From 8fb445f46c5869bbb86e812f8e14667fdf6eb703 Mon Sep 17 00:00:00 2001 From: Panos Vagenas <35837085+vagenas@users.noreply.github.com> Date: Mon, 4 Nov 2024 14:02:28 +0100 Subject: [PATCH] chore: make tests lighter (#228) Signed-off-by: Panos Vagenas <35837085+vagenas@users.noreply.github.com> --- .github/workflows/checks.yml | 2 +- docs/examples/batch_convert.py | 3 +- .../docling_v1/redp5110.doctags.txt | 1883 ------------ .../data/groundtruth/docling_v1/redp5110.json | 1 - tests/data/groundtruth/docling_v1/redp5110.md | 2732 ----------------- .../docling_v1/redp5110.pages.json | 1 - .../docling_v1/redp5110_sampled.doctags.txt | 299 ++ .../docling_v1/redp5110_sampled.json | 1 + .../docling_v1/redp5110_sampled.md | 421 +++ .../docling_v1/redp5110_sampled.pages.json | 1 + .../docling_v1/redp5695.doctags.txt | 460 --- .../data/groundtruth/docling_v1/redp5695.json | 1 - tests/data/groundtruth/docling_v1/redp5695.md | 726 ----- .../docling_v1/redp5695.pages.json | 1 - .../docling_v2/redp5110.doctags.txt | 1883 ------------ .../data/groundtruth/docling_v2/redp5110.json | 1 - tests/data/groundtruth/docling_v2/redp5110.md | 2615 ---------------- .../docling_v2/redp5110.pages.json | 1 - .../docling_v2/redp5110_sampled.doctags.txt | 299 ++ .../docling_v2/redp5110_sampled.json | 1 + .../docling_v2/redp5110_sampled.md | 395 +++ .../docling_v2/redp5110_sampled.pages.json | 1 + .../docling_v2/redp5695.doctags.txt | 460 --- .../data/groundtruth/docling_v2/redp5695.json | 1 - tests/data/groundtruth/docling_v2/redp5695.md | 666 ---- .../docling_v2/redp5695.pages.json | 1 - tests/data/redp5110.pdf | Bin 3391005 -> 0 bytes tests/data/redp5110_sampled.pdf | Bin 0 -> 1277938 bytes tests/data/redp5695.pdf | Bin 2532038 -> 0 bytes tests/test_backend_docling_parse.py | 2 +- tests/test_backend_docling_parse_v2.py | 2 +- tests/test_backend_pdfium.py | 2 +- 32 files changed, 1423 insertions(+), 11439 deletions(-) delete mode 100644 tests/data/groundtruth/docling_v1/redp5110.doctags.txt delete mode 100644 tests/data/groundtruth/docling_v1/redp5110.json delete mode 100644 tests/data/groundtruth/docling_v1/redp5110.md delete mode 100644 tests/data/groundtruth/docling_v1/redp5110.pages.json create mode 100644 tests/data/groundtruth/docling_v1/redp5110_sampled.doctags.txt create mode 100644 tests/data/groundtruth/docling_v1/redp5110_sampled.json create mode 100644 tests/data/groundtruth/docling_v1/redp5110_sampled.md create mode 100644 tests/data/groundtruth/docling_v1/redp5110_sampled.pages.json delete mode 100644 tests/data/groundtruth/docling_v1/redp5695.doctags.txt delete mode 100644 tests/data/groundtruth/docling_v1/redp5695.json delete mode 100644 tests/data/groundtruth/docling_v1/redp5695.md delete mode 100644 tests/data/groundtruth/docling_v1/redp5695.pages.json delete mode 100644 tests/data/groundtruth/docling_v2/redp5110.doctags.txt delete mode 100644 tests/data/groundtruth/docling_v2/redp5110.json delete mode 100644 tests/data/groundtruth/docling_v2/redp5110.md delete mode 100644 tests/data/groundtruth/docling_v2/redp5110.pages.json create mode 100644 tests/data/groundtruth/docling_v2/redp5110_sampled.doctags.txt create mode 100644 tests/data/groundtruth/docling_v2/redp5110_sampled.json create mode 100644 tests/data/groundtruth/docling_v2/redp5110_sampled.md create mode 100644 tests/data/groundtruth/docling_v2/redp5110_sampled.pages.json delete mode 100644 tests/data/groundtruth/docling_v2/redp5695.doctags.txt delete mode 100644 tests/data/groundtruth/docling_v2/redp5695.json delete mode 100644 tests/data/groundtruth/docling_v2/redp5695.md delete mode 100644 tests/data/groundtruth/docling_v2/redp5695.pages.json delete mode 100644 tests/data/redp5110.pdf create mode 100644 tests/data/redp5110_sampled.pdf delete mode 100644 tests/data/redp5695.pdf diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 05f23fa0..14a59f6d 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -28,7 +28,7 @@ jobs: run: | for file in docs/examples/*.py; do # Skip batch_convert.py - if [[ "$(basename "$file")" == "batch_convert.py" ]]; then + if [[ "$(basename "$file")" =~ ^(batch_convert|minimal|export_multimodal|custom_convert|develop_picture_enrichment).py ]]; then echo "Skipping $file" continue fi diff --git a/docs/examples/batch_convert.py b/docs/examples/batch_convert.py index 2c61336c..f6ad92bd 100644 --- a/docs/examples/batch_convert.py +++ b/docs/examples/batch_convert.py @@ -106,8 +106,7 @@ def main(): Path("./tests/data/2206.01062.pdf"), Path("./tests/data/2203.01017v2.pdf"), Path("./tests/data/2305.03393v1.pdf"), - Path("./tests/data/redp5110.pdf"), - Path("./tests/data/redp5695.pdf"), + Path("./tests/data/redp5110_sampled.pdf"), ] # buf = BytesIO(Path("./test/data/2206.01062.pdf").open("rb").read()) diff --git a/tests/data/groundtruth/docling_v1/redp5110.doctags.txt b/tests/data/groundtruth/docling_v1/redp5110.doctags.txt deleted file mode 100644 index fe072e47..00000000 --- a/tests/data/groundtruth/docling_v1/redp5110.doctags.txt +++ /dev/null @@ -1,1883 +0,0 @@ - -Front cover -
- -
-Row and Column Access Control Support in IBM DB2 for i -Implement roles and separation of duties -Leverage row permissions on the database -Protect columns by defining column masks -Jim Bainbridge Hernando Bedoya Rob Bestgen Mike Cain Dan Cruikshank Jim Denton Doug Mack Tom McKinley Kent Milligan -Redpaper -
- -
-International Technical Support Organization -Row and Column Access Control Support in IBM DB2 for i -November 2014 -Note: Before using this information and the product it supports, read the information in "Notices" on page vii. -First Edition (November 2014) -This edition applies to Version 7, Release 2 of IBM i (product number 5770-SS1). -Note to U.S. Government Users Restricted Rights -- Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. -Contents - - -Notices. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii -Trademarks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii -DB2 for i Center of Excellence. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix -Preface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi -Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi -Now you can become a published author, too!. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii -Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xiii -Stay connected to IBM Redbooks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv -Chapter 1. Securing and protecting IBM DB2 data . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 -1.1 Security fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 -1.2 Current state of IBM i security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2 -1.3 DB2 for i security controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 -1.3.1 Existing row and column control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4 -1.3.2 New controls: Row and Column Access Control. . . . . . . . . . . . . . . . . . . . . . . . . . .5 -Chapter 2. Roles and separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7 -2.1 Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8 -2.1.1 DDM and DRDA application server access: QIBM_DB_DDMDRDA . . . . . . . . . . .8 -2.1.2 Toolbox application server access: QIBM_DB_ZDA. . . . . . . . . . . . . . . . . . . . . . . .8 -2.1.3 Database Administrator function: QIBM_DB_SQLADM . . . . . . . . . . . . . . . . . . . . .9 -2.1.4 Database Information function: QIBM_DB_SYSMON. . . . . . . . . . . . . . . . . . . . . . 9 -2.1.5 Security Administrator function: QIBM_DB_SECADM . . . . . . . . . . . . . . . . . . . . . .9 -2.1.6 Change Function Usage CL command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10 -2.1.7 Verifying function usage IDs for RCAC with the FUNCTION_USAGE view . . . . .10 -2.2 Separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 -Chapter 3. Row and Column Access Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13 -3.1 Explanation of RCAC and the concept of access control . . . . . . . . . . . . . . . . . . . . . . .14 -3.1.1 Row permission and column mask definitions. . . . . . . . . . . . . . . . . . . . . . . . . . . 14 -3.1.2 Enabling and activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16 -3.2 Special registers and built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18 -3.2.1 Special registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18 -3.2.2 Built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .19 -3.3 VERIFY_GROUP_FOR_USER function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20 -3.4 Establishing and controlling accessibility by using the RCAC rule text . . . . . . . . . . . . .21 -. . . . . . . . . . . . . . . . . . . . . . . . 22 -3.5 SELECT, INSERT, and UPDATE behavior with RCAC -3.6.1 Assigning the QIBM_DB_SECADM function ID to the consultants. . . . . . . . . . . .23 -3.6.2 Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .23 -3.6.3 Demonstrating data access without RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24 -3.6.4 Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25 -3.6.5 Defining and creating column masks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 -3.6.6 Activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28 -3.6.7 Demonstrating data access with RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29 -3.6.8 Demonstrating data access with a view and RCAC . . . . . . . . . . . . . . . . . . . . . . .32 -
- - -Chapter 4. Implementing Row and Column Access Control: Banking example . . . . .37 -4.1 Business requirements for the RCAC banking scenario . . . . . . . . . . . . . . . . . . . . . . . .38 -4.2 Description of the users roles and responsibilities. . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 -4.3 Implementation of RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .42 -4.3.1 Reviewing the tables that are used in this example. . . . . . . . . . . . . . . . . . . . . . . 42 -4.3.2 Assigning function ID QIBM_DB_SECADM to the Database Engineers group. . 47 -4.3.3 Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .50 -4.3.4 Creating the CUSTOMER_LOGIN_ID global variable. . . . . . . . . . . . . . . . . . . . . 52 -4.3.5 Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .54 -4.3.6 Defining and creating column masks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 -4.3.7 Restricting the inserting and updating of masked data . . . . . . . . . . . . . . . . . . . . .60 -4.3.9 Reviewing row permissions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .64 -4.3.10 Demonstrating data access with RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .66 -4.3.11 Query implementation with RCAC activated . . . . . . . . . . . . . . . . . . . . . . . . . . . .75 -Chapter 5. RCAC and non-SQL interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .79 -Unsupported interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 -5.3 Accidental updates with masked values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .81 -5.4 System CL commands considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .82 -5.4.1 Create Duplicate Object (CRTDUPOBJ) command . . . . . . . . . . . . . . . . . . . . . . .82 -82 -5.4.2 Copy File (CPYF) command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4.3 Copy Library (CPYLIB) command. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .100 -83 -Chapter 6. Additional considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . 89 90 -6.2 RCAC effects on data movement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6.2 RCAC effects on data movement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . -6.2.1 Effects when RCAC is defined on the source table6.2.1 Effects when RCAC is defined on the source table -88 -6.2.3 Effects when RCAC is defined on both source and target tables . . . . . . . . . . . . . 6.3 RCAC effects on joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .91 -6.3.1 Inner joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 926.3.1 Inner joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 -6.3.2 Outer joins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 946.3.2 Outer joins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 -6.3.3 Exception joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .96 -6.4 Monitoring, analyzing, and debugging with RCAC97 -. . . . . . . . . . . . . . . . . . . . . . . . . . . .Query monitoring and analysis tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 -6.4.2 Index advisor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .99 -6.4.3 Metadata using catalogs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6.4.3 Metadata using catalogs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . -6.5 Views, materialized query tables, and query rewrite with RCAC . . . . . . . . . . . . . . . .102 -6.5.2 Materialized query tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .103 -105 -6.5.3 Query rewrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . RCAC effects on performance and scalability. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6.5.3 Query rewrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . RCAC effects on performance and scalability. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . -6.6105 -107 -6.7 Exclusive lock to implement RCAC (availability issues) . . . . . . . . . . . . . . . . . . . . . . . 6.8 Avoiding propagation of masked data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .108 -108 -109 -109 -113 -111 -Chapter 7. Row and Column Access Control management . . . . . . . . . . . . . . . . . . . .Chapter 7. Row and Column Access Control management . . . . . . . . . . . . . . . . . . . . -
- - -7.1 Managing row permissions and column masks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .114 -7.1.1 Source management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .114 -7.1.2 Modifying definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .114 -7.1.3 Turning on and off . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .114 -7.1.4 Regenerating. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 -7.2 Managing tables with row permissions and column masks. . . . . . . . . . . . . . . . . . . . .115 -7.2.1 Save and restore. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .115 -7.2.2 Table migration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .116 -7.3 Monitoring and auditing function usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .117 -Chapter 8. Designing and planning for success. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 -8.1 Implementing RCAC with good design and proper planning. . . . . . . . . . . . . . . . . . . 120 -8.2 DB2 for i Center of Excellence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .120 -Appendix A. Database definitions for the RCAC banking example. . . . . . . . . . . . . . 121 -Related publications. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 -Other publications. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 -Online resources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 -Help from IBM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 -
-Notices -This information was developed for products and services offered in the U.S.A. -IBM may not offer the products, services, or features discussed in this document in other countries. Consult your local IBM representative for information on the products and services currently available in your area. Any reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, program, or service may be used. Any functionally equivalent product, program, or service that does not infringe any IBM intellectual property right may be used instead. However, it is the user's responsibility to evaluate and verify the operation of any non-IBM product, program, or service. -IBM may have patents or pending patent applications covering subject matter described in this document. The furnishing of this document does not grant you any license to these patents. You can send license inquiries, in writing, to: -IBM Director of Licensing, IBM Corporation, North Castle Drive, Armonk, NY 10504-1785 U.S.A. -The following paragraph does not apply to the United Kingdom or any other country where such provisions are inconsistent with local law: INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states do not allow disclaimer of express or implied warranties in certain transactions, therefore, this statement may not apply to you. -This information could include technical inaccuracies or typographical errors. Changes are periodically made to the information herein; these changes will be incorporated in new editions of the publication. IBM may make improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time without notice. -Any references in this information to non-IBM websites are provided for convenience only and do not in any manner serve as an endorsement of those websites. The materials at those websites are not part of the materials for this IBM product and use of those websites is at your own risk. -IBM may use or distribute any of the information you supply in any way it believes appropriate without incurring any obligation to you. -Any performance data contained herein was determined in a controlled environment. Therefore, the results obtained in other operating environments may vary significantly. Some measurements may have been made on development-level systems and there is no guarantee that these measurements will be the same on generally available systems. Furthermore, some measurements may have been estimated through extrapolation. Actual results may vary. Users of this document should verify the applicable data for their specific environment. -Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly available sources. IBM has not tested those products and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products. -This information contains examples of data and reports used in daily business operations. To illustrate them as completely as possible, the examples include the names of individuals, companies, brands, and products. All of these names are fictitious and any similarity to the names and addresses used by an actual business enterprise is entirely coincidental. -COPYRIGHT LICENSE: -This information contains sample application programs in source language, which illustrate programming techniques on various operating platforms. You may copy, modify, and distribute these sample programs in any form without payment to IBM, for the purposes of developing, using, marketing or distributing application programs conforming to the application programming interface for the operating platform for which the sample programs are written. These examples have not been thoroughly tested under all conditions. IBM, therefore, cannot guarantee or imply reliability, serviceability, or function of these programs. -Trademarks -IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines Corporation in the United States, other countries, or both. These and other IBM trademarked terms are marked on their first occurrence in this information with the appropriate symbol (fi or ™), indicating US registered or common law trademarks owned by IBM at the time this information was published. Such trademarks may also be registered or common law trademarks in other countries. A current list of IBM trademarks is available on the Web at http://www.ibm.com/legal/copytrade.shtml -The following terms are trademarks of the International Business Machines Corporation in the United States, other countries, or both: -AS/400fi -DB2fi -DRDAfi -IBMfi -Power Systems™ -Redbooksfi -Redpaper™ -Redbooks (log o) fi System -ifi -The following terms are trademarks of other companies: -Windows, and the Windows logo are trademarks of Microsoft Corporation in the United States, other countries, or both. -Other company, product, or service names may be trademarks or service marks of others. -
- -
-DB2 for i Center of Excellence -Solution Brief IBM Systems Lab Services and Training -
- -
-Highlights -- GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH -- GLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH -- GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH -- GLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH -
- -
-Power Services -DB2 for i Center of Excellence -Expert help to achieve your business requirements -We build confident, satisfied clients -No one else has the vast consulting experiences, skills sharing and renown service offerings to do what we can do for you. -Because no one else is IBM. -With combined experiences and direct access to development groups, we're the experts in IBM DB2® for i. The DB2 for i Center of Excellence (CoE) can help you achieve-perhaps reexamine and exceed-your business requirements and gain more confidence and satisfaction in IBM product data management products and solutions. -Who we are, some of what we do -Global CoE engagements cover topics including: -- r Database performance and scalability -- r Advanced SQL knowledge and skills transfer -- r Business intelligence and analytics -- r DB2 Web Query -- r Query/400 modernization for better reporting and analysis capabilities -- r Database modernization and re-engineering -- r Data-centric architecture and design -- r Extremely large database and overcoming limits to growth -- r ISV education and enablement -What you can expect -Depending on the engagement, our team of consultants offer: -- r Briefings, consulting and guidance on demand -- r Illumination of the DB2 for i capabilities and leadership to exploit them -- r Analysis and remediation of performance and scalability issues caused by inefficient database design and implementation -- r Configuration of systems, operating system and products to fully leverage database capabilities -Key client benefits -T Gain greater database and application performance within your current environment. Achieve greater productivity in the development and maintenance of database and applications using modern techniques. Architect and design data structures to accommodate and benefit from business analytics (BA) tools and processes. -For more information -Pricing depends on the scope of work. Learn more about the DB2 for i Center of Excellence and other related products and services. Contact stgls@us.ibm.com or visit: -ibm.com GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH -
- -
-© Copyright IBM Corporation 2013 -IBM Corporation Route 100 Somers, NY 10589 -Produced in the United States of America March 2013 -IBM, the IBM logo, ibm.com, DB2 and Power Systems are trademarks of International Business Machines Corp., registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the web at "Copyright and trademark information" at www.ibm.com/legal/ copytrade.shtml . -This document is current as of the initial date of publication and may be changed by IBM at any time. -Not all offerings are available in every country in which IBM operates. -
- -
-Please Recycle -QLS12392-USEN-00 -Preface -This IBMfi Redpaper™ publication provides information about the IBM i 7.2 feature of IBM DB2fi for i Row and Column Access Control (RCAC). It offers a broad description of the function and advantages of controlling access to data in a comprehensive and transparent way. This publication helps you understand the capabilities of RCAC and provides examples of defining, creating, and implementing the row permissions and column masks in a relational database environment. -This paper is intended for database engineers, data-centric application developers, and security officers who want to design and implement RCAC as a part of their data control and governance policy. A solid background in IBM i object level security, DB2 for i relational database concepts, and SQL is assumed. -This paper was produced by the IBM DB2 for i Center of Excellence team in partnership with the International Technical Support Organization (ITSO), Rochester, Minnesota US. -
- -
-
- -
-Jim Bainbridge is a senior DB2 consultant on the DB2 for i Center of Excellence team in the IBM Lab Services and Training organization. His primary role is training and implementation services for IBM DB2 Web Query for i and business analytics. Jim began his career with IBM 30 years ago in the IBM Rochester Development Lab, where he developed cooperative processing products that paired IBM PCs with IBM S/36 and AS/.400 systems. In the years since, Jim has held numerous technical roles, including independent software vendors technical support on a broad range of IBM technologies and products, and supporting customers in the IBM Executive Briefing Center and IBM Project Office. -Hernando Bedoya is a Senior IT Specialist at STG Lab Services and Training in Rochester, Minnesota. He writes extensively and teaches IBM classes worldwide in all areas of DB2 for i. Before joining STG Lab Services, he worked in the ITSO for nine years writing multiple IBM Redbooksfi publications. He also worked for IBM Colombia as an IBM AS/400fi IT Specialist doing presales support for the Andean countries. He has 28 years of experience in the computing field and has taught database classes in Colombian universities. He holds a Master's degree in Computer Science from EAFIT, Colombia. His areas of expertise are database technology, performance, and data warehousing. Hernando can be contacted at hbedoya@us.ibm.com . -Authors -
- -
-
- -
-
- -
-
- -
-
- -
-Rob Bestgen is a member of the DB2 for i Center of Excellence team helping customers use the capabilities of DB2 for i. In addition, Rob is the chief architect of the DB2 SQL Query Engine (SQE) for DB2 for i and is the product development manager for DB2 Web Query for i. -Mike Cain is a Senior Technical Staff Member within the IBM Systems and Technology Group. He is also the founder and team leader of the DB2 for i Center of Excellence in Rochester, Minnesota US. Before his current position, he worked as an IBM AS/400 Systems Engineer and technical consultant. Before joining IBM in 1988, Mike worked as a System/38 programmer and data processing manager for a property and casualty insurance company. Mike has 26 years of experience with IBM, engaging clients and Business Partners around the world. In addition to assisting clients, he uses his knowledge and experience to influence the IBM solution, development, and support processes. -Dan Cruikshank has been an IT Professional since 1972. He has consulted on a number of different project areas since joining IBM Rochester in 1988. Since 1993, Dan was focused primarily on resolving IBM System ifi application and database performance issues at several IBM customer accounts. Since 1998, Dan has been one of the primary instructors for the Database Optimization Workshop. Most recently, Dan is a member of the DB2 for i Center of Excellence team with IBM Rochester Lab Services. -Jim Denton is a senior consultant at the IBM DB2 for i Center of Excellence, where his responsibilities include both teaching courses and hands on consulting. Jim specializes in SQL performance, data-centric programming, and database modernization. Jim started his IBM career in 1981 as an S/38 operating system programmer. Before joining the consulting team, his key assignments included 10 years as a systems performance specialist, five years as the lead "JDE on i" analyst, three years as a consultant at the IBM Benchmark and Briefing Center in Montpellier France, and a total of 11 years as an operating system developer, including five years designing and implementing enhancements to DB2 for i. -Doug Mack is a DB2 for i and Business Intelligence Consultant in the IBM Power Systems™ Lab Services organization. Doug's 30+ year career with IBM spans many roles, including product development, technical sales support, Business Intelligence Sales Specialist, and DB2 for i Product Marketing Manager. Doug is a featured speaker at User Group conferences and meetings, IBM Technical Conferences, and Executive Briefings. -
- -
-
- -
-Tom McKinley is an IBM Lab Services Consultant working on DB2 for IBM i in Rochester MN. His main focus is complex query performance that is associated with Business Intelligence running on Very Large Databases. He worked as a developer or performance analyst in the DB area from 1986 until 2006. Some of his major pieces of work include the Symmetric Multiple processing capabilities of DB2 for IBM i and Large Object Data types. In addition, he was on the original team that designed and built the SQL Query Engine. Before his database work, he worked on Licensed Internal Code for System 34 and System 36. -Kent Milligan is a senior DB2 consultant on the DB2 for i Center of Excellence team within the IBM Lab Services and Training organization. His primary responsibility is helping software developers use the latest DB2 technologies and port applications from other databases to DB2 for i. After graduating from the University of Iowa, Kent spent the first eight years of his IBM career as a member of the DB2 development team in Rochester. -Thanks to the following people for their contributions to this project: -Debra Landon -International Technical Support Organization, Rochester Center -Craig Aldrich, Mark Anderson, Theresa Euler, Scott Forstie, Chad Olstad IBM Rochester Development -Now you can become a published author, too! -Here's an opportunity to spotlight your skills, grow your career, and become a published author-all at the same time! Join an ITSO residency project and help write a book in your area of expertise, while honing your experience using leading-edge technologies. Your efforts will help to increase product acceptance and customer satisfaction, as you expand your network of technical contacts and relationships. Residencies run from two to six weeks in length, and you can participate either in person or as a remote resident working from your home base. -Find out more about the residency program, browse the residency index, and apply online at: -ibm.com /redbooks/residencies.html -Comments welcome -Your comments are important to us! -We want our papers to be as helpful as possible. Send us your comments about this paper or other IBM Redbooks publications in one of the following ways: -- GLYPH Use the online Contact us review Redbooks form found at: -ibm.com /redbooks -- GLYPH Send your comments in an email to: -redbooks@us.ibm.com -- GLYPH Mail your comments to: -IBM Corporation, International Technical Support Organization Dept. HYTD Mail Station P099 2455 South Road Poughkeepsie, NY 12601-5400 -Stay connected to IBM Redbooks -- GLYPH Find us on Facebook: -http://www.facebook.com/IBMRedbooks -- GLYPH Follow us on Twitter: -http://twitter.com/ibmredbooks -- GLYPH Look for us on LinkedIn: -http://www.linkedin.com/groups?home=&gid=2130806 -- GLYPH Explore new Redbooks publications, residencies, and workshops with the IBM Redbooks weekly newsletter: -https://www.redbooks.ibm.com/Redbooks.nsf/subscribe?OpenForm -- GLYPH Stay current on recent Redbooks publications with RSS Feeds: -http://www.redbooks.ibm.com/rss.html -
- -
-Chapter 1. -1 -Securing and protecting IBM DB2 data -Recent news headlines are filled with reports of data breaches and cyber-attacks impacting global businesses of all sizes. The Identity Theft Resource Center$^{1}$ reports that almost 5000 data breaches have occurred since 2005, exposing over 600 million records of data. The financial cost of these data breaches is skyrocketing. Studies from the Ponemon Institute$^{2}$ revealed that the average cost of a data breach increased in 2013 by 15% globally and resulted in a brand equity loss of $9.4 million per attack. The average cost that is incurred for each lost record containing sensitive information increased more than 9% to $145 per record. -Businesses must make a serious effort to secure their data and recognize that securing information assets is a cost of doing business. In many parts of the world and in many industries, securing the data is required by law and subject to audits. Data security is no longer an option; it is a requirement. -This chapter describes how you can secure and protect data in DB2 for i. The following topics are covered in this chapter: -- GLYPH Security fundamentals -- GLYPH Current state of IBM i security -- GLYPH DB2 for i security controls -1.1 Security fundamentals -Before reviewing database security techniques, there are two fundamental steps in securing information assets that must be described: -- GLYPH First, and most important, is the definition of a company's security policy . Without a security policy, there is no definition of what are acceptable practices for using, accessing, and storing information by who, what, when, where, and how. A security policy should minimally address three things: confidentiality, integrity, and availability. -- The monitoring and assessment of adherence to the security policy determines whether your security strategy is working. Often, IBM security consultants are asked to perform security assessments for companies without regard to the security policy. Although these assessments can be useful for observing how the system is defined and how data is being accessed, they cannot determine the level of security without a security policy. Without a security policy, it really is not an assessment as much as it is a baseline for monitoring the changes in the security settings that are captured. -A security policy is what defines whether the system and its settings are secure (or not). -- GLYPH The second fundamental in securing data assets is the use of resource security . If implemented properly, resource security prevents data breaches from both internal and external intrusions. Resource security controls are closely tied to the part of the security policy that defines who should have access to what information resources. A hacker might be good enough to get through your company firewalls and sift his way through to your system, but if they do not have explicit access to your database, the hacker cannot compromise your information assets. -With your eyes now open to the importance of securing information assets, the rest of this chapter reviews the methods that are available for securing database resources on IBM i. -1.2 Current state of IBM i security -Because of the inherently secure nature of IBM i, many clients rely on the default system settings to protect their business data that is stored in DB2 for i. In most cases, this means no data protection because the default setting for the Create default public authority (QCRTAUT) system value is *CHANGE. -Even more disturbing is that many IBM i clients remain in this state, despite the news headlines and the significant costs that are involved with databases being compromised. This default security configuration makes it quite challenging to implement basic security policies. A tighter implementation is required if you really want to protect one of your company's most valuable assets, which is the data. -Traditionally, IBM i applications have employed menu-based security to counteract this default configuration that gives all users access to the data. The theory is that data is protected by the menu options controlling what database operations that the user can perform. This approach is ineffective, even if the user profile is restricted from running interactive commands. The reason is that in today's connected world there are a multitude of interfaces into the system, from web browsers to PC clients, that bypass application menus. If there are no object-level controls, users of these newer interfaces have an open door to your data. -Some clients using this default configuration have toughened their database security with exit-point solutions from third-party vendors. IBM i exit points allow a user-written program to be called every time that a particular interface (for example, FTP) is used or an event occurs (for example, a profile is created). Security tools that are based on these exit points increase the level of security on a system by locking down interfaces that are not under the control of menu-based or application authority. In addition, exit-point solutions allow clients to implement more granular security controls, such as allowing users access only to the database during certain hours of the day. -Although exit-point solutions can provide great benefits, they are not an alternative to object-level control of your databases. Exit-point solutions help secure interfaces, but they do not completely protect the data that is stored in your DB2 objects. Exit points do not exist for every data access interface on the system. Therefore, if an application starts using an unprotected interface, the only thing protecting your data is object-level access control. When your security implementation totally relies on exit points, then it is also important to track any new data interfaces that appear as IBM delivers new releases and products to ensure that your exit-point solution provides coverage for those new interfaces. -An exit-point solution is a good option for databases with security holes that are caused by a reliance on the default security setup or menu-based control. However, your security work should not stop there. Instead, you must continue to work on a complete database security solution by controlling data access at the object level. -1.3 DB2 for i security controls -As described in 1.2, "Current state of IBM i security" on page 2, object-level controls on your DB2 objects are a critical success factor in securing your business data. Although database object-level security is a strong security feature, some clients have found that object-level security does not have the granularity that is required to adhere to regulatory or compliance policies. A user that is granted object-level access to a DB2 table has the authority to view all of the rows and values in that table. -As shown in Figure 1-1, it is an all-or-nothing access to the rows of a table. -Figure 1-1 All-or-nothing access to the rows of a table -
- -Figure 1-1 All-or-nothing access to the rows of a table -
-Many businesses are trying to limit data access to a need-to-know basis. This security goal means that users should be given access only to the minimum set of data that is required to perform their job. Often, users with object-level access are given access to row and column values that are beyond what their business task requires because that object-level security provides an all-or-nothing solution. For example, object-level controls allow a manager to access data about all employees. Most security policies limit a manager to accessing data only for the employees that they manage. -1.3.1 Existing row and column control -Some IBM i clients have tried augmenting the all-or-nothing object-level security with SQL views (or logical files) and application logic, as shown in Figure 1-2. However, application-based logic is easy to bypass with all of the different data access interfaces that are provided by the IBM i operating system, such as Open Database Connectivity (ODBC) and System i Navigator. -Using SQL views to limit access to a subset of the data in a table also has its own set of challenges. First, there is the complexity of managing all of the SQL view objects that are used for securing data access. Second, scaling a view-based security solution can be difficult as the amount of data grows and the number of users increases. -Even if you are willing to live with these performance and management issues, a user with *ALLOBJ access still can directly access all of the data in the underlying DB2 table and easily bypass the security controls that are built into an SQL view. -Figure 1-2 Existing row and column controls -
- -Figure 1-2 Existing row and column controls -
-1.3.2 New controls: Row and Column Access Control -Based on the challenges that are associated with the existing technology available for controlling row and column access at a more granular level, IBM delivered new security support in the IBM i 7.2 release; this support is known as Row and Column Access Control (RCAC). -The new DB2 RCAC support provides a method for controlling data access across all interfaces and all types of users with a data-centric solution. Moving security processing to the database layer makes it easier to build controls that meet your compliance policies. The RCAC support provides an additional layer of security that complements object-level authorizations to limit data access to a need-to-know basis. Therefore, it is critical that you first have a sound object-level security implementation in place. -
- -
-Chapter 2. -2 -Roles and separation of duties -One of the primary objectives of row and column access control (RCAC) is to create data security policies that control and govern user access to data and limit the data access of DB2 designers and administrators to only the minimum that is required to do their jobs. -To accomplish these tasks, RCAC engineers devised a set of functional roles that, as a group, implement effectively data access requirements and also limit the span of control of each role so that each role is given only the authorities that are needed to perform its specific set of tasks. -This chapter describes the concepts of roles and separation of duties on DB2 for i and covers the following topics: -- GLYPH Roles -- GLYPH Separation of duties -2.1 Roles -Traditionally, data access roles are defined in a binary way, where access to the data is either not permitted or access to the data is permitted. A full access capability can also be instantiated by the *ALLOBJ special authority, either explicitly or implicitly, for the security officer. If you hold the role of security officer, or have all *ALLOBJ special authority, you have access to all the data, with no exceptions. Unfortunately, this might not meet the organization's requirements for limiting access to data or separation of duties. -To assist with defining roles and the separation of duties with appropriate authority, IBM i provides function usage IDs . A function usage ID implements granular security controls rather than granting users powerful special authorities, such as all object, job control, or service. -Roles are divided among the following DB2 functions and their corresponding function usage IDs: -- GLYPH DDM and IBM DRDAfi application server access: QIBM_DB_DDMDRDA -- GLYPH Toolbox application server access: QIBM_DB_ZDA -- GLYPH Database Administrator function: QIBM_DB_SQLADM -- GLYPH Database Information function: QIBM_DB_SYSMON -- GLYPH Security Administrator function: QIBM_DB_SECADM -2.1.1 DDM and DRDA application server access: QIBM_DB_DDMDRDA -The QIBM_DB_DDMDRDA function usage ID restricts access to the DDM and DRDA application server (QRWTSRVR). This function usage ID provides an easy alternative (rather than writing an exit program) to control access to DDM and DRDA from the server side. The function usage IDs ship with the default authority of *ALLOWED. The security officer can easily deny access to specific users or groups. -This is an alternative to a User Exit Program approach. No coding is required, it is easy to change, and it is auditable. -2.1.2 Toolbox application server access: QIBM_DB_ZDA -The QIBM_DB_ZDA function usage ID restricts access to the optimized server that handles DB2 requests from clients (QZDASOINIT and QZDASSINIT). Server access is used by the ODBC, OLE DB, and .NET providers that ship with IBM i Access for Windows and JDBC Toolbox, Run SQL scripts, and other parts of System i Navigator and Navigator for i Web console. -This function usage ID provides an easy alternative (rather than writing an exit program) to control access to these functions from the server side. The function usage IDs ship with the default authority of *ALLOWED. The security officer can easily deny access to specific users or groups. -This is an alternative to a User Exit Program approach. No coding is required, it is easy to change, and it is auditable. -2.1.3 Database Administrator function: QIBM_DB_SQLADM -The Database Administrator function (QIBM_DB_SQLADM) is needed whenever a user is analyzing and viewing SQL performance data. Some of the more common database administrator functions include displaying statements from the SQL Plan Cache, analyzing SQL Performance Monitors and SQL Plan Cache Snapshots, and displaying the SQL details of a job other than your own. -The Database Administrator function provides an alternative to granting *JOBCTL, but simply having the Database Administrator authorization does not carry with it all the needed object authorities for every administration task. The default behavior is to deny authorization. -To perform database administrator tasks that are not related to performance analysis, you must refer to the details of the task to determine its specific authorization requirements. For example, to allow a database administrator to reorganize a table, the DBA must have additional object authorities to the table that are not covered by QIBM_DB_SQLADM. -Granting QIBM_DB_SQLADM function usage -Only the security administrator (*SECADM) is allowed to change the list of users that can perform Database Administration functions. -2.1.4 Database Information function: QIBM_DB_SYSMON -The Database Information function (QIBM_DB_SYSMON) provides much less authority than Database Administrator function. Its primary use allows a user to examine high-level database properties. -For example, a user that does not have *JOBCTL or QIBM_DB_SQLADM can still view the SQL Plan Cache properties if granted authority to QIBM_DB_SYSMON. Without granting this authority, the default behavior is to deny authorization. -Granting QIBM_DB_SYSMON function usage -Only the security administrator (*SECADM) is allowed to change the list of users that can perform Database Information functions. -2.1.5 Security Administrator function: QIBM_DB_SECADM -The Security Administrator function (QIBM_DB_SECADM) grants authorities, revokes authorities, changes ownership, or changes the primary group without giving access to the object or, in the case of a database table, to the data that is in the table or allowing other operations on the table. -Only those users with the QIBM_DB_SECADM function can administer and manage RCAC rules. RCAC can be used to prevent even users with *ALLOBJ authority from freely accessing all the data in a protected database. These users are excluded from data access unless they are specifically authorized by RCAC. Without granting this authority, the default behavior is to deny authorization. -Granting QIBM_DB_SECADM function usage -Only QSECOFR or a user with *SECADM special authority can grant the QIBM_DB_SECADM function usage to a user or group. -2.1.6 Change Function Usage CL command -The following CL commands can be used to work with, display, or change function usage IDs: -- GLYPH Work Function Usage ( WRKFCNUSG ) -- GLYPH Change Function Usage ( CHGFCNUSG ) -- GLYPH Display Function Usage ( DSPFCNUSG ) -For example, the following CHGFCNUSG command shows granting authorization to user HBEDOYA to administer and manage RCAC rules: -CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED) -2.1.7 Verifying function usage IDs for RCAC with the FUNCTION_USAGE view -The FUNCTION_USAGE view contains function usage configuration details. Table 2-1 describes the columns in the FUNCTION_USAGE view. -Table 2-1 FUNCTION_USAGE view - - - -Column nameData typeDescription -FUNCTION_IDVARCHAR(30)ID of the function. -USER_NAMEVARCHAR(10)Name of the user profile that has a usage setting for this function. -USAGEVARCHAR(7)Usage setting: GLYPH ALLOWED: The user profile is allowed to use the function. GLYPH DENIED: The user profile is not allowed to use the function. -USER_TYPEVARCHAR(5)Type of user profile: GLYPH USER: The user profile is a user. GLYPH GROUP: The user profile is a group. -
Table 2-1 FUNCTION_USAGE view
-To discover who has authorization to define and manage RCAC, you can use the query that is shown in Example 2-1. -Example 2-1 Query to determine who has authority to define and manage RCAC -SELECT function_id, user_name, usage, user_type FROM function_usage WHERE function_id='QIBM_DB_SECADM' ORDER BY user_name; -2.2 Separation of duties -Separation of duties helps businesses comply with industry regulations or organizational requirements and simplifies the management of authorities. Separation of duties is commonly used to prevent fraudulent activities or errors by a single person. It provides the ability for administrative functions to be divided across individuals without overlapping responsibilities, so that one user does not possess unlimited authority, such as with the *ALLOBJ authority. -For example, assume that a business has assigned the duty to manage security on IBM i to Theresa. Before release IBM i 7.2, to grant privileges, Theresa had to have the same privileges Theresa was granting to others. Therefore, to grant *USE privileges to the PAYROLL table, Theresa had to have *OBJMGT and *USE authority (or a higher level of authority, such as *ALLOBJ). This requirement allowed Theresa to access the data in the PAYROLL table even though Theresa's job description was only to manage its security. -In IBM i 7.2, the QIBM_DB_SECADM function usage grants authorities, revokes authorities, changes ownership, or changes the primary group without giving access to the object or, in the case of a database table, to the data that is in the table or allowing other operations on the table. -QIBM_DB_SECADM function usage can be granted only by a user with *SECADM special authority and can be given to a user or a group. -QIBM_DB_SECADM also is responsible for administering RCAC, which restricts which rows a user is allowed to access in a table and whether a user is allowed to see information in certain columns of a table. -A preferred practice is that the RCAC administrator has the QIBM_DB_SECADM function usage ID, but absolutely no other data privileges. The result is that the RCAC administrator can deploy and maintain the RCAC constructs, but cannot grant themselves unauthorized access to data itself. -Table 2-2 shows a comparison of the different function usage IDs and *JOBCTL authority to the different CL commands and DB2 for i tools. -Table 2-2 Comparison of the different function usage IDs and *JOBCTL authority - - - -User action*JOBCTLQIBM_DB_SECADMQIBM_DB_SQLADMQIBM_DB_SYSMONNo Authority -SET CURRENT DEGREE (SQL statement)XX -CHGQRYA command targeting a different user's jobXX -STRDBMON or ENDDBMON commands targeting a different user's jobXX -STRDBMON or ENDDBMON commands targeting a job that matches the current userXXXX -QUSRJOBI() API format 900 or System i Navigator's SQL Details for JobXXX -Visual Explain within Run SQL scriptsXXXX -Visual Explain outside of Run SQL scriptsXX -ANALYZE PLAN CACHE procedureXX -DUMP PLAN CACHE procedureXX -MODIFY PLAN CACHE procedureXX -MODIFY PLAN CACHE PROPERTIES procedure (currently does not check authority)XX -CHANGE PLAN CACHE SIZE procedure (currently does not check authority)XX -
Table 2-2 Comparison of the different function usage IDs and *JOBCTL authority
- - -User action*JOBCTLQIBM_DB_SECADMQIBM_DB_SQLADMQIBM_DB_SYSMONNo Authority -START PLAN CACHE EVENT MONITOR procedureXX -END PLAN CACHE EVENT MONITOR procedureXX -END ALL PLAN CACHE EVENT MONITORS procedureXX -Work with RCAC row permissions (Create, modify, or delete)X -Work with RCAC column masks (Create, modify, or delete)X -Change Object Owner ( CHGOBJOWN ) CL commandX -Change Object Primary Group ( CHGOBJPGP ) CL commandX -Grant Object Authority ( GRTOBJAUT ) CL commandX -Revoke Object Authority ( RVKOBJAUT ) CL commandX -Edit Object Authority ( EDTOBJAUT ) CL commandX -Display Object Authority ( DSPOBJAUT ) CL commandX -Work with Objects ( WRKOBJ ) CL commandX -Work with Libraries ( WRKLIB ) CL commandX -Add Authorization List Entry ( ADDAUTLE ) CL commandX -Change Authorization List Entry ( CHGAUTLE ) CL commandX -Remove Authorization List Entry ( RMVAUTLE ) CL commandX -Retrieve Authorization List Entry ( RTVAUTLE ) CL commandX -Display Authorization List ( DSPAUTL ) CL commandX -Display Authorization List Objects ( DSPAUTLOBJ ) CL commandX -Edit Authorization List ( EDTAUTL ) CL commandX -Work with Authorization Lists ( WRKAUTL ) CL commandX -
-
- -
-Chapter 3. -3 -Row and Column Access Control -This chapter describes what Row and Column Access Control (RCAC) is, its components, and then illustrates RCAC with a simple example. -The following topics are covered in this chapter: -- GLYPH Explanation of RCAC and the concept of access control -- GLYPH Special registers and built-in global variables -- GLYPH VERIFY_GROUP_FOR_USER function -- GLYPH Establishing and controlling accessibility by using the RCAC rule text -- GLYPH SELECT, INSERT, and UPDATE behavior with RCAC -- GLYPH Human resources example -3.1 Explanation of RCAC and the concept of access control -RCAC limits data access to those users who have a business "need to know". RCAC makes it easy to set up a rich and robust security policy that is based on roles and responsibilities. RCAC functionality is made available through the optional, no charge feature called "IBM Advanced Data Security for i", also known as option 47 of IBM i 7.2. -In DB2 for i, RCAC is implemented using two different approaches that address the shortcomings of traditional control methods and mechanisms: -- GLYPH Row permissions -- GLYPH Column masks -Another benefit of RCAC is that no database user is automatically exempt from the control. Users with *ALLOBJ authority can no longer freely access all of the data in the database unless they have the appropriate permission to do so. The ability to manage row permissions and column masks rests with the database security administrator. The RCAC definitions, enablement, and activation are controlled by SQL statements. -Row permissions and column masks require virtually no application changes. RCAC is based on specific rules that are transparent to existing applications and SQL interfaces. Enforcement of your security policy does not depend on how applications or tools access the data. -RCAC also facilitates multi-tenancy, which means that several independent customers or business units can share a single database table without being aware of one another. The RCAC row permission ensures each user sees only the rows they are entitled to view because the enforcement is handled by DB2 and not the application logic. -Label-based access control (LBAC): RCAC and LBAC are not the same thing. LBAC is a security model that is primarily intended for government applications. LBAC requires that data and users be classified with a fixed set of rules that are implemented. RCAC is a general-purpose security model that is primarily intended for commercial customers. You can use RCAC to create your own security rules, which in turn allows for more flexibility. -3.1.1 Row permission and column mask definitions -The following sections define row permission and column masks. -Row permission -A row permission is a database object that manifests a row access control rule for a specific table. It is essentially a search condition that describes which rows you can access. For example, a manager can see only the rows that represent his or her employees. -The SQL CREATE PERMISSION statement that is shown in Figure 3-1 is used to define and initially enable or disable the row access rules. -Figure 3-1 CREATE PERMISSION SQL statement -
- -The SQL CREATE PERMISSION statement that is shown in Figure 3-1 is used to define and initially enable or disable the row access rules.Figure 3-1 CREATE PERMISSION SQL statement -
-Column mask -A column mask is a database object that manifests a column value access control rule for a specific column in a specific table. It uses a CASE expression that describes what you see when you access the column. For example, a teller can see only the last four digits of a tax identification number. -Column masks replace the need to create and use views to implement access control. The SQL CREATE MASK statement that is shown in Figure 3-2 is used to define and initially enable or disable the column value access rules. -Figure 3-2 CREATE MASK SQL statement -
- -Figure 3-2 CREATE MASK SQL statement -
-3.1.2 Enabling and activating RCAC -You can enable, disable, or regenerate row permissions and column masks by using the SQL ALTER PERMISSION statement and the SQL ALTER MASK statement, as shown in Figure 3-3 on page 17. -Enabling and disabling effectively turns on or off the logic that is contained in the row permission or column mask. Regenerating causes the row permission or column mask to be regenerated. The row permission definition in the catalog is used and existing dependencies and authorizations, if any, are retained. The row permission definition is reevaluated as though the row permission were being created. Any user-defined functions (UDFs) that are referenced in the row permission must be resolved to the same secure UDFs as were resolved during the original row permission or column mask creation. The regenerate option can be used to ensure that the RCAC logic is intact and still valid before any user attempts to access the table. -Note: An exclusive lock is required on the table object to perform the alter operation. All open cursors must be closed. -Figure 3-3 ALTER PERMISSION and ALTER MASK SQL statements -
- -Figure 3-3 ALTER PERMISSION and ALTER MASK SQL statements -
-You can activate and deactivate RCAC for new or existing tables by using the SQL ALTER TABLE statement (Figure 3-4). The ACTIVATE or DEACTIVATE clause must be the option that is specified in the statement. No other alterations are permitted at the same time. The activating and deactivating effectively turns on or off all RCAC processing for the table. Only enabled row permissions and column masks take effect when activating RCAC. -Note: An exclusive lock is required on the table object to perform the alter operation. All open cursors must be closed. -Figure 3-4 ALTER TABLE SQL statement -
- -Figure 3-4 ALTER TABLE SQL statement -
-When row access control is activated on a table, a default permission is established for that table. The name of this permission is QIBM_DEFAULT_ _. This default permission contains a simple piece of logic (0=1) which is never true. The default permission effectively denies access to every user unless there is a permission defined that allows access explicitly. If row access control is activated on a table, and there is no permission that is defined, no one has permission to any rows. All queries against the table produce an empty set. -It is possible to define, create, and enable multiple permissions on a table. Logically, all of the permissions are ORed together to form a comprehensive test of the user's ability to access the data. A column can have only one mask that is defined over it. From an implementation standpoint, it does not matter if you create the column masks first or the row permissions first. -Note: If a user does not have permission to access the row, the column mask logic is not invoked. -3.2 Special registers and built-in global variables -This section describes how you can use special registers and built-in global variables to implement RCAC. -3.2.1 Special registers -A special register is a storage area that is defined for an application process by DB2 and is used to store information that can be referenced in SQL statements. A reference to a special register is a reference to a value that is provided by the current server. -IBM DB2 for i supports four different special registers that can be used to identify what user profiles are relevant to determining object authorities in the current connection to the server. SQL uses the term runtime authorization ID , which corresponds to a user profile on DB2 for i. Here are the four special registers: -- GLYPH USER is the runtime user profile that determines the object authorities for the current connection to the server. It has a data type of VARCHAR(18). This value can be changed by the SQL statement SET SESSION AUTHORIZATION . -- GLYPH SESSION_USER is the same as the USER register, except that it has a data type of VARCHAR(128). -- GLYPH CURRENT USER was added in IBM i 7.2 and is similar to the USER register, but it has one important difference in that it also reports adopted authority. High-level language programs and SQL routines such as functions, procedures, and triggers can optionally be created to run using either the caller's or the owner's user profile to determine data authorities. For example, an SQL procedure can be created to run under the owner's authority by specifying SET OPTION USRPRF=*OWNER . This special register can also be referenced as CURRENT_USER. It has a data type of VARCHAR(128). -- GLYPH SYSTEM_USER is the user profile that initiates the connection to the server. It is not used by RCAC, but is included here for completeness. Many jobs, including the QZDASOINIT prestarted jobs, initially connect to the server with a default user profile and then change to use some other user profile. SYSTEM_USER reports this value, typically QUSER for a QZDASOINIT job. It has a data type of VARCHAR(128). -In addition to these four special registers, any of the DB2 special registers can be referenced as part of the rule text. -Table 3-1 summarizes these special registers and their values. -Table 3-1 Special registers and their corresponding values - - - -Special registerCorresponding value -USER or SESSION_USERThe effective user of the thread excluding adopted authority. -CURRENT_USERThe effective user of the thread including adopted authority. When no adopted authority is present, this has the same value as USER. -SYSTEM_USERThe authorization ID that initiated the connection. -
Table 3-1 Special registers and their corresponding values
-Figure 3-5 shows the difference in the special register values when an adopted authority is used: -- GLYPH A user connects to the server using the user profile ALICE. -- GLYPH USER and CURRENT USER initially have the same value of ALICE. -- GLYPH ALICE calls an SQL procedure that is named proc1, which is owned by user profile JOE and was created to adopt JOE's authority when it is called. -- GLYPH While the procedure is running, the special register USER still contains the value of ALICE because it excludes any adopted authority. The special register CURRENT USER contains the value of JOE because it includes any adopted authority. -- GLYPH When proc1 ends, the session reverts to its original state with both USER and CURRENT USER having the value of ALICE. -Figure 3-5 Special registers and adopted authority -
- -Figure 3-5 Special registers and adopted authority -
-3.2.2 Built-in global variables -Built-in global variables are provided with the database manager and are used in SQL statements to retrieve scalar values that are associated with the variables. -IBM DB2 for i supports nine different built-in global variables that are read only and maintained by the system. These global variables can be used to identify attributes of the database connection and used as part of the RCAC logic. -Table 3-2 lists the nine built-in global variables. -Table 3-2 Built-in global variables - - - -Global variableTypeDescription -CLIENT_HOSTVARCHAR(255)Host name of the current client as returned by the system -CLIENT_IPADDRVARCHAR(128)IP address of the current client as returned by the system -CLIENT_PORTINTEGERPort used by the current client to communicate with the server -PACKAGE_NAMEVARCHAR(128)Name of the currently running package -PACKAGE_SCHEMAVARCHAR(128)Schema name of the currently running package -PACKAGE_VERSIONVARCHAR(64)Version identifier of the currently running package -ROUTINE_SCHEMAVARCHAR(128)Schema name of the currently running routine -ROUTINE_SPECIFIC_NAMEVARCHAR(128)Name of the currently running routine -ROUTINE_TYPECHAR(1)Type of the currently running routine -
Table 3-2 Built-in global variables
-3.3 VERIFY_GROUP_FOR_USER function -The VERIFY_GROUP_FOR_USER function was added in IBM i 7.2. Although it is primarily intended for use with RCAC permissions and masks, it can be used in other SQL statements. The first parameter must be one of these three special registers: SESSION_USER, USER, or CURRENT_USER. The second and subsequent parameters are a list of user or group profiles. Each of these values must be 1 - 10 characters in length. These values are not validated for their existence, which means that you can specify the names of user profiles that do not exist without receiving any kind of error. -If a special register value is in the list of user profiles or it is a member of a group profile included in the list, the function returns a long integer value of 1. Otherwise, it returns a value of 0. It never returns the null value. -Here is an example of using the VERIFY_GROUP_FOR_USER function: -- 1. There are user profiles for MGR, JANE, JUDY, and TONY. -- 2. The user profile JANE specifies a group profile of MGR. -- 3. If a user is connected to the server using user profile JANE, all of the following function invocations return a value of 1: -VERIFY_GROUP_FOR_USER (CURRENT_USER, 'MGR') VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR') VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR', 'STEVE') The following function invocation returns a value of 0: VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JUDY', 'TONY') -3.4 Establishing and controlling accessibility by using the RCAC rule text -When defining a row permission or column mask, the "magic" of establishing and controlling accessibility comes from the rule text . The rule text represents the search criteria and logic that is implemented by the database engine. -In the case of a row permission, the rule text is the "test" of whether the user can access the row. If the test result is true, the row can be accessed. If the test result is false, the row essentially does not exist for the user. From a set-at-a-time perspective, the permission defines which rows can be part of the query result set, and which rows cannot. -In the case of a column mask, the rule text is both the test of whether the user can see the actual column value, and it is the masking logic if the user cannot have access to actual column value. -For a simple example of implementing row permissions and column masks, see 3.6, "Human resources example" on page 22. -In general, almost any set-based, relational logic is valid. For the row permission, the search condition follows the same rules that are used by the search condition in a WHERE clause. -For the column mask, the logic follows the same rules as the CASE expression. The result data type, length, null attribute, and CCSID of the CASE expression must be compatible with the data type of the column. If the column does not allow the null value, the result of the CASE expression cannot be the NULL value. The application or interface making the data access request is expecting that all of the column attributes and values are consistent with the original definition, regardless of any masking. -For more information about what is permitted, see the "Database programming" topic of the IBM i 7.2 Knowledge Center, found at: -http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgdbp.htm?lang =en -One of the first tasks in either the row permission or the column mask logic is to determine who the user is, and whether they have access to the data. Elegant methods to establish the identity and attributes of the user can be employed by using the special registers, global variables, and the VERIFY function. After the user's identity is established, it is a simple matter of allowing or disallowing access by using true or false testing. The examples that are included in this paper demonstrate some of the more common and obvious techniques. -More sophisticated methods can employ existential, day of year / time of day, and relational comparisons with set operations. For example, you can use a date master or date dimension table to determine whether the current date is a normal business day. If the current date is a valid business day, then access is allowed. If the current date is not a business day (for example a weekend day or holiday), access is denied. This test can be accomplished by performing a lookup using a subquery, such as the one that is shown in Example 3-1. -Example 3-1 Subquery that is used as part of the rule -DATE_MASTER D -D.BUSINESS_DAY = 'Y') -CURRENT_DATE IN (SELECT D.DATE_KEY FROM WHERE -Given that joins and subqueries can be used to perform set-based operations against existing data that is housed in other objects, almost any relational test can be constructed. If the data in the objects is manipulated over time, the RCAC test logic (and user query results) can be changed without modifying the actual row permission or column mask. This includes moving a user from one group to another or changing a column value that is used to allow or disallow access. For example, if Saturday is now a valid business day, only the BUSINESS_DAY value in the DATE_MASTER must be updated, not the permission logic. This technique can potentially avoid downtime because of the exclusive lock that is needed on the table when adding or changing RCAC definitions. -3.5 SELECT, INSERT, and UPDATE behavior with RCAC -RCAC provides a database-centric approach to determining which rows can be accessed and what column values can be seen by a specific user. Given that the control is handled by DB2 internally, every data manipulation statement is under the influence of RCAC, with no exceptions. When accessing the table, the SELECT statements, searched UPDATE statements, and searched DELETE statements implicitly and transparently contain the row permission and the column mask rule text. This means that the data set can be logically restricted and reduced on a user by user basis. -Furthermore, DB2 prevents an INSERT statement from inserting a row or an UPDATE statement from modifying a row such that the current user cannot be permitted to access it. You cannot create a situation in which the data you inserted or changed is no longer accessible to you. -For more information and considerations about data movement in an RCAC environment, see Chapter 6, "Additional considerations" on page 85. -Note: DB2 does not provide any indication back to the user that the data set requested was restricted or reduced by RCAC. This is by design, as it helps minimize any changes to the applications accessing the data. -3.6 Human resources example -This section illustrates with a simple example the usage of RCAC on a typical Human Resources application (schema). In this sample Human Resources schema, there is an important table that is called EMPLOYEES that contains all the information that is related to the employees of the company. Among the information that normally is stored in the EMPLOYEES table, there is some sensitive information that must be hidden from certain users: -- GLYPH Tax_Id information -- GLYPH YEAR of the birth date of the employee (hiding the age of the employee) -In this example, there are four different types of users: -- GLYPH Employees -- GLYPH Managers -- GLYPH Human Resources Manager -- GLYPH Consultant/IT Database Engineer (In this example, this person is an external consultant that is not an employee of the company.) -The following sections describe step-by-step what is needed to be done to implement RCAC in this environment. -3.6.1 Assigning the QIBM_DB_SECADM function ID to the consultants -The consultant must have authority to implement RCAC, so you must use one of the function IDs that are provided in DB2 for i (see 2.1.5, "Security Administrator function: QIBM_DB_SECADM" on page 9). Complete the following steps: -- 1. Run the Change Functional Usage ( CHGFCNUSG ) CL commands that are shown in Example 3-2. These commands must be run by someone that has the *SECOFR authority. -Example 3-2 Function ID required to implement RCAC -CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED) CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(MCAIN) USAGE(*ALLOWED) -- 2. There is a way to discover which user profiles have authorization to implement RCAC. This can be done by running the SQL statement that is shown in Example 3-3. -Example 3-3 Verifying what user profiles have authorization to implement RCAC -SELECT function_id, user_name, usage, user_type FROM qsys2.function_usage WHERE function_id ='QIBM_DB_SECADM' ORDER BY user_name; -- 3. The result of the SQL statement is shown in Figure 3-6. In this example, either MCAIN or HBEDOYA can implement RCAC in the Human Resources database. -Figure 3-6 Result of the function ID query -3.6.2 Creating group profiles for the users and their roles -Assuming that all the employees have a valid user profile, the next step is to create group profiles to group the employees. Complete the following steps: -- 1. In this example, there are three group profiles: -- -HR (Human Resource personnel) -- -MGR (Managers) -- -EMP (Employees) -These are created by creating user profiles with no password. Example 3-4 shows the Create User Profile ( CRTUSRPRF ) CL commands that you use to create these group profiles. -Example 3-4 Creating group profiles -CRTUSRPRF USRPRF(EMP) PASSWORD() TEXT('Employees Group') CRTUSRPRF USRPRF(MGR) PASSWORD() TEXT('Managers Group') CRTUSRPRF USRPRF(HR) PASSWORD() TEXT('Human Resources Group') -- 2. You now must assign users to a group profile. Employees go in to the EMP group profile, Managers go into the MGR group profile, and Human Resource employees go into the HR group profile. For simplicity, this example selects one employee (DSSMITH), one manager (TQSPENSER), and one HR analyst (VGLUCCHESS). -Note: Neither of the consultants (MCAIN and HBEDOYA) belong to any group profile. -3.6.3 Demonstrating data access without RCAC -Before implementing RCAC, run some simple SQL statements to demonstrate data access without RCAC. Complete the following steps: -- 1. The first SQL statement, which is shown in Example 3-5, basically counts the total number of rows in the EMPLOYEES table. -Example 3-5 Counting the number of employees -SELECT COUNT(*) as ROW_COUNT FROM HR_SCHEMA.EMPLOYEES; -The result of this query is shown in Figure 3-7, which is the total number of employees of the company. -Figure 3-7 Number of employees -
- -Figure 3-7 Number of employees -
-- 2. Run a second SQL statement (shown in Example 3-6) that lists the employees. If you have read access to the table, you see all the rows no matter who you are. -Example 3-6 Displaying the information of the Employees -SELECT EMPLOYEE_ID, LAST_NAME, JOB_DESCRIPTION, DATE_OF_BIRTH, TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE FROM HR_SCHEMA.EMPLOYEES -The result of this query is shown in Figure 3-8. -Figure 3-8 List of employees without RCAC enabled -3.6.4 Defining and creating row permissions -Implement RCAC on the EMPLOYEES table by completing the following steps: -- 1. Start by defining a row permission. In this example, the rules to enforce include the following ones: -- -Human Resources employees can see all the rows. -- -Managers can see only information for the employees that they manage. -- -Employees can see only their own information. -- -Consultants are not allowed to see any rows in the table. -To implement this row permission, run the SQL statement that is shown in Example 3-7. -Example 3-7 Creating a permission for the EMPLOYEE table -CREATE PERMISSION HR_SCHEMA.PERMISSION1_ON_EMPLOYEES ON HR_SCHEMA.EMPLOYEES AS EMPLOYEES FOR ROWS WHERE ( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1 ) OR ( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND ( EMPLOYEES . MANAGER_OF_EMPLOYEE = SESSION_USER OR EMPLOYEES . USER_ID = SESSION_USER ) ) OR ( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1 AND EMPLOYEES . USER_ID = SESSION_USER ) ENFORCED FOR ALL ACCESS ENABLE ; -- 2. Look at the definition of the table and see the permissions, as shown in Figure 3-9. QIBM_DEFAULT_EMPLOYEE_HR_SCHEMA is the default permission, as described in 3.1.2, "Enabling and activating RCAC" on page 16. -Figure 3-9 Row permissions that are shown in System i Navigator -
- -Figure 3-9 Row permissions that are shown in System i Navigator -
-3.6.5 Defining and creating column masks -Define the different masks for the columns that are sensitive by completing the following steps: -- 1. Start with the DAY_OF_BIRTH column. In this example, the rules to enforce include the following ones: -- -Human Resources can see the entire date of birth of the employees. -- -Employees can see only their own date of birth. -- -Managers can see the date of birth of their employees masked with YEAR being 9999. -To implement this column mask, run the SQL statement that is shown in Example 3-8. -Example 3-8 Creation of a mask on the DATE_OF_BIRTH column -CREATE MASK HR_SCHEMA.MASK_DATE_OF_BIRTH_ON_EMPLOYEES ON HR_SCHEMA.EMPLOYEES AS EMPLOYEES FOR COLUMN DATE_OF_BIRTH -RETURN CASE -WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR', 'EMP' ) = 1 THEN EMPLOYEES . DATE_OF_BIRTH WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER = EMPLOYEES . USER_ID THEN EMPLOYEES . DATE_OF_BIRTH WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER <> EMPLOYEES . USER_ID THEN ( 9999 || '-' || MONTH ( EMPLOYEES . DATE_OF_BIRTH ) || '-' || DAY (EMPLOYEES.DATE_OF_BIRTH )) ELSE NULL END ENABLE ; -- 2. The other column to mask in this example is the TAX_ID information. In this example, the rules to enforce include the following ones: -- -Human Resources can see the unmasked TAX_ID of the employees. -- -Employees can see only their own unmasked TAX_ID. -- -Managers see a masked version of TAX_ID with the first five characters replaced with the X character (for example, XXX-XX-1234). -- -Any other person sees the entire TAX_ID as masked, for example, XXX-XX-XXXX. -- To implement this column mask, run the SQL statement that is shown in Example 3-9. -Example 3-9 Creating a mask on the TAX_ID column -CREATE MASK HR_SCHEMA.MASK_TAX_ID_ON_EMPLOYEES ON HR_SCHEMA.EMPLOYEES AS EMPLOYEES FOR COLUMN TAX_ID RETURN CASE WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1 THEN EMPLOYEES . TAX_ID WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER = EMPLOYEES . USER_ID THEN EMPLOYEES . TAX_ID WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER <> EMPLOYEES . USER_ID THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( EMPLOYEES . TAX_ID , 8 , 4 ) ) WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1 THEN EMPLOYEES . TAX_ID ELSE 'XXX-XX-XXXX' END ENABLE ; -- 3. Figure 3-10 shows the masks that are created in the HR_SCHEMA. -Figure 3-10 Column masks shown in System i Navigator -
- -Figure 3-10 Column masks shown in System i Navigator -
-3.6.6 Activating RCAC -Now that you have created the row permission and the two column masks, RCAC must be activated. The row permission and the two column masks are enabled (last clause in the scripts), but now you must activate RCAC on the table. To do so, complete the following steps: -- 1. Run the SQL statements that are shown in Example 3-10. -Example 3-10 Activating RCAC on the EMPLOYEES table -- /* Active Row Access Control (permissions) */ -/* Active Column Access Control (masks) ALTER TABLE HR_SCHEMA.EMPLOYEES ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL; -*/ -- 2. Look at the definition of the EMPLOYEE table, as shown in Figure 3-11. To do this, from the main navigation pane of System i Navigator, click Schemas  HR_SCHEMA  Tables , right-click the EMPLOYEES table, and click Definition . -Figure 3-11 Selecting the EMPLOYEES table from System i Navigator -
- -Figure 3-11 Selecting the EMPLOYEES table from System i Navigator -
-- 3. The EMPLOYEES table definition is displayed, as shown in Figure 3-12. Note that the Row access control and Column access control options are checked. -Figure 3-12 RCAC enabled on the EMPLOYEES table -
- -Figure 3-12 RCAC enabled on the EMPLOYEES table -
-3.6.7 Demonstrating data access with RCAC -You are now ready to start testing RCAC with the four different users. Complete the following steps: -- 1. The first SQL statement that is shown in Example 3-11 illustrates the EMPLOYEE count. You know that there are 42 rows from the query that was run before RCAC was put in place (see 3.6.3, "Demonstrating data access without RCAC" on page 24). -Example 3-11 EMPLOYEES count -SELECT COUNT(*) as ROW_COUNT FROM HR_SCHEMA.EMPLOYEES; -- 2. The result of the query for a user that belongs to the HR group profile is shown in Figure 3-13. This user can see all the 42 rows (employees). -Figure 3-13 Count of EMPLOYEES by HR -
- -Figure 3-13 Count of EMPLOYEES by HR -
-- 3. The result of the same query for a user who is logged on as TQSPENSER (Manager) is shown in Figure 3-14. TQSPENSER has five employees in his department and he can also see his own row, which is why the count is 6. -Figure 3-14 Count of EMPLOYEES by a manager -
- -Figure 3-14 Count of EMPLOYEES by a manager -
-- 4. The result of the same query that is run by an employee (DSSMITH) gives the result that is shown in Figure 3-15. Each employee can see only his or her own data (row). -Figure 3-15 Count of EMPLOYEES by an employee -
- -Figure 3-15 Count of EMPLOYEES by an employee -
-- 5. The result of the same query that is run by the Consultant/DBE gives the result that is shown in Figure 3-16. The consultants/DBE can manage and implement RCAC, but they do not see any rows at all. -Figure 3-16 Count of EMPLOYEES by a consultant -
- -Figure 3-16 Count of EMPLOYEES by a consultant -
-Does the result make sense? Yes, it does because RCAC is enabled. -- 6. Run queries against the EMPLOYEES table. The query that is used in this example runs and tests with the four different user profiles and is the same query that was run in 3.6.3, "Demonstrating data access without RCAC" on page 24. It is shown in Example 3-12. -Example 3-12 SELECT statement to test with the different users -SELECT EMPLOYEE_ID, LAST_NAME, JOB_DESCRIPTION, DATE_OF_BIRTH, TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE FROM HR_SCHEMA.EMPLOYEES -- 7. Figure 3-17 shows the results of the query for a Human Resources (VGLUCCHESS) user profile. The user can see all the rows and all the columns. -Figure 3-17 SQL statement result by Human Resources user profile -- 8. Figure 3-18 shows the results of the same query for the Manager (TQSPENSER). Notice the masking of the DATE_OF_BIRTH and TAX_ID columns. -Figure 3-18 SQL statement result by Manager profile -- 9. Figure 3-19 shows the results of the same query for an employee (DSSMITH). The employee can only see only his own data with no masking at all. -Figure 3-19 SQL statement result by an employee profile -- 10.Figure 3-20 shows the results of the same query for the Consultant/DBE, who is not one of the company's employees. -Figure 3-20 SQL statement result by Consultant/DBE profile -3.6.8 Demonstrating data access with a view and RCAC -This section covers data access with a view and RCAC. Complete the following steps: -- 1. The EMPLOYEES table has a column that is called On_Leave_Flag (Figure 3-21 on page 33) indicating that the employee is on Leave of Absence. For this purpose, a view is created that lists only the employees that are on leave. -Figure 3-21 Employees on leave -- 2. Example 3-13 shows the definition of the view. -Example 3-13 VIew of employees on leave -CREATE VIEW HR_SCHEMA.EMPLOYEES_ON_LEAVE (EMPLOYEE_ID, FIRST_NAME, MIDDLE_INITIAL, LAST_NAME, WORK_DEPARTMENT, PHONE_EXTENSION, JOB_DESCRIPTION, DATE_OF_BIRTH, -TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE, ON_LEAVE_FLAG ) -AS -SELECT EMPLOYEE_ID, FIRST_NAME , MIDDLE_INITIAL, LAST_NAME , WORK_DEPARTMENT, PHONE_EXTENSION, JOB_DESCRIPTION, DATE_OF_BIRTH, TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE, -ON_LEAVE_FLAG -FROM -HR_SCHEMA.EMPLOYEES -WHERE -ON_LEAVE_FLAG = 'Y'; -- 3. Use the view to query the data and see who is on leave. The SQL statement that is used is shown in Example 3-14: -Example 3-14 SQL statement for employees on leave -SELECT EMPLOYEE_ID, LAST_NAME, JOB_DESCRIPTION, DATE_OF_BIRTH, TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE FROM -HR_SCHEMA.EMPLOYEES_ON_LEAVE; -- 4. Start with the Human Resources person (VGLUCCHESS) and see what is the result of the previous query. He sees the two employees that are on leave and no masking is done over the DATE_OF_BIRTH and TAX_ID columns. The results of the query are shown in Figure 3-22. -Figure 3-22 Employees on leave - Human Resources user -- 5. Figure 3-23 shows what the Manager (TQSPENSER) gets when he runs the same query over the view. He sees only the employees that are on leave that are managed by him. In this example, it is one employee. The columns are masked, which confirms that RCAC is applied to the view as well. -Figure 3-23 Employee on leave - Manager of Field Reps user -- 6. Figure 3-24 shows what the employee (DSSMITH) gets when he runs the same query over the view. The employee gets an empty set or he gets only himself if he is on leave. -. -Figure 3-24 Employees on leave - employee user -
- -
-Chapter 4. -4 -Implementing Row and Column Access Control: Banking example -This chapter illustrates the Row and Column Access Control (RCAC) concepts using a banking example. Appendix A, "Database definitions for the RCAC banking example" on page 121 provides a script that you can use to create all the database definitions or DDLs to re-create this RCAC example. -The following topics are covered in this chapter: -- GLYPH Business requirements for the RCAC banking scenario -- GLYPH Description of the users roles and responsibilities -- GLYPH Implementation of RCAC -4.1 Business requirements for the RCAC banking scenario -As part of a new internet banking project, the Bank decides to raise the level of data access control on the following three tables that are involved in the new customer-facing application: -- GLYPH CUSTOMERS -- GLYPH ACCOUNTS -- GLYPH TRANSACTIONS -RCAC will be used to restrict access to the rows in these three tables by using permissions, and to restrict column values by using masks. The default position is that no user can access the rows in the tables. From there, specific bank employees are allowed access only to the rows for their job responsibilities. In addition, columns containing personal or sensitive data are masked appropriately. Bank customers are allowed access to only their rows and column values. -In this example, it is assumed that the Bank employees have access to the tables when working on the premises only. Employee access to data is provided by programs and tools using standard DB2 interfaces, such as embedded SQL, ODBC, JDBC, and CLI. The database connection authentication for these interfaces uses the employee's personal and unique IBM i user profile. Operating in their professional role, employees do not have access to bank data through the Internet. -Bank customers have access to their accounts and transactions by using a new web application. Each customer has unique credentials for logging in to the application. The authentication of the customer is handled by the web server. After the customer is authenticated, the web server establishes a connection to DB2 for data access. This connection uses a common IBM i user profile that is known as WEBUSER. This user profile is secured and is used only by the web application. No Bank employee has access to the WEBUSER profile, and no customer has an IBM i user profile. -The customer's identity is passed to DB2 by using a global variable. The global variable is secured and can be accessed only by the WEBUSER. The web application sets the CUSTOMER_LOGIN_ID variable to the customer's login value. This value is compared to the customer's login value that is found in the CUSTOMER_LOGIN_ID column of the CUSTOMERS table. -Applications that do not use the web interface do not have to be changed because the global variable is NULL by default. -A diagram of the internet banking architecture is shown in Figure 4-1: -- GLYPH The row permission and column masks for the CUSTOMERS table are based on the group of which the user profile is part. If the user is a customer, their specific login ID also is tested. -- GLYPH The row permission and column mask for the ACCOUNTS table are based on the CUSTOMERS table permission rules. A subquery is used to connect the accounts (child) with the customer (parent). -- GLYPH The row permission for the TRANSACTIONS table is based on the ACCOUNTS table permission rules and the CUSTOMERS table permission rules. A subquery is used to connect the transactions (child) with the account (parent) and the account (child) with the customer (parent). -Figure 4-1 Internet banking example -
- -Figure 4-1 Internet banking example -
-4.2 Description of the users roles and responsibilities -During the requirements gathering phase, the following groups of users are identified and codified: -- GLYPH SECURITY: Security officer and security administrators -- GLYPH DBE: Database engineers -- GLYPH ADMIN: Bank business administrators -- GLYPH TELLER: Bank tellers -- GLYPH CUSTOMER: Bank customers using the internet -- GLYPH PUBLIC: Anyone not already in a group -Based on their respective roles and responsibilities, the users (that is, a group) are controlled by row permissions and column masks. The chart that is shown in Figure 4-2 shows the rules for row and column access in this example. -Figure 4-2 Rules for row and column access -
- -Figure 4-2 Rules for row and column access -
-The chart that is shown in Figure 4-3 shows the column access that is allowed by group and lists the column masks by table. -Figure 4-3 Column masks - - - -CUSTOMERSACCOUNTS -SECURITYNo RowsCUSTOMER_DRIVERS_LICENSE_NUMBER CUSTOMER_EMAIL CUSTOMER_LOGIN_ID CUSTOMER_SECURITY_QUESTION CUSTOMER_SECURITY_QUESTION_ANSWER CUSTOMER_TAX_IDACCOUNT_NUMBER -DBEAll RowsCUSTOMER_DRIVERS_LICENSE_NUMBER CUSTOMER_EMAIL CUSTOMER_LOGIN_ID CUSTOMER_SECURITY_QUESTION CUSTOMER_SECURITY_QUESTION_ANSWER CUSTOMER_TAX_IDACCOUNT NUMBER ACCOUNT_NUMBER -ADMINAll RowsNoneNone -TELLERAll RowsCUSTOMER_EMAIL CUSTOMER_LOGIN_ID CUSTOMER_SECURITY_QUESTION CUSTOMER_SECURITY_QUESTION_ANSWER CUSTOMER TAX ID _ _None -CUSTOMEROwn RowsNoneNone -PUBLICNo RowsCUSTOMER_DRIVERS_LICENSE_NUMBER CUSTOMER_EMAIL CUSTOMER LOGIN ID CUSTOMER_LOGIN_ID CUSTOMER_SECURITY_QUESTION CUSTOMER_SECURITY_QUESTION_ANSWER CUSTOMER_TAX_IDACCOUNT_NUMBER -
Figure 4-3 Column masks
-For the demonstration and testing of RCAC in this example, the following users interact with the database. Furthermore, the column masking rules are developed independently of the row permissions. If a person does not have permission to access the row, the column mask processing does not occur. -- GLYPH Hernando Bedoya is a DB2 for i database engineer with the user profile of HBEDOYA. He is part of the DBE group. -- GLYPH Mike Cain is a DB2 for i database engineer with the user profile of MCAIN. He is part of the DBE group. -- GLYPH Veronica G. Lucchess is a bank account administrator with the user profile of VGLUCCHESS. She is part of the ADMIN group. -- GLYPH Tom Q. Spenser is a bank teller with the user profile of TQSPENSER. He is part of the TELLER group. -- GLYPH The IT security officer has the user profile of SECURITY. She is not part of any group. -- GLYPH The online banking web application uses the user profile WEBUSER. This profile is part of the CUSTOMER group. Any future customer-facing applications can also use this group if needed. -- GLYPH Adam O. Olsen is a bank customer with a web application login ID of KLD72CQR8JG. -4.3 Implementation of RCAC -Figure 4-4 shows the data model of the banking scenario that is used in this example. -Figure 4-4 Data model of the banking scenario -
- -Figure 4-4 Data model of the banking scenario -
-This section covers the following steps: -- GLYPH Reviewing the tables that are used in this example -- GLYPH Assigning function ID QIBM_DB_SECADM to the Database Engineers group -- GLYPH Creating group profiles for the users and their roles -- GLYPH Creating the CUSTOMER_LOGIN_ID global variable -- GLYPH Defining and creating row permissions -- GLYPH Defining and creating column masks -- GLYPH Restricting the inserting and updating of masked data -- GLYPH Activating row and column access control -- GLYPH Reviewing row permissions -- GLYPH Demonstrating data access with RCAC -- GLYPH Query implementation with RCAC activated -4.3.1 Reviewing the tables that are used in this example -This section reviews the tables that are used in this example. As shown in Figure 4-5, there are three main tables that are involved in the data model: CUSTOMERS, ACCOUNTS, and TRANSACTIONS. There are 90 customers. -Figure 4-5 Tables that are used in the banking example -
- -Figure 4-5 Tables that are used in the banking example -
-Note: Appendix A, "Database definitions for the RCAC banking example" on page 121 provides a script that you can use to create all the database definitions or DDLs to re-create this RCAC example. -To review the attributes of each table that is used in this banking example, complete the following steps: -- 1. Review the columns of each the tables through System i Navigator. Expand Database  named Database  Schemas  BANK_SCHEMA  Tables . -- 2. Right-click the CUSTOMERS table and select Definition . Figure 4-6 shows the attributes for the CUSTOMERS table. The Row access control and Column access control options are not selected, which indicates that the table does not have RCAC implemented. -Figure 4-6 CUSTOMERS table attributes -
- -Figure 4-6 CUSTOMERS table attributes -
-- 3. Click the Columns tab to see the columns of the CUSTOMERS table, as shown in Figure 4-7. -Figure 4-7 Column definitions of the CUSTOMERS table -- 4. Click the Key Constraints , Foreign Key Constraints , and Check Constraints tabs to review the key, foreign, and check constraints on the CUSTOMERS table, as shown in Figure 4-8. There are no Foreign Key Constraints or Check Constraints on the CUSTOMERS table. -Figure 4-8 Reviewing the constraints on the CUSTOMERS table -
- -Figure 4-8 Reviewing the constraints on the CUSTOMERS table -
-- 5. Review the definition of the ACCOUNTS table. The definition of the ACCOUNTS table is shown in Figure 4-9. RCAC has not been defined for this table yet. -Figure 4-9 ACCOUNTS table attributes -
- -Figure 4-9 ACCOUNTS table attributes -
-- 6. Click the Columns tab to see the columns of the ACCOUNTS table, as shown in Figure 4-10. -Figure 4-10 Column definitions of the ACCOUNTS table -- 7. Click the Key Constraints , Foreign Key Constraints , and Check Constraints tabs to review the key, foreign, and check constraints on the ACCOUNTS table, as shown in Figure 4-11. There is one Foreign Key Constraint and no Check Constraints on the ACCOUNTS table. -Figure 4-11 Reviewing the constraints on the ACCOUNTS table -
- -Figure 4-11 Reviewing the constraints on the ACCOUNTS table -
-- 8. Review the definition of the TRANSACTIONS table. The definition of the TRANSACTIONS table is shown in Figure 4-12. RCAC is not defined for this table yet. -Figure 4-12 TRANSACTIONS table attributes -
- -Figure 4-12 TRANSACTIONS table attributes -
-- 9. Click the Columns tab to see the columns of the TRANSACTIONS table, as shown in Figure 4-13. -Figure 4-13 Column definitions of the TRANSACTIONS table -- 10.Click the Key Constraints , Foreign Key Constraints , and Check Constraints tabs to review the key, foreign, and check constraints on the TRANSACTIONS table, as shown in Figure 4-14. There is one Foreign Key Constraint and one Check Constraint on the TRANSACTIONS table. -Figure 4-14 Reviewing the constraints on the TRANSACTIONS table -
- -Figure 4-14 Reviewing the constraints on the TRANSACTIONS table -
-Now that you have reviewed the database model for this example, the following sections describe the steps that are required to implement RCAC in this banking scenario. -4.3.2 Assigning function ID QIBM_DB_SECADM to the Database Engineers group -The first step is to assign the appropriate function usage ID to the Database Engineers (DBEs) that will be implementing RCAC. For a description of function usage IDs, see 2.1, "Roles" on page 8. In this example, the DBEs are users MCAIN and HBEDOYA. -Complete the following steps: -- 1. Right-click the database connection and select Application Administration , as shown in Figure 4-15. -Figure 4-15 Application administration -
- -Figure 4-15 Application administration -
-- 2. The Application Administration window opens, as shown in Figure 4-16. Click IBM i  Database and select the function usage ID of Database Security Administrator . -Figure 4-16 Application administration for IBM i -
- -Figure 4-16 Application administration for IBM i -
-- 3. Click Customize for the function usage ID of Database Security Administrator, as shown in Figure 4-17. -Figure 4-17 Customizing the Database Security Administrator function usage ID -
- -Figure 4-17 Customizing the Database Security Administrator function usage ID -
-- 4. The Customize Access window opens, as shown in Figure 4-18. Click the users that need to implement RCAC. For this example, HBEDOYA and MCAIN are selected. Click Add and then click OK . -Figure 4-18 Customize Access window -
- -Figure 4-18 Customize Access window -
-- 5. The Application Administrator window opens again. The function usage ID of Database Security Administrator now has an X in the Customized Access column, as shown in Figure 4-19. -Figure 4-19 Function usage ID Database Security Administrator customized -
- -Figure 4-19 Function usage ID Database Security Administrator customized -
-- 6. Run an SQL query that shows which user profiles are enabled to define RCAC. The SQL query is shown in Figure 4-20. -Figure 4-20 Query to display user profiles with function usage ID for RCAC -
- -Figure 4-20 Query to display user profiles with function usage ID for RCAC -
-4.3.3 Creating group profiles for the users and their roles -The next step is to create the different group profiles (ADMIN, CUSTOMER, TELLER, and DBE) and assign the different user profiles to the different group profiles. For a description of the different groups and users for this example, see 4.2, "Description of the users roles and responsibilities" on page 39. -Complete the following steps: -- 1. On the main navigation pane of System i Navigator, right-click Groups and select New Group , as shown in Figure 4-21. -Figure 4-21 Creating group profiles -
- -Figure 4-21 Creating group profiles -
-- 2. The New Group window opens, as shown in Figure 4-22. For each new group, enter the Group name (ADMIN, CUSTOMER, TELLER, and DBE) and add the user profiles that are associated to this group by selecting the user profile and clicking Add . -Figure 4-22 shows adding user TQSPENCER to the TELLER group profile. -Figure 4-22 Creating group profiles and adding users -
- -Figure 4-22 Creating group profiles and adding users -
-- 3. After you create all the group profiles, you should see them listed in System i Navigator under Users and Groups  Groups , as shown in Figure 4-23. -Figure 4-23 Newly created group profiles -
- -Figure 4-23 Newly created group profiles -
-4.3.4 Creating the CUSTOMER_LOGIN_ID global variable -In this step, you create a global variable that is used to capture the Customer_Login_ID information, which is required to validate the permissions. For more information about global variables, see 3.2.2, "Built-in global variables" on page 19. -Complete the following steps: -- 1. From System i Navigator, under the schema Bank_Schema, right-click Global Variable and select New  Global Variable , as shown in Figure 4-24. -Figure 4-24 Creating a global variable -
- -Figure 4-24 Creating a global variable -
-- 2. The New Global Variable window opens, as shown in Figure 4-25. Enter the global variable name of CUSTOMER_LOGIN_ID, select the data type of VARCHAR, and leave the default value of NULL. This default value ensures that users that do not use the web interface do not have permission to access the data. Click OK . -Figure 4-25 Creating a global variable called CUSTOMER_LOGIN_ID -
- -Figure 4-25 Creating a global variable called CUSTOMER_LOGIN_ID -
-- 3. Now that the global variable is created, assign permissions to the variable so that it can be set by the program. Right-click the CUSTOMER_LOGIN_ID global variable and select Permissions , as shown in Figure 4-26. -Figure 4-26 Setting permissions on the CUSTOMER_LOGIN_ID global variable -
- -Figure 4-26 Setting permissions on the CUSTOMER_LOGIN_ID global variable -
-- 4. The Permissions window opens, as shown in Figure 4-27. Select Change authority for Webuser so that the application can set this global variable. -Figure 4-27 Setting change permissions for Webuser on the CUSTOMER_LOGIN_ID global variable -
- -Figure 4-27 Setting change permissions for Webuser on the CUSTOMER_LOGIN_ID global variable -
-4.3.5 Defining and creating row permissions -You now ready to define the row permissions of the tables. Complete the following steps: -- 1. From the navigation pane of System i Navigator, click Schemas  BANK_SCHEMA , right-click Row Permissions , and select New  Row Permission , as shown in Figure 4-28. -Figure 4-28 Selecting new row permissions -
- -Figure 4-28 Selecting new row permissions -
-- 2. The New Row Permission window opens, as shown in Figure 4-29. Enter the information regarding the row permissions on the CUSTOMERS table. This row permission defines what is established in the following policy: -- -User profiles that belong to DBE, ADMIN, and TELLER group profiles can see all the rows. -- -User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER user) can see only the rows that match their customer login ID. The login ID value representing the online banking user is passed from the web application to the database by using the global variable CUSTOMER_LOGIN_ID. The permission rule uses a subquery to check whether the global variable matches the CUSTOMER_LOGIN_ID column value in the CUSTOMERS table. -- -Any other user profile cannot see any rows at all. -Select the Enabled option. Click OK . -Figure 4-29 New row permissions on the CUSTOMERS table -
- -Figure 4-29 New row permissions on the CUSTOMERS table -
-- 3. Define the row permissions for the ACCOUNTS table. The New Row Permission window opens, as shown in Figure 4-30. Enter the information regarding the row permissions on the ACCOUNTS table. This row permission defines what is established in the following policy: -- -User profiles that belong to DBE, ADMIN and TELLER group profiles can see all the rows. -- -User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER user) can see only the rows that match their customer login ID. The login ID value representing the online banking user is passed from the web application to the database by using the global variable CUSTOMER_LOGIN_ID. The permission rule uses a subquery to check whether the global variable matches the CUSTOMER_LOGIN_ID column value in the CUSTOMERS table. -- -Any other user profile cannot see any rows at all. -Select the Enabled option. Click OK . -Figure 4-30 New row permissions on the ACCOUNTS table -
- -Figure 4-30 New row permissions on the ACCOUNTS table -
-- 4. Define the row permissions on the TRANSACTIONS table. The New Row Permission window opens, as shown in Figure 4-31. Enter the information regarding the row permissions on the TRANSACTIONS table. This row permission defines what is established in the following policy: -- -User profiles that belong to DBE, ADMIN, and TELLER group profiles can see all of the rows. -- -User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER user) can see only the rows that match their customer login ID. The login ID value representing the online banking user is passed from the web application to the database by using the global variable CUSTOMER_LOGIN_ID. The permission rule uses a subquery to check whether the global variable matches the CUSTOMER_LOGIN_ID column value in the CUSTOMERS table. -Note: You must join back to ACCOUNTS and then to CUSTOMERS by using a subquery to check whether the global variable matches CUSTOMER_LOGIN_ID. Also, if the row permission or column mask rule text references another table with RCAC defined, the RCAC for the referenced table is ignored. -- -Any other user profile cannot see any rows at all. -Select the Enabled option. Click OK . -Figure 4-31 New row permissions on the TRANSACTIONS table -
- -Figure 4-31 New row permissions on the TRANSACTIONS table -
-- 5. To verify that the row permissions are enabled, from System i Navigator, click Row Permissions , as shown in Figure 4-32. The three row permissions are created and enabled. -Figure 4-32 List of row permissions on BANK_SCHEMA -
- -Figure 4-32 List of row permissions on BANK_SCHEMA -
-4.3.6 Defining and creating column masks -This section defines the masks on the columns. Complete the following steps: -- 1. From the main navigation pane of System i Navigator, click Schemas  BANK_SCHEMA , right-click Column Masks , and select New  Column Mask , as shown in Figure 4-33. -Figure 4-33 Creating a column mask -
- -Figure 4-33 Creating a column mask -
-- 2. In the New Column Mask window, which is shown in Figure 4-34, enter the following information: -- -Select the CUSTOMERS table on which to create the column mask. -- -Select the Column to mask; in this example, it is CUSTOMER_EMAIL. -- -Define the masking logic depending on the rules that you want to enforce. In this example, either the ADMIN or CUSTOMER group profiles can see the entire email address; otherwise, it is masked to ****@****. -Select the Enabled option. Click OK . -Figure 4-34 Defining a column mask on the CUSTOMERS table -
- -Figure 4-34 Defining a column mask on the CUSTOMERS table -
-- 3. Repeat steps 1 on page 58 and 2 to create column masks for the following columns: -- -MASK_DRIVERS_LICENSE_ON_CUSTOMERS -- -MASK_LOGIN_ID_ON_CUSTOMERS -- -MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS -- -MASK_ACCOUNT_NUMBER_ON_ACCOUNTS -- -MASK_SECURITY_QUESTION_ON_CUSTOMERS -- -MASK_TAX_ID_ON_CUSTOMERS -- 4. To verify that the column masks are enabled, from System i Navigator, click Column Masks , as shown in Figure 4-35. The seven column masks are created and enabled. -Figure 4-35 List of column masks on BANK_SCHEMA -
- -Figure 4-35 List of column masks on BANK_SCHEMA -
-4.3.7 Restricting the inserting and updating of masked data -This step defines the check constraints that support the column masks to make sure that on INSERTS or UPDATES, data is not written with a masked value. For more information about the propagation of masked data, see 6.8, "Avoiding propagation of masked data" on page 108. -Complete the following steps: -- 1. Create a check constraint on the column CUSTOMER_EMAIL in the CUSTOMERS table. From the navigation pane of System i Navigator, right-click the CUSTOMERS table and select Definition , as shown Figure 4-36 -Figure 4-36 Definition of the CUSTOMERS table -
- -Figure 4-36 Definition of the CUSTOMERS table -
-- 2. From the CUSTOMERS definition window, click the Check Constraints tab and click Add , as shown in Figure 4-37. -Figure 4-37 Adding a check constraint -
- -Figure 4-37 Adding a check constraint -
-- 3. The New Check Constraint window opens, as shown in Figure 4-38. Complete the following steps: -- a. Select the CUSTOMER_EMAIL column. -- b. Enter the check constraint condition. In this example, specify CUSTOMER_EMAIL to be different from ****@****, which is the mask value. -- c. Select the On update violation, preserve column value option and click OK . -Figure 4-38 Specifying a new check constraint on the CUSTOMERS table -
- -Figure 4-38 Specifying a new check constraint on the CUSTOMERS table -
-- 4. Figure 4-39 shows that there is now a check constraint on the CUSTOMERS table that prevents any masked data from being updated to the CUSTOMER_EMAIL column. -Figure 4-39 Check constraint on the CUSTOMERS table -
- -Figure 4-39 Check constraint on the CUSTOMERS table -
-- 5. Create all the other check constraints that are associated to each of the masks on the CUSTOMERS table. After this is done, these constraints should look like the ones that are shown in Figure 4-40. -Figure 4-40 List of check constraints on the CUSTOMERS table -
- -Figure 4-40 List of check constraints on the CUSTOMERS table -
-4.3.8 Activating row and column access control -You are now ready to activate RCAC on all three tables in this example. Complete the following steps: -- 1. Start by enabling RCAC on the CUSTOMERS table. From System i Navigator, right-click the CUSTOMERS table and select Definition . As shown in Figure 4-41, make sure that you select Row access control and Column access control . Click OK . -Figure 4-41 Enabling RCAC on the CUSTOMERS table -
- -Figure 4-41 Enabling RCAC on the CUSTOMERS table -
-- 2. Enable RCAC on the ACCOUNTS table. Right-click the ACCOUNTS table and select Definition . As shown Figure 4-42, make sure that you select Row access control and Column access control . Click OK . -Figure 4-42 Enabling RCAC on ACCOUNTS -
- -Figure 4-42 Enabling RCAC on ACCOUNTS -
-- 3. Enable RCAC on the TRANSACTIONS table. Right-click the TRANSACTIONS table and select Definition . As shown in Figure 4-43, make sure that you select Row access control . Click OK . -Figure 4-43 Enabling RCAC on TRANSACTIONS -
- -Figure 4-43 Enabling RCAC on TRANSACTIONS -
-4.3.9 Reviewing row permissions -This section displays all the row permissions after enabling RCAC. Complete the following steps: -- 1. From System i Navigator, click Row Permissions , as shown in Figure 4-44. Three additional Row Permissions are added (QIBM_DEFAULT*). There is one per each row permission. -Figure 4-44 Row permissions after enabling RCAC -
- -Figure 4-44 Row permissions after enabling RCAC -
-- 2. Look at one of the row permission definitions by right-clicking it and selecting Definition , as shown in Figure 4-45. -Figure 4-45 Selecting row permission definition -
- -Figure 4-45 Selecting row permission definition -
-- 3. A window opens, as shown in Figure 4-46. Take note of the nonsensical search condition (0=1) of the QIBM_DEFAULT row permission. This permission is ORed with all of the others and it ensures that if someone does not meet any of the criteria from the row permission then this condition is tested, and because it is false the access is denied. -Figure 4-46 Search condition of the QIBM_DEFAULT row permission -
- -Figure 4-46 Search condition of the QIBM_DEFAULT row permission -
-4.3.10 Demonstrating data access with RCAC -You are now ready to test the RCAC definitions. Run the following SQL statements with each type of user (DBE, SECURITY, TELLER, ADMIN, and WEBUSER): -- GLYPH A SELECT statement that returns the SESSION_USER. -- GLYPH A SELECT statement that counts the customers from the CUSTOMER table. There are 90 customers in the CUSTOMER table. -- GLYPH A simple SELECT statement that returns the following output from the CUSTOMERS table ordered by customer_name: -- -c u s t o m e r _ i d -- -customer_name -- -customer_email -- -c u s t o m e r _ t a x _ i d -- -customer_drivers_license_number -Data access for a DBE user with RCAC -To test a DBE (MCAIN) user, complete the following steps: -- 1. Confirm that the user is the user of the session by running the first SQL statement, as shown in Figure 4-47. In this example, MCAIN is the DBE user. -Figure 4-47 DBE session user -
- -Figure 4-47 DBE session user -
-- 2. The number of rows that the DBE user MCAIN can see is shown in Figure 4-48. -Figure 4-48 Number of rows that DBE user can see in the CUSTOMERS table -
- -Figure 4-48 Number of rows that DBE user can see in the CUSTOMERS table -
-- 3. The result of the third SQL statement is shown in Figure 4-49. Note the masked columns. User MCAIN can see all the rows in the CUSTOMERS table, but there are some columns where the result is masked. -Figure 4-49 SQL statement that is run by the DBE user with masked columns -Data access for SECURITY user with RCAC -To test a SECURITY user, complete the following steps: -- 1. Confirm that the user is the user of the session by running the first SQL statement, as shown in Figure 4-50. In this example, SECURITY is the security officer. -Figure 4-50 SECURITY session user -
- -Figure 4-50 SECURITY session user -
-- 2. The number of rows in the CUSTOMERS table that the security officer can see is shown in Figure 4-51. The security officer cannot see any data at all. -Figure 4-51 Number of rows that the security officer can see in the CUSTOMERS table -
- -Figure 4-51 Number of rows that the security officer can see in the CUSTOMERS table -
-- 3. The result of the third SQL statement is shown in Figure 4-52. Note the empty set that is returned to the security officer. -Figure 4-52 SQL statement that is run by the SECURITY user - no results -
- -Figure 4-52 SQL statement that is run by the SECURITY user - no results -
-Data access for TELLER user with RCAC -To test a Teller (TQSPENCER) user, complete the following steps: -- 1. Confirm that the TELLER user is the user of the session by running the first SQL statement, as shown in Figure 4-53. In this example, TQSPENCER is a TELLER user. -Figure 4-53 TELLER session user -
- -Figure 4-53 TELLER session user -
-- 2. The number of rows in the CUSTOMERS table that the TELLER user can see is shown in Figure 4-54. The TELLER user can see all the rows. -Figure 4-54 Number of rows that the TELLER user can see in the CUSTOMERS table -
- -Figure 4-54 Number of rows that the TELLER user can see in the CUSTOMERS table -
-- 3. The result of the third SQL statement is shown in Figure 4-55. Note the masked columns. The TELLER user, TQSPENSER, can see all the rows, but there are some columns where the result is masked. -Figure 4-55 SQL statement that is run by the TELLER user with masked columns -
- -Figure 4-55 SQL statement that is run by the TELLER user with masked columns -
-Data access for ADMIN user with RCAC -To test an ADMIN (VGLUCCHESS) user, complete the following steps: -- 1. Confirm that the ADMIN user is the user of the session by running the first SQL statement, as shown in Figure 4-56. In this example, VGLUCCHESS is an ADMIN user. -Figure 4-56 ADMIN session user -
- -Figure 4-56 ADMIN session user -
-- 2. The number of rows that the ADMIN user can see is shown in Figure 4-57. The ADMIN user can see all the rows. -Figure 4-57 Number of rows that the ADMIN can see in the CUSTOMERS table -
- -Figure 4-57 Number of rows that the ADMIN can see in the CUSTOMERS table -
-- 3. The result of the third SQL statement is shown in Figure 4-58. There are no masked columns. -Figure 4-58 SQL statement that is run by the ADMIN user - no masked columns -Data access for WEBUSER user with RCAC -To test a CUSTOMERS (WEBUSER) user that accesses the database by using the web application, complete the following steps: -- 1. Confirm that the user is the user of the session by running the first SQL statement, as shown in Figure 4-59. In this example, WEBUSER is a CUSTOMER user. -Figure 4-59 WEBUSER session user -
- -Figure 4-59 WEBUSER session user -
-- 2. A global variable (CUSTOMER_LOGIN_ID) is set by the web application and then is used to check the row permissions. Figure 4-60 shows setting the global variable by using the customer login ID. -Figure 4-60 Setting the global variable CUSTOMER_LOGIN_ID -
- -Figure 4-60 Setting the global variable CUSTOMER_LOGIN_ID -
-- 3. Verify that the global variable was set with the correct value by clicking the Global Variable tab, as shown in Figure 4-61. -Figure 4-61 Viewing the global variable value -
- -Figure 4-61 Viewing the global variable value -
-- 4. The number of rows that the WEBUSER can see is shown in Figure 4-62. This user can see only the one row that belongs to his web-based user ID. -Figure 4-62 Number of rows that the WEBUSER can see in the CUSTOMERS table -
- -Figure 4-62 Number of rows that the WEBUSER can see in the CUSTOMERS table -
-- 5. The result of the third SQL statement is shown in Figure 4-63. There are no masked columns, and the user can see only one row, which is the user's own row. -Figure 4-63 SQL statement that is run by WEBUSER - no masked columns -
- -Figure 4-63 SQL statement that is run by WEBUSER - no masked columns -
-Other examples of data access with RCAC -To run an SQL statement that lists all the accounts and current balance by customer, complete the following steps: -- 1. Run the SQL statement that is shown in Figure 4-64 using the WEBUSER user profile. The SQL statement has no WHERE clause, but the WEBUSER can see only his accounts. -Figure 4-64 List of accounts and current balance by customer using the WEBUSER user profile -- 2. Figure 4-65 shows running a more complex SQL statement that calculates transaction total by account for year and quarter. Run this statement using the WEBUSER profile. The SQL statement has no WHERE clause, but the WEBUSER user can see only his transactions. -Figure 4-65 Calculate transaction total by account for year and quarter using the WEBUSER profile -- 3. Run the same SQL statement that lists the accounts and current balance by customer, but use a TELLER user profile. The result of this SQL statement is shown in Figure 4-66. The TELLER user can see all the rows in the CUSTOMERS table. -Figure 4-66 List of accounts and current balance by customer using a TELLER user profile -4.3.11 Query implementation with RCAC activated -This section looks at some other interesting information that is related to RCAC by comparing the access plans of the same SQL statement without RCAC and with RCAC. This example uses Visual Explain and runs an SQL statement that lists the accounts and current balance by customer. -Complete the following steps: -- 1. Figure 4-67 shows the SQL statement in Visual Explain ran with no RCAC. The implementation of the SQL statement is a two-way join, which is exactly what the SQL statement is doing. -Figure 4-67 Visual Explain with no RCAC enabled -
- -Figure 4-67 Visual Explain with no RCAC enabled -
-- 2. Figure 4-68 shows the Visual Explain of the same SQL statement, but with RCAC enabled. It is clear that the implementation of the SQL statement is more complex because the row permission rule becomes part of the WHERE clause. -Figure 4-68 Visual Explain with RCAC enabled -
- -Figure 4-68 Visual Explain with RCAC enabled -
-- 3. Compare the advised indexes that are provided by the Optimizer without RCAC and with RCAC enabled. Figure 4-69 shows the index advice for the SQL statement without RCAC enabled. The index being advised is for the ORDER BY clause. -Figure 4-69 Index advice with no RCAC -
- -Figure 4-69 Index advice with no RCAC -
-- 4. Now, look at the advised indexes with RCAC enabled. As shown in Figure 4-70, there is an additional index being advised, which is basically for the row permission rule. For more information, see 6.4.2, "Index advisor" on page 99. -Figure 4-70 Index advice with RCAC enabled -
- -Figure 4-70 Index advice with RCAC enabled -
-
- -
-Chapter 5. -5 -RCAC and non-SQL interfaces -A benefit of Row and Column Access Control (RCAC) is that its security controls are enforced across all the interfaces that access DB2 for i because the security rules are defined and enforced at the database level. The examples that are shown in this paper focus on SQL-based access, but row permissions and column masks also are enforced for non-SQL interfaces, such as native record-level access in RPG and COBOL programs and CL commands, such as Display Physical File Member ( DSPPFM ) and Copy File ( CPYF ). -This consistent enforcement across all interfaces is a good thing, but there are some nuances and restrictions as a result of applying an SQL-based technology such as RCAC to non-SQL interfaces. These considerations are described in this chapter. -The following topics are covered in this chapter in this chapter: -- GLYPH Unsupported interfaces -- GLYPH Native query result differences -- GLYPH Accidental updates with masked values -- GLYPH System CL commands considerations -5.1 Unsupported interfaces -It is not possible to create a row permission or column mask on a distributed table or a program-described file. -After a row permission or column mask is added to a table, there are some data access requests that no longer work. An attempt to open or query a table with activated RCAC controls involving any of the following scenarios is rejected with the CPD43A4 error message: -- GLYPH A logical file with multiple formats if the open attempt requests more than one format. -- GLYPH A table or query that specifies an ICU 2.6.1 sort sequence. -- GLYPH A table with read triggers. -This unsupported interface error occurs when a table with RCAC controls is accessed, not when the RCAC control is created and activated. -For example, assume that there is a physical file, PF1, which is referenced by a single format logical file (LFS) and a multi-format logical file (LFM). A row permission is successfully created and activated for PF1. Any application that accesses PF1 directly or LFS continues to work without any issues. However, any application that opens LFM with multiple formats receives an error on the open attempt after the row permission is activated for PF1. -Important: This potential runtime error places a heavy emphasis on a comprehensive testing plan to ensure that all programs are tested. If testing uncovers an unsupported interface, then you must investigate whether the application can be rewritten to use a data access interface that is supported by RCAC. -5.2 Native query result differences -The SQL Query Engine (SQE) is the only engine that is enhanced by IBM to enforce RCAC controls on query requests. In order for native query requests to work with RCAC, these native query requests are now processed by SQE instead of the Classic Query Engine (CQE). Native query requests can consist of the following items: -- GLYPH Query/400 -- GLYPH QQQQRY API -- GLYPH Open Query File ( OPNQRYF ) command -- GLYPH Run Query ( RUNQRY ) command -- GLYPH Native open (RPG, COBOL, OPNDBF, and so on) of an SQL view -Legacy queries that have been running without any issues for many years and over many IBM i releases are now processed by a different query engine. As a result, the runtime behavior and results that are returned can be different for native query requests with RCAC enabled. The OPNQRYF command and Query/400 run with SQE by default. -The following list documents some of the query output differences that can occur when native query requests are processed by CQE: -- GLYPH Different ordering in the result set -- GLYPH Different values for null columns or columns with errors -- GLYPH Suppression of some mapping error messages -- GLYPH Loss of RRN positioning capabilities -- GLYPH Duplicate key processing behavior differences -- GLYPH Missing key feedback -For a list of the differences and additional details, see the IBM i Memo to Users Version 7.2 , found at: -http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgmtu.htm -In addition, the performance of a native query with SQE can be different. It is possible that a new index or keyed logical file might need to be created to improve the performance. -Important: Based on the potential impacts of query result set and performance differences, you should perform extensive functional testing and performance benchmarking of applications and reports that use native query interfaces. -5.3 Accidental updates with masked values -The masked values that are returned by a column mask can potentially cause the original data value to be accidentally overwritten, especially with applications using native record-level access. -For example, consider a table containing three columns of first name, last name, and tax ID that is read by an RPG program. The user running the program is not authorized to see the tax ID value, so a masked value (*****3333) is written into the program's record buffer, as shown Figure 5-1. -In this example, the application reads the data for an update to correct the misspelling of the last name. The last name value is changed to Smith in the buffer. Now, a WRITE request is issued by the program, which uses the contents of the record buffer to update the row in the underlying DB2 table. Unfortunately, the record buffer still contains a masked value for the tax ID, so the tax ID value in the table is accidentally set to the masked value. -Figure 5-1 Accidental update with masked values scenario -
- -Figure 5-1 Accidental update with masked values scenario -
-Obviously, careful planning and testing should be exercised to avoid accidental updates with masked values. -DB2 for i also enhanced its check constraint support in the IBM i 7.2 release with a new ON UPDATE clause that allows the existing value to be preserved when a masked value is detected by a check constraint. Details about how to employ this new check constraint support can be found in 6.8.1, "Check constraint solution" on page 108. -5.4 System CL commands considerations -As stated earlier, RCAC controls are enforced on all data access interfaces. This enforcement is not limited to programmatic interfaces; it also includes system CL commands that read and insert data, such as the Create Duplicate Object ( CRTDUPOBJ ) and Start DFU ( STRDFU ) CL commands. This section documents the behavior of the Create Duplicate Object ( CRTDUPOBJ ), Copy File ( CPYF ), and Copy Library ( CPYLIB ) CL commands with RCAC. -5.4.1 Create Duplicate Object (CRTDUPOBJ) command -The CRTDUPOBJ command is enhanced with a new Access Control ( ACCCTL ) parameter in the IBM i 7.2 release to copy RCAC controls to the new object being created. Row permissions and column masks are copied to the new object by default because the default value for the ACCCTL parameter is *ALL . -If the invoker of the CRTDUPOBJ command asks for data to be copied with a value of *YES for the DATA parameter, the value of the ACCCTL parameter must be *ALL . If not, the command invocation receives an error. -When data is copied to the duplicated object with the DATA parameter, all rows and unmasked column values are copied into the new object, even if the command invoker is not authorized to view all rows or certain column values. This behavior occurs because the RCAC controls also are copied to the new object. The copied RCAC controls enforce that only authorized users are allowed to view row and column values in the newly duplicated object. -5.4.2 Copy File (CPYF) command -The CPYF command copies only data, so there is no new parameter to copy RCAC controls to the target table. Therefore, if CPYF is used to create a target table, there are no RCAC controls placed on the target table. -When RCAC controls are in place on the source table, the CPYF command is limited to reading rows and column values that are based on the invoker of the CPYF command. If a user is authorized to see all rows and column values, then all rows and unmasked column values are copied to the target table (assuming no RCAC controls are on the target table). If a user without full access runs the CPYF command, the CPYF command can copy only a subset of the rows into the target table. In addition, if that user can view only masked column values, then masked values are copied into the target table. This also applies to the Copy to Import File ( CPYTOIMPF ) command. -If the target table has RCAC controls defined and activated, then the CPYF command is allowed only to add or replace rows in the target table based on the RCAC controls. If CPYF tries to add a row to the target table that the command invoker is not allowed to view according to the target RCAC controls, then an error is received. -5.4.3 Copy Library (CPYLIB) command -The CPYLIB command is enhanced with the same Access Control ( ACCCTL ) parameter as the CRTDUPOBJ command in the IBM i 7.2 release (see 5.4.1, "Create Duplicate Object (CRTDUPOBJ) command" on page 82). Row permissions and column masks are copied to the new object in the new library by default because the default value for the ACCCTL parameter is *ALL . -
- -
-Chapter 6. -Additional considerations -This chapter covers additional considerations that must be taken into account when implementing Row and Column Access Control (RCAC), including the following functions: -- GLYPH Timing of column masking -- GLYPH Data movement -- GLYPH Joins -- GLYPH Views -- GLYPH Materialized query tables -- GLYPH Index advisor -- GLYPH Monitoring, analysis, and debugging -- GLYPH Performance and scalability -The following topics are covered in this chapter: -- GLYPH Timing of column masking -- GLYPH RCAC effects on data movement -- GLYPH RCAC effects on joins -- GLYPH Monitoring, analyzing, and debugging with RCAC -- GLYPH Views, materialized query tables, and query rewrite with RCAC -- GLYPH RCAC effects on performance and scalability -- GLYPH Exclusive lock to implement RCAC (availability issues) -- GLYPH Avoiding propagation of masked data -- GLYPH Triggers and functions (SECURED) -- GLYPH RCAC is only one part of the solution -6 -6.1 Timing of column masking -An important design and implementation consideration is the fact that RCAC column masking occurs after all of the query processing is complete, which means that the query results are not at all based on the masked values. Any local selection, joining, grouping, or ordering operations are based on the unmasked column values. Only the final result set is the target of the masking. -An example of this situation is shown in Figure 6-1. However, note that aggregate functions (a form of grouping) are based on masked values. -SELECT -CREDIT_CARD_NUMBER, -FROM -GROUP BY -CREDIT_CARD_NUMBER -ORDER BY -CREDIT_CARD_NUMBER; -Without RCAC Masking -With RCAC Masking - - -CREDIT CARD NUMBER _ _TOTAL -3785 0000 0000 1234233.50 -3785 1111 1111 1234105.10 -3785 2222 2222 1234300 00 300.00 -3785 3333 3333 12341,775.00 -5466 4444 4444 1234601.70 -5466 5555 5555 123437.80 -5466 6666 6666 1234490.45 -6011 7777 7777 12341005.00 -6011 8888 8888 1234750.33 -6011 9999 9999 000110.00 -
-Figure 6-1 Timing of column masking - - - -CREDIT CARD NUMBER _ _TOTAL -**** **** **** 1234233.50 -**** **** **** 1234105.10 -**** **** **** 1234300 00 300.00 -**** **** **** 12341,775.00 -**** **** **** 1234601.70 -**** **** **** 123437.80 -**** **** **** 1234490.45 -**** **** **** 1234 12341005.00 -**** **** **** 1234750.33 -**** **** **** 000110.00 -
Figure 6-1 Timing of column masking
-SUM(AMOUNT) AS TOTAL TRANSACTIONS -Conversely, field procedure masking causes the column values to be changed (that is, masked) and stored in the row. When the table is queried and the masked columns are referenced, the masked data is used for any local selection, joining, grouping, or ordering operations. This situation can have a profound effect on the query's final result set and not just on the column values that are returned. Field procedure masking occurs when the column values are read from disk before any query processing. RCAC masking occurs when the column values are returned to the application after query processing. This difference in behavior is shown in Figure 6-2. -Note: Column masks can influence an SQL INSERT or UPDATE . For example, you cannot insert or update a table with column access control activated with masked data generated from an expression within the same statement that is based on a column with a column mask. -Figure 6-2 Masking differences between Fieldproc and RCAC -
- -Figure 6-2 Masking differences between Fieldproc and RCAC -
-6.2 RCAC effects on data movement -As described earlier and shown in Figure 6-3, RCAC is applied pervasively regardless of the data access programming interface, SQL statement, or IBM i command. The effects of RCAC on data movement scenarios can be profound and possibly problematic. It is important to understand these effects and make the appropriate adjustments to avoid incorrect results or data loss. -Figure 6-3 RCAC and data movement -
- -Figure 6-3 RCAC and data movement -
-The "user" that is running the data movement application or process, whether it be a high availability (HA) scenario, an extract, transform, load (ETL) scenario, or just copying data from one file or table to another one, must have permission to all the source rows without masking, and not be restricted from putting rows into the target. Allowing the data movement application or process to bypass the RCAC rules must be based on a clear and concise understanding of the organization's object security and data access policy. Proper design, implementation, and testing are critical success factors when applying RCAC. -Important: RCAC is applied to the table or physical file access. It is not applied to the journal receiver access. Any and all database transactions are represented in the journal regardless of RCAC row permissions and column masks. This makes it essential that IBM i security is used to ensure that only authorized personnel have access to the journaled data. -This section covers in detail the following three examples: -- GLYPH Effects when RCAC is defined on the source table -- GLYPH Effects when RCAC is defined on the target table -- GLYPH Effects when RCAC is defined on both source and target tables -6.2.1 Effects when RCAC is defined on the source table -Example 6-1 shows a simple example that illustrates the effect of RCAC as defined on the source table. -Example 6-1 INSERT INTO TARGET statement -INSERT INTO TARGET (SELECT * FROM SOURCE); -For example, given a "source" table with a row permission defined as NAME <> 'CAIN' and a column mask that is defined to project the value 999.99 for AMOUNT, the SELECT statement produces a result set that has the RCAC rules applied. This reduced and modified result set is inserted into the "target" table even though the query is defined as returning all rows and all columns. Instead of seven rows that are selected from the source, only three rows are returned and placed into the target, as shown in Figure 6-4. -Figure 6-4 RCAC effects on data movement from SOURCE -
- -Figure 6-4 RCAC effects on data movement from SOURCE -
-6.2.2 Effects when RCAC is defined on the target table -Example 6-2 shows a simple example that illustrates the effect of RCAC as defined on the target table. -Example 6-2 INSERT INTO TARGET statement -INSERT INTO TARGET (SELECT * FROM SOURCE); -Given a "target" table with a row permission defined as NAME <> 'CAIN' and a column mask that is defined to project the value 999.99 for AMOUNT, the SELECT statement produces a result set that represents all the rows and columns. The seven row result set is inserted into the "target", and the RCAC row permission causes an error to be returned, as shown in Figure 6-5. The source rows where NAME = 'CAIN' do not satisfy the target table's permission, and therefore cannot be inserted. In other words, you are inserting data that you cannot read. -Figure 6-5 RCAC effects on data movement on TARGET -
- -Figure 6-5 RCAC effects on data movement on TARGET -
-6.2.3 Effects when RCAC is defined on both source and target tables -Example 6-3 shows a simple example that illustrates the effect of RCAC as defined on both the source and the target tables. -Example 6-3 INSERT INTO TARGET statement -INSERT INTO TARGET (SELECT * FROM SOURCE); -Given a "source" table and a "target" table with a row permission defined as NAME <> 'CAIN' and a column mask that is defined to project the value 999.99 for AMOUNT, the SELECT statement produces a result set that has the RCAC rules applied. This reduced and modified result set is inserted into the "target" table even though the query is defined as returning all rows and all columns. Instead of seven rows that are selected from the source, only three rows are returned. -Although the source rows where NAME <> 'CAIN' do satisfy the target table's permission, the AMOUNT column value of 999.99 represents masked data and therefore cannot be inserted. An error is returned indicating the failure, as shown in Figure 6-6. In this scenario, DB2 is protecting against an overt attempt to insert masked data. -Figure 6-6 RCAC effects on data movement on SOURCE and TARGET -
- -Figure 6-6 RCAC effects on data movement on SOURCE and TARGET -
-6.3 RCAC effects on joins -As mentioned previously, a fundamental concept of row permission is that it defines a logical subset of rows that a user or group of users is permitted to access and use. This subset becomes the new basis of any query against the table that has RCAC enabled. -Note: Thinking of the row permission as defining a virtual set of rows that can be operated on is the secret to understanding the effect of RCAC on any join operation. -As shown in Figure 6-7, there are two different sets, set A and set B. However, set B has a row permission that subsets the rows that a user can see. -Figure 6-7 Set A and set B with row permissions -
- -Figure 6-7 Set A and set B with row permissions -
-6.3.1 Inner joins -Inner join defines the intersection of two data sets. For a row to be returned from the inner join query, it must appear in both sets, as shown in Figure 6-8. -Figure 6-8 Inner join without RCAC permission -
- -Figure 6-8 Inner join without RCAC permission -
-Given that row permission serves to eliminate logically rows from one or more sets, the result set from an inner join (and a subquery) can be different when RCAC is applied. RCAC can reduce the number of rows that are permitted to be accessed by the join, as shown in Figure 6-9. -Effect of column masks on inner joins: Because column masks are applied after the query final results are determined, the masked value has no effect on the join processing and corresponding query result set. -Figure 6-9 Inner join with RCAC permission -
- -Figure 6-9 Inner join with RCAC permission -
-6.3.2 Outer joins -Outer joins preserve one or both sides of two data sets. A row can be returned from the outer join query if it appears in the primary set (LEFT, RIGHT, or both in the case of FULL), as shown in Figure 6-10. Column values from the secondary set are returned if the row has a match in the primary set. Otherwise, NULL is returned for the column value by default. -Figure 6-10 Outer join without RCAC permission -
- -Figure 6-10 Outer join without RCAC permission -
-Given that row permission serves to eliminate logically rows from one or more sets, more column values that are returned from the secondary table in outer join can be NULL when RCAC is applied, as shown in Figure 6-11. -Effect of column masks on inner joins: Because column masks are applied after the query final results are determined, the masked value has no effect on the join processing and corresponding query result set. -Figure 6-11 Outer join with RCAC permission -
- -Figure 6-11 Outer join with RCAC permission -
-6.3.3 Exception joins -Exception joins preserve one side of two data sets. A row can be returned from the exception join query if it appears in the primary set (LEFT or RIGHT) and the row does not appear in the secondary set, as shown in Figure 6-12. Column values from the secondary set are returned as NULL by default. -Figure 6-12 Exception join without RCAC permission -
- -Figure 6-12 Exception join without RCAC permission -
-Given that row permission serves to eliminate logically rows from one or more sets, more rows can appear to be exceptions when RCAC is applied, as shown in Figure 6-13. Also, because column masks are applied after the query final results are determined, the masked value has no effect on the join processing and corresponding query result set. -Figure 6-13 Exception join with RCAC permission -
- -Figure 6-13 Exception join with RCAC permission -
-6.4 Monitoring, analyzing, and debugging with RCAC -It is assumed (and it is a critical success factor) that the database engineer or application developer has a thorough understanding of the DB2 for i Query Optimizer, Database Engine, and all the associated tools and techniques. -The monitoring, analyzing, and debugging process basically stays the same when RCAC row permissions or column masks are in place, with a few important differences: -- GLYPH The underlying data access plan can be different and more complex based on the rule text. -- GLYPH The database results can be reduced or modified based on the rule text and user profile. -- GLYPH The run time of the request can be affected either positively or negatively based on the rule text. -- GLYPH For high-level language record level access, query plans must be considered, and not just program code. -During analyzing and debugging, it is important to account for all of the RCAC definitions for each table or file to understand the logic and corresponding work that is associated with processing the row permissions and column masks. It is also important to realize that, depending on the user profile in effect at run time, the database actions and query results can be different. -RCAC is designed and implemented to be transparent to the user. It is possible for user "Mike" and user "Hernando" to run the exact same query, against the exact same data on the exact same system, and get different result sets. There is no error, no warning, and no indication that RCAC reduced or modified the respective answers that are returned. Furthermore, it is also likely that user "Mike" and user "Hernando" have different query run times even though it appears that everything is the same for both users. The actual query plan contains the RCAC logic, and this additional code path can alter the amount of work that is needed to produce results, based on the user running the query. -When monitoring, analyzing, and debugging a database process when RCAC is enabled, it is critical to keep as many of the "variables" the same as possible. Use a good scientific process. For example, when re-creating a problem situation running under the same user profile with the same data and under the same conditions, it is almost mandatory. Otherwise, the database behavior and query results can be different. -To successfully perform monitoring, analyzing, and debugging when RCAC is enabled likely involves changes in the security and data access policies of the organization, and require new responsibilities, authority, and oversight within the data-centric application development community. As such, establishing and staffing the position of "database engineer" becomes even more important. -6.4.1 Query monitoring and analysis tools -When monitoring and collecting metrics on database requests, DB2 for i provides additional information that indicates row permissions or column masks are being applied. This information is integrated and part of the standard tools, such as Visual Explain, SQL Plan Cache Snapshot, and SQL Performance Monitor. -Figure 6-14 shows how Visual Explain externalizes RCAC. -Figure 6-14 Visual Explain indicating that RCAC is applied -
- -Figure 6-14 Visual Explain indicating that RCAC is applied -
-Figure 6-15 shows the main dashboard of an SQL Performance Monitor. Click Summary . -Figure 6-15 SQL Performance Monitor -
- -Figure 6-15 SQL Performance Monitor -
-Figure 6-16 shows the summary of an SQL Performance Monitor with an indication that RCAC is applied. -Figure 6-16 SQL Performance Monitor indicating that RCAC is applied -
- -Figure 6-16 SQL Performance Monitor indicating that RCAC is applied -
-Figure 6-17 shows the statements of an SQL Performance Monitor and how RCAC is externalized. -Figure 6-17 SQL Performance Monitor showing statements and RCAC -
- -Figure 6-17 SQL Performance Monitor showing statements and RCAC -
-When implementing RCAC as part of a comprehensive and pervasive data access control initiative, consider that the database monitoring and analysis tools can collect literal values that are passed as part of SQL statements. These literal values can be viewed as part of the information collected. If any of the literals are based on or are used with masked columns, it is important to review the database engineer's policy for viewing these data elements. For example, supposed that column CUSTOMER_TAX_ID is deemed masked for the database engineer and the CUSTOMER_TAX_ID column is used in a predicate as follows: -WHERE CUSTOMER_TAX_ID = '123-45-7890' -The literal value of '123-45-7890' is visible to the analyst, effectively exposing sensitive information. If this is not acceptable, you must implement the SYSPROC.SET_COLUMN_ATTRIBUTE procedure. -The SET_COLUMN_ATTRIBUTE procedure sets the SECURE attribute for a column so that variable values that are used for the column cannot be seen in the SQL Performance Monitor, SQL Plan Cache Snapshot, or Visual Explain. -6.4.2 Index advisor -Because the RCAC rule text can be almost any valid SQL logic, including local selection predicates, join conditions, and subqueries, the standard query tuning techniques still apply. Without a doubt, a proper and adequate indexing strategy is a good starting point. -The index advisor is not specifically enhanced for RCAC, but because the rule text is a fully integrated part of the query plan, any opportunities for indexing is advised based on the current Query Optimizer functionality. If an index is advised because of the RCAC rule text logic, there is no RCAC reason code provided. Analyzing the query plan and the RCAC rule text provides the understanding as to why the index is being advised. -For example, the query that is shown in Figure 6-18 produces index advice for the user's predicate and the RCAC predicate. -Figure 6-18 Index advice and RCAC -
- -Figure 6-18 Index advice and RCAC -
-In Figure 6-19, index advisor is showing an index for the ACCOUNTS and CUSTOMERS tables based on the RCAC rule text. -Figure 6-19 Index advisor based on the RCAC rule -
- -Figure 6-19 Index advisor based on the RCAC rule -
-For more information about creating and using indexes, see IBM DB2 for i indexing methods and strategies , found at: -http://www.ibm.com/partnerworld/wps/servlet/ContentHandler/stg_ast_sys_wp_db2_i_in dexing_methods_strategies -6.4.3 Metadata using catalogs -To make the discovery and identification of RCAC row permissions and column masks programmatically, query the QSYS2.SYSCONTROLS catalog view or the QSYS2.SYSCONTROLSDEP catalog view directly. Otherwise, the System i Navigator Database graphical interface can be used interactively. -Figure 6-20 shows the QSYS2.SYSCONTROLS catalog view. -Figure 6-20 RCAC and catalogs -The SYSCONTROLS catalog view contains the following columns: -- GLYPH COLUMN_NAME -- GLYPH CONTROL_TYPE -- GLYPH CREATE_TIME -- GLYPH ENABLE -- GLYPH ENFORCED -- GLYPH ASP_NUMBER -- GLYPH IMPLICIT -- GLYPH LABEL -- GLYPH LAST_ALTERED -- GLYPH LONG_COMMENT -- GLYPH RCAC_NAME -- GLYPH RCAC_OWNER -- GLYPH RCAC_SCHEMA -- GLYPH RULETEXT -- GLYPH SYSTEM_COLUMN_NAME -- GLYPH SYSTEM_TABLE_NAME -- GLYPH SYSTEM_TABLE_SCHEMA -- GLYPH TABLE_NAME -- GLYPH TABLE_SCHEMA -- GLYPH TBCORRELATION -The SYSCONTROLSDEP catalog view contains the following columns: -- GLYPH COLUMN_NAME -- GLYPH CONTROL_TYPE -- GLYPH IASP_NUMBER -- GLYPH OBJECT_NAME -- GLYPH OBJECT_SCHEMA -- GLYPH OBJECT_TYPE -- GLYPH PARM_SIGNATURE -- GLYPH RCAC_NAME -- GLYPH RCAC_SCHEMA -- GLYPH SYSTEM_TABLE_NAME -- GLYPH SYSTEM_TABLE_SCHEMA -For more information, see the IBM i 7.2 DB2 for i SQL Reference Guide , found at: -http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/db2/rbafzintro.htm?lang =en -6.5 Views, materialized query tables, and query rewrite with RCAC -This section covers the implications to views, materialized query tables (MQTs), and query rewrite when RCAC is activated on a table. -6.5.1 Views -Any access to an SQL view that is over one or more tables that have RCAC also have those row permissions and column masking rules applied. If an SQL view has predicates, those are logically ANDed with any search condition that is specified in the permissions that are defined on the underlying tables. The view does not have to project the columns that are referenced by the permissions. Figure 6-21 shows an example of a view definition and user query. -Figure 6-21 View definition and user query -
- -Figure 6-21 View definition and user query -
-What the query optimizer plans for and what the database engine runs is shown in the Figure 6-22. -Figure 6-22 Query rewrite with RCAC -
- -Figure 6-22 Query rewrite with RCAC -
-6.5.2 Materialized query tables -When the query to populate a materialized query table (MQT) is run by the system on either the create table or a refresh table, and one or more source tables have RCAC defined, the row permissions and column masks are ignored. This means that the MQT has all of the data. -Because the MQT is a copy of the base table data, when a permission is created on the base table, all the related MQTs are altered to have a default row permission. This default permission prevents any of the rows from being directly queried. -When a query implicitly uses an MQT, the underlying row permissions and column masks are built into the query that uses the MQT. In order for the MQT to be used for optimization, the MQT must include any columns that are used by the row permissions and column masks. -The following example illustrates this scenario: -- 1. Create schema and tables: -CREATE SCHEMA Schema1; CREATE TABLE Schema1.employee(userID varchar(128), LocationID integer, Regionid integer); CREATE TABLE Schema1.Sales (INVOICE INTEGER NOT NULL, SALEAMT DECIMAL(5,2), TAXAMT DECIMAL(5,2), LOCATIONID INTEGER, REGIONID INTEGER); -- 2. Create a row permission that allows the employees to see only rows from the region they work in: -/* Create permission that only allows the employees to see rows from the region they work in */ CREATE PERMISSION Schema1.Sales_PERM1 ON schema1.sales FOR ROWS WHERE CURRENT_USER in (SELECT userId FROM schema1.employee E WHERE e.regionid = regionid) ENFORCED FOR ALL ACCESS ENABLE; -- 3. Create an MQT to summarize sales by location: --- Create MQT to summarize sales by location -- This has all of the data. The schema1.sales_perm1 predicate was not applied CREATE TABLE Schema1.Location_Sales_MQT as AS (SELECT LocationID, SUM(Saleamt) as Total_Location_Sales FROM SCHEMA1.SALES GROUP BY LOCATIONID) DATA INITIALLY DEFERRED REFRESH DEFERRED MAINTAINED BY USER; -- 4. Populate the MQT (permission is not applied): -/* Populate the MQT - Permission not applied here */ REFRESH TABLE Schema1.Location_Sales_MQT -The following query matches Location_Sales_MQT, but it cannot be used because it does not have column regionid, which is needed by the schema1.sales_PERM1 permission: -SELECT Locationid, sum(SALEAMT) FROM schema1.sales GROUP BY locationid; -- 5. Create an MQT to summarize by region and location: --- MQT to summarize by region and location Create table schema1.Region_Location_Sales_MQT as AS (SELECT REGIONID, LocationID, SUM(Saleamt) as Total_Location_Sales FROM SCHEMA1.SALES GROUP BY REGIONID, LOCATIONID) DATA INITIALLY DEFERRED REFRESH DEFERRED MAINTAINED BY USER; -- 6. Populate the Region_location_Sales_MQT (permission not applied): -/* Populate the Region_location_Sales_MQT - Permission not applied here */ Refresh table schema1.Region_Location_Sales_MQT -The following query can use the Region_location_SALES_MQT because it has REGIONID, which is required for the schema1.sales_PERM1 permission: -SELECT Locationid, sum(SALEAMT) FROM schema1.sales GROUP BY locationid; -This example has the following additional implications: -- GLYPH Users must be prevented from explicitly querying the MQT or a view that is created over it. Those two cases bypass the row permission and column mask rules from the underlying tables. -- GLYPH If the user writes code to update incrementally an MQT, that code must be run from a user that has permission to view all of the rows and all columns in their unmasked state. Otherwise, the MQT contents are not complete and queries that implicitly use the MQT might get wrong results. -- GLYPH To prevent this, a check constraint can be created to cause an error if masked data was inserted into the MQT. -6.5.3 Query rewrite -Query rewrite is a technique that the optimizer can use to change the original request to improve performance. -For example, a query that references Table1 might be rewritten to access an MQT over Table1, or it might also be optimized to access only the fields in an index that is defined over Table1 and avoid touching Table1. With RCAC, defining these rewrites can still occur, but the MQT or index also must include all columns that are needed by the row permissions or column masks that are defined on Table1. -As part of adding RCAC, the impact to these potentially significant performance optimizations must be considered. Usage of MQTs or index-only access might be reduced or eliminated by enabling RCAC. -6.6 RCAC effects on performance and scalability -As with any discussion that is related to performance and scalability, nothing is certain or guaranteed. There are always many variables that are involved. First, a good foundation of knowledge and skill is required to appreciate fully what is occurring when a database request is handled within an RCAC enabled environment. Implementing the row permission or column masks involves the query optimizer and database engine. The process that identifies the rows that you have permission to access is considered a "query", and as such a query plan must be formulated. In the case of SQL requests, the RCAC portion of the query is combined with the user's query, much like a query referencing a view. -For native record level access, this RCAC "query" is also built and used to test the permission. When a file is opened, the RCAC rule text logic is included, optimized, and run as part of the native read, write, update, or delete operation. The amount of work (and time) required to identify the record based on the user's permission is directly related to the complexity and depth of the logic that is needed to identify the records that can be returned. -A simple example to illustrate this concept is a random read using a keyed logical file (that is, an index). In its purest form, a random read uses two data access methods: index probe (find the key and RRN) and table probe (find the record using RRN). If the RCAC rule text specifies five nested subqueries to determine whether the user has access to the record, this logic must be added to the path. The subquery processing now becomes part of the original "random read" request. Instead of two simple I/Os to retrieve the record, there can be a minimum of 12 I/Os to retrieve the same record. These I/Os can be done with a result of "not found" if the user is not entitled to any of the records. -For programs that access records sequentially, in or out of key order, the added RCAC logic can have a profound effect on the performance and scalability. Reading the "next record" in order is no longer a simple matter of positioning to the next available key, as shown in Figure 6-23. -Figure 6-23 Native record access with no RCAC -
- -Figure 6-23 Native record access with no RCAC -
-Before the record, as identified by the key, is considered available, the RCAC logic must be run. If the record is rejected by RCAC, the next record in sequence that is permissible must be identified. This spinning through the records can take a long time and uses many resources, as shown in Figure 6-24. -Figure 6-24 Native record level access with RCAC -
- -Figure 6-24 Native record level access with RCAC -
-After the row permissions and column masks are designed and implemented, adequate performance and scalability testing are recommended. -6.7 Exclusive lock to implement RCAC (availability issues) -When defining permissions or enabling RCAC, an exclusive lock on the base table is obtained. The impact to other applications depends on the order of create permission and the alter table to activate RCAC. -Consider the following scenarios: -- GLYPH Scenario 1: Adding permissions and RCAC is not enabled on the table: -- -Job 1 reading data from the table (open for input) holds a *SHRRD on the member and a *SHRRD on the data. -- -Job 2 adding, updating, or deleting rows from table (open for output) holds a *SHRRD on the member and a *SHRUPD on the data. -- -Job 4 allocates the object and gets a *SHRRD on the file and a *EXCLRD on the data. -- -Job 3 attempts to add a permission to the table. Permission is added and the pseudo-closed cursors for Job1 and Job 2 are closed. Job 4 still holds the *SHRRD on the file and *EXCLRD on the data. -The net result from Scenario 1 is that you can add permissions without having to end the applications that are reading the base table. -- GLYPH Scenario 2: Altering a table to activate RCAC requires that all applications using the table be ended. The alter table requires exclusive use of the table. -- GLYPH Scenario 3: Altering the table to activate RCAC before the permissions are added. The alter table requires exclusive use of the table, as in scenario 2. All applications must be ended to perform this alter. After the alter is complete, any applications trying to read data do not get any results, and attempts to insert new rows returns the following message: -SQ20471] INSERT or UPDATE does not satisfy row permissions. -To create a permission in this case requires that you end all the applications, unlike scenario 1 where permissions can be added while the applications were active. In this case, the applications must be ended to run the create permission. -6.8 Avoiding propagation of masked data -Operations such as insert or update into a table with active column access control can fail if the input data is masked data. This can happen when data to be inserted or updated contains the masked value as a result of a SELECT from a table with active column access control. -For example, assume TABLE1 and TABLE2 have active column access control and for insert, selecting data from TABLE2 returns the masked data. The following INSERT returns an error: -INSERT INTO TABLE1 SELECT * FROM TABLE2 -The masked data that is returned from the SELECT * FROM TABLE2 might not be valid input data for TABLE1 because of data type or column check constraint. -There are two ways to prevent this situation from happening: Define a check constraint or create a before trigger. -6.8.1 Check constraint solution -One way to prevent this problem is to define a check constraint. -As part of RCAC, new SQL syntax is provided to allow an action to be performed when a violation of the check constraints check condition occurs instead of giving that error. However, if the check condition is still not met after the action, a hard error is returned. A check constraint with the new on-violation-clause is allowed on both the CREATE TABLE and ALTER TABLE statements. -In the Example 6-4, the mask is defined to return a value of 'XXX-XX-nnnn' for any query that is not done by a user profile in the DBMGR group. The constraint checks that the column SSN does not have the masked value. -Example 6-4 Check constraint to avoid masked data -CREATE SCHEMA MY_LIB SET SCHEMA MY_LIB CREATE TABLE MY_LIB.EMP_INFO (COL1_name CHAR(10) WITH DEFAULT 'DEFAULT', COL2_ssn CHAR(11) WITH DEFAULT 'DEFAULT') CREATE MASK MASK_ssn ON MY_LIB.EMP_INFO FOR COLUMN COL2_ssn RETURN CASE WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBMGR' ) = 1 THEN COL2_ssn -ELSE 'XXX-XX-'||SUBSTR(COL2_ssn,8,4) END ENABLE | /* Check constraint for the update and insert.*/ ALTER TABLE MY_LIB.EMP_INFO ADD CONSTRAINT MASK_ssn_preserve CHECK(SUBSTR(COL2_ssn,1,7)<>'XXX-XX-') -- Allow any value other than the mask ON UPDATE VIOLATION PRESERVE COL2_ssn -- Don't update the mask portion of the existing value ON INSERT VIOLATION SET COL2_ssn = DEFAULT -- for insert set this to the default value. -6.8.2 Before trigger solution -The actions that are described in Example 6-4 on page 108 for ON UPDATE VIOLATION and ON INSERT VIOLATION also can be handled by a before trigger, as shown in Example 6-5. -Example 6-5 Before trigger to avoid masked data -CREATE TRIGGER PREVENT_MASK_SSN BEFORE INSERT OR UPDATE ON MY_LIB.EMP_INFO REFERENCING NEW ROW AS N OLD ROW AS O FOR EACH ROW MODE DB2ROW SECURED WHEN(SUBSTR(N.COL2_ssn,1,7) = 'XXX-XX-') BEGIN IF INSERTING THEN SET N.COL2_ssn = DEFAULT; ELSEIF UPDATING THEN SET N.COL2_ssn = O.COL2_ssn; END IF; END -6.9 Triggers and functions (SECURED) -There are some considerations that must be considered when there are triggers and functions on tables that have RCAC enabled. The purpose of SECURE for triggers and functions is so that a user who is allowed to create a trigger or function is not necessarily able to make it SECURE themselves. This prevents the trigger/function developer from adding code that skims off data that they are not allowed to see. -6.9.1 Triggers -Triggers have access to the data in rows outside of the row permission or column masking. An after trigger has access to the new row image after the permission has allowed the update or insert to occur. Therefore, the triggers can potentially change the insert or update image value so that it violates the permission. -Any triggers that are defined on a table must be created with an attribute that designates that it is SECURED when RCAC definitions are created or altered for that table, as shown in Example 6-6. The same applies to a view that has an instead of trigger. That trigger must be secure at the point RCAC is enabled for any of the underlying tables the view is over. -Example 6-6 Trigger SECURED -/* Trigger created with the SECURED attribute */ CREATE TRIGGER PREVENT_MASK_SSN BEFORE INSERT OR UPDATE ON MY_LIB.EMP_INFO REFERENCING NEW ROW AS N OLD ROW AS O FOR EACH ROW MODE DB2ROW SECURED WHEN(SUBSTR(N.COL2_ssn,1,7) = 'XXX-XX-') BEGIN IF INSERTING THEN SET N.COL2_ssn = DEFAULT; ELSEIF UPDATING THEN SET N.COL2_ssn = O.COL2_ssn; END IF; END -6.9.2 Functions -Within a CREATE PERMISSION or CREATE MASK , a function can be called. Because that UDF has access to the data before the RCAC rules are applied, the SECURE attribute is required on that function, as shown in Example 6-7. -Example 6-7 Specifying SECURED on a function CREATE PERMISSION SCHEMA.PERM1 ON SCHEMA.TABLE1 FOR ROWS WHERE MY_UDF(CURRENT_USER,COLUMN1) = 1 ENFORCED FOR ALL ACCESS ENABLE; CREATE FUNCTION MY_UDF (INP1 CHAR(32), INP2 INTEGER) Returns INTEGER LANGUAGE SQL CONTAINS SQL SECURED -The SECURED attribute of MY_UDF signifies that the function is considered secure for RCAC. If a function is called from an SQL statement, and references a column in a table that has RCAC, it must be declared as secure. In that case, if the secure function calls other functions, they are not validated to confirm whether they are secure. -Consider the following examples: -- GLYPH Table1 has RCAC defined and enabled. SELECT MY_UDF2(Column2) from schema.table1. -- MY_UDF2 must be created with the SECURED attribute. If MY_UDF2 invokes MY_UDF3, there is no checking to ensure that it is also created with SECURED. -- NOT SECURED is the default on the create function unless SECURED is explicitly selected. -This same rule applies for any function that might be invoked with a masked column specified as an argument. -- GLYPH Table2 column SSN has a column mask that is defined on it. -- SELECT MY_UDF4(SSN) from table2. Because SSN has a column mask that is defined, MY_UDF4 must be created with the SECURED attribute. -6.10 RCAC is only one part of the solution -When designing and implementing RCAC row permissions, special attention should be given to the effectiveness and limitations of controlling data access. Data can be housed in objects other than tables or physical files. The role and responsibility of the database user, for example, the database engineer, must be reconciled with their respective authority and access privileges. -Figure 6-25 illustrates that object level security is the first check and that RCAC permissions provide control only on tables and physical files. -Figure 6-25 Object-level security and RCAC permissions -
- -Figure 6-25 Object-level security and RCAC permissions -
-To get access to the table and the rows, the user must pass the object level authority test and the RCAC permission test. -The IBM i journal captures the transactional data and places an image of the row in the journal receiver. If the user has access to the journal receiver, the row image can be viewed if the user has authority to the journal receiver. -Although the SQL Plan Cache data, the SQL Plan Cache Snapshot data, and the SQL Performance Monitor data do not reveal the results of queries, they can show the literal values that are passed along with the SQL statements. -The ability to monitor, analyze, debug, and tune data-centric applications effectively and efficiently requires some understanding of the underlying data, or at least the attributes of the data. The organization must be willing to reconcile the conflicting requirements of "restricting access to data", and "needing access to data". -
- -
-Chapter 7. -7 -Row and Column Access Control management -After Row and Column Access Control (RCAC) definitions are defined and activated in a database, your management processes must be adjusted to accommodate these new security controls. This chapter highlights some of the changes that should be considered. -The following topics are covered in this chapter: -- GLYPH Managing row permissions and column masks -- GLYPH Managing tables with row permissions and column masks -- GLYPH Monitoring and auditing function usage -7.1 Managing row permissions and column masks -This section focuses on the management of the RCAC row permissions and column masks. -7.1.1 Source management -The SQL statements that are used to define row permissions and column masks should be managed with a change management process. Ideally, you already are using a change management process for your database definitions, and that same process can be extended to cover your RCAC definitions. -If you are using SQL DDL to define your DB2 tables, then you have the option of adding the RCAC definitions to the same source file as the table definition. The benefit of this approach is that it keeps all DDL that is related to a table in a single source file. The downside is that if you must re-create only the RCAC definitions and leave the table unchanged, then you must identify and extract only the RCAC definitions from the source file. There are situations where the row permissions and column masks must be changed or re-created without changing the definition of the associated table. -7.1.2 Modifying definitions -After RCAC is activated for a table, the row permission and column mask definitions can be re-created to change the data access behavior for that table. Usage of the OR REPLACE clause on the CREATE MASK and CREATE PERMISSION SQL statements simplifies the re-creation process by folding in the deletion of the existing RCAC definition. -This capability makes it easy to change your RCAC definitions as you test the controls with your applications and identify tweaks that must be made to your RCAC implementation. However, re-creation of RCAC definitions does require an exclusive lock to be acquired on the table during the process. -7.1.3 Turning on and off -As described in 3.1.2, "Enabling and activating RCAC" on page 16, the SQL ALTER statement can turn on and off row permissions and column masks. The ALTER MASK and A LTER PERMISSION statements allow an individual row permission or column mask to be turned off with the DISABLE option and back on with the ENABLE option. The ALTER TABLE statement can deactivate enforcement of all the row permissions and column masks for a single table. -Important: Although these capabilities make it easy to temporarily turn off RCAC security so that you can make environment or application changes, these processes require an exclusive lock to be obtained on a table. Therefore, this activity must be planned carefully to avoid disruptions and outages. -7.1.4 Regenerating -DB2 also can regenerate an existing row permission or column mask. This regenerate option can be useful with more complex RCAC definitions that reference other DB2 objects. -For example, consider a row permission on an ACCOUNTS table (PERMISSION1_ON_ACCOUNTS). The ACCOUNTS table row permission references and compares columns in the CUSTOMERS table. When the definition of the CUSTOMERS table changes, DB2 does not check to determine whether the change to the CUSTOMERS table breaks the ACCOUNTS table row permission. If this table definition change does break the row permission, an error does not surface until an application tries to read rows from the ACCOUNTS table. -Instead of waiting for an application to detect this error, the REGENERATE option can be used on the ACCOUNTS row permission. The REGENERATE option returns an error if the change in the CUSTOMERS table definition causes the row permission to be invalid. In this way, the row permission can be proactively corrected before an application discovers the error. -7.2 Managing tables with row permissions and column masks -This section examines the object management considerations after RCAC is added to a DB2 table. -7.2.1 Save and restore -Row permissions and column masks are stored in the DB2 table object itself, so they are automatically saved and restored when the DB2 table object is saved and restored. Therefore, no adjustments must be made to your database backup process to accommodate RCAC. -Save and restore processing works fine with RCAC if the RCAC definition does not reference other DB2 objects other than the table over which they are defined. When the RCAC definition has dependencies on other DB2 objects, the restore process is much more challenging. -For example, assume that the BANKSCHEMA library (which is the system name or short name for the schema long name of BANK_SCHEMA) is saved and restored into a library named BANK_TEST. Recall from the example in 7.1.4, "Regenerating" on page 114 that the row permission on the ACCOUNTS table references the CUSTOMERS table (… SELECT C.CUSTOMER_ID FROM CUSTOMERS C …). After the restore operation, the ACCOUNTS row permission still references the CUSTOMERS table in BANK_SCHEMA because DB2 explicitly qualifies all object references when the row permission or column mask is created. The restore processing does not change the explicit qualification from BANK_SCHEMA to BANK_TEST. As a result, the restored ACCOUNTS row permission now depends on DB2 objects residing in a different schema, even though it was not created that way originally. For more details, see Figure 7-1. -Figure 7-1 Restoring tables to different schemas -
- -Figure 7-1 Restoring tables to different schemas -
-The only way to fix this issue is to re-create the row permission or column mask after the restore operation. Re-creation of the row permission or column mask is required only for definitions that reference other DB2 objects, but it is simpler to re-create all of the RCAC definitions instead of a subset. For example, generate the SQL using System i Navigator, clear the "Schema qualify names for objects" and select the "OR REPLACE clause", and then run the generated script. -7.2.2 Table migration -There are several IBM i CL commands, such as Move Object ( MOVOBJ ), Create Duplicate Object ( CRTDUPOBJ ), and Copy Library ( CPYLIB ), which are used to migrate a table from one library to another one. Often, this migration is done to create different versions of the table that can be used for development or testing purposes. -The migration of a table with RCAC has the same challenges as restore processing. If the RCAC definition references other DB2 objects, then IBM i CL commands do not change the schema names that are explicitly qualified by the DB2 internal RCAC processing. -Again, re-creating the row permission or column mask is the only way to fix the issue of references to DB2 objects in other schemas. -7.3 Monitoring and auditing function usage -While establishing proper roles for users, separating duties using function usage IDs, and defining RCAC policies allows you to implement an effective and pervasive data access control scheme. How do you monitor and audit everyone who is involved in the implementation of that scheme? The answer is to use IBM i journaling. A special journal that is called QAUDJRN, also known as the audit journal , can provide a record and audit trail of many security relevant events that occur on the system, including RCAC-related events. -The tasks and operations of security administrators and database engineers who are collaborating can (and should) be effectively monitored and audited to ensure that the organization's data access control and governance policies are in place and enabled. For example, the Database Engineers can be involved in designing and developing functions and triggers that must be secured using the SECURE attribute. Otherwise, without properly securing functions and triggers, the RCAC controls can be bypassed. -A new journal entry type of "AX" for journal entry code "T" (audit trail) is now used for RCAC. More information about the journaling of RCAC operations can be found in the following documents: -- GLYPH IBM i Version 7.2 Journal Management Guide , found at: -- http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzaki/rzakiprintthis .htm?lang=en -- GLYPH IBM i Version 7.2 Security Reference Guide , found at: -- http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzarl/rzarlkickoff.h tm?lang=en -
- -
-Chapter 8. -Designing and planning for success -Although successfully implementing Row and Column Access Control (RCAC) is based on knowledge and skills, designing and planning are fundamental aspects. This chapter describes the need for a deep understanding of the technology, and good design, proper planning, and adequate testing. -The following topics are covered in this chapter: -- GLYPH Implementing RCAC with good design and proper planning -- GLYPH DB2 for i Center of Excellence -8 -8.1 Implementing RCAC with good design and proper planning -By using RCAC, the row and column data that is returned to the requester can be controlled and governed by a set of data-centric policies that are defined with SQL and implemented within DB2 for i. -RCAC provides fine-grained access control and is complementary to IBM i object-level security. With the new RCAC feature of DB2 for i, the database engineer, in partnership with the data owner and security officer, can ensure that users have access to the data based on their level of authorization and responsibility. -This situation also can include separation of duties, such as allowing the application developers to design and implement the solutions, but restricting them from accessing the production data based on policy. Just because someone writes and owns the program, it does not mean that they have access to all the sensitive data that their program can potentially read. -This paper has described the following pervasive power and advantages of RCAC: -- GLYPH Access can be controlled through simple or sophisticated logic. -- GLYPH Virtually no application changes are required. -- GLYPH The implementation of the access policy is part of the DB2 data access layer. -- GLYPH Table data is protected regardless of the interface that is used. -- GLYPH No user is inherently exempted from the access control policies. -- GLYPH Groups of users can share policies and permissions. -A deep understanding of the technology, and proper planning, good design, adequate testing, and monitored deployment are critical for success. This includes the usage of quality assurance testing, and realistic performance and scalability exercises that serve to demonstrate that all of your requirements are being met. As part of the verification process, the usage of in-depth proofs of concepts and proofs of technology are recommended, if not essential. When RCAC is activated, the results of queries can change. Anticipating this change and realizing the effects of RCAC before going live are of the utmost importance. -With the ever-growing value of data, and the vast and varied database technology that is available today, it is crucial to have a person or persons on staff who specialize in data-centric design, development, and deployment. This role and responsibility falls on the database engineer. With the availability of DB2 RCAC, the importance of full-time database engineering has grown. -8.2 DB2 for i Center of Excellence -To further assist you with understanding and implementing RCAC, the DB2 for i Center of Excellence team offers an RCAC education and consulting workshop. In addition to knowledge transfer, a working session allows for a review of your data access control requirements, review of the current environment, solution ideation, and high-level solution design. -If you are interested in engaging with the DB2 for i Center of Excellence, contact Mike Cain at mcain@us.ibm.com . -
- -
-Appendix A. -Database definitions for the RCAC banking example -This appendix provides the database definitions or DDLs to re-create the Row and Column Access Control (RCAC) scenario that is described in Chapter 4, "Implementing Row and Column Access Control: Banking example" on page 37. The script that is shown in Example A-1 is the DDL script that is used to implement this example. -Example A-1 DDL script to implement the RCAC banking example -/* Database Definitions for RCAC Bank Scenario */ /* Schema */ CREATE SCHEMA BANK_SCHEMA FOR SCHEMA BANKSCHEMA ; /* Global Variable */ CREATE VARIABLE BANK_SCHEMA.CUSTOMER_LOGIN_ID VARCHAR( 30) ; LABEL ON VARIABLE BANK_SCHEMA.CUSTOMER_LOGIN_ID IS 'Customer''s log in value passed by web application' ; /* Tables */ CREATE TABLE BANK_SCHEMA.CUSTOMERS ( CUSTOMER_ID FOR COLUMN CUSTO00001 INTEGER GENERATED ALWAYS AS IDENTITY ( START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE NO CYCLE NO ORDER CACHE 20 ), CUSTOMER_NAME FOR COLUMN CUSTO00002 VARCHAR(30) CCSID 37 NOT NULL , CUSTOMER_ADDRESS FOR COLUMN CUSTO00003 VARCHAR(30) CCSID 37 NOT NULL , CUSTOMER_CITY FOR COLUMN CUSTO00004 VARCHAR(30) CCSID 37 NOT NULL , CUSTOMER_STATE FOR COLUMN CUSTO00005 CHAR(2) CCSID 37 NOT NULL , CUSTOMER_PHONE FOR COLUMN CUSTO00006 CHAR(10) CCSID 37 NOT NULL , CUSTOMER_EMAIL FOR COLUMN CUSTO00007 VARCHAR(30) CCSID 37 NOT NULL , CUSTOMER_TAX_ID FOR COLUMN CUSTO00008 CHAR(11) CCSID 37 NOT NULL , CUSTOMER_DRIVERS_LICENSE_NUMBER FOR COLUMN CUSTO00012 CHAR(13) CCSID 37 DEFAULT NULL , CUSTOMER_LOGIN_ID FOR COLUMN CUSTO00009 VARCHAR(30) CCSID 37 DEFAULT NULL , CUSTOMER_SECURITY_QUESTION FOR COLUMN CUSTO00010 VARCHAR(100) CCSID 37 DEFAULT NULL , -A -CUSTOMER_SECURITY_QUESTION_ANSWER FOR COLUMN CUSTO00011 VARCHAR(100) CCSID 37 DEFAULT NULL , INSERT_TIMESTAMP FOR COLUMN INSER00001 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , UPDATE_TIMESTAMP FOR COLUMN UPDAT00001 TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , CONSTRAINT BANK_SCHEMA.CUSTOMER_ID_PK PRIMARY KEY( CUSTOMER_ID ) ) ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_LOGIN_ID_UK UNIQUE( CUSTOMER_LOGIN_ID ) ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_DRIVERS_LICENSE_CHECK CHECK( CUSTOMER_DRIVERS_LICENSE_NUMBER <> '*************' ) ON UPDATE VIOLATION PRESERVE CUSTOMER_DRIVERS_LICENSE_NUMBER ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_EMAIL_CHECK CHECK( CUSTOMER_EMAIL <> '****@****' ) ON UPDATE VIOLATION PRESERVE CUSTOMER_EMAIL ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_LOGIN_ID_CHECK CHECK( CUSTOMER_LOGIN_ID <> '*****' ) ON INSERT VIOLATION SET CUSTOMER_LOGIN_ID = DEFAULT ON UPDATE VIOLATION PRESERVE CUSTOMER_LOGIN_ID ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_SECURITY_QUESTION_CHECK CHECK( CUSTOMER_SECURITY_QUESTION_ANSWER <> '*****' ) ON INSERT VIOLATION SET CUSTOMER_SECURITY_QUESTION_ANSWER = DEFAULT ON UPDATE VIOLATION PRESERVE CUSTOMER_SECURITY_QUESTION_ANSWER ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_SECURITY_QUESTION_ANSWER CHECK( CUSTOMER_SECURITY_QUESTION <> '*****' ) ON INSERT VIOLATION SET CUSTOMER_SECURITY_QUESTION = DEFAULT ON UPDATE VIOLATION PRESERVE CUSTOMER_SECURITY_QUESTION ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_TAX_ID_CHECK CHECK( CUSTOMER_TAX_ID <> 'XXX-XX-XXXX' AND SUBSTR ( CUSTOMER_TAX_ID , 1 , 7 ) <> 'XXX-XX-' ) ON UPDATE VIOLATION PRESERVE CUSTOMER_TAX_ID ; CREATE TABLE BANK_SCHEMA.ACCOUNTS ( ACCOUNT_ID INTEGER GENERATED ALWAYS AS IDENTITY ( START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE NO CYCLE NO ORDER CACHE 20 ), CUSTOMER_ID FOR COLUMN CUSTID INTEGER NOT NULL , ACCOUNT_NUMBER FOR COLUMN ACCOUNTNO VARCHAR(50) CCSID 37 NOT NULL , ACCOUNT_NAME FOR COLUMN ACCOUNTNAM CHAR(12) CCSID 37 NOT NULL , ACCOUNT_DATE_OPENED FOR COLUMN OPENDATE DATE DEFAULT CURRENT_DATE , ACCOUNT_DATE_CLOSED FOR COLUMN CLOSEDATE DATE DEFAULT NULL , ACCOUNT_CURRENT_BALANCE FOR COLUMN ACCTBAL DECIMAL(11, 2) NOT NULL DEFAULT 0 , INSERT_TIMESTAMP FOR COLUMN INSDATE TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , UPDATE_TIMESTAMP FOR COLUMN UPDDATE TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , CONSTRAINT BANK_SCHEMA.ACCOUNT_ID_PK PRIMARY KEY( ACCOUNT_ID ) ); -ALTER TABLE BANK_SCHEMA.ACCOUNTS ADD CONSTRAINT BANK_SCHEMA.ACCOUNT_CUSTOMER_ID_FK FOREIGN KEY( CUSTOMER_ID ) REFERENCES BANK_SCHEMA.CUSTOMERS ( CUSTO00001 ) ON DELETE RESTRICT ON UPDATE RESTRICT ; ALTER TABLE BANK_SCHEMA.ACCOUNTS ADD CONSTRAINT BANK_SCHEMA.ACCOUNT_NUMBER_CHECK CHECK( ACCOUNT_NUMBER <> '*****' ) ON UPDATE VIOLATION PRESERVE ACCOUNT_NUMBER ; CREATE TABLE BANK_SCHEMA.TRANSACTIONS FOR SYSTEM NAME TRANS ( TRANSACTION_ID FOR COLUMN TRANS00001 INTEGER GENERATED ALWAYS AS IDENTITY ( START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE NO CYCLE NO ORDER CACHE 20 ), ACCOUNT_ID INTEGER NOT NULL , TRANSACTION_TYPE FOR COLUMN TRANS00002 CHAR(1) CCSID 37 NOT NULL , TRANSACTION_DATE FOR COLUMN TRANS00003 DATE NOT NULL DEFAULT CURRENT_DATE , TRANSACTION_TIME FOR COLUMN TRANS00004 TIME NOT NULL DEFAULT CURRENT_TIME , TRANSACTION_AMOUNT FOR COLUMN TRANS00005 DECIMAL(11, 2) NOT NULL , INSERT_TIMESTAMP FOR COLUMN INSER00001 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , UPDATE_TIMESTAMP FOR COLUMN UPDAT00001 TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , CONSTRAINT BANK_SCHEMA.TRANSACTION_ID_PK PRIMARY KEY( TRANSACTION_ID ) ) ; ALTER TABLE BANK_SCHEMA.TRANSACTIONS ADD CONSTRAINT BANK_SCHEMA.TRANSACTIONS_ACCOUNT_ID_FK FOREIGN KEY( ACCOUNT_ID ) REFERENCES BANK_SCHEMA.ACCOUNTS ( ACCOUNT_ID ) ON DELETE RESTRICT ON UPDATE RESTRICT ; /* Permissions and Masks */ CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) OR ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 AND ( C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ) ) ENFORCED FOR ALL ACCESS ENABLE ; CREATE MASK BANK_SCHEMA.MASK_EMAIL_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_EMAIL RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_EMAIL WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_EMAIL ELSE '****@****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_TAX_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_TAX_ID RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 -THEN C . CUSTOMER_TAX_ID WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( C . CUSTOMER_TAX_ID , 8 , 4 ) ) WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_TAX_ID ELSE 'XXX-XX-XXXX' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_DRIVERS_LICENSE_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_DRIVERS_LICENSE_NUMBER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ELSE '*************' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_LOGIN_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_LOGIN_ID RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_LOGIN_ID WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_LOGIN_ID ELSE '*****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_SECURITY_QUESTION RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION ELSE '*****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_SECURITY_QUESTION_ANSWER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ELSE '*****' END ENABLE ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL ; -CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_ACCOUNTS ON BANK_SCHEMA.ACCOUNTS AS A FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) OR ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 AND ( A . CUSTOMER_ID IN ( SELECT C . CUSTOMER_ID FROM BANK_SCHEMA . CUSTOMERS C WHERE C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ENFORCED FOR ALL ACCESS ENABLE ; CREATE MASK BANK_SCHEMA.MASK_ACCOUNT_NUMBER_ON_ACCOUNTS ON BANK_SCHEMA.ACCOUNTS AS A FOR COLUMN ACCOUNT_NUMBER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN A . ACCOUNT_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN A . ACCOUNT_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN A . ACCOUNT_NUMBER ELSE '*****' END ENABLE ; ALTER TABLE BANK_SCHEMA.ACCOUNTS ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL ; CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_TRANSACTIONS ON BANK_SCHEMA.TRANSACTIONS AS T FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) OR ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 AND ( T . ACCOUNT_ID IN ( SELECT A . ACCOUNT_ID FROM BANK_SCHEMA . ACCOUNTS A WHERE A . CUSTOMER_ID IN ( SELECT C . CUSTOMER_ID FROM BANK_SCHEMA . CUSTOMERS C WHERE C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ENFORCED FOR ALL ACCESS ENABLE ; ALTER TABLE BANK_SCHEMA.TRANSACTIONS ACTIVATE ROW ACCESS CONTROL ; /* END */ -Related publications -The publications that are listed in this section are considered suitable for a more detailed description of the topics that are covered in this paper. -Other publications -These publications are relevant as further information sources: -- GLYPH IBM DB2 for i indexing methods and strategies white paper: -- http://www.ibm.com/partnerworld/wps/servlet/ContentHandler/stg_ast_sys_wp_db2_i _indexing_methods_strategies -- GLYPH IBM i Memo to Users Version 7.2 : -- http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgmtu.htm -- GLYPH IBM i Version 7.2 DB2 for i SQL Reference Guide : -- http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/db2/rbafzintro.htm?l ang=en -- GLYPH IBM i Version 7.2 Journal Management Guide : -- http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzaki/rzakiprintthis .htm?lang=en -- GLYPH IBM i Version 7.2 Security Reference Guide : -- http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzarl/rzarlkickoff.h tm?lang=en -Online resources -These websites are relevant as further information sources: -- GLYPH Database programming topic of the IBM i 7.2 IBM Knowledge Center: -- http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgdbp.htm?l ang=en -- GLYPH Identity Theft Resource Center -- http://www.idtheftcenter.org -- GLYPH Ponemon Institute -- http://www.ponemon.org/ -Help from IBM -IBM Support and downloads -ibm.com /support -IBM Global Services -ibm.com /services -Back cover -Row and Column Access Control Support in IBM DB2 for i -Implement roles and separation of duties -Leverage row permissions on the database -Protect columns by defining column masks -This IBM Redpaper publication provides information about the IBM i 7.2 feature of IBM DB2 for i Row and Column Access Control (RCAC). It offers a broad description of the function and advantages of controlling access to data in a comprehensive and transparent way. This publication helps you understand the capabilities of RCAC and provides examples of defining, creating, and implementing the row permissions and column masks in a relational database environment. -This paper is intended for database engineers, data-centric application developers, and security officers who want to design and implement RCAC as a part of their data control and governance policy. A solid background in IBM i object level security, DB2 for i relational database concepts, and SQL is assumed. -
- -
-
- -
-INTERNATIONAL TECHNICAL SUPPORT ORGANIZATION -BUILDING TECHNICAL INFORMATION BASED ON PRACTICAL EXPERIENCE -IBM Redbooks are developed by the IBM International Technical Support Organization. Experts from IBM, Customers and Partners from around the world create timely technical information based on realistic scenarios. Specific recommendations are provided to help you implement IT solutions more effectively in your environment. -For more information: ibm.com /redbooks -
\ No newline at end of file diff --git a/tests/data/groundtruth/docling_v1/redp5110.json b/tests/data/groundtruth/docling_v1/redp5110.json deleted file mode 100644 index 6780142d..00000000 --- a/tests/data/groundtruth/docling_v1/redp5110.json +++ /dev/null @@ -1 +0,0 @@ -{"_name": "", "type": "pdf-document", "description": {"title": null, "abstract": null, "authors": null, "affiliations": null, "subjects": null, "keywords": null, "publication_date": null, "languages": null, "license": null, "publishers": null, "url_refs": null, "references": null, "publication": null, "reference_count": null, "citation_count": null, "citation_date": null, "advanced": null, "analytics": null, "logs": [], "collection": null, "acquisition": null}, "file-info": {"filename": "redp5110.pdf", "filename-prov": null, "document-hash": "3f8b6f0cb6d21ff16bdd7254c47ba72984b7ed1b70114e833c30f19be5366ad6", "#-pages": 146, "collection-name": null, "description": null, "page-hashes": [{"hash": "042dcdd712c3671577114114227f75ce1b5fe22a78e589c60b27d3c414ca914e", "model": "default", "page": 1}, {"hash": "19c7033f317f569819298dcaf98d4fd119632b01b323f3e244b6c14cd46b27b0", "model": "default", "page": 2}, {"hash": "1650a40ffe39a2240d05bdf5a7297a9e7de9c2564373213b732eb2009de23fd5", "model": "default", "page": 3}, {"hash": "fd0e00135169f317b2e2ab993cc64383dca2511f4a9e954563050a69dbefc35f", "model": "default", "page": 4}, {"hash": "dd607eefa7f279633dce503515463003c0167d6e1480e41daf39d95a03b02156", "model": "default", "page": 5}, {"hash": "69724844504d443f2f7dabc9d6cc912e26f1aba1fc51ddb2f248aa6f8da70505", "model": "default", "page": 6}, {"hash": "3ca620d960ef23d3419b3de71eb985eaa9bd54b7c1463116d4d11f64ab6515a8", "model": "default", "page": 7}, {"hash": "f360d9c1a29f5d9cc38f7a149b5e82ae9c177dedf534141f5d96d41792ccca01", "model": "default", "page": 8}, {"hash": "aaee7dcc87c982f44b3311ea587d9fee5d510de9567f84832e8b2effbf5e4c49", "model": "default", "page": 9}, {"hash": "f54ad5009578acd50e29ddf9e764f3894aef129245709bdda6695aca35080ef1", "model": "default", "page": 10}, {"hash": "35f70e10a2408e0395dfa9e894c5173186ac4481f414e41666e0be54f194accd", "model": "default", "page": 11}, {"hash": "64e97a3d553d9443178aae195f16f327cf503bb9c6930fe13af66b9fed277578", "model": "default", "page": 12}, {"hash": "995809366f67a29d338e5d08064a21a5bcda880bb0fe9d31085a3361059cf9ca", "model": "default", "page": 13}, {"hash": "b33a9cb89864b8461e994bc178c0f348722a75445a176a0ff059a1f1c6013c38", "model": "default", "page": 14}, {"hash": "37b17e27e1e6d405ed9c79a1282703930b1e8e1bff6b849a19ce614e5f874577", "model": "default", "page": 15}, {"hash": "ed6d8cc30effd85fb3a8b189732a80dd1d56dbc7fa4f079cd6d16f6084f4545a", "model": "default", "page": 16}, {"hash": "a355435891596f80e1ea7f3feef6b93a4f82caf62044e09a86e9ce2e02236715", "model": "default", "page": 17}, {"hash": "1d071bfa86d2d97bc7251f5f837deb4b3b72f422b79f76a83457210d40125b2a", "model": "default", "page": 18}, {"hash": "a74e58c9cd8ff01b37e4fe7df505cf495b9c1892db449b93e9076bb71fbd2ef2", "model": "default", "page": 19}, {"hash": "e83cbcc9e475190599ffc079b9266548d97fe0de76a0cb33c9fd50ef25237242", "model": "default", "page": 20}, {"hash": "c52304c295fd7f20396f82ab2bad8f0a085f067afc5692772fb9391ea880bcde", "model": "default", "page": 21}, {"hash": "86497e2615bb82251139e933e8e64153814e4ba46a499195083de8da6f5b89f9", "model": "default", "page": 22}, {"hash": "925398aa64327096c129a383e4bbec2eb083163878227c2d4e3166b44207fc03", "model": "default", "page": 23}, {"hash": "9d4e3d06a5f05410069b2b9486ec876c0e749fc8287c5d2c89940f4c44af96b5", "model": "default", "page": 24}, {"hash": "3956d5e714edf8547117687948339cc61c0727eaea2e2ad3b81e87963c1b73f0", "model": "default", "page": 25}, {"hash": "0bb0e09bd6e39cfc3da30376daecd1ad025ac38727078fd57ed04ab76e6dc8f3", "model": "default", "page": 26}, {"hash": "45005581d511136999fbc537f9465bb0b068b312ece0b9dcffe8f47a2af795fd", "model": "default", "page": 27}, {"hash": "4250019942cd107c8068cdf7c0c40c32f1735b6cd39e83eebd6b88f15f7af945", "model": "default", "page": 28}, {"hash": "d932d7afb19cda22b09acd96262695d080061df5f6f61323bbf3151b44707b0f", "model": "default", "page": 29}, {"hash": "bf6eb386ea506279669df237b54e8d789fa70b12d2830a42649632e5b057343f", "model": "default", "page": 30}, {"hash": "5dea54e30c89afe307a397ed24e083324991a1ddb17b94119f149183c1592cd7", "model": "default", "page": 31}, {"hash": "40fac6dd979f00f24fdcd1f07afad352b233f6926b8dfc8315e47c5304df1009", "model": "default", "page": 32}, {"hash": "40378b24c9b151d146ccd959a701dddfc8d9bac79a2075706c34d22dc185afd1", "model": "default", "page": 33}, {"hash": "935989acb8f1108365160d6428516b2b5cca95e12c75fb33818a33ad20730014", "model": "default", "page": 34}, {"hash": "570c8b11193a5b9e26d2b5a680c137cc6acbbb3c4c8dbfd02e96410f67444fab", "model": "default", "page": 35}, {"hash": "9f21fc6a00cee78376ee9fc31eb93ae5f0cde918f78b361f1ff0d2a1db7dfc01", "model": "default", "page": 36}, {"hash": "0e68f946bcdf7f573d88eed366216b5ba0ed470fcab1a783bcfb894802bf284e", "model": "default", "page": 37}, {"hash": "6ca7e5139b0a1993e0dd093698a9df1c1201091e509ec715d25c871c05a0863e", "model": "default", "page": 38}, {"hash": "c441267b99ad21ec04958ba35dcd465ce775b2c51c03ba67a4cfbb76f9955907", "model": "default", "page": 39}, {"hash": "aa16dbe8fa7fcd0634cf4930aa82a13c4f2d8621e759cec9c3097c15975551d2", "model": "default", "page": 40}, {"hash": "a1994f1ff203311afdc2424fedfad6f0429ccefb39ef62f7107ff75934404093", "model": "default", "page": 41}, {"hash": "92f8bad908b6a17adb727f822d8f77b673f79db90763faa32a648d89de97a0ae", "model": "default", "page": 42}, {"hash": "7cde568961d0f4ab1186b75a8d4f024a56b5065814f2050e7deda89fcb940064", "model": "default", "page": 43}, {"hash": "2d6e9fa06bae3a81449a646b629af6332dfc5780e5787e89a1eb491e60a8b95f", "model": "default", "page": 44}, {"hash": "c3c1468d8e9bbca1ac57cb97b7d6e191e3138cd98c919473a3deab89982d46fa", "model": "default", "page": 45}, {"hash": "3efc7b8e4918efef458011a9d564a062ba25e10f1b1998db385c746404995af2", "model": "default", "page": 46}, {"hash": "c96cd910329a52e1c256c61bafef7551e838ffe55cfc8de60ab8d1770a614d2a", "model": "default", "page": 47}, {"hash": "ed43a8e94b831c81406d263c7e72cb18279ff682bf82ca21d26bc8eaf58939b7", "model": "default", "page": 48}, {"hash": "beaba63670852ef3937e53edfd9c65e8381ccad289cf377ea1819ed4499649a5", "model": "default", "page": 49}, {"hash": "029387a73b937661bd354c45643d77243aae30a9e1dd692c26cadab54b33f630", "model": "default", "page": 50}, {"hash": "96cee9e611cde6da9b28630ae44aa4dddfb372bec1ad1400a4e5e0c641c18e9b", "model": "default", "page": 51}, {"hash": "d5f7a2c44833429eec81845b03adc589ed3fa9dbacfb90cbe3ac733cfb86306c", "model": "default", "page": 52}, {"hash": "0e398142d223dfaf46ad1d76702b89aa208b23fdc9f5fb7aaba1472a9db53b7b", "model": "default", "page": 53}, {"hash": "59664e9cadd6da670dd867311b1c5d9789cd944186e8ff42375b9719ddc43cf9", "model": "default", "page": 54}, {"hash": "5e4e6eaeafaf43a18590db6079f775401f7689d694cda14516fb000f7d85885c", "model": "default", "page": 55}, {"hash": "68496b0fe32a5149c0d6e70fef47ac02544a1db8176b6fa31c2c4bc59b35f933", "model": "default", "page": 56}, {"hash": "ac1bffe2a57f4b9f610dac9745f85bf8029c04e6279bae1fd942b030ca7e3635", "model": "default", "page": 57}, {"hash": "42616e9b91f856e761cf994d852d7c913e50b2fc00ce04e71cd28d51a4c88bf1", "model": "default", "page": 58}, {"hash": "4e9917d93adf25e36c0eeb37beb7881df8d8de40b23fdcde3f8c35e8867b4f7b", "model": "default", "page": 59}, {"hash": "7a484f738feda7e2327ce3bae87e5989b008d1309008f5fc237a681be7b4780c", "model": "default", "page": 60}, {"hash": "2957be6c48ca15c71ae2d63191e3ec999a65771e444c197828a2efe54aad7dee", "model": "default", "page": 61}, {"hash": "81d885ff0652b16f490f2bdf49bf5b2f85bdea4ea7dc85f98de238b437812522", "model": "default", "page": 62}, {"hash": "c0a9752603b861a7c13d678d1c89174f140ae5ef1fc4af32a872ae99bd09b494", "model": "default", "page": 63}, {"hash": "9fa129577bad65520977b6742108edd287a8413c1f002a0fcde9e8d4649e5ca3", "model": "default", "page": 64}, {"hash": "720722b50e586615b5a55451ec49b89048aecbb7450b7bf952ab7b8cab856b63", "model": "default", "page": 65}, {"hash": "91c76d552d29f2d09c34608319dd7729bd1309ccfadd56f22a00d25e8bbce771", "model": "default", "page": 66}, {"hash": "d9a6a973665fd160fb9cf52d6444cd4be6bf5a977666b625f58858ba507b0ee2", "model": "default", "page": 67}, {"hash": "dcc11d3809231dfdbe15f28126c3c6c7016f0d239c48829860133e645f0b4e9e", "model": "default", "page": 68}, {"hash": "18f5746455a39ff66f0d83bf5dcc45151e5313ccf038da38b25195a135445d23", "model": "default", "page": 69}, {"hash": "6f150521a19ebcc1dc711a861d26a1447ee33c01d770b6e985ed23ac4c3bce0b", "model": "default", "page": 70}, {"hash": "2675ed680861667ca9a8eb01fffa6b1ffc5c682d1217a7ee211ee1a14f066301", "model": "default", "page": 71}, {"hash": "cc1b3ad555bc13b0266cc1dd1646f6703b96043a17865254191fb28200897100", "model": "default", "page": 72}, {"hash": "d69dc0543126dbc6d00e1e8ce512bbf99efcda00f45cae9ab93877fc9e833308", "model": "default", "page": 73}, {"hash": "3afbdd3081b903b7941e16a1b3e0feebb23b70fa6a850e3b1119172763263fdb", "model": "default", "page": 74}, {"hash": "9ab6f9e4fd7c147650dbf4b3226a4805d3e3a86af0be0496be4cbd7eb2fe38dc", "model": "default", "page": 75}, {"hash": "3cd1d3fe8ed3a77aeaf1b68c9faa81fdc1209f44b20dd695826bfb009497af91", "model": "default", "page": 76}, {"hash": "3e0d46cb61ec6ec6ba1aa5f21e61d8988b7c531c3928c1cfa2ea5a35c5f7556f", "model": "default", "page": 77}, {"hash": "1d2d26c6366591fa7103e6920121f20b7d47e252f8e5598bc9b0d10d88b0a876", "model": "default", "page": 78}, {"hash": "6b74896cf6d9d79d6eea588138972973314a1e883e4a92eb39533e096e5fea4c", "model": "default", "page": 79}, {"hash": "2b53410a79b04ddd9d95ca46742e1916b631d56c91e67426449a2f48303233c9", "model": "default", "page": 80}, {"hash": "1cad2f44f63e2c43c0950ba8863f3a3d0f2f4afa1ae6f9ca2ceb992a34061d98", "model": "default", "page": 81}, {"hash": "1fd53dcb8bd415d94cbebe26f4938b10551f29603658e5d92b9932d2179878ba", "model": "default", "page": 82}, {"hash": "4ef9b11fb0f67f1227d7241f38a68b1e7d12cccb90802424b6fc139e84e73241", "model": "default", "page": 83}, {"hash": "1c2ea11640d6d0298f383f42acc541cee1d082453dc6c201fbd0dfe2c3583a6d", "model": "default", "page": 84}, {"hash": "fe89905acb289f8126f56f0fa57b0032cf459757a285a28e18a4fa79d0f37ff5", "model": "default", "page": 85}, {"hash": "897bc2fcbbd0147b2ad32d7130836346100dd1f483bb904be454bddee79032d3", "model": "default", "page": 86}, {"hash": "c8e638b82bad37d6d6528852ca8f58d16aa6de3ae113f9f59cc061591bbe36d4", "model": "default", "page": 87}, {"hash": "c8b4dcf9ac58518dfd7a0030612750ef310992ecfa1352cc501a3183eddc63ac", "model": "default", "page": 88}, {"hash": "311e4dab810a715c0dd964b03c57ef59105b844638789454a5a31285bb20b6c5", "model": "default", "page": 89}, {"hash": "bcc127d2a49aaeb213cddec0bef6623f19a01d5ea42b6f7495b4f803405c42f6", "model": "default", "page": 90}, {"hash": "bb0ab5360776e0488e57ac48e39d6e0df6200c2570723dcb807ad3f679c09534", "model": "default", "page": 91}, {"hash": "6fd7cdacf0d19eda989b99c3b1e02ef6d6643dbc6cfa6f10037bd0ebb7cd10b5", "model": "default", "page": 92}, {"hash": "d33f0c4ae60d66663fa25b1f7675c11437badaa8a8fa7e51daeebc6141df12ed", "model": "default", "page": 93}, {"hash": "315310a543a8ecc45c434d0e0b8aa54c6566d53d61acb74820a6649e583f9cb2", "model": "default", "page": 94}, {"hash": "38d412966dfe997ab9448d2df046448e5ebbedd2531b8527bd744c8bb5440508", "model": "default", "page": 95}, {"hash": "08d37d1668223a1a7194cf811cd594cfe30e422dd1695df02a8b73a7b735084b", "model": "default", "page": 96}, {"hash": "31d9ea5f81342dbfdc72492243a2e7f0aa9817d84d61eab0181aeaa71d75d7f5", "model": "default", "page": 97}, {"hash": "1cb53ff64bc87e1939f8b45a89a00a6267a02e718ec0c634cf7e20936ffdd4f2", "model": "default", "page": 98}, {"hash": "1245402b982e1a9d1065ac0c0cad30336aa14ecdc2cb3ef4a5c36bc55e9bbd10", "model": "default", "page": 99}, {"hash": "c38f21714819257f54186f075bf6b9446113e03dd6d40e5fd1319fd5cd3c359c", "model": "default", "page": 100}, {"hash": "9bb82caef77080aa11554e67ab1f214e5cf5e8fe2415663d128ba541cf314d5b", "model": "default", "page": 101}, {"hash": "714f390df026d13c65dea02894cf3d91496fd2ae3a94073d90f7714df79d47ee", "model": "default", "page": 102}, {"hash": "f19f8a6e418fdf2a42d8ede7c788f9f8cf33b907e3bb606e9c829320dff3bb5f", "model": "default", "page": 103}, {"hash": "2b15ecb09a734a16ed9804314a6cc9f03a12af63a904fac62a97ea21b1d2ecef", "model": "default", "page": 104}, {"hash": "8b15d46f01007cf63e5bad57b8cd889275c11e6b58bebe48ffec8842d67e7277", "model": "default", "page": 105}, {"hash": "f20a188209524e8fd1692faa3d3450cd075bb45f2962693371867cf166456dc1", "model": "default", "page": 106}, {"hash": "2d4dbf9c96c18bffaeb3b1bd321acea187066e968dd034c585a81a547f4c93c1", "model": "default", "page": 107}, {"hash": "0ef40f53d56676acaf1aef17676d06262391f04c8277eb1ba32ab7ca5d97e875", "model": "default", "page": 108}, {"hash": "25dbff770b7e10a2a2e2668b2f2977d99ed53ed37d3390e1f89d9245abf83e72", "model": "default", "page": 109}, {"hash": "2572c0b17f240729b504355e11e0d2009a92925a1faaa7b66aea649dc59d7905", "model": "default", "page": 110}, {"hash": "a3e79679ca89ec169e9967808ff8b3f9c2c2db25c113cb68c3f3a993eef15408", "model": "default", "page": 111}, {"hash": "5a47310eb886fad70101ea30ef05dee49cbda1d8a7e2446c3c61b66b3f634039", "model": "default", "page": 112}, {"hash": "992b747ebf8d366fcc11d36599c33ed004584f000855942db59e5a30dd625c7c", "model": "default", "page": 113}, {"hash": "f0bb099090288d2d8c2dad45a22598a924b5c8c3b739206496022a8985d56e25", "model": "default", "page": 114}, {"hash": "5d4e2ca3c369a87ae1732a86f0553fe650005db4637a792963f02fee28a3f1dd", "model": "default", "page": 115}, {"hash": "d23e9d367ce0fa476a6c89009c6fc6c8dd8e15dac6c21b1457a87c8ea89fc6ab", "model": "default", "page": 116}, {"hash": "2ed8bcad41539c0196738efdced854e4c0c11736a062c2bb382517307308315f", "model": "default", "page": 117}, {"hash": "a6d6fd7589a6dddaea1ae0ee683f34ba67d229ad1489d43cd55ab4bfa0a09e48", "model": "default", "page": 118}, {"hash": "4373bdfba2b9cb9f431054a081bcdbb9fde02a2a7c555237105645fc7c4300c6", "model": "default", "page": 119}, {"hash": "b9ba9a2d9c6e8fae2ae668710eb75f4e32a1debfca93371c7d2b12c849bd22da", "model": "default", "page": 120}, {"hash": "f0ac55799e80466c2f68c00232e96f16c893b304c5af92380071564bfd79cc2f", "model": "default", "page": 121}, {"hash": "a619cca5375467d6cbf87c25836da41e5a09dcab342c685b34539dd82fe86989", "model": "default", "page": 122}, {"hash": "d5eb13189c1badbc8317352c3077a84871640f1c42ba8d544f2b66e9788940b4", "model": "default", "page": 123}, {"hash": "5328248231376143041b9f94792b736e39d597c55126949b59362f6464ea0a04", "model": "default", "page": 124}, {"hash": "5201845b41de7b7c02c15934aa48093d9c3b7dd783a32f1f6887d16ab27736fd", "model": "default", "page": 125}, {"hash": "53ef8bd7beea5d3619cc02586077a54911c327d5b912872da834d7e26cbddda7", "model": "default", "page": 126}, {"hash": "eb5a30dbe63c79925f80db77000a9ae325904111ec3a76d12f0eabe9ea8184b5", "model": "default", "page": 127}, {"hash": "ea0c7446fc6d2d362e73d4581e7b8ad4608d1a569eaf7728b2565e9a62bfacc2", "model": "default", "page": 128}, {"hash": "ce7040d1ddf6c4ad312a07c56ce385cc338cb6dad98a350a3145fa651df24e10", "model": "default", "page": 129}, {"hash": "a59661e9111d2f306b39d51a1d1c2b60fafa5a0053a15e5c4df080974b4b9c8e", "model": "default", "page": 130}, {"hash": "e0eebbd57c73414b07cd40507f8b0dc3e30b7621a4da103a1b11b98178d614da", "model": "default", "page": 131}, {"hash": "663d5c537942f854d04a288e7cddc273cb931a1671b07345cf6fbd87593e6960", "model": "default", "page": 132}, {"hash": "ee15d566c88e74395f5c9cf500a25235527c226a22ac85bd940113a29690fcd3", "model": "default", "page": 133}, {"hash": "16dcf411e2a595080c73aa2c3aac658c7ea34947642e9f5d74b30637a8232ba0", "model": "default", "page": 134}, {"hash": "d06b834379d4d7edede6ad45cab9324d8ed03f6553a6ace9eef8ee2911517eae", "model": "default", "page": 135}, {"hash": "f39abd05ea9ae74cdd31f3fe7fc2cafb94364c90ff8f85b38fd763e0b4f00492", "model": "default", "page": 136}, {"hash": "c8cc8d0266caeb8d3547582e443238d020cc2b89b9b0a27881fa53a2d53eb373", "model": "default", "page": 137}, {"hash": "5df7c7769a47c31ede50376223cd8c64a630f146185eabfd69e6def4904d11e9", "model": "default", "page": 138}, {"hash": "752a8ff175ffefd5467eb28072d1ae016e4f2d121a42de192874c1314d8782af", "model": "default", "page": 139}, {"hash": "80196ef5402921f88f9a620eecc70cd40660a88bc53f0d7b41932ef750af8cf8", "model": "default", "page": 140}, {"hash": "e0675b1f0bfe007f57df25c89b6606a7fb711a9a2aea0b6ab3ed7f0c344938d9", "model": "default", "page": 141}, {"hash": "34c60aca3232bf01b5bcc0d4f745ecba5742a056e7cd56e78e733d27165319f5", "model": "default", "page": 142}, {"hash": "8add7158d438c17581bf11a58d377832b87438adddd357fc1df9627a01bb050c", "model": "default", "page": 143}, {"hash": "c6bfbf013724102c875b7177a50d9eeebd48325dc2c1ff163e018a5d86b4b638", "model": "default", "page": 144}, {"hash": "6272edb80b7baf8c345cdc69fd8b613712da5cca430baeee8b2bf74383b20940", "model": "default", "page": 145}, {"hash": "637ac3e09c925390e82504f989601641999e308491f5cd0cd8db2a22021a5412", "model": "default", "page": 146}]}, "main-text": [{"prov": [{"bbox": [287.82000732421875, 741.251953125, 418.83355712890625, 763.4519653320312], "page": 1, "span": [0, 11], "__ref_s3_data": null}], "text": "Front cover", "type": "paragraph", "name": "Text", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/0"}, {"prov": [{"bbox": [35.68840408325195, 625.594482421875, 584.6428833007812, 709.605712890625], "page": 1, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [35.0073127746582, 466.4394226074219, 216.00064086914062, 497.2061767578125], "page": 1, "span": [0, 40], "__ref_s3_data": null}], "text": "Implement roles and separation of duties", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [34.56448745727539, 412.4388732910156, 202.45404052734375, 443.0459289550781], "page": 1, "span": [0, 40], "__ref_s3_data": null}], "text": "Leverage row permissions on the database", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [35.171409606933594, 358.4383239746094, 195.27529907226562, 389.3459167480469], "page": 1, "span": [0, 40], "__ref_s3_data": null}], "text": "Protect columns by defining column masks", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [36.894657135009766, 26.895000457763672, 164.45849609375, 42.1337890625], "page": 1, "span": [0, 17], "__ref_s3_data": null}], "text": "ibm.com /redbooks", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [497.0279846191406, 92.828369140625, 581.8246459960938, 218.1163330078125], "page": 1, "span": [0, 115], "__ref_s3_data": null}], "text": "Jim Bainbridge Hernando Bedoya Rob Bestgen Mike Cain Dan Cruikshank Jim Denton Doug Mack Tom McKinley Kent Milligan", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [314.70001220703125, 18.227041244506836, 580.52001953125, 80.49143981933594], "page": 1, "span": [0, 8], "__ref_s3_data": null}], "text": "Redpaper", "type": "paragraph", "name": "Text", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/1"}, {"prov": [{"bbox": [192.0, 706.8116455078125, 468.1595153808594, 721.0047607421875], "page": 3, "span": [0, 44], "__ref_s3_data": null}], "text": "International Technical Support Organization", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [191.42994689941406, 659.2655639648438, 551.7711181640625, 688.5792236328125], "page": 3, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [191.8452911376953, 629.265869140625, 290.98956298828125, 642.7902221679688], "page": 3, "span": [0, 13], "__ref_s3_data": null}], "text": "November 2014", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [479.1854553222656, 27.93828010559082, 547.263671875, 38.04693603515625], "page": 3, "span": [0, 12], "__ref_s3_data": null}], "text": "REDP-5110-00", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [70.31981658935547, 680.7681884765625, 511.2250671386719, 703.502685546875], "page": 4, "span": [0, 111], "__ref_s3_data": null}], "text": "Note: Before using this information and the product it supports, read the information in \"Notices\" on page vii.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.49017333984375, 96.25506591796875, 206.09754943847656, 106.751953125], "page": 4, "span": [0, 29], "__ref_s3_data": null}], "text": "First Edition (November 2014)", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [63.900901794433594, 73.747314453125, 422.2424621582031, 84.0731201171875], "page": 4, "span": [0, 80], "__ref_s3_data": null}], "text": "This edition applies to Version 7, Release 2 of IBM i (product number 5770-SS1).", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [63.55229949951172, 45.16082763671875, 426.39117431640625, 54.7935791015625], "page": 4, "span": [0, 82], "__ref_s3_data": null}], "text": "' Copyright International Business Machines Corporation 2014. All rights reserved.", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.10758972167969, 23.57710075378418, 547.2008666992188, 44.3375244140625], "page": 4, "span": [0, 136], "__ref_s3_data": null}], "text": "Note to U.S. Government Users Restricted Rights -- Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.6857681274414, 695.9519653320312, 168.73440551757812, 718.98193359375], "page": 5, "span": [0, 8], "__ref_s3_data": null}], "text": "Contents", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"name": "Table", "type": "table", "$ref": "#/tables/0"}, {"prov": [{"bbox": [63.751060485839844, 27.8984375, 257.24334716796875, 37.30303955078125], "page": 5, "span": [0, 48], "__ref_s3_data": null}], "text": "' Copyright IBM Corp. 2014. All rights reserved.", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [538.3257446289062, 27.93828010559082, 547.25927734375, 37.91693115234375], "page": 5, "span": [0, 3], "__ref_s3_data": null}], "text": "iii", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.4805679321289, 27.93828010559082, 75.64199829101562, 37.88385009765625], "page": 6, "span": [0, 2], "__ref_s3_data": null}], "text": "iv", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [90.44805145263672, 28.0523681640625, 331.7034606933594, 37.39471435546875], "page": 6, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"name": "Table", "type": "table", "$ref": "#/tables/1"}, {"name": "Table", "type": "table", "$ref": "#/tables/2"}, {"prov": [{"bbox": [488.2200012207031, 28.136999130249023, 529.1115112304688, 37.1326904296875], "page": 7, "span": [0, 8], "__ref_s3_data": null}], "text": "Contents", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [540.8323974609375, 27.93828010559082, 547.3976440429688, 37.15127944946289], "page": 7, "span": [0, 1], "__ref_s3_data": null}], "text": "v", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.35196685791016, 27.93828010559082, 75.64199829101562, 37.79052734375], "page": 8, "span": [0, 2], "__ref_s3_data": null}], "text": "vi", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [90.52510833740234, 27.85345458984375, 331.7355651855469, 37.53863525390625], "page": 8, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.80000305175781, 695.9519653320312, 151.5048065185547, 719.0535888671875], "page": 9, "span": [0, 7], "__ref_s3_data": null}], "text": "Notices", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [63.85922622680664, 650.037109375, 413.7007141113281, 660.0452880859375], "page": 9, "span": [0, 78], "__ref_s3_data": null}], "text": "This information was developed for products and services offered in the U.S.A.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.08584594726562, 579.486572265625, 547.235595703125, 640.2033081054688], "page": 9, "span": [0, 625], "__ref_s3_data": null}], "text": "IBM may not offer the products, services, or features discussed in this document in other countries. Consult your local IBM representative for information on the products and services currently available in your area. Any reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, program, or service may be used. Any functionally equivalent product, program, or service that does not infringe any IBM intellectual property right may be used instead. However, it is the user's responsibility to evaluate and verify the operation of any non-IBM product, program, or service.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.23300170898438, 540.159912109375, 547.2992553710938, 570.0869140625], "page": 9, "span": [0, 232], "__ref_s3_data": null}], "text": "IBM may have patents or pending patent applications covering subject matter described in this document. The furnishing of this document does not grant you any license to these patents. You can send license inquiries, in writing, to:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.32848358154297, 529.6168212890625, 489.1996154785156, 540.1092529296875], "page": 9, "span": [0, 92], "__ref_s3_data": null}], "text": "IBM Director of Licensing, IBM Corporation, North Castle Drive, Armonk, NY 10504-1785 U.S.A.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [63.91102600097656, 459.743408203125, 547.1917114257812, 520.1630249023438], "page": 9, "span": [0, 541], "__ref_s3_data": null}], "text": "The following paragraph does not apply to the United Kingdom or any other country where such provisions are inconsistent with local law: INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states do not allow disclaimer of express or implied warranties in certain transactions, therefore, this statement may not apply to you.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [63.85258865356445, 410.14208984375, 547.2783813476562, 449.9327087402344], "page": 9, "span": [0, 345], "__ref_s3_data": null}], "text": "This information could include technical inaccuracies or typographical errors. Changes are periodically made to the information herein; these changes will be incorporated in new editions of the publication. IBM may make improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time without notice.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.01903533935547, 369.8486633300781, 539.7974243164062, 400.0287780761719], "page": 9, "span": [0, 286], "__ref_s3_data": null}], "text": "Any references in this information to non-IBM websites are provided for convenience only and do not in any manner serve as an endorsement of those websites. The materials at those websites are not part of the materials for this IBM product and use of those websites is at your own risk.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.25189208984375, 339.6141662597656, 547.1986694335938, 359.9352111816406], "page": 9, "span": [0, 135], "__ref_s3_data": null}], "text": "IBM may use or distribute any of the information you supply in any way it believes appropriate without incurring any obligation to you.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.00050354003906, 270.11480712890625, 544.1587524414062, 329.7486267089844], "page": 9, "span": [0, 526], "__ref_s3_data": null}], "text": "Any performance data contained herein was determined in a controlled environment. Therefore, the results obtained in other operating environments may vary significantly. Some measurements may have been made on development-level systems and there is no guarantee that these measurements will be the same on generally available systems. Furthermore, some measurements may have been estimated through extrapolation. Actual results may vary. Users of this document should verify the applicable data for their specific environment.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.13472747802734, 219.73095703125, 547.231689453125, 259.93731689453125], "page": 9, "span": [0, 408], "__ref_s3_data": null}], "text": "Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly available sources. IBM has not tested those products and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [63.89973449707031, 169.85992431640625, 545.7865600585938, 209.7525634765625], "page": 9, "span": [0, 359], "__ref_s3_data": null}], "text": "This information contains examples of data and reports used in daily business operations. To illustrate them as completely as possible, the examples include the names of individuals, companies, brands, and products. All of these names are fictitious and any similarity to the names and addresses used by an actual business enterprise is entirely coincidental.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.30471801757812, 150.16415405273438, 172.49951171875, 160.33880615234375], "page": 9, "span": [0, 18], "__ref_s3_data": null}], "text": "COPYRIGHT LICENSE:", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [63.98580551147461, 79.4564208984375, 547.2437744140625, 140.032958984375], "page": 9, "span": [0, 619], "__ref_s3_data": null}], "text": "This information contains sample application programs in source language, which illustrate programming techniques on various operating platforms. You may copy, modify, and distribute these sample programs in any form without payment to IBM, for the purposes of developing, using, marketing or distributing application programs conforming to the application programming interface for the operating platform for which the sample programs are written. These examples have not been thoroughly tested under all conditions. IBM, therefore, cannot guarantee or imply reliability, serviceability, or function of these programs.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [63.6475715637207, 27.83892822265625, 257.24334716796875, 37.2679443359375], "page": 9, "span": [0, 48], "__ref_s3_data": null}], "text": "' Copyright IBM Corp. 2014. All rights reserved.", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [535.3445434570312, 27.93828010559082, 547.250244140625, 37.6517333984375], "page": 9, "span": [0, 3], "__ref_s3_data": null}], "text": "vii", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.09756469726562, 706.0162963867188, 154.14569091796875, 721.870849609375], "page": 10, "span": [0, 10], "__ref_s3_data": null}], "text": "Trademarks", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [64.14087677001953, 629.2591552734375, 547.2604370117188, 689.2691040039062], "page": 10, "span": [0, 591], "__ref_s3_data": null}], "text": "IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines Corporation in the United States, other countries, or both. These and other IBM trademarked terms are marked on their first occurrence in this information with the appropriate symbol (fi or \u2122), indicating US registered or common law trademarks owned by IBM at the time this information was published. Such trademarks may also be registered or common law trademarks in other countries. A current list of IBM trademarks is available on the Web at http://www.ibm.com/legal/copytrade.shtml", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [63.81353759765625, 599.2596435546875, 546.6150512695312, 619.277587890625], "page": 10, "span": [0, 133], "__ref_s3_data": null}], "text": "The following terms are trademarks of the International Business Machines Corporation in the United States, other countries, or both:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [75.01971435546875, 581.1570434570312, 112.14369201660156, 591.0765380859375], "page": 10, "span": [0, 8], "__ref_s3_data": null}], "text": "AS/400fi", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [75.20001220703125, 570.1167602539062, 100.03594970703125, 580.0547485351562], "page": 10, "span": [0, 5], "__ref_s3_data": null}], "text": "DB2fi", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [75.27558898925781, 559.1367797851562, 107.95845794677734, 568.40380859375], "page": 10, "span": [0, 6], "__ref_s3_data": null}], "text": "DRDAfi", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [235.85794067382812, 581.1571044921875, 259.61248779296875, 590.7225341796875], "page": 10, "span": [0, 5], "__ref_s3_data": null}], "text": "IBMfi", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [235.99562072753906, 570.1168212890625, 307.14569091796875, 579.8333129882812], "page": 10, "span": [0, 14], "__ref_s3_data": null}], "text": "Power Systems\u2122", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [236.1086883544922, 559.1368408203125, 283.57794189453125, 568.2393798828125], "page": 10, "span": [0, 10], "__ref_s3_data": null}], "text": "Redbooksfi", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [396.9049377441406, 581.1571655273438, 445.7533874511719, 590.8819580078125], "page": 10, "span": [0, 9], "__ref_s3_data": null}], "text": "Redpaper\u2122", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [397.0493469238281, 569.7461547851562, 464.00567626953125, 579.3828735351562], "page": 10, "span": [0, 26], "__ref_s3_data": null}], "text": "Redbooks (log o) fi System", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [396.6751708984375, 558.4414672851562, 438.42291259765625, 568.2816162109375], "page": 10, "span": [0, 3], "__ref_s3_data": null}], "text": "ifi", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [63.997196197509766, 537.2783203125, 311.9006652832031, 547.1436157226562], "page": 10, "span": [0, 54], "__ref_s3_data": null}], "text": "The following terms are trademarks of other companies:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [63.95560073852539, 507.27880859375, 509.53704833984375, 527.1810302734375], "page": 10, "span": [0, 117], "__ref_s3_data": null}], "text": "Windows, and the Windows logo are trademarks of Microsoft Corporation in the United States, other countries, or both.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.17562103271484, 486.9937438964844, 464.51568603515625, 497.43646240234375], "page": 10, "span": [0, 86], "__ref_s3_data": null}], "text": "Other company, product, or service names may be trademarks or service marks of others.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [63.85106658935547, 26.91827964782715, 81.16200256347656, 36.138671875], "page": 10, "span": [0, 4], "__ref_s3_data": null}], "text": "viii", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [95.8013916015625, 26.6639404296875, 337.0337829589844, 36.20538330078125], "page": 10, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/2"}, {"prov": [{"bbox": [64.80000305175781, 706.416015625, 235.86239624023438, 717.5160522460938], "page": 11, "span": [0, 30], "__ref_s3_data": null}], "text": "DB2 for i Center of Excellence", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [93.67039489746094, 636.66357421875, 233.99972534179688, 654.3631591796875], "page": 11, "span": [0, 52], "__ref_s3_data": null}], "text": "Solution Brief IBM Systems Lab Services and Training", "type": "paragraph", "name": "Text", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/3"}, {"prov": [{"bbox": [144.19781494140625, 454.64495849609375, 188.74681091308594, 464.93798828125], "page": 11, "span": [0, 10], "__ref_s3_data": null}], "text": "Highlights", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [144.4553985595703, 433.3105773925781, 242.87388610839844, 447.962890625], "page": 11, "span": [0, 532], "__ref_s3_data": null}], "text": "- GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [144.40879821777344, 402.7626953125, 259.22869873046875, 425.3538513183594], "page": 11, "span": [0, 876], "__ref_s3_data": null}], "text": "- GLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [144.23313903808594, 379.6138916015625, 249.8356170654297, 394.8355407714844], "page": 11, "span": [0, 672], "__ref_s3_data": null}], "text": "- GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [144.35208129882812, 357.3323669433594, 234.2516326904297, 371.82550048828125], "page": 11, "span": [0, 613], "__ref_s3_data": null}], "text": "- GLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "type": "paragraph", "name": "List-item", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/4"}, {"prov": [{"bbox": [460.8193359375, 646.5781860351562, 506.26177978515625, 653.661376953125], "page": 11, "span": [0, 14], "__ref_s3_data": null}], "text": "Power Services", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [280.07391357421875, 515.3794555664062, 463.8094177246094, 554.2871704101562], "page": 11, "span": [0, 30], "__ref_s3_data": null}], "text": "DB2 for i Center of Excellence", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [279.51953125, 503.36505126953125, 483.7276916503906, 514.842529296875], "page": 11, "span": [0, 49], "__ref_s3_data": null}], "text": "Expert help to achieve your business requirements", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [279.468994140625, 467.1043395996094, 443.375732421875, 476.9213562011719], "page": 11, "span": [0, 37], "__ref_s3_data": null}], "text": "We build confident, satisfied clients", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [279.530517578125, 446.4922790527344, 488.1546630859375, 464.73529052734375], "page": 11, "span": [0, 122], "__ref_s3_data": null}], "text": "No one else has the vast consulting experiences, skills sharing and renown service offerings to do what we can do for you.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [280.0453186035156, 427.2699890136719, 367.8602294921875, 435.4290466308594], "page": 11, "span": [0, 27], "__ref_s3_data": null}], "text": "Because no one else is IBM.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [279.70794677734375, 366.6907958984375, 500.321044921875, 415.73895263671875], "page": 11, "span": [0, 318], "__ref_s3_data": null}], "text": "With combined experiences and direct access to development groups, we're the experts in IBM DB2\u00ae for i. The DB2 for i Center of Excellence (CoE) can help you achieve-perhaps reexamine and exceed-your business requirements and gain more confidence and satisfaction in IBM product data management products and solutions.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [279.6336669921875, 345.1319274902344, 435.1236572265625, 354.8772277832031], "page": 11, "span": [0, 30], "__ref_s3_data": null}], "text": "Who we are, some of what we do", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [279.4736328125, 334.5338134765625, 434.56317138671875, 342.7397766113281], "page": 11, "span": [0, 46], "__ref_s3_data": null}], "text": "Global CoE engagements cover topics including:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [279.74200439453125, 315.4241027832031, 402.1675109863281, 323.6339416503906], "page": 11, "span": [0, 38], "__ref_s3_data": null}], "text": "- r Database performance and scalability", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [279.7657165527344, 305.21771240234375, 424.9964599609375, 313.35101318359375], "page": 11, "span": [0, 44], "__ref_s3_data": null}], "text": "- r Advanced SQL knowledge and skills transfer", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [279.9660339355469, 294.8087158203125, 392.2996520996094, 302.5164489746094], "page": 11, "span": [0, 37], "__ref_s3_data": null}], "text": "- r Business intelligence and analytics", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [279.9432067871094, 284.7392272949219, 339.94354248046875, 292.4297180175781], "page": 11, "span": [0, 15], "__ref_s3_data": null}], "text": "- r DB2 Web Query", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [279.68328857421875, 274.50201416015625, 504.21795654296875, 282.5703125], "page": 11, "span": [0, 72], "__ref_s3_data": null}], "text": "- r Query/400 modernization for better reporting and analysis capabilities", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [279.66998291015625, 263.96942138671875, 423.002197265625, 271.96844482421875], "page": 11, "span": [0, 43], "__ref_s3_data": null}], "text": "- r Database modernization and re-engineering", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [279.7203674316406, 254.12164306640625, 400.07391357421875, 262.03643798828125], "page": 11, "span": [0, 38], "__ref_s3_data": null}], "text": "- r Data-centric architecture and design", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [279.7815856933594, 244.1992645263672, 467.2125549316406, 252.1336669921875], "page": 11, "span": [0, 58], "__ref_s3_data": null}], "text": "- r Extremely large database and overcoming limits to growth", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [279.89080810546875, 234.0165557861328, 382.3631591796875, 241.97698974609375], "page": 11, "span": [0, 30], "__ref_s3_data": null}], "text": "- r ISV education and enablement", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [93.356689453125, 624.11572265625, 193.95431518554688, 633.7283935546875], "page": 12, "span": [0, 19], "__ref_s3_data": null}], "text": "What you can expect", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [93.58877563476562, 614.1285400390625, 283.61541748046875, 621.952392578125], "page": 12, "span": [0, 59], "__ref_s3_data": null}], "text": "Depending on the engagement, our team of consultants offer:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [93.6685562133789, 593.9907836914062, 243.1177520751953, 602.1696166992188], "page": 12, "span": [0, 46], "__ref_s3_data": null}], "text": "- r Briefings, consulting and guidance on demand", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [93.72789001464844, 574.0993041992188, 282.7251281738281, 592.1357421875], "page": 12, "span": [0, 75], "__ref_s3_data": null}], "text": "- r Illumination of the DB2 for i capabilities and leadership to exploit them", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [93.56942749023438, 543.554443359375, 274.4058532714844, 571.7151489257812], "page": 12, "span": [0, 121], "__ref_s3_data": null}], "text": "- r Analysis and remediation of performance and scalability issues caused by inefficient database design and implementation", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [93.60421752929688, 522.5653076171875, 285.813232421875, 541.5523681640625], "page": 12, "span": [0, 97], "__ref_s3_data": null}], "text": "- r Configuration of systems, operating system and products to fully leverage database capabilities", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [93.41441345214844, 499.38623046875, 179.16822814941406, 509.0904541015625], "page": 12, "span": [0, 19], "__ref_s3_data": null}], "text": "Key client benefits", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [93.23255920410156, 438.4472961425781, 282.49176025390625, 503.74200439453125], "page": 12, "span": [0, 316], "__ref_s3_data": null}], "text": "T Gain greater database and application performance within your current environment. Achieve greater productivity in the development and maintenance of database and applications using modern techniques. Architect and design data structures to accommodate and benefit from business analytics (BA) tools and processes.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [93.40412902832031, 416.9537353515625, 192.24819946289062, 426.29229736328125], "page": 12, "span": [0, 20], "__ref_s3_data": null}], "text": "For more information", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [93.551025390625, 386.4068603515625, 274.9092102050781, 415.04736328125], "page": 12, "span": [0, 165], "__ref_s3_data": null}], "text": "Pricing depends on the scope of work. Learn more about the DB2 for i Center of Excellence and other related products and services. Contact stgls@us.ibm.com or visit:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [93.61650085449219, 367.145751953125, 216.61273193359375, 374.6022033691406], "page": 12, "span": [0, 298], "__ref_s3_data": null}], "text": "ibm.com GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "type": "paragraph", "name": "Text", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/5"}, {"prov": [{"bbox": [309.5291748046875, 576.0010375976562, 409.8566589355469, 583.289794921875], "page": 12, "span": [0, 32], "__ref_s3_data": null}], "text": "\u00a9 Copyright IBM Corporation 2013", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [309.4497985839844, 545.79736328125, 361.2178039550781, 568.1546020507812], "page": 12, "span": [0, 42], "__ref_s3_data": null}], "text": "IBM Corporation Route 100 Somers, NY 10589", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [309.4351501464844, 522.8818969726562, 420.7811584472656, 537.5772094726562], "page": 12, "span": [0, 51], "__ref_s3_data": null}], "text": "Produced in the United States of America March 2013", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [309.1927795410156, 471.18280029296875, 505.15802001953125, 516.8470458984375], "page": 12, "span": [0, 367], "__ref_s3_data": null}], "text": "IBM, the IBM logo, ibm.com, DB2 and Power Systems are trademarks of International Business Machines Corp., registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the web at \"Copyright and trademark information\" at www.ibm.com/legal/ copytrade.shtml .", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [309.322998046875, 450.140869140625, 500.2719421386719, 464.77276611328125], "page": 12, "span": [0, 101], "__ref_s3_data": null}], "text": "This document is current as of the initial date of publication and may be changed by IBM at any time.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [309.2567138671875, 436.7710266113281, 494.2681884765625, 444.02313232421875], "page": 12, "span": [0, 71], "__ref_s3_data": null}], "text": "Not all offerings are available in every country in which IBM operates.", "type": "paragraph", "name": "Text", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/6"}, {"prov": [{"bbox": [333.32159423828125, 421.76727294921875, 375.9523010253906, 428.4759826660156], "page": 12, "span": [0, 14], "__ref_s3_data": null}], "text": "Please Recycle", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [446.00567626953125, 118.24281311035156, 504.98651123046875, 125.18218994140625], "page": 12, "span": [0, 16], "__ref_s3_data": null}], "text": "QLS12392-USEN-00", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.80000305175781, 695.9519653320312, 151.46160888671875, 718.8968505859375], "page": 13, "span": [0, 7], "__ref_s3_data": null}], "text": "Preface", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.75503540039062, 590.1392822265625, 547.3082275390625, 660.085693359375], "page": 13, "span": [0, 469], "__ref_s3_data": null}], "text": "This IBMfi Redpaper\u2122 publication provides information about the IBM i 7.2 feature of IBM DB2fi for i Row and Column Access Control (RCAC). It offers a broad description of the function and advantages of controlling access to data in a comprehensive and transparent way. This publication helps you understand the capabilities of RCAC and provides examples of defining, creating, and implementing the row permissions and column masks in a relational database environment.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.94647216796875, 531.8143310546875, 546.4656982421875, 577.9362182617188], "page": 13, "span": [0, 309], "__ref_s3_data": null}], "text": "This paper is intended for database engineers, data-centric application developers, and security officers who want to design and implement RCAC as a part of their data control and governance policy. A solid background in IBM i object level security, DB2 for i relational database concepts, and SQL is assumed.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.71319580078125, 449.8482971191406, 547.2366943359375, 472.1881408691406], "page": 13, "span": [0, 172], "__ref_s3_data": null}], "text": "This paper was produced by the IBM DB2 for i Center of Excellence team in partnership with the International Technical Support Organization (ITSO), Rochester, Minnesota US.", "type": "paragraph", "name": "Text", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/7"}, {"name": "Picture", "type": "figure", "$ref": "#/figures/8"}, {"prov": [{"bbox": [63.724002838134766, 27.89178466796875, 257.24334716796875, 37.29620361328125], "page": 13, "span": [0, 48], "__ref_s3_data": null}], "text": "' Copyright IBM Corp. 2014. All rights reserved.", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [538.058349609375, 27.93828010559082, 547.2503051757812, 37.60198974609375], "page": 13, "span": [0, 2], "__ref_s3_data": null}], "text": "xi", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [262.6522521972656, 275.06854248046875, 541.2507934570312, 417.312744140625], "page": 13, "span": [0, 684], "__ref_s3_data": null}], "text": "Jim Bainbridge is a senior DB2 consultant on the DB2 for i Center of Excellence team in the IBM Lab Services and Training organization. His primary role is training and implementation services for IBM DB2 Web Query for i and business analytics. Jim began his career with IBM 30 years ago in the IBM Rochester Development Lab, where he developed cooperative processing products that paired IBM PCs with IBM S/36 and AS/.400 systems. In the years since, Jim has held numerous technical roles, including independent software vendors technical support on a broad range of IBM technologies and products, and supporting customers in the IBM Executive Briefing Center and IBM Project Office.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [262.4736328125, 111.162841796875, 541.2737426757812, 265.49169921875], "page": 13, "span": [0, 726], "__ref_s3_data": null}], "text": "Hernando Bedoya is a Senior IT Specialist at STG Lab Services and Training in Rochester, Minnesota. He writes extensively and teaches IBM classes worldwide in all areas of DB2 for i. Before joining STG Lab Services, he worked in the ITSO for nine years writing multiple IBM Redbooksfi publications. He also worked for IBM Colombia as an IBM AS/400fi IT Specialist doing presales support for the Andean countries. He has 28 years of experience in the computing field and has taught database classes in Colombian universities. He holds a Master's degree in Computer Science from EAFIT, Colombia. His areas of expertise are database technology, performance, and data warehousing. Hernando can be contacted at hbedoya@us.ibm.com .", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.22550201416016, 488.9364013671875, 125.36660766601562, 504.8105773925781], "page": 13, "span": [0, 7], "__ref_s3_data": null}], "text": "Authors", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [64.18641662597656, 27.93828010559082, 78.4020004272461, 37.57574462890625], "page": 14, "span": [0, 3], "__ref_s3_data": null}], "text": "xii", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.32842254638672, 28.0654296875, 334.4214172363281, 37.28607177734375], "page": 14, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/9"}, {"name": "Picture", "type": "figure", "$ref": "#/figures/10"}, {"name": "Picture", "type": "figure", "$ref": "#/figures/11"}, {"name": "Picture", "type": "figure", "$ref": "#/figures/12"}, {"name": "Picture", "type": "figure", "$ref": "#/figures/13"}, {"prov": [{"bbox": [262.9671630859375, 656.8482666015625, 541.2052612304688, 715.4261474609375], "page": 14, "span": [0, 271], "__ref_s3_data": null}], "text": "Rob Bestgen is a member of the DB2 for i Center of Excellence team helping customers use the capabilities of DB2 for i. In addition, Rob is the chief architect of the DB2 SQL Query Engine (SQE) for DB2 for i and is the product development manager for DB2 Web Query for i.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [262.94354248046875, 457.7811279296875, 541.171630859375, 600.0166015625], "page": 14, "span": [0, 671], "__ref_s3_data": null}], "text": "Mike Cain is a Senior Technical Staff Member within the IBM Systems and Technology Group. He is also the founder and team leader of the DB2 for i Center of Excellence in Rochester, Minnesota US. Before his current position, he worked as an IBM AS/400 Systems Engineer and technical consultant. Before joining IBM in 1988, Mike worked as a System/38 programmer and data processing manager for a property and casualty insurance company. Mike has 26 years of experience with IBM, engaging clients and Business Partners around the world. In addition to assisting clients, he uses his knowledge and experience to influence the IBM solution, development, and support processes.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [262.7120666503906, 341.8028259277344, 541.3219604492188, 447.94219970703125], "page": 14, "span": [0, 494], "__ref_s3_data": null}], "text": "Dan Cruikshank has been an IT Professional since 1972. He has consulted on a number of different project areas since joining IBM Rochester in 1988. Since 1993, Dan was focused primarily on resolving IBM System ifi application and database performance issues at several IBM customer accounts. Since 1998, Dan has been one of the primary instructors for the Database Optimization Workshop. Most recently, Dan is a member of the DB2 for i Center of Excellence team with IBM Rochester Lab Services.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [262.76617431640625, 187.7853546142578, 541.2412719726562, 329.9665832519531], "page": 14, "span": [0, 702], "__ref_s3_data": null}], "text": "Jim Denton is a senior consultant at the IBM DB2 for i Center of Excellence, where his responsibilities include both teaching courses and hands on consulting. Jim specializes in SQL performance, data-centric programming, and database modernization. Jim started his IBM career in 1981 as an S/38 operating system programmer. Before joining the consulting team, his key assignments included 10 years as a systems performance specialist, five years as the lead \"JDE on i\" analyst, three years as a consultant at the IBM Benchmark and Briefing Center in Montpellier France, and a total of 11 years as an operating system developer, including five years designing and implementing enhancements to DB2 for i.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [262.9361877441406, 83.7471923828125, 541.1943969726562, 177.96636962890625], "page": 14, "span": [0, 420], "__ref_s3_data": null}], "text": "Doug Mack is a DB2 for i and Business Intelligence Consultant in the IBM Power Systems\u2122 Lab Services organization. Doug's 30+ year career with IBM spans many roles, including product development, technical sales support, Business Intelligence Sales Specialist, and DB2 for i Product Marketing Manager. Doug is a featured speaker at User Group conferences and meetings, IBM Technical Conferences, and Executive Briefings.", "type": "paragraph", "name": "Text", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/14"}, {"name": "Picture", "type": "figure", "$ref": "#/figures/15"}, {"prov": [{"bbox": [262.7662658691406, 585.0075073242188, 541.1551513671875, 715.326416015625], "page": 15, "span": [0, 608], "__ref_s3_data": null}], "text": "Tom McKinley is an IBM Lab Services Consultant working on DB2 for IBM i in Rochester MN. His main focus is complex query performance that is associated with Business Intelligence running on Very Large Databases. He worked as a developer or performance analyst in the DB area from 1986 until 2006. Some of his major pieces of work include the Symmetric Multiple processing capabilities of DB2 for IBM i and Large Object Data types. In addition, he was on the original team that designed and built the SQL Query Engine. Before his database work, he worked on Licensed Internal Code for System 34 and System 36.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [262.6918029785156, 481.3031005859375, 541.2665405273438, 575.589111328125], "page": 15, "span": [0, 436], "__ref_s3_data": null}], "text": "Kent Milligan is a senior DB2 consultant on the DB2 for i Center of Excellence team within the IBM Lab Services and Training organization. His primary responsibility is helping software developers use the latest DB2 technologies and port applications from other databases to DB2 for i. After graduating from the University of Iowa, Kent spent the first eight years of his IBM career as a member of the DB2 development team in Rochester.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.6240234375, 443.1976013183594, 432.1602478027344, 453.2672119140625], "page": 15, "span": [0, 71], "__ref_s3_data": null}], "text": "Thanks to the following people for their contributions to this project:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.3055877685547, 421.29852294921875, 200.390869140625, 431.54791259765625], "page": 15, "span": [0, 12], "__ref_s3_data": null}], "text": "Debra Landon", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.32855224609375, 408.6701965332031, 439.0932312011719, 419.5627136230469], "page": 15, "span": [0, 62], "__ref_s3_data": null}], "text": "International Technical Support Organization, Rochester Center", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.09214782714844, 375.0718078613281, 457.729736328125, 397.3418884277344], "page": 15, "span": [0, 97], "__ref_s3_data": null}], "text": "Craig Aldrich, Mark Anderson, Theresa Euler, Scott Forstie, Chad Olstad IBM Rochester Development", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.71363067626953, 331.68011474609375, 413.1525573730469, 348.17987060546875], "page": 15, "span": [0, 43], "__ref_s3_data": null}], "text": "Now you can become a published author, too!", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.805419921875, 233.25941467285156, 547.232666015625, 315.3446960449219], "page": 15, "span": [0, 551], "__ref_s3_data": null}], "text": "Here's an opportunity to spotlight your skills, grow your career, and become a published author-all at the same time! Join an ITSO residency project and help write a book in your area of expertise, while honing your experience using leading-edge technologies. Your efforts will help to increase product acceptance and customer satisfaction, as you expand your network of technical contacts and relationships. Residencies run from two to six weeks in length, and you can participate either in person or as a remote resident working from your home base.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.59922790527344, 210.92303466796875, 546.8164672851562, 221.3204345703125], "page": 15, "span": [0, 91], "__ref_s3_data": null}], "text": "Find out more about the residency program, browse the residency index, and apply online at:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.80001831054688, 194.49908447265625, 301.6778259277344, 204.01422119140625], "page": 15, "span": [0, 34], "__ref_s3_data": null}], "text": "ibm.com /redbooks/residencies.html", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.52783966064453, 151.01637268066406, 219.43165588378906, 166.65826416015625], "page": 15, "span": [0, 16], "__ref_s3_data": null}], "text": "Comments welcome", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.9565887451172, 124.1328125, 294.74969482421875, 134.02044677734375], "page": 15, "span": [0, 34], "__ref_s3_data": null}], "text": "Your comments are important to us!", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.8791961669922, 90.2786636352539, 547.25244140625, 112.6141357421875], "page": 15, "span": [0, 152], "__ref_s3_data": null}], "text": "We want our papers to be as helpful as possible. Send us your comments about this paper or other IBM Redbooks publications in one of the following ways:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.62045288085938, 73.23909759521484, 412.55645751953125, 83.194091796875], "page": 15, "span": [0, 72], "__ref_s3_data": null}], "text": "- GLYPH Use the online Contact us review Redbooks form found at:", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.20013427734375, 56.498329162597656, 231.11917114257812, 65.59039306640625], "page": 15, "span": [0, 17], "__ref_s3_data": null}], "text": "ibm.com /redbooks", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [485.1000061035156, 28.136999130249023, 520.88134765625, 37.24951171875], "page": 15, "span": [0, 7], "__ref_s3_data": null}], "text": "Preface", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [532.5994262695312, 27.93828010559082, 547.1934204101562, 37.7366943359375], "page": 15, "span": [0, 4], "__ref_s3_data": null}], "text": "xiii", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.0907974243164, 27.93828010559082, 81.16200256347656, 37.40447998046875], "page": 16, "span": [0, 3], "__ref_s3_data": null}], "text": "xiv", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [95.71053314208984, 28.02490234375, 337.0337829589844, 37.3270263671875], "page": 16, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [135.5431365966797, 710.7161254882812, 310.3739318847656, 721.2905883789062], "page": 16, "span": [0, 50], "__ref_s3_data": null}], "text": "- GLYPH Send your comments in an email to:", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.99362182617188, 694.5873413085938, 246.22007751464844, 704.1723022460938], "page": 16, "span": [0, 19], "__ref_s3_data": null}], "text": "redbooks@us.ibm.com", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.64413452148438, 677.0240478515625, 254.27020263671875, 687.05322265625], "page": 16, "span": [0, 38], "__ref_s3_data": null}], "text": "- GLYPH Mail your comments to:", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.4449005126953, 624.0880126953125, 426.992431640625, 671.0802001953125], "page": 16, "span": [0, 134], "__ref_s3_data": null}], "text": "IBM Corporation, International Technical Support Organization Dept. HYTD Mail Station P099 2455 South Road Poughkeepsie, NY 12601-5400", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.44961547851562, 581.0363159179688, 317.6510925292969, 597.390625], "page": 16, "span": [0, 30], "__ref_s3_data": null}], "text": "Stay connected to IBM Redbooks", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.58946228027344, 554.25830078125, 246.8371124267578, 564.1651611328125], "page": 16, "span": [0, 36], "__ref_s3_data": null}], "text": "- GLYPH Find us on Facebook:", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.674072265625, 537.0848388671875, 326.0977478027344, 547.1090087890625], "page": 16, "span": [0, 35], "__ref_s3_data": null}], "text": "http://www.facebook.com/IBMRedbooks", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.61866760253906, 520.2987060546875, 241.52239990234375, 530.5045166015625], "page": 16, "span": [0, 37], "__ref_s3_data": null}], "text": "- GLYPH Follow us on Twitter:", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.70498657226562, 503.5311279296875, 301.0782165527344, 513.2252197265625], "page": 16, "span": [0, 30], "__ref_s3_data": null}], "text": "http://twitter.com/ibmredbooks", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.6381072998047, 486.2793273925781, 257.426513671875, 496.593017578125], "page": 16, "span": [0, 40], "__ref_s3_data": null}], "text": "- GLYPH Look for us on LinkedIn:", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.5355224609375, 469.3290710449219, 391.0767822265625, 479.2994079589844], "page": 16, "span": [0, 48], "__ref_s3_data": null}], "text": "http://www.linkedin.com/groups?home=&gid=2130806", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.53648376464844, 439.63250732421875, 546.2178955078125, 461.9305419921875], "page": 16, "span": [0, 118], "__ref_s3_data": null}], "text": "- GLYPH Explore new Redbooks publications, residencies, and workshops with the IBM Redbooks weekly newsletter:", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.64300537109375, 423.1323547363281, 451.45623779296875, 433.2305908203125], "page": 16, "span": [0, 60], "__ref_s3_data": null}], "text": "https://www.redbooks.ibm.com/Redbooks.nsf/subscribe?OpenForm", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.8739471435547, 406.300537109375, 429.3480529785156, 416.6739501953125], "page": 16, "span": [0, 76], "__ref_s3_data": null}], "text": "- GLYPH Stay current on recent Redbooks publications with RSS Feeds:", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.6341552734375, 389.47064208984375, 331.0777282714844, 399.0984802246094], "page": 16, "span": [0, 36], "__ref_s3_data": null}], "text": "http://www.redbooks.ibm.com/rss.html", "type": "paragraph", "name": "Text", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/16"}, {"prov": [{"bbox": [81.0, 517.019287109375, 115.13253021240234, 523.457275390625], "page": 17, "span": [0, 10], "__ref_s3_data": null}], "text": "Chapter 1.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [500.3999938964844, 661.8682861328125, 522.6177368164062, 699.3392333984375], "page": 17, "span": [0, 1], "__ref_s3_data": null}], "text": "1", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.68006896972656, 482.1217956542969, 547.3047485351562, 538.7101440429688], "page": 17, "span": [0, 36], "__ref_s3_data": null}], "text": "Securing and protecting IBM DB2 data", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.15219116210938, 361.62640380859375, 547.2540283203125, 444.024658203125], "page": 17, "span": [0, 648], "__ref_s3_data": null}], "text": "Recent news headlines are filled with reports of data breaches and cyber-attacks impacting global businesses of all sizes. The Identity Theft Resource Center$^{1}$ reports that almost 5000 data breaches have occurred since 2005, exposing over 600 million records of data. The financial cost of these data breaches is skyrocketing. Studies from the Ponemon Institute$^{2}$ revealed that the average cost of a data breach increased in 2013 by 15% globally and resulted in a brand equity loss of $9.4 million per attack. The average cost that is incurred for each lost record containing sensitive information increased more than 9% to $145 per record.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.05917358398438, 303.55853271484375, 527.206298828125, 349.8846435546875], "page": 17, "span": [0, 304], "__ref_s3_data": null}], "text": "Businesses must make a serious effort to secure their data and recognize that securing information assets is a cost of doing business. In many parts of the world and in many industries, securing the data is required by law and subject to audits. Data security is no longer an option; it is a requirement.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.5961456298828, 270.1002197265625, 547.1551513671875, 291.9596862792969], "page": 17, "span": [0, 122], "__ref_s3_data": null}], "text": "This chapter describes how you can secure and protect data in DB2 for i. The following topics are covered in this chapter:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.86915588378906, 252.9566650390625, 250.23167419433594, 263.29638671875], "page": 17, "span": [0, 37], "__ref_s3_data": null}], "text": "- GLYPH Security fundamentals", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.742431640625, 240.626708984375, 282.98114013671875, 251.2857666015625], "page": 17, "span": [0, 47], "__ref_s3_data": null}], "text": "- GLYPH Current state of IBM i security", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.86570739746094, 229.06103515625, 264.8818664550781, 239.55108642578125], "page": 17, "span": [0, 43], "__ref_s3_data": null}], "text": "- GLYPH DB2 for i security controls", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.7418975830078, 66.45916748046875, 258.362548828125, 75.71832275390625], "page": 17, "span": [0, 35], "__ref_s3_data": null}], "text": "$^{1 }$http://www.idtheftcenter.org", "type": "footnote", "name": "Footnote", "font": null}, {"prov": [{"bbox": [136.19522094726562, 56.73187255859375, 234.42526245117188, 66.703857421875], "page": 17, "span": [0, 31], "__ref_s3_data": null}], "text": "$^{2 }$http://www.ponemon.org /", "type": "footnote", "name": "Footnote", "font": null}, {"prov": [{"bbox": [63.68400573730469, 27.85699462890625, 257.24334716796875, 37.3408203125], "page": 17, "span": [0, 48], "__ref_s3_data": null}], "text": "' Copyright IBM Corp. 2014. All rights reserved.", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [541.2396240234375, 27.93828010559082, 547.2176513671875, 37.7130126953125], "page": 17, "span": [0, 1], "__ref_s3_data": null}], "text": "1", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.33735656738281, 702.3842163085938, 267.40582275390625, 718.60302734375], "page": 18, "span": [0, 25], "__ref_s3_data": null}], "text": "1.1 Security fundamentals", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.23556518554688, 664.178466796875, 545.0048217773438, 685.97265625], "page": 18, "span": [0, 133], "__ref_s3_data": null}], "text": "Before reviewing database security techniques, there are two fundamental steps in securing information assets that must be described:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.66490173339844, 610.8453369140625, 547.1642456054688, 657.3309326171875], "page": 18, "span": [0, 361], "__ref_s3_data": null}], "text": "- GLYPH First, and most important, is the definition of a company's security policy . Without a security policy, there is no definition of what are acceptable practices for using, accessing, and storing information by who, what, when, where, and how. A security policy should minimally address three things: confidentiality, integrity, and availability.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.2132110595703, 521.4625244140625, 547.2608642578125, 604.0206298828125], "page": 18, "span": [0, 587], "__ref_s3_data": null}], "text": "- The monitoring and assessment of adherence to the security policy determines whether your security strategy is working. Often, IBM security consultants are asked to perform security assessments for companies without regard to the security policy. Although these assessments can be useful for observing how the system is defined and how data is being accessed, they cannot determine the level of security without a security policy. Without a security policy, it really is not an assessment as much as it is a baseline for monitoring the changes in the security settings that are captured.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.1995086669922, 504.9290466308594, 541.9920043945312, 515.2373657226562], "page": 18, "span": [0, 90], "__ref_s3_data": null}], "text": "A security policy is what defines whether the system and its settings are secure (or not).", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.4777374267578, 415.4546203613281, 547.1582641601562, 498.18560791015625], "page": 18, "span": [0, 573], "__ref_s3_data": null}], "text": "- GLYPH The second fundamental in securing data assets is the use of resource security . If implemented properly, resource security prevents data breaches from both internal and external intrusions. Resource security controls are closely tied to the part of the security policy that defines who should have access to what information resources. A hacker might be good enough to get through your company firewalls and sift his way through to your system, but if they do not have explicit access to your database, the hacker cannot compromise your information assets.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.90879821777344, 381.6918640136719, 535.3616943359375, 403.87713623046875], "page": 18, "span": [0, 179], "__ref_s3_data": null}], "text": "With your eyes now open to the importance of securing information assets, the rest of this chapter reviews the methods that are available for securing database resources on IBM i.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.44733428955078, 338.3087158203125, 323.3839111328125, 354.5881042480469], "page": 18, "span": [0, 35], "__ref_s3_data": null}], "text": "1.2 Current state of IBM i security", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.1368408203125, 275.52197265625, 547.3182373046875, 322.23028564453125], "page": 18, "span": [0, 306], "__ref_s3_data": null}], "text": "Because of the inherently secure nature of IBM i, many clients rely on the default system settings to protect their business data that is stored in DB2 for i. In most cases, this means no data protection because the default setting for the Create default public authority (QCRTAUT) system value is *CHANGE.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.79974365234375, 206.1400604248047, 547.284423828125, 264.12274169921875], "page": 18, "span": [0, 405], "__ref_s3_data": null}], "text": "Even more disturbing is that many IBM i clients remain in this state, despite the news headlines and the significant costs that are involved with databases being compromised. This default security configuration makes it quite challenging to implement basic security policies. A tighter implementation is required if you really want to protect one of your company's most valuable assets, which is the data.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.8997802734375, 111.57879638671875, 547.2832641601562, 193.8753662109375], "page": 18, "span": [0, 640], "__ref_s3_data": null}], "text": "Traditionally, IBM i applications have employed menu-based security to counteract this default configuration that gives all users access to the data. The theory is that data is protected by the menu options controlling what database operations that the user can perform. This approach is ineffective, even if the user profile is restricted from running interactive commands. The reason is that in today's connected world there are a multitude of interfaces into the system, from web browsers to PC clients, that bypass application menus. If there are no object-level controls, users of these newer interfaces have an open door to your data.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [63.92394256591797, 27.93828010559082, 72.8219985961914, 37.713134765625], "page": 18, "span": [0, 1], "__ref_s3_data": null}], "text": "2", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [87.81553649902344, 28.03179931640625, 328.7253723144531, 37.31463623046875], "page": 18, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [136.11676025390625, 626.8720092773438, 546.4398193359375, 721.186279296875], "page": 19, "span": [0, 688], "__ref_s3_data": null}], "text": "Some clients using this default configuration have toughened their database security with exit-point solutions from third-party vendors. IBM i exit points allow a user-written program to be called every time that a particular interface (for example, FTP) is used or an event occurs (for example, a profile is created). Security tools that are based on these exit points increase the level of security on a system by locking down interfaces that are not under the control of menu-based or application authority. In addition, exit-point solutions allow clients to implement more granular security controls, such as allowing users access only to the database during certain hours of the day.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.7813262939453, 520.8560791015625, 547.2666015625, 615.1084594726562], "page": 19, "span": [0, 723], "__ref_s3_data": null}], "text": "Although exit-point solutions can provide great benefits, they are not an alternative to object-level control of your databases. Exit-point solutions help secure interfaces, but they do not completely protect the data that is stored in your DB2 objects. Exit points do not exist for every data access interface on the system. Therefore, if an application starts using an unprotected interface, the only thing protecting your data is object-level access control. When your security implementation totally relies on exit points, then it is also important to track any new data interfaces that appear as IBM delivers new releases and products to ensure that your exit-point solution provides coverage for those new interfaces.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.8739471435547, 462.8641662597656, 546.2266235351562, 509.3145446777344], "page": 19, "span": [0, 331], "__ref_s3_data": null}], "text": "An exit-point solution is a good option for databases with security holes that are caused by a reliance on the default security setup or menu-based control. However, your security work should not stop there. Instead, you must continue to work on a complete database security solution by controlling data access at the object level.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.80000305175781, 419.7867126464844, 295.2049255371094, 435.8830261230469], "page": 19, "span": [0, 31], "__ref_s3_data": null}], "text": "1.3 DB2 for i security controls", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.9359893798828, 333.2792053222656, 547.1688842773438, 403.39501953125], "page": 19, "span": [0, 511], "__ref_s3_data": null}], "text": "As described in 1.2, \"Current state of IBM i security\" on page 2, object-level controls on your DB2 objects are a critical success factor in securing your business data. Although database object-level security is a strong security feature, some clients have found that object-level security does not have the granularity that is required to adhere to regulatory or compliance policies. A user that is granted object-level access to a DB2 table has the authority to view all of the rows and values in that table.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.52011108398438, 311.0404052734375, 466.3186340332031, 321.39666748046875], "page": 19, "span": [0, 78], "__ref_s3_data": null}], "text": "As shown in Figure 1-1, it is an all-or-nothing access to the rows of a table.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.93324279785156, 80.60284423828125, 354.8916015625, 89.82525634765625], "page": 19, "span": [0, 55], "__ref_s3_data": null}], "text": "Figure 1-1 All-or-nothing access to the rows of a table", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/17"}, {"prov": [{"bbox": [328.2245788574219, 27.9105224609375, 529.1063232421875, 37.203857421875], "page": 19, "span": [0, 47], "__ref_s3_data": null}], "text": "Chapter 1. Securing and protecting IBM DB2 data", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [540.928466796875, 27.93828010559082, 547.2176513671875, 37.6522216796875], "page": 19, "span": [0, 1], "__ref_s3_data": null}], "text": "3", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.09014129638672, 27.93828010559082, 72.8219985961914, 37.92034912109375], "page": 20, "span": [0, 1], "__ref_s3_data": null}], "text": "4", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [87.84030151367188, 28.01824951171875, 328.7253723144531, 37.3697509765625], "page": 20, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [135.9996337890625, 638.906982421875, 544.3033447265625, 721.3639526367188], "page": 20, "span": [0, 589], "__ref_s3_data": null}], "text": "Many businesses are trying to limit data access to a need-to-know basis. This security goal means that users should be given access only to the minimum set of data that is required to perform their job. Often, users with object-level access are given access to row and column values that are beyond what their business task requires because that object-level security provides an all-or-nothing solution. For example, object-level controls allow a manager to access data about all employees. Most security policies limit a manager to accessing data only for the employees that they manage.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.4480209350586, 606.2725830078125, 301.4690246582031, 619.7714233398438], "page": 20, "span": [0, 37], "__ref_s3_data": null}], "text": "1.3.1 Existing row and column control", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.77957153320312, 534.8919677734375, 541.5673828125, 593.479248046875], "page": 20, "span": [0, 377], "__ref_s3_data": null}], "text": "Some IBM i clients have tried augmenting the all-or-nothing object-level security with SQL views (or logical files) and application logic, as shown in Figure 1-2. However, application-based logic is easy to bypass with all of the different data access interfaces that are provided by the IBM i operating system, such as Open Database Connectivity (ODBC) and System i Navigator.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.9119110107422, 477.10101318359375, 547.4407958984375, 523.368896484375], "page": 20, "span": [0, 340], "__ref_s3_data": null}], "text": "Using SQL views to limit access to a subset of the data in a table also has its own set of challenges. First, there is the complexity of managing all of the SQL view objects that are used for securing data access. Second, scaling a view-based security solution can be difficult as the amount of data grows and the number of users increases.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.0379638671875, 430.80120849609375, 547.232666015625, 465.39056396484375], "page": 20, "span": [0, 247], "__ref_s3_data": null}], "text": "Even if you are willing to live with these performance and management issues, a user with *ALLOBJ access still can directly access all of the data in the underlying DB2 table and easily bypass the security controls that are built into an SQL view.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.23910522460938, 91.83807373046875, 317.073486328125, 101.11260986328125], "page": 20, "span": [0, 43], "__ref_s3_data": null}], "text": "Figure 1-2 Existing row and column controls", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/18"}, {"prov": [{"bbox": [64.52648162841797, 708.67724609375, 394.39227294921875, 721.6258544921875], "page": 21, "span": [0, 49], "__ref_s3_data": null}], "text": "1.3.2 New controls: Row and Column Access Control", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.02708435058594, 648.8173828125, 539.9359130859375, 695.4644165039062], "page": 21, "span": [0, 270], "__ref_s3_data": null}], "text": "Based on the challenges that are associated with the existing technology available for controlling row and column access at a more granular level, IBM delivered new security support in the IBM i 7.2 release; this support is known as Row and Column Access Control (RCAC).", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.92579650878906, 566.8125, 542.2587280273438, 637.4297485351562], "page": 21, "span": [0, 514], "__ref_s3_data": null}], "text": "The new DB2 RCAC support provides a method for controlling data access across all interfaces and all types of users with a data-centric solution. Moving security processing to the database layer makes it easier to build controls that meet your compliance policies. The RCAC support provides an additional layer of security that complements object-level authorizations to limit data access to a need-to-know basis. Therefore, it is critical that you first have a sound object-level security implementation in place.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [328.2296447753906, 27.9176025390625, 529.1063232421875, 37.23065185546875], "page": 21, "span": [0, 47], "__ref_s3_data": null}], "text": "Chapter 1. Securing and protecting IBM DB2 data", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [541.1834716796875, 27.93828010559082, 547.2176513671875, 37.7110595703125], "page": 21, "span": [0, 1], "__ref_s3_data": null}], "text": "5", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.46890258789062, 27.93828010559082, 72.8219985961914, 37.845947265625], "page": 22, "span": [0, 1], "__ref_s3_data": null}], "text": "6", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [87.84030151367188, 27.92205810546875, 328.78973388671875, 37.47662353515625], "page": 22, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/19"}, {"prov": [{"bbox": [81.0, 517.019287109375, 115.13253021240234, 523.457275390625], "page": 23, "span": [0, 10], "__ref_s3_data": null}], "text": "Chapter 2.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [500.3999938964844, 661.8682861328125, 522.6177368164062, 698.85400390625], "page": 23, "span": [0, 1], "__ref_s3_data": null}], "text": "2", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.8000030517578, 512.5958862304688, 515.1311645507812, 538.9207763671875], "page": 23, "span": [0, 30], "__ref_s3_data": null}], "text": "Roles and separation of duties", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.93650817871094, 440.9854431152344, 547.3323974609375, 475.45037841796875], "page": 23, "span": [0, 266], "__ref_s3_data": null}], "text": "One of the primary objectives of row and column access control (RCAC) is to create data security policies that control and govern user access to data and limit the data access of DB2 designers and administrators to only the minimum that is required to do their jobs.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.88510131835938, 383.07965087890625, 547.2574462890625, 429.3551330566406], "page": 23, "span": [0, 290], "__ref_s3_data": null}], "text": "To accomplish these tasks, RCAC engineers devised a set of functional roles that, as a group, implement effectively data access requirements and also limit the span of control of each role so that each role is given only the authorities that are needed to perform its specific set of tasks.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.7690887451172, 349.0602722167969, 547.2655029296875, 371.40936279296875], "page": 23, "span": [0, 115], "__ref_s3_data": null}], "text": "This chapter describes the concepts of roles and separation of duties on DB2 for i and covers the following topics:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.8439483642578, 332.0804748535156, 176.71270751953125, 342.1582946777344], "page": 23, "span": [0, 21], "__ref_s3_data": null}], "text": "- GLYPH Roles", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.7147674560547, 319.5862121582031, 239.9706268310547, 329.8328552246094], "page": 23, "span": [0, 36], "__ref_s3_data": null}], "text": "- GLYPH Separation of duties", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [63.7032470703125, 27.83447265625, 257.24334716796875, 37.3309326171875], "page": 23, "span": [0, 48], "__ref_s3_data": null}], "text": "' Copyright IBM Corp. 2014. All rights reserved.", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [540.8427734375, 27.93828010559082, 547.2176513671875, 37.8079833984375], "page": 23, "span": [0, 1], "__ref_s3_data": null}], "text": "7", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.00420379638672, 702.8963012695312, 139.42576599121094, 718.5374755859375], "page": 24, "span": [0, 9], "__ref_s3_data": null}], "text": "2.1 Roles", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.84288024902344, 615.6285400390625, 547.2965087890625, 686.0313720703125], "page": 24, "span": [0, 543], "__ref_s3_data": null}], "text": "Traditionally, data access roles are defined in a binary way, where access to the data is either not permitted or access to the data is permitted. A full access capability can also be instantiated by the *ALLOBJ special authority, either explicitly or implicitly, for the security officer. If you hold the role of security officer, or have all *ALLOBJ special authority, you have access to all the data, with no exceptions. Unfortunately, this might not meet the organization's requirements for limiting access to data or separation of duties.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.82821655273438, 569.6303100585938, 547.2587890625, 604.0189819335938], "page": 24, "span": [0, 282], "__ref_s3_data": null}], "text": "To assist with defining roles and the separation of duties with appropriate authority, IBM i provides function usage IDs . A function usage ID implements granular security controls rather than granting users powerful special authorities, such as all object, job control, or service.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.2572479248047, 536.1390380859375, 547.3123779296875, 557.9967651367188], "page": 24, "span": [0, 95], "__ref_s3_data": null}], "text": "Roles are divided among the following DB2 functions and their corresponding function usage IDs:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.83023071289062, 519.1592407226562, 474.0260009765625, 529.70947265625], "page": 24, "span": [0, 77], "__ref_s3_data": null}], "text": "- GLYPH DDM and IBM DRDAfi application server access: QIBM_DB_DDMDRDA", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.586669921875, 507.1470642089844, 376.04473876953125, 517.5133056640625], "page": 24, "span": [0, 62], "__ref_s3_data": null}], "text": "- GLYPH Toolbox application server access: QIBM_DB_ZDA", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.70936584472656, 495.15960693359375, 391.5639953613281, 505.62322998046875], "page": 24, "span": [0, 63], "__ref_s3_data": null}], "text": "- GLYPH Database Administrator function: QIBM_DB_SQLADM", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.47157287597656, 483.1597900390625, 384.0774841308594, 493.7165832519531], "page": 24, "span": [0, 61], "__ref_s3_data": null}], "text": "- GLYPH Database Information function: QIBM_DB_SYSMON", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.6302947998047, 471.05413818359375, 385.5570983886719, 481.74273681640625], "page": 24, "span": [0, 63], "__ref_s3_data": null}], "text": "- GLYPH Security Administrator function: QIBM_DB_SECADM", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [63.82975387573242, 438.3501281738281, 501.0556335449219, 451.798095703125], "page": 24, "span": [0, 61], "__ref_s3_data": null}], "text": "2.1.1 DDM and DRDA application server access: QIBM_DB_DDMDRDA", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.88975524902344, 366.8034362792969, 547.2295532226562, 425.7085266113281], "page": 24, "span": [0, 392], "__ref_s3_data": null}], "text": "The QIBM_DB_DDMDRDA function usage ID restricts access to the DDM and DRDA application server (QRWTSRVR). This function usage ID provides an easy alternative (rather than writing an exit program) to control access to DDM and DRDA from the server side. The function usage IDs ship with the default authority of *ALLOWED. The security officer can easily deny access to specific users or groups.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.7061767578125, 333.08551025390625, 534.9490356445312, 355.357421875], "page": 24, "span": [0, 121], "__ref_s3_data": null}], "text": "This is an alternative to a User Exit Program approach. No coding is required, it is easy to change, and it is auditable.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [63.88609313964844, 300.5189514160156, 413.2720031738281, 313.75762939453125], "page": 24, "span": [0, 52], "__ref_s3_data": null}], "text": "2.1.2 Toolbox application server access: QIBM_DB_ZDA", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.62423706054688, 229.11941528320312, 543.151123046875, 287.4773864746094], "page": 24, "span": [0, 350], "__ref_s3_data": null}], "text": "The QIBM_DB_ZDA function usage ID restricts access to the optimized server that handles DB2 requests from clients (QZDASOINIT and QZDASSINIT). Server access is used by the ODBC, OLE DB, and .NET providers that ship with IBM i Access for Windows and JDBC Toolbox, Run SQL scripts, and other parts of System i Navigator and Navigator for i Web console.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.72520446777344, 170.85626220703125, 546.2078247070312, 217.471435546875], "page": 24, "span": [0, 289], "__ref_s3_data": null}], "text": "This function usage ID provides an easy alternative (rather than writing an exit program) to control access to these functions from the server side. The function usage IDs ship with the default authority of *ALLOWED. The security officer can easily deny access to specific users or groups.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.83445739746094, 137.03271484375, 534.9490966796875, 159.5340576171875], "page": 24, "span": [0, 121], "__ref_s3_data": null}], "text": "This is an alternative to a User Exit Program approach. No coding is required, it is easy to change, and it is auditable.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.24457550048828, 27.93828010559082, 72.8219985961914, 37.793212890625], "page": 24, "span": [0, 1], "__ref_s3_data": null}], "text": "8", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [87.8071517944336, 28.02972412109375, 328.7253723144531, 37.302001953125], "page": 24, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.0216293334961, 708.67724609375, 433.47052001953125, 721.53125], "page": 25, "span": [0, 53], "__ref_s3_data": null}], "text": "2.1.3 Database Administrator function: QIBM_DB_SQLADM", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.77142333984375, 636.6917114257812, 547.0184326171875, 695.2532958984375], "page": 25, "span": [0, 363], "__ref_s3_data": null}], "text": "The Database Administrator function (QIBM_DB_SQLADM) is needed whenever a user is analyzing and viewing SQL performance data. Some of the more common database administrator functions include displaying statements from the SQL Plan Cache, analyzing SQL Performance Monitors and SQL Plan Cache Snapshots, and displaying the SQL details of a job other than your own.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.78330993652344, 591.0904541015625, 547.3245239257812, 625.3063354492188], "page": 25, "span": [0, 274], "__ref_s3_data": null}], "text": "The Database Administrator function provides an alternative to granting *JOBCTL, but simply having the Database Administrator authorization does not carry with it all the needed object authorities for every administration task. The default behavior is to deny authorization.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.86964416503906, 532.985595703125, 541.2985229492188, 579.1475830078125], "page": 25, "span": [0, 352], "__ref_s3_data": null}], "text": "To perform database administrator tasks that are not related to performance analysis, you must refer to the details of the task to determine its specific authorization requirements. For example, to allow a database administrator to reorganize a table, the DBA must have additional object authorities to the table that are not covered by QIBM_DB_SQLADM.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.13877868652344, 505.5359802246094, 392.7084045410156, 517.5679931640625], "page": 25, "span": [0, 38], "__ref_s3_data": null}], "text": "Granting QIBM_DB_SQLADM function usage", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.1097412109375, 480.2784729003906, 532.0657348632812, 502.6596374511719], "page": 25, "span": [0, 132], "__ref_s3_data": null}], "text": "Only the security administrator (*SECADM) is allowed to change the list of users that can perform Database Administration functions.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.01083374023438, 447.6772766113281, 419.47637939453125, 460.90020751953125], "page": 25, "span": [0, 51], "__ref_s3_data": null}], "text": "2.1.4 Database Information function: QIBM_DB_SYSMON", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.8494873046875, 400.29864501953125, 547.1928100585938, 434.6439514160156], "page": 25, "span": [0, 190], "__ref_s3_data": null}], "text": "The Database Information function (QIBM_DB_SYSMON) provides much less authority than Database Administrator function. Its primary use allows a user to examine high-level database properties.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.19979858398438, 354.2794494628906, 547.2994384765625, 388.66790771484375], "page": 25, "span": [0, 229], "__ref_s3_data": null}], "text": "For example, a user that does not have *JOBCTL or QIBM_DB_SQLADM can still view the SQL Plan Cache properties if granted authority to QIBM_DB_SYSMON. Without granting this authority, the default behavior is to deny authorization.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.31793212890625, 326.24853515625, 392.7384033203125, 338.39239501953125], "page": 25, "span": [0, 38], "__ref_s3_data": null}], "text": "Granting QIBM_DB_SYSMON function usage", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.06344604492188, 301.23870849609375, 532.0657348632812, 323.30474853515625], "page": 25, "span": [0, 129], "__ref_s3_data": null}], "text": "Only the security administrator (*SECADM) is allowed to change the list of users that can perform Database Information functions.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.14019775390625, 268.63739013671875, 427.0501403808594, 281.6142272949219], "page": 25, "span": [0, 53], "__ref_s3_data": null}], "text": "2.1.5 Security Administrator function: QIBM_DB_SECADM", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.73634338378906, 209.25897216796875, 538.3322143554688, 255.36358642578125], "page": 25, "span": [0, 290], "__ref_s3_data": null}], "text": "The Security Administrator function (QIBM_DB_SECADM) grants authorities, revokes authorities, changes ownership, or changes the primary group without giving access to the object or, in the case of a database table, to the data that is in the table or allowing other operations on the table.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.88818359375, 139.040283203125, 547.2896118164062, 197.62176513671875], "page": 25, "span": [0, 380], "__ref_s3_data": null}], "text": "Only those users with the QIBM_DB_SECADM function can administer and manage RCAC rules. RCAC can be used to prevent even users with *ALLOBJ authority from freely accessing all the data in a protected database. These users are excluded from data access unless they are specifically authorized by RCAC. Without granting this authority, the default behavior is to deny authorization.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.17408752441406, 111.33062744140625, 392.72161865234375, 123.54425048828125], "page": 25, "span": [0, 38], "__ref_s3_data": null}], "text": "Granting QIBM_DB_SECADM function usage", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.1047821044922, 85.6243896484375, 460.46807861328125, 108.106201171875], "page": 25, "span": [0, 117], "__ref_s3_data": null}], "text": "Only QSECOFR or a user with *SECADM special authority can grant the QIBM_DB_SECADM function usage to a user or group.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [360.4371643066406, 27.8848876953125, 529.1567993164062, 37.116455078125], "page": 25, "span": [0, 41], "__ref_s3_data": null}], "text": "Chapter 2. Roles and separation of duties", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [540.8857421875, 27.93828010559082, 547.2386474609375, 37.69683837890625], "page": 25, "span": [0, 1], "__ref_s3_data": null}], "text": "9", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.09011840820312, 708.0057373046875, 335.4955139160156, 721.8206787109375], "page": 26, "span": [0, 38], "__ref_s3_data": null}], "text": "2.1.6 Change Function Usage CL command", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.83584594726562, 684.7753295898438, 547.284423828125, 695.3712768554688], "page": 26, "span": [0, 90], "__ref_s3_data": null}], "text": "The following CL commands can be used to work with, display, or change function usage IDs:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.6907196044922, 667.4461669921875, 301.5174865722656, 678.259765625], "page": 26, "span": [0, 49], "__ref_s3_data": null}], "text": "- GLYPH Work Function Usage ( WRKFCNUSG )", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.7242889404297, 655.3120727539062, 313.39776611328125, 666.0692138671875], "page": 26, "span": [0, 51], "__ref_s3_data": null}], "text": "- GLYPH Change Function Usage ( CHGFCNUSG )", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.71124267578125, 643.400390625, 310.8171081542969, 654.0370483398438], "page": 26, "span": [0, 52], "__ref_s3_data": null}], "text": "- GLYPH Display Function Usage ( DSPFCNUSG )", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.30247497558594, 610.2994995117188, 512.5380249023438, 632.781494140625], "page": 26, "span": [0, 126], "__ref_s3_data": null}], "text": "For example, the following CHGFCNUSG command shows granting authorization to user HBEDOYA to administer and manage RCAC rules:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.3306427001953, 593.1199951171875, 441.59686279296875, 604.0092163085938], "page": 26, "span": [0, 61], "__ref_s3_data": null}], "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED)", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [63.9356689453125, 559.875732421875, 544.4754638671875, 573.8617553710938], "page": 26, "span": [0, 72], "__ref_s3_data": null}], "text": "2.1.7 Verifying function usage IDs for RCAC with the FUNCTION_USAGE view", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.84828186035156, 525.2785034179688, 519.5179443359375, 547.4229736328125], "page": 26, "span": [0, 130], "__ref_s3_data": null}], "text": "The FUNCTION_USAGE view contains function usage configuration details. Table 2-1 describes the columns in the FUNCTION_USAGE view.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.8000030517578, 504.11700439453125, 284.9328308105469, 513.490478515625], "page": 26, "span": [0, 29], "__ref_s3_data": null}], "text": "Table 2-1 FUNCTION_USAGE view", "type": "caption", "name": "Caption", "font": null}, {"name": "Table", "type": "table", "$ref": "#/tables/3"}, {"prov": [{"bbox": [135.81077575683594, 318.2784729003906, 547.2803955078125, 340.671142578125], "page": 26, "span": [0, 112], "__ref_s3_data": null}], "text": "To discover who has authorization to define and manage RCAC, you can use the query that is shown in Example 2-1.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.28225708007812, 296.11798095703125, 462.98095703125, 306.23565673828125], "page": 26, "span": [0, 74], "__ref_s3_data": null}], "text": "Example 2-1 Query to determine who has authority to define and manage RCAC", "type": "paragraph", "name": "paragraph", "font": null}, {"prov": [{"bbox": [136.8000030517578, 207.56837463378906, 331.67730712890625, 288.34197998046875], "page": 26, "span": [0, 122], "__ref_s3_data": null}], "text": "SELECT function_id, user_name, usage, user_type FROM function_usage WHERE function_id='QIBM_DB_SECADM' ORDER BY user_name;", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.18024444580078, 156.3486328125, 249.59605407714844, 172.6075439453125], "page": 26, "span": [0, 24], "__ref_s3_data": null}], "text": "2.2 Separation of duties", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.1588592529297, 81.817626953125, 547.2234497070312, 140.1129150390625], "page": 26, "span": [0, 463], "__ref_s3_data": null}], "text": "Separation of duties helps businesses comply with industry regulations or organizational requirements and simplifies the management of authorities. Separation of duties is commonly used to prevent fraudulent activities or errors by a single person. It provides the ability for administrative functions to be divided across individuals without overlapping responsibilities, so that one user does not possess unlimited authority, such as with the *ALLOBJ authority.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.4488525390625, 27.93828010559082, 78.4020004272461, 37.581298828125], "page": 26, "span": [0, 2], "__ref_s3_data": null}], "text": "10", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.35774993896484, 28.04144287109375, 334.4214172363281, 37.31072998046875], "page": 26, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [135.92747497558594, 650.9638671875, 542.6943359375, 721.3446044921875], "page": 27, "span": [0, 516], "__ref_s3_data": null}], "text": "For example, assume that a business has assigned the duty to manage security on IBM i to Theresa. Before release IBM i 7.2, to grant privileges, Theresa had to have the same privileges Theresa was granting to others. Therefore, to grant *USE privileges to the PAYROLL table, Theresa had to have *OBJMGT and *USE authority (or a higher level of authority, such as *ALLOBJ). This requirement allowed Theresa to access the data in the PAYROLL table even though Theresa's job description was only to manage its security.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.04833984375, 593.2598266601562, 547.303955078125, 639.4869384765625], "page": 27, "span": [0, 285], "__ref_s3_data": null}], "text": "In IBM i 7.2, the QIBM_DB_SECADM function usage grants authorities, revokes authorities, changes ownership, or changes the primary group without giving access to the object or, in the case of a database table, to the data that is in the table or allowing other operations on the table.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.00685119628906, 558.9195556640625, 538.6507568359375, 581.5885009765625], "page": 27, "span": [0, 129], "__ref_s3_data": null}], "text": "QIBM_DB_SECADM function usage can be granted only by a user with *SECADM special authority and can be given to a user or a group.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.68702697753906, 513.281005859375, 545.7960205078125, 547.4618530273438], "page": 27, "span": [0, 204], "__ref_s3_data": null}], "text": "QIBM_DB_SECADM also is responsible for administering RCAC, which restricts which rows a user is allowed to access in a table and whether a user is allowed to see information in certain columns of a table.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.86065673828125, 455.2619934082031, 539.80712890625, 501.3948669433594], "page": 27, "span": [0, 285], "__ref_s3_data": null}], "text": "A preferred practice is that the RCAC administrator has the QIBM_DB_SECADM function usage ID, but absolutely no other data privileges. The result is that the RCAC administrator can deploy and maintain the RCAC constructs, but cannot grant themselves unauthorized access to data itself.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.7205352783203, 421.3023681640625, 543.067138671875, 443.39068603515625], "page": 27, "span": [0, 136], "__ref_s3_data": null}], "text": "Table 2-2 shows a comparison of the different function usage IDs and *JOBCTL authority to the different CL commands and DB2 for i tools.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.80000305175781, 399.74505615234375, 392.4624328613281, 409.4712829589844], "page": 27, "span": [0, 78], "__ref_s3_data": null}], "text": "Table 2-2 Comparison of the different function usage IDs and *JOBCTL authority", "type": "caption", "name": "Caption", "font": null}, {"name": "Table", "type": "table", "$ref": "#/tables/4"}, {"prov": [{"bbox": [354.4815673828125, 27.89447021484375, 523.5407104492188, 37.05841064453125], "page": 27, "span": [0, 41], "__ref_s3_data": null}], "text": "Chapter 2. Roles and separation of duties", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [536.0808715820312, 27.93828010559082, 547.2591552734375, 37.7674560546875], "page": 27, "span": [0, 2], "__ref_s3_data": null}], "text": "11", "type": "page-footer", "name": "Page-footer", "font": null}, {"name": "Table", "type": "table", "$ref": "#/tables/5"}, {"prov": [{"bbox": [64.58246612548828, 27.93828010559082, 78.4020004272461, 37.58502197265625], "page": 28, "span": [0, 2], "__ref_s3_data": null}], "text": "12", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.4140625, 27.99273681640625, 334.4214172363281, 37.4124755859375], "page": 28, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/20"}, {"prov": [{"bbox": [81.0, 517.019287109375, 115.13253021240234, 523.457275390625], "page": 29, "span": [0, 10], "__ref_s3_data": null}], "text": "Chapter 3.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [500.3999938964844, 661.8682861328125, 522.6177368164062, 698.8939819335938], "page": 29, "span": [0, 1], "__ref_s3_data": null}], "text": "3", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.8000030517578, 513.0821533203125, 546.0291748046875, 539.2265014648438], "page": 29, "span": [0, 29], "__ref_s3_data": null}], "text": "Row and Column Access Control", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.7134552001953, 453.0984802246094, 536.1522827148438, 475.3383483886719], "page": 29, "span": [0, 133], "__ref_s3_data": null}], "text": "This chapter describes what Row and Column Access Control (RCAC) is, its components, and then illustrates RCAC with a simple example.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.12974548339844, 431.07891845703125, 347.4121398925781, 441.3373107910156], "page": 29, "span": [0, 49], "__ref_s3_data": null}], "text": "The following topics are covered in this chapter:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.65553283691406, 413.7755432128906, 397.1086730957031, 424.01177978515625], "page": 29, "span": [0, 69], "__ref_s3_data": null}], "text": "- GLYPH Explanation of RCAC and the concept of access control", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.7020721435547, 401.86920166015625, 348.458984375, 411.87139892578125], "page": 29, "span": [0, 63], "__ref_s3_data": null}], "text": "- GLYPH Special registers and built-in global variables", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.77047729492188, 389.711669921875, 327.0360107421875, 400.1288146972656], "page": 29, "span": [0, 46], "__ref_s3_data": null}], "text": "- GLYPH VERIFY_GROUP_FOR_USER function", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.8464813232422, 377.66046142578125, 454.0877990722656, 387.9523010253906], "page": 29, "span": [0, 86], "__ref_s3_data": null}], "text": "- GLYPH Establishing and controlling accessibility by using the RCAC rule text", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.77333068847656, 365.84466552734375, 385.73236083984375, 376.19525146484375], "page": 29, "span": [0, 61], "__ref_s3_data": null}], "text": "- GLYPH SELECT, INSERT, and UPDATE behavior with RCAC", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.60595703125, 354.0252990722656, 270.3636169433594, 363.9985046386719], "page": 29, "span": [0, 39], "__ref_s3_data": null}], "text": "- GLYPH Human resources example", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [63.7396240234375, 27.91595458984375, 257.24334716796875, 37.2548828125], "page": 29, "span": [0, 48], "__ref_s3_data": null}], "text": "' Copyright IBM Corp. 2014. All rights reserved.", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [535.8259887695312, 27.93828010559082, 547.2591552734375, 37.642333984375], "page": 29, "span": [0, 2], "__ref_s3_data": null}], "text": "13", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.3137435913086, 702.7252807617188, 518.7757568359375, 718.4672241210938], "page": 30, "span": [0, 57], "__ref_s3_data": null}], "text": "3.1 Explanation of RCAC and the concept of access control", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.03993225097656, 639.732177734375, 547.24267578125, 685.975341796875], "page": 30, "span": [0, 340], "__ref_s3_data": null}], "text": "RCAC limits data access to those users who have a business \"need to know\". RCAC makes it easy to set up a rich and robust security policy that is based on roles and responsibilities. RCAC functionality is made available through the optional, no charge feature called \"IBM Advanced Data Security for i\", also known as option 47 of IBM i 7.2.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.07485961914062, 605.9139404296875, 505.92376708984375, 628.0799560546875], "page": 30, "span": [0, 141], "__ref_s3_data": null}], "text": "In DB2 for i, RCAC is implemented using two different approaches that address the shortcomings of traditional control methods and mechanisms:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.7504425048828, 589.1548461914062, 227.34536743164062, 599.06494140625], "page": 30, "span": [0, 31], "__ref_s3_data": null}], "text": "- GLYPH Row permissions", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.5780487060547, 577.1798095703125, 217.25091552734375, 586.911865234375], "page": 30, "span": [0, 28], "__ref_s3_data": null}], "text": "- GLYPH Column masks", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.8238983154297, 507.16094970703125, 547.2017822265625, 565.3846435546875], "page": 30, "span": [0, 419], "__ref_s3_data": null}], "text": "Another benefit of RCAC is that no database user is automatically exempt from the control. Users with *ALLOBJ authority can no longer freely access all of the data in the database unless they have the appropriate permission to do so. The ability to manage row permissions and column masks rests with the database security administrator. The RCAC definitions, enablement, and activation are controlled by SQL statements.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.0462646484375, 449.1419372558594, 547.2973022460938, 495.2445983886719], "page": 30, "span": [0, 270], "__ref_s3_data": null}], "text": "Row permissions and column masks require virtually no application changes. RCAC is based on specific rules that are transparent to existing applications and SQL interfaces. Enforcement of your security policy does not depend on how applications or tools access the data.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.23114013671875, 390.89093017578125, 535.672119140625, 437.2736511230469], "page": 30, "span": [0, 331], "__ref_s3_data": null}], "text": "RCAC also facilitates multi-tenancy, which means that several independent customers or business units can share a single database table without being aware of one another. The RCAC row permission ensures each user sees only the rows they are entitled to view because the enforcement is handled by DB2 and not the application logic.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [141.94046020507812, 314.51959228515625, 541.2496337890625, 373.60089111328125], "page": 30, "span": [0, 438], "__ref_s3_data": null}], "text": "Label-based access control (LBAC): RCAC and LBAC are not the same thing. LBAC is a security model that is primarily intended for government applications. LBAC requires that data and users be classified with a fixed set of rules that are implemented. RCAC is a general-purpose security model that is primarily intended for commercial customers. You can use RCAC to create your own security rules, which in turn allows for more flexibility.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.24093627929688, 277.25274658203125, 383.4799499511719, 290.3779602050781], "page": 30, "span": [0, 48], "__ref_s3_data": null}], "text": "3.1.1 Row permission and column mask definitions", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.77207946777344, 253.60382080078125, 423.5354309082031, 263.9635009765625], "page": 30, "span": [0, 62], "__ref_s3_data": null}], "text": "The following sections define row permission and column masks.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.47561645507812, 226.1007080078125, 229.260009765625, 238.14508056640625], "page": 30, "span": [0, 14], "__ref_s3_data": null}], "text": "Row permission", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.9830322265625, 189.069091796875, 544.5714721679688, 223.29058837890625], "page": 30, "span": [0, 261], "__ref_s3_data": null}], "text": "A row permission is a database object that manifests a row access control rule for a specific table. It is essentially a search condition that describes which rows you can access. For example, a manager can see only the rows that represent his or her employees.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.47321319580078, 27.93828010559082, 78.4020004272461, 37.66790771484375], "page": 30, "span": [0, 2], "__ref_s3_data": null}], "text": "14", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.28377532958984, 28.06536865234375, 334.4214172363281, 37.28033447265625], "page": 30, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [135.73501586914062, 699.0009765625, 528.7305908203125, 721.5136108398438], "page": 31, "span": [0, 135], "__ref_s3_data": null}], "text": "The SQL CREATE PERMISSION statement that is shown in Figure 3-1 is used to define and initially enable or disable the row access rules.", "type": "caption", "name": "Caption", "font": null}, {"prov": [{"bbox": [136.3166961669922, 369.1156921386719, 342.55548095703125, 378.73248291015625], "page": 31, "span": [0, 42], "__ref_s3_data": null}], "text": "Figure 3-1 CREATE PERMISSION SQL statement", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/21"}, {"prov": [{"bbox": [136.24984741210938, 340.95599365234375, 215.88082885742188, 353.2656555175781], "page": 31, "span": [0, 11], "__ref_s3_data": null}], "text": "Column mask", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.803466796875, 291.6988525390625, 542.7664794921875, 338.0789489746094], "page": 31, "span": [0, 297], "__ref_s3_data": null}], "text": "A column mask is a database object that manifests a column value access control rule for a specific column in a specific table. It uses a CASE expression that describes what you see when you access the column. For example, a teller can see only the last four digits of a tax identification number.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [344.5666809082031, 27.9176025390625, 523.6016235351562, 37.281982421875], "page": 31, "span": [0, 40], "__ref_s3_data": null}], "text": "Chapter 3. Row and Column Access Control", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [536.0999755859375, 27.93828010559082, 547.2591552734375, 37.689697265625], "page": 31, "span": [0, 2], "__ref_s3_data": null}], "text": "15", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.44506072998047, 27.93828010559082, 78.4020004272461, 37.52349853515625], "page": 32, "span": [0, 2], "__ref_s3_data": null}], "text": "16", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.31855010986328, 28.0611572265625, 334.4214172363281, 37.286865234375], "page": 32, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [136.0411376953125, 687.2786865234375, 546.5693359375, 721.397216796875], "page": 32, "span": [0, 221], "__ref_s3_data": null}], "text": "Column masks replace the need to create and use views to implement access control. The SQL CREATE MASK statement that is shown in Figure 3-2 is used to define and initially enable or disable the column value access rules.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.94520568847656, 365.6970520019531, 311.8898620605469, 375.34112548828125], "page": 32, "span": [0, 36], "__ref_s3_data": null}], "text": "Figure 3-2 CREATE MASK SQL statement", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/22"}, {"prov": [{"bbox": [64.21709442138672, 332.696044921875, 286.7970275878906, 346.41973876953125], "page": 32, "span": [0, 34], "__ref_s3_data": null}], "text": "3.1.2 Enabling and activating RCAC", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.47596740722656, 285.6659240722656, 547.1828002929688, 320.0126953125], "page": 32, "span": [0, 184], "__ref_s3_data": null}], "text": "You can enable, disable, or regenerate row permissions and column masks by using the SQL ALTER PERMISSION statement and the SQL ALTER MASK statement, as shown in Figure 3-3 on page 17.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.03172302246094, 168.1006622314453, 547.2286376953125, 274.14324951171875], "page": 32, "span": [0, 734], "__ref_s3_data": null}], "text": "Enabling and disabling effectively turns on or off the logic that is contained in the row permission or column mask. Regenerating causes the row permission or column mask to be regenerated. The row permission definition in the catalog is used and existing dependencies and authorizations, if any, are retained. The row permission definition is reevaluated as though the row permission were being created. Any user-defined functions (UDFs) that are referenced in the row permission must be resolved to the same secure UDFs as were resolved during the original row permission or column mask creation. The regenerate option can be used to ensure that the RCAC logic is intact and still valid before any user attempts to access the table.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [142.643798828125, 128.0260009765625, 531.8515625, 150.07513427734375], "page": 32, "span": [0, 120], "__ref_s3_data": null}], "text": "Note: An exclusive lock is required on the table object to perform the alter operation. All open cursors must be closed.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.7609405517578, 432.6983947753906, 415.2347106933594, 442.0717468261719], "page": 33, "span": [0, 57], "__ref_s3_data": null}], "text": "Figure 3-3 ALTER PERMISSION and ALTER MASK SQL statements", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/23"}, {"prov": [{"bbox": [135.8385467529297, 357.935546875, 547.2994995117188, 416.132568359375], "page": 33, "span": [0, 433], "__ref_s3_data": null}], "text": "You can activate and deactivate RCAC for new or existing tables by using the SQL ALTER TABLE statement (Figure 3-4). The ACTIVATE or DEACTIVATE clause must be the option that is specified in the statement. No other alterations are permitted at the same time. The activating and deactivating effectively turns on or off all RCAC processing for the table. Only enabled row permissions and column masks take effect when activating RCAC.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [142.42935180664062, 317.7235412597656, 531.8515625, 339.9495849609375], "page": 33, "span": [0, 120], "__ref_s3_data": null}], "text": "Note: An exclusive lock is required on the table object to perform the alter operation. All open cursors must be closed.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.1680145263672, 57.78338623046875, 306.3438720703125, 67.37353515625], "page": 33, "span": [0, 36], "__ref_s3_data": null}], "text": "Figure 3-4 ALTER TABLE SQL statement", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/24"}, {"prov": [{"bbox": [344.607666015625, 27.84613037109375, 523.6016235351562, 37.34271240234375], "page": 33, "span": [0, 40], "__ref_s3_data": null}], "text": "Chapter 3. Row and Column Access Control", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [536.0054321289062, 27.93828010559082, 547.2591552734375, 37.726806640625], "page": 33, "span": [0, 2], "__ref_s3_data": null}], "text": "17", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.41429901123047, 27.93828010559082, 78.4020004272461, 37.559326171875], "page": 34, "span": [0, 2], "__ref_s3_data": null}], "text": "18", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.24517059326172, 28.119140625, 334.4214172363281, 37.31939697265625], "page": 34, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [135.7600555419922, 638.812744140625, 547.273681640625, 721.2564086914062], "page": 34, "span": [0, 566], "__ref_s3_data": null}], "text": "When row access control is activated on a table, a default permission is established for that table. The name of this permission is QIBM_DEFAULT_ _. This default permission contains a simple piece of logic (0=1) which is never true. The default permission effectively denies access to every user unless there is a permission defined that allows access explicitly. If row access control is activated on a table, and there is no permission that is defined, no one has permission to any rows. All queries against the table produce an empty set.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.96725463867188, 580.7529296875, 547.2686157226562, 627.3378295898438], "page": 34, "span": [0, 378], "__ref_s3_data": null}], "text": "It is possible to define, create, and enable multiple permissions on a table. Logically, all of the permissions are ORed together to form a comprehensive test of the user's ability to access the data. A column can have only one mask that is defined over it. From an implementation standpoint, it does not matter if you create the column masks first or the row permissions first.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [142.8000030517578, 541.2984619140625, 537.4868774414062, 563.395263671875], "page": 34, "span": [0, 97], "__ref_s3_data": null}], "text": "Note: If a user does not have permission to access the row, the column mask logic is not invoked.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.29631042480469, 492.2038269042969, 438.7572021484375, 508.64190673828125], "page": 34, "span": [0, 51], "__ref_s3_data": null}], "text": "3.2 Special registers and built-in global variables", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.81504821777344, 454.2984619140625, 525.5018920898438, 476.6042175292969], "page": 34, "span": [0, 105], "__ref_s3_data": null}], "text": "This section describes how you can use special registers and built-in global variables to implement RCAC.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.23223114013672, 421.0963134765625, 204.5852813720703, 434.255126953125], "page": 34, "span": [0, 23], "__ref_s3_data": null}], "text": "3.2.1 Special registers", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.89915466308594, 373.8841552734375, 547.1063842773438, 407.9602355957031], "page": 34, "span": [0, 261], "__ref_s3_data": null}], "text": "A special register is a storage area that is defined for an application process by DB2 and is used to store information that can be referenced in SQL statements. A reference to a special register is a reference to a value that is provided by the current server.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.08819580078125, 316.2984619140625, 544.5763549804688, 362.5604553222656], "page": 34, "span": [0, 323], "__ref_s3_data": null}], "text": "IBM DB2 for i supports four different special registers that can be used to identify what user profiles are relevant to determining object authorities in the current connection to the server. SQL uses the term runtime authorization ID , which corresponds to a user profile on DB2 for i. Here are the four special registers:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.6575927734375, 274.9290771484375, 546.981201171875, 309.4291076660156], "page": 34, "span": [0, 239], "__ref_s3_data": null}], "text": "- GLYPH USER is the runtime user profile that determines the object authorities for the current connection to the server. It has a data type of VARCHAR(18). This value can be changed by the SQL statement SET SESSION AUTHORIZATION .", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.68878173828125, 246.278564453125, 522.5455932617188, 268.813232421875], "page": 34, "span": [0, 110], "__ref_s3_data": null}], "text": "- GLYPH SESSION_USER is the same as the USER register, except that it has a data type of VARCHAR(128).", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.3015594482422, 157.072021484375, 547.2483520507812, 239.44622802734375], "page": 34, "span": [0, 594], "__ref_s3_data": null}], "text": "- GLYPH CURRENT USER was added in IBM i 7.2 and is similar to the USER register, but it has one important difference in that it also reports adopted authority. High-level language programs and SQL routines such as functions, procedures, and triggers can optionally be created to run using either the caller's or the owner's user profile to determine data authorities. For example, an SQL procedure can be created to run under the owner's authority by specifying SET OPTION USRPRF=*OWNER . This special register can also be referenced as CURRENT_USER. It has a data type of VARCHAR(128).", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.51412963867188, 91.47637939453125, 547.2650756835938, 150.1607666015625], "page": 34, "span": [0, 422], "__ref_s3_data": null}], "text": "- GLYPH SYSTEM_USER is the user profile that initiates the connection to the server. It is not used by RCAC, but is included here for completeness. Many jobs, including the QZDASOINIT prestarted jobs, initially connect to the server with a default user profile and then change to use some other user profile. SYSTEM_USER reports this value, typically QUSER for a QZDASOINIT job. It has a data type of VARCHAR(128).", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.05694580078125, 57.78228759765625, 547.2014770507812, 79.99713134765625], "page": 34, "span": [0, 121], "__ref_s3_data": null}], "text": "In addition to these four special registers, any of the DB2 special registers can be referenced as part of the rule text.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.82176208496094, 711.1845703125, 412.20758056640625, 721.317138671875], "page": 35, "span": [0, 62], "__ref_s3_data": null}], "text": "Table 3-1 summarizes these special registers and their values.", "type": "paragraph", "name": "paragraph", "font": null}, {"prov": [{"bbox": [136.8000030517578, 690.0601806640625, 372.7710876464844, 699.2779541015625], "page": 35, "span": [0, 58], "__ref_s3_data": null}], "text": "Table 3-1 Special registers and their corresponding values", "type": "caption", "name": "Caption", "font": null}, {"name": "Table", "type": "table", "$ref": "#/tables/6"}, {"prov": [{"bbox": [136.3730926513672, 556.2984619140625, 538.493896484375, 578.6343383789062], "page": 35, "span": [0, 97], "__ref_s3_data": null}], "text": "Figure 3-5 shows the difference in the special register values when an adopted authority is used:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.5663299560547, 539.2213134765625, 411.36138916015625, 549.454345703125], "page": 35, "span": [0, 75], "__ref_s3_data": null}], "text": "- GLYPH A user connects to the server using the user profile ALICE.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.5452880859375, 522.2791137695312, 453.2580871582031, 532.7073974609375], "page": 35, "span": [0, 77], "__ref_s3_data": null}], "text": "- GLYPH USER and CURRENT USER initially have the same value of ALICE.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.3970947265625, 493.01019287109375, 541.4498291015625, 515.4821166992188], "page": 35, "span": [0, 160], "__ref_s3_data": null}], "text": "- GLYPH ALICE calls an SQL procedure that is named proc1, which is owned by user profile JOE and was created to adopt JOE's authority when it is called.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.5677947998047, 451.4921875, 547.2167358398438, 486.18145751953125], "page": 35, "span": [0, 253], "__ref_s3_data": null}], "text": "- GLYPH While the procedure is running, the special register USER still contains the value of ALICE because it excludes any adopted authority. The special register CURRENT USER contains the value of JOE because it includes any adopted authority.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.56973266601562, 423.0643615722656, 547.3540649414062, 445.5053405761719], "page": 35, "span": [0, 133], "__ref_s3_data": null}], "text": "- GLYPH When proc1 ends, the session reverts to its original state with both USER and CURRENT USER having the value of ALICE.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.22442626953125, 186.25537109375, 342.349853515625, 195.81939697265625], "page": 35, "span": [0, 50], "__ref_s3_data": null}], "text": "Figure 3-5 Special registers and adopted authority", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/25"}, {"prov": [{"bbox": [64.079833984375, 154.15521240234375, 247.02536010742188, 167.67864990234375], "page": 35, "span": [0, 31], "__ref_s3_data": null}], "text": "3.2.2 Built-in global variables", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.3346710205078, 119.0784683227539, 518.0011596679688, 141.24090576171875], "page": 35, "span": [0, 161], "__ref_s3_data": null}], "text": "Built-in global variables are provided with the database manager and are used in SQL statements to retrieve scalar values that are associated with the variables.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.17970275878906, 72.93243408203125, 532.3385009765625, 107.37139892578125], "page": 35, "span": [0, 233], "__ref_s3_data": null}], "text": "IBM DB2 for i supports nine different built-in global variables that are read only and maintained by the system. These global variables can be used to identify attributes of the database connection and used as part of the RCAC logic.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [344.5751037597656, 27.93109130859375, 523.6016235351562, 37.29559326171875], "page": 35, "span": [0, 40], "__ref_s3_data": null}], "text": "Chapter 3. Row and Column Access Control", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [536.0416870117188, 27.93828010559082, 547.2591552734375, 37.7122802734375], "page": 35, "span": [0, 2], "__ref_s3_data": null}], "text": "19", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [63.85088348388672, 27.93828010559082, 78.4020004272461, 37.62542724609375], "page": 36, "span": [0, 2], "__ref_s3_data": null}], "text": "20", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.31550598144531, 28.02935791015625, 334.4214172363281, 37.3028564453125], "page": 36, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [135.74647521972656, 711.1533813476562, 342.5477294921875, 721.3251953125], "page": 36, "span": [0, 51], "__ref_s3_data": null}], "text": "Table 3-2 lists the nine built-in global variables.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.80000305175781, 690.177001953125, 201.82247924804688, 699.1653442382812], "page": 36, "span": [0, 35], "__ref_s3_data": null}], "text": "Table 3-2 Built-in global variables", "type": "caption", "name": "Caption", "font": null}, {"name": "Table", "type": "table", "$ref": "#/tables/7"}, {"prov": [{"bbox": [64.34713745117188, 455.0362854003906, 384.3638916015625, 471.380859375], "page": 36, "span": [0, 34], "__ref_s3_data": null}], "text": "3.3 VERIFY_GROUP_FOR_USER function", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.8567352294922, 355.704833984375, 547.2347412109375, 438.1376037597656], "page": 36, "span": [0, 576], "__ref_s3_data": null}], "text": "The VERIFY_GROUP_FOR_USER function was added in IBM i 7.2. Although it is primarily intended for use with RCAC permissions and masks, it can be used in other SQL statements. The first parameter must be one of these three special registers: SESSION_USER, USER, or CURRENT_USER. The second and subsequent parameters are a list of user or group profiles. Each of these values must be 1 - 10 characters in length. These values are not validated for their existence, which means that you can specify the names of user profiles that do not exist without receiving any kind of error.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.01950073242188, 310.2999572753906, 547.2573852539062, 344.5970458984375], "page": 36, "span": [0, 235], "__ref_s3_data": null}], "text": "If a special register value is in the list of user profiles or it is a member of a group profile included in the list, the function returns a long integer value of 1. Otherwise, it returns a value of 0. It never returns the null value.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.42428588867188, 288.2803955078125, 458.44525146484375, 298.8746337890625], "page": 36, "span": [0, 63], "__ref_s3_data": null}], "text": "Here is an example of using the VERIFY_GROUP_FOR_USER function:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.80001831054688, 271.2408142089844, 406.0775146484375, 281.4947204589844], "page": 36, "span": [0, 57], "__ref_s3_data": null}], "text": "- 1. There are user profiles for MGR, JANE, JUDY, and TONY.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.8521728515625, 253.80572509765625, 396.9881591796875, 264.1617431640625], "page": 36, "span": [0, 58], "__ref_s3_data": null}], "text": "- 2. The user profile JANE specifies a group profile of MGR.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.08595275878906, 225.28138732910156, 536.568603515625, 247.357666015625], "page": 36, "span": [0, 127], "__ref_s3_data": null}], "text": "- 3. If a user is connected to the server using user profile JANE, all of the following function invocations return a value of 1:", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [149.8811798095703, 150.09063720703125, 451.01605224609375, 217.68408203125], "page": 36, "span": [0, 265], "__ref_s3_data": null}], "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'MGR') VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR') VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR', 'STEVE') The following function invocation returns a value of 0: VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JUDY', 'TONY')", "type": "paragraph", "name": "Code", "font": null}, {"prov": [{"bbox": [64.577880859375, 687.0557861328125, 512.90087890625, 721.906005859375], "page": 37, "span": [0, 74], "__ref_s3_data": null}], "text": "3.4 Establishing and controlling accessibility by using the RCAC rule text", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.82391357421875, 636.2785034179688, 544.9019775390625, 670.6641235351562], "page": 37, "span": [0, 230], "__ref_s3_data": null}], "text": "When defining a row permission or column mask, the \"magic\" of establishing and controlling accessibility comes from the rule text . The rule text represents the search criteria and logic that is implemented by the database engine.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.99398803710938, 577.9219970703125, 545.6567993164062, 623.8250732421875], "page": 37, "span": [0, 359], "__ref_s3_data": null}], "text": "In the case of a row permission, the rule text is the \"test\" of whether the user can access the row. If the test result is true, the row can be accessed. If the test result is false, the row essentially does not exist for the user. From a set-at-a-time perspective, the permission defines which rows can be part of the query result set, and which rows cannot.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.151123046875, 532.300048828125, 537.8551025390625, 566.5162353515625], "page": 37, "span": [0, 196], "__ref_s3_data": null}], "text": "In the case of a column mask, the rule text is both the test of whether the user can see the actual column value, and it is the masking logic if the user cannot have access to actual column value.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.31472778320312, 498.2806396484375, 547.2691040039062, 520.593505859375], "page": 37, "span": [0, 117], "__ref_s3_data": null}], "text": "For a simple example of implementing row permissions and column masks, see 3.6, \"Human resources example\" on page 22.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.01747131347656, 464.0989074707031, 545.9476928710938, 485.85302734375], "page": 37, "span": [0, 185], "__ref_s3_data": null}], "text": "In general, almost any set-based, relational logic is valid. For the row permission, the search condition follows the same rules that are used by the search condition in a WHERE clause.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.0785675048828, 381.9795227050781, 547.2494506835938, 452.537353515625], "page": 37, "span": [0, 504], "__ref_s3_data": null}], "text": "For the column mask, the logic follows the same rules as the CASE expression. The result data type, length, null attribute, and CCSID of the CASE expression must be compatible with the data type of the column. If the column does not allow the null value, the result of the CASE expression cannot be the NULL value. The application or interface making the data access request is expecting that all of the column attributes and values are consistent with the original definition, regardless of any masking.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.35562133789062, 348.2829895019531, 542.0492553710938, 370.6085205078125], "page": 37, "span": [0, 127], "__ref_s3_data": null}], "text": "For more information about what is permitted, see the \"Database programming\" topic of the IBM i 7.2 Knowledge Center, found at:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.1328582763672, 319.5921936035156, 546.5352172851562, 341.0989990234375], "page": 37, "span": [0, 86], "__ref_s3_data": null}], "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgdbp.htm?lang =en", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.92572021484375, 237.0828857421875, 547.0272216796875, 307.27325439453125], "page": 37, "span": [0, 546], "__ref_s3_data": null}], "text": "One of the first tasks in either the row permission or the column mask logic is to determine who the user is, and whether they have access to the data. Elegant methods to establish the identity and attributes of the user can be employed by using the special registers, global variables, and the VERIFY function. After the user's identity is established, it is a simple matter of allowing or disallowing access by using true or false testing. The examples that are included in this paper demonstrate some of the more common and obvious techniques.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.01707458496094, 154.92767333984375, 547.3748779296875, 225.0654296875], "page": 37, "span": [0, 538], "__ref_s3_data": null}], "text": "More sophisticated methods can employ existential, day of year / time of day, and relational comparisons with set operations. For example, you can use a date master or date dimension table to determine whether the current date is a normal business day. If the current date is a valid business day, then access is allowed. If the current date is not a business day (for example a weekend day or holiday), access is denied. This test can be accomplished by performing a lookup using a subquery, such as the one that is shown in Example 3-1.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.3708953857422, 133.6683349609375, 355.12689208984375, 143.520263671875], "page": 37, "span": [0, 53], "__ref_s3_data": null}], "text": "Example 3-1 Subquery that is used as part of the rule", "type": "paragraph", "name": "paragraph", "font": null}, {"prov": [{"bbox": [226.1187744140625, 104.54730987548828, 331.77557373046875, 113.84539794921875], "page": 37, "span": [0, 13], "__ref_s3_data": null}], "text": "DATE_MASTER D", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [222.19522094726562, 91.81817626953125, 371.6368408203125, 102.1473388671875], "page": 37, "span": [0, 21], "__ref_s3_data": null}], "text": "D.BUSINESS_DAY = 'Y')", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [344.57867431640625, 27.9051513671875, 523.6016235351562, 37.25799560546875], "page": 37, "span": [0, 40], "__ref_s3_data": null}], "text": "Chapter 3. Row and Column Access Control", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [535.7230834960938, 27.93828010559082, 547.2591552734375, 37.71142578125], "page": 37, "span": [0, 2], "__ref_s3_data": null}], "text": "21", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [136.8000030517578, 92.54750061035156, 316.67755126953125, 125.3218765258789], "page": 37, "span": [0, 45], "__ref_s3_data": null}], "text": "CURRENT_DATE IN (SELECT D.DATE_KEY FROM WHERE", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [63.83726119995117, 27.93828010559082, 78.4020004272461, 37.62664794921875], "page": 38, "span": [0, 2], "__ref_s3_data": null}], "text": "22", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.2356185913086, 28.12286376953125, 334.4214172363281, 37.29510498046875], "page": 38, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [135.83892822265625, 615.0796508789062, 547.2915649414062, 721.335693359375], "page": 38, "span": [0, 763], "__ref_s3_data": null}], "text": "Given that joins and subqueries can be used to perform set-based operations against existing data that is housed in other objects, almost any relational test can be constructed. If the data in the objects is manipulated over time, the RCAC test logic (and user query results) can be changed without modifying the actual row permission or column mask. This includes moving a user from one group to another or changing a column value that is used to allow or disallow access. For example, if Saturday is now a valid business day, only the BUSINESS_DAY value in the DATE_MASTER must be updated, not the permission logic. This technique can potentially avoid downtime because of the exclusive lock that is needed on the table when adding or changing RCAC definitions.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.40492248535156, 572.0363159179688, 486.3243713378906, 588.2117919921875], "page": 38, "span": [0, 49], "__ref_s3_data": null}], "text": "3.5 SELECT, INSERT, and UPDATE behavior with RCAC", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.95579528808594, 473.1294250488281, 547.2974243164062, 555.3319702148438], "page": 38, "span": [0, 566], "__ref_s3_data": null}], "text": "RCAC provides a database-centric approach to determining which rows can be accessed and what column values can be seen by a specific user. Given that the control is handled by DB2 internally, every data manipulation statement is under the influence of RCAC, with no exceptions. When accessing the table, the SELECT statements, searched UPDATE statements, and searched DELETE statements implicitly and transparently contain the row permission and the column mask rule text. This means that the data set can be logically restricted and reduced on a user by user basis.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.07569885253906, 426.9944763183594, 547.1958618164062, 461.2962341308594], "page": 38, "span": [0, 275], "__ref_s3_data": null}], "text": "Furthermore, DB2 prevents an INSERT statement from inserting a row or an UPDATE statement from modifying a row such that the current user cannot be permitted to access it. You cannot create a situation in which the data you inserted or changed is no longer accessible to you.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.00733947753906, 393.1242980957031, 547.2606811523438, 415.3765869140625], "page": 38, "span": [0, 138], "__ref_s3_data": null}], "text": "For more information and considerations about data movement in an RCAC environment, see Chapter 6, \"Additional considerations\" on page 85.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [141.89248657226562, 340.8992919921875, 541.2198486328125, 375.4718933105469], "page": 38, "span": [0, 213], "__ref_s3_data": null}], "text": "Note: DB2 does not provide any indication back to the user that the data set requested was restricted or reduced by RCAC. This is by design, as it helps minimize any changes to the applications accessing the data.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.5394515991211, 292.92779541015625, 298.8533935546875, 308.8202819824219], "page": 38, "span": [0, 27], "__ref_s3_data": null}], "text": "3.6 Human resources example", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.87118530273438, 206.2593536376953, 542.829345703125, 275.9976806640625], "page": 38, "span": [0, 436], "__ref_s3_data": null}], "text": "This section illustrates with a simple example the usage of RCAC on a typical Human Resources application (schema). In this sample Human Resources schema, there is an important table that is called EMPLOYEES that contains all the information that is related to the employees of the company. Among the information that normally is stored in the EMPLOYEES table, there is some sensitive information that must be hidden from certain users:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.85508728027344, 189.279541015625, 235.38601684570312, 199.28631591796875], "page": 38, "span": [0, 34], "__ref_s3_data": null}], "text": "- GLYPH Tax_Id information", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.5828094482422, 177.224365234375, 470.03765869140625, 187.2708740234375], "page": 38, "span": [0, 87], "__ref_s3_data": null}], "text": "- GLYPH YEAR of the birth date of the employee (hiding the age of the employee)", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.1318817138672, 155.09783935546875, 375.29803466796875, 165.2996826171875], "page": 38, "span": [0, 57], "__ref_s3_data": null}], "text": "In this example, there are four different types of users:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.77261352539062, 138.28036499023438, 200.1146697998047, 148.36187744140625], "page": 38, "span": [0, 25], "__ref_s3_data": null}], "text": "- GLYPH Employees", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.6394805908203, 126.28056335449219, 195.63865661621094, 136.5582275390625], "page": 38, "span": [0, 24], "__ref_s3_data": null}], "text": "- GLYPH Managers", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.6507568359375, 114.28074645996094, 276.5639343261719, 124.7410888671875], "page": 38, "span": [0, 39], "__ref_s3_data": null}], "text": "- GLYPH Human Resources Manager", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.71376037597656, 90.28113555908203, 539.58447265625, 112.5548095703125], "page": 38, "span": [0, 144], "__ref_s3_data": null}], "text": "- GLYPH Consultant/IT Database Engineer (In this example, this person is an external consultant that is not an employee of the company.)", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.66419982910156, 56.261756896972656, 546.5243530273438, 78.08331298828125], "page": 38, "span": [0, 109], "__ref_s3_data": null}], "text": "The following sections describe step-by-step what is needed to be done to implement RCAC in this environment.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.25519561767578, 708.3052978515625, 500.5502014160156, 721.8017578125], "page": 39, "span": [0, 65], "__ref_s3_data": null}], "text": "3.6.1 Assigning the QIBM_DB_SECADM function ID to the consultants", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.7902069091797, 661.06640625, 547.2426147460938, 695.3858032226562], "page": 39, "span": [0, 228], "__ref_s3_data": null}], "text": "The consultant must have authority to implement RCAC, so you must use one of the function IDs that are provided in DB2 for i (see 2.1.5, \"Security Administrator function: QIBM_DB_SECADM\" on page 9). Complete the following steps:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.8000030517578, 619.9440307617188, 510.97723388671875, 654.0445556640625], "page": 39, "span": [0, 161], "__ref_s3_data": null}], "text": "- 1. Run the Change Functional Usage ( CHGFCNUSG ) CL commands that are shown in Example 3-2. These commands must be run by someone that has the *SECOFR authority.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.3125762939453, 598.7147827148438, 358.5176696777344, 608.8530883789062], "page": 39, "span": [0, 50], "__ref_s3_data": null}], "text": "Example 3-2 Function ID required to implement RCAC", "type": "paragraph", "name": "paragraph", "font": null}, {"prov": [{"bbox": [136.8000030517578, 569.5473022460938, 441.59588623046875, 590.3218994140625], "page": 39, "span": [0, 121], "__ref_s3_data": null}], "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED) CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(MCAIN) USAGE(*ALLOWED)", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.02276611328125, 533.1458740234375, 547.2882080078125, 555.4281005859375], "page": 39, "span": [0, 163], "__ref_s3_data": null}], "text": "- 2. There is a way to discover which user profiles have authorization to implement RCAC. This can be done by running the SQL statement that is shown in Example 3-3.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.46849060058594, 511.7123107910156, 460.0157775878906, 521.435302734375], "page": 39, "span": [0, 77], "__ref_s3_data": null}], "text": "Example 3-3 Verifying what user profiles have authorization to implement RCAC", "type": "paragraph", "name": "paragraph", "font": null}, {"prov": [{"bbox": [136.8000030517578, 422.5482177734375, 346.6770935058594, 503.3218994140625], "page": 39, "span": [0, 129], "__ref_s3_data": null}], "text": "SELECT function_id, user_name, usage, user_type FROM qsys2.function_usage WHERE function_id ='QIBM_DB_SECADM' ORDER BY user_name;", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.87002563476562, 385.96734619140625, 545.5682983398438, 408.0870361328125], "page": 39, "span": [0, 151], "__ref_s3_data": null}], "text": "- 3. The result of the SQL statement is shown in Figure 3-6. In this example, either MCAIN or HBEDOYA can implement RCAC in the Human Resources database.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.01937866210938, 314.9219970703125, 307.21844482421875, 324.9443054199219], "page": 39, "span": [0, 42], "__ref_s3_data": null}], "text": "Figure 3-6 Result of the function ID query", "type": "paragraph", "name": "paragraph", "font": null}, {"prov": [{"bbox": [64.10499572753906, 282.97650146484375, 418.56524658203125, 296.5173034667969], "page": 39, "span": [0, 59], "__ref_s3_data": null}], "text": "3.6.2 Creating group profiles for the users and their roles", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.9925994873047, 247.64495849609375, 532.9351806640625, 270.00384521484375], "page": 39, "span": [0, 154], "__ref_s3_data": null}], "text": "Assuming that all the employees have a valid user profile, the next step is to create group profiles to group the employees. Complete the following steps:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.8000030517578, 230.29901123046875, 357.9049987792969, 240.49017333984375], "page": 39, "span": [0, 51], "__ref_s3_data": null}], "text": "- 1. In this example, there are three group profiles:", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.3660430908203, 213.640380859375, 313.8529357910156, 224.04693603515625], "page": 39, "span": [0, 30], "__ref_s3_data": null}], "text": "- -HR (Human Resource personnel)", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.38209533691406, 201.1751708984375, 242.8311767578125, 211.79541015625], "page": 39, "span": [0, 15], "__ref_s3_data": null}], "text": "- -MGR (Managers)", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.16091918945312, 189.66497802734375, 245.60702514648438, 199.9373779296875], "page": 39, "span": [0, 16], "__ref_s3_data": null}], "text": "- -EMP (Employees)", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.5602569580078, 160.22564697265625, 547.29541015625, 182.7015380859375], "page": 39, "span": [0, 174], "__ref_s3_data": null}], "text": "These are created by creating user profiles with no password. Example 3-4 shows the Create User Profile ( CRTUSRPRF ) CL commands that you use to create these group profiles.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.35838317871094, 138.73602294921875, 285.8739318847656, 148.7242431640625], "page": 39, "span": [0, 35], "__ref_s3_data": null}], "text": "Example 3-4 Creating group profiles", "type": "paragraph", "name": "paragraph", "font": null}, {"prov": [{"bbox": [136.8000030517578, 98.0676040649414, 441.59588623046875, 130.84197998046875], "page": 39, "span": [0, 174], "__ref_s3_data": null}], "text": "CRTUSRPRF USRPRF(EMP) PASSWORD() TEXT('Employees Group') CRTUSRPRF USRPRF(MGR) PASSWORD() TEXT('Managers Group') CRTUSRPRF USRPRF(HR) PASSWORD() TEXT('Human Resources Group')", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [344.5692443847656, 27.8846435546875, 523.6016235351562, 37.2572021484375], "page": 39, "span": [0, 40], "__ref_s3_data": null}], "text": "Chapter 3. Row and Column Access Control", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [535.6176147460938, 27.93828010559082, 547.2591552734375, 37.63116455078125], "page": 39, "span": [0, 2], "__ref_s3_data": null}], "text": "23", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [63.88653564453125, 27.93828010559082, 78.4020004272461, 37.68133544921875], "page": 40, "span": [0, 2], "__ref_s3_data": null}], "text": "24", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.27753448486328, 28.0159912109375, 334.4214172363281, 37.33148193359375], "page": 40, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [136.0978240966797, 674.9645385742188, 547.2675170898438, 721.5997314453125], "page": 40, "span": [0, 308], "__ref_s3_data": null}], "text": "- 2. You now must assign users to a group profile. Employees go in to the EMP group profile, Managers go into the MGR group profile, and Human Resource employees go into the HR group profile. For simplicity, this example selects one employee (DSSMITH), one manager (TQSPENSER), and one HR analyst (VGLUCCHESS).", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [156.851318359375, 646.6730346679688, 533.43896484375, 657.3757934570312], "page": 40, "span": [0, 81], "__ref_s3_data": null}], "text": "Note: Neither of the consultants (MCAIN and HBEDOYA) belong to any group profile.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.17131805419922, 609.3201293945312, 360.1609802246094, 623.2008056640625], "page": 40, "span": [0, 44], "__ref_s3_data": null}], "text": "3.6.3 Demonstrating data access without RCAC", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.1033477783203, 574.2984619140625, 540.3065185546875, 596.827392578125], "page": 40, "span": [0, 127], "__ref_s3_data": null}], "text": "Before implementing RCAC, run some simple SQL statements to demonstrate data access without RCAC. Complete the following steps:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.76841735839844, 545.2590942382812, 547.2156982421875, 567.540771484375], "page": 40, "span": [0, 124], "__ref_s3_data": null}], "text": "- 1. The first SQL statement, which is shown in Example 3-5, basically counts the total number of rows in the EMPLOYEES table.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.413330078125, 523.678955078125, 334.6294250488281, 533.3753662109375], "page": 40, "span": [0, 44], "__ref_s3_data": null}], "text": "Example 3-5 Counting the number of employees", "type": "paragraph", "name": "paragraph", "font": null}, {"prov": [{"bbox": [136.42640686035156, 505.2223815917969, 406.6163635253906, 516.35400390625], "page": 40, "span": [0, 54], "__ref_s3_data": null}], "text": "SELECT COUNT(*) as ROW_COUNT FROM HR_SCHEMA.EMPLOYEES;", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [150.4588623046875, 469.52520751953125, 545.1071166992188, 492.0571594238281], "page": 40, "span": [0, 103], "__ref_s3_data": null}], "text": "The result of this query is shown in Figure 3-7, which is the total number of employees of the company.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.30203247070312, 407.2127990722656, 272.9559326171875, 416.7283630371094], "page": 40, "span": [0, 30], "__ref_s3_data": null}], "text": "Figure 3-7 Number of employees", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/26"}, {"prov": [{"bbox": [136.12722778320312, 368.23193359375, 547.2517700195312, 390.7404479980469], "page": 40, "span": [0, 160], "__ref_s3_data": null}], "text": "- 2. Run a second SQL statement (shown in Example 3-6) that lists the employees. If you have read access to the table, you see all the rows no matter who you are.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.4648895263672, 347.0237731933594, 369.71875, 356.55615234375], "page": 40, "span": [0, 55], "__ref_s3_data": null}], "text": "Example 3-6 Displaying the information of the Employees", "type": "paragraph", "name": "paragraph", "font": null}, {"prov": [{"bbox": [136.8000030517578, 245.90841674804688, 286.67803955078125, 338.681884765625], "page": 40, "span": [0, 124], "__ref_s3_data": null}], "text": "SELECT EMPLOYEE_ID, LAST_NAME, JOB_DESCRIPTION, DATE_OF_BIRTH, TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE FROM HR_SCHEMA.EMPLOYEES", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [150.51434326171875, 710.7474365234375, 356.252197265625, 721.2857666015625], "page": 41, "span": [0, 48], "__ref_s3_data": null}], "text": "The result of this query is shown in Figure 3-8.", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [64.24310302734375, 312.0570068359375, 276.3370361328125, 321.3759460449219], "page": 41, "span": [0, 49], "__ref_s3_data": null}], "text": "Figure 3-8 List of employees without RCAC enabled", "type": "paragraph", "name": "paragraph", "font": null}, {"prov": [{"bbox": [64.31729888916016, 278.92535400390625, 339.9589538574219, 292.3377685546875], "page": 41, "span": [0, 43], "__ref_s3_data": null}], "text": "3.6.4 Defining and creating row permissions", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.47174072265625, 255.93072509765625, 484.33428955078125, 265.88421630859375], "page": 41, "span": [0, 72], "__ref_s3_data": null}], "text": "Implement RCAC on the EMPLOYEES table by completing the following steps:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.80001831054688, 226.7816162109375, 519.3287963867188, 249.22784423828125], "page": 41, "span": [0, 104], "__ref_s3_data": null}], "text": "- 1. Start by defining a row permission. In this example, the rules to enforce include the following ones:", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.23526000976562, 209.737060546875, 392.5151062011719, 219.894287109375], "page": 41, "span": [0, 48], "__ref_s3_data": null}], "text": "- -Human Resources employees can see all the rows.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.32948303222656, 197.8070068359375, 484.94476318359375, 207.68096923828125], "page": 41, "span": [0, 70], "__ref_s3_data": null}], "text": "- -Managers can see only information for the employees that they manage.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.46128845214844, 185.70257568359375, 371.5732421875, 195.94891357421875], "page": 41, "span": [0, 46], "__ref_s3_data": null}], "text": "- -Employees can see only their own information.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.29678344726562, 173.96624755859375, 415.18304443359375, 183.808837890625], "page": 41, "span": [0, 58], "__ref_s3_data": null}], "text": "- -Consultants are not allowed to see any rows in the table.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [344.6938781738281, 27.9832763671875, 523.6016235351562, 37.16973876953125], "page": 41, "span": [0, 40], "__ref_s3_data": null}], "text": "Chapter 3. Row and Column Access Control", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [535.7025146484375, 27.93828010559082, 547.2591552734375, 37.624755859375], "page": 41, "span": [0, 2], "__ref_s3_data": null}], "text": "25", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [63.85331726074219, 27.93828010559082, 78.4020004272461, 37.61859130859375], "page": 42, "span": [0, 2], "__ref_s3_data": null}], "text": "26", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.32594299316406, 28.073486328125, 334.4214172363281, 37.32861328125], "page": 42, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [150.2159423828125, 710.8866577148438, 538.560302734375, 721.3442993164062], "page": 42, "span": [0, 85], "__ref_s3_data": null}], "text": "To implement this row permission, run the SQL statement that is shown in Example 3-7.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.3914031982422, 689.8576049804688, 383.7792053222656, 699.560791015625], "page": 42, "span": [0, 56], "__ref_s3_data": null}], "text": "Example 3-7 Creating a permission for the EMPLOYEE table", "type": "paragraph", "name": "paragraph", "font": null}, {"prov": [{"bbox": [134.622802734375, 547.480224609375, 547.7505493164062, 686.9898681640625], "page": 42, "span": [0, 438], "__ref_s3_data": null}], "text": "CREATE PERMISSION HR_SCHEMA.PERMISSION1_ON_EMPLOYEES ON HR_SCHEMA.EMPLOYEES AS EMPLOYEES FOR ROWS WHERE ( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1 ) OR ( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND ( EMPLOYEES . MANAGER_OF_EMPLOYEE = SESSION_USER OR EMPLOYEES . USER_ID = SESSION_USER ) ) OR ( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1 AND EMPLOYEES . USER_ID = SESSION_USER ) ENFORCED FOR ALL ACCESS ENABLE ;", "type": "paragraph", "name": "Code", "font": null}, {"prov": [{"bbox": [135.9988250732422, 504.1722717285156, 539.8582153320312, 538.8099365234375], "page": 42, "span": [0, 212], "__ref_s3_data": null}], "text": "- 2. Look at the definition of the table and see the permissions, as shown in Figure 3-9. QIBM_DEFAULT_EMPLOYEE_HR_SCHEMA is the default permission, as described in 3.1.2, \"Enabling and activating RCAC\" on page 16.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.43289947509766, 291.20758056640625, 331.18115234375, 300.5486755371094], "page": 42, "span": [0, 63], "__ref_s3_data": null}], "text": "Figure 3-9 Row permissions that are shown in System i Navigator", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/27"}, {"prov": [{"bbox": [64.18317413330078, 258.0186767578125, 327.4058837890625, 271.5654296875], "page": 42, "span": [0, 40], "__ref_s3_data": null}], "text": "3.6.5 Defining and creating column masks", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.35951232910156, 223.205078125, 526.414306640625, 245.205810546875], "page": 42, "span": [0, 96], "__ref_s3_data": null}], "text": "Define the different masks for the columns that are sensitive by completing the following steps:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.79542541503906, 194.23492431640625, 538.78564453125, 216.73974609375], "page": 42, "span": [0, 104], "__ref_s3_data": null}], "text": "- 1. Start with the DAY_OF_BIRTH column. In this example, the rules to enforce include the following ones:", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.26760864257812, 177.4149169921875, 467.65625, 187.36602783203125], "page": 42, "span": [0, 67], "__ref_s3_data": null}], "text": "- -Human Resources can see the entire date of birth of the employees.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.2598114013672, 160.2803955078125, 375.3867492675781, 170.74359130859375], "page": 42, "span": [0, 48], "__ref_s3_data": null}], "text": "- -Employees can see only their own date of birth.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.43798828125, 143.18109130859375, 547.2565307617188, 153.414794921875], "page": 42, "span": [0, 83], "__ref_s3_data": null}], "text": "- -Managers can see the date of birth of their employees masked with YEAR being 9999.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.7313232421875, 126.41015625, 530.0606689453125, 136.70220947265625], "page": 42, "span": [0, 82], "__ref_s3_data": null}], "text": "To implement this column mask, run the SQL statement that is shown in Example 3-8.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.27670288085938, 105.1051025390625, 403.9977722167969, 114.8758544921875], "page": 42, "span": [0, 58], "__ref_s3_data": null}], "text": "Example 3-8 Creation of a mask on the DATE_OF_BIRTH column", "type": "paragraph", "name": "paragraph", "font": null}, {"prov": [{"bbox": [136.8000030517578, 63.80750274658203, 416.6361083984375, 96.58187866210938], "page": 42, "span": [0, 114], "__ref_s3_data": null}], "text": "CREATE MASK HR_SCHEMA.MASK_DATE_OF_BIRTH_ON_EMPLOYEES ON HR_SCHEMA.EMPLOYEES AS EMPLOYEES FOR COLUMN DATE_OF_BIRTH", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.79959106445312, 699.5669555664062, 166.73934936523438, 720.341552734375], "page": 43, "span": [0, 11], "__ref_s3_data": null}], "text": "RETURN CASE", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.79959106445312, 530.429443359375, 521.5742797851562, 700.2308349609375], "page": 43, "span": [0, 437], "__ref_s3_data": null}], "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR', 'EMP' ) = 1 THEN EMPLOYEES . DATE_OF_BIRTH WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER = EMPLOYEES . USER_ID THEN EMPLOYEES . DATE_OF_BIRTH WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER <> EMPLOYEES . USER_ID THEN ( 9999 || '-' || MONTH ( EMPLOYEES . DATE_OF_BIRTH ) || '-' || DAY (EMPLOYEES.DATE_OF_BIRTH )) ELSE NULL END ENABLE ;", "type": "paragraph", "name": "Code", "font": null}, {"prov": [{"bbox": [135.86044311523438, 495.22808837890625, 547.2122192382812, 517.5462646484375], "page": 43, "span": [0, 136], "__ref_s3_data": null}], "text": "- 2. The other column to mask in this example is the TAX_ID information. In this example, the rules to enforce include the following ones:", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.1599578857422, 478.3014831542969, 469.1528015136719, 488.6722717285156], "page": 43, "span": [0, 62], "__ref_s3_data": null}], "text": "- -Human Resources can see the unmasked TAX_ID of the employees.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.2740936279297, 461.1424560546875, 403.95953369140625, 471.45074462890625], "page": 43, "span": [0, 50], "__ref_s3_data": null}], "text": "- -Employees can see only their own unmasked TAX_ID.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.4427947998047, 432.28228759765625, 545.16845703125, 454.6841735839844], "page": 43, "span": [0, 129], "__ref_s3_data": null}], "text": "- -Managers see a masked version of TAX_ID with the first five characters replaced with the X character (for example, XXX-XX-1234).", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.51747131347656, 414.8310852050781, 529.463623046875, 425.3660888671875], "page": 43, "span": [0, 77], "__ref_s3_data": null}], "text": "- -Any other person sees the entire TAX_ID as masked, for example, XXX-XX-XXXX.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.69093322753906, 397.82440185546875, 530.060302734375, 408.19866943359375], "page": 43, "span": [0, 82], "__ref_s3_data": null}], "text": "- To implement this column mask, run the SQL statement that is shown in Example 3-9.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.25662231445312, 376.9618835449219, 352.31475830078125, 386.553955078125], "page": 43, "span": [0, 48], "__ref_s3_data": null}], "text": "Example 3-9 Creating a mask on the TAX_ID column", "type": "paragraph", "name": "paragraph", "font": null}, {"prov": [{"bbox": [135.95343017578125, 103.45672607421875, 535.87548828125, 373.4818115234375], "page": 43, "span": [0, 590], "__ref_s3_data": null}], "text": "CREATE MASK HR_SCHEMA.MASK_TAX_ID_ON_EMPLOYEES ON HR_SCHEMA.EMPLOYEES AS EMPLOYEES FOR COLUMN TAX_ID RETURN CASE WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1 THEN EMPLOYEES . TAX_ID WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER = EMPLOYEES . USER_ID THEN EMPLOYEES . TAX_ID WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER <> EMPLOYEES . USER_ID THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( EMPLOYEES . TAX_ID , 8 , 4 ) ) WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1 THEN EMPLOYEES . TAX_ID ELSE 'XXX-XX-XXXX' END ENABLE ;", "type": "paragraph", "name": "Code", "font": null}, {"prov": [{"bbox": [344.5617370605469, 27.86419677734375, 523.6016235351562, 37.32916259765625], "page": 43, "span": [0, 40], "__ref_s3_data": null}], "text": "Chapter 3. Row and Column Access Control", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [535.6422729492188, 27.93828010559082, 547.2591552734375, 37.82464599609375], "page": 43, "span": [0, 2], "__ref_s3_data": null}], "text": "27", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [136.14459228515625, 710.7732543945312, 449.952392578125, 721.3890380859375], "page": 44, "span": [0, 65], "__ref_s3_data": null}], "text": "- 3. Figure 3-10 shows the masks that are created in the HR_SCHEMA.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.17350769042969, 610.1016235351562, 294.42578125, 619.2543334960938], "page": 44, "span": [0, 52], "__ref_s3_data": null}], "text": "Figure 3-10 Column masks shown in System i Navigator", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/28"}, {"prov": [{"bbox": [64.29059600830078, 577.004638671875, 203.98521423339844, 590.3381958007812], "page": 44, "span": [0, 21], "__ref_s3_data": null}], "text": "3.6.6 Activating RCAC", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.1686553955078, 529.5360107421875, 547.2256469726562, 563.902587890625], "page": 44, "span": [0, 265], "__ref_s3_data": null}], "text": "Now that you have created the row permission and the two column masks, RCAC must be activated. The row permission and the two column masks are enabled (last clause in the scripts), but now you must activate RCAC on the table. To do so, complete the following steps:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.5933074951172, 513.1278076171875, 409.4788818359375, 523.4700317382812], "page": 44, "span": [0, 57], "__ref_s3_data": null}], "text": "- 1. Run the SQL statements that are shown in Example 3-10.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.31597900390625, 491.5029296875, 375.2909851074219, 501.5721435546875], "page": 44, "span": [0, 51], "__ref_s3_data": null}], "text": "Example 3-10 Activating RCAC on the EMPLOYEES table", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.7803192138672, 473.9972839355469, 376.6766052246094, 484.90777587890625], "page": 44, "span": [0, 45], "__ref_s3_data": null}], "text": "- /* Active Row Access Control (permissions) */", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.8000030517578, 426.5678405761719, 354.86962890625, 471.3420715332031], "page": 44, "span": [0, 131], "__ref_s3_data": null}], "text": "/* Active Column Access Control (masks) ALTER TABLE HR_SCHEMA.EMPLOYEES ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL;", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [365.77313232421875, 462.5672912597656, 376.6766052246094, 471.3420715332031], "page": 44, "span": [0, 2], "__ref_s3_data": null}], "text": "*/", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.87640380859375, 378.27978515625, 540.8014526367188, 412.6735534667969], "page": 44, "span": [0, 231], "__ref_s3_data": null}], "text": "- 2. Look at the definition of the EMPLOYEE table, as shown in Figure 3-11. To do this, from the main navigation pane of System i Navigator, click Schemas \uf0ae HR_SCHEMA \uf0ae Tables , right-click the EMPLOYEES table, and click Definition .", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.33819580078125, 134.59954833984375, 348.354736328125, 143.758056640625], "page": 44, "span": [0, 65], "__ref_s3_data": null}], "text": "Figure 3-11 Selecting the EMPLOYEES table from System i Navigator", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/29"}, {"prov": [{"bbox": [63.84088897705078, 27.93828010559082, 78.4020004272461, 37.61041259765625], "page": 44, "span": [0, 2], "__ref_s3_data": null}], "text": "28", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.28304290771484, 28.056396484375, 334.4214172363281, 37.27587890625], "page": 44, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [135.99427795410156, 699.1064453125, 531.1966552734375, 721.436767578125], "page": 45, "span": [0, 152], "__ref_s3_data": null}], "text": "- 3. The EMPLOYEES table definition is displayed, as shown in Figure 3-12. Note that the Row access control and Column access control options are checked.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.06971740722656, 441.8953857421875, 356.7056579589844, 451.5973205566406], "page": 45, "span": [0, 47], "__ref_s3_data": null}], "text": "Figure 3-12 RCAC enabled on the EMPLOYEES table", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/30"}, {"prov": [{"bbox": [64.2018051147461, 409.5545349121094, 339.8397216796875, 423.00640869140625], "page": 45, "span": [0, 41], "__ref_s3_data": null}], "text": "3.6.7 Demonstrating data access with RCAC", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.7947235107422, 374.49847412109375, 547.259521484375, 396.53436279296875], "page": 45, "span": [0, 100], "__ref_s3_data": null}], "text": "You are now ready to start testing RCAC with the four different users. Complete the following steps:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.66810607910156, 332.9556884765625, 544.1072387695312, 367.43341064453125], "page": 45, "span": [0, 243], "__ref_s3_data": null}], "text": "- 1. The first SQL statement that is shown in Example 3-11 illustrates the EMPLOYEE count. You know that there are 42 rows from the query that was run before RCAC was put in place (see 3.6.3, \"Demonstrating data access without RCAC\" on page 24).", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.4961700439453, 312.2276306152344, 279.97296142578125, 321.431640625], "page": 45, "span": [0, 28], "__ref_s3_data": null}], "text": "Example 3-11 EMPLOYEES count", "type": "paragraph", "name": "paragraph", "font": null}, {"prov": [{"bbox": [136.306396484375, 293.92047119140625, 406.6163635253906, 304.6670227050781], "page": 45, "span": [0, 54], "__ref_s3_data": null}], "text": "SELECT COUNT(*) as ROW_COUNT FROM HR_SCHEMA.EMPLOYEES;", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.95774841308594, 258.1456298828125, 511.5380859375, 280.7308044433594], "page": 45, "span": [0, 146], "__ref_s3_data": null}], "text": "- 2. The result of the query for a user that belongs to the HR group profile is shown in Figure 3-13. This user can see all the 42 rows (employees).", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.27264404296875, 196.52191162109375, 309.68194580078125, 206.06488037109375], "page": 45, "span": [0, 36], "__ref_s3_data": null}], "text": "Figure 3-13 Count of EMPLOYEES by HR", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/31"}, {"prov": [{"bbox": [136.16087341308594, 145.78839111328125, 540.7218627929688, 180.08966064453125], "page": 45, "span": [0, 216], "__ref_s3_data": null}], "text": "- 3. The result of the same query for a user who is logged on as TQSPENSER (Manager) is shown in Figure 3-14. TQSPENSER has five employees in his department and he can also see his own row, which is why the count is 6.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.1033172607422, 84.3720703125, 340.1351318359375, 94.15911865234375], "page": 45, "span": [0, 43], "__ref_s3_data": null}], "text": "Figure 3-14 Count of EMPLOYEES by a manager", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/32"}, {"prov": [{"bbox": [344.54718017578125, 27.9293212890625, 523.6016235351562, 37.26470947265625], "page": 45, "span": [0, 40], "__ref_s3_data": null}], "text": "Chapter 3. Row and Column Access Control", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [535.6342163085938, 27.93828010559082, 547.2591552734375, 37.72052001953125], "page": 45, "span": [0, 2], "__ref_s3_data": null}], "text": "29", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.19510650634766, 27.93828010559082, 78.4020004272461, 37.57171630859375], "page": 46, "span": [0, 2], "__ref_s3_data": null}], "text": "30", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.36414337158203, 28.0338134765625, 334.4214172363281, 37.2904052734375], "page": 46, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [135.79859924316406, 698.8319091796875, 547.213623046875, 721.3585815429688], "page": 46, "span": [0, 169], "__ref_s3_data": null}], "text": "- 4. The result of the same query that is run by an employee (DSSMITH) gives the result that is shown in Figure 3-15. Each employee can see only his or her own data (row).", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.97097778320312, 637.8975219726562, 347.41455078125, 647.4303588867188], "page": 46, "span": [0, 45], "__ref_s3_data": null}], "text": "Figure 3-15 Count of EMPLOYEES by an employee", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/33"}, {"prov": [{"bbox": [136.351318359375, 587.114501953125, 543.9885864257812, 621.2763061523438], "page": 46, "span": [0, 200], "__ref_s3_data": null}], "text": "- 5. The result of the same query that is run by the Consultant/DBE gives the result that is shown in Figure 3-16. The consultants/DBE can manage and implement RCAC, but they do not see any rows at all.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.17999267578125, 526.1991577148438, 345.2605285644531, 535.4434814453125], "page": 46, "span": [0, 46], "__ref_s3_data": null}], "text": "Figure 3-16 Count of EMPLOYEES by a consultant", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/34"}, {"prov": [{"bbox": [150.62869262695312, 499.5382995605469, 456.2101135253906, 509.34820556640625], "page": 46, "span": [0, 65], "__ref_s3_data": null}], "text": "Does the result make sense? Yes, it does because RCAC is enabled.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.16029357910156, 458.40106201171875, 544.2874145507812, 492.6539306640625], "page": 46, "span": [0, 262], "__ref_s3_data": null}], "text": "- 6. Run queries against the EMPLOYEES table. The query that is used in this example runs and tests with the four different user profiles and is the same query that was run in 3.6.3, \"Demonstrating data access without RCAC\" on page 24. It is shown in Example 3-12.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.2924041748047, 437.3970031738281, 396.5692138671875, 446.6560363769531], "page": 46, "span": [0, 62], "__ref_s3_data": null}], "text": "Example 3-12 SELECT statement to test with the different users", "type": "paragraph", "name": "paragraph", "font": null}, {"prov": [{"bbox": [134.74452209472656, 330.2794189453125, 548.0267333984375, 435.07708740234375], "page": 46, "span": [0, 124], "__ref_s3_data": null}], "text": "SELECT EMPLOYEE_ID, LAST_NAME, JOB_DESCRIPTION, DATE_OF_BIRTH, TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE FROM HR_SCHEMA.EMPLOYEES", "type": "paragraph", "name": "Code", "font": null}, {"prov": [{"bbox": [136.29183959960938, 699.2781372070312, 547.152587890625, 721.4707641601562], "page": 47, "span": [0, 145], "__ref_s3_data": null}], "text": "- 7. Figure 3-17 shows the results of the query for a Human Resources (VGLUCCHESS) user profile. The user can see all the rows and all the columns.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.41815185546875, 296.0057373046875, 338.3864440917969, 305.3443908691406], "page": 47, "span": [0, 64], "__ref_s3_data": null}], "text": "Figure 3-17 SQL statement result by Human Resources user profile", "type": "paragraph", "name": "paragraph", "font": null}, {"prov": [{"bbox": [136.21075439453125, 256.860107421875, 546.0484008789062, 279.45849609375], "page": 47, "span": [0, 139], "__ref_s3_data": null}], "text": "- 8. Figure 3-18 shows the results of the same query for the Manager (TQSPENSER). Notice the masking of the DATE_OF_BIRTH and TAX_ID columns.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.57685852050781, 165.2398681640625, 279.62469482421875, 174.60491943359375], "page": 47, "span": [0, 51], "__ref_s3_data": null}], "text": "Figure 3-18 SQL statement result by Manager profile", "type": "paragraph", "name": "paragraph", "font": null}, {"prov": [{"bbox": [136.3648223876953, 126.15972900390625, 518.9005737304688, 148.64361572265625], "page": 47, "span": [0, 145], "__ref_s3_data": null}], "text": "- 9. Figure 3-19 shows the results of the same query for an employee (DSSMITH). The employee can only see only his own data with no masking at all.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.505126953125, 77.33699798583984, 295.1390380859375, 86.79803466796875], "page": 47, "span": [0, 55], "__ref_s3_data": null}], "text": "Figure 3-19 SQL statement result by an employee profile", "type": "paragraph", "name": "paragraph", "font": null}, {"prov": [{"bbox": [344.6293640136719, 27.898193359375, 523.6016235351562, 37.2392578125], "page": 47, "span": [0, 40], "__ref_s3_data": null}], "text": "Chapter 3. Row and Column Access Control", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [535.7171630859375, 27.93828010559082, 547.2591552734375, 37.71160888671875], "page": 47, "span": [0, 2], "__ref_s3_data": null}], "text": "31", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.27489471435547, 27.93828010559082, 78.4020004272461, 37.553955078125], "page": 48, "span": [0, 2], "__ref_s3_data": null}], "text": "32", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.40065002441406, 28.07379150390625, 334.4214172363281, 37.27056884765625], "page": 48, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [136.8000030517578, 699.0477294921875, 547.2752685546875, 721.3038330078125], "page": 48, "span": [0, 117], "__ref_s3_data": null}], "text": "- 10.Figure 3-20 shows the results of the same query for the Consultant/DBE, who is not one of the company's employees.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.38975524902344, 617.4529418945312, 308.0195617675781, 626.5992431640625], "page": 48, "span": [0, 58], "__ref_s3_data": null}], "text": "Figure 3-20 SQL statement result by Consultant/DBE profile", "type": "paragraph", "name": "paragraph", "font": null}, {"prov": [{"bbox": [64.18441009521484, 584.9585571289062, 408.9774475097656, 598.262939453125], "page": 48, "span": [0, 52], "__ref_s3_data": null}], "text": "3.6.8 Demonstrating data access with a view and RCAC", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.6727294921875, 561.6839599609375, 515.0767822265625, 571.9627685546875], "page": 48, "span": [0, 83], "__ref_s3_data": null}], "text": "This section covers data access with a view and RCAC. Complete the following steps:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.79998779296875, 520.4425048828125, 547.2307739257812, 554.5849609375], "page": 48, "span": [0, 227], "__ref_s3_data": null}], "text": "- 1. The EMPLOYEES table has a column that is called On_Leave_Flag (Figure 3-21 on page 33) indicating that the employee is on Leave of Absence. For this purpose, a view is created that lists only the employees that are on leave.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.41194152832031, 215.8448486328125, 198.96627807617188, 225.3311767578125], "page": 49, "span": [0, 30], "__ref_s3_data": null}], "text": "Figure 3-21 Employees on leave", "type": "paragraph", "name": "paragraph", "font": null}, {"prov": [{"bbox": [136.17755126953125, 189.02825927734375, 355.6940002441406, 199.36651611328125], "page": 49, "span": [0, 49], "__ref_s3_data": null}], "text": "- 2. Example 3-13 shows the definition of the view.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.4932098388672, 167.56768798828125, 311.614013671875, 177.39019775390625], "page": 49, "span": [0, 39], "__ref_s3_data": null}], "text": "Example 3-13 VIew of employees on leave", "type": "paragraph", "name": "paragraph", "font": null}, {"prov": [{"bbox": [136.7435302734375, 65.85064697265625, 426.59613037109375, 161.1607666015625], "page": 49, "span": [0, 159], "__ref_s3_data": null}], "text": "CREATE VIEW HR_SCHEMA.EMPLOYEES_ON_LEAVE (EMPLOYEE_ID, FIRST_NAME, MIDDLE_INITIAL, LAST_NAME, WORK_DEPARTMENT, PHONE_EXTENSION, JOB_DESCRIPTION, DATE_OF_BIRTH,", "type": "paragraph", "name": "Code", "font": null}, {"prov": [{"bbox": [344.5408020019531, 27.86322021484375, 523.6016235351562, 37.31829833984375], "page": 49, "span": [0, 40], "__ref_s3_data": null}], "text": "Chapter 3. Row and Column Access Control", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [535.63330078125, 27.93828010559082, 547.2591552734375, 37.6053466796875], "page": 49, "span": [0, 2], "__ref_s3_data": null}], "text": "33", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [258.8564758300781, 674.08154296875, 446.6356201171875, 720.8930053710938], "page": 50, "span": [0, 53], "__ref_s3_data": null}], "text": "TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE, ON_LEAVE_FLAG )", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.8447265625, 663.56787109375, 151.74000549316406, 673.0587768554688], "page": 50, "span": [0, 2], "__ref_s3_data": null}], "text": "AS", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.8000030517578, 531.5698852539062, 271.67828369140625, 660.3428344726562], "page": 50, "span": [0, 164], "__ref_s3_data": null}], "text": "SELECT EMPLOYEE_ID, FIRST_NAME , MIDDLE_INITIAL, LAST_NAME , WORK_DEPARTMENT, PHONE_EXTENSION, JOB_DESCRIPTION, DATE_OF_BIRTH, TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE,", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [155.53102111816406, 519.570068359375, 236.6987762451172, 529.690673828125], "page": 50, "span": [0, 13], "__ref_s3_data": null}], "text": "ON_LEAVE_FLAG", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.8000030517578, 507.57025146484375, 157.71849060058594, 517.0009765625], "page": 50, "span": [0, 4], "__ref_s3_data": null}], "text": "FROM", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [167.92576599121094, 507.57025146484375, 271.67828369140625, 517.4595947265625], "page": 50, "span": [0, 19], "__ref_s3_data": null}], "text": "HR_SCHEMA.EMPLOYEES", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.10264587402344, 495.5704345703125, 161.95062255859375, 505.1119384765625], "page": 50, "span": [0, 5], "__ref_s3_data": null}], "text": "WHERE", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [171.0566864013672, 494.4849853515625, 271.67828369140625, 505.46636962890625], "page": 50, "span": [0, 20], "__ref_s3_data": null}], "text": "ON_LEAVE_FLAG = 'Y';", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.068359375, 454.30218505859375, 547.3662109375, 476.58831787109375], "page": 50, "span": [0, 115], "__ref_s3_data": null}], "text": "- 3. Use the view to query the data and see who is on leave. The SQL statement that is used is shown in Example 3-14:", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.2685546875, 432.4124450683594, 354.4166564941406, 442.06927490234375], "page": 50, "span": [0, 49], "__ref_s3_data": null}], "text": "Example 3-14 SQL statement for employees on leave", "type": "paragraph", "name": "paragraph", "font": null}, {"prov": [{"bbox": [136.8000030517578, 331.58837890625, 266.6982727050781, 424.36187744140625], "page": 50, "span": [0, 104], "__ref_s3_data": null}], "text": "SELECT EMPLOYEE_ID, LAST_NAME, JOB_DESCRIPTION, DATE_OF_BIRTH, TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE FROM", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [167.6361541748047, 331.1232604980469, 316.67755126953125, 341.4685363769531], "page": 50, "span": [0, 29], "__ref_s3_data": null}], "text": "HR_SCHEMA.EMPLOYEES_ON_LEAVE;", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.88938903808594, 270.649169921875, 547.2506713867188, 317.5455322265625], "page": 50, "span": [0, 264], "__ref_s3_data": null}], "text": "- 4. Start with the Human Resources person (VGLUCCHESS) and see what is the result of the previous query. He sees the two employees that are on leave and no masking is done over the DATE_OF_BIRTH and TAX_ID columns. The results of the query are shown in Figure 3-22.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.29961395263672, 212.2880859375, 301.89312744140625, 222.33502197265625], "page": 50, "span": [0, 53], "__ref_s3_data": null}], "text": "Figure 3-22 Employees on leave - Human Resources user", "type": "paragraph", "name": "paragraph", "font": null}, {"prov": [{"bbox": [136.30172729492188, 149.5836181640625, 546.509521484375, 196.0367431640625], "page": 50, "span": [0, 285], "__ref_s3_data": null}], "text": "- 5. Figure 3-23 shows what the Manager (TQSPENSER) gets when he runs the same query over the view. He sees only the employees that are on leave that are managed by him. In this example, it is one employee. The columns are masked, which confirms that RCAC is applied to the view as well.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.38579559326172, 98.30462646484375, 313.5398254394531, 108.1334228515625], "page": 50, "span": [0, 58], "__ref_s3_data": null}], "text": "Figure 3-23 Employee on leave - Manager of Field Reps user", "type": "paragraph", "name": "paragraph", "font": null}, {"prov": [{"bbox": [64.1474609375, 27.93828010559082, 78.4020004272461, 37.6011962890625], "page": 50, "span": [0, 2], "__ref_s3_data": null}], "text": "34", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.26473999023438, 27.98931884765625, 334.4214172363281, 37.29864501953125], "page": 50, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [136.05897521972656, 699.046630859375, 536.1886596679688, 721.3394165039062], "page": 51, "span": [0, 170], "__ref_s3_data": null}], "text": "- 6. Figure 3-24 shows what the employee (DSSMITH) gets when he runs the same query over the view. The employee gets an empty set or he gets only himself if he is on leave.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.79974365234375, 684.2783813476562, 67.5686264038086, 693.4913940429688], "page": 51, "span": [0, 1], "__ref_s3_data": null}], "text": ".", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.34432983398438, 627.0074462890625, 265.8516540527344, 636.3045043945312], "page": 51, "span": [0, 46], "__ref_s3_data": null}], "text": "Figure 3-24 Employees on leave - employee user", "type": "paragraph", "name": "paragraph", "font": null}, {"prov": [{"bbox": [344.6600646972656, 27.9105224609375, 523.6016235351562, 37.25311279296875], "page": 51, "span": [0, 40], "__ref_s3_data": null}], "text": "Chapter 3. Row and Column Access Control", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [535.7924194335938, 27.93828010559082, 547.2591552734375, 37.69573974609375], "page": 51, "span": [0, 2], "__ref_s3_data": null}], "text": "35", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.35157775878906, 27.93828010559082, 78.4020004272461, 37.707763671875], "page": 52, "span": [0, 2], "__ref_s3_data": null}], "text": "36", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.37352752685547, 27.9476318359375, 334.5318603515625, 37.489013671875], "page": 52, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/35"}, {"prov": [{"bbox": [81.0, 517.019287109375, 115.13253021240234, 523.457275390625], "page": 53, "span": [0, 10], "__ref_s3_data": null}], "text": "Chapter 4.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [500.3999938964844, 661.8682861328125, 522.6177368164062, 699.611083984375], "page": 53, "span": [0, 1], "__ref_s3_data": null}], "text": "4", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.96546936035156, 451.1016845703125, 532.0337524414062, 538.5458984375], "page": 53, "span": [0, 59], "__ref_s3_data": null}], "text": "Implementing Row and Column Access Control: Banking example", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.8340301513672, 367.058837890625, 546.1500854492188, 413.33544921875], "page": 53, "span": [0, 289], "__ref_s3_data": null}], "text": "This chapter illustrates the Row and Column Access Control (RCAC) concepts using a banking example. Appendix A, \"Database definitions for the RCAC banking example\" on page 121 provides a script that you can use to create all the database definitions or DDLs to re-create this RCAC example.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.71417236328125, 344.93609619140625, 347.4121398925781, 355.2895812988281], "page": 53, "span": [0, 49], "__ref_s3_data": null}], "text": "The following topics are covered in this chapter:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.7564697265625, 327.7724304199219, 392.97119140625, 338.0458679199219], "page": 53, "span": [0, 67], "__ref_s3_data": null}], "text": "- GLYPH Business requirements for the RCAC banking scenario", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.56719970703125, 315.9309387207031, 368.54632568359375, 326.4755554199219], "page": 53, "span": [0, 67], "__ref_s3_data": null}], "text": "- GLYPH Description of the users roles and responsibilities", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.7265167236328, 303.9350280761719, 261.45440673828125, 313.9096374511719], "page": 53, "span": [0, 38], "__ref_s3_data": null}], "text": "- GLYPH Implementation of RCAC", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [63.681270599365234, 27.83880615234375, 257.24334716796875, 37.34552001953125], "page": 53, "span": [0, 48], "__ref_s3_data": null}], "text": "' Copyright IBM Corp. 2014. All rights reserved.", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [535.5507202148438, 27.93828010559082, 547.2591552734375, 37.83416748046875], "page": 53, "span": [0, 2], "__ref_s3_data": null}], "text": "37", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.15269470214844, 702.2404174804688, 512.5513916015625, 718.7112426757812], "page": 54, "span": [0, 55], "__ref_s3_data": null}], "text": "4.1 Business requirements for the RCAC banking scenario", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.70774841308594, 663.635009765625, 543.9003295898438, 686.0623779296875], "page": 54, "span": [0, 189], "__ref_s3_data": null}], "text": "As part of a new internet banking project, the Bank decides to raise the level of data access control on the following three tables that are involved in the new customer-facing application:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.7441864013672, 647.138916015625, 214.6067352294922, 657.2281494140625], "page": 54, "span": [0, 25], "__ref_s3_data": null}], "text": "- GLYPH CUSTOMERS", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.63128662109375, 635.1390991210938, 206.64071655273438, 645.2169189453125], "page": 54, "span": [0, 24], "__ref_s3_data": null}], "text": "- GLYPH ACCOUNTS", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.5100555419922, 623.1392822265625, 229.18223571777344, 633.5086669921875], "page": 54, "span": [0, 28], "__ref_s3_data": null}], "text": "- GLYPH TRANSACTIONS", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.0419464111328, 541.180419921875, 547.2745971679688, 611.2938232421875], "page": 54, "span": [0, 471], "__ref_s3_data": null}], "text": "RCAC will be used to restrict access to the rows in these three tables by using permissions, and to restrict column values by using masks. The default position is that no user can access the rows in the tables. From there, specific bank employees are allowed access only to the rows for their job responsibilities. In addition, columns containing personal or sensitive data are masked appropriately. Bank customers are allowed access to only their rows and column values.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.87716674804688, 458.8881530761719, 546.8505859375, 529.3848266601562], "page": 54, "span": [0, 469], "__ref_s3_data": null}], "text": "In this example, it is assumed that the Bank employees have access to the tables when working on the premises only. Employee access to data is provided by programs and tools using standard DB2 interfaces, such as embedded SQL, ODBC, JDBC, and CLI. The database connection authentication for these interfaces uses the employee's personal and unique IBM i user profile. Operating in their professional role, employees do not have access to bank data through the Internet.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.72178649902344, 364.9400329589844, 547.270751953125, 447.2520446777344], "page": 54, "span": [0, 571], "__ref_s3_data": null}], "text": "Bank customers have access to their accounts and transactions by using a new web application. Each customer has unique credentials for logging in to the application. The authentication of the customer is handled by the web server. After the customer is authenticated, the web server establishes a connection to DB2 for data access. This connection uses a common IBM i user profile that is known as WEBUSER. This user profile is secured and is used only by the web application. No Bank employee has access to the WEBUSER profile, and no customer has an IBM i user profile.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.73001098632812, 295.1842041015625, 547.2139892578125, 353.10443115234375], "page": 54, "span": [0, 350], "__ref_s3_data": null}], "text": "The customer's identity is passed to DB2 by using a global variable. The global variable is secured and can be accessed only by the WEBUSER. The web application sets the CUSTOMER_LOGIN_ID variable to the customer's login value. This value is compared to the customer's login value that is found in the CUSTOMER_LOGIN_ID column of the CUSTOMERS table.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.76414489746094, 261.1648254394531, 547.2429809570312, 283.3126525878906], "page": 54, "span": [0, 120], "__ref_s3_data": null}], "text": "Applications that do not use the web interface do not have to be changed because the global variable is NULL by default.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.15193939208984, 27.93828010559082, 78.4020004272461, 37.517578125], "page": 54, "span": [0, 2], "__ref_s3_data": null}], "text": "38", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.28313446044922, 28.07989501953125, 334.4214172363281, 37.28369140625], "page": 54, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [135.5806884765625, 710.7797241210938, 442.2786865234375, 721.3082275390625], "page": 55, "span": [0, 70], "__ref_s3_data": null}], "text": "A diagram of the internet banking architecture is shown in Figure 4-1:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.6310577392578, 670.2985229492188, 547.3546142578125, 704.576171875], "page": 55, "span": [0, 200], "__ref_s3_data": null}], "text": "- GLYPH The row permission and column masks for the CUSTOMERS table are based on the group of which the user profile is part. If the user is a customer, their specific login ID also is tested.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.43284606933594, 629.2459716796875, 546.7332153320312, 663.6553955078125], "page": 55, "span": [0, 203], "__ref_s3_data": null}], "text": "- GLYPH The row permission and column mask for the ACCOUNTS table are based on the CUSTOMERS table permission rules. A subquery is used to connect the accounts (child) with the customer (parent).", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.4942169189453, 576.0048828125, 546.2234497070312, 622.8255615234375], "page": 55, "span": [0, 284], "__ref_s3_data": null}], "text": "- GLYPH The row permission for the TRANSACTIONS table is based on the ACCOUNTS table permission rules and the CUSTOMERS table permission rules. A subquery is used to connect the transactions (child) with the account (parent) and the account (child) with the customer (parent).", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.07473754882812, 293.3678894042969, 286.37646484375, 302.353271484375], "page": 55, "span": [0, 35], "__ref_s3_data": null}], "text": "Figure 4-1 Internet banking example", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/36"}, {"prov": [{"bbox": [64.41133880615234, 250.48199462890625, 475.6933898925781, 266.62109375], "page": 55, "span": [0, 55], "__ref_s3_data": null}], "text": "4.2 Description of the users roles and responsibilities", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.86761474609375, 211.77857971191406, 533.134521484375, 234.0225830078125], "page": 55, "span": [0, 99], "__ref_s3_data": null}], "text": "During the requirements gathering phase, the following groups of users are identified and codified:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.75192260742188, 194.41461181640625, 395.1046142578125, 204.55694580078125], "page": 55, "span": [0, 70], "__ref_s3_data": null}], "text": "- GLYPH SECURITY: Security officer and security administrators", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.67442321777344, 182.11224365234375, 266.7660217285156, 192.36444091796875], "page": 55, "span": [0, 39], "__ref_s3_data": null}], "text": "- GLYPH DBE: Database engineers", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.70191955566406, 170.73941040039062, 319.2432861328125, 180.76068115234375], "page": 55, "span": [0, 51], "__ref_s3_data": null}], "text": "- GLYPH ADMIN: Bank business administrators", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.53024291992188, 158.73960876464844, 246.766357421875, 168.793212890625], "page": 55, "span": [0, 36], "__ref_s3_data": null}], "text": "- GLYPH TELLER: Bank tellers", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.38711547851562, 146.606201171875, 365.1325378417969, 156.5809326171875], "page": 55, "span": [0, 59], "__ref_s3_data": null}], "text": "- GLYPH CUSTOMER: Bank customers using the internet", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.63414001464844, 134.40423583984375, 325.77801513671875, 144.58380126953125], "page": 55, "span": [0, 53], "__ref_s3_data": null}], "text": "- GLYPH PUBLIC: Anyone not already in a group", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [214.27481079101562, 28.0194091796875, 523.5935668945312, 37.27288818359375], "page": 55, "span": [0, 70], "__ref_s3_data": null}], "text": "Chapter 4. Implementing Row and Column Access Control: Banking example", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [535.5966186523438, 27.93828010559082, 547.2591552734375, 37.78082275390625], "page": 55, "span": [0, 2], "__ref_s3_data": null}], "text": "39", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.19805908203125, 27.93828010559082, 78.4020004272461, 37.79486083984375], "page": 56, "span": [0, 2], "__ref_s3_data": null}], "text": "40", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.33177947998047, 28.06304931640625, 334.4214172363281, 37.26739501953125], "page": 56, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [136.27764892578125, 687.2786865234375, 547.2127075195312, 721.2992553710938], "page": 56, "span": [0, 231], "__ref_s3_data": null}], "text": "Based on their respective roles and responsibilities, the users (that is, a group) are controlled by row permissions and column masks. The chart that is shown in Figure 4-2 shows the rules for row and column access in this example.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.13352966308594, 373.94036865234375, 317.8505554199219, 383.2444763183594], "page": 56, "span": [0, 42], "__ref_s3_data": null}], "text": "Figure 4-2 Rules for row and column access", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/37"}, {"prov": [{"bbox": [135.74815368652344, 699.0175170898438, 545.2960205078125, 721.3952026367188], "page": 57, "span": [0, 123], "__ref_s3_data": null}], "text": "The chart that is shown in Figure 4-3 shows the column access that is allowed by group and lists the column masks by table.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.09585571289062, 381.0845947265625, 245.08297729492188, 390.61444091796875], "page": 57, "span": [0, 23], "__ref_s3_data": null}], "text": "Figure 4-3 Column masks", "type": "caption", "name": "Caption", "font": null}, {"name": "Table", "type": "table", "$ref": "#/tables/8"}, {"prov": [{"bbox": [136.05606079101562, 318.2683410644531, 543.4578247070312, 364.7004699707031], "page": 57, "span": [0, 295], "__ref_s3_data": null}], "text": "For the demonstration and testing of RCAC in this example, the following users interact with the database. Furthermore, the column masking rules are developed independently of the row permissions. If a person does not have permission to access the row, the column mask processing does not occur.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.7457733154297, 289.4174499511719, 547.2935791015625, 312.15093994140625], "page": 57, "span": [0, 127], "__ref_s3_data": null}], "text": "- GLYPH Hernando Bedoya is a DB2 for i database engineer with the user profile of HBEDOYA. He is part of the DBE group.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.60708618164062, 260.16748046875, 538.9269409179688, 282.7138671875], "page": 57, "span": [0, 119], "__ref_s3_data": null}], "text": "- GLYPH Mike Cain is a DB2 for i database engineer with the user profile of MCAIN. He is part of the DBE group.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.6043701171875, 231.50372314453125, 492.53729248046875, 254.1444091796875], "page": 57, "span": [0, 137], "__ref_s3_data": null}], "text": "- GLYPH Veronica G. Lucchess is a bank account administrator with the user profile of VGLUCCHESS. She is part of the ADMIN group.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.5557403564453, 202.178955078125, 534.6511840820312, 224.8624267578125], "page": 57, "span": [0, 115], "__ref_s3_data": null}], "text": "- GLYPH Tom Q. Spenser is a bank teller with the user profile of TQSPENSER. He is part of the TELLER group.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.36813354492188, 185.65155029296875, 529.1213989257812, 196.05841064453125], "page": 57, "span": [0, 103], "__ref_s3_data": null}], "text": "- GLYPH The IT security officer has the user profile of SECURITY. She is not part of any group.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.52735900878906, 144.6416473388672, 547.3323364257812, 178.78997802734375], "page": 57, "span": [0, 200], "__ref_s3_data": null}], "text": "- GLYPH The online banking web application uses the user profile WEBUSER. This profile is part of the CUSTOMER group. Any future customer-facing applications can also use this group if needed.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.407958984375, 127.601318359375, 530.7957763671875, 138.128662109375], "page": 57, "span": [0, 96], "__ref_s3_data": null}], "text": "- GLYPH Adam O. Olsen is a bank customer with a web application login ID of KLD72CQR8JG.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [214.2675018310547, 28.00421142578125, 523.5935668945312, 37.2421875], "page": 57, "span": [0, 70], "__ref_s3_data": null}], "text": "Chapter 4. Implementing Row and Column Access Control: Banking example", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [535.689697265625, 27.93828010559082, 547.2591552734375, 37.77044677734375], "page": 57, "span": [0, 2], "__ref_s3_data": null}], "text": "41", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.2745590209961, 705.79541015625, 283.6307678222656, 721.9813232421875], "page": 58, "span": [0, 26], "__ref_s3_data": null}], "text": "4.3 Implementation of RCAC", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.4054412841797, 679.1885986328125, 514.2452392578125, 689.2947998046875], "page": 58, "span": [0, 85], "__ref_s3_data": null}], "text": "Figure 4-4 shows the data model of the banking scenario that is used in this example.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.15525817871094, 478.4729309082031, 327.0066223144531, 487.8588562011719], "page": 58, "span": [0, 45], "__ref_s3_data": null}], "text": "Figure 4-4 Data model of the banking scenario", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/38"}, {"prov": [{"bbox": [135.9271240234375, 451.85552978515625, 309.19659423828125, 461.9432678222656], "page": 58, "span": [0, 40], "__ref_s3_data": null}], "text": "This section covers the following steps:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.67567443847656, 435.15850830078125, 372.9923095703125, 445.2650146484375], "page": 58, "span": [0, 66], "__ref_s3_data": null}], "text": "- GLYPH Reviewing the tables that are used in this example", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.61679077148438, 422.851806640625, 490.73876953125, 433.0387268066406], "page": 58, "span": [0, 84], "__ref_s3_data": null}], "text": "- GLYPH Assigning function ID QIBM_DB_SECADM to the Database Engineers group", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.76889038085938, 410.9656066894531, 376.5744934082031, 421.16241455078125], "page": 58, "span": [0, 69], "__ref_s3_data": null}], "text": "- GLYPH Creating group profiles for the users and their roles", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.6211395263672, 398.8453369140625, 384.3678283691406, 409.67742919921875], "page": 58, "span": [0, 62], "__ref_s3_data": null}], "text": "- GLYPH Creating the CUSTOMER_LOGIN_ID global variable", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.83248901367188, 386.8020324707031, 320.7999572753906, 397.2442626953125], "page": 58, "span": [0, 53], "__ref_s3_data": null}], "text": "- GLYPH Defining and creating row permissions", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.7002716064453, 374.8518371582031, 312.3022155761719, 385.3578186035156], "page": 58, "span": [0, 50], "__ref_s3_data": null}], "text": "- GLYPH Defining and creating column masks", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.64413452148438, 362.9361267089844, 387.6695556640625, 373.26336669921875], "page": 58, "span": [0, 69], "__ref_s3_data": null}], "text": "- GLYPH Restricting the inserting and updating of masked data", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.75306701660156, 351.1123352050781, 334.1216125488281, 361.037109375], "page": 58, "span": [0, 56], "__ref_s3_data": null}], "text": "- GLYPH Activating row and column access control", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.65428161621094, 338.8648986816406, 271.91436767578125, 349.3992004394531], "page": 58, "span": [0, 41], "__ref_s3_data": null}], "text": "- GLYPH Reviewing row permissions", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.8694305419922, 327.16015625, 323.46331787109375, 337.9486999511719], "page": 58, "span": [0, 51], "__ref_s3_data": null}], "text": "- GLYPH Demonstrating data access with RCAC", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.73135375976562, 315.1239929199219, 343.2095031738281, 325.26885986328125], "page": 58, "span": [0, 56], "__ref_s3_data": null}], "text": "- GLYPH Query implementation with RCAC activated", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.17279052734375, 282.4974060058594, 410.4186096191406, 295.388916015625], "page": 58, "span": [0, 56], "__ref_s3_data": null}], "text": "4.3.1 Reviewing the tables that are used in this example", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.51849365234375, 235.11878967285156, 541.1093139648438, 269.2921142578125], "page": 58, "span": [0, 214], "__ref_s3_data": null}], "text": "This section reviews the tables that are used in this example. As shown in Figure 4-5, there are three main tables that are involved in the data model: CUSTOMERS, ACCOUNTS, and TRANSACTIONS. There are 90 customers.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.22021484375, 151.315673828125, 361.25982666015625, 160.41815185546875], "page": 58, "span": [0, 54], "__ref_s3_data": null}], "text": "Figure 4-5 Tables that are used in the banking example", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/39"}, {"prov": [{"bbox": [142.3465576171875, 89.73866271972656, 525.7510986328125, 124.18499755859375], "page": 58, "span": [0, 195], "__ref_s3_data": null}], "text": "Note: Appendix A, \"Database definitions for the RCAC banking example\" on page 121 provides a script that you can use to create all the database definitions or DDLs to re-create this RCAC example.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.21815490722656, 27.93828010559082, 78.4020004272461, 37.66497802734375], "page": 58, "span": [0, 2], "__ref_s3_data": null}], "text": "42", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.31220245361328, 28.0478515625, 334.4214172363281, 37.274658203125], "page": 58, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [135.93377685546875, 698.9581298828125, 525.0703125, 721.3391723632812], "page": 59, "span": [0, 106], "__ref_s3_data": null}], "text": "To review the attributes of each table that is used in this banking example, complete the following steps:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.77842712402344, 670.1790161132812, 543.2303466796875, 694.369873046875], "page": 59, "span": [0, 136], "__ref_s3_data": null}], "text": "- 1. Review the columns of each the tables through System i Navigator. Expand Database \uf0ae named Database \uf0ae Schemas \uf0ae BANK_SCHEMA \uf0ae Tables .", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.044677734375, 629.2593383789062, 546.8358764648438, 663.48486328125], "page": 59, "span": [0, 253], "__ref_s3_data": null}], "text": "- 2. Right-click the CUSTOMERS table and select Definition . Figure 4-6 shows the attributes for the CUSTOMERS table. The Row access control and Column access control options are not selected, which indicates that the table does not have RCAC implemented.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.25962829589844, 418.0169982910156, 303.7537536621094, 427.2813415527344], "page": 59, "span": [0, 37], "__ref_s3_data": null}], "text": "Figure 4-6 CUSTOMERS table attributes", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/40"}, {"prov": [{"bbox": [135.99163818359375, 378.7974853515625, 517.3616333007812, 401.4026794433594], "page": 59, "span": [0, 91], "__ref_s3_data": null}], "text": "- 3. Click the Columns tab to see the columns of the CUSTOMERS table, as shown in Figure 4-7.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.40914916992188, 169.933837890625, 293.8601989746094, 179.63116455078125], "page": 59, "span": [0, 52], "__ref_s3_data": null}], "text": "Figure 4-7 Column definitions of the CUSTOMERS table", "type": "paragraph", "name": "paragraph", "font": null}, {"prov": [{"bbox": [214.2801971435547, 27.97186279296875, 523.5935668945312, 37.2733154296875], "page": 59, "span": [0, 70], "__ref_s3_data": null}], "text": "Chapter 4. Implementing Row and Column Access Control: Banking example", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [535.720947265625, 27.93828010559082, 547.2591552734375, 37.82537841796875], "page": 59, "span": [0, 2], "__ref_s3_data": null}], "text": "43", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.17613220214844, 27.93828010559082, 78.4020004272461, 37.888427734375], "page": 60, "span": [0, 2], "__ref_s3_data": null}], "text": "44", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.36976623535156, 27.99517822265625, 334.4214172363281, 37.36669921875], "page": 60, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [135.88308715820312, 675.2788696289062, 538.2010498046875, 721.5631713867188], "page": 60, "span": [0, 263], "__ref_s3_data": null}], "text": "- 4. Click the Key Constraints , Foreign Key Constraints , and Check Constraints tabs to review the key, foreign, and check constraints on the CUSTOMERS table, as shown in Figure 4-8. There are no Foreign Key Constraints or Check Constraints on the CUSTOMERS table.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.06980895996094, 474.015625, 396.0132141113281, 483.4775695800781], "page": 60, "span": [0, 59], "__ref_s3_data": null}], "text": "Figure 4-8 Reviewing the constraints on the CUSTOMERS table", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/41"}, {"prov": [{"bbox": [136.2538299560547, 434.73291015625, 542.1918334960938, 457.36016845703125], "page": 60, "span": [0, 154], "__ref_s3_data": null}], "text": "- 5. Review the definition of the ACCOUNTS table. The definition of the ACCOUNTS table is shown in Figure 4-9. RCAC has not been defined for this table yet.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.27098083496094, 219.380615234375, 297.00921630859375, 228.7257080078125], "page": 60, "span": [0, 36], "__ref_s3_data": null}], "text": "Figure 4-9 ACCOUNTS table attributes", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/42"}, {"prov": [{"bbox": [135.9091033935547, 698.7022094726562, 509.6353759765625, 721.5545043945312], "page": 61, "span": [0, 91], "__ref_s3_data": null}], "text": "- 6. Click the Columns tab to see the columns of the ACCOUNTS table, as shown in Figure 4-10.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.17601013183594, 545.1570434570312, 291.64111328125, 554.9664916992188], "page": 61, "span": [0, 52], "__ref_s3_data": null}], "text": "Figure 4-10 Column definitions of the ACCOUNTS table", "type": "paragraph", "name": "paragraph", "font": null}, {"prov": [{"bbox": [136.2264404296875, 482.25897216796875, 538.2010498046875, 528.1681518554688], "page": 61, "span": [0, 265], "__ref_s3_data": null}], "text": "- 7. Click the Key Constraints , Foreign Key Constraints , and Check Constraints tabs to review the key, foreign, and check constraints on the ACCOUNTS table, as shown in Figure 4-11. There is one Foreign Key Constraint and no Check Constraints on the ACCOUNTS table.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.48716735839844, 295.1299133300781, 322.23956298828125, 304.5341796875], "page": 61, "span": [0, 59], "__ref_s3_data": null}], "text": "Figure 4-11 Reviewing the constraints on the ACCOUNTS table", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/43"}, {"prov": [{"bbox": [214.28741455078125, 27.9407958984375, 523.5935668945312, 37.26190185546875], "page": 61, "span": [0, 70], "__ref_s3_data": null}], "text": "Chapter 4. Implementing Row and Column Access Control: Banking example", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [535.7454833984375, 27.93828010559082, 547.2591552734375, 37.93182373046875], "page": 61, "span": [0, 2], "__ref_s3_data": null}], "text": "45", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [136.05352783203125, 698.7333374023438, 547.2595825195312, 721.6047973632812], "page": 62, "span": [0, 157], "__ref_s3_data": null}], "text": "- 8. Review the definition of the TRANSACTIONS table. The definition of the TRANSACTIONS table is shown in Figure 4-12. RCAC is not defined for this table yet.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.08340454101562, 483.11859130859375, 321.95263671875, 492.669677734375], "page": 62, "span": [0, 41], "__ref_s3_data": null}], "text": "Figure 4-12 TRANSACTIONS table attributes", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/44"}, {"prov": [{"bbox": [136.10157775878906, 443.9242858886719, 531.8204345703125, 466.7878112792969], "page": 62, "span": [0, 95], "__ref_s3_data": null}], "text": "- 9. Click the Columns tab to see the columns of the TRANSACTIONS table, as shown in Figure 4-13.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.23361206054688, 299.8185729980469, 383.6240234375, 309.7732849121094], "page": 62, "span": [0, 56], "__ref_s3_data": null}], "text": "Figure 4-13 Column definitions of the TRANSACTIONS table", "type": "paragraph", "name": "paragraph", "font": null}, {"prov": [{"bbox": [136.8000030517578, 237.45896911621094, 547.3941040039062, 283.541748046875], "page": 62, "span": [0, 273], "__ref_s3_data": null}], "text": "- 10.Click the Key Constraints , Foreign Key Constraints , and Check Constraints tabs to review the key, foreign, and check constraints on the TRANSACTIONS table, as shown in Figure 4-14. There is one Foreign Key Constraint and one Check Constraint on the TRANSACTIONS table.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.34345245361328, 57.83700180053711, 342.0125732421875, 67.66943359375], "page": 62, "span": [0, 63], "__ref_s3_data": null}], "text": "Figure 4-14 Reviewing the constraints on the TRANSACTIONS table", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/45"}, {"prov": [{"bbox": [64.11357116699219, 27.93828010559082, 78.4020004272461, 37.95208740234375], "page": 62, "span": [0, 2], "__ref_s3_data": null}], "text": "46", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.1781997680664, 27.982421875, 334.4214172363281, 37.3914794921875], "page": 62, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [136.23085021972656, 699.118408203125, 527.005615234375, 721.2885131835938], "page": 63, "span": [0, 167], "__ref_s3_data": null}], "text": "Now that you have reviewed the database model for this example, the following sections describe the steps that are required to implement RCAC in this banking scenario.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.15889739990234, 650.3182983398438, 532.1195068359375, 679.7421875], "page": 63, "span": [0, 74], "__ref_s3_data": null}], "text": "4.3.2 Assigning function ID QIBM_DB_SECADM to the Database Engineers group", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.7303466796875, 603.2656860351562, 531.9879150390625, 637.4636840820312], "page": 63, "span": [0, 250], "__ref_s3_data": null}], "text": "The first step is to assign the appropriate function usage ID to the Database Engineers (DBEs) that will be implementing RCAC. For a description of function usage IDs, see 2.1, \"Roles\" on page 8. In this example, the DBEs are users MCAIN and HBEDOYA.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.1609649658203, 580.8624877929688, 266.8606872558594, 591.4937744140625], "page": 63, "span": [0, 29], "__ref_s3_data": null}], "text": "Complete the following steps:", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.48870849609375, 552.2794799804688, 544.5436401367188, 574.73388671875], "page": 63, "span": [0, 103], "__ref_s3_data": null}], "text": "- 1. Right-click the database connection and select Application Administration , as shown in Figure 4-15.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.063720703125, 289.1767272949219, 292.96966552734375, 298.3213806152344], "page": 63, "span": [0, 38], "__ref_s3_data": null}], "text": "Figure 4-15 Application administration", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/46"}, {"prov": [{"bbox": [214.25257873535156, 27.9610595703125, 523.5935668945312, 37.2509765625], "page": 63, "span": [0, 70], "__ref_s3_data": null}], "text": "Chapter 4. Implementing Row and Column Access Control: Banking example", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [535.6387939453125, 27.93828010559082, 547.2591552734375, 37.79241943359375], "page": 63, "span": [0, 2], "__ref_s3_data": null}], "text": "47", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.1659164428711, 27.93828010559082, 78.4020004272461, 37.85589599609375], "page": 64, "span": [0, 2], "__ref_s3_data": null}], "text": "48", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.31367492675781, 27.9822998046875, 334.4214172363281, 37.39764404296875], "page": 64, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [135.7973175048828, 698.8440551757812, 530.2109985351562, 723.349853515625], "page": 64, "span": [0, 165], "__ref_s3_data": null}], "text": "- 2. The Application Administration window opens, as shown in Figure 4-16. Click IBM i \uf0ae Database and select the function usage ID of Database Security Administrator .", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.85130310058594, 390.5697326660156, 329.4411315917969, 400.15435791015625], "page": 64, "span": [0, 48], "__ref_s3_data": null}], "text": "Figure 4-16 Application administration for IBM i", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/47"}, {"prov": [{"bbox": [135.79788208007812, 351.3948669433594, 544.5723266601562, 374.33563232421875], "page": 64, "span": [0, 105], "__ref_s3_data": null}], "text": "- 3. Click Customize for the function usage ID of Database Security Administrator, as shown in Figure 4-17.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.05140686035156, 169.84881591796875, 459.4308776855469, 179.530517578125], "page": 64, "span": [0, 77], "__ref_s3_data": null}], "text": "Figure 4-17 Customizing the Database Security Administrator function usage ID", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/48"}, {"prov": [{"bbox": [135.78591918945312, 687.2783203125, 547.1973876953125, 721.5147094726562], "page": 65, "span": [0, 187], "__ref_s3_data": null}], "text": "- 4. The Customize Access window opens, as shown in Figure 4-18. Click the users that need to implement RCAC. For this example, HBEDOYA and MCAIN are selected. Click Add and then click OK .", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.0041961669922, 378.0472717285156, 297.5841369628906, 387.30133056640625], "page": 65, "span": [0, 35], "__ref_s3_data": null}], "text": "Figure 4-18 Customize Access window", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/49"}, {"prov": [{"bbox": [136.253173828125, 326.7797546386719, 537.650146484375, 361.51788330078125], "page": 65, "span": [0, 180], "__ref_s3_data": null}], "text": "- 5. The Application Administrator window opens again. The function usage ID of Database Security Administrator now has an X in the Customized Access column, as shown in Figure 4-19.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.1788787841797, 196.3251953125, 443.8726501464844, 205.81591796875], "page": 65, "span": [0, 72], "__ref_s3_data": null}], "text": "Figure 4-19 Function usage ID Database Security Administrator customized", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/50"}, {"prov": [{"bbox": [214.2803955078125, 27.94500732421875, 523.5935668945312, 37.261474609375], "page": 65, "span": [0, 70], "__ref_s3_data": null}], "text": "Chapter 4. Implementing Row and Column Access Control: Banking example", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [535.666015625, 27.93828010559082, 547.2591552734375, 37.95111083984375], "page": 65, "span": [0, 2], "__ref_s3_data": null}], "text": "49", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.19255828857422, 27.93828010559082, 78.4020004272461, 37.62579345703125], "page": 66, "span": [0, 2], "__ref_s3_data": null}], "text": "50", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.27255249023438, 28.05938720703125, 334.4214172363281, 37.28240966796875], "page": 66, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [135.97772216796875, 698.7117309570312, 545.5703735351562, 721.4182739257812], "page": 66, "span": [0, 117], "__ref_s3_data": null}], "text": "- 6. Run an SQL query that shows which user profiles are enabled to define RCAC. The SQL query is shown in Figure 4-20.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.3402557373047, 507.7417297363281, 438.3047790527344, 517.5281372070312], "page": 66, "span": [0, 74], "__ref_s3_data": null}], "text": "Figure 4-20 Query to display user profiles with function usage ID for RCAC", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/51"}, {"prov": [{"bbox": [64.06755065917969, 474.9371337890625, 418.56524658203125, 488.3762512207031], "page": 66, "span": [0, 59], "__ref_s3_data": null}], "text": "4.3.3 Creating group profiles for the users and their roles", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.84303283691406, 415.6891174316406, 547.2724609375, 462.0940856933594], "page": 66, "span": [0, 307], "__ref_s3_data": null}], "text": "The next step is to create the different group profiles (ADMIN, CUSTOMER, TELLER, and DBE) and assign the different user profiles to the different group profiles. For a description of the different groups and users for this example, see 4.2, \"Description of the users roles and responsibilities\" on page 39.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.06056213378906, 393.63714599609375, 266.8606872558594, 404.0556945800781], "page": 66, "span": [0, 29], "__ref_s3_data": null}], "text": "Complete the following steps:", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.78126525878906, 364.7965393066406, 535.997802734375, 387.283447265625], "page": 66, "span": [0, 120], "__ref_s3_data": null}], "text": "- 1. On the main navigation pane of System i Navigator, right-click Groups and select New Group , as shown in Figure 4-21.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.255126953125, 191.8638916015625, 281.4906005859375, 201.13775634765625], "page": 66, "span": [0, 35], "__ref_s3_data": null}], "text": "Figure 4-21 Creating group profiles", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/52"}, {"prov": [{"bbox": [136.031005859375, 687.0444946289062, 547.2084350585938, 721.4904174804688], "page": 67, "span": [0, 240], "__ref_s3_data": null}], "text": "- 2. The New Group window opens, as shown in Figure 4-22. For each new group, enter the Group name (ADMIN, CUSTOMER, TELLER, and DBE) and add the user profiles that are associated to this group by selecting the user profile and clicking Add .", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.73487854003906, 670.2432250976562, 482.46234130859375, 680.9339599609375], "page": 67, "span": [0, 68], "__ref_s3_data": null}], "text": "Figure 4-22 shows adding user TQSPENCER to the TELLER group profile.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.369873046875, 419.191162109375, 352.9217834472656, 428.5393981933594], "page": 67, "span": [0, 52], "__ref_s3_data": null}], "text": "Figure 4-22 Creating group profiles and adding users", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/53"}, {"prov": [{"bbox": [136.0438232421875, 380.2133483886719, 537.6182861328125, 402.5482177734375], "page": 67, "span": [0, 151], "__ref_s3_data": null}], "text": "- 3. After you create all the group profiles, you should see them listed in System i Navigator under Users and Groups \uf0ae Groups , as shown in Figure 4-23.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.12078857421875, 229.78912353515625, 303.932373046875, 238.92657470703125], "page": 67, "span": [0, 40], "__ref_s3_data": null}], "text": "Figure 4-23 Newly created group profiles", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/54"}, {"prov": [{"bbox": [214.30003356933594, 27.95086669921875, 523.5935668945312, 37.2642822265625], "page": 67, "span": [0, 70], "__ref_s3_data": null}], "text": "Chapter 4. Implementing Row and Column Access Control: Banking example", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [535.7405395507812, 27.93828010559082, 547.2591552734375, 37.67535400390625], "page": 67, "span": [0, 2], "__ref_s3_data": null}], "text": "51", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.14804077148438, 708.4265747070312, 420.2837219238281, 721.7244873046875], "page": 68, "span": [0, 52], "__ref_s3_data": null}], "text": "4.3.4 Creating the CUSTOMER_LOGIN_ID global variable", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.99069213867188, 660.9912109375, 545.7725219726562, 695.1038208007812], "page": 68, "span": [0, 244], "__ref_s3_data": null}], "text": "In this step, you create a global variable that is used to capture the Customer_Login_ID information, which is required to validate the permissions. For more information about global variables, see 3.2.2, \"Built-in global variables\" on page 19.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.14224243164062, 639.0682373046875, 266.8606872558594, 649.479248046875], "page": 68, "span": [0, 29], "__ref_s3_data": null}], "text": "Complete the following steps:", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.56494140625, 610.179931640625, 535.943603515625, 632.7373657226562], "page": 68, "span": [0, 145], "__ref_s3_data": null}], "text": "- 1. From System i Navigator, under the schema Bank_Schema, right-click Global Variable and select New \uf0ae Global Variable , as shown in Figure 4-24.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.03294372558594, 375.2170715332031, 292.05377197265625, 384.3118591308594], "page": 68, "span": [0, 38], "__ref_s3_data": null}], "text": "Figure 4-24 Creating a global variable", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/55"}, {"prov": [{"bbox": [135.92572021484375, 312.5187072753906, 541.1919555664062, 358.4706115722656], "page": 68, "span": [0, 314], "__ref_s3_data": null}], "text": "- 2. The New Global Variable window opens, as shown in Figure 4-25. Enter the global variable name of CUSTOMER_LOGIN_ID, select the data type of VARCHAR, and leave the default value of NULL. This default value ensures that users that do not use the web interface do not have permission to access the data. Click OK .", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.31603240966797, 71.04986572265625, 347.040283203125, 81.11328125], "page": 68, "span": [0, 63], "__ref_s3_data": null}], "text": "Figure 4-25 Creating a global variable called CUSTOMER_LOGIN_ID", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/56"}, {"prov": [{"bbox": [64.1907958984375, 27.93828010559082, 78.4020004272461, 37.67730712890625], "page": 68, "span": [0, 2], "__ref_s3_data": null}], "text": "52", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.31280517578125, 28.101806640625, 334.4214172363281, 37.311279296875], "page": 68, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [136.12977600097656, 687.2127685546875, 547.2542724609375, 721.2545166015625], "page": 69, "span": [0, 216], "__ref_s3_data": null}], "text": "- 3. Now that the global variable is created, assign permissions to the variable so that it can be set by the program. Right-click the CUSTOMER_LOGIN_ID global variable and select Permissions , as shown in Figure 4-26.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.95867919921875, 540.6283569335938, 457.0142822265625, 550.0120239257812], "page": 69, "span": [0, 72], "__ref_s3_data": null}], "text": "Figure 4-26 Setting permissions on the CUSTOMER_LOGIN_ID global variable", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/57"}, {"prov": [{"bbox": [135.82858276367188, 501.53948974609375, 534.23876953125, 524.1180419921875], "page": 69, "span": [0, 147], "__ref_s3_data": null}], "text": "- 4. The Permissions window opens, as shown in Figure 4-27. Select Change authority for Webuser so that the application can set this global variable.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.15591430664062, 203.84979248046875, 540.3552856445312, 213.4273681640625], "page": 69, "span": [0, 91], "__ref_s3_data": null}], "text": "Figure 4-27 Setting change permissions for Webuser on the CUSTOMER_LOGIN_ID global variable", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/58"}, {"prov": [{"bbox": [214.31678771972656, 27.9561767578125, 523.5935668945312, 37.26458740234375], "page": 69, "span": [0, 70], "__ref_s3_data": null}], "text": "Chapter 4. Implementing Row and Column Access Control: Banking example", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [535.7046508789062, 27.93828010559082, 547.2591552734375, 37.65869140625], "page": 69, "span": [0, 2], "__ref_s3_data": null}], "text": "53", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.21206665039062, 708.4077758789062, 339.9589538574219, 721.7990112304688], "page": 70, "span": [0, 43], "__ref_s3_data": null}], "text": "4.3.5 Defining and creating row permissions", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.9742889404297, 685.0367431640625, 527.3794555664062, 695.2660522460938], "page": 70, "span": [0, 88], "__ref_s3_data": null}], "text": "You now ready to define the row permissions of the tables. Complete the following steps:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.758056640625, 643.67529296875, 530.7598266601562, 680.3302612304688], "page": 70, "span": [0, 169], "__ref_s3_data": null}], "text": "- 1. From the navigation pane of System i Navigator, click Schemas \uf0ae BANK_SCHEMA , right-click Row Permissions , and select New \uf0ae Row Permission , as shown in Figure 4-28.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.1620330810547, 359.82366943359375, 314.04541015625, 369.123046875], "page": 70, "span": [0, 41], "__ref_s3_data": null}], "text": "Figure 4-28 Selecting new row permissions", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/59"}, {"prov": [{"bbox": [64.29161071777344, 27.93828010559082, 78.4020004272461, 37.70703125], "page": 70, "span": [0, 2], "__ref_s3_data": null}], "text": "54", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.33383178710938, 28.05706787109375, 334.4214172363281, 37.33294677734375], "page": 70, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [136.03018188476562, 687.145751953125, 544.505126953125, 721.490478515625], "page": 71, "span": [0, 213], "__ref_s3_data": null}], "text": "- 2. The New Row Permission window opens, as shown in Figure 4-29. Enter the information regarding the row permissions on the CUSTOMERS table. This row permission defines what is established in the following policy:", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.3019256591797, 658.2987060546875, 542.1815185546875, 680.717529296875], "page": 71, "span": [0, 89], "__ref_s3_data": null}], "text": "- -User profiles that belong to DBE, ADMIN, and TELLER group profiles can see all the rows.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.4884796142578, 581.2600708007812, 537.7831420898438, 651.5912475585938], "page": 71, "span": [0, 438], "__ref_s3_data": null}], "text": "- -User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER user) can see only the rows that match their customer login ID. The login ID value representing the online banking user is passed from the web application to the database by using the global variable CUSTOMER_LOGIN_ID. The permission rule uses a subquery to check whether the global variable matches the CUSTOMER_LOGIN_ID column value in the CUSTOMERS table.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.66030883789062, 564.2066650390625, 381.3265380859375, 574.5264892578125], "page": 71, "span": [0, 51], "__ref_s3_data": null}], "text": "- -Any other user profile cannot see any rows at all.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.00958251953125, 546.886474609375, 314.7688293457031, 557.4721069335938], "page": 71, "span": [0, 37], "__ref_s3_data": null}], "text": "Select the Enabled option. Click OK .", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.95968627929688, 253.26513671875, 384.6536865234375, 262.62078857421875], "page": 71, "span": [0, 54], "__ref_s3_data": null}], "text": "Figure 4-29 New row permissions on the CUSTOMERS table", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/60"}, {"prov": [{"bbox": [214.24986267089844, 27.956787109375, 523.5935668945312, 37.28692626953125], "page": 71, "span": [0, 70], "__ref_s3_data": null}], "text": "Chapter 4. Implementing Row and Column Access Control: Banking example", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [535.6702270507812, 27.93828010559082, 547.2591552734375, 37.6822509765625], "page": 71, "span": [0, 2], "__ref_s3_data": null}], "text": "55", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [136.20513916015625, 674.8102416992188, 543.8363647460938, 721.404541015625], "page": 72, "span": [0, 263], "__ref_s3_data": null}], "text": "- 3. Define the row permissions for the ACCOUNTS table. The New Row Permission window opens, as shown in Figure 4-30. Enter the information regarding the row permissions on the ACCOUNTS table. This row permission defines what is established in the following policy:", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.44004821777344, 646.2992553710938, 539.4539794921875, 668.675537109375], "page": 72, "span": [0, 88], "__ref_s3_data": null}], "text": "- -User profiles that belong to DBE, ADMIN and TELLER group profiles can see all the rows.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.2493438720703, 569.2606201171875, 537.7576904296875, 639.6063232421875], "page": 72, "span": [0, 438], "__ref_s3_data": null}], "text": "- -User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER user) can see only the rows that match their customer login ID. The login ID value representing the online banking user is passed from the web application to the database by using the global variable CUSTOMER_LOGIN_ID. The permission rule uses a subquery to check whether the global variable matches the CUSTOMER_LOGIN_ID column value in the CUSTOMERS table.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.43359375, 552.2164916992188, 381.32696533203125, 562.5576782226562], "page": 72, "span": [0, 51], "__ref_s3_data": null}], "text": "- -Any other user profile cannot see any rows at all.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.8797149658203, 535.041259765625, 314.7692565917969, 545.5108032226562], "page": 72, "span": [0, 37], "__ref_s3_data": null}], "text": "Select the Enabled option. Click OK .", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.3364486694336, 197.93699645996094, 305.99822998046875, 207.1900634765625], "page": 72, "span": [0, 53], "__ref_s3_data": null}], "text": "Figure 4-30 New row permissions on the ACCOUNTS table", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/61"}, {"prov": [{"bbox": [64.20973205566406, 27.93828010559082, 78.4020004272461, 37.7222900390625], "page": 72, "span": [0, 2], "__ref_s3_data": null}], "text": "56", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.28527069091797, 28.055908203125, 334.4214172363281, 37.35791015625], "page": 72, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [135.74258422851562, 675.0388793945312, 529.9049072265625, 721.5518798828125], "page": 73, "span": [0, 270], "__ref_s3_data": null}], "text": "- 4. Define the row permissions on the TRANSACTIONS table. The New Row Permission window opens, as shown in Figure 4-31. Enter the information regarding the row permissions on the TRANSACTIONS table. This row permission defines what is established in the following policy:", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.45989990234375, 646.2988891601562, 547.229248046875, 668.7428588867188], "page": 73, "span": [0, 92], "__ref_s3_data": null}], "text": "- -User profiles that belong to DBE, ADMIN, and TELLER group profiles can see all of the rows.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.29940795898438, 569.26025390625, 537.7831420898438, 639.63330078125], "page": 73, "span": [0, 438], "__ref_s3_data": null}], "text": "- -User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER user) can see only the rows that match their customer login ID. The login ID value representing the online banking user is passed from the web application to the database by using the global variable CUSTOMER_LOGIN_ID. The permission rule uses a subquery to check whether the global variable matches the CUSTOMER_LOGIN_ID column value in the CUSTOMERS table.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [170.69351196289062, 505.2535095214844, 533.3919677734375, 551.6622314453125], "page": 73, "span": [0, 285], "__ref_s3_data": null}], "text": "Note: You must join back to ACCOUNTS and then to CUSTOMERS by using a subquery to check whether the global variable matches CUSTOMER_LOGIN_ID. Also, if the row permission or column mask rule text references another table with RCAC defined, the RCAC for the referenced table is ignored.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [151.38229370117188, 475.55084228515625, 381.3265380859375, 485.89093017578125], "page": 73, "span": [0, 51], "__ref_s3_data": null}], "text": "- -Any other user profile cannot see any rows at all.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.89027404785156, 458.91302490234375, 314.7688293457031, 469.5093688964844], "page": 73, "span": [0, 37], "__ref_s3_data": null}], "text": "Select the Enabled option. Click OK .", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.22490692138672, 69.0399169921875, 325.5702819824219, 78.46807861328125], "page": 73, "span": [0, 57], "__ref_s3_data": null}], "text": "Figure 4-31 New row permissions on the TRANSACTIONS table", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/62"}, {"prov": [{"bbox": [214.22891235351562, 28.0042724609375, 523.5935668945312, 37.26959228515625], "page": 73, "span": [0, 70], "__ref_s3_data": null}], "text": "Chapter 4. Implementing Row and Column Access Control: Banking example", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [535.5846557617188, 27.93828010559082, 547.2591552734375, 37.75579833984375], "page": 73, "span": [0, 2], "__ref_s3_data": null}], "text": "57", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.232666015625, 27.93828010559082, 78.4020004272461, 37.613525390625], "page": 74, "span": [0, 2], "__ref_s3_data": null}], "text": "58", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.35807037353516, 28.0589599609375, 334.4214172363281, 37.2994384765625], "page": 74, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [136.36386108398438, 687.2786865234375, 521.1912231445312, 721.450927734375], "page": 74, "span": [0, 175], "__ref_s3_data": null}], "text": "- 5. To verify that the row permissions are enabled, from System i Navigator, click Row Permissions , as shown in Figure 4-32. The three row permissions are created and enabled.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.27239227294922, 508.0120849609375, 292.91876220703125, 517.3701171875], "page": 74, "span": [0, 50], "__ref_s3_data": null}], "text": "Figure 4-32 List of row permissions on BANK_SCHEMA", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/63"}, {"prov": [{"bbox": [64.21476745605469, 474.7839660644531, 327.4058837890625, 488.1273193359375], "page": 74, "span": [0, 40], "__ref_s3_data": null}], "text": "4.3.6 Defining and creating column masks", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.03562927246094, 451.7078857421875, 479.4200134277344, 462.0003662109375], "page": 74, "span": [0, 76], "__ref_s3_data": null}], "text": "This section defines the masks on the columns. Complete the following steps:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.79998779296875, 410.91876220703125, 523.0706787109375, 447.3500061035156], "page": 74, "span": [0, 168], "__ref_s3_data": null}], "text": "- 1. From the main navigation pane of System i Navigator, click Schemas \uf0ae BANK_SCHEMA , right-click Column Masks , and select New \uf0ae Column Mask , as shown in Figure 4-33.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.1403350830078, 210.93280029296875, 287.95941162109375, 220.262939453125], "page": 74, "span": [0, 34], "__ref_s3_data": null}], "text": "Figure 4-33 Creating a column mask", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/64"}, {"prov": [{"bbox": [136.03579711914062, 699.2781372070312, 524.1021728515625, 721.2332153320312], "page": 75, "span": [0, 97], "__ref_s3_data": null}], "text": "- 2. In the New Column Mask window, which is shown in Figure 4-34, enter the following information:", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.32827758789062, 682.29833984375, 465.4696044921875, 692.6640625], "page": 75, "span": [0, 63], "__ref_s3_data": null}], "text": "- -Select the CUSTOMERS table on which to create the column mask.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.2732391357422, 670.2985229492188, 475.1905212402344, 680.8697509765625], "page": 75, "span": [0, 66], "__ref_s3_data": null}], "text": "- -Select the Column to mask; in this example, it is CUSTOMER_EMAIL.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.39305114746094, 634.299072265625, 531.3062133789062, 668.3560180664062], "page": 75, "span": [0, 207], "__ref_s3_data": null}], "text": "- -Define the masking logic depending on the rules that you want to enforce. In this example, either the ADMIN or CUSTOMER group profiles can see the entire email address; otherwise, it is masked to ****@****.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.79855346679688, 616.8975219726562, 314.766845703125, 627.508056640625], "page": 75, "span": [0, 37], "__ref_s3_data": null}], "text": "Select the Enabled option. Click OK .", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.8140106201172, 177.95709228515625, 395.16131591796875, 187.234619140625], "page": 75, "span": [0, 57], "__ref_s3_data": null}], "text": "Figure 4-34 Defining a column mask on the CUSTOMERS table", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/65"}, {"prov": [{"bbox": [136.26536560058594, 150.96624755859375, 522.032958984375, 161.1632080078125], "page": 75, "span": [0, 84], "__ref_s3_data": null}], "text": "- 3. Repeat steps 1 on page 58 and 2 to create column masks for the following columns:", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.44378662109375, 134.0785675048828, 381.7741394042969, 144.8258056640625], "page": 75, "span": [0, 34], "__ref_s3_data": null}], "text": "- -MASK_DRIVERS_LICENSE_ON_CUSTOMERS", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.36248779296875, 122.0787582397461, 335.7012023925781, 132.481201171875], "page": 75, "span": [0, 27], "__ref_s3_data": null}], "text": "- -MASK_LOGIN_ID_ON_CUSTOMERS", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.4147491455078, 110.07894897460938, 446.63970947265625, 120.55975341796875], "page": 75, "span": [0, 43], "__ref_s3_data": null}], "text": "- -MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.27947998046875, 98.07913970947266, 379.591064453125, 108.9068603515625], "page": 75, "span": [0, 32], "__ref_s3_data": null}], "text": "- -MASK_ACCOUNT_NUMBER_ON_ACCOUNTS", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.41717529296875, 86.07933044433594, 397.17034912109375, 96.97442626953125], "page": 75, "span": [0, 36], "__ref_s3_data": null}], "text": "- -MASK_SECURITY_QUESTION_ON_CUSTOMERS", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.33258056640625, 74.07952117919922, 322.7781066894531, 84.5498046875], "page": 75, "span": [0, 25], "__ref_s3_data": null}], "text": "- -MASK_TAX_ID_ON_CUSTOMERS", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [214.23280334472656, 28.0201416015625, 523.5935668945312, 37.26531982421875], "page": 75, "span": [0, 70], "__ref_s3_data": null}], "text": "Chapter 4. Implementing Row and Column Access Control: Banking example", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [535.6565551757812, 27.93828010559082, 547.2591552734375, 37.8089599609375], "page": 75, "span": [0, 2], "__ref_s3_data": null}], "text": "59", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [135.86886596679688, 699.1376342773438, 525.707275390625, 721.5939331054688], "page": 76, "span": [0, 166], "__ref_s3_data": null}], "text": "- 4. To verify that the column masks are enabled, from System i Navigator, click Column Masks , as shown in Figure 4-35. The seven column masks are created and enabled.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.10326385498047, 599.2903442382812, 285.1827087402344, 608.58935546875], "page": 76, "span": [0, 47], "__ref_s3_data": null}], "text": "Figure 4-35 List of column masks on BANK_SCHEMA", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/66"}, {"prov": [{"bbox": [64.0513916015625, 566.2802124023438, 433.7906494140625, 579.4058837890625], "page": 76, "span": [0, 59], "__ref_s3_data": null}], "text": "4.3.7 Restricting the inserting and updating of masked data", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.85455322265625, 507.0654602050781, 544.9268798828125, 553.2467651367188], "page": 76, "span": [0, 270], "__ref_s3_data": null}], "text": "This step defines the check constraints that support the column masks to make sure that on INSERTS or UPDATES, data is not written with a masked value. For more information about the propagation of masked data, see 6.8, \"Avoiding propagation of masked data\" on page 108.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.1099090576172, 484.9318542480469, 266.8606872558594, 495.5037841796875], "page": 76, "span": [0, 29], "__ref_s3_data": null}], "text": "Complete the following steps:", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.3522491455078, 444.3074951171875, 547.1956787109375, 478.90118408203125], "page": 76, "span": [0, 206], "__ref_s3_data": null}], "text": "- 1. Create a check constraint on the column CUSTOMER_EMAIL in the CUSTOMERS table. From the navigation pane of System i Navigator, right-click the CUSTOMERS table and select Definition , as shown Figure 4-36", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.78135681152344, 311.1509704589844, 334.3720397949219, 320.5633544921875], "page": 76, "span": [0, 45], "__ref_s3_data": null}], "text": "Figure 4-36 Definition of the CUSTOMERS table", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/67"}, {"prov": [{"bbox": [135.75648498535156, 272.3358154296875, 547.7396240234375, 294.6141662597656], "page": 76, "span": [0, 113], "__ref_s3_data": null}], "text": "- 2. From the CUSTOMERS definition window, click the Check Constraints tab and click Add , as shown in Figure 4-37.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.25939178466797, 179.8170928955078, 221.74893188476562, 189.07855224609375], "page": 76, "span": [0, 37], "__ref_s3_data": null}], "text": "Figure 4-37 Adding a check constraint", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/68"}, {"prov": [{"bbox": [64.13931274414062, 27.93828010559082, 78.4020004272461, 37.62353515625], "page": 76, "span": [0, 2], "__ref_s3_data": null}], "text": "60", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.2583236694336, 28.05963134765625, 334.4214172363281, 37.2972412109375], "page": 76, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [136.19448852539062, 699.0084228515625, 515.8154907226562, 721.3970336914062], "page": 77, "span": [0, 96], "__ref_s3_data": null}], "text": "- 3. The New Check Constraint window opens, as shown in Figure 4-38. Complete the following steps:", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.47923278808594, 682.29833984375, 344.06817626953125, 692.5963134765625], "page": 77, "span": [0, 36], "__ref_s3_data": null}], "text": "- a. Select the CUSTOMER_EMAIL column.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.597412109375, 653.2589721679688, 541.599853515625, 675.5870361328125], "page": 77, "span": [0, 137], "__ref_s3_data": null}], "text": "- b. Enter the check constraint condition. In this example, specify CUSTOMER_EMAIL to be different from ****@****, which is the mask value.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.6071319580078, 636.1400146484375, 511.9270324707031, 646.5643920898438], "page": 77, "span": [0, 78], "__ref_s3_data": null}], "text": "- c. Select the On update violation, preserve column value option and click OK .", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.2974853515625, 129.24169921875, 362.4355773925781, 138.75482177734375], "page": 77, "span": [0, 68], "__ref_s3_data": null}], "text": "Figure 4-38 Specifying a new check constraint on the CUSTOMERS table", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/69"}, {"prov": [{"bbox": [214.33963012695312, 27.99407958984375, 523.5935668945312, 37.3177490234375], "page": 77, "span": [0, 70], "__ref_s3_data": null}], "text": "Chapter 4. Implementing Row and Column Access Control: Banking example", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [535.6194458007812, 27.93828010559082, 547.2591552734375, 37.740478515625], "page": 77, "span": [0, 2], "__ref_s3_data": null}], "text": "61", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [135.84481811523438, 699.0802612304688, 535.5555419921875, 721.4361572265625], "page": 78, "span": [0, 159], "__ref_s3_data": null}], "text": "- 4. Figure 4-39 shows that there is now a check constraint on the CUSTOMERS table that prevents any masked data from being updated to the CUSTOMER_EMAIL column.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.23225402832031, 396.0008544921875, 294.2088317871094, 405.4078674316406], "page": 78, "span": [0, 51], "__ref_s3_data": null}], "text": "Figure 4-39 Check constraint on the CUSTOMERS table", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/70"}, {"prov": [{"bbox": [136.3284149169922, 344.85784912109375, 547.2733154296875, 379.3380432128906], "page": 78, "span": [0, 201], "__ref_s3_data": null}], "text": "- 5. Create all the other check constraints that are associated to each of the masks on the CUSTOMERS table. After this is done, these constraints should look like the ones that are shown in Figure 4-40.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.24510955810547, 180.01788330078125, 323.0049743652344, 189.46038818359375], "page": 78, "span": [0, 60], "__ref_s3_data": null}], "text": "Figure 4-40 List of check constraints on the CUSTOMERS table", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/71"}, {"prov": [{"bbox": [64.20623016357422, 27.93828010559082, 78.4020004272461, 37.66107177734375], "page": 78, "span": [0, 2], "__ref_s3_data": null}], "text": "62", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.26509857177734, 28.060546875, 334.4214172363281, 37.33514404296875], "page": 78, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.11198425292969, 708.3018798828125, 360.40594482421875, 721.6455078125], "page": 79, "span": [0, 46], "__ref_s3_data": null}], "text": "4.3.8 Activating row and column access control", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.0153350830078, 673.103271484375, 516.2232055664062, 695.3901977539062], "page": 79, "span": [0, 101], "__ref_s3_data": null}], "text": "You are now ready to activate RCAC on all three tables in this example. Complete the following steps:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.8000030517578, 631.479736328125, 542.7099609375, 666.022705078125], "page": 79, "span": [0, 239], "__ref_s3_data": null}], "text": "- 1. Start by enabling RCAC on the CUSTOMERS table. From System i Navigator, right-click the CUSTOMERS table and select Definition . As shown in Figure 4-41, make sure that you select Row access control and Column access control . Click OK .", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.109375, 447.28289794921875, 361.76947021484375, 456.8214111328125], "page": 79, "span": [0, 48], "__ref_s3_data": null}], "text": "Figure 4-41 Enabling RCAC on the CUSTOMERS table", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/72"}, {"prov": [{"bbox": [135.86691284179688, 396.5186462402344, 537.477783203125, 430.72796630859375], "page": 79, "span": [0, 198], "__ref_s3_data": null}], "text": "- 2. Enable RCAC on the ACCOUNTS table. Right-click the ACCOUNTS table and select Definition . As shown Figure 4-42, make sure that you select Row access control and Column access control . Click OK .", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.17703247070312, 206.22412109375, 318.5569763183594, 216.01983642578125], "page": 79, "span": [0, 37], "__ref_s3_data": null}], "text": "Figure 4-42 Enabling RCAC on ACCOUNTS", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/73"}, {"prov": [{"bbox": [214.27894592285156, 27.94580078125, 523.5935668945312, 37.2763671875], "page": 79, "span": [0, 70], "__ref_s3_data": null}], "text": "Chapter 4. Implementing Row and Column Access Control: Banking example", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [535.566162109375, 27.93828010559082, 547.2591552734375, 37.69140625], "page": 79, "span": [0, 2], "__ref_s3_data": null}], "text": "63", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [136.11422729492188, 687.2786865234375, 544.6798706054688, 721.4954223632812], "page": 80, "span": [0, 183], "__ref_s3_data": null}], "text": "- 3. Enable RCAC on the TRANSACTIONS table. Right-click the TRANSACTIONS table and select Definition . As shown in Figure 4-43, make sure that you select Row access control . Click OK .", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.18548583984375, 502.91986083984375, 338.2870788574219, 512.703125], "page": 80, "span": [0, 41], "__ref_s3_data": null}], "text": "Figure 4-43 Enabling RCAC on TRANSACTIONS", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/74"}, {"prov": [{"bbox": [64.14816284179688, 471.0173034667969, 271.11932373046875, 484.41094970703125], "page": 80, "span": [0, 31], "__ref_s3_data": null}], "text": "4.3.9 Reviewing row permissions", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.9355010986328, 435.63848876953125, 535.83544921875, 458.0364990234375], "page": 80, "span": [0, 96], "__ref_s3_data": null}], "text": "This section displays all the row permissions after enabling RCAC. Complete the following steps:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.80099487304688, 394.4778747558594, 533.23095703125, 428.6591491699219], "page": 80, "span": [0, 174], "__ref_s3_data": null}], "text": "- 1. From System i Navigator, click Row Permissions , as shown in Figure 4-44. Three additional Row Permissions are added (QIBM_DEFAULT*). There is one per each row permission.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.30838775634766, 198.54144287109375, 271.8835754394531, 207.906982421875], "page": 80, "span": [0, 47], "__ref_s3_data": null}], "text": "Figure 4-44 Row permissions after enabling RCAC", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/75"}, {"prov": [{"bbox": [64.15714263916016, 27.93828010559082, 78.4020004272461, 37.66644287109375], "page": 80, "span": [0, 2], "__ref_s3_data": null}], "text": "64", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.25228881835938, 28.04449462890625, 334.4214172363281, 37.32940673828125], "page": 80, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [135.80770874023438, 699.2303466796875, 544.3787231445312, 721.4266357421875], "page": 81, "span": [0, 121], "__ref_s3_data": null}], "text": "- 2. Look at one of the row permission definitions by right-clicking it and selecting Definition , as shown in Figure 4-45.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.82278442382812, 541.2850341796875, 328.7805480957031, 550.4591064453125], "page": 81, "span": [0, 47], "__ref_s3_data": null}], "text": "Figure 4-45 Selecting row permission definition", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/76"}, {"prov": [{"bbox": [136.20486450195312, 478.66326904296875, 546.0803833007812, 524.6837768554688], "page": 81, "span": [0, 344], "__ref_s3_data": null}], "text": "- 3. A window opens, as shown in Figure 4-46. Take note of the nonsensical search condition (0=1) of the QIBM_DEFAULT row permission. This permission is ORed with all of the others and it ensures that if someone does not meet any of the criteria from the row permission then this condition is tested, and because it is false the access is denied.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.38289642333984, 184.7705078125, 342.9576110839844, 193.93914794921875], "page": 81, "span": [0, 63], "__ref_s3_data": null}], "text": "Figure 4-46 Search condition of the QIBM_DEFAULT row permission", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/77"}, {"prov": [{"bbox": [214.26358032226562, 27.94195556640625, 523.5935668945312, 37.2916259765625], "page": 81, "span": [0, 70], "__ref_s3_data": null}], "text": "Chapter 4. Implementing Row and Column Access Control: Banking example", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [535.6220703125, 27.93828010559082, 547.2591552734375, 37.70361328125], "page": 81, "span": [0, 2], "__ref_s3_data": null}], "text": "65", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.1228256225586, 708.2988891601562, 347.13360595703125, 721.7398071289062], "page": 82, "span": [0, 42], "__ref_s3_data": null}], "text": "4.3.10 Demonstrating data access with RCAC", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.73379516601562, 672.9600830078125, 547.2556762695312, 695.3556518554688], "page": 82, "span": [0, 148], "__ref_s3_data": null}], "text": "You are now ready to test the RCAC definitions. Run the following SQL statements with each type of user (DBE, SECURITY, TELLER, ADMIN, and WEBUSER):", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.537353515625, 656.0548095703125, 390.8248596191406, 666.2977294921875], "page": 82, "span": [0, 65], "__ref_s3_data": null}], "text": "- GLYPH A SELECT statement that returns the SESSION_USER.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.6352081298828, 627.279296875, 543.1919555664062, 649.3411254882812], "page": 82, "span": [0, 131], "__ref_s3_data": null}], "text": "- GLYPH A SELECT statement that counts the customers from the CUSTOMER table. There are 90 customers in the CUSTOMER table.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.70932006835938, 598.2001953125, 543.6400756835938, 620.5113525390625], "page": 82, "span": [0, 126], "__ref_s3_data": null}], "text": "- GLYPH A simple SELECT statement that returns the following output from the CUSTOMERS table ordered by customer_name:", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.35504150390625, 581.2601318359375, 227.99673461914062, 591.09033203125], "page": 82, "span": [0, 22], "__ref_s3_data": null}], "text": "- -c u s t o m e r _ i d", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.4617462158203, 569.2603149414062, 237.2466278076172, 578.634765625], "page": 82, "span": [0, 14], "__ref_s3_data": null}], "text": "- -customer_name", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.39413452148438, 557.260498046875, 236.13906860351562, 567.0379638671875], "page": 82, "span": [0, 15], "__ref_s3_data": null}], "text": "- -customer_email", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.38189697265625, 545.2606811523438, 246.89581298828125, 554.8548583984375], "page": 82, "span": [0, 30], "__ref_s3_data": null}], "text": "- -c u s t o m e r _ t a x _ i d", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.4001007080078, 533.2608642578125, 318.3563537597656, 543.35791015625], "page": 82, "span": [0, 32], "__ref_s3_data": null}], "text": "- -customer_drivers_license_number", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.71405029296875, 505.5359802246094, 357.2292175292969, 517.52392578125], "page": 82, "span": [0, 36], "__ref_s3_data": null}], "text": "Data access for a DBE user with RCAC", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.20758056640625, 492.2782897949219, 394.5498352050781, 502.6961364746094], "page": 82, "span": [0, 57], "__ref_s3_data": null}], "text": "To test a DBE (MCAIN) user, complete the following steps:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.73385620117188, 463.1365966796875, 531.4830322265625, 485.1209411621094], "page": 82, "span": [0, 152], "__ref_s3_data": null}], "text": "- 1. Confirm that the user is the user of the session by running the first SQL statement, as shown in Figure 4-47. In this example, MCAIN is the DBE user.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.308349609375, 341.9928894042969, 262.7190856933594, 351.44464111328125], "page": 82, "span": [0, 28], "__ref_s3_data": null}], "text": "Figure 4-47 DBE session user", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/78"}, {"prov": [{"bbox": [135.81915283203125, 314.73345947265625, 503.1596374511719, 325.3260192871094], "page": 82, "span": [0, 78], "__ref_s3_data": null}], "text": "- 2. The number of rows that the DBE user MCAIN can see is shown in Figure 4-48.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.09771728515625, 155.87709045410156, 451.9573974609375, 165.4344482421875], "page": 82, "span": [0, 71], "__ref_s3_data": null}], "text": "Figure 4-48 Number of rows that DBE user can see in the CUSTOMERS table", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/79"}, {"prov": [{"bbox": [64.22357940673828, 27.93828010559082, 78.4020004272461, 37.54156494140625], "page": 82, "span": [0, 2], "__ref_s3_data": null}], "text": "66", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.37715148925781, 28.0130615234375, 334.4214172363281, 37.31842041015625], "page": 82, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [136.20147705078125, 687.2783203125, 547.291015625, 721.3931884765625], "page": 83, "span": [0, 201], "__ref_s3_data": null}], "text": "- 3. The result of the third SQL statement is shown in Figure 4-49. Note the masked columns. User MCAIN can see all the rows in the CUSTOMERS table, but there are some columns where the result is masked.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.37542724609375, 312.47698974609375, 376.57159423828125, 322.11279296875], "page": 83, "span": [0, 73], "__ref_s3_data": null}], "text": "Figure 4-49 SQL statement that is run by the DBE user with masked columns", "type": "paragraph", "name": "paragraph", "font": null}, {"prov": [{"bbox": [136.4634246826172, 283.8960876464844, 382.60321044921875, 296.45758056640625], "page": 83, "span": [0, 39], "__ref_s3_data": null}], "text": "Data access for SECURITY user with RCAC", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.3077392578125, 270.501953125, 382.8707580566406, 280.8298645019531], "page": 83, "span": [0, 54], "__ref_s3_data": null}], "text": "To test a SECURITY user, complete the following steps:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.8000030517578, 241.58203125, 531.4830322265625, 264.041259765625], "page": 83, "span": [0, 163], "__ref_s3_data": null}], "text": "- 1. Confirm that the user is the user of the session by running the first SQL statement, as shown in Figure 4-50. In this example, SECURITY is the security officer.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.09732055664062, 95.172119140625, 289.5880432128906, 104.47393798828125], "page": 83, "span": [0, 33], "__ref_s3_data": null}], "text": "Figure 4-50 SECURITY session user", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/80"}, {"prov": [{"bbox": [214.31561279296875, 27.99371337890625, 523.5935668945312, 37.20220947265625], "page": 83, "span": [0, 70], "__ref_s3_data": null}], "text": "Chapter 4. Implementing Row and Column Access Control: Banking example", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [535.5758666992188, 27.93828010559082, 547.2591552734375, 37.74444580078125], "page": 83, "span": [0, 2], "__ref_s3_data": null}], "text": "67", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.20339965820312, 27.93828010559082, 78.4020004272461, 37.572021484375], "page": 84, "span": [0, 2], "__ref_s3_data": null}], "text": "68", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.34625244140625, 28.0338134765625, 334.4214172363281, 37.291259765625], "page": 84, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [135.87147521972656, 698.9642944335938, 547.1937866210938, 721.371826171875], "page": 84, "span": [0, 152], "__ref_s3_data": null}], "text": "- 2. The number of rows in the CUSTOMERS table that the security officer can see is shown in Figure 4-51. The security officer cannot see any data at all.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.1445770263672, 554.88623046875, 486.7213439941406, 563.9288330078125], "page": 84, "span": [0, 83], "__ref_s3_data": null}], "text": "Figure 4-51 Number of rows that the security officer can see in the CUSTOMERS table", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/81"}, {"prov": [{"bbox": [136.01255798339844, 516.1114501953125, 542.7387084960938, 537.9552001953125], "page": 84, "span": [0, 126], "__ref_s3_data": null}], "text": "- 3. The result of the third SQL statement is shown in Figure 4-52. Note the empty set that is returned to the security officer.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.1894760131836, 341.9969787597656, 362.28131103515625, 351.4267883300781], "page": 84, "span": [0, 71], "__ref_s3_data": null}], "text": "Figure 4-52 SQL statement that is run by the SECURITY user - no results", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/82"}, {"prov": [{"bbox": [136.5155792236328, 313.4159851074219, 368.6448059082031, 325.609619140625], "page": 84, "span": [0, 37], "__ref_s3_data": null}], "text": "Data access for TELLER user with RCAC", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.20401000976562, 299.6714782714844, 427.7564697265625, 310.2610168457031], "page": 84, "span": [0, 64], "__ref_s3_data": null}], "text": "To test a Teller (TQSPENCER) user, complete the following steps:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.66238403320312, 271.08343505859375, 530.67822265625, 293.5404052734375], "page": 84, "span": [0, 164], "__ref_s3_data": null}], "text": "- 1. Confirm that the TELLER user is the user of the session by running the first SQL statement, as shown in Figure 4-53. In this example, TQSPENCER is a TELLER user.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.1230010986328, 110.4892578125, 278.20037841796875, 119.848388671875], "page": 84, "span": [0, 31], "__ref_s3_data": null}], "text": "Figure 4-53 TELLER session user", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/83"}, {"prov": [{"bbox": [135.8011474609375, 699.0465087890625, 547.2401733398438, 721.39990234375], "page": 85, "span": [0, 136], "__ref_s3_data": null}], "text": "- 2. The number of rows in the CUSTOMERS table that the TELLER user can see is shown in Figure 4-54. The TELLER user can see all the rows.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.62548828125, 561.177001953125, 482.5060729980469, 570.638427734375], "page": 85, "span": [0, 78], "__ref_s3_data": null}], "text": "Figure 4-54 Number of rows that the TELLER user can see in the CUSTOMERS table", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/84"}, {"prov": [{"bbox": [136.01345825195312, 510.33868408203125, 547.2914428710938, 544.7952880859375], "page": 85, "span": [0, 195], "__ref_s3_data": null}], "text": "- 3. The result of the third SQL statement is shown in Figure 4-55. Note the masked columns. The TELLER user, TQSPENSER, can see all the rows, but there are some columns where the result is masked.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.17078399658203, 110.51699829101562, 391.8590393066406, 119.83746337890625], "page": 85, "span": [0, 76], "__ref_s3_data": null}], "text": "Figure 4-55 SQL statement that is run by the TELLER user with masked columns", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/85"}, {"prov": [{"bbox": [214.29336547851562, 28.0645751953125, 523.5935668945312, 37.20977783203125], "page": 85, "span": [0, 70], "__ref_s3_data": null}], "text": "Chapter 4. Implementing Row and Column Access Control: Banking example", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [535.5740966796875, 27.93828010559082, 547.2591552734375, 37.833740234375], "page": 85, "span": [0, 2], "__ref_s3_data": null}], "text": "69", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [63.99982833862305, 27.93828010559082, 78.4020004272461, 37.82769775390625], "page": 86, "span": [0, 2], "__ref_s3_data": null}], "text": "70", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.3930892944336, 28.03778076171875, 334.4214172363281, 37.30694580078125], "page": 86, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [136.52813720703125, 709.5360107421875, 361.28759765625, 721.5006103515625], "page": 86, "span": [0, 36], "__ref_s3_data": null}], "text": "Data access for ADMIN user with RCAC", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.3176727294922, 696.2783203125, 448.129638671875, 706.8600463867188], "page": 86, "span": [0, 65], "__ref_s3_data": null}], "text": "To test an ADMIN (VGLUCCHESS) user, complete the following steps:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.8000030517578, 666.9929809570312, 547.238525390625, 689.4435424804688], "page": 86, "span": [0, 164], "__ref_s3_data": null}], "text": "- 1. Confirm that the ADMIN user is the user of the session by running the first SQL statement, as shown in Figure 4-56. In this example, VGLUCCHESS is an ADMIN user.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.44989013671875, 557.8770141601562, 274.6385803222656, 567.1987915039062], "page": 86, "span": [0, 30], "__ref_s3_data": null}], "text": "Figure 4-56 ADMIN session user", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/86"}, {"prov": [{"bbox": [135.9615936279297, 519.0384521484375, 537.4520263671875, 541.28369140625], "page": 86, "span": [0, 111], "__ref_s3_data": null}], "text": "- 2. The number of rows that the ADMIN user can see is shown in Figure 4-57. The ADMIN user can see all the rows.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.13417053222656, 411.4801025390625, 457.3196716308594, 420.7099304199219], "page": 86, "span": [0, 72], "__ref_s3_data": null}], "text": "Figure 4-57 Number of rows that the ADMIN can see in the CUSTOMERS table", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/87"}, {"prov": [{"bbox": [136.0950164794922, 699.2781372070312, 524.1978759765625, 721.41357421875], "page": 87, "span": [0, 94], "__ref_s3_data": null}], "text": "- 3. The result of the third SQL statement is shown in Figure 4-58. There are no masked columns.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.27821350097656, 303.9661865234375, 386.91961669921875, 313.4559020996094], "page": 87, "span": [0, 75], "__ref_s3_data": null}], "text": "Figure 4-58 SQL statement that is run by the ADMIN user - no masked columns", "type": "paragraph", "name": "paragraph", "font": null}, {"prov": [{"bbox": [136.49583435058594, 275.79608154296875, 383.07720947265625, 287.5277404785156], "page": 87, "span": [0, 38], "__ref_s3_data": null}], "text": "Data access for WEBUSER user with RCAC", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.1496124267578, 250.45343017578125, 527.5846557617188, 272.600830078125], "page": 87, "span": [0, 121], "__ref_s3_data": null}], "text": "To test a CUSTOMERS (WEBUSER) user that accesses the database by using the web application, complete the following steps:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.61180114746094, 220.994873046875, 531.4830322265625, 243.40185546875], "page": 87, "span": [0, 157], "__ref_s3_data": null}], "text": "- 1. Confirm that the user is the user of the session by running the first SQL statement, as shown in Figure 4-59. In this example, WEBUSER is a CUSTOMER user.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.1943817138672, 106.53924560546875, 289.5948791503906, 116.01922607421875], "page": 87, "span": [0, 32], "__ref_s3_data": null}], "text": "Figure 4-59 WEBUSER session user", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/88"}, {"prov": [{"bbox": [214.297607421875, 28.0042724609375, 523.5935668945312, 37.20550537109375], "page": 87, "span": [0, 70], "__ref_s3_data": null}], "text": "Chapter 4. Implementing Row and Column Access Control: Banking example", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [535.4384765625, 27.93828010559082, 547.2591552734375, 37.85540771484375], "page": 87, "span": [0, 2], "__ref_s3_data": null}], "text": "71", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [63.95808410644531, 27.93828010559082, 78.4020004272461, 37.7515869140625], "page": 88, "span": [0, 2], "__ref_s3_data": null}], "text": "72", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.32298278808594, 27.989990234375, 334.4214172363281, 37.32470703125], "page": 88, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [135.97177124023438, 686.7930908203125, 547.2925415039062, 721.4656372070312], "page": 88, "span": [0, 195], "__ref_s3_data": null}], "text": "- 2. A global variable (CUSTOMER_LOGIN_ID) is set by the web application and then is used to check the row permissions. Figure 4-60 shows setting the global variable by using the customer login ID.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.13768005371094, 559.078369140625, 394.4398498535156, 568.9273681640625], "page": 88, "span": [0, 57], "__ref_s3_data": null}], "text": "Figure 4-60 Setting the global variable CUSTOMER_LOGIN_ID", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/89"}, {"prov": [{"bbox": [135.97732543945312, 520.39306640625, 514.379638671875, 542.7027587890625], "page": 88, "span": [0, 127], "__ref_s3_data": null}], "text": "- 3. Verify that the global variable was set with the correct value by clicking the Global Variable tab, as shown in Figure 4-61.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.13868713378906, 261.212158203125, 320.7819519042969, 270.6387939453125], "page": 88, "span": [0, 45], "__ref_s3_data": null}], "text": "Figure 4-61 Viewing the global variable value", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/90"}, {"prov": [{"bbox": [135.78077697753906, 222.26959228515625, 541.2606811523438, 244.6905517578125], "page": 88, "span": [0, 145], "__ref_s3_data": null}], "text": "- 4. The number of rows that the WEBUSER can see is shown in Figure 4-62. This user can see only the one row that belongs to his web-based user ID.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.2648468017578, 96.59709930419922, 474.20855712890625, 106.13018798828125], "page": 88, "span": [0, 74], "__ref_s3_data": null}], "text": "Figure 4-62 Number of rows that the WEBUSER can see in the CUSTOMERS table", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/91"}, {"prov": [{"bbox": [136.2493438720703, 699.2781372070312, 524.1978759765625, 721.4386596679688], "page": 89, "span": [0, 158], "__ref_s3_data": null}], "text": "- 5. The result of the third SQL statement is shown in Figure 4-63. There are no masked columns, and the user can see only one row, which is the user's own row.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.18749237060547, 529.97705078125, 368.2061462402344, 539.26708984375], "page": 89, "span": [0, 68], "__ref_s3_data": null}], "text": "Figure 4-63 SQL statement that is run by WEBUSER - no masked columns", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/92"}, {"prov": [{"bbox": [136.10256958007812, 501.39599609375, 377.4743957519531, 513.8388671875], "page": 89, "span": [0, 39], "__ref_s3_data": null}], "text": "Other examples of data access with RCAC", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.91213989257812, 475.9766540527344, 512.9512939453125, 498.0209655761719], "page": 89, "span": [0, 114], "__ref_s3_data": null}], "text": "To run an SQL statement that lists all the accounts and current balance by customer, complete the following steps:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.5059051513672, 435.0992736816406, 535.2608642578125, 469.5335998535156], "page": 89, "span": [0, 167], "__ref_s3_data": null}], "text": "- 1. Run the SQL statement that is shown in Figure 4-64 using the WEBUSER user profile. The SQL statement has no WHERE clause, but the WEBUSER can see only his accounts.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.13351440429688, 238.66253662109375, 520.2975463867188, 247.94659423828125], "page": 89, "span": [0, 91], "__ref_s3_data": null}], "text": "Figure 4-64 List of accounts and current balance by customer using the WEBUSER user profile", "type": "paragraph", "name": "paragraph", "font": null}, {"prov": [{"bbox": [214.31243896484375, 27.9693603515625, 523.5935668945312, 37.21197509765625], "page": 89, "span": [0, 70], "__ref_s3_data": null}], "text": "Chapter 4. Implementing Row and Column Access Control: Banking example", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [535.3995361328125, 27.93828010559082, 547.2591552734375, 37.65289306640625], "page": 89, "span": [0, 2], "__ref_s3_data": null}], "text": "73", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [63.96171188354492, 27.93828010559082, 78.4020004272461, 37.88232421875], "page": 90, "span": [0, 2], "__ref_s3_data": null}], "text": "74", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.27671813964844, 27.97564697265625, 334.4214172363281, 37.367431640625], "page": 90, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [135.940185546875, 675.2788696289062, 547.2566528320312, 721.3955078125], "page": 90, "span": [0, 261], "__ref_s3_data": null}], "text": "- 2. Figure 4-65 shows running a more complex SQL statement that calculates transaction total by account for year and quarter. Run this statement using the WEBUSER profile. The SQL statement has no WHERE clause, but the WEBUSER user can see only his transactions.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.05810546875, 281.088623046875, 535.08740234375, 290.78485107421875], "page": 90, "span": [0, 97], "__ref_s3_data": null}], "text": "Figure 4-65 Calculate transaction total by account for year and quarter using the WEBUSER profile", "type": "paragraph", "name": "paragraph", "font": null}, {"prov": [{"bbox": [136.18202209472656, 687.2783203125, 547.2400512695312, 721.334716796875], "page": 91, "span": [0, 236], "__ref_s3_data": null}], "text": "- 3. Run the same SQL statement that lists the accounts and current balance by customer, but use a TELLER user profile. The result of this SQL statement is shown in Figure 4-66. The TELLER user can see all the rows in the CUSTOMERS table.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.2951202392578, 289.8878173828125, 501.49591064453125, 299.4490966796875], "page": 91, "span": [0, 88], "__ref_s3_data": null}], "text": "Figure 4-66 List of accounts and current balance by customer using a TELLER user profile", "type": "paragraph", "name": "paragraph", "font": null}, {"prov": [{"bbox": [64.09226989746094, 257.6646728515625, 375.0662841796875, 270.94171142578125], "page": 91, "span": [0, 47], "__ref_s3_data": null}], "text": "4.3.11 Query implementation with RCAC activated", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.77622985839844, 198.13531494140625, 547.1669311523438, 244.79510498046875], "page": 91, "span": [0, 280], "__ref_s3_data": null}], "text": "This section looks at some other interesting information that is related to RCAC by comparing the access plans of the same SQL statement without RCAC and with RCAC. This example uses Visual Explain and runs an SQL statement that lists the accounts and current balance by customer.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [214.29998779296875, 27.95953369140625, 523.5935668945312, 37.236572265625], "page": 91, "span": [0, 70], "__ref_s3_data": null}], "text": "Chapter 4. Implementing Row and Column Access Control: Banking example", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [535.4443969726562, 27.93828010559082, 547.2591552734375, 37.81414794921875], "page": 91, "span": [0, 2], "__ref_s3_data": null}], "text": "75", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [63.95058822631836, 27.93828010559082, 78.4020004272461, 37.78094482421875], "page": 92, "span": [0, 2], "__ref_s3_data": null}], "text": "76", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.32958221435547, 28.02093505859375, 334.4214172363281, 37.35498046875], "page": 92, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [136.1143798828125, 710.7125244140625, 266.8606872558594, 721.446044921875], "page": 92, "span": [0, 29], "__ref_s3_data": null}], "text": "Complete the following steps:", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.79046630859375, 670.2988891601562, 532.4749755859375, 704.571044921875], "page": 92, "span": [0, 183], "__ref_s3_data": null}], "text": "- 1. Figure 4-67 shows the SQL statement in Visual Explain ran with no RCAC. The implementation of the SQL statement is a two-way join, which is exactly what the SQL statement is doing.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.02316284179688, 281.702880859375, 340.572021484375, 291.3924865722656], "page": 92, "span": [0, 47], "__ref_s3_data": null}], "text": "Figure 4-67 Visual Explain with no RCAC enabled", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/93"}, {"prov": [{"bbox": [136.00341796875, 687.1716918945312, 514.048583984375, 721.5369873046875], "page": 93, "span": [0, 228], "__ref_s3_data": null}], "text": "- 2. Figure 4-68 shows the Visual Explain of the same SQL statement, but with RCAC enabled. It is clear that the implementation of the SQL statement is more complex because the row permission rule becomes part of the WHERE clause.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.9990692138672, 302.78125, 327.9913635253906, 311.7919921875], "page": 93, "span": [0, 44], "__ref_s3_data": null}], "text": "Figure 4-68 Visual Explain with RCAC enabled", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/94"}, {"prov": [{"bbox": [136.2928924560547, 251.98651123046875, 547.2394409179688, 286.0349426269531], "page": 93, "span": [0, 232], "__ref_s3_data": null}], "text": "- 3. Compare the advised indexes that are provided by the Optimizer without RCAC and with RCAC enabled. Figure 4-69 shows the index advice for the SQL statement without RCAC enabled. The index being advised is for the ORDER BY clause.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.35660552978516, 116.0611572265625, 227.347412109375, 125.32025146484375], "page": 93, "span": [0, 37], "__ref_s3_data": null}], "text": "Figure 4-69 Index advice with no RCAC", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/95"}, {"prov": [{"bbox": [214.30316162109375, 27.9913330078125, 523.5935668945312, 37.2801513671875], "page": 93, "span": [0, 70], "__ref_s3_data": null}], "text": "Chapter 4. Implementing Row and Column Access Control: Banking example", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [535.3654174804688, 27.93828010559082, 547.2591552734375, 37.719970703125], "page": 93, "span": [0, 2], "__ref_s3_data": null}], "text": "77", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [135.9367218017578, 687.2786865234375, 547.188720703125, 721.3848266601562], "page": 94, "span": [0, 232], "__ref_s3_data": null}], "text": "- 4. Now, look at the advised indexes with RCAC enabled. As shown in Figure 4-70, there is an additional index being advised, which is basically for the row permission rule. For more information, see 6.4.2, \"Index advisor\" on page 99.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.2020263671875, 544.4198608398438, 249.87530517578125, 553.6696166992188], "page": 94, "span": [0, 42], "__ref_s3_data": null}], "text": "Figure 4-70 Index advice with RCAC enabled", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/96"}, {"prov": [{"bbox": [63.94062805175781, 27.93828010559082, 78.4020004272461, 37.81573486328125], "page": 94, "span": [0, 2], "__ref_s3_data": null}], "text": "78", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.33392333984375, 28.05181884765625, 334.4214172363281, 37.32916259765625], "page": 94, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/97"}, {"prov": [{"bbox": [81.0, 517.019287109375, 115.13253021240234, 523.457275390625], "page": 95, "span": [0, 10], "__ref_s3_data": null}], "text": "Chapter 5.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [500.3999938964844, 661.8682861328125, 522.6177368164062, 698.831298828125], "page": 95, "span": [0, 1], "__ref_s3_data": null}], "text": "5", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.8000030517578, 513.0821533203125, 511.1795959472656, 538.669677734375], "page": 95, "span": [0, 27], "__ref_s3_data": null}], "text": "RCAC and non-SQL interfaces", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.93673706054688, 405.0663757324219, 547.181884765625, 475.41363525390625], "page": 95, "span": [0, 513], "__ref_s3_data": null}], "text": "A benefit of Row and Column Access Control (RCAC) is that its security controls are enforced across all the interfaces that access DB2 for i because the security rules are defined and enforced at the database level. The examples that are shown in this paper focus on SQL-based access, but row permissions and column masks also are enforced for non-SQL interfaces, such as native record-level access in RPG and COBOL programs and CL commands, such as Display Physical File Member ( DSPPFM ) and Copy File ( CPYF ).", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.76991271972656, 359.08001708984375, 547.2554931640625, 393.2198791503906], "page": 95, "span": [0, 246], "__ref_s3_data": null}], "text": "This consistent enforcement across all interfaces is a good thing, but there are some nuances and restrictions as a result of applying an SQL-based technology such as RCAC to non-SQL interfaces. These considerations are described in this chapter.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.10678100585938, 337.0604553222656, 412.4370422363281, 347.1801452636719], "page": 95, "span": [0, 65], "__ref_s3_data": null}], "text": "The following topics are covered in this chapter in this chapter:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.8011016845703, 319.5867919921875, 254.5669708251953, 329.6640319824219], "page": 95, "span": [0, 38], "__ref_s3_data": null}], "text": "- GLYPH Unsupported interfaces", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.7434844970703, 308.0808410644531, 285.9834289550781, 317.3988342285156], "page": 95, "span": [0, 47], "__ref_s3_data": null}], "text": "- GLYPH Native query result differences", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.7656707763672, 296.0810241699219, 325.0879211425781, 306.08868408203125], "page": 95, "span": [0, 53], "__ref_s3_data": null}], "text": "- GLYPH Accidental updates with masked values", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.72933959960938, 283.6689147949219, 318.95843505859375, 293.7930908203125], "page": 95, "span": [0, 49], "__ref_s3_data": null}], "text": "- GLYPH System CL commands considerations", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [63.744651794433594, 27.908203125, 257.24334716796875, 37.23199462890625], "page": 95, "span": [0, 48], "__ref_s3_data": null}], "text": "' Copyright IBM Corp. 2014. All rights reserved.", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [535.3575439453125, 27.93828010559082, 547.2591552734375, 37.77392578125], "page": 95, "span": [0, 2], "__ref_s3_data": null}], "text": "79", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.43855285644531, 702.4107666015625, 275.70184326171875, 718.6322021484375], "page": 96, "span": [0, 26], "__ref_s3_data": null}], "text": "5.1 Unsupported interfaces", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.1591339111328, 663.6136474609375, 519.7969970703125, 686.068359375], "page": 96, "span": [0, 112], "__ref_s3_data": null}], "text": "It is not possible to create a row permission or column mask on a distributed table or a program-described file.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.89776611328125, 617.4327392578125, 547.2138061523438, 651.9190673828125], "page": 96, "span": [0, 265], "__ref_s3_data": null}], "text": "After a row permission or column mask is added to a table, there are some data access requests that no longer work. An attempt to open or query a table with activated RCAC controls involving any of the following scenarios is rejected with the CPD43A4 error message:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.5338592529297, 600.8960571289062, 526.0348510742188, 611.342041015625], "page": 96, "span": [0, 103], "__ref_s3_data": null}], "text": "- GLYPH A logical file with multiple formats if the open attempt requests more than one format.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.57638549804688, 588.82666015625, 410.4948425292969, 599.421875], "page": 96, "span": [0, 75], "__ref_s3_data": null}], "text": "- GLYPH A table or query that specifies an ICU 2.6.1 sort sequence.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.51390075683594, 576.810302734375, 264.3358459472656, 586.9641723632812], "page": 96, "span": [0, 43], "__ref_s3_data": null}], "text": "- GLYPH A table with read triggers.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.78880310058594, 543.160400390625, 537.0208129882812, 565.395263671875], "page": 96, "span": [0, 136], "__ref_s3_data": null}], "text": "This unsupported interface error occurs when a table with RCAC controls is accessed, not when the RCAC control is created and activated.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.04721069335938, 473.14154052734375, 547.275634765625, 531.491455078125], "page": 96, "span": [0, 451], "__ref_s3_data": null}], "text": "For example, assume that there is a physical file, PF1, which is referenced by a single format logical file (LFS) and a multi-format logical file (LFM). A row permission is successfully created and activated for PF1. Any application that accesses PF1 directly or LFS continues to work without any issues. However, any application that opens LFM with multiple formats receives an error on the open attempt after the row permission is activated for PF1.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [141.973876953125, 408.6007080078125, 541.2369995117188, 455.5430603027344], "page": 96, "span": [0, 306], "__ref_s3_data": null}], "text": "Important: This potential runtime error places a heavy emphasis on a comprehensive testing plan to ensure that all programs are tested. If testing uncovers an unsupported interface, then you must investigate whether the application can be rewritten to use a data access interface that is supported by RCAC.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.47200012207031, 360.3584289550781, 329.61151123046875, 376.6991882324219], "page": 96, "span": [0, 35], "__ref_s3_data": null}], "text": "5.2 Native query result differences", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.66397094726562, 297.4229736328125, 542.3941650390625, 344.3070373535156], "page": 96, "span": [0, 321], "__ref_s3_data": null}], "text": "The SQL Query Engine (SQE) is the only engine that is enhanced by IBM to enforce RCAC controls on query requests. In order for native query requests to work with RCAC, these native query requests are now processed by SQE instead of the Classic Query Engine (CQE). Native query requests can consist of the following items:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.92169189453125, 281.1392517089844, 198.29859924316406, 291.45050048828125], "page": 96, "span": [0, 25], "__ref_s3_data": null}], "text": "- GLYPH Query/400", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.69873046875, 269.1394348144531, 214.61248779296875, 279.62432861328125], "page": 96, "span": [0, 26], "__ref_s3_data": null}], "text": "- GLYPH QQQQRY API", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.62481689453125, 257.1396179199219, 315.83990478515625, 267.34716796875], "page": 96, "span": [0, 51], "__ref_s3_data": null}], "text": "- GLYPH Open Query File ( OPNQRYF ) command", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.5345458984375, 245.13980102539062, 285.93896484375, 255.6026611328125], "page": 96, "span": [0, 44], "__ref_s3_data": null}], "text": "- GLYPH Run Query ( RUNQRY ) command", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.56021118164062, 233.13999938964844, 441.7839660644531, 243.46417236328125], "page": 96, "span": [0, 74], "__ref_s3_data": null}], "text": "- GLYPH Native open (RPG, COBOL, OPNDBF, and so on) of an SQL view", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.97003173828125, 174.9041748046875, 541.6351928710938, 221.2158203125], "page": 96, "span": [0, 332], "__ref_s3_data": null}], "text": "Legacy queries that have been running without any issues for many years and over many IBM i releases are now processed by a different query engine. As a result, the runtime behavior and results that are returned can be different for native query requests with RCAC enabled. The OPNQRYF command and Query/400 run with SQE by default.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.73948669433594, 140.65643310546875, 547.283447265625, 163.37255859375], "page": 96, "span": [0, 129], "__ref_s3_data": null}], "text": "The following list documents some of the query output differences that can occur when native query requests are processed by CQE:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.9209747314453, 123.5390625, 299.18975830078125, 133.8785400390625], "page": 96, "span": [0, 52], "__ref_s3_data": null}], "text": "- GLYPH Different ordering in the result set", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.68008422851562, 111.573486328125, 393.4990234375, 121.787109375], "page": 96, "span": [0, 72], "__ref_s3_data": null}], "text": "- GLYPH Different values for null columns or columns with errors", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.76820373535156, 99.1552734375, 358.4886169433594, 110.0054931640625], "page": 96, "span": [0, 58], "__ref_s3_data": null}], "text": "- GLYPH Suppression of some mapping error messages", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.62449645996094, 87.7000732421875, 310.7019348144531, 98.14892578125], "page": 96, "span": [0, 52], "__ref_s3_data": null}], "text": "- GLYPH Loss of RRN positioning capabilities", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.7325439453125, 75.52520751953125, 354.2079162597656, 86.00927734375], "page": 96, "span": [0, 61], "__ref_s3_data": null}], "text": "- GLYPH Duplicate key processing behavior differences", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.72433471679688, 63.67352294921875, 246.4168701171875, 73.82000732421875], "page": 96, "span": [0, 36], "__ref_s3_data": null}], "text": "- GLYPH Missing key feedback", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.1874008178711, 27.93828010559082, 78.4020004272461, 37.61077880859375], "page": 96, "span": [0, 2], "__ref_s3_data": null}], "text": "80", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.2634048461914, 28.0943603515625, 334.4214172363281, 37.3101806640625], "page": 96, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [136.42791748046875, 699.2781372070312, 543.0580444335938, 721.3850708007812], "page": 97, "span": [0, 105], "__ref_s3_data": null}], "text": "For a list of the differences and additional details, see the IBM i Memo to Users Version 7.2 , found at:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.22903442382812, 682.218994140625, 521.8867797851562, 692.5701904296875], "page": 97, "span": [0, 77], "__ref_s3_data": null}], "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgmtu.htm", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.18670654296875, 648.2789306640625, 544.6605834960938, 670.4671630859375], "page": 97, "span": [0, 180], "__ref_s3_data": null}], "text": "In addition, the performance of a native query with SQE can be different. It is possible that a new index or keyed logical file might need to be created to improve the performance.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [141.93385314941406, 595.689208984375, 495.4548034667969, 630.1156005859375], "page": 97, "span": [0, 229], "__ref_s3_data": null}], "text": "Important: Based on the potential impacts of query result set and performance differences, you should perform extensive functional testing and performance benchmarking of applications and reports that use native query interfaces.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.66980743408203, 547.7825927734375, 396.822265625, 563.8651733398438], "page": 97, "span": [0, 41], "__ref_s3_data": null}], "text": "5.3 Accidental updates with masked values", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.81739807128906, 497.2587890625, 547.184814453125, 531.3096923828125], "page": 97, "span": [0, 193], "__ref_s3_data": null}], "text": "The masked values that are returned by a column mask can potentially cause the original data value to be accidentally overwritten, especially with applications using native record-level access.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.87274169921875, 439.19415283203125, 541.6968994140625, 485.3960876464844], "page": 97, "span": [0, 291], "__ref_s3_data": null}], "text": "For example, consider a table containing three columns of first name, last name, and tax ID that is read by an RPG program. The user running the program is not authorized to see the tax ID value, so a masked value (*****3333) is written into the program's record buffer, as shown Figure 5-1.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.08998107910156, 369.28070068359375, 547.1439819335938, 427.2828674316406], "page": 97, "span": [0, 453], "__ref_s3_data": null}], "text": "In this example, the application reads the data for an update to correct the misspelling of the last name. The last name value is changed to Smith in the buffer. Now, a WRITE request is issued by the program, which uses the contents of the record buffer to update the row in the underlying DB2 table. Unfortunately, the record buffer still contains a masked value for the tax ID, so the tax ID value in the table is accidentally set to the masked value.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.07180786132812, 60.53710174560547, 374.3499755859375, 69.81817626953125], "page": 97, "span": [0, 56], "__ref_s3_data": null}], "text": "Figure 5-1 Accidental update with masked values scenario", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/98"}, {"prov": [{"bbox": [353.64373779296875, 27.8997802734375, 523.6332397460938, 37.12353515625], "page": 97, "span": [0, 38], "__ref_s3_data": null}], "text": "Chapter 5. RCAC and non-SQL interfaces", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [535.66748046875, 27.93828010559082, 547.2591552734375, 37.72357177734375], "page": 97, "span": [0, 2], "__ref_s3_data": null}], "text": "81", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.22566223144531, 27.93828010559082, 78.4020004272461, 37.58349609375], "page": 98, "span": [0, 2], "__ref_s3_data": null}], "text": "82", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.18901824951172, 28.08782958984375, 334.4214172363281, 37.28155517578125], "page": 98, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [135.91806030273438, 699.2785034179688, 545.1429443359375, 721.273193359375], "page": 98, "span": [0, 107], "__ref_s3_data": null}], "text": "Obviously, careful planning and testing should be exercised to avoid accidental updates with masked values.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.93345642089844, 641.2594604492188, 547.2675170898438, 687.3599853515625], "page": 98, "span": [0, 333], "__ref_s3_data": null}], "text": "DB2 for i also enhanced its check constraint support in the IBM i 7.2 release with a new ON UPDATE clause that allows the existing value to be preserved when a masked value is detected by a check constraint. Details about how to employ this new check constraint support can be found in 6.8.1, \"Check constraint solution\" on page 108.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.44256591796875, 597.47412109375, 385.5848388671875, 614.06787109375], "page": 98, "span": [0, 37], "__ref_s3_data": null}], "text": "5.4 System CL commands considerations", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.84999084472656, 522.8721923828125, 547.4896240234375, 581.5377807617188], "page": 98, "span": [0, 440], "__ref_s3_data": null}], "text": "As stated earlier, RCAC controls are enforced on all data access interfaces. This enforcement is not limited to programmatic interfaces; it also includes system CL commands that read and insert data, such as the Create Duplicate Object ( CRTDUPOBJ ) and Start DFU ( STRDFU ) CL commands. This section documents the behavior of the Create Duplicate Object ( CRTDUPOBJ ), Copy File ( CPYF ), and Copy Library ( CPYLIB ) CL commands with RCAC.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.2880630493164, 490.1130676269531, 405.0467224121094, 503.80047607421875], "page": 98, "span": [0, 49], "__ref_s3_data": null}], "text": "5.4.1 Create Duplicate Object (CRTDUPOBJ) command", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.64491271972656, 431.25885009765625, 542.9708251953125, 477.33099365234375], "page": 98, "span": [0, 294], "__ref_s3_data": null}], "text": "The CRTDUPOBJ command is enhanced with a new Access Control ( ACCCTL ) parameter in the IBM i 7.2 release to copy RCAC controls to the new object being created. Row permissions and column masks are copied to the new object by default because the default value for the ACCCTL parameter is *ALL .", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.95484924316406, 385.2994079589844, 538.5584716796875, 419.28741455078125], "page": 98, "span": [0, 210], "__ref_s3_data": null}], "text": "If the invoker of the CRTDUPOBJ command asks for data to be copied with a value of *YES for the DATA parameter, the value of the ACCCTL parameter must be *ALL . If not, the command invocation receives an error.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.810791015625, 315.160400390625, 547.2168579101562, 373.19256591796875], "page": 98, "span": [0, 442], "__ref_s3_data": null}], "text": "When data is copied to the duplicated object with the DATA parameter, all rows and unmasked column values are copied into the new object, even if the command invoker is not authorized to view all rows or certain column values. This behavior occurs because the RCAC controls also are copied to the new object. The copied RCAC controls enforce that only authorized users are allowed to view row and column values in the newly duplicated object.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.34564208984375, 282.2169189453125, 270.95599365234375, 296.1662902832031], "page": 98, "span": [0, 30], "__ref_s3_data": null}], "text": "5.4.2 Copy File (CPYF) command", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.7013702392578, 234.65618896484375, 547.2855224609375, 269.44036865234375], "page": 98, "span": [0, 214], "__ref_s3_data": null}], "text": "The CPYF command copies only data, so there is no new parameter to copy RCAC controls to the target table. Therefore, if CPYF is used to create a target table, there are no RCAC controls placed on the target table.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.7746124267578, 129.28024291992188, 547.3273315429688, 223.41302490234375], "page": 98, "span": [0, 660], "__ref_s3_data": null}], "text": "When RCAC controls are in place on the source table, the CPYF command is limited to reading rows and column values that are based on the invoker of the CPYF command. If a user is authorized to see all rows and column values, then all rows and unmasked column values are copied to the target table (assuming no RCAC controls are on the target table). If a user without full access runs the CPYF command, the CPYF command can copy only a subset of the rows into the target table. In addition, if that user can view only masked column values, then masked values are copied into the target table. This also applies to the Copy to Import File ( CPYTOIMPF ) command.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.0672149658203, 71.03631591796875, 535.8108520507812, 117.3995361328125], "page": 98, "span": [0, 330], "__ref_s3_data": null}], "text": "If the target table has RCAC controls defined and activated, then the CPYF command is allowed only to add or replace rows in the target table based on the RCAC controls. If CPYF tries to add a row to the target table that the command invoker is not allowed to view according to the target RCAC controls, then an error is received.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.39531707763672, 708.2225341796875, 305.67718505859375, 721.97216796875], "page": 99, "span": [0, 35], "__ref_s3_data": null}], "text": "5.4.3 Copy Library (CPYLIB) command", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.95230102539062, 637.2990112304688, 544.9737548828125, 695.278076171875], "page": 99, "span": [0, 354], "__ref_s3_data": null}], "text": "The CPYLIB command is enhanced with the same Access Control ( ACCCTL ) parameter as the CRTDUPOBJ command in the IBM i 7.2 release (see 5.4.1, \"Create Duplicate Object (CRTDUPOBJ) command\" on page 82). Row permissions and column masks are copied to the new object in the new library by default because the default value for the ACCCTL parameter is *ALL .", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [353.7088317871094, 27.8951416015625, 523.6332397460938, 37.14202880859375], "page": 99, "span": [0, 38], "__ref_s3_data": null}], "text": "Chapter 5. RCAC and non-SQL interfaces", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [535.67578125, 27.93828010559082, 547.2591552734375, 37.62774658203125], "page": 99, "span": [0, 2], "__ref_s3_data": null}], "text": "83", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.472412109375, 27.93828010559082, 78.4020004272461, 37.7430419921875], "page": 100, "span": [0, 2], "__ref_s3_data": null}], "text": "84", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.35282135009766, 27.94873046875, 334.50579833984375, 37.45806884765625], "page": 100, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/99"}, {"prov": [{"bbox": [81.0, 517.019287109375, 115.13253021240234, 523.457275390625], "page": 101, "span": [0, 10], "__ref_s3_data": null}], "text": "Chapter 6.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.34396362304688, 513.0821533203125, 455.59796142578125, 538.808837890625], "page": 101, "span": [0, 25], "__ref_s3_data": null}], "text": "Additional considerations", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.87008666992188, 452.89501953125, 531.345458984375, 475.2606506347656], "page": 101, "span": [0, 168], "__ref_s3_data": null}], "text": "This chapter covers additional considerations that must be taken into account when implementing Row and Column Access Control (RCAC), including the following functions:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.8069610595703, 435.6946716308594, 267.31884765625, 445.96240234375], "page": 101, "span": [0, 40], "__ref_s3_data": null}], "text": "- GLYPH Timing of column masking", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.6639404296875, 424.05908203125, 221.46388244628906, 433.942626953125], "page": 101, "span": [0, 29], "__ref_s3_data": null}], "text": "- GLYPH Data movement", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.80430603027344, 412.05926513671875, 174.4866485595703, 421.6257629394531], "page": 101, "span": [0, 21], "__ref_s3_data": null}], "text": "- GLYPH Joins", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.77816772460938, 400.0594482421875, 177.6728515625, 409.7166748046875], "page": 101, "span": [0, 21], "__ref_s3_data": null}], "text": "- GLYPH Views", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.9530487060547, 387.8131103515625, 262.4305114746094, 397.8844909667969], "page": 101, "span": [0, 41], "__ref_s3_data": null}], "text": "- GLYPH Materialized query tables", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.72091674804688, 376.059814453125, 210.3322296142578, 385.6953430175781], "page": 101, "span": [0, 29], "__ref_s3_data": null}], "text": "- GLYPH Index advisor", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.53468322753906, 363.45330810546875, 310.97344970703125, 373.67767333984375], "page": 101, "span": [0, 51], "__ref_s3_data": null}], "text": "- GLYPH Monitoring, analysis, and debugging", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.64329528808594, 351.6171875, 273.3426513671875, 362.1476135253906], "page": 101, "span": [0, 43], "__ref_s3_data": null}], "text": "- GLYPH Performance and scalability", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.005859375, 329.6795349121094, 347.4121398925781, 340.0391845703125], "page": 101, "span": [0, 49], "__ref_s3_data": null}], "text": "The following topics are covered in this chapter:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.94393920898438, 312.88189697265625, 267.31884765625, 323.3427734375], "page": 101, "span": [0, 40], "__ref_s3_data": null}], "text": "- GLYPH Timing of column masking", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.8094024658203, 301.06097412109375, 296.3423156738281, 311.0367431640625], "page": 101, "span": [0, 45], "__ref_s3_data": null}], "text": "- GLYPH RCAC effects on data movement", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.80313110351562, 289.03125, 248.5316162109375, 299.19488525390625], "page": 101, "span": [0, 37], "__ref_s3_data": null}], "text": "- GLYPH RCAC effects on joins", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.69058227539062, 276.99609375, 368.6199951171875, 287.5282287597656], "page": 101, "span": [0, 62], "__ref_s3_data": null}], "text": "- GLYPH Monitoring, analyzing, and debugging with RCAC", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.53225708007812, 265.0615234375, 428.5085754394531, 275.75750732421875], "page": 101, "span": [0, 77], "__ref_s3_data": null}], "text": "- GLYPH Views, materialized query tables, and query rewrite with RCAC", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.63209533691406, 252.91455078125, 349.38427734375, 263.27227783203125], "page": 101, "span": [0, 59], "__ref_s3_data": null}], "text": "- GLYPH RCAC effects on performance and scalability", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.68804931640625, 240.64111328125, 390.4403381347656, 251.15997314453125], "page": 101, "span": [0, 70], "__ref_s3_data": null}], "text": "- GLYPH Exclusive lock to implement RCAC (availability issues)", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.8003692626953, 228.98834228515625, 315.37078857421875, 239.31402587890625], "page": 101, "span": [0, 51], "__ref_s3_data": null}], "text": "- GLYPH Avoiding propagation of masked data", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.62815856933594, 217.0623016357422, 307.3042297363281, 227.705810546875], "page": 101, "span": [0, 48], "__ref_s3_data": null}], "text": "- GLYPH Triggers and functions (SECURED)", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.61077880859375, 204.86920166015625, 315.1477355957031, 215.291259765625], "page": 101, "span": [0, 53], "__ref_s3_data": null}], "text": "- GLYPH RCAC is only one part of the solution", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [63.789581298828125, 27.87945556640625, 257.24334716796875, 37.2982177734375], "page": 101, "span": [0, 48], "__ref_s3_data": null}], "text": "' Copyright IBM Corp. 2014. All rights reserved.", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [535.6629028320312, 27.93828010559082, 547.2591552734375, 37.66424560546875], "page": 101, "span": [0, 2], "__ref_s3_data": null}], "text": "85", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [500.3999938964844, 661.8682861328125, 522.6177368164062, 698.946533203125], "page": 101, "span": [0, 1], "__ref_s3_data": null}], "text": "6", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.63821411132812, 702.0612182617188, 298.45440673828125, 718.587646484375], "page": 102, "span": [0, 28], "__ref_s3_data": null}], "text": "6.1 Timing of column masking", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.9453887939453, 627.4352416992188, 547.2496337890625, 686.14501953125], "page": 102, "span": [0, 381], "__ref_s3_data": null}], "text": "An important design and implementation consideration is the fact that RCAC column masking occurs after all of the query processing is complete, which means that the query results are not at all based on the masked values. Any local selection, joining, grouping, or ordering operations are based on the unmasked column values. Only the final result set is the target of the masking.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.015625, 593.7183837890625, 547.2325439453125, 615.9714965820312], "page": 102, "span": [0, 140], "__ref_s3_data": null}], "text": "An example of this situation is shown in Figure 6-1. However, note that aggregate functions (a form of grouping) are based on masked values.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [222.81260681152344, 559.6641845703125, 250.3378143310547, 568.2012329101562], "page": 102, "span": [0, 6], "__ref_s3_data": null}], "text": "SELECT", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [289.8625183105469, 559.6641845703125, 386.1354675292969, 568.2435302734375], "page": 102, "span": [0, 19], "__ref_s3_data": null}], "text": "CREDIT_CARD_NUMBER,", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [223.27870178222656, 537.4301147460938, 247.33633422851562, 546.2095947265625], "page": 102, "span": [0, 4], "__ref_s3_data": null}], "text": "FROM", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [223.30404663085938, 526.31298828125, 264.05712890625, 535.2268676757812], "page": 102, "span": [0, 8], "__ref_s3_data": null}], "text": "GROUP BY", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [289.9476623535156, 526.31298828125, 384.1680908203125, 535.2972412109375], "page": 102, "span": [0, 18], "__ref_s3_data": null}], "text": "CREDIT_CARD_NUMBER", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [223.270263671875, 515.1958618164062, 262.7109680175781, 523.8567504882812], "page": 102, "span": [0, 8], "__ref_s3_data": null}], "text": "ORDER BY", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [290.0070495605469, 514.6119384765625, 386.2455749511719, 524.111083984375], "page": 102, "span": [0, 19], "__ref_s3_data": null}], "text": "CREDIT_CARD_NUMBER;", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [160.45700073242188, 481.6206970214844, 285.01361083984375, 494.1083068847656], "page": 102, "span": [0, 20], "__ref_s3_data": null}], "text": "Without RCAC Masking", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [341.0262451171875, 481.6206970214844, 447.76593017578125, 494.02642822265625], "page": 102, "span": [0, 17], "__ref_s3_data": null}], "text": "With RCAC Masking", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"name": "Table", "type": "table", "$ref": "#/tables/9"}, {"prov": [{"bbox": [136.17198181152344, 310.2148132324219, 290.1625061035156, 319.8768310546875], "page": 102, "span": [0, 35], "__ref_s3_data": null}], "text": "Figure 6-1 Timing of column masking", "type": "caption", "name": "Caption", "font": null}, {"name": "Table", "type": "table", "$ref": "#/tables/10"}, {"prov": [{"bbox": [290.2481994628906, 537.4301147460938, 389.2164001464844, 556.4693603515625], "page": 102, "span": [0, 33], "__ref_s3_data": null}], "text": "SUM(AMOUNT) AS TOTAL TRANSACTIONS", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.28016662597656, 27.93828010559082, 78.4020004272461, 37.57470703125], "page": 102, "span": [0, 2], "__ref_s3_data": null}], "text": "86", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.40719604492188, 28.0390625, 334.4214172363281, 37.34661865234375], "page": 102, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [135.76144409179688, 627.1250610351562, 547.1474609375, 721.3262329101562], "page": 103, "span": [0, 652], "__ref_s3_data": null}], "text": "Conversely, field procedure masking causes the column values to be changed (that is, masked) and stored in the row. When the table is queried and the masked columns are referenced, the masked data is used for any local selection, joining, grouping, or ordering operations. This situation can have a profound effect on the query's final result set and not just on the column values that are returned. Field procedure masking occurs when the column values are read from disk before any query processing. RCAC masking occurs when the column values are returned to the application after query processing. This difference in behavior is shown in Figure 6-2.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [142.0433349609375, 563.2588500976562, 540.7468872070312, 609.5735473632812], "page": 103, "span": [0, 262], "__ref_s3_data": null}], "text": "Note: Column masks can influence an SQL INSERT or UPDATE . For example, you cannot insert or update a table with column access control activated with masked data generated from an expression within the same statement that is based on a column with a column mask.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.22874450683594, 250.298583984375, 386.6689758300781, 260.0198974609375], "page": 103, "span": [0, 57], "__ref_s3_data": null}], "text": "Figure 6-2 Masking differences between Fieldproc and RCAC", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/100"}, {"prov": [{"bbox": [376.0430603027344, 27.89581298828125, 523.6287841796875, 37.10882568359375], "page": 103, "span": [0, 36], "__ref_s3_data": null}], "text": "Chapter 6. Additional considerations", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [535.6262817382812, 27.93828010559082, 547.2591552734375, 37.75579833984375], "page": 103, "span": [0, 2], "__ref_s3_data": null}], "text": "87", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.4045181274414, 706.0162963867188, 342.9945068359375, 721.7020874023438], "page": 104, "span": [0, 33], "__ref_s3_data": null}], "text": "6.2 RCAC effects on data movement", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.77244567871094, 631.2990112304688, 547.2276000976562, 689.32666015625], "page": 104, "span": [0, 370], "__ref_s3_data": null}], "text": "As described earlier and shown in Figure 6-3, RCAC is applied pervasively regardless of the data access programming interface, SQL statement, or IBM i command. The effects of RCAC on data movement scenarios can be profound and possibly problematic. It is important to understand these effects and make the appropriate adjustments to avoid incorrect results or data loss.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.88336181640625, 491.0691223144531, 292.6585693359375, 500.34722900390625], "page": 104, "span": [0, 33], "__ref_s3_data": null}], "text": "Figure 6-3 RCAC and data movement", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/101"}, {"prov": [{"bbox": [135.75350952148438, 392.0856628417969, 547.2745361328125, 474.4322814941406], "page": 104, "span": [0, 619], "__ref_s3_data": null}], "text": "The \"user\" that is running the data movement application or process, whether it be a high availability (HA) scenario, an extract, transform, load (ETL) scenario, or just copying data from one file or table to another one, must have permission to all the source rows without masking, and not be restricted from putting rows into the target. Allowing the data movement application or process to bypass the RCAC rules must be based on a clear and concise understanding of the organization's object security and data access policy. Proper design, implementation, and testing are critical success factors when applying RCAC.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [141.819091796875, 316.4790344238281, 536.527587890625, 374.66552734375], "page": 104, "span": [0, 360], "__ref_s3_data": null}], "text": "Important: RCAC is applied to the table or physical file access. It is not applied to the journal receiver access. Any and all database transactions are represented in the journal regardless of RCAC row permissions and column masks. This makes it essential that IBM i security is used to ensure that only authorized personnel have access to the journaled data.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.97303771972656, 287.01776123046875, 390.6604919433594, 297.2681884765625], "page": 104, "span": [0, 59], "__ref_s3_data": null}], "text": "This section covers in detail the following three examples:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.6826171875, 270.45928955078125, 372.0890197753906, 280.8384094238281], "page": 104, "span": [0, 64], "__ref_s3_data": null}], "text": "- GLYPH Effects when RCAC is defined on the source table", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.69775390625, 258.45947265625, 367.6379089355469, 268.9405517578125], "page": 104, "span": [0, 64], "__ref_s3_data": null}], "text": "- GLYPH Effects when RCAC is defined on the target table", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.60743713378906, 246.3919677734375, 430.467529296875, 256.6319580078125], "page": 104, "span": [0, 77], "__ref_s3_data": null}], "text": "- GLYPH Effects when RCAC is defined on both source and target tables", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.18472290039062, 213.8573760986328, 407.9704895019531, 226.94378662109375], "page": 104, "span": [0, 54], "__ref_s3_data": null}], "text": "6.2.1 Effects when RCAC is defined on the source table", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.2682647705078, 178.47857666015625, 536.1681518554688, 200.6033935546875], "page": 104, "span": [0, 102], "__ref_s3_data": null}], "text": "Example 6-1 shows a simple example that illustrates the effect of RCAC as defined on the source table.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.156005859375, 157.27630615234375, 331.8805847167969, 166.70245361328125], "page": 104, "span": [0, 40], "__ref_s3_data": null}], "text": "Example 6-1 INSERT INTO TARGET statement", "type": "paragraph", "name": "paragraph", "font": null}, {"prov": [{"bbox": [136.8000030517578, 139.66534423828125, 346.6770935058594, 149.3502197265625], "page": 104, "span": [0, 42], "__ref_s3_data": null}], "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.2040786743164, 27.93828010559082, 78.4020004272461, 37.48199462890625], "page": 104, "span": [0, 2], "__ref_s3_data": null}], "text": "88", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.31021881103516, 28.070068359375, 334.4214172363281, 37.2696533203125], "page": 104, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [136.09054565429688, 650.7742919921875, 547.2900390625, 721.3619995117188], "page": 105, "span": [0, 516], "__ref_s3_data": null}], "text": "For example, given a \"source\" table with a row permission defined as NAME <> 'CAIN' and a column mask that is defined to project the value 999.99 for AMOUNT, the SELECT statement produces a result set that has the RCAC rules applied. This reduced and modified result set is inserted into the \"target\" table even though the query is defined as returning all rows and all columns. Instead of seven rows that are selected from the source, only three rows are returned and placed into the target, as shown in Figure 6-4.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.06468200683594, 375.16595458984375, 377.7413635253906, 384.626953125], "page": 105, "span": [0, 52], "__ref_s3_data": null}], "text": "Figure 6-4 RCAC effects on data movement from SOURCE", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/102"}, {"prov": [{"bbox": [64.16183471679688, 342.9894104003906, 401.6576843261719, 356.17694091796875], "page": 105, "span": [0, 54], "__ref_s3_data": null}], "text": "6.2.2 Effects when RCAC is defined on the target table", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.28038024902344, 307.8984680175781, 536.1681518554688, 329.9527587890625], "page": 105, "span": [0, 102], "__ref_s3_data": null}], "text": "Example 6-2 shows a simple example that illustrates the effect of RCAC as defined on the target table.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.6165771484375, 286.58740234375, 331.8912658691406, 296.1914367675781], "page": 105, "span": [0, 40], "__ref_s3_data": null}], "text": "Example 6-2 INSERT INTO TARGET statement", "type": "paragraph", "name": "paragraph", "font": null}, {"prov": [{"bbox": [136.8000030517578, 269.07110595703125, 346.6770935058594, 278.66558837890625], "page": 105, "span": [0, 42], "__ref_s3_data": null}], "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [376.070556640625, 27.95361328125, 523.6287841796875, 37.0096435546875], "page": 105, "span": [0, 36], "__ref_s3_data": null}], "text": "Chapter 6. Additional considerations", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [535.6676635742188, 27.93828010559082, 547.2591552734375, 37.6810302734375], "page": 105, "span": [0, 2], "__ref_s3_data": null}], "text": "89", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.0672378540039, 27.93828010559082, 78.4020004272461, 37.62274169921875], "page": 106, "span": [0, 2], "__ref_s3_data": null}], "text": "90", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.31163787841797, 28.11328125, 334.4214172363281, 37.2567138671875], "page": 106, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [135.84625244140625, 650.9519653320312, 547.2645874023438, 721.3875122070312], "page": 106, "span": [0, 546], "__ref_s3_data": null}], "text": "Given a \"target\" table with a row permission defined as NAME <> 'CAIN' and a column mask that is defined to project the value 999.99 for AMOUNT, the SELECT statement produces a result set that represents all the rows and columns. The seven row result set is inserted into the \"target\", and the RCAC row permission causes an error to be returned, as shown in Figure 6-5. The source rows where NAME = 'CAIN' do not satisfy the target table's permission, and therefore cannot be inserted. In other words, you are inserting data that you cannot read.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.212646484375, 368.3596496582031, 367.2479248046875, 377.9114990234375], "page": 106, "span": [0, 50], "__ref_s3_data": null}], "text": "Figure 6-5 RCAC effects on data movement on TARGET", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/103"}, {"prov": [{"bbox": [64.19894409179688, 336.4187316894531, 490.12786865234375, 349.5552673339844], "page": 106, "span": [0, 67], "__ref_s3_data": null}], "text": "6.2.3 Effects when RCAC is defined on both source and target tables", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.13351440429688, 301.178466796875, 541.6332397460938, 323.2520751953125], "page": 106, "span": [0, 123], "__ref_s3_data": null}], "text": "Example 6-3 shows a simple example that illustrates the effect of RCAC as defined on both the source and the target tables.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.3226776123047, 279.97625732421875, 332.0595703125, 289.47418212890625], "page": 106, "span": [0, 40], "__ref_s3_data": null}], "text": "Example 6-3 INSERT INTO TARGET statement", "type": "paragraph", "name": "paragraph", "font": null}, {"prov": [{"bbox": [136.8000030517578, 262.46722412109375, 346.6770935058594, 271.24200439453125], "page": 106, "span": [0, 42], "__ref_s3_data": null}], "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.995849609375, 173.19976806640625, 547.2467041015625, 243.18621826171875], "page": 106, "span": [0, 473], "__ref_s3_data": null}], "text": "Given a \"source\" table and a \"target\" table with a row permission defined as NAME <> 'CAIN' and a column mask that is defined to project the value 999.99 for AMOUNT, the SELECT statement produces a result set that has the RCAC rules applied. This reduced and modified result set is inserted into the \"target\" table even though the query is defined as returning all rows and all columns. Instead of seven rows that are selected from the source, only three rows are returned.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.59042358398438, 675.2281494140625, 547.2501831054688, 721.4307861328125], "page": 107, "span": [0, 331], "__ref_s3_data": null}], "text": "Although the source rows where NAME <> 'CAIN' do satisfy the target table's permission, the AMOUNT column value of 999.99 represents masked data and therefore cannot be inserted. An error is returned indicating the failure, as shown in Figure 6-6. In this scenario, DB2 is protecting against an overt attempt to insert masked data.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.80810546875, 395.1744079589844, 425.63427734375, 404.73822021484375], "page": 107, "span": [0, 61], "__ref_s3_data": null}], "text": "Figure 6-6 RCAC effects on data movement on SOURCE and TARGET", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/104"}, {"prov": [{"bbox": [64.44702911376953, 351.5459899902344, 263.02801513671875, 367.8985595703125], "page": 107, "span": [0, 25], "__ref_s3_data": null}], "text": "6.3 RCAC effects on joins", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.9691619873047, 301.17767333984375, 546.7406005859375, 335.34326171875], "page": 107, "span": [0, 258], "__ref_s3_data": null}], "text": "As mentioned previously, a fundamental concept of row permission is that it defines a logical subset of rows that a user or group of users is permitted to access and use. This subset becomes the new basis of any query against the table that has RCAC enabled.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [142.4822540283203, 261.12799072265625, 541.3812255859375, 283.4383239746094], "page": 107, "span": [0, 167], "__ref_s3_data": null}], "text": "Note: Thinking of the row permission as defining a virtual set of rows that can be operated on is the secret to understanding the effect of RCAC on any join operation.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [376.1033630371094, 27.9495849609375, 523.6287841796875, 37.02716064453125], "page": 107, "span": [0, 36], "__ref_s3_data": null}], "text": "Chapter 6. Additional considerations", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [535.6055297851562, 27.93828010559082, 547.2591552734375, 37.75299072265625], "page": 107, "span": [0, 2], "__ref_s3_data": null}], "text": "91", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.16549682617188, 27.93828010559082, 78.4020004272461, 37.60833740234375], "page": 108, "span": [0, 2], "__ref_s3_data": null}], "text": "92", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.34784698486328, 28.07244873046875, 334.4214172363281, 37.32550048828125], "page": 108, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [136.05355834960938, 699.1768188476562, 537.429931640625, 721.4932861328125], "page": 108, "span": [0, 149], "__ref_s3_data": null}], "text": "As shown in Figure 6-7, there are two different sets, set A and set B. However, set B has a row permission that subsets the rows that a user can see.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.143310546875, 463.0318298339844, 334.12286376953125, 472.460693359375], "page": 108, "span": [0, 47], "__ref_s3_data": null}], "text": "Figure 6-7 Set A and set B with row permissions", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/105"}, {"prov": [{"bbox": [64.19314575195312, 430.45025634765625, 166.59303283691406, 443.494873046875], "page": 108, "span": [0, 17], "__ref_s3_data": null}], "text": "6.3.1 Inner joins", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.13674926757812, 394.8365783691406, 547.21875, 417.4061584472656], "page": 108, "span": [0, 158], "__ref_s3_data": null}], "text": "Inner join defines the intersection of two data sets. For a row to be returned from the inner join query, it must appear in both sets, as shown in Figure 6-8.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.0211181640625, 157.64129638671875, 327.359130859375, 167.20330810546875], "page": 108, "span": [0, 45], "__ref_s3_data": null}], "text": "Figure 6-8 Inner join without RCAC permission", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/106"}, {"prov": [{"bbox": [135.92884826660156, 675.1539306640625, 547.3219604492188, 721.5256958007812], "page": 109, "span": [0, 279], "__ref_s3_data": null}], "text": "Given that row permission serves to eliminate logically rows from one or more sets, the result set from an inner join (and a subquery) can be different when RCAC is applied. RCAC can reduce the number of rows that are permitted to be accessed by the join, as shown in Figure 6-9.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [142.26942443847656, 622.7393798828125, 537.6323852539062, 657.3994140625], "page": 109, "span": [0, 207], "__ref_s3_data": null}], "text": "Effect of column masks on inner joins: Because column masks are applied after the query final results are determined, the masked value has no effect on the join processing and corresponding query result set.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.20010375976562, 359.0969543457031, 314.9713439941406, 368.56854248046875], "page": 109, "span": [0, 42], "__ref_s3_data": null}], "text": "Figure 6-9 Inner join with RCAC permission", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/107"}, {"prov": [{"bbox": [376.04339599609375, 27.87664794921875, 523.6287841796875, 37.1475830078125], "page": 109, "span": [0, 36], "__ref_s3_data": null}], "text": "Chapter 6. Additional considerations", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [535.5010375976562, 27.93828010559082, 547.2591552734375, 37.6861572265625], "page": 109, "span": [0, 2], "__ref_s3_data": null}], "text": "93", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.229248046875, 708.5062866210938, 169.51583862304688, 721.5722045898438], "page": 110, "span": [0, 17], "__ref_s3_data": null}], "text": "6.3.2 Outer joins", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.7491912841797, 649.0192260742188, 547.2286376953125, 695.2848510742188], "page": 110, "span": [0, 360], "__ref_s3_data": null}], "text": "Outer joins preserve one or both sides of two data sets. A row can be returned from the outer join query if it appears in the primary set (LEFT, RIGHT, or both in the case of FULL), as shown in Figure 6-10. Column values from the secondary set are returned if the row has a match in the primary set. Otherwise, NULL is returned for the column value by default.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.09414672851562, 407.05682373046875, 334.3742370605469, 416.6016845703125], "page": 110, "span": [0, 46], "__ref_s3_data": null}], "text": "Figure 6-10 Outer join without RCAC permission", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/108"}, {"prov": [{"bbox": [64.17929077148438, 27.93828010559082, 78.4020004272461, 37.6510009765625], "page": 110, "span": [0, 2], "__ref_s3_data": null}], "text": "94", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.3522720336914, 28.08441162109375, 334.4214172363281, 37.3170166015625], "page": 110, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [135.9468994140625, 687.0872802734375, 535.2982177734375, 721.3490600585938], "page": 111, "span": [0, 218], "__ref_s3_data": null}], "text": "Given that row permission serves to eliminate logically rows from one or more sets, more column values that are returned from the secondary table in outer join can be NULL when RCAC is applied, as shown in Figure 6-11.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [142.19854736328125, 634.9480590820312, 537.6323852539062, 669.730712890625], "page": 111, "span": [0, 207], "__ref_s3_data": null}], "text": "Effect of column masks on inner joins: Because column masks are applied after the query final results are determined, the masked value has no effect on the join processing and corresponding query result set.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.94920349121094, 357.8431396484375, 321.8890380859375, 367.32806396484375], "page": 111, "span": [0, 43], "__ref_s3_data": null}], "text": "Figure 6-11 Outer join with RCAC permission", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/109"}, {"prov": [{"bbox": [376.03192138671875, 27.9044189453125, 523.6287841796875, 37.10693359375], "page": 111, "span": [0, 36], "__ref_s3_data": null}], "text": "Chapter 6. Additional considerations", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [535.5347900390625, 27.93828010559082, 547.2591552734375, 37.7152099609375], "page": 111, "span": [0, 2], "__ref_s3_data": null}], "text": "95", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.29151153564453, 708.5499877929688, 196.83258056640625, 721.6157836914062], "page": 112, "span": [0, 21], "__ref_s3_data": null}], "text": "6.3.3 Exception joins", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.8982696533203, 648.5689697265625, 547.2914428710938, 695.4368286132812], "page": 112, "span": [0, 297], "__ref_s3_data": null}], "text": "Exception joins preserve one side of two data sets. A row can be returned from the exception join query if it appears in the primary set (LEFT or RIGHT) and the row does not appear in the secondary set, as shown in Figure 6-12. Column values from the secondary set are returned as NULL by default.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.93870544433594, 385.1077575683594, 351.4439392089844, 394.6268310546875], "page": 112, "span": [0, 50], "__ref_s3_data": null}], "text": "Figure 6-12 Exception join without RCAC permission", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/110"}, {"prov": [{"bbox": [135.85084533691406, 322.5378723144531, 544.3384399414062, 368.6776123046875], "page": 112, "span": [0, 343], "__ref_s3_data": null}], "text": "Given that row permission serves to eliminate logically rows from one or more sets, more rows can appear to be exceptions when RCAC is applied, as shown in Figure 6-13. Also, because column masks are applied after the query final results are determined, the masked value has no effect on the join processing and corresponding query result set.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.105224609375, 60.5418701171875, 339.2431945800781, 70.03369140625], "page": 112, "span": [0, 47], "__ref_s3_data": null}], "text": "Figure 6-13 Exception join with RCAC permission", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/111"}, {"prov": [{"bbox": [64.0777587890625, 27.93828010559082, 78.4020004272461, 37.68072509765625], "page": 112, "span": [0, 2], "__ref_s3_data": null}], "text": "96", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.31871032714844, 28.05419921875, 334.4214172363281, 37.34893798828125], "page": 112, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.39301300048828, 705.6498413085938, 469.4769287109375, 722.0193481445312], "page": 113, "span": [0, 50], "__ref_s3_data": null}], "text": "6.4 Monitoring, analyzing, and debugging with RCAC", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.89646911621094, 655.2986450195312, 547.2247314453125, 689.4528198242188], "page": 113, "span": [0, 228], "__ref_s3_data": null}], "text": "It is assumed (and it is a critical success factor) that the database engineer or application developer has a thorough understanding of the DB2 for i Query Optimizer, Database Engine, and all the associated tools and techniques.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.66171264648438, 621.001708984375, 547.1968383789062, 643.3212890625], "page": 113, "span": [0, 163], "__ref_s3_data": null}], "text": "The monitoring, analyzing, and debugging process basically stays the same when RCAC row permissions or column masks are in place, with a few important differences:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.6549530029297, 592.2996215820312, 534.2526245117188, 614.6976928710938], "page": 113, "span": [0, 105], "__ref_s3_data": null}], "text": "- GLYPH The underlying data access plan can be different and more complex based on the rule text.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.5695037841797, 575.2600708007812, 541.5543212890625, 585.3076171875], "page": 113, "span": [0, 104], "__ref_s3_data": null}], "text": "- GLYPH The database results can be reduced or modified based on the rule text and user profile.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.70484924316406, 546.2804565429688, 536.0465087890625, 568.443115234375], "page": 113, "span": [0, 115], "__ref_s3_data": null}], "text": "- GLYPH The run time of the request can be affected either positively or negatively based on the rule text.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.6377410888672, 516.988525390625, 547.224609375, 539.3546142578125], "page": 113, "span": [0, 119], "__ref_s3_data": null}], "text": "- GLYPH For high-level language record level access, query plans must be considered, and not just program code.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.7350311279297, 447.2820129394531, 547.2296752929688, 505.2730712890625], "page": 113, "span": [0, 381], "__ref_s3_data": null}], "text": "During analyzing and debugging, it is important to account for all of the RCAC definitions for each table or file to understand the logic and corresponding work that is associated with processing the row permissions and column masks. It is also important to realize that, depending on the user profile in effect at run time, the database actions and query results can be different.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.05958557128906, 340.8155822753906, 547.2786254882812, 435.37286376953125], "page": 113, "span": [0, 693], "__ref_s3_data": null}], "text": "RCAC is designed and implemented to be transparent to the user. It is possible for user \"Mike\" and user \"Hernando\" to run the exact same query, against the exact same data on the exact same system, and get different result sets. There is no error, no warning, and no indication that RCAC reduced or modified the respective answers that are returned. Furthermore, it is also likely that user \"Mike\" and user \"Hernando\" have different query run times even though it appears that everything is the same for both users. The actual query plan contains the RCAC logic, and this additional code path can alter the amount of work that is needed to produce results, based on the user running the query.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.9143524169922, 271.234130859375, 547.328369140625, 329.0833435058594], "page": 113, "span": [0, 414], "__ref_s3_data": null}], "text": "When monitoring, analyzing, and debugging a database process when RCAC is enabled, it is critical to keep as many of the \"variables\" the same as possible. Use a good scientific process. For example, when re-creating a problem situation running under the same user profile with the same data and under the same conditions, it is almost mandatory. Otherwise, the database behavior and query results can be different.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.94204711914062, 201.28587341308594, 547.2515869140625, 259.26275634765625], "page": 113, "span": [0, 385], "__ref_s3_data": null}], "text": "To successfully perform monitoring, analyzing, and debugging when RCAC is enabled likely involves changes in the security and data access policies of the organization, and require new responsibilities, authority, and oversight within the data-centric application development community. As such, establishing and staffing the position of \"database engineer\" becomes even more important.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.17730712890625, 168.0791015625, 325.99066162109375, 181.6142578125], "page": 113, "span": [0, 41], "__ref_s3_data": null}], "text": "6.4.1 Query monitoring and analysis tools", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.0252227783203, 109.23886108398438, 543.2037353515625, 155.4248046875], "page": 113, "span": [0, 309], "__ref_s3_data": null}], "text": "When monitoring and collecting metrics on database requests, DB2 for i provides additional information that indicates row permissions or column masks are being applied. This information is integrated and part of the standard tools, such as Visual Explain, SQL Plan Cache Snapshot, and SQL Performance Monitor.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [376.0887756347656, 27.9049072265625, 523.6287841796875, 37.08258056640625], "page": 113, "span": [0, 36], "__ref_s3_data": null}], "text": "Chapter 6. Additional considerations", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [535.5423583984375, 27.93828010559082, 547.2591552734375, 37.82244873046875], "page": 113, "span": [0, 2], "__ref_s3_data": null}], "text": "97", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [136.44447326660156, 710.84912109375, 394.5509033203125, 721.3892822265625], "page": 114, "span": [0, 55], "__ref_s3_data": null}], "text": "Figure 6-14 shows how Visual Explain externalizes RCAC.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.1352310180664, 430.5013122558594, 301.8788146972656, 440.0090026855469], "page": 114, "span": [0, 58], "__ref_s3_data": null}], "text": "Figure 6-14 Visual Explain indicating that RCAC is applied", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/112"}, {"prov": [{"bbox": [136.34783935546875, 403.5003662109375, 529.9888916015625, 413.8916320800781], "page": 114, "span": [0, 83], "__ref_s3_data": null}], "text": "Figure 6-15 shows the main dashboard of an SQL Performance Monitor. Click Summary .", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.04948425292969, 237.9185791015625, 222.99563598632812, 247.37237548828125], "page": 114, "span": [0, 35], "__ref_s3_data": null}], "text": "Figure 6-15 SQL Performance Monitor", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/113"}, {"prov": [{"bbox": [136.6471710205078, 198.71783447265625, 524.7570190429688, 221.43133544921875], "page": 114, "span": [0, 100], "__ref_s3_data": null}], "text": "Figure 6-16 shows the summary of an SQL Performance Monitor with an indication that RCAC is applied.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.28324127197266, 94.337890625, 349.08843994140625, 103.998779296875], "page": 114, "span": [0, 67], "__ref_s3_data": null}], "text": "Figure 6-16 SQL Performance Monitor indicating that RCAC is applied", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/114"}, {"prov": [{"bbox": [64.10893249511719, 27.93828010559082, 78.4020004272461, 37.59930419921875], "page": 114, "span": [0, 2], "__ref_s3_data": null}], "text": "98", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.39404296875, 28.0323486328125, 334.4214172363281, 37.30413818359375], "page": 114, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [136.21266174316406, 699.2781372070312, 514.509765625, 721.2932739257812], "page": 115, "span": [0, 92], "__ref_s3_data": null}], "text": "Figure 6-17 shows the statements of an SQL Performance Monitor and how RCAC is externalized.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.27816772460938, 562.5570068359375, 349.6502685546875, 571.9398193359375], "page": 115, "span": [0, 63], "__ref_s3_data": null}], "text": "Figure 6-17 SQL Performance Monitor showing statements and RCAC", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/115"}, {"prov": [{"bbox": [135.8977813720703, 463.65936279296875, 547.1959838867188, 546.065673828125], "page": 115, "span": [0, 613], "__ref_s3_data": null}], "text": "When implementing RCAC as part of a comprehensive and pervasive data access control initiative, consider that the database monitoring and analysis tools can collect literal values that are passed as part of SQL statements. These literal values can be viewed as part of the information collected. If any of the literals are based on or are used with masked columns, it is important to review the database engineer's policy for viewing these data elements. For example, supposed that column CUSTOMER_TAX_ID is deemed masked for the database engineer and the CUSTOMER_TAX_ID column is used in a predicate as follows:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.05642700195312, 445.9201965332031, 321.6575622558594, 456.6171875], "page": 115, "span": [0, 37], "__ref_s3_data": null}], "text": "WHERE CUSTOMER_TAX_ID = '123-45-7890'", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.81124877929688, 400.6603698730469, 520.1124877929688, 434.6428527832031], "page": 115, "span": [0, 195], "__ref_s3_data": null}], "text": "The literal value of '123-45-7890' is visible to the analyst, effectively exposing sensitive information. If this is not acceptable, you must implement the SYSPROC.SET_COLUMN_ATTRIBUTE procedure.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.4740447998047, 354.605712890625, 547.264404296875, 388.69134521484375], "page": 115, "span": [0, 217], "__ref_s3_data": null}], "text": "The SET_COLUMN_ATTRIBUTE procedure sets the SECURE attribute for a column so that variable values that are used for the column cannot be seen in the SQL Performance Monitor, SQL Plan Cache Snapshot, or Visual Explain.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.00121307373047, 322.03729248046875, 184.5458984375, 334.622802734375], "page": 115, "span": [0, 19], "__ref_s3_data": null}], "text": "6.4.2 Index advisor", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.94943237304688, 274.29296875, 544.1452026367188, 308.490966796875], "page": 115, "span": [0, 265], "__ref_s3_data": null}], "text": "Because the RCAC rule text can be almost any valid SQL logic, including local selection predicates, join conditions, and subqueries, the standard query tuning techniques still apply. Without a doubt, a proper and adequate indexing strategy is a good starting point.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.8879852294922, 204.172119140625, 543.59814453125, 262.5904541015625], "page": 115, "span": [0, 434], "__ref_s3_data": null}], "text": "The index advisor is not specifically enhanced for RCAC, but because the rule text is a fully integrated part of the query plan, any opportunities for indexing is advised based on the current Query Optimizer functionality. If an index is advised because of the RCAC rule text logic, there is no RCAC reason code provided. Analyzing the query plan and the RCAC rule text provides the understanding as to why the index is being advised.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [376.0592956542969, 27.951171875, 523.6287841796875, 37.01708984375], "page": 115, "span": [0, 36], "__ref_s3_data": null}], "text": "Chapter 6. Additional considerations", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [535.5274047851562, 27.93828010559082, 547.2591552734375, 37.70538330078125], "page": 115, "span": [0, 2], "__ref_s3_data": null}], "text": "99", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [136.3820037841797, 699.0840454101562, 529.2249145507812, 721.3514404296875], "page": 116, "span": [0, 122], "__ref_s3_data": null}], "text": "For example, the query that is shown in Figure 6-18 produces index advice for the user's predicate and the RCAC predicate.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.15460205078125, 401.260009765625, 286.3040466308594, 410.5371398925781], "page": 116, "span": [0, 33], "__ref_s3_data": null}], "text": "Figure 6-18 Index advice and RCAC", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/116"}, {"prov": [{"bbox": [136.26499938964844, 362.8584899902344, 530.6282958984375, 384.9390869140625], "page": 116, "span": [0, 116], "__ref_s3_data": null}], "text": "In Figure 6-19, index advisor is showing an index for the ACCOUNTS and CUSTOMERS tables based on the RCAC rule text.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.29851531982422, 225.1319580078125, 271.84735107421875, 234.64019775390625], "page": 116, "span": [0, 48], "__ref_s3_data": null}], "text": "Figure 6-19 Index advisor based on the RCAC rule", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/117"}, {"prov": [{"bbox": [136.3258819580078, 186.391845703125, 545.009521484375, 208.79052734375], "page": 116, "span": [0, 116], "__ref_s3_data": null}], "text": "For more information about creating and using indexes, see IBM DB2 for i indexing methods and strategies , found at:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.258544921875, 157.24700927734375, 546.534423828125, 179.91497802734375], "page": 116, "span": [0, 108], "__ref_s3_data": null}], "text": "http://www.ibm.com/partnerworld/wps/servlet/ContentHandler/stg_ast_sys_wp_db2_i_in dexing_methods_strategies", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.1768798828125, 124.9212646484375, 251.73373413085938, 138.27239990234375], "page": 116, "span": [0, 29], "__ref_s3_data": null}], "text": "6.4.3 Metadata using catalogs", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.8922119140625, 65.63323974609375, 519.360595703125, 112.05975341796875], "page": 116, "span": [0, 281], "__ref_s3_data": null}], "text": "To make the discovery and identification of RCAC row permissions and column masks programmatically, query the QSYS2.SYSCONTROLS catalog view or the QSYS2.SYSCONTROLSDEP catalog view directly. Otherwise, the System i Navigator Database graphical interface can be used interactively.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.36641693115234, 27.93828010559082, 83.98200225830078, 37.702392578125], "page": 116, "span": [0, 3], "__ref_s3_data": null}], "text": "100", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [98.54092407226562, 27.9837646484375, 339.8568115234375, 37.3668212890625], "page": 116, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [136.48927307128906, 710.9666137695312, 409.46722412109375, 721.3510131835938], "page": 117, "span": [0, 53], "__ref_s3_data": null}], "text": "Figure 6-20 shows the QSYS2.SYSCONTROLS catalog view.", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [64.26973724365234, 537.1303100585938, 197.03440856933594, 546.5089111328125], "page": 117, "span": [0, 29], "__ref_s3_data": null}], "text": "Figure 6-20 RCAC and catalogs", "type": "paragraph", "name": "paragraph", "font": null}, {"prov": [{"bbox": [136.15829467773438, 510.442138671875, 430.36700439453125, 520.781005859375], "page": 117, "span": [0, 60], "__ref_s3_data": null}], "text": "The SYSCONTROLS catalog view contains the following columns:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.715576171875, 493.5987243652344, 229.52528381347656, 503.4774169921875], "page": 117, "span": [0, 27], "__ref_s3_data": null}], "text": "- GLYPH COLUMN_NAME", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.78355407714844, 481.5989074707031, 231.54153442382812, 491.41107177734375], "page": 117, "span": [0, 28], "__ref_s3_data": null}], "text": "- GLYPH CONTROL_TYPE", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.8020477294922, 469.5990905761719, 219.97596740722656, 479.5697326660156], "page": 117, "span": [0, 27], "__ref_s3_data": null}], "text": "- GLYPH CREATE_TIME", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.65097045898438, 457.5992736816406, 190.9705047607422, 467.5733947753906], "page": 117, "span": [0, 22], "__ref_s3_data": null}], "text": "- GLYPH ENABLE", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.5606231689453, 445.5994567871094, 207.5435791015625, 455.9203186035156], "page": 117, "span": [0, 24], "__ref_s3_data": null}], "text": "- GLYPH ENFORCED", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.4138946533203, 433.5996398925781, 220.03372192382812, 443.9335632324219], "page": 117, "span": [0, 26], "__ref_s3_data": null}], "text": "- GLYPH ASP_NUMBER", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.53013610839844, 421.5998229980469, 193.41262817382812, 431.7314147949219], "page": 117, "span": [0, 24], "__ref_s3_data": null}], "text": "- GLYPH IMPLICIT", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.5832061767578, 409.6000061035156, 182.29428100585938, 419.8447570800781], "page": 117, "span": [0, 21], "__ref_s3_data": null}], "text": "- GLYPH LABEL", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.9365997314453, 397.6001892089844, 226.72982788085938, 407.84820556640625], "page": 117, "span": [0, 28], "__ref_s3_data": null}], "text": "- GLYPH LAST_ALTERED", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.55462646484375, 385.6003723144531, 236.96395874023438, 396.1351623535156], "page": 117, "span": [0, 28], "__ref_s3_data": null}], "text": "- GLYPH LONG_COMMENT", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.59799194335938, 373.6005554199219, 213.861328125, 383.8674621582031], "page": 117, "span": [0, 25], "__ref_s3_data": null}], "text": "- GLYPH RCAC_NAME", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.62445068359375, 361.6007385253906, 223.28578186035156, 372.0160217285156], "page": 117, "span": [0, 26], "__ref_s3_data": null}], "text": "- GLYPH RCAC_OWNER", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.59918212890625, 349.6009216308594, 227.91741943359375, 360.0481262207031], "page": 117, "span": [0, 27], "__ref_s3_data": null}], "text": "- GLYPH RCAC_SCHEMA", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.649658203125, 337.6011047363281, 202.9622802734375, 347.80303955078125], "page": 117, "span": [0, 24], "__ref_s3_data": null}], "text": "- GLYPH RULETEXT", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.53004455566406, 325.6012878417969, 275.5697021484375, 335.63287353515625], "page": 117, "span": [0, 34], "__ref_s3_data": null}], "text": "- GLYPH SYSTEM_COLUMN_NAME", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.6468963623047, 313.6014709472656, 263.12493896484375, 324.02764892578125], "page": 117, "span": [0, 33], "__ref_s3_data": null}], "text": "- GLYPH SYSTEM_TABLE_NAME", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.67005920410156, 301.6016540527344, 276.916015625, 311.7246398925781], "page": 117, "span": [0, 35], "__ref_s3_data": null}], "text": "- GLYPH SYSTEM_TABLE_SCHEMA", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.68890380859375, 289.6018371582031, 216.28732299804688, 299.7500915527344], "page": 117, "span": [0, 26], "__ref_s3_data": null}], "text": "- GLYPH TABLE_NAME", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.64125061035156, 277.6020202636719, 230.32113647460938, 287.85296630859375], "page": 117, "span": [0, 28], "__ref_s3_data": null}], "text": "- GLYPH TABLE_SCHEMA", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.58006286621094, 265.6022033691406, 235.0215301513672, 275.72454833984375], "page": 117, "span": [0, 29], "__ref_s3_data": null}], "text": "- GLYPH TBCORRELATION", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.2348175048828, 243.0057373046875, 451.0119934082031, 253.50799560546875], "page": 117, "span": [0, 63], "__ref_s3_data": null}], "text": "The SYSCONTROLSDEP catalog view contains the following columns:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.6955108642578, 226.60281372070312, 229.20022583007812, 237.07763671875], "page": 117, "span": [0, 27], "__ref_s3_data": null}], "text": "- GLYPH COLUMN_NAME", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.7337188720703, 214.60301208496094, 231.54153442382812, 224.7735595703125], "page": 117, "span": [0, 28], "__ref_s3_data": null}], "text": "- GLYPH CONTROL_TYPE", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.7036590576172, 202.60321044921875, 223.13241577148438, 212.99359130859375], "page": 117, "span": [0, 27], "__ref_s3_data": null}], "text": "- GLYPH IASP_NUMBER", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.64175415039062, 190.60340881347656, 225.03065490722656, 201.30029296875], "page": 117, "span": [0, 27], "__ref_s3_data": null}], "text": "- GLYPH OBJECT_NAME", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.65492248535156, 178.60360717773438, 239.2605743408203, 189.1546630859375], "page": 117, "span": [0, 29], "__ref_s3_data": null}], "text": "- GLYPH OBJECT_SCHEMA", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.42955017089844, 166.6038055419922, 222.27175903320312, 177.33233642578125], "page": 117, "span": [0, 27], "__ref_s3_data": null}], "text": "- GLYPH OBJECT_TYPE", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.63658142089844, 154.60400390625, 241.48854064941406, 165.0909423828125], "page": 117, "span": [0, 30], "__ref_s3_data": null}], "text": "- GLYPH PARM_SIGNATURE", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.70877075195312, 142.6042022705078, 213.68124389648438, 152.955078125], "page": 117, "span": [0, 25], "__ref_s3_data": null}], "text": "- GLYPH RCAC_NAME", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.70849609375, 130.60440063476562, 227.56272888183594, 140.8154296875], "page": 117, "span": [0, 27], "__ref_s3_data": null}], "text": "- GLYPH RCAC_SCHEMA", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.59637451171875, 118.6045913696289, 262.728271484375, 129.17388916015625], "page": 117, "span": [0, 33], "__ref_s3_data": null}], "text": "- GLYPH SYSTEM_TABLE_NAME", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.5303497314453, 106.60478210449219, 276.7511291503906, 116.96820068359375], "page": 117, "span": [0, 35], "__ref_s3_data": null}], "text": "- GLYPH SYSTEM_TABLE_SCHEMA", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.2892303466797, 84.58521270751953, 495.9486389160156, 94.78704833984375], "page": 117, "span": [0, 81], "__ref_s3_data": null}], "text": "For more information, see the IBM i 7.2 DB2 for i SQL Reference Guide , found at:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.3297119140625, 55.894439697265625, 546.534423828125, 78.0645751953125], "page": 117, "span": [0, 86], "__ref_s3_data": null}], "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/db2/rbafzintro.htm?lang =en", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [370.6695251464844, 28.1142578125, 517.9691772460938, 37.12347412109375], "page": 117, "span": [0, 36], "__ref_s3_data": null}], "text": "Chapter 6. Additional considerations", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [530.2025146484375, 27.93828010559082, 547.2587890625, 37.766845703125], "page": 117, "span": [0, 3], "__ref_s3_data": null}], "text": "101", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.48343658447266, 687.0557861328125, 524.18310546875, 722.143798828125], "page": 118, "span": [0, 65], "__ref_s3_data": null}], "text": "6.5 Views, materialized query tables, and query rewrite with RCAC", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.83413696289062, 648.2785034179688, 538.62841796875, 670.753173828125], "page": 118, "span": [0, 133], "__ref_s3_data": null}], "text": "This section covers the implications to views, materialized query tables (MQTs), and query rewrite when RCAC is activated on a table.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.00408935546875, 615.67724609375, 137.59872436523438, 628.84814453125], "page": 118, "span": [0, 11], "__ref_s3_data": null}], "text": "6.5.1 Views", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.95098876953125, 544.0421142578125, 547.2675170898438, 602.7352294921875], "page": 118, "span": [0, 453], "__ref_s3_data": null}], "text": "Any access to an SQL view that is over one or more tables that have RCAC also have those row permissions and column masking rules applied. If an SQL view has predicates, those are logically ANDed with any search condition that is specified in the permissions that are defined on the underlying tables. The view does not have to project the columns that are referenced by the permissions. Figure 6-21 shows an example of a view definition and user query.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.1767120361328, 249.74176025390625, 311.7160949707031, 259.17498779296875], "page": 118, "span": [0, 42], "__ref_s3_data": null}], "text": "Figure 6-21 View definition and user query", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/118"}, {"prov": [{"bbox": [64.45819091796875, 27.93828010559082, 83.98200225830078, 37.70367431640625], "page": 118, "span": [0, 3], "__ref_s3_data": null}], "text": "102", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [98.59468078613281, 27.95623779296875, 339.92059326171875, 37.39764404296875], "page": 118, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [135.9568634033203, 698.8374633789062, 519.4752807617188, 721.3858642578125], "page": 119, "span": [0, 97], "__ref_s3_data": null}], "text": "What the query optimizer plans for and what the database engine runs is shown in the Figure 6-22.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.89744567871094, 392.4318542480469, 291.39215087890625, 401.9805908203125], "page": 119, "span": [0, 35], "__ref_s3_data": null}], "text": "Figure 6-22 Query rewrite with RCAC", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/119"}, {"prov": [{"bbox": [64.23944091796875, 360.3772888183594, 255.48699951171875, 373.4521484375], "page": 119, "span": [0, 31], "__ref_s3_data": null}], "text": "6.5.2 Materialized query tables", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.8983154296875, 312.9986572265625, 547.2784423828125, 347.2080078125], "page": 119, "span": [0, 271], "__ref_s3_data": null}], "text": "When the query to populate a materialized query table (MQT) is run by the system on either the create table or a refresh table, and one or more source tables have RCAC defined, the row permissions and column masks are ignored. This means that the MQT has all of the data.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.05838012695312, 266.9794616699219, 547.2845458984375, 301.335205078125], "page": 119, "span": [0, 242], "__ref_s3_data": null}], "text": "Because the MQT is a copy of the base table data, when a permission is created on the base table, all the related MQTs are altered to have a default row permission. This default permission prevents any of the rows from being directly queried.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.96612548828125, 220.9602813720703, 547.2724609375, 255.226806640625], "page": 119, "span": [0, 266], "__ref_s3_data": null}], "text": "When a query implicitly uses an MQT, the underlying row permissions and column masks are built into the query that uses the MQT. In order for the MQT to be used for optimization, the MQT must include any columns that are used by the row permissions and column masks.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.03353881835938, 199.00047302246094, 342.15032958984375, 209.17041015625], "page": 119, "span": [0, 48], "__ref_s3_data": null}], "text": "The following example illustrates this scenario:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.65509033203125, 181.96090698242188, 270.4134826660156, 191.9061279296875], "page": 119, "span": [0, 28], "__ref_s3_data": null}], "text": "- 1. Create schema and tables:", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.20018005371094, 117.27072143554688, 547.2555541992188, 174.04469299316406], "page": 119, "span": [0, 248], "__ref_s3_data": null}], "text": "CREATE SCHEMA Schema1; CREATE TABLE Schema1.employee(userID varchar(128), LocationID integer, Regionid integer); CREATE TABLE Schema1.Sales (INVOICE INTEGER NOT NULL, SALEAMT DECIMAL(5,2), TAXAMT DECIMAL(5,2), LOCATIONID INTEGER, REGIONID INTEGER);", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [370.6492004394531, 28.08099365234375, 517.9691772460938, 37.12176513671875], "page": 119, "span": [0, 36], "__ref_s3_data": null}], "text": "Chapter 6. Additional considerations", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [530.1799926757812, 27.93828010559082, 547.2587890625, 37.73895263671875], "page": 119, "span": [0, 3], "__ref_s3_data": null}], "text": "103", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.42345428466797, 27.93828010559082, 83.98200225830078, 37.64996337890625], "page": 120, "span": [0, 3], "__ref_s3_data": null}], "text": "104", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [98.57719421386719, 27.90020751953125, 339.839599609375, 37.33319091796875], "page": 120, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [135.87754821777344, 699.2785034179688, 545.8660888671875, 721.4038696289062], "page": 120, "span": [0, 99], "__ref_s3_data": null}], "text": "- 2. Create a row permission that allows the employees to see only rows from the region they work in:", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [149.48439025878906, 598.5888061523438, 547.1957397460938, 693.0859985351562], "page": 120, "span": [0, 281], "__ref_s3_data": null}], "text": "/* Create permission that only allows the employees to see rows from the region they work in */ CREATE PERMISSION Schema1.Sales_PERM1 ON schema1.sales FOR ROWS WHERE CURRENT_USER in (SELECT userId FROM schema1.employee E WHERE e.regionid = regionid) ENFORCED FOR ALL ACCESS ENABLE;", "type": "paragraph", "name": "Code", "font": null}, {"prov": [{"bbox": [136.09523010253906, 581.0382690429688, 362.0214538574219, 591.50830078125], "page": 120, "span": [0, 48], "__ref_s3_data": null}], "text": "- 3. Create an MQT to summarize sales by location:", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [149.7567138671875, 468.5709228515625, 545.9945678710938, 574.7091064453125], "page": 120, "span": [0, 327], "__ref_s3_data": null}], "text": "-- Create MQT to summarize sales by location -- This has all of the data. The schema1.sales_perm1 predicate was not applied CREATE TABLE Schema1.Location_Sales_MQT as AS (SELECT LocationID, SUM(Saleamt) as Total_Location_Sales FROM SCHEMA1.SALES GROUP BY LOCATIONID) DATA INITIALLY DEFERRED REFRESH DEFERRED MAINTAINED BY USER;", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.95851135253906, 450.9034118652344, 354.3462829589844, 461.5218505859375], "page": 120, "span": [0, 48], "__ref_s3_data": null}], "text": "- 4. Populate the MQT (permission is not applied):", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.7456512451172, 421.72467041015625, 416.03656005859375, 443.83050537109375], "page": 120, "span": [0, 93], "__ref_s3_data": null}], "text": "/* Populate the MQT - Permission not applied here */ REFRESH TABLE Schema1.Location_Sales_MQT", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [150.36888122558594, 392.90313720703125, 547.1997680664062, 415.4218444824219], "page": 120, "span": [0, 166], "__ref_s3_data": null}], "text": "The following query matches Location_Sales_MQT, but it cannot be used because it does not have column regionid, which is needed by the schema1.sales_PERM1 permission:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [150.5345001220703, 364.5924987792969, 401.0367736816406, 386.6250915527344], "page": 120, "span": [0, 71], "__ref_s3_data": null}], "text": "SELECT Locationid, sum(SALEAMT) FROM schema1.sales GROUP BY locationid;", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.50941467285156, 347.0646057128906, 385.903564453125, 357.568115234375], "page": 120, "span": [0, 53], "__ref_s3_data": null}], "text": "- 5. Create an MQT to summarize by region and location:", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.02435302734375, 246.57443237304688, 500.9953308105469, 340.8066711425781], "page": 120, "span": [0, 273], "__ref_s3_data": null}], "text": "-- MQT to summarize by region and location Create table schema1.Region_Location_Sales_MQT as AS (SELECT REGIONID, LocationID, SUM(Saleamt) as Total_Location_Sales FROM SCHEMA1.SALES GROUP BY REGIONID, LOCATIONID) DATA INITIALLY DEFERRED REFRESH DEFERRED MAINTAINED BY USER;", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.33966064453125, 228.83648681640625, 452.1078186035156, 239.47381591796875], "page": 120, "span": [0, 67], "__ref_s3_data": null}], "text": "- 6. Populate the Region_location_Sales_MQT (permission not applied):", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.35263061523438, 199.35321044921875, 535.9747924804688, 222.1837158203125], "page": 120, "span": [0, 122], "__ref_s3_data": null}], "text": "/* Populate the Region_location_Sales_MQT - Permission not applied here */ Refresh table schema1.Region_Location_Sales_MQT", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [150.33642578125, 171.2867889404297, 502.06903076171875, 193.4903564453125], "page": 120, "span": [0, 140], "__ref_s3_data": null}], "text": "The following query can use the Region_location_SALES_MQT because it has REGIONID, which is required for the schema1.sales_PERM1 permission:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [150.63597106933594, 142.13360595703125, 401.0367736816406, 163.86737060546875], "page": 120, "span": [0, 71], "__ref_s3_data": null}], "text": "SELECT Locationid, sum(SALEAMT) FROM schema1.sales GROUP BY locationid;", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.60304260253906, 711.0797729492188, 376.0711669921875, 721.2241821289062], "page": 121, "span": [0, 55], "__ref_s3_data": null}], "text": "This example has the following additional implications:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.650634765625, 670.2985229492188, 547.2718505859375, 704.3900756835938], "page": 121, "span": [0, 199], "__ref_s3_data": null}], "text": "- GLYPH Users must be prevented from explicitly querying the MQT or a view that is created over it. Those two cases bypass the row permission and column mask rules from the underlying tables.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.53536987304688, 616.5928955078125, 547.3106079101562, 663.3336791992188], "page": 121, "span": [0, 300], "__ref_s3_data": null}], "text": "- GLYPH If the user writes code to update incrementally an MQT, that code must be run from a user that has permission to view all of the rows and all columns in their unmasked state. Otherwise, the MQT contents are not complete and queries that implicitly use the MQT might get wrong results.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.59909057617188, 588.2799072265625, 539.1951904296875, 610.4366455078125], "page": 121, "span": [0, 126], "__ref_s3_data": null}], "text": "- GLYPH To prevent this, a check constraint can be created to cause an error if masked data was inserted into the MQT.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.1431655883789, 555.5803833007812, 184.48561096191406, 568.83935546875], "page": 121, "span": [0, 19], "__ref_s3_data": null}], "text": "6.5.3 Query rewrite", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.05111694335938, 520.2984619140625, 527.1223754882812, 542.5366821289062], "page": 121, "span": [0, 110], "__ref_s3_data": null}], "text": "Query rewrite is a technique that the optimizer can use to change the original request to improve performance.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.7935791015625, 450.2796325683594, 547.158935546875, 508.524169921875], "page": 121, "span": [0, 401], "__ref_s3_data": null}], "text": "For example, a query that references Table1 might be rewritten to access an MQT over Table1, or it might also be optimized to access only the fields in an index that is defined over Table1 and avoid touching Table1. With RCAC, defining these rewrites can still occur, but the MQT or index also must include all columns that are needed by the row permissions or column masks that are defined on Table1.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.94505310058594, 403.91461181640625, 547.3839721679688, 437.9142761230469], "page": 121, "span": [0, 197], "__ref_s3_data": null}], "text": "As part of adding RCAC, the impact to these potentially significant performance optimizations must be considered. Usage of MQTs or index-only access might be reduced or eliminated by enabling RCAC.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.35859680175781, 360.5837097167969, 436.9425048828125, 376.3916931152344], "page": 121, "span": [0, 47], "__ref_s3_data": null}], "text": "6.6 RCAC effects on performance and scalability", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.86106872558594, 249.62506103515625, 547.3291625976562, 344.4602966308594], "page": 121, "span": [0, 696], "__ref_s3_data": null}], "text": "As with any discussion that is related to performance and scalability, nothing is certain or guaranteed. There are always many variables that are involved. First, a good foundation of knowledge and skill is required to appreciate fully what is occurring when a database request is handled within an RCAC enabled environment. Implementing the row permission or column masks involves the query optimizer and database engine. The process that identifies the rows that you have permission to access is considered a \"query\", and as such a query plan must be formulated. In the case of SQL requests, the RCAC portion of the query is combined with the user's query, much like a query referencing a view.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.9717254638672, 180.28079223632812, 547.2525634765625, 238.62030029296875], "page": 121, "span": [0, 455], "__ref_s3_data": null}], "text": "For native record level access, this RCAC \"query\" is also built and used to test the permission. When a file is opened, the RCAC rule text logic is included, optimized, and run as part of the native read, write, update, or delete operation. The amount of work (and time) required to identify the record based on the user's permission is directly related to the complexity and depth of the logic that is needed to identify the records that can be returned.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.7317657470703, 74.0277099609375, 547.2844848632812, 167.69171142578125], "page": 121, "span": [0, 698], "__ref_s3_data": null}], "text": "A simple example to illustrate this concept is a random read using a keyed logical file (that is, an index). In its purest form, a random read uses two data access methods: index probe (find the key and RRN) and table probe (find the record using RRN). If the RCAC rule text specifies five nested subqueries to determine whether the user has access to the record, this logic must be added to the path. The subquery processing now becomes part of the original \"random read\" request. Instead of two simple I/Os to retrieve the record, there can be a minimum of 12 I/Os to retrieve the same record. These I/Os can be done with a result of \"not found\" if the user is not entitled to any of the records.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [370.60284423828125, 28.1068115234375, 517.9691772460938, 37.1180419921875], "page": 121, "span": [0, 36], "__ref_s3_data": null}], "text": "Chapter 6. Additional considerations", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [530.1432495117188, 27.93828010559082, 547.2587890625, 37.7501220703125], "page": 121, "span": [0, 3], "__ref_s3_data": null}], "text": "105", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.41461944580078, 27.93828010559082, 83.98200225830078, 37.71966552734375], "page": 122, "span": [0, 3], "__ref_s3_data": null}], "text": "106", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [98.62214660644531, 27.96990966796875, 339.8680725097656, 37.41748046875], "page": 122, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [135.8849639892578, 675.0093994140625, 543.5155029296875, 721.650146484375], "page": 122, "span": [0, 285], "__ref_s3_data": null}], "text": "For programs that access records sequentially, in or out of key order, the added RCAC logic can have a profound effect on the performance and scalability. Reading the \"next record\" in order is no longer a simple matter of positioning to the next available key, as shown in Figure 6-23.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.106201171875, 378.3799743652344, 333.33013916015625, 388.0724182128906], "page": 122, "span": [0, 45], "__ref_s3_data": null}], "text": "Figure 6-23 Native record access with no RCAC", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/120"}, {"prov": [{"bbox": [136.06326293945312, 675.2687377929688, 547.295654296875, 721.341064453125], "page": 123, "span": [0, 305], "__ref_s3_data": null}], "text": "Before the record, as identified by the key, is considered available, the RCAC logic must be run. If the record is rejected by RCAC, the next record in sequence that is permissible must be identified. This spinning through the records can take a long time and uses many resources, as shown in Figure 6-24.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.92271423339844, 374.3691101074219, 341.2294616699219, 384.0206298828125], "page": 123, "span": [0, 48], "__ref_s3_data": null}], "text": "Figure 6-24 Native record level access with RCAC", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/121"}, {"prov": [{"bbox": [135.81785583496094, 335.78143310546875, 525.8615112304688, 358.041748046875], "page": 123, "span": [0, 134], "__ref_s3_data": null}], "text": "After the row permissions and column masks are designed and implemented, adequate performance and scalability testing are recommended.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.4524917602539, 291.993896484375, 510.04888916015625, 308.724853515625], "page": 123, "span": [0, 58], "__ref_s3_data": null}], "text": "6.7 Exclusive lock to implement RCAC (availability issues)", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.74249267578125, 242.07867431640625, 547.2496948242188, 275.99029541015625], "page": 123, "span": [0, 205], "__ref_s3_data": null}], "text": "When defining permissions or enabling RCAC, an exclusive lock on the base table is obtained. The impact to other applications depends on the order of create permission and the alter table to activate RCAC.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.18580627441406, 219.714111328125, 283.20501708984375, 230.0118408203125], "page": 123, "span": [0, 33], "__ref_s3_data": null}], "text": "Consider the following scenarios:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.5818634033203, 203.0792999267578, 464.85845947265625, 213.38800048828125], "page": 123, "span": [0, 84], "__ref_s3_data": null}], "text": "- GLYPH Scenario 1: Adding permissions and RCAC is not enabled on the table:", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.1683349609375, 174.03993225097656, 547.4009399414062, 196.04046630859375], "page": 123, "span": [0, 106], "__ref_s3_data": null}], "text": "- -Job 1 reading data from the table (open for input) holds a *SHRRD on the member and a *SHRRD on the data.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.33261108398438, 145.06031799316406, 546.0185546875, 167.51373291015625], "page": 123, "span": [0, 126], "__ref_s3_data": null}], "text": "- -Job 2 adding, updating, or deleting rows from table (open for output) holds a *SHRRD on the member and a *SHRUPD on the data.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.21334838867188, 127.65850830078125, 546.8192749023438, 138.00274658203125], "page": 123, "span": [0, 84], "__ref_s3_data": null}], "text": "- -Job 4 allocates the object and gets a *SHRRD on the file and a *EXCLRD on the data.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.15476989746094, 87.04132080078125, 547.1649169921875, 121.0460205078125], "page": 123, "span": [0, 196], "__ref_s3_data": null}], "text": "- -Job 3 attempts to add a permission to the table. Permission is added and the pseudo-closed cursors for Job1 and Job 2 are closed. Job 4 still holds the *SHRRD on the file and *EXCLRD on the data.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.30223083496094, 57.88128662109375, 545.1102905273438, 80.0487060546875], "page": 123, "span": [0, 134], "__ref_s3_data": null}], "text": "The net result from Scenario 1 is that you can add permissions without having to end the applications that are reading the base table.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [370.56109619140625, 28.08575439453125, 517.9691772460938, 37.179931640625], "page": 123, "span": [0, 36], "__ref_s3_data": null}], "text": "Chapter 6. Additional considerations", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [530.158935546875, 27.93828010559082, 547.2587890625, 37.82098388671875], "page": 123, "span": [0, 3], "__ref_s3_data": null}], "text": "107", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [135.47494506835938, 699.2672119140625, 547.2257080078125, 721.363037109375], "page": 124, "span": [0, 171], "__ref_s3_data": null}], "text": "- GLYPH Scenario 2: Altering a table to activate RCAC requires that all applications using the table be ended. The alter table requires exclusive use of the table.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.47486877441406, 646.2472534179688, 547.350341796875, 692.6351318359375], "page": 124, "span": [0, 375], "__ref_s3_data": null}], "text": "- GLYPH Scenario 3: Altering the table to activate RCAC before the permissions are added. The alter table requires exclusive use of the table, as in scenario 2. All applications must be ended to perform this alter. After the alter is complete, any applications trying to read data do not get any results, and attempts to insert new rows returns the following message:", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.78724670410156, 629.1058959960938, 451.01605224609375, 639.2891845703125], "page": 124, "span": [0, 59], "__ref_s3_data": null}], "text": "SQ20471] INSERT or UPDATE does not satisfy row permissions.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [150.4237060546875, 588.2802734375, 532.7249145507812, 622.5931396484375], "page": 124, "span": [0, 239], "__ref_s3_data": null}], "text": "To create a permission in this case requires that you end all the applications, unlike scenario 1 where permissions can be added while the applications were active. In this case, the applications must be ended to run the create permission.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.3337173461914, 545.0363159179688, 380.354736328125, 561.4805908203125], "page": 124, "span": [0, 39], "__ref_s3_data": null}], "text": "6.8 Avoiding propagation of masked data", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.83189392089844, 494.2587890625, 547.30224609375, 527.9580078125], "page": 124, "span": [0, 275], "__ref_s3_data": null}], "text": "Operations such as insert or update into a table with active column access control can fail if the input data is masked data. This can happen when data to be inserted or updated contains the masked value as a result of a SELECT from a table with active column access control.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.41940307617188, 460.2991638183594, 547.1968383789062, 482.62445068359375], "page": 124, "span": [0, 178], "__ref_s3_data": null}], "text": "For example, assume TABLE1 and TABLE2 have active column access control and for insert, selecting data from TABLE2 returns the masked data. The following INSERT returns an error:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.7989959716797, 443.54840087890625, 331.6763000488281, 452.32318115234375], "page": 124, "span": [0, 39], "__ref_s3_data": null}], "text": "INSERT INTO TABLE1 SELECT * FROM TABLE2", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.9666290283203, 409.0923767089844, 533.7767333984375, 431.26483154296875], "page": 124, "span": [0, 152], "__ref_s3_data": null}], "text": "The masked data that is returned from the SELECT * FROM TABLE2 might not be valid input data for TABLE1 because of data type or column check constraint.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.8269805908203, 374.9996337890625, 532.6522827148438, 397.2376708984375], "page": 124, "span": [0, 114], "__ref_s3_data": null}], "text": "There are two ways to prevent this situation from happening: Define a check constraint or create a before trigger.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.09215545654297, 342.6772766113281, 260.1020202636719, 355.58514404296875], "page": 124, "span": [0, 31], "__ref_s3_data": null}], "text": "6.8.1 Check constraint solution", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.16067504882812, 319.16241455078125, 416.498779296875, 329.11370849609375], "page": 124, "span": [0, 64], "__ref_s3_data": null}], "text": "One way to prevent this problem is to define a check constraint.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.7001190185547, 249.27944946289062, 547.2566528320312, 307.400634765625], "page": 124, "span": [0, 382], "__ref_s3_data": null}], "text": "As part of RCAC, new SQL syntax is provided to allow an action to be performed when a violation of the check constraints check condition occurs instead of giving that error. However, if the check condition is still not met after the action, a hard error is returned. A check constraint with the new on-violation-clause is allowed on both the CREATE TABLE and ALTER TABLE statements.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.0422821044922, 203.26028442382812, 547.2803955078125, 237.33502197265625], "page": 124, "span": [0, 217], "__ref_s3_data": null}], "text": "In the Example 6-4, the mask is defined to return a value of 'XXX-XX-nnnn' for any query that is not done by a user profile in the DBMGR group. The constraint checks that the column SSN does not have the masked value.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.23851013183594, 181.71978759765625, 277.07000732421875, 191.49853515625], "page": 124, "span": [0, 49], "__ref_s3_data": null}], "text": "Example 6-4 Check constraint to avoid masked data", "type": "paragraph", "name": "paragraph", "font": null}, {"prov": [{"bbox": [64.16464233398438, 55.4718017578125, 414.59515380859375, 173.89044189453125], "page": 124, "span": [0, 297], "__ref_s3_data": null}], "text": "CREATE SCHEMA MY_LIB SET SCHEMA MY_LIB CREATE TABLE MY_LIB.EMP_INFO (COL1_name CHAR(10) WITH DEFAULT 'DEFAULT', COL2_ssn CHAR(11) WITH DEFAULT 'DEFAULT') CREATE MASK MASK_ssn ON MY_LIB.EMP_INFO FOR COLUMN COL2_ssn RETURN CASE WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBMGR' ) = 1 THEN COL2_ssn", "type": "paragraph", "name": "Code", "font": null}, {"prov": [{"bbox": [64.37716674804688, 27.93828010559082, 83.98200225830078, 37.57183837890625], "page": 124, "span": [0, 3], "__ref_s3_data": null}], "text": "108", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [98.70913696289062, 27.999267578125, 339.819580078125, 37.4007568359375], "page": 124, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [63.44700622558594, 600.7581176757812, 546.8219604492188, 721.5032958984375], "page": 125, "span": [0, 418], "__ref_s3_data": null}], "text": "ELSE 'XXX-XX-'||SUBSTR(COL2_ssn,8,4) END ENABLE | /* Check constraint for the update and insert.*/ ALTER TABLE MY_LIB.EMP_INFO ADD CONSTRAINT MASK_ssn_preserve CHECK(SUBSTR(COL2_ssn,1,7)<>'XXX-XX-') -- Allow any value other than the mask ON UPDATE VIOLATION PRESERVE COL2_ssn -- Don't update the mask portion of the existing value ON INSERT VIOLATION SET COL2_ssn = DEFAULT -- for insert set this to the default value.", "type": "paragraph", "name": "Code", "font": null}, {"prov": [{"bbox": [64.23657989501953, 563.4954223632812, 240.5440673828125, 576.9061279296875], "page": 125, "span": [0, 29], "__ref_s3_data": null}], "text": "6.8.2 Before trigger solution", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.24661254882812, 528.2785034179688, 547.3193359375, 550.7080688476562], "page": 125, "span": [0, 171], "__ref_s3_data": null}], "text": "The actions that are described in Example 6-4 on page 108 for ON UPDATE VIOLATION and ON INSERT VIOLATION also can be handled by a before trigger, as shown in Example 6-5.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.40687561035156, 506.462158203125, 336.7406311035156, 515.987548828125], "page": 125, "span": [0, 47], "__ref_s3_data": null}], "text": "Example 6-5 Before trigger to avoid masked data", "type": "paragraph", "name": "paragraph", "font": null}, {"prov": [{"bbox": [135.9194793701172, 379.7377624511719, 506.87237548828125, 500.95086669921875], "page": 125, "span": [0, 298], "__ref_s3_data": null}], "text": "CREATE TRIGGER PREVENT_MASK_SSN BEFORE INSERT OR UPDATE ON MY_LIB.EMP_INFO REFERENCING NEW ROW AS N OLD ROW AS O FOR EACH ROW MODE DB2ROW SECURED WHEN(SUBSTR(N.COL2_ssn,1,7) = 'XXX-XX-') BEGIN IF INSERTING THEN SET N.COL2_ssn = DEFAULT; ELSEIF UPDATING THEN SET N.COL2_ssn = O.COL2_ssn; END IF; END", "type": "paragraph", "name": "Code", "font": null}, {"prov": [{"bbox": [64.4358139038086, 329.9898681640625, 360.91705322265625, 346.6530456542969], "page": 125, "span": [0, 36], "__ref_s3_data": null}], "text": "6.9 Triggers and functions (SECURED)", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.90432739257812, 255.75531005859375, 547.2467651367188, 314.7923278808594], "page": 125, "span": [0, 409], "__ref_s3_data": null}], "text": "There are some considerations that must be considered when there are triggers and functions on tables that have RCAC enabled. The purpose of SECURE for triggers and functions is so that a user who is allowed to create a trigger or function is not necessarily able to make it SECURE themselves. This prevents the trigger/function developer from adding code that skims off data that they are not allowed to see.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.1463851928711, 222.77587890625, 151.61126708984375, 236.09356689453125], "page": 125, "span": [0, 14], "__ref_s3_data": null}], "text": "6.9.1 Triggers", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.57107543945312, 164.00341796875, 547.2885131835938, 209.91900634765625], "page": 125, "span": [0, 318], "__ref_s3_data": null}], "text": "Triggers have access to the data in rows outside of the row permission or column masking. An after trigger has access to the new row image after the permission has allowed the update or insert to occur. Therefore, the triggers can potentially change the insert or update image value so that it violates the permission.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [370.6949157714844, 28.07379150390625, 517.9691772460938, 37.11236572265625], "page": 125, "span": [0, 36], "__ref_s3_data": null}], "text": "Chapter 6. Additional considerations", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [530.17626953125, 27.93828010559082, 547.2587890625, 37.8399658203125], "page": 125, "span": [0, 3], "__ref_s3_data": null}], "text": "109", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.38241577148438, 27.93828010559082, 83.98200225830078, 37.776123046875], "page": 126, "span": [0, 3], "__ref_s3_data": null}], "text": "110", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [98.55854797363281, 27.9803466796875, 339.819580078125, 37.32958984375], "page": 126, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [135.9443817138672, 675.0651245117188, 547.1917114257812, 721.4259643554688], "page": 126, "span": [0, 362], "__ref_s3_data": null}], "text": "Any triggers that are defined on a table must be created with an attribute that designates that it is SECURED when RCAC definitions are created or altered for that table, as shown in Example 6-6. The same applies to a view that has an instead of trigger. That trigger must be secure at the point RCAC is enabled for any of the underlying tables the view is over.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.2041778564453, 653.5504760742188, 269.5399475097656, 663.527587890625], "page": 126, "span": [0, 27], "__ref_s3_data": null}], "text": "Example 6-6 Trigger SECURED", "type": "paragraph", "name": "paragraph", "font": null}, {"prov": [{"bbox": [135.4769287109375, 514.72314453125, 506.97552490234375, 647.4617919921875], "page": 126, "span": [0, 347], "__ref_s3_data": null}], "text": "/* Trigger created with the SECURED attribute */ CREATE TRIGGER PREVENT_MASK_SSN BEFORE INSERT OR UPDATE ON MY_LIB.EMP_INFO REFERENCING NEW ROW AS N OLD ROW AS O FOR EACH ROW MODE DB2ROW SECURED WHEN(SUBSTR(N.COL2_ssn,1,7) = 'XXX-XX-') BEGIN IF INSERTING THEN SET N.COL2_ssn = DEFAULT; ELSEIF UPDATING THEN SET N.COL2_ssn = O.COL2_ssn; END IF; END", "type": "paragraph", "name": "Code", "font": null}, {"prov": [{"bbox": [64.11894226074219, 476.65728759765625, 166.5321044921875, 489.5697021484375], "page": 126, "span": [0, 15], "__ref_s3_data": null}], "text": "6.9.2 Functions", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.63002014160156, 429.1574401855469, 547.2664794921875, 463.57928466796875], "page": 126, "span": [0, 220], "__ref_s3_data": null}], "text": "Within a CREATE PERMISSION or CREATE MASK , a function can be called. Because that UDF has access to the data before the RCAC rules are applied, the SECURE attribute is required on that function, as shown in Example 6-7.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [134.9473114013672, 266.78814697265625, 547.4903564453125, 416.7194519042969], "page": 126, "span": [0, 275], "__ref_s3_data": null}], "text": "Example 6-7 Specifying SECURED on a function CREATE PERMISSION SCHEMA.PERM1 ON SCHEMA.TABLE1 FOR ROWS WHERE MY_UDF(CURRENT_USER,COLUMN1) = 1 ENFORCED FOR ALL ACCESS ENABLE; CREATE FUNCTION MY_UDF (INP1 CHAR(32), INP2 INTEGER) Returns INTEGER LANGUAGE SQL CONTAINS SQL SECURED", "type": "paragraph", "name": "Code", "font": null}, {"prov": [{"bbox": [135.8338165283203, 205.03076171875, 547.2584838867188, 251.36279296875], "page": 126, "span": [0, 337], "__ref_s3_data": null}], "text": "The SECURED attribute of MY_UDF signifies that the function is considered secure for RCAC. If a function is called from an SQL statement, and references a column in a table that has RCAC, it must be declared as secure. In that case, if the secure function calls other functions, they are not validated to confirm whether they are secure.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.09840393066406, 183.0419921875, 282.6751708984375, 193.3720703125], "page": 126, "span": [0, 32], "__ref_s3_data": null}], "text": "Consider the following examples:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.61990356445312, 166.24098205566406, 547.1887817382812, 176.2091064453125], "page": 126, "span": [0, 96], "__ref_s3_data": null}], "text": "- GLYPH Table1 has RCAC defined and enabled. SELECT MY_UDF2(Column2) from schema.table1.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.3736572265625, 137.1123046875, 547.14794921875, 159.58026123046875], "page": 126, "span": [0, 148], "__ref_s3_data": null}], "text": "- MY_UDF2 must be created with the SECURED attribute. If MY_UDF2 invokes MY_UDF3, there is no checking to ensure that it is also created with SECURED.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.47885131835938, 108.28175354003906, 517.9143676757812, 130.7811279296875], "page": 126, "span": [0, 88], "__ref_s3_data": null}], "text": "- NOT SECURED is the default on the create function unless SECURED is explicitly selected.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.35072326660156, 78.7335205078125, 523.39453125, 101.58184814453125], "page": 126, "span": [0, 108], "__ref_s3_data": null}], "text": "This same rule applies for any function that might be invoked with a masked column specified as an argument.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.3511199951172, 711.2779541015625, 419.7916259765625, 721.4021606445312], "page": 127, "span": [0, 74], "__ref_s3_data": null}], "text": "- GLYPH Table2 column SSN has a column mask that is defined on it.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.33642578125, 682.29833984375, 537.510986328125, 704.7354736328125], "page": 127, "span": [0, 131], "__ref_s3_data": null}], "text": "- SELECT MY_UDF4(SSN) from table2. Because SSN has a column mask that is defined, MY_UDF4 must be created with the SECURED attribute.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.35963439941406, 638.777587890625, 387.579833984375, 655.222900390625], "page": 127, "span": [0, 42], "__ref_s3_data": null}], "text": "6.10 RCAC is only one part of the solution", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.8172607421875, 564.21142578125, 547.2545776367188, 622.630615234375], "page": 127, "span": [0, 379], "__ref_s3_data": null}], "text": "When designing and implementing RCAC row permissions, special attention should be given to the effectiveness and limitations of controlling data access. Data can be housed in objects other than tables or physical files. The role and responsibility of the database user, for example, the database engineer, must be reconciled with their respective authority and access privileges.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.24098205566406, 529.3187866210938, 544.8680419921875, 552.024658203125], "page": 127, "span": [0, 146], "__ref_s3_data": null}], "text": "Figure 6-25 illustrates that object level security is the first check and that RCAC permissions provide control only on tables and physical files.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.0601806640625, 218.522216796875, 366.7088317871094, 227.9825439453125], "page": 127, "span": [0, 54], "__ref_s3_data": null}], "text": "Figure 6-25 Object-level security and RCAC permissions", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/122"}, {"prov": [{"bbox": [135.88059997558594, 179.97857666015625, 547.2168579101562, 201.9534912109375], "page": 127, "span": [0, 121], "__ref_s3_data": null}], "text": "To get access to the table and the rows, the user must pass the object level authority test and the RCAC permission test.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.60548400878906, 133.54364013671875, 547.2177124023438, 167.94500732421875], "page": 127, "span": [0, 232], "__ref_s3_data": null}], "text": "The IBM i journal captures the transactional data and places an image of the row in the journal receiver. If the user has access to the journal receiver, the row image can be viewed if the user has authority to the journal receiver.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.01368713378906, 87.8009033203125, 547.24267578125, 122.1590576171875], "page": 127, "span": [0, 222], "__ref_s3_data": null}], "text": "Although the SQL Plan Cache data, the SQL Plan Cache Snapshot data, and the SQL Performance Monitor data do not reveal the results of queries, they can show the literal values that are passed along with the SQL statements.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [370.63580322265625, 28.08636474609375, 517.9691772460938, 37.11981201171875], "page": 127, "span": [0, 36], "__ref_s3_data": null}], "text": "Chapter 6. Additional considerations", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [529.969970703125, 27.93828010559082, 547.2587890625, 37.74169921875], "page": 127, "span": [0, 3], "__ref_s3_data": null}], "text": "111", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.37667846679688, 27.93828010559082, 83.98200225830078, 37.83319091796875], "page": 128, "span": [0, 3], "__ref_s3_data": null}], "text": "112", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [98.55838012695312, 27.9609375, 339.87249755859375, 37.4378662109375], "page": 128, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [135.75006103515625, 675.1400146484375, 547.2962646484375, 721.4137573242188], "page": 128, "span": [0, 332], "__ref_s3_data": null}], "text": "The ability to monitor, analyze, debug, and tune data-centric applications effectively and efficiently requires some understanding of the underlying data, or at least the attributes of the data. The organization must be willing to reconcile the conflicting requirements of \"restricting access to data\", and \"needing access to data\".", "type": "paragraph", "name": "Text", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/123"}, {"prov": [{"bbox": [81.0, 517.019287109375, 115.13253021240234, 523.457275390625], "page": 129, "span": [0, 10], "__ref_s3_data": null}], "text": "Chapter 7.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [500.3999938964844, 661.8682861328125, 522.6177368164062, 698.831298828125], "page": 129, "span": [0, 1], "__ref_s3_data": null}], "text": "7", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.8000030517578, 481.8584899902344, 547.2606201171875, 538.93505859375], "page": 129, "span": [0, 40], "__ref_s3_data": null}], "text": "Row and Column Access Control management", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.95159912109375, 409.8076477050781, 530.336181640625, 443.9356689453125], "page": 129, "span": [0, 253], "__ref_s3_data": null}], "text": "After Row and Column Access Control (RCAC) definitions are defined and activated in a database, your management processes must be adjusted to accommodate these new security controls. This chapter highlights some of the changes that should be considered.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.9311981201172, 387.68560791015625, 347.4121398925781, 397.9674377441406], "page": 129, "span": [0, 49], "__ref_s3_data": null}], "text": "The following topics are covered in this chapter:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.7118682861328, 371.0793151855469, 356.2835388183594, 381.1703796386719], "page": 129, "span": [0, 57], "__ref_s3_data": null}], "text": "- GLYPH Managing row permissions and column masks", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.60548400878906, 359.0097351074219, 406.06463623046875, 369.25701904296875], "page": 129, "span": [0, 69], "__ref_s3_data": null}], "text": "- GLYPH Managing tables with row permissions and column masks", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.78424072265625, 346.86358642578125, 323.0509338378906, 357.164306640625], "page": 129, "span": [0, 54], "__ref_s3_data": null}], "text": "- GLYPH Monitoring and auditing function usage", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [63.72496032714844, 27.93780517578125, 257.24334716796875, 37.267822265625], "page": 129, "span": [0, 48], "__ref_s3_data": null}], "text": "' Copyright IBM Corp. 2014. All rights reserved.", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [530.0635986328125, 27.93828010559082, 547.2587890625, 37.69476318359375], "page": 129, "span": [0, 3], "__ref_s3_data": null}], "text": "113", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.16378021240234, 702.5186157226562, 449.7918701171875, 718.4564208984375], "page": 130, "span": [0, 45], "__ref_s3_data": null}], "text": "7.1 Managing row permissions and column masks", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.75418090820312, 675.7001342773438, 541.12109375, 685.8709106445312], "page": 130, "span": [0, 84], "__ref_s3_data": null}], "text": "This section focuses on the management of the RCAC row permissions and column masks.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [63.90059280395508, 643.1283569335938, 228.30335998535156, 656.04248046875], "page": 130, "span": [0, 23], "__ref_s3_data": null}], "text": "7.1.1 Source management", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.94558715820312, 583.6402587890625, 546.4277954101562, 630.015625], "page": 130, "span": [0, 287], "__ref_s3_data": null}], "text": "The SQL statements that are used to define row permissions and column masks should be managed with a change management process. Ideally, you already are using a change management process for your database definitions, and that same process can be extended to cover your RCAC definitions.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.89431762695312, 490.18017578125, 547.2933959960938, 571.918212890625], "page": 130, "span": [0, 596], "__ref_s3_data": null}], "text": "If you are using SQL DDL to define your DB2 tables, then you have the option of adding the RCAC definitions to the same source file as the table definition. The benefit of this approach is that it keeps all DDL that is related to a table in a single source file. The downside is that if you must re-create only the RCAC definitions and leave the table unchanged, then you must identify and extract only the RCAC definitions from the source file. There are situations where the row permissions and column masks must be changed or re-created without changing the definition of the associated table.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [63.8327522277832, 457.04302978515625, 231.4643096923828, 470.3725891113281], "page": 130, "span": [0, 27], "__ref_s3_data": null}], "text": "7.1.2 Modifying definitions", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.9163360595703, 397.6696472167969, 547.1988525390625, 443.97235107421875], "page": 130, "span": [0, 334], "__ref_s3_data": null}], "text": "After RCAC is activated for a table, the row permission and column mask definitions can be re-created to change the data access behavior for that table. Usage of the OR REPLACE clause on the CREATE MASK and CREATE PERMISSION SQL statements simplifies the re-creation process by folding in the deletion of the existing RCAC definition.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.8429718017578, 339.7766418457031, 547.2922973632812, 385.9662170410156], "page": 130, "span": [0, 296], "__ref_s3_data": null}], "text": "This capability makes it easy to change your RCAC definitions as you test the controls with your applications and identify tweaks that must be made to your RCAC implementation. However, re-creation of RCAC definitions does require an exclusive lock to be acquired on the table during the process.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.0130844116211, 307.0821228027344, 214.6126708984375, 320.2338562011719], "page": 130, "span": [0, 24], "__ref_s3_data": null}], "text": "7.1.3 Turning on and off", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.03684997558594, 235.916259765625, 547.182861328125, 293.85089111328125], "page": 130, "span": [0, 435], "__ref_s3_data": null}], "text": "As described in 3.1.2, \"Enabling and activating RCAC\" on page 16, the SQL ALTER statement can turn on and off row permissions and column masks. The ALTER MASK and A LTER PERMISSION statements allow an individual row permission or column mask to be turned off with the DISABLE option and back on with the ENABLE option. The ALTER TABLE statement can deactivate enforcement of all the row permissions and column masks for a single table.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [142.16134643554688, 171.52093505859375, 541.1311645507812, 218.0211181640625], "page": 130, "span": [0, 300], "__ref_s3_data": null}], "text": "Important: Although these capabilities make it easy to temporarily turn off RCAC security so that you can make environment or application changes, these processes require an exclusive lock to be obtained on a table. Therefore, this activity must be planned carefully to avoid disruptions and outages.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.14586639404297, 134.349365234375, 183.9399871826172, 147.51336669921875], "page": 130, "span": [0, 18], "__ref_s3_data": null}], "text": "7.1.4 Regenerating", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.13162231445312, 99.15777587890625, 547.3272705078125, 121.35113525390625], "page": 130, "span": [0, 172], "__ref_s3_data": null}], "text": "DB2 also can regenerate an existing row permission or column mask. This regenerate option can be useful with more complex RCAC definitions that reference other DB2 objects.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.35222625732422, 27.93828010559082, 83.98200225830078, 37.7677001953125], "page": 130, "span": [0, 3], "__ref_s3_data": null}], "text": "114", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [98.60916137695312, 28.02947998046875, 339.819580078125, 37.29241943359375], "page": 130, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [135.9884796142578, 639.279052734375, 547.2010498046875, 721.5679931640625], "page": 131, "span": [0, 498], "__ref_s3_data": null}], "text": "For example, consider a row permission on an ACCOUNTS table (PERMISSION1_ON_ACCOUNTS). The ACCOUNTS table row permission references and compares columns in the CUSTOMERS table. When the definition of the CUSTOMERS table changes, DB2 does not check to determine whether the change to the CUSTOMERS table breaks the ACCOUNTS table row permission. If this table definition change does break the row permission, an error does not surface until an application tries to read rows from the ACCOUNTS table.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.99624633789062, 580.9271240234375, 547.1602172851562, 627.4041137695312], "page": 131, "span": [0, 357], "__ref_s3_data": null}], "text": "Instead of waiting for an application to detect this error, the REGENERATE option can be used on the ACCOUNTS row permission. The REGENERATE option returns an error if the change in the CUSTOMERS table definition causes the row permission to be invalid. In this way, the row permission can be proactively corrected before an application discovers the error.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [63.91755676269531, 537.7216796875, 536.6239013671875, 553.80029296875], "page": 131, "span": [0, 57], "__ref_s3_data": null}], "text": "7.2 Managing tables with row permissions and column masks", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.8260498046875, 499.2984619140625, 547.2647094726562, 521.4241943359375], "page": 131, "span": [0, 94], "__ref_s3_data": null}], "text": "This section examines the object management considerations after RCAC is added to a DB2 table.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [63.97272872924805, 466.6372985839844, 205.3369598388672, 479.5977783203125], "page": 131, "span": [0, 22], "__ref_s3_data": null}], "text": "7.2.1 Save and restore", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.9362335205078, 407.25885009765625, 547.1621704101562, 453.3270568847656], "page": 131, "span": [0, 261], "__ref_s3_data": null}], "text": "Row permissions and column masks are stored in the DB2 table object itself, so they are automatically saved and restored when the DB2 table object is saved and restored. Therefore, no adjustments must be made to your database backup process to accommodate RCAC.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.97621154785156, 361.052978515625, 547.2257080078125, 395.47320556640625], "page": 131, "span": [0, 268], "__ref_s3_data": null}], "text": "Save and restore processing works fine with RCAC if the RCAC definition does not reference other DB2 objects other than the table over which they are defined. When the RCAC definition has dependencies on other DB2 objects, the restore process is much more challenging.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [283.8012390136719, 27.9959716796875, 518.0120849609375, 37.15869140625], "page": 131, "span": [0, 51], "__ref_s3_data": null}], "text": "Chapter 7. Row and Column Access Control management", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [530.0354614257812, 27.93828010559082, 547.2587890625, 37.67431640625], "page": 131, "span": [0, 3], "__ref_s3_data": null}], "text": "115", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.29827880859375, 27.93828010559082, 83.98200225830078, 37.77142333984375], "page": 132, "span": [0, 3], "__ref_s3_data": null}], "text": "116", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [98.44544219970703, 28.01568603515625, 339.8977355957031, 37.3984375], "page": 132, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [135.94534301757812, 591.2671508789062, 546.4418334960938, 721.4252319335938], "page": 132, "span": [0, 872], "__ref_s3_data": null}], "text": "For example, assume that the BANKSCHEMA library (which is the system name or short name for the schema long name of BANK_SCHEMA) is saved and restored into a library named BANK_TEST. Recall from the example in 7.1.4, \"Regenerating\" on page 114 that the row permission on the ACCOUNTS table references the CUSTOMERS table (\u2026 SELECT C.CUSTOMER_ID FROM CUSTOMERS C \u2026). After the restore operation, the ACCOUNTS row permission still references the CUSTOMERS table in BANK_SCHEMA because DB2 explicitly qualifies all object references when the row permission or column mask is created. The restore processing does not change the explicit qualification from BANK_SCHEMA to BANK_TEST. As a result, the restored ACCOUNTS row permission now depends on DB2 objects residing in a different schema, even though it was not created that way originally. For more details, see Figure 7-1.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.7970428466797, 325.72674560546875, 333.88006591796875, 335.1150817871094], "page": 132, "span": [0, 48], "__ref_s3_data": null}], "text": "Figure 7-1 Restoring tables to different schemas", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/124"}, {"prov": [{"bbox": [135.7681427001953, 238.95770263671875, 547.2655639648438, 309.2113342285156], "page": 132, "span": [0, 477], "__ref_s3_data": null}], "text": "The only way to fix this issue is to re-create the row permission or column mask after the restore operation. Re-creation of the row permission or column mask is required only for definitions that reference other DB2 objects, but it is simpler to re-create all of the RCAC definitions instead of a subset. For example, generate the SQL using System i Navigator, clear the \"Schema qualify names for objects\" and select the \"OR REPLACE clause\", and then run the generated script.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [63.921077728271484, 206.39764404296875, 196.41009521484375, 219.65240478515625], "page": 132, "span": [0, 21], "__ref_s3_data": null}], "text": "7.2.2 Table migration", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.8064727783203, 146.933837890625, 538.5225830078125, 193.502197265625], "page": 132, "span": [0, 329], "__ref_s3_data": null}], "text": "There are several IBM i CL commands, such as Move Object ( MOVOBJ ), Create Duplicate Object ( CRTDUPOBJ ), and Copy Library ( CPYLIB ), which are used to migrate a table from one library to another one. Often, this migration is done to create different versions of the table that can be used for development or testing purposes.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.9099884033203, 100.94818115234375, 542.6978149414062, 135.37615966796875], "page": 132, "span": [0, 255], "__ref_s3_data": null}], "text": "The migration of a table with RCAC has the same challenges as restore processing. If the RCAC definition references other DB2 objects, then IBM i CL commands do not change the schema names that are explicitly qualified by the DB2 internal RCAC processing.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.79965209960938, 67.21551513671875, 524.2598876953125, 89.41839599609375], "page": 132, "span": [0, 132], "__ref_s3_data": null}], "text": "Again, re-creating the row permission or column mask is the only way to fix the issue of references to DB2 objects in other schemas.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.03428649902344, 705.3358154296875, 396.1838684082031, 721.896728515625], "page": 133, "span": [0, 42], "__ref_s3_data": null}], "text": "7.3 Monitoring and auditing function usage", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.9032745361328, 619.1384887695312, 546.3292236328125, 689.2759399414062], "page": 133, "span": [0, 526], "__ref_s3_data": null}], "text": "While establishing proper roles for users, separating duties using function usage IDs, and defining RCAC policies allows you to implement an effective and pervasive data access control scheme. How do you monitor and audit everyone who is involved in the implementation of that scheme? The answer is to use IBM i journaling. A special journal that is called QAUDJRN, also known as the audit journal , can provide a record and audit trail of many security relevant events that occur on the system, including RCAC-related events.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.86427307128906, 536.7468872070312, 547.2933349609375, 607.3901977539062], "page": 133, "span": [0, 502], "__ref_s3_data": null}], "text": "The tasks and operations of security administrators and database engineers who are collaborating can (and should) be effectively monitored and audited to ensure that the organization's data access control and governance policies are in place and enabled. For example, the Database Engineers can be involved in designing and developing functions and triggers that must be secured using the SECURE attribute. Otherwise, without properly securing functions and triggers, the RCAC controls can be bypassed.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.72532653808594, 491.26055908203125, 546.2147216796875, 525.425537109375], "page": 133, "span": [0, 193], "__ref_s3_data": null}], "text": "A new journal entry type of \"AX\" for journal entry code \"T\" (audit trail) is now used for RCAC. More information about the journaling of RCAC operations can be found in the following documents:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.6563262939453, 474.28076171875, 396.8944396972656, 484.5631408691406], "page": 133, "span": [0, 70], "__ref_s3_data": null}], "text": "- GLYPH IBM i Version 7.2 Journal Management Guide , found at:", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.67897033691406, 445.051025390625, 545.9945678710938, 467.1967468261719], "page": 133, "span": [0, 92], "__ref_s3_data": null}], "text": "- http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzaki/rzakiprintthis .htm?lang=en", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.60202026367188, 427.25750732421875, 387.5917663574219, 438.09796142578125], "page": 133, "span": [0, 70], "__ref_s3_data": null}], "text": "- GLYPH IBM i Version 7.2 Security Reference Guide , found at:", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.6260986328125, 399.26019287109375, 546.2595825195312, 421.3846740722656], "page": 133, "span": [0, 90], "__ref_s3_data": null}], "text": "- http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzarl/rzarlkickoff.h tm?lang=en", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [283.7824401855469, 27.99267578125, 518.0120849609375, 37.1876220703125], "page": 133, "span": [0, 51], "__ref_s3_data": null}], "text": "Chapter 7. Row and Column Access Control management", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [530.0186157226562, 27.93828010559082, 547.265380859375, 37.769775390625], "page": 133, "span": [0, 3], "__ref_s3_data": null}], "text": "117", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.53031158447266, 27.93828010559082, 83.98200225830078, 37.923583984375], "page": 134, "span": [0, 3], "__ref_s3_data": null}], "text": "118", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [98.5851821899414, 27.8642578125, 340.1449890136719, 37.57379150390625], "page": 134, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/125"}, {"prov": [{"bbox": [81.0, 517.019287109375, 115.13253021240234, 523.457275390625], "page": 135, "span": [0, 10], "__ref_s3_data": null}], "text": "Chapter 8.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.7628173828125, 482.1217956542969, 479.93341064453125, 538.7010498046875], "page": 135, "span": [0, 34], "__ref_s3_data": null}], "text": "Designing and planning for success", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.9272003173828, 397.414794921875, 538.4698486328125, 444.05712890625], "page": 135, "span": [0, 285], "__ref_s3_data": null}], "text": "Although successfully implementing Row and Column Access Control (RCAC) is based on knowledge and skills, designing and planning are fundamental aspects. This chapter describes the need for a deep understanding of the technology, and good design, proper planning, and adequate testing.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.9006805419922, 375.73284912109375, 347.4120788574219, 385.872802734375], "page": 135, "span": [0, 49], "__ref_s3_data": null}], "text": "The following topics are covered in this chapter:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.63284301757812, 359.0141296386719, 411.53955078125, 369.337890625], "page": 135, "span": [0, 70], "__ref_s3_data": null}], "text": "- GLYPH Implementing RCAC with good design and proper planning", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.8564910888672, 347.0796813964844, 284.81951904296875, 357.5201721191406], "page": 135, "span": [0, 46], "__ref_s3_data": null}], "text": "- GLYPH DB2 for i Center of Excellence", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [63.695404052734375, 27.91717529296875, 257.24334716796875, 37.26922607421875], "page": 135, "span": [0, 48], "__ref_s3_data": null}], "text": "' Copyright IBM Corp. 2014. All rights reserved.", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [530.0399169921875, 27.93828010559082, 547.2623901367188, 37.78558349609375], "page": 135, "span": [0, 3], "__ref_s3_data": null}], "text": "119", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [500.3999938964844, 661.8682861328125, 522.6177368164062, 698.8610229492188], "page": 135, "span": [0, 1], "__ref_s3_data": null}], "text": "8", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.5673599243164, 701.9832153320312, 544.5512084960938, 718.5274658203125], "page": 136, "span": [0, 58], "__ref_s3_data": null}], "text": "8.1 Implementing RCAC with good design and proper planning", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.9280242919922, 652.1786499023438, 544.7098999023438, 686.1177368164062], "page": 136, "span": [0, 197], "__ref_s3_data": null}], "text": "By using RCAC, the row and column data that is returned to the requester can be controlled and governed by a set of data-centric policies that are defined with SQL and implemented within DB2 for i.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.055419921875, 593.98486328125, 545.359375, 640.219482421875], "page": 136, "span": [0, 318], "__ref_s3_data": null}], "text": "RCAC provides fine-grained access control and is complementary to IBM i object-level security. With the new RCAC feature of DB2 for i, the database engineer, in partnership with the data owner and security officer, can ensure that users have access to the data based on their level of authorization and responsibility.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.8184356689453, 524.1407470703125, 547.2506103515625, 582.028076171875], "page": 136, "span": [0, 365], "__ref_s3_data": null}], "text": "This situation also can include separation of duties, such as allowing the application developers to design and implement the solutions, but restricting them from accessing the production data based on policy. Just because someone writes and owns the program, it does not mean that they have access to all the sensitive data that their program can potentially read.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.80397033691406, 501.5162048339844, 500.5572509765625, 511.94879150390625], "page": 136, "span": [0, 78], "__ref_s3_data": null}], "text": "This paper has described the following pervasive power and advantages of RCAC:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.56689453125, 484.64202880859375, 429.4506530761719, 495.3780212402344], "page": 136, "span": [0, 79], "__ref_s3_data": null}], "text": "- GLYPH Access can be controlled through simple or sophisticated logic.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.60137939453125, 472.8739929199219, 351.649169921875, 483.2593688964844], "page": 136, "span": [0, 62], "__ref_s3_data": null}], "text": "- GLYPH Virtually no application changes are required.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.644775390625, 460.9553527832031, 491.7782287597656, 471.4268798828125], "page": 136, "span": [0, 93], "__ref_s3_data": null}], "text": "- GLYPH The implementation of the access policy is part of the DB2 data access layer.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.75515747070312, 448.82037353515625, 426.24566650390625, 459.736572265625], "page": 136, "span": [0, 81], "__ref_s3_data": null}], "text": "- GLYPH Table data is protected regardless of the interface that is used.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.80447387695312, 436.8045959472656, 433.2464599609375, 447.8392333984375], "page": 136, "span": [0, 80], "__ref_s3_data": null}], "text": "- GLYPH No user is inherently exempted from the access control policies.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.60531616210938, 424.9714660644531, 383.5718688964844, 435.288330078125], "page": 136, "span": [0, 67], "__ref_s3_data": null}], "text": "- GLYPH Groups of users can share policies and permissions.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.60353088378906, 330.8507385253906, 547.245361328125, 413.26202392578125], "page": 136, "span": [0, 623], "__ref_s3_data": null}], "text": "A deep understanding of the technology, and proper planning, good design, adequate testing, and monitored deployment are critical for success. This includes the usage of quality assurance testing, and realistic performance and scalability exercises that serve to demonstrate that all of your requirements are being met. As part of the verification process, the usage of in-depth proofs of concepts and proofs of technology are recommended, if not essential. When RCAC is activated, the results of queries can change. Anticipating this change and realizing the effects of RCAC before going live are of the utmost importance.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.79904174804688, 260.80133056640625, 547.19580078125, 319.08209228515625], "page": 136, "span": [0, 380], "__ref_s3_data": null}], "text": "With the ever-growing value of data, and the vast and varied database technology that is available today, it is crucial to have a person or persons on staff who specialize in data-centric design, development, and deployment. This role and responsibility falls on the database engineer. With the availability of DB2 RCAC, the importance of full-time database engineering has grown.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.42830657958984, 217.91627502441406, 324.01275634765625, 233.9404296875], "page": 136, "span": [0, 34], "__ref_s3_data": null}], "text": "8.2 DB2 for i Center of Excellence", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.96109008789062, 142.5989990234375, 533.2318115234375, 201.5556640625], "page": 136, "span": [0, 354], "__ref_s3_data": null}], "text": "To further assist you with understanding and implementing RCAC, the DB2 for i Center of Excellence team offers an RCAC education and consulting workshop. In addition to knowledge transfer, a working session allows for a review of your data access control requirements, review of the current environment, solution ideation, and high-level solution design.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.06277465820312, 109.11979675292969, 547.2406005859375, 131.29010009765625], "page": 136, "span": [0, 114], "__ref_s3_data": null}], "text": "If you are interested in engaging with the DB2 for i Center of Excellence, contact Mike Cain at mcain@us.ibm.com .", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.42459869384766, 27.93828010559082, 83.98200225830078, 37.74468994140625], "page": 136, "span": [0, 3], "__ref_s3_data": null}], "text": "120", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [98.57987976074219, 27.97216796875, 339.84716796875, 37.353759765625], "page": 136, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/126"}, {"prov": [{"bbox": [74.4000015258789, 517.019287109375, 115.15289306640625, 523.457275390625], "page": 137, "span": [0, 11], "__ref_s3_data": null}], "text": "Appendix A.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.8000030517578, 481.131103515625, 485.7971496582031, 538.7255859375], "page": 137, "span": [0, 49], "__ref_s3_data": null}], "text": "Database definitions for the RCAC banking example", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.599853515625, 397.7381591796875, 539.8473510742188, 444.1184387207031], "page": 137, "span": [0, 322], "__ref_s3_data": null}], "text": "This appendix provides the database definitions or DDLs to re-create the Row and Column Access Control (RCAC) scenario that is described in Chapter 4, \"Implementing Row and Column Access Control: Banking example\" on page 37. The script that is shown in Example A-1 is the DDL script that is used to implement this example.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.52754211425781, 376.4199523925781, 332.9858703613281, 386.0654602050781], "page": 137, "span": [0, 60], "__ref_s3_data": null}], "text": "Example A-1 DDL script to implement the RCAC banking example", "type": "paragraph", "name": "paragraph", "font": null}, {"prov": [{"bbox": [62.520992279052734, 61.56207275390625, 541.1366577148438, 371.1180419921875], "page": 137, "span": [0, 1229], "__ref_s3_data": null}], "text": "/* Database Definitions for RCAC Bank Scenario */ /* Schema */ CREATE SCHEMA BANK_SCHEMA FOR SCHEMA BANKSCHEMA ; /* Global Variable */ CREATE VARIABLE BANK_SCHEMA.CUSTOMER_LOGIN_ID VARCHAR( 30) ; LABEL ON VARIABLE BANK_SCHEMA.CUSTOMER_LOGIN_ID IS 'Customer''s log in value passed by web application' ; /* Tables */ CREATE TABLE BANK_SCHEMA.CUSTOMERS ( CUSTOMER_ID FOR COLUMN CUSTO00001 INTEGER GENERATED ALWAYS AS IDENTITY ( START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE NO CYCLE NO ORDER CACHE 20 ), CUSTOMER_NAME FOR COLUMN CUSTO00002 VARCHAR(30) CCSID 37 NOT NULL , CUSTOMER_ADDRESS FOR COLUMN CUSTO00003 VARCHAR(30) CCSID 37 NOT NULL , CUSTOMER_CITY FOR COLUMN CUSTO00004 VARCHAR(30) CCSID 37 NOT NULL , CUSTOMER_STATE FOR COLUMN CUSTO00005 CHAR(2) CCSID 37 NOT NULL , CUSTOMER_PHONE FOR COLUMN CUSTO00006 CHAR(10) CCSID 37 NOT NULL , CUSTOMER_EMAIL FOR COLUMN CUSTO00007 VARCHAR(30) CCSID 37 NOT NULL , CUSTOMER_TAX_ID FOR COLUMN CUSTO00008 CHAR(11) CCSID 37 NOT NULL , CUSTOMER_DRIVERS_LICENSE_NUMBER FOR COLUMN CUSTO00012 CHAR(13) CCSID 37 DEFAULT NULL , CUSTOMER_LOGIN_ID FOR COLUMN CUSTO00009 VARCHAR(30) CCSID 37 DEFAULT NULL , CUSTOMER_SECURITY_QUESTION FOR COLUMN CUSTO00010 VARCHAR(100) CCSID 37 DEFAULT NULL ,", "type": "paragraph", "name": "Code", "font": null}, {"prov": [{"bbox": [63.67854309082031, 27.88531494140625, 257.24334716796875, 37.3470458984375], "page": 137, "span": [0, 48], "__ref_s3_data": null}], "text": "' Copyright IBM Corp. 2014. All rights reserved.", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [530.0882568359375, 27.93828010559082, 547.2587890625, 37.70806884765625], "page": 137, "span": [0, 3], "__ref_s3_data": null}], "text": "121", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [496.9212951660156, 661.8682861328125, 526.1300659179688, 699.434814453125], "page": 137, "span": [0, 1], "__ref_s3_data": null}], "text": "A", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [63.45902633666992, 70.01904296875, 546.5369873046875, 721.3632202148438], "page": 138, "span": [0, 2754], "__ref_s3_data": null}], "text": "CUSTOMER_SECURITY_QUESTION_ANSWER FOR COLUMN CUSTO00011 VARCHAR(100) CCSID 37 DEFAULT NULL , INSERT_TIMESTAMP FOR COLUMN INSER00001 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , UPDATE_TIMESTAMP FOR COLUMN UPDAT00001 TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , CONSTRAINT BANK_SCHEMA.CUSTOMER_ID_PK PRIMARY KEY( CUSTOMER_ID ) ) ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_LOGIN_ID_UK UNIQUE( CUSTOMER_LOGIN_ID ) ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_DRIVERS_LICENSE_CHECK CHECK( CUSTOMER_DRIVERS_LICENSE_NUMBER <> '*************' ) ON UPDATE VIOLATION PRESERVE CUSTOMER_DRIVERS_LICENSE_NUMBER ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_EMAIL_CHECK CHECK( CUSTOMER_EMAIL <> '****@****' ) ON UPDATE VIOLATION PRESERVE CUSTOMER_EMAIL ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_LOGIN_ID_CHECK CHECK( CUSTOMER_LOGIN_ID <> '*****' ) ON INSERT VIOLATION SET CUSTOMER_LOGIN_ID = DEFAULT ON UPDATE VIOLATION PRESERVE CUSTOMER_LOGIN_ID ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_SECURITY_QUESTION_CHECK CHECK( CUSTOMER_SECURITY_QUESTION_ANSWER <> '*****' ) ON INSERT VIOLATION SET CUSTOMER_SECURITY_QUESTION_ANSWER = DEFAULT ON UPDATE VIOLATION PRESERVE CUSTOMER_SECURITY_QUESTION_ANSWER ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_SECURITY_QUESTION_ANSWER CHECK( CUSTOMER_SECURITY_QUESTION <> '*****' ) ON INSERT VIOLATION SET CUSTOMER_SECURITY_QUESTION = DEFAULT ON UPDATE VIOLATION PRESERVE CUSTOMER_SECURITY_QUESTION ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_TAX_ID_CHECK CHECK( CUSTOMER_TAX_ID <> 'XXX-XX-XXXX' AND SUBSTR ( CUSTOMER_TAX_ID , 1 , 7 ) <> 'XXX-XX-' ) ON UPDATE VIOLATION PRESERVE CUSTOMER_TAX_ID ; CREATE TABLE BANK_SCHEMA.ACCOUNTS ( ACCOUNT_ID INTEGER GENERATED ALWAYS AS IDENTITY ( START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE NO CYCLE NO ORDER CACHE 20 ), CUSTOMER_ID FOR COLUMN CUSTID INTEGER NOT NULL , ACCOUNT_NUMBER FOR COLUMN ACCOUNTNO VARCHAR(50) CCSID 37 NOT NULL , ACCOUNT_NAME FOR COLUMN ACCOUNTNAM CHAR(12) CCSID 37 NOT NULL , ACCOUNT_DATE_OPENED FOR COLUMN OPENDATE DATE DEFAULT CURRENT_DATE , ACCOUNT_DATE_CLOSED FOR COLUMN CLOSEDATE DATE DEFAULT NULL , ACCOUNT_CURRENT_BALANCE FOR COLUMN ACCTBAL DECIMAL(11, 2) NOT NULL DEFAULT 0 , INSERT_TIMESTAMP FOR COLUMN INSDATE TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , UPDATE_TIMESTAMP FOR COLUMN UPDDATE TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , CONSTRAINT BANK_SCHEMA.ACCOUNT_ID_PK PRIMARY KEY( ACCOUNT_ID ) );", "type": "paragraph", "name": "Code", "font": null}, {"prov": [{"bbox": [64.49662017822266, 27.93828010559082, 83.98200225830078, 37.59820556640625], "page": 138, "span": [0, 3], "__ref_s3_data": null}], "text": "122", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [98.57022857666016, 27.99407958984375, 339.9194030761719, 37.3040771484375], "page": 138, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [62.7338981628418, 61.7633056640625, 546.5366821289062, 720.3270263671875], "page": 139, "span": [0, 2313], "__ref_s3_data": null}], "text": "ALTER TABLE BANK_SCHEMA.ACCOUNTS ADD CONSTRAINT BANK_SCHEMA.ACCOUNT_CUSTOMER_ID_FK FOREIGN KEY( CUSTOMER_ID ) REFERENCES BANK_SCHEMA.CUSTOMERS ( CUSTO00001 ) ON DELETE RESTRICT ON UPDATE RESTRICT ; ALTER TABLE BANK_SCHEMA.ACCOUNTS ADD CONSTRAINT BANK_SCHEMA.ACCOUNT_NUMBER_CHECK CHECK( ACCOUNT_NUMBER <> '*****' ) ON UPDATE VIOLATION PRESERVE ACCOUNT_NUMBER ; CREATE TABLE BANK_SCHEMA.TRANSACTIONS FOR SYSTEM NAME TRANS ( TRANSACTION_ID FOR COLUMN TRANS00001 INTEGER GENERATED ALWAYS AS IDENTITY ( START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE NO CYCLE NO ORDER CACHE 20 ), ACCOUNT_ID INTEGER NOT NULL , TRANSACTION_TYPE FOR COLUMN TRANS00002 CHAR(1) CCSID 37 NOT NULL , TRANSACTION_DATE FOR COLUMN TRANS00003 DATE NOT NULL DEFAULT CURRENT_DATE , TRANSACTION_TIME FOR COLUMN TRANS00004 TIME NOT NULL DEFAULT CURRENT_TIME , TRANSACTION_AMOUNT FOR COLUMN TRANS00005 DECIMAL(11, 2) NOT NULL , INSERT_TIMESTAMP FOR COLUMN INSER00001 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , UPDATE_TIMESTAMP FOR COLUMN UPDAT00001 TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , CONSTRAINT BANK_SCHEMA.TRANSACTION_ID_PK PRIMARY KEY( TRANSACTION_ID ) ) ; ALTER TABLE BANK_SCHEMA.TRANSACTIONS ADD CONSTRAINT BANK_SCHEMA.TRANSACTIONS_ACCOUNT_ID_FK FOREIGN KEY( ACCOUNT_ID ) REFERENCES BANK_SCHEMA.ACCOUNTS ( ACCOUNT_ID ) ON DELETE RESTRICT ON UPDATE RESTRICT ; /* Permissions and Masks */ CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) OR ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 AND ( C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ) ) ENFORCED FOR ALL ACCESS ENABLE ; CREATE MASK BANK_SCHEMA.MASK_EMAIL_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_EMAIL RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_EMAIL WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_EMAIL ELSE '****@****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_TAX_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_TAX_ID RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1", "type": "paragraph", "name": "Code", "font": null}, {"prov": [{"bbox": [256.79608154296875, 28.0927734375, 517.9058227539062, 37.26806640625], "page": 139, "span": [0, 61], "__ref_s3_data": null}], "text": "Appendix A. Database definitions for the RCAC banking example", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [530.0982055664062, 27.93828010559082, 547.2587890625, 37.6234130859375], "page": 139, "span": [0, 3], "__ref_s3_data": null}], "text": "123", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [62.60613250732422, 84.2364501953125, 500.697265625, 722.6401977539062], "page": 140, "span": [0, 1998], "__ref_s3_data": null}], "text": "THEN C . CUSTOMER_TAX_ID WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( C . CUSTOMER_TAX_ID , 8 , 4 ) ) WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_TAX_ID ELSE 'XXX-XX-XXXX' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_DRIVERS_LICENSE_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_DRIVERS_LICENSE_NUMBER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ELSE '*************' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_LOGIN_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_LOGIN_ID RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_LOGIN_ID WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_LOGIN_ID ELSE '*****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_SECURITY_QUESTION RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION ELSE '*****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_SECURITY_QUESTION_ANSWER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ELSE '*****' END ENABLE ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL ;", "type": "paragraph", "name": "Code", "font": null}, {"prov": [{"bbox": [64.50080871582031, 27.93828010559082, 83.98200225830078, 37.46612548828125], "page": 140, "span": [0, 3], "__ref_s3_data": null}], "text": "124", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [98.63966369628906, 27.98992919921875, 339.882080078125, 37.28564453125], "page": 140, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [63.12764358520508, 191.19879150390625, 528.5969848632812, 721.9608154296875], "page": 141, "span": [0, 1533], "__ref_s3_data": null}], "text": "CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_ACCOUNTS ON BANK_SCHEMA.ACCOUNTS AS A FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) OR ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 AND ( A . CUSTOMER_ID IN ( SELECT C . CUSTOMER_ID FROM BANK_SCHEMA . CUSTOMERS C WHERE C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ENFORCED FOR ALL ACCESS ENABLE ; CREATE MASK BANK_SCHEMA.MASK_ACCOUNT_NUMBER_ON_ACCOUNTS ON BANK_SCHEMA.ACCOUNTS AS A FOR COLUMN ACCOUNT_NUMBER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN A . ACCOUNT_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN A . ACCOUNT_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN A . ACCOUNT_NUMBER ELSE '*****' END ENABLE ; ALTER TABLE BANK_SCHEMA.ACCOUNTS ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL ; CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_TRANSACTIONS ON BANK_SCHEMA.TRANSACTIONS AS T FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) OR ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 AND ( T . ACCOUNT_ID IN ( SELECT A . ACCOUNT_ID FROM BANK_SCHEMA . ACCOUNTS A WHERE A . CUSTOMER_ID IN ( SELECT C . CUSTOMER_ID FROM BANK_SCHEMA . CUSTOMERS C WHERE C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ENFORCED FOR ALL ACCESS ENABLE ; ALTER TABLE BANK_SCHEMA.TRANSACTIONS ACTIVATE ROW ACCESS CONTROL ; /* END */", "type": "paragraph", "name": "Code", "font": null}, {"prov": [{"bbox": [256.8621520996094, 28.05596923828125, 517.9058227539062, 37.23699951171875], "page": 141, "span": [0, 61], "__ref_s3_data": null}], "text": "Appendix A. Database definitions for the RCAC banking example", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [530.1473999023438, 27.93828010559082, 547.2587890625, 37.67071533203125], "page": 141, "span": [0, 3], "__ref_s3_data": null}], "text": "125", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.55541229248047, 27.93828010559082, 83.98200225830078, 37.9239501953125], "page": 142, "span": [0, 3], "__ref_s3_data": null}], "text": "126", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [98.59571838378906, 27.87689208984375, 340.1140441894531, 37.586181640625], "page": 142, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.80000305175781, 695.3945922851562, 299.2008056640625, 719.0851440429688], "page": 143, "span": [0, 20], "__ref_s3_data": null}], "text": "Related publications", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.75408935546875, 637.64208984375, 530.0675048828125, 659.93994140625], "page": 143, "span": [0, 150], "__ref_s3_data": null}], "text": "The publications that are listed in this section are considered suitable for a more detailed description of the topics that are covered in this paper.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.5552978515625, 594.16162109375, 205.97418212890625, 610.62353515625], "page": 143, "span": [0, 18], "__ref_s3_data": null}], "text": "Other publications", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.73150634765625, 567.8068237304688, 413.18115234375, 578.06201171875], "page": 143, "span": [0, 63], "__ref_s3_data": null}], "text": "These publications are relevant as further information sources:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.81341552734375, 551.03466796875, 414.05657958984375, 561.2576904296875], "page": 143, "span": [0, 74], "__ref_s3_data": null}], "text": "- GLYPH IBM DB2 for i indexing methods and strategies white paper:", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.4676513671875, 521.3193359375, 545.9945678710938, 543.9222412109375], "page": 143, "span": [0, 108], "__ref_s3_data": null}], "text": "- http://www.ibm.com/partnerworld/wps/servlet/ContentHandler/stg_ast_sys_wp_db2_i _indexing_methods_strategies", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.8154296875, 505.1793212890625, 299.7695007324219, 515.3950805664062], "page": 143, "span": [0, 49], "__ref_s3_data": null}], "text": "- GLYPH IBM i Memo to Users Version 7.2 :", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.4538116455078, 487.5298767089844, 536.3565673828125, 497.8748474121094], "page": 143, "span": [0, 77], "__ref_s3_data": null}], "text": "- http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgmtu.htm", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.64071655273438, 471.1599426269531, 371.4087829589844, 481.50567626953125], "page": 143, "span": [0, 65], "__ref_s3_data": null}], "text": "- GLYPH IBM i Version 7.2 DB2 for i SQL Reference Guide :", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.3872833251953, 442.33642578125, 545.9945678710938, 463.9585876464844], "page": 143, "span": [0, 86], "__ref_s3_data": null}], "text": "- http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/db2/rbafzintro.htm?l ang=en", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.63323974609375, 425.1407470703125, 355.629150390625, 435.3125305175781], "page": 143, "span": [0, 60], "__ref_s3_data": null}], "text": "- GLYPH IBM i Version 7.2 Journal Management Guide :", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.4163360595703, 395.97418212890625, 545.9945678710938, 417.87652587890625], "page": 143, "span": [0, 92], "__ref_s3_data": null}], "text": "- http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzaki/rzakiprintthis .htm?lang=en", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.4580078125, 378.82830810546875, 346.3946838378906, 389.5109558105469], "page": 143, "span": [0, 60], "__ref_s3_data": null}], "text": "- GLYPH IBM i Version 7.2 Security Reference Guide :", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.8020477294922, 349.88922119140625, 546.1087036132812, 372.0950622558594], "page": 143, "span": [0, 90], "__ref_s3_data": null}], "text": "- http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzarl/rzarlkickoff.h tm?lang=en", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.61199188232422, 306.89630126953125, 195.1357421875, 322.6049499511719], "page": 143, "span": [0, 16], "__ref_s3_data": null}], "text": "Online resources", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.812255859375, 280.17840576171875, 399.3615417480469, 290.16766357421875], "page": 143, "span": [0, 59], "__ref_s3_data": null}], "text": "These websites are relevant as further information sources:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.69252014160156, 263.091796875, 457.8038635253906, 273.29962158203125], "page": 143, "span": [0, 81], "__ref_s3_data": null}], "text": "- GLYPH Database programming topic of the IBM i 7.2 IBM Knowledge Center:", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.2280731201172, 234.15362548828125, 545.9945678710938, 255.794677734375], "page": 143, "span": [0, 86], "__ref_s3_data": null}], "text": "- http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgdbp.htm?l ang=en", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.60523986816406, 216.62274169921875, 287.6324768066406, 227.4852294921875], "page": 143, "span": [0, 46], "__ref_s3_data": null}], "text": "- GLYPH Identity Theft Resource Center", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.68099975585938, 199.8922119140625, 291.11822509765625, 209.80865478515625], "page": 143, "span": [0, 28], "__ref_s3_data": null}], "text": "- http://www.idtheftcenter.org", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.6503448486328, 183.16000366210938, 231.24366760253906, 193.26593017578125], "page": 143, "span": [0, 33], "__ref_s3_data": null}], "text": "- GLYPH Ponemon Institute", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.75747680664062, 166.0797119140625, 266.09869384765625, 176.2340087890625], "page": 143, "span": [0, 23], "__ref_s3_data": null}], "text": "- http://www.ponemon.org/", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [63.680240631103516, 27.890625, 257.24334716796875, 37.23919677734375], "page": 143, "span": [0, 48], "__ref_s3_data": null}], "text": "' Copyright IBM Corp. 2014. All rights reserved.", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [530.1651000976562, 27.93828010559082, 547.2587890625, 37.71759033203125], "page": 143, "span": [0, 3], "__ref_s3_data": null}], "text": "127", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.73175811767578, 705.8510131835938, 172.86196899414062, 721.902587890625], "page": 144, "span": [0, 13], "__ref_s3_data": null}], "text": "Help from IBM", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.51719665527344, 678.6181030273438, 262.6037292480469, 689.291015625], "page": 144, "span": [0, 25], "__ref_s3_data": null}], "text": "IBM Support and downloads", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.8000030517578, 661.7525634765625, 211.73904418945312, 671.5845336914062], "page": 144, "span": [0, 16], "__ref_s3_data": null}], "text": "ibm.com /support", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.5938720703125, 640.2989501953125, 227.63221740722656, 650.671142578125], "page": 144, "span": [0, 19], "__ref_s3_data": null}], "text": "IBM Global Services", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.8000030517578, 623.4984130859375, 216.7190399169922, 632.98974609375], "page": 144, "span": [0, 17], "__ref_s3_data": null}], "text": "ibm.com /services", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.5219497680664, 27.93828010559082, 83.98200225830078, 37.608154296875], "page": 144, "span": [0, 3], "__ref_s3_data": null}], "text": "128", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [98.66630554199219, 27.9249267578125, 339.9003601074219, 37.40533447265625], "page": 144, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [287.2200012207031, 741.251953125, 414.24481201171875, 763.4519653320312], "page": 146, "span": [0, 10], "__ref_s3_data": null}], "text": "Back cover", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [26.454715728759766, 650.9618530273438, 447.3600158691406, 720.362060546875], "page": 146, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [26.35322380065918, 524.7881469726562, 127.443603515625, 551.0213623046875], "page": 146, "span": [0, 40], "__ref_s3_data": null}], "text": "Implement roles and separation of duties", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [26.22105598449707, 469.1280212402344, 120.283203125, 508.2904052734375], "page": 146, "span": [0, 40], "__ref_s3_data": null}], "text": "Leverage row permissions on the database", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [26.226221084594727, 413.14801025390625, 121.44960021972656, 452.88134765625], "page": 146, "span": [0, 40], "__ref_s3_data": null}], "text": "Protect columns by defining column masks", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [152.25205993652344, 468.4081115722656, 414.084228515625, 550.1506958007812], "page": 146, "span": [0, 464], "__ref_s3_data": null}], "text": "This IBM Redpaper publication provides information about the IBM i 7.2 feature of IBM DB2 for i Row and Column Access Control (RCAC). It offers a broad description of the function and advantages of controlling access to data in a comprehensive and transparent way. This publication helps you understand the capabilities of RCAC and provides examples of defining, creating, and implementing the row permissions and column masks in a relational database environment.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [152.3572540283203, 403.090087890625, 414.173828125, 461.4716796875], "page": 146, "span": [0, 309], "__ref_s3_data": null}], "text": "This paper is intended for database engineers, data-centric application developers, and security officers who want to design and implement RCAC as a part of their data control and governance policy. A solid background in IBM i object level security, DB2 for i relational database concepts, and SQL is assumed.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [170.78512573242188, 152.3369903564453, 232.11270141601562, 161.494140625], "page": 146, "span": [0, 12], "__ref_s3_data": null}], "text": "REDP-5110-00", "type": "page-footer", "name": "Page-footer", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/127"}, {"name": "Picture", "type": "figure", "$ref": "#/figures/128"}, {"prov": [{"bbox": [466.3692626953125, 489.8393859863281, 559.809326171875, 544.606201171875], "page": 146, "span": [0, 44], "__ref_s3_data": null}], "text": "INTERNATIONAL TECHNICAL SUPPORT ORGANIZATION", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [466.3262939453125, 405.52801513671875, 587.38916015625, 440.5700988769531], "page": 146, "span": [0, 60], "__ref_s3_data": null}], "text": "BUILDING TECHNICAL INFORMATION BASED ON PRACTICAL EXPERIENCE", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [466.1037292480469, 250.36593627929688, 587.5205078125, 393.18768310546875], "page": 146, "span": [0, 323], "__ref_s3_data": null}], "text": "IBM Redbooks are developed by the IBM International Technical Support Organization. Experts from IBM, Customers and Partners from around the world create timely technical information based on realistic scenarios. Specific recommendations are provided to help you implement IT solutions more effectively in your environment.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [466.66748046875, 190.48809814453125, 571.0052490234375, 214.11181640625], "page": 146, "span": [0, 39], "__ref_s3_data": null}], "text": "For more information: ibm.com /redbooks", "type": "paragraph", "name": "Text", "font": null}], "figures": [{"prov": [{"bbox": [513.4560546875, 737.1808471679688, 586.1583251953125, 765.9149169921875], "page": 1, "span": [0, 0], "__ref_s3_data": null}], "text": "", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [80.21302032470703, 696.1356811523438, 142.7141876220703, 720.9600830078125], "page": 3, "span": [0, 0], "__ref_s3_data": null}], "text": "", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [465.2912902832031, 568.2127075195312, 487.54522705078125, 581.128173828125], "page": 10, "span": [0, 0], "__ref_s3_data": null}], "text": "", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [143.39866638183594, 506.378662109375, 179.56256103515625, 521.7388916015625], "page": 11, "span": [0, 0], "__ref_s3_data": null}], "text": "", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [64.16704559326172, 103.87176513671875, 258.77435302734375, 188.49365234375], "page": 11, "span": [0, 0], "__ref_s3_data": null}], "text": "", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [309.1715087890625, 608.7066650390625, 372.07818603515625, 634.2903442382812], "page": 12, "span": [0, 0], "__ref_s3_data": null}], "text": "", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [309.91729736328125, 415.996337890625, 327.7751159667969, 434.16644287109375], "page": 12, "span": [0, 0], "__ref_s3_data": null}], "text": "", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [142.52883911132812, 288.79351806640625, 251.47850036621094, 416.9550476074219], "page": 13, "span": [0, 0], "__ref_s3_data": null}], "text": "", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [145.41448974609375, 156.616943359375, 252.08840942382812, 264.7552490234375], "page": 13, "span": [0, 0], "__ref_s3_data": null}], "text": "", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [141.68251037597656, 608.5074462890625, 249.5221405029297, 714.6685791015625], "page": 14, "span": [0, 0], "__ref_s3_data": null}], "text": "", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [141.71910095214844, 472.5130920410156, 251.5185546875, 599.4354248046875], "page": 14, "span": [0, 0], "__ref_s3_data": null}], "text": "", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [141.89089965820312, 337.8795166015625, 251.38380432128906, 447.3857116699219], "page": 14, "span": [0, 0], "__ref_s3_data": null}], "text": "", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [141.57579040527344, 223.3951416015625, 249.41360473632812, 329.20159912109375], "page": 14, "span": [0, 0], "__ref_s3_data": null}], "text": "", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [141.69131469726562, 67.85260009765625, 250.86129760742188, 177.389892578125], "page": 14, "span": [0, 0], "__ref_s3_data": null}], "text": "", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [142.26431274414062, 599.3118896484375, 251.69140625, 714.8782348632812], "page": 15, "span": [0, 0], "__ref_s3_data": null}], "text": "", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [142.39024353027344, 465.6423034667969, 251.9964141845703, 575.4408569335938], "page": 15, "span": [0, 0], "__ref_s3_data": null}], "text": "", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [32.05508804321289, 553.958984375, 239.62692260742188, 721.5736083984375], "page": 17, "span": [0, 0], "__ref_s3_data": null}], "text": "", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [136.6387176513672, 92.9403076171875, 491.2538146972656, 296.2513122558594], "page": 19, "span": [0, 55], "__ref_s3_data": null}], "text": "Figure 1-1 All-or-nothing access to the rows of a table", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [135.92466735839844, 103.39019775390625, 546.4456176757812, 416.0727844238281], "page": 20, "span": [0, 43], "__ref_s3_data": null}], "text": "Figure 1-2 Existing row and column controls", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [32.17647933959961, 554.0392456054688, 239.21856689453125, 721.7350463867188], "page": 23, "span": [0, 0], "__ref_s3_data": null}], "text": "", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [32.1435661315918, 553.8724975585938, 239.34097290039062, 721.603759765625], "page": 29, "span": [0, 0], "__ref_s3_data": null}], "text": "", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [135.9717559814453, 381.39068603515625, 545.4180908203125, 684.5892944335938], "page": 31, "span": [0, 177], "__ref_s3_data": null}], "text": "The SQL CREATE PERMISSION statement that is shown in Figure 3-1 is used to define and initially enable or disable the row access rules.Figure 3-1 CREATE PERMISSION SQL statement", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [135.58670043945312, 377.8745422363281, 545.5314331054688, 672.6809692382812], "page": 32, "span": [0, 36], "__ref_s3_data": null}], "text": "Figure 3-2 CREATE MASK SQL statement", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [136.23851013183594, 444.80059814453125, 507.5733642578125, 714.2366943359375], "page": 33, "span": [0, 57], "__ref_s3_data": null}], "text": "Figure 3-3 ALTER PERMISSION and ALTER MASK SQL statements", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [135.7325897216797, 70.57550048828125, 514.99365234375, 291.0432434082031], "page": 33, "span": [0, 36], "__ref_s3_data": null}], "text": "Figure 3-4 ALTER TABLE SQL statement", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [135.64837646484375, 197.24334716796875, 301.2367248535156, 407.8262939453125], "page": 35, "span": [0, 50], "__ref_s3_data": null}], "text": "Figure 3-5 Special registers and adopted authority", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [136.4460906982422, 421.7442932128906, 227.48138427734375, 454.37591552734375], "page": 40, "span": [0, 30], "__ref_s3_data": null}], "text": "Figure 3-7 Number of employees", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [64.00577545166016, 302.76678466796875, 547.3966674804688, 489.8777160644531], "page": 42, "span": [0, 63], "__ref_s3_data": null}], "text": "Figure 3-9 Row permissions that are shown in System i Navigator", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [63.801902770996094, 621.9678955078125, 547.11474609375, 696.6175537109375], "page": 44, "span": [0, 52], "__ref_s3_data": null}], "text": "Figure 3-10 Column masks shown in System i Navigator", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [63.98516845703125, 145.86041259765625, 530.0479125976562, 364.0950012207031], "page": 44, "span": [0, 65], "__ref_s3_data": null}], "text": "Figure 3-11 Selecting the EMPLOYEES table from System i Navigator", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [135.93521118164062, 454.1453857421875, 547.290771484375, 685.1574096679688], "page": 45, "span": [0, 47], "__ref_s3_data": null}], "text": "Figure 3-12 RCAC enabled on the EMPLOYEES table", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [137.24044799804688, 209.55267333984375, 225.1509246826172, 243.1964111328125], "page": 45, "span": [0, 36], "__ref_s3_data": null}], "text": "Figure 3-13 Count of EMPLOYEES by HR", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [137.4537811279297, 98.5223388671875, 220.26930236816406, 130.49932861328125], "page": 45, "span": [0, 43], "__ref_s3_data": null}], "text": "Figure 3-14 Count of EMPLOYEES by a manager", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [136.77099609375, 651.5640869140625, 225.8523406982422, 684.3360595703125], "page": 46, "span": [0, 45], "__ref_s3_data": null}], "text": "Figure 3-15 Count of EMPLOYEES by an employee", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [136.36477661132812, 539.6805419921875, 228.86305236816406, 572.2852172851562], "page": 46, "span": [0, 46], "__ref_s3_data": null}], "text": "Figure 3-16 Count of EMPLOYEES by a consultant", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [32.17905807495117, 553.8535766601562, 238.82225036621094, 721.395263671875], "page": 53, "span": [0, 0], "__ref_s3_data": null}], "text": "", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [136.02655029296875, 304.43743896484375, 494.36669921875, 562.2583618164062], "page": 55, "span": [0, 35], "__ref_s3_data": null}], "text": "Figure 4-1 Internet banking example", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [136.22354125976562, 387.0466613769531, 529.123291015625, 672.08544921875], "page": 56, "span": [0, 42], "__ref_s3_data": null}], "text": "Figure 4-2 Rules for row and column access", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [136.12950134277344, 490.5372619628906, 451.212158203125, 664.9310302734375], "page": 58, "span": [0, 45], "__ref_s3_data": null}], "text": "Figure 4-4 Data model of the banking scenario", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [135.7327880859375, 163.08135986328125, 415.3825988769531, 221.14324951171875], "page": 58, "span": [0, 54], "__ref_s3_data": null}], "text": "Figure 4-5 Tables that are used in the banking example", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [135.87620544433594, 430.18212890625, 417.8246765136719, 614.5701293945312], "page": 59, "span": [0, 37], "__ref_s3_data": null}], "text": "Figure 4-6 CUSTOMERS table attributes", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [135.36148071289062, 486.9355163574219, 533.2239379882812, 660.7388916015625], "page": 60, "span": [0, 59], "__ref_s3_data": null}], "text": "Figure 4-8 Reviewing the constraints on the CUSTOMERS table", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [134.96737670898438, 231.27545166015625, 457.1007080078125, 421.118408203125], "page": 60, "span": [0, 36], "__ref_s3_data": null}], "text": "Figure 4-9 ACCOUNTS table attributes", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [63.629615783691406, 308.1072998046875, 546.4091796875, 468.0149230957031], "page": 61, "span": [0, 59], "__ref_s3_data": null}], "text": "Figure 4-11 Reviewing the constraints on the ACCOUNTS table", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [135.87826538085938, 495.53948974609375, 451.5091857910156, 684.625], "page": 62, "span": [0, 41], "__ref_s3_data": null}], "text": "Figure 4-12 TRANSACTIONS table attributes", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [63.676544189453125, 69.37261962890625, 546.6666870117188, 223.1519775390625], "page": 62, "span": [0, 63], "__ref_s3_data": null}], "text": "Figure 4-14 Reviewing the constraints on the TRANSACTIONS table", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [135.87820434570312, 299.79180908203125, 343.8211669921875, 537.927490234375], "page": 63, "span": [0, 38], "__ref_s3_data": null}], "text": "Figure 4-15 Application administration", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [136.17874145507812, 403.0865173339844, 527.1444702148438, 684.837646484375], "page": 64, "span": [0, 48], "__ref_s3_data": null}], "text": "Figure 4-16 Application administration for IBM i", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [136.42279052734375, 181.008544921875, 528.0494384765625, 337.58477783203125], "page": 64, "span": [0, 77], "__ref_s3_data": null}], "text": "Figure 4-17 Customizing the Database Security Administrator function usage ID", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [136.3659210205078, 390.21917724609375, 485.6257629394531, 673.2913208007812], "page": 65, "span": [0, 35], "__ref_s3_data": null}], "text": "Figure 4-18 Customize Access window", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [136.03775024414062, 208.7786865234375, 484.38336181640625, 321.49188232421875], "page": 65, "span": [0, 72], "__ref_s3_data": null}], "text": "Figure 4-19 Function usage ID Database Security Administrator customized", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [134.8684539794922, 519.525390625, 447.195556640625, 684.35791015625], "page": 66, "span": [0, 74], "__ref_s3_data": null}], "text": "Figure 4-20 Query to display user profiles with function usage ID for RCAC", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [135.67332458496094, 204.1165771484375, 358.52606201171875, 350.67633056640625], "page": 66, "span": [0, 35], "__ref_s3_data": null}], "text": "Figure 4-21 Creating group profiles", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [136.2171630859375, 430.8948669433594, 474.1829528808594, 656.6912231445312], "page": 67, "span": [0, 52], "__ref_s3_data": null}], "text": "Figure 4-22 Creating group profiles and adding users", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [136.2489471435547, 241.65252685546875, 269.5424499511719, 366.31561279296875], "page": 67, "span": [0, 40], "__ref_s3_data": null}], "text": "Figure 4-23 Newly created group profiles", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [135.9110107421875, 386.7077941894531, 454.9993896484375, 596.0236206054688], "page": 68, "span": [0, 38], "__ref_s3_data": null}], "text": "Figure 4-24 Creating a global variable", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [64.25324249267578, 83.63250732421875, 546.2809448242188, 298.9075012207031], "page": 68, "span": [0, 63], "__ref_s3_data": null}], "text": "Figure 4-25 Creating a global variable called CUSTOMER_LOGIN_ID", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [136.07814025878906, 552.4191284179688, 346.28375244140625, 672.6598510742188], "page": 69, "span": [0, 72], "__ref_s3_data": null}], "text": "Figure 4-26 Setting permissions on the CUSTOMER_LOGIN_ID global variable", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [136.84584045410156, 215.39788818359375, 547.677978515625, 488.3529968261719], "page": 69, "span": [0, 91], "__ref_s3_data": null}], "text": "Figure 4-27 Setting change permissions for Webuser on the CUSTOMER_LOGIN_ID global variable", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [136.3912811279297, 371.8191833496094, 467.3126220703125, 630.09716796875], "page": 70, "span": [0, 41], "__ref_s3_data": null}], "text": "Figure 4-28 Selecting new row permissions", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [136.22802734375, 265.47283935546875, 507.9937438964844, 533.213134765625], "page": 71, "span": [0, 54], "__ref_s3_data": null}], "text": "Figure 4-29 New row permissions on the CUSTOMERS table", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [63.957679748535156, 209.08831787109375, 540.6087646484375, 521.5117797851562], "page": 72, "span": [0, 53], "__ref_s3_data": null}], "text": "Figure 4-30 New row permissions on the ACCOUNTS table", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [63.73027801513672, 80.55084228515625, 535.9136352539062, 445.1194763183594], "page": 73, "span": [0, 57], "__ref_s3_data": null}], "text": "Figure 4-31 New row permissions on the TRANSACTIONS table", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [64.10432434082031, 520.585693359375, 545.318603515625, 672.0056762695312], "page": 74, "span": [0, 50], "__ref_s3_data": null}], "text": "Figure 4-32 List of row permissions on BANK_SCHEMA", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [136.1191864013672, 223.3760986328125, 456.9282531738281, 396.8784484863281], "page": 74, "span": [0, 34], "__ref_s3_data": null}], "text": "Figure 4-33 Creating a column mask", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [136.62161254882812, 189.4141845703125, 533.3434448242188, 603.1398315429688], "page": 75, "span": [0, 57], "__ref_s3_data": null}], "text": "Figure 4-34 Defining a column mask on the CUSTOMERS table", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [64.02095031738281, 611.1890258789062, 547.409912109375, 684.545166015625], "page": 76, "span": [0, 47], "__ref_s3_data": null}], "text": "Figure 4-35 List of column masks on BANK_SCHEMA", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [136.29519653320312, 323.4537048339844, 545.3217163085938, 429.86224365234375], "page": 76, "span": [0, 45], "__ref_s3_data": null}], "text": "Figure 4-36 Definition of the CUSTOMERS table", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [64.00347900390625, 191.1029052734375, 546.5211181640625, 258.30792236328125], "page": 76, "span": [0, 37], "__ref_s3_data": null}], "text": "Figure 4-37 Adding a check constraint", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [63.89818572998047, 141.4451904296875, 543.365966796875, 622.65625], "page": 77, "span": [0, 68], "__ref_s3_data": null}], "text": "Figure 4-38 Specifying a new check constraint on the CUSTOMERS table", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [63.67375564575195, 408.3074645996094, 546.8531494140625, 684.8529052734375], "page": 78, "span": [0, 51], "__ref_s3_data": null}], "text": "Figure 4-39 Check constraint on the CUSTOMERS table", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [63.88129806518555, 191.6788330078125, 543.3204956054688, 330.7875061035156], "page": 78, "span": [0, 60], "__ref_s3_data": null}], "text": "Figure 4-40 List of check constraints on the CUSTOMERS table", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [135.9375457763672, 459.0491638183594, 546.1521606445312, 618.48974609375], "page": 79, "span": [0, 48], "__ref_s3_data": null}], "text": "Figure 4-41 Enabling RCAC on the CUSTOMERS table", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [135.82846069335938, 219.2965087890625, 534.9657592773438, 381.9046325683594], "page": 79, "span": [0, 37], "__ref_s3_data": null}], "text": "Figure 4-42 Enabling RCAC on ACCOUNTS", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [136.07981872558594, 515.8709106445312, 547.2720947265625, 672.8583984375], "page": 80, "span": [0, 41], "__ref_s3_data": null}], "text": "Figure 4-43 Enabling RCAC on TRANSACTIONS", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [63.96348190307617, 210.73712158203125, 546.8929443359375, 379.94091796875], "page": 80, "span": [0, 47], "__ref_s3_data": null}], "text": "Figure 4-44 Row permissions after enabling RCAC", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [136.34481811523438, 553.552001953125, 467.5279846191406, 684.5108642578125], "page": 81, "span": [0, 47], "__ref_s3_data": null}], "text": "Figure 4-45 Selecting row permission definition", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [63.714664459228516, 196.12652587890625, 502.0154113769531, 464.8936767578125], "page": 81, "span": [0, 63], "__ref_s3_data": null}], "text": "Figure 4-46 Search condition of the QIBM_DEFAULT row permission", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [136.04849243164062, 353.65679931640625, 358.4311218261719, 448.3782653808594], "page": 82, "span": [0, 28], "__ref_s3_data": null}], "text": "Figure 4-47 DBE session user", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [135.9881591796875, 166.849853515625, 393.8948669433594, 300.3863525390625], "page": 82, "span": [0, 71], "__ref_s3_data": null}], "text": "Figure 4-48 Number of rows that DBE user can see in the CUSTOMERS table", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [135.97964477539062, 106.57257080078125, 354.29364013671875, 227.32598876953125], "page": 83, "span": [0, 33], "__ref_s3_data": null}], "text": "Figure 4-50 SECURITY session user", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [136.23712158203125, 566.5540771484375, 385.9791564941406, 684.7537841796875], "page": 84, "span": [0, 83], "__ref_s3_data": null}], "text": "Figure 4-51 Number of rows that the security officer can see in the CUSTOMERS table", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [64.11683654785156, 353.8417053222656, 546.5642700195312, 502.3402099609375], "page": 84, "span": [0, 71], "__ref_s3_data": null}], "text": "Figure 4-52 SQL statement that is run by the SECURITY user - no results", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [135.7608642578125, 122.27850341796875, 362.02239990234375, 256.17401123046875], "page": 84, "span": [0, 31], "__ref_s3_data": null}], "text": "Figure 4-53 TELLER session user", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [135.92535400390625, 572.8428344726562, 388.818115234375, 684.47216796875], "page": 85, "span": [0, 78], "__ref_s3_data": null}], "text": "Figure 4-54 Number of rows that the TELLER user can see in the CUSTOMERS table", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [64.41838073730469, 121.37432861328125, 548.2760009765625, 495.8370361328125], "page": 85, "span": [0, 76], "__ref_s3_data": null}], "text": "Figure 4-55 SQL statement that is run by the TELLER user with masked columns", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [136.20846557617188, 569.3597412109375, 352.89752197265625, 653.039794921875], "page": 86, "span": [0, 30], "__ref_s3_data": null}], "text": "Figure 4-56 ADMIN session user", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [136.3792266845703, 423.29107666015625, 382.5545654296875, 504.6051940917969], "page": 86, "span": [0, 72], "__ref_s3_data": null}], "text": "Figure 4-57 Number of rows that the ADMIN can see in the CUSTOMERS table", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [136.11729431152344, 118.21148681640625, 354.23046875, 207.35791015625], "page": 87, "span": [0, 32], "__ref_s3_data": null}], "text": "Figure 4-59 WEBUSER session user", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [135.9663848876953, 570.4339599609375, 547.538818359375, 672.871826171875], "page": 88, "span": [0, 57], "__ref_s3_data": null}], "text": "Figure 4-60 Setting the global variable CUSTOMER_LOGIN_ID", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [136.12271118164062, 272.61468505859375, 395.9803466796875, 506.2840881347656], "page": 88, "span": [0, 45], "__ref_s3_data": null}], "text": "Figure 4-61 Viewing the global variable value", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [136.00576782226562, 107.967529296875, 382.0115966796875, 207.84942626953125], "page": 88, "span": [0, 74], "__ref_s3_data": null}], "text": "Figure 4-62 Number of rows that the WEBUSER can see in the CUSTOMERS table", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [64.07161712646484, 541.043212890625, 546.6607055664062, 684.5228271484375], "page": 89, "span": [0, 68], "__ref_s3_data": null}], "text": "Figure 4-63 SQL statement that is run by WEBUSER - no masked columns", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [136.32431030273438, 293.3769226074219, 399.8092956542969, 656.0142211914062], "page": 92, "span": [0, 47], "__ref_s3_data": null}], "text": "Figure 4-67 Visual Explain with no RCAC enabled", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [136.5016632080078, 314.4587707519531, 545.4508666992188, 672.7508544921875], "page": 93, "span": [0, 44], "__ref_s3_data": null}], "text": "Figure 4-68 Visual Explain with RCAC enabled", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [64.27847290039062, 127.9129638671875, 506.39263916015625, 238.41864013671875], "page": 93, "span": [0, 37], "__ref_s3_data": null}], "text": "Figure 4-69 Index advice with no RCAC", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [64.13593292236328, 557.0508422851562, 508.70513916015625, 672.543701171875], "page": 94, "span": [0, 42], "__ref_s3_data": null}], "text": "Figure 4-70 Index advice with RCAC enabled", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [32.17748260498047, 553.986572265625, 239.63507080078125, 721.4505004882812], "page": 95, "span": [0, 0], "__ref_s3_data": null}], "text": "", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [135.8197021484375, 72.09771728515625, 527.1633911132812, 354.0295104980469], "page": 97, "span": [0, 56], "__ref_s3_data": null}], "text": "Figure 5-1 Accidental update with masked values scenario", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [32.03302764892578, 553.9920654296875, 238.4545135498047, 721.64599609375], "page": 101, "span": [0, 0], "__ref_s3_data": null}], "text": "", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [136.07940673828125, 262.60601806640625, 412.541015625, 536.4542846679688], "page": 103, "span": [0, 57], "__ref_s3_data": null}], "text": "Figure 6-2 Masking differences between Fieldproc and RCAC", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [135.86012268066406, 502.79217529296875, 497.2643127441406, 616.7017211914062], "page": 104, "span": [0, 33], "__ref_s3_data": null}], "text": "Figure 6-3 RCAC and data movement", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [135.99375915527344, 388.2860107421875, 491.57470703125, 636.4747314453125], "page": 105, "span": [0, 52], "__ref_s3_data": null}], "text": "Figure 6-4 RCAC effects on data movement from SOURCE", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [136.0791015625, 381.560791015625, 499.302978515625, 636.4277954101562], "page": 106, "span": [0, 50], "__ref_s3_data": null}], "text": "Figure 6-5 RCAC effects on data movement on TARGET", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [136.0598907470703, 407.5401916503906, 501.41558837890625, 660.60791015625], "page": 107, "span": [0, 61], "__ref_s3_data": null}], "text": "Figure 6-6 RCAC effects on data movement on SOURCE and TARGET", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [136.11366271972656, 475.9753112792969, 502.8105773925781, 684.66796875], "page": 108, "span": [0, 47], "__ref_s3_data": null}], "text": "Figure 6-7 Set A and set B with row permissions", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [135.9275665283203, 169.27420043945312, 464.8796691894531, 381.38775634765625], "page": 108, "span": [0, 45], "__ref_s3_data": null}], "text": "Figure 6-8 Inner join without RCAC permission", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [136.01123046875, 371.52569580078125, 470.03668212890625, 604.3631591796875], "page": 109, "span": [0, 42], "__ref_s3_data": null}], "text": "Figure 6-9 Inner join with RCAC permission", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [136.0685272216797, 419.78314208984375, 478.2557678222656, 634.4288330078125], "page": 110, "span": [0, 46], "__ref_s3_data": null}], "text": "Figure 6-10 Outer join without RCAC permission", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [136.01914978027344, 370.34381103515625, 483.0831298828125, 608.7029418945312], "page": 111, "span": [0, 43], "__ref_s3_data": null}], "text": "Figure 6-11 Outer join with RCAC permission", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [136.2607879638672, 397.6853332519531, 484.0173034667969, 635.3245239257812], "page": 112, "span": [0, 50], "__ref_s3_data": null}], "text": "Figure 6-12 Exception join without RCAC permission", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [135.89076232910156, 72.65142822265625, 485.4429931640625, 307.9719543457031], "page": 112, "span": [0, 47], "__ref_s3_data": null}], "text": "Figure 6-13 Exception join with RCAC permission", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [64.05506134033203, 442.6709899902344, 546.421142578125, 696.6568603515625], "page": 114, "span": [0, 58], "__ref_s3_data": null}], "text": "Figure 6-14 Visual Explain indicating that RCAC is applied", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [64.03382873535156, 249.7725830078125, 546.9832153320312, 389.9870300292969], "page": 114, "span": [0, 35], "__ref_s3_data": null}], "text": "Figure 6-15 SQL Performance Monitor", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [63.78765869140625, 106.41729736328125, 546.1412353515625, 185.0380859375], "page": 114, "span": [0, 67], "__ref_s3_data": null}], "text": "Figure 6-16 SQL Performance Monitor indicating that RCAC is applied", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [63.79280090332031, 574.2643432617188, 547.32080078125, 684.9020385742188], "page": 115, "span": [0, 63], "__ref_s3_data": null}], "text": "Figure 6-17 SQL Performance Monitor showing statements and RCAC", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [136.10072326660156, 413.0294189453125, 547.119140625, 684.5394897460938], "page": 116, "span": [0, 33], "__ref_s3_data": null}], "text": "Figure 6-18 Index advice and RCAC", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [64.22953796386719, 237.27978515625, 510.0937805175781, 348.64111328125], "page": 116, "span": [0, 48], "__ref_s3_data": null}], "text": "Figure 6-19 Index advisor based on the RCAC rule", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [136.61915588378906, 262.054443359375, 491.90362548828125, 529.6680908203125], "page": 118, "span": [0, 42], "__ref_s3_data": null}], "text": "Figure 6-21 View definition and user query", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [136.2811279296875, 403.9203796386719, 508.5420227050781, 685.1424560546875], "page": 119, "span": [0, 35], "__ref_s3_data": null}], "text": "Figure 6-22 Query rewrite with RCAC", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [136.19158935546875, 391.0660705566406, 506.083740234375, 660.42138671875], "page": 122, "span": [0, 45], "__ref_s3_data": null}], "text": "Figure 6-23 Native record access with no RCAC", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [135.89947509765625, 387.1663513183594, 513.2355346679688, 660.6359252929688], "page": 123, "span": [0, 48], "__ref_s3_data": null}], "text": "Figure 6-24 Native record level access with RCAC", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [136.06109619140625, 230.63134765625, 509.6692199707031, 515.9075927734375], "page": 127, "span": [0, 54], "__ref_s3_data": null}], "text": "Figure 6-25 Object-level security and RCAC permissions", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [32.251461029052734, 553.5812377929688, 239.58355712890625, 721.334716796875], "page": 129, "span": [0, 0], "__ref_s3_data": null}], "text": "", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [136.1027374267578, 338.3410949707031, 522.8739013671875, 576.7725830078125], "page": 132, "span": [0, 48], "__ref_s3_data": null}], "text": "Figure 7-1 Restoring tables to different schemas", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [32.17782974243164, 553.691162109375, 238.9773712158203, 721.4134521484375], "page": 135, "span": [0, 0], "__ref_s3_data": null}], "text": "", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [31.834123611450195, 553.590576171875, 238.2196044921875, 721.0397338867188], "page": 137, "span": [0, 0], "__ref_s3_data": null}], "text": "", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [485.1698303222656, 737.3182983398438, 566.2962036132812, 766.7407836914062], "page": 146, "span": [0, 0], "__ref_s3_data": null}], "text": "", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [474.35540771484375, 602.1873779296875, 592.2726440429688, 711.9486694335938], "page": 146, "span": [0, 0], "__ref_s3_data": null}], "text": "", "type": "figure", "bounding-box": null}], "tables": [{"prov": [{"bbox": [136.15103149414062, 76.34722900390625, 549.8472290039062, 659.9697265625], "page": 5, "span": [0, 0], "__ref_s3_data": null}], "text": "", "type": "table", "#-cols": 2, "#-rows": 43, "data": [[{"bbox": [136.8000030517578, 650.1383666992188, 172.89404296875, 659.3513793945312], "spans": [[0, 0]], "text": "Notices", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 0, "row-header": false, "row-span": [0, 1]}, {"bbox": [175.01951599121094, 650.1383666992188, 547.1898193359375, 659.3513793945312], "spans": [[0, 1]], "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 0, "row-header": false, "row-span": [0, 1]}], [{"bbox": [136.79901123046875, 637.6585083007812, 189.86537170410156, 646.8715209960938], "spans": [[1, 0]], "text": "Trademarks", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 1, "row-header": false, "row-span": [1, 2]}, {"bbox": [195.3968505859375, 637.6585083007812, 547.182861328125, 646.8715209960938], "spans": [[1, 1]], "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 1, "row-header": false, "row-span": [1, 2]}], [{"bbox": [136.79901123046875, 615.1588745117188, 279.3973083496094, 624.3718872070312], "spans": [[2, 0]], "text": "DB2 for i Center of Excellence", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 2, "row-header": false, "row-span": [2, 3]}, {"bbox": [280.6194152832031, 615.1588745117188, 547.1907958984375, 624.3718872070312], "spans": [[2, 1]], "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 2, "row-header": false, "row-span": [2, 3]}], [{"bbox": [136.79901123046875, 592.6592407226562, 172.84423828125, 601.8722534179688], "spans": [[3, 0]], "text": "Preface", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 3, "row-header": false, "row-span": [3, 4]}, {"bbox": [175.01852416992188, 592.6592407226562, 547.182861328125, 601.8722534179688], "spans": [[3, 1]], "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 3, "row-header": false, "row-span": [3, 4]}], [{"bbox": [136.79803466796875, 580.1793823242188, 547.1808471679688, 589.3923950195312], "spans": [[4, 0]], "text": "Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 4, "row-header": false, "row-span": [4, 5]}, {"bbox": null, "spans": [[4, 1]], "text": "", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 4, "row-header": false, "row-span": [4, 5]}], [{"bbox": [136.79803466796875, 567.6397705078125, 339.18292236328125, 576.852783203125], "spans": [[5, 0]], "text": "Now you can become a published author, too!", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 5, "row-header": false, "row-span": [5, 6]}, {"bbox": [344.714111328125, 567.6397705078125, 547.1387939453125, 576.852783203125], "spans": [[5, 1]], "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 5, "row-header": false, "row-span": [5, 6]}], [{"bbox": [136.79803466796875, 555.159912109375, 529.9950561523438, 564.3729248046875], "spans": [[6, 0]], "text": "Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 6, "row-header": false, "row-span": [6, 7]}, {"bbox": [535.5494995117188, 555.159912109375, 547.1978759765625, 564.3729248046875], "spans": [[6, 1]], "text": "xiii", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 6, "row-header": false, "row-span": [6, 7]}], [{"bbox": [136.79806518554688, 542.6800537109375, 284.0286560058594, 551.89306640625], "spans": [[7, 0]], "text": "Stay connected to IBM Redbooks", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 7, "row-header": false, "row-span": [7, 8]}, {"bbox": [289.54449462890625, 542.6800537109375, 547.1211547851562, 551.89306640625], "spans": [[7, 1]], "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 7, "row-header": false, "row-span": [7, 8]}], [{"bbox": [136.79806518554688, 520.180419921875, 536.0958862304688, 529.3934326171875], "spans": [[8, 0]], "text": "Chapter 1. Securing and protecting IBM DB2 data . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 8, "row-header": false, "row-span": [8, 9]}, {"bbox": [541.6468505859375, 520.180419921875, 547.1978149414062, 529.3934326171875], "spans": [[8, 1]], "text": "1", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 8, "row-header": false, "row-span": [8, 9]}], [{"bbox": [136.79808044433594, 508.18060302734375, 549.8472290039062, 517.3936157226562], "spans": [[9, 0]], "text": "1.1 Security fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 9, "row-header": false, "row-span": [9, 10]}, {"bbox": null, "spans": [[9, 1]], "text": "", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 9, "row-header": false, "row-span": [9, 10]}], [{"bbox": [136.79806518554688, 495.6409606933594, 536.1293334960938, 504.85394287109375], "spans": [[10, 0]], "text": "1.2 Current state of IBM i security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 10, "row-header": false, "row-span": [10, 11]}, {"bbox": [541.6611328125, 495.6409606933594, 547.19287109375, 504.85394287109375], "spans": [[10, 1]], "text": "2", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 10, "row-header": false, "row-span": [10, 11]}], [{"bbox": [136.79806518554688, 483.16107177734375, 549.8472290039062, 492.3740539550781], "spans": [[11, 0]], "text": "1.3 DB2 for i security controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 11, "row-header": false, "row-span": [11, 12]}, {"bbox": null, "spans": [[11, 1]], "text": "", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 11, "row-header": false, "row-span": [11, 12]}], [{"bbox": [151.19720458984375, 470.6811828613281, 536.0551147460938, 479.8941650390625], "spans": [[12, 0]], "text": "1.3.1 Existing row and column control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 12, "row-header": false, "row-span": [12, 13]}, {"bbox": [541.6015014648438, 470.6811828613281, 547.14794921875, 479.8941650390625], "spans": [[12, 1]], "text": "4", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 12, "row-header": false, "row-span": [12, 13]}], [{"bbox": [151.19720458984375, 458.14154052734375, 536.080078125, 467.3545227050781], "spans": [[13, 0]], "text": "1.3.2 New controls: Row and Column Access Control. . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 13, "row-header": false, "row-span": [13, 14]}, {"bbox": [541.635498046875, 458.14154052734375, 547.19091796875, 467.3545227050781], "spans": [[13, 1]], "text": "5", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 13, "row-header": false, "row-span": [13, 14]}], [{"bbox": [136.7970428466797, 435.64190673828125, 536.0908813476562, 444.8548889160156], "spans": [[14, 0]], "text": "Chapter 2. Roles and separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 14, "row-header": false, "row-span": [14, 15]}, {"bbox": [541.642822265625, 435.64190673828125, 547.1947631835938, 444.8548889160156], "spans": [[14, 1]], "text": "7", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 14, "row-header": false, "row-span": [14, 15]}], [{"bbox": [136.7970428466797, 423.64208984375, 536.1271362304688, 432.8550720214844], "spans": [[15, 0]], "text": "2.1 Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 15, "row-header": false, "row-span": [15, 16]}, {"bbox": [541.6658935546875, 423.64208984375, 547.2047119140625, 432.8550720214844], "spans": [[15, 1]], "text": "8", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 15, "row-header": false, "row-span": [15, 16]}], [{"bbox": [151.19720458984375, 411.1622009277344, 535.9526977539062, 420.37518310546875], "spans": [[16, 0]], "text": "2.1.1 DDM and DRDA application server access: QIBM_DB_DDMDRDA . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 16, "row-header": false, "row-span": [16, 17]}, {"bbox": [541.5558471679688, 411.1622009277344, 547.1590576171875, 420.37518310546875], "spans": [[16, 1]], "text": "8", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 16, "row-header": false, "row-span": [16, 17]}], [{"bbox": [151.19720458984375, 398.68231201171875, 536.0410766601562, 407.8952941894531], "spans": [[17, 0]], "text": "2.1.2 Toolbox application server access: QIBM_DB_ZDA. . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 17, "row-header": false, "row-span": [17, 18]}, {"bbox": [541.595947265625, 398.68231201171875, 547.1508178710938, 407.8952941894531], "spans": [[17, 1]], "text": "8", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 17, "row-header": false, "row-span": [17, 18]}], [{"bbox": [151.19720458984375, 386.1426696777344, 536.0748901367188, 395.35565185546875], "spans": [[18, 0]], "text": "2.1.3 Database Administrator function: QIBM_DB_SQLADM . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 18, "row-header": false, "row-span": [18, 19]}, {"bbox": [541.6302490234375, 386.1426696777344, 547.1856079101562, 395.35565185546875], "spans": [[18, 1]], "text": "9", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 18, "row-header": false, "row-span": [18, 19]}], [{"bbox": [151.19720458984375, 373.66278076171875, 411.2704772949219, 382.8757629394531], "spans": [[19, 0]], "text": "2.1.4 Database Information function: QIBM_DB_SYSMON", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 19, "row-header": false, "row-span": [19, 20]}, {"bbox": [416.8177490234375, 373.66278076171875, 547.1786499023438, 382.8757629394531], "spans": [[19, 1]], "text": ". . . . . . . . . . . . . . . . . . . . . . 9", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 19, "row-header": false, "row-span": [19, 20]}], [{"bbox": [151.19720458984375, 361.1828918457031, 536.035888671875, 370.3958740234375], "spans": [[20, 0]], "text": "2.1.5 Security Administrator function: QIBM_DB_SECADM . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 20, "row-header": false, "row-span": [20, 21]}, {"bbox": [541.5989379882812, 361.1828918457031, 547.1619262695312, 370.3958740234375], "spans": [[20, 1]], "text": "9", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 20, "row-header": false, "row-span": [20, 21]}], [{"bbox": [151.19720458984375, 348.64324951171875, 530.5731811523438, 357.8562316894531], "spans": [[21, 0]], "text": "2.1.6 Change Function Usage CL command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 21, "row-header": false, "row-span": [21, 22]}, {"bbox": [536.1044311523438, 348.64324951171875, 547.1668701171875, 357.8562316894531], "spans": [[21, 1]], "text": "10", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 21, "row-header": false, "row-span": [21, 22]}], [{"bbox": [151.19720458984375, 336.1633605957031, 530.5352172851562, 345.3763427734375], "spans": [[22, 0]], "text": "2.1.7 Verifying function usage IDs for RCAC with the FUNCTION_USAGE view . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 22, "row-header": false, "row-span": [22, 23]}, {"bbox": [536.0755004882812, 336.1633605957031, 547.156005859375, 345.3763427734375], "spans": [[22, 1]], "text": "10", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 22, "row-header": false, "row-span": [22, 23]}], [{"bbox": [136.7970428466797, 323.6834716796875, 547.256591796875, 332.8964538574219], "spans": [[23, 0]], "text": "2.2 Separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 23, "row-header": false, "row-span": [23, 24]}, {"bbox": null, "spans": [[23, 1]], "text": "", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 23, "row-header": false, "row-span": [23, 24]}], [{"bbox": [136.79702758789062, 301.183837890625, 530.5396118164062, 310.3968200683594], "spans": [[24, 0]], "text": "Chapter 3. Row and Column Access Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 24, "row-header": false, "row-span": [24, 25]}, {"bbox": [536.0916748046875, 301.183837890625, 547.19580078125, 310.3968200683594], "spans": [[24, 1]], "text": "13", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 24, "row-header": false, "row-span": [24, 25]}], [{"bbox": [136.79702758789062, 289.18402099609375, 530.4808959960938, 298.3970031738281], "spans": [[25, 0]], "text": "3.1 Explanation of RCAC and the concept of access control . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 25, "row-header": false, "row-span": [25, 26]}, {"bbox": [536.04248046875, 289.18402099609375, 547.1657104492188, 298.3970031738281], "spans": [[25, 1]], "text": "14", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 25, "row-header": false, "row-span": [25, 26]}], [{"bbox": [151.1971893310547, 276.6443786621094, 378.2078552246094, 285.85736083984375], "spans": [[26, 0]], "text": "3.1.1 Row permission and column mask definitions", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 26, "row-header": false, "row-span": [26, 27]}, {"bbox": [383.74713134765625, 276.6443786621094, 547.15576171875, 285.85736083984375], "spans": [[26, 1]], "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . 14", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 26, "row-header": false, "row-span": [26, 27]}], [{"bbox": [151.1971893310547, 264.16448974609375, 530.4347534179688, 273.3774719238281], "spans": [[27, 0]], "text": "3.1.2 Enabling and activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 27, "row-header": false, "row-span": [27, 28]}, {"bbox": [535.9962158203125, 264.16448974609375, 547.1190795898438, 273.3774719238281], "spans": [[27, 1]], "text": "16", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 27, "row-header": false, "row-span": [27, 28]}], [{"bbox": [136.79702758789062, 251.6248321533203, 530.528076171875, 260.83782958984375], "spans": [[28, 0]], "text": "3.2 Special registers and built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 28, "row-header": false, "row-span": [28, 29]}, {"bbox": [536.0670166015625, 251.6248321533203, 547.1448364257812, 260.83782958984375], "spans": [[28, 1]], "text": "18", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 28, "row-header": false, "row-span": [28, 29]}], [{"bbox": [151.1971893310547, 239.14495849609375, 530.4978637695312, 248.3579559326172], "spans": [[29, 0]], "text": "3.2.1 Special registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 29, "row-header": false, "row-span": [29, 30]}, {"bbox": [536.0518798828125, 239.14495849609375, 547.159912109375, 248.3579559326172], "spans": [[29, 1]], "text": "18", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 29, "row-header": false, "row-span": [29, 30]}], [{"bbox": [151.1971893310547, 226.6650848388672, 530.5602416992188, 235.87808227539062], "spans": [[30, 0]], "text": "3.2.2 Built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 30, "row-header": false, "row-span": [30, 31]}, {"bbox": [536.09912109375, 226.6650848388672, 547.1768798828125, 235.87808227539062], "spans": [[30, 1]], "text": "19", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 30, "row-header": false, "row-span": [30, 31]}], [{"bbox": [136.79702758789062, 214.1254425048828, 530.5302734375, 223.33843994140625], "spans": [[31, 0]], "text": "3.3 VERIFY_GROUP_FOR_USER function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 31, "row-header": false, "row-span": [31, 32]}, {"bbox": [536.0615234375, 214.1254425048828, 547.1240234375, 223.33843994140625], "spans": [[31, 1]], "text": "20", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 31, "row-header": false, "row-span": [31, 32]}], [{"bbox": [136.79702758789062, 201.64556884765625, 530.6299438476562, 210.8585662841797], "spans": [[32, 0]], "text": "3.4 Establishing and controlling accessibility by using the RCAC rule text . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 32, "row-header": false, "row-span": [32, 33]}, {"bbox": [536.1631469726562, 201.64556884765625, 547.2295532226562, 210.8585662841797], "spans": [[32, 1]], "text": "21", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 32, "row-header": false, "row-span": [32, 33]}], [{"bbox": null, "spans": [[33, 0]], "text": "", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 33, "row-header": false, "row-span": [33, 34]}, {"bbox": [400.3206481933594, 189.1656951904297, 547.10009765625, 198.37869262695312], "spans": [[33, 1]], "text": ". . . . . . . . . . . . . . . . . . . . . . . . 22", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 33, "row-header": false, "row-span": [33, 34]}], [{"bbox": [136.79701232910156, 189.1656951904297, 394.78179931640625, 198.37869262695312], "spans": [[34, 0]], "text": "3.5 SELECT, INSERT, and UPDATE behavior with RCAC", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 34, "row-header": false, "row-span": [34, 35]}, {"bbox": null, "spans": [[34, 1]], "text": "", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 34, "row-header": false, "row-span": [34, 35]}], [{"bbox": [151.19717407226562, 164.14617919921875, 530.4913940429688, 173.3591766357422], "spans": [[35, 0]], "text": "3.6.1 Assigning the QIBM_DB_SECADM function ID to the consultants. . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 35, "row-header": false, "row-span": [35, 36]}, {"bbox": [536.0463256835938, 164.14617919921875, 547.1561889648438, 173.3591766357422], "spans": [[35, 1]], "text": "23", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 35, "row-header": false, "row-span": [35, 36]}], [{"bbox": [151.19717407226562, 151.6663055419922, 530.5645751953125, 160.87930297851562], "spans": [[36, 0]], "text": "3.6.2 Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 36, "row-header": false, "row-span": [36, 37]}, {"bbox": [536.0960083007812, 151.6663055419922, 547.1587524414062, 160.87930297851562], "spans": [[36, 1]], "text": "23", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 36, "row-header": false, "row-span": [36, 37]}], [{"bbox": [151.19717407226562, 139.1266632080078, 530.5569458007812, 148.33966064453125], "spans": [[37, 0]], "text": "3.6.3 Demonstrating data access without RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 37, "row-header": false, "row-span": [37, 38]}, {"bbox": [536.0881958007812, 139.1266632080078, 547.1507568359375, 148.33966064453125], "spans": [[37, 1]], "text": "24", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 37, "row-header": false, "row-span": [37, 38]}], [{"bbox": [151.19717407226562, 126.64678955078125, 530.5341186523438, 135.8597869873047], "spans": [[38, 0]], "text": "3.6.4 Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 38, "row-header": false, "row-span": [38, 39]}, {"bbox": [536.072998046875, 126.64678955078125, 547.15087890625, 135.8597869873047], "spans": [[38, 1]], "text": "25", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 38, "row-header": false, "row-span": [38, 39]}], [{"bbox": [151.19717407226562, 114.16690826416016, 339.4510498046875, 123.37991333007812], "spans": [[39, 0]], "text": "3.6.5 Defining and creating column masks", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 39, "row-header": false, "row-span": [39, 40]}, {"bbox": [344.9899597167969, 114.16690826416016, 547.160888671875, 123.37991333007812], "spans": [[39, 1]], "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 39, "row-header": false, "row-span": [39, 40]}], [{"bbox": [151.19717407226562, 101.62727355957031, 530.541015625, 110.84027099609375], "spans": [[40, 0]], "text": "3.6.6 Activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 40, "row-header": false, "row-span": [40, 41]}, {"bbox": [536.087646484375, 101.62727355957031, 547.1808471679688, 110.84027099609375], "spans": [[40, 1]], "text": "28", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 40, "row-header": false, "row-span": [40, 41]}], [{"bbox": [151.19717407226562, 89.14738464355469, 530.5750732421875, 98.36038970947266], "spans": [[41, 0]], "text": "3.6.7 Demonstrating data access with RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 41, "row-header": false, "row-span": [41, 42]}, {"bbox": [536.1066284179688, 89.14738464355469, 547.169677734375, 98.36038970947266], "spans": [[41, 1]], "text": "29", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 41, "row-header": false, "row-span": [41, 42]}], [{"bbox": [151.19717407226562, 76.6675033569336, 530.436279296875, 85.88050842285156], "spans": [[42, 0]], "text": "3.6.8 Demonstrating data access with a view and RCAC . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 42, "row-header": false, "row-span": [42, 43]}, {"bbox": [535.9984741210938, 76.6675033569336, 547.1228637695312, 85.88050842285156], "spans": [[42, 1]], "text": "32", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 42, "row-header": false, "row-span": [42, 43]}]], "model": null, "bounding-box": null}, {"prov": [{"bbox": [135.92572021484375, 57.76904296875, 547.7196044921875, 721.1874389648438], "page": 6, "span": [0, 0], "__ref_s3_data": null}], "text": "", "type": "table", "#-cols": 2, "#-rows": 47, "data": [[{"bbox": [136.8000030517578, 711.2783203125, 530.5958862304688, 720.4913330078125], "spans": [[0, 0], [0, 1]], "text": "Chapter 4. Implementing Row and Column Access Control: Banking example . . . . .", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 2], "row": 0, "row-header": true, "row-span": [0, 1]}, {"bbox": [536.1328125, 711.2783203125, 547.2067260742188, 720.4913330078125], "spans": [[0, 1]], "text": "37", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 0, "row-header": false, "row-span": [0, 1]}], [{"bbox": [136.80001831054688, 699.2785034179688, 530.5200805664062, 708.4915161132812], "spans": [[1, 0], [1, 1]], "text": "4.1 Business requirements for the RCAC banking scenario . . . . . . . . . . . . . . . . . . . . . . . .", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 2], "row": 1, "row-header": true, "row-span": [1, 2]}, {"bbox": [536.0591430664062, 699.2785034179688, 547.13720703125, 708.4915161132812], "spans": [[1, 1]], "text": "38", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 1, "row-header": false, "row-span": [1, 2]}], [{"bbox": [136.80001831054688, 686.7986450195312, 372.6776123046875, 696.0116577148438], "spans": [[2, 0], [2, 1]], "text": "4.2 Description of the users roles and responsibilities", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 2], "row": 2, "row-header": true, "row-span": [2, 3]}, {"bbox": [378.2168884277344, 686.7986450195312, 547.1648559570312, 696.0116577148438], "spans": [[2, 1]], "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . 39", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 2, "row-header": false, "row-span": [2, 3]}], [{"bbox": [136.80001831054688, 674.259033203125, 530.5362548828125, 683.4720458984375], "spans": [[3, 0], [3, 1]], "text": "4.3 Implementation of RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 2], "row": 3, "row-header": true, "row-span": [3, 4]}, {"bbox": [536.0903930664062, 674.259033203125, 547.19873046875, 683.4720458984375], "spans": [[3, 1]], "text": "42", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 3, "row-header": false, "row-span": [3, 4]}], [{"bbox": [151.20018005371094, 661.7791748046875, 400.5744323730469, 670.9921875], "spans": [[4, 0], [4, 1]], "text": "4.3.1 Reviewing the tables that are used in this example", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 2], "row": 4, "row-header": true, "row-span": [4, 5]}, {"bbox": [406.10546875, 661.7791748046875, 547.14697265625, 670.9921875], "spans": [[4, 1]], "text": ". . . . . . . . . . . . . . . . . . . . . . . 42", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 4, "row-header": false, "row-span": [4, 5]}], [{"bbox": [151.20018005371094, 649.29931640625, 516.9255981445312, 658.5123291015625], "spans": [[5, 0], [5, 1]], "text": "4.3.2 Assigning function ID QIBM_DB_SECADM to the Database Engineers group", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 2], "row": 5, "row-header": true, "row-span": [5, 6]}, {"bbox": [522.4603881835938, 649.29931640625, 547.3670654296875, 658.5123291015625], "spans": [[5, 1]], "text": ". . 47", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 5, "row-header": false, "row-span": [5, 6]}], [{"bbox": [151.20018005371094, 636.7597045898438, 530.5675659179688, 645.9727172851562], "spans": [[6, 0], [6, 1]], "text": "4.3.3 Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 2], "row": 6, "row-header": true, "row-span": [6, 7]}, {"bbox": [536.0989379882812, 636.7597045898438, 547.1617431640625, 645.9727172851562], "spans": [[6, 1]], "text": "50", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 6, "row-header": false, "row-span": [6, 7]}], [{"bbox": [151.20018005371094, 624.2798461914062, 411.620849609375, 633.4928588867188], "spans": [[7, 0], [7, 1]], "text": "4.3.4 Creating the CUSTOMER_LOGIN_ID global variable", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 2], "row": 7, "row-header": true, "row-span": [7, 8]}, {"bbox": [417.15240478515625, 624.2798461914062, 547.1438598632812, 633.4928588867188], "spans": [[7, 1]], "text": ". . . . . . . . . . . . . . . . . . . . . 52", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 7, "row-header": false, "row-span": [7, 8]}], [{"bbox": [151.20018005371094, 611.7999877929688, 530.5370483398438, 621.0130004882812], "spans": [[8, 0], [8, 1]], "text": "4.3.5 Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 2], "row": 8, "row-header": true, "row-span": [8, 9]}, {"bbox": [536.0759887695312, 611.7999877929688, 547.1538696289062, 621.0130004882812], "spans": [[8, 1]], "text": "54", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 8, "row-header": false, "row-span": [8, 9]}], [{"bbox": [151.20018005371094, 599.2603759765625, 339.45404052734375, 608.473388671875], "spans": [[9, 0], [9, 1]], "text": "4.3.6 Defining and creating column masks", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 2], "row": 9, "row-header": true, "row-span": [9, 10]}, {"bbox": [344.9929504394531, 599.2603759765625, 547.1638793945312, 608.473388671875], "spans": [[9, 1]], "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 9, "row-header": false, "row-span": [9, 10]}], [{"bbox": [151.20018005371094, 586.780517578125, 530.539306640625, 595.9935302734375], "spans": [[10, 0], [10, 1]], "text": "4.3.7 Restricting the inserting and updating of masked data . . . . . . . . . . . . . . . . . . . . .", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 2], "row": 10, "row-header": true, "row-span": [10, 11]}, {"bbox": [536.078125, 586.780517578125, 547.15576171875, 595.9935302734375], "spans": [[10, 1]], "text": "60", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 10, "row-header": false, "row-span": [10, 11]}], [{"bbox": [151.20018005371094, 561.7610473632812, 530.4820556640625, 570.9740600585938], "spans": [[11, 0], [11, 1]], "text": "4.3.9 Reviewing row permissions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 2], "row": 11, "row-header": true, "row-span": [11, 12]}, {"bbox": [536.036376953125, 561.7610473632812, 547.14501953125, 570.9740600585938], "spans": [[11, 1]], "text": "64", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 11, "row-header": false, "row-span": [11, 12]}], [{"bbox": [151.20018005371094, 549.2811889648438, 530.44921875, 558.4942016601562], "spans": [[12, 0], [12, 1]], "text": "4.3.10 Demonstrating data access with RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 2], "row": 12, "row-header": true, "row-span": [12, 13]}, {"bbox": [536.0194702148438, 549.2811889648438, 547.1600341796875, 558.4942016601562], "spans": [[12, 1]], "text": "66", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 12, "row-header": false, "row-span": [12, 13]}], [{"bbox": [151.20018005371094, 536.8013305664062, 530.4335327148438, 546.0143432617188], "spans": [[13, 0], [13, 1]], "text": "4.3.11 Query implementation with RCAC activated . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 2], "row": 13, "row-header": true, "row-span": [13, 14]}, {"bbox": [536.0037231445312, 536.8013305664062, 547.1441040039062, 546.0143432617188], "spans": [[13, 1]], "text": "75", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 13, "row-header": false, "row-span": [13, 14]}], [{"bbox": [136.80001831054688, 514.3016967773438, 530.5385131835938, 523.5147094726562], "spans": [[14, 0], [14, 1]], "text": "Chapter 5. RCAC and non-SQL interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 2], "row": 14, "row-header": true, "row-span": [14, 15]}, {"bbox": [536.0916137695312, 514.3016967773438, 547.1978149414062, 523.5147094726562], "spans": [[14, 1]], "text": "79", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 14, "row-header": false, "row-span": [14, 15]}], [{"bbox": null, "spans": [[15, 0]], "text": "", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 15, "row-header": false, "row-span": [15, 16]}, {"bbox": [156.18524169921875, 502.3018798828125, 547.1768798828125, 511.5148620605469], "spans": [[15, 1]], "text": "Unsupported interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 15, "row-header": false, "row-span": [15, 16]}], [{"bbox": [136.80001831054688, 477.2823486328125, 530.4937744140625, 486.4953308105469], "spans": [[16, 0], [16, 1]], "text": "5.3 Accidental updates with masked values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 2], "row": 16, "row-header": true, "row-span": [16, 17]}, {"bbox": [536.0474853515625, 477.2823486328125, 547.1549072265625, 486.4953308105469], "spans": [[16, 1]], "text": "81", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 16, "row-header": false, "row-span": [16, 17]}], [{"bbox": [136.80001831054688, 464.8024597167969, 530.5643310546875, 474.01544189453125], "spans": [[17, 0], [17, 1]], "text": "5.4 System CL commands considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 2], "row": 17, "row-header": true, "row-span": [17, 18]}, {"bbox": [536.0958251953125, 464.8024597167969, 547.158935546875, 474.01544189453125], "spans": [[17, 1]], "text": "82", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 17, "row-header": false, "row-span": [17, 18]}], [{"bbox": [151.20018005371094, 452.2628173828125, 530.4598999023438, 461.4757995605469], "spans": [[18, 0], [18, 1]], "text": "5.4.1 Create Duplicate Object (CRTDUPOBJ) command . . . . . . . . . . . . . . . . . . . . . . .", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 2], "row": 18, "row-header": true, "row-span": [18, 19]}, {"bbox": [536.0228271484375, 452.2628173828125, 547.148681640625, 461.4757995605469], "spans": [[18, 1]], "text": "82", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 18, "row-header": false, "row-span": [18, 19]}], [{"bbox": null, "spans": [[19, 0]], "text": "", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 19, "row-header": false, "row-span": [19, 20]}, {"bbox": [536.0770874023438, 439.7829284667969, 547.1549682617188, 448.99591064453125], "spans": [[19, 1]], "text": "82", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 19, "row-header": false, "row-span": [19, 20]}], [{"bbox": [151.20018005371094, 427.30303955078125, 530.5381469726562, 448.99591064453125], "spans": [[20, 0], [20, 1]], "text": "5.4.2 Copy File (CPYF) command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4.3 Copy Library (CPYLIB) command. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 2], "row": 20, "row-header": true, "row-span": [20, 21]}, {"bbox": [530.5494384765625, 242.7461395263672, 547.1646118164062, 251.95913696289062], "spans": [[20, 1]], "text": "100", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 20, "row-header": false, "row-span": [20, 21]}], [{"bbox": null, "spans": [[21, 0]], "text": "", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 21, "row-header": false, "row-span": [21, 22]}, {"bbox": [536.0574340820312, 427.30303955078125, 547.182861328125, 436.5160217285156], "spans": [[21, 1]], "text": "83", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 21, "row-header": false, "row-span": [21, 22]}], [{"bbox": [136.80001831054688, 404.80340576171875, 530.5385131835938, 414.0163879394531], "spans": [[22, 0], [22, 1]], "text": "Chapter 6. Additional considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 2], "row": 22, "row-header": true, "row-span": [22, 23]}, {"bbox": [400.59185791015625, 342.7645263671875, 547.1687622070312, 364.51715087890625], "spans": [[22, 1]], "text": ". . . . . . . . . . . . . . . . . . . . . . . . 89 90", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 22, "row-header": false, "row-span": [22, 23]}], [{"bbox": [136.80003356933594, 367.7840576171875, 530.5139770507812, 389.4769287109375], "spans": [[23, 0], [23, 1]], "text": "6.2 RCAC effects on data movement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 2], "row": 23, "row-header": true, "row-span": [23, 24]}, {"bbox": [136.80003356933594, 367.7840576171875, 530.5139770507812, 389.4769287109375], "spans": [[23, 0], [23, 1]], "text": "6.2 RCAC effects on data movement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "row_header", "col": 1, "col-header": false, "col-span": [0, 2], "row": 23, "row-header": true, "row-span": [23, 24]}], [{"bbox": [151.2001953125, 367.7840576171875, 400.1688232421875, 376.9970397949219], "spans": [[24, 0], [24, 1]], "text": "6.2.1 Effects when RCAC is defined on the source table", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 2], "row": 24, "row-header": true, "row-span": [24, 25]}, {"bbox": [151.2001953125, 367.7840576171875, 400.1688232421875, 376.9970397949219], "spans": [[24, 0], [24, 1]], "text": "6.2.1 Effects when RCAC is defined on the source table", "type": "row_header", "col": 1, "col-header": false, "col-span": [0, 2], "row": 24, "row-header": true, "row-span": [24, 25]}], [{"bbox": null, "spans": [[25, 0]], "text": "", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 25, "row-header": false, "row-span": [25, 26]}, {"bbox": [536.0606079101562, 367.7840576171875, 547.15380859375, 376.9970397949219], "spans": [[25, 1]], "text": "88", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 25, "row-header": false, "row-span": [25, 26]}], [{"bbox": [136.80003356933594, 330.2846374511719, 530.5997924804688, 351.9775085449219], "spans": [[26, 0], [26, 1]], "text": "6.2.3 Effects when RCAC is defined on both source and target tables . . . . . . . . . . . . . 6.3 RCAC effects on joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 2], "row": 26, "row-header": true, "row-span": [26, 27]}, {"bbox": [536.1390991210938, 330.2846374511719, 547.2177734375, 339.49761962890625], "spans": [[26, 1]], "text": "91", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 26, "row-header": false, "row-span": [26, 27]}], [{"bbox": [151.2001953125, 317.80474853515625, 547.2595825195312, 327.0177307128906], "spans": [[27, 0], [27, 1]], "text": "6.3.1 Inner joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 2], "row": 27, "row-header": true, "row-span": [27, 28]}, {"bbox": [151.2001953125, 317.80474853515625, 547.2595825195312, 327.0177307128906], "spans": [[27, 0], [27, 1]], "text": "6.3.1 Inner joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92", "type": "row_header", "col": 1, "col-header": false, "col-span": [0, 2], "row": 27, "row-header": true, "row-span": [27, 28]}], [{"bbox": [151.20016479492188, 305.2651062011719, 547.2595825195312, 314.47808837890625], "spans": [[28, 0], [28, 1]], "text": "6.3.2 Outer joins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 2], "row": 28, "row-header": true, "row-span": [28, 29]}, {"bbox": [151.20016479492188, 305.2651062011719, 547.2595825195312, 314.47808837890625], "spans": [[28, 0], [28, 1]], "text": "6.3.2 Outer joins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94", "type": "row_header", "col": 1, "col-header": false, "col-span": [0, 2], "row": 28, "row-header": true, "row-span": [28, 29]}], [{"bbox": [151.20016479492188, 292.78521728515625, 530.481201171875, 301.9981994628906], "spans": [[29, 0], [29, 1]], "text": "6.3.3 Exception joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 2], "row": 29, "row-header": true, "row-span": [29, 30]}, {"bbox": [536.051025390625, 292.78521728515625, 547.1907348632812, 301.9981994628906], "spans": [[29, 1]], "text": "96", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 29, "row-header": false, "row-span": [29, 30]}], [{"bbox": [136.8000030517578, 280.2455749511719, 372.92724609375, 289.45855712890625], "spans": [[30, 0], [30, 1]], "text": "6.4 Monitoring, analyzing, and debugging with RCAC", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 2], "row": 30, "row-header": true, "row-span": [30, 31]}, {"bbox": [536.115966796875, 280.2455749511719, 547.1796264648438, 289.45855712890625], "spans": [[30, 1]], "text": "97", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 30, "row-header": false, "row-span": [30, 31]}], [{"bbox": [378.45904541015625, 280.2455749511719, 530.5841674804688, 289.45855712890625], "spans": [[31, 0], [31, 1]], "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 2], "row": 31, "row-header": true, "row-span": [31, 32]}, {"bbox": [178.8563232421875, 267.76568603515625, 547.1707763671875, 276.9786682128906], "spans": [[31, 1]], "text": "Query monitoring and analysis tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 31, "row-header": false, "row-span": [31, 32]}], [{"bbox": [151.20016479492188, 255.28578186035156, 530.5306396484375, 264.498779296875], "spans": [[32, 0], [32, 1]], "text": "6.4.2 Index advisor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 2], "row": 32, "row-header": true, "row-span": [32, 33]}, {"bbox": [536.093017578125, 255.28578186035156, 547.2177124023438, 264.498779296875], "spans": [[32, 1]], "text": "99", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 32, "row-header": false, "row-span": [32, 33]}], [{"bbox": [151.20013427734375, 242.7461395263672, 525.0111083984375, 251.95913696289062], "spans": [[33, 0], [33, 1]], "text": "6.4.3 Metadata using catalogs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 2], "row": 33, "row-header": true, "row-span": [33, 34]}, {"bbox": [151.20013427734375, 242.7461395263672, 525.0111083984375, 251.95913696289062], "spans": [[33, 0], [33, 1]], "text": "6.4.3 Metadata using catalogs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "row_header", "col": 1, "col-header": false, "col-span": [0, 2], "row": 33, "row-header": true, "row-span": [33, 34]}], [{"bbox": [136.7999725341797, 230.26626586914062, 524.8056640625, 239.47926330566406], "spans": [[34, 0], [34, 1]], "text": "6.5 Views, materialized query tables, and query rewrite with RCAC . . . . . . . . . . . . . . . .", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 2], "row": 34, "row-header": true, "row-span": [34, 35]}, {"bbox": [530.3905029296875, 230.26626586914062, 547.14501953125, 239.47926330566406], "spans": [[34, 1]], "text": "102", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 34, "row-header": false, "row-span": [34, 35]}], [{"bbox": [151.20013427734375, 205.2467498779297, 524.8568115234375, 214.45974731445312], "spans": [[35, 0], [35, 1]], "text": "6.5.2 Materialized query tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 2], "row": 35, "row-header": true, "row-span": [35, 36]}, {"bbox": [530.4345092773438, 205.2467498779297, 547.1676635742188, 214.45974731445312], "spans": [[35, 1]], "text": "103", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 35, "row-header": false, "row-span": [35, 36]}], [{"bbox": null, "spans": [[36, 0]], "text": "", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 36, "row-header": false, "row-span": [36, 37]}, {"bbox": [530.5247192382812, 192.76687622070312, 547.1878051757812, 201.97987365722656], "spans": [[36, 1]], "text": "105", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 36, "row-header": false, "row-span": [36, 37]}], [{"bbox": [151.20013427734375, 180.28700256347656, 524.9703979492188, 201.97987365722656], "spans": [[37, 0], [37, 1]], "text": "6.5.3 Query rewrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . RCAC effects on performance and scalability. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 2], "row": 37, "row-header": true, "row-span": [37, 38]}, {"bbox": [151.20013427734375, 180.28700256347656, 524.9703979492188, 201.97987365722656], "spans": [[37, 0], [37, 1]], "text": "6.5.3 Query rewrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . RCAC effects on performance and scalability. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "row_header", "col": 1, "col-header": false, "col-span": [0, 2], "row": 37, "row-header": true, "row-span": [37, 38]}], [{"bbox": [136.7999725341797, 180.28700256347656, 150.70437622070312, 189.5], "spans": [[38, 0], [38, 1]], "text": "6.6", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 2], "row": 38, "row-header": true, "row-span": [38, 39]}, {"bbox": [530.4845581054688, 180.28700256347656, 547.1698608398438, 189.5], "spans": [[38, 1]], "text": "105", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 38, "row-header": false, "row-span": [38, 39]}], [{"bbox": null, "spans": [[39, 0]], "text": "", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 39, "row-header": false, "row-span": [39, 40]}, {"bbox": [530.43701171875, 167.7473602294922, 547.1228637695312, 176.96035766601562], "spans": [[39, 1]], "text": "107", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 39, "row-header": false, "row-span": [39, 40]}], [{"bbox": [136.7999725341797, 155.26748657226562, 525.0469970703125, 176.96035766601562], "spans": [[40, 0], [40, 1]], "text": "6.7 Exclusive lock to implement RCAC (availability issues) . . . . . . . . . . . . . . . . . . . . . . . 6.8 Avoiding propagation of masked data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 2], "row": 40, "row-header": true, "row-span": [40, 41]}, {"bbox": [530.5781860351562, 155.26748657226562, 547.1717529296875, 164.48048400878906], "spans": [[40, 1]], "text": "108", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 40, "row-header": false, "row-span": [40, 41]}], [{"bbox": null, "spans": [[41, 0]], "text": "", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 41, "row-header": false, "row-span": [41, 42]}, {"bbox": [530.4888916015625, 142.78761291503906, 547.19970703125, 152.0006103515625], "spans": [[41, 1]], "text": "108", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 41, "row-header": false, "row-span": [41, 42]}], [{"bbox": null, "spans": [[42, 0]], "text": "", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 42, "row-header": false, "row-span": [42, 43]}, {"bbox": [530.43359375, 117.7680892944336, 547.1167602539062, 126.98108673095703], "spans": [[42, 1]], "text": "109", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 42, "row-header": false, "row-span": [42, 43]}], [{"bbox": null, "spans": [[43, 0]], "text": "", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 43, "row-header": false, "row-span": [43, 44]}, {"bbox": [530.662841796875, 105.2882080078125, 547.258544921875, 114.50121307373047], "spans": [[43, 1]], "text": "109", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 43, "row-header": false, "row-span": [43, 44]}], [{"bbox": null, "spans": [[44, 0]], "text": "", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 44, "row-header": false, "row-span": [44, 45]}, {"bbox": [530.5514526367188, 57.76904296875, 547.2017211914062, 66.98204803466797], "spans": [[44, 1]], "text": "113", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 44, "row-header": false, "row-span": [44, 45]}], [{"bbox": null, "spans": [[45, 0]], "text": "", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 45, "row-header": false, "row-span": [45, 46]}, {"bbox": [530.3995361328125, 80.26868438720703, 547.1510009765625, 89.481689453125], "spans": [[45, 1]], "text": "111", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 45, "row-header": false, "row-span": [45, 46]}], [{"bbox": [136.79995727539062, 57.76904296875, 525.0014038085938, 66.98204803466797], "spans": [[46, 0], [46, 1]], "text": "Chapter 7. Row and Column Access Control management . . . . . . . . . . . . . . . . . . . .", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 2], "row": 46, "row-header": true, "row-span": [46, 47]}, {"bbox": [136.79995727539062, 57.76904296875, 525.0014038085938, 66.98204803466797], "spans": [[46, 0], [46, 1]], "text": "Chapter 7. Row and Column Access Control management . . . . . . . . . . . . . . . . . . . .", "type": "row_header", "col": 1, "col-header": false, "col-span": [0, 2], "row": 46, "row-header": true, "row-span": [46, 47]}]], "model": null, "bounding-box": null}, {"prov": [{"bbox": [135.83180236816406, 482.2618713378906, 547.9264526367188, 721.3062744140625], "page": 7, "span": [0, 0], "__ref_s3_data": null}], "text": "", "type": "table", "#-cols": 2, "#-rows": 17, "data": [[{"bbox": [136.79989624023438, 711.2779541015625, 524.9435424804688, 720.490966796875], "spans": [[0, 0]], "text": "7.1 Managing row permissions and column masks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 0, "row-header": false, "row-span": [0, 1]}, {"bbox": [530.4978637695312, 711.2779541015625, 547.1608276367188, 720.490966796875], "spans": [[0, 1]], "text": "114", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 0, "row-header": false, "row-span": [0, 1]}], [{"bbox": [151.20005798339844, 698.798095703125, 524.9487915039062, 708.0111083984375], "spans": [[1, 0]], "text": "7.1.1 Source management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 1, "row-header": false, "row-span": [1, 2]}, {"bbox": [530.510986328125, 698.798095703125, 547.1976318359375, 708.0111083984375], "spans": [[1, 1]], "text": "114", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 1, "row-header": false, "row-span": [1, 2]}], [{"bbox": [151.20005798339844, 686.2584838867188, 524.9796752929688, 695.4714965820312], "spans": [[2, 0]], "text": "7.1.2 Modifying definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 2, "row-header": false, "row-span": [2, 3]}, {"bbox": [530.5341796875, 686.2584838867188, 547.1976928710938, 695.4714965820312], "spans": [[2, 1]], "text": "114", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 2, "row-header": false, "row-span": [2, 3]}], [{"bbox": [151.20005798339844, 673.7786254882812, 525.0257568359375, 682.9916381835938], "spans": [[3, 0]], "text": "7.1.3 Turning on and off . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 3, "row-header": false, "row-span": [3, 4]}, {"bbox": [530.5559692382812, 673.7786254882812, 547.1466064453125, 682.9916381835938], "spans": [[3, 1]], "text": "114", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 3, "row-header": false, "row-span": [3, 4]}], [{"bbox": [151.20005798339844, 661.2987670898438, 238.93310546875, 670.5117797851562], "spans": [[4, 0]], "text": "7.1.4 Regenerating", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 4, "row-header": false, "row-span": [4, 5]}, {"bbox": [244.48696899414062, 661.2987670898438, 547.1724853515625, 670.5117797851562], "spans": [[4, 1]], "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 4, "row-header": false, "row-span": [4, 5]}], [{"bbox": [136.79989624023438, 648.7591552734375, 524.9177856445312, 657.97216796875], "spans": [[5, 0]], "text": "7.2 Managing tables with row permissions and column masks. . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 5, "row-header": false, "row-span": [5, 6]}, {"bbox": [530.4720458984375, 648.7591552734375, 547.134765625, 657.97216796875], "spans": [[5, 1]], "text": "115", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 5, "row-header": false, "row-span": [5, 6]}], [{"bbox": [151.20005798339844, 636.279296875, 524.933349609375, 645.4923095703125], "spans": [[6, 0]], "text": "7.2.1 Save and restore. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 6, "row-header": false, "row-span": [6, 7]}, {"bbox": [530.4951782226562, 636.279296875, 547.1807250976562, 645.4923095703125], "spans": [[6, 1]], "text": "115", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 6, "row-header": false, "row-span": [6, 7]}], [{"bbox": [151.20005798339844, 623.7994384765625, 524.9628295898438, 633.012451171875], "spans": [[7, 0]], "text": "7.2.2 Table migration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 7, "row-header": false, "row-span": [7, 8]}, {"bbox": [530.5087280273438, 623.7994384765625, 547.1466064453125, 633.012451171875], "spans": [[7, 1]], "text": "116", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 7, "row-header": false, "row-span": [7, 8]}], [{"bbox": [136.79989624023438, 611.2598266601562, 524.9552612304688, 620.4728393554688], "spans": [[8, 0]], "text": "7.3 Monitoring and auditing function usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 8, "row-header": false, "row-span": [8, 9]}, {"bbox": [530.5089111328125, 611.2598266601562, 547.1697998046875, 620.4728393554688], "spans": [[8, 1]], "text": "117", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 8, "row-header": false, "row-span": [8, 9]}], [{"bbox": [136.79989624023438, 588.7601928710938, 362.6678466796875, 597.9732055664062], "spans": [[9, 0]], "text": "Chapter 8. Designing and planning for success", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 9, "row-header": false, "row-span": [9, 10]}, {"bbox": [363.9595947265625, 588.7601928710938, 547.1986694335938, 597.9732055664062], "spans": [[9, 1]], "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 9, "row-header": false, "row-span": [9, 10]}], [{"bbox": [136.7998809814453, 576.7603759765625, 416.633056640625, 585.973388671875], "spans": [[10, 0]], "text": "8.1 Implementing RCAC with good design and proper planning", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 10, "row-header": false, "row-span": [10, 11]}, {"bbox": [422.1871643066406, 576.7603759765625, 547.1546020507812, 585.973388671875], "spans": [[10, 1]], "text": ". . . . . . . . . . . . . . . . . . . 120", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 10, "row-header": false, "row-span": [10, 11]}], [{"bbox": [136.7998809814453, 564.280517578125, 524.86376953125, 573.4935302734375], "spans": [[11, 0]], "text": "8.2 DB2 for i Center of Excellence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 11, "row-header": false, "row-span": [11, 12]}, {"bbox": [530.440185546875, 564.280517578125, 547.1694946289062, 573.4935302734375], "spans": [[11, 1]], "text": "120", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 11, "row-header": false, "row-span": [11, 12]}], [{"bbox": [136.7998809814453, 541.7808837890625, 447.0309753417969, 550.993896484375], "spans": [[12, 0]], "text": "Appendix A. Database definitions for the RCAC banking example", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 12, "row-header": false, "row-span": [12, 13]}, {"bbox": [447.35968017578125, 541.7808837890625, 547.2036743164062, 550.993896484375], "spans": [[12, 1]], "text": ". . . . . . . . . . . . . . 121", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 12, "row-header": false, "row-span": [12, 13]}], [{"bbox": [136.79989624023438, 519.7612915039062, 234.45175170898438, 528.9743041992188], "spans": [[13, 0]], "text": "Related publications", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 13, "row-header": false, "row-span": [13, 14]}, {"bbox": [236.15985107421875, 519.7612915039062, 547.1917114257812, 528.9743041992188], "spans": [[13, 1]], "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 13, "row-header": false, "row-span": [13, 14]}], [{"bbox": [136.79989624023438, 507.2814025878906, 217.75054931640625, 516.494384765625], "spans": [[14, 0]], "text": "Other publications", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 14, "row-header": false, "row-span": [14, 15]}, {"bbox": [223.33541870117188, 507.2814025878906, 547.258544921875, 516.494384765625], "spans": [[14, 1]], "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 14, "row-header": false, "row-span": [14, 15]}], [{"bbox": [136.7999267578125, 494.801513671875, 212.61610412597656, 504.0144958496094], "spans": [[15, 0]], "text": "Online resources", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 15, "row-header": false, "row-span": [15, 16]}, {"bbox": [218.1934814453125, 494.801513671875, 547.258544921875, 504.0144958496094], "spans": [[15, 1]], "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 15, "row-header": false, "row-span": [15, 16]}], [{"bbox": [136.7999267578125, 482.2618713378906, 200.54580688476562, 491.474853515625], "spans": [[16, 0]], "text": "Help from IBM", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 16, "row-header": false, "row-span": [16, 17]}, {"bbox": [206.0924072265625, 482.2618713378906, 547.2077026367188, 491.474853515625], "spans": [[16, 1]], "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 16, "row-header": false, "row-span": [16, 17]}]], "model": null, "bounding-box": null}, {"prov": [{"bbox": [135.52508544921875, 349.9494934082031, 545.87060546875, 502.2750244140625], "page": 26, "span": [0, 0], "__ref_s3_data": null}], "text": "Table 2-1 FUNCTION_USAGE view", "type": "table", "#-cols": 3, "#-rows": 5, "data": [[{"bbox": [142.8000030517578, 487.1369934082031, 202.2449951171875, 495.4620056152344], "spans": [[0, 0]], "text": "Column name", "type": "col_header", "col": 0, "col-header": true, "col-span": [0, 1], "row": 0, "row-header": false, "row-span": [0, 1]}, {"bbox": [216.8087921142578, 487.1369934082031, 257.210693359375, 495.4620056152344], "spans": [[0, 1]], "text": "Data type", "type": "col_header", "col": 1, "col-header": true, "col-span": [1, 2], "row": 0, "row-header": false, "row-span": [0, 1]}, {"bbox": [289.47479248046875, 487.1369934082031, 338.8946838378906, 495.4620056152344], "spans": [[0, 2]], "text": "Description", "type": "col_header", "col": 2, "col-header": true, "col-span": [2, 3], "row": 0, "row-header": false, "row-span": [0, 1]}], [{"bbox": [142.8000030517578, 468.1172790527344, 203.2322998046875, 476.4422912597656], "spans": [[1, 0]], "text": "FUNCTION_ID", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 1, "row-header": false, "row-span": [1, 2]}, {"bbox": [216.785400390625, 468.1172790527344, 276.00360107421875, 476.4422912597656], "spans": [[1, 1]], "text": "VARCHAR(30)", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 1, "row-header": false, "row-span": [1, 2]}, {"bbox": [289.45770263671875, 468.1172790527344, 359.85394287109375, 476.4422912597656], "spans": [[1, 2]], "text": "ID of the function.", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 1, "row-header": false, "row-span": [1, 2]}], [{"bbox": [142.8000030517578, 449.156982421875, 198.66929626464844, 457.48199462890625], "spans": [[2, 0]], "text": "USER_NAME", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 2, "row-header": false, "row-span": [2, 3]}, {"bbox": [216.74130249023438, 449.156982421875, 275.9234924316406, 457.48199462890625], "spans": [[2, 1]], "text": "VARCHAR(10)", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 2, "row-header": false, "row-span": [2, 3]}, {"bbox": [289.382080078125, 438.1166687011719, 515.0535888671875, 457.48199462890625], "spans": [[2, 2]], "text": "Name of the user profile that has a usage setting for this function.", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 2, "row-header": false, "row-span": [2, 3]}], [{"bbox": [142.79998779296875, 419.1563720703125, 173.98318481445312, 427.48138427734375], "spans": [[3, 0]], "text": "USAGE", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 3, "row-header": false, "row-span": [3, 4]}, {"bbox": [216.773681640625, 419.1563720703125, 270.9797668457031, 427.48138427734375], "spans": [[3, 1]], "text": "VARCHAR(7)", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 3, "row-header": false, "row-span": [3, 4]}, {"bbox": [289.416259765625, 397.13604736328125, 539.1071166992188, 427.48138427734375], "spans": [[3, 2]], "text": "Usage setting: GLYPH ALLOWED: The user profile is allowed to use the function. GLYPH DENIED: The user profile is not allowed to use the function.", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 3, "row-header": false, "row-span": [3, 4]}], [{"bbox": [142.8000030517578, 378.1163330078125, 196.2248992919922, 386.44134521484375], "spans": [[4, 0]], "text": "USER_TYPE", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 4, "row-header": false, "row-span": [4, 5]}, {"bbox": [216.75210571289062, 378.1163330078125, 270.99871826171875, 386.44134521484375], "spans": [[4, 1]], "text": "VARCHAR(5)", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 4, "row-header": false, "row-span": [4, 5]}, {"bbox": [289.4316101074219, 356.15631103515625, 448.11962890625, 386.44134521484375], "spans": [[4, 2]], "text": "Type of user profile: GLYPH USER: The user profile is a user. GLYPH GROUP: The user profile is a group.", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 4, "row-header": false, "row-span": [4, 5]}]], "model": null, "bounding-box": null}, {"prov": [{"bbox": [64.41139221191406, 70.39208984375, 547.3950805664062, 398.3863525390625], "page": 27, "span": [0, 0], "__ref_s3_data": null}], "text": "Table 2-2 Comparison of the different function usage IDs and *JOBCTL authority", "type": "table", "#-cols": 6, "#-rows": 13, "data": [[{"bbox": [70.80030059814453, 383.1567077636719, 119.78550720214844, 391.4817199707031], "spans": [[0, 0]], "text": "User action", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 1], "row": 0, "row-header": true, "row-span": [0, 1]}, {"bbox": [424.93804931640625, 304.9800109863281, 433.2629699707031, 344.4774475097656], "spans": [[0, 1]], "text": "*JOBCTL", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 0, "row-header": false, "row-span": [0, 1]}, {"bbox": [450.1380615234375, 304.9800109863281, 458.4629821777344, 390.3999328613281], "spans": [[0, 2]], "text": "QIBM_DB_SECADM", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 0, "row-header": false, "row-span": [0, 1]}, {"bbox": [475.9383544921875, 304.9800109863281, 484.2632751464844, 390.465576171875], "spans": [[0, 3]], "text": "QIBM_DB_SQLADM", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 0, "row-header": false, "row-span": [0, 1]}, {"bbox": [501.13836669921875, 304.9800109863281, 509.4632873535156, 390.385498046875], "spans": [[0, 4]], "text": "QIBM_DB_SYSMON", "type": "body", "col": 4, "col-header": false, "col-span": [4, 5], "row": 0, "row-header": false, "row-span": [0, 1]}, {"bbox": [526.3986206054688, 304.9799499511719, 534.7235717773438, 359.2005615234375], "spans": [[0, 5]], "text": "No Authority", "type": "body", "col": 5, "col-header": false, "col-span": [5, 6], "row": 0, "row-header": false, "row-span": [0, 1]}], [{"bbox": [70.80000305175781, 285.11700439453125, 220.1568145751953, 293.4420166015625], "spans": [[1, 0]], "text": "SET CURRENT DEGREE (SQL statement)", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 1], "row": 1, "row-header": true, "row-span": [1, 2]}, {"bbox": [429.0, 285.11700439453125, 435.00299072265625, 293.4420166015625], "spans": [[1, 1]], "text": "X", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 1, "row-header": false, "row-span": [1, 2]}, {"bbox": null, "spans": [[1, 2]], "text": "", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 1, "row-header": false, "row-span": [1, 2]}, {"bbox": [480.00030517578125, 285.11700439453125, 486.0032958984375, 293.4420166015625], "spans": [[1, 3]], "text": "X", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 1, "row-header": false, "row-span": [1, 2]}, {"bbox": null, "spans": [[1, 4]], "text": "", "type": "body", "col": 4, "col-header": false, "col-span": [4, 5], "row": 1, "row-header": false, "row-span": [1, 2]}, {"bbox": null, "spans": [[1, 5]], "text": "", "type": "body", "col": 5, "col-header": false, "col-span": [5, 6], "row": 1, "row-header": false, "row-span": [1, 2]}], [{"bbox": [70.80001831054688, 266.1567077636719, 264.5538024902344, 274.4817199707031], "spans": [[2, 0]], "text": "CHGQRYA command targeting a different user's job", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 1], "row": 2, "row-header": true, "row-span": [2, 3]}, {"bbox": [429.0000305175781, 266.1567077636719, 435.0030212402344, 274.4817199707031], "spans": [[2, 1]], "text": "X", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 2, "row-header": false, "row-span": [2, 3]}, {"bbox": null, "spans": [[2, 2]], "text": "", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 2, "row-header": false, "row-span": [2, 3]}, {"bbox": [480.0003356933594, 266.1567077636719, 486.0033264160156, 274.4817199707031], "spans": [[2, 3]], "text": "X", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 2, "row-header": false, "row-span": [2, 3]}, {"bbox": null, "spans": [[2, 4]], "text": "", "type": "body", "col": 4, "col-header": false, "col-span": [4, 5], "row": 2, "row-header": false, "row-span": [2, 3]}, {"bbox": null, "spans": [[2, 5]], "text": "", "type": "body", "col": 5, "col-header": false, "col-span": [5, 6], "row": 2, "row-header": false, "row-span": [2, 3]}], [{"bbox": [70.800048828125, 247.1370086669922, 322.5057373046875, 255.46202087402344], "spans": [[3, 0]], "text": "STRDBMON or ENDDBMON commands targeting a different user's job", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 1], "row": 3, "row-header": true, "row-span": [3, 4]}, {"bbox": [429.0000305175781, 247.1370086669922, 435.0030212402344, 255.46202087402344], "spans": [[3, 1]], "text": "X", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 3, "row-header": false, "row-span": [3, 4]}, {"bbox": null, "spans": [[3, 2]], "text": "", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 3, "row-header": false, "row-span": [3, 4]}, {"bbox": [480.0003356933594, 247.1370086669922, 486.0033264160156, 255.46202087402344], "spans": [[3, 3]], "text": "X", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 3, "row-header": false, "row-span": [3, 4]}, {"bbox": null, "spans": [[3, 4]], "text": "", "type": "body", "col": 4, "col-header": false, "col-span": [4, 5], "row": 3, "row-header": false, "row-span": [3, 4]}, {"bbox": null, "spans": [[3, 5]], "text": "", "type": "body", "col": 5, "col-header": false, "col-span": [5, 6], "row": 3, "row-header": false, "row-span": [3, 4]}], [{"bbox": [70.800048828125, 228.1173095703125, 381.0218505859375, 236.44232177734375], "spans": [[4, 0]], "text": "STRDBMON or ENDDBMON commands targeting a job that matches the current user", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 1], "row": 4, "row-header": true, "row-span": [4, 5]}, {"bbox": [429.0000305175781, 228.1173095703125, 435.0030212402344, 236.44232177734375], "spans": [[4, 1]], "text": "X", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 4, "row-header": false, "row-span": [4, 5]}, {"bbox": null, "spans": [[4, 2]], "text": "", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 4, "row-header": false, "row-span": [4, 5]}, {"bbox": [480.0003356933594, 228.1173095703125, 486.0033264160156, 236.44232177734375], "spans": [[4, 3]], "text": "X", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 4, "row-header": false, "row-span": [4, 5]}, {"bbox": [505.2606201171875, 228.1173095703125, 511.26361083984375, 236.44232177734375], "spans": [[4, 4]], "text": "X", "type": "body", "col": 4, "col-header": false, "col-span": [4, 5], "row": 4, "row-header": false, "row-span": [4, 5]}, {"bbox": [530.7603149414062, 228.1173095703125, 536.7633056640625, 236.44232177734375], "spans": [[4, 5]], "text": "X", "type": "body", "col": 5, "col-header": false, "col-span": [5, 6], "row": 4, "row-header": false, "row-span": [4, 5]}], [{"bbox": [70.800048828125, 209.15701293945312, 359.5173645019531, 217.48202514648438], "spans": [[5, 0]], "text": "QUSRJOBI() API format 900 or System i Navigator's SQL Details for Job", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 1], "row": 5, "row-header": true, "row-span": [5, 6]}, {"bbox": [429.00006103515625, 209.15701293945312, 435.0030517578125, 217.48202514648438], "spans": [[5, 1]], "text": "X", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 5, "row-header": false, "row-span": [5, 6]}, {"bbox": null, "spans": [[5, 2]], "text": "", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 5, "row-header": false, "row-span": [5, 6]}, {"bbox": [480.0003662109375, 209.15701293945312, 486.00335693359375, 217.48202514648438], "spans": [[5, 3]], "text": "X", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 5, "row-header": false, "row-span": [5, 6]}, {"bbox": [505.26068115234375, 209.15701293945312, 511.263671875, 217.48202514648438], "spans": [[5, 4]], "text": "X", "type": "body", "col": 4, "col-header": false, "col-span": [4, 5], "row": 5, "row-header": false, "row-span": [5, 6]}, {"bbox": null, "spans": [[5, 5]], "text": "", "type": "body", "col": 5, "col-header": false, "col-span": [5, 6], "row": 5, "row-header": false, "row-span": [5, 6]}], [{"bbox": [70.80007934570312, 190.13731384277344, 220.7517852783203, 198.4623260498047], "spans": [[6, 0]], "text": "Visual Explain within Run SQL scripts", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 1], "row": 6, "row-header": true, "row-span": [6, 7]}, {"bbox": [429.00006103515625, 190.13731384277344, 435.0030517578125, 198.4623260498047], "spans": [[6, 1]], "text": "X", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 6, "row-header": false, "row-span": [6, 7]}, {"bbox": null, "spans": [[6, 2]], "text": "", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 6, "row-header": false, "row-span": [6, 7]}, {"bbox": [480.0003662109375, 190.13731384277344, 486.00335693359375, 198.4623260498047], "spans": [[6, 3]], "text": "X", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 6, "row-header": false, "row-span": [6, 7]}, {"bbox": [505.26068115234375, 190.13731384277344, 511.263671875, 198.4623260498047], "spans": [[6, 4]], "text": "X", "type": "body", "col": 4, "col-header": false, "col-span": [4, 5], "row": 6, "row-header": false, "row-span": [6, 7]}, {"bbox": [530.7603759765625, 190.13731384277344, 536.7633666992188, 198.4623260498047], "spans": [[6, 5]], "text": "X", "type": "body", "col": 5, "col-header": false, "col-span": [5, 6], "row": 6, "row-header": false, "row-span": [6, 7]}], [{"bbox": [70.80007934570312, 171.11761474609375, 236.65480041503906, 179.442626953125], "spans": [[7, 0]], "text": "Visual Explain outside of Run SQL scripts", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 1], "row": 7, "row-header": true, "row-span": [7, 8]}, {"bbox": [429.00006103515625, 171.11761474609375, 435.0030517578125, 179.442626953125], "spans": [[7, 1]], "text": "X", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 7, "row-header": false, "row-span": [7, 8]}, {"bbox": null, "spans": [[7, 2]], "text": "", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 7, "row-header": false, "row-span": [7, 8]}, {"bbox": [480.0003662109375, 171.11761474609375, 486.00335693359375, 179.442626953125], "spans": [[7, 3]], "text": "X", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 7, "row-header": false, "row-span": [7, 8]}, {"bbox": null, "spans": [[7, 4]], "text": "", "type": "body", "col": 4, "col-header": false, "col-span": [4, 5], "row": 7, "row-header": false, "row-span": [7, 8]}, {"bbox": null, "spans": [[7, 5]], "text": "", "type": "body", "col": 5, "col-header": false, "col-span": [5, 6], "row": 7, "row-header": false, "row-span": [7, 8]}], [{"bbox": [70.80007934570312, 152.15731811523438, 213.1296844482422, 160.48233032226562], "spans": [[8, 0]], "text": "ANALYZE PLAN CACHE procedure", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 1], "row": 8, "row-header": true, "row-span": [8, 9]}, {"bbox": [429.00006103515625, 152.15731811523438, 435.0030517578125, 160.48233032226562], "spans": [[8, 1]], "text": "X", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 8, "row-header": false, "row-span": [8, 9]}, {"bbox": null, "spans": [[8, 2]], "text": "", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 8, "row-header": false, "row-span": [8, 9]}, {"bbox": [480.0003662109375, 152.15731811523438, 486.00335693359375, 160.48233032226562], "spans": [[8, 3]], "text": "X", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 8, "row-header": false, "row-span": [8, 9]}, {"bbox": null, "spans": [[8, 4]], "text": "", "type": "body", "col": 4, "col-header": false, "col-span": [4, 5], "row": 8, "row-header": false, "row-span": [8, 9]}, {"bbox": null, "spans": [[8, 5]], "text": "", "type": "body", "col": 5, "col-header": false, "col-span": [5, 6], "row": 8, "row-header": false, "row-span": [8, 9]}], [{"bbox": [70.80007934570312, 133.1376190185547, 199.87808227539062, 141.46263122558594], "spans": [[9, 0]], "text": "DUMP PLAN CACHE procedure", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 1], "row": 9, "row-header": true, "row-span": [9, 10]}, {"bbox": [429.00006103515625, 133.1376190185547, 435.0030517578125, 141.46263122558594], "spans": [[9, 1]], "text": "X", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 9, "row-header": false, "row-span": [9, 10]}, {"bbox": null, "spans": [[9, 2]], "text": "", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 9, "row-header": false, "row-span": [9, 10]}, {"bbox": [480.0003662109375, 133.1376190185547, 486.00335693359375, 141.46263122558594], "spans": [[9, 3]], "text": "X", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 9, "row-header": false, "row-span": [9, 10]}, {"bbox": null, "spans": [[9, 4]], "text": "", "type": "body", "col": 4, "col-header": false, "col-span": [4, 5], "row": 9, "row-header": false, "row-span": [9, 10]}, {"bbox": null, "spans": [[9, 5]], "text": "", "type": "body", "col": 5, "col-header": false, "col-span": [5, 6], "row": 9, "row-header": false, "row-span": [9, 10]}], [{"bbox": [70.80007934570312, 114.11792755126953, 208.36776733398438, 122.44291687011719], "spans": [[10, 0]], "text": "MODIFY PLAN CACHE procedure", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 1], "row": 10, "row-header": true, "row-span": [10, 11]}, {"bbox": [429.00006103515625, 114.11792755126953, 435.0030517578125, 122.44291687011719], "spans": [[10, 1]], "text": "X", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 10, "row-header": false, "row-span": [10, 11]}, {"bbox": null, "spans": [[10, 2]], "text": "", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 10, "row-header": false, "row-span": [10, 11]}, {"bbox": [480.0003662109375, 114.11792755126953, 486.00335693359375, 122.44291687011719], "spans": [[10, 3]], "text": "X", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 10, "row-header": false, "row-span": [10, 11]}, {"bbox": null, "spans": [[10, 4]], "text": "", "type": "body", "col": 4, "col-header": false, "col-span": [4, 5], "row": 10, "row-header": false, "row-span": [10, 11]}, {"bbox": null, "spans": [[10, 5]], "text": "", "type": "body", "col": 5, "col-header": false, "col-span": [5, 6], "row": 10, "row-header": false, "row-span": [10, 11]}], [{"bbox": [70.80007934570312, 95.09822845458984, 411.20263671875, 103.42323303222656], "spans": [[11, 0]], "text": "MODIFY PLAN CACHE PROPERTIES procedure (currently does not check authority)", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 1], "row": 11, "row-header": true, "row-span": [11, 12]}, {"bbox": [429.00006103515625, 95.09822845458984, 435.0030517578125, 103.42323303222656], "spans": [[11, 1]], "text": "X", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 11, "row-header": false, "row-span": [11, 12]}, {"bbox": null, "spans": [[11, 2]], "text": "", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 11, "row-header": false, "row-span": [11, 12]}, {"bbox": [480.0003662109375, 95.09822845458984, 486.00335693359375, 103.42323303222656], "spans": [[11, 3]], "text": "X", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 11, "row-header": false, "row-span": [11, 12]}, {"bbox": null, "spans": [[11, 4]], "text": "", "type": "body", "col": 4, "col-header": false, "col-span": [4, 5], "row": 11, "row-header": false, "row-span": [11, 12]}, {"bbox": null, "spans": [[11, 5]], "text": "", "type": "body", "col": 5, "col-header": false, "col-span": [5, 6], "row": 11, "row-header": false, "row-span": [11, 12]}], [{"bbox": [70.80007934570312, 76.13793182373047, 377.1258544921875, 84.46292877197266], "spans": [[12, 0]], "text": "CHANGE PLAN CACHE SIZE procedure (currently does not check authority)", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 1], "row": 12, "row-header": true, "row-span": [12, 13]}, {"bbox": [429.00006103515625, 76.13793182373047, 435.0030517578125, 84.46292877197266], "spans": [[12, 1]], "text": "X", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 12, "row-header": false, "row-span": [12, 13]}, {"bbox": null, "spans": [[12, 2]], "text": "", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 12, "row-header": false, "row-span": [12, 13]}, {"bbox": [480.0003662109375, 76.13793182373047, 486.00335693359375, 84.46292877197266], "spans": [[12, 3]], "text": "X", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 12, "row-header": false, "row-span": [12, 13]}, {"bbox": null, "spans": [[12, 4]], "text": "", "type": "body", "col": 4, "col-header": false, "col-span": [4, 5], "row": 12, "row-header": false, "row-span": [12, 13]}, {"bbox": null, "spans": [[12, 5]], "text": "", "type": "body", "col": 5, "col-header": false, "col-span": [5, 6], "row": 12, "row-header": false, "row-span": [12, 13]}]], "model": null, "bounding-box": null}, {"prov": [{"bbox": [64.12763214111328, 222.45916748046875, 547.230224609375, 721.4774780273438], "page": 28, "span": [0, 0], "__ref_s3_data": null}], "text": "", "type": "table", "#-cols": 6, "#-rows": 22, "data": [[{"bbox": [70.80136108398438, 706.1392822265625, 119.78656768798828, 714.4642333984375], "spans": [[0, 0]], "text": "User action", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 0, "row-header": false, "row-span": [0, 1]}, {"bbox": [424.93804931640625, 628.02001953125, 433.262939453125, 667.4706420898438], "spans": [[0, 1]], "text": "*JOBCTL", "type": "col_header", "col": 1, "col-header": true, "col-span": [1, 2], "row": 0, "row-header": false, "row-span": [0, 1]}, {"bbox": [450.1380615234375, 628.02001953125, 458.46295166015625, 713.3759765625], "spans": [[0, 2]], "text": "QIBM_DB_SECADM", "type": "col_header", "col": 2, "col-header": true, "col-span": [2, 3], "row": 0, "row-header": false, "row-span": [0, 1]}, {"bbox": [475.9383544921875, 628.02001953125, 484.26324462890625, 713.3759765625], "spans": [[0, 3]], "text": "QIBM_DB_SQLADM", "type": "col_header", "col": 3, "col-header": true, "col-span": [3, 4], "row": 0, "row-header": false, "row-span": [0, 1]}, {"bbox": [501.13836669921875, 628.02001953125, 509.4632568359375, 713.437255859375], "spans": [[0, 4]], "text": "QIBM_DB_SYSMON", "type": "col_header", "col": 4, "col-header": true, "col-span": [4, 5], "row": 0, "row-header": false, "row-span": [0, 1]}, {"bbox": [526.3987426757812, 628.02001953125, 534.7235107421875, 682.131591796875], "spans": [[0, 5]], "text": "No Authority", "type": "col_header", "col": 5, "col-header": true, "col-span": [5, 6], "row": 0, "row-header": false, "row-span": [0, 1]}], [{"bbox": [70.80060577392578, 608.1573486328125, 278.5827331542969, 616.4822998046875], "spans": [[1, 0]], "text": "START PLAN CACHE EVENT MONITOR procedure", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 1], "row": 1, "row-header": true, "row-span": [1, 2]}, {"bbox": [429.0005798339844, 608.1573486328125, 435.0035705566406, 616.4822998046875], "spans": [[1, 1]], "text": "X", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 1, "row-header": false, "row-span": [1, 2]}, {"bbox": null, "spans": [[1, 2]], "text": "", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 1, "row-header": false, "row-span": [1, 2]}, {"bbox": [480.0008850097656, 608.1573486328125, 486.0038757324219, 616.4822998046875], "spans": [[1, 3]], "text": "X", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 1, "row-header": false, "row-span": [1, 2]}, {"bbox": null, "spans": [[1, 4]], "text": "", "type": "body", "col": 4, "col-header": false, "col-span": [4, 5], "row": 1, "row-header": false, "row-span": [1, 2]}, {"bbox": null, "spans": [[1, 5]], "text": "", "type": "body", "col": 5, "col-header": false, "col-span": [5, 6], "row": 1, "row-header": false, "row-span": [1, 2]}], [{"bbox": [70.80059814453125, 589.1376342773438, 269.4494934082031, 597.4625854492188], "spans": [[2, 0]], "text": "END PLAN CACHE EVENT MONITOR procedure", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 1], "row": 2, "row-header": true, "row-span": [2, 3]}, {"bbox": [429.0005798339844, 589.1376342773438, 435.0035705566406, 597.4625854492188], "spans": [[2, 1]], "text": "X", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 2, "row-header": false, "row-span": [2, 3]}, {"bbox": null, "spans": [[2, 2]], "text": "", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 2, "row-header": false, "row-span": [2, 3]}, {"bbox": [480.0008850097656, 589.1376342773438, 486.0038757324219, 597.4625854492188], "spans": [[2, 3]], "text": "X", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 2, "row-header": false, "row-span": [2, 3]}, {"bbox": null, "spans": [[2, 4]], "text": "", "type": "body", "col": 4, "col-header": false, "col-span": [4, 5], "row": 2, "row-header": false, "row-span": [2, 3]}, {"bbox": null, "spans": [[2, 5]], "text": "", "type": "body", "col": 5, "col-header": false, "col-span": [5, 6], "row": 2, "row-header": false, "row-span": [2, 3]}], [{"bbox": [70.80059814453125, 570.117919921875, 293.976318359375, 578.44287109375], "spans": [[3, 0]], "text": "END ALL PLAN CACHE EVENT MONITORS procedure", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 1], "row": 3, "row-header": true, "row-span": [3, 4]}, {"bbox": [429.0005798339844, 570.117919921875, 435.0035705566406, 578.44287109375], "spans": [[3, 1]], "text": "X", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 3, "row-header": false, "row-span": [3, 4]}, {"bbox": null, "spans": [[3, 2]], "text": "", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 3, "row-header": false, "row-span": [3, 4]}, {"bbox": [480.0008850097656, 570.117919921875, 486.0038757324219, 578.44287109375], "spans": [[3, 3]], "text": "X", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 3, "row-header": false, "row-span": [3, 4]}, {"bbox": null, "spans": [[3, 4]], "text": "", "type": "body", "col": 4, "col-header": false, "col-span": [4, 5], "row": 3, "row-header": false, "row-span": [3, 4]}, {"bbox": null, "spans": [[3, 5]], "text": "", "type": "body", "col": 5, "col-header": false, "col-span": [5, 6], "row": 3, "row-header": false, "row-span": [3, 4]}], [{"bbox": [70.80059814453125, 551.1575927734375, 311.2257385253906, 559.4825439453125], "spans": [[4, 0]], "text": "Work with RCAC row permissions (Create, modify, or delete)", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 1], "row": 4, "row-header": true, "row-span": [4, 5]}, {"bbox": null, "spans": [[4, 1]], "text": "", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 4, "row-header": false, "row-span": [4, 5]}, {"bbox": [454.50030517578125, 551.1575927734375, 460.5032958984375, 559.4825439453125], "spans": [[4, 2]], "text": "X", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 4, "row-header": false, "row-span": [4, 5]}, {"bbox": null, "spans": [[4, 3]], "text": "", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 4, "row-header": false, "row-span": [4, 5]}, {"bbox": null, "spans": [[4, 4]], "text": "", "type": "body", "col": 4, "col-header": false, "col-span": [4, 5], "row": 4, "row-header": false, "row-span": [4, 5]}, {"bbox": null, "spans": [[4, 5]], "text": "", "type": "body", "col": 5, "col-header": false, "col-span": [5, 6], "row": 4, "row-header": false, "row-span": [4, 5]}], [{"bbox": [70.80059814453125, 532.1378784179688, 303.5882873535156, 540.4628295898438], "spans": [[5, 0]], "text": "Work with RCAC column masks (Create, modify, or delete)", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 1], "row": 5, "row-header": true, "row-span": [5, 6]}, {"bbox": null, "spans": [[5, 1]], "text": "", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 5, "row-header": false, "row-span": [5, 6]}, {"bbox": [454.50030517578125, 532.1378784179688, 460.5032958984375, 540.4628295898438], "spans": [[5, 2]], "text": "X", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 5, "row-header": false, "row-span": [5, 6]}, {"bbox": null, "spans": [[5, 3]], "text": "", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 5, "row-header": false, "row-span": [5, 6]}, {"bbox": null, "spans": [[5, 4]], "text": "", "type": "body", "col": 4, "col-header": false, "col-span": [4, 5], "row": 5, "row-header": false, "row-span": [5, 6]}, {"bbox": null, "spans": [[5, 5]], "text": "", "type": "body", "col": 5, "col-header": false, "col-span": [5, 6], "row": 5, "row-header": false, "row-span": [5, 6]}], [{"bbox": [70.80059814453125, 513.1181640625, 264.57958984375, 521.443115234375], "spans": [[6, 0]], "text": "Change Object Owner ( CHGOBJOWN ) CL command", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 1], "row": 6, "row-header": true, "row-span": [6, 7]}, {"bbox": null, "spans": [[6, 1]], "text": "", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 6, "row-header": false, "row-span": [6, 7]}, {"bbox": [454.50030517578125, 513.1181640625, 460.5032958984375, 521.443115234375], "spans": [[6, 2]], "text": "X", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 6, "row-header": false, "row-span": [6, 7]}, {"bbox": null, "spans": [[6, 3]], "text": "", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 6, "row-header": false, "row-span": [6, 7]}, {"bbox": null, "spans": [[6, 4]], "text": "", "type": "body", "col": 4, "col-header": false, "col-span": [4, 5], "row": 6, "row-header": false, "row-span": [6, 7]}, {"bbox": null, "spans": [[6, 5]], "text": "", "type": "body", "col": 5, "col-header": false, "col-span": [5, 6], "row": 6, "row-header": false, "row-span": [6, 7]}], [{"bbox": [70.80059814453125, 494.1578369140625, 299.39697265625, 502.48284912109375], "spans": [[7, 0]], "text": "Change Object Primary Group ( CHGOBJPGP ) CL command", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 1], "row": 7, "row-header": true, "row-span": [7, 8]}, {"bbox": null, "spans": [[7, 1]], "text": "", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 7, "row-header": false, "row-span": [7, 8]}, {"bbox": [454.50030517578125, 494.1578369140625, 460.5032958984375, 502.48284912109375], "spans": [[7, 2]], "text": "X", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 7, "row-header": false, "row-span": [7, 8]}, {"bbox": null, "spans": [[7, 3]], "text": "", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 7, "row-header": false, "row-span": [7, 8]}, {"bbox": null, "spans": [[7, 4]], "text": "", "type": "body", "col": 4, "col-header": false, "col-span": [4, 5], "row": 7, "row-header": false, "row-span": [7, 8]}, {"bbox": null, "spans": [[7, 5]], "text": "", "type": "body", "col": 5, "col-header": false, "col-span": [5, 6], "row": 7, "row-header": false, "row-span": [7, 8]}], [{"bbox": [70.80059814453125, 475.13812255859375, 266.843994140625, 483.463134765625], "spans": [[8, 0]], "text": "Grant Object Authority ( GRTOBJAUT ) CL command", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 1], "row": 8, "row-header": true, "row-span": [8, 9]}, {"bbox": null, "spans": [[8, 1]], "text": "", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 8, "row-header": false, "row-span": [8, 9]}, {"bbox": [454.5002746582031, 475.13812255859375, 460.5032653808594, 483.463134765625], "spans": [[8, 2]], "text": "X", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 8, "row-header": false, "row-span": [8, 9]}, {"bbox": null, "spans": [[8, 3]], "text": "", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 8, "row-header": false, "row-span": [8, 9]}, {"bbox": null, "spans": [[8, 4]], "text": "", "type": "body", "col": 4, "col-header": false, "col-span": [4, 5], "row": 8, "row-header": false, "row-span": [8, 9]}, {"bbox": null, "spans": [[8, 5]], "text": "", "type": "body", "col": 5, "col-header": false, "col-span": [5, 6], "row": 8, "row-header": false, "row-span": [8, 9]}], [{"bbox": [70.80056762695312, 456.118408203125, 271.78857421875, 464.44342041015625], "spans": [[9, 0]], "text": "Revoke Object Authority ( RVKOBJAUT ) CL command", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 1], "row": 9, "row-header": true, "row-span": [9, 10]}, {"bbox": null, "spans": [[9, 1]], "text": "", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 9, "row-header": false, "row-span": [9, 10]}, {"bbox": [454.500244140625, 456.118408203125, 460.50323486328125, 464.44342041015625], "spans": [[9, 2]], "text": "X", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 9, "row-header": false, "row-span": [9, 10]}, {"bbox": null, "spans": [[9, 3]], "text": "", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 9, "row-header": false, "row-span": [9, 10]}, {"bbox": null, "spans": [[9, 4]], "text": "", "type": "body", "col": 4, "col-header": false, "col-span": [4, 5], "row": 9, "row-header": false, "row-span": [9, 10]}, {"bbox": null, "spans": [[9, 5]], "text": "", "type": "body", "col": 5, "col-header": false, "col-span": [5, 6], "row": 9, "row-header": false, "row-span": [9, 10]}], [{"bbox": [70.800537109375, 437.1581115722656, 257.3543395996094, 445.4831237792969], "spans": [[10, 0]], "text": "Edit Object Authority ( EDTOBJAUT ) CL command", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 1], "row": 10, "row-header": true, "row-span": [10, 11]}, {"bbox": null, "spans": [[10, 1]], "text": "", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 10, "row-header": false, "row-span": [10, 11]}, {"bbox": [454.500244140625, 437.1581115722656, 460.50323486328125, 445.4831237792969], "spans": [[10, 2]], "text": "X", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 10, "row-header": false, "row-span": [10, 11]}, {"bbox": null, "spans": [[10, 3]], "text": "", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 10, "row-header": false, "row-span": [10, 11]}, {"bbox": null, "spans": [[10, 4]], "text": "", "type": "body", "col": 4, "col-header": false, "col-span": [4, 5], "row": 10, "row-header": false, "row-span": [10, 11]}, {"bbox": null, "spans": [[10, 5]], "text": "", "type": "body", "col": 5, "col-header": false, "col-span": [5, 6], "row": 10, "row-header": false, "row-span": [10, 11]}], [{"bbox": [70.800537109375, 418.1383972167969, 271.1882629394531, 426.4634094238281], "spans": [[11, 0]], "text": "Display Object Authority ( DSPOBJAUT ) CL command", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 1], "row": 11, "row-header": true, "row-span": [11, 12]}, {"bbox": null, "spans": [[11, 1]], "text": "", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 11, "row-header": false, "row-span": [11, 12]}, {"bbox": [454.500244140625, 418.1383972167969, 460.50323486328125, 426.4634094238281], "spans": [[11, 2]], "text": "X", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 11, "row-header": false, "row-span": [11, 12]}, {"bbox": null, "spans": [[11, 3]], "text": "", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 11, "row-header": false, "row-span": [11, 12]}, {"bbox": null, "spans": [[11, 4]], "text": "", "type": "body", "col": 4, "col-header": false, "col-span": [4, 5], "row": 11, "row-header": false, "row-span": [11, 12]}, {"bbox": null, "spans": [[11, 5]], "text": "", "type": "body", "col": 5, "col-header": false, "col-span": [5, 6], "row": 11, "row-header": false, "row-span": [11, 12]}], [{"bbox": [70.800537109375, 399.1186828613281, 237.0242462158203, 407.4436950683594], "spans": [[12, 0]], "text": "Work with Objects ( WRKOBJ ) CL command", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 1], "row": 12, "row-header": true, "row-span": [12, 13]}, {"bbox": null, "spans": [[12, 1]], "text": "", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 12, "row-header": false, "row-span": [12, 13]}, {"bbox": [454.500244140625, 399.1186828613281, 460.50323486328125, 407.4436950683594], "spans": [[12, 2]], "text": "X", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 12, "row-header": false, "row-span": [12, 13]}, {"bbox": null, "spans": [[12, 3]], "text": "", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 12, "row-header": false, "row-span": [12, 13]}, {"bbox": null, "spans": [[12, 4]], "text": "", "type": "body", "col": 4, "col-header": false, "col-span": [4, 5], "row": 12, "row-header": false, "row-span": [12, 13]}, {"bbox": null, "spans": [[12, 5]], "text": "", "type": "body", "col": 5, "col-header": false, "col-span": [5, 6], "row": 12, "row-header": false, "row-span": [12, 13]}], [{"bbox": [70.800537109375, 380.15838623046875, 238.51824951171875, 388.4833984375], "spans": [[13, 0]], "text": "Work with Libraries ( WRKLIB ) CL command", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 1], "row": 13, "row-header": true, "row-span": [13, 14]}, {"bbox": null, "spans": [[13, 1]], "text": "", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 13, "row-header": false, "row-span": [13, 14]}, {"bbox": [454.5011291503906, 380.15838623046875, 460.5041198730469, 388.4833984375], "spans": [[13, 2]], "text": "X", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 13, "row-header": false, "row-span": [13, 14]}, {"bbox": null, "spans": [[13, 3]], "text": "", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 13, "row-header": false, "row-span": [13, 14]}, {"bbox": null, "spans": [[13, 4]], "text": "", "type": "body", "col": 4, "col-header": false, "col-span": [4, 5], "row": 13, "row-header": false, "row-span": [13, 14]}, {"bbox": null, "spans": [[13, 5]], "text": "", "type": "body", "col": 5, "col-header": false, "col-span": [5, 6], "row": 13, "row-header": false, "row-span": [13, 14]}], [{"bbox": [70.80142211914062, 361.138671875, 284.7251281738281, 369.46368408203125], "spans": [[14, 0]], "text": "Add Authorization List Entry ( ADDAUTLE ) CL command", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 1], "row": 14, "row-header": true, "row-span": [14, 15]}, {"bbox": null, "spans": [[14, 1]], "text": "", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 14, "row-header": false, "row-span": [14, 15]}, {"bbox": [454.5010986328125, 361.138671875, 460.50408935546875, 369.46368408203125], "spans": [[14, 2]], "text": "X", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 14, "row-header": false, "row-span": [14, 15]}, {"bbox": null, "spans": [[14, 3]], "text": "", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 14, "row-header": false, "row-span": [14, 15]}, {"bbox": null, "spans": [[14, 4]], "text": "", "type": "body", "col": 4, "col-header": false, "col-span": [4, 5], "row": 14, "row-header": false, "row-span": [14, 15]}, {"bbox": null, "spans": [[14, 5]], "text": "", "type": "body", "col": 5, "col-header": false, "col-span": [5, 6], "row": 14, "row-header": false, "row-span": [14, 15]}], [{"bbox": [70.8013916015625, 342.11895751953125, 297.70037841796875, 350.4439697265625], "spans": [[15, 0]], "text": "Change Authorization List Entry ( CHGAUTLE ) CL command", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 1], "row": 15, "row-header": true, "row-span": [15, 16]}, {"bbox": null, "spans": [[15, 1]], "text": "", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 15, "row-header": false, "row-span": [15, 16]}, {"bbox": [454.5010986328125, 342.11895751953125, 460.50408935546875, 350.4439697265625], "spans": [[15, 2]], "text": "X", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 15, "row-header": false, "row-span": [15, 16]}, {"bbox": null, "spans": [[15, 3]], "text": "", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 15, "row-header": false, "row-span": [15, 16]}, {"bbox": null, "spans": [[15, 4]], "text": "", "type": "body", "col": 4, "col-header": false, "col-span": [4, 5], "row": 15, "row-header": false, "row-span": [15, 16]}, {"bbox": null, "spans": [[15, 5]], "text": "", "type": "body", "col": 5, "col-header": false, "col-span": [5, 6], "row": 15, "row-header": false, "row-span": [15, 16]}], [{"bbox": [70.8013916015625, 323.1586608886719, 299.32037353515625, 331.4836730957031], "spans": [[16, 0]], "text": "Remove Authorization List Entry ( RMVAUTLE ) CL command", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 1], "row": 16, "row-header": true, "row-span": [16, 17]}, {"bbox": null, "spans": [[16, 1]], "text": "", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 16, "row-header": false, "row-span": [16, 17]}, {"bbox": [454.5010986328125, 323.1586608886719, 460.50408935546875, 331.4836730957031], "spans": [[16, 2]], "text": "X", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 16, "row-header": false, "row-span": [16, 17]}, {"bbox": null, "spans": [[16, 3]], "text": "", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 16, "row-header": false, "row-span": [16, 17]}, {"bbox": null, "spans": [[16, 4]], "text": "", "type": "body", "col": 4, "col-header": false, "col-span": [4, 5], "row": 16, "row-header": false, "row-span": [16, 17]}, {"bbox": null, "spans": [[16, 5]], "text": "", "type": "body", "col": 5, "col-header": false, "col-span": [5, 6], "row": 16, "row-header": false, "row-span": [16, 17]}], [{"bbox": [70.8013916015625, 304.1389465332031, 299.32037353515625, 312.4639587402344], "spans": [[17, 0]], "text": "Retrieve Authorization List Entry ( RTVAUTLE ) CL command", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 1], "row": 17, "row-header": true, "row-span": [17, 18]}, {"bbox": null, "spans": [[17, 1]], "text": "", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 17, "row-header": false, "row-span": [17, 18]}, {"bbox": [454.5010986328125, 304.1389465332031, 460.50408935546875, 312.4639587402344], "spans": [[17, 2]], "text": "X", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 17, "row-header": false, "row-span": [17, 18]}, {"bbox": null, "spans": [[17, 3]], "text": "", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 17, "row-header": false, "row-span": [17, 18]}, {"bbox": null, "spans": [[17, 4]], "text": "", "type": "body", "col": 4, "col-header": false, "col-span": [4, 5], "row": 17, "row-header": false, "row-span": [17, 18]}, {"bbox": null, "spans": [[17, 5]], "text": "", "type": "body", "col": 5, "col-header": false, "col-span": [5, 6], "row": 17, "row-header": false, "row-span": [17, 18]}], [{"bbox": [70.8013916015625, 285.1192321777344, 269.78509521484375, 293.4442443847656], "spans": [[18, 0]], "text": "Display Authorization List ( DSPAUTL ) CL command", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 1], "row": 18, "row-header": true, "row-span": [18, 19]}, {"bbox": null, "spans": [[18, 1]], "text": "", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 18, "row-header": false, "row-span": [18, 19]}, {"bbox": [454.5010986328125, 285.1192321777344, 460.50408935546875, 293.4442443847656], "spans": [[18, 2]], "text": "X", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 18, "row-header": false, "row-span": [18, 19]}, {"bbox": null, "spans": [[18, 3]], "text": "", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 18, "row-header": false, "row-span": [18, 19]}, {"bbox": null, "spans": [[18, 4]], "text": "", "type": "body", "col": 4, "col-header": false, "col-span": [4, 5], "row": 18, "row-header": false, "row-span": [18, 19]}, {"bbox": null, "spans": [[18, 5]], "text": "", "type": "body", "col": 5, "col-header": false, "col-span": [5, 6], "row": 18, "row-header": false, "row-span": [18, 19]}], [{"bbox": [70.8013916015625, 266.158935546875, 313.63848876953125, 274.48394775390625], "spans": [[19, 0]], "text": "Display Authorization List Objects ( DSPAUTLOBJ ) CL command", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 1], "row": 19, "row-header": true, "row-span": [19, 20]}, {"bbox": null, "spans": [[19, 1]], "text": "", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 19, "row-header": false, "row-span": [19, 20]}, {"bbox": [454.5010986328125, 266.158935546875, 460.50408935546875, 274.48394775390625], "spans": [[19, 2]], "text": "X", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 19, "row-header": false, "row-span": [19, 20]}, {"bbox": null, "spans": [[19, 3]], "text": "", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 19, "row-header": false, "row-span": [19, 20]}, {"bbox": null, "spans": [[19, 4]], "text": "", "type": "body", "col": 4, "col-header": false, "col-span": [4, 5], "row": 19, "row-header": false, "row-span": [19, 20]}, {"bbox": null, "spans": [[19, 5]], "text": "", "type": "body", "col": 5, "col-header": false, "col-span": [5, 6], "row": 19, "row-header": false, "row-span": [19, 20]}], [{"bbox": [70.8013916015625, 247.1392364501953, 253.48878479003906, 255.46424865722656], "spans": [[20, 0]], "text": "Edit Authorization List ( EDTAUTL ) CL command", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 1], "row": 20, "row-header": true, "row-span": [20, 21]}, {"bbox": null, "spans": [[20, 1]], "text": "", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 20, "row-header": false, "row-span": [20, 21]}, {"bbox": [454.5010681152344, 247.1392364501953, 460.5040588378906, 255.46424865722656], "spans": [[20, 2]], "text": "X", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 20, "row-header": false, "row-span": [20, 21]}, {"bbox": null, "spans": [[20, 3]], "text": "", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 20, "row-header": false, "row-span": [20, 21]}, {"bbox": null, "spans": [[20, 4]], "text": "", "type": "body", "col": 4, "col-header": false, "col-span": [4, 5], "row": 20, "row-header": false, "row-span": [20, 21]}, {"bbox": null, "spans": [[20, 5]], "text": "", "type": "body", "col": 5, "col-header": false, "col-span": [5, 6], "row": 20, "row-header": false, "row-span": [20, 21]}], [{"bbox": [70.80136108398438, 228.11953735351562, 281.80908203125, 236.44454956054688], "spans": [[21, 0]], "text": "Work with Authorization Lists ( WRKAUTL ) CL command", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 1], "row": 21, "row-header": true, "row-span": [21, 22]}, {"bbox": null, "spans": [[21, 1]], "text": "", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 21, "row-header": false, "row-span": [21, 22]}, {"bbox": [454.5010681152344, 228.11953735351562, 460.5040588378906, 236.44454956054688], "spans": [[21, 2]], "text": "X", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 21, "row-header": false, "row-span": [21, 22]}, {"bbox": null, "spans": [[21, 3]], "text": "", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 21, "row-header": false, "row-span": [21, 22]}, {"bbox": null, "spans": [[21, 4]], "text": "", "type": "body", "col": 4, "col-header": false, "col-span": [4, 5], "row": 21, "row-header": false, "row-span": [21, 22]}, {"bbox": null, "spans": [[21, 5]], "text": "", "type": "body", "col": 5, "col-header": false, "col-span": [5, 6], "row": 21, "row-header": false, "row-span": [21, 22]}]], "model": null, "bounding-box": null}, {"prov": [{"bbox": [134.54624938964844, 587.7283935546875, 542.0460815429688, 688.5811157226562], "page": 35, "span": [0, 0], "__ref_s3_data": null}], "text": "Table 3-1 Special registers and their corresponding values", "type": "table", "#-cols": 2, "#-rows": 4, "data": [[{"bbox": [142.8000030517578, 673.1370239257812, 209.67091369628906, 681.4619750976562], "spans": [[0, 0]], "text": "Special register", "type": "col_header", "col": 0, "col-header": true, "col-span": [0, 1], "row": 0, "row-header": false, "row-span": [0, 1]}, {"bbox": [230.18911743164062, 673.1370239257812, 319.9352722167969, 681.4619750976562], "spans": [[0, 1]], "text": "Corresponding value", "type": "col_header", "col": 1, "col-header": true, "col-span": [1, 2], "row": 0, "row-header": false, "row-span": [0, 1]}], [{"bbox": [142.80001831054688, 643.1364135742188, 212.7012176513672, 662.5016479492188], "spans": [[1, 0]], "text": "USER or SESSION_USER", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 1, "row-header": false, "row-span": [1, 2]}, {"bbox": [230.2197265625, 654.1766967773438, 467.9906921386719, 662.5016479492188], "spans": [[1, 1]], "text": "The effective user of the thread excluding adopted authority.", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 1, "row-header": false, "row-span": [1, 2]}], [{"bbox": [142.80003356933594, 624.11669921875, 216.63963317871094, 632.441650390625], "spans": [[2, 0]], "text": "CURRENT_USER", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 2, "row-header": false, "row-span": [2, 3]}, {"bbox": [230.19813537597656, 613.13671875, 535.6508178710938, 632.441650390625], "spans": [[2, 1]], "text": "The effective user of the thread including adopted authority. When no adopted authority is present, this has the same value as USER.", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 2, "row-header": false, "row-span": [2, 3]}], [{"bbox": [142.8009033203125, 594.1170043945312, 209.73570251464844, 602.4419555664062], "spans": [[3, 0]], "text": "SYSTEM_USER", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 3, "row-header": false, "row-span": [3, 4]}, {"bbox": [230.24490356445312, 594.1170043945312, 425.64569091796875, 602.4419555664062], "spans": [[3, 1]], "text": "The authorization ID that initiated the connection.", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 3, "row-header": false, "row-span": [3, 4]}]], "model": null, "bounding-box": null}, {"prov": [{"bbox": [63.556331634521484, 495.7753601074219, 548.5687255859375, 687.76611328125], "page": 36, "span": [0, 0], "__ref_s3_data": null}], "text": "Table 3-2 Built-in global variables", "type": "table", "#-cols": 3, "#-rows": 10, "data": [[{"bbox": [70.80000305175781, 673.1370239257812, 134.99070739746094, 681.4619750976562], "spans": [[0, 0]], "text": "Global variable", "type": "col_header", "col": 0, "col-header": true, "col-span": [0, 1], "row": 0, "row-header": false, "row-span": [0, 1]}, {"bbox": [202.889404296875, 673.1370239257812, 223.34640502929688, 681.4619750976562], "spans": [[0, 1]], "text": "Type", "type": "col_header", "col": 1, "col-header": true, "col-span": [1, 2], "row": 0, "row-header": false, "row-span": [0, 1]}, {"bbox": [281.8247985839844, 673.1370239257812, 331.3428039550781, 681.4619750976562], "spans": [[0, 2]], "text": "Description", "type": "col_header", "col": 2, "col-header": true, "col-span": [2, 3], "row": 0, "row-header": false, "row-span": [0, 1]}], [{"bbox": [70.80000305175781, 654.1766967773438, 132.7209014892578, 662.5016479492188], "spans": [[1, 0]], "text": "CLIENT_HOST", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 1, "row-header": false, "row-span": [1, 2]}, {"bbox": [202.89028930664062, 654.1766967773438, 267.0765075683594, 662.5016479492188], "spans": [[1, 1]], "text": "VARCHAR(255)", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 1, "row-header": false, "row-span": [1, 2]}, {"bbox": [281.8473205566406, 654.1766967773438, 510.17547607421875, 662.5016479492188], "spans": [[1, 2]], "text": "Host name of the current client as returned by the system", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 1, "row-header": false, "row-span": [1, 2]}], [{"bbox": [70.80001831054688, 635.156982421875, 140.66522216796875, 643.48193359375], "spans": [[2, 0]], "text": "CLIENT_IPADDR", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 2, "row-header": false, "row-span": [2, 3]}, {"bbox": [202.872314453125, 635.156982421875, 267.077392578125, 643.48193359375], "spans": [[2, 1]], "text": "VARCHAR(128)", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 2, "row-header": false, "row-span": [2, 3]}, {"bbox": [281.8454895019531, 635.156982421875, 509.6058349609375, 643.48193359375], "spans": [[2, 2]], "text": "IP address of the current client as returned by the system", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 2, "row-header": false, "row-span": [2, 3]}], [{"bbox": [70.80001831054688, 616.1372680664062, 134.98263549804688, 624.4622192382812], "spans": [[3, 0]], "text": "CLIENT_PORT", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 3, "row-header": false, "row-span": [3, 4]}, {"bbox": [202.90293884277344, 616.1372680664062, 242.80084228515625, 624.4622192382812], "spans": [[3, 1]], "text": "INTEGER", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 3, "row-header": false, "row-span": [3, 4]}, {"bbox": [281.7978515625, 616.1372680664062, 527.5922241210938, 624.4622192382812], "spans": [[3, 2]], "text": "Port used by the current client to communicate with the server", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 3, "row-header": false, "row-span": [3, 4]}], [{"bbox": [70.80001831054688, 597.1175537109375, 143.50924682617188, 605.4425048828125], "spans": [[4, 0]], "text": "PACKAGE_NAME", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 4, "row-header": false, "row-span": [4, 5]}, {"bbox": [202.80575561523438, 597.1175537109375, 267.0693664550781, 605.4425048828125], "spans": [[4, 1]], "text": "VARCHAR(128)", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 4, "row-header": false, "row-span": [4, 5]}, {"bbox": [281.85186767578125, 597.1175537109375, 436.5726013183594, 605.4425048828125], "spans": [[4, 2]], "text": "Name of the currently running package", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 4, "row-header": false, "row-span": [4, 5]}], [{"bbox": [70.80001831054688, 578.1572265625, 156.01654052734375, 586.482177734375], "spans": [[5, 0]], "text": "PACKAGE_SCHEMA", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 5, "row-header": false, "row-span": [5, 6]}, {"bbox": [202.83544921875, 578.1572265625, 267.0864562988281, 586.482177734375], "spans": [[5, 1]], "text": "VARCHAR(128)", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 5, "row-header": false, "row-span": [5, 6]}, {"bbox": [281.8707580566406, 578.1572265625, 470.44677734375, 586.482177734375], "spans": [[5, 2]], "text": "Schema name of the currently running package", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 5, "row-header": false, "row-span": [5, 6]}], [{"bbox": [70.80001831054688, 559.1375122070312, 157.89932250976562, 567.4624633789062], "spans": [[6, 0]], "text": "PACKAGE_VERSION", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 6, "row-header": false, "row-span": [6, 7]}, {"bbox": [202.72471618652344, 559.1375122070312, 261.9825439453125, 567.4624633789062], "spans": [[6, 1]], "text": "VARCHAR(64)", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 6, "row-header": false, "row-span": [6, 7]}, {"bbox": [281.7492370605469, 559.1375122070312, 478.84381103515625, 567.4624633789062], "spans": [[6, 2]], "text": "Version identifier of the currently running package", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 6, "row-header": false, "row-span": [6, 7]}], [{"bbox": [70.80001831054688, 540.1177978515625, 154.419921875, 548.4427490234375], "spans": [[7, 0]], "text": "ROUTINE_SCHEMA", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 7, "row-header": false, "row-span": [7, 8]}, {"bbox": [202.79312133789062, 540.1177978515625, 267.0927429199219, 548.4427490234375], "spans": [[7, 1]], "text": "VARCHAR(128)", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 7, "row-header": false, "row-span": [7, 8]}, {"bbox": [281.87164306640625, 540.1177978515625, 464.2602233886719, 548.4427490234375], "spans": [[7, 2]], "text": "Schema name of the currently running routine", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 7, "row-header": false, "row-span": [7, 8]}], [{"bbox": [70.80001831054688, 521.157470703125, 188.43991088867188, 529.482421875], "spans": [[8, 0]], "text": "ROUTINE_SPECIFIC_NAME", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 8, "row-header": false, "row-span": [8, 9]}, {"bbox": [202.8444061279297, 521.157470703125, 267.03692626953125, 529.482421875], "spans": [[8, 1]], "text": "VARCHAR(128)", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 8, "row-header": false, "row-span": [8, 9]}, {"bbox": [281.80682373046875, 521.157470703125, 430.40045166015625, 529.482421875], "spans": [[8, 2]], "text": "Name of the currently running routine", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 8, "row-header": false, "row-span": [8, 9]}], [{"bbox": [70.80003356933594, 502.1377258300781, 139.4313507080078, 510.4627380371094], "spans": [[9, 0]], "text": "ROUTINE_TYPE", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 9, "row-header": false, "row-span": [9, 10]}, {"bbox": [202.74635314941406, 502.1377258300781, 239.2899627685547, 510.4627380371094], "spans": [[9, 1]], "text": "CHAR(1)", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 9, "row-header": false, "row-span": [9, 10]}, {"bbox": [281.7906494140625, 502.1377258300781, 425.09130859375, 510.4627380371094], "spans": [[9, 2]], "text": "Type of the currently running routine", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 9, "row-header": false, "row-span": [9, 10]}]], "model": null, "bounding-box": null}, {"prov": [{"bbox": [135.74551391601562, 393.6541442871094, 529.2235107421875, 684.2587280273438], "page": 57, "span": [0, 0], "__ref_s3_data": null}], "text": "Figure 4-3 Column masks", "type": "table", "#-cols": 4, "#-rows": 7, "data": [[{"bbox": null, "spans": [[0, 0]], "text": "", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 0, "row-header": false, "row-span": [0, 1]}, {"bbox": null, "spans": [[0, 1]], "text": "", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 0, "row-header": false, "row-span": [0, 1]}, {"bbox": [287.8096923828125, 668.81640625, 355.4244689941406, 680.1975708007812], "spans": [[0, 2]], "text": "CUSTOMERS", "type": "col_header", "col": 2, "col-header": true, "col-span": [2, 3], "row": 0, "row-header": false, "row-span": [0, 1]}, {"bbox": [428.24420166015625, 668.81640625, 488.26617431640625, 680.1975708007812], "spans": [[0, 3]], "text": "ACCOUNTS", "type": "col_header", "col": 3, "col-header": true, "col-span": [3, 4], "row": 0, "row-header": false, "row-span": [0, 1]}], [{"bbox": [150.03750610351562, 608.87744140625, 193.05224609375, 618.352294921875], "spans": [[1, 0]], "text": "SECURITY", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 1, "row-header": false, "row-span": [1, 2]}, {"bbox": [212.63400268554688, 607.9304809570312, 248.9210205078125, 616.476318359375], "spans": [[1, 1]], "text": "No Rows", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 1, "row-header": false, "row-span": [1, 2]}, {"bbox": [263.1838073730469, 589.69384765625, 382.3654479980469, 635.3184814453125], "spans": [[1, 2]], "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER CUSTOMER_EMAIL CUSTOMER_LOGIN_ID CUSTOMER_SECURITY_QUESTION CUSTOMER_SECURITY_QUESTION_ANSWER CUSTOMER_TAX_ID", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 1, "row-header": false, "row-span": [1, 2]}, {"bbox": [427.81256103515625, 609.6608276367188, 482.86053466796875, 615.3514404296875], "spans": [[1, 3]], "text": "ACCOUNT_NUMBER", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 1, "row-header": false, "row-span": [1, 2]}], [{"bbox": [174.79660034179688, 555.6320190429688, 193.04815673828125, 565.1068725585938], "spans": [[2, 0]], "text": "DBE", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 2, "row-header": false, "row-span": [2, 3]}, {"bbox": [213.1331024169922, 556.0161743164062, 248.37786865234375, 564.56201171875], "spans": [[2, 1]], "text": "All Rows", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 2, "row-header": false, "row-span": [2, 3]}, {"bbox": [263.1838073730469, 537.7796020507812, 382.3654479980469, 583.404296875], "spans": [[2, 2]], "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER CUSTOMER_EMAIL CUSTOMER_LOGIN_ID CUSTOMER_SECURITY_QUESTION CUSTOMER_SECURITY_QUESTION_ANSWER CUSTOMER_TAX_ID", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 2, "row-header": false, "row-span": [2, 3]}, {"bbox": [427.8116149902344, 557.7466430664062, 482.92327880859375, 563.437255859375], "spans": [[2, 3]], "text": "ACCOUNT NUMBER ACCOUNT_NUMBER", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 2, "row-header": false, "row-span": [2, 3]}], [{"bbox": [160.38710021972656, 521.521728515625, 193.08364868164062, 530.99658203125], "spans": [[3, 0]], "text": "ADMIN", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 3, "row-header": false, "row-span": [3, 4]}, {"bbox": [213.1331024169922, 520.4083862304688, 248.45372009277344, 528.9542236328125], "spans": [[3, 1]], "text": "All Rows", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 3, "row-header": false, "row-span": [3, 4]}, {"bbox": [315.5306091308594, 522.1387329101562, 330.12255859375, 527.829345703125], "spans": [[3, 2]], "text": "None", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 3, "row-header": false, "row-span": [3, 4]}, {"bbox": [448.0835266113281, 522.1387329101562, 462.67547607421875, 527.829345703125], "spans": [[3, 3]], "text": "None", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 3, "row-header": false, "row-span": [3, 4]}], [{"bbox": [161.48519897460938, 489.0753479003906, 193.04367065429688, 498.5502014160156], "spans": [[4, 0]], "text": "TELLER", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 4, "row-header": false, "row-span": [4, 5]}, {"bbox": [213.1331024169922, 488.7939453125, 248.45372009277344, 497.3398132324219], "spans": [[4, 1]], "text": "All Rows", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 4, "row-header": false, "row-span": [4, 5]}, {"bbox": [263.1838073730469, 474.550537109375, 382.3654479980469, 512.1885375976562], "spans": [[4, 2]], "text": "CUSTOMER_EMAIL CUSTOMER_LOGIN_ID CUSTOMER_SECURITY_QUESTION CUSTOMER_SECURITY_QUESTION_ANSWER CUSTOMER TAX ID _ _", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 4, "row-header": false, "row-span": [4, 5]}, {"bbox": [448.07916259765625, 490.52423095703125, 462.6711120605469, 496.2148742675781], "spans": [[4, 3]], "text": "None", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 4, "row-header": false, "row-span": [4, 5]}], [{"bbox": [141.65139770507812, 457.7271423339844, 193.06382751464844, 467.2019958496094], "spans": [[5, 0]], "text": "CUSTOMER", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 5, "row-header": false, "row-span": [5, 6]}, {"bbox": [208.84030151367188, 457.179443359375, 252.7267608642578, 465.7253112792969], "spans": [[5, 1]], "text": "Own Rows", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 5, "row-header": false, "row-span": [5, 6]}, {"bbox": [315.5306091308594, 458.9099426269531, 330.12255859375, 464.6005859375], "spans": [[5, 2]], "text": "None", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 5, "row-header": false, "row-span": [5, 6]}, {"bbox": [448.0835266113281, 458.9099426269531, 462.67547607421875, 464.6005859375], "spans": [[5, 3]], "text": "None", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 5, "row-header": false, "row-span": [5, 6]}], [{"bbox": [160.8197021484375, 422.5186462402344, 193.05859375, 431.9934997558594], "spans": [[6, 0]], "text": "PUBLIC", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 6, "row-header": false, "row-span": [6, 7]}, {"bbox": [212.63400268554688, 421.5716247558594, 248.9210205078125, 430.11749267578125], "spans": [[6, 1]], "text": "No Rows", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 6, "row-header": false, "row-span": [6, 7]}, {"bbox": [263.18353271484375, 403.33502197265625, 382.3654479980469, 448.9596862792969], "spans": [[6, 2]], "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER CUSTOMER_EMAIL CUSTOMER LOGIN ID CUSTOMER_LOGIN_ID CUSTOMER_SECURITY_QUESTION CUSTOMER_SECURITY_QUESTION_ANSWER CUSTOMER_TAX_ID", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 6, "row-header": false, "row-span": [6, 7]}, {"bbox": [427.81256103515625, 423.3021240234375, 482.86053466796875, 428.9927673339844], "spans": [[6, 3]], "text": "ACCOUNT_NUMBER", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 6, "row-header": false, "row-span": [6, 7]}]], "model": null, "bounding-box": null}, {"prov": [{"bbox": [143.16891479492188, 327.46435546875, 300.13482666015625, 479.0935363769531], "page": 102, "span": [0, 0], "__ref_s3_data": null}], "text": "", "type": "table", "#-cols": 2, "#-rows": 11, "data": [[{"bbox": [149.45120239257812, 467.8338623046875, 233.62379455566406, 474.97100830078125], "spans": [[0, 0]], "text": "CREDIT CARD NUMBER _ _", "type": "col_header", "col": 0, "col-header": true, "col-span": [0, 1], "row": 0, "row-header": false, "row-span": [0, 1]}, {"bbox": [257.74920654296875, 467.8338623046875, 279.168212890625, 474.97100830078125], "spans": [[0, 1]], "text": "TOTAL", "type": "col_header", "col": 1, "col-header": true, "col-span": [1, 2], "row": 0, "row-header": false, "row-span": [0, 1]}], [{"bbox": [148.50592041015625, 454.30743408203125, 221.83938598632812, 461.4362487792969], "spans": [[1, 0]], "text": "3785 0000 0000 1234", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 1, "row-header": false, "row-span": [1, 2]}, {"bbox": [272.42230224609375, 454.30743408203125, 295.6497497558594, 461.4362487792969], "spans": [[1, 1]], "text": "233.50", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 1, "row-header": false, "row-span": [1, 2]}], [{"bbox": [148.50592041015625, 440.8002014160156, 221.83853149414062, 447.92901611328125], "spans": [[2, 0]], "text": "3785 1111 1111 1234", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 2, "row-header": false, "row-span": [2, 3]}, {"bbox": [272.42144775390625, 440.8002014160156, 295.6488952636719, 447.92901611328125], "spans": [[2, 1]], "text": "105.10", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 2, "row-header": false, "row-span": [2, 3]}], [{"bbox": [148.50619506835938, 427.264892578125, 221.84132385253906, 434.3937072753906], "spans": [[3, 0]], "text": "3785 2222 2222 1234", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 3, "row-header": false, "row-span": [3, 4]}, {"bbox": [272.4057922363281, 427.264892578125, 295.6465759277344, 434.3937072753906], "spans": [[3, 1]], "text": "300 00 300.00", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 3, "row-header": false, "row-span": [3, 4]}], [{"bbox": [148.50619506835938, 413.7298889160156, 221.85214233398438, 420.85870361328125], "spans": [[4, 0]], "text": "3785 3333 3333 1234", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 4, "row-header": false, "row-span": [4, 5]}, {"bbox": [266.1250305175781, 413.7298889160156, 295.6675109863281, 420.85870361328125], "spans": [[4, 1]], "text": "1,775.00", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 4, "row-header": false, "row-span": [4, 5]}], [{"bbox": [148.50619506835938, 400.22265625, 221.83880615234375, 407.3514709472656], "spans": [[5, 0]], "text": "5466 4444 4444 1234", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 5, "row-header": false, "row-span": [5, 6]}, {"bbox": [272.4217529296875, 400.22265625, 295.6492004394531, 407.3514709472656], "spans": [[5, 1]], "text": "601.70", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 5, "row-header": false, "row-span": [5, 6]}], [{"bbox": [148.50619506835938, 386.6877136230469, 221.83880615234375, 393.8165283203125], "spans": [[6, 0]], "text": "5466 5555 5555 1234", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 6, "row-header": false, "row-span": [6, 7]}, {"bbox": [276.646484375, 386.6877136230469, 295.6483154296875, 393.8165283203125], "spans": [[6, 1]], "text": "37.80", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 6, "row-header": false, "row-span": [6, 7]}], [{"bbox": [148.50619506835938, 373.1529541015625, 221.83880615234375, 380.2817687988281], "spans": [[7, 0]], "text": "5466 6666 6666 1234", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 7, "row-header": false, "row-span": [7, 8]}, {"bbox": [272.4217529296875, 373.1529541015625, 295.6492004394531, 380.2817687988281], "spans": [[7, 1]], "text": "490.45", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 7, "row-header": false, "row-span": [7, 8]}], [{"bbox": [148.50619506835938, 359.6453857421875, 221.84132385253906, 366.7742004394531], "spans": [[8, 0]], "text": "6011 7777 7777 1234", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 8, "row-header": false, "row-span": [8, 9]}, {"bbox": [268.1813049316406, 359.6453857421875, 295.6460266113281, 366.7742004394531], "spans": [[8, 1]], "text": "1005.00", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 8, "row-header": false, "row-span": [8, 9]}], [{"bbox": [148.50619506835938, 346.11041259765625, 221.83880615234375, 353.2392272949219], "spans": [[9, 0]], "text": "6011 8888 8888 1234", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 9, "row-header": false, "row-span": [9, 10]}, {"bbox": [272.4217529296875, 346.11041259765625, 295.6492004394531, 353.2392272949219], "spans": [[9, 1]], "text": "750.33", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 9, "row-header": false, "row-span": [9, 10]}], [{"bbox": [148.50619506835938, 332.5756530761719, 221.83880615234375, 339.7044677734375], "spans": [[10, 0]], "text": "6011 9999 9999 0001", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 10, "row-header": false, "row-span": [10, 11]}, {"bbox": [276.646484375, 332.5756530761719, 295.6483154296875, 339.7044677734375], "spans": [[10, 1]], "text": "10.00", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 10, "row-header": false, "row-span": [10, 11]}]], "model": null, "bounding-box": null}, {"prov": [{"bbox": [313.3494567871094, 327.06817626953125, 470.7187805175781, 479.4356994628906], "page": 102, "span": [0, 0], "__ref_s3_data": null}], "text": "Figure 6-1 Timing of column masking", "type": "table", "#-cols": 2, "#-rows": 11, "data": [[{"bbox": [318.9862060546875, 467.8338623046875, 403.1588134765625, 474.97100830078125], "spans": [[0, 0]], "text": "CREDIT CARD NUMBER _ _", "type": "col_header", "col": 0, "col-header": true, "col-span": [0, 1], "row": 0, "row-header": false, "row-span": [0, 1]}, {"bbox": [427.28424072265625, 467.8338623046875, 448.7032470703125, 474.97100830078125], "spans": [[0, 1]], "text": "TOTAL", "type": "col_header", "col": 1, "col-header": true, "col-span": [1, 2], "row": 0, "row-header": false, "row-span": [0, 1]}], [{"bbox": [318.041015625, 454.30743408203125, 390.6849365234375, 461.4362487792969], "spans": [[1, 0]], "text": "**** **** **** 1234", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 1, "row-header": false, "row-span": [1, 2]}, {"bbox": [441.9682312011719, 454.30743408203125, 465.16064453125, 461.4362487792969], "spans": [[1, 1]], "text": "233.50", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 1, "row-header": false, "row-span": [1, 2]}], [{"bbox": [318.041015625, 440.8002014160156, 390.6849365234375, 447.92901611328125], "spans": [[2, 0]], "text": "**** **** **** 1234", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 2, "row-header": false, "row-span": [2, 3]}, {"bbox": [441.9682312011719, 440.8002014160156, 465.16064453125, 447.92901611328125], "spans": [[2, 1]], "text": "105.10", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 2, "row-header": false, "row-span": [2, 3]}], [{"bbox": [318.0412902832031, 427.264892578125, 390.6543273925781, 434.3937072753906], "spans": [[3, 0]], "text": "**** **** **** 1234", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 3, "row-header": false, "row-span": [3, 4]}, {"bbox": [441.9408874511719, 427.264892578125, 465.1816711425781, 434.3937072753906], "spans": [[3, 1]], "text": "300 00 300.00", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 3, "row-header": false, "row-span": [3, 4]}], [{"bbox": [318.0412902832031, 413.7298889160156, 390.69854736328125, 420.85870361328125], "spans": [[4, 0]], "text": "**** **** **** 1234", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 4, "row-header": false, "row-span": [4, 5]}, {"bbox": [435.6726379394531, 413.7298889160156, 465.1684265136719, 420.85870361328125], "spans": [[4, 1]], "text": "1,775.00", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 4, "row-header": false, "row-span": [4, 5]}], [{"bbox": [318.0412902832031, 400.22265625, 390.6852111816406, 407.3514709472656], "spans": [[5, 0]], "text": "**** **** **** 1234", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 5, "row-header": false, "row-span": [5, 6]}, {"bbox": [441.968505859375, 400.22265625, 465.1609191894531, 407.3514709472656], "spans": [[5, 1]], "text": "601.70", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 5, "row-header": false, "row-span": [5, 6]}], [{"bbox": [318.0412902832031, 386.6877136230469, 390.6852111816406, 393.8165283203125], "spans": [[6, 0]], "text": "**** **** **** 1234", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 6, "row-header": false, "row-span": [6, 7]}, {"bbox": [446.19329833984375, 386.6877136230469, 465.16595458984375, 393.8165283203125], "spans": [[6, 1]], "text": "37.80", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 6, "row-header": false, "row-span": [6, 7]}], [{"bbox": [318.0412902832031, 373.1529541015625, 390.6852111816406, 380.2817687988281], "spans": [[7, 0]], "text": "**** **** **** 1234", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 7, "row-header": false, "row-span": [7, 8]}, {"bbox": [441.968505859375, 373.1529541015625, 465.1609191894531, 380.2817687988281], "spans": [[7, 1]], "text": "490.45", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 7, "row-header": false, "row-span": [7, 8]}], [{"bbox": [318.0412902832031, 359.6453857421875, 390.6678771972656, 366.7745361328125], "spans": [[8, 0]], "text": "**** **** **** 1234 1234", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 8, "row-header": false, "row-span": [8, 9]}, {"bbox": [437.7164001464844, 359.6453857421875, 465.1811218261719, 366.7742004394531], "spans": [[8, 1]], "text": "1005.00", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 8, "row-header": false, "row-span": [8, 9]}], [{"bbox": [318.0412902832031, 346.11041259765625, 390.6852111816406, 353.2392272949219], "spans": [[9, 0]], "text": "**** **** **** 1234", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 9, "row-header": false, "row-span": [9, 10]}, {"bbox": [441.968505859375, 346.11041259765625, 465.1609191894531, 353.2392272949219], "spans": [[9, 1]], "text": "750.33", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 9, "row-header": false, "row-span": [9, 10]}], [{"bbox": [318.0412902832031, 332.5756530761719, 390.6852111816406, 339.7044677734375], "spans": [[10, 0]], "text": "**** **** **** 0001", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 10, "row-header": false, "row-span": [10, 11]}, {"bbox": [446.19329833984375, 332.5756530761719, 465.16595458984375, 339.7044677734375], "spans": [[10, 1]], "text": "10.00", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 10, "row-header": false, "row-span": [10, 11]}]], "model": null, "bounding-box": null}], "bitmaps": null, "equations": [], "footnotes": [], "page-dimensions": [{"height": 792.0, "page": 1, "width": 612.0}, {"height": 792.0, "page": 2, "width": 612.0}, {"height": 792.0, "page": 3, "width": 612.0}, {"height": 792.0, "page": 4, "width": 612.0}, {"height": 792.0, "page": 5, "width": 612.0}, {"height": 792.0, "page": 6, "width": 612.0}, {"height": 792.0, "page": 7, "width": 612.0}, {"height": 792.0, "page": 8, "width": 612.0}, {"height": 792.0, "page": 9, "width": 612.0}, {"height": 792.0, "page": 10, "width": 612.0}, {"height": 792.0, "page": 11, "width": 612.0}, {"height": 792.0, "page": 12, "width": 612.0}, {"height": 792.0, "page": 13, "width": 612.0}, {"height": 792.0, "page": 14, "width": 612.0}, {"height": 792.0, "page": 15, "width": 612.0}, {"height": 792.0, "page": 16, "width": 612.0}, {"height": 792.0, "page": 17, "width": 612.0}, {"height": 792.0, "page": 18, "width": 612.0}, {"height": 792.0, "page": 19, "width": 612.0}, {"height": 792.0, "page": 20, "width": 612.0}, {"height": 792.0, "page": 21, "width": 612.0}, {"height": 792.0, "page": 22, "width": 612.0}, {"height": 792.0, "page": 23, "width": 612.0}, {"height": 792.0, "page": 24, "width": 612.0}, {"height": 792.0, "page": 25, "width": 612.0}, {"height": 792.0, "page": 26, "width": 612.0}, {"height": 792.0, "page": 27, "width": 612.0}, {"height": 792.0, "page": 28, "width": 612.0}, {"height": 792.0, "page": 29, "width": 612.0}, {"height": 792.0, "page": 30, "width": 612.0}, {"height": 792.0, "page": 31, "width": 612.0}, {"height": 792.0, "page": 32, "width": 612.0}, {"height": 792.0, "page": 33, "width": 612.0}, {"height": 792.0, "page": 34, "width": 612.0}, {"height": 792.0, "page": 35, "width": 612.0}, {"height": 792.0, "page": 36, "width": 612.0}, {"height": 792.0, "page": 37, "width": 612.0}, {"height": 792.0, "page": 38, "width": 612.0}, {"height": 792.0, "page": 39, "width": 612.0}, {"height": 792.0, "page": 40, "width": 612.0}, {"height": 792.0, "page": 41, "width": 612.0}, {"height": 792.0, "page": 42, "width": 612.0}, {"height": 792.0, "page": 43, "width": 612.0}, {"height": 792.0, "page": 44, "width": 612.0}, {"height": 792.0, "page": 45, "width": 612.0}, {"height": 792.0, "page": 46, "width": 612.0}, {"height": 792.0, "page": 47, "width": 612.0}, {"height": 792.0, "page": 48, "width": 612.0}, {"height": 792.0, "page": 49, "width": 612.0}, {"height": 792.0, "page": 50, "width": 612.0}, {"height": 792.0, "page": 51, "width": 612.0}, {"height": 792.0, "page": 52, "width": 612.0}, {"height": 792.0, "page": 53, "width": 612.0}, {"height": 792.0, "page": 54, "width": 612.0}, {"height": 792.0, "page": 55, "width": 612.0}, {"height": 792.0, "page": 56, "width": 612.0}, {"height": 792.0, "page": 57, "width": 612.0}, {"height": 792.0, "page": 58, "width": 612.0}, {"height": 792.0, "page": 59, "width": 612.0}, {"height": 792.0, "page": 60, "width": 612.0}, {"height": 792.0, "page": 61, "width": 612.0}, {"height": 792.0, "page": 62, "width": 612.0}, {"height": 792.0, "page": 63, "width": 612.0}, {"height": 792.0, "page": 64, "width": 612.0}, {"height": 792.0, "page": 65, "width": 612.0}, {"height": 792.0, "page": 66, "width": 612.0}, {"height": 792.0, "page": 67, "width": 612.0}, {"height": 792.0, "page": 68, "width": 612.0}, {"height": 792.0, "page": 69, "width": 612.0}, {"height": 792.0, "page": 70, "width": 612.0}, {"height": 792.0, "page": 71, "width": 612.0}, {"height": 792.0, "page": 72, "width": 612.0}, {"height": 792.0, "page": 73, "width": 612.0}, {"height": 792.0, "page": 74, "width": 612.0}, {"height": 792.0, "page": 75, "width": 612.0}, {"height": 792.0, "page": 76, "width": 612.0}, {"height": 792.0, "page": 77, "width": 612.0}, {"height": 792.0, "page": 78, "width": 612.0}, {"height": 792.0, "page": 79, "width": 612.0}, {"height": 792.0, "page": 80, "width": 612.0}, {"height": 792.0, "page": 81, "width": 612.0}, {"height": 792.0, "page": 82, "width": 612.0}, {"height": 792.0, "page": 83, "width": 612.0}, {"height": 792.0, "page": 84, "width": 612.0}, {"height": 792.0, "page": 85, "width": 612.0}, {"height": 792.0, "page": 86, "width": 612.0}, {"height": 792.0, "page": 87, "width": 612.0}, {"height": 792.0, "page": 88, "width": 612.0}, {"height": 792.0, "page": 89, "width": 612.0}, {"height": 792.0, "page": 90, "width": 612.0}, {"height": 792.0, "page": 91, "width": 612.0}, {"height": 792.0, "page": 92, "width": 612.0}, {"height": 792.0, "page": 93, "width": 612.0}, {"height": 792.0, "page": 94, "width": 612.0}, {"height": 792.0, "page": 95, "width": 612.0}, {"height": 792.0, "page": 96, "width": 612.0}, {"height": 792.0, "page": 97, "width": 612.0}, {"height": 792.0, "page": 98, "width": 612.0}, {"height": 792.0, "page": 99, "width": 612.0}, {"height": 792.0, "page": 100, "width": 612.0}, {"height": 792.0, "page": 101, "width": 612.0}, {"height": 792.0, "page": 102, "width": 612.0}, {"height": 792.0, "page": 103, "width": 612.0}, {"height": 792.0, "page": 104, "width": 612.0}, {"height": 792.0, "page": 105, "width": 612.0}, {"height": 792.0, "page": 106, "width": 612.0}, {"height": 792.0, "page": 107, "width": 612.0}, {"height": 792.0, "page": 108, "width": 612.0}, {"height": 792.0, "page": 109, "width": 612.0}, {"height": 792.0, "page": 110, "width": 612.0}, {"height": 792.0, "page": 111, "width": 612.0}, {"height": 792.0, "page": 112, "width": 612.0}, {"height": 792.0, "page": 113, "width": 612.0}, {"height": 792.0, "page": 114, "width": 612.0}, {"height": 792.0, "page": 115, "width": 612.0}, {"height": 792.0, "page": 116, "width": 612.0}, {"height": 792.0, "page": 117, "width": 612.0}, {"height": 792.0, "page": 118, "width": 612.0}, {"height": 792.0, "page": 119, "width": 612.0}, {"height": 792.0, "page": 120, "width": 612.0}, {"height": 792.0, "page": 121, "width": 612.0}, {"height": 792.0, "page": 122, "width": 612.0}, {"height": 792.0, "page": 123, "width": 612.0}, {"height": 792.0, "page": 124, "width": 612.0}, {"height": 792.0, "page": 125, "width": 612.0}, {"height": 792.0, "page": 126, "width": 612.0}, {"height": 792.0, "page": 127, "width": 612.0}, {"height": 792.0, "page": 128, "width": 612.0}, {"height": 792.0, "page": 129, "width": 612.0}, {"height": 792.0, "page": 130, "width": 612.0}, {"height": 792.0, "page": 131, "width": 612.0}, {"height": 792.0, "page": 132, "width": 612.0}, {"height": 792.0, "page": 133, "width": 612.0}, {"height": 792.0, "page": 134, "width": 612.0}, {"height": 792.0, "page": 135, "width": 612.0}, {"height": 792.0, "page": 136, "width": 612.0}, {"height": 792.0, "page": 137, "width": 612.0}, {"height": 792.0, "page": 138, "width": 612.0}, {"height": 792.0, "page": 139, "width": 612.0}, {"height": 792.0, "page": 140, "width": 612.0}, {"height": 792.0, "page": 141, "width": 612.0}, {"height": 792.0, "page": 142, "width": 612.0}, {"height": 792.0, "page": 143, "width": 612.0}, {"height": 792.0, "page": 144, "width": 612.0}, {"height": 792.0, "page": 145, "width": 612.0}, {"height": 792.0, "page": 146, "width": 612.0}], "page-footers": [], "page-headers": [], "_s3_data": null, "identifiers": null} \ No newline at end of file diff --git a/tests/data/groundtruth/docling_v1/redp5110.md b/tests/data/groundtruth/docling_v1/redp5110.md deleted file mode 100644 index aebba526..00000000 --- a/tests/data/groundtruth/docling_v1/redp5110.md +++ /dev/null @@ -1,2732 +0,0 @@ -Front cover - - - - -## Row and Column Access Control Support in IBM DB2 for i - -Implement roles and separation of duties - -Leverage row permissions on the database - -Protect columns by defining column masks - -Jim Bainbridge Hernando Bedoya Rob Bestgen Mike Cain Dan Cruikshank Jim Denton Doug Mack Tom McKinley Kent Milligan - -Redpaper - - - - -## International Technical Support Organization - -## Row and Column Access Control Support in IBM DB2 for i - -November 2014 - -Note: Before using this information and the product it supports, read the information in "Notices" on page vii. - -## First Edition (November 2014) - -This edition applies to Version 7, Release 2 of IBM i (product number 5770-SS1). - -Note to U.S. Government Users Restricted Rights -- Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. - -## Contents - - - -| Notices | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii | -|------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------| -| Trademarks | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii | -| DB2 for i Center of Excellence | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix | -| Preface | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi | -| Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi | | -| Now you can become a published author, too! | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii | -| Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | xiii | -| Stay connected to IBM Redbooks | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv | -| Chapter 1. Securing and protecting IBM DB2 data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 1 | -| 1.1 Security fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 | | -| 1.2 Current state of IBM i security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 2 | -| 1.3 DB2 for i security controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | | -| 1.3.1 Existing row and column control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 4 | -| 1.3.2 New controls: Row and Column Access Control. . . . . . . . . . . . . . . . . . . . . . . . . . . | 5 | -| Chapter 2. Roles and separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 7 | -| 2.1 Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 8 | -| 2.1.1 DDM and DRDA application server access: QIBM_DB_DDMDRDA . . . . . . . . . . . | 8 | -| 2.1.2 Toolbox application server access: QIBM_DB_ZDA. . . . . . . . . . . . . . . . . . . . . . . . | 8 | -| 2.1.3 Database Administrator function: QIBM_DB_SQLADM . . . . . . . . . . . . . . . . . . . . . | 9 | -| 2.1.4 Database Information function: QIBM_DB_SYSMON | . . . . . . . . . . . . . . . . . . . . . . 9 | -| 2.1.5 Security Administrator function: QIBM_DB_SECADM . . . . . . . . . . . . . . . . . . . . . . | 9 | -| 2.1.6 Change Function Usage CL command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 10 | -| 2.1.7 Verifying function usage IDs for RCAC with the FUNCTION_USAGE view . . . . . | 10 | -| 2.2 Separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 | | -| Chapter 3. Row and Column Access Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 13 | -| 3.1 Explanation of RCAC and the concept of access control . . . . . . . . . . . . . . . . . . . . . . . | 14 | -| 3.1.1 Row permission and column mask definitions | . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 | -| 3.1.2 Enabling and activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 16 | -| 3.2 Special registers and built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 18 | -| 3.2.1 Special registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 18 | -| 3.2.2 Built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 19 | -| 3.3 VERIFY_GROUP_FOR_USER function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 20 | -| 3.4 Establishing and controlling accessibility by using the RCAC rule text . . . . . . . . . . . . . | 21 | -| | . . . . . . . . . . . . . . . . . . . . . . . . 22 | -| 3.5 SELECT, INSERT, and UPDATE behavior with RCAC | | -| 3.6.1 Assigning the QIBM_DB_SECADM function ID to the consultants. . . . . . . . . . . . | 23 | -| 3.6.2 Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . . | 23 | -| 3.6.3 Demonstrating data access without RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 24 | -| 3.6.4 Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 25 | -| 3.6.5 Defining and creating column masks | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 | -| 3.6.6 Activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 28 | -| 3.6.7 Demonstrating data access with RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 29 | -| 3.6.8 Demonstrating data access with a view and RCAC . . . . . . . . . . . . . . . . . . . . . . . | 32 | - - - -| Chapter 4. Implementing Row and Column Access Control: Banking example . . . . . | 37 | -|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| 4.1 Business requirements for the RCAC banking scenario . . . . . . . . . . . . . . . . . . . . . . . . | 38 | -| 4.2 Description of the users roles and responsibilities | . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 | -| 4.3 Implementation of RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 42 | -| 4.3.1 Reviewing the tables that are used in this example | . . . . . . . . . . . . . . . . . . . . . . . 42 | -| 4.3.2 Assigning function ID QIBM_DB_SECADM to the Database Engineers group | . . 47 | -| 4.3.3 Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . . | 50 | -| 4.3.4 Creating the CUSTOMER_LOGIN_ID global variable | . . . . . . . . . . . . . . . . . . . . . 52 | -| 4.3.5 Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 54 | -| 4.3.6 Defining and creating column masks | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 | -| 4.3.7 Restricting the inserting and updating of masked data . . . . . . . . . . . . . . . . . . . . . | 60 | -| 4.3.9 Reviewing row permissions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 64 | -| 4.3.10 Demonstrating data access with RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 66 | -| 4.3.11 Query implementation with RCAC activated . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 75 | -| Chapter 5. RCAC and non-SQL interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 79 | -| | Unsupported interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 | -| 5.3 Accidental updates with masked values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 81 | -| 5.4 System CL commands considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 82 | -| 5.4.1 Create Duplicate Object (CRTDUPOBJ) command . . . . . . . . . . . . . . . . . . . . . . . | 82 | -| | 82 | -| 5.4.2 Copy File (CPYF) command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4.3 Copy Library (CPYLIB) command. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 100 | -| | 83 | -| Chapter 6. Additional considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | . . . . . . . . . . . . . . . . . . . . . . . . 89 90 | -| 6.2 RCAC effects on data movement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 6.2 RCAC effects on data movement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | -| 6.2.1 Effects when RCAC is defined on the source table | 6.2.1 Effects when RCAC is defined on the source table | -| | 88 | -| 6.2.3 Effects when RCAC is defined on both source and target tables . . . . . . . . . . . . . 6.3 RCAC effects on joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 91 | -| 6.3.1 Inner joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 | 6.3.1 Inner joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 | -| 6.3.2 Outer joins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 | 6.3.2 Outer joins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 | -| 6.3.3 Exception joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 96 | -| 6.4 Monitoring, analyzing, and debugging with RCAC | 97 | -| . . . . . . . . . . . . . . . . . . . . . . . . . . . . | Query monitoring and analysis tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 | -| 6.4.2 Index advisor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 99 | -| 6.4.3 Metadata using catalogs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 6.4.3 Metadata using catalogs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | -| 6.5 Views, materialized query tables, and query rewrite with RCAC . . . . . . . . . . . . . . . . | 102 | -| 6.5.2 Materialized query tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 103 | -| | 105 | -| 6.5.3 Query rewrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . RCAC effects on performance and scalability. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 6.5.3 Query rewrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . RCAC effects on performance and scalability. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | -| 6.6 | 105 | -| | 107 | -| 6.7 Exclusive lock to implement RCAC (availability issues) . . . . . . . . . . . . . . . . . . . . . . . 6.8 Avoiding propagation of masked data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 108 | -| | 108 | -| | 109 | -| | 109 | -| | 113 | -| | 111 | -| Chapter 7. Row and Column Access Control management . . . . . . . . . . . . . . . . . . . . | Chapter 7. Row and Column Access Control management . . . . . . . . . . . . . . . . . . . . | - - - -| 7.1 Managing row permissions and column masks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 114 | -|---------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------| -| 7.1.1 Source management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 114 | -| 7.1.2 Modifying definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 114 | -| 7.1.3 Turning on and off . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 114 | -| 7.1.4 Regenerating | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 | -| 7.2 Managing tables with row permissions and column masks. . . . . . . . . . . . . . . . . . . . . | 115 | -| 7.2.1 Save and restore. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 115 | -| 7.2.2 Table migration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 116 | -| 7.3 Monitoring and auditing function usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 117 | -| Chapter 8. Designing and planning for success | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 | -| 8.1 Implementing RCAC with good design and proper planning | . . . . . . . . . . . . . . . . . . . 120 | -| 8.2 DB2 for i Center of Excellence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 120 | -| Appendix A. Database definitions for the RCAC banking example | . . . . . . . . . . . . . . 121 | -| Related publications | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 | -| Other publications | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 | -| Online resources | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 | -| Help from IBM | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 | - -## Notices - -This information was developed for products and services offered in the U.S.A. - -IBM may not offer the products, services, or features discussed in this document in other countries. Consult your local IBM representative for information on the products and services currently available in your area. Any reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, program, or service may be used. Any functionally equivalent product, program, or service that does not infringe any IBM intellectual property right may be used instead. However, it is the user's responsibility to evaluate and verify the operation of any non-IBM product, program, or service. - -IBM may have patents or pending patent applications covering subject matter described in this document. The furnishing of this document does not grant you any license to these patents. You can send license inquiries, in writing, to: - -IBM Director of Licensing, IBM Corporation, North Castle Drive, Armonk, NY 10504-1785 U.S.A. - -The following paragraph does not apply to the United Kingdom or any other country where such provisions are inconsistent with local law: INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states do not allow disclaimer of express or implied warranties in certain transactions, therefore, this statement may not apply to you. - -This information could include technical inaccuracies or typographical errors. Changes are periodically made to the information herein; these changes will be incorporated in new editions of the publication. IBM may make improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time without notice. - -Any references in this information to non-IBM websites are provided for convenience only and do not in any manner serve as an endorsement of those websites. The materials at those websites are not part of the materials for this IBM product and use of those websites is at your own risk. - -IBM may use or distribute any of the information you supply in any way it believes appropriate without incurring any obligation to you. - -Any performance data contained herein was determined in a controlled environment. Therefore, the results obtained in other operating environments may vary significantly. Some measurements may have been made on development-level systems and there is no guarantee that these measurements will be the same on generally available systems. Furthermore, some measurements may have been estimated through extrapolation. Actual results may vary. Users of this document should verify the applicable data for their specific environment. - -Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly available sources. IBM has not tested those products and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products. - -This information contains examples of data and reports used in daily business operations. To illustrate them as completely as possible, the examples include the names of individuals, companies, brands, and products. All of these names are fictitious and any similarity to the names and addresses used by an actual business enterprise is entirely coincidental. - -## COPYRIGHT LICENSE: - -This information contains sample application programs in source language, which illustrate programming techniques on various operating platforms. You may copy, modify, and distribute these sample programs in any form without payment to IBM, for the purposes of developing, using, marketing or distributing application programs conforming to the application programming interface for the operating platform for which the sample programs are written. These examples have not been thoroughly tested under all conditions. IBM, therefore, cannot guarantee or imply reliability, serviceability, or function of these programs. - -## Trademarks - -IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines Corporation in the United States, other countries, or both. These and other IBM trademarked terms are marked on their first occurrence in this information with the appropriate symbol (fi or ™), indicating US registered or common law trademarks owned by IBM at the time this information was published. Such trademarks may also be registered or common law trademarks in other countries. A current list of IBM trademarks is available on the Web at http://www.ibm.com/legal/copytrade.shtml - -The following terms are trademarks of the International Business Machines Corporation in the United States, other countries, or both: - -AS/400fi - -DB2fi - -DRDAfi - -IBMfi - -Power Systems™ - -Redbooksfi - -Redpaper™ - -Redbooks (log o) fi System - -ifi - -The following terms are trademarks of other companies: - -Windows, and the Windows logo are trademarks of Microsoft Corporation in the United States, other countries, or both. - -Other company, product, or service names may be trademarks or service marks of others. - - - - -DB2 for i Center of Excellence - -Solution Brief IBM Systems Lab Services and Training - - - - -## Highlights - -- GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH - -- GLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH - -- GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH - -- GLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH - - - - -Power Services - -## DB2 for i Center of Excellence - -Expert help to achieve your business requirements - -## We build confident, satisfied clients - -No one else has the vast consulting experiences, skills sharing and renown service offerings to do what we can do for you. - -Because no one else is IBM. - -With combined experiences and direct access to development groups, we're the experts in IBM DB2® for i. The DB2 for i Center of Excellence (CoE) can help you achieve-perhaps reexamine and exceed-your business requirements and gain more confidence and satisfaction in IBM product data management products and solutions. - -## Who we are, some of what we do - -Global CoE engagements cover topics including: - -- r Database performance and scalability - -- r Advanced SQL knowledge and skills transfer - -- r Business intelligence and analytics - -- r DB2 Web Query - -- r Query/400 modernization for better reporting and analysis capabilities - -- r Database modernization and re-engineering - -- r Data-centric architecture and design - -- r Extremely large database and overcoming limits to growth - -- r ISV education and enablement - -## What you can expect - -Depending on the engagement, our team of consultants offer: - -- r Briefings, consulting and guidance on demand - -- r Illumination of the DB2 for i capabilities and leadership to exploit them - -- r Analysis and remediation of performance and scalability issues caused by inefficient database design and implementation - -- r Configuration of systems, operating system and products to fully leverage database capabilities - -## Key client benefits - -T Gain greater database and application performance within your current environment. Achieve greater productivity in the development and maintenance of database and applications using modern techniques. Architect and design data structures to accommodate and benefit from business analytics (BA) tools and processes. - -## For more information - -Pricing depends on the scope of work. Learn more about the DB2 for i Center of Excellence and other related products and services. Contact stgls@us.ibm.com or visit: - -ibm.com GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH - - - - -© Copyright IBM Corporation 2013 - -IBM Corporation Route 100 Somers, NY 10589 - -Produced in the United States of America March 2013 - -IBM, the IBM logo, ibm.com, DB2 and Power Systems are trademarks of International Business Machines Corp., registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the web at "Copyright and trademark information" at www.ibm.com/legal/ copytrade.shtml . - -This document is current as of the initial date of publication and may be changed by IBM at any time. - -Not all offerings are available in every country in which IBM operates. - - - - -Please Recycle - -QLS12392-USEN-00 - -## Preface - -This IBMfi Redpaper™ publication provides information about the IBM i 7.2 feature of IBM DB2fi for i Row and Column Access Control (RCAC). It offers a broad description of the function and advantages of controlling access to data in a comprehensive and transparent way. This publication helps you understand the capabilities of RCAC and provides examples of defining, creating, and implementing the row permissions and column masks in a relational database environment. - -This paper is intended for database engineers, data-centric application developers, and security officers who want to design and implement RCAC as a part of their data control and governance policy. A solid background in IBM i object level security, DB2 for i relational database concepts, and SQL is assumed. - -This paper was produced by the IBM DB2 for i Center of Excellence team in partnership with the International Technical Support Organization (ITSO), Rochester, Minnesota US. - - - - - - - -Jim Bainbridge is a senior DB2 consultant on the DB2 for i Center of Excellence team in the IBM Lab Services and Training organization. His primary role is training and implementation services for IBM DB2 Web Query for i and business analytics. Jim began his career with IBM 30 years ago in the IBM Rochester Development Lab, where he developed cooperative processing products that paired IBM PCs with IBM S/36 and AS/.400 systems. In the years since, Jim has held numerous technical roles, including independent software vendors technical support on a broad range of IBM technologies and products, and supporting customers in the IBM Executive Briefing Center and IBM Project Office. - -Hernando Bedoya is a Senior IT Specialist at STG Lab Services and Training in Rochester, Minnesota. He writes extensively and teaches IBM classes worldwide in all areas of DB2 for i. Before joining STG Lab Services, he worked in the ITSO for nine years writing multiple IBM Redbooksfi publications. He also worked for IBM Colombia as an IBM AS/400fi IT Specialist doing presales support for the Andean countries. He has 28 years of experience in the computing field and has taught database classes in Colombian universities. He holds a Master's degree in Computer Science from EAFIT, Colombia. His areas of expertise are database technology, performance, and data warehousing. Hernando can be contacted at hbedoya@us.ibm.com . - -## Authors - - - - - - - - - - - - - - - - -Rob Bestgen is a member of the DB2 for i Center of Excellence team helping customers use the capabilities of DB2 for i. In addition, Rob is the chief architect of the DB2 SQL Query Engine (SQE) for DB2 for i and is the product development manager for DB2 Web Query for i. - -Mike Cain is a Senior Technical Staff Member within the IBM Systems and Technology Group. He is also the founder and team leader of the DB2 for i Center of Excellence in Rochester, Minnesota US. Before his current position, he worked as an IBM AS/400 Systems Engineer and technical consultant. Before joining IBM in 1988, Mike worked as a System/38 programmer and data processing manager for a property and casualty insurance company. Mike has 26 years of experience with IBM, engaging clients and Business Partners around the world. In addition to assisting clients, he uses his knowledge and experience to influence the IBM solution, development, and support processes. - -Dan Cruikshank has been an IT Professional since 1972. He has consulted on a number of different project areas since joining IBM Rochester in 1988. Since 1993, Dan was focused primarily on resolving IBM System ifi application and database performance issues at several IBM customer accounts. Since 1998, Dan has been one of the primary instructors for the Database Optimization Workshop. Most recently, Dan is a member of the DB2 for i Center of Excellence team with IBM Rochester Lab Services. - -Jim Denton is a senior consultant at the IBM DB2 for i Center of Excellence, where his responsibilities include both teaching courses and hands on consulting. Jim specializes in SQL performance, data-centric programming, and database modernization. Jim started his IBM career in 1981 as an S/38 operating system programmer. Before joining the consulting team, his key assignments included 10 years as a systems performance specialist, five years as the lead "JDE on i" analyst, three years as a consultant at the IBM Benchmark and Briefing Center in Montpellier France, and a total of 11 years as an operating system developer, including five years designing and implementing enhancements to DB2 for i. - -Doug Mack is a DB2 for i and Business Intelligence Consultant in the IBM Power Systems™ Lab Services organization. Doug's 30+ year career with IBM spans many roles, including product development, technical sales support, Business Intelligence Sales Specialist, and DB2 for i Product Marketing Manager. Doug is a featured speaker at User Group conferences and meetings, IBM Technical Conferences, and Executive Briefings. - - - - - - - -Tom McKinley is an IBM Lab Services Consultant working on DB2 for IBM i in Rochester MN. His main focus is complex query performance that is associated with Business Intelligence running on Very Large Databases. He worked as a developer or performance analyst in the DB area from 1986 until 2006. Some of his major pieces of work include the Symmetric Multiple processing capabilities of DB2 for IBM i and Large Object Data types. In addition, he was on the original team that designed and built the SQL Query Engine. Before his database work, he worked on Licensed Internal Code for System 34 and System 36. - -Kent Milligan is a senior DB2 consultant on the DB2 for i Center of Excellence team within the IBM Lab Services and Training organization. His primary responsibility is helping software developers use the latest DB2 technologies and port applications from other databases to DB2 for i. After graduating from the University of Iowa, Kent spent the first eight years of his IBM career as a member of the DB2 development team in Rochester. - -Thanks to the following people for their contributions to this project: - -Debra Landon - -International Technical Support Organization, Rochester Center - -Craig Aldrich, Mark Anderson, Theresa Euler, Scott Forstie, Chad Olstad IBM Rochester Development - -## Now you can become a published author, too! - -Here's an opportunity to spotlight your skills, grow your career, and become a published author-all at the same time! Join an ITSO residency project and help write a book in your area of expertise, while honing your experience using leading-edge technologies. Your efforts will help to increase product acceptance and customer satisfaction, as you expand your network of technical contacts and relationships. Residencies run from two to six weeks in length, and you can participate either in person or as a remote resident working from your home base. - -Find out more about the residency program, browse the residency index, and apply online at: - -ibm.com /redbooks/residencies.html - -## Comments welcome - -Your comments are important to us! - -We want our papers to be as helpful as possible. Send us your comments about this paper or other IBM Redbooks publications in one of the following ways: - -- GLYPH Use the online Contact us review Redbooks form found at: - -ibm.com /redbooks - -- GLYPH Send your comments in an email to: - -redbooks@us.ibm.com - -- GLYPH Mail your comments to: - -IBM Corporation, International Technical Support Organization Dept. HYTD Mail Station P099 2455 South Road Poughkeepsie, NY 12601-5400 - -## Stay connected to IBM Redbooks - -- GLYPH Find us on Facebook: - -http://www.facebook.com/IBMRedbooks - -- GLYPH Follow us on Twitter: - -http://twitter.com/ibmredbooks - -- GLYPH Look for us on LinkedIn: - -http://www.linkedin.com/groups?home=&gid=2130806 - -- GLYPH Explore new Redbooks publications, residencies, and workshops with the IBM Redbooks weekly newsletter: - -https://www.redbooks.ibm.com/Redbooks.nsf/subscribe?OpenForm - -- GLYPH Stay current on recent Redbooks publications with RSS Feeds: - -http://www.redbooks.ibm.com/rss.html - - - - -Chapter 1. - -1 - -## Securing and protecting IBM DB2 data - -Recent news headlines are filled with reports of data breaches and cyber-attacks impacting global businesses of all sizes. The Identity Theft Resource Center$^{1}$ reports that almost 5000 data breaches have occurred since 2005, exposing over 600 million records of data. The financial cost of these data breaches is skyrocketing. Studies from the Ponemon Institute$^{2}$ revealed that the average cost of a data breach increased in 2013 by 15% globally and resulted in a brand equity loss of $9.4 million per attack. The average cost that is incurred for each lost record containing sensitive information increased more than 9% to $145 per record. - -Businesses must make a serious effort to secure their data and recognize that securing information assets is a cost of doing business. In many parts of the world and in many industries, securing the data is required by law and subject to audits. Data security is no longer an option; it is a requirement. - -This chapter describes how you can secure and protect data in DB2 for i. The following topics are covered in this chapter: - -- GLYPH Security fundamentals - -- GLYPH Current state of IBM i security - -- GLYPH DB2 for i security controls - -## 1.1 Security fundamentals - -Before reviewing database security techniques, there are two fundamental steps in securing information assets that must be described: - -- GLYPH First, and most important, is the definition of a company's security policy . Without a security policy, there is no definition of what are acceptable practices for using, accessing, and storing information by who, what, when, where, and how. A security policy should minimally address three things: confidentiality, integrity, and availability. - -- The monitoring and assessment of adherence to the security policy determines whether your security strategy is working. Often, IBM security consultants are asked to perform security assessments for companies without regard to the security policy. Although these assessments can be useful for observing how the system is defined and how data is being accessed, they cannot determine the level of security without a security policy. Without a security policy, it really is not an assessment as much as it is a baseline for monitoring the changes in the security settings that are captured. - -A security policy is what defines whether the system and its settings are secure (or not). - -- GLYPH The second fundamental in securing data assets is the use of resource security . If implemented properly, resource security prevents data breaches from both internal and external intrusions. Resource security controls are closely tied to the part of the security policy that defines who should have access to what information resources. A hacker might be good enough to get through your company firewalls and sift his way through to your system, but if they do not have explicit access to your database, the hacker cannot compromise your information assets. - -With your eyes now open to the importance of securing information assets, the rest of this chapter reviews the methods that are available for securing database resources on IBM i. - -## 1.2 Current state of IBM i security - -Because of the inherently secure nature of IBM i, many clients rely on the default system settings to protect their business data that is stored in DB2 for i. In most cases, this means no data protection because the default setting for the Create default public authority (QCRTAUT) system value is *CHANGE. - -Even more disturbing is that many IBM i clients remain in this state, despite the news headlines and the significant costs that are involved with databases being compromised. This default security configuration makes it quite challenging to implement basic security policies. A tighter implementation is required if you really want to protect one of your company's most valuable assets, which is the data. - -Traditionally, IBM i applications have employed menu-based security to counteract this default configuration that gives all users access to the data. The theory is that data is protected by the menu options controlling what database operations that the user can perform. This approach is ineffective, even if the user profile is restricted from running interactive commands. The reason is that in today's connected world there are a multitude of interfaces into the system, from web browsers to PC clients, that bypass application menus. If there are no object-level controls, users of these newer interfaces have an open door to your data. - -Some clients using this default configuration have toughened their database security with exit-point solutions from third-party vendors. IBM i exit points allow a user-written program to be called every time that a particular interface (for example, FTP) is used or an event occurs (for example, a profile is created). Security tools that are based on these exit points increase the level of security on a system by locking down interfaces that are not under the control of menu-based or application authority. In addition, exit-point solutions allow clients to implement more granular security controls, such as allowing users access only to the database during certain hours of the day. - -Although exit-point solutions can provide great benefits, they are not an alternative to object-level control of your databases. Exit-point solutions help secure interfaces, but they do not completely protect the data that is stored in your DB2 objects. Exit points do not exist for every data access interface on the system. Therefore, if an application starts using an unprotected interface, the only thing protecting your data is object-level access control. When your security implementation totally relies on exit points, then it is also important to track any new data interfaces that appear as IBM delivers new releases and products to ensure that your exit-point solution provides coverage for those new interfaces. - -An exit-point solution is a good option for databases with security holes that are caused by a reliance on the default security setup or menu-based control. However, your security work should not stop there. Instead, you must continue to work on a complete database security solution by controlling data access at the object level. - -## 1.3 DB2 for i security controls - -As described in 1.2, "Current state of IBM i security" on page 2, object-level controls on your DB2 objects are a critical success factor in securing your business data. Although database object-level security is a strong security feature, some clients have found that object-level security does not have the granularity that is required to adhere to regulatory or compliance policies. A user that is granted object-level access to a DB2 table has the authority to view all of the rows and values in that table. - -As shown in Figure 1-1, it is an all-or-nothing access to the rows of a table. - -Figure 1-1 All-or-nothing access to the rows of a table - - -Many businesses are trying to limit data access to a need-to-know basis. This security goal means that users should be given access only to the minimum set of data that is required to perform their job. Often, users with object-level access are given access to row and column values that are beyond what their business task requires because that object-level security provides an all-or-nothing solution. For example, object-level controls allow a manager to access data about all employees. Most security policies limit a manager to accessing data only for the employees that they manage. - -## 1.3.1 Existing row and column control - -Some IBM i clients have tried augmenting the all-or-nothing object-level security with SQL views (or logical files) and application logic, as shown in Figure 1-2. However, application-based logic is easy to bypass with all of the different data access interfaces that are provided by the IBM i operating system, such as Open Database Connectivity (ODBC) and System i Navigator. - -Using SQL views to limit access to a subset of the data in a table also has its own set of challenges. First, there is the complexity of managing all of the SQL view objects that are used for securing data access. Second, scaling a view-based security solution can be difficult as the amount of data grows and the number of users increases. - -Even if you are willing to live with these performance and management issues, a user with *ALLOBJ access still can directly access all of the data in the underlying DB2 table and easily bypass the security controls that are built into an SQL view. - -Figure 1-2 Existing row and column controls - - -## 1.3.2 New controls: Row and Column Access Control - -Based on the challenges that are associated with the existing technology available for controlling row and column access at a more granular level, IBM delivered new security support in the IBM i 7.2 release; this support is known as Row and Column Access Control (RCAC). - -The new DB2 RCAC support provides a method for controlling data access across all interfaces and all types of users with a data-centric solution. Moving security processing to the database layer makes it easier to build controls that meet your compliance policies. The RCAC support provides an additional layer of security that complements object-level authorizations to limit data access to a need-to-know basis. Therefore, it is critical that you first have a sound object-level security implementation in place. - - - - -Chapter 2. - -2 - -## Roles and separation of duties - -One of the primary objectives of row and column access control (RCAC) is to create data security policies that control and govern user access to data and limit the data access of DB2 designers and administrators to only the minimum that is required to do their jobs. - -To accomplish these tasks, RCAC engineers devised a set of functional roles that, as a group, implement effectively data access requirements and also limit the span of control of each role so that each role is given only the authorities that are needed to perform its specific set of tasks. - -This chapter describes the concepts of roles and separation of duties on DB2 for i and covers the following topics: - -- GLYPH Roles - -- GLYPH Separation of duties - -## 2.1 Roles - -Traditionally, data access roles are defined in a binary way, where access to the data is either not permitted or access to the data is permitted. A full access capability can also be instantiated by the *ALLOBJ special authority, either explicitly or implicitly, for the security officer. If you hold the role of security officer, or have all *ALLOBJ special authority, you have access to all the data, with no exceptions. Unfortunately, this might not meet the organization's requirements for limiting access to data or separation of duties. - -To assist with defining roles and the separation of duties with appropriate authority, IBM i provides function usage IDs . A function usage ID implements granular security controls rather than granting users powerful special authorities, such as all object, job control, or service. - -Roles are divided among the following DB2 functions and their corresponding function usage IDs: - -- GLYPH DDM and IBM DRDAfi application server access: QIBM_DB_DDMDRDA - -- GLYPH Toolbox application server access: QIBM_DB_ZDA - -- GLYPH Database Administrator function: QIBM_DB_SQLADM - -- GLYPH Database Information function: QIBM_DB_SYSMON - -- GLYPH Security Administrator function: QIBM_DB_SECADM - -## 2.1.1 DDM and DRDA application server access: QIBM_DB_DDMDRDA - -The QIBM_DB_DDMDRDA function usage ID restricts access to the DDM and DRDA application server (QRWTSRVR). This function usage ID provides an easy alternative (rather than writing an exit program) to control access to DDM and DRDA from the server side. The function usage IDs ship with the default authority of *ALLOWED. The security officer can easily deny access to specific users or groups. - -This is an alternative to a User Exit Program approach. No coding is required, it is easy to change, and it is auditable. - -## 2.1.2 Toolbox application server access: QIBM_DB_ZDA - -The QIBM_DB_ZDA function usage ID restricts access to the optimized server that handles DB2 requests from clients (QZDASOINIT and QZDASSINIT). Server access is used by the ODBC, OLE DB, and .NET providers that ship with IBM i Access for Windows and JDBC Toolbox, Run SQL scripts, and other parts of System i Navigator and Navigator for i Web console. - -This function usage ID provides an easy alternative (rather than writing an exit program) to control access to these functions from the server side. The function usage IDs ship with the default authority of *ALLOWED. The security officer can easily deny access to specific users or groups. - -This is an alternative to a User Exit Program approach. No coding is required, it is easy to change, and it is auditable. - -## 2.1.3 Database Administrator function: QIBM_DB_SQLADM - -The Database Administrator function (QIBM_DB_SQLADM) is needed whenever a user is analyzing and viewing SQL performance data. Some of the more common database administrator functions include displaying statements from the SQL Plan Cache, analyzing SQL Performance Monitors and SQL Plan Cache Snapshots, and displaying the SQL details of a job other than your own. - -The Database Administrator function provides an alternative to granting *JOBCTL, but simply having the Database Administrator authorization does not carry with it all the needed object authorities for every administration task. The default behavior is to deny authorization. - -To perform database administrator tasks that are not related to performance analysis, you must refer to the details of the task to determine its specific authorization requirements. For example, to allow a database administrator to reorganize a table, the DBA must have additional object authorities to the table that are not covered by QIBM_DB_SQLADM. - -## Granting QIBM_DB_SQLADM function usage - -Only the security administrator (*SECADM) is allowed to change the list of users that can perform Database Administration functions. - -## 2.1.4 Database Information function: QIBM_DB_SYSMON - -The Database Information function (QIBM_DB_SYSMON) provides much less authority than Database Administrator function. Its primary use allows a user to examine high-level database properties. - -For example, a user that does not have *JOBCTL or QIBM_DB_SQLADM can still view the SQL Plan Cache properties if granted authority to QIBM_DB_SYSMON. Without granting this authority, the default behavior is to deny authorization. - -## Granting QIBM_DB_SYSMON function usage - -Only the security administrator (*SECADM) is allowed to change the list of users that can perform Database Information functions. - -## 2.1.5 Security Administrator function: QIBM_DB_SECADM - -The Security Administrator function (QIBM_DB_SECADM) grants authorities, revokes authorities, changes ownership, or changes the primary group without giving access to the object or, in the case of a database table, to the data that is in the table or allowing other operations on the table. - -Only those users with the QIBM_DB_SECADM function can administer and manage RCAC rules. RCAC can be used to prevent even users with *ALLOBJ authority from freely accessing all the data in a protected database. These users are excluded from data access unless they are specifically authorized by RCAC. Without granting this authority, the default behavior is to deny authorization. - -## Granting QIBM_DB_SECADM function usage - -Only QSECOFR or a user with *SECADM special authority can grant the QIBM_DB_SECADM function usage to a user or group. - -## 2.1.6 Change Function Usage CL command - -The following CL commands can be used to work with, display, or change function usage IDs: - -- GLYPH Work Function Usage ( WRKFCNUSG ) - -- GLYPH Change Function Usage ( CHGFCNUSG ) - -- GLYPH Display Function Usage ( DSPFCNUSG ) - -For example, the following CHGFCNUSG command shows granting authorization to user HBEDOYA to administer and manage RCAC rules: - -CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED) - -## 2.1.7 Verifying function usage IDs for RCAC with the FUNCTION_USAGE view - -The FUNCTION_USAGE view contains function usage configuration details. Table 2-1 describes the columns in the FUNCTION_USAGE view. - -Table 2-1 FUNCTION_USAGE view - -| Column name | Data type | Description | -|---------------|-------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| FUNCTION_ID | VARCHAR(30) | ID of the function. | -| USER_NAME | VARCHAR(10) | Name of the user profile that has a usage setting for this function. | -| USAGE | VARCHAR(7) | Usage setting: GLYPH ALLOWED: The user profile is allowed to use the function. GLYPH DENIED: The user profile is not allowed to use the function. | -| USER_TYPE | VARCHAR(5) | Type of user profile: GLYPH USER: The user profile is a user. GLYPH GROUP: The user profile is a group. | - -To discover who has authorization to define and manage RCAC, you can use the query that is shown in Example 2-1. - -Example 2-1 Query to determine who has authority to define and manage RCAC - -SELECT function_id, user_name, usage, user_type FROM function_usage WHERE function_id='QIBM_DB_SECADM' ORDER BY user_name; - -## 2.2 Separation of duties - -Separation of duties helps businesses comply with industry regulations or organizational requirements and simplifies the management of authorities. Separation of duties is commonly used to prevent fraudulent activities or errors by a single person. It provides the ability for administrative functions to be divided across individuals without overlapping responsibilities, so that one user does not possess unlimited authority, such as with the *ALLOBJ authority. - -For example, assume that a business has assigned the duty to manage security on IBM i to Theresa. Before release IBM i 7.2, to grant privileges, Theresa had to have the same privileges Theresa was granting to others. Therefore, to grant *USE privileges to the PAYROLL table, Theresa had to have *OBJMGT and *USE authority (or a higher level of authority, such as *ALLOBJ). This requirement allowed Theresa to access the data in the PAYROLL table even though Theresa's job description was only to manage its security. - -In IBM i 7.2, the QIBM_DB_SECADM function usage grants authorities, revokes authorities, changes ownership, or changes the primary group without giving access to the object or, in the case of a database table, to the data that is in the table or allowing other operations on the table. - -QIBM_DB_SECADM function usage can be granted only by a user with *SECADM special authority and can be given to a user or a group. - -QIBM_DB_SECADM also is responsible for administering RCAC, which restricts which rows a user is allowed to access in a table and whether a user is allowed to see information in certain columns of a table. - -A preferred practice is that the RCAC administrator has the QIBM_DB_SECADM function usage ID, but absolutely no other data privileges. The result is that the RCAC administrator can deploy and maintain the RCAC constructs, but cannot grant themselves unauthorized access to data itself. - -Table 2-2 shows a comparison of the different function usage IDs and *JOBCTL authority to the different CL commands and DB2 for i tools. - -Table 2-2 Comparison of the different function usage IDs and *JOBCTL authority - -| User action | *JOBCTL | QIBM_DB_SECADM | QIBM_DB_SQLADM | QIBM_DB_SYSMON | No Authority | -|--------------------------------------------------------------------------------|-----------|------------------|------------------|------------------|----------------| -| SET CURRENT DEGREE (SQL statement) | X | | X | | | -| CHGQRYA command targeting a different user's job | X | | X | | | -| STRDBMON or ENDDBMON commands targeting a different user's job | X | | X | | | -| STRDBMON or ENDDBMON commands targeting a job that matches the current user | X | | X | X | X | -| QUSRJOBI() API format 900 or System i Navigator's SQL Details for Job | X | | X | X | | -| Visual Explain within Run SQL scripts | X | | X | X | X | -| Visual Explain outside of Run SQL scripts | X | | X | | | -| ANALYZE PLAN CACHE procedure | X | | X | | | -| DUMP PLAN CACHE procedure | X | | X | | | -| MODIFY PLAN CACHE procedure | X | | X | | | -| MODIFY PLAN CACHE PROPERTIES procedure (currently does not check authority) | X | | X | | | -| CHANGE PLAN CACHE SIZE procedure (currently does not check authority) | X | | X | | | - - - -| User action | *JOBCTL | QIBM_DB_SECADM | QIBM_DB_SQLADM | QIBM_DB_SYSMON | No Authority | -|--------------------------------------------------------------|-----------|------------------|------------------|------------------|----------------| -| START PLAN CACHE EVENT MONITOR procedure | X | | X | | | -| END PLAN CACHE EVENT MONITOR procedure | X | | X | | | -| END ALL PLAN CACHE EVENT MONITORS procedure | X | | X | | | -| Work with RCAC row permissions (Create, modify, or delete) | | X | | | | -| Work with RCAC column masks (Create, modify, or delete) | | X | | | | -| Change Object Owner ( CHGOBJOWN ) CL command | | X | | | | -| Change Object Primary Group ( CHGOBJPGP ) CL command | | X | | | | -| Grant Object Authority ( GRTOBJAUT ) CL command | | X | | | | -| Revoke Object Authority ( RVKOBJAUT ) CL command | | X | | | | -| Edit Object Authority ( EDTOBJAUT ) CL command | | X | | | | -| Display Object Authority ( DSPOBJAUT ) CL command | | X | | | | -| Work with Objects ( WRKOBJ ) CL command | | X | | | | -| Work with Libraries ( WRKLIB ) CL command | | X | | | | -| Add Authorization List Entry ( ADDAUTLE ) CL command | | X | | | | -| Change Authorization List Entry ( CHGAUTLE ) CL command | | X | | | | -| Remove Authorization List Entry ( RMVAUTLE ) CL command | | X | | | | -| Retrieve Authorization List Entry ( RTVAUTLE ) CL command | | X | | | | -| Display Authorization List ( DSPAUTL ) CL command | | X | | | | -| Display Authorization List Objects ( DSPAUTLOBJ ) CL command | | X | | | | -| Edit Authorization List ( EDTAUTL ) CL command | | X | | | | -| Work with Authorization Lists ( WRKAUTL ) CL command | | X | | | | - - - - -Chapter 3. - -3 - -## Row and Column Access Control - -This chapter describes what Row and Column Access Control (RCAC) is, its components, and then illustrates RCAC with a simple example. - -The following topics are covered in this chapter: - -- GLYPH Explanation of RCAC and the concept of access control - -- GLYPH Special registers and built-in global variables - -- GLYPH VERIFY_GROUP_FOR_USER function - -- GLYPH Establishing and controlling accessibility by using the RCAC rule text - -- GLYPH SELECT, INSERT, and UPDATE behavior with RCAC - -- GLYPH Human resources example - -## 3.1 Explanation of RCAC and the concept of access control - -RCAC limits data access to those users who have a business "need to know". RCAC makes it easy to set up a rich and robust security policy that is based on roles and responsibilities. RCAC functionality is made available through the optional, no charge feature called "IBM Advanced Data Security for i", also known as option 47 of IBM i 7.2. - -In DB2 for i, RCAC is implemented using two different approaches that address the shortcomings of traditional control methods and mechanisms: - -- GLYPH Row permissions - -- GLYPH Column masks - -Another benefit of RCAC is that no database user is automatically exempt from the control. Users with *ALLOBJ authority can no longer freely access all of the data in the database unless they have the appropriate permission to do so. The ability to manage row permissions and column masks rests with the database security administrator. The RCAC definitions, enablement, and activation are controlled by SQL statements. - -Row permissions and column masks require virtually no application changes. RCAC is based on specific rules that are transparent to existing applications and SQL interfaces. Enforcement of your security policy does not depend on how applications or tools access the data. - -RCAC also facilitates multi-tenancy, which means that several independent customers or business units can share a single database table without being aware of one another. The RCAC row permission ensures each user sees only the rows they are entitled to view because the enforcement is handled by DB2 and not the application logic. - -Label-based access control (LBAC): RCAC and LBAC are not the same thing. LBAC is a security model that is primarily intended for government applications. LBAC requires that data and users be classified with a fixed set of rules that are implemented. RCAC is a general-purpose security model that is primarily intended for commercial customers. You can use RCAC to create your own security rules, which in turn allows for more flexibility. - -## 3.1.1 Row permission and column mask definitions - -The following sections define row permission and column masks. - -## Row permission - -A row permission is a database object that manifests a row access control rule for a specific table. It is essentially a search condition that describes which rows you can access. For example, a manager can see only the rows that represent his or her employees. - -The SQL CREATE PERMISSION statement that is shown in Figure 3-1 is used to define and initially enable or disable the row access rules. - -Figure 3-1 CREATE PERMISSION SQL statement - -The SQL CREATE PERMISSION statement that is shown in Figure 3-1 is used to define and initially enable or disable the row access rules.Figure 3-1 CREATE PERMISSION SQL statement - - -## Column mask - -A column mask is a database object that manifests a column value access control rule for a specific column in a specific table. It uses a CASE expression that describes what you see when you access the column. For example, a teller can see only the last four digits of a tax identification number. - -Column masks replace the need to create and use views to implement access control. The SQL CREATE MASK statement that is shown in Figure 3-2 is used to define and initially enable or disable the column value access rules. - -Figure 3-2 CREATE MASK SQL statement - - -## 3.1.2 Enabling and activating RCAC - -You can enable, disable, or regenerate row permissions and column masks by using the SQL ALTER PERMISSION statement and the SQL ALTER MASK statement, as shown in Figure 3-3 on page 17. - -Enabling and disabling effectively turns on or off the logic that is contained in the row permission or column mask. Regenerating causes the row permission or column mask to be regenerated. The row permission definition in the catalog is used and existing dependencies and authorizations, if any, are retained. The row permission definition is reevaluated as though the row permission were being created. Any user-defined functions (UDFs) that are referenced in the row permission must be resolved to the same secure UDFs as were resolved during the original row permission or column mask creation. The regenerate option can be used to ensure that the RCAC logic is intact and still valid before any user attempts to access the table. - -Note: An exclusive lock is required on the table object to perform the alter operation. All open cursors must be closed. - -Figure 3-3 ALTER PERMISSION and ALTER MASK SQL statements - - -You can activate and deactivate RCAC for new or existing tables by using the SQL ALTER TABLE statement (Figure 3-4). The ACTIVATE or DEACTIVATE clause must be the option that is specified in the statement. No other alterations are permitted at the same time. The activating and deactivating effectively turns on or off all RCAC processing for the table. Only enabled row permissions and column masks take effect when activating RCAC. - -Note: An exclusive lock is required on the table object to perform the alter operation. All open cursors must be closed. - -Figure 3-4 ALTER TABLE SQL statement - - -When row access control is activated on a table, a default permission is established for that table. The name of this permission is QIBM_DEFAULT_ _. This default permission contains a simple piece of logic (0=1) which is never true. The default permission effectively denies access to every user unless there is a permission defined that allows access explicitly. If row access control is activated on a table, and there is no permission that is defined, no one has permission to any rows. All queries against the table produce an empty set. - -It is possible to define, create, and enable multiple permissions on a table. Logically, all of the permissions are ORed together to form a comprehensive test of the user's ability to access the data. A column can have only one mask that is defined over it. From an implementation standpoint, it does not matter if you create the column masks first or the row permissions first. - -Note: If a user does not have permission to access the row, the column mask logic is not invoked. - -## 3.2 Special registers and built-in global variables - -This section describes how you can use special registers and built-in global variables to implement RCAC. - -## 3.2.1 Special registers - -A special register is a storage area that is defined for an application process by DB2 and is used to store information that can be referenced in SQL statements. A reference to a special register is a reference to a value that is provided by the current server. - -IBM DB2 for i supports four different special registers that can be used to identify what user profiles are relevant to determining object authorities in the current connection to the server. SQL uses the term runtime authorization ID , which corresponds to a user profile on DB2 for i. Here are the four special registers: - -- GLYPH USER is the runtime user profile that determines the object authorities for the current connection to the server. It has a data type of VARCHAR(18). This value can be changed by the SQL statement SET SESSION AUTHORIZATION . - -- GLYPH SESSION_USER is the same as the USER register, except that it has a data type of VARCHAR(128). - -- GLYPH CURRENT USER was added in IBM i 7.2 and is similar to the USER register, but it has one important difference in that it also reports adopted authority. High-level language programs and SQL routines such as functions, procedures, and triggers can optionally be created to run using either the caller's or the owner's user profile to determine data authorities. For example, an SQL procedure can be created to run under the owner's authority by specifying SET OPTION USRPRF=*OWNER . This special register can also be referenced as CURRENT_USER. It has a data type of VARCHAR(128). - -- GLYPH SYSTEM_USER is the user profile that initiates the connection to the server. It is not used by RCAC, but is included here for completeness. Many jobs, including the QZDASOINIT prestarted jobs, initially connect to the server with a default user profile and then change to use some other user profile. SYSTEM_USER reports this value, typically QUSER for a QZDASOINIT job. It has a data type of VARCHAR(128). - -In addition to these four special registers, any of the DB2 special registers can be referenced as part of the rule text. - -Table 3-1 summarizes these special registers and their values. - -Table 3-1 Special registers and their corresponding values - -| Special register | Corresponding value | -|----------------------|---------------------------------------------------------------------------------------------------------------------------------------| -| USER or SESSION_USER | The effective user of the thread excluding adopted authority. | -| CURRENT_USER | The effective user of the thread including adopted authority. When no adopted authority is present, this has the same value as USER. | -| SYSTEM_USER | The authorization ID that initiated the connection. | - -Figure 3-5 shows the difference in the special register values when an adopted authority is used: - -- GLYPH A user connects to the server using the user profile ALICE. - -- GLYPH USER and CURRENT USER initially have the same value of ALICE. - -- GLYPH ALICE calls an SQL procedure that is named proc1, which is owned by user profile JOE and was created to adopt JOE's authority when it is called. - -- GLYPH While the procedure is running, the special register USER still contains the value of ALICE because it excludes any adopted authority. The special register CURRENT USER contains the value of JOE because it includes any adopted authority. - -- GLYPH When proc1 ends, the session reverts to its original state with both USER and CURRENT USER having the value of ALICE. - -Figure 3-5 Special registers and adopted authority - - -## 3.2.2 Built-in global variables - -Built-in global variables are provided with the database manager and are used in SQL statements to retrieve scalar values that are associated with the variables. - -IBM DB2 for i supports nine different built-in global variables that are read only and maintained by the system. These global variables can be used to identify attributes of the database connection and used as part of the RCAC logic. - -Table 3-2 lists the nine built-in global variables. - -Table 3-2 Built-in global variables - -| Global variable | Type | Description | -|-----------------------|--------------|----------------------------------------------------------------| -| CLIENT_HOST | VARCHAR(255) | Host name of the current client as returned by the system | -| CLIENT_IPADDR | VARCHAR(128) | IP address of the current client as returned by the system | -| CLIENT_PORT | INTEGER | Port used by the current client to communicate with the server | -| PACKAGE_NAME | VARCHAR(128) | Name of the currently running package | -| PACKAGE_SCHEMA | VARCHAR(128) | Schema name of the currently running package | -| PACKAGE_VERSION | VARCHAR(64) | Version identifier of the currently running package | -| ROUTINE_SCHEMA | VARCHAR(128) | Schema name of the currently running routine | -| ROUTINE_SPECIFIC_NAME | VARCHAR(128) | Name of the currently running routine | -| ROUTINE_TYPE | CHAR(1) | Type of the currently running routine | - -## 3.3 VERIFY_GROUP_FOR_USER function - -The VERIFY_GROUP_FOR_USER function was added in IBM i 7.2. Although it is primarily intended for use with RCAC permissions and masks, it can be used in other SQL statements. The first parameter must be one of these three special registers: SESSION_USER, USER, or CURRENT_USER. The second and subsequent parameters are a list of user or group profiles. Each of these values must be 1 - 10 characters in length. These values are not validated for their existence, which means that you can specify the names of user profiles that do not exist without receiving any kind of error. - -If a special register value is in the list of user profiles or it is a member of a group profile included in the list, the function returns a long integer value of 1. Otherwise, it returns a value of 0. It never returns the null value. - -Here is an example of using the VERIFY_GROUP_FOR_USER function: - -- 1. There are user profiles for MGR, JANE, JUDY, and TONY. - -- 2. The user profile JANE specifies a group profile of MGR. - -- 3. If a user is connected to the server using user profile JANE, all of the following function invocations return a value of 1: - -VERIFY_GROUP_FOR_USER (CURRENT_USER, 'MGR') VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR') VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR', 'STEVE') The following function invocation returns a value of 0: VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JUDY', 'TONY') - -## 3.4 Establishing and controlling accessibility by using the RCAC rule text - -When defining a row permission or column mask, the "magic" of establishing and controlling accessibility comes from the rule text . The rule text represents the search criteria and logic that is implemented by the database engine. - -In the case of a row permission, the rule text is the "test" of whether the user can access the row. If the test result is true, the row can be accessed. If the test result is false, the row essentially does not exist for the user. From a set-at-a-time perspective, the permission defines which rows can be part of the query result set, and which rows cannot. - -In the case of a column mask, the rule text is both the test of whether the user can see the actual column value, and it is the masking logic if the user cannot have access to actual column value. - -For a simple example of implementing row permissions and column masks, see 3.6, "Human resources example" on page 22. - -In general, almost any set-based, relational logic is valid. For the row permission, the search condition follows the same rules that are used by the search condition in a WHERE clause. - -For the column mask, the logic follows the same rules as the CASE expression. The result data type, length, null attribute, and CCSID of the CASE expression must be compatible with the data type of the column. If the column does not allow the null value, the result of the CASE expression cannot be the NULL value. The application or interface making the data access request is expecting that all of the column attributes and values are consistent with the original definition, regardless of any masking. - -For more information about what is permitted, see the "Database programming" topic of the IBM i 7.2 Knowledge Center, found at: - -http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgdbp.htm?lang =en - -One of the first tasks in either the row permission or the column mask logic is to determine who the user is, and whether they have access to the data. Elegant methods to establish the identity and attributes of the user can be employed by using the special registers, global variables, and the VERIFY function. After the user's identity is established, it is a simple matter of allowing or disallowing access by using true or false testing. The examples that are included in this paper demonstrate some of the more common and obvious techniques. - -More sophisticated methods can employ existential, day of year / time of day, and relational comparisons with set operations. For example, you can use a date master or date dimension table to determine whether the current date is a normal business day. If the current date is a valid business day, then access is allowed. If the current date is not a business day (for example a weekend day or holiday), access is denied. This test can be accomplished by performing a lookup using a subquery, such as the one that is shown in Example 3-1. - -Example 3-1 Subquery that is used as part of the rule - -DATE_MASTER D - -D.BUSINESS_DAY = 'Y') - -CURRENT_DATE IN (SELECT D.DATE_KEY FROM WHERE - -Given that joins and subqueries can be used to perform set-based operations against existing data that is housed in other objects, almost any relational test can be constructed. If the data in the objects is manipulated over time, the RCAC test logic (and user query results) can be changed without modifying the actual row permission or column mask. This includes moving a user from one group to another or changing a column value that is used to allow or disallow access. For example, if Saturday is now a valid business day, only the BUSINESS_DAY value in the DATE_MASTER must be updated, not the permission logic. This technique can potentially avoid downtime because of the exclusive lock that is needed on the table when adding or changing RCAC definitions. - -## 3.5 SELECT, INSERT, and UPDATE behavior with RCAC - -RCAC provides a database-centric approach to determining which rows can be accessed and what column values can be seen by a specific user. Given that the control is handled by DB2 internally, every data manipulation statement is under the influence of RCAC, with no exceptions. When accessing the table, the SELECT statements, searched UPDATE statements, and searched DELETE statements implicitly and transparently contain the row permission and the column mask rule text. This means that the data set can be logically restricted and reduced on a user by user basis. - -Furthermore, DB2 prevents an INSERT statement from inserting a row or an UPDATE statement from modifying a row such that the current user cannot be permitted to access it. You cannot create a situation in which the data you inserted or changed is no longer accessible to you. - -For more information and considerations about data movement in an RCAC environment, see Chapter 6, "Additional considerations" on page 85. - -Note: DB2 does not provide any indication back to the user that the data set requested was restricted or reduced by RCAC. This is by design, as it helps minimize any changes to the applications accessing the data. - -## 3.6 Human resources example - -This section illustrates with a simple example the usage of RCAC on a typical Human Resources application (schema). In this sample Human Resources schema, there is an important table that is called EMPLOYEES that contains all the information that is related to the employees of the company. Among the information that normally is stored in the EMPLOYEES table, there is some sensitive information that must be hidden from certain users: - -- GLYPH Tax_Id information - -- GLYPH YEAR of the birth date of the employee (hiding the age of the employee) - -In this example, there are four different types of users: - -- GLYPH Employees - -- GLYPH Managers - -- GLYPH Human Resources Manager - -- GLYPH Consultant/IT Database Engineer (In this example, this person is an external consultant that is not an employee of the company.) - -The following sections describe step-by-step what is needed to be done to implement RCAC in this environment. - -## 3.6.1 Assigning the QIBM_DB_SECADM function ID to the consultants - -The consultant must have authority to implement RCAC, so you must use one of the function IDs that are provided in DB2 for i (see 2.1.5, "Security Administrator function: QIBM_DB_SECADM" on page 9). Complete the following steps: - -- 1. Run the Change Functional Usage ( CHGFCNUSG ) CL commands that are shown in Example 3-2. These commands must be run by someone that has the *SECOFR authority. - -Example 3-2 Function ID required to implement RCAC - -CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED) CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(MCAIN) USAGE(*ALLOWED) - -- 2. There is a way to discover which user profiles have authorization to implement RCAC. This can be done by running the SQL statement that is shown in Example 3-3. - -Example 3-3 Verifying what user profiles have authorization to implement RCAC - -SELECT function_id, user_name, usage, user_type FROM qsys2.function_usage WHERE function_id ='QIBM_DB_SECADM' ORDER BY user_name; - -- 3. The result of the SQL statement is shown in Figure 3-6. In this example, either MCAIN or HBEDOYA can implement RCAC in the Human Resources database. - -Figure 3-6 Result of the function ID query - -## 3.6.2 Creating group profiles for the users and their roles - -Assuming that all the employees have a valid user profile, the next step is to create group profiles to group the employees. Complete the following steps: - -- 1. In this example, there are three group profiles: - -- -HR (Human Resource personnel) - -- -MGR (Managers) - -- -EMP (Employees) - -These are created by creating user profiles with no password. Example 3-4 shows the Create User Profile ( CRTUSRPRF ) CL commands that you use to create these group profiles. - -Example 3-4 Creating group profiles - -CRTUSRPRF USRPRF(EMP) PASSWORD() TEXT('Employees Group') CRTUSRPRF USRPRF(MGR) PASSWORD() TEXT('Managers Group') CRTUSRPRF USRPRF(HR) PASSWORD() TEXT('Human Resources Group') - -- 2. You now must assign users to a group profile. Employees go in to the EMP group profile, Managers go into the MGR group profile, and Human Resource employees go into the HR group profile. For simplicity, this example selects one employee (DSSMITH), one manager (TQSPENSER), and one HR analyst (VGLUCCHESS). - -Note: Neither of the consultants (MCAIN and HBEDOYA) belong to any group profile. - -## 3.6.3 Demonstrating data access without RCAC - -Before implementing RCAC, run some simple SQL statements to demonstrate data access without RCAC. Complete the following steps: - -- 1. The first SQL statement, which is shown in Example 3-5, basically counts the total number of rows in the EMPLOYEES table. - -Example 3-5 Counting the number of employees - -SELECT COUNT(*) as ROW_COUNT FROM HR_SCHEMA.EMPLOYEES; - -The result of this query is shown in Figure 3-7, which is the total number of employees of the company. - -Figure 3-7 Number of employees - - -- 2. Run a second SQL statement (shown in Example 3-6) that lists the employees. If you have read access to the table, you see all the rows no matter who you are. - -Example 3-6 Displaying the information of the Employees - -SELECT EMPLOYEE_ID, LAST_NAME, JOB_DESCRIPTION, DATE_OF_BIRTH, TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE FROM HR_SCHEMA.EMPLOYEES - -## The result of this query is shown in Figure 3-8. - -Figure 3-8 List of employees without RCAC enabled - -## 3.6.4 Defining and creating row permissions - -Implement RCAC on the EMPLOYEES table by completing the following steps: - -- 1. Start by defining a row permission. In this example, the rules to enforce include the following ones: - -- -Human Resources employees can see all the rows. - -- -Managers can see only information for the employees that they manage. - -- -Employees can see only their own information. - -- -Consultants are not allowed to see any rows in the table. - -To implement this row permission, run the SQL statement that is shown in Example 3-7. - -Example 3-7 Creating a permission for the EMPLOYEE table - -CREATE PERMISSION HR_SCHEMA.PERMISSION1_ON_EMPLOYEES ON HR_SCHEMA.EMPLOYEES AS EMPLOYEES FOR ROWS WHERE ( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1 ) OR ( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND ( EMPLOYEES . MANAGER_OF_EMPLOYEE = SESSION_USER OR EMPLOYEES . USER_ID = SESSION_USER ) ) OR ( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1 AND EMPLOYEES . USER_ID = SESSION_USER ) ENFORCED FOR ALL ACCESS ENABLE ; - -- 2. Look at the definition of the table and see the permissions, as shown in Figure 3-9. QIBM_DEFAULT_EMPLOYEE_HR_SCHEMA is the default permission, as described in 3.1.2, "Enabling and activating RCAC" on page 16. - -Figure 3-9 Row permissions that are shown in System i Navigator - - -## 3.6.5 Defining and creating column masks - -Define the different masks for the columns that are sensitive by completing the following steps: - -- 1. Start with the DAY_OF_BIRTH column. In this example, the rules to enforce include the following ones: - -- -Human Resources can see the entire date of birth of the employees. - -- -Employees can see only their own date of birth. - -- -Managers can see the date of birth of their employees masked with YEAR being 9999. - -To implement this column mask, run the SQL statement that is shown in Example 3-8. - -Example 3-8 Creation of a mask on the DATE_OF_BIRTH column - -CREATE MASK HR_SCHEMA.MASK_DATE_OF_BIRTH_ON_EMPLOYEES ON HR_SCHEMA.EMPLOYEES AS EMPLOYEES FOR COLUMN DATE_OF_BIRTH - -RETURN CASE - -WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR', 'EMP' ) = 1 THEN EMPLOYEES . DATE_OF_BIRTH WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER = EMPLOYEES . USER_ID THEN EMPLOYEES . DATE_OF_BIRTH WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER <> EMPLOYEES . USER_ID THEN ( 9999 || '-' || MONTH ( EMPLOYEES . DATE_OF_BIRTH ) || '-' || DAY (EMPLOYEES.DATE_OF_BIRTH )) ELSE NULL END ENABLE ; - -- 2. The other column to mask in this example is the TAX_ID information. In this example, the rules to enforce include the following ones: - -- -Human Resources can see the unmasked TAX_ID of the employees. - -- -Employees can see only their own unmasked TAX_ID. - -- -Managers see a masked version of TAX_ID with the first five characters replaced with the X character (for example, XXX-XX-1234). - -- -Any other person sees the entire TAX_ID as masked, for example, XXX-XX-XXXX. - -- To implement this column mask, run the SQL statement that is shown in Example 3-9. - -Example 3-9 Creating a mask on the TAX_ID column - -CREATE MASK HR_SCHEMA.MASK_TAX_ID_ON_EMPLOYEES ON HR_SCHEMA.EMPLOYEES AS EMPLOYEES FOR COLUMN TAX_ID RETURN CASE WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1 THEN EMPLOYEES . TAX_ID WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER = EMPLOYEES . USER_ID THEN EMPLOYEES . TAX_ID WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER <> EMPLOYEES . USER_ID THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( EMPLOYEES . TAX_ID , 8 , 4 ) ) WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1 THEN EMPLOYEES . TAX_ID ELSE 'XXX-XX-XXXX' END ENABLE ; - -- 3. Figure 3-10 shows the masks that are created in the HR_SCHEMA. - -Figure 3-10 Column masks shown in System i Navigator - - -## 3.6.6 Activating RCAC - -Now that you have created the row permission and the two column masks, RCAC must be activated. The row permission and the two column masks are enabled (last clause in the scripts), but now you must activate RCAC on the table. To do so, complete the following steps: - -- 1. Run the SQL statements that are shown in Example 3-10. - -## Example 3-10 Activating RCAC on the EMPLOYEES table - -- /* Active Row Access Control (permissions) */ - -/* Active Column Access Control (masks) ALTER TABLE HR_SCHEMA.EMPLOYEES ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL; - -*/ - -- 2. Look at the definition of the EMPLOYEE table, as shown in Figure 3-11. To do this, from the main navigation pane of System i Navigator, click Schemas  HR_SCHEMA  Tables , right-click the EMPLOYEES table, and click Definition . - -Figure 3-11 Selecting the EMPLOYEES table from System i Navigator - - -- 3. The EMPLOYEES table definition is displayed, as shown in Figure 3-12. Note that the Row access control and Column access control options are checked. - -Figure 3-12 RCAC enabled on the EMPLOYEES table - - -## 3.6.7 Demonstrating data access with RCAC - -You are now ready to start testing RCAC with the four different users. Complete the following steps: - -- 1. The first SQL statement that is shown in Example 3-11 illustrates the EMPLOYEE count. You know that there are 42 rows from the query that was run before RCAC was put in place (see 3.6.3, "Demonstrating data access without RCAC" on page 24). - -Example 3-11 EMPLOYEES count - -SELECT COUNT(*) as ROW_COUNT FROM HR_SCHEMA.EMPLOYEES; - -- 2. The result of the query for a user that belongs to the HR group profile is shown in Figure 3-13. This user can see all the 42 rows (employees). - -Figure 3-13 Count of EMPLOYEES by HR - - -- 3. The result of the same query for a user who is logged on as TQSPENSER (Manager) is shown in Figure 3-14. TQSPENSER has five employees in his department and he can also see his own row, which is why the count is 6. - -Figure 3-14 Count of EMPLOYEES by a manager - - -- 4. The result of the same query that is run by an employee (DSSMITH) gives the result that is shown in Figure 3-15. Each employee can see only his or her own data (row). - -Figure 3-15 Count of EMPLOYEES by an employee - - -- 5. The result of the same query that is run by the Consultant/DBE gives the result that is shown in Figure 3-16. The consultants/DBE can manage and implement RCAC, but they do not see any rows at all. - -Figure 3-16 Count of EMPLOYEES by a consultant - - -Does the result make sense? Yes, it does because RCAC is enabled. - -- 6. Run queries against the EMPLOYEES table. The query that is used in this example runs and tests with the four different user profiles and is the same query that was run in 3.6.3, "Demonstrating data access without RCAC" on page 24. It is shown in Example 3-12. - -Example 3-12 SELECT statement to test with the different users - -SELECT EMPLOYEE_ID, LAST_NAME, JOB_DESCRIPTION, DATE_OF_BIRTH, TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE FROM HR_SCHEMA.EMPLOYEES - -- 7. Figure 3-17 shows the results of the query for a Human Resources (VGLUCCHESS) user profile. The user can see all the rows and all the columns. - -Figure 3-17 SQL statement result by Human Resources user profile - -- 8. Figure 3-18 shows the results of the same query for the Manager (TQSPENSER). Notice the masking of the DATE_OF_BIRTH and TAX_ID columns. - -Figure 3-18 SQL statement result by Manager profile - -- 9. Figure 3-19 shows the results of the same query for an employee (DSSMITH). The employee can only see only his own data with no masking at all. - -Figure 3-19 SQL statement result by an employee profile - -- 10.Figure 3-20 shows the results of the same query for the Consultant/DBE, who is not one of the company's employees. - -Figure 3-20 SQL statement result by Consultant/DBE profile - -## 3.6.8 Demonstrating data access with a view and RCAC - -This section covers data access with a view and RCAC. Complete the following steps: - -- 1. The EMPLOYEES table has a column that is called On_Leave_Flag (Figure 3-21 on page 33) indicating that the employee is on Leave of Absence. For this purpose, a view is created that lists only the employees that are on leave. - -Figure 3-21 Employees on leave - -- 2. Example 3-13 shows the definition of the view. - -Example 3-13 VIew of employees on leave - -CREATE VIEW HR_SCHEMA.EMPLOYEES_ON_LEAVE (EMPLOYEE_ID, FIRST_NAME, MIDDLE_INITIAL, LAST_NAME, WORK_DEPARTMENT, PHONE_EXTENSION, JOB_DESCRIPTION, DATE_OF_BIRTH, - -TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE, ON_LEAVE_FLAG ) - -AS - -SELECT EMPLOYEE_ID, FIRST_NAME , MIDDLE_INITIAL, LAST_NAME , WORK_DEPARTMENT, PHONE_EXTENSION, JOB_DESCRIPTION, DATE_OF_BIRTH, TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE, - -ON_LEAVE_FLAG - -FROM - -HR_SCHEMA.EMPLOYEES - -WHERE - -ON_LEAVE_FLAG = 'Y'; - -- 3. Use the view to query the data and see who is on leave. The SQL statement that is used is shown in Example 3-14: - -Example 3-14 SQL statement for employees on leave - -SELECT EMPLOYEE_ID, LAST_NAME, JOB_DESCRIPTION, DATE_OF_BIRTH, TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE FROM - -HR_SCHEMA.EMPLOYEES_ON_LEAVE; - -- 4. Start with the Human Resources person (VGLUCCHESS) and see what is the result of the previous query. He sees the two employees that are on leave and no masking is done over the DATE_OF_BIRTH and TAX_ID columns. The results of the query are shown in Figure 3-22. - -Figure 3-22 Employees on leave - Human Resources user - -- 5. Figure 3-23 shows what the Manager (TQSPENSER) gets when he runs the same query over the view. He sees only the employees that are on leave that are managed by him. In this example, it is one employee. The columns are masked, which confirms that RCAC is applied to the view as well. - -Figure 3-23 Employee on leave - Manager of Field Reps user - -- 6. Figure 3-24 shows what the employee (DSSMITH) gets when he runs the same query over the view. The employee gets an empty set or he gets only himself if he is on leave. - -. - -Figure 3-24 Employees on leave - employee user - - - - -Chapter 4. - -4 - -## Implementing Row and Column Access Control: Banking example - -This chapter illustrates the Row and Column Access Control (RCAC) concepts using a banking example. Appendix A, "Database definitions for the RCAC banking example" on page 121 provides a script that you can use to create all the database definitions or DDLs to re-create this RCAC example. - -The following topics are covered in this chapter: - -- GLYPH Business requirements for the RCAC banking scenario - -- GLYPH Description of the users roles and responsibilities - -- GLYPH Implementation of RCAC - -## 4.1 Business requirements for the RCAC banking scenario - -As part of a new internet banking project, the Bank decides to raise the level of data access control on the following three tables that are involved in the new customer-facing application: - -- GLYPH CUSTOMERS - -- GLYPH ACCOUNTS - -- GLYPH TRANSACTIONS - -RCAC will be used to restrict access to the rows in these three tables by using permissions, and to restrict column values by using masks. The default position is that no user can access the rows in the tables. From there, specific bank employees are allowed access only to the rows for their job responsibilities. In addition, columns containing personal or sensitive data are masked appropriately. Bank customers are allowed access to only their rows and column values. - -In this example, it is assumed that the Bank employees have access to the tables when working on the premises only. Employee access to data is provided by programs and tools using standard DB2 interfaces, such as embedded SQL, ODBC, JDBC, and CLI. The database connection authentication for these interfaces uses the employee's personal and unique IBM i user profile. Operating in their professional role, employees do not have access to bank data through the Internet. - -Bank customers have access to their accounts and transactions by using a new web application. Each customer has unique credentials for logging in to the application. The authentication of the customer is handled by the web server. After the customer is authenticated, the web server establishes a connection to DB2 for data access. This connection uses a common IBM i user profile that is known as WEBUSER. This user profile is secured and is used only by the web application. No Bank employee has access to the WEBUSER profile, and no customer has an IBM i user profile. - -The customer's identity is passed to DB2 by using a global variable. The global variable is secured and can be accessed only by the WEBUSER. The web application sets the CUSTOMER_LOGIN_ID variable to the customer's login value. This value is compared to the customer's login value that is found in the CUSTOMER_LOGIN_ID column of the CUSTOMERS table. - -Applications that do not use the web interface do not have to be changed because the global variable is NULL by default. - -A diagram of the internet banking architecture is shown in Figure 4-1: - -- GLYPH The row permission and column masks for the CUSTOMERS table are based on the group of which the user profile is part. If the user is a customer, their specific login ID also is tested. - -- GLYPH The row permission and column mask for the ACCOUNTS table are based on the CUSTOMERS table permission rules. A subquery is used to connect the accounts (child) with the customer (parent). - -- GLYPH The row permission for the TRANSACTIONS table is based on the ACCOUNTS table permission rules and the CUSTOMERS table permission rules. A subquery is used to connect the transactions (child) with the account (parent) and the account (child) with the customer (parent). - -Figure 4-1 Internet banking example - - -## 4.2 Description of the users roles and responsibilities - -During the requirements gathering phase, the following groups of users are identified and codified: - -- GLYPH SECURITY: Security officer and security administrators - -- GLYPH DBE: Database engineers - -- GLYPH ADMIN: Bank business administrators - -- GLYPH TELLER: Bank tellers - -- GLYPH CUSTOMER: Bank customers using the internet - -- GLYPH PUBLIC: Anyone not already in a group - -Based on their respective roles and responsibilities, the users (that is, a group) are controlled by row permissions and column masks. The chart that is shown in Figure 4-2 shows the rules for row and column access in this example. - -Figure 4-2 Rules for row and column access - - -The chart that is shown in Figure 4-3 shows the column access that is allowed by group and lists the column masks by table. - -Figure 4-3 Column masks - -| | | CUSTOMERS | ACCOUNTS | -|----------|----------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------| -| SECURITY | No Rows | CUSTOMER_DRIVERS_LICENSE_NUMBER CUSTOMER_EMAIL CUSTOMER_LOGIN_ID CUSTOMER_SECURITY_QUESTION CUSTOMER_SECURITY_QUESTION_ANSWER CUSTOMER_TAX_ID | ACCOUNT_NUMBER | -| DBE | All Rows | CUSTOMER_DRIVERS_LICENSE_NUMBER CUSTOMER_EMAIL CUSTOMER_LOGIN_ID CUSTOMER_SECURITY_QUESTION CUSTOMER_SECURITY_QUESTION_ANSWER CUSTOMER_TAX_ID | ACCOUNT NUMBER ACCOUNT_NUMBER | -| ADMIN | All Rows | None | None | -| TELLER | All Rows | CUSTOMER_EMAIL CUSTOMER_LOGIN_ID CUSTOMER_SECURITY_QUESTION CUSTOMER_SECURITY_QUESTION_ANSWER CUSTOMER TAX ID _ _ | None | -| CUSTOMER | Own Rows | None | None | -| PUBLIC | No Rows | CUSTOMER_DRIVERS_LICENSE_NUMBER CUSTOMER_EMAIL CUSTOMER LOGIN ID CUSTOMER_LOGIN_ID CUSTOMER_SECURITY_QUESTION CUSTOMER_SECURITY_QUESTION_ANSWER CUSTOMER_TAX_ID | ACCOUNT_NUMBER | - -For the demonstration and testing of RCAC in this example, the following users interact with the database. Furthermore, the column masking rules are developed independently of the row permissions. If a person does not have permission to access the row, the column mask processing does not occur. - -- GLYPH Hernando Bedoya is a DB2 for i database engineer with the user profile of HBEDOYA. He is part of the DBE group. - -- GLYPH Mike Cain is a DB2 for i database engineer with the user profile of MCAIN. He is part of the DBE group. - -- GLYPH Veronica G. Lucchess is a bank account administrator with the user profile of VGLUCCHESS. She is part of the ADMIN group. - -- GLYPH Tom Q. Spenser is a bank teller with the user profile of TQSPENSER. He is part of the TELLER group. - -- GLYPH The IT security officer has the user profile of SECURITY. She is not part of any group. - -- GLYPH The online banking web application uses the user profile WEBUSER. This profile is part of the CUSTOMER group. Any future customer-facing applications can also use this group if needed. - -- GLYPH Adam O. Olsen is a bank customer with a web application login ID of KLD72CQR8JG. - -## 4.3 Implementation of RCAC - -Figure 4-4 shows the data model of the banking scenario that is used in this example. - -Figure 4-4 Data model of the banking scenario - - -This section covers the following steps: - -- GLYPH Reviewing the tables that are used in this example - -- GLYPH Assigning function ID QIBM_DB_SECADM to the Database Engineers group - -- GLYPH Creating group profiles for the users and their roles - -- GLYPH Creating the CUSTOMER_LOGIN_ID global variable - -- GLYPH Defining and creating row permissions - -- GLYPH Defining and creating column masks - -- GLYPH Restricting the inserting and updating of masked data - -- GLYPH Activating row and column access control - -- GLYPH Reviewing row permissions - -- GLYPH Demonstrating data access with RCAC - -- GLYPH Query implementation with RCAC activated - -## 4.3.1 Reviewing the tables that are used in this example - -This section reviews the tables that are used in this example. As shown in Figure 4-5, there are three main tables that are involved in the data model: CUSTOMERS, ACCOUNTS, and TRANSACTIONS. There are 90 customers. - -Figure 4-5 Tables that are used in the banking example - - -Note: Appendix A, "Database definitions for the RCAC banking example" on page 121 provides a script that you can use to create all the database definitions or DDLs to re-create this RCAC example. - -To review the attributes of each table that is used in this banking example, complete the following steps: - -- 1. Review the columns of each the tables through System i Navigator. Expand Database  named Database  Schemas  BANK_SCHEMA  Tables . - -- 2. Right-click the CUSTOMERS table and select Definition . Figure 4-6 shows the attributes for the CUSTOMERS table. The Row access control and Column access control options are not selected, which indicates that the table does not have RCAC implemented. - -Figure 4-6 CUSTOMERS table attributes - - -- 3. Click the Columns tab to see the columns of the CUSTOMERS table, as shown in Figure 4-7. - -Figure 4-7 Column definitions of the CUSTOMERS table - -- 4. Click the Key Constraints , Foreign Key Constraints , and Check Constraints tabs to review the key, foreign, and check constraints on the CUSTOMERS table, as shown in Figure 4-8. There are no Foreign Key Constraints or Check Constraints on the CUSTOMERS table. - -Figure 4-8 Reviewing the constraints on the CUSTOMERS table - - -- 5. Review the definition of the ACCOUNTS table. The definition of the ACCOUNTS table is shown in Figure 4-9. RCAC has not been defined for this table yet. - -Figure 4-9 ACCOUNTS table attributes - - -- 6. Click the Columns tab to see the columns of the ACCOUNTS table, as shown in Figure 4-10. - -Figure 4-10 Column definitions of the ACCOUNTS table - -- 7. Click the Key Constraints , Foreign Key Constraints , and Check Constraints tabs to review the key, foreign, and check constraints on the ACCOUNTS table, as shown in Figure 4-11. There is one Foreign Key Constraint and no Check Constraints on the ACCOUNTS table. - -Figure 4-11 Reviewing the constraints on the ACCOUNTS table - - -- 8. Review the definition of the TRANSACTIONS table. The definition of the TRANSACTIONS table is shown in Figure 4-12. RCAC is not defined for this table yet. - -Figure 4-12 TRANSACTIONS table attributes - - -- 9. Click the Columns tab to see the columns of the TRANSACTIONS table, as shown in Figure 4-13. - -Figure 4-13 Column definitions of the TRANSACTIONS table - -- 10.Click the Key Constraints , Foreign Key Constraints , and Check Constraints tabs to review the key, foreign, and check constraints on the TRANSACTIONS table, as shown in Figure 4-14. There is one Foreign Key Constraint and one Check Constraint on the TRANSACTIONS table. - -Figure 4-14 Reviewing the constraints on the TRANSACTIONS table - - -Now that you have reviewed the database model for this example, the following sections describe the steps that are required to implement RCAC in this banking scenario. - -## 4.3.2 Assigning function ID QIBM_DB_SECADM to the Database Engineers group - -The first step is to assign the appropriate function usage ID to the Database Engineers (DBEs) that will be implementing RCAC. For a description of function usage IDs, see 2.1, "Roles" on page 8. In this example, the DBEs are users MCAIN and HBEDOYA. - -## Complete the following steps: - -- 1. Right-click the database connection and select Application Administration , as shown in Figure 4-15. - -Figure 4-15 Application administration - - -- 2. The Application Administration window opens, as shown in Figure 4-16. Click IBM i  Database and select the function usage ID of Database Security Administrator . - -Figure 4-16 Application administration for IBM i - - -- 3. Click Customize for the function usage ID of Database Security Administrator, as shown in Figure 4-17. - -Figure 4-17 Customizing the Database Security Administrator function usage ID - - -- 4. The Customize Access window opens, as shown in Figure 4-18. Click the users that need to implement RCAC. For this example, HBEDOYA and MCAIN are selected. Click Add and then click OK . - -Figure 4-18 Customize Access window - - -- 5. The Application Administrator window opens again. The function usage ID of Database Security Administrator now has an X in the Customized Access column, as shown in Figure 4-19. - -Figure 4-19 Function usage ID Database Security Administrator customized - - -- 6. Run an SQL query that shows which user profiles are enabled to define RCAC. The SQL query is shown in Figure 4-20. - -Figure 4-20 Query to display user profiles with function usage ID for RCAC - - -## 4.3.3 Creating group profiles for the users and their roles - -The next step is to create the different group profiles (ADMIN, CUSTOMER, TELLER, and DBE) and assign the different user profiles to the different group profiles. For a description of the different groups and users for this example, see 4.2, "Description of the users roles and responsibilities" on page 39. - -## Complete the following steps: - -- 1. On the main navigation pane of System i Navigator, right-click Groups and select New Group , as shown in Figure 4-21. - -Figure 4-21 Creating group profiles - - -- 2. The New Group window opens, as shown in Figure 4-22. For each new group, enter the Group name (ADMIN, CUSTOMER, TELLER, and DBE) and add the user profiles that are associated to this group by selecting the user profile and clicking Add . - -Figure 4-22 shows adding user TQSPENCER to the TELLER group profile. - -Figure 4-22 Creating group profiles and adding users - - -- 3. After you create all the group profiles, you should see them listed in System i Navigator under Users and Groups  Groups , as shown in Figure 4-23. - -Figure 4-23 Newly created group profiles - - -## 4.3.4 Creating the CUSTOMER_LOGIN_ID global variable - -In this step, you create a global variable that is used to capture the Customer_Login_ID information, which is required to validate the permissions. For more information about global variables, see 3.2.2, "Built-in global variables" on page 19. - -## Complete the following steps: - -- 1. From System i Navigator, under the schema Bank_Schema, right-click Global Variable and select New  Global Variable , as shown in Figure 4-24. - -Figure 4-24 Creating a global variable - - -- 2. The New Global Variable window opens, as shown in Figure 4-25. Enter the global variable name of CUSTOMER_LOGIN_ID, select the data type of VARCHAR, and leave the default value of NULL. This default value ensures that users that do not use the web interface do not have permission to access the data. Click OK . - -Figure 4-25 Creating a global variable called CUSTOMER_LOGIN_ID - - -- 3. Now that the global variable is created, assign permissions to the variable so that it can be set by the program. Right-click the CUSTOMER_LOGIN_ID global variable and select Permissions , as shown in Figure 4-26. - -Figure 4-26 Setting permissions on the CUSTOMER_LOGIN_ID global variable - - -- 4. The Permissions window opens, as shown in Figure 4-27. Select Change authority for Webuser so that the application can set this global variable. - -Figure 4-27 Setting change permissions for Webuser on the CUSTOMER_LOGIN_ID global variable - - -## 4.3.5 Defining and creating row permissions - -You now ready to define the row permissions of the tables. Complete the following steps: - -- 1. From the navigation pane of System i Navigator, click Schemas  BANK_SCHEMA , right-click Row Permissions , and select New  Row Permission , as shown in Figure 4-28. - -Figure 4-28 Selecting new row permissions - - -- 2. The New Row Permission window opens, as shown in Figure 4-29. Enter the information regarding the row permissions on the CUSTOMERS table. This row permission defines what is established in the following policy: - -- -User profiles that belong to DBE, ADMIN, and TELLER group profiles can see all the rows. - -- -User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER user) can see only the rows that match their customer login ID. The login ID value representing the online banking user is passed from the web application to the database by using the global variable CUSTOMER_LOGIN_ID. The permission rule uses a subquery to check whether the global variable matches the CUSTOMER_LOGIN_ID column value in the CUSTOMERS table. - -- -Any other user profile cannot see any rows at all. - -Select the Enabled option. Click OK . - -Figure 4-29 New row permissions on the CUSTOMERS table - - -- 3. Define the row permissions for the ACCOUNTS table. The New Row Permission window opens, as shown in Figure 4-30. Enter the information regarding the row permissions on the ACCOUNTS table. This row permission defines what is established in the following policy: - -- -User profiles that belong to DBE, ADMIN and TELLER group profiles can see all the rows. - -- -User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER user) can see only the rows that match their customer login ID. The login ID value representing the online banking user is passed from the web application to the database by using the global variable CUSTOMER_LOGIN_ID. The permission rule uses a subquery to check whether the global variable matches the CUSTOMER_LOGIN_ID column value in the CUSTOMERS table. - -- -Any other user profile cannot see any rows at all. - -Select the Enabled option. Click OK . - -Figure 4-30 New row permissions on the ACCOUNTS table - - -- 4. Define the row permissions on the TRANSACTIONS table. The New Row Permission window opens, as shown in Figure 4-31. Enter the information regarding the row permissions on the TRANSACTIONS table. This row permission defines what is established in the following policy: - -- -User profiles that belong to DBE, ADMIN, and TELLER group profiles can see all of the rows. - -- -User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER user) can see only the rows that match their customer login ID. The login ID value representing the online banking user is passed from the web application to the database by using the global variable CUSTOMER_LOGIN_ID. The permission rule uses a subquery to check whether the global variable matches the CUSTOMER_LOGIN_ID column value in the CUSTOMERS table. - -Note: You must join back to ACCOUNTS and then to CUSTOMERS by using a subquery to check whether the global variable matches CUSTOMER_LOGIN_ID. Also, if the row permission or column mask rule text references another table with RCAC defined, the RCAC for the referenced table is ignored. - -- -Any other user profile cannot see any rows at all. - -Select the Enabled option. Click OK . - -Figure 4-31 New row permissions on the TRANSACTIONS table - - -- 5. To verify that the row permissions are enabled, from System i Navigator, click Row Permissions , as shown in Figure 4-32. The three row permissions are created and enabled. - -Figure 4-32 List of row permissions on BANK_SCHEMA - - -## 4.3.6 Defining and creating column masks - -This section defines the masks on the columns. Complete the following steps: - -- 1. From the main navigation pane of System i Navigator, click Schemas  BANK_SCHEMA , right-click Column Masks , and select New  Column Mask , as shown in Figure 4-33. - -Figure 4-33 Creating a column mask - - -- 2. In the New Column Mask window, which is shown in Figure 4-34, enter the following information: - -- -Select the CUSTOMERS table on which to create the column mask. - -- -Select the Column to mask; in this example, it is CUSTOMER_EMAIL. - -- -Define the masking logic depending on the rules that you want to enforce. In this example, either the ADMIN or CUSTOMER group profiles can see the entire email address; otherwise, it is masked to ****@****. - -Select the Enabled option. Click OK . - -Figure 4-34 Defining a column mask on the CUSTOMERS table - - -- 3. Repeat steps 1 on page 58 and 2 to create column masks for the following columns: - -- -MASK_DRIVERS_LICENSE_ON_CUSTOMERS - -- -MASK_LOGIN_ID_ON_CUSTOMERS - -- -MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS - -- -MASK_ACCOUNT_NUMBER_ON_ACCOUNTS - -- -MASK_SECURITY_QUESTION_ON_CUSTOMERS - -- -MASK_TAX_ID_ON_CUSTOMERS - -- 4. To verify that the column masks are enabled, from System i Navigator, click Column Masks , as shown in Figure 4-35. The seven column masks are created and enabled. - -Figure 4-35 List of column masks on BANK_SCHEMA - - -## 4.3.7 Restricting the inserting and updating of masked data - -This step defines the check constraints that support the column masks to make sure that on INSERTS or UPDATES, data is not written with a masked value. For more information about the propagation of masked data, see 6.8, "Avoiding propagation of masked data" on page 108. - -## Complete the following steps: - -- 1. Create a check constraint on the column CUSTOMER_EMAIL in the CUSTOMERS table. From the navigation pane of System i Navigator, right-click the CUSTOMERS table and select Definition , as shown Figure 4-36 - -Figure 4-36 Definition of the CUSTOMERS table - - -- 2. From the CUSTOMERS definition window, click the Check Constraints tab and click Add , as shown in Figure 4-37. - -Figure 4-37 Adding a check constraint - - -- 3. The New Check Constraint window opens, as shown in Figure 4-38. Complete the following steps: - -- a. Select the CUSTOMER_EMAIL column. - -- b. Enter the check constraint condition. In this example, specify CUSTOMER_EMAIL to be different from ****@****, which is the mask value. - -- c. Select the On update violation, preserve column value option and click OK . - -Figure 4-38 Specifying a new check constraint on the CUSTOMERS table - - -- 4. Figure 4-39 shows that there is now a check constraint on the CUSTOMERS table that prevents any masked data from being updated to the CUSTOMER_EMAIL column. - -Figure 4-39 Check constraint on the CUSTOMERS table - - -- 5. Create all the other check constraints that are associated to each of the masks on the CUSTOMERS table. After this is done, these constraints should look like the ones that are shown in Figure 4-40. - -Figure 4-40 List of check constraints on the CUSTOMERS table - - -## 4.3.8 Activating row and column access control - -You are now ready to activate RCAC on all three tables in this example. Complete the following steps: - -- 1. Start by enabling RCAC on the CUSTOMERS table. From System i Navigator, right-click the CUSTOMERS table and select Definition . As shown in Figure 4-41, make sure that you select Row access control and Column access control . Click OK . - -Figure 4-41 Enabling RCAC on the CUSTOMERS table - - -- 2. Enable RCAC on the ACCOUNTS table. Right-click the ACCOUNTS table and select Definition . As shown Figure 4-42, make sure that you select Row access control and Column access control . Click OK . - -Figure 4-42 Enabling RCAC on ACCOUNTS - - -- 3. Enable RCAC on the TRANSACTIONS table. Right-click the TRANSACTIONS table and select Definition . As shown in Figure 4-43, make sure that you select Row access control . Click OK . - -Figure 4-43 Enabling RCAC on TRANSACTIONS - - -## 4.3.9 Reviewing row permissions - -This section displays all the row permissions after enabling RCAC. Complete the following steps: - -- 1. From System i Navigator, click Row Permissions , as shown in Figure 4-44. Three additional Row Permissions are added (QIBM_DEFAULT*). There is one per each row permission. - -Figure 4-44 Row permissions after enabling RCAC - - -- 2. Look at one of the row permission definitions by right-clicking it and selecting Definition , as shown in Figure 4-45. - -Figure 4-45 Selecting row permission definition - - -- 3. A window opens, as shown in Figure 4-46. Take note of the nonsensical search condition (0=1) of the QIBM_DEFAULT row permission. This permission is ORed with all of the others and it ensures that if someone does not meet any of the criteria from the row permission then this condition is tested, and because it is false the access is denied. - -Figure 4-46 Search condition of the QIBM_DEFAULT row permission - - -## 4.3.10 Demonstrating data access with RCAC - -You are now ready to test the RCAC definitions. Run the following SQL statements with each type of user (DBE, SECURITY, TELLER, ADMIN, and WEBUSER): - -- GLYPH A SELECT statement that returns the SESSION_USER. - -- GLYPH A SELECT statement that counts the customers from the CUSTOMER table. There are 90 customers in the CUSTOMER table. - -- GLYPH A simple SELECT statement that returns the following output from the CUSTOMERS table ordered by customer_name: - -- -c u s t o m e r _ i d - -- -customer_name - -- -customer_email - -- -c u s t o m e r _ t a x _ i d - -- -customer_drivers_license_number - -## Data access for a DBE user with RCAC - -To test a DBE (MCAIN) user, complete the following steps: - -- 1. Confirm that the user is the user of the session by running the first SQL statement, as shown in Figure 4-47. In this example, MCAIN is the DBE user. - -Figure 4-47 DBE session user - - -- 2. The number of rows that the DBE user MCAIN can see is shown in Figure 4-48. - -Figure 4-48 Number of rows that DBE user can see in the CUSTOMERS table - - -- 3. The result of the third SQL statement is shown in Figure 4-49. Note the masked columns. User MCAIN can see all the rows in the CUSTOMERS table, but there are some columns where the result is masked. - -Figure 4-49 SQL statement that is run by the DBE user with masked columns - -## Data access for SECURITY user with RCAC - -To test a SECURITY user, complete the following steps: - -- 1. Confirm that the user is the user of the session by running the first SQL statement, as shown in Figure 4-50. In this example, SECURITY is the security officer. - -Figure 4-50 SECURITY session user - - -- 2. The number of rows in the CUSTOMERS table that the security officer can see is shown in Figure 4-51. The security officer cannot see any data at all. - -Figure 4-51 Number of rows that the security officer can see in the CUSTOMERS table - - -- 3. The result of the third SQL statement is shown in Figure 4-52. Note the empty set that is returned to the security officer. - -Figure 4-52 SQL statement that is run by the SECURITY user - no results - - -## Data access for TELLER user with RCAC - -To test a Teller (TQSPENCER) user, complete the following steps: - -- 1. Confirm that the TELLER user is the user of the session by running the first SQL statement, as shown in Figure 4-53. In this example, TQSPENCER is a TELLER user. - -Figure 4-53 TELLER session user - - -- 2. The number of rows in the CUSTOMERS table that the TELLER user can see is shown in Figure 4-54. The TELLER user can see all the rows. - -Figure 4-54 Number of rows that the TELLER user can see in the CUSTOMERS table - - -- 3. The result of the third SQL statement is shown in Figure 4-55. Note the masked columns. The TELLER user, TQSPENSER, can see all the rows, but there are some columns where the result is masked. - -Figure 4-55 SQL statement that is run by the TELLER user with masked columns - - -## Data access for ADMIN user with RCAC - -To test an ADMIN (VGLUCCHESS) user, complete the following steps: - -- 1. Confirm that the ADMIN user is the user of the session by running the first SQL statement, as shown in Figure 4-56. In this example, VGLUCCHESS is an ADMIN user. - -Figure 4-56 ADMIN session user - - -- 2. The number of rows that the ADMIN user can see is shown in Figure 4-57. The ADMIN user can see all the rows. - -Figure 4-57 Number of rows that the ADMIN can see in the CUSTOMERS table - - -- 3. The result of the third SQL statement is shown in Figure 4-58. There are no masked columns. - -Figure 4-58 SQL statement that is run by the ADMIN user - no masked columns - -## Data access for WEBUSER user with RCAC - -To test a CUSTOMERS (WEBUSER) user that accesses the database by using the web application, complete the following steps: - -- 1. Confirm that the user is the user of the session by running the first SQL statement, as shown in Figure 4-59. In this example, WEBUSER is a CUSTOMER user. - -Figure 4-59 WEBUSER session user - - -- 2. A global variable (CUSTOMER_LOGIN_ID) is set by the web application and then is used to check the row permissions. Figure 4-60 shows setting the global variable by using the customer login ID. - -Figure 4-60 Setting the global variable CUSTOMER_LOGIN_ID - - -- 3. Verify that the global variable was set with the correct value by clicking the Global Variable tab, as shown in Figure 4-61. - -Figure 4-61 Viewing the global variable value - - -- 4. The number of rows that the WEBUSER can see is shown in Figure 4-62. This user can see only the one row that belongs to his web-based user ID. - -Figure 4-62 Number of rows that the WEBUSER can see in the CUSTOMERS table - - -- 5. The result of the third SQL statement is shown in Figure 4-63. There are no masked columns, and the user can see only one row, which is the user's own row. - -Figure 4-63 SQL statement that is run by WEBUSER - no masked columns - - -## Other examples of data access with RCAC - -To run an SQL statement that lists all the accounts and current balance by customer, complete the following steps: - -- 1. Run the SQL statement that is shown in Figure 4-64 using the WEBUSER user profile. The SQL statement has no WHERE clause, but the WEBUSER can see only his accounts. - -Figure 4-64 List of accounts and current balance by customer using the WEBUSER user profile - -- 2. Figure 4-65 shows running a more complex SQL statement that calculates transaction total by account for year and quarter. Run this statement using the WEBUSER profile. The SQL statement has no WHERE clause, but the WEBUSER user can see only his transactions. - -Figure 4-65 Calculate transaction total by account for year and quarter using the WEBUSER profile - -- 3. Run the same SQL statement that lists the accounts and current balance by customer, but use a TELLER user profile. The result of this SQL statement is shown in Figure 4-66. The TELLER user can see all the rows in the CUSTOMERS table. - -Figure 4-66 List of accounts and current balance by customer using a TELLER user profile - -## 4.3.11 Query implementation with RCAC activated - -This section looks at some other interesting information that is related to RCAC by comparing the access plans of the same SQL statement without RCAC and with RCAC. This example uses Visual Explain and runs an SQL statement that lists the accounts and current balance by customer. - -## Complete the following steps: - -- 1. Figure 4-67 shows the SQL statement in Visual Explain ran with no RCAC. The implementation of the SQL statement is a two-way join, which is exactly what the SQL statement is doing. - -Figure 4-67 Visual Explain with no RCAC enabled - - -- 2. Figure 4-68 shows the Visual Explain of the same SQL statement, but with RCAC enabled. It is clear that the implementation of the SQL statement is more complex because the row permission rule becomes part of the WHERE clause. - -Figure 4-68 Visual Explain with RCAC enabled - - -- 3. Compare the advised indexes that are provided by the Optimizer without RCAC and with RCAC enabled. Figure 4-69 shows the index advice for the SQL statement without RCAC enabled. The index being advised is for the ORDER BY clause. - -Figure 4-69 Index advice with no RCAC - - -- 4. Now, look at the advised indexes with RCAC enabled. As shown in Figure 4-70, there is an additional index being advised, which is basically for the row permission rule. For more information, see 6.4.2, "Index advisor" on page 99. - -Figure 4-70 Index advice with RCAC enabled - - - - - -Chapter 5. - -5 - -## RCAC and non-SQL interfaces - -A benefit of Row and Column Access Control (RCAC) is that its security controls are enforced across all the interfaces that access DB2 for i because the security rules are defined and enforced at the database level. The examples that are shown in this paper focus on SQL-based access, but row permissions and column masks also are enforced for non-SQL interfaces, such as native record-level access in RPG and COBOL programs and CL commands, such as Display Physical File Member ( DSPPFM ) and Copy File ( CPYF ). - -This consistent enforcement across all interfaces is a good thing, but there are some nuances and restrictions as a result of applying an SQL-based technology such as RCAC to non-SQL interfaces. These considerations are described in this chapter. - -The following topics are covered in this chapter in this chapter: - -- GLYPH Unsupported interfaces - -- GLYPH Native query result differences - -- GLYPH Accidental updates with masked values - -- GLYPH System CL commands considerations - -## 5.1 Unsupported interfaces - -It is not possible to create a row permission or column mask on a distributed table or a program-described file. - -After a row permission or column mask is added to a table, there are some data access requests that no longer work. An attempt to open or query a table with activated RCAC controls involving any of the following scenarios is rejected with the CPD43A4 error message: - -- GLYPH A logical file with multiple formats if the open attempt requests more than one format. - -- GLYPH A table or query that specifies an ICU 2.6.1 sort sequence. - -- GLYPH A table with read triggers. - -This unsupported interface error occurs when a table with RCAC controls is accessed, not when the RCAC control is created and activated. - -For example, assume that there is a physical file, PF1, which is referenced by a single format logical file (LFS) and a multi-format logical file (LFM). A row permission is successfully created and activated for PF1. Any application that accesses PF1 directly or LFS continues to work without any issues. However, any application that opens LFM with multiple formats receives an error on the open attempt after the row permission is activated for PF1. - -Important: This potential runtime error places a heavy emphasis on a comprehensive testing plan to ensure that all programs are tested. If testing uncovers an unsupported interface, then you must investigate whether the application can be rewritten to use a data access interface that is supported by RCAC. - -## 5.2 Native query result differences - -The SQL Query Engine (SQE) is the only engine that is enhanced by IBM to enforce RCAC controls on query requests. In order for native query requests to work with RCAC, these native query requests are now processed by SQE instead of the Classic Query Engine (CQE). Native query requests can consist of the following items: - -- GLYPH Query/400 - -- GLYPH QQQQRY API - -- GLYPH Open Query File ( OPNQRYF ) command - -- GLYPH Run Query ( RUNQRY ) command - -- GLYPH Native open (RPG, COBOL, OPNDBF, and so on) of an SQL view - -Legacy queries that have been running without any issues for many years and over many IBM i releases are now processed by a different query engine. As a result, the runtime behavior and results that are returned can be different for native query requests with RCAC enabled. The OPNQRYF command and Query/400 run with SQE by default. - -The following list documents some of the query output differences that can occur when native query requests are processed by CQE: - -- GLYPH Different ordering in the result set - -- GLYPH Different values for null columns or columns with errors - -- GLYPH Suppression of some mapping error messages - -- GLYPH Loss of RRN positioning capabilities - -- GLYPH Duplicate key processing behavior differences - -- GLYPH Missing key feedback - -For a list of the differences and additional details, see the IBM i Memo to Users Version 7.2 , found at: - -http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgmtu.htm - -In addition, the performance of a native query with SQE can be different. It is possible that a new index or keyed logical file might need to be created to improve the performance. - -Important: Based on the potential impacts of query result set and performance differences, you should perform extensive functional testing and performance benchmarking of applications and reports that use native query interfaces. - -## 5.3 Accidental updates with masked values - -The masked values that are returned by a column mask can potentially cause the original data value to be accidentally overwritten, especially with applications using native record-level access. - -For example, consider a table containing three columns of first name, last name, and tax ID that is read by an RPG program. The user running the program is not authorized to see the tax ID value, so a masked value (*****3333) is written into the program's record buffer, as shown Figure 5-1. - -In this example, the application reads the data for an update to correct the misspelling of the last name. The last name value is changed to Smith in the buffer. Now, a WRITE request is issued by the program, which uses the contents of the record buffer to update the row in the underlying DB2 table. Unfortunately, the record buffer still contains a masked value for the tax ID, so the tax ID value in the table is accidentally set to the masked value. - -Figure 5-1 Accidental update with masked values scenario - - -Obviously, careful planning and testing should be exercised to avoid accidental updates with masked values. - -DB2 for i also enhanced its check constraint support in the IBM i 7.2 release with a new ON UPDATE clause that allows the existing value to be preserved when a masked value is detected by a check constraint. Details about how to employ this new check constraint support can be found in 6.8.1, "Check constraint solution" on page 108. - -## 5.4 System CL commands considerations - -As stated earlier, RCAC controls are enforced on all data access interfaces. This enforcement is not limited to programmatic interfaces; it also includes system CL commands that read and insert data, such as the Create Duplicate Object ( CRTDUPOBJ ) and Start DFU ( STRDFU ) CL commands. This section documents the behavior of the Create Duplicate Object ( CRTDUPOBJ ), Copy File ( CPYF ), and Copy Library ( CPYLIB ) CL commands with RCAC. - -## 5.4.1 Create Duplicate Object (CRTDUPOBJ) command - -The CRTDUPOBJ command is enhanced with a new Access Control ( ACCCTL ) parameter in the IBM i 7.2 release to copy RCAC controls to the new object being created. Row permissions and column masks are copied to the new object by default because the default value for the ACCCTL parameter is *ALL . - -If the invoker of the CRTDUPOBJ command asks for data to be copied with a value of *YES for the DATA parameter, the value of the ACCCTL parameter must be *ALL . If not, the command invocation receives an error. - -When data is copied to the duplicated object with the DATA parameter, all rows and unmasked column values are copied into the new object, even if the command invoker is not authorized to view all rows or certain column values. This behavior occurs because the RCAC controls also are copied to the new object. The copied RCAC controls enforce that only authorized users are allowed to view row and column values in the newly duplicated object. - -## 5.4.2 Copy File (CPYF) command - -The CPYF command copies only data, so there is no new parameter to copy RCAC controls to the target table. Therefore, if CPYF is used to create a target table, there are no RCAC controls placed on the target table. - -When RCAC controls are in place on the source table, the CPYF command is limited to reading rows and column values that are based on the invoker of the CPYF command. If a user is authorized to see all rows and column values, then all rows and unmasked column values are copied to the target table (assuming no RCAC controls are on the target table). If a user without full access runs the CPYF command, the CPYF command can copy only a subset of the rows into the target table. In addition, if that user can view only masked column values, then masked values are copied into the target table. This also applies to the Copy to Import File ( CPYTOIMPF ) command. - -If the target table has RCAC controls defined and activated, then the CPYF command is allowed only to add or replace rows in the target table based on the RCAC controls. If CPYF tries to add a row to the target table that the command invoker is not allowed to view according to the target RCAC controls, then an error is received. - -## 5.4.3 Copy Library (CPYLIB) command - -The CPYLIB command is enhanced with the same Access Control ( ACCCTL ) parameter as the CRTDUPOBJ command in the IBM i 7.2 release (see 5.4.1, "Create Duplicate Object (CRTDUPOBJ) command" on page 82). Row permissions and column masks are copied to the new object in the new library by default because the default value for the ACCCTL parameter is *ALL . - - - - -Chapter 6. - -## Additional considerations - -This chapter covers additional considerations that must be taken into account when implementing Row and Column Access Control (RCAC), including the following functions: - -- GLYPH Timing of column masking - -- GLYPH Data movement - -- GLYPH Joins - -- GLYPH Views - -- GLYPH Materialized query tables - -- GLYPH Index advisor - -- GLYPH Monitoring, analysis, and debugging - -- GLYPH Performance and scalability - -The following topics are covered in this chapter: - -- GLYPH Timing of column masking - -- GLYPH RCAC effects on data movement - -- GLYPH RCAC effects on joins - -- GLYPH Monitoring, analyzing, and debugging with RCAC - -- GLYPH Views, materialized query tables, and query rewrite with RCAC - -- GLYPH RCAC effects on performance and scalability - -- GLYPH Exclusive lock to implement RCAC (availability issues) - -- GLYPH Avoiding propagation of masked data - -- GLYPH Triggers and functions (SECURED) - -- GLYPH RCAC is only one part of the solution - -6 - -## 6.1 Timing of column masking - -An important design and implementation consideration is the fact that RCAC column masking occurs after all of the query processing is complete, which means that the query results are not at all based on the masked values. Any local selection, joining, grouping, or ordering operations are based on the unmasked column values. Only the final result set is the target of the masking. - -An example of this situation is shown in Figure 6-1. However, note that aggregate functions (a form of grouping) are based on masked values. - -SELECT - -CREDIT_CARD_NUMBER, - -FROM - -GROUP BY - -CREDIT_CARD_NUMBER - -ORDER BY - -CREDIT_CARD_NUMBER; - -## Without RCAC Masking - -## With RCAC Masking - - - -| CREDIT CARD NUMBER _ _ | TOTAL | -|--------------------------|---------------| -| 3785 0000 0000 1234 | 233.50 | -| 3785 1111 1111 1234 | 105.10 | -| 3785 2222 2222 1234 | 300 00 300.00 | -| 3785 3333 3333 1234 | 1,775.00 | -| 5466 4444 4444 1234 | 601.70 | -| 5466 5555 5555 1234 | 37.80 | -| 5466 6666 6666 1234 | 490.45 | -| 6011 7777 7777 1234 | 1005.00 | -| 6011 8888 8888 1234 | 750.33 | -| 6011 9999 9999 0001 | 10.00 | - -Figure 6-1 Timing of column masking - -| CREDIT CARD NUMBER _ _ | TOTAL | -|---------------------------|---------------| -| **** **** **** 1234 | 233.50 | -| **** **** **** 1234 | 105.10 | -| **** **** **** 1234 | 300 00 300.00 | -| **** **** **** 1234 | 1,775.00 | -| **** **** **** 1234 | 601.70 | -| **** **** **** 1234 | 37.80 | -| **** **** **** 1234 | 490.45 | -| **** **** **** 1234 1234 | 1005.00 | -| **** **** **** 1234 | 750.33 | -| **** **** **** 0001 | 10.00 | - -SUM(AMOUNT) AS TOTAL TRANSACTIONS - -Conversely, field procedure masking causes the column values to be changed (that is, masked) and stored in the row. When the table is queried and the masked columns are referenced, the masked data is used for any local selection, joining, grouping, or ordering operations. This situation can have a profound effect on the query's final result set and not just on the column values that are returned. Field procedure masking occurs when the column values are read from disk before any query processing. RCAC masking occurs when the column values are returned to the application after query processing. This difference in behavior is shown in Figure 6-2. - -Note: Column masks can influence an SQL INSERT or UPDATE . For example, you cannot insert or update a table with column access control activated with masked data generated from an expression within the same statement that is based on a column with a column mask. - -Figure 6-2 Masking differences between Fieldproc and RCAC - - -## 6.2 RCAC effects on data movement - -As described earlier and shown in Figure 6-3, RCAC is applied pervasively regardless of the data access programming interface, SQL statement, or IBM i command. The effects of RCAC on data movement scenarios can be profound and possibly problematic. It is important to understand these effects and make the appropriate adjustments to avoid incorrect results or data loss. - -Figure 6-3 RCAC and data movement - - -The "user" that is running the data movement application or process, whether it be a high availability (HA) scenario, an extract, transform, load (ETL) scenario, or just copying data from one file or table to another one, must have permission to all the source rows without masking, and not be restricted from putting rows into the target. Allowing the data movement application or process to bypass the RCAC rules must be based on a clear and concise understanding of the organization's object security and data access policy. Proper design, implementation, and testing are critical success factors when applying RCAC. - -Important: RCAC is applied to the table or physical file access. It is not applied to the journal receiver access. Any and all database transactions are represented in the journal regardless of RCAC row permissions and column masks. This makes it essential that IBM i security is used to ensure that only authorized personnel have access to the journaled data. - -This section covers in detail the following three examples: - -- GLYPH Effects when RCAC is defined on the source table - -- GLYPH Effects when RCAC is defined on the target table - -- GLYPH Effects when RCAC is defined on both source and target tables - -## 6.2.1 Effects when RCAC is defined on the source table - -Example 6-1 shows a simple example that illustrates the effect of RCAC as defined on the source table. - -Example 6-1 INSERT INTO TARGET statement - -INSERT INTO TARGET (SELECT * FROM SOURCE); - -For example, given a "source" table with a row permission defined as NAME <> 'CAIN' and a column mask that is defined to project the value 999.99 for AMOUNT, the SELECT statement produces a result set that has the RCAC rules applied. This reduced and modified result set is inserted into the "target" table even though the query is defined as returning all rows and all columns. Instead of seven rows that are selected from the source, only three rows are returned and placed into the target, as shown in Figure 6-4. - -Figure 6-4 RCAC effects on data movement from SOURCE - - -## 6.2.2 Effects when RCAC is defined on the target table - -Example 6-2 shows a simple example that illustrates the effect of RCAC as defined on the target table. - -Example 6-2 INSERT INTO TARGET statement - -INSERT INTO TARGET (SELECT * FROM SOURCE); - -Given a "target" table with a row permission defined as NAME <> 'CAIN' and a column mask that is defined to project the value 999.99 for AMOUNT, the SELECT statement produces a result set that represents all the rows and columns. The seven row result set is inserted into the "target", and the RCAC row permission causes an error to be returned, as shown in Figure 6-5. The source rows where NAME = 'CAIN' do not satisfy the target table's permission, and therefore cannot be inserted. In other words, you are inserting data that you cannot read. - -Figure 6-5 RCAC effects on data movement on TARGET - - -## 6.2.3 Effects when RCAC is defined on both source and target tables - -Example 6-3 shows a simple example that illustrates the effect of RCAC as defined on both the source and the target tables. - -Example 6-3 INSERT INTO TARGET statement - -INSERT INTO TARGET (SELECT * FROM SOURCE); - -Given a "source" table and a "target" table with a row permission defined as NAME <> 'CAIN' and a column mask that is defined to project the value 999.99 for AMOUNT, the SELECT statement produces a result set that has the RCAC rules applied. This reduced and modified result set is inserted into the "target" table even though the query is defined as returning all rows and all columns. Instead of seven rows that are selected from the source, only three rows are returned. - -Although the source rows where NAME <> 'CAIN' do satisfy the target table's permission, the AMOUNT column value of 999.99 represents masked data and therefore cannot be inserted. An error is returned indicating the failure, as shown in Figure 6-6. In this scenario, DB2 is protecting against an overt attempt to insert masked data. - -Figure 6-6 RCAC effects on data movement on SOURCE and TARGET - - -## 6.3 RCAC effects on joins - -As mentioned previously, a fundamental concept of row permission is that it defines a logical subset of rows that a user or group of users is permitted to access and use. This subset becomes the new basis of any query against the table that has RCAC enabled. - -Note: Thinking of the row permission as defining a virtual set of rows that can be operated on is the secret to understanding the effect of RCAC on any join operation. - -As shown in Figure 6-7, there are two different sets, set A and set B. However, set B has a row permission that subsets the rows that a user can see. - -Figure 6-7 Set A and set B with row permissions - - -## 6.3.1 Inner joins - -Inner join defines the intersection of two data sets. For a row to be returned from the inner join query, it must appear in both sets, as shown in Figure 6-8. - -Figure 6-8 Inner join without RCAC permission - - -Given that row permission serves to eliminate logically rows from one or more sets, the result set from an inner join (and a subquery) can be different when RCAC is applied. RCAC can reduce the number of rows that are permitted to be accessed by the join, as shown in Figure 6-9. - -Effect of column masks on inner joins: Because column masks are applied after the query final results are determined, the masked value has no effect on the join processing and corresponding query result set. - -Figure 6-9 Inner join with RCAC permission - - -## 6.3.2 Outer joins - -Outer joins preserve one or both sides of two data sets. A row can be returned from the outer join query if it appears in the primary set (LEFT, RIGHT, or both in the case of FULL), as shown in Figure 6-10. Column values from the secondary set are returned if the row has a match in the primary set. Otherwise, NULL is returned for the column value by default. - -Figure 6-10 Outer join without RCAC permission - - -Given that row permission serves to eliminate logically rows from one or more sets, more column values that are returned from the secondary table in outer join can be NULL when RCAC is applied, as shown in Figure 6-11. - -Effect of column masks on inner joins: Because column masks are applied after the query final results are determined, the masked value has no effect on the join processing and corresponding query result set. - -Figure 6-11 Outer join with RCAC permission - - -## 6.3.3 Exception joins - -Exception joins preserve one side of two data sets. A row can be returned from the exception join query if it appears in the primary set (LEFT or RIGHT) and the row does not appear in the secondary set, as shown in Figure 6-12. Column values from the secondary set are returned as NULL by default. - -Figure 6-12 Exception join without RCAC permission - - -Given that row permission serves to eliminate logically rows from one or more sets, more rows can appear to be exceptions when RCAC is applied, as shown in Figure 6-13. Also, because column masks are applied after the query final results are determined, the masked value has no effect on the join processing and corresponding query result set. - -Figure 6-13 Exception join with RCAC permission - - -## 6.4 Monitoring, analyzing, and debugging with RCAC - -It is assumed (and it is a critical success factor) that the database engineer or application developer has a thorough understanding of the DB2 for i Query Optimizer, Database Engine, and all the associated tools and techniques. - -The monitoring, analyzing, and debugging process basically stays the same when RCAC row permissions or column masks are in place, with a few important differences: - -- GLYPH The underlying data access plan can be different and more complex based on the rule text. - -- GLYPH The database results can be reduced or modified based on the rule text and user profile. - -- GLYPH The run time of the request can be affected either positively or negatively based on the rule text. - -- GLYPH For high-level language record level access, query plans must be considered, and not just program code. - -During analyzing and debugging, it is important to account for all of the RCAC definitions for each table or file to understand the logic and corresponding work that is associated with processing the row permissions and column masks. It is also important to realize that, depending on the user profile in effect at run time, the database actions and query results can be different. - -RCAC is designed and implemented to be transparent to the user. It is possible for user "Mike" and user "Hernando" to run the exact same query, against the exact same data on the exact same system, and get different result sets. There is no error, no warning, and no indication that RCAC reduced or modified the respective answers that are returned. Furthermore, it is also likely that user "Mike" and user "Hernando" have different query run times even though it appears that everything is the same for both users. The actual query plan contains the RCAC logic, and this additional code path can alter the amount of work that is needed to produce results, based on the user running the query. - -When monitoring, analyzing, and debugging a database process when RCAC is enabled, it is critical to keep as many of the "variables" the same as possible. Use a good scientific process. For example, when re-creating a problem situation running under the same user profile with the same data and under the same conditions, it is almost mandatory. Otherwise, the database behavior and query results can be different. - -To successfully perform monitoring, analyzing, and debugging when RCAC is enabled likely involves changes in the security and data access policies of the organization, and require new responsibilities, authority, and oversight within the data-centric application development community. As such, establishing and staffing the position of "database engineer" becomes even more important. - -## 6.4.1 Query monitoring and analysis tools - -When monitoring and collecting metrics on database requests, DB2 for i provides additional information that indicates row permissions or column masks are being applied. This information is integrated and part of the standard tools, such as Visual Explain, SQL Plan Cache Snapshot, and SQL Performance Monitor. - -Figure 6-14 shows how Visual Explain externalizes RCAC. - -Figure 6-14 Visual Explain indicating that RCAC is applied - - -Figure 6-15 shows the main dashboard of an SQL Performance Monitor. Click Summary . - -Figure 6-15 SQL Performance Monitor - - -Figure 6-16 shows the summary of an SQL Performance Monitor with an indication that RCAC is applied. - -Figure 6-16 SQL Performance Monitor indicating that RCAC is applied - - -Figure 6-17 shows the statements of an SQL Performance Monitor and how RCAC is externalized. - -Figure 6-17 SQL Performance Monitor showing statements and RCAC - - -When implementing RCAC as part of a comprehensive and pervasive data access control initiative, consider that the database monitoring and analysis tools can collect literal values that are passed as part of SQL statements. These literal values can be viewed as part of the information collected. If any of the literals are based on or are used with masked columns, it is important to review the database engineer's policy for viewing these data elements. For example, supposed that column CUSTOMER_TAX_ID is deemed masked for the database engineer and the CUSTOMER_TAX_ID column is used in a predicate as follows: - -WHERE CUSTOMER_TAX_ID = '123-45-7890' - -The literal value of '123-45-7890' is visible to the analyst, effectively exposing sensitive information. If this is not acceptable, you must implement the SYSPROC.SET_COLUMN_ATTRIBUTE procedure. - -The SET_COLUMN_ATTRIBUTE procedure sets the SECURE attribute for a column so that variable values that are used for the column cannot be seen in the SQL Performance Monitor, SQL Plan Cache Snapshot, or Visual Explain. - -## 6.4.2 Index advisor - -Because the RCAC rule text can be almost any valid SQL logic, including local selection predicates, join conditions, and subqueries, the standard query tuning techniques still apply. Without a doubt, a proper and adequate indexing strategy is a good starting point. - -The index advisor is not specifically enhanced for RCAC, but because the rule text is a fully integrated part of the query plan, any opportunities for indexing is advised based on the current Query Optimizer functionality. If an index is advised because of the RCAC rule text logic, there is no RCAC reason code provided. Analyzing the query plan and the RCAC rule text provides the understanding as to why the index is being advised. - -For example, the query that is shown in Figure 6-18 produces index advice for the user's predicate and the RCAC predicate. - -Figure 6-18 Index advice and RCAC - - -In Figure 6-19, index advisor is showing an index for the ACCOUNTS and CUSTOMERS tables based on the RCAC rule text. - -Figure 6-19 Index advisor based on the RCAC rule - - -For more information about creating and using indexes, see IBM DB2 for i indexing methods and strategies , found at: - -http://www.ibm.com/partnerworld/wps/servlet/ContentHandler/stg_ast_sys_wp_db2_i_in dexing_methods_strategies - -## 6.4.3 Metadata using catalogs - -To make the discovery and identification of RCAC row permissions and column masks programmatically, query the QSYS2.SYSCONTROLS catalog view or the QSYS2.SYSCONTROLSDEP catalog view directly. Otherwise, the System i Navigator Database graphical interface can be used interactively. - -## Figure 6-20 shows the QSYS2.SYSCONTROLS catalog view. - -Figure 6-20 RCAC and catalogs - -The SYSCONTROLS catalog view contains the following columns: - -- GLYPH COLUMN_NAME - -- GLYPH CONTROL_TYPE - -- GLYPH CREATE_TIME - -- GLYPH ENABLE - -- GLYPH ENFORCED - -- GLYPH ASP_NUMBER - -- GLYPH IMPLICIT - -- GLYPH LABEL - -- GLYPH LAST_ALTERED - -- GLYPH LONG_COMMENT - -- GLYPH RCAC_NAME - -- GLYPH RCAC_OWNER - -- GLYPH RCAC_SCHEMA - -- GLYPH RULETEXT - -- GLYPH SYSTEM_COLUMN_NAME - -- GLYPH SYSTEM_TABLE_NAME - -- GLYPH SYSTEM_TABLE_SCHEMA - -- GLYPH TABLE_NAME - -- GLYPH TABLE_SCHEMA - -- GLYPH TBCORRELATION - -The SYSCONTROLSDEP catalog view contains the following columns: - -- GLYPH COLUMN_NAME - -- GLYPH CONTROL_TYPE - -- GLYPH IASP_NUMBER - -- GLYPH OBJECT_NAME - -- GLYPH OBJECT_SCHEMA - -- GLYPH OBJECT_TYPE - -- GLYPH PARM_SIGNATURE - -- GLYPH RCAC_NAME - -- GLYPH RCAC_SCHEMA - -- GLYPH SYSTEM_TABLE_NAME - -- GLYPH SYSTEM_TABLE_SCHEMA - -For more information, see the IBM i 7.2 DB2 for i SQL Reference Guide , found at: - -http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/db2/rbafzintro.htm?lang =en - -## 6.5 Views, materialized query tables, and query rewrite with RCAC - -This section covers the implications to views, materialized query tables (MQTs), and query rewrite when RCAC is activated on a table. - -## 6.5.1 Views - -Any access to an SQL view that is over one or more tables that have RCAC also have those row permissions and column masking rules applied. If an SQL view has predicates, those are logically ANDed with any search condition that is specified in the permissions that are defined on the underlying tables. The view does not have to project the columns that are referenced by the permissions. Figure 6-21 shows an example of a view definition and user query. - -Figure 6-21 View definition and user query - - -What the query optimizer plans for and what the database engine runs is shown in the Figure 6-22. - -Figure 6-22 Query rewrite with RCAC - - -## 6.5.2 Materialized query tables - -When the query to populate a materialized query table (MQT) is run by the system on either the create table or a refresh table, and one or more source tables have RCAC defined, the row permissions and column masks are ignored. This means that the MQT has all of the data. - -Because the MQT is a copy of the base table data, when a permission is created on the base table, all the related MQTs are altered to have a default row permission. This default permission prevents any of the rows from being directly queried. - -When a query implicitly uses an MQT, the underlying row permissions and column masks are built into the query that uses the MQT. In order for the MQT to be used for optimization, the MQT must include any columns that are used by the row permissions and column masks. - -The following example illustrates this scenario: - -- 1. Create schema and tables: - -CREATE SCHEMA Schema1; CREATE TABLE Schema1.employee(userID varchar(128), LocationID integer, Regionid integer); CREATE TABLE Schema1.Sales (INVOICE INTEGER NOT NULL, SALEAMT DECIMAL(5,2), TAXAMT DECIMAL(5,2), LOCATIONID INTEGER, REGIONID INTEGER); - -- 2. Create a row permission that allows the employees to see only rows from the region they work in: - -/* Create permission that only allows the employees to see rows from the region they work in */ CREATE PERMISSION Schema1.Sales_PERM1 ON schema1.sales FOR ROWS WHERE CURRENT_USER in (SELECT userId FROM schema1.employee E WHERE e.regionid = regionid) ENFORCED FOR ALL ACCESS ENABLE; - -- 3. Create an MQT to summarize sales by location: - --- Create MQT to summarize sales by location -- This has all of the data. The schema1.sales_perm1 predicate was not applied CREATE TABLE Schema1.Location_Sales_MQT as AS (SELECT LocationID, SUM(Saleamt) as Total_Location_Sales FROM SCHEMA1.SALES GROUP BY LOCATIONID) DATA INITIALLY DEFERRED REFRESH DEFERRED MAINTAINED BY USER; - -- 4. Populate the MQT (permission is not applied): - -/* Populate the MQT - Permission not applied here */ REFRESH TABLE Schema1.Location_Sales_MQT - -The following query matches Location_Sales_MQT, but it cannot be used because it does not have column regionid, which is needed by the schema1.sales_PERM1 permission: - -SELECT Locationid, sum(SALEAMT) FROM schema1.sales GROUP BY locationid; - -- 5. Create an MQT to summarize by region and location: - --- MQT to summarize by region and location Create table schema1.Region_Location_Sales_MQT as AS (SELECT REGIONID, LocationID, SUM(Saleamt) as Total_Location_Sales FROM SCHEMA1.SALES GROUP BY REGIONID, LOCATIONID) DATA INITIALLY DEFERRED REFRESH DEFERRED MAINTAINED BY USER; - -- 6. Populate the Region_location_Sales_MQT (permission not applied): - -/* Populate the Region_location_Sales_MQT - Permission not applied here */ Refresh table schema1.Region_Location_Sales_MQT - -The following query can use the Region_location_SALES_MQT because it has REGIONID, which is required for the schema1.sales_PERM1 permission: - -SELECT Locationid, sum(SALEAMT) FROM schema1.sales GROUP BY locationid; - -This example has the following additional implications: - -- GLYPH Users must be prevented from explicitly querying the MQT or a view that is created over it. Those two cases bypass the row permission and column mask rules from the underlying tables. - -- GLYPH If the user writes code to update incrementally an MQT, that code must be run from a user that has permission to view all of the rows and all columns in their unmasked state. Otherwise, the MQT contents are not complete and queries that implicitly use the MQT might get wrong results. - -- GLYPH To prevent this, a check constraint can be created to cause an error if masked data was inserted into the MQT. - -## 6.5.3 Query rewrite - -Query rewrite is a technique that the optimizer can use to change the original request to improve performance. - -For example, a query that references Table1 might be rewritten to access an MQT over Table1, or it might also be optimized to access only the fields in an index that is defined over Table1 and avoid touching Table1. With RCAC, defining these rewrites can still occur, but the MQT or index also must include all columns that are needed by the row permissions or column masks that are defined on Table1. - -As part of adding RCAC, the impact to these potentially significant performance optimizations must be considered. Usage of MQTs or index-only access might be reduced or eliminated by enabling RCAC. - -## 6.6 RCAC effects on performance and scalability - -As with any discussion that is related to performance and scalability, nothing is certain or guaranteed. There are always many variables that are involved. First, a good foundation of knowledge and skill is required to appreciate fully what is occurring when a database request is handled within an RCAC enabled environment. Implementing the row permission or column masks involves the query optimizer and database engine. The process that identifies the rows that you have permission to access is considered a "query", and as such a query plan must be formulated. In the case of SQL requests, the RCAC portion of the query is combined with the user's query, much like a query referencing a view. - -For native record level access, this RCAC "query" is also built and used to test the permission. When a file is opened, the RCAC rule text logic is included, optimized, and run as part of the native read, write, update, or delete operation. The amount of work (and time) required to identify the record based on the user's permission is directly related to the complexity and depth of the logic that is needed to identify the records that can be returned. - -A simple example to illustrate this concept is a random read using a keyed logical file (that is, an index). In its purest form, a random read uses two data access methods: index probe (find the key and RRN) and table probe (find the record using RRN). If the RCAC rule text specifies five nested subqueries to determine whether the user has access to the record, this logic must be added to the path. The subquery processing now becomes part of the original "random read" request. Instead of two simple I/Os to retrieve the record, there can be a minimum of 12 I/Os to retrieve the same record. These I/Os can be done with a result of "not found" if the user is not entitled to any of the records. - -For programs that access records sequentially, in or out of key order, the added RCAC logic can have a profound effect on the performance and scalability. Reading the "next record" in order is no longer a simple matter of positioning to the next available key, as shown in Figure 6-23. - -Figure 6-23 Native record access with no RCAC - - -Before the record, as identified by the key, is considered available, the RCAC logic must be run. If the record is rejected by RCAC, the next record in sequence that is permissible must be identified. This spinning through the records can take a long time and uses many resources, as shown in Figure 6-24. - -Figure 6-24 Native record level access with RCAC - - -After the row permissions and column masks are designed and implemented, adequate performance and scalability testing are recommended. - -## 6.7 Exclusive lock to implement RCAC (availability issues) - -When defining permissions or enabling RCAC, an exclusive lock on the base table is obtained. The impact to other applications depends on the order of create permission and the alter table to activate RCAC. - -Consider the following scenarios: - -- GLYPH Scenario 1: Adding permissions and RCAC is not enabled on the table: - -- -Job 1 reading data from the table (open for input) holds a *SHRRD on the member and a *SHRRD on the data. - -- -Job 2 adding, updating, or deleting rows from table (open for output) holds a *SHRRD on the member and a *SHRUPD on the data. - -- -Job 4 allocates the object and gets a *SHRRD on the file and a *EXCLRD on the data. - -- -Job 3 attempts to add a permission to the table. Permission is added and the pseudo-closed cursors for Job1 and Job 2 are closed. Job 4 still holds the *SHRRD on the file and *EXCLRD on the data. - -The net result from Scenario 1 is that you can add permissions without having to end the applications that are reading the base table. - -- GLYPH Scenario 2: Altering a table to activate RCAC requires that all applications using the table be ended. The alter table requires exclusive use of the table. - -- GLYPH Scenario 3: Altering the table to activate RCAC before the permissions are added. The alter table requires exclusive use of the table, as in scenario 2. All applications must be ended to perform this alter. After the alter is complete, any applications trying to read data do not get any results, and attempts to insert new rows returns the following message: - -SQ20471] INSERT or UPDATE does not satisfy row permissions. - -To create a permission in this case requires that you end all the applications, unlike scenario 1 where permissions can be added while the applications were active. In this case, the applications must be ended to run the create permission. - -## 6.8 Avoiding propagation of masked data - -Operations such as insert or update into a table with active column access control can fail if the input data is masked data. This can happen when data to be inserted or updated contains the masked value as a result of a SELECT from a table with active column access control. - -For example, assume TABLE1 and TABLE2 have active column access control and for insert, selecting data from TABLE2 returns the masked data. The following INSERT returns an error: - -INSERT INTO TABLE1 SELECT * FROM TABLE2 - -The masked data that is returned from the SELECT * FROM TABLE2 might not be valid input data for TABLE1 because of data type or column check constraint. - -There are two ways to prevent this situation from happening: Define a check constraint or create a before trigger. - -## 6.8.1 Check constraint solution - -One way to prevent this problem is to define a check constraint. - -As part of RCAC, new SQL syntax is provided to allow an action to be performed when a violation of the check constraints check condition occurs instead of giving that error. However, if the check condition is still not met after the action, a hard error is returned. A check constraint with the new on-violation-clause is allowed on both the CREATE TABLE and ALTER TABLE statements. - -In the Example 6-4, the mask is defined to return a value of 'XXX-XX-nnnn' for any query that is not done by a user profile in the DBMGR group. The constraint checks that the column SSN does not have the masked value. - -Example 6-4 Check constraint to avoid masked data - -CREATE SCHEMA MY_LIB SET SCHEMA MY_LIB CREATE TABLE MY_LIB.EMP_INFO (COL1_name CHAR(10) WITH DEFAULT 'DEFAULT', COL2_ssn CHAR(11) WITH DEFAULT 'DEFAULT') CREATE MASK MASK_ssn ON MY_LIB.EMP_INFO FOR COLUMN COL2_ssn RETURN CASE WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBMGR' ) = 1 THEN COL2_ssn - -ELSE 'XXX-XX-'||SUBSTR(COL2_ssn,8,4) END ENABLE | /* Check constraint for the update and insert.*/ ALTER TABLE MY_LIB.EMP_INFO ADD CONSTRAINT MASK_ssn_preserve CHECK(SUBSTR(COL2_ssn,1,7)<>'XXX-XX-') -- Allow any value other than the mask ON UPDATE VIOLATION PRESERVE COL2_ssn -- Don't update the mask portion of the existing value ON INSERT VIOLATION SET COL2_ssn = DEFAULT -- for insert set this to the default value. - -## 6.8.2 Before trigger solution - -The actions that are described in Example 6-4 on page 108 for ON UPDATE VIOLATION and ON INSERT VIOLATION also can be handled by a before trigger, as shown in Example 6-5. - -Example 6-5 Before trigger to avoid masked data - -CREATE TRIGGER PREVENT_MASK_SSN BEFORE INSERT OR UPDATE ON MY_LIB.EMP_INFO REFERENCING NEW ROW AS N OLD ROW AS O FOR EACH ROW MODE DB2ROW SECURED WHEN(SUBSTR(N.COL2_ssn,1,7) = 'XXX-XX-') BEGIN IF INSERTING THEN SET N.COL2_ssn = DEFAULT; ELSEIF UPDATING THEN SET N.COL2_ssn = O.COL2_ssn; END IF; END - -## 6.9 Triggers and functions (SECURED) - -There are some considerations that must be considered when there are triggers and functions on tables that have RCAC enabled. The purpose of SECURE for triggers and functions is so that a user who is allowed to create a trigger or function is not necessarily able to make it SECURE themselves. This prevents the trigger/function developer from adding code that skims off data that they are not allowed to see. - -## 6.9.1 Triggers - -Triggers have access to the data in rows outside of the row permission or column masking. An after trigger has access to the new row image after the permission has allowed the update or insert to occur. Therefore, the triggers can potentially change the insert or update image value so that it violates the permission. - -Any triggers that are defined on a table must be created with an attribute that designates that it is SECURED when RCAC definitions are created or altered for that table, as shown in Example 6-6. The same applies to a view that has an instead of trigger. That trigger must be secure at the point RCAC is enabled for any of the underlying tables the view is over. - -Example 6-6 Trigger SECURED - -/* Trigger created with the SECURED attribute */ CREATE TRIGGER PREVENT_MASK_SSN BEFORE INSERT OR UPDATE ON MY_LIB.EMP_INFO REFERENCING NEW ROW AS N OLD ROW AS O FOR EACH ROW MODE DB2ROW SECURED WHEN(SUBSTR(N.COL2_ssn,1,7) = 'XXX-XX-') BEGIN IF INSERTING THEN SET N.COL2_ssn = DEFAULT; ELSEIF UPDATING THEN SET N.COL2_ssn = O.COL2_ssn; END IF; END - -## 6.9.2 Functions - -Within a CREATE PERMISSION or CREATE MASK , a function can be called. Because that UDF has access to the data before the RCAC rules are applied, the SECURE attribute is required on that function, as shown in Example 6-7. - -Example 6-7 Specifying SECURED on a function CREATE PERMISSION SCHEMA.PERM1 ON SCHEMA.TABLE1 FOR ROWS WHERE MY_UDF(CURRENT_USER,COLUMN1) = 1 ENFORCED FOR ALL ACCESS ENABLE; CREATE FUNCTION MY_UDF (INP1 CHAR(32), INP2 INTEGER) Returns INTEGER LANGUAGE SQL CONTAINS SQL SECURED - -The SECURED attribute of MY_UDF signifies that the function is considered secure for RCAC. If a function is called from an SQL statement, and references a column in a table that has RCAC, it must be declared as secure. In that case, if the secure function calls other functions, they are not validated to confirm whether they are secure. - -Consider the following examples: - -- GLYPH Table1 has RCAC defined and enabled. SELECT MY_UDF2(Column2) from schema.table1. - -- MY_UDF2 must be created with the SECURED attribute. If MY_UDF2 invokes MY_UDF3, there is no checking to ensure that it is also created with SECURED. - -- NOT SECURED is the default on the create function unless SECURED is explicitly selected. - -This same rule applies for any function that might be invoked with a masked column specified as an argument. - -- GLYPH Table2 column SSN has a column mask that is defined on it. - -- SELECT MY_UDF4(SSN) from table2. Because SSN has a column mask that is defined, MY_UDF4 must be created with the SECURED attribute. - -## 6.10 RCAC is only one part of the solution - -When designing and implementing RCAC row permissions, special attention should be given to the effectiveness and limitations of controlling data access. Data can be housed in objects other than tables or physical files. The role and responsibility of the database user, for example, the database engineer, must be reconciled with their respective authority and access privileges. - -Figure 6-25 illustrates that object level security is the first check and that RCAC permissions provide control only on tables and physical files. - -Figure 6-25 Object-level security and RCAC permissions - - -To get access to the table and the rows, the user must pass the object level authority test and the RCAC permission test. - -The IBM i journal captures the transactional data and places an image of the row in the journal receiver. If the user has access to the journal receiver, the row image can be viewed if the user has authority to the journal receiver. - -Although the SQL Plan Cache data, the SQL Plan Cache Snapshot data, and the SQL Performance Monitor data do not reveal the results of queries, they can show the literal values that are passed along with the SQL statements. - -The ability to monitor, analyze, debug, and tune data-centric applications effectively and efficiently requires some understanding of the underlying data, or at least the attributes of the data. The organization must be willing to reconcile the conflicting requirements of "restricting access to data", and "needing access to data". - - - - -Chapter 7. - -7 - -## Row and Column Access Control management - -After Row and Column Access Control (RCAC) definitions are defined and activated in a database, your management processes must be adjusted to accommodate these new security controls. This chapter highlights some of the changes that should be considered. - -The following topics are covered in this chapter: - -- GLYPH Managing row permissions and column masks - -- GLYPH Managing tables with row permissions and column masks - -- GLYPH Monitoring and auditing function usage - -## 7.1 Managing row permissions and column masks - -This section focuses on the management of the RCAC row permissions and column masks. - -## 7.1.1 Source management - -The SQL statements that are used to define row permissions and column masks should be managed with a change management process. Ideally, you already are using a change management process for your database definitions, and that same process can be extended to cover your RCAC definitions. - -If you are using SQL DDL to define your DB2 tables, then you have the option of adding the RCAC definitions to the same source file as the table definition. The benefit of this approach is that it keeps all DDL that is related to a table in a single source file. The downside is that if you must re-create only the RCAC definitions and leave the table unchanged, then you must identify and extract only the RCAC definitions from the source file. There are situations where the row permissions and column masks must be changed or re-created without changing the definition of the associated table. - -## 7.1.2 Modifying definitions - -After RCAC is activated for a table, the row permission and column mask definitions can be re-created to change the data access behavior for that table. Usage of the OR REPLACE clause on the CREATE MASK and CREATE PERMISSION SQL statements simplifies the re-creation process by folding in the deletion of the existing RCAC definition. - -This capability makes it easy to change your RCAC definitions as you test the controls with your applications and identify tweaks that must be made to your RCAC implementation. However, re-creation of RCAC definitions does require an exclusive lock to be acquired on the table during the process. - -## 7.1.3 Turning on and off - -As described in 3.1.2, "Enabling and activating RCAC" on page 16, the SQL ALTER statement can turn on and off row permissions and column masks. The ALTER MASK and A LTER PERMISSION statements allow an individual row permission or column mask to be turned off with the DISABLE option and back on with the ENABLE option. The ALTER TABLE statement can deactivate enforcement of all the row permissions and column masks for a single table. - -Important: Although these capabilities make it easy to temporarily turn off RCAC security so that you can make environment or application changes, these processes require an exclusive lock to be obtained on a table. Therefore, this activity must be planned carefully to avoid disruptions and outages. - -## 7.1.4 Regenerating - -DB2 also can regenerate an existing row permission or column mask. This regenerate option can be useful with more complex RCAC definitions that reference other DB2 objects. - -For example, consider a row permission on an ACCOUNTS table (PERMISSION1_ON_ACCOUNTS). The ACCOUNTS table row permission references and compares columns in the CUSTOMERS table. When the definition of the CUSTOMERS table changes, DB2 does not check to determine whether the change to the CUSTOMERS table breaks the ACCOUNTS table row permission. If this table definition change does break the row permission, an error does not surface until an application tries to read rows from the ACCOUNTS table. - -Instead of waiting for an application to detect this error, the REGENERATE option can be used on the ACCOUNTS row permission. The REGENERATE option returns an error if the change in the CUSTOMERS table definition causes the row permission to be invalid. In this way, the row permission can be proactively corrected before an application discovers the error. - -## 7.2 Managing tables with row permissions and column masks - -This section examines the object management considerations after RCAC is added to a DB2 table. - -## 7.2.1 Save and restore - -Row permissions and column masks are stored in the DB2 table object itself, so they are automatically saved and restored when the DB2 table object is saved and restored. Therefore, no adjustments must be made to your database backup process to accommodate RCAC. - -Save and restore processing works fine with RCAC if the RCAC definition does not reference other DB2 objects other than the table over which they are defined. When the RCAC definition has dependencies on other DB2 objects, the restore process is much more challenging. - -For example, assume that the BANKSCHEMA library (which is the system name or short name for the schema long name of BANK_SCHEMA) is saved and restored into a library named BANK_TEST. Recall from the example in 7.1.4, "Regenerating" on page 114 that the row permission on the ACCOUNTS table references the CUSTOMERS table (… SELECT C.CUSTOMER_ID FROM CUSTOMERS C …). After the restore operation, the ACCOUNTS row permission still references the CUSTOMERS table in BANK_SCHEMA because DB2 explicitly qualifies all object references when the row permission or column mask is created. The restore processing does not change the explicit qualification from BANK_SCHEMA to BANK_TEST. As a result, the restored ACCOUNTS row permission now depends on DB2 objects residing in a different schema, even though it was not created that way originally. For more details, see Figure 7-1. - -Figure 7-1 Restoring tables to different schemas - - -The only way to fix this issue is to re-create the row permission or column mask after the restore operation. Re-creation of the row permission or column mask is required only for definitions that reference other DB2 objects, but it is simpler to re-create all of the RCAC definitions instead of a subset. For example, generate the SQL using System i Navigator, clear the "Schema qualify names for objects" and select the "OR REPLACE clause", and then run the generated script. - -## 7.2.2 Table migration - -There are several IBM i CL commands, such as Move Object ( MOVOBJ ), Create Duplicate Object ( CRTDUPOBJ ), and Copy Library ( CPYLIB ), which are used to migrate a table from one library to another one. Often, this migration is done to create different versions of the table that can be used for development or testing purposes. - -The migration of a table with RCAC has the same challenges as restore processing. If the RCAC definition references other DB2 objects, then IBM i CL commands do not change the schema names that are explicitly qualified by the DB2 internal RCAC processing. - -Again, re-creating the row permission or column mask is the only way to fix the issue of references to DB2 objects in other schemas. - -## 7.3 Monitoring and auditing function usage - -While establishing proper roles for users, separating duties using function usage IDs, and defining RCAC policies allows you to implement an effective and pervasive data access control scheme. How do you monitor and audit everyone who is involved in the implementation of that scheme? The answer is to use IBM i journaling. A special journal that is called QAUDJRN, also known as the audit journal , can provide a record and audit trail of many security relevant events that occur on the system, including RCAC-related events. - -The tasks and operations of security administrators and database engineers who are collaborating can (and should) be effectively monitored and audited to ensure that the organization's data access control and governance policies are in place and enabled. For example, the Database Engineers can be involved in designing and developing functions and triggers that must be secured using the SECURE attribute. Otherwise, without properly securing functions and triggers, the RCAC controls can be bypassed. - -A new journal entry type of "AX" for journal entry code "T" (audit trail) is now used for RCAC. More information about the journaling of RCAC operations can be found in the following documents: - -- GLYPH IBM i Version 7.2 Journal Management Guide , found at: - -- http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzaki/rzakiprintthis .htm?lang=en - -- GLYPH IBM i Version 7.2 Security Reference Guide , found at: - -- http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzarl/rzarlkickoff.h tm?lang=en - - - - -Chapter 8. - -## Designing and planning for success - -Although successfully implementing Row and Column Access Control (RCAC) is based on knowledge and skills, designing and planning are fundamental aspects. This chapter describes the need for a deep understanding of the technology, and good design, proper planning, and adequate testing. - -The following topics are covered in this chapter: - -- GLYPH Implementing RCAC with good design and proper planning - -- GLYPH DB2 for i Center of Excellence - -8 - -## 8.1 Implementing RCAC with good design and proper planning - -By using RCAC, the row and column data that is returned to the requester can be controlled and governed by a set of data-centric policies that are defined with SQL and implemented within DB2 for i. - -RCAC provides fine-grained access control and is complementary to IBM i object-level security. With the new RCAC feature of DB2 for i, the database engineer, in partnership with the data owner and security officer, can ensure that users have access to the data based on their level of authorization and responsibility. - -This situation also can include separation of duties, such as allowing the application developers to design and implement the solutions, but restricting them from accessing the production data based on policy. Just because someone writes and owns the program, it does not mean that they have access to all the sensitive data that their program can potentially read. - -This paper has described the following pervasive power and advantages of RCAC: - -- GLYPH Access can be controlled through simple or sophisticated logic. - -- GLYPH Virtually no application changes are required. - -- GLYPH The implementation of the access policy is part of the DB2 data access layer. - -- GLYPH Table data is protected regardless of the interface that is used. - -- GLYPH No user is inherently exempted from the access control policies. - -- GLYPH Groups of users can share policies and permissions. - -A deep understanding of the technology, and proper planning, good design, adequate testing, and monitored deployment are critical for success. This includes the usage of quality assurance testing, and realistic performance and scalability exercises that serve to demonstrate that all of your requirements are being met. As part of the verification process, the usage of in-depth proofs of concepts and proofs of technology are recommended, if not essential. When RCAC is activated, the results of queries can change. Anticipating this change and realizing the effects of RCAC before going live are of the utmost importance. - -With the ever-growing value of data, and the vast and varied database technology that is available today, it is crucial to have a person or persons on staff who specialize in data-centric design, development, and deployment. This role and responsibility falls on the database engineer. With the availability of DB2 RCAC, the importance of full-time database engineering has grown. - -## 8.2 DB2 for i Center of Excellence - -To further assist you with understanding and implementing RCAC, the DB2 for i Center of Excellence team offers an RCAC education and consulting workshop. In addition to knowledge transfer, a working session allows for a review of your data access control requirements, review of the current environment, solution ideation, and high-level solution design. - -If you are interested in engaging with the DB2 for i Center of Excellence, contact Mike Cain at mcain@us.ibm.com . - - - - -Appendix A. - -## Database definitions for the RCAC banking example - -This appendix provides the database definitions or DDLs to re-create the Row and Column Access Control (RCAC) scenario that is described in Chapter 4, "Implementing Row and Column Access Control: Banking example" on page 37. The script that is shown in Example A-1 is the DDL script that is used to implement this example. - -Example A-1 DDL script to implement the RCAC banking example - -/* Database Definitions for RCAC Bank Scenario */ /* Schema */ CREATE SCHEMA BANK_SCHEMA FOR SCHEMA BANKSCHEMA ; /* Global Variable */ CREATE VARIABLE BANK_SCHEMA.CUSTOMER_LOGIN_ID VARCHAR( 30) ; LABEL ON VARIABLE BANK_SCHEMA.CUSTOMER_LOGIN_ID IS 'Customer''s log in value passed by web application' ; /* Tables */ CREATE TABLE BANK_SCHEMA.CUSTOMERS ( CUSTOMER_ID FOR COLUMN CUSTO00001 INTEGER GENERATED ALWAYS AS IDENTITY ( START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE NO CYCLE NO ORDER CACHE 20 ), CUSTOMER_NAME FOR COLUMN CUSTO00002 VARCHAR(30) CCSID 37 NOT NULL , CUSTOMER_ADDRESS FOR COLUMN CUSTO00003 VARCHAR(30) CCSID 37 NOT NULL , CUSTOMER_CITY FOR COLUMN CUSTO00004 VARCHAR(30) CCSID 37 NOT NULL , CUSTOMER_STATE FOR COLUMN CUSTO00005 CHAR(2) CCSID 37 NOT NULL , CUSTOMER_PHONE FOR COLUMN CUSTO00006 CHAR(10) CCSID 37 NOT NULL , CUSTOMER_EMAIL FOR COLUMN CUSTO00007 VARCHAR(30) CCSID 37 NOT NULL , CUSTOMER_TAX_ID FOR COLUMN CUSTO00008 CHAR(11) CCSID 37 NOT NULL , CUSTOMER_DRIVERS_LICENSE_NUMBER FOR COLUMN CUSTO00012 CHAR(13) CCSID 37 DEFAULT NULL , CUSTOMER_LOGIN_ID FOR COLUMN CUSTO00009 VARCHAR(30) CCSID 37 DEFAULT NULL , CUSTOMER_SECURITY_QUESTION FOR COLUMN CUSTO00010 VARCHAR(100) CCSID 37 DEFAULT NULL , - -A - -CUSTOMER_SECURITY_QUESTION_ANSWER FOR COLUMN CUSTO00011 VARCHAR(100) CCSID 37 DEFAULT NULL , INSERT_TIMESTAMP FOR COLUMN INSER00001 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , UPDATE_TIMESTAMP FOR COLUMN UPDAT00001 TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , CONSTRAINT BANK_SCHEMA.CUSTOMER_ID_PK PRIMARY KEY( CUSTOMER_ID ) ) ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_LOGIN_ID_UK UNIQUE( CUSTOMER_LOGIN_ID ) ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_DRIVERS_LICENSE_CHECK CHECK( CUSTOMER_DRIVERS_LICENSE_NUMBER <> '*************' ) ON UPDATE VIOLATION PRESERVE CUSTOMER_DRIVERS_LICENSE_NUMBER ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_EMAIL_CHECK CHECK( CUSTOMER_EMAIL <> '****@****' ) ON UPDATE VIOLATION PRESERVE CUSTOMER_EMAIL ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_LOGIN_ID_CHECK CHECK( CUSTOMER_LOGIN_ID <> '*****' ) ON INSERT VIOLATION SET CUSTOMER_LOGIN_ID = DEFAULT ON UPDATE VIOLATION PRESERVE CUSTOMER_LOGIN_ID ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_SECURITY_QUESTION_CHECK CHECK( CUSTOMER_SECURITY_QUESTION_ANSWER <> '*****' ) ON INSERT VIOLATION SET CUSTOMER_SECURITY_QUESTION_ANSWER = DEFAULT ON UPDATE VIOLATION PRESERVE CUSTOMER_SECURITY_QUESTION_ANSWER ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_SECURITY_QUESTION_ANSWER CHECK( CUSTOMER_SECURITY_QUESTION <> '*****' ) ON INSERT VIOLATION SET CUSTOMER_SECURITY_QUESTION = DEFAULT ON UPDATE VIOLATION PRESERVE CUSTOMER_SECURITY_QUESTION ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_TAX_ID_CHECK CHECK( CUSTOMER_TAX_ID <> 'XXX-XX-XXXX' AND SUBSTR ( CUSTOMER_TAX_ID , 1 , 7 ) <> 'XXX-XX-' ) ON UPDATE VIOLATION PRESERVE CUSTOMER_TAX_ID ; CREATE TABLE BANK_SCHEMA.ACCOUNTS ( ACCOUNT_ID INTEGER GENERATED ALWAYS AS IDENTITY ( START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE NO CYCLE NO ORDER CACHE 20 ), CUSTOMER_ID FOR COLUMN CUSTID INTEGER NOT NULL , ACCOUNT_NUMBER FOR COLUMN ACCOUNTNO VARCHAR(50) CCSID 37 NOT NULL , ACCOUNT_NAME FOR COLUMN ACCOUNTNAM CHAR(12) CCSID 37 NOT NULL , ACCOUNT_DATE_OPENED FOR COLUMN OPENDATE DATE DEFAULT CURRENT_DATE , ACCOUNT_DATE_CLOSED FOR COLUMN CLOSEDATE DATE DEFAULT NULL , ACCOUNT_CURRENT_BALANCE FOR COLUMN ACCTBAL DECIMAL(11, 2) NOT NULL DEFAULT 0 , INSERT_TIMESTAMP FOR COLUMN INSDATE TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , UPDATE_TIMESTAMP FOR COLUMN UPDDATE TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , CONSTRAINT BANK_SCHEMA.ACCOUNT_ID_PK PRIMARY KEY( ACCOUNT_ID ) ); - -ALTER TABLE BANK_SCHEMA.ACCOUNTS ADD CONSTRAINT BANK_SCHEMA.ACCOUNT_CUSTOMER_ID_FK FOREIGN KEY( CUSTOMER_ID ) REFERENCES BANK_SCHEMA.CUSTOMERS ( CUSTO00001 ) ON DELETE RESTRICT ON UPDATE RESTRICT ; ALTER TABLE BANK_SCHEMA.ACCOUNTS ADD CONSTRAINT BANK_SCHEMA.ACCOUNT_NUMBER_CHECK CHECK( ACCOUNT_NUMBER <> '*****' ) ON UPDATE VIOLATION PRESERVE ACCOUNT_NUMBER ; CREATE TABLE BANK_SCHEMA.TRANSACTIONS FOR SYSTEM NAME TRANS ( TRANSACTION_ID FOR COLUMN TRANS00001 INTEGER GENERATED ALWAYS AS IDENTITY ( START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE NO CYCLE NO ORDER CACHE 20 ), ACCOUNT_ID INTEGER NOT NULL , TRANSACTION_TYPE FOR COLUMN TRANS00002 CHAR(1) CCSID 37 NOT NULL , TRANSACTION_DATE FOR COLUMN TRANS00003 DATE NOT NULL DEFAULT CURRENT_DATE , TRANSACTION_TIME FOR COLUMN TRANS00004 TIME NOT NULL DEFAULT CURRENT_TIME , TRANSACTION_AMOUNT FOR COLUMN TRANS00005 DECIMAL(11, 2) NOT NULL , INSERT_TIMESTAMP FOR COLUMN INSER00001 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , UPDATE_TIMESTAMP FOR COLUMN UPDAT00001 TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , CONSTRAINT BANK_SCHEMA.TRANSACTION_ID_PK PRIMARY KEY( TRANSACTION_ID ) ) ; ALTER TABLE BANK_SCHEMA.TRANSACTIONS ADD CONSTRAINT BANK_SCHEMA.TRANSACTIONS_ACCOUNT_ID_FK FOREIGN KEY( ACCOUNT_ID ) REFERENCES BANK_SCHEMA.ACCOUNTS ( ACCOUNT_ID ) ON DELETE RESTRICT ON UPDATE RESTRICT ; /* Permissions and Masks */ CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) OR ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 AND ( C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ) ) ENFORCED FOR ALL ACCESS ENABLE ; CREATE MASK BANK_SCHEMA.MASK_EMAIL_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_EMAIL RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_EMAIL WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_EMAIL ELSE '****@****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_TAX_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_TAX_ID RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 - -THEN C . CUSTOMER_TAX_ID WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( C . CUSTOMER_TAX_ID , 8 , 4 ) ) WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_TAX_ID ELSE 'XXX-XX-XXXX' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_DRIVERS_LICENSE_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_DRIVERS_LICENSE_NUMBER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ELSE '*************' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_LOGIN_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_LOGIN_ID RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_LOGIN_ID WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_LOGIN_ID ELSE '*****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_SECURITY_QUESTION RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION ELSE '*****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_SECURITY_QUESTION_ANSWER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ELSE '*****' END ENABLE ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL ; - -CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_ACCOUNTS ON BANK_SCHEMA.ACCOUNTS AS A FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) OR ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 AND ( A . CUSTOMER_ID IN ( SELECT C . CUSTOMER_ID FROM BANK_SCHEMA . CUSTOMERS C WHERE C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ENFORCED FOR ALL ACCESS ENABLE ; CREATE MASK BANK_SCHEMA.MASK_ACCOUNT_NUMBER_ON_ACCOUNTS ON BANK_SCHEMA.ACCOUNTS AS A FOR COLUMN ACCOUNT_NUMBER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN A . ACCOUNT_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN A . ACCOUNT_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN A . ACCOUNT_NUMBER ELSE '*****' END ENABLE ; ALTER TABLE BANK_SCHEMA.ACCOUNTS ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL ; CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_TRANSACTIONS ON BANK_SCHEMA.TRANSACTIONS AS T FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) OR ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 AND ( T . ACCOUNT_ID IN ( SELECT A . ACCOUNT_ID FROM BANK_SCHEMA . ACCOUNTS A WHERE A . CUSTOMER_ID IN ( SELECT C . CUSTOMER_ID FROM BANK_SCHEMA . CUSTOMERS C WHERE C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ENFORCED FOR ALL ACCESS ENABLE ; ALTER TABLE BANK_SCHEMA.TRANSACTIONS ACTIVATE ROW ACCESS CONTROL ; /* END */ - -## Related publications - -The publications that are listed in this section are considered suitable for a more detailed description of the topics that are covered in this paper. - -## Other publications - -These publications are relevant as further information sources: - -- GLYPH IBM DB2 for i indexing methods and strategies white paper: - -- http://www.ibm.com/partnerworld/wps/servlet/ContentHandler/stg_ast_sys_wp_db2_i _indexing_methods_strategies - -- GLYPH IBM i Memo to Users Version 7.2 : - -- http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgmtu.htm - -- GLYPH IBM i Version 7.2 DB2 for i SQL Reference Guide : - -- http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/db2/rbafzintro.htm?l ang=en - -- GLYPH IBM i Version 7.2 Journal Management Guide : - -- http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzaki/rzakiprintthis .htm?lang=en - -- GLYPH IBM i Version 7.2 Security Reference Guide : - -- http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzarl/rzarlkickoff.h tm?lang=en - -## Online resources - -These websites are relevant as further information sources: - -- GLYPH Database programming topic of the IBM i 7.2 IBM Knowledge Center: - -- http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgdbp.htm?l ang=en - -- GLYPH Identity Theft Resource Center - -- http://www.idtheftcenter.org - -- GLYPH Ponemon Institute - -- http://www.ponemon.org/ - -## Help from IBM - -IBM Support and downloads - -ibm.com /support - -IBM Global Services - -ibm.com /services - -Back cover - -## Row and Column Access Control Support in IBM DB2 for i - -Implement roles and separation of duties - -Leverage row permissions on the database - -Protect columns by defining column masks - -This IBM Redpaper publication provides information about the IBM i 7.2 feature of IBM DB2 for i Row and Column Access Control (RCAC). It offers a broad description of the function and advantages of controlling access to data in a comprehensive and transparent way. This publication helps you understand the capabilities of RCAC and provides examples of defining, creating, and implementing the row permissions and column masks in a relational database environment. - -This paper is intended for database engineers, data-centric application developers, and security officers who want to design and implement RCAC as a part of their data control and governance policy. A solid background in IBM i object level security, DB2 for i relational database concepts, and SQL is assumed. - - - - - - - -INTERNATIONAL TECHNICAL SUPPORT ORGANIZATION - -BUILDING TECHNICAL INFORMATION BASED ON PRACTICAL EXPERIENCE - -IBM Redbooks are developed by the IBM International Technical Support Organization. Experts from IBM, Customers and Partners from around the world create timely technical information based on realistic scenarios. Specific recommendations are provided to help you implement IT solutions more effectively in your environment. - -For more information: ibm.com /redbooks \ No newline at end of file diff --git a/tests/data/groundtruth/docling_v1/redp5110.pages.json b/tests/data/groundtruth/docling_v1/redp5110.pages.json deleted file mode 100644 index ddd38715..00000000 --- a/tests/data/groundtruth/docling_v1/redp5110.pages.json +++ /dev/null @@ -1 +0,0 @@ -[{"page_no": 0, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "ibm.com", "bbox": {"l": 36.900002, "t": 751.23, "r": 98.600998, "b": 765.105, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "/redbooks", "bbox": {"l": 98.580002, "t": 751.23, "r": 164.4585, "b": 765.105, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Redpaper", "bbox": {"l": 314.70001, "t": 711.50856, "r": 580.52002, "b": 773.772959, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Front cover", "bbox": {"l": 287.82001, "t": 28.54803000000004, "r": 418.83356, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Row and Column Access Control ", "bbox": {"l": 35.700001, "t": 84.58654999999987, "r": 584.64288, "b": 122.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Support in IBM DB2 for i", "bbox": {"l": 35.700001, "t": 127.60668999999996, "r": 447.66919000000007, "b": 165.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Jim Bainbridge", "bbox": {"l": 509.22, "t": 575.71201, "r": 581.34119, "b": 586.392, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Hernando Bedoya", "bbox": {"l": 497.70001, "t": 589.752, "r": 581.3736, "b": 600.43199, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Rob Bestgen", "bbox": {"l": 521.40002, "t": 603.73199, "r": 581.34003, "b": 614.4119900000001, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Mike Cain", "bbox": {"l": 534.12, "t": 617.71199, "r": 581.31598, "b": 628.39198, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Dan Cruikshank", "bbox": {"l": 505.43999999999994, "t": 631.75198, "r": 581.29077, "b": 642.4319800000001, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Jim Denton", "bbox": {"l": 527.22003, "t": 645.73198, "r": 581.29926, "b": 656.41197, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Doug Mack", "bbox": {"l": 527.64001, "t": 659.71198, "r": 581.30884, "b": 670.39197, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Tom McKinley", "bbox": {"l": 514.38, "t": 673.75197, "r": 581.38678, "b": 684.43197, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Kent Milligan", "bbox": {"l": 518.82001, "t": 687.73197, "r": 581.33759, "b": 698.411972, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Implement roles and separation ", "bbox": {"l": 36.119999, "t": 296.13828, "r": 216.00064, "b": 308.58047, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "of duties", "bbox": {"l": 36.119999, "t": 313.11838000000006, "r": 84.527145, "b": 325.56058, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Leverage", "bbox": {"l": 35.759315, "t": 350.13881999999995, "r": 80.409691, "b": 362.58102, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "row permissions on ", "bbox": {"l": 151.8503, "t": 350.13881999999995, "r": 202.45404, "b": 362.58102, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "the", "bbox": {"l": 35.759315, "t": 367.11893, "r": 50.758106, "b": 379.56112999999993, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "database", "bbox": {"l": 86.755211, "t": 367.11893, "r": 107.75352000000001, "b": 379.56112999999993, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Protect", "bbox": {"l": 36.059887, "t": 404.13937, "r": 73.020607, "b": 416.58157, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "columns by defining ", "bbox": {"l": 152.62831, "t": 404.13937, "r": 195.2753, "b": 416.58157, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "column", "bbox": {"l": 36.059887, "t": 421.11948, "r": 73.311806, "b": 433.56167999999997, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "masks", "bbox": {"l": 73.311806, "t": 421.11948, "r": 117.33681, "b": 433.56167999999997, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 36.894657135009766, "t": 749.8662109375, "r": 164.4585, "b": 765.105, "coord_origin": "TOPLEFT"}, "confidence": 0.7180292010307312, "cells": [{"id": 0, "text": "ibm.com", "bbox": {"l": 36.900002, "t": 751.23, "r": 98.600998, "b": 765.105, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "/redbooks", "bbox": {"l": 98.580002, "t": 751.23, "r": 164.4585, "b": 765.105, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "text", "bbox": {"l": 314.70001, "t": 711.50856, "r": 580.52002, "b": 773.772959, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Redpaper", "bbox": {"l": 314.70001, "t": 711.50856, "r": 580.52002, "b": 773.772959, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 287.82001, "t": 28.54803000000004, "r": 418.83356, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 3, "text": "Front cover", "bbox": {"l": 287.82001, "t": 28.54803000000004, "r": 418.83356, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "section_header", "bbox": {"l": 35.68840408325195, "t": 82.3943099975586, "r": 584.64288, "b": 166.40553283691406, "coord_origin": "TOPLEFT"}, "confidence": 0.8281131386756897, "cells": [{"id": 4, "text": "Row and Column Access Control ", "bbox": {"l": 35.700001, "t": 84.58654999999987, "r": 584.64288, "b": 122.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Support in IBM DB2 for i", "bbox": {"l": 35.700001, "t": 127.60668999999996, "r": 447.66919000000007, "b": 165.84113000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 497.0279846191406, "t": 573.8836669921875, "r": 581.8246459960938, "b": 699.171630859375, "coord_origin": "TOPLEFT"}, "confidence": 0.7621812224388123, "cells": [{"id": 6, "text": "Jim Bainbridge", "bbox": {"l": 509.22, "t": 575.71201, "r": 581.34119, "b": 586.392, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Hernando Bedoya", "bbox": {"l": 497.70001, "t": 589.752, "r": 581.3736, "b": 600.43199, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Rob Bestgen", "bbox": {"l": 521.40002, "t": 603.73199, "r": 581.34003, "b": 614.4119900000001, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Mike Cain", "bbox": {"l": 534.12, "t": 617.71199, "r": 581.31598, "b": 628.39198, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Dan Cruikshank", "bbox": {"l": 505.43999999999994, "t": 631.75198, "r": 581.29077, "b": 642.4319800000001, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Jim Denton", "bbox": {"l": 527.22003, "t": 645.73198, "r": 581.29926, "b": 656.41197, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Doug Mack", "bbox": {"l": 527.64001, "t": 659.71198, "r": 581.30884, "b": 670.39197, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Tom McKinley", "bbox": {"l": 514.38, "t": 673.75197, "r": 581.38678, "b": 684.43197, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Kent Milligan", "bbox": {"l": 518.82001, "t": 687.73197, "r": 581.33759, "b": 698.411972, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 35.0073127746582, "t": 294.7938232421875, "r": 216.00064, "b": 325.56058, "coord_origin": "TOPLEFT"}, "confidence": 0.8502883315086365, "cells": [{"id": 15, "text": "Implement roles and separation ", "bbox": {"l": 36.119999, "t": 296.13828, "r": 216.00064, "b": 308.58047, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "of duties", "bbox": {"l": 36.119999, "t": 313.11838000000006, "r": 84.527145, "b": 325.56058, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 34.56448745727539, "t": 348.9540710449219, "r": 202.45404, "b": 379.56112999999993, "coord_origin": "TOPLEFT"}, "confidence": 0.8639552593231201, "cells": [{"id": 17, "text": "Leverage", "bbox": {"l": 35.759315, "t": 350.13881999999995, "r": 80.409691, "b": 362.58102, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "row permissions on ", "bbox": {"l": 151.8503, "t": 350.13881999999995, "r": 202.45404, "b": 362.58102, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "the", "bbox": {"l": 35.759315, "t": 367.11893, "r": 50.758106, "b": 379.56112999999993, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "database", "bbox": {"l": 86.755211, "t": 367.11893, "r": 107.75352000000001, "b": 379.56112999999993, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 35.171409606933594, "t": 402.6540832519531, "r": 195.2753, "b": 433.56167999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.842113196849823, "cells": [{"id": 21, "text": "Protect", "bbox": {"l": 36.059887, "t": 404.13937, "r": 73.020607, "b": 416.58157, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "columns by defining ", "bbox": {"l": 152.62831, "t": 404.13937, "r": 195.2753, "b": 416.58157, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "column", "bbox": {"l": 36.059887, "t": 421.11948, "r": 73.311806, "b": 433.56167999999997, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "masks", "bbox": {"l": 73.311806, "t": 421.11948, "r": 117.33681, "b": 433.56167999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 513.4560546875, "t": 26.085098266601562, "r": 586.1583251953125, "b": 54.81915283203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9272357225418091, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 0, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 36.894657135009766, "t": 749.8662109375, "r": 164.4585, "b": 765.105, "coord_origin": "TOPLEFT"}, "confidence": 0.7180292010307312, "cells": [{"id": 0, "text": "ibm.com", "bbox": {"l": 36.900002, "t": 751.23, "r": 98.600998, "b": 765.105, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "/redbooks", "bbox": {"l": 98.580002, "t": 751.23, "r": 164.4585, "b": 765.105, "coord_origin": "TOPLEFT"}}]}, "text": "ibm.com /redbooks"}, {"label": "text", "id": 1, "page_no": 0, "cluster": {"id": 1, "label": "text", "bbox": {"l": 314.70001, "t": 711.50856, "r": 580.52002, "b": 773.772959, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Redpaper", "bbox": {"l": 314.70001, "t": 711.50856, "r": 580.52002, "b": 773.772959, "coord_origin": "TOPLEFT"}}]}, "text": "Redpaper"}, {"label": "text", "id": 2, "page_no": 0, "cluster": {"id": 2, "label": "text", "bbox": {"l": 287.82001, "t": 28.54803000000004, "r": 418.83356, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 3, "text": "Front cover", "bbox": {"l": 287.82001, "t": 28.54803000000004, "r": 418.83356, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}}]}, "text": "Front cover"}, {"label": "section_header", "id": 3, "page_no": 0, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 35.68840408325195, "t": 82.3943099975586, "r": 584.64288, "b": 166.40553283691406, "coord_origin": "TOPLEFT"}, "confidence": 0.8281131386756897, "cells": [{"id": 4, "text": "Row and Column Access Control ", "bbox": {"l": 35.700001, "t": 84.58654999999987, "r": 584.64288, "b": 122.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Support in IBM DB2 for i", "bbox": {"l": 35.700001, "t": 127.60668999999996, "r": 447.66919000000007, "b": 165.84113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 4, "page_no": 0, "cluster": {"id": 4, "label": "text", "bbox": {"l": 497.0279846191406, "t": 573.8836669921875, "r": 581.8246459960938, "b": 699.171630859375, "coord_origin": "TOPLEFT"}, "confidence": 0.7621812224388123, "cells": [{"id": 6, "text": "Jim Bainbridge", "bbox": {"l": 509.22, "t": 575.71201, "r": 581.34119, "b": 586.392, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Hernando Bedoya", "bbox": {"l": 497.70001, "t": 589.752, "r": 581.3736, "b": 600.43199, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Rob Bestgen", "bbox": {"l": 521.40002, "t": 603.73199, "r": 581.34003, "b": 614.4119900000001, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Mike Cain", "bbox": {"l": 534.12, "t": 617.71199, "r": 581.31598, "b": 628.39198, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Dan Cruikshank", "bbox": {"l": 505.43999999999994, "t": 631.75198, "r": 581.29077, "b": 642.4319800000001, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Jim Denton", "bbox": {"l": 527.22003, "t": 645.73198, "r": 581.29926, "b": 656.41197, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Doug Mack", "bbox": {"l": 527.64001, "t": 659.71198, "r": 581.30884, "b": 670.39197, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Tom McKinley", "bbox": {"l": 514.38, "t": 673.75197, "r": 581.38678, "b": 684.43197, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Kent Milligan", "bbox": {"l": 518.82001, "t": 687.73197, "r": 581.33759, "b": 698.411972, "coord_origin": "TOPLEFT"}}]}, "text": "Jim Bainbridge Hernando Bedoya Rob Bestgen Mike Cain Dan Cruikshank Jim Denton Doug Mack Tom McKinley Kent Milligan"}, {"label": "text", "id": 5, "page_no": 0, "cluster": {"id": 5, "label": "text", "bbox": {"l": 35.0073127746582, "t": 294.7938232421875, "r": 216.00064, "b": 325.56058, "coord_origin": "TOPLEFT"}, "confidence": 0.8502883315086365, "cells": [{"id": 15, "text": "Implement roles and separation ", "bbox": {"l": 36.119999, "t": 296.13828, "r": 216.00064, "b": 308.58047, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "of duties", "bbox": {"l": 36.119999, "t": 313.11838000000006, "r": 84.527145, "b": 325.56058, "coord_origin": "TOPLEFT"}}]}, "text": "Implement roles and separation of duties"}, {"label": "text", "id": 6, "page_no": 0, "cluster": {"id": 6, "label": "text", "bbox": {"l": 34.56448745727539, "t": 348.9540710449219, "r": 202.45404, "b": 379.56112999999993, "coord_origin": "TOPLEFT"}, "confidence": 0.8639552593231201, "cells": [{"id": 17, "text": "Leverage", "bbox": {"l": 35.759315, "t": 350.13881999999995, "r": 80.409691, "b": 362.58102, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "row permissions on ", "bbox": {"l": 151.8503, "t": 350.13881999999995, "r": 202.45404, "b": 362.58102, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "the", "bbox": {"l": 35.759315, "t": 367.11893, "r": 50.758106, "b": 379.56112999999993, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "database", "bbox": {"l": 86.755211, "t": 367.11893, "r": 107.75352000000001, "b": 379.56112999999993, "coord_origin": "TOPLEFT"}}]}, "text": "Leverage row permissions on the database"}, {"label": "text", "id": 7, "page_no": 0, "cluster": {"id": 7, "label": "text", "bbox": {"l": 35.171409606933594, "t": 402.6540832519531, "r": 195.2753, "b": 433.56167999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.842113196849823, "cells": [{"id": 21, "text": "Protect", "bbox": {"l": 36.059887, "t": 404.13937, "r": 73.020607, "b": 416.58157, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "columns by defining ", "bbox": {"l": 152.62831, "t": 404.13937, "r": 195.2753, "b": 416.58157, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "column", "bbox": {"l": 36.059887, "t": 421.11948, "r": 73.311806, "b": 433.56167999999997, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "masks", "bbox": {"l": 73.311806, "t": 421.11948, "r": 117.33681, "b": 433.56167999999997, "coord_origin": "TOPLEFT"}}]}, "text": "Protect columns by defining column masks"}, {"label": "picture", "id": 8, "page_no": 0, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 513.4560546875, "t": 26.085098266601562, "r": 586.1583251953125, "b": 54.81915283203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9272357225418091, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 1, "page_no": 0, "cluster": {"id": 1, "label": "text", "bbox": {"l": 314.70001, "t": 711.50856, "r": 580.52002, "b": 773.772959, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Redpaper", "bbox": {"l": 314.70001, "t": 711.50856, "r": 580.52002, "b": 773.772959, "coord_origin": "TOPLEFT"}}]}, "text": "Redpaper"}, {"label": "text", "id": 2, "page_no": 0, "cluster": {"id": 2, "label": "text", "bbox": {"l": 287.82001, "t": 28.54803000000004, "r": 418.83356, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 3, "text": "Front cover", "bbox": {"l": 287.82001, "t": 28.54803000000004, "r": 418.83356, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}}]}, "text": "Front cover"}, {"label": "section_header", "id": 3, "page_no": 0, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 35.68840408325195, "t": 82.3943099975586, "r": 584.64288, "b": 166.40553283691406, "coord_origin": "TOPLEFT"}, "confidence": 0.8281131386756897, "cells": [{"id": 4, "text": "Row and Column Access Control ", "bbox": {"l": 35.700001, "t": 84.58654999999987, "r": 584.64288, "b": 122.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Support in IBM DB2 for i", "bbox": {"l": 35.700001, "t": 127.60668999999996, "r": 447.66919000000007, "b": 165.84113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 4, "page_no": 0, "cluster": {"id": 4, "label": "text", "bbox": {"l": 497.0279846191406, "t": 573.8836669921875, "r": 581.8246459960938, "b": 699.171630859375, "coord_origin": "TOPLEFT"}, "confidence": 0.7621812224388123, "cells": [{"id": 6, "text": "Jim Bainbridge", "bbox": {"l": 509.22, "t": 575.71201, "r": 581.34119, "b": 586.392, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Hernando Bedoya", "bbox": {"l": 497.70001, "t": 589.752, "r": 581.3736, "b": 600.43199, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Rob Bestgen", "bbox": {"l": 521.40002, "t": 603.73199, "r": 581.34003, "b": 614.4119900000001, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Mike Cain", "bbox": {"l": 534.12, "t": 617.71199, "r": 581.31598, "b": 628.39198, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Dan Cruikshank", "bbox": {"l": 505.43999999999994, "t": 631.75198, "r": 581.29077, "b": 642.4319800000001, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Jim Denton", "bbox": {"l": 527.22003, "t": 645.73198, "r": 581.29926, "b": 656.41197, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Doug Mack", "bbox": {"l": 527.64001, "t": 659.71198, "r": 581.30884, "b": 670.39197, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Tom McKinley", "bbox": {"l": 514.38, "t": 673.75197, "r": 581.38678, "b": 684.43197, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Kent Milligan", "bbox": {"l": 518.82001, "t": 687.73197, "r": 581.33759, "b": 698.411972, "coord_origin": "TOPLEFT"}}]}, "text": "Jim Bainbridge Hernando Bedoya Rob Bestgen Mike Cain Dan Cruikshank Jim Denton Doug Mack Tom McKinley Kent Milligan"}, {"label": "text", "id": 5, "page_no": 0, "cluster": {"id": 5, "label": "text", "bbox": {"l": 35.0073127746582, "t": 294.7938232421875, "r": 216.00064, "b": 325.56058, "coord_origin": "TOPLEFT"}, "confidence": 0.8502883315086365, "cells": [{"id": 15, "text": "Implement roles and separation ", "bbox": {"l": 36.119999, "t": 296.13828, "r": 216.00064, "b": 308.58047, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "of duties", "bbox": {"l": 36.119999, "t": 313.11838000000006, "r": 84.527145, "b": 325.56058, "coord_origin": "TOPLEFT"}}]}, "text": "Implement roles and separation of duties"}, {"label": "text", "id": 6, "page_no": 0, "cluster": {"id": 6, "label": "text", "bbox": {"l": 34.56448745727539, "t": 348.9540710449219, "r": 202.45404, "b": 379.56112999999993, "coord_origin": "TOPLEFT"}, "confidence": 0.8639552593231201, "cells": [{"id": 17, "text": "Leverage", "bbox": {"l": 35.759315, "t": 350.13881999999995, "r": 80.409691, "b": 362.58102, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "row permissions on ", "bbox": {"l": 151.8503, "t": 350.13881999999995, "r": 202.45404, "b": 362.58102, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "the", "bbox": {"l": 35.759315, "t": 367.11893, "r": 50.758106, "b": 379.56112999999993, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "database", "bbox": {"l": 86.755211, "t": 367.11893, "r": 107.75352000000001, "b": 379.56112999999993, "coord_origin": "TOPLEFT"}}]}, "text": "Leverage row permissions on the database"}, {"label": "text", "id": 7, "page_no": 0, "cluster": {"id": 7, "label": "text", "bbox": {"l": 35.171409606933594, "t": 402.6540832519531, "r": 195.2753, "b": 433.56167999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.842113196849823, "cells": [{"id": 21, "text": "Protect", "bbox": {"l": 36.059887, "t": 404.13937, "r": 73.020607, "b": 416.58157, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "columns by defining ", "bbox": {"l": 152.62831, "t": 404.13937, "r": 195.2753, "b": 416.58157, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "column", "bbox": {"l": 36.059887, "t": 421.11948, "r": 73.311806, "b": 433.56167999999997, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "masks", "bbox": {"l": 73.311806, "t": 421.11948, "r": 117.33681, "b": 433.56167999999997, "coord_origin": "TOPLEFT"}}]}, "text": "Protect columns by defining column masks"}, {"label": "picture", "id": 8, "page_no": 0, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 513.4560546875, "t": 26.085098266601562, "r": 586.1583251953125, "b": 54.81915283203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9272357225418091, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 0, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 36.894657135009766, "t": 749.8662109375, "r": 164.4585, "b": 765.105, "coord_origin": "TOPLEFT"}, "confidence": 0.7180292010307312, "cells": [{"id": 0, "text": "ibm.com", "bbox": {"l": 36.900002, "t": 751.23, "r": 98.600998, "b": 765.105, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "/redbooks", "bbox": {"l": 98.580002, "t": 751.23, "r": 164.4585, "b": 765.105, "coord_origin": "TOPLEFT"}}]}, "text": "ibm.com /redbooks"}]}}, {"page_no": 1, "size": {"width": 612.0, "height": 792.0}, "cells": [], "predictions": {"layout": {"clusters": []}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [], "body": [], "headers": []}}, {"page_no": 2, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "International Technical Support Organization", "bbox": {"l": 192.0, "t": 72.16235000000006, "r": 468.15952000000004, "b": 85.09387000000004, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 ", "bbox": {"l": 192.0, "t": 104.80237, "r": 551.77112, "b": 117.73388999999997, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "for i", "bbox": {"l": 192.0, "t": 119.80291999999997, "r": 217.87138, "b": 132.73443999999995, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "November 2014", "bbox": {"l": 192.0, "t": 149.80260999999996, "r": 290.98956, "b": 162.73413000000005, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "REDP-5110-00", "bbox": {"l": 479.45998999999995, "t": 754.848721, "r": 547.26367, "b": 764.06172, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "section_header", "bbox": {"l": 192.0, "t": 70.99520874023438, "r": 468.15952000000004, "b": 85.18834686279297, "coord_origin": "TOPLEFT"}, "confidence": 0.723362147808075, "cells": [{"id": 0, "text": "International Technical Support Organization", "bbox": {"l": 192.0, "t": 72.16235000000006, "r": 468.15952000000004, "b": 85.09387000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "section_header", "bbox": {"l": 191.42994689941406, "t": 103.42080688476562, "r": 551.77112, "b": 132.73443999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.6808906197547913, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 ", "bbox": {"l": 192.0, "t": 104.80237, "r": 551.77112, "b": 117.73388999999997, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "for i", "bbox": {"l": 192.0, "t": 119.80291999999997, "r": 217.87138, "b": 132.73443999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 191.8452911376953, "t": 149.2097625732422, "r": 290.98956, "b": 162.73413000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.7205957770347595, "cells": [{"id": 3, "text": "November 2014", "bbox": {"l": 192.0, "t": 149.80260999999996, "r": 290.98956, "b": 162.73413000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "page_footer", "bbox": {"l": 479.1854553222656, "t": 753.9530639648438, "r": 547.26367, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9155997037887573, "cells": [{"id": 4, "text": "REDP-5110-00", "bbox": {"l": 479.45998999999995, "t": 754.848721, "r": 547.26367, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "picture", "bbox": {"l": 80.21302032470703, "t": 71.03994750976562, "r": 142.7141876220703, "b": 95.86432647705078, "coord_origin": "TOPLEFT"}, "confidence": 0.9511593580245972, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "section_header", "id": 0, "page_no": 2, "cluster": {"id": 0, "label": "section_header", "bbox": {"l": 192.0, "t": 70.99520874023438, "r": 468.15952000000004, "b": 85.18834686279297, "coord_origin": "TOPLEFT"}, "confidence": 0.723362147808075, "cells": [{"id": 0, "text": "International Technical Support Organization", "bbox": {"l": 192.0, "t": 72.16235000000006, "r": 468.15952000000004, "b": 85.09387000000004, "coord_origin": "TOPLEFT"}}]}, "text": "International Technical Support Organization"}, {"label": "section_header", "id": 1, "page_no": 2, "cluster": {"id": 1, "label": "section_header", "bbox": {"l": 191.42994689941406, "t": 103.42080688476562, "r": 551.77112, "b": 132.73443999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.6808906197547913, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 ", "bbox": {"l": 192.0, "t": 104.80237, "r": 551.77112, "b": 117.73388999999997, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "for i", "bbox": {"l": 192.0, "t": 119.80291999999997, "r": 217.87138, "b": 132.73443999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 2, "page_no": 2, "cluster": {"id": 2, "label": "text", "bbox": {"l": 191.8452911376953, "t": 149.2097625732422, "r": 290.98956, "b": 162.73413000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.7205957770347595, "cells": [{"id": 3, "text": "November 2014", "bbox": {"l": 192.0, "t": 149.80260999999996, "r": 290.98956, "b": 162.73413000000005, "coord_origin": "TOPLEFT"}}]}, "text": "November 2014"}, {"label": "page_footer", "id": 3, "page_no": 2, "cluster": {"id": 3, "label": "page_footer", "bbox": {"l": 479.1854553222656, "t": 753.9530639648438, "r": 547.26367, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9155997037887573, "cells": [{"id": 4, "text": "REDP-5110-00", "bbox": {"l": 479.45998999999995, "t": 754.848721, "r": 547.26367, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "REDP-5110-00"}, {"label": "picture", "id": 4, "page_no": 2, "cluster": {"id": 4, "label": "picture", "bbox": {"l": 80.21302032470703, "t": 71.03994750976562, "r": 142.7141876220703, "b": 95.86432647705078, "coord_origin": "TOPLEFT"}, "confidence": 0.9511593580245972, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "section_header", "id": 0, "page_no": 2, "cluster": {"id": 0, "label": "section_header", "bbox": {"l": 192.0, "t": 70.99520874023438, "r": 468.15952000000004, "b": 85.18834686279297, "coord_origin": "TOPLEFT"}, "confidence": 0.723362147808075, "cells": [{"id": 0, "text": "International Technical Support Organization", "bbox": {"l": 192.0, "t": 72.16235000000006, "r": 468.15952000000004, "b": 85.09387000000004, "coord_origin": "TOPLEFT"}}]}, "text": "International Technical Support Organization"}, {"label": "section_header", "id": 1, "page_no": 2, "cluster": {"id": 1, "label": "section_header", "bbox": {"l": 191.42994689941406, "t": 103.42080688476562, "r": 551.77112, "b": 132.73443999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.6808906197547913, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 ", "bbox": {"l": 192.0, "t": 104.80237, "r": 551.77112, "b": 117.73388999999997, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "for i", "bbox": {"l": 192.0, "t": 119.80291999999997, "r": 217.87138, "b": 132.73443999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 2, "page_no": 2, "cluster": {"id": 2, "label": "text", "bbox": {"l": 191.8452911376953, "t": 149.2097625732422, "r": 290.98956, "b": 162.73413000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.7205957770347595, "cells": [{"id": 3, "text": "November 2014", "bbox": {"l": 192.0, "t": 149.80260999999996, "r": 290.98956, "b": 162.73413000000005, "coord_origin": "TOPLEFT"}}]}, "text": "November 2014"}, {"label": "picture", "id": 4, "page_no": 2, "cluster": {"id": 4, "label": "picture", "bbox": {"l": 80.21302032470703, "t": 71.03994750976562, "r": 142.7141876220703, "b": 95.86432647705078, "coord_origin": "TOPLEFT"}, "confidence": 0.9511593580245972, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 3, "page_no": 2, "cluster": {"id": 3, "label": "page_footer", "bbox": {"l": 479.1854553222656, "t": 753.9530639648438, "r": 547.26367, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9155997037887573, "cells": [{"id": 4, "text": "REDP-5110-00", "bbox": {"l": 479.45998999999995, "t": 754.848721, "r": 547.26367, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "REDP-5110-00"}]}}, {"page_no": 3, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "' Copyright International Business Machines Corporation 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 738.137901, "r": 426.39117, "b": 746.462898, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Note to U.S. Government Users Restricted Rights -- Use, duplication or disclosure restricted by GSA ADP Schedule", "bbox": {"l": 64.800011, "t": 749.117897, "r": 547.20087, "b": 757.442898, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Contract with IBM Corp.", "bbox": {"l": 64.800018, "t": 760.097898, "r": 160.03624, "b": 768.422899, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "First Edition (November 2014)", "bbox": {"l": 64.800003, "t": 686.50861, "r": 206.09755, "b": 695.721619, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "This edition applies to Version 7, Release 2 of IBM i (product number 5770-SS1).", "bbox": {"l": 64.800003, "t": 708.528183, "r": 422.24246, "b": 717.741188, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Note: ", "bbox": {"l": 70.800003, "t": 89.50867000000005, "r": 99.061501, "b": 98.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Before using this information and the product it supports, read the information in \u201cNotices\u201d on ", "bbox": {"l": 99.12027, "t": 89.50867000000005, "r": 511.22507, "b": 98.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "page vii.", "bbox": {"l": 70.800003, "t": 101.50847999999996, "r": 107.73766, "b": 110.72149999999999, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.55229949951172, "t": 737.2064208984375, "r": 426.39117, "b": 746.8391723632812, "coord_origin": "TOPLEFT"}, "confidence": 0.6578707098960876, "cells": [{"id": 0, "text": "' Copyright International Business Machines Corporation 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 738.137901, "r": 426.39117, "b": 746.462898, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "text", "bbox": {"l": 64.10758972167969, "t": 747.6624755859375, "r": 547.20087, "b": 768.422899, "coord_origin": "TOPLEFT"}, "confidence": 0.739277184009552, "cells": [{"id": 1, "text": "Note to U.S. Government Users Restricted Rights -- Use, duplication or disclosure restricted by GSA ADP Schedule", "bbox": {"l": 64.800011, "t": 749.117897, "r": 547.20087, "b": 757.442898, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Contract with IBM Corp.", "bbox": {"l": 64.800018, "t": 760.097898, "r": 160.03624, "b": 768.422899, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.49017333984375, "t": 685.248046875, "r": 206.09755, "b": 695.7449340820312, "coord_origin": "TOPLEFT"}, "confidence": 0.7352388501167297, "cells": [{"id": 3, "text": "First Edition (November 2014)", "bbox": {"l": 64.800003, "t": 686.50861, "r": 206.09755, "b": 695.721619, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 63.900901794433594, "t": 707.9268798828125, "r": 422.24246, "b": 718.252685546875, "coord_origin": "TOPLEFT"}, "confidence": 0.8905011415481567, "cells": [{"id": 4, "text": "This edition applies to Version 7, Release 2 of IBM i (product number 5770-SS1).", "bbox": {"l": 64.800003, "t": 708.528183, "r": 422.24246, "b": 717.741188, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 70.31981658935547, "t": 88.49734497070312, "r": 511.22507, "b": 111.23179626464844, "coord_origin": "TOPLEFT"}, "confidence": 0.9383615851402283, "cells": [{"id": 5, "text": "Note: ", "bbox": {"l": 70.800003, "t": 89.50867000000005, "r": 99.061501, "b": 98.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Before using this information and the product it supports, read the information in \u201cNotices\u201d on ", "bbox": {"l": 99.12027, "t": 89.50867000000005, "r": 511.22507, "b": 98.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "page vii.", "bbox": {"l": 70.800003, "t": 101.50847999999996, "r": 107.73766, "b": 110.72149999999999, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 3, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.55229949951172, "t": 737.2064208984375, "r": 426.39117, "b": 746.8391723632812, "coord_origin": "TOPLEFT"}, "confidence": 0.6578707098960876, "cells": [{"id": 0, "text": "' Copyright International Business Machines Corporation 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 738.137901, "r": 426.39117, "b": 746.462898, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright International Business Machines Corporation 2014. All rights reserved."}, {"label": "text", "id": 1, "page_no": 3, "cluster": {"id": 1, "label": "text", "bbox": {"l": 64.10758972167969, "t": 747.6624755859375, "r": 547.20087, "b": 768.422899, "coord_origin": "TOPLEFT"}, "confidence": 0.739277184009552, "cells": [{"id": 1, "text": "Note to U.S. Government Users Restricted Rights -- Use, duplication or disclosure restricted by GSA ADP Schedule", "bbox": {"l": 64.800011, "t": 749.117897, "r": 547.20087, "b": 757.442898, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Contract with IBM Corp.", "bbox": {"l": 64.800018, "t": 760.097898, "r": 160.03624, "b": 768.422899, "coord_origin": "TOPLEFT"}}]}, "text": "Note to U.S. Government Users Restricted Rights -- Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp."}, {"label": "section_header", "id": 2, "page_no": 3, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.49017333984375, "t": 685.248046875, "r": 206.09755, "b": 695.7449340820312, "coord_origin": "TOPLEFT"}, "confidence": 0.7352388501167297, "cells": [{"id": 3, "text": "First Edition (November 2014)", "bbox": {"l": 64.800003, "t": 686.50861, "r": 206.09755, "b": 695.721619, "coord_origin": "TOPLEFT"}}]}, "text": "First Edition (November 2014)"}, {"label": "text", "id": 3, "page_no": 3, "cluster": {"id": 3, "label": "text", "bbox": {"l": 63.900901794433594, "t": 707.9268798828125, "r": 422.24246, "b": 718.252685546875, "coord_origin": "TOPLEFT"}, "confidence": 0.8905011415481567, "cells": [{"id": 4, "text": "This edition applies to Version 7, Release 2 of IBM i (product number 5770-SS1).", "bbox": {"l": 64.800003, "t": 708.528183, "r": 422.24246, "b": 717.741188, "coord_origin": "TOPLEFT"}}]}, "text": "This edition applies to Version 7, Release 2 of IBM i (product number 5770-SS1)."}, {"label": "text", "id": 4, "page_no": 3, "cluster": {"id": 4, "label": "text", "bbox": {"l": 70.31981658935547, "t": 88.49734497070312, "r": 511.22507, "b": 111.23179626464844, "coord_origin": "TOPLEFT"}, "confidence": 0.9383615851402283, "cells": [{"id": 5, "text": "Note: ", "bbox": {"l": 70.800003, "t": 89.50867000000005, "r": 99.061501, "b": 98.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Before using this information and the product it supports, read the information in \u201cNotices\u201d on ", "bbox": {"l": 99.12027, "t": 89.50867000000005, "r": 511.22507, "b": 98.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "page vii.", "bbox": {"l": 70.800003, "t": 101.50847999999996, "r": 107.73766, "b": 110.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Note: Before using this information and the product it supports, read the information in \u201cNotices\u201d on page vii."}], "body": [{"label": "text", "id": 1, "page_no": 3, "cluster": {"id": 1, "label": "text", "bbox": {"l": 64.10758972167969, "t": 747.6624755859375, "r": 547.20087, "b": 768.422899, "coord_origin": "TOPLEFT"}, "confidence": 0.739277184009552, "cells": [{"id": 1, "text": "Note to U.S. Government Users Restricted Rights -- Use, duplication or disclosure restricted by GSA ADP Schedule", "bbox": {"l": 64.800011, "t": 749.117897, "r": 547.20087, "b": 757.442898, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Contract with IBM Corp.", "bbox": {"l": 64.800018, "t": 760.097898, "r": 160.03624, "b": 768.422899, "coord_origin": "TOPLEFT"}}]}, "text": "Note to U.S. Government Users Restricted Rights -- Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp."}, {"label": "section_header", "id": 2, "page_no": 3, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.49017333984375, "t": 685.248046875, "r": 206.09755, "b": 695.7449340820312, "coord_origin": "TOPLEFT"}, "confidence": 0.7352388501167297, "cells": [{"id": 3, "text": "First Edition (November 2014)", "bbox": {"l": 64.800003, "t": 686.50861, "r": 206.09755, "b": 695.721619, "coord_origin": "TOPLEFT"}}]}, "text": "First Edition (November 2014)"}, {"label": "text", "id": 3, "page_no": 3, "cluster": {"id": 3, "label": "text", "bbox": {"l": 63.900901794433594, "t": 707.9268798828125, "r": 422.24246, "b": 718.252685546875, "coord_origin": "TOPLEFT"}, "confidence": 0.8905011415481567, "cells": [{"id": 4, "text": "This edition applies to Version 7, Release 2 of IBM i (product number 5770-SS1).", "bbox": {"l": 64.800003, "t": 708.528183, "r": 422.24246, "b": 717.741188, "coord_origin": "TOPLEFT"}}]}, "text": "This edition applies to Version 7, Release 2 of IBM i (product number 5770-SS1)."}, {"label": "text", "id": 4, "page_no": 3, "cluster": {"id": 4, "label": "text", "bbox": {"l": 70.31981658935547, "t": 88.49734497070312, "r": 511.22507, "b": 111.23179626464844, "coord_origin": "TOPLEFT"}, "confidence": 0.9383615851402283, "cells": [{"id": 5, "text": "Note: ", "bbox": {"l": 70.800003, "t": 89.50867000000005, "r": 99.061501, "b": 98.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Before using this information and the product it supports, read the information in \u201cNotices\u201d on ", "bbox": {"l": 99.12027, "t": 89.50867000000005, "r": 511.22507, "b": 98.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "page vii.", "bbox": {"l": 70.800003, "t": 101.50847999999996, "r": 107.73766, "b": 110.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Note: Before using this information and the product it supports, read the information in \u201cNotices\u201d on page vii."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 3, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.55229949951172, "t": 737.2064208984375, "r": 426.39117, "b": 746.8391723632812, "coord_origin": "TOPLEFT"}, "confidence": 0.6578707098960876, "cells": [{"id": 0, "text": "' Copyright International Business Machines Corporation 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 738.137901, "r": 426.39117, "b": 746.462898, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright International Business Machines Corporation 2014. All rights reserved."}]}}, {"page_no": 4, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "iii", "bbox": {"l": 538.85999, "t": 754.848721, "r": 547.25928, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Contents", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 168.73441, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Notices", "bbox": {"l": 136.8, "t": 132.64862000000005, "r": 172.89404, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii", "bbox": {"l": 175.01952, "t": 132.64862000000005, "r": 547.18982, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Trademarks", "bbox": {"l": 136.79901, "t": 145.12847999999997, "r": 189.86537, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 195.39685, "t": 145.12847999999997, "r": 530.05121, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "viii", "bbox": {"l": 535.5827, "t": 145.12847999999997, "r": 547.18286, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "DB2 for i Center of Excellence", "bbox": {"l": 136.79901, "t": 167.62811, "r": 279.39731, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix", "bbox": {"l": 280.61942, "t": 167.62811, "r": 547.1908, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Preface", "bbox": {"l": 136.79901, "t": 190.12775, "r": 172.84424, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "bbox": {"l": 175.01852, "t": 190.12775, "r": 547.18286, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "bbox": {"l": 136.79803, "t": 202.60760000000005, "r": 547.18085, "b": 211.82061999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Now you can become a published author, too!", "bbox": {"l": 136.79803, "t": 215.14721999999995, "r": 339.18292, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.71411, "t": 215.14721999999995, "r": 530.00812, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "xiii", "bbox": {"l": 535.53925, "t": 215.14721999999995, "r": 547.13879, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 136.79803, "t": 227.62707999999998, "r": 529.99506, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "xiii", "bbox": {"l": 535.5495, "t": 227.62707999999998, "r": 547.19788, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Stay connected to IBM Redbooks", "bbox": {"l": 136.79807, "t": 240.10693000000003, "r": 284.02866, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 289.54449, "t": 240.10693000000003, "r": 529.48242, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "xiv", "bbox": {"l": 534.99829, "t": 240.10693000000003, "r": 547.12115, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Chapter 1. Securing and protecting IBM DB2 data", "bbox": {"l": 136.79807, "t": 262.60657000000003, "r": 373.17566, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 375.11798, "t": 262.60657000000003, "r": 536.09589, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "1", "bbox": {"l": 541.64685, "t": 262.60657000000003, "r": 547.19781, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "1.1", "bbox": {"l": 136.79808, "t": 274.60637999999994, "r": 150.88702, "b": 283.8194, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Security fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2", "bbox": {"l": 156.5226, "t": 274.60637999999994, "r": 549.84723, "b": 283.8194, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "1.2", "bbox": {"l": 136.79807, "t": 287.14606000000003, "r": 150.62746, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Current state of IBM i security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.15923, "t": 287.14606000000003, "r": 536.12933, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "2", "bbox": {"l": 541.66113, "t": 287.14606000000003, "r": 547.19287, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "1.3", "bbox": {"l": 136.79807, "t": 299.62595, "r": 150.84943, "b": 308.83893, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "DB2 for i security controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3", "bbox": {"l": 156.46996, "t": 299.62595, "r": 549.84723, "b": 308.83893, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "1.3.1", "bbox": {"l": 151.1972, "t": 312.1058300000001, "r": 173.38289, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Existing row and column control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.92932, "t": 312.1058300000001, "r": 536.05511, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "4", "bbox": {"l": 541.6015, "t": 312.1058300000001, "r": 547.14795, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "1.3.2", "bbox": {"l": 151.1972, "t": 324.64548, "r": 173.4189, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "New controls: Row and Column Access Control. . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97432, "t": 324.64548, "r": 536.08008, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "5", "bbox": {"l": 541.6355, "t": 324.64548, "r": 547.19092, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Chapter 2. Roles and separation of duties", "bbox": {"l": 136.79704, "t": 347.14511, "r": 336.82071, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 338.99701, "t": 347.14511, "r": 536.09088, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "7", "bbox": {"l": 541.64282, "t": 347.14511, "r": 547.19476, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "2.1", "bbox": {"l": 136.79704, "t": 359.14493, "r": 150.644, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18277, "t": 359.14493, "r": 536.12714, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "8", "bbox": {"l": 541.66589, "t": 359.14493, "r": 547.20471, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "2.1.1", "bbox": {"l": 151.1972, "t": 371.62482, "r": 173.60995, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "DDM and DRDA application server access: QIBM_DB_DDMDRDA . . . . . . . . . . .", "bbox": {"l": 176.41154, "t": 371.62482, "r": 535.9527, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "8", "bbox": {"l": 541.55585, "t": 371.62482, "r": 547.15906, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "2.1.2", "bbox": {"l": 151.1972, "t": 384.10470999999995, "r": 173.41664, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Toolbox application server access: QIBM_DB_ZDA. . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97151, "t": 384.10470999999995, "r": 536.04108, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "8", "bbox": {"l": 541.59595, "t": 384.10470999999995, "r": 547.15082, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "2.1.3", "bbox": {"l": 151.1972, "t": 396.64435, "r": 173.41859, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Database Administrator function: QIBM_DB_SQLADM . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97394, "t": 396.64435, "r": 536.07489, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "9", "bbox": {"l": 541.63025, "t": 396.64435, "r": 547.18561, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "2.1.4", "bbox": {"l": 151.1972, "t": 409.12424000000004, "r": 173.38629, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "Database Information function: QIBM_DB_SYSMON", "bbox": {"l": 178.93356, "t": 409.12424000000004, "r": 411.27048, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": ". . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 416.81775, "t": 409.12424000000004, "r": 536.08411, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "9", "bbox": {"l": 541.63135, "t": 409.12424000000004, "r": 547.17865, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "2.1.5", "bbox": {"l": 151.1972, "t": 421.60413, "r": 173.44926, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "Security Administrator function: QIBM_DB_SECADM . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01228, "t": 421.60413, "r": 536.03589, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "9", "bbox": {"l": 541.59894, "t": 421.60413, "r": 547.16193, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "2.1.6", "bbox": {"l": 151.1972, "t": 434.1437700000001, "r": 173.32208, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Change Function Usage CL command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8533, "t": 434.1437700000001, "r": 530.57318, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "10", "bbox": {"l": 536.10443, "t": 434.1437700000001, "r": 547.16687, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "2.1.7", "bbox": {"l": 151.1972, "t": 446.62366, "r": 173.35822, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "Verifying function usage IDs for RCAC with the FUNCTION_USAGE view . . . . .", "bbox": {"l": 178.89848, "t": 446.62366, "r": 530.53522, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "10", "bbox": {"l": 536.0755, "t": 446.62366, "r": 547.15601, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "2.2", "bbox": {"l": 136.79704, "t": 459.10355, "r": 150.85457, "b": 468.31653, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "Separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10", "bbox": {"l": 156.47758, "t": 459.10355, "r": 547.25659, "b": 468.31653, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Chapter 3. Row and Column Access Control", "bbox": {"l": 136.79703, "t": 481.60318, "r": 348.68503, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 350.09741, "t": 481.60318, "r": 530.53961, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "13", "bbox": {"l": 536.09167, "t": 481.60318, "r": 547.1958, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "3.1", "bbox": {"l": 136.79703, "t": 493.603, "r": 150.70105, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "Explanation of RCAC and the concept of access control . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26266, "t": 493.603, "r": 530.4809, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "14", "bbox": {"l": 536.04248, "t": 493.603, "r": 547.16571, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "3.1.1", "bbox": {"l": 151.19719, "t": 506.14264, "r": 173.35429, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "Row permission and column mask definitions", "bbox": {"l": 178.89357, "t": 506.14264, "r": 378.20786, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 383.74713, "t": 506.14264, "r": 530.5379, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "14", "bbox": {"l": 536.07721, "t": 506.14264, "r": 547.15576, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "3.1.2", "bbox": {"l": 151.19719, "t": 518.62253, "r": 173.44292, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "Enabling and activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00435, "t": 518.62253, "r": 530.43475, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "16", "bbox": {"l": 535.99622, "t": 518.62253, "r": 547.11908, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "3.2", "bbox": {"l": 136.79703, "t": 531.1621700000001, "r": 150.64432, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "Special registers and built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18323, "t": 531.1621700000001, "r": 530.52808, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "18", "bbox": {"l": 536.06702, "t": 531.1621700000001, "r": 547.14484, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "3.2.1", "bbox": {"l": 151.19719, "t": 543.64204, "r": 173.41321, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "Special registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.96722, "t": 543.64204, "r": 530.49786, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "18", "bbox": {"l": 536.05188, "t": 543.64204, "r": 547.15991, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 86, "text": "3.2.2", "bbox": {"l": 151.19719, "t": 556.12192, "r": 173.35269, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 87, "text": "Built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89156, "t": 556.12192, "r": 530.56024, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 88, "text": "19", "bbox": {"l": 536.09912, "t": 556.12192, "r": 547.17688, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 89, "text": "3.3", "bbox": {"l": 136.79703, "t": 568.66156, "r": 150.62514, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 90, "text": "VERIFY_GROUP_FOR_USER function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.15639, "t": 568.66156, "r": 530.53027, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 91, "text": "20", "bbox": {"l": 536.06152, "t": 568.66156, "r": 547.12402, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 92, "text": "3.4", "bbox": {"l": 136.79703, "t": 581.14143, "r": 150.63004, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 93, "text": "Establishing and controlling accessibility by using the RCAC rule text . . . . . . . . . . . . .", "bbox": {"l": 156.16325, "t": 581.14143, "r": 530.62994, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 94, "text": "21", "bbox": {"l": 536.16315, "t": 581.14143, "r": 547.22955, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 95, "text": "3.5", "bbox": {"l": 136.79701, "t": 593.62131, "r": 150.64413, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 96, "text": "SELECT, INSERT, and UPDATE behavior with RCAC", "bbox": {"l": 156.18298, "t": 593.62131, "r": 394.7818, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 97, "text": ". . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 400.32065, "t": 593.62131, "r": 530.48358, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 98, "text": "22", "bbox": {"l": 536.0224, "t": 593.62131, "r": 547.1001, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 99, "text": "3.6", "bbox": {"l": 136.79701, "t": 606.16095, "r": 150.6642, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 100, "text": "Human resources example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.21107, "t": 606.16095, "r": 530.56512, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 101, "text": "22", "bbox": {"l": 536.112, "t": 606.16095, "r": 547.20575, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 102, "text": "3.6.1", "bbox": {"l": 151.19717, "t": 618.64082, "r": 173.41692, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 103, "text": "Assigning the QIBM_DB_SECADM function ID to the consultants. . . . . . . . . . . .", "bbox": {"l": 178.97185, "t": 618.64082, "r": 530.49139, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 104, "text": "23", "bbox": {"l": 536.04633, "t": 618.64082, "r": 547.15619, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 105, "text": "3.6.2", "bbox": {"l": 151.19717, "t": 631.1206999999999, "r": 173.32271, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 106, "text": "Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8541, "t": 631.1206999999999, "r": 530.56458, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 107, "text": "23", "bbox": {"l": 536.09601, "t": 631.1206999999999, "r": 547.15875, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 108, "text": "3.6.3", "bbox": {"l": 151.19717, "t": 643.66034, "r": 173.32227, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 109, "text": "Demonstrating data access without RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85353, "t": 643.66034, "r": 530.55695, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 110, "text": "24", "bbox": {"l": 536.0882, "t": 643.66034, "r": 547.15076, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 111, "text": "3.6.4", "bbox": {"l": 151.19717, "t": 656.14021, "r": 173.35289, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 112, "text": "Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89182, "t": 656.14021, "r": 530.53412, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 113, "text": "25", "bbox": {"l": 536.073, "t": 656.14021, "r": 547.15088, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 114, "text": "3.6.5", "bbox": {"l": 151.19717, "t": 668.62009, "r": 173.35289, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 115, "text": "Defining and creating column masks", "bbox": {"l": 178.89182, "t": 668.62009, "r": 339.45105, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 116, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.98996, "t": 668.62009, "r": 530.54413, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 117, "text": "26", "bbox": {"l": 536.08301, "t": 668.62009, "r": 547.16089, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 118, "text": "3.6.6", "bbox": {"l": 151.19717, "t": 681.15973, "r": 173.38359, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 119, "text": "Activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.93019, "t": 681.15973, "r": 530.54102, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 120, "text": "28", "bbox": {"l": 536.08765, "t": 681.15973, "r": 547.18085, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 121, "text": "3.6.7", "bbox": {"l": 151.19717, "t": 693.63961, "r": 173.32332, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 122, "text": "Demonstrating data access with RCAC", "bbox": {"l": 178.85486, "t": 693.63961, "r": 350.80011, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 123, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 356.33163, "t": 693.63961, "r": 530.57507, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 124, "text": "29", "bbox": {"l": 536.10663, "t": 693.63961, "r": 547.16968, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 125, "text": "3.6.8", "bbox": {"l": 151.19717, "t": 706.119492, "r": 173.44592, "b": 715.332497, "coord_origin": "TOPLEFT"}}, {"id": 126, "text": "Demonstrating data access with a view and RCAC . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00812, "t": 706.119492, "r": 530.43628, "b": 715.332497, "coord_origin": "TOPLEFT"}}, {"id": 127, "text": "32", "bbox": {"l": 535.99847, "t": 706.119492, "r": 547.12286, "b": 715.332497, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.751060485839844, "t": 754.6969604492188, "r": 257.24335, "b": 764.1015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9473134875297546, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 538.3257446289062, "t": 754.0830688476562, "r": 547.25928, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.892595112323761, "cells": [{"id": 1, "text": "iii", "bbox": {"l": 538.85999, "t": 754.848721, "r": 547.25928, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.6857681274414, "t": 73.01808166503906, "r": 168.73441, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9508246779441833, "cells": [{"id": 2, "text": "Contents", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 168.73441, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "table", "bbox": {"l": 136.15103149414062, "t": 132.03030395507812, "r": 549.84723, "b": 715.6527709960938, "coord_origin": "TOPLEFT"}, "confidence": 0.9803490042686462, "cells": [{"id": 3, "text": "Notices", "bbox": {"l": 136.8, "t": 132.64862000000005, "r": 172.89404, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii", "bbox": {"l": 175.01952, "t": 132.64862000000005, "r": 547.18982, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Trademarks", "bbox": {"l": 136.79901, "t": 145.12847999999997, "r": 189.86537, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 195.39685, "t": 145.12847999999997, "r": 530.05121, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "viii", "bbox": {"l": 535.5827, "t": 145.12847999999997, "r": 547.18286, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "DB2 for i Center of Excellence", "bbox": {"l": 136.79901, "t": 167.62811, "r": 279.39731, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix", "bbox": {"l": 280.61942, "t": 167.62811, "r": 547.1908, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Preface", "bbox": {"l": 136.79901, "t": 190.12775, "r": 172.84424, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "bbox": {"l": 175.01852, "t": 190.12775, "r": 547.18286, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "bbox": {"l": 136.79803, "t": 202.60760000000005, "r": 547.18085, "b": 211.82061999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Now you can become a published author, too!", "bbox": {"l": 136.79803, "t": 215.14721999999995, "r": 339.18292, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.71411, "t": 215.14721999999995, "r": 530.00812, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "xiii", "bbox": {"l": 535.53925, "t": 215.14721999999995, "r": 547.13879, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 136.79803, "t": 227.62707999999998, "r": 529.99506, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "xiii", "bbox": {"l": 535.5495, "t": 227.62707999999998, "r": 547.19788, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Stay connected to IBM Redbooks", "bbox": {"l": 136.79807, "t": 240.10693000000003, "r": 284.02866, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 289.54449, "t": 240.10693000000003, "r": 529.48242, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "xiv", "bbox": {"l": 534.99829, "t": 240.10693000000003, "r": 547.12115, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Chapter 1. Securing and protecting IBM DB2 data", "bbox": {"l": 136.79807, "t": 262.60657000000003, "r": 373.17566, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 375.11798, "t": 262.60657000000003, "r": 536.09589, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "1", "bbox": {"l": 541.64685, "t": 262.60657000000003, "r": 547.19781, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "1.1", "bbox": {"l": 136.79808, "t": 274.60637999999994, "r": 150.88702, "b": 283.8194, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Security fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2", "bbox": {"l": 156.5226, "t": 274.60637999999994, "r": 549.84723, "b": 283.8194, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "1.2", "bbox": {"l": 136.79807, "t": 287.14606000000003, "r": 150.62746, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Current state of IBM i security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.15923, "t": 287.14606000000003, "r": 536.12933, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "2", "bbox": {"l": 541.66113, "t": 287.14606000000003, "r": 547.19287, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "1.3", "bbox": {"l": 136.79807, "t": 299.62595, "r": 150.84943, "b": 308.83893, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "DB2 for i security controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3", "bbox": {"l": 156.46996, "t": 299.62595, "r": 549.84723, "b": 308.83893, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "1.3.1", "bbox": {"l": 151.1972, "t": 312.1058300000001, "r": 173.38289, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Existing row and column control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.92932, "t": 312.1058300000001, "r": 536.05511, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "4", "bbox": {"l": 541.6015, "t": 312.1058300000001, "r": 547.14795, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "1.3.2", "bbox": {"l": 151.1972, "t": 324.64548, "r": 173.4189, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "New controls: Row and Column Access Control. . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97432, "t": 324.64548, "r": 536.08008, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "5", "bbox": {"l": 541.6355, "t": 324.64548, "r": 547.19092, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Chapter 2. Roles and separation of duties", "bbox": {"l": 136.79704, "t": 347.14511, "r": 336.82071, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 338.99701, "t": 347.14511, "r": 536.09088, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "7", "bbox": {"l": 541.64282, "t": 347.14511, "r": 547.19476, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "2.1", "bbox": {"l": 136.79704, "t": 359.14493, "r": 150.644, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18277, "t": 359.14493, "r": 536.12714, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "8", "bbox": {"l": 541.66589, "t": 359.14493, "r": 547.20471, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "2.1.1", "bbox": {"l": 151.1972, "t": 371.62482, "r": 173.60995, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "DDM and DRDA application server access: QIBM_DB_DDMDRDA . . . . . . . . . . .", "bbox": {"l": 176.41154, "t": 371.62482, "r": 535.9527, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "8", "bbox": {"l": 541.55585, "t": 371.62482, "r": 547.15906, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "2.1.2", "bbox": {"l": 151.1972, "t": 384.10470999999995, "r": 173.41664, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Toolbox application server access: QIBM_DB_ZDA. . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97151, "t": 384.10470999999995, "r": 536.04108, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "8", "bbox": {"l": 541.59595, "t": 384.10470999999995, "r": 547.15082, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "2.1.3", "bbox": {"l": 151.1972, "t": 396.64435, "r": 173.41859, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Database Administrator function: QIBM_DB_SQLADM . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97394, "t": 396.64435, "r": 536.07489, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "9", "bbox": {"l": 541.63025, "t": 396.64435, "r": 547.18561, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "2.1.4", "bbox": {"l": 151.1972, "t": 409.12424000000004, "r": 173.38629, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "Database Information function: QIBM_DB_SYSMON", "bbox": {"l": 178.93356, "t": 409.12424000000004, "r": 411.27048, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": ". . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 416.81775, "t": 409.12424000000004, "r": 536.08411, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "9", "bbox": {"l": 541.63135, "t": 409.12424000000004, "r": 547.17865, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "2.1.5", "bbox": {"l": 151.1972, "t": 421.60413, "r": 173.44926, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "Security Administrator function: QIBM_DB_SECADM . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01228, "t": 421.60413, "r": 536.03589, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "9", "bbox": {"l": 541.59894, "t": 421.60413, "r": 547.16193, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "2.1.6", "bbox": {"l": 151.1972, "t": 434.1437700000001, "r": 173.32208, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Change Function Usage CL command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8533, "t": 434.1437700000001, "r": 530.57318, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "10", "bbox": {"l": 536.10443, "t": 434.1437700000001, "r": 547.16687, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "2.1.7", "bbox": {"l": 151.1972, "t": 446.62366, "r": 173.35822, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "Verifying function usage IDs for RCAC with the FUNCTION_USAGE view . . . . .", "bbox": {"l": 178.89848, "t": 446.62366, "r": 530.53522, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "10", "bbox": {"l": 536.0755, "t": 446.62366, "r": 547.15601, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "2.2", "bbox": {"l": 136.79704, "t": 459.10355, "r": 150.85457, "b": 468.31653, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "Separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10", "bbox": {"l": 156.47758, "t": 459.10355, "r": 547.25659, "b": 468.31653, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Chapter 3. Row and Column Access Control", "bbox": {"l": 136.79703, "t": 481.60318, "r": 348.68503, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 350.09741, "t": 481.60318, "r": 530.53961, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "13", "bbox": {"l": 536.09167, "t": 481.60318, "r": 547.1958, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "3.1", "bbox": {"l": 136.79703, "t": 493.603, "r": 150.70105, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "Explanation of RCAC and the concept of access control . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26266, "t": 493.603, "r": 530.4809, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "14", "bbox": {"l": 536.04248, "t": 493.603, "r": 547.16571, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "3.1.1", "bbox": {"l": 151.19719, "t": 506.14264, "r": 173.35429, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "Row permission and column mask definitions", "bbox": {"l": 178.89357, "t": 506.14264, "r": 378.20786, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 383.74713, "t": 506.14264, "r": 530.5379, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "14", "bbox": {"l": 536.07721, "t": 506.14264, "r": 547.15576, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "3.1.2", "bbox": {"l": 151.19719, "t": 518.62253, "r": 173.44292, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "Enabling and activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00435, "t": 518.62253, "r": 530.43475, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "16", "bbox": {"l": 535.99622, "t": 518.62253, "r": 547.11908, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "3.2", "bbox": {"l": 136.79703, "t": 531.1621700000001, "r": 150.64432, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "Special registers and built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18323, "t": 531.1621700000001, "r": 530.52808, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "18", "bbox": {"l": 536.06702, "t": 531.1621700000001, "r": 547.14484, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "3.2.1", "bbox": {"l": 151.19719, "t": 543.64204, "r": 173.41321, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "Special registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.96722, "t": 543.64204, "r": 530.49786, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "18", "bbox": {"l": 536.05188, "t": 543.64204, "r": 547.15991, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 86, "text": "3.2.2", "bbox": {"l": 151.19719, "t": 556.12192, "r": 173.35269, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 87, "text": "Built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89156, "t": 556.12192, "r": 530.56024, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 88, "text": "19", "bbox": {"l": 536.09912, "t": 556.12192, "r": 547.17688, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 89, "text": "3.3", "bbox": {"l": 136.79703, "t": 568.66156, "r": 150.62514, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 90, "text": "VERIFY_GROUP_FOR_USER function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.15639, "t": 568.66156, "r": 530.53027, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 91, "text": "20", "bbox": {"l": 536.06152, "t": 568.66156, "r": 547.12402, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 92, "text": "3.4", "bbox": {"l": 136.79703, "t": 581.14143, "r": 150.63004, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 93, "text": "Establishing and controlling accessibility by using the RCAC rule text . . . . . . . . . . . . .", "bbox": {"l": 156.16325, "t": 581.14143, "r": 530.62994, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 94, "text": "21", "bbox": {"l": 536.16315, "t": 581.14143, "r": 547.22955, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 95, "text": "3.5", "bbox": {"l": 136.79701, "t": 593.62131, "r": 150.64413, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 96, "text": "SELECT, INSERT, and UPDATE behavior with RCAC", "bbox": {"l": 156.18298, "t": 593.62131, "r": 394.7818, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 97, "text": ". . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 400.32065, "t": 593.62131, "r": 530.48358, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 98, "text": "22", "bbox": {"l": 536.0224, "t": 593.62131, "r": 547.1001, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 99, "text": "3.6", "bbox": {"l": 136.79701, "t": 606.16095, "r": 150.6642, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 100, "text": "Human resources example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.21107, "t": 606.16095, "r": 530.56512, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 101, "text": "22", "bbox": {"l": 536.112, "t": 606.16095, "r": 547.20575, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 102, "text": "3.6.1", "bbox": {"l": 151.19717, "t": 618.64082, "r": 173.41692, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 103, "text": "Assigning the QIBM_DB_SECADM function ID to the consultants. . . . . . . . . . . .", "bbox": {"l": 178.97185, "t": 618.64082, "r": 530.49139, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 104, "text": "23", "bbox": {"l": 536.04633, "t": 618.64082, "r": 547.15619, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 105, "text": "3.6.2", "bbox": {"l": 151.19717, "t": 631.1206999999999, "r": 173.32271, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 106, "text": "Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8541, "t": 631.1206999999999, "r": 530.56458, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 107, "text": "23", "bbox": {"l": 536.09601, "t": 631.1206999999999, "r": 547.15875, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 108, "text": "3.6.3", "bbox": {"l": 151.19717, "t": 643.66034, "r": 173.32227, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 109, "text": "Demonstrating data access without RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85353, "t": 643.66034, "r": 530.55695, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 110, "text": "24", "bbox": {"l": 536.0882, "t": 643.66034, "r": 547.15076, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 111, "text": "3.6.4", "bbox": {"l": 151.19717, "t": 656.14021, "r": 173.35289, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 112, "text": "Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89182, "t": 656.14021, "r": 530.53412, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 113, "text": "25", "bbox": {"l": 536.073, "t": 656.14021, "r": 547.15088, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 114, "text": "3.6.5", "bbox": {"l": 151.19717, "t": 668.62009, "r": 173.35289, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 115, "text": "Defining and creating column masks", "bbox": {"l": 178.89182, "t": 668.62009, "r": 339.45105, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 116, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.98996, "t": 668.62009, "r": 530.54413, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 117, "text": "26", "bbox": {"l": 536.08301, "t": 668.62009, "r": 547.16089, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 118, "text": "3.6.6", "bbox": {"l": 151.19717, "t": 681.15973, "r": 173.38359, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 119, "text": "Activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.93019, "t": 681.15973, "r": 530.54102, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 120, "text": "28", "bbox": {"l": 536.08765, "t": 681.15973, "r": 547.18085, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 121, "text": "3.6.7", "bbox": {"l": 151.19717, "t": 693.63961, "r": 173.32332, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 122, "text": "Demonstrating data access with RCAC", "bbox": {"l": 178.85486, "t": 693.63961, "r": 350.80011, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 123, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 356.33163, "t": 693.63961, "r": 530.57507, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 124, "text": "29", "bbox": {"l": 536.10663, "t": 693.63961, "r": 547.16968, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 125, "text": "3.6.8", "bbox": {"l": 151.19717, "t": 706.119492, "r": 173.44592, "b": 715.332497, "coord_origin": "TOPLEFT"}}, {"id": 126, "text": "Demonstrating data access with a view and RCAC . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00812, "t": 706.119492, "r": 530.43628, "b": 715.332497, "coord_origin": "TOPLEFT"}}, {"id": 127, "text": "32", "bbox": {"l": 535.99847, "t": 706.119492, "r": 547.12286, "b": 715.332497, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {"3": {"label": "table", "id": 3, "page_no": 4, "cluster": {"id": 3, "label": "table", "bbox": {"l": 136.15103149414062, "t": 132.03030395507812, "r": 549.84723, "b": 715.6527709960938, "coord_origin": "TOPLEFT"}, "confidence": 0.9803490042686462, "cells": [{"id": 3, "text": "Notices", "bbox": {"l": 136.8, "t": 132.64862000000005, "r": 172.89404, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii", "bbox": {"l": 175.01952, "t": 132.64862000000005, "r": 547.18982, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Trademarks", "bbox": {"l": 136.79901, "t": 145.12847999999997, "r": 189.86537, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 195.39685, "t": 145.12847999999997, "r": 530.05121, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "viii", "bbox": {"l": 535.5827, "t": 145.12847999999997, "r": 547.18286, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "DB2 for i Center of Excellence", "bbox": {"l": 136.79901, "t": 167.62811, "r": 279.39731, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix", "bbox": {"l": 280.61942, "t": 167.62811, "r": 547.1908, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Preface", "bbox": {"l": 136.79901, "t": 190.12775, "r": 172.84424, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "bbox": {"l": 175.01852, "t": 190.12775, "r": 547.18286, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "bbox": {"l": 136.79803, "t": 202.60760000000005, "r": 547.18085, "b": 211.82061999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Now you can become a published author, too!", "bbox": {"l": 136.79803, "t": 215.14721999999995, "r": 339.18292, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.71411, "t": 215.14721999999995, "r": 530.00812, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "xiii", "bbox": {"l": 535.53925, "t": 215.14721999999995, "r": 547.13879, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 136.79803, "t": 227.62707999999998, "r": 529.99506, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "xiii", "bbox": {"l": 535.5495, "t": 227.62707999999998, "r": 547.19788, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Stay connected to IBM Redbooks", "bbox": {"l": 136.79807, "t": 240.10693000000003, "r": 284.02866, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 289.54449, "t": 240.10693000000003, "r": 529.48242, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "xiv", "bbox": {"l": 534.99829, "t": 240.10693000000003, "r": 547.12115, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Chapter 1. Securing and protecting IBM DB2 data", "bbox": {"l": 136.79807, "t": 262.60657000000003, "r": 373.17566, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 375.11798, "t": 262.60657000000003, "r": 536.09589, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "1", "bbox": {"l": 541.64685, "t": 262.60657000000003, "r": 547.19781, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "1.1", "bbox": {"l": 136.79808, "t": 274.60637999999994, "r": 150.88702, "b": 283.8194, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Security fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2", "bbox": {"l": 156.5226, "t": 274.60637999999994, "r": 549.84723, "b": 283.8194, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "1.2", "bbox": {"l": 136.79807, "t": 287.14606000000003, "r": 150.62746, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Current state of IBM i security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.15923, "t": 287.14606000000003, "r": 536.12933, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "2", "bbox": {"l": 541.66113, "t": 287.14606000000003, "r": 547.19287, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "1.3", "bbox": {"l": 136.79807, "t": 299.62595, "r": 150.84943, "b": 308.83893, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "DB2 for i security controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3", "bbox": {"l": 156.46996, "t": 299.62595, "r": 549.84723, "b": 308.83893, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "1.3.1", "bbox": {"l": 151.1972, "t": 312.1058300000001, "r": 173.38289, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Existing row and column control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.92932, "t": 312.1058300000001, "r": 536.05511, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "4", "bbox": {"l": 541.6015, "t": 312.1058300000001, "r": 547.14795, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "1.3.2", "bbox": {"l": 151.1972, "t": 324.64548, "r": 173.4189, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "New controls: Row and Column Access Control. . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97432, "t": 324.64548, "r": 536.08008, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "5", "bbox": {"l": 541.6355, "t": 324.64548, "r": 547.19092, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Chapter 2. Roles and separation of duties", "bbox": {"l": 136.79704, "t": 347.14511, "r": 336.82071, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 338.99701, "t": 347.14511, "r": 536.09088, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "7", "bbox": {"l": 541.64282, "t": 347.14511, "r": 547.19476, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "2.1", "bbox": {"l": 136.79704, "t": 359.14493, "r": 150.644, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18277, "t": 359.14493, "r": 536.12714, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "8", "bbox": {"l": 541.66589, "t": 359.14493, "r": 547.20471, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "2.1.1", "bbox": {"l": 151.1972, "t": 371.62482, "r": 173.60995, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "DDM and DRDA application server access: QIBM_DB_DDMDRDA . . . . . . . . . . .", "bbox": {"l": 176.41154, "t": 371.62482, "r": 535.9527, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "8", "bbox": {"l": 541.55585, "t": 371.62482, "r": 547.15906, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "2.1.2", "bbox": {"l": 151.1972, "t": 384.10470999999995, "r": 173.41664, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Toolbox application server access: QIBM_DB_ZDA. . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97151, "t": 384.10470999999995, "r": 536.04108, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "8", "bbox": {"l": 541.59595, "t": 384.10470999999995, "r": 547.15082, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "2.1.3", "bbox": {"l": 151.1972, "t": 396.64435, "r": 173.41859, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Database Administrator function: QIBM_DB_SQLADM . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97394, "t": 396.64435, "r": 536.07489, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "9", "bbox": {"l": 541.63025, "t": 396.64435, "r": 547.18561, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "2.1.4", "bbox": {"l": 151.1972, "t": 409.12424000000004, "r": 173.38629, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "Database Information function: QIBM_DB_SYSMON", "bbox": {"l": 178.93356, "t": 409.12424000000004, "r": 411.27048, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": ". . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 416.81775, "t": 409.12424000000004, "r": 536.08411, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "9", "bbox": {"l": 541.63135, "t": 409.12424000000004, "r": 547.17865, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "2.1.5", "bbox": {"l": 151.1972, "t": 421.60413, "r": 173.44926, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "Security Administrator function: QIBM_DB_SECADM . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01228, "t": 421.60413, "r": 536.03589, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "9", "bbox": {"l": 541.59894, "t": 421.60413, "r": 547.16193, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "2.1.6", "bbox": {"l": 151.1972, "t": 434.1437700000001, "r": 173.32208, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Change Function Usage CL command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8533, "t": 434.1437700000001, "r": 530.57318, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "10", "bbox": {"l": 536.10443, "t": 434.1437700000001, "r": 547.16687, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "2.1.7", "bbox": {"l": 151.1972, "t": 446.62366, "r": 173.35822, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "Verifying function usage IDs for RCAC with the FUNCTION_USAGE view . . . . .", "bbox": {"l": 178.89848, "t": 446.62366, "r": 530.53522, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "10", "bbox": {"l": 536.0755, "t": 446.62366, "r": 547.15601, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "2.2", "bbox": {"l": 136.79704, "t": 459.10355, "r": 150.85457, "b": 468.31653, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "Separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10", "bbox": {"l": 156.47758, "t": 459.10355, "r": 547.25659, "b": 468.31653, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Chapter 3. Row and Column Access Control", "bbox": {"l": 136.79703, "t": 481.60318, "r": 348.68503, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 350.09741, "t": 481.60318, "r": 530.53961, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "13", "bbox": {"l": 536.09167, "t": 481.60318, "r": 547.1958, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "3.1", "bbox": {"l": 136.79703, "t": 493.603, "r": 150.70105, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "Explanation of RCAC and the concept of access control . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26266, "t": 493.603, "r": 530.4809, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "14", "bbox": {"l": 536.04248, "t": 493.603, "r": 547.16571, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "3.1.1", "bbox": {"l": 151.19719, "t": 506.14264, "r": 173.35429, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "Row permission and column mask definitions", "bbox": {"l": 178.89357, "t": 506.14264, "r": 378.20786, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 383.74713, "t": 506.14264, "r": 530.5379, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "14", "bbox": {"l": 536.07721, "t": 506.14264, "r": 547.15576, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "3.1.2", "bbox": {"l": 151.19719, "t": 518.62253, "r": 173.44292, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "Enabling and activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00435, "t": 518.62253, "r": 530.43475, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "16", "bbox": {"l": 535.99622, "t": 518.62253, "r": 547.11908, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "3.2", "bbox": {"l": 136.79703, "t": 531.1621700000001, "r": 150.64432, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "Special registers and built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18323, "t": 531.1621700000001, "r": 530.52808, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "18", "bbox": {"l": 536.06702, "t": 531.1621700000001, "r": 547.14484, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "3.2.1", "bbox": {"l": 151.19719, "t": 543.64204, "r": 173.41321, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "Special registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.96722, "t": 543.64204, "r": 530.49786, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "18", "bbox": {"l": 536.05188, "t": 543.64204, "r": 547.15991, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 86, "text": "3.2.2", "bbox": {"l": 151.19719, "t": 556.12192, "r": 173.35269, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 87, "text": "Built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89156, "t": 556.12192, "r": 530.56024, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 88, "text": "19", "bbox": {"l": 536.09912, "t": 556.12192, "r": 547.17688, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 89, "text": "3.3", "bbox": {"l": 136.79703, "t": 568.66156, "r": 150.62514, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 90, "text": "VERIFY_GROUP_FOR_USER function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.15639, "t": 568.66156, "r": 530.53027, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 91, "text": "20", "bbox": {"l": 536.06152, "t": 568.66156, "r": 547.12402, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 92, "text": "3.4", "bbox": {"l": 136.79703, "t": 581.14143, "r": 150.63004, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 93, "text": "Establishing and controlling accessibility by using the RCAC rule text . . . . . . . . . . . . .", "bbox": {"l": 156.16325, "t": 581.14143, "r": 530.62994, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 94, "text": "21", "bbox": {"l": 536.16315, "t": 581.14143, "r": 547.22955, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 95, "text": "3.5", "bbox": {"l": 136.79701, "t": 593.62131, "r": 150.64413, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 96, "text": "SELECT, INSERT, and UPDATE behavior with RCAC", "bbox": {"l": 156.18298, "t": 593.62131, "r": 394.7818, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 97, "text": ". . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 400.32065, "t": 593.62131, "r": 530.48358, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 98, "text": "22", "bbox": {"l": 536.0224, "t": 593.62131, "r": 547.1001, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 99, "text": "3.6", "bbox": {"l": 136.79701, "t": 606.16095, "r": 150.6642, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 100, "text": "Human resources example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.21107, "t": 606.16095, "r": 530.56512, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 101, "text": "22", "bbox": {"l": 536.112, "t": 606.16095, "r": 547.20575, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 102, "text": "3.6.1", "bbox": {"l": 151.19717, "t": 618.64082, "r": 173.41692, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 103, "text": "Assigning the QIBM_DB_SECADM function ID to the consultants. . . . . . . . . . . .", "bbox": {"l": 178.97185, "t": 618.64082, "r": 530.49139, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 104, "text": "23", "bbox": {"l": 536.04633, "t": 618.64082, "r": 547.15619, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 105, "text": "3.6.2", "bbox": {"l": 151.19717, "t": 631.1206999999999, "r": 173.32271, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 106, "text": "Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8541, "t": 631.1206999999999, "r": 530.56458, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 107, "text": "23", "bbox": {"l": 536.09601, "t": 631.1206999999999, "r": 547.15875, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 108, "text": "3.6.3", "bbox": {"l": 151.19717, "t": 643.66034, "r": 173.32227, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 109, "text": "Demonstrating data access without RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85353, "t": 643.66034, "r": 530.55695, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 110, "text": "24", "bbox": {"l": 536.0882, "t": 643.66034, "r": 547.15076, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 111, "text": "3.6.4", "bbox": {"l": 151.19717, "t": 656.14021, "r": 173.35289, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 112, "text": "Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89182, "t": 656.14021, "r": 530.53412, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 113, "text": "25", "bbox": {"l": 536.073, "t": 656.14021, "r": 547.15088, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 114, "text": "3.6.5", "bbox": {"l": 151.19717, "t": 668.62009, "r": 173.35289, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 115, "text": "Defining and creating column masks", "bbox": {"l": 178.89182, "t": 668.62009, "r": 339.45105, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 116, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.98996, "t": 668.62009, "r": 530.54413, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 117, "text": "26", "bbox": {"l": 536.08301, "t": 668.62009, "r": 547.16089, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 118, "text": "3.6.6", "bbox": {"l": 151.19717, "t": 681.15973, "r": 173.38359, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 119, "text": "Activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.93019, "t": 681.15973, "r": 530.54102, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 120, "text": "28", "bbox": {"l": 536.08765, "t": 681.15973, "r": 547.18085, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 121, "text": "3.6.7", "bbox": {"l": 151.19717, "t": 693.63961, "r": 173.32332, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 122, "text": "Demonstrating data access with RCAC", "bbox": {"l": 178.85486, "t": 693.63961, "r": 350.80011, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 123, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 356.33163, "t": 693.63961, "r": 530.57507, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 124, "text": "29", "bbox": {"l": 536.10663, "t": 693.63961, "r": 547.16968, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 125, "text": "3.6.8", "bbox": {"l": 151.19717, "t": 706.119492, "r": 173.44592, "b": 715.332497, "coord_origin": "TOPLEFT"}}, {"id": 126, "text": "Demonstrating data access with a view and RCAC . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00812, "t": 706.119492, "r": 530.43628, "b": 715.332497, "coord_origin": "TOPLEFT"}}, {"id": 127, "text": "32", "bbox": {"l": 535.99847, "t": 706.119492, "r": 547.12286, "b": 715.332497, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl"], "num_rows": 43, "num_cols": 2, "table_cells": [{"bbox": {"l": 136.8, "t": 132.64862000000005, "r": 172.89404, "b": 141.86163, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Notices", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 175.01952, "t": 132.64862000000005, "r": 547.18982, "b": 141.86163, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79901, "t": 145.12847999999997, "r": 189.86537, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Trademarks", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 195.39685, "t": 145.12847999999997, "r": 547.18286, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79901, "t": 167.62811, "r": 279.39731, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "DB2 for i Center of Excellence", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 280.61942, "t": 167.62811, "r": 547.1908, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79901, "t": 190.12775, "r": 172.84424, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Preface", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 175.01852, "t": 190.12775, "r": 547.18286, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79803, "t": 202.60760000000005, "r": 547.18085, "b": 211.82061999999996, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79803, "t": 215.14721999999995, "r": 339.18292, "b": 224.36023, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Now you can become a published author, too!", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 344.71411, "t": 215.14721999999995, "r": 547.13879, "b": 224.36023, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79803, "t": 227.62707999999998, "r": 529.99506, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 535.5495, "t": 227.62707999999998, "r": 547.19788, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "xiii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79807, "t": 240.10693000000003, "r": 284.02866, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Stay connected to IBM Redbooks", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.54449, "t": 240.10693000000003, "r": 547.12115, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79807, "t": 262.60657000000003, "r": 536.09589, "b": 271.81958, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 1. Securing and protecting IBM DB2 data . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.64685, "t": 262.60657000000003, "r": 547.19781, "b": 271.81958, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "1", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79808, "t": 274.60637999999994, "r": 549.84723, "b": 283.8194, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.1 Security fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79807, "t": 287.14606000000003, "r": 536.12933, "b": 296.35904, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.2 Current state of IBM i security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.66113, "t": 287.14606000000003, "r": 547.19287, "b": 296.35904, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "2", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79807, "t": 299.62595, "r": 549.84723, "b": 308.83893, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.3 DB2 for i security controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 312.1058300000001, "r": 536.05511, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.3.1 Existing row and column control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.6015, "t": 312.1058300000001, "r": 547.14795, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "4", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 324.64548, "r": 536.08008, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.3.2 New controls: Row and Column Access Control. . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.6355, "t": 324.64548, "r": 547.19092, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "5", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79704, "t": 347.14511, "r": 536.09088, "b": 356.35809, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 2. Roles and separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.64282, "t": 347.14511, "r": 547.19476, "b": 356.35809, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "7", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79704, "t": 359.14493, "r": 536.12714, "b": 368.35791, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1 Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.66589, "t": 359.14493, "r": 547.20471, "b": 368.35791, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "8", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 371.62482, "r": 535.9527, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.1 DDM and DRDA application server access: QIBM_DB_DDMDRDA . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.55585, "t": 371.62482, "r": 547.15906, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "8", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 384.10470999999995, "r": 536.04108, "b": 393.31769, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.2 Toolbox application server access: QIBM_DB_ZDA. . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.59595, "t": 384.10470999999995, "r": 547.15082, "b": 393.31769, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "8", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 396.64435, "r": 536.07489, "b": 405.85733, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.3 Database Administrator function: QIBM_DB_SQLADM . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.63025, "t": 396.64435, "r": 547.18561, "b": 405.85733, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "9", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 409.12424000000004, "r": 411.27048, "b": 418.33722, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.4 Database Information function: QIBM_DB_SYSMON", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 416.81775, "t": 409.12424000000004, "r": 547.17865, "b": 418.33722, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . 9", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 421.60413, "r": 536.03589, "b": 430.81711, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.5 Security Administrator function: QIBM_DB_SECADM . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.59894, "t": 421.60413, "r": 547.16193, "b": 430.81711, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "9", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 434.1437700000001, "r": 530.57318, "b": 443.35675, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.6 Change Function Usage CL command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.10443, "t": 434.1437700000001, "r": 547.16687, "b": 443.35675, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 446.62366, "r": 530.53522, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 22, "end_row_offset_idx": 23, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.7 Verifying function usage IDs for RCAC with the FUNCTION_USAGE view . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0755, "t": 446.62366, "r": 547.15601, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 22, "end_row_offset_idx": 23, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79704, "t": 459.10355, "r": 547.25659, "b": 468.31653, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 23, "end_row_offset_idx": 24, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.2 Separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 481.60318, "r": 530.53961, "b": 490.81616, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 24, "end_row_offset_idx": 25, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 3. Row and Column Access Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.09167, "t": 481.60318, "r": 547.1958, "b": 490.81616, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 24, "end_row_offset_idx": 25, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "13", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 493.603, "r": 530.4809, "b": 502.81598, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 25, "end_row_offset_idx": 26, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.1 Explanation of RCAC and the concept of access control . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.04248, "t": 493.603, "r": 547.16571, "b": 502.81598, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 25, "end_row_offset_idx": 26, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "14", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19719, "t": 506.14264, "r": 378.20786, "b": 515.35562, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 26, "end_row_offset_idx": 27, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.1.1 Row permission and column mask definitions", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 383.74713, "t": 506.14264, "r": 547.15576, "b": 515.35562, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 26, "end_row_offset_idx": 27, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . 14", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19719, "t": 518.62253, "r": 530.43475, "b": 527.83551, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 27, "end_row_offset_idx": 28, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.1.2 Enabling and activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 535.99622, "t": 518.62253, "r": 547.11908, "b": 527.83551, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 27, "end_row_offset_idx": 28, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "16", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 531.1621700000001, "r": 530.52808, "b": 540.37517, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 28, "end_row_offset_idx": 29, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.2 Special registers and built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.06702, "t": 531.1621700000001, "r": 547.14484, "b": 540.37517, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 28, "end_row_offset_idx": 29, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "18", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19719, "t": 543.64204, "r": 530.49786, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 29, "end_row_offset_idx": 30, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.2.1 Special registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.05188, "t": 543.64204, "r": 547.15991, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 29, "end_row_offset_idx": 30, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "18", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19719, "t": 556.12192, "r": 530.56024, "b": 565.33492, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 30, "end_row_offset_idx": 31, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.2.2 Built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.09912, "t": 556.12192, "r": 547.17688, "b": 565.33492, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 30, "end_row_offset_idx": 31, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "19", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 568.66156, "r": 530.53027, "b": 577.87456, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 31, "end_row_offset_idx": 32, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.3 VERIFY_GROUP_FOR_USER function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.06152, "t": 568.66156, "r": 547.12402, "b": 577.87456, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 31, "end_row_offset_idx": 32, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "20", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 581.14143, "r": 530.62994, "b": 590.35443, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 32, "end_row_offset_idx": 33, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.4 Establishing and controlling accessibility by using the RCAC rule text . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.16315, "t": 581.14143, "r": 547.22955, "b": 590.35443, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 32, "end_row_offset_idx": 33, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "21", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79701, "t": 593.62131, "r": 394.7818, "b": 602.8343, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 34, "end_row_offset_idx": 35, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.5 SELECT, INSERT, and UPDATE behavior with RCAC", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 400.32065, "t": 593.62131, "r": 547.1001, "b": 602.8343, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 33, "end_row_offset_idx": 34, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . 22", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 618.64082, "r": 530.49139, "b": 627.85382, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 35, "end_row_offset_idx": 36, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.1 Assigning the QIBM_DB_SECADM function ID to the consultants. . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.04633, "t": 618.64082, "r": 547.15619, "b": 627.85382, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 35, "end_row_offset_idx": 36, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "23", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 631.1206999999999, "r": 530.56458, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 36, "end_row_offset_idx": 37, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.2 Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.09601, "t": 631.1206999999999, "r": 547.15875, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 36, "end_row_offset_idx": 37, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "23", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 643.66034, "r": 530.55695, "b": 652.87334, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 37, "end_row_offset_idx": 38, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.3 Demonstrating data access without RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0882, "t": 643.66034, "r": 547.15076, "b": 652.87334, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 37, "end_row_offset_idx": 38, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "24", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 656.14021, "r": 530.53412, "b": 665.35321, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 38, "end_row_offset_idx": 39, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.4 Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.073, "t": 656.14021, "r": 547.15088, "b": 665.35321, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 38, "end_row_offset_idx": 39, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "25", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 668.62009, "r": 339.45105, "b": 677.83309, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 39, "end_row_offset_idx": 40, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.5 Defining and creating column masks", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 344.98996, "t": 668.62009, "r": 547.16089, "b": 677.83309, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 39, "end_row_offset_idx": 40, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 681.15973, "r": 530.54102, "b": 690.37273, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 40, "end_row_offset_idx": 41, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.6 Activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.08765, "t": 681.15973, "r": 547.18085, "b": 690.37273, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 40, "end_row_offset_idx": 41, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "28", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 693.63961, "r": 530.57507, "b": 702.852615, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 41, "end_row_offset_idx": 42, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.7 Demonstrating data access with RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.10663, "t": 693.63961, "r": 547.16968, "b": 702.852615, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 41, "end_row_offset_idx": 42, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "29", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 706.119492, "r": 530.43628, "b": 715.332497, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 42, "end_row_offset_idx": 43, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.8 Demonstrating data access with a view and RCAC . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 535.99847, "t": 706.119492, "r": 547.12286, "b": 715.332497, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 42, "end_row_offset_idx": 43, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "32", "column_header": false, "row_header": false, "row_section": false}]}}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 4, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.751060485839844, "t": 754.6969604492188, "r": 257.24335, "b": 764.1015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9473134875297546, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 4, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 538.3257446289062, "t": 754.0830688476562, "r": 547.25928, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.892595112323761, "cells": [{"id": 1, "text": "iii", "bbox": {"l": 538.85999, "t": 754.848721, "r": 547.25928, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "iii"}, {"label": "section_header", "id": 2, "page_no": 4, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.6857681274414, "t": 73.01808166503906, "r": 168.73441, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9508246779441833, "cells": [{"id": 2, "text": "Contents", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 168.73441, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Contents"}, {"label": "table", "id": 3, "page_no": 4, "cluster": {"id": 3, "label": "table", "bbox": {"l": 136.15103149414062, "t": 132.03030395507812, "r": 549.84723, "b": 715.6527709960938, "coord_origin": "TOPLEFT"}, "confidence": 0.9803490042686462, "cells": [{"id": 3, "text": "Notices", "bbox": {"l": 136.8, "t": 132.64862000000005, "r": 172.89404, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii", "bbox": {"l": 175.01952, "t": 132.64862000000005, "r": 547.18982, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Trademarks", "bbox": {"l": 136.79901, "t": 145.12847999999997, "r": 189.86537, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 195.39685, "t": 145.12847999999997, "r": 530.05121, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "viii", "bbox": {"l": 535.5827, "t": 145.12847999999997, "r": 547.18286, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "DB2 for i Center of Excellence", "bbox": {"l": 136.79901, "t": 167.62811, "r": 279.39731, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix", "bbox": {"l": 280.61942, "t": 167.62811, "r": 547.1908, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Preface", "bbox": {"l": 136.79901, "t": 190.12775, "r": 172.84424, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "bbox": {"l": 175.01852, "t": 190.12775, "r": 547.18286, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "bbox": {"l": 136.79803, "t": 202.60760000000005, "r": 547.18085, "b": 211.82061999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Now you can become a published author, too!", "bbox": {"l": 136.79803, "t": 215.14721999999995, "r": 339.18292, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.71411, "t": 215.14721999999995, "r": 530.00812, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "xiii", "bbox": {"l": 535.53925, "t": 215.14721999999995, "r": 547.13879, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 136.79803, "t": 227.62707999999998, "r": 529.99506, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "xiii", "bbox": {"l": 535.5495, "t": 227.62707999999998, "r": 547.19788, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Stay connected to IBM Redbooks", "bbox": {"l": 136.79807, "t": 240.10693000000003, "r": 284.02866, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 289.54449, "t": 240.10693000000003, "r": 529.48242, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "xiv", "bbox": {"l": 534.99829, "t": 240.10693000000003, "r": 547.12115, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Chapter 1. Securing and protecting IBM DB2 data", "bbox": {"l": 136.79807, "t": 262.60657000000003, "r": 373.17566, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 375.11798, "t": 262.60657000000003, "r": 536.09589, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "1", "bbox": {"l": 541.64685, "t": 262.60657000000003, "r": 547.19781, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "1.1", "bbox": {"l": 136.79808, "t": 274.60637999999994, "r": 150.88702, "b": 283.8194, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Security fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2", "bbox": {"l": 156.5226, "t": 274.60637999999994, "r": 549.84723, "b": 283.8194, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "1.2", "bbox": {"l": 136.79807, "t": 287.14606000000003, "r": 150.62746, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Current state of IBM i security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.15923, "t": 287.14606000000003, "r": 536.12933, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "2", "bbox": {"l": 541.66113, "t": 287.14606000000003, "r": 547.19287, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "1.3", "bbox": {"l": 136.79807, "t": 299.62595, "r": 150.84943, "b": 308.83893, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "DB2 for i security controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3", "bbox": {"l": 156.46996, "t": 299.62595, "r": 549.84723, "b": 308.83893, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "1.3.1", "bbox": {"l": 151.1972, "t": 312.1058300000001, "r": 173.38289, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Existing row and column control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.92932, "t": 312.1058300000001, "r": 536.05511, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "4", "bbox": {"l": 541.6015, "t": 312.1058300000001, "r": 547.14795, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "1.3.2", "bbox": {"l": 151.1972, "t": 324.64548, "r": 173.4189, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "New controls: Row and Column Access Control. . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97432, "t": 324.64548, "r": 536.08008, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "5", "bbox": {"l": 541.6355, "t": 324.64548, "r": 547.19092, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Chapter 2. Roles and separation of duties", "bbox": {"l": 136.79704, "t": 347.14511, "r": 336.82071, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 338.99701, "t": 347.14511, "r": 536.09088, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "7", "bbox": {"l": 541.64282, "t": 347.14511, "r": 547.19476, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "2.1", "bbox": {"l": 136.79704, "t": 359.14493, "r": 150.644, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18277, "t": 359.14493, "r": 536.12714, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "8", "bbox": {"l": 541.66589, "t": 359.14493, "r": 547.20471, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "2.1.1", "bbox": {"l": 151.1972, "t": 371.62482, "r": 173.60995, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "DDM and DRDA application server access: QIBM_DB_DDMDRDA . . . . . . . . . . .", "bbox": {"l": 176.41154, "t": 371.62482, "r": 535.9527, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "8", "bbox": {"l": 541.55585, "t": 371.62482, "r": 547.15906, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "2.1.2", "bbox": {"l": 151.1972, "t": 384.10470999999995, "r": 173.41664, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Toolbox application server access: QIBM_DB_ZDA. . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97151, "t": 384.10470999999995, "r": 536.04108, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "8", "bbox": {"l": 541.59595, "t": 384.10470999999995, "r": 547.15082, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "2.1.3", "bbox": {"l": 151.1972, "t": 396.64435, "r": 173.41859, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Database Administrator function: QIBM_DB_SQLADM . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97394, "t": 396.64435, "r": 536.07489, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "9", "bbox": {"l": 541.63025, "t": 396.64435, "r": 547.18561, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "2.1.4", "bbox": {"l": 151.1972, "t": 409.12424000000004, "r": 173.38629, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "Database Information function: QIBM_DB_SYSMON", "bbox": {"l": 178.93356, "t": 409.12424000000004, "r": 411.27048, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": ". . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 416.81775, "t": 409.12424000000004, "r": 536.08411, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "9", "bbox": {"l": 541.63135, "t": 409.12424000000004, "r": 547.17865, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "2.1.5", "bbox": {"l": 151.1972, "t": 421.60413, "r": 173.44926, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "Security Administrator function: QIBM_DB_SECADM . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01228, "t": 421.60413, "r": 536.03589, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "9", "bbox": {"l": 541.59894, "t": 421.60413, "r": 547.16193, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "2.1.6", "bbox": {"l": 151.1972, "t": 434.1437700000001, "r": 173.32208, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Change Function Usage CL command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8533, "t": 434.1437700000001, "r": 530.57318, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "10", "bbox": {"l": 536.10443, "t": 434.1437700000001, "r": 547.16687, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "2.1.7", "bbox": {"l": 151.1972, "t": 446.62366, "r": 173.35822, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "Verifying function usage IDs for RCAC with the FUNCTION_USAGE view . . . . .", "bbox": {"l": 178.89848, "t": 446.62366, "r": 530.53522, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "10", "bbox": {"l": 536.0755, "t": 446.62366, "r": 547.15601, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "2.2", "bbox": {"l": 136.79704, "t": 459.10355, "r": 150.85457, "b": 468.31653, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "Separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10", "bbox": {"l": 156.47758, "t": 459.10355, "r": 547.25659, "b": 468.31653, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Chapter 3. Row and Column Access Control", "bbox": {"l": 136.79703, "t": 481.60318, "r": 348.68503, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 350.09741, "t": 481.60318, "r": 530.53961, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "13", "bbox": {"l": 536.09167, "t": 481.60318, "r": 547.1958, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "3.1", "bbox": {"l": 136.79703, "t": 493.603, "r": 150.70105, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "Explanation of RCAC and the concept of access control . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26266, "t": 493.603, "r": 530.4809, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "14", "bbox": {"l": 536.04248, "t": 493.603, "r": 547.16571, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "3.1.1", "bbox": {"l": 151.19719, "t": 506.14264, "r": 173.35429, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "Row permission and column mask definitions", "bbox": {"l": 178.89357, "t": 506.14264, "r": 378.20786, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 383.74713, "t": 506.14264, "r": 530.5379, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "14", "bbox": {"l": 536.07721, "t": 506.14264, "r": 547.15576, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "3.1.2", "bbox": {"l": 151.19719, "t": 518.62253, "r": 173.44292, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "Enabling and activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00435, "t": 518.62253, "r": 530.43475, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "16", "bbox": {"l": 535.99622, "t": 518.62253, "r": 547.11908, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "3.2", "bbox": {"l": 136.79703, "t": 531.1621700000001, "r": 150.64432, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "Special registers and built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18323, "t": 531.1621700000001, "r": 530.52808, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "18", "bbox": {"l": 536.06702, "t": 531.1621700000001, "r": 547.14484, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "3.2.1", "bbox": {"l": 151.19719, "t": 543.64204, "r": 173.41321, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "Special registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.96722, "t": 543.64204, "r": 530.49786, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "18", "bbox": {"l": 536.05188, "t": 543.64204, "r": 547.15991, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 86, "text": "3.2.2", "bbox": {"l": 151.19719, "t": 556.12192, "r": 173.35269, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 87, "text": "Built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89156, "t": 556.12192, "r": 530.56024, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 88, "text": "19", "bbox": {"l": 536.09912, "t": 556.12192, "r": 547.17688, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 89, "text": "3.3", "bbox": {"l": 136.79703, "t": 568.66156, "r": 150.62514, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 90, "text": "VERIFY_GROUP_FOR_USER function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.15639, "t": 568.66156, "r": 530.53027, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 91, "text": "20", "bbox": {"l": 536.06152, "t": 568.66156, "r": 547.12402, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 92, "text": "3.4", "bbox": {"l": 136.79703, "t": 581.14143, "r": 150.63004, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 93, "text": "Establishing and controlling accessibility by using the RCAC rule text . . . . . . . . . . . . .", "bbox": {"l": 156.16325, "t": 581.14143, "r": 530.62994, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 94, "text": "21", "bbox": {"l": 536.16315, "t": 581.14143, "r": 547.22955, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 95, "text": "3.5", "bbox": {"l": 136.79701, "t": 593.62131, "r": 150.64413, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 96, "text": "SELECT, INSERT, and UPDATE behavior with RCAC", "bbox": {"l": 156.18298, "t": 593.62131, "r": 394.7818, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 97, "text": ". . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 400.32065, "t": 593.62131, "r": 530.48358, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 98, "text": "22", "bbox": {"l": 536.0224, "t": 593.62131, "r": 547.1001, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 99, "text": "3.6", "bbox": {"l": 136.79701, "t": 606.16095, "r": 150.6642, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 100, "text": "Human resources example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.21107, "t": 606.16095, "r": 530.56512, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 101, "text": "22", "bbox": {"l": 536.112, "t": 606.16095, "r": 547.20575, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 102, "text": "3.6.1", "bbox": {"l": 151.19717, "t": 618.64082, "r": 173.41692, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 103, "text": "Assigning the QIBM_DB_SECADM function ID to the consultants. . . . . . . . . . . .", "bbox": {"l": 178.97185, "t": 618.64082, "r": 530.49139, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 104, "text": "23", "bbox": {"l": 536.04633, "t": 618.64082, "r": 547.15619, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 105, "text": "3.6.2", "bbox": {"l": 151.19717, "t": 631.1206999999999, "r": 173.32271, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 106, "text": "Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8541, "t": 631.1206999999999, "r": 530.56458, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 107, "text": "23", "bbox": {"l": 536.09601, "t": 631.1206999999999, "r": 547.15875, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 108, "text": "3.6.3", "bbox": {"l": 151.19717, "t": 643.66034, "r": 173.32227, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 109, "text": "Demonstrating data access without RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85353, "t": 643.66034, "r": 530.55695, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 110, "text": "24", "bbox": {"l": 536.0882, "t": 643.66034, "r": 547.15076, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 111, "text": "3.6.4", "bbox": {"l": 151.19717, "t": 656.14021, "r": 173.35289, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 112, "text": "Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89182, "t": 656.14021, "r": 530.53412, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 113, "text": "25", "bbox": {"l": 536.073, "t": 656.14021, "r": 547.15088, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 114, "text": "3.6.5", "bbox": {"l": 151.19717, "t": 668.62009, "r": 173.35289, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 115, "text": "Defining and creating column masks", "bbox": {"l": 178.89182, "t": 668.62009, "r": 339.45105, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 116, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.98996, "t": 668.62009, "r": 530.54413, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 117, "text": "26", "bbox": {"l": 536.08301, "t": 668.62009, "r": 547.16089, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 118, "text": "3.6.6", "bbox": {"l": 151.19717, "t": 681.15973, "r": 173.38359, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 119, "text": "Activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.93019, "t": 681.15973, "r": 530.54102, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 120, "text": "28", "bbox": {"l": 536.08765, "t": 681.15973, "r": 547.18085, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 121, "text": "3.6.7", "bbox": {"l": 151.19717, "t": 693.63961, "r": 173.32332, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 122, "text": "Demonstrating data access with RCAC", "bbox": {"l": 178.85486, "t": 693.63961, "r": 350.80011, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 123, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 356.33163, "t": 693.63961, "r": 530.57507, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 124, "text": "29", "bbox": {"l": 536.10663, "t": 693.63961, "r": 547.16968, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 125, "text": "3.6.8", "bbox": {"l": 151.19717, "t": 706.119492, "r": 173.44592, "b": 715.332497, "coord_origin": "TOPLEFT"}}, {"id": 126, "text": "Demonstrating data access with a view and RCAC . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00812, "t": 706.119492, "r": 530.43628, "b": 715.332497, "coord_origin": "TOPLEFT"}}, {"id": 127, "text": "32", "bbox": {"l": 535.99847, "t": 706.119492, "r": 547.12286, "b": 715.332497, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl"], "num_rows": 43, "num_cols": 2, "table_cells": [{"bbox": {"l": 136.8, "t": 132.64862000000005, "r": 172.89404, "b": 141.86163, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Notices", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 175.01952, "t": 132.64862000000005, "r": 547.18982, "b": 141.86163, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79901, "t": 145.12847999999997, "r": 189.86537, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Trademarks", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 195.39685, "t": 145.12847999999997, "r": 547.18286, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79901, "t": 167.62811, "r": 279.39731, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "DB2 for i Center of Excellence", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 280.61942, "t": 167.62811, "r": 547.1908, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79901, "t": 190.12775, "r": 172.84424, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Preface", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 175.01852, "t": 190.12775, "r": 547.18286, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79803, "t": 202.60760000000005, "r": 547.18085, "b": 211.82061999999996, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79803, "t": 215.14721999999995, "r": 339.18292, "b": 224.36023, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Now you can become a published author, too!", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 344.71411, "t": 215.14721999999995, "r": 547.13879, "b": 224.36023, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79803, "t": 227.62707999999998, "r": 529.99506, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 535.5495, "t": 227.62707999999998, "r": 547.19788, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "xiii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79807, "t": 240.10693000000003, "r": 284.02866, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Stay connected to IBM Redbooks", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.54449, "t": 240.10693000000003, "r": 547.12115, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79807, "t": 262.60657000000003, "r": 536.09589, "b": 271.81958, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 1. Securing and protecting IBM DB2 data . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.64685, "t": 262.60657000000003, "r": 547.19781, "b": 271.81958, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "1", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79808, "t": 274.60637999999994, "r": 549.84723, "b": 283.8194, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.1 Security fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79807, "t": 287.14606000000003, "r": 536.12933, "b": 296.35904, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.2 Current state of IBM i security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.66113, "t": 287.14606000000003, "r": 547.19287, "b": 296.35904, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "2", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79807, "t": 299.62595, "r": 549.84723, "b": 308.83893, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.3 DB2 for i security controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 312.1058300000001, "r": 536.05511, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.3.1 Existing row and column control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.6015, "t": 312.1058300000001, "r": 547.14795, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "4", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 324.64548, "r": 536.08008, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.3.2 New controls: Row and Column Access Control. . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.6355, "t": 324.64548, "r": 547.19092, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "5", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79704, "t": 347.14511, "r": 536.09088, "b": 356.35809, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 2. Roles and separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.64282, "t": 347.14511, "r": 547.19476, "b": 356.35809, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "7", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79704, "t": 359.14493, "r": 536.12714, "b": 368.35791, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1 Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.66589, "t": 359.14493, "r": 547.20471, "b": 368.35791, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "8", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 371.62482, "r": 535.9527, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.1 DDM and DRDA application server access: QIBM_DB_DDMDRDA . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.55585, "t": 371.62482, "r": 547.15906, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "8", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 384.10470999999995, "r": 536.04108, "b": 393.31769, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.2 Toolbox application server access: QIBM_DB_ZDA. . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.59595, "t": 384.10470999999995, "r": 547.15082, "b": 393.31769, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "8", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 396.64435, "r": 536.07489, "b": 405.85733, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.3 Database Administrator function: QIBM_DB_SQLADM . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.63025, "t": 396.64435, "r": 547.18561, "b": 405.85733, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "9", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 409.12424000000004, "r": 411.27048, "b": 418.33722, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.4 Database Information function: QIBM_DB_SYSMON", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 416.81775, "t": 409.12424000000004, "r": 547.17865, "b": 418.33722, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . 9", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 421.60413, "r": 536.03589, "b": 430.81711, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.5 Security Administrator function: QIBM_DB_SECADM . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.59894, "t": 421.60413, "r": 547.16193, "b": 430.81711, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "9", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 434.1437700000001, "r": 530.57318, "b": 443.35675, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.6 Change Function Usage CL command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.10443, "t": 434.1437700000001, "r": 547.16687, "b": 443.35675, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 446.62366, "r": 530.53522, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 22, "end_row_offset_idx": 23, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.7 Verifying function usage IDs for RCAC with the FUNCTION_USAGE view . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0755, "t": 446.62366, "r": 547.15601, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 22, "end_row_offset_idx": 23, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79704, "t": 459.10355, "r": 547.25659, "b": 468.31653, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 23, "end_row_offset_idx": 24, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.2 Separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 481.60318, "r": 530.53961, "b": 490.81616, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 24, "end_row_offset_idx": 25, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 3. Row and Column Access Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.09167, "t": 481.60318, "r": 547.1958, "b": 490.81616, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 24, "end_row_offset_idx": 25, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "13", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 493.603, "r": 530.4809, "b": 502.81598, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 25, "end_row_offset_idx": 26, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.1 Explanation of RCAC and the concept of access control . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.04248, "t": 493.603, "r": 547.16571, "b": 502.81598, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 25, "end_row_offset_idx": 26, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "14", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19719, "t": 506.14264, "r": 378.20786, "b": 515.35562, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 26, "end_row_offset_idx": 27, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.1.1 Row permission and column mask definitions", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 383.74713, "t": 506.14264, "r": 547.15576, "b": 515.35562, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 26, "end_row_offset_idx": 27, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . 14", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19719, "t": 518.62253, "r": 530.43475, "b": 527.83551, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 27, "end_row_offset_idx": 28, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.1.2 Enabling and activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 535.99622, "t": 518.62253, "r": 547.11908, "b": 527.83551, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 27, "end_row_offset_idx": 28, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "16", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 531.1621700000001, "r": 530.52808, "b": 540.37517, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 28, "end_row_offset_idx": 29, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.2 Special registers and built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.06702, "t": 531.1621700000001, "r": 547.14484, "b": 540.37517, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 28, "end_row_offset_idx": 29, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "18", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19719, "t": 543.64204, "r": 530.49786, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 29, "end_row_offset_idx": 30, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.2.1 Special registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.05188, "t": 543.64204, "r": 547.15991, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 29, "end_row_offset_idx": 30, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "18", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19719, "t": 556.12192, "r": 530.56024, "b": 565.33492, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 30, "end_row_offset_idx": 31, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.2.2 Built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.09912, "t": 556.12192, "r": 547.17688, "b": 565.33492, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 30, "end_row_offset_idx": 31, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "19", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 568.66156, "r": 530.53027, "b": 577.87456, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 31, "end_row_offset_idx": 32, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.3 VERIFY_GROUP_FOR_USER function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.06152, "t": 568.66156, "r": 547.12402, "b": 577.87456, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 31, "end_row_offset_idx": 32, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "20", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 581.14143, "r": 530.62994, "b": 590.35443, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 32, "end_row_offset_idx": 33, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.4 Establishing and controlling accessibility by using the RCAC rule text . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.16315, "t": 581.14143, "r": 547.22955, "b": 590.35443, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 32, "end_row_offset_idx": 33, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "21", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79701, "t": 593.62131, "r": 394.7818, "b": 602.8343, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 34, "end_row_offset_idx": 35, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.5 SELECT, INSERT, and UPDATE behavior with RCAC", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 400.32065, "t": 593.62131, "r": 547.1001, "b": 602.8343, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 33, "end_row_offset_idx": 34, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . 22", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 618.64082, "r": 530.49139, "b": 627.85382, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 35, "end_row_offset_idx": 36, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.1 Assigning the QIBM_DB_SECADM function ID to the consultants. . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.04633, "t": 618.64082, "r": 547.15619, "b": 627.85382, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 35, "end_row_offset_idx": 36, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "23", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 631.1206999999999, "r": 530.56458, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 36, "end_row_offset_idx": 37, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.2 Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.09601, "t": 631.1206999999999, "r": 547.15875, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 36, "end_row_offset_idx": 37, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "23", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 643.66034, "r": 530.55695, "b": 652.87334, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 37, "end_row_offset_idx": 38, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.3 Demonstrating data access without RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0882, "t": 643.66034, "r": 547.15076, "b": 652.87334, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 37, "end_row_offset_idx": 38, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "24", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 656.14021, "r": 530.53412, "b": 665.35321, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 38, "end_row_offset_idx": 39, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.4 Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.073, "t": 656.14021, "r": 547.15088, "b": 665.35321, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 38, "end_row_offset_idx": 39, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "25", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 668.62009, "r": 339.45105, "b": 677.83309, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 39, "end_row_offset_idx": 40, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.5 Defining and creating column masks", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 344.98996, "t": 668.62009, "r": 547.16089, "b": 677.83309, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 39, "end_row_offset_idx": 40, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 681.15973, "r": 530.54102, "b": 690.37273, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 40, "end_row_offset_idx": 41, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.6 Activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.08765, "t": 681.15973, "r": 547.18085, "b": 690.37273, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 40, "end_row_offset_idx": 41, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "28", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 693.63961, "r": 530.57507, "b": 702.852615, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 41, "end_row_offset_idx": 42, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.7 Demonstrating data access with RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.10663, "t": 693.63961, "r": 547.16968, "b": 702.852615, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 41, "end_row_offset_idx": 42, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "29", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 706.119492, "r": 530.43628, "b": 715.332497, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 42, "end_row_offset_idx": 43, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.8 Demonstrating data access with a view and RCAC . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 535.99847, "t": 706.119492, "r": 547.12286, "b": 715.332497, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 42, "end_row_offset_idx": 43, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "32", "column_header": false, "row_header": false, "row_section": false}]}], "body": [{"label": "section_header", "id": 2, "page_no": 4, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.6857681274414, "t": 73.01808166503906, "r": 168.73441, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9508246779441833, "cells": [{"id": 2, "text": "Contents", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 168.73441, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Contents"}, {"label": "table", "id": 3, "page_no": 4, "cluster": {"id": 3, "label": "table", "bbox": {"l": 136.15103149414062, "t": 132.03030395507812, "r": 549.84723, "b": 715.6527709960938, "coord_origin": "TOPLEFT"}, "confidence": 0.9803490042686462, "cells": [{"id": 3, "text": "Notices", "bbox": {"l": 136.8, "t": 132.64862000000005, "r": 172.89404, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii", "bbox": {"l": 175.01952, "t": 132.64862000000005, "r": 547.18982, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Trademarks", "bbox": {"l": 136.79901, "t": 145.12847999999997, "r": 189.86537, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 195.39685, "t": 145.12847999999997, "r": 530.05121, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "viii", "bbox": {"l": 535.5827, "t": 145.12847999999997, "r": 547.18286, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "DB2 for i Center of Excellence", "bbox": {"l": 136.79901, "t": 167.62811, "r": 279.39731, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix", "bbox": {"l": 280.61942, "t": 167.62811, "r": 547.1908, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Preface", "bbox": {"l": 136.79901, "t": 190.12775, "r": 172.84424, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "bbox": {"l": 175.01852, "t": 190.12775, "r": 547.18286, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "bbox": {"l": 136.79803, "t": 202.60760000000005, "r": 547.18085, "b": 211.82061999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Now you can become a published author, too!", "bbox": {"l": 136.79803, "t": 215.14721999999995, "r": 339.18292, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.71411, "t": 215.14721999999995, "r": 530.00812, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "xiii", "bbox": {"l": 535.53925, "t": 215.14721999999995, "r": 547.13879, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 136.79803, "t": 227.62707999999998, "r": 529.99506, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "xiii", "bbox": {"l": 535.5495, "t": 227.62707999999998, "r": 547.19788, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Stay connected to IBM Redbooks", "bbox": {"l": 136.79807, "t": 240.10693000000003, "r": 284.02866, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 289.54449, "t": 240.10693000000003, "r": 529.48242, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "xiv", "bbox": {"l": 534.99829, "t": 240.10693000000003, "r": 547.12115, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Chapter 1. Securing and protecting IBM DB2 data", "bbox": {"l": 136.79807, "t": 262.60657000000003, "r": 373.17566, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 375.11798, "t": 262.60657000000003, "r": 536.09589, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "1", "bbox": {"l": 541.64685, "t": 262.60657000000003, "r": 547.19781, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "1.1", "bbox": {"l": 136.79808, "t": 274.60637999999994, "r": 150.88702, "b": 283.8194, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Security fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2", "bbox": {"l": 156.5226, "t": 274.60637999999994, "r": 549.84723, "b": 283.8194, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "1.2", "bbox": {"l": 136.79807, "t": 287.14606000000003, "r": 150.62746, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Current state of IBM i security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.15923, "t": 287.14606000000003, "r": 536.12933, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "2", "bbox": {"l": 541.66113, "t": 287.14606000000003, "r": 547.19287, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "1.3", "bbox": {"l": 136.79807, "t": 299.62595, "r": 150.84943, "b": 308.83893, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "DB2 for i security controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3", "bbox": {"l": 156.46996, "t": 299.62595, "r": 549.84723, "b": 308.83893, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "1.3.1", "bbox": {"l": 151.1972, "t": 312.1058300000001, "r": 173.38289, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Existing row and column control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.92932, "t": 312.1058300000001, "r": 536.05511, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "4", "bbox": {"l": 541.6015, "t": 312.1058300000001, "r": 547.14795, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "1.3.2", "bbox": {"l": 151.1972, "t": 324.64548, "r": 173.4189, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "New controls: Row and Column Access Control. . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97432, "t": 324.64548, "r": 536.08008, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "5", "bbox": {"l": 541.6355, "t": 324.64548, "r": 547.19092, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Chapter 2. Roles and separation of duties", "bbox": {"l": 136.79704, "t": 347.14511, "r": 336.82071, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 338.99701, "t": 347.14511, "r": 536.09088, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "7", "bbox": {"l": 541.64282, "t": 347.14511, "r": 547.19476, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "2.1", "bbox": {"l": 136.79704, "t": 359.14493, "r": 150.644, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18277, "t": 359.14493, "r": 536.12714, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "8", "bbox": {"l": 541.66589, "t": 359.14493, "r": 547.20471, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "2.1.1", "bbox": {"l": 151.1972, "t": 371.62482, "r": 173.60995, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "DDM and DRDA application server access: QIBM_DB_DDMDRDA . . . . . . . . . . .", "bbox": {"l": 176.41154, "t": 371.62482, "r": 535.9527, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "8", "bbox": {"l": 541.55585, "t": 371.62482, "r": 547.15906, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "2.1.2", "bbox": {"l": 151.1972, "t": 384.10470999999995, "r": 173.41664, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Toolbox application server access: QIBM_DB_ZDA. . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97151, "t": 384.10470999999995, "r": 536.04108, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "8", "bbox": {"l": 541.59595, "t": 384.10470999999995, "r": 547.15082, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "2.1.3", "bbox": {"l": 151.1972, "t": 396.64435, "r": 173.41859, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Database Administrator function: QIBM_DB_SQLADM . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97394, "t": 396.64435, "r": 536.07489, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "9", "bbox": {"l": 541.63025, "t": 396.64435, "r": 547.18561, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "2.1.4", "bbox": {"l": 151.1972, "t": 409.12424000000004, "r": 173.38629, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "Database Information function: QIBM_DB_SYSMON", "bbox": {"l": 178.93356, "t": 409.12424000000004, "r": 411.27048, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": ". . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 416.81775, "t": 409.12424000000004, "r": 536.08411, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "9", "bbox": {"l": 541.63135, "t": 409.12424000000004, "r": 547.17865, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "2.1.5", "bbox": {"l": 151.1972, "t": 421.60413, "r": 173.44926, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "Security Administrator function: QIBM_DB_SECADM . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01228, "t": 421.60413, "r": 536.03589, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "9", "bbox": {"l": 541.59894, "t": 421.60413, "r": 547.16193, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "2.1.6", "bbox": {"l": 151.1972, "t": 434.1437700000001, "r": 173.32208, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Change Function Usage CL command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8533, "t": 434.1437700000001, "r": 530.57318, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "10", "bbox": {"l": 536.10443, "t": 434.1437700000001, "r": 547.16687, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "2.1.7", "bbox": {"l": 151.1972, "t": 446.62366, "r": 173.35822, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "Verifying function usage IDs for RCAC with the FUNCTION_USAGE view . . . . .", "bbox": {"l": 178.89848, "t": 446.62366, "r": 530.53522, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "10", "bbox": {"l": 536.0755, "t": 446.62366, "r": 547.15601, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "2.2", "bbox": {"l": 136.79704, "t": 459.10355, "r": 150.85457, "b": 468.31653, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "Separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10", "bbox": {"l": 156.47758, "t": 459.10355, "r": 547.25659, "b": 468.31653, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Chapter 3. Row and Column Access Control", "bbox": {"l": 136.79703, "t": 481.60318, "r": 348.68503, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 350.09741, "t": 481.60318, "r": 530.53961, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "13", "bbox": {"l": 536.09167, "t": 481.60318, "r": 547.1958, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "3.1", "bbox": {"l": 136.79703, "t": 493.603, "r": 150.70105, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "Explanation of RCAC and the concept of access control . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26266, "t": 493.603, "r": 530.4809, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "14", "bbox": {"l": 536.04248, "t": 493.603, "r": 547.16571, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "3.1.1", "bbox": {"l": 151.19719, "t": 506.14264, "r": 173.35429, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "Row permission and column mask definitions", "bbox": {"l": 178.89357, "t": 506.14264, "r": 378.20786, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 383.74713, "t": 506.14264, "r": 530.5379, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "14", "bbox": {"l": 536.07721, "t": 506.14264, "r": 547.15576, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "3.1.2", "bbox": {"l": 151.19719, "t": 518.62253, "r": 173.44292, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "Enabling and activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00435, "t": 518.62253, "r": 530.43475, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "16", "bbox": {"l": 535.99622, "t": 518.62253, "r": 547.11908, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "3.2", "bbox": {"l": 136.79703, "t": 531.1621700000001, "r": 150.64432, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "Special registers and built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18323, "t": 531.1621700000001, "r": 530.52808, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "18", "bbox": {"l": 536.06702, "t": 531.1621700000001, "r": 547.14484, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "3.2.1", "bbox": {"l": 151.19719, "t": 543.64204, "r": 173.41321, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "Special registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.96722, "t": 543.64204, "r": 530.49786, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "18", "bbox": {"l": 536.05188, "t": 543.64204, "r": 547.15991, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 86, "text": "3.2.2", "bbox": {"l": 151.19719, "t": 556.12192, "r": 173.35269, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 87, "text": "Built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89156, "t": 556.12192, "r": 530.56024, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 88, "text": "19", "bbox": {"l": 536.09912, "t": 556.12192, "r": 547.17688, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 89, "text": "3.3", "bbox": {"l": 136.79703, "t": 568.66156, "r": 150.62514, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 90, "text": "VERIFY_GROUP_FOR_USER function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.15639, "t": 568.66156, "r": 530.53027, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 91, "text": "20", "bbox": {"l": 536.06152, "t": 568.66156, "r": 547.12402, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 92, "text": "3.4", "bbox": {"l": 136.79703, "t": 581.14143, "r": 150.63004, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 93, "text": "Establishing and controlling accessibility by using the RCAC rule text . . . . . . . . . . . . .", "bbox": {"l": 156.16325, "t": 581.14143, "r": 530.62994, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 94, "text": "21", "bbox": {"l": 536.16315, "t": 581.14143, "r": 547.22955, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 95, "text": "3.5", "bbox": {"l": 136.79701, "t": 593.62131, "r": 150.64413, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 96, "text": "SELECT, INSERT, and UPDATE behavior with RCAC", "bbox": {"l": 156.18298, "t": 593.62131, "r": 394.7818, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 97, "text": ". . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 400.32065, "t": 593.62131, "r": 530.48358, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 98, "text": "22", "bbox": {"l": 536.0224, "t": 593.62131, "r": 547.1001, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 99, "text": "3.6", "bbox": {"l": 136.79701, "t": 606.16095, "r": 150.6642, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 100, "text": "Human resources example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.21107, "t": 606.16095, "r": 530.56512, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 101, "text": "22", "bbox": {"l": 536.112, "t": 606.16095, "r": 547.20575, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 102, "text": "3.6.1", "bbox": {"l": 151.19717, "t": 618.64082, "r": 173.41692, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 103, "text": "Assigning the QIBM_DB_SECADM function ID to the consultants. . . . . . . . . . . .", "bbox": {"l": 178.97185, "t": 618.64082, "r": 530.49139, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 104, "text": "23", "bbox": {"l": 536.04633, "t": 618.64082, "r": 547.15619, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 105, "text": "3.6.2", "bbox": {"l": 151.19717, "t": 631.1206999999999, "r": 173.32271, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 106, "text": "Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8541, "t": 631.1206999999999, "r": 530.56458, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 107, "text": "23", "bbox": {"l": 536.09601, "t": 631.1206999999999, "r": 547.15875, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 108, "text": "3.6.3", "bbox": {"l": 151.19717, "t": 643.66034, "r": 173.32227, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 109, "text": "Demonstrating data access without RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85353, "t": 643.66034, "r": 530.55695, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 110, "text": "24", "bbox": {"l": 536.0882, "t": 643.66034, "r": 547.15076, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 111, "text": "3.6.4", "bbox": {"l": 151.19717, "t": 656.14021, "r": 173.35289, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 112, "text": "Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89182, "t": 656.14021, "r": 530.53412, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 113, "text": "25", "bbox": {"l": 536.073, "t": 656.14021, "r": 547.15088, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 114, "text": "3.6.5", "bbox": {"l": 151.19717, "t": 668.62009, "r": 173.35289, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 115, "text": "Defining and creating column masks", "bbox": {"l": 178.89182, "t": 668.62009, "r": 339.45105, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 116, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.98996, "t": 668.62009, "r": 530.54413, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 117, "text": "26", "bbox": {"l": 536.08301, "t": 668.62009, "r": 547.16089, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 118, "text": "3.6.6", "bbox": {"l": 151.19717, "t": 681.15973, "r": 173.38359, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 119, "text": "Activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.93019, "t": 681.15973, "r": 530.54102, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 120, "text": "28", "bbox": {"l": 536.08765, "t": 681.15973, "r": 547.18085, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 121, "text": "3.6.7", "bbox": {"l": 151.19717, "t": 693.63961, "r": 173.32332, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 122, "text": "Demonstrating data access with RCAC", "bbox": {"l": 178.85486, "t": 693.63961, "r": 350.80011, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 123, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 356.33163, "t": 693.63961, "r": 530.57507, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 124, "text": "29", "bbox": {"l": 536.10663, "t": 693.63961, "r": 547.16968, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 125, "text": "3.6.8", "bbox": {"l": 151.19717, "t": 706.119492, "r": 173.44592, "b": 715.332497, "coord_origin": "TOPLEFT"}}, {"id": 126, "text": "Demonstrating data access with a view and RCAC . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00812, "t": 706.119492, "r": 530.43628, "b": 715.332497, "coord_origin": "TOPLEFT"}}, {"id": 127, "text": "32", "bbox": {"l": 535.99847, "t": 706.119492, "r": 547.12286, "b": 715.332497, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl"], "num_rows": 43, "num_cols": 2, "table_cells": [{"bbox": {"l": 136.8, "t": 132.64862000000005, "r": 172.89404, "b": 141.86163, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Notices", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 175.01952, "t": 132.64862000000005, "r": 547.18982, "b": 141.86163, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79901, "t": 145.12847999999997, "r": 189.86537, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Trademarks", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 195.39685, "t": 145.12847999999997, "r": 547.18286, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79901, "t": 167.62811, "r": 279.39731, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "DB2 for i Center of Excellence", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 280.61942, "t": 167.62811, "r": 547.1908, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79901, "t": 190.12775, "r": 172.84424, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Preface", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 175.01852, "t": 190.12775, "r": 547.18286, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79803, "t": 202.60760000000005, "r": 547.18085, "b": 211.82061999999996, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79803, "t": 215.14721999999995, "r": 339.18292, "b": 224.36023, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Now you can become a published author, too!", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 344.71411, "t": 215.14721999999995, "r": 547.13879, "b": 224.36023, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79803, "t": 227.62707999999998, "r": 529.99506, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 535.5495, "t": 227.62707999999998, "r": 547.19788, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "xiii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79807, "t": 240.10693000000003, "r": 284.02866, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Stay connected to IBM Redbooks", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.54449, "t": 240.10693000000003, "r": 547.12115, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79807, "t": 262.60657000000003, "r": 536.09589, "b": 271.81958, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 1. Securing and protecting IBM DB2 data . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.64685, "t": 262.60657000000003, "r": 547.19781, "b": 271.81958, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "1", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79808, "t": 274.60637999999994, "r": 549.84723, "b": 283.8194, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.1 Security fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79807, "t": 287.14606000000003, "r": 536.12933, "b": 296.35904, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.2 Current state of IBM i security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.66113, "t": 287.14606000000003, "r": 547.19287, "b": 296.35904, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "2", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79807, "t": 299.62595, "r": 549.84723, "b": 308.83893, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.3 DB2 for i security controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 312.1058300000001, "r": 536.05511, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.3.1 Existing row and column control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.6015, "t": 312.1058300000001, "r": 547.14795, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "4", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 324.64548, "r": 536.08008, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.3.2 New controls: Row and Column Access Control. . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.6355, "t": 324.64548, "r": 547.19092, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "5", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79704, "t": 347.14511, "r": 536.09088, "b": 356.35809, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 2. Roles and separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.64282, "t": 347.14511, "r": 547.19476, "b": 356.35809, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "7", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79704, "t": 359.14493, "r": 536.12714, "b": 368.35791, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1 Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.66589, "t": 359.14493, "r": 547.20471, "b": 368.35791, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "8", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 371.62482, "r": 535.9527, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.1 DDM and DRDA application server access: QIBM_DB_DDMDRDA . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.55585, "t": 371.62482, "r": 547.15906, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "8", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 384.10470999999995, "r": 536.04108, "b": 393.31769, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.2 Toolbox application server access: QIBM_DB_ZDA. . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.59595, "t": 384.10470999999995, "r": 547.15082, "b": 393.31769, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "8", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 396.64435, "r": 536.07489, "b": 405.85733, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.3 Database Administrator function: QIBM_DB_SQLADM . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.63025, "t": 396.64435, "r": 547.18561, "b": 405.85733, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "9", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 409.12424000000004, "r": 411.27048, "b": 418.33722, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.4 Database Information function: QIBM_DB_SYSMON", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 416.81775, "t": 409.12424000000004, "r": 547.17865, "b": 418.33722, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . 9", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 421.60413, "r": 536.03589, "b": 430.81711, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.5 Security Administrator function: QIBM_DB_SECADM . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.59894, "t": 421.60413, "r": 547.16193, "b": 430.81711, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "9", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 434.1437700000001, "r": 530.57318, "b": 443.35675, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.6 Change Function Usage CL command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.10443, "t": 434.1437700000001, "r": 547.16687, "b": 443.35675, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 446.62366, "r": 530.53522, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 22, "end_row_offset_idx": 23, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.7 Verifying function usage IDs for RCAC with the FUNCTION_USAGE view . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0755, "t": 446.62366, "r": 547.15601, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 22, "end_row_offset_idx": 23, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79704, "t": 459.10355, "r": 547.25659, "b": 468.31653, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 23, "end_row_offset_idx": 24, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.2 Separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 481.60318, "r": 530.53961, "b": 490.81616, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 24, "end_row_offset_idx": 25, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 3. Row and Column Access Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.09167, "t": 481.60318, "r": 547.1958, "b": 490.81616, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 24, "end_row_offset_idx": 25, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "13", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 493.603, "r": 530.4809, "b": 502.81598, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 25, "end_row_offset_idx": 26, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.1 Explanation of RCAC and the concept of access control . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.04248, "t": 493.603, "r": 547.16571, "b": 502.81598, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 25, "end_row_offset_idx": 26, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "14", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19719, "t": 506.14264, "r": 378.20786, "b": 515.35562, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 26, "end_row_offset_idx": 27, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.1.1 Row permission and column mask definitions", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 383.74713, "t": 506.14264, "r": 547.15576, "b": 515.35562, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 26, "end_row_offset_idx": 27, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . 14", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19719, "t": 518.62253, "r": 530.43475, "b": 527.83551, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 27, "end_row_offset_idx": 28, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.1.2 Enabling and activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 535.99622, "t": 518.62253, "r": 547.11908, "b": 527.83551, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 27, "end_row_offset_idx": 28, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "16", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 531.1621700000001, "r": 530.52808, "b": 540.37517, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 28, "end_row_offset_idx": 29, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.2 Special registers and built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.06702, "t": 531.1621700000001, "r": 547.14484, "b": 540.37517, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 28, "end_row_offset_idx": 29, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "18", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19719, "t": 543.64204, "r": 530.49786, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 29, "end_row_offset_idx": 30, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.2.1 Special registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.05188, "t": 543.64204, "r": 547.15991, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 29, "end_row_offset_idx": 30, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "18", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19719, "t": 556.12192, "r": 530.56024, "b": 565.33492, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 30, "end_row_offset_idx": 31, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.2.2 Built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.09912, "t": 556.12192, "r": 547.17688, "b": 565.33492, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 30, "end_row_offset_idx": 31, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "19", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 568.66156, "r": 530.53027, "b": 577.87456, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 31, "end_row_offset_idx": 32, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.3 VERIFY_GROUP_FOR_USER function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.06152, "t": 568.66156, "r": 547.12402, "b": 577.87456, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 31, "end_row_offset_idx": 32, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "20", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 581.14143, "r": 530.62994, "b": 590.35443, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 32, "end_row_offset_idx": 33, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.4 Establishing and controlling accessibility by using the RCAC rule text . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.16315, "t": 581.14143, "r": 547.22955, "b": 590.35443, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 32, "end_row_offset_idx": 33, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "21", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79701, "t": 593.62131, "r": 394.7818, "b": 602.8343, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 34, "end_row_offset_idx": 35, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.5 SELECT, INSERT, and UPDATE behavior with RCAC", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 400.32065, "t": 593.62131, "r": 547.1001, "b": 602.8343, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 33, "end_row_offset_idx": 34, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . 22", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 618.64082, "r": 530.49139, "b": 627.85382, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 35, "end_row_offset_idx": 36, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.1 Assigning the QIBM_DB_SECADM function ID to the consultants. . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.04633, "t": 618.64082, "r": 547.15619, "b": 627.85382, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 35, "end_row_offset_idx": 36, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "23", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 631.1206999999999, "r": 530.56458, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 36, "end_row_offset_idx": 37, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.2 Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.09601, "t": 631.1206999999999, "r": 547.15875, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 36, "end_row_offset_idx": 37, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "23", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 643.66034, "r": 530.55695, "b": 652.87334, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 37, "end_row_offset_idx": 38, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.3 Demonstrating data access without RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0882, "t": 643.66034, "r": 547.15076, "b": 652.87334, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 37, "end_row_offset_idx": 38, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "24", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 656.14021, "r": 530.53412, "b": 665.35321, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 38, "end_row_offset_idx": 39, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.4 Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.073, "t": 656.14021, "r": 547.15088, "b": 665.35321, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 38, "end_row_offset_idx": 39, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "25", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 668.62009, "r": 339.45105, "b": 677.83309, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 39, "end_row_offset_idx": 40, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.5 Defining and creating column masks", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 344.98996, "t": 668.62009, "r": 547.16089, "b": 677.83309, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 39, "end_row_offset_idx": 40, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 681.15973, "r": 530.54102, "b": 690.37273, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 40, "end_row_offset_idx": 41, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.6 Activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.08765, "t": 681.15973, "r": 547.18085, "b": 690.37273, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 40, "end_row_offset_idx": 41, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "28", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 693.63961, "r": 530.57507, "b": 702.852615, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 41, "end_row_offset_idx": 42, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.7 Demonstrating data access with RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.10663, "t": 693.63961, "r": 547.16968, "b": 702.852615, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 41, "end_row_offset_idx": 42, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "29", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 706.119492, "r": 530.43628, "b": 715.332497, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 42, "end_row_offset_idx": 43, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.8 Demonstrating data access with a view and RCAC . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 535.99847, "t": 706.119492, "r": 547.12286, "b": 715.332497, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 42, "end_row_offset_idx": 43, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "32", "column_header": false, "row_header": false, "row_section": false}]}], "headers": [{"label": "page_footer", "id": 0, "page_no": 4, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.751060485839844, "t": 754.6969604492188, "r": 257.24335, "b": 764.1015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9473134875297546, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 4, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 538.3257446289062, "t": 754.0830688476562, "r": 547.25928, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.892595112323761, "cells": [{"id": 1, "text": "iii", "bbox": {"l": 538.85999, "t": 754.848721, "r": 547.25928, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "iii"}]}}, {"page_no": 5, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "iv ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 75.641998, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 90.599998, "t": 755.538002, "r": 331.55881, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 504.58301, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": ". . . . .", "bbox": {"l": 505.67957, "t": 71.50867000000005, "r": 530.59589, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "37", "bbox": {"l": 536.13281, "t": 71.50867000000005, "r": 547.20673, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "4.1", "bbox": {"l": 136.80002, "t": 83.50847999999996, "r": 150.64761, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Business requirements for the RCAC banking scenario . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18666, "t": 83.50847999999996, "r": 530.52008, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "38", "bbox": {"l": 536.05914, "t": 83.50847999999996, "r": 547.13721, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "4.2", "bbox": {"l": 136.80002, "t": 95.98834000000011, "r": 150.64821, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Description of the users roles and responsibilities", "bbox": {"l": 156.18748, "t": 95.98834000000011, "r": 372.67761, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 378.21689, "t": 95.98834000000011, "r": 530.547, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "39", "bbox": {"l": 536.0863, "t": 95.98834000000011, "r": 547.16486, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "4.3", "bbox": {"l": 136.80002, "t": 108.52795000000015, "r": 150.68542, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Implementation of RCAC", "bbox": {"l": 156.23959, "t": 108.52795000000015, "r": 266.7135, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 272.26767, "t": 108.52795000000015, "r": 530.53625, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "42", "bbox": {"l": 536.09039, "t": 108.52795000000015, "r": 547.19873, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "4.3.1", "bbox": {"l": 151.20018, "t": 121.00780999999995, "r": 173.32434, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Reviewing the tables that are used in this example", "bbox": {"l": 178.85538, "t": 121.00780999999995, "r": 400.57443, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": ". . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 406.10547, "t": 121.00780999999995, "r": 530.55383, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "42", "bbox": {"l": 536.0849, "t": 121.00780999999995, "r": 547.14697, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "4.3.2", "bbox": {"l": 151.20018, "t": 133.48766999999998, "r": 173.33942, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Assigning function ID QIBM_DB_SECADM to the Database Engineers group", "bbox": {"l": 178.87422, "t": 133.48766999999998, "r": 516.9256, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": ". .", "bbox": {"l": 522.46039, "t": 133.48766999999998, "r": 530.76263, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "47", "bbox": {"l": 536.29742, "t": 133.48766999999998, "r": 547.36707, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "4.3.3", "bbox": {"l": 151.20018, "t": 146.02728000000002, "r": 173.32571, "b": 155.24030000000005, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8571, "t": 146.02728000000002, "r": 530.56757, "b": 155.24030000000005, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "50", "bbox": {"l": 536.09894, "t": 146.02728000000002, "r": 547.16174, "b": 155.24030000000005, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "4.3.4", "bbox": {"l": 151.20018, "t": 158.50714000000005, "r": 173.32639, "b": 167.72015, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Creating the CUSTOMER_LOGIN_ID global variable", "bbox": {"l": 178.85794, "t": 158.50714000000005, "r": 411.62085, "b": 167.72015, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ". . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 417.1524, "t": 158.50714000000005, "r": 530.54919, "b": 167.72015, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "52", "bbox": {"l": 536.08075, "t": 158.50714000000005, "r": 547.14386, "b": 167.72015, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "4.3.5", "bbox": {"l": 151.20018, "t": 170.98699999999997, "r": 173.3559, "b": 180.20001000000002, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89482, "t": 170.98699999999997, "r": 530.53705, "b": 180.20001000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "54", "bbox": {"l": 536.07599, "t": 170.98699999999997, "r": 547.15387, "b": 180.20001000000002, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "4.3.6", "bbox": {"l": 151.20018, "t": 183.52661, "r": 173.3559, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Defining and creating column masks", "bbox": {"l": 178.89482, "t": 183.52661, "r": 339.45404, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.99295, "t": 183.52661, "r": 530.54706, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "58", "bbox": {"l": 536.086, "t": 183.52661, "r": 547.16388, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "4.3.7", "bbox": {"l": 151.20018, "t": 196.00647000000004, "r": 173.35544, "b": 205.21947999999998, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Restricting the inserting and updating of masked data . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89426, "t": 196.00647000000004, "r": 530.53931, "b": 205.21947999999998, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "60", "bbox": {"l": 536.07812, "t": 196.00647000000004, "r": 547.15576, "b": 205.21947999999998, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "4.3.8", "bbox": {"l": 151.20018, "t": 208.48632999999995, "r": 173.51157, "b": 217.69934, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Activating row and column access control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.0894, "t": 208.48632999999995, "r": 530.41339, "b": 217.69934, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "63", "bbox": {"l": 535.99127, "t": 208.48632999999995, "r": 547.14697, "b": 217.69934, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "4.3.9", "bbox": {"l": 151.20018, "t": 221.02594, "r": 173.41745, "b": 230.23895000000005, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Reviewing row permissions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97176, "t": 221.02594, "r": 530.48206, "b": 230.23895000000005, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "64", "bbox": {"l": 536.03638, "t": 221.02594, "r": 547.14502, "b": 230.23895000000005, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "4.3.10", "bbox": {"l": 151.20018, "t": 233.50580000000002, "r": 179.05151, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "Demonstrating data access with RCAC", "bbox": {"l": 181.83665, "t": 233.50580000000002, "r": 354.98581, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 360.55606, "t": 233.50580000000002, "r": 530.44922, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "66", "bbox": {"l": 536.01947, "t": 233.50580000000002, "r": 547.16003, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "4.3.11", "bbox": {"l": 151.20018, "t": 245.98566000000005, "r": 179.0511, "b": 255.19867, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Query implementation with RCAC activated . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 181.83621, "t": 245.98566000000005, "r": 530.43353, "b": 255.19867, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "75", "bbox": {"l": 536.00372, "t": 245.98566000000005, "r": 547.1441, "b": 255.19867, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "Chapter 5. RCAC and non-SQL interfaces", "bbox": {"l": 136.80002, "t": 268.48528999999996, "r": 335.23209, "b": 277.6983, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 336.1803, "t": 268.48528999999996, "r": 530.53851, "b": 277.6983, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "79", "bbox": {"l": 536.09161, "t": 268.48528999999996, "r": 547.19781, "b": 277.6983, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "5.1", "bbox": {"l": 136.80002, "t": 280.48514, "r": 150.64661, "b": 289.69812, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Unsupported interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18524, "t": 280.48514, "r": 530.56097, "b": 289.69812, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "80", "bbox": {"l": 536.09961, "t": 280.48514, "r": 547.17688, "b": 289.69812, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "5.2", "bbox": {"l": 136.80002, "t": 293.02478, "r": 150.7034, "b": 302.2377599999999, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Native query result differences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26476, "t": 293.02478, "r": 530.48578, "b": 302.2377599999999, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "80", "bbox": {"l": 536.04718, "t": 293.02478, "r": 547.16986, "b": 302.2377599999999, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "5.3", "bbox": {"l": 136.80002, "t": 305.50467, "r": 150.68428, "b": 314.71765, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "Accidental updates with masked values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.23799, "t": 305.50467, "r": 530.49377, "b": 314.71765, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "81", "bbox": {"l": 536.04749, "t": 305.50467, "r": 547.15491, "b": 314.71765, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "5.4", "bbox": {"l": 136.80002, "t": 317.98456, "r": 150.62888, "b": 327.19754, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "System CL commands considerations", "bbox": {"l": 156.16042, "t": 317.98456, "r": 323.13144, "b": 327.19754, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 328.66299, "t": 317.98456, "r": 530.56433, "b": 327.19754, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "82", "bbox": {"l": 536.09583, "t": 317.98456, "r": 547.15894, "b": 327.19754, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "5.4.1", "bbox": {"l": 151.20018, "t": 330.5242, "r": 173.4519, "b": 339.73718, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "Create Duplicate Object (CRTDUPOBJ) command . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01483, "t": 330.5242, "r": 530.4599, "b": 339.73718, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "82", "bbox": {"l": 536.02283, "t": 330.5242, "r": 547.14868, "b": 339.73718, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "5.4.2", "bbox": {"l": 151.20018, "t": 343.0040900000001, "r": 173.35596, "b": 352.21707, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "Copy File (CPYF) command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8949, "t": 343.0040900000001, "r": 530.53815, "b": 352.21707, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "82", "bbox": {"l": 536.07709, "t": 343.0040900000001, "r": 547.15497, "b": 352.21707, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "5.4.3", "bbox": {"l": 151.20018, "t": 355.48398, "r": 173.451, "b": 364.69696000000005, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "Copy Library (CPYLIB) command. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01372, "t": 355.48398, "r": 530.49475, "b": 364.69696000000005, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "83", "bbox": {"l": 536.05743, "t": 355.48398, "r": 547.18286, "b": 364.69696000000005, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "Chapter 6. Additional considerations", "bbox": {"l": 136.80002, "t": 377.98361, "r": 313.86292, "b": 387.19659, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 313.98047, "t": 377.98361, "r": 530.53851, "b": 387.19659, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "85", "bbox": {"l": 536.09131, "t": 377.98361, "r": 547.19684, "b": 387.19659, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "6.1", "bbox": {"l": 136.80003, "t": 389.98343, "r": 150.68416, "b": 399.19641, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "Timing of column masking", "bbox": {"l": 156.23781, "t": 389.98343, "r": 272.24521, "b": 399.19641, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 277.79886, "t": 389.98343, "r": 530.49005, "b": 399.19641, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "86", "bbox": {"l": 536.0437, "t": 389.98343, "r": 547.151, "b": 399.19641, "coord_origin": "TOPLEFT"}}, {"id": 86, "text": "6.2", "bbox": {"l": 136.80003, "t": 402.5230700000001, "r": 150.70372, "b": 411.73605, "coord_origin": "TOPLEFT"}}, {"id": 87, "text": "RCAC effects on data movement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.2652, "t": 402.5230700000001, "r": 530.49445, "b": 411.73605, "coord_origin": "TOPLEFT"}}, {"id": 88, "text": "88", "bbox": {"l": 536.05591, "t": 402.5230700000001, "r": 547.17889, "b": 411.73605, "coord_origin": "TOPLEFT"}}, {"id": 89, "text": "6.2.1", "bbox": {"l": 151.2002, "t": 415.00296, "r": 173.38661, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}}, {"id": 90, "text": "Effects when RCAC is defined on the source table", "bbox": {"l": 178.93321, "t": 415.00296, "r": 400.16882, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}}, {"id": 91, "text": ". . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 405.71545, "t": 415.00296, "r": 530.51398, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}}, {"id": 92, "text": "88", "bbox": {"l": 536.06061, "t": 415.00296, "r": 547.15381, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}}, {"id": 93, "text": "6.2.2", "bbox": {"l": 151.2002, "t": 427.48285, "r": 173.32501, "b": 436.69583, "coord_origin": "TOPLEFT"}}, {"id": 94, "text": "Effects when RCAC is defined on the target table", "bbox": {"l": 178.85622, "t": 427.48285, "r": 395.06064, "b": 436.69583, "coord_origin": "TOPLEFT"}}, {"id": 95, "text": ". . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 400.59186, "t": 427.48285, "r": 530.57513, "b": 436.69583, "coord_origin": "TOPLEFT"}}, {"id": 96, "text": "89", "bbox": {"l": 536.10632, "t": 427.48285, "r": 547.16876, "b": 436.69583, "coord_origin": "TOPLEFT"}}, {"id": 97, "text": "6.2.3", "bbox": {"l": 151.2002, "t": 440.02249, "r": 173.38657, "b": 449.23546999999996, "coord_origin": "TOPLEFT"}}, {"id": 98, "text": "Effects when RCAC is defined on both source and target tables . . . . . . . . . . . . .", "bbox": {"l": 178.93315, "t": 440.02249, "r": 530.5033, "b": 449.23546999999996, "coord_origin": "TOPLEFT"}}, {"id": 99, "text": "90", "bbox": {"l": 536.04987, "t": 440.02249, "r": 547.14307, "b": 449.23546999999996, "coord_origin": "TOPLEFT"}}, {"id": 100, "text": "6.3", "bbox": {"l": 136.80003, "t": 452.50238, "r": 150.64833, "b": 461.71536, "coord_origin": "TOPLEFT"}}, {"id": 101, "text": "RCAC effects on joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18765, "t": 452.50238, "r": 530.59979, "b": 461.71536, "coord_origin": "TOPLEFT"}}, {"id": 102, "text": "91", "bbox": {"l": 536.1391, "t": 452.50238, "r": 547.21777, "b": 461.71536, "coord_origin": "TOPLEFT"}}, {"id": 103, "text": "6.3.1", "bbox": {"l": 151.2002, "t": 464.98227, "r": 173.57745, "b": 474.19525, "coord_origin": "TOPLEFT"}}, {"id": 104, "text": "Inner joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92", "bbox": {"l": 179.17177, "t": 464.98227, "r": 547.25958, "b": 474.19525, "coord_origin": "TOPLEFT"}}, {"id": 105, "text": "6.3.2", "bbox": {"l": 151.20016, "t": 477.52191, "r": 173.60931, "b": 486.73489, "coord_origin": "TOPLEFT"}}, {"id": 106, "text": "Outer joins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94", "bbox": {"l": 179.21159, "t": 477.52191, "r": 547.25958, "b": 486.73489, "coord_origin": "TOPLEFT"}}, {"id": 107, "text": "6.3.3", "bbox": {"l": 151.20016, "t": 490.0018, "r": 173.47958, "b": 499.21478, "coord_origin": "TOPLEFT"}}, {"id": 108, "text": "Exception joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.04944, "t": 490.0018, "r": 530.4812, "b": 499.21478, "coord_origin": "TOPLEFT"}}, {"id": 109, "text": "96", "bbox": {"l": 536.05103, "t": 490.0018, "r": 547.19073, "b": 499.21478, "coord_origin": "TOPLEFT"}}, {"id": 110, "text": "6.4", "bbox": {"l": 136.8, "t": 502.54144, "r": 150.62956, "b": 511.75443, "coord_origin": "TOPLEFT"}}, {"id": 111, "text": "Monitoring, analyzing, and debugging with RCAC", "bbox": {"l": 156.16138, "t": 502.54144, "r": 372.92725, "b": 511.75443, "coord_origin": "TOPLEFT"}}, {"id": 112, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 378.45905, "t": 502.54144, "r": 530.58417, "b": 511.75443, "coord_origin": "TOPLEFT"}}, {"id": 113, "text": "97", "bbox": {"l": 536.11597, "t": 502.54144, "r": 547.17963, "b": 511.75443, "coord_origin": "TOPLEFT"}}, {"id": 114, "text": "6.4.1", "bbox": {"l": 151.20016, "t": 515.02133, "r": 173.32509, "b": 524.23431, "coord_origin": "TOPLEFT"}}, {"id": 115, "text": "Query monitoring and analysis tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85632, "t": 515.02133, "r": 530.57709, "b": 524.23431, "coord_origin": "TOPLEFT"}}, {"id": 116, "text": "97", "bbox": {"l": 536.10834, "t": 515.02133, "r": 547.17078, "b": 524.23431, "coord_origin": "TOPLEFT"}}, {"id": 117, "text": "6.4.2", "bbox": {"l": 151.20016, "t": 527.50122, "r": 173.44958, "b": 536.7142200000001, "coord_origin": "TOPLEFT"}}, {"id": 118, "text": "Index advisor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01193, "t": 527.50122, "r": 530.53064, "b": 536.7142200000001, "coord_origin": "TOPLEFT"}}, {"id": 119, "text": "99", "bbox": {"l": 536.09302, "t": 527.50122, "r": 547.21771, "b": 536.7142200000001, "coord_origin": "TOPLEFT"}}, {"id": 120, "text": "6.4.3", "bbox": {"l": 151.20013, "t": 540.0408600000001, "r": 173.35367, "b": 549.25386, "coord_origin": "TOPLEFT"}}, {"id": 121, "text": "Metadata using catalogs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89204, "t": 540.0408600000001, "r": 525.01111, "b": 549.25386, "coord_origin": "TOPLEFT"}}, {"id": 122, "text": "100", "bbox": {"l": 530.54944, "t": 540.0408600000001, "r": 547.16461, "b": 549.25386, "coord_origin": "TOPLEFT"}}, {"id": 123, "text": "6.5", "bbox": {"l": 136.79997, "t": 552.52074, "r": 150.76207, "b": 561.73373, "coord_origin": "TOPLEFT"}}, {"id": 124, "text": "Views, materialized query tables, and query rewrite with RCAC . . . . . . . . . . . . . . . .", "bbox": {"l": 156.34691, "t": 552.52074, "r": 524.80566, "b": 561.73373, "coord_origin": "TOPLEFT"}}, {"id": 125, "text": "102", "bbox": {"l": 530.3905, "t": 552.52074, "r": 547.14502, "b": 561.73373, "coord_origin": "TOPLEFT"}}, {"id": 126, "text": "6.5.1", "bbox": {"l": 151.20013, "t": 565.00061, "r": 173.42041, "b": 574.21361, "coord_origin": "TOPLEFT"}}, {"id": 127, "text": "Views", "bbox": {"l": 178.97548, "t": 565.00061, "r": 205.62183, "b": 574.21361, "coord_origin": "TOPLEFT"}}, {"id": 128, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 211.1769, "t": 565.00061, "r": 525.03827, "b": 574.21361, "coord_origin": "TOPLEFT"}}, {"id": 129, "text": "102", "bbox": {"l": 530.59332, "t": 565.00061, "r": 547.25854, "b": 574.21361, "coord_origin": "TOPLEFT"}}, {"id": 130, "text": "6.5.2", "bbox": {"l": 151.20013, "t": 577.54025, "r": 173.51099, "b": 586.75325, "coord_origin": "TOPLEFT"}}, {"id": 131, "text": "Materialized query tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.0887, "t": 577.54025, "r": 524.85681, "b": 586.75325, "coord_origin": "TOPLEFT"}}, {"id": 132, "text": "103", "bbox": {"l": 530.43451, "t": 577.54025, "r": 547.16766, "b": 586.75325, "coord_origin": "TOPLEFT"}}, {"id": 133, "text": "6.5.3", "bbox": {"l": 151.20013, "t": 590.02013, "r": 173.41756, "b": 599.23312, "coord_origin": "TOPLEFT"}}, {"id": 134, "text": "Query rewrite", "bbox": {"l": 178.97192, "t": 590.02013, "r": 238.92101000000002, "b": 599.23312, "coord_origin": "TOPLEFT"}}, {"id": 135, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 244.47537000000003, "t": 590.02013, "r": 524.9704, "b": 599.23312, "coord_origin": "TOPLEFT"}}, {"id": 136, "text": "105", "bbox": {"l": 530.52472, "t": 590.02013, "r": 547.18781, "b": 599.23312, "coord_origin": "TOPLEFT"}}, {"id": 137, "text": "6.6", "bbox": {"l": 136.79997, "t": 602.5, "r": 150.70438, "b": 611.713, "coord_origin": "TOPLEFT"}}, {"id": 138, "text": "RCAC effects on performance and scalability. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26613, "t": 602.5, "r": 524.92279, "b": 611.713, "coord_origin": "TOPLEFT"}}, {"id": 139, "text": "105", "bbox": {"l": 530.48456, "t": 602.5, "r": 547.16986, "b": 611.713, "coord_origin": "TOPLEFT"}}, {"id": 140, "text": "6.7", "bbox": {"l": 136.79997, "t": 615.03964, "r": 150.70482, "b": 624.25264, "coord_origin": "TOPLEFT"}}, {"id": 141, "text": "Exclusive lock to implement RCAC (availability issues) . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26675, "t": 615.03964, "r": 524.87512, "b": 624.25264, "coord_origin": "TOPLEFT"}}, {"id": 142, "text": "107", "bbox": {"l": 530.43701, "t": 615.03964, "r": 547.12286, "b": 624.25264, "coord_origin": "TOPLEFT"}}, {"id": 143, "text": "6.8", "bbox": {"l": 136.79997, "t": 627.51952, "r": 150.62793, "b": 636.73251, "coord_origin": "TOPLEFT"}}, {"id": 144, "text": "Avoiding propagation of masked data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.1591, "t": 627.51952, "r": 525.047, "b": 636.73251, "coord_origin": "TOPLEFT"}}, {"id": 145, "text": "108", "bbox": {"l": 530.57819, "t": 627.51952, "r": 547.17175, "b": 636.73251, "coord_origin": "TOPLEFT"}}, {"id": 146, "text": "6.8.1", "bbox": {"l": 151.20013, "t": 639.99939, "r": 173.48119, "b": 649.21239, "coord_origin": "TOPLEFT"}}, {"id": 147, "text": "Check constraint solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.05145, "t": 639.99939, "r": 524.91864, "b": 649.21239, "coord_origin": "TOPLEFT"}}, {"id": 148, "text": "108", "bbox": {"l": 530.48889, "t": 639.99939, "r": 547.19971, "b": 649.21239, "coord_origin": "TOPLEFT"}}, {"id": 149, "text": "6.8.2", "bbox": {"l": 151.20013, "t": 652.53903, "r": 173.32486, "b": 661.75203, "coord_origin": "TOPLEFT"}}, {"id": 150, "text": "Before trigger solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85603, "t": 652.53903, "r": 525.07208, "b": 661.75203, "coord_origin": "TOPLEFT"}}, {"id": 151, "text": "109", "bbox": {"l": 530.60321, "t": 652.53903, "r": 547.19678, "b": 661.75203, "coord_origin": "TOPLEFT"}}, {"id": 152, "text": "6.9", "bbox": {"l": 136.79997, "t": 665.01891, "r": 150.70258, "b": 674.23191, "coord_origin": "TOPLEFT"}}, {"id": 153, "text": "Triggers and functions (SECURED) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26361, "t": 665.01891, "r": 524.87256, "b": 674.23191, "coord_origin": "TOPLEFT"}}, {"id": 154, "text": "109", "bbox": {"l": 530.43359, "t": 665.01891, "r": 547.11676, "b": 674.23191, "coord_origin": "TOPLEFT"}}, {"id": 155, "text": "6.9.1", "bbox": {"l": 151.20013, "t": 677.49879, "r": 173.32774, "b": 686.71179, "coord_origin": "TOPLEFT"}}, {"id": 156, "text": "Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85965, "t": 677.49879, "r": 525.13092, "b": 686.71179, "coord_origin": "TOPLEFT"}}, {"id": 157, "text": "109", "bbox": {"l": 530.66284, "t": 677.49879, "r": 547.25854, "b": 686.71179, "coord_origin": "TOPLEFT"}}, {"id": 158, "text": "6.9.2", "bbox": {"l": 151.20013, "t": 690.0384300000001, "r": 173.57503, "b": 699.251434, "coord_origin": "TOPLEFT"}}, {"id": 159, "text": "Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.16876, "t": 690.0384300000001, "r": 524.84283, "b": 699.251434, "coord_origin": "TOPLEFT"}}, {"id": 160, "text": "110", "bbox": {"l": 530.43652, "t": 690.0384300000001, "r": 547.21771, "b": 699.251434, "coord_origin": "TOPLEFT"}}, {"id": 161, "text": "6.10", "bbox": {"l": 136.79996, "t": 702.518311, "r": 156.34335, "b": 711.731316, "coord_origin": "TOPLEFT"}}, {"id": 162, "text": "RCAC is only one part of the solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 159.13527, "t": 702.518311, "r": 524.81567, "b": 711.731316, "coord_origin": "TOPLEFT"}}, {"id": 163, "text": "111", "bbox": {"l": 530.39954, "t": 702.518311, "r": 547.151, "b": 711.731316, "coord_origin": "TOPLEFT"}}, {"id": 164, "text": "Chapter 7. Row and Column Access Control management", "bbox": {"l": 136.79996, "t": 725.017952, "r": 413.01562, "b": 734.230957, "coord_origin": "TOPLEFT"}}, {"id": 165, "text": " . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 413.99973, "t": 725.017952, "r": 525.0014, "b": 734.230957, "coord_origin": "TOPLEFT"}}, {"id": 166, "text": "113", "bbox": {"l": 530.55145, "t": 725.017952, "r": 547.20172, "b": 734.230957, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.4805679321289, "t": 754.1161499023438, "r": 75.641998, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8876830339431763, "cells": [{"id": 0, "text": "iv ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 75.641998, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 90.44805145263672, "t": 754.6052856445312, "r": 331.7034606933594, "b": 763.9476318359375, "coord_origin": "TOPLEFT"}, "confidence": 0.936427891254425, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 90.599998, "t": 755.538002, "r": 331.55881, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "table", "bbox": {"l": 135.92572021484375, "t": 70.81258392333984, "r": 547.7196044921875, "b": 734.230957, "coord_origin": "TOPLEFT"}, "confidence": 0.9778977036476135, "cells": [{"id": 2, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 504.58301, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": ". . . . .", "bbox": {"l": 505.67957, "t": 71.50867000000005, "r": 530.59589, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "37", "bbox": {"l": 536.13281, "t": 71.50867000000005, "r": 547.20673, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "4.1", "bbox": {"l": 136.80002, "t": 83.50847999999996, "r": 150.64761, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Business requirements for the RCAC banking scenario . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18666, "t": 83.50847999999996, "r": 530.52008, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "38", "bbox": {"l": 536.05914, "t": 83.50847999999996, "r": 547.13721, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "4.2", "bbox": {"l": 136.80002, "t": 95.98834000000011, "r": 150.64821, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Description of the users roles and responsibilities", "bbox": {"l": 156.18748, "t": 95.98834000000011, "r": 372.67761, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 378.21689, "t": 95.98834000000011, "r": 530.547, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "39", "bbox": {"l": 536.0863, "t": 95.98834000000011, "r": 547.16486, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "4.3", "bbox": {"l": 136.80002, "t": 108.52795000000015, "r": 150.68542, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Implementation of RCAC", "bbox": {"l": 156.23959, "t": 108.52795000000015, "r": 266.7135, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 272.26767, "t": 108.52795000000015, "r": 530.53625, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "42", "bbox": {"l": 536.09039, "t": 108.52795000000015, "r": 547.19873, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "4.3.1", "bbox": {"l": 151.20018, "t": 121.00780999999995, "r": 173.32434, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Reviewing the tables that are used in this example", "bbox": {"l": 178.85538, "t": 121.00780999999995, "r": 400.57443, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": ". . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 406.10547, "t": 121.00780999999995, "r": 530.55383, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "42", "bbox": {"l": 536.0849, "t": 121.00780999999995, "r": 547.14697, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "4.3.2", "bbox": {"l": 151.20018, "t": 133.48766999999998, "r": 173.33942, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Assigning function ID QIBM_DB_SECADM to the Database Engineers group", "bbox": {"l": 178.87422, "t": 133.48766999999998, "r": 516.9256, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": ". .", "bbox": {"l": 522.46039, "t": 133.48766999999998, "r": 530.76263, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "47", "bbox": {"l": 536.29742, "t": 133.48766999999998, "r": 547.36707, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "4.3.3", "bbox": {"l": 151.20018, "t": 146.02728000000002, "r": 173.32571, "b": 155.24030000000005, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8571, "t": 146.02728000000002, "r": 530.56757, "b": 155.24030000000005, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "50", "bbox": {"l": 536.09894, "t": 146.02728000000002, "r": 547.16174, "b": 155.24030000000005, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "4.3.4", "bbox": {"l": 151.20018, "t": 158.50714000000005, "r": 173.32639, "b": 167.72015, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Creating the CUSTOMER_LOGIN_ID global variable", "bbox": {"l": 178.85794, "t": 158.50714000000005, "r": 411.62085, "b": 167.72015, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ". . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 417.1524, "t": 158.50714000000005, "r": 530.54919, "b": 167.72015, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "52", "bbox": {"l": 536.08075, "t": 158.50714000000005, "r": 547.14386, "b": 167.72015, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "4.3.5", "bbox": {"l": 151.20018, "t": 170.98699999999997, "r": 173.3559, "b": 180.20001000000002, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89482, "t": 170.98699999999997, "r": 530.53705, "b": 180.20001000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "54", "bbox": {"l": 536.07599, "t": 170.98699999999997, "r": 547.15387, "b": 180.20001000000002, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "4.3.6", "bbox": {"l": 151.20018, "t": 183.52661, "r": 173.3559, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Defining and creating column masks", "bbox": {"l": 178.89482, "t": 183.52661, "r": 339.45404, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.99295, "t": 183.52661, "r": 530.54706, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "58", "bbox": {"l": 536.086, "t": 183.52661, "r": 547.16388, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "4.3.7", "bbox": {"l": 151.20018, "t": 196.00647000000004, "r": 173.35544, "b": 205.21947999999998, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Restricting the inserting and updating of masked data . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89426, "t": 196.00647000000004, "r": 530.53931, "b": 205.21947999999998, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "60", "bbox": {"l": 536.07812, "t": 196.00647000000004, "r": 547.15576, "b": 205.21947999999998, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "4.3.8", "bbox": {"l": 151.20018, "t": 208.48632999999995, "r": 173.51157, "b": 217.69934, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Activating row and column access control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.0894, "t": 208.48632999999995, "r": 530.41339, "b": 217.69934, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "63", "bbox": {"l": 535.99127, "t": 208.48632999999995, "r": 547.14697, "b": 217.69934, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "4.3.9", "bbox": {"l": 151.20018, "t": 221.02594, "r": 173.41745, "b": 230.23895000000005, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Reviewing row permissions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97176, "t": 221.02594, "r": 530.48206, "b": 230.23895000000005, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "64", "bbox": {"l": 536.03638, "t": 221.02594, "r": 547.14502, "b": 230.23895000000005, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "4.3.10", "bbox": {"l": 151.20018, "t": 233.50580000000002, "r": 179.05151, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "Demonstrating data access with RCAC", "bbox": {"l": 181.83665, "t": 233.50580000000002, "r": 354.98581, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 360.55606, "t": 233.50580000000002, "r": 530.44922, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "66", "bbox": {"l": 536.01947, "t": 233.50580000000002, "r": 547.16003, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "4.3.11", "bbox": {"l": 151.20018, "t": 245.98566000000005, "r": 179.0511, "b": 255.19867, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Query implementation with RCAC activated . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 181.83621, "t": 245.98566000000005, "r": 530.43353, "b": 255.19867, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "75", "bbox": {"l": 536.00372, "t": 245.98566000000005, "r": 547.1441, "b": 255.19867, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "Chapter 5. RCAC and non-SQL interfaces", "bbox": {"l": 136.80002, "t": 268.48528999999996, "r": 335.23209, "b": 277.6983, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 336.1803, "t": 268.48528999999996, "r": 530.53851, "b": 277.6983, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "79", "bbox": {"l": 536.09161, "t": 268.48528999999996, "r": 547.19781, "b": 277.6983, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "5.1", "bbox": {"l": 136.80002, "t": 280.48514, "r": 150.64661, "b": 289.69812, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Unsupported interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18524, "t": 280.48514, "r": 530.56097, "b": 289.69812, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "80", "bbox": {"l": 536.09961, "t": 280.48514, "r": 547.17688, "b": 289.69812, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "5.2", "bbox": {"l": 136.80002, "t": 293.02478, "r": 150.7034, "b": 302.2377599999999, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Native query result differences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26476, "t": 293.02478, "r": 530.48578, "b": 302.2377599999999, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "80", "bbox": {"l": 536.04718, "t": 293.02478, "r": 547.16986, "b": 302.2377599999999, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "5.3", "bbox": {"l": 136.80002, "t": 305.50467, "r": 150.68428, "b": 314.71765, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "Accidental updates with masked values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.23799, "t": 305.50467, "r": 530.49377, "b": 314.71765, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "81", "bbox": {"l": 536.04749, "t": 305.50467, "r": 547.15491, "b": 314.71765, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "5.4", "bbox": {"l": 136.80002, "t": 317.98456, "r": 150.62888, "b": 327.19754, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "System CL commands considerations", "bbox": {"l": 156.16042, "t": 317.98456, "r": 323.13144, "b": 327.19754, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 328.66299, "t": 317.98456, "r": 530.56433, "b": 327.19754, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "82", "bbox": {"l": 536.09583, "t": 317.98456, "r": 547.15894, "b": 327.19754, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "5.4.1", "bbox": {"l": 151.20018, "t": 330.5242, "r": 173.4519, "b": 339.73718, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "Create Duplicate Object (CRTDUPOBJ) command . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01483, "t": 330.5242, "r": 530.4599, "b": 339.73718, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "82", "bbox": {"l": 536.02283, "t": 330.5242, "r": 547.14868, "b": 339.73718, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "5.4.2", "bbox": {"l": 151.20018, "t": 343.0040900000001, "r": 173.35596, "b": 352.21707, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "Copy File (CPYF) command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8949, "t": 343.0040900000001, "r": 530.53815, "b": 352.21707, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "82", "bbox": {"l": 536.07709, "t": 343.0040900000001, "r": 547.15497, "b": 352.21707, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "5.4.3", "bbox": {"l": 151.20018, "t": 355.48398, "r": 173.451, "b": 364.69696000000005, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "Copy Library (CPYLIB) command. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01372, "t": 355.48398, "r": 530.49475, "b": 364.69696000000005, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "83", "bbox": {"l": 536.05743, "t": 355.48398, "r": 547.18286, "b": 364.69696000000005, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "Chapter 6. Additional considerations", "bbox": {"l": 136.80002, "t": 377.98361, "r": 313.86292, "b": 387.19659, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 313.98047, "t": 377.98361, "r": 530.53851, "b": 387.19659, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "85", "bbox": {"l": 536.09131, "t": 377.98361, "r": 547.19684, "b": 387.19659, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "6.1", "bbox": {"l": 136.80003, "t": 389.98343, "r": 150.68416, "b": 399.19641, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "Timing of column masking", "bbox": {"l": 156.23781, "t": 389.98343, "r": 272.24521, "b": 399.19641, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 277.79886, "t": 389.98343, "r": 530.49005, "b": 399.19641, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "86", "bbox": {"l": 536.0437, "t": 389.98343, "r": 547.151, "b": 399.19641, "coord_origin": "TOPLEFT"}}, {"id": 86, "text": "6.2", "bbox": {"l": 136.80003, "t": 402.5230700000001, "r": 150.70372, "b": 411.73605, "coord_origin": "TOPLEFT"}}, {"id": 87, "text": "RCAC effects on data movement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.2652, "t": 402.5230700000001, "r": 530.49445, "b": 411.73605, "coord_origin": "TOPLEFT"}}, {"id": 88, "text": "88", "bbox": {"l": 536.05591, "t": 402.5230700000001, "r": 547.17889, "b": 411.73605, "coord_origin": "TOPLEFT"}}, {"id": 89, "text": "6.2.1", "bbox": {"l": 151.2002, "t": 415.00296, "r": 173.38661, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}}, {"id": 90, "text": "Effects when RCAC is defined on the source table", "bbox": {"l": 178.93321, "t": 415.00296, "r": 400.16882, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}}, {"id": 91, "text": ". . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 405.71545, "t": 415.00296, "r": 530.51398, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}}, {"id": 92, "text": "88", "bbox": {"l": 536.06061, "t": 415.00296, "r": 547.15381, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}}, {"id": 93, "text": "6.2.2", "bbox": {"l": 151.2002, "t": 427.48285, "r": 173.32501, "b": 436.69583, "coord_origin": "TOPLEFT"}}, {"id": 94, "text": "Effects when RCAC is defined on the target table", "bbox": {"l": 178.85622, "t": 427.48285, "r": 395.06064, "b": 436.69583, "coord_origin": "TOPLEFT"}}, {"id": 95, "text": ". . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 400.59186, "t": 427.48285, "r": 530.57513, "b": 436.69583, "coord_origin": "TOPLEFT"}}, {"id": 96, "text": "89", "bbox": {"l": 536.10632, "t": 427.48285, "r": 547.16876, "b": 436.69583, "coord_origin": "TOPLEFT"}}, {"id": 97, "text": "6.2.3", "bbox": {"l": 151.2002, "t": 440.02249, "r": 173.38657, "b": 449.23546999999996, "coord_origin": "TOPLEFT"}}, {"id": 98, "text": "Effects when RCAC is defined on both source and target tables . . . . . . . . . . . . .", "bbox": {"l": 178.93315, "t": 440.02249, "r": 530.5033, "b": 449.23546999999996, "coord_origin": "TOPLEFT"}}, {"id": 99, "text": "90", "bbox": {"l": 536.04987, "t": 440.02249, "r": 547.14307, "b": 449.23546999999996, "coord_origin": "TOPLEFT"}}, {"id": 100, "text": "6.3", "bbox": {"l": 136.80003, "t": 452.50238, "r": 150.64833, "b": 461.71536, "coord_origin": "TOPLEFT"}}, {"id": 101, "text": "RCAC effects on joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18765, "t": 452.50238, "r": 530.59979, "b": 461.71536, "coord_origin": "TOPLEFT"}}, {"id": 102, "text": "91", "bbox": {"l": 536.1391, "t": 452.50238, "r": 547.21777, "b": 461.71536, "coord_origin": "TOPLEFT"}}, {"id": 103, "text": "6.3.1", "bbox": {"l": 151.2002, "t": 464.98227, "r": 173.57745, "b": 474.19525, "coord_origin": "TOPLEFT"}}, {"id": 104, "text": "Inner joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92", "bbox": {"l": 179.17177, "t": 464.98227, "r": 547.25958, "b": 474.19525, "coord_origin": "TOPLEFT"}}, {"id": 105, "text": "6.3.2", "bbox": {"l": 151.20016, "t": 477.52191, "r": 173.60931, "b": 486.73489, "coord_origin": "TOPLEFT"}}, {"id": 106, "text": "Outer joins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94", "bbox": {"l": 179.21159, "t": 477.52191, "r": 547.25958, "b": 486.73489, "coord_origin": "TOPLEFT"}}, {"id": 107, "text": "6.3.3", "bbox": {"l": 151.20016, "t": 490.0018, "r": 173.47958, "b": 499.21478, "coord_origin": "TOPLEFT"}}, {"id": 108, "text": "Exception joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.04944, "t": 490.0018, "r": 530.4812, "b": 499.21478, "coord_origin": "TOPLEFT"}}, {"id": 109, "text": "96", "bbox": {"l": 536.05103, "t": 490.0018, "r": 547.19073, "b": 499.21478, "coord_origin": "TOPLEFT"}}, {"id": 110, "text": "6.4", "bbox": {"l": 136.8, "t": 502.54144, "r": 150.62956, "b": 511.75443, "coord_origin": "TOPLEFT"}}, {"id": 111, "text": "Monitoring, analyzing, and debugging with RCAC", "bbox": {"l": 156.16138, "t": 502.54144, "r": 372.92725, "b": 511.75443, "coord_origin": "TOPLEFT"}}, {"id": 112, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 378.45905, "t": 502.54144, "r": 530.58417, "b": 511.75443, "coord_origin": "TOPLEFT"}}, {"id": 113, "text": "97", "bbox": {"l": 536.11597, "t": 502.54144, "r": 547.17963, "b": 511.75443, "coord_origin": "TOPLEFT"}}, {"id": 114, "text": "6.4.1", "bbox": {"l": 151.20016, "t": 515.02133, "r": 173.32509, "b": 524.23431, "coord_origin": "TOPLEFT"}}, {"id": 115, "text": "Query monitoring and analysis tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85632, "t": 515.02133, "r": 530.57709, "b": 524.23431, "coord_origin": "TOPLEFT"}}, {"id": 116, "text": "97", "bbox": {"l": 536.10834, "t": 515.02133, "r": 547.17078, "b": 524.23431, "coord_origin": "TOPLEFT"}}, {"id": 117, "text": "6.4.2", "bbox": {"l": 151.20016, "t": 527.50122, "r": 173.44958, "b": 536.7142200000001, "coord_origin": "TOPLEFT"}}, {"id": 118, "text": "Index advisor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01193, "t": 527.50122, "r": 530.53064, "b": 536.7142200000001, "coord_origin": "TOPLEFT"}}, {"id": 119, "text": "99", "bbox": {"l": 536.09302, "t": 527.50122, "r": 547.21771, "b": 536.7142200000001, "coord_origin": "TOPLEFT"}}, {"id": 120, "text": "6.4.3", "bbox": {"l": 151.20013, "t": 540.0408600000001, "r": 173.35367, "b": 549.25386, "coord_origin": "TOPLEFT"}}, {"id": 121, "text": "Metadata using catalogs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89204, "t": 540.0408600000001, "r": 525.01111, "b": 549.25386, "coord_origin": "TOPLEFT"}}, {"id": 122, "text": "100", "bbox": {"l": 530.54944, "t": 540.0408600000001, "r": 547.16461, "b": 549.25386, "coord_origin": "TOPLEFT"}}, {"id": 123, "text": "6.5", "bbox": {"l": 136.79997, "t": 552.52074, "r": 150.76207, "b": 561.73373, "coord_origin": "TOPLEFT"}}, {"id": 124, "text": "Views, materialized query tables, and query rewrite with RCAC . . . . . . . . . . . . . . . .", "bbox": {"l": 156.34691, "t": 552.52074, "r": 524.80566, "b": 561.73373, "coord_origin": "TOPLEFT"}}, {"id": 125, "text": "102", "bbox": {"l": 530.3905, "t": 552.52074, "r": 547.14502, "b": 561.73373, "coord_origin": "TOPLEFT"}}, {"id": 126, "text": "6.5.1", "bbox": {"l": 151.20013, "t": 565.00061, "r": 173.42041, "b": 574.21361, "coord_origin": "TOPLEFT"}}, {"id": 127, "text": "Views", "bbox": {"l": 178.97548, "t": 565.00061, "r": 205.62183, "b": 574.21361, "coord_origin": "TOPLEFT"}}, {"id": 128, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 211.1769, "t": 565.00061, "r": 525.03827, "b": 574.21361, "coord_origin": "TOPLEFT"}}, {"id": 129, "text": "102", "bbox": {"l": 530.59332, "t": 565.00061, "r": 547.25854, "b": 574.21361, "coord_origin": "TOPLEFT"}}, {"id": 130, "text": "6.5.2", "bbox": {"l": 151.20013, "t": 577.54025, "r": 173.51099, "b": 586.75325, "coord_origin": "TOPLEFT"}}, {"id": 131, "text": "Materialized query tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.0887, "t": 577.54025, "r": 524.85681, "b": 586.75325, "coord_origin": "TOPLEFT"}}, {"id": 132, "text": "103", "bbox": {"l": 530.43451, "t": 577.54025, "r": 547.16766, "b": 586.75325, "coord_origin": "TOPLEFT"}}, {"id": 133, "text": "6.5.3", "bbox": {"l": 151.20013, "t": 590.02013, "r": 173.41756, "b": 599.23312, "coord_origin": "TOPLEFT"}}, {"id": 134, "text": "Query rewrite", "bbox": {"l": 178.97192, "t": 590.02013, "r": 238.92101000000002, "b": 599.23312, "coord_origin": "TOPLEFT"}}, {"id": 135, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 244.47537000000003, "t": 590.02013, "r": 524.9704, "b": 599.23312, "coord_origin": "TOPLEFT"}}, {"id": 136, "text": "105", "bbox": {"l": 530.52472, "t": 590.02013, "r": 547.18781, "b": 599.23312, "coord_origin": "TOPLEFT"}}, {"id": 137, "text": "6.6", "bbox": {"l": 136.79997, "t": 602.5, "r": 150.70438, "b": 611.713, "coord_origin": "TOPLEFT"}}, {"id": 138, "text": "RCAC effects on performance and scalability. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26613, "t": 602.5, "r": 524.92279, "b": 611.713, "coord_origin": "TOPLEFT"}}, {"id": 139, "text": "105", "bbox": {"l": 530.48456, "t": 602.5, "r": 547.16986, "b": 611.713, "coord_origin": "TOPLEFT"}}, {"id": 140, "text": "6.7", "bbox": {"l": 136.79997, "t": 615.03964, "r": 150.70482, "b": 624.25264, "coord_origin": "TOPLEFT"}}, {"id": 141, "text": "Exclusive lock to implement RCAC (availability issues) . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26675, "t": 615.03964, "r": 524.87512, "b": 624.25264, "coord_origin": "TOPLEFT"}}, {"id": 142, "text": "107", "bbox": {"l": 530.43701, "t": 615.03964, "r": 547.12286, "b": 624.25264, "coord_origin": "TOPLEFT"}}, {"id": 143, "text": "6.8", "bbox": {"l": 136.79997, "t": 627.51952, "r": 150.62793, "b": 636.73251, "coord_origin": "TOPLEFT"}}, {"id": 144, "text": "Avoiding propagation of masked data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.1591, "t": 627.51952, "r": 525.047, "b": 636.73251, "coord_origin": "TOPLEFT"}}, {"id": 145, "text": "108", "bbox": {"l": 530.57819, "t": 627.51952, "r": 547.17175, "b": 636.73251, "coord_origin": "TOPLEFT"}}, {"id": 146, "text": "6.8.1", "bbox": {"l": 151.20013, "t": 639.99939, "r": 173.48119, "b": 649.21239, "coord_origin": "TOPLEFT"}}, {"id": 147, "text": "Check constraint solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.05145, "t": 639.99939, "r": 524.91864, "b": 649.21239, "coord_origin": "TOPLEFT"}}, {"id": 148, "text": "108", "bbox": {"l": 530.48889, "t": 639.99939, "r": 547.19971, "b": 649.21239, "coord_origin": "TOPLEFT"}}, {"id": 149, "text": "6.8.2", "bbox": {"l": 151.20013, "t": 652.53903, "r": 173.32486, "b": 661.75203, "coord_origin": "TOPLEFT"}}, {"id": 150, "text": "Before trigger solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85603, "t": 652.53903, "r": 525.07208, "b": 661.75203, "coord_origin": "TOPLEFT"}}, {"id": 151, "text": "109", "bbox": {"l": 530.60321, "t": 652.53903, "r": 547.19678, "b": 661.75203, "coord_origin": "TOPLEFT"}}, {"id": 152, "text": "6.9", "bbox": {"l": 136.79997, "t": 665.01891, "r": 150.70258, "b": 674.23191, "coord_origin": "TOPLEFT"}}, {"id": 153, "text": "Triggers and functions (SECURED) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26361, "t": 665.01891, "r": 524.87256, "b": 674.23191, "coord_origin": "TOPLEFT"}}, {"id": 154, "text": "109", "bbox": {"l": 530.43359, "t": 665.01891, "r": 547.11676, "b": 674.23191, "coord_origin": "TOPLEFT"}}, {"id": 155, "text": "6.9.1", "bbox": {"l": 151.20013, "t": 677.49879, "r": 173.32774, "b": 686.71179, "coord_origin": "TOPLEFT"}}, {"id": 156, "text": "Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85965, "t": 677.49879, "r": 525.13092, "b": 686.71179, "coord_origin": "TOPLEFT"}}, {"id": 157, "text": "109", "bbox": {"l": 530.66284, "t": 677.49879, "r": 547.25854, "b": 686.71179, "coord_origin": "TOPLEFT"}}, {"id": 158, "text": "6.9.2", "bbox": {"l": 151.20013, "t": 690.0384300000001, "r": 173.57503, "b": 699.251434, "coord_origin": "TOPLEFT"}}, {"id": 159, "text": "Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.16876, "t": 690.0384300000001, "r": 524.84283, "b": 699.251434, "coord_origin": "TOPLEFT"}}, {"id": 160, "text": "110", "bbox": {"l": 530.43652, "t": 690.0384300000001, "r": 547.21771, "b": 699.251434, "coord_origin": "TOPLEFT"}}, {"id": 161, "text": "6.10", "bbox": {"l": 136.79996, "t": 702.518311, "r": 156.34335, "b": 711.731316, "coord_origin": "TOPLEFT"}}, {"id": 162, "text": "RCAC is only one part of the solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 159.13527, "t": 702.518311, "r": 524.81567, "b": 711.731316, "coord_origin": "TOPLEFT"}}, {"id": 163, "text": "111", "bbox": {"l": 530.39954, "t": 702.518311, "r": 547.151, "b": 711.731316, "coord_origin": "TOPLEFT"}}, {"id": 164, "text": "Chapter 7. Row and Column Access Control management", "bbox": {"l": 136.79996, "t": 725.017952, "r": 413.01562, "b": 734.230957, "coord_origin": "TOPLEFT"}}, {"id": 165, "text": " . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 413.99973, "t": 725.017952, "r": 525.0014, "b": 734.230957, "coord_origin": "TOPLEFT"}}, {"id": 166, "text": "113", "bbox": {"l": 530.55145, "t": 725.017952, "r": 547.20172, "b": 734.230957, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {"2": {"label": "table", "id": 2, "page_no": 5, "cluster": {"id": 2, "label": "table", "bbox": {"l": 135.92572021484375, "t": 70.81258392333984, "r": 547.7196044921875, "b": 734.230957, "coord_origin": "TOPLEFT"}, "confidence": 0.9778977036476135, "cells": [{"id": 2, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 504.58301, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": ". . . . .", "bbox": {"l": 505.67957, "t": 71.50867000000005, "r": 530.59589, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "37", "bbox": {"l": 536.13281, "t": 71.50867000000005, "r": 547.20673, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "4.1", "bbox": {"l": 136.80002, "t": 83.50847999999996, "r": 150.64761, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Business requirements for the RCAC banking scenario . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18666, "t": 83.50847999999996, "r": 530.52008, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "38", "bbox": {"l": 536.05914, "t": 83.50847999999996, "r": 547.13721, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "4.2", "bbox": {"l": 136.80002, "t": 95.98834000000011, "r": 150.64821, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Description of the users roles and responsibilities", "bbox": {"l": 156.18748, "t": 95.98834000000011, "r": 372.67761, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 378.21689, "t": 95.98834000000011, "r": 530.547, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "39", "bbox": {"l": 536.0863, "t": 95.98834000000011, "r": 547.16486, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "4.3", "bbox": {"l": 136.80002, "t": 108.52795000000015, "r": 150.68542, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Implementation of RCAC", "bbox": {"l": 156.23959, "t": 108.52795000000015, "r": 266.7135, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 272.26767, "t": 108.52795000000015, "r": 530.53625, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "42", "bbox": {"l": 536.09039, "t": 108.52795000000015, "r": 547.19873, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "4.3.1", "bbox": {"l": 151.20018, "t": 121.00780999999995, "r": 173.32434, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Reviewing the tables that are used in this example", "bbox": {"l": 178.85538, "t": 121.00780999999995, "r": 400.57443, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": ". . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 406.10547, "t": 121.00780999999995, "r": 530.55383, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "42", "bbox": {"l": 536.0849, "t": 121.00780999999995, "r": 547.14697, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "4.3.2", "bbox": {"l": 151.20018, "t": 133.48766999999998, "r": 173.33942, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Assigning function ID QIBM_DB_SECADM to the Database Engineers group", "bbox": {"l": 178.87422, "t": 133.48766999999998, "r": 516.9256, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": ". .", "bbox": {"l": 522.46039, "t": 133.48766999999998, "r": 530.76263, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "47", "bbox": {"l": 536.29742, "t": 133.48766999999998, "r": 547.36707, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "4.3.3", "bbox": {"l": 151.20018, "t": 146.02728000000002, "r": 173.32571, "b": 155.24030000000005, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8571, "t": 146.02728000000002, "r": 530.56757, "b": 155.24030000000005, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "50", "bbox": {"l": 536.09894, "t": 146.02728000000002, "r": 547.16174, "b": 155.24030000000005, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "4.3.4", "bbox": {"l": 151.20018, "t": 158.50714000000005, "r": 173.32639, "b": 167.72015, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Creating the CUSTOMER_LOGIN_ID global variable", "bbox": {"l": 178.85794, "t": 158.50714000000005, "r": 411.62085, "b": 167.72015, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ". . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 417.1524, "t": 158.50714000000005, "r": 530.54919, "b": 167.72015, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "52", "bbox": {"l": 536.08075, "t": 158.50714000000005, "r": 547.14386, "b": 167.72015, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "4.3.5", "bbox": {"l": 151.20018, "t": 170.98699999999997, "r": 173.3559, "b": 180.20001000000002, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89482, "t": 170.98699999999997, "r": 530.53705, "b": 180.20001000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "54", "bbox": {"l": 536.07599, "t": 170.98699999999997, "r": 547.15387, "b": 180.20001000000002, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "4.3.6", "bbox": {"l": 151.20018, "t": 183.52661, "r": 173.3559, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Defining and creating column masks", "bbox": {"l": 178.89482, "t": 183.52661, "r": 339.45404, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.99295, "t": 183.52661, "r": 530.54706, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "58", "bbox": {"l": 536.086, "t": 183.52661, "r": 547.16388, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "4.3.7", "bbox": {"l": 151.20018, "t": 196.00647000000004, "r": 173.35544, "b": 205.21947999999998, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Restricting the inserting and updating of masked data . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89426, "t": 196.00647000000004, "r": 530.53931, "b": 205.21947999999998, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "60", "bbox": {"l": 536.07812, "t": 196.00647000000004, "r": 547.15576, "b": 205.21947999999998, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "4.3.8", "bbox": {"l": 151.20018, "t": 208.48632999999995, "r": 173.51157, "b": 217.69934, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Activating row and column access control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.0894, "t": 208.48632999999995, "r": 530.41339, "b": 217.69934, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "63", "bbox": {"l": 535.99127, "t": 208.48632999999995, "r": 547.14697, "b": 217.69934, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "4.3.9", "bbox": {"l": 151.20018, "t": 221.02594, "r": 173.41745, "b": 230.23895000000005, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Reviewing row permissions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97176, "t": 221.02594, "r": 530.48206, "b": 230.23895000000005, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "64", "bbox": {"l": 536.03638, "t": 221.02594, "r": 547.14502, "b": 230.23895000000005, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "4.3.10", "bbox": {"l": 151.20018, "t": 233.50580000000002, "r": 179.05151, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "Demonstrating data access with RCAC", "bbox": {"l": 181.83665, "t": 233.50580000000002, "r": 354.98581, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 360.55606, "t": 233.50580000000002, "r": 530.44922, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "66", "bbox": {"l": 536.01947, "t": 233.50580000000002, "r": 547.16003, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "4.3.11", "bbox": {"l": 151.20018, "t": 245.98566000000005, "r": 179.0511, "b": 255.19867, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Query implementation with RCAC activated . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 181.83621, "t": 245.98566000000005, "r": 530.43353, "b": 255.19867, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "75", "bbox": {"l": 536.00372, "t": 245.98566000000005, "r": 547.1441, "b": 255.19867, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "Chapter 5. RCAC and non-SQL interfaces", "bbox": {"l": 136.80002, "t": 268.48528999999996, "r": 335.23209, "b": 277.6983, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 336.1803, "t": 268.48528999999996, "r": 530.53851, "b": 277.6983, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "79", "bbox": {"l": 536.09161, "t": 268.48528999999996, "r": 547.19781, "b": 277.6983, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "5.1", "bbox": {"l": 136.80002, "t": 280.48514, "r": 150.64661, "b": 289.69812, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Unsupported interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18524, "t": 280.48514, "r": 530.56097, "b": 289.69812, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "80", "bbox": {"l": 536.09961, "t": 280.48514, "r": 547.17688, "b": 289.69812, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "5.2", "bbox": {"l": 136.80002, "t": 293.02478, "r": 150.7034, "b": 302.2377599999999, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Native query result differences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26476, "t": 293.02478, "r": 530.48578, "b": 302.2377599999999, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "80", "bbox": {"l": 536.04718, "t": 293.02478, "r": 547.16986, "b": 302.2377599999999, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "5.3", "bbox": {"l": 136.80002, "t": 305.50467, "r": 150.68428, "b": 314.71765, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "Accidental updates with masked values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.23799, "t": 305.50467, "r": 530.49377, "b": 314.71765, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "81", "bbox": {"l": 536.04749, "t": 305.50467, "r": 547.15491, "b": 314.71765, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "5.4", "bbox": {"l": 136.80002, "t": 317.98456, "r": 150.62888, "b": 327.19754, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "System CL commands considerations", "bbox": {"l": 156.16042, "t": 317.98456, "r": 323.13144, "b": 327.19754, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 328.66299, "t": 317.98456, "r": 530.56433, "b": 327.19754, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "82", "bbox": {"l": 536.09583, "t": 317.98456, "r": 547.15894, "b": 327.19754, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "5.4.1", "bbox": {"l": 151.20018, "t": 330.5242, "r": 173.4519, "b": 339.73718, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "Create Duplicate Object (CRTDUPOBJ) command . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01483, "t": 330.5242, "r": 530.4599, "b": 339.73718, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "82", "bbox": {"l": 536.02283, "t": 330.5242, "r": 547.14868, "b": 339.73718, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "5.4.2", "bbox": {"l": 151.20018, "t": 343.0040900000001, "r": 173.35596, "b": 352.21707, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "Copy File (CPYF) command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8949, "t": 343.0040900000001, "r": 530.53815, "b": 352.21707, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "82", "bbox": {"l": 536.07709, "t": 343.0040900000001, "r": 547.15497, "b": 352.21707, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "5.4.3", "bbox": {"l": 151.20018, "t": 355.48398, "r": 173.451, "b": 364.69696000000005, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "Copy Library (CPYLIB) command. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01372, "t": 355.48398, "r": 530.49475, "b": 364.69696000000005, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "83", "bbox": {"l": 536.05743, "t": 355.48398, "r": 547.18286, "b": 364.69696000000005, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "Chapter 6. Additional considerations", "bbox": {"l": 136.80002, "t": 377.98361, "r": 313.86292, "b": 387.19659, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 313.98047, "t": 377.98361, "r": 530.53851, "b": 387.19659, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "85", "bbox": {"l": 536.09131, "t": 377.98361, "r": 547.19684, "b": 387.19659, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "6.1", "bbox": {"l": 136.80003, "t": 389.98343, "r": 150.68416, "b": 399.19641, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "Timing of column masking", "bbox": {"l": 156.23781, "t": 389.98343, "r": 272.24521, "b": 399.19641, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 277.79886, "t": 389.98343, "r": 530.49005, "b": 399.19641, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "86", "bbox": {"l": 536.0437, "t": 389.98343, "r": 547.151, "b": 399.19641, "coord_origin": "TOPLEFT"}}, {"id": 86, "text": "6.2", "bbox": {"l": 136.80003, "t": 402.5230700000001, "r": 150.70372, "b": 411.73605, "coord_origin": "TOPLEFT"}}, {"id": 87, "text": "RCAC effects on data movement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.2652, "t": 402.5230700000001, "r": 530.49445, "b": 411.73605, "coord_origin": "TOPLEFT"}}, {"id": 88, "text": "88", "bbox": {"l": 536.05591, "t": 402.5230700000001, "r": 547.17889, "b": 411.73605, "coord_origin": "TOPLEFT"}}, {"id": 89, "text": "6.2.1", "bbox": {"l": 151.2002, "t": 415.00296, "r": 173.38661, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}}, {"id": 90, "text": "Effects when RCAC is defined on the source table", "bbox": {"l": 178.93321, "t": 415.00296, "r": 400.16882, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}}, {"id": 91, "text": ". . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 405.71545, "t": 415.00296, "r": 530.51398, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}}, {"id": 92, "text": "88", "bbox": {"l": 536.06061, "t": 415.00296, "r": 547.15381, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}}, {"id": 93, "text": "6.2.2", "bbox": {"l": 151.2002, "t": 427.48285, "r": 173.32501, "b": 436.69583, "coord_origin": "TOPLEFT"}}, {"id": 94, "text": "Effects when RCAC is defined on the target table", "bbox": {"l": 178.85622, "t": 427.48285, "r": 395.06064, "b": 436.69583, "coord_origin": "TOPLEFT"}}, {"id": 95, "text": ". . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 400.59186, "t": 427.48285, "r": 530.57513, "b": 436.69583, "coord_origin": "TOPLEFT"}}, {"id": 96, "text": "89", "bbox": {"l": 536.10632, "t": 427.48285, "r": 547.16876, "b": 436.69583, "coord_origin": "TOPLEFT"}}, {"id": 97, "text": "6.2.3", "bbox": {"l": 151.2002, "t": 440.02249, "r": 173.38657, "b": 449.23546999999996, "coord_origin": "TOPLEFT"}}, {"id": 98, "text": "Effects when RCAC is defined on both source and target tables . . . . . . . . . . . . .", "bbox": {"l": 178.93315, "t": 440.02249, "r": 530.5033, "b": 449.23546999999996, "coord_origin": "TOPLEFT"}}, {"id": 99, "text": "90", "bbox": {"l": 536.04987, "t": 440.02249, "r": 547.14307, "b": 449.23546999999996, "coord_origin": "TOPLEFT"}}, {"id": 100, "text": "6.3", "bbox": {"l": 136.80003, "t": 452.50238, "r": 150.64833, "b": 461.71536, "coord_origin": "TOPLEFT"}}, {"id": 101, "text": "RCAC effects on joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18765, "t": 452.50238, "r": 530.59979, "b": 461.71536, "coord_origin": "TOPLEFT"}}, {"id": 102, "text": "91", "bbox": {"l": 536.1391, "t": 452.50238, "r": 547.21777, "b": 461.71536, "coord_origin": "TOPLEFT"}}, {"id": 103, "text": "6.3.1", "bbox": {"l": 151.2002, "t": 464.98227, "r": 173.57745, "b": 474.19525, "coord_origin": "TOPLEFT"}}, {"id": 104, "text": "Inner joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92", "bbox": {"l": 179.17177, "t": 464.98227, "r": 547.25958, "b": 474.19525, "coord_origin": "TOPLEFT"}}, {"id": 105, "text": "6.3.2", "bbox": {"l": 151.20016, "t": 477.52191, "r": 173.60931, "b": 486.73489, "coord_origin": "TOPLEFT"}}, {"id": 106, "text": "Outer joins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94", "bbox": {"l": 179.21159, "t": 477.52191, "r": 547.25958, "b": 486.73489, "coord_origin": "TOPLEFT"}}, {"id": 107, "text": "6.3.3", "bbox": {"l": 151.20016, "t": 490.0018, "r": 173.47958, "b": 499.21478, "coord_origin": "TOPLEFT"}}, {"id": 108, "text": "Exception joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.04944, "t": 490.0018, "r": 530.4812, "b": 499.21478, "coord_origin": "TOPLEFT"}}, {"id": 109, "text": "96", "bbox": {"l": 536.05103, "t": 490.0018, "r": 547.19073, "b": 499.21478, "coord_origin": "TOPLEFT"}}, {"id": 110, "text": "6.4", "bbox": {"l": 136.8, "t": 502.54144, "r": 150.62956, "b": 511.75443, "coord_origin": "TOPLEFT"}}, {"id": 111, "text": "Monitoring, analyzing, and debugging with RCAC", "bbox": {"l": 156.16138, "t": 502.54144, "r": 372.92725, "b": 511.75443, "coord_origin": "TOPLEFT"}}, {"id": 112, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 378.45905, "t": 502.54144, "r": 530.58417, "b": 511.75443, "coord_origin": "TOPLEFT"}}, {"id": 113, "text": "97", "bbox": {"l": 536.11597, "t": 502.54144, "r": 547.17963, "b": 511.75443, "coord_origin": "TOPLEFT"}}, {"id": 114, "text": "6.4.1", "bbox": {"l": 151.20016, "t": 515.02133, "r": 173.32509, "b": 524.23431, "coord_origin": "TOPLEFT"}}, {"id": 115, "text": "Query monitoring and analysis tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85632, "t": 515.02133, "r": 530.57709, "b": 524.23431, "coord_origin": "TOPLEFT"}}, {"id": 116, "text": "97", "bbox": {"l": 536.10834, "t": 515.02133, "r": 547.17078, "b": 524.23431, "coord_origin": "TOPLEFT"}}, {"id": 117, "text": "6.4.2", "bbox": {"l": 151.20016, "t": 527.50122, "r": 173.44958, "b": 536.7142200000001, "coord_origin": "TOPLEFT"}}, {"id": 118, "text": "Index advisor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01193, "t": 527.50122, "r": 530.53064, "b": 536.7142200000001, "coord_origin": "TOPLEFT"}}, {"id": 119, "text": "99", "bbox": {"l": 536.09302, "t": 527.50122, "r": 547.21771, "b": 536.7142200000001, "coord_origin": "TOPLEFT"}}, {"id": 120, "text": "6.4.3", "bbox": {"l": 151.20013, "t": 540.0408600000001, "r": 173.35367, "b": 549.25386, "coord_origin": "TOPLEFT"}}, {"id": 121, "text": "Metadata using catalogs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89204, "t": 540.0408600000001, "r": 525.01111, "b": 549.25386, "coord_origin": "TOPLEFT"}}, {"id": 122, "text": "100", "bbox": {"l": 530.54944, "t": 540.0408600000001, "r": 547.16461, "b": 549.25386, "coord_origin": "TOPLEFT"}}, {"id": 123, "text": "6.5", "bbox": {"l": 136.79997, "t": 552.52074, "r": 150.76207, "b": 561.73373, "coord_origin": "TOPLEFT"}}, {"id": 124, "text": "Views, materialized query tables, and query rewrite with RCAC . . . . . . . . . . . . . . . .", "bbox": {"l": 156.34691, "t": 552.52074, "r": 524.80566, "b": 561.73373, "coord_origin": "TOPLEFT"}}, {"id": 125, "text": "102", "bbox": {"l": 530.3905, "t": 552.52074, "r": 547.14502, "b": 561.73373, "coord_origin": "TOPLEFT"}}, {"id": 126, "text": "6.5.1", "bbox": {"l": 151.20013, "t": 565.00061, "r": 173.42041, "b": 574.21361, "coord_origin": "TOPLEFT"}}, {"id": 127, "text": "Views", "bbox": {"l": 178.97548, "t": 565.00061, "r": 205.62183, "b": 574.21361, "coord_origin": "TOPLEFT"}}, {"id": 128, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 211.1769, "t": 565.00061, "r": 525.03827, "b": 574.21361, "coord_origin": "TOPLEFT"}}, {"id": 129, "text": "102", "bbox": {"l": 530.59332, "t": 565.00061, "r": 547.25854, "b": 574.21361, "coord_origin": "TOPLEFT"}}, {"id": 130, "text": "6.5.2", "bbox": {"l": 151.20013, "t": 577.54025, "r": 173.51099, "b": 586.75325, "coord_origin": "TOPLEFT"}}, {"id": 131, "text": "Materialized query tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.0887, "t": 577.54025, "r": 524.85681, "b": 586.75325, "coord_origin": "TOPLEFT"}}, {"id": 132, "text": "103", "bbox": {"l": 530.43451, "t": 577.54025, "r": 547.16766, "b": 586.75325, "coord_origin": "TOPLEFT"}}, {"id": 133, "text": "6.5.3", "bbox": {"l": 151.20013, "t": 590.02013, "r": 173.41756, "b": 599.23312, "coord_origin": "TOPLEFT"}}, {"id": 134, "text": "Query rewrite", "bbox": {"l": 178.97192, "t": 590.02013, "r": 238.92101000000002, "b": 599.23312, "coord_origin": "TOPLEFT"}}, {"id": 135, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 244.47537000000003, "t": 590.02013, "r": 524.9704, "b": 599.23312, "coord_origin": "TOPLEFT"}}, {"id": 136, "text": "105", "bbox": {"l": 530.52472, "t": 590.02013, "r": 547.18781, "b": 599.23312, "coord_origin": "TOPLEFT"}}, {"id": 137, "text": "6.6", "bbox": {"l": 136.79997, "t": 602.5, "r": 150.70438, "b": 611.713, "coord_origin": "TOPLEFT"}}, {"id": 138, "text": "RCAC effects on performance and scalability. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26613, "t": 602.5, "r": 524.92279, "b": 611.713, "coord_origin": "TOPLEFT"}}, {"id": 139, "text": "105", "bbox": {"l": 530.48456, "t": 602.5, "r": 547.16986, "b": 611.713, "coord_origin": "TOPLEFT"}}, {"id": 140, "text": "6.7", "bbox": {"l": 136.79997, "t": 615.03964, "r": 150.70482, "b": 624.25264, "coord_origin": "TOPLEFT"}}, {"id": 141, "text": "Exclusive lock to implement RCAC (availability issues) . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26675, "t": 615.03964, "r": 524.87512, "b": 624.25264, "coord_origin": "TOPLEFT"}}, {"id": 142, "text": "107", "bbox": {"l": 530.43701, "t": 615.03964, "r": 547.12286, "b": 624.25264, "coord_origin": "TOPLEFT"}}, {"id": 143, "text": "6.8", "bbox": {"l": 136.79997, "t": 627.51952, "r": 150.62793, "b": 636.73251, "coord_origin": "TOPLEFT"}}, {"id": 144, "text": "Avoiding propagation of masked data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.1591, "t": 627.51952, "r": 525.047, "b": 636.73251, "coord_origin": "TOPLEFT"}}, {"id": 145, "text": "108", "bbox": {"l": 530.57819, "t": 627.51952, "r": 547.17175, "b": 636.73251, "coord_origin": "TOPLEFT"}}, {"id": 146, "text": "6.8.1", "bbox": {"l": 151.20013, "t": 639.99939, "r": 173.48119, "b": 649.21239, "coord_origin": "TOPLEFT"}}, {"id": 147, "text": "Check constraint solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.05145, "t": 639.99939, "r": 524.91864, "b": 649.21239, "coord_origin": "TOPLEFT"}}, {"id": 148, "text": "108", "bbox": {"l": 530.48889, "t": 639.99939, "r": 547.19971, "b": 649.21239, "coord_origin": "TOPLEFT"}}, {"id": 149, "text": "6.8.2", "bbox": {"l": 151.20013, "t": 652.53903, "r": 173.32486, "b": 661.75203, "coord_origin": "TOPLEFT"}}, {"id": 150, "text": "Before trigger solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85603, "t": 652.53903, "r": 525.07208, "b": 661.75203, "coord_origin": "TOPLEFT"}}, {"id": 151, "text": "109", "bbox": {"l": 530.60321, "t": 652.53903, "r": 547.19678, "b": 661.75203, "coord_origin": "TOPLEFT"}}, {"id": 152, "text": "6.9", "bbox": {"l": 136.79997, "t": 665.01891, "r": 150.70258, "b": 674.23191, "coord_origin": "TOPLEFT"}}, {"id": 153, "text": "Triggers and functions (SECURED) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26361, "t": 665.01891, "r": 524.87256, "b": 674.23191, "coord_origin": "TOPLEFT"}}, {"id": 154, "text": "109", "bbox": {"l": 530.43359, "t": 665.01891, "r": 547.11676, "b": 674.23191, "coord_origin": "TOPLEFT"}}, {"id": 155, "text": "6.9.1", "bbox": {"l": 151.20013, "t": 677.49879, "r": 173.32774, "b": 686.71179, "coord_origin": "TOPLEFT"}}, {"id": 156, "text": "Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85965, "t": 677.49879, "r": 525.13092, "b": 686.71179, "coord_origin": "TOPLEFT"}}, {"id": 157, "text": "109", "bbox": {"l": 530.66284, "t": 677.49879, "r": 547.25854, "b": 686.71179, "coord_origin": "TOPLEFT"}}, {"id": 158, "text": "6.9.2", "bbox": {"l": 151.20013, "t": 690.0384300000001, "r": 173.57503, "b": 699.251434, "coord_origin": "TOPLEFT"}}, {"id": 159, "text": "Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.16876, "t": 690.0384300000001, "r": 524.84283, "b": 699.251434, "coord_origin": "TOPLEFT"}}, {"id": 160, "text": "110", "bbox": {"l": 530.43652, "t": 690.0384300000001, "r": 547.21771, "b": 699.251434, "coord_origin": "TOPLEFT"}}, {"id": 161, "text": "6.10", "bbox": {"l": 136.79996, "t": 702.518311, "r": 156.34335, "b": 711.731316, "coord_origin": "TOPLEFT"}}, {"id": 162, "text": "RCAC is only one part of the solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 159.13527, "t": 702.518311, "r": 524.81567, "b": 711.731316, "coord_origin": "TOPLEFT"}}, {"id": 163, "text": "111", "bbox": {"l": 530.39954, "t": 702.518311, "r": 547.151, "b": 711.731316, "coord_origin": "TOPLEFT"}}, {"id": 164, "text": "Chapter 7. Row and Column Access Control management", "bbox": {"l": 136.79996, "t": 725.017952, "r": 413.01562, "b": 734.230957, "coord_origin": "TOPLEFT"}}, {"id": 165, "text": " . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 413.99973, "t": 725.017952, "r": 525.0014, "b": 734.230957, "coord_origin": "TOPLEFT"}}, {"id": 166, "text": "113", "bbox": {"l": 530.55145, "t": 725.017952, "r": 547.20172, "b": 734.230957, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl"], "num_rows": 47, "num_cols": 2, "table_cells": [{"bbox": {"l": 136.8, "t": 71.50867000000005, "r": 530.59589, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.13281, "t": 71.50867000000005, "r": 547.20673, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "37", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80002, "t": 83.50847999999996, "r": 530.52008, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.1 Business requirements for the RCAC banking scenario . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.05914, "t": 83.50847999999996, "r": 547.13721, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "38", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80002, "t": 95.98834000000011, "r": 372.67761, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.2 Description of the users roles and responsibilities", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 378.21689, "t": 95.98834000000011, "r": 547.16486, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . 39", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80002, "t": 108.52795000000015, "r": 530.53625, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3 Implementation of RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.09039, "t": 108.52795000000015, "r": 547.19873, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "42", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 121.00780999999995, "r": 400.57443, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.1 Reviewing the tables that are used in this example", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 406.10547, "t": 121.00780999999995, "r": 547.14697, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . 42", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 133.48766999999998, "r": 516.9256, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.2 Assigning function ID QIBM_DB_SECADM to the Database Engineers group", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 522.46039, "t": 133.48766999999998, "r": 547.36707, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . 47", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 146.02728000000002, "r": 530.56757, "b": 155.24030000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.3 Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.09894, "t": 146.02728000000002, "r": 547.16174, "b": 155.24030000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "50", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 158.50714000000005, "r": 411.62085, "b": 167.72015, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.4 Creating the CUSTOMER_LOGIN_ID global variable", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 417.1524, "t": 158.50714000000005, "r": 547.14386, "b": 167.72015, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . 52", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 170.98699999999997, "r": 530.53705, "b": 180.20001000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.5 Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.07599, "t": 170.98699999999997, "r": 547.15387, "b": 180.20001000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "54", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 183.52661, "r": 339.45404, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.6 Defining and creating column masks", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 344.99295, "t": 183.52661, "r": 547.16388, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 196.00647000000004, "r": 530.53931, "b": 205.21947999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.7 Restricting the inserting and updating of masked data . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.07812, "t": 196.00647000000004, "r": 547.15576, "b": 205.21947999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "60", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 221.02594, "r": 530.48206, "b": 230.23895000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.9 Reviewing row permissions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.03638, "t": 221.02594, "r": 547.14502, "b": 230.23895000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "64", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 233.50580000000002, "r": 530.44922, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.10 Demonstrating data access with RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.01947, "t": 233.50580000000002, "r": 547.16003, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "66", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 245.98566000000005, "r": 530.43353, "b": 255.19867, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.11 Query implementation with RCAC activated . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.00372, "t": 245.98566000000005, "r": 547.1441, "b": 255.19867, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "75", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80002, "t": 268.48528999999996, "r": 530.53851, "b": 277.6983, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "Chapter 5. RCAC and non-SQL interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.09161, "t": 268.48528999999996, "r": 547.19781, "b": 277.6983, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "79", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 156.18524, "t": 280.48514, "r": 547.17688, "b": 289.69812, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Unsupported interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80002, "t": 305.50467, "r": 530.49377, "b": 314.71765, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "5.3 Accidental updates with masked values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.04749, "t": 305.50467, "r": 547.15491, "b": 314.71765, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "81", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80002, "t": 317.98456, "r": 530.56433, "b": 327.19754, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "5.4 System CL commands considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.09583, "t": 317.98456, "r": 547.15894, "b": 327.19754, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "82", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 330.5242, "r": 530.4599, "b": 339.73718, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "5.4.1 Create Duplicate Object (CRTDUPOBJ) command . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.02283, "t": 330.5242, "r": 547.14868, "b": 339.73718, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "82", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 343.0040900000001, "r": 530.53815, "b": 364.69696000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "5.4.2 Copy File (CPYF) command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4.3 Copy Library (CPYLIB) command. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.07709, "t": 343.0040900000001, "r": 547.15497, "b": 352.21707, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "82", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.05743, "t": 355.48398, "r": 547.18286, "b": 364.69696000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "83", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80002, "t": 377.98361, "r": 530.53851, "b": 387.19659, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 22, "end_row_offset_idx": 23, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "Chapter 6. Additional considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 277.79886, "t": 377.98361, "r": 547.19684, "b": 399.19641, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 23, "end_row_offset_idx": 24, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "85 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80003, "t": 402.5230700000001, "r": 530.51398, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 23, "end_row_offset_idx": 24, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.2 RCAC effects on data movement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 151.2002, "t": 415.00296, "r": 400.16882, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 24, "end_row_offset_idx": 25, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.2.1 Effects when RCAC is defined on the source table", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.06061, "t": 415.00296, "r": 547.15381, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 25, "end_row_offset_idx": 26, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "88", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 400.59186, "t": 427.48285, "r": 547.16876, "b": 449.23546999999996, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 22, "end_row_offset_idx": 23, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . 89 90", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80003, "t": 440.02249, "r": 530.59979, "b": 461.71536, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 26, "end_row_offset_idx": 27, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.2.3 Effects when RCAC is defined on both source and target tables . . . . . . . . . . . . . 6.3 RCAC effects on joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.1391, "t": 452.50238, "r": 547.21777, "b": 461.71536, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 26, "end_row_offset_idx": 27, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "91", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.2002, "t": 464.98227, "r": 547.25958, "b": 474.19525, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 27, "end_row_offset_idx": 28, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.3.1 Inner joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 151.20016, "t": 477.52191, "r": 547.25958, "b": 486.73489, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 28, "end_row_offset_idx": 29, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.3.2 Outer joins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 151.20016, "t": 490.0018, "r": 530.4812, "b": 499.21478, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 29, "end_row_offset_idx": 30, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.3.3 Exception joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.05103, "t": 490.0018, "r": 547.19073, "b": 499.21478, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 29, "end_row_offset_idx": 30, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "96", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.8, "t": 502.54144, "r": 372.92725, "b": 511.75443, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 30, "end_row_offset_idx": 31, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.4 Monitoring, analyzing, and debugging with RCAC", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 378.45905, "t": 502.54144, "r": 530.58417, "b": 511.75443, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 31, "end_row_offset_idx": 32, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.11597, "t": 502.54144, "r": 547.17963, "b": 511.75443, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 30, "end_row_offset_idx": 31, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "97", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 178.85632, "t": 515.02133, "r": 547.17078, "b": 524.23431, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 31, "end_row_offset_idx": 32, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Query monitoring and analysis tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20016, "t": 527.50122, "r": 530.53064, "b": 536.7142200000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 32, "end_row_offset_idx": 33, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.4.2 Index advisor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.09302, "t": 527.50122, "r": 547.21771, "b": 536.7142200000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 32, "end_row_offset_idx": 33, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "99", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20013, "t": 540.0408600000001, "r": 525.01111, "b": 549.25386, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 33, "end_row_offset_idx": 34, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.4.3 Metadata using catalogs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.54944, "t": 540.0408600000001, "r": 547.16461, "b": 549.25386, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "100", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79997, "t": 552.52074, "r": 524.80566, "b": 561.73373, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 34, "end_row_offset_idx": 35, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.5 Views, materialized query tables, and query rewrite with RCAC . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.3905, "t": 552.52074, "r": 547.14502, "b": 561.73373, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 34, "end_row_offset_idx": 35, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "102", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20013, "t": 577.54025, "r": 524.85681, "b": 586.75325, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 35, "end_row_offset_idx": 36, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.5.2 Materialized query tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.43451, "t": 577.54025, "r": 547.16766, "b": 586.75325, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 35, "end_row_offset_idx": 36, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "103", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20013, "t": 590.02013, "r": 524.9704, "b": 611.713, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 37, "end_row_offset_idx": 38, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.5.3 Query rewrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . RCAC effects on performance and scalability. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.52472, "t": 590.02013, "r": 547.18781, "b": 599.23312, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 36, "end_row_offset_idx": 37, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "105", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79997, "t": 602.5, "r": 150.70438, "b": 611.713, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 38, "end_row_offset_idx": 39, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.6", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.48456, "t": 602.5, "r": 547.16986, "b": 611.713, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 38, "end_row_offset_idx": 39, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "105", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79997, "t": 615.03964, "r": 525.047, "b": 636.73251, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 40, "end_row_offset_idx": 41, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.7 Exclusive lock to implement RCAC (availability issues) . . . . . . . . . . . . . . . . . . . . . . . 6.8 Avoiding propagation of masked data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.43701, "t": 615.03964, "r": 547.12286, "b": 624.25264, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 39, "end_row_offset_idx": 40, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "107", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.57819, "t": 627.51952, "r": 547.17175, "b": 636.73251, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 40, "end_row_offset_idx": 41, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "108", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.48889, "t": 639.99939, "r": 547.19971, "b": 649.21239, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 41, "end_row_offset_idx": 42, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "108", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.43359, "t": 665.01891, "r": 547.11676, "b": 674.23191, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 42, "end_row_offset_idx": 43, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "109", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.66284, "t": 677.49879, "r": 547.25854, "b": 686.71179, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 43, "end_row_offset_idx": 44, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "109", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.39954, "t": 702.518311, "r": 547.151, "b": 711.731316, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 45, "end_row_offset_idx": 46, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "111", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79996, "t": 725.017952, "r": 525.0014, "b": 734.230957, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 46, "end_row_offset_idx": 47, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "Chapter 7. Row and Column Access Control management . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.55145, "t": 725.017952, "r": 547.20172, "b": 734.230957, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 44, "end_row_offset_idx": 45, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "113", "column_header": false, "row_header": false, "row_section": false}]}}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 5, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.4805679321289, "t": 754.1161499023438, "r": 75.641998, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8876830339431763, "cells": [{"id": 0, "text": "iv ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 75.641998, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "iv"}, {"label": "page_footer", "id": 1, "page_no": 5, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 90.44805145263672, "t": 754.6052856445312, "r": 331.7034606933594, "b": 763.9476318359375, "coord_origin": "TOPLEFT"}, "confidence": 0.936427891254425, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 90.599998, "t": 755.538002, "r": 331.55881, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "table", "id": 2, "page_no": 5, "cluster": {"id": 2, "label": "table", "bbox": {"l": 135.92572021484375, "t": 70.81258392333984, "r": 547.7196044921875, "b": 734.230957, "coord_origin": "TOPLEFT"}, "confidence": 0.9778977036476135, "cells": [{"id": 2, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 504.58301, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": ". . . . .", "bbox": {"l": 505.67957, "t": 71.50867000000005, "r": 530.59589, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "37", "bbox": {"l": 536.13281, "t": 71.50867000000005, "r": 547.20673, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "4.1", "bbox": {"l": 136.80002, "t": 83.50847999999996, "r": 150.64761, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Business requirements for the RCAC banking scenario . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18666, "t": 83.50847999999996, "r": 530.52008, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "38", "bbox": {"l": 536.05914, "t": 83.50847999999996, "r": 547.13721, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "4.2", "bbox": {"l": 136.80002, "t": 95.98834000000011, "r": 150.64821, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Description of the users roles and responsibilities", "bbox": {"l": 156.18748, "t": 95.98834000000011, "r": 372.67761, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 378.21689, "t": 95.98834000000011, "r": 530.547, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "39", "bbox": {"l": 536.0863, "t": 95.98834000000011, "r": 547.16486, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "4.3", "bbox": {"l": 136.80002, "t": 108.52795000000015, "r": 150.68542, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Implementation of RCAC", "bbox": {"l": 156.23959, "t": 108.52795000000015, "r": 266.7135, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 272.26767, "t": 108.52795000000015, "r": 530.53625, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "42", "bbox": {"l": 536.09039, "t": 108.52795000000015, "r": 547.19873, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "4.3.1", "bbox": {"l": 151.20018, "t": 121.00780999999995, "r": 173.32434, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Reviewing the tables that are used in this example", "bbox": {"l": 178.85538, "t": 121.00780999999995, "r": 400.57443, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": ". . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 406.10547, "t": 121.00780999999995, "r": 530.55383, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "42", "bbox": {"l": 536.0849, "t": 121.00780999999995, "r": 547.14697, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "4.3.2", "bbox": {"l": 151.20018, "t": 133.48766999999998, "r": 173.33942, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Assigning function ID QIBM_DB_SECADM to the Database Engineers group", "bbox": {"l": 178.87422, "t": 133.48766999999998, "r": 516.9256, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": ". .", "bbox": {"l": 522.46039, "t": 133.48766999999998, "r": 530.76263, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "47", "bbox": {"l": 536.29742, "t": 133.48766999999998, "r": 547.36707, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "4.3.3", "bbox": {"l": 151.20018, "t": 146.02728000000002, "r": 173.32571, "b": 155.24030000000005, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8571, "t": 146.02728000000002, "r": 530.56757, "b": 155.24030000000005, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "50", "bbox": {"l": 536.09894, "t": 146.02728000000002, "r": 547.16174, "b": 155.24030000000005, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "4.3.4", "bbox": {"l": 151.20018, "t": 158.50714000000005, "r": 173.32639, "b": 167.72015, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Creating the CUSTOMER_LOGIN_ID global variable", "bbox": {"l": 178.85794, "t": 158.50714000000005, "r": 411.62085, "b": 167.72015, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ". . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 417.1524, "t": 158.50714000000005, "r": 530.54919, "b": 167.72015, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "52", "bbox": {"l": 536.08075, "t": 158.50714000000005, "r": 547.14386, "b": 167.72015, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "4.3.5", "bbox": {"l": 151.20018, "t": 170.98699999999997, "r": 173.3559, "b": 180.20001000000002, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89482, "t": 170.98699999999997, "r": 530.53705, "b": 180.20001000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "54", "bbox": {"l": 536.07599, "t": 170.98699999999997, "r": 547.15387, "b": 180.20001000000002, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "4.3.6", "bbox": {"l": 151.20018, "t": 183.52661, "r": 173.3559, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Defining and creating column masks", "bbox": {"l": 178.89482, "t": 183.52661, "r": 339.45404, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.99295, "t": 183.52661, "r": 530.54706, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "58", "bbox": {"l": 536.086, "t": 183.52661, "r": 547.16388, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "4.3.7", "bbox": {"l": 151.20018, "t": 196.00647000000004, "r": 173.35544, "b": 205.21947999999998, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Restricting the inserting and updating of masked data . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89426, "t": 196.00647000000004, "r": 530.53931, "b": 205.21947999999998, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "60", "bbox": {"l": 536.07812, "t": 196.00647000000004, "r": 547.15576, "b": 205.21947999999998, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "4.3.8", "bbox": {"l": 151.20018, "t": 208.48632999999995, "r": 173.51157, "b": 217.69934, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Activating row and column access control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.0894, "t": 208.48632999999995, "r": 530.41339, "b": 217.69934, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "63", "bbox": {"l": 535.99127, "t": 208.48632999999995, "r": 547.14697, "b": 217.69934, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "4.3.9", "bbox": {"l": 151.20018, "t": 221.02594, "r": 173.41745, "b": 230.23895000000005, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Reviewing row permissions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97176, "t": 221.02594, "r": 530.48206, "b": 230.23895000000005, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "64", "bbox": {"l": 536.03638, "t": 221.02594, "r": 547.14502, "b": 230.23895000000005, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "4.3.10", "bbox": {"l": 151.20018, "t": 233.50580000000002, "r": 179.05151, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "Demonstrating data access with RCAC", "bbox": {"l": 181.83665, "t": 233.50580000000002, "r": 354.98581, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 360.55606, "t": 233.50580000000002, "r": 530.44922, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "66", "bbox": {"l": 536.01947, "t": 233.50580000000002, "r": 547.16003, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "4.3.11", "bbox": {"l": 151.20018, "t": 245.98566000000005, "r": 179.0511, "b": 255.19867, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Query implementation with RCAC activated . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 181.83621, "t": 245.98566000000005, "r": 530.43353, "b": 255.19867, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "75", "bbox": {"l": 536.00372, "t": 245.98566000000005, "r": 547.1441, "b": 255.19867, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "Chapter 5. RCAC and non-SQL interfaces", "bbox": {"l": 136.80002, "t": 268.48528999999996, "r": 335.23209, "b": 277.6983, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 336.1803, "t": 268.48528999999996, "r": 530.53851, "b": 277.6983, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "79", "bbox": {"l": 536.09161, "t": 268.48528999999996, "r": 547.19781, "b": 277.6983, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "5.1", "bbox": {"l": 136.80002, "t": 280.48514, "r": 150.64661, "b": 289.69812, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Unsupported interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18524, "t": 280.48514, "r": 530.56097, "b": 289.69812, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "80", "bbox": {"l": 536.09961, "t": 280.48514, "r": 547.17688, "b": 289.69812, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "5.2", "bbox": {"l": 136.80002, "t": 293.02478, "r": 150.7034, "b": 302.2377599999999, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Native query result differences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26476, "t": 293.02478, "r": 530.48578, "b": 302.2377599999999, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "80", "bbox": {"l": 536.04718, "t": 293.02478, "r": 547.16986, "b": 302.2377599999999, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "5.3", "bbox": {"l": 136.80002, "t": 305.50467, "r": 150.68428, "b": 314.71765, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "Accidental updates with masked values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.23799, "t": 305.50467, "r": 530.49377, "b": 314.71765, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "81", "bbox": {"l": 536.04749, "t": 305.50467, "r": 547.15491, "b": 314.71765, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "5.4", "bbox": {"l": 136.80002, "t": 317.98456, "r": 150.62888, "b": 327.19754, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "System CL commands considerations", "bbox": {"l": 156.16042, "t": 317.98456, "r": 323.13144, "b": 327.19754, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 328.66299, "t": 317.98456, "r": 530.56433, "b": 327.19754, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "82", "bbox": {"l": 536.09583, "t": 317.98456, "r": 547.15894, "b": 327.19754, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "5.4.1", "bbox": {"l": 151.20018, "t": 330.5242, "r": 173.4519, "b": 339.73718, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "Create Duplicate Object (CRTDUPOBJ) command . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01483, "t": 330.5242, "r": 530.4599, "b": 339.73718, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "82", "bbox": {"l": 536.02283, "t": 330.5242, "r": 547.14868, "b": 339.73718, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "5.4.2", "bbox": {"l": 151.20018, "t": 343.0040900000001, "r": 173.35596, "b": 352.21707, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "Copy File (CPYF) command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8949, "t": 343.0040900000001, "r": 530.53815, "b": 352.21707, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "82", "bbox": {"l": 536.07709, "t": 343.0040900000001, "r": 547.15497, "b": 352.21707, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "5.4.3", "bbox": {"l": 151.20018, "t": 355.48398, "r": 173.451, "b": 364.69696000000005, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "Copy Library (CPYLIB) command. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01372, "t": 355.48398, "r": 530.49475, "b": 364.69696000000005, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "83", "bbox": {"l": 536.05743, "t": 355.48398, "r": 547.18286, "b": 364.69696000000005, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "Chapter 6. Additional considerations", "bbox": {"l": 136.80002, "t": 377.98361, "r": 313.86292, "b": 387.19659, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 313.98047, "t": 377.98361, "r": 530.53851, "b": 387.19659, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "85", "bbox": {"l": 536.09131, "t": 377.98361, "r": 547.19684, "b": 387.19659, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "6.1", "bbox": {"l": 136.80003, "t": 389.98343, "r": 150.68416, "b": 399.19641, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "Timing of column masking", "bbox": {"l": 156.23781, "t": 389.98343, "r": 272.24521, "b": 399.19641, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 277.79886, "t": 389.98343, "r": 530.49005, "b": 399.19641, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "86", "bbox": {"l": 536.0437, "t": 389.98343, "r": 547.151, "b": 399.19641, "coord_origin": "TOPLEFT"}}, {"id": 86, "text": "6.2", "bbox": {"l": 136.80003, "t": 402.5230700000001, "r": 150.70372, "b": 411.73605, "coord_origin": "TOPLEFT"}}, {"id": 87, "text": "RCAC effects on data movement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.2652, "t": 402.5230700000001, "r": 530.49445, "b": 411.73605, "coord_origin": "TOPLEFT"}}, {"id": 88, "text": "88", "bbox": {"l": 536.05591, "t": 402.5230700000001, "r": 547.17889, "b": 411.73605, "coord_origin": "TOPLEFT"}}, {"id": 89, "text": "6.2.1", "bbox": {"l": 151.2002, "t": 415.00296, "r": 173.38661, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}}, {"id": 90, "text": "Effects when RCAC is defined on the source table", "bbox": {"l": 178.93321, "t": 415.00296, "r": 400.16882, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}}, {"id": 91, "text": ". . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 405.71545, "t": 415.00296, "r": 530.51398, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}}, {"id": 92, "text": "88", "bbox": {"l": 536.06061, "t": 415.00296, "r": 547.15381, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}}, {"id": 93, "text": "6.2.2", "bbox": {"l": 151.2002, "t": 427.48285, "r": 173.32501, "b": 436.69583, "coord_origin": "TOPLEFT"}}, {"id": 94, "text": "Effects when RCAC is defined on the target table", "bbox": {"l": 178.85622, "t": 427.48285, "r": 395.06064, "b": 436.69583, "coord_origin": "TOPLEFT"}}, {"id": 95, "text": ". . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 400.59186, "t": 427.48285, "r": 530.57513, "b": 436.69583, "coord_origin": "TOPLEFT"}}, {"id": 96, "text": "89", "bbox": {"l": 536.10632, "t": 427.48285, "r": 547.16876, "b": 436.69583, "coord_origin": "TOPLEFT"}}, {"id": 97, "text": "6.2.3", "bbox": {"l": 151.2002, "t": 440.02249, "r": 173.38657, "b": 449.23546999999996, "coord_origin": "TOPLEFT"}}, {"id": 98, "text": "Effects when RCAC is defined on both source and target tables . . . . . . . . . . . . .", "bbox": {"l": 178.93315, "t": 440.02249, "r": 530.5033, "b": 449.23546999999996, "coord_origin": "TOPLEFT"}}, {"id": 99, "text": "90", "bbox": {"l": 536.04987, "t": 440.02249, "r": 547.14307, "b": 449.23546999999996, "coord_origin": "TOPLEFT"}}, {"id": 100, "text": "6.3", "bbox": {"l": 136.80003, "t": 452.50238, "r": 150.64833, "b": 461.71536, "coord_origin": "TOPLEFT"}}, {"id": 101, "text": "RCAC effects on joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18765, "t": 452.50238, "r": 530.59979, "b": 461.71536, "coord_origin": "TOPLEFT"}}, {"id": 102, "text": "91", "bbox": {"l": 536.1391, "t": 452.50238, "r": 547.21777, "b": 461.71536, "coord_origin": "TOPLEFT"}}, {"id": 103, "text": "6.3.1", "bbox": {"l": 151.2002, "t": 464.98227, "r": 173.57745, "b": 474.19525, "coord_origin": "TOPLEFT"}}, {"id": 104, "text": "Inner joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92", "bbox": {"l": 179.17177, "t": 464.98227, "r": 547.25958, "b": 474.19525, "coord_origin": "TOPLEFT"}}, {"id": 105, "text": "6.3.2", "bbox": {"l": 151.20016, "t": 477.52191, "r": 173.60931, "b": 486.73489, "coord_origin": "TOPLEFT"}}, {"id": 106, "text": "Outer joins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94", "bbox": {"l": 179.21159, "t": 477.52191, "r": 547.25958, "b": 486.73489, "coord_origin": "TOPLEFT"}}, {"id": 107, "text": "6.3.3", "bbox": {"l": 151.20016, "t": 490.0018, "r": 173.47958, "b": 499.21478, "coord_origin": "TOPLEFT"}}, {"id": 108, "text": "Exception joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.04944, "t": 490.0018, "r": 530.4812, "b": 499.21478, "coord_origin": "TOPLEFT"}}, {"id": 109, "text": "96", "bbox": {"l": 536.05103, "t": 490.0018, "r": 547.19073, "b": 499.21478, "coord_origin": "TOPLEFT"}}, {"id": 110, "text": "6.4", "bbox": {"l": 136.8, "t": 502.54144, "r": 150.62956, "b": 511.75443, "coord_origin": "TOPLEFT"}}, {"id": 111, "text": "Monitoring, analyzing, and debugging with RCAC", "bbox": {"l": 156.16138, "t": 502.54144, "r": 372.92725, "b": 511.75443, "coord_origin": "TOPLEFT"}}, {"id": 112, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 378.45905, "t": 502.54144, "r": 530.58417, "b": 511.75443, "coord_origin": "TOPLEFT"}}, {"id": 113, "text": "97", "bbox": {"l": 536.11597, "t": 502.54144, "r": 547.17963, "b": 511.75443, "coord_origin": "TOPLEFT"}}, {"id": 114, "text": "6.4.1", "bbox": {"l": 151.20016, "t": 515.02133, "r": 173.32509, "b": 524.23431, "coord_origin": "TOPLEFT"}}, {"id": 115, "text": "Query monitoring and analysis tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85632, "t": 515.02133, "r": 530.57709, "b": 524.23431, "coord_origin": "TOPLEFT"}}, {"id": 116, "text": "97", "bbox": {"l": 536.10834, "t": 515.02133, "r": 547.17078, "b": 524.23431, "coord_origin": "TOPLEFT"}}, {"id": 117, "text": "6.4.2", "bbox": {"l": 151.20016, "t": 527.50122, "r": 173.44958, "b": 536.7142200000001, "coord_origin": "TOPLEFT"}}, {"id": 118, "text": "Index advisor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01193, "t": 527.50122, "r": 530.53064, "b": 536.7142200000001, "coord_origin": "TOPLEFT"}}, {"id": 119, "text": "99", "bbox": {"l": 536.09302, "t": 527.50122, "r": 547.21771, "b": 536.7142200000001, "coord_origin": "TOPLEFT"}}, {"id": 120, "text": "6.4.3", "bbox": {"l": 151.20013, "t": 540.0408600000001, "r": 173.35367, "b": 549.25386, "coord_origin": "TOPLEFT"}}, {"id": 121, "text": "Metadata using catalogs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89204, "t": 540.0408600000001, "r": 525.01111, "b": 549.25386, "coord_origin": "TOPLEFT"}}, {"id": 122, "text": "100", "bbox": {"l": 530.54944, "t": 540.0408600000001, "r": 547.16461, "b": 549.25386, "coord_origin": "TOPLEFT"}}, {"id": 123, "text": "6.5", "bbox": {"l": 136.79997, "t": 552.52074, "r": 150.76207, "b": 561.73373, "coord_origin": "TOPLEFT"}}, {"id": 124, "text": "Views, materialized query tables, and query rewrite with RCAC . . . . . . . . . . . . . . . .", "bbox": {"l": 156.34691, "t": 552.52074, "r": 524.80566, "b": 561.73373, "coord_origin": "TOPLEFT"}}, {"id": 125, "text": "102", "bbox": {"l": 530.3905, "t": 552.52074, "r": 547.14502, "b": 561.73373, "coord_origin": "TOPLEFT"}}, {"id": 126, "text": "6.5.1", "bbox": {"l": 151.20013, "t": 565.00061, "r": 173.42041, "b": 574.21361, "coord_origin": "TOPLEFT"}}, {"id": 127, "text": "Views", "bbox": {"l": 178.97548, "t": 565.00061, "r": 205.62183, "b": 574.21361, "coord_origin": "TOPLEFT"}}, {"id": 128, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 211.1769, "t": 565.00061, "r": 525.03827, "b": 574.21361, "coord_origin": "TOPLEFT"}}, {"id": 129, "text": "102", "bbox": {"l": 530.59332, "t": 565.00061, "r": 547.25854, "b": 574.21361, "coord_origin": "TOPLEFT"}}, {"id": 130, "text": "6.5.2", "bbox": {"l": 151.20013, "t": 577.54025, "r": 173.51099, "b": 586.75325, "coord_origin": "TOPLEFT"}}, {"id": 131, "text": "Materialized query tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.0887, "t": 577.54025, "r": 524.85681, "b": 586.75325, "coord_origin": "TOPLEFT"}}, {"id": 132, "text": "103", "bbox": {"l": 530.43451, "t": 577.54025, "r": 547.16766, "b": 586.75325, "coord_origin": "TOPLEFT"}}, {"id": 133, "text": "6.5.3", "bbox": {"l": 151.20013, "t": 590.02013, "r": 173.41756, "b": 599.23312, "coord_origin": "TOPLEFT"}}, {"id": 134, "text": "Query rewrite", "bbox": {"l": 178.97192, "t": 590.02013, "r": 238.92101000000002, "b": 599.23312, "coord_origin": "TOPLEFT"}}, {"id": 135, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 244.47537000000003, "t": 590.02013, "r": 524.9704, "b": 599.23312, "coord_origin": "TOPLEFT"}}, {"id": 136, "text": "105", "bbox": {"l": 530.52472, "t": 590.02013, "r": 547.18781, "b": 599.23312, "coord_origin": "TOPLEFT"}}, {"id": 137, "text": "6.6", "bbox": {"l": 136.79997, "t": 602.5, "r": 150.70438, "b": 611.713, "coord_origin": "TOPLEFT"}}, {"id": 138, "text": "RCAC effects on performance and scalability. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26613, "t": 602.5, "r": 524.92279, "b": 611.713, "coord_origin": "TOPLEFT"}}, {"id": 139, "text": "105", "bbox": {"l": 530.48456, "t": 602.5, "r": 547.16986, "b": 611.713, "coord_origin": "TOPLEFT"}}, {"id": 140, "text": "6.7", "bbox": {"l": 136.79997, "t": 615.03964, "r": 150.70482, "b": 624.25264, "coord_origin": "TOPLEFT"}}, {"id": 141, "text": "Exclusive lock to implement RCAC (availability issues) . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26675, "t": 615.03964, "r": 524.87512, "b": 624.25264, "coord_origin": "TOPLEFT"}}, {"id": 142, "text": "107", "bbox": {"l": 530.43701, "t": 615.03964, "r": 547.12286, "b": 624.25264, "coord_origin": "TOPLEFT"}}, {"id": 143, "text": "6.8", "bbox": {"l": 136.79997, "t": 627.51952, "r": 150.62793, "b": 636.73251, "coord_origin": "TOPLEFT"}}, {"id": 144, "text": "Avoiding propagation of masked data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.1591, "t": 627.51952, "r": 525.047, "b": 636.73251, "coord_origin": "TOPLEFT"}}, {"id": 145, "text": "108", "bbox": {"l": 530.57819, "t": 627.51952, "r": 547.17175, "b": 636.73251, "coord_origin": "TOPLEFT"}}, {"id": 146, "text": "6.8.1", "bbox": {"l": 151.20013, "t": 639.99939, "r": 173.48119, "b": 649.21239, "coord_origin": "TOPLEFT"}}, {"id": 147, "text": "Check constraint solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.05145, "t": 639.99939, "r": 524.91864, "b": 649.21239, "coord_origin": "TOPLEFT"}}, {"id": 148, "text": "108", "bbox": {"l": 530.48889, "t": 639.99939, "r": 547.19971, "b": 649.21239, "coord_origin": "TOPLEFT"}}, {"id": 149, "text": "6.8.2", "bbox": {"l": 151.20013, "t": 652.53903, "r": 173.32486, "b": 661.75203, "coord_origin": "TOPLEFT"}}, {"id": 150, "text": "Before trigger solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85603, "t": 652.53903, "r": 525.07208, "b": 661.75203, "coord_origin": "TOPLEFT"}}, {"id": 151, "text": "109", "bbox": {"l": 530.60321, "t": 652.53903, "r": 547.19678, "b": 661.75203, "coord_origin": "TOPLEFT"}}, {"id": 152, "text": "6.9", "bbox": {"l": 136.79997, "t": 665.01891, "r": 150.70258, "b": 674.23191, "coord_origin": "TOPLEFT"}}, {"id": 153, "text": "Triggers and functions (SECURED) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26361, "t": 665.01891, "r": 524.87256, "b": 674.23191, "coord_origin": "TOPLEFT"}}, {"id": 154, "text": "109", "bbox": {"l": 530.43359, "t": 665.01891, "r": 547.11676, "b": 674.23191, "coord_origin": "TOPLEFT"}}, {"id": 155, "text": "6.9.1", "bbox": {"l": 151.20013, "t": 677.49879, "r": 173.32774, "b": 686.71179, "coord_origin": "TOPLEFT"}}, {"id": 156, "text": "Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85965, "t": 677.49879, "r": 525.13092, "b": 686.71179, "coord_origin": "TOPLEFT"}}, {"id": 157, "text": "109", "bbox": {"l": 530.66284, "t": 677.49879, "r": 547.25854, "b": 686.71179, "coord_origin": "TOPLEFT"}}, {"id": 158, "text": "6.9.2", "bbox": {"l": 151.20013, "t": 690.0384300000001, "r": 173.57503, "b": 699.251434, "coord_origin": "TOPLEFT"}}, {"id": 159, "text": "Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.16876, "t": 690.0384300000001, "r": 524.84283, "b": 699.251434, "coord_origin": "TOPLEFT"}}, {"id": 160, "text": "110", "bbox": {"l": 530.43652, "t": 690.0384300000001, "r": 547.21771, "b": 699.251434, "coord_origin": "TOPLEFT"}}, {"id": 161, "text": "6.10", "bbox": {"l": 136.79996, "t": 702.518311, "r": 156.34335, "b": 711.731316, "coord_origin": "TOPLEFT"}}, {"id": 162, "text": "RCAC is only one part of the solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 159.13527, "t": 702.518311, "r": 524.81567, "b": 711.731316, "coord_origin": "TOPLEFT"}}, {"id": 163, "text": "111", "bbox": {"l": 530.39954, "t": 702.518311, "r": 547.151, "b": 711.731316, "coord_origin": "TOPLEFT"}}, {"id": 164, "text": "Chapter 7. Row and Column Access Control management", "bbox": {"l": 136.79996, "t": 725.017952, "r": 413.01562, "b": 734.230957, "coord_origin": "TOPLEFT"}}, {"id": 165, "text": " . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 413.99973, "t": 725.017952, "r": 525.0014, "b": 734.230957, "coord_origin": "TOPLEFT"}}, {"id": 166, "text": "113", "bbox": {"l": 530.55145, "t": 725.017952, "r": 547.20172, "b": 734.230957, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl"], "num_rows": 47, "num_cols": 2, "table_cells": [{"bbox": {"l": 136.8, "t": 71.50867000000005, "r": 530.59589, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.13281, "t": 71.50867000000005, "r": 547.20673, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "37", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80002, "t": 83.50847999999996, "r": 530.52008, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.1 Business requirements for the RCAC banking scenario . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.05914, "t": 83.50847999999996, "r": 547.13721, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "38", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80002, "t": 95.98834000000011, "r": 372.67761, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.2 Description of the users roles and responsibilities", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 378.21689, "t": 95.98834000000011, "r": 547.16486, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . 39", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80002, "t": 108.52795000000015, "r": 530.53625, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3 Implementation of RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.09039, "t": 108.52795000000015, "r": 547.19873, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "42", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 121.00780999999995, "r": 400.57443, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.1 Reviewing the tables that are used in this example", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 406.10547, "t": 121.00780999999995, "r": 547.14697, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . 42", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 133.48766999999998, "r": 516.9256, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.2 Assigning function ID QIBM_DB_SECADM to the Database Engineers group", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 522.46039, "t": 133.48766999999998, "r": 547.36707, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . 47", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 146.02728000000002, "r": 530.56757, "b": 155.24030000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.3 Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.09894, "t": 146.02728000000002, "r": 547.16174, "b": 155.24030000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "50", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 158.50714000000005, "r": 411.62085, "b": 167.72015, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.4 Creating the CUSTOMER_LOGIN_ID global variable", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 417.1524, "t": 158.50714000000005, "r": 547.14386, "b": 167.72015, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . 52", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 170.98699999999997, "r": 530.53705, "b": 180.20001000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.5 Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.07599, "t": 170.98699999999997, "r": 547.15387, "b": 180.20001000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "54", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 183.52661, "r": 339.45404, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.6 Defining and creating column masks", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 344.99295, "t": 183.52661, "r": 547.16388, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 196.00647000000004, "r": 530.53931, "b": 205.21947999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.7 Restricting the inserting and updating of masked data . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.07812, "t": 196.00647000000004, "r": 547.15576, "b": 205.21947999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "60", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 221.02594, "r": 530.48206, "b": 230.23895000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.9 Reviewing row permissions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.03638, "t": 221.02594, "r": 547.14502, "b": 230.23895000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "64", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 233.50580000000002, "r": 530.44922, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.10 Demonstrating data access with RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.01947, "t": 233.50580000000002, "r": 547.16003, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "66", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 245.98566000000005, "r": 530.43353, "b": 255.19867, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.11 Query implementation with RCAC activated . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.00372, "t": 245.98566000000005, "r": 547.1441, "b": 255.19867, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "75", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80002, "t": 268.48528999999996, "r": 530.53851, "b": 277.6983, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "Chapter 5. RCAC and non-SQL interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.09161, "t": 268.48528999999996, "r": 547.19781, "b": 277.6983, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "79", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 156.18524, "t": 280.48514, "r": 547.17688, "b": 289.69812, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Unsupported interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80002, "t": 305.50467, "r": 530.49377, "b": 314.71765, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "5.3 Accidental updates with masked values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.04749, "t": 305.50467, "r": 547.15491, "b": 314.71765, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "81", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80002, "t": 317.98456, "r": 530.56433, "b": 327.19754, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "5.4 System CL commands considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.09583, "t": 317.98456, "r": 547.15894, "b": 327.19754, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "82", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 330.5242, "r": 530.4599, "b": 339.73718, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "5.4.1 Create Duplicate Object (CRTDUPOBJ) command . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.02283, "t": 330.5242, "r": 547.14868, "b": 339.73718, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "82", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 343.0040900000001, "r": 530.53815, "b": 364.69696000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "5.4.2 Copy File (CPYF) command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4.3 Copy Library (CPYLIB) command. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.07709, "t": 343.0040900000001, "r": 547.15497, "b": 352.21707, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "82", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.05743, "t": 355.48398, "r": 547.18286, "b": 364.69696000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "83", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80002, "t": 377.98361, "r": 530.53851, "b": 387.19659, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 22, "end_row_offset_idx": 23, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "Chapter 6. Additional considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 277.79886, "t": 377.98361, "r": 547.19684, "b": 399.19641, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 23, "end_row_offset_idx": 24, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "85 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80003, "t": 402.5230700000001, "r": 530.51398, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 23, "end_row_offset_idx": 24, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.2 RCAC effects on data movement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 151.2002, "t": 415.00296, "r": 400.16882, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 24, "end_row_offset_idx": 25, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.2.1 Effects when RCAC is defined on the source table", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.06061, "t": 415.00296, "r": 547.15381, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 25, "end_row_offset_idx": 26, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "88", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 400.59186, "t": 427.48285, "r": 547.16876, "b": 449.23546999999996, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 22, "end_row_offset_idx": 23, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . 89 90", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80003, "t": 440.02249, "r": 530.59979, "b": 461.71536, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 26, "end_row_offset_idx": 27, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.2.3 Effects when RCAC is defined on both source and target tables . . . . . . . . . . . . . 6.3 RCAC effects on joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.1391, "t": 452.50238, "r": 547.21777, "b": 461.71536, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 26, "end_row_offset_idx": 27, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "91", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.2002, "t": 464.98227, "r": 547.25958, "b": 474.19525, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 27, "end_row_offset_idx": 28, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.3.1 Inner joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 151.20016, "t": 477.52191, "r": 547.25958, "b": 486.73489, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 28, "end_row_offset_idx": 29, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.3.2 Outer joins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 151.20016, "t": 490.0018, "r": 530.4812, "b": 499.21478, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 29, "end_row_offset_idx": 30, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.3.3 Exception joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.05103, "t": 490.0018, "r": 547.19073, "b": 499.21478, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 29, "end_row_offset_idx": 30, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "96", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.8, "t": 502.54144, "r": 372.92725, "b": 511.75443, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 30, "end_row_offset_idx": 31, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.4 Monitoring, analyzing, and debugging with RCAC", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 378.45905, "t": 502.54144, "r": 530.58417, "b": 511.75443, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 31, "end_row_offset_idx": 32, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.11597, "t": 502.54144, "r": 547.17963, "b": 511.75443, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 30, "end_row_offset_idx": 31, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "97", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 178.85632, "t": 515.02133, "r": 547.17078, "b": 524.23431, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 31, "end_row_offset_idx": 32, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Query monitoring and analysis tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20016, "t": 527.50122, "r": 530.53064, "b": 536.7142200000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 32, "end_row_offset_idx": 33, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.4.2 Index advisor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.09302, "t": 527.50122, "r": 547.21771, "b": 536.7142200000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 32, "end_row_offset_idx": 33, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "99", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20013, "t": 540.0408600000001, "r": 525.01111, "b": 549.25386, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 33, "end_row_offset_idx": 34, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.4.3 Metadata using catalogs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.54944, "t": 540.0408600000001, "r": 547.16461, "b": 549.25386, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "100", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79997, "t": 552.52074, "r": 524.80566, "b": 561.73373, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 34, "end_row_offset_idx": 35, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.5 Views, materialized query tables, and query rewrite with RCAC . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.3905, "t": 552.52074, "r": 547.14502, "b": 561.73373, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 34, "end_row_offset_idx": 35, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "102", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20013, "t": 577.54025, "r": 524.85681, "b": 586.75325, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 35, "end_row_offset_idx": 36, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.5.2 Materialized query tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.43451, "t": 577.54025, "r": 547.16766, "b": 586.75325, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 35, "end_row_offset_idx": 36, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "103", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20013, "t": 590.02013, "r": 524.9704, "b": 611.713, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 37, "end_row_offset_idx": 38, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.5.3 Query rewrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . RCAC effects on performance and scalability. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.52472, "t": 590.02013, "r": 547.18781, "b": 599.23312, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 36, "end_row_offset_idx": 37, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "105", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79997, "t": 602.5, "r": 150.70438, "b": 611.713, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 38, "end_row_offset_idx": 39, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.6", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.48456, "t": 602.5, "r": 547.16986, "b": 611.713, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 38, "end_row_offset_idx": 39, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "105", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79997, "t": 615.03964, "r": 525.047, "b": 636.73251, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 40, "end_row_offset_idx": 41, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.7 Exclusive lock to implement RCAC (availability issues) . . . . . . . . . . . . . . . . . . . . . . . 6.8 Avoiding propagation of masked data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.43701, "t": 615.03964, "r": 547.12286, "b": 624.25264, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 39, "end_row_offset_idx": 40, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "107", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.57819, "t": 627.51952, "r": 547.17175, "b": 636.73251, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 40, "end_row_offset_idx": 41, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "108", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.48889, "t": 639.99939, "r": 547.19971, "b": 649.21239, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 41, "end_row_offset_idx": 42, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "108", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.43359, "t": 665.01891, "r": 547.11676, "b": 674.23191, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 42, "end_row_offset_idx": 43, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "109", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.66284, "t": 677.49879, "r": 547.25854, "b": 686.71179, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 43, "end_row_offset_idx": 44, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "109", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.39954, "t": 702.518311, "r": 547.151, "b": 711.731316, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 45, "end_row_offset_idx": 46, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "111", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79996, "t": 725.017952, "r": 525.0014, "b": 734.230957, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 46, "end_row_offset_idx": 47, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "Chapter 7. Row and Column Access Control management . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.55145, "t": 725.017952, "r": 547.20172, "b": 734.230957, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 44, "end_row_offset_idx": 45, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "113", "column_header": false, "row_header": false, "row_section": false}]}], "body": [{"label": "table", "id": 2, "page_no": 5, "cluster": {"id": 2, "label": "table", "bbox": {"l": 135.92572021484375, "t": 70.81258392333984, "r": 547.7196044921875, "b": 734.230957, "coord_origin": "TOPLEFT"}, "confidence": 0.9778977036476135, "cells": [{"id": 2, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 504.58301, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": ". . . . .", "bbox": {"l": 505.67957, "t": 71.50867000000005, "r": 530.59589, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "37", "bbox": {"l": 536.13281, "t": 71.50867000000005, "r": 547.20673, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "4.1", "bbox": {"l": 136.80002, "t": 83.50847999999996, "r": 150.64761, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Business requirements for the RCAC banking scenario . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18666, "t": 83.50847999999996, "r": 530.52008, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "38", "bbox": {"l": 536.05914, "t": 83.50847999999996, "r": 547.13721, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "4.2", "bbox": {"l": 136.80002, "t": 95.98834000000011, "r": 150.64821, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Description of the users roles and responsibilities", "bbox": {"l": 156.18748, "t": 95.98834000000011, "r": 372.67761, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 378.21689, "t": 95.98834000000011, "r": 530.547, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "39", "bbox": {"l": 536.0863, "t": 95.98834000000011, "r": 547.16486, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "4.3", "bbox": {"l": 136.80002, "t": 108.52795000000015, "r": 150.68542, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Implementation of RCAC", "bbox": {"l": 156.23959, "t": 108.52795000000015, "r": 266.7135, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 272.26767, "t": 108.52795000000015, "r": 530.53625, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "42", "bbox": {"l": 536.09039, "t": 108.52795000000015, "r": 547.19873, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "4.3.1", "bbox": {"l": 151.20018, "t": 121.00780999999995, "r": 173.32434, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Reviewing the tables that are used in this example", "bbox": {"l": 178.85538, "t": 121.00780999999995, "r": 400.57443, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": ". . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 406.10547, "t": 121.00780999999995, "r": 530.55383, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "42", "bbox": {"l": 536.0849, "t": 121.00780999999995, "r": 547.14697, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "4.3.2", "bbox": {"l": 151.20018, "t": 133.48766999999998, "r": 173.33942, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Assigning function ID QIBM_DB_SECADM to the Database Engineers group", "bbox": {"l": 178.87422, "t": 133.48766999999998, "r": 516.9256, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": ". .", "bbox": {"l": 522.46039, "t": 133.48766999999998, "r": 530.76263, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "47", "bbox": {"l": 536.29742, "t": 133.48766999999998, "r": 547.36707, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "4.3.3", "bbox": {"l": 151.20018, "t": 146.02728000000002, "r": 173.32571, "b": 155.24030000000005, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8571, "t": 146.02728000000002, "r": 530.56757, "b": 155.24030000000005, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "50", "bbox": {"l": 536.09894, "t": 146.02728000000002, "r": 547.16174, "b": 155.24030000000005, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "4.3.4", "bbox": {"l": 151.20018, "t": 158.50714000000005, "r": 173.32639, "b": 167.72015, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Creating the CUSTOMER_LOGIN_ID global variable", "bbox": {"l": 178.85794, "t": 158.50714000000005, "r": 411.62085, "b": 167.72015, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ". . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 417.1524, "t": 158.50714000000005, "r": 530.54919, "b": 167.72015, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "52", "bbox": {"l": 536.08075, "t": 158.50714000000005, "r": 547.14386, "b": 167.72015, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "4.3.5", "bbox": {"l": 151.20018, "t": 170.98699999999997, "r": 173.3559, "b": 180.20001000000002, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89482, "t": 170.98699999999997, "r": 530.53705, "b": 180.20001000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "54", "bbox": {"l": 536.07599, "t": 170.98699999999997, "r": 547.15387, "b": 180.20001000000002, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "4.3.6", "bbox": {"l": 151.20018, "t": 183.52661, "r": 173.3559, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Defining and creating column masks", "bbox": {"l": 178.89482, "t": 183.52661, "r": 339.45404, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.99295, "t": 183.52661, "r": 530.54706, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "58", "bbox": {"l": 536.086, "t": 183.52661, "r": 547.16388, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "4.3.7", "bbox": {"l": 151.20018, "t": 196.00647000000004, "r": 173.35544, "b": 205.21947999999998, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Restricting the inserting and updating of masked data . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89426, "t": 196.00647000000004, "r": 530.53931, "b": 205.21947999999998, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "60", "bbox": {"l": 536.07812, "t": 196.00647000000004, "r": 547.15576, "b": 205.21947999999998, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "4.3.8", "bbox": {"l": 151.20018, "t": 208.48632999999995, "r": 173.51157, "b": 217.69934, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Activating row and column access control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.0894, "t": 208.48632999999995, "r": 530.41339, "b": 217.69934, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "63", "bbox": {"l": 535.99127, "t": 208.48632999999995, "r": 547.14697, "b": 217.69934, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "4.3.9", "bbox": {"l": 151.20018, "t": 221.02594, "r": 173.41745, "b": 230.23895000000005, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Reviewing row permissions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97176, "t": 221.02594, "r": 530.48206, "b": 230.23895000000005, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "64", "bbox": {"l": 536.03638, "t": 221.02594, "r": 547.14502, "b": 230.23895000000005, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "4.3.10", "bbox": {"l": 151.20018, "t": 233.50580000000002, "r": 179.05151, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "Demonstrating data access with RCAC", "bbox": {"l": 181.83665, "t": 233.50580000000002, "r": 354.98581, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 360.55606, "t": 233.50580000000002, "r": 530.44922, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "66", "bbox": {"l": 536.01947, "t": 233.50580000000002, "r": 547.16003, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "4.3.11", "bbox": {"l": 151.20018, "t": 245.98566000000005, "r": 179.0511, "b": 255.19867, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Query implementation with RCAC activated . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 181.83621, "t": 245.98566000000005, "r": 530.43353, "b": 255.19867, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "75", "bbox": {"l": 536.00372, "t": 245.98566000000005, "r": 547.1441, "b": 255.19867, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "Chapter 5. RCAC and non-SQL interfaces", "bbox": {"l": 136.80002, "t": 268.48528999999996, "r": 335.23209, "b": 277.6983, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 336.1803, "t": 268.48528999999996, "r": 530.53851, "b": 277.6983, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "79", "bbox": {"l": 536.09161, "t": 268.48528999999996, "r": 547.19781, "b": 277.6983, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "5.1", "bbox": {"l": 136.80002, "t": 280.48514, "r": 150.64661, "b": 289.69812, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Unsupported interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18524, "t": 280.48514, "r": 530.56097, "b": 289.69812, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "80", "bbox": {"l": 536.09961, "t": 280.48514, "r": 547.17688, "b": 289.69812, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "5.2", "bbox": {"l": 136.80002, "t": 293.02478, "r": 150.7034, "b": 302.2377599999999, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Native query result differences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26476, "t": 293.02478, "r": 530.48578, "b": 302.2377599999999, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "80", "bbox": {"l": 536.04718, "t": 293.02478, "r": 547.16986, "b": 302.2377599999999, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "5.3", "bbox": {"l": 136.80002, "t": 305.50467, "r": 150.68428, "b": 314.71765, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "Accidental updates with masked values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.23799, "t": 305.50467, "r": 530.49377, "b": 314.71765, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "81", "bbox": {"l": 536.04749, "t": 305.50467, "r": 547.15491, "b": 314.71765, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "5.4", "bbox": {"l": 136.80002, "t": 317.98456, "r": 150.62888, "b": 327.19754, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "System CL commands considerations", "bbox": {"l": 156.16042, "t": 317.98456, "r": 323.13144, "b": 327.19754, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 328.66299, "t": 317.98456, "r": 530.56433, "b": 327.19754, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "82", "bbox": {"l": 536.09583, "t": 317.98456, "r": 547.15894, "b": 327.19754, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "5.4.1", "bbox": {"l": 151.20018, "t": 330.5242, "r": 173.4519, "b": 339.73718, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "Create Duplicate Object (CRTDUPOBJ) command . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01483, "t": 330.5242, "r": 530.4599, "b": 339.73718, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "82", "bbox": {"l": 536.02283, "t": 330.5242, "r": 547.14868, "b": 339.73718, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "5.4.2", "bbox": {"l": 151.20018, "t": 343.0040900000001, "r": 173.35596, "b": 352.21707, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "Copy File (CPYF) command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8949, "t": 343.0040900000001, "r": 530.53815, "b": 352.21707, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "82", "bbox": {"l": 536.07709, "t": 343.0040900000001, "r": 547.15497, "b": 352.21707, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "5.4.3", "bbox": {"l": 151.20018, "t": 355.48398, "r": 173.451, "b": 364.69696000000005, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "Copy Library (CPYLIB) command. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01372, "t": 355.48398, "r": 530.49475, "b": 364.69696000000005, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "83", "bbox": {"l": 536.05743, "t": 355.48398, "r": 547.18286, "b": 364.69696000000005, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "Chapter 6. Additional considerations", "bbox": {"l": 136.80002, "t": 377.98361, "r": 313.86292, "b": 387.19659, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 313.98047, "t": 377.98361, "r": 530.53851, "b": 387.19659, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "85", "bbox": {"l": 536.09131, "t": 377.98361, "r": 547.19684, "b": 387.19659, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "6.1", "bbox": {"l": 136.80003, "t": 389.98343, "r": 150.68416, "b": 399.19641, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "Timing of column masking", "bbox": {"l": 156.23781, "t": 389.98343, "r": 272.24521, "b": 399.19641, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 277.79886, "t": 389.98343, "r": 530.49005, "b": 399.19641, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "86", "bbox": {"l": 536.0437, "t": 389.98343, "r": 547.151, "b": 399.19641, "coord_origin": "TOPLEFT"}}, {"id": 86, "text": "6.2", "bbox": {"l": 136.80003, "t": 402.5230700000001, "r": 150.70372, "b": 411.73605, "coord_origin": "TOPLEFT"}}, {"id": 87, "text": "RCAC effects on data movement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.2652, "t": 402.5230700000001, "r": 530.49445, "b": 411.73605, "coord_origin": "TOPLEFT"}}, {"id": 88, "text": "88", "bbox": {"l": 536.05591, "t": 402.5230700000001, "r": 547.17889, "b": 411.73605, "coord_origin": "TOPLEFT"}}, {"id": 89, "text": "6.2.1", "bbox": {"l": 151.2002, "t": 415.00296, "r": 173.38661, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}}, {"id": 90, "text": "Effects when RCAC is defined on the source table", "bbox": {"l": 178.93321, "t": 415.00296, "r": 400.16882, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}}, {"id": 91, "text": ". . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 405.71545, "t": 415.00296, "r": 530.51398, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}}, {"id": 92, "text": "88", "bbox": {"l": 536.06061, "t": 415.00296, "r": 547.15381, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}}, {"id": 93, "text": "6.2.2", "bbox": {"l": 151.2002, "t": 427.48285, "r": 173.32501, "b": 436.69583, "coord_origin": "TOPLEFT"}}, {"id": 94, "text": "Effects when RCAC is defined on the target table", "bbox": {"l": 178.85622, "t": 427.48285, "r": 395.06064, "b": 436.69583, "coord_origin": "TOPLEFT"}}, {"id": 95, "text": ". . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 400.59186, "t": 427.48285, "r": 530.57513, "b": 436.69583, "coord_origin": "TOPLEFT"}}, {"id": 96, "text": "89", "bbox": {"l": 536.10632, "t": 427.48285, "r": 547.16876, "b": 436.69583, "coord_origin": "TOPLEFT"}}, {"id": 97, "text": "6.2.3", "bbox": {"l": 151.2002, "t": 440.02249, "r": 173.38657, "b": 449.23546999999996, "coord_origin": "TOPLEFT"}}, {"id": 98, "text": "Effects when RCAC is defined on both source and target tables . . . . . . . . . . . . .", "bbox": {"l": 178.93315, "t": 440.02249, "r": 530.5033, "b": 449.23546999999996, "coord_origin": "TOPLEFT"}}, {"id": 99, "text": "90", "bbox": {"l": 536.04987, "t": 440.02249, "r": 547.14307, "b": 449.23546999999996, "coord_origin": "TOPLEFT"}}, {"id": 100, "text": "6.3", "bbox": {"l": 136.80003, "t": 452.50238, "r": 150.64833, "b": 461.71536, "coord_origin": "TOPLEFT"}}, {"id": 101, "text": "RCAC effects on joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18765, "t": 452.50238, "r": 530.59979, "b": 461.71536, "coord_origin": "TOPLEFT"}}, {"id": 102, "text": "91", "bbox": {"l": 536.1391, "t": 452.50238, "r": 547.21777, "b": 461.71536, "coord_origin": "TOPLEFT"}}, {"id": 103, "text": "6.3.1", "bbox": {"l": 151.2002, "t": 464.98227, "r": 173.57745, "b": 474.19525, "coord_origin": "TOPLEFT"}}, {"id": 104, "text": "Inner joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92", "bbox": {"l": 179.17177, "t": 464.98227, "r": 547.25958, "b": 474.19525, "coord_origin": "TOPLEFT"}}, {"id": 105, "text": "6.3.2", "bbox": {"l": 151.20016, "t": 477.52191, "r": 173.60931, "b": 486.73489, "coord_origin": "TOPLEFT"}}, {"id": 106, "text": "Outer joins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94", "bbox": {"l": 179.21159, "t": 477.52191, "r": 547.25958, "b": 486.73489, "coord_origin": "TOPLEFT"}}, {"id": 107, "text": "6.3.3", "bbox": {"l": 151.20016, "t": 490.0018, "r": 173.47958, "b": 499.21478, "coord_origin": "TOPLEFT"}}, {"id": 108, "text": "Exception joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.04944, "t": 490.0018, "r": 530.4812, "b": 499.21478, "coord_origin": "TOPLEFT"}}, {"id": 109, "text": "96", "bbox": {"l": 536.05103, "t": 490.0018, "r": 547.19073, "b": 499.21478, "coord_origin": "TOPLEFT"}}, {"id": 110, "text": "6.4", "bbox": {"l": 136.8, "t": 502.54144, "r": 150.62956, "b": 511.75443, "coord_origin": "TOPLEFT"}}, {"id": 111, "text": "Monitoring, analyzing, and debugging with RCAC", "bbox": {"l": 156.16138, "t": 502.54144, "r": 372.92725, "b": 511.75443, "coord_origin": "TOPLEFT"}}, {"id": 112, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 378.45905, "t": 502.54144, "r": 530.58417, "b": 511.75443, "coord_origin": "TOPLEFT"}}, {"id": 113, "text": "97", "bbox": {"l": 536.11597, "t": 502.54144, "r": 547.17963, "b": 511.75443, "coord_origin": "TOPLEFT"}}, {"id": 114, "text": "6.4.1", "bbox": {"l": 151.20016, "t": 515.02133, "r": 173.32509, "b": 524.23431, "coord_origin": "TOPLEFT"}}, {"id": 115, "text": "Query monitoring and analysis tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85632, "t": 515.02133, "r": 530.57709, "b": 524.23431, "coord_origin": "TOPLEFT"}}, {"id": 116, "text": "97", "bbox": {"l": 536.10834, "t": 515.02133, "r": 547.17078, "b": 524.23431, "coord_origin": "TOPLEFT"}}, {"id": 117, "text": "6.4.2", "bbox": {"l": 151.20016, "t": 527.50122, "r": 173.44958, "b": 536.7142200000001, "coord_origin": "TOPLEFT"}}, {"id": 118, "text": "Index advisor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01193, "t": 527.50122, "r": 530.53064, "b": 536.7142200000001, "coord_origin": "TOPLEFT"}}, {"id": 119, "text": "99", "bbox": {"l": 536.09302, "t": 527.50122, "r": 547.21771, "b": 536.7142200000001, "coord_origin": "TOPLEFT"}}, {"id": 120, "text": "6.4.3", "bbox": {"l": 151.20013, "t": 540.0408600000001, "r": 173.35367, "b": 549.25386, "coord_origin": "TOPLEFT"}}, {"id": 121, "text": "Metadata using catalogs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89204, "t": 540.0408600000001, "r": 525.01111, "b": 549.25386, "coord_origin": "TOPLEFT"}}, {"id": 122, "text": "100", "bbox": {"l": 530.54944, "t": 540.0408600000001, "r": 547.16461, "b": 549.25386, "coord_origin": "TOPLEFT"}}, {"id": 123, "text": "6.5", "bbox": {"l": 136.79997, "t": 552.52074, "r": 150.76207, "b": 561.73373, "coord_origin": "TOPLEFT"}}, {"id": 124, "text": "Views, materialized query tables, and query rewrite with RCAC . . . . . . . . . . . . . . . .", "bbox": {"l": 156.34691, "t": 552.52074, "r": 524.80566, "b": 561.73373, "coord_origin": "TOPLEFT"}}, {"id": 125, "text": "102", "bbox": {"l": 530.3905, "t": 552.52074, "r": 547.14502, "b": 561.73373, "coord_origin": "TOPLEFT"}}, {"id": 126, "text": "6.5.1", "bbox": {"l": 151.20013, "t": 565.00061, "r": 173.42041, "b": 574.21361, "coord_origin": "TOPLEFT"}}, {"id": 127, "text": "Views", "bbox": {"l": 178.97548, "t": 565.00061, "r": 205.62183, "b": 574.21361, "coord_origin": "TOPLEFT"}}, {"id": 128, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 211.1769, "t": 565.00061, "r": 525.03827, "b": 574.21361, "coord_origin": "TOPLEFT"}}, {"id": 129, "text": "102", "bbox": {"l": 530.59332, "t": 565.00061, "r": 547.25854, "b": 574.21361, "coord_origin": "TOPLEFT"}}, {"id": 130, "text": "6.5.2", "bbox": {"l": 151.20013, "t": 577.54025, "r": 173.51099, "b": 586.75325, "coord_origin": "TOPLEFT"}}, {"id": 131, "text": "Materialized query tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.0887, "t": 577.54025, "r": 524.85681, "b": 586.75325, "coord_origin": "TOPLEFT"}}, {"id": 132, "text": "103", "bbox": {"l": 530.43451, "t": 577.54025, "r": 547.16766, "b": 586.75325, "coord_origin": "TOPLEFT"}}, {"id": 133, "text": "6.5.3", "bbox": {"l": 151.20013, "t": 590.02013, "r": 173.41756, "b": 599.23312, "coord_origin": "TOPLEFT"}}, {"id": 134, "text": "Query rewrite", "bbox": {"l": 178.97192, "t": 590.02013, "r": 238.92101000000002, "b": 599.23312, "coord_origin": "TOPLEFT"}}, {"id": 135, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 244.47537000000003, "t": 590.02013, "r": 524.9704, "b": 599.23312, "coord_origin": "TOPLEFT"}}, {"id": 136, "text": "105", "bbox": {"l": 530.52472, "t": 590.02013, "r": 547.18781, "b": 599.23312, "coord_origin": "TOPLEFT"}}, {"id": 137, "text": "6.6", "bbox": {"l": 136.79997, "t": 602.5, "r": 150.70438, "b": 611.713, "coord_origin": "TOPLEFT"}}, {"id": 138, "text": "RCAC effects on performance and scalability. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26613, "t": 602.5, "r": 524.92279, "b": 611.713, "coord_origin": "TOPLEFT"}}, {"id": 139, "text": "105", "bbox": {"l": 530.48456, "t": 602.5, "r": 547.16986, "b": 611.713, "coord_origin": "TOPLEFT"}}, {"id": 140, "text": "6.7", "bbox": {"l": 136.79997, "t": 615.03964, "r": 150.70482, "b": 624.25264, "coord_origin": "TOPLEFT"}}, {"id": 141, "text": "Exclusive lock to implement RCAC (availability issues) . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26675, "t": 615.03964, "r": 524.87512, "b": 624.25264, "coord_origin": "TOPLEFT"}}, {"id": 142, "text": "107", "bbox": {"l": 530.43701, "t": 615.03964, "r": 547.12286, "b": 624.25264, "coord_origin": "TOPLEFT"}}, {"id": 143, "text": "6.8", "bbox": {"l": 136.79997, "t": 627.51952, "r": 150.62793, "b": 636.73251, "coord_origin": "TOPLEFT"}}, {"id": 144, "text": "Avoiding propagation of masked data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.1591, "t": 627.51952, "r": 525.047, "b": 636.73251, "coord_origin": "TOPLEFT"}}, {"id": 145, "text": "108", "bbox": {"l": 530.57819, "t": 627.51952, "r": 547.17175, "b": 636.73251, "coord_origin": "TOPLEFT"}}, {"id": 146, "text": "6.8.1", "bbox": {"l": 151.20013, "t": 639.99939, "r": 173.48119, "b": 649.21239, "coord_origin": "TOPLEFT"}}, {"id": 147, "text": "Check constraint solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.05145, "t": 639.99939, "r": 524.91864, "b": 649.21239, "coord_origin": "TOPLEFT"}}, {"id": 148, "text": "108", "bbox": {"l": 530.48889, "t": 639.99939, "r": 547.19971, "b": 649.21239, "coord_origin": "TOPLEFT"}}, {"id": 149, "text": "6.8.2", "bbox": {"l": 151.20013, "t": 652.53903, "r": 173.32486, "b": 661.75203, "coord_origin": "TOPLEFT"}}, {"id": 150, "text": "Before trigger solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85603, "t": 652.53903, "r": 525.07208, "b": 661.75203, "coord_origin": "TOPLEFT"}}, {"id": 151, "text": "109", "bbox": {"l": 530.60321, "t": 652.53903, "r": 547.19678, "b": 661.75203, "coord_origin": "TOPLEFT"}}, {"id": 152, "text": "6.9", "bbox": {"l": 136.79997, "t": 665.01891, "r": 150.70258, "b": 674.23191, "coord_origin": "TOPLEFT"}}, {"id": 153, "text": "Triggers and functions (SECURED) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26361, "t": 665.01891, "r": 524.87256, "b": 674.23191, "coord_origin": "TOPLEFT"}}, {"id": 154, "text": "109", "bbox": {"l": 530.43359, "t": 665.01891, "r": 547.11676, "b": 674.23191, "coord_origin": "TOPLEFT"}}, {"id": 155, "text": "6.9.1", "bbox": {"l": 151.20013, "t": 677.49879, "r": 173.32774, "b": 686.71179, "coord_origin": "TOPLEFT"}}, {"id": 156, "text": "Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85965, "t": 677.49879, "r": 525.13092, "b": 686.71179, "coord_origin": "TOPLEFT"}}, {"id": 157, "text": "109", "bbox": {"l": 530.66284, "t": 677.49879, "r": 547.25854, "b": 686.71179, "coord_origin": "TOPLEFT"}}, {"id": 158, "text": "6.9.2", "bbox": {"l": 151.20013, "t": 690.0384300000001, "r": 173.57503, "b": 699.251434, "coord_origin": "TOPLEFT"}}, {"id": 159, "text": "Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.16876, "t": 690.0384300000001, "r": 524.84283, "b": 699.251434, "coord_origin": "TOPLEFT"}}, {"id": 160, "text": "110", "bbox": {"l": 530.43652, "t": 690.0384300000001, "r": 547.21771, "b": 699.251434, "coord_origin": "TOPLEFT"}}, {"id": 161, "text": "6.10", "bbox": {"l": 136.79996, "t": 702.518311, "r": 156.34335, "b": 711.731316, "coord_origin": "TOPLEFT"}}, {"id": 162, "text": "RCAC is only one part of the solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 159.13527, "t": 702.518311, "r": 524.81567, "b": 711.731316, "coord_origin": "TOPLEFT"}}, {"id": 163, "text": "111", "bbox": {"l": 530.39954, "t": 702.518311, "r": 547.151, "b": 711.731316, "coord_origin": "TOPLEFT"}}, {"id": 164, "text": "Chapter 7. Row and Column Access Control management", "bbox": {"l": 136.79996, "t": 725.017952, "r": 413.01562, "b": 734.230957, "coord_origin": "TOPLEFT"}}, {"id": 165, "text": " . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 413.99973, "t": 725.017952, "r": 525.0014, "b": 734.230957, "coord_origin": "TOPLEFT"}}, {"id": 166, "text": "113", "bbox": {"l": 530.55145, "t": 725.017952, "r": 547.20172, "b": 734.230957, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl"], "num_rows": 47, "num_cols": 2, "table_cells": [{"bbox": {"l": 136.8, "t": 71.50867000000005, "r": 530.59589, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.13281, "t": 71.50867000000005, "r": 547.20673, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "37", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80002, "t": 83.50847999999996, "r": 530.52008, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.1 Business requirements for the RCAC banking scenario . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.05914, "t": 83.50847999999996, "r": 547.13721, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "38", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80002, "t": 95.98834000000011, "r": 372.67761, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.2 Description of the users roles and responsibilities", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 378.21689, "t": 95.98834000000011, "r": 547.16486, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . 39", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80002, "t": 108.52795000000015, "r": 530.53625, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3 Implementation of RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.09039, "t": 108.52795000000015, "r": 547.19873, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "42", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 121.00780999999995, "r": 400.57443, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.1 Reviewing the tables that are used in this example", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 406.10547, "t": 121.00780999999995, "r": 547.14697, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . 42", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 133.48766999999998, "r": 516.9256, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.2 Assigning function ID QIBM_DB_SECADM to the Database Engineers group", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 522.46039, "t": 133.48766999999998, "r": 547.36707, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . 47", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 146.02728000000002, "r": 530.56757, "b": 155.24030000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.3 Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.09894, "t": 146.02728000000002, "r": 547.16174, "b": 155.24030000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "50", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 158.50714000000005, "r": 411.62085, "b": 167.72015, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.4 Creating the CUSTOMER_LOGIN_ID global variable", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 417.1524, "t": 158.50714000000005, "r": 547.14386, "b": 167.72015, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . 52", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 170.98699999999997, "r": 530.53705, "b": 180.20001000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.5 Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.07599, "t": 170.98699999999997, "r": 547.15387, "b": 180.20001000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "54", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 183.52661, "r": 339.45404, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.6 Defining and creating column masks", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 344.99295, "t": 183.52661, "r": 547.16388, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 196.00647000000004, "r": 530.53931, "b": 205.21947999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.7 Restricting the inserting and updating of masked data . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.07812, "t": 196.00647000000004, "r": 547.15576, "b": 205.21947999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "60", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 221.02594, "r": 530.48206, "b": 230.23895000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.9 Reviewing row permissions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.03638, "t": 221.02594, "r": 547.14502, "b": 230.23895000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "64", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 233.50580000000002, "r": 530.44922, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.10 Demonstrating data access with RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.01947, "t": 233.50580000000002, "r": 547.16003, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "66", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 245.98566000000005, "r": 530.43353, "b": 255.19867, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.11 Query implementation with RCAC activated . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.00372, "t": 245.98566000000005, "r": 547.1441, "b": 255.19867, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "75", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80002, "t": 268.48528999999996, "r": 530.53851, "b": 277.6983, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "Chapter 5. RCAC and non-SQL interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.09161, "t": 268.48528999999996, "r": 547.19781, "b": 277.6983, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "79", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 156.18524, "t": 280.48514, "r": 547.17688, "b": 289.69812, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Unsupported interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80002, "t": 305.50467, "r": 530.49377, "b": 314.71765, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "5.3 Accidental updates with masked values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.04749, "t": 305.50467, "r": 547.15491, "b": 314.71765, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "81", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80002, "t": 317.98456, "r": 530.56433, "b": 327.19754, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "5.4 System CL commands considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.09583, "t": 317.98456, "r": 547.15894, "b": 327.19754, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "82", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 330.5242, "r": 530.4599, "b": 339.73718, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "5.4.1 Create Duplicate Object (CRTDUPOBJ) command . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.02283, "t": 330.5242, "r": 547.14868, "b": 339.73718, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "82", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 343.0040900000001, "r": 530.53815, "b": 364.69696000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "5.4.2 Copy File (CPYF) command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4.3 Copy Library (CPYLIB) command. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.07709, "t": 343.0040900000001, "r": 547.15497, "b": 352.21707, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "82", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.05743, "t": 355.48398, "r": 547.18286, "b": 364.69696000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "83", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80002, "t": 377.98361, "r": 530.53851, "b": 387.19659, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 22, "end_row_offset_idx": 23, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "Chapter 6. Additional considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 277.79886, "t": 377.98361, "r": 547.19684, "b": 399.19641, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 23, "end_row_offset_idx": 24, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "85 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80003, "t": 402.5230700000001, "r": 530.51398, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 23, "end_row_offset_idx": 24, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.2 RCAC effects on data movement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 151.2002, "t": 415.00296, "r": 400.16882, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 24, "end_row_offset_idx": 25, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.2.1 Effects when RCAC is defined on the source table", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.06061, "t": 415.00296, "r": 547.15381, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 25, "end_row_offset_idx": 26, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "88", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 400.59186, "t": 427.48285, "r": 547.16876, "b": 449.23546999999996, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 22, "end_row_offset_idx": 23, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . 89 90", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80003, "t": 440.02249, "r": 530.59979, "b": 461.71536, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 26, "end_row_offset_idx": 27, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.2.3 Effects when RCAC is defined on both source and target tables . . . . . . . . . . . . . 6.3 RCAC effects on joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.1391, "t": 452.50238, "r": 547.21777, "b": 461.71536, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 26, "end_row_offset_idx": 27, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "91", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.2002, "t": 464.98227, "r": 547.25958, "b": 474.19525, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 27, "end_row_offset_idx": 28, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.3.1 Inner joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 151.20016, "t": 477.52191, "r": 547.25958, "b": 486.73489, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 28, "end_row_offset_idx": 29, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.3.2 Outer joins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 151.20016, "t": 490.0018, "r": 530.4812, "b": 499.21478, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 29, "end_row_offset_idx": 30, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.3.3 Exception joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.05103, "t": 490.0018, "r": 547.19073, "b": 499.21478, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 29, "end_row_offset_idx": 30, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "96", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.8, "t": 502.54144, "r": 372.92725, "b": 511.75443, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 30, "end_row_offset_idx": 31, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.4 Monitoring, analyzing, and debugging with RCAC", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 378.45905, "t": 502.54144, "r": 530.58417, "b": 511.75443, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 31, "end_row_offset_idx": 32, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.11597, "t": 502.54144, "r": 547.17963, "b": 511.75443, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 30, "end_row_offset_idx": 31, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "97", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 178.85632, "t": 515.02133, "r": 547.17078, "b": 524.23431, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 31, "end_row_offset_idx": 32, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Query monitoring and analysis tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20016, "t": 527.50122, "r": 530.53064, "b": 536.7142200000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 32, "end_row_offset_idx": 33, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.4.2 Index advisor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.09302, "t": 527.50122, "r": 547.21771, "b": 536.7142200000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 32, "end_row_offset_idx": 33, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "99", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20013, "t": 540.0408600000001, "r": 525.01111, "b": 549.25386, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 33, "end_row_offset_idx": 34, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.4.3 Metadata using catalogs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.54944, "t": 540.0408600000001, "r": 547.16461, "b": 549.25386, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "100", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79997, "t": 552.52074, "r": 524.80566, "b": 561.73373, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 34, "end_row_offset_idx": 35, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.5 Views, materialized query tables, and query rewrite with RCAC . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.3905, "t": 552.52074, "r": 547.14502, "b": 561.73373, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 34, "end_row_offset_idx": 35, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "102", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20013, "t": 577.54025, "r": 524.85681, "b": 586.75325, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 35, "end_row_offset_idx": 36, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.5.2 Materialized query tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.43451, "t": 577.54025, "r": 547.16766, "b": 586.75325, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 35, "end_row_offset_idx": 36, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "103", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20013, "t": 590.02013, "r": 524.9704, "b": 611.713, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 37, "end_row_offset_idx": 38, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.5.3 Query rewrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . RCAC effects on performance and scalability. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.52472, "t": 590.02013, "r": 547.18781, "b": 599.23312, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 36, "end_row_offset_idx": 37, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "105", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79997, "t": 602.5, "r": 150.70438, "b": 611.713, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 38, "end_row_offset_idx": 39, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.6", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.48456, "t": 602.5, "r": 547.16986, "b": 611.713, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 38, "end_row_offset_idx": 39, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "105", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79997, "t": 615.03964, "r": 525.047, "b": 636.73251, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 40, "end_row_offset_idx": 41, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.7 Exclusive lock to implement RCAC (availability issues) . . . . . . . . . . . . . . . . . . . . . . . 6.8 Avoiding propagation of masked data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.43701, "t": 615.03964, "r": 547.12286, "b": 624.25264, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 39, "end_row_offset_idx": 40, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "107", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.57819, "t": 627.51952, "r": 547.17175, "b": 636.73251, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 40, "end_row_offset_idx": 41, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "108", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.48889, "t": 639.99939, "r": 547.19971, "b": 649.21239, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 41, "end_row_offset_idx": 42, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "108", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.43359, "t": 665.01891, "r": 547.11676, "b": 674.23191, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 42, "end_row_offset_idx": 43, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "109", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.66284, "t": 677.49879, "r": 547.25854, "b": 686.71179, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 43, "end_row_offset_idx": 44, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "109", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.39954, "t": 702.518311, "r": 547.151, "b": 711.731316, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 45, "end_row_offset_idx": 46, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "111", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79996, "t": 725.017952, "r": 525.0014, "b": 734.230957, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 46, "end_row_offset_idx": 47, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "Chapter 7. Row and Column Access Control management . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.55145, "t": 725.017952, "r": 547.20172, "b": 734.230957, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 44, "end_row_offset_idx": 45, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "113", "column_header": false, "row_header": false, "row_section": false}]}], "headers": [{"label": "page_footer", "id": 0, "page_no": 5, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.4805679321289, "t": 754.1161499023438, "r": 75.641998, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8876830339431763, "cells": [{"id": 0, "text": "iv ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 75.641998, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "iv"}, {"label": "page_footer", "id": 1, "page_no": 5, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 90.44805145263672, "t": 754.6052856445312, "r": 331.7034606933594, "b": 763.9476318359375, "coord_origin": "TOPLEFT"}, "confidence": 0.936427891254425, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 90.599998, "t": 755.538002, "r": 331.55881, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 6, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": " Contents ", "bbox": {"l": 488.22, "t": 755.538002, "r": 529.11151, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "v", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "7.1", "bbox": {"l": 136.7999, "t": 71.50903000000005, "r": 150.68571, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Managing row permissions and column masks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.24004, "t": 71.50903000000005, "r": 524.94354, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "114", "bbox": {"l": 530.49786, "t": 71.50903000000005, "r": 547.16083, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "7.1.1", "bbox": {"l": 151.20006, "t": 83.98888999999997, "r": 173.44891, "b": 93.20190000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Source management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01112, "t": 83.98888999999997, "r": 524.94879, "b": 93.20190000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "114", "bbox": {"l": 530.51099, "t": 83.98888999999997, "r": 547.19763, "b": 93.20190000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "7.1.2", "bbox": {"l": 151.20006, "t": 96.52850000000001, "r": 173.41805, "b": 105.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Modifying definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97253, "t": 96.52850000000001, "r": 524.97968, "b": 105.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "114", "bbox": {"l": 530.53418, "t": 96.52850000000001, "r": 547.19769, "b": 105.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "7.1.3", "bbox": {"l": 151.20006, "t": 109.00836000000004, "r": 173.32086, "b": 118.22136999999998, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Turning on and off . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85107, "t": 109.00836000000004, "r": 525.02576, "b": 118.22136999999998, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "114", "bbox": {"l": 530.55597, "t": 109.00836000000004, "r": 547.14661, "b": 118.22136999999998, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "7.1.4", "bbox": {"l": 151.20006, "t": 121.48821999999996, "r": 173.41551, "b": 130.70123, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Regenerating", "bbox": {"l": 178.96938, "t": 121.48821999999996, "r": 238.93310999999997, "b": 130.70123, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 244.48697, "t": 121.48821999999996, "r": 524.95703, "b": 130.70123, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "114", "bbox": {"l": 530.51086, "t": 121.48821999999996, "r": 547.17249, "b": 130.70123, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "7.2", "bbox": {"l": 136.7999, "t": 134.02783, "r": 150.68552, "b": 143.24084000000005, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Managing tables with row permissions and column masks. . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.23976, "t": 134.02783, "r": 524.91779, "b": 143.24084000000005, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "115", "bbox": {"l": 530.47205, "t": 134.02783, "r": 547.13477, "b": 143.24084000000005, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "7.2.1", "bbox": {"l": 151.20006, "t": 146.50769000000003, "r": 173.4474, "b": 155.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Save and restore. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00923, "t": 146.50769000000003, "r": 524.93335, "b": 155.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "115", "bbox": {"l": 530.49518, "t": 146.50769000000003, "r": 547.18073, "b": 155.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "7.2.2", "bbox": {"l": 151.20006, "t": 158.98755000000006, "r": 173.38383, "b": 168.20056, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Table migration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.92978, "t": 158.98755000000006, "r": 524.96283, "b": 168.20056, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "116", "bbox": {"l": 530.50873, "t": 158.98755000000006, "r": 547.14661, "b": 168.20056, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "7.3", "bbox": {"l": 136.7999, "t": 171.52715999999998, "r": 150.68399, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Monitoring and auditing function usage", "bbox": {"l": 156.23763, "t": 171.52715999999998, "r": 327.80109, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 333.35474, "t": 171.52715999999998, "r": 524.95526, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "117", "bbox": {"l": 530.50891, "t": 171.52715999999998, "r": 547.1698, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Chapter 8. Designing and planning for success", "bbox": {"l": 136.7999, "t": 194.02679, "r": 362.66785, "b": 203.23981000000003, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 363.95959, "t": 194.02679, "r": 524.98785, "b": 203.23981000000003, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "119", "bbox": {"l": 530.54059, "t": 194.02679, "r": 547.19867, "b": 203.23981000000003, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "8.1", "bbox": {"l": 136.79988, "t": 206.02661, "r": 150.68515, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Implementing RCAC with good design and proper planning", "bbox": {"l": 156.23926, "t": 206.02661, "r": 416.63306, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": ". . . . . . . . . . . . . . . . . . .", "bbox": {"l": 422.18716, "t": 206.02661, "r": 524.93817, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "120", "bbox": {"l": 530.49231, "t": 206.02661, "r": 547.1546, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "8.2", "bbox": {"l": 136.79988, "t": 218.50647000000004, "r": 150.74098, "b": 227.71947999999998, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "DB2 for i Center of Excellence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.31741, "t": 218.50647000000004, "r": 524.86377, "b": 227.71947999999998, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "120", "bbox": {"l": 530.44019, "t": 218.50647000000004, "r": 547.16949, "b": 227.71947999999998, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Appendix A. Database definitions for the RCAC banking example", "bbox": {"l": 136.79988, "t": 241.00609999999995, "r": 447.03098, "b": 250.21911999999998, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": " . . . . . . . . . . . . . .", "bbox": {"l": 447.35968, "t": 241.00609999999995, "r": 525.01611, "b": 250.21911999999998, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "121", "bbox": {"l": 530.56299, "t": 241.00609999999995, "r": 547.20367, "b": 250.21911999999998, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Related publications", "bbox": {"l": 136.7999, "t": 263.02570000000003, "r": 234.45174999999998, "b": 272.23870999999997, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 236.15984999999998, "t": 263.02570000000003, "r": 524.97516, "b": 272.23870999999997, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "127", "bbox": {"l": 530.5293, "t": 263.02570000000003, "r": 547.19171, "b": 272.23870999999997, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Other publications", "bbox": {"l": 136.7999, "t": 275.50562, "r": 217.75055, "b": 284.7186, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127", "bbox": {"l": 223.33541999999997, "t": 275.50562, "r": 547.25854, "b": 284.7186, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Online resources", "bbox": {"l": 136.79993, "t": 287.9855, "r": 212.6161, "b": 297.19849, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127", "bbox": {"l": 218.19348000000002, "t": 287.9855, "r": 547.25854, "b": 297.19849, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Help from IBM", "bbox": {"l": 136.79993, "t": 300.52515, "r": 200.54581, "b": 309.73813, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 206.09241, "t": 300.52515, "r": 525.02136, "b": 309.73813, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "128", "bbox": {"l": 530.56793, "t": 300.52515, "r": 547.2077, "b": 309.73813, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 488.22, "t": 754.8673095703125, "r": 529.11151, "b": 763.863001, "coord_origin": "TOPLEFT"}, "confidence": 0.9201837182044983, "cells": [{"id": 0, "text": " Contents ", "bbox": {"l": 488.22, "t": 755.538002, "r": 529.11151, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 540.8323974609375, "t": 754.848721, "r": 547.3976440429688, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8568527102470398, "cells": [{"id": 1, "text": "v", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "table", "bbox": {"l": 135.83180236816406, "t": 70.6937026977539, "r": 547.9264526367188, "b": 309.73813, "coord_origin": "TOPLEFT"}, "confidence": 0.978112518787384, "cells": [{"id": 2, "text": "7.1", "bbox": {"l": 136.7999, "t": 71.50903000000005, "r": 150.68571, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Managing row permissions and column masks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.24004, "t": 71.50903000000005, "r": 524.94354, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "114", "bbox": {"l": 530.49786, "t": 71.50903000000005, "r": 547.16083, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "7.1.1", "bbox": {"l": 151.20006, "t": 83.98888999999997, "r": 173.44891, "b": 93.20190000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Source management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01112, "t": 83.98888999999997, "r": 524.94879, "b": 93.20190000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "114", "bbox": {"l": 530.51099, "t": 83.98888999999997, "r": 547.19763, "b": 93.20190000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "7.1.2", "bbox": {"l": 151.20006, "t": 96.52850000000001, "r": 173.41805, "b": 105.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Modifying definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97253, "t": 96.52850000000001, "r": 524.97968, "b": 105.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "114", "bbox": {"l": 530.53418, "t": 96.52850000000001, "r": 547.19769, "b": 105.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "7.1.3", "bbox": {"l": 151.20006, "t": 109.00836000000004, "r": 173.32086, "b": 118.22136999999998, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Turning on and off . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85107, "t": 109.00836000000004, "r": 525.02576, "b": 118.22136999999998, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "114", "bbox": {"l": 530.55597, "t": 109.00836000000004, "r": 547.14661, "b": 118.22136999999998, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "7.1.4", "bbox": {"l": 151.20006, "t": 121.48821999999996, "r": 173.41551, "b": 130.70123, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Regenerating", "bbox": {"l": 178.96938, "t": 121.48821999999996, "r": 238.93310999999997, "b": 130.70123, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 244.48697, "t": 121.48821999999996, "r": 524.95703, "b": 130.70123, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "114", "bbox": {"l": 530.51086, "t": 121.48821999999996, "r": 547.17249, "b": 130.70123, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "7.2", "bbox": {"l": 136.7999, "t": 134.02783, "r": 150.68552, "b": 143.24084000000005, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Managing tables with row permissions and column masks. . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.23976, "t": 134.02783, "r": 524.91779, "b": 143.24084000000005, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "115", "bbox": {"l": 530.47205, "t": 134.02783, "r": 547.13477, "b": 143.24084000000005, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "7.2.1", "bbox": {"l": 151.20006, "t": 146.50769000000003, "r": 173.4474, "b": 155.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Save and restore. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00923, "t": 146.50769000000003, "r": 524.93335, "b": 155.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "115", "bbox": {"l": 530.49518, "t": 146.50769000000003, "r": 547.18073, "b": 155.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "7.2.2", "bbox": {"l": 151.20006, "t": 158.98755000000006, "r": 173.38383, "b": 168.20056, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Table migration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.92978, "t": 158.98755000000006, "r": 524.96283, "b": 168.20056, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "116", "bbox": {"l": 530.50873, "t": 158.98755000000006, "r": 547.14661, "b": 168.20056, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "7.3", "bbox": {"l": 136.7999, "t": 171.52715999999998, "r": 150.68399, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Monitoring and auditing function usage", "bbox": {"l": 156.23763, "t": 171.52715999999998, "r": 327.80109, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 333.35474, "t": 171.52715999999998, "r": 524.95526, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "117", "bbox": {"l": 530.50891, "t": 171.52715999999998, "r": 547.1698, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Chapter 8. Designing and planning for success", "bbox": {"l": 136.7999, "t": 194.02679, "r": 362.66785, "b": 203.23981000000003, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 363.95959, "t": 194.02679, "r": 524.98785, "b": 203.23981000000003, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "119", "bbox": {"l": 530.54059, "t": 194.02679, "r": 547.19867, "b": 203.23981000000003, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "8.1", "bbox": {"l": 136.79988, "t": 206.02661, "r": 150.68515, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Implementing RCAC with good design and proper planning", "bbox": {"l": 156.23926, "t": 206.02661, "r": 416.63306, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": ". . . . . . . . . . . . . . . . . . .", "bbox": {"l": 422.18716, "t": 206.02661, "r": 524.93817, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "120", "bbox": {"l": 530.49231, "t": 206.02661, "r": 547.1546, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "8.2", "bbox": {"l": 136.79988, "t": 218.50647000000004, "r": 150.74098, "b": 227.71947999999998, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "DB2 for i Center of Excellence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.31741, "t": 218.50647000000004, "r": 524.86377, "b": 227.71947999999998, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "120", "bbox": {"l": 530.44019, "t": 218.50647000000004, "r": 547.16949, "b": 227.71947999999998, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Appendix A. Database definitions for the RCAC banking example", "bbox": {"l": 136.79988, "t": 241.00609999999995, "r": 447.03098, "b": 250.21911999999998, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": " . . . . . . . . . . . . . .", "bbox": {"l": 447.35968, "t": 241.00609999999995, "r": 525.01611, "b": 250.21911999999998, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "121", "bbox": {"l": 530.56299, "t": 241.00609999999995, "r": 547.20367, "b": 250.21911999999998, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Related publications", "bbox": {"l": 136.7999, "t": 263.02570000000003, "r": 234.45174999999998, "b": 272.23870999999997, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 236.15984999999998, "t": 263.02570000000003, "r": 524.97516, "b": 272.23870999999997, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "127", "bbox": {"l": 530.5293, "t": 263.02570000000003, "r": 547.19171, "b": 272.23870999999997, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Other publications", "bbox": {"l": 136.7999, "t": 275.50562, "r": 217.75055, "b": 284.7186, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127", "bbox": {"l": 223.33541999999997, "t": 275.50562, "r": 547.25854, "b": 284.7186, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Online resources", "bbox": {"l": 136.79993, "t": 287.9855, "r": 212.6161, "b": 297.19849, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127", "bbox": {"l": 218.19348000000002, "t": 287.9855, "r": 547.25854, "b": 297.19849, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Help from IBM", "bbox": {"l": 136.79993, "t": 300.52515, "r": 200.54581, "b": 309.73813, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 206.09241, "t": 300.52515, "r": 525.02136, "b": 309.73813, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "128", "bbox": {"l": 530.56793, "t": 300.52515, "r": 547.2077, "b": 309.73813, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {"2": {"label": "table", "id": 2, "page_no": 6, "cluster": {"id": 2, "label": "table", "bbox": {"l": 135.83180236816406, "t": 70.6937026977539, "r": 547.9264526367188, "b": 309.73813, "coord_origin": "TOPLEFT"}, "confidence": 0.978112518787384, "cells": [{"id": 2, "text": "7.1", "bbox": {"l": 136.7999, "t": 71.50903000000005, "r": 150.68571, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Managing row permissions and column masks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.24004, "t": 71.50903000000005, "r": 524.94354, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "114", "bbox": {"l": 530.49786, "t": 71.50903000000005, "r": 547.16083, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "7.1.1", "bbox": {"l": 151.20006, "t": 83.98888999999997, "r": 173.44891, "b": 93.20190000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Source management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01112, "t": 83.98888999999997, "r": 524.94879, "b": 93.20190000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "114", "bbox": {"l": 530.51099, "t": 83.98888999999997, "r": 547.19763, "b": 93.20190000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "7.1.2", "bbox": {"l": 151.20006, "t": 96.52850000000001, "r": 173.41805, "b": 105.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Modifying definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97253, "t": 96.52850000000001, "r": 524.97968, "b": 105.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "114", "bbox": {"l": 530.53418, "t": 96.52850000000001, "r": 547.19769, "b": 105.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "7.1.3", "bbox": {"l": 151.20006, "t": 109.00836000000004, "r": 173.32086, "b": 118.22136999999998, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Turning on and off . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85107, "t": 109.00836000000004, "r": 525.02576, "b": 118.22136999999998, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "114", "bbox": {"l": 530.55597, "t": 109.00836000000004, "r": 547.14661, "b": 118.22136999999998, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "7.1.4", "bbox": {"l": 151.20006, "t": 121.48821999999996, "r": 173.41551, "b": 130.70123, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Regenerating", "bbox": {"l": 178.96938, "t": 121.48821999999996, "r": 238.93310999999997, "b": 130.70123, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 244.48697, "t": 121.48821999999996, "r": 524.95703, "b": 130.70123, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "114", "bbox": {"l": 530.51086, "t": 121.48821999999996, "r": 547.17249, "b": 130.70123, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "7.2", "bbox": {"l": 136.7999, "t": 134.02783, "r": 150.68552, "b": 143.24084000000005, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Managing tables with row permissions and column masks. . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.23976, "t": 134.02783, "r": 524.91779, "b": 143.24084000000005, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "115", "bbox": {"l": 530.47205, "t": 134.02783, "r": 547.13477, "b": 143.24084000000005, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "7.2.1", "bbox": {"l": 151.20006, "t": 146.50769000000003, "r": 173.4474, "b": 155.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Save and restore. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00923, "t": 146.50769000000003, "r": 524.93335, "b": 155.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "115", "bbox": {"l": 530.49518, "t": 146.50769000000003, "r": 547.18073, "b": 155.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "7.2.2", "bbox": {"l": 151.20006, "t": 158.98755000000006, "r": 173.38383, "b": 168.20056, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Table migration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.92978, "t": 158.98755000000006, "r": 524.96283, "b": 168.20056, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "116", "bbox": {"l": 530.50873, "t": 158.98755000000006, "r": 547.14661, "b": 168.20056, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "7.3", "bbox": {"l": 136.7999, "t": 171.52715999999998, "r": 150.68399, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Monitoring and auditing function usage", "bbox": {"l": 156.23763, "t": 171.52715999999998, "r": 327.80109, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 333.35474, "t": 171.52715999999998, "r": 524.95526, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "117", "bbox": {"l": 530.50891, "t": 171.52715999999998, "r": 547.1698, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Chapter 8. Designing and planning for success", "bbox": {"l": 136.7999, "t": 194.02679, "r": 362.66785, "b": 203.23981000000003, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 363.95959, "t": 194.02679, "r": 524.98785, "b": 203.23981000000003, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "119", "bbox": {"l": 530.54059, "t": 194.02679, "r": 547.19867, "b": 203.23981000000003, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "8.1", "bbox": {"l": 136.79988, "t": 206.02661, "r": 150.68515, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Implementing RCAC with good design and proper planning", "bbox": {"l": 156.23926, "t": 206.02661, "r": 416.63306, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": ". . . . . . . . . . . . . . . . . . .", "bbox": {"l": 422.18716, "t": 206.02661, "r": 524.93817, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "120", "bbox": {"l": 530.49231, "t": 206.02661, "r": 547.1546, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "8.2", "bbox": {"l": 136.79988, "t": 218.50647000000004, "r": 150.74098, "b": 227.71947999999998, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "DB2 for i Center of Excellence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.31741, "t": 218.50647000000004, "r": 524.86377, "b": 227.71947999999998, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "120", "bbox": {"l": 530.44019, "t": 218.50647000000004, "r": 547.16949, "b": 227.71947999999998, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Appendix A. Database definitions for the RCAC banking example", "bbox": {"l": 136.79988, "t": 241.00609999999995, "r": 447.03098, "b": 250.21911999999998, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": " . . . . . . . . . . . . . .", "bbox": {"l": 447.35968, "t": 241.00609999999995, "r": 525.01611, "b": 250.21911999999998, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "121", "bbox": {"l": 530.56299, "t": 241.00609999999995, "r": 547.20367, "b": 250.21911999999998, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Related publications", "bbox": {"l": 136.7999, "t": 263.02570000000003, "r": 234.45174999999998, "b": 272.23870999999997, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 236.15984999999998, "t": 263.02570000000003, "r": 524.97516, "b": 272.23870999999997, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "127", "bbox": {"l": 530.5293, "t": 263.02570000000003, "r": 547.19171, "b": 272.23870999999997, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Other publications", "bbox": {"l": 136.7999, "t": 275.50562, "r": 217.75055, "b": 284.7186, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127", "bbox": {"l": 223.33541999999997, "t": 275.50562, "r": 547.25854, "b": 284.7186, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Online resources", "bbox": {"l": 136.79993, "t": 287.9855, "r": 212.6161, "b": 297.19849, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127", "bbox": {"l": 218.19348000000002, "t": 287.9855, "r": 547.25854, "b": 297.19849, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Help from IBM", "bbox": {"l": 136.79993, "t": 300.52515, "r": 200.54581, "b": 309.73813, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 206.09241, "t": 300.52515, "r": 525.02136, "b": 309.73813, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "128", "bbox": {"l": 530.56793, "t": 300.52515, "r": 547.2077, "b": 309.73813, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl"], "num_rows": 17, "num_cols": 2, "table_cells": [{"bbox": {"l": 136.7999, "t": 71.50903000000005, "r": 524.94354, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.1 Managing row permissions and column masks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.49786, "t": 71.50903000000005, "r": 547.16083, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "114", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20006, "t": 83.98888999999997, "r": 524.94879, "b": 93.20190000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.1.1 Source management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.51099, "t": 83.98888999999997, "r": 547.19763, "b": 93.20190000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "114", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20006, "t": 96.52850000000001, "r": 524.97968, "b": 105.74152000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.1.2 Modifying definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.53418, "t": 96.52850000000001, "r": 547.19769, "b": 105.74152000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "114", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20006, "t": 109.00836000000004, "r": 525.02576, "b": 118.22136999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.1.3 Turning on and off . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.55597, "t": 109.00836000000004, "r": 547.14661, "b": 118.22136999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "114", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20006, "t": 121.48821999999996, "r": 238.93310999999997, "b": 130.70123, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.1.4 Regenerating", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 244.48697, "t": 121.48821999999996, "r": 547.17249, "b": 130.70123, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.7999, "t": 134.02783, "r": 524.91779, "b": 143.24084000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.2 Managing tables with row permissions and column masks. . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.47205, "t": 134.02783, "r": 547.13477, "b": 143.24084000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "115", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20006, "t": 146.50769000000003, "r": 524.93335, "b": 155.72069999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.2.1 Save and restore. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.49518, "t": 146.50769000000003, "r": 547.18073, "b": 155.72069999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "115", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20006, "t": 158.98755000000006, "r": 524.96283, "b": 168.20056, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.2.2 Table migration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.50873, "t": 158.98755000000006, "r": 547.14661, "b": 168.20056, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "116", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.7999, "t": 171.52715999999998, "r": 524.95526, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.3 Monitoring and auditing function usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.50891, "t": 171.52715999999998, "r": 547.1698, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "117", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.7999, "t": 194.02679, "r": 362.66785, "b": 203.23981000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 8. Designing and planning for success", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 363.95959, "t": 194.02679, "r": 547.19867, "b": 203.23981000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79988, "t": 206.02661, "r": 416.63306, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "8.1 Implementing RCAC with good design and proper planning", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 422.18716, "t": 206.02661, "r": 547.1546, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . 120", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79988, "t": 218.50647000000004, "r": 524.86377, "b": 227.71947999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "8.2 DB2 for i Center of Excellence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.44019, "t": 218.50647000000004, "r": 547.16949, "b": 227.71947999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "120", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79988, "t": 241.00609999999995, "r": 447.03098, "b": 250.21911999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Appendix A. Database definitions for the RCAC banking example", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 447.35968, "t": 241.00609999999995, "r": 547.20367, "b": 250.21911999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . 121", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.7999, "t": 263.02570000000003, "r": 234.45174999999998, "b": 272.23870999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Related publications", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 236.15984999999998, "t": 263.02570000000003, "r": 547.19171, "b": 272.23870999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.7999, "t": 275.50562, "r": 217.75055, "b": 284.7186, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Other publications", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 223.33541999999997, "t": 275.50562, "r": 547.25854, "b": 284.7186, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79993, "t": 287.9855, "r": 212.6161, "b": 297.19849, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Online resources", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 218.19348000000002, "t": 287.9855, "r": 547.25854, "b": 297.19849, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79993, "t": 300.52515, "r": 200.54581, "b": 309.73813, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Help from IBM", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 206.09241, "t": 300.52515, "r": 547.2077, "b": 309.73813, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128", "column_header": false, "row_header": false, "row_section": false}]}}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 6, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 488.22, "t": 754.8673095703125, "r": 529.11151, "b": 763.863001, "coord_origin": "TOPLEFT"}, "confidence": 0.9201837182044983, "cells": [{"id": 0, "text": " Contents ", "bbox": {"l": 488.22, "t": 755.538002, "r": 529.11151, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Contents"}, {"label": "page_footer", "id": 1, "page_no": 6, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 540.8323974609375, "t": 754.848721, "r": 547.3976440429688, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8568527102470398, "cells": [{"id": 1, "text": "v", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "v"}, {"label": "table", "id": 2, "page_no": 6, "cluster": {"id": 2, "label": "table", "bbox": {"l": 135.83180236816406, "t": 70.6937026977539, "r": 547.9264526367188, "b": 309.73813, "coord_origin": "TOPLEFT"}, "confidence": 0.978112518787384, "cells": [{"id": 2, "text": "7.1", "bbox": {"l": 136.7999, "t": 71.50903000000005, "r": 150.68571, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Managing row permissions and column masks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.24004, "t": 71.50903000000005, "r": 524.94354, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "114", "bbox": {"l": 530.49786, "t": 71.50903000000005, "r": 547.16083, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "7.1.1", "bbox": {"l": 151.20006, "t": 83.98888999999997, "r": 173.44891, "b": 93.20190000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Source management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01112, "t": 83.98888999999997, "r": 524.94879, "b": 93.20190000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "114", "bbox": {"l": 530.51099, "t": 83.98888999999997, "r": 547.19763, "b": 93.20190000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "7.1.2", "bbox": {"l": 151.20006, "t": 96.52850000000001, "r": 173.41805, "b": 105.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Modifying definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97253, "t": 96.52850000000001, "r": 524.97968, "b": 105.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "114", "bbox": {"l": 530.53418, "t": 96.52850000000001, "r": 547.19769, "b": 105.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "7.1.3", "bbox": {"l": 151.20006, "t": 109.00836000000004, "r": 173.32086, "b": 118.22136999999998, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Turning on and off . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85107, "t": 109.00836000000004, "r": 525.02576, "b": 118.22136999999998, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "114", "bbox": {"l": 530.55597, "t": 109.00836000000004, "r": 547.14661, "b": 118.22136999999998, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "7.1.4", "bbox": {"l": 151.20006, "t": 121.48821999999996, "r": 173.41551, "b": 130.70123, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Regenerating", "bbox": {"l": 178.96938, "t": 121.48821999999996, "r": 238.93310999999997, "b": 130.70123, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 244.48697, "t": 121.48821999999996, "r": 524.95703, "b": 130.70123, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "114", "bbox": {"l": 530.51086, "t": 121.48821999999996, "r": 547.17249, "b": 130.70123, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "7.2", "bbox": {"l": 136.7999, "t": 134.02783, "r": 150.68552, "b": 143.24084000000005, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Managing tables with row permissions and column masks. . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.23976, "t": 134.02783, "r": 524.91779, "b": 143.24084000000005, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "115", "bbox": {"l": 530.47205, "t": 134.02783, "r": 547.13477, "b": 143.24084000000005, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "7.2.1", "bbox": {"l": 151.20006, "t": 146.50769000000003, "r": 173.4474, "b": 155.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Save and restore. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00923, "t": 146.50769000000003, "r": 524.93335, "b": 155.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "115", "bbox": {"l": 530.49518, "t": 146.50769000000003, "r": 547.18073, "b": 155.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "7.2.2", "bbox": {"l": 151.20006, "t": 158.98755000000006, "r": 173.38383, "b": 168.20056, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Table migration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.92978, "t": 158.98755000000006, "r": 524.96283, "b": 168.20056, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "116", "bbox": {"l": 530.50873, "t": 158.98755000000006, "r": 547.14661, "b": 168.20056, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "7.3", "bbox": {"l": 136.7999, "t": 171.52715999999998, "r": 150.68399, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Monitoring and auditing function usage", "bbox": {"l": 156.23763, "t": 171.52715999999998, "r": 327.80109, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 333.35474, "t": 171.52715999999998, "r": 524.95526, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "117", "bbox": {"l": 530.50891, "t": 171.52715999999998, "r": 547.1698, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Chapter 8. Designing and planning for success", "bbox": {"l": 136.7999, "t": 194.02679, "r": 362.66785, "b": 203.23981000000003, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 363.95959, "t": 194.02679, "r": 524.98785, "b": 203.23981000000003, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "119", "bbox": {"l": 530.54059, "t": 194.02679, "r": 547.19867, "b": 203.23981000000003, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "8.1", "bbox": {"l": 136.79988, "t": 206.02661, "r": 150.68515, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Implementing RCAC with good design and proper planning", "bbox": {"l": 156.23926, "t": 206.02661, "r": 416.63306, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": ". . . . . . . . . . . . . . . . . . .", "bbox": {"l": 422.18716, "t": 206.02661, "r": 524.93817, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "120", "bbox": {"l": 530.49231, "t": 206.02661, "r": 547.1546, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "8.2", "bbox": {"l": 136.79988, "t": 218.50647000000004, "r": 150.74098, "b": 227.71947999999998, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "DB2 for i Center of Excellence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.31741, "t": 218.50647000000004, "r": 524.86377, "b": 227.71947999999998, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "120", "bbox": {"l": 530.44019, "t": 218.50647000000004, "r": 547.16949, "b": 227.71947999999998, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Appendix A. Database definitions for the RCAC banking example", "bbox": {"l": 136.79988, "t": 241.00609999999995, "r": 447.03098, "b": 250.21911999999998, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": " . . . . . . . . . . . . . .", "bbox": {"l": 447.35968, "t": 241.00609999999995, "r": 525.01611, "b": 250.21911999999998, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "121", "bbox": {"l": 530.56299, "t": 241.00609999999995, "r": 547.20367, "b": 250.21911999999998, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Related publications", "bbox": {"l": 136.7999, "t": 263.02570000000003, "r": 234.45174999999998, "b": 272.23870999999997, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 236.15984999999998, "t": 263.02570000000003, "r": 524.97516, "b": 272.23870999999997, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "127", "bbox": {"l": 530.5293, "t": 263.02570000000003, "r": 547.19171, "b": 272.23870999999997, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Other publications", "bbox": {"l": 136.7999, "t": 275.50562, "r": 217.75055, "b": 284.7186, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127", "bbox": {"l": 223.33541999999997, "t": 275.50562, "r": 547.25854, "b": 284.7186, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Online resources", "bbox": {"l": 136.79993, "t": 287.9855, "r": 212.6161, "b": 297.19849, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127", "bbox": {"l": 218.19348000000002, "t": 287.9855, "r": 547.25854, "b": 297.19849, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Help from IBM", "bbox": {"l": 136.79993, "t": 300.52515, "r": 200.54581, "b": 309.73813, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 206.09241, "t": 300.52515, "r": 525.02136, "b": 309.73813, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "128", "bbox": {"l": 530.56793, "t": 300.52515, "r": 547.2077, "b": 309.73813, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl"], "num_rows": 17, "num_cols": 2, "table_cells": [{"bbox": {"l": 136.7999, "t": 71.50903000000005, "r": 524.94354, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.1 Managing row permissions and column masks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.49786, "t": 71.50903000000005, "r": 547.16083, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "114", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20006, "t": 83.98888999999997, "r": 524.94879, "b": 93.20190000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.1.1 Source management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.51099, "t": 83.98888999999997, "r": 547.19763, "b": 93.20190000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "114", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20006, "t": 96.52850000000001, "r": 524.97968, "b": 105.74152000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.1.2 Modifying definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.53418, "t": 96.52850000000001, "r": 547.19769, "b": 105.74152000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "114", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20006, "t": 109.00836000000004, "r": 525.02576, "b": 118.22136999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.1.3 Turning on and off . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.55597, "t": 109.00836000000004, "r": 547.14661, "b": 118.22136999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "114", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20006, "t": 121.48821999999996, "r": 238.93310999999997, "b": 130.70123, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.1.4 Regenerating", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 244.48697, "t": 121.48821999999996, "r": 547.17249, "b": 130.70123, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.7999, "t": 134.02783, "r": 524.91779, "b": 143.24084000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.2 Managing tables with row permissions and column masks. . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.47205, "t": 134.02783, "r": 547.13477, "b": 143.24084000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "115", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20006, "t": 146.50769000000003, "r": 524.93335, "b": 155.72069999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.2.1 Save and restore. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.49518, "t": 146.50769000000003, "r": 547.18073, "b": 155.72069999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "115", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20006, "t": 158.98755000000006, "r": 524.96283, "b": 168.20056, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.2.2 Table migration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.50873, "t": 158.98755000000006, "r": 547.14661, "b": 168.20056, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "116", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.7999, "t": 171.52715999999998, "r": 524.95526, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.3 Monitoring and auditing function usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.50891, "t": 171.52715999999998, "r": 547.1698, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "117", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.7999, "t": 194.02679, "r": 362.66785, "b": 203.23981000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 8. Designing and planning for success", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 363.95959, "t": 194.02679, "r": 547.19867, "b": 203.23981000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79988, "t": 206.02661, "r": 416.63306, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "8.1 Implementing RCAC with good design and proper planning", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 422.18716, "t": 206.02661, "r": 547.1546, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . 120", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79988, "t": 218.50647000000004, "r": 524.86377, "b": 227.71947999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "8.2 DB2 for i Center of Excellence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.44019, "t": 218.50647000000004, "r": 547.16949, "b": 227.71947999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "120", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79988, "t": 241.00609999999995, "r": 447.03098, "b": 250.21911999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Appendix A. Database definitions for the RCAC banking example", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 447.35968, "t": 241.00609999999995, "r": 547.20367, "b": 250.21911999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . 121", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.7999, "t": 263.02570000000003, "r": 234.45174999999998, "b": 272.23870999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Related publications", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 236.15984999999998, "t": 263.02570000000003, "r": 547.19171, "b": 272.23870999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.7999, "t": 275.50562, "r": 217.75055, "b": 284.7186, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Other publications", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 223.33541999999997, "t": 275.50562, "r": 547.25854, "b": 284.7186, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79993, "t": 287.9855, "r": 212.6161, "b": 297.19849, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Online resources", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 218.19348000000002, "t": 287.9855, "r": 547.25854, "b": 297.19849, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79993, "t": 300.52515, "r": 200.54581, "b": 309.73813, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Help from IBM", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 206.09241, "t": 300.52515, "r": 547.2077, "b": 309.73813, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128", "column_header": false, "row_header": false, "row_section": false}]}], "body": [{"label": "table", "id": 2, "page_no": 6, "cluster": {"id": 2, "label": "table", "bbox": {"l": 135.83180236816406, "t": 70.6937026977539, "r": 547.9264526367188, "b": 309.73813, "coord_origin": "TOPLEFT"}, "confidence": 0.978112518787384, "cells": [{"id": 2, "text": "7.1", "bbox": {"l": 136.7999, "t": 71.50903000000005, "r": 150.68571, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Managing row permissions and column masks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.24004, "t": 71.50903000000005, "r": 524.94354, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "114", "bbox": {"l": 530.49786, "t": 71.50903000000005, "r": 547.16083, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "7.1.1", "bbox": {"l": 151.20006, "t": 83.98888999999997, "r": 173.44891, "b": 93.20190000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Source management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01112, "t": 83.98888999999997, "r": 524.94879, "b": 93.20190000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "114", "bbox": {"l": 530.51099, "t": 83.98888999999997, "r": 547.19763, "b": 93.20190000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "7.1.2", "bbox": {"l": 151.20006, "t": 96.52850000000001, "r": 173.41805, "b": 105.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Modifying definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97253, "t": 96.52850000000001, "r": 524.97968, "b": 105.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "114", "bbox": {"l": 530.53418, "t": 96.52850000000001, "r": 547.19769, "b": 105.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "7.1.3", "bbox": {"l": 151.20006, "t": 109.00836000000004, "r": 173.32086, "b": 118.22136999999998, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Turning on and off . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85107, "t": 109.00836000000004, "r": 525.02576, "b": 118.22136999999998, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "114", "bbox": {"l": 530.55597, "t": 109.00836000000004, "r": 547.14661, "b": 118.22136999999998, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "7.1.4", "bbox": {"l": 151.20006, "t": 121.48821999999996, "r": 173.41551, "b": 130.70123, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Regenerating", "bbox": {"l": 178.96938, "t": 121.48821999999996, "r": 238.93310999999997, "b": 130.70123, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 244.48697, "t": 121.48821999999996, "r": 524.95703, "b": 130.70123, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "114", "bbox": {"l": 530.51086, "t": 121.48821999999996, "r": 547.17249, "b": 130.70123, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "7.2", "bbox": {"l": 136.7999, "t": 134.02783, "r": 150.68552, "b": 143.24084000000005, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Managing tables with row permissions and column masks. . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.23976, "t": 134.02783, "r": 524.91779, "b": 143.24084000000005, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "115", "bbox": {"l": 530.47205, "t": 134.02783, "r": 547.13477, "b": 143.24084000000005, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "7.2.1", "bbox": {"l": 151.20006, "t": 146.50769000000003, "r": 173.4474, "b": 155.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Save and restore. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00923, "t": 146.50769000000003, "r": 524.93335, "b": 155.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "115", "bbox": {"l": 530.49518, "t": 146.50769000000003, "r": 547.18073, "b": 155.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "7.2.2", "bbox": {"l": 151.20006, "t": 158.98755000000006, "r": 173.38383, "b": 168.20056, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Table migration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.92978, "t": 158.98755000000006, "r": 524.96283, "b": 168.20056, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "116", "bbox": {"l": 530.50873, "t": 158.98755000000006, "r": 547.14661, "b": 168.20056, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "7.3", "bbox": {"l": 136.7999, "t": 171.52715999999998, "r": 150.68399, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Monitoring and auditing function usage", "bbox": {"l": 156.23763, "t": 171.52715999999998, "r": 327.80109, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 333.35474, "t": 171.52715999999998, "r": 524.95526, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "117", "bbox": {"l": 530.50891, "t": 171.52715999999998, "r": 547.1698, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Chapter 8. Designing and planning for success", "bbox": {"l": 136.7999, "t": 194.02679, "r": 362.66785, "b": 203.23981000000003, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 363.95959, "t": 194.02679, "r": 524.98785, "b": 203.23981000000003, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "119", "bbox": {"l": 530.54059, "t": 194.02679, "r": 547.19867, "b": 203.23981000000003, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "8.1", "bbox": {"l": 136.79988, "t": 206.02661, "r": 150.68515, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Implementing RCAC with good design and proper planning", "bbox": {"l": 156.23926, "t": 206.02661, "r": 416.63306, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": ". . . . . . . . . . . . . . . . . . .", "bbox": {"l": 422.18716, "t": 206.02661, "r": 524.93817, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "120", "bbox": {"l": 530.49231, "t": 206.02661, "r": 547.1546, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "8.2", "bbox": {"l": 136.79988, "t": 218.50647000000004, "r": 150.74098, "b": 227.71947999999998, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "DB2 for i Center of Excellence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.31741, "t": 218.50647000000004, "r": 524.86377, "b": 227.71947999999998, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "120", "bbox": {"l": 530.44019, "t": 218.50647000000004, "r": 547.16949, "b": 227.71947999999998, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Appendix A. Database definitions for the RCAC banking example", "bbox": {"l": 136.79988, "t": 241.00609999999995, "r": 447.03098, "b": 250.21911999999998, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": " . . . . . . . . . . . . . .", "bbox": {"l": 447.35968, "t": 241.00609999999995, "r": 525.01611, "b": 250.21911999999998, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "121", "bbox": {"l": 530.56299, "t": 241.00609999999995, "r": 547.20367, "b": 250.21911999999998, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Related publications", "bbox": {"l": 136.7999, "t": 263.02570000000003, "r": 234.45174999999998, "b": 272.23870999999997, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 236.15984999999998, "t": 263.02570000000003, "r": 524.97516, "b": 272.23870999999997, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "127", "bbox": {"l": 530.5293, "t": 263.02570000000003, "r": 547.19171, "b": 272.23870999999997, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Other publications", "bbox": {"l": 136.7999, "t": 275.50562, "r": 217.75055, "b": 284.7186, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127", "bbox": {"l": 223.33541999999997, "t": 275.50562, "r": 547.25854, "b": 284.7186, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Online resources", "bbox": {"l": 136.79993, "t": 287.9855, "r": 212.6161, "b": 297.19849, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127", "bbox": {"l": 218.19348000000002, "t": 287.9855, "r": 547.25854, "b": 297.19849, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Help from IBM", "bbox": {"l": 136.79993, "t": 300.52515, "r": 200.54581, "b": 309.73813, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 206.09241, "t": 300.52515, "r": 525.02136, "b": 309.73813, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "128", "bbox": {"l": 530.56793, "t": 300.52515, "r": 547.2077, "b": 309.73813, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl"], "num_rows": 17, "num_cols": 2, "table_cells": [{"bbox": {"l": 136.7999, "t": 71.50903000000005, "r": 524.94354, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.1 Managing row permissions and column masks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.49786, "t": 71.50903000000005, "r": 547.16083, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "114", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20006, "t": 83.98888999999997, "r": 524.94879, "b": 93.20190000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.1.1 Source management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.51099, "t": 83.98888999999997, "r": 547.19763, "b": 93.20190000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "114", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20006, "t": 96.52850000000001, "r": 524.97968, "b": 105.74152000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.1.2 Modifying definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.53418, "t": 96.52850000000001, "r": 547.19769, "b": 105.74152000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "114", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20006, "t": 109.00836000000004, "r": 525.02576, "b": 118.22136999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.1.3 Turning on and off . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.55597, "t": 109.00836000000004, "r": 547.14661, "b": 118.22136999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "114", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20006, "t": 121.48821999999996, "r": 238.93310999999997, "b": 130.70123, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.1.4 Regenerating", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 244.48697, "t": 121.48821999999996, "r": 547.17249, "b": 130.70123, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.7999, "t": 134.02783, "r": 524.91779, "b": 143.24084000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.2 Managing tables with row permissions and column masks. . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.47205, "t": 134.02783, "r": 547.13477, "b": 143.24084000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "115", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20006, "t": 146.50769000000003, "r": 524.93335, "b": 155.72069999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.2.1 Save and restore. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.49518, "t": 146.50769000000003, "r": 547.18073, "b": 155.72069999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "115", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20006, "t": 158.98755000000006, "r": 524.96283, "b": 168.20056, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.2.2 Table migration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.50873, "t": 158.98755000000006, "r": 547.14661, "b": 168.20056, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "116", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.7999, "t": 171.52715999999998, "r": 524.95526, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.3 Monitoring and auditing function usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.50891, "t": 171.52715999999998, "r": 547.1698, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "117", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.7999, "t": 194.02679, "r": 362.66785, "b": 203.23981000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 8. Designing and planning for success", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 363.95959, "t": 194.02679, "r": 547.19867, "b": 203.23981000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79988, "t": 206.02661, "r": 416.63306, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "8.1 Implementing RCAC with good design and proper planning", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 422.18716, "t": 206.02661, "r": 547.1546, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . 120", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79988, "t": 218.50647000000004, "r": 524.86377, "b": 227.71947999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "8.2 DB2 for i Center of Excellence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.44019, "t": 218.50647000000004, "r": 547.16949, "b": 227.71947999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "120", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79988, "t": 241.00609999999995, "r": 447.03098, "b": 250.21911999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Appendix A. Database definitions for the RCAC banking example", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 447.35968, "t": 241.00609999999995, "r": 547.20367, "b": 250.21911999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . 121", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.7999, "t": 263.02570000000003, "r": 234.45174999999998, "b": 272.23870999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Related publications", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 236.15984999999998, "t": 263.02570000000003, "r": 547.19171, "b": 272.23870999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.7999, "t": 275.50562, "r": 217.75055, "b": 284.7186, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Other publications", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 223.33541999999997, "t": 275.50562, "r": 547.25854, "b": 284.7186, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79993, "t": 287.9855, "r": 212.6161, "b": 297.19849, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Online resources", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 218.19348000000002, "t": 287.9855, "r": 547.25854, "b": 297.19849, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79993, "t": 300.52515, "r": 200.54581, "b": 309.73813, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Help from IBM", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 206.09241, "t": 300.52515, "r": 547.2077, "b": 309.73813, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128", "column_header": false, "row_header": false, "row_section": false}]}], "headers": [{"label": "page_footer", "id": 0, "page_no": 6, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 488.22, "t": 754.8673095703125, "r": 529.11151, "b": 763.863001, "coord_origin": "TOPLEFT"}, "confidence": 0.9201837182044983, "cells": [{"id": 0, "text": " Contents ", "bbox": {"l": 488.22, "t": 755.538002, "r": 529.11151, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Contents"}, {"label": "page_footer", "id": 1, "page_no": 6, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 540.8323974609375, "t": 754.848721, "r": 547.3976440429688, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8568527102470398, "cells": [{"id": 1, "text": "v", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "v"}]}}, {"page_no": 7, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "vi ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 75.641998, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 90.599998, "t": 755.538002, "r": 331.55881, "b": 763.863001, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.35196685791016, "t": 754.20947265625, "r": 75.641998, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8942763209342957, "cells": [{"id": 0, "text": "vi ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 75.641998, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 90.52510833740234, "t": 754.4613647460938, "r": 331.7355651855469, "b": 764.1465454101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9421936273574829, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 90.599998, "t": 755.538002, "r": 331.55881, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 7, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.35196685791016, "t": 754.20947265625, "r": 75.641998, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8942763209342957, "cells": [{"id": 0, "text": "vi ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 75.641998, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "vi"}, {"label": "page_footer", "id": 1, "page_no": 7, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 90.52510833740234, "t": 754.4613647460938, "r": 331.7355651855469, "b": 764.1465454101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9421936273574829, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 90.599998, "t": 755.538002, "r": 331.55881, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}], "body": [], "headers": [{"label": "page_footer", "id": 0, "page_no": 7, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.35196685791016, "t": 754.20947265625, "r": 75.641998, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8942763209342957, "cells": [{"id": 0, "text": "vi ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 75.641998, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "vi"}, {"label": "page_footer", "id": 1, "page_no": 7, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 90.52510833740234, "t": 754.4613647460938, "r": 331.7355651855469, "b": 764.1465454101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9421936273574829, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 90.599998, "t": 755.538002, "r": 331.55881, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 8, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "vii", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25024, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Notices", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 151.50481, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "This information was developed for products and services offered in the U.S.A. ", "bbox": {"l": 64.800003, "t": 132.64862000000005, "r": 413.70071, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "IBM may not offer the products, services, or features discussed in this document in other countries. Consult ", "bbox": {"l": 64.800003, "t": 152.62836000000004, "r": 540.54333, "b": 161.84136999999998, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "your local IBM representative for information on the products and services currently available in your area. Any ", "bbox": {"l": 64.799988, "t": 162.64813000000004, "r": 547.2356, "b": 171.86114999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, ", "bbox": {"l": 64.799988, "t": 172.60815000000002, "r": 543.57697, "b": 181.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "program, or service may be used. Any functionally equivalent product, program, or service that does not ", "bbox": {"l": 64.799988, "t": 182.62793, "r": 525.50171, "b": 191.84094000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "infringe any IBM intellectual property right may be used instead. However, it is the user\u2019s responsibility to ", "bbox": {"l": 64.799988, "t": 192.64770999999996, "r": 528.32147, "b": 201.86072000000001, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "evaluate and verify the operation of any non-IBM product, program, or service. ", "bbox": {"l": 64.799988, "t": 202.60772999999995, "r": 412.72058, "b": 211.82074, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "IBM may have patents or pending patent applications covering subject matter described in this document. The ", "bbox": {"l": 64.799988, "t": 222.64728000000002, "r": 547.29926, "b": 231.86028999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "furnishing of this document does not grant you any license to these patents. You can send license inquiries, in ", "bbox": {"l": 64.799988, "t": 232.6073, "r": 547.25757, "b": 241.82030999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "writing, to: ", "bbox": {"l": 64.799988, "t": 242.62707999999998, "r": 113.18168000000001, "b": 251.84009000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "IBM Director of Licensing, IBM Corporation, North Castle Drive, Armonk, NY 10504-1785 U.S.A.", "bbox": {"l": 64.799988, "t": 252.64684999999997, "r": 489.19962, "b": 261.85986, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "The following paragraph does not apply to the United Kingdom or any other country where such ", "bbox": {"l": 64.799988, "t": 272.62658999999996, "r": 523.8205, "b": 281.8396, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "provisions are inconsistent with local law:", "bbox": {"l": 64.799988, "t": 282.64639, "r": 264.67526, "b": 291.85938, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": " INTERNATIONAL BUSINESS MACHINES CORPORATION ", "bbox": {"l": 264.77985, "t": 282.64639, "r": 533.51349, "b": 291.85938, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "PROVIDES THIS PUBLICATION \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR ", "bbox": {"l": 64.799973, "t": 292.60638, "r": 532.43884, "b": 301.81937, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, ", "bbox": {"l": 64.799973, "t": 302.62613, "r": 534.26959, "b": 311.83911, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states do not allow disclaimer of ", "bbox": {"l": 64.799973, "t": 312.6459, "r": 547.19171, "b": 321.85889, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "express or implied warranties in certain transactions, therefore, this statement may not apply to you. ", "bbox": {"l": 64.799988, "t": 322.6059, "r": 507.27797999999996, "b": 331.81888, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "This information could include technical inaccuracies or typographical errors. Changes are periodically made ", "bbox": {"l": 64.799988, "t": 342.64542, "r": 545.95361, "b": 351.8584, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "to the information herein; these changes will be incorporated in new editions of the publication. IBM may make ", "bbox": {"l": 64.799988, "t": 352.60541, "r": 547.27533, "b": 361.81839, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time ", "bbox": {"l": 64.799988, "t": 362.62515, "r": 547.27838, "b": 371.83813, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "without notice. ", "bbox": {"l": 64.799988, "t": 372.64493, "r": 131.26108, "b": 381.85791, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Any references in this information to non-IBM websites are provided for convenience only and do not in any ", "bbox": {"l": 64.799988, "t": 392.62469, "r": 539.79742, "b": 401.83768, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "manner serve as an endorsement of those websites. The materials at those websites are not part of the ", "bbox": {"l": 64.799988, "t": 402.64444, "r": 525.03448, "b": 411.85742, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "materials for this IBM product and use of those websites is at your own risk. ", "bbox": {"l": 64.799988, "t": 412.60443, "r": 400.91714, "b": 421.81741, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IBM may use or distribute any of the information you supply in any way it believes appropriate without incurring ", "bbox": {"l": 64.799988, "t": 432.64394999999996, "r": 547.19867, "b": 441.85693, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "any obligation to you.", "bbox": {"l": 64.799988, "t": 442.60393999999997, "r": 158.73772, "b": 451.81692999999996, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Any performance data contained herein was determined in a controlled environment. Therefore, the results ", "bbox": {"l": 64.799988, "t": 462.64447, "r": 538.51471, "b": 471.85745, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "obtained in other operating environments may vary significantly. Some measurements may have been made ", "bbox": {"l": 64.799988, "t": 472.60446, "r": 544.15875, "b": 481.81744, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "on development-level systems and there is no guarantee that these measurements will be the same on ", "bbox": {"l": 64.799988, "t": 482.62424, "r": 521.33148, "b": 491.83722, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "generally available systems. Furthermore, some measurements may have been estimated through ", "bbox": {"l": 64.800018, "t": 492.64401, "r": 501.98029, "b": 501.85699, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "extrapolation. Actual results may vary. Users of this document should verify the applicable data for their ", "bbox": {"l": 64.800018, "t": 502.604, "r": 521.40015, "b": 511.81699, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "specific environment.", "bbox": {"l": 64.800018, "t": 512.62375, "r": 158.48874, "b": 521.83673, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Information concerning non-IBM products was obtained from the suppliers of those products, their published ", "bbox": {"l": 64.800018, "t": 532.66425, "r": 544.53741, "b": 541.87726, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "announcements or other publicly available sources. IBM has not tested those products and cannot confirm the ", "bbox": {"l": 64.800034, "t": 542.62427, "r": 547.23169, "b": 551.83727, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the ", "bbox": {"l": 64.800049, "t": 552.6440299999999, "r": 531.85834, "b": 561.85703, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "capabilities of non-IBM products should be addressed to the suppliers of those products.", "bbox": {"l": 64.800079, "t": 562.6637900000001, "r": 455.11453, "b": 571.87679, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "This information contains examples of data and reports used in daily business operations. To illustrate them ", "bbox": {"l": 64.800079, "t": 582.64355, "r": 541.41901, "b": 591.85655, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "as completely as possible, the examples include the names of individuals, companies, brands, and products. ", "bbox": {"l": 64.800079, "t": 592.66331, "r": 545.78656, "b": 601.87631, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "All of these names are fictitious and any similarity to the names and addresses used by an actual business ", "bbox": {"l": 64.800064, "t": 602.62332, "r": 537.76855, "b": 611.83632, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "enterprise is entirely coincidental. ", "bbox": {"l": 64.800064, "t": 612.64308, "r": 215.72999999999996, "b": 621.85608, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "COPYRIGHT LICENSE:", "bbox": {"l": 64.800064, "t": 632.62285, "r": 172.49951, "b": 641.8358499999999, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "This information contains sample application programs in source language, which illustrate programming ", "bbox": {"l": 64.800064, "t": 652.66237, "r": 528.461, "b": 661.87537, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "techniques on various operating platforms. You may copy, modify, and distribute these sample programs in ", "bbox": {"l": 64.800079, "t": 662.62236, "r": 535.69391, "b": 671.83537, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "any form without payment to IBM, for the purposes of developing, using, marketing or distributing application ", "bbox": {"l": 64.800079, "t": 672.64212, "r": 544.75562, "b": 681.85513, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "programs conforming to the application programming interface for the operating platform for which the sample ", "bbox": {"l": 64.800079, "t": 682.66188, "r": 547.24377, "b": 691.8748899999999, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "programs are written. These examples have not been thoroughly tested under all conditions. IBM, therefore, ", "bbox": {"l": 64.800079, "t": 692.62188, "r": 542.89099, "b": 701.834885, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "cannot guarantee or imply reliability, serviceability, or function of these programs. ", "bbox": {"l": 64.800079, "t": 702.64164, "r": 423.58121, "b": 711.854645, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.6475715637207, "t": 754.7320556640625, "r": 257.24335, "b": 764.1610717773438, "coord_origin": "TOPLEFT"}, "confidence": 0.9500033855438232, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.3445434570312, "t": 754.3482666015625, "r": 547.25024, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9123973846435547, "cells": [{"id": 1, "text": "vii", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25024, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.800003, "t": 72.94640350341797, "r": 151.50481, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9534567594528198, "cells": [{"id": 2, "text": "Notices", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 151.50481, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 63.85922622680664, "t": 131.95469665527344, "r": 413.70071, "b": 141.96286010742188, "coord_origin": "TOPLEFT"}, "confidence": 0.9347162246704102, "cells": [{"id": 3, "text": "This information was developed for products and services offered in the U.S.A. ", "bbox": {"l": 64.800003, "t": 132.64862000000005, "r": 413.70071, "b": 141.86163, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 64.08584594726562, "t": 151.7967071533203, "r": 547.2356, "b": 212.513427734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9879042506217957, "cells": [{"id": 4, "text": "IBM may not offer the products, services, or features discussed in this document in other countries. Consult ", "bbox": {"l": 64.800003, "t": 152.62836000000004, "r": 540.54333, "b": 161.84136999999998, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "your local IBM representative for information on the products and services currently available in your area. Any ", "bbox": {"l": 64.799988, "t": 162.64813000000004, "r": 547.2356, "b": 171.86114999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, ", "bbox": {"l": 64.799988, "t": 172.60815000000002, "r": 543.57697, "b": 181.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "program, or service may be used. Any functionally equivalent product, program, or service that does not ", "bbox": {"l": 64.799988, "t": 182.62793, "r": 525.50171, "b": 191.84094000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "infringe any IBM intellectual property right may be used instead. However, it is the user\u2019s responsibility to ", "bbox": {"l": 64.799988, "t": 192.64770999999996, "r": 528.32147, "b": 201.86072000000001, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "evaluate and verify the operation of any non-IBM product, program, or service. ", "bbox": {"l": 64.799988, "t": 202.60772999999995, "r": 412.72058, "b": 211.82074, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 64.23300170898438, "t": 221.91311645507812, "r": 547.29926, "b": 251.84009000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9709556102752686, "cells": [{"id": 10, "text": "IBM may have patents or pending patent applications covering subject matter described in this document. The ", "bbox": {"l": 64.799988, "t": 222.64728000000002, "r": 547.29926, "b": 231.86028999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "furnishing of this document does not grant you any license to these patents. You can send license inquiries, in ", "bbox": {"l": 64.799988, "t": 232.6073, "r": 547.25757, "b": 241.82030999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "writing, to: ", "bbox": {"l": 64.799988, "t": 242.62707999999998, "r": 113.18168000000001, "b": 251.84009000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 64.32848358154297, "t": 251.89076232910156, "r": 489.19962, "b": 262.3831481933594, "coord_origin": "TOPLEFT"}, "confidence": 0.9133641123771667, "cells": [{"id": 13, "text": "IBM Director of Licensing, IBM Corporation, North Castle Drive, Armonk, NY 10504-1785 U.S.A.", "bbox": {"l": 64.799988, "t": 252.64684999999997, "r": 489.19962, "b": 261.85986, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 63.91102600097656, "t": 271.83697509765625, "r": 547.19171, "b": 332.256591796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9860420823097229, "cells": [{"id": 14, "text": "The following paragraph does not apply to the United Kingdom or any other country where such ", "bbox": {"l": 64.799988, "t": 272.62658999999996, "r": 523.8205, "b": 281.8396, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "provisions are inconsistent with local law:", "bbox": {"l": 64.799988, "t": 282.64639, "r": 264.67526, "b": 291.85938, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": " INTERNATIONAL BUSINESS MACHINES CORPORATION ", "bbox": {"l": 264.77985, "t": 282.64639, "r": 533.51349, "b": 291.85938, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "PROVIDES THIS PUBLICATION \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR ", "bbox": {"l": 64.799973, "t": 292.60638, "r": 532.43884, "b": 301.81937, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, ", "bbox": {"l": 64.799973, "t": 302.62613, "r": 534.26959, "b": 311.83911, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states do not allow disclaimer of ", "bbox": {"l": 64.799973, "t": 312.6459, "r": 547.19171, "b": 321.85889, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "express or implied warranties in certain transactions, therefore, this statement may not apply to you. ", "bbox": {"l": 64.799988, "t": 322.6059, "r": 507.27797999999996, "b": 331.81888, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 63.85258865356445, "t": 342.0672912597656, "r": 547.27838, "b": 381.85791, "coord_origin": "TOPLEFT"}, "confidence": 0.9850608706474304, "cells": [{"id": 21, "text": "This information could include technical inaccuracies or typographical errors. Changes are periodically made ", "bbox": {"l": 64.799988, "t": 342.64542, "r": 545.95361, "b": 351.8584, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "to the information herein; these changes will be incorporated in new editions of the publication. IBM may make ", "bbox": {"l": 64.799988, "t": 352.60541, "r": 547.27533, "b": 361.81839, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time ", "bbox": {"l": 64.799988, "t": 362.62515, "r": 547.27838, "b": 371.83813, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "without notice. ", "bbox": {"l": 64.799988, "t": 372.64493, "r": 131.26108, "b": 381.85791, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 64.01903533935547, "t": 391.9712219238281, "r": 539.79742, "b": 422.1513366699219, "coord_origin": "TOPLEFT"}, "confidence": 0.9852286577224731, "cells": [{"id": 25, "text": "Any references in this information to non-IBM websites are provided for convenience only and do not in any ", "bbox": {"l": 64.799988, "t": 392.62469, "r": 539.79742, "b": 401.83768, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "manner serve as an endorsement of those websites. The materials at those websites are not part of the ", "bbox": {"l": 64.799988, "t": 402.64444, "r": 525.03448, "b": 411.85742, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "materials for this IBM product and use of those websites is at your own risk. ", "bbox": {"l": 64.799988, "t": 412.60443, "r": 400.91714, "b": 421.81741, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 64.25189208984375, "t": 432.0647888183594, "r": 547.19867, "b": 452.3858337402344, "coord_origin": "TOPLEFT"}, "confidence": 0.9783881306648254, "cells": [{"id": 28, "text": "IBM may use or distribute any of the information you supply in any way it believes appropriate without incurring ", "bbox": {"l": 64.799988, "t": 432.64394999999996, "r": 547.19867, "b": 441.85693, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "any obligation to you.", "bbox": {"l": 64.799988, "t": 442.60393999999997, "r": 158.73772, "b": 451.81692999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 64.00050354003906, "t": 462.2513732910156, "r": 544.15875, "b": 521.8851928710938, "coord_origin": "TOPLEFT"}, "confidence": 0.9882644414901733, "cells": [{"id": 30, "text": "Any performance data contained herein was determined in a controlled environment. Therefore, the results ", "bbox": {"l": 64.799988, "t": 462.64447, "r": 538.51471, "b": 471.85745, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "obtained in other operating environments may vary significantly. Some measurements may have been made ", "bbox": {"l": 64.799988, "t": 472.60446, "r": 544.15875, "b": 481.81744, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "on development-level systems and there is no guarantee that these measurements will be the same on ", "bbox": {"l": 64.799988, "t": 482.62424, "r": 521.33148, "b": 491.83722, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "generally available systems. Furthermore, some measurements may have been estimated through ", "bbox": {"l": 64.800018, "t": 492.64401, "r": 501.98029, "b": 501.85699, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "extrapolation. Actual results may vary. Users of this document should verify the applicable data for their ", "bbox": {"l": 64.800018, "t": 502.604, "r": 521.40015, "b": 511.81699, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "specific environment.", "bbox": {"l": 64.800018, "t": 512.62375, "r": 158.48874, "b": 521.83673, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 64.13472747802734, "t": 532.0626831054688, "r": 547.23169, "b": 572.26904296875, "coord_origin": "TOPLEFT"}, "confidence": 0.986961841583252, "cells": [{"id": 36, "text": "Information concerning non-IBM products was obtained from the suppliers of those products, their published ", "bbox": {"l": 64.800018, "t": 532.66425, "r": 544.53741, "b": 541.87726, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "announcements or other publicly available sources. IBM has not tested those products and cannot confirm the ", "bbox": {"l": 64.800034, "t": 542.62427, "r": 547.23169, "b": 551.83727, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the ", "bbox": {"l": 64.800049, "t": 552.6440299999999, "r": 531.85834, "b": 561.85703, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "capabilities of non-IBM products should be addressed to the suppliers of those products.", "bbox": {"l": 64.800079, "t": 562.6637900000001, "r": 455.11453, "b": 571.87679, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 63.89973449707031, "t": 582.2474365234375, "r": 545.78656, "b": 622.1400756835938, "coord_origin": "TOPLEFT"}, "confidence": 0.985973596572876, "cells": [{"id": 40, "text": "This information contains examples of data and reports used in daily business operations. To illustrate them ", "bbox": {"l": 64.800079, "t": 582.64355, "r": 541.41901, "b": 591.85655, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "as completely as possible, the examples include the names of individuals, companies, brands, and products. ", "bbox": {"l": 64.800079, "t": 592.66331, "r": 545.78656, "b": 601.87631, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "All of these names are fictitious and any similarity to the names and addresses used by an actual business ", "bbox": {"l": 64.800064, "t": 602.62332, "r": 537.76855, "b": 611.83632, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "enterprise is entirely coincidental. ", "bbox": {"l": 64.800064, "t": 612.64308, "r": 215.72999999999996, "b": 621.85608, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "section_header", "bbox": {"l": 64.30471801757812, "t": 631.6611938476562, "r": 172.49951, "b": 641.8358499999999, "coord_origin": "TOPLEFT"}, "confidence": 0.879513144493103, "cells": [{"id": 44, "text": "COPYRIGHT LICENSE:", "bbox": {"l": 64.800064, "t": 632.62285, "r": 172.49951, "b": 641.8358499999999, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "text", "bbox": {"l": 63.98580551147461, "t": 651.967041015625, "r": 547.24377, "b": 712.5435791015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9882200956344604, "cells": [{"id": 45, "text": "This information contains sample application programs in source language, which illustrate programming ", "bbox": {"l": 64.800064, "t": 652.66237, "r": 528.461, "b": 661.87537, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "techniques on various operating platforms. You may copy, modify, and distribute these sample programs in ", "bbox": {"l": 64.800079, "t": 662.62236, "r": 535.69391, "b": 671.83537, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "any form without payment to IBM, for the purposes of developing, using, marketing or distributing application ", "bbox": {"l": 64.800079, "t": 672.64212, "r": 544.75562, "b": 681.85513, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "programs conforming to the application programming interface for the operating platform for which the sample ", "bbox": {"l": 64.800079, "t": 682.66188, "r": 547.24377, "b": 691.8748899999999, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "programs are written. These examples have not been thoroughly tested under all conditions. IBM, therefore, ", "bbox": {"l": 64.800079, "t": 692.62188, "r": 542.89099, "b": 701.834885, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "cannot guarantee or imply reliability, serviceability, or function of these programs. ", "bbox": {"l": 64.800079, "t": 702.64164, "r": 423.58121, "b": 711.854645, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 8, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.6475715637207, "t": 754.7320556640625, "r": 257.24335, "b": 764.1610717773438, "coord_origin": "TOPLEFT"}, "confidence": 0.9500033855438232, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 8, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.3445434570312, "t": 754.3482666015625, "r": 547.25024, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9123973846435547, "cells": [{"id": 1, "text": "vii", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25024, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "vii"}, {"label": "section_header", "id": 2, "page_no": 8, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.800003, "t": 72.94640350341797, "r": 151.50481, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9534567594528198, "cells": [{"id": 2, "text": "Notices", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 151.50481, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Notices"}, {"label": "text", "id": 3, "page_no": 8, "cluster": {"id": 3, "label": "text", "bbox": {"l": 63.85922622680664, "t": 131.95469665527344, "r": 413.70071, "b": 141.96286010742188, "coord_origin": "TOPLEFT"}, "confidence": 0.9347162246704102, "cells": [{"id": 3, "text": "This information was developed for products and services offered in the U.S.A. ", "bbox": {"l": 64.800003, "t": 132.64862000000005, "r": 413.70071, "b": 141.86163, "coord_origin": "TOPLEFT"}}]}, "text": "This information was developed for products and services offered in the U.S.A."}, {"label": "text", "id": 4, "page_no": 8, "cluster": {"id": 4, "label": "text", "bbox": {"l": 64.08584594726562, "t": 151.7967071533203, "r": 547.2356, "b": 212.513427734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9879042506217957, "cells": [{"id": 4, "text": "IBM may not offer the products, services, or features discussed in this document in other countries. Consult ", "bbox": {"l": 64.800003, "t": 152.62836000000004, "r": 540.54333, "b": 161.84136999999998, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "your local IBM representative for information on the products and services currently available in your area. Any ", "bbox": {"l": 64.799988, "t": 162.64813000000004, "r": 547.2356, "b": 171.86114999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, ", "bbox": {"l": 64.799988, "t": 172.60815000000002, "r": 543.57697, "b": 181.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "program, or service may be used. Any functionally equivalent product, program, or service that does not ", "bbox": {"l": 64.799988, "t": 182.62793, "r": 525.50171, "b": 191.84094000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "infringe any IBM intellectual property right may be used instead. However, it is the user\u2019s responsibility to ", "bbox": {"l": 64.799988, "t": 192.64770999999996, "r": 528.32147, "b": 201.86072000000001, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "evaluate and verify the operation of any non-IBM product, program, or service. ", "bbox": {"l": 64.799988, "t": 202.60772999999995, "r": 412.72058, "b": 211.82074, "coord_origin": "TOPLEFT"}}]}, "text": "IBM may not offer the products, services, or features discussed in this document in other countries. Consult your local IBM representative for information on the products and services currently available in your area. Any reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, program, or service may be used. Any functionally equivalent product, program, or service that does not infringe any IBM intellectual property right may be used instead. However, it is the user\u2019s responsibility to evaluate and verify the operation of any non-IBM product, program, or service."}, {"label": "text", "id": 5, "page_no": 8, "cluster": {"id": 5, "label": "text", "bbox": {"l": 64.23300170898438, "t": 221.91311645507812, "r": 547.29926, "b": 251.84009000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9709556102752686, "cells": [{"id": 10, "text": "IBM may have patents or pending patent applications covering subject matter described in this document. The ", "bbox": {"l": 64.799988, "t": 222.64728000000002, "r": 547.29926, "b": 231.86028999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "furnishing of this document does not grant you any license to these patents. You can send license inquiries, in ", "bbox": {"l": 64.799988, "t": 232.6073, "r": 547.25757, "b": 241.82030999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "writing, to: ", "bbox": {"l": 64.799988, "t": 242.62707999999998, "r": 113.18168000000001, "b": 251.84009000000003, "coord_origin": "TOPLEFT"}}]}, "text": "IBM may have patents or pending patent applications covering subject matter described in this document. The furnishing of this document does not grant you any license to these patents. You can send license inquiries, in writing, to:"}, {"label": "text", "id": 6, "page_no": 8, "cluster": {"id": 6, "label": "text", "bbox": {"l": 64.32848358154297, "t": 251.89076232910156, "r": 489.19962, "b": 262.3831481933594, "coord_origin": "TOPLEFT"}, "confidence": 0.9133641123771667, "cells": [{"id": 13, "text": "IBM Director of Licensing, IBM Corporation, North Castle Drive, Armonk, NY 10504-1785 U.S.A.", "bbox": {"l": 64.799988, "t": 252.64684999999997, "r": 489.19962, "b": 261.85986, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Director of Licensing, IBM Corporation, North Castle Drive, Armonk, NY 10504-1785 U.S.A."}, {"label": "text", "id": 7, "page_no": 8, "cluster": {"id": 7, "label": "text", "bbox": {"l": 63.91102600097656, "t": 271.83697509765625, "r": 547.19171, "b": 332.256591796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9860420823097229, "cells": [{"id": 14, "text": "The following paragraph does not apply to the United Kingdom or any other country where such ", "bbox": {"l": 64.799988, "t": 272.62658999999996, "r": 523.8205, "b": 281.8396, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "provisions are inconsistent with local law:", "bbox": {"l": 64.799988, "t": 282.64639, "r": 264.67526, "b": 291.85938, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": " INTERNATIONAL BUSINESS MACHINES CORPORATION ", "bbox": {"l": 264.77985, "t": 282.64639, "r": 533.51349, "b": 291.85938, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "PROVIDES THIS PUBLICATION \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR ", "bbox": {"l": 64.799973, "t": 292.60638, "r": 532.43884, "b": 301.81937, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, ", "bbox": {"l": 64.799973, "t": 302.62613, "r": 534.26959, "b": 311.83911, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states do not allow disclaimer of ", "bbox": {"l": 64.799973, "t": 312.6459, "r": 547.19171, "b": 321.85889, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "express or implied warranties in certain transactions, therefore, this statement may not apply to you. ", "bbox": {"l": 64.799988, "t": 322.6059, "r": 507.27797999999996, "b": 331.81888, "coord_origin": "TOPLEFT"}}]}, "text": "The following paragraph does not apply to the United Kingdom or any other country where such provisions are inconsistent with local law: INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states do not allow disclaimer of express or implied warranties in certain transactions, therefore, this statement may not apply to you."}, {"label": "text", "id": 8, "page_no": 8, "cluster": {"id": 8, "label": "text", "bbox": {"l": 63.85258865356445, "t": 342.0672912597656, "r": 547.27838, "b": 381.85791, "coord_origin": "TOPLEFT"}, "confidence": 0.9850608706474304, "cells": [{"id": 21, "text": "This information could include technical inaccuracies or typographical errors. Changes are periodically made ", "bbox": {"l": 64.799988, "t": 342.64542, "r": 545.95361, "b": 351.8584, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "to the information herein; these changes will be incorporated in new editions of the publication. IBM may make ", "bbox": {"l": 64.799988, "t": 352.60541, "r": 547.27533, "b": 361.81839, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time ", "bbox": {"l": 64.799988, "t": 362.62515, "r": 547.27838, "b": 371.83813, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "without notice. ", "bbox": {"l": 64.799988, "t": 372.64493, "r": 131.26108, "b": 381.85791, "coord_origin": "TOPLEFT"}}]}, "text": "This information could include technical inaccuracies or typographical errors. Changes are periodically made to the information herein; these changes will be incorporated in new editions of the publication. IBM may make improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time without notice."}, {"label": "text", "id": 9, "page_no": 8, "cluster": {"id": 9, "label": "text", "bbox": {"l": 64.01903533935547, "t": 391.9712219238281, "r": 539.79742, "b": 422.1513366699219, "coord_origin": "TOPLEFT"}, "confidence": 0.9852286577224731, "cells": [{"id": 25, "text": "Any references in this information to non-IBM websites are provided for convenience only and do not in any ", "bbox": {"l": 64.799988, "t": 392.62469, "r": 539.79742, "b": 401.83768, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "manner serve as an endorsement of those websites. The materials at those websites are not part of the ", "bbox": {"l": 64.799988, "t": 402.64444, "r": 525.03448, "b": 411.85742, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "materials for this IBM product and use of those websites is at your own risk. ", "bbox": {"l": 64.799988, "t": 412.60443, "r": 400.91714, "b": 421.81741, "coord_origin": "TOPLEFT"}}]}, "text": "Any references in this information to non-IBM websites are provided for convenience only and do not in any manner serve as an endorsement of those websites. The materials at those websites are not part of the materials for this IBM product and use of those websites is at your own risk."}, {"label": "text", "id": 10, "page_no": 8, "cluster": {"id": 10, "label": "text", "bbox": {"l": 64.25189208984375, "t": 432.0647888183594, "r": 547.19867, "b": 452.3858337402344, "coord_origin": "TOPLEFT"}, "confidence": 0.9783881306648254, "cells": [{"id": 28, "text": "IBM may use or distribute any of the information you supply in any way it believes appropriate without incurring ", "bbox": {"l": 64.799988, "t": 432.64394999999996, "r": 547.19867, "b": 441.85693, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "any obligation to you.", "bbox": {"l": 64.799988, "t": 442.60393999999997, "r": 158.73772, "b": 451.81692999999996, "coord_origin": "TOPLEFT"}}]}, "text": "IBM may use or distribute any of the information you supply in any way it believes appropriate without incurring any obligation to you."}, {"label": "text", "id": 11, "page_no": 8, "cluster": {"id": 11, "label": "text", "bbox": {"l": 64.00050354003906, "t": 462.2513732910156, "r": 544.15875, "b": 521.8851928710938, "coord_origin": "TOPLEFT"}, "confidence": 0.9882644414901733, "cells": [{"id": 30, "text": "Any performance data contained herein was determined in a controlled environment. Therefore, the results ", "bbox": {"l": 64.799988, "t": 462.64447, "r": 538.51471, "b": 471.85745, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "obtained in other operating environments may vary significantly. Some measurements may have been made ", "bbox": {"l": 64.799988, "t": 472.60446, "r": 544.15875, "b": 481.81744, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "on development-level systems and there is no guarantee that these measurements will be the same on ", "bbox": {"l": 64.799988, "t": 482.62424, "r": 521.33148, "b": 491.83722, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "generally available systems. Furthermore, some measurements may have been estimated through ", "bbox": {"l": 64.800018, "t": 492.64401, "r": 501.98029, "b": 501.85699, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "extrapolation. Actual results may vary. Users of this document should verify the applicable data for their ", "bbox": {"l": 64.800018, "t": 502.604, "r": 521.40015, "b": 511.81699, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "specific environment.", "bbox": {"l": 64.800018, "t": 512.62375, "r": 158.48874, "b": 521.83673, "coord_origin": "TOPLEFT"}}]}, "text": "Any performance data contained herein was determined in a controlled environment. Therefore, the results obtained in other operating environments may vary significantly. Some measurements may have been made on development-level systems and there is no guarantee that these measurements will be the same on generally available systems. Furthermore, some measurements may have been estimated through extrapolation. Actual results may vary. Users of this document should verify the applicable data for their specific environment."}, {"label": "text", "id": 12, "page_no": 8, "cluster": {"id": 12, "label": "text", "bbox": {"l": 64.13472747802734, "t": 532.0626831054688, "r": 547.23169, "b": 572.26904296875, "coord_origin": "TOPLEFT"}, "confidence": 0.986961841583252, "cells": [{"id": 36, "text": "Information concerning non-IBM products was obtained from the suppliers of those products, their published ", "bbox": {"l": 64.800018, "t": 532.66425, "r": 544.53741, "b": 541.87726, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "announcements or other publicly available sources. IBM has not tested those products and cannot confirm the ", "bbox": {"l": 64.800034, "t": 542.62427, "r": 547.23169, "b": 551.83727, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the ", "bbox": {"l": 64.800049, "t": 552.6440299999999, "r": 531.85834, "b": 561.85703, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "capabilities of non-IBM products should be addressed to the suppliers of those products.", "bbox": {"l": 64.800079, "t": 562.6637900000001, "r": 455.11453, "b": 571.87679, "coord_origin": "TOPLEFT"}}]}, "text": "Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly available sources. IBM has not tested those products and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products."}, {"label": "text", "id": 13, "page_no": 8, "cluster": {"id": 13, "label": "text", "bbox": {"l": 63.89973449707031, "t": 582.2474365234375, "r": 545.78656, "b": 622.1400756835938, "coord_origin": "TOPLEFT"}, "confidence": 0.985973596572876, "cells": [{"id": 40, "text": "This information contains examples of data and reports used in daily business operations. To illustrate them ", "bbox": {"l": 64.800079, "t": 582.64355, "r": 541.41901, "b": 591.85655, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "as completely as possible, the examples include the names of individuals, companies, brands, and products. ", "bbox": {"l": 64.800079, "t": 592.66331, "r": 545.78656, "b": 601.87631, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "All of these names are fictitious and any similarity to the names and addresses used by an actual business ", "bbox": {"l": 64.800064, "t": 602.62332, "r": 537.76855, "b": 611.83632, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "enterprise is entirely coincidental. ", "bbox": {"l": 64.800064, "t": 612.64308, "r": 215.72999999999996, "b": 621.85608, "coord_origin": "TOPLEFT"}}]}, "text": "This information contains examples of data and reports used in daily business operations. To illustrate them as completely as possible, the examples include the names of individuals, companies, brands, and products. All of these names are fictitious and any similarity to the names and addresses used by an actual business enterprise is entirely coincidental."}, {"label": "section_header", "id": 14, "page_no": 8, "cluster": {"id": 14, "label": "section_header", "bbox": {"l": 64.30471801757812, "t": 631.6611938476562, "r": 172.49951, "b": 641.8358499999999, "coord_origin": "TOPLEFT"}, "confidence": 0.879513144493103, "cells": [{"id": 44, "text": "COPYRIGHT LICENSE:", "bbox": {"l": 64.800064, "t": 632.62285, "r": 172.49951, "b": 641.8358499999999, "coord_origin": "TOPLEFT"}}]}, "text": "COPYRIGHT LICENSE:"}, {"label": "text", "id": 15, "page_no": 8, "cluster": {"id": 15, "label": "text", "bbox": {"l": 63.98580551147461, "t": 651.967041015625, "r": 547.24377, "b": 712.5435791015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9882200956344604, "cells": [{"id": 45, "text": "This information contains sample application programs in source language, which illustrate programming ", "bbox": {"l": 64.800064, "t": 652.66237, "r": 528.461, "b": 661.87537, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "techniques on various operating platforms. You may copy, modify, and distribute these sample programs in ", "bbox": {"l": 64.800079, "t": 662.62236, "r": 535.69391, "b": 671.83537, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "any form without payment to IBM, for the purposes of developing, using, marketing or distributing application ", "bbox": {"l": 64.800079, "t": 672.64212, "r": 544.75562, "b": 681.85513, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "programs conforming to the application programming interface for the operating platform for which the sample ", "bbox": {"l": 64.800079, "t": 682.66188, "r": 547.24377, "b": 691.8748899999999, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "programs are written. These examples have not been thoroughly tested under all conditions. IBM, therefore, ", "bbox": {"l": 64.800079, "t": 692.62188, "r": 542.89099, "b": 701.834885, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "cannot guarantee or imply reliability, serviceability, or function of these programs. ", "bbox": {"l": 64.800079, "t": 702.64164, "r": 423.58121, "b": 711.854645, "coord_origin": "TOPLEFT"}}]}, "text": "This information contains sample application programs in source language, which illustrate programming techniques on various operating platforms. You may copy, modify, and distribute these sample programs in any form without payment to IBM, for the purposes of developing, using, marketing or distributing application programs conforming to the application programming interface for the operating platform for which the sample programs are written. These examples have not been thoroughly tested under all conditions. IBM, therefore, cannot guarantee or imply reliability, serviceability, or function of these programs."}], "body": [{"label": "section_header", "id": 2, "page_no": 8, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.800003, "t": 72.94640350341797, "r": 151.50481, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9534567594528198, "cells": [{"id": 2, "text": "Notices", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 151.50481, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Notices"}, {"label": "text", "id": 3, "page_no": 8, "cluster": {"id": 3, "label": "text", "bbox": {"l": 63.85922622680664, "t": 131.95469665527344, "r": 413.70071, "b": 141.96286010742188, "coord_origin": "TOPLEFT"}, "confidence": 0.9347162246704102, "cells": [{"id": 3, "text": "This information was developed for products and services offered in the U.S.A. ", "bbox": {"l": 64.800003, "t": 132.64862000000005, "r": 413.70071, "b": 141.86163, "coord_origin": "TOPLEFT"}}]}, "text": "This information was developed for products and services offered in the U.S.A."}, {"label": "text", "id": 4, "page_no": 8, "cluster": {"id": 4, "label": "text", "bbox": {"l": 64.08584594726562, "t": 151.7967071533203, "r": 547.2356, "b": 212.513427734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9879042506217957, "cells": [{"id": 4, "text": "IBM may not offer the products, services, or features discussed in this document in other countries. Consult ", "bbox": {"l": 64.800003, "t": 152.62836000000004, "r": 540.54333, "b": 161.84136999999998, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "your local IBM representative for information on the products and services currently available in your area. Any ", "bbox": {"l": 64.799988, "t": 162.64813000000004, "r": 547.2356, "b": 171.86114999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, ", "bbox": {"l": 64.799988, "t": 172.60815000000002, "r": 543.57697, "b": 181.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "program, or service may be used. Any functionally equivalent product, program, or service that does not ", "bbox": {"l": 64.799988, "t": 182.62793, "r": 525.50171, "b": 191.84094000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "infringe any IBM intellectual property right may be used instead. However, it is the user\u2019s responsibility to ", "bbox": {"l": 64.799988, "t": 192.64770999999996, "r": 528.32147, "b": 201.86072000000001, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "evaluate and verify the operation of any non-IBM product, program, or service. ", "bbox": {"l": 64.799988, "t": 202.60772999999995, "r": 412.72058, "b": 211.82074, "coord_origin": "TOPLEFT"}}]}, "text": "IBM may not offer the products, services, or features discussed in this document in other countries. Consult your local IBM representative for information on the products and services currently available in your area. Any reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, program, or service may be used. Any functionally equivalent product, program, or service that does not infringe any IBM intellectual property right may be used instead. However, it is the user\u2019s responsibility to evaluate and verify the operation of any non-IBM product, program, or service."}, {"label": "text", "id": 5, "page_no": 8, "cluster": {"id": 5, "label": "text", "bbox": {"l": 64.23300170898438, "t": 221.91311645507812, "r": 547.29926, "b": 251.84009000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9709556102752686, "cells": [{"id": 10, "text": "IBM may have patents or pending patent applications covering subject matter described in this document. The ", "bbox": {"l": 64.799988, "t": 222.64728000000002, "r": 547.29926, "b": 231.86028999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "furnishing of this document does not grant you any license to these patents. You can send license inquiries, in ", "bbox": {"l": 64.799988, "t": 232.6073, "r": 547.25757, "b": 241.82030999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "writing, to: ", "bbox": {"l": 64.799988, "t": 242.62707999999998, "r": 113.18168000000001, "b": 251.84009000000003, "coord_origin": "TOPLEFT"}}]}, "text": "IBM may have patents or pending patent applications covering subject matter described in this document. The furnishing of this document does not grant you any license to these patents. You can send license inquiries, in writing, to:"}, {"label": "text", "id": 6, "page_no": 8, "cluster": {"id": 6, "label": "text", "bbox": {"l": 64.32848358154297, "t": 251.89076232910156, "r": 489.19962, "b": 262.3831481933594, "coord_origin": "TOPLEFT"}, "confidence": 0.9133641123771667, "cells": [{"id": 13, "text": "IBM Director of Licensing, IBM Corporation, North Castle Drive, Armonk, NY 10504-1785 U.S.A.", "bbox": {"l": 64.799988, "t": 252.64684999999997, "r": 489.19962, "b": 261.85986, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Director of Licensing, IBM Corporation, North Castle Drive, Armonk, NY 10504-1785 U.S.A."}, {"label": "text", "id": 7, "page_no": 8, "cluster": {"id": 7, "label": "text", "bbox": {"l": 63.91102600097656, "t": 271.83697509765625, "r": 547.19171, "b": 332.256591796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9860420823097229, "cells": [{"id": 14, "text": "The following paragraph does not apply to the United Kingdom or any other country where such ", "bbox": {"l": 64.799988, "t": 272.62658999999996, "r": 523.8205, "b": 281.8396, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "provisions are inconsistent with local law:", "bbox": {"l": 64.799988, "t": 282.64639, "r": 264.67526, "b": 291.85938, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": " INTERNATIONAL BUSINESS MACHINES CORPORATION ", "bbox": {"l": 264.77985, "t": 282.64639, "r": 533.51349, "b": 291.85938, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "PROVIDES THIS PUBLICATION \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR ", "bbox": {"l": 64.799973, "t": 292.60638, "r": 532.43884, "b": 301.81937, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, ", "bbox": {"l": 64.799973, "t": 302.62613, "r": 534.26959, "b": 311.83911, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states do not allow disclaimer of ", "bbox": {"l": 64.799973, "t": 312.6459, "r": 547.19171, "b": 321.85889, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "express or implied warranties in certain transactions, therefore, this statement may not apply to you. ", "bbox": {"l": 64.799988, "t": 322.6059, "r": 507.27797999999996, "b": 331.81888, "coord_origin": "TOPLEFT"}}]}, "text": "The following paragraph does not apply to the United Kingdom or any other country where such provisions are inconsistent with local law: INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states do not allow disclaimer of express or implied warranties in certain transactions, therefore, this statement may not apply to you."}, {"label": "text", "id": 8, "page_no": 8, "cluster": {"id": 8, "label": "text", "bbox": {"l": 63.85258865356445, "t": 342.0672912597656, "r": 547.27838, "b": 381.85791, "coord_origin": "TOPLEFT"}, "confidence": 0.9850608706474304, "cells": [{"id": 21, "text": "This information could include technical inaccuracies or typographical errors. Changes are periodically made ", "bbox": {"l": 64.799988, "t": 342.64542, "r": 545.95361, "b": 351.8584, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "to the information herein; these changes will be incorporated in new editions of the publication. IBM may make ", "bbox": {"l": 64.799988, "t": 352.60541, "r": 547.27533, "b": 361.81839, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time ", "bbox": {"l": 64.799988, "t": 362.62515, "r": 547.27838, "b": 371.83813, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "without notice. ", "bbox": {"l": 64.799988, "t": 372.64493, "r": 131.26108, "b": 381.85791, "coord_origin": "TOPLEFT"}}]}, "text": "This information could include technical inaccuracies or typographical errors. Changes are periodically made to the information herein; these changes will be incorporated in new editions of the publication. IBM may make improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time without notice."}, {"label": "text", "id": 9, "page_no": 8, "cluster": {"id": 9, "label": "text", "bbox": {"l": 64.01903533935547, "t": 391.9712219238281, "r": 539.79742, "b": 422.1513366699219, "coord_origin": "TOPLEFT"}, "confidence": 0.9852286577224731, "cells": [{"id": 25, "text": "Any references in this information to non-IBM websites are provided for convenience only and do not in any ", "bbox": {"l": 64.799988, "t": 392.62469, "r": 539.79742, "b": 401.83768, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "manner serve as an endorsement of those websites. The materials at those websites are not part of the ", "bbox": {"l": 64.799988, "t": 402.64444, "r": 525.03448, "b": 411.85742, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "materials for this IBM product and use of those websites is at your own risk. ", "bbox": {"l": 64.799988, "t": 412.60443, "r": 400.91714, "b": 421.81741, "coord_origin": "TOPLEFT"}}]}, "text": "Any references in this information to non-IBM websites are provided for convenience only and do not in any manner serve as an endorsement of those websites. The materials at those websites are not part of the materials for this IBM product and use of those websites is at your own risk."}, {"label": "text", "id": 10, "page_no": 8, "cluster": {"id": 10, "label": "text", "bbox": {"l": 64.25189208984375, "t": 432.0647888183594, "r": 547.19867, "b": 452.3858337402344, "coord_origin": "TOPLEFT"}, "confidence": 0.9783881306648254, "cells": [{"id": 28, "text": "IBM may use or distribute any of the information you supply in any way it believes appropriate without incurring ", "bbox": {"l": 64.799988, "t": 432.64394999999996, "r": 547.19867, "b": 441.85693, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "any obligation to you.", "bbox": {"l": 64.799988, "t": 442.60393999999997, "r": 158.73772, "b": 451.81692999999996, "coord_origin": "TOPLEFT"}}]}, "text": "IBM may use or distribute any of the information you supply in any way it believes appropriate without incurring any obligation to you."}, {"label": "text", "id": 11, "page_no": 8, "cluster": {"id": 11, "label": "text", "bbox": {"l": 64.00050354003906, "t": 462.2513732910156, "r": 544.15875, "b": 521.8851928710938, "coord_origin": "TOPLEFT"}, "confidence": 0.9882644414901733, "cells": [{"id": 30, "text": "Any performance data contained herein was determined in a controlled environment. Therefore, the results ", "bbox": {"l": 64.799988, "t": 462.64447, "r": 538.51471, "b": 471.85745, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "obtained in other operating environments may vary significantly. Some measurements may have been made ", "bbox": {"l": 64.799988, "t": 472.60446, "r": 544.15875, "b": 481.81744, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "on development-level systems and there is no guarantee that these measurements will be the same on ", "bbox": {"l": 64.799988, "t": 482.62424, "r": 521.33148, "b": 491.83722, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "generally available systems. Furthermore, some measurements may have been estimated through ", "bbox": {"l": 64.800018, "t": 492.64401, "r": 501.98029, "b": 501.85699, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "extrapolation. Actual results may vary. Users of this document should verify the applicable data for their ", "bbox": {"l": 64.800018, "t": 502.604, "r": 521.40015, "b": 511.81699, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "specific environment.", "bbox": {"l": 64.800018, "t": 512.62375, "r": 158.48874, "b": 521.83673, "coord_origin": "TOPLEFT"}}]}, "text": "Any performance data contained herein was determined in a controlled environment. Therefore, the results obtained in other operating environments may vary significantly. Some measurements may have been made on development-level systems and there is no guarantee that these measurements will be the same on generally available systems. Furthermore, some measurements may have been estimated through extrapolation. Actual results may vary. Users of this document should verify the applicable data for their specific environment."}, {"label": "text", "id": 12, "page_no": 8, "cluster": {"id": 12, "label": "text", "bbox": {"l": 64.13472747802734, "t": 532.0626831054688, "r": 547.23169, "b": 572.26904296875, "coord_origin": "TOPLEFT"}, "confidence": 0.986961841583252, "cells": [{"id": 36, "text": "Information concerning non-IBM products was obtained from the suppliers of those products, their published ", "bbox": {"l": 64.800018, "t": 532.66425, "r": 544.53741, "b": 541.87726, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "announcements or other publicly available sources. IBM has not tested those products and cannot confirm the ", "bbox": {"l": 64.800034, "t": 542.62427, "r": 547.23169, "b": 551.83727, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the ", "bbox": {"l": 64.800049, "t": 552.6440299999999, "r": 531.85834, "b": 561.85703, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "capabilities of non-IBM products should be addressed to the suppliers of those products.", "bbox": {"l": 64.800079, "t": 562.6637900000001, "r": 455.11453, "b": 571.87679, "coord_origin": "TOPLEFT"}}]}, "text": "Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly available sources. IBM has not tested those products and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products."}, {"label": "text", "id": 13, "page_no": 8, "cluster": {"id": 13, "label": "text", "bbox": {"l": 63.89973449707031, "t": 582.2474365234375, "r": 545.78656, "b": 622.1400756835938, "coord_origin": "TOPLEFT"}, "confidence": 0.985973596572876, "cells": [{"id": 40, "text": "This information contains examples of data and reports used in daily business operations. To illustrate them ", "bbox": {"l": 64.800079, "t": 582.64355, "r": 541.41901, "b": 591.85655, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "as completely as possible, the examples include the names of individuals, companies, brands, and products. ", "bbox": {"l": 64.800079, "t": 592.66331, "r": 545.78656, "b": 601.87631, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "All of these names are fictitious and any similarity to the names and addresses used by an actual business ", "bbox": {"l": 64.800064, "t": 602.62332, "r": 537.76855, "b": 611.83632, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "enterprise is entirely coincidental. ", "bbox": {"l": 64.800064, "t": 612.64308, "r": 215.72999999999996, "b": 621.85608, "coord_origin": "TOPLEFT"}}]}, "text": "This information contains examples of data and reports used in daily business operations. To illustrate them as completely as possible, the examples include the names of individuals, companies, brands, and products. All of these names are fictitious and any similarity to the names and addresses used by an actual business enterprise is entirely coincidental."}, {"label": "section_header", "id": 14, "page_no": 8, "cluster": {"id": 14, "label": "section_header", "bbox": {"l": 64.30471801757812, "t": 631.6611938476562, "r": 172.49951, "b": 641.8358499999999, "coord_origin": "TOPLEFT"}, "confidence": 0.879513144493103, "cells": [{"id": 44, "text": "COPYRIGHT LICENSE:", "bbox": {"l": 64.800064, "t": 632.62285, "r": 172.49951, "b": 641.8358499999999, "coord_origin": "TOPLEFT"}}]}, "text": "COPYRIGHT LICENSE:"}, {"label": "text", "id": 15, "page_no": 8, "cluster": {"id": 15, "label": "text", "bbox": {"l": 63.98580551147461, "t": 651.967041015625, "r": 547.24377, "b": 712.5435791015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9882200956344604, "cells": [{"id": 45, "text": "This information contains sample application programs in source language, which illustrate programming ", "bbox": {"l": 64.800064, "t": 652.66237, "r": 528.461, "b": 661.87537, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "techniques on various operating platforms. You may copy, modify, and distribute these sample programs in ", "bbox": {"l": 64.800079, "t": 662.62236, "r": 535.69391, "b": 671.83537, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "any form without payment to IBM, for the purposes of developing, using, marketing or distributing application ", "bbox": {"l": 64.800079, "t": 672.64212, "r": 544.75562, "b": 681.85513, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "programs conforming to the application programming interface for the operating platform for which the sample ", "bbox": {"l": 64.800079, "t": 682.66188, "r": 547.24377, "b": 691.8748899999999, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "programs are written. These examples have not been thoroughly tested under all conditions. IBM, therefore, ", "bbox": {"l": 64.800079, "t": 692.62188, "r": 542.89099, "b": 701.834885, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "cannot guarantee or imply reliability, serviceability, or function of these programs. ", "bbox": {"l": 64.800079, "t": 702.64164, "r": 423.58121, "b": 711.854645, "coord_origin": "TOPLEFT"}}]}, "text": "This information contains sample application programs in source language, which illustrate programming techniques on various operating platforms. You may copy, modify, and distribute these sample programs in any form without payment to IBM, for the purposes of developing, using, marketing or distributing application programs conforming to the application programming interface for the operating platform for which the sample programs are written. These examples have not been thoroughly tested under all conditions. IBM, therefore, cannot guarantee or imply reliability, serviceability, or function of these programs."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 8, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.6475715637207, "t": 754.7320556640625, "r": 257.24335, "b": 764.1610717773438, "coord_origin": "TOPLEFT"}, "confidence": 0.9500033855438232, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 8, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.3445434570312, "t": 754.3482666015625, "r": 547.25024, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9123973846435547, "cells": [{"id": 1, "text": "vii", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25024, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "vii"}]}}, {"page_no": 9, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "viii ", "bbox": {"l": 64.800003, "t": 755.868721, "r": 81.162003, "b": 765.08172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 96.180305, "t": 756.557999, "r": 337.03378, "b": 764.883001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Trademarks", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 154.14569, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines ", "bbox": {"l": 64.800003, "t": 103.48870999999997, "r": 547.26044, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Corporation in the United States, other countries, or both. These and other IBM trademarked terms are ", "bbox": {"l": 64.800003, "t": 113.50847999999996, "r": 520.9967, "b": 122.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "marked on their first occurrence in this information with the appropriate symbol (fi or \u2122), indicating US ", "bbox": {"l": 64.800003, "t": 123.52826000000005, "r": 519.97705, "b": 132.74127, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "registered or common law trademarks owned by IBM at the time this information was published. Such ", "bbox": {"l": 64.800003, "t": 133.48828000000003, "r": 515.00299, "b": 142.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "trademarks may also be registered or common law trademarks in other countries. A current list of IBM ", "bbox": {"l": 64.800003, "t": 143.50806, "r": 516.58441, "b": 152.72107000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "trademarks is available on the Web at ", "bbox": {"l": 64.800003, "t": 153.52783, "r": 233.90881000000002, "b": 162.74084000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "http://www.ibm.com/legal/copytrade.shtml", "bbox": {"l": 233.87996999999996, "t": 153.67724999999996, "r": 433.73734, "b": 162.45203000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "The following terms are trademarks of the International Business Machines Corporation in the United States, ", "bbox": {"l": 64.800003, "t": 173.50757, "r": 546.61505, "b": 182.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "other countries, or both: ", "bbox": {"l": 64.800003, "t": 183.52733999999998, "r": 173.15189, "b": 192.74036, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "AS/400fi", "bbox": {"l": 75.599998, "t": 202.51801, "r": 111.6711, "b": 210.84295999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "DB2fi", "bbox": {"l": 75.599998, "t": 213.55829000000006, "r": 99.669601, "b": 221.88324, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "DRDAfi", "bbox": {"l": 75.599998, "t": 224.53827, "r": 107.3052, "b": 232.86321999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "IBMfi", "bbox": {"l": 236.40029999999996, "t": 202.51793999999995, "r": 259.0047, "b": 210.8429, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Power Systems\u2122", "bbox": {"l": 236.40029999999996, "t": 213.55822999999998, "r": 307.14569, "b": 221.88318000000004, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Redbooksfi", "bbox": {"l": 236.40029999999996, "t": 224.53821000000005, "r": 283.47211, "b": 232.86316, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Redpaper\u2122", "bbox": {"l": 397.20059, "t": 202.51788, "r": 445.65295, "b": 210.84283000000005, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Redbooks (log", "bbox": {"l": 397.20059, "t": 213.55817000000002, "r": 455.12460000000004, "b": 221.88311999999996, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "o)", "bbox": {"l": 450.46969999999993, "t": 213.55817000000002, "r": 455.17949999999996, "b": 221.88311999999996, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "fi System", "bbox": {"l": 427.21201, "t": 213.55817000000002, "r": 448.99689, "b": 221.88311999999996, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": " ifi", "bbox": {"l": 427.15442, "t": 224.53814999999997, "r": 438.3072199999999, "b": 232.86310000000003, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "The following terms are trademarks of other companies:", "bbox": {"l": 64.800003, "t": 245.50867000000005, "r": 311.90067, "b": 254.72168, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Windows, and the Windows logo are trademarks of Microsoft Corporation in the United States, other ", "bbox": {"l": 64.800003, "t": 265.48839999999996, "r": 509.53705, "b": 274.70142, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "countries, or both.", "bbox": {"l": 64.800003, "t": 275.50818000000004, "r": 144.77483, "b": 284.7211899999999, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Other company, product, or service names may be trademarks or service marks of others. ", "bbox": {"l": 64.800003, "t": 295.48798, "r": 464.51569, "b": 304.70096, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.85106658935547, "t": 755.861328125, "r": 81.162003, "b": 765.08172, "coord_origin": "TOPLEFT"}, "confidence": 0.9069269299507141, "cells": [{"id": 0, "text": "viii ", "bbox": {"l": 64.800003, "t": 755.868721, "r": 81.162003, "b": 765.08172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 95.8013916015625, "t": 755.7946166992188, "r": 337.03378, "b": 765.3360595703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9419320821762085, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 96.180305, "t": 756.557999, "r": 337.03378, "b": 764.883001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.09756469726562, "t": 70.1291275024414, "r": 154.14569, "b": 85.9837, "coord_origin": "TOPLEFT"}, "confidence": 0.9517050385475159, "cells": [{"id": 2, "text": "Trademarks", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 154.14569, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 64.14087677001953, "t": 102.73088073730469, "r": 547.26044, "b": 162.74084000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9863917827606201, "cells": [{"id": 3, "text": "IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines ", "bbox": {"l": 64.800003, "t": 103.48870999999997, "r": 547.26044, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Corporation in the United States, other countries, or both. These and other IBM trademarked terms are ", "bbox": {"l": 64.800003, "t": 113.50847999999996, "r": 520.9967, "b": 122.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "marked on their first occurrence in this information with the appropriate symbol (fi or \u2122), indicating US ", "bbox": {"l": 64.800003, "t": 123.52826000000005, "r": 519.97705, "b": 132.74127, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "registered or common law trademarks owned by IBM at the time this information was published. Such ", "bbox": {"l": 64.800003, "t": 133.48828000000003, "r": 515.00299, "b": 142.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "trademarks may also be registered or common law trademarks in other countries. A current list of IBM ", "bbox": {"l": 64.800003, "t": 143.50806, "r": 516.58441, "b": 152.72107000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "trademarks is available on the Web at ", "bbox": {"l": 64.800003, "t": 153.52783, "r": 233.90881000000002, "b": 162.74084000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "http://www.ibm.com/legal/copytrade.shtml", "bbox": {"l": 233.87996999999996, "t": 153.67724999999996, "r": 433.73734, "b": 162.45203000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 63.81353759765625, "t": 172.72238159179688, "r": 546.61505, "b": 192.74036, "coord_origin": "TOPLEFT"}, "confidence": 0.9608373641967773, "cells": [{"id": 10, "text": "The following terms are trademarks of the International Business Machines Corporation in the United States, ", "bbox": {"l": 64.800003, "t": 173.50757, "r": 546.61505, "b": 182.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "other countries, or both: ", "bbox": {"l": 64.800003, "t": 183.52733999999998, "r": 173.15189, "b": 192.74036, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 75.01971435546875, "t": 200.92349243164062, "r": 112.14369201660156, "b": 210.84295999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.8121887445449829, "cells": [{"id": 12, "text": "AS/400fi", "bbox": {"l": 75.599998, "t": 202.51801, "r": 111.6711, "b": 210.84295999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 75.20001220703125, "t": 211.9452667236328, "r": 100.03594970703125, "b": 221.88324, "coord_origin": "TOPLEFT"}, "confidence": 0.7914246916770935, "cells": [{"id": 13, "text": "DB2fi", "bbox": {"l": 75.599998, "t": 213.55829000000006, "r": 99.669601, "b": 221.88324, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 75.27558898925781, "t": 223.59620666503906, "r": 107.95845794677734, "b": 232.86321999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.822727382183075, "cells": [{"id": 14, "text": "DRDAfi", "bbox": {"l": 75.599998, "t": 224.53827, "r": 107.3052, "b": 232.86321999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 235.85794067382812, "t": 201.27745056152344, "r": 259.61248779296875, "b": 210.8429, "coord_origin": "TOPLEFT"}, "confidence": 0.837928831577301, "cells": [{"id": 15, "text": "IBMfi", "bbox": {"l": 236.40029999999996, "t": 202.51793999999995, "r": 259.0047, "b": 210.8429, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 235.99562072753906, "t": 212.1666717529297, "r": 307.14569, "b": 221.88318000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.8122887015342712, "cells": [{"id": 16, "text": "Power Systems\u2122", "bbox": {"l": 236.40029999999996, "t": 213.55822999999998, "r": 307.14569, "b": 221.88318000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 236.1086883544922, "t": 223.76063537597656, "r": 283.57794189453125, "b": 232.86316, "coord_origin": "TOPLEFT"}, "confidence": 0.8228758573532104, "cells": [{"id": 17, "text": "Redbooksfi", "bbox": {"l": 236.40029999999996, "t": 224.53821000000005, "r": 283.47211, "b": 232.86316, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 396.9049377441406, "t": 201.1180419921875, "r": 445.7533874511719, "b": 210.84283000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.7675914764404297, "cells": [{"id": 18, "text": "Redpaper\u2122", "bbox": {"l": 397.20059, "t": 202.51788, "r": 445.65295, "b": 210.84283000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 397.0493469238281, "t": 212.6171417236328, "r": 464.00567626953125, "b": 222.2538604736328, "coord_origin": "TOPLEFT"}, "confidence": 0.7420825958251953, "cells": [{"id": 19, "text": "Redbooks (log", "bbox": {"l": 397.20059, "t": 213.55817000000002, "r": 455.12460000000004, "b": 221.88311999999996, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "o)", "bbox": {"l": 450.46969999999993, "t": 213.55817000000002, "r": 455.17949999999996, "b": 221.88311999999996, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "fi System", "bbox": {"l": 427.21201, "t": 213.55817000000002, "r": 448.99689, "b": 221.88311999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 396.6751708984375, "t": 223.71835327148438, "r": 438.42291259765625, "b": 233.55853271484375, "coord_origin": "TOPLEFT"}, "confidence": 0.8272937536239624, "cells": [{"id": 22, "text": " ifi", "bbox": {"l": 427.15442, "t": 224.53814999999997, "r": 438.3072199999999, "b": 232.86310000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "text", "bbox": {"l": 63.997196197509766, "t": 244.85638427734375, "r": 311.90067, "b": 254.72168, "coord_origin": "TOPLEFT"}, "confidence": 0.9434750080108643, "cells": [{"id": 23, "text": "The following terms are trademarks of other companies:", "bbox": {"l": 64.800003, "t": 245.50867000000005, "r": 311.90067, "b": 254.72168, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "text", "bbox": {"l": 63.95560073852539, "t": 264.8189392089844, "r": 509.53705, "b": 284.7211899999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9707977771759033, "cells": [{"id": 24, "text": "Windows, and the Windows logo are trademarks of Microsoft Corporation in the United States, other ", "bbox": {"l": 64.800003, "t": 265.48839999999996, "r": 509.53705, "b": 274.70142, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "countries, or both.", "bbox": {"l": 64.800003, "t": 275.50818000000004, "r": 144.77483, "b": 284.7211899999999, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "text", "bbox": {"l": 64.17562103271484, "t": 294.56353759765625, "r": 464.51569, "b": 305.0062561035156, "coord_origin": "TOPLEFT"}, "confidence": 0.959129810333252, "cells": [{"id": 26, "text": "Other company, product, or service names may be trademarks or service marks of others. ", "bbox": {"l": 64.800003, "t": 295.48798, "r": 464.51569, "b": 304.70096, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "picture", "bbox": {"l": 465.2912902832031, "t": 210.87185668945312, "r": 487.54522705078125, "b": 223.7872772216797, "coord_origin": "TOPLEFT"}, "confidence": 0.6540718078613281, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 9, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.85106658935547, "t": 755.861328125, "r": 81.162003, "b": 765.08172, "coord_origin": "TOPLEFT"}, "confidence": 0.9069269299507141, "cells": [{"id": 0, "text": "viii ", "bbox": {"l": 64.800003, "t": 755.868721, "r": 81.162003, "b": 765.08172, "coord_origin": "TOPLEFT"}}]}, "text": "viii"}, {"label": "page_footer", "id": 1, "page_no": 9, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 95.8013916015625, "t": 755.7946166992188, "r": 337.03378, "b": 765.3360595703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9419320821762085, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 96.180305, "t": 756.557999, "r": 337.03378, "b": 764.883001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "section_header", "id": 2, "page_no": 9, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.09756469726562, "t": 70.1291275024414, "r": 154.14569, "b": 85.9837, "coord_origin": "TOPLEFT"}, "confidence": 0.9517050385475159, "cells": [{"id": 2, "text": "Trademarks", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 154.14569, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, "text": "Trademarks"}, {"label": "text", "id": 3, "page_no": 9, "cluster": {"id": 3, "label": "text", "bbox": {"l": 64.14087677001953, "t": 102.73088073730469, "r": 547.26044, "b": 162.74084000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9863917827606201, "cells": [{"id": 3, "text": "IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines ", "bbox": {"l": 64.800003, "t": 103.48870999999997, "r": 547.26044, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Corporation in the United States, other countries, or both. These and other IBM trademarked terms are ", "bbox": {"l": 64.800003, "t": 113.50847999999996, "r": 520.9967, "b": 122.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "marked on their first occurrence in this information with the appropriate symbol (fi or \u2122), indicating US ", "bbox": {"l": 64.800003, "t": 123.52826000000005, "r": 519.97705, "b": 132.74127, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "registered or common law trademarks owned by IBM at the time this information was published. Such ", "bbox": {"l": 64.800003, "t": 133.48828000000003, "r": 515.00299, "b": 142.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "trademarks may also be registered or common law trademarks in other countries. A current list of IBM ", "bbox": {"l": 64.800003, "t": 143.50806, "r": 516.58441, "b": 152.72107000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "trademarks is available on the Web at ", "bbox": {"l": 64.800003, "t": 153.52783, "r": 233.90881000000002, "b": 162.74084000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "http://www.ibm.com/legal/copytrade.shtml", "bbox": {"l": 233.87996999999996, "t": 153.67724999999996, "r": 433.73734, "b": 162.45203000000004, "coord_origin": "TOPLEFT"}}]}, "text": "IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines Corporation in the United States, other countries, or both. These and other IBM trademarked terms are marked on their first occurrence in this information with the appropriate symbol (fi or \u2122), indicating US registered or common law trademarks owned by IBM at the time this information was published. Such trademarks may also be registered or common law trademarks in other countries. A current list of IBM trademarks is available on the Web at http://www.ibm.com/legal/copytrade.shtml"}, {"label": "text", "id": 4, "page_no": 9, "cluster": {"id": 4, "label": "text", "bbox": {"l": 63.81353759765625, "t": 172.72238159179688, "r": 546.61505, "b": 192.74036, "coord_origin": "TOPLEFT"}, "confidence": 0.9608373641967773, "cells": [{"id": 10, "text": "The following terms are trademarks of the International Business Machines Corporation in the United States, ", "bbox": {"l": 64.800003, "t": 173.50757, "r": 546.61505, "b": 182.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "other countries, or both: ", "bbox": {"l": 64.800003, "t": 183.52733999999998, "r": 173.15189, "b": 192.74036, "coord_origin": "TOPLEFT"}}]}, "text": "The following terms are trademarks of the International Business Machines Corporation in the United States, other countries, or both:"}, {"label": "text", "id": 5, "page_no": 9, "cluster": {"id": 5, "label": "text", "bbox": {"l": 75.01971435546875, "t": 200.92349243164062, "r": 112.14369201660156, "b": 210.84295999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.8121887445449829, "cells": [{"id": 12, "text": "AS/400fi", "bbox": {"l": 75.599998, "t": 202.51801, "r": 111.6711, "b": 210.84295999999995, "coord_origin": "TOPLEFT"}}]}, "text": "AS/400fi"}, {"label": "text", "id": 6, "page_no": 9, "cluster": {"id": 6, "label": "text", "bbox": {"l": 75.20001220703125, "t": 211.9452667236328, "r": 100.03594970703125, "b": 221.88324, "coord_origin": "TOPLEFT"}, "confidence": 0.7914246916770935, "cells": [{"id": 13, "text": "DB2fi", "bbox": {"l": 75.599998, "t": 213.55829000000006, "r": 99.669601, "b": 221.88324, "coord_origin": "TOPLEFT"}}]}, "text": "DB2fi"}, {"label": "text", "id": 7, "page_no": 9, "cluster": {"id": 7, "label": "text", "bbox": {"l": 75.27558898925781, "t": 223.59620666503906, "r": 107.95845794677734, "b": 232.86321999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.822727382183075, "cells": [{"id": 14, "text": "DRDAfi", "bbox": {"l": 75.599998, "t": 224.53827, "r": 107.3052, "b": 232.86321999999996, "coord_origin": "TOPLEFT"}}]}, "text": "DRDAfi"}, {"label": "text", "id": 8, "page_no": 9, "cluster": {"id": 8, "label": "text", "bbox": {"l": 235.85794067382812, "t": 201.27745056152344, "r": 259.61248779296875, "b": 210.8429, "coord_origin": "TOPLEFT"}, "confidence": 0.837928831577301, "cells": [{"id": 15, "text": "IBMfi", "bbox": {"l": 236.40029999999996, "t": 202.51793999999995, "r": 259.0047, "b": 210.8429, "coord_origin": "TOPLEFT"}}]}, "text": "IBMfi"}, {"label": "text", "id": 9, "page_no": 9, "cluster": {"id": 9, "label": "text", "bbox": {"l": 235.99562072753906, "t": 212.1666717529297, "r": 307.14569, "b": 221.88318000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.8122887015342712, "cells": [{"id": 16, "text": "Power Systems\u2122", "bbox": {"l": 236.40029999999996, "t": 213.55822999999998, "r": 307.14569, "b": 221.88318000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Power Systems\u2122"}, {"label": "text", "id": 10, "page_no": 9, "cluster": {"id": 10, "label": "text", "bbox": {"l": 236.1086883544922, "t": 223.76063537597656, "r": 283.57794189453125, "b": 232.86316, "coord_origin": "TOPLEFT"}, "confidence": 0.8228758573532104, "cells": [{"id": 17, "text": "Redbooksfi", "bbox": {"l": 236.40029999999996, "t": 224.53821000000005, "r": 283.47211, "b": 232.86316, "coord_origin": "TOPLEFT"}}]}, "text": "Redbooksfi"}, {"label": "text", "id": 11, "page_no": 9, "cluster": {"id": 11, "label": "text", "bbox": {"l": 396.9049377441406, "t": 201.1180419921875, "r": 445.7533874511719, "b": 210.84283000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.7675914764404297, "cells": [{"id": 18, "text": "Redpaper\u2122", "bbox": {"l": 397.20059, "t": 202.51788, "r": 445.65295, "b": 210.84283000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Redpaper\u2122"}, {"label": "text", "id": 12, "page_no": 9, "cluster": {"id": 12, "label": "text", "bbox": {"l": 397.0493469238281, "t": 212.6171417236328, "r": 464.00567626953125, "b": 222.2538604736328, "coord_origin": "TOPLEFT"}, "confidence": 0.7420825958251953, "cells": [{"id": 19, "text": "Redbooks (log", "bbox": {"l": 397.20059, "t": 213.55817000000002, "r": 455.12460000000004, "b": 221.88311999999996, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "o)", "bbox": {"l": 450.46969999999993, "t": 213.55817000000002, "r": 455.17949999999996, "b": 221.88311999999996, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "fi System", "bbox": {"l": 427.21201, "t": 213.55817000000002, "r": 448.99689, "b": 221.88311999999996, "coord_origin": "TOPLEFT"}}]}, "text": "Redbooks (log o) fi System"}, {"label": "text", "id": 13, "page_no": 9, "cluster": {"id": 13, "label": "text", "bbox": {"l": 396.6751708984375, "t": 223.71835327148438, "r": 438.42291259765625, "b": 233.55853271484375, "coord_origin": "TOPLEFT"}, "confidence": 0.8272937536239624, "cells": [{"id": 22, "text": " ifi", "bbox": {"l": 427.15442, "t": 224.53814999999997, "r": 438.3072199999999, "b": 232.86310000000003, "coord_origin": "TOPLEFT"}}]}, "text": "ifi"}, {"label": "text", "id": 14, "page_no": 9, "cluster": {"id": 14, "label": "text", "bbox": {"l": 63.997196197509766, "t": 244.85638427734375, "r": 311.90067, "b": 254.72168, "coord_origin": "TOPLEFT"}, "confidence": 0.9434750080108643, "cells": [{"id": 23, "text": "The following terms are trademarks of other companies:", "bbox": {"l": 64.800003, "t": 245.50867000000005, "r": 311.90067, "b": 254.72168, "coord_origin": "TOPLEFT"}}]}, "text": "The following terms are trademarks of other companies:"}, {"label": "text", "id": 15, "page_no": 9, "cluster": {"id": 15, "label": "text", "bbox": {"l": 63.95560073852539, "t": 264.8189392089844, "r": 509.53705, "b": 284.7211899999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9707977771759033, "cells": [{"id": 24, "text": "Windows, and the Windows logo are trademarks of Microsoft Corporation in the United States, other ", "bbox": {"l": 64.800003, "t": 265.48839999999996, "r": 509.53705, "b": 274.70142, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "countries, or both.", "bbox": {"l": 64.800003, "t": 275.50818000000004, "r": 144.77483, "b": 284.7211899999999, "coord_origin": "TOPLEFT"}}]}, "text": "Windows, and the Windows logo are trademarks of Microsoft Corporation in the United States, other countries, or both."}, {"label": "text", "id": 16, "page_no": 9, "cluster": {"id": 16, "label": "text", "bbox": {"l": 64.17562103271484, "t": 294.56353759765625, "r": 464.51569, "b": 305.0062561035156, "coord_origin": "TOPLEFT"}, "confidence": 0.959129810333252, "cells": [{"id": 26, "text": "Other company, product, or service names may be trademarks or service marks of others. ", "bbox": {"l": 64.800003, "t": 295.48798, "r": 464.51569, "b": 304.70096, "coord_origin": "TOPLEFT"}}]}, "text": "Other company, product, or service names may be trademarks or service marks of others."}, {"label": "picture", "id": 17, "page_no": 9, "cluster": {"id": 17, "label": "picture", "bbox": {"l": 465.2912902832031, "t": 210.87185668945312, "r": 487.54522705078125, "b": 223.7872772216797, "coord_origin": "TOPLEFT"}, "confidence": 0.6540718078613281, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "section_header", "id": 2, "page_no": 9, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.09756469726562, "t": 70.1291275024414, "r": 154.14569, "b": 85.9837, "coord_origin": "TOPLEFT"}, "confidence": 0.9517050385475159, "cells": [{"id": 2, "text": "Trademarks", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 154.14569, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, "text": "Trademarks"}, {"label": "text", "id": 3, "page_no": 9, "cluster": {"id": 3, "label": "text", "bbox": {"l": 64.14087677001953, "t": 102.73088073730469, "r": 547.26044, "b": 162.74084000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9863917827606201, "cells": [{"id": 3, "text": "IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines ", "bbox": {"l": 64.800003, "t": 103.48870999999997, "r": 547.26044, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Corporation in the United States, other countries, or both. These and other IBM trademarked terms are ", "bbox": {"l": 64.800003, "t": 113.50847999999996, "r": 520.9967, "b": 122.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "marked on their first occurrence in this information with the appropriate symbol (fi or \u2122), indicating US ", "bbox": {"l": 64.800003, "t": 123.52826000000005, "r": 519.97705, "b": 132.74127, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "registered or common law trademarks owned by IBM at the time this information was published. Such ", "bbox": {"l": 64.800003, "t": 133.48828000000003, "r": 515.00299, "b": 142.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "trademarks may also be registered or common law trademarks in other countries. A current list of IBM ", "bbox": {"l": 64.800003, "t": 143.50806, "r": 516.58441, "b": 152.72107000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "trademarks is available on the Web at ", "bbox": {"l": 64.800003, "t": 153.52783, "r": 233.90881000000002, "b": 162.74084000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "http://www.ibm.com/legal/copytrade.shtml", "bbox": {"l": 233.87996999999996, "t": 153.67724999999996, "r": 433.73734, "b": 162.45203000000004, "coord_origin": "TOPLEFT"}}]}, "text": "IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines Corporation in the United States, other countries, or both. These and other IBM trademarked terms are marked on their first occurrence in this information with the appropriate symbol (fi or \u2122), indicating US registered or common law trademarks owned by IBM at the time this information was published. Such trademarks may also be registered or common law trademarks in other countries. A current list of IBM trademarks is available on the Web at http://www.ibm.com/legal/copytrade.shtml"}, {"label": "text", "id": 4, "page_no": 9, "cluster": {"id": 4, "label": "text", "bbox": {"l": 63.81353759765625, "t": 172.72238159179688, "r": 546.61505, "b": 192.74036, "coord_origin": "TOPLEFT"}, "confidence": 0.9608373641967773, "cells": [{"id": 10, "text": "The following terms are trademarks of the International Business Machines Corporation in the United States, ", "bbox": {"l": 64.800003, "t": 173.50757, "r": 546.61505, "b": 182.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "other countries, or both: ", "bbox": {"l": 64.800003, "t": 183.52733999999998, "r": 173.15189, "b": 192.74036, "coord_origin": "TOPLEFT"}}]}, "text": "The following terms are trademarks of the International Business Machines Corporation in the United States, other countries, or both:"}, {"label": "text", "id": 5, "page_no": 9, "cluster": {"id": 5, "label": "text", "bbox": {"l": 75.01971435546875, "t": 200.92349243164062, "r": 112.14369201660156, "b": 210.84295999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.8121887445449829, "cells": [{"id": 12, "text": "AS/400fi", "bbox": {"l": 75.599998, "t": 202.51801, "r": 111.6711, "b": 210.84295999999995, "coord_origin": "TOPLEFT"}}]}, "text": "AS/400fi"}, {"label": "text", "id": 6, "page_no": 9, "cluster": {"id": 6, "label": "text", "bbox": {"l": 75.20001220703125, "t": 211.9452667236328, "r": 100.03594970703125, "b": 221.88324, "coord_origin": "TOPLEFT"}, "confidence": 0.7914246916770935, "cells": [{"id": 13, "text": "DB2fi", "bbox": {"l": 75.599998, "t": 213.55829000000006, "r": 99.669601, "b": 221.88324, "coord_origin": "TOPLEFT"}}]}, "text": "DB2fi"}, {"label": "text", "id": 7, "page_no": 9, "cluster": {"id": 7, "label": "text", "bbox": {"l": 75.27558898925781, "t": 223.59620666503906, "r": 107.95845794677734, "b": 232.86321999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.822727382183075, "cells": [{"id": 14, "text": "DRDAfi", "bbox": {"l": 75.599998, "t": 224.53827, "r": 107.3052, "b": 232.86321999999996, "coord_origin": "TOPLEFT"}}]}, "text": "DRDAfi"}, {"label": "text", "id": 8, "page_no": 9, "cluster": {"id": 8, "label": "text", "bbox": {"l": 235.85794067382812, "t": 201.27745056152344, "r": 259.61248779296875, "b": 210.8429, "coord_origin": "TOPLEFT"}, "confidence": 0.837928831577301, "cells": [{"id": 15, "text": "IBMfi", "bbox": {"l": 236.40029999999996, "t": 202.51793999999995, "r": 259.0047, "b": 210.8429, "coord_origin": "TOPLEFT"}}]}, "text": "IBMfi"}, {"label": "text", "id": 9, "page_no": 9, "cluster": {"id": 9, "label": "text", "bbox": {"l": 235.99562072753906, "t": 212.1666717529297, "r": 307.14569, "b": 221.88318000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.8122887015342712, "cells": [{"id": 16, "text": "Power Systems\u2122", "bbox": {"l": 236.40029999999996, "t": 213.55822999999998, "r": 307.14569, "b": 221.88318000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Power Systems\u2122"}, {"label": "text", "id": 10, "page_no": 9, "cluster": {"id": 10, "label": "text", "bbox": {"l": 236.1086883544922, "t": 223.76063537597656, "r": 283.57794189453125, "b": 232.86316, "coord_origin": "TOPLEFT"}, "confidence": 0.8228758573532104, "cells": [{"id": 17, "text": "Redbooksfi", "bbox": {"l": 236.40029999999996, "t": 224.53821000000005, "r": 283.47211, "b": 232.86316, "coord_origin": "TOPLEFT"}}]}, "text": "Redbooksfi"}, {"label": "text", "id": 11, "page_no": 9, "cluster": {"id": 11, "label": "text", "bbox": {"l": 396.9049377441406, "t": 201.1180419921875, "r": 445.7533874511719, "b": 210.84283000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.7675914764404297, "cells": [{"id": 18, "text": "Redpaper\u2122", "bbox": {"l": 397.20059, "t": 202.51788, "r": 445.65295, "b": 210.84283000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Redpaper\u2122"}, {"label": "text", "id": 12, "page_no": 9, "cluster": {"id": 12, "label": "text", "bbox": {"l": 397.0493469238281, "t": 212.6171417236328, "r": 464.00567626953125, "b": 222.2538604736328, "coord_origin": "TOPLEFT"}, "confidence": 0.7420825958251953, "cells": [{"id": 19, "text": "Redbooks (log", "bbox": {"l": 397.20059, "t": 213.55817000000002, "r": 455.12460000000004, "b": 221.88311999999996, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "o)", "bbox": {"l": 450.46969999999993, "t": 213.55817000000002, "r": 455.17949999999996, "b": 221.88311999999996, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "fi System", "bbox": {"l": 427.21201, "t": 213.55817000000002, "r": 448.99689, "b": 221.88311999999996, "coord_origin": "TOPLEFT"}}]}, "text": "Redbooks (log o) fi System"}, {"label": "text", "id": 13, "page_no": 9, "cluster": {"id": 13, "label": "text", "bbox": {"l": 396.6751708984375, "t": 223.71835327148438, "r": 438.42291259765625, "b": 233.55853271484375, "coord_origin": "TOPLEFT"}, "confidence": 0.8272937536239624, "cells": [{"id": 22, "text": " ifi", "bbox": {"l": 427.15442, "t": 224.53814999999997, "r": 438.3072199999999, "b": 232.86310000000003, "coord_origin": "TOPLEFT"}}]}, "text": "ifi"}, {"label": "text", "id": 14, "page_no": 9, "cluster": {"id": 14, "label": "text", "bbox": {"l": 63.997196197509766, "t": 244.85638427734375, "r": 311.90067, "b": 254.72168, "coord_origin": "TOPLEFT"}, "confidence": 0.9434750080108643, "cells": [{"id": 23, "text": "The following terms are trademarks of other companies:", "bbox": {"l": 64.800003, "t": 245.50867000000005, "r": 311.90067, "b": 254.72168, "coord_origin": "TOPLEFT"}}]}, "text": "The following terms are trademarks of other companies:"}, {"label": "text", "id": 15, "page_no": 9, "cluster": {"id": 15, "label": "text", "bbox": {"l": 63.95560073852539, "t": 264.8189392089844, "r": 509.53705, "b": 284.7211899999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9707977771759033, "cells": [{"id": 24, "text": "Windows, and the Windows logo are trademarks of Microsoft Corporation in the United States, other ", "bbox": {"l": 64.800003, "t": 265.48839999999996, "r": 509.53705, "b": 274.70142, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "countries, or both.", "bbox": {"l": 64.800003, "t": 275.50818000000004, "r": 144.77483, "b": 284.7211899999999, "coord_origin": "TOPLEFT"}}]}, "text": "Windows, and the Windows logo are trademarks of Microsoft Corporation in the United States, other countries, or both."}, {"label": "text", "id": 16, "page_no": 9, "cluster": {"id": 16, "label": "text", "bbox": {"l": 64.17562103271484, "t": 294.56353759765625, "r": 464.51569, "b": 305.0062561035156, "coord_origin": "TOPLEFT"}, "confidence": 0.959129810333252, "cells": [{"id": 26, "text": "Other company, product, or service names may be trademarks or service marks of others. ", "bbox": {"l": 64.800003, "t": 295.48798, "r": 464.51569, "b": 304.70096, "coord_origin": "TOPLEFT"}}]}, "text": "Other company, product, or service names may be trademarks or service marks of others."}, {"label": "picture", "id": 17, "page_no": 9, "cluster": {"id": 17, "label": "picture", "bbox": {"l": 465.2912902832031, "t": 210.87185668945312, "r": 487.54522705078125, "b": 223.7872772216797, "coord_origin": "TOPLEFT"}, "confidence": 0.6540718078613281, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 9, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.85106658935547, "t": 755.861328125, "r": 81.162003, "b": 765.08172, "coord_origin": "TOPLEFT"}, "confidence": 0.9069269299507141, "cells": [{"id": 0, "text": "viii ", "bbox": {"l": 64.800003, "t": 755.868721, "r": 81.162003, "b": 765.08172, "coord_origin": "TOPLEFT"}}]}, "text": "viii"}, {"label": "page_footer", "id": 1, "page_no": 9, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 95.8013916015625, "t": 755.7946166992188, "r": 337.03378, "b": 765.3360595703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9419320821762085, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 96.180305, "t": 756.557999, "r": 337.03378, "b": 764.883001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 10, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "DB2 for i Center of Excellence", "bbox": {"l": 64.800003, "t": 74.48395000000005, "r": 235.8624, "b": 85.58398, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Solution Brief", "bbox": {"l": 94.132698, "t": 148.63933999999995, "r": 139.54634, "b": 155.33642999999995, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "IBM Systems Lab Services and Training", "bbox": {"l": 94.134933, "t": 138.45012999999994, "r": 233.99973, "b": 145.22162000000003, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Power Services", "bbox": {"l": 461.08859000000007, "t": 138.40752999999995, "r": 506.26178, "b": 145.42181000000005, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "DB2 for i", "bbox": {"l": 280.24011, "t": 239.34265000000005, "r": 354.57022, "b": 256.26153999999997, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Center of Excellence ", "bbox": {"l": 280.24011, "t": 259.70165999999995, "r": 463.80942, "b": 276.62054, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Expert help to achieve your business requirements", "bbox": {"l": 280.24011, "t": 277.59027000000003, "r": 483.29572, "b": 287.45959, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "We build confident, satisfied clients", "bbox": {"l": 280.24011, "t": 315.88161999999994, "r": 443.28210000000007, "b": 324.89566, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "No one else has the vast consulting experiences, skills sharing and ", "bbox": {"l": 280.24011, "t": 327.37595, "r": 488.15466, "b": 334.77994, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "renown service offerings to do what we can do for you.", "bbox": {"l": 280.24011, "t": 337.55551, "r": 452.34018, "b": 344.9595, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Because no one else is IBM.", "bbox": {"l": 280.24011, "t": 357.3260200000001, "r": 367.86023, "b": 364.73001, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "With combined experiences and direct access to development groups, ", "bbox": {"l": 280.24011, "t": 377.09801999999996, "r": 500.32104000000004, "b": 384.50201, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "we\u2019re the experts in IBM DB2\u00ae for i. The DB2 for i Center of ", "bbox": {"l": 280.24011, "t": 387.27759, "r": 479.25497, "b": 394.68158, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Excellence (CoE) can help you achieve-perhaps reexamine and ", "bbox": {"l": 280.24011, "t": 397.45715, "r": 483.4667400000001, "b": 404.86115, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "exceed-your business requirements and gain more confidence and ", "bbox": {"l": 280.24011, "t": 407.63672, "r": 492.97656, "b": 415.04071000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "satisfaction in IBM product data management products and solutions.", "bbox": {"l": 280.24011, "t": 417.81628, "r": 498.87, "b": 425.22027999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Who we are, some of what we do", "bbox": {"l": 280.24011, "t": 437.85403, "r": 434.83205999999996, "b": 446.86807, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Global CoE engagements cover topics including:", "bbox": {"l": 280.24011, "t": 449.34824000000003, "r": 434.56316999999996, "b": 456.75223, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "r ", "bbox": {"l": 280.24011, "t": 470.95236, "r": 284.0993, "b": 476.16074, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Database performance and scalability", "bbox": {"l": 287.28961, "t": 469.11826, "r": 401.56412, "b": 476.52225, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "r ", "bbox": {"l": 280.24011, "t": 481.13507, "r": 284.0993, "b": 486.34344, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Advanced SQL knowledge and skills transfer", "bbox": {"l": 287.28961, "t": 479.30096, "r": 424.99646, "b": 486.70496, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "r ", "bbox": {"l": 280.24011, "t": 491.31766, "r": 284.0993, "b": 496.52603, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Business intelligence and analytics", "bbox": {"l": 287.28961, "t": 489.48355, "r": 392.15845, "b": 496.88754, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "r ", "bbox": {"l": 280.24011, "t": 501.50037, "r": 284.0993, "b": 506.70874, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "DB2 Web Query", "bbox": {"l": 287.28961, "t": 499.66626, "r": 339.94354, "b": 507.07025, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "r ", "bbox": {"l": 280.24011, "t": 511.68295, "r": 284.0993, "b": 516.8913299999999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Query/400 modernization for better reporting and analysis capabilities", "bbox": {"l": 287.28961, "t": 509.84885, "r": 504.19314999999995, "b": 517.25284, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "r ", "bbox": {"l": 280.24011, "t": 521.8656599999999, "r": 284.0993, "b": 527.07404, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Database modernization and re-engineering", "bbox": {"l": 287.28961, "t": 520.03156, "r": 423.0022, "b": 527.4355499999999, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "r ", "bbox": {"l": 280.24011, "t": 532.04825, "r": 284.0993, "b": 537.2566400000001, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Data-centric architecture and design", "bbox": {"l": 287.28961, "t": 530.21414, "r": 399.65173, "b": 537.61813, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "r ", "bbox": {"l": 280.24011, "t": 542.23083, "r": 284.0993, "b": 547.43924, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Extremely large database and overcoming limits to growth", "bbox": {"l": 287.28961, "t": 540.39674, "r": 466.77881, "b": 547.80074, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "r ", "bbox": {"l": 280.24011, "t": 552.41354, "r": 284.0993, "b": 557.62195, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "ISV education and enablement", "bbox": {"l": 287.28961, "t": 550.5794500000001, "r": 382.20956, "b": 557.98344, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Highlights ", "bbox": {"l": 144.88921, "t": 327.46163999999993, "r": 188.74681, "b": 336.81406, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 346.01953, "r": 148.68732, "b": 350.60168, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.9388, "t": 345.21707, "r": 177.25424, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 176.9472, "t": 345.21707, "r": 187.11098, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 186.7914, "t": 345.21707, "r": 222.95989999999998, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 222.65912, "t": 345.21707, "r": 229.55193999999997, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "GLYPHGLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 229.2261, "t": 345.21707, "r": 242.87389000000002, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 353.04984, "r": 178.77066, "b": 358.68942, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 178.46362, "t": 353.04984, "r": 207.16908, "b": 358.68942, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 368.73465, "r": 148.68732, "b": 373.3168, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "GLYPHGLYPHGLYPH GLYPHGLYPH", "bbox": {"l": 151.9388, "t": 367.93219, "r": 166.05655, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 165.73697, "t": 367.93219, "r": 186.40289, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPH", "bbox": {"l": 186.09586, "t": 367.93219, "r": 203.61617, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 203.30286, "t": 367.93219, "r": 211.82489, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 211.49905, "t": 367.93219, "r": 218.16002, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 217.83418, "t": 367.93219, "r": 241.30737, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 375.76495, "r": 174.46577, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 174.15874, "t": 375.76495, "r": 214.4128, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 214.11829, "t": 375.76495, "r": 221.01110999999997, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 220.68527, "t": 375.76495, "r": 247.52341000000004, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "GLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 247.21637, "t": 375.76495, "r": 259.2287, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 383.59772, "r": 184.61703, "b": 389.2373, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 399.28265, "r": 148.68732, "b": 403.86481000000003, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "GLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.9388, "t": 398.48019, "r": 165.36099, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 165.04141, "t": 398.48019, "r": 173.56345, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 173.23761, "t": 398.48019, "r": 185.95174, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 185.63216, "t": 398.48019, "r": 204.42448, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 204.11118, "t": 398.48019, "r": 235.29178, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 234.99099999999999, "t": 398.48019, "r": 249.83562, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 406.31296, "r": 173.41306, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 173.10602, "t": 406.31296, "r": 185.0118, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 184.69221, "t": 406.31296, "r": 206.3858, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 206.07249, "t": 406.31296, "r": 228.24231000000003, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 421.99773999999996, "r": 148.68732, "b": 426.5799, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "GLYPH", "bbox": {"l": 151.9388, "t": 421.1952800000001, "r": 155.43533, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 154.73979, "t": 421.1952800000001, "r": 166.06282, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 165.74324, "t": 421.1952800000001, "r": 195.84607, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 195.53903, "t": 421.1952800000001, "r": 202.43185, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 202.10602, "t": 421.1952800000001, "r": 222.87220999999997, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 222.55890000000002, "t": 421.1952800000001, "r": 229.57077, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "GLYPH GLYPH", "bbox": {"l": 229.24492999999998, "t": 421.1952800000001, "r": 234.25163000000003, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.92627, "t": 429.02805, "r": 181.42754, "b": 434.66763, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 181.1205, "t": 429.02805, "r": 201.07835, "b": 434.66763, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 200.76505, "t": 429.02805, "r": 207.65787, "b": 434.66763, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 207.33203, "t": 429.02805, "r": 232.07098000000002, "b": 434.66763, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "text", "bbox": {"l": 64.800003, "t": 74.48395000000005, "r": 235.8624, "b": 85.58398, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 0, "text": "DB2 for i Center of Excellence", "bbox": {"l": 64.800003, "t": 74.48395000000005, "r": 235.8624, "b": 85.58398, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "text", "bbox": {"l": 93.67039489746094, "t": 137.6368408203125, "r": 233.99973, "b": 155.33642999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.7431555986404419, "cells": [{"id": 1, "text": "Solution Brief", "bbox": {"l": 94.132698, "t": 148.63933999999995, "r": 139.54634, "b": 155.33642999999995, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "IBM Systems Lab Services and Training", "bbox": {"l": 94.134933, "t": 138.45012999999994, "r": 233.99973, "b": 145.22162000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 460.8193359375, "t": 138.33865356445312, "r": 506.26178, "b": 145.42181000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.7798991203308105, "cells": [{"id": 3, "text": "Power Services", "bbox": {"l": 461.08859000000007, "t": 138.40752999999995, "r": 506.26178, "b": 145.42181000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "section_header", "bbox": {"l": 280.07391357421875, "t": 237.7128143310547, "r": 463.80942, "b": 276.62054, "coord_origin": "TOPLEFT"}, "confidence": 0.7587877511978149, "cells": [{"id": 4, "text": "DB2 for i", "bbox": {"l": 280.24011, "t": 239.34265000000005, "r": 354.57022, "b": 256.26153999999997, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Center of Excellence ", "bbox": {"l": 280.24011, "t": 259.70165999999995, "r": 463.80942, "b": 276.62054, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 279.51953125, "t": 277.1574401855469, "r": 483.7276916503906, "b": 288.63494873046875, "coord_origin": "TOPLEFT"}, "confidence": 0.7965629696846008, "cells": [{"id": 6, "text": "Expert help to achieve your business requirements", "bbox": {"l": 280.24011, "t": 277.59027000000003, "r": 483.29572, "b": 287.45959, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "section_header", "bbox": {"l": 279.468994140625, "t": 315.0786437988281, "r": 443.375732421875, "b": 324.89566, "coord_origin": "TOPLEFT"}, "confidence": 0.891353964805603, "cells": [{"id": 7, "text": "We build confident, satisfied clients", "bbox": {"l": 280.24011, "t": 315.88161999999994, "r": 443.28210000000007, "b": 324.89566, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 279.530517578125, "t": 327.26470947265625, "r": 488.15466, "b": 345.5077209472656, "coord_origin": "TOPLEFT"}, "confidence": 0.9560743570327759, "cells": [{"id": 8, "text": "No one else has the vast consulting experiences, skills sharing and ", "bbox": {"l": 280.24011, "t": 327.37595, "r": 488.15466, "b": 334.77994, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "renown service offerings to do what we can do for you.", "bbox": {"l": 280.24011, "t": 337.55551, "r": 452.34018, "b": 344.9595, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 280.0453186035156, "t": 356.5709533691406, "r": 367.86023, "b": 364.73001, "coord_origin": "TOPLEFT"}, "confidence": 0.8260757923126221, "cells": [{"id": 10, "text": "Because no one else is IBM.", "bbox": {"l": 280.24011, "t": 357.3260200000001, "r": 367.86023, "b": 364.73001, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 279.70794677734375, "t": 376.26104736328125, "r": 500.32104000000004, "b": 425.3092041015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9764720797538757, "cells": [{"id": 11, "text": "With combined experiences and direct access to development groups, ", "bbox": {"l": 280.24011, "t": 377.09801999999996, "r": 500.32104000000004, "b": 384.50201, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "we\u2019re the experts in IBM DB2\u00ae for i. The DB2 for i Center of ", "bbox": {"l": 280.24011, "t": 387.27759, "r": 479.25497, "b": 394.68158, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Excellence (CoE) can help you achieve-perhaps reexamine and ", "bbox": {"l": 280.24011, "t": 397.45715, "r": 483.4667400000001, "b": 404.86115, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "exceed-your business requirements and gain more confidence and ", "bbox": {"l": 280.24011, "t": 407.63672, "r": 492.97656, "b": 415.04071000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "satisfaction in IBM product data management products and solutions.", "bbox": {"l": 280.24011, "t": 417.81628, "r": 498.87, "b": 425.22027999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "section_header", "bbox": {"l": 279.6336669921875, "t": 437.1227722167969, "r": 435.1236572265625, "b": 446.86807, "coord_origin": "TOPLEFT"}, "confidence": 0.8492124676704407, "cells": [{"id": 16, "text": "Who we are, some of what we do", "bbox": {"l": 280.24011, "t": 437.85403, "r": 434.83205999999996, "b": 446.86807, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 279.4736328125, "t": 449.2602233886719, "r": 434.56316999999996, "b": 457.4661865234375, "coord_origin": "TOPLEFT"}, "confidence": 0.8440341353416443, "cells": [{"id": 17, "text": "Global CoE engagements cover topics including:", "bbox": {"l": 280.24011, "t": 449.34824000000003, "r": 434.56316999999996, "b": 456.75223, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 279.74200439453125, "t": 468.3660583496094, "r": 402.1675109863281, "b": 476.5758972167969, "coord_origin": "TOPLEFT"}, "confidence": 0.9239599108695984, "cells": [{"id": 18, "text": "r ", "bbox": {"l": 280.24011, "t": 470.95236, "r": 284.0993, "b": 476.16074, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Database performance and scalability", "bbox": {"l": 287.28961, "t": 469.11826, "r": 401.56412, "b": 476.52225, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "list_item", "bbox": {"l": 279.7657165527344, "t": 478.64898681640625, "r": 424.99646, "b": 486.78228759765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9239722490310669, "cells": [{"id": 20, "text": "r ", "bbox": {"l": 280.24011, "t": 481.13507, "r": 284.0993, "b": 486.34344, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Advanced SQL knowledge and skills transfer", "bbox": {"l": 287.28961, "t": 479.30096, "r": 424.99646, "b": 486.70496, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "list_item", "bbox": {"l": 279.9660339355469, "t": 489.48355, "r": 392.2996520996094, "b": 497.1912841796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9157897233963013, "cells": [{"id": 22, "text": "r ", "bbox": {"l": 280.24011, "t": 491.31766, "r": 284.0993, "b": 496.52603, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Business intelligence and analytics", "bbox": {"l": 287.28961, "t": 489.48355, "r": 392.15845, "b": 496.88754, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "list_item", "bbox": {"l": 279.9432067871094, "t": 499.5702819824219, "r": 339.94354, "b": 507.2607727050781, "coord_origin": "TOPLEFT"}, "confidence": 0.8733457922935486, "cells": [{"id": 24, "text": "r ", "bbox": {"l": 280.24011, "t": 501.50037, "r": 284.0993, "b": 506.70874, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "DB2 Web Query", "bbox": {"l": 287.28961, "t": 499.66626, "r": 339.94354, "b": 507.07025, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "list_item", "bbox": {"l": 279.68328857421875, "t": 509.4296875, "r": 504.21795654296875, "b": 517.4979858398438, "coord_origin": "TOPLEFT"}, "confidence": 0.924924373626709, "cells": [{"id": 26, "text": "r ", "bbox": {"l": 280.24011, "t": 511.68295, "r": 284.0993, "b": 516.8913299999999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Query/400 modernization for better reporting and analysis capabilities", "bbox": {"l": 287.28961, "t": 509.84885, "r": 504.19314999999995, "b": 517.25284, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "list_item", "bbox": {"l": 279.66998291015625, "t": 520.03156, "r": 423.0022, "b": 528.0305786132812, "coord_origin": "TOPLEFT"}, "confidence": 0.9109311103820801, "cells": [{"id": 28, "text": "r ", "bbox": {"l": 280.24011, "t": 521.8656599999999, "r": 284.0993, "b": 527.07404, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Database modernization and re-engineering", "bbox": {"l": 287.28961, "t": 520.03156, "r": 423.0022, "b": 527.4355499999999, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "list_item", "bbox": {"l": 279.7203674316406, "t": 529.9635620117188, "r": 400.07391357421875, "b": 537.8783569335938, "coord_origin": "TOPLEFT"}, "confidence": 0.8977466225624084, "cells": [{"id": 30, "text": "r ", "bbox": {"l": 280.24011, "t": 532.04825, "r": 284.0993, "b": 537.2566400000001, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Data-centric architecture and design", "bbox": {"l": 287.28961, "t": 530.21414, "r": 399.65173, "b": 537.61813, "coord_origin": "TOPLEFT"}}]}, {"id": 18, "label": "list_item", "bbox": {"l": 279.7815856933594, "t": 539.8663330078125, "r": 467.2125549316406, "b": 547.80074, "coord_origin": "TOPLEFT"}, "confidence": 0.9218330383300781, "cells": [{"id": 32, "text": "r ", "bbox": {"l": 280.24011, "t": 542.23083, "r": 284.0993, "b": 547.43924, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Extremely large database and overcoming limits to growth", "bbox": {"l": 287.28961, "t": 540.39674, "r": 466.77881, "b": 547.80074, "coord_origin": "TOPLEFT"}}]}, {"id": 19, "label": "list_item", "bbox": {"l": 279.89080810546875, "t": 550.0230102539062, "r": 382.3631591796875, "b": 557.98344, "coord_origin": "TOPLEFT"}, "confidence": 0.9075438976287842, "cells": [{"id": 34, "text": "r ", "bbox": {"l": 280.24011, "t": 552.41354, "r": 284.0993, "b": 557.62195, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "ISV education and enablement", "bbox": {"l": 287.28961, "t": 550.5794500000001, "r": 382.20956, "b": 557.98344, "coord_origin": "TOPLEFT"}}]}, {"id": 20, "label": "section_header", "bbox": {"l": 144.19781494140625, "t": 327.06201171875, "r": 188.74681, "b": 337.35504150390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9098501205444336, "cells": [{"id": 36, "text": "Highlights ", "bbox": {"l": 144.88921, "t": 327.46163999999993, "r": 188.74681, "b": 336.81406, "coord_origin": "TOPLEFT"}}]}, {"id": 21, "label": "list_item", "bbox": {"l": 144.4553985595703, "t": 344.037109375, "r": 242.87389000000002, "b": 358.68942, "coord_origin": "TOPLEFT"}, "confidence": 0.9571698904037476, "cells": [{"id": 37, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 346.01953, "r": 148.68732, "b": 350.60168, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.9388, "t": 345.21707, "r": 177.25424, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 176.9472, "t": 345.21707, "r": 187.11098, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 186.7914, "t": 345.21707, "r": 222.95989999999998, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 222.65912, "t": 345.21707, "r": 229.55193999999997, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "GLYPHGLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 229.2261, "t": 345.21707, "r": 242.87389000000002, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 353.04984, "r": 178.77066, "b": 358.68942, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 178.46362, "t": 353.04984, "r": 207.16908, "b": 358.68942, "coord_origin": "TOPLEFT"}}]}, {"id": 22, "label": "list_item", "bbox": {"l": 144.40879821777344, "t": 366.6461486816406, "r": 259.2287, "b": 389.2373, "coord_origin": "TOPLEFT"}, "confidence": 0.9634581804275513, "cells": [{"id": 45, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 368.73465, "r": 148.68732, "b": 373.3168, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "GLYPHGLYPHGLYPH GLYPHGLYPH", "bbox": {"l": 151.9388, "t": 367.93219, "r": 166.05655, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 165.73697, "t": 367.93219, "r": 186.40289, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPH", "bbox": {"l": 186.09586, "t": 367.93219, "r": 203.61617, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 203.30286, "t": 367.93219, "r": 211.82489, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 211.49905, "t": 367.93219, "r": 218.16002, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 217.83418, "t": 367.93219, "r": 241.30737, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 375.76495, "r": 174.46577, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 174.15874, "t": 375.76495, "r": 214.4128, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 214.11829, "t": 375.76495, "r": 221.01110999999997, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 220.68527, "t": 375.76495, "r": 247.52341000000004, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "GLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 247.21637, "t": 375.76495, "r": 259.2287, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 383.59772, "r": 184.61703, "b": 389.2373, "coord_origin": "TOPLEFT"}}]}, {"id": 23, "label": "list_item", "bbox": {"l": 144.23313903808594, "t": 397.1644592285156, "r": 249.83562, "b": 412.3861083984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9541196823120117, "cells": [{"id": 58, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 399.28265, "r": 148.68732, "b": 403.86481000000003, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "GLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.9388, "t": 398.48019, "r": 165.36099, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 165.04141, "t": 398.48019, "r": 173.56345, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 173.23761, "t": 398.48019, "r": 185.95174, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 185.63216, "t": 398.48019, "r": 204.42448, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 204.11118, "t": 398.48019, "r": 235.29178, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 234.99099999999999, "t": 398.48019, "r": 249.83562, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 406.31296, "r": 173.41306, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 173.10602, "t": 406.31296, "r": 185.0118, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 184.69221, "t": 406.31296, "r": 206.3858, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 206.07249, "t": 406.31296, "r": 228.24231000000003, "b": 411.95255, "coord_origin": "TOPLEFT"}}]}, {"id": 24, "label": "list_item", "bbox": {"l": 144.35208129882812, "t": 420.17449951171875, "r": 234.25163000000003, "b": 434.66763, "coord_origin": "TOPLEFT"}, "confidence": 0.9440370798110962, "cells": [{"id": 69, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 421.99773999999996, "r": 148.68732, "b": 426.5799, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "GLYPH", "bbox": {"l": 151.9388, "t": 421.1952800000001, "r": 155.43533, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 154.73979, "t": 421.1952800000001, "r": 166.06282, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 165.74324, "t": 421.1952800000001, "r": 195.84607, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 195.53903, "t": 421.1952800000001, "r": 202.43185, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 202.10602, "t": 421.1952800000001, "r": 222.87220999999997, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 222.55890000000002, "t": 421.1952800000001, "r": 229.57077, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "GLYPH GLYPH", "bbox": {"l": 229.24492999999998, "t": 421.1952800000001, "r": 234.25163000000003, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.92627, "t": 429.02805, "r": 181.42754, "b": 434.66763, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 181.1205, "t": 429.02805, "r": 201.07835, "b": 434.66763, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 200.76505, "t": 429.02805, "r": 207.65787, "b": 434.66763, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 207.33203, "t": 429.02805, "r": 232.07098000000002, "b": 434.66763, "coord_origin": "TOPLEFT"}}]}, {"id": 25, "label": "picture", "bbox": {"l": 64.16704559326172, "t": 603.50634765625, "r": 258.77435302734375, "b": 688.1282348632812, "coord_origin": "TOPLEFT"}, "confidence": 0.8925828337669373, "cells": []}, {"id": 26, "label": "picture", "bbox": {"l": 143.39866638183594, "t": 270.2610778808594, "r": 179.56256103515625, "b": 285.621337890625, "coord_origin": "TOPLEFT"}, "confidence": 0.7491760849952698, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "text", "id": 0, "page_no": 10, "cluster": {"id": 0, "label": "text", "bbox": {"l": 64.800003, "t": 74.48395000000005, "r": 235.8624, "b": 85.58398, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 0, "text": "DB2 for i Center of Excellence", "bbox": {"l": 64.800003, "t": 74.48395000000005, "r": 235.8624, "b": 85.58398, "coord_origin": "TOPLEFT"}}]}, "text": "DB2 for i Center of Excellence"}, {"label": "text", "id": 1, "page_no": 10, "cluster": {"id": 1, "label": "text", "bbox": {"l": 93.67039489746094, "t": 137.6368408203125, "r": 233.99973, "b": 155.33642999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.7431555986404419, "cells": [{"id": 1, "text": "Solution Brief", "bbox": {"l": 94.132698, "t": 148.63933999999995, "r": 139.54634, "b": 155.33642999999995, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "IBM Systems Lab Services and Training", "bbox": {"l": 94.134933, "t": 138.45012999999994, "r": 233.99973, "b": 145.22162000000003, "coord_origin": "TOPLEFT"}}]}, "text": "Solution Brief IBM Systems Lab Services and Training"}, {"label": "text", "id": 2, "page_no": 10, "cluster": {"id": 2, "label": "text", "bbox": {"l": 460.8193359375, "t": 138.33865356445312, "r": 506.26178, "b": 145.42181000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.7798991203308105, "cells": [{"id": 3, "text": "Power Services", "bbox": {"l": 461.08859000000007, "t": 138.40752999999995, "r": 506.26178, "b": 145.42181000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Power Services"}, {"label": "section_header", "id": 3, "page_no": 10, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 280.07391357421875, "t": 237.7128143310547, "r": 463.80942, "b": 276.62054, "coord_origin": "TOPLEFT"}, "confidence": 0.7587877511978149, "cells": [{"id": 4, "text": "DB2 for i", "bbox": {"l": 280.24011, "t": 239.34265000000005, "r": 354.57022, "b": 256.26153999999997, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Center of Excellence ", "bbox": {"l": 280.24011, "t": 259.70165999999995, "r": 463.80942, "b": 276.62054, "coord_origin": "TOPLEFT"}}]}, "text": "DB2 for i Center of Excellence"}, {"label": "text", "id": 4, "page_no": 10, "cluster": {"id": 4, "label": "text", "bbox": {"l": 279.51953125, "t": 277.1574401855469, "r": 483.7276916503906, "b": 288.63494873046875, "coord_origin": "TOPLEFT"}, "confidence": 0.7965629696846008, "cells": [{"id": 6, "text": "Expert help to achieve your business requirements", "bbox": {"l": 280.24011, "t": 277.59027000000003, "r": 483.29572, "b": 287.45959, "coord_origin": "TOPLEFT"}}]}, "text": "Expert help to achieve your business requirements"}, {"label": "section_header", "id": 5, "page_no": 10, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 279.468994140625, "t": 315.0786437988281, "r": 443.375732421875, "b": 324.89566, "coord_origin": "TOPLEFT"}, "confidence": 0.891353964805603, "cells": [{"id": 7, "text": "We build confident, satisfied clients", "bbox": {"l": 280.24011, "t": 315.88161999999994, "r": 443.28210000000007, "b": 324.89566, "coord_origin": "TOPLEFT"}}]}, "text": "We build confident, satisfied clients"}, {"label": "text", "id": 6, "page_no": 10, "cluster": {"id": 6, "label": "text", "bbox": {"l": 279.530517578125, "t": 327.26470947265625, "r": 488.15466, "b": 345.5077209472656, "coord_origin": "TOPLEFT"}, "confidence": 0.9560743570327759, "cells": [{"id": 8, "text": "No one else has the vast consulting experiences, skills sharing and ", "bbox": {"l": 280.24011, "t": 327.37595, "r": 488.15466, "b": 334.77994, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "renown service offerings to do what we can do for you.", "bbox": {"l": 280.24011, "t": 337.55551, "r": 452.34018, "b": 344.9595, "coord_origin": "TOPLEFT"}}]}, "text": "No one else has the vast consulting experiences, skills sharing and renown service offerings to do what we can do for you."}, {"label": "text", "id": 7, "page_no": 10, "cluster": {"id": 7, "label": "text", "bbox": {"l": 280.0453186035156, "t": 356.5709533691406, "r": 367.86023, "b": 364.73001, "coord_origin": "TOPLEFT"}, "confidence": 0.8260757923126221, "cells": [{"id": 10, "text": "Because no one else is IBM.", "bbox": {"l": 280.24011, "t": 357.3260200000001, "r": 367.86023, "b": 364.73001, "coord_origin": "TOPLEFT"}}]}, "text": "Because no one else is IBM."}, {"label": "text", "id": 8, "page_no": 10, "cluster": {"id": 8, "label": "text", "bbox": {"l": 279.70794677734375, "t": 376.26104736328125, "r": 500.32104000000004, "b": 425.3092041015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9764720797538757, "cells": [{"id": 11, "text": "With combined experiences and direct access to development groups, ", "bbox": {"l": 280.24011, "t": 377.09801999999996, "r": 500.32104000000004, "b": 384.50201, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "we\u2019re the experts in IBM DB2\u00ae for i. The DB2 for i Center of ", "bbox": {"l": 280.24011, "t": 387.27759, "r": 479.25497, "b": 394.68158, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Excellence (CoE) can help you achieve-perhaps reexamine and ", "bbox": {"l": 280.24011, "t": 397.45715, "r": 483.4667400000001, "b": 404.86115, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "exceed-your business requirements and gain more confidence and ", "bbox": {"l": 280.24011, "t": 407.63672, "r": 492.97656, "b": 415.04071000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "satisfaction in IBM product data management products and solutions.", "bbox": {"l": 280.24011, "t": 417.81628, "r": 498.87, "b": 425.22027999999995, "coord_origin": "TOPLEFT"}}]}, "text": "With combined experiences and direct access to development groups, we\u2019re the experts in IBM DB2\u00ae for i. The DB2 for i Center of Excellence (CoE) can help you achieve-perhaps reexamine and exceed-your business requirements and gain more confidence and satisfaction in IBM product data management products and solutions."}, {"label": "section_header", "id": 9, "page_no": 10, "cluster": {"id": 9, "label": "section_header", "bbox": {"l": 279.6336669921875, "t": 437.1227722167969, "r": 435.1236572265625, "b": 446.86807, "coord_origin": "TOPLEFT"}, "confidence": 0.8492124676704407, "cells": [{"id": 16, "text": "Who we are, some of what we do", "bbox": {"l": 280.24011, "t": 437.85403, "r": 434.83205999999996, "b": 446.86807, "coord_origin": "TOPLEFT"}}]}, "text": "Who we are, some of what we do"}, {"label": "text", "id": 10, "page_no": 10, "cluster": {"id": 10, "label": "text", "bbox": {"l": 279.4736328125, "t": 449.2602233886719, "r": 434.56316999999996, "b": 457.4661865234375, "coord_origin": "TOPLEFT"}, "confidence": 0.8440341353416443, "cells": [{"id": 17, "text": "Global CoE engagements cover topics including:", "bbox": {"l": 280.24011, "t": 449.34824000000003, "r": 434.56316999999996, "b": 456.75223, "coord_origin": "TOPLEFT"}}]}, "text": "Global CoE engagements cover topics including:"}, {"label": "list_item", "id": 11, "page_no": 10, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 279.74200439453125, "t": 468.3660583496094, "r": 402.1675109863281, "b": 476.5758972167969, "coord_origin": "TOPLEFT"}, "confidence": 0.9239599108695984, "cells": [{"id": 18, "text": "r ", "bbox": {"l": 280.24011, "t": 470.95236, "r": 284.0993, "b": 476.16074, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Database performance and scalability", "bbox": {"l": 287.28961, "t": 469.11826, "r": 401.56412, "b": 476.52225, "coord_origin": "TOPLEFT"}}]}, "text": "r Database performance and scalability"}, {"label": "list_item", "id": 12, "page_no": 10, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 279.7657165527344, "t": 478.64898681640625, "r": 424.99646, "b": 486.78228759765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9239722490310669, "cells": [{"id": 20, "text": "r ", "bbox": {"l": 280.24011, "t": 481.13507, "r": 284.0993, "b": 486.34344, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Advanced SQL knowledge and skills transfer", "bbox": {"l": 287.28961, "t": 479.30096, "r": 424.99646, "b": 486.70496, "coord_origin": "TOPLEFT"}}]}, "text": "r Advanced SQL knowledge and skills transfer"}, {"label": "list_item", "id": 13, "page_no": 10, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 279.9660339355469, "t": 489.48355, "r": 392.2996520996094, "b": 497.1912841796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9157897233963013, "cells": [{"id": 22, "text": "r ", "bbox": {"l": 280.24011, "t": 491.31766, "r": 284.0993, "b": 496.52603, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Business intelligence and analytics", "bbox": {"l": 287.28961, "t": 489.48355, "r": 392.15845, "b": 496.88754, "coord_origin": "TOPLEFT"}}]}, "text": "r Business intelligence and analytics"}, {"label": "list_item", "id": 14, "page_no": 10, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 279.9432067871094, "t": 499.5702819824219, "r": 339.94354, "b": 507.2607727050781, "coord_origin": "TOPLEFT"}, "confidence": 0.8733457922935486, "cells": [{"id": 24, "text": "r ", "bbox": {"l": 280.24011, "t": 501.50037, "r": 284.0993, "b": 506.70874, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "DB2 Web Query", "bbox": {"l": 287.28961, "t": 499.66626, "r": 339.94354, "b": 507.07025, "coord_origin": "TOPLEFT"}}]}, "text": "r DB2 Web Query"}, {"label": "list_item", "id": 15, "page_no": 10, "cluster": {"id": 15, "label": "list_item", "bbox": {"l": 279.68328857421875, "t": 509.4296875, "r": 504.21795654296875, "b": 517.4979858398438, "coord_origin": "TOPLEFT"}, "confidence": 0.924924373626709, "cells": [{"id": 26, "text": "r ", "bbox": {"l": 280.24011, "t": 511.68295, "r": 284.0993, "b": 516.8913299999999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Query/400 modernization for better reporting and analysis capabilities", "bbox": {"l": 287.28961, "t": 509.84885, "r": 504.19314999999995, "b": 517.25284, "coord_origin": "TOPLEFT"}}]}, "text": "r Query/400 modernization for better reporting and analysis capabilities"}, {"label": "list_item", "id": 16, "page_no": 10, "cluster": {"id": 16, "label": "list_item", "bbox": {"l": 279.66998291015625, "t": 520.03156, "r": 423.0022, "b": 528.0305786132812, "coord_origin": "TOPLEFT"}, "confidence": 0.9109311103820801, "cells": [{"id": 28, "text": "r ", "bbox": {"l": 280.24011, "t": 521.8656599999999, "r": 284.0993, "b": 527.07404, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Database modernization and re-engineering", "bbox": {"l": 287.28961, "t": 520.03156, "r": 423.0022, "b": 527.4355499999999, "coord_origin": "TOPLEFT"}}]}, "text": "r Database modernization and re-engineering"}, {"label": "list_item", "id": 17, "page_no": 10, "cluster": {"id": 17, "label": "list_item", "bbox": {"l": 279.7203674316406, "t": 529.9635620117188, "r": 400.07391357421875, "b": 537.8783569335938, "coord_origin": "TOPLEFT"}, "confidence": 0.8977466225624084, "cells": [{"id": 30, "text": "r ", "bbox": {"l": 280.24011, "t": 532.04825, "r": 284.0993, "b": 537.2566400000001, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Data-centric architecture and design", "bbox": {"l": 287.28961, "t": 530.21414, "r": 399.65173, "b": 537.61813, "coord_origin": "TOPLEFT"}}]}, "text": "r Data-centric architecture and design"}, {"label": "list_item", "id": 18, "page_no": 10, "cluster": {"id": 18, "label": "list_item", "bbox": {"l": 279.7815856933594, "t": 539.8663330078125, "r": 467.2125549316406, "b": 547.80074, "coord_origin": "TOPLEFT"}, "confidence": 0.9218330383300781, "cells": [{"id": 32, "text": "r ", "bbox": {"l": 280.24011, "t": 542.23083, "r": 284.0993, "b": 547.43924, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Extremely large database and overcoming limits to growth", "bbox": {"l": 287.28961, "t": 540.39674, "r": 466.77881, "b": 547.80074, "coord_origin": "TOPLEFT"}}]}, "text": "r Extremely large database and overcoming limits to growth"}, {"label": "list_item", "id": 19, "page_no": 10, "cluster": {"id": 19, "label": "list_item", "bbox": {"l": 279.89080810546875, "t": 550.0230102539062, "r": 382.3631591796875, "b": 557.98344, "coord_origin": "TOPLEFT"}, "confidence": 0.9075438976287842, "cells": [{"id": 34, "text": "r ", "bbox": {"l": 280.24011, "t": 552.41354, "r": 284.0993, "b": 557.62195, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "ISV education and enablement", "bbox": {"l": 287.28961, "t": 550.5794500000001, "r": 382.20956, "b": 557.98344, "coord_origin": "TOPLEFT"}}]}, "text": "r ISV education and enablement"}, {"label": "section_header", "id": 20, "page_no": 10, "cluster": {"id": 20, "label": "section_header", "bbox": {"l": 144.19781494140625, "t": 327.06201171875, "r": 188.74681, "b": 337.35504150390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9098501205444336, "cells": [{"id": 36, "text": "Highlights ", "bbox": {"l": 144.88921, "t": 327.46163999999993, "r": 188.74681, "b": 336.81406, "coord_origin": "TOPLEFT"}}]}, "text": "Highlights"}, {"label": "list_item", "id": 21, "page_no": 10, "cluster": {"id": 21, "label": "list_item", "bbox": {"l": 144.4553985595703, "t": 344.037109375, "r": 242.87389000000002, "b": 358.68942, "coord_origin": "TOPLEFT"}, "confidence": 0.9571698904037476, "cells": [{"id": 37, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 346.01953, "r": 148.68732, "b": 350.60168, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.9388, "t": 345.21707, "r": 177.25424, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 176.9472, "t": 345.21707, "r": 187.11098, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 186.7914, "t": 345.21707, "r": 222.95989999999998, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 222.65912, "t": 345.21707, "r": 229.55193999999997, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "GLYPHGLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 229.2261, "t": 345.21707, "r": 242.87389000000002, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 353.04984, "r": 178.77066, "b": 358.68942, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 178.46362, "t": 353.04984, "r": 207.16908, "b": 358.68942, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH"}, {"label": "list_item", "id": 22, "page_no": 10, "cluster": {"id": 22, "label": "list_item", "bbox": {"l": 144.40879821777344, "t": 366.6461486816406, "r": 259.2287, "b": 389.2373, "coord_origin": "TOPLEFT"}, "confidence": 0.9634581804275513, "cells": [{"id": 45, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 368.73465, "r": 148.68732, "b": 373.3168, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "GLYPHGLYPHGLYPH GLYPHGLYPH", "bbox": {"l": 151.9388, "t": 367.93219, "r": 166.05655, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 165.73697, "t": 367.93219, "r": 186.40289, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPH", "bbox": {"l": 186.09586, "t": 367.93219, "r": 203.61617, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 203.30286, "t": 367.93219, "r": 211.82489, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 211.49905, "t": 367.93219, "r": 218.16002, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 217.83418, "t": 367.93219, "r": 241.30737, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 375.76495, "r": 174.46577, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 174.15874, "t": 375.76495, "r": 214.4128, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 214.11829, "t": 375.76495, "r": 221.01110999999997, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 220.68527, "t": 375.76495, "r": 247.52341000000004, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "GLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 247.21637, "t": 375.76495, "r": 259.2287, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 383.59772, "r": 184.61703, "b": 389.2373, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH"}, {"label": "list_item", "id": 23, "page_no": 10, "cluster": {"id": 23, "label": "list_item", "bbox": {"l": 144.23313903808594, "t": 397.1644592285156, "r": 249.83562, "b": 412.3861083984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9541196823120117, "cells": [{"id": 58, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 399.28265, "r": 148.68732, "b": 403.86481000000003, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "GLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.9388, "t": 398.48019, "r": 165.36099, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 165.04141, "t": 398.48019, "r": 173.56345, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 173.23761, "t": 398.48019, "r": 185.95174, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 185.63216, "t": 398.48019, "r": 204.42448, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 204.11118, "t": 398.48019, "r": 235.29178, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 234.99099999999999, "t": 398.48019, "r": 249.83562, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 406.31296, "r": 173.41306, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 173.10602, "t": 406.31296, "r": 185.0118, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 184.69221, "t": 406.31296, "r": 206.3858, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 206.07249, "t": 406.31296, "r": 228.24231000000003, "b": 411.95255, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH"}, {"label": "list_item", "id": 24, "page_no": 10, "cluster": {"id": 24, "label": "list_item", "bbox": {"l": 144.35208129882812, "t": 420.17449951171875, "r": 234.25163000000003, "b": 434.66763, "coord_origin": "TOPLEFT"}, "confidence": 0.9440370798110962, "cells": [{"id": 69, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 421.99773999999996, "r": 148.68732, "b": 426.5799, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "GLYPH", "bbox": {"l": 151.9388, "t": 421.1952800000001, "r": 155.43533, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 154.73979, "t": 421.1952800000001, "r": 166.06282, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 165.74324, "t": 421.1952800000001, "r": 195.84607, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 195.53903, "t": 421.1952800000001, "r": 202.43185, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 202.10602, "t": 421.1952800000001, "r": 222.87220999999997, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 222.55890000000002, "t": 421.1952800000001, "r": 229.57077, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "GLYPH GLYPH", "bbox": {"l": 229.24492999999998, "t": 421.1952800000001, "r": 234.25163000000003, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.92627, "t": 429.02805, "r": 181.42754, "b": 434.66763, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 181.1205, "t": 429.02805, "r": 201.07835, "b": 434.66763, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 200.76505, "t": 429.02805, "r": 207.65787, "b": 434.66763, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 207.33203, "t": 429.02805, "r": 232.07098000000002, "b": 434.66763, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH"}, {"label": "picture", "id": 25, "page_no": 10, "cluster": {"id": 25, "label": "picture", "bbox": {"l": 64.16704559326172, "t": 603.50634765625, "r": 258.77435302734375, "b": 688.1282348632812, "coord_origin": "TOPLEFT"}, "confidence": 0.8925828337669373, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 26, "page_no": 10, "cluster": {"id": 26, "label": "picture", "bbox": {"l": 143.39866638183594, "t": 270.2610778808594, "r": 179.56256103515625, "b": 285.621337890625, "coord_origin": "TOPLEFT"}, "confidence": 0.7491760849952698, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 0, "page_no": 10, "cluster": {"id": 0, "label": "text", "bbox": {"l": 64.800003, "t": 74.48395000000005, "r": 235.8624, "b": 85.58398, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 0, "text": "DB2 for i Center of Excellence", "bbox": {"l": 64.800003, "t": 74.48395000000005, "r": 235.8624, "b": 85.58398, "coord_origin": "TOPLEFT"}}]}, "text": "DB2 for i Center of Excellence"}, {"label": "text", "id": 1, "page_no": 10, "cluster": {"id": 1, "label": "text", "bbox": {"l": 93.67039489746094, "t": 137.6368408203125, "r": 233.99973, "b": 155.33642999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.7431555986404419, "cells": [{"id": 1, "text": "Solution Brief", "bbox": {"l": 94.132698, "t": 148.63933999999995, "r": 139.54634, "b": 155.33642999999995, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "IBM Systems Lab Services and Training", "bbox": {"l": 94.134933, "t": 138.45012999999994, "r": 233.99973, "b": 145.22162000000003, "coord_origin": "TOPLEFT"}}]}, "text": "Solution Brief IBM Systems Lab Services and Training"}, {"label": "text", "id": 2, "page_no": 10, "cluster": {"id": 2, "label": "text", "bbox": {"l": 460.8193359375, "t": 138.33865356445312, "r": 506.26178, "b": 145.42181000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.7798991203308105, "cells": [{"id": 3, "text": "Power Services", "bbox": {"l": 461.08859000000007, "t": 138.40752999999995, "r": 506.26178, "b": 145.42181000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Power Services"}, {"label": "section_header", "id": 3, "page_no": 10, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 280.07391357421875, "t": 237.7128143310547, "r": 463.80942, "b": 276.62054, "coord_origin": "TOPLEFT"}, "confidence": 0.7587877511978149, "cells": [{"id": 4, "text": "DB2 for i", "bbox": {"l": 280.24011, "t": 239.34265000000005, "r": 354.57022, "b": 256.26153999999997, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Center of Excellence ", "bbox": {"l": 280.24011, "t": 259.70165999999995, "r": 463.80942, "b": 276.62054, "coord_origin": "TOPLEFT"}}]}, "text": "DB2 for i Center of Excellence"}, {"label": "text", "id": 4, "page_no": 10, "cluster": {"id": 4, "label": "text", "bbox": {"l": 279.51953125, "t": 277.1574401855469, "r": 483.7276916503906, "b": 288.63494873046875, "coord_origin": "TOPLEFT"}, "confidence": 0.7965629696846008, "cells": [{"id": 6, "text": "Expert help to achieve your business requirements", "bbox": {"l": 280.24011, "t": 277.59027000000003, "r": 483.29572, "b": 287.45959, "coord_origin": "TOPLEFT"}}]}, "text": "Expert help to achieve your business requirements"}, {"label": "section_header", "id": 5, "page_no": 10, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 279.468994140625, "t": 315.0786437988281, "r": 443.375732421875, "b": 324.89566, "coord_origin": "TOPLEFT"}, "confidence": 0.891353964805603, "cells": [{"id": 7, "text": "We build confident, satisfied clients", "bbox": {"l": 280.24011, "t": 315.88161999999994, "r": 443.28210000000007, "b": 324.89566, "coord_origin": "TOPLEFT"}}]}, "text": "We build confident, satisfied clients"}, {"label": "text", "id": 6, "page_no": 10, "cluster": {"id": 6, "label": "text", "bbox": {"l": 279.530517578125, "t": 327.26470947265625, "r": 488.15466, "b": 345.5077209472656, "coord_origin": "TOPLEFT"}, "confidence": 0.9560743570327759, "cells": [{"id": 8, "text": "No one else has the vast consulting experiences, skills sharing and ", "bbox": {"l": 280.24011, "t": 327.37595, "r": 488.15466, "b": 334.77994, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "renown service offerings to do what we can do for you.", "bbox": {"l": 280.24011, "t": 337.55551, "r": 452.34018, "b": 344.9595, "coord_origin": "TOPLEFT"}}]}, "text": "No one else has the vast consulting experiences, skills sharing and renown service offerings to do what we can do for you."}, {"label": "text", "id": 7, "page_no": 10, "cluster": {"id": 7, "label": "text", "bbox": {"l": 280.0453186035156, "t": 356.5709533691406, "r": 367.86023, "b": 364.73001, "coord_origin": "TOPLEFT"}, "confidence": 0.8260757923126221, "cells": [{"id": 10, "text": "Because no one else is IBM.", "bbox": {"l": 280.24011, "t": 357.3260200000001, "r": 367.86023, "b": 364.73001, "coord_origin": "TOPLEFT"}}]}, "text": "Because no one else is IBM."}, {"label": "text", "id": 8, "page_no": 10, "cluster": {"id": 8, "label": "text", "bbox": {"l": 279.70794677734375, "t": 376.26104736328125, "r": 500.32104000000004, "b": 425.3092041015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9764720797538757, "cells": [{"id": 11, "text": "With combined experiences and direct access to development groups, ", "bbox": {"l": 280.24011, "t": 377.09801999999996, "r": 500.32104000000004, "b": 384.50201, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "we\u2019re the experts in IBM DB2\u00ae for i. The DB2 for i Center of ", "bbox": {"l": 280.24011, "t": 387.27759, "r": 479.25497, "b": 394.68158, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Excellence (CoE) can help you achieve-perhaps reexamine and ", "bbox": {"l": 280.24011, "t": 397.45715, "r": 483.4667400000001, "b": 404.86115, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "exceed-your business requirements and gain more confidence and ", "bbox": {"l": 280.24011, "t": 407.63672, "r": 492.97656, "b": 415.04071000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "satisfaction in IBM product data management products and solutions.", "bbox": {"l": 280.24011, "t": 417.81628, "r": 498.87, "b": 425.22027999999995, "coord_origin": "TOPLEFT"}}]}, "text": "With combined experiences and direct access to development groups, we\u2019re the experts in IBM DB2\u00ae for i. The DB2 for i Center of Excellence (CoE) can help you achieve-perhaps reexamine and exceed-your business requirements and gain more confidence and satisfaction in IBM product data management products and solutions."}, {"label": "section_header", "id": 9, "page_no": 10, "cluster": {"id": 9, "label": "section_header", "bbox": {"l": 279.6336669921875, "t": 437.1227722167969, "r": 435.1236572265625, "b": 446.86807, "coord_origin": "TOPLEFT"}, "confidence": 0.8492124676704407, "cells": [{"id": 16, "text": "Who we are, some of what we do", "bbox": {"l": 280.24011, "t": 437.85403, "r": 434.83205999999996, "b": 446.86807, "coord_origin": "TOPLEFT"}}]}, "text": "Who we are, some of what we do"}, {"label": "text", "id": 10, "page_no": 10, "cluster": {"id": 10, "label": "text", "bbox": {"l": 279.4736328125, "t": 449.2602233886719, "r": 434.56316999999996, "b": 457.4661865234375, "coord_origin": "TOPLEFT"}, "confidence": 0.8440341353416443, "cells": [{"id": 17, "text": "Global CoE engagements cover topics including:", "bbox": {"l": 280.24011, "t": 449.34824000000003, "r": 434.56316999999996, "b": 456.75223, "coord_origin": "TOPLEFT"}}]}, "text": "Global CoE engagements cover topics including:"}, {"label": "list_item", "id": 11, "page_no": 10, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 279.74200439453125, "t": 468.3660583496094, "r": 402.1675109863281, "b": 476.5758972167969, "coord_origin": "TOPLEFT"}, "confidence": 0.9239599108695984, "cells": [{"id": 18, "text": "r ", "bbox": {"l": 280.24011, "t": 470.95236, "r": 284.0993, "b": 476.16074, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Database performance and scalability", "bbox": {"l": 287.28961, "t": 469.11826, "r": 401.56412, "b": 476.52225, "coord_origin": "TOPLEFT"}}]}, "text": "r Database performance and scalability"}, {"label": "list_item", "id": 12, "page_no": 10, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 279.7657165527344, "t": 478.64898681640625, "r": 424.99646, "b": 486.78228759765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9239722490310669, "cells": [{"id": 20, "text": "r ", "bbox": {"l": 280.24011, "t": 481.13507, "r": 284.0993, "b": 486.34344, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Advanced SQL knowledge and skills transfer", "bbox": {"l": 287.28961, "t": 479.30096, "r": 424.99646, "b": 486.70496, "coord_origin": "TOPLEFT"}}]}, "text": "r Advanced SQL knowledge and skills transfer"}, {"label": "list_item", "id": 13, "page_no": 10, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 279.9660339355469, "t": 489.48355, "r": 392.2996520996094, "b": 497.1912841796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9157897233963013, "cells": [{"id": 22, "text": "r ", "bbox": {"l": 280.24011, "t": 491.31766, "r": 284.0993, "b": 496.52603, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Business intelligence and analytics", "bbox": {"l": 287.28961, "t": 489.48355, "r": 392.15845, "b": 496.88754, "coord_origin": "TOPLEFT"}}]}, "text": "r Business intelligence and analytics"}, {"label": "list_item", "id": 14, "page_no": 10, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 279.9432067871094, "t": 499.5702819824219, "r": 339.94354, "b": 507.2607727050781, "coord_origin": "TOPLEFT"}, "confidence": 0.8733457922935486, "cells": [{"id": 24, "text": "r ", "bbox": {"l": 280.24011, "t": 501.50037, "r": 284.0993, "b": 506.70874, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "DB2 Web Query", "bbox": {"l": 287.28961, "t": 499.66626, "r": 339.94354, "b": 507.07025, "coord_origin": "TOPLEFT"}}]}, "text": "r DB2 Web Query"}, {"label": "list_item", "id": 15, "page_no": 10, "cluster": {"id": 15, "label": "list_item", "bbox": {"l": 279.68328857421875, "t": 509.4296875, "r": 504.21795654296875, "b": 517.4979858398438, "coord_origin": "TOPLEFT"}, "confidence": 0.924924373626709, "cells": [{"id": 26, "text": "r ", "bbox": {"l": 280.24011, "t": 511.68295, "r": 284.0993, "b": 516.8913299999999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Query/400 modernization for better reporting and analysis capabilities", "bbox": {"l": 287.28961, "t": 509.84885, "r": 504.19314999999995, "b": 517.25284, "coord_origin": "TOPLEFT"}}]}, "text": "r Query/400 modernization for better reporting and analysis capabilities"}, {"label": "list_item", "id": 16, "page_no": 10, "cluster": {"id": 16, "label": "list_item", "bbox": {"l": 279.66998291015625, "t": 520.03156, "r": 423.0022, "b": 528.0305786132812, "coord_origin": "TOPLEFT"}, "confidence": 0.9109311103820801, "cells": [{"id": 28, "text": "r ", "bbox": {"l": 280.24011, "t": 521.8656599999999, "r": 284.0993, "b": 527.07404, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Database modernization and re-engineering", "bbox": {"l": 287.28961, "t": 520.03156, "r": 423.0022, "b": 527.4355499999999, "coord_origin": "TOPLEFT"}}]}, "text": "r Database modernization and re-engineering"}, {"label": "list_item", "id": 17, "page_no": 10, "cluster": {"id": 17, "label": "list_item", "bbox": {"l": 279.7203674316406, "t": 529.9635620117188, "r": 400.07391357421875, "b": 537.8783569335938, "coord_origin": "TOPLEFT"}, "confidence": 0.8977466225624084, "cells": [{"id": 30, "text": "r ", "bbox": {"l": 280.24011, "t": 532.04825, "r": 284.0993, "b": 537.2566400000001, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Data-centric architecture and design", "bbox": {"l": 287.28961, "t": 530.21414, "r": 399.65173, "b": 537.61813, "coord_origin": "TOPLEFT"}}]}, "text": "r Data-centric architecture and design"}, {"label": "list_item", "id": 18, "page_no": 10, "cluster": {"id": 18, "label": "list_item", "bbox": {"l": 279.7815856933594, "t": 539.8663330078125, "r": 467.2125549316406, "b": 547.80074, "coord_origin": "TOPLEFT"}, "confidence": 0.9218330383300781, "cells": [{"id": 32, "text": "r ", "bbox": {"l": 280.24011, "t": 542.23083, "r": 284.0993, "b": 547.43924, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Extremely large database and overcoming limits to growth", "bbox": {"l": 287.28961, "t": 540.39674, "r": 466.77881, "b": 547.80074, "coord_origin": "TOPLEFT"}}]}, "text": "r Extremely large database and overcoming limits to growth"}, {"label": "list_item", "id": 19, "page_no": 10, "cluster": {"id": 19, "label": "list_item", "bbox": {"l": 279.89080810546875, "t": 550.0230102539062, "r": 382.3631591796875, "b": 557.98344, "coord_origin": "TOPLEFT"}, "confidence": 0.9075438976287842, "cells": [{"id": 34, "text": "r ", "bbox": {"l": 280.24011, "t": 552.41354, "r": 284.0993, "b": 557.62195, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "ISV education and enablement", "bbox": {"l": 287.28961, "t": 550.5794500000001, "r": 382.20956, "b": 557.98344, "coord_origin": "TOPLEFT"}}]}, "text": "r ISV education and enablement"}, {"label": "section_header", "id": 20, "page_no": 10, "cluster": {"id": 20, "label": "section_header", "bbox": {"l": 144.19781494140625, "t": 327.06201171875, "r": 188.74681, "b": 337.35504150390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9098501205444336, "cells": [{"id": 36, "text": "Highlights ", "bbox": {"l": 144.88921, "t": 327.46163999999993, "r": 188.74681, "b": 336.81406, "coord_origin": "TOPLEFT"}}]}, "text": "Highlights"}, {"label": "list_item", "id": 21, "page_no": 10, "cluster": {"id": 21, "label": "list_item", "bbox": {"l": 144.4553985595703, "t": 344.037109375, "r": 242.87389000000002, "b": 358.68942, "coord_origin": "TOPLEFT"}, "confidence": 0.9571698904037476, "cells": [{"id": 37, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 346.01953, "r": 148.68732, "b": 350.60168, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.9388, "t": 345.21707, "r": 177.25424, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 176.9472, "t": 345.21707, "r": 187.11098, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 186.7914, "t": 345.21707, "r": 222.95989999999998, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 222.65912, "t": 345.21707, "r": 229.55193999999997, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "GLYPHGLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 229.2261, "t": 345.21707, "r": 242.87389000000002, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 353.04984, "r": 178.77066, "b": 358.68942, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 178.46362, "t": 353.04984, "r": 207.16908, "b": 358.68942, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH"}, {"label": "list_item", "id": 22, "page_no": 10, "cluster": {"id": 22, "label": "list_item", "bbox": {"l": 144.40879821777344, "t": 366.6461486816406, "r": 259.2287, "b": 389.2373, "coord_origin": "TOPLEFT"}, "confidence": 0.9634581804275513, "cells": [{"id": 45, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 368.73465, "r": 148.68732, "b": 373.3168, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "GLYPHGLYPHGLYPH GLYPHGLYPH", "bbox": {"l": 151.9388, "t": 367.93219, "r": 166.05655, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 165.73697, "t": 367.93219, "r": 186.40289, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPH", "bbox": {"l": 186.09586, "t": 367.93219, "r": 203.61617, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 203.30286, "t": 367.93219, "r": 211.82489, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 211.49905, "t": 367.93219, "r": 218.16002, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 217.83418, "t": 367.93219, "r": 241.30737, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 375.76495, "r": 174.46577, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 174.15874, "t": 375.76495, "r": 214.4128, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 214.11829, "t": 375.76495, "r": 221.01110999999997, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 220.68527, "t": 375.76495, "r": 247.52341000000004, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "GLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 247.21637, "t": 375.76495, "r": 259.2287, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 383.59772, "r": 184.61703, "b": 389.2373, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH"}, {"label": "list_item", "id": 23, "page_no": 10, "cluster": {"id": 23, "label": "list_item", "bbox": {"l": 144.23313903808594, "t": 397.1644592285156, "r": 249.83562, "b": 412.3861083984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9541196823120117, "cells": [{"id": 58, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 399.28265, "r": 148.68732, "b": 403.86481000000003, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "GLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.9388, "t": 398.48019, "r": 165.36099, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 165.04141, "t": 398.48019, "r": 173.56345, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 173.23761, "t": 398.48019, "r": 185.95174, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 185.63216, "t": 398.48019, "r": 204.42448, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 204.11118, "t": 398.48019, "r": 235.29178, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 234.99099999999999, "t": 398.48019, "r": 249.83562, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 406.31296, "r": 173.41306, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 173.10602, "t": 406.31296, "r": 185.0118, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 184.69221, "t": 406.31296, "r": 206.3858, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 206.07249, "t": 406.31296, "r": 228.24231000000003, "b": 411.95255, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH"}, {"label": "list_item", "id": 24, "page_no": 10, "cluster": {"id": 24, "label": "list_item", "bbox": {"l": 144.35208129882812, "t": 420.17449951171875, "r": 234.25163000000003, "b": 434.66763, "coord_origin": "TOPLEFT"}, "confidence": 0.9440370798110962, "cells": [{"id": 69, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 421.99773999999996, "r": 148.68732, "b": 426.5799, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "GLYPH", "bbox": {"l": 151.9388, "t": 421.1952800000001, "r": 155.43533, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 154.73979, "t": 421.1952800000001, "r": 166.06282, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 165.74324, "t": 421.1952800000001, "r": 195.84607, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 195.53903, "t": 421.1952800000001, "r": 202.43185, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 202.10602, "t": 421.1952800000001, "r": 222.87220999999997, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 222.55890000000002, "t": 421.1952800000001, "r": 229.57077, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "GLYPH GLYPH", "bbox": {"l": 229.24492999999998, "t": 421.1952800000001, "r": 234.25163000000003, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.92627, "t": 429.02805, "r": 181.42754, "b": 434.66763, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 181.1205, "t": 429.02805, "r": 201.07835, "b": 434.66763, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 200.76505, "t": 429.02805, "r": 207.65787, "b": 434.66763, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 207.33203, "t": 429.02805, "r": 232.07098000000002, "b": 434.66763, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH"}, {"label": "picture", "id": 25, "page_no": 10, "cluster": {"id": 25, "label": "picture", "bbox": {"l": 64.16704559326172, "t": 603.50634765625, "r": 258.77435302734375, "b": 688.1282348632812, "coord_origin": "TOPLEFT"}, "confidence": 0.8925828337669373, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 26, "page_no": 10, "cluster": {"id": 26, "label": "picture", "bbox": {"l": 143.39866638183594, "t": 270.2610778808594, "r": 179.56256103515625, "b": 285.621337890625, "coord_origin": "TOPLEFT"}, "confidence": 0.7491760849952698, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": []}}, {"page_no": 11, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "T", "bbox": {"l": 215.64, "t": 288.25800000000004, "r": 221.13898999999998, "b": 296.58301, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Please Recycle", "bbox": {"l": 334.10629, "t": 364.33957, "r": 375.92691, "b": 369.9791599999999, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "\u00a9 Copyright IBM Corporation 2013 ", "bbox": {"l": 309.84811, "t": 209.41382, "r": 409.85666, "b": 215.64868, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "IBM Corporation ", "bbox": {"l": 309.84811, "t": 224.69079999999997, "r": 358.21817, "b": 230.92566, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Route 100 ", "bbox": {"l": 309.84811, "t": 232.32928000000004, "r": 338.69644, "b": 238.56415000000004, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Somers, NY 10589 ", "bbox": {"l": 309.84811, "t": 239.96776999999997, "r": 361.2178, "b": 246.20263999999997, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Produced in the United States of America ", "bbox": {"l": 309.84811, "t": 255.24474999999995, "r": 420.78116, "b": 261.47961, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "March 2013", "bbox": {"l": 309.84811, "t": 262.88324, "r": 341.69293, "b": 269.1181, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "IBM, the IBM logo, ibm.com, DB2 and Power Systems are trademarks of ", "bbox": {"l": 309.84811, "t": 276.16132000000005, "r": 503.2311700000001, "b": 282.39615, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "International Business Machines Corp., registered in many jurisdictions ", "bbox": {"l": 309.84811, "t": 283.79977, "r": 498.7258, "b": 290.03464, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "worldwide. Other product and service names might be trademarks of IBM ", "bbox": {"l": 309.84811, "t": 291.43825999999996, "r": 505.15802, "b": 297.67313, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "or other companies. A current list of IBM trademarks is available on the ", "bbox": {"l": 309.84811, "t": 299.07675, "r": 498.79224, "b": 305.31161, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "web at \u201cCopyright and trademark information\u201d at ", "bbox": {"l": 309.84811, "t": 306.71524, "r": 441.21148999999997, "b": 312.9501, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "www.ibm.com/legal/", "bbox": {"l": 441.18231, "t": 306.716, "r": 495.3586399999999, "b": 312.95087, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "copytrade.shtml", "bbox": {"l": 309.84903, "t": 314.35449, "r": 351.96103, "b": 320.58936000000006, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": ".", "bbox": {"l": 351.95099, "t": 314.35452, "r": 353.57394, "b": 320.58939, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "This document is current as of the initial date of publication and may be ", "bbox": {"l": 309.84839, "t": 327.6326, "r": 500.27194000000003, "b": 333.86746, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "changed by IBM at any time.", "bbox": {"l": 309.84839, "t": 335.27109, "r": 385.69885, "b": 341.5059499999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Not all offerings are available in every country in which IBM operates.", "bbox": {"l": 309.84839, "t": 348.54916, "r": 494.23822, "b": 354.78403, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "QLS12392-USEN-00", "bbox": {"l": 446.87051, "t": 667.52232, "r": 504.82294, "b": 673.75719, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "What you can expect", "bbox": {"l": 94.132698, "t": 158.87023999999997, "r": 193.95432, "b": 167.88428, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Depending on the engagement, our team of consultants offer:", "bbox": {"l": 94.132698, "t": 170.36443999999995, "r": 283.61542, "b": 177.76842999999997, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "r ", "bbox": {"l": 94.132698, "t": 191.96851000000004, "r": 97.991905, "b": 197.17693999999995, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Briefings, consulting and guidance on demand", "bbox": {"l": 101.1822, "t": 190.13440000000003, "r": 243.08588, "b": 197.53839000000005, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "r ", "bbox": {"l": 94.132698, "t": 202.15125, "r": 97.991905, "b": 207.35968000000003, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Illumination of the DB2 for i capabilities and leadership to ", "bbox": {"l": 101.1822, "t": 200.31714, "r": 282.72513, "b": 207.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "exploit them", "bbox": {"l": 101.1822, "t": 210.49670000000003, "r": 139.83179, "b": 217.90070000000003, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "r ", "bbox": {"l": 94.132698, "t": 222.51653999999996, "r": 97.991905, "b": 227.72497999999996, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Analysis and remediation of performance and scalability ", "bbox": {"l": 101.1822, "t": 220.68242999999995, "r": 274.40585, "b": 228.08642999999995, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "issues caused by inefficient database design and ", "bbox": {"l": 101.1822, "t": 230.86199999999997, "r": 247.29761000000002, "b": 238.26599, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "implementation", "bbox": {"l": 101.1822, "t": 241.04156, "r": 150.16017, "b": 248.44556, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "r ", "bbox": {"l": 94.132698, "t": 253.06444999999997, "r": 97.991905, "b": 258.27288999999996, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Configuration of systems, operating system and products to ", "bbox": {"l": 101.1822, "t": 251.23035000000004, "r": 285.81323, "b": 258.63433999999995, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "fully leverage database capabilities", "bbox": {"l": 101.1822, "t": 261.40990999999997, "r": 205.6864, "b": 268.8139, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Key client benefits", "bbox": {"l": 94.132698, "t": 283.59973, "r": 179.10327, "b": 292.61377, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Gain greater database and application performance within ", "bbox": {"l": 94.132698, "t": 295.09406, "r": 278.48099, "b": 302.49805, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "your current environment. Achieve greater productivity in ", "bbox": {"l": 94.132698, "t": 305.27362, "r": 278.63724, "b": 312.67761, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "the development and maintenance of database and ", "bbox": {"l": 94.132698, "t": 315.45319, "r": 254.08875, "b": 322.85718, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "applications using modern techniques. Architect and design ", "bbox": {"l": 94.132698, "t": 325.63275, "r": 282.49176, "b": 333.03674, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "data structures to accommodate and benefit from business ", "bbox": {"l": 94.132698, "t": 335.81232, "r": 278.16846, "b": 343.2163100000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "analytics (BA) tools and processes.", "bbox": {"l": 94.132698, "t": 345.99188, "r": 201.30829, "b": 353.39587, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "For more information", "bbox": {"l": 94.132698, "t": 366.03223, "r": 192.12144, "b": 375.04626, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Pricing depends on the scope of work. Learn more about ", "bbox": {"l": 94.132698, "t": 377.52646, "r": 274.90921, "b": 384.93045, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "the DB2 for i Center of Excellence and other related ", "bbox": {"l": 94.132698, "t": 387.70602, "r": 261.67877, "b": 395.11002, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "products and services. Contact ", "bbox": {"l": 94.132698, "t": 397.88559, "r": 191.79845, "b": 405.28958, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "stgls@us.ibm.com", "bbox": {"l": 191.79829, "t": 397.88544, "r": 248.03143000000003, "b": 405.2894299999999, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": " or visit:", "bbox": {"l": 248.03080999999997, "t": 397.88544, "r": 273.51691, "b": 405.2894299999999, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "ibm.com", "bbox": {"l": 94.132698, "t": 418.29114, "r": 123.09909000000002, "b": 424.70621, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 123.09909000000002, "t": 418.50967, "r": 216.45563, "b": 424.85425, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "text", "bbox": {"l": 93.23255920410156, "t": 288.25800000000004, "r": 282.49176, "b": 353.5527038574219, "coord_origin": "TOPLEFT"}, "confidence": 0.9835546612739563, "cells": [{"id": 0, "text": "T", "bbox": {"l": 215.64, "t": 288.25800000000004, "r": 221.13898999999998, "b": 296.58301, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Gain greater database and application performance within ", "bbox": {"l": 94.132698, "t": 295.09406, "r": 278.48099, "b": 302.49805, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "your current environment. Achieve greater productivity in ", "bbox": {"l": 94.132698, "t": 305.27362, "r": 278.63724, "b": 312.67761, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "the development and maintenance of database and ", "bbox": {"l": 94.132698, "t": 315.45319, "r": 254.08875, "b": 322.85718, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "applications using modern techniques. Architect and design ", "bbox": {"l": 94.132698, "t": 325.63275, "r": 282.49176, "b": 333.03674, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "data structures to accommodate and benefit from business ", "bbox": {"l": 94.132698, "t": 335.81232, "r": 278.16846, "b": 343.2163100000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "analytics (BA) tools and processes.", "bbox": {"l": 94.132698, "t": 345.99188, "r": 201.30829, "b": 353.39587, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "text", "bbox": {"l": 333.32159423828125, "t": 363.5240173339844, "r": 375.9523010253906, "b": 370.23272705078125, "coord_origin": "TOPLEFT"}, "confidence": 0.7944505214691162, "cells": [{"id": 1, "text": "Please Recycle", "bbox": {"l": 334.10629, "t": 364.33957, "r": 375.92691, "b": 369.9791599999999, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 309.5291748046875, "t": 208.71022033691406, "r": 409.85666, "b": 215.99896240234375, "coord_origin": "TOPLEFT"}, "confidence": 0.8416581153869629, "cells": [{"id": 2, "text": "\u00a9 Copyright IBM Corporation 2013 ", "bbox": {"l": 309.84811, "t": 209.41382, "r": 409.85666, "b": 215.64868, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 309.4497985839844, "t": 223.8454132080078, "r": 361.2178, "b": 246.20263999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.6710495352745056, "cells": [{"id": 3, "text": "IBM Corporation ", "bbox": {"l": 309.84811, "t": 224.69079999999997, "r": 358.21817, "b": 230.92566, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Route 100 ", "bbox": {"l": 309.84811, "t": 232.32928000000004, "r": 338.69644, "b": 238.56415000000004, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Somers, NY 10589 ", "bbox": {"l": 309.84811, "t": 239.96776999999997, "r": 361.2178, "b": 246.20263999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 309.4351501464844, "t": 254.4227752685547, "r": 420.78116, "b": 269.1181, "coord_origin": "TOPLEFT"}, "confidence": 0.7655534744262695, "cells": [{"id": 6, "text": "Produced in the United States of America ", "bbox": {"l": 309.84811, "t": 255.24474999999995, "r": 420.78116, "b": 261.47961, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "March 2013", "bbox": {"l": 309.84811, "t": 262.88324, "r": 341.69293, "b": 269.1181, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 309.1927795410156, "t": 275.1529541015625, "r": 505.15802, "b": 320.81719970703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9793416857719421, "cells": [{"id": 8, "text": "IBM, the IBM logo, ibm.com, DB2 and Power Systems are trademarks of ", "bbox": {"l": 309.84811, "t": 276.16132000000005, "r": 503.2311700000001, "b": 282.39615, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "International Business Machines Corp., registered in many jurisdictions ", "bbox": {"l": 309.84811, "t": 283.79977, "r": 498.7258, "b": 290.03464, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "worldwide. Other product and service names might be trademarks of IBM ", "bbox": {"l": 309.84811, "t": 291.43825999999996, "r": 505.15802, "b": 297.67313, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "or other companies. A current list of IBM trademarks is available on the ", "bbox": {"l": 309.84811, "t": 299.07675, "r": 498.79224, "b": 305.31161, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "web at \u201cCopyright and trademark information\u201d at ", "bbox": {"l": 309.84811, "t": 306.71524, "r": 441.21148999999997, "b": 312.9501, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "www.ibm.com/legal/", "bbox": {"l": 441.18231, "t": 306.716, "r": 495.3586399999999, "b": 312.95087, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "copytrade.shtml", "bbox": {"l": 309.84903, "t": 314.35449, "r": 351.96103, "b": 320.58936000000006, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": ".", "bbox": {"l": 351.95099, "t": 314.35452, "r": 353.57394, "b": 320.58939, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 309.322998046875, "t": 327.22723388671875, "r": 500.27194000000003, "b": 341.859130859375, "coord_origin": "TOPLEFT"}, "confidence": 0.9277064204216003, "cells": [{"id": 16, "text": "This document is current as of the initial date of publication and may be ", "bbox": {"l": 309.84839, "t": 327.6326, "r": 500.27194000000003, "b": 333.86746, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "changed by IBM at any time.", "bbox": {"l": 309.84839, "t": 335.27109, "r": 385.69885, "b": 341.5059499999999, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 309.2567138671875, "t": 347.97686767578125, "r": 494.2681884765625, "b": 355.2289733886719, "coord_origin": "TOPLEFT"}, "confidence": 0.9116950035095215, "cells": [{"id": 18, "text": "Not all offerings are available in every country in which IBM operates.", "bbox": {"l": 309.84839, "t": 348.54916, "r": 494.23822, "b": 354.78403, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 446.00567626953125, "t": 666.8178100585938, "r": 504.98651123046875, "b": 673.75719, "coord_origin": "TOPLEFT"}, "confidence": 0.7542392015457153, "cells": [{"id": 19, "text": "QLS12392-USEN-00", "bbox": {"l": 446.87051, "t": 667.52232, "r": 504.82294, "b": 673.75719, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "section_header", "bbox": {"l": 93.356689453125, "t": 158.2716064453125, "r": 193.95432, "b": 167.88428, "coord_origin": "TOPLEFT"}, "confidence": 0.9251776337623596, "cells": [{"id": 20, "text": "What you can expect", "bbox": {"l": 94.132698, "t": 158.87023999999997, "r": 193.95432, "b": 167.88428, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 93.58877563476562, "t": 170.04763793945312, "r": 283.61542, "b": 177.87142944335938, "coord_origin": "TOPLEFT"}, "confidence": 0.9153581857681274, "cells": [{"id": 21, "text": "Depending on the engagement, our team of consultants offer:", "bbox": {"l": 94.132698, "t": 170.36443999999995, "r": 283.61542, "b": 177.76842999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 93.6685562133789, "t": 189.83038330078125, "r": 243.1177520751953, "b": 198.0092010498047, "coord_origin": "TOPLEFT"}, "confidence": 0.9365891814231873, "cells": [{"id": 22, "text": "r ", "bbox": {"l": 94.132698, "t": 191.96851000000004, "r": 97.991905, "b": 197.17693999999995, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Briefings, consulting and guidance on demand", "bbox": {"l": 101.1822, "t": 190.13440000000003, "r": 243.08588, "b": 197.53839000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "list_item", "bbox": {"l": 93.72789001464844, "t": 199.86427307128906, "r": 282.72513, "b": 217.90070000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9610549211502075, "cells": [{"id": 24, "text": "r ", "bbox": {"l": 94.132698, "t": 202.15125, "r": 97.991905, "b": 207.35968000000003, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Illumination of the DB2 for i capabilities and leadership to ", "bbox": {"l": 101.1822, "t": 200.31714, "r": 282.72513, "b": 207.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "exploit them", "bbox": {"l": 101.1822, "t": 210.49670000000003, "r": 139.83179, "b": 217.90070000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "list_item", "bbox": {"l": 93.56942749023438, "t": 220.2848358154297, "r": 274.40585, "b": 248.44556, "coord_origin": "TOPLEFT"}, "confidence": 0.9730463027954102, "cells": [{"id": 27, "text": "r ", "bbox": {"l": 94.132698, "t": 222.51653999999996, "r": 97.991905, "b": 227.72497999999996, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Analysis and remediation of performance and scalability ", "bbox": {"l": 101.1822, "t": 220.68242999999995, "r": 274.40585, "b": 228.08642999999995, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "issues caused by inefficient database design and ", "bbox": {"l": 101.1822, "t": 230.86199999999997, "r": 247.29761000000002, "b": 238.26599, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "implementation", "bbox": {"l": 101.1822, "t": 241.04156, "r": 150.16017, "b": 248.44556, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "list_item", "bbox": {"l": 93.60421752929688, "t": 250.44761657714844, "r": 285.81323, "b": 269.4346618652344, "coord_origin": "TOPLEFT"}, "confidence": 0.9686199426651001, "cells": [{"id": 31, "text": "r ", "bbox": {"l": 94.132698, "t": 253.06444999999997, "r": 97.991905, "b": 258.27288999999996, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Configuration of systems, operating system and products to ", "bbox": {"l": 101.1822, "t": 251.23035000000004, "r": 285.81323, "b": 258.63433999999995, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "fully leverage database capabilities", "bbox": {"l": 101.1822, "t": 261.40990999999997, "r": 205.6864, "b": 268.8139, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "section_header", "bbox": {"l": 93.41441345214844, "t": 282.9095458984375, "r": 179.16822814941406, "b": 292.61377, "coord_origin": "TOPLEFT"}, "confidence": 0.9390802979469299, "cells": [{"id": 34, "text": "Key client benefits", "bbox": {"l": 94.132698, "t": 283.59973, "r": 179.10327, "b": 292.61377, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "section_header", "bbox": {"l": 93.40412902832031, "t": 365.70770263671875, "r": 192.24819946289062, "b": 375.04626, "coord_origin": "TOPLEFT"}, "confidence": 0.9252138733863831, "cells": [{"id": 41, "text": "For more information", "bbox": {"l": 94.132698, "t": 366.03223, "r": 192.12144, "b": 375.04626, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "text", "bbox": {"l": 93.551025390625, "t": 376.95263671875, "r": 274.90921, "b": 405.5931396484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9603047966957092, "cells": [{"id": 42, "text": "Pricing depends on the scope of work. Learn more about ", "bbox": {"l": 94.132698, "t": 377.52646, "r": 274.90921, "b": 384.93045, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "the DB2 for i Center of Excellence and other related ", "bbox": {"l": 94.132698, "t": 387.70602, "r": 261.67877, "b": 395.11002, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "products and services. Contact ", "bbox": {"l": 94.132698, "t": 397.88559, "r": 191.79845, "b": 405.28958, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "stgls@us.ibm.com", "bbox": {"l": 191.79829, "t": 397.88544, "r": 248.03143000000003, "b": 405.2894299999999, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": " or visit:", "bbox": {"l": 248.03080999999997, "t": 397.88544, "r": 273.51691, "b": 405.2894299999999, "coord_origin": "TOPLEFT"}}]}, {"id": 18, "label": "text", "bbox": {"l": 93.61650085449219, "t": 417.3977966308594, "r": 216.61273193359375, "b": 424.85425, "coord_origin": "TOPLEFT"}, "confidence": 0.8876497745513916, "cells": [{"id": 47, "text": "ibm.com", "bbox": {"l": 94.132698, "t": 418.29114, "r": 123.09909000000002, "b": 424.70621, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 123.09909000000002, "t": 418.50967, "r": 216.45563, "b": 424.85425, "coord_origin": "TOPLEFT"}}]}, {"id": 19, "label": "picture", "bbox": {"l": 309.1715087890625, "t": 157.70965576171875, "r": 372.07818603515625, "b": 183.2933349609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9477246999740601, "cells": []}, {"id": 20, "label": "picture", "bbox": {"l": 309.91729736328125, "t": 357.83355712890625, "r": 327.7751159667969, "b": 376.003662109375, "coord_origin": "TOPLEFT"}, "confidence": 0.907178521156311, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "text", "id": 0, "page_no": 11, "cluster": {"id": 0, "label": "text", "bbox": {"l": 93.23255920410156, "t": 288.25800000000004, "r": 282.49176, "b": 353.5527038574219, "coord_origin": "TOPLEFT"}, "confidence": 0.9835546612739563, "cells": [{"id": 0, "text": "T", "bbox": {"l": 215.64, "t": 288.25800000000004, "r": 221.13898999999998, "b": 296.58301, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Gain greater database and application performance within ", "bbox": {"l": 94.132698, "t": 295.09406, "r": 278.48099, "b": 302.49805, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "your current environment. Achieve greater productivity in ", "bbox": {"l": 94.132698, "t": 305.27362, "r": 278.63724, "b": 312.67761, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "the development and maintenance of database and ", "bbox": {"l": 94.132698, "t": 315.45319, "r": 254.08875, "b": 322.85718, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "applications using modern techniques. Architect and design ", "bbox": {"l": 94.132698, "t": 325.63275, "r": 282.49176, "b": 333.03674, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "data structures to accommodate and benefit from business ", "bbox": {"l": 94.132698, "t": 335.81232, "r": 278.16846, "b": 343.2163100000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "analytics (BA) tools and processes.", "bbox": {"l": 94.132698, "t": 345.99188, "r": 201.30829, "b": 353.39587, "coord_origin": "TOPLEFT"}}]}, "text": "T Gain greater database and application performance within your current environment. Achieve greater productivity in the development and maintenance of database and applications using modern techniques. Architect and design data structures to accommodate and benefit from business analytics (BA) tools and processes."}, {"label": "text", "id": 1, "page_no": 11, "cluster": {"id": 1, "label": "text", "bbox": {"l": 333.32159423828125, "t": 363.5240173339844, "r": 375.9523010253906, "b": 370.23272705078125, "coord_origin": "TOPLEFT"}, "confidence": 0.7944505214691162, "cells": [{"id": 1, "text": "Please Recycle", "bbox": {"l": 334.10629, "t": 364.33957, "r": 375.92691, "b": 369.9791599999999, "coord_origin": "TOPLEFT"}}]}, "text": "Please Recycle"}, {"label": "text", "id": 2, "page_no": 11, "cluster": {"id": 2, "label": "text", "bbox": {"l": 309.5291748046875, "t": 208.71022033691406, "r": 409.85666, "b": 215.99896240234375, "coord_origin": "TOPLEFT"}, "confidence": 0.8416581153869629, "cells": [{"id": 2, "text": "\u00a9 Copyright IBM Corporation 2013 ", "bbox": {"l": 309.84811, "t": 209.41382, "r": 409.85666, "b": 215.64868, "coord_origin": "TOPLEFT"}}]}, "text": "\u00a9 Copyright IBM Corporation 2013"}, {"label": "text", "id": 3, "page_no": 11, "cluster": {"id": 3, "label": "text", "bbox": {"l": 309.4497985839844, "t": 223.8454132080078, "r": 361.2178, "b": 246.20263999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.6710495352745056, "cells": [{"id": 3, "text": "IBM Corporation ", "bbox": {"l": 309.84811, "t": 224.69079999999997, "r": 358.21817, "b": 230.92566, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Route 100 ", "bbox": {"l": 309.84811, "t": 232.32928000000004, "r": 338.69644, "b": 238.56415000000004, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Somers, NY 10589 ", "bbox": {"l": 309.84811, "t": 239.96776999999997, "r": 361.2178, "b": 246.20263999999997, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Corporation Route 100 Somers, NY 10589"}, {"label": "text", "id": 4, "page_no": 11, "cluster": {"id": 4, "label": "text", "bbox": {"l": 309.4351501464844, "t": 254.4227752685547, "r": 420.78116, "b": 269.1181, "coord_origin": "TOPLEFT"}, "confidence": 0.7655534744262695, "cells": [{"id": 6, "text": "Produced in the United States of America ", "bbox": {"l": 309.84811, "t": 255.24474999999995, "r": 420.78116, "b": 261.47961, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "March 2013", "bbox": {"l": 309.84811, "t": 262.88324, "r": 341.69293, "b": 269.1181, "coord_origin": "TOPLEFT"}}]}, "text": "Produced in the United States of America March 2013"}, {"label": "text", "id": 5, "page_no": 11, "cluster": {"id": 5, "label": "text", "bbox": {"l": 309.1927795410156, "t": 275.1529541015625, "r": 505.15802, "b": 320.81719970703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9793416857719421, "cells": [{"id": 8, "text": "IBM, the IBM logo, ibm.com, DB2 and Power Systems are trademarks of ", "bbox": {"l": 309.84811, "t": 276.16132000000005, "r": 503.2311700000001, "b": 282.39615, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "International Business Machines Corp., registered in many jurisdictions ", "bbox": {"l": 309.84811, "t": 283.79977, "r": 498.7258, "b": 290.03464, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "worldwide. Other product and service names might be trademarks of IBM ", "bbox": {"l": 309.84811, "t": 291.43825999999996, "r": 505.15802, "b": 297.67313, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "or other companies. A current list of IBM trademarks is available on the ", "bbox": {"l": 309.84811, "t": 299.07675, "r": 498.79224, "b": 305.31161, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "web at \u201cCopyright and trademark information\u201d at ", "bbox": {"l": 309.84811, "t": 306.71524, "r": 441.21148999999997, "b": 312.9501, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "www.ibm.com/legal/", "bbox": {"l": 441.18231, "t": 306.716, "r": 495.3586399999999, "b": 312.95087, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "copytrade.shtml", "bbox": {"l": 309.84903, "t": 314.35449, "r": 351.96103, "b": 320.58936000000006, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": ".", "bbox": {"l": 351.95099, "t": 314.35452, "r": 353.57394, "b": 320.58939, "coord_origin": "TOPLEFT"}}]}, "text": "IBM, the IBM logo, ibm.com, DB2 and Power Systems are trademarks of International Business Machines Corp., registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the web at \u201cCopyright and trademark information\u201d at www.ibm.com/legal/ copytrade.shtml ."}, {"label": "text", "id": 6, "page_no": 11, "cluster": {"id": 6, "label": "text", "bbox": {"l": 309.322998046875, "t": 327.22723388671875, "r": 500.27194000000003, "b": 341.859130859375, "coord_origin": "TOPLEFT"}, "confidence": 0.9277064204216003, "cells": [{"id": 16, "text": "This document is current as of the initial date of publication and may be ", "bbox": {"l": 309.84839, "t": 327.6326, "r": 500.27194000000003, "b": 333.86746, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "changed by IBM at any time.", "bbox": {"l": 309.84839, "t": 335.27109, "r": 385.69885, "b": 341.5059499999999, "coord_origin": "TOPLEFT"}}]}, "text": "This document is current as of the initial date of publication and may be changed by IBM at any time."}, {"label": "text", "id": 7, "page_no": 11, "cluster": {"id": 7, "label": "text", "bbox": {"l": 309.2567138671875, "t": 347.97686767578125, "r": 494.2681884765625, "b": 355.2289733886719, "coord_origin": "TOPLEFT"}, "confidence": 0.9116950035095215, "cells": [{"id": 18, "text": "Not all offerings are available in every country in which IBM operates.", "bbox": {"l": 309.84839, "t": 348.54916, "r": 494.23822, "b": 354.78403, "coord_origin": "TOPLEFT"}}]}, "text": "Not all offerings are available in every country in which IBM operates."}, {"label": "text", "id": 8, "page_no": 11, "cluster": {"id": 8, "label": "text", "bbox": {"l": 446.00567626953125, "t": 666.8178100585938, "r": 504.98651123046875, "b": 673.75719, "coord_origin": "TOPLEFT"}, "confidence": 0.7542392015457153, "cells": [{"id": 19, "text": "QLS12392-USEN-00", "bbox": {"l": 446.87051, "t": 667.52232, "r": 504.82294, "b": 673.75719, "coord_origin": "TOPLEFT"}}]}, "text": "QLS12392-USEN-00"}, {"label": "section_header", "id": 9, "page_no": 11, "cluster": {"id": 9, "label": "section_header", "bbox": {"l": 93.356689453125, "t": 158.2716064453125, "r": 193.95432, "b": 167.88428, "coord_origin": "TOPLEFT"}, "confidence": 0.9251776337623596, "cells": [{"id": 20, "text": "What you can expect", "bbox": {"l": 94.132698, "t": 158.87023999999997, "r": 193.95432, "b": 167.88428, "coord_origin": "TOPLEFT"}}]}, "text": "What you can expect"}, {"label": "text", "id": 10, "page_no": 11, "cluster": {"id": 10, "label": "text", "bbox": {"l": 93.58877563476562, "t": 170.04763793945312, "r": 283.61542, "b": 177.87142944335938, "coord_origin": "TOPLEFT"}, "confidence": 0.9153581857681274, "cells": [{"id": 21, "text": "Depending on the engagement, our team of consultants offer:", "bbox": {"l": 94.132698, "t": 170.36443999999995, "r": 283.61542, "b": 177.76842999999997, "coord_origin": "TOPLEFT"}}]}, "text": "Depending on the engagement, our team of consultants offer:"}, {"label": "list_item", "id": 11, "page_no": 11, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 93.6685562133789, "t": 189.83038330078125, "r": 243.1177520751953, "b": 198.0092010498047, "coord_origin": "TOPLEFT"}, "confidence": 0.9365891814231873, "cells": [{"id": 22, "text": "r ", "bbox": {"l": 94.132698, "t": 191.96851000000004, "r": 97.991905, "b": 197.17693999999995, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Briefings, consulting and guidance on demand", "bbox": {"l": 101.1822, "t": 190.13440000000003, "r": 243.08588, "b": 197.53839000000005, "coord_origin": "TOPLEFT"}}]}, "text": "r Briefings, consulting and guidance on demand"}, {"label": "list_item", "id": 12, "page_no": 11, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 93.72789001464844, "t": 199.86427307128906, "r": 282.72513, "b": 217.90070000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9610549211502075, "cells": [{"id": 24, "text": "r ", "bbox": {"l": 94.132698, "t": 202.15125, "r": 97.991905, "b": 207.35968000000003, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Illumination of the DB2 for i capabilities and leadership to ", "bbox": {"l": 101.1822, "t": 200.31714, "r": 282.72513, "b": 207.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "exploit them", "bbox": {"l": 101.1822, "t": 210.49670000000003, "r": 139.83179, "b": 217.90070000000003, "coord_origin": "TOPLEFT"}}]}, "text": "r Illumination of the DB2 for i capabilities and leadership to exploit them"}, {"label": "list_item", "id": 13, "page_no": 11, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 93.56942749023438, "t": 220.2848358154297, "r": 274.40585, "b": 248.44556, "coord_origin": "TOPLEFT"}, "confidence": 0.9730463027954102, "cells": [{"id": 27, "text": "r ", "bbox": {"l": 94.132698, "t": 222.51653999999996, "r": 97.991905, "b": 227.72497999999996, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Analysis and remediation of performance and scalability ", "bbox": {"l": 101.1822, "t": 220.68242999999995, "r": 274.40585, "b": 228.08642999999995, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "issues caused by inefficient database design and ", "bbox": {"l": 101.1822, "t": 230.86199999999997, "r": 247.29761000000002, "b": 238.26599, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "implementation", "bbox": {"l": 101.1822, "t": 241.04156, "r": 150.16017, "b": 248.44556, "coord_origin": "TOPLEFT"}}]}, "text": "r Analysis and remediation of performance and scalability issues caused by inefficient database design and implementation"}, {"label": "list_item", "id": 14, "page_no": 11, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 93.60421752929688, "t": 250.44761657714844, "r": 285.81323, "b": 269.4346618652344, "coord_origin": "TOPLEFT"}, "confidence": 0.9686199426651001, "cells": [{"id": 31, "text": "r ", "bbox": {"l": 94.132698, "t": 253.06444999999997, "r": 97.991905, "b": 258.27288999999996, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Configuration of systems, operating system and products to ", "bbox": {"l": 101.1822, "t": 251.23035000000004, "r": 285.81323, "b": 258.63433999999995, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "fully leverage database capabilities", "bbox": {"l": 101.1822, "t": 261.40990999999997, "r": 205.6864, "b": 268.8139, "coord_origin": "TOPLEFT"}}]}, "text": "r Configuration of systems, operating system and products to fully leverage database capabilities"}, {"label": "section_header", "id": 15, "page_no": 11, "cluster": {"id": 15, "label": "section_header", "bbox": {"l": 93.41441345214844, "t": 282.9095458984375, "r": 179.16822814941406, "b": 292.61377, "coord_origin": "TOPLEFT"}, "confidence": 0.9390802979469299, "cells": [{"id": 34, "text": "Key client benefits", "bbox": {"l": 94.132698, "t": 283.59973, "r": 179.10327, "b": 292.61377, "coord_origin": "TOPLEFT"}}]}, "text": "Key client benefits"}, {"label": "section_header", "id": 16, "page_no": 11, "cluster": {"id": 16, "label": "section_header", "bbox": {"l": 93.40412902832031, "t": 365.70770263671875, "r": 192.24819946289062, "b": 375.04626, "coord_origin": "TOPLEFT"}, "confidence": 0.9252138733863831, "cells": [{"id": 41, "text": "For more information", "bbox": {"l": 94.132698, "t": 366.03223, "r": 192.12144, "b": 375.04626, "coord_origin": "TOPLEFT"}}]}, "text": "For more information"}, {"label": "text", "id": 17, "page_no": 11, "cluster": {"id": 17, "label": "text", "bbox": {"l": 93.551025390625, "t": 376.95263671875, "r": 274.90921, "b": 405.5931396484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9603047966957092, "cells": [{"id": 42, "text": "Pricing depends on the scope of work. Learn more about ", "bbox": {"l": 94.132698, "t": 377.52646, "r": 274.90921, "b": 384.93045, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "the DB2 for i Center of Excellence and other related ", "bbox": {"l": 94.132698, "t": 387.70602, "r": 261.67877, "b": 395.11002, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "products and services. Contact ", "bbox": {"l": 94.132698, "t": 397.88559, "r": 191.79845, "b": 405.28958, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "stgls@us.ibm.com", "bbox": {"l": 191.79829, "t": 397.88544, "r": 248.03143000000003, "b": 405.2894299999999, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": " or visit:", "bbox": {"l": 248.03080999999997, "t": 397.88544, "r": 273.51691, "b": 405.2894299999999, "coord_origin": "TOPLEFT"}}]}, "text": "Pricing depends on the scope of work. Learn more about the DB2 for i Center of Excellence and other related products and services. Contact stgls@us.ibm.com or visit:"}, {"label": "text", "id": 18, "page_no": 11, "cluster": {"id": 18, "label": "text", "bbox": {"l": 93.61650085449219, "t": 417.3977966308594, "r": 216.61273193359375, "b": 424.85425, "coord_origin": "TOPLEFT"}, "confidence": 0.8876497745513916, "cells": [{"id": 47, "text": "ibm.com", "bbox": {"l": 94.132698, "t": 418.29114, "r": 123.09909000000002, "b": 424.70621, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 123.09909000000002, "t": 418.50967, "r": 216.45563, "b": 424.85425, "coord_origin": "TOPLEFT"}}]}, "text": "ibm.com GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH"}, {"label": "picture", "id": 19, "page_no": 11, "cluster": {"id": 19, "label": "picture", "bbox": {"l": 309.1715087890625, "t": 157.70965576171875, "r": 372.07818603515625, "b": 183.2933349609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9477246999740601, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 20, "page_no": 11, "cluster": {"id": 20, "label": "picture", "bbox": {"l": 309.91729736328125, "t": 357.83355712890625, "r": 327.7751159667969, "b": 376.003662109375, "coord_origin": "TOPLEFT"}, "confidence": 0.907178521156311, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 0, "page_no": 11, "cluster": {"id": 0, "label": "text", "bbox": {"l": 93.23255920410156, "t": 288.25800000000004, "r": 282.49176, "b": 353.5527038574219, "coord_origin": "TOPLEFT"}, "confidence": 0.9835546612739563, "cells": [{"id": 0, "text": "T", "bbox": {"l": 215.64, "t": 288.25800000000004, "r": 221.13898999999998, "b": 296.58301, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Gain greater database and application performance within ", "bbox": {"l": 94.132698, "t": 295.09406, "r": 278.48099, "b": 302.49805, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "your current environment. Achieve greater productivity in ", "bbox": {"l": 94.132698, "t": 305.27362, "r": 278.63724, "b": 312.67761, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "the development and maintenance of database and ", "bbox": {"l": 94.132698, "t": 315.45319, "r": 254.08875, "b": 322.85718, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "applications using modern techniques. Architect and design ", "bbox": {"l": 94.132698, "t": 325.63275, "r": 282.49176, "b": 333.03674, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "data structures to accommodate and benefit from business ", "bbox": {"l": 94.132698, "t": 335.81232, "r": 278.16846, "b": 343.2163100000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "analytics (BA) tools and processes.", "bbox": {"l": 94.132698, "t": 345.99188, "r": 201.30829, "b": 353.39587, "coord_origin": "TOPLEFT"}}]}, "text": "T Gain greater database and application performance within your current environment. Achieve greater productivity in the development and maintenance of database and applications using modern techniques. Architect and design data structures to accommodate and benefit from business analytics (BA) tools and processes."}, {"label": "text", "id": 1, "page_no": 11, "cluster": {"id": 1, "label": "text", "bbox": {"l": 333.32159423828125, "t": 363.5240173339844, "r": 375.9523010253906, "b": 370.23272705078125, "coord_origin": "TOPLEFT"}, "confidence": 0.7944505214691162, "cells": [{"id": 1, "text": "Please Recycle", "bbox": {"l": 334.10629, "t": 364.33957, "r": 375.92691, "b": 369.9791599999999, "coord_origin": "TOPLEFT"}}]}, "text": "Please Recycle"}, {"label": "text", "id": 2, "page_no": 11, "cluster": {"id": 2, "label": "text", "bbox": {"l": 309.5291748046875, "t": 208.71022033691406, "r": 409.85666, "b": 215.99896240234375, "coord_origin": "TOPLEFT"}, "confidence": 0.8416581153869629, "cells": [{"id": 2, "text": "\u00a9 Copyright IBM Corporation 2013 ", "bbox": {"l": 309.84811, "t": 209.41382, "r": 409.85666, "b": 215.64868, "coord_origin": "TOPLEFT"}}]}, "text": "\u00a9 Copyright IBM Corporation 2013"}, {"label": "text", "id": 3, "page_no": 11, "cluster": {"id": 3, "label": "text", "bbox": {"l": 309.4497985839844, "t": 223.8454132080078, "r": 361.2178, "b": 246.20263999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.6710495352745056, "cells": [{"id": 3, "text": "IBM Corporation ", "bbox": {"l": 309.84811, "t": 224.69079999999997, "r": 358.21817, "b": 230.92566, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Route 100 ", "bbox": {"l": 309.84811, "t": 232.32928000000004, "r": 338.69644, "b": 238.56415000000004, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Somers, NY 10589 ", "bbox": {"l": 309.84811, "t": 239.96776999999997, "r": 361.2178, "b": 246.20263999999997, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Corporation Route 100 Somers, NY 10589"}, {"label": "text", "id": 4, "page_no": 11, "cluster": {"id": 4, "label": "text", "bbox": {"l": 309.4351501464844, "t": 254.4227752685547, "r": 420.78116, "b": 269.1181, "coord_origin": "TOPLEFT"}, "confidence": 0.7655534744262695, "cells": [{"id": 6, "text": "Produced in the United States of America ", "bbox": {"l": 309.84811, "t": 255.24474999999995, "r": 420.78116, "b": 261.47961, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "March 2013", "bbox": {"l": 309.84811, "t": 262.88324, "r": 341.69293, "b": 269.1181, "coord_origin": "TOPLEFT"}}]}, "text": "Produced in the United States of America March 2013"}, {"label": "text", "id": 5, "page_no": 11, "cluster": {"id": 5, "label": "text", "bbox": {"l": 309.1927795410156, "t": 275.1529541015625, "r": 505.15802, "b": 320.81719970703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9793416857719421, "cells": [{"id": 8, "text": "IBM, the IBM logo, ibm.com, DB2 and Power Systems are trademarks of ", "bbox": {"l": 309.84811, "t": 276.16132000000005, "r": 503.2311700000001, "b": 282.39615, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "International Business Machines Corp., registered in many jurisdictions ", "bbox": {"l": 309.84811, "t": 283.79977, "r": 498.7258, "b": 290.03464, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "worldwide. Other product and service names might be trademarks of IBM ", "bbox": {"l": 309.84811, "t": 291.43825999999996, "r": 505.15802, "b": 297.67313, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "or other companies. A current list of IBM trademarks is available on the ", "bbox": {"l": 309.84811, "t": 299.07675, "r": 498.79224, "b": 305.31161, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "web at \u201cCopyright and trademark information\u201d at ", "bbox": {"l": 309.84811, "t": 306.71524, "r": 441.21148999999997, "b": 312.9501, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "www.ibm.com/legal/", "bbox": {"l": 441.18231, "t": 306.716, "r": 495.3586399999999, "b": 312.95087, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "copytrade.shtml", "bbox": {"l": 309.84903, "t": 314.35449, "r": 351.96103, "b": 320.58936000000006, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": ".", "bbox": {"l": 351.95099, "t": 314.35452, "r": 353.57394, "b": 320.58939, "coord_origin": "TOPLEFT"}}]}, "text": "IBM, the IBM logo, ibm.com, DB2 and Power Systems are trademarks of International Business Machines Corp., registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the web at \u201cCopyright and trademark information\u201d at www.ibm.com/legal/ copytrade.shtml ."}, {"label": "text", "id": 6, "page_no": 11, "cluster": {"id": 6, "label": "text", "bbox": {"l": 309.322998046875, "t": 327.22723388671875, "r": 500.27194000000003, "b": 341.859130859375, "coord_origin": "TOPLEFT"}, "confidence": 0.9277064204216003, "cells": [{"id": 16, "text": "This document is current as of the initial date of publication and may be ", "bbox": {"l": 309.84839, "t": 327.6326, "r": 500.27194000000003, "b": 333.86746, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "changed by IBM at any time.", "bbox": {"l": 309.84839, "t": 335.27109, "r": 385.69885, "b": 341.5059499999999, "coord_origin": "TOPLEFT"}}]}, "text": "This document is current as of the initial date of publication and may be changed by IBM at any time."}, {"label": "text", "id": 7, "page_no": 11, "cluster": {"id": 7, "label": "text", "bbox": {"l": 309.2567138671875, "t": 347.97686767578125, "r": 494.2681884765625, "b": 355.2289733886719, "coord_origin": "TOPLEFT"}, "confidence": 0.9116950035095215, "cells": [{"id": 18, "text": "Not all offerings are available in every country in which IBM operates.", "bbox": {"l": 309.84839, "t": 348.54916, "r": 494.23822, "b": 354.78403, "coord_origin": "TOPLEFT"}}]}, "text": "Not all offerings are available in every country in which IBM operates."}, {"label": "text", "id": 8, "page_no": 11, "cluster": {"id": 8, "label": "text", "bbox": {"l": 446.00567626953125, "t": 666.8178100585938, "r": 504.98651123046875, "b": 673.75719, "coord_origin": "TOPLEFT"}, "confidence": 0.7542392015457153, "cells": [{"id": 19, "text": "QLS12392-USEN-00", "bbox": {"l": 446.87051, "t": 667.52232, "r": 504.82294, "b": 673.75719, "coord_origin": "TOPLEFT"}}]}, "text": "QLS12392-USEN-00"}, {"label": "section_header", "id": 9, "page_no": 11, "cluster": {"id": 9, "label": "section_header", "bbox": {"l": 93.356689453125, "t": 158.2716064453125, "r": 193.95432, "b": 167.88428, "coord_origin": "TOPLEFT"}, "confidence": 0.9251776337623596, "cells": [{"id": 20, "text": "What you can expect", "bbox": {"l": 94.132698, "t": 158.87023999999997, "r": 193.95432, "b": 167.88428, "coord_origin": "TOPLEFT"}}]}, "text": "What you can expect"}, {"label": "text", "id": 10, "page_no": 11, "cluster": {"id": 10, "label": "text", "bbox": {"l": 93.58877563476562, "t": 170.04763793945312, "r": 283.61542, "b": 177.87142944335938, "coord_origin": "TOPLEFT"}, "confidence": 0.9153581857681274, "cells": [{"id": 21, "text": "Depending on the engagement, our team of consultants offer:", "bbox": {"l": 94.132698, "t": 170.36443999999995, "r": 283.61542, "b": 177.76842999999997, "coord_origin": "TOPLEFT"}}]}, "text": "Depending on the engagement, our team of consultants offer:"}, {"label": "list_item", "id": 11, "page_no": 11, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 93.6685562133789, "t": 189.83038330078125, "r": 243.1177520751953, "b": 198.0092010498047, "coord_origin": "TOPLEFT"}, "confidence": 0.9365891814231873, "cells": [{"id": 22, "text": "r ", "bbox": {"l": 94.132698, "t": 191.96851000000004, "r": 97.991905, "b": 197.17693999999995, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Briefings, consulting and guidance on demand", "bbox": {"l": 101.1822, "t": 190.13440000000003, "r": 243.08588, "b": 197.53839000000005, "coord_origin": "TOPLEFT"}}]}, "text": "r Briefings, consulting and guidance on demand"}, {"label": "list_item", "id": 12, "page_no": 11, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 93.72789001464844, "t": 199.86427307128906, "r": 282.72513, "b": 217.90070000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9610549211502075, "cells": [{"id": 24, "text": "r ", "bbox": {"l": 94.132698, "t": 202.15125, "r": 97.991905, "b": 207.35968000000003, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Illumination of the DB2 for i capabilities and leadership to ", "bbox": {"l": 101.1822, "t": 200.31714, "r": 282.72513, "b": 207.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "exploit them", "bbox": {"l": 101.1822, "t": 210.49670000000003, "r": 139.83179, "b": 217.90070000000003, "coord_origin": "TOPLEFT"}}]}, "text": "r Illumination of the DB2 for i capabilities and leadership to exploit them"}, {"label": "list_item", "id": 13, "page_no": 11, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 93.56942749023438, "t": 220.2848358154297, "r": 274.40585, "b": 248.44556, "coord_origin": "TOPLEFT"}, "confidence": 0.9730463027954102, "cells": [{"id": 27, "text": "r ", "bbox": {"l": 94.132698, "t": 222.51653999999996, "r": 97.991905, "b": 227.72497999999996, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Analysis and remediation of performance and scalability ", "bbox": {"l": 101.1822, "t": 220.68242999999995, "r": 274.40585, "b": 228.08642999999995, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "issues caused by inefficient database design and ", "bbox": {"l": 101.1822, "t": 230.86199999999997, "r": 247.29761000000002, "b": 238.26599, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "implementation", "bbox": {"l": 101.1822, "t": 241.04156, "r": 150.16017, "b": 248.44556, "coord_origin": "TOPLEFT"}}]}, "text": "r Analysis and remediation of performance and scalability issues caused by inefficient database design and implementation"}, {"label": "list_item", "id": 14, "page_no": 11, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 93.60421752929688, "t": 250.44761657714844, "r": 285.81323, "b": 269.4346618652344, "coord_origin": "TOPLEFT"}, "confidence": 0.9686199426651001, "cells": [{"id": 31, "text": "r ", "bbox": {"l": 94.132698, "t": 253.06444999999997, "r": 97.991905, "b": 258.27288999999996, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Configuration of systems, operating system and products to ", "bbox": {"l": 101.1822, "t": 251.23035000000004, "r": 285.81323, "b": 258.63433999999995, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "fully leverage database capabilities", "bbox": {"l": 101.1822, "t": 261.40990999999997, "r": 205.6864, "b": 268.8139, "coord_origin": "TOPLEFT"}}]}, "text": "r Configuration of systems, operating system and products to fully leverage database capabilities"}, {"label": "section_header", "id": 15, "page_no": 11, "cluster": {"id": 15, "label": "section_header", "bbox": {"l": 93.41441345214844, "t": 282.9095458984375, "r": 179.16822814941406, "b": 292.61377, "coord_origin": "TOPLEFT"}, "confidence": 0.9390802979469299, "cells": [{"id": 34, "text": "Key client benefits", "bbox": {"l": 94.132698, "t": 283.59973, "r": 179.10327, "b": 292.61377, "coord_origin": "TOPLEFT"}}]}, "text": "Key client benefits"}, {"label": "section_header", "id": 16, "page_no": 11, "cluster": {"id": 16, "label": "section_header", "bbox": {"l": 93.40412902832031, "t": 365.70770263671875, "r": 192.24819946289062, "b": 375.04626, "coord_origin": "TOPLEFT"}, "confidence": 0.9252138733863831, "cells": [{"id": 41, "text": "For more information", "bbox": {"l": 94.132698, "t": 366.03223, "r": 192.12144, "b": 375.04626, "coord_origin": "TOPLEFT"}}]}, "text": "For more information"}, {"label": "text", "id": 17, "page_no": 11, "cluster": {"id": 17, "label": "text", "bbox": {"l": 93.551025390625, "t": 376.95263671875, "r": 274.90921, "b": 405.5931396484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9603047966957092, "cells": [{"id": 42, "text": "Pricing depends on the scope of work. Learn more about ", "bbox": {"l": 94.132698, "t": 377.52646, "r": 274.90921, "b": 384.93045, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "the DB2 for i Center of Excellence and other related ", "bbox": {"l": 94.132698, "t": 387.70602, "r": 261.67877, "b": 395.11002, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "products and services. Contact ", "bbox": {"l": 94.132698, "t": 397.88559, "r": 191.79845, "b": 405.28958, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "stgls@us.ibm.com", "bbox": {"l": 191.79829, "t": 397.88544, "r": 248.03143000000003, "b": 405.2894299999999, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": " or visit:", "bbox": {"l": 248.03080999999997, "t": 397.88544, "r": 273.51691, "b": 405.2894299999999, "coord_origin": "TOPLEFT"}}]}, "text": "Pricing depends on the scope of work. Learn more about the DB2 for i Center of Excellence and other related products and services. Contact stgls@us.ibm.com or visit:"}, {"label": "text", "id": 18, "page_no": 11, "cluster": {"id": 18, "label": "text", "bbox": {"l": 93.61650085449219, "t": 417.3977966308594, "r": 216.61273193359375, "b": 424.85425, "coord_origin": "TOPLEFT"}, "confidence": 0.8876497745513916, "cells": [{"id": 47, "text": "ibm.com", "bbox": {"l": 94.132698, "t": 418.29114, "r": 123.09909000000002, "b": 424.70621, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 123.09909000000002, "t": 418.50967, "r": 216.45563, "b": 424.85425, "coord_origin": "TOPLEFT"}}]}, "text": "ibm.com GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH"}, {"label": "picture", "id": 19, "page_no": 11, "cluster": {"id": 19, "label": "picture", "bbox": {"l": 309.1715087890625, "t": 157.70965576171875, "r": 372.07818603515625, "b": 183.2933349609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9477246999740601, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 20, "page_no": 11, "cluster": {"id": 20, "label": "picture", "bbox": {"l": 309.91729736328125, "t": 357.83355712890625, "r": 327.7751159667969, "b": 376.003662109375, "coord_origin": "TOPLEFT"}, "confidence": 0.907178521156311, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": []}}, {"page_no": 12, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "xi", "bbox": {"l": 538.85999, "t": 754.848721, "r": 547.25031, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Preface", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 151.46161, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "This IBMfi Redpaper\u2122 publication provides information about the IBM i 7.2 feature of IBM ", "bbox": {"l": 136.8, "t": 132.64862000000005, "r": 542.91888, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "DB2fi for i Row and Column Access Control (RCAC). It offers a broad description of the ", "bbox": {"l": 136.79984, "t": 144.64844000000005, "r": 526.65509, "b": 153.86145, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "function and advantages of controlling access to data in a comprehensive and transparent ", "bbox": {"l": 136.79984, "t": 156.64824999999996, "r": 536.82135, "b": 165.86127, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "way. This publication helps you understand the capabilities of RCAC and provides examples ", "bbox": {"l": 136.79987, "t": 168.64806999999996, "r": 544.67975, "b": 177.86108000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "of defining, creating, and implementing the row permissions and column masks in a relational ", "bbox": {"l": 136.79987, "t": 180.64788999999996, "r": 547.30823, "b": 189.86090000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "database environment.", "bbox": {"l": 136.79987, "t": 192.64770999999996, "r": 238.32117, "b": 201.86072000000001, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "This paper is intended for database engineers, data-centric application developers, and ", "bbox": {"l": 136.79987, "t": 214.60748, "r": 524.18518, "b": 223.82050000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "security officers who want to design and implement RCAC as a part of their data control and ", "bbox": {"l": 136.79987, "t": 226.6073, "r": 546.4657, "b": 235.82030999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "governance policy. A solid background in IBM i object level security, DB2 for i relational ", "bbox": {"l": 136.79987, "t": 238.60712, "r": 521.25488, "b": 247.82012999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "database concepts, and SQL is assumed.", "bbox": {"l": 136.79987, "t": 250.60693000000003, "r": 321.69434, "b": 259.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Authors", "bbox": {"l": 64.800003, "t": 288.3006, "r": 125.36661, "b": 303.0636, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "This paper was produced by the IBM DB2 for i Center of Excellence team in partnership with ", "bbox": {"l": 136.8, "t": 320.62871999999993, "r": 547.23669, "b": 329.8417099999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "the International Technical Support Organization (ITSO), Rochester, Minnesota US.", "bbox": {"l": 136.8, "t": 332.62854, "r": 505.05518, "b": 341.84152, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Jim Bainbridge", "bbox": {"l": 263.39957, "t": 375.64877, "r": 335.7251, "b": 384.86176, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": " is a senior DB2 consultant on the DB2 for i ", "bbox": {"l": 335.69922, "t": 375.64877, "r": 529.34259, "b": 384.86176, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Center of Excellence team in the IBM Lab Services and ", "bbox": {"l": 263.3996, "t": 387.64859, "r": 511.50717, "b": 396.86157, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Training organization. His primary role is training and ", "bbox": {"l": 263.3996, "t": 399.64841, "r": 499.077, "b": 408.86139, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "implementation services for IBM DB2 Web Query for i and ", "bbox": {"l": 263.3996, "t": 411.64822, "r": 522.51996, "b": 420.86121, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "business analytics. Jim began his career with IBM 30 years ago ", "bbox": {"l": 263.3996, "t": 423.64804, "r": 541.25079, "b": 432.86102, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "in the IBM Rochester Development Lab, where he developed ", "bbox": {"l": 263.3996, "t": 435.64786, "r": 534.71411, "b": 444.86084, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "cooperative processing products that paired IBM PCs with IBM ", "bbox": {"l": 263.3996, "t": 447.64767, "r": 541.22375, "b": 456.86066, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "S/36 and AS/.400 systems. In the years since, Jim has held ", "bbox": {"l": 263.3996, "t": 459.64749, "r": 528.91016, "b": 468.86047, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "numerous technical roles, including independent software ", "bbox": {"l": 263.3996, "t": 471.64731, "r": 520.24207, "b": 480.86029, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "vendors technical support on a broad range of IBM ", "bbox": {"l": 263.3996, "t": 483.64713, "r": 490.6967200000001, "b": 492.86011, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "technologies and products, and supporting customers in the ", "bbox": {"l": 263.3996, "t": 495.64694, "r": 530.95514, "b": 504.85992, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IBM Executive Briefing Center and IBM Project Office.", "bbox": {"l": 263.3996, "t": 507.64676, "r": 501.62973, "b": 516.85974, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Hernando Bedoya", "bbox": {"l": 263.3996, "t": 527.62653, "r": 348.38229, "b": 536.83952, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": " is a Senior IT Specialist at STG Lab ", "bbox": {"l": 348.41916, "t": 527.62653, "r": 512.3429, "b": 536.83952, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Services and Training in Rochester, Minnesota. He writes ", "bbox": {"l": 263.3996, "t": 539.62633, "r": 519.26306, "b": 548.83932, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "extensively and teaches IBM classes worldwide in all areas of ", "bbox": {"l": 263.3996, "t": 551.62613, "r": 538.40308, "b": 560.8391300000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "DB2 for i. Before joining STG Lab Services, he worked in the ", "bbox": {"l": 263.3996, "t": 563.62593, "r": 533.95715, "b": 572.83893, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "ITSO for nine years writing multiple IBM Redbooksfi ", "bbox": {"l": 263.3996, "t": 575.62573, "r": 496.94464, "b": 584.8387299999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "publications. He also worked for IBM Colombia as an IBM ", "bbox": {"l": 263.3996, "t": 587.62553, "r": 520.38562, "b": 596.83853, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "AS/400fi IT Specialist doing presales support for the Andean ", "bbox": {"l": 263.3996, "t": 599.62534, "r": 535.99078, "b": 608.83833, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "countries. He has 28 years of experience in the computing field ", "bbox": {"l": 263.3996, "t": 611.62514, "r": 541.27374, "b": 620.83813, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "and has taught database classes in Colombian universities. He ", "bbox": {"l": 263.3996, "t": 623.62494, "r": 541.26465, "b": 632.83794, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "holds a Master\u2019s degree in Computer Science from EAFIT, ", "bbox": {"l": 263.3996, "t": 635.62474, "r": 523.22211, "b": 644.8377399999999, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Colombia. His areas of expertise are database technology, ", "bbox": {"l": 263.3996, "t": 647.62454, "r": 524.77386, "b": 656.83754, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "performance, and data warehousing. Hernando can be ", "bbox": {"l": 263.3996, "t": 659.62434, "r": 508.27124, "b": 668.83735, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "contacted at ", "bbox": {"l": 263.3996, "t": 671.62415, "r": 320.63568, "b": 680.83716, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "hbedoya@us.ibm.com", "bbox": {"l": 320.63971, "t": 671.77356, "r": 410.57852, "b": 680.54832, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": ".", "bbox": {"l": 410.5795, "t": 671.62415, "r": 413.34839, "b": 680.83716, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.724002838134766, "t": 754.7037963867188, "r": 257.24335, "b": 764.1082153320312, "coord_origin": "TOPLEFT"}, "confidence": 0.9469243884086609, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 538.058349609375, "t": 754.3980102539062, "r": 547.25031, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9040942788124084, "cells": [{"id": 1, "text": "xi", "bbox": {"l": 538.85999, "t": 754.848721, "r": 547.25031, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.800003, "t": 73.10313415527344, "r": 151.46161, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9174708724021912, "cells": [{"id": 2, "text": "Preface", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 151.46161, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.75503540039062, "t": 131.914306640625, "r": 547.30823, "b": 201.86072000000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9869155883789062, "cells": [{"id": 3, "text": "This IBMfi Redpaper\u2122 publication provides information about the IBM i 7.2 feature of IBM ", "bbox": {"l": 136.8, "t": 132.64862000000005, "r": 542.91888, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "DB2fi for i Row and Column Access Control (RCAC). It offers a broad description of the ", "bbox": {"l": 136.79984, "t": 144.64844000000005, "r": 526.65509, "b": 153.86145, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "function and advantages of controlling access to data in a comprehensive and transparent ", "bbox": {"l": 136.79984, "t": 156.64824999999996, "r": 536.82135, "b": 165.86127, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "way. This publication helps you understand the capabilities of RCAC and provides examples ", "bbox": {"l": 136.79987, "t": 168.64806999999996, "r": 544.67975, "b": 177.86108000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "of defining, creating, and implementing the row permissions and column masks in a relational ", "bbox": {"l": 136.79987, "t": 180.64788999999996, "r": 547.30823, "b": 189.86090000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "database environment.", "bbox": {"l": 136.79987, "t": 192.64770999999996, "r": 238.32117, "b": 201.86072000000001, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.94647216796875, "t": 214.0637664794922, "r": 546.4657, "b": 260.1856384277344, "coord_origin": "TOPLEFT"}, "confidence": 0.987220287322998, "cells": [{"id": 9, "text": "This paper is intended for database engineers, data-centric application developers, and ", "bbox": {"l": 136.79987, "t": 214.60748, "r": 524.18518, "b": 223.82050000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "security officers who want to design and implement RCAC as a part of their data control and ", "bbox": {"l": 136.79987, "t": 226.6073, "r": 546.4657, "b": 235.82030999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "governance policy. A solid background in IBM i object level security, DB2 for i relational ", "bbox": {"l": 136.79987, "t": 238.60712, "r": 521.25488, "b": 247.82012999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "database concepts, and SQL is assumed.", "bbox": {"l": 136.79987, "t": 250.60693000000003, "r": 321.69434, "b": 259.81994999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "section_header", "bbox": {"l": 64.22550201416016, "t": 287.1894226074219, "r": 125.36661, "b": 303.0636, "coord_origin": "TOPLEFT"}, "confidence": 0.9255504608154297, "cells": [{"id": 13, "text": "Authors", "bbox": {"l": 64.800003, "t": 288.3006, "r": 125.36661, "b": 303.0636, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 135.71319580078125, "t": 319.8118591308594, "r": 547.23669, "b": 342.1517028808594, "coord_origin": "TOPLEFT"}, "confidence": 0.9713318347930908, "cells": [{"id": 14, "text": "This paper was produced by the IBM DB2 for i Center of Excellence team in partnership with ", "bbox": {"l": 136.8, "t": 320.62871999999993, "r": 547.23669, "b": 329.8417099999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "the International Technical Support Organization (ITSO), Rochester, Minnesota US.", "bbox": {"l": 136.8, "t": 332.62854, "r": 505.05518, "b": 341.84152, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 262.6522521972656, "t": 374.687255859375, "r": 541.25079, "b": 516.9314575195312, "coord_origin": "TOPLEFT"}, "confidence": 0.9842760562896729, "cells": [{"id": 16, "text": "Jim Bainbridge", "bbox": {"l": 263.39957, "t": 375.64877, "r": 335.7251, "b": 384.86176, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": " is a senior DB2 consultant on the DB2 for i ", "bbox": {"l": 335.69922, "t": 375.64877, "r": 529.34259, "b": 384.86176, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Center of Excellence team in the IBM Lab Services and ", "bbox": {"l": 263.3996, "t": 387.64859, "r": 511.50717, "b": 396.86157, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Training organization. His primary role is training and ", "bbox": {"l": 263.3996, "t": 399.64841, "r": 499.077, "b": 408.86139, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "implementation services for IBM DB2 Web Query for i and ", "bbox": {"l": 263.3996, "t": 411.64822, "r": 522.51996, "b": 420.86121, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "business analytics. Jim began his career with IBM 30 years ago ", "bbox": {"l": 263.3996, "t": 423.64804, "r": 541.25079, "b": 432.86102, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "in the IBM Rochester Development Lab, where he developed ", "bbox": {"l": 263.3996, "t": 435.64786, "r": 534.71411, "b": 444.86084, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "cooperative processing products that paired IBM PCs with IBM ", "bbox": {"l": 263.3996, "t": 447.64767, "r": 541.22375, "b": 456.86066, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "S/36 and AS/.400 systems. In the years since, Jim has held ", "bbox": {"l": 263.3996, "t": 459.64749, "r": 528.91016, "b": 468.86047, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "numerous technical roles, including independent software ", "bbox": {"l": 263.3996, "t": 471.64731, "r": 520.24207, "b": 480.86029, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "vendors technical support on a broad range of IBM ", "bbox": {"l": 263.3996, "t": 483.64713, "r": 490.6967200000001, "b": 492.86011, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "technologies and products, and supporting customers in the ", "bbox": {"l": 263.3996, "t": 495.64694, "r": 530.95514, "b": 504.85992, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IBM Executive Briefing Center and IBM Project Office.", "bbox": {"l": 263.3996, "t": 507.64676, "r": 501.62973, "b": 516.85974, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 262.4736328125, "t": 526.50830078125, "r": 541.27374, "b": 680.83716, "coord_origin": "TOPLEFT"}, "confidence": 0.9823779463768005, "cells": [{"id": 29, "text": "Hernando Bedoya", "bbox": {"l": 263.3996, "t": 527.62653, "r": 348.38229, "b": 536.83952, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": " is a Senior IT Specialist at STG Lab ", "bbox": {"l": 348.41916, "t": 527.62653, "r": 512.3429, "b": 536.83952, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Services and Training in Rochester, Minnesota. He writes ", "bbox": {"l": 263.3996, "t": 539.62633, "r": 519.26306, "b": 548.83932, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "extensively and teaches IBM classes worldwide in all areas of ", "bbox": {"l": 263.3996, "t": 551.62613, "r": 538.40308, "b": 560.8391300000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "DB2 for i. Before joining STG Lab Services, he worked in the ", "bbox": {"l": 263.3996, "t": 563.62593, "r": 533.95715, "b": 572.83893, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "ITSO for nine years writing multiple IBM Redbooksfi ", "bbox": {"l": 263.3996, "t": 575.62573, "r": 496.94464, "b": 584.8387299999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "publications. He also worked for IBM Colombia as an IBM ", "bbox": {"l": 263.3996, "t": 587.62553, "r": 520.38562, "b": 596.83853, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "AS/400fi IT Specialist doing presales support for the Andean ", "bbox": {"l": 263.3996, "t": 599.62534, "r": 535.99078, "b": 608.83833, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "countries. He has 28 years of experience in the computing field ", "bbox": {"l": 263.3996, "t": 611.62514, "r": 541.27374, "b": 620.83813, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "and has taught database classes in Colombian universities. He ", "bbox": {"l": 263.3996, "t": 623.62494, "r": 541.26465, "b": 632.83794, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "holds a Master\u2019s degree in Computer Science from EAFIT, ", "bbox": {"l": 263.3996, "t": 635.62474, "r": 523.22211, "b": 644.8377399999999, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Colombia. His areas of expertise are database technology, ", "bbox": {"l": 263.3996, "t": 647.62454, "r": 524.77386, "b": 656.83754, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "performance, and data warehousing. Hernando can be ", "bbox": {"l": 263.3996, "t": 659.62434, "r": 508.27124, "b": 668.83735, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "contacted at ", "bbox": {"l": 263.3996, "t": 671.62415, "r": 320.63568, "b": 680.83716, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "hbedoya@us.ibm.com", "bbox": {"l": 320.63971, "t": 671.77356, "r": 410.57852, "b": 680.54832, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": ".", "bbox": {"l": 410.5795, "t": 671.62415, "r": 413.34839, "b": 680.83716, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "picture", "bbox": {"l": 145.41448974609375, "t": 527.2447509765625, "r": 252.08840942382812, "b": 635.383056640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9871657490730286, "cells": []}, {"id": 10, "label": "picture", "bbox": {"l": 142.52883911132812, "t": 375.0449523925781, "r": 251.47850036621094, "b": 503.20648193359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9862572550773621, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 12, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.724002838134766, "t": 754.7037963867188, "r": 257.24335, "b": 764.1082153320312, "coord_origin": "TOPLEFT"}, "confidence": 0.9469243884086609, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 12, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 538.058349609375, "t": 754.3980102539062, "r": 547.25031, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9040942788124084, "cells": [{"id": 1, "text": "xi", "bbox": {"l": 538.85999, "t": 754.848721, "r": 547.25031, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "xi"}, {"label": "section_header", "id": 2, "page_no": 12, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.800003, "t": 73.10313415527344, "r": 151.46161, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9174708724021912, "cells": [{"id": 2, "text": "Preface", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 151.46161, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Preface"}, {"label": "text", "id": 3, "page_no": 12, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.75503540039062, "t": 131.914306640625, "r": 547.30823, "b": 201.86072000000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9869155883789062, "cells": [{"id": 3, "text": "This IBMfi Redpaper\u2122 publication provides information about the IBM i 7.2 feature of IBM ", "bbox": {"l": 136.8, "t": 132.64862000000005, "r": 542.91888, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "DB2fi for i Row and Column Access Control (RCAC). It offers a broad description of the ", "bbox": {"l": 136.79984, "t": 144.64844000000005, "r": 526.65509, "b": 153.86145, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "function and advantages of controlling access to data in a comprehensive and transparent ", "bbox": {"l": 136.79984, "t": 156.64824999999996, "r": 536.82135, "b": 165.86127, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "way. This publication helps you understand the capabilities of RCAC and provides examples ", "bbox": {"l": 136.79987, "t": 168.64806999999996, "r": 544.67975, "b": 177.86108000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "of defining, creating, and implementing the row permissions and column masks in a relational ", "bbox": {"l": 136.79987, "t": 180.64788999999996, "r": 547.30823, "b": 189.86090000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "database environment.", "bbox": {"l": 136.79987, "t": 192.64770999999996, "r": 238.32117, "b": 201.86072000000001, "coord_origin": "TOPLEFT"}}]}, "text": "This IBMfi Redpaper\u2122 publication provides information about the IBM i 7.2 feature of IBM DB2fi for i Row and Column Access Control (RCAC). It offers a broad description of the function and advantages of controlling access to data in a comprehensive and transparent way. This publication helps you understand the capabilities of RCAC and provides examples of defining, creating, and implementing the row permissions and column masks in a relational database environment."}, {"label": "text", "id": 4, "page_no": 12, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.94647216796875, "t": 214.0637664794922, "r": 546.4657, "b": 260.1856384277344, "coord_origin": "TOPLEFT"}, "confidence": 0.987220287322998, "cells": [{"id": 9, "text": "This paper is intended for database engineers, data-centric application developers, and ", "bbox": {"l": 136.79987, "t": 214.60748, "r": 524.18518, "b": 223.82050000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "security officers who want to design and implement RCAC as a part of their data control and ", "bbox": {"l": 136.79987, "t": 226.6073, "r": 546.4657, "b": 235.82030999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "governance policy. A solid background in IBM i object level security, DB2 for i relational ", "bbox": {"l": 136.79987, "t": 238.60712, "r": 521.25488, "b": 247.82012999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "database concepts, and SQL is assumed.", "bbox": {"l": 136.79987, "t": 250.60693000000003, "r": 321.69434, "b": 259.81994999999995, "coord_origin": "TOPLEFT"}}]}, "text": "This paper is intended for database engineers, data-centric application developers, and security officers who want to design and implement RCAC as a part of their data control and governance policy. A solid background in IBM i object level security, DB2 for i relational database concepts, and SQL is assumed."}, {"label": "section_header", "id": 5, "page_no": 12, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 64.22550201416016, "t": 287.1894226074219, "r": 125.36661, "b": 303.0636, "coord_origin": "TOPLEFT"}, "confidence": 0.9255504608154297, "cells": [{"id": 13, "text": "Authors", "bbox": {"l": 64.800003, "t": 288.3006, "r": 125.36661, "b": 303.0636, "coord_origin": "TOPLEFT"}}]}, "text": "Authors"}, {"label": "text", "id": 6, "page_no": 12, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.71319580078125, "t": 319.8118591308594, "r": 547.23669, "b": 342.1517028808594, "coord_origin": "TOPLEFT"}, "confidence": 0.9713318347930908, "cells": [{"id": 14, "text": "This paper was produced by the IBM DB2 for i Center of Excellence team in partnership with ", "bbox": {"l": 136.8, "t": 320.62871999999993, "r": 547.23669, "b": 329.8417099999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "the International Technical Support Organization (ITSO), Rochester, Minnesota US.", "bbox": {"l": 136.8, "t": 332.62854, "r": 505.05518, "b": 341.84152, "coord_origin": "TOPLEFT"}}]}, "text": "This paper was produced by the IBM DB2 for i Center of Excellence team in partnership with the International Technical Support Organization (ITSO), Rochester, Minnesota US."}, {"label": "text", "id": 7, "page_no": 12, "cluster": {"id": 7, "label": "text", "bbox": {"l": 262.6522521972656, "t": 374.687255859375, "r": 541.25079, "b": 516.9314575195312, "coord_origin": "TOPLEFT"}, "confidence": 0.9842760562896729, "cells": [{"id": 16, "text": "Jim Bainbridge", "bbox": {"l": 263.39957, "t": 375.64877, "r": 335.7251, "b": 384.86176, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": " is a senior DB2 consultant on the DB2 for i ", "bbox": {"l": 335.69922, "t": 375.64877, "r": 529.34259, "b": 384.86176, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Center of Excellence team in the IBM Lab Services and ", "bbox": {"l": 263.3996, "t": 387.64859, "r": 511.50717, "b": 396.86157, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Training organization. His primary role is training and ", "bbox": {"l": 263.3996, "t": 399.64841, "r": 499.077, "b": 408.86139, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "implementation services for IBM DB2 Web Query for i and ", "bbox": {"l": 263.3996, "t": 411.64822, "r": 522.51996, "b": 420.86121, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "business analytics. Jim began his career with IBM 30 years ago ", "bbox": {"l": 263.3996, "t": 423.64804, "r": 541.25079, "b": 432.86102, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "in the IBM Rochester Development Lab, where he developed ", "bbox": {"l": 263.3996, "t": 435.64786, "r": 534.71411, "b": 444.86084, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "cooperative processing products that paired IBM PCs with IBM ", "bbox": {"l": 263.3996, "t": 447.64767, "r": 541.22375, "b": 456.86066, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "S/36 and AS/.400 systems. In the years since, Jim has held ", "bbox": {"l": 263.3996, "t": 459.64749, "r": 528.91016, "b": 468.86047, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "numerous technical roles, including independent software ", "bbox": {"l": 263.3996, "t": 471.64731, "r": 520.24207, "b": 480.86029, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "vendors technical support on a broad range of IBM ", "bbox": {"l": 263.3996, "t": 483.64713, "r": 490.6967200000001, "b": 492.86011, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "technologies and products, and supporting customers in the ", "bbox": {"l": 263.3996, "t": 495.64694, "r": 530.95514, "b": 504.85992, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IBM Executive Briefing Center and IBM Project Office.", "bbox": {"l": 263.3996, "t": 507.64676, "r": 501.62973, "b": 516.85974, "coord_origin": "TOPLEFT"}}]}, "text": "Jim Bainbridge is a senior DB2 consultant on the DB2 for i Center of Excellence team in the IBM Lab Services and Training organization. His primary role is training and implementation services for IBM DB2 Web Query for i and business analytics. Jim began his career with IBM 30 years ago in the IBM Rochester Development Lab, where he developed cooperative processing products that paired IBM PCs with IBM S/36 and AS/.400 systems. In the years since, Jim has held numerous technical roles, including independent software vendors technical support on a broad range of IBM technologies and products, and supporting customers in the IBM Executive Briefing Center and IBM Project Office."}, {"label": "text", "id": 8, "page_no": 12, "cluster": {"id": 8, "label": "text", "bbox": {"l": 262.4736328125, "t": 526.50830078125, "r": 541.27374, "b": 680.83716, "coord_origin": "TOPLEFT"}, "confidence": 0.9823779463768005, "cells": [{"id": 29, "text": "Hernando Bedoya", "bbox": {"l": 263.3996, "t": 527.62653, "r": 348.38229, "b": 536.83952, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": " is a Senior IT Specialist at STG Lab ", "bbox": {"l": 348.41916, "t": 527.62653, "r": 512.3429, "b": 536.83952, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Services and Training in Rochester, Minnesota. He writes ", "bbox": {"l": 263.3996, "t": 539.62633, "r": 519.26306, "b": 548.83932, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "extensively and teaches IBM classes worldwide in all areas of ", "bbox": {"l": 263.3996, "t": 551.62613, "r": 538.40308, "b": 560.8391300000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "DB2 for i. Before joining STG Lab Services, he worked in the ", "bbox": {"l": 263.3996, "t": 563.62593, "r": 533.95715, "b": 572.83893, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "ITSO for nine years writing multiple IBM Redbooksfi ", "bbox": {"l": 263.3996, "t": 575.62573, "r": 496.94464, "b": 584.8387299999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "publications. He also worked for IBM Colombia as an IBM ", "bbox": {"l": 263.3996, "t": 587.62553, "r": 520.38562, "b": 596.83853, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "AS/400fi IT Specialist doing presales support for the Andean ", "bbox": {"l": 263.3996, "t": 599.62534, "r": 535.99078, "b": 608.83833, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "countries. He has 28 years of experience in the computing field ", "bbox": {"l": 263.3996, "t": 611.62514, "r": 541.27374, "b": 620.83813, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "and has taught database classes in Colombian universities. He ", "bbox": {"l": 263.3996, "t": 623.62494, "r": 541.26465, "b": 632.83794, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "holds a Master\u2019s degree in Computer Science from EAFIT, ", "bbox": {"l": 263.3996, "t": 635.62474, "r": 523.22211, "b": 644.8377399999999, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Colombia. His areas of expertise are database technology, ", "bbox": {"l": 263.3996, "t": 647.62454, "r": 524.77386, "b": 656.83754, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "performance, and data warehousing. Hernando can be ", "bbox": {"l": 263.3996, "t": 659.62434, "r": 508.27124, "b": 668.83735, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "contacted at ", "bbox": {"l": 263.3996, "t": 671.62415, "r": 320.63568, "b": 680.83716, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "hbedoya@us.ibm.com", "bbox": {"l": 320.63971, "t": 671.77356, "r": 410.57852, "b": 680.54832, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": ".", "bbox": {"l": 410.5795, "t": 671.62415, "r": 413.34839, "b": 680.83716, "coord_origin": "TOPLEFT"}}]}, "text": "Hernando Bedoya is a Senior IT Specialist at STG Lab Services and Training in Rochester, Minnesota. He writes extensively and teaches IBM classes worldwide in all areas of DB2 for i. Before joining STG Lab Services, he worked in the ITSO for nine years writing multiple IBM Redbooksfi publications. He also worked for IBM Colombia as an IBM AS/400fi IT Specialist doing presales support for the Andean countries. He has 28 years of experience in the computing field and has taught database classes in Colombian universities. He holds a Master\u2019s degree in Computer Science from EAFIT, Colombia. His areas of expertise are database technology, performance, and data warehousing. Hernando can be contacted at hbedoya@us.ibm.com ."}, {"label": "picture", "id": 9, "page_no": 12, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 145.41448974609375, "t": 527.2447509765625, "r": 252.08840942382812, "b": 635.383056640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9871657490730286, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 10, "page_no": 12, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 142.52883911132812, "t": 375.0449523925781, "r": 251.47850036621094, "b": 503.20648193359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9862572550773621, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "section_header", "id": 2, "page_no": 12, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.800003, "t": 73.10313415527344, "r": 151.46161, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9174708724021912, "cells": [{"id": 2, "text": "Preface", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 151.46161, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Preface"}, {"label": "text", "id": 3, "page_no": 12, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.75503540039062, "t": 131.914306640625, "r": 547.30823, "b": 201.86072000000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9869155883789062, "cells": [{"id": 3, "text": "This IBMfi Redpaper\u2122 publication provides information about the IBM i 7.2 feature of IBM ", "bbox": {"l": 136.8, "t": 132.64862000000005, "r": 542.91888, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "DB2fi for i Row and Column Access Control (RCAC). It offers a broad description of the ", "bbox": {"l": 136.79984, "t": 144.64844000000005, "r": 526.65509, "b": 153.86145, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "function and advantages of controlling access to data in a comprehensive and transparent ", "bbox": {"l": 136.79984, "t": 156.64824999999996, "r": 536.82135, "b": 165.86127, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "way. This publication helps you understand the capabilities of RCAC and provides examples ", "bbox": {"l": 136.79987, "t": 168.64806999999996, "r": 544.67975, "b": 177.86108000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "of defining, creating, and implementing the row permissions and column masks in a relational ", "bbox": {"l": 136.79987, "t": 180.64788999999996, "r": 547.30823, "b": 189.86090000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "database environment.", "bbox": {"l": 136.79987, "t": 192.64770999999996, "r": 238.32117, "b": 201.86072000000001, "coord_origin": "TOPLEFT"}}]}, "text": "This IBMfi Redpaper\u2122 publication provides information about the IBM i 7.2 feature of IBM DB2fi for i Row and Column Access Control (RCAC). It offers a broad description of the function and advantages of controlling access to data in a comprehensive and transparent way. This publication helps you understand the capabilities of RCAC and provides examples of defining, creating, and implementing the row permissions and column masks in a relational database environment."}, {"label": "text", "id": 4, "page_no": 12, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.94647216796875, "t": 214.0637664794922, "r": 546.4657, "b": 260.1856384277344, "coord_origin": "TOPLEFT"}, "confidence": 0.987220287322998, "cells": [{"id": 9, "text": "This paper is intended for database engineers, data-centric application developers, and ", "bbox": {"l": 136.79987, "t": 214.60748, "r": 524.18518, "b": 223.82050000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "security officers who want to design and implement RCAC as a part of their data control and ", "bbox": {"l": 136.79987, "t": 226.6073, "r": 546.4657, "b": 235.82030999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "governance policy. A solid background in IBM i object level security, DB2 for i relational ", "bbox": {"l": 136.79987, "t": 238.60712, "r": 521.25488, "b": 247.82012999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "database concepts, and SQL is assumed.", "bbox": {"l": 136.79987, "t": 250.60693000000003, "r": 321.69434, "b": 259.81994999999995, "coord_origin": "TOPLEFT"}}]}, "text": "This paper is intended for database engineers, data-centric application developers, and security officers who want to design and implement RCAC as a part of their data control and governance policy. A solid background in IBM i object level security, DB2 for i relational database concepts, and SQL is assumed."}, {"label": "section_header", "id": 5, "page_no": 12, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 64.22550201416016, "t": 287.1894226074219, "r": 125.36661, "b": 303.0636, "coord_origin": "TOPLEFT"}, "confidence": 0.9255504608154297, "cells": [{"id": 13, "text": "Authors", "bbox": {"l": 64.800003, "t": 288.3006, "r": 125.36661, "b": 303.0636, "coord_origin": "TOPLEFT"}}]}, "text": "Authors"}, {"label": "text", "id": 6, "page_no": 12, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.71319580078125, "t": 319.8118591308594, "r": 547.23669, "b": 342.1517028808594, "coord_origin": "TOPLEFT"}, "confidence": 0.9713318347930908, "cells": [{"id": 14, "text": "This paper was produced by the IBM DB2 for i Center of Excellence team in partnership with ", "bbox": {"l": 136.8, "t": 320.62871999999993, "r": 547.23669, "b": 329.8417099999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "the International Technical Support Organization (ITSO), Rochester, Minnesota US.", "bbox": {"l": 136.8, "t": 332.62854, "r": 505.05518, "b": 341.84152, "coord_origin": "TOPLEFT"}}]}, "text": "This paper was produced by the IBM DB2 for i Center of Excellence team in partnership with the International Technical Support Organization (ITSO), Rochester, Minnesota US."}, {"label": "text", "id": 7, "page_no": 12, "cluster": {"id": 7, "label": "text", "bbox": {"l": 262.6522521972656, "t": 374.687255859375, "r": 541.25079, "b": 516.9314575195312, "coord_origin": "TOPLEFT"}, "confidence": 0.9842760562896729, "cells": [{"id": 16, "text": "Jim Bainbridge", "bbox": {"l": 263.39957, "t": 375.64877, "r": 335.7251, "b": 384.86176, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": " is a senior DB2 consultant on the DB2 for i ", "bbox": {"l": 335.69922, "t": 375.64877, "r": 529.34259, "b": 384.86176, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Center of Excellence team in the IBM Lab Services and ", "bbox": {"l": 263.3996, "t": 387.64859, "r": 511.50717, "b": 396.86157, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Training organization. His primary role is training and ", "bbox": {"l": 263.3996, "t": 399.64841, "r": 499.077, "b": 408.86139, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "implementation services for IBM DB2 Web Query for i and ", "bbox": {"l": 263.3996, "t": 411.64822, "r": 522.51996, "b": 420.86121, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "business analytics. Jim began his career with IBM 30 years ago ", "bbox": {"l": 263.3996, "t": 423.64804, "r": 541.25079, "b": 432.86102, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "in the IBM Rochester Development Lab, where he developed ", "bbox": {"l": 263.3996, "t": 435.64786, "r": 534.71411, "b": 444.86084, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "cooperative processing products that paired IBM PCs with IBM ", "bbox": {"l": 263.3996, "t": 447.64767, "r": 541.22375, "b": 456.86066, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "S/36 and AS/.400 systems. In the years since, Jim has held ", "bbox": {"l": 263.3996, "t": 459.64749, "r": 528.91016, "b": 468.86047, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "numerous technical roles, including independent software ", "bbox": {"l": 263.3996, "t": 471.64731, "r": 520.24207, "b": 480.86029, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "vendors technical support on a broad range of IBM ", "bbox": {"l": 263.3996, "t": 483.64713, "r": 490.6967200000001, "b": 492.86011, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "technologies and products, and supporting customers in the ", "bbox": {"l": 263.3996, "t": 495.64694, "r": 530.95514, "b": 504.85992, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IBM Executive Briefing Center and IBM Project Office.", "bbox": {"l": 263.3996, "t": 507.64676, "r": 501.62973, "b": 516.85974, "coord_origin": "TOPLEFT"}}]}, "text": "Jim Bainbridge is a senior DB2 consultant on the DB2 for i Center of Excellence team in the IBM Lab Services and Training organization. His primary role is training and implementation services for IBM DB2 Web Query for i and business analytics. Jim began his career with IBM 30 years ago in the IBM Rochester Development Lab, where he developed cooperative processing products that paired IBM PCs with IBM S/36 and AS/.400 systems. In the years since, Jim has held numerous technical roles, including independent software vendors technical support on a broad range of IBM technologies and products, and supporting customers in the IBM Executive Briefing Center and IBM Project Office."}, {"label": "text", "id": 8, "page_no": 12, "cluster": {"id": 8, "label": "text", "bbox": {"l": 262.4736328125, "t": 526.50830078125, "r": 541.27374, "b": 680.83716, "coord_origin": "TOPLEFT"}, "confidence": 0.9823779463768005, "cells": [{"id": 29, "text": "Hernando Bedoya", "bbox": {"l": 263.3996, "t": 527.62653, "r": 348.38229, "b": 536.83952, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": " is a Senior IT Specialist at STG Lab ", "bbox": {"l": 348.41916, "t": 527.62653, "r": 512.3429, "b": 536.83952, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Services and Training in Rochester, Minnesota. He writes ", "bbox": {"l": 263.3996, "t": 539.62633, "r": 519.26306, "b": 548.83932, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "extensively and teaches IBM classes worldwide in all areas of ", "bbox": {"l": 263.3996, "t": 551.62613, "r": 538.40308, "b": 560.8391300000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "DB2 for i. Before joining STG Lab Services, he worked in the ", "bbox": {"l": 263.3996, "t": 563.62593, "r": 533.95715, "b": 572.83893, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "ITSO for nine years writing multiple IBM Redbooksfi ", "bbox": {"l": 263.3996, "t": 575.62573, "r": 496.94464, "b": 584.8387299999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "publications. He also worked for IBM Colombia as an IBM ", "bbox": {"l": 263.3996, "t": 587.62553, "r": 520.38562, "b": 596.83853, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "AS/400fi IT Specialist doing presales support for the Andean ", "bbox": {"l": 263.3996, "t": 599.62534, "r": 535.99078, "b": 608.83833, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "countries. He has 28 years of experience in the computing field ", "bbox": {"l": 263.3996, "t": 611.62514, "r": 541.27374, "b": 620.83813, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "and has taught database classes in Colombian universities. He ", "bbox": {"l": 263.3996, "t": 623.62494, "r": 541.26465, "b": 632.83794, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "holds a Master\u2019s degree in Computer Science from EAFIT, ", "bbox": {"l": 263.3996, "t": 635.62474, "r": 523.22211, "b": 644.8377399999999, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Colombia. His areas of expertise are database technology, ", "bbox": {"l": 263.3996, "t": 647.62454, "r": 524.77386, "b": 656.83754, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "performance, and data warehousing. Hernando can be ", "bbox": {"l": 263.3996, "t": 659.62434, "r": 508.27124, "b": 668.83735, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "contacted at ", "bbox": {"l": 263.3996, "t": 671.62415, "r": 320.63568, "b": 680.83716, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "hbedoya@us.ibm.com", "bbox": {"l": 320.63971, "t": 671.77356, "r": 410.57852, "b": 680.54832, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": ".", "bbox": {"l": 410.5795, "t": 671.62415, "r": 413.34839, "b": 680.83716, "coord_origin": "TOPLEFT"}}]}, "text": "Hernando Bedoya is a Senior IT Specialist at STG Lab Services and Training in Rochester, Minnesota. He writes extensively and teaches IBM classes worldwide in all areas of DB2 for i. Before joining STG Lab Services, he worked in the ITSO for nine years writing multiple IBM Redbooksfi publications. He also worked for IBM Colombia as an IBM AS/400fi IT Specialist doing presales support for the Andean countries. He has 28 years of experience in the computing field and has taught database classes in Colombian universities. He holds a Master\u2019s degree in Computer Science from EAFIT, Colombia. His areas of expertise are database technology, performance, and data warehousing. Hernando can be contacted at hbedoya@us.ibm.com ."}, {"label": "picture", "id": 9, "page_no": 12, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 145.41448974609375, "t": 527.2447509765625, "r": 252.08840942382812, "b": 635.383056640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9871657490730286, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 10, "page_no": 12, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 142.52883911132812, "t": 375.0449523925781, "r": 251.47850036621094, "b": 503.20648193359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9862572550773621, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 12, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.724002838134766, "t": 754.7037963867188, "r": 257.24335, "b": 764.1082153320312, "coord_origin": "TOPLEFT"}, "confidence": 0.9469243884086609, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 12, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 538.058349609375, "t": 754.3980102539062, "r": 547.25031, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9040942788124084, "cells": [{"id": 1, "text": "xi", "bbox": {"l": 538.85999, "t": 754.848721, "r": 547.25031, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "xi"}]}}, {"page_no": 13, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "xii ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Rob Bestgen ", "bbox": {"l": 263.39999, "t": 77.50867000000005, "r": 327.9169, "b": 86.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "is a member of the DB2 for i Center of ", "bbox": {"l": 327.89996, "t": 77.50867000000005, "r": 498.72397, "b": 86.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Excellence team helping customers use the capabilities of DB2 ", "bbox": {"l": 263.39999, "t": 89.50847999999996, "r": 541.20526, "b": 98.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "for i. In addition, Rob is the chief architect of the DB2 SQL ", "bbox": {"l": 263.40002, "t": 101.50829999999996, "r": 521.90179, "b": 110.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Query Engine (SQE) for DB2 for i and is the product ", "bbox": {"l": 263.40002, "t": 113.50811999999996, "r": 495.96112, "b": 122.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "development manager for DB2 Web Query for i. ", "bbox": {"l": 263.40002, "t": 125.50792999999999, "r": 476.70428, "b": 134.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Mike Cain ", "bbox": {"l": 263.40002, "t": 193.00787000000003, "r": 312.89825, "b": 202.22089000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "is a Senior Technical Staff Member within the IBM ", "bbox": {"l": 312.84045, "t": 193.00787000000003, "r": 535.45636, "b": 202.22089000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Systems and Technology Group. He is also the founder and ", "bbox": {"l": 263.40002, "t": 205.00769000000003, "r": 529.36505, "b": 214.22069999999997, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "team leader of the DB2 for i Center of Excellence in Rochester, ", "bbox": {"l": 263.40002, "t": 217.00751000000002, "r": 541.17163, "b": 226.22051999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Minnesota US. Before his current position, he worked as an ", "bbox": {"l": 263.40002, "t": 229.00732000000005, "r": 528.82898, "b": 238.22033999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "IBM AS/400 Systems Engineer and technical consultant. ", "bbox": {"l": 263.40002, "t": 241.00714000000005, "r": 516.10809, "b": 250.22015, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Before joining IBM in 1988, Mike worked as a System/38 ", "bbox": {"l": 263.40002, "t": 253.00696000000005, "r": 516.11694, "b": 262.21997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "programmer and data processing manager for a property and ", "bbox": {"l": 263.40002, "t": 265.00676999999996, "r": 537.08087, "b": 274.21979, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "casualty insurance company. Mike has 26 years of experience ", "bbox": {"l": 263.40002, "t": 277.00658999999996, "r": 539.87268, "b": 286.2196, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "with IBM, engaging clients and Business Partners around the ", "bbox": {"l": 263.40002, "t": 289.00644000000005, "r": 536.25336, "b": 298.21942, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "world. In addition to assisting clients, he uses his knowledge ", "bbox": {"l": 263.40002, "t": 301.00626, "r": 532.00836, "b": 310.21924, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "and experience to influence the IBM solution, development, ", "bbox": {"l": 263.40002, "t": 313.00607, "r": 527.71844, "b": 322.21906, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "and support processes.", "bbox": {"l": 263.40002, "t": 325.00589, "r": 367.55078, "b": 334.21887, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Dan Cruikshank ", "bbox": {"l": 263.40002, "t": 344.98566, "r": 342.26331, "b": 354.19864, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "has been an IT Professional since 1972. He ", "bbox": {"l": 342.24039, "t": 344.98566, "r": 538.6994, "b": 354.19864, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "has consulted on a number of different project areas since ", "bbox": {"l": 263.40002, "t": 356.98546999999996, "r": 522.98248, "b": 366.19845999999995, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "joining IBM Rochester in 1988. Since 1993, Dan was focused ", "bbox": {"l": 263.40002, "t": 368.9852900000001, "r": 536.84882, "b": 378.19827, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "primarily on resolving IBM System ifi application and database ", "bbox": {"l": 263.40002, "t": 380.98511, "r": 541.32196, "b": 390.19809, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "performance issues at several IBM customer accounts. Since ", "bbox": {"l": 263.40002, "t": 392.98491999999993, "r": 536.4115, "b": 402.1979099999999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "1998, Dan has been one of the primary instructors for the ", "bbox": {"l": 263.40002, "t": 404.98474000000004, "r": 519.79437, "b": 414.19772, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Database Optimization Workshop. Most recently, Dan is a ", "bbox": {"l": 263.40002, "t": 416.98456, "r": 520.69763, "b": 426.19754, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "member of the DB2 for i Center of Excellence team with IBM ", "bbox": {"l": 263.40002, "t": 428.98438, "r": 532.99817, "b": 438.19736, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Rochester Lab Services. ", "bbox": {"l": 263.40002, "t": 440.98419, "r": 375.21091, "b": 450.19717, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Jim Denton ", "bbox": {"l": 263.40002, "t": 463.00375, "r": 320.5993, "b": 472.21674, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "is a senior consultant at the IBM DB2 for i Center ", "bbox": {"l": 320.58038, "t": 463.00375, "r": 539.80682, "b": 472.21674, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "of Excellence, where his responsibilities include both teaching ", "bbox": {"l": 263.40002, "t": 475.00357, "r": 539.302, "b": 484.21655, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "courses and hands on consulting. Jim specializes in SQL ", "bbox": {"l": 263.40002, "t": 487.00339, "r": 518.37109, "b": 496.21637, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "performance, data-centric programming, and database ", "bbox": {"l": 263.40002, "t": 499.0032, "r": 507.58939, "b": 508.21619, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "modernization. Jim started his IBM career in 1981 as an S/38 ", "bbox": {"l": 263.40002, "t": 511.00302, "r": 537.43854, "b": 520.216, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "operating system programmer. Before joining the consulting ", "bbox": {"l": 263.40002, "t": 523.00284, "r": 529.47443, "b": 532.21582, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "team, his key assignments included 10 years as a systems ", "bbox": {"l": 263.40002, "t": 535.00262, "r": 525.58606, "b": 544.21564, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "performance specialist, five years as the lead \u201cJDE on i\u201d ", "bbox": {"l": 263.40002, "t": 547.00244, "r": 512.86005, "b": 556.2154400000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "analyst, three years as a consultant at the IBM Benchmark and ", "bbox": {"l": 263.40002, "t": 559.00224, "r": 541.24127, "b": 568.21524, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Briefing Center in Montpellier France, and a total of 11 years as ", "bbox": {"l": 263.40002, "t": 571.00204, "r": 541.1795, "b": 580.21504, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "an operating system developer, including five years designing ", "bbox": {"l": 263.40002, "t": 583.00185, "r": 537.2641, "b": 592.21484, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "and implementing enhancements to DB2 for i.", "bbox": {"l": 263.40002, "t": 595.00165, "r": 465.90363, "b": 604.21465, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Doug Mack ", "bbox": {"l": 263.40002, "t": 615.04117, "r": 318.42407, "b": 624.2541699999999, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "is a DB2 for i and Business Intelligence Consultant ", "bbox": {"l": 318.47983, "t": 615.04117, "r": 541.1944, "b": 624.2541699999999, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "in the IBM Power Systems\u2122 Lab Services organization. ", "bbox": {"l": 263.40002, "t": 627.04097, "r": 513.45575, "b": 636.25397, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Doug\u2019s 30+ year career with IBM spans many roles, including ", "bbox": {"l": 263.40002, "t": 639.0407700000001, "r": 536.81903, "b": 648.25377, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "product development, technical sales support, Business ", "bbox": {"l": 263.40002, "t": 651.04057, "r": 512.66986, "b": 660.25357, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Intelligence Sales Specialist, and DB2 for i Product Marketing ", "bbox": {"l": 263.40002, "t": 663.0403699999999, "r": 537.38861, "b": 672.25338, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Manager. Doug is a featured speaker at User Group ", "bbox": {"l": 263.40002, "t": 675.04018, "r": 495.84451, "b": 684.25319, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "conferences and meetings, IBM Technical Conferences, and ", "bbox": {"l": 263.40002, "t": 687.03999, "r": 531.87579, "b": 696.252998, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Executive Briefings.", "bbox": {"l": 263.40002, "t": 699.039803, "r": 350.62271, "b": 708.252808, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.18641662597656, "t": 754.4242553710938, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.91111159324646, "cells": [{"id": 0, "text": "xii ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.32842254638672, "t": 754.7139282226562, "r": 334.42142, "b": 763.9345703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9425985813140869, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 262.9671630859375, "t": 76.57386779785156, "r": 541.20526, "b": 135.15176391601562, "coord_origin": "TOPLEFT"}, "confidence": 0.9491702318191528, "cells": [{"id": 2, "text": "Rob Bestgen ", "bbox": {"l": 263.39999, "t": 77.50867000000005, "r": 327.9169, "b": 86.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "is a member of the DB2 for i Center of ", "bbox": {"l": 327.89996, "t": 77.50867000000005, "r": 498.72397, "b": 86.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Excellence team helping customers use the capabilities of DB2 ", "bbox": {"l": 263.39999, "t": 89.50847999999996, "r": 541.20526, "b": 98.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "for i. In addition, Rob is the chief architect of the DB2 SQL ", "bbox": {"l": 263.40002, "t": 101.50829999999996, "r": 521.90179, "b": 110.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Query Engine (SQE) for DB2 for i and is the product ", "bbox": {"l": 263.40002, "t": 113.50811999999996, "r": 495.96112, "b": 122.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "development manager for DB2 Web Query for i. ", "bbox": {"l": 263.40002, "t": 125.50792999999999, "r": 476.70428, "b": 134.72095000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 262.94354248046875, "t": 191.9833984375, "r": 541.17163, "b": 334.21887, "coord_origin": "TOPLEFT"}, "confidence": 0.9866385459899902, "cells": [{"id": 8, "text": "Mike Cain ", "bbox": {"l": 263.40002, "t": 193.00787000000003, "r": 312.89825, "b": 202.22089000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "is a Senior Technical Staff Member within the IBM ", "bbox": {"l": 312.84045, "t": 193.00787000000003, "r": 535.45636, "b": 202.22089000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Systems and Technology Group. He is also the founder and ", "bbox": {"l": 263.40002, "t": 205.00769000000003, "r": 529.36505, "b": 214.22069999999997, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "team leader of the DB2 for i Center of Excellence in Rochester, ", "bbox": {"l": 263.40002, "t": 217.00751000000002, "r": 541.17163, "b": 226.22051999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Minnesota US. Before his current position, he worked as an ", "bbox": {"l": 263.40002, "t": 229.00732000000005, "r": 528.82898, "b": 238.22033999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "IBM AS/400 Systems Engineer and technical consultant. ", "bbox": {"l": 263.40002, "t": 241.00714000000005, "r": 516.10809, "b": 250.22015, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Before joining IBM in 1988, Mike worked as a System/38 ", "bbox": {"l": 263.40002, "t": 253.00696000000005, "r": 516.11694, "b": 262.21997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "programmer and data processing manager for a property and ", "bbox": {"l": 263.40002, "t": 265.00676999999996, "r": 537.08087, "b": 274.21979, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "casualty insurance company. Mike has 26 years of experience ", "bbox": {"l": 263.40002, "t": 277.00658999999996, "r": 539.87268, "b": 286.2196, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "with IBM, engaging clients and Business Partners around the ", "bbox": {"l": 263.40002, "t": 289.00644000000005, "r": 536.25336, "b": 298.21942, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "world. In addition to assisting clients, he uses his knowledge ", "bbox": {"l": 263.40002, "t": 301.00626, "r": 532.00836, "b": 310.21924, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "and experience to influence the IBM solution, development, ", "bbox": {"l": 263.40002, "t": 313.00607, "r": 527.71844, "b": 322.21906, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "and support processes.", "bbox": {"l": 263.40002, "t": 325.00589, "r": 367.55078, "b": 334.21887, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 262.7120666503906, "t": 344.05780029296875, "r": 541.32196, "b": 450.19717, "coord_origin": "TOPLEFT"}, "confidence": 0.9859716296195984, "cells": [{"id": 21, "text": "Dan Cruikshank ", "bbox": {"l": 263.40002, "t": 344.98566, "r": 342.26331, "b": 354.19864, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "has been an IT Professional since 1972. He ", "bbox": {"l": 342.24039, "t": 344.98566, "r": 538.6994, "b": 354.19864, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "has consulted on a number of different project areas since ", "bbox": {"l": 263.40002, "t": 356.98546999999996, "r": 522.98248, "b": 366.19845999999995, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "joining IBM Rochester in 1988. Since 1993, Dan was focused ", "bbox": {"l": 263.40002, "t": 368.9852900000001, "r": 536.84882, "b": 378.19827, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "primarily on resolving IBM System ifi application and database ", "bbox": {"l": 263.40002, "t": 380.98511, "r": 541.32196, "b": 390.19809, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "performance issues at several IBM customer accounts. Since ", "bbox": {"l": 263.40002, "t": 392.98491999999993, "r": 536.4115, "b": 402.1979099999999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "1998, Dan has been one of the primary instructors for the ", "bbox": {"l": 263.40002, "t": 404.98474000000004, "r": 519.79437, "b": 414.19772, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Database Optimization Workshop. Most recently, Dan is a ", "bbox": {"l": 263.40002, "t": 416.98456, "r": 520.69763, "b": 426.19754, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "member of the DB2 for i Center of Excellence team with IBM ", "bbox": {"l": 263.40002, "t": 428.98438, "r": 532.99817, "b": 438.19736, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Rochester Lab Services. ", "bbox": {"l": 263.40002, "t": 440.98419, "r": 375.21091, "b": 450.19717, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 262.76617431640625, "t": 462.0334167480469, "r": 541.24127, "b": 604.21465, "coord_origin": "TOPLEFT"}, "confidence": 0.9878524541854858, "cells": [{"id": 31, "text": "Jim Denton ", "bbox": {"l": 263.40002, "t": 463.00375, "r": 320.5993, "b": 472.21674, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "is a senior consultant at the IBM DB2 for i Center ", "bbox": {"l": 320.58038, "t": 463.00375, "r": 539.80682, "b": 472.21674, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "of Excellence, where his responsibilities include both teaching ", "bbox": {"l": 263.40002, "t": 475.00357, "r": 539.302, "b": 484.21655, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "courses and hands on consulting. Jim specializes in SQL ", "bbox": {"l": 263.40002, "t": 487.00339, "r": 518.37109, "b": 496.21637, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "performance, data-centric programming, and database ", "bbox": {"l": 263.40002, "t": 499.0032, "r": 507.58939, "b": 508.21619, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "modernization. Jim started his IBM career in 1981 as an S/38 ", "bbox": {"l": 263.40002, "t": 511.00302, "r": 537.43854, "b": 520.216, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "operating system programmer. Before joining the consulting ", "bbox": {"l": 263.40002, "t": 523.00284, "r": 529.47443, "b": 532.21582, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "team, his key assignments included 10 years as a systems ", "bbox": {"l": 263.40002, "t": 535.00262, "r": 525.58606, "b": 544.21564, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "performance specialist, five years as the lead \u201cJDE on i\u201d ", "bbox": {"l": 263.40002, "t": 547.00244, "r": 512.86005, "b": 556.2154400000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "analyst, three years as a consultant at the IBM Benchmark and ", "bbox": {"l": 263.40002, "t": 559.00224, "r": 541.24127, "b": 568.21524, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Briefing Center in Montpellier France, and a total of 11 years as ", "bbox": {"l": 263.40002, "t": 571.00204, "r": 541.1795, "b": 580.21504, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "an operating system developer, including five years designing ", "bbox": {"l": 263.40002, "t": 583.00185, "r": 537.2641, "b": 592.21484, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "and implementing enhancements to DB2 for i.", "bbox": {"l": 263.40002, "t": 595.00165, "r": 465.90363, "b": 604.21465, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 262.9361877441406, "t": 614.0336303710938, "r": 541.1944, "b": 708.252808, "coord_origin": "TOPLEFT"}, "confidence": 0.9843889474868774, "cells": [{"id": 44, "text": "Doug Mack ", "bbox": {"l": 263.40002, "t": 615.04117, "r": 318.42407, "b": 624.2541699999999, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "is a DB2 for i and Business Intelligence Consultant ", "bbox": {"l": 318.47983, "t": 615.04117, "r": 541.1944, "b": 624.2541699999999, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "in the IBM Power Systems\u2122 Lab Services organization. ", "bbox": {"l": 263.40002, "t": 627.04097, "r": 513.45575, "b": 636.25397, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Doug\u2019s 30+ year career with IBM spans many roles, including ", "bbox": {"l": 263.40002, "t": 639.0407700000001, "r": 536.81903, "b": 648.25377, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "product development, technical sales support, Business ", "bbox": {"l": 263.40002, "t": 651.04057, "r": 512.66986, "b": 660.25357, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Intelligence Sales Specialist, and DB2 for i Product Marketing ", "bbox": {"l": 263.40002, "t": 663.0403699999999, "r": 537.38861, "b": 672.25338, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Manager. Doug is a featured speaker at User Group ", "bbox": {"l": 263.40002, "t": 675.04018, "r": 495.84451, "b": 684.25319, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "conferences and meetings, IBM Technical Conferences, and ", "bbox": {"l": 263.40002, "t": 687.03999, "r": 531.87579, "b": 696.252998, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Executive Briefings.", "bbox": {"l": 263.40002, "t": 699.039803, "r": 350.62271, "b": 708.252808, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "picture", "bbox": {"l": 141.68251037597656, "t": 77.3314437866211, "r": 249.5221405029297, "b": 183.49258422851562, "coord_origin": "TOPLEFT"}, "confidence": 0.9875855445861816, "cells": []}, {"id": 8, "label": "picture", "bbox": {"l": 141.71910095214844, "t": 192.56460571289062, "r": 251.5185546875, "b": 319.4869079589844, "coord_origin": "TOPLEFT"}, "confidence": 0.9871560335159302, "cells": []}, {"id": 9, "label": "picture", "bbox": {"l": 141.89089965820312, "t": 344.6142883300781, "r": 251.38380432128906, "b": 454.1204833984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9869871139526367, "cells": []}, {"id": 10, "label": "picture", "bbox": {"l": 141.69131469726562, "t": 614.610107421875, "r": 250.86129760742188, "b": 724.1473999023438, "coord_origin": "TOPLEFT"}, "confidence": 0.9869828224182129, "cells": []}, {"id": 11, "label": "picture", "bbox": {"l": 141.57579040527344, "t": 462.79840087890625, "r": 249.41360473632812, "b": 568.6048583984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9861478805541992, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 13, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.18641662597656, "t": 754.4242553710938, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.91111159324646, "cells": [{"id": 0, "text": "xii ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "xii"}, {"label": "page_footer", "id": 1, "page_no": 13, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.32842254638672, "t": 754.7139282226562, "r": 334.42142, "b": 763.9345703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9425985813140869, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 2, "page_no": 13, "cluster": {"id": 2, "label": "text", "bbox": {"l": 262.9671630859375, "t": 76.57386779785156, "r": 541.20526, "b": 135.15176391601562, "coord_origin": "TOPLEFT"}, "confidence": 0.9491702318191528, "cells": [{"id": 2, "text": "Rob Bestgen ", "bbox": {"l": 263.39999, "t": 77.50867000000005, "r": 327.9169, "b": 86.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "is a member of the DB2 for i Center of ", "bbox": {"l": 327.89996, "t": 77.50867000000005, "r": 498.72397, "b": 86.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Excellence team helping customers use the capabilities of DB2 ", "bbox": {"l": 263.39999, "t": 89.50847999999996, "r": 541.20526, "b": 98.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "for i. In addition, Rob is the chief architect of the DB2 SQL ", "bbox": {"l": 263.40002, "t": 101.50829999999996, "r": 521.90179, "b": 110.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Query Engine (SQE) for DB2 for i and is the product ", "bbox": {"l": 263.40002, "t": 113.50811999999996, "r": 495.96112, "b": 122.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "development manager for DB2 Web Query for i. ", "bbox": {"l": 263.40002, "t": 125.50792999999999, "r": 476.70428, "b": 134.72095000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Rob Bestgen is a member of the DB2 for i Center of Excellence team helping customers use the capabilities of DB2 for i. In addition, Rob is the chief architect of the DB2 SQL Query Engine (SQE) for DB2 for i and is the product development manager for DB2 Web Query for i."}, {"label": "text", "id": 3, "page_no": 13, "cluster": {"id": 3, "label": "text", "bbox": {"l": 262.94354248046875, "t": 191.9833984375, "r": 541.17163, "b": 334.21887, "coord_origin": "TOPLEFT"}, "confidence": 0.9866385459899902, "cells": [{"id": 8, "text": "Mike Cain ", "bbox": {"l": 263.40002, "t": 193.00787000000003, "r": 312.89825, "b": 202.22089000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "is a Senior Technical Staff Member within the IBM ", "bbox": {"l": 312.84045, "t": 193.00787000000003, "r": 535.45636, "b": 202.22089000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Systems and Technology Group. He is also the founder and ", "bbox": {"l": 263.40002, "t": 205.00769000000003, "r": 529.36505, "b": 214.22069999999997, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "team leader of the DB2 for i Center of Excellence in Rochester, ", "bbox": {"l": 263.40002, "t": 217.00751000000002, "r": 541.17163, "b": 226.22051999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Minnesota US. Before his current position, he worked as an ", "bbox": {"l": 263.40002, "t": 229.00732000000005, "r": 528.82898, "b": 238.22033999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "IBM AS/400 Systems Engineer and technical consultant. ", "bbox": {"l": 263.40002, "t": 241.00714000000005, "r": 516.10809, "b": 250.22015, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Before joining IBM in 1988, Mike worked as a System/38 ", "bbox": {"l": 263.40002, "t": 253.00696000000005, "r": 516.11694, "b": 262.21997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "programmer and data processing manager for a property and ", "bbox": {"l": 263.40002, "t": 265.00676999999996, "r": 537.08087, "b": 274.21979, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "casualty insurance company. Mike has 26 years of experience ", "bbox": {"l": 263.40002, "t": 277.00658999999996, "r": 539.87268, "b": 286.2196, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "with IBM, engaging clients and Business Partners around the ", "bbox": {"l": 263.40002, "t": 289.00644000000005, "r": 536.25336, "b": 298.21942, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "world. In addition to assisting clients, he uses his knowledge ", "bbox": {"l": 263.40002, "t": 301.00626, "r": 532.00836, "b": 310.21924, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "and experience to influence the IBM solution, development, ", "bbox": {"l": 263.40002, "t": 313.00607, "r": 527.71844, "b": 322.21906, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "and support processes.", "bbox": {"l": 263.40002, "t": 325.00589, "r": 367.55078, "b": 334.21887, "coord_origin": "TOPLEFT"}}]}, "text": "Mike Cain is a Senior Technical Staff Member within the IBM Systems and Technology Group. He is also the founder and team leader of the DB2 for i Center of Excellence in Rochester, Minnesota US. Before his current position, he worked as an IBM AS/400 Systems Engineer and technical consultant. Before joining IBM in 1988, Mike worked as a System/38 programmer and data processing manager for a property and casualty insurance company. Mike has 26 years of experience with IBM, engaging clients and Business Partners around the world. In addition to assisting clients, he uses his knowledge and experience to influence the IBM solution, development, and support processes."}, {"label": "text", "id": 4, "page_no": 13, "cluster": {"id": 4, "label": "text", "bbox": {"l": 262.7120666503906, "t": 344.05780029296875, "r": 541.32196, "b": 450.19717, "coord_origin": "TOPLEFT"}, "confidence": 0.9859716296195984, "cells": [{"id": 21, "text": "Dan Cruikshank ", "bbox": {"l": 263.40002, "t": 344.98566, "r": 342.26331, "b": 354.19864, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "has been an IT Professional since 1972. He ", "bbox": {"l": 342.24039, "t": 344.98566, "r": 538.6994, "b": 354.19864, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "has consulted on a number of different project areas since ", "bbox": {"l": 263.40002, "t": 356.98546999999996, "r": 522.98248, "b": 366.19845999999995, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "joining IBM Rochester in 1988. Since 1993, Dan was focused ", "bbox": {"l": 263.40002, "t": 368.9852900000001, "r": 536.84882, "b": 378.19827, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "primarily on resolving IBM System ifi application and database ", "bbox": {"l": 263.40002, "t": 380.98511, "r": 541.32196, "b": 390.19809, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "performance issues at several IBM customer accounts. Since ", "bbox": {"l": 263.40002, "t": 392.98491999999993, "r": 536.4115, "b": 402.1979099999999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "1998, Dan has been one of the primary instructors for the ", "bbox": {"l": 263.40002, "t": 404.98474000000004, "r": 519.79437, "b": 414.19772, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Database Optimization Workshop. Most recently, Dan is a ", "bbox": {"l": 263.40002, "t": 416.98456, "r": 520.69763, "b": 426.19754, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "member of the DB2 for i Center of Excellence team with IBM ", "bbox": {"l": 263.40002, "t": 428.98438, "r": 532.99817, "b": 438.19736, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Rochester Lab Services. ", "bbox": {"l": 263.40002, "t": 440.98419, "r": 375.21091, "b": 450.19717, "coord_origin": "TOPLEFT"}}]}, "text": "Dan Cruikshank has been an IT Professional since 1972. He has consulted on a number of different project areas since joining IBM Rochester in 1988. Since 1993, Dan was focused primarily on resolving IBM System ifi application and database performance issues at several IBM customer accounts. Since 1998, Dan has been one of the primary instructors for the Database Optimization Workshop. Most recently, Dan is a member of the DB2 for i Center of Excellence team with IBM Rochester Lab Services."}, {"label": "text", "id": 5, "page_no": 13, "cluster": {"id": 5, "label": "text", "bbox": {"l": 262.76617431640625, "t": 462.0334167480469, "r": 541.24127, "b": 604.21465, "coord_origin": "TOPLEFT"}, "confidence": 0.9878524541854858, "cells": [{"id": 31, "text": "Jim Denton ", "bbox": {"l": 263.40002, "t": 463.00375, "r": 320.5993, "b": 472.21674, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "is a senior consultant at the IBM DB2 for i Center ", "bbox": {"l": 320.58038, "t": 463.00375, "r": 539.80682, "b": 472.21674, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "of Excellence, where his responsibilities include both teaching ", "bbox": {"l": 263.40002, "t": 475.00357, "r": 539.302, "b": 484.21655, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "courses and hands on consulting. Jim specializes in SQL ", "bbox": {"l": 263.40002, "t": 487.00339, "r": 518.37109, "b": 496.21637, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "performance, data-centric programming, and database ", "bbox": {"l": 263.40002, "t": 499.0032, "r": 507.58939, "b": 508.21619, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "modernization. Jim started his IBM career in 1981 as an S/38 ", "bbox": {"l": 263.40002, "t": 511.00302, "r": 537.43854, "b": 520.216, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "operating system programmer. Before joining the consulting ", "bbox": {"l": 263.40002, "t": 523.00284, "r": 529.47443, "b": 532.21582, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "team, his key assignments included 10 years as a systems ", "bbox": {"l": 263.40002, "t": 535.00262, "r": 525.58606, "b": 544.21564, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "performance specialist, five years as the lead \u201cJDE on i\u201d ", "bbox": {"l": 263.40002, "t": 547.00244, "r": 512.86005, "b": 556.2154400000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "analyst, three years as a consultant at the IBM Benchmark and ", "bbox": {"l": 263.40002, "t": 559.00224, "r": 541.24127, "b": 568.21524, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Briefing Center in Montpellier France, and a total of 11 years as ", "bbox": {"l": 263.40002, "t": 571.00204, "r": 541.1795, "b": 580.21504, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "an operating system developer, including five years designing ", "bbox": {"l": 263.40002, "t": 583.00185, "r": 537.2641, "b": 592.21484, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "and implementing enhancements to DB2 for i.", "bbox": {"l": 263.40002, "t": 595.00165, "r": 465.90363, "b": 604.21465, "coord_origin": "TOPLEFT"}}]}, "text": "Jim Denton is a senior consultant at the IBM DB2 for i Center of Excellence, where his responsibilities include both teaching courses and hands on consulting. Jim specializes in SQL performance, data-centric programming, and database modernization. Jim started his IBM career in 1981 as an S/38 operating system programmer. Before joining the consulting team, his key assignments included 10 years as a systems performance specialist, five years as the lead \u201cJDE on i\u201d analyst, three years as a consultant at the IBM Benchmark and Briefing Center in Montpellier France, and a total of 11 years as an operating system developer, including five years designing and implementing enhancements to DB2 for i."}, {"label": "text", "id": 6, "page_no": 13, "cluster": {"id": 6, "label": "text", "bbox": {"l": 262.9361877441406, "t": 614.0336303710938, "r": 541.1944, "b": 708.252808, "coord_origin": "TOPLEFT"}, "confidence": 0.9843889474868774, "cells": [{"id": 44, "text": "Doug Mack ", "bbox": {"l": 263.40002, "t": 615.04117, "r": 318.42407, "b": 624.2541699999999, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "is a DB2 for i and Business Intelligence Consultant ", "bbox": {"l": 318.47983, "t": 615.04117, "r": 541.1944, "b": 624.2541699999999, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "in the IBM Power Systems\u2122 Lab Services organization. ", "bbox": {"l": 263.40002, "t": 627.04097, "r": 513.45575, "b": 636.25397, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Doug\u2019s 30+ year career with IBM spans many roles, including ", "bbox": {"l": 263.40002, "t": 639.0407700000001, "r": 536.81903, "b": 648.25377, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "product development, technical sales support, Business ", "bbox": {"l": 263.40002, "t": 651.04057, "r": 512.66986, "b": 660.25357, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Intelligence Sales Specialist, and DB2 for i Product Marketing ", "bbox": {"l": 263.40002, "t": 663.0403699999999, "r": 537.38861, "b": 672.25338, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Manager. Doug is a featured speaker at User Group ", "bbox": {"l": 263.40002, "t": 675.04018, "r": 495.84451, "b": 684.25319, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "conferences and meetings, IBM Technical Conferences, and ", "bbox": {"l": 263.40002, "t": 687.03999, "r": 531.87579, "b": 696.252998, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Executive Briefings.", "bbox": {"l": 263.40002, "t": 699.039803, "r": 350.62271, "b": 708.252808, "coord_origin": "TOPLEFT"}}]}, "text": "Doug Mack is a DB2 for i and Business Intelligence Consultant in the IBM Power Systems\u2122 Lab Services organization. Doug\u2019s 30+ year career with IBM spans many roles, including product development, technical sales support, Business Intelligence Sales Specialist, and DB2 for i Product Marketing Manager. Doug is a featured speaker at User Group conferences and meetings, IBM Technical Conferences, and Executive Briefings."}, {"label": "picture", "id": 7, "page_no": 13, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 141.68251037597656, "t": 77.3314437866211, "r": 249.5221405029297, "b": 183.49258422851562, "coord_origin": "TOPLEFT"}, "confidence": 0.9875855445861816, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 8, "page_no": 13, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 141.71910095214844, "t": 192.56460571289062, "r": 251.5185546875, "b": 319.4869079589844, "coord_origin": "TOPLEFT"}, "confidence": 0.9871560335159302, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 9, "page_no": 13, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 141.89089965820312, "t": 344.6142883300781, "r": 251.38380432128906, "b": 454.1204833984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9869871139526367, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 10, "page_no": 13, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 141.69131469726562, "t": 614.610107421875, "r": 250.86129760742188, "b": 724.1473999023438, "coord_origin": "TOPLEFT"}, "confidence": 0.9869828224182129, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 11, "page_no": 13, "cluster": {"id": 11, "label": "picture", "bbox": {"l": 141.57579040527344, "t": 462.79840087890625, "r": 249.41360473632812, "b": 568.6048583984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9861478805541992, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 13, "cluster": {"id": 2, "label": "text", "bbox": {"l": 262.9671630859375, "t": 76.57386779785156, "r": 541.20526, "b": 135.15176391601562, "coord_origin": "TOPLEFT"}, "confidence": 0.9491702318191528, "cells": [{"id": 2, "text": "Rob Bestgen ", "bbox": {"l": 263.39999, "t": 77.50867000000005, "r": 327.9169, "b": 86.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "is a member of the DB2 for i Center of ", "bbox": {"l": 327.89996, "t": 77.50867000000005, "r": 498.72397, "b": 86.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Excellence team helping customers use the capabilities of DB2 ", "bbox": {"l": 263.39999, "t": 89.50847999999996, "r": 541.20526, "b": 98.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "for i. In addition, Rob is the chief architect of the DB2 SQL ", "bbox": {"l": 263.40002, "t": 101.50829999999996, "r": 521.90179, "b": 110.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Query Engine (SQE) for DB2 for i and is the product ", "bbox": {"l": 263.40002, "t": 113.50811999999996, "r": 495.96112, "b": 122.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "development manager for DB2 Web Query for i. ", "bbox": {"l": 263.40002, "t": 125.50792999999999, "r": 476.70428, "b": 134.72095000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Rob Bestgen is a member of the DB2 for i Center of Excellence team helping customers use the capabilities of DB2 for i. In addition, Rob is the chief architect of the DB2 SQL Query Engine (SQE) for DB2 for i and is the product development manager for DB2 Web Query for i."}, {"label": "text", "id": 3, "page_no": 13, "cluster": {"id": 3, "label": "text", "bbox": {"l": 262.94354248046875, "t": 191.9833984375, "r": 541.17163, "b": 334.21887, "coord_origin": "TOPLEFT"}, "confidence": 0.9866385459899902, "cells": [{"id": 8, "text": "Mike Cain ", "bbox": {"l": 263.40002, "t": 193.00787000000003, "r": 312.89825, "b": 202.22089000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "is a Senior Technical Staff Member within the IBM ", "bbox": {"l": 312.84045, "t": 193.00787000000003, "r": 535.45636, "b": 202.22089000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Systems and Technology Group. He is also the founder and ", "bbox": {"l": 263.40002, "t": 205.00769000000003, "r": 529.36505, "b": 214.22069999999997, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "team leader of the DB2 for i Center of Excellence in Rochester, ", "bbox": {"l": 263.40002, "t": 217.00751000000002, "r": 541.17163, "b": 226.22051999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Minnesota US. Before his current position, he worked as an ", "bbox": {"l": 263.40002, "t": 229.00732000000005, "r": 528.82898, "b": 238.22033999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "IBM AS/400 Systems Engineer and technical consultant. ", "bbox": {"l": 263.40002, "t": 241.00714000000005, "r": 516.10809, "b": 250.22015, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Before joining IBM in 1988, Mike worked as a System/38 ", "bbox": {"l": 263.40002, "t": 253.00696000000005, "r": 516.11694, "b": 262.21997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "programmer and data processing manager for a property and ", "bbox": {"l": 263.40002, "t": 265.00676999999996, "r": 537.08087, "b": 274.21979, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "casualty insurance company. Mike has 26 years of experience ", "bbox": {"l": 263.40002, "t": 277.00658999999996, "r": 539.87268, "b": 286.2196, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "with IBM, engaging clients and Business Partners around the ", "bbox": {"l": 263.40002, "t": 289.00644000000005, "r": 536.25336, "b": 298.21942, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "world. In addition to assisting clients, he uses his knowledge ", "bbox": {"l": 263.40002, "t": 301.00626, "r": 532.00836, "b": 310.21924, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "and experience to influence the IBM solution, development, ", "bbox": {"l": 263.40002, "t": 313.00607, "r": 527.71844, "b": 322.21906, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "and support processes.", "bbox": {"l": 263.40002, "t": 325.00589, "r": 367.55078, "b": 334.21887, "coord_origin": "TOPLEFT"}}]}, "text": "Mike Cain is a Senior Technical Staff Member within the IBM Systems and Technology Group. He is also the founder and team leader of the DB2 for i Center of Excellence in Rochester, Minnesota US. Before his current position, he worked as an IBM AS/400 Systems Engineer and technical consultant. Before joining IBM in 1988, Mike worked as a System/38 programmer and data processing manager for a property and casualty insurance company. Mike has 26 years of experience with IBM, engaging clients and Business Partners around the world. In addition to assisting clients, he uses his knowledge and experience to influence the IBM solution, development, and support processes."}, {"label": "text", "id": 4, "page_no": 13, "cluster": {"id": 4, "label": "text", "bbox": {"l": 262.7120666503906, "t": 344.05780029296875, "r": 541.32196, "b": 450.19717, "coord_origin": "TOPLEFT"}, "confidence": 0.9859716296195984, "cells": [{"id": 21, "text": "Dan Cruikshank ", "bbox": {"l": 263.40002, "t": 344.98566, "r": 342.26331, "b": 354.19864, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "has been an IT Professional since 1972. He ", "bbox": {"l": 342.24039, "t": 344.98566, "r": 538.6994, "b": 354.19864, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "has consulted on a number of different project areas since ", "bbox": {"l": 263.40002, "t": 356.98546999999996, "r": 522.98248, "b": 366.19845999999995, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "joining IBM Rochester in 1988. Since 1993, Dan was focused ", "bbox": {"l": 263.40002, "t": 368.9852900000001, "r": 536.84882, "b": 378.19827, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "primarily on resolving IBM System ifi application and database ", "bbox": {"l": 263.40002, "t": 380.98511, "r": 541.32196, "b": 390.19809, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "performance issues at several IBM customer accounts. Since ", "bbox": {"l": 263.40002, "t": 392.98491999999993, "r": 536.4115, "b": 402.1979099999999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "1998, Dan has been one of the primary instructors for the ", "bbox": {"l": 263.40002, "t": 404.98474000000004, "r": 519.79437, "b": 414.19772, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Database Optimization Workshop. Most recently, Dan is a ", "bbox": {"l": 263.40002, "t": 416.98456, "r": 520.69763, "b": 426.19754, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "member of the DB2 for i Center of Excellence team with IBM ", "bbox": {"l": 263.40002, "t": 428.98438, "r": 532.99817, "b": 438.19736, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Rochester Lab Services. ", "bbox": {"l": 263.40002, "t": 440.98419, "r": 375.21091, "b": 450.19717, "coord_origin": "TOPLEFT"}}]}, "text": "Dan Cruikshank has been an IT Professional since 1972. He has consulted on a number of different project areas since joining IBM Rochester in 1988. Since 1993, Dan was focused primarily on resolving IBM System ifi application and database performance issues at several IBM customer accounts. Since 1998, Dan has been one of the primary instructors for the Database Optimization Workshop. Most recently, Dan is a member of the DB2 for i Center of Excellence team with IBM Rochester Lab Services."}, {"label": "text", "id": 5, "page_no": 13, "cluster": {"id": 5, "label": "text", "bbox": {"l": 262.76617431640625, "t": 462.0334167480469, "r": 541.24127, "b": 604.21465, "coord_origin": "TOPLEFT"}, "confidence": 0.9878524541854858, "cells": [{"id": 31, "text": "Jim Denton ", "bbox": {"l": 263.40002, "t": 463.00375, "r": 320.5993, "b": 472.21674, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "is a senior consultant at the IBM DB2 for i Center ", "bbox": {"l": 320.58038, "t": 463.00375, "r": 539.80682, "b": 472.21674, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "of Excellence, where his responsibilities include both teaching ", "bbox": {"l": 263.40002, "t": 475.00357, "r": 539.302, "b": 484.21655, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "courses and hands on consulting. Jim specializes in SQL ", "bbox": {"l": 263.40002, "t": 487.00339, "r": 518.37109, "b": 496.21637, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "performance, data-centric programming, and database ", "bbox": {"l": 263.40002, "t": 499.0032, "r": 507.58939, "b": 508.21619, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "modernization. Jim started his IBM career in 1981 as an S/38 ", "bbox": {"l": 263.40002, "t": 511.00302, "r": 537.43854, "b": 520.216, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "operating system programmer. Before joining the consulting ", "bbox": {"l": 263.40002, "t": 523.00284, "r": 529.47443, "b": 532.21582, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "team, his key assignments included 10 years as a systems ", "bbox": {"l": 263.40002, "t": 535.00262, "r": 525.58606, "b": 544.21564, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "performance specialist, five years as the lead \u201cJDE on i\u201d ", "bbox": {"l": 263.40002, "t": 547.00244, "r": 512.86005, "b": 556.2154400000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "analyst, three years as a consultant at the IBM Benchmark and ", "bbox": {"l": 263.40002, "t": 559.00224, "r": 541.24127, "b": 568.21524, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Briefing Center in Montpellier France, and a total of 11 years as ", "bbox": {"l": 263.40002, "t": 571.00204, "r": 541.1795, "b": 580.21504, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "an operating system developer, including five years designing ", "bbox": {"l": 263.40002, "t": 583.00185, "r": 537.2641, "b": 592.21484, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "and implementing enhancements to DB2 for i.", "bbox": {"l": 263.40002, "t": 595.00165, "r": 465.90363, "b": 604.21465, "coord_origin": "TOPLEFT"}}]}, "text": "Jim Denton is a senior consultant at the IBM DB2 for i Center of Excellence, where his responsibilities include both teaching courses and hands on consulting. Jim specializes in SQL performance, data-centric programming, and database modernization. Jim started his IBM career in 1981 as an S/38 operating system programmer. Before joining the consulting team, his key assignments included 10 years as a systems performance specialist, five years as the lead \u201cJDE on i\u201d analyst, three years as a consultant at the IBM Benchmark and Briefing Center in Montpellier France, and a total of 11 years as an operating system developer, including five years designing and implementing enhancements to DB2 for i."}, {"label": "text", "id": 6, "page_no": 13, "cluster": {"id": 6, "label": "text", "bbox": {"l": 262.9361877441406, "t": 614.0336303710938, "r": 541.1944, "b": 708.252808, "coord_origin": "TOPLEFT"}, "confidence": 0.9843889474868774, "cells": [{"id": 44, "text": "Doug Mack ", "bbox": {"l": 263.40002, "t": 615.04117, "r": 318.42407, "b": 624.2541699999999, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "is a DB2 for i and Business Intelligence Consultant ", "bbox": {"l": 318.47983, "t": 615.04117, "r": 541.1944, "b": 624.2541699999999, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "in the IBM Power Systems\u2122 Lab Services organization. ", "bbox": {"l": 263.40002, "t": 627.04097, "r": 513.45575, "b": 636.25397, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Doug\u2019s 30+ year career with IBM spans many roles, including ", "bbox": {"l": 263.40002, "t": 639.0407700000001, "r": 536.81903, "b": 648.25377, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "product development, technical sales support, Business ", "bbox": {"l": 263.40002, "t": 651.04057, "r": 512.66986, "b": 660.25357, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Intelligence Sales Specialist, and DB2 for i Product Marketing ", "bbox": {"l": 263.40002, "t": 663.0403699999999, "r": 537.38861, "b": 672.25338, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Manager. Doug is a featured speaker at User Group ", "bbox": {"l": 263.40002, "t": 675.04018, "r": 495.84451, "b": 684.25319, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "conferences and meetings, IBM Technical Conferences, and ", "bbox": {"l": 263.40002, "t": 687.03999, "r": 531.87579, "b": 696.252998, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Executive Briefings.", "bbox": {"l": 263.40002, "t": 699.039803, "r": 350.62271, "b": 708.252808, "coord_origin": "TOPLEFT"}}]}, "text": "Doug Mack is a DB2 for i and Business Intelligence Consultant in the IBM Power Systems\u2122 Lab Services organization. Doug\u2019s 30+ year career with IBM spans many roles, including product development, technical sales support, Business Intelligence Sales Specialist, and DB2 for i Product Marketing Manager. Doug is a featured speaker at User Group conferences and meetings, IBM Technical Conferences, and Executive Briefings."}, {"label": "picture", "id": 7, "page_no": 13, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 141.68251037597656, "t": 77.3314437866211, "r": 249.5221405029297, "b": 183.49258422851562, "coord_origin": "TOPLEFT"}, "confidence": 0.9875855445861816, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 8, "page_no": 13, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 141.71910095214844, "t": 192.56460571289062, "r": 251.5185546875, "b": 319.4869079589844, "coord_origin": "TOPLEFT"}, "confidence": 0.9871560335159302, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 9, "page_no": 13, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 141.89089965820312, "t": 344.6142883300781, "r": 251.38380432128906, "b": 454.1204833984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9869871139526367, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 10, "page_no": 13, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 141.69131469726562, "t": 614.610107421875, "r": 250.86129760742188, "b": 724.1473999023438, "coord_origin": "TOPLEFT"}, "confidence": 0.9869828224182129, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 11, "page_no": 13, "cluster": {"id": 11, "label": "picture", "bbox": {"l": 141.57579040527344, "t": 462.79840087890625, "r": 249.41360473632812, "b": 568.6048583984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9861478805541992, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 13, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.18641662597656, "t": 754.4242553710938, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.91111159324646, "cells": [{"id": 0, "text": "xii ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "xii"}, {"label": "page_footer", "id": 1, "page_no": 13, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.32842254638672, "t": 754.7139282226562, "r": 334.42142, "b": 763.9345703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9425985813140869, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 14, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": " Preface ", "bbox": {"l": 485.10001, "t": 755.538002, "r": 520.88135, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "xiii", "bbox": {"l": 533.34003, "t": 754.848721, "r": 547.19342, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Thanks to the following people for their contributions to this project:", "bbox": {"l": 136.79956, "t": 339.52869, "r": 432.1602500000001, "b": 348.74167, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Debra Landon", "bbox": {"l": 136.79956, "t": 361.48849, "r": 200.0416, "b": 370.70148, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "International Technical Support Organization, Rochester Center", "bbox": {"l": 136.79956, "t": 373.48830999999996, "r": 438.75391, "b": 382.70129, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Craig Aldrich, Mark Anderson, Theresa Euler, Scott Forstie, Chad Olstad", "bbox": {"l": 136.79955, "t": 395.50787, "r": 457.72974, "b": 404.72086, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "IBM Rochester Development", "bbox": {"l": 136.79955, "t": 407.50769, "r": 272.10016, "b": 416.72067, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Now you can become a published author, too!", "bbox": {"l": 64.800003, "t": 445.20071, "r": 413.15256, "b": 459.96371000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Here\u2019s an opportunity to spotlight your skills, grow your career, and become a published ", "bbox": {"l": 136.8, "t": 477.52872, "r": 525.74896, "b": 486.7417, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "author-all at the same time! Join an ITSO residency project and help write a book in your ", "bbox": {"l": 136.8, "t": 489.52853, "r": 537.30347, "b": 498.74152, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "area of expertise, while honing your experience using leading-edge technologies. Your efforts ", "bbox": {"l": 136.8, "t": 501.52835, "r": 547.23267, "b": 510.74133, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "will help to increase product acceptance and customer satisfaction, as you expand your ", "bbox": {"l": 136.8, "t": 513.52817, "r": 524.59961, "b": 522.7411500000001, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "network of technical contacts and relationships. Residencies run from two to six weeks in ", "bbox": {"l": 136.80002, "t": 525.5279800000001, "r": 532.24384, "b": 534.7409700000001, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "length, and you can participate either in person or as a remote resident working from your ", "bbox": {"l": 136.80002, "t": 537.52779, "r": 535.20209, "b": 546.74078, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "home base.", "bbox": {"l": 136.80002, "t": 549.52759, "r": 188.81511, "b": 558.74059, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Find out more about the residency program, browse the residency index, and apply online at:", "bbox": {"l": 136.80002, "t": 571.54715, "r": 546.81647, "b": 580.7601500000001, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "ibm.com", "bbox": {"l": 136.80002, "t": 588.6763599999999, "r": 171.77953, "b": 597.50092, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "/redbooks/residencies.html", "bbox": {"l": 171.77954, "t": 588.6763599999999, "r": 301.67783, "b": 597.45111, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Comments welcome", "bbox": {"l": 64.800003, "t": 626.22063, "r": 219.43166000000002, "b": 640.98363, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Your comments are important to us!", "bbox": {"l": 136.8, "t": 658.54872, "r": 294.74969, "b": 667.76172, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "We want our papers to be as helpful as possible. Send us your comments about this paper or ", "bbox": {"l": 136.8, "t": 680.50852, "r": 547.25244, "b": 689.72153, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "other IBM Redbooks publications in one of the following ways:", "bbox": {"l": 136.8, "t": 692.508331, "r": 410.18698, "b": 701.721336, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "GLYPH", "bbox": {"l": 136.8, "t": 709.697304, "r": 141.78, "b": 718.4720609999999, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Use the online ", "bbox": {"l": 151.20016, "t": 709.547897, "r": 217.90927, "b": 718.760902, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Contact us", "bbox": {"l": 217.86044, "t": 709.547897, "r": 269.52493, "b": 718.760902, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": " review Redbooks form found at:", "bbox": {"l": 269.51996, "t": 709.547897, "r": 412.55646, "b": 718.760902, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ibm.com", "bbox": {"l": 151.20013, "t": 726.677109, "r": 186.17964, "b": 735.501671, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "/redbooks", "bbox": {"l": 186.17966, "t": 726.677109, "r": 231.11916999999997, "b": 735.45187, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Tom McKinley ", "bbox": {"l": 263.39954, "t": 77.50725999999997, "r": 332.99799, "b": 86.72028, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "is an IBM Lab Services Consultant working on ", "bbox": {"l": 333.0, "t": 77.50725999999997, "r": 540.04248, "b": 86.72028, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "DB2 for IBM i in Rochester MN. His main focus is complex ", "bbox": {"l": 263.39954, "t": 89.50707999999997, "r": 522.99799, "b": 98.72009000000003, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "query performance that is associated with Business ", "bbox": {"l": 263.39954, "t": 101.50689999999997, "r": 494.28336, "b": 110.71991000000014, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Intelligence running on Very Large Databases. He worked as a ", "bbox": {"l": 263.39954, "t": 113.50671, "r": 541.15515, "b": 122.71973000000003, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "developer or performance analyst in the DB area from 1986 ", "bbox": {"l": 263.39954, "t": 125.50653000000011, "r": 528.91815, "b": 134.71954000000005, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "until 2006. Some of his major pieces of work include the ", "bbox": {"l": 263.39954, "t": 137.50635, "r": 513.48511, "b": 146.71936000000005, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Symmetric Multiple processing capabilities of DB2 for IBM i ", "bbox": {"l": 263.39954, "t": 149.50616000000002, "r": 527.07666, "b": 158.71918000000005, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "and Large Object Data types. In addition, he was on the ", "bbox": {"l": 263.39954, "t": 161.50598000000002, "r": 512.53601, "b": 170.71898999999996, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "original team that designed and built the SQL Query Engine. ", "bbox": {"l": 263.39954, "t": 173.50580000000002, "r": 532.94702, "b": 182.71880999999996, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Before his database work, he worked on Licensed Internal ", "bbox": {"l": 263.39954, "t": 185.50562000000002, "r": 523.24597, "b": 194.71862999999996, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Code for System 34 and System 36.", "bbox": {"l": 263.39954, "t": 197.50543000000005, "r": 423.67691, "b": 206.71844, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Kent Milligan ", "bbox": {"l": 263.39954, "t": 217.48517000000004, "r": 328.19531, "b": 226.69817999999998, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "is a senior DB2 consultant on the DB2 for i ", "bbox": {"l": 328.19928, "t": 217.48517000000004, "r": 519.0976, "b": 226.69817999999998, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Center of Excellence team within the IBM Lab Services and ", "bbox": {"l": 263.39954, "t": 229.48499000000004, "r": 529.25977, "b": 238.69799999999998, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Training organization. His primary responsibility is helping ", "bbox": {"l": 263.39954, "t": 241.48479999999995, "r": 520.32373, "b": 250.69781, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "software developers use the latest DB2 technologies and port ", "bbox": {"l": 263.39954, "t": 253.48461999999995, "r": 538.10938, "b": 262.69763, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "applications from other databases to DB2 for i. After graduating ", "bbox": {"l": 263.39954, "t": 265.48443999999995, "r": 541.26654, "b": 274.69745, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "from the University of Iowa, Kent spent the first eight years of ", "bbox": {"l": 263.39954, "t": 277.48425, "r": 534.98981, "b": 286.69727, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "his IBM career as a member of the DB2 development team in ", "bbox": {"l": 263.39954, "t": 289.4841, "r": 536.6889, "b": 298.69708, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "Rochester.", "bbox": {"l": 263.39954, "t": 301.48392, "r": 311.20654, "b": 310.69689999999997, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 485.10001, "t": 754.75048828125, "r": 520.88135, "b": 763.863001, "coord_origin": "TOPLEFT"}, "confidence": 0.914573073387146, "cells": [{"id": 0, "text": " Preface ", "bbox": {"l": 485.10001, "t": 755.538002, "r": 520.88135, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 532.5994262695312, "t": 754.2633056640625, "r": 547.19342, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8934566974639893, "cells": [{"id": 1, "text": "xiii", "bbox": {"l": 533.34003, "t": 754.848721, "r": 547.19342, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.6240234375, "t": 338.7327880859375, "r": 432.1602500000001, "b": 348.8023986816406, "coord_origin": "TOPLEFT"}, "confidence": 0.8790541291236877, "cells": [{"id": 2, "text": "Thanks to the following people for their contributions to this project:", "bbox": {"l": 136.79956, "t": 339.52869, "r": 432.1602500000001, "b": 348.74167, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 136.3055877685547, "t": 360.45208740234375, "r": 200.390869140625, "b": 370.70148, "coord_origin": "TOPLEFT"}, "confidence": 0.7089823484420776, "cells": [{"id": 3, "text": "Debra Landon", "bbox": {"l": 136.79956, "t": 361.48849, "r": 200.0416, "b": 370.70148, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 136.32855224609375, "t": 372.4372863769531, "r": 439.0932312011719, "b": 383.3298034667969, "coord_origin": "TOPLEFT"}, "confidence": 0.7829126119613647, "cells": [{"id": 4, "text": "International Technical Support Organization, Rochester Center", "bbox": {"l": 136.79956, "t": 373.48830999999996, "r": 438.75391, "b": 382.70129, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.09214782714844, "t": 394.6581115722656, "r": 457.72974, "b": 416.9281921386719, "coord_origin": "TOPLEFT"}, "confidence": 0.9423409700393677, "cells": [{"id": 5, "text": "Craig Aldrich, Mark Anderson, Theresa Euler, Scott Forstie, Chad Olstad", "bbox": {"l": 136.79955, "t": 395.50787, "r": 457.72974, "b": 404.72086, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "IBM Rochester Development", "bbox": {"l": 136.79955, "t": 407.50769, "r": 272.10016, "b": 416.72067, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "section_header", "bbox": {"l": 64.71363067626953, "t": 443.82012939453125, "r": 413.15256, "b": 460.31988525390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9612258076667786, "cells": [{"id": 7, "text": "Now you can become a published author, too!", "bbox": {"l": 64.800003, "t": 445.20071, "r": 413.15256, "b": 459.96371000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 135.805419921875, "t": 476.6553039550781, "r": 547.23267, "b": 558.74059, "coord_origin": "TOPLEFT"}, "confidence": 0.9876447319984436, "cells": [{"id": 8, "text": "Here\u2019s an opportunity to spotlight your skills, grow your career, and become a published ", "bbox": {"l": 136.8, "t": 477.52872, "r": 525.74896, "b": 486.7417, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "author-all at the same time! Join an ITSO residency project and help write a book in your ", "bbox": {"l": 136.8, "t": 489.52853, "r": 537.30347, "b": 498.74152, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "area of expertise, while honing your experience using leading-edge technologies. Your efforts ", "bbox": {"l": 136.8, "t": 501.52835, "r": 547.23267, "b": 510.74133, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "will help to increase product acceptance and customer satisfaction, as you expand your ", "bbox": {"l": 136.8, "t": 513.52817, "r": 524.59961, "b": 522.7411500000001, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "network of technical contacts and relationships. Residencies run from two to six weeks in ", "bbox": {"l": 136.80002, "t": 525.5279800000001, "r": 532.24384, "b": 534.7409700000001, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "length, and you can participate either in person or as a remote resident working from your ", "bbox": {"l": 136.80002, "t": 537.52779, "r": 535.20209, "b": 546.74078, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "home base.", "bbox": {"l": 136.80002, "t": 549.52759, "r": 188.81511, "b": 558.74059, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 136.59922790527344, "t": 570.6795654296875, "r": 546.81647, "b": 581.0769653320312, "coord_origin": "TOPLEFT"}, "confidence": 0.9406706094741821, "cells": [{"id": 15, "text": "Find out more about the residency program, browse the residency index, and apply online at:", "bbox": {"l": 136.80002, "t": 571.54715, "r": 546.81647, "b": 580.7601500000001, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 136.80002, "t": 587.9857788085938, "r": 301.67783, "b": 597.50092, "coord_origin": "TOPLEFT"}, "confidence": 0.8938496112823486, "cells": [{"id": 16, "text": "ibm.com", "bbox": {"l": 136.80002, "t": 588.6763599999999, "r": 171.77953, "b": 597.50092, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "/redbooks/residencies.html", "bbox": {"l": 171.77954, "t": 588.6763599999999, "r": 301.67783, "b": 597.45111, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "section_header", "bbox": {"l": 64.52783966064453, "t": 625.3417358398438, "r": 219.43166000000002, "b": 640.98363, "coord_origin": "TOPLEFT"}, "confidence": 0.9593470096588135, "cells": [{"id": 18, "text": "Comments welcome", "bbox": {"l": 64.800003, "t": 626.22063, "r": 219.43166000000002, "b": 640.98363, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 135.9565887451172, "t": 657.9795532226562, "r": 294.74969, "b": 667.8671875, "coord_origin": "TOPLEFT"}, "confidence": 0.926453173160553, "cells": [{"id": 19, "text": "Your comments are important to us!", "bbox": {"l": 136.8, "t": 658.54872, "r": 294.74969, "b": 667.76172, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 135.8791961669922, "t": 679.3858642578125, "r": 547.25244, "b": 701.721336, "coord_origin": "TOPLEFT"}, "confidence": 0.9736941456794739, "cells": [{"id": 20, "text": "We want our papers to be as helpful as possible. Send us your comments about this paper or ", "bbox": {"l": 136.8, "t": 680.50852, "r": 547.25244, "b": 689.72153, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "other IBM Redbooks publications in one of the following ways:", "bbox": {"l": 136.8, "t": 692.508331, "r": 410.18698, "b": 701.721336, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "list_item", "bbox": {"l": 135.62045288085938, "t": 708.805908203125, "r": 412.55646, "b": 718.760902, "coord_origin": "TOPLEFT"}, "confidence": 0.8550623655319214, "cells": [{"id": 22, "text": "GLYPH", "bbox": {"l": 136.8, "t": 709.697304, "r": 141.78, "b": 718.4720609999999, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Use the online ", "bbox": {"l": 151.20016, "t": 709.547897, "r": 217.90927, "b": 718.760902, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Contact us", "bbox": {"l": 217.86044, "t": 709.547897, "r": 269.52493, "b": 718.760902, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": " review Redbooks form found at:", "bbox": {"l": 269.51996, "t": 709.547897, "r": 412.55646, "b": 718.760902, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "text", "bbox": {"l": 151.20013, "t": 726.4096069335938, "r": 231.11916999999997, "b": 735.501671, "coord_origin": "TOPLEFT"}, "confidence": 0.7705531120300293, "cells": [{"id": 26, "text": "ibm.com", "bbox": {"l": 151.20013, "t": 726.677109, "r": 186.17964, "b": 735.501671, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "/redbooks", "bbox": {"l": 186.17966, "t": 726.677109, "r": 231.11916999999997, "b": 735.45187, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "text", "bbox": {"l": 262.7662658691406, "t": 76.673583984375, "r": 541.15515, "b": 206.9925079345703, "coord_origin": "TOPLEFT"}, "confidence": 0.9826179146766663, "cells": [{"id": 28, "text": "Tom McKinley ", "bbox": {"l": 263.39954, "t": 77.50725999999997, "r": 332.99799, "b": 86.72028, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "is an IBM Lab Services Consultant working on ", "bbox": {"l": 333.0, "t": 77.50725999999997, "r": 540.04248, "b": 86.72028, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "DB2 for IBM i in Rochester MN. His main focus is complex ", "bbox": {"l": 263.39954, "t": 89.50707999999997, "r": 522.99799, "b": 98.72009000000003, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "query performance that is associated with Business ", "bbox": {"l": 263.39954, "t": 101.50689999999997, "r": 494.28336, "b": 110.71991000000014, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Intelligence running on Very Large Databases. He worked as a ", "bbox": {"l": 263.39954, "t": 113.50671, "r": 541.15515, "b": 122.71973000000003, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "developer or performance analyst in the DB area from 1986 ", "bbox": {"l": 263.39954, "t": 125.50653000000011, "r": 528.91815, "b": 134.71954000000005, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "until 2006. Some of his major pieces of work include the ", "bbox": {"l": 263.39954, "t": 137.50635, "r": 513.48511, "b": 146.71936000000005, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Symmetric Multiple processing capabilities of DB2 for IBM i ", "bbox": {"l": 263.39954, "t": 149.50616000000002, "r": 527.07666, "b": 158.71918000000005, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "and Large Object Data types. In addition, he was on the ", "bbox": {"l": 263.39954, "t": 161.50598000000002, "r": 512.53601, "b": 170.71898999999996, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "original team that designed and built the SQL Query Engine. ", "bbox": {"l": 263.39954, "t": 173.50580000000002, "r": 532.94702, "b": 182.71880999999996, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Before his database work, he worked on Licensed Internal ", "bbox": {"l": 263.39954, "t": 185.50562000000002, "r": 523.24597, "b": 194.71862999999996, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Code for System 34 and System 36.", "bbox": {"l": 263.39954, "t": 197.50543000000005, "r": 423.67691, "b": 206.71844, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "text", "bbox": {"l": 262.6918029785156, "t": 216.41091918945312, "r": 541.26654, "b": 310.69689999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9823182821273804, "cells": [{"id": 40, "text": "Kent Milligan ", "bbox": {"l": 263.39954, "t": 217.48517000000004, "r": 328.19531, "b": 226.69817999999998, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "is a senior DB2 consultant on the DB2 for i ", "bbox": {"l": 328.19928, "t": 217.48517000000004, "r": 519.0976, "b": 226.69817999999998, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Center of Excellence team within the IBM Lab Services and ", "bbox": {"l": 263.39954, "t": 229.48499000000004, "r": 529.25977, "b": 238.69799999999998, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Training organization. His primary responsibility is helping ", "bbox": {"l": 263.39954, "t": 241.48479999999995, "r": 520.32373, "b": 250.69781, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "software developers use the latest DB2 technologies and port ", "bbox": {"l": 263.39954, "t": 253.48461999999995, "r": 538.10938, "b": 262.69763, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "applications from other databases to DB2 for i. After graduating ", "bbox": {"l": 263.39954, "t": 265.48443999999995, "r": 541.26654, "b": 274.69745, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "from the University of Iowa, Kent spent the first eight years of ", "bbox": {"l": 263.39954, "t": 277.48425, "r": 534.98981, "b": 286.69727, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "his IBM career as a member of the DB2 development team in ", "bbox": {"l": 263.39954, "t": 289.4841, "r": 536.6889, "b": 298.69708, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "Rochester.", "bbox": {"l": 263.39954, "t": 301.48392, "r": 311.20654, "b": 310.69689999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "picture", "bbox": {"l": 142.26431274414062, "t": 77.12178802490234, "r": 251.69140625, "b": 192.6881103515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9871392846107483, "cells": []}, {"id": 18, "label": "picture", "bbox": {"l": 142.39024353027344, "t": 216.5591278076172, "r": 251.9964141845703, "b": 326.3576965332031, "coord_origin": "TOPLEFT"}, "confidence": 0.9861040711402893, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 14, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 485.10001, "t": 754.75048828125, "r": 520.88135, "b": 763.863001, "coord_origin": "TOPLEFT"}, "confidence": 0.914573073387146, "cells": [{"id": 0, "text": " Preface ", "bbox": {"l": 485.10001, "t": 755.538002, "r": 520.88135, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Preface"}, {"label": "page_footer", "id": 1, "page_no": 14, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 532.5994262695312, "t": 754.2633056640625, "r": 547.19342, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8934566974639893, "cells": [{"id": 1, "text": "xiii", "bbox": {"l": 533.34003, "t": 754.848721, "r": 547.19342, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "xiii"}, {"label": "text", "id": 2, "page_no": 14, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.6240234375, "t": 338.7327880859375, "r": 432.1602500000001, "b": 348.8023986816406, "coord_origin": "TOPLEFT"}, "confidence": 0.8790541291236877, "cells": [{"id": 2, "text": "Thanks to the following people for their contributions to this project:", "bbox": {"l": 136.79956, "t": 339.52869, "r": 432.1602500000001, "b": 348.74167, "coord_origin": "TOPLEFT"}}]}, "text": "Thanks to the following people for their contributions to this project:"}, {"label": "text", "id": 3, "page_no": 14, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.3055877685547, "t": 360.45208740234375, "r": 200.390869140625, "b": 370.70148, "coord_origin": "TOPLEFT"}, "confidence": 0.7089823484420776, "cells": [{"id": 3, "text": "Debra Landon", "bbox": {"l": 136.79956, "t": 361.48849, "r": 200.0416, "b": 370.70148, "coord_origin": "TOPLEFT"}}]}, "text": "Debra Landon"}, {"label": "text", "id": 4, "page_no": 14, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.32855224609375, "t": 372.4372863769531, "r": 439.0932312011719, "b": 383.3298034667969, "coord_origin": "TOPLEFT"}, "confidence": 0.7829126119613647, "cells": [{"id": 4, "text": "International Technical Support Organization, Rochester Center", "bbox": {"l": 136.79956, "t": 373.48830999999996, "r": 438.75391, "b": 382.70129, "coord_origin": "TOPLEFT"}}]}, "text": "International Technical Support Organization, Rochester Center"}, {"label": "text", "id": 5, "page_no": 14, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.09214782714844, "t": 394.6581115722656, "r": 457.72974, "b": 416.9281921386719, "coord_origin": "TOPLEFT"}, "confidence": 0.9423409700393677, "cells": [{"id": 5, "text": "Craig Aldrich, Mark Anderson, Theresa Euler, Scott Forstie, Chad Olstad", "bbox": {"l": 136.79955, "t": 395.50787, "r": 457.72974, "b": 404.72086, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "IBM Rochester Development", "bbox": {"l": 136.79955, "t": 407.50769, "r": 272.10016, "b": 416.72067, "coord_origin": "TOPLEFT"}}]}, "text": "Craig Aldrich, Mark Anderson, Theresa Euler, Scott Forstie, Chad Olstad IBM Rochester Development"}, {"label": "section_header", "id": 6, "page_no": 14, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 64.71363067626953, "t": 443.82012939453125, "r": 413.15256, "b": 460.31988525390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9612258076667786, "cells": [{"id": 7, "text": "Now you can become a published author, too!", "bbox": {"l": 64.800003, "t": 445.20071, "r": 413.15256, "b": 459.96371000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Now you can become a published author, too!"}, {"label": "text", "id": 7, "page_no": 14, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.805419921875, "t": 476.6553039550781, "r": 547.23267, "b": 558.74059, "coord_origin": "TOPLEFT"}, "confidence": 0.9876447319984436, "cells": [{"id": 8, "text": "Here\u2019s an opportunity to spotlight your skills, grow your career, and become a published ", "bbox": {"l": 136.8, "t": 477.52872, "r": 525.74896, "b": 486.7417, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "author-all at the same time! Join an ITSO residency project and help write a book in your ", "bbox": {"l": 136.8, "t": 489.52853, "r": 537.30347, "b": 498.74152, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "area of expertise, while honing your experience using leading-edge technologies. Your efforts ", "bbox": {"l": 136.8, "t": 501.52835, "r": 547.23267, "b": 510.74133, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "will help to increase product acceptance and customer satisfaction, as you expand your ", "bbox": {"l": 136.8, "t": 513.52817, "r": 524.59961, "b": 522.7411500000001, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "network of technical contacts and relationships. Residencies run from two to six weeks in ", "bbox": {"l": 136.80002, "t": 525.5279800000001, "r": 532.24384, "b": 534.7409700000001, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "length, and you can participate either in person or as a remote resident working from your ", "bbox": {"l": 136.80002, "t": 537.52779, "r": 535.20209, "b": 546.74078, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "home base.", "bbox": {"l": 136.80002, "t": 549.52759, "r": 188.81511, "b": 558.74059, "coord_origin": "TOPLEFT"}}]}, "text": "Here\u2019s an opportunity to spotlight your skills, grow your career, and become a published author-all at the same time! Join an ITSO residency project and help write a book in your area of expertise, while honing your experience using leading-edge technologies. Your efforts will help to increase product acceptance and customer satisfaction, as you expand your network of technical contacts and relationships. Residencies run from two to six weeks in length, and you can participate either in person or as a remote resident working from your home base."}, {"label": "text", "id": 8, "page_no": 14, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.59922790527344, "t": 570.6795654296875, "r": 546.81647, "b": 581.0769653320312, "coord_origin": "TOPLEFT"}, "confidence": 0.9406706094741821, "cells": [{"id": 15, "text": "Find out more about the residency program, browse the residency index, and apply online at:", "bbox": {"l": 136.80002, "t": 571.54715, "r": 546.81647, "b": 580.7601500000001, "coord_origin": "TOPLEFT"}}]}, "text": "Find out more about the residency program, browse the residency index, and apply online at:"}, {"label": "text", "id": 9, "page_no": 14, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.80002, "t": 587.9857788085938, "r": 301.67783, "b": 597.50092, "coord_origin": "TOPLEFT"}, "confidence": 0.8938496112823486, "cells": [{"id": 16, "text": "ibm.com", "bbox": {"l": 136.80002, "t": 588.6763599999999, "r": 171.77953, "b": 597.50092, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "/redbooks/residencies.html", "bbox": {"l": 171.77954, "t": 588.6763599999999, "r": 301.67783, "b": 597.45111, "coord_origin": "TOPLEFT"}}]}, "text": "ibm.com /redbooks/residencies.html"}, {"label": "section_header", "id": 10, "page_no": 14, "cluster": {"id": 10, "label": "section_header", "bbox": {"l": 64.52783966064453, "t": 625.3417358398438, "r": 219.43166000000002, "b": 640.98363, "coord_origin": "TOPLEFT"}, "confidence": 0.9593470096588135, "cells": [{"id": 18, "text": "Comments welcome", "bbox": {"l": 64.800003, "t": 626.22063, "r": 219.43166000000002, "b": 640.98363, "coord_origin": "TOPLEFT"}}]}, "text": "Comments welcome"}, {"label": "text", "id": 11, "page_no": 14, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.9565887451172, "t": 657.9795532226562, "r": 294.74969, "b": 667.8671875, "coord_origin": "TOPLEFT"}, "confidence": 0.926453173160553, "cells": [{"id": 19, "text": "Your comments are important to us!", "bbox": {"l": 136.8, "t": 658.54872, "r": 294.74969, "b": 667.76172, "coord_origin": "TOPLEFT"}}]}, "text": "Your comments are important to us!"}, {"label": "text", "id": 12, "page_no": 14, "cluster": {"id": 12, "label": "text", "bbox": {"l": 135.8791961669922, "t": 679.3858642578125, "r": 547.25244, "b": 701.721336, "coord_origin": "TOPLEFT"}, "confidence": 0.9736941456794739, "cells": [{"id": 20, "text": "We want our papers to be as helpful as possible. Send us your comments about this paper or ", "bbox": {"l": 136.8, "t": 680.50852, "r": 547.25244, "b": 689.72153, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "other IBM Redbooks publications in one of the following ways:", "bbox": {"l": 136.8, "t": 692.508331, "r": 410.18698, "b": 701.721336, "coord_origin": "TOPLEFT"}}]}, "text": "We want our papers to be as helpful as possible. Send us your comments about this paper or other IBM Redbooks publications in one of the following ways:"}, {"label": "list_item", "id": 13, "page_no": 14, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 135.62045288085938, "t": 708.805908203125, "r": 412.55646, "b": 718.760902, "coord_origin": "TOPLEFT"}, "confidence": 0.8550623655319214, "cells": [{"id": 22, "text": "GLYPH", "bbox": {"l": 136.8, "t": 709.697304, "r": 141.78, "b": 718.4720609999999, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Use the online ", "bbox": {"l": 151.20016, "t": 709.547897, "r": 217.90927, "b": 718.760902, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Contact us", "bbox": {"l": 217.86044, "t": 709.547897, "r": 269.52493, "b": 718.760902, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": " review Redbooks form found at:", "bbox": {"l": 269.51996, "t": 709.547897, "r": 412.55646, "b": 718.760902, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Use the online Contact us review Redbooks form found at:"}, {"label": "text", "id": 14, "page_no": 14, "cluster": {"id": 14, "label": "text", "bbox": {"l": 151.20013, "t": 726.4096069335938, "r": 231.11916999999997, "b": 735.501671, "coord_origin": "TOPLEFT"}, "confidence": 0.7705531120300293, "cells": [{"id": 26, "text": "ibm.com", "bbox": {"l": 151.20013, "t": 726.677109, "r": 186.17964, "b": 735.501671, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "/redbooks", "bbox": {"l": 186.17966, "t": 726.677109, "r": 231.11916999999997, "b": 735.45187, "coord_origin": "TOPLEFT"}}]}, "text": "ibm.com /redbooks"}, {"label": "text", "id": 15, "page_no": 14, "cluster": {"id": 15, "label": "text", "bbox": {"l": 262.7662658691406, "t": 76.673583984375, "r": 541.15515, "b": 206.9925079345703, "coord_origin": "TOPLEFT"}, "confidence": 0.9826179146766663, "cells": [{"id": 28, "text": "Tom McKinley ", "bbox": {"l": 263.39954, "t": 77.50725999999997, "r": 332.99799, "b": 86.72028, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "is an IBM Lab Services Consultant working on ", "bbox": {"l": 333.0, "t": 77.50725999999997, "r": 540.04248, "b": 86.72028, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "DB2 for IBM i in Rochester MN. His main focus is complex ", "bbox": {"l": 263.39954, "t": 89.50707999999997, "r": 522.99799, "b": 98.72009000000003, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "query performance that is associated with Business ", "bbox": {"l": 263.39954, "t": 101.50689999999997, "r": 494.28336, "b": 110.71991000000014, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Intelligence running on Very Large Databases. He worked as a ", "bbox": {"l": 263.39954, "t": 113.50671, "r": 541.15515, "b": 122.71973000000003, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "developer or performance analyst in the DB area from 1986 ", "bbox": {"l": 263.39954, "t": 125.50653000000011, "r": 528.91815, "b": 134.71954000000005, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "until 2006. Some of his major pieces of work include the ", "bbox": {"l": 263.39954, "t": 137.50635, "r": 513.48511, "b": 146.71936000000005, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Symmetric Multiple processing capabilities of DB2 for IBM i ", "bbox": {"l": 263.39954, "t": 149.50616000000002, "r": 527.07666, "b": 158.71918000000005, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "and Large Object Data types. In addition, he was on the ", "bbox": {"l": 263.39954, "t": 161.50598000000002, "r": 512.53601, "b": 170.71898999999996, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "original team that designed and built the SQL Query Engine. ", "bbox": {"l": 263.39954, "t": 173.50580000000002, "r": 532.94702, "b": 182.71880999999996, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Before his database work, he worked on Licensed Internal ", "bbox": {"l": 263.39954, "t": 185.50562000000002, "r": 523.24597, "b": 194.71862999999996, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Code for System 34 and System 36.", "bbox": {"l": 263.39954, "t": 197.50543000000005, "r": 423.67691, "b": 206.71844, "coord_origin": "TOPLEFT"}}]}, "text": "Tom McKinley is an IBM Lab Services Consultant working on DB2 for IBM i in Rochester MN. His main focus is complex query performance that is associated with Business Intelligence running on Very Large Databases. He worked as a developer or performance analyst in the DB area from 1986 until 2006. Some of his major pieces of work include the Symmetric Multiple processing capabilities of DB2 for IBM i and Large Object Data types. In addition, he was on the original team that designed and built the SQL Query Engine. Before his database work, he worked on Licensed Internal Code for System 34 and System 36."}, {"label": "text", "id": 16, "page_no": 14, "cluster": {"id": 16, "label": "text", "bbox": {"l": 262.6918029785156, "t": 216.41091918945312, "r": 541.26654, "b": 310.69689999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9823182821273804, "cells": [{"id": 40, "text": "Kent Milligan ", "bbox": {"l": 263.39954, "t": 217.48517000000004, "r": 328.19531, "b": 226.69817999999998, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "is a senior DB2 consultant on the DB2 for i ", "bbox": {"l": 328.19928, "t": 217.48517000000004, "r": 519.0976, "b": 226.69817999999998, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Center of Excellence team within the IBM Lab Services and ", "bbox": {"l": 263.39954, "t": 229.48499000000004, "r": 529.25977, "b": 238.69799999999998, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Training organization. His primary responsibility is helping ", "bbox": {"l": 263.39954, "t": 241.48479999999995, "r": 520.32373, "b": 250.69781, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "software developers use the latest DB2 technologies and port ", "bbox": {"l": 263.39954, "t": 253.48461999999995, "r": 538.10938, "b": 262.69763, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "applications from other databases to DB2 for i. After graduating ", "bbox": {"l": 263.39954, "t": 265.48443999999995, "r": 541.26654, "b": 274.69745, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "from the University of Iowa, Kent spent the first eight years of ", "bbox": {"l": 263.39954, "t": 277.48425, "r": 534.98981, "b": 286.69727, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "his IBM career as a member of the DB2 development team in ", "bbox": {"l": 263.39954, "t": 289.4841, "r": 536.6889, "b": 298.69708, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "Rochester.", "bbox": {"l": 263.39954, "t": 301.48392, "r": 311.20654, "b": 310.69689999999997, "coord_origin": "TOPLEFT"}}]}, "text": "Kent Milligan is a senior DB2 consultant on the DB2 for i Center of Excellence team within the IBM Lab Services and Training organization. His primary responsibility is helping software developers use the latest DB2 technologies and port applications from other databases to DB2 for i. After graduating from the University of Iowa, Kent spent the first eight years of his IBM career as a member of the DB2 development team in Rochester."}, {"label": "picture", "id": 17, "page_no": 14, "cluster": {"id": 17, "label": "picture", "bbox": {"l": 142.26431274414062, "t": 77.12178802490234, "r": 251.69140625, "b": 192.6881103515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9871392846107483, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 18, "page_no": 14, "cluster": {"id": 18, "label": "picture", "bbox": {"l": 142.39024353027344, "t": 216.5591278076172, "r": 251.9964141845703, "b": 326.3576965332031, "coord_origin": "TOPLEFT"}, "confidence": 0.9861040711402893, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 14, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.6240234375, "t": 338.7327880859375, "r": 432.1602500000001, "b": 348.8023986816406, "coord_origin": "TOPLEFT"}, "confidence": 0.8790541291236877, "cells": [{"id": 2, "text": "Thanks to the following people for their contributions to this project:", "bbox": {"l": 136.79956, "t": 339.52869, "r": 432.1602500000001, "b": 348.74167, "coord_origin": "TOPLEFT"}}]}, "text": "Thanks to the following people for their contributions to this project:"}, {"label": "text", "id": 3, "page_no": 14, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.3055877685547, "t": 360.45208740234375, "r": 200.390869140625, "b": 370.70148, "coord_origin": "TOPLEFT"}, "confidence": 0.7089823484420776, "cells": [{"id": 3, "text": "Debra Landon", "bbox": {"l": 136.79956, "t": 361.48849, "r": 200.0416, "b": 370.70148, "coord_origin": "TOPLEFT"}}]}, "text": "Debra Landon"}, {"label": "text", "id": 4, "page_no": 14, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.32855224609375, "t": 372.4372863769531, "r": 439.0932312011719, "b": 383.3298034667969, "coord_origin": "TOPLEFT"}, "confidence": 0.7829126119613647, "cells": [{"id": 4, "text": "International Technical Support Organization, Rochester Center", "bbox": {"l": 136.79956, "t": 373.48830999999996, "r": 438.75391, "b": 382.70129, "coord_origin": "TOPLEFT"}}]}, "text": "International Technical Support Organization, Rochester Center"}, {"label": "text", "id": 5, "page_no": 14, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.09214782714844, "t": 394.6581115722656, "r": 457.72974, "b": 416.9281921386719, "coord_origin": "TOPLEFT"}, "confidence": 0.9423409700393677, "cells": [{"id": 5, "text": "Craig Aldrich, Mark Anderson, Theresa Euler, Scott Forstie, Chad Olstad", "bbox": {"l": 136.79955, "t": 395.50787, "r": 457.72974, "b": 404.72086, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "IBM Rochester Development", "bbox": {"l": 136.79955, "t": 407.50769, "r": 272.10016, "b": 416.72067, "coord_origin": "TOPLEFT"}}]}, "text": "Craig Aldrich, Mark Anderson, Theresa Euler, Scott Forstie, Chad Olstad IBM Rochester Development"}, {"label": "section_header", "id": 6, "page_no": 14, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 64.71363067626953, "t": 443.82012939453125, "r": 413.15256, "b": 460.31988525390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9612258076667786, "cells": [{"id": 7, "text": "Now you can become a published author, too!", "bbox": {"l": 64.800003, "t": 445.20071, "r": 413.15256, "b": 459.96371000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Now you can become a published author, too!"}, {"label": "text", "id": 7, "page_no": 14, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.805419921875, "t": 476.6553039550781, "r": 547.23267, "b": 558.74059, "coord_origin": "TOPLEFT"}, "confidence": 0.9876447319984436, "cells": [{"id": 8, "text": "Here\u2019s an opportunity to spotlight your skills, grow your career, and become a published ", "bbox": {"l": 136.8, "t": 477.52872, "r": 525.74896, "b": 486.7417, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "author-all at the same time! Join an ITSO residency project and help write a book in your ", "bbox": {"l": 136.8, "t": 489.52853, "r": 537.30347, "b": 498.74152, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "area of expertise, while honing your experience using leading-edge technologies. Your efforts ", "bbox": {"l": 136.8, "t": 501.52835, "r": 547.23267, "b": 510.74133, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "will help to increase product acceptance and customer satisfaction, as you expand your ", "bbox": {"l": 136.8, "t": 513.52817, "r": 524.59961, "b": 522.7411500000001, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "network of technical contacts and relationships. Residencies run from two to six weeks in ", "bbox": {"l": 136.80002, "t": 525.5279800000001, "r": 532.24384, "b": 534.7409700000001, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "length, and you can participate either in person or as a remote resident working from your ", "bbox": {"l": 136.80002, "t": 537.52779, "r": 535.20209, "b": 546.74078, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "home base.", "bbox": {"l": 136.80002, "t": 549.52759, "r": 188.81511, "b": 558.74059, "coord_origin": "TOPLEFT"}}]}, "text": "Here\u2019s an opportunity to spotlight your skills, grow your career, and become a published author-all at the same time! Join an ITSO residency project and help write a book in your area of expertise, while honing your experience using leading-edge technologies. Your efforts will help to increase product acceptance and customer satisfaction, as you expand your network of technical contacts and relationships. Residencies run from two to six weeks in length, and you can participate either in person or as a remote resident working from your home base."}, {"label": "text", "id": 8, "page_no": 14, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.59922790527344, "t": 570.6795654296875, "r": 546.81647, "b": 581.0769653320312, "coord_origin": "TOPLEFT"}, "confidence": 0.9406706094741821, "cells": [{"id": 15, "text": "Find out more about the residency program, browse the residency index, and apply online at:", "bbox": {"l": 136.80002, "t": 571.54715, "r": 546.81647, "b": 580.7601500000001, "coord_origin": "TOPLEFT"}}]}, "text": "Find out more about the residency program, browse the residency index, and apply online at:"}, {"label": "text", "id": 9, "page_no": 14, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.80002, "t": 587.9857788085938, "r": 301.67783, "b": 597.50092, "coord_origin": "TOPLEFT"}, "confidence": 0.8938496112823486, "cells": [{"id": 16, "text": "ibm.com", "bbox": {"l": 136.80002, "t": 588.6763599999999, "r": 171.77953, "b": 597.50092, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "/redbooks/residencies.html", "bbox": {"l": 171.77954, "t": 588.6763599999999, "r": 301.67783, "b": 597.45111, "coord_origin": "TOPLEFT"}}]}, "text": "ibm.com /redbooks/residencies.html"}, {"label": "section_header", "id": 10, "page_no": 14, "cluster": {"id": 10, "label": "section_header", "bbox": {"l": 64.52783966064453, "t": 625.3417358398438, "r": 219.43166000000002, "b": 640.98363, "coord_origin": "TOPLEFT"}, "confidence": 0.9593470096588135, "cells": [{"id": 18, "text": "Comments welcome", "bbox": {"l": 64.800003, "t": 626.22063, "r": 219.43166000000002, "b": 640.98363, "coord_origin": "TOPLEFT"}}]}, "text": "Comments welcome"}, {"label": "text", "id": 11, "page_no": 14, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.9565887451172, "t": 657.9795532226562, "r": 294.74969, "b": 667.8671875, "coord_origin": "TOPLEFT"}, "confidence": 0.926453173160553, "cells": [{"id": 19, "text": "Your comments are important to us!", "bbox": {"l": 136.8, "t": 658.54872, "r": 294.74969, "b": 667.76172, "coord_origin": "TOPLEFT"}}]}, "text": "Your comments are important to us!"}, {"label": "text", "id": 12, "page_no": 14, "cluster": {"id": 12, "label": "text", "bbox": {"l": 135.8791961669922, "t": 679.3858642578125, "r": 547.25244, "b": 701.721336, "coord_origin": "TOPLEFT"}, "confidence": 0.9736941456794739, "cells": [{"id": 20, "text": "We want our papers to be as helpful as possible. Send us your comments about this paper or ", "bbox": {"l": 136.8, "t": 680.50852, "r": 547.25244, "b": 689.72153, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "other IBM Redbooks publications in one of the following ways:", "bbox": {"l": 136.8, "t": 692.508331, "r": 410.18698, "b": 701.721336, "coord_origin": "TOPLEFT"}}]}, "text": "We want our papers to be as helpful as possible. Send us your comments about this paper or other IBM Redbooks publications in one of the following ways:"}, {"label": "list_item", "id": 13, "page_no": 14, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 135.62045288085938, "t": 708.805908203125, "r": 412.55646, "b": 718.760902, "coord_origin": "TOPLEFT"}, "confidence": 0.8550623655319214, "cells": [{"id": 22, "text": "GLYPH", "bbox": {"l": 136.8, "t": 709.697304, "r": 141.78, "b": 718.4720609999999, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Use the online ", "bbox": {"l": 151.20016, "t": 709.547897, "r": 217.90927, "b": 718.760902, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Contact us", "bbox": {"l": 217.86044, "t": 709.547897, "r": 269.52493, "b": 718.760902, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": " review Redbooks form found at:", "bbox": {"l": 269.51996, "t": 709.547897, "r": 412.55646, "b": 718.760902, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Use the online Contact us review Redbooks form found at:"}, {"label": "text", "id": 14, "page_no": 14, "cluster": {"id": 14, "label": "text", "bbox": {"l": 151.20013, "t": 726.4096069335938, "r": 231.11916999999997, "b": 735.501671, "coord_origin": "TOPLEFT"}, "confidence": 0.7705531120300293, "cells": [{"id": 26, "text": "ibm.com", "bbox": {"l": 151.20013, "t": 726.677109, "r": 186.17964, "b": 735.501671, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "/redbooks", "bbox": {"l": 186.17966, "t": 726.677109, "r": 231.11916999999997, "b": 735.45187, "coord_origin": "TOPLEFT"}}]}, "text": "ibm.com /redbooks"}, {"label": "text", "id": 15, "page_no": 14, "cluster": {"id": 15, "label": "text", "bbox": {"l": 262.7662658691406, "t": 76.673583984375, "r": 541.15515, "b": 206.9925079345703, "coord_origin": "TOPLEFT"}, "confidence": 0.9826179146766663, "cells": [{"id": 28, "text": "Tom McKinley ", "bbox": {"l": 263.39954, "t": 77.50725999999997, "r": 332.99799, "b": 86.72028, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "is an IBM Lab Services Consultant working on ", "bbox": {"l": 333.0, "t": 77.50725999999997, "r": 540.04248, "b": 86.72028, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "DB2 for IBM i in Rochester MN. His main focus is complex ", "bbox": {"l": 263.39954, "t": 89.50707999999997, "r": 522.99799, "b": 98.72009000000003, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "query performance that is associated with Business ", "bbox": {"l": 263.39954, "t": 101.50689999999997, "r": 494.28336, "b": 110.71991000000014, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Intelligence running on Very Large Databases. He worked as a ", "bbox": {"l": 263.39954, "t": 113.50671, "r": 541.15515, "b": 122.71973000000003, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "developer or performance analyst in the DB area from 1986 ", "bbox": {"l": 263.39954, "t": 125.50653000000011, "r": 528.91815, "b": 134.71954000000005, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "until 2006. Some of his major pieces of work include the ", "bbox": {"l": 263.39954, "t": 137.50635, "r": 513.48511, "b": 146.71936000000005, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Symmetric Multiple processing capabilities of DB2 for IBM i ", "bbox": {"l": 263.39954, "t": 149.50616000000002, "r": 527.07666, "b": 158.71918000000005, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "and Large Object Data types. In addition, he was on the ", "bbox": {"l": 263.39954, "t": 161.50598000000002, "r": 512.53601, "b": 170.71898999999996, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "original team that designed and built the SQL Query Engine. ", "bbox": {"l": 263.39954, "t": 173.50580000000002, "r": 532.94702, "b": 182.71880999999996, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Before his database work, he worked on Licensed Internal ", "bbox": {"l": 263.39954, "t": 185.50562000000002, "r": 523.24597, "b": 194.71862999999996, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Code for System 34 and System 36.", "bbox": {"l": 263.39954, "t": 197.50543000000005, "r": 423.67691, "b": 206.71844, "coord_origin": "TOPLEFT"}}]}, "text": "Tom McKinley is an IBM Lab Services Consultant working on DB2 for IBM i in Rochester MN. His main focus is complex query performance that is associated with Business Intelligence running on Very Large Databases. He worked as a developer or performance analyst in the DB area from 1986 until 2006. Some of his major pieces of work include the Symmetric Multiple processing capabilities of DB2 for IBM i and Large Object Data types. In addition, he was on the original team that designed and built the SQL Query Engine. Before his database work, he worked on Licensed Internal Code for System 34 and System 36."}, {"label": "text", "id": 16, "page_no": 14, "cluster": {"id": 16, "label": "text", "bbox": {"l": 262.6918029785156, "t": 216.41091918945312, "r": 541.26654, "b": 310.69689999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9823182821273804, "cells": [{"id": 40, "text": "Kent Milligan ", "bbox": {"l": 263.39954, "t": 217.48517000000004, "r": 328.19531, "b": 226.69817999999998, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "is a senior DB2 consultant on the DB2 for i ", "bbox": {"l": 328.19928, "t": 217.48517000000004, "r": 519.0976, "b": 226.69817999999998, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Center of Excellence team within the IBM Lab Services and ", "bbox": {"l": 263.39954, "t": 229.48499000000004, "r": 529.25977, "b": 238.69799999999998, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Training organization. His primary responsibility is helping ", "bbox": {"l": 263.39954, "t": 241.48479999999995, "r": 520.32373, "b": 250.69781, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "software developers use the latest DB2 technologies and port ", "bbox": {"l": 263.39954, "t": 253.48461999999995, "r": 538.10938, "b": 262.69763, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "applications from other databases to DB2 for i. After graduating ", "bbox": {"l": 263.39954, "t": 265.48443999999995, "r": 541.26654, "b": 274.69745, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "from the University of Iowa, Kent spent the first eight years of ", "bbox": {"l": 263.39954, "t": 277.48425, "r": 534.98981, "b": 286.69727, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "his IBM career as a member of the DB2 development team in ", "bbox": {"l": 263.39954, "t": 289.4841, "r": 536.6889, "b": 298.69708, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "Rochester.", "bbox": {"l": 263.39954, "t": 301.48392, "r": 311.20654, "b": 310.69689999999997, "coord_origin": "TOPLEFT"}}]}, "text": "Kent Milligan is a senior DB2 consultant on the DB2 for i Center of Excellence team within the IBM Lab Services and Training organization. His primary responsibility is helping software developers use the latest DB2 technologies and port applications from other databases to DB2 for i. After graduating from the University of Iowa, Kent spent the first eight years of his IBM career as a member of the DB2 development team in Rochester."}, {"label": "picture", "id": 17, "page_no": 14, "cluster": {"id": 17, "label": "picture", "bbox": {"l": 142.26431274414062, "t": 77.12178802490234, "r": 251.69140625, "b": 192.6881103515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9871392846107483, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 18, "page_no": 14, "cluster": {"id": 18, "label": "picture", "bbox": {"l": 142.39024353027344, "t": 216.5591278076172, "r": 251.9964141845703, "b": 326.3576965332031, "coord_origin": "TOPLEFT"}, "confidence": 0.9861040711402893, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 14, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 485.10001, "t": 754.75048828125, "r": 520.88135, "b": 763.863001, "coord_origin": "TOPLEFT"}, "confidence": 0.914573073387146, "cells": [{"id": 0, "text": " Preface ", "bbox": {"l": 485.10001, "t": 755.538002, "r": 520.88135, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Preface"}, {"label": "page_footer", "id": 1, "page_no": 14, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 532.5994262695312, "t": 754.2633056640625, "r": 547.19342, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8934566974639893, "cells": [{"id": 1, "text": "xiii", "bbox": {"l": 533.34003, "t": 754.848721, "r": 547.19342, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "xiii"}]}}, {"page_no": 15, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "xiv ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 81.162003, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 96.180305, "t": 755.538002, "r": 337.03378, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "GLYPH", "bbox": {"l": 136.8, "t": 71.65808000000015, "r": 141.78, "b": 80.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Send your comments in an email to:", "bbox": {"l": 151.20016, "t": 71.50867000000005, "r": 310.37393, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "redbooks@us.ibm.com", "bbox": {"l": 151.20016, "t": 88.63788000000011, "r": 246.11894, "b": 97.41265999999996, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 105.67742999999996, "r": 141.78, "b": 114.45221000000004, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Mail your comments to:", "bbox": {"l": 151.20016, "t": 105.52801999999997, "r": 254.27019999999996, "b": 114.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "IBM Corporation, International Technical Support Organization", "bbox": {"l": 151.20016, "t": 122.50780999999995, "r": 426.99243, "b": 131.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Dept. HYTD Mail Station P099", "bbox": {"l": 151.20016, "t": 134.50762999999995, "r": 286.11533, "b": 143.72064, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "2455 South Road", "bbox": {"l": 151.20016, "t": 146.50744999999995, "r": 229.02261, "b": 155.72046, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Poughkeepsie, NY 12601-5400", "bbox": {"l": 151.20016, "t": 158.50725999999997, "r": 289.45789, "b": 167.72028, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Stay connected to IBM Redbooks", "bbox": {"l": 64.800003, "t": 196.20068000000003, "r": 317.65109, "b": 210.96367999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "GLYPH", "bbox": {"l": 136.8, "t": 228.67809999999997, "r": 141.78, "b": 237.45288000000005, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Find us on Facebook:", "bbox": {"l": 151.20016, "t": 228.52868999999998, "r": 246.83711000000002, "b": 237.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "http://www.facebook.com/IBMRedbooks", "bbox": {"l": 151.20016, "t": 245.65790000000004, "r": 326.09775, "b": 254.43268, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 262.6377, "r": 141.78, "b": 271.41247999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Follow us on Twitter:", "bbox": {"l": 151.20016, "t": 262.48828000000003, "r": 241.52239999999998, "b": 271.70129, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "http://twitter.com/ibmredbooks", "bbox": {"l": 151.20016, "t": 279.67731000000003, "r": 301.07822, "b": 288.45206, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "GLYPH", "bbox": {"l": 136.8, "t": 296.65707000000003, "r": 141.78, "b": 305.43184999999994, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Look for us on LinkedIn:", "bbox": {"l": 151.20016, "t": 296.50769, "r": 257.42651, "b": 305.72067, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "http://www.linkedin.com/groups?home=&gid=2130806", "bbox": {"l": 151.20016, "t": 313.63687, "r": 391.07678, "b": 322.41165, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "GLYPH", "bbox": {"l": 136.8, "t": 330.67645, "r": 141.78, "b": 339.45123, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Explore new Redbooks publications, residencies, and workshops with the IBM Redbooks ", "bbox": {"l": 151.20016, "t": 330.52707, "r": 546.2179, "b": 339.74005, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "weekly newsletter:", "bbox": {"l": 151.20016, "t": 342.52689, "r": 232.82335, "b": 351.73986999999994, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "https://www.redbooks.ibm.com/Redbooks.nsf/subscribe?OpenForm", "bbox": {"l": 151.20016, "t": 359.65607, "r": 451.01605, "b": 368.43085, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "GLYPH", "bbox": {"l": 136.8, "t": 376.63586000000004, "r": 141.78, "b": 385.41063999999994, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Stay current on recent Redbooks publications with RSS Feeds:", "bbox": {"l": 151.20016, "t": 376.4864799999999, "r": 429.34805000000006, "b": 385.69946, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "http://www.redbooks.ibm.com/rss.html", "bbox": {"l": 151.20016, "t": 393.67545, "r": 331.07773, "b": 402.45023, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.0907974243164, "t": 754.5955200195312, "r": 81.162003, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9144188761711121, "cells": [{"id": 0, "text": "xiv ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 81.162003, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 95.71053314208984, "t": 754.6729736328125, "r": 337.03378, "b": 763.97509765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9409525394439697, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 96.180305, "t": 755.538002, "r": 337.03378, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 135.5431365966797, "t": 70.70941925048828, "r": 310.37393, "b": 81.28385162353516, "coord_origin": "TOPLEFT"}, "confidence": 0.8883165717124939, "cells": [{"id": 2, "text": "GLYPH", "bbox": {"l": 136.8, "t": 71.65808000000015, "r": 141.78, "b": 80.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Send your comments in an email to:", "bbox": {"l": 151.20016, "t": 71.50867000000005, "r": 310.37393, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 150.99362182617188, "t": 87.82772064208984, "r": 246.22007751464844, "b": 97.41265999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.6984229683876038, "cells": [{"id": 4, "text": "redbooks@us.ibm.com", "bbox": {"l": 151.20016, "t": 88.63788000000011, "r": 246.11894, "b": 97.41265999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 135.64413452148438, "t": 104.9468002319336, "r": 254.27019999999996, "b": 114.9759292602539, "coord_origin": "TOPLEFT"}, "confidence": 0.8724080324172974, "cells": [{"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 105.67742999999996, "r": 141.78, "b": 114.45221000000004, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Mail your comments to:", "bbox": {"l": 151.20016, "t": 105.52801999999997, "r": 254.27019999999996, "b": 114.74103000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 150.4449005126953, "t": 120.91980743408203, "r": 426.99243, "b": 167.9119873046875, "coord_origin": "TOPLEFT"}, "confidence": 0.8001936674118042, "cells": [{"id": 7, "text": "IBM Corporation, International Technical Support Organization", "bbox": {"l": 151.20016, "t": 122.50780999999995, "r": 426.99243, "b": 131.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Dept. HYTD Mail Station P099", "bbox": {"l": 151.20016, "t": 134.50762999999995, "r": 286.11533, "b": 143.72064, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "2455 South Road", "bbox": {"l": 151.20016, "t": 146.50744999999995, "r": 229.02261, "b": 155.72046, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Poughkeepsie, NY 12601-5400", "bbox": {"l": 151.20016, "t": 158.50725999999997, "r": 289.45789, "b": 167.72028, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "section_header", "bbox": {"l": 64.44961547851562, "t": 194.60934448242188, "r": 317.65109, "b": 210.96367999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9598472118377686, "cells": [{"id": 11, "text": "Stay connected to IBM Redbooks", "bbox": {"l": 64.800003, "t": 196.20068000000003, "r": 317.65109, "b": 210.96367999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.58946228027344, "t": 227.83482360839844, "r": 246.83711000000002, "b": 237.74170000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.8748195767402649, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.8, "t": 228.67809999999997, "r": 141.78, "b": 237.45288000000005, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Find us on Facebook:", "bbox": {"l": 151.20016, "t": 228.52868999999998, "r": 246.83711000000002, "b": 237.74170000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 150.674072265625, "t": 244.8909912109375, "r": 326.09775, "b": 254.91514587402344, "coord_origin": "TOPLEFT"}, "confidence": 0.7252531051635742, "cells": [{"id": 14, "text": "http://www.facebook.com/IBMRedbooks", "bbox": {"l": 151.20016, "t": 245.65790000000004, "r": 326.09775, "b": 254.43268, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.61866760253906, "t": 261.4954833984375, "r": 241.52239999999998, "b": 271.70129, "coord_origin": "TOPLEFT"}, "confidence": 0.8754413723945618, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 262.6377, "r": 141.78, "b": 271.41247999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Follow us on Twitter:", "bbox": {"l": 151.20016, "t": 262.48828000000003, "r": 241.52239999999998, "b": 271.70129, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 150.70498657226562, "t": 278.7747497558594, "r": 301.07822, "b": 288.4688720703125, "coord_origin": "TOPLEFT"}, "confidence": 0.6634963750839233, "cells": [{"id": 17, "text": "http://twitter.com/ibmredbooks", "bbox": {"l": 151.20016, "t": 279.67731000000003, "r": 301.07822, "b": 288.45206, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 135.6381072998047, "t": 295.406982421875, "r": 257.42651, "b": 305.72067, "coord_origin": "TOPLEFT"}, "confidence": 0.8954482078552246, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.8, "t": 296.65707000000003, "r": 141.78, "b": 305.43184999999994, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Look for us on LinkedIn:", "bbox": {"l": 151.20016, "t": 296.50769, "r": 257.42651, "b": 305.72067, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 150.5355224609375, "t": 312.7005920410156, "r": 391.07678, "b": 322.6709289550781, "coord_origin": "TOPLEFT"}, "confidence": 0.7177077531814575, "cells": [{"id": 20, "text": "http://www.linkedin.com/groups?home=&gid=2130806", "bbox": {"l": 151.20016, "t": 313.63687, "r": 391.07678, "b": 322.41165, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "list_item", "bbox": {"l": 135.53648376464844, "t": 330.0694580078125, "r": 546.2179, "b": 352.36749267578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9449265599250793, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.8, "t": 330.67645, "r": 141.78, "b": 339.45123, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Explore new Redbooks publications, residencies, and workshops with the IBM Redbooks ", "bbox": {"l": 151.20016, "t": 330.52707, "r": 546.2179, "b": 339.74005, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "weekly newsletter:", "bbox": {"l": 151.20016, "t": 342.52689, "r": 232.82335, "b": 351.73986999999994, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "text", "bbox": {"l": 150.64300537109375, "t": 358.7694091796875, "r": 451.45623779296875, "b": 368.8676452636719, "coord_origin": "TOPLEFT"}, "confidence": 0.7377406358718872, "cells": [{"id": 24, "text": "https://www.redbooks.ibm.com/Redbooks.nsf/subscribe?OpenForm", "bbox": {"l": 151.20016, "t": 359.65607, "r": 451.01605, "b": 368.43085, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "list_item", "bbox": {"l": 135.8739471435547, "t": 375.3260498046875, "r": 429.34805000000006, "b": 385.69946, "coord_origin": "TOPLEFT"}, "confidence": 0.9105416536331177, "cells": [{"id": 25, "text": "GLYPH", "bbox": {"l": 136.8, "t": 376.63586000000004, "r": 141.78, "b": 385.41063999999994, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Stay current on recent Redbooks publications with RSS Feeds:", "bbox": {"l": 151.20016, "t": 376.4864799999999, "r": 429.34805000000006, "b": 385.69946, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "text", "bbox": {"l": 150.6341552734375, "t": 392.9015197753906, "r": 331.07773, "b": 402.52935791015625, "coord_origin": "TOPLEFT"}, "confidence": 0.766843855381012, "cells": [{"id": 27, "text": "http://www.redbooks.ibm.com/rss.html", "bbox": {"l": 151.20016, "t": 393.67545, "r": 331.07773, "b": 402.45023, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 15, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.0907974243164, "t": 754.5955200195312, "r": 81.162003, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9144188761711121, "cells": [{"id": 0, "text": "xiv ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 81.162003, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "xiv"}, {"label": "page_footer", "id": 1, "page_no": 15, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 95.71053314208984, "t": 754.6729736328125, "r": 337.03378, "b": 763.97509765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9409525394439697, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 96.180305, "t": 755.538002, "r": 337.03378, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "list_item", "id": 2, "page_no": 15, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.5431365966797, "t": 70.70941925048828, "r": 310.37393, "b": 81.28385162353516, "coord_origin": "TOPLEFT"}, "confidence": 0.8883165717124939, "cells": [{"id": 2, "text": "GLYPH", "bbox": {"l": 136.8, "t": 71.65808000000015, "r": 141.78, "b": 80.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Send your comments in an email to:", "bbox": {"l": 151.20016, "t": 71.50867000000005, "r": 310.37393, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Send your comments in an email to:"}, {"label": "text", "id": 3, "page_no": 15, "cluster": {"id": 3, "label": "text", "bbox": {"l": 150.99362182617188, "t": 87.82772064208984, "r": 246.22007751464844, "b": 97.41265999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.6984229683876038, "cells": [{"id": 4, "text": "redbooks@us.ibm.com", "bbox": {"l": 151.20016, "t": 88.63788000000011, "r": 246.11894, "b": 97.41265999999996, "coord_origin": "TOPLEFT"}}]}, "text": "redbooks@us.ibm.com"}, {"label": "list_item", "id": 4, "page_no": 15, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.64413452148438, "t": 104.9468002319336, "r": 254.27019999999996, "b": 114.9759292602539, "coord_origin": "TOPLEFT"}, "confidence": 0.8724080324172974, "cells": [{"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 105.67742999999996, "r": 141.78, "b": 114.45221000000004, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Mail your comments to:", "bbox": {"l": 151.20016, "t": 105.52801999999997, "r": 254.27019999999996, "b": 114.74103000000002, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Mail your comments to:"}, {"label": "text", "id": 5, "page_no": 15, "cluster": {"id": 5, "label": "text", "bbox": {"l": 150.4449005126953, "t": 120.91980743408203, "r": 426.99243, "b": 167.9119873046875, "coord_origin": "TOPLEFT"}, "confidence": 0.8001936674118042, "cells": [{"id": 7, "text": "IBM Corporation, International Technical Support Organization", "bbox": {"l": 151.20016, "t": 122.50780999999995, "r": 426.99243, "b": 131.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Dept. HYTD Mail Station P099", "bbox": {"l": 151.20016, "t": 134.50762999999995, "r": 286.11533, "b": 143.72064, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "2455 South Road", "bbox": {"l": 151.20016, "t": 146.50744999999995, "r": 229.02261, "b": 155.72046, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Poughkeepsie, NY 12601-5400", "bbox": {"l": 151.20016, "t": 158.50725999999997, "r": 289.45789, "b": 167.72028, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Corporation, International Technical Support Organization Dept. HYTD Mail Station P099 2455 South Road Poughkeepsie, NY 12601-5400"}, {"label": "section_header", "id": 6, "page_no": 15, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 64.44961547851562, "t": 194.60934448242188, "r": 317.65109, "b": 210.96367999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9598472118377686, "cells": [{"id": 11, "text": "Stay connected to IBM Redbooks", "bbox": {"l": 64.800003, "t": 196.20068000000003, "r": 317.65109, "b": 210.96367999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Stay connected to IBM Redbooks"}, {"label": "list_item", "id": 7, "page_no": 15, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.58946228027344, "t": 227.83482360839844, "r": 246.83711000000002, "b": 237.74170000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.8748195767402649, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.8, "t": 228.67809999999997, "r": 141.78, "b": 237.45288000000005, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Find us on Facebook:", "bbox": {"l": 151.20016, "t": 228.52868999999998, "r": 246.83711000000002, "b": 237.74170000000004, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Find us on Facebook:"}, {"label": "text", "id": 8, "page_no": 15, "cluster": {"id": 8, "label": "text", "bbox": {"l": 150.674072265625, "t": 244.8909912109375, "r": 326.09775, "b": 254.91514587402344, "coord_origin": "TOPLEFT"}, "confidence": 0.7252531051635742, "cells": [{"id": 14, "text": "http://www.facebook.com/IBMRedbooks", "bbox": {"l": 151.20016, "t": 245.65790000000004, "r": 326.09775, "b": 254.43268, "coord_origin": "TOPLEFT"}}]}, "text": "http://www.facebook.com/IBMRedbooks"}, {"label": "list_item", "id": 9, "page_no": 15, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.61866760253906, "t": 261.4954833984375, "r": 241.52239999999998, "b": 271.70129, "coord_origin": "TOPLEFT"}, "confidence": 0.8754413723945618, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 262.6377, "r": 141.78, "b": 271.41247999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Follow us on Twitter:", "bbox": {"l": 151.20016, "t": 262.48828000000003, "r": 241.52239999999998, "b": 271.70129, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Follow us on Twitter:"}, {"label": "text", "id": 10, "page_no": 15, "cluster": {"id": 10, "label": "text", "bbox": {"l": 150.70498657226562, "t": 278.7747497558594, "r": 301.07822, "b": 288.4688720703125, "coord_origin": "TOPLEFT"}, "confidence": 0.6634963750839233, "cells": [{"id": 17, "text": "http://twitter.com/ibmredbooks", "bbox": {"l": 151.20016, "t": 279.67731000000003, "r": 301.07822, "b": 288.45206, "coord_origin": "TOPLEFT"}}]}, "text": "http://twitter.com/ibmredbooks"}, {"label": "list_item", "id": 11, "page_no": 15, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.6381072998047, "t": 295.406982421875, "r": 257.42651, "b": 305.72067, "coord_origin": "TOPLEFT"}, "confidence": 0.8954482078552246, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.8, "t": 296.65707000000003, "r": 141.78, "b": 305.43184999999994, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Look for us on LinkedIn:", "bbox": {"l": 151.20016, "t": 296.50769, "r": 257.42651, "b": 305.72067, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Look for us on LinkedIn:"}, {"label": "text", "id": 12, "page_no": 15, "cluster": {"id": 12, "label": "text", "bbox": {"l": 150.5355224609375, "t": 312.7005920410156, "r": 391.07678, "b": 322.6709289550781, "coord_origin": "TOPLEFT"}, "confidence": 0.7177077531814575, "cells": [{"id": 20, "text": "http://www.linkedin.com/groups?home=&gid=2130806", "bbox": {"l": 151.20016, "t": 313.63687, "r": 391.07678, "b": 322.41165, "coord_origin": "TOPLEFT"}}]}, "text": "http://www.linkedin.com/groups?home=&gid=2130806"}, {"label": "list_item", "id": 13, "page_no": 15, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 135.53648376464844, "t": 330.0694580078125, "r": 546.2179, "b": 352.36749267578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9449265599250793, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.8, "t": 330.67645, "r": 141.78, "b": 339.45123, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Explore new Redbooks publications, residencies, and workshops with the IBM Redbooks ", "bbox": {"l": 151.20016, "t": 330.52707, "r": 546.2179, "b": 339.74005, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "weekly newsletter:", "bbox": {"l": 151.20016, "t": 342.52689, "r": 232.82335, "b": 351.73986999999994, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Explore new Redbooks publications, residencies, and workshops with the IBM Redbooks weekly newsletter:"}, {"label": "text", "id": 14, "page_no": 15, "cluster": {"id": 14, "label": "text", "bbox": {"l": 150.64300537109375, "t": 358.7694091796875, "r": 451.45623779296875, "b": 368.8676452636719, "coord_origin": "TOPLEFT"}, "confidence": 0.7377406358718872, "cells": [{"id": 24, "text": "https://www.redbooks.ibm.com/Redbooks.nsf/subscribe?OpenForm", "bbox": {"l": 151.20016, "t": 359.65607, "r": 451.01605, "b": 368.43085, "coord_origin": "TOPLEFT"}}]}, "text": "https://www.redbooks.ibm.com/Redbooks.nsf/subscribe?OpenForm"}, {"label": "list_item", "id": 15, "page_no": 15, "cluster": {"id": 15, "label": "list_item", "bbox": {"l": 135.8739471435547, "t": 375.3260498046875, "r": 429.34805000000006, "b": 385.69946, "coord_origin": "TOPLEFT"}, "confidence": 0.9105416536331177, "cells": [{"id": 25, "text": "GLYPH", "bbox": {"l": 136.8, "t": 376.63586000000004, "r": 141.78, "b": 385.41063999999994, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Stay current on recent Redbooks publications with RSS Feeds:", "bbox": {"l": 151.20016, "t": 376.4864799999999, "r": 429.34805000000006, "b": 385.69946, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Stay current on recent Redbooks publications with RSS Feeds:"}, {"label": "text", "id": 16, "page_no": 15, "cluster": {"id": 16, "label": "text", "bbox": {"l": 150.6341552734375, "t": 392.9015197753906, "r": 331.07773, "b": 402.52935791015625, "coord_origin": "TOPLEFT"}, "confidence": 0.766843855381012, "cells": [{"id": 27, "text": "http://www.redbooks.ibm.com/rss.html", "bbox": {"l": 151.20016, "t": 393.67545, "r": 331.07773, "b": 402.45023, "coord_origin": "TOPLEFT"}}]}, "text": "http://www.redbooks.ibm.com/rss.html"}], "body": [{"label": "list_item", "id": 2, "page_no": 15, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.5431365966797, "t": 70.70941925048828, "r": 310.37393, "b": 81.28385162353516, "coord_origin": "TOPLEFT"}, "confidence": 0.8883165717124939, "cells": [{"id": 2, "text": "GLYPH", "bbox": {"l": 136.8, "t": 71.65808000000015, "r": 141.78, "b": 80.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Send your comments in an email to:", "bbox": {"l": 151.20016, "t": 71.50867000000005, "r": 310.37393, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Send your comments in an email to:"}, {"label": "text", "id": 3, "page_no": 15, "cluster": {"id": 3, "label": "text", "bbox": {"l": 150.99362182617188, "t": 87.82772064208984, "r": 246.22007751464844, "b": 97.41265999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.6984229683876038, "cells": [{"id": 4, "text": "redbooks@us.ibm.com", "bbox": {"l": 151.20016, "t": 88.63788000000011, "r": 246.11894, "b": 97.41265999999996, "coord_origin": "TOPLEFT"}}]}, "text": "redbooks@us.ibm.com"}, {"label": "list_item", "id": 4, "page_no": 15, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.64413452148438, "t": 104.9468002319336, "r": 254.27019999999996, "b": 114.9759292602539, "coord_origin": "TOPLEFT"}, "confidence": 0.8724080324172974, "cells": [{"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 105.67742999999996, "r": 141.78, "b": 114.45221000000004, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Mail your comments to:", "bbox": {"l": 151.20016, "t": 105.52801999999997, "r": 254.27019999999996, "b": 114.74103000000002, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Mail your comments to:"}, {"label": "text", "id": 5, "page_no": 15, "cluster": {"id": 5, "label": "text", "bbox": {"l": 150.4449005126953, "t": 120.91980743408203, "r": 426.99243, "b": 167.9119873046875, "coord_origin": "TOPLEFT"}, "confidence": 0.8001936674118042, "cells": [{"id": 7, "text": "IBM Corporation, International Technical Support Organization", "bbox": {"l": 151.20016, "t": 122.50780999999995, "r": 426.99243, "b": 131.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Dept. HYTD Mail Station P099", "bbox": {"l": 151.20016, "t": 134.50762999999995, "r": 286.11533, "b": 143.72064, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "2455 South Road", "bbox": {"l": 151.20016, "t": 146.50744999999995, "r": 229.02261, "b": 155.72046, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Poughkeepsie, NY 12601-5400", "bbox": {"l": 151.20016, "t": 158.50725999999997, "r": 289.45789, "b": 167.72028, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Corporation, International Technical Support Organization Dept. HYTD Mail Station P099 2455 South Road Poughkeepsie, NY 12601-5400"}, {"label": "section_header", "id": 6, "page_no": 15, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 64.44961547851562, "t": 194.60934448242188, "r": 317.65109, "b": 210.96367999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9598472118377686, "cells": [{"id": 11, "text": "Stay connected to IBM Redbooks", "bbox": {"l": 64.800003, "t": 196.20068000000003, "r": 317.65109, "b": 210.96367999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Stay connected to IBM Redbooks"}, {"label": "list_item", "id": 7, "page_no": 15, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.58946228027344, "t": 227.83482360839844, "r": 246.83711000000002, "b": 237.74170000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.8748195767402649, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.8, "t": 228.67809999999997, "r": 141.78, "b": 237.45288000000005, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Find us on Facebook:", "bbox": {"l": 151.20016, "t": 228.52868999999998, "r": 246.83711000000002, "b": 237.74170000000004, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Find us on Facebook:"}, {"label": "text", "id": 8, "page_no": 15, "cluster": {"id": 8, "label": "text", "bbox": {"l": 150.674072265625, "t": 244.8909912109375, "r": 326.09775, "b": 254.91514587402344, "coord_origin": "TOPLEFT"}, "confidence": 0.7252531051635742, "cells": [{"id": 14, "text": "http://www.facebook.com/IBMRedbooks", "bbox": {"l": 151.20016, "t": 245.65790000000004, "r": 326.09775, "b": 254.43268, "coord_origin": "TOPLEFT"}}]}, "text": "http://www.facebook.com/IBMRedbooks"}, {"label": "list_item", "id": 9, "page_no": 15, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.61866760253906, "t": 261.4954833984375, "r": 241.52239999999998, "b": 271.70129, "coord_origin": "TOPLEFT"}, "confidence": 0.8754413723945618, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 262.6377, "r": 141.78, "b": 271.41247999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Follow us on Twitter:", "bbox": {"l": 151.20016, "t": 262.48828000000003, "r": 241.52239999999998, "b": 271.70129, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Follow us on Twitter:"}, {"label": "text", "id": 10, "page_no": 15, "cluster": {"id": 10, "label": "text", "bbox": {"l": 150.70498657226562, "t": 278.7747497558594, "r": 301.07822, "b": 288.4688720703125, "coord_origin": "TOPLEFT"}, "confidence": 0.6634963750839233, "cells": [{"id": 17, "text": "http://twitter.com/ibmredbooks", "bbox": {"l": 151.20016, "t": 279.67731000000003, "r": 301.07822, "b": 288.45206, "coord_origin": "TOPLEFT"}}]}, "text": "http://twitter.com/ibmredbooks"}, {"label": "list_item", "id": 11, "page_no": 15, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.6381072998047, "t": 295.406982421875, "r": 257.42651, "b": 305.72067, "coord_origin": "TOPLEFT"}, "confidence": 0.8954482078552246, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.8, "t": 296.65707000000003, "r": 141.78, "b": 305.43184999999994, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Look for us on LinkedIn:", "bbox": {"l": 151.20016, "t": 296.50769, "r": 257.42651, "b": 305.72067, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Look for us on LinkedIn:"}, {"label": "text", "id": 12, "page_no": 15, "cluster": {"id": 12, "label": "text", "bbox": {"l": 150.5355224609375, "t": 312.7005920410156, "r": 391.07678, "b": 322.6709289550781, "coord_origin": "TOPLEFT"}, "confidence": 0.7177077531814575, "cells": [{"id": 20, "text": "http://www.linkedin.com/groups?home=&gid=2130806", "bbox": {"l": 151.20016, "t": 313.63687, "r": 391.07678, "b": 322.41165, "coord_origin": "TOPLEFT"}}]}, "text": "http://www.linkedin.com/groups?home=&gid=2130806"}, {"label": "list_item", "id": 13, "page_no": 15, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 135.53648376464844, "t": 330.0694580078125, "r": 546.2179, "b": 352.36749267578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9449265599250793, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.8, "t": 330.67645, "r": 141.78, "b": 339.45123, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Explore new Redbooks publications, residencies, and workshops with the IBM Redbooks ", "bbox": {"l": 151.20016, "t": 330.52707, "r": 546.2179, "b": 339.74005, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "weekly newsletter:", "bbox": {"l": 151.20016, "t": 342.52689, "r": 232.82335, "b": 351.73986999999994, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Explore new Redbooks publications, residencies, and workshops with the IBM Redbooks weekly newsletter:"}, {"label": "text", "id": 14, "page_no": 15, "cluster": {"id": 14, "label": "text", "bbox": {"l": 150.64300537109375, "t": 358.7694091796875, "r": 451.45623779296875, "b": 368.8676452636719, "coord_origin": "TOPLEFT"}, "confidence": 0.7377406358718872, "cells": [{"id": 24, "text": "https://www.redbooks.ibm.com/Redbooks.nsf/subscribe?OpenForm", "bbox": {"l": 151.20016, "t": 359.65607, "r": 451.01605, "b": 368.43085, "coord_origin": "TOPLEFT"}}]}, "text": "https://www.redbooks.ibm.com/Redbooks.nsf/subscribe?OpenForm"}, {"label": "list_item", "id": 15, "page_no": 15, "cluster": {"id": 15, "label": "list_item", "bbox": {"l": 135.8739471435547, "t": 375.3260498046875, "r": 429.34805000000006, "b": 385.69946, "coord_origin": "TOPLEFT"}, "confidence": 0.9105416536331177, "cells": [{"id": 25, "text": "GLYPH", "bbox": {"l": 136.8, "t": 376.63586000000004, "r": 141.78, "b": 385.41063999999994, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Stay current on recent Redbooks publications with RSS Feeds:", "bbox": {"l": 151.20016, "t": 376.4864799999999, "r": 429.34805000000006, "b": 385.69946, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Stay current on recent Redbooks publications with RSS Feeds:"}, {"label": "text", "id": 16, "page_no": 15, "cluster": {"id": 16, "label": "text", "bbox": {"l": 150.6341552734375, "t": 392.9015197753906, "r": 331.07773, "b": 402.52935791015625, "coord_origin": "TOPLEFT"}, "confidence": 0.766843855381012, "cells": [{"id": 27, "text": "http://www.redbooks.ibm.com/rss.html", "bbox": {"l": 151.20016, "t": 393.67545, "r": 331.07773, "b": 402.45023, "coord_origin": "TOPLEFT"}}]}, "text": "http://www.redbooks.ibm.com/rss.html"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 15, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.0907974243164, "t": 754.5955200195312, "r": 81.162003, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9144188761711121, "cells": [{"id": 0, "text": "xiv ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 81.162003, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "xiv"}, {"label": "page_footer", "id": 1, "page_no": 15, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 95.71053314208984, "t": 754.6729736328125, "r": 337.03378, "b": 763.97509765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9409525394439697, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 96.180305, "t": 755.538002, "r": 337.03378, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 16, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "1", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Chapter 1.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Securing and protecting IBM DB2 ", "bbox": {"l": 136.8, "t": 254.88635, "r": 547.30475, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "data", "bbox": {"l": 136.8, "t": 285.84671, "r": 190.29802, "b": 309.8782, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Recent news headlines are filled with reports of data breaches and cyber-attacks impacting ", "bbox": {"l": 136.8, "t": 348.70871, "r": 542.25665, "b": 357.92169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "global businesses of all sizes. The Identity Theft Resource Center$^{1}$ reports that almost 5000 ", "bbox": {"l": 136.80096, "t": 360.70853, "r": 544.96643, "b": 369.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "data breaches have occurred since 2005, exposing over 600 million records of data. The ", "bbox": {"l": 136.79965, "t": 372.70853, "r": 529.53839, "b": 381.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "financial cost of these data breaches is skyrocketing. Studies from the Ponemon Institute$^{2}$ ", "bbox": {"l": 136.79965, "t": 384.7083400000001, "r": 535.32874, "b": 393.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "revealed that the average cost of a data breach increased in 2013 by 15% globally and ", "bbox": {"l": 136.80026, "t": 396.70853, "r": 521.64374, "b": 405.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "resulted in a brand equity loss of $9.4 million per attack. The average cost that is incurred for ", "bbox": {"l": 136.80026, "t": 408.7083400000001, "r": 547.13135, "b": 417.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "each lost record containing sensitive information increased more than 9% to $145 per record. ", "bbox": {"l": 136.80023, "t": 420.70816, "r": 547.25403, "b": 429.92114, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Businesses must make a serious effort to secure their data and recognize that securing ", "bbox": {"l": 136.80023, "t": 442.7277199999999, "r": 525.06482, "b": 451.9407, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "information assets is a cost of doing business. In many parts of the world and in many ", "bbox": {"l": 136.80025, "t": 454.72754000000003, "r": 518.26825, "b": 463.94052, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "industries, securing the data is required by law and subject to audits. Data security is no ", "bbox": {"l": 136.80025, "t": 466.72736, "r": 527.2063, "b": 475.94034, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "longer an option; it is a requirement.", "bbox": {"l": 136.80025, "t": 478.72717, "r": 296.31067, "b": 487.94016, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "This chapter describes how you can secure and protect data in DB2 for i. The following topics ", "bbox": {"l": 136.80025, "t": 500.68698, "r": 547.15515, "b": 509.89996, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "are covered in this chapter:", "bbox": {"l": 136.80025, "t": 512.6868, "r": 257.28036, "b": 521.89978, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "GLYPH", "bbox": {"l": 136.80025, "t": 529.87576, "r": 141.78024, "b": 538.6505099999999, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Security fundamentals", "bbox": {"l": 151.20041, "t": 529.72635, "r": 250.23166999999998, "b": 538.93936, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "GLYPH", "bbox": {"l": 136.80025, "t": 541.87556, "r": 141.78024, "b": 550.65031, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Current state of IBM i security", "bbox": {"l": 151.20041, "t": 541.72617, "r": 282.98114, "b": 550.93916, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "GLYPH", "bbox": {"l": 136.80025, "t": 553.87537, "r": 141.78024, "b": 562.65012, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "DB2 for i security controls", "bbox": {"l": 151.20041, "t": 553.72597, "r": 264.88187, "b": 562.93896, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "1", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "$^{1 }$http://www.idtheftcenter.org", "bbox": {"l": 136.8, "t": 717.750061, "r": 258.36255, "b": 724.780441, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "$^{2 }$http://www.ponemon.org", "bbox": {"l": 136.8, "t": 727.709961, "r": 231.90257, "b": 734.740341, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "/", "bbox": {"l": 231.84036, "t": 727.590263, "r": 234.05881, "b": 734.97176, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.68400573730469, "t": 754.6591796875, "r": 257.24335, "b": 764.1430053710938, "coord_origin": "TOPLEFT"}, "confidence": 0.9370514154434204, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 541.2396240234375, "t": 754.2869873046875, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8513588309288025, "cells": [{"id": 1, "text": "1", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 1.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "section_header", "bbox": {"l": 136.68006896972656, "t": 253.28985595703125, "r": 547.30475, "b": 309.8782, "coord_origin": "TOPLEFT"}, "confidence": 0.9377049207687378, "cells": [{"id": 3, "text": "Securing and protecting IBM DB2 ", "bbox": {"l": 136.8, "t": 254.88635, "r": 547.30475, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "data", "bbox": {"l": 136.8, "t": 285.84671, "r": 190.29802, "b": 309.8782, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 136.15219116210938, "t": 347.975341796875, "r": 547.25403, "b": 430.37359619140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9868757724761963, "cells": [{"id": 5, "text": "Recent news headlines are filled with reports of data breaches and cyber-attacks impacting ", "bbox": {"l": 136.8, "t": 348.70871, "r": 542.25665, "b": 357.92169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "global businesses of all sizes. The Identity Theft Resource Center$^{1}$ reports that almost 5000 ", "bbox": {"l": 136.80096, "t": 360.70853, "r": 544.96643, "b": 369.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "data breaches have occurred since 2005, exposing over 600 million records of data. The ", "bbox": {"l": 136.79965, "t": 372.70853, "r": 529.53839, "b": 381.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "financial cost of these data breaches is skyrocketing. Studies from the Ponemon Institute$^{2}$ ", "bbox": {"l": 136.79965, "t": 384.7083400000001, "r": 535.32874, "b": 393.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "revealed that the average cost of a data breach increased in 2013 by 15% globally and ", "bbox": {"l": 136.80026, "t": 396.70853, "r": 521.64374, "b": 405.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "resulted in a brand equity loss of $9.4 million per attack. The average cost that is incurred for ", "bbox": {"l": 136.80026, "t": 408.7083400000001, "r": 547.13135, "b": 417.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "each lost record containing sensitive information increased more than 9% to $145 per record. ", "bbox": {"l": 136.80023, "t": 420.70816, "r": 547.25403, "b": 429.92114, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.05917358398438, "t": 442.1153564453125, "r": 527.2063, "b": 488.44146728515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9865864515304565, "cells": [{"id": 12, "text": "Businesses must make a serious effort to secure their data and recognize that securing ", "bbox": {"l": 136.80023, "t": 442.7277199999999, "r": 525.06482, "b": 451.9407, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "information assets is a cost of doing business. In many parts of the world and in many ", "bbox": {"l": 136.80025, "t": 454.72754000000003, "r": 518.26825, "b": 463.94052, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "industries, securing the data is required by law and subject to audits. Data security is no ", "bbox": {"l": 136.80025, "t": 466.72736, "r": 527.2063, "b": 475.94034, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "longer an option; it is a requirement.", "bbox": {"l": 136.80025, "t": 478.72717, "r": 296.31067, "b": 487.94016, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 135.5961456298828, "t": 500.0403137207031, "r": 547.15515, "b": 521.89978, "coord_origin": "TOPLEFT"}, "confidence": 0.9734498858451843, "cells": [{"id": 16, "text": "This chapter describes how you can secure and protect data in DB2 for i. The following topics ", "bbox": {"l": 136.80025, "t": 500.68698, "r": 547.15515, "b": 509.89996, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "are covered in this chapter:", "bbox": {"l": 136.80025, "t": 512.6868, "r": 257.28036, "b": 521.89978, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.86915588378906, "t": 528.70361328125, "r": 250.23166999999998, "b": 539.0433349609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9374465346336365, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.80025, "t": 529.87576, "r": 141.78024, "b": 538.6505099999999, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Security fundamentals", "bbox": {"l": 151.20041, "t": 529.72635, "r": 250.23166999999998, "b": 538.93936, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.742431640625, "t": 540.7142333984375, "r": 282.98114, "b": 551.373291015625, "coord_origin": "TOPLEFT"}, "confidence": 0.933772087097168, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.80025, "t": 541.87556, "r": 141.78024, "b": 550.65031, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Current state of IBM i security", "bbox": {"l": 151.20041, "t": 541.72617, "r": 282.98114, "b": 550.93916, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.86570739746094, "t": 552.4489135742188, "r": 264.88187, "b": 562.93896, "coord_origin": "TOPLEFT"}, "confidence": 0.946319043636322, "cells": [{"id": 22, "text": "GLYPH", "bbox": {"l": 136.80025, "t": 553.87537, "r": 141.78024, "b": 562.65012, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "DB2 for i security controls", "bbox": {"l": 151.20041, "t": 553.72597, "r": 264.88187, "b": 562.93896, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 500.39999, "t": 92.66075897216797, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.7054197788238525, "cells": [{"id": 24, "text": "1", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "footnote", "bbox": {"l": 135.7418975830078, "t": 716.2816772460938, "r": 258.36255, "b": 725.5408325195312, "coord_origin": "TOPLEFT"}, "confidence": 0.7673327326774597, "cells": [{"id": 25, "text": "$^{1 }$http://www.idtheftcenter.org", "bbox": {"l": 136.8, "t": 717.750061, "r": 258.36255, "b": 724.780441, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "footnote", "bbox": {"l": 136.19522094726562, "t": 725.296142578125, "r": 234.42526245117188, "b": 735.2681274414062, "coord_origin": "TOPLEFT"}, "confidence": 0.7980051636695862, "cells": [{"id": 26, "text": "$^{2 }$http://www.ponemon.org", "bbox": {"l": 136.8, "t": 727.709961, "r": 231.90257, "b": 734.740341, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "/", "bbox": {"l": 231.84036, "t": 727.590263, "r": 234.05881, "b": 734.97176, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "picture", "bbox": {"l": 32.05508804321289, "t": 70.42637634277344, "r": 239.62692260742188, "b": 238.041015625, "coord_origin": "TOPLEFT"}, "confidence": 0.7604197263717651, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 16, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.68400573730469, "t": 754.6591796875, "r": 257.24335, "b": 764.1430053710938, "coord_origin": "TOPLEFT"}, "confidence": 0.9370514154434204, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 16, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 541.2396240234375, "t": 754.2869873046875, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8513588309288025, "cells": [{"id": 1, "text": "1", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "1"}, {"label": "text", "id": 2, "page_no": 16, "cluster": {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 1.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 1."}, {"label": "section_header", "id": 3, "page_no": 16, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 136.68006896972656, "t": 253.28985595703125, "r": 547.30475, "b": 309.8782, "coord_origin": "TOPLEFT"}, "confidence": 0.9377049207687378, "cells": [{"id": 3, "text": "Securing and protecting IBM DB2 ", "bbox": {"l": 136.8, "t": 254.88635, "r": 547.30475, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "data", "bbox": {"l": 136.8, "t": 285.84671, "r": 190.29802, "b": 309.8782, "coord_origin": "TOPLEFT"}}]}, "text": "Securing and protecting IBM DB2 data"}, {"label": "text", "id": 4, "page_no": 16, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.15219116210938, "t": 347.975341796875, "r": 547.25403, "b": 430.37359619140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9868757724761963, "cells": [{"id": 5, "text": "Recent news headlines are filled with reports of data breaches and cyber-attacks impacting ", "bbox": {"l": 136.8, "t": 348.70871, "r": 542.25665, "b": 357.92169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "global businesses of all sizes. The Identity Theft Resource Center$^{1}$ reports that almost 5000 ", "bbox": {"l": 136.80096, "t": 360.70853, "r": 544.96643, "b": 369.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "data breaches have occurred since 2005, exposing over 600 million records of data. The ", "bbox": {"l": 136.79965, "t": 372.70853, "r": 529.53839, "b": 381.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "financial cost of these data breaches is skyrocketing. Studies from the Ponemon Institute$^{2}$ ", "bbox": {"l": 136.79965, "t": 384.7083400000001, "r": 535.32874, "b": 393.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "revealed that the average cost of a data breach increased in 2013 by 15% globally and ", "bbox": {"l": 136.80026, "t": 396.70853, "r": 521.64374, "b": 405.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "resulted in a brand equity loss of $9.4 million per attack. The average cost that is incurred for ", "bbox": {"l": 136.80026, "t": 408.7083400000001, "r": 547.13135, "b": 417.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "each lost record containing sensitive information increased more than 9% to $145 per record. ", "bbox": {"l": 136.80023, "t": 420.70816, "r": 547.25403, "b": 429.92114, "coord_origin": "TOPLEFT"}}]}, "text": "Recent news headlines are filled with reports of data breaches and cyber-attacks impacting global businesses of all sizes. The Identity Theft Resource Center$^{1}$ reports that almost 5000 data breaches have occurred since 2005, exposing over 600 million records of data. The financial cost of these data breaches is skyrocketing. Studies from the Ponemon Institute$^{2}$ revealed that the average cost of a data breach increased in 2013 by 15% globally and resulted in a brand equity loss of $9.4 million per attack. The average cost that is incurred for each lost record containing sensitive information increased more than 9% to $145 per record."}, {"label": "text", "id": 5, "page_no": 16, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.05917358398438, "t": 442.1153564453125, "r": 527.2063, "b": 488.44146728515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9865864515304565, "cells": [{"id": 12, "text": "Businesses must make a serious effort to secure their data and recognize that securing ", "bbox": {"l": 136.80023, "t": 442.7277199999999, "r": 525.06482, "b": 451.9407, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "information assets is a cost of doing business. In many parts of the world and in many ", "bbox": {"l": 136.80025, "t": 454.72754000000003, "r": 518.26825, "b": 463.94052, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "industries, securing the data is required by law and subject to audits. Data security is no ", "bbox": {"l": 136.80025, "t": 466.72736, "r": 527.2063, "b": 475.94034, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "longer an option; it is a requirement.", "bbox": {"l": 136.80025, "t": 478.72717, "r": 296.31067, "b": 487.94016, "coord_origin": "TOPLEFT"}}]}, "text": "Businesses must make a serious effort to secure their data and recognize that securing information assets is a cost of doing business. In many parts of the world and in many industries, securing the data is required by law and subject to audits. Data security is no longer an option; it is a requirement."}, {"label": "text", "id": 6, "page_no": 16, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.5961456298828, "t": 500.0403137207031, "r": 547.15515, "b": 521.89978, "coord_origin": "TOPLEFT"}, "confidence": 0.9734498858451843, "cells": [{"id": 16, "text": "This chapter describes how you can secure and protect data in DB2 for i. The following topics ", "bbox": {"l": 136.80025, "t": 500.68698, "r": 547.15515, "b": 509.89996, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "are covered in this chapter:", "bbox": {"l": 136.80025, "t": 512.6868, "r": 257.28036, "b": 521.89978, "coord_origin": "TOPLEFT"}}]}, "text": "This chapter describes how you can secure and protect data in DB2 for i. The following topics are covered in this chapter:"}, {"label": "list_item", "id": 7, "page_no": 16, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.86915588378906, "t": 528.70361328125, "r": 250.23166999999998, "b": 539.0433349609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9374465346336365, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.80025, "t": 529.87576, "r": 141.78024, "b": 538.6505099999999, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Security fundamentals", "bbox": {"l": 151.20041, "t": 529.72635, "r": 250.23166999999998, "b": 538.93936, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Security fundamentals"}, {"label": "list_item", "id": 8, "page_no": 16, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.742431640625, "t": 540.7142333984375, "r": 282.98114, "b": 551.373291015625, "coord_origin": "TOPLEFT"}, "confidence": 0.933772087097168, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.80025, "t": 541.87556, "r": 141.78024, "b": 550.65031, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Current state of IBM i security", "bbox": {"l": 151.20041, "t": 541.72617, "r": 282.98114, "b": 550.93916, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Current state of IBM i security"}, {"label": "list_item", "id": 9, "page_no": 16, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.86570739746094, "t": 552.4489135742188, "r": 264.88187, "b": 562.93896, "coord_origin": "TOPLEFT"}, "confidence": 0.946319043636322, "cells": [{"id": 22, "text": "GLYPH", "bbox": {"l": 136.80025, "t": 553.87537, "r": 141.78024, "b": 562.65012, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "DB2 for i security controls", "bbox": {"l": 151.20041, "t": 553.72597, "r": 264.88187, "b": 562.93896, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH DB2 for i security controls"}, {"label": "text", "id": 10, "page_no": 16, "cluster": {"id": 10, "label": "text", "bbox": {"l": 500.39999, "t": 92.66075897216797, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.7054197788238525, "cells": [{"id": 24, "text": "1", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, "text": "1"}, {"label": "footnote", "id": 11, "page_no": 16, "cluster": {"id": 11, "label": "footnote", "bbox": {"l": 135.7418975830078, "t": 716.2816772460938, "r": 258.36255, "b": 725.5408325195312, "coord_origin": "TOPLEFT"}, "confidence": 0.7673327326774597, "cells": [{"id": 25, "text": "$^{1 }$http://www.idtheftcenter.org", "bbox": {"l": 136.8, "t": 717.750061, "r": 258.36255, "b": 724.780441, "coord_origin": "TOPLEFT"}}]}, "text": "$^{1 }$http://www.idtheftcenter.org"}, {"label": "footnote", "id": 12, "page_no": 16, "cluster": {"id": 12, "label": "footnote", "bbox": {"l": 136.19522094726562, "t": 725.296142578125, "r": 234.42526245117188, "b": 735.2681274414062, "coord_origin": "TOPLEFT"}, "confidence": 0.7980051636695862, "cells": [{"id": 26, "text": "$^{2 }$http://www.ponemon.org", "bbox": {"l": 136.8, "t": 727.709961, "r": 231.90257, "b": 734.740341, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "/", "bbox": {"l": 231.84036, "t": 727.590263, "r": 234.05881, "b": 734.97176, "coord_origin": "TOPLEFT"}}]}, "text": "$^{2 }$http://www.ponemon.org /"}, {"label": "picture", "id": 13, "page_no": 16, "cluster": {"id": 13, "label": "picture", "bbox": {"l": 32.05508804321289, "t": 70.42637634277344, "r": 239.62692260742188, "b": 238.041015625, "coord_origin": "TOPLEFT"}, "confidence": 0.7604197263717651, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 16, "cluster": {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 1.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 1."}, {"label": "section_header", "id": 3, "page_no": 16, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 136.68006896972656, "t": 253.28985595703125, "r": 547.30475, "b": 309.8782, "coord_origin": "TOPLEFT"}, "confidence": 0.9377049207687378, "cells": [{"id": 3, "text": "Securing and protecting IBM DB2 ", "bbox": {"l": 136.8, "t": 254.88635, "r": 547.30475, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "data", "bbox": {"l": 136.8, "t": 285.84671, "r": 190.29802, "b": 309.8782, "coord_origin": "TOPLEFT"}}]}, "text": "Securing and protecting IBM DB2 data"}, {"label": "text", "id": 4, "page_no": 16, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.15219116210938, "t": 347.975341796875, "r": 547.25403, "b": 430.37359619140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9868757724761963, "cells": [{"id": 5, "text": "Recent news headlines are filled with reports of data breaches and cyber-attacks impacting ", "bbox": {"l": 136.8, "t": 348.70871, "r": 542.25665, "b": 357.92169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "global businesses of all sizes. The Identity Theft Resource Center$^{1}$ reports that almost 5000 ", "bbox": {"l": 136.80096, "t": 360.70853, "r": 544.96643, "b": 369.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "data breaches have occurred since 2005, exposing over 600 million records of data. The ", "bbox": {"l": 136.79965, "t": 372.70853, "r": 529.53839, "b": 381.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "financial cost of these data breaches is skyrocketing. Studies from the Ponemon Institute$^{2}$ ", "bbox": {"l": 136.79965, "t": 384.7083400000001, "r": 535.32874, "b": 393.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "revealed that the average cost of a data breach increased in 2013 by 15% globally and ", "bbox": {"l": 136.80026, "t": 396.70853, "r": 521.64374, "b": 405.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "resulted in a brand equity loss of $9.4 million per attack. The average cost that is incurred for ", "bbox": {"l": 136.80026, "t": 408.7083400000001, "r": 547.13135, "b": 417.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "each lost record containing sensitive information increased more than 9% to $145 per record. ", "bbox": {"l": 136.80023, "t": 420.70816, "r": 547.25403, "b": 429.92114, "coord_origin": "TOPLEFT"}}]}, "text": "Recent news headlines are filled with reports of data breaches and cyber-attacks impacting global businesses of all sizes. The Identity Theft Resource Center$^{1}$ reports that almost 5000 data breaches have occurred since 2005, exposing over 600 million records of data. The financial cost of these data breaches is skyrocketing. Studies from the Ponemon Institute$^{2}$ revealed that the average cost of a data breach increased in 2013 by 15% globally and resulted in a brand equity loss of $9.4 million per attack. The average cost that is incurred for each lost record containing sensitive information increased more than 9% to $145 per record."}, {"label": "text", "id": 5, "page_no": 16, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.05917358398438, "t": 442.1153564453125, "r": 527.2063, "b": 488.44146728515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9865864515304565, "cells": [{"id": 12, "text": "Businesses must make a serious effort to secure their data and recognize that securing ", "bbox": {"l": 136.80023, "t": 442.7277199999999, "r": 525.06482, "b": 451.9407, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "information assets is a cost of doing business. In many parts of the world and in many ", "bbox": {"l": 136.80025, "t": 454.72754000000003, "r": 518.26825, "b": 463.94052, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "industries, securing the data is required by law and subject to audits. Data security is no ", "bbox": {"l": 136.80025, "t": 466.72736, "r": 527.2063, "b": 475.94034, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "longer an option; it is a requirement.", "bbox": {"l": 136.80025, "t": 478.72717, "r": 296.31067, "b": 487.94016, "coord_origin": "TOPLEFT"}}]}, "text": "Businesses must make a serious effort to secure their data and recognize that securing information assets is a cost of doing business. In many parts of the world and in many industries, securing the data is required by law and subject to audits. Data security is no longer an option; it is a requirement."}, {"label": "text", "id": 6, "page_no": 16, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.5961456298828, "t": 500.0403137207031, "r": 547.15515, "b": 521.89978, "coord_origin": "TOPLEFT"}, "confidence": 0.9734498858451843, "cells": [{"id": 16, "text": "This chapter describes how you can secure and protect data in DB2 for i. The following topics ", "bbox": {"l": 136.80025, "t": 500.68698, "r": 547.15515, "b": 509.89996, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "are covered in this chapter:", "bbox": {"l": 136.80025, "t": 512.6868, "r": 257.28036, "b": 521.89978, "coord_origin": "TOPLEFT"}}]}, "text": "This chapter describes how you can secure and protect data in DB2 for i. The following topics are covered in this chapter:"}, {"label": "list_item", "id": 7, "page_no": 16, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.86915588378906, "t": 528.70361328125, "r": 250.23166999999998, "b": 539.0433349609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9374465346336365, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.80025, "t": 529.87576, "r": 141.78024, "b": 538.6505099999999, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Security fundamentals", "bbox": {"l": 151.20041, "t": 529.72635, "r": 250.23166999999998, "b": 538.93936, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Security fundamentals"}, {"label": "list_item", "id": 8, "page_no": 16, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.742431640625, "t": 540.7142333984375, "r": 282.98114, "b": 551.373291015625, "coord_origin": "TOPLEFT"}, "confidence": 0.933772087097168, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.80025, "t": 541.87556, "r": 141.78024, "b": 550.65031, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Current state of IBM i security", "bbox": {"l": 151.20041, "t": 541.72617, "r": 282.98114, "b": 550.93916, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Current state of IBM i security"}, {"label": "list_item", "id": 9, "page_no": 16, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.86570739746094, "t": 552.4489135742188, "r": 264.88187, "b": 562.93896, "coord_origin": "TOPLEFT"}, "confidence": 0.946319043636322, "cells": [{"id": 22, "text": "GLYPH", "bbox": {"l": 136.80025, "t": 553.87537, "r": 141.78024, "b": 562.65012, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "DB2 for i security controls", "bbox": {"l": 151.20041, "t": 553.72597, "r": 264.88187, "b": 562.93896, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH DB2 for i security controls"}, {"label": "text", "id": 10, "page_no": 16, "cluster": {"id": 10, "label": "text", "bbox": {"l": 500.39999, "t": 92.66075897216797, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.7054197788238525, "cells": [{"id": 24, "text": "1", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, "text": "1"}, {"label": "footnote", "id": 11, "page_no": 16, "cluster": {"id": 11, "label": "footnote", "bbox": {"l": 135.7418975830078, "t": 716.2816772460938, "r": 258.36255, "b": 725.5408325195312, "coord_origin": "TOPLEFT"}, "confidence": 0.7673327326774597, "cells": [{"id": 25, "text": "$^{1 }$http://www.idtheftcenter.org", "bbox": {"l": 136.8, "t": 717.750061, "r": 258.36255, "b": 724.780441, "coord_origin": "TOPLEFT"}}]}, "text": "$^{1 }$http://www.idtheftcenter.org"}, {"label": "footnote", "id": 12, "page_no": 16, "cluster": {"id": 12, "label": "footnote", "bbox": {"l": 136.19522094726562, "t": 725.296142578125, "r": 234.42526245117188, "b": 735.2681274414062, "coord_origin": "TOPLEFT"}, "confidence": 0.7980051636695862, "cells": [{"id": 26, "text": "$^{2 }$http://www.ponemon.org", "bbox": {"l": 136.8, "t": 727.709961, "r": 231.90257, "b": 734.740341, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "/", "bbox": {"l": 231.84036, "t": 727.590263, "r": 234.05881, "b": 734.97176, "coord_origin": "TOPLEFT"}}]}, "text": "$^{2 }$http://www.ponemon.org /"}, {"label": "picture", "id": 13, "page_no": 16, "cluster": {"id": 13, "label": "picture", "bbox": {"l": 32.05508804321289, "t": 70.42637634277344, "r": 239.62692260742188, "b": 238.041015625, "coord_origin": "TOPLEFT"}, "confidence": 0.7604197263717651, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 16, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.68400573730469, "t": 754.6591796875, "r": 257.24335, "b": 764.1430053710938, "coord_origin": "TOPLEFT"}, "confidence": 0.9370514154434204, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 16, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 541.2396240234375, "t": 754.2869873046875, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8513588309288025, "cells": [{"id": 1, "text": "1", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "1"}]}}, {"page_no": 17, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "2 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 87.840302, "t": 755.538002, "r": 328.72537, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "1.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.524292, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Security fundamentals", "bbox": {"l": 92.069145, "t": 74.34069999999997, "r": 267.40582, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Before reviewing database security techniques, there are two fundamental steps in securing ", "bbox": {"l": 136.8, "t": 106.6087, "r": 545.00482, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "information assets that must be described:", "bbox": {"l": 136.8, "t": 118.60852, "r": 324.47229, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 135.79749000000004, "r": 141.78, "b": 144.57227, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "First, and most important, is the definition of a company\u2019s ", "bbox": {"l": 151.20016, "t": 135.64806999999996, "r": 406.67715, "b": 144.86108000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "security policy", "bbox": {"l": 406.67999, "t": 135.12487999999996, "r": 471.03815, "b": 145.18262000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": ". Without a ", "bbox": {"l": 470.04001000000005, "t": 135.64862000000005, "r": 520.59796, "b": 144.86163, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "security policy, there is no definition of what are acceptable practices for using, accessing, ", "bbox": {"l": 151.19949, "t": 147.64844000000005, "r": 547.16425, "b": 156.86145, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "and storing information by who, what, when, where, and how. A security policy should ", "bbox": {"l": 151.19948, "t": 159.64824999999996, "r": 531.02008, "b": 168.86127, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "minimally address three things: confidentiality, integrity, and availability.", "bbox": {"l": 151.19948, "t": 171.64806999999996, "r": 463.3578499999999, "b": 180.86108000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "The monitoring and assessment of adherence to the security policy determines whether ", "bbox": {"l": 151.19948, "t": 188.62787000000003, "r": 541.70514, "b": 197.84087999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "your security strategy is working. Often, IBM security consultants are asked to perform ", "bbox": {"l": 151.19948, "t": 200.62769000000003, "r": 534.83002, "b": 209.84069999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "security assessments for companies without regard to the security policy. Although these ", "bbox": {"l": 151.19948, "t": 212.62750000000005, "r": 545.79773, "b": 221.84051999999997, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "assessments can be useful for observing how the system is defined and how data is being ", "bbox": {"l": 151.19948, "t": 224.62732000000005, "r": 547.26086, "b": 233.84033, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "accessed, they cannot determine the level of security without a security policy. Without a ", "bbox": {"l": 151.19948, "t": 236.62714000000005, "r": 543.91528, "b": 245.84015, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "security policy, it really is not an assessment as much as it is a baseline for monitoring the ", "bbox": {"l": 151.19948, "t": 248.62694999999997, "r": 547.25989, "b": 257.83997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "changes in the security settings that are captured.", "bbox": {"l": 151.19946, "t": 260.62676999999996, "r": 371.8692, "b": 269.83978, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "A security policy is what defines whether the system and its settings are secure (or not). ", "bbox": {"l": 151.19946, "t": 277.60657000000003, "r": 541.992, "b": 286.81958, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "GLYPH", "bbox": {"l": 136.7993, "t": 294.7955600000001, "r": 141.7793, "b": 303.57034, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "The second fundamental in securing data assets is the use of ", "bbox": {"l": 151.19946, "t": 294.64618, "r": 425.86029, "b": 303.85916, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "resource security", "bbox": {"l": 425.82001, "t": 294.12496999999996, "r": 501.60065, "b": 304.18265, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": ". If ", "bbox": {"l": 500.64001, "t": 294.64871, "r": 514.49933, "b": 303.86169, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "implemented properly, resource security prevents data breaches from both internal and ", "bbox": {"l": 151.20038, "t": 306.64853, "r": 537.87421, "b": 315.86151, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "external intrusions. Resource security controls are closely tied to the part of the security ", "bbox": {"l": 151.20038, "t": 318.64834999999994, "r": 541.33636, "b": 327.86133, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "policy that defines who should have access to what information resources. A hacker might ", "bbox": {"l": 151.20038, "t": 330.64816, "r": 547.15826, "b": 339.86115, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "be good enough to get through your company firewalls and sift his way through to your ", "bbox": {"l": 151.20038, "t": 342.64798, "r": 534.86066, "b": 351.86096, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "system, but if they do not have explicit access to your database, the hacker cannot ", "bbox": {"l": 151.20038, "t": 354.6478, "r": 517.00739, "b": 363.86078, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "compromise your information assets.", "bbox": {"l": 151.20038, "t": 366.64761, "r": 314.03534, "b": 375.8606, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "With your eyes now open to the importance of securing information assets, the rest of this ", "bbox": {"l": 136.80022, "t": 388.60742, "r": 535.36169, "b": 397.82040000000006, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "chapter reviews the methods that are available for securing database resources on IBM i. ", "bbox": {"l": 136.80022, "t": 400.60724, "r": 532.755, "b": 409.82022, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "1.2", "bbox": {"l": 64.800003, "t": 438.30072, "r": 87.415726, "b": 453.06372, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Current state of IBM i security", "bbox": {"l": 91.93885, "t": 438.30072, "r": 323.38391, "b": 453.06372, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Because of the inherently secure nature of IBM i, many clients rely on the default system ", "bbox": {"l": 136.8, "t": 470.62872, "r": 530.30463, "b": 479.84171, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "settings to protect their business data that is stored in DB2 for i. In most cases, this means no ", "bbox": {"l": 136.8, "t": 482.62854, "r": 547.31824, "b": 491.84152, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "data protection because the default setting for the Create default public authority (QCRTAUT) ", "bbox": {"l": 136.8, "t": 494.62836, "r": 547.19586, "b": 503.84134, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "system value is *CHANGE.", "bbox": {"l": 136.8, "t": 506.62817, "r": 257.04709, "b": 515.84116, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Even more disturbing is that many IBM i clients remain in this state, despite the news ", "bbox": {"l": 136.8, "t": 528.64774, "r": 513.90448, "b": 537.86073, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "headlines and the significant costs that are involved with databases being compromised. This ", "bbox": {"l": 136.8, "t": 540.6475399999999, "r": 547.28442, "b": 549.86053, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "default security configuration makes it quite challenging to implement basic security policies. ", "bbox": {"l": 136.8, "t": 552.64734, "r": 546.27533, "b": 561.86034, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "A tighter implementation is required if you really want to protect one of your company\u2019s most ", "bbox": {"l": 136.8, "t": 564.64714, "r": 545.08014, "b": 573.86014, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "valuable assets, which is the data.", "bbox": {"l": 136.8, "t": 576.64694, "r": 287.80057, "b": 585.85994, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Traditionally, IBM i applications have employed menu-based security to counteract this default ", "bbox": {"l": 136.8, "t": 598.6665, "r": 547.28326, "b": 607.8795, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "configuration that gives all users access to the data. The theory is that data is protected by ", "bbox": {"l": 136.8, "t": 610.6663100000001, "r": 538.6767, "b": 619.8793000000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "the menu options controlling what database operations that the user can perform. This ", "bbox": {"l": 136.8, "t": 622.66611, "r": 520.35364, "b": 631.8791, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "approach is ineffective, even if the user profile is restricted from running interactive ", "bbox": {"l": 136.80002, "t": 634.6659099999999, "r": 502.77115000000003, "b": 643.87891, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "commands. The reason is that in today\u2019s connected world there are a multitude of interfaces ", "bbox": {"l": 136.80002, "t": 646.66571, "r": 545.16492, "b": 655.87871, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "into the system, from web browsers to PC clients, that bypass application menus. If there are ", "bbox": {"l": 136.80002, "t": 658.66551, "r": 547.23376, "b": 667.87852, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "no object-level controls, users of these newer interfaces have an open door to your data.", "bbox": {"l": 136.80002, "t": 670.66532, "r": 526.04187, "b": 679.87833, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.92394256591797, "t": 754.286865234375, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8889444470405579, "cells": [{"id": 0, "text": "2 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 87.81553649902344, "t": 754.6853637695312, "r": 328.72537, "b": 763.9682006835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9476423859596252, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 87.840302, "t": 755.538002, "r": 328.72537, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.33735656738281, "t": 73.39700317382812, "r": 267.40582, "b": 89.61579895019531, "coord_origin": "TOPLEFT"}, "confidence": 0.9651358127593994, "cells": [{"id": 2, "text": "1.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.524292, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Security fundamentals", "bbox": {"l": 92.069145, "t": 74.34069999999997, "r": 267.40582, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 136.23556518554688, "t": 106.02731323242188, "r": 545.00482, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9663435220718384, "cells": [{"id": 4, "text": "Before reviewing database security techniques, there are two fundamental steps in securing ", "bbox": {"l": 136.8, "t": 106.6087, "r": 545.00482, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "information assets that must be described:", "bbox": {"l": 136.8, "t": 118.60852, "r": 324.47229, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 135.66490173339844, "t": 134.66909790039062, "r": 547.16425, "b": 181.15467834472656, "coord_origin": "TOPLEFT"}, "confidence": 0.9835494756698608, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 135.79749000000004, "r": 141.78, "b": 144.57227, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "First, and most important, is the definition of a company\u2019s ", "bbox": {"l": 151.20016, "t": 135.64806999999996, "r": 406.67715, "b": 144.86108000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "security policy", "bbox": {"l": 406.67999, "t": 135.12487999999996, "r": 471.03815, "b": 145.18262000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": ". Without a ", "bbox": {"l": 470.04001000000005, "t": 135.64862000000005, "r": 520.59796, "b": 144.86163, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "security policy, there is no definition of what are acceptable practices for using, accessing, ", "bbox": {"l": 151.19949, "t": 147.64844000000005, "r": 547.16425, "b": 156.86145, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "and storing information by who, what, when, where, and how. A security policy should ", "bbox": {"l": 151.19948, "t": 159.64824999999996, "r": 531.02008, "b": 168.86127, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "minimally address three things: confidentiality, integrity, and availability.", "bbox": {"l": 151.19948, "t": 171.64806999999996, "r": 463.3578499999999, "b": 180.86108000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 150.2132110595703, "t": 187.9793701171875, "r": 547.26086, "b": 270.5374450683594, "coord_origin": "TOPLEFT"}, "confidence": 0.8077321648597717, "cells": [{"id": 13, "text": "The monitoring and assessment of adherence to the security policy determines whether ", "bbox": {"l": 151.19948, "t": 188.62787000000003, "r": 541.70514, "b": 197.84087999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "your security strategy is working. Often, IBM security consultants are asked to perform ", "bbox": {"l": 151.19948, "t": 200.62769000000003, "r": 534.83002, "b": 209.84069999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "security assessments for companies without regard to the security policy. Although these ", "bbox": {"l": 151.19948, "t": 212.62750000000005, "r": 545.79773, "b": 221.84051999999997, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "assessments can be useful for observing how the system is defined and how data is being ", "bbox": {"l": 151.19948, "t": 224.62732000000005, "r": 547.26086, "b": 233.84033, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "accessed, they cannot determine the level of security without a security policy. Without a ", "bbox": {"l": 151.19948, "t": 236.62714000000005, "r": 543.91528, "b": 245.84015, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "security policy, it really is not an assessment as much as it is a baseline for monitoring the ", "bbox": {"l": 151.19948, "t": 248.62694999999997, "r": 547.25989, "b": 257.83997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "changes in the security settings that are captured.", "bbox": {"l": 151.19946, "t": 260.62676999999996, "r": 371.8692, "b": 269.83978, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 150.1995086669922, "t": 276.76263427734375, "r": 541.992, "b": 287.0709533691406, "coord_origin": "TOPLEFT"}, "confidence": 0.7967227697372437, "cells": [{"id": 20, "text": "A security policy is what defines whether the system and its settings are secure (or not). ", "bbox": {"l": 151.19946, "t": 277.60657000000003, "r": 541.992, "b": 286.81958, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.4777374267578, "t": 293.81439208984375, "r": 547.15826, "b": 376.5453796386719, "coord_origin": "TOPLEFT"}, "confidence": 0.9837487936019897, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.7993, "t": 294.7955600000001, "r": 141.7793, "b": 303.57034, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "The second fundamental in securing data assets is the use of ", "bbox": {"l": 151.19946, "t": 294.64618, "r": 425.86029, "b": 303.85916, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "resource security", "bbox": {"l": 425.82001, "t": 294.12496999999996, "r": 501.60065, "b": 304.18265, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": ". If ", "bbox": {"l": 500.64001, "t": 294.64871, "r": 514.49933, "b": 303.86169, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "implemented properly, resource security prevents data breaches from both internal and ", "bbox": {"l": 151.20038, "t": 306.64853, "r": 537.87421, "b": 315.86151, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "external intrusions. Resource security controls are closely tied to the part of the security ", "bbox": {"l": 151.20038, "t": 318.64834999999994, "r": 541.33636, "b": 327.86133, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "policy that defines who should have access to what information resources. A hacker might ", "bbox": {"l": 151.20038, "t": 330.64816, "r": 547.15826, "b": 339.86115, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "be good enough to get through your company firewalls and sift his way through to your ", "bbox": {"l": 151.20038, "t": 342.64798, "r": 534.86066, "b": 351.86096, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "system, but if they do not have explicit access to your database, the hacker cannot ", "bbox": {"l": 151.20038, "t": 354.6478, "r": 517.00739, "b": 363.86078, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "compromise your information assets.", "bbox": {"l": 151.20038, "t": 366.64761, "r": 314.03534, "b": 375.8606, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 135.90879821777344, "t": 388.12286376953125, "r": 535.36169, "b": 410.3081359863281, "coord_origin": "TOPLEFT"}, "confidence": 0.9622000455856323, "cells": [{"id": 31, "text": "With your eyes now open to the importance of securing information assets, the rest of this ", "bbox": {"l": 136.80022, "t": 388.60742, "r": 535.36169, "b": 397.82040000000006, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "chapter reviews the methods that are available for securing database resources on IBM i. ", "bbox": {"l": 136.80022, "t": 400.60724, "r": 532.755, "b": 409.82022, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "section_header", "bbox": {"l": 64.44733428955078, "t": 437.4118957519531, "r": 323.38391, "b": 453.6912841796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9650285243988037, "cells": [{"id": 33, "text": "1.2", "bbox": {"l": 64.800003, "t": 438.30072, "r": 87.415726, "b": 453.06372, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Current state of IBM i security", "bbox": {"l": 91.93885, "t": 438.30072, "r": 323.38391, "b": 453.06372, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 136.1368408203125, "t": 469.76971435546875, "r": 547.31824, "b": 516.47802734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9848750233650208, "cells": [{"id": 35, "text": "Because of the inherently secure nature of IBM i, many clients rely on the default system ", "bbox": {"l": 136.8, "t": 470.62872, "r": 530.30463, "b": 479.84171, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "settings to protect their business data that is stored in DB2 for i. In most cases, this means no ", "bbox": {"l": 136.8, "t": 482.62854, "r": 547.31824, "b": 491.84152, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "data protection because the default setting for the Create default public authority (QCRTAUT) ", "bbox": {"l": 136.8, "t": 494.62836, "r": 547.19586, "b": 503.84134, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "system value is *CHANGE.", "bbox": {"l": 136.8, "t": 506.62817, "r": 257.04709, "b": 515.84116, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 135.79974365234375, "t": 527.8772583007812, "r": 547.28442, "b": 585.85994, "coord_origin": "TOPLEFT"}, "confidence": 0.9848474860191345, "cells": [{"id": 39, "text": "Even more disturbing is that many IBM i clients remain in this state, despite the news ", "bbox": {"l": 136.8, "t": 528.64774, "r": 513.90448, "b": 537.86073, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "headlines and the significant costs that are involved with databases being compromised. This ", "bbox": {"l": 136.8, "t": 540.6475399999999, "r": 547.28442, "b": 549.86053, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "default security configuration makes it quite challenging to implement basic security policies. ", "bbox": {"l": 136.8, "t": 552.64734, "r": 546.27533, "b": 561.86034, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "A tighter implementation is required if you really want to protect one of your company\u2019s most ", "bbox": {"l": 136.8, "t": 564.64714, "r": 545.08014, "b": 573.86014, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "valuable assets, which is the data.", "bbox": {"l": 136.8, "t": 576.64694, "r": 287.80057, "b": 585.85994, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 135.8997802734375, "t": 598.1246337890625, "r": 547.28326, "b": 680.4212036132812, "coord_origin": "TOPLEFT"}, "confidence": 0.9870820045471191, "cells": [{"id": 44, "text": "Traditionally, IBM i applications have employed menu-based security to counteract this default ", "bbox": {"l": 136.8, "t": 598.6665, "r": 547.28326, "b": 607.8795, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "configuration that gives all users access to the data. The theory is that data is protected by ", "bbox": {"l": 136.8, "t": 610.6663100000001, "r": 538.6767, "b": 619.8793000000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "the menu options controlling what database operations that the user can perform. This ", "bbox": {"l": 136.8, "t": 622.66611, "r": 520.35364, "b": 631.8791, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "approach is ineffective, even if the user profile is restricted from running interactive ", "bbox": {"l": 136.80002, "t": 634.6659099999999, "r": 502.77115000000003, "b": 643.87891, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "commands. The reason is that in today\u2019s connected world there are a multitude of interfaces ", "bbox": {"l": 136.80002, "t": 646.66571, "r": 545.16492, "b": 655.87871, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "into the system, from web browsers to PC clients, that bypass application menus. If there are ", "bbox": {"l": 136.80002, "t": 658.66551, "r": 547.23376, "b": 667.87852, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "no object-level controls, users of these newer interfaces have an open door to your data.", "bbox": {"l": 136.80002, "t": 670.66532, "r": 526.04187, "b": 679.87833, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 17, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.92394256591797, "t": 754.286865234375, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8889444470405579, "cells": [{"id": 0, "text": "2 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "2"}, {"label": "page_footer", "id": 1, "page_no": 17, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 87.81553649902344, "t": 754.6853637695312, "r": 328.72537, "b": 763.9682006835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9476423859596252, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 87.840302, "t": 755.538002, "r": 328.72537, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "section_header", "id": 2, "page_no": 17, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.33735656738281, "t": 73.39700317382812, "r": 267.40582, "b": 89.61579895019531, "coord_origin": "TOPLEFT"}, "confidence": 0.9651358127593994, "cells": [{"id": 2, "text": "1.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.524292, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Security fundamentals", "bbox": {"l": 92.069145, "t": 74.34069999999997, "r": 267.40582, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, "text": "1.1 Security fundamentals"}, {"label": "text", "id": 3, "page_no": 17, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.23556518554688, "t": 106.02731323242188, "r": 545.00482, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9663435220718384, "cells": [{"id": 4, "text": "Before reviewing database security techniques, there are two fundamental steps in securing ", "bbox": {"l": 136.8, "t": 106.6087, "r": 545.00482, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "information assets that must be described:", "bbox": {"l": 136.8, "t": 118.60852, "r": 324.47229, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Before reviewing database security techniques, there are two fundamental steps in securing information assets that must be described:"}, {"label": "list_item", "id": 4, "page_no": 17, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.66490173339844, "t": 134.66909790039062, "r": 547.16425, "b": 181.15467834472656, "coord_origin": "TOPLEFT"}, "confidence": 0.9835494756698608, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 135.79749000000004, "r": 141.78, "b": 144.57227, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "First, and most important, is the definition of a company\u2019s ", "bbox": {"l": 151.20016, "t": 135.64806999999996, "r": 406.67715, "b": 144.86108000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "security policy", "bbox": {"l": 406.67999, "t": 135.12487999999996, "r": 471.03815, "b": 145.18262000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": ". Without a ", "bbox": {"l": 470.04001000000005, "t": 135.64862000000005, "r": 520.59796, "b": 144.86163, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "security policy, there is no definition of what are acceptable practices for using, accessing, ", "bbox": {"l": 151.19949, "t": 147.64844000000005, "r": 547.16425, "b": 156.86145, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "and storing information by who, what, when, where, and how. A security policy should ", "bbox": {"l": 151.19948, "t": 159.64824999999996, "r": 531.02008, "b": 168.86127, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "minimally address three things: confidentiality, integrity, and availability.", "bbox": {"l": 151.19948, "t": 171.64806999999996, "r": 463.3578499999999, "b": 180.86108000000002, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH First, and most important, is the definition of a company\u2019s security policy . Without a security policy, there is no definition of what are acceptable practices for using, accessing, and storing information by who, what, when, where, and how. A security policy should minimally address three things: confidentiality, integrity, and availability."}, {"label": "list_item", "id": 5, "page_no": 17, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 150.2132110595703, "t": 187.9793701171875, "r": 547.26086, "b": 270.5374450683594, "coord_origin": "TOPLEFT"}, "confidence": 0.8077321648597717, "cells": [{"id": 13, "text": "The monitoring and assessment of adherence to the security policy determines whether ", "bbox": {"l": 151.19948, "t": 188.62787000000003, "r": 541.70514, "b": 197.84087999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "your security strategy is working. Often, IBM security consultants are asked to perform ", "bbox": {"l": 151.19948, "t": 200.62769000000003, "r": 534.83002, "b": 209.84069999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "security assessments for companies without regard to the security policy. Although these ", "bbox": {"l": 151.19948, "t": 212.62750000000005, "r": 545.79773, "b": 221.84051999999997, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "assessments can be useful for observing how the system is defined and how data is being ", "bbox": {"l": 151.19948, "t": 224.62732000000005, "r": 547.26086, "b": 233.84033, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "accessed, they cannot determine the level of security without a security policy. Without a ", "bbox": {"l": 151.19948, "t": 236.62714000000005, "r": 543.91528, "b": 245.84015, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "security policy, it really is not an assessment as much as it is a baseline for monitoring the ", "bbox": {"l": 151.19948, "t": 248.62694999999997, "r": 547.25989, "b": 257.83997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "changes in the security settings that are captured.", "bbox": {"l": 151.19946, "t": 260.62676999999996, "r": 371.8692, "b": 269.83978, "coord_origin": "TOPLEFT"}}]}, "text": "The monitoring and assessment of adherence to the security policy determines whether your security strategy is working. Often, IBM security consultants are asked to perform security assessments for companies without regard to the security policy. Although these assessments can be useful for observing how the system is defined and how data is being accessed, they cannot determine the level of security without a security policy. Without a security policy, it really is not an assessment as much as it is a baseline for monitoring the changes in the security settings that are captured."}, {"label": "text", "id": 6, "page_no": 17, "cluster": {"id": 6, "label": "text", "bbox": {"l": 150.1995086669922, "t": 276.76263427734375, "r": 541.992, "b": 287.0709533691406, "coord_origin": "TOPLEFT"}, "confidence": 0.7967227697372437, "cells": [{"id": 20, "text": "A security policy is what defines whether the system and its settings are secure (or not). ", "bbox": {"l": 151.19946, "t": 277.60657000000003, "r": 541.992, "b": 286.81958, "coord_origin": "TOPLEFT"}}]}, "text": "A security policy is what defines whether the system and its settings are secure (or not)."}, {"label": "list_item", "id": 7, "page_no": 17, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.4777374267578, "t": 293.81439208984375, "r": 547.15826, "b": 376.5453796386719, "coord_origin": "TOPLEFT"}, "confidence": 0.9837487936019897, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.7993, "t": 294.7955600000001, "r": 141.7793, "b": 303.57034, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "The second fundamental in securing data assets is the use of ", "bbox": {"l": 151.19946, "t": 294.64618, "r": 425.86029, "b": 303.85916, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "resource security", "bbox": {"l": 425.82001, "t": 294.12496999999996, "r": 501.60065, "b": 304.18265, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": ". If ", "bbox": {"l": 500.64001, "t": 294.64871, "r": 514.49933, "b": 303.86169, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "implemented properly, resource security prevents data breaches from both internal and ", "bbox": {"l": 151.20038, "t": 306.64853, "r": 537.87421, "b": 315.86151, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "external intrusions. Resource security controls are closely tied to the part of the security ", "bbox": {"l": 151.20038, "t": 318.64834999999994, "r": 541.33636, "b": 327.86133, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "policy that defines who should have access to what information resources. A hacker might ", "bbox": {"l": 151.20038, "t": 330.64816, "r": 547.15826, "b": 339.86115, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "be good enough to get through your company firewalls and sift his way through to your ", "bbox": {"l": 151.20038, "t": 342.64798, "r": 534.86066, "b": 351.86096, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "system, but if they do not have explicit access to your database, the hacker cannot ", "bbox": {"l": 151.20038, "t": 354.6478, "r": 517.00739, "b": 363.86078, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "compromise your information assets.", "bbox": {"l": 151.20038, "t": 366.64761, "r": 314.03534, "b": 375.8606, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The second fundamental in securing data assets is the use of resource security . If implemented properly, resource security prevents data breaches from both internal and external intrusions. Resource security controls are closely tied to the part of the security policy that defines who should have access to what information resources. A hacker might be good enough to get through your company firewalls and sift his way through to your system, but if they do not have explicit access to your database, the hacker cannot compromise your information assets."}, {"label": "text", "id": 8, "page_no": 17, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.90879821777344, "t": 388.12286376953125, "r": 535.36169, "b": 410.3081359863281, "coord_origin": "TOPLEFT"}, "confidence": 0.9622000455856323, "cells": [{"id": 31, "text": "With your eyes now open to the importance of securing information assets, the rest of this ", "bbox": {"l": 136.80022, "t": 388.60742, "r": 535.36169, "b": 397.82040000000006, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "chapter reviews the methods that are available for securing database resources on IBM i. ", "bbox": {"l": 136.80022, "t": 400.60724, "r": 532.755, "b": 409.82022, "coord_origin": "TOPLEFT"}}]}, "text": "With your eyes now open to the importance of securing information assets, the rest of this chapter reviews the methods that are available for securing database resources on IBM i."}, {"label": "section_header", "id": 9, "page_no": 17, "cluster": {"id": 9, "label": "section_header", "bbox": {"l": 64.44733428955078, "t": 437.4118957519531, "r": 323.38391, "b": 453.6912841796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9650285243988037, "cells": [{"id": 33, "text": "1.2", "bbox": {"l": 64.800003, "t": 438.30072, "r": 87.415726, "b": 453.06372, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Current state of IBM i security", "bbox": {"l": 91.93885, "t": 438.30072, "r": 323.38391, "b": 453.06372, "coord_origin": "TOPLEFT"}}]}, "text": "1.2 Current state of IBM i security"}, {"label": "text", "id": 10, "page_no": 17, "cluster": {"id": 10, "label": "text", "bbox": {"l": 136.1368408203125, "t": 469.76971435546875, "r": 547.31824, "b": 516.47802734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9848750233650208, "cells": [{"id": 35, "text": "Because of the inherently secure nature of IBM i, many clients rely on the default system ", "bbox": {"l": 136.8, "t": 470.62872, "r": 530.30463, "b": 479.84171, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "settings to protect their business data that is stored in DB2 for i. In most cases, this means no ", "bbox": {"l": 136.8, "t": 482.62854, "r": 547.31824, "b": 491.84152, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "data protection because the default setting for the Create default public authority (QCRTAUT) ", "bbox": {"l": 136.8, "t": 494.62836, "r": 547.19586, "b": 503.84134, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "system value is *CHANGE.", "bbox": {"l": 136.8, "t": 506.62817, "r": 257.04709, "b": 515.84116, "coord_origin": "TOPLEFT"}}]}, "text": "Because of the inherently secure nature of IBM i, many clients rely on the default system settings to protect their business data that is stored in DB2 for i. In most cases, this means no data protection because the default setting for the Create default public authority (QCRTAUT) system value is *CHANGE."}, {"label": "text", "id": 11, "page_no": 17, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.79974365234375, "t": 527.8772583007812, "r": 547.28442, "b": 585.85994, "coord_origin": "TOPLEFT"}, "confidence": 0.9848474860191345, "cells": [{"id": 39, "text": "Even more disturbing is that many IBM i clients remain in this state, despite the news ", "bbox": {"l": 136.8, "t": 528.64774, "r": 513.90448, "b": 537.86073, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "headlines and the significant costs that are involved with databases being compromised. This ", "bbox": {"l": 136.8, "t": 540.6475399999999, "r": 547.28442, "b": 549.86053, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "default security configuration makes it quite challenging to implement basic security policies. ", "bbox": {"l": 136.8, "t": 552.64734, "r": 546.27533, "b": 561.86034, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "A tighter implementation is required if you really want to protect one of your company\u2019s most ", "bbox": {"l": 136.8, "t": 564.64714, "r": 545.08014, "b": 573.86014, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "valuable assets, which is the data.", "bbox": {"l": 136.8, "t": 576.64694, "r": 287.80057, "b": 585.85994, "coord_origin": "TOPLEFT"}}]}, "text": "Even more disturbing is that many IBM i clients remain in this state, despite the news headlines and the significant costs that are involved with databases being compromised. This default security configuration makes it quite challenging to implement basic security policies. A tighter implementation is required if you really want to protect one of your company\u2019s most valuable assets, which is the data."}, {"label": "text", "id": 12, "page_no": 17, "cluster": {"id": 12, "label": "text", "bbox": {"l": 135.8997802734375, "t": 598.1246337890625, "r": 547.28326, "b": 680.4212036132812, "coord_origin": "TOPLEFT"}, "confidence": 0.9870820045471191, "cells": [{"id": 44, "text": "Traditionally, IBM i applications have employed menu-based security to counteract this default ", "bbox": {"l": 136.8, "t": 598.6665, "r": 547.28326, "b": 607.8795, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "configuration that gives all users access to the data. The theory is that data is protected by ", "bbox": {"l": 136.8, "t": 610.6663100000001, "r": 538.6767, "b": 619.8793000000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "the menu options controlling what database operations that the user can perform. This ", "bbox": {"l": 136.8, "t": 622.66611, "r": 520.35364, "b": 631.8791, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "approach is ineffective, even if the user profile is restricted from running interactive ", "bbox": {"l": 136.80002, "t": 634.6659099999999, "r": 502.77115000000003, "b": 643.87891, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "commands. The reason is that in today\u2019s connected world there are a multitude of interfaces ", "bbox": {"l": 136.80002, "t": 646.66571, "r": 545.16492, "b": 655.87871, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "into the system, from web browsers to PC clients, that bypass application menus. If there are ", "bbox": {"l": 136.80002, "t": 658.66551, "r": 547.23376, "b": 667.87852, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "no object-level controls, users of these newer interfaces have an open door to your data.", "bbox": {"l": 136.80002, "t": 670.66532, "r": 526.04187, "b": 679.87833, "coord_origin": "TOPLEFT"}}]}, "text": "Traditionally, IBM i applications have employed menu-based security to counteract this default configuration that gives all users access to the data. The theory is that data is protected by the menu options controlling what database operations that the user can perform. This approach is ineffective, even if the user profile is restricted from running interactive commands. The reason is that in today\u2019s connected world there are a multitude of interfaces into the system, from web browsers to PC clients, that bypass application menus. If there are no object-level controls, users of these newer interfaces have an open door to your data."}], "body": [{"label": "section_header", "id": 2, "page_no": 17, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.33735656738281, "t": 73.39700317382812, "r": 267.40582, "b": 89.61579895019531, "coord_origin": "TOPLEFT"}, "confidence": 0.9651358127593994, "cells": [{"id": 2, "text": "1.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.524292, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Security fundamentals", "bbox": {"l": 92.069145, "t": 74.34069999999997, "r": 267.40582, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, "text": "1.1 Security fundamentals"}, {"label": "text", "id": 3, "page_no": 17, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.23556518554688, "t": 106.02731323242188, "r": 545.00482, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9663435220718384, "cells": [{"id": 4, "text": "Before reviewing database security techniques, there are two fundamental steps in securing ", "bbox": {"l": 136.8, "t": 106.6087, "r": 545.00482, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "information assets that must be described:", "bbox": {"l": 136.8, "t": 118.60852, "r": 324.47229, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Before reviewing database security techniques, there are two fundamental steps in securing information assets that must be described:"}, {"label": "list_item", "id": 4, "page_no": 17, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.66490173339844, "t": 134.66909790039062, "r": 547.16425, "b": 181.15467834472656, "coord_origin": "TOPLEFT"}, "confidence": 0.9835494756698608, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 135.79749000000004, "r": 141.78, "b": 144.57227, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "First, and most important, is the definition of a company\u2019s ", "bbox": {"l": 151.20016, "t": 135.64806999999996, "r": 406.67715, "b": 144.86108000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "security policy", "bbox": {"l": 406.67999, "t": 135.12487999999996, "r": 471.03815, "b": 145.18262000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": ". Without a ", "bbox": {"l": 470.04001000000005, "t": 135.64862000000005, "r": 520.59796, "b": 144.86163, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "security policy, there is no definition of what are acceptable practices for using, accessing, ", "bbox": {"l": 151.19949, "t": 147.64844000000005, "r": 547.16425, "b": 156.86145, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "and storing information by who, what, when, where, and how. A security policy should ", "bbox": {"l": 151.19948, "t": 159.64824999999996, "r": 531.02008, "b": 168.86127, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "minimally address three things: confidentiality, integrity, and availability.", "bbox": {"l": 151.19948, "t": 171.64806999999996, "r": 463.3578499999999, "b": 180.86108000000002, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH First, and most important, is the definition of a company\u2019s security policy . Without a security policy, there is no definition of what are acceptable practices for using, accessing, and storing information by who, what, when, where, and how. A security policy should minimally address three things: confidentiality, integrity, and availability."}, {"label": "list_item", "id": 5, "page_no": 17, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 150.2132110595703, "t": 187.9793701171875, "r": 547.26086, "b": 270.5374450683594, "coord_origin": "TOPLEFT"}, "confidence": 0.8077321648597717, "cells": [{"id": 13, "text": "The monitoring and assessment of adherence to the security policy determines whether ", "bbox": {"l": 151.19948, "t": 188.62787000000003, "r": 541.70514, "b": 197.84087999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "your security strategy is working. Often, IBM security consultants are asked to perform ", "bbox": {"l": 151.19948, "t": 200.62769000000003, "r": 534.83002, "b": 209.84069999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "security assessments for companies without regard to the security policy. Although these ", "bbox": {"l": 151.19948, "t": 212.62750000000005, "r": 545.79773, "b": 221.84051999999997, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "assessments can be useful for observing how the system is defined and how data is being ", "bbox": {"l": 151.19948, "t": 224.62732000000005, "r": 547.26086, "b": 233.84033, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "accessed, they cannot determine the level of security without a security policy. Without a ", "bbox": {"l": 151.19948, "t": 236.62714000000005, "r": 543.91528, "b": 245.84015, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "security policy, it really is not an assessment as much as it is a baseline for monitoring the ", "bbox": {"l": 151.19948, "t": 248.62694999999997, "r": 547.25989, "b": 257.83997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "changes in the security settings that are captured.", "bbox": {"l": 151.19946, "t": 260.62676999999996, "r": 371.8692, "b": 269.83978, "coord_origin": "TOPLEFT"}}]}, "text": "The monitoring and assessment of adherence to the security policy determines whether your security strategy is working. Often, IBM security consultants are asked to perform security assessments for companies without regard to the security policy. Although these assessments can be useful for observing how the system is defined and how data is being accessed, they cannot determine the level of security without a security policy. Without a security policy, it really is not an assessment as much as it is a baseline for monitoring the changes in the security settings that are captured."}, {"label": "text", "id": 6, "page_no": 17, "cluster": {"id": 6, "label": "text", "bbox": {"l": 150.1995086669922, "t": 276.76263427734375, "r": 541.992, "b": 287.0709533691406, "coord_origin": "TOPLEFT"}, "confidence": 0.7967227697372437, "cells": [{"id": 20, "text": "A security policy is what defines whether the system and its settings are secure (or not). ", "bbox": {"l": 151.19946, "t": 277.60657000000003, "r": 541.992, "b": 286.81958, "coord_origin": "TOPLEFT"}}]}, "text": "A security policy is what defines whether the system and its settings are secure (or not)."}, {"label": "list_item", "id": 7, "page_no": 17, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.4777374267578, "t": 293.81439208984375, "r": 547.15826, "b": 376.5453796386719, "coord_origin": "TOPLEFT"}, "confidence": 0.9837487936019897, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.7993, "t": 294.7955600000001, "r": 141.7793, "b": 303.57034, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "The second fundamental in securing data assets is the use of ", "bbox": {"l": 151.19946, "t": 294.64618, "r": 425.86029, "b": 303.85916, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "resource security", "bbox": {"l": 425.82001, "t": 294.12496999999996, "r": 501.60065, "b": 304.18265, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": ". If ", "bbox": {"l": 500.64001, "t": 294.64871, "r": 514.49933, "b": 303.86169, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "implemented properly, resource security prevents data breaches from both internal and ", "bbox": {"l": 151.20038, "t": 306.64853, "r": 537.87421, "b": 315.86151, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "external intrusions. Resource security controls are closely tied to the part of the security ", "bbox": {"l": 151.20038, "t": 318.64834999999994, "r": 541.33636, "b": 327.86133, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "policy that defines who should have access to what information resources. A hacker might ", "bbox": {"l": 151.20038, "t": 330.64816, "r": 547.15826, "b": 339.86115, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "be good enough to get through your company firewalls and sift his way through to your ", "bbox": {"l": 151.20038, "t": 342.64798, "r": 534.86066, "b": 351.86096, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "system, but if they do not have explicit access to your database, the hacker cannot ", "bbox": {"l": 151.20038, "t": 354.6478, "r": 517.00739, "b": 363.86078, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "compromise your information assets.", "bbox": {"l": 151.20038, "t": 366.64761, "r": 314.03534, "b": 375.8606, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The second fundamental in securing data assets is the use of resource security . If implemented properly, resource security prevents data breaches from both internal and external intrusions. Resource security controls are closely tied to the part of the security policy that defines who should have access to what information resources. A hacker might be good enough to get through your company firewalls and sift his way through to your system, but if they do not have explicit access to your database, the hacker cannot compromise your information assets."}, {"label": "text", "id": 8, "page_no": 17, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.90879821777344, "t": 388.12286376953125, "r": 535.36169, "b": 410.3081359863281, "coord_origin": "TOPLEFT"}, "confidence": 0.9622000455856323, "cells": [{"id": 31, "text": "With your eyes now open to the importance of securing information assets, the rest of this ", "bbox": {"l": 136.80022, "t": 388.60742, "r": 535.36169, "b": 397.82040000000006, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "chapter reviews the methods that are available for securing database resources on IBM i. ", "bbox": {"l": 136.80022, "t": 400.60724, "r": 532.755, "b": 409.82022, "coord_origin": "TOPLEFT"}}]}, "text": "With your eyes now open to the importance of securing information assets, the rest of this chapter reviews the methods that are available for securing database resources on IBM i."}, {"label": "section_header", "id": 9, "page_no": 17, "cluster": {"id": 9, "label": "section_header", "bbox": {"l": 64.44733428955078, "t": 437.4118957519531, "r": 323.38391, "b": 453.6912841796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9650285243988037, "cells": [{"id": 33, "text": "1.2", "bbox": {"l": 64.800003, "t": 438.30072, "r": 87.415726, "b": 453.06372, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Current state of IBM i security", "bbox": {"l": 91.93885, "t": 438.30072, "r": 323.38391, "b": 453.06372, "coord_origin": "TOPLEFT"}}]}, "text": "1.2 Current state of IBM i security"}, {"label": "text", "id": 10, "page_no": 17, "cluster": {"id": 10, "label": "text", "bbox": {"l": 136.1368408203125, "t": 469.76971435546875, "r": 547.31824, "b": 516.47802734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9848750233650208, "cells": [{"id": 35, "text": "Because of the inherently secure nature of IBM i, many clients rely on the default system ", "bbox": {"l": 136.8, "t": 470.62872, "r": 530.30463, "b": 479.84171, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "settings to protect their business data that is stored in DB2 for i. In most cases, this means no ", "bbox": {"l": 136.8, "t": 482.62854, "r": 547.31824, "b": 491.84152, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "data protection because the default setting for the Create default public authority (QCRTAUT) ", "bbox": {"l": 136.8, "t": 494.62836, "r": 547.19586, "b": 503.84134, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "system value is *CHANGE.", "bbox": {"l": 136.8, "t": 506.62817, "r": 257.04709, "b": 515.84116, "coord_origin": "TOPLEFT"}}]}, "text": "Because of the inherently secure nature of IBM i, many clients rely on the default system settings to protect their business data that is stored in DB2 for i. In most cases, this means no data protection because the default setting for the Create default public authority (QCRTAUT) system value is *CHANGE."}, {"label": "text", "id": 11, "page_no": 17, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.79974365234375, "t": 527.8772583007812, "r": 547.28442, "b": 585.85994, "coord_origin": "TOPLEFT"}, "confidence": 0.9848474860191345, "cells": [{"id": 39, "text": "Even more disturbing is that many IBM i clients remain in this state, despite the news ", "bbox": {"l": 136.8, "t": 528.64774, "r": 513.90448, "b": 537.86073, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "headlines and the significant costs that are involved with databases being compromised. This ", "bbox": {"l": 136.8, "t": 540.6475399999999, "r": 547.28442, "b": 549.86053, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "default security configuration makes it quite challenging to implement basic security policies. ", "bbox": {"l": 136.8, "t": 552.64734, "r": 546.27533, "b": 561.86034, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "A tighter implementation is required if you really want to protect one of your company\u2019s most ", "bbox": {"l": 136.8, "t": 564.64714, "r": 545.08014, "b": 573.86014, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "valuable assets, which is the data.", "bbox": {"l": 136.8, "t": 576.64694, "r": 287.80057, "b": 585.85994, "coord_origin": "TOPLEFT"}}]}, "text": "Even more disturbing is that many IBM i clients remain in this state, despite the news headlines and the significant costs that are involved with databases being compromised. This default security configuration makes it quite challenging to implement basic security policies. A tighter implementation is required if you really want to protect one of your company\u2019s most valuable assets, which is the data."}, {"label": "text", "id": 12, "page_no": 17, "cluster": {"id": 12, "label": "text", "bbox": {"l": 135.8997802734375, "t": 598.1246337890625, "r": 547.28326, "b": 680.4212036132812, "coord_origin": "TOPLEFT"}, "confidence": 0.9870820045471191, "cells": [{"id": 44, "text": "Traditionally, IBM i applications have employed menu-based security to counteract this default ", "bbox": {"l": 136.8, "t": 598.6665, "r": 547.28326, "b": 607.8795, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "configuration that gives all users access to the data. The theory is that data is protected by ", "bbox": {"l": 136.8, "t": 610.6663100000001, "r": 538.6767, "b": 619.8793000000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "the menu options controlling what database operations that the user can perform. This ", "bbox": {"l": 136.8, "t": 622.66611, "r": 520.35364, "b": 631.8791, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "approach is ineffective, even if the user profile is restricted from running interactive ", "bbox": {"l": 136.80002, "t": 634.6659099999999, "r": 502.77115000000003, "b": 643.87891, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "commands. The reason is that in today\u2019s connected world there are a multitude of interfaces ", "bbox": {"l": 136.80002, "t": 646.66571, "r": 545.16492, "b": 655.87871, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "into the system, from web browsers to PC clients, that bypass application menus. If there are ", "bbox": {"l": 136.80002, "t": 658.66551, "r": 547.23376, "b": 667.87852, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "no object-level controls, users of these newer interfaces have an open door to your data.", "bbox": {"l": 136.80002, "t": 670.66532, "r": 526.04187, "b": 679.87833, "coord_origin": "TOPLEFT"}}]}, "text": "Traditionally, IBM i applications have employed menu-based security to counteract this default configuration that gives all users access to the data. The theory is that data is protected by the menu options controlling what database operations that the user can perform. This approach is ineffective, even if the user profile is restricted from running interactive commands. The reason is that in today\u2019s connected world there are a multitude of interfaces into the system, from web browsers to PC clients, that bypass application menus. If there are no object-level controls, users of these newer interfaces have an open door to your data."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 17, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.92394256591797, "t": 754.286865234375, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8889444470405579, "cells": [{"id": 0, "text": "2 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "2"}, {"label": "page_footer", "id": 1, "page_no": 17, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 87.81553649902344, "t": 754.6853637695312, "r": 328.72537, "b": 763.9682006835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9476423859596252, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 87.840302, "t": 755.538002, "r": 328.72537, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 18, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 1. Securing and protecting IBM DB2 data ", "bbox": {"l": 328.67999, "t": 755.538002, "r": 529.10632, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "3", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Some clients using this default configuration have toughened their database security with ", "bbox": {"l": 136.7999, "t": 71.50903000000005, "r": 532.22772, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "exit-point solutions from third-party vendors. IBM i exit points allow a user-written program to ", "bbox": {"l": 136.7999, "t": 83.50885000000017, "r": 546.43982, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "be called every time that a particular interface (for example, FTP) is used or an event occurs ", "bbox": {"l": 136.7999, "t": 95.50867000000005, "r": 545.43481, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "(for example, a profile is created). Security tools that are based on these exit points increase ", "bbox": {"l": 136.7999, "t": 107.50847999999996, "r": 546.36505, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "the level of security on a system by locking down interfaces that are not under the control of ", "bbox": {"l": 136.7999, "t": 119.50829999999996, "r": 542.84106, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "menu-based or application authority. In addition, exit-point solutions allow clients to ", "bbox": {"l": 136.7999, "t": 131.50811999999996, "r": 504.82483, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "implement more granular security controls, such as allowing users access only to the ", "bbox": {"l": 136.7999, "t": 143.50793, "r": 514.11053, "b": 152.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "database during certain hours of the day.", "bbox": {"l": 136.7999, "t": 155.50775, "r": 317.74625, "b": 164.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Although exit-point solutions can provide great benefits, they are not an alternative to ", "bbox": {"l": 136.7999, "t": 177.52733999999998, "r": 513.7002, "b": 186.74036, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "object-level control of your databases. Exit-point solutions help secure interfaces, but they do ", "bbox": {"l": 136.7999, "t": 189.52715999999998, "r": 547.2666, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "not completely protect the data that is stored in your DB2 objects. Exit points do not exist for ", "bbox": {"l": 136.7999, "t": 201.52697999999998, "r": 544.81219, "b": 210.73999000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "every data access interface on the system. Therefore, if an application starts using an ", "bbox": {"l": 136.7999, "t": 213.52679, "r": 517.20105, "b": 222.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "unprotected interface, the only thing protecting your data is object-level access control. When ", "bbox": {"l": 136.7999, "t": 225.52661, "r": 547.23248, "b": 234.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "your security implementation totally relies on exit points, then it is also important to track any ", "bbox": {"l": 136.7999, "t": 237.52643, "r": 546.36804, "b": 246.73943999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "new data interfaces that appear as IBM delivers new releases and products to ensure that ", "bbox": {"l": 136.7999, "t": 249.52625, "r": 535.90399, "b": 258.73925999999994, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "your exit-point solution provides coverage for those new interfaces.", "bbox": {"l": 136.7999, "t": 261.52606000000003, "r": 430.80014, "b": 270.73906999999997, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "An exit-point solution is a good option for databases with security holes that are caused by a ", "bbox": {"l": 136.7999, "t": 283.4859, "r": 546.22662, "b": 292.69888, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "reliance on the default security setup or menu-based control. However, your security work ", "bbox": {"l": 136.7999, "t": 295.48572, "r": 534.57117, "b": 304.6986999999999, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "should not stop there. Instead, you must continue to work on a complete database security ", "bbox": {"l": 136.7999, "t": 307.48553000000004, "r": 539.19958, "b": 316.69852000000003, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "solution by controlling data access at the object level.", "bbox": {"l": 136.7999, "t": 319.48535, "r": 371.62982, "b": 328.69833, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "1.3", "bbox": {"l": 64.800003, "t": 357.18073, "r": 87.399879, "b": 371.94373, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "DB2 for i security controls", "bbox": {"l": 91.919853, "t": 357.18073, "r": 295.20493, "b": 371.94373, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "As described in 1.2, \u201cCurrent state of IBM i security\u201d on page 2, object-level controls on your ", "bbox": {"l": 136.8, "t": 389.50872999999996, "r": 545.23871, "b": 398.72171, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "DB2 objects are a critical success factor in securing your business data. Although database ", "bbox": {"l": 136.8, "t": 401.50854, "r": 543.08527, "b": 410.72153, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "object-level security is a strong security feature, some clients have found that object-level ", "bbox": {"l": 136.8, "t": 413.50836, "r": 531.52155, "b": 422.72134, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "security does not have the granularity that is required to adhere to regulatory or compliance ", "bbox": {"l": 136.8, "t": 425.5081799999999, "r": 542.76959, "b": 434.72116, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "policies. A user that is granted object-level access to a DB2 table has the authority to view all ", "bbox": {"l": 136.8, "t": 437.50800000000004, "r": 547.16888, "b": 446.72098, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "of the rows and values in that table.", "bbox": {"l": 136.8, "t": 449.50781, "r": 293.37024, "b": 458.7207900000001, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "As shown in Figure 1-1, it is an all-or-nothing access to the rows of a table.", "bbox": {"l": 136.8, "t": 471.52737, "r": 466.31863, "b": 480.74036, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Figure 1-1 All-or-nothing access to the rows of a table", "bbox": {"l": 136.8, "t": 702.977905, "r": 354.75031, "b": 711.302902, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "The Business Problem\u0085", "bbox": {"l": 145.2338, "t": 503.53342, "r": 362.0163, "b": 522.87445, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Tb", "bbox": {"l": 409.74301, "t": 595.9722899999999, "r": 459.25156, "b": 616.33128, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "l", "bbox": {"l": 448.32556, "t": 595.9722899999999, "r": 465.547, "b": 616.33128, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Database", "bbox": {"l": 164.4601, "t": 590.54692, "r": 210.09276, "b": 599.79594, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Table", "bbox": {"l": 409.74301, "t": 595.9722899999999, "r": 467.19213999999994, "b": 616.33128, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Access: ALL or NOTHING", "bbox": {"l": 247.7847, "t": 599.80522, "r": 375.65561, "b": 609.0542399999999, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "User", "bbox": {"l": 175.87869, "t": 609.06352, "r": 198.69092, "b": 618.31255, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "No easy way to restrict access to a specific set of rows", "bbox": {"l": 152.39349, "t": 681.3484100000001, "r": 472.28308, "b": 694.232826, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 328.2245788574219, "t": 754.796142578125, "r": 529.10632, "b": 764.0894775390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9508112072944641, "cells": [{"id": 0, "text": "Chapter 1. Securing and protecting IBM DB2 data ", "bbox": {"l": 328.67999, "t": 755.538002, "r": 529.10632, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 540.928466796875, "t": 754.3477783203125, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8825920820236206, "cells": [{"id": 1, "text": "3", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 136.11676025390625, "t": 70.81370544433594, "r": 546.43982, "b": 165.12799072265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9880445599555969, "cells": [{"id": 2, "text": "Some clients using this default configuration have toughened their database security with ", "bbox": {"l": 136.7999, "t": 71.50903000000005, "r": 532.22772, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "exit-point solutions from third-party vendors. IBM i exit points allow a user-written program to ", "bbox": {"l": 136.7999, "t": 83.50885000000017, "r": 546.43982, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "be called every time that a particular interface (for example, FTP) is used or an event occurs ", "bbox": {"l": 136.7999, "t": 95.50867000000005, "r": 545.43481, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "(for example, a profile is created). Security tools that are based on these exit points increase ", "bbox": {"l": 136.7999, "t": 107.50847999999996, "r": 546.36505, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "the level of security on a system by locking down interfaces that are not under the control of ", "bbox": {"l": 136.7999, "t": 119.50829999999996, "r": 542.84106, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "menu-based or application authority. In addition, exit-point solutions allow clients to ", "bbox": {"l": 136.7999, "t": 131.50811999999996, "r": 504.82483, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "implement more granular security controls, such as allowing users access only to the ", "bbox": {"l": 136.7999, "t": 143.50793, "r": 514.11053, "b": 152.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "database during certain hours of the day.", "bbox": {"l": 136.7999, "t": 155.50775, "r": 317.74625, "b": 164.72076000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.7813262939453, "t": 176.89154052734375, "r": 547.2666, "b": 271.1439514160156, "coord_origin": "TOPLEFT"}, "confidence": 0.9884217381477356, "cells": [{"id": 10, "text": "Although exit-point solutions can provide great benefits, they are not an alternative to ", "bbox": {"l": 136.7999, "t": 177.52733999999998, "r": 513.7002, "b": 186.74036, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "object-level control of your databases. Exit-point solutions help secure interfaces, but they do ", "bbox": {"l": 136.7999, "t": 189.52715999999998, "r": 547.2666, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "not completely protect the data that is stored in your DB2 objects. Exit points do not exist for ", "bbox": {"l": 136.7999, "t": 201.52697999999998, "r": 544.81219, "b": 210.73999000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "every data access interface on the system. Therefore, if an application starts using an ", "bbox": {"l": 136.7999, "t": 213.52679, "r": 517.20105, "b": 222.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "unprotected interface, the only thing protecting your data is object-level access control. When ", "bbox": {"l": 136.7999, "t": 225.52661, "r": 547.23248, "b": 234.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "your security implementation totally relies on exit points, then it is also important to track any ", "bbox": {"l": 136.7999, "t": 237.52643, "r": 546.36804, "b": 246.73943999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "new data interfaces that appear as IBM delivers new releases and products to ensure that ", "bbox": {"l": 136.7999, "t": 249.52625, "r": 535.90399, "b": 258.73925999999994, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "your exit-point solution provides coverage for those new interfaces.", "bbox": {"l": 136.7999, "t": 261.52606000000003, "r": 430.80014, "b": 270.73906999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.8739471435547, "t": 282.6854553222656, "r": 546.22662, "b": 329.1358337402344, "coord_origin": "TOPLEFT"}, "confidence": 0.987811267375946, "cells": [{"id": 18, "text": "An exit-point solution is a good option for databases with security holes that are caused by a ", "bbox": {"l": 136.7999, "t": 283.4859, "r": 546.22662, "b": 292.69888, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "reliance on the default security setup or menu-based control. However, your security work ", "bbox": {"l": 136.7999, "t": 295.48572, "r": 534.57117, "b": 304.6986999999999, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "should not stop there. Instead, you must continue to work on a complete database security ", "bbox": {"l": 136.7999, "t": 307.48553000000004, "r": 539.19958, "b": 316.69852000000003, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "solution by controlling data access at the object level.", "bbox": {"l": 136.7999, "t": 319.48535, "r": 371.62982, "b": 328.69833, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "section_header", "bbox": {"l": 64.800003, "t": 356.1169738769531, "r": 295.20493, "b": 372.2132873535156, "coord_origin": "TOPLEFT"}, "confidence": 0.9654257893562317, "cells": [{"id": 22, "text": "1.3", "bbox": {"l": 64.800003, "t": 357.18073, "r": 87.399879, "b": 371.94373, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "DB2 for i security controls", "bbox": {"l": 91.919853, "t": 357.18073, "r": 295.20493, "b": 371.94373, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 135.9359893798828, "t": 388.60498046875, "r": 547.16888, "b": 458.7207900000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9873308539390564, "cells": [{"id": 24, "text": "As described in 1.2, \u201cCurrent state of IBM i security\u201d on page 2, object-level controls on your ", "bbox": {"l": 136.8, "t": 389.50872999999996, "r": 545.23871, "b": 398.72171, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "DB2 objects are a critical success factor in securing your business data. Although database ", "bbox": {"l": 136.8, "t": 401.50854, "r": 543.08527, "b": 410.72153, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "object-level security is a strong security feature, some clients have found that object-level ", "bbox": {"l": 136.8, "t": 413.50836, "r": 531.52155, "b": 422.72134, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "security does not have the granularity that is required to adhere to regulatory or compliance ", "bbox": {"l": 136.8, "t": 425.5081799999999, "r": 542.76959, "b": 434.72116, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "policies. A user that is granted object-level access to a DB2 table has the authority to view all ", "bbox": {"l": 136.8, "t": 437.50800000000004, "r": 547.16888, "b": 446.72098, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "of the rows and values in that table.", "bbox": {"l": 136.8, "t": 449.50781, "r": 293.37024, "b": 458.7207900000001, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 135.52011108398438, "t": 470.60333251953125, "r": 466.31863, "b": 480.9595947265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9494351744651794, "cells": [{"id": 30, "text": "As shown in Figure 1-1, it is an all-or-nothing access to the rows of a table.", "bbox": {"l": 136.8, "t": 471.52737, "r": 466.31863, "b": 480.74036, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "caption", "bbox": {"l": 135.93324279785156, "t": 702.1747436523438, "r": 354.8916015625, "b": 711.3971557617188, "coord_origin": "TOPLEFT"}, "confidence": 0.9390377402305603, "cells": [{"id": 31, "text": "Figure 1-1 All-or-nothing access to the rows of a table", "bbox": {"l": 136.8, "t": 702.977905, "r": 354.75031, "b": 711.302902, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "picture", "bbox": {"l": 136.6387176513672, "t": 495.7486877441406, "r": 491.2538146972656, "b": 699.0596923828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9797728061676025, "cells": [{"id": 32, "text": "The Business Problem\u0085", "bbox": {"l": 145.2338, "t": 503.53342, "r": 362.0163, "b": 522.87445, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Tb", "bbox": {"l": 409.74301, "t": 595.9722899999999, "r": 459.25156, "b": 616.33128, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "l", "bbox": {"l": 448.32556, "t": 595.9722899999999, "r": 465.547, "b": 616.33128, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Database", "bbox": {"l": 164.4601, "t": 590.54692, "r": 210.09276, "b": 599.79594, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Table", "bbox": {"l": 409.74301, "t": 595.9722899999999, "r": 467.19213999999994, "b": 616.33128, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Access: ALL or NOTHING", "bbox": {"l": 247.7847, "t": 599.80522, "r": 375.65561, "b": 609.0542399999999, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "User", "bbox": {"l": 175.87869, "t": 609.06352, "r": 198.69092, "b": 618.31255, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "No easy way to restrict access to a specific set of rows", "bbox": {"l": 152.39349, "t": 681.3484100000001, "r": 472.28308, "b": 694.232826, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 18, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 328.2245788574219, "t": 754.796142578125, "r": 529.10632, "b": 764.0894775390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9508112072944641, "cells": [{"id": 0, "text": "Chapter 1. Securing and protecting IBM DB2 data ", "bbox": {"l": 328.67999, "t": 755.538002, "r": 529.10632, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 1. Securing and protecting IBM DB2 data"}, {"label": "page_footer", "id": 1, "page_no": 18, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 540.928466796875, "t": 754.3477783203125, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8825920820236206, "cells": [{"id": 1, "text": "3", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "3"}, {"label": "text", "id": 2, "page_no": 18, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.11676025390625, "t": 70.81370544433594, "r": 546.43982, "b": 165.12799072265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9880445599555969, "cells": [{"id": 2, "text": "Some clients using this default configuration have toughened their database security with ", "bbox": {"l": 136.7999, "t": 71.50903000000005, "r": 532.22772, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "exit-point solutions from third-party vendors. IBM i exit points allow a user-written program to ", "bbox": {"l": 136.7999, "t": 83.50885000000017, "r": 546.43982, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "be called every time that a particular interface (for example, FTP) is used or an event occurs ", "bbox": {"l": 136.7999, "t": 95.50867000000005, "r": 545.43481, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "(for example, a profile is created). Security tools that are based on these exit points increase ", "bbox": {"l": 136.7999, "t": 107.50847999999996, "r": 546.36505, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "the level of security on a system by locking down interfaces that are not under the control of ", "bbox": {"l": 136.7999, "t": 119.50829999999996, "r": 542.84106, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "menu-based or application authority. In addition, exit-point solutions allow clients to ", "bbox": {"l": 136.7999, "t": 131.50811999999996, "r": 504.82483, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "implement more granular security controls, such as allowing users access only to the ", "bbox": {"l": 136.7999, "t": 143.50793, "r": 514.11053, "b": 152.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "database during certain hours of the day.", "bbox": {"l": 136.7999, "t": 155.50775, "r": 317.74625, "b": 164.72076000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Some clients using this default configuration have toughened their database security with exit-point solutions from third-party vendors. IBM i exit points allow a user-written program to be called every time that a particular interface (for example, FTP) is used or an event occurs (for example, a profile is created). Security tools that are based on these exit points increase the level of security on a system by locking down interfaces that are not under the control of menu-based or application authority. In addition, exit-point solutions allow clients to implement more granular security controls, such as allowing users access only to the database during certain hours of the day."}, {"label": "text", "id": 3, "page_no": 18, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.7813262939453, "t": 176.89154052734375, "r": 547.2666, "b": 271.1439514160156, "coord_origin": "TOPLEFT"}, "confidence": 0.9884217381477356, "cells": [{"id": 10, "text": "Although exit-point solutions can provide great benefits, they are not an alternative to ", "bbox": {"l": 136.7999, "t": 177.52733999999998, "r": 513.7002, "b": 186.74036, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "object-level control of your databases. Exit-point solutions help secure interfaces, but they do ", "bbox": {"l": 136.7999, "t": 189.52715999999998, "r": 547.2666, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "not completely protect the data that is stored in your DB2 objects. Exit points do not exist for ", "bbox": {"l": 136.7999, "t": 201.52697999999998, "r": 544.81219, "b": 210.73999000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "every data access interface on the system. Therefore, if an application starts using an ", "bbox": {"l": 136.7999, "t": 213.52679, "r": 517.20105, "b": 222.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "unprotected interface, the only thing protecting your data is object-level access control. When ", "bbox": {"l": 136.7999, "t": 225.52661, "r": 547.23248, "b": 234.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "your security implementation totally relies on exit points, then it is also important to track any ", "bbox": {"l": 136.7999, "t": 237.52643, "r": 546.36804, "b": 246.73943999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "new data interfaces that appear as IBM delivers new releases and products to ensure that ", "bbox": {"l": 136.7999, "t": 249.52625, "r": 535.90399, "b": 258.73925999999994, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "your exit-point solution provides coverage for those new interfaces.", "bbox": {"l": 136.7999, "t": 261.52606000000003, "r": 430.80014, "b": 270.73906999999997, "coord_origin": "TOPLEFT"}}]}, "text": "Although exit-point solutions can provide great benefits, they are not an alternative to object-level control of your databases. Exit-point solutions help secure interfaces, but they do not completely protect the data that is stored in your DB2 objects. Exit points do not exist for every data access interface on the system. Therefore, if an application starts using an unprotected interface, the only thing protecting your data is object-level access control. When your security implementation totally relies on exit points, then it is also important to track any new data interfaces that appear as IBM delivers new releases and products to ensure that your exit-point solution provides coverage for those new interfaces."}, {"label": "text", "id": 4, "page_no": 18, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.8739471435547, "t": 282.6854553222656, "r": 546.22662, "b": 329.1358337402344, "coord_origin": "TOPLEFT"}, "confidence": 0.987811267375946, "cells": [{"id": 18, "text": "An exit-point solution is a good option for databases with security holes that are caused by a ", "bbox": {"l": 136.7999, "t": 283.4859, "r": 546.22662, "b": 292.69888, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "reliance on the default security setup or menu-based control. However, your security work ", "bbox": {"l": 136.7999, "t": 295.48572, "r": 534.57117, "b": 304.6986999999999, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "should not stop there. Instead, you must continue to work on a complete database security ", "bbox": {"l": 136.7999, "t": 307.48553000000004, "r": 539.19958, "b": 316.69852000000003, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "solution by controlling data access at the object level.", "bbox": {"l": 136.7999, "t": 319.48535, "r": 371.62982, "b": 328.69833, "coord_origin": "TOPLEFT"}}]}, "text": "An exit-point solution is a good option for databases with security holes that are caused by a reliance on the default security setup or menu-based control. However, your security work should not stop there. Instead, you must continue to work on a complete database security solution by controlling data access at the object level."}, {"label": "section_header", "id": 5, "page_no": 18, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 64.800003, "t": 356.1169738769531, "r": 295.20493, "b": 372.2132873535156, "coord_origin": "TOPLEFT"}, "confidence": 0.9654257893562317, "cells": [{"id": 22, "text": "1.3", "bbox": {"l": 64.800003, "t": 357.18073, "r": 87.399879, "b": 371.94373, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "DB2 for i security controls", "bbox": {"l": 91.919853, "t": 357.18073, "r": 295.20493, "b": 371.94373, "coord_origin": "TOPLEFT"}}]}, "text": "1.3 DB2 for i security controls"}, {"label": "text", "id": 6, "page_no": 18, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.9359893798828, "t": 388.60498046875, "r": 547.16888, "b": 458.7207900000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9873308539390564, "cells": [{"id": 24, "text": "As described in 1.2, \u201cCurrent state of IBM i security\u201d on page 2, object-level controls on your ", "bbox": {"l": 136.8, "t": 389.50872999999996, "r": 545.23871, "b": 398.72171, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "DB2 objects are a critical success factor in securing your business data. Although database ", "bbox": {"l": 136.8, "t": 401.50854, "r": 543.08527, "b": 410.72153, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "object-level security is a strong security feature, some clients have found that object-level ", "bbox": {"l": 136.8, "t": 413.50836, "r": 531.52155, "b": 422.72134, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "security does not have the granularity that is required to adhere to regulatory or compliance ", "bbox": {"l": 136.8, "t": 425.5081799999999, "r": 542.76959, "b": 434.72116, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "policies. A user that is granted object-level access to a DB2 table has the authority to view all ", "bbox": {"l": 136.8, "t": 437.50800000000004, "r": 547.16888, "b": 446.72098, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "of the rows and values in that table.", "bbox": {"l": 136.8, "t": 449.50781, "r": 293.37024, "b": 458.7207900000001, "coord_origin": "TOPLEFT"}}]}, "text": "As described in 1.2, \u201cCurrent state of IBM i security\u201d on page 2, object-level controls on your DB2 objects are a critical success factor in securing your business data. Although database object-level security is a strong security feature, some clients have found that object-level security does not have the granularity that is required to adhere to regulatory or compliance policies. A user that is granted object-level access to a DB2 table has the authority to view all of the rows and values in that table."}, {"label": "text", "id": 7, "page_no": 18, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.52011108398438, "t": 470.60333251953125, "r": 466.31863, "b": 480.9595947265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9494351744651794, "cells": [{"id": 30, "text": "As shown in Figure 1-1, it is an all-or-nothing access to the rows of a table.", "bbox": {"l": 136.8, "t": 471.52737, "r": 466.31863, "b": 480.74036, "coord_origin": "TOPLEFT"}}]}, "text": "As shown in Figure 1-1, it is an all-or-nothing access to the rows of a table."}, {"label": "caption", "id": 8, "page_no": 18, "cluster": {"id": 8, "label": "caption", "bbox": {"l": 135.93324279785156, "t": 702.1747436523438, "r": 354.8916015625, "b": 711.3971557617188, "coord_origin": "TOPLEFT"}, "confidence": 0.9390377402305603, "cells": [{"id": 31, "text": "Figure 1-1 All-or-nothing access to the rows of a table", "bbox": {"l": 136.8, "t": 702.977905, "r": 354.75031, "b": 711.302902, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 1-1 All-or-nothing access to the rows of a table"}, {"label": "picture", "id": 9, "page_no": 18, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 136.6387176513672, "t": 495.7486877441406, "r": 491.2538146972656, "b": 699.0596923828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9797728061676025, "cells": [{"id": 32, "text": "The Business Problem\u0085", "bbox": {"l": 145.2338, "t": 503.53342, "r": 362.0163, "b": 522.87445, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Tb", "bbox": {"l": 409.74301, "t": 595.9722899999999, "r": 459.25156, "b": 616.33128, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "l", "bbox": {"l": 448.32556, "t": 595.9722899999999, "r": 465.547, "b": 616.33128, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Database", "bbox": {"l": 164.4601, "t": 590.54692, "r": 210.09276, "b": 599.79594, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Table", "bbox": {"l": 409.74301, "t": 595.9722899999999, "r": 467.19213999999994, "b": 616.33128, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Access: ALL or NOTHING", "bbox": {"l": 247.7847, "t": 599.80522, "r": 375.65561, "b": 609.0542399999999, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "User", "bbox": {"l": 175.87869, "t": 609.06352, "r": 198.69092, "b": 618.31255, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "No easy way to restrict access to a specific set of rows", "bbox": {"l": 152.39349, "t": 681.3484100000001, "r": 472.28308, "b": 694.232826, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 18, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.11676025390625, "t": 70.81370544433594, "r": 546.43982, "b": 165.12799072265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9880445599555969, "cells": [{"id": 2, "text": "Some clients using this default configuration have toughened their database security with ", "bbox": {"l": 136.7999, "t": 71.50903000000005, "r": 532.22772, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "exit-point solutions from third-party vendors. IBM i exit points allow a user-written program to ", "bbox": {"l": 136.7999, "t": 83.50885000000017, "r": 546.43982, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "be called every time that a particular interface (for example, FTP) is used or an event occurs ", "bbox": {"l": 136.7999, "t": 95.50867000000005, "r": 545.43481, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "(for example, a profile is created). Security tools that are based on these exit points increase ", "bbox": {"l": 136.7999, "t": 107.50847999999996, "r": 546.36505, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "the level of security on a system by locking down interfaces that are not under the control of ", "bbox": {"l": 136.7999, "t": 119.50829999999996, "r": 542.84106, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "menu-based or application authority. In addition, exit-point solutions allow clients to ", "bbox": {"l": 136.7999, "t": 131.50811999999996, "r": 504.82483, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "implement more granular security controls, such as allowing users access only to the ", "bbox": {"l": 136.7999, "t": 143.50793, "r": 514.11053, "b": 152.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "database during certain hours of the day.", "bbox": {"l": 136.7999, "t": 155.50775, "r": 317.74625, "b": 164.72076000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Some clients using this default configuration have toughened their database security with exit-point solutions from third-party vendors. IBM i exit points allow a user-written program to be called every time that a particular interface (for example, FTP) is used or an event occurs (for example, a profile is created). Security tools that are based on these exit points increase the level of security on a system by locking down interfaces that are not under the control of menu-based or application authority. In addition, exit-point solutions allow clients to implement more granular security controls, such as allowing users access only to the database during certain hours of the day."}, {"label": "text", "id": 3, "page_no": 18, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.7813262939453, "t": 176.89154052734375, "r": 547.2666, "b": 271.1439514160156, "coord_origin": "TOPLEFT"}, "confidence": 0.9884217381477356, "cells": [{"id": 10, "text": "Although exit-point solutions can provide great benefits, they are not an alternative to ", "bbox": {"l": 136.7999, "t": 177.52733999999998, "r": 513.7002, "b": 186.74036, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "object-level control of your databases. Exit-point solutions help secure interfaces, but they do ", "bbox": {"l": 136.7999, "t": 189.52715999999998, "r": 547.2666, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "not completely protect the data that is stored in your DB2 objects. Exit points do not exist for ", "bbox": {"l": 136.7999, "t": 201.52697999999998, "r": 544.81219, "b": 210.73999000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "every data access interface on the system. Therefore, if an application starts using an ", "bbox": {"l": 136.7999, "t": 213.52679, "r": 517.20105, "b": 222.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "unprotected interface, the only thing protecting your data is object-level access control. When ", "bbox": {"l": 136.7999, "t": 225.52661, "r": 547.23248, "b": 234.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "your security implementation totally relies on exit points, then it is also important to track any ", "bbox": {"l": 136.7999, "t": 237.52643, "r": 546.36804, "b": 246.73943999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "new data interfaces that appear as IBM delivers new releases and products to ensure that ", "bbox": {"l": 136.7999, "t": 249.52625, "r": 535.90399, "b": 258.73925999999994, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "your exit-point solution provides coverage for those new interfaces.", "bbox": {"l": 136.7999, "t": 261.52606000000003, "r": 430.80014, "b": 270.73906999999997, "coord_origin": "TOPLEFT"}}]}, "text": "Although exit-point solutions can provide great benefits, they are not an alternative to object-level control of your databases. Exit-point solutions help secure interfaces, but they do not completely protect the data that is stored in your DB2 objects. Exit points do not exist for every data access interface on the system. Therefore, if an application starts using an unprotected interface, the only thing protecting your data is object-level access control. When your security implementation totally relies on exit points, then it is also important to track any new data interfaces that appear as IBM delivers new releases and products to ensure that your exit-point solution provides coverage for those new interfaces."}, {"label": "text", "id": 4, "page_no": 18, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.8739471435547, "t": 282.6854553222656, "r": 546.22662, "b": 329.1358337402344, "coord_origin": "TOPLEFT"}, "confidence": 0.987811267375946, "cells": [{"id": 18, "text": "An exit-point solution is a good option for databases with security holes that are caused by a ", "bbox": {"l": 136.7999, "t": 283.4859, "r": 546.22662, "b": 292.69888, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "reliance on the default security setup or menu-based control. However, your security work ", "bbox": {"l": 136.7999, "t": 295.48572, "r": 534.57117, "b": 304.6986999999999, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "should not stop there. Instead, you must continue to work on a complete database security ", "bbox": {"l": 136.7999, "t": 307.48553000000004, "r": 539.19958, "b": 316.69852000000003, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "solution by controlling data access at the object level.", "bbox": {"l": 136.7999, "t": 319.48535, "r": 371.62982, "b": 328.69833, "coord_origin": "TOPLEFT"}}]}, "text": "An exit-point solution is a good option for databases with security holes that are caused by a reliance on the default security setup or menu-based control. However, your security work should not stop there. Instead, you must continue to work on a complete database security solution by controlling data access at the object level."}, {"label": "section_header", "id": 5, "page_no": 18, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 64.800003, "t": 356.1169738769531, "r": 295.20493, "b": 372.2132873535156, "coord_origin": "TOPLEFT"}, "confidence": 0.9654257893562317, "cells": [{"id": 22, "text": "1.3", "bbox": {"l": 64.800003, "t": 357.18073, "r": 87.399879, "b": 371.94373, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "DB2 for i security controls", "bbox": {"l": 91.919853, "t": 357.18073, "r": 295.20493, "b": 371.94373, "coord_origin": "TOPLEFT"}}]}, "text": "1.3 DB2 for i security controls"}, {"label": "text", "id": 6, "page_no": 18, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.9359893798828, "t": 388.60498046875, "r": 547.16888, "b": 458.7207900000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9873308539390564, "cells": [{"id": 24, "text": "As described in 1.2, \u201cCurrent state of IBM i security\u201d on page 2, object-level controls on your ", "bbox": {"l": 136.8, "t": 389.50872999999996, "r": 545.23871, "b": 398.72171, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "DB2 objects are a critical success factor in securing your business data. Although database ", "bbox": {"l": 136.8, "t": 401.50854, "r": 543.08527, "b": 410.72153, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "object-level security is a strong security feature, some clients have found that object-level ", "bbox": {"l": 136.8, "t": 413.50836, "r": 531.52155, "b": 422.72134, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "security does not have the granularity that is required to adhere to regulatory or compliance ", "bbox": {"l": 136.8, "t": 425.5081799999999, "r": 542.76959, "b": 434.72116, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "policies. A user that is granted object-level access to a DB2 table has the authority to view all ", "bbox": {"l": 136.8, "t": 437.50800000000004, "r": 547.16888, "b": 446.72098, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "of the rows and values in that table.", "bbox": {"l": 136.8, "t": 449.50781, "r": 293.37024, "b": 458.7207900000001, "coord_origin": "TOPLEFT"}}]}, "text": "As described in 1.2, \u201cCurrent state of IBM i security\u201d on page 2, object-level controls on your DB2 objects are a critical success factor in securing your business data. Although database object-level security is a strong security feature, some clients have found that object-level security does not have the granularity that is required to adhere to regulatory or compliance policies. A user that is granted object-level access to a DB2 table has the authority to view all of the rows and values in that table."}, {"label": "text", "id": 7, "page_no": 18, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.52011108398438, "t": 470.60333251953125, "r": 466.31863, "b": 480.9595947265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9494351744651794, "cells": [{"id": 30, "text": "As shown in Figure 1-1, it is an all-or-nothing access to the rows of a table.", "bbox": {"l": 136.8, "t": 471.52737, "r": 466.31863, "b": 480.74036, "coord_origin": "TOPLEFT"}}]}, "text": "As shown in Figure 1-1, it is an all-or-nothing access to the rows of a table."}, {"label": "caption", "id": 8, "page_no": 18, "cluster": {"id": 8, "label": "caption", "bbox": {"l": 135.93324279785156, "t": 702.1747436523438, "r": 354.8916015625, "b": 711.3971557617188, "coord_origin": "TOPLEFT"}, "confidence": 0.9390377402305603, "cells": [{"id": 31, "text": "Figure 1-1 All-or-nothing access to the rows of a table", "bbox": {"l": 136.8, "t": 702.977905, "r": 354.75031, "b": 711.302902, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 1-1 All-or-nothing access to the rows of a table"}, {"label": "picture", "id": 9, "page_no": 18, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 136.6387176513672, "t": 495.7486877441406, "r": 491.2538146972656, "b": 699.0596923828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9797728061676025, "cells": [{"id": 32, "text": "The Business Problem\u0085", "bbox": {"l": 145.2338, "t": 503.53342, "r": 362.0163, "b": 522.87445, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Tb", "bbox": {"l": 409.74301, "t": 595.9722899999999, "r": 459.25156, "b": 616.33128, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "l", "bbox": {"l": 448.32556, "t": 595.9722899999999, "r": 465.547, "b": 616.33128, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Database", "bbox": {"l": 164.4601, "t": 590.54692, "r": 210.09276, "b": 599.79594, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Table", "bbox": {"l": 409.74301, "t": 595.9722899999999, "r": 467.19213999999994, "b": 616.33128, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Access: ALL or NOTHING", "bbox": {"l": 247.7847, "t": 599.80522, "r": 375.65561, "b": 609.0542399999999, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "User", "bbox": {"l": 175.87869, "t": 609.06352, "r": 198.69092, "b": 618.31255, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "No easy way to restrict access to a specific set of rows", "bbox": {"l": 152.39349, "t": 681.3484100000001, "r": 472.28308, "b": 694.232826, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 18, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 328.2245788574219, "t": 754.796142578125, "r": 529.10632, "b": 764.0894775390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9508112072944641, "cells": [{"id": 0, "text": "Chapter 1. Securing and protecting IBM DB2 data ", "bbox": {"l": 328.67999, "t": 755.538002, "r": 529.10632, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 1. Securing and protecting IBM DB2 data"}, {"label": "page_footer", "id": 1, "page_no": 18, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 540.928466796875, "t": 754.3477783203125, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8825920820236206, "cells": [{"id": 1, "text": "3", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "3"}]}}, {"page_no": 19, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "4 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 87.840302, "t": 755.538002, "r": 328.72537, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Many businesses are trying to limit data access to a need-to-know basis. This security goal ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 541.19006, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "means that users should be given access only to the minimum set of data that is required to ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 544.30334, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "perform their job. Often, users with object-level access are given access to row and column ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 540.94299, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "values that are beyond what their business task requires because that object-level security ", "bbox": {"l": 136.80002, "t": 107.50811999999996, "r": 538.27454, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "provides an all-or-nothing solution. For example, object-level controls allow a manager to ", "bbox": {"l": 136.80002, "t": 119.50792999999999, "r": 530.23004, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "access data about all employees. Most security policies limit a manager to accessing data ", "bbox": {"l": 136.80002, "t": 131.50775, "r": 536.26263, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "only for the employees that they manage.", "bbox": {"l": 136.80002, "t": 143.50757, "r": 319.04318, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "1.3.1", "bbox": {"l": 64.800003, "t": 173.33471999999995, "r": 94.033653, "b": 185.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Existing row and column control", "bbox": {"l": 97.687859, "t": 173.33471999999995, "r": 301.46902, "b": 185.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Some IBM i clients have tried augmenting the all-or-nothing object-level security with SQL ", "bbox": {"l": 136.8, "t": 199.48870999999997, "r": 534.90112, "b": 208.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "views (or logical files) and application logic, as shown in Figure 1-2. However, ", "bbox": {"l": 136.8, "t": 211.48852999999997, "r": 480.47281000000004, "b": 220.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "application-based logic is easy to bypass with all of the different data access interfaces that ", "bbox": {"l": 136.8, "t": 223.48834, "r": 541.56738, "b": 232.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "are provided by the IBM i operating system, such as Open Database Connectivity (ODBC) ", "bbox": {"l": 136.8, "t": 235.48816, "r": 537.39423, "b": 244.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "and System i Navigator.", "bbox": {"l": 136.79999, "t": 247.48798, "r": 242.24352000000002, "b": 256.70099000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Using SQL views to limit access to a subset of the data in a table also has its own set of ", "bbox": {"l": 136.79999, "t": 269.50757, "r": 526.88428, "b": 278.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "challenges. First, there is the complexity of managing all of the SQL view objects that are ", "bbox": {"l": 136.79999, "t": 281.50742, "r": 531.77087, "b": 290.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "used for securing data access. Second, scaling a view-based security solution can be difficult ", "bbox": {"l": 136.79999, "t": 293.50723000000005, "r": 547.4408, "b": 302.72021, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "as the amount of data grows and the number of users increases.", "bbox": {"l": 136.79999, "t": 305.50705, "r": 421.86725, "b": 314.72003, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Even if you are willing to live with these performance and management issues, a user with ", "bbox": {"l": 136.79999, "t": 327.52661, "r": 536.46692, "b": 336.7395900000001, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "*ALLOBJ access still can directly access all of the data in the underlying DB2 table and easily ", "bbox": {"l": 136.79999, "t": 339.52643, "r": 547.23267, "b": 348.73941, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "bypass the security controls that are built into an SQL view.", "bbox": {"l": 136.79999, "t": 351.52624999999995, "r": 397.88553, "b": 360.73923, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Figure 1-2 Existing row and column controls", "bbox": {"l": 136.8, "t": 691.818, "r": 316.44727, "b": 700.142998, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "User with", "bbox": {"l": 180.95911, "t": 383.45612, "r": 209.08017, "b": 389.0784, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "*ALLOBJ access", "bbox": {"l": 170.00624, "t": 390.95251, "r": 220.10355, "b": 396.57480000000004, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.09014129638672, "t": 754.0796508789062, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8578534126281738, "cells": [{"id": 0, "text": "4 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 87.840302, "t": 754.6302490234375, "r": 328.72537, "b": 763.9817504882812, "coord_origin": "TOPLEFT"}, "confidence": 0.9491621851921082, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 87.840302, "t": 755.538002, "r": 328.72537, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.9996337890625, "t": 70.63605499267578, "r": 544.30334, "b": 153.09298706054688, "coord_origin": "TOPLEFT"}, "confidence": 0.9872740507125854, "cells": [{"id": 2, "text": "Many businesses are trying to limit data access to a need-to-know basis. This security goal ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 541.19006, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "means that users should be given access only to the minimum set of data that is required to ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 544.30334, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "perform their job. Often, users with object-level access are given access to row and column ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 540.94299, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "values that are beyond what their business task requires because that object-level security ", "bbox": {"l": 136.80002, "t": 107.50811999999996, "r": 538.27454, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "provides an all-or-nothing solution. For example, object-level controls allow a manager to ", "bbox": {"l": 136.80002, "t": 119.50792999999999, "r": 530.23004, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "access data about all employees. Most security policies limit a manager to accessing data ", "bbox": {"l": 136.80002, "t": 131.50775, "r": 536.26263, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "only for the employees that they manage.", "bbox": {"l": 136.80002, "t": 143.50757, "r": 319.04318, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "section_header", "bbox": {"l": 64.4480209350586, "t": 172.2285919189453, "r": 301.46902, "b": 185.72744750976562, "coord_origin": "TOPLEFT"}, "confidence": 0.9626136422157288, "cells": [{"id": 9, "text": "1.3.1", "bbox": {"l": 64.800003, "t": 173.33471999999995, "r": 94.033653, "b": 185.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Existing row and column control", "bbox": {"l": 97.687859, "t": 173.33471999999995, "r": 301.46902, "b": 185.32275000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.77957153320312, "t": 198.52076721191406, "r": 541.56738, "b": 257.1080322265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9858148097991943, "cells": [{"id": 11, "text": "Some IBM i clients have tried augmenting the all-or-nothing object-level security with SQL ", "bbox": {"l": 136.8, "t": 199.48870999999997, "r": 534.90112, "b": 208.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "views (or logical files) and application logic, as shown in Figure 1-2. However, ", "bbox": {"l": 136.8, "t": 211.48852999999997, "r": 480.47281000000004, "b": 220.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "application-based logic is easy to bypass with all of the different data access interfaces that ", "bbox": {"l": 136.8, "t": 223.48834, "r": 541.56738, "b": 232.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "are provided by the IBM i operating system, such as Open Database Connectivity (ODBC) ", "bbox": {"l": 136.8, "t": 235.48816, "r": 537.39423, "b": 244.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "and System i Navigator.", "bbox": {"l": 136.79999, "t": 247.48798, "r": 242.24352000000002, "b": 256.70099000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.9119110107422, "t": 268.6311340332031, "r": 547.4408, "b": 314.89898681640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9875384569168091, "cells": [{"id": 16, "text": "Using SQL views to limit access to a subset of the data in a table also has its own set of ", "bbox": {"l": 136.79999, "t": 269.50757, "r": 526.88428, "b": 278.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "challenges. First, there is the complexity of managing all of the SQL view objects that are ", "bbox": {"l": 136.79999, "t": 281.50742, "r": 531.77087, "b": 290.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "used for securing data access. Second, scaling a view-based security solution can be difficult ", "bbox": {"l": 136.79999, "t": 293.50723000000005, "r": 547.4408, "b": 302.72021, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "as the amount of data grows and the number of users increases.", "bbox": {"l": 136.79999, "t": 305.50705, "r": 421.86725, "b": 314.72003, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 136.0379638671875, "t": 326.60943603515625, "r": 547.23267, "b": 361.19879150390625, "coord_origin": "TOPLEFT"}, "confidence": 0.975760281085968, "cells": [{"id": 20, "text": "Even if you are willing to live with these performance and management issues, a user with ", "bbox": {"l": 136.79999, "t": 327.52661, "r": 536.46692, "b": 336.7395900000001, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "*ALLOBJ access still can directly access all of the data in the underlying DB2 table and easily ", "bbox": {"l": 136.79999, "t": 339.52643, "r": 547.23267, "b": 348.73941, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "bypass the security controls that are built into an SQL view.", "bbox": {"l": 136.79999, "t": 351.52624999999995, "r": 397.88553, "b": 360.73923, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "caption", "bbox": {"l": 136.23910522460938, "t": 690.8873901367188, "r": 317.073486328125, "b": 700.1619262695312, "coord_origin": "TOPLEFT"}, "confidence": 0.9457826614379883, "cells": [{"id": 23, "text": "Figure 1-2 Existing row and column controls", "bbox": {"l": 136.8, "t": 691.818, "r": 316.44727, "b": 700.142998, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 135.92466735839844, "t": 375.9272155761719, "r": 546.4456176757812, "b": 688.6098022460938, "coord_origin": "TOPLEFT"}, "confidence": 0.9838992357254028, "cells": [{"id": 24, "text": "User with", "bbox": {"l": 180.95911, "t": 383.45612, "r": 209.08017, "b": 389.0784, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "*ALLOBJ access", "bbox": {"l": 170.00624, "t": 390.95251, "r": 220.10355, "b": 396.57480000000004, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 19, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.09014129638672, "t": 754.0796508789062, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8578534126281738, "cells": [{"id": 0, "text": "4 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "4"}, {"label": "page_footer", "id": 1, "page_no": 19, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 87.840302, "t": 754.6302490234375, "r": 328.72537, "b": 763.9817504882812, "coord_origin": "TOPLEFT"}, "confidence": 0.9491621851921082, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 87.840302, "t": 755.538002, "r": 328.72537, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 2, "page_no": 19, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.9996337890625, "t": 70.63605499267578, "r": 544.30334, "b": 153.09298706054688, "coord_origin": "TOPLEFT"}, "confidence": 0.9872740507125854, "cells": [{"id": 2, "text": "Many businesses are trying to limit data access to a need-to-know basis. This security goal ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 541.19006, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "means that users should be given access only to the minimum set of data that is required to ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 544.30334, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "perform their job. Often, users with object-level access are given access to row and column ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 540.94299, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "values that are beyond what their business task requires because that object-level security ", "bbox": {"l": 136.80002, "t": 107.50811999999996, "r": 538.27454, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "provides an all-or-nothing solution. For example, object-level controls allow a manager to ", "bbox": {"l": 136.80002, "t": 119.50792999999999, "r": 530.23004, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "access data about all employees. Most security policies limit a manager to accessing data ", "bbox": {"l": 136.80002, "t": 131.50775, "r": 536.26263, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "only for the employees that they manage.", "bbox": {"l": 136.80002, "t": 143.50757, "r": 319.04318, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Many businesses are trying to limit data access to a need-to-know basis. This security goal means that users should be given access only to the minimum set of data that is required to perform their job. Often, users with object-level access are given access to row and column values that are beyond what their business task requires because that object-level security provides an all-or-nothing solution. For example, object-level controls allow a manager to access data about all employees. Most security policies limit a manager to accessing data only for the employees that they manage."}, {"label": "section_header", "id": 3, "page_no": 19, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 64.4480209350586, "t": 172.2285919189453, "r": 301.46902, "b": 185.72744750976562, "coord_origin": "TOPLEFT"}, "confidence": 0.9626136422157288, "cells": [{"id": 9, "text": "1.3.1", "bbox": {"l": 64.800003, "t": 173.33471999999995, "r": 94.033653, "b": 185.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Existing row and column control", "bbox": {"l": 97.687859, "t": 173.33471999999995, "r": 301.46902, "b": 185.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "1.3.1 Existing row and column control"}, {"label": "text", "id": 4, "page_no": 19, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.77957153320312, "t": 198.52076721191406, "r": 541.56738, "b": 257.1080322265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9858148097991943, "cells": [{"id": 11, "text": "Some IBM i clients have tried augmenting the all-or-nothing object-level security with SQL ", "bbox": {"l": 136.8, "t": 199.48870999999997, "r": 534.90112, "b": 208.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "views (or logical files) and application logic, as shown in Figure 1-2. However, ", "bbox": {"l": 136.8, "t": 211.48852999999997, "r": 480.47281000000004, "b": 220.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "application-based logic is easy to bypass with all of the different data access interfaces that ", "bbox": {"l": 136.8, "t": 223.48834, "r": 541.56738, "b": 232.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "are provided by the IBM i operating system, such as Open Database Connectivity (ODBC) ", "bbox": {"l": 136.8, "t": 235.48816, "r": 537.39423, "b": 244.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "and System i Navigator.", "bbox": {"l": 136.79999, "t": 247.48798, "r": 242.24352000000002, "b": 256.70099000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Some IBM i clients have tried augmenting the all-or-nothing object-level security with SQL views (or logical files) and application logic, as shown in Figure 1-2. However, application-based logic is easy to bypass with all of the different data access interfaces that are provided by the IBM i operating system, such as Open Database Connectivity (ODBC) and System i Navigator."}, {"label": "text", "id": 5, "page_no": 19, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.9119110107422, "t": 268.6311340332031, "r": 547.4408, "b": 314.89898681640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9875384569168091, "cells": [{"id": 16, "text": "Using SQL views to limit access to a subset of the data in a table also has its own set of ", "bbox": {"l": 136.79999, "t": 269.50757, "r": 526.88428, "b": 278.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "challenges. First, there is the complexity of managing all of the SQL view objects that are ", "bbox": {"l": 136.79999, "t": 281.50742, "r": 531.77087, "b": 290.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "used for securing data access. Second, scaling a view-based security solution can be difficult ", "bbox": {"l": 136.79999, "t": 293.50723000000005, "r": 547.4408, "b": 302.72021, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "as the amount of data grows and the number of users increases.", "bbox": {"l": 136.79999, "t": 305.50705, "r": 421.86725, "b": 314.72003, "coord_origin": "TOPLEFT"}}]}, "text": "Using SQL views to limit access to a subset of the data in a table also has its own set of challenges. First, there is the complexity of managing all of the SQL view objects that are used for securing data access. Second, scaling a view-based security solution can be difficult as the amount of data grows and the number of users increases."}, {"label": "text", "id": 6, "page_no": 19, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.0379638671875, "t": 326.60943603515625, "r": 547.23267, "b": 361.19879150390625, "coord_origin": "TOPLEFT"}, "confidence": 0.975760281085968, "cells": [{"id": 20, "text": "Even if you are willing to live with these performance and management issues, a user with ", "bbox": {"l": 136.79999, "t": 327.52661, "r": 536.46692, "b": 336.7395900000001, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "*ALLOBJ access still can directly access all of the data in the underlying DB2 table and easily ", "bbox": {"l": 136.79999, "t": 339.52643, "r": 547.23267, "b": 348.73941, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "bypass the security controls that are built into an SQL view.", "bbox": {"l": 136.79999, "t": 351.52624999999995, "r": 397.88553, "b": 360.73923, "coord_origin": "TOPLEFT"}}]}, "text": "Even if you are willing to live with these performance and management issues, a user with *ALLOBJ access still can directly access all of the data in the underlying DB2 table and easily bypass the security controls that are built into an SQL view."}, {"label": "caption", "id": 7, "page_no": 19, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 136.23910522460938, "t": 690.8873901367188, "r": 317.073486328125, "b": 700.1619262695312, "coord_origin": "TOPLEFT"}, "confidence": 0.9457826614379883, "cells": [{"id": 23, "text": "Figure 1-2 Existing row and column controls", "bbox": {"l": 136.8, "t": 691.818, "r": 316.44727, "b": 700.142998, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 1-2 Existing row and column controls"}, {"label": "picture", "id": 8, "page_no": 19, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 135.92466735839844, "t": 375.9272155761719, "r": 546.4456176757812, "b": 688.6098022460938, "coord_origin": "TOPLEFT"}, "confidence": 0.9838992357254028, "cells": [{"id": 24, "text": "User with", "bbox": {"l": 180.95911, "t": 383.45612, "r": 209.08017, "b": 389.0784, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "*ALLOBJ access", "bbox": {"l": 170.00624, "t": 390.95251, "r": 220.10355, "b": 396.57480000000004, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 19, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.9996337890625, "t": 70.63605499267578, "r": 544.30334, "b": 153.09298706054688, "coord_origin": "TOPLEFT"}, "confidence": 0.9872740507125854, "cells": [{"id": 2, "text": "Many businesses are trying to limit data access to a need-to-know basis. This security goal ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 541.19006, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "means that users should be given access only to the minimum set of data that is required to ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 544.30334, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "perform their job. Often, users with object-level access are given access to row and column ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 540.94299, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "values that are beyond what their business task requires because that object-level security ", "bbox": {"l": 136.80002, "t": 107.50811999999996, "r": 538.27454, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "provides an all-or-nothing solution. For example, object-level controls allow a manager to ", "bbox": {"l": 136.80002, "t": 119.50792999999999, "r": 530.23004, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "access data about all employees. Most security policies limit a manager to accessing data ", "bbox": {"l": 136.80002, "t": 131.50775, "r": 536.26263, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "only for the employees that they manage.", "bbox": {"l": 136.80002, "t": 143.50757, "r": 319.04318, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Many businesses are trying to limit data access to a need-to-know basis. This security goal means that users should be given access only to the minimum set of data that is required to perform their job. Often, users with object-level access are given access to row and column values that are beyond what their business task requires because that object-level security provides an all-or-nothing solution. For example, object-level controls allow a manager to access data about all employees. Most security policies limit a manager to accessing data only for the employees that they manage."}, {"label": "section_header", "id": 3, "page_no": 19, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 64.4480209350586, "t": 172.2285919189453, "r": 301.46902, "b": 185.72744750976562, "coord_origin": "TOPLEFT"}, "confidence": 0.9626136422157288, "cells": [{"id": 9, "text": "1.3.1", "bbox": {"l": 64.800003, "t": 173.33471999999995, "r": 94.033653, "b": 185.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Existing row and column control", "bbox": {"l": 97.687859, "t": 173.33471999999995, "r": 301.46902, "b": 185.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "1.3.1 Existing row and column control"}, {"label": "text", "id": 4, "page_no": 19, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.77957153320312, "t": 198.52076721191406, "r": 541.56738, "b": 257.1080322265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9858148097991943, "cells": [{"id": 11, "text": "Some IBM i clients have tried augmenting the all-or-nothing object-level security with SQL ", "bbox": {"l": 136.8, "t": 199.48870999999997, "r": 534.90112, "b": 208.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "views (or logical files) and application logic, as shown in Figure 1-2. However, ", "bbox": {"l": 136.8, "t": 211.48852999999997, "r": 480.47281000000004, "b": 220.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "application-based logic is easy to bypass with all of the different data access interfaces that ", "bbox": {"l": 136.8, "t": 223.48834, "r": 541.56738, "b": 232.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "are provided by the IBM i operating system, such as Open Database Connectivity (ODBC) ", "bbox": {"l": 136.8, "t": 235.48816, "r": 537.39423, "b": 244.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "and System i Navigator.", "bbox": {"l": 136.79999, "t": 247.48798, "r": 242.24352000000002, "b": 256.70099000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Some IBM i clients have tried augmenting the all-or-nothing object-level security with SQL views (or logical files) and application logic, as shown in Figure 1-2. However, application-based logic is easy to bypass with all of the different data access interfaces that are provided by the IBM i operating system, such as Open Database Connectivity (ODBC) and System i Navigator."}, {"label": "text", "id": 5, "page_no": 19, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.9119110107422, "t": 268.6311340332031, "r": 547.4408, "b": 314.89898681640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9875384569168091, "cells": [{"id": 16, "text": "Using SQL views to limit access to a subset of the data in a table also has its own set of ", "bbox": {"l": 136.79999, "t": 269.50757, "r": 526.88428, "b": 278.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "challenges. First, there is the complexity of managing all of the SQL view objects that are ", "bbox": {"l": 136.79999, "t": 281.50742, "r": 531.77087, "b": 290.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "used for securing data access. Second, scaling a view-based security solution can be difficult ", "bbox": {"l": 136.79999, "t": 293.50723000000005, "r": 547.4408, "b": 302.72021, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "as the amount of data grows and the number of users increases.", "bbox": {"l": 136.79999, "t": 305.50705, "r": 421.86725, "b": 314.72003, "coord_origin": "TOPLEFT"}}]}, "text": "Using SQL views to limit access to a subset of the data in a table also has its own set of challenges. First, there is the complexity of managing all of the SQL view objects that are used for securing data access. Second, scaling a view-based security solution can be difficult as the amount of data grows and the number of users increases."}, {"label": "text", "id": 6, "page_no": 19, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.0379638671875, "t": 326.60943603515625, "r": 547.23267, "b": 361.19879150390625, "coord_origin": "TOPLEFT"}, "confidence": 0.975760281085968, "cells": [{"id": 20, "text": "Even if you are willing to live with these performance and management issues, a user with ", "bbox": {"l": 136.79999, "t": 327.52661, "r": 536.46692, "b": 336.7395900000001, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "*ALLOBJ access still can directly access all of the data in the underlying DB2 table and easily ", "bbox": {"l": 136.79999, "t": 339.52643, "r": 547.23267, "b": 348.73941, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "bypass the security controls that are built into an SQL view.", "bbox": {"l": 136.79999, "t": 351.52624999999995, "r": 397.88553, "b": 360.73923, "coord_origin": "TOPLEFT"}}]}, "text": "Even if you are willing to live with these performance and management issues, a user with *ALLOBJ access still can directly access all of the data in the underlying DB2 table and easily bypass the security controls that are built into an SQL view."}, {"label": "caption", "id": 7, "page_no": 19, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 136.23910522460938, "t": 690.8873901367188, "r": 317.073486328125, "b": 700.1619262695312, "coord_origin": "TOPLEFT"}, "confidence": 0.9457826614379883, "cells": [{"id": 23, "text": "Figure 1-2 Existing row and column controls", "bbox": {"l": 136.8, "t": 691.818, "r": 316.44727, "b": 700.142998, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 1-2 Existing row and column controls"}, {"label": "picture", "id": 8, "page_no": 19, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 135.92466735839844, "t": 375.9272155761719, "r": 546.4456176757812, "b": 688.6098022460938, "coord_origin": "TOPLEFT"}, "confidence": 0.9838992357254028, "cells": [{"id": 24, "text": "User with", "bbox": {"l": 180.95911, "t": 383.45612, "r": 209.08017, "b": 389.0784, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "*ALLOBJ access", "bbox": {"l": 170.00624, "t": 390.95251, "r": 220.10355, "b": 396.57480000000004, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 19, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.09014129638672, "t": 754.0796508789062, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8578534126281738, "cells": [{"id": 0, "text": "4 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "4"}, {"label": "page_footer", "id": 1, "page_no": 19, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 87.840302, "t": 754.6302490234375, "r": 328.72537, "b": 763.9817504882812, "coord_origin": "TOPLEFT"}, "confidence": 0.9491621851921082, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 87.840302, "t": 755.538002, "r": 328.72537, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 20, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 1. Securing and protecting IBM DB2 data ", "bbox": {"l": 328.67999, "t": 755.538002, "r": 529.10632, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "5", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "1.3.2", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 93.920189, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "New controls: Row and Column Access Control", "bbox": {"l": 97.560196, "t": 71.33471999999995, "r": 394.39227, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Based on the challenges that are associated with the existing technology available for ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 516.74811, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "controlling row and column access at a more granular level, IBM delivered new security ", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 523.83459, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "support in the IBM i 7.2 release; this support is known as Row and Column Access Control ", "bbox": {"l": 136.8, "t": 121.48834000000011, "r": 539.93591, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "(RCAC).", "bbox": {"l": 136.80002, "t": 133.48816, "r": 174.23466, "b": 142.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "The new DB2 RCAC support provides a method for controlling data access across all ", "bbox": {"l": 136.80002, "t": 155.50775, "r": 515.71027, "b": 164.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "interfaces and all types of users with a data-centric solution. Moving security processing to ", "bbox": {"l": 136.80002, "t": 167.50757, "r": 538.3653, "b": 176.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "the database layer makes it easier to build controls that meet your compliance policies. The ", "bbox": {"l": 136.8, "t": 179.50739, "r": 542.25873, "b": 188.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "RCAC support provides an additional layer of security that complements object-level ", "bbox": {"l": 136.8, "t": 191.5072, "r": 510.83681999999993, "b": 200.72020999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "authorizations to limit data access to a need-to-know basis. Therefore, it is critical that you ", "bbox": {"l": 136.79999, "t": 203.50702, "r": 536.61536, "b": 212.72002999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "first have a sound object-level security implementation in place.", "bbox": {"l": 136.79999, "t": 215.50684, "r": 415.8204, "b": 224.71984999999995, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 328.2296447753906, "t": 754.7693481445312, "r": 529.10632, "b": 764.0823974609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9491059184074402, "cells": [{"id": 0, "text": "Chapter 1. Securing and protecting IBM DB2 data ", "bbox": {"l": 328.67999, "t": 755.538002, "r": 529.10632, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 541.1834716796875, "t": 754.2889404296875, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8711605668067932, "cells": [{"id": 1, "text": "5", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.52648162841797, "t": 70.3741455078125, "r": 394.39227, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9562826752662659, "cells": [{"id": 2, "text": "1.3.2", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 93.920189, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "New controls: Row and Column Access Control", "bbox": {"l": 97.560196, "t": 71.33471999999995, "r": 394.39227, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 136.02708435058594, "t": 96.53556823730469, "r": 539.93591, "b": 143.18263244628906, "coord_origin": "TOPLEFT"}, "confidence": 0.9866766929626465, "cells": [{"id": 4, "text": "Based on the challenges that are associated with the existing technology available for ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 516.74811, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "controlling row and column access at a more granular level, IBM delivered new security ", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 523.83459, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "support in the IBM i 7.2 release; this support is known as Row and Column Access Control ", "bbox": {"l": 136.8, "t": 121.48834000000011, "r": 539.93591, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "(RCAC).", "bbox": {"l": 136.80002, "t": 133.48816, "r": 174.23466, "b": 142.70117000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.92579650878906, "t": 154.57025146484375, "r": 542.25873, "b": 225.18753051757812, "coord_origin": "TOPLEFT"}, "confidence": 0.9879173636436462, "cells": [{"id": 8, "text": "The new DB2 RCAC support provides a method for controlling data access across all ", "bbox": {"l": 136.80002, "t": 155.50775, "r": 515.71027, "b": 164.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "interfaces and all types of users with a data-centric solution. Moving security processing to ", "bbox": {"l": 136.80002, "t": 167.50757, "r": 538.3653, "b": 176.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "the database layer makes it easier to build controls that meet your compliance policies. The ", "bbox": {"l": 136.8, "t": 179.50739, "r": 542.25873, "b": 188.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "RCAC support provides an additional layer of security that complements object-level ", "bbox": {"l": 136.8, "t": 191.5072, "r": 510.83681999999993, "b": 200.72020999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "authorizations to limit data access to a need-to-know basis. Therefore, it is critical that you ", "bbox": {"l": 136.79999, "t": 203.50702, "r": 536.61536, "b": 212.72002999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "first have a sound object-level security implementation in place.", "bbox": {"l": 136.79999, "t": 215.50684, "r": 415.8204, "b": 224.71984999999995, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 20, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 328.2296447753906, "t": 754.7693481445312, "r": 529.10632, "b": 764.0823974609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9491059184074402, "cells": [{"id": 0, "text": "Chapter 1. Securing and protecting IBM DB2 data ", "bbox": {"l": 328.67999, "t": 755.538002, "r": 529.10632, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 1. Securing and protecting IBM DB2 data"}, {"label": "page_footer", "id": 1, "page_no": 20, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 541.1834716796875, "t": 754.2889404296875, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8711605668067932, "cells": [{"id": 1, "text": "5", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "5"}, {"label": "section_header", "id": 2, "page_no": 20, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.52648162841797, "t": 70.3741455078125, "r": 394.39227, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9562826752662659, "cells": [{"id": 2, "text": "1.3.2", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 93.920189, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "New controls: Row and Column Access Control", "bbox": {"l": 97.560196, "t": 71.33471999999995, "r": 394.39227, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "1.3.2 New controls: Row and Column Access Control"}, {"label": "text", "id": 3, "page_no": 20, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.02708435058594, "t": 96.53556823730469, "r": 539.93591, "b": 143.18263244628906, "coord_origin": "TOPLEFT"}, "confidence": 0.9866766929626465, "cells": [{"id": 4, "text": "Based on the challenges that are associated with the existing technology available for ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 516.74811, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "controlling row and column access at a more granular level, IBM delivered new security ", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 523.83459, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "support in the IBM i 7.2 release; this support is known as Row and Column Access Control ", "bbox": {"l": 136.8, "t": 121.48834000000011, "r": 539.93591, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "(RCAC).", "bbox": {"l": 136.80002, "t": 133.48816, "r": 174.23466, "b": 142.70117000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Based on the challenges that are associated with the existing technology available for controlling row and column access at a more granular level, IBM delivered new security support in the IBM i 7.2 release; this support is known as Row and Column Access Control (RCAC)."}, {"label": "text", "id": 4, "page_no": 20, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.92579650878906, "t": 154.57025146484375, "r": 542.25873, "b": 225.18753051757812, "coord_origin": "TOPLEFT"}, "confidence": 0.9879173636436462, "cells": [{"id": 8, "text": "The new DB2 RCAC support provides a method for controlling data access across all ", "bbox": {"l": 136.80002, "t": 155.50775, "r": 515.71027, "b": 164.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "interfaces and all types of users with a data-centric solution. Moving security processing to ", "bbox": {"l": 136.80002, "t": 167.50757, "r": 538.3653, "b": 176.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "the database layer makes it easier to build controls that meet your compliance policies. The ", "bbox": {"l": 136.8, "t": 179.50739, "r": 542.25873, "b": 188.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "RCAC support provides an additional layer of security that complements object-level ", "bbox": {"l": 136.8, "t": 191.5072, "r": 510.83681999999993, "b": 200.72020999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "authorizations to limit data access to a need-to-know basis. Therefore, it is critical that you ", "bbox": {"l": 136.79999, "t": 203.50702, "r": 536.61536, "b": 212.72002999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "first have a sound object-level security implementation in place.", "bbox": {"l": 136.79999, "t": 215.50684, "r": 415.8204, "b": 224.71984999999995, "coord_origin": "TOPLEFT"}}]}, "text": "The new DB2 RCAC support provides a method for controlling data access across all interfaces and all types of users with a data-centric solution. Moving security processing to the database layer makes it easier to build controls that meet your compliance policies. The RCAC support provides an additional layer of security that complements object-level authorizations to limit data access to a need-to-know basis. Therefore, it is critical that you first have a sound object-level security implementation in place."}], "body": [{"label": "section_header", "id": 2, "page_no": 20, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.52648162841797, "t": 70.3741455078125, "r": 394.39227, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9562826752662659, "cells": [{"id": 2, "text": "1.3.2", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 93.920189, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "New controls: Row and Column Access Control", "bbox": {"l": 97.560196, "t": 71.33471999999995, "r": 394.39227, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "1.3.2 New controls: Row and Column Access Control"}, {"label": "text", "id": 3, "page_no": 20, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.02708435058594, "t": 96.53556823730469, "r": 539.93591, "b": 143.18263244628906, "coord_origin": "TOPLEFT"}, "confidence": 0.9866766929626465, "cells": [{"id": 4, "text": "Based on the challenges that are associated with the existing technology available for ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 516.74811, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "controlling row and column access at a more granular level, IBM delivered new security ", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 523.83459, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "support in the IBM i 7.2 release; this support is known as Row and Column Access Control ", "bbox": {"l": 136.8, "t": 121.48834000000011, "r": 539.93591, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "(RCAC).", "bbox": {"l": 136.80002, "t": 133.48816, "r": 174.23466, "b": 142.70117000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Based on the challenges that are associated with the existing technology available for controlling row and column access at a more granular level, IBM delivered new security support in the IBM i 7.2 release; this support is known as Row and Column Access Control (RCAC)."}, {"label": "text", "id": 4, "page_no": 20, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.92579650878906, "t": 154.57025146484375, "r": 542.25873, "b": 225.18753051757812, "coord_origin": "TOPLEFT"}, "confidence": 0.9879173636436462, "cells": [{"id": 8, "text": "The new DB2 RCAC support provides a method for controlling data access across all ", "bbox": {"l": 136.80002, "t": 155.50775, "r": 515.71027, "b": 164.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "interfaces and all types of users with a data-centric solution. Moving security processing to ", "bbox": {"l": 136.80002, "t": 167.50757, "r": 538.3653, "b": 176.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "the database layer makes it easier to build controls that meet your compliance policies. The ", "bbox": {"l": 136.8, "t": 179.50739, "r": 542.25873, "b": 188.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "RCAC support provides an additional layer of security that complements object-level ", "bbox": {"l": 136.8, "t": 191.5072, "r": 510.83681999999993, "b": 200.72020999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "authorizations to limit data access to a need-to-know basis. Therefore, it is critical that you ", "bbox": {"l": 136.79999, "t": 203.50702, "r": 536.61536, "b": 212.72002999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "first have a sound object-level security implementation in place.", "bbox": {"l": 136.79999, "t": 215.50684, "r": 415.8204, "b": 224.71984999999995, "coord_origin": "TOPLEFT"}}]}, "text": "The new DB2 RCAC support provides a method for controlling data access across all interfaces and all types of users with a data-centric solution. Moving security processing to the database layer makes it easier to build controls that meet your compliance policies. The RCAC support provides an additional layer of security that complements object-level authorizations to limit data access to a need-to-know basis. Therefore, it is critical that you first have a sound object-level security implementation in place."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 20, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 328.2296447753906, "t": 754.7693481445312, "r": 529.10632, "b": 764.0823974609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9491059184074402, "cells": [{"id": 0, "text": "Chapter 1. Securing and protecting IBM DB2 data ", "bbox": {"l": 328.67999, "t": 755.538002, "r": 529.10632, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 1. Securing and protecting IBM DB2 data"}, {"label": "page_footer", "id": 1, "page_no": 20, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 541.1834716796875, "t": 754.2889404296875, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8711605668067932, "cells": [{"id": 1, "text": "5", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "5"}]}}, {"page_no": 21, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "6 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 87.840302, "t": 755.538002, "r": 328.72537, "b": 763.863001, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.46890258789062, "t": 754.154052734375, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8681296110153198, "cells": [{"id": 0, "text": "6 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 87.840302, "t": 754.5233764648438, "r": 328.78973388671875, "b": 764.0779418945312, "coord_origin": "TOPLEFT"}, "confidence": 0.9378317594528198, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 87.840302, "t": 755.538002, "r": 328.72537, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 21, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.46890258789062, "t": 754.154052734375, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8681296110153198, "cells": [{"id": 0, "text": "6 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "6"}, {"label": "page_footer", "id": 1, "page_no": 21, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 87.840302, "t": 754.5233764648438, "r": 328.78973388671875, "b": 764.0779418945312, "coord_origin": "TOPLEFT"}, "confidence": 0.9378317594528198, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 87.840302, "t": 755.538002, "r": 328.72537, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}], "body": [], "headers": [{"label": "page_footer", "id": 0, "page_no": 21, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.46890258789062, "t": 754.154052734375, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8681296110153198, "cells": [{"id": 0, "text": "6 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "6"}, {"label": "page_footer", "id": 1, "page_no": 21, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 87.840302, "t": 754.5233764648438, "r": 328.78973388671875, "b": 764.0779418945312, "coord_origin": "TOPLEFT"}, "confidence": 0.9378317594528198, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 87.840302, "t": 755.538002, "r": 328.72537, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 22, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "7", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Chapter 2.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Roles and separation of duties", "bbox": {"l": 136.8, "t": 254.88635, "r": 515.13116, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "One of the primary objectives of row and column access control (RCAC) is to create data ", "bbox": {"l": 136.8, "t": 317.68872, "r": 532.0885, "b": 326.90170000000006, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "security policies that control and govern user access to data and limit the data access of DB2 ", "bbox": {"l": 136.8, "t": 329.68854, "r": 547.3324, "b": 338.90152, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "designers and administrators to only the minimum that is required to do their jobs.", "bbox": {"l": 136.8, "t": 341.68835, "r": 497.04517, "b": 350.90134, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "To accomplish these tasks, RCAC engineers devised a set of functional roles that, as a group, ", "bbox": {"l": 136.8, "t": 363.70792, "r": 547.15588, "b": 372.9209, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "implement effectively data access requirements and also limit the span of control of each role ", "bbox": {"l": 136.8, "t": 375.70772999999997, "r": 547.25745, "b": 384.92071999999996, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "so that each role is given only the authorities that are needed to perform its specific set of ", "bbox": {"l": 136.8, "t": 387.7075500000001, "r": 533.96405, "b": 396.92053, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "tasks.", "bbox": {"l": 136.8, "t": 399.70737, "r": 162.73087, "b": 408.92035, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "This chapter describes the concepts of roles and separation of duties on DB2 for i and covers ", "bbox": {"l": 136.8, "t": 421.7269299999999, "r": 547.2655, "b": 430.93991, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "the following topics:", "bbox": {"l": 136.8, "t": 433.72675000000004, "r": 223.52769, "b": 442.93973, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 450.85593, "r": 141.78, "b": 459.63070999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Roles", "bbox": {"l": 151.20016, "t": 450.70654, "r": 176.71271, "b": 459.91953, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 462.85574, "r": 141.78, "b": 471.63052, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Separation of duties", "bbox": {"l": 151.20016, "t": 462.70636, "r": 239.97063000000003, "b": 471.91934, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "2", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.7032470703125, "t": 754.6690673828125, "r": 257.24335, "b": 764.16552734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9463762640953064, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 540.8427734375, "t": 754.1920166015625, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.870232343673706, "cells": [{"id": 1, "text": "7", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 2.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "section_header", "bbox": {"l": 136.8, "t": 253.07919311523438, "r": 515.13116, "b": 279.40411376953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9443839192390442, "cells": [{"id": 3, "text": "Roles and separation of duties", "bbox": {"l": 136.8, "t": 254.88635, "r": 515.13116, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.93650817871094, "t": 316.54962158203125, "r": 547.3324, "b": 351.0145568847656, "coord_origin": "TOPLEFT"}, "confidence": 0.9858477115631104, "cells": [{"id": 4, "text": "One of the primary objectives of row and column access control (RCAC) is to create data ", "bbox": {"l": 136.8, "t": 317.68872, "r": 532.0885, "b": 326.90170000000006, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "security policies that control and govern user access to data and limit the data access of DB2 ", "bbox": {"l": 136.8, "t": 329.68854, "r": 547.3324, "b": 338.90152, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "designers and administrators to only the minimum that is required to do their jobs.", "bbox": {"l": 136.8, "t": 341.68835, "r": 497.04517, "b": 350.90134, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.88510131835938, "t": 362.6448669433594, "r": 547.25745, "b": 408.92035, "coord_origin": "TOPLEFT"}, "confidence": 0.9865830540657043, "cells": [{"id": 7, "text": "To accomplish these tasks, RCAC engineers devised a set of functional roles that, as a group, ", "bbox": {"l": 136.8, "t": 363.70792, "r": 547.15588, "b": 372.9209, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "implement effectively data access requirements and also limit the span of control of each role ", "bbox": {"l": 136.8, "t": 375.70772999999997, "r": 547.25745, "b": 384.92071999999996, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "so that each role is given only the authorities that are needed to perform its specific set of ", "bbox": {"l": 136.8, "t": 387.7075500000001, "r": 533.96405, "b": 396.92053, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "tasks.", "bbox": {"l": 136.8, "t": 399.70737, "r": 162.73087, "b": 408.92035, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 135.7690887451172, "t": 420.59063720703125, "r": 547.2655, "b": 442.93973, "coord_origin": "TOPLEFT"}, "confidence": 0.978435754776001, "cells": [{"id": 11, "text": "This chapter describes the concepts of roles and separation of duties on DB2 for i and covers ", "bbox": {"l": 136.8, "t": 421.7269299999999, "r": 547.2655, "b": 430.93991, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "the following topics:", "bbox": {"l": 136.8, "t": 433.72675000000004, "r": 223.52769, "b": 442.93973, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.8439483642578, "t": 449.8417053222656, "r": 176.71271, "b": 459.91953, "coord_origin": "TOPLEFT"}, "confidence": 0.9163564443588257, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 450.85593, "r": 141.78, "b": 459.63070999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Roles", "bbox": {"l": 151.20016, "t": 450.70654, "r": 176.71271, "b": 459.91953, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.7147674560547, "t": 462.1671447753906, "r": 239.97063000000003, "b": 472.4137878417969, "coord_origin": "TOPLEFT"}, "confidence": 0.9477108716964722, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 462.85574, "r": 141.78, "b": 471.63052, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Separation of duties", "bbox": {"l": 151.20016, "t": 462.70636, "r": 239.97063000000003, "b": 471.91934, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 500.39999, "t": 93.14598083496094, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.7584443092346191, "cells": [{"id": 17, "text": "2", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "picture", "bbox": {"l": 32.17647933959961, "t": 70.26495361328125, "r": 239.21856689453125, "b": 237.9607696533203, "coord_origin": "TOPLEFT"}, "confidence": 0.6822353005409241, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 22, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.7032470703125, "t": 754.6690673828125, "r": 257.24335, "b": 764.16552734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9463762640953064, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 22, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 540.8427734375, "t": 754.1920166015625, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.870232343673706, "cells": [{"id": 1, "text": "7", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "7"}, {"label": "text", "id": 2, "page_no": 22, "cluster": {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 2.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 2."}, {"label": "section_header", "id": 3, "page_no": 22, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 136.8, "t": 253.07919311523438, "r": 515.13116, "b": 279.40411376953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9443839192390442, "cells": [{"id": 3, "text": "Roles and separation of duties", "bbox": {"l": 136.8, "t": 254.88635, "r": 515.13116, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Roles and separation of duties"}, {"label": "text", "id": 4, "page_no": 22, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.93650817871094, "t": 316.54962158203125, "r": 547.3324, "b": 351.0145568847656, "coord_origin": "TOPLEFT"}, "confidence": 0.9858477115631104, "cells": [{"id": 4, "text": "One of the primary objectives of row and column access control (RCAC) is to create data ", "bbox": {"l": 136.8, "t": 317.68872, "r": 532.0885, "b": 326.90170000000006, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "security policies that control and govern user access to data and limit the data access of DB2 ", "bbox": {"l": 136.8, "t": 329.68854, "r": 547.3324, "b": 338.90152, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "designers and administrators to only the minimum that is required to do their jobs.", "bbox": {"l": 136.8, "t": 341.68835, "r": 497.04517, "b": 350.90134, "coord_origin": "TOPLEFT"}}]}, "text": "One of the primary objectives of row and column access control (RCAC) is to create data security policies that control and govern user access to data and limit the data access of DB2 designers and administrators to only the minimum that is required to do their jobs."}, {"label": "text", "id": 5, "page_no": 22, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.88510131835938, "t": 362.6448669433594, "r": 547.25745, "b": 408.92035, "coord_origin": "TOPLEFT"}, "confidence": 0.9865830540657043, "cells": [{"id": 7, "text": "To accomplish these tasks, RCAC engineers devised a set of functional roles that, as a group, ", "bbox": {"l": 136.8, "t": 363.70792, "r": 547.15588, "b": 372.9209, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "implement effectively data access requirements and also limit the span of control of each role ", "bbox": {"l": 136.8, "t": 375.70772999999997, "r": 547.25745, "b": 384.92071999999996, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "so that each role is given only the authorities that are needed to perform its specific set of ", "bbox": {"l": 136.8, "t": 387.7075500000001, "r": 533.96405, "b": 396.92053, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "tasks.", "bbox": {"l": 136.8, "t": 399.70737, "r": 162.73087, "b": 408.92035, "coord_origin": "TOPLEFT"}}]}, "text": "To accomplish these tasks, RCAC engineers devised a set of functional roles that, as a group, implement effectively data access requirements and also limit the span of control of each role so that each role is given only the authorities that are needed to perform its specific set of tasks."}, {"label": "text", "id": 6, "page_no": 22, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.7690887451172, "t": 420.59063720703125, "r": 547.2655, "b": 442.93973, "coord_origin": "TOPLEFT"}, "confidence": 0.978435754776001, "cells": [{"id": 11, "text": "This chapter describes the concepts of roles and separation of duties on DB2 for i and covers ", "bbox": {"l": 136.8, "t": 421.7269299999999, "r": 547.2655, "b": 430.93991, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "the following topics:", "bbox": {"l": 136.8, "t": 433.72675000000004, "r": 223.52769, "b": 442.93973, "coord_origin": "TOPLEFT"}}]}, "text": "This chapter describes the concepts of roles and separation of duties on DB2 for i and covers the following topics:"}, {"label": "list_item", "id": 7, "page_no": 22, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.8439483642578, "t": 449.8417053222656, "r": 176.71271, "b": 459.91953, "coord_origin": "TOPLEFT"}, "confidence": 0.9163564443588257, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 450.85593, "r": 141.78, "b": 459.63070999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Roles", "bbox": {"l": 151.20016, "t": 450.70654, "r": 176.71271, "b": 459.91953, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Roles"}, {"label": "list_item", "id": 8, "page_no": 22, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.7147674560547, "t": 462.1671447753906, "r": 239.97063000000003, "b": 472.4137878417969, "coord_origin": "TOPLEFT"}, "confidence": 0.9477108716964722, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 462.85574, "r": 141.78, "b": 471.63052, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Separation of duties", "bbox": {"l": 151.20016, "t": 462.70636, "r": 239.97063000000003, "b": 471.91934, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Separation of duties"}, {"label": "text", "id": 9, "page_no": 22, "cluster": {"id": 9, "label": "text", "bbox": {"l": 500.39999, "t": 93.14598083496094, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.7584443092346191, "cells": [{"id": 17, "text": "2", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, "text": "2"}, {"label": "picture", "id": 10, "page_no": 22, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 32.17647933959961, "t": 70.26495361328125, "r": 239.21856689453125, "b": 237.9607696533203, "coord_origin": "TOPLEFT"}, "confidence": 0.6822353005409241, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 22, "cluster": {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 2.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 2."}, {"label": "section_header", "id": 3, "page_no": 22, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 136.8, "t": 253.07919311523438, "r": 515.13116, "b": 279.40411376953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9443839192390442, "cells": [{"id": 3, "text": "Roles and separation of duties", "bbox": {"l": 136.8, "t": 254.88635, "r": 515.13116, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Roles and separation of duties"}, {"label": "text", "id": 4, "page_no": 22, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.93650817871094, "t": 316.54962158203125, "r": 547.3324, "b": 351.0145568847656, "coord_origin": "TOPLEFT"}, "confidence": 0.9858477115631104, "cells": [{"id": 4, "text": "One of the primary objectives of row and column access control (RCAC) is to create data ", "bbox": {"l": 136.8, "t": 317.68872, "r": 532.0885, "b": 326.90170000000006, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "security policies that control and govern user access to data and limit the data access of DB2 ", "bbox": {"l": 136.8, "t": 329.68854, "r": 547.3324, "b": 338.90152, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "designers and administrators to only the minimum that is required to do their jobs.", "bbox": {"l": 136.8, "t": 341.68835, "r": 497.04517, "b": 350.90134, "coord_origin": "TOPLEFT"}}]}, "text": "One of the primary objectives of row and column access control (RCAC) is to create data security policies that control and govern user access to data and limit the data access of DB2 designers and administrators to only the minimum that is required to do their jobs."}, {"label": "text", "id": 5, "page_no": 22, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.88510131835938, "t": 362.6448669433594, "r": 547.25745, "b": 408.92035, "coord_origin": "TOPLEFT"}, "confidence": 0.9865830540657043, "cells": [{"id": 7, "text": "To accomplish these tasks, RCAC engineers devised a set of functional roles that, as a group, ", "bbox": {"l": 136.8, "t": 363.70792, "r": 547.15588, "b": 372.9209, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "implement effectively data access requirements and also limit the span of control of each role ", "bbox": {"l": 136.8, "t": 375.70772999999997, "r": 547.25745, "b": 384.92071999999996, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "so that each role is given only the authorities that are needed to perform its specific set of ", "bbox": {"l": 136.8, "t": 387.7075500000001, "r": 533.96405, "b": 396.92053, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "tasks.", "bbox": {"l": 136.8, "t": 399.70737, "r": 162.73087, "b": 408.92035, "coord_origin": "TOPLEFT"}}]}, "text": "To accomplish these tasks, RCAC engineers devised a set of functional roles that, as a group, implement effectively data access requirements and also limit the span of control of each role so that each role is given only the authorities that are needed to perform its specific set of tasks."}, {"label": "text", "id": 6, "page_no": 22, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.7690887451172, "t": 420.59063720703125, "r": 547.2655, "b": 442.93973, "coord_origin": "TOPLEFT"}, "confidence": 0.978435754776001, "cells": [{"id": 11, "text": "This chapter describes the concepts of roles and separation of duties on DB2 for i and covers ", "bbox": {"l": 136.8, "t": 421.7269299999999, "r": 547.2655, "b": 430.93991, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "the following topics:", "bbox": {"l": 136.8, "t": 433.72675000000004, "r": 223.52769, "b": 442.93973, "coord_origin": "TOPLEFT"}}]}, "text": "This chapter describes the concepts of roles and separation of duties on DB2 for i and covers the following topics:"}, {"label": "list_item", "id": 7, "page_no": 22, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.8439483642578, "t": 449.8417053222656, "r": 176.71271, "b": 459.91953, "coord_origin": "TOPLEFT"}, "confidence": 0.9163564443588257, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 450.85593, "r": 141.78, "b": 459.63070999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Roles", "bbox": {"l": 151.20016, "t": 450.70654, "r": 176.71271, "b": 459.91953, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Roles"}, {"label": "list_item", "id": 8, "page_no": 22, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.7147674560547, "t": 462.1671447753906, "r": 239.97063000000003, "b": 472.4137878417969, "coord_origin": "TOPLEFT"}, "confidence": 0.9477108716964722, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 462.85574, "r": 141.78, "b": 471.63052, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Separation of duties", "bbox": {"l": 151.20016, "t": 462.70636, "r": 239.97063000000003, "b": 471.91934, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Separation of duties"}, {"label": "text", "id": 9, "page_no": 22, "cluster": {"id": 9, "label": "text", "bbox": {"l": 500.39999, "t": 93.14598083496094, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.7584443092346191, "cells": [{"id": 17, "text": "2", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, "text": "2"}, {"label": "picture", "id": 10, "page_no": 22, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 32.17647933959961, "t": 70.26495361328125, "r": 239.21856689453125, "b": 237.9607696533203, "coord_origin": "TOPLEFT"}, "confidence": 0.6822353005409241, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 22, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.7032470703125, "t": 754.6690673828125, "r": 257.24335, "b": 764.16552734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9463762640953064, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 22, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 540.8427734375, "t": 754.1920166015625, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.870232343673706, "cells": [{"id": 1, "text": "7", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "7"}]}}, {"page_no": 23, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "8 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 87.840302, "t": 755.538002, "r": 328.72537, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "2.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 88.423279, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Roles", "bbox": {"l": 93.147934, "t": 74.34069999999997, "r": 139.42577, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Traditionally, data access roles are defined in a binary way, where access to the data is either ", "bbox": {"l": 136.8, "t": 106.6087, "r": 547.29651, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "not permitted or access to the data is permitted. A full access capability can also be ", "bbox": {"l": 136.8, "t": 118.60852, "r": 508.29009999999994, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "instantiated by the *ALLOBJ special authority, either explicitly or implicitly, for the security ", "bbox": {"l": 136.79999, "t": 130.60834, "r": 531.44403, "b": 139.82135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "officer. If you hold the role of security officer, or have all *ALLOBJ special authority, you have ", "bbox": {"l": 136.79996, "t": 142.60815000000002, "r": 546.6059, "b": 151.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "access to all the data, with no exceptions. Unfortunately, this might not meet the ", "bbox": {"l": 136.79996, "t": 154.60797000000002, "r": 491.55511, "b": 163.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "organization\u2019s requirements for limiting access to data or separation of duties.", "bbox": {"l": 136.79996, "t": 166.60779000000002, "r": 478.54343000000006, "b": 175.82079999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "To assist with defining roles and the separation of duties with appropriate authority, IBM i ", "bbox": {"l": 136.79996, "t": 188.62738000000002, "r": 529.83362, "b": 197.84038999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "provides ", "bbox": {"l": 136.79996, "t": 200.62720000000002, "r": 177.20967, "b": 209.84020999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "function usage IDs", "bbox": {"l": 176.75999, "t": 200.10497999999995, "r": 259.01556, "b": 210.16272000000004, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": ". A function usage ID implements granular security controls rather ", "bbox": {"l": 258.84, "t": 200.62872000000004, "r": 547.25879, "b": 209.84173999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "than granting users powerful special authorities, such as all object, job control, or service.", "bbox": {"l": 136.80011, "t": 212.62854000000004, "r": 531.03082, "b": 221.84154999999998, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Roles are divided among the following DB2 functions and their corresponding function usage ", "bbox": {"l": 136.80011, "t": 234.64813000000004, "r": 547.31238, "b": 243.86114999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "IDs:", "bbox": {"l": 136.80011, "t": 246.64795000000004, "r": 154.56874, "b": 255.86095999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "GLYPH", "bbox": {"l": 136.80011, "t": 263.77716, "r": 141.78011, "b": 272.55193999999995, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "DDM and IBM DRDAfi application server access: QIBM_DB_DDMDRDA", "bbox": {"l": 151.20027, "t": 263.62775, "r": 473.7419100000001, "b": 272.84076000000005, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "GLYPH", "bbox": {"l": 136.80013, "t": 275.77698, "r": 141.78012, "b": 284.55176, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Toolbox application server access: QIBM_DB_ZDA", "bbox": {"l": 151.20029, "t": 275.62756, "r": 375.98358, "b": 284.84058, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "GLYPH", "bbox": {"l": 136.80013, "t": 287.77679, "r": 141.78012, "b": 296.55157, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Database Administrator function: QIBM_DB_SQLADM", "bbox": {"l": 151.20029, "t": 287.62741, "r": 391.564, "b": 296.84039, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "GLYPH", "bbox": {"l": 136.80013, "t": 299.77661, "r": 141.78012, "b": 308.55139, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Database Information function: QIBM_DB_SYSMON", "bbox": {"l": 151.20029, "t": 299.62723, "r": 383.82812, "b": 308.84021, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "GLYPH", "bbox": {"l": 136.80013, "t": 311.77643, "r": 141.78012, "b": 320.55121, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Security Administrator function: QIBM_DB_SECADM", "bbox": {"l": 151.20029, "t": 311.6270400000001, "r": 385.5571, "b": 320.84003000000007, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "2.1.1", "bbox": {"l": 64.800003, "t": 341.45474, "r": 93.853226, "b": 353.44272, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "DDM and DRDA application server access: QIBM_DB_DDMDRDA", "bbox": {"l": 97.484901, "t": 341.45474, "r": 501.05563, "b": 353.44272, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "The QIBM_DB_DDMDRDA function usage ID restricts access to the DDM and DRDA ", "bbox": {"l": 136.8, "t": 367.60873, "r": 516.65253, "b": 376.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "application server (QRWTSRVR). This function usage ID provides an easy alternative (rather ", "bbox": {"l": 136.8, "t": 379.60855, "r": 547.22955, "b": 388.82153, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "than writing an exit program) to control access to DDM and DRDA from the server side. The ", "bbox": {"l": 136.79999, "t": 391.60837, "r": 544.2276, "b": 400.82134999999994, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "function usage IDs ship with the default authority of *ALLOWED. The security officer can ", "bbox": {"l": 136.79999, "t": 403.60818000000006, "r": 529.2121, "b": 412.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "easily deny access to specific users or groups.", "bbox": {"l": 136.79999, "t": 415.608, "r": 342.43817, "b": 424.82098, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "This is an alternative to a User Exit Program approach. No coding is required, it is easy to ", "bbox": {"l": 136.79999, "t": 437.62756, "r": 534.94904, "b": 446.84055, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "change, and it is auditable.", "bbox": {"l": 136.79999, "t": 449.62738, "r": 255.25826, "b": 458.84036, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "2.1.2", "bbox": {"l": 64.800003, "t": 479.45474, "r": 93.831696, "b": 491.44272, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Toolbox application server access: QIBM_DB_ZDA", "bbox": {"l": 97.46067, "t": 479.45474, "r": 413.01059, "b": 491.44272, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "The QIBM_DB_ZDA function usage ID restricts access to the optimized server that handles ", "bbox": {"l": 136.8, "t": 505.60861, "r": 543.15112, "b": 514.82159, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "DB2 requests from clients (QZDASOINIT and QZDASSINIT). Server access is used by the ", "bbox": {"l": 136.8, "t": 517.66818, "r": 539.04858, "b": 526.88116, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ODBC, OLE DB, and .NET providers that ship with IBM i Access for Windows and JDBC ", "bbox": {"l": 136.80005, "t": 529.66797, "r": 529.04962, "b": 538.88098, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Toolbox, Run SQL scripts, and other parts of System i Navigator and Navigator for i Web ", "bbox": {"l": 136.80005, "t": 541.66779, "r": 529.66431, "b": 550.88078, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "console.", "bbox": {"l": 136.80005, "t": 553.66759, "r": 173.81541, "b": 562.88058, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "This function usage ID provides an easy alternative (rather than writing an exit program) to ", "bbox": {"l": 136.80005, "t": 575.6274, "r": 538.42694, "b": 584.8403900000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "control access to these functions from the server side. The function usage IDs ship with the ", "bbox": {"l": 136.80005, "t": 587.6272, "r": 542.29028, "b": 596.84019, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "default authority of *ALLOWED. The security officer can easily deny access to specific users ", "bbox": {"l": 136.80005, "t": 599.627, "r": 546.20782, "b": 608.84, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "or groups.", "bbox": {"l": 136.80005, "t": 611.6268, "r": 181.49457, "b": 620.8398, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "This is an alternative to a User Exit Program approach. No coding is required, it is easy to ", "bbox": {"l": 136.80005, "t": 633.64636, "r": 534.9491, "b": 642.85936, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "change, and it is auditable.", "bbox": {"l": 136.80005, "t": 645.64616, "r": 255.25832000000003, "b": 654.85916, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.24457550048828, "t": 754.206787109375, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8828381299972534, "cells": [{"id": 0, "text": "8 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 87.8071517944336, "t": 754.697998046875, "r": 328.72537, "b": 763.9702758789062, "coord_origin": "TOPLEFT"}, "confidence": 0.9468024373054504, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 87.840302, "t": 755.538002, "r": 328.72537, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.00420379638672, "t": 73.46255493164062, "r": 139.42577, "b": 89.1037, "coord_origin": "TOPLEFT"}, "confidence": 0.9606645107269287, "cells": [{"id": 2, "text": "2.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 88.423279, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Roles", "bbox": {"l": 93.147934, "t": 74.34069999999997, "r": 139.42577, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.84288024902344, "t": 105.96865844726562, "r": 547.29651, "b": 176.3714599609375, "coord_origin": "TOPLEFT"}, "confidence": 0.987520694732666, "cells": [{"id": 4, "text": "Traditionally, data access roles are defined in a binary way, where access to the data is either ", "bbox": {"l": 136.8, "t": 106.6087, "r": 547.29651, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "not permitted or access to the data is permitted. A full access capability can also be ", "bbox": {"l": 136.8, "t": 118.60852, "r": 508.29009999999994, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "instantiated by the *ALLOBJ special authority, either explicitly or implicitly, for the security ", "bbox": {"l": 136.79999, "t": 130.60834, "r": 531.44403, "b": 139.82135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "officer. If you hold the role of security officer, or have all *ALLOBJ special authority, you have ", "bbox": {"l": 136.79996, "t": 142.60815000000002, "r": 546.6059, "b": 151.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "access to all the data, with no exceptions. Unfortunately, this might not meet the ", "bbox": {"l": 136.79996, "t": 154.60797000000002, "r": 491.55511, "b": 163.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "organization\u2019s requirements for limiting access to data or separation of duties.", "bbox": {"l": 136.79996, "t": 166.60779000000002, "r": 478.54343000000006, "b": 175.82079999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.82821655273438, "t": 187.98101806640625, "r": 547.25879, "b": 222.3696746826172, "coord_origin": "TOPLEFT"}, "confidence": 0.9839559197425842, "cells": [{"id": 10, "text": "To assist with defining roles and the separation of duties with appropriate authority, IBM i ", "bbox": {"l": 136.79996, "t": 188.62738000000002, "r": 529.83362, "b": 197.84038999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "provides ", "bbox": {"l": 136.79996, "t": 200.62720000000002, "r": 177.20967, "b": 209.84020999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "function usage IDs", "bbox": {"l": 176.75999, "t": 200.10497999999995, "r": 259.01556, "b": 210.16272000000004, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": ". A function usage ID implements granular security controls rather ", "bbox": {"l": 258.84, "t": 200.62872000000004, "r": 547.25879, "b": 209.84173999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "than granting users powerful special authorities, such as all object, job control, or service.", "bbox": {"l": 136.80011, "t": 212.62854000000004, "r": 531.03082, "b": 221.84154999999998, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.2572479248047, "t": 234.0032501220703, "r": 547.31238, "b": 255.86095999999998, "coord_origin": "TOPLEFT"}, "confidence": 0.9627324938774109, "cells": [{"id": 15, "text": "Roles are divided among the following DB2 functions and their corresponding function usage ", "bbox": {"l": 136.80011, "t": 234.64813000000004, "r": 547.31238, "b": 243.86114999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "IDs:", "bbox": {"l": 136.80011, "t": 246.64795000000004, "r": 154.56874, "b": 255.86095999999998, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.83023071289062, "t": 262.2904968261719, "r": 474.0260009765625, "b": 272.84076000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.941753089427948, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.80011, "t": 263.77716, "r": 141.78011, "b": 272.55193999999995, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "DDM and IBM DRDAfi application server access: QIBM_DB_DDMDRDA", "bbox": {"l": 151.20027, "t": 263.62775, "r": 473.7419100000001, "b": 272.84076000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.586669921875, "t": 274.4866943359375, "r": 376.04473876953125, "b": 284.8529357910156, "coord_origin": "TOPLEFT"}, "confidence": 0.9312568306922913, "cells": [{"id": 19, "text": "GLYPH", "bbox": {"l": 136.80013, "t": 275.77698, "r": 141.78012, "b": 284.55176, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Toolbox application server access: QIBM_DB_ZDA", "bbox": {"l": 151.20029, "t": 275.62756, "r": 375.98358, "b": 284.84058, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.70936584472656, "t": 286.37677001953125, "r": 391.564, "b": 296.84039, "coord_origin": "TOPLEFT"}, "confidence": 0.9296406507492065, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.80013, "t": 287.77679, "r": 141.78012, "b": 296.55157, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Database Administrator function: QIBM_DB_SQLADM", "bbox": {"l": 151.20029, "t": 287.62741, "r": 391.564, "b": 296.84039, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.47157287597656, "t": 298.2834167480469, "r": 384.0774841308594, "b": 308.84021, "coord_origin": "TOPLEFT"}, "confidence": 0.9292329549789429, "cells": [{"id": 23, "text": "GLYPH", "bbox": {"l": 136.80013, "t": 299.77661, "r": 141.78012, "b": 308.55139, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Database Information function: QIBM_DB_SYSMON", "bbox": {"l": 151.20029, "t": 299.62723, "r": 383.82812, "b": 308.84021, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 135.6302947998047, "t": 310.25726318359375, "r": 385.5571, "b": 320.94586181640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9514175057411194, "cells": [{"id": 25, "text": "GLYPH", "bbox": {"l": 136.80013, "t": 311.77643, "r": 141.78012, "b": 320.55121, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Security Administrator function: QIBM_DB_SECADM", "bbox": {"l": 151.20029, "t": 311.6270400000001, "r": 385.5571, "b": 320.84003000000007, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "section_header", "bbox": {"l": 63.82975387573242, "t": 340.201904296875, "r": 501.05563, "b": 353.6498718261719, "coord_origin": "TOPLEFT"}, "confidence": 0.9617684483528137, "cells": [{"id": 27, "text": "2.1.1", "bbox": {"l": 64.800003, "t": 341.45474, "r": 93.853226, "b": 353.44272, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "DDM and DRDA application server access: QIBM_DB_DDMDRDA", "bbox": {"l": 97.484901, "t": 341.45474, "r": 501.05563, "b": 353.44272, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 135.88975524902344, "t": 366.2914733886719, "r": 547.22955, "b": 425.1965637207031, "coord_origin": "TOPLEFT"}, "confidence": 0.9872463941574097, "cells": [{"id": 29, "text": "The QIBM_DB_DDMDRDA function usage ID restricts access to the DDM and DRDA ", "bbox": {"l": 136.8, "t": 367.60873, "r": 516.65253, "b": 376.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "application server (QRWTSRVR). This function usage ID provides an easy alternative (rather ", "bbox": {"l": 136.8, "t": 379.60855, "r": 547.22955, "b": 388.82153, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "than writing an exit program) to control access to DDM and DRDA from the server side. The ", "bbox": {"l": 136.79999, "t": 391.60837, "r": 544.2276, "b": 400.82134999999994, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "function usage IDs ship with the default authority of *ALLOWED. The security officer can ", "bbox": {"l": 136.79999, "t": 403.60818000000006, "r": 529.2121, "b": 412.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "easily deny access to specific users or groups.", "bbox": {"l": 136.79999, "t": 415.608, "r": 342.43817, "b": 424.82098, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 135.7061767578125, "t": 436.642578125, "r": 534.94904, "b": 458.91448974609375, "coord_origin": "TOPLEFT"}, "confidence": 0.97740238904953, "cells": [{"id": 34, "text": "This is an alternative to a User Exit Program approach. No coding is required, it is easy to ", "bbox": {"l": 136.79999, "t": 437.62756, "r": 534.94904, "b": 446.84055, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "change, and it is auditable.", "bbox": {"l": 136.79999, "t": 449.62738, "r": 255.25826, "b": 458.84036, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "section_header", "bbox": {"l": 63.88609313964844, "t": 478.24237060546875, "r": 413.2720031738281, "b": 491.4810485839844, "coord_origin": "TOPLEFT"}, "confidence": 0.9616555571556091, "cells": [{"id": 36, "text": "2.1.2", "bbox": {"l": 64.800003, "t": 479.45474, "r": 93.831696, "b": 491.44272, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Toolbox application server access: QIBM_DB_ZDA", "bbox": {"l": 97.46067, "t": 479.45474, "r": 413.01059, "b": 491.44272, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "text", "bbox": {"l": 135.62423706054688, "t": 504.5226135253906, "r": 543.15112, "b": 562.88058, "coord_origin": "TOPLEFT"}, "confidence": 0.985893726348877, "cells": [{"id": 38, "text": "The QIBM_DB_ZDA function usage ID restricts access to the optimized server that handles ", "bbox": {"l": 136.8, "t": 505.60861, "r": 543.15112, "b": 514.82159, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "DB2 requests from clients (QZDASOINIT and QZDASSINIT). Server access is used by the ", "bbox": {"l": 136.8, "t": 517.66818, "r": 539.04858, "b": 526.88116, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ODBC, OLE DB, and .NET providers that ship with IBM i Access for Windows and JDBC ", "bbox": {"l": 136.80005, "t": 529.66797, "r": 529.04962, "b": 538.88098, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Toolbox, Run SQL scripts, and other parts of System i Navigator and Navigator for i Web ", "bbox": {"l": 136.80005, "t": 541.66779, "r": 529.66431, "b": 550.88078, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "console.", "bbox": {"l": 136.80005, "t": 553.66759, "r": 173.81541, "b": 562.88058, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "text", "bbox": {"l": 135.72520446777344, "t": 574.528564453125, "r": 546.20782, "b": 621.1437377929688, "coord_origin": "TOPLEFT"}, "confidence": 0.9876169562339783, "cells": [{"id": 43, "text": "This function usage ID provides an easy alternative (rather than writing an exit program) to ", "bbox": {"l": 136.80005, "t": 575.6274, "r": 538.42694, "b": 584.8403900000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "control access to these functions from the server side. The function usage IDs ship with the ", "bbox": {"l": 136.80005, "t": 587.6272, "r": 542.29028, "b": 596.84019, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "default authority of *ALLOWED. The security officer can easily deny access to specific users ", "bbox": {"l": 136.80005, "t": 599.627, "r": 546.20782, "b": 608.84, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "or groups.", "bbox": {"l": 136.80005, "t": 611.6268, "r": 181.49457, "b": 620.8398, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "text", "bbox": {"l": 135.83445739746094, "t": 632.4659423828125, "r": 534.9491, "b": 654.96728515625, "coord_origin": "TOPLEFT"}, "confidence": 0.979432225227356, "cells": [{"id": 47, "text": "This is an alternative to a User Exit Program approach. No coding is required, it is easy to ", "bbox": {"l": 136.80005, "t": 633.64636, "r": 534.9491, "b": 642.85936, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "change, and it is auditable.", "bbox": {"l": 136.80005, "t": 645.64616, "r": 255.25832000000003, "b": 654.85916, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 23, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.24457550048828, "t": 754.206787109375, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8828381299972534, "cells": [{"id": 0, "text": "8 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "8"}, {"label": "page_footer", "id": 1, "page_no": 23, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 87.8071517944336, "t": 754.697998046875, "r": 328.72537, "b": 763.9702758789062, "coord_origin": "TOPLEFT"}, "confidence": 0.9468024373054504, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 87.840302, "t": 755.538002, "r": 328.72537, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "section_header", "id": 2, "page_no": 23, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.00420379638672, "t": 73.46255493164062, "r": 139.42577, "b": 89.1037, "coord_origin": "TOPLEFT"}, "confidence": 0.9606645107269287, "cells": [{"id": 2, "text": "2.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 88.423279, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Roles", "bbox": {"l": 93.147934, "t": 74.34069999999997, "r": 139.42577, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, "text": "2.1 Roles"}, {"label": "text", "id": 3, "page_no": 23, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.84288024902344, "t": 105.96865844726562, "r": 547.29651, "b": 176.3714599609375, "coord_origin": "TOPLEFT"}, "confidence": 0.987520694732666, "cells": [{"id": 4, "text": "Traditionally, data access roles are defined in a binary way, where access to the data is either ", "bbox": {"l": 136.8, "t": 106.6087, "r": 547.29651, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "not permitted or access to the data is permitted. A full access capability can also be ", "bbox": {"l": 136.8, "t": 118.60852, "r": 508.29009999999994, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "instantiated by the *ALLOBJ special authority, either explicitly or implicitly, for the security ", "bbox": {"l": 136.79999, "t": 130.60834, "r": 531.44403, "b": 139.82135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "officer. If you hold the role of security officer, or have all *ALLOBJ special authority, you have ", "bbox": {"l": 136.79996, "t": 142.60815000000002, "r": 546.6059, "b": 151.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "access to all the data, with no exceptions. Unfortunately, this might not meet the ", "bbox": {"l": 136.79996, "t": 154.60797000000002, "r": 491.55511, "b": 163.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "organization\u2019s requirements for limiting access to data or separation of duties.", "bbox": {"l": 136.79996, "t": 166.60779000000002, "r": 478.54343000000006, "b": 175.82079999999996, "coord_origin": "TOPLEFT"}}]}, "text": "Traditionally, data access roles are defined in a binary way, where access to the data is either not permitted or access to the data is permitted. A full access capability can also be instantiated by the *ALLOBJ special authority, either explicitly or implicitly, for the security officer. If you hold the role of security officer, or have all *ALLOBJ special authority, you have access to all the data, with no exceptions. Unfortunately, this might not meet the organization\u2019s requirements for limiting access to data or separation of duties."}, {"label": "text", "id": 4, "page_no": 23, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.82821655273438, "t": 187.98101806640625, "r": 547.25879, "b": 222.3696746826172, "coord_origin": "TOPLEFT"}, "confidence": 0.9839559197425842, "cells": [{"id": 10, "text": "To assist with defining roles and the separation of duties with appropriate authority, IBM i ", "bbox": {"l": 136.79996, "t": 188.62738000000002, "r": 529.83362, "b": 197.84038999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "provides ", "bbox": {"l": 136.79996, "t": 200.62720000000002, "r": 177.20967, "b": 209.84020999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "function usage IDs", "bbox": {"l": 176.75999, "t": 200.10497999999995, "r": 259.01556, "b": 210.16272000000004, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": ". A function usage ID implements granular security controls rather ", "bbox": {"l": 258.84, "t": 200.62872000000004, "r": 547.25879, "b": 209.84173999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "than granting users powerful special authorities, such as all object, job control, or service.", "bbox": {"l": 136.80011, "t": 212.62854000000004, "r": 531.03082, "b": 221.84154999999998, "coord_origin": "TOPLEFT"}}]}, "text": "To assist with defining roles and the separation of duties with appropriate authority, IBM i provides function usage IDs . A function usage ID implements granular security controls rather than granting users powerful special authorities, such as all object, job control, or service."}, {"label": "text", "id": 5, "page_no": 23, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.2572479248047, "t": 234.0032501220703, "r": 547.31238, "b": 255.86095999999998, "coord_origin": "TOPLEFT"}, "confidence": 0.9627324938774109, "cells": [{"id": 15, "text": "Roles are divided among the following DB2 functions and their corresponding function usage ", "bbox": {"l": 136.80011, "t": 234.64813000000004, "r": 547.31238, "b": 243.86114999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "IDs:", "bbox": {"l": 136.80011, "t": 246.64795000000004, "r": 154.56874, "b": 255.86095999999998, "coord_origin": "TOPLEFT"}}]}, "text": "Roles are divided among the following DB2 functions and their corresponding function usage IDs:"}, {"label": "list_item", "id": 6, "page_no": 23, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.83023071289062, "t": 262.2904968261719, "r": 474.0260009765625, "b": 272.84076000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.941753089427948, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.80011, "t": 263.77716, "r": 141.78011, "b": 272.55193999999995, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "DDM and IBM DRDAfi application server access: QIBM_DB_DDMDRDA", "bbox": {"l": 151.20027, "t": 263.62775, "r": 473.7419100000001, "b": 272.84076000000005, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH DDM and IBM DRDAfi application server access: QIBM_DB_DDMDRDA"}, {"label": "list_item", "id": 7, "page_no": 23, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.586669921875, "t": 274.4866943359375, "r": 376.04473876953125, "b": 284.8529357910156, "coord_origin": "TOPLEFT"}, "confidence": 0.9312568306922913, "cells": [{"id": 19, "text": "GLYPH", "bbox": {"l": 136.80013, "t": 275.77698, "r": 141.78012, "b": 284.55176, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Toolbox application server access: QIBM_DB_ZDA", "bbox": {"l": 151.20029, "t": 275.62756, "r": 375.98358, "b": 284.84058, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Toolbox application server access: QIBM_DB_ZDA"}, {"label": "list_item", "id": 8, "page_no": 23, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.70936584472656, "t": 286.37677001953125, "r": 391.564, "b": 296.84039, "coord_origin": "TOPLEFT"}, "confidence": 0.9296406507492065, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.80013, "t": 287.77679, "r": 141.78012, "b": 296.55157, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Database Administrator function: QIBM_DB_SQLADM", "bbox": {"l": 151.20029, "t": 287.62741, "r": 391.564, "b": 296.84039, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Database Administrator function: QIBM_DB_SQLADM"}, {"label": "list_item", "id": 9, "page_no": 23, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.47157287597656, "t": 298.2834167480469, "r": 384.0774841308594, "b": 308.84021, "coord_origin": "TOPLEFT"}, "confidence": 0.9292329549789429, "cells": [{"id": 23, "text": "GLYPH", "bbox": {"l": 136.80013, "t": 299.77661, "r": 141.78012, "b": 308.55139, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Database Information function: QIBM_DB_SYSMON", "bbox": {"l": 151.20029, "t": 299.62723, "r": 383.82812, "b": 308.84021, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Database Information function: QIBM_DB_SYSMON"}, {"label": "list_item", "id": 10, "page_no": 23, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.6302947998047, "t": 310.25726318359375, "r": 385.5571, "b": 320.94586181640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9514175057411194, "cells": [{"id": 25, "text": "GLYPH", "bbox": {"l": 136.80013, "t": 311.77643, "r": 141.78012, "b": 320.55121, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Security Administrator function: QIBM_DB_SECADM", "bbox": {"l": 151.20029, "t": 311.6270400000001, "r": 385.5571, "b": 320.84003000000007, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Security Administrator function: QIBM_DB_SECADM"}, {"label": "section_header", "id": 11, "page_no": 23, "cluster": {"id": 11, "label": "section_header", "bbox": {"l": 63.82975387573242, "t": 340.201904296875, "r": 501.05563, "b": 353.6498718261719, "coord_origin": "TOPLEFT"}, "confidence": 0.9617684483528137, "cells": [{"id": 27, "text": "2.1.1", "bbox": {"l": 64.800003, "t": 341.45474, "r": 93.853226, "b": 353.44272, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "DDM and DRDA application server access: QIBM_DB_DDMDRDA", "bbox": {"l": 97.484901, "t": 341.45474, "r": 501.05563, "b": 353.44272, "coord_origin": "TOPLEFT"}}]}, "text": "2.1.1 DDM and DRDA application server access: QIBM_DB_DDMDRDA"}, {"label": "text", "id": 12, "page_no": 23, "cluster": {"id": 12, "label": "text", "bbox": {"l": 135.88975524902344, "t": 366.2914733886719, "r": 547.22955, "b": 425.1965637207031, "coord_origin": "TOPLEFT"}, "confidence": 0.9872463941574097, "cells": [{"id": 29, "text": "The QIBM_DB_DDMDRDA function usage ID restricts access to the DDM and DRDA ", "bbox": {"l": 136.8, "t": 367.60873, "r": 516.65253, "b": 376.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "application server (QRWTSRVR). This function usage ID provides an easy alternative (rather ", "bbox": {"l": 136.8, "t": 379.60855, "r": 547.22955, "b": 388.82153, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "than writing an exit program) to control access to DDM and DRDA from the server side. The ", "bbox": {"l": 136.79999, "t": 391.60837, "r": 544.2276, "b": 400.82134999999994, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "function usage IDs ship with the default authority of *ALLOWED. The security officer can ", "bbox": {"l": 136.79999, "t": 403.60818000000006, "r": 529.2121, "b": 412.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "easily deny access to specific users or groups.", "bbox": {"l": 136.79999, "t": 415.608, "r": 342.43817, "b": 424.82098, "coord_origin": "TOPLEFT"}}]}, "text": "The QIBM_DB_DDMDRDA function usage ID restricts access to the DDM and DRDA application server (QRWTSRVR). This function usage ID provides an easy alternative (rather than writing an exit program) to control access to DDM and DRDA from the server side. The function usage IDs ship with the default authority of *ALLOWED. The security officer can easily deny access to specific users or groups."}, {"label": "text", "id": 13, "page_no": 23, "cluster": {"id": 13, "label": "text", "bbox": {"l": 135.7061767578125, "t": 436.642578125, "r": 534.94904, "b": 458.91448974609375, "coord_origin": "TOPLEFT"}, "confidence": 0.97740238904953, "cells": [{"id": 34, "text": "This is an alternative to a User Exit Program approach. No coding is required, it is easy to ", "bbox": {"l": 136.79999, "t": 437.62756, "r": 534.94904, "b": 446.84055, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "change, and it is auditable.", "bbox": {"l": 136.79999, "t": 449.62738, "r": 255.25826, "b": 458.84036, "coord_origin": "TOPLEFT"}}]}, "text": "This is an alternative to a User Exit Program approach. No coding is required, it is easy to change, and it is auditable."}, {"label": "section_header", "id": 14, "page_no": 23, "cluster": {"id": 14, "label": "section_header", "bbox": {"l": 63.88609313964844, "t": 478.24237060546875, "r": 413.2720031738281, "b": 491.4810485839844, "coord_origin": "TOPLEFT"}, "confidence": 0.9616555571556091, "cells": [{"id": 36, "text": "2.1.2", "bbox": {"l": 64.800003, "t": 479.45474, "r": 93.831696, "b": 491.44272, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Toolbox application server access: QIBM_DB_ZDA", "bbox": {"l": 97.46067, "t": 479.45474, "r": 413.01059, "b": 491.44272, "coord_origin": "TOPLEFT"}}]}, "text": "2.1.2 Toolbox application server access: QIBM_DB_ZDA"}, {"label": "text", "id": 15, "page_no": 23, "cluster": {"id": 15, "label": "text", "bbox": {"l": 135.62423706054688, "t": 504.5226135253906, "r": 543.15112, "b": 562.88058, "coord_origin": "TOPLEFT"}, "confidence": 0.985893726348877, "cells": [{"id": 38, "text": "The QIBM_DB_ZDA function usage ID restricts access to the optimized server that handles ", "bbox": {"l": 136.8, "t": 505.60861, "r": 543.15112, "b": 514.82159, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "DB2 requests from clients (QZDASOINIT and QZDASSINIT). Server access is used by the ", "bbox": {"l": 136.8, "t": 517.66818, "r": 539.04858, "b": 526.88116, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ODBC, OLE DB, and .NET providers that ship with IBM i Access for Windows and JDBC ", "bbox": {"l": 136.80005, "t": 529.66797, "r": 529.04962, "b": 538.88098, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Toolbox, Run SQL scripts, and other parts of System i Navigator and Navigator for i Web ", "bbox": {"l": 136.80005, "t": 541.66779, "r": 529.66431, "b": 550.88078, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "console.", "bbox": {"l": 136.80005, "t": 553.66759, "r": 173.81541, "b": 562.88058, "coord_origin": "TOPLEFT"}}]}, "text": "The QIBM_DB_ZDA function usage ID restricts access to the optimized server that handles DB2 requests from clients (QZDASOINIT and QZDASSINIT). Server access is used by the ODBC, OLE DB, and .NET providers that ship with IBM i Access for Windows and JDBC Toolbox, Run SQL scripts, and other parts of System i Navigator and Navigator for i Web console."}, {"label": "text", "id": 16, "page_no": 23, "cluster": {"id": 16, "label": "text", "bbox": {"l": 135.72520446777344, "t": 574.528564453125, "r": 546.20782, "b": 621.1437377929688, "coord_origin": "TOPLEFT"}, "confidence": 0.9876169562339783, "cells": [{"id": 43, "text": "This function usage ID provides an easy alternative (rather than writing an exit program) to ", "bbox": {"l": 136.80005, "t": 575.6274, "r": 538.42694, "b": 584.8403900000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "control access to these functions from the server side. The function usage IDs ship with the ", "bbox": {"l": 136.80005, "t": 587.6272, "r": 542.29028, "b": 596.84019, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "default authority of *ALLOWED. The security officer can easily deny access to specific users ", "bbox": {"l": 136.80005, "t": 599.627, "r": 546.20782, "b": 608.84, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "or groups.", "bbox": {"l": 136.80005, "t": 611.6268, "r": 181.49457, "b": 620.8398, "coord_origin": "TOPLEFT"}}]}, "text": "This function usage ID provides an easy alternative (rather than writing an exit program) to control access to these functions from the server side. The function usage IDs ship with the default authority of *ALLOWED. The security officer can easily deny access to specific users or groups."}, {"label": "text", "id": 17, "page_no": 23, "cluster": {"id": 17, "label": "text", "bbox": {"l": 135.83445739746094, "t": 632.4659423828125, "r": 534.9491, "b": 654.96728515625, "coord_origin": "TOPLEFT"}, "confidence": 0.979432225227356, "cells": [{"id": 47, "text": "This is an alternative to a User Exit Program approach. No coding is required, it is easy to ", "bbox": {"l": 136.80005, "t": 633.64636, "r": 534.9491, "b": 642.85936, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "change, and it is auditable.", "bbox": {"l": 136.80005, "t": 645.64616, "r": 255.25832000000003, "b": 654.85916, "coord_origin": "TOPLEFT"}}]}, "text": "This is an alternative to a User Exit Program approach. No coding is required, it is easy to change, and it is auditable."}], "body": [{"label": "section_header", "id": 2, "page_no": 23, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.00420379638672, "t": 73.46255493164062, "r": 139.42577, "b": 89.1037, "coord_origin": "TOPLEFT"}, "confidence": 0.9606645107269287, "cells": [{"id": 2, "text": "2.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 88.423279, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Roles", "bbox": {"l": 93.147934, "t": 74.34069999999997, "r": 139.42577, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, "text": "2.1 Roles"}, {"label": "text", "id": 3, "page_no": 23, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.84288024902344, "t": 105.96865844726562, "r": 547.29651, "b": 176.3714599609375, "coord_origin": "TOPLEFT"}, "confidence": 0.987520694732666, "cells": [{"id": 4, "text": "Traditionally, data access roles are defined in a binary way, where access to the data is either ", "bbox": {"l": 136.8, "t": 106.6087, "r": 547.29651, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "not permitted or access to the data is permitted. A full access capability can also be ", "bbox": {"l": 136.8, "t": 118.60852, "r": 508.29009999999994, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "instantiated by the *ALLOBJ special authority, either explicitly or implicitly, for the security ", "bbox": {"l": 136.79999, "t": 130.60834, "r": 531.44403, "b": 139.82135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "officer. If you hold the role of security officer, or have all *ALLOBJ special authority, you have ", "bbox": {"l": 136.79996, "t": 142.60815000000002, "r": 546.6059, "b": 151.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "access to all the data, with no exceptions. Unfortunately, this might not meet the ", "bbox": {"l": 136.79996, "t": 154.60797000000002, "r": 491.55511, "b": 163.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "organization\u2019s requirements for limiting access to data or separation of duties.", "bbox": {"l": 136.79996, "t": 166.60779000000002, "r": 478.54343000000006, "b": 175.82079999999996, "coord_origin": "TOPLEFT"}}]}, "text": "Traditionally, data access roles are defined in a binary way, where access to the data is either not permitted or access to the data is permitted. A full access capability can also be instantiated by the *ALLOBJ special authority, either explicitly or implicitly, for the security officer. If you hold the role of security officer, or have all *ALLOBJ special authority, you have access to all the data, with no exceptions. Unfortunately, this might not meet the organization\u2019s requirements for limiting access to data or separation of duties."}, {"label": "text", "id": 4, "page_no": 23, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.82821655273438, "t": 187.98101806640625, "r": 547.25879, "b": 222.3696746826172, "coord_origin": "TOPLEFT"}, "confidence": 0.9839559197425842, "cells": [{"id": 10, "text": "To assist with defining roles and the separation of duties with appropriate authority, IBM i ", "bbox": {"l": 136.79996, "t": 188.62738000000002, "r": 529.83362, "b": 197.84038999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "provides ", "bbox": {"l": 136.79996, "t": 200.62720000000002, "r": 177.20967, "b": 209.84020999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "function usage IDs", "bbox": {"l": 176.75999, "t": 200.10497999999995, "r": 259.01556, "b": 210.16272000000004, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": ". A function usage ID implements granular security controls rather ", "bbox": {"l": 258.84, "t": 200.62872000000004, "r": 547.25879, "b": 209.84173999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "than granting users powerful special authorities, such as all object, job control, or service.", "bbox": {"l": 136.80011, "t": 212.62854000000004, "r": 531.03082, "b": 221.84154999999998, "coord_origin": "TOPLEFT"}}]}, "text": "To assist with defining roles and the separation of duties with appropriate authority, IBM i provides function usage IDs . A function usage ID implements granular security controls rather than granting users powerful special authorities, such as all object, job control, or service."}, {"label": "text", "id": 5, "page_no": 23, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.2572479248047, "t": 234.0032501220703, "r": 547.31238, "b": 255.86095999999998, "coord_origin": "TOPLEFT"}, "confidence": 0.9627324938774109, "cells": [{"id": 15, "text": "Roles are divided among the following DB2 functions and their corresponding function usage ", "bbox": {"l": 136.80011, "t": 234.64813000000004, "r": 547.31238, "b": 243.86114999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "IDs:", "bbox": {"l": 136.80011, "t": 246.64795000000004, "r": 154.56874, "b": 255.86095999999998, "coord_origin": "TOPLEFT"}}]}, "text": "Roles are divided among the following DB2 functions and their corresponding function usage IDs:"}, {"label": "list_item", "id": 6, "page_no": 23, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.83023071289062, "t": 262.2904968261719, "r": 474.0260009765625, "b": 272.84076000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.941753089427948, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.80011, "t": 263.77716, "r": 141.78011, "b": 272.55193999999995, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "DDM and IBM DRDAfi application server access: QIBM_DB_DDMDRDA", "bbox": {"l": 151.20027, "t": 263.62775, "r": 473.7419100000001, "b": 272.84076000000005, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH DDM and IBM DRDAfi application server access: QIBM_DB_DDMDRDA"}, {"label": "list_item", "id": 7, "page_no": 23, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.586669921875, "t": 274.4866943359375, "r": 376.04473876953125, "b": 284.8529357910156, "coord_origin": "TOPLEFT"}, "confidence": 0.9312568306922913, "cells": [{"id": 19, "text": "GLYPH", "bbox": {"l": 136.80013, "t": 275.77698, "r": 141.78012, "b": 284.55176, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Toolbox application server access: QIBM_DB_ZDA", "bbox": {"l": 151.20029, "t": 275.62756, "r": 375.98358, "b": 284.84058, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Toolbox application server access: QIBM_DB_ZDA"}, {"label": "list_item", "id": 8, "page_no": 23, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.70936584472656, "t": 286.37677001953125, "r": 391.564, "b": 296.84039, "coord_origin": "TOPLEFT"}, "confidence": 0.9296406507492065, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.80013, "t": 287.77679, "r": 141.78012, "b": 296.55157, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Database Administrator function: QIBM_DB_SQLADM", "bbox": {"l": 151.20029, "t": 287.62741, "r": 391.564, "b": 296.84039, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Database Administrator function: QIBM_DB_SQLADM"}, {"label": "list_item", "id": 9, "page_no": 23, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.47157287597656, "t": 298.2834167480469, "r": 384.0774841308594, "b": 308.84021, "coord_origin": "TOPLEFT"}, "confidence": 0.9292329549789429, "cells": [{"id": 23, "text": "GLYPH", "bbox": {"l": 136.80013, "t": 299.77661, "r": 141.78012, "b": 308.55139, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Database Information function: QIBM_DB_SYSMON", "bbox": {"l": 151.20029, "t": 299.62723, "r": 383.82812, "b": 308.84021, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Database Information function: QIBM_DB_SYSMON"}, {"label": "list_item", "id": 10, "page_no": 23, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.6302947998047, "t": 310.25726318359375, "r": 385.5571, "b": 320.94586181640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9514175057411194, "cells": [{"id": 25, "text": "GLYPH", "bbox": {"l": 136.80013, "t": 311.77643, "r": 141.78012, "b": 320.55121, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Security Administrator function: QIBM_DB_SECADM", "bbox": {"l": 151.20029, "t": 311.6270400000001, "r": 385.5571, "b": 320.84003000000007, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Security Administrator function: QIBM_DB_SECADM"}, {"label": "section_header", "id": 11, "page_no": 23, "cluster": {"id": 11, "label": "section_header", "bbox": {"l": 63.82975387573242, "t": 340.201904296875, "r": 501.05563, "b": 353.6498718261719, "coord_origin": "TOPLEFT"}, "confidence": 0.9617684483528137, "cells": [{"id": 27, "text": "2.1.1", "bbox": {"l": 64.800003, "t": 341.45474, "r": 93.853226, "b": 353.44272, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "DDM and DRDA application server access: QIBM_DB_DDMDRDA", "bbox": {"l": 97.484901, "t": 341.45474, "r": 501.05563, "b": 353.44272, "coord_origin": "TOPLEFT"}}]}, "text": "2.1.1 DDM and DRDA application server access: QIBM_DB_DDMDRDA"}, {"label": "text", "id": 12, "page_no": 23, "cluster": {"id": 12, "label": "text", "bbox": {"l": 135.88975524902344, "t": 366.2914733886719, "r": 547.22955, "b": 425.1965637207031, "coord_origin": "TOPLEFT"}, "confidence": 0.9872463941574097, "cells": [{"id": 29, "text": "The QIBM_DB_DDMDRDA function usage ID restricts access to the DDM and DRDA ", "bbox": {"l": 136.8, "t": 367.60873, "r": 516.65253, "b": 376.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "application server (QRWTSRVR). This function usage ID provides an easy alternative (rather ", "bbox": {"l": 136.8, "t": 379.60855, "r": 547.22955, "b": 388.82153, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "than writing an exit program) to control access to DDM and DRDA from the server side. The ", "bbox": {"l": 136.79999, "t": 391.60837, "r": 544.2276, "b": 400.82134999999994, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "function usage IDs ship with the default authority of *ALLOWED. The security officer can ", "bbox": {"l": 136.79999, "t": 403.60818000000006, "r": 529.2121, "b": 412.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "easily deny access to specific users or groups.", "bbox": {"l": 136.79999, "t": 415.608, "r": 342.43817, "b": 424.82098, "coord_origin": "TOPLEFT"}}]}, "text": "The QIBM_DB_DDMDRDA function usage ID restricts access to the DDM and DRDA application server (QRWTSRVR). This function usage ID provides an easy alternative (rather than writing an exit program) to control access to DDM and DRDA from the server side. The function usage IDs ship with the default authority of *ALLOWED. The security officer can easily deny access to specific users or groups."}, {"label": "text", "id": 13, "page_no": 23, "cluster": {"id": 13, "label": "text", "bbox": {"l": 135.7061767578125, "t": 436.642578125, "r": 534.94904, "b": 458.91448974609375, "coord_origin": "TOPLEFT"}, "confidence": 0.97740238904953, "cells": [{"id": 34, "text": "This is an alternative to a User Exit Program approach. No coding is required, it is easy to ", "bbox": {"l": 136.79999, "t": 437.62756, "r": 534.94904, "b": 446.84055, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "change, and it is auditable.", "bbox": {"l": 136.79999, "t": 449.62738, "r": 255.25826, "b": 458.84036, "coord_origin": "TOPLEFT"}}]}, "text": "This is an alternative to a User Exit Program approach. No coding is required, it is easy to change, and it is auditable."}, {"label": "section_header", "id": 14, "page_no": 23, "cluster": {"id": 14, "label": "section_header", "bbox": {"l": 63.88609313964844, "t": 478.24237060546875, "r": 413.2720031738281, "b": 491.4810485839844, "coord_origin": "TOPLEFT"}, "confidence": 0.9616555571556091, "cells": [{"id": 36, "text": "2.1.2", "bbox": {"l": 64.800003, "t": 479.45474, "r": 93.831696, "b": 491.44272, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Toolbox application server access: QIBM_DB_ZDA", "bbox": {"l": 97.46067, "t": 479.45474, "r": 413.01059, "b": 491.44272, "coord_origin": "TOPLEFT"}}]}, "text": "2.1.2 Toolbox application server access: QIBM_DB_ZDA"}, {"label": "text", "id": 15, "page_no": 23, "cluster": {"id": 15, "label": "text", "bbox": {"l": 135.62423706054688, "t": 504.5226135253906, "r": 543.15112, "b": 562.88058, "coord_origin": "TOPLEFT"}, "confidence": 0.985893726348877, "cells": [{"id": 38, "text": "The QIBM_DB_ZDA function usage ID restricts access to the optimized server that handles ", "bbox": {"l": 136.8, "t": 505.60861, "r": 543.15112, "b": 514.82159, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "DB2 requests from clients (QZDASOINIT and QZDASSINIT). Server access is used by the ", "bbox": {"l": 136.8, "t": 517.66818, "r": 539.04858, "b": 526.88116, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ODBC, OLE DB, and .NET providers that ship with IBM i Access for Windows and JDBC ", "bbox": {"l": 136.80005, "t": 529.66797, "r": 529.04962, "b": 538.88098, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Toolbox, Run SQL scripts, and other parts of System i Navigator and Navigator for i Web ", "bbox": {"l": 136.80005, "t": 541.66779, "r": 529.66431, "b": 550.88078, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "console.", "bbox": {"l": 136.80005, "t": 553.66759, "r": 173.81541, "b": 562.88058, "coord_origin": "TOPLEFT"}}]}, "text": "The QIBM_DB_ZDA function usage ID restricts access to the optimized server that handles DB2 requests from clients (QZDASOINIT and QZDASSINIT). Server access is used by the ODBC, OLE DB, and .NET providers that ship with IBM i Access for Windows and JDBC Toolbox, Run SQL scripts, and other parts of System i Navigator and Navigator for i Web console."}, {"label": "text", "id": 16, "page_no": 23, "cluster": {"id": 16, "label": "text", "bbox": {"l": 135.72520446777344, "t": 574.528564453125, "r": 546.20782, "b": 621.1437377929688, "coord_origin": "TOPLEFT"}, "confidence": 0.9876169562339783, "cells": [{"id": 43, "text": "This function usage ID provides an easy alternative (rather than writing an exit program) to ", "bbox": {"l": 136.80005, "t": 575.6274, "r": 538.42694, "b": 584.8403900000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "control access to these functions from the server side. The function usage IDs ship with the ", "bbox": {"l": 136.80005, "t": 587.6272, "r": 542.29028, "b": 596.84019, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "default authority of *ALLOWED. The security officer can easily deny access to specific users ", "bbox": {"l": 136.80005, "t": 599.627, "r": 546.20782, "b": 608.84, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "or groups.", "bbox": {"l": 136.80005, "t": 611.6268, "r": 181.49457, "b": 620.8398, "coord_origin": "TOPLEFT"}}]}, "text": "This function usage ID provides an easy alternative (rather than writing an exit program) to control access to these functions from the server side. The function usage IDs ship with the default authority of *ALLOWED. The security officer can easily deny access to specific users or groups."}, {"label": "text", "id": 17, "page_no": 23, "cluster": {"id": 17, "label": "text", "bbox": {"l": 135.83445739746094, "t": 632.4659423828125, "r": 534.9491, "b": 654.96728515625, "coord_origin": "TOPLEFT"}, "confidence": 0.979432225227356, "cells": [{"id": 47, "text": "This is an alternative to a User Exit Program approach. No coding is required, it is easy to ", "bbox": {"l": 136.80005, "t": 633.64636, "r": 534.9491, "b": 642.85936, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "change, and it is auditable.", "bbox": {"l": 136.80005, "t": 645.64616, "r": 255.25832000000003, "b": 654.85916, "coord_origin": "TOPLEFT"}}]}, "text": "This is an alternative to a User Exit Program approach. No coding is required, it is easy to change, and it is auditable."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 23, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.24457550048828, "t": 754.206787109375, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8828381299972534, "cells": [{"id": 0, "text": "8 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "8"}, {"label": "page_footer", "id": 1, "page_no": 23, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 87.8071517944336, "t": 754.697998046875, "r": 328.72537, "b": 763.9702758789062, "coord_origin": "TOPLEFT"}, "confidence": 0.9468024373054504, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 87.840302, "t": 755.538002, "r": 328.72537, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 24, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 2. Roles and separation of duties ", "bbox": {"l": 360.89999, "t": 755.538002, "r": 529.1568, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "9", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "2.1.3", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 93.963196, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Database Administrator function: QIBM_DB_SQLADM", "bbox": {"l": 97.608582, "t": 71.33471999999995, "r": 433.47052, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "The Database Administrator function (QIBM_DB_SQLADM) is needed whenever a user is ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 536.12036, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "analyzing and viewing SQL performance data. Some of the more common database ", "bbox": {"l": 136.79999, "t": 109.48852999999997, "r": 511.064, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "administrator functions include displaying statements from the SQL Plan Cache, analyzing ", "bbox": {"l": 136.79999, "t": 121.48834000000011, "r": 537.42419, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "SQL Performance Monitors and SQL Plan Cache Snapshots, and displaying the SQL details ", "bbox": {"l": 136.79999, "t": 133.48816, "r": 547.01843, "b": 142.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "of a job other than your own.", "bbox": {"l": 136.79999, "t": 145.48798, "r": 263.15955, "b": 154.70099000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "The Database Administrator function provides an alternative to granting *JOBCTL, but simply ", "bbox": {"l": 136.79999, "t": 167.50757, "r": 547.32452, "b": 176.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "having the Database Administrator authorization does not carry with it all the needed object ", "bbox": {"l": 136.79999, "t": 179.50739, "r": 542.60645, "b": 188.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "authorities for every administration task. The default behavior is to deny authorization.", "bbox": {"l": 136.79999, "t": 191.5072, "r": 514.72595, "b": 200.72020999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "To perform database administrator tasks that are not related to performance analysis, you ", "bbox": {"l": 136.79999, "t": 213.52679, "r": 534.5368, "b": 222.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "must refer to the details of the task to determine its specific authorization requirements. For ", "bbox": {"l": 136.79999, "t": 225.52661, "r": 541.29852, "b": 234.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "example, to allow a database administrator to reorganize a table, the DBA must have ", "bbox": {"l": 136.79999, "t": 237.52643, "r": 513.49414, "b": 246.73943999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "additional object authorities to the table that are not covered by QIBM_DB_SQLADM.", "bbox": {"l": 136.79999, "t": 249.52625, "r": 512.87775, "b": 258.73925999999994, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Granting QIBM_DB_SQLADM function usage", "bbox": {"l": 136.8, "t": 275.36401, "r": 392.7084, "b": 286.46402, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Only the security administrator (*SECADM) is allowed to change the list of users that can ", "bbox": {"l": 136.8, "t": 290.50872999999996, "r": 532.06573, "b": 299.72171, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "perform Database Administration functions.", "bbox": {"l": 136.8, "t": 302.50854, "r": 328.11267, "b": 311.72153, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "2.1.4", "bbox": {"l": 64.800003, "t": 332.33475, "r": 93.95005, "b": 344.32272, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Database Information function: QIBM_DB_SYSMON", "bbox": {"l": 97.593788, "t": 332.33475, "r": 419.47638, "b": 344.32272, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "The Database Information function (QIBM_DB_SYSMON) provides much less authority than ", "bbox": {"l": 136.8, "t": 358.48874, "r": 547.19281, "b": 367.70172, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Database Administrator function. Its primary use allows a user to examine high-level ", "bbox": {"l": 136.8, "t": 370.48856, "r": 510.57599000000005, "b": 379.70154, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "database properties.", "bbox": {"l": 136.8, "t": 382.48837000000003, "r": 228.09435000000002, "b": 391.70135, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "For example, a user that does not have *JOBCTL or QIBM_DB_SQLADM can still view the ", "bbox": {"l": 136.8, "t": 404.50793, "r": 539.83136, "b": 413.72092, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "SQL Plan Cache properties if granted authority to QIBM_DB_SYSMON. Without granting this ", "bbox": {"l": 136.8, "t": 416.50775, "r": 547.29944, "b": 425.72073, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "authority, the default behavior is to deny authorization.", "bbox": {"l": 136.8, "t": 428.50757, "r": 375.51733, "b": 437.72055, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Granting QIBM_DB_SYSMON function usage", "bbox": {"l": 136.8, "t": 454.40398999999996, "r": 392.7384, "b": 465.504, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Only the security administrator (*SECADM) is allowed to change the list of users that can ", "bbox": {"l": 136.8, "t": 469.48874, "r": 532.06573, "b": 478.70172, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "perform Database Information functions.", "bbox": {"l": 136.8, "t": 481.54831, "r": 314.88379, "b": 490.76129, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "2.1.5", "bbox": {"l": 64.800003, "t": 511.37463, "r": 93.974159, "b": 523.36261, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Security Administrator function: QIBM_DB_SECADM", "bbox": {"l": 97.620941, "t": 511.37463, "r": 427.05014, "b": 523.36261, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "The Security Administrator function (QIBM_DB_SECADM) grants authorities, revokes ", "bbox": {"l": 136.8, "t": 537.52863, "r": 516.96027, "b": 546.74162, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "authorities, changes ownership, or changes the primary group without giving access to the ", "bbox": {"l": 136.8, "t": 549.52843, "r": 538.33221, "b": 558.7414200000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "object or, in the case of a database table, to the data that is in the table or allowing other ", "bbox": {"l": 136.8, "t": 561.52823, "r": 528.31073, "b": 570.74123, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "operations on the table. ", "bbox": {"l": 136.8, "t": 573.52803, "r": 243.62096, "b": 582.74103, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Only those users with the QIBM_DB_SECADM function can administer and manage RCAC ", "bbox": {"l": 136.8, "t": 595.54759, "r": 542.62207, "b": 604.76059, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "rules. RCAC can be used to prevent even users with *ALLOBJ authority from freely accessing ", "bbox": {"l": 136.8, "t": 607.54739, "r": 547.22571, "b": 616.76039, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "all the data in a protected database. These users are excluded from data access unless they ", "bbox": {"l": 136.8, "t": 619.5472, "r": 547.27551, "b": 628.76019, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "are specifically authorized by RCAC. Without granting this authority, the default behavior is to ", "bbox": {"l": 136.8, "t": 631.547, "r": 547.28961, "b": 640.75999, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "deny authorization.", "bbox": {"l": 136.8, "t": 643.5468, "r": 221.19012, "b": 652.7598, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Granting QIBM_DB_SECADM function usage", "bbox": {"l": 136.8, "t": 669.3839, "r": 392.72162, "b": 680.4839, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Only QSECOFR or a user with *SECADM special authority can grant the ", "bbox": {"l": 136.8, "t": 684.52872, "r": 460.46808000000004, "b": 693.741722, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "QIBM_DB_SECADM function usage to a user or group.", "bbox": {"l": 136.8, "t": 696.528526, "r": 381.91754, "b": 705.741531, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 360.4371643066406, "t": 754.883544921875, "r": 529.1568, "b": 764.1151123046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9521506428718567, "cells": [{"id": 0, "text": "Chapter 2. Roles and separation of duties ", "bbox": {"l": 360.89999, "t": 755.538002, "r": 529.1568, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 540.8857421875, "t": 754.3031616210938, "r": 547.2386474609375, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8864408731460571, "cells": [{"id": 1, "text": "9", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.0216293334961, "t": 70.4687728881836, "r": 433.47052, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9597232341766357, "cells": [{"id": 2, "text": "2.1.3", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 93.963196, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Database Administrator function: QIBM_DB_SQLADM", "bbox": {"l": 97.608582, "t": 71.33471999999995, "r": 433.47052, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.77142333984375, "t": 96.74668884277344, "r": 547.01843, "b": 155.3083038330078, "coord_origin": "TOPLEFT"}, "confidence": 0.9876309037208557, "cells": [{"id": 4, "text": "The Database Administrator function (QIBM_DB_SQLADM) is needed whenever a user is ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 536.12036, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "analyzing and viewing SQL performance data. Some of the more common database ", "bbox": {"l": 136.79999, "t": 109.48852999999997, "r": 511.064, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "administrator functions include displaying statements from the SQL Plan Cache, analyzing ", "bbox": {"l": 136.79999, "t": 121.48834000000011, "r": 537.42419, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "SQL Performance Monitors and SQL Plan Cache Snapshots, and displaying the SQL details ", "bbox": {"l": 136.79999, "t": 133.48816, "r": 547.01843, "b": 142.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "of a job other than your own.", "bbox": {"l": 136.79999, "t": 145.48798, "r": 263.15955, "b": 154.70099000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.78330993652344, "t": 166.6936798095703, "r": 547.32452, "b": 200.90953063964844, "coord_origin": "TOPLEFT"}, "confidence": 0.9852434396743774, "cells": [{"id": 9, "text": "The Database Administrator function provides an alternative to granting *JOBCTL, but simply ", "bbox": {"l": 136.79999, "t": 167.50757, "r": 547.32452, "b": 176.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "having the Database Administrator authorization does not carry with it all the needed object ", "bbox": {"l": 136.79999, "t": 179.50739, "r": 542.60645, "b": 188.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "authorities for every administration task. The default behavior is to deny authorization.", "bbox": {"l": 136.79999, "t": 191.5072, "r": 514.72595, "b": 200.72020999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.86964416503906, "t": 212.85244750976562, "r": 541.29852, "b": 259.014404296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9871625304222107, "cells": [{"id": 12, "text": "To perform database administrator tasks that are not related to performance analysis, you ", "bbox": {"l": 136.79999, "t": 213.52679, "r": 534.5368, "b": 222.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "must refer to the details of the task to determine its specific authorization requirements. For ", "bbox": {"l": 136.79999, "t": 225.52661, "r": 541.29852, "b": 234.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "example, to allow a database administrator to reorganize a table, the DBA must have ", "bbox": {"l": 136.79999, "t": 237.52643, "r": 513.49414, "b": 246.73943999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "additional object authorities to the table that are not covered by QIBM_DB_SQLADM.", "bbox": {"l": 136.79999, "t": 249.52625, "r": 512.87775, "b": 258.73925999999994, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "section_header", "bbox": {"l": 136.13877868652344, "t": 274.4320068359375, "r": 392.7084, "b": 286.46402, "coord_origin": "TOPLEFT"}, "confidence": 0.9447333812713623, "cells": [{"id": 16, "text": "Granting QIBM_DB_SQLADM function usage", "bbox": {"l": 136.8, "t": 275.36401, "r": 392.7084, "b": 286.46402, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 136.1097412109375, "t": 289.3403625488281, "r": 532.06573, "b": 311.72153, "coord_origin": "TOPLEFT"}, "confidence": 0.9686275124549866, "cells": [{"id": 17, "text": "Only the security administrator (*SECADM) is allowed to change the list of users that can ", "bbox": {"l": 136.8, "t": 290.50872999999996, "r": 532.06573, "b": 299.72171, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "perform Database Administration functions.", "bbox": {"l": 136.8, "t": 302.50854, "r": 328.11267, "b": 311.72153, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "section_header", "bbox": {"l": 64.01083374023438, "t": 331.09979248046875, "r": 419.47638, "b": 344.32272, "coord_origin": "TOPLEFT"}, "confidence": 0.9618946313858032, "cells": [{"id": 19, "text": "2.1.4", "bbox": {"l": 64.800003, "t": 332.33475, "r": 93.95005, "b": 344.32272, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Database Information function: QIBM_DB_SYSMON", "bbox": {"l": 97.593788, "t": 332.33475, "r": 419.47638, "b": 344.32272, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 135.8494873046875, "t": 357.3560485839844, "r": 547.19281, "b": 391.70135, "coord_origin": "TOPLEFT"}, "confidence": 0.9852011203765869, "cells": [{"id": 21, "text": "The Database Information function (QIBM_DB_SYSMON) provides much less authority than ", "bbox": {"l": 136.8, "t": 358.48874, "r": 547.19281, "b": 367.70172, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Database Administrator function. Its primary use allows a user to examine high-level ", "bbox": {"l": 136.8, "t": 370.48856, "r": 510.57599000000005, "b": 379.70154, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "database properties.", "bbox": {"l": 136.8, "t": 382.48837000000003, "r": 228.09435000000002, "b": 391.70135, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 136.19979858398438, "t": 403.33209228515625, "r": 547.29944, "b": 437.72055, "coord_origin": "TOPLEFT"}, "confidence": 0.9853191375732422, "cells": [{"id": 24, "text": "For example, a user that does not have *JOBCTL or QIBM_DB_SQLADM can still view the ", "bbox": {"l": 136.8, "t": 404.50793, "r": 539.83136, "b": 413.72092, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "SQL Plan Cache properties if granted authority to QIBM_DB_SYSMON. Without granting this ", "bbox": {"l": 136.8, "t": 416.50775, "r": 547.29944, "b": 425.72073, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "authority, the default behavior is to deny authorization.", "bbox": {"l": 136.8, "t": 428.50757, "r": 375.51733, "b": 437.72055, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "section_header", "bbox": {"l": 136.31793212890625, "t": 453.60760498046875, "r": 392.7384, "b": 465.75146484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9519172310829163, "cells": [{"id": 27, "text": "Granting QIBM_DB_SYSMON function usage", "bbox": {"l": 136.8, "t": 454.40398999999996, "r": 392.7384, "b": 465.504, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 136.06344604492188, "t": 468.69525146484375, "r": 532.06573, "b": 490.76129, "coord_origin": "TOPLEFT"}, "confidence": 0.9695555567741394, "cells": [{"id": 28, "text": "Only the security administrator (*SECADM) is allowed to change the list of users that can ", "bbox": {"l": 136.8, "t": 469.48874, "r": 532.06573, "b": 478.70172, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "perform Database Information functions.", "bbox": {"l": 136.8, "t": 481.54831, "r": 314.88379, "b": 490.76129, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "section_header", "bbox": {"l": 64.14019775390625, "t": 510.3857727050781, "r": 427.05014, "b": 523.36261, "coord_origin": "TOPLEFT"}, "confidence": 0.960561215877533, "cells": [{"id": 30, "text": "2.1.5", "bbox": {"l": 64.800003, "t": 511.37463, "r": 93.974159, "b": 523.36261, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Security Administrator function: QIBM_DB_SECADM", "bbox": {"l": 97.620941, "t": 511.37463, "r": 427.05014, "b": 523.36261, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "text", "bbox": {"l": 135.73634338378906, "t": 536.6364135742188, "r": 538.33221, "b": 582.74103, "coord_origin": "TOPLEFT"}, "confidence": 0.9864837527275085, "cells": [{"id": 32, "text": "The Security Administrator function (QIBM_DB_SECADM) grants authorities, revokes ", "bbox": {"l": 136.8, "t": 537.52863, "r": 516.96027, "b": 546.74162, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "authorities, changes ownership, or changes the primary group without giving access to the ", "bbox": {"l": 136.8, "t": 549.52843, "r": 538.33221, "b": 558.7414200000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "object or, in the case of a database table, to the data that is in the table or allowing other ", "bbox": {"l": 136.8, "t": 561.52823, "r": 528.31073, "b": 570.74123, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "operations on the table. ", "bbox": {"l": 136.8, "t": 573.52803, "r": 243.62096, "b": 582.74103, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "text", "bbox": {"l": 135.88818359375, "t": 594.3782348632812, "r": 547.28961, "b": 652.959716796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9881628155708313, "cells": [{"id": 36, "text": "Only those users with the QIBM_DB_SECADM function can administer and manage RCAC ", "bbox": {"l": 136.8, "t": 595.54759, "r": 542.62207, "b": 604.76059, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "rules. RCAC can be used to prevent even users with *ALLOBJ authority from freely accessing ", "bbox": {"l": 136.8, "t": 607.54739, "r": 547.22571, "b": 616.76039, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "all the data in a protected database. These users are excluded from data access unless they ", "bbox": {"l": 136.8, "t": 619.5472, "r": 547.27551, "b": 628.76019, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "are specifically authorized by RCAC. Without granting this authority, the default behavior is to ", "bbox": {"l": 136.8, "t": 631.547, "r": 547.28961, "b": 640.75999, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "deny authorization.", "bbox": {"l": 136.8, "t": 643.5468, "r": 221.19012, "b": 652.7598, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "section_header", "bbox": {"l": 136.17408752441406, "t": 668.4557495117188, "r": 392.72162, "b": 680.6693725585938, "coord_origin": "TOPLEFT"}, "confidence": 0.9459793567657471, "cells": [{"id": 41, "text": "Granting QIBM_DB_SECADM function usage", "bbox": {"l": 136.8, "t": 669.3839, "r": 392.72162, "b": 680.4839, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "text", "bbox": {"l": 136.1047821044922, "t": 683.893798828125, "r": 460.46808000000004, "b": 706.3756103515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9628692269325256, "cells": [{"id": 42, "text": "Only QSECOFR or a user with *SECADM special authority can grant the ", "bbox": {"l": 136.8, "t": 684.52872, "r": 460.46808000000004, "b": 693.741722, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "QIBM_DB_SECADM function usage to a user or group.", "bbox": {"l": 136.8, "t": 696.528526, "r": 381.91754, "b": 705.741531, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 24, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 360.4371643066406, "t": 754.883544921875, "r": 529.1568, "b": 764.1151123046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9521506428718567, "cells": [{"id": 0, "text": "Chapter 2. Roles and separation of duties ", "bbox": {"l": 360.89999, "t": 755.538002, "r": 529.1568, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 2. Roles and separation of duties"}, {"label": "page_footer", "id": 1, "page_no": 24, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 540.8857421875, "t": 754.3031616210938, "r": 547.2386474609375, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8864408731460571, "cells": [{"id": 1, "text": "9", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "9"}, {"label": "section_header", "id": 2, "page_no": 24, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.0216293334961, "t": 70.4687728881836, "r": 433.47052, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9597232341766357, "cells": [{"id": 2, "text": "2.1.3", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 93.963196, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Database Administrator function: QIBM_DB_SQLADM", "bbox": {"l": 97.608582, "t": 71.33471999999995, "r": 433.47052, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "2.1.3 Database Administrator function: QIBM_DB_SQLADM"}, {"label": "text", "id": 3, "page_no": 24, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.77142333984375, "t": 96.74668884277344, "r": 547.01843, "b": 155.3083038330078, "coord_origin": "TOPLEFT"}, "confidence": 0.9876309037208557, "cells": [{"id": 4, "text": "The Database Administrator function (QIBM_DB_SQLADM) is needed whenever a user is ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 536.12036, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "analyzing and viewing SQL performance data. Some of the more common database ", "bbox": {"l": 136.79999, "t": 109.48852999999997, "r": 511.064, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "administrator functions include displaying statements from the SQL Plan Cache, analyzing ", "bbox": {"l": 136.79999, "t": 121.48834000000011, "r": 537.42419, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "SQL Performance Monitors and SQL Plan Cache Snapshots, and displaying the SQL details ", "bbox": {"l": 136.79999, "t": 133.48816, "r": 547.01843, "b": 142.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "of a job other than your own.", "bbox": {"l": 136.79999, "t": 145.48798, "r": 263.15955, "b": 154.70099000000005, "coord_origin": "TOPLEFT"}}]}, "text": "The Database Administrator function (QIBM_DB_SQLADM) is needed whenever a user is analyzing and viewing SQL performance data. Some of the more common database administrator functions include displaying statements from the SQL Plan Cache, analyzing SQL Performance Monitors and SQL Plan Cache Snapshots, and displaying the SQL details of a job other than your own."}, {"label": "text", "id": 4, "page_no": 24, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.78330993652344, "t": 166.6936798095703, "r": 547.32452, "b": 200.90953063964844, "coord_origin": "TOPLEFT"}, "confidence": 0.9852434396743774, "cells": [{"id": 9, "text": "The Database Administrator function provides an alternative to granting *JOBCTL, but simply ", "bbox": {"l": 136.79999, "t": 167.50757, "r": 547.32452, "b": 176.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "having the Database Administrator authorization does not carry with it all the needed object ", "bbox": {"l": 136.79999, "t": 179.50739, "r": 542.60645, "b": 188.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "authorities for every administration task. The default behavior is to deny authorization.", "bbox": {"l": 136.79999, "t": 191.5072, "r": 514.72595, "b": 200.72020999999995, "coord_origin": "TOPLEFT"}}]}, "text": "The Database Administrator function provides an alternative to granting *JOBCTL, but simply having the Database Administrator authorization does not carry with it all the needed object authorities for every administration task. The default behavior is to deny authorization."}, {"label": "text", "id": 5, "page_no": 24, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.86964416503906, "t": 212.85244750976562, "r": 541.29852, "b": 259.014404296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9871625304222107, "cells": [{"id": 12, "text": "To perform database administrator tasks that are not related to performance analysis, you ", "bbox": {"l": 136.79999, "t": 213.52679, "r": 534.5368, "b": 222.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "must refer to the details of the task to determine its specific authorization requirements. For ", "bbox": {"l": 136.79999, "t": 225.52661, "r": 541.29852, "b": 234.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "example, to allow a database administrator to reorganize a table, the DBA must have ", "bbox": {"l": 136.79999, "t": 237.52643, "r": 513.49414, "b": 246.73943999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "additional object authorities to the table that are not covered by QIBM_DB_SQLADM.", "bbox": {"l": 136.79999, "t": 249.52625, "r": 512.87775, "b": 258.73925999999994, "coord_origin": "TOPLEFT"}}]}, "text": "To perform database administrator tasks that are not related to performance analysis, you must refer to the details of the task to determine its specific authorization requirements. For example, to allow a database administrator to reorganize a table, the DBA must have additional object authorities to the table that are not covered by QIBM_DB_SQLADM."}, {"label": "section_header", "id": 6, "page_no": 24, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 136.13877868652344, "t": 274.4320068359375, "r": 392.7084, "b": 286.46402, "coord_origin": "TOPLEFT"}, "confidence": 0.9447333812713623, "cells": [{"id": 16, "text": "Granting QIBM_DB_SQLADM function usage", "bbox": {"l": 136.8, "t": 275.36401, "r": 392.7084, "b": 286.46402, "coord_origin": "TOPLEFT"}}]}, "text": "Granting QIBM_DB_SQLADM function usage"}, {"label": "text", "id": 7, "page_no": 24, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.1097412109375, "t": 289.3403625488281, "r": 532.06573, "b": 311.72153, "coord_origin": "TOPLEFT"}, "confidence": 0.9686275124549866, "cells": [{"id": 17, "text": "Only the security administrator (*SECADM) is allowed to change the list of users that can ", "bbox": {"l": 136.8, "t": 290.50872999999996, "r": 532.06573, "b": 299.72171, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "perform Database Administration functions.", "bbox": {"l": 136.8, "t": 302.50854, "r": 328.11267, "b": 311.72153, "coord_origin": "TOPLEFT"}}]}, "text": "Only the security administrator (*SECADM) is allowed to change the list of users that can perform Database Administration functions."}, {"label": "section_header", "id": 8, "page_no": 24, "cluster": {"id": 8, "label": "section_header", "bbox": {"l": 64.01083374023438, "t": 331.09979248046875, "r": 419.47638, "b": 344.32272, "coord_origin": "TOPLEFT"}, "confidence": 0.9618946313858032, "cells": [{"id": 19, "text": "2.1.4", "bbox": {"l": 64.800003, "t": 332.33475, "r": 93.95005, "b": 344.32272, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Database Information function: QIBM_DB_SYSMON", "bbox": {"l": 97.593788, "t": 332.33475, "r": 419.47638, "b": 344.32272, "coord_origin": "TOPLEFT"}}]}, "text": "2.1.4 Database Information function: QIBM_DB_SYSMON"}, {"label": "text", "id": 9, "page_no": 24, "cluster": {"id": 9, "label": "text", "bbox": {"l": 135.8494873046875, "t": 357.3560485839844, "r": 547.19281, "b": 391.70135, "coord_origin": "TOPLEFT"}, "confidence": 0.9852011203765869, "cells": [{"id": 21, "text": "The Database Information function (QIBM_DB_SYSMON) provides much less authority than ", "bbox": {"l": 136.8, "t": 358.48874, "r": 547.19281, "b": 367.70172, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Database Administrator function. Its primary use allows a user to examine high-level ", "bbox": {"l": 136.8, "t": 370.48856, "r": 510.57599000000005, "b": 379.70154, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "database properties.", "bbox": {"l": 136.8, "t": 382.48837000000003, "r": 228.09435000000002, "b": 391.70135, "coord_origin": "TOPLEFT"}}]}, "text": "The Database Information function (QIBM_DB_SYSMON) provides much less authority than Database Administrator function. Its primary use allows a user to examine high-level database properties."}, {"label": "text", "id": 10, "page_no": 24, "cluster": {"id": 10, "label": "text", "bbox": {"l": 136.19979858398438, "t": 403.33209228515625, "r": 547.29944, "b": 437.72055, "coord_origin": "TOPLEFT"}, "confidence": 0.9853191375732422, "cells": [{"id": 24, "text": "For example, a user that does not have *JOBCTL or QIBM_DB_SQLADM can still view the ", "bbox": {"l": 136.8, "t": 404.50793, "r": 539.83136, "b": 413.72092, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "SQL Plan Cache properties if granted authority to QIBM_DB_SYSMON. Without granting this ", "bbox": {"l": 136.8, "t": 416.50775, "r": 547.29944, "b": 425.72073, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "authority, the default behavior is to deny authorization.", "bbox": {"l": 136.8, "t": 428.50757, "r": 375.51733, "b": 437.72055, "coord_origin": "TOPLEFT"}}]}, "text": "For example, a user that does not have *JOBCTL or QIBM_DB_SQLADM can still view the SQL Plan Cache properties if granted authority to QIBM_DB_SYSMON. Without granting this authority, the default behavior is to deny authorization."}, {"label": "section_header", "id": 11, "page_no": 24, "cluster": {"id": 11, "label": "section_header", "bbox": {"l": 136.31793212890625, "t": 453.60760498046875, "r": 392.7384, "b": 465.75146484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9519172310829163, "cells": [{"id": 27, "text": "Granting QIBM_DB_SYSMON function usage", "bbox": {"l": 136.8, "t": 454.40398999999996, "r": 392.7384, "b": 465.504, "coord_origin": "TOPLEFT"}}]}, "text": "Granting QIBM_DB_SYSMON function usage"}, {"label": "text", "id": 12, "page_no": 24, "cluster": {"id": 12, "label": "text", "bbox": {"l": 136.06344604492188, "t": 468.69525146484375, "r": 532.06573, "b": 490.76129, "coord_origin": "TOPLEFT"}, "confidence": 0.9695555567741394, "cells": [{"id": 28, "text": "Only the security administrator (*SECADM) is allowed to change the list of users that can ", "bbox": {"l": 136.8, "t": 469.48874, "r": 532.06573, "b": 478.70172, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "perform Database Information functions.", "bbox": {"l": 136.8, "t": 481.54831, "r": 314.88379, "b": 490.76129, "coord_origin": "TOPLEFT"}}]}, "text": "Only the security administrator (*SECADM) is allowed to change the list of users that can perform Database Information functions."}, {"label": "section_header", "id": 13, "page_no": 24, "cluster": {"id": 13, "label": "section_header", "bbox": {"l": 64.14019775390625, "t": 510.3857727050781, "r": 427.05014, "b": 523.36261, "coord_origin": "TOPLEFT"}, "confidence": 0.960561215877533, "cells": [{"id": 30, "text": "2.1.5", "bbox": {"l": 64.800003, "t": 511.37463, "r": 93.974159, "b": 523.36261, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Security Administrator function: QIBM_DB_SECADM", "bbox": {"l": 97.620941, "t": 511.37463, "r": 427.05014, "b": 523.36261, "coord_origin": "TOPLEFT"}}]}, "text": "2.1.5 Security Administrator function: QIBM_DB_SECADM"}, {"label": "text", "id": 14, "page_no": 24, "cluster": {"id": 14, "label": "text", "bbox": {"l": 135.73634338378906, "t": 536.6364135742188, "r": 538.33221, "b": 582.74103, "coord_origin": "TOPLEFT"}, "confidence": 0.9864837527275085, "cells": [{"id": 32, "text": "The Security Administrator function (QIBM_DB_SECADM) grants authorities, revokes ", "bbox": {"l": 136.8, "t": 537.52863, "r": 516.96027, "b": 546.74162, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "authorities, changes ownership, or changes the primary group without giving access to the ", "bbox": {"l": 136.8, "t": 549.52843, "r": 538.33221, "b": 558.7414200000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "object or, in the case of a database table, to the data that is in the table or allowing other ", "bbox": {"l": 136.8, "t": 561.52823, "r": 528.31073, "b": 570.74123, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "operations on the table. ", "bbox": {"l": 136.8, "t": 573.52803, "r": 243.62096, "b": 582.74103, "coord_origin": "TOPLEFT"}}]}, "text": "The Security Administrator function (QIBM_DB_SECADM) grants authorities, revokes authorities, changes ownership, or changes the primary group without giving access to the object or, in the case of a database table, to the data that is in the table or allowing other operations on the table."}, {"label": "text", "id": 15, "page_no": 24, "cluster": {"id": 15, "label": "text", "bbox": {"l": 135.88818359375, "t": 594.3782348632812, "r": 547.28961, "b": 652.959716796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9881628155708313, "cells": [{"id": 36, "text": "Only those users with the QIBM_DB_SECADM function can administer and manage RCAC ", "bbox": {"l": 136.8, "t": 595.54759, "r": 542.62207, "b": 604.76059, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "rules. RCAC can be used to prevent even users with *ALLOBJ authority from freely accessing ", "bbox": {"l": 136.8, "t": 607.54739, "r": 547.22571, "b": 616.76039, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "all the data in a protected database. These users are excluded from data access unless they ", "bbox": {"l": 136.8, "t": 619.5472, "r": 547.27551, "b": 628.76019, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "are specifically authorized by RCAC. Without granting this authority, the default behavior is to ", "bbox": {"l": 136.8, "t": 631.547, "r": 547.28961, "b": 640.75999, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "deny authorization.", "bbox": {"l": 136.8, "t": 643.5468, "r": 221.19012, "b": 652.7598, "coord_origin": "TOPLEFT"}}]}, "text": "Only those users with the QIBM_DB_SECADM function can administer and manage RCAC rules. RCAC can be used to prevent even users with *ALLOBJ authority from freely accessing all the data in a protected database. These users are excluded from data access unless they are specifically authorized by RCAC. Without granting this authority, the default behavior is to deny authorization."}, {"label": "section_header", "id": 16, "page_no": 24, "cluster": {"id": 16, "label": "section_header", "bbox": {"l": 136.17408752441406, "t": 668.4557495117188, "r": 392.72162, "b": 680.6693725585938, "coord_origin": "TOPLEFT"}, "confidence": 0.9459793567657471, "cells": [{"id": 41, "text": "Granting QIBM_DB_SECADM function usage", "bbox": {"l": 136.8, "t": 669.3839, "r": 392.72162, "b": 680.4839, "coord_origin": "TOPLEFT"}}]}, "text": "Granting QIBM_DB_SECADM function usage"}, {"label": "text", "id": 17, "page_no": 24, "cluster": {"id": 17, "label": "text", "bbox": {"l": 136.1047821044922, "t": 683.893798828125, "r": 460.46808000000004, "b": 706.3756103515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9628692269325256, "cells": [{"id": 42, "text": "Only QSECOFR or a user with *SECADM special authority can grant the ", "bbox": {"l": 136.8, "t": 684.52872, "r": 460.46808000000004, "b": 693.741722, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "QIBM_DB_SECADM function usage to a user or group.", "bbox": {"l": 136.8, "t": 696.528526, "r": 381.91754, "b": 705.741531, "coord_origin": "TOPLEFT"}}]}, "text": "Only QSECOFR or a user with *SECADM special authority can grant the QIBM_DB_SECADM function usage to a user or group."}], "body": [{"label": "section_header", "id": 2, "page_no": 24, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.0216293334961, "t": 70.4687728881836, "r": 433.47052, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9597232341766357, "cells": [{"id": 2, "text": "2.1.3", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 93.963196, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Database Administrator function: QIBM_DB_SQLADM", "bbox": {"l": 97.608582, "t": 71.33471999999995, "r": 433.47052, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "2.1.3 Database Administrator function: QIBM_DB_SQLADM"}, {"label": "text", "id": 3, "page_no": 24, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.77142333984375, "t": 96.74668884277344, "r": 547.01843, "b": 155.3083038330078, "coord_origin": "TOPLEFT"}, "confidence": 0.9876309037208557, "cells": [{"id": 4, "text": "The Database Administrator function (QIBM_DB_SQLADM) is needed whenever a user is ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 536.12036, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "analyzing and viewing SQL performance data. Some of the more common database ", "bbox": {"l": 136.79999, "t": 109.48852999999997, "r": 511.064, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "administrator functions include displaying statements from the SQL Plan Cache, analyzing ", "bbox": {"l": 136.79999, "t": 121.48834000000011, "r": 537.42419, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "SQL Performance Monitors and SQL Plan Cache Snapshots, and displaying the SQL details ", "bbox": {"l": 136.79999, "t": 133.48816, "r": 547.01843, "b": 142.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "of a job other than your own.", "bbox": {"l": 136.79999, "t": 145.48798, "r": 263.15955, "b": 154.70099000000005, "coord_origin": "TOPLEFT"}}]}, "text": "The Database Administrator function (QIBM_DB_SQLADM) is needed whenever a user is analyzing and viewing SQL performance data. Some of the more common database administrator functions include displaying statements from the SQL Plan Cache, analyzing SQL Performance Monitors and SQL Plan Cache Snapshots, and displaying the SQL details of a job other than your own."}, {"label": "text", "id": 4, "page_no": 24, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.78330993652344, "t": 166.6936798095703, "r": 547.32452, "b": 200.90953063964844, "coord_origin": "TOPLEFT"}, "confidence": 0.9852434396743774, "cells": [{"id": 9, "text": "The Database Administrator function provides an alternative to granting *JOBCTL, but simply ", "bbox": {"l": 136.79999, "t": 167.50757, "r": 547.32452, "b": 176.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "having the Database Administrator authorization does not carry with it all the needed object ", "bbox": {"l": 136.79999, "t": 179.50739, "r": 542.60645, "b": 188.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "authorities for every administration task. The default behavior is to deny authorization.", "bbox": {"l": 136.79999, "t": 191.5072, "r": 514.72595, "b": 200.72020999999995, "coord_origin": "TOPLEFT"}}]}, "text": "The Database Administrator function provides an alternative to granting *JOBCTL, but simply having the Database Administrator authorization does not carry with it all the needed object authorities for every administration task. The default behavior is to deny authorization."}, {"label": "text", "id": 5, "page_no": 24, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.86964416503906, "t": 212.85244750976562, "r": 541.29852, "b": 259.014404296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9871625304222107, "cells": [{"id": 12, "text": "To perform database administrator tasks that are not related to performance analysis, you ", "bbox": {"l": 136.79999, "t": 213.52679, "r": 534.5368, "b": 222.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "must refer to the details of the task to determine its specific authorization requirements. For ", "bbox": {"l": 136.79999, "t": 225.52661, "r": 541.29852, "b": 234.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "example, to allow a database administrator to reorganize a table, the DBA must have ", "bbox": {"l": 136.79999, "t": 237.52643, "r": 513.49414, "b": 246.73943999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "additional object authorities to the table that are not covered by QIBM_DB_SQLADM.", "bbox": {"l": 136.79999, "t": 249.52625, "r": 512.87775, "b": 258.73925999999994, "coord_origin": "TOPLEFT"}}]}, "text": "To perform database administrator tasks that are not related to performance analysis, you must refer to the details of the task to determine its specific authorization requirements. For example, to allow a database administrator to reorganize a table, the DBA must have additional object authorities to the table that are not covered by QIBM_DB_SQLADM."}, {"label": "section_header", "id": 6, "page_no": 24, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 136.13877868652344, "t": 274.4320068359375, "r": 392.7084, "b": 286.46402, "coord_origin": "TOPLEFT"}, "confidence": 0.9447333812713623, "cells": [{"id": 16, "text": "Granting QIBM_DB_SQLADM function usage", "bbox": {"l": 136.8, "t": 275.36401, "r": 392.7084, "b": 286.46402, "coord_origin": "TOPLEFT"}}]}, "text": "Granting QIBM_DB_SQLADM function usage"}, {"label": "text", "id": 7, "page_no": 24, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.1097412109375, "t": 289.3403625488281, "r": 532.06573, "b": 311.72153, "coord_origin": "TOPLEFT"}, "confidence": 0.9686275124549866, "cells": [{"id": 17, "text": "Only the security administrator (*SECADM) is allowed to change the list of users that can ", "bbox": {"l": 136.8, "t": 290.50872999999996, "r": 532.06573, "b": 299.72171, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "perform Database Administration functions.", "bbox": {"l": 136.8, "t": 302.50854, "r": 328.11267, "b": 311.72153, "coord_origin": "TOPLEFT"}}]}, "text": "Only the security administrator (*SECADM) is allowed to change the list of users that can perform Database Administration functions."}, {"label": "section_header", "id": 8, "page_no": 24, "cluster": {"id": 8, "label": "section_header", "bbox": {"l": 64.01083374023438, "t": 331.09979248046875, "r": 419.47638, "b": 344.32272, "coord_origin": "TOPLEFT"}, "confidence": 0.9618946313858032, "cells": [{"id": 19, "text": "2.1.4", "bbox": {"l": 64.800003, "t": 332.33475, "r": 93.95005, "b": 344.32272, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Database Information function: QIBM_DB_SYSMON", "bbox": {"l": 97.593788, "t": 332.33475, "r": 419.47638, "b": 344.32272, "coord_origin": "TOPLEFT"}}]}, "text": "2.1.4 Database Information function: QIBM_DB_SYSMON"}, {"label": "text", "id": 9, "page_no": 24, "cluster": {"id": 9, "label": "text", "bbox": {"l": 135.8494873046875, "t": 357.3560485839844, "r": 547.19281, "b": 391.70135, "coord_origin": "TOPLEFT"}, "confidence": 0.9852011203765869, "cells": [{"id": 21, "text": "The Database Information function (QIBM_DB_SYSMON) provides much less authority than ", "bbox": {"l": 136.8, "t": 358.48874, "r": 547.19281, "b": 367.70172, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Database Administrator function. Its primary use allows a user to examine high-level ", "bbox": {"l": 136.8, "t": 370.48856, "r": 510.57599000000005, "b": 379.70154, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "database properties.", "bbox": {"l": 136.8, "t": 382.48837000000003, "r": 228.09435000000002, "b": 391.70135, "coord_origin": "TOPLEFT"}}]}, "text": "The Database Information function (QIBM_DB_SYSMON) provides much less authority than Database Administrator function. Its primary use allows a user to examine high-level database properties."}, {"label": "text", "id": 10, "page_no": 24, "cluster": {"id": 10, "label": "text", "bbox": {"l": 136.19979858398438, "t": 403.33209228515625, "r": 547.29944, "b": 437.72055, "coord_origin": "TOPLEFT"}, "confidence": 0.9853191375732422, "cells": [{"id": 24, "text": "For example, a user that does not have *JOBCTL or QIBM_DB_SQLADM can still view the ", "bbox": {"l": 136.8, "t": 404.50793, "r": 539.83136, "b": 413.72092, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "SQL Plan Cache properties if granted authority to QIBM_DB_SYSMON. Without granting this ", "bbox": {"l": 136.8, "t": 416.50775, "r": 547.29944, "b": 425.72073, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "authority, the default behavior is to deny authorization.", "bbox": {"l": 136.8, "t": 428.50757, "r": 375.51733, "b": 437.72055, "coord_origin": "TOPLEFT"}}]}, "text": "For example, a user that does not have *JOBCTL or QIBM_DB_SQLADM can still view the SQL Plan Cache properties if granted authority to QIBM_DB_SYSMON. Without granting this authority, the default behavior is to deny authorization."}, {"label": "section_header", "id": 11, "page_no": 24, "cluster": {"id": 11, "label": "section_header", "bbox": {"l": 136.31793212890625, "t": 453.60760498046875, "r": 392.7384, "b": 465.75146484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9519172310829163, "cells": [{"id": 27, "text": "Granting QIBM_DB_SYSMON function usage", "bbox": {"l": 136.8, "t": 454.40398999999996, "r": 392.7384, "b": 465.504, "coord_origin": "TOPLEFT"}}]}, "text": "Granting QIBM_DB_SYSMON function usage"}, {"label": "text", "id": 12, "page_no": 24, "cluster": {"id": 12, "label": "text", "bbox": {"l": 136.06344604492188, "t": 468.69525146484375, "r": 532.06573, "b": 490.76129, "coord_origin": "TOPLEFT"}, "confidence": 0.9695555567741394, "cells": [{"id": 28, "text": "Only the security administrator (*SECADM) is allowed to change the list of users that can ", "bbox": {"l": 136.8, "t": 469.48874, "r": 532.06573, "b": 478.70172, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "perform Database Information functions.", "bbox": {"l": 136.8, "t": 481.54831, "r": 314.88379, "b": 490.76129, "coord_origin": "TOPLEFT"}}]}, "text": "Only the security administrator (*SECADM) is allowed to change the list of users that can perform Database Information functions."}, {"label": "section_header", "id": 13, "page_no": 24, "cluster": {"id": 13, "label": "section_header", "bbox": {"l": 64.14019775390625, "t": 510.3857727050781, "r": 427.05014, "b": 523.36261, "coord_origin": "TOPLEFT"}, "confidence": 0.960561215877533, "cells": [{"id": 30, "text": "2.1.5", "bbox": {"l": 64.800003, "t": 511.37463, "r": 93.974159, "b": 523.36261, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Security Administrator function: QIBM_DB_SECADM", "bbox": {"l": 97.620941, "t": 511.37463, "r": 427.05014, "b": 523.36261, "coord_origin": "TOPLEFT"}}]}, "text": "2.1.5 Security Administrator function: QIBM_DB_SECADM"}, {"label": "text", "id": 14, "page_no": 24, "cluster": {"id": 14, "label": "text", "bbox": {"l": 135.73634338378906, "t": 536.6364135742188, "r": 538.33221, "b": 582.74103, "coord_origin": "TOPLEFT"}, "confidence": 0.9864837527275085, "cells": [{"id": 32, "text": "The Security Administrator function (QIBM_DB_SECADM) grants authorities, revokes ", "bbox": {"l": 136.8, "t": 537.52863, "r": 516.96027, "b": 546.74162, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "authorities, changes ownership, or changes the primary group without giving access to the ", "bbox": {"l": 136.8, "t": 549.52843, "r": 538.33221, "b": 558.7414200000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "object or, in the case of a database table, to the data that is in the table or allowing other ", "bbox": {"l": 136.8, "t": 561.52823, "r": 528.31073, "b": 570.74123, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "operations on the table. ", "bbox": {"l": 136.8, "t": 573.52803, "r": 243.62096, "b": 582.74103, "coord_origin": "TOPLEFT"}}]}, "text": "The Security Administrator function (QIBM_DB_SECADM) grants authorities, revokes authorities, changes ownership, or changes the primary group without giving access to the object or, in the case of a database table, to the data that is in the table or allowing other operations on the table."}, {"label": "text", "id": 15, "page_no": 24, "cluster": {"id": 15, "label": "text", "bbox": {"l": 135.88818359375, "t": 594.3782348632812, "r": 547.28961, "b": 652.959716796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9881628155708313, "cells": [{"id": 36, "text": "Only those users with the QIBM_DB_SECADM function can administer and manage RCAC ", "bbox": {"l": 136.8, "t": 595.54759, "r": 542.62207, "b": 604.76059, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "rules. RCAC can be used to prevent even users with *ALLOBJ authority from freely accessing ", "bbox": {"l": 136.8, "t": 607.54739, "r": 547.22571, "b": 616.76039, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "all the data in a protected database. These users are excluded from data access unless they ", "bbox": {"l": 136.8, "t": 619.5472, "r": 547.27551, "b": 628.76019, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "are specifically authorized by RCAC. Without granting this authority, the default behavior is to ", "bbox": {"l": 136.8, "t": 631.547, "r": 547.28961, "b": 640.75999, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "deny authorization.", "bbox": {"l": 136.8, "t": 643.5468, "r": 221.19012, "b": 652.7598, "coord_origin": "TOPLEFT"}}]}, "text": "Only those users with the QIBM_DB_SECADM function can administer and manage RCAC rules. RCAC can be used to prevent even users with *ALLOBJ authority from freely accessing all the data in a protected database. These users are excluded from data access unless they are specifically authorized by RCAC. Without granting this authority, the default behavior is to deny authorization."}, {"label": "section_header", "id": 16, "page_no": 24, "cluster": {"id": 16, "label": "section_header", "bbox": {"l": 136.17408752441406, "t": 668.4557495117188, "r": 392.72162, "b": 680.6693725585938, "coord_origin": "TOPLEFT"}, "confidence": 0.9459793567657471, "cells": [{"id": 41, "text": "Granting QIBM_DB_SECADM function usage", "bbox": {"l": 136.8, "t": 669.3839, "r": 392.72162, "b": 680.4839, "coord_origin": "TOPLEFT"}}]}, "text": "Granting QIBM_DB_SECADM function usage"}, {"label": "text", "id": 17, "page_no": 24, "cluster": {"id": 17, "label": "text", "bbox": {"l": 136.1047821044922, "t": 683.893798828125, "r": 460.46808000000004, "b": 706.3756103515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9628692269325256, "cells": [{"id": 42, "text": "Only QSECOFR or a user with *SECADM special authority can grant the ", "bbox": {"l": 136.8, "t": 684.52872, "r": 460.46808000000004, "b": 693.741722, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "QIBM_DB_SECADM function usage to a user or group.", "bbox": {"l": 136.8, "t": 696.528526, "r": 381.91754, "b": 705.741531, "coord_origin": "TOPLEFT"}}]}, "text": "Only QSECOFR or a user with *SECADM special authority can grant the QIBM_DB_SECADM function usage to a user or group."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 24, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 360.4371643066406, "t": 754.883544921875, "r": 529.1568, "b": 764.1151123046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9521506428718567, "cells": [{"id": 0, "text": "Chapter 2. Roles and separation of duties ", "bbox": {"l": 360.89999, "t": 755.538002, "r": 529.1568, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 2. Roles and separation of duties"}, {"label": "page_footer", "id": 1, "page_no": 24, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 540.8857421875, "t": 754.3031616210938, "r": 547.2386474609375, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8864408731460571, "cells": [{"id": 1, "text": "9", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "9"}]}}, {"page_no": 25, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "10 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "2.1.6", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 94.081459, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Change Function Usage CL command", "bbox": {"l": 97.741661, "t": 71.33471999999995, "r": 335.49551, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "The following CL commands can be used to work with, display, or change function usage IDs:", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 547.28442, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 114.67767000000003, "r": 141.78, "b": 123.45245, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Work Function Usage (", "bbox": {"l": 151.20016, "t": 114.52826000000005, "r": 253.26227000000003, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "WRKFCNUSG", "bbox": {"l": 253.26028, "t": 114.67767000000003, "r": 298.1998, "b": 123.50225999999998, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": ")", "bbox": {"l": 298.20081, "t": 114.52826000000005, "r": 301.51749, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 126.67749000000003, "r": 141.78099, "b": 135.45227, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Change Function Usage (", "bbox": {"l": 151.20116, "t": 126.52808000000005, "r": 265.13354, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "CHGFCNUSG", "bbox": {"l": 265.08081, "t": 126.67749000000003, "r": 310.02032, "b": 135.50207999999998, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": ")", "bbox": {"l": 310.08109, "t": 126.52808000000005, "r": 313.39777, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "GLYPH", "bbox": {"l": 136.80098, "t": 138.67731000000003, "r": 141.78098, "b": 147.45209, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Display Function Usage (", "bbox": {"l": 151.20114, "t": 138.52788999999996, "r": 262.5639, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "DSPFCNUSG", "bbox": {"l": 262.56091, "t": 138.67731000000003, "r": 307.50043, "b": 147.50189, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ")", "bbox": {"l": 307.50043, "t": 138.52788999999996, "r": 310.81711, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "For example, the following ", "bbox": {"l": 136.79997, "t": 160.48766999999998, "r": 255.09984000000003, "b": 169.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "CHGFCNUSG", "bbox": {"l": 255.00027, "t": 160.63707999999997, "r": 299.99957, "b": 169.46167000000003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": " command shows granting authorization to user ", "bbox": {"l": 300.00055, "t": 160.48766999999998, "r": 512.53802, "b": 169.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "HBEDOYA to administer and manage RCAC rules:", "bbox": {"l": 136.80096, "t": 172.48748999999998, "r": 360.41989, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED)", "bbox": {"l": 136.80096, "t": 189.67645000000005, "r": 441.59686, "b": 198.45123, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "2.1.7", "bbox": {"l": 64.800003, "t": 219.35468000000003, "r": 93.757614, "b": 231.34271, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Verifying function usage IDs for RCAC with the FUNCTION_USAGE view", "bbox": {"l": 97.377296, "t": 219.35468000000003, "r": 544.47546, "b": 231.34271, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "The FUNCTION_USAGE view contains function usage configuration details. Table 2-1 ", "bbox": {"l": 136.8, "t": 245.50867000000005, "r": 519.51794, "b": 254.72168, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "describes the columns in the FUNCTION_USAGE view.", "bbox": {"l": 136.8, "t": 257.50847999999996, "r": 382.94443, "b": 266.7215, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Table 2-1 FUNCTION_USAGE view", "bbox": {"l": 136.8, "t": 279.55798000000004, "r": 283.96805, "b": 287.88300000000004, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "To discover who has authorization to define and manage RCAC, you can use the query that is ", "bbox": {"l": 136.8, "t": 452.50872999999996, "r": 547.2804, "b": 461.72171, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "shown in Example 2-1.", "bbox": {"l": 136.8, "t": 464.50854, "r": 237.76951999999997, "b": 473.72153, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Example 2-1 Query to determine who has authority to define and manage RCAC", "bbox": {"l": 136.8, "t": 486.55798, "r": 462.35419, "b": 494.883, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "SELECT", "bbox": {"l": 136.8, "t": 503.65802, "r": 171.26956, "b": 512.4328, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "function_id,", "bbox": {"l": 182.75941, "t": 503.65802, "r": 251.69853, "b": 512.4328, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "user_name,", "bbox": {"l": 166.78244, "t": 515.6578400000001, "r": 241.73852999999997, "b": 524.43262, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "usage,", "bbox": {"l": 170.75961, "t": 527.65765, "r": 221.69901999999996, "b": 536.43242, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "user_type", "bbox": {"l": 167.53809, "t": 539.65747, "r": 236.69878, "b": 548.43222, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "FROM", "bbox": {"l": 136.8, "t": 551.65727, "r": 160.59396, "b": 560.43202, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "function_usage", "bbox": {"l": 178.43944, "t": 551.65727, "r": 261.71829, "b": 560.43202, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "WHERE", "bbox": {"l": 136.8, "t": 563.65707, "r": 162.44176, "b": 572.43182, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "function_id=\u2019QIBM_DB_SECADM\u2019", "bbox": {"l": 177.8268, "t": 563.65707, "r": 331.67731, "b": 572.43182, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ORDER BY", "bbox": {"l": 136.8, "t": 575.65688, "r": 178.77542, "b": 584.43163, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "user_name;", "bbox": {"l": 189.26929, "t": 575.65688, "r": 241.73856, "b": 584.43163, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "2.2", "bbox": {"l": 64.800003, "t": 620.22063, "r": 87.569839, "b": 634.98363, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Separation of duties", "bbox": {"l": 92.123802, "t": 620.22063, "r": 249.59605000000002, "b": 634.98363, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Separation of duties helps businesses comply with industry regulations or organizational ", "bbox": {"l": 136.8, "t": 652.54872, "r": 529.09357, "b": 661.76172, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "requirements and simplifies the management of authorities. Separation of duties is commonly ", "bbox": {"l": 136.8, "t": 664.54852, "r": 547.22345, "b": 673.76153, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "used to prevent fraudulent activities or errors by a single person. It provides the ability for ", "bbox": {"l": 136.8, "t": 676.54833, "r": 530.89716, "b": 685.76134, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "administrative functions to be divided across individuals without overlapping responsibilities, ", "bbox": {"l": 136.80002, "t": 688.54814, "r": 544.33832, "b": 697.7611469999999, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "so that one user does not possess unlimited authority, such as with the *ALLOBJ authority.", "bbox": {"l": 136.80002, "t": 700.547951, "r": 536.28363, "b": 709.760956, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "Column name", "bbox": {"l": 142.8, "t": 296.5379899999999, "r": 202.245, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Data type", "bbox": {"l": 216.80878999999996, "t": 296.5379899999999, "r": 257.21069, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Description", "bbox": {"l": 289.47479, "t": 296.5379899999999, "r": 338.89468, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "FUNCTION_ID", "bbox": {"l": 142.8, "t": 315.55771, "r": 203.2323, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "VARCHAR(30)", "bbox": {"l": 216.7854, "t": 315.55771, "r": 276.0036, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ID of the function.", "bbox": {"l": 289.4577, "t": 315.55771, "r": 359.85394, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "USER_NAME", "bbox": {"l": 142.8, "t": 334.51801, "r": 198.6693, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "VARCHAR(10)", "bbox": {"l": 216.74129999999997, "t": 334.51801, "r": 275.92349, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "Name of the user profile that has a usage setting for this ", "bbox": {"l": 289.38208, "t": 334.51801, "r": 515.05359, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "function.", "bbox": {"l": 289.4397, "t": 345.55832, "r": 323.43362, "b": 353.88333, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "USAGE", "bbox": {"l": 142.79999, "t": 364.51862, "r": 173.98318, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "VARCHAR(7)", "bbox": {"l": 216.77367999999998, "t": 364.51862, "r": 270.97977, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Usage setting:", "bbox": {"l": 289.41626, "t": 364.51862, "r": 346.88757, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 375.69394000000005, "r": 293.9397, "b": 383.62292, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "ALLOWED: The user profile is allowed to use the function.", "bbox": {"l": 303.83969, "t": 375.55893, "r": 535.16766, "b": 383.88394, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 386.67395, "r": 293.9397, "b": 394.60294, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "DENIED: The user profile is not allowed to use the function.", "bbox": {"l": 303.83969, "t": 386.53894, "r": 539.10712, "b": 394.86395, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "USER_TYPE", "bbox": {"l": 142.8, "t": 405.55865, "r": 196.2249, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "VARCHAR(5)", "bbox": {"l": 216.75211, "t": 405.55865, "r": 270.99872, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Type of user profile:", "bbox": {"l": 289.43161, "t": 405.55865, "r": 367.8009, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 416.67368000000005, "r": 293.9397, "b": 424.60266, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "USER: The user profile is a user.", "bbox": {"l": 303.83969, "t": 416.53867, "r": 434.78159, "b": 424.86368, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 427.65369, "r": 293.9397, "b": 435.58267000000006, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "GROUP: The user profile is a group.", "bbox": {"l": 303.83969, "t": 427.51868, "r": 448.11963000000003, "b": 435.84369, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.4488525390625, "t": 754.418701171875, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9166076183319092, "cells": [{"id": 0, "text": "10 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.35774993896484, "t": 754.6892700195312, "r": 334.42142, "b": 763.9585571289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9529878497123718, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.09011840820312, "t": 70.1792984008789, "r": 335.49551, "b": 83.9942626953125, "coord_origin": "TOPLEFT"}, "confidence": 0.969738245010376, "cells": [{"id": 2, "text": "2.1.6", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 94.081459, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Change Function Usage CL command", "bbox": {"l": 97.741661, "t": 71.33471999999995, "r": 335.49551, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.83584594726562, "t": 96.62870788574219, "r": 547.28442, "b": 107.22466278076172, "coord_origin": "TOPLEFT"}, "confidence": 0.9551490545272827, "cells": [{"id": 4, "text": "The following CL commands can be used to work with, display, or change function usage IDs:", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 547.28442, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 135.6907196044922, "t": 113.74026489257812, "r": 301.51749, "b": 124.55382537841797, "coord_origin": "TOPLEFT"}, "confidence": 0.9410473704338074, "cells": [{"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 114.67767000000003, "r": 141.78, "b": 123.45245, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Work Function Usage (", "bbox": {"l": 151.20016, "t": 114.52826000000005, "r": 253.26227000000003, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "WRKFCNUSG", "bbox": {"l": 253.26028, "t": 114.67767000000003, "r": 298.1998, "b": 123.50225999999998, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": ")", "bbox": {"l": 298.20081, "t": 114.52826000000005, "r": 301.51749, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 135.7242889404297, "t": 125.93077850341797, "r": 313.39777, "b": 136.68792724609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9417493939399719, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 126.67749000000003, "r": 141.78099, "b": 135.45227, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Change Function Usage (", "bbox": {"l": 151.20116, "t": 126.52808000000005, "r": 265.13354, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "CHGFCNUSG", "bbox": {"l": 265.08081, "t": 126.67749000000003, "r": 310.02032, "b": 135.50207999999998, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": ")", "bbox": {"l": 310.08109, "t": 126.52808000000005, "r": 313.39777, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.71124267578125, "t": 137.9629364013672, "r": 310.81711, "b": 148.59957885742188, "coord_origin": "TOPLEFT"}, "confidence": 0.9562166929244995, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.80098, "t": 138.67731000000003, "r": 141.78098, "b": 147.45209, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Display Function Usage (", "bbox": {"l": 151.20114, "t": 138.52788999999996, "r": 262.5639, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "DSPFCNUSG", "bbox": {"l": 262.56091, "t": 138.67731000000003, "r": 307.50043, "b": 147.50189, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ")", "bbox": {"l": 307.50043, "t": 138.52788999999996, "r": 310.81711, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 136.30247497558594, "t": 159.218505859375, "r": 512.53802, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9682289958000183, "cells": [{"id": 17, "text": "For example, the following ", "bbox": {"l": 136.79997, "t": 160.48766999999998, "r": 255.09984000000003, "b": 169.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "CHGFCNUSG", "bbox": {"l": 255.00027, "t": 160.63707999999997, "r": 299.99957, "b": 169.46167000000003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": " command shows granting authorization to user ", "bbox": {"l": 300.00055, "t": 160.48766999999998, "r": 512.53802, "b": 169.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "HBEDOYA to administer and manage RCAC rules:", "bbox": {"l": 136.80096, "t": 172.48748999999998, "r": 360.41989, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 136.3306427001953, "t": 187.99078369140625, "r": 441.59686, "b": 198.88003540039062, "coord_origin": "TOPLEFT"}, "confidence": 0.9056942462921143, "cells": [{"id": 21, "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED)", "bbox": {"l": 136.80096, "t": 189.67645000000005, "r": 441.59686, "b": 198.45123, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "section_header", "bbox": {"l": 63.9356689453125, "t": 218.1382598876953, "r": 544.47546, "b": 232.12425231933594, "coord_origin": "TOPLEFT"}, "confidence": 0.9636377096176147, "cells": [{"id": 22, "text": "2.1.7", "bbox": {"l": 64.800003, "t": 219.35468000000003, "r": 93.757614, "b": 231.34271, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Verifying function usage IDs for RCAC with the FUNCTION_USAGE view", "bbox": {"l": 97.377296, "t": 219.35468000000003, "r": 544.47546, "b": 231.34271, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 135.84828186035156, "t": 244.5770263671875, "r": 519.51794, "b": 266.7215, "coord_origin": "TOPLEFT"}, "confidence": 0.9737265110015869, "cells": [{"id": 24, "text": "The FUNCTION_USAGE view contains function usage configuration details. Table 2-1 ", "bbox": {"l": 136.8, "t": 245.50867000000005, "r": 519.51794, "b": 254.72168, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "describes the columns in the FUNCTION_USAGE view.", "bbox": {"l": 136.8, "t": 257.50847999999996, "r": 382.94443, "b": 266.7215, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "caption", "bbox": {"l": 136.8, "t": 278.509521484375, "r": 284.9328308105469, "b": 287.88300000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.919783353805542, "cells": [{"id": 26, "text": "Table 2-1 FUNCTION_USAGE view", "bbox": {"l": 136.8, "t": 279.55798000000004, "r": 283.96805, "b": 287.88300000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 135.81077575683594, "t": 451.328857421875, "r": 547.2804, "b": 473.72153, "coord_origin": "TOPLEFT"}, "confidence": 0.9647641777992249, "cells": [{"id": 27, "text": "To discover who has authorization to define and manage RCAC, you can use the query that is ", "bbox": {"l": 136.8, "t": 452.50872999999996, "r": 547.2804, "b": 461.72171, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "shown in Example 2-1.", "bbox": {"l": 136.8, "t": 464.50854, "r": 237.76951999999997, "b": 473.72153, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "caption", "bbox": {"l": 136.28225708007812, "t": 485.76434326171875, "r": 462.98095703125, "b": 495.88201904296875, "coord_origin": "TOPLEFT"}, "confidence": 0.8165032267570496, "cells": [{"id": 29, "text": "Example 2-1 Query to determine who has authority to define and manage RCAC", "bbox": {"l": 136.8, "t": 486.55798, "r": 462.35419, "b": 494.883, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "text", "bbox": {"l": 136.8, "t": 503.65802, "r": 331.67731, "b": 584.43163, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 30, "text": "SELECT", "bbox": {"l": 136.8, "t": 503.65802, "r": 171.26956, "b": 512.4328, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "function_id,", "bbox": {"l": 182.75941, "t": 503.65802, "r": 251.69853, "b": 512.4328, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "user_name,", "bbox": {"l": 166.78244, "t": 515.6578400000001, "r": 241.73852999999997, "b": 524.43262, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "usage,", "bbox": {"l": 170.75961, "t": 527.65765, "r": 221.69901999999996, "b": 536.43242, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "user_type", "bbox": {"l": 167.53809, "t": 539.65747, "r": 236.69878, "b": 548.43222, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "FROM", "bbox": {"l": 136.8, "t": 551.65727, "r": 160.59396, "b": 560.43202, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "function_usage", "bbox": {"l": 178.43944, "t": 551.65727, "r": 261.71829, "b": 560.43202, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "WHERE", "bbox": {"l": 136.8, "t": 563.65707, "r": 162.44176, "b": 572.43182, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "function_id=\u2019QIBM_DB_SECADM\u2019", "bbox": {"l": 177.8268, "t": 563.65707, "r": 331.67731, "b": 572.43182, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ORDER BY", "bbox": {"l": 136.8, "t": 575.65688, "r": 178.77542, "b": 584.43163, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "user_name;", "bbox": {"l": 189.26929, "t": 575.65688, "r": 241.73856, "b": 584.43163, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "section_header", "bbox": {"l": 64.18024444580078, "t": 619.3924560546875, "r": 249.59605000000002, "b": 635.6513671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9656643271446228, "cells": [{"id": 41, "text": "2.2", "bbox": {"l": 64.800003, "t": 620.22063, "r": 87.569839, "b": 634.98363, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Separation of duties", "bbox": {"l": 92.123802, "t": 620.22063, "r": 249.59605000000002, "b": 634.98363, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "text", "bbox": {"l": 136.1588592529297, "t": 651.8870849609375, "r": 547.22345, "b": 710.182373046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9853105545043945, "cells": [{"id": 43, "text": "Separation of duties helps businesses comply with industry regulations or organizational ", "bbox": {"l": 136.8, "t": 652.54872, "r": 529.09357, "b": 661.76172, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "requirements and simplifies the management of authorities. Separation of duties is commonly ", "bbox": {"l": 136.8, "t": 664.54852, "r": 547.22345, "b": 673.76153, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "used to prevent fraudulent activities or errors by a single person. It provides the ability for ", "bbox": {"l": 136.8, "t": 676.54833, "r": 530.89716, "b": 685.76134, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "administrative functions to be divided across individuals without overlapping responsibilities, ", "bbox": {"l": 136.80002, "t": 688.54814, "r": 544.33832, "b": 697.7611469999999, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "so that one user does not possess unlimited authority, such as with the *ALLOBJ authority.", "bbox": {"l": 136.80002, "t": 700.547951, "r": 536.28363, "b": 709.760956, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "table", "bbox": {"l": 135.52508544921875, "t": 289.7249755859375, "r": 545.87060546875, "b": 442.0505065917969, "coord_origin": "TOPLEFT"}, "confidence": 0.985169529914856, "cells": [{"id": 48, "text": "Column name", "bbox": {"l": 142.8, "t": 296.5379899999999, "r": 202.245, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Data type", "bbox": {"l": 216.80878999999996, "t": 296.5379899999999, "r": 257.21069, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Description", "bbox": {"l": 289.47479, "t": 296.5379899999999, "r": 338.89468, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "FUNCTION_ID", "bbox": {"l": 142.8, "t": 315.55771, "r": 203.2323, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "VARCHAR(30)", "bbox": {"l": 216.7854, "t": 315.55771, "r": 276.0036, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ID of the function.", "bbox": {"l": 289.4577, "t": 315.55771, "r": 359.85394, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "USER_NAME", "bbox": {"l": 142.8, "t": 334.51801, "r": 198.6693, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "VARCHAR(10)", "bbox": {"l": 216.74129999999997, "t": 334.51801, "r": 275.92349, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "Name of the user profile that has a usage setting for this ", "bbox": {"l": 289.38208, "t": 334.51801, "r": 515.05359, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "function.", "bbox": {"l": 289.4397, "t": 345.55832, "r": 323.43362, "b": 353.88333, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "USAGE", "bbox": {"l": 142.79999, "t": 364.51862, "r": 173.98318, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "VARCHAR(7)", "bbox": {"l": 216.77367999999998, "t": 364.51862, "r": 270.97977, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Usage setting:", "bbox": {"l": 289.41626, "t": 364.51862, "r": 346.88757, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 375.69394000000005, "r": 293.9397, "b": 383.62292, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "ALLOWED: The user profile is allowed to use the function.", "bbox": {"l": 303.83969, "t": 375.55893, "r": 535.16766, "b": 383.88394, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 386.67395, "r": 293.9397, "b": 394.60294, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "DENIED: The user profile is not allowed to use the function.", "bbox": {"l": 303.83969, "t": 386.53894, "r": 539.10712, "b": 394.86395, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "USER_TYPE", "bbox": {"l": 142.8, "t": 405.55865, "r": 196.2249, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "VARCHAR(5)", "bbox": {"l": 216.75211, "t": 405.55865, "r": 270.99872, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Type of user profile:", "bbox": {"l": 289.43161, "t": 405.55865, "r": 367.8009, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 416.67368000000005, "r": 293.9397, "b": 424.60266, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "USER: The user profile is a user.", "bbox": {"l": 303.83969, "t": 416.53867, "r": 434.78159, "b": 424.86368, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 427.65369, "r": 293.9397, "b": 435.58267000000006, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "GROUP: The user profile is a group.", "bbox": {"l": 303.83969, "t": 427.51868, "r": 448.11963000000003, "b": 435.84369, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {"17": {"label": "table", "id": 17, "page_no": 25, "cluster": {"id": 17, "label": "table", "bbox": {"l": 135.52508544921875, "t": 289.7249755859375, "r": 545.87060546875, "b": 442.0505065917969, "coord_origin": "TOPLEFT"}, "confidence": 0.985169529914856, "cells": [{"id": 48, "text": "Column name", "bbox": {"l": 142.8, "t": 296.5379899999999, "r": 202.245, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Data type", "bbox": {"l": 216.80878999999996, "t": 296.5379899999999, "r": 257.21069, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Description", "bbox": {"l": 289.47479, "t": 296.5379899999999, "r": 338.89468, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "FUNCTION_ID", "bbox": {"l": 142.8, "t": 315.55771, "r": 203.2323, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "VARCHAR(30)", "bbox": {"l": 216.7854, "t": 315.55771, "r": 276.0036, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ID of the function.", "bbox": {"l": 289.4577, "t": 315.55771, "r": 359.85394, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "USER_NAME", "bbox": {"l": 142.8, "t": 334.51801, "r": 198.6693, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "VARCHAR(10)", "bbox": {"l": 216.74129999999997, "t": 334.51801, "r": 275.92349, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "Name of the user profile that has a usage setting for this ", "bbox": {"l": 289.38208, "t": 334.51801, "r": 515.05359, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "function.", "bbox": {"l": 289.4397, "t": 345.55832, "r": 323.43362, "b": 353.88333, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "USAGE", "bbox": {"l": 142.79999, "t": 364.51862, "r": 173.98318, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "VARCHAR(7)", "bbox": {"l": 216.77367999999998, "t": 364.51862, "r": 270.97977, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Usage setting:", "bbox": {"l": 289.41626, "t": 364.51862, "r": 346.88757, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 375.69394000000005, "r": 293.9397, "b": 383.62292, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "ALLOWED: The user profile is allowed to use the function.", "bbox": {"l": 303.83969, "t": 375.55893, "r": 535.16766, "b": 383.88394, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 386.67395, "r": 293.9397, "b": 394.60294, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "DENIED: The user profile is not allowed to use the function.", "bbox": {"l": 303.83969, "t": 386.53894, "r": 539.10712, "b": 394.86395, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "USER_TYPE", "bbox": {"l": 142.8, "t": 405.55865, "r": 196.2249, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "VARCHAR(5)", "bbox": {"l": 216.75211, "t": 405.55865, "r": 270.99872, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Type of user profile:", "bbox": {"l": 289.43161, "t": 405.55865, "r": 367.8009, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 416.67368000000005, "r": 293.9397, "b": 424.60266, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "USER: The user profile is a user.", "bbox": {"l": 303.83969, "t": 416.53867, "r": 434.78159, "b": 424.86368, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 427.65369, "r": 293.9397, "b": 435.58267000000006, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "GROUP: The user profile is a group.", "bbox": {"l": 303.83969, "t": 427.51868, "r": 448.11963000000003, "b": 435.84369, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "ched", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl"], "num_rows": 5, "num_cols": 3, "table_cells": [{"bbox": {"l": 142.8, "t": 296.5379899999999, "r": 202.245, "b": 304.86301, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Column name", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 216.80878999999996, "t": 296.5379899999999, "r": 257.21069, "b": 304.86301, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Data type", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 289.47479, "t": 296.5379899999999, "r": 338.89468, "b": 304.86301, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Description", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8, "t": 315.55771, "r": 203.2323, "b": 323.88272, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "FUNCTION_ID", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.7854, "t": 315.55771, "r": 276.0036, "b": 323.88272, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(30)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.4577, "t": 315.55771, "r": 359.85394, "b": 323.88272, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "ID of the function.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8, "t": 334.51801, "r": 198.6693, "b": 342.84302, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USER_NAME", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.74129999999997, "t": 334.51801, "r": 275.92349, "b": 342.84302, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(10)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.38208, "t": 334.51801, "r": 515.05359, "b": 353.88333, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Name of the user profile that has a usage setting for this function.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.79999, "t": 364.51862, "r": 173.98318, "b": 372.84363, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USAGE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.77367999999998, "t": 364.51862, "r": 270.97977, "b": 372.84363, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(7)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.41626, "t": 364.51862, "r": 539.10712, "b": 394.86395, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Usage setting: GLYPH ALLOWED: The user profile is allowed to use the function. GLYPH DENIED: The user profile is not allowed to use the function.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8, "t": 405.55865, "r": 196.2249, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USER_TYPE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.75211, "t": 405.55865, "r": 270.99872, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(5)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.43161, "t": 405.55865, "r": 448.11963000000003, "b": 435.84369, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Type of user profile: GLYPH USER: The user profile is a user. GLYPH GROUP: The user profile is a group.", "column_header": false, "row_header": false, "row_section": false}]}}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 25, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.4488525390625, "t": 754.418701171875, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9166076183319092, "cells": [{"id": 0, "text": "10 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "10"}, {"label": "page_footer", "id": 1, "page_no": 25, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.35774993896484, "t": 754.6892700195312, "r": 334.42142, "b": 763.9585571289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9529878497123718, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "section_header", "id": 2, "page_no": 25, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.09011840820312, "t": 70.1792984008789, "r": 335.49551, "b": 83.9942626953125, "coord_origin": "TOPLEFT"}, "confidence": 0.969738245010376, "cells": [{"id": 2, "text": "2.1.6", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 94.081459, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Change Function Usage CL command", "bbox": {"l": 97.741661, "t": 71.33471999999995, "r": 335.49551, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "2.1.6 Change Function Usage CL command"}, {"label": "text", "id": 3, "page_no": 25, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.83584594726562, "t": 96.62870788574219, "r": 547.28442, "b": 107.22466278076172, "coord_origin": "TOPLEFT"}, "confidence": 0.9551490545272827, "cells": [{"id": 4, "text": "The following CL commands can be used to work with, display, or change function usage IDs:", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 547.28442, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}]}, "text": "The following CL commands can be used to work with, display, or change function usage IDs:"}, {"label": "list_item", "id": 4, "page_no": 25, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.6907196044922, "t": 113.74026489257812, "r": 301.51749, "b": 124.55382537841797, "coord_origin": "TOPLEFT"}, "confidence": 0.9410473704338074, "cells": [{"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 114.67767000000003, "r": 141.78, "b": 123.45245, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Work Function Usage (", "bbox": {"l": 151.20016, "t": 114.52826000000005, "r": 253.26227000000003, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "WRKFCNUSG", "bbox": {"l": 253.26028, "t": 114.67767000000003, "r": 298.1998, "b": 123.50225999999998, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": ")", "bbox": {"l": 298.20081, "t": 114.52826000000005, "r": 301.51749, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Work Function Usage ( WRKFCNUSG )"}, {"label": "list_item", "id": 5, "page_no": 25, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.7242889404297, "t": 125.93077850341797, "r": 313.39777, "b": 136.68792724609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9417493939399719, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 126.67749000000003, "r": 141.78099, "b": 135.45227, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Change Function Usage (", "bbox": {"l": 151.20116, "t": 126.52808000000005, "r": 265.13354, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "CHGFCNUSG", "bbox": {"l": 265.08081, "t": 126.67749000000003, "r": 310.02032, "b": 135.50207999999998, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": ")", "bbox": {"l": 310.08109, "t": 126.52808000000005, "r": 313.39777, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Change Function Usage ( CHGFCNUSG )"}, {"label": "list_item", "id": 6, "page_no": 25, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.71124267578125, "t": 137.9629364013672, "r": 310.81711, "b": 148.59957885742188, "coord_origin": "TOPLEFT"}, "confidence": 0.9562166929244995, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.80098, "t": 138.67731000000003, "r": 141.78098, "b": 147.45209, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Display Function Usage (", "bbox": {"l": 151.20114, "t": 138.52788999999996, "r": 262.5639, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "DSPFCNUSG", "bbox": {"l": 262.56091, "t": 138.67731000000003, "r": 307.50043, "b": 147.50189, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ")", "bbox": {"l": 307.50043, "t": 138.52788999999996, "r": 310.81711, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Display Function Usage ( DSPFCNUSG )"}, {"label": "text", "id": 7, "page_no": 25, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.30247497558594, "t": 159.218505859375, "r": 512.53802, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9682289958000183, "cells": [{"id": 17, "text": "For example, the following ", "bbox": {"l": 136.79997, "t": 160.48766999999998, "r": 255.09984000000003, "b": 169.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "CHGFCNUSG", "bbox": {"l": 255.00027, "t": 160.63707999999997, "r": 299.99957, "b": 169.46167000000003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": " command shows granting authorization to user ", "bbox": {"l": 300.00055, "t": 160.48766999999998, "r": 512.53802, "b": 169.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "HBEDOYA to administer and manage RCAC rules:", "bbox": {"l": 136.80096, "t": 172.48748999999998, "r": 360.41989, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}}]}, "text": "For example, the following CHGFCNUSG command shows granting authorization to user HBEDOYA to administer and manage RCAC rules:"}, {"label": "text", "id": 8, "page_no": 25, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.3306427001953, "t": 187.99078369140625, "r": 441.59686, "b": 198.88003540039062, "coord_origin": "TOPLEFT"}, "confidence": 0.9056942462921143, "cells": [{"id": 21, "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED)", "bbox": {"l": 136.80096, "t": 189.67645000000005, "r": 441.59686, "b": 198.45123, "coord_origin": "TOPLEFT"}}]}, "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED)"}, {"label": "section_header", "id": 9, "page_no": 25, "cluster": {"id": 9, "label": "section_header", "bbox": {"l": 63.9356689453125, "t": 218.1382598876953, "r": 544.47546, "b": 232.12425231933594, "coord_origin": "TOPLEFT"}, "confidence": 0.9636377096176147, "cells": [{"id": 22, "text": "2.1.7", "bbox": {"l": 64.800003, "t": 219.35468000000003, "r": 93.757614, "b": 231.34271, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Verifying function usage IDs for RCAC with the FUNCTION_USAGE view", "bbox": {"l": 97.377296, "t": 219.35468000000003, "r": 544.47546, "b": 231.34271, "coord_origin": "TOPLEFT"}}]}, "text": "2.1.7 Verifying function usage IDs for RCAC with the FUNCTION_USAGE view"}, {"label": "text", "id": 10, "page_no": 25, "cluster": {"id": 10, "label": "text", "bbox": {"l": 135.84828186035156, "t": 244.5770263671875, "r": 519.51794, "b": 266.7215, "coord_origin": "TOPLEFT"}, "confidence": 0.9737265110015869, "cells": [{"id": 24, "text": "The FUNCTION_USAGE view contains function usage configuration details. Table 2-1 ", "bbox": {"l": 136.8, "t": 245.50867000000005, "r": 519.51794, "b": 254.72168, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "describes the columns in the FUNCTION_USAGE view.", "bbox": {"l": 136.8, "t": 257.50847999999996, "r": 382.94443, "b": 266.7215, "coord_origin": "TOPLEFT"}}]}, "text": "The FUNCTION_USAGE view contains function usage configuration details. Table 2-1 describes the columns in the FUNCTION_USAGE view."}, {"label": "caption", "id": 11, "page_no": 25, "cluster": {"id": 11, "label": "caption", "bbox": {"l": 136.8, "t": 278.509521484375, "r": 284.9328308105469, "b": 287.88300000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.919783353805542, "cells": [{"id": 26, "text": "Table 2-1 FUNCTION_USAGE view", "bbox": {"l": 136.8, "t": 279.55798000000004, "r": 283.96805, "b": 287.88300000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Table 2-1 FUNCTION_USAGE view"}, {"label": "text", "id": 12, "page_no": 25, "cluster": {"id": 12, "label": "text", "bbox": {"l": 135.81077575683594, "t": 451.328857421875, "r": 547.2804, "b": 473.72153, "coord_origin": "TOPLEFT"}, "confidence": 0.9647641777992249, "cells": [{"id": 27, "text": "To discover who has authorization to define and manage RCAC, you can use the query that is ", "bbox": {"l": 136.8, "t": 452.50872999999996, "r": 547.2804, "b": 461.72171, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "shown in Example 2-1.", "bbox": {"l": 136.8, "t": 464.50854, "r": 237.76951999999997, "b": 473.72153, "coord_origin": "TOPLEFT"}}]}, "text": "To discover who has authorization to define and manage RCAC, you can use the query that is shown in Example 2-1."}, {"label": "caption", "id": 13, "page_no": 25, "cluster": {"id": 13, "label": "caption", "bbox": {"l": 136.28225708007812, "t": 485.76434326171875, "r": 462.98095703125, "b": 495.88201904296875, "coord_origin": "TOPLEFT"}, "confidence": 0.8165032267570496, "cells": [{"id": 29, "text": "Example 2-1 Query to determine who has authority to define and manage RCAC", "bbox": {"l": 136.8, "t": 486.55798, "r": 462.35419, "b": 494.883, "coord_origin": "TOPLEFT"}}]}, "text": "Example 2-1 Query to determine who has authority to define and manage RCAC"}, {"label": "text", "id": 14, "page_no": 25, "cluster": {"id": 14, "label": "text", "bbox": {"l": 136.8, "t": 503.65802, "r": 331.67731, "b": 584.43163, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 30, "text": "SELECT", "bbox": {"l": 136.8, "t": 503.65802, "r": 171.26956, "b": 512.4328, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "function_id,", "bbox": {"l": 182.75941, "t": 503.65802, "r": 251.69853, "b": 512.4328, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "user_name,", "bbox": {"l": 166.78244, "t": 515.6578400000001, "r": 241.73852999999997, "b": 524.43262, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "usage,", "bbox": {"l": 170.75961, "t": 527.65765, "r": 221.69901999999996, "b": 536.43242, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "user_type", "bbox": {"l": 167.53809, "t": 539.65747, "r": 236.69878, "b": 548.43222, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "FROM", "bbox": {"l": 136.8, "t": 551.65727, "r": 160.59396, "b": 560.43202, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "function_usage", "bbox": {"l": 178.43944, "t": 551.65727, "r": 261.71829, "b": 560.43202, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "WHERE", "bbox": {"l": 136.8, "t": 563.65707, "r": 162.44176, "b": 572.43182, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "function_id=\u2019QIBM_DB_SECADM\u2019", "bbox": {"l": 177.8268, "t": 563.65707, "r": 331.67731, "b": 572.43182, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ORDER BY", "bbox": {"l": 136.8, "t": 575.65688, "r": 178.77542, "b": 584.43163, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "user_name;", "bbox": {"l": 189.26929, "t": 575.65688, "r": 241.73856, "b": 584.43163, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT function_id, user_name, usage, user_type FROM function_usage WHERE function_id=\u2019QIBM_DB_SECADM\u2019 ORDER BY user_name;"}, {"label": "section_header", "id": 15, "page_no": 25, "cluster": {"id": 15, "label": "section_header", "bbox": {"l": 64.18024444580078, "t": 619.3924560546875, "r": 249.59605000000002, "b": 635.6513671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9656643271446228, "cells": [{"id": 41, "text": "2.2", "bbox": {"l": 64.800003, "t": 620.22063, "r": 87.569839, "b": 634.98363, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Separation of duties", "bbox": {"l": 92.123802, "t": 620.22063, "r": 249.59605000000002, "b": 634.98363, "coord_origin": "TOPLEFT"}}]}, "text": "2.2 Separation of duties"}, {"label": "text", "id": 16, "page_no": 25, "cluster": {"id": 16, "label": "text", "bbox": {"l": 136.1588592529297, "t": 651.8870849609375, "r": 547.22345, "b": 710.182373046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9853105545043945, "cells": [{"id": 43, "text": "Separation of duties helps businesses comply with industry regulations or organizational ", "bbox": {"l": 136.8, "t": 652.54872, "r": 529.09357, "b": 661.76172, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "requirements and simplifies the management of authorities. Separation of duties is commonly ", "bbox": {"l": 136.8, "t": 664.54852, "r": 547.22345, "b": 673.76153, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "used to prevent fraudulent activities or errors by a single person. It provides the ability for ", "bbox": {"l": 136.8, "t": 676.54833, "r": 530.89716, "b": 685.76134, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "administrative functions to be divided across individuals without overlapping responsibilities, ", "bbox": {"l": 136.80002, "t": 688.54814, "r": 544.33832, "b": 697.7611469999999, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "so that one user does not possess unlimited authority, such as with the *ALLOBJ authority.", "bbox": {"l": 136.80002, "t": 700.547951, "r": 536.28363, "b": 709.760956, "coord_origin": "TOPLEFT"}}]}, "text": "Separation of duties helps businesses comply with industry regulations or organizational requirements and simplifies the management of authorities. Separation of duties is commonly used to prevent fraudulent activities or errors by a single person. It provides the ability for administrative functions to be divided across individuals without overlapping responsibilities, so that one user does not possess unlimited authority, such as with the *ALLOBJ authority."}, {"label": "table", "id": 17, "page_no": 25, "cluster": {"id": 17, "label": "table", "bbox": {"l": 135.52508544921875, "t": 289.7249755859375, "r": 545.87060546875, "b": 442.0505065917969, "coord_origin": "TOPLEFT"}, "confidence": 0.985169529914856, "cells": [{"id": 48, "text": "Column name", "bbox": {"l": 142.8, "t": 296.5379899999999, "r": 202.245, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Data type", "bbox": {"l": 216.80878999999996, "t": 296.5379899999999, "r": 257.21069, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Description", "bbox": {"l": 289.47479, "t": 296.5379899999999, "r": 338.89468, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "FUNCTION_ID", "bbox": {"l": 142.8, "t": 315.55771, "r": 203.2323, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "VARCHAR(30)", "bbox": {"l": 216.7854, "t": 315.55771, "r": 276.0036, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ID of the function.", "bbox": {"l": 289.4577, "t": 315.55771, "r": 359.85394, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "USER_NAME", "bbox": {"l": 142.8, "t": 334.51801, "r": 198.6693, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "VARCHAR(10)", "bbox": {"l": 216.74129999999997, "t": 334.51801, "r": 275.92349, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "Name of the user profile that has a usage setting for this ", "bbox": {"l": 289.38208, "t": 334.51801, "r": 515.05359, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "function.", "bbox": {"l": 289.4397, "t": 345.55832, "r": 323.43362, "b": 353.88333, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "USAGE", "bbox": {"l": 142.79999, "t": 364.51862, "r": 173.98318, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "VARCHAR(7)", "bbox": {"l": 216.77367999999998, "t": 364.51862, "r": 270.97977, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Usage setting:", "bbox": {"l": 289.41626, "t": 364.51862, "r": 346.88757, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 375.69394000000005, "r": 293.9397, "b": 383.62292, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "ALLOWED: The user profile is allowed to use the function.", "bbox": {"l": 303.83969, "t": 375.55893, "r": 535.16766, "b": 383.88394, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 386.67395, "r": 293.9397, "b": 394.60294, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "DENIED: The user profile is not allowed to use the function.", "bbox": {"l": 303.83969, "t": 386.53894, "r": 539.10712, "b": 394.86395, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "USER_TYPE", "bbox": {"l": 142.8, "t": 405.55865, "r": 196.2249, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "VARCHAR(5)", "bbox": {"l": 216.75211, "t": 405.55865, "r": 270.99872, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Type of user profile:", "bbox": {"l": 289.43161, "t": 405.55865, "r": 367.8009, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 416.67368000000005, "r": 293.9397, "b": 424.60266, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "USER: The user profile is a user.", "bbox": {"l": 303.83969, "t": 416.53867, "r": 434.78159, "b": 424.86368, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 427.65369, "r": 293.9397, "b": 435.58267000000006, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "GROUP: The user profile is a group.", "bbox": {"l": 303.83969, "t": 427.51868, "r": 448.11963000000003, "b": 435.84369, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "ched", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl"], "num_rows": 5, "num_cols": 3, "table_cells": [{"bbox": {"l": 142.8, "t": 296.5379899999999, "r": 202.245, "b": 304.86301, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Column name", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 216.80878999999996, "t": 296.5379899999999, "r": 257.21069, "b": 304.86301, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Data type", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 289.47479, "t": 296.5379899999999, "r": 338.89468, "b": 304.86301, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Description", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8, "t": 315.55771, "r": 203.2323, "b": 323.88272, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "FUNCTION_ID", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.7854, "t": 315.55771, "r": 276.0036, "b": 323.88272, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(30)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.4577, "t": 315.55771, "r": 359.85394, "b": 323.88272, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "ID of the function.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8, "t": 334.51801, "r": 198.6693, "b": 342.84302, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USER_NAME", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.74129999999997, "t": 334.51801, "r": 275.92349, "b": 342.84302, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(10)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.38208, "t": 334.51801, "r": 515.05359, "b": 353.88333, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Name of the user profile that has a usage setting for this function.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.79999, "t": 364.51862, "r": 173.98318, "b": 372.84363, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USAGE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.77367999999998, "t": 364.51862, "r": 270.97977, "b": 372.84363, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(7)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.41626, "t": 364.51862, "r": 539.10712, "b": 394.86395, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Usage setting: GLYPH ALLOWED: The user profile is allowed to use the function. GLYPH DENIED: The user profile is not allowed to use the function.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8, "t": 405.55865, "r": 196.2249, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USER_TYPE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.75211, "t": 405.55865, "r": 270.99872, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(5)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.43161, "t": 405.55865, "r": 448.11963000000003, "b": 435.84369, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Type of user profile: GLYPH USER: The user profile is a user. GLYPH GROUP: The user profile is a group.", "column_header": false, "row_header": false, "row_section": false}]}], "body": [{"label": "section_header", "id": 2, "page_no": 25, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.09011840820312, "t": 70.1792984008789, "r": 335.49551, "b": 83.9942626953125, "coord_origin": "TOPLEFT"}, "confidence": 0.969738245010376, "cells": [{"id": 2, "text": "2.1.6", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 94.081459, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Change Function Usage CL command", "bbox": {"l": 97.741661, "t": 71.33471999999995, "r": 335.49551, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "2.1.6 Change Function Usage CL command"}, {"label": "text", "id": 3, "page_no": 25, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.83584594726562, "t": 96.62870788574219, "r": 547.28442, "b": 107.22466278076172, "coord_origin": "TOPLEFT"}, "confidence": 0.9551490545272827, "cells": [{"id": 4, "text": "The following CL commands can be used to work with, display, or change function usage IDs:", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 547.28442, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}]}, "text": "The following CL commands can be used to work with, display, or change function usage IDs:"}, {"label": "list_item", "id": 4, "page_no": 25, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.6907196044922, "t": 113.74026489257812, "r": 301.51749, "b": 124.55382537841797, "coord_origin": "TOPLEFT"}, "confidence": 0.9410473704338074, "cells": [{"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 114.67767000000003, "r": 141.78, "b": 123.45245, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Work Function Usage (", "bbox": {"l": 151.20016, "t": 114.52826000000005, "r": 253.26227000000003, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "WRKFCNUSG", "bbox": {"l": 253.26028, "t": 114.67767000000003, "r": 298.1998, "b": 123.50225999999998, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": ")", "bbox": {"l": 298.20081, "t": 114.52826000000005, "r": 301.51749, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Work Function Usage ( WRKFCNUSG )"}, {"label": "list_item", "id": 5, "page_no": 25, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.7242889404297, "t": 125.93077850341797, "r": 313.39777, "b": 136.68792724609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9417493939399719, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 126.67749000000003, "r": 141.78099, "b": 135.45227, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Change Function Usage (", "bbox": {"l": 151.20116, "t": 126.52808000000005, "r": 265.13354, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "CHGFCNUSG", "bbox": {"l": 265.08081, "t": 126.67749000000003, "r": 310.02032, "b": 135.50207999999998, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": ")", "bbox": {"l": 310.08109, "t": 126.52808000000005, "r": 313.39777, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Change Function Usage ( CHGFCNUSG )"}, {"label": "list_item", "id": 6, "page_no": 25, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.71124267578125, "t": 137.9629364013672, "r": 310.81711, "b": 148.59957885742188, "coord_origin": "TOPLEFT"}, "confidence": 0.9562166929244995, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.80098, "t": 138.67731000000003, "r": 141.78098, "b": 147.45209, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Display Function Usage (", "bbox": {"l": 151.20114, "t": 138.52788999999996, "r": 262.5639, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "DSPFCNUSG", "bbox": {"l": 262.56091, "t": 138.67731000000003, "r": 307.50043, "b": 147.50189, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ")", "bbox": {"l": 307.50043, "t": 138.52788999999996, "r": 310.81711, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Display Function Usage ( DSPFCNUSG )"}, {"label": "text", "id": 7, "page_no": 25, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.30247497558594, "t": 159.218505859375, "r": 512.53802, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9682289958000183, "cells": [{"id": 17, "text": "For example, the following ", "bbox": {"l": 136.79997, "t": 160.48766999999998, "r": 255.09984000000003, "b": 169.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "CHGFCNUSG", "bbox": {"l": 255.00027, "t": 160.63707999999997, "r": 299.99957, "b": 169.46167000000003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": " command shows granting authorization to user ", "bbox": {"l": 300.00055, "t": 160.48766999999998, "r": 512.53802, "b": 169.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "HBEDOYA to administer and manage RCAC rules:", "bbox": {"l": 136.80096, "t": 172.48748999999998, "r": 360.41989, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}}]}, "text": "For example, the following CHGFCNUSG command shows granting authorization to user HBEDOYA to administer and manage RCAC rules:"}, {"label": "text", "id": 8, "page_no": 25, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.3306427001953, "t": 187.99078369140625, "r": 441.59686, "b": 198.88003540039062, "coord_origin": "TOPLEFT"}, "confidence": 0.9056942462921143, "cells": [{"id": 21, "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED)", "bbox": {"l": 136.80096, "t": 189.67645000000005, "r": 441.59686, "b": 198.45123, "coord_origin": "TOPLEFT"}}]}, "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED)"}, {"label": "section_header", "id": 9, "page_no": 25, "cluster": {"id": 9, "label": "section_header", "bbox": {"l": 63.9356689453125, "t": 218.1382598876953, "r": 544.47546, "b": 232.12425231933594, "coord_origin": "TOPLEFT"}, "confidence": 0.9636377096176147, "cells": [{"id": 22, "text": "2.1.7", "bbox": {"l": 64.800003, "t": 219.35468000000003, "r": 93.757614, "b": 231.34271, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Verifying function usage IDs for RCAC with the FUNCTION_USAGE view", "bbox": {"l": 97.377296, "t": 219.35468000000003, "r": 544.47546, "b": 231.34271, "coord_origin": "TOPLEFT"}}]}, "text": "2.1.7 Verifying function usage IDs for RCAC with the FUNCTION_USAGE view"}, {"label": "text", "id": 10, "page_no": 25, "cluster": {"id": 10, "label": "text", "bbox": {"l": 135.84828186035156, "t": 244.5770263671875, "r": 519.51794, "b": 266.7215, "coord_origin": "TOPLEFT"}, "confidence": 0.9737265110015869, "cells": [{"id": 24, "text": "The FUNCTION_USAGE view contains function usage configuration details. Table 2-1 ", "bbox": {"l": 136.8, "t": 245.50867000000005, "r": 519.51794, "b": 254.72168, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "describes the columns in the FUNCTION_USAGE view.", "bbox": {"l": 136.8, "t": 257.50847999999996, "r": 382.94443, "b": 266.7215, "coord_origin": "TOPLEFT"}}]}, "text": "The FUNCTION_USAGE view contains function usage configuration details. Table 2-1 describes the columns in the FUNCTION_USAGE view."}, {"label": "caption", "id": 11, "page_no": 25, "cluster": {"id": 11, "label": "caption", "bbox": {"l": 136.8, "t": 278.509521484375, "r": 284.9328308105469, "b": 287.88300000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.919783353805542, "cells": [{"id": 26, "text": "Table 2-1 FUNCTION_USAGE view", "bbox": {"l": 136.8, "t": 279.55798000000004, "r": 283.96805, "b": 287.88300000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Table 2-1 FUNCTION_USAGE view"}, {"label": "text", "id": 12, "page_no": 25, "cluster": {"id": 12, "label": "text", "bbox": {"l": 135.81077575683594, "t": 451.328857421875, "r": 547.2804, "b": 473.72153, "coord_origin": "TOPLEFT"}, "confidence": 0.9647641777992249, "cells": [{"id": 27, "text": "To discover who has authorization to define and manage RCAC, you can use the query that is ", "bbox": {"l": 136.8, "t": 452.50872999999996, "r": 547.2804, "b": 461.72171, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "shown in Example 2-1.", "bbox": {"l": 136.8, "t": 464.50854, "r": 237.76951999999997, "b": 473.72153, "coord_origin": "TOPLEFT"}}]}, "text": "To discover who has authorization to define and manage RCAC, you can use the query that is shown in Example 2-1."}, {"label": "caption", "id": 13, "page_no": 25, "cluster": {"id": 13, "label": "caption", "bbox": {"l": 136.28225708007812, "t": 485.76434326171875, "r": 462.98095703125, "b": 495.88201904296875, "coord_origin": "TOPLEFT"}, "confidence": 0.8165032267570496, "cells": [{"id": 29, "text": "Example 2-1 Query to determine who has authority to define and manage RCAC", "bbox": {"l": 136.8, "t": 486.55798, "r": 462.35419, "b": 494.883, "coord_origin": "TOPLEFT"}}]}, "text": "Example 2-1 Query to determine who has authority to define and manage RCAC"}, {"label": "text", "id": 14, "page_no": 25, "cluster": {"id": 14, "label": "text", "bbox": {"l": 136.8, "t": 503.65802, "r": 331.67731, "b": 584.43163, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 30, "text": "SELECT", "bbox": {"l": 136.8, "t": 503.65802, "r": 171.26956, "b": 512.4328, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "function_id,", "bbox": {"l": 182.75941, "t": 503.65802, "r": 251.69853, "b": 512.4328, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "user_name,", "bbox": {"l": 166.78244, "t": 515.6578400000001, "r": 241.73852999999997, "b": 524.43262, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "usage,", "bbox": {"l": 170.75961, "t": 527.65765, "r": 221.69901999999996, "b": 536.43242, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "user_type", "bbox": {"l": 167.53809, "t": 539.65747, "r": 236.69878, "b": 548.43222, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "FROM", "bbox": {"l": 136.8, "t": 551.65727, "r": 160.59396, "b": 560.43202, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "function_usage", "bbox": {"l": 178.43944, "t": 551.65727, "r": 261.71829, "b": 560.43202, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "WHERE", "bbox": {"l": 136.8, "t": 563.65707, "r": 162.44176, "b": 572.43182, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "function_id=\u2019QIBM_DB_SECADM\u2019", "bbox": {"l": 177.8268, "t": 563.65707, "r": 331.67731, "b": 572.43182, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ORDER BY", "bbox": {"l": 136.8, "t": 575.65688, "r": 178.77542, "b": 584.43163, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "user_name;", "bbox": {"l": 189.26929, "t": 575.65688, "r": 241.73856, "b": 584.43163, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT function_id, user_name, usage, user_type FROM function_usage WHERE function_id=\u2019QIBM_DB_SECADM\u2019 ORDER BY user_name;"}, {"label": "section_header", "id": 15, "page_no": 25, "cluster": {"id": 15, "label": "section_header", "bbox": {"l": 64.18024444580078, "t": 619.3924560546875, "r": 249.59605000000002, "b": 635.6513671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9656643271446228, "cells": [{"id": 41, "text": "2.2", "bbox": {"l": 64.800003, "t": 620.22063, "r": 87.569839, "b": 634.98363, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Separation of duties", "bbox": {"l": 92.123802, "t": 620.22063, "r": 249.59605000000002, "b": 634.98363, "coord_origin": "TOPLEFT"}}]}, "text": "2.2 Separation of duties"}, {"label": "text", "id": 16, "page_no": 25, "cluster": {"id": 16, "label": "text", "bbox": {"l": 136.1588592529297, "t": 651.8870849609375, "r": 547.22345, "b": 710.182373046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9853105545043945, "cells": [{"id": 43, "text": "Separation of duties helps businesses comply with industry regulations or organizational ", "bbox": {"l": 136.8, "t": 652.54872, "r": 529.09357, "b": 661.76172, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "requirements and simplifies the management of authorities. Separation of duties is commonly ", "bbox": {"l": 136.8, "t": 664.54852, "r": 547.22345, "b": 673.76153, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "used to prevent fraudulent activities or errors by a single person. It provides the ability for ", "bbox": {"l": 136.8, "t": 676.54833, "r": 530.89716, "b": 685.76134, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "administrative functions to be divided across individuals without overlapping responsibilities, ", "bbox": {"l": 136.80002, "t": 688.54814, "r": 544.33832, "b": 697.7611469999999, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "so that one user does not possess unlimited authority, such as with the *ALLOBJ authority.", "bbox": {"l": 136.80002, "t": 700.547951, "r": 536.28363, "b": 709.760956, "coord_origin": "TOPLEFT"}}]}, "text": "Separation of duties helps businesses comply with industry regulations or organizational requirements and simplifies the management of authorities. Separation of duties is commonly used to prevent fraudulent activities or errors by a single person. It provides the ability for administrative functions to be divided across individuals without overlapping responsibilities, so that one user does not possess unlimited authority, such as with the *ALLOBJ authority."}, {"label": "table", "id": 17, "page_no": 25, "cluster": {"id": 17, "label": "table", "bbox": {"l": 135.52508544921875, "t": 289.7249755859375, "r": 545.87060546875, "b": 442.0505065917969, "coord_origin": "TOPLEFT"}, "confidence": 0.985169529914856, "cells": [{"id": 48, "text": "Column name", "bbox": {"l": 142.8, "t": 296.5379899999999, "r": 202.245, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Data type", "bbox": {"l": 216.80878999999996, "t": 296.5379899999999, "r": 257.21069, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Description", "bbox": {"l": 289.47479, "t": 296.5379899999999, "r": 338.89468, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "FUNCTION_ID", "bbox": {"l": 142.8, "t": 315.55771, "r": 203.2323, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "VARCHAR(30)", "bbox": {"l": 216.7854, "t": 315.55771, "r": 276.0036, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ID of the function.", "bbox": {"l": 289.4577, "t": 315.55771, "r": 359.85394, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "USER_NAME", "bbox": {"l": 142.8, "t": 334.51801, "r": 198.6693, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "VARCHAR(10)", "bbox": {"l": 216.74129999999997, "t": 334.51801, "r": 275.92349, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "Name of the user profile that has a usage setting for this ", "bbox": {"l": 289.38208, "t": 334.51801, "r": 515.05359, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "function.", "bbox": {"l": 289.4397, "t": 345.55832, "r": 323.43362, "b": 353.88333, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "USAGE", "bbox": {"l": 142.79999, "t": 364.51862, "r": 173.98318, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "VARCHAR(7)", "bbox": {"l": 216.77367999999998, "t": 364.51862, "r": 270.97977, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Usage setting:", "bbox": {"l": 289.41626, "t": 364.51862, "r": 346.88757, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 375.69394000000005, "r": 293.9397, "b": 383.62292, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "ALLOWED: The user profile is allowed to use the function.", "bbox": {"l": 303.83969, "t": 375.55893, "r": 535.16766, "b": 383.88394, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 386.67395, "r": 293.9397, "b": 394.60294, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "DENIED: The user profile is not allowed to use the function.", "bbox": {"l": 303.83969, "t": 386.53894, "r": 539.10712, "b": 394.86395, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "USER_TYPE", "bbox": {"l": 142.8, "t": 405.55865, "r": 196.2249, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "VARCHAR(5)", "bbox": {"l": 216.75211, "t": 405.55865, "r": 270.99872, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Type of user profile:", "bbox": {"l": 289.43161, "t": 405.55865, "r": 367.8009, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 416.67368000000005, "r": 293.9397, "b": 424.60266, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "USER: The user profile is a user.", "bbox": {"l": 303.83969, "t": 416.53867, "r": 434.78159, "b": 424.86368, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 427.65369, "r": 293.9397, "b": 435.58267000000006, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "GROUP: The user profile is a group.", "bbox": {"l": 303.83969, "t": 427.51868, "r": 448.11963000000003, "b": 435.84369, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "ched", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl"], "num_rows": 5, "num_cols": 3, "table_cells": [{"bbox": {"l": 142.8, "t": 296.5379899999999, "r": 202.245, "b": 304.86301, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Column name", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 216.80878999999996, "t": 296.5379899999999, "r": 257.21069, "b": 304.86301, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Data type", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 289.47479, "t": 296.5379899999999, "r": 338.89468, "b": 304.86301, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Description", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8, "t": 315.55771, "r": 203.2323, "b": 323.88272, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "FUNCTION_ID", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.7854, "t": 315.55771, "r": 276.0036, "b": 323.88272, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(30)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.4577, "t": 315.55771, "r": 359.85394, "b": 323.88272, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "ID of the function.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8, "t": 334.51801, "r": 198.6693, "b": 342.84302, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USER_NAME", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.74129999999997, "t": 334.51801, "r": 275.92349, "b": 342.84302, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(10)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.38208, "t": 334.51801, "r": 515.05359, "b": 353.88333, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Name of the user profile that has a usage setting for this function.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.79999, "t": 364.51862, "r": 173.98318, "b": 372.84363, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USAGE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.77367999999998, "t": 364.51862, "r": 270.97977, "b": 372.84363, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(7)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.41626, "t": 364.51862, "r": 539.10712, "b": 394.86395, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Usage setting: GLYPH ALLOWED: The user profile is allowed to use the function. GLYPH DENIED: The user profile is not allowed to use the function.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8, "t": 405.55865, "r": 196.2249, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USER_TYPE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.75211, "t": 405.55865, "r": 270.99872, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(5)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.43161, "t": 405.55865, "r": 448.11963000000003, "b": 435.84369, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Type of user profile: GLYPH USER: The user profile is a user. GLYPH GROUP: The user profile is a group.", "column_header": false, "row_header": false, "row_section": false}]}], "headers": [{"label": "page_footer", "id": 0, "page_no": 25, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.4488525390625, "t": 754.418701171875, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9166076183319092, "cells": [{"id": 0, "text": "10 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "10"}, {"label": "page_footer", "id": 1, "page_no": 25, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.35774993896484, "t": 754.6892700195312, "r": 334.42142, "b": 763.9585571289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9529878497123718, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 26, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 2. Roles and separation of duties ", "bbox": {"l": 355.32001, "t": 755.538002, "r": 523.54071, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "11", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "For example, assume that a business has assigned the duty to manage security on IBM i to ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 542.69434, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Theresa. Before release IBM i 7.2, to grant privileges, Theresa had to have the same ", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 513.67804, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "privileges Theresa was granting to others. Therefore, to grant *USE privileges to the ", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 509.71902, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "PAYROLL table, Theresa had to have *OBJMGT and *USE authority (or a higher level of ", "bbox": {"l": 136.79959, "t": 107.50847999999996, "r": 528.20184, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "authority, such as *ALLOBJ). This requirement allowed Theresa to access the data in the ", "bbox": {"l": 136.79959, "t": 119.50829999999996, "r": 531.84015, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "PAYROLL table even though Theresa\u2019s job description was only to manage its security.", "bbox": {"l": 136.79959, "t": 131.50811999999996, "r": 519.24982, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "In IBM i 7.2, the QIBM_DB_SECADM function usage grants authorities, revokes authorities, ", "bbox": {"l": 136.79959, "t": 153.52770999999996, "r": 544.16064, "b": 162.74072, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "changes ownership, or changes the primary group without giving access to the object or, in ", "bbox": {"l": 136.79959, "t": 165.52752999999996, "r": 540.66156, "b": 174.74054, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "the case of a database table, to the data that is in the table or allowing other operations on the ", "bbox": {"l": 136.79959, "t": 177.52733999999998, "r": 547.30396, "b": 186.74036, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "table. ", "bbox": {"l": 136.79959, "t": 189.52715999999998, "r": 163.6189, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "QIBM_DB_SECADM function usage can be granted only by a user with *SECADM special ", "bbox": {"l": 136.79959, "t": 211.48694, "r": 538.65076, "b": 220.69994999999994, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "authority and can be given to a user or a group.", "bbox": {"l": 136.79959, "t": 223.48676, "r": 346.34808, "b": 232.69976999999994, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "QIBM_DB_SECADM also is responsible for administering RCAC, which restricts which rows ", "bbox": {"l": 136.79959, "t": 245.50635, "r": 545.79602, "b": 254.71936000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "a user is allowed to access in a table and whether a user is allowed to see information in ", "bbox": {"l": 136.79959, "t": 257.50616, "r": 529.46149, "b": 266.71918000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "certain columns of a table.", "bbox": {"l": 136.79959, "t": 269.50598, "r": 253.47696999999997, "b": 278.71898999999996, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "A preferred practice is that the RCAC administrator has the QIBM_DB_SECADM function ", "bbox": {"l": 136.79959, "t": 291.52557, "r": 533.78137, "b": 300.73856, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "usage ID, but absolutely no other data privileges. The result is that the RCAC administrator ", "bbox": {"l": 136.79959, "t": 303.52539, "r": 539.80713, "b": 312.73837000000003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "can deploy and maintain the RCAC constructs, but cannot grant themselves unauthorized ", "bbox": {"l": 136.79959, "t": 315.52521, "r": 534.5741, "b": 324.73819, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "access to data itself.", "bbox": {"l": 136.79959, "t": 327.52502, "r": 227.02324, "b": 336.73801, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Table 2-2 shows a comparison of the different function usage IDs and *JOBCTL authority to ", "bbox": {"l": 136.79959, "t": 349.48483, "r": 543.06714, "b": 358.69780999999995, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "the different CL commands and DB2 for i tools.", "bbox": {"l": 136.79959, "t": 361.48465, "r": 343.79236, "b": 370.69763000000006, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Table 2-2 Comparison of the different function usage IDs and *JOBCTL authority", "bbox": {"l": 64.800003, "t": 383.5379899999999, "r": 391.75464, "b": 391.86301, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "User action", "bbox": {"l": 70.800301, "t": 400.51827999999995, "r": 119.78551, "b": 408.84329, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "*JOBCTL", "bbox": {"l": 424.93805, "t": 447.52255, "r": 433.26297000000005, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "QIBM_DB_SECADM", "bbox": {"l": 450.13806, "t": 401.6000700000001, "r": 458.46298, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "QIBM_DB_SQLADM", "bbox": {"l": 475.93835000000007, "t": 401.53442, "r": 484.26327999999995, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "QIBM_DB_SYSMON", "bbox": {"l": 501.13837, "t": 401.6145, "r": 509.46329, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "No Authority", "bbox": {"l": 526.39862, "t": 432.79944, "r": 534.72357, "b": 487.02005, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "SET CURRENT DEGREE", "bbox": {"l": 70.800003, "t": 498.69299, "r": 151.6794, "b": 506.66699, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " (SQL statement)", "bbox": {"l": 151.6803, "t": 498.55798, "r": 220.15681000000004, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "X", "bbox": {"l": 429.0, "t": 498.55798, "r": 435.00299000000007, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "X", "bbox": {"l": 480.00031, "t": 498.55798, "r": 486.0033, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "CHGQRYA", "bbox": {"l": 70.800018, "t": 517.65329, "r": 102.23972, "b": 525.62729, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": " command targeting a different user\u2019s job", "bbox": {"l": 102.23972, "t": 517.51828, "r": 264.5538, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "X", "bbox": {"l": 429.00003, "t": 517.51828, "r": 435.00302000000005, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "X", "bbox": {"l": 480.00034, "t": 517.51828, "r": 486.00333, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "STRDBMON", "bbox": {"l": 70.800049, "t": 536.67299, "r": 106.73975, "b": 544.64699, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": " or ", "bbox": {"l": 106.73975, "t": 536.5379800000001, "r": 119.77895, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ENDDBMON", "bbox": {"l": 119.69975000000001, "t": 536.67299, "r": 155.69974, "b": 544.64699, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": " commands targeting a different user\u2019s job", "bbox": {"l": 155.69974, "t": 536.5379800000001, "r": 322.50574, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "X", "bbox": {"l": 429.00003, "t": 536.5379800000001, "r": 435.00302000000005, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "X", "bbox": {"l": 480.00034, "t": 536.5379800000001, "r": 486.00333, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "STRDBMON", "bbox": {"l": 70.800049, "t": 555.69269, "r": 106.73975, "b": 563.66669, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": " or ", "bbox": {"l": 106.73975, "t": 555.55768, "r": 119.77895, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "ENDDBMON", "bbox": {"l": 119.69975000000001, "t": 555.69269, "r": 155.69974, "b": 563.66669, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": " commands targeting a job that matches the current user", "bbox": {"l": 155.69974, "t": 555.55768, "r": 381.02185, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "X", "bbox": {"l": 429.00003, "t": 555.55768, "r": 435.00302000000005, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "X", "bbox": {"l": 480.00034, "t": 555.55768, "r": 486.00333, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "X", "bbox": {"l": 505.26061999999996, "t": 555.55768, "r": 511.26361, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "X", "bbox": {"l": 530.76031, "t": 555.55768, "r": 536.76331, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "QUSRJOBI() API format 900 or System i Navigator\u2019s SQL Details for Job", "bbox": {"l": 70.800049, "t": 574.51797, "r": 359.51736, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "X", "bbox": {"l": 429.0000600000001, "t": 574.51797, "r": 435.00305000000003, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "X", "bbox": {"l": 480.00037, "t": 574.51797, "r": 486.00335999999993, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "X", "bbox": {"l": 505.2606799999999, "t": 574.51797, "r": 511.26367, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "Visual Explain within Run SQL scripts", "bbox": {"l": 70.800079, "t": 593.5376699999999, "r": 220.75178999999997, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "X", "bbox": {"l": 429.0000600000001, "t": 593.5376699999999, "r": 435.00305000000003, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "X", "bbox": {"l": 480.00037, "t": 593.5376699999999, "r": 486.00335999999993, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "X", "bbox": {"l": 505.2606799999999, "t": 593.5376699999999, "r": 511.26367, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "X", "bbox": {"l": 530.76038, "t": 593.5376699999999, "r": 536.76337, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Visual Explain outside of Run SQL scripts", "bbox": {"l": 70.800079, "t": 612.55737, "r": 236.6548, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "X", "bbox": {"l": 429.0000600000001, "t": 612.55737, "r": 435.00305000000003, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "X", "bbox": {"l": 480.00037, "t": 612.55737, "r": 486.00335999999993, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "ANALYZE PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 631.51767, "r": 213.12968, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "X", "bbox": {"l": 429.0000600000001, "t": 631.51767, "r": 435.00305000000003, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "X", "bbox": {"l": 480.00037, "t": 631.51767, "r": 486.00335999999993, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "DUMP PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 650.53737, "r": 199.87808, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "X", "bbox": {"l": 429.0000600000001, "t": 650.53737, "r": 435.00305000000003, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "X", "bbox": {"l": 480.00037, "t": 650.53737, "r": 486.00335999999993, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "MODIFY PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 669.55708, "r": 208.36777, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "X", "bbox": {"l": 429.0000600000001, "t": 669.55708, "r": 435.00305000000003, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "X", "bbox": {"l": 480.00037, "t": 669.55708, "r": 486.00335999999993, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "MODIFY PLAN CACHE PROPERTIES procedure (currently does not check authority)", "bbox": {"l": 70.800079, "t": 688.57677, "r": 411.20264, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "X", "bbox": {"l": 429.0000600000001, "t": 688.57677, "r": 435.00305000000003, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "X", "bbox": {"l": 480.00037, "t": 688.57677, "r": 486.00335999999993, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "CHANGE PLAN CACHE SIZE procedure (currently does not check authority)", "bbox": {"l": 70.800079, "t": 707.537071, "r": 377.12585, "b": 715.862068, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "X", "bbox": {"l": 429.0000600000001, "t": 707.537071, "r": 435.00305000000003, "b": 715.862068, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "X", "bbox": {"l": 480.00037, "t": 707.537071, "r": 486.00335999999993, "b": 715.862068, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 354.4815673828125, "t": 754.9415893554688, "r": 523.54071, "b": 764.1055297851562, "coord_origin": "TOPLEFT"}, "confidence": 0.9508126378059387, "cells": [{"id": 0, "text": "Chapter 2. Roles and separation of duties ", "bbox": {"l": 355.32001, "t": 755.538002, "r": 523.54071, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 536.0808715820312, "t": 754.2325439453125, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8987302780151367, "cells": [{"id": 1, "text": "11", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.92747497558594, "t": 70.65541076660156, "r": 542.69434, "b": 141.03610229492188, "coord_origin": "TOPLEFT"}, "confidence": 0.9789126515388489, "cells": [{"id": 2, "text": "For example, assume that a business has assigned the duty to manage security on IBM i to ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 542.69434, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Theresa. Before release IBM i 7.2, to grant privileges, Theresa had to have the same ", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 513.67804, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "privileges Theresa was granting to others. Therefore, to grant *USE privileges to the ", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 509.71902, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "PAYROLL table, Theresa had to have *OBJMGT and *USE authority (or a higher level of ", "bbox": {"l": 136.79959, "t": 107.50847999999996, "r": 528.20184, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "authority, such as *ALLOBJ). This requirement allowed Theresa to access the data in the ", "bbox": {"l": 136.79959, "t": 119.50829999999996, "r": 531.84015, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "PAYROLL table even though Theresa\u2019s job description was only to manage its security.", "bbox": {"l": 136.79959, "t": 131.50811999999996, "r": 519.24982, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 136.04833984375, "t": 152.51307678222656, "r": 547.30396, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9665539860725403, "cells": [{"id": 8, "text": "In IBM i 7.2, the QIBM_DB_SECADM function usage grants authorities, revokes authorities, ", "bbox": {"l": 136.79959, "t": 153.52770999999996, "r": 544.16064, "b": 162.74072, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "changes ownership, or changes the primary group without giving access to the object or, in ", "bbox": {"l": 136.79959, "t": 165.52752999999996, "r": 540.66156, "b": 174.74054, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "the case of a database table, to the data that is in the table or allowing other operations on the ", "bbox": {"l": 136.79959, "t": 177.52733999999998, "r": 547.30396, "b": 186.74036, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "table. ", "bbox": {"l": 136.79959, "t": 189.52715999999998, "r": 163.6189, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 136.00685119628906, "t": 210.41148376464844, "r": 538.65076, "b": 233.08047485351562, "coord_origin": "TOPLEFT"}, "confidence": 0.9691813588142395, "cells": [{"id": 12, "text": "QIBM_DB_SECADM function usage can be granted only by a user with *SECADM special ", "bbox": {"l": 136.79959, "t": 211.48694, "r": 538.65076, "b": 220.69994999999994, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "authority and can be given to a user or a group.", "bbox": {"l": 136.79959, "t": 223.48676, "r": 346.34808, "b": 232.69976999999994, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.68702697753906, "t": 244.5381622314453, "r": 545.79602, "b": 278.71898999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.9729602932929993, "cells": [{"id": 14, "text": "QIBM_DB_SECADM also is responsible for administering RCAC, which restricts which rows ", "bbox": {"l": 136.79959, "t": 245.50635, "r": 545.79602, "b": 254.71936000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "a user is allowed to access in a table and whether a user is allowed to see information in ", "bbox": {"l": 136.79959, "t": 257.50616, "r": 529.46149, "b": 266.71918000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "certain columns of a table.", "bbox": {"l": 136.79959, "t": 269.50598, "r": 253.47696999999997, "b": 278.71898999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 135.86065673828125, "t": 290.6051330566406, "r": 539.80713, "b": 336.73801, "coord_origin": "TOPLEFT"}, "confidence": 0.9815152883529663, "cells": [{"id": 17, "text": "A preferred practice is that the RCAC administrator has the QIBM_DB_SECADM function ", "bbox": {"l": 136.79959, "t": 291.52557, "r": 533.78137, "b": 300.73856, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "usage ID, but absolutely no other data privileges. The result is that the RCAC administrator ", "bbox": {"l": 136.79959, "t": 303.52539, "r": 539.80713, "b": 312.73837000000003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "can deploy and maintain the RCAC constructs, but cannot grant themselves unauthorized ", "bbox": {"l": 136.79959, "t": 315.52521, "r": 534.5741, "b": 324.73819, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "access to data itself.", "bbox": {"l": 136.79959, "t": 327.52502, "r": 227.02324, "b": 336.73801, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 135.7205352783203, "t": 348.60931396484375, "r": 543.06714, "b": 370.69763000000006, "coord_origin": "TOPLEFT"}, "confidence": 0.9672255516052246, "cells": [{"id": 21, "text": "Table 2-2 shows a comparison of the different function usage IDs and *JOBCTL authority to ", "bbox": {"l": 136.79959, "t": 349.48483, "r": 543.06714, "b": 358.69780999999995, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "the different CL commands and DB2 for i tools.", "bbox": {"l": 136.79959, "t": 361.48465, "r": 343.79236, "b": 370.69763000000006, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "caption", "bbox": {"l": 64.800003, "t": 382.5287170410156, "r": 392.4624328613281, "b": 392.25494384765625, "coord_origin": "TOPLEFT"}, "confidence": 0.933719277381897, "cells": [{"id": 23, "text": "Table 2-2 Comparison of the different function usage IDs and *JOBCTL authority", "bbox": {"l": 64.800003, "t": 383.5379899999999, "r": 391.75464, "b": 391.86301, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "table", "bbox": {"l": 64.41139221191406, "t": 393.6136474609375, "r": 547.3950805664062, "b": 721.60791015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9899571537971497, "cells": [{"id": 24, "text": "User action", "bbox": {"l": 70.800301, "t": 400.51827999999995, "r": 119.78551, "b": 408.84329, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "*JOBCTL", "bbox": {"l": 424.93805, "t": 447.52255, "r": 433.26297000000005, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "QIBM_DB_SECADM", "bbox": {"l": 450.13806, "t": 401.6000700000001, "r": 458.46298, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "QIBM_DB_SQLADM", "bbox": {"l": 475.93835000000007, "t": 401.53442, "r": 484.26327999999995, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "QIBM_DB_SYSMON", "bbox": {"l": 501.13837, "t": 401.6145, "r": 509.46329, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "No Authority", "bbox": {"l": 526.39862, "t": 432.79944, "r": 534.72357, "b": 487.02005, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "SET CURRENT DEGREE", "bbox": {"l": 70.800003, "t": 498.69299, "r": 151.6794, "b": 506.66699, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " (SQL statement)", "bbox": {"l": 151.6803, "t": 498.55798, "r": 220.15681000000004, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "X", "bbox": {"l": 429.0, "t": 498.55798, "r": 435.00299000000007, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "X", "bbox": {"l": 480.00031, "t": 498.55798, "r": 486.0033, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "CHGQRYA", "bbox": {"l": 70.800018, "t": 517.65329, "r": 102.23972, "b": 525.62729, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": " command targeting a different user\u2019s job", "bbox": {"l": 102.23972, "t": 517.51828, "r": 264.5538, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "X", "bbox": {"l": 429.00003, "t": 517.51828, "r": 435.00302000000005, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "X", "bbox": {"l": 480.00034, "t": 517.51828, "r": 486.00333, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "STRDBMON", "bbox": {"l": 70.800049, "t": 536.67299, "r": 106.73975, "b": 544.64699, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": " or ", "bbox": {"l": 106.73975, "t": 536.5379800000001, "r": 119.77895, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ENDDBMON", "bbox": {"l": 119.69975000000001, "t": 536.67299, "r": 155.69974, "b": 544.64699, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": " commands targeting a different user\u2019s job", "bbox": {"l": 155.69974, "t": 536.5379800000001, "r": 322.50574, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "X", "bbox": {"l": 429.00003, "t": 536.5379800000001, "r": 435.00302000000005, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "X", "bbox": {"l": 480.00034, "t": 536.5379800000001, "r": 486.00333, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "STRDBMON", "bbox": {"l": 70.800049, "t": 555.69269, "r": 106.73975, "b": 563.66669, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": " or ", "bbox": {"l": 106.73975, "t": 555.55768, "r": 119.77895, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "ENDDBMON", "bbox": {"l": 119.69975000000001, "t": 555.69269, "r": 155.69974, "b": 563.66669, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": " commands targeting a job that matches the current user", "bbox": {"l": 155.69974, "t": 555.55768, "r": 381.02185, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "X", "bbox": {"l": 429.00003, "t": 555.55768, "r": 435.00302000000005, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "X", "bbox": {"l": 480.00034, "t": 555.55768, "r": 486.00333, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "X", "bbox": {"l": 505.26061999999996, "t": 555.55768, "r": 511.26361, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "X", "bbox": {"l": 530.76031, "t": 555.55768, "r": 536.76331, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "QUSRJOBI() API format 900 or System i Navigator\u2019s SQL Details for Job", "bbox": {"l": 70.800049, "t": 574.51797, "r": 359.51736, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "X", "bbox": {"l": 429.0000600000001, "t": 574.51797, "r": 435.00305000000003, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "X", "bbox": {"l": 480.00037, "t": 574.51797, "r": 486.00335999999993, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "X", "bbox": {"l": 505.2606799999999, "t": 574.51797, "r": 511.26367, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "Visual Explain within Run SQL scripts", "bbox": {"l": 70.800079, "t": 593.5376699999999, "r": 220.75178999999997, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "X", "bbox": {"l": 429.0000600000001, "t": 593.5376699999999, "r": 435.00305000000003, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "X", "bbox": {"l": 480.00037, "t": 593.5376699999999, "r": 486.00335999999993, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "X", "bbox": {"l": 505.2606799999999, "t": 593.5376699999999, "r": 511.26367, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "X", "bbox": {"l": 530.76038, "t": 593.5376699999999, "r": 536.76337, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Visual Explain outside of Run SQL scripts", "bbox": {"l": 70.800079, "t": 612.55737, "r": 236.6548, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "X", "bbox": {"l": 429.0000600000001, "t": 612.55737, "r": 435.00305000000003, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "X", "bbox": {"l": 480.00037, "t": 612.55737, "r": 486.00335999999993, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "ANALYZE PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 631.51767, "r": 213.12968, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "X", "bbox": {"l": 429.0000600000001, "t": 631.51767, "r": 435.00305000000003, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "X", "bbox": {"l": 480.00037, "t": 631.51767, "r": 486.00335999999993, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "DUMP PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 650.53737, "r": 199.87808, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "X", "bbox": {"l": 429.0000600000001, "t": 650.53737, "r": 435.00305000000003, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "X", "bbox": {"l": 480.00037, "t": 650.53737, "r": 486.00335999999993, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "MODIFY PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 669.55708, "r": 208.36777, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "X", "bbox": {"l": 429.0000600000001, "t": 669.55708, "r": 435.00305000000003, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "X", "bbox": {"l": 480.00037, "t": 669.55708, "r": 486.00335999999993, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "MODIFY PLAN CACHE PROPERTIES procedure (currently does not check authority)", "bbox": {"l": 70.800079, "t": 688.57677, "r": 411.20264, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "X", "bbox": {"l": 429.0000600000001, "t": 688.57677, "r": 435.00305000000003, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "X", "bbox": {"l": 480.00037, "t": 688.57677, "r": 486.00335999999993, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "CHANGE PLAN CACHE SIZE procedure (currently does not check authority)", "bbox": {"l": 70.800079, "t": 707.537071, "r": 377.12585, "b": 715.862068, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "X", "bbox": {"l": 429.0000600000001, "t": 707.537071, "r": 435.00305000000003, "b": 715.862068, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "X", "bbox": {"l": 480.00037, "t": 707.537071, "r": 486.00335999999993, "b": 715.862068, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {"9": {"label": "table", "id": 9, "page_no": 26, "cluster": {"id": 9, "label": "table", "bbox": {"l": 64.41139221191406, "t": 393.6136474609375, "r": 547.3950805664062, "b": 721.60791015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9899571537971497, "cells": [{"id": 24, "text": "User action", "bbox": {"l": 70.800301, "t": 400.51827999999995, "r": 119.78551, "b": 408.84329, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "*JOBCTL", "bbox": {"l": 424.93805, "t": 447.52255, "r": 433.26297000000005, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "QIBM_DB_SECADM", "bbox": {"l": 450.13806, "t": 401.6000700000001, "r": 458.46298, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "QIBM_DB_SQLADM", "bbox": {"l": 475.93835000000007, "t": 401.53442, "r": 484.26327999999995, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "QIBM_DB_SYSMON", "bbox": {"l": 501.13837, "t": 401.6145, "r": 509.46329, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "No Authority", "bbox": {"l": 526.39862, "t": 432.79944, "r": 534.72357, "b": 487.02005, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "SET CURRENT DEGREE", "bbox": {"l": 70.800003, "t": 498.69299, "r": 151.6794, "b": 506.66699, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " (SQL statement)", "bbox": {"l": 151.6803, "t": 498.55798, "r": 220.15681000000004, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "X", "bbox": {"l": 429.0, "t": 498.55798, "r": 435.00299000000007, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "X", "bbox": {"l": 480.00031, "t": 498.55798, "r": 486.0033, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "CHGQRYA", "bbox": {"l": 70.800018, "t": 517.65329, "r": 102.23972, "b": 525.62729, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": " command targeting a different user\u2019s job", "bbox": {"l": 102.23972, "t": 517.51828, "r": 264.5538, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "X", "bbox": {"l": 429.00003, "t": 517.51828, "r": 435.00302000000005, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "X", "bbox": {"l": 480.00034, "t": 517.51828, "r": 486.00333, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "STRDBMON", "bbox": {"l": 70.800049, "t": 536.67299, "r": 106.73975, "b": 544.64699, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": " or ", "bbox": {"l": 106.73975, "t": 536.5379800000001, "r": 119.77895, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ENDDBMON", "bbox": {"l": 119.69975000000001, "t": 536.67299, "r": 155.69974, "b": 544.64699, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": " commands targeting a different user\u2019s job", "bbox": {"l": 155.69974, "t": 536.5379800000001, "r": 322.50574, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "X", "bbox": {"l": 429.00003, "t": 536.5379800000001, "r": 435.00302000000005, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "X", "bbox": {"l": 480.00034, "t": 536.5379800000001, "r": 486.00333, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "STRDBMON", "bbox": {"l": 70.800049, "t": 555.69269, "r": 106.73975, "b": 563.66669, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": " or ", "bbox": {"l": 106.73975, "t": 555.55768, "r": 119.77895, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "ENDDBMON", "bbox": {"l": 119.69975000000001, "t": 555.69269, "r": 155.69974, "b": 563.66669, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": " commands targeting a job that matches the current user", "bbox": {"l": 155.69974, "t": 555.55768, "r": 381.02185, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "X", "bbox": {"l": 429.00003, "t": 555.55768, "r": 435.00302000000005, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "X", "bbox": {"l": 480.00034, "t": 555.55768, "r": 486.00333, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "X", "bbox": {"l": 505.26061999999996, "t": 555.55768, "r": 511.26361, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "X", "bbox": {"l": 530.76031, "t": 555.55768, "r": 536.76331, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "QUSRJOBI() API format 900 or System i Navigator\u2019s SQL Details for Job", "bbox": {"l": 70.800049, "t": 574.51797, "r": 359.51736, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "X", "bbox": {"l": 429.0000600000001, "t": 574.51797, "r": 435.00305000000003, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "X", "bbox": {"l": 480.00037, "t": 574.51797, "r": 486.00335999999993, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "X", "bbox": {"l": 505.2606799999999, "t": 574.51797, "r": 511.26367, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "Visual Explain within Run SQL scripts", "bbox": {"l": 70.800079, "t": 593.5376699999999, "r": 220.75178999999997, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "X", "bbox": {"l": 429.0000600000001, "t": 593.5376699999999, "r": 435.00305000000003, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "X", "bbox": {"l": 480.00037, "t": 593.5376699999999, "r": 486.00335999999993, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "X", "bbox": {"l": 505.2606799999999, "t": 593.5376699999999, "r": 511.26367, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "X", "bbox": {"l": 530.76038, "t": 593.5376699999999, "r": 536.76337, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Visual Explain outside of Run SQL scripts", "bbox": {"l": 70.800079, "t": 612.55737, "r": 236.6548, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "X", "bbox": {"l": 429.0000600000001, "t": 612.55737, "r": 435.00305000000003, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "X", "bbox": {"l": 480.00037, "t": 612.55737, "r": 486.00335999999993, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "ANALYZE PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 631.51767, "r": 213.12968, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "X", "bbox": {"l": 429.0000600000001, "t": 631.51767, "r": 435.00305000000003, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "X", "bbox": {"l": 480.00037, "t": 631.51767, "r": 486.00335999999993, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "DUMP PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 650.53737, "r": 199.87808, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "X", "bbox": {"l": 429.0000600000001, "t": 650.53737, "r": 435.00305000000003, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "X", "bbox": {"l": 480.00037, "t": 650.53737, "r": 486.00335999999993, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "MODIFY PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 669.55708, "r": 208.36777, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "X", "bbox": {"l": 429.0000600000001, "t": 669.55708, "r": 435.00305000000003, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "X", "bbox": {"l": 480.00037, "t": 669.55708, "r": 486.00335999999993, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "MODIFY PLAN CACHE PROPERTIES procedure (currently does not check authority)", "bbox": {"l": 70.800079, "t": 688.57677, "r": 411.20264, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "X", "bbox": {"l": 429.0000600000001, "t": 688.57677, "r": 435.00305000000003, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "X", "bbox": {"l": 480.00037, "t": 688.57677, "r": 486.00335999999993, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "CHANGE PLAN CACHE SIZE procedure (currently does not check authority)", "bbox": {"l": 70.800079, "t": 707.537071, "r": 377.12585, "b": 715.862068, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "X", "bbox": {"l": 429.0000600000001, "t": 707.537071, "r": 435.00305000000003, "b": 715.862068, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "X", "bbox": {"l": 480.00037, "t": 707.537071, "r": 486.00335999999993, "b": 715.862068, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["rhed", "fcel", "fcel", "fcel", "fcel", "fcel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "fcel", "fcel", "nl", "rhed", "fcel", "ecel", "fcel", "fcel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "fcel", "fcel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl"], "num_rows": 13, "num_cols": 6, "table_cells": [{"bbox": {"l": 70.800301, "t": 400.51827999999995, "r": 119.78551, "b": 408.84329, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "User action", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 424.93805, "t": 447.52255, "r": 433.26297000000005, "b": 487.01999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "*JOBCTL", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 450.13806, "t": 401.6000700000001, "r": 458.46298, "b": 487.01999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "QIBM_DB_SECADM", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 475.93835000000007, "t": 401.53442, "r": 484.26327999999995, "b": 487.01999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "QIBM_DB_SQLADM", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 501.13837, "t": 401.6145, "r": 509.46329, "b": 487.01999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "QIBM_DB_SYSMON", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 526.39862, "t": 432.79944, "r": 534.72357, "b": 487.02005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "No Authority", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800003, "t": 498.55798, "r": 220.15681000000004, "b": 506.883, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "SET CURRENT DEGREE (SQL statement)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0, "t": 498.55798, "r": 435.00299000000007, "b": 506.883, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00031, "t": 498.55798, "r": 486.0033, "b": 506.883, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 517.51828, "r": 264.5538, "b": 525.84329, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CHGQRYA command targeting a different user\u2019s job", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00003, "t": 517.51828, "r": 435.00302000000005, "b": 525.84329, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00034, "t": 517.51828, "r": 486.00333, "b": 525.84329, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800049, "t": 536.5379800000001, "r": 322.50574, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "STRDBMON or ENDDBMON commands targeting a different user\u2019s job", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00003, "t": 536.5379800000001, "r": 435.00302000000005, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00034, "t": 536.5379800000001, "r": 486.00333, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800049, "t": 555.55768, "r": 381.02185, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "STRDBMON or ENDDBMON commands targeting a job that matches the current user", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00003, "t": 555.55768, "r": 435.00302000000005, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00034, "t": 555.55768, "r": 486.00333, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 505.26061999999996, "t": 555.55768, "r": 511.26361, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.76031, "t": 555.55768, "r": 536.76331, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800049, "t": 574.51797, "r": 359.51736, "b": 582.84299, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "QUSRJOBI() API format 900 or System i Navigator\u2019s SQL Details for Job", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 574.51797, "r": 435.00305000000003, "b": 582.84299, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 574.51797, "r": 486.00335999999993, "b": 582.84299, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 505.2606799999999, "t": 574.51797, "r": 511.26367, "b": 582.84299, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 593.5376699999999, "r": 220.75178999999997, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Visual Explain within Run SQL scripts", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 593.5376699999999, "r": 435.00305000000003, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 593.5376699999999, "r": 486.00335999999993, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 505.2606799999999, "t": 593.5376699999999, "r": 511.26367, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.76038, "t": 593.5376699999999, "r": 536.76337, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 612.55737, "r": 236.6548, "b": 620.88239, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Visual Explain outside of Run SQL scripts", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 612.55737, "r": 435.00305000000003, "b": 620.88239, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 612.55737, "r": 486.00335999999993, "b": 620.88239, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 631.51767, "r": 213.12968, "b": 639.84268, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ANALYZE PLAN CACHE procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 631.51767, "r": 435.00305000000003, "b": 639.84268, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 631.51767, "r": 486.00335999999993, "b": 639.84268, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 650.53737, "r": 199.87808, "b": 658.86238, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "DUMP PLAN CACHE procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 650.53737, "r": 435.00305000000003, "b": 658.86238, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 650.53737, "r": 486.00335999999993, "b": 658.86238, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 669.55708, "r": 208.36777, "b": 677.88207, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "MODIFY PLAN CACHE procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 669.55708, "r": 435.00305000000003, "b": 677.88207, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 669.55708, "r": 486.00335999999993, "b": 677.88207, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 688.57677, "r": 411.20264, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "MODIFY PLAN CACHE PROPERTIES procedure (currently does not check authority)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 688.57677, "r": 435.00305000000003, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 688.57677, "r": 486.00335999999993, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 707.537071, "r": 377.12585, "b": 715.862068, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CHANGE PLAN CACHE SIZE procedure (currently does not check authority)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 707.537071, "r": 435.00305000000003, "b": 715.862068, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 707.537071, "r": 486.00335999999993, "b": 715.862068, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}]}}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 26, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 354.4815673828125, "t": 754.9415893554688, "r": 523.54071, "b": 764.1055297851562, "coord_origin": "TOPLEFT"}, "confidence": 0.9508126378059387, "cells": [{"id": 0, "text": "Chapter 2. Roles and separation of duties ", "bbox": {"l": 355.32001, "t": 755.538002, "r": 523.54071, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 2. Roles and separation of duties"}, {"label": "page_footer", "id": 1, "page_no": 26, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 536.0808715820312, "t": 754.2325439453125, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8987302780151367, "cells": [{"id": 1, "text": "11", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "11"}, {"label": "text", "id": 2, "page_no": 26, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.92747497558594, "t": 70.65541076660156, "r": 542.69434, "b": 141.03610229492188, "coord_origin": "TOPLEFT"}, "confidence": 0.9789126515388489, "cells": [{"id": 2, "text": "For example, assume that a business has assigned the duty to manage security on IBM i to ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 542.69434, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Theresa. Before release IBM i 7.2, to grant privileges, Theresa had to have the same ", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 513.67804, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "privileges Theresa was granting to others. Therefore, to grant *USE privileges to the ", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 509.71902, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "PAYROLL table, Theresa had to have *OBJMGT and *USE authority (or a higher level of ", "bbox": {"l": 136.79959, "t": 107.50847999999996, "r": 528.20184, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "authority, such as *ALLOBJ). This requirement allowed Theresa to access the data in the ", "bbox": {"l": 136.79959, "t": 119.50829999999996, "r": 531.84015, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "PAYROLL table even though Theresa\u2019s job description was only to manage its security.", "bbox": {"l": 136.79959, "t": 131.50811999999996, "r": 519.24982, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "For example, assume that a business has assigned the duty to manage security on IBM i to Theresa. Before release IBM i 7.2, to grant privileges, Theresa had to have the same privileges Theresa was granting to others. Therefore, to grant *USE privileges to the PAYROLL table, Theresa had to have *OBJMGT and *USE authority (or a higher level of authority, such as *ALLOBJ). This requirement allowed Theresa to access the data in the PAYROLL table even though Theresa\u2019s job description was only to manage its security."}, {"label": "text", "id": 3, "page_no": 26, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.04833984375, "t": 152.51307678222656, "r": 547.30396, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9665539860725403, "cells": [{"id": 8, "text": "In IBM i 7.2, the QIBM_DB_SECADM function usage grants authorities, revokes authorities, ", "bbox": {"l": 136.79959, "t": 153.52770999999996, "r": 544.16064, "b": 162.74072, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "changes ownership, or changes the primary group without giving access to the object or, in ", "bbox": {"l": 136.79959, "t": 165.52752999999996, "r": 540.66156, "b": 174.74054, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "the case of a database table, to the data that is in the table or allowing other operations on the ", "bbox": {"l": 136.79959, "t": 177.52733999999998, "r": 547.30396, "b": 186.74036, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "table. ", "bbox": {"l": 136.79959, "t": 189.52715999999998, "r": 163.6189, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}}]}, "text": "In IBM i 7.2, the QIBM_DB_SECADM function usage grants authorities, revokes authorities, changes ownership, or changes the primary group without giving access to the object or, in the case of a database table, to the data that is in the table or allowing other operations on the table."}, {"label": "text", "id": 4, "page_no": 26, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.00685119628906, "t": 210.41148376464844, "r": 538.65076, "b": 233.08047485351562, "coord_origin": "TOPLEFT"}, "confidence": 0.9691813588142395, "cells": [{"id": 12, "text": "QIBM_DB_SECADM function usage can be granted only by a user with *SECADM special ", "bbox": {"l": 136.79959, "t": 211.48694, "r": 538.65076, "b": 220.69994999999994, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "authority and can be given to a user or a group.", "bbox": {"l": 136.79959, "t": 223.48676, "r": 346.34808, "b": 232.69976999999994, "coord_origin": "TOPLEFT"}}]}, "text": "QIBM_DB_SECADM function usage can be granted only by a user with *SECADM special authority and can be given to a user or a group."}, {"label": "text", "id": 5, "page_no": 26, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.68702697753906, "t": 244.5381622314453, "r": 545.79602, "b": 278.71898999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.9729602932929993, "cells": [{"id": 14, "text": "QIBM_DB_SECADM also is responsible for administering RCAC, which restricts which rows ", "bbox": {"l": 136.79959, "t": 245.50635, "r": 545.79602, "b": 254.71936000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "a user is allowed to access in a table and whether a user is allowed to see information in ", "bbox": {"l": 136.79959, "t": 257.50616, "r": 529.46149, "b": 266.71918000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "certain columns of a table.", "bbox": {"l": 136.79959, "t": 269.50598, "r": 253.47696999999997, "b": 278.71898999999996, "coord_origin": "TOPLEFT"}}]}, "text": "QIBM_DB_SECADM also is responsible for administering RCAC, which restricts which rows a user is allowed to access in a table and whether a user is allowed to see information in certain columns of a table."}, {"label": "text", "id": 6, "page_no": 26, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.86065673828125, "t": 290.6051330566406, "r": 539.80713, "b": 336.73801, "coord_origin": "TOPLEFT"}, "confidence": 0.9815152883529663, "cells": [{"id": 17, "text": "A preferred practice is that the RCAC administrator has the QIBM_DB_SECADM function ", "bbox": {"l": 136.79959, "t": 291.52557, "r": 533.78137, "b": 300.73856, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "usage ID, but absolutely no other data privileges. The result is that the RCAC administrator ", "bbox": {"l": 136.79959, "t": 303.52539, "r": 539.80713, "b": 312.73837000000003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "can deploy and maintain the RCAC constructs, but cannot grant themselves unauthorized ", "bbox": {"l": 136.79959, "t": 315.52521, "r": 534.5741, "b": 324.73819, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "access to data itself.", "bbox": {"l": 136.79959, "t": 327.52502, "r": 227.02324, "b": 336.73801, "coord_origin": "TOPLEFT"}}]}, "text": "A preferred practice is that the RCAC administrator has the QIBM_DB_SECADM function usage ID, but absolutely no other data privileges. The result is that the RCAC administrator can deploy and maintain the RCAC constructs, but cannot grant themselves unauthorized access to data itself."}, {"label": "text", "id": 7, "page_no": 26, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.7205352783203, "t": 348.60931396484375, "r": 543.06714, "b": 370.69763000000006, "coord_origin": "TOPLEFT"}, "confidence": 0.9672255516052246, "cells": [{"id": 21, "text": "Table 2-2 shows a comparison of the different function usage IDs and *JOBCTL authority to ", "bbox": {"l": 136.79959, "t": 349.48483, "r": 543.06714, "b": 358.69780999999995, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "the different CL commands and DB2 for i tools.", "bbox": {"l": 136.79959, "t": 361.48465, "r": 343.79236, "b": 370.69763000000006, "coord_origin": "TOPLEFT"}}]}, "text": "Table 2-2 shows a comparison of the different function usage IDs and *JOBCTL authority to the different CL commands and DB2 for i tools."}, {"label": "caption", "id": 8, "page_no": 26, "cluster": {"id": 8, "label": "caption", "bbox": {"l": 64.800003, "t": 382.5287170410156, "r": 392.4624328613281, "b": 392.25494384765625, "coord_origin": "TOPLEFT"}, "confidence": 0.933719277381897, "cells": [{"id": 23, "text": "Table 2-2 Comparison of the different function usage IDs and *JOBCTL authority", "bbox": {"l": 64.800003, "t": 383.5379899999999, "r": 391.75464, "b": 391.86301, "coord_origin": "TOPLEFT"}}]}, "text": "Table 2-2 Comparison of the different function usage IDs and *JOBCTL authority"}, {"label": "table", "id": 9, "page_no": 26, "cluster": {"id": 9, "label": "table", "bbox": {"l": 64.41139221191406, "t": 393.6136474609375, "r": 547.3950805664062, "b": 721.60791015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9899571537971497, "cells": [{"id": 24, "text": "User action", "bbox": {"l": 70.800301, "t": 400.51827999999995, "r": 119.78551, "b": 408.84329, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "*JOBCTL", "bbox": {"l": 424.93805, "t": 447.52255, "r": 433.26297000000005, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "QIBM_DB_SECADM", "bbox": {"l": 450.13806, "t": 401.6000700000001, "r": 458.46298, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "QIBM_DB_SQLADM", "bbox": {"l": 475.93835000000007, "t": 401.53442, "r": 484.26327999999995, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "QIBM_DB_SYSMON", "bbox": {"l": 501.13837, "t": 401.6145, "r": 509.46329, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "No Authority", "bbox": {"l": 526.39862, "t": 432.79944, "r": 534.72357, "b": 487.02005, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "SET CURRENT DEGREE", "bbox": {"l": 70.800003, "t": 498.69299, "r": 151.6794, "b": 506.66699, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " (SQL statement)", "bbox": {"l": 151.6803, "t": 498.55798, "r": 220.15681000000004, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "X", "bbox": {"l": 429.0, "t": 498.55798, "r": 435.00299000000007, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "X", "bbox": {"l": 480.00031, "t": 498.55798, "r": 486.0033, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "CHGQRYA", "bbox": {"l": 70.800018, "t": 517.65329, "r": 102.23972, "b": 525.62729, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": " command targeting a different user\u2019s job", "bbox": {"l": 102.23972, "t": 517.51828, "r": 264.5538, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "X", "bbox": {"l": 429.00003, "t": 517.51828, "r": 435.00302000000005, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "X", "bbox": {"l": 480.00034, "t": 517.51828, "r": 486.00333, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "STRDBMON", "bbox": {"l": 70.800049, "t": 536.67299, "r": 106.73975, "b": 544.64699, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": " or ", "bbox": {"l": 106.73975, "t": 536.5379800000001, "r": 119.77895, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ENDDBMON", "bbox": {"l": 119.69975000000001, "t": 536.67299, "r": 155.69974, "b": 544.64699, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": " commands targeting a different user\u2019s job", "bbox": {"l": 155.69974, "t": 536.5379800000001, "r": 322.50574, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "X", "bbox": {"l": 429.00003, "t": 536.5379800000001, "r": 435.00302000000005, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "X", "bbox": {"l": 480.00034, "t": 536.5379800000001, "r": 486.00333, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "STRDBMON", "bbox": {"l": 70.800049, "t": 555.69269, "r": 106.73975, "b": 563.66669, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": " or ", "bbox": {"l": 106.73975, "t": 555.55768, "r": 119.77895, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "ENDDBMON", "bbox": {"l": 119.69975000000001, "t": 555.69269, "r": 155.69974, "b": 563.66669, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": " commands targeting a job that matches the current user", "bbox": {"l": 155.69974, "t": 555.55768, "r": 381.02185, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "X", "bbox": {"l": 429.00003, "t": 555.55768, "r": 435.00302000000005, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "X", "bbox": {"l": 480.00034, "t": 555.55768, "r": 486.00333, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "X", "bbox": {"l": 505.26061999999996, "t": 555.55768, "r": 511.26361, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "X", "bbox": {"l": 530.76031, "t": 555.55768, "r": 536.76331, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "QUSRJOBI() API format 900 or System i Navigator\u2019s SQL Details for Job", "bbox": {"l": 70.800049, "t": 574.51797, "r": 359.51736, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "X", "bbox": {"l": 429.0000600000001, "t": 574.51797, "r": 435.00305000000003, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "X", "bbox": {"l": 480.00037, "t": 574.51797, "r": 486.00335999999993, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "X", "bbox": {"l": 505.2606799999999, "t": 574.51797, "r": 511.26367, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "Visual Explain within Run SQL scripts", "bbox": {"l": 70.800079, "t": 593.5376699999999, "r": 220.75178999999997, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "X", "bbox": {"l": 429.0000600000001, "t": 593.5376699999999, "r": 435.00305000000003, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "X", "bbox": {"l": 480.00037, "t": 593.5376699999999, "r": 486.00335999999993, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "X", "bbox": {"l": 505.2606799999999, "t": 593.5376699999999, "r": 511.26367, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "X", "bbox": {"l": 530.76038, "t": 593.5376699999999, "r": 536.76337, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Visual Explain outside of Run SQL scripts", "bbox": {"l": 70.800079, "t": 612.55737, "r": 236.6548, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "X", "bbox": {"l": 429.0000600000001, "t": 612.55737, "r": 435.00305000000003, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "X", "bbox": {"l": 480.00037, "t": 612.55737, "r": 486.00335999999993, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "ANALYZE PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 631.51767, "r": 213.12968, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "X", "bbox": {"l": 429.0000600000001, "t": 631.51767, "r": 435.00305000000003, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "X", "bbox": {"l": 480.00037, "t": 631.51767, "r": 486.00335999999993, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "DUMP PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 650.53737, "r": 199.87808, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "X", "bbox": {"l": 429.0000600000001, "t": 650.53737, "r": 435.00305000000003, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "X", "bbox": {"l": 480.00037, "t": 650.53737, "r": 486.00335999999993, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "MODIFY PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 669.55708, "r": 208.36777, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "X", "bbox": {"l": 429.0000600000001, "t": 669.55708, "r": 435.00305000000003, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "X", "bbox": {"l": 480.00037, "t": 669.55708, "r": 486.00335999999993, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "MODIFY PLAN CACHE PROPERTIES procedure (currently does not check authority)", "bbox": {"l": 70.800079, "t": 688.57677, "r": 411.20264, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "X", "bbox": {"l": 429.0000600000001, "t": 688.57677, "r": 435.00305000000003, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "X", "bbox": {"l": 480.00037, "t": 688.57677, "r": 486.00335999999993, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "CHANGE PLAN CACHE SIZE procedure (currently does not check authority)", "bbox": {"l": 70.800079, "t": 707.537071, "r": 377.12585, "b": 715.862068, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "X", "bbox": {"l": 429.0000600000001, "t": 707.537071, "r": 435.00305000000003, "b": 715.862068, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "X", "bbox": {"l": 480.00037, "t": 707.537071, "r": 486.00335999999993, "b": 715.862068, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["rhed", "fcel", "fcel", "fcel", "fcel", "fcel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "fcel", "fcel", "nl", "rhed", "fcel", "ecel", "fcel", "fcel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "fcel", "fcel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl"], "num_rows": 13, "num_cols": 6, "table_cells": [{"bbox": {"l": 70.800301, "t": 400.51827999999995, "r": 119.78551, "b": 408.84329, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "User action", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 424.93805, "t": 447.52255, "r": 433.26297000000005, "b": 487.01999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "*JOBCTL", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 450.13806, "t": 401.6000700000001, "r": 458.46298, "b": 487.01999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "QIBM_DB_SECADM", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 475.93835000000007, "t": 401.53442, "r": 484.26327999999995, "b": 487.01999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "QIBM_DB_SQLADM", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 501.13837, "t": 401.6145, "r": 509.46329, "b": 487.01999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "QIBM_DB_SYSMON", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 526.39862, "t": 432.79944, "r": 534.72357, "b": 487.02005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "No Authority", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800003, "t": 498.55798, "r": 220.15681000000004, "b": 506.883, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "SET CURRENT DEGREE (SQL statement)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0, "t": 498.55798, "r": 435.00299000000007, "b": 506.883, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00031, "t": 498.55798, "r": 486.0033, "b": 506.883, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 517.51828, "r": 264.5538, "b": 525.84329, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CHGQRYA command targeting a different user\u2019s job", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00003, "t": 517.51828, "r": 435.00302000000005, "b": 525.84329, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00034, "t": 517.51828, "r": 486.00333, "b": 525.84329, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800049, "t": 536.5379800000001, "r": 322.50574, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "STRDBMON or ENDDBMON commands targeting a different user\u2019s job", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00003, "t": 536.5379800000001, "r": 435.00302000000005, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00034, "t": 536.5379800000001, "r": 486.00333, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800049, "t": 555.55768, "r": 381.02185, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "STRDBMON or ENDDBMON commands targeting a job that matches the current user", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00003, "t": 555.55768, "r": 435.00302000000005, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00034, "t": 555.55768, "r": 486.00333, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 505.26061999999996, "t": 555.55768, "r": 511.26361, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.76031, "t": 555.55768, "r": 536.76331, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800049, "t": 574.51797, "r": 359.51736, "b": 582.84299, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "QUSRJOBI() API format 900 or System i Navigator\u2019s SQL Details for Job", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 574.51797, "r": 435.00305000000003, "b": 582.84299, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 574.51797, "r": 486.00335999999993, "b": 582.84299, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 505.2606799999999, "t": 574.51797, "r": 511.26367, "b": 582.84299, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 593.5376699999999, "r": 220.75178999999997, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Visual Explain within Run SQL scripts", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 593.5376699999999, "r": 435.00305000000003, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 593.5376699999999, "r": 486.00335999999993, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 505.2606799999999, "t": 593.5376699999999, "r": 511.26367, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.76038, "t": 593.5376699999999, "r": 536.76337, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 612.55737, "r": 236.6548, "b": 620.88239, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Visual Explain outside of Run SQL scripts", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 612.55737, "r": 435.00305000000003, "b": 620.88239, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 612.55737, "r": 486.00335999999993, "b": 620.88239, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 631.51767, "r": 213.12968, "b": 639.84268, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ANALYZE PLAN CACHE procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 631.51767, "r": 435.00305000000003, "b": 639.84268, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 631.51767, "r": 486.00335999999993, "b": 639.84268, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 650.53737, "r": 199.87808, "b": 658.86238, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "DUMP PLAN CACHE procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 650.53737, "r": 435.00305000000003, "b": 658.86238, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 650.53737, "r": 486.00335999999993, "b": 658.86238, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 669.55708, "r": 208.36777, "b": 677.88207, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "MODIFY PLAN CACHE procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 669.55708, "r": 435.00305000000003, "b": 677.88207, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 669.55708, "r": 486.00335999999993, "b": 677.88207, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 688.57677, "r": 411.20264, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "MODIFY PLAN CACHE PROPERTIES procedure (currently does not check authority)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 688.57677, "r": 435.00305000000003, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 688.57677, "r": 486.00335999999993, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 707.537071, "r": 377.12585, "b": 715.862068, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CHANGE PLAN CACHE SIZE procedure (currently does not check authority)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 707.537071, "r": 435.00305000000003, "b": 715.862068, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 707.537071, "r": 486.00335999999993, "b": 715.862068, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}]}], "body": [{"label": "text", "id": 2, "page_no": 26, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.92747497558594, "t": 70.65541076660156, "r": 542.69434, "b": 141.03610229492188, "coord_origin": "TOPLEFT"}, "confidence": 0.9789126515388489, "cells": [{"id": 2, "text": "For example, assume that a business has assigned the duty to manage security on IBM i to ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 542.69434, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Theresa. Before release IBM i 7.2, to grant privileges, Theresa had to have the same ", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 513.67804, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "privileges Theresa was granting to others. Therefore, to grant *USE privileges to the ", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 509.71902, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "PAYROLL table, Theresa had to have *OBJMGT and *USE authority (or a higher level of ", "bbox": {"l": 136.79959, "t": 107.50847999999996, "r": 528.20184, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "authority, such as *ALLOBJ). This requirement allowed Theresa to access the data in the ", "bbox": {"l": 136.79959, "t": 119.50829999999996, "r": 531.84015, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "PAYROLL table even though Theresa\u2019s job description was only to manage its security.", "bbox": {"l": 136.79959, "t": 131.50811999999996, "r": 519.24982, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "For example, assume that a business has assigned the duty to manage security on IBM i to Theresa. Before release IBM i 7.2, to grant privileges, Theresa had to have the same privileges Theresa was granting to others. Therefore, to grant *USE privileges to the PAYROLL table, Theresa had to have *OBJMGT and *USE authority (or a higher level of authority, such as *ALLOBJ). This requirement allowed Theresa to access the data in the PAYROLL table even though Theresa\u2019s job description was only to manage its security."}, {"label": "text", "id": 3, "page_no": 26, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.04833984375, "t": 152.51307678222656, "r": 547.30396, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9665539860725403, "cells": [{"id": 8, "text": "In IBM i 7.2, the QIBM_DB_SECADM function usage grants authorities, revokes authorities, ", "bbox": {"l": 136.79959, "t": 153.52770999999996, "r": 544.16064, "b": 162.74072, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "changes ownership, or changes the primary group without giving access to the object or, in ", "bbox": {"l": 136.79959, "t": 165.52752999999996, "r": 540.66156, "b": 174.74054, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "the case of a database table, to the data that is in the table or allowing other operations on the ", "bbox": {"l": 136.79959, "t": 177.52733999999998, "r": 547.30396, "b": 186.74036, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "table. ", "bbox": {"l": 136.79959, "t": 189.52715999999998, "r": 163.6189, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}}]}, "text": "In IBM i 7.2, the QIBM_DB_SECADM function usage grants authorities, revokes authorities, changes ownership, or changes the primary group without giving access to the object or, in the case of a database table, to the data that is in the table or allowing other operations on the table."}, {"label": "text", "id": 4, "page_no": 26, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.00685119628906, "t": 210.41148376464844, "r": 538.65076, "b": 233.08047485351562, "coord_origin": "TOPLEFT"}, "confidence": 0.9691813588142395, "cells": [{"id": 12, "text": "QIBM_DB_SECADM function usage can be granted only by a user with *SECADM special ", "bbox": {"l": 136.79959, "t": 211.48694, "r": 538.65076, "b": 220.69994999999994, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "authority and can be given to a user or a group.", "bbox": {"l": 136.79959, "t": 223.48676, "r": 346.34808, "b": 232.69976999999994, "coord_origin": "TOPLEFT"}}]}, "text": "QIBM_DB_SECADM function usage can be granted only by a user with *SECADM special authority and can be given to a user or a group."}, {"label": "text", "id": 5, "page_no": 26, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.68702697753906, "t": 244.5381622314453, "r": 545.79602, "b": 278.71898999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.9729602932929993, "cells": [{"id": 14, "text": "QIBM_DB_SECADM also is responsible for administering RCAC, which restricts which rows ", "bbox": {"l": 136.79959, "t": 245.50635, "r": 545.79602, "b": 254.71936000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "a user is allowed to access in a table and whether a user is allowed to see information in ", "bbox": {"l": 136.79959, "t": 257.50616, "r": 529.46149, "b": 266.71918000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "certain columns of a table.", "bbox": {"l": 136.79959, "t": 269.50598, "r": 253.47696999999997, "b": 278.71898999999996, "coord_origin": "TOPLEFT"}}]}, "text": "QIBM_DB_SECADM also is responsible for administering RCAC, which restricts which rows a user is allowed to access in a table and whether a user is allowed to see information in certain columns of a table."}, {"label": "text", "id": 6, "page_no": 26, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.86065673828125, "t": 290.6051330566406, "r": 539.80713, "b": 336.73801, "coord_origin": "TOPLEFT"}, "confidence": 0.9815152883529663, "cells": [{"id": 17, "text": "A preferred practice is that the RCAC administrator has the QIBM_DB_SECADM function ", "bbox": {"l": 136.79959, "t": 291.52557, "r": 533.78137, "b": 300.73856, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "usage ID, but absolutely no other data privileges. The result is that the RCAC administrator ", "bbox": {"l": 136.79959, "t": 303.52539, "r": 539.80713, "b": 312.73837000000003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "can deploy and maintain the RCAC constructs, but cannot grant themselves unauthorized ", "bbox": {"l": 136.79959, "t": 315.52521, "r": 534.5741, "b": 324.73819, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "access to data itself.", "bbox": {"l": 136.79959, "t": 327.52502, "r": 227.02324, "b": 336.73801, "coord_origin": "TOPLEFT"}}]}, "text": "A preferred practice is that the RCAC administrator has the QIBM_DB_SECADM function usage ID, but absolutely no other data privileges. The result is that the RCAC administrator can deploy and maintain the RCAC constructs, but cannot grant themselves unauthorized access to data itself."}, {"label": "text", "id": 7, "page_no": 26, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.7205352783203, "t": 348.60931396484375, "r": 543.06714, "b": 370.69763000000006, "coord_origin": "TOPLEFT"}, "confidence": 0.9672255516052246, "cells": [{"id": 21, "text": "Table 2-2 shows a comparison of the different function usage IDs and *JOBCTL authority to ", "bbox": {"l": 136.79959, "t": 349.48483, "r": 543.06714, "b": 358.69780999999995, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "the different CL commands and DB2 for i tools.", "bbox": {"l": 136.79959, "t": 361.48465, "r": 343.79236, "b": 370.69763000000006, "coord_origin": "TOPLEFT"}}]}, "text": "Table 2-2 shows a comparison of the different function usage IDs and *JOBCTL authority to the different CL commands and DB2 for i tools."}, {"label": "caption", "id": 8, "page_no": 26, "cluster": {"id": 8, "label": "caption", "bbox": {"l": 64.800003, "t": 382.5287170410156, "r": 392.4624328613281, "b": 392.25494384765625, "coord_origin": "TOPLEFT"}, "confidence": 0.933719277381897, "cells": [{"id": 23, "text": "Table 2-2 Comparison of the different function usage IDs and *JOBCTL authority", "bbox": {"l": 64.800003, "t": 383.5379899999999, "r": 391.75464, "b": 391.86301, "coord_origin": "TOPLEFT"}}]}, "text": "Table 2-2 Comparison of the different function usage IDs and *JOBCTL authority"}, {"label": "table", "id": 9, "page_no": 26, "cluster": {"id": 9, "label": "table", "bbox": {"l": 64.41139221191406, "t": 393.6136474609375, "r": 547.3950805664062, "b": 721.60791015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9899571537971497, "cells": [{"id": 24, "text": "User action", "bbox": {"l": 70.800301, "t": 400.51827999999995, "r": 119.78551, "b": 408.84329, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "*JOBCTL", "bbox": {"l": 424.93805, "t": 447.52255, "r": 433.26297000000005, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "QIBM_DB_SECADM", "bbox": {"l": 450.13806, "t": 401.6000700000001, "r": 458.46298, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "QIBM_DB_SQLADM", "bbox": {"l": 475.93835000000007, "t": 401.53442, "r": 484.26327999999995, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "QIBM_DB_SYSMON", "bbox": {"l": 501.13837, "t": 401.6145, "r": 509.46329, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "No Authority", "bbox": {"l": 526.39862, "t": 432.79944, "r": 534.72357, "b": 487.02005, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "SET CURRENT DEGREE", "bbox": {"l": 70.800003, "t": 498.69299, "r": 151.6794, "b": 506.66699, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " (SQL statement)", "bbox": {"l": 151.6803, "t": 498.55798, "r": 220.15681000000004, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "X", "bbox": {"l": 429.0, "t": 498.55798, "r": 435.00299000000007, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "X", "bbox": {"l": 480.00031, "t": 498.55798, "r": 486.0033, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "CHGQRYA", "bbox": {"l": 70.800018, "t": 517.65329, "r": 102.23972, "b": 525.62729, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": " command targeting a different user\u2019s job", "bbox": {"l": 102.23972, "t": 517.51828, "r": 264.5538, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "X", "bbox": {"l": 429.00003, "t": 517.51828, "r": 435.00302000000005, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "X", "bbox": {"l": 480.00034, "t": 517.51828, "r": 486.00333, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "STRDBMON", "bbox": {"l": 70.800049, "t": 536.67299, "r": 106.73975, "b": 544.64699, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": " or ", "bbox": {"l": 106.73975, "t": 536.5379800000001, "r": 119.77895, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ENDDBMON", "bbox": {"l": 119.69975000000001, "t": 536.67299, "r": 155.69974, "b": 544.64699, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": " commands targeting a different user\u2019s job", "bbox": {"l": 155.69974, "t": 536.5379800000001, "r": 322.50574, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "X", "bbox": {"l": 429.00003, "t": 536.5379800000001, "r": 435.00302000000005, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "X", "bbox": {"l": 480.00034, "t": 536.5379800000001, "r": 486.00333, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "STRDBMON", "bbox": {"l": 70.800049, "t": 555.69269, "r": 106.73975, "b": 563.66669, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": " or ", "bbox": {"l": 106.73975, "t": 555.55768, "r": 119.77895, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "ENDDBMON", "bbox": {"l": 119.69975000000001, "t": 555.69269, "r": 155.69974, "b": 563.66669, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": " commands targeting a job that matches the current user", "bbox": {"l": 155.69974, "t": 555.55768, "r": 381.02185, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "X", "bbox": {"l": 429.00003, "t": 555.55768, "r": 435.00302000000005, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "X", "bbox": {"l": 480.00034, "t": 555.55768, "r": 486.00333, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "X", "bbox": {"l": 505.26061999999996, "t": 555.55768, "r": 511.26361, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "X", "bbox": {"l": 530.76031, "t": 555.55768, "r": 536.76331, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "QUSRJOBI() API format 900 or System i Navigator\u2019s SQL Details for Job", "bbox": {"l": 70.800049, "t": 574.51797, "r": 359.51736, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "X", "bbox": {"l": 429.0000600000001, "t": 574.51797, "r": 435.00305000000003, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "X", "bbox": {"l": 480.00037, "t": 574.51797, "r": 486.00335999999993, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "X", "bbox": {"l": 505.2606799999999, "t": 574.51797, "r": 511.26367, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "Visual Explain within Run SQL scripts", "bbox": {"l": 70.800079, "t": 593.5376699999999, "r": 220.75178999999997, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "X", "bbox": {"l": 429.0000600000001, "t": 593.5376699999999, "r": 435.00305000000003, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "X", "bbox": {"l": 480.00037, "t": 593.5376699999999, "r": 486.00335999999993, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "X", "bbox": {"l": 505.2606799999999, "t": 593.5376699999999, "r": 511.26367, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "X", "bbox": {"l": 530.76038, "t": 593.5376699999999, "r": 536.76337, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Visual Explain outside of Run SQL scripts", "bbox": {"l": 70.800079, "t": 612.55737, "r": 236.6548, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "X", "bbox": {"l": 429.0000600000001, "t": 612.55737, "r": 435.00305000000003, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "X", "bbox": {"l": 480.00037, "t": 612.55737, "r": 486.00335999999993, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "ANALYZE PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 631.51767, "r": 213.12968, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "X", "bbox": {"l": 429.0000600000001, "t": 631.51767, "r": 435.00305000000003, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "X", "bbox": {"l": 480.00037, "t": 631.51767, "r": 486.00335999999993, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "DUMP PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 650.53737, "r": 199.87808, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "X", "bbox": {"l": 429.0000600000001, "t": 650.53737, "r": 435.00305000000003, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "X", "bbox": {"l": 480.00037, "t": 650.53737, "r": 486.00335999999993, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "MODIFY PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 669.55708, "r": 208.36777, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "X", "bbox": {"l": 429.0000600000001, "t": 669.55708, "r": 435.00305000000003, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "X", "bbox": {"l": 480.00037, "t": 669.55708, "r": 486.00335999999993, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "MODIFY PLAN CACHE PROPERTIES procedure (currently does not check authority)", "bbox": {"l": 70.800079, "t": 688.57677, "r": 411.20264, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "X", "bbox": {"l": 429.0000600000001, "t": 688.57677, "r": 435.00305000000003, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "X", "bbox": {"l": 480.00037, "t": 688.57677, "r": 486.00335999999993, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "CHANGE PLAN CACHE SIZE procedure (currently does not check authority)", "bbox": {"l": 70.800079, "t": 707.537071, "r": 377.12585, "b": 715.862068, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "X", "bbox": {"l": 429.0000600000001, "t": 707.537071, "r": 435.00305000000003, "b": 715.862068, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "X", "bbox": {"l": 480.00037, "t": 707.537071, "r": 486.00335999999993, "b": 715.862068, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["rhed", "fcel", "fcel", "fcel", "fcel", "fcel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "fcel", "fcel", "nl", "rhed", "fcel", "ecel", "fcel", "fcel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "fcel", "fcel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl"], "num_rows": 13, "num_cols": 6, "table_cells": [{"bbox": {"l": 70.800301, "t": 400.51827999999995, "r": 119.78551, "b": 408.84329, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "User action", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 424.93805, "t": 447.52255, "r": 433.26297000000005, "b": 487.01999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "*JOBCTL", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 450.13806, "t": 401.6000700000001, "r": 458.46298, "b": 487.01999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "QIBM_DB_SECADM", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 475.93835000000007, "t": 401.53442, "r": 484.26327999999995, "b": 487.01999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "QIBM_DB_SQLADM", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 501.13837, "t": 401.6145, "r": 509.46329, "b": 487.01999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "QIBM_DB_SYSMON", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 526.39862, "t": 432.79944, "r": 534.72357, "b": 487.02005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "No Authority", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800003, "t": 498.55798, "r": 220.15681000000004, "b": 506.883, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "SET CURRENT DEGREE (SQL statement)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0, "t": 498.55798, "r": 435.00299000000007, "b": 506.883, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00031, "t": 498.55798, "r": 486.0033, "b": 506.883, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 517.51828, "r": 264.5538, "b": 525.84329, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CHGQRYA command targeting a different user\u2019s job", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00003, "t": 517.51828, "r": 435.00302000000005, "b": 525.84329, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00034, "t": 517.51828, "r": 486.00333, "b": 525.84329, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800049, "t": 536.5379800000001, "r": 322.50574, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "STRDBMON or ENDDBMON commands targeting a different user\u2019s job", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00003, "t": 536.5379800000001, "r": 435.00302000000005, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00034, "t": 536.5379800000001, "r": 486.00333, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800049, "t": 555.55768, "r": 381.02185, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "STRDBMON or ENDDBMON commands targeting a job that matches the current user", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00003, "t": 555.55768, "r": 435.00302000000005, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00034, "t": 555.55768, "r": 486.00333, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 505.26061999999996, "t": 555.55768, "r": 511.26361, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.76031, "t": 555.55768, "r": 536.76331, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800049, "t": 574.51797, "r": 359.51736, "b": 582.84299, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "QUSRJOBI() API format 900 or System i Navigator\u2019s SQL Details for Job", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 574.51797, "r": 435.00305000000003, "b": 582.84299, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 574.51797, "r": 486.00335999999993, "b": 582.84299, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 505.2606799999999, "t": 574.51797, "r": 511.26367, "b": 582.84299, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 593.5376699999999, "r": 220.75178999999997, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Visual Explain within Run SQL scripts", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 593.5376699999999, "r": 435.00305000000003, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 593.5376699999999, "r": 486.00335999999993, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 505.2606799999999, "t": 593.5376699999999, "r": 511.26367, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.76038, "t": 593.5376699999999, "r": 536.76337, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 612.55737, "r": 236.6548, "b": 620.88239, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Visual Explain outside of Run SQL scripts", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 612.55737, "r": 435.00305000000003, "b": 620.88239, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 612.55737, "r": 486.00335999999993, "b": 620.88239, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 631.51767, "r": 213.12968, "b": 639.84268, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ANALYZE PLAN CACHE procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 631.51767, "r": 435.00305000000003, "b": 639.84268, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 631.51767, "r": 486.00335999999993, "b": 639.84268, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 650.53737, "r": 199.87808, "b": 658.86238, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "DUMP PLAN CACHE procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 650.53737, "r": 435.00305000000003, "b": 658.86238, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 650.53737, "r": 486.00335999999993, "b": 658.86238, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 669.55708, "r": 208.36777, "b": 677.88207, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "MODIFY PLAN CACHE procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 669.55708, "r": 435.00305000000003, "b": 677.88207, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 669.55708, "r": 486.00335999999993, "b": 677.88207, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 688.57677, "r": 411.20264, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "MODIFY PLAN CACHE PROPERTIES procedure (currently does not check authority)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 688.57677, "r": 435.00305000000003, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 688.57677, "r": 486.00335999999993, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 707.537071, "r": 377.12585, "b": 715.862068, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CHANGE PLAN CACHE SIZE procedure (currently does not check authority)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 707.537071, "r": 435.00305000000003, "b": 715.862068, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 707.537071, "r": 486.00335999999993, "b": 715.862068, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}]}], "headers": [{"label": "page_footer", "id": 0, "page_no": 26, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 354.4815673828125, "t": 754.9415893554688, "r": 523.54071, "b": 764.1055297851562, "coord_origin": "TOPLEFT"}, "confidence": 0.9508126378059387, "cells": [{"id": 0, "text": "Chapter 2. Roles and separation of duties ", "bbox": {"l": 355.32001, "t": 755.538002, "r": 523.54071, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 2. Roles and separation of duties"}, {"label": "page_footer", "id": 1, "page_no": 26, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 536.0808715820312, "t": 754.2325439453125, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8987302780151367, "cells": [{"id": 1, "text": "11", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "11"}]}}, {"page_no": 27, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "12 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "START PLAN CACHE EVENT MONITOR procedure", "bbox": {"l": 70.800606, "t": 175.5177, "r": 278.58273, "b": 183.84265000000005, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "X", "bbox": {"l": 429.00058000000007, "t": 175.5177, "r": 435.00357, "b": 183.84265000000005, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "X", "bbox": {"l": 480.00088999999997, "t": 175.5177, "r": 486.0038799999999, "b": 183.84265000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "END PLAN CACHE EVENT MONITOR procedure", "bbox": {"l": 70.800598, "t": 194.53741000000002, "r": 269.44949, "b": 202.86237000000006, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "X", "bbox": {"l": 429.00058000000007, "t": 194.53741000000002, "r": 435.00357, "b": 202.86237000000006, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "X", "bbox": {"l": 480.00088999999997, "t": 194.53741000000002, "r": 486.0038799999999, "b": 202.86237000000006, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "END ALL PLAN CACHE EVENT MONITORS procedure", "bbox": {"l": 70.800598, "t": 213.55713000000003, "r": 293.97632, "b": 221.88207999999997, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "X", "bbox": {"l": 429.00058000000007, "t": 213.55713000000003, "r": 435.00357, "b": 221.88207999999997, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "X", "bbox": {"l": 480.00088999999997, "t": 213.55713000000003, "r": 486.0038799999999, "b": 221.88207999999997, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Work with RCAC row permissions (Create, modify, or delete)", "bbox": {"l": 70.800598, "t": 232.51746000000003, "r": 311.22574, "b": 240.84240999999997, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "X", "bbox": {"l": 454.50031, "t": 232.51746000000003, "r": 460.5033, "b": 240.84240999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Work with RCAC column masks (Create, modify, or delete)", "bbox": {"l": 70.800598, "t": 251.53716999999995, "r": 303.58829, "b": 259.86212, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "X", "bbox": {"l": 454.50031, "t": 251.53716999999995, "r": 460.5033, "b": 259.86212, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Change Object Owner (", "bbox": {"l": 70.800598, "t": 270.55688, "r": 165.18898, "b": 278.88184, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "CHGOBJOWN", "bbox": {"l": 165.18091, "t": 270.69183, "r": 205.62061, "b": 278.66583, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ") CL command", "bbox": {"l": 205.62061, "t": 270.55688, "r": 264.57959, "b": 278.88184, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "X", "bbox": {"l": 454.50031, "t": 270.55688, "r": 460.5033, "b": 278.88184, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Change Object Primary Group (", "bbox": {"l": 70.800598, "t": 289.51715, "r": 197.55119, "b": 297.84216, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "CHGOBJPGP", "bbox": {"l": 197.5809, "t": 289.6521599999999, "r": 238.0206, "b": 297.62616, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": ") CL command ", "bbox": {"l": 238.0206, "t": 289.51715, "r": 299.39697, "b": 297.84216, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "X", "bbox": {"l": 454.50031, "t": 289.51715, "r": 460.5033, "b": 297.84216, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Grant Object Authority (", "bbox": {"l": 70.800598, "t": 308.53687, "r": 164.9973, "b": 316.86188, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "GRTOBJAUT", "bbox": {"l": 165.00089, "t": 308.67188, "r": 205.44058, "b": 316.64587, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": ") CL command ", "bbox": {"l": 205.44058, "t": 308.53687, "r": 266.84399, "b": 316.86188, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "X", "bbox": {"l": 454.50027, "t": 308.53687, "r": 460.50327000000004, "b": 316.86188, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Revoke Object Authority (", "bbox": {"l": 70.800568, "t": 327.55658, "r": 172.35025, "b": 335.88159, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "RVKOBJAUT", "bbox": {"l": 172.38086, "t": 327.6915900000001, "r": 212.82056, "b": 335.66559000000007, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ") CL command", "bbox": {"l": 212.82056, "t": 327.55658, "r": 271.78857, "b": 335.88159, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "X", "bbox": {"l": 454.50024, "t": 327.55658, "r": 460.50323, "b": 335.88159, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Edit Object Authority (", "bbox": {"l": 70.800537, "t": 346.51688, "r": 158.12213, "b": 354.84189, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "EDTOBJAUT", "bbox": {"l": 158.10052, "t": 346.65189, "r": 198.60052, "b": 354.62589, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": ") CL command", "bbox": {"l": 198.54022, "t": 346.51688, "r": 257.35434, "b": 354.84189, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "X", "bbox": {"l": 454.50024, "t": 346.51688, "r": 460.50323, "b": 354.84189, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Display Object Authority (", "bbox": {"l": 70.800537, "t": 365.53659, "r": 171.80392, "b": 373.8616, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "DSPOBJAUT", "bbox": {"l": 171.78055, "t": 365.6716, "r": 212.22025, "b": 373.6456, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": ") CL command", "bbox": {"l": 212.22025, "t": 365.53659, "r": 271.18826, "b": 373.8616, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "X", "bbox": {"l": 454.50024, "t": 365.53659, "r": 460.50323, "b": 373.8616, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Work with Objects (", "bbox": {"l": 70.800537, "t": 384.5563, "r": 148.52722, "b": 392.8813200000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "WRKOBJ", "bbox": {"l": 148.56055, "t": 384.69131, "r": 175.50024, "b": 392.66531, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": ") CL command ", "bbox": {"l": 175.50024, "t": 384.5563, "r": 237.02424999999997, "b": 392.8813200000001, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "X", "bbox": {"l": 454.50024, "t": 384.5563, "r": 460.50323, "b": 392.8813200000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Work with Libraries (", "bbox": {"l": 70.800537, "t": 403.5166, "r": 152.58801, "b": 411.84160999999995, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "WRKLIB", "bbox": {"l": 152.58084, "t": 403.65161, "r": 179.58084, "b": 411.62561, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": ") CL command", "bbox": {"l": 179.58084, "t": 403.5166, "r": 238.51825, "b": 411.84160999999995, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "X", "bbox": {"l": 454.50113, "t": 403.5166, "r": 460.50411999999994, "b": 411.84160999999995, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Add Authorization List Entry (", "bbox": {"l": 70.801422, "t": 422.53632, "r": 187.26411, "b": 430.86133, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ADDAUTLE", "bbox": {"l": 187.32172, "t": 422.67133000000007, "r": 223.26141, "b": 430.64532, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": ") CL command ", "bbox": {"l": 223.26141, "t": 422.53632, "r": 284.72513, "b": 430.86133, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "X", "bbox": {"l": 454.5011, "t": 422.53632, "r": 460.50409, "b": 430.86133, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Change Authorization List Entry (", "bbox": {"l": 70.801392, "t": 441.55603, "r": 202.70538, "b": 449.88104, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "CHGAUTLE", "bbox": {"l": 202.8017, "t": 441.69104, "r": 238.74139000000002, "b": 449.66504000000003, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": ") CL command", "bbox": {"l": 238.74139000000002, "t": 441.55603, "r": 297.70038, "b": 449.88104, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "X", "bbox": {"l": 454.5011, "t": 441.55603, "r": 460.50409, "b": 449.88104, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Remove Authorization List Entry (", "bbox": {"l": 70.801392, "t": 460.51633, "r": 204.3821, "b": 468.84134, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "RMVAUTLE", "bbox": {"l": 204.42169, "t": 460.65134, "r": 240.36139000000003, "b": 468.62534, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": ") CL command", "bbox": {"l": 240.36139000000003, "t": 460.51633, "r": 299.32037, "b": 468.84134, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "X", "bbox": {"l": 454.5011, "t": 460.51633, "r": 460.50409, "b": 468.84134, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "Retrieve Authorization List Entry (", "bbox": {"l": 70.801392, "t": 479.53604, "r": 204.3857, "b": 487.86105, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "RTVAUTLE", "bbox": {"l": 204.42169, "t": 479.67105, "r": 240.36139000000003, "b": 487.64505, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": ") CL command", "bbox": {"l": 240.36139000000003, "t": 479.53604, "r": 299.32037, "b": 487.86105, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "X", "bbox": {"l": 454.5011, "t": 479.53604, "r": 460.50409, "b": 487.86105, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "Display Authorization List (", "bbox": {"l": 70.801392, "t": 498.55576, "r": 176.69899, "b": 506.88077, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "DSPAUTL", "bbox": {"l": 176.76109, "t": 498.69077, "r": 208.26109, "b": 506.66476, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": ") CL command ", "bbox": {"l": 208.26109, "t": 498.55576, "r": 269.7851, "b": 506.88077, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "X", "bbox": {"l": 454.5011, "t": 498.55576, "r": 460.50409, "b": 506.88077, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Display Authorization List Objects (", "bbox": {"l": 70.801392, "t": 517.51605, "r": 209.70918, "b": 525.84106, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "DSPAUTLOBJ", "bbox": {"l": 209.76138, "t": 517.6510599999999, "r": 254.70108, "b": 525.6250600000001, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": ") CL command", "bbox": {"l": 254.70108, "t": 517.51605, "r": 313.63849, "b": 525.84106, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "X", "bbox": {"l": 454.5011, "t": 517.51605, "r": 460.50409, "b": 525.84106, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "Edit Authorization List (", "bbox": {"l": 70.801392, "t": 536.53575, "r": 163.09819, "b": 544.86076, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "EDTAUTL", "bbox": {"l": 163.08109, "t": 536.67076, "r": 194.52078, "b": 544.64476, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": ") CL command", "bbox": {"l": 194.52078, "t": 536.53575, "r": 253.48878000000002, "b": 544.86076, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "X", "bbox": {"l": 454.50107, "t": 536.53575, "r": 460.50406000000004, "b": 544.86076, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "Work with Authorization Lists (", "bbox": {"l": 70.801361, "t": 555.5554500000001, "r": 191.40945, "b": 563.88046, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "WRKAUTL", "bbox": {"l": 191.40137, "t": 555.69046, "r": 222.84106000000003, "b": 563.66446, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": ") CL command", "bbox": {"l": 222.84106000000003, "t": 555.5554500000001, "r": 281.80908, "b": 563.88046, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "X", "bbox": {"l": 454.50107, "t": 555.5554500000001, "r": 460.50406000000004, "b": 563.88046, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "User action", "bbox": {"l": 70.801361, "t": 77.53577000000007, "r": 119.78657, "b": 85.86072000000001, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "*JOBCTL", "bbox": {"l": 424.93805, "t": 124.52936, "r": 433.26294000000007, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "QIBM_DB_SECADM", "bbox": {"l": 450.13806, "t": 78.62401999999997, "r": 458.46295, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "QIBM_DB_SQLADM", "bbox": {"l": 475.93835000000007, "t": 78.62401999999997, "r": 484.26324000000005, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "QIBM_DB_SYSMON", "bbox": {"l": 501.13837, "t": 78.56273999999996, "r": 509.46326, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "No Authority", "bbox": {"l": 526.39874, "t": 109.86841000000004, "r": 534.72351, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.58246612548828, "t": 754.4149780273438, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9042928218841553, "cells": [{"id": 0, "text": "12 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.4140625, "t": 754.5875244140625, "r": 334.42142, "b": 764.0072631835938, "coord_origin": "TOPLEFT"}, "confidence": 0.946682333946228, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "table", "bbox": {"l": 64.12763214111328, "t": 70.52249908447266, "r": 547.230224609375, "b": 569.5408325195312, "coord_origin": "TOPLEFT"}, "confidence": 0.9888067245483398, "cells": [{"id": 2, "text": "START PLAN CACHE EVENT MONITOR procedure", "bbox": {"l": 70.800606, "t": 175.5177, "r": 278.58273, "b": 183.84265000000005, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "X", "bbox": {"l": 429.00058000000007, "t": 175.5177, "r": 435.00357, "b": 183.84265000000005, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "X", "bbox": {"l": 480.00088999999997, "t": 175.5177, "r": 486.0038799999999, "b": 183.84265000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "END PLAN CACHE EVENT MONITOR procedure", "bbox": {"l": 70.800598, "t": 194.53741000000002, "r": 269.44949, "b": 202.86237000000006, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "X", "bbox": {"l": 429.00058000000007, "t": 194.53741000000002, "r": 435.00357, "b": 202.86237000000006, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "X", "bbox": {"l": 480.00088999999997, "t": 194.53741000000002, "r": 486.0038799999999, "b": 202.86237000000006, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "END ALL PLAN CACHE EVENT MONITORS procedure", "bbox": {"l": 70.800598, "t": 213.55713000000003, "r": 293.97632, "b": 221.88207999999997, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "X", "bbox": {"l": 429.00058000000007, "t": 213.55713000000003, "r": 435.00357, "b": 221.88207999999997, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "X", "bbox": {"l": 480.00088999999997, "t": 213.55713000000003, "r": 486.0038799999999, "b": 221.88207999999997, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Work with RCAC row permissions (Create, modify, or delete)", "bbox": {"l": 70.800598, "t": 232.51746000000003, "r": 311.22574, "b": 240.84240999999997, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "X", "bbox": {"l": 454.50031, "t": 232.51746000000003, "r": 460.5033, "b": 240.84240999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Work with RCAC column masks (Create, modify, or delete)", "bbox": {"l": 70.800598, "t": 251.53716999999995, "r": 303.58829, "b": 259.86212, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "X", "bbox": {"l": 454.50031, "t": 251.53716999999995, "r": 460.5033, "b": 259.86212, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Change Object Owner (", "bbox": {"l": 70.800598, "t": 270.55688, "r": 165.18898, "b": 278.88184, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "CHGOBJOWN", "bbox": {"l": 165.18091, "t": 270.69183, "r": 205.62061, "b": 278.66583, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ") CL command", "bbox": {"l": 205.62061, "t": 270.55688, "r": 264.57959, "b": 278.88184, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "X", "bbox": {"l": 454.50031, "t": 270.55688, "r": 460.5033, "b": 278.88184, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Change Object Primary Group (", "bbox": {"l": 70.800598, "t": 289.51715, "r": 197.55119, "b": 297.84216, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "CHGOBJPGP", "bbox": {"l": 197.5809, "t": 289.6521599999999, "r": 238.0206, "b": 297.62616, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": ") CL command ", "bbox": {"l": 238.0206, "t": 289.51715, "r": 299.39697, "b": 297.84216, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "X", "bbox": {"l": 454.50031, "t": 289.51715, "r": 460.5033, "b": 297.84216, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Grant Object Authority (", "bbox": {"l": 70.800598, "t": 308.53687, "r": 164.9973, "b": 316.86188, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "GRTOBJAUT", "bbox": {"l": 165.00089, "t": 308.67188, "r": 205.44058, "b": 316.64587, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": ") CL command ", "bbox": {"l": 205.44058, "t": 308.53687, "r": 266.84399, "b": 316.86188, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "X", "bbox": {"l": 454.50027, "t": 308.53687, "r": 460.50327000000004, "b": 316.86188, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Revoke Object Authority (", "bbox": {"l": 70.800568, "t": 327.55658, "r": 172.35025, "b": 335.88159, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "RVKOBJAUT", "bbox": {"l": 172.38086, "t": 327.6915900000001, "r": 212.82056, "b": 335.66559000000007, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ") CL command", "bbox": {"l": 212.82056, "t": 327.55658, "r": 271.78857, "b": 335.88159, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "X", "bbox": {"l": 454.50024, "t": 327.55658, "r": 460.50323, "b": 335.88159, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Edit Object Authority (", "bbox": {"l": 70.800537, "t": 346.51688, "r": 158.12213, "b": 354.84189, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "EDTOBJAUT", "bbox": {"l": 158.10052, "t": 346.65189, "r": 198.60052, "b": 354.62589, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": ") CL command", "bbox": {"l": 198.54022, "t": 346.51688, "r": 257.35434, "b": 354.84189, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "X", "bbox": {"l": 454.50024, "t": 346.51688, "r": 460.50323, "b": 354.84189, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Display Object Authority (", "bbox": {"l": 70.800537, "t": 365.53659, "r": 171.80392, "b": 373.8616, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "DSPOBJAUT", "bbox": {"l": 171.78055, "t": 365.6716, "r": 212.22025, "b": 373.6456, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": ") CL command", "bbox": {"l": 212.22025, "t": 365.53659, "r": 271.18826, "b": 373.8616, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "X", "bbox": {"l": 454.50024, "t": 365.53659, "r": 460.50323, "b": 373.8616, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Work with Objects (", "bbox": {"l": 70.800537, "t": 384.5563, "r": 148.52722, "b": 392.8813200000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "WRKOBJ", "bbox": {"l": 148.56055, "t": 384.69131, "r": 175.50024, "b": 392.66531, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": ") CL command ", "bbox": {"l": 175.50024, "t": 384.5563, "r": 237.02424999999997, "b": 392.8813200000001, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "X", "bbox": {"l": 454.50024, "t": 384.5563, "r": 460.50323, "b": 392.8813200000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Work with Libraries (", "bbox": {"l": 70.800537, "t": 403.5166, "r": 152.58801, "b": 411.84160999999995, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "WRKLIB", "bbox": {"l": 152.58084, "t": 403.65161, "r": 179.58084, "b": 411.62561, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": ") CL command", "bbox": {"l": 179.58084, "t": 403.5166, "r": 238.51825, "b": 411.84160999999995, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "X", "bbox": {"l": 454.50113, "t": 403.5166, "r": 460.50411999999994, "b": 411.84160999999995, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Add Authorization List Entry (", "bbox": {"l": 70.801422, "t": 422.53632, "r": 187.26411, "b": 430.86133, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ADDAUTLE", "bbox": {"l": 187.32172, "t": 422.67133000000007, "r": 223.26141, "b": 430.64532, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": ") CL command ", "bbox": {"l": 223.26141, "t": 422.53632, "r": 284.72513, "b": 430.86133, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "X", "bbox": {"l": 454.5011, "t": 422.53632, "r": 460.50409, "b": 430.86133, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Change Authorization List Entry (", "bbox": {"l": 70.801392, "t": 441.55603, "r": 202.70538, "b": 449.88104, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "CHGAUTLE", "bbox": {"l": 202.8017, "t": 441.69104, "r": 238.74139000000002, "b": 449.66504000000003, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": ") CL command", "bbox": {"l": 238.74139000000002, "t": 441.55603, "r": 297.70038, "b": 449.88104, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "X", "bbox": {"l": 454.5011, "t": 441.55603, "r": 460.50409, "b": 449.88104, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Remove Authorization List Entry (", "bbox": {"l": 70.801392, "t": 460.51633, "r": 204.3821, "b": 468.84134, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "RMVAUTLE", "bbox": {"l": 204.42169, "t": 460.65134, "r": 240.36139000000003, "b": 468.62534, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": ") CL command", "bbox": {"l": 240.36139000000003, "t": 460.51633, "r": 299.32037, "b": 468.84134, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "X", "bbox": {"l": 454.5011, "t": 460.51633, "r": 460.50409, "b": 468.84134, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "Retrieve Authorization List Entry (", "bbox": {"l": 70.801392, "t": 479.53604, "r": 204.3857, "b": 487.86105, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "RTVAUTLE", "bbox": {"l": 204.42169, "t": 479.67105, "r": 240.36139000000003, "b": 487.64505, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": ") CL command", "bbox": {"l": 240.36139000000003, "t": 479.53604, "r": 299.32037, "b": 487.86105, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "X", "bbox": {"l": 454.5011, "t": 479.53604, "r": 460.50409, "b": 487.86105, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "Display Authorization List (", "bbox": {"l": 70.801392, "t": 498.55576, "r": 176.69899, "b": 506.88077, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "DSPAUTL", "bbox": {"l": 176.76109, "t": 498.69077, "r": 208.26109, "b": 506.66476, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": ") CL command ", "bbox": {"l": 208.26109, "t": 498.55576, "r": 269.7851, "b": 506.88077, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "X", "bbox": {"l": 454.5011, "t": 498.55576, "r": 460.50409, "b": 506.88077, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Display Authorization List Objects (", "bbox": {"l": 70.801392, "t": 517.51605, "r": 209.70918, "b": 525.84106, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "DSPAUTLOBJ", "bbox": {"l": 209.76138, "t": 517.6510599999999, "r": 254.70108, "b": 525.6250600000001, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": ") CL command", "bbox": {"l": 254.70108, "t": 517.51605, "r": 313.63849, "b": 525.84106, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "X", "bbox": {"l": 454.5011, "t": 517.51605, "r": 460.50409, "b": 525.84106, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "Edit Authorization List (", "bbox": {"l": 70.801392, "t": 536.53575, "r": 163.09819, "b": 544.86076, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "EDTAUTL", "bbox": {"l": 163.08109, "t": 536.67076, "r": 194.52078, "b": 544.64476, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": ") CL command", "bbox": {"l": 194.52078, "t": 536.53575, "r": 253.48878000000002, "b": 544.86076, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "X", "bbox": {"l": 454.50107, "t": 536.53575, "r": 460.50406000000004, "b": 544.86076, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "Work with Authorization Lists (", "bbox": {"l": 70.801361, "t": 555.5554500000001, "r": 191.40945, "b": 563.88046, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "WRKAUTL", "bbox": {"l": 191.40137, "t": 555.69046, "r": 222.84106000000003, "b": 563.66446, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": ") CL command", "bbox": {"l": 222.84106000000003, "t": 555.5554500000001, "r": 281.80908, "b": 563.88046, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "X", "bbox": {"l": 454.50107, "t": 555.5554500000001, "r": 460.50406000000004, "b": 563.88046, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "User action", "bbox": {"l": 70.801361, "t": 77.53577000000007, "r": 119.78657, "b": 85.86072000000001, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "*JOBCTL", "bbox": {"l": 424.93805, "t": 124.52936, "r": 433.26294000000007, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "QIBM_DB_SECADM", "bbox": {"l": 450.13806, "t": 78.62401999999997, "r": 458.46295, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "QIBM_DB_SQLADM", "bbox": {"l": 475.93835000000007, "t": 78.62401999999997, "r": 484.26324000000005, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "QIBM_DB_SYSMON", "bbox": {"l": 501.13837, "t": 78.56273999999996, "r": 509.46326, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "No Authority", "bbox": {"l": 526.39874, "t": 109.86841000000004, "r": 534.72351, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {"2": {"label": "table", "id": 2, "page_no": 27, "cluster": {"id": 2, "label": "table", "bbox": {"l": 64.12763214111328, "t": 70.52249908447266, "r": 547.230224609375, "b": 569.5408325195312, "coord_origin": "TOPLEFT"}, "confidence": 0.9888067245483398, "cells": [{"id": 2, "text": "START PLAN CACHE EVENT MONITOR procedure", "bbox": {"l": 70.800606, "t": 175.5177, "r": 278.58273, "b": 183.84265000000005, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "X", "bbox": {"l": 429.00058000000007, "t": 175.5177, "r": 435.00357, "b": 183.84265000000005, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "X", "bbox": {"l": 480.00088999999997, "t": 175.5177, "r": 486.0038799999999, "b": 183.84265000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "END PLAN CACHE EVENT MONITOR procedure", "bbox": {"l": 70.800598, "t": 194.53741000000002, "r": 269.44949, "b": 202.86237000000006, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "X", "bbox": {"l": 429.00058000000007, "t": 194.53741000000002, "r": 435.00357, "b": 202.86237000000006, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "X", "bbox": {"l": 480.00088999999997, "t": 194.53741000000002, "r": 486.0038799999999, "b": 202.86237000000006, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "END ALL PLAN CACHE EVENT MONITORS procedure", "bbox": {"l": 70.800598, "t": 213.55713000000003, "r": 293.97632, "b": 221.88207999999997, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "X", "bbox": {"l": 429.00058000000007, "t": 213.55713000000003, "r": 435.00357, "b": 221.88207999999997, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "X", "bbox": {"l": 480.00088999999997, "t": 213.55713000000003, "r": 486.0038799999999, "b": 221.88207999999997, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Work with RCAC row permissions (Create, modify, or delete)", "bbox": {"l": 70.800598, "t": 232.51746000000003, "r": 311.22574, "b": 240.84240999999997, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "X", "bbox": {"l": 454.50031, "t": 232.51746000000003, "r": 460.5033, "b": 240.84240999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Work with RCAC column masks (Create, modify, or delete)", "bbox": {"l": 70.800598, "t": 251.53716999999995, "r": 303.58829, "b": 259.86212, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "X", "bbox": {"l": 454.50031, "t": 251.53716999999995, "r": 460.5033, "b": 259.86212, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Change Object Owner (", "bbox": {"l": 70.800598, "t": 270.55688, "r": 165.18898, "b": 278.88184, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "CHGOBJOWN", "bbox": {"l": 165.18091, "t": 270.69183, "r": 205.62061, "b": 278.66583, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ") CL command", "bbox": {"l": 205.62061, "t": 270.55688, "r": 264.57959, "b": 278.88184, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "X", "bbox": {"l": 454.50031, "t": 270.55688, "r": 460.5033, "b": 278.88184, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Change Object Primary Group (", "bbox": {"l": 70.800598, "t": 289.51715, "r": 197.55119, "b": 297.84216, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "CHGOBJPGP", "bbox": {"l": 197.5809, "t": 289.6521599999999, "r": 238.0206, "b": 297.62616, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": ") CL command ", "bbox": {"l": 238.0206, "t": 289.51715, "r": 299.39697, "b": 297.84216, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "X", "bbox": {"l": 454.50031, "t": 289.51715, "r": 460.5033, "b": 297.84216, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Grant Object Authority (", "bbox": {"l": 70.800598, "t": 308.53687, "r": 164.9973, "b": 316.86188, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "GRTOBJAUT", "bbox": {"l": 165.00089, "t": 308.67188, "r": 205.44058, "b": 316.64587, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": ") CL command ", "bbox": {"l": 205.44058, "t": 308.53687, "r": 266.84399, "b": 316.86188, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "X", "bbox": {"l": 454.50027, "t": 308.53687, "r": 460.50327000000004, "b": 316.86188, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Revoke Object Authority (", "bbox": {"l": 70.800568, "t": 327.55658, "r": 172.35025, "b": 335.88159, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "RVKOBJAUT", "bbox": {"l": 172.38086, "t": 327.6915900000001, "r": 212.82056, "b": 335.66559000000007, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ") CL command", "bbox": {"l": 212.82056, "t": 327.55658, "r": 271.78857, "b": 335.88159, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "X", "bbox": {"l": 454.50024, "t": 327.55658, "r": 460.50323, "b": 335.88159, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Edit Object Authority (", "bbox": {"l": 70.800537, "t": 346.51688, "r": 158.12213, "b": 354.84189, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "EDTOBJAUT", "bbox": {"l": 158.10052, "t": 346.65189, "r": 198.60052, "b": 354.62589, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": ") CL command", "bbox": {"l": 198.54022, "t": 346.51688, "r": 257.35434, "b": 354.84189, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "X", "bbox": {"l": 454.50024, "t": 346.51688, "r": 460.50323, "b": 354.84189, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Display Object Authority (", "bbox": {"l": 70.800537, "t": 365.53659, "r": 171.80392, "b": 373.8616, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "DSPOBJAUT", "bbox": {"l": 171.78055, "t": 365.6716, "r": 212.22025, "b": 373.6456, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": ") CL command", "bbox": {"l": 212.22025, "t": 365.53659, "r": 271.18826, "b": 373.8616, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "X", "bbox": {"l": 454.50024, "t": 365.53659, "r": 460.50323, "b": 373.8616, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Work with Objects (", "bbox": {"l": 70.800537, "t": 384.5563, "r": 148.52722, "b": 392.8813200000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "WRKOBJ", "bbox": {"l": 148.56055, "t": 384.69131, "r": 175.50024, "b": 392.66531, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": ") CL command ", "bbox": {"l": 175.50024, "t": 384.5563, "r": 237.02424999999997, "b": 392.8813200000001, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "X", "bbox": {"l": 454.50024, "t": 384.5563, "r": 460.50323, "b": 392.8813200000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Work with Libraries (", "bbox": {"l": 70.800537, "t": 403.5166, "r": 152.58801, "b": 411.84160999999995, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "WRKLIB", "bbox": {"l": 152.58084, "t": 403.65161, "r": 179.58084, "b": 411.62561, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": ") CL command", "bbox": {"l": 179.58084, "t": 403.5166, "r": 238.51825, "b": 411.84160999999995, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "X", "bbox": {"l": 454.50113, "t": 403.5166, "r": 460.50411999999994, "b": 411.84160999999995, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Add Authorization List Entry (", "bbox": {"l": 70.801422, "t": 422.53632, "r": 187.26411, "b": 430.86133, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ADDAUTLE", "bbox": {"l": 187.32172, "t": 422.67133000000007, "r": 223.26141, "b": 430.64532, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": ") CL command ", "bbox": {"l": 223.26141, "t": 422.53632, "r": 284.72513, "b": 430.86133, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "X", "bbox": {"l": 454.5011, "t": 422.53632, "r": 460.50409, "b": 430.86133, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Change Authorization List Entry (", "bbox": {"l": 70.801392, "t": 441.55603, "r": 202.70538, "b": 449.88104, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "CHGAUTLE", "bbox": {"l": 202.8017, "t": 441.69104, "r": 238.74139000000002, "b": 449.66504000000003, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": ") CL command", "bbox": {"l": 238.74139000000002, "t": 441.55603, "r": 297.70038, "b": 449.88104, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "X", "bbox": {"l": 454.5011, "t": 441.55603, "r": 460.50409, "b": 449.88104, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Remove Authorization List Entry (", "bbox": {"l": 70.801392, "t": 460.51633, "r": 204.3821, "b": 468.84134, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "RMVAUTLE", "bbox": {"l": 204.42169, "t": 460.65134, "r": 240.36139000000003, "b": 468.62534, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": ") CL command", "bbox": {"l": 240.36139000000003, "t": 460.51633, "r": 299.32037, "b": 468.84134, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "X", "bbox": {"l": 454.5011, "t": 460.51633, "r": 460.50409, "b": 468.84134, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "Retrieve Authorization List Entry (", "bbox": {"l": 70.801392, "t": 479.53604, "r": 204.3857, "b": 487.86105, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "RTVAUTLE", "bbox": {"l": 204.42169, "t": 479.67105, "r": 240.36139000000003, "b": 487.64505, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": ") CL command", "bbox": {"l": 240.36139000000003, "t": 479.53604, "r": 299.32037, "b": 487.86105, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "X", "bbox": {"l": 454.5011, "t": 479.53604, "r": 460.50409, "b": 487.86105, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "Display Authorization List (", "bbox": {"l": 70.801392, "t": 498.55576, "r": 176.69899, "b": 506.88077, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "DSPAUTL", "bbox": {"l": 176.76109, "t": 498.69077, "r": 208.26109, "b": 506.66476, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": ") CL command ", "bbox": {"l": 208.26109, "t": 498.55576, "r": 269.7851, "b": 506.88077, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "X", "bbox": {"l": 454.5011, "t": 498.55576, "r": 460.50409, "b": 506.88077, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Display Authorization List Objects (", "bbox": {"l": 70.801392, "t": 517.51605, "r": 209.70918, "b": 525.84106, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "DSPAUTLOBJ", "bbox": {"l": 209.76138, "t": 517.6510599999999, "r": 254.70108, "b": 525.6250600000001, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": ") CL command", "bbox": {"l": 254.70108, "t": 517.51605, "r": 313.63849, "b": 525.84106, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "X", "bbox": {"l": 454.5011, "t": 517.51605, "r": 460.50409, "b": 525.84106, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "Edit Authorization List (", "bbox": {"l": 70.801392, "t": 536.53575, "r": 163.09819, "b": 544.86076, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "EDTAUTL", "bbox": {"l": 163.08109, "t": 536.67076, "r": 194.52078, "b": 544.64476, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": ") CL command", "bbox": {"l": 194.52078, "t": 536.53575, "r": 253.48878000000002, "b": 544.86076, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "X", "bbox": {"l": 454.50107, "t": 536.53575, "r": 460.50406000000004, "b": 544.86076, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "Work with Authorization Lists (", "bbox": {"l": 70.801361, "t": 555.5554500000001, "r": 191.40945, "b": 563.88046, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "WRKAUTL", "bbox": {"l": 191.40137, "t": 555.69046, "r": 222.84106000000003, "b": 563.66446, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": ") CL command", "bbox": {"l": 222.84106000000003, "t": 555.5554500000001, "r": 281.80908, "b": 563.88046, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "X", "bbox": {"l": 454.50107, "t": 555.5554500000001, "r": 460.50406000000004, "b": 563.88046, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "User action", "bbox": {"l": 70.801361, "t": 77.53577000000007, "r": 119.78657, "b": 85.86072000000001, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "*JOBCTL", "bbox": {"l": 424.93805, "t": 124.52936, "r": 433.26294000000007, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "QIBM_DB_SECADM", "bbox": {"l": 450.13806, "t": 78.62401999999997, "r": 458.46295, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "QIBM_DB_SQLADM", "bbox": {"l": 475.93835000000007, "t": 78.62401999999997, "r": 484.26324000000005, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "QIBM_DB_SYSMON", "bbox": {"l": 501.13837, "t": 78.56273999999996, "r": 509.46326, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "No Authority", "bbox": {"l": 526.39874, "t": 109.86841000000004, "r": 534.72351, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["fcel", "ched", "ched", "ched", "ched", "ched", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl"], "num_rows": 22, "num_cols": 6, "table_cells": [{"bbox": {"l": 70.800606, "t": 175.5177, "r": 278.58273, "b": 183.84265000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "START PLAN CACHE EVENT MONITOR procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00058000000007, "t": 175.5177, "r": 435.00357, "b": 183.84265000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00088999999997, "t": 175.5177, "r": 486.0038799999999, "b": 183.84265000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800598, "t": 194.53741000000002, "r": 269.44949, "b": 202.86237000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "END PLAN CACHE EVENT MONITOR procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00058000000007, "t": 194.53741000000002, "r": 435.00357, "b": 202.86237000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00088999999997, "t": 194.53741000000002, "r": 486.0038799999999, "b": 202.86237000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800598, "t": 213.55713000000003, "r": 293.97632, "b": 221.88207999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "END ALL PLAN CACHE EVENT MONITORS procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00058000000007, "t": 213.55713000000003, "r": 435.00357, "b": 221.88207999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00088999999997, "t": 213.55713000000003, "r": 486.0038799999999, "b": 221.88207999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800598, "t": 232.51746000000003, "r": 311.22574, "b": 240.84240999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Work with RCAC row permissions (Create, modify, or delete)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50031, "t": 232.51746000000003, "r": 460.5033, "b": 240.84240999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800598, "t": 251.53716999999995, "r": 303.58829, "b": 259.86212, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Work with RCAC column masks (Create, modify, or delete)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50031, "t": 251.53716999999995, "r": 460.5033, "b": 259.86212, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800598, "t": 270.55688, "r": 264.57959, "b": 278.88184, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Change Object Owner ( CHGOBJOWN ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50031, "t": 270.55688, "r": 460.5033, "b": 278.88184, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800598, "t": 289.51715, "r": 299.39697, "b": 297.84216, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Change Object Primary Group ( CHGOBJPGP ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50031, "t": 289.51715, "r": 460.5033, "b": 297.84216, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800598, "t": 308.53687, "r": 266.84399, "b": 316.86188, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Grant Object Authority ( GRTOBJAUT ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50027, "t": 308.53687, "r": 460.50327000000004, "b": 316.86188, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800568, "t": 327.55658, "r": 271.78857, "b": 335.88159, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Revoke Object Authority ( RVKOBJAUT ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50024, "t": 327.55658, "r": 460.50323, "b": 335.88159, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800537, "t": 346.51688, "r": 257.35434, "b": 354.84189, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Edit Object Authority ( EDTOBJAUT ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50024, "t": 346.51688, "r": 460.50323, "b": 354.84189, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800537, "t": 365.53659, "r": 271.18826, "b": 373.8616, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Display Object Authority ( DSPOBJAUT ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50024, "t": 365.53659, "r": 460.50323, "b": 373.8616, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800537, "t": 384.5563, "r": 237.02424999999997, "b": 392.8813200000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Work with Objects ( WRKOBJ ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50024, "t": 384.5563, "r": 460.50323, "b": 392.8813200000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800537, "t": 403.5166, "r": 238.51825, "b": 411.84160999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Work with Libraries ( WRKLIB ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50113, "t": 403.5166, "r": 460.50411999999994, "b": 411.84160999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801422, "t": 422.53632, "r": 284.72513, "b": 430.86133, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Add Authorization List Entry ( ADDAUTLE ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.5011, "t": 422.53632, "r": 460.50409, "b": 430.86133, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801392, "t": 441.55603, "r": 297.70038, "b": 449.88104, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Change Authorization List Entry ( CHGAUTLE ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.5011, "t": 441.55603, "r": 460.50409, "b": 449.88104, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801392, "t": 460.51633, "r": 299.32037, "b": 468.84134, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Remove Authorization List Entry ( RMVAUTLE ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.5011, "t": 460.51633, "r": 460.50409, "b": 468.84134, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801392, "t": 479.53604, "r": 299.32037, "b": 487.86105, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Retrieve Authorization List Entry ( RTVAUTLE ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.5011, "t": 479.53604, "r": 460.50409, "b": 487.86105, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801392, "t": 498.55576, "r": 269.7851, "b": 506.88077, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Display Authorization List ( DSPAUTL ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.5011, "t": 498.55576, "r": 460.50409, "b": 506.88077, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801392, "t": 517.51605, "r": 313.63849, "b": 525.84106, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Display Authorization List Objects ( DSPAUTLOBJ ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.5011, "t": 517.51605, "r": 460.50409, "b": 525.84106, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801392, "t": 536.53575, "r": 253.48878000000002, "b": 544.86076, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Edit Authorization List ( EDTAUTL ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50107, "t": 536.53575, "r": 460.50406000000004, "b": 544.86076, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801361, "t": 555.5554500000001, "r": 281.80908, "b": 563.88046, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Work with Authorization Lists ( WRKAUTL ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50107, "t": 555.5554500000001, "r": 460.50406000000004, "b": 563.88046, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801361, "t": 77.53577000000007, "r": 119.78657, "b": 85.86072000000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "User action", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 424.93805, "t": 124.52936, "r": 433.26294000000007, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "*JOBCTL", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 450.13806, "t": 78.62401999999997, "r": 458.46295, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "QIBM_DB_SECADM", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 475.93835000000007, "t": 78.62401999999997, "r": 484.26324000000005, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "QIBM_DB_SQLADM", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 501.13837, "t": 78.56273999999996, "r": 509.46326, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "QIBM_DB_SYSMON", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 526.39874, "t": 109.86841000000004, "r": 534.72351, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "No Authority", "column_header": true, "row_header": false, "row_section": false}]}}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 27, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.58246612548828, "t": 754.4149780273438, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9042928218841553, "cells": [{"id": 0, "text": "12 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "12"}, {"label": "page_footer", "id": 1, "page_no": 27, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.4140625, "t": 754.5875244140625, "r": 334.42142, "b": 764.0072631835938, "coord_origin": "TOPLEFT"}, "confidence": 0.946682333946228, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "table", "id": 2, "page_no": 27, "cluster": {"id": 2, "label": "table", "bbox": {"l": 64.12763214111328, "t": 70.52249908447266, "r": 547.230224609375, "b": 569.5408325195312, "coord_origin": "TOPLEFT"}, "confidence": 0.9888067245483398, "cells": [{"id": 2, "text": "START PLAN CACHE EVENT MONITOR procedure", "bbox": {"l": 70.800606, "t": 175.5177, "r": 278.58273, "b": 183.84265000000005, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "X", "bbox": {"l": 429.00058000000007, "t": 175.5177, "r": 435.00357, "b": 183.84265000000005, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "X", "bbox": {"l": 480.00088999999997, "t": 175.5177, "r": 486.0038799999999, "b": 183.84265000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "END PLAN CACHE EVENT MONITOR procedure", "bbox": {"l": 70.800598, "t": 194.53741000000002, "r": 269.44949, "b": 202.86237000000006, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "X", "bbox": {"l": 429.00058000000007, "t": 194.53741000000002, "r": 435.00357, "b": 202.86237000000006, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "X", "bbox": {"l": 480.00088999999997, "t": 194.53741000000002, "r": 486.0038799999999, "b": 202.86237000000006, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "END ALL PLAN CACHE EVENT MONITORS procedure", "bbox": {"l": 70.800598, "t": 213.55713000000003, "r": 293.97632, "b": 221.88207999999997, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "X", "bbox": {"l": 429.00058000000007, "t": 213.55713000000003, "r": 435.00357, "b": 221.88207999999997, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "X", "bbox": {"l": 480.00088999999997, "t": 213.55713000000003, "r": 486.0038799999999, "b": 221.88207999999997, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Work with RCAC row permissions (Create, modify, or delete)", "bbox": {"l": 70.800598, "t": 232.51746000000003, "r": 311.22574, "b": 240.84240999999997, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "X", "bbox": {"l": 454.50031, "t": 232.51746000000003, "r": 460.5033, "b": 240.84240999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Work with RCAC column masks (Create, modify, or delete)", "bbox": {"l": 70.800598, "t": 251.53716999999995, "r": 303.58829, "b": 259.86212, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "X", "bbox": {"l": 454.50031, "t": 251.53716999999995, "r": 460.5033, "b": 259.86212, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Change Object Owner (", "bbox": {"l": 70.800598, "t": 270.55688, "r": 165.18898, "b": 278.88184, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "CHGOBJOWN", "bbox": {"l": 165.18091, "t": 270.69183, "r": 205.62061, "b": 278.66583, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ") CL command", "bbox": {"l": 205.62061, "t": 270.55688, "r": 264.57959, "b": 278.88184, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "X", "bbox": {"l": 454.50031, "t": 270.55688, "r": 460.5033, "b": 278.88184, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Change Object Primary Group (", "bbox": {"l": 70.800598, "t": 289.51715, "r": 197.55119, "b": 297.84216, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "CHGOBJPGP", "bbox": {"l": 197.5809, "t": 289.6521599999999, "r": 238.0206, "b": 297.62616, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": ") CL command ", "bbox": {"l": 238.0206, "t": 289.51715, "r": 299.39697, "b": 297.84216, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "X", "bbox": {"l": 454.50031, "t": 289.51715, "r": 460.5033, "b": 297.84216, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Grant Object Authority (", "bbox": {"l": 70.800598, "t": 308.53687, "r": 164.9973, "b": 316.86188, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "GRTOBJAUT", "bbox": {"l": 165.00089, "t": 308.67188, "r": 205.44058, "b": 316.64587, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": ") CL command ", "bbox": {"l": 205.44058, "t": 308.53687, "r": 266.84399, "b": 316.86188, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "X", "bbox": {"l": 454.50027, "t": 308.53687, "r": 460.50327000000004, "b": 316.86188, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Revoke Object Authority (", "bbox": {"l": 70.800568, "t": 327.55658, "r": 172.35025, "b": 335.88159, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "RVKOBJAUT", "bbox": {"l": 172.38086, "t": 327.6915900000001, "r": 212.82056, "b": 335.66559000000007, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ") CL command", "bbox": {"l": 212.82056, "t": 327.55658, "r": 271.78857, "b": 335.88159, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "X", "bbox": {"l": 454.50024, "t": 327.55658, "r": 460.50323, "b": 335.88159, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Edit Object Authority (", "bbox": {"l": 70.800537, "t": 346.51688, "r": 158.12213, "b": 354.84189, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "EDTOBJAUT", "bbox": {"l": 158.10052, "t": 346.65189, "r": 198.60052, "b": 354.62589, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": ") CL command", "bbox": {"l": 198.54022, "t": 346.51688, "r": 257.35434, "b": 354.84189, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "X", "bbox": {"l": 454.50024, "t": 346.51688, "r": 460.50323, "b": 354.84189, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Display Object Authority (", "bbox": {"l": 70.800537, "t": 365.53659, "r": 171.80392, "b": 373.8616, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "DSPOBJAUT", "bbox": {"l": 171.78055, "t": 365.6716, "r": 212.22025, "b": 373.6456, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": ") CL command", "bbox": {"l": 212.22025, "t": 365.53659, "r": 271.18826, "b": 373.8616, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "X", "bbox": {"l": 454.50024, "t": 365.53659, "r": 460.50323, "b": 373.8616, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Work with Objects (", "bbox": {"l": 70.800537, "t": 384.5563, "r": 148.52722, "b": 392.8813200000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "WRKOBJ", "bbox": {"l": 148.56055, "t": 384.69131, "r": 175.50024, "b": 392.66531, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": ") CL command ", "bbox": {"l": 175.50024, "t": 384.5563, "r": 237.02424999999997, "b": 392.8813200000001, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "X", "bbox": {"l": 454.50024, "t": 384.5563, "r": 460.50323, "b": 392.8813200000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Work with Libraries (", "bbox": {"l": 70.800537, "t": 403.5166, "r": 152.58801, "b": 411.84160999999995, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "WRKLIB", "bbox": {"l": 152.58084, "t": 403.65161, "r": 179.58084, "b": 411.62561, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": ") CL command", "bbox": {"l": 179.58084, "t": 403.5166, "r": 238.51825, "b": 411.84160999999995, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "X", "bbox": {"l": 454.50113, "t": 403.5166, "r": 460.50411999999994, "b": 411.84160999999995, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Add Authorization List Entry (", "bbox": {"l": 70.801422, "t": 422.53632, "r": 187.26411, "b": 430.86133, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ADDAUTLE", "bbox": {"l": 187.32172, "t": 422.67133000000007, "r": 223.26141, "b": 430.64532, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": ") CL command ", "bbox": {"l": 223.26141, "t": 422.53632, "r": 284.72513, "b": 430.86133, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "X", "bbox": {"l": 454.5011, "t": 422.53632, "r": 460.50409, "b": 430.86133, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Change Authorization List Entry (", "bbox": {"l": 70.801392, "t": 441.55603, "r": 202.70538, "b": 449.88104, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "CHGAUTLE", "bbox": {"l": 202.8017, "t": 441.69104, "r": 238.74139000000002, "b": 449.66504000000003, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": ") CL command", "bbox": {"l": 238.74139000000002, "t": 441.55603, "r": 297.70038, "b": 449.88104, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "X", "bbox": {"l": 454.5011, "t": 441.55603, "r": 460.50409, "b": 449.88104, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Remove Authorization List Entry (", "bbox": {"l": 70.801392, "t": 460.51633, "r": 204.3821, "b": 468.84134, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "RMVAUTLE", "bbox": {"l": 204.42169, "t": 460.65134, "r": 240.36139000000003, "b": 468.62534, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": ") CL command", "bbox": {"l": 240.36139000000003, "t": 460.51633, "r": 299.32037, "b": 468.84134, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "X", "bbox": {"l": 454.5011, "t": 460.51633, "r": 460.50409, "b": 468.84134, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "Retrieve Authorization List Entry (", "bbox": {"l": 70.801392, "t": 479.53604, "r": 204.3857, "b": 487.86105, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "RTVAUTLE", "bbox": {"l": 204.42169, "t": 479.67105, "r": 240.36139000000003, "b": 487.64505, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": ") CL command", "bbox": {"l": 240.36139000000003, "t": 479.53604, "r": 299.32037, "b": 487.86105, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "X", "bbox": {"l": 454.5011, "t": 479.53604, "r": 460.50409, "b": 487.86105, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "Display Authorization List (", "bbox": {"l": 70.801392, "t": 498.55576, "r": 176.69899, "b": 506.88077, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "DSPAUTL", "bbox": {"l": 176.76109, "t": 498.69077, "r": 208.26109, "b": 506.66476, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": ") CL command ", "bbox": {"l": 208.26109, "t": 498.55576, "r": 269.7851, "b": 506.88077, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "X", "bbox": {"l": 454.5011, "t": 498.55576, "r": 460.50409, "b": 506.88077, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Display Authorization List Objects (", "bbox": {"l": 70.801392, "t": 517.51605, "r": 209.70918, "b": 525.84106, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "DSPAUTLOBJ", "bbox": {"l": 209.76138, "t": 517.6510599999999, "r": 254.70108, "b": 525.6250600000001, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": ") CL command", "bbox": {"l": 254.70108, "t": 517.51605, "r": 313.63849, "b": 525.84106, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "X", "bbox": {"l": 454.5011, "t": 517.51605, "r": 460.50409, "b": 525.84106, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "Edit Authorization List (", "bbox": {"l": 70.801392, "t": 536.53575, "r": 163.09819, "b": 544.86076, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "EDTAUTL", "bbox": {"l": 163.08109, "t": 536.67076, "r": 194.52078, "b": 544.64476, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": ") CL command", "bbox": {"l": 194.52078, "t": 536.53575, "r": 253.48878000000002, "b": 544.86076, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "X", "bbox": {"l": 454.50107, "t": 536.53575, "r": 460.50406000000004, "b": 544.86076, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "Work with Authorization Lists (", "bbox": {"l": 70.801361, "t": 555.5554500000001, "r": 191.40945, "b": 563.88046, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "WRKAUTL", "bbox": {"l": 191.40137, "t": 555.69046, "r": 222.84106000000003, "b": 563.66446, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": ") CL command", "bbox": {"l": 222.84106000000003, "t": 555.5554500000001, "r": 281.80908, "b": 563.88046, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "X", "bbox": {"l": 454.50107, "t": 555.5554500000001, "r": 460.50406000000004, "b": 563.88046, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "User action", "bbox": {"l": 70.801361, "t": 77.53577000000007, "r": 119.78657, "b": 85.86072000000001, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "*JOBCTL", "bbox": {"l": 424.93805, "t": 124.52936, "r": 433.26294000000007, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "QIBM_DB_SECADM", "bbox": {"l": 450.13806, "t": 78.62401999999997, "r": 458.46295, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "QIBM_DB_SQLADM", "bbox": {"l": 475.93835000000007, "t": 78.62401999999997, "r": 484.26324000000005, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "QIBM_DB_SYSMON", "bbox": {"l": 501.13837, "t": 78.56273999999996, "r": 509.46326, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "No Authority", "bbox": {"l": 526.39874, "t": 109.86841000000004, "r": 534.72351, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["fcel", "ched", "ched", "ched", "ched", "ched", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl"], "num_rows": 22, "num_cols": 6, "table_cells": [{"bbox": {"l": 70.800606, "t": 175.5177, "r": 278.58273, "b": 183.84265000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "START PLAN CACHE EVENT MONITOR procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00058000000007, "t": 175.5177, "r": 435.00357, "b": 183.84265000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00088999999997, "t": 175.5177, "r": 486.0038799999999, "b": 183.84265000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800598, "t": 194.53741000000002, "r": 269.44949, "b": 202.86237000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "END PLAN CACHE EVENT MONITOR procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00058000000007, "t": 194.53741000000002, "r": 435.00357, "b": 202.86237000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00088999999997, "t": 194.53741000000002, "r": 486.0038799999999, "b": 202.86237000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800598, "t": 213.55713000000003, "r": 293.97632, "b": 221.88207999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "END ALL PLAN CACHE EVENT MONITORS procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00058000000007, "t": 213.55713000000003, "r": 435.00357, "b": 221.88207999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00088999999997, "t": 213.55713000000003, "r": 486.0038799999999, "b": 221.88207999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800598, "t": 232.51746000000003, "r": 311.22574, "b": 240.84240999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Work with RCAC row permissions (Create, modify, or delete)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50031, "t": 232.51746000000003, "r": 460.5033, "b": 240.84240999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800598, "t": 251.53716999999995, "r": 303.58829, "b": 259.86212, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Work with RCAC column masks (Create, modify, or delete)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50031, "t": 251.53716999999995, "r": 460.5033, "b": 259.86212, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800598, "t": 270.55688, "r": 264.57959, "b": 278.88184, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Change Object Owner ( CHGOBJOWN ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50031, "t": 270.55688, "r": 460.5033, "b": 278.88184, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800598, "t": 289.51715, "r": 299.39697, "b": 297.84216, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Change Object Primary Group ( CHGOBJPGP ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50031, "t": 289.51715, "r": 460.5033, "b": 297.84216, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800598, "t": 308.53687, "r": 266.84399, "b": 316.86188, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Grant Object Authority ( GRTOBJAUT ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50027, "t": 308.53687, "r": 460.50327000000004, "b": 316.86188, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800568, "t": 327.55658, "r": 271.78857, "b": 335.88159, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Revoke Object Authority ( RVKOBJAUT ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50024, "t": 327.55658, "r": 460.50323, "b": 335.88159, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800537, "t": 346.51688, "r": 257.35434, "b": 354.84189, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Edit Object Authority ( EDTOBJAUT ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50024, "t": 346.51688, "r": 460.50323, "b": 354.84189, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800537, "t": 365.53659, "r": 271.18826, "b": 373.8616, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Display Object Authority ( DSPOBJAUT ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50024, "t": 365.53659, "r": 460.50323, "b": 373.8616, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800537, "t": 384.5563, "r": 237.02424999999997, "b": 392.8813200000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Work with Objects ( WRKOBJ ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50024, "t": 384.5563, "r": 460.50323, "b": 392.8813200000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800537, "t": 403.5166, "r": 238.51825, "b": 411.84160999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Work with Libraries ( WRKLIB ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50113, "t": 403.5166, "r": 460.50411999999994, "b": 411.84160999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801422, "t": 422.53632, "r": 284.72513, "b": 430.86133, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Add Authorization List Entry ( ADDAUTLE ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.5011, "t": 422.53632, "r": 460.50409, "b": 430.86133, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801392, "t": 441.55603, "r": 297.70038, "b": 449.88104, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Change Authorization List Entry ( CHGAUTLE ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.5011, "t": 441.55603, "r": 460.50409, "b": 449.88104, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801392, "t": 460.51633, "r": 299.32037, "b": 468.84134, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Remove Authorization List Entry ( RMVAUTLE ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.5011, "t": 460.51633, "r": 460.50409, "b": 468.84134, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801392, "t": 479.53604, "r": 299.32037, "b": 487.86105, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Retrieve Authorization List Entry ( RTVAUTLE ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.5011, "t": 479.53604, "r": 460.50409, "b": 487.86105, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801392, "t": 498.55576, "r": 269.7851, "b": 506.88077, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Display Authorization List ( DSPAUTL ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.5011, "t": 498.55576, "r": 460.50409, "b": 506.88077, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801392, "t": 517.51605, "r": 313.63849, "b": 525.84106, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Display Authorization List Objects ( DSPAUTLOBJ ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.5011, "t": 517.51605, "r": 460.50409, "b": 525.84106, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801392, "t": 536.53575, "r": 253.48878000000002, "b": 544.86076, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Edit Authorization List ( EDTAUTL ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50107, "t": 536.53575, "r": 460.50406000000004, "b": 544.86076, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801361, "t": 555.5554500000001, "r": 281.80908, "b": 563.88046, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Work with Authorization Lists ( WRKAUTL ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50107, "t": 555.5554500000001, "r": 460.50406000000004, "b": 563.88046, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801361, "t": 77.53577000000007, "r": 119.78657, "b": 85.86072000000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "User action", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 424.93805, "t": 124.52936, "r": 433.26294000000007, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "*JOBCTL", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 450.13806, "t": 78.62401999999997, "r": 458.46295, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "QIBM_DB_SECADM", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 475.93835000000007, "t": 78.62401999999997, "r": 484.26324000000005, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "QIBM_DB_SQLADM", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 501.13837, "t": 78.56273999999996, "r": 509.46326, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "QIBM_DB_SYSMON", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 526.39874, "t": 109.86841000000004, "r": 534.72351, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "No Authority", "column_header": true, "row_header": false, "row_section": false}]}], "body": [{"label": "table", "id": 2, "page_no": 27, "cluster": {"id": 2, "label": "table", "bbox": {"l": 64.12763214111328, "t": 70.52249908447266, "r": 547.230224609375, "b": 569.5408325195312, "coord_origin": "TOPLEFT"}, "confidence": 0.9888067245483398, "cells": [{"id": 2, "text": "START PLAN CACHE EVENT MONITOR procedure", "bbox": {"l": 70.800606, "t": 175.5177, "r": 278.58273, "b": 183.84265000000005, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "X", "bbox": {"l": 429.00058000000007, "t": 175.5177, "r": 435.00357, "b": 183.84265000000005, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "X", "bbox": {"l": 480.00088999999997, "t": 175.5177, "r": 486.0038799999999, "b": 183.84265000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "END PLAN CACHE EVENT MONITOR procedure", "bbox": {"l": 70.800598, "t": 194.53741000000002, "r": 269.44949, "b": 202.86237000000006, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "X", "bbox": {"l": 429.00058000000007, "t": 194.53741000000002, "r": 435.00357, "b": 202.86237000000006, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "X", "bbox": {"l": 480.00088999999997, "t": 194.53741000000002, "r": 486.0038799999999, "b": 202.86237000000006, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "END ALL PLAN CACHE EVENT MONITORS procedure", "bbox": {"l": 70.800598, "t": 213.55713000000003, "r": 293.97632, "b": 221.88207999999997, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "X", "bbox": {"l": 429.00058000000007, "t": 213.55713000000003, "r": 435.00357, "b": 221.88207999999997, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "X", "bbox": {"l": 480.00088999999997, "t": 213.55713000000003, "r": 486.0038799999999, "b": 221.88207999999997, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Work with RCAC row permissions (Create, modify, or delete)", "bbox": {"l": 70.800598, "t": 232.51746000000003, "r": 311.22574, "b": 240.84240999999997, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "X", "bbox": {"l": 454.50031, "t": 232.51746000000003, "r": 460.5033, "b": 240.84240999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Work with RCAC column masks (Create, modify, or delete)", "bbox": {"l": 70.800598, "t": 251.53716999999995, "r": 303.58829, "b": 259.86212, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "X", "bbox": {"l": 454.50031, "t": 251.53716999999995, "r": 460.5033, "b": 259.86212, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Change Object Owner (", "bbox": {"l": 70.800598, "t": 270.55688, "r": 165.18898, "b": 278.88184, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "CHGOBJOWN", "bbox": {"l": 165.18091, "t": 270.69183, "r": 205.62061, "b": 278.66583, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ") CL command", "bbox": {"l": 205.62061, "t": 270.55688, "r": 264.57959, "b": 278.88184, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "X", "bbox": {"l": 454.50031, "t": 270.55688, "r": 460.5033, "b": 278.88184, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Change Object Primary Group (", "bbox": {"l": 70.800598, "t": 289.51715, "r": 197.55119, "b": 297.84216, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "CHGOBJPGP", "bbox": {"l": 197.5809, "t": 289.6521599999999, "r": 238.0206, "b": 297.62616, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": ") CL command ", "bbox": {"l": 238.0206, "t": 289.51715, "r": 299.39697, "b": 297.84216, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "X", "bbox": {"l": 454.50031, "t": 289.51715, "r": 460.5033, "b": 297.84216, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Grant Object Authority (", "bbox": {"l": 70.800598, "t": 308.53687, "r": 164.9973, "b": 316.86188, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "GRTOBJAUT", "bbox": {"l": 165.00089, "t": 308.67188, "r": 205.44058, "b": 316.64587, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": ") CL command ", "bbox": {"l": 205.44058, "t": 308.53687, "r": 266.84399, "b": 316.86188, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "X", "bbox": {"l": 454.50027, "t": 308.53687, "r": 460.50327000000004, "b": 316.86188, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Revoke Object Authority (", "bbox": {"l": 70.800568, "t": 327.55658, "r": 172.35025, "b": 335.88159, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "RVKOBJAUT", "bbox": {"l": 172.38086, "t": 327.6915900000001, "r": 212.82056, "b": 335.66559000000007, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ") CL command", "bbox": {"l": 212.82056, "t": 327.55658, "r": 271.78857, "b": 335.88159, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "X", "bbox": {"l": 454.50024, "t": 327.55658, "r": 460.50323, "b": 335.88159, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Edit Object Authority (", "bbox": {"l": 70.800537, "t": 346.51688, "r": 158.12213, "b": 354.84189, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "EDTOBJAUT", "bbox": {"l": 158.10052, "t": 346.65189, "r": 198.60052, "b": 354.62589, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": ") CL command", "bbox": {"l": 198.54022, "t": 346.51688, "r": 257.35434, "b": 354.84189, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "X", "bbox": {"l": 454.50024, "t": 346.51688, "r": 460.50323, "b": 354.84189, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Display Object Authority (", "bbox": {"l": 70.800537, "t": 365.53659, "r": 171.80392, "b": 373.8616, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "DSPOBJAUT", "bbox": {"l": 171.78055, "t": 365.6716, "r": 212.22025, "b": 373.6456, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": ") CL command", "bbox": {"l": 212.22025, "t": 365.53659, "r": 271.18826, "b": 373.8616, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "X", "bbox": {"l": 454.50024, "t": 365.53659, "r": 460.50323, "b": 373.8616, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Work with Objects (", "bbox": {"l": 70.800537, "t": 384.5563, "r": 148.52722, "b": 392.8813200000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "WRKOBJ", "bbox": {"l": 148.56055, "t": 384.69131, "r": 175.50024, "b": 392.66531, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": ") CL command ", "bbox": {"l": 175.50024, "t": 384.5563, "r": 237.02424999999997, "b": 392.8813200000001, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "X", "bbox": {"l": 454.50024, "t": 384.5563, "r": 460.50323, "b": 392.8813200000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Work with Libraries (", "bbox": {"l": 70.800537, "t": 403.5166, "r": 152.58801, "b": 411.84160999999995, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "WRKLIB", "bbox": {"l": 152.58084, "t": 403.65161, "r": 179.58084, "b": 411.62561, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": ") CL command", "bbox": {"l": 179.58084, "t": 403.5166, "r": 238.51825, "b": 411.84160999999995, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "X", "bbox": {"l": 454.50113, "t": 403.5166, "r": 460.50411999999994, "b": 411.84160999999995, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Add Authorization List Entry (", "bbox": {"l": 70.801422, "t": 422.53632, "r": 187.26411, "b": 430.86133, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ADDAUTLE", "bbox": {"l": 187.32172, "t": 422.67133000000007, "r": 223.26141, "b": 430.64532, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": ") CL command ", "bbox": {"l": 223.26141, "t": 422.53632, "r": 284.72513, "b": 430.86133, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "X", "bbox": {"l": 454.5011, "t": 422.53632, "r": 460.50409, "b": 430.86133, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Change Authorization List Entry (", "bbox": {"l": 70.801392, "t": 441.55603, "r": 202.70538, "b": 449.88104, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "CHGAUTLE", "bbox": {"l": 202.8017, "t": 441.69104, "r": 238.74139000000002, "b": 449.66504000000003, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": ") CL command", "bbox": {"l": 238.74139000000002, "t": 441.55603, "r": 297.70038, "b": 449.88104, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "X", "bbox": {"l": 454.5011, "t": 441.55603, "r": 460.50409, "b": 449.88104, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Remove Authorization List Entry (", "bbox": {"l": 70.801392, "t": 460.51633, "r": 204.3821, "b": 468.84134, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "RMVAUTLE", "bbox": {"l": 204.42169, "t": 460.65134, "r": 240.36139000000003, "b": 468.62534, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": ") CL command", "bbox": {"l": 240.36139000000003, "t": 460.51633, "r": 299.32037, "b": 468.84134, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "X", "bbox": {"l": 454.5011, "t": 460.51633, "r": 460.50409, "b": 468.84134, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "Retrieve Authorization List Entry (", "bbox": {"l": 70.801392, "t": 479.53604, "r": 204.3857, "b": 487.86105, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "RTVAUTLE", "bbox": {"l": 204.42169, "t": 479.67105, "r": 240.36139000000003, "b": 487.64505, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": ") CL command", "bbox": {"l": 240.36139000000003, "t": 479.53604, "r": 299.32037, "b": 487.86105, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "X", "bbox": {"l": 454.5011, "t": 479.53604, "r": 460.50409, "b": 487.86105, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "Display Authorization List (", "bbox": {"l": 70.801392, "t": 498.55576, "r": 176.69899, "b": 506.88077, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "DSPAUTL", "bbox": {"l": 176.76109, "t": 498.69077, "r": 208.26109, "b": 506.66476, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": ") CL command ", "bbox": {"l": 208.26109, "t": 498.55576, "r": 269.7851, "b": 506.88077, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "X", "bbox": {"l": 454.5011, "t": 498.55576, "r": 460.50409, "b": 506.88077, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Display Authorization List Objects (", "bbox": {"l": 70.801392, "t": 517.51605, "r": 209.70918, "b": 525.84106, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "DSPAUTLOBJ", "bbox": {"l": 209.76138, "t": 517.6510599999999, "r": 254.70108, "b": 525.6250600000001, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": ") CL command", "bbox": {"l": 254.70108, "t": 517.51605, "r": 313.63849, "b": 525.84106, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "X", "bbox": {"l": 454.5011, "t": 517.51605, "r": 460.50409, "b": 525.84106, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "Edit Authorization List (", "bbox": {"l": 70.801392, "t": 536.53575, "r": 163.09819, "b": 544.86076, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "EDTAUTL", "bbox": {"l": 163.08109, "t": 536.67076, "r": 194.52078, "b": 544.64476, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": ") CL command", "bbox": {"l": 194.52078, "t": 536.53575, "r": 253.48878000000002, "b": 544.86076, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "X", "bbox": {"l": 454.50107, "t": 536.53575, "r": 460.50406000000004, "b": 544.86076, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "Work with Authorization Lists (", "bbox": {"l": 70.801361, "t": 555.5554500000001, "r": 191.40945, "b": 563.88046, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "WRKAUTL", "bbox": {"l": 191.40137, "t": 555.69046, "r": 222.84106000000003, "b": 563.66446, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": ") CL command", "bbox": {"l": 222.84106000000003, "t": 555.5554500000001, "r": 281.80908, "b": 563.88046, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "X", "bbox": {"l": 454.50107, "t": 555.5554500000001, "r": 460.50406000000004, "b": 563.88046, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "User action", "bbox": {"l": 70.801361, "t": 77.53577000000007, "r": 119.78657, "b": 85.86072000000001, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "*JOBCTL", "bbox": {"l": 424.93805, "t": 124.52936, "r": 433.26294000000007, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "QIBM_DB_SECADM", "bbox": {"l": 450.13806, "t": 78.62401999999997, "r": 458.46295, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "QIBM_DB_SQLADM", "bbox": {"l": 475.93835000000007, "t": 78.62401999999997, "r": 484.26324000000005, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "QIBM_DB_SYSMON", "bbox": {"l": 501.13837, "t": 78.56273999999996, "r": 509.46326, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "No Authority", "bbox": {"l": 526.39874, "t": 109.86841000000004, "r": 534.72351, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["fcel", "ched", "ched", "ched", "ched", "ched", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl"], "num_rows": 22, "num_cols": 6, "table_cells": [{"bbox": {"l": 70.800606, "t": 175.5177, "r": 278.58273, "b": 183.84265000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "START PLAN CACHE EVENT MONITOR procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00058000000007, "t": 175.5177, "r": 435.00357, "b": 183.84265000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00088999999997, "t": 175.5177, "r": 486.0038799999999, "b": 183.84265000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800598, "t": 194.53741000000002, "r": 269.44949, "b": 202.86237000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "END PLAN CACHE EVENT MONITOR procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00058000000007, "t": 194.53741000000002, "r": 435.00357, "b": 202.86237000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00088999999997, "t": 194.53741000000002, "r": 486.0038799999999, "b": 202.86237000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800598, "t": 213.55713000000003, "r": 293.97632, "b": 221.88207999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "END ALL PLAN CACHE EVENT MONITORS procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00058000000007, "t": 213.55713000000003, "r": 435.00357, "b": 221.88207999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00088999999997, "t": 213.55713000000003, "r": 486.0038799999999, "b": 221.88207999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800598, "t": 232.51746000000003, "r": 311.22574, "b": 240.84240999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Work with RCAC row permissions (Create, modify, or delete)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50031, "t": 232.51746000000003, "r": 460.5033, "b": 240.84240999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800598, "t": 251.53716999999995, "r": 303.58829, "b": 259.86212, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Work with RCAC column masks (Create, modify, or delete)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50031, "t": 251.53716999999995, "r": 460.5033, "b": 259.86212, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800598, "t": 270.55688, "r": 264.57959, "b": 278.88184, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Change Object Owner ( CHGOBJOWN ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50031, "t": 270.55688, "r": 460.5033, "b": 278.88184, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800598, "t": 289.51715, "r": 299.39697, "b": 297.84216, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Change Object Primary Group ( CHGOBJPGP ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50031, "t": 289.51715, "r": 460.5033, "b": 297.84216, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800598, "t": 308.53687, "r": 266.84399, "b": 316.86188, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Grant Object Authority ( GRTOBJAUT ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50027, "t": 308.53687, "r": 460.50327000000004, "b": 316.86188, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800568, "t": 327.55658, "r": 271.78857, "b": 335.88159, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Revoke Object Authority ( RVKOBJAUT ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50024, "t": 327.55658, "r": 460.50323, "b": 335.88159, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800537, "t": 346.51688, "r": 257.35434, "b": 354.84189, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Edit Object Authority ( EDTOBJAUT ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50024, "t": 346.51688, "r": 460.50323, "b": 354.84189, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800537, "t": 365.53659, "r": 271.18826, "b": 373.8616, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Display Object Authority ( DSPOBJAUT ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50024, "t": 365.53659, "r": 460.50323, "b": 373.8616, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800537, "t": 384.5563, "r": 237.02424999999997, "b": 392.8813200000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Work with Objects ( WRKOBJ ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50024, "t": 384.5563, "r": 460.50323, "b": 392.8813200000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800537, "t": 403.5166, "r": 238.51825, "b": 411.84160999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Work with Libraries ( WRKLIB ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50113, "t": 403.5166, "r": 460.50411999999994, "b": 411.84160999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801422, "t": 422.53632, "r": 284.72513, "b": 430.86133, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Add Authorization List Entry ( ADDAUTLE ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.5011, "t": 422.53632, "r": 460.50409, "b": 430.86133, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801392, "t": 441.55603, "r": 297.70038, "b": 449.88104, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Change Authorization List Entry ( CHGAUTLE ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.5011, "t": 441.55603, "r": 460.50409, "b": 449.88104, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801392, "t": 460.51633, "r": 299.32037, "b": 468.84134, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Remove Authorization List Entry ( RMVAUTLE ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.5011, "t": 460.51633, "r": 460.50409, "b": 468.84134, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801392, "t": 479.53604, "r": 299.32037, "b": 487.86105, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Retrieve Authorization List Entry ( RTVAUTLE ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.5011, "t": 479.53604, "r": 460.50409, "b": 487.86105, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801392, "t": 498.55576, "r": 269.7851, "b": 506.88077, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Display Authorization List ( DSPAUTL ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.5011, "t": 498.55576, "r": 460.50409, "b": 506.88077, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801392, "t": 517.51605, "r": 313.63849, "b": 525.84106, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Display Authorization List Objects ( DSPAUTLOBJ ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.5011, "t": 517.51605, "r": 460.50409, "b": 525.84106, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801392, "t": 536.53575, "r": 253.48878000000002, "b": 544.86076, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Edit Authorization List ( EDTAUTL ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50107, "t": 536.53575, "r": 460.50406000000004, "b": 544.86076, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801361, "t": 555.5554500000001, "r": 281.80908, "b": 563.88046, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Work with Authorization Lists ( WRKAUTL ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50107, "t": 555.5554500000001, "r": 460.50406000000004, "b": 563.88046, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801361, "t": 77.53577000000007, "r": 119.78657, "b": 85.86072000000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "User action", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 424.93805, "t": 124.52936, "r": 433.26294000000007, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "*JOBCTL", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 450.13806, "t": 78.62401999999997, "r": 458.46295, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "QIBM_DB_SECADM", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 475.93835000000007, "t": 78.62401999999997, "r": 484.26324000000005, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "QIBM_DB_SQLADM", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 501.13837, "t": 78.56273999999996, "r": 509.46326, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "QIBM_DB_SYSMON", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 526.39874, "t": 109.86841000000004, "r": 534.72351, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "No Authority", "column_header": true, "row_header": false, "row_section": false}]}], "headers": [{"label": "page_footer", "id": 0, "page_no": 27, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.58246612548828, "t": 754.4149780273438, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9042928218841553, "cells": [{"id": 0, "text": "12 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "12"}, {"label": "page_footer", "id": 1, "page_no": 27, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.4140625, "t": 754.5875244140625, "r": 334.42142, "b": 764.0072631835938, "coord_origin": "TOPLEFT"}, "confidence": 0.946682333946228, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 28, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "13", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Chapter 3.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Row and Column Access Control", "bbox": {"l": 136.8, "t": 254.88635, "r": 546.02917, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "This chapter describes what Row and Column Access Control (RCAC) is, its components, ", "bbox": {"l": 136.8, "t": 317.68872, "r": 536.15228, "b": 326.90170000000006, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "and then illustrates RCAC with a simple example.", "bbox": {"l": 136.80002, "t": 329.68854, "r": 354.78754, "b": 338.90152, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "The following topics are covered in this chapter:", "bbox": {"l": 136.80002, "t": 351.7081, "r": 347.41214, "b": 360.92108, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 368.83728, "r": 141.78001, "b": 377.61206, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Explanation of RCAC and the concept of access control", "bbox": {"l": 151.20018, "t": 368.6879, "r": 397.10867, "b": 377.90088, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 380.8371, "r": 141.78001, "b": 389.61188, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Special registers and built-in global variables", "bbox": {"l": 151.20018, "t": 380.6877099999999, "r": 348.45898, "b": 389.9006999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 392.83691, "r": 141.78001, "b": 401.61169, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "VERIFY_GROUP_FOR_USER function", "bbox": {"l": 151.20018, "t": 392.68753000000004, "r": 327.03601, "b": 401.90051, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 404.83673, "r": 141.78001, "b": 413.61151, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Establishing and controlling accessibility by using the RCAC rule text", "bbox": {"l": 151.20018, "t": 404.68735, "r": 454.0878000000001, "b": 413.90033, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 416.83655, "r": 141.78001, "b": 425.61133, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "SELECT, INSERT, and UPDATE behavior with RCAC", "bbox": {"l": 151.20018, "t": 416.68716, "r": 385.73236, "b": 425.90015, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 428.83636000000007, "r": 141.78001, "b": 437.61115, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Human resources example", "bbox": {"l": 151.20018, "t": 428.68698, "r": 270.36362, "b": 437.89996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "3", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.7396240234375, "t": 754.7451171875, "r": 257.24335, "b": 764.0840454101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9487502574920654, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.8259887695312, "t": 754.357666015625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9122608304023743, "cells": [{"id": 1, "text": "13", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 3.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "section_header", "bbox": {"l": 136.8, "t": 252.77349853515625, "r": 546.02917, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9356535077095032, "cells": [{"id": 3, "text": "Row and Column Access Control", "bbox": {"l": 136.8, "t": 254.88635, "r": 546.02917, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.7134552001953, "t": 316.6616516113281, "r": 536.15228, "b": 338.90152, "coord_origin": "TOPLEFT"}, "confidence": 0.9694458246231079, "cells": [{"id": 4, "text": "This chapter describes what Row and Column Access Control (RCAC) is, its components, ", "bbox": {"l": 136.8, "t": 317.68872, "r": 536.15228, "b": 326.90170000000006, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "and then illustrates RCAC with a simple example.", "bbox": {"l": 136.80002, "t": 329.68854, "r": 354.78754, "b": 338.90152, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.12974548339844, "t": 350.6626892089844, "r": 347.41214, "b": 360.92108, "coord_origin": "TOPLEFT"}, "confidence": 0.9007801413536072, "cells": [{"id": 6, "text": "The following topics are covered in this chapter:", "bbox": {"l": 136.80002, "t": 351.7081, "r": 347.41214, "b": 360.92108, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.65553283691406, "t": 367.98822021484375, "r": 397.10867, "b": 378.2244567871094, "coord_origin": "TOPLEFT"}, "confidence": 0.9492710828781128, "cells": [{"id": 7, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 368.83728, "r": 141.78001, "b": 377.61206, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Explanation of RCAC and the concept of access control", "bbox": {"l": 151.20018, "t": 368.6879, "r": 397.10867, "b": 377.90088, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.7020721435547, "t": 380.12860107421875, "r": 348.45898, "b": 390.13079833984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9349842071533203, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 380.8371, "r": 141.78001, "b": 389.61188, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Special registers and built-in global variables", "bbox": {"l": 151.20018, "t": 380.6877099999999, "r": 348.45898, "b": 389.9006999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.77047729492188, "t": 391.8711853027344, "r": 327.03601, "b": 402.288330078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9309741854667664, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 392.83691, "r": 141.78001, "b": 401.61169, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "VERIFY_GROUP_FOR_USER function", "bbox": {"l": 151.20018, "t": 392.68753000000004, "r": 327.03601, "b": 401.90051, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.8464813232422, "t": 404.0476989746094, "r": 454.0878000000001, "b": 414.33953857421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9496814012527466, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 404.83673, "r": 141.78001, "b": 413.61151, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Establishing and controlling accessibility by using the RCAC rule text", "bbox": {"l": 151.20018, "t": 404.68735, "r": 454.0878000000001, "b": 413.90033, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 135.77333068847656, "t": 415.80474853515625, "r": 385.73236, "b": 426.15533447265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9369764924049377, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 416.83655, "r": 141.78001, "b": 425.61133, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "SELECT, INSERT, and UPDATE behavior with RCAC", "bbox": {"l": 151.20018, "t": 416.68716, "r": 385.73236, "b": 425.90015, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 135.60595703125, "t": 428.0014953613281, "r": 270.36362, "b": 437.9747009277344, "coord_origin": "TOPLEFT"}, "confidence": 0.9415654540061951, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 428.83636000000007, "r": 141.78001, "b": 437.61115, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Human resources example", "bbox": {"l": 151.20018, "t": 428.68698, "r": 270.36362, "b": 437.89996, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 500.39999, "t": 93.10602569580078, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.6890690326690674, "cells": [{"id": 19, "text": "3", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "picture", "bbox": {"l": 32.1435661315918, "t": 70.39622497558594, "r": 239.34097290039062, "b": 238.1275177001953, "coord_origin": "TOPLEFT"}, "confidence": 0.6961746215820312, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 28, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.7396240234375, "t": 754.7451171875, "r": 257.24335, "b": 764.0840454101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9487502574920654, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 28, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.8259887695312, "t": 754.357666015625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9122608304023743, "cells": [{"id": 1, "text": "13", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "13"}, {"label": "text", "id": 2, "page_no": 28, "cluster": {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 3.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3."}, {"label": "section_header", "id": 3, "page_no": 28, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 136.8, "t": 252.77349853515625, "r": 546.02917, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9356535077095032, "cells": [{"id": 3, "text": "Row and Column Access Control", "bbox": {"l": 136.8, "t": 254.88635, "r": 546.02917, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control"}, {"label": "text", "id": 4, "page_no": 28, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.7134552001953, "t": 316.6616516113281, "r": 536.15228, "b": 338.90152, "coord_origin": "TOPLEFT"}, "confidence": 0.9694458246231079, "cells": [{"id": 4, "text": "This chapter describes what Row and Column Access Control (RCAC) is, its components, ", "bbox": {"l": 136.8, "t": 317.68872, "r": 536.15228, "b": 326.90170000000006, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "and then illustrates RCAC with a simple example.", "bbox": {"l": 136.80002, "t": 329.68854, "r": 354.78754, "b": 338.90152, "coord_origin": "TOPLEFT"}}]}, "text": "This chapter describes what Row and Column Access Control (RCAC) is, its components, and then illustrates RCAC with a simple example."}, {"label": "text", "id": 5, "page_no": 28, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.12974548339844, "t": 350.6626892089844, "r": 347.41214, "b": 360.92108, "coord_origin": "TOPLEFT"}, "confidence": 0.9007801413536072, "cells": [{"id": 6, "text": "The following topics are covered in this chapter:", "bbox": {"l": 136.80002, "t": 351.7081, "r": 347.41214, "b": 360.92108, "coord_origin": "TOPLEFT"}}]}, "text": "The following topics are covered in this chapter:"}, {"label": "list_item", "id": 6, "page_no": 28, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.65553283691406, "t": 367.98822021484375, "r": 397.10867, "b": 378.2244567871094, "coord_origin": "TOPLEFT"}, "confidence": 0.9492710828781128, "cells": [{"id": 7, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 368.83728, "r": 141.78001, "b": 377.61206, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Explanation of RCAC and the concept of access control", "bbox": {"l": 151.20018, "t": 368.6879, "r": 397.10867, "b": 377.90088, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Explanation of RCAC and the concept of access control"}, {"label": "list_item", "id": 7, "page_no": 28, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.7020721435547, "t": 380.12860107421875, "r": 348.45898, "b": 390.13079833984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9349842071533203, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 380.8371, "r": 141.78001, "b": 389.61188, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Special registers and built-in global variables", "bbox": {"l": 151.20018, "t": 380.6877099999999, "r": 348.45898, "b": 389.9006999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Special registers and built-in global variables"}, {"label": "list_item", "id": 8, "page_no": 28, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.77047729492188, "t": 391.8711853027344, "r": 327.03601, "b": 402.288330078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9309741854667664, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 392.83691, "r": 141.78001, "b": 401.61169, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "VERIFY_GROUP_FOR_USER function", "bbox": {"l": 151.20018, "t": 392.68753000000004, "r": 327.03601, "b": 401.90051, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH VERIFY_GROUP_FOR_USER function"}, {"label": "list_item", "id": 9, "page_no": 28, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.8464813232422, "t": 404.0476989746094, "r": 454.0878000000001, "b": 414.33953857421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9496814012527466, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 404.83673, "r": 141.78001, "b": 413.61151, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Establishing and controlling accessibility by using the RCAC rule text", "bbox": {"l": 151.20018, "t": 404.68735, "r": 454.0878000000001, "b": 413.90033, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Establishing and controlling accessibility by using the RCAC rule text"}, {"label": "list_item", "id": 10, "page_no": 28, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.77333068847656, "t": 415.80474853515625, "r": 385.73236, "b": 426.15533447265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9369764924049377, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 416.83655, "r": 141.78001, "b": 425.61133, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "SELECT, INSERT, and UPDATE behavior with RCAC", "bbox": {"l": 151.20018, "t": 416.68716, "r": 385.73236, "b": 425.90015, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH SELECT, INSERT, and UPDATE behavior with RCAC"}, {"label": "list_item", "id": 11, "page_no": 28, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.60595703125, "t": 428.0014953613281, "r": 270.36362, "b": 437.9747009277344, "coord_origin": "TOPLEFT"}, "confidence": 0.9415654540061951, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 428.83636000000007, "r": 141.78001, "b": 437.61115, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Human resources example", "bbox": {"l": 151.20018, "t": 428.68698, "r": 270.36362, "b": 437.89996, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Human resources example"}, {"label": "text", "id": 12, "page_no": 28, "cluster": {"id": 12, "label": "text", "bbox": {"l": 500.39999, "t": 93.10602569580078, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.6890690326690674, "cells": [{"id": 19, "text": "3", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, "text": "3"}, {"label": "picture", "id": 13, "page_no": 28, "cluster": {"id": 13, "label": "picture", "bbox": {"l": 32.1435661315918, "t": 70.39622497558594, "r": 239.34097290039062, "b": 238.1275177001953, "coord_origin": "TOPLEFT"}, "confidence": 0.6961746215820312, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 28, "cluster": {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 3.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3."}, {"label": "section_header", "id": 3, "page_no": 28, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 136.8, "t": 252.77349853515625, "r": 546.02917, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9356535077095032, "cells": [{"id": 3, "text": "Row and Column Access Control", "bbox": {"l": 136.8, "t": 254.88635, "r": 546.02917, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control"}, {"label": "text", "id": 4, "page_no": 28, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.7134552001953, "t": 316.6616516113281, "r": 536.15228, "b": 338.90152, "coord_origin": "TOPLEFT"}, "confidence": 0.9694458246231079, "cells": [{"id": 4, "text": "This chapter describes what Row and Column Access Control (RCAC) is, its components, ", "bbox": {"l": 136.8, "t": 317.68872, "r": 536.15228, "b": 326.90170000000006, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "and then illustrates RCAC with a simple example.", "bbox": {"l": 136.80002, "t": 329.68854, "r": 354.78754, "b": 338.90152, "coord_origin": "TOPLEFT"}}]}, "text": "This chapter describes what Row and Column Access Control (RCAC) is, its components, and then illustrates RCAC with a simple example."}, {"label": "text", "id": 5, "page_no": 28, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.12974548339844, "t": 350.6626892089844, "r": 347.41214, "b": 360.92108, "coord_origin": "TOPLEFT"}, "confidence": 0.9007801413536072, "cells": [{"id": 6, "text": "The following topics are covered in this chapter:", "bbox": {"l": 136.80002, "t": 351.7081, "r": 347.41214, "b": 360.92108, "coord_origin": "TOPLEFT"}}]}, "text": "The following topics are covered in this chapter:"}, {"label": "list_item", "id": 6, "page_no": 28, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.65553283691406, "t": 367.98822021484375, "r": 397.10867, "b": 378.2244567871094, "coord_origin": "TOPLEFT"}, "confidence": 0.9492710828781128, "cells": [{"id": 7, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 368.83728, "r": 141.78001, "b": 377.61206, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Explanation of RCAC and the concept of access control", "bbox": {"l": 151.20018, "t": 368.6879, "r": 397.10867, "b": 377.90088, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Explanation of RCAC and the concept of access control"}, {"label": "list_item", "id": 7, "page_no": 28, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.7020721435547, "t": 380.12860107421875, "r": 348.45898, "b": 390.13079833984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9349842071533203, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 380.8371, "r": 141.78001, "b": 389.61188, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Special registers and built-in global variables", "bbox": {"l": 151.20018, "t": 380.6877099999999, "r": 348.45898, "b": 389.9006999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Special registers and built-in global variables"}, {"label": "list_item", "id": 8, "page_no": 28, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.77047729492188, "t": 391.8711853027344, "r": 327.03601, "b": 402.288330078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9309741854667664, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 392.83691, "r": 141.78001, "b": 401.61169, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "VERIFY_GROUP_FOR_USER function", "bbox": {"l": 151.20018, "t": 392.68753000000004, "r": 327.03601, "b": 401.90051, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH VERIFY_GROUP_FOR_USER function"}, {"label": "list_item", "id": 9, "page_no": 28, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.8464813232422, "t": 404.0476989746094, "r": 454.0878000000001, "b": 414.33953857421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9496814012527466, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 404.83673, "r": 141.78001, "b": 413.61151, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Establishing and controlling accessibility by using the RCAC rule text", "bbox": {"l": 151.20018, "t": 404.68735, "r": 454.0878000000001, "b": 413.90033, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Establishing and controlling accessibility by using the RCAC rule text"}, {"label": "list_item", "id": 10, "page_no": 28, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.77333068847656, "t": 415.80474853515625, "r": 385.73236, "b": 426.15533447265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9369764924049377, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 416.83655, "r": 141.78001, "b": 425.61133, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "SELECT, INSERT, and UPDATE behavior with RCAC", "bbox": {"l": 151.20018, "t": 416.68716, "r": 385.73236, "b": 425.90015, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH SELECT, INSERT, and UPDATE behavior with RCAC"}, {"label": "list_item", "id": 11, "page_no": 28, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.60595703125, "t": 428.0014953613281, "r": 270.36362, "b": 437.9747009277344, "coord_origin": "TOPLEFT"}, "confidence": 0.9415654540061951, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 428.83636000000007, "r": 141.78001, "b": 437.61115, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Human resources example", "bbox": {"l": 151.20018, "t": 428.68698, "r": 270.36362, "b": 437.89996, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Human resources example"}, {"label": "text", "id": 12, "page_no": 28, "cluster": {"id": 12, "label": "text", "bbox": {"l": 500.39999, "t": 93.10602569580078, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.6890690326690674, "cells": [{"id": 19, "text": "3", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, "text": "3"}, {"label": "picture", "id": 13, "page_no": 28, "cluster": {"id": 13, "label": "picture", "bbox": {"l": 32.1435661315918, "t": 70.39622497558594, "r": 239.34097290039062, "b": 238.1275177001953, "coord_origin": "TOPLEFT"}, "confidence": 0.6961746215820312, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 28, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.7396240234375, "t": 754.7451171875, "r": 257.24335, "b": 764.0840454101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9487502574920654, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 28, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.8259887695312, "t": 754.357666015625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9122608304023743, "cells": [{"id": 1, "text": "13", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "13"}]}}, {"page_no": 29, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "14 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "3.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.198265, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Explanation of RCAC and the concept of access control", "bbox": {"l": 91.677902, "t": 74.34069999999997, "r": 518.77576, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "RCAC limits data access to those users who have a business \u201cneed to know\u201d. RCAC makes it ", "bbox": {"l": 136.8, "t": 106.6087, "r": 547.24268, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "easy to set up a rich and robust security policy that is based on roles and responsibilities. ", "bbox": {"l": 136.8, "t": 118.60852, "r": 532.82855, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "RCAC functionality is made available through the optional, no charge feature called \u201cIBM ", "bbox": {"l": 136.80099, "t": 130.60834, "r": 530.06171, "b": 139.82135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Advanced Data Security for i\u201d, also known as option 47 of IBM i 7.2.", "bbox": {"l": 136.80099, "t": 142.60815000000002, "r": 435.24844, "b": 151.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "In DB2 for i, RCAC is implemented using two different approaches that address the ", "bbox": {"l": 136.80099, "t": 164.62775, "r": 505.92376999999993, "b": 173.84076000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "shortcomings of traditional control methods and mechanisms:", "bbox": {"l": 136.80099, "t": 176.62756000000002, "r": 408.77774, "b": 185.84058000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 193.75676999999996, "r": 141.78099, "b": 202.53156, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Row permissions", "bbox": {"l": 151.20116, "t": 193.60735999999997, "r": 227.34537000000003, "b": 202.82037000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 205.75658999999996, "r": 141.78099, "b": 214.53137000000004, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Column masks", "bbox": {"l": 151.20116, "t": 205.60717999999997, "r": 217.25092, "b": 214.82019000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Another benefit of RCAC is that no database user is automatically exempt from the control. ", "bbox": {"l": 136.80099, "t": 227.62676999999996, "r": 539.90802, "b": 236.83978000000002, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Users with *ALLOBJ authority can no longer freely access all of the data in the database ", "bbox": {"l": 136.80099, "t": 239.62658999999996, "r": 529.76575, "b": 248.83960000000002, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "unless they have the appropriate permission to do so. The ability to manage row permissions ", "bbox": {"l": 136.80099, "t": 251.6264, "r": 547.20178, "b": 260.83942, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "and column masks rests with the database security administrator. The RCAC definitions, ", "bbox": {"l": 136.80099, "t": 263.62622, "r": 529.6911, "b": 272.83923000000004, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "enablement, and activation are controlled by SQL statements.", "bbox": {"l": 136.80099, "t": 275.62604, "r": 409.41107, "b": 284.83905, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Row permissions and column masks require virtually no application changes. RCAC is based ", "bbox": {"l": 136.80099, "t": 297.64563, "r": 547.2973, "b": 306.85861, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "on specific rules that are transparent to existing applications and SQL interfaces. ", "bbox": {"l": 136.80101, "t": 309.64545000000004, "r": 495.0034800000001, "b": 318.85843, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Enforcement of your security policy does not depend on how applications or tools access the ", "bbox": {"l": 136.80101, "t": 321.64526, "r": 547.2865, "b": 330.85825, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "data.", "bbox": {"l": 136.80101, "t": 333.64508, "r": 158.99387, "b": 342.8580600000001, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "RCAC also facilitates multi-tenancy, which means that several independent customers or ", "bbox": {"l": 136.80101, "t": 355.60489, "r": 529.88434, "b": 364.81787, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "business units can share a single database table without being aware of one another. The ", "bbox": {"l": 136.80096, "t": 367.60470999999995, "r": 535.67212, "b": 376.81769, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "RCAC row permission ensures each user sees only the rows they are entitled to view ", "bbox": {"l": 136.80096, "t": 379.60452, "r": 515.33978, "b": 388.81750000000005, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "because the enforcement is handled by DB2 and not the application logic.", "bbox": {"l": 136.80096, "t": 391.60434, "r": 462.38034, "b": 400.81732, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "3.1.1", "bbox": {"l": 64.800003, "t": 502.49472, "r": 93.984444, "b": 514.4827, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Row permission and column mask definitions", "bbox": {"l": 97.632515, "t": 502.49472, "r": 383.47995, "b": 514.4827, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "The following sections define row permission and column masks.", "bbox": {"l": 136.8, "t": 528.6486199999999, "r": 423.53543, "b": 537.86162, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Row permission", "bbox": {"l": 136.8, "t": 554.4839, "r": 229.26001, "b": 565.58389, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "A row permission is a database object that manifests a row access control rule for a specific ", "bbox": {"l": 136.8, "t": 569.6287199999999, "r": 544.57147, "b": 578.84172, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "table. It is essentially a search condition that describes which rows you can access. For ", "bbox": {"l": 136.8, "t": 581.62852, "r": 524.09955, "b": 590.84152, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "example, a manager can see only the rows that represent his or her employees.", "bbox": {"l": 136.8, "t": 593.62833, "r": 488.96762, "b": 602.84132, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Label-based access control (LBAC):", "bbox": {"l": 142.8, "t": 419.62871999999993, "r": 312.3212, "b": 428.8417099999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": " RCAC and LBAC are not the same thing. LBAC is a ", "bbox": {"l": 312.36005, "t": 419.62871999999993, "r": 541.24963, "b": 428.8417099999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "security model that is primarily intended for government applications. LBAC requires that ", "bbox": {"l": 142.80002, "t": 431.62854, "r": 536.27075, "b": 440.84152, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "data and users be classified with a fixed set of rules that are implemented. RCAC is a ", "bbox": {"l": 142.80002, "t": 443.62836, "r": 522.34973, "b": 452.84134, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "general-purpose security model that is primarily intended for commercial customers. You ", "bbox": {"l": 142.80002, "t": 455.62817, "r": 536.03772, "b": 464.84116, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "can use RCAC to create your own security rules, which in turn allows for more flexibility.", "bbox": {"l": 142.80002, "t": 467.62799, "r": 528.96118, "b": 476.84097, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.47321319580078, "t": 754.3320922851562, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9086033701896667, "cells": [{"id": 0, "text": "14 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.28377532958984, "t": 754.7196655273438, "r": 334.42142, "b": 763.9346313476562, "coord_origin": "TOPLEFT"}, "confidence": 0.9480336904525757, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.3137435913086, "t": 73.53276062011719, "r": 518.77576, "b": 89.27471923828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9650559425354004, "cells": [{"id": 2, "text": "3.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.198265, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Explanation of RCAC and the concept of access control", "bbox": {"l": 91.677902, "t": 74.34069999999997, "r": 518.77576, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 136.03993225097656, "t": 106.02466583251953, "r": 547.24268, "b": 152.26783752441406, "coord_origin": "TOPLEFT"}, "confidence": 0.9864612221717834, "cells": [{"id": 4, "text": "RCAC limits data access to those users who have a business \u201cneed to know\u201d. RCAC makes it ", "bbox": {"l": 136.8, "t": 106.6087, "r": 547.24268, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "easy to set up a rich and robust security policy that is based on roles and responsibilities. ", "bbox": {"l": 136.8, "t": 118.60852, "r": 532.82855, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "RCAC functionality is made available through the optional, no charge feature called \u201cIBM ", "bbox": {"l": 136.80099, "t": 130.60834, "r": 530.06171, "b": 139.82135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Advanced Data Security for i\u201d, also known as option 47 of IBM i 7.2.", "bbox": {"l": 136.80099, "t": 142.60815000000002, "r": 435.24844, "b": 151.82117000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 136.07485961914062, "t": 163.92002868652344, "r": 505.92376999999993, "b": 186.08607482910156, "coord_origin": "TOPLEFT"}, "confidence": 0.9790142178535461, "cells": [{"id": 8, "text": "In DB2 for i, RCAC is implemented using two different approaches that address the ", "bbox": {"l": 136.80099, "t": 164.62775, "r": 505.92376999999993, "b": 173.84076000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "shortcomings of traditional control methods and mechanisms:", "bbox": {"l": 136.80099, "t": 176.62756000000002, "r": 408.77774, "b": 185.84058000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 135.7504425048828, "t": 192.93507385253906, "r": 227.34537000000003, "b": 202.84515380859375, "coord_origin": "TOPLEFT"}, "confidence": 0.943821907043457, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 193.75676999999996, "r": 141.78099, "b": 202.53156, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Row permissions", "bbox": {"l": 151.20116, "t": 193.60735999999997, "r": 227.34537000000003, "b": 202.82037000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.5780487060547, "t": 205.08816528320312, "r": 217.25092, "b": 214.82019000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9294455051422119, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 205.75658999999996, "r": 141.78099, "b": 214.53137000000004, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Column masks", "bbox": {"l": 151.20116, "t": 205.60717999999997, "r": 217.25092, "b": 214.82019000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 135.8238983154297, "t": 226.61538696289062, "r": 547.20178, "b": 284.83905, "coord_origin": "TOPLEFT"}, "confidence": 0.9863597750663757, "cells": [{"id": 14, "text": "Another benefit of RCAC is that no database user is automatically exempt from the control. ", "bbox": {"l": 136.80099, "t": 227.62676999999996, "r": 539.90802, "b": 236.83978000000002, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Users with *ALLOBJ authority can no longer freely access all of the data in the database ", "bbox": {"l": 136.80099, "t": 239.62658999999996, "r": 529.76575, "b": 248.83960000000002, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "unless they have the appropriate permission to do so. The ability to manage row permissions ", "bbox": {"l": 136.80099, "t": 251.6264, "r": 547.20178, "b": 260.83942, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "and column masks rests with the database security administrator. The RCAC definitions, ", "bbox": {"l": 136.80099, "t": 263.62622, "r": 529.6911, "b": 272.83923000000004, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "enablement, and activation are controlled by SQL statements.", "bbox": {"l": 136.80099, "t": 275.62604, "r": 409.41107, "b": 284.83905, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 136.0462646484375, "t": 296.7554016113281, "r": 547.2973, "b": 342.8580600000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9848619699478149, "cells": [{"id": 19, "text": "Row permissions and column masks require virtually no application changes. RCAC is based ", "bbox": {"l": 136.80099, "t": 297.64563, "r": 547.2973, "b": 306.85861, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "on specific rules that are transparent to existing applications and SQL interfaces. ", "bbox": {"l": 136.80101, "t": 309.64545000000004, "r": 495.0034800000001, "b": 318.85843, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Enforcement of your security policy does not depend on how applications or tools access the ", "bbox": {"l": 136.80101, "t": 321.64526, "r": 547.2865, "b": 330.85825, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "data.", "bbox": {"l": 136.80101, "t": 333.64508, "r": 158.99387, "b": 342.8580600000001, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 136.23114013671875, "t": 354.7263488769531, "r": 535.67212, "b": 401.10906982421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9870187044143677, "cells": [{"id": 23, "text": "RCAC also facilitates multi-tenancy, which means that several independent customers or ", "bbox": {"l": 136.80101, "t": 355.60489, "r": 529.88434, "b": 364.81787, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "business units can share a single database table without being aware of one another. The ", "bbox": {"l": 136.80096, "t": 367.60470999999995, "r": 535.67212, "b": 376.81769, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "RCAC row permission ensures each user sees only the rows they are entitled to view ", "bbox": {"l": 136.80096, "t": 379.60452, "r": 515.33978, "b": 388.81750000000005, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "because the enforcement is handled by DB2 and not the application logic.", "bbox": {"l": 136.80096, "t": 391.60434, "r": 462.38034, "b": 400.81732, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "section_header", "bbox": {"l": 64.24093627929688, "t": 501.6220397949219, "r": 383.47995, "b": 514.7472534179688, "coord_origin": "TOPLEFT"}, "confidence": 0.9663240909576416, "cells": [{"id": 27, "text": "3.1.1", "bbox": {"l": 64.800003, "t": 502.49472, "r": 93.984444, "b": 514.4827, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Row permission and column mask definitions", "bbox": {"l": 97.632515, "t": 502.49472, "r": 383.47995, "b": 514.4827, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 135.77207946777344, "t": 528.0364990234375, "r": 423.53543, "b": 538.3961791992188, "coord_origin": "TOPLEFT"}, "confidence": 0.9584894776344299, "cells": [{"id": 29, "text": "The following sections define row permission and column masks.", "bbox": {"l": 136.8, "t": 528.6486199999999, "r": 423.53543, "b": 537.86162, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "section_header", "bbox": {"l": 136.47561645507812, "t": 553.8549194335938, "r": 229.26001, "b": 565.8992919921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9526190161705017, "cells": [{"id": 30, "text": "Row permission", "bbox": {"l": 136.8, "t": 554.4839, "r": 229.26001, "b": 565.58389, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 135.9830322265625, "t": 568.7094116210938, "r": 544.57147, "b": 602.930908203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9861118793487549, "cells": [{"id": 31, "text": "A row permission is a database object that manifests a row access control rule for a specific ", "bbox": {"l": 136.8, "t": 569.6287199999999, "r": 544.57147, "b": 578.84172, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "table. It is essentially a search condition that describes which rows you can access. For ", "bbox": {"l": 136.8, "t": 581.62852, "r": 524.09955, "b": 590.84152, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "example, a manager can see only the rows that represent his or her employees.", "bbox": {"l": 136.8, "t": 593.62833, "r": 488.96762, "b": 602.84132, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "text", "bbox": {"l": 141.94046020507812, "t": 418.39910888671875, "r": 541.24963, "b": 477.48040771484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9858124256134033, "cells": [{"id": 34, "text": "Label-based access control (LBAC):", "bbox": {"l": 142.8, "t": 419.62871999999993, "r": 312.3212, "b": 428.8417099999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": " RCAC and LBAC are not the same thing. LBAC is a ", "bbox": {"l": 312.36005, "t": 419.62871999999993, "r": 541.24963, "b": 428.8417099999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "security model that is primarily intended for government applications. LBAC requires that ", "bbox": {"l": 142.80002, "t": 431.62854, "r": 536.27075, "b": 440.84152, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "data and users be classified with a fixed set of rules that are implemented. RCAC is a ", "bbox": {"l": 142.80002, "t": 443.62836, "r": 522.34973, "b": 452.84134, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "general-purpose security model that is primarily intended for commercial customers. You ", "bbox": {"l": 142.80002, "t": 455.62817, "r": 536.03772, "b": 464.84116, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "can use RCAC to create your own security rules, which in turn allows for more flexibility.", "bbox": {"l": 142.80002, "t": 467.62799, "r": 528.96118, "b": 476.84097, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 29, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.47321319580078, "t": 754.3320922851562, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9086033701896667, "cells": [{"id": 0, "text": "14 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "14"}, {"label": "page_footer", "id": 1, "page_no": 29, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.28377532958984, "t": 754.7196655273438, "r": 334.42142, "b": 763.9346313476562, "coord_origin": "TOPLEFT"}, "confidence": 0.9480336904525757, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "section_header", "id": 2, "page_no": 29, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.3137435913086, "t": 73.53276062011719, "r": 518.77576, "b": 89.27471923828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9650559425354004, "cells": [{"id": 2, "text": "3.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.198265, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Explanation of RCAC and the concept of access control", "bbox": {"l": 91.677902, "t": 74.34069999999997, "r": 518.77576, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, "text": "3.1 Explanation of RCAC and the concept of access control"}, {"label": "text", "id": 3, "page_no": 29, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.03993225097656, "t": 106.02466583251953, "r": 547.24268, "b": 152.26783752441406, "coord_origin": "TOPLEFT"}, "confidence": 0.9864612221717834, "cells": [{"id": 4, "text": "RCAC limits data access to those users who have a business \u201cneed to know\u201d. RCAC makes it ", "bbox": {"l": 136.8, "t": 106.6087, "r": 547.24268, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "easy to set up a rich and robust security policy that is based on roles and responsibilities. ", "bbox": {"l": 136.8, "t": 118.60852, "r": 532.82855, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "RCAC functionality is made available through the optional, no charge feature called \u201cIBM ", "bbox": {"l": 136.80099, "t": 130.60834, "r": 530.06171, "b": 139.82135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Advanced Data Security for i\u201d, also known as option 47 of IBM i 7.2.", "bbox": {"l": 136.80099, "t": 142.60815000000002, "r": 435.24844, "b": 151.82117000000005, "coord_origin": "TOPLEFT"}}]}, "text": "RCAC limits data access to those users who have a business \u201cneed to know\u201d. RCAC makes it easy to set up a rich and robust security policy that is based on roles and responsibilities. RCAC functionality is made available through the optional, no charge feature called \u201cIBM Advanced Data Security for i\u201d, also known as option 47 of IBM i 7.2."}, {"label": "text", "id": 4, "page_no": 29, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.07485961914062, "t": 163.92002868652344, "r": 505.92376999999993, "b": 186.08607482910156, "coord_origin": "TOPLEFT"}, "confidence": 0.9790142178535461, "cells": [{"id": 8, "text": "In DB2 for i, RCAC is implemented using two different approaches that address the ", "bbox": {"l": 136.80099, "t": 164.62775, "r": 505.92376999999993, "b": 173.84076000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "shortcomings of traditional control methods and mechanisms:", "bbox": {"l": 136.80099, "t": 176.62756000000002, "r": 408.77774, "b": 185.84058000000005, "coord_origin": "TOPLEFT"}}]}, "text": "In DB2 for i, RCAC is implemented using two different approaches that address the shortcomings of traditional control methods and mechanisms:"}, {"label": "list_item", "id": 5, "page_no": 29, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.7504425048828, "t": 192.93507385253906, "r": 227.34537000000003, "b": 202.84515380859375, "coord_origin": "TOPLEFT"}, "confidence": 0.943821907043457, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 193.75676999999996, "r": 141.78099, "b": 202.53156, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Row permissions", "bbox": {"l": 151.20116, "t": 193.60735999999997, "r": 227.34537000000003, "b": 202.82037000000003, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Row permissions"}, {"label": "list_item", "id": 6, "page_no": 29, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.5780487060547, "t": 205.08816528320312, "r": 217.25092, "b": 214.82019000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9294455051422119, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 205.75658999999996, "r": 141.78099, "b": 214.53137000000004, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Column masks", "bbox": {"l": 151.20116, "t": 205.60717999999997, "r": 217.25092, "b": 214.82019000000003, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Column masks"}, {"label": "text", "id": 7, "page_no": 29, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.8238983154297, "t": 226.61538696289062, "r": 547.20178, "b": 284.83905, "coord_origin": "TOPLEFT"}, "confidence": 0.9863597750663757, "cells": [{"id": 14, "text": "Another benefit of RCAC is that no database user is automatically exempt from the control. ", "bbox": {"l": 136.80099, "t": 227.62676999999996, "r": 539.90802, "b": 236.83978000000002, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Users with *ALLOBJ authority can no longer freely access all of the data in the database ", "bbox": {"l": 136.80099, "t": 239.62658999999996, "r": 529.76575, "b": 248.83960000000002, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "unless they have the appropriate permission to do so. The ability to manage row permissions ", "bbox": {"l": 136.80099, "t": 251.6264, "r": 547.20178, "b": 260.83942, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "and column masks rests with the database security administrator. The RCAC definitions, ", "bbox": {"l": 136.80099, "t": 263.62622, "r": 529.6911, "b": 272.83923000000004, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "enablement, and activation are controlled by SQL statements.", "bbox": {"l": 136.80099, "t": 275.62604, "r": 409.41107, "b": 284.83905, "coord_origin": "TOPLEFT"}}]}, "text": "Another benefit of RCAC is that no database user is automatically exempt from the control. Users with *ALLOBJ authority can no longer freely access all of the data in the database unless they have the appropriate permission to do so. The ability to manage row permissions and column masks rests with the database security administrator. The RCAC definitions, enablement, and activation are controlled by SQL statements."}, {"label": "text", "id": 8, "page_no": 29, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.0462646484375, "t": 296.7554016113281, "r": 547.2973, "b": 342.8580600000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9848619699478149, "cells": [{"id": 19, "text": "Row permissions and column masks require virtually no application changes. RCAC is based ", "bbox": {"l": 136.80099, "t": 297.64563, "r": 547.2973, "b": 306.85861, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "on specific rules that are transparent to existing applications and SQL interfaces. ", "bbox": {"l": 136.80101, "t": 309.64545000000004, "r": 495.0034800000001, "b": 318.85843, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Enforcement of your security policy does not depend on how applications or tools access the ", "bbox": {"l": 136.80101, "t": 321.64526, "r": 547.2865, "b": 330.85825, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "data.", "bbox": {"l": 136.80101, "t": 333.64508, "r": 158.99387, "b": 342.8580600000001, "coord_origin": "TOPLEFT"}}]}, "text": "Row permissions and column masks require virtually no application changes. RCAC is based on specific rules that are transparent to existing applications and SQL interfaces. Enforcement of your security policy does not depend on how applications or tools access the data."}, {"label": "text", "id": 9, "page_no": 29, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.23114013671875, "t": 354.7263488769531, "r": 535.67212, "b": 401.10906982421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9870187044143677, "cells": [{"id": 23, "text": "RCAC also facilitates multi-tenancy, which means that several independent customers or ", "bbox": {"l": 136.80101, "t": 355.60489, "r": 529.88434, "b": 364.81787, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "business units can share a single database table without being aware of one another. The ", "bbox": {"l": 136.80096, "t": 367.60470999999995, "r": 535.67212, "b": 376.81769, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "RCAC row permission ensures each user sees only the rows they are entitled to view ", "bbox": {"l": 136.80096, "t": 379.60452, "r": 515.33978, "b": 388.81750000000005, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "because the enforcement is handled by DB2 and not the application logic.", "bbox": {"l": 136.80096, "t": 391.60434, "r": 462.38034, "b": 400.81732, "coord_origin": "TOPLEFT"}}]}, "text": "RCAC also facilitates multi-tenancy, which means that several independent customers or business units can share a single database table without being aware of one another. The RCAC row permission ensures each user sees only the rows they are entitled to view because the enforcement is handled by DB2 and not the application logic."}, {"label": "section_header", "id": 10, "page_no": 29, "cluster": {"id": 10, "label": "section_header", "bbox": {"l": 64.24093627929688, "t": 501.6220397949219, "r": 383.47995, "b": 514.7472534179688, "coord_origin": "TOPLEFT"}, "confidence": 0.9663240909576416, "cells": [{"id": 27, "text": "3.1.1", "bbox": {"l": 64.800003, "t": 502.49472, "r": 93.984444, "b": 514.4827, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Row permission and column mask definitions", "bbox": {"l": 97.632515, "t": 502.49472, "r": 383.47995, "b": 514.4827, "coord_origin": "TOPLEFT"}}]}, "text": "3.1.1 Row permission and column mask definitions"}, {"label": "text", "id": 11, "page_no": 29, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.77207946777344, "t": 528.0364990234375, "r": 423.53543, "b": 538.3961791992188, "coord_origin": "TOPLEFT"}, "confidence": 0.9584894776344299, "cells": [{"id": 29, "text": "The following sections define row permission and column masks.", "bbox": {"l": 136.8, "t": 528.6486199999999, "r": 423.53543, "b": 537.86162, "coord_origin": "TOPLEFT"}}]}, "text": "The following sections define row permission and column masks."}, {"label": "section_header", "id": 12, "page_no": 29, "cluster": {"id": 12, "label": "section_header", "bbox": {"l": 136.47561645507812, "t": 553.8549194335938, "r": 229.26001, "b": 565.8992919921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9526190161705017, "cells": [{"id": 30, "text": "Row permission", "bbox": {"l": 136.8, "t": 554.4839, "r": 229.26001, "b": 565.58389, "coord_origin": "TOPLEFT"}}]}, "text": "Row permission"}, {"label": "text", "id": 13, "page_no": 29, "cluster": {"id": 13, "label": "text", "bbox": {"l": 135.9830322265625, "t": 568.7094116210938, "r": 544.57147, "b": 602.930908203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9861118793487549, "cells": [{"id": 31, "text": "A row permission is a database object that manifests a row access control rule for a specific ", "bbox": {"l": 136.8, "t": 569.6287199999999, "r": 544.57147, "b": 578.84172, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "table. It is essentially a search condition that describes which rows you can access. For ", "bbox": {"l": 136.8, "t": 581.62852, "r": 524.09955, "b": 590.84152, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "example, a manager can see only the rows that represent his or her employees.", "bbox": {"l": 136.8, "t": 593.62833, "r": 488.96762, "b": 602.84132, "coord_origin": "TOPLEFT"}}]}, "text": "A row permission is a database object that manifests a row access control rule for a specific table. It is essentially a search condition that describes which rows you can access. For example, a manager can see only the rows that represent his or her employees."}, {"label": "text", "id": 14, "page_no": 29, "cluster": {"id": 14, "label": "text", "bbox": {"l": 141.94046020507812, "t": 418.39910888671875, "r": 541.24963, "b": 477.48040771484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9858124256134033, "cells": [{"id": 34, "text": "Label-based access control (LBAC):", "bbox": {"l": 142.8, "t": 419.62871999999993, "r": 312.3212, "b": 428.8417099999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": " RCAC and LBAC are not the same thing. LBAC is a ", "bbox": {"l": 312.36005, "t": 419.62871999999993, "r": 541.24963, "b": 428.8417099999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "security model that is primarily intended for government applications. LBAC requires that ", "bbox": {"l": 142.80002, "t": 431.62854, "r": 536.27075, "b": 440.84152, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "data and users be classified with a fixed set of rules that are implemented. RCAC is a ", "bbox": {"l": 142.80002, "t": 443.62836, "r": 522.34973, "b": 452.84134, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "general-purpose security model that is primarily intended for commercial customers. You ", "bbox": {"l": 142.80002, "t": 455.62817, "r": 536.03772, "b": 464.84116, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "can use RCAC to create your own security rules, which in turn allows for more flexibility.", "bbox": {"l": 142.80002, "t": 467.62799, "r": 528.96118, "b": 476.84097, "coord_origin": "TOPLEFT"}}]}, "text": "Label-based access control (LBAC): RCAC and LBAC are not the same thing. LBAC is a security model that is primarily intended for government applications. LBAC requires that data and users be classified with a fixed set of rules that are implemented. RCAC is a general-purpose security model that is primarily intended for commercial customers. You can use RCAC to create your own security rules, which in turn allows for more flexibility."}], "body": [{"label": "section_header", "id": 2, "page_no": 29, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.3137435913086, "t": 73.53276062011719, "r": 518.77576, "b": 89.27471923828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9650559425354004, "cells": [{"id": 2, "text": "3.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.198265, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Explanation of RCAC and the concept of access control", "bbox": {"l": 91.677902, "t": 74.34069999999997, "r": 518.77576, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, "text": "3.1 Explanation of RCAC and the concept of access control"}, {"label": "text", "id": 3, "page_no": 29, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.03993225097656, "t": 106.02466583251953, "r": 547.24268, "b": 152.26783752441406, "coord_origin": "TOPLEFT"}, "confidence": 0.9864612221717834, "cells": [{"id": 4, "text": "RCAC limits data access to those users who have a business \u201cneed to know\u201d. RCAC makes it ", "bbox": {"l": 136.8, "t": 106.6087, "r": 547.24268, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "easy to set up a rich and robust security policy that is based on roles and responsibilities. ", "bbox": {"l": 136.8, "t": 118.60852, "r": 532.82855, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "RCAC functionality is made available through the optional, no charge feature called \u201cIBM ", "bbox": {"l": 136.80099, "t": 130.60834, "r": 530.06171, "b": 139.82135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Advanced Data Security for i\u201d, also known as option 47 of IBM i 7.2.", "bbox": {"l": 136.80099, "t": 142.60815000000002, "r": 435.24844, "b": 151.82117000000005, "coord_origin": "TOPLEFT"}}]}, "text": "RCAC limits data access to those users who have a business \u201cneed to know\u201d. RCAC makes it easy to set up a rich and robust security policy that is based on roles and responsibilities. RCAC functionality is made available through the optional, no charge feature called \u201cIBM Advanced Data Security for i\u201d, also known as option 47 of IBM i 7.2."}, {"label": "text", "id": 4, "page_no": 29, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.07485961914062, "t": 163.92002868652344, "r": 505.92376999999993, "b": 186.08607482910156, "coord_origin": "TOPLEFT"}, "confidence": 0.9790142178535461, "cells": [{"id": 8, "text": "In DB2 for i, RCAC is implemented using two different approaches that address the ", "bbox": {"l": 136.80099, "t": 164.62775, "r": 505.92376999999993, "b": 173.84076000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "shortcomings of traditional control methods and mechanisms:", "bbox": {"l": 136.80099, "t": 176.62756000000002, "r": 408.77774, "b": 185.84058000000005, "coord_origin": "TOPLEFT"}}]}, "text": "In DB2 for i, RCAC is implemented using two different approaches that address the shortcomings of traditional control methods and mechanisms:"}, {"label": "list_item", "id": 5, "page_no": 29, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.7504425048828, "t": 192.93507385253906, "r": 227.34537000000003, "b": 202.84515380859375, "coord_origin": "TOPLEFT"}, "confidence": 0.943821907043457, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 193.75676999999996, "r": 141.78099, "b": 202.53156, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Row permissions", "bbox": {"l": 151.20116, "t": 193.60735999999997, "r": 227.34537000000003, "b": 202.82037000000003, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Row permissions"}, {"label": "list_item", "id": 6, "page_no": 29, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.5780487060547, "t": 205.08816528320312, "r": 217.25092, "b": 214.82019000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9294455051422119, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 205.75658999999996, "r": 141.78099, "b": 214.53137000000004, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Column masks", "bbox": {"l": 151.20116, "t": 205.60717999999997, "r": 217.25092, "b": 214.82019000000003, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Column masks"}, {"label": "text", "id": 7, "page_no": 29, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.8238983154297, "t": 226.61538696289062, "r": 547.20178, "b": 284.83905, "coord_origin": "TOPLEFT"}, "confidence": 0.9863597750663757, "cells": [{"id": 14, "text": "Another benefit of RCAC is that no database user is automatically exempt from the control. ", "bbox": {"l": 136.80099, "t": 227.62676999999996, "r": 539.90802, "b": 236.83978000000002, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Users with *ALLOBJ authority can no longer freely access all of the data in the database ", "bbox": {"l": 136.80099, "t": 239.62658999999996, "r": 529.76575, "b": 248.83960000000002, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "unless they have the appropriate permission to do so. The ability to manage row permissions ", "bbox": {"l": 136.80099, "t": 251.6264, "r": 547.20178, "b": 260.83942, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "and column masks rests with the database security administrator. The RCAC definitions, ", "bbox": {"l": 136.80099, "t": 263.62622, "r": 529.6911, "b": 272.83923000000004, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "enablement, and activation are controlled by SQL statements.", "bbox": {"l": 136.80099, "t": 275.62604, "r": 409.41107, "b": 284.83905, "coord_origin": "TOPLEFT"}}]}, "text": "Another benefit of RCAC is that no database user is automatically exempt from the control. Users with *ALLOBJ authority can no longer freely access all of the data in the database unless they have the appropriate permission to do so. The ability to manage row permissions and column masks rests with the database security administrator. The RCAC definitions, enablement, and activation are controlled by SQL statements."}, {"label": "text", "id": 8, "page_no": 29, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.0462646484375, "t": 296.7554016113281, "r": 547.2973, "b": 342.8580600000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9848619699478149, "cells": [{"id": 19, "text": "Row permissions and column masks require virtually no application changes. RCAC is based ", "bbox": {"l": 136.80099, "t": 297.64563, "r": 547.2973, "b": 306.85861, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "on specific rules that are transparent to existing applications and SQL interfaces. ", "bbox": {"l": 136.80101, "t": 309.64545000000004, "r": 495.0034800000001, "b": 318.85843, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Enforcement of your security policy does not depend on how applications or tools access the ", "bbox": {"l": 136.80101, "t": 321.64526, "r": 547.2865, "b": 330.85825, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "data.", "bbox": {"l": 136.80101, "t": 333.64508, "r": 158.99387, "b": 342.8580600000001, "coord_origin": "TOPLEFT"}}]}, "text": "Row permissions and column masks require virtually no application changes. RCAC is based on specific rules that are transparent to existing applications and SQL interfaces. Enforcement of your security policy does not depend on how applications or tools access the data."}, {"label": "text", "id": 9, "page_no": 29, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.23114013671875, "t": 354.7263488769531, "r": 535.67212, "b": 401.10906982421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9870187044143677, "cells": [{"id": 23, "text": "RCAC also facilitates multi-tenancy, which means that several independent customers or ", "bbox": {"l": 136.80101, "t": 355.60489, "r": 529.88434, "b": 364.81787, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "business units can share a single database table without being aware of one another. The ", "bbox": {"l": 136.80096, "t": 367.60470999999995, "r": 535.67212, "b": 376.81769, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "RCAC row permission ensures each user sees only the rows they are entitled to view ", "bbox": {"l": 136.80096, "t": 379.60452, "r": 515.33978, "b": 388.81750000000005, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "because the enforcement is handled by DB2 and not the application logic.", "bbox": {"l": 136.80096, "t": 391.60434, "r": 462.38034, "b": 400.81732, "coord_origin": "TOPLEFT"}}]}, "text": "RCAC also facilitates multi-tenancy, which means that several independent customers or business units can share a single database table without being aware of one another. The RCAC row permission ensures each user sees only the rows they are entitled to view because the enforcement is handled by DB2 and not the application logic."}, {"label": "section_header", "id": 10, "page_no": 29, "cluster": {"id": 10, "label": "section_header", "bbox": {"l": 64.24093627929688, "t": 501.6220397949219, "r": 383.47995, "b": 514.7472534179688, "coord_origin": "TOPLEFT"}, "confidence": 0.9663240909576416, "cells": [{"id": 27, "text": "3.1.1", "bbox": {"l": 64.800003, "t": 502.49472, "r": 93.984444, "b": 514.4827, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Row permission and column mask definitions", "bbox": {"l": 97.632515, "t": 502.49472, "r": 383.47995, "b": 514.4827, "coord_origin": "TOPLEFT"}}]}, "text": "3.1.1 Row permission and column mask definitions"}, {"label": "text", "id": 11, "page_no": 29, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.77207946777344, "t": 528.0364990234375, "r": 423.53543, "b": 538.3961791992188, "coord_origin": "TOPLEFT"}, "confidence": 0.9584894776344299, "cells": [{"id": 29, "text": "The following sections define row permission and column masks.", "bbox": {"l": 136.8, "t": 528.6486199999999, "r": 423.53543, "b": 537.86162, "coord_origin": "TOPLEFT"}}]}, "text": "The following sections define row permission and column masks."}, {"label": "section_header", "id": 12, "page_no": 29, "cluster": {"id": 12, "label": "section_header", "bbox": {"l": 136.47561645507812, "t": 553.8549194335938, "r": 229.26001, "b": 565.8992919921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9526190161705017, "cells": [{"id": 30, "text": "Row permission", "bbox": {"l": 136.8, "t": 554.4839, "r": 229.26001, "b": 565.58389, "coord_origin": "TOPLEFT"}}]}, "text": "Row permission"}, {"label": "text", "id": 13, "page_no": 29, "cluster": {"id": 13, "label": "text", "bbox": {"l": 135.9830322265625, "t": 568.7094116210938, "r": 544.57147, "b": 602.930908203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9861118793487549, "cells": [{"id": 31, "text": "A row permission is a database object that manifests a row access control rule for a specific ", "bbox": {"l": 136.8, "t": 569.6287199999999, "r": 544.57147, "b": 578.84172, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "table. It is essentially a search condition that describes which rows you can access. For ", "bbox": {"l": 136.8, "t": 581.62852, "r": 524.09955, "b": 590.84152, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "example, a manager can see only the rows that represent his or her employees.", "bbox": {"l": 136.8, "t": 593.62833, "r": 488.96762, "b": 602.84132, "coord_origin": "TOPLEFT"}}]}, "text": "A row permission is a database object that manifests a row access control rule for a specific table. It is essentially a search condition that describes which rows you can access. For example, a manager can see only the rows that represent his or her employees."}, {"label": "text", "id": 14, "page_no": 29, "cluster": {"id": 14, "label": "text", "bbox": {"l": 141.94046020507812, "t": 418.39910888671875, "r": 541.24963, "b": 477.48040771484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9858124256134033, "cells": [{"id": 34, "text": "Label-based access control (LBAC):", "bbox": {"l": 142.8, "t": 419.62871999999993, "r": 312.3212, "b": 428.8417099999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": " RCAC and LBAC are not the same thing. LBAC is a ", "bbox": {"l": 312.36005, "t": 419.62871999999993, "r": 541.24963, "b": 428.8417099999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "security model that is primarily intended for government applications. LBAC requires that ", "bbox": {"l": 142.80002, "t": 431.62854, "r": 536.27075, "b": 440.84152, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "data and users be classified with a fixed set of rules that are implemented. RCAC is a ", "bbox": {"l": 142.80002, "t": 443.62836, "r": 522.34973, "b": 452.84134, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "general-purpose security model that is primarily intended for commercial customers. You ", "bbox": {"l": 142.80002, "t": 455.62817, "r": 536.03772, "b": 464.84116, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "can use RCAC to create your own security rules, which in turn allows for more flexibility.", "bbox": {"l": 142.80002, "t": 467.62799, "r": 528.96118, "b": 476.84097, "coord_origin": "TOPLEFT"}}]}, "text": "Label-based access control (LBAC): RCAC and LBAC are not the same thing. LBAC is a security model that is primarily intended for government applications. LBAC requires that data and users be classified with a fixed set of rules that are implemented. RCAC is a general-purpose security model that is primarily intended for commercial customers. You can use RCAC to create your own security rules, which in turn allows for more flexibility."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 29, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.47321319580078, "t": 754.3320922851562, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9086033701896667, "cells": [{"id": 0, "text": "14 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "14"}, {"label": "page_footer", "id": 1, "page_no": 29, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.28377532958984, "t": 754.7196655273438, "r": 334.42142, "b": 763.9346313476562, "coord_origin": "TOPLEFT"}, "confidence": 0.9480336904525757, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 30, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "15", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "The SQL ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 179.58179, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "CREATE PERMISSION", "bbox": {"l": 179.57977, "t": 71.65845000000002, "r": 264.47879, "b": 80.48302999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " statement that is shown in Figure 3-1 is used to define and ", "bbox": {"l": 264.53955, "t": 71.50903000000005, "r": 528.73059, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "initially enable or disable the row access rules.", "bbox": {"l": 136.79956, "t": 83.50885000000017, "r": 341.71762, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Figure 3-1 CREATE PERMISSION SQL statement", "bbox": {"l": 136.8, "t": 414.138, "r": 341.97659, "b": 422.46301, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Column mask", "bbox": {"l": 136.8, "t": 439.94399999999996, "r": 215.37601, "b": 451.04401, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "A column mask is a database object that manifests a column value access control rule for a ", "bbox": {"l": 136.8, "t": 455.08871000000005, "r": 542.76648, "b": 464.3017, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "specific column in a specific table. It uses a CASE expression that describes what you see ", "bbox": {"l": 136.8, "t": 467.08853, "r": 537.84125, "b": 476.30151, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "when you access the column. For example, a teller can see only the last four digits of a tax ", "bbox": {"l": 136.8, "t": 479.08835, "r": 538.80927, "b": 488.30133, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "identification number.", "bbox": {"l": 136.8, "t": 491.08817, "r": 231.20888, "b": 500.30115, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CREATE PERMISSION", "bbox": {"l": 148.1337, "t": 139.67969000000005, "r": 246.7961, "b": 149.50982999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "<", "bbox": {"l": 251.86685, "t": 139.67969000000005, "r": 257.58578, "b": 149.49834999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "permission name", "bbox": {"l": 257.59152, "t": 139.67969000000005, "r": 336.99741, "b": 149.50982999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": ">", "bbox": {"l": 337.01233, "t": 139.67969000000005, "r": 342.73126, "b": 149.49834999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Names the row permission for row access control", "bbox": {"l": 346.56491, "t": 121.46252000000004, "r": 530.74371, "b": 129.33507999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "ON", "bbox": {"l": 148.1337, "t": 181.06255999999996, "r": 163.45079, "b": 190.8927, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "<", "bbox": {"l": 168.58405, "t": 181.06255999999996, "r": 174.30298, "b": 190.88122999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "table name", "bbox": {"l": 174.30872, "t": 181.06255999999996, "r": 226.86777, "b": 190.8927, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": ">", "bbox": {"l": 226.86548000000002, "t": 181.06255999999996, "r": 232.58441, "b": 190.88122999999996, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Identifies the table on which the row ", "bbox": {"l": 311.3204, "t": 166.29413, "r": 450.77191000000005, "b": 174.16669000000002, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "permission is created", "bbox": {"l": 450.86123999999995, "t": 166.29413, "r": 529.93134, "b": 174.16669000000002, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "AS ", "bbox": {"l": 148.1337, "t": 222.44550000000004, "r": 163.10973, "b": 232.27562999999998, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "<", "bbox": {"l": 165.68669, "t": 222.44550000000004, "r": 171.40562, "b": 232.26415999999995, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "correlation name", "bbox": {"l": 171.41136, "t": 222.44550000000004, "r": 251.20424000000003, "b": 232.27562999999998, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": ">", "bbox": {"l": 251.21115, "t": 222.44550000000004, "r": 256.93008, "b": 232.26415999999995, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Specifies an optional correlation name that ca", "bbox": {"l": 235.79649, "t": 204.22839, "r": 406.62051, "b": 212.10095, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "be used within search-condition", "bbox": {"l": 480.53094, "t": 204.22839, "r": 532.89496, "b": 212.10095, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "FOR ROWS", "bbox": {"l": 148.1337, "t": 263.82836999999995, "r": 199.72467, "b": 273.65851, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Indicates that a row permission is cr", "bbox": {"l": 321.56271, "t": 246.09411999999998, "r": 455.3432, "b": 253.96667000000002, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "eated", "bbox": {"l": 455.20786000000004, "t": 246.09411999999998, "r": 476.48404, "b": 253.96667000000002, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Specifies a condition that can be ", "bbox": {"l": 321.5972, "t": 266.30267000000003, "r": 444.0292400000001, "b": 274.17523000000006, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "true,", "bbox": {"l": 444.07986, "t": 266.30267000000003, "r": 459.08678999999995, "b": 274.17523000000006, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "false, or unknown", "bbox": {"l": 464.2088, "t": 266.30267000000003, "r": 530.94897, "b": 274.17523000000006, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "WHERE", "bbox": {"l": 148.1337, "t": 291.41708, "r": 183.42342, "b": 301.24722, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "<", "bbox": {"l": 188.61984, "t": 291.41708, "r": 194.33878, "b": 301.23572, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "logic to test: user and/or group and/or column value", "bbox": {"l": 194.34451, "t": 291.41708, "r": 437.04659999999996, "b": 301.24722, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": ">", "bbox": {"l": 437.09020999999996, "t": 291.41708, "r": 442.80914000000007, "b": 301.23572, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ENFORCED FOR ALL ACCESS", "bbox": {"l": 148.1337, "t": 332.79999, "r": 278.77805, "b": 342.63013, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Specifies that the row permission applies to all ref", "bbox": {"l": 271.55829, "t": 314.58276, "r": 457.4451, "b": 322.45535, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "erences of the table", "bbox": {"l": 457.19281, "t": 314.58276, "r": 531.74939, "b": 322.45535, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "ENABLE", "bbox": {"l": 148.1337, "t": 374.18289, "r": 185.17584, "b": 384.01302999999996, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Specifies that the row permission is to", "bbox": {"l": 312.28601, "t": 355.96576000000005, "r": 454.33505, "b": 363.83835, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": " be initially enabled", "bbox": {"l": 454.3461, "t": 355.96576000000005, "r": 527.05286, "b": 363.83835, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "S", "bbox": {"l": 311.73431, "t": 376.65717, "r": 315.94684, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "ifith t th", "bbox": {"l": 329.28326, "t": 376.65717, "r": 371.71786, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "i", "bbox": {"l": 415.0014, "t": 376.65717, "r": 417.09616, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "i", "bbox": {"l": 424.27356, "t": 376.65717, "r": 426.36832, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "i", "bbox": {"l": 438.13208, "t": 376.65717, "r": 440.2268399999999, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "t", "bbox": {"l": 445.88681, "t": 376.65717, "r": 448.95757999999995, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "b", "bbox": {"l": 455.8532400000001, "t": 376.65717, "r": 460.67346000000003, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "i", "bbox": {"l": 467.36746, "t": 376.65717, "r": 470.06998000000004, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "iti ll", "bbox": {"l": 472.73705999999993, "t": 376.65717, "r": 490.1676, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "di", "bbox": {"l": 496.33661, "t": 376.65717, "r": 503.2608, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "bl d", "bbox": {"l": 511.26138, "t": 376.65717, "r": 527.59674, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "DISABLE", "bbox": {"l": 148.1337, "t": 387.9772, "r": 187.6265, "b": 397.80734000000007, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": ";", "bbox": {"l": 187.58514, "t": 387.9772, "r": 190.6628, "b": 397.79583999999994, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Specifies that the row permission is to ", "bbox": {"l": 311.73431, "t": 376.65717, "r": 455.83047000000005, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "be initially disabled", "bbox": {"l": 455.8848, "t": 376.65717, "r": 527.62122, "b": 384.52975, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 344.5666809082031, "t": 754.718017578125, "r": 523.60162, "b": 764.0823974609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9526246786117554, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 536.09998, "t": 754.310302734375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.907107949256897, "cells": [{"id": 1, "text": "15", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "caption", "bbox": {"l": 135.73501586914062, "t": 70.48638153076172, "r": 528.73059, "b": 92.9990234375, "coord_origin": "TOPLEFT"}, "confidence": 0.872844934463501, "cells": [{"id": 2, "text": "The SQL ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 179.58179, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "CREATE PERMISSION", "bbox": {"l": 179.57977, "t": 71.65845000000002, "r": 264.47879, "b": 80.48302999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " statement that is shown in Figure 3-1 is used to define and ", "bbox": {"l": 264.53955, "t": 71.50903000000005, "r": 528.73059, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "initially enable or disable the row access rules.", "bbox": {"l": 136.79956, "t": 83.50885000000017, "r": 341.71762, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.3166961669922, "t": 413.26751708984375, "r": 342.55548095703125, "b": 422.8843078613281, "coord_origin": "TOPLEFT"}, "confidence": 0.9387834072113037, "cells": [{"id": 6, "text": "Figure 3-1 CREATE PERMISSION SQL statement", "bbox": {"l": 136.8, "t": 414.138, "r": 341.97659, "b": 422.46301, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 136.24984741210938, "t": 438.7343444824219, "r": 215.88082885742188, "b": 451.04401, "coord_origin": "TOPLEFT"}, "confidence": 0.9477567076683044, "cells": [{"id": 7, "text": "Column mask", "bbox": {"l": 136.8, "t": 439.94399999999996, "r": 215.37601, "b": 451.04401, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.803466796875, "t": 453.9210510253906, "r": 542.76648, "b": 500.30115, "coord_origin": "TOPLEFT"}, "confidence": 0.9843975901603699, "cells": [{"id": 8, "text": "A column mask is a database object that manifests a column value access control rule for a ", "bbox": {"l": 136.8, "t": 455.08871000000005, "r": 542.76648, "b": 464.3017, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "specific column in a specific table. It uses a CASE expression that describes what you see ", "bbox": {"l": 136.8, "t": 467.08853, "r": 537.84125, "b": 476.30151, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "when you access the column. For example, a teller can see only the last four digits of a tax ", "bbox": {"l": 136.8, "t": 479.08835, "r": 538.80927, "b": 488.30133, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "identification number.", "bbox": {"l": 136.8, "t": 491.08817, "r": 231.20888, "b": 500.30115, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "picture", "bbox": {"l": 135.9717559814453, "t": 107.41072845458984, "r": 545.4180908203125, "b": 410.60931396484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9788318872451782, "cells": [{"id": 12, "text": "CREATE PERMISSION", "bbox": {"l": 148.1337, "t": 139.67969000000005, "r": 246.7961, "b": 149.50982999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "<", "bbox": {"l": 251.86685, "t": 139.67969000000005, "r": 257.58578, "b": 149.49834999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "permission name", "bbox": {"l": 257.59152, "t": 139.67969000000005, "r": 336.99741, "b": 149.50982999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": ">", "bbox": {"l": 337.01233, "t": 139.67969000000005, "r": 342.73126, "b": 149.49834999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Names the row permission for row access control", "bbox": {"l": 346.56491, "t": 121.46252000000004, "r": 530.74371, "b": 129.33507999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "ON", "bbox": {"l": 148.1337, "t": 181.06255999999996, "r": 163.45079, "b": 190.8927, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "<", "bbox": {"l": 168.58405, "t": 181.06255999999996, "r": 174.30298, "b": 190.88122999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "table name", "bbox": {"l": 174.30872, "t": 181.06255999999996, "r": 226.86777, "b": 190.8927, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": ">", "bbox": {"l": 226.86548000000002, "t": 181.06255999999996, "r": 232.58441, "b": 190.88122999999996, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Identifies the table on which the row ", "bbox": {"l": 311.3204, "t": 166.29413, "r": 450.77191000000005, "b": 174.16669000000002, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "permission is created", "bbox": {"l": 450.86123999999995, "t": 166.29413, "r": 529.93134, "b": 174.16669000000002, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "AS ", "bbox": {"l": 148.1337, "t": 222.44550000000004, "r": 163.10973, "b": 232.27562999999998, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "<", "bbox": {"l": 165.68669, "t": 222.44550000000004, "r": 171.40562, "b": 232.26415999999995, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "correlation name", "bbox": {"l": 171.41136, "t": 222.44550000000004, "r": 251.20424000000003, "b": 232.27562999999998, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": ">", "bbox": {"l": 251.21115, "t": 222.44550000000004, "r": 256.93008, "b": 232.26415999999995, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Specifies an optional correlation name that ca", "bbox": {"l": 235.79649, "t": 204.22839, "r": 406.62051, "b": 212.10095, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "be used within search-condition", "bbox": {"l": 480.53094, "t": 204.22839, "r": 532.89496, "b": 212.10095, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "FOR ROWS", "bbox": {"l": 148.1337, "t": 263.82836999999995, "r": 199.72467, "b": 273.65851, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Indicates that a row permission is cr", "bbox": {"l": 321.56271, "t": 246.09411999999998, "r": 455.3432, "b": 253.96667000000002, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "eated", "bbox": {"l": 455.20786000000004, "t": 246.09411999999998, "r": 476.48404, "b": 253.96667000000002, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Specifies a condition that can be ", "bbox": {"l": 321.5972, "t": 266.30267000000003, "r": 444.0292400000001, "b": 274.17523000000006, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "true,", "bbox": {"l": 444.07986, "t": 266.30267000000003, "r": 459.08678999999995, "b": 274.17523000000006, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "false, or unknown", "bbox": {"l": 464.2088, "t": 266.30267000000003, "r": 530.94897, "b": 274.17523000000006, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "WHERE", "bbox": {"l": 148.1337, "t": 291.41708, "r": 183.42342, "b": 301.24722, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "<", "bbox": {"l": 188.61984, "t": 291.41708, "r": 194.33878, "b": 301.23572, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "logic to test: user and/or group and/or column value", "bbox": {"l": 194.34451, "t": 291.41708, "r": 437.04659999999996, "b": 301.24722, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": ">", "bbox": {"l": 437.09020999999996, "t": 291.41708, "r": 442.80914000000007, "b": 301.23572, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ENFORCED FOR ALL ACCESS", "bbox": {"l": 148.1337, "t": 332.79999, "r": 278.77805, "b": 342.63013, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Specifies that the row permission applies to all ref", "bbox": {"l": 271.55829, "t": 314.58276, "r": 457.4451, "b": 322.45535, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "erences of the table", "bbox": {"l": 457.19281, "t": 314.58276, "r": 531.74939, "b": 322.45535, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "ENABLE", "bbox": {"l": 148.1337, "t": 374.18289, "r": 185.17584, "b": 384.01302999999996, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Specifies that the row permission is to", "bbox": {"l": 312.28601, "t": 355.96576000000005, "r": 454.33505, "b": 363.83835, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": " be initially enabled", "bbox": {"l": 454.3461, "t": 355.96576000000005, "r": 527.05286, "b": 363.83835, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "S", "bbox": {"l": 311.73431, "t": 376.65717, "r": 315.94684, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "ifith t th", "bbox": {"l": 329.28326, "t": 376.65717, "r": 371.71786, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "i", "bbox": {"l": 415.0014, "t": 376.65717, "r": 417.09616, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "i", "bbox": {"l": 424.27356, "t": 376.65717, "r": 426.36832, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "i", "bbox": {"l": 438.13208, "t": 376.65717, "r": 440.2268399999999, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "t", "bbox": {"l": 445.88681, "t": 376.65717, "r": 448.95757999999995, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "b", "bbox": {"l": 455.8532400000001, "t": 376.65717, "r": 460.67346000000003, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "i", "bbox": {"l": 467.36746, "t": 376.65717, "r": 470.06998000000004, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "iti ll", "bbox": {"l": 472.73705999999993, "t": 376.65717, "r": 490.1676, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "di", "bbox": {"l": 496.33661, "t": 376.65717, "r": 503.2608, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "bl d", "bbox": {"l": 511.26138, "t": 376.65717, "r": 527.59674, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "DISABLE", "bbox": {"l": 148.1337, "t": 387.9772, "r": 187.6265, "b": 397.80734000000007, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": ";", "bbox": {"l": 187.58514, "t": 387.9772, "r": 190.6628, "b": 397.79583999999994, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Specifies that the row permission is to ", "bbox": {"l": 311.73431, "t": 376.65717, "r": 455.83047000000005, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "be initially disabled", "bbox": {"l": 455.8848, "t": 376.65717, "r": 527.62122, "b": 384.52975, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 30, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.5666809082031, "t": 754.718017578125, "r": 523.60162, "b": 764.0823974609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9526246786117554, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 30, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 536.09998, "t": 754.310302734375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.907107949256897, "cells": [{"id": 1, "text": "15", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "15"}, {"label": "caption", "id": 2, "page_no": 30, "cluster": {"id": 2, "label": "caption", "bbox": {"l": 135.73501586914062, "t": 70.48638153076172, "r": 528.73059, "b": 92.9990234375, "coord_origin": "TOPLEFT"}, "confidence": 0.872844934463501, "cells": [{"id": 2, "text": "The SQL ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 179.58179, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "CREATE PERMISSION", "bbox": {"l": 179.57977, "t": 71.65845000000002, "r": 264.47879, "b": 80.48302999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " statement that is shown in Figure 3-1 is used to define and ", "bbox": {"l": 264.53955, "t": 71.50903000000005, "r": 528.73059, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "initially enable or disable the row access rules.", "bbox": {"l": 136.79956, "t": 83.50885000000017, "r": 341.71762, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "The SQL CREATE PERMISSION statement that is shown in Figure 3-1 is used to define and initially enable or disable the row access rules."}, {"label": "caption", "id": 3, "page_no": 30, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.3166961669922, "t": 413.26751708984375, "r": 342.55548095703125, "b": 422.8843078613281, "coord_origin": "TOPLEFT"}, "confidence": 0.9387834072113037, "cells": [{"id": 6, "text": "Figure 3-1 CREATE PERMISSION SQL statement", "bbox": {"l": 136.8, "t": 414.138, "r": 341.97659, "b": 422.46301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-1 CREATE PERMISSION SQL statement"}, {"label": "section_header", "id": 4, "page_no": 30, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 136.24984741210938, "t": 438.7343444824219, "r": 215.88082885742188, "b": 451.04401, "coord_origin": "TOPLEFT"}, "confidence": 0.9477567076683044, "cells": [{"id": 7, "text": "Column mask", "bbox": {"l": 136.8, "t": 439.94399999999996, "r": 215.37601, "b": 451.04401, "coord_origin": "TOPLEFT"}}]}, "text": "Column mask"}, {"label": "text", "id": 5, "page_no": 30, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.803466796875, "t": 453.9210510253906, "r": 542.76648, "b": 500.30115, "coord_origin": "TOPLEFT"}, "confidence": 0.9843975901603699, "cells": [{"id": 8, "text": "A column mask is a database object that manifests a column value access control rule for a ", "bbox": {"l": 136.8, "t": 455.08871000000005, "r": 542.76648, "b": 464.3017, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "specific column in a specific table. It uses a CASE expression that describes what you see ", "bbox": {"l": 136.8, "t": 467.08853, "r": 537.84125, "b": 476.30151, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "when you access the column. For example, a teller can see only the last four digits of a tax ", "bbox": {"l": 136.8, "t": 479.08835, "r": 538.80927, "b": 488.30133, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "identification number.", "bbox": {"l": 136.8, "t": 491.08817, "r": 231.20888, "b": 500.30115, "coord_origin": "TOPLEFT"}}]}, "text": "A column mask is a database object that manifests a column value access control rule for a specific column in a specific table. It uses a CASE expression that describes what you see when you access the column. For example, a teller can see only the last four digits of a tax identification number."}, {"label": "picture", "id": 6, "page_no": 30, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 135.9717559814453, "t": 107.41072845458984, "r": 545.4180908203125, "b": 410.60931396484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9788318872451782, "cells": [{"id": 12, "text": "CREATE PERMISSION", "bbox": {"l": 148.1337, "t": 139.67969000000005, "r": 246.7961, "b": 149.50982999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "<", "bbox": {"l": 251.86685, "t": 139.67969000000005, "r": 257.58578, "b": 149.49834999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "permission name", "bbox": {"l": 257.59152, "t": 139.67969000000005, "r": 336.99741, "b": 149.50982999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": ">", "bbox": {"l": 337.01233, "t": 139.67969000000005, "r": 342.73126, "b": 149.49834999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Names the row permission for row access control", "bbox": {"l": 346.56491, "t": 121.46252000000004, "r": 530.74371, "b": 129.33507999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "ON", "bbox": {"l": 148.1337, "t": 181.06255999999996, "r": 163.45079, "b": 190.8927, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "<", "bbox": {"l": 168.58405, "t": 181.06255999999996, "r": 174.30298, "b": 190.88122999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "table name", "bbox": {"l": 174.30872, "t": 181.06255999999996, "r": 226.86777, "b": 190.8927, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": ">", "bbox": {"l": 226.86548000000002, "t": 181.06255999999996, "r": 232.58441, "b": 190.88122999999996, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Identifies the table on which the row ", "bbox": {"l": 311.3204, "t": 166.29413, "r": 450.77191000000005, "b": 174.16669000000002, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "permission is created", "bbox": {"l": 450.86123999999995, "t": 166.29413, "r": 529.93134, "b": 174.16669000000002, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "AS ", "bbox": {"l": 148.1337, "t": 222.44550000000004, "r": 163.10973, "b": 232.27562999999998, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "<", "bbox": {"l": 165.68669, "t": 222.44550000000004, "r": 171.40562, "b": 232.26415999999995, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "correlation name", "bbox": {"l": 171.41136, "t": 222.44550000000004, "r": 251.20424000000003, "b": 232.27562999999998, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": ">", "bbox": {"l": 251.21115, "t": 222.44550000000004, "r": 256.93008, "b": 232.26415999999995, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Specifies an optional correlation name that ca", "bbox": {"l": 235.79649, "t": 204.22839, "r": 406.62051, "b": 212.10095, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "be used within search-condition", "bbox": {"l": 480.53094, "t": 204.22839, "r": 532.89496, "b": 212.10095, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "FOR ROWS", "bbox": {"l": 148.1337, "t": 263.82836999999995, "r": 199.72467, "b": 273.65851, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Indicates that a row permission is cr", "bbox": {"l": 321.56271, "t": 246.09411999999998, "r": 455.3432, "b": 253.96667000000002, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "eated", "bbox": {"l": 455.20786000000004, "t": 246.09411999999998, "r": 476.48404, "b": 253.96667000000002, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Specifies a condition that can be ", "bbox": {"l": 321.5972, "t": 266.30267000000003, "r": 444.0292400000001, "b": 274.17523000000006, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "true,", "bbox": {"l": 444.07986, "t": 266.30267000000003, "r": 459.08678999999995, "b": 274.17523000000006, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "false, or unknown", "bbox": {"l": 464.2088, "t": 266.30267000000003, "r": 530.94897, "b": 274.17523000000006, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "WHERE", "bbox": {"l": 148.1337, "t": 291.41708, "r": 183.42342, "b": 301.24722, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "<", "bbox": {"l": 188.61984, "t": 291.41708, "r": 194.33878, "b": 301.23572, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "logic to test: user and/or group and/or column value", "bbox": {"l": 194.34451, "t": 291.41708, "r": 437.04659999999996, "b": 301.24722, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": ">", "bbox": {"l": 437.09020999999996, "t": 291.41708, "r": 442.80914000000007, "b": 301.23572, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ENFORCED FOR ALL ACCESS", "bbox": {"l": 148.1337, "t": 332.79999, "r": 278.77805, "b": 342.63013, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Specifies that the row permission applies to all ref", "bbox": {"l": 271.55829, "t": 314.58276, "r": 457.4451, "b": 322.45535, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "erences of the table", "bbox": {"l": 457.19281, "t": 314.58276, "r": 531.74939, "b": 322.45535, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "ENABLE", "bbox": {"l": 148.1337, "t": 374.18289, "r": 185.17584, "b": 384.01302999999996, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Specifies that the row permission is to", "bbox": {"l": 312.28601, "t": 355.96576000000005, "r": 454.33505, "b": 363.83835, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": " be initially enabled", "bbox": {"l": 454.3461, "t": 355.96576000000005, "r": 527.05286, "b": 363.83835, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "S", "bbox": {"l": 311.73431, "t": 376.65717, "r": 315.94684, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "ifith t th", "bbox": {"l": 329.28326, "t": 376.65717, "r": 371.71786, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "i", "bbox": {"l": 415.0014, "t": 376.65717, "r": 417.09616, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "i", "bbox": {"l": 424.27356, "t": 376.65717, "r": 426.36832, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "i", "bbox": {"l": 438.13208, "t": 376.65717, "r": 440.2268399999999, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "t", "bbox": {"l": 445.88681, "t": 376.65717, "r": 448.95757999999995, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "b", "bbox": {"l": 455.8532400000001, "t": 376.65717, "r": 460.67346000000003, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "i", "bbox": {"l": 467.36746, "t": 376.65717, "r": 470.06998000000004, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "iti ll", "bbox": {"l": 472.73705999999993, "t": 376.65717, "r": 490.1676, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "di", "bbox": {"l": 496.33661, "t": 376.65717, "r": 503.2608, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "bl d", "bbox": {"l": 511.26138, "t": 376.65717, "r": 527.59674, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "DISABLE", "bbox": {"l": 148.1337, "t": 387.9772, "r": 187.6265, "b": 397.80734000000007, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": ";", "bbox": {"l": 187.58514, "t": 387.9772, "r": 190.6628, "b": 397.79583999999994, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Specifies that the row permission is to ", "bbox": {"l": 311.73431, "t": 376.65717, "r": 455.83047000000005, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "be initially disabled", "bbox": {"l": 455.8848, "t": 376.65717, "r": 527.62122, "b": 384.52975, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "caption", "id": 2, "page_no": 30, "cluster": {"id": 2, "label": "caption", "bbox": {"l": 135.73501586914062, "t": 70.48638153076172, "r": 528.73059, "b": 92.9990234375, "coord_origin": "TOPLEFT"}, "confidence": 0.872844934463501, "cells": [{"id": 2, "text": "The SQL ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 179.58179, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "CREATE PERMISSION", "bbox": {"l": 179.57977, "t": 71.65845000000002, "r": 264.47879, "b": 80.48302999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " statement that is shown in Figure 3-1 is used to define and ", "bbox": {"l": 264.53955, "t": 71.50903000000005, "r": 528.73059, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "initially enable or disable the row access rules.", "bbox": {"l": 136.79956, "t": 83.50885000000017, "r": 341.71762, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "The SQL CREATE PERMISSION statement that is shown in Figure 3-1 is used to define and initially enable or disable the row access rules."}, {"label": "caption", "id": 3, "page_no": 30, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.3166961669922, "t": 413.26751708984375, "r": 342.55548095703125, "b": 422.8843078613281, "coord_origin": "TOPLEFT"}, "confidence": 0.9387834072113037, "cells": [{"id": 6, "text": "Figure 3-1 CREATE PERMISSION SQL statement", "bbox": {"l": 136.8, "t": 414.138, "r": 341.97659, "b": 422.46301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-1 CREATE PERMISSION SQL statement"}, {"label": "section_header", "id": 4, "page_no": 30, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 136.24984741210938, "t": 438.7343444824219, "r": 215.88082885742188, "b": 451.04401, "coord_origin": "TOPLEFT"}, "confidence": 0.9477567076683044, "cells": [{"id": 7, "text": "Column mask", "bbox": {"l": 136.8, "t": 439.94399999999996, "r": 215.37601, "b": 451.04401, "coord_origin": "TOPLEFT"}}]}, "text": "Column mask"}, {"label": "text", "id": 5, "page_no": 30, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.803466796875, "t": 453.9210510253906, "r": 542.76648, "b": 500.30115, "coord_origin": "TOPLEFT"}, "confidence": 0.9843975901603699, "cells": [{"id": 8, "text": "A column mask is a database object that manifests a column value access control rule for a ", "bbox": {"l": 136.8, "t": 455.08871000000005, "r": 542.76648, "b": 464.3017, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "specific column in a specific table. It uses a CASE expression that describes what you see ", "bbox": {"l": 136.8, "t": 467.08853, "r": 537.84125, "b": 476.30151, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "when you access the column. For example, a teller can see only the last four digits of a tax ", "bbox": {"l": 136.8, "t": 479.08835, "r": 538.80927, "b": 488.30133, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "identification number.", "bbox": {"l": 136.8, "t": 491.08817, "r": 231.20888, "b": 500.30115, "coord_origin": "TOPLEFT"}}]}, "text": "A column mask is a database object that manifests a column value access control rule for a specific column in a specific table. It uses a CASE expression that describes what you see when you access the column. For example, a teller can see only the last four digits of a tax identification number."}, {"label": "picture", "id": 6, "page_no": 30, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 135.9717559814453, "t": 107.41072845458984, "r": 545.4180908203125, "b": 410.60931396484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9788318872451782, "cells": [{"id": 12, "text": "CREATE PERMISSION", "bbox": {"l": 148.1337, "t": 139.67969000000005, "r": 246.7961, "b": 149.50982999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "<", "bbox": {"l": 251.86685, "t": 139.67969000000005, "r": 257.58578, "b": 149.49834999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "permission name", "bbox": {"l": 257.59152, "t": 139.67969000000005, "r": 336.99741, "b": 149.50982999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": ">", "bbox": {"l": 337.01233, "t": 139.67969000000005, "r": 342.73126, "b": 149.49834999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Names the row permission for row access control", "bbox": {"l": 346.56491, "t": 121.46252000000004, "r": 530.74371, "b": 129.33507999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "ON", "bbox": {"l": 148.1337, "t": 181.06255999999996, "r": 163.45079, "b": 190.8927, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "<", "bbox": {"l": 168.58405, "t": 181.06255999999996, "r": 174.30298, "b": 190.88122999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "table name", "bbox": {"l": 174.30872, "t": 181.06255999999996, "r": 226.86777, "b": 190.8927, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": ">", "bbox": {"l": 226.86548000000002, "t": 181.06255999999996, "r": 232.58441, "b": 190.88122999999996, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Identifies the table on which the row ", "bbox": {"l": 311.3204, "t": 166.29413, "r": 450.77191000000005, "b": 174.16669000000002, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "permission is created", "bbox": {"l": 450.86123999999995, "t": 166.29413, "r": 529.93134, "b": 174.16669000000002, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "AS ", "bbox": {"l": 148.1337, "t": 222.44550000000004, "r": 163.10973, "b": 232.27562999999998, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "<", "bbox": {"l": 165.68669, "t": 222.44550000000004, "r": 171.40562, "b": 232.26415999999995, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "correlation name", "bbox": {"l": 171.41136, "t": 222.44550000000004, "r": 251.20424000000003, "b": 232.27562999999998, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": ">", "bbox": {"l": 251.21115, "t": 222.44550000000004, "r": 256.93008, "b": 232.26415999999995, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Specifies an optional correlation name that ca", "bbox": {"l": 235.79649, "t": 204.22839, "r": 406.62051, "b": 212.10095, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "be used within search-condition", "bbox": {"l": 480.53094, "t": 204.22839, "r": 532.89496, "b": 212.10095, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "FOR ROWS", "bbox": {"l": 148.1337, "t": 263.82836999999995, "r": 199.72467, "b": 273.65851, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Indicates that a row permission is cr", "bbox": {"l": 321.56271, "t": 246.09411999999998, "r": 455.3432, "b": 253.96667000000002, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "eated", "bbox": {"l": 455.20786000000004, "t": 246.09411999999998, "r": 476.48404, "b": 253.96667000000002, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Specifies a condition that can be ", "bbox": {"l": 321.5972, "t": 266.30267000000003, "r": 444.0292400000001, "b": 274.17523000000006, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "true,", "bbox": {"l": 444.07986, "t": 266.30267000000003, "r": 459.08678999999995, "b": 274.17523000000006, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "false, or unknown", "bbox": {"l": 464.2088, "t": 266.30267000000003, "r": 530.94897, "b": 274.17523000000006, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "WHERE", "bbox": {"l": 148.1337, "t": 291.41708, "r": 183.42342, "b": 301.24722, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "<", "bbox": {"l": 188.61984, "t": 291.41708, "r": 194.33878, "b": 301.23572, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "logic to test: user and/or group and/or column value", "bbox": {"l": 194.34451, "t": 291.41708, "r": 437.04659999999996, "b": 301.24722, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": ">", "bbox": {"l": 437.09020999999996, "t": 291.41708, "r": 442.80914000000007, "b": 301.23572, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ENFORCED FOR ALL ACCESS", "bbox": {"l": 148.1337, "t": 332.79999, "r": 278.77805, "b": 342.63013, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Specifies that the row permission applies to all ref", "bbox": {"l": 271.55829, "t": 314.58276, "r": 457.4451, "b": 322.45535, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "erences of the table", "bbox": {"l": 457.19281, "t": 314.58276, "r": 531.74939, "b": 322.45535, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "ENABLE", "bbox": {"l": 148.1337, "t": 374.18289, "r": 185.17584, "b": 384.01302999999996, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Specifies that the row permission is to", "bbox": {"l": 312.28601, "t": 355.96576000000005, "r": 454.33505, "b": 363.83835, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": " be initially enabled", "bbox": {"l": 454.3461, "t": 355.96576000000005, "r": 527.05286, "b": 363.83835, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "S", "bbox": {"l": 311.73431, "t": 376.65717, "r": 315.94684, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "ifith t th", "bbox": {"l": 329.28326, "t": 376.65717, "r": 371.71786, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "i", "bbox": {"l": 415.0014, "t": 376.65717, "r": 417.09616, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "i", "bbox": {"l": 424.27356, "t": 376.65717, "r": 426.36832, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "i", "bbox": {"l": 438.13208, "t": 376.65717, "r": 440.2268399999999, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "t", "bbox": {"l": 445.88681, "t": 376.65717, "r": 448.95757999999995, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "b", "bbox": {"l": 455.8532400000001, "t": 376.65717, "r": 460.67346000000003, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "i", "bbox": {"l": 467.36746, "t": 376.65717, "r": 470.06998000000004, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "iti ll", "bbox": {"l": 472.73705999999993, "t": 376.65717, "r": 490.1676, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "di", "bbox": {"l": 496.33661, "t": 376.65717, "r": 503.2608, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "bl d", "bbox": {"l": 511.26138, "t": 376.65717, "r": 527.59674, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "DISABLE", "bbox": {"l": 148.1337, "t": 387.9772, "r": 187.6265, "b": 397.80734000000007, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": ";", "bbox": {"l": 187.58514, "t": 387.9772, "r": 190.6628, "b": 397.79583999999994, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Specifies that the row permission is to ", "bbox": {"l": 311.73431, "t": 376.65717, "r": 455.83047000000005, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "be initially disabled", "bbox": {"l": 455.8848, "t": 376.65717, "r": 527.62122, "b": 384.52975, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 30, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.5666809082031, "t": 754.718017578125, "r": 523.60162, "b": 764.0823974609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9526246786117554, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 30, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 536.09998, "t": 754.310302734375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.907107949256897, "cells": [{"id": 1, "text": "15", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "15"}]}}, {"page_no": 31, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "16 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Column masks replace the need to create and use views to implement access control. The ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 539.91992, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "SQL", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 156.83156, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " CREATE MASK", "bbox": {"l": 156.77977, "t": 83.65790000000004, "r": 216.71904000000004, "b": 92.48248000000001, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": " statement that is shown in Figure 3-2 is used to define and initially enable ", "bbox": {"l": 216.7798, "t": 83.50847999999996, "r": 546.56934, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "or disable the column value access rules.", "bbox": {"l": 136.79898, "t": 95.50829999999996, "r": 319.09384, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Figure 3-2 CREATE MASK SQL statement", "bbox": {"l": 136.8, "t": 417.67801, "r": 311.0202, "b": 426.00302, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "3.1.2", "bbox": {"l": 64.800003, "t": 446.51474, "r": 94.02639, "b": 458.50272, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Enabling and activating RCAC", "bbox": {"l": 97.679688, "t": 446.51474, "r": 286.79703, "b": 458.50272, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "You can enable, disable, or regenerate row permissions and column masks by using the SQL", "bbox": {"l": 136.8, "t": 472.66873, "r": 542.90002, "b": 481.88171, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ALTER PERMISSION", "bbox": {"l": 136.80002, "t": 484.81793, "r": 216.71905999999998, "b": 493.64252, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": " statement and the SQL", "bbox": {"l": 216.77982, "t": 484.66855, "r": 322.30304, "b": 493.88153, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": " ALTER MASK", "bbox": {"l": 322.31995, "t": 484.81793, "r": 377.27921, "b": 493.64252, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " statement, as shown in Figure 3-3 on ", "bbox": {"l": 377.28021, "t": 484.66855, "r": 547.1828, "b": 493.88153, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "page 17.", "bbox": {"l": 136.8, "t": 496.66837, "r": 175.72868, "b": 505.88135, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Enabling and disabling effectively turns on or off the logic that is contained in the row ", "bbox": {"l": 136.8, "t": 518.68793, "r": 512.64056, "b": 527.9009100000001, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "permission or column mask. Regenerating causes the row permission or column mask to be ", "bbox": {"l": 136.8, "t": 530.6877099999999, "r": 546.4837, "b": 539.9007300000001, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "regenerated. The row permission definition in the catalog is used and existing dependencies ", "bbox": {"l": 136.8, "t": 542.68753, "r": 546.5564, "b": 551.90053, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "and authorizations, if any, are retained. The row permission definition is reevaluated as ", "bbox": {"l": 136.8, "t": 554.68733, "r": 521.92834, "b": 563.9003299999999, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "though the row permission were being created. Any user-defined functions (UDFs) that are ", "bbox": {"l": 136.8, "t": 566.68713, "r": 539.95581, "b": 575.90013, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "referenced in the row permission must be resolved to the same secure UDFs as were ", "bbox": {"l": 136.8, "t": 578.68694, "r": 516.60944, "b": 587.89993, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "resolved during the original row permission or column mask creation. The regenerate option ", "bbox": {"l": 136.8, "t": 590.68674, "r": 545.22186, "b": 599.89973, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "can be used to ensure that the RCAC logic is intact and still valid before any user attempts to ", "bbox": {"l": 136.8, "t": 602.68654, "r": 547.22864, "b": 611.89954, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "access the table.", "bbox": {"l": 136.79999, "t": 614.68634, "r": 211.46214, "b": 623.89934, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "CREATE MASK ", "bbox": {"l": 148.0576, "t": 157.17620999999997, "r": 217.21564000000004, "b": 166.98859000000004, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "<", "bbox": {"l": 219.86591, "t": 157.17620999999997, "r": 225.57451999999998, "b": 166.97717, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "mask name", "bbox": {"l": 225.58026000000004, "t": 157.17620999999997, "r": 279.14044, "b": 166.98859000000004, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "> ", "bbox": {"l": 279.14389, "t": 157.17620999999997, "r": 287.45465, "b": 166.97717, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Names the column mask for column access control", "bbox": {"l": 343.7215, "t": 133.51855, "r": 532.37885, "b": 141.37694999999997, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "ON", "bbox": {"l": 148.0576, "t": 198.48461999999995, "r": 163.34479, "b": 208.29700000000003, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "<", "bbox": {"l": 168.47108, "t": 198.48461999999995, "r": 174.1797, "b": 208.28557999999998, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "table name", "bbox": {"l": 174.18544, "t": 198.48461999999995, "r": 226.64977000000002, "b": 208.29700000000003, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": ">", "bbox": {"l": 226.64746, "t": 198.48461999999995, "r": 232.35608, "b": 208.28557999999998, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Identifies the table on which the column", "bbox": {"l": 315.11551, "t": 178.26935000000003, "r": 459.8544299999999, "b": 186.12775, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "mask is created", "bbox": {"l": 486.66354, "t": 178.26935000000003, "r": 524.99982, "b": 186.12775, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "AS ", "bbox": {"l": 148.0576, "t": 239.79303000000004, "r": 163.00664, "b": 249.60541, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "<", "bbox": {"l": 165.57895, "t": 239.79303000000004, "r": 171.28757, "b": 249.59398999999996, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "correlation name", "bbox": {"l": 171.2933, "t": 239.79303000000004, "r": 250.94238000000004, "b": 249.60541, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": ">", "bbox": {"l": 250.95038, "t": 239.79303000000004, "r": 256.659, "b": 249.59398999999996, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Specifies an optional correlation name that ca", "bbox": {"l": 238.9704, "t": 219.57763999999997, "r": 409.48642, "b": 227.43604000000005, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "be used within case-expression", "bbox": {"l": 471.4333500000001, "t": 219.57763999999997, "r": 532.17932, "b": 227.43604000000005, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "FOR COLUMN ", "bbox": {"l": 148.0576, "t": 281.10144, "r": 215.81255, "b": 290.91385, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "<", "bbox": {"l": 218.48804, "t": 281.10144, "r": 224.19666, "b": 290.9023700000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "column name", "bbox": {"l": 224.20238999999998, "t": 281.10144, "r": 287.21161, "b": 290.91385, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "> ", "bbox": {"l": 287.23224, "t": 281.10144, "r": 295.543, "b": 290.9023700000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Identifies the column to which", "bbox": {"l": 352.91269, "t": 260.88604999999995, "r": 461.25995, "b": 268.74445000000003, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "the mask applies", "bbox": {"l": 461.25995, "t": 260.88604999999995, "r": 530.51782, "b": 268.74445000000003, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "RETURN", "bbox": {"l": 148.0576, "t": 322.4097300000001, "r": 187.1972, "b": 332.22214, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "<", "bbox": {"l": 194.49576, "t": 322.4097300000001, "r": 200.20438, "b": 332.21066, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "logic to test: user and/or group and/or column values", "bbox": {"l": 200.21011, "t": 322.4097300000001, "r": 446.92813000000007, "b": 332.22214, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": ">", "bbox": {"l": 446.99347, "t": 322.4097300000001, "r": 452.70208999999994, "b": 332.21066, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "<", "bbox": {"l": 194.4951, "t": 336.17923, "r": 200.20372, "b": 345.98016000000007, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "logic to mask or return column value", "bbox": {"l": 200.2094, "t": 336.17923, "r": 369.65121, "b": 345.99164, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": ">", "bbox": {"l": 369.677, "t": 336.17923, "r": 375.38562, "b": 345.98016000000007, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Specifies a CASE expression", "bbox": {"l": 366.5788, "t": 298.7520400000001, "r": 464.75512999999995, "b": 306.61044, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "t", "bbox": {"l": 450.4165300000001, "t": 298.7520400000001, "r": 473.7167400000001, "b": 306.61044, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "o be evaluated", "bbox": {"l": 473.60275000000007, "t": 298.7520400000001, "r": 528.61884, "b": 306.61044, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "ENABLE", "bbox": {"l": 148.0576, "t": 377.48764000000006, "r": 185.03297, "b": 387.30005, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "Specifies that the column mask is to be", "bbox": {"l": 316.1138, "t": 364.15692, "r": 456.32498000000004, "b": 372.01532000000003, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "initially enabled", "bbox": {"l": 484.35620000000006, "t": 364.15692, "r": 522.08081, "b": 372.01532000000003, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Si", "bbox": {"l": 315.56299, "t": 384.81112999999993, "r": 348.48367, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "f", "bbox": {"l": 335.17587, "t": 384.81112999999993, "r": 351.27777, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "it", "bbox": {"l": 337.96262, "t": 384.81112999999993, "r": 366.59012, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "h", "bbox": {"l": 353.27679, "t": 384.81112999999993, "r": 371.40073, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "t", "bbox": {"l": 362.39529, "t": 384.81112999999993, "r": 378.77292, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "h l", "bbox": {"l": 370.62317, "t": 384.81112999999993, "r": 392.91788, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "k i tb", "bbox": {"l": 427.19424, "t": 384.81112999999993, "r": 462.85345, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "ii", "bbox": {"l": 462.58322, "t": 384.81112999999993, "r": 478.50681, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "t", "bbox": {"l": 471.59326, "t": 384.81112999999993, "r": 481.57663, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "il", "bbox": {"l": 474.65756, "t": 384.81112999999993, "r": 490.16849, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "ldi", "bbox": {"l": 483.2549399999999, "t": 384.81112999999993, "r": 498.37952000000007, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "bl d", "bbox": {"l": 506.36566000000005, "t": 384.81112999999993, "r": 522.67157, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "DISABLE", "bbox": {"l": 148.0576, "t": 391.25702, "r": 187.47119, "b": 401.06943, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": ";", "bbox": {"l": 187.43794, "t": 391.25702, "r": 190.51006, "b": 401.05795000000006, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "Specifies that the column mask is to be i", "bbox": {"l": 315.56299, "t": 384.81112999999993, "r": 464.69116, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "nitially disabled", "bbox": {"l": 464.68619, "t": 384.81112999999993, "r": 522.69604, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "Note:", "bbox": {"l": 142.8, "t": 642.70872, "r": 168.33246, "b": 651.92172, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": " An exclusive lock is required on the table object to perform the alter operation. All ", "bbox": {"l": 168.36035, "t": 642.70872, "r": 531.85156, "b": 651.92172, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "open cursors must be closed.", "bbox": {"l": 142.8, "t": 654.70853, "r": 273.34174, "b": 663.92152, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.44506072998047, "t": 754.4765014648438, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9057300090789795, "cells": [{"id": 0, "text": "16 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.31855010986328, "t": 754.713134765625, "r": 334.42142, "b": 763.9388427734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9489884376525879, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 136.0411376953125, "t": 70.60277557373047, "r": 546.56934, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.975629985332489, "cells": [{"id": 2, "text": "Column masks replace the need to create and use views to implement access control. The ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 539.91992, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "SQL", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 156.83156, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " CREATE MASK", "bbox": {"l": 156.77977, "t": 83.65790000000004, "r": 216.71904000000004, "b": 92.48248000000001, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": " statement that is shown in Figure 3-2 is used to define and initially enable ", "bbox": {"l": 216.7798, "t": 83.50847999999996, "r": 546.56934, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "or disable the column value access rules.", "bbox": {"l": 136.79898, "t": 95.50829999999996, "r": 319.09384, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 135.94520568847656, "t": 416.65887451171875, "r": 311.8898620605469, "b": 426.3029479980469, "coord_origin": "TOPLEFT"}, "confidence": 0.9420653581619263, "cells": [{"id": 7, "text": "Figure 3-2 CREATE MASK SQL statement", "bbox": {"l": 136.8, "t": 417.67801, "r": 311.0202, "b": 426.00302, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 64.21709442138672, "t": 445.58026123046875, "r": 286.79703, "b": 459.303955078125, "coord_origin": "TOPLEFT"}, "confidence": 0.967232346534729, "cells": [{"id": 8, "text": "3.1.2", "bbox": {"l": 64.800003, "t": 446.51474, "r": 94.02639, "b": 458.50272, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Enabling and activating RCAC", "bbox": {"l": 97.679688, "t": 446.51474, "r": 286.79703, "b": 458.50272, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.47596740722656, "t": 471.9873046875, "r": 547.1828, "b": 506.3340759277344, "coord_origin": "TOPLEFT"}, "confidence": 0.9810652136802673, "cells": [{"id": 10, "text": "You can enable, disable, or regenerate row permissions and column masks by using the SQL", "bbox": {"l": 136.8, "t": 472.66873, "r": 542.90002, "b": 481.88171, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ALTER PERMISSION", "bbox": {"l": 136.80002, "t": 484.81793, "r": 216.71905999999998, "b": 493.64252, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": " statement and the SQL", "bbox": {"l": 216.77982, "t": 484.66855, "r": 322.30304, "b": 493.88153, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": " ALTER MASK", "bbox": {"l": 322.31995, "t": 484.81793, "r": 377.27921, "b": 493.64252, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " statement, as shown in Figure 3-3 on ", "bbox": {"l": 377.28021, "t": 484.66855, "r": 547.1828, "b": 493.88153, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "page 17.", "bbox": {"l": 136.8, "t": 496.66837, "r": 175.72868, "b": 505.88135, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 136.03172302246094, "t": 517.8567504882812, "r": 547.22864, "b": 623.89934, "coord_origin": "TOPLEFT"}, "confidence": 0.9877449870109558, "cells": [{"id": 16, "text": "Enabling and disabling effectively turns on or off the logic that is contained in the row ", "bbox": {"l": 136.8, "t": 518.68793, "r": 512.64056, "b": 527.9009100000001, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "permission or column mask. Regenerating causes the row permission or column mask to be ", "bbox": {"l": 136.8, "t": 530.6877099999999, "r": 546.4837, "b": 539.9007300000001, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "regenerated. The row permission definition in the catalog is used and existing dependencies ", "bbox": {"l": 136.8, "t": 542.68753, "r": 546.5564, "b": 551.90053, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "and authorizations, if any, are retained. The row permission definition is reevaluated as ", "bbox": {"l": 136.8, "t": 554.68733, "r": 521.92834, "b": 563.9003299999999, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "though the row permission were being created. Any user-defined functions (UDFs) that are ", "bbox": {"l": 136.8, "t": 566.68713, "r": 539.95581, "b": 575.90013, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "referenced in the row permission must be resolved to the same secure UDFs as were ", "bbox": {"l": 136.8, "t": 578.68694, "r": 516.60944, "b": 587.89993, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "resolved during the original row permission or column mask creation. The regenerate option ", "bbox": {"l": 136.8, "t": 590.68674, "r": 545.22186, "b": 599.89973, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "can be used to ensure that the RCAC logic is intact and still valid before any user attempts to ", "bbox": {"l": 136.8, "t": 602.68654, "r": 547.22864, "b": 611.89954, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "access the table.", "bbox": {"l": 136.79999, "t": 614.68634, "r": 211.46214, "b": 623.89934, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "picture", "bbox": {"l": 135.58670043945312, "t": 119.31904602050781, "r": 545.5314331054688, "b": 414.1254577636719, "coord_origin": "TOPLEFT"}, "confidence": 0.9763185381889343, "cells": [{"id": 25, "text": "CREATE MASK ", "bbox": {"l": 148.0576, "t": 157.17620999999997, "r": 217.21564000000004, "b": 166.98859000000004, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "<", "bbox": {"l": 219.86591, "t": 157.17620999999997, "r": 225.57451999999998, "b": 166.97717, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "mask name", "bbox": {"l": 225.58026000000004, "t": 157.17620999999997, "r": 279.14044, "b": 166.98859000000004, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "> ", "bbox": {"l": 279.14389, "t": 157.17620999999997, "r": 287.45465, "b": 166.97717, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Names the column mask for column access control", "bbox": {"l": 343.7215, "t": 133.51855, "r": 532.37885, "b": 141.37694999999997, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "ON", "bbox": {"l": 148.0576, "t": 198.48461999999995, "r": 163.34479, "b": 208.29700000000003, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "<", "bbox": {"l": 168.47108, "t": 198.48461999999995, "r": 174.1797, "b": 208.28557999999998, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "table name", "bbox": {"l": 174.18544, "t": 198.48461999999995, "r": 226.64977000000002, "b": 208.29700000000003, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": ">", "bbox": {"l": 226.64746, "t": 198.48461999999995, "r": 232.35608, "b": 208.28557999999998, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Identifies the table on which the column", "bbox": {"l": 315.11551, "t": 178.26935000000003, "r": 459.8544299999999, "b": 186.12775, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "mask is created", "bbox": {"l": 486.66354, "t": 178.26935000000003, "r": 524.99982, "b": 186.12775, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "AS ", "bbox": {"l": 148.0576, "t": 239.79303000000004, "r": 163.00664, "b": 249.60541, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "<", "bbox": {"l": 165.57895, "t": 239.79303000000004, "r": 171.28757, "b": 249.59398999999996, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "correlation name", "bbox": {"l": 171.2933, "t": 239.79303000000004, "r": 250.94238000000004, "b": 249.60541, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": ">", "bbox": {"l": 250.95038, "t": 239.79303000000004, "r": 256.659, "b": 249.59398999999996, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Specifies an optional correlation name that ca", "bbox": {"l": 238.9704, "t": 219.57763999999997, "r": 409.48642, "b": 227.43604000000005, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "be used within case-expression", "bbox": {"l": 471.4333500000001, "t": 219.57763999999997, "r": 532.17932, "b": 227.43604000000005, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "FOR COLUMN ", "bbox": {"l": 148.0576, "t": 281.10144, "r": 215.81255, "b": 290.91385, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "<", "bbox": {"l": 218.48804, "t": 281.10144, "r": 224.19666, "b": 290.9023700000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "column name", "bbox": {"l": 224.20238999999998, "t": 281.10144, "r": 287.21161, "b": 290.91385, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "> ", "bbox": {"l": 287.23224, "t": 281.10144, "r": 295.543, "b": 290.9023700000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Identifies the column to which", "bbox": {"l": 352.91269, "t": 260.88604999999995, "r": 461.25995, "b": 268.74445000000003, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "the mask applies", "bbox": {"l": 461.25995, "t": 260.88604999999995, "r": 530.51782, "b": 268.74445000000003, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "RETURN", "bbox": {"l": 148.0576, "t": 322.4097300000001, "r": 187.1972, "b": 332.22214, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "<", "bbox": {"l": 194.49576, "t": 322.4097300000001, "r": 200.20438, "b": 332.21066, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "logic to test: user and/or group and/or column values", "bbox": {"l": 200.21011, "t": 322.4097300000001, "r": 446.92813000000007, "b": 332.22214, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": ">", "bbox": {"l": 446.99347, "t": 322.4097300000001, "r": 452.70208999999994, "b": 332.21066, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "<", "bbox": {"l": 194.4951, "t": 336.17923, "r": 200.20372, "b": 345.98016000000007, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "logic to mask or return column value", "bbox": {"l": 200.2094, "t": 336.17923, "r": 369.65121, "b": 345.99164, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": ">", "bbox": {"l": 369.677, "t": 336.17923, "r": 375.38562, "b": 345.98016000000007, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Specifies a CASE expression", "bbox": {"l": 366.5788, "t": 298.7520400000001, "r": 464.75512999999995, "b": 306.61044, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "t", "bbox": {"l": 450.4165300000001, "t": 298.7520400000001, "r": 473.7167400000001, "b": 306.61044, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "o be evaluated", "bbox": {"l": 473.60275000000007, "t": 298.7520400000001, "r": 528.61884, "b": 306.61044, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "ENABLE", "bbox": {"l": 148.0576, "t": 377.48764000000006, "r": 185.03297, "b": 387.30005, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "Specifies that the column mask is to be", "bbox": {"l": 316.1138, "t": 364.15692, "r": 456.32498000000004, "b": 372.01532000000003, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "initially enabled", "bbox": {"l": 484.35620000000006, "t": 364.15692, "r": 522.08081, "b": 372.01532000000003, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Si", "bbox": {"l": 315.56299, "t": 384.81112999999993, "r": 348.48367, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "f", "bbox": {"l": 335.17587, "t": 384.81112999999993, "r": 351.27777, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "it", "bbox": {"l": 337.96262, "t": 384.81112999999993, "r": 366.59012, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "h", "bbox": {"l": 353.27679, "t": 384.81112999999993, "r": 371.40073, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "t", "bbox": {"l": 362.39529, "t": 384.81112999999993, "r": 378.77292, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "h l", "bbox": {"l": 370.62317, "t": 384.81112999999993, "r": 392.91788, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "k i tb", "bbox": {"l": 427.19424, "t": 384.81112999999993, "r": 462.85345, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "ii", "bbox": {"l": 462.58322, "t": 384.81112999999993, "r": 478.50681, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "t", "bbox": {"l": 471.59326, "t": 384.81112999999993, "r": 481.57663, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "il", "bbox": {"l": 474.65756, "t": 384.81112999999993, "r": 490.16849, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "ldi", "bbox": {"l": 483.2549399999999, "t": 384.81112999999993, "r": 498.37952000000007, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "bl d", "bbox": {"l": 506.36566000000005, "t": 384.81112999999993, "r": 522.67157, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "DISABLE", "bbox": {"l": 148.0576, "t": 391.25702, "r": 187.47119, "b": 401.06943, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": ";", "bbox": {"l": 187.43794, "t": 391.25702, "r": 190.51006, "b": 401.05795000000006, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "Specifies that the column mask is to be i", "bbox": {"l": 315.56299, "t": 384.81112999999993, "r": 464.69116, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "nitially disabled", "bbox": {"l": 464.68619, "t": 384.81112999999993, "r": 522.69604, "b": 392.66953, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 142.643798828125, "t": 641.9248657226562, "r": 531.85156, "b": 663.9739990234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9614552855491638, "cells": [{"id": 77, "text": "Note:", "bbox": {"l": 142.8, "t": 642.70872, "r": 168.33246, "b": 651.92172, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": " An exclusive lock is required on the table object to perform the alter operation. All ", "bbox": {"l": 168.36035, "t": 642.70872, "r": 531.85156, "b": 651.92172, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "open cursors must be closed.", "bbox": {"l": 142.8, "t": 654.70853, "r": 273.34174, "b": 663.92152, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 31, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.44506072998047, "t": 754.4765014648438, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9057300090789795, "cells": [{"id": 0, "text": "16 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "16"}, {"label": "page_footer", "id": 1, "page_no": 31, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.31855010986328, "t": 754.713134765625, "r": 334.42142, "b": 763.9388427734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9489884376525879, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 2, "page_no": 31, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.0411376953125, "t": 70.60277557373047, "r": 546.56934, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.975629985332489, "cells": [{"id": 2, "text": "Column masks replace the need to create and use views to implement access control. The ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 539.91992, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "SQL", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 156.83156, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " CREATE MASK", "bbox": {"l": 156.77977, "t": 83.65790000000004, "r": 216.71904000000004, "b": 92.48248000000001, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": " statement that is shown in Figure 3-2 is used to define and initially enable ", "bbox": {"l": 216.7798, "t": 83.50847999999996, "r": 546.56934, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "or disable the column value access rules.", "bbox": {"l": 136.79898, "t": 95.50829999999996, "r": 319.09384, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Column masks replace the need to create and use views to implement access control. The SQL CREATE MASK statement that is shown in Figure 3-2 is used to define and initially enable or disable the column value access rules."}, {"label": "caption", "id": 3, "page_no": 31, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.94520568847656, "t": 416.65887451171875, "r": 311.8898620605469, "b": 426.3029479980469, "coord_origin": "TOPLEFT"}, "confidence": 0.9420653581619263, "cells": [{"id": 7, "text": "Figure 3-2 CREATE MASK SQL statement", "bbox": {"l": 136.8, "t": 417.67801, "r": 311.0202, "b": 426.00302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-2 CREATE MASK SQL statement"}, {"label": "section_header", "id": 4, "page_no": 31, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.21709442138672, "t": 445.58026123046875, "r": 286.79703, "b": 459.303955078125, "coord_origin": "TOPLEFT"}, "confidence": 0.967232346534729, "cells": [{"id": 8, "text": "3.1.2", "bbox": {"l": 64.800003, "t": 446.51474, "r": 94.02639, "b": 458.50272, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Enabling and activating RCAC", "bbox": {"l": 97.679688, "t": 446.51474, "r": 286.79703, "b": 458.50272, "coord_origin": "TOPLEFT"}}]}, "text": "3.1.2 Enabling and activating RCAC"}, {"label": "text", "id": 5, "page_no": 31, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.47596740722656, "t": 471.9873046875, "r": 547.1828, "b": 506.3340759277344, "coord_origin": "TOPLEFT"}, "confidence": 0.9810652136802673, "cells": [{"id": 10, "text": "You can enable, disable, or regenerate row permissions and column masks by using the SQL", "bbox": {"l": 136.8, "t": 472.66873, "r": 542.90002, "b": 481.88171, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ALTER PERMISSION", "bbox": {"l": 136.80002, "t": 484.81793, "r": 216.71905999999998, "b": 493.64252, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": " statement and the SQL", "bbox": {"l": 216.77982, "t": 484.66855, "r": 322.30304, "b": 493.88153, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": " ALTER MASK", "bbox": {"l": 322.31995, "t": 484.81793, "r": 377.27921, "b": 493.64252, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " statement, as shown in Figure 3-3 on ", "bbox": {"l": 377.28021, "t": 484.66855, "r": 547.1828, "b": 493.88153, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "page 17.", "bbox": {"l": 136.8, "t": 496.66837, "r": 175.72868, "b": 505.88135, "coord_origin": "TOPLEFT"}}]}, "text": "You can enable, disable, or regenerate row permissions and column masks by using the SQL ALTER PERMISSION statement and the SQL ALTER MASK statement, as shown in Figure 3-3 on page 17."}, {"label": "text", "id": 6, "page_no": 31, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.03172302246094, "t": 517.8567504882812, "r": 547.22864, "b": 623.89934, "coord_origin": "TOPLEFT"}, "confidence": 0.9877449870109558, "cells": [{"id": 16, "text": "Enabling and disabling effectively turns on or off the logic that is contained in the row ", "bbox": {"l": 136.8, "t": 518.68793, "r": 512.64056, "b": 527.9009100000001, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "permission or column mask. Regenerating causes the row permission or column mask to be ", "bbox": {"l": 136.8, "t": 530.6877099999999, "r": 546.4837, "b": 539.9007300000001, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "regenerated. The row permission definition in the catalog is used and existing dependencies ", "bbox": {"l": 136.8, "t": 542.68753, "r": 546.5564, "b": 551.90053, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "and authorizations, if any, are retained. The row permission definition is reevaluated as ", "bbox": {"l": 136.8, "t": 554.68733, "r": 521.92834, "b": 563.9003299999999, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "though the row permission were being created. Any user-defined functions (UDFs) that are ", "bbox": {"l": 136.8, "t": 566.68713, "r": 539.95581, "b": 575.90013, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "referenced in the row permission must be resolved to the same secure UDFs as were ", "bbox": {"l": 136.8, "t": 578.68694, "r": 516.60944, "b": 587.89993, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "resolved during the original row permission or column mask creation. The regenerate option ", "bbox": {"l": 136.8, "t": 590.68674, "r": 545.22186, "b": 599.89973, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "can be used to ensure that the RCAC logic is intact and still valid before any user attempts to ", "bbox": {"l": 136.8, "t": 602.68654, "r": 547.22864, "b": 611.89954, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "access the table.", "bbox": {"l": 136.79999, "t": 614.68634, "r": 211.46214, "b": 623.89934, "coord_origin": "TOPLEFT"}}]}, "text": "Enabling and disabling effectively turns on or off the logic that is contained in the row permission or column mask. Regenerating causes the row permission or column mask to be regenerated. The row permission definition in the catalog is used and existing dependencies and authorizations, if any, are retained. The row permission definition is reevaluated as though the row permission were being created. Any user-defined functions (UDFs) that are referenced in the row permission must be resolved to the same secure UDFs as were resolved during the original row permission or column mask creation. The regenerate option can be used to ensure that the RCAC logic is intact and still valid before any user attempts to access the table."}, {"label": "picture", "id": 7, "page_no": 31, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 135.58670043945312, "t": 119.31904602050781, "r": 545.5314331054688, "b": 414.1254577636719, "coord_origin": "TOPLEFT"}, "confidence": 0.9763185381889343, "cells": [{"id": 25, "text": "CREATE MASK ", "bbox": {"l": 148.0576, "t": 157.17620999999997, "r": 217.21564000000004, "b": 166.98859000000004, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "<", "bbox": {"l": 219.86591, "t": 157.17620999999997, "r": 225.57451999999998, "b": 166.97717, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "mask name", "bbox": {"l": 225.58026000000004, "t": 157.17620999999997, "r": 279.14044, "b": 166.98859000000004, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "> ", "bbox": {"l": 279.14389, "t": 157.17620999999997, "r": 287.45465, "b": 166.97717, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Names the column mask for column access control", "bbox": {"l": 343.7215, "t": 133.51855, "r": 532.37885, "b": 141.37694999999997, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "ON", "bbox": {"l": 148.0576, "t": 198.48461999999995, "r": 163.34479, "b": 208.29700000000003, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "<", "bbox": {"l": 168.47108, "t": 198.48461999999995, "r": 174.1797, "b": 208.28557999999998, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "table name", "bbox": {"l": 174.18544, "t": 198.48461999999995, "r": 226.64977000000002, "b": 208.29700000000003, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": ">", "bbox": {"l": 226.64746, "t": 198.48461999999995, "r": 232.35608, "b": 208.28557999999998, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Identifies the table on which the column", "bbox": {"l": 315.11551, "t": 178.26935000000003, "r": 459.8544299999999, "b": 186.12775, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "mask is created", "bbox": {"l": 486.66354, "t": 178.26935000000003, "r": 524.99982, "b": 186.12775, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "AS ", "bbox": {"l": 148.0576, "t": 239.79303000000004, "r": 163.00664, "b": 249.60541, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "<", "bbox": {"l": 165.57895, "t": 239.79303000000004, "r": 171.28757, "b": 249.59398999999996, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "correlation name", "bbox": {"l": 171.2933, "t": 239.79303000000004, "r": 250.94238000000004, "b": 249.60541, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": ">", "bbox": {"l": 250.95038, "t": 239.79303000000004, "r": 256.659, "b": 249.59398999999996, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Specifies an optional correlation name that ca", "bbox": {"l": 238.9704, "t": 219.57763999999997, "r": 409.48642, "b": 227.43604000000005, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "be used within case-expression", "bbox": {"l": 471.4333500000001, "t": 219.57763999999997, "r": 532.17932, "b": 227.43604000000005, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "FOR COLUMN ", "bbox": {"l": 148.0576, "t": 281.10144, "r": 215.81255, "b": 290.91385, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "<", "bbox": {"l": 218.48804, "t": 281.10144, "r": 224.19666, "b": 290.9023700000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "column name", "bbox": {"l": 224.20238999999998, "t": 281.10144, "r": 287.21161, "b": 290.91385, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "> ", "bbox": {"l": 287.23224, "t": 281.10144, "r": 295.543, "b": 290.9023700000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Identifies the column to which", "bbox": {"l": 352.91269, "t": 260.88604999999995, "r": 461.25995, "b": 268.74445000000003, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "the mask applies", "bbox": {"l": 461.25995, "t": 260.88604999999995, "r": 530.51782, "b": 268.74445000000003, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "RETURN", "bbox": {"l": 148.0576, "t": 322.4097300000001, "r": 187.1972, "b": 332.22214, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "<", "bbox": {"l": 194.49576, "t": 322.4097300000001, "r": 200.20438, "b": 332.21066, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "logic to test: user and/or group and/or column values", "bbox": {"l": 200.21011, "t": 322.4097300000001, "r": 446.92813000000007, "b": 332.22214, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": ">", "bbox": {"l": 446.99347, "t": 322.4097300000001, "r": 452.70208999999994, "b": 332.21066, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "<", "bbox": {"l": 194.4951, "t": 336.17923, "r": 200.20372, "b": 345.98016000000007, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "logic to mask or return column value", "bbox": {"l": 200.2094, "t": 336.17923, "r": 369.65121, "b": 345.99164, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": ">", "bbox": {"l": 369.677, "t": 336.17923, "r": 375.38562, "b": 345.98016000000007, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Specifies a CASE expression", "bbox": {"l": 366.5788, "t": 298.7520400000001, "r": 464.75512999999995, "b": 306.61044, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "t", "bbox": {"l": 450.4165300000001, "t": 298.7520400000001, "r": 473.7167400000001, "b": 306.61044, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "o be evaluated", "bbox": {"l": 473.60275000000007, "t": 298.7520400000001, "r": 528.61884, "b": 306.61044, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "ENABLE", "bbox": {"l": 148.0576, "t": 377.48764000000006, "r": 185.03297, "b": 387.30005, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "Specifies that the column mask is to be", "bbox": {"l": 316.1138, "t": 364.15692, "r": 456.32498000000004, "b": 372.01532000000003, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "initially enabled", "bbox": {"l": 484.35620000000006, "t": 364.15692, "r": 522.08081, "b": 372.01532000000003, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Si", "bbox": {"l": 315.56299, "t": 384.81112999999993, "r": 348.48367, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "f", "bbox": {"l": 335.17587, "t": 384.81112999999993, "r": 351.27777, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "it", "bbox": {"l": 337.96262, "t": 384.81112999999993, "r": 366.59012, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "h", "bbox": {"l": 353.27679, "t": 384.81112999999993, "r": 371.40073, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "t", "bbox": {"l": 362.39529, "t": 384.81112999999993, "r": 378.77292, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "h l", "bbox": {"l": 370.62317, "t": 384.81112999999993, "r": 392.91788, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "k i tb", "bbox": {"l": 427.19424, "t": 384.81112999999993, "r": 462.85345, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "ii", "bbox": {"l": 462.58322, "t": 384.81112999999993, "r": 478.50681, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "t", "bbox": {"l": 471.59326, "t": 384.81112999999993, "r": 481.57663, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "il", "bbox": {"l": 474.65756, "t": 384.81112999999993, "r": 490.16849, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "ldi", "bbox": {"l": 483.2549399999999, "t": 384.81112999999993, "r": 498.37952000000007, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "bl d", "bbox": {"l": 506.36566000000005, "t": 384.81112999999993, "r": 522.67157, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "DISABLE", "bbox": {"l": 148.0576, "t": 391.25702, "r": 187.47119, "b": 401.06943, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": ";", "bbox": {"l": 187.43794, "t": 391.25702, "r": 190.51006, "b": 401.05795000000006, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "Specifies that the column mask is to be i", "bbox": {"l": 315.56299, "t": 384.81112999999993, "r": 464.69116, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "nitially disabled", "bbox": {"l": 464.68619, "t": 384.81112999999993, "r": 522.69604, "b": 392.66953, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "text", "id": 8, "page_no": 31, "cluster": {"id": 8, "label": "text", "bbox": {"l": 142.643798828125, "t": 641.9248657226562, "r": 531.85156, "b": 663.9739990234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9614552855491638, "cells": [{"id": 77, "text": "Note:", "bbox": {"l": 142.8, "t": 642.70872, "r": 168.33246, "b": 651.92172, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": " An exclusive lock is required on the table object to perform the alter operation. All ", "bbox": {"l": 168.36035, "t": 642.70872, "r": 531.85156, "b": 651.92172, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "open cursors must be closed.", "bbox": {"l": 142.8, "t": 654.70853, "r": 273.34174, "b": 663.92152, "coord_origin": "TOPLEFT"}}]}, "text": "Note: An exclusive lock is required on the table object to perform the alter operation. All open cursors must be closed."}], "body": [{"label": "text", "id": 2, "page_no": 31, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.0411376953125, "t": 70.60277557373047, "r": 546.56934, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.975629985332489, "cells": [{"id": 2, "text": "Column masks replace the need to create and use views to implement access control. The ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 539.91992, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "SQL", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 156.83156, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " CREATE MASK", "bbox": {"l": 156.77977, "t": 83.65790000000004, "r": 216.71904000000004, "b": 92.48248000000001, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": " statement that is shown in Figure 3-2 is used to define and initially enable ", "bbox": {"l": 216.7798, "t": 83.50847999999996, "r": 546.56934, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "or disable the column value access rules.", "bbox": {"l": 136.79898, "t": 95.50829999999996, "r": 319.09384, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Column masks replace the need to create and use views to implement access control. The SQL CREATE MASK statement that is shown in Figure 3-2 is used to define and initially enable or disable the column value access rules."}, {"label": "caption", "id": 3, "page_no": 31, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.94520568847656, "t": 416.65887451171875, "r": 311.8898620605469, "b": 426.3029479980469, "coord_origin": "TOPLEFT"}, "confidence": 0.9420653581619263, "cells": [{"id": 7, "text": "Figure 3-2 CREATE MASK SQL statement", "bbox": {"l": 136.8, "t": 417.67801, "r": 311.0202, "b": 426.00302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-2 CREATE MASK SQL statement"}, {"label": "section_header", "id": 4, "page_no": 31, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.21709442138672, "t": 445.58026123046875, "r": 286.79703, "b": 459.303955078125, "coord_origin": "TOPLEFT"}, "confidence": 0.967232346534729, "cells": [{"id": 8, "text": "3.1.2", "bbox": {"l": 64.800003, "t": 446.51474, "r": 94.02639, "b": 458.50272, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Enabling and activating RCAC", "bbox": {"l": 97.679688, "t": 446.51474, "r": 286.79703, "b": 458.50272, "coord_origin": "TOPLEFT"}}]}, "text": "3.1.2 Enabling and activating RCAC"}, {"label": "text", "id": 5, "page_no": 31, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.47596740722656, "t": 471.9873046875, "r": 547.1828, "b": 506.3340759277344, "coord_origin": "TOPLEFT"}, "confidence": 0.9810652136802673, "cells": [{"id": 10, "text": "You can enable, disable, or regenerate row permissions and column masks by using the SQL", "bbox": {"l": 136.8, "t": 472.66873, "r": 542.90002, "b": 481.88171, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ALTER PERMISSION", "bbox": {"l": 136.80002, "t": 484.81793, "r": 216.71905999999998, "b": 493.64252, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": " statement and the SQL", "bbox": {"l": 216.77982, "t": 484.66855, "r": 322.30304, "b": 493.88153, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": " ALTER MASK", "bbox": {"l": 322.31995, "t": 484.81793, "r": 377.27921, "b": 493.64252, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " statement, as shown in Figure 3-3 on ", "bbox": {"l": 377.28021, "t": 484.66855, "r": 547.1828, "b": 493.88153, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "page 17.", "bbox": {"l": 136.8, "t": 496.66837, "r": 175.72868, "b": 505.88135, "coord_origin": "TOPLEFT"}}]}, "text": "You can enable, disable, or regenerate row permissions and column masks by using the SQL ALTER PERMISSION statement and the SQL ALTER MASK statement, as shown in Figure 3-3 on page 17."}, {"label": "text", "id": 6, "page_no": 31, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.03172302246094, "t": 517.8567504882812, "r": 547.22864, "b": 623.89934, "coord_origin": "TOPLEFT"}, "confidence": 0.9877449870109558, "cells": [{"id": 16, "text": "Enabling and disabling effectively turns on or off the logic that is contained in the row ", "bbox": {"l": 136.8, "t": 518.68793, "r": 512.64056, "b": 527.9009100000001, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "permission or column mask. Regenerating causes the row permission or column mask to be ", "bbox": {"l": 136.8, "t": 530.6877099999999, "r": 546.4837, "b": 539.9007300000001, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "regenerated. The row permission definition in the catalog is used and existing dependencies ", "bbox": {"l": 136.8, "t": 542.68753, "r": 546.5564, "b": 551.90053, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "and authorizations, if any, are retained. The row permission definition is reevaluated as ", "bbox": {"l": 136.8, "t": 554.68733, "r": 521.92834, "b": 563.9003299999999, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "though the row permission were being created. Any user-defined functions (UDFs) that are ", "bbox": {"l": 136.8, "t": 566.68713, "r": 539.95581, "b": 575.90013, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "referenced in the row permission must be resolved to the same secure UDFs as were ", "bbox": {"l": 136.8, "t": 578.68694, "r": 516.60944, "b": 587.89993, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "resolved during the original row permission or column mask creation. The regenerate option ", "bbox": {"l": 136.8, "t": 590.68674, "r": 545.22186, "b": 599.89973, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "can be used to ensure that the RCAC logic is intact and still valid before any user attempts to ", "bbox": {"l": 136.8, "t": 602.68654, "r": 547.22864, "b": 611.89954, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "access the table.", "bbox": {"l": 136.79999, "t": 614.68634, "r": 211.46214, "b": 623.89934, "coord_origin": "TOPLEFT"}}]}, "text": "Enabling and disabling effectively turns on or off the logic that is contained in the row permission or column mask. Regenerating causes the row permission or column mask to be regenerated. The row permission definition in the catalog is used and existing dependencies and authorizations, if any, are retained. The row permission definition is reevaluated as though the row permission were being created. Any user-defined functions (UDFs) that are referenced in the row permission must be resolved to the same secure UDFs as were resolved during the original row permission or column mask creation. The regenerate option can be used to ensure that the RCAC logic is intact and still valid before any user attempts to access the table."}, {"label": "picture", "id": 7, "page_no": 31, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 135.58670043945312, "t": 119.31904602050781, "r": 545.5314331054688, "b": 414.1254577636719, "coord_origin": "TOPLEFT"}, "confidence": 0.9763185381889343, "cells": [{"id": 25, "text": "CREATE MASK ", "bbox": {"l": 148.0576, "t": 157.17620999999997, "r": 217.21564000000004, "b": 166.98859000000004, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "<", "bbox": {"l": 219.86591, "t": 157.17620999999997, "r": 225.57451999999998, "b": 166.97717, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "mask name", "bbox": {"l": 225.58026000000004, "t": 157.17620999999997, "r": 279.14044, "b": 166.98859000000004, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "> ", "bbox": {"l": 279.14389, "t": 157.17620999999997, "r": 287.45465, "b": 166.97717, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Names the column mask for column access control", "bbox": {"l": 343.7215, "t": 133.51855, "r": 532.37885, "b": 141.37694999999997, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "ON", "bbox": {"l": 148.0576, "t": 198.48461999999995, "r": 163.34479, "b": 208.29700000000003, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "<", "bbox": {"l": 168.47108, "t": 198.48461999999995, "r": 174.1797, "b": 208.28557999999998, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "table name", "bbox": {"l": 174.18544, "t": 198.48461999999995, "r": 226.64977000000002, "b": 208.29700000000003, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": ">", "bbox": {"l": 226.64746, "t": 198.48461999999995, "r": 232.35608, "b": 208.28557999999998, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Identifies the table on which the column", "bbox": {"l": 315.11551, "t": 178.26935000000003, "r": 459.8544299999999, "b": 186.12775, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "mask is created", "bbox": {"l": 486.66354, "t": 178.26935000000003, "r": 524.99982, "b": 186.12775, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "AS ", "bbox": {"l": 148.0576, "t": 239.79303000000004, "r": 163.00664, "b": 249.60541, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "<", "bbox": {"l": 165.57895, "t": 239.79303000000004, "r": 171.28757, "b": 249.59398999999996, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "correlation name", "bbox": {"l": 171.2933, "t": 239.79303000000004, "r": 250.94238000000004, "b": 249.60541, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": ">", "bbox": {"l": 250.95038, "t": 239.79303000000004, "r": 256.659, "b": 249.59398999999996, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Specifies an optional correlation name that ca", "bbox": {"l": 238.9704, "t": 219.57763999999997, "r": 409.48642, "b": 227.43604000000005, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "be used within case-expression", "bbox": {"l": 471.4333500000001, "t": 219.57763999999997, "r": 532.17932, "b": 227.43604000000005, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "FOR COLUMN ", "bbox": {"l": 148.0576, "t": 281.10144, "r": 215.81255, "b": 290.91385, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "<", "bbox": {"l": 218.48804, "t": 281.10144, "r": 224.19666, "b": 290.9023700000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "column name", "bbox": {"l": 224.20238999999998, "t": 281.10144, "r": 287.21161, "b": 290.91385, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "> ", "bbox": {"l": 287.23224, "t": 281.10144, "r": 295.543, "b": 290.9023700000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Identifies the column to which", "bbox": {"l": 352.91269, "t": 260.88604999999995, "r": 461.25995, "b": 268.74445000000003, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "the mask applies", "bbox": {"l": 461.25995, "t": 260.88604999999995, "r": 530.51782, "b": 268.74445000000003, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "RETURN", "bbox": {"l": 148.0576, "t": 322.4097300000001, "r": 187.1972, "b": 332.22214, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "<", "bbox": {"l": 194.49576, "t": 322.4097300000001, "r": 200.20438, "b": 332.21066, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "logic to test: user and/or group and/or column values", "bbox": {"l": 200.21011, "t": 322.4097300000001, "r": 446.92813000000007, "b": 332.22214, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": ">", "bbox": {"l": 446.99347, "t": 322.4097300000001, "r": 452.70208999999994, "b": 332.21066, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "<", "bbox": {"l": 194.4951, "t": 336.17923, "r": 200.20372, "b": 345.98016000000007, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "logic to mask or return column value", "bbox": {"l": 200.2094, "t": 336.17923, "r": 369.65121, "b": 345.99164, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": ">", "bbox": {"l": 369.677, "t": 336.17923, "r": 375.38562, "b": 345.98016000000007, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Specifies a CASE expression", "bbox": {"l": 366.5788, "t": 298.7520400000001, "r": 464.75512999999995, "b": 306.61044, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "t", "bbox": {"l": 450.4165300000001, "t": 298.7520400000001, "r": 473.7167400000001, "b": 306.61044, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "o be evaluated", "bbox": {"l": 473.60275000000007, "t": 298.7520400000001, "r": 528.61884, "b": 306.61044, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "ENABLE", "bbox": {"l": 148.0576, "t": 377.48764000000006, "r": 185.03297, "b": 387.30005, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "Specifies that the column mask is to be", "bbox": {"l": 316.1138, "t": 364.15692, "r": 456.32498000000004, "b": 372.01532000000003, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "initially enabled", "bbox": {"l": 484.35620000000006, "t": 364.15692, "r": 522.08081, "b": 372.01532000000003, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Si", "bbox": {"l": 315.56299, "t": 384.81112999999993, "r": 348.48367, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "f", "bbox": {"l": 335.17587, "t": 384.81112999999993, "r": 351.27777, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "it", "bbox": {"l": 337.96262, "t": 384.81112999999993, "r": 366.59012, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "h", "bbox": {"l": 353.27679, "t": 384.81112999999993, "r": 371.40073, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "t", "bbox": {"l": 362.39529, "t": 384.81112999999993, "r": 378.77292, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "h l", "bbox": {"l": 370.62317, "t": 384.81112999999993, "r": 392.91788, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "k i tb", "bbox": {"l": 427.19424, "t": 384.81112999999993, "r": 462.85345, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "ii", "bbox": {"l": 462.58322, "t": 384.81112999999993, "r": 478.50681, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "t", "bbox": {"l": 471.59326, "t": 384.81112999999993, "r": 481.57663, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "il", "bbox": {"l": 474.65756, "t": 384.81112999999993, "r": 490.16849, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "ldi", "bbox": {"l": 483.2549399999999, "t": 384.81112999999993, "r": 498.37952000000007, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "bl d", "bbox": {"l": 506.36566000000005, "t": 384.81112999999993, "r": 522.67157, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "DISABLE", "bbox": {"l": 148.0576, "t": 391.25702, "r": 187.47119, "b": 401.06943, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": ";", "bbox": {"l": 187.43794, "t": 391.25702, "r": 190.51006, "b": 401.05795000000006, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "Specifies that the column mask is to be i", "bbox": {"l": 315.56299, "t": 384.81112999999993, "r": 464.69116, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "nitially disabled", "bbox": {"l": 464.68619, "t": 384.81112999999993, "r": 522.69604, "b": 392.66953, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "text", "id": 8, "page_no": 31, "cluster": {"id": 8, "label": "text", "bbox": {"l": 142.643798828125, "t": 641.9248657226562, "r": 531.85156, "b": 663.9739990234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9614552855491638, "cells": [{"id": 77, "text": "Note:", "bbox": {"l": 142.8, "t": 642.70872, "r": 168.33246, "b": 651.92172, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": " An exclusive lock is required on the table object to perform the alter operation. All ", "bbox": {"l": 168.36035, "t": 642.70872, "r": 531.85156, "b": 651.92172, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "open cursors must be closed.", "bbox": {"l": 142.8, "t": 654.70853, "r": 273.34174, "b": 663.92152, "coord_origin": "TOPLEFT"}}]}, "text": "Note: An exclusive lock is required on the table object to perform the alter operation. All open cursors must be closed."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 31, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.44506072998047, "t": 754.4765014648438, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9057300090789795, "cells": [{"id": 0, "text": "16 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "16"}, {"label": "page_footer", "id": 1, "page_no": 31, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.31855010986328, "t": 754.713134765625, "r": 334.42142, "b": 763.9388427734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9489884376525879, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 32, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "17", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Figure 3-3 ALTER PERMISSION and ALTER MASK SQL statements", "bbox": {"l": 136.8, "t": 350.77798, "r": 414.92795, "b": 359.103, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "You can activate and deactivate RCAC for new or existing tables by using the SQL", "bbox": {"l": 136.8, "t": 376.78873, "r": 499.03439, "b": 386.00171, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " ALTER ", "bbox": {"l": 498.9595299999999, "t": 376.93811, "r": 533.87927, "b": 385.7627, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "TABLE", "bbox": {"l": 136.79999, "t": 388.93793, "r": 161.75975, "b": 397.76251, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": " statement (Figure 3-4). The ", "bbox": {"l": 161.75975, "t": 388.78853999999995, "r": 288.95093, "b": 398.00152999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ACTIVATE", "bbox": {"l": 288.9599, "t": 388.93793, "r": 328.91943, "b": 397.76251, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": " or ", "bbox": {"l": 328.98016, "t": 388.78853999999995, "r": 343.37933, "b": 398.00152999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "DEACTIVATE", "bbox": {"l": 343.38034, "t": 388.93793, "r": 393.35962, "b": 397.76251, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": " clause must be the option that is ", "bbox": {"l": 393.36063, "t": 388.78853999999995, "r": 542.38611, "b": 398.00152999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "specified in the statement. No other alterations are permitted at the same time. The activating ", "bbox": {"l": 136.80096, "t": 400.78836000000007, "r": 547.2995, "b": 410.00134, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "and deactivating effectively turns on or off all RCAC processing for the table. Only enabled ", "bbox": {"l": 136.80096, "t": 412.78818, "r": 537.36926, "b": 422.00116, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "row permissions and column masks take effect when activating RCAC.", "bbox": {"l": 136.80096, "t": 424.7879899999999, "r": 448.40952000000004, "b": 434.00098, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Figure 3-4 ALTER TABLE SQL statement", "bbox": {"l": 136.8, "t": 725.477898, "r": 305.51761, "b": 733.802898, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Note:", "bbox": {"l": 142.8, "t": 452.74872, "r": 168.33246, "b": 461.9617, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": " An exclusive lock is required on the table object to perform the alter operation. All ", "bbox": {"l": 168.36035, "t": 452.74872, "r": 531.85156, "b": 461.9617, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "open cursors must be closed.", "bbox": {"l": 142.8, "t": 464.74854, "r": 273.34174, "b": 473.96152, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ALTER PERMISSION", "bbox": {"l": 149.2699, "t": 110.98553000000004, "r": 231.19603, "b": 119.74194, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "<", "bbox": {"l": 235.77481, "t": 110.98553000000004, "r": 240.86904999999996, "b": 119.73168999999996, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "permission name", "bbox": {"l": 240.87360000000004, "t": 110.98553000000004, "r": 311.6275, "b": 119.74194, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "> ", "bbox": {"l": 311.58862, "t": 110.98553000000004, "r": 319.00494, "b": 119.73168999999996, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Names the row permission for row access control", "bbox": {"l": 329.09839, "t": 91.25610000000006, "r": 493.15857, "b": 98.26886000000002, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "p", "bbox": {"l": 240.87360000000004, "t": 110.98553000000004, "r": 246.13150000000002, "b": 119.74194, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "ENABLE", "bbox": {"l": 149.2699, "t": 147.84826999999996, "r": 182.26585, "b": 156.60468000000003, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Specifies", "bbox": {"l": 311.4657, "t": 135.67584, "r": 337.83026, "b": 142.68859999999995, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "that the row permission is to be enabled", "bbox": {"l": 342.39178, "t": 135.67584, "r": 477.03091, "b": 142.68859999999995, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Specifies", "bbox": {"l": 310.97421, "t": 155.58159999999998, "r": 340.08932, "b": 162.59436000000005, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "that the row permission is to be disabled", "bbox": {"l": 341.86423, "t": 155.58159999999998, "r": 477.48803999999996, "b": 162.59436000000005, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "DISABLE", "bbox": {"l": 149.2699, "t": 160.13585999999998, "r": 184.44882, "b": 168.89227000000005, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "REGENERATE", "bbox": {"l": 149.2699, "t": 172.42340000000002, "r": 204.24371, "b": 181.17980999999997, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": ";", "bbox": {"l": 204.22632, "t": 172.42340000000002, "r": 206.9678, "b": 181.16956000000005, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": " that the row permission is to be disabled", "bbox": {"l": 340.1264, "t": 155.58159999999998, "r": 477.48803999999996, "b": 162.59436000000005, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Specifies", "bbox": {"l": 304.58469, "t": 175.48755000000006, "r": 330.95551, "b": 182.50031, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "that the row permission is to be regenerated", "bbox": {"l": 335.51816, "t": 175.48755000000006, "r": 483.95947, "b": 182.50031, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "ALTER MASK ", "bbox": {"l": 149.2699, "t": 264.97968000000003, "r": 205.02728, "b": 273.73608, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "<", "bbox": {"l": 207.42096, "t": 264.97968000000003, "r": 212.5152, "b": 273.72583, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "mask name", "bbox": {"l": 212.52031, "t": 264.97968000000003, "r": 260.34683, "b": 273.73608, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "> ", "bbox": {"l": 260.34991, "t": 264.97968000000003, "r": 267.76624, "b": 273.72583, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Names the column mask for column access control", "bbox": {"l": 328.6376, "t": 243.43781, "r": 496.99047999999993, "b": 250.45056, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ENABLE", "bbox": {"l": 149.2699, "t": 301.84235, "r": 182.26585, "b": 310.59872, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "DISABLE", "bbox": {"l": 149.2699, "t": 314.12985, "r": 184.44882, "b": 322.88623, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Specifies that the column mask is to be enabled", "bbox": {"l": 316.90289, "t": 287.85745, "r": 474.94449000000003, "b": 294.87015, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Specifies that the column mask is to be disabled", "bbox": {"l": 316.41141, "t": 307.76337, "r": 475.41339, "b": 314.77606, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "REGENERATE", "bbox": {"l": 149.2699, "t": 326.41754, "r": 204.24371, "b": 335.17392, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": ";", "bbox": {"l": 204.22632, "t": 326.41754, "r": 206.9678, "b": 335.1637, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Specifies that the column mask is to be regenerated", "bbox": {"l": 310.02191, "t": 327.66925, "r": 481.82784999999996, "b": 334.6819499999999, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Id", "bbox": {"l": 381.92691, "t": 514.20789, "r": 388.31406, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "tifi", "bbox": {"l": 396.65976, "t": 514.20789, "r": 405.67206, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "th", "bbox": {"l": 414.82132, "t": 514.20789, "r": 421.89322, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "t bl", "bbox": {"l": 427.89014, "t": 514.20789, "r": 440.70319, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "t", "bbox": {"l": 446.63906999999995, "t": 514.20789, "r": 449.39127, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "b", "bbox": {"l": 455.56888, "t": 514.20789, "r": 459.88857999999993, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "lt", "bbox": {"l": 469.84055, "t": 514.20789, "r": 474.47372, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "d", "bbox": {"l": 485.34805000000006, "t": 514.20789, "r": 489.66776, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "ALTER TABLE", "bbox": {"l": 148.2388, "t": 552.25224, "r": 202.0045, "b": 561.05989, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "<", "bbox": {"l": 206.6377, "t": 552.25224, "r": 211.76176, "b": 561.04961, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "table name", "bbox": {"l": 211.76691, "t": 552.25224, "r": 258.88251, "b": 561.05989, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": ">", "bbox": {"l": 258.8876, "t": 552.25224, "r": 264.01169, "b": 561.04961, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "Identifies the table to be altered", "bbox": {"l": 381.92691, "t": 514.20789, "r": 489.70754999999997, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "ALTER TABLE ", "bbox": {"l": 148.2388, "t": 552.25224, "r": 206.66792, "b": 561.05989, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "> ", "bbox": {"l": 258.8876, "t": 552.25224, "r": 266.34219, "b": 561.04961, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "Specifies to activate row access control for the table", "bbox": {"l": 325.8764, "t": 563.64609, "r": 499.40607000000006, "b": 570.69984, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "ACTIVATE ROW ACCESS CONTROL", "bbox": {"l": 148.2388, "t": 601.69044, "r": 290.58826, "b": 610.49809, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "DEACTIVATE ROW ACCESS CONTROL", "bbox": {"l": 148.2388, "t": 614.04996, "r": 302.02682, "b": 622.8576, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "Specifies", "bbox": {"l": 317.00839, "t": 625.44389, "r": 343.54861, "b": 632.49765, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "to deactivate row access control for the table", "bbox": {"l": 348.11584, "t": 625.44389, "r": 498.97121999999996, "b": 632.49765, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "ACTIVATE COLUMN ACCESS CONTROL", "bbox": {"l": 148.2388, "t": 663.48816, "r": 307.72708, "b": 672.2958, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "Specifies", "bbox": {"l": 312.25, "t": 647.07309, "r": 338.41428, "b": 654.12685, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "t", "bbox": {"l": 316.86722, "t": 647.07309, "r": 346.10965, "b": 654.12685, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "o activate column access control for the table", "bbox": {"l": 346.00735, "t": 647.07309, "r": 497.60767, "b": 654.12685, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "DEACTIVATE COLUMN ACCESS CONTROL", "bbox": {"l": 148.2388, "t": 675.84776, "r": 319.12659, "b": 684.6554, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": ";", "bbox": {"l": 319.07822, "t": 675.84776, "r": 321.83575, "b": 684.6451, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "Specifies to deactivate column access control for the table", "bbox": {"l": 302.51691, "t": 705.780998, "r": 496.27634000000006, "b": 712.834747, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 344.607666015625, "t": 754.6572875976562, "r": 523.60162, "b": 764.1538696289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9509176015853882, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 536.0054321289062, "t": 754.273193359375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9023982882499695, "cells": [{"id": 1, "text": "17", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "caption", "bbox": {"l": 135.7609405517578, "t": 349.9282531738281, "r": 415.2347106933594, "b": 359.3016052246094, "coord_origin": "TOPLEFT"}, "confidence": 0.9314021468162537, "cells": [{"id": 2, "text": "Figure 3-3 ALTER PERMISSION and ALTER MASK SQL statements", "bbox": {"l": 136.8, "t": 350.77798, "r": 414.92795, "b": 359.103, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.8385467529297, "t": 375.867431640625, "r": 547.2995, "b": 434.064453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9820544719696045, "cells": [{"id": 3, "text": "You can activate and deactivate RCAC for new or existing tables by using the SQL", "bbox": {"l": 136.8, "t": 376.78873, "r": 499.03439, "b": 386.00171, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " ALTER ", "bbox": {"l": 498.9595299999999, "t": 376.93811, "r": 533.87927, "b": 385.7627, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "TABLE", "bbox": {"l": 136.79999, "t": 388.93793, "r": 161.75975, "b": 397.76251, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": " statement (Figure 3-4). The ", "bbox": {"l": 161.75975, "t": 388.78853999999995, "r": 288.95093, "b": 398.00152999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ACTIVATE", "bbox": {"l": 288.9599, "t": 388.93793, "r": 328.91943, "b": 397.76251, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": " or ", "bbox": {"l": 328.98016, "t": 388.78853999999995, "r": 343.37933, "b": 398.00152999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "DEACTIVATE", "bbox": {"l": 343.38034, "t": 388.93793, "r": 393.35962, "b": 397.76251, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": " clause must be the option that is ", "bbox": {"l": 393.36063, "t": 388.78853999999995, "r": 542.38611, "b": 398.00152999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "specified in the statement. No other alterations are permitted at the same time. The activating ", "bbox": {"l": 136.80096, "t": 400.78836000000007, "r": 547.2995, "b": 410.00134, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "and deactivating effectively turns on or off all RCAC processing for the table. Only enabled ", "bbox": {"l": 136.80096, "t": 412.78818, "r": 537.36926, "b": 422.00116, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "row permissions and column masks take effect when activating RCAC.", "bbox": {"l": 136.80096, "t": 424.7879899999999, "r": 448.40952000000004, "b": 434.00098, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "caption", "bbox": {"l": 136.1680145263672, "t": 724.62646484375, "r": 306.3438720703125, "b": 734.2166137695312, "coord_origin": "TOPLEFT"}, "confidence": 0.9344669580459595, "cells": [{"id": 14, "text": "Figure 3-4 ALTER TABLE SQL statement", "bbox": {"l": 136.8, "t": 725.477898, "r": 305.51761, "b": 733.802898, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 142.42935180664062, "t": 452.0504150390625, "r": 531.85156, "b": 474.2764587402344, "coord_origin": "TOPLEFT"}, "confidence": 0.9186185598373413, "cells": [{"id": 15, "text": "Note:", "bbox": {"l": 142.8, "t": 452.74872, "r": 168.33246, "b": 461.9617, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": " An exclusive lock is required on the table object to perform the alter operation. All ", "bbox": {"l": 168.36035, "t": 452.74872, "r": 531.85156, "b": 461.9617, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "open cursors must be closed.", "bbox": {"l": 142.8, "t": 464.74854, "r": 273.34174, "b": 473.96152, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "picture", "bbox": {"l": 136.23851013183594, "t": 77.76332092285156, "r": 507.5733642578125, "b": 347.19940185546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9780997633934021, "cells": [{"id": 18, "text": "ALTER PERMISSION", "bbox": {"l": 149.2699, "t": 110.98553000000004, "r": 231.19603, "b": 119.74194, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "<", "bbox": {"l": 235.77481, "t": 110.98553000000004, "r": 240.86904999999996, "b": 119.73168999999996, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "permission name", "bbox": {"l": 240.87360000000004, "t": 110.98553000000004, "r": 311.6275, "b": 119.74194, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "> ", "bbox": {"l": 311.58862, "t": 110.98553000000004, "r": 319.00494, "b": 119.73168999999996, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Names the row permission for row access control", "bbox": {"l": 329.09839, "t": 91.25610000000006, "r": 493.15857, "b": 98.26886000000002, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "p", "bbox": {"l": 240.87360000000004, "t": 110.98553000000004, "r": 246.13150000000002, "b": 119.74194, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "ENABLE", "bbox": {"l": 149.2699, "t": 147.84826999999996, "r": 182.26585, "b": 156.60468000000003, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Specifies", "bbox": {"l": 311.4657, "t": 135.67584, "r": 337.83026, "b": 142.68859999999995, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "that the row permission is to be enabled", "bbox": {"l": 342.39178, "t": 135.67584, "r": 477.03091, "b": 142.68859999999995, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Specifies", "bbox": {"l": 310.97421, "t": 155.58159999999998, "r": 340.08932, "b": 162.59436000000005, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "that the row permission is to be disabled", "bbox": {"l": 341.86423, "t": 155.58159999999998, "r": 477.48803999999996, "b": 162.59436000000005, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "DISABLE", "bbox": {"l": 149.2699, "t": 160.13585999999998, "r": 184.44882, "b": 168.89227000000005, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "REGENERATE", "bbox": {"l": 149.2699, "t": 172.42340000000002, "r": 204.24371, "b": 181.17980999999997, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": ";", "bbox": {"l": 204.22632, "t": 172.42340000000002, "r": 206.9678, "b": 181.16956000000005, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": " that the row permission is to be disabled", "bbox": {"l": 340.1264, "t": 155.58159999999998, "r": 477.48803999999996, "b": 162.59436000000005, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Specifies", "bbox": {"l": 304.58469, "t": 175.48755000000006, "r": 330.95551, "b": 182.50031, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "that the row permission is to be regenerated", "bbox": {"l": 335.51816, "t": 175.48755000000006, "r": 483.95947, "b": 182.50031, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "ALTER MASK ", "bbox": {"l": 149.2699, "t": 264.97968000000003, "r": 205.02728, "b": 273.73608, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "<", "bbox": {"l": 207.42096, "t": 264.97968000000003, "r": 212.5152, "b": 273.72583, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "mask name", "bbox": {"l": 212.52031, "t": 264.97968000000003, "r": 260.34683, "b": 273.73608, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "> ", "bbox": {"l": 260.34991, "t": 264.97968000000003, "r": 267.76624, "b": 273.72583, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Names the column mask for column access control", "bbox": {"l": 328.6376, "t": 243.43781, "r": 496.99047999999993, "b": 250.45056, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ENABLE", "bbox": {"l": 149.2699, "t": 301.84235, "r": 182.26585, "b": 310.59872, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "DISABLE", "bbox": {"l": 149.2699, "t": 314.12985, "r": 184.44882, "b": 322.88623, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Specifies that the column mask is to be enabled", "bbox": {"l": 316.90289, "t": 287.85745, "r": 474.94449000000003, "b": 294.87015, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Specifies that the column mask is to be disabled", "bbox": {"l": 316.41141, "t": 307.76337, "r": 475.41339, "b": 314.77606, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "REGENERATE", "bbox": {"l": 149.2699, "t": 326.41754, "r": 204.24371, "b": 335.17392, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": ";", "bbox": {"l": 204.22632, "t": 326.41754, "r": 206.9678, "b": 335.1637, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Specifies that the column mask is to be regenerated", "bbox": {"l": 310.02191, "t": 327.66925, "r": 481.82784999999996, "b": 334.6819499999999, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "picture", "bbox": {"l": 135.7325897216797, "t": 500.9567565917969, "r": 514.99365234375, "b": 721.4244995117188, "coord_origin": "TOPLEFT"}, "confidence": 0.9797928333282471, "cells": [{"id": 47, "text": "Id", "bbox": {"l": 381.92691, "t": 514.20789, "r": 388.31406, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "tifi", "bbox": {"l": 396.65976, "t": 514.20789, "r": 405.67206, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "th", "bbox": {"l": 414.82132, "t": 514.20789, "r": 421.89322, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "t bl", "bbox": {"l": 427.89014, "t": 514.20789, "r": 440.70319, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "t", "bbox": {"l": 446.63906999999995, "t": 514.20789, "r": 449.39127, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "b", "bbox": {"l": 455.56888, "t": 514.20789, "r": 459.88857999999993, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "lt", "bbox": {"l": 469.84055, "t": 514.20789, "r": 474.47372, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "d", "bbox": {"l": 485.34805000000006, "t": 514.20789, "r": 489.66776, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "ALTER TABLE", "bbox": {"l": 148.2388, "t": 552.25224, "r": 202.0045, "b": 561.05989, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "<", "bbox": {"l": 206.6377, "t": 552.25224, "r": 211.76176, "b": 561.04961, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "table name", "bbox": {"l": 211.76691, "t": 552.25224, "r": 258.88251, "b": 561.05989, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": ">", "bbox": {"l": 258.8876, "t": 552.25224, "r": 264.01169, "b": 561.04961, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "Identifies the table to be altered", "bbox": {"l": 381.92691, "t": 514.20789, "r": 489.70754999999997, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "ALTER TABLE ", "bbox": {"l": 148.2388, "t": 552.25224, "r": 206.66792, "b": 561.05989, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "> ", "bbox": {"l": 258.8876, "t": 552.25224, "r": 266.34219, "b": 561.04961, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "Specifies to activate row access control for the table", "bbox": {"l": 325.8764, "t": 563.64609, "r": 499.40607000000006, "b": 570.69984, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "ACTIVATE ROW ACCESS CONTROL", "bbox": {"l": 148.2388, "t": 601.69044, "r": 290.58826, "b": 610.49809, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "DEACTIVATE ROW ACCESS CONTROL", "bbox": {"l": 148.2388, "t": 614.04996, "r": 302.02682, "b": 622.8576, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "Specifies", "bbox": {"l": 317.00839, "t": 625.44389, "r": 343.54861, "b": 632.49765, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "to deactivate row access control for the table", "bbox": {"l": 348.11584, "t": 625.44389, "r": 498.97121999999996, "b": 632.49765, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "ACTIVATE COLUMN ACCESS CONTROL", "bbox": {"l": 148.2388, "t": 663.48816, "r": 307.72708, "b": 672.2958, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "Specifies", "bbox": {"l": 312.25, "t": 647.07309, "r": 338.41428, "b": 654.12685, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "t", "bbox": {"l": 316.86722, "t": 647.07309, "r": 346.10965, "b": 654.12685, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "o activate column access control for the table", "bbox": {"l": 346.00735, "t": 647.07309, "r": 497.60767, "b": 654.12685, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "DEACTIVATE COLUMN ACCESS CONTROL", "bbox": {"l": 148.2388, "t": 675.84776, "r": 319.12659, "b": 684.6554, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": ";", "bbox": {"l": 319.07822, "t": 675.84776, "r": 321.83575, "b": 684.6451, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "Specifies to deactivate column access control for the table", "bbox": {"l": 302.51691, "t": 705.780998, "r": 496.27634000000006, "b": 712.834747, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 32, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.607666015625, "t": 754.6572875976562, "r": 523.60162, "b": 764.1538696289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9509176015853882, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 32, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 536.0054321289062, "t": 754.273193359375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9023982882499695, "cells": [{"id": 1, "text": "17", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "17"}, {"label": "caption", "id": 2, "page_no": 32, "cluster": {"id": 2, "label": "caption", "bbox": {"l": 135.7609405517578, "t": 349.9282531738281, "r": 415.2347106933594, "b": 359.3016052246094, "coord_origin": "TOPLEFT"}, "confidence": 0.9314021468162537, "cells": [{"id": 2, "text": "Figure 3-3 ALTER PERMISSION and ALTER MASK SQL statements", "bbox": {"l": 136.8, "t": 350.77798, "r": 414.92795, "b": 359.103, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-3 ALTER PERMISSION and ALTER MASK SQL statements"}, {"label": "text", "id": 3, "page_no": 32, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.8385467529297, "t": 375.867431640625, "r": 547.2995, "b": 434.064453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9820544719696045, "cells": [{"id": 3, "text": "You can activate and deactivate RCAC for new or existing tables by using the SQL", "bbox": {"l": 136.8, "t": 376.78873, "r": 499.03439, "b": 386.00171, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " ALTER ", "bbox": {"l": 498.9595299999999, "t": 376.93811, "r": 533.87927, "b": 385.7627, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "TABLE", "bbox": {"l": 136.79999, "t": 388.93793, "r": 161.75975, "b": 397.76251, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": " statement (Figure 3-4). The ", "bbox": {"l": 161.75975, "t": 388.78853999999995, "r": 288.95093, "b": 398.00152999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ACTIVATE", "bbox": {"l": 288.9599, "t": 388.93793, "r": 328.91943, "b": 397.76251, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": " or ", "bbox": {"l": 328.98016, "t": 388.78853999999995, "r": 343.37933, "b": 398.00152999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "DEACTIVATE", "bbox": {"l": 343.38034, "t": 388.93793, "r": 393.35962, "b": 397.76251, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": " clause must be the option that is ", "bbox": {"l": 393.36063, "t": 388.78853999999995, "r": 542.38611, "b": 398.00152999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "specified in the statement. No other alterations are permitted at the same time. The activating ", "bbox": {"l": 136.80096, "t": 400.78836000000007, "r": 547.2995, "b": 410.00134, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "and deactivating effectively turns on or off all RCAC processing for the table. Only enabled ", "bbox": {"l": 136.80096, "t": 412.78818, "r": 537.36926, "b": 422.00116, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "row permissions and column masks take effect when activating RCAC.", "bbox": {"l": 136.80096, "t": 424.7879899999999, "r": 448.40952000000004, "b": 434.00098, "coord_origin": "TOPLEFT"}}]}, "text": "You can activate and deactivate RCAC for new or existing tables by using the SQL ALTER TABLE statement (Figure 3-4). The ACTIVATE or DEACTIVATE clause must be the option that is specified in the statement. No other alterations are permitted at the same time. The activating and deactivating effectively turns on or off all RCAC processing for the table. Only enabled row permissions and column masks take effect when activating RCAC."}, {"label": "caption", "id": 4, "page_no": 32, "cluster": {"id": 4, "label": "caption", "bbox": {"l": 136.1680145263672, "t": 724.62646484375, "r": 306.3438720703125, "b": 734.2166137695312, "coord_origin": "TOPLEFT"}, "confidence": 0.9344669580459595, "cells": [{"id": 14, "text": "Figure 3-4 ALTER TABLE SQL statement", "bbox": {"l": 136.8, "t": 725.477898, "r": 305.51761, "b": 733.802898, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-4 ALTER TABLE SQL statement"}, {"label": "text", "id": 5, "page_no": 32, "cluster": {"id": 5, "label": "text", "bbox": {"l": 142.42935180664062, "t": 452.0504150390625, "r": 531.85156, "b": 474.2764587402344, "coord_origin": "TOPLEFT"}, "confidence": 0.9186185598373413, "cells": [{"id": 15, "text": "Note:", "bbox": {"l": 142.8, "t": 452.74872, "r": 168.33246, "b": 461.9617, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": " An exclusive lock is required on the table object to perform the alter operation. All ", "bbox": {"l": 168.36035, "t": 452.74872, "r": 531.85156, "b": 461.9617, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "open cursors must be closed.", "bbox": {"l": 142.8, "t": 464.74854, "r": 273.34174, "b": 473.96152, "coord_origin": "TOPLEFT"}}]}, "text": "Note: An exclusive lock is required on the table object to perform the alter operation. All open cursors must be closed."}, {"label": "picture", "id": 6, "page_no": 32, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 136.23851013183594, "t": 77.76332092285156, "r": 507.5733642578125, "b": 347.19940185546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9780997633934021, "cells": [{"id": 18, "text": "ALTER PERMISSION", "bbox": {"l": 149.2699, "t": 110.98553000000004, "r": 231.19603, "b": 119.74194, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "<", "bbox": {"l": 235.77481, "t": 110.98553000000004, "r": 240.86904999999996, "b": 119.73168999999996, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "permission name", "bbox": {"l": 240.87360000000004, "t": 110.98553000000004, "r": 311.6275, "b": 119.74194, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "> ", "bbox": {"l": 311.58862, "t": 110.98553000000004, "r": 319.00494, "b": 119.73168999999996, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Names the row permission for row access control", "bbox": {"l": 329.09839, "t": 91.25610000000006, "r": 493.15857, "b": 98.26886000000002, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "p", "bbox": {"l": 240.87360000000004, "t": 110.98553000000004, "r": 246.13150000000002, "b": 119.74194, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "ENABLE", "bbox": {"l": 149.2699, "t": 147.84826999999996, "r": 182.26585, "b": 156.60468000000003, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Specifies", "bbox": {"l": 311.4657, "t": 135.67584, "r": 337.83026, "b": 142.68859999999995, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "that the row permission is to be enabled", "bbox": {"l": 342.39178, "t": 135.67584, "r": 477.03091, "b": 142.68859999999995, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Specifies", "bbox": {"l": 310.97421, "t": 155.58159999999998, "r": 340.08932, "b": 162.59436000000005, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "that the row permission is to be disabled", "bbox": {"l": 341.86423, "t": 155.58159999999998, "r": 477.48803999999996, "b": 162.59436000000005, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "DISABLE", "bbox": {"l": 149.2699, "t": 160.13585999999998, "r": 184.44882, "b": 168.89227000000005, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "REGENERATE", "bbox": {"l": 149.2699, "t": 172.42340000000002, "r": 204.24371, "b": 181.17980999999997, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": ";", "bbox": {"l": 204.22632, "t": 172.42340000000002, "r": 206.9678, "b": 181.16956000000005, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": " that the row permission is to be disabled", "bbox": {"l": 340.1264, "t": 155.58159999999998, "r": 477.48803999999996, "b": 162.59436000000005, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Specifies", "bbox": {"l": 304.58469, "t": 175.48755000000006, "r": 330.95551, "b": 182.50031, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "that the row permission is to be regenerated", "bbox": {"l": 335.51816, "t": 175.48755000000006, "r": 483.95947, "b": 182.50031, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "ALTER MASK ", "bbox": {"l": 149.2699, "t": 264.97968000000003, "r": 205.02728, "b": 273.73608, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "<", "bbox": {"l": 207.42096, "t": 264.97968000000003, "r": 212.5152, "b": 273.72583, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "mask name", "bbox": {"l": 212.52031, "t": 264.97968000000003, "r": 260.34683, "b": 273.73608, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "> ", "bbox": {"l": 260.34991, "t": 264.97968000000003, "r": 267.76624, "b": 273.72583, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Names the column mask for column access control", "bbox": {"l": 328.6376, "t": 243.43781, "r": 496.99047999999993, "b": 250.45056, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ENABLE", "bbox": {"l": 149.2699, "t": 301.84235, "r": 182.26585, "b": 310.59872, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "DISABLE", "bbox": {"l": 149.2699, "t": 314.12985, "r": 184.44882, "b": 322.88623, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Specifies that the column mask is to be enabled", "bbox": {"l": 316.90289, "t": 287.85745, "r": 474.94449000000003, "b": 294.87015, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Specifies that the column mask is to be disabled", "bbox": {"l": 316.41141, "t": 307.76337, "r": 475.41339, "b": 314.77606, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "REGENERATE", "bbox": {"l": 149.2699, "t": 326.41754, "r": 204.24371, "b": 335.17392, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": ";", "bbox": {"l": 204.22632, "t": 326.41754, "r": 206.9678, "b": 335.1637, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Specifies that the column mask is to be regenerated", "bbox": {"l": 310.02191, "t": 327.66925, "r": 481.82784999999996, "b": 334.6819499999999, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 7, "page_no": 32, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 135.7325897216797, "t": 500.9567565917969, "r": 514.99365234375, "b": 721.4244995117188, "coord_origin": "TOPLEFT"}, "confidence": 0.9797928333282471, "cells": [{"id": 47, "text": "Id", "bbox": {"l": 381.92691, "t": 514.20789, "r": 388.31406, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "tifi", "bbox": {"l": 396.65976, "t": 514.20789, "r": 405.67206, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "th", "bbox": {"l": 414.82132, "t": 514.20789, "r": 421.89322, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "t bl", "bbox": {"l": 427.89014, "t": 514.20789, "r": 440.70319, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "t", "bbox": {"l": 446.63906999999995, "t": 514.20789, "r": 449.39127, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "b", "bbox": {"l": 455.56888, "t": 514.20789, "r": 459.88857999999993, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "lt", "bbox": {"l": 469.84055, "t": 514.20789, "r": 474.47372, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "d", "bbox": {"l": 485.34805000000006, "t": 514.20789, "r": 489.66776, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "ALTER TABLE", "bbox": {"l": 148.2388, "t": 552.25224, "r": 202.0045, "b": 561.05989, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "<", "bbox": {"l": 206.6377, "t": 552.25224, "r": 211.76176, "b": 561.04961, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "table name", "bbox": {"l": 211.76691, "t": 552.25224, "r": 258.88251, "b": 561.05989, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": ">", "bbox": {"l": 258.8876, "t": 552.25224, "r": 264.01169, "b": 561.04961, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "Identifies the table to be altered", "bbox": {"l": 381.92691, "t": 514.20789, "r": 489.70754999999997, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "ALTER TABLE ", "bbox": {"l": 148.2388, "t": 552.25224, "r": 206.66792, "b": 561.05989, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "> ", "bbox": {"l": 258.8876, "t": 552.25224, "r": 266.34219, "b": 561.04961, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "Specifies to activate row access control for the table", "bbox": {"l": 325.8764, "t": 563.64609, "r": 499.40607000000006, "b": 570.69984, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "ACTIVATE ROW ACCESS CONTROL", "bbox": {"l": 148.2388, "t": 601.69044, "r": 290.58826, "b": 610.49809, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "DEACTIVATE ROW ACCESS CONTROL", "bbox": {"l": 148.2388, "t": 614.04996, "r": 302.02682, "b": 622.8576, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "Specifies", "bbox": {"l": 317.00839, "t": 625.44389, "r": 343.54861, "b": 632.49765, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "to deactivate row access control for the table", "bbox": {"l": 348.11584, "t": 625.44389, "r": 498.97121999999996, "b": 632.49765, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "ACTIVATE COLUMN ACCESS CONTROL", "bbox": {"l": 148.2388, "t": 663.48816, "r": 307.72708, "b": 672.2958, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "Specifies", "bbox": {"l": 312.25, "t": 647.07309, "r": 338.41428, "b": 654.12685, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "t", "bbox": {"l": 316.86722, "t": 647.07309, "r": 346.10965, "b": 654.12685, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "o activate column access control for the table", "bbox": {"l": 346.00735, "t": 647.07309, "r": 497.60767, "b": 654.12685, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "DEACTIVATE COLUMN ACCESS CONTROL", "bbox": {"l": 148.2388, "t": 675.84776, "r": 319.12659, "b": 684.6554, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": ";", "bbox": {"l": 319.07822, "t": 675.84776, "r": 321.83575, "b": 684.6451, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "Specifies to deactivate column access control for the table", "bbox": {"l": 302.51691, "t": 705.780998, "r": 496.27634000000006, "b": 712.834747, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "caption", "id": 2, "page_no": 32, "cluster": {"id": 2, "label": "caption", "bbox": {"l": 135.7609405517578, "t": 349.9282531738281, "r": 415.2347106933594, "b": 359.3016052246094, "coord_origin": "TOPLEFT"}, "confidence": 0.9314021468162537, "cells": [{"id": 2, "text": "Figure 3-3 ALTER PERMISSION and ALTER MASK SQL statements", "bbox": {"l": 136.8, "t": 350.77798, "r": 414.92795, "b": 359.103, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-3 ALTER PERMISSION and ALTER MASK SQL statements"}, {"label": "text", "id": 3, "page_no": 32, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.8385467529297, "t": 375.867431640625, "r": 547.2995, "b": 434.064453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9820544719696045, "cells": [{"id": 3, "text": "You can activate and deactivate RCAC for new or existing tables by using the SQL", "bbox": {"l": 136.8, "t": 376.78873, "r": 499.03439, "b": 386.00171, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " ALTER ", "bbox": {"l": 498.9595299999999, "t": 376.93811, "r": 533.87927, "b": 385.7627, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "TABLE", "bbox": {"l": 136.79999, "t": 388.93793, "r": 161.75975, "b": 397.76251, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": " statement (Figure 3-4). The ", "bbox": {"l": 161.75975, "t": 388.78853999999995, "r": 288.95093, "b": 398.00152999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ACTIVATE", "bbox": {"l": 288.9599, "t": 388.93793, "r": 328.91943, "b": 397.76251, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": " or ", "bbox": {"l": 328.98016, "t": 388.78853999999995, "r": 343.37933, "b": 398.00152999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "DEACTIVATE", "bbox": {"l": 343.38034, "t": 388.93793, "r": 393.35962, "b": 397.76251, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": " clause must be the option that is ", "bbox": {"l": 393.36063, "t": 388.78853999999995, "r": 542.38611, "b": 398.00152999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "specified in the statement. No other alterations are permitted at the same time. The activating ", "bbox": {"l": 136.80096, "t": 400.78836000000007, "r": 547.2995, "b": 410.00134, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "and deactivating effectively turns on or off all RCAC processing for the table. Only enabled ", "bbox": {"l": 136.80096, "t": 412.78818, "r": 537.36926, "b": 422.00116, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "row permissions and column masks take effect when activating RCAC.", "bbox": {"l": 136.80096, "t": 424.7879899999999, "r": 448.40952000000004, "b": 434.00098, "coord_origin": "TOPLEFT"}}]}, "text": "You can activate and deactivate RCAC for new or existing tables by using the SQL ALTER TABLE statement (Figure 3-4). The ACTIVATE or DEACTIVATE clause must be the option that is specified in the statement. No other alterations are permitted at the same time. The activating and deactivating effectively turns on or off all RCAC processing for the table. Only enabled row permissions and column masks take effect when activating RCAC."}, {"label": "caption", "id": 4, "page_no": 32, "cluster": {"id": 4, "label": "caption", "bbox": {"l": 136.1680145263672, "t": 724.62646484375, "r": 306.3438720703125, "b": 734.2166137695312, "coord_origin": "TOPLEFT"}, "confidence": 0.9344669580459595, "cells": [{"id": 14, "text": "Figure 3-4 ALTER TABLE SQL statement", "bbox": {"l": 136.8, "t": 725.477898, "r": 305.51761, "b": 733.802898, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-4 ALTER TABLE SQL statement"}, {"label": "text", "id": 5, "page_no": 32, "cluster": {"id": 5, "label": "text", "bbox": {"l": 142.42935180664062, "t": 452.0504150390625, "r": 531.85156, "b": 474.2764587402344, "coord_origin": "TOPLEFT"}, "confidence": 0.9186185598373413, "cells": [{"id": 15, "text": "Note:", "bbox": {"l": 142.8, "t": 452.74872, "r": 168.33246, "b": 461.9617, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": " An exclusive lock is required on the table object to perform the alter operation. All ", "bbox": {"l": 168.36035, "t": 452.74872, "r": 531.85156, "b": 461.9617, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "open cursors must be closed.", "bbox": {"l": 142.8, "t": 464.74854, "r": 273.34174, "b": 473.96152, "coord_origin": "TOPLEFT"}}]}, "text": "Note: An exclusive lock is required on the table object to perform the alter operation. All open cursors must be closed."}, {"label": "picture", "id": 6, "page_no": 32, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 136.23851013183594, "t": 77.76332092285156, "r": 507.5733642578125, "b": 347.19940185546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9780997633934021, "cells": [{"id": 18, "text": "ALTER PERMISSION", "bbox": {"l": 149.2699, "t": 110.98553000000004, "r": 231.19603, "b": 119.74194, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "<", "bbox": {"l": 235.77481, "t": 110.98553000000004, "r": 240.86904999999996, "b": 119.73168999999996, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "permission name", "bbox": {"l": 240.87360000000004, "t": 110.98553000000004, "r": 311.6275, "b": 119.74194, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "> ", "bbox": {"l": 311.58862, "t": 110.98553000000004, "r": 319.00494, "b": 119.73168999999996, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Names the row permission for row access control", "bbox": {"l": 329.09839, "t": 91.25610000000006, "r": 493.15857, "b": 98.26886000000002, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "p", "bbox": {"l": 240.87360000000004, "t": 110.98553000000004, "r": 246.13150000000002, "b": 119.74194, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "ENABLE", "bbox": {"l": 149.2699, "t": 147.84826999999996, "r": 182.26585, "b": 156.60468000000003, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Specifies", "bbox": {"l": 311.4657, "t": 135.67584, "r": 337.83026, "b": 142.68859999999995, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "that the row permission is to be enabled", "bbox": {"l": 342.39178, "t": 135.67584, "r": 477.03091, "b": 142.68859999999995, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Specifies", "bbox": {"l": 310.97421, "t": 155.58159999999998, "r": 340.08932, "b": 162.59436000000005, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "that the row permission is to be disabled", "bbox": {"l": 341.86423, "t": 155.58159999999998, "r": 477.48803999999996, "b": 162.59436000000005, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "DISABLE", "bbox": {"l": 149.2699, "t": 160.13585999999998, "r": 184.44882, "b": 168.89227000000005, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "REGENERATE", "bbox": {"l": 149.2699, "t": 172.42340000000002, "r": 204.24371, "b": 181.17980999999997, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": ";", "bbox": {"l": 204.22632, "t": 172.42340000000002, "r": 206.9678, "b": 181.16956000000005, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": " that the row permission is to be disabled", "bbox": {"l": 340.1264, "t": 155.58159999999998, "r": 477.48803999999996, "b": 162.59436000000005, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Specifies", "bbox": {"l": 304.58469, "t": 175.48755000000006, "r": 330.95551, "b": 182.50031, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "that the row permission is to be regenerated", "bbox": {"l": 335.51816, "t": 175.48755000000006, "r": 483.95947, "b": 182.50031, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "ALTER MASK ", "bbox": {"l": 149.2699, "t": 264.97968000000003, "r": 205.02728, "b": 273.73608, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "<", "bbox": {"l": 207.42096, "t": 264.97968000000003, "r": 212.5152, "b": 273.72583, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "mask name", "bbox": {"l": 212.52031, "t": 264.97968000000003, "r": 260.34683, "b": 273.73608, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "> ", "bbox": {"l": 260.34991, "t": 264.97968000000003, "r": 267.76624, "b": 273.72583, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Names the column mask for column access control", "bbox": {"l": 328.6376, "t": 243.43781, "r": 496.99047999999993, "b": 250.45056, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ENABLE", "bbox": {"l": 149.2699, "t": 301.84235, "r": 182.26585, "b": 310.59872, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "DISABLE", "bbox": {"l": 149.2699, "t": 314.12985, "r": 184.44882, "b": 322.88623, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Specifies that the column mask is to be enabled", "bbox": {"l": 316.90289, "t": 287.85745, "r": 474.94449000000003, "b": 294.87015, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Specifies that the column mask is to be disabled", "bbox": {"l": 316.41141, "t": 307.76337, "r": 475.41339, "b": 314.77606, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "REGENERATE", "bbox": {"l": 149.2699, "t": 326.41754, "r": 204.24371, "b": 335.17392, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": ";", "bbox": {"l": 204.22632, "t": 326.41754, "r": 206.9678, "b": 335.1637, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Specifies that the column mask is to be regenerated", "bbox": {"l": 310.02191, "t": 327.66925, "r": 481.82784999999996, "b": 334.6819499999999, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 7, "page_no": 32, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 135.7325897216797, "t": 500.9567565917969, "r": 514.99365234375, "b": 721.4244995117188, "coord_origin": "TOPLEFT"}, "confidence": 0.9797928333282471, "cells": [{"id": 47, "text": "Id", "bbox": {"l": 381.92691, "t": 514.20789, "r": 388.31406, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "tifi", "bbox": {"l": 396.65976, "t": 514.20789, "r": 405.67206, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "th", "bbox": {"l": 414.82132, "t": 514.20789, "r": 421.89322, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "t bl", "bbox": {"l": 427.89014, "t": 514.20789, "r": 440.70319, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "t", "bbox": {"l": 446.63906999999995, "t": 514.20789, "r": 449.39127, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "b", "bbox": {"l": 455.56888, "t": 514.20789, "r": 459.88857999999993, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "lt", "bbox": {"l": 469.84055, "t": 514.20789, "r": 474.47372, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "d", "bbox": {"l": 485.34805000000006, "t": 514.20789, "r": 489.66776, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "ALTER TABLE", "bbox": {"l": 148.2388, "t": 552.25224, "r": 202.0045, "b": 561.05989, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "<", "bbox": {"l": 206.6377, "t": 552.25224, "r": 211.76176, "b": 561.04961, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "table name", "bbox": {"l": 211.76691, "t": 552.25224, "r": 258.88251, "b": 561.05989, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": ">", "bbox": {"l": 258.8876, "t": 552.25224, "r": 264.01169, "b": 561.04961, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "Identifies the table to be altered", "bbox": {"l": 381.92691, "t": 514.20789, "r": 489.70754999999997, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "ALTER TABLE ", "bbox": {"l": 148.2388, "t": 552.25224, "r": 206.66792, "b": 561.05989, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "> ", "bbox": {"l": 258.8876, "t": 552.25224, "r": 266.34219, "b": 561.04961, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "Specifies to activate row access control for the table", "bbox": {"l": 325.8764, "t": 563.64609, "r": 499.40607000000006, "b": 570.69984, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "ACTIVATE ROW ACCESS CONTROL", "bbox": {"l": 148.2388, "t": 601.69044, "r": 290.58826, "b": 610.49809, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "DEACTIVATE ROW ACCESS CONTROL", "bbox": {"l": 148.2388, "t": 614.04996, "r": 302.02682, "b": 622.8576, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "Specifies", "bbox": {"l": 317.00839, "t": 625.44389, "r": 343.54861, "b": 632.49765, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "to deactivate row access control for the table", "bbox": {"l": 348.11584, "t": 625.44389, "r": 498.97121999999996, "b": 632.49765, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "ACTIVATE COLUMN ACCESS CONTROL", "bbox": {"l": 148.2388, "t": 663.48816, "r": 307.72708, "b": 672.2958, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "Specifies", "bbox": {"l": 312.25, "t": 647.07309, "r": 338.41428, "b": 654.12685, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "t", "bbox": {"l": 316.86722, "t": 647.07309, "r": 346.10965, "b": 654.12685, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "o activate column access control for the table", "bbox": {"l": 346.00735, "t": 647.07309, "r": 497.60767, "b": 654.12685, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "DEACTIVATE COLUMN ACCESS CONTROL", "bbox": {"l": 148.2388, "t": 675.84776, "r": 319.12659, "b": 684.6554, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": ";", "bbox": {"l": 319.07822, "t": 675.84776, "r": 321.83575, "b": 684.6451, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "Specifies to deactivate column access control for the table", "bbox": {"l": 302.51691, "t": 705.780998, "r": 496.27634000000006, "b": 712.834747, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 32, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.607666015625, "t": 754.6572875976562, "r": 523.60162, "b": 764.1538696289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9509176015853882, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 32, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 536.0054321289062, "t": 754.273193359375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9023982882499695, "cells": [{"id": 1, "text": "17", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "17"}]}}, {"page_no": 33, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "18 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "When row access control is activated on a table, a default permission is established for that ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 541.60541, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "table. The name of this permission is QIBM_DEFAULT_ _. ", "bbox": {"l": 136.80002, "t": 83.50847999999996, "r": 532.44617, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "This default permission contains a simple piece of logic (0=1) which is never true. The default ", "bbox": {"l": 136.80002, "t": 95.50829999999996, "r": 547.27368, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "permission effectively denies access to every user unless there is a permission defined that ", "bbox": {"l": 136.80003, "t": 107.50811999999996, "r": 543.20679, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "allows access explicitly. If row access control is activated on a table, and there is no ", "bbox": {"l": 136.80003, "t": 119.50792999999999, "r": 507.37884999999994, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "permission that is defined, no one has permission to any rows. All queries against the table ", "bbox": {"l": 136.80003, "t": 131.50775, "r": 541.29761, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "produce an empty set.", "bbox": {"l": 136.80003, "t": 143.50757, "r": 235.74368, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "It is possible to define, create, and enable multiple permissions on a table. Logically, all of the ", "bbox": {"l": 136.80003, "t": 165.52715999999998, "r": 547.26862, "b": 174.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "permissions are ORed together to form a comprehensive test of the user\u2019s ability to access ", "bbox": {"l": 136.80003, "t": 177.52697999999998, "r": 540.27271, "b": 186.73999000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "the data. A column can have only one mask that is defined over it. From an implementation ", "bbox": {"l": 136.80005, "t": 189.52679, "r": 540.56946, "b": 198.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "standpoint, it does not matter if you create the column masks first or the row permissions first.", "bbox": {"l": 136.80005, "t": 201.52661, "r": 547.26361, "b": 210.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "3.2", "bbox": {"l": 64.800003, "t": 284.2207, "r": 87.228401, "b": 298.9837, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Special registers and built-in global variables", "bbox": {"l": 91.714066, "t": 284.2207, "r": 438.75719999999995, "b": 298.9837, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "This section describes how you can use special registers and built-in global variables to ", "bbox": {"l": 136.8, "t": 316.48874, "r": 525.50189, "b": 325.70172, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "implement RCAC.", "bbox": {"l": 136.8, "t": 328.48856, "r": 216.11847, "b": 337.70154, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "3.2.1", "bbox": {"l": 64.800003, "t": 358.37473, "r": 94.390945, "b": 370.36269999999996, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Special registers", "bbox": {"l": 98.089813, "t": 358.37473, "r": 204.58528, "b": 370.36269999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "A special register is a storage area that is defined for an application process by DB2 and is ", "bbox": {"l": 136.8, "t": 384.52872, "r": 539.57452, "b": 393.7417, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "used to store information that can be referenced in SQL statements. A reference to a special ", "bbox": {"l": 136.80002, "t": 396.52853, "r": 547.10638, "b": 405.74152, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "register is a reference to a value that is provided by the current server.", "bbox": {"l": 136.80002, "t": 408.52835, "r": 446.1227999999999, "b": 417.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "IBM DB2 for i supports four different special registers that can be used to identify what user ", "bbox": {"l": 136.80002, "t": 430.48816, "r": 541.74866, "b": 439.70114000000007, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "profiles are relevant to determining object authorities in the current connection to the server. ", "bbox": {"l": 136.80002, "t": 442.48798, "r": 544.57635, "b": 451.70096, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "SQL uses the term ", "bbox": {"l": 136.80002, "t": 454.48779, "r": 223.17113000000003, "b": 463.70078, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "runtime authorization ID", "bbox": {"l": 223.14, "t": 453.965, "r": 333.65698, "b": 464.02267, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": ", which corresponds to a user profile on ", "bbox": {"l": 332.94, "t": 454.48874, "r": 510.13167999999996, "b": 463.70172, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "DB2 for i. Here are the four special registers:", "bbox": {"l": 136.79987, "t": 466.48856, "r": 333.85648, "b": 475.70154, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "GLYPH", "bbox": {"l": 136.79987, "t": 483.67752, "r": 141.77986, "b": 492.4523, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "USER", "bbox": {"l": 151.2, "t": 483.00497, "r": 177.96045, "b": 493.06265, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": " is the runtime user profile that determines the object authorities for the current ", "bbox": {"l": 178.02, "t": 483.52872, "r": 527.85907, "b": 492.7417, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "connection to the server. It has a data type of VARCHAR(18). This value can be changed ", "bbox": {"l": 151.19972, "t": 495.52853, "r": 546.9812, "b": 504.74152, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "by the SQL statement ", "bbox": {"l": 151.19972, "t": 507.52835, "r": 250.47899, "b": 516.7413300000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "SET SESSION AUTHORIZATION", "bbox": {"l": 250.44016, "t": 507.67773, "r": 375.35846, "b": 516.50232, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": ".", "bbox": {"l": 375.36047, "t": 507.52835, "r": 378.12936, "b": 516.7413300000001, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "GLYPH", "bbox": {"l": 136.80055, "t": 524.65753, "r": 141.78055, "b": 533.4323099999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "SESSION_USER", "bbox": {"l": 151.2, "t": 523.98489, "r": 225.65868999999998, "b": 534.0425700000001, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": " is the same as the USER register, except that it has a data type of ", "bbox": {"l": 225.65999999999997, "t": 524.50864, "r": 522.54559, "b": 533.72162, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "VARCHAR(128).", "bbox": {"l": 151.20004, "t": 536.5084400000001, "r": 225.40204, "b": 545.72144, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "GLYPH", "bbox": {"l": 136.79988, "t": 553.6974, "r": 141.77988, "b": 562.47215, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "CURRENT USER", "bbox": {"l": 151.2, "t": 553.02498, "r": 229.63782, "b": 563.08266, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": " was added in IBM i 7.2 and is similar to the USER register, but it has ", "bbox": {"l": 229.62, "t": 553.54872, "r": 537.24548, "b": 562.76172, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "one important difference in that it also reports adopted authority. High-level language ", "bbox": {"l": 151.19994, "t": 565.54852, "r": 527.54938, "b": 574.76152, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "programs and SQL routines such as functions, procedures, and triggers can optionally be ", "bbox": {"l": 151.19994, "t": 577.54832, "r": 547.24835, "b": 586.7613200000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "created to run using either the caller\u2019s or the owner\u2019s user profile to determine data ", "bbox": {"l": 151.19994, "t": 589.54813, "r": 518.6712, "b": 598.76112, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "authorities. For example, an SQL procedure can be created to run under the owner\u2019s ", "bbox": {"l": 151.19994, "t": 601.54793, "r": 526.85022, "b": 610.76093, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "authority by specifying ", "bbox": {"l": 151.19994, "t": 613.54773, "r": 252.84670999999997, "b": 622.76073, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "SET OPTION USRPRF=*OWNER", "bbox": {"l": 252.77998, "t": 613.69713, "r": 372.71829, "b": 622.5216800000001, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": ". This special register can also be ", "bbox": {"l": 372.72031, "t": 613.54773, "r": 523.83533, "b": 622.76073, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "referenced as CURRENT_USER. It has a data type of VARCHAR(128).", "bbox": {"l": 151.19995, "t": 625.54753, "r": 467.14914, "b": 634.76053, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "GLYPH", "bbox": {"l": 136.79979, "t": 642.67674, "r": 141.77979, "b": 651.45149, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "SYSTEM_USER", "bbox": {"l": 151.2, "t": 642.00488, "r": 222.60513, "b": 652.06256, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": " is the user profile that initiates the connection to the server. It is not used ", "bbox": {"l": 222.60000999999997, "t": 642.52863, "r": 547.23834, "b": 651.74162, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "by RCAC, but is included here for completeness. Many jobs, including the QZDASOINIT ", "bbox": {"l": 151.19975, "t": 654.52843, "r": 541.24725, "b": 663.7414200000001, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "prestarted jobs, initially connect to the server with a default user profile and then change to ", "bbox": {"l": 151.19974, "t": 666.52823, "r": 547.26508, "b": 675.74123, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "use some other user profile. SYSTEM_USER reports this value, typically QUSER for a ", "bbox": {"l": 151.19974, "t": 678.52804, "r": 535.65375, "b": 687.74104, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "QZDASOINIT job. It has a data type of VARCHAR(128).", "bbox": {"l": 151.19974, "t": 690.52785, "r": 397.80933, "b": 699.740852, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "In addition to these four special registers, any of the DB2 special registers can be referenced ", "bbox": {"l": 136.79958, "t": 712.547417, "r": 547.20148, "b": 721.7604220000001, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "as part of the rule text.", "bbox": {"l": 136.79959, "t": 724.547226, "r": 236.50912000000002, "b": 733.760231, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "Note:", "bbox": {"l": 142.8, "t": 229.48870999999997, "r": 168.33246, "b": 238.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": " If a user does not have permission to access the row, the column mask logic is not ", "bbox": {"l": 168.36035, "t": 229.48870999999997, "r": 537.48688, "b": 238.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "invoked.", "bbox": {"l": 142.8, "t": 241.48852999999997, "r": 179.3741, "b": 250.70154000000002, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.41429901123047, "t": 754.440673828125, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9157553911209106, "cells": [{"id": 0, "text": "18 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.24517059326172, "t": 754.6806030273438, "r": 334.42142, "b": 763.880859375, "coord_origin": "TOPLEFT"}, "confidence": 0.9524391889572144, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.7600555419922, "t": 70.74359130859375, "r": 547.27368, "b": 153.18722534179688, "coord_origin": "TOPLEFT"}, "confidence": 0.9859952330589294, "cells": [{"id": 2, "text": "When row access control is activated on a table, a default permission is established for that ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 541.60541, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "table. The name of this permission is QIBM_DEFAULT_ _. ", "bbox": {"l": 136.80002, "t": 83.50847999999996, "r": 532.44617, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "This default permission contains a simple piece of logic (0=1) which is never true. The default ", "bbox": {"l": 136.80002, "t": 95.50829999999996, "r": 547.27368, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "permission effectively denies access to every user unless there is a permission defined that ", "bbox": {"l": 136.80003, "t": 107.50811999999996, "r": 543.20679, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "allows access explicitly. If row access control is activated on a table, and there is no ", "bbox": {"l": 136.80003, "t": 119.50792999999999, "r": 507.37884999999994, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "permission that is defined, no one has permission to any rows. All queries against the table ", "bbox": {"l": 136.80003, "t": 131.50775, "r": 541.29761, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "produce an empty set.", "bbox": {"l": 136.80003, "t": 143.50757, "r": 235.74368, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.96725463867188, "t": 164.6621856689453, "r": 547.26862, "b": 211.24705505371094, "coord_origin": "TOPLEFT"}, "confidence": 0.9864240288734436, "cells": [{"id": 9, "text": "It is possible to define, create, and enable multiple permissions on a table. Logically, all of the ", "bbox": {"l": 136.80003, "t": 165.52715999999998, "r": 547.26862, "b": 174.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "permissions are ORed together to form a comprehensive test of the user\u2019s ability to access ", "bbox": {"l": 136.80003, "t": 177.52697999999998, "r": 540.27271, "b": 186.73999000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "the data. A column can have only one mask that is defined over it. From an implementation ", "bbox": {"l": 136.80005, "t": 189.52679, "r": 540.56946, "b": 198.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "standpoint, it does not matter if you create the column masks first or the row permissions first.", "bbox": {"l": 136.80005, "t": 201.52661, "r": 547.26361, "b": 210.73961999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 64.29631042480469, "t": 283.35809326171875, "r": 438.75719999999995, "b": 299.7961730957031, "coord_origin": "TOPLEFT"}, "confidence": 0.9686634540557861, "cells": [{"id": 13, "text": "3.2", "bbox": {"l": 64.800003, "t": 284.2207, "r": 87.228401, "b": 298.9837, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Special registers and built-in global variables", "bbox": {"l": 91.714066, "t": 284.2207, "r": 438.75719999999995, "b": 298.9837, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.81504821777344, "t": 315.3957824707031, "r": 525.50189, "b": 337.70154, "coord_origin": "TOPLEFT"}, "confidence": 0.9780532121658325, "cells": [{"id": 15, "text": "This section describes how you can use special registers and built-in global variables to ", "bbox": {"l": 136.8, "t": 316.48874, "r": 525.50189, "b": 325.70172, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "implement RCAC.", "bbox": {"l": 136.8, "t": 328.48856, "r": 216.11847, "b": 337.70154, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "section_header", "bbox": {"l": 64.23223114013672, "t": 357.744873046875, "r": 204.58528, "b": 370.9036865234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9646314978599548, "cells": [{"id": 17, "text": "3.2.1", "bbox": {"l": 64.800003, "t": 358.37473, "r": 94.390945, "b": 370.36269999999996, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Special registers", "bbox": {"l": 98.089813, "t": 358.37473, "r": 204.58528, "b": 370.36269999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 135.89915466308594, "t": 384.0397644042969, "r": 547.10638, "b": 418.1158447265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9852918386459351, "cells": [{"id": 19, "text": "A special register is a storage area that is defined for an application process by DB2 and is ", "bbox": {"l": 136.8, "t": 384.52872, "r": 539.57452, "b": 393.7417, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "used to store information that can be referenced in SQL statements. A reference to a special ", "bbox": {"l": 136.80002, "t": 396.52853, "r": 547.10638, "b": 405.74152, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "register is a reference to a value that is provided by the current server.", "bbox": {"l": 136.80002, "t": 408.52835, "r": 446.1227999999999, "b": 417.74132999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 136.08819580078125, "t": 429.4395446777344, "r": 544.57635, "b": 475.70154, "coord_origin": "TOPLEFT"}, "confidence": 0.9797153472900391, "cells": [{"id": 22, "text": "IBM DB2 for i supports four different special registers that can be used to identify what user ", "bbox": {"l": 136.80002, "t": 430.48816, "r": 541.74866, "b": 439.70114000000007, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "profiles are relevant to determining object authorities in the current connection to the server. ", "bbox": {"l": 136.80002, "t": 442.48798, "r": 544.57635, "b": 451.70096, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "SQL uses the term ", "bbox": {"l": 136.80002, "t": 454.48779, "r": 223.17113000000003, "b": 463.70078, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "runtime authorization ID", "bbox": {"l": 223.14, "t": 453.965, "r": 333.65698, "b": 464.02267, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": ", which corresponds to a user profile on ", "bbox": {"l": 332.94, "t": 454.48874, "r": 510.13167999999996, "b": 463.70172, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "DB2 for i. Here are the four special registers:", "bbox": {"l": 136.79987, "t": 466.48856, "r": 333.85648, "b": 475.70154, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.6575927734375, "t": 482.5708923339844, "r": 546.9812, "b": 517.0709228515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9826201796531677, "cells": [{"id": 28, "text": "GLYPH", "bbox": {"l": 136.79987, "t": 483.67752, "r": 141.77986, "b": 492.4523, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "USER", "bbox": {"l": 151.2, "t": 483.00497, "r": 177.96045, "b": 493.06265, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": " is the runtime user profile that determines the object authorities for the current ", "bbox": {"l": 178.02, "t": 483.52872, "r": 527.85907, "b": 492.7417, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "connection to the server. It has a data type of VARCHAR(18). This value can be changed ", "bbox": {"l": 151.19972, "t": 495.52853, "r": 546.9812, "b": 504.74152, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "by the SQL statement ", "bbox": {"l": 151.19972, "t": 507.52835, "r": 250.47899, "b": 516.7413300000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "SET SESSION AUTHORIZATION", "bbox": {"l": 250.44016, "t": 507.67773, "r": 375.35846, "b": 516.50232, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": ".", "bbox": {"l": 375.36047, "t": 507.52835, "r": 378.12936, "b": 516.7413300000001, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 135.68878173828125, "t": 523.186767578125, "r": 522.54559, "b": 545.72144, "coord_origin": "TOPLEFT"}, "confidence": 0.9765340089797974, "cells": [{"id": 35, "text": "GLYPH", "bbox": {"l": 136.80055, "t": 524.65753, "r": 141.78055, "b": 533.4323099999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "SESSION_USER", "bbox": {"l": 151.2, "t": 523.98489, "r": 225.65868999999998, "b": 534.0425700000001, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": " is the same as the USER register, except that it has a data type of ", "bbox": {"l": 225.65999999999997, "t": 524.50864, "r": 522.54559, "b": 533.72162, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "VARCHAR(128).", "bbox": {"l": 151.20004, "t": 536.5084400000001, "r": 225.40204, "b": 545.72144, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 135.3015594482422, "t": 552.5537719726562, "r": 547.24835, "b": 634.927978515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9861234426498413, "cells": [{"id": 39, "text": "GLYPH", "bbox": {"l": 136.79988, "t": 553.6974, "r": 141.77988, "b": 562.47215, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "CURRENT USER", "bbox": {"l": 151.2, "t": 553.02498, "r": 229.63782, "b": 563.08266, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": " was added in IBM i 7.2 and is similar to the USER register, but it has ", "bbox": {"l": 229.62, "t": 553.54872, "r": 537.24548, "b": 562.76172, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "one important difference in that it also reports adopted authority. High-level language ", "bbox": {"l": 151.19994, "t": 565.54852, "r": 527.54938, "b": 574.76152, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "programs and SQL routines such as functions, procedures, and triggers can optionally be ", "bbox": {"l": 151.19994, "t": 577.54832, "r": 547.24835, "b": 586.7613200000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "created to run using either the caller\u2019s or the owner\u2019s user profile to determine data ", "bbox": {"l": 151.19994, "t": 589.54813, "r": 518.6712, "b": 598.76112, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "authorities. For example, an SQL procedure can be created to run under the owner\u2019s ", "bbox": {"l": 151.19994, "t": 601.54793, "r": 526.85022, "b": 610.76093, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "authority by specifying ", "bbox": {"l": 151.19994, "t": 613.54773, "r": 252.84670999999997, "b": 622.76073, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "SET OPTION USRPRF=*OWNER", "bbox": {"l": 252.77998, "t": 613.69713, "r": 372.71829, "b": 622.5216800000001, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": ". This special register can also be ", "bbox": {"l": 372.72031, "t": 613.54773, "r": 523.83533, "b": 622.76073, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "referenced as CURRENT_USER. It has a data type of VARCHAR(128).", "bbox": {"l": 151.19995, "t": 625.54753, "r": 467.14914, "b": 634.76053, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "list_item", "bbox": {"l": 135.51412963867188, "t": 641.8392333984375, "r": 547.26508, "b": 700.5236206054688, "coord_origin": "TOPLEFT"}, "confidence": 0.9852910041809082, "cells": [{"id": 50, "text": "GLYPH", "bbox": {"l": 136.79979, "t": 642.67674, "r": 141.77979, "b": 651.45149, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "SYSTEM_USER", "bbox": {"l": 151.2, "t": 642.00488, "r": 222.60513, "b": 652.06256, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": " is the user profile that initiates the connection to the server. It is not used ", "bbox": {"l": 222.60000999999997, "t": 642.52863, "r": 547.23834, "b": 651.74162, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "by RCAC, but is included here for completeness. Many jobs, including the QZDASOINIT ", "bbox": {"l": 151.19975, "t": 654.52843, "r": 541.24725, "b": 663.7414200000001, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "prestarted jobs, initially connect to the server with a default user profile and then change to ", "bbox": {"l": 151.19974, "t": 666.52823, "r": 547.26508, "b": 675.74123, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "use some other user profile. SYSTEM_USER reports this value, typically QUSER for a ", "bbox": {"l": 151.19974, "t": 678.52804, "r": 535.65375, "b": 687.74104, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "QZDASOINIT job. It has a data type of VARCHAR(128).", "bbox": {"l": 151.19974, "t": 690.52785, "r": 397.80933, "b": 699.740852, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 136.05694580078125, "t": 712.0028686523438, "r": 547.20148, "b": 734.2177124023438, "coord_origin": "TOPLEFT"}, "confidence": 0.9718018174171448, "cells": [{"id": 57, "text": "In addition to these four special registers, any of the DB2 special registers can be referenced ", "bbox": {"l": 136.79958, "t": 712.547417, "r": 547.20148, "b": 721.7604220000001, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "as part of the rule text.", "bbox": {"l": 136.79959, "t": 724.547226, "r": 236.50912000000002, "b": 733.760231, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "text", "bbox": {"l": 142.8, "t": 228.60476684570312, "r": 537.48688, "b": 250.70154000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9677881598472595, "cells": [{"id": 59, "text": "Note:", "bbox": {"l": 142.8, "t": 229.48870999999997, "r": 168.33246, "b": 238.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": " If a user does not have permission to access the row, the column mask logic is not ", "bbox": {"l": 168.36035, "t": 229.48870999999997, "r": 537.48688, "b": 238.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "invoked.", "bbox": {"l": 142.8, "t": 241.48852999999997, "r": 179.3741, "b": 250.70154000000002, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 33, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.41429901123047, "t": 754.440673828125, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9157553911209106, "cells": [{"id": 0, "text": "18 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "18"}, {"label": "page_footer", "id": 1, "page_no": 33, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.24517059326172, "t": 754.6806030273438, "r": 334.42142, "b": 763.880859375, "coord_origin": "TOPLEFT"}, "confidence": 0.9524391889572144, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 2, "page_no": 33, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.7600555419922, "t": 70.74359130859375, "r": 547.27368, "b": 153.18722534179688, "coord_origin": "TOPLEFT"}, "confidence": 0.9859952330589294, "cells": [{"id": 2, "text": "When row access control is activated on a table, a default permission is established for that ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 541.60541, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "table. The name of this permission is QIBM_DEFAULT_ _. ", "bbox": {"l": 136.80002, "t": 83.50847999999996, "r": 532.44617, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "This default permission contains a simple piece of logic (0=1) which is never true. The default ", "bbox": {"l": 136.80002, "t": 95.50829999999996, "r": 547.27368, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "permission effectively denies access to every user unless there is a permission defined that ", "bbox": {"l": 136.80003, "t": 107.50811999999996, "r": 543.20679, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "allows access explicitly. If row access control is activated on a table, and there is no ", "bbox": {"l": 136.80003, "t": 119.50792999999999, "r": 507.37884999999994, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "permission that is defined, no one has permission to any rows. All queries against the table ", "bbox": {"l": 136.80003, "t": 131.50775, "r": 541.29761, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "produce an empty set.", "bbox": {"l": 136.80003, "t": 143.50757, "r": 235.74368, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}]}, "text": "When row access control is activated on a table, a default permission is established for that table. The name of this permission is QIBM_DEFAULT_ _. This default permission contains a simple piece of logic (0=1) which is never true. The default permission effectively denies access to every user unless there is a permission defined that allows access explicitly. If row access control is activated on a table, and there is no permission that is defined, no one has permission to any rows. All queries against the table produce an empty set."}, {"label": "text", "id": 3, "page_no": 33, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.96725463867188, "t": 164.6621856689453, "r": 547.26862, "b": 211.24705505371094, "coord_origin": "TOPLEFT"}, "confidence": 0.9864240288734436, "cells": [{"id": 9, "text": "It is possible to define, create, and enable multiple permissions on a table. Logically, all of the ", "bbox": {"l": 136.80003, "t": 165.52715999999998, "r": 547.26862, "b": 174.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "permissions are ORed together to form a comprehensive test of the user\u2019s ability to access ", "bbox": {"l": 136.80003, "t": 177.52697999999998, "r": 540.27271, "b": 186.73999000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "the data. A column can have only one mask that is defined over it. From an implementation ", "bbox": {"l": 136.80005, "t": 189.52679, "r": 540.56946, "b": 198.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "standpoint, it does not matter if you create the column masks first or the row permissions first.", "bbox": {"l": 136.80005, "t": 201.52661, "r": 547.26361, "b": 210.73961999999995, "coord_origin": "TOPLEFT"}}]}, "text": "It is possible to define, create, and enable multiple permissions on a table. Logically, all of the permissions are ORed together to form a comprehensive test of the user\u2019s ability to access the data. A column can have only one mask that is defined over it. From an implementation standpoint, it does not matter if you create the column masks first or the row permissions first."}, {"label": "section_header", "id": 4, "page_no": 33, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.29631042480469, "t": 283.35809326171875, "r": 438.75719999999995, "b": 299.7961730957031, "coord_origin": "TOPLEFT"}, "confidence": 0.9686634540557861, "cells": [{"id": 13, "text": "3.2", "bbox": {"l": 64.800003, "t": 284.2207, "r": 87.228401, "b": 298.9837, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Special registers and built-in global variables", "bbox": {"l": 91.714066, "t": 284.2207, "r": 438.75719999999995, "b": 298.9837, "coord_origin": "TOPLEFT"}}]}, "text": "3.2 Special registers and built-in global variables"}, {"label": "text", "id": 5, "page_no": 33, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.81504821777344, "t": 315.3957824707031, "r": 525.50189, "b": 337.70154, "coord_origin": "TOPLEFT"}, "confidence": 0.9780532121658325, "cells": [{"id": 15, "text": "This section describes how you can use special registers and built-in global variables to ", "bbox": {"l": 136.8, "t": 316.48874, "r": 525.50189, "b": 325.70172, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "implement RCAC.", "bbox": {"l": 136.8, "t": 328.48856, "r": 216.11847, "b": 337.70154, "coord_origin": "TOPLEFT"}}]}, "text": "This section describes how you can use special registers and built-in global variables to implement RCAC."}, {"label": "section_header", "id": 6, "page_no": 33, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 64.23223114013672, "t": 357.744873046875, "r": 204.58528, "b": 370.9036865234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9646314978599548, "cells": [{"id": 17, "text": "3.2.1", "bbox": {"l": 64.800003, "t": 358.37473, "r": 94.390945, "b": 370.36269999999996, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Special registers", "bbox": {"l": 98.089813, "t": 358.37473, "r": 204.58528, "b": 370.36269999999996, "coord_origin": "TOPLEFT"}}]}, "text": "3.2.1 Special registers"}, {"label": "text", "id": 7, "page_no": 33, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.89915466308594, "t": 384.0397644042969, "r": 547.10638, "b": 418.1158447265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9852918386459351, "cells": [{"id": 19, "text": "A special register is a storage area that is defined for an application process by DB2 and is ", "bbox": {"l": 136.8, "t": 384.52872, "r": 539.57452, "b": 393.7417, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "used to store information that can be referenced in SQL statements. A reference to a special ", "bbox": {"l": 136.80002, "t": 396.52853, "r": 547.10638, "b": 405.74152, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "register is a reference to a value that is provided by the current server.", "bbox": {"l": 136.80002, "t": 408.52835, "r": 446.1227999999999, "b": 417.74132999999995, "coord_origin": "TOPLEFT"}}]}, "text": "A special register is a storage area that is defined for an application process by DB2 and is used to store information that can be referenced in SQL statements. A reference to a special register is a reference to a value that is provided by the current server."}, {"label": "text", "id": 8, "page_no": 33, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.08819580078125, "t": 429.4395446777344, "r": 544.57635, "b": 475.70154, "coord_origin": "TOPLEFT"}, "confidence": 0.9797153472900391, "cells": [{"id": 22, "text": "IBM DB2 for i supports four different special registers that can be used to identify what user ", "bbox": {"l": 136.80002, "t": 430.48816, "r": 541.74866, "b": 439.70114000000007, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "profiles are relevant to determining object authorities in the current connection to the server. ", "bbox": {"l": 136.80002, "t": 442.48798, "r": 544.57635, "b": 451.70096, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "SQL uses the term ", "bbox": {"l": 136.80002, "t": 454.48779, "r": 223.17113000000003, "b": 463.70078, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "runtime authorization ID", "bbox": {"l": 223.14, "t": 453.965, "r": 333.65698, "b": 464.02267, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": ", which corresponds to a user profile on ", "bbox": {"l": 332.94, "t": 454.48874, "r": 510.13167999999996, "b": 463.70172, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "DB2 for i. Here are the four special registers:", "bbox": {"l": 136.79987, "t": 466.48856, "r": 333.85648, "b": 475.70154, "coord_origin": "TOPLEFT"}}]}, "text": "IBM DB2 for i supports four different special registers that can be used to identify what user profiles are relevant to determining object authorities in the current connection to the server. SQL uses the term runtime authorization ID , which corresponds to a user profile on DB2 for i. Here are the four special registers:"}, {"label": "list_item", "id": 9, "page_no": 33, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.6575927734375, "t": 482.5708923339844, "r": 546.9812, "b": 517.0709228515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9826201796531677, "cells": [{"id": 28, "text": "GLYPH", "bbox": {"l": 136.79987, "t": 483.67752, "r": 141.77986, "b": 492.4523, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "USER", "bbox": {"l": 151.2, "t": 483.00497, "r": 177.96045, "b": 493.06265, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": " is the runtime user profile that determines the object authorities for the current ", "bbox": {"l": 178.02, "t": 483.52872, "r": 527.85907, "b": 492.7417, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "connection to the server. It has a data type of VARCHAR(18). This value can be changed ", "bbox": {"l": 151.19972, "t": 495.52853, "r": 546.9812, "b": 504.74152, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "by the SQL statement ", "bbox": {"l": 151.19972, "t": 507.52835, "r": 250.47899, "b": 516.7413300000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "SET SESSION AUTHORIZATION", "bbox": {"l": 250.44016, "t": 507.67773, "r": 375.35846, "b": 516.50232, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": ".", "bbox": {"l": 375.36047, "t": 507.52835, "r": 378.12936, "b": 516.7413300000001, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH USER is the runtime user profile that determines the object authorities for the current connection to the server. It has a data type of VARCHAR(18). This value can be changed by the SQL statement SET SESSION AUTHORIZATION ."}, {"label": "list_item", "id": 10, "page_no": 33, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.68878173828125, "t": 523.186767578125, "r": 522.54559, "b": 545.72144, "coord_origin": "TOPLEFT"}, "confidence": 0.9765340089797974, "cells": [{"id": 35, "text": "GLYPH", "bbox": {"l": 136.80055, "t": 524.65753, "r": 141.78055, "b": 533.4323099999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "SESSION_USER", "bbox": {"l": 151.2, "t": 523.98489, "r": 225.65868999999998, "b": 534.0425700000001, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": " is the same as the USER register, except that it has a data type of ", "bbox": {"l": 225.65999999999997, "t": 524.50864, "r": 522.54559, "b": 533.72162, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "VARCHAR(128).", "bbox": {"l": 151.20004, "t": 536.5084400000001, "r": 225.40204, "b": 545.72144, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH SESSION_USER is the same as the USER register, except that it has a data type of VARCHAR(128)."}, {"label": "list_item", "id": 11, "page_no": 33, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.3015594482422, "t": 552.5537719726562, "r": 547.24835, "b": 634.927978515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9861234426498413, "cells": [{"id": 39, "text": "GLYPH", "bbox": {"l": 136.79988, "t": 553.6974, "r": 141.77988, "b": 562.47215, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "CURRENT USER", "bbox": {"l": 151.2, "t": 553.02498, "r": 229.63782, "b": 563.08266, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": " was added in IBM i 7.2 and is similar to the USER register, but it has ", "bbox": {"l": 229.62, "t": 553.54872, "r": 537.24548, "b": 562.76172, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "one important difference in that it also reports adopted authority. High-level language ", "bbox": {"l": 151.19994, "t": 565.54852, "r": 527.54938, "b": 574.76152, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "programs and SQL routines such as functions, procedures, and triggers can optionally be ", "bbox": {"l": 151.19994, "t": 577.54832, "r": 547.24835, "b": 586.7613200000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "created to run using either the caller\u2019s or the owner\u2019s user profile to determine data ", "bbox": {"l": 151.19994, "t": 589.54813, "r": 518.6712, "b": 598.76112, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "authorities. For example, an SQL procedure can be created to run under the owner\u2019s ", "bbox": {"l": 151.19994, "t": 601.54793, "r": 526.85022, "b": 610.76093, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "authority by specifying ", "bbox": {"l": 151.19994, "t": 613.54773, "r": 252.84670999999997, "b": 622.76073, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "SET OPTION USRPRF=*OWNER", "bbox": {"l": 252.77998, "t": 613.69713, "r": 372.71829, "b": 622.5216800000001, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": ". This special register can also be ", "bbox": {"l": 372.72031, "t": 613.54773, "r": 523.83533, "b": 622.76073, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "referenced as CURRENT_USER. It has a data type of VARCHAR(128).", "bbox": {"l": 151.19995, "t": 625.54753, "r": 467.14914, "b": 634.76053, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH CURRENT USER was added in IBM i 7.2 and is similar to the USER register, but it has one important difference in that it also reports adopted authority. High-level language programs and SQL routines such as functions, procedures, and triggers can optionally be created to run using either the caller\u2019s or the owner\u2019s user profile to determine data authorities. For example, an SQL procedure can be created to run under the owner\u2019s authority by specifying SET OPTION USRPRF=*OWNER . This special register can also be referenced as CURRENT_USER. It has a data type of VARCHAR(128)."}, {"label": "list_item", "id": 12, "page_no": 33, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 135.51412963867188, "t": 641.8392333984375, "r": 547.26508, "b": 700.5236206054688, "coord_origin": "TOPLEFT"}, "confidence": 0.9852910041809082, "cells": [{"id": 50, "text": "GLYPH", "bbox": {"l": 136.79979, "t": 642.67674, "r": 141.77979, "b": 651.45149, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "SYSTEM_USER", "bbox": {"l": 151.2, "t": 642.00488, "r": 222.60513, "b": 652.06256, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": " is the user profile that initiates the connection to the server. It is not used ", "bbox": {"l": 222.60000999999997, "t": 642.52863, "r": 547.23834, "b": 651.74162, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "by RCAC, but is included here for completeness. Many jobs, including the QZDASOINIT ", "bbox": {"l": 151.19975, "t": 654.52843, "r": 541.24725, "b": 663.7414200000001, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "prestarted jobs, initially connect to the server with a default user profile and then change to ", "bbox": {"l": 151.19974, "t": 666.52823, "r": 547.26508, "b": 675.74123, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "use some other user profile. SYSTEM_USER reports this value, typically QUSER for a ", "bbox": {"l": 151.19974, "t": 678.52804, "r": 535.65375, "b": 687.74104, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "QZDASOINIT job. It has a data type of VARCHAR(128).", "bbox": {"l": 151.19974, "t": 690.52785, "r": 397.80933, "b": 699.740852, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH SYSTEM_USER is the user profile that initiates the connection to the server. It is not used by RCAC, but is included here for completeness. Many jobs, including the QZDASOINIT prestarted jobs, initially connect to the server with a default user profile and then change to use some other user profile. SYSTEM_USER reports this value, typically QUSER for a QZDASOINIT job. It has a data type of VARCHAR(128)."}, {"label": "text", "id": 13, "page_no": 33, "cluster": {"id": 13, "label": "text", "bbox": {"l": 136.05694580078125, "t": 712.0028686523438, "r": 547.20148, "b": 734.2177124023438, "coord_origin": "TOPLEFT"}, "confidence": 0.9718018174171448, "cells": [{"id": 57, "text": "In addition to these four special registers, any of the DB2 special registers can be referenced ", "bbox": {"l": 136.79958, "t": 712.547417, "r": 547.20148, "b": 721.7604220000001, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "as part of the rule text.", "bbox": {"l": 136.79959, "t": 724.547226, "r": 236.50912000000002, "b": 733.760231, "coord_origin": "TOPLEFT"}}]}, "text": "In addition to these four special registers, any of the DB2 special registers can be referenced as part of the rule text."}, {"label": "text", "id": 14, "page_no": 33, "cluster": {"id": 14, "label": "text", "bbox": {"l": 142.8, "t": 228.60476684570312, "r": 537.48688, "b": 250.70154000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9677881598472595, "cells": [{"id": 59, "text": "Note:", "bbox": {"l": 142.8, "t": 229.48870999999997, "r": 168.33246, "b": 238.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": " If a user does not have permission to access the row, the column mask logic is not ", "bbox": {"l": 168.36035, "t": 229.48870999999997, "r": 537.48688, "b": 238.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "invoked.", "bbox": {"l": 142.8, "t": 241.48852999999997, "r": 179.3741, "b": 250.70154000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Note: If a user does not have permission to access the row, the column mask logic is not invoked."}], "body": [{"label": "text", "id": 2, "page_no": 33, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.7600555419922, "t": 70.74359130859375, "r": 547.27368, "b": 153.18722534179688, "coord_origin": "TOPLEFT"}, "confidence": 0.9859952330589294, "cells": [{"id": 2, "text": "When row access control is activated on a table, a default permission is established for that ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 541.60541, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "table. The name of this permission is QIBM_DEFAULT_ _. ", "bbox": {"l": 136.80002, "t": 83.50847999999996, "r": 532.44617, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "This default permission contains a simple piece of logic (0=1) which is never true. The default ", "bbox": {"l": 136.80002, "t": 95.50829999999996, "r": 547.27368, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "permission effectively denies access to every user unless there is a permission defined that ", "bbox": {"l": 136.80003, "t": 107.50811999999996, "r": 543.20679, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "allows access explicitly. If row access control is activated on a table, and there is no ", "bbox": {"l": 136.80003, "t": 119.50792999999999, "r": 507.37884999999994, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "permission that is defined, no one has permission to any rows. All queries against the table ", "bbox": {"l": 136.80003, "t": 131.50775, "r": 541.29761, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "produce an empty set.", "bbox": {"l": 136.80003, "t": 143.50757, "r": 235.74368, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}]}, "text": "When row access control is activated on a table, a default permission is established for that table. The name of this permission is QIBM_DEFAULT_ _. This default permission contains a simple piece of logic (0=1) which is never true. The default permission effectively denies access to every user unless there is a permission defined that allows access explicitly. If row access control is activated on a table, and there is no permission that is defined, no one has permission to any rows. All queries against the table produce an empty set."}, {"label": "text", "id": 3, "page_no": 33, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.96725463867188, "t": 164.6621856689453, "r": 547.26862, "b": 211.24705505371094, "coord_origin": "TOPLEFT"}, "confidence": 0.9864240288734436, "cells": [{"id": 9, "text": "It is possible to define, create, and enable multiple permissions on a table. Logically, all of the ", "bbox": {"l": 136.80003, "t": 165.52715999999998, "r": 547.26862, "b": 174.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "permissions are ORed together to form a comprehensive test of the user\u2019s ability to access ", "bbox": {"l": 136.80003, "t": 177.52697999999998, "r": 540.27271, "b": 186.73999000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "the data. A column can have only one mask that is defined over it. From an implementation ", "bbox": {"l": 136.80005, "t": 189.52679, "r": 540.56946, "b": 198.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "standpoint, it does not matter if you create the column masks first or the row permissions first.", "bbox": {"l": 136.80005, "t": 201.52661, "r": 547.26361, "b": 210.73961999999995, "coord_origin": "TOPLEFT"}}]}, "text": "It is possible to define, create, and enable multiple permissions on a table. Logically, all of the permissions are ORed together to form a comprehensive test of the user\u2019s ability to access the data. A column can have only one mask that is defined over it. From an implementation standpoint, it does not matter if you create the column masks first or the row permissions first."}, {"label": "section_header", "id": 4, "page_no": 33, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.29631042480469, "t": 283.35809326171875, "r": 438.75719999999995, "b": 299.7961730957031, "coord_origin": "TOPLEFT"}, "confidence": 0.9686634540557861, "cells": [{"id": 13, "text": "3.2", "bbox": {"l": 64.800003, "t": 284.2207, "r": 87.228401, "b": 298.9837, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Special registers and built-in global variables", "bbox": {"l": 91.714066, "t": 284.2207, "r": 438.75719999999995, "b": 298.9837, "coord_origin": "TOPLEFT"}}]}, "text": "3.2 Special registers and built-in global variables"}, {"label": "text", "id": 5, "page_no": 33, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.81504821777344, "t": 315.3957824707031, "r": 525.50189, "b": 337.70154, "coord_origin": "TOPLEFT"}, "confidence": 0.9780532121658325, "cells": [{"id": 15, "text": "This section describes how you can use special registers and built-in global variables to ", "bbox": {"l": 136.8, "t": 316.48874, "r": 525.50189, "b": 325.70172, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "implement RCAC.", "bbox": {"l": 136.8, "t": 328.48856, "r": 216.11847, "b": 337.70154, "coord_origin": "TOPLEFT"}}]}, "text": "This section describes how you can use special registers and built-in global variables to implement RCAC."}, {"label": "section_header", "id": 6, "page_no": 33, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 64.23223114013672, "t": 357.744873046875, "r": 204.58528, "b": 370.9036865234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9646314978599548, "cells": [{"id": 17, "text": "3.2.1", "bbox": {"l": 64.800003, "t": 358.37473, "r": 94.390945, "b": 370.36269999999996, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Special registers", "bbox": {"l": 98.089813, "t": 358.37473, "r": 204.58528, "b": 370.36269999999996, "coord_origin": "TOPLEFT"}}]}, "text": "3.2.1 Special registers"}, {"label": "text", "id": 7, "page_no": 33, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.89915466308594, "t": 384.0397644042969, "r": 547.10638, "b": 418.1158447265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9852918386459351, "cells": [{"id": 19, "text": "A special register is a storage area that is defined for an application process by DB2 and is ", "bbox": {"l": 136.8, "t": 384.52872, "r": 539.57452, "b": 393.7417, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "used to store information that can be referenced in SQL statements. A reference to a special ", "bbox": {"l": 136.80002, "t": 396.52853, "r": 547.10638, "b": 405.74152, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "register is a reference to a value that is provided by the current server.", "bbox": {"l": 136.80002, "t": 408.52835, "r": 446.1227999999999, "b": 417.74132999999995, "coord_origin": "TOPLEFT"}}]}, "text": "A special register is a storage area that is defined for an application process by DB2 and is used to store information that can be referenced in SQL statements. A reference to a special register is a reference to a value that is provided by the current server."}, {"label": "text", "id": 8, "page_no": 33, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.08819580078125, "t": 429.4395446777344, "r": 544.57635, "b": 475.70154, "coord_origin": "TOPLEFT"}, "confidence": 0.9797153472900391, "cells": [{"id": 22, "text": "IBM DB2 for i supports four different special registers that can be used to identify what user ", "bbox": {"l": 136.80002, "t": 430.48816, "r": 541.74866, "b": 439.70114000000007, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "profiles are relevant to determining object authorities in the current connection to the server. ", "bbox": {"l": 136.80002, "t": 442.48798, "r": 544.57635, "b": 451.70096, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "SQL uses the term ", "bbox": {"l": 136.80002, "t": 454.48779, "r": 223.17113000000003, "b": 463.70078, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "runtime authorization ID", "bbox": {"l": 223.14, "t": 453.965, "r": 333.65698, "b": 464.02267, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": ", which corresponds to a user profile on ", "bbox": {"l": 332.94, "t": 454.48874, "r": 510.13167999999996, "b": 463.70172, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "DB2 for i. Here are the four special registers:", "bbox": {"l": 136.79987, "t": 466.48856, "r": 333.85648, "b": 475.70154, "coord_origin": "TOPLEFT"}}]}, "text": "IBM DB2 for i supports four different special registers that can be used to identify what user profiles are relevant to determining object authorities in the current connection to the server. SQL uses the term runtime authorization ID , which corresponds to a user profile on DB2 for i. Here are the four special registers:"}, {"label": "list_item", "id": 9, "page_no": 33, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.6575927734375, "t": 482.5708923339844, "r": 546.9812, "b": 517.0709228515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9826201796531677, "cells": [{"id": 28, "text": "GLYPH", "bbox": {"l": 136.79987, "t": 483.67752, "r": 141.77986, "b": 492.4523, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "USER", "bbox": {"l": 151.2, "t": 483.00497, "r": 177.96045, "b": 493.06265, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": " is the runtime user profile that determines the object authorities for the current ", "bbox": {"l": 178.02, "t": 483.52872, "r": 527.85907, "b": 492.7417, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "connection to the server. It has a data type of VARCHAR(18). This value can be changed ", "bbox": {"l": 151.19972, "t": 495.52853, "r": 546.9812, "b": 504.74152, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "by the SQL statement ", "bbox": {"l": 151.19972, "t": 507.52835, "r": 250.47899, "b": 516.7413300000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "SET SESSION AUTHORIZATION", "bbox": {"l": 250.44016, "t": 507.67773, "r": 375.35846, "b": 516.50232, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": ".", "bbox": {"l": 375.36047, "t": 507.52835, "r": 378.12936, "b": 516.7413300000001, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH USER is the runtime user profile that determines the object authorities for the current connection to the server. It has a data type of VARCHAR(18). This value can be changed by the SQL statement SET SESSION AUTHORIZATION ."}, {"label": "list_item", "id": 10, "page_no": 33, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.68878173828125, "t": 523.186767578125, "r": 522.54559, "b": 545.72144, "coord_origin": "TOPLEFT"}, "confidence": 0.9765340089797974, "cells": [{"id": 35, "text": "GLYPH", "bbox": {"l": 136.80055, "t": 524.65753, "r": 141.78055, "b": 533.4323099999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "SESSION_USER", "bbox": {"l": 151.2, "t": 523.98489, "r": 225.65868999999998, "b": 534.0425700000001, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": " is the same as the USER register, except that it has a data type of ", "bbox": {"l": 225.65999999999997, "t": 524.50864, "r": 522.54559, "b": 533.72162, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "VARCHAR(128).", "bbox": {"l": 151.20004, "t": 536.5084400000001, "r": 225.40204, "b": 545.72144, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH SESSION_USER is the same as the USER register, except that it has a data type of VARCHAR(128)."}, {"label": "list_item", "id": 11, "page_no": 33, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.3015594482422, "t": 552.5537719726562, "r": 547.24835, "b": 634.927978515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9861234426498413, "cells": [{"id": 39, "text": "GLYPH", "bbox": {"l": 136.79988, "t": 553.6974, "r": 141.77988, "b": 562.47215, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "CURRENT USER", "bbox": {"l": 151.2, "t": 553.02498, "r": 229.63782, "b": 563.08266, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": " was added in IBM i 7.2 and is similar to the USER register, but it has ", "bbox": {"l": 229.62, "t": 553.54872, "r": 537.24548, "b": 562.76172, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "one important difference in that it also reports adopted authority. High-level language ", "bbox": {"l": 151.19994, "t": 565.54852, "r": 527.54938, "b": 574.76152, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "programs and SQL routines such as functions, procedures, and triggers can optionally be ", "bbox": {"l": 151.19994, "t": 577.54832, "r": 547.24835, "b": 586.7613200000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "created to run using either the caller\u2019s or the owner\u2019s user profile to determine data ", "bbox": {"l": 151.19994, "t": 589.54813, "r": 518.6712, "b": 598.76112, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "authorities. For example, an SQL procedure can be created to run under the owner\u2019s ", "bbox": {"l": 151.19994, "t": 601.54793, "r": 526.85022, "b": 610.76093, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "authority by specifying ", "bbox": {"l": 151.19994, "t": 613.54773, "r": 252.84670999999997, "b": 622.76073, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "SET OPTION USRPRF=*OWNER", "bbox": {"l": 252.77998, "t": 613.69713, "r": 372.71829, "b": 622.5216800000001, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": ". This special register can also be ", "bbox": {"l": 372.72031, "t": 613.54773, "r": 523.83533, "b": 622.76073, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "referenced as CURRENT_USER. It has a data type of VARCHAR(128).", "bbox": {"l": 151.19995, "t": 625.54753, "r": 467.14914, "b": 634.76053, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH CURRENT USER was added in IBM i 7.2 and is similar to the USER register, but it has one important difference in that it also reports adopted authority. High-level language programs and SQL routines such as functions, procedures, and triggers can optionally be created to run using either the caller\u2019s or the owner\u2019s user profile to determine data authorities. For example, an SQL procedure can be created to run under the owner\u2019s authority by specifying SET OPTION USRPRF=*OWNER . This special register can also be referenced as CURRENT_USER. It has a data type of VARCHAR(128)."}, {"label": "list_item", "id": 12, "page_no": 33, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 135.51412963867188, "t": 641.8392333984375, "r": 547.26508, "b": 700.5236206054688, "coord_origin": "TOPLEFT"}, "confidence": 0.9852910041809082, "cells": [{"id": 50, "text": "GLYPH", "bbox": {"l": 136.79979, "t": 642.67674, "r": 141.77979, "b": 651.45149, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "SYSTEM_USER", "bbox": {"l": 151.2, "t": 642.00488, "r": 222.60513, "b": 652.06256, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": " is the user profile that initiates the connection to the server. It is not used ", "bbox": {"l": 222.60000999999997, "t": 642.52863, "r": 547.23834, "b": 651.74162, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "by RCAC, but is included here for completeness. Many jobs, including the QZDASOINIT ", "bbox": {"l": 151.19975, "t": 654.52843, "r": 541.24725, "b": 663.7414200000001, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "prestarted jobs, initially connect to the server with a default user profile and then change to ", "bbox": {"l": 151.19974, "t": 666.52823, "r": 547.26508, "b": 675.74123, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "use some other user profile. SYSTEM_USER reports this value, typically QUSER for a ", "bbox": {"l": 151.19974, "t": 678.52804, "r": 535.65375, "b": 687.74104, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "QZDASOINIT job. It has a data type of VARCHAR(128).", "bbox": {"l": 151.19974, "t": 690.52785, "r": 397.80933, "b": 699.740852, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH SYSTEM_USER is the user profile that initiates the connection to the server. It is not used by RCAC, but is included here for completeness. Many jobs, including the QZDASOINIT prestarted jobs, initially connect to the server with a default user profile and then change to use some other user profile. SYSTEM_USER reports this value, typically QUSER for a QZDASOINIT job. It has a data type of VARCHAR(128)."}, {"label": "text", "id": 13, "page_no": 33, "cluster": {"id": 13, "label": "text", "bbox": {"l": 136.05694580078125, "t": 712.0028686523438, "r": 547.20148, "b": 734.2177124023438, "coord_origin": "TOPLEFT"}, "confidence": 0.9718018174171448, "cells": [{"id": 57, "text": "In addition to these four special registers, any of the DB2 special registers can be referenced ", "bbox": {"l": 136.79958, "t": 712.547417, "r": 547.20148, "b": 721.7604220000001, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "as part of the rule text.", "bbox": {"l": 136.79959, "t": 724.547226, "r": 236.50912000000002, "b": 733.760231, "coord_origin": "TOPLEFT"}}]}, "text": "In addition to these four special registers, any of the DB2 special registers can be referenced as part of the rule text."}, {"label": "text", "id": 14, "page_no": 33, "cluster": {"id": 14, "label": "text", "bbox": {"l": 142.8, "t": 228.60476684570312, "r": 537.48688, "b": 250.70154000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9677881598472595, "cells": [{"id": 59, "text": "Note:", "bbox": {"l": 142.8, "t": 229.48870999999997, "r": 168.33246, "b": 238.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": " If a user does not have permission to access the row, the column mask logic is not ", "bbox": {"l": 168.36035, "t": 229.48870999999997, "r": 537.48688, "b": 238.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "invoked.", "bbox": {"l": 142.8, "t": 241.48852999999997, "r": 179.3741, "b": 250.70154000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Note: If a user does not have permission to access the row, the column mask logic is not invoked."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 33, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.41429901123047, "t": 754.440673828125, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9157553911209106, "cells": [{"id": 0, "text": "18 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "18"}, {"label": "page_footer", "id": 1, "page_no": 33, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.24517059326172, "t": 754.6806030273438, "r": 334.42142, "b": 763.880859375, "coord_origin": "TOPLEFT"}, "confidence": 0.9524391889572144, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 34, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "19", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Table 3-1 summarizes these special registers and their values.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 412.20758, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Table 3-1 Special registers and their corresponding values", "bbox": {"l": 136.8, "t": 93.49805000000003, "r": 372.60364, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 3-5 shows the difference in the special register values when an adopted authority is ", "bbox": {"l": 136.8, "t": 214.48870999999997, "r": 538.4939, "b": 223.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "used:", "bbox": {"l": 136.8, "t": 226.48852999999997, "r": 161.20995, "b": 235.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 243.67749000000003, "r": 141.78, "b": 252.45227, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "A user connects to the server using the user profile ALICE.", "bbox": {"l": 151.20016, "t": 243.52808000000005, "r": 411.36139, "b": 252.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "GLYPH", "bbox": {"l": 136.8, "t": 260.65729, "r": 141.78, "b": 269.43206999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "USER and CURRENT USER initially have the same value of ALICE.", "bbox": {"l": 151.20016, "t": 260.50787, "r": 453.2580899999999, "b": 269.72089000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "GLYPH", "bbox": {"l": 136.8, "t": 277.63707999999997, "r": 141.78, "b": 286.41187, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ALICE calls an SQL procedure that is named proc1, which is owned by user profile JOE ", "bbox": {"l": 151.20016, "t": 277.48767, "r": 541.44983, "b": 286.70068, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "and was created to adopt JOE\u2019s authority when it is called.", "bbox": {"l": 151.20016, "t": 289.4875200000001, "r": 409.82953, "b": 298.7005, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 306.67647999999997, "r": 141.78, "b": 315.45126000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "While the procedure is running, the special register USER still contains the value of ALICE ", "bbox": {"l": 151.20016, "t": 306.5271, "r": 547.21674, "b": 315.74008, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "because it excludes any adopted authority. The special register CURRENT USER ", "bbox": {"l": 151.20117, "t": 318.52691999999996, "r": 514.32971, "b": 327.7399, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "contains the value of JOE because it includes any adopted authority.", "bbox": {"l": 151.20117, "t": 330.52673, "r": 453.3249200000001, "b": 339.73972, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "GLYPH", "bbox": {"l": 136.80101, "t": 347.65591, "r": 141.78101, "b": 356.43069, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "When proc1 ends, the session reverts to its original state with both USER and CURRENT ", "bbox": {"l": 151.20117, "t": 347.50653, "r": 547.35406, "b": 356.71950999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "USER having the value of ALICE.", "bbox": {"l": 151.20117, "t": 359.50635, "r": 299.57532, "b": 368.71933000000007, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Figure 3-5 Special registers and adopted authority", "bbox": {"l": 136.8, "t": 596.7179, "r": 341.25662, "b": 605.04291, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "3.2.2", "bbox": {"l": 64.800003, "t": 625.55472, "r": 94.20356, "b": 637.54272, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Built-in global variables", "bbox": {"l": 97.879005, "t": 625.55472, "r": 247.02536, "b": 637.54272, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Built-in global variables are provided with the database manager and are used in SQL ", "bbox": {"l": 136.8, "t": 651.70872, "r": 518.00116, "b": 660.92172, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "statements to retrieve scalar values that are associated with the variables.", "bbox": {"l": 136.8, "t": 663.70853, "r": 462.81759999999997, "b": 672.92153, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "IBM DB2 for i supports nine different built-in global variables that are read only and ", "bbox": {"l": 136.8, "t": 685.7281, "r": 504.44669, "b": 694.941101, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "maintained by the system. These global variables can be used to identify attributes of the ", "bbox": {"l": 136.8, "t": 697.727905, "r": 532.3385, "b": 706.94091, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "database connection and used as part of the RCAC logic.", "bbox": {"l": 136.8, "t": 709.727715, "r": 391.38257, "b": 718.94072, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Special register", "bbox": {"l": 142.8, "t": 110.53801999999985, "r": 209.67091, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Corresponding value", "bbox": {"l": 230.18912000000003, "t": 110.53801999999985, "r": 319.93527, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "USER or", "bbox": {"l": 142.80002, "t": 129.49834999999996, "r": 178.26361, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "SESSION_USER", "bbox": {"l": 142.80002, "t": 140.53864, "r": 212.70122, "b": 148.86359000000004, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "The effective user of the thread excluding adopted authority.", "bbox": {"l": 230.21973000000003, "t": 129.49834999999996, "r": 467.99069000000003, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "CURRENT_USER", "bbox": {"l": 142.80003, "t": 159.55835000000002, "r": 216.63962999999998, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "The effective user of the thread including adopted authority. When no adopted ", "bbox": {"l": 230.19814, "t": 159.55835000000002, "r": 535.65082, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "authority is present, this has the same value as USER.", "bbox": {"l": 230.22061, "t": 170.53832999999997, "r": 447.36533, "b": 178.86328000000003, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "SYSTEM_USER", "bbox": {"l": 142.8009, "t": 189.55804, "r": 209.7357, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "The authorization ID that initiated the connection.", "bbox": {"l": 230.2449, "t": 189.55804, "r": 425.64569, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "SignedonasALICE", "bbox": {"l": 140.7323, "t": 386.98453, "r": 218.71170000000004, "b": 395.49527, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Signed on as ALICE", "bbox": {"l": 140.7323, "t": 386.98453, "r": 216.40009, "b": 395.49527, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "USER = ALICE", "bbox": {"l": 138.476, "t": 410.87441999999993, "r": 191.70256, "b": 419.38516, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "CURRENT USER = ALICE", "bbox": {"l": 138.476, "t": 422.81934, "r": 232.56117, "b": 431.33008, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CALL proc1", "bbox": {"l": 138.476, "t": 446.70923000000005, "r": 183.26944, "b": 455.21997, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "P1", "bbox": {"l": 148.4301, "t": 473.58524, "r": 184.17328, "b": 482.09598, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Proc1:", "bbox": {"l": 148.4301, "t": 473.58524, "r": 174.05859, "b": 482.09598, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Owner = JOE", "bbox": {"l": 157.52185, "t": 485.53015, "r": 209.103, "b": 494.04089, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "SET OPTION USRPRF=*OWNER", "bbox": {"l": 157.52185, "t": 497.47507, "r": 281.68927, "b": 505.98581, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "USER = ALICE", "bbox": {"l": 148.4301, "t": 521.36493, "r": 201.65666, "b": 529.87567, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "CURRENT USER = JOE", "bbox": {"l": 148.4301, "t": 533.30984, "r": 234.57686999999999, "b": 541.82059, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "USER = ALICE", "bbox": {"l": 138.476, "t": 566.15842, "r": 191.70256, "b": 574.66917, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "CURRENT USER = ALICE", "bbox": {"l": 138.476, "t": 578.10333, "r": 232.56117, "b": 586.61409, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 344.5751037597656, "t": 754.7044067382812, "r": 523.60162, "b": 764.0689086914062, "coord_origin": "TOPLEFT"}, "confidence": 0.9557498693466187, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 536.0416870117188, "t": 754.2877197265625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9130511283874512, "cells": [{"id": 1, "text": "19", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "caption", "bbox": {"l": 135.82176208496094, "t": 70.68284606933594, "r": 412.20758, "b": 80.81541442871094, "coord_origin": "TOPLEFT"}, "confidence": 0.7875164747238159, "cells": [{"id": 2, "text": "Table 3-1 summarizes these special registers and their values.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 412.20758, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.8, "t": 92.7220458984375, "r": 372.7710876464844, "b": 101.9398422241211, "coord_origin": "TOPLEFT"}, "confidence": 0.9253708720207214, "cells": [{"id": 3, "text": "Table 3-1 Special registers and their corresponding values", "bbox": {"l": 136.8, "t": 93.49805000000003, "r": 372.60364, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 136.3730926513672, "t": 213.3656463623047, "r": 538.4939, "b": 235.70154000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9466656446456909, "cells": [{"id": 4, "text": "Figure 3-5 shows the difference in the special register values when an adopted authority is ", "bbox": {"l": 136.8, "t": 214.48870999999997, "r": 538.4939, "b": 223.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "used:", "bbox": {"l": 136.8, "t": 226.48852999999997, "r": 161.20995, "b": 235.70154000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 135.5663299560547, "t": 242.545654296875, "r": 411.36139, "b": 252.77870178222656, "coord_origin": "TOPLEFT"}, "confidence": 0.9504424333572388, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 243.67749000000003, "r": 141.78, "b": 252.45227, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "A user connects to the server using the user profile ALICE.", "bbox": {"l": 151.20016, "t": 243.52808000000005, "r": 411.36139, "b": 252.74108999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.5452880859375, "t": 259.2925720214844, "r": 453.2580899999999, "b": 269.72089000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9445974230766296, "cells": [{"id": 8, "text": "GLYPH", "bbox": {"l": 136.8, "t": 260.65729, "r": 141.78, "b": 269.43206999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "USER and CURRENT USER initially have the same value of ALICE.", "bbox": {"l": 151.20016, "t": 260.50787, "r": 453.2580899999999, "b": 269.72089000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.3970947265625, "t": 276.51788330078125, "r": 541.44983, "b": 298.98980712890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9742953777313232, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.8, "t": 277.63707999999997, "r": 141.78, "b": 286.41187, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ALICE calls an SQL procedure that is named proc1, which is owned by user profile JOE ", "bbox": {"l": 151.20016, "t": 277.48767, "r": 541.44983, "b": 286.70068, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "and was created to adopt JOE\u2019s authority when it is called.", "bbox": {"l": 151.20016, "t": 289.4875200000001, "r": 409.82953, "b": 298.7005, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.5677947998047, "t": 305.81854248046875, "r": 547.21674, "b": 340.5078125, "coord_origin": "TOPLEFT"}, "confidence": 0.981132447719574, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 306.67647999999997, "r": 141.78, "b": 315.45126000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "While the procedure is running, the special register USER still contains the value of ALICE ", "bbox": {"l": 151.20016, "t": 306.5271, "r": 547.21674, "b": 315.74008, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "because it excludes any adopted authority. The special register CURRENT USER ", "bbox": {"l": 151.20117, "t": 318.52691999999996, "r": 514.32971, "b": 327.7399, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "contains the value of JOE because it includes any adopted authority.", "bbox": {"l": 151.20117, "t": 330.52673, "r": 453.3249200000001, "b": 339.73972, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.56973266601562, "t": 346.4946594238281, "r": 547.35406, "b": 368.9356384277344, "coord_origin": "TOPLEFT"}, "confidence": 0.9748278260231018, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.80101, "t": 347.65591, "r": 141.78101, "b": 356.43069, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "When proc1 ends, the session reverts to its original state with both USER and CURRENT ", "bbox": {"l": 151.20117, "t": 347.50653, "r": 547.35406, "b": 356.71950999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "USER having the value of ALICE.", "bbox": {"l": 151.20117, "t": 359.50635, "r": 299.57532, "b": 368.71933000000007, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "caption", "bbox": {"l": 136.22442626953125, "t": 596.1806030273438, "r": 342.349853515625, "b": 605.74462890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9274528622627258, "cells": [{"id": 20, "text": "Figure 3-5 Special registers and adopted authority", "bbox": {"l": 136.8, "t": 596.7179, "r": 341.25662, "b": 605.04291, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "section_header", "bbox": {"l": 64.079833984375, "t": 624.3213500976562, "r": 247.02536, "b": 637.8447875976562, "coord_origin": "TOPLEFT"}, "confidence": 0.9659212827682495, "cells": [{"id": 21, "text": "3.2.2", "bbox": {"l": 64.800003, "t": 625.55472, "r": 94.20356, "b": 637.54272, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Built-in global variables", "bbox": {"l": 97.879005, "t": 625.55472, "r": 247.02536, "b": 637.54272, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 136.3346710205078, "t": 650.7590942382812, "r": 518.00116, "b": 672.92153, "coord_origin": "TOPLEFT"}, "confidence": 0.9696776866912842, "cells": [{"id": 23, "text": "Built-in global variables are provided with the database manager and are used in SQL ", "bbox": {"l": 136.8, "t": 651.70872, "r": 518.00116, "b": 660.92172, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "statements to retrieve scalar values that are associated with the variables.", "bbox": {"l": 136.8, "t": 663.70853, "r": 462.81759999999997, "b": 672.92153, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 136.17970275878906, "t": 684.6286010742188, "r": 532.3385, "b": 719.0675659179688, "coord_origin": "TOPLEFT"}, "confidence": 0.9783982038497925, "cells": [{"id": 25, "text": "IBM DB2 for i supports nine different built-in global variables that are read only and ", "bbox": {"l": 136.8, "t": 685.7281, "r": 504.44669, "b": 694.941101, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "maintained by the system. These global variables can be used to identify attributes of the ", "bbox": {"l": 136.8, "t": 697.727905, "r": 532.3385, "b": 706.94091, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "database connection and used as part of the RCAC logic.", "bbox": {"l": 136.8, "t": 709.727715, "r": 391.38257, "b": 718.94072, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "table", "bbox": {"l": 134.54624938964844, "t": 103.41889190673828, "r": 542.0460815429688, "b": 204.2716064453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9731298685073853, "cells": [{"id": 28, "text": "Special register", "bbox": {"l": 142.8, "t": 110.53801999999985, "r": 209.67091, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Corresponding value", "bbox": {"l": 230.18912000000003, "t": 110.53801999999985, "r": 319.93527, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "USER or", "bbox": {"l": 142.80002, "t": 129.49834999999996, "r": 178.26361, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "SESSION_USER", "bbox": {"l": 142.80002, "t": 140.53864, "r": 212.70122, "b": 148.86359000000004, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "The effective user of the thread excluding adopted authority.", "bbox": {"l": 230.21973000000003, "t": 129.49834999999996, "r": 467.99069000000003, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "CURRENT_USER", "bbox": {"l": 142.80003, "t": 159.55835000000002, "r": 216.63962999999998, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "The effective user of the thread including adopted authority. When no adopted ", "bbox": {"l": 230.19814, "t": 159.55835000000002, "r": 535.65082, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "authority is present, this has the same value as USER.", "bbox": {"l": 230.22061, "t": 170.53832999999997, "r": 447.36533, "b": 178.86328000000003, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "SYSTEM_USER", "bbox": {"l": 142.8009, "t": 189.55804, "r": 209.7357, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "The authorization ID that initiated the connection.", "bbox": {"l": 230.2449, "t": 189.55804, "r": 425.64569, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "picture", "bbox": {"l": 135.64837646484375, "t": 384.1737060546875, "r": 301.2367248535156, "b": 594.7566528320312, "coord_origin": "TOPLEFT"}, "confidence": 0.7221464514732361, "cells": [{"id": 39, "text": "Signed on as ALICE", "bbox": {"l": 140.7323, "t": 386.98453, "r": 216.40009, "b": 395.49527, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "USER = ALICE", "bbox": {"l": 138.476, "t": 410.87441999999993, "r": 191.70256, "b": 419.38516, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "CURRENT USER = ALICE", "bbox": {"l": 138.476, "t": 422.81934, "r": 232.56117, "b": 431.33008, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CALL proc1", "bbox": {"l": 138.476, "t": 446.70923000000005, "r": 183.26944, "b": 455.21997, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "P1", "bbox": {"l": 148.4301, "t": 473.58524, "r": 184.17328, "b": 482.09598, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Proc1:", "bbox": {"l": 148.4301, "t": 473.58524, "r": 174.05859, "b": 482.09598, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Owner = JOE", "bbox": {"l": 157.52185, "t": 485.53015, "r": 209.103, "b": 494.04089, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "SET OPTION USRPRF=*OWNER", "bbox": {"l": 157.52185, "t": 497.47507, "r": 281.68927, "b": 505.98581, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "USER = ALICE", "bbox": {"l": 148.4301, "t": 521.36493, "r": 201.65666, "b": 529.87567, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "CURRENT USER = JOE", "bbox": {"l": 148.4301, "t": 533.30984, "r": 234.57686999999999, "b": 541.82059, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "USER = ALICE", "bbox": {"l": 138.476, "t": 566.15842, "r": 191.70256, "b": 574.66917, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "CURRENT USER = ALICE", "bbox": {"l": 138.476, "t": 578.10333, "r": 232.56117, "b": 586.61409, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {"14": {"label": "table", "id": 14, "page_no": 34, "cluster": {"id": 14, "label": "table", "bbox": {"l": 134.54624938964844, "t": 103.41889190673828, "r": 542.0460815429688, "b": 204.2716064453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9731298685073853, "cells": [{"id": 28, "text": "Special register", "bbox": {"l": 142.8, "t": 110.53801999999985, "r": 209.67091, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Corresponding value", "bbox": {"l": 230.18912000000003, "t": 110.53801999999985, "r": 319.93527, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "USER or", "bbox": {"l": 142.80002, "t": 129.49834999999996, "r": 178.26361, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "SESSION_USER", "bbox": {"l": 142.80002, "t": 140.53864, "r": 212.70122, "b": 148.86359000000004, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "The effective user of the thread excluding adopted authority.", "bbox": {"l": 230.21973000000003, "t": 129.49834999999996, "r": 467.99069000000003, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "CURRENT_USER", "bbox": {"l": 142.80003, "t": 159.55835000000002, "r": 216.63962999999998, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "The effective user of the thread including adopted authority. When no adopted ", "bbox": {"l": 230.19814, "t": 159.55835000000002, "r": 535.65082, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "authority is present, this has the same value as USER.", "bbox": {"l": 230.22061, "t": 170.53832999999997, "r": 447.36533, "b": 178.86328000000003, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "SYSTEM_USER", "bbox": {"l": 142.8009, "t": 189.55804, "r": 209.7357, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "The authorization ID that initiated the connection.", "bbox": {"l": 230.2449, "t": 189.55804, "r": 425.64569, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl"], "num_rows": 4, "num_cols": 2, "table_cells": [{"bbox": {"l": 142.8, "t": 110.53801999999985, "r": 209.67091, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Special register", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 230.18912000000003, "t": 110.53801999999985, "r": 319.93527, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Corresponding value", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 142.80002, "t": 129.49834999999996, "r": 212.70122, "b": 148.86359000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USER or SESSION_USER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 230.21973000000003, "t": 129.49834999999996, "r": 467.99069000000003, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "The effective user of the thread excluding adopted authority.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.80003, "t": 159.55835000000002, "r": 216.63962999999998, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CURRENT_USER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 230.19814, "t": 159.55835000000002, "r": 535.65082, "b": 178.86328000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "The effective user of the thread including adopted authority. When no adopted authority is present, this has the same value as USER.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8009, "t": 189.55804, "r": 209.7357, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "SYSTEM_USER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 230.2449, "t": 189.55804, "r": 425.64569, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "The authorization ID that initiated the connection.", "column_header": false, "row_header": false, "row_section": false}]}}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 34, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.5751037597656, "t": 754.7044067382812, "r": 523.60162, "b": 764.0689086914062, "coord_origin": "TOPLEFT"}, "confidence": 0.9557498693466187, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 34, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 536.0416870117188, "t": 754.2877197265625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9130511283874512, "cells": [{"id": 1, "text": "19", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "19"}, {"label": "caption", "id": 2, "page_no": 34, "cluster": {"id": 2, "label": "caption", "bbox": {"l": 135.82176208496094, "t": 70.68284606933594, "r": 412.20758, "b": 80.81541442871094, "coord_origin": "TOPLEFT"}, "confidence": 0.7875164747238159, "cells": [{"id": 2, "text": "Table 3-1 summarizes these special registers and their values.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 412.20758, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}]}, "text": "Table 3-1 summarizes these special registers and their values."}, {"label": "caption", "id": 3, "page_no": 34, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.8, "t": 92.7220458984375, "r": 372.7710876464844, "b": 101.9398422241211, "coord_origin": "TOPLEFT"}, "confidence": 0.9253708720207214, "cells": [{"id": 3, "text": "Table 3-1 Special registers and their corresponding values", "bbox": {"l": 136.8, "t": 93.49805000000003, "r": 372.60364, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}}]}, "text": "Table 3-1 Special registers and their corresponding values"}, {"label": "text", "id": 4, "page_no": 34, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.3730926513672, "t": 213.3656463623047, "r": 538.4939, "b": 235.70154000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9466656446456909, "cells": [{"id": 4, "text": "Figure 3-5 shows the difference in the special register values when an adopted authority is ", "bbox": {"l": 136.8, "t": 214.48870999999997, "r": 538.4939, "b": 223.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "used:", "bbox": {"l": 136.8, "t": 226.48852999999997, "r": 161.20995, "b": 235.70154000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-5 shows the difference in the special register values when an adopted authority is used:"}, {"label": "list_item", "id": 5, "page_no": 34, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.5663299560547, "t": 242.545654296875, "r": 411.36139, "b": 252.77870178222656, "coord_origin": "TOPLEFT"}, "confidence": 0.9504424333572388, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 243.67749000000003, "r": 141.78, "b": 252.45227, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "A user connects to the server using the user profile ALICE.", "bbox": {"l": 151.20016, "t": 243.52808000000005, "r": 411.36139, "b": 252.74108999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH A user connects to the server using the user profile ALICE."}, {"label": "list_item", "id": 6, "page_no": 34, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.5452880859375, "t": 259.2925720214844, "r": 453.2580899999999, "b": 269.72089000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9445974230766296, "cells": [{"id": 8, "text": "GLYPH", "bbox": {"l": 136.8, "t": 260.65729, "r": 141.78, "b": 269.43206999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "USER and CURRENT USER initially have the same value of ALICE.", "bbox": {"l": 151.20016, "t": 260.50787, "r": 453.2580899999999, "b": 269.72089000000005, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH USER and CURRENT USER initially have the same value of ALICE."}, {"label": "list_item", "id": 7, "page_no": 34, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.3970947265625, "t": 276.51788330078125, "r": 541.44983, "b": 298.98980712890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9742953777313232, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.8, "t": 277.63707999999997, "r": 141.78, "b": 286.41187, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ALICE calls an SQL procedure that is named proc1, which is owned by user profile JOE ", "bbox": {"l": 151.20016, "t": 277.48767, "r": 541.44983, "b": 286.70068, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "and was created to adopt JOE\u2019s authority when it is called.", "bbox": {"l": 151.20016, "t": 289.4875200000001, "r": 409.82953, "b": 298.7005, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH ALICE calls an SQL procedure that is named proc1, which is owned by user profile JOE and was created to adopt JOE\u2019s authority when it is called."}, {"label": "list_item", "id": 8, "page_no": 34, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.5677947998047, "t": 305.81854248046875, "r": 547.21674, "b": 340.5078125, "coord_origin": "TOPLEFT"}, "confidence": 0.981132447719574, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 306.67647999999997, "r": 141.78, "b": 315.45126000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "While the procedure is running, the special register USER still contains the value of ALICE ", "bbox": {"l": 151.20016, "t": 306.5271, "r": 547.21674, "b": 315.74008, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "because it excludes any adopted authority. The special register CURRENT USER ", "bbox": {"l": 151.20117, "t": 318.52691999999996, "r": 514.32971, "b": 327.7399, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "contains the value of JOE because it includes any adopted authority.", "bbox": {"l": 151.20117, "t": 330.52673, "r": 453.3249200000001, "b": 339.73972, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH While the procedure is running, the special register USER still contains the value of ALICE because it excludes any adopted authority. The special register CURRENT USER contains the value of JOE because it includes any adopted authority."}, {"label": "list_item", "id": 9, "page_no": 34, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.56973266601562, "t": 346.4946594238281, "r": 547.35406, "b": 368.9356384277344, "coord_origin": "TOPLEFT"}, "confidence": 0.9748278260231018, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.80101, "t": 347.65591, "r": 141.78101, "b": 356.43069, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "When proc1 ends, the session reverts to its original state with both USER and CURRENT ", "bbox": {"l": 151.20117, "t": 347.50653, "r": 547.35406, "b": 356.71950999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "USER having the value of ALICE.", "bbox": {"l": 151.20117, "t": 359.50635, "r": 299.57532, "b": 368.71933000000007, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH When proc1 ends, the session reverts to its original state with both USER and CURRENT USER having the value of ALICE."}, {"label": "caption", "id": 10, "page_no": 34, "cluster": {"id": 10, "label": "caption", "bbox": {"l": 136.22442626953125, "t": 596.1806030273438, "r": 342.349853515625, "b": 605.74462890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9274528622627258, "cells": [{"id": 20, "text": "Figure 3-5 Special registers and adopted authority", "bbox": {"l": 136.8, "t": 596.7179, "r": 341.25662, "b": 605.04291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-5 Special registers and adopted authority"}, {"label": "section_header", "id": 11, "page_no": 34, "cluster": {"id": 11, "label": "section_header", "bbox": {"l": 64.079833984375, "t": 624.3213500976562, "r": 247.02536, "b": 637.8447875976562, "coord_origin": "TOPLEFT"}, "confidence": 0.9659212827682495, "cells": [{"id": 21, "text": "3.2.2", "bbox": {"l": 64.800003, "t": 625.55472, "r": 94.20356, "b": 637.54272, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Built-in global variables", "bbox": {"l": 97.879005, "t": 625.55472, "r": 247.02536, "b": 637.54272, "coord_origin": "TOPLEFT"}}]}, "text": "3.2.2 Built-in global variables"}, {"label": "text", "id": 12, "page_no": 34, "cluster": {"id": 12, "label": "text", "bbox": {"l": 136.3346710205078, "t": 650.7590942382812, "r": 518.00116, "b": 672.92153, "coord_origin": "TOPLEFT"}, "confidence": 0.9696776866912842, "cells": [{"id": 23, "text": "Built-in global variables are provided with the database manager and are used in SQL ", "bbox": {"l": 136.8, "t": 651.70872, "r": 518.00116, "b": 660.92172, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "statements to retrieve scalar values that are associated with the variables.", "bbox": {"l": 136.8, "t": 663.70853, "r": 462.81759999999997, "b": 672.92153, "coord_origin": "TOPLEFT"}}]}, "text": "Built-in global variables are provided with the database manager and are used in SQL statements to retrieve scalar values that are associated with the variables."}, {"label": "text", "id": 13, "page_no": 34, "cluster": {"id": 13, "label": "text", "bbox": {"l": 136.17970275878906, "t": 684.6286010742188, "r": 532.3385, "b": 719.0675659179688, "coord_origin": "TOPLEFT"}, "confidence": 0.9783982038497925, "cells": [{"id": 25, "text": "IBM DB2 for i supports nine different built-in global variables that are read only and ", "bbox": {"l": 136.8, "t": 685.7281, "r": 504.44669, "b": 694.941101, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "maintained by the system. These global variables can be used to identify attributes of the ", "bbox": {"l": 136.8, "t": 697.727905, "r": 532.3385, "b": 706.94091, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "database connection and used as part of the RCAC logic.", "bbox": {"l": 136.8, "t": 709.727715, "r": 391.38257, "b": 718.94072, "coord_origin": "TOPLEFT"}}]}, "text": "IBM DB2 for i supports nine different built-in global variables that are read only and maintained by the system. These global variables can be used to identify attributes of the database connection and used as part of the RCAC logic."}, {"label": "table", "id": 14, "page_no": 34, "cluster": {"id": 14, "label": "table", "bbox": {"l": 134.54624938964844, "t": 103.41889190673828, "r": 542.0460815429688, "b": 204.2716064453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9731298685073853, "cells": [{"id": 28, "text": "Special register", "bbox": {"l": 142.8, "t": 110.53801999999985, "r": 209.67091, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Corresponding value", "bbox": {"l": 230.18912000000003, "t": 110.53801999999985, "r": 319.93527, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "USER or", "bbox": {"l": 142.80002, "t": 129.49834999999996, "r": 178.26361, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "SESSION_USER", "bbox": {"l": 142.80002, "t": 140.53864, "r": 212.70122, "b": 148.86359000000004, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "The effective user of the thread excluding adopted authority.", "bbox": {"l": 230.21973000000003, "t": 129.49834999999996, "r": 467.99069000000003, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "CURRENT_USER", "bbox": {"l": 142.80003, "t": 159.55835000000002, "r": 216.63962999999998, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "The effective user of the thread including adopted authority. When no adopted ", "bbox": {"l": 230.19814, "t": 159.55835000000002, "r": 535.65082, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "authority is present, this has the same value as USER.", "bbox": {"l": 230.22061, "t": 170.53832999999997, "r": 447.36533, "b": 178.86328000000003, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "SYSTEM_USER", "bbox": {"l": 142.8009, "t": 189.55804, "r": 209.7357, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "The authorization ID that initiated the connection.", "bbox": {"l": 230.2449, "t": 189.55804, "r": 425.64569, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl"], "num_rows": 4, "num_cols": 2, "table_cells": [{"bbox": {"l": 142.8, "t": 110.53801999999985, "r": 209.67091, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Special register", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 230.18912000000003, "t": 110.53801999999985, "r": 319.93527, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Corresponding value", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 142.80002, "t": 129.49834999999996, "r": 212.70122, "b": 148.86359000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USER or SESSION_USER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 230.21973000000003, "t": 129.49834999999996, "r": 467.99069000000003, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "The effective user of the thread excluding adopted authority.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.80003, "t": 159.55835000000002, "r": 216.63962999999998, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CURRENT_USER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 230.19814, "t": 159.55835000000002, "r": 535.65082, "b": 178.86328000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "The effective user of the thread including adopted authority. When no adopted authority is present, this has the same value as USER.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8009, "t": 189.55804, "r": 209.7357, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "SYSTEM_USER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 230.2449, "t": 189.55804, "r": 425.64569, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "The authorization ID that initiated the connection.", "column_header": false, "row_header": false, "row_section": false}]}, {"label": "picture", "id": 15, "page_no": 34, "cluster": {"id": 15, "label": "picture", "bbox": {"l": 135.64837646484375, "t": 384.1737060546875, "r": 301.2367248535156, "b": 594.7566528320312, "coord_origin": "TOPLEFT"}, "confidence": 0.7221464514732361, "cells": [{"id": 39, "text": "Signed on as ALICE", "bbox": {"l": 140.7323, "t": 386.98453, "r": 216.40009, "b": 395.49527, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "USER = ALICE", "bbox": {"l": 138.476, "t": 410.87441999999993, "r": 191.70256, "b": 419.38516, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "CURRENT USER = ALICE", "bbox": {"l": 138.476, "t": 422.81934, "r": 232.56117, "b": 431.33008, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CALL proc1", "bbox": {"l": 138.476, "t": 446.70923000000005, "r": 183.26944, "b": 455.21997, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "P1", "bbox": {"l": 148.4301, "t": 473.58524, "r": 184.17328, "b": 482.09598, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Proc1:", "bbox": {"l": 148.4301, "t": 473.58524, "r": 174.05859, "b": 482.09598, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Owner = JOE", "bbox": {"l": 157.52185, "t": 485.53015, "r": 209.103, "b": 494.04089, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "SET OPTION USRPRF=*OWNER", "bbox": {"l": 157.52185, "t": 497.47507, "r": 281.68927, "b": 505.98581, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "USER = ALICE", "bbox": {"l": 148.4301, "t": 521.36493, "r": 201.65666, "b": 529.87567, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "CURRENT USER = JOE", "bbox": {"l": 148.4301, "t": 533.30984, "r": 234.57686999999999, "b": 541.82059, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "USER = ALICE", "bbox": {"l": 138.476, "t": 566.15842, "r": 191.70256, "b": 574.66917, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "CURRENT USER = ALICE", "bbox": {"l": 138.476, "t": 578.10333, "r": 232.56117, "b": 586.61409, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "caption", "id": 2, "page_no": 34, "cluster": {"id": 2, "label": "caption", "bbox": {"l": 135.82176208496094, "t": 70.68284606933594, "r": 412.20758, "b": 80.81541442871094, "coord_origin": "TOPLEFT"}, "confidence": 0.7875164747238159, "cells": [{"id": 2, "text": "Table 3-1 summarizes these special registers and their values.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 412.20758, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}]}, "text": "Table 3-1 summarizes these special registers and their values."}, {"label": "caption", "id": 3, "page_no": 34, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.8, "t": 92.7220458984375, "r": 372.7710876464844, "b": 101.9398422241211, "coord_origin": "TOPLEFT"}, "confidence": 0.9253708720207214, "cells": [{"id": 3, "text": "Table 3-1 Special registers and their corresponding values", "bbox": {"l": 136.8, "t": 93.49805000000003, "r": 372.60364, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}}]}, "text": "Table 3-1 Special registers and their corresponding values"}, {"label": "text", "id": 4, "page_no": 34, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.3730926513672, "t": 213.3656463623047, "r": 538.4939, "b": 235.70154000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9466656446456909, "cells": [{"id": 4, "text": "Figure 3-5 shows the difference in the special register values when an adopted authority is ", "bbox": {"l": 136.8, "t": 214.48870999999997, "r": 538.4939, "b": 223.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "used:", "bbox": {"l": 136.8, "t": 226.48852999999997, "r": 161.20995, "b": 235.70154000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-5 shows the difference in the special register values when an adopted authority is used:"}, {"label": "list_item", "id": 5, "page_no": 34, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.5663299560547, "t": 242.545654296875, "r": 411.36139, "b": 252.77870178222656, "coord_origin": "TOPLEFT"}, "confidence": 0.9504424333572388, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 243.67749000000003, "r": 141.78, "b": 252.45227, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "A user connects to the server using the user profile ALICE.", "bbox": {"l": 151.20016, "t": 243.52808000000005, "r": 411.36139, "b": 252.74108999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH A user connects to the server using the user profile ALICE."}, {"label": "list_item", "id": 6, "page_no": 34, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.5452880859375, "t": 259.2925720214844, "r": 453.2580899999999, "b": 269.72089000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9445974230766296, "cells": [{"id": 8, "text": "GLYPH", "bbox": {"l": 136.8, "t": 260.65729, "r": 141.78, "b": 269.43206999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "USER and CURRENT USER initially have the same value of ALICE.", "bbox": {"l": 151.20016, "t": 260.50787, "r": 453.2580899999999, "b": 269.72089000000005, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH USER and CURRENT USER initially have the same value of ALICE."}, {"label": "list_item", "id": 7, "page_no": 34, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.3970947265625, "t": 276.51788330078125, "r": 541.44983, "b": 298.98980712890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9742953777313232, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.8, "t": 277.63707999999997, "r": 141.78, "b": 286.41187, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ALICE calls an SQL procedure that is named proc1, which is owned by user profile JOE ", "bbox": {"l": 151.20016, "t": 277.48767, "r": 541.44983, "b": 286.70068, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "and was created to adopt JOE\u2019s authority when it is called.", "bbox": {"l": 151.20016, "t": 289.4875200000001, "r": 409.82953, "b": 298.7005, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH ALICE calls an SQL procedure that is named proc1, which is owned by user profile JOE and was created to adopt JOE\u2019s authority when it is called."}, {"label": "list_item", "id": 8, "page_no": 34, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.5677947998047, "t": 305.81854248046875, "r": 547.21674, "b": 340.5078125, "coord_origin": "TOPLEFT"}, "confidence": 0.981132447719574, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 306.67647999999997, "r": 141.78, "b": 315.45126000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "While the procedure is running, the special register USER still contains the value of ALICE ", "bbox": {"l": 151.20016, "t": 306.5271, "r": 547.21674, "b": 315.74008, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "because it excludes any adopted authority. The special register CURRENT USER ", "bbox": {"l": 151.20117, "t": 318.52691999999996, "r": 514.32971, "b": 327.7399, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "contains the value of JOE because it includes any adopted authority.", "bbox": {"l": 151.20117, "t": 330.52673, "r": 453.3249200000001, "b": 339.73972, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH While the procedure is running, the special register USER still contains the value of ALICE because it excludes any adopted authority. The special register CURRENT USER contains the value of JOE because it includes any adopted authority."}, {"label": "list_item", "id": 9, "page_no": 34, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.56973266601562, "t": 346.4946594238281, "r": 547.35406, "b": 368.9356384277344, "coord_origin": "TOPLEFT"}, "confidence": 0.9748278260231018, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.80101, "t": 347.65591, "r": 141.78101, "b": 356.43069, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "When proc1 ends, the session reverts to its original state with both USER and CURRENT ", "bbox": {"l": 151.20117, "t": 347.50653, "r": 547.35406, "b": 356.71950999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "USER having the value of ALICE.", "bbox": {"l": 151.20117, "t": 359.50635, "r": 299.57532, "b": 368.71933000000007, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH When proc1 ends, the session reverts to its original state with both USER and CURRENT USER having the value of ALICE."}, {"label": "caption", "id": 10, "page_no": 34, "cluster": {"id": 10, "label": "caption", "bbox": {"l": 136.22442626953125, "t": 596.1806030273438, "r": 342.349853515625, "b": 605.74462890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9274528622627258, "cells": [{"id": 20, "text": "Figure 3-5 Special registers and adopted authority", "bbox": {"l": 136.8, "t": 596.7179, "r": 341.25662, "b": 605.04291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-5 Special registers and adopted authority"}, {"label": "section_header", "id": 11, "page_no": 34, "cluster": {"id": 11, "label": "section_header", "bbox": {"l": 64.079833984375, "t": 624.3213500976562, "r": 247.02536, "b": 637.8447875976562, "coord_origin": "TOPLEFT"}, "confidence": 0.9659212827682495, "cells": [{"id": 21, "text": "3.2.2", "bbox": {"l": 64.800003, "t": 625.55472, "r": 94.20356, "b": 637.54272, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Built-in global variables", "bbox": {"l": 97.879005, "t": 625.55472, "r": 247.02536, "b": 637.54272, "coord_origin": "TOPLEFT"}}]}, "text": "3.2.2 Built-in global variables"}, {"label": "text", "id": 12, "page_no": 34, "cluster": {"id": 12, "label": "text", "bbox": {"l": 136.3346710205078, "t": 650.7590942382812, "r": 518.00116, "b": 672.92153, "coord_origin": "TOPLEFT"}, "confidence": 0.9696776866912842, "cells": [{"id": 23, "text": "Built-in global variables are provided with the database manager and are used in SQL ", "bbox": {"l": 136.8, "t": 651.70872, "r": 518.00116, "b": 660.92172, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "statements to retrieve scalar values that are associated with the variables.", "bbox": {"l": 136.8, "t": 663.70853, "r": 462.81759999999997, "b": 672.92153, "coord_origin": "TOPLEFT"}}]}, "text": "Built-in global variables are provided with the database manager and are used in SQL statements to retrieve scalar values that are associated with the variables."}, {"label": "text", "id": 13, "page_no": 34, "cluster": {"id": 13, "label": "text", "bbox": {"l": 136.17970275878906, "t": 684.6286010742188, "r": 532.3385, "b": 719.0675659179688, "coord_origin": "TOPLEFT"}, "confidence": 0.9783982038497925, "cells": [{"id": 25, "text": "IBM DB2 for i supports nine different built-in global variables that are read only and ", "bbox": {"l": 136.8, "t": 685.7281, "r": 504.44669, "b": 694.941101, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "maintained by the system. These global variables can be used to identify attributes of the ", "bbox": {"l": 136.8, "t": 697.727905, "r": 532.3385, "b": 706.94091, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "database connection and used as part of the RCAC logic.", "bbox": {"l": 136.8, "t": 709.727715, "r": 391.38257, "b": 718.94072, "coord_origin": "TOPLEFT"}}]}, "text": "IBM DB2 for i supports nine different built-in global variables that are read only and maintained by the system. These global variables can be used to identify attributes of the database connection and used as part of the RCAC logic."}, {"label": "table", "id": 14, "page_no": 34, "cluster": {"id": 14, "label": "table", "bbox": {"l": 134.54624938964844, "t": 103.41889190673828, "r": 542.0460815429688, "b": 204.2716064453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9731298685073853, "cells": [{"id": 28, "text": "Special register", "bbox": {"l": 142.8, "t": 110.53801999999985, "r": 209.67091, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Corresponding value", "bbox": {"l": 230.18912000000003, "t": 110.53801999999985, "r": 319.93527, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "USER or", "bbox": {"l": 142.80002, "t": 129.49834999999996, "r": 178.26361, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "SESSION_USER", "bbox": {"l": 142.80002, "t": 140.53864, "r": 212.70122, "b": 148.86359000000004, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "The effective user of the thread excluding adopted authority.", "bbox": {"l": 230.21973000000003, "t": 129.49834999999996, "r": 467.99069000000003, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "CURRENT_USER", "bbox": {"l": 142.80003, "t": 159.55835000000002, "r": 216.63962999999998, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "The effective user of the thread including adopted authority. When no adopted ", "bbox": {"l": 230.19814, "t": 159.55835000000002, "r": 535.65082, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "authority is present, this has the same value as USER.", "bbox": {"l": 230.22061, "t": 170.53832999999997, "r": 447.36533, "b": 178.86328000000003, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "SYSTEM_USER", "bbox": {"l": 142.8009, "t": 189.55804, "r": 209.7357, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "The authorization ID that initiated the connection.", "bbox": {"l": 230.2449, "t": 189.55804, "r": 425.64569, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl"], "num_rows": 4, "num_cols": 2, "table_cells": [{"bbox": {"l": 142.8, "t": 110.53801999999985, "r": 209.67091, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Special register", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 230.18912000000003, "t": 110.53801999999985, "r": 319.93527, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Corresponding value", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 142.80002, "t": 129.49834999999996, "r": 212.70122, "b": 148.86359000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USER or SESSION_USER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 230.21973000000003, "t": 129.49834999999996, "r": 467.99069000000003, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "The effective user of the thread excluding adopted authority.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.80003, "t": 159.55835000000002, "r": 216.63962999999998, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CURRENT_USER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 230.19814, "t": 159.55835000000002, "r": 535.65082, "b": 178.86328000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "The effective user of the thread including adopted authority. When no adopted authority is present, this has the same value as USER.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8009, "t": 189.55804, "r": 209.7357, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "SYSTEM_USER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 230.2449, "t": 189.55804, "r": 425.64569, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "The authorization ID that initiated the connection.", "column_header": false, "row_header": false, "row_section": false}]}, {"label": "picture", "id": 15, "page_no": 34, "cluster": {"id": 15, "label": "picture", "bbox": {"l": 135.64837646484375, "t": 384.1737060546875, "r": 301.2367248535156, "b": 594.7566528320312, "coord_origin": "TOPLEFT"}, "confidence": 0.7221464514732361, "cells": [{"id": 39, "text": "Signed on as ALICE", "bbox": {"l": 140.7323, "t": 386.98453, "r": 216.40009, "b": 395.49527, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "USER = ALICE", "bbox": {"l": 138.476, "t": 410.87441999999993, "r": 191.70256, "b": 419.38516, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "CURRENT USER = ALICE", "bbox": {"l": 138.476, "t": 422.81934, "r": 232.56117, "b": 431.33008, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CALL proc1", "bbox": {"l": 138.476, "t": 446.70923000000005, "r": 183.26944, "b": 455.21997, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "P1", "bbox": {"l": 148.4301, "t": 473.58524, "r": 184.17328, "b": 482.09598, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Proc1:", "bbox": {"l": 148.4301, "t": 473.58524, "r": 174.05859, "b": 482.09598, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Owner = JOE", "bbox": {"l": 157.52185, "t": 485.53015, "r": 209.103, "b": 494.04089, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "SET OPTION USRPRF=*OWNER", "bbox": {"l": 157.52185, "t": 497.47507, "r": 281.68927, "b": 505.98581, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "USER = ALICE", "bbox": {"l": 148.4301, "t": 521.36493, "r": 201.65666, "b": 529.87567, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "CURRENT USER = JOE", "bbox": {"l": 148.4301, "t": 533.30984, "r": 234.57686999999999, "b": 541.82059, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "USER = ALICE", "bbox": {"l": 138.476, "t": 566.15842, "r": 191.70256, "b": 574.66917, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "CURRENT USER = ALICE", "bbox": {"l": 138.476, "t": 578.10333, "r": 232.56117, "b": 586.61409, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 34, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.5751037597656, "t": 754.7044067382812, "r": 523.60162, "b": 764.0689086914062, "coord_origin": "TOPLEFT"}, "confidence": 0.9557498693466187, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 34, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 536.0416870117188, "t": 754.2877197265625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9130511283874512, "cells": [{"id": 1, "text": "19", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "19"}]}}, {"page_no": 35, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "20 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Table 3-2 lists the nine built-in global variables.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 342.54773, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Table 3-2 Built-in global variables", "bbox": {"l": 64.800003, "t": 93.49805000000003, "r": 201.18147, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "3.3", "bbox": {"l": 64.800003, "t": 322.20071, "r": 87.318192, "b": 336.96371000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "VERIFY_GROUP_FOR_USER function", "bbox": {"l": 91.821815, "t": 322.20071, "r": 384.36389, "b": 336.96371000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "The VERIFY_GROUP_FOR_USER function was added in IBM i 7.2. Although it is primarily ", "bbox": {"l": 136.8, "t": 354.52872, "r": 542.83539, "b": 363.7417, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "intended for use with RCAC permissions and masks, it can be used in other SQL statements. ", "bbox": {"l": 136.8, "t": 366.52853, "r": 547.14783, "b": 375.74152, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "The first parameter must be one of these three special registers: SESSION_USER, USER, or ", "bbox": {"l": 136.8, "t": 378.52835, "r": 547.15106, "b": 387.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CURRENT_USER. The second and subsequent parameters are a list of user or group ", "bbox": {"l": 136.80002, "t": 390.52817, "r": 520.62958, "b": 399.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "profiles. Each of these values must be 1 - 10 characters in length. These values are not ", "bbox": {"l": 136.80002, "t": 402.52798, "r": 524.88824, "b": 411.74097, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "validated for their existence, which means that you can specify the names of user profiles that ", "bbox": {"l": 136.80002, "t": 414.5278, "r": 547.23474, "b": 423.7407799999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "do not exist without receiving any kind of error.", "bbox": {"l": 136.80002, "t": 426.52762, "r": 342.04672, "b": 435.74060000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "If a special register value is in the list of user profiles or it is a member of a group profile ", "bbox": {"l": 136.80002, "t": 448.48743, "r": 525.1474, "b": 457.70041, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "included in the list, the function returns a long integer value of 1. Otherwise, it returns a value ", "bbox": {"l": 136.80002, "t": 460.48724, "r": 547.25739, "b": 469.70023, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "of 0. It never returns the null value.", "bbox": {"l": 136.80002, "t": 472.48706, "r": 289.84335, "b": 481.70004, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Here is an example of using the VERIFY_GROUP_FOR_USER function:", "bbox": {"l": 136.80002, "t": 494.50662, "r": 458.44525000000004, "b": 503.7196, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "1.", "bbox": {"l": 136.80002, "t": 511.5462, "r": 145.09804, "b": 520.75919, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "There are user profiles for MGR, JANE, JUDY, and TONY.", "bbox": {"l": 147.86403, "t": 511.5462, "r": 406.07751, "b": 520.75919, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "2.", "bbox": {"l": 136.80002, "t": 528.5260000000001, "r": 145.23297, "b": 537.739, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "The user profile JANE specifies a group profile of MGR.", "bbox": {"l": 148.04396, "t": 528.5260000000001, "r": 396.98816, "b": 537.739, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "3.", "bbox": {"l": 136.80002, "t": 545.50581, "r": 145.18951, "b": 554.71881, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "If a user is connected to the server using user profile JANE, all of the following function ", "bbox": {"l": 147.98601, "t": 545.50581, "r": 536.5686, "b": 554.71881, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "invocations return a value of 1:", "bbox": {"l": 151.20018, "t": 557.50562, "r": 286.84641, "b": 566.71861, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'MGR')", "bbox": {"l": 151.20018, "t": 574.69458, "r": 366.05725, "b": 583.46933, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR')", "bbox": {"l": 151.20018, "t": 586.69438, "r": 406.01678, "b": 595.46913, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR', 'STEVE')", "bbox": {"l": 151.20018, "t": 598.69418, "r": 451.01605, "b": 607.46893, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "The following function invocation returns a value of 0:", "bbox": {"l": 151.20018, "t": 615.5246, "r": 385.87271, "b": 624.73759, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JUDY', 'TONY')", "bbox": {"l": 151.20018, "t": 632.65381, "r": 411.05655, "b": 641.4285600000001, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Global variable", "bbox": {"l": 70.800003, "t": 110.53801999999985, "r": 134.99071, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Type", "bbox": {"l": 202.8894, "t": 110.53801999999985, "r": 223.34641, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Description", "bbox": {"l": 281.8248, "t": 110.53801999999985, "r": 331.3428, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CLIENT_HOST", "bbox": {"l": 70.800003, "t": 129.49834999999996, "r": 132.7209, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "VARCHAR(255)", "bbox": {"l": 202.89029, "t": 129.49834999999996, "r": 267.07651, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Host name of the current client as returned by the system", "bbox": {"l": 281.84732, "t": 129.49834999999996, "r": 510.17548, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "CLIENT_IPADDR", "bbox": {"l": 70.800018, "t": 148.51806999999997, "r": 140.66522, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "VARCHAR(128)", "bbox": {"l": 202.87231, "t": 148.51806999999997, "r": 267.07739, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "IP address of the current client as returned by the system", "bbox": {"l": 281.84549, "t": 148.51806999999997, "r": 509.60583, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "CLIENT_PORT ", "bbox": {"l": 70.800018, "t": 167.53778, "r": 134.98264, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "INTEGER", "bbox": {"l": 202.90294, "t": 167.53778, "r": 242.80084, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Port used by the current client to communicate with the server", "bbox": {"l": 281.79785, "t": 167.53778, "r": 527.59222, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "PACKAGE_NAME", "bbox": {"l": 70.800018, "t": 186.5575, "r": 143.50925, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "VARCHAR(128)", "bbox": {"l": 202.80576, "t": 186.5575, "r": 267.06937, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Name of the currently running package", "bbox": {"l": 281.85187, "t": 186.5575, "r": 436.57259999999997, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "PACKAGE_SCHEMA", "bbox": {"l": 70.800018, "t": 205.51782000000003, "r": 156.01654, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "VARCHAR(128)", "bbox": {"l": 202.83545, "t": 205.51782000000003, "r": 267.08646, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Schema name of the currently running package", "bbox": {"l": 281.87076, "t": 205.51782000000003, "r": 470.44678, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "PACKAGE_VERSION", "bbox": {"l": 70.800018, "t": 224.53754000000004, "r": 157.89932, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "VARCHAR(64)", "bbox": {"l": 202.72472, "t": 224.53754000000004, "r": 261.98254, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Version identifier of the currently running package", "bbox": {"l": 281.74924, "t": 224.53754000000004, "r": 478.8438100000001, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ROUTINE_SCHEMA", "bbox": {"l": 70.800018, "t": 243.55724999999995, "r": 154.41992, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "VARCHAR(128)", "bbox": {"l": 202.79312, "t": 243.55724999999995, "r": 267.09274, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Schema name of the currently running routine", "bbox": {"l": 281.87164, "t": 243.55724999999995, "r": 464.26022, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ROUTINE_SPECIFIC_NAME", "bbox": {"l": 70.800018, "t": 262.51757999999995, "r": 188.43991, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "VARCHAR(128)", "bbox": {"l": 202.84441, "t": 262.51757999999995, "r": 267.03693, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Name of the currently running routine", "bbox": {"l": 281.80682, "t": 262.51757999999995, "r": 430.40045, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "ROUTINE_TYPE", "bbox": {"l": 70.800034, "t": 281.53726, "r": 139.43135, "b": 289.86227, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "CHAR(1)", "bbox": {"l": 202.74635, "t": 281.53726, "r": 239.28996000000004, "b": 289.86227, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Type of the currently running routine", "bbox": {"l": 281.79065, "t": 281.53726, "r": 425.09131, "b": 289.86227, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.85088348388672, "t": 754.3745727539062, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9187920093536377, "cells": [{"id": 0, "text": "20 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.31550598144531, "t": 754.6971435546875, "r": 334.42142, "b": 763.9706420898438, "coord_origin": "TOPLEFT"}, "confidence": 0.9505078196525574, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.74647521972656, "t": 70.67481994628906, "r": 342.54773, "b": 80.84661102294922, "coord_origin": "TOPLEFT"}, "confidence": 0.8370974659919739, "cells": [{"id": 2, "text": "Table 3-2 lists the nine built-in global variables.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 342.54773, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.800003, "t": 92.83466339111328, "r": 201.82247924804688, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}, "confidence": 0.913235604763031, "cells": [{"id": 3, "text": "Table 3-2 Built-in global variables", "bbox": {"l": 64.800003, "t": 93.49805000000003, "r": 201.18147, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 64.34713745117188, "t": 320.619140625, "r": 384.36389, "b": 336.96371000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9645339846611023, "cells": [{"id": 4, "text": "3.3", "bbox": {"l": 64.800003, "t": 322.20071, "r": 87.318192, "b": 336.96371000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "VERIFY_GROUP_FOR_USER function", "bbox": {"l": 91.821815, "t": 322.20071, "r": 384.36389, "b": 336.96371000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.8567352294922, "t": 353.8623962402344, "r": 547.23474, "b": 436.295166015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9864333868026733, "cells": [{"id": 6, "text": "The VERIFY_GROUP_FOR_USER function was added in IBM i 7.2. Although it is primarily ", "bbox": {"l": 136.8, "t": 354.52872, "r": 542.83539, "b": 363.7417, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "intended for use with RCAC permissions and masks, it can be used in other SQL statements. ", "bbox": {"l": 136.8, "t": 366.52853, "r": 547.14783, "b": 375.74152, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "The first parameter must be one of these three special registers: SESSION_USER, USER, or ", "bbox": {"l": 136.8, "t": 378.52835, "r": 547.15106, "b": 387.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CURRENT_USER. The second and subsequent parameters are a list of user or group ", "bbox": {"l": 136.80002, "t": 390.52817, "r": 520.62958, "b": 399.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "profiles. Each of these values must be 1 - 10 characters in length. These values are not ", "bbox": {"l": 136.80002, "t": 402.52798, "r": 524.88824, "b": 411.74097, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "validated for their existence, which means that you can specify the names of user profiles that ", "bbox": {"l": 136.80002, "t": 414.5278, "r": 547.23474, "b": 423.7407799999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "do not exist without receiving any kind of error.", "bbox": {"l": 136.80002, "t": 426.52762, "r": 342.04672, "b": 435.74060000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 136.01950073242188, "t": 447.4029541015625, "r": 547.25739, "b": 481.70004, "coord_origin": "TOPLEFT"}, "confidence": 0.9807308912277222, "cells": [{"id": 13, "text": "If a special register value is in the list of user profiles or it is a member of a group profile ", "bbox": {"l": 136.80002, "t": 448.48743, "r": 525.1474, "b": 457.70041, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "included in the list, the function returns a long integer value of 1. Otherwise, it returns a value ", "bbox": {"l": 136.80002, "t": 460.48724, "r": 547.25739, "b": 469.70023, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "of 0. It never returns the null value.", "bbox": {"l": 136.80002, "t": 472.48706, "r": 289.84335, "b": 481.70004, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 136.42428588867188, "t": 493.1253662109375, "r": 458.44525000000004, "b": 503.7196, "coord_origin": "TOPLEFT"}, "confidence": 0.9237534403800964, "cells": [{"id": 16, "text": "Here is an example of using the VERIFY_GROUP_FOR_USER function:", "bbox": {"l": 136.80002, "t": 494.50662, "r": 458.44525000000004, "b": 503.7196, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 136.80002, "t": 510.5052795410156, "r": 406.07751, "b": 520.75919, "coord_origin": "TOPLEFT"}, "confidence": 0.9338629841804504, "cells": [{"id": 17, "text": "1.", "bbox": {"l": 136.80002, "t": 511.5462, "r": 145.09804, "b": 520.75919, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "There are user profiles for MGR, JANE, JUDY, and TONY.", "bbox": {"l": 147.86403, "t": 511.5462, "r": 406.07751, "b": 520.75919, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.8521728515625, "t": 527.8382568359375, "r": 396.98816, "b": 538.1942749023438, "coord_origin": "TOPLEFT"}, "confidence": 0.9514460563659668, "cells": [{"id": 19, "text": "2.", "bbox": {"l": 136.80002, "t": 528.5260000000001, "r": 145.23297, "b": 537.739, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "The user profile JANE specifies a group profile of MGR.", "bbox": {"l": 148.04396, "t": 528.5260000000001, "r": 396.98816, "b": 537.739, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 136.08595275878906, "t": 544.642333984375, "r": 536.5686, "b": 566.71861, "coord_origin": "TOPLEFT"}, "confidence": 0.951230525970459, "cells": [{"id": 21, "text": "3.", "bbox": {"l": 136.80002, "t": 545.50581, "r": 145.18951, "b": 554.71881, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "If a user is connected to the server using user profile JANE, all of the following function ", "bbox": {"l": 147.98601, "t": 545.50581, "r": 536.5686, "b": 554.71881, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "invocations return a value of 1:", "bbox": {"l": 151.20018, "t": 557.50562, "r": 286.84641, "b": 566.71861, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "code", "bbox": {"l": 149.8811798095703, "t": 574.31591796875, "r": 451.01605, "b": 641.9093627929688, "coord_origin": "TOPLEFT"}, "confidence": 0.7066468000411987, "cells": [{"id": 24, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'MGR')", "bbox": {"l": 151.20018, "t": 574.69458, "r": 366.05725, "b": 583.46933, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR')", "bbox": {"l": 151.20018, "t": 586.69438, "r": 406.01678, "b": 595.46913, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR', 'STEVE')", "bbox": {"l": 151.20018, "t": 598.69418, "r": 451.01605, "b": 607.46893, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "The following function invocation returns a value of 0:", "bbox": {"l": 151.20018, "t": 615.5246, "r": 385.87271, "b": 624.73759, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JUDY', 'TONY')", "bbox": {"l": 151.20018, "t": 632.65381, "r": 411.05655, "b": 641.4285600000001, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "table", "bbox": {"l": 63.556331634521484, "t": 104.23389434814453, "r": 548.5687255859375, "b": 296.2246398925781, "coord_origin": "TOPLEFT"}, "confidence": 0.9868634939193726, "cells": [{"id": 29, "text": "Global variable", "bbox": {"l": 70.800003, "t": 110.53801999999985, "r": 134.99071, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Type", "bbox": {"l": 202.8894, "t": 110.53801999999985, "r": 223.34641, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Description", "bbox": {"l": 281.8248, "t": 110.53801999999985, "r": 331.3428, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CLIENT_HOST", "bbox": {"l": 70.800003, "t": 129.49834999999996, "r": 132.7209, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "VARCHAR(255)", "bbox": {"l": 202.89029, "t": 129.49834999999996, "r": 267.07651, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Host name of the current client as returned by the system", "bbox": {"l": 281.84732, "t": 129.49834999999996, "r": 510.17548, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "CLIENT_IPADDR", "bbox": {"l": 70.800018, "t": 148.51806999999997, "r": 140.66522, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "VARCHAR(128)", "bbox": {"l": 202.87231, "t": 148.51806999999997, "r": 267.07739, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "IP address of the current client as returned by the system", "bbox": {"l": 281.84549, "t": 148.51806999999997, "r": 509.60583, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "CLIENT_PORT ", "bbox": {"l": 70.800018, "t": 167.53778, "r": 134.98264, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "INTEGER", "bbox": {"l": 202.90294, "t": 167.53778, "r": 242.80084, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Port used by the current client to communicate with the server", "bbox": {"l": 281.79785, "t": 167.53778, "r": 527.59222, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "PACKAGE_NAME", "bbox": {"l": 70.800018, "t": 186.5575, "r": 143.50925, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "VARCHAR(128)", "bbox": {"l": 202.80576, "t": 186.5575, "r": 267.06937, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Name of the currently running package", "bbox": {"l": 281.85187, "t": 186.5575, "r": 436.57259999999997, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "PACKAGE_SCHEMA", "bbox": {"l": 70.800018, "t": 205.51782000000003, "r": 156.01654, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "VARCHAR(128)", "bbox": {"l": 202.83545, "t": 205.51782000000003, "r": 267.08646, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Schema name of the currently running package", "bbox": {"l": 281.87076, "t": 205.51782000000003, "r": 470.44678, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "PACKAGE_VERSION", "bbox": {"l": 70.800018, "t": 224.53754000000004, "r": 157.89932, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "VARCHAR(64)", "bbox": {"l": 202.72472, "t": 224.53754000000004, "r": 261.98254, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Version identifier of the currently running package", "bbox": {"l": 281.74924, "t": 224.53754000000004, "r": 478.8438100000001, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ROUTINE_SCHEMA", "bbox": {"l": 70.800018, "t": 243.55724999999995, "r": 154.41992, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "VARCHAR(128)", "bbox": {"l": 202.79312, "t": 243.55724999999995, "r": 267.09274, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Schema name of the currently running routine", "bbox": {"l": 281.87164, "t": 243.55724999999995, "r": 464.26022, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ROUTINE_SPECIFIC_NAME", "bbox": {"l": 70.800018, "t": 262.51757999999995, "r": 188.43991, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "VARCHAR(128)", "bbox": {"l": 202.84441, "t": 262.51757999999995, "r": 267.03693, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Name of the currently running routine", "bbox": {"l": 281.80682, "t": 262.51757999999995, "r": 430.40045, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "ROUTINE_TYPE", "bbox": {"l": 70.800034, "t": 281.53726, "r": 139.43135, "b": 289.86227, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "CHAR(1)", "bbox": {"l": 202.74635, "t": 281.53726, "r": 239.28996000000004, "b": 289.86227, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Type of the currently running routine", "bbox": {"l": 281.79065, "t": 281.53726, "r": 425.09131, "b": 289.86227, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {"12": {"label": "table", "id": 12, "page_no": 35, "cluster": {"id": 12, "label": "table", "bbox": {"l": 63.556331634521484, "t": 104.23389434814453, "r": 548.5687255859375, "b": 296.2246398925781, "coord_origin": "TOPLEFT"}, "confidence": 0.9868634939193726, "cells": [{"id": 29, "text": "Global variable", "bbox": {"l": 70.800003, "t": 110.53801999999985, "r": 134.99071, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Type", "bbox": {"l": 202.8894, "t": 110.53801999999985, "r": 223.34641, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Description", "bbox": {"l": 281.8248, "t": 110.53801999999985, "r": 331.3428, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CLIENT_HOST", "bbox": {"l": 70.800003, "t": 129.49834999999996, "r": 132.7209, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "VARCHAR(255)", "bbox": {"l": 202.89029, "t": 129.49834999999996, "r": 267.07651, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Host name of the current client as returned by the system", "bbox": {"l": 281.84732, "t": 129.49834999999996, "r": 510.17548, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "CLIENT_IPADDR", "bbox": {"l": 70.800018, "t": 148.51806999999997, "r": 140.66522, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "VARCHAR(128)", "bbox": {"l": 202.87231, "t": 148.51806999999997, "r": 267.07739, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "IP address of the current client as returned by the system", "bbox": {"l": 281.84549, "t": 148.51806999999997, "r": 509.60583, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "CLIENT_PORT ", "bbox": {"l": 70.800018, "t": 167.53778, "r": 134.98264, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "INTEGER", "bbox": {"l": 202.90294, "t": 167.53778, "r": 242.80084, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Port used by the current client to communicate with the server", "bbox": {"l": 281.79785, "t": 167.53778, "r": 527.59222, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "PACKAGE_NAME", "bbox": {"l": 70.800018, "t": 186.5575, "r": 143.50925, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "VARCHAR(128)", "bbox": {"l": 202.80576, "t": 186.5575, "r": 267.06937, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Name of the currently running package", "bbox": {"l": 281.85187, "t": 186.5575, "r": 436.57259999999997, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "PACKAGE_SCHEMA", "bbox": {"l": 70.800018, "t": 205.51782000000003, "r": 156.01654, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "VARCHAR(128)", "bbox": {"l": 202.83545, "t": 205.51782000000003, "r": 267.08646, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Schema name of the currently running package", "bbox": {"l": 281.87076, "t": 205.51782000000003, "r": 470.44678, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "PACKAGE_VERSION", "bbox": {"l": 70.800018, "t": 224.53754000000004, "r": 157.89932, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "VARCHAR(64)", "bbox": {"l": 202.72472, "t": 224.53754000000004, "r": 261.98254, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Version identifier of the currently running package", "bbox": {"l": 281.74924, "t": 224.53754000000004, "r": 478.8438100000001, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ROUTINE_SCHEMA", "bbox": {"l": 70.800018, "t": 243.55724999999995, "r": 154.41992, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "VARCHAR(128)", "bbox": {"l": 202.79312, "t": 243.55724999999995, "r": 267.09274, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Schema name of the currently running routine", "bbox": {"l": 281.87164, "t": 243.55724999999995, "r": 464.26022, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ROUTINE_SPECIFIC_NAME", "bbox": {"l": 70.800018, "t": 262.51757999999995, "r": 188.43991, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "VARCHAR(128)", "bbox": {"l": 202.84441, "t": 262.51757999999995, "r": 267.03693, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Name of the currently running routine", "bbox": {"l": 281.80682, "t": 262.51757999999995, "r": 430.40045, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "ROUTINE_TYPE", "bbox": {"l": 70.800034, "t": 281.53726, "r": 139.43135, "b": 289.86227, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "CHAR(1)", "bbox": {"l": 202.74635, "t": 281.53726, "r": 239.28996000000004, "b": 289.86227, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Type of the currently running routine", "bbox": {"l": 281.79065, "t": 281.53726, "r": 425.09131, "b": 289.86227, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "ched", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl"], "num_rows": 10, "num_cols": 3, "table_cells": [{"bbox": {"l": 70.800003, "t": 110.53801999999985, "r": 134.99071, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Global variable", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 202.8894, "t": 110.53801999999985, "r": 223.34641, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Type", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 281.8248, "t": 110.53801999999985, "r": 331.3428, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Description", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800003, "t": 129.49834999999996, "r": 132.7209, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CLIENT_HOST", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.89029, "t": 129.49834999999996, "r": 267.07651, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(255)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.84732, "t": 129.49834999999996, "r": 510.17548, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Host name of the current client as returned by the system", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 148.51806999999997, "r": 140.66522, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CLIENT_IPADDR", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.87231, "t": 148.51806999999997, "r": 267.07739, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.84549, "t": 148.51806999999997, "r": 509.60583, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "IP address of the current client as returned by the system", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 167.53778, "r": 134.98264, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CLIENT_PORT", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.90294, "t": 167.53778, "r": 242.80084, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "INTEGER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.79785, "t": 167.53778, "r": 527.59222, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Port used by the current client to communicate with the server", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 186.5575, "r": 143.50925, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PACKAGE_NAME", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.80576, "t": 186.5575, "r": 267.06937, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.85187, "t": 186.5575, "r": 436.57259999999997, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Name of the currently running package", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 205.51782000000003, "r": 156.01654, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PACKAGE_SCHEMA", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.83545, "t": 205.51782000000003, "r": 267.08646, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.87076, "t": 205.51782000000003, "r": 470.44678, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Schema name of the currently running package", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 224.53754000000004, "r": 157.89932, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PACKAGE_VERSION", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.72472, "t": 224.53754000000004, "r": 261.98254, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(64)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.74924, "t": 224.53754000000004, "r": 478.8438100000001, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Version identifier of the currently running package", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 243.55724999999995, "r": 154.41992, "b": 251.8822, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ROUTINE_SCHEMA", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.79312, "t": 243.55724999999995, "r": 267.09274, "b": 251.8822, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.87164, "t": 243.55724999999995, "r": 464.26022, "b": 251.8822, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Schema name of the currently running routine", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 262.51757999999995, "r": 188.43991, "b": 270.84253, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ROUTINE_SPECIFIC_NAME", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.84441, "t": 262.51757999999995, "r": 267.03693, "b": 270.84253, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.80682, "t": 262.51757999999995, "r": 430.40045, "b": 270.84253, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Name of the currently running routine", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800034, "t": 281.53726, "r": 139.43135, "b": 289.86227, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ROUTINE_TYPE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.74635, "t": 281.53726, "r": 239.28996000000004, "b": 289.86227, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "CHAR(1)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.79065, "t": 281.53726, "r": 425.09131, "b": 289.86227, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Type of the currently running routine", "column_header": false, "row_header": false, "row_section": false}]}}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 35, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.85088348388672, "t": 754.3745727539062, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9187920093536377, "cells": [{"id": 0, "text": "20 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "20"}, {"label": "page_footer", "id": 1, "page_no": 35, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.31550598144531, "t": 754.6971435546875, "r": 334.42142, "b": 763.9706420898438, "coord_origin": "TOPLEFT"}, "confidence": 0.9505078196525574, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 2, "page_no": 35, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.74647521972656, "t": 70.67481994628906, "r": 342.54773, "b": 80.84661102294922, "coord_origin": "TOPLEFT"}, "confidence": 0.8370974659919739, "cells": [{"id": 2, "text": "Table 3-2 lists the nine built-in global variables.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 342.54773, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Table 3-2 lists the nine built-in global variables."}, {"label": "caption", "id": 3, "page_no": 35, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.800003, "t": 92.83466339111328, "r": 201.82247924804688, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}, "confidence": 0.913235604763031, "cells": [{"id": 3, "text": "Table 3-2 Built-in global variables", "bbox": {"l": 64.800003, "t": 93.49805000000003, "r": 201.18147, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}}]}, "text": "Table 3-2 Built-in global variables"}, {"label": "section_header", "id": 4, "page_no": 35, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.34713745117188, "t": 320.619140625, "r": 384.36389, "b": 336.96371000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9645339846611023, "cells": [{"id": 4, "text": "3.3", "bbox": {"l": 64.800003, "t": 322.20071, "r": 87.318192, "b": 336.96371000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "VERIFY_GROUP_FOR_USER function", "bbox": {"l": 91.821815, "t": 322.20071, "r": 384.36389, "b": 336.96371000000005, "coord_origin": "TOPLEFT"}}]}, "text": "3.3 VERIFY_GROUP_FOR_USER function"}, {"label": "text", "id": 5, "page_no": 35, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.8567352294922, "t": 353.8623962402344, "r": 547.23474, "b": 436.295166015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9864333868026733, "cells": [{"id": 6, "text": "The VERIFY_GROUP_FOR_USER function was added in IBM i 7.2. Although it is primarily ", "bbox": {"l": 136.8, "t": 354.52872, "r": 542.83539, "b": 363.7417, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "intended for use with RCAC permissions and masks, it can be used in other SQL statements. ", "bbox": {"l": 136.8, "t": 366.52853, "r": 547.14783, "b": 375.74152, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "The first parameter must be one of these three special registers: SESSION_USER, USER, or ", "bbox": {"l": 136.8, "t": 378.52835, "r": 547.15106, "b": 387.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CURRENT_USER. The second and subsequent parameters are a list of user or group ", "bbox": {"l": 136.80002, "t": 390.52817, "r": 520.62958, "b": 399.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "profiles. Each of these values must be 1 - 10 characters in length. These values are not ", "bbox": {"l": 136.80002, "t": 402.52798, "r": 524.88824, "b": 411.74097, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "validated for their existence, which means that you can specify the names of user profiles that ", "bbox": {"l": 136.80002, "t": 414.5278, "r": 547.23474, "b": 423.7407799999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "do not exist without receiving any kind of error.", "bbox": {"l": 136.80002, "t": 426.52762, "r": 342.04672, "b": 435.74060000000003, "coord_origin": "TOPLEFT"}}]}, "text": "The VERIFY_GROUP_FOR_USER function was added in IBM i 7.2. Although it is primarily intended for use with RCAC permissions and masks, it can be used in other SQL statements. The first parameter must be one of these three special registers: SESSION_USER, USER, or CURRENT_USER. The second and subsequent parameters are a list of user or group profiles. Each of these values must be 1 - 10 characters in length. These values are not validated for their existence, which means that you can specify the names of user profiles that do not exist without receiving any kind of error."}, {"label": "text", "id": 6, "page_no": 35, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.01950073242188, "t": 447.4029541015625, "r": 547.25739, "b": 481.70004, "coord_origin": "TOPLEFT"}, "confidence": 0.9807308912277222, "cells": [{"id": 13, "text": "If a special register value is in the list of user profiles or it is a member of a group profile ", "bbox": {"l": 136.80002, "t": 448.48743, "r": 525.1474, "b": 457.70041, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "included in the list, the function returns a long integer value of 1. Otherwise, it returns a value ", "bbox": {"l": 136.80002, "t": 460.48724, "r": 547.25739, "b": 469.70023, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "of 0. It never returns the null value.", "bbox": {"l": 136.80002, "t": 472.48706, "r": 289.84335, "b": 481.70004, "coord_origin": "TOPLEFT"}}]}, "text": "If a special register value is in the list of user profiles or it is a member of a group profile included in the list, the function returns a long integer value of 1. Otherwise, it returns a value of 0. It never returns the null value."}, {"label": "text", "id": 7, "page_no": 35, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.42428588867188, "t": 493.1253662109375, "r": 458.44525000000004, "b": 503.7196, "coord_origin": "TOPLEFT"}, "confidence": 0.9237534403800964, "cells": [{"id": 16, "text": "Here is an example of using the VERIFY_GROUP_FOR_USER function:", "bbox": {"l": 136.80002, "t": 494.50662, "r": 458.44525000000004, "b": 503.7196, "coord_origin": "TOPLEFT"}}]}, "text": "Here is an example of using the VERIFY_GROUP_FOR_USER function:"}, {"label": "list_item", "id": 8, "page_no": 35, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 136.80002, "t": 510.5052795410156, "r": 406.07751, "b": 520.75919, "coord_origin": "TOPLEFT"}, "confidence": 0.9338629841804504, "cells": [{"id": 17, "text": "1.", "bbox": {"l": 136.80002, "t": 511.5462, "r": 145.09804, "b": 520.75919, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "There are user profiles for MGR, JANE, JUDY, and TONY.", "bbox": {"l": 147.86403, "t": 511.5462, "r": 406.07751, "b": 520.75919, "coord_origin": "TOPLEFT"}}]}, "text": "1. There are user profiles for MGR, JANE, JUDY, and TONY."}, {"label": "list_item", "id": 9, "page_no": 35, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.8521728515625, "t": 527.8382568359375, "r": 396.98816, "b": 538.1942749023438, "coord_origin": "TOPLEFT"}, "confidence": 0.9514460563659668, "cells": [{"id": 19, "text": "2.", "bbox": {"l": 136.80002, "t": 528.5260000000001, "r": 145.23297, "b": 537.739, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "The user profile JANE specifies a group profile of MGR.", "bbox": {"l": 148.04396, "t": 528.5260000000001, "r": 396.98816, "b": 537.739, "coord_origin": "TOPLEFT"}}]}, "text": "2. The user profile JANE specifies a group profile of MGR."}, {"label": "list_item", "id": 10, "page_no": 35, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 136.08595275878906, "t": 544.642333984375, "r": 536.5686, "b": 566.71861, "coord_origin": "TOPLEFT"}, "confidence": 0.951230525970459, "cells": [{"id": 21, "text": "3.", "bbox": {"l": 136.80002, "t": 545.50581, "r": 145.18951, "b": 554.71881, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "If a user is connected to the server using user profile JANE, all of the following function ", "bbox": {"l": 147.98601, "t": 545.50581, "r": 536.5686, "b": 554.71881, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "invocations return a value of 1:", "bbox": {"l": 151.20018, "t": 557.50562, "r": 286.84641, "b": 566.71861, "coord_origin": "TOPLEFT"}}]}, "text": "3. If a user is connected to the server using user profile JANE, all of the following function invocations return a value of 1:"}, {"label": "code", "id": 11, "page_no": 35, "cluster": {"id": 11, "label": "code", "bbox": {"l": 149.8811798095703, "t": 574.31591796875, "r": 451.01605, "b": 641.9093627929688, "coord_origin": "TOPLEFT"}, "confidence": 0.7066468000411987, "cells": [{"id": 24, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'MGR')", "bbox": {"l": 151.20018, "t": 574.69458, "r": 366.05725, "b": 583.46933, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR')", "bbox": {"l": 151.20018, "t": 586.69438, "r": 406.01678, "b": 595.46913, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR', 'STEVE')", "bbox": {"l": 151.20018, "t": 598.69418, "r": 451.01605, "b": 607.46893, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "The following function invocation returns a value of 0:", "bbox": {"l": 151.20018, "t": 615.5246, "r": 385.87271, "b": 624.73759, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JUDY', 'TONY')", "bbox": {"l": 151.20018, "t": 632.65381, "r": 411.05655, "b": 641.4285600000001, "coord_origin": "TOPLEFT"}}]}, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'MGR') VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR') VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR', 'STEVE') The following function invocation returns a value of 0: VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JUDY', 'TONY')"}, {"label": "table", "id": 12, "page_no": 35, "cluster": {"id": 12, "label": "table", "bbox": {"l": 63.556331634521484, "t": 104.23389434814453, "r": 548.5687255859375, "b": 296.2246398925781, "coord_origin": "TOPLEFT"}, "confidence": 0.9868634939193726, "cells": [{"id": 29, "text": "Global variable", "bbox": {"l": 70.800003, "t": 110.53801999999985, "r": 134.99071, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Type", "bbox": {"l": 202.8894, "t": 110.53801999999985, "r": 223.34641, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Description", "bbox": {"l": 281.8248, "t": 110.53801999999985, "r": 331.3428, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CLIENT_HOST", "bbox": {"l": 70.800003, "t": 129.49834999999996, "r": 132.7209, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "VARCHAR(255)", "bbox": {"l": 202.89029, "t": 129.49834999999996, "r": 267.07651, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Host name of the current client as returned by the system", "bbox": {"l": 281.84732, "t": 129.49834999999996, "r": 510.17548, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "CLIENT_IPADDR", "bbox": {"l": 70.800018, "t": 148.51806999999997, "r": 140.66522, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "VARCHAR(128)", "bbox": {"l": 202.87231, "t": 148.51806999999997, "r": 267.07739, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "IP address of the current client as returned by the system", "bbox": {"l": 281.84549, "t": 148.51806999999997, "r": 509.60583, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "CLIENT_PORT ", "bbox": {"l": 70.800018, "t": 167.53778, "r": 134.98264, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "INTEGER", "bbox": {"l": 202.90294, "t": 167.53778, "r": 242.80084, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Port used by the current client to communicate with the server", "bbox": {"l": 281.79785, "t": 167.53778, "r": 527.59222, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "PACKAGE_NAME", "bbox": {"l": 70.800018, "t": 186.5575, "r": 143.50925, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "VARCHAR(128)", "bbox": {"l": 202.80576, "t": 186.5575, "r": 267.06937, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Name of the currently running package", "bbox": {"l": 281.85187, "t": 186.5575, "r": 436.57259999999997, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "PACKAGE_SCHEMA", "bbox": {"l": 70.800018, "t": 205.51782000000003, "r": 156.01654, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "VARCHAR(128)", "bbox": {"l": 202.83545, "t": 205.51782000000003, "r": 267.08646, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Schema name of the currently running package", "bbox": {"l": 281.87076, "t": 205.51782000000003, "r": 470.44678, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "PACKAGE_VERSION", "bbox": {"l": 70.800018, "t": 224.53754000000004, "r": 157.89932, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "VARCHAR(64)", "bbox": {"l": 202.72472, "t": 224.53754000000004, "r": 261.98254, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Version identifier of the currently running package", "bbox": {"l": 281.74924, "t": 224.53754000000004, "r": 478.8438100000001, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ROUTINE_SCHEMA", "bbox": {"l": 70.800018, "t": 243.55724999999995, "r": 154.41992, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "VARCHAR(128)", "bbox": {"l": 202.79312, "t": 243.55724999999995, "r": 267.09274, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Schema name of the currently running routine", "bbox": {"l": 281.87164, "t": 243.55724999999995, "r": 464.26022, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ROUTINE_SPECIFIC_NAME", "bbox": {"l": 70.800018, "t": 262.51757999999995, "r": 188.43991, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "VARCHAR(128)", "bbox": {"l": 202.84441, "t": 262.51757999999995, "r": 267.03693, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Name of the currently running routine", "bbox": {"l": 281.80682, "t": 262.51757999999995, "r": 430.40045, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "ROUTINE_TYPE", "bbox": {"l": 70.800034, "t": 281.53726, "r": 139.43135, "b": 289.86227, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "CHAR(1)", "bbox": {"l": 202.74635, "t": 281.53726, "r": 239.28996000000004, "b": 289.86227, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Type of the currently running routine", "bbox": {"l": 281.79065, "t": 281.53726, "r": 425.09131, "b": 289.86227, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "ched", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl"], "num_rows": 10, "num_cols": 3, "table_cells": [{"bbox": {"l": 70.800003, "t": 110.53801999999985, "r": 134.99071, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Global variable", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 202.8894, "t": 110.53801999999985, "r": 223.34641, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Type", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 281.8248, "t": 110.53801999999985, "r": 331.3428, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Description", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800003, "t": 129.49834999999996, "r": 132.7209, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CLIENT_HOST", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.89029, "t": 129.49834999999996, "r": 267.07651, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(255)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.84732, "t": 129.49834999999996, "r": 510.17548, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Host name of the current client as returned by the system", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 148.51806999999997, "r": 140.66522, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CLIENT_IPADDR", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.87231, "t": 148.51806999999997, "r": 267.07739, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.84549, "t": 148.51806999999997, "r": 509.60583, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "IP address of the current client as returned by the system", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 167.53778, "r": 134.98264, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CLIENT_PORT", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.90294, "t": 167.53778, "r": 242.80084, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "INTEGER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.79785, "t": 167.53778, "r": 527.59222, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Port used by the current client to communicate with the server", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 186.5575, "r": 143.50925, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PACKAGE_NAME", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.80576, "t": 186.5575, "r": 267.06937, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.85187, "t": 186.5575, "r": 436.57259999999997, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Name of the currently running package", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 205.51782000000003, "r": 156.01654, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PACKAGE_SCHEMA", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.83545, "t": 205.51782000000003, "r": 267.08646, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.87076, "t": 205.51782000000003, "r": 470.44678, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Schema name of the currently running package", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 224.53754000000004, "r": 157.89932, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PACKAGE_VERSION", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.72472, "t": 224.53754000000004, "r": 261.98254, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(64)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.74924, "t": 224.53754000000004, "r": 478.8438100000001, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Version identifier of the currently running package", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 243.55724999999995, "r": 154.41992, "b": 251.8822, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ROUTINE_SCHEMA", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.79312, "t": 243.55724999999995, "r": 267.09274, "b": 251.8822, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.87164, "t": 243.55724999999995, "r": 464.26022, "b": 251.8822, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Schema name of the currently running routine", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 262.51757999999995, "r": 188.43991, "b": 270.84253, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ROUTINE_SPECIFIC_NAME", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.84441, "t": 262.51757999999995, "r": 267.03693, "b": 270.84253, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.80682, "t": 262.51757999999995, "r": 430.40045, "b": 270.84253, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Name of the currently running routine", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800034, "t": 281.53726, "r": 139.43135, "b": 289.86227, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ROUTINE_TYPE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.74635, "t": 281.53726, "r": 239.28996000000004, "b": 289.86227, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "CHAR(1)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.79065, "t": 281.53726, "r": 425.09131, "b": 289.86227, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Type of the currently running routine", "column_header": false, "row_header": false, "row_section": false}]}], "body": [{"label": "text", "id": 2, "page_no": 35, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.74647521972656, "t": 70.67481994628906, "r": 342.54773, "b": 80.84661102294922, "coord_origin": "TOPLEFT"}, "confidence": 0.8370974659919739, "cells": [{"id": 2, "text": "Table 3-2 lists the nine built-in global variables.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 342.54773, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Table 3-2 lists the nine built-in global variables."}, {"label": "caption", "id": 3, "page_no": 35, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.800003, "t": 92.83466339111328, "r": 201.82247924804688, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}, "confidence": 0.913235604763031, "cells": [{"id": 3, "text": "Table 3-2 Built-in global variables", "bbox": {"l": 64.800003, "t": 93.49805000000003, "r": 201.18147, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}}]}, "text": "Table 3-2 Built-in global variables"}, {"label": "section_header", "id": 4, "page_no": 35, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.34713745117188, "t": 320.619140625, "r": 384.36389, "b": 336.96371000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9645339846611023, "cells": [{"id": 4, "text": "3.3", "bbox": {"l": 64.800003, "t": 322.20071, "r": 87.318192, "b": 336.96371000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "VERIFY_GROUP_FOR_USER function", "bbox": {"l": 91.821815, "t": 322.20071, "r": 384.36389, "b": 336.96371000000005, "coord_origin": "TOPLEFT"}}]}, "text": "3.3 VERIFY_GROUP_FOR_USER function"}, {"label": "text", "id": 5, "page_no": 35, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.8567352294922, "t": 353.8623962402344, "r": 547.23474, "b": 436.295166015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9864333868026733, "cells": [{"id": 6, "text": "The VERIFY_GROUP_FOR_USER function was added in IBM i 7.2. Although it is primarily ", "bbox": {"l": 136.8, "t": 354.52872, "r": 542.83539, "b": 363.7417, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "intended for use with RCAC permissions and masks, it can be used in other SQL statements. ", "bbox": {"l": 136.8, "t": 366.52853, "r": 547.14783, "b": 375.74152, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "The first parameter must be one of these three special registers: SESSION_USER, USER, or ", "bbox": {"l": 136.8, "t": 378.52835, "r": 547.15106, "b": 387.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CURRENT_USER. The second and subsequent parameters are a list of user or group ", "bbox": {"l": 136.80002, "t": 390.52817, "r": 520.62958, "b": 399.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "profiles. Each of these values must be 1 - 10 characters in length. These values are not ", "bbox": {"l": 136.80002, "t": 402.52798, "r": 524.88824, "b": 411.74097, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "validated for their existence, which means that you can specify the names of user profiles that ", "bbox": {"l": 136.80002, "t": 414.5278, "r": 547.23474, "b": 423.7407799999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "do not exist without receiving any kind of error.", "bbox": {"l": 136.80002, "t": 426.52762, "r": 342.04672, "b": 435.74060000000003, "coord_origin": "TOPLEFT"}}]}, "text": "The VERIFY_GROUP_FOR_USER function was added in IBM i 7.2. Although it is primarily intended for use with RCAC permissions and masks, it can be used in other SQL statements. The first parameter must be one of these three special registers: SESSION_USER, USER, or CURRENT_USER. The second and subsequent parameters are a list of user or group profiles. Each of these values must be 1 - 10 characters in length. These values are not validated for their existence, which means that you can specify the names of user profiles that do not exist without receiving any kind of error."}, {"label": "text", "id": 6, "page_no": 35, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.01950073242188, "t": 447.4029541015625, "r": 547.25739, "b": 481.70004, "coord_origin": "TOPLEFT"}, "confidence": 0.9807308912277222, "cells": [{"id": 13, "text": "If a special register value is in the list of user profiles or it is a member of a group profile ", "bbox": {"l": 136.80002, "t": 448.48743, "r": 525.1474, "b": 457.70041, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "included in the list, the function returns a long integer value of 1. Otherwise, it returns a value ", "bbox": {"l": 136.80002, "t": 460.48724, "r": 547.25739, "b": 469.70023, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "of 0. It never returns the null value.", "bbox": {"l": 136.80002, "t": 472.48706, "r": 289.84335, "b": 481.70004, "coord_origin": "TOPLEFT"}}]}, "text": "If a special register value is in the list of user profiles or it is a member of a group profile included in the list, the function returns a long integer value of 1. Otherwise, it returns a value of 0. It never returns the null value."}, {"label": "text", "id": 7, "page_no": 35, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.42428588867188, "t": 493.1253662109375, "r": 458.44525000000004, "b": 503.7196, "coord_origin": "TOPLEFT"}, "confidence": 0.9237534403800964, "cells": [{"id": 16, "text": "Here is an example of using the VERIFY_GROUP_FOR_USER function:", "bbox": {"l": 136.80002, "t": 494.50662, "r": 458.44525000000004, "b": 503.7196, "coord_origin": "TOPLEFT"}}]}, "text": "Here is an example of using the VERIFY_GROUP_FOR_USER function:"}, {"label": "list_item", "id": 8, "page_no": 35, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 136.80002, "t": 510.5052795410156, "r": 406.07751, "b": 520.75919, "coord_origin": "TOPLEFT"}, "confidence": 0.9338629841804504, "cells": [{"id": 17, "text": "1.", "bbox": {"l": 136.80002, "t": 511.5462, "r": 145.09804, "b": 520.75919, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "There are user profiles for MGR, JANE, JUDY, and TONY.", "bbox": {"l": 147.86403, "t": 511.5462, "r": 406.07751, "b": 520.75919, "coord_origin": "TOPLEFT"}}]}, "text": "1. There are user profiles for MGR, JANE, JUDY, and TONY."}, {"label": "list_item", "id": 9, "page_no": 35, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.8521728515625, "t": 527.8382568359375, "r": 396.98816, "b": 538.1942749023438, "coord_origin": "TOPLEFT"}, "confidence": 0.9514460563659668, "cells": [{"id": 19, "text": "2.", "bbox": {"l": 136.80002, "t": 528.5260000000001, "r": 145.23297, "b": 537.739, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "The user profile JANE specifies a group profile of MGR.", "bbox": {"l": 148.04396, "t": 528.5260000000001, "r": 396.98816, "b": 537.739, "coord_origin": "TOPLEFT"}}]}, "text": "2. The user profile JANE specifies a group profile of MGR."}, {"label": "list_item", "id": 10, "page_no": 35, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 136.08595275878906, "t": 544.642333984375, "r": 536.5686, "b": 566.71861, "coord_origin": "TOPLEFT"}, "confidence": 0.951230525970459, "cells": [{"id": 21, "text": "3.", "bbox": {"l": 136.80002, "t": 545.50581, "r": 145.18951, "b": 554.71881, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "If a user is connected to the server using user profile JANE, all of the following function ", "bbox": {"l": 147.98601, "t": 545.50581, "r": 536.5686, "b": 554.71881, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "invocations return a value of 1:", "bbox": {"l": 151.20018, "t": 557.50562, "r": 286.84641, "b": 566.71861, "coord_origin": "TOPLEFT"}}]}, "text": "3. If a user is connected to the server using user profile JANE, all of the following function invocations return a value of 1:"}, {"label": "code", "id": 11, "page_no": 35, "cluster": {"id": 11, "label": "code", "bbox": {"l": 149.8811798095703, "t": 574.31591796875, "r": 451.01605, "b": 641.9093627929688, "coord_origin": "TOPLEFT"}, "confidence": 0.7066468000411987, "cells": [{"id": 24, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'MGR')", "bbox": {"l": 151.20018, "t": 574.69458, "r": 366.05725, "b": 583.46933, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR')", "bbox": {"l": 151.20018, "t": 586.69438, "r": 406.01678, "b": 595.46913, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR', 'STEVE')", "bbox": {"l": 151.20018, "t": 598.69418, "r": 451.01605, "b": 607.46893, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "The following function invocation returns a value of 0:", "bbox": {"l": 151.20018, "t": 615.5246, "r": 385.87271, "b": 624.73759, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JUDY', 'TONY')", "bbox": {"l": 151.20018, "t": 632.65381, "r": 411.05655, "b": 641.4285600000001, "coord_origin": "TOPLEFT"}}]}, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'MGR') VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR') VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR', 'STEVE') The following function invocation returns a value of 0: VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JUDY', 'TONY')"}, {"label": "table", "id": 12, "page_no": 35, "cluster": {"id": 12, "label": "table", "bbox": {"l": 63.556331634521484, "t": 104.23389434814453, "r": 548.5687255859375, "b": 296.2246398925781, "coord_origin": "TOPLEFT"}, "confidence": 0.9868634939193726, "cells": [{"id": 29, "text": "Global variable", "bbox": {"l": 70.800003, "t": 110.53801999999985, "r": 134.99071, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Type", "bbox": {"l": 202.8894, "t": 110.53801999999985, "r": 223.34641, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Description", "bbox": {"l": 281.8248, "t": 110.53801999999985, "r": 331.3428, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CLIENT_HOST", "bbox": {"l": 70.800003, "t": 129.49834999999996, "r": 132.7209, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "VARCHAR(255)", "bbox": {"l": 202.89029, "t": 129.49834999999996, "r": 267.07651, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Host name of the current client as returned by the system", "bbox": {"l": 281.84732, "t": 129.49834999999996, "r": 510.17548, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "CLIENT_IPADDR", "bbox": {"l": 70.800018, "t": 148.51806999999997, "r": 140.66522, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "VARCHAR(128)", "bbox": {"l": 202.87231, "t": 148.51806999999997, "r": 267.07739, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "IP address of the current client as returned by the system", "bbox": {"l": 281.84549, "t": 148.51806999999997, "r": 509.60583, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "CLIENT_PORT ", "bbox": {"l": 70.800018, "t": 167.53778, "r": 134.98264, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "INTEGER", "bbox": {"l": 202.90294, "t": 167.53778, "r": 242.80084, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Port used by the current client to communicate with the server", "bbox": {"l": 281.79785, "t": 167.53778, "r": 527.59222, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "PACKAGE_NAME", "bbox": {"l": 70.800018, "t": 186.5575, "r": 143.50925, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "VARCHAR(128)", "bbox": {"l": 202.80576, "t": 186.5575, "r": 267.06937, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Name of the currently running package", "bbox": {"l": 281.85187, "t": 186.5575, "r": 436.57259999999997, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "PACKAGE_SCHEMA", "bbox": {"l": 70.800018, "t": 205.51782000000003, "r": 156.01654, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "VARCHAR(128)", "bbox": {"l": 202.83545, "t": 205.51782000000003, "r": 267.08646, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Schema name of the currently running package", "bbox": {"l": 281.87076, "t": 205.51782000000003, "r": 470.44678, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "PACKAGE_VERSION", "bbox": {"l": 70.800018, "t": 224.53754000000004, "r": 157.89932, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "VARCHAR(64)", "bbox": {"l": 202.72472, "t": 224.53754000000004, "r": 261.98254, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Version identifier of the currently running package", "bbox": {"l": 281.74924, "t": 224.53754000000004, "r": 478.8438100000001, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ROUTINE_SCHEMA", "bbox": {"l": 70.800018, "t": 243.55724999999995, "r": 154.41992, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "VARCHAR(128)", "bbox": {"l": 202.79312, "t": 243.55724999999995, "r": 267.09274, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Schema name of the currently running routine", "bbox": {"l": 281.87164, "t": 243.55724999999995, "r": 464.26022, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ROUTINE_SPECIFIC_NAME", "bbox": {"l": 70.800018, "t": 262.51757999999995, "r": 188.43991, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "VARCHAR(128)", "bbox": {"l": 202.84441, "t": 262.51757999999995, "r": 267.03693, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Name of the currently running routine", "bbox": {"l": 281.80682, "t": 262.51757999999995, "r": 430.40045, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "ROUTINE_TYPE", "bbox": {"l": 70.800034, "t": 281.53726, "r": 139.43135, "b": 289.86227, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "CHAR(1)", "bbox": {"l": 202.74635, "t": 281.53726, "r": 239.28996000000004, "b": 289.86227, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Type of the currently running routine", "bbox": {"l": 281.79065, "t": 281.53726, "r": 425.09131, "b": 289.86227, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "ched", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl"], "num_rows": 10, "num_cols": 3, "table_cells": [{"bbox": {"l": 70.800003, "t": 110.53801999999985, "r": 134.99071, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Global variable", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 202.8894, "t": 110.53801999999985, "r": 223.34641, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Type", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 281.8248, "t": 110.53801999999985, "r": 331.3428, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Description", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800003, "t": 129.49834999999996, "r": 132.7209, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CLIENT_HOST", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.89029, "t": 129.49834999999996, "r": 267.07651, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(255)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.84732, "t": 129.49834999999996, "r": 510.17548, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Host name of the current client as returned by the system", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 148.51806999999997, "r": 140.66522, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CLIENT_IPADDR", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.87231, "t": 148.51806999999997, "r": 267.07739, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.84549, "t": 148.51806999999997, "r": 509.60583, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "IP address of the current client as returned by the system", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 167.53778, "r": 134.98264, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CLIENT_PORT", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.90294, "t": 167.53778, "r": 242.80084, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "INTEGER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.79785, "t": 167.53778, "r": 527.59222, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Port used by the current client to communicate with the server", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 186.5575, "r": 143.50925, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PACKAGE_NAME", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.80576, "t": 186.5575, "r": 267.06937, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.85187, "t": 186.5575, "r": 436.57259999999997, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Name of the currently running package", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 205.51782000000003, "r": 156.01654, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PACKAGE_SCHEMA", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.83545, "t": 205.51782000000003, "r": 267.08646, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.87076, "t": 205.51782000000003, "r": 470.44678, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Schema name of the currently running package", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 224.53754000000004, "r": 157.89932, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PACKAGE_VERSION", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.72472, "t": 224.53754000000004, "r": 261.98254, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(64)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.74924, "t": 224.53754000000004, "r": 478.8438100000001, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Version identifier of the currently running package", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 243.55724999999995, "r": 154.41992, "b": 251.8822, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ROUTINE_SCHEMA", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.79312, "t": 243.55724999999995, "r": 267.09274, "b": 251.8822, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.87164, "t": 243.55724999999995, "r": 464.26022, "b": 251.8822, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Schema name of the currently running routine", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 262.51757999999995, "r": 188.43991, "b": 270.84253, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ROUTINE_SPECIFIC_NAME", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.84441, "t": 262.51757999999995, "r": 267.03693, "b": 270.84253, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.80682, "t": 262.51757999999995, "r": 430.40045, "b": 270.84253, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Name of the currently running routine", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800034, "t": 281.53726, "r": 139.43135, "b": 289.86227, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ROUTINE_TYPE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.74635, "t": 281.53726, "r": 239.28996000000004, "b": 289.86227, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "CHAR(1)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.79065, "t": 281.53726, "r": 425.09131, "b": 289.86227, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Type of the currently running routine", "column_header": false, "row_header": false, "row_section": false}]}], "headers": [{"label": "page_footer", "id": 0, "page_no": 35, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.85088348388672, "t": 754.3745727539062, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9187920093536377, "cells": [{"id": 0, "text": "20 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "20"}, {"label": "page_footer", "id": 1, "page_no": 35, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.31550598144531, "t": 754.6971435546875, "r": 334.42142, "b": 763.9706420898438, "coord_origin": "TOPLEFT"}, "confidence": 0.9505078196525574, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 36, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "21", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "3.4", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 87.21553, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Establishing and controlling accessibility by using the ", "bbox": {"l": 91.698616, "t": 71.22069999999997, "r": 512.90088, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "RCAC rule text", "bbox": {"l": 64.800003, "t": 90.18120999999985, "r": 176.72586, "b": 104.94421, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "When defining a row permission or column mask, the \u201cmagic\u201d of establishing and controlling ", "bbox": {"l": 136.8, "t": 122.50867000000005, "r": 544.90198, "b": 131.72168, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "accessibility comes from the ", "bbox": {"l": 136.8, "t": 134.50847999999996, "r": 264.56488, "b": 143.7215, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "rule text", "bbox": {"l": 264.54001, "t": 133.98492, "r": 300.83551, "b": 144.0426, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": ". The rule text represents the search criteria and logic ", "bbox": {"l": 300.84, "t": 134.50867000000005, "r": 539.85315, "b": 143.72168, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "that is implemented by the database engine.", "bbox": {"l": 136.79979, "t": 146.50847999999996, "r": 332.60843, "b": 155.7215, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "In the case of a row permission, the rule text is the \u201ctest\u201d of whether the user can access the ", "bbox": {"l": 136.79979, "t": 168.52808000000005, "r": 545.6568, "b": 177.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "row. If the test result is true, the row can be accessed. If the test result is false, the row ", "bbox": {"l": 136.79979, "t": 180.52788999999996, "r": 520.19312, "b": 189.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "essentially does not exist for the user. From a set-at-a-time perspective, the permission ", "bbox": {"l": 136.79979, "t": 192.52770999999996, "r": 522.82147, "b": 201.74072, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "defines which rows can be part of the query result set, and which rows cannot.", "bbox": {"l": 136.7998, "t": 204.52752999999996, "r": 483.42691, "b": 213.74054, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "In the case of a column mask, the rule text is both the test of whether the user can see the ", "bbox": {"l": 136.7998, "t": 226.4873, "r": 537.8551, "b": 235.70032000000003, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "actual column value, and it is the masking logic if the user cannot have access to actual ", "bbox": {"l": 136.7998, "t": 238.48712, "r": 525.43597, "b": 247.70012999999994, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "column value.", "bbox": {"l": 136.7998, "t": 250.48694, "r": 198.05679, "b": 259.69994999999994, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "For a simple example of implementing row permissions and column masks, see 3.6, \u201cHuman ", "bbox": {"l": 136.7998, "t": 272.50653, "r": 547.2691, "b": 281.71954, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "resources example\u201d on page 22.", "bbox": {"l": 136.7998, "t": 284.50638, "r": 279.77264, "b": 293.71936, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "In general, almost any set-based, relational logic is valid. For the row permission, the search ", "bbox": {"l": 136.7998, "t": 306.52594, "r": 545.94769, "b": 315.73892000000006, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "condition follows the same rules that are used by the search condition in a WHERE clause.", "bbox": {"l": 136.7998, "t": 318.52576, "r": 537.92279, "b": 327.73874, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "For the column mask, the logic follows the same rules as the CASE expression. The result ", "bbox": {"l": 136.7998, "t": 340.48556999999994, "r": 537.5434, "b": 349.69855, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "data type, length, null attribute, and CCSID of the CASE expression must be compatible with ", "bbox": {"l": 136.79979, "t": 352.48538, "r": 547.18268, "b": 361.69836000000004, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "the data type of the column. If the column does not allow the null value, the result of the CASE ", "bbox": {"l": 136.80081, "t": 364.4852, "r": 547.24945, "b": 373.69818, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "expression cannot be the NULL value. The application or interface making the data access ", "bbox": {"l": 136.80083, "t": 376.48502, "r": 539.22668, "b": 385.698, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "request is expecting that all of the column attributes and values are consistent with the ", "bbox": {"l": 136.80083, "t": 388.48483, "r": 520.22992, "b": 397.69780999999995, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "original definition, regardless of any masking.", "bbox": {"l": 136.80083, "t": 400.48465, "r": 336.8624, "b": 409.69763000000006, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "For more information about what is permitted, see the \u201cDatabase programming\u201d topic of the ", "bbox": {"l": 136.80083, "t": 422.50421000000006, "r": 542.04926, "b": 431.71719, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IBM i 7.2 Knowledge Center, found at:", "bbox": {"l": 136.80083, "t": 434.50403, "r": 304.71448, "b": 443.71701, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgdbp.htm?lang", "bbox": {"l": 136.80083, "t": 451.63321, "r": 546.53522, "b": 460.40799, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "=en", "bbox": {"l": 136.80083, "t": 463.63303, "r": 151.74083, "b": 472.40781, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "One of the first tasks in either the row permission or the column mask logic is to determine ", "bbox": {"l": 136.80083, "t": 485.5032, "r": 538.12109, "b": 494.71619, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "who the user is, and whether they have access to the data. Elegant methods to establish the ", "bbox": {"l": 136.80083, "t": 497.50302, "r": 546.96045, "b": 506.716, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "identity and attributes of the user can be employed by using the special registers, global ", "bbox": {"l": 136.80083, "t": 509.50284, "r": 526.4729, "b": 518.71582, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "variables, and the VERIFY function. After the user\u2019s identity is established, it is a simple ", "bbox": {"l": 136.80083, "t": 521.50266, "r": 525.20898, "b": 530.71564, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "matter of allowing or disallowing access by using true or false testing. The examples that are ", "bbox": {"l": 136.79984, "t": 533.50244, "r": 547.02722, "b": 542.71545, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "included in this paper demonstrate some of the more common and obvious techniques.", "bbox": {"l": 136.79984, "t": 545.50226, "r": 521.35547, "b": 554.71526, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "More sophisticated methods can employ existential, day of year / time of day, and relational ", "bbox": {"l": 136.79984, "t": 567.5218199999999, "r": 541.17859, "b": 576.73482, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "comparisons with set operations. For example, you can use a date master or date dimension ", "bbox": {"l": 136.79984, "t": 579.52162, "r": 547.37488, "b": 588.73462, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "table to determine whether the current date is a normal business day. If the current date is a ", "bbox": {"l": 136.79984, "t": 591.52142, "r": 544.3847, "b": 600.73442, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "valid business day, then access is allowed. If the current date is not a business day (for ", "bbox": {"l": 136.79984, "t": 603.52122, "r": 521.69189, "b": 612.73422, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "example a weekend day or holiday), access is denied. This test can be accomplished by ", "bbox": {"l": 136.79984, "t": 615.52103, "r": 528.19098, "b": 624.73402, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "performing a lookup using a subquery, such as the one that is shown in Example 3-1.", "bbox": {"l": 136.79984, "t": 627.5208299999999, "r": 512.61157, "b": 636.73383, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Example 3-1 Subquery that is used as part of the rule", "bbox": {"l": 136.8, "t": 649.5179, "r": 354.82498, "b": 657.84291, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "CURRENT_DATE IN (SELECT D.DATE_KEY", "bbox": {"l": 136.8, "t": 666.67812, "r": 316.67755, "b": 675.45288, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "FROM", "bbox": {"l": 177.39944, "t": 678.6779300000001, "r": 209.879, "b": 687.45269, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "DATE_MASTER D", "bbox": {"l": 226.11877, "t": 678.6779300000001, "r": 331.67731, "b": 687.45269, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "WHERE", "bbox": {"l": 172.38135, "t": 690.67774, "r": 207.96268, "b": 699.452499, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "D.BUSINESS_DAY = 'Y')", "bbox": {"l": 222.19522, "t": 690.67774, "r": 371.63684, "b": 699.452499, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 344.57867431640625, "t": 754.7420043945312, "r": 523.60162, "b": 764.0948486328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9520102739334106, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.7230834960938, "t": 754.28857421875, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9108889102935791, "cells": [{"id": 1, "text": "21", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.577880859375, "t": 70.0939712524414, "r": 512.90088, "b": 104.94421, "coord_origin": "TOPLEFT"}, "confidence": 0.9630382061004639, "cells": [{"id": 2, "text": "3.4", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 87.21553, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Establishing and controlling accessibility by using the ", "bbox": {"l": 91.698616, "t": 71.22069999999997, "r": 512.90088, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "RCAC rule text", "bbox": {"l": 64.800003, "t": 90.18120999999985, "r": 176.72586, "b": 104.94421, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.82391357421875, "t": 121.33588409423828, "r": 544.90198, "b": 155.7215, "coord_origin": "TOPLEFT"}, "confidence": 0.9855659604072571, "cells": [{"id": 5, "text": "When defining a row permission or column mask, the \u201cmagic\u201d of establishing and controlling ", "bbox": {"l": 136.8, "t": 122.50867000000005, "r": 544.90198, "b": 131.72168, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "accessibility comes from the ", "bbox": {"l": 136.8, "t": 134.50847999999996, "r": 264.56488, "b": 143.7215, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "rule text", "bbox": {"l": 264.54001, "t": 133.98492, "r": 300.83551, "b": 144.0426, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": ". The rule text represents the search criteria and logic ", "bbox": {"l": 300.84, "t": 134.50867000000005, "r": 539.85315, "b": 143.72168, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "that is implemented by the database engine.", "bbox": {"l": 136.79979, "t": 146.50847999999996, "r": 332.60843, "b": 155.7215, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.99398803710938, "t": 168.17491149902344, "r": 545.6568, "b": 214.0780029296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9861353635787964, "cells": [{"id": 10, "text": "In the case of a row permission, the rule text is the \u201ctest\u201d of whether the user can access the ", "bbox": {"l": 136.79979, "t": 168.52808000000005, "r": 545.6568, "b": 177.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "row. If the test result is true, the row can be accessed. If the test result is false, the row ", "bbox": {"l": 136.79979, "t": 180.52788999999996, "r": 520.19312, "b": 189.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "essentially does not exist for the user. From a set-at-a-time perspective, the permission ", "bbox": {"l": 136.79979, "t": 192.52770999999996, "r": 522.82147, "b": 201.74072, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "defines which rows can be part of the query result set, and which rows cannot.", "bbox": {"l": 136.7998, "t": 204.52752999999996, "r": 483.42691, "b": 213.74054, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.151123046875, "t": 225.48377990722656, "r": 537.8551, "b": 259.69994999999994, "coord_origin": "TOPLEFT"}, "confidence": 0.9822747707366943, "cells": [{"id": 14, "text": "In the case of a column mask, the rule text is both the test of whether the user can see the ", "bbox": {"l": 136.7998, "t": 226.4873, "r": 537.8551, "b": 235.70032000000003, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "actual column value, and it is the masking logic if the user cannot have access to actual ", "bbox": {"l": 136.7998, "t": 238.48712, "r": 525.43597, "b": 247.70012999999994, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "column value.", "bbox": {"l": 136.7998, "t": 250.48694, "r": 198.05679, "b": 259.69994999999994, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 136.31472778320312, "t": 271.4064636230469, "r": 547.2691, "b": 293.71936, "coord_origin": "TOPLEFT"}, "confidence": 0.9792705774307251, "cells": [{"id": 17, "text": "For a simple example of implementing row permissions and column masks, see 3.6, \u201cHuman ", "bbox": {"l": 136.7998, "t": 272.50653, "r": 547.2691, "b": 281.71954, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "resources example\u201d on page 22.", "bbox": {"l": 136.7998, "t": 284.50638, "r": 279.77264, "b": 293.71936, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 136.01747131347656, "t": 306.14697265625, "r": 545.94769, "b": 327.9010925292969, "coord_origin": "TOPLEFT"}, "confidence": 0.9774510264396667, "cells": [{"id": 19, "text": "In general, almost any set-based, relational logic is valid. For the row permission, the search ", "bbox": {"l": 136.7998, "t": 306.52594, "r": 545.94769, "b": 315.73892000000006, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "condition follows the same rules that are used by the search condition in a WHERE clause.", "bbox": {"l": 136.7998, "t": 318.52576, "r": 537.92279, "b": 327.73874, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 136.0785675048828, "t": 339.462646484375, "r": 547.24945, "b": 410.0204772949219, "coord_origin": "TOPLEFT"}, "confidence": 0.9882258176803589, "cells": [{"id": 21, "text": "For the column mask, the logic follows the same rules as the CASE expression. The result ", "bbox": {"l": 136.7998, "t": 340.48556999999994, "r": 537.5434, "b": 349.69855, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "data type, length, null attribute, and CCSID of the CASE expression must be compatible with ", "bbox": {"l": 136.79979, "t": 352.48538, "r": 547.18268, "b": 361.69836000000004, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "the data type of the column. If the column does not allow the null value, the result of the CASE ", "bbox": {"l": 136.80081, "t": 364.4852, "r": 547.24945, "b": 373.69818, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "expression cannot be the NULL value. The application or interface making the data access ", "bbox": {"l": 136.80083, "t": 376.48502, "r": 539.22668, "b": 385.698, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "request is expecting that all of the column attributes and values are consistent with the ", "bbox": {"l": 136.80083, "t": 388.48483, "r": 520.22992, "b": 397.69780999999995, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "original definition, regardless of any masking.", "bbox": {"l": 136.80083, "t": 400.48465, "r": 336.8624, "b": 409.69763000000006, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 136.35562133789062, "t": 421.3914794921875, "r": 542.04926, "b": 443.71701, "coord_origin": "TOPLEFT"}, "confidence": 0.9723648428916931, "cells": [{"id": 27, "text": "For more information about what is permitted, see the \u201cDatabase programming\u201d topic of the ", "bbox": {"l": 136.80083, "t": 422.50421000000006, "r": 542.04926, "b": 431.71719, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IBM i 7.2 Knowledge Center, found at:", "bbox": {"l": 136.80083, "t": 434.50403, "r": 304.71448, "b": 443.71701, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 136.1328582763672, "t": 450.9010009765625, "r": 546.53522, "b": 472.40781, "coord_origin": "TOPLEFT"}, "confidence": 0.9142380952835083, "cells": [{"id": 29, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgdbp.htm?lang", "bbox": {"l": 136.80083, "t": 451.63321, "r": 546.53522, "b": 460.40799, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "=en", "bbox": {"l": 136.80083, "t": 463.63303, "r": 151.74083, "b": 472.40781, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 135.92572021484375, "t": 484.72674560546875, "r": 547.02722, "b": 554.9171142578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9879254102706909, "cells": [{"id": 31, "text": "One of the first tasks in either the row permission or the column mask logic is to determine ", "bbox": {"l": 136.80083, "t": 485.5032, "r": 538.12109, "b": 494.71619, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "who the user is, and whether they have access to the data. Elegant methods to establish the ", "bbox": {"l": 136.80083, "t": 497.50302, "r": 546.96045, "b": 506.716, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "identity and attributes of the user can be employed by using the special registers, global ", "bbox": {"l": 136.80083, "t": 509.50284, "r": 526.4729, "b": 518.71582, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "variables, and the VERIFY function. After the user\u2019s identity is established, it is a simple ", "bbox": {"l": 136.80083, "t": 521.50266, "r": 525.20898, "b": 530.71564, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "matter of allowing or disallowing access by using true or false testing. The examples that are ", "bbox": {"l": 136.79984, "t": 533.50244, "r": 547.02722, "b": 542.71545, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "included in this paper demonstrate some of the more common and obvious techniques.", "bbox": {"l": 136.79984, "t": 545.50226, "r": 521.35547, "b": 554.71526, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 136.01707458496094, "t": 566.9345703125, "r": 547.37488, "b": 637.0723266601562, "coord_origin": "TOPLEFT"}, "confidence": 0.9875260591506958, "cells": [{"id": 37, "text": "More sophisticated methods can employ existential, day of year / time of day, and relational ", "bbox": {"l": 136.79984, "t": 567.5218199999999, "r": 541.17859, "b": 576.73482, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "comparisons with set operations. For example, you can use a date master or date dimension ", "bbox": {"l": 136.79984, "t": 579.52162, "r": 547.37488, "b": 588.73462, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "table to determine whether the current date is a normal business day. If the current date is a ", "bbox": {"l": 136.79984, "t": 591.52142, "r": 544.3847, "b": 600.73442, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "valid business day, then access is allowed. If the current date is not a business day (for ", "bbox": {"l": 136.79984, "t": 603.52122, "r": 521.69189, "b": 612.73422, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "example a weekend day or holiday), access is denied. This test can be accomplished by ", "bbox": {"l": 136.79984, "t": 615.52103, "r": 528.19098, "b": 624.73402, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "performing a lookup using a subquery, such as the one that is shown in Example 3-1.", "bbox": {"l": 136.79984, "t": 627.5208299999999, "r": 512.61157, "b": 636.73383, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "caption", "bbox": {"l": 136.3708953857422, "t": 648.479736328125, "r": 355.12689208984375, "b": 658.3316650390625, "coord_origin": "TOPLEFT"}, "confidence": 0.804072916507721, "cells": [{"id": 43, "text": "Example 3-1 Subquery that is used as part of the rule", "bbox": {"l": 136.8, "t": 649.5179, "r": 354.82498, "b": 657.84291, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "text", "bbox": {"l": 136.8, "t": 666.67812, "r": 316.67755, "b": 699.452499, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 44, "text": "CURRENT_DATE IN (SELECT D.DATE_KEY", "bbox": {"l": 136.8, "t": 666.67812, "r": 316.67755, "b": 675.45288, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "FROM", "bbox": {"l": 177.39944, "t": 678.6779300000001, "r": 209.879, "b": 687.45269, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "WHERE", "bbox": {"l": 172.38135, "t": 690.67774, "r": 207.96268, "b": 699.452499, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "text", "bbox": {"l": 226.11877, "t": 678.1546020507812, "r": 331.77557373046875, "b": 687.45269, "coord_origin": "TOPLEFT"}, "confidence": 0.6781665682792664, "cells": [{"id": 46, "text": "DATE_MASTER D", "bbox": {"l": 226.11877, "t": 678.6779300000001, "r": 331.67731, "b": 687.45269, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "text", "bbox": {"l": 222.19522, "t": 689.8526611328125, "r": 371.63684, "b": 700.1818237304688, "coord_origin": "TOPLEFT"}, "confidence": 0.7035561203956604, "cells": [{"id": 48, "text": "D.BUSINESS_DAY = 'Y')", "bbox": {"l": 222.19522, "t": 690.67774, "r": 371.63684, "b": 699.452499, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 36, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.57867431640625, "t": 754.7420043945312, "r": 523.60162, "b": 764.0948486328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9520102739334106, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 36, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.7230834960938, "t": 754.28857421875, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9108889102935791, "cells": [{"id": 1, "text": "21", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "21"}, {"label": "section_header", "id": 2, "page_no": 36, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.577880859375, "t": 70.0939712524414, "r": 512.90088, "b": 104.94421, "coord_origin": "TOPLEFT"}, "confidence": 0.9630382061004639, "cells": [{"id": 2, "text": "3.4", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 87.21553, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Establishing and controlling accessibility by using the ", "bbox": {"l": 91.698616, "t": 71.22069999999997, "r": 512.90088, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "RCAC rule text", "bbox": {"l": 64.800003, "t": 90.18120999999985, "r": 176.72586, "b": 104.94421, "coord_origin": "TOPLEFT"}}]}, "text": "3.4 Establishing and controlling accessibility by using the RCAC rule text"}, {"label": "text", "id": 3, "page_no": 36, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.82391357421875, "t": 121.33588409423828, "r": 544.90198, "b": 155.7215, "coord_origin": "TOPLEFT"}, "confidence": 0.9855659604072571, "cells": [{"id": 5, "text": "When defining a row permission or column mask, the \u201cmagic\u201d of establishing and controlling ", "bbox": {"l": 136.8, "t": 122.50867000000005, "r": 544.90198, "b": 131.72168, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "accessibility comes from the ", "bbox": {"l": 136.8, "t": 134.50847999999996, "r": 264.56488, "b": 143.7215, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "rule text", "bbox": {"l": 264.54001, "t": 133.98492, "r": 300.83551, "b": 144.0426, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": ". The rule text represents the search criteria and logic ", "bbox": {"l": 300.84, "t": 134.50867000000005, "r": 539.85315, "b": 143.72168, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "that is implemented by the database engine.", "bbox": {"l": 136.79979, "t": 146.50847999999996, "r": 332.60843, "b": 155.7215, "coord_origin": "TOPLEFT"}}]}, "text": "When defining a row permission or column mask, the \u201cmagic\u201d of establishing and controlling accessibility comes from the rule text . The rule text represents the search criteria and logic that is implemented by the database engine."}, {"label": "text", "id": 4, "page_no": 36, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.99398803710938, "t": 168.17491149902344, "r": 545.6568, "b": 214.0780029296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9861353635787964, "cells": [{"id": 10, "text": "In the case of a row permission, the rule text is the \u201ctest\u201d of whether the user can access the ", "bbox": {"l": 136.79979, "t": 168.52808000000005, "r": 545.6568, "b": 177.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "row. If the test result is true, the row can be accessed. If the test result is false, the row ", "bbox": {"l": 136.79979, "t": 180.52788999999996, "r": 520.19312, "b": 189.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "essentially does not exist for the user. From a set-at-a-time perspective, the permission ", "bbox": {"l": 136.79979, "t": 192.52770999999996, "r": 522.82147, "b": 201.74072, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "defines which rows can be part of the query result set, and which rows cannot.", "bbox": {"l": 136.7998, "t": 204.52752999999996, "r": 483.42691, "b": 213.74054, "coord_origin": "TOPLEFT"}}]}, "text": "In the case of a row permission, the rule text is the \u201ctest\u201d of whether the user can access the row. If the test result is true, the row can be accessed. If the test result is false, the row essentially does not exist for the user. From a set-at-a-time perspective, the permission defines which rows can be part of the query result set, and which rows cannot."}, {"label": "text", "id": 5, "page_no": 36, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.151123046875, "t": 225.48377990722656, "r": 537.8551, "b": 259.69994999999994, "coord_origin": "TOPLEFT"}, "confidence": 0.9822747707366943, "cells": [{"id": 14, "text": "In the case of a column mask, the rule text is both the test of whether the user can see the ", "bbox": {"l": 136.7998, "t": 226.4873, "r": 537.8551, "b": 235.70032000000003, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "actual column value, and it is the masking logic if the user cannot have access to actual ", "bbox": {"l": 136.7998, "t": 238.48712, "r": 525.43597, "b": 247.70012999999994, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "column value.", "bbox": {"l": 136.7998, "t": 250.48694, "r": 198.05679, "b": 259.69994999999994, "coord_origin": "TOPLEFT"}}]}, "text": "In the case of a column mask, the rule text is both the test of whether the user can see the actual column value, and it is the masking logic if the user cannot have access to actual column value."}, {"label": "text", "id": 6, "page_no": 36, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.31472778320312, "t": 271.4064636230469, "r": 547.2691, "b": 293.71936, "coord_origin": "TOPLEFT"}, "confidence": 0.9792705774307251, "cells": [{"id": 17, "text": "For a simple example of implementing row permissions and column masks, see 3.6, \u201cHuman ", "bbox": {"l": 136.7998, "t": 272.50653, "r": 547.2691, "b": 281.71954, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "resources example\u201d on page 22.", "bbox": {"l": 136.7998, "t": 284.50638, "r": 279.77264, "b": 293.71936, "coord_origin": "TOPLEFT"}}]}, "text": "For a simple example of implementing row permissions and column masks, see 3.6, \u201cHuman resources example\u201d on page 22."}, {"label": "text", "id": 7, "page_no": 36, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.01747131347656, "t": 306.14697265625, "r": 545.94769, "b": 327.9010925292969, "coord_origin": "TOPLEFT"}, "confidence": 0.9774510264396667, "cells": [{"id": 19, "text": "In general, almost any set-based, relational logic is valid. For the row permission, the search ", "bbox": {"l": 136.7998, "t": 306.52594, "r": 545.94769, "b": 315.73892000000006, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "condition follows the same rules that are used by the search condition in a WHERE clause.", "bbox": {"l": 136.7998, "t": 318.52576, "r": 537.92279, "b": 327.73874, "coord_origin": "TOPLEFT"}}]}, "text": "In general, almost any set-based, relational logic is valid. For the row permission, the search condition follows the same rules that are used by the search condition in a WHERE clause."}, {"label": "text", "id": 8, "page_no": 36, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.0785675048828, "t": 339.462646484375, "r": 547.24945, "b": 410.0204772949219, "coord_origin": "TOPLEFT"}, "confidence": 0.9882258176803589, "cells": [{"id": 21, "text": "For the column mask, the logic follows the same rules as the CASE expression. The result ", "bbox": {"l": 136.7998, "t": 340.48556999999994, "r": 537.5434, "b": 349.69855, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "data type, length, null attribute, and CCSID of the CASE expression must be compatible with ", "bbox": {"l": 136.79979, "t": 352.48538, "r": 547.18268, "b": 361.69836000000004, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "the data type of the column. If the column does not allow the null value, the result of the CASE ", "bbox": {"l": 136.80081, "t": 364.4852, "r": 547.24945, "b": 373.69818, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "expression cannot be the NULL value. The application or interface making the data access ", "bbox": {"l": 136.80083, "t": 376.48502, "r": 539.22668, "b": 385.698, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "request is expecting that all of the column attributes and values are consistent with the ", "bbox": {"l": 136.80083, "t": 388.48483, "r": 520.22992, "b": 397.69780999999995, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "original definition, regardless of any masking.", "bbox": {"l": 136.80083, "t": 400.48465, "r": 336.8624, "b": 409.69763000000006, "coord_origin": "TOPLEFT"}}]}, "text": "For the column mask, the logic follows the same rules as the CASE expression. The result data type, length, null attribute, and CCSID of the CASE expression must be compatible with the data type of the column. If the column does not allow the null value, the result of the CASE expression cannot be the NULL value. The application or interface making the data access request is expecting that all of the column attributes and values are consistent with the original definition, regardless of any masking."}, {"label": "text", "id": 9, "page_no": 36, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.35562133789062, "t": 421.3914794921875, "r": 542.04926, "b": 443.71701, "coord_origin": "TOPLEFT"}, "confidence": 0.9723648428916931, "cells": [{"id": 27, "text": "For more information about what is permitted, see the \u201cDatabase programming\u201d topic of the ", "bbox": {"l": 136.80083, "t": 422.50421000000006, "r": 542.04926, "b": 431.71719, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IBM i 7.2 Knowledge Center, found at:", "bbox": {"l": 136.80083, "t": 434.50403, "r": 304.71448, "b": 443.71701, "coord_origin": "TOPLEFT"}}]}, "text": "For more information about what is permitted, see the \u201cDatabase programming\u201d topic of the IBM i 7.2 Knowledge Center, found at:"}, {"label": "text", "id": 10, "page_no": 36, "cluster": {"id": 10, "label": "text", "bbox": {"l": 136.1328582763672, "t": 450.9010009765625, "r": 546.53522, "b": 472.40781, "coord_origin": "TOPLEFT"}, "confidence": 0.9142380952835083, "cells": [{"id": 29, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgdbp.htm?lang", "bbox": {"l": 136.80083, "t": 451.63321, "r": 546.53522, "b": 460.40799, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "=en", "bbox": {"l": 136.80083, "t": 463.63303, "r": 151.74083, "b": 472.40781, "coord_origin": "TOPLEFT"}}]}, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgdbp.htm?lang =en"}, {"label": "text", "id": 11, "page_no": 36, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.92572021484375, "t": 484.72674560546875, "r": 547.02722, "b": 554.9171142578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9879254102706909, "cells": [{"id": 31, "text": "One of the first tasks in either the row permission or the column mask logic is to determine ", "bbox": {"l": 136.80083, "t": 485.5032, "r": 538.12109, "b": 494.71619, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "who the user is, and whether they have access to the data. Elegant methods to establish the ", "bbox": {"l": 136.80083, "t": 497.50302, "r": 546.96045, "b": 506.716, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "identity and attributes of the user can be employed by using the special registers, global ", "bbox": {"l": 136.80083, "t": 509.50284, "r": 526.4729, "b": 518.71582, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "variables, and the VERIFY function. After the user\u2019s identity is established, it is a simple ", "bbox": {"l": 136.80083, "t": 521.50266, "r": 525.20898, "b": 530.71564, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "matter of allowing or disallowing access by using true or false testing. The examples that are ", "bbox": {"l": 136.79984, "t": 533.50244, "r": 547.02722, "b": 542.71545, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "included in this paper demonstrate some of the more common and obvious techniques.", "bbox": {"l": 136.79984, "t": 545.50226, "r": 521.35547, "b": 554.71526, "coord_origin": "TOPLEFT"}}]}, "text": "One of the first tasks in either the row permission or the column mask logic is to determine who the user is, and whether they have access to the data. Elegant methods to establish the identity and attributes of the user can be employed by using the special registers, global variables, and the VERIFY function. After the user\u2019s identity is established, it is a simple matter of allowing or disallowing access by using true or false testing. The examples that are included in this paper demonstrate some of the more common and obvious techniques."}, {"label": "text", "id": 12, "page_no": 36, "cluster": {"id": 12, "label": "text", "bbox": {"l": 136.01707458496094, "t": 566.9345703125, "r": 547.37488, "b": 637.0723266601562, "coord_origin": "TOPLEFT"}, "confidence": 0.9875260591506958, "cells": [{"id": 37, "text": "More sophisticated methods can employ existential, day of year / time of day, and relational ", "bbox": {"l": 136.79984, "t": 567.5218199999999, "r": 541.17859, "b": 576.73482, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "comparisons with set operations. For example, you can use a date master or date dimension ", "bbox": {"l": 136.79984, "t": 579.52162, "r": 547.37488, "b": 588.73462, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "table to determine whether the current date is a normal business day. If the current date is a ", "bbox": {"l": 136.79984, "t": 591.52142, "r": 544.3847, "b": 600.73442, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "valid business day, then access is allowed. If the current date is not a business day (for ", "bbox": {"l": 136.79984, "t": 603.52122, "r": 521.69189, "b": 612.73422, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "example a weekend day or holiday), access is denied. This test can be accomplished by ", "bbox": {"l": 136.79984, "t": 615.52103, "r": 528.19098, "b": 624.73402, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "performing a lookup using a subquery, such as the one that is shown in Example 3-1.", "bbox": {"l": 136.79984, "t": 627.5208299999999, "r": 512.61157, "b": 636.73383, "coord_origin": "TOPLEFT"}}]}, "text": "More sophisticated methods can employ existential, day of year / time of day, and relational comparisons with set operations. For example, you can use a date master or date dimension table to determine whether the current date is a normal business day. If the current date is a valid business day, then access is allowed. If the current date is not a business day (for example a weekend day or holiday), access is denied. This test can be accomplished by performing a lookup using a subquery, such as the one that is shown in Example 3-1."}, {"label": "caption", "id": 13, "page_no": 36, "cluster": {"id": 13, "label": "caption", "bbox": {"l": 136.3708953857422, "t": 648.479736328125, "r": 355.12689208984375, "b": 658.3316650390625, "coord_origin": "TOPLEFT"}, "confidence": 0.804072916507721, "cells": [{"id": 43, "text": "Example 3-1 Subquery that is used as part of the rule", "bbox": {"l": 136.8, "t": 649.5179, "r": 354.82498, "b": 657.84291, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-1 Subquery that is used as part of the rule"}, {"label": "text", "id": 14, "page_no": 36, "cluster": {"id": 14, "label": "text", "bbox": {"l": 136.8, "t": 666.67812, "r": 316.67755, "b": 699.452499, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 44, "text": "CURRENT_DATE IN (SELECT D.DATE_KEY", "bbox": {"l": 136.8, "t": 666.67812, "r": 316.67755, "b": 675.45288, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "FROM", "bbox": {"l": 177.39944, "t": 678.6779300000001, "r": 209.879, "b": 687.45269, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "WHERE", "bbox": {"l": 172.38135, "t": 690.67774, "r": 207.96268, "b": 699.452499, "coord_origin": "TOPLEFT"}}]}, "text": "CURRENT_DATE IN (SELECT D.DATE_KEY FROM WHERE"}, {"label": "text", "id": 15, "page_no": 36, "cluster": {"id": 15, "label": "text", "bbox": {"l": 226.11877, "t": 678.1546020507812, "r": 331.77557373046875, "b": 687.45269, "coord_origin": "TOPLEFT"}, "confidence": 0.6781665682792664, "cells": [{"id": 46, "text": "DATE_MASTER D", "bbox": {"l": 226.11877, "t": 678.6779300000001, "r": 331.67731, "b": 687.45269, "coord_origin": "TOPLEFT"}}]}, "text": "DATE_MASTER D"}, {"label": "text", "id": 16, "page_no": 36, "cluster": {"id": 16, "label": "text", "bbox": {"l": 222.19522, "t": 689.8526611328125, "r": 371.63684, "b": 700.1818237304688, "coord_origin": "TOPLEFT"}, "confidence": 0.7035561203956604, "cells": [{"id": 48, "text": "D.BUSINESS_DAY = 'Y')", "bbox": {"l": 222.19522, "t": 690.67774, "r": 371.63684, "b": 699.452499, "coord_origin": "TOPLEFT"}}]}, "text": "D.BUSINESS_DAY = 'Y')"}], "body": [{"label": "section_header", "id": 2, "page_no": 36, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.577880859375, "t": 70.0939712524414, "r": 512.90088, "b": 104.94421, "coord_origin": "TOPLEFT"}, "confidence": 0.9630382061004639, "cells": [{"id": 2, "text": "3.4", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 87.21553, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Establishing and controlling accessibility by using the ", "bbox": {"l": 91.698616, "t": 71.22069999999997, "r": 512.90088, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "RCAC rule text", "bbox": {"l": 64.800003, "t": 90.18120999999985, "r": 176.72586, "b": 104.94421, "coord_origin": "TOPLEFT"}}]}, "text": "3.4 Establishing and controlling accessibility by using the RCAC rule text"}, {"label": "text", "id": 3, "page_no": 36, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.82391357421875, "t": 121.33588409423828, "r": 544.90198, "b": 155.7215, "coord_origin": "TOPLEFT"}, "confidence": 0.9855659604072571, "cells": [{"id": 5, "text": "When defining a row permission or column mask, the \u201cmagic\u201d of establishing and controlling ", "bbox": {"l": 136.8, "t": 122.50867000000005, "r": 544.90198, "b": 131.72168, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "accessibility comes from the ", "bbox": {"l": 136.8, "t": 134.50847999999996, "r": 264.56488, "b": 143.7215, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "rule text", "bbox": {"l": 264.54001, "t": 133.98492, "r": 300.83551, "b": 144.0426, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": ". The rule text represents the search criteria and logic ", "bbox": {"l": 300.84, "t": 134.50867000000005, "r": 539.85315, "b": 143.72168, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "that is implemented by the database engine.", "bbox": {"l": 136.79979, "t": 146.50847999999996, "r": 332.60843, "b": 155.7215, "coord_origin": "TOPLEFT"}}]}, "text": "When defining a row permission or column mask, the \u201cmagic\u201d of establishing and controlling accessibility comes from the rule text . The rule text represents the search criteria and logic that is implemented by the database engine."}, {"label": "text", "id": 4, "page_no": 36, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.99398803710938, "t": 168.17491149902344, "r": 545.6568, "b": 214.0780029296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9861353635787964, "cells": [{"id": 10, "text": "In the case of a row permission, the rule text is the \u201ctest\u201d of whether the user can access the ", "bbox": {"l": 136.79979, "t": 168.52808000000005, "r": 545.6568, "b": 177.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "row. If the test result is true, the row can be accessed. If the test result is false, the row ", "bbox": {"l": 136.79979, "t": 180.52788999999996, "r": 520.19312, "b": 189.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "essentially does not exist for the user. From a set-at-a-time perspective, the permission ", "bbox": {"l": 136.79979, "t": 192.52770999999996, "r": 522.82147, "b": 201.74072, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "defines which rows can be part of the query result set, and which rows cannot.", "bbox": {"l": 136.7998, "t": 204.52752999999996, "r": 483.42691, "b": 213.74054, "coord_origin": "TOPLEFT"}}]}, "text": "In the case of a row permission, the rule text is the \u201ctest\u201d of whether the user can access the row. If the test result is true, the row can be accessed. If the test result is false, the row essentially does not exist for the user. From a set-at-a-time perspective, the permission defines which rows can be part of the query result set, and which rows cannot."}, {"label": "text", "id": 5, "page_no": 36, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.151123046875, "t": 225.48377990722656, "r": 537.8551, "b": 259.69994999999994, "coord_origin": "TOPLEFT"}, "confidence": 0.9822747707366943, "cells": [{"id": 14, "text": "In the case of a column mask, the rule text is both the test of whether the user can see the ", "bbox": {"l": 136.7998, "t": 226.4873, "r": 537.8551, "b": 235.70032000000003, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "actual column value, and it is the masking logic if the user cannot have access to actual ", "bbox": {"l": 136.7998, "t": 238.48712, "r": 525.43597, "b": 247.70012999999994, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "column value.", "bbox": {"l": 136.7998, "t": 250.48694, "r": 198.05679, "b": 259.69994999999994, "coord_origin": "TOPLEFT"}}]}, "text": "In the case of a column mask, the rule text is both the test of whether the user can see the actual column value, and it is the masking logic if the user cannot have access to actual column value."}, {"label": "text", "id": 6, "page_no": 36, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.31472778320312, "t": 271.4064636230469, "r": 547.2691, "b": 293.71936, "coord_origin": "TOPLEFT"}, "confidence": 0.9792705774307251, "cells": [{"id": 17, "text": "For a simple example of implementing row permissions and column masks, see 3.6, \u201cHuman ", "bbox": {"l": 136.7998, "t": 272.50653, "r": 547.2691, "b": 281.71954, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "resources example\u201d on page 22.", "bbox": {"l": 136.7998, "t": 284.50638, "r": 279.77264, "b": 293.71936, "coord_origin": "TOPLEFT"}}]}, "text": "For a simple example of implementing row permissions and column masks, see 3.6, \u201cHuman resources example\u201d on page 22."}, {"label": "text", "id": 7, "page_no": 36, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.01747131347656, "t": 306.14697265625, "r": 545.94769, "b": 327.9010925292969, "coord_origin": "TOPLEFT"}, "confidence": 0.9774510264396667, "cells": [{"id": 19, "text": "In general, almost any set-based, relational logic is valid. For the row permission, the search ", "bbox": {"l": 136.7998, "t": 306.52594, "r": 545.94769, "b": 315.73892000000006, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "condition follows the same rules that are used by the search condition in a WHERE clause.", "bbox": {"l": 136.7998, "t": 318.52576, "r": 537.92279, "b": 327.73874, "coord_origin": "TOPLEFT"}}]}, "text": "In general, almost any set-based, relational logic is valid. For the row permission, the search condition follows the same rules that are used by the search condition in a WHERE clause."}, {"label": "text", "id": 8, "page_no": 36, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.0785675048828, "t": 339.462646484375, "r": 547.24945, "b": 410.0204772949219, "coord_origin": "TOPLEFT"}, "confidence": 0.9882258176803589, "cells": [{"id": 21, "text": "For the column mask, the logic follows the same rules as the CASE expression. The result ", "bbox": {"l": 136.7998, "t": 340.48556999999994, "r": 537.5434, "b": 349.69855, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "data type, length, null attribute, and CCSID of the CASE expression must be compatible with ", "bbox": {"l": 136.79979, "t": 352.48538, "r": 547.18268, "b": 361.69836000000004, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "the data type of the column. If the column does not allow the null value, the result of the CASE ", "bbox": {"l": 136.80081, "t": 364.4852, "r": 547.24945, "b": 373.69818, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "expression cannot be the NULL value. The application or interface making the data access ", "bbox": {"l": 136.80083, "t": 376.48502, "r": 539.22668, "b": 385.698, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "request is expecting that all of the column attributes and values are consistent with the ", "bbox": {"l": 136.80083, "t": 388.48483, "r": 520.22992, "b": 397.69780999999995, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "original definition, regardless of any masking.", "bbox": {"l": 136.80083, "t": 400.48465, "r": 336.8624, "b": 409.69763000000006, "coord_origin": "TOPLEFT"}}]}, "text": "For the column mask, the logic follows the same rules as the CASE expression. The result data type, length, null attribute, and CCSID of the CASE expression must be compatible with the data type of the column. If the column does not allow the null value, the result of the CASE expression cannot be the NULL value. The application or interface making the data access request is expecting that all of the column attributes and values are consistent with the original definition, regardless of any masking."}, {"label": "text", "id": 9, "page_no": 36, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.35562133789062, "t": 421.3914794921875, "r": 542.04926, "b": 443.71701, "coord_origin": "TOPLEFT"}, "confidence": 0.9723648428916931, "cells": [{"id": 27, "text": "For more information about what is permitted, see the \u201cDatabase programming\u201d topic of the ", "bbox": {"l": 136.80083, "t": 422.50421000000006, "r": 542.04926, "b": 431.71719, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IBM i 7.2 Knowledge Center, found at:", "bbox": {"l": 136.80083, "t": 434.50403, "r": 304.71448, "b": 443.71701, "coord_origin": "TOPLEFT"}}]}, "text": "For more information about what is permitted, see the \u201cDatabase programming\u201d topic of the IBM i 7.2 Knowledge Center, found at:"}, {"label": "text", "id": 10, "page_no": 36, "cluster": {"id": 10, "label": "text", "bbox": {"l": 136.1328582763672, "t": 450.9010009765625, "r": 546.53522, "b": 472.40781, "coord_origin": "TOPLEFT"}, "confidence": 0.9142380952835083, "cells": [{"id": 29, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgdbp.htm?lang", "bbox": {"l": 136.80083, "t": 451.63321, "r": 546.53522, "b": 460.40799, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "=en", "bbox": {"l": 136.80083, "t": 463.63303, "r": 151.74083, "b": 472.40781, "coord_origin": "TOPLEFT"}}]}, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgdbp.htm?lang =en"}, {"label": "text", "id": 11, "page_no": 36, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.92572021484375, "t": 484.72674560546875, "r": 547.02722, "b": 554.9171142578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9879254102706909, "cells": [{"id": 31, "text": "One of the first tasks in either the row permission or the column mask logic is to determine ", "bbox": {"l": 136.80083, "t": 485.5032, "r": 538.12109, "b": 494.71619, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "who the user is, and whether they have access to the data. Elegant methods to establish the ", "bbox": {"l": 136.80083, "t": 497.50302, "r": 546.96045, "b": 506.716, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "identity and attributes of the user can be employed by using the special registers, global ", "bbox": {"l": 136.80083, "t": 509.50284, "r": 526.4729, "b": 518.71582, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "variables, and the VERIFY function. After the user\u2019s identity is established, it is a simple ", "bbox": {"l": 136.80083, "t": 521.50266, "r": 525.20898, "b": 530.71564, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "matter of allowing or disallowing access by using true or false testing. The examples that are ", "bbox": {"l": 136.79984, "t": 533.50244, "r": 547.02722, "b": 542.71545, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "included in this paper demonstrate some of the more common and obvious techniques.", "bbox": {"l": 136.79984, "t": 545.50226, "r": 521.35547, "b": 554.71526, "coord_origin": "TOPLEFT"}}]}, "text": "One of the first tasks in either the row permission or the column mask logic is to determine who the user is, and whether they have access to the data. Elegant methods to establish the identity and attributes of the user can be employed by using the special registers, global variables, and the VERIFY function. After the user\u2019s identity is established, it is a simple matter of allowing or disallowing access by using true or false testing. The examples that are included in this paper demonstrate some of the more common and obvious techniques."}, {"label": "text", "id": 12, "page_no": 36, "cluster": {"id": 12, "label": "text", "bbox": {"l": 136.01707458496094, "t": 566.9345703125, "r": 547.37488, "b": 637.0723266601562, "coord_origin": "TOPLEFT"}, "confidence": 0.9875260591506958, "cells": [{"id": 37, "text": "More sophisticated methods can employ existential, day of year / time of day, and relational ", "bbox": {"l": 136.79984, "t": 567.5218199999999, "r": 541.17859, "b": 576.73482, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "comparisons with set operations. For example, you can use a date master or date dimension ", "bbox": {"l": 136.79984, "t": 579.52162, "r": 547.37488, "b": 588.73462, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "table to determine whether the current date is a normal business day. If the current date is a ", "bbox": {"l": 136.79984, "t": 591.52142, "r": 544.3847, "b": 600.73442, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "valid business day, then access is allowed. If the current date is not a business day (for ", "bbox": {"l": 136.79984, "t": 603.52122, "r": 521.69189, "b": 612.73422, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "example a weekend day or holiday), access is denied. This test can be accomplished by ", "bbox": {"l": 136.79984, "t": 615.52103, "r": 528.19098, "b": 624.73402, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "performing a lookup using a subquery, such as the one that is shown in Example 3-1.", "bbox": {"l": 136.79984, "t": 627.5208299999999, "r": 512.61157, "b": 636.73383, "coord_origin": "TOPLEFT"}}]}, "text": "More sophisticated methods can employ existential, day of year / time of day, and relational comparisons with set operations. For example, you can use a date master or date dimension table to determine whether the current date is a normal business day. If the current date is a valid business day, then access is allowed. If the current date is not a business day (for example a weekend day or holiday), access is denied. This test can be accomplished by performing a lookup using a subquery, such as the one that is shown in Example 3-1."}, {"label": "caption", "id": 13, "page_no": 36, "cluster": {"id": 13, "label": "caption", "bbox": {"l": 136.3708953857422, "t": 648.479736328125, "r": 355.12689208984375, "b": 658.3316650390625, "coord_origin": "TOPLEFT"}, "confidence": 0.804072916507721, "cells": [{"id": 43, "text": "Example 3-1 Subquery that is used as part of the rule", "bbox": {"l": 136.8, "t": 649.5179, "r": 354.82498, "b": 657.84291, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-1 Subquery that is used as part of the rule"}, {"label": "text", "id": 14, "page_no": 36, "cluster": {"id": 14, "label": "text", "bbox": {"l": 136.8, "t": 666.67812, "r": 316.67755, "b": 699.452499, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 44, "text": "CURRENT_DATE IN (SELECT D.DATE_KEY", "bbox": {"l": 136.8, "t": 666.67812, "r": 316.67755, "b": 675.45288, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "FROM", "bbox": {"l": 177.39944, "t": 678.6779300000001, "r": 209.879, "b": 687.45269, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "WHERE", "bbox": {"l": 172.38135, "t": 690.67774, "r": 207.96268, "b": 699.452499, "coord_origin": "TOPLEFT"}}]}, "text": "CURRENT_DATE IN (SELECT D.DATE_KEY FROM WHERE"}, {"label": "text", "id": 15, "page_no": 36, "cluster": {"id": 15, "label": "text", "bbox": {"l": 226.11877, "t": 678.1546020507812, "r": 331.77557373046875, "b": 687.45269, "coord_origin": "TOPLEFT"}, "confidence": 0.6781665682792664, "cells": [{"id": 46, "text": "DATE_MASTER D", "bbox": {"l": 226.11877, "t": 678.6779300000001, "r": 331.67731, "b": 687.45269, "coord_origin": "TOPLEFT"}}]}, "text": "DATE_MASTER D"}, {"label": "text", "id": 16, "page_no": 36, "cluster": {"id": 16, "label": "text", "bbox": {"l": 222.19522, "t": 689.8526611328125, "r": 371.63684, "b": 700.1818237304688, "coord_origin": "TOPLEFT"}, "confidence": 0.7035561203956604, "cells": [{"id": 48, "text": "D.BUSINESS_DAY = 'Y')", "bbox": {"l": 222.19522, "t": 690.67774, "r": 371.63684, "b": 699.452499, "coord_origin": "TOPLEFT"}}]}, "text": "D.BUSINESS_DAY = 'Y')"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 36, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.57867431640625, "t": 754.7420043945312, "r": 523.60162, "b": 764.0948486328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9520102739334106, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 36, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.7230834960938, "t": 754.28857421875, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9108889102935791, "cells": [{"id": 1, "text": "21", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "21"}]}}, {"page_no": 37, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "22 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Given that joins and subqueries can be used to perform set-based operations against existing ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 547.29156, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "data that is housed in other objects, almost any relational test can be constructed. If the data ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 547.18164, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "in the objects is manipulated over time, the RCAC test logic (and user query results) can be ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 542.89301, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "changed without modifying the actual row permission or column mask. This includes moving ", "bbox": {"l": 136.8, "t": 107.50811999999996, "r": 546.20483, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "a user from one group to another or changing a column value that is used to allow or disallow ", "bbox": {"l": 136.8, "t": 119.50792999999999, "r": 547.21387, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "access. For example, if Saturday is now a valid business day, only the BUSINESS_DAY value ", "bbox": {"l": 136.8, "t": 131.50775, "r": 547.23071, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "in the DATE_MASTER must be updated, not the permission logic. This technique can ", "bbox": {"l": 136.79999, "t": 143.50757, "r": 516.55499, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "potentially avoid downtime because of the exclusive lock that is needed on the table when ", "bbox": {"l": 136.79999, "t": 155.50739, "r": 535.33044, "b": 164.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "adding or changing RCAC definitions.", "bbox": {"l": 136.79999, "t": 167.5072, "r": 302.98856, "b": 176.72020999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "3.5", "bbox": {"l": 64.800003, "t": 205.20068000000003, "r": 86.952782, "b": 219.96367999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "SELECT, INSERT, and UPDATE behavior with RCAC", "bbox": {"l": 91.383354, "t": 205.20068000000003, "r": 486.32437, "b": 219.96367999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "RCAC provides a database-centric approach to determining which rows can be accessed and ", "bbox": {"l": 136.8, "t": 237.52868999999998, "r": 547.2735, "b": 246.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "what column values can be seen by a specific user. Given that the control is handled by DB2 ", "bbox": {"l": 136.8, "t": 249.5285, "r": 547.29742, "b": 258.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "internally, every data manipulation statement is under the influence of RCAC, with no ", "bbox": {"l": 136.8, "t": 261.52832, "r": 513.53516, "b": 270.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "exceptions. When accessing the table, the ", "bbox": {"l": 136.8, "t": 273.52814, "r": 325.96036, "b": 282.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "SELECT", "bbox": {"l": 325.98022, "t": 273.67755, "r": 355.97977, "b": 282.50214000000005, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": " statements, searched ", "bbox": {"l": 355.97974, "t": 273.52814, "r": 456.93231, "b": 282.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "UPDATE", "bbox": {"l": 456.96020999999996, "t": 273.67755, "r": 486.89996, "b": 282.50214000000005, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": " statements, ", "bbox": {"l": 486.89996, "t": 273.52814, "r": 544.01459, "b": 282.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "and searched ", "bbox": {"l": 136.79999, "t": 285.52798, "r": 200.11673, "b": 294.74097, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "DELETE", "bbox": {"l": 200.15953, "t": 285.67736999999994, "r": 230.15904000000003, "b": 294.50195, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": " statements implicitly and transparently contain the row permission and ", "bbox": {"l": 230.09929, "t": 285.52798, "r": 546.29034, "b": 294.74097, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "the column mask rule text. This means that the data set can be logically restricted and ", "bbox": {"l": 136.79898, "t": 297.5278, "r": 519.62463, "b": 306.7407799999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "reduced on a user by user basis.", "bbox": {"l": 136.79898, "t": 309.52762, "r": 281.48892, "b": 318.74060000000003, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Furthermore, DB2 prevents an ", "bbox": {"l": 136.79898, "t": 331.48743, "r": 273.8327, "b": 340.70041, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "INSERT", "bbox": {"l": 273.77887, "t": 331.63681, "r": 303.77838, "b": 340.46139999999997, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": " statement from inserting a row or an ", "bbox": {"l": 303.77838, "t": 331.48743, "r": 468.12946, "b": 340.70041, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "UPDATE", "bbox": {"l": 468.11838, "t": 331.63681, "r": 498.11792, "b": 340.46139999999997, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": " statement ", "bbox": {"l": 498.11789, "t": 331.48743, "r": 547.19586, "b": 340.70041, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "from modifying a row such that the current user cannot be permitted to access it. You cannot ", "bbox": {"l": 136.79797, "t": 343.48724, "r": 547.10968, "b": 352.70023, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "create a situation in which the data you inserted or changed is no longer accessible to you.", "bbox": {"l": 136.79797, "t": 355.48706, "r": 537.22864, "b": 364.70004, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "For more information and considerations about data movement in an RCAC environment, see ", "bbox": {"l": 136.79797, "t": 377.50661999999994, "r": 547.26068, "b": 386.7196, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Chapter 6, \u201cAdditional considerations\u201d on page 85.", "bbox": {"l": 136.79797, "t": 389.50644000000005, "r": 359.45187, "b": 398.71942, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "3.6", "bbox": {"l": 64.800003, "t": 484.20062, "r": 87.400505, "b": 498.96362, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Human resources example", "bbox": {"l": 91.920601, "t": 484.20062, "r": 298.85339, "b": 498.96362, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "This section illustrates with a simple example the usage of RCAC on a typical Human ", "bbox": {"l": 136.8, "t": 516.52863, "r": 515.45135, "b": 525.74161, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Resources application (schema). In this sample Human Resources schema, there is an ", "bbox": {"l": 136.79999, "t": 528.52844, "r": 525.09943, "b": 537.74144, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "important table that is called EMPLOYEES that contains all the information that is related to ", "bbox": {"l": 136.79999, "t": 540.52824, "r": 542.82935, "b": 549.7412400000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "the employees of the company. Among the information that normally is stored in the ", "bbox": {"l": 136.79996, "t": 552.52805, "r": 508.23926, "b": 561.74104, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "EMPLOYEES table, there is some sensitive information that must be hidden from certain ", "bbox": {"l": 136.79996, "t": 564.52785, "r": 530.18805, "b": 573.7408399999999, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "users:", "bbox": {"l": 136.79996, "t": 576.52765, "r": 163.97581, "b": 585.74065, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "GLYPH", "bbox": {"l": 136.79996, "t": 593.65686, "r": 141.77995, "b": 602.43161, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Tax_Id information ", "bbox": {"l": 151.20012, "t": 593.50746, "r": 235.38602, "b": 602.72046, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "GLYPH", "bbox": {"l": 136.79996, "t": 605.65666, "r": 141.77995, "b": 614.43141, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "YEAR of the birth date of the employee (hiding the age of the employee)", "bbox": {"l": 151.20012, "t": 605.50726, "r": 470.03765999999996, "b": 614.72026, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "In this example, there are four different types of users:", "bbox": {"l": 136.79994, "t": 627.52682, "r": 375.29803, "b": 636.73982, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "GLYPH", "bbox": {"l": 136.79994, "t": 644.65604, "r": 141.77994, "b": 653.43079, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Employees", "bbox": {"l": 151.2001, "t": 644.5066400000001, "r": 200.11467, "b": 653.71964, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "GLYPH", "bbox": {"l": 136.79994, "t": 656.65584, "r": 141.77994, "b": 665.4306, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Managers", "bbox": {"l": 151.2001, "t": 656.50644, "r": 195.63866, "b": 665.71944, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "GLYPH", "bbox": {"l": 136.79994, "t": 668.65565, "r": 141.77994, "b": 677.4304, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "Human Resources Manager", "bbox": {"l": 151.2001, "t": 668.50624, "r": 276.16125, "b": 677.71925, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "GLYPH", "bbox": {"l": 136.79994, "t": 680.65546, "r": 141.77994, "b": 689.43021, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Consultant/IT Database Engineer (In this example, this person is an external consultant ", "bbox": {"l": 151.2001, "t": 680.50605, "r": 539.58447, "b": 689.71906, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "that is not an employee of the company.)", "bbox": {"l": 151.2001, "t": 692.505859, "r": 330.16245, "b": 701.7188639999999, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "The following sections describe step-by-step what is needed to be done to implement RCAC ", "bbox": {"l": 136.79994, "t": 714.525429, "r": 546.52435, "b": 723.738434, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "in this environment.", "bbox": {"l": 136.79994, "t": 726.525238, "r": 223.17204000000004, "b": 735.738243, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "Note:", "bbox": {"l": 142.8, "t": 417.52872, "r": 168.33246, "b": 426.7417, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": " DB2 does not provide any indication back to the user that the data set requested ", "bbox": {"l": 168.36035, "t": 417.52872, "r": 529.13947, "b": 426.7417, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "was restricted or reduced by RCAC. This is by design, as it helps minimize any changes to ", "bbox": {"l": 142.8, "t": 429.52853, "r": 541.21985, "b": 438.74152, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "the applications accessing the data.", "bbox": {"l": 142.8, "t": 441.52835, "r": 301.22571, "b": 450.74132999999995, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.83726119995117, "t": 754.3733520507812, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9199120402336121, "cells": [{"id": 0, "text": "22 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.2356185913086, "t": 754.7048950195312, "r": 334.42142, "b": 763.8771362304688, "coord_origin": "TOPLEFT"}, "confidence": 0.9534041881561279, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.83892822265625, "t": 70.66429138183594, "r": 547.29156, "b": 176.9203643798828, "coord_origin": "TOPLEFT"}, "confidence": 0.9871932864189148, "cells": [{"id": 2, "text": "Given that joins and subqueries can be used to perform set-based operations against existing ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 547.29156, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "data that is housed in other objects, almost any relational test can be constructed. If the data ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 547.18164, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "in the objects is manipulated over time, the RCAC test logic (and user query results) can be ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 542.89301, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "changed without modifying the actual row permission or column mask. This includes moving ", "bbox": {"l": 136.8, "t": 107.50811999999996, "r": 546.20483, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "a user from one group to another or changing a column value that is used to allow or disallow ", "bbox": {"l": 136.8, "t": 119.50792999999999, "r": 547.21387, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "access. For example, if Saturday is now a valid business day, only the BUSINESS_DAY value ", "bbox": {"l": 136.8, "t": 131.50775, "r": 547.23071, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "in the DATE_MASTER must be updated, not the permission logic. This technique can ", "bbox": {"l": 136.79999, "t": 143.50757, "r": 516.55499, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "potentially avoid downtime because of the exclusive lock that is needed on the table when ", "bbox": {"l": 136.79999, "t": 155.50739, "r": 535.33044, "b": 164.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "adding or changing RCAC definitions.", "bbox": {"l": 136.79999, "t": 167.5072, "r": 302.98856, "b": 176.72020999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "section_header", "bbox": {"l": 64.40492248535156, "t": 203.78817749023438, "r": 486.32437, "b": 219.96367999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9655107259750366, "cells": [{"id": 11, "text": "3.5", "bbox": {"l": 64.800003, "t": 205.20068000000003, "r": 86.952782, "b": 219.96367999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "SELECT, INSERT, and UPDATE behavior with RCAC", "bbox": {"l": 91.383354, "t": 205.20068000000003, "r": 486.32437, "b": 219.96367999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.95579528808594, "t": 236.6680450439453, "r": 547.29742, "b": 318.8705749511719, "coord_origin": "TOPLEFT"}, "confidence": 0.9883361458778381, "cells": [{"id": 13, "text": "RCAC provides a database-centric approach to determining which rows can be accessed and ", "bbox": {"l": 136.8, "t": 237.52868999999998, "r": 547.2735, "b": 246.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "what column values can be seen by a specific user. Given that the control is handled by DB2 ", "bbox": {"l": 136.8, "t": 249.5285, "r": 547.29742, "b": 258.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "internally, every data manipulation statement is under the influence of RCAC, with no ", "bbox": {"l": 136.8, "t": 261.52832, "r": 513.53516, "b": 270.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "exceptions. When accessing the table, the ", "bbox": {"l": 136.8, "t": 273.52814, "r": 325.96036, "b": 282.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "SELECT", "bbox": {"l": 325.98022, "t": 273.67755, "r": 355.97977, "b": 282.50214000000005, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": " statements, searched ", "bbox": {"l": 355.97974, "t": 273.52814, "r": 456.93231, "b": 282.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "UPDATE", "bbox": {"l": 456.96020999999996, "t": 273.67755, "r": 486.89996, "b": 282.50214000000005, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": " statements, ", "bbox": {"l": 486.89996, "t": 273.52814, "r": 544.01459, "b": 282.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "and searched ", "bbox": {"l": 136.79999, "t": 285.52798, "r": 200.11673, "b": 294.74097, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "DELETE", "bbox": {"l": 200.15953, "t": 285.67736999999994, "r": 230.15904000000003, "b": 294.50195, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": " statements implicitly and transparently contain the row permission and ", "bbox": {"l": 230.09929, "t": 285.52798, "r": 546.29034, "b": 294.74097, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "the column mask rule text. This means that the data set can be logically restricted and ", "bbox": {"l": 136.79898, "t": 297.5278, "r": 519.62463, "b": 306.7407799999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "reduced on a user by user basis.", "bbox": {"l": 136.79898, "t": 309.52762, "r": 281.48892, "b": 318.74060000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.07569885253906, "t": 330.7037658691406, "r": 547.19586, "b": 365.0055236816406, "coord_origin": "TOPLEFT"}, "confidence": 0.9833049774169922, "cells": [{"id": 26, "text": "Furthermore, DB2 prevents an ", "bbox": {"l": 136.79898, "t": 331.48743, "r": 273.8327, "b": 340.70041, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "INSERT", "bbox": {"l": 273.77887, "t": 331.63681, "r": 303.77838, "b": 340.46139999999997, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": " statement from inserting a row or an ", "bbox": {"l": 303.77838, "t": 331.48743, "r": 468.12946, "b": 340.70041, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "UPDATE", "bbox": {"l": 468.11838, "t": 331.63681, "r": 498.11792, "b": 340.46139999999997, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": " statement ", "bbox": {"l": 498.11789, "t": 331.48743, "r": 547.19586, "b": 340.70041, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "from modifying a row such that the current user cannot be permitted to access it. You cannot ", "bbox": {"l": 136.79797, "t": 343.48724, "r": 547.10968, "b": 352.70023, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "create a situation in which the data you inserted or changed is no longer accessible to you.", "bbox": {"l": 136.79797, "t": 355.48706, "r": 537.22864, "b": 364.70004, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 136.00733947753906, "t": 376.6234130859375, "r": 547.26068, "b": 398.8757019042969, "coord_origin": "TOPLEFT"}, "confidence": 0.9724586009979248, "cells": [{"id": 33, "text": "For more information and considerations about data movement in an RCAC environment, see ", "bbox": {"l": 136.79797, "t": 377.50661999999994, "r": 547.26068, "b": 386.7196, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Chapter 6, \u201cAdditional considerations\u201d on page 85.", "bbox": {"l": 136.79797, "t": 389.50644000000005, "r": 359.45187, "b": 398.71942, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "section_header", "bbox": {"l": 64.5394515991211, "t": 483.1797180175781, "r": 298.85339, "b": 499.07220458984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9677695631980896, "cells": [{"id": 35, "text": "3.6", "bbox": {"l": 64.800003, "t": 484.20062, "r": 87.400505, "b": 498.96362, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Human resources example", "bbox": {"l": 91.920601, "t": 484.20062, "r": 298.85339, "b": 498.96362, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 135.87118530273438, "t": 516.0023193359375, "r": 542.82935, "b": 585.74065, "coord_origin": "TOPLEFT"}, "confidence": 0.9858933687210083, "cells": [{"id": 37, "text": "This section illustrates with a simple example the usage of RCAC on a typical Human ", "bbox": {"l": 136.8, "t": 516.52863, "r": 515.45135, "b": 525.74161, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Resources application (schema). In this sample Human Resources schema, there is an ", "bbox": {"l": 136.79999, "t": 528.52844, "r": 525.09943, "b": 537.74144, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "important table that is called EMPLOYEES that contains all the information that is related to ", "bbox": {"l": 136.79999, "t": 540.52824, "r": 542.82935, "b": 549.7412400000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "the employees of the company. Among the information that normally is stored in the ", "bbox": {"l": 136.79996, "t": 552.52805, "r": 508.23926, "b": 561.74104, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "EMPLOYEES table, there is some sensitive information that must be hidden from certain ", "bbox": {"l": 136.79996, "t": 564.52785, "r": 530.18805, "b": 573.7408399999999, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "users:", "bbox": {"l": 136.79996, "t": 576.52765, "r": 163.97581, "b": 585.74065, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.85508728027344, "t": 592.7136840820312, "r": 235.38602, "b": 602.72046, "coord_origin": "TOPLEFT"}, "confidence": 0.9412627220153809, "cells": [{"id": 43, "text": "GLYPH", "bbox": {"l": 136.79996, "t": 593.65686, "r": 141.77995, "b": 602.43161, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Tax_Id information ", "bbox": {"l": 151.20012, "t": 593.50746, "r": 235.38602, "b": 602.72046, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 135.5828094482422, "t": 604.7291259765625, "r": 470.03765999999996, "b": 614.775634765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9563513398170471, "cells": [{"id": 45, "text": "GLYPH", "bbox": {"l": 136.79996, "t": 605.65666, "r": 141.77995, "b": 614.43141, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "YEAR of the birth date of the employee (hiding the age of the employee)", "bbox": {"l": 151.20012, "t": 605.50726, "r": 470.03765999999996, "b": 614.72026, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 136.1318817138672, "t": 626.7003173828125, "r": 375.29803, "b": 636.9021606445312, "coord_origin": "TOPLEFT"}, "confidence": 0.9345581531524658, "cells": [{"id": 47, "text": "In this example, there are four different types of users:", "bbox": {"l": 136.79994, "t": 627.52682, "r": 375.29803, "b": 636.73982, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "list_item", "bbox": {"l": 135.77261352539062, "t": 643.6381225585938, "r": 200.11467, "b": 653.71964, "coord_origin": "TOPLEFT"}, "confidence": 0.9286965727806091, "cells": [{"id": 48, "text": "GLYPH", "bbox": {"l": 136.79994, "t": 644.65604, "r": 141.77994, "b": 653.43079, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Employees", "bbox": {"l": 151.2001, "t": 644.5066400000001, "r": 200.11467, "b": 653.71964, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "list_item", "bbox": {"l": 135.6394805908203, "t": 655.4417724609375, "r": 195.63866, "b": 665.71944, "coord_origin": "TOPLEFT"}, "confidence": 0.9287638664245605, "cells": [{"id": 50, "text": "GLYPH", "bbox": {"l": 136.79994, "t": 656.65584, "r": 141.77994, "b": 665.4306, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Managers", "bbox": {"l": 151.2001, "t": 656.50644, "r": 195.63866, "b": 665.71944, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "list_item", "bbox": {"l": 135.6507568359375, "t": 667.2589111328125, "r": 276.5639343261719, "b": 677.71925, "coord_origin": "TOPLEFT"}, "confidence": 0.9430361390113831, "cells": [{"id": 52, "text": "GLYPH", "bbox": {"l": 136.79994, "t": 668.65565, "r": 141.77994, "b": 677.4304, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "Human Resources Manager", "bbox": {"l": 151.2001, "t": 668.50624, "r": 276.16125, "b": 677.71925, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "list_item", "bbox": {"l": 135.71376037597656, "t": 679.4451904296875, "r": 539.58447, "b": 701.7188639999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9746949672698975, "cells": [{"id": 54, "text": "GLYPH", "bbox": {"l": 136.79994, "t": 680.65546, "r": 141.77994, "b": 689.43021, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Consultant/IT Database Engineer (In this example, this person is an external consultant ", "bbox": {"l": 151.2001, "t": 680.50605, "r": 539.58447, "b": 689.71906, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "that is not an employee of the company.)", "bbox": {"l": 151.2001, "t": 692.505859, "r": 330.16245, "b": 701.7188639999999, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "text", "bbox": {"l": 135.66419982910156, "t": 713.9166870117188, "r": 546.52435, "b": 735.738243, "coord_origin": "TOPLEFT"}, "confidence": 0.9735910892486572, "cells": [{"id": 57, "text": "The following sections describe step-by-step what is needed to be done to implement RCAC ", "bbox": {"l": 136.79994, "t": 714.525429, "r": 546.52435, "b": 723.738434, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "in this environment.", "bbox": {"l": 136.79994, "t": 726.525238, "r": 223.17204000000004, "b": 735.738243, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "text", "bbox": {"l": 141.89248657226562, "t": 416.5281066894531, "r": 541.21985, "b": 451.1007080078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9794700741767883, "cells": [{"id": 59, "text": "Note:", "bbox": {"l": 142.8, "t": 417.52872, "r": 168.33246, "b": 426.7417, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": " DB2 does not provide any indication back to the user that the data set requested ", "bbox": {"l": 168.36035, "t": 417.52872, "r": 529.13947, "b": 426.7417, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "was restricted or reduced by RCAC. This is by design, as it helps minimize any changes to ", "bbox": {"l": 142.8, "t": 429.52853, "r": 541.21985, "b": 438.74152, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "the applications accessing the data.", "bbox": {"l": 142.8, "t": 441.52835, "r": 301.22571, "b": 450.74132999999995, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 37, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.83726119995117, "t": 754.3733520507812, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9199120402336121, "cells": [{"id": 0, "text": "22 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "22"}, {"label": "page_footer", "id": 1, "page_no": 37, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.2356185913086, "t": 754.7048950195312, "r": 334.42142, "b": 763.8771362304688, "coord_origin": "TOPLEFT"}, "confidence": 0.9534041881561279, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 2, "page_no": 37, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.83892822265625, "t": 70.66429138183594, "r": 547.29156, "b": 176.9203643798828, "coord_origin": "TOPLEFT"}, "confidence": 0.9871932864189148, "cells": [{"id": 2, "text": "Given that joins and subqueries can be used to perform set-based operations against existing ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 547.29156, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "data that is housed in other objects, almost any relational test can be constructed. If the data ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 547.18164, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "in the objects is manipulated over time, the RCAC test logic (and user query results) can be ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 542.89301, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "changed without modifying the actual row permission or column mask. This includes moving ", "bbox": {"l": 136.8, "t": 107.50811999999996, "r": 546.20483, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "a user from one group to another or changing a column value that is used to allow or disallow ", "bbox": {"l": 136.8, "t": 119.50792999999999, "r": 547.21387, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "access. For example, if Saturday is now a valid business day, only the BUSINESS_DAY value ", "bbox": {"l": 136.8, "t": 131.50775, "r": 547.23071, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "in the DATE_MASTER must be updated, not the permission logic. This technique can ", "bbox": {"l": 136.79999, "t": 143.50757, "r": 516.55499, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "potentially avoid downtime because of the exclusive lock that is needed on the table when ", "bbox": {"l": 136.79999, "t": 155.50739, "r": 535.33044, "b": 164.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "adding or changing RCAC definitions.", "bbox": {"l": 136.79999, "t": 167.5072, "r": 302.98856, "b": 176.72020999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Given that joins and subqueries can be used to perform set-based operations against existing data that is housed in other objects, almost any relational test can be constructed. If the data in the objects is manipulated over time, the RCAC test logic (and user query results) can be changed without modifying the actual row permission or column mask. This includes moving a user from one group to another or changing a column value that is used to allow or disallow access. For example, if Saturday is now a valid business day, only the BUSINESS_DAY value in the DATE_MASTER must be updated, not the permission logic. This technique can potentially avoid downtime because of the exclusive lock that is needed on the table when adding or changing RCAC definitions."}, {"label": "section_header", "id": 3, "page_no": 37, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 64.40492248535156, "t": 203.78817749023438, "r": 486.32437, "b": 219.96367999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9655107259750366, "cells": [{"id": 11, "text": "3.5", "bbox": {"l": 64.800003, "t": 205.20068000000003, "r": 86.952782, "b": 219.96367999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "SELECT, INSERT, and UPDATE behavior with RCAC", "bbox": {"l": 91.383354, "t": 205.20068000000003, "r": 486.32437, "b": 219.96367999999995, "coord_origin": "TOPLEFT"}}]}, "text": "3.5 SELECT, INSERT, and UPDATE behavior with RCAC"}, {"label": "text", "id": 4, "page_no": 37, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.95579528808594, "t": 236.6680450439453, "r": 547.29742, "b": 318.8705749511719, "coord_origin": "TOPLEFT"}, "confidence": 0.9883361458778381, "cells": [{"id": 13, "text": "RCAC provides a database-centric approach to determining which rows can be accessed and ", "bbox": {"l": 136.8, "t": 237.52868999999998, "r": 547.2735, "b": 246.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "what column values can be seen by a specific user. Given that the control is handled by DB2 ", "bbox": {"l": 136.8, "t": 249.5285, "r": 547.29742, "b": 258.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "internally, every data manipulation statement is under the influence of RCAC, with no ", "bbox": {"l": 136.8, "t": 261.52832, "r": 513.53516, "b": 270.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "exceptions. When accessing the table, the ", "bbox": {"l": 136.8, "t": 273.52814, "r": 325.96036, "b": 282.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "SELECT", "bbox": {"l": 325.98022, "t": 273.67755, "r": 355.97977, "b": 282.50214000000005, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": " statements, searched ", "bbox": {"l": 355.97974, "t": 273.52814, "r": 456.93231, "b": 282.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "UPDATE", "bbox": {"l": 456.96020999999996, "t": 273.67755, "r": 486.89996, "b": 282.50214000000005, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": " statements, ", "bbox": {"l": 486.89996, "t": 273.52814, "r": 544.01459, "b": 282.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "and searched ", "bbox": {"l": 136.79999, "t": 285.52798, "r": 200.11673, "b": 294.74097, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "DELETE", "bbox": {"l": 200.15953, "t": 285.67736999999994, "r": 230.15904000000003, "b": 294.50195, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": " statements implicitly and transparently contain the row permission and ", "bbox": {"l": 230.09929, "t": 285.52798, "r": 546.29034, "b": 294.74097, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "the column mask rule text. This means that the data set can be logically restricted and ", "bbox": {"l": 136.79898, "t": 297.5278, "r": 519.62463, "b": 306.7407799999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "reduced on a user by user basis.", "bbox": {"l": 136.79898, "t": 309.52762, "r": 281.48892, "b": 318.74060000000003, "coord_origin": "TOPLEFT"}}]}, "text": "RCAC provides a database-centric approach to determining which rows can be accessed and what column values can be seen by a specific user. Given that the control is handled by DB2 internally, every data manipulation statement is under the influence of RCAC, with no exceptions. When accessing the table, the SELECT statements, searched UPDATE statements, and searched DELETE statements implicitly and transparently contain the row permission and the column mask rule text. This means that the data set can be logically restricted and reduced on a user by user basis."}, {"label": "text", "id": 5, "page_no": 37, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.07569885253906, "t": 330.7037658691406, "r": 547.19586, "b": 365.0055236816406, "coord_origin": "TOPLEFT"}, "confidence": 0.9833049774169922, "cells": [{"id": 26, "text": "Furthermore, DB2 prevents an ", "bbox": {"l": 136.79898, "t": 331.48743, "r": 273.8327, "b": 340.70041, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "INSERT", "bbox": {"l": 273.77887, "t": 331.63681, "r": 303.77838, "b": 340.46139999999997, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": " statement from inserting a row or an ", "bbox": {"l": 303.77838, "t": 331.48743, "r": 468.12946, "b": 340.70041, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "UPDATE", "bbox": {"l": 468.11838, "t": 331.63681, "r": 498.11792, "b": 340.46139999999997, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": " statement ", "bbox": {"l": 498.11789, "t": 331.48743, "r": 547.19586, "b": 340.70041, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "from modifying a row such that the current user cannot be permitted to access it. You cannot ", "bbox": {"l": 136.79797, "t": 343.48724, "r": 547.10968, "b": 352.70023, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "create a situation in which the data you inserted or changed is no longer accessible to you.", "bbox": {"l": 136.79797, "t": 355.48706, "r": 537.22864, "b": 364.70004, "coord_origin": "TOPLEFT"}}]}, "text": "Furthermore, DB2 prevents an INSERT statement from inserting a row or an UPDATE statement from modifying a row such that the current user cannot be permitted to access it. You cannot create a situation in which the data you inserted or changed is no longer accessible to you."}, {"label": "text", "id": 6, "page_no": 37, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.00733947753906, "t": 376.6234130859375, "r": 547.26068, "b": 398.8757019042969, "coord_origin": "TOPLEFT"}, "confidence": 0.9724586009979248, "cells": [{"id": 33, "text": "For more information and considerations about data movement in an RCAC environment, see ", "bbox": {"l": 136.79797, "t": 377.50661999999994, "r": 547.26068, "b": 386.7196, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Chapter 6, \u201cAdditional considerations\u201d on page 85.", "bbox": {"l": 136.79797, "t": 389.50644000000005, "r": 359.45187, "b": 398.71942, "coord_origin": "TOPLEFT"}}]}, "text": "For more information and considerations about data movement in an RCAC environment, see Chapter 6, \u201cAdditional considerations\u201d on page 85."}, {"label": "section_header", "id": 7, "page_no": 37, "cluster": {"id": 7, "label": "section_header", "bbox": {"l": 64.5394515991211, "t": 483.1797180175781, "r": 298.85339, "b": 499.07220458984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9677695631980896, "cells": [{"id": 35, "text": "3.6", "bbox": {"l": 64.800003, "t": 484.20062, "r": 87.400505, "b": 498.96362, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Human resources example", "bbox": {"l": 91.920601, "t": 484.20062, "r": 298.85339, "b": 498.96362, "coord_origin": "TOPLEFT"}}]}, "text": "3.6 Human resources example"}, {"label": "text", "id": 8, "page_no": 37, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.87118530273438, "t": 516.0023193359375, "r": 542.82935, "b": 585.74065, "coord_origin": "TOPLEFT"}, "confidence": 0.9858933687210083, "cells": [{"id": 37, "text": "This section illustrates with a simple example the usage of RCAC on a typical Human ", "bbox": {"l": 136.8, "t": 516.52863, "r": 515.45135, "b": 525.74161, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Resources application (schema). In this sample Human Resources schema, there is an ", "bbox": {"l": 136.79999, "t": 528.52844, "r": 525.09943, "b": 537.74144, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "important table that is called EMPLOYEES that contains all the information that is related to ", "bbox": {"l": 136.79999, "t": 540.52824, "r": 542.82935, "b": 549.7412400000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "the employees of the company. Among the information that normally is stored in the ", "bbox": {"l": 136.79996, "t": 552.52805, "r": 508.23926, "b": 561.74104, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "EMPLOYEES table, there is some sensitive information that must be hidden from certain ", "bbox": {"l": 136.79996, "t": 564.52785, "r": 530.18805, "b": 573.7408399999999, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "users:", "bbox": {"l": 136.79996, "t": 576.52765, "r": 163.97581, "b": 585.74065, "coord_origin": "TOPLEFT"}}]}, "text": "This section illustrates with a simple example the usage of RCAC on a typical Human Resources application (schema). In this sample Human Resources schema, there is an important table that is called EMPLOYEES that contains all the information that is related to the employees of the company. Among the information that normally is stored in the EMPLOYEES table, there is some sensitive information that must be hidden from certain users:"}, {"label": "list_item", "id": 9, "page_no": 37, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.85508728027344, "t": 592.7136840820312, "r": 235.38602, "b": 602.72046, "coord_origin": "TOPLEFT"}, "confidence": 0.9412627220153809, "cells": [{"id": 43, "text": "GLYPH", "bbox": {"l": 136.79996, "t": 593.65686, "r": 141.77995, "b": 602.43161, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Tax_Id information ", "bbox": {"l": 151.20012, "t": 593.50746, "r": 235.38602, "b": 602.72046, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Tax_Id information"}, {"label": "list_item", "id": 10, "page_no": 37, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.5828094482422, "t": 604.7291259765625, "r": 470.03765999999996, "b": 614.775634765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9563513398170471, "cells": [{"id": 45, "text": "GLYPH", "bbox": {"l": 136.79996, "t": 605.65666, "r": 141.77995, "b": 614.43141, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "YEAR of the birth date of the employee (hiding the age of the employee)", "bbox": {"l": 151.20012, "t": 605.50726, "r": 470.03765999999996, "b": 614.72026, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH YEAR of the birth date of the employee (hiding the age of the employee)"}, {"label": "text", "id": 11, "page_no": 37, "cluster": {"id": 11, "label": "text", "bbox": {"l": 136.1318817138672, "t": 626.7003173828125, "r": 375.29803, "b": 636.9021606445312, "coord_origin": "TOPLEFT"}, "confidence": 0.9345581531524658, "cells": [{"id": 47, "text": "In this example, there are four different types of users:", "bbox": {"l": 136.79994, "t": 627.52682, "r": 375.29803, "b": 636.73982, "coord_origin": "TOPLEFT"}}]}, "text": "In this example, there are four different types of users:"}, {"label": "list_item", "id": 12, "page_no": 37, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 135.77261352539062, "t": 643.6381225585938, "r": 200.11467, "b": 653.71964, "coord_origin": "TOPLEFT"}, "confidence": 0.9286965727806091, "cells": [{"id": 48, "text": "GLYPH", "bbox": {"l": 136.79994, "t": 644.65604, "r": 141.77994, "b": 653.43079, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Employees", "bbox": {"l": 151.2001, "t": 644.5066400000001, "r": 200.11467, "b": 653.71964, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Employees"}, {"label": "list_item", "id": 13, "page_no": 37, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 135.6394805908203, "t": 655.4417724609375, "r": 195.63866, "b": 665.71944, "coord_origin": "TOPLEFT"}, "confidence": 0.9287638664245605, "cells": [{"id": 50, "text": "GLYPH", "bbox": {"l": 136.79994, "t": 656.65584, "r": 141.77994, "b": 665.4306, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Managers", "bbox": {"l": 151.2001, "t": 656.50644, "r": 195.63866, "b": 665.71944, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Managers"}, {"label": "list_item", "id": 14, "page_no": 37, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 135.6507568359375, "t": 667.2589111328125, "r": 276.5639343261719, "b": 677.71925, "coord_origin": "TOPLEFT"}, "confidence": 0.9430361390113831, "cells": [{"id": 52, "text": "GLYPH", "bbox": {"l": 136.79994, "t": 668.65565, "r": 141.77994, "b": 677.4304, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "Human Resources Manager", "bbox": {"l": 151.2001, "t": 668.50624, "r": 276.16125, "b": 677.71925, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Human Resources Manager"}, {"label": "list_item", "id": 15, "page_no": 37, "cluster": {"id": 15, "label": "list_item", "bbox": {"l": 135.71376037597656, "t": 679.4451904296875, "r": 539.58447, "b": 701.7188639999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9746949672698975, "cells": [{"id": 54, "text": "GLYPH", "bbox": {"l": 136.79994, "t": 680.65546, "r": 141.77994, "b": 689.43021, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Consultant/IT Database Engineer (In this example, this person is an external consultant ", "bbox": {"l": 151.2001, "t": 680.50605, "r": 539.58447, "b": 689.71906, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "that is not an employee of the company.)", "bbox": {"l": 151.2001, "t": 692.505859, "r": 330.16245, "b": 701.7188639999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Consultant/IT Database Engineer (In this example, this person is an external consultant that is not an employee of the company.)"}, {"label": "text", "id": 16, "page_no": 37, "cluster": {"id": 16, "label": "text", "bbox": {"l": 135.66419982910156, "t": 713.9166870117188, "r": 546.52435, "b": 735.738243, "coord_origin": "TOPLEFT"}, "confidence": 0.9735910892486572, "cells": [{"id": 57, "text": "The following sections describe step-by-step what is needed to be done to implement RCAC ", "bbox": {"l": 136.79994, "t": 714.525429, "r": 546.52435, "b": 723.738434, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "in this environment.", "bbox": {"l": 136.79994, "t": 726.525238, "r": 223.17204000000004, "b": 735.738243, "coord_origin": "TOPLEFT"}}]}, "text": "The following sections describe step-by-step what is needed to be done to implement RCAC in this environment."}, {"label": "text", "id": 17, "page_no": 37, "cluster": {"id": 17, "label": "text", "bbox": {"l": 141.89248657226562, "t": 416.5281066894531, "r": 541.21985, "b": 451.1007080078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9794700741767883, "cells": [{"id": 59, "text": "Note:", "bbox": {"l": 142.8, "t": 417.52872, "r": 168.33246, "b": 426.7417, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": " DB2 does not provide any indication back to the user that the data set requested ", "bbox": {"l": 168.36035, "t": 417.52872, "r": 529.13947, "b": 426.7417, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "was restricted or reduced by RCAC. This is by design, as it helps minimize any changes to ", "bbox": {"l": 142.8, "t": 429.52853, "r": 541.21985, "b": 438.74152, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "the applications accessing the data.", "bbox": {"l": 142.8, "t": 441.52835, "r": 301.22571, "b": 450.74132999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Note: DB2 does not provide any indication back to the user that the data set requested was restricted or reduced by RCAC. This is by design, as it helps minimize any changes to the applications accessing the data."}], "body": [{"label": "text", "id": 2, "page_no": 37, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.83892822265625, "t": 70.66429138183594, "r": 547.29156, "b": 176.9203643798828, "coord_origin": "TOPLEFT"}, "confidence": 0.9871932864189148, "cells": [{"id": 2, "text": "Given that joins and subqueries can be used to perform set-based operations against existing ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 547.29156, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "data that is housed in other objects, almost any relational test can be constructed. If the data ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 547.18164, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "in the objects is manipulated over time, the RCAC test logic (and user query results) can be ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 542.89301, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "changed without modifying the actual row permission or column mask. This includes moving ", "bbox": {"l": 136.8, "t": 107.50811999999996, "r": 546.20483, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "a user from one group to another or changing a column value that is used to allow or disallow ", "bbox": {"l": 136.8, "t": 119.50792999999999, "r": 547.21387, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "access. For example, if Saturday is now a valid business day, only the BUSINESS_DAY value ", "bbox": {"l": 136.8, "t": 131.50775, "r": 547.23071, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "in the DATE_MASTER must be updated, not the permission logic. This technique can ", "bbox": {"l": 136.79999, "t": 143.50757, "r": 516.55499, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "potentially avoid downtime because of the exclusive lock that is needed on the table when ", "bbox": {"l": 136.79999, "t": 155.50739, "r": 535.33044, "b": 164.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "adding or changing RCAC definitions.", "bbox": {"l": 136.79999, "t": 167.5072, "r": 302.98856, "b": 176.72020999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Given that joins and subqueries can be used to perform set-based operations against existing data that is housed in other objects, almost any relational test can be constructed. If the data in the objects is manipulated over time, the RCAC test logic (and user query results) can be changed without modifying the actual row permission or column mask. This includes moving a user from one group to another or changing a column value that is used to allow or disallow access. For example, if Saturday is now a valid business day, only the BUSINESS_DAY value in the DATE_MASTER must be updated, not the permission logic. This technique can potentially avoid downtime because of the exclusive lock that is needed on the table when adding or changing RCAC definitions."}, {"label": "section_header", "id": 3, "page_no": 37, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 64.40492248535156, "t": 203.78817749023438, "r": 486.32437, "b": 219.96367999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9655107259750366, "cells": [{"id": 11, "text": "3.5", "bbox": {"l": 64.800003, "t": 205.20068000000003, "r": 86.952782, "b": 219.96367999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "SELECT, INSERT, and UPDATE behavior with RCAC", "bbox": {"l": 91.383354, "t": 205.20068000000003, "r": 486.32437, "b": 219.96367999999995, "coord_origin": "TOPLEFT"}}]}, "text": "3.5 SELECT, INSERT, and UPDATE behavior with RCAC"}, {"label": "text", "id": 4, "page_no": 37, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.95579528808594, "t": 236.6680450439453, "r": 547.29742, "b": 318.8705749511719, "coord_origin": "TOPLEFT"}, "confidence": 0.9883361458778381, "cells": [{"id": 13, "text": "RCAC provides a database-centric approach to determining which rows can be accessed and ", "bbox": {"l": 136.8, "t": 237.52868999999998, "r": 547.2735, "b": 246.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "what column values can be seen by a specific user. Given that the control is handled by DB2 ", "bbox": {"l": 136.8, "t": 249.5285, "r": 547.29742, "b": 258.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "internally, every data manipulation statement is under the influence of RCAC, with no ", "bbox": {"l": 136.8, "t": 261.52832, "r": 513.53516, "b": 270.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "exceptions. When accessing the table, the ", "bbox": {"l": 136.8, "t": 273.52814, "r": 325.96036, "b": 282.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "SELECT", "bbox": {"l": 325.98022, "t": 273.67755, "r": 355.97977, "b": 282.50214000000005, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": " statements, searched ", "bbox": {"l": 355.97974, "t": 273.52814, "r": 456.93231, "b": 282.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "UPDATE", "bbox": {"l": 456.96020999999996, "t": 273.67755, "r": 486.89996, "b": 282.50214000000005, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": " statements, ", "bbox": {"l": 486.89996, "t": 273.52814, "r": 544.01459, "b": 282.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "and searched ", "bbox": {"l": 136.79999, "t": 285.52798, "r": 200.11673, "b": 294.74097, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "DELETE", "bbox": {"l": 200.15953, "t": 285.67736999999994, "r": 230.15904000000003, "b": 294.50195, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": " statements implicitly and transparently contain the row permission and ", "bbox": {"l": 230.09929, "t": 285.52798, "r": 546.29034, "b": 294.74097, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "the column mask rule text. This means that the data set can be logically restricted and ", "bbox": {"l": 136.79898, "t": 297.5278, "r": 519.62463, "b": 306.7407799999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "reduced on a user by user basis.", "bbox": {"l": 136.79898, "t": 309.52762, "r": 281.48892, "b": 318.74060000000003, "coord_origin": "TOPLEFT"}}]}, "text": "RCAC provides a database-centric approach to determining which rows can be accessed and what column values can be seen by a specific user. Given that the control is handled by DB2 internally, every data manipulation statement is under the influence of RCAC, with no exceptions. When accessing the table, the SELECT statements, searched UPDATE statements, and searched DELETE statements implicitly and transparently contain the row permission and the column mask rule text. This means that the data set can be logically restricted and reduced on a user by user basis."}, {"label": "text", "id": 5, "page_no": 37, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.07569885253906, "t": 330.7037658691406, "r": 547.19586, "b": 365.0055236816406, "coord_origin": "TOPLEFT"}, "confidence": 0.9833049774169922, "cells": [{"id": 26, "text": "Furthermore, DB2 prevents an ", "bbox": {"l": 136.79898, "t": 331.48743, "r": 273.8327, "b": 340.70041, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "INSERT", "bbox": {"l": 273.77887, "t": 331.63681, "r": 303.77838, "b": 340.46139999999997, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": " statement from inserting a row or an ", "bbox": {"l": 303.77838, "t": 331.48743, "r": 468.12946, "b": 340.70041, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "UPDATE", "bbox": {"l": 468.11838, "t": 331.63681, "r": 498.11792, "b": 340.46139999999997, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": " statement ", "bbox": {"l": 498.11789, "t": 331.48743, "r": 547.19586, "b": 340.70041, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "from modifying a row such that the current user cannot be permitted to access it. You cannot ", "bbox": {"l": 136.79797, "t": 343.48724, "r": 547.10968, "b": 352.70023, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "create a situation in which the data you inserted or changed is no longer accessible to you.", "bbox": {"l": 136.79797, "t": 355.48706, "r": 537.22864, "b": 364.70004, "coord_origin": "TOPLEFT"}}]}, "text": "Furthermore, DB2 prevents an INSERT statement from inserting a row or an UPDATE statement from modifying a row such that the current user cannot be permitted to access it. You cannot create a situation in which the data you inserted or changed is no longer accessible to you."}, {"label": "text", "id": 6, "page_no": 37, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.00733947753906, "t": 376.6234130859375, "r": 547.26068, "b": 398.8757019042969, "coord_origin": "TOPLEFT"}, "confidence": 0.9724586009979248, "cells": [{"id": 33, "text": "For more information and considerations about data movement in an RCAC environment, see ", "bbox": {"l": 136.79797, "t": 377.50661999999994, "r": 547.26068, "b": 386.7196, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Chapter 6, \u201cAdditional considerations\u201d on page 85.", "bbox": {"l": 136.79797, "t": 389.50644000000005, "r": 359.45187, "b": 398.71942, "coord_origin": "TOPLEFT"}}]}, "text": "For more information and considerations about data movement in an RCAC environment, see Chapter 6, \u201cAdditional considerations\u201d on page 85."}, {"label": "section_header", "id": 7, "page_no": 37, "cluster": {"id": 7, "label": "section_header", "bbox": {"l": 64.5394515991211, "t": 483.1797180175781, "r": 298.85339, "b": 499.07220458984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9677695631980896, "cells": [{"id": 35, "text": "3.6", "bbox": {"l": 64.800003, "t": 484.20062, "r": 87.400505, "b": 498.96362, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Human resources example", "bbox": {"l": 91.920601, "t": 484.20062, "r": 298.85339, "b": 498.96362, "coord_origin": "TOPLEFT"}}]}, "text": "3.6 Human resources example"}, {"label": "text", "id": 8, "page_no": 37, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.87118530273438, "t": 516.0023193359375, "r": 542.82935, "b": 585.74065, "coord_origin": "TOPLEFT"}, "confidence": 0.9858933687210083, "cells": [{"id": 37, "text": "This section illustrates with a simple example the usage of RCAC on a typical Human ", "bbox": {"l": 136.8, "t": 516.52863, "r": 515.45135, "b": 525.74161, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Resources application (schema). In this sample Human Resources schema, there is an ", "bbox": {"l": 136.79999, "t": 528.52844, "r": 525.09943, "b": 537.74144, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "important table that is called EMPLOYEES that contains all the information that is related to ", "bbox": {"l": 136.79999, "t": 540.52824, "r": 542.82935, "b": 549.7412400000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "the employees of the company. Among the information that normally is stored in the ", "bbox": {"l": 136.79996, "t": 552.52805, "r": 508.23926, "b": 561.74104, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "EMPLOYEES table, there is some sensitive information that must be hidden from certain ", "bbox": {"l": 136.79996, "t": 564.52785, "r": 530.18805, "b": 573.7408399999999, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "users:", "bbox": {"l": 136.79996, "t": 576.52765, "r": 163.97581, "b": 585.74065, "coord_origin": "TOPLEFT"}}]}, "text": "This section illustrates with a simple example the usage of RCAC on a typical Human Resources application (schema). In this sample Human Resources schema, there is an important table that is called EMPLOYEES that contains all the information that is related to the employees of the company. Among the information that normally is stored in the EMPLOYEES table, there is some sensitive information that must be hidden from certain users:"}, {"label": "list_item", "id": 9, "page_no": 37, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.85508728027344, "t": 592.7136840820312, "r": 235.38602, "b": 602.72046, "coord_origin": "TOPLEFT"}, "confidence": 0.9412627220153809, "cells": [{"id": 43, "text": "GLYPH", "bbox": {"l": 136.79996, "t": 593.65686, "r": 141.77995, "b": 602.43161, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Tax_Id information ", "bbox": {"l": 151.20012, "t": 593.50746, "r": 235.38602, "b": 602.72046, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Tax_Id information"}, {"label": "list_item", "id": 10, "page_no": 37, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.5828094482422, "t": 604.7291259765625, "r": 470.03765999999996, "b": 614.775634765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9563513398170471, "cells": [{"id": 45, "text": "GLYPH", "bbox": {"l": 136.79996, "t": 605.65666, "r": 141.77995, "b": 614.43141, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "YEAR of the birth date of the employee (hiding the age of the employee)", "bbox": {"l": 151.20012, "t": 605.50726, "r": 470.03765999999996, "b": 614.72026, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH YEAR of the birth date of the employee (hiding the age of the employee)"}, {"label": "text", "id": 11, "page_no": 37, "cluster": {"id": 11, "label": "text", "bbox": {"l": 136.1318817138672, "t": 626.7003173828125, "r": 375.29803, "b": 636.9021606445312, "coord_origin": "TOPLEFT"}, "confidence": 0.9345581531524658, "cells": [{"id": 47, "text": "In this example, there are four different types of users:", "bbox": {"l": 136.79994, "t": 627.52682, "r": 375.29803, "b": 636.73982, "coord_origin": "TOPLEFT"}}]}, "text": "In this example, there are four different types of users:"}, {"label": "list_item", "id": 12, "page_no": 37, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 135.77261352539062, "t": 643.6381225585938, "r": 200.11467, "b": 653.71964, "coord_origin": "TOPLEFT"}, "confidence": 0.9286965727806091, "cells": [{"id": 48, "text": "GLYPH", "bbox": {"l": 136.79994, "t": 644.65604, "r": 141.77994, "b": 653.43079, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Employees", "bbox": {"l": 151.2001, "t": 644.5066400000001, "r": 200.11467, "b": 653.71964, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Employees"}, {"label": "list_item", "id": 13, "page_no": 37, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 135.6394805908203, "t": 655.4417724609375, "r": 195.63866, "b": 665.71944, "coord_origin": "TOPLEFT"}, "confidence": 0.9287638664245605, "cells": [{"id": 50, "text": "GLYPH", "bbox": {"l": 136.79994, "t": 656.65584, "r": 141.77994, "b": 665.4306, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Managers", "bbox": {"l": 151.2001, "t": 656.50644, "r": 195.63866, "b": 665.71944, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Managers"}, {"label": "list_item", "id": 14, "page_no": 37, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 135.6507568359375, "t": 667.2589111328125, "r": 276.5639343261719, "b": 677.71925, "coord_origin": "TOPLEFT"}, "confidence": 0.9430361390113831, "cells": [{"id": 52, "text": "GLYPH", "bbox": {"l": 136.79994, "t": 668.65565, "r": 141.77994, "b": 677.4304, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "Human Resources Manager", "bbox": {"l": 151.2001, "t": 668.50624, "r": 276.16125, "b": 677.71925, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Human Resources Manager"}, {"label": "list_item", "id": 15, "page_no": 37, "cluster": {"id": 15, "label": "list_item", "bbox": {"l": 135.71376037597656, "t": 679.4451904296875, "r": 539.58447, "b": 701.7188639999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9746949672698975, "cells": [{"id": 54, "text": "GLYPH", "bbox": {"l": 136.79994, "t": 680.65546, "r": 141.77994, "b": 689.43021, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Consultant/IT Database Engineer (In this example, this person is an external consultant ", "bbox": {"l": 151.2001, "t": 680.50605, "r": 539.58447, "b": 689.71906, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "that is not an employee of the company.)", "bbox": {"l": 151.2001, "t": 692.505859, "r": 330.16245, "b": 701.7188639999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Consultant/IT Database Engineer (In this example, this person is an external consultant that is not an employee of the company.)"}, {"label": "text", "id": 16, "page_no": 37, "cluster": {"id": 16, "label": "text", "bbox": {"l": 135.66419982910156, "t": 713.9166870117188, "r": 546.52435, "b": 735.738243, "coord_origin": "TOPLEFT"}, "confidence": 0.9735910892486572, "cells": [{"id": 57, "text": "The following sections describe step-by-step what is needed to be done to implement RCAC ", "bbox": {"l": 136.79994, "t": 714.525429, "r": 546.52435, "b": 723.738434, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "in this environment.", "bbox": {"l": 136.79994, "t": 726.525238, "r": 223.17204000000004, "b": 735.738243, "coord_origin": "TOPLEFT"}}]}, "text": "The following sections describe step-by-step what is needed to be done to implement RCAC in this environment."}, {"label": "text", "id": 17, "page_no": 37, "cluster": {"id": 17, "label": "text", "bbox": {"l": 141.89248657226562, "t": 416.5281066894531, "r": 541.21985, "b": 451.1007080078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9794700741767883, "cells": [{"id": 59, "text": "Note:", "bbox": {"l": 142.8, "t": 417.52872, "r": 168.33246, "b": 426.7417, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": " DB2 does not provide any indication back to the user that the data set requested ", "bbox": {"l": 168.36035, "t": 417.52872, "r": 529.13947, "b": 426.7417, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "was restricted or reduced by RCAC. This is by design, as it helps minimize any changes to ", "bbox": {"l": 142.8, "t": 429.52853, "r": 541.21985, "b": 438.74152, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "the applications accessing the data.", "bbox": {"l": 142.8, "t": 441.52835, "r": 301.22571, "b": 450.74132999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Note: DB2 does not provide any indication back to the user that the data set requested was restricted or reduced by RCAC. This is by design, as it helps minimize any changes to the applications accessing the data."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 37, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.83726119995117, "t": 754.3733520507812, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9199120402336121, "cells": [{"id": 0, "text": "22 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "22"}, {"label": "page_footer", "id": 1, "page_no": 37, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.2356185913086, "t": 754.7048950195312, "r": 334.42142, "b": 763.8771362304688, "coord_origin": "TOPLEFT"}, "confidence": 0.9534041881561279, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 38, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "23", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "3.6.1", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 93.918098, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Assigning the QIBM_DB_SECADM function ID to the consultants", "bbox": {"l": 97.557877, "t": 71.33471999999995, "r": 500.5502, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "The consultant must have authority to implement RCAC, so you must use one of the function ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 547.24261, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "IDs that are provided in DB2 for i (see 2.1.5, \u201cSecurity Administrator function: ", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 478.6330899999999, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "QIBM_DB_SECADM\u201d on page 9). Complete the following steps:", "bbox": {"l": 136.8, "t": 121.48834000000011, "r": 419.59521, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "1.", "bbox": {"l": 136.8, "t": 138.52788999999996, "r": 145.29478, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Run the Change Functional Usage (", "bbox": {"l": 148.12639, "t": 138.52788999999996, "r": 310.60699, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CHGFCNUSG", "bbox": {"l": 310.61993, "t": 138.67731000000003, "r": 355.55945, "b": 147.50189, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": ") CL commands that are shown in ", "bbox": {"l": 355.62021, "t": 138.52788999999996, "r": 507.77319000000006, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Example 3-2. These commands must be run by someone that has the *SECOFR ", "bbox": {"l": 151.20018, "t": 150.52770999999996, "r": 510.9772300000001, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "authority. ", "bbox": {"l": 151.20018, "t": 162.52752999999996, "r": 194.25031, "b": 171.74054, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Example 3-2 Function ID required to implement RCAC", "bbox": {"l": 136.8, "t": 184.51801, "r": 357.83176, "b": 192.84295999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED)", "bbox": {"l": 136.8, "t": 201.67809999999997, "r": 441.59589, "b": 210.45288000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(MCAIN) USAGE(*ALLOWED)", "bbox": {"l": 136.8, "t": 213.67791999999997, "r": 431.63588999999996, "b": 222.45270000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "2.", "bbox": {"l": 136.8, "t": 237.52814, "r": 145.03545, "b": 246.74114999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "There is a way to discover which user profiles have authorization to implement RCAC. This ", "bbox": {"l": 147.78058, "t": 237.52814, "r": 547.28821, "b": 246.74114999999995, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "can be done by running the SQL statement that is shown in Example 3-3.", "bbox": {"l": 151.20016, "t": 249.52795000000003, "r": 474.92215000000004, "b": 258.74096999999995, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Example 3-3 Verifying what user profiles have authorization to implement RCAC", "bbox": {"l": 136.8, "t": 271.51801, "r": 459.29779, "b": 279.84295999999995, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "SELECT", "bbox": {"l": 136.8, "t": 288.67810000000003, "r": 174.27548, "b": 297.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "function_id,", "bbox": {"l": 186.76732, "t": 288.67810000000003, "r": 261.71829, "b": 297.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "user_name,", "bbox": {"l": 169.62816, "t": 300.67792, "r": 251.69853, "b": 309.45270000000005, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "usage,", "bbox": {"l": 174.76752, "t": 312.67773, "r": 231.71878000000004, "b": 321.45251, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "user_type", "bbox": {"l": 170.62109, "t": 324.67755, "r": 246.71854, "b": 333.45233, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "FROM", "bbox": {"l": 136.8, "t": 336.67736999999994, "r": 161.22635, "b": 345.45215, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "qsys2.function_usage", "bbox": {"l": 179.5461, "t": 336.67736999999994, "r": 301.6778, "b": 345.45215, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "WHERE", "bbox": {"l": 136.8, "t": 348.67719000000005, "r": 163.70732, "b": 357.45196999999996, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "function_id =\u2019QIBM_DB_SECADM\u2019", "bbox": {"l": 179.85172, "t": 348.67719000000005, "r": 346.67709, "b": 357.45196999999996, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "ORDER BY", "bbox": {"l": 136.8, "t": 360.677, "r": 182.75941, "b": 369.45178, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "user_name;", "bbox": {"l": 194.24927, "t": 360.677, "r": 251.69853, "b": 369.45178, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "3.", "bbox": {"l": 136.8, "t": 384.52722, "r": 145.19109, "b": 393.7402, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "The result of the SQL statement is shown in Figure 3-6. In this example, either MCAIN or ", "bbox": {"l": 147.9881, "t": 384.52722, "r": 545.5683, "b": 393.7402, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "HBEDOYA can implement RCAC in the Human Resources database.", "bbox": {"l": 151.20016, "t": 396.52703999999994, "r": 456.21323, "b": 405.74002, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Figure 3-6 Result of the function ID query", "bbox": {"l": 136.8, "t": 468.01801, "r": 306.4032, "b": 476.34302, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "3.6.2", "bbox": {"l": 64.800003, "t": 496.85464, "r": 93.871941, "b": 508.84262, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Creating group profiles for the users and their roles", "bbox": {"l": 97.50592, "t": 496.85464, "r": 418.56525, "b": 508.84262, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Assuming that all the employees have a valid user profile, the next step is to create group ", "bbox": {"l": 136.8, "t": 523.00864, "r": 532.93518, "b": 532.22162, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "profiles to group the employees. Complete the following steps:", "bbox": {"l": 136.8, "t": 535.00842, "r": 411.17709, "b": 544.22144, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "1.", "bbox": {"l": 136.8, "t": 551.98825, "r": 145.35057, "b": 561.20125, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "In this example, there are three group profiles:", "bbox": {"l": 148.20076, "t": 551.98825, "r": 357.905, "b": 561.20125, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "-", "bbox": {"l": 152.03979, "t": 568.96806, "r": 157.56958, "b": 578.18106, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "HR (Human Resource personnel)", "bbox": {"l": 165.59933, "t": 568.96806, "r": 313.85294, "b": 578.18106, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "-", "bbox": {"l": 152.03979, "t": 580.96786, "r": 157.6154, "b": 590.1808599999999, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "MGR (Managers)", "bbox": {"l": 165.59933, "t": 580.96786, "r": 242.83118, "b": 590.1808599999999, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "-", "bbox": {"l": 152.03979, "t": 592.96767, "r": 157.60046, "b": 602.18066, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "EMP (Employees)", "bbox": {"l": 165.59933, "t": 592.96767, "r": 245.60703, "b": 602.18066, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "These are created by creating user profiles with no password. Example 3-4 shows the ", "bbox": {"l": 151.20016, "t": 610.0072299999999, "r": 532.71594, "b": 619.22023, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "Create User Profile (", "bbox": {"l": 151.20016, "t": 622.00703, "r": 241.71167, "b": 631.22003, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "CRTUSRPRF", "bbox": {"l": 241.74054, "t": 622.15643, "r": 286.68005, "b": 630.98099, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": ") CL commands that you use to create these group profiles.", "bbox": {"l": 286.68005, "t": 622.00703, "r": 547.29541, "b": 631.22003, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Example 3-4 Creating group profiles", "bbox": {"l": 136.8, "t": 643.99789, "r": 285.5574, "b": 652.32291, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "CRTUSRPRF USRPRF(EMP) PASSWORD() TEXT('Employees Group')", "bbox": {"l": 136.8, "t": 661.15802, "r": 416.63611, "b": 669.93278, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "CRTUSRPRF USRPRF(MGR) PASSWORD() TEXT('Managers Group')", "bbox": {"l": 136.8, "t": 673.15783, "r": 411.65613, "b": 681.93259, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "CRTUSRPRF USRPRF(HR) PASSWORD() TEXT('Human Resources Group')", "bbox": {"l": 136.8, "t": 685.15764, "r": 441.59589, "b": 693.9323959999999, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 344.5692443847656, "t": 754.7427978515625, "r": 523.60162, "b": 764.1153564453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9611534476280212, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.6176147460938, "t": 754.3688354492188, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9237489104270935, "cells": [{"id": 1, "text": "23", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.25519561767578, "t": 70.19824981689453, "r": 500.5502, "b": 83.69473266601562, "coord_origin": "TOPLEFT"}, "confidence": 0.9652671813964844, "cells": [{"id": 2, "text": "3.6.1", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 93.918098, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Assigning the QIBM_DB_SECADM function ID to the consultants", "bbox": {"l": 97.557877, "t": 71.33471999999995, "r": 500.5502, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.7902069091797, "t": 96.61418914794922, "r": 547.24261, "b": 130.93356323242188, "coord_origin": "TOPLEFT"}, "confidence": 0.967630922794342, "cells": [{"id": 4, "text": "The consultant must have authority to implement RCAC, so you must use one of the function ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 547.24261, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "IDs that are provided in DB2 for i (see 2.1.5, \u201cSecurity Administrator function: ", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 478.6330899999999, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "QIBM_DB_SECADM\u201d on page 9). Complete the following steps:", "bbox": {"l": 136.8, "t": 121.48834000000011, "r": 419.59521, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 136.8, "t": 137.95547485351562, "r": 510.9772300000001, "b": 172.0559844970703, "coord_origin": "TOPLEFT"}, "confidence": 0.9708675146102905, "cells": [{"id": 7, "text": "1.", "bbox": {"l": 136.8, "t": 138.52788999999996, "r": 145.29478, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Run the Change Functional Usage (", "bbox": {"l": 148.12639, "t": 138.52788999999996, "r": 310.60699, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CHGFCNUSG", "bbox": {"l": 310.61993, "t": 138.67731000000003, "r": 355.55945, "b": 147.50189, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": ") CL commands that are shown in ", "bbox": {"l": 355.62021, "t": 138.52788999999996, "r": 507.77319000000006, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Example 3-2. These commands must be run by someone that has the *SECOFR ", "bbox": {"l": 151.20018, "t": 150.52770999999996, "r": 510.9772300000001, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "authority. ", "bbox": {"l": 151.20018, "t": 162.52752999999996, "r": 194.25031, "b": 171.74054, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 136.3125762939453, "t": 183.1469268798828, "r": 358.5176696777344, "b": 193.2852325439453, "coord_origin": "TOPLEFT"}, "confidence": 0.8427231907844543, "cells": [{"id": 13, "text": "Example 3-2 Function ID required to implement RCAC", "bbox": {"l": 136.8, "t": 184.51801, "r": 357.83176, "b": 192.84295999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 136.8, "t": 201.67809999999997, "r": 441.59589, "b": 222.45270000000005, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 14, "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED)", "bbox": {"l": 136.8, "t": 201.67809999999997, "r": 441.59589, "b": 210.45288000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(MCAIN) USAGE(*ALLOWED)", "bbox": {"l": 136.8, "t": 213.67791999999997, "r": 431.63588999999996, "b": 222.45270000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 136.02276611328125, "t": 236.57188415527344, "r": 547.28821, "b": 258.8540954589844, "coord_origin": "TOPLEFT"}, "confidence": 0.931101381778717, "cells": [{"id": 16, "text": "2.", "bbox": {"l": 136.8, "t": 237.52814, "r": 145.03545, "b": 246.74114999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "There is a way to discover which user profiles have authorization to implement RCAC. This ", "bbox": {"l": 147.78058, "t": 237.52814, "r": 547.28821, "b": 246.74114999999995, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "can be done by running the SQL statement that is shown in Example 3-3.", "bbox": {"l": 151.20016, "t": 249.52795000000003, "r": 474.92215000000004, "b": 258.74096999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "caption", "bbox": {"l": 136.46849060058594, "t": 270.5647277832031, "r": 460.0157775878906, "b": 280.2876892089844, "coord_origin": "TOPLEFT"}, "confidence": 0.8696954846382141, "cells": [{"id": 19, "text": "Example 3-3 Verifying what user profiles have authorization to implement RCAC", "bbox": {"l": 136.8, "t": 271.51801, "r": 459.29779, "b": 279.84295999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 136.8, "t": 288.67810000000003, "r": 346.67709, "b": 369.45178, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 20, "text": "SELECT", "bbox": {"l": 136.8, "t": 288.67810000000003, "r": 174.27548, "b": 297.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "function_id,", "bbox": {"l": 186.76732, "t": 288.67810000000003, "r": 261.71829, "b": 297.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "user_name,", "bbox": {"l": 169.62816, "t": 300.67792, "r": 251.69853, "b": 309.45270000000005, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "usage,", "bbox": {"l": 174.76752, "t": 312.67773, "r": 231.71878000000004, "b": 321.45251, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "user_type", "bbox": {"l": 170.62109, "t": 324.67755, "r": 246.71854, "b": 333.45233, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "FROM", "bbox": {"l": 136.8, "t": 336.67736999999994, "r": 161.22635, "b": 345.45215, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "qsys2.function_usage", "bbox": {"l": 179.5461, "t": 336.67736999999994, "r": 301.6778, "b": 345.45215, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "WHERE", "bbox": {"l": 136.8, "t": 348.67719000000005, "r": 163.70732, "b": 357.45196999999996, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "function_id =\u2019QIBM_DB_SECADM\u2019", "bbox": {"l": 179.85172, "t": 348.67719000000005, "r": 346.67709, "b": 357.45196999999996, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "ORDER BY", "bbox": {"l": 136.8, "t": 360.677, "r": 182.75941, "b": 369.45178, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "user_name;", "bbox": {"l": 194.24927, "t": 360.677, "r": 251.69853, "b": 369.45178, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 135.87002563476562, "t": 383.9129638671875, "r": 545.5683, "b": 406.03265380859375, "coord_origin": "TOPLEFT"}, "confidence": 0.9212824106216431, "cells": [{"id": 31, "text": "3.", "bbox": {"l": 136.8, "t": 384.52722, "r": 145.19109, "b": 393.7402, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "The result of the SQL statement is shown in Figure 3-6. In this example, either MCAIN or ", "bbox": {"l": 147.9881, "t": 384.52722, "r": 545.5683, "b": 393.7402, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "HBEDOYA can implement RCAC in the Human Resources database.", "bbox": {"l": 151.20016, "t": 396.52703999999994, "r": 456.21323, "b": 405.74002, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "caption", "bbox": {"l": 136.01937866210938, "t": 467.0556945800781, "r": 307.21844482421875, "b": 477.0780029296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9000418782234192, "cells": [{"id": 34, "text": "Figure 3-6 Result of the function ID query", "bbox": {"l": 136.8, "t": 468.01801, "r": 306.4032, "b": 476.34302, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "section_header", "bbox": {"l": 64.10499572753906, "t": 495.4826965332031, "r": 418.56525, "b": 509.02349853515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9646822810173035, "cells": [{"id": 35, "text": "3.6.2", "bbox": {"l": 64.800003, "t": 496.85464, "r": 93.871941, "b": 508.84262, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Creating group profiles for the users and their roles", "bbox": {"l": 97.50592, "t": 496.85464, "r": 418.56525, "b": 508.84262, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 135.9925994873047, "t": 521.9961547851562, "r": 532.93518, "b": 544.3550415039062, "coord_origin": "TOPLEFT"}, "confidence": 0.9723882675170898, "cells": [{"id": 37, "text": "Assuming that all the employees have a valid user profile, the next step is to create group ", "bbox": {"l": 136.8, "t": 523.00864, "r": 532.93518, "b": 532.22162, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "profiles to group the employees. Complete the following steps:", "bbox": {"l": 136.8, "t": 535.00842, "r": 411.17709, "b": 544.22144, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "list_item", "bbox": {"l": 136.8, "t": 551.5098266601562, "r": 357.905, "b": 561.7009887695312, "coord_origin": "TOPLEFT"}, "confidence": 0.9077166318893433, "cells": [{"id": 39, "text": "1.", "bbox": {"l": 136.8, "t": 551.98825, "r": 145.35057, "b": 561.20125, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "In this example, there are three group profiles:", "bbox": {"l": 148.20076, "t": 551.98825, "r": 357.905, "b": 561.20125, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "list_item", "bbox": {"l": 151.3660430908203, "t": 567.9530639648438, "r": 313.85294, "b": 578.359619140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9419451951980591, "cells": [{"id": 41, "text": "-", "bbox": {"l": 152.03979, "t": 568.96806, "r": 157.56958, "b": 578.18106, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "HR (Human Resource personnel)", "bbox": {"l": 165.59933, "t": 568.96806, "r": 313.85294, "b": 578.18106, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "list_item", "bbox": {"l": 151.38209533691406, "t": 580.20458984375, "r": 242.83118, "b": 590.8248291015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9090039134025574, "cells": [{"id": 43, "text": "-", "bbox": {"l": 152.03979, "t": 580.96786, "r": 157.6154, "b": 590.1808599999999, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "MGR (Managers)", "bbox": {"l": 165.59933, "t": 580.96786, "r": 242.83118, "b": 590.1808599999999, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "list_item", "bbox": {"l": 151.16091918945312, "t": 592.0626220703125, "r": 245.60703, "b": 602.3350219726562, "coord_origin": "TOPLEFT"}, "confidence": 0.9277263879776001, "cells": [{"id": 45, "text": "-", "bbox": {"l": 152.03979, "t": 592.96767, "r": 157.60046, "b": 602.18066, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "EMP (Employees)", "bbox": {"l": 165.59933, "t": 592.96767, "r": 245.60703, "b": 602.18066, "coord_origin": "TOPLEFT"}}]}, {"id": 18, "label": "text", "bbox": {"l": 150.5602569580078, "t": 609.2984619140625, "r": 547.29541, "b": 631.7743530273438, "coord_origin": "TOPLEFT"}, "confidence": 0.9484594464302063, "cells": [{"id": 47, "text": "These are created by creating user profiles with no password. Example 3-4 shows the ", "bbox": {"l": 151.20016, "t": 610.0072299999999, "r": 532.71594, "b": 619.22023, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "Create User Profile (", "bbox": {"l": 151.20016, "t": 622.00703, "r": 241.71167, "b": 631.22003, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "CRTUSRPRF", "bbox": {"l": 241.74054, "t": 622.15643, "r": 286.68005, "b": 630.98099, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": ") CL commands that you use to create these group profiles.", "bbox": {"l": 286.68005, "t": 622.00703, "r": 547.29541, "b": 631.22003, "coord_origin": "TOPLEFT"}}]}, {"id": 19, "label": "caption", "bbox": {"l": 136.35838317871094, "t": 643.2757568359375, "r": 285.8739318847656, "b": 653.2639770507812, "coord_origin": "TOPLEFT"}, "confidence": 0.804556131362915, "cells": [{"id": 51, "text": "Example 3-4 Creating group profiles", "bbox": {"l": 136.8, "t": 643.99789, "r": 285.5574, "b": 652.32291, "coord_origin": "TOPLEFT"}}]}, {"id": 20, "label": "text", "bbox": {"l": 136.8, "t": 661.15802, "r": 441.59589, "b": 693.9323959999999, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 52, "text": "CRTUSRPRF USRPRF(EMP) PASSWORD() TEXT('Employees Group')", "bbox": {"l": 136.8, "t": 661.15802, "r": 416.63611, "b": 669.93278, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "CRTUSRPRF USRPRF(MGR) PASSWORD() TEXT('Managers Group')", "bbox": {"l": 136.8, "t": 673.15783, "r": 411.65613, "b": 681.93259, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "CRTUSRPRF USRPRF(HR) PASSWORD() TEXT('Human Resources Group')", "bbox": {"l": 136.8, "t": 685.15764, "r": 441.59589, "b": 693.9323959999999, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 38, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.5692443847656, "t": 754.7427978515625, "r": 523.60162, "b": 764.1153564453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9611534476280212, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 38, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6176147460938, "t": 754.3688354492188, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9237489104270935, "cells": [{"id": 1, "text": "23", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "23"}, {"label": "section_header", "id": 2, "page_no": 38, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.25519561767578, "t": 70.19824981689453, "r": 500.5502, "b": 83.69473266601562, "coord_origin": "TOPLEFT"}, "confidence": 0.9652671813964844, "cells": [{"id": 2, "text": "3.6.1", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 93.918098, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Assigning the QIBM_DB_SECADM function ID to the consultants", "bbox": {"l": 97.557877, "t": 71.33471999999995, "r": 500.5502, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "3.6.1 Assigning the QIBM_DB_SECADM function ID to the consultants"}, {"label": "text", "id": 3, "page_no": 38, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.7902069091797, "t": 96.61418914794922, "r": 547.24261, "b": 130.93356323242188, "coord_origin": "TOPLEFT"}, "confidence": 0.967630922794342, "cells": [{"id": 4, "text": "The consultant must have authority to implement RCAC, so you must use one of the function ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 547.24261, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "IDs that are provided in DB2 for i (see 2.1.5, \u201cSecurity Administrator function: ", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 478.6330899999999, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "QIBM_DB_SECADM\u201d on page 9). Complete the following steps:", "bbox": {"l": 136.8, "t": 121.48834000000011, "r": 419.59521, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}]}, "text": "The consultant must have authority to implement RCAC, so you must use one of the function IDs that are provided in DB2 for i (see 2.1.5, \u201cSecurity Administrator function: QIBM_DB_SECADM\u201d on page 9). Complete the following steps:"}, {"label": "list_item", "id": 4, "page_no": 38, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.8, "t": 137.95547485351562, "r": 510.9772300000001, "b": 172.0559844970703, "coord_origin": "TOPLEFT"}, "confidence": 0.9708675146102905, "cells": [{"id": 7, "text": "1.", "bbox": {"l": 136.8, "t": 138.52788999999996, "r": 145.29478, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Run the Change Functional Usage (", "bbox": {"l": 148.12639, "t": 138.52788999999996, "r": 310.60699, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CHGFCNUSG", "bbox": {"l": 310.61993, "t": 138.67731000000003, "r": 355.55945, "b": 147.50189, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": ") CL commands that are shown in ", "bbox": {"l": 355.62021, "t": 138.52788999999996, "r": 507.77319000000006, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Example 3-2. These commands must be run by someone that has the *SECOFR ", "bbox": {"l": 151.20018, "t": 150.52770999999996, "r": 510.9772300000001, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "authority. ", "bbox": {"l": 151.20018, "t": 162.52752999999996, "r": 194.25031, "b": 171.74054, "coord_origin": "TOPLEFT"}}]}, "text": "1. Run the Change Functional Usage ( CHGFCNUSG ) CL commands that are shown in Example 3-2. These commands must be run by someone that has the *SECOFR authority."}, {"label": "caption", "id": 5, "page_no": 38, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.3125762939453, "t": 183.1469268798828, "r": 358.5176696777344, "b": 193.2852325439453, "coord_origin": "TOPLEFT"}, "confidence": 0.8427231907844543, "cells": [{"id": 13, "text": "Example 3-2 Function ID required to implement RCAC", "bbox": {"l": 136.8, "t": 184.51801, "r": 357.83176, "b": 192.84295999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-2 Function ID required to implement RCAC"}, {"label": "text", "id": 6, "page_no": 38, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.8, "t": 201.67809999999997, "r": 441.59589, "b": 222.45270000000005, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 14, "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED)", "bbox": {"l": 136.8, "t": 201.67809999999997, "r": 441.59589, "b": 210.45288000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(MCAIN) USAGE(*ALLOWED)", "bbox": {"l": 136.8, "t": 213.67791999999997, "r": 431.63588999999996, "b": 222.45270000000005, "coord_origin": "TOPLEFT"}}]}, "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED) CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(MCAIN) USAGE(*ALLOWED)"}, {"label": "list_item", "id": 7, "page_no": 38, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 136.02276611328125, "t": 236.57188415527344, "r": 547.28821, "b": 258.8540954589844, "coord_origin": "TOPLEFT"}, "confidence": 0.931101381778717, "cells": [{"id": 16, "text": "2.", "bbox": {"l": 136.8, "t": 237.52814, "r": 145.03545, "b": 246.74114999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "There is a way to discover which user profiles have authorization to implement RCAC. This ", "bbox": {"l": 147.78058, "t": 237.52814, "r": 547.28821, "b": 246.74114999999995, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "can be done by running the SQL statement that is shown in Example 3-3.", "bbox": {"l": 151.20016, "t": 249.52795000000003, "r": 474.92215000000004, "b": 258.74096999999995, "coord_origin": "TOPLEFT"}}]}, "text": "2. There is a way to discover which user profiles have authorization to implement RCAC. This can be done by running the SQL statement that is shown in Example 3-3."}, {"label": "caption", "id": 8, "page_no": 38, "cluster": {"id": 8, "label": "caption", "bbox": {"l": 136.46849060058594, "t": 270.5647277832031, "r": 460.0157775878906, "b": 280.2876892089844, "coord_origin": "TOPLEFT"}, "confidence": 0.8696954846382141, "cells": [{"id": 19, "text": "Example 3-3 Verifying what user profiles have authorization to implement RCAC", "bbox": {"l": 136.8, "t": 271.51801, "r": 459.29779, "b": 279.84295999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-3 Verifying what user profiles have authorization to implement RCAC"}, {"label": "text", "id": 9, "page_no": 38, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.8, "t": 288.67810000000003, "r": 346.67709, "b": 369.45178, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 20, "text": "SELECT", "bbox": {"l": 136.8, "t": 288.67810000000003, "r": 174.27548, "b": 297.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "function_id,", "bbox": {"l": 186.76732, "t": 288.67810000000003, "r": 261.71829, "b": 297.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "user_name,", "bbox": {"l": 169.62816, "t": 300.67792, "r": 251.69853, "b": 309.45270000000005, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "usage,", "bbox": {"l": 174.76752, "t": 312.67773, "r": 231.71878000000004, "b": 321.45251, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "user_type", "bbox": {"l": 170.62109, "t": 324.67755, "r": 246.71854, "b": 333.45233, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "FROM", "bbox": {"l": 136.8, "t": 336.67736999999994, "r": 161.22635, "b": 345.45215, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "qsys2.function_usage", "bbox": {"l": 179.5461, "t": 336.67736999999994, "r": 301.6778, "b": 345.45215, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "WHERE", "bbox": {"l": 136.8, "t": 348.67719000000005, "r": 163.70732, "b": 357.45196999999996, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "function_id =\u2019QIBM_DB_SECADM\u2019", "bbox": {"l": 179.85172, "t": 348.67719000000005, "r": 346.67709, "b": 357.45196999999996, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "ORDER BY", "bbox": {"l": 136.8, "t": 360.677, "r": 182.75941, "b": 369.45178, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "user_name;", "bbox": {"l": 194.24927, "t": 360.677, "r": 251.69853, "b": 369.45178, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT function_id, user_name, usage, user_type FROM qsys2.function_usage WHERE function_id =\u2019QIBM_DB_SECADM\u2019 ORDER BY user_name;"}, {"label": "list_item", "id": 10, "page_no": 38, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.87002563476562, "t": 383.9129638671875, "r": 545.5683, "b": 406.03265380859375, "coord_origin": "TOPLEFT"}, "confidence": 0.9212824106216431, "cells": [{"id": 31, "text": "3.", "bbox": {"l": 136.8, "t": 384.52722, "r": 145.19109, "b": 393.7402, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "The result of the SQL statement is shown in Figure 3-6. In this example, either MCAIN or ", "bbox": {"l": 147.9881, "t": 384.52722, "r": 545.5683, "b": 393.7402, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "HBEDOYA can implement RCAC in the Human Resources database.", "bbox": {"l": 151.20016, "t": 396.52703999999994, "r": 456.21323, "b": 405.74002, "coord_origin": "TOPLEFT"}}]}, "text": "3. The result of the SQL statement is shown in Figure 3-6. In this example, either MCAIN or HBEDOYA can implement RCAC in the Human Resources database."}, {"label": "caption", "id": 11, "page_no": 38, "cluster": {"id": 11, "label": "caption", "bbox": {"l": 136.01937866210938, "t": 467.0556945800781, "r": 307.21844482421875, "b": 477.0780029296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9000418782234192, "cells": [{"id": 34, "text": "Figure 3-6 Result of the function ID query", "bbox": {"l": 136.8, "t": 468.01801, "r": 306.4032, "b": 476.34302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-6 Result of the function ID query"}, {"label": "section_header", "id": 12, "page_no": 38, "cluster": {"id": 12, "label": "section_header", "bbox": {"l": 64.10499572753906, "t": 495.4826965332031, "r": 418.56525, "b": 509.02349853515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9646822810173035, "cells": [{"id": 35, "text": "3.6.2", "bbox": {"l": 64.800003, "t": 496.85464, "r": 93.871941, "b": 508.84262, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Creating group profiles for the users and their roles", "bbox": {"l": 97.50592, "t": 496.85464, "r": 418.56525, "b": 508.84262, "coord_origin": "TOPLEFT"}}]}, "text": "3.6.2 Creating group profiles for the users and their roles"}, {"label": "text", "id": 13, "page_no": 38, "cluster": {"id": 13, "label": "text", "bbox": {"l": 135.9925994873047, "t": 521.9961547851562, "r": 532.93518, "b": 544.3550415039062, "coord_origin": "TOPLEFT"}, "confidence": 0.9723882675170898, "cells": [{"id": 37, "text": "Assuming that all the employees have a valid user profile, the next step is to create group ", "bbox": {"l": 136.8, "t": 523.00864, "r": 532.93518, "b": 532.22162, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "profiles to group the employees. Complete the following steps:", "bbox": {"l": 136.8, "t": 535.00842, "r": 411.17709, "b": 544.22144, "coord_origin": "TOPLEFT"}}]}, "text": "Assuming that all the employees have a valid user profile, the next step is to create group profiles to group the employees. Complete the following steps:"}, {"label": "list_item", "id": 14, "page_no": 38, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 136.8, "t": 551.5098266601562, "r": 357.905, "b": 561.7009887695312, "coord_origin": "TOPLEFT"}, "confidence": 0.9077166318893433, "cells": [{"id": 39, "text": "1.", "bbox": {"l": 136.8, "t": 551.98825, "r": 145.35057, "b": 561.20125, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "In this example, there are three group profiles:", "bbox": {"l": 148.20076, "t": 551.98825, "r": 357.905, "b": 561.20125, "coord_origin": "TOPLEFT"}}]}, "text": "1. In this example, there are three group profiles:"}, {"label": "list_item", "id": 15, "page_no": 38, "cluster": {"id": 15, "label": "list_item", "bbox": {"l": 151.3660430908203, "t": 567.9530639648438, "r": 313.85294, "b": 578.359619140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9419451951980591, "cells": [{"id": 41, "text": "-", "bbox": {"l": 152.03979, "t": 568.96806, "r": 157.56958, "b": 578.18106, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "HR (Human Resource personnel)", "bbox": {"l": 165.59933, "t": 568.96806, "r": 313.85294, "b": 578.18106, "coord_origin": "TOPLEFT"}}]}, "text": "-HR (Human Resource personnel)"}, {"label": "list_item", "id": 16, "page_no": 38, "cluster": {"id": 16, "label": "list_item", "bbox": {"l": 151.38209533691406, "t": 580.20458984375, "r": 242.83118, "b": 590.8248291015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9090039134025574, "cells": [{"id": 43, "text": "-", "bbox": {"l": 152.03979, "t": 580.96786, "r": 157.6154, "b": 590.1808599999999, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "MGR (Managers)", "bbox": {"l": 165.59933, "t": 580.96786, "r": 242.83118, "b": 590.1808599999999, "coord_origin": "TOPLEFT"}}]}, "text": "-MGR (Managers)"}, {"label": "list_item", "id": 17, "page_no": 38, "cluster": {"id": 17, "label": "list_item", "bbox": {"l": 151.16091918945312, "t": 592.0626220703125, "r": 245.60703, "b": 602.3350219726562, "coord_origin": "TOPLEFT"}, "confidence": 0.9277263879776001, "cells": [{"id": 45, "text": "-", "bbox": {"l": 152.03979, "t": 592.96767, "r": 157.60046, "b": 602.18066, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "EMP (Employees)", "bbox": {"l": 165.59933, "t": 592.96767, "r": 245.60703, "b": 602.18066, "coord_origin": "TOPLEFT"}}]}, "text": "-EMP (Employees)"}, {"label": "text", "id": 18, "page_no": 38, "cluster": {"id": 18, "label": "text", "bbox": {"l": 150.5602569580078, "t": 609.2984619140625, "r": 547.29541, "b": 631.7743530273438, "coord_origin": "TOPLEFT"}, "confidence": 0.9484594464302063, "cells": [{"id": 47, "text": "These are created by creating user profiles with no password. Example 3-4 shows the ", "bbox": {"l": 151.20016, "t": 610.0072299999999, "r": 532.71594, "b": 619.22023, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "Create User Profile (", "bbox": {"l": 151.20016, "t": 622.00703, "r": 241.71167, "b": 631.22003, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "CRTUSRPRF", "bbox": {"l": 241.74054, "t": 622.15643, "r": 286.68005, "b": 630.98099, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": ") CL commands that you use to create these group profiles.", "bbox": {"l": 286.68005, "t": 622.00703, "r": 547.29541, "b": 631.22003, "coord_origin": "TOPLEFT"}}]}, "text": "These are created by creating user profiles with no password. Example 3-4 shows the Create User Profile ( CRTUSRPRF ) CL commands that you use to create these group profiles."}, {"label": "caption", "id": 19, "page_no": 38, "cluster": {"id": 19, "label": "caption", "bbox": {"l": 136.35838317871094, "t": 643.2757568359375, "r": 285.8739318847656, "b": 653.2639770507812, "coord_origin": "TOPLEFT"}, "confidence": 0.804556131362915, "cells": [{"id": 51, "text": "Example 3-4 Creating group profiles", "bbox": {"l": 136.8, "t": 643.99789, "r": 285.5574, "b": 652.32291, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-4 Creating group profiles"}, {"label": "text", "id": 20, "page_no": 38, "cluster": {"id": 20, "label": "text", "bbox": {"l": 136.8, "t": 661.15802, "r": 441.59589, "b": 693.9323959999999, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 52, "text": "CRTUSRPRF USRPRF(EMP) PASSWORD() TEXT('Employees Group')", "bbox": {"l": 136.8, "t": 661.15802, "r": 416.63611, "b": 669.93278, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "CRTUSRPRF USRPRF(MGR) PASSWORD() TEXT('Managers Group')", "bbox": {"l": 136.8, "t": 673.15783, "r": 411.65613, "b": 681.93259, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "CRTUSRPRF USRPRF(HR) PASSWORD() TEXT('Human Resources Group')", "bbox": {"l": 136.8, "t": 685.15764, "r": 441.59589, "b": 693.9323959999999, "coord_origin": "TOPLEFT"}}]}, "text": "CRTUSRPRF USRPRF(EMP) PASSWORD() TEXT('Employees Group') CRTUSRPRF USRPRF(MGR) PASSWORD() TEXT('Managers Group') CRTUSRPRF USRPRF(HR) PASSWORD() TEXT('Human Resources Group')"}], "body": [{"label": "section_header", "id": 2, "page_no": 38, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.25519561767578, "t": 70.19824981689453, "r": 500.5502, "b": 83.69473266601562, "coord_origin": "TOPLEFT"}, "confidence": 0.9652671813964844, "cells": [{"id": 2, "text": "3.6.1", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 93.918098, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Assigning the QIBM_DB_SECADM function ID to the consultants", "bbox": {"l": 97.557877, "t": 71.33471999999995, "r": 500.5502, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "3.6.1 Assigning the QIBM_DB_SECADM function ID to the consultants"}, {"label": "text", "id": 3, "page_no": 38, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.7902069091797, "t": 96.61418914794922, "r": 547.24261, "b": 130.93356323242188, "coord_origin": "TOPLEFT"}, "confidence": 0.967630922794342, "cells": [{"id": 4, "text": "The consultant must have authority to implement RCAC, so you must use one of the function ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 547.24261, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "IDs that are provided in DB2 for i (see 2.1.5, \u201cSecurity Administrator function: ", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 478.6330899999999, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "QIBM_DB_SECADM\u201d on page 9). Complete the following steps:", "bbox": {"l": 136.8, "t": 121.48834000000011, "r": 419.59521, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}]}, "text": "The consultant must have authority to implement RCAC, so you must use one of the function IDs that are provided in DB2 for i (see 2.1.5, \u201cSecurity Administrator function: QIBM_DB_SECADM\u201d on page 9). Complete the following steps:"}, {"label": "list_item", "id": 4, "page_no": 38, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.8, "t": 137.95547485351562, "r": 510.9772300000001, "b": 172.0559844970703, "coord_origin": "TOPLEFT"}, "confidence": 0.9708675146102905, "cells": [{"id": 7, "text": "1.", "bbox": {"l": 136.8, "t": 138.52788999999996, "r": 145.29478, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Run the Change Functional Usage (", "bbox": {"l": 148.12639, "t": 138.52788999999996, "r": 310.60699, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CHGFCNUSG", "bbox": {"l": 310.61993, "t": 138.67731000000003, "r": 355.55945, "b": 147.50189, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": ") CL commands that are shown in ", "bbox": {"l": 355.62021, "t": 138.52788999999996, "r": 507.77319000000006, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Example 3-2. These commands must be run by someone that has the *SECOFR ", "bbox": {"l": 151.20018, "t": 150.52770999999996, "r": 510.9772300000001, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "authority. ", "bbox": {"l": 151.20018, "t": 162.52752999999996, "r": 194.25031, "b": 171.74054, "coord_origin": "TOPLEFT"}}]}, "text": "1. Run the Change Functional Usage ( CHGFCNUSG ) CL commands that are shown in Example 3-2. These commands must be run by someone that has the *SECOFR authority."}, {"label": "caption", "id": 5, "page_no": 38, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.3125762939453, "t": 183.1469268798828, "r": 358.5176696777344, "b": 193.2852325439453, "coord_origin": "TOPLEFT"}, "confidence": 0.8427231907844543, "cells": [{"id": 13, "text": "Example 3-2 Function ID required to implement RCAC", "bbox": {"l": 136.8, "t": 184.51801, "r": 357.83176, "b": 192.84295999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-2 Function ID required to implement RCAC"}, {"label": "text", "id": 6, "page_no": 38, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.8, "t": 201.67809999999997, "r": 441.59589, "b": 222.45270000000005, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 14, "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED)", "bbox": {"l": 136.8, "t": 201.67809999999997, "r": 441.59589, "b": 210.45288000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(MCAIN) USAGE(*ALLOWED)", "bbox": {"l": 136.8, "t": 213.67791999999997, "r": 431.63588999999996, "b": 222.45270000000005, "coord_origin": "TOPLEFT"}}]}, "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED) CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(MCAIN) USAGE(*ALLOWED)"}, {"label": "list_item", "id": 7, "page_no": 38, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 136.02276611328125, "t": 236.57188415527344, "r": 547.28821, "b": 258.8540954589844, "coord_origin": "TOPLEFT"}, "confidence": 0.931101381778717, "cells": [{"id": 16, "text": "2.", "bbox": {"l": 136.8, "t": 237.52814, "r": 145.03545, "b": 246.74114999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "There is a way to discover which user profiles have authorization to implement RCAC. This ", "bbox": {"l": 147.78058, "t": 237.52814, "r": 547.28821, "b": 246.74114999999995, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "can be done by running the SQL statement that is shown in Example 3-3.", "bbox": {"l": 151.20016, "t": 249.52795000000003, "r": 474.92215000000004, "b": 258.74096999999995, "coord_origin": "TOPLEFT"}}]}, "text": "2. There is a way to discover which user profiles have authorization to implement RCAC. This can be done by running the SQL statement that is shown in Example 3-3."}, {"label": "caption", "id": 8, "page_no": 38, "cluster": {"id": 8, "label": "caption", "bbox": {"l": 136.46849060058594, "t": 270.5647277832031, "r": 460.0157775878906, "b": 280.2876892089844, "coord_origin": "TOPLEFT"}, "confidence": 0.8696954846382141, "cells": [{"id": 19, "text": "Example 3-3 Verifying what user profiles have authorization to implement RCAC", "bbox": {"l": 136.8, "t": 271.51801, "r": 459.29779, "b": 279.84295999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-3 Verifying what user profiles have authorization to implement RCAC"}, {"label": "text", "id": 9, "page_no": 38, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.8, "t": 288.67810000000003, "r": 346.67709, "b": 369.45178, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 20, "text": "SELECT", "bbox": {"l": 136.8, "t": 288.67810000000003, "r": 174.27548, "b": 297.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "function_id,", "bbox": {"l": 186.76732, "t": 288.67810000000003, "r": 261.71829, "b": 297.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "user_name,", "bbox": {"l": 169.62816, "t": 300.67792, "r": 251.69853, "b": 309.45270000000005, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "usage,", "bbox": {"l": 174.76752, "t": 312.67773, "r": 231.71878000000004, "b": 321.45251, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "user_type", "bbox": {"l": 170.62109, "t": 324.67755, "r": 246.71854, "b": 333.45233, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "FROM", "bbox": {"l": 136.8, "t": 336.67736999999994, "r": 161.22635, "b": 345.45215, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "qsys2.function_usage", "bbox": {"l": 179.5461, "t": 336.67736999999994, "r": 301.6778, "b": 345.45215, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "WHERE", "bbox": {"l": 136.8, "t": 348.67719000000005, "r": 163.70732, "b": 357.45196999999996, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "function_id =\u2019QIBM_DB_SECADM\u2019", "bbox": {"l": 179.85172, "t": 348.67719000000005, "r": 346.67709, "b": 357.45196999999996, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "ORDER BY", "bbox": {"l": 136.8, "t": 360.677, "r": 182.75941, "b": 369.45178, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "user_name;", "bbox": {"l": 194.24927, "t": 360.677, "r": 251.69853, "b": 369.45178, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT function_id, user_name, usage, user_type FROM qsys2.function_usage WHERE function_id =\u2019QIBM_DB_SECADM\u2019 ORDER BY user_name;"}, {"label": "list_item", "id": 10, "page_no": 38, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.87002563476562, "t": 383.9129638671875, "r": 545.5683, "b": 406.03265380859375, "coord_origin": "TOPLEFT"}, "confidence": 0.9212824106216431, "cells": [{"id": 31, "text": "3.", "bbox": {"l": 136.8, "t": 384.52722, "r": 145.19109, "b": 393.7402, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "The result of the SQL statement is shown in Figure 3-6. In this example, either MCAIN or ", "bbox": {"l": 147.9881, "t": 384.52722, "r": 545.5683, "b": 393.7402, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "HBEDOYA can implement RCAC in the Human Resources database.", "bbox": {"l": 151.20016, "t": 396.52703999999994, "r": 456.21323, "b": 405.74002, "coord_origin": "TOPLEFT"}}]}, "text": "3. The result of the SQL statement is shown in Figure 3-6. In this example, either MCAIN or HBEDOYA can implement RCAC in the Human Resources database."}, {"label": "caption", "id": 11, "page_no": 38, "cluster": {"id": 11, "label": "caption", "bbox": {"l": 136.01937866210938, "t": 467.0556945800781, "r": 307.21844482421875, "b": 477.0780029296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9000418782234192, "cells": [{"id": 34, "text": "Figure 3-6 Result of the function ID query", "bbox": {"l": 136.8, "t": 468.01801, "r": 306.4032, "b": 476.34302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-6 Result of the function ID query"}, {"label": "section_header", "id": 12, "page_no": 38, "cluster": {"id": 12, "label": "section_header", "bbox": {"l": 64.10499572753906, "t": 495.4826965332031, "r": 418.56525, "b": 509.02349853515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9646822810173035, "cells": [{"id": 35, "text": "3.6.2", "bbox": {"l": 64.800003, "t": 496.85464, "r": 93.871941, "b": 508.84262, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Creating group profiles for the users and their roles", "bbox": {"l": 97.50592, "t": 496.85464, "r": 418.56525, "b": 508.84262, "coord_origin": "TOPLEFT"}}]}, "text": "3.6.2 Creating group profiles for the users and their roles"}, {"label": "text", "id": 13, "page_no": 38, "cluster": {"id": 13, "label": "text", "bbox": {"l": 135.9925994873047, "t": 521.9961547851562, "r": 532.93518, "b": 544.3550415039062, "coord_origin": "TOPLEFT"}, "confidence": 0.9723882675170898, "cells": [{"id": 37, "text": "Assuming that all the employees have a valid user profile, the next step is to create group ", "bbox": {"l": 136.8, "t": 523.00864, "r": 532.93518, "b": 532.22162, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "profiles to group the employees. Complete the following steps:", "bbox": {"l": 136.8, "t": 535.00842, "r": 411.17709, "b": 544.22144, "coord_origin": "TOPLEFT"}}]}, "text": "Assuming that all the employees have a valid user profile, the next step is to create group profiles to group the employees. Complete the following steps:"}, {"label": "list_item", "id": 14, "page_no": 38, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 136.8, "t": 551.5098266601562, "r": 357.905, "b": 561.7009887695312, "coord_origin": "TOPLEFT"}, "confidence": 0.9077166318893433, "cells": [{"id": 39, "text": "1.", "bbox": {"l": 136.8, "t": 551.98825, "r": 145.35057, "b": 561.20125, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "In this example, there are three group profiles:", "bbox": {"l": 148.20076, "t": 551.98825, "r": 357.905, "b": 561.20125, "coord_origin": "TOPLEFT"}}]}, "text": "1. In this example, there are three group profiles:"}, {"label": "list_item", "id": 15, "page_no": 38, "cluster": {"id": 15, "label": "list_item", "bbox": {"l": 151.3660430908203, "t": 567.9530639648438, "r": 313.85294, "b": 578.359619140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9419451951980591, "cells": [{"id": 41, "text": "-", "bbox": {"l": 152.03979, "t": 568.96806, "r": 157.56958, "b": 578.18106, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "HR (Human Resource personnel)", "bbox": {"l": 165.59933, "t": 568.96806, "r": 313.85294, "b": 578.18106, "coord_origin": "TOPLEFT"}}]}, "text": "-HR (Human Resource personnel)"}, {"label": "list_item", "id": 16, "page_no": 38, "cluster": {"id": 16, "label": "list_item", "bbox": {"l": 151.38209533691406, "t": 580.20458984375, "r": 242.83118, "b": 590.8248291015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9090039134025574, "cells": [{"id": 43, "text": "-", "bbox": {"l": 152.03979, "t": 580.96786, "r": 157.6154, "b": 590.1808599999999, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "MGR (Managers)", "bbox": {"l": 165.59933, "t": 580.96786, "r": 242.83118, "b": 590.1808599999999, "coord_origin": "TOPLEFT"}}]}, "text": "-MGR (Managers)"}, {"label": "list_item", "id": 17, "page_no": 38, "cluster": {"id": 17, "label": "list_item", "bbox": {"l": 151.16091918945312, "t": 592.0626220703125, "r": 245.60703, "b": 602.3350219726562, "coord_origin": "TOPLEFT"}, "confidence": 0.9277263879776001, "cells": [{"id": 45, "text": "-", "bbox": {"l": 152.03979, "t": 592.96767, "r": 157.60046, "b": 602.18066, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "EMP (Employees)", "bbox": {"l": 165.59933, "t": 592.96767, "r": 245.60703, "b": 602.18066, "coord_origin": "TOPLEFT"}}]}, "text": "-EMP (Employees)"}, {"label": "text", "id": 18, "page_no": 38, "cluster": {"id": 18, "label": "text", "bbox": {"l": 150.5602569580078, "t": 609.2984619140625, "r": 547.29541, "b": 631.7743530273438, "coord_origin": "TOPLEFT"}, "confidence": 0.9484594464302063, "cells": [{"id": 47, "text": "These are created by creating user profiles with no password. Example 3-4 shows the ", "bbox": {"l": 151.20016, "t": 610.0072299999999, "r": 532.71594, "b": 619.22023, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "Create User Profile (", "bbox": {"l": 151.20016, "t": 622.00703, "r": 241.71167, "b": 631.22003, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "CRTUSRPRF", "bbox": {"l": 241.74054, "t": 622.15643, "r": 286.68005, "b": 630.98099, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": ") CL commands that you use to create these group profiles.", "bbox": {"l": 286.68005, "t": 622.00703, "r": 547.29541, "b": 631.22003, "coord_origin": "TOPLEFT"}}]}, "text": "These are created by creating user profiles with no password. Example 3-4 shows the Create User Profile ( CRTUSRPRF ) CL commands that you use to create these group profiles."}, {"label": "caption", "id": 19, "page_no": 38, "cluster": {"id": 19, "label": "caption", "bbox": {"l": 136.35838317871094, "t": 643.2757568359375, "r": 285.8739318847656, "b": 653.2639770507812, "coord_origin": "TOPLEFT"}, "confidence": 0.804556131362915, "cells": [{"id": 51, "text": "Example 3-4 Creating group profiles", "bbox": {"l": 136.8, "t": 643.99789, "r": 285.5574, "b": 652.32291, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-4 Creating group profiles"}, {"label": "text", "id": 20, "page_no": 38, "cluster": {"id": 20, "label": "text", "bbox": {"l": 136.8, "t": 661.15802, "r": 441.59589, "b": 693.9323959999999, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 52, "text": "CRTUSRPRF USRPRF(EMP) PASSWORD() TEXT('Employees Group')", "bbox": {"l": 136.8, "t": 661.15802, "r": 416.63611, "b": 669.93278, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "CRTUSRPRF USRPRF(MGR) PASSWORD() TEXT('Managers Group')", "bbox": {"l": 136.8, "t": 673.15783, "r": 411.65613, "b": 681.93259, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "CRTUSRPRF USRPRF(HR) PASSWORD() TEXT('Human Resources Group')", "bbox": {"l": 136.8, "t": 685.15764, "r": 441.59589, "b": 693.9323959999999, "coord_origin": "TOPLEFT"}}]}, "text": "CRTUSRPRF USRPRF(EMP) PASSWORD() TEXT('Employees Group') CRTUSRPRF USRPRF(MGR) PASSWORD() TEXT('Managers Group') CRTUSRPRF USRPRF(HR) PASSWORD() TEXT('Human Resources Group')"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 38, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.5692443847656, "t": 754.7427978515625, "r": 523.60162, "b": 764.1153564453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9611534476280212, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 38, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6176147460938, "t": 754.3688354492188, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9237489104270935, "cells": [{"id": 1, "text": "23", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "23"}]}}, {"page_no": 39, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "24 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "2.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.15074, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "You now must assign users to a group profile. Employees go in to the EMP group profile, ", "bbox": {"l": 147.93431, "t": 71.50867000000005, "r": 544.18408, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Managers go into the MGR group profile, and Human Resource employees go into the HR ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 547.24072, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "group profile. For simplicity, this example selects one employee (DSSMITH), one manager ", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 547.26752, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "(TQSPENSER), and one HR analyst (VGLUCCHESS).", "bbox": {"l": 151.20016, "t": 107.50811999999996, "r": 393.52896, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "3.6.3", "bbox": {"l": 64.800003, "t": 170.33471999999995, "r": 93.988304, "b": 182.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Demonstrating data access without RCAC", "bbox": {"l": 97.636864, "t": 170.33471999999995, "r": 360.16098, "b": 182.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Before implementing RCAC, run some simple SQL statements to demonstrate data access ", "bbox": {"l": 136.8, "t": 196.48870999999997, "r": 540.30652, "b": 205.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "without RCAC. Complete the following steps:", "bbox": {"l": 136.8, "t": 208.48852999999997, "r": 334.59366, "b": 217.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "1.", "bbox": {"l": 136.8, "t": 225.52808000000005, "r": 145.08882, "b": 234.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "The first SQL statement, which is shown in Example 3-5, basically counts the total number ", "bbox": {"l": 147.85175, "t": 225.52808000000005, "r": 547.2157, "b": 234.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "of rows in the EMPLOYEES table.", "bbox": {"l": 151.19917, "t": 237.52788999999996, "r": 301.134, "b": 246.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Example 3-5 Counting the number of employees", "bbox": {"l": 136.8, "t": 259.51801, "r": 334.13672, "b": 267.84295999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "SELECT COUNT(*) as ROW_COUNT FROM HR_SCHEMA.EMPLOYEES;", "bbox": {"l": 136.8, "t": 276.6781, "r": 406.61636, "b": 285.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "The result of this query is shown in Figure 3-7, which is the total number of employees of ", "bbox": {"l": 151.20016, "t": 300.52831999999995, "r": 545.10712, "b": 309.7413, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "the company.", "bbox": {"l": 151.20016, "t": 312.52814000000006, "r": 210.05083, "b": 321.74112, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Figure 3-7 Number of employees", "bbox": {"l": 136.8, "t": 376.21799000000004, "r": 272.65857, "b": 384.54299999999995, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "2.", "bbox": {"l": 136.8, "t": 402.1687299999999, "r": 145.05576, "b": 411.38171, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Run a second SQL statement (shown in Example 3-6) that lists the employees. If you have ", "bbox": {"l": 147.80766, "t": 402.1687299999999, "r": 547.25177, "b": 411.38171, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "read access to the table, you see all the rows no matter who you are.", "bbox": {"l": 151.20016, "t": 414.16855000000004, "r": 455.22919, "b": 423.38153, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Example 3-6 Displaying the information of the Employees", "bbox": {"l": 136.8, "t": 436.21799000000004, "r": 369.315, "b": 444.54299999999995, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "SELECT", "bbox": {"l": 136.8, "t": 453.31812, "r": 171.26956, "b": 462.0929, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "EMPLOYEE_ID,", "bbox": {"l": 182.75941, "t": 453.31812, "r": 251.69853, "b": 462.0929, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "LAST_NAME, ", "bbox": {"l": 166.11162, "t": 465.31793, "r": 246.71854, "b": 474.09271, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "JOB_DESCRIPTION,", "bbox": {"l": 163.77567, "t": 477.31775, "r": 271.67828, "b": 486.09253, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "DATE_OF_BIRTH,", "bbox": {"l": 164.55962, "t": 489.31757, "r": 261.71829, "b": 498.09235, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "TAX_ID,", "bbox": {"l": 169.505, "t": 501.31738, "r": 226.73877000000002, "b": 510.09216, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "USER_ID,", "bbox": {"l": 168.43959, "t": 513.3172, "r": 231.71878000000004, "b": 522.0919799999999, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "MANAGER_OF_EMPLOYEE", "bbox": {"l": 162.86575, "t": 525.31702, "r": 286.67804, "b": 534.0917999999999, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " FROM", "bbox": {"l": 136.8, "t": 537.31683, "r": 164.55519, "b": 546.09158, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "HR_SCHEMA.EMPLOYEES", "bbox": {"l": 181.20831, "t": 537.31683, "r": 286.67804, "b": 546.09158, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Note:", "bbox": {"l": 157.2, "t": 135.52855999999997, "r": 182.73245, "b": 144.74158, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": " Neither of the consultants (MCAIN and HBEDOYA) belong to any group profile.", "bbox": {"l": 182.76035, "t": 135.52855999999997, "r": 533.43896, "b": 144.74158, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.88653564453125, "t": 754.3186645507812, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9114106297492981, "cells": [{"id": 0, "text": "24 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.27753448486328, "t": 754.6685180664062, "r": 334.42142, "b": 763.9840087890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9486663937568665, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 136.0978240966797, "t": 70.40028381347656, "r": 547.26752, "b": 117.03543853759766, "coord_origin": "TOPLEFT"}, "confidence": 0.9766601324081421, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.15074, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "You now must assign users to a group profile. Employees go in to the EMP group profile, ", "bbox": {"l": 147.93431, "t": 71.50867000000005, "r": 544.18408, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Managers go into the MGR group profile, and Human Resource employees go into the HR ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 547.24072, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "group profile. For simplicity, this example selects one employee (DSSMITH), one manager ", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 547.26752, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "(TQSPENSER), and one HR analyst (VGLUCCHESS).", "bbox": {"l": 151.20016, "t": 107.50811999999996, "r": 393.52896, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "section_header", "bbox": {"l": 64.17131805419922, "t": 168.79916381835938, "r": 360.16098, "b": 182.6798553466797, "coord_origin": "TOPLEFT"}, "confidence": 0.961124837398529, "cells": [{"id": 7, "text": "3.6.3", "bbox": {"l": 64.800003, "t": 170.33471999999995, "r": 93.988304, "b": 182.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Demonstrating data access without RCAC", "bbox": {"l": 97.636864, "t": 170.33471999999995, "r": 360.16098, "b": 182.32275000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 136.1033477783203, "t": 195.17257690429688, "r": 540.30652, "b": 217.70154000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.953971803188324, "cells": [{"id": 9, "text": "Before implementing RCAC, run some simple SQL statements to demonstrate data access ", "bbox": {"l": 136.8, "t": 196.48870999999997, "r": 540.30652, "b": 205.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "without RCAC. Complete the following steps:", "bbox": {"l": 136.8, "t": 208.48852999999997, "r": 334.59366, "b": 217.70154000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 136.76841735839844, "t": 224.45919799804688, "r": 547.2157, "b": 246.74090999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9609369039535522, "cells": [{"id": 11, "text": "1.", "bbox": {"l": 136.8, "t": 225.52808000000005, "r": 145.08882, "b": 234.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "The first SQL statement, which is shown in Example 3-5, basically counts the total number ", "bbox": {"l": 147.85175, "t": 225.52808000000005, "r": 547.2157, "b": 234.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "of rows in the EMPLOYEES table.", "bbox": {"l": 151.19917, "t": 237.52788999999996, "r": 301.134, "b": 246.74090999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "caption", "bbox": {"l": 136.413330078125, "t": 258.6246643066406, "r": 334.6294250488281, "b": 268.3210754394531, "coord_origin": "TOPLEFT"}, "confidence": 0.6967653632164001, "cells": [{"id": 14, "text": "Example 3-5 Counting the number of employees", "bbox": {"l": 136.8, "t": 259.51801, "r": 334.13672, "b": 267.84295999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 136.42640686035156, "t": 275.64599609375, "r": 406.61636, "b": 286.7776184082031, "coord_origin": "TOPLEFT"}, "confidence": 0.6531516313552856, "cells": [{"id": 15, "text": "SELECT COUNT(*) as ROW_COUNT FROM HR_SCHEMA.EMPLOYEES;", "bbox": {"l": 136.8, "t": 276.6781, "r": 406.61636, "b": 285.45287999999994, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 150.4588623046875, "t": 299.9428405761719, "r": 545.10712, "b": 322.47479248046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9646008610725403, "cells": [{"id": 16, "text": "The result of this query is shown in Figure 3-7, which is the total number of employees of ", "bbox": {"l": 151.20016, "t": 300.52831999999995, "r": 545.10712, "b": 309.7413, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "the company.", "bbox": {"l": 151.20016, "t": 312.52814000000006, "r": 210.05083, "b": 321.74112, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "caption", "bbox": {"l": 136.30203247070312, "t": 375.2716369628906, "r": 272.9559326171875, "b": 384.7872009277344, "coord_origin": "TOPLEFT"}, "confidence": 0.7269786596298218, "cells": [{"id": 18, "text": "Figure 3-7 Number of employees", "bbox": {"l": 136.8, "t": 376.21799000000004, "r": 272.65857, "b": 384.54299999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 136.12722778320312, "t": 401.2595520019531, "r": 547.25177, "b": 423.76806640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9607868790626526, "cells": [{"id": 19, "text": "2.", "bbox": {"l": 136.8, "t": 402.1687299999999, "r": 145.05576, "b": 411.38171, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Run a second SQL statement (shown in Example 3-6) that lists the employees. If you have ", "bbox": {"l": 147.80766, "t": 402.1687299999999, "r": 547.25177, "b": 411.38171, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "read access to the table, you see all the rows no matter who you are.", "bbox": {"l": 151.20016, "t": 414.16855000000004, "r": 455.22919, "b": 423.38153, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "caption", "bbox": {"l": 136.4648895263672, "t": 435.44384765625, "r": 369.71875, "b": 444.9762268066406, "coord_origin": "TOPLEFT"}, "confidence": 0.7871338725090027, "cells": [{"id": 22, "text": "Example 3-6 Displaying the information of the Employees", "bbox": {"l": 136.8, "t": 436.21799000000004, "r": 369.315, "b": 444.54299999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 136.8, "t": 453.31812, "r": 286.67804, "b": 546.09158, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 23, "text": "SELECT", "bbox": {"l": 136.8, "t": 453.31812, "r": 171.26956, "b": 462.0929, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "EMPLOYEE_ID,", "bbox": {"l": 182.75941, "t": 453.31812, "r": 251.69853, "b": 462.0929, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "LAST_NAME, ", "bbox": {"l": 166.11162, "t": 465.31793, "r": 246.71854, "b": 474.09271, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "JOB_DESCRIPTION,", "bbox": {"l": 163.77567, "t": 477.31775, "r": 271.67828, "b": 486.09253, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "DATE_OF_BIRTH,", "bbox": {"l": 164.55962, "t": 489.31757, "r": 261.71829, "b": 498.09235, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "TAX_ID,", "bbox": {"l": 169.505, "t": 501.31738, "r": 226.73877000000002, "b": 510.09216, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "USER_ID,", "bbox": {"l": 168.43959, "t": 513.3172, "r": 231.71878000000004, "b": 522.0919799999999, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "MANAGER_OF_EMPLOYEE", "bbox": {"l": 162.86575, "t": 525.31702, "r": 286.67804, "b": 534.0917999999999, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " FROM", "bbox": {"l": 136.8, "t": 537.31683, "r": 164.55519, "b": 546.09158, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "HR_SCHEMA.EMPLOYEES", "bbox": {"l": 181.20831, "t": 537.31683, "r": 286.67804, "b": 546.09158, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 156.851318359375, "t": 134.62420654296875, "r": 533.43896, "b": 145.3269805908203, "coord_origin": "TOPLEFT"}, "confidence": 0.901655912399292, "cells": [{"id": 33, "text": "Note:", "bbox": {"l": 157.2, "t": 135.52855999999997, "r": 182.73245, "b": 144.74158, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": " Neither of the consultants (MCAIN and HBEDOYA) belong to any group profile.", "bbox": {"l": 182.76035, "t": 135.52855999999997, "r": 533.43896, "b": 144.74158, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "picture", "bbox": {"l": 136.4460906982422, "t": 337.62408447265625, "r": 227.48138427734375, "b": 370.2557067871094, "coord_origin": "TOPLEFT"}, "confidence": 0.6461378931999207, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 39, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.88653564453125, "t": 754.3186645507812, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9114106297492981, "cells": [{"id": 0, "text": "24 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "24"}, {"label": "page_footer", "id": 1, "page_no": 39, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.27753448486328, "t": 754.6685180664062, "r": 334.42142, "b": 763.9840087890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9486663937568665, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "list_item", "id": 2, "page_no": 39, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.0978240966797, "t": 70.40028381347656, "r": 547.26752, "b": 117.03543853759766, "coord_origin": "TOPLEFT"}, "confidence": 0.9766601324081421, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.15074, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "You now must assign users to a group profile. Employees go in to the EMP group profile, ", "bbox": {"l": 147.93431, "t": 71.50867000000005, "r": 544.18408, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Managers go into the MGR group profile, and Human Resource employees go into the HR ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 547.24072, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "group profile. For simplicity, this example selects one employee (DSSMITH), one manager ", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 547.26752, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "(TQSPENSER), and one HR analyst (VGLUCCHESS).", "bbox": {"l": 151.20016, "t": 107.50811999999996, "r": 393.52896, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "2. You now must assign users to a group profile. Employees go in to the EMP group profile, Managers go into the MGR group profile, and Human Resource employees go into the HR group profile. For simplicity, this example selects one employee (DSSMITH), one manager (TQSPENSER), and one HR analyst (VGLUCCHESS)."}, {"label": "section_header", "id": 3, "page_no": 39, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 64.17131805419922, "t": 168.79916381835938, "r": 360.16098, "b": 182.6798553466797, "coord_origin": "TOPLEFT"}, "confidence": 0.961124837398529, "cells": [{"id": 7, "text": "3.6.3", "bbox": {"l": 64.800003, "t": 170.33471999999995, "r": 93.988304, "b": 182.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Demonstrating data access without RCAC", "bbox": {"l": 97.636864, "t": 170.33471999999995, "r": 360.16098, "b": 182.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "3.6.3 Demonstrating data access without RCAC"}, {"label": "text", "id": 4, "page_no": 39, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.1033477783203, "t": 195.17257690429688, "r": 540.30652, "b": 217.70154000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.953971803188324, "cells": [{"id": 9, "text": "Before implementing RCAC, run some simple SQL statements to demonstrate data access ", "bbox": {"l": 136.8, "t": 196.48870999999997, "r": 540.30652, "b": 205.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "without RCAC. Complete the following steps:", "bbox": {"l": 136.8, "t": 208.48852999999997, "r": 334.59366, "b": 217.70154000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Before implementing RCAC, run some simple SQL statements to demonstrate data access without RCAC. Complete the following steps:"}, {"label": "list_item", "id": 5, "page_no": 39, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 136.76841735839844, "t": 224.45919799804688, "r": 547.2157, "b": 246.74090999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9609369039535522, "cells": [{"id": 11, "text": "1.", "bbox": {"l": 136.8, "t": 225.52808000000005, "r": 145.08882, "b": 234.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "The first SQL statement, which is shown in Example 3-5, basically counts the total number ", "bbox": {"l": 147.85175, "t": 225.52808000000005, "r": 547.2157, "b": 234.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "of rows in the EMPLOYEES table.", "bbox": {"l": 151.19917, "t": 237.52788999999996, "r": 301.134, "b": 246.74090999999999, "coord_origin": "TOPLEFT"}}]}, "text": "1. The first SQL statement, which is shown in Example 3-5, basically counts the total number of rows in the EMPLOYEES table."}, {"label": "caption", "id": 6, "page_no": 39, "cluster": {"id": 6, "label": "caption", "bbox": {"l": 136.413330078125, "t": 258.6246643066406, "r": 334.6294250488281, "b": 268.3210754394531, "coord_origin": "TOPLEFT"}, "confidence": 0.6967653632164001, "cells": [{"id": 14, "text": "Example 3-5 Counting the number of employees", "bbox": {"l": 136.8, "t": 259.51801, "r": 334.13672, "b": 267.84295999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-5 Counting the number of employees"}, {"label": "text", "id": 7, "page_no": 39, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.42640686035156, "t": 275.64599609375, "r": 406.61636, "b": 286.7776184082031, "coord_origin": "TOPLEFT"}, "confidence": 0.6531516313552856, "cells": [{"id": 15, "text": "SELECT COUNT(*) as ROW_COUNT FROM HR_SCHEMA.EMPLOYEES;", "bbox": {"l": 136.8, "t": 276.6781, "r": 406.61636, "b": 285.45287999999994, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT COUNT(*) as ROW_COUNT FROM HR_SCHEMA.EMPLOYEES;"}, {"label": "text", "id": 8, "page_no": 39, "cluster": {"id": 8, "label": "text", "bbox": {"l": 150.4588623046875, "t": 299.9428405761719, "r": 545.10712, "b": 322.47479248046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9646008610725403, "cells": [{"id": 16, "text": "The result of this query is shown in Figure 3-7, which is the total number of employees of ", "bbox": {"l": 151.20016, "t": 300.52831999999995, "r": 545.10712, "b": 309.7413, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "the company.", "bbox": {"l": 151.20016, "t": 312.52814000000006, "r": 210.05083, "b": 321.74112, "coord_origin": "TOPLEFT"}}]}, "text": "The result of this query is shown in Figure 3-7, which is the total number of employees of the company."}, {"label": "caption", "id": 9, "page_no": 39, "cluster": {"id": 9, "label": "caption", "bbox": {"l": 136.30203247070312, "t": 375.2716369628906, "r": 272.9559326171875, "b": 384.7872009277344, "coord_origin": "TOPLEFT"}, "confidence": 0.7269786596298218, "cells": [{"id": 18, "text": "Figure 3-7 Number of employees", "bbox": {"l": 136.8, "t": 376.21799000000004, "r": 272.65857, "b": 384.54299999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-7 Number of employees"}, {"label": "list_item", "id": 10, "page_no": 39, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 136.12722778320312, "t": 401.2595520019531, "r": 547.25177, "b": 423.76806640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9607868790626526, "cells": [{"id": 19, "text": "2.", "bbox": {"l": 136.8, "t": 402.1687299999999, "r": 145.05576, "b": 411.38171, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Run a second SQL statement (shown in Example 3-6) that lists the employees. If you have ", "bbox": {"l": 147.80766, "t": 402.1687299999999, "r": 547.25177, "b": 411.38171, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "read access to the table, you see all the rows no matter who you are.", "bbox": {"l": 151.20016, "t": 414.16855000000004, "r": 455.22919, "b": 423.38153, "coord_origin": "TOPLEFT"}}]}, "text": "2. Run a second SQL statement (shown in Example 3-6) that lists the employees. If you have read access to the table, you see all the rows no matter who you are."}, {"label": "caption", "id": 11, "page_no": 39, "cluster": {"id": 11, "label": "caption", "bbox": {"l": 136.4648895263672, "t": 435.44384765625, "r": 369.71875, "b": 444.9762268066406, "coord_origin": "TOPLEFT"}, "confidence": 0.7871338725090027, "cells": [{"id": 22, "text": "Example 3-6 Displaying the information of the Employees", "bbox": {"l": 136.8, "t": 436.21799000000004, "r": 369.315, "b": 444.54299999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-6 Displaying the information of the Employees"}, {"label": "text", "id": 12, "page_no": 39, "cluster": {"id": 12, "label": "text", "bbox": {"l": 136.8, "t": 453.31812, "r": 286.67804, "b": 546.09158, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 23, "text": "SELECT", "bbox": {"l": 136.8, "t": 453.31812, "r": 171.26956, "b": 462.0929, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "EMPLOYEE_ID,", "bbox": {"l": 182.75941, "t": 453.31812, "r": 251.69853, "b": 462.0929, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "LAST_NAME, ", "bbox": {"l": 166.11162, "t": 465.31793, "r": 246.71854, "b": 474.09271, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "JOB_DESCRIPTION,", "bbox": {"l": 163.77567, "t": 477.31775, "r": 271.67828, "b": 486.09253, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "DATE_OF_BIRTH,", "bbox": {"l": 164.55962, "t": 489.31757, "r": 261.71829, "b": 498.09235, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "TAX_ID,", "bbox": {"l": 169.505, "t": 501.31738, "r": 226.73877000000002, "b": 510.09216, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "USER_ID,", "bbox": {"l": 168.43959, "t": 513.3172, "r": 231.71878000000004, "b": 522.0919799999999, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "MANAGER_OF_EMPLOYEE", "bbox": {"l": 162.86575, "t": 525.31702, "r": 286.67804, "b": 534.0917999999999, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " FROM", "bbox": {"l": 136.8, "t": 537.31683, "r": 164.55519, "b": 546.09158, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "HR_SCHEMA.EMPLOYEES", "bbox": {"l": 181.20831, "t": 537.31683, "r": 286.67804, "b": 546.09158, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT EMPLOYEE_ID, LAST_NAME, JOB_DESCRIPTION, DATE_OF_BIRTH, TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE FROM HR_SCHEMA.EMPLOYEES"}, {"label": "text", "id": 13, "page_no": 39, "cluster": {"id": 13, "label": "text", "bbox": {"l": 156.851318359375, "t": 134.62420654296875, "r": 533.43896, "b": 145.3269805908203, "coord_origin": "TOPLEFT"}, "confidence": 0.901655912399292, "cells": [{"id": 33, "text": "Note:", "bbox": {"l": 157.2, "t": 135.52855999999997, "r": 182.73245, "b": 144.74158, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": " Neither of the consultants (MCAIN and HBEDOYA) belong to any group profile.", "bbox": {"l": 182.76035, "t": 135.52855999999997, "r": 533.43896, "b": 144.74158, "coord_origin": "TOPLEFT"}}]}, "text": "Note: Neither of the consultants (MCAIN and HBEDOYA) belong to any group profile."}, {"label": "picture", "id": 14, "page_no": 39, "cluster": {"id": 14, "label": "picture", "bbox": {"l": 136.4460906982422, "t": 337.62408447265625, "r": 227.48138427734375, "b": 370.2557067871094, "coord_origin": "TOPLEFT"}, "confidence": 0.6461378931999207, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 39, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.0978240966797, "t": 70.40028381347656, "r": 547.26752, "b": 117.03543853759766, "coord_origin": "TOPLEFT"}, "confidence": 0.9766601324081421, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.15074, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "You now must assign users to a group profile. Employees go in to the EMP group profile, ", "bbox": {"l": 147.93431, "t": 71.50867000000005, "r": 544.18408, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Managers go into the MGR group profile, and Human Resource employees go into the HR ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 547.24072, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "group profile. For simplicity, this example selects one employee (DSSMITH), one manager ", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 547.26752, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "(TQSPENSER), and one HR analyst (VGLUCCHESS).", "bbox": {"l": 151.20016, "t": 107.50811999999996, "r": 393.52896, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "2. You now must assign users to a group profile. Employees go in to the EMP group profile, Managers go into the MGR group profile, and Human Resource employees go into the HR group profile. For simplicity, this example selects one employee (DSSMITH), one manager (TQSPENSER), and one HR analyst (VGLUCCHESS)."}, {"label": "section_header", "id": 3, "page_no": 39, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 64.17131805419922, "t": 168.79916381835938, "r": 360.16098, "b": 182.6798553466797, "coord_origin": "TOPLEFT"}, "confidence": 0.961124837398529, "cells": [{"id": 7, "text": "3.6.3", "bbox": {"l": 64.800003, "t": 170.33471999999995, "r": 93.988304, "b": 182.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Demonstrating data access without RCAC", "bbox": {"l": 97.636864, "t": 170.33471999999995, "r": 360.16098, "b": 182.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "3.6.3 Demonstrating data access without RCAC"}, {"label": "text", "id": 4, "page_no": 39, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.1033477783203, "t": 195.17257690429688, "r": 540.30652, "b": 217.70154000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.953971803188324, "cells": [{"id": 9, "text": "Before implementing RCAC, run some simple SQL statements to demonstrate data access ", "bbox": {"l": 136.8, "t": 196.48870999999997, "r": 540.30652, "b": 205.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "without RCAC. Complete the following steps:", "bbox": {"l": 136.8, "t": 208.48852999999997, "r": 334.59366, "b": 217.70154000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Before implementing RCAC, run some simple SQL statements to demonstrate data access without RCAC. Complete the following steps:"}, {"label": "list_item", "id": 5, "page_no": 39, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 136.76841735839844, "t": 224.45919799804688, "r": 547.2157, "b": 246.74090999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9609369039535522, "cells": [{"id": 11, "text": "1.", "bbox": {"l": 136.8, "t": 225.52808000000005, "r": 145.08882, "b": 234.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "The first SQL statement, which is shown in Example 3-5, basically counts the total number ", "bbox": {"l": 147.85175, "t": 225.52808000000005, "r": 547.2157, "b": 234.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "of rows in the EMPLOYEES table.", "bbox": {"l": 151.19917, "t": 237.52788999999996, "r": 301.134, "b": 246.74090999999999, "coord_origin": "TOPLEFT"}}]}, "text": "1. The first SQL statement, which is shown in Example 3-5, basically counts the total number of rows in the EMPLOYEES table."}, {"label": "caption", "id": 6, "page_no": 39, "cluster": {"id": 6, "label": "caption", "bbox": {"l": 136.413330078125, "t": 258.6246643066406, "r": 334.6294250488281, "b": 268.3210754394531, "coord_origin": "TOPLEFT"}, "confidence": 0.6967653632164001, "cells": [{"id": 14, "text": "Example 3-5 Counting the number of employees", "bbox": {"l": 136.8, "t": 259.51801, "r": 334.13672, "b": 267.84295999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-5 Counting the number of employees"}, {"label": "text", "id": 7, "page_no": 39, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.42640686035156, "t": 275.64599609375, "r": 406.61636, "b": 286.7776184082031, "coord_origin": "TOPLEFT"}, "confidence": 0.6531516313552856, "cells": [{"id": 15, "text": "SELECT COUNT(*) as ROW_COUNT FROM HR_SCHEMA.EMPLOYEES;", "bbox": {"l": 136.8, "t": 276.6781, "r": 406.61636, "b": 285.45287999999994, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT COUNT(*) as ROW_COUNT FROM HR_SCHEMA.EMPLOYEES;"}, {"label": "text", "id": 8, "page_no": 39, "cluster": {"id": 8, "label": "text", "bbox": {"l": 150.4588623046875, "t": 299.9428405761719, "r": 545.10712, "b": 322.47479248046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9646008610725403, "cells": [{"id": 16, "text": "The result of this query is shown in Figure 3-7, which is the total number of employees of ", "bbox": {"l": 151.20016, "t": 300.52831999999995, "r": 545.10712, "b": 309.7413, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "the company.", "bbox": {"l": 151.20016, "t": 312.52814000000006, "r": 210.05083, "b": 321.74112, "coord_origin": "TOPLEFT"}}]}, "text": "The result of this query is shown in Figure 3-7, which is the total number of employees of the company."}, {"label": "caption", "id": 9, "page_no": 39, "cluster": {"id": 9, "label": "caption", "bbox": {"l": 136.30203247070312, "t": 375.2716369628906, "r": 272.9559326171875, "b": 384.7872009277344, "coord_origin": "TOPLEFT"}, "confidence": 0.7269786596298218, "cells": [{"id": 18, "text": "Figure 3-7 Number of employees", "bbox": {"l": 136.8, "t": 376.21799000000004, "r": 272.65857, "b": 384.54299999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-7 Number of employees"}, {"label": "list_item", "id": 10, "page_no": 39, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 136.12722778320312, "t": 401.2595520019531, "r": 547.25177, "b": 423.76806640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9607868790626526, "cells": [{"id": 19, "text": "2.", "bbox": {"l": 136.8, "t": 402.1687299999999, "r": 145.05576, "b": 411.38171, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Run a second SQL statement (shown in Example 3-6) that lists the employees. If you have ", "bbox": {"l": 147.80766, "t": 402.1687299999999, "r": 547.25177, "b": 411.38171, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "read access to the table, you see all the rows no matter who you are.", "bbox": {"l": 151.20016, "t": 414.16855000000004, "r": 455.22919, "b": 423.38153, "coord_origin": "TOPLEFT"}}]}, "text": "2. Run a second SQL statement (shown in Example 3-6) that lists the employees. If you have read access to the table, you see all the rows no matter who you are."}, {"label": "caption", "id": 11, "page_no": 39, "cluster": {"id": 11, "label": "caption", "bbox": {"l": 136.4648895263672, "t": 435.44384765625, "r": 369.71875, "b": 444.9762268066406, "coord_origin": "TOPLEFT"}, "confidence": 0.7871338725090027, "cells": [{"id": 22, "text": "Example 3-6 Displaying the information of the Employees", "bbox": {"l": 136.8, "t": 436.21799000000004, "r": 369.315, "b": 444.54299999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-6 Displaying the information of the Employees"}, {"label": "text", "id": 12, "page_no": 39, "cluster": {"id": 12, "label": "text", "bbox": {"l": 136.8, "t": 453.31812, "r": 286.67804, "b": 546.09158, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 23, "text": "SELECT", "bbox": {"l": 136.8, "t": 453.31812, "r": 171.26956, "b": 462.0929, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "EMPLOYEE_ID,", "bbox": {"l": 182.75941, "t": 453.31812, "r": 251.69853, "b": 462.0929, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "LAST_NAME, ", "bbox": {"l": 166.11162, "t": 465.31793, "r": 246.71854, "b": 474.09271, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "JOB_DESCRIPTION,", "bbox": {"l": 163.77567, "t": 477.31775, "r": 271.67828, "b": 486.09253, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "DATE_OF_BIRTH,", "bbox": {"l": 164.55962, "t": 489.31757, "r": 261.71829, "b": 498.09235, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "TAX_ID,", "bbox": {"l": 169.505, "t": 501.31738, "r": 226.73877000000002, "b": 510.09216, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "USER_ID,", "bbox": {"l": 168.43959, "t": 513.3172, "r": 231.71878000000004, "b": 522.0919799999999, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "MANAGER_OF_EMPLOYEE", "bbox": {"l": 162.86575, "t": 525.31702, "r": 286.67804, "b": 534.0917999999999, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " FROM", "bbox": {"l": 136.8, "t": 537.31683, "r": 164.55519, "b": 546.09158, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "HR_SCHEMA.EMPLOYEES", "bbox": {"l": 181.20831, "t": 537.31683, "r": 286.67804, "b": 546.09158, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT EMPLOYEE_ID, LAST_NAME, JOB_DESCRIPTION, DATE_OF_BIRTH, TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE FROM HR_SCHEMA.EMPLOYEES"}, {"label": "text", "id": 13, "page_no": 39, "cluster": {"id": 13, "label": "text", "bbox": {"l": 156.851318359375, "t": 134.62420654296875, "r": 533.43896, "b": 145.3269805908203, "coord_origin": "TOPLEFT"}, "confidence": 0.901655912399292, "cells": [{"id": 33, "text": "Note:", "bbox": {"l": 157.2, "t": 135.52855999999997, "r": 182.73245, "b": 144.74158, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": " Neither of the consultants (MCAIN and HBEDOYA) belong to any group profile.", "bbox": {"l": 182.76035, "t": 135.52855999999997, "r": 533.43896, "b": 144.74158, "coord_origin": "TOPLEFT"}}]}, "text": "Note: Neither of the consultants (MCAIN and HBEDOYA) belong to any group profile."}, {"label": "picture", "id": 14, "page_no": 39, "cluster": {"id": 14, "label": "picture", "bbox": {"l": 136.4460906982422, "t": 337.62408447265625, "r": 227.48138427734375, "b": 370.2557067871094, "coord_origin": "TOPLEFT"}, "confidence": 0.6461378931999207, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 39, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.88653564453125, "t": 754.3186645507812, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9114106297492981, "cells": [{"id": 0, "text": "24 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "24"}, {"label": "page_footer", "id": 1, "page_no": 39, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.27753448486328, "t": 754.6685180664062, "r": 334.42142, "b": 763.9840087890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9486663937568665, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 40, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "25", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "The result of this query is shown in Figure 3-8.", "bbox": {"l": 151.19977, "t": 71.50903000000005, "r": 356.2522, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 3-8 List of employees without RCAC enabled", "bbox": {"l": 64.800003, "t": 471.61798, "r": 275.62769, "b": 479.94299, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "3.6.4", "bbox": {"l": 64.800003, "t": 500.45462, "r": 94.008797, "b": 512.4426000000001, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Defining and creating row permissions", "bbox": {"l": 97.659912, "t": 500.45462, "r": 339.95895, "b": 512.4426000000001, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Implement RCAC on the EMPLOYEES table by completing the following steps:", "bbox": {"l": 136.8, "t": 526.60861, "r": 484.33429, "b": 535.82159, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "1.", "bbox": {"l": 136.80002, "t": 543.58842, "r": 145.20392, "b": 552.80142, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Start by defining a row permission. In this example, the rules to enforce include the ", "bbox": {"l": 148.00522, "t": 543.58842, "r": 519.3288, "b": 552.80142, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "following ones:", "bbox": {"l": 151.20018, "t": 555.5882300000001, "r": 216.83159000000003, "b": 564.8012200000001, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "-", "bbox": {"l": 152.03981, "t": 572.62779, "r": 157.57359, "b": 581.84079, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Human Resources employees can see all the rows.", "bbox": {"l": 165.59937, "t": 572.62779, "r": 392.51511, "b": 581.84079, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "-", "bbox": {"l": 152.03981, "t": 584.6275899999999, "r": 157.60745, "b": 593.84059, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Managers can see only information for the employees that they manage.", "bbox": {"l": 165.59935, "t": 584.6275899999999, "r": 484.94476000000003, "b": 593.84059, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "-", "bbox": {"l": 152.03981, "t": 596.6274, "r": 157.60446, "b": 605.8403900000001, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Employees can see only their own information.", "bbox": {"l": 165.59935, "t": 596.6274, "r": 371.57324, "b": 605.8403900000001, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "-", "bbox": {"l": 152.03981, "t": 608.6272, "r": 157.56662, "b": 617.84019, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Consultants are not allowed to see any rows in the table.", "bbox": {"l": 165.59937, "t": 608.6272, "r": 415.18304, "b": 617.84019, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 344.6938781738281, "t": 754.8302612304688, "r": 523.60162, "b": 764.0167236328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9586459994316101, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.7025146484375, "t": 754.375244140625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9186720848083496, "cells": [{"id": 1, "text": "25", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 150.51434326171875, "t": 70.7142562866211, "r": 356.2522, "b": 81.25257873535156, "coord_origin": "TOPLEFT"}, "confidence": 0.7506248354911804, "cells": [{"id": 2, "text": "The result of this query is shown in Figure 3-8.", "bbox": {"l": 151.19977, "t": 71.50903000000005, "r": 356.2522, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.24310302734375, "t": 470.6240539550781, "r": 276.3370361328125, "b": 479.94299, "coord_origin": "TOPLEFT"}, "confidence": 0.927272617816925, "cells": [{"id": 3, "text": "Figure 3-8 List of employees without RCAC enabled", "bbox": {"l": 64.800003, "t": 471.61798, "r": 275.62769, "b": 479.94299, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 64.31729888916016, "t": 499.6622314453125, "r": 339.95895, "b": 513.0746459960938, "coord_origin": "TOPLEFT"}, "confidence": 0.9666332602500916, "cells": [{"id": 4, "text": "3.6.4", "bbox": {"l": 64.800003, "t": 500.45462, "r": 94.008797, "b": 512.4426000000001, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Defining and creating row permissions", "bbox": {"l": 97.659912, "t": 500.45462, "r": 339.95895, "b": 512.4426000000001, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.47174072265625, "t": 526.1157836914062, "r": 484.33429, "b": 536.0692749023438, "coord_origin": "TOPLEFT"}, "confidence": 0.920616090297699, "cells": [{"id": 6, "text": "Implement RCAC on the EMPLOYEES table by completing the following steps:", "bbox": {"l": 136.8, "t": 526.60861, "r": 484.33429, "b": 535.82159, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 136.80002, "t": 542.7721557617188, "r": 519.3288, "b": 565.2183837890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9658254981040955, "cells": [{"id": 7, "text": "1.", "bbox": {"l": 136.80002, "t": 543.58842, "r": 145.20392, "b": 552.80142, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Start by defining a row permission. In this example, the rules to enforce include the ", "bbox": {"l": 148.00522, "t": 543.58842, "r": 519.3288, "b": 552.80142, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "following ones:", "bbox": {"l": 151.20018, "t": 555.5882300000001, "r": 216.83159000000003, "b": 564.8012200000001, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 151.23526000976562, "t": 572.105712890625, "r": 392.51511, "b": 582.262939453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9449333548545837, "cells": [{"id": 10, "text": "-", "bbox": {"l": 152.03981, "t": 572.62779, "r": 157.57359, "b": 581.84079, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Human Resources employees can see all the rows.", "bbox": {"l": 165.59937, "t": 572.62779, "r": 392.51511, "b": 581.84079, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 151.32948303222656, "t": 584.3190307617188, "r": 484.94476000000003, "b": 594.1929931640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9476761221885681, "cells": [{"id": 12, "text": "-", "bbox": {"l": 152.03981, "t": 584.6275899999999, "r": 157.60745, "b": 593.84059, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Managers can see only information for the employees that they manage.", "bbox": {"l": 165.59935, "t": 584.6275899999999, "r": 484.94476000000003, "b": 593.84059, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 151.46128845214844, "t": 596.0510864257812, "r": 371.57324, "b": 606.2974243164062, "coord_origin": "TOPLEFT"}, "confidence": 0.9385150671005249, "cells": [{"id": 14, "text": "-", "bbox": {"l": 152.03981, "t": 596.6274, "r": 157.60446, "b": 605.8403900000001, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Employees can see only their own information.", "bbox": {"l": 165.59935, "t": 596.6274, "r": 371.57324, "b": 605.8403900000001, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 151.29678344726562, "t": 608.191162109375, "r": 415.18304, "b": 618.0337524414062, "coord_origin": "TOPLEFT"}, "confidence": 0.9464589953422546, "cells": [{"id": 16, "text": "-", "bbox": {"l": 152.03981, "t": 608.6272, "r": 157.56662, "b": 617.84019, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Consultants are not allowed to see any rows in the table.", "bbox": {"l": 165.59937, "t": 608.6272, "r": 415.18304, "b": 617.84019, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 40, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.6938781738281, "t": 754.8302612304688, "r": 523.60162, "b": 764.0167236328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9586459994316101, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 40, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.7025146484375, "t": 754.375244140625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9186720848083496, "cells": [{"id": 1, "text": "25", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "25"}, {"label": "section_header", "id": 2, "page_no": 40, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 150.51434326171875, "t": 70.7142562866211, "r": 356.2522, "b": 81.25257873535156, "coord_origin": "TOPLEFT"}, "confidence": 0.7506248354911804, "cells": [{"id": 2, "text": "The result of this query is shown in Figure 3-8.", "bbox": {"l": 151.19977, "t": 71.50903000000005, "r": 356.2522, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}]}, "text": "The result of this query is shown in Figure 3-8."}, {"label": "caption", "id": 3, "page_no": 40, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.24310302734375, "t": 470.6240539550781, "r": 276.3370361328125, "b": 479.94299, "coord_origin": "TOPLEFT"}, "confidence": 0.927272617816925, "cells": [{"id": 3, "text": "Figure 3-8 List of employees without RCAC enabled", "bbox": {"l": 64.800003, "t": 471.61798, "r": 275.62769, "b": 479.94299, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-8 List of employees without RCAC enabled"}, {"label": "section_header", "id": 4, "page_no": 40, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.31729888916016, "t": 499.6622314453125, "r": 339.95895, "b": 513.0746459960938, "coord_origin": "TOPLEFT"}, "confidence": 0.9666332602500916, "cells": [{"id": 4, "text": "3.6.4", "bbox": {"l": 64.800003, "t": 500.45462, "r": 94.008797, "b": 512.4426000000001, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Defining and creating row permissions", "bbox": {"l": 97.659912, "t": 500.45462, "r": 339.95895, "b": 512.4426000000001, "coord_origin": "TOPLEFT"}}]}, "text": "3.6.4 Defining and creating row permissions"}, {"label": "text", "id": 5, "page_no": 40, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.47174072265625, "t": 526.1157836914062, "r": 484.33429, "b": 536.0692749023438, "coord_origin": "TOPLEFT"}, "confidence": 0.920616090297699, "cells": [{"id": 6, "text": "Implement RCAC on the EMPLOYEES table by completing the following steps:", "bbox": {"l": 136.8, "t": 526.60861, "r": 484.33429, "b": 535.82159, "coord_origin": "TOPLEFT"}}]}, "text": "Implement RCAC on the EMPLOYEES table by completing the following steps:"}, {"label": "list_item", "id": 6, "page_no": 40, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.80002, "t": 542.7721557617188, "r": 519.3288, "b": 565.2183837890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9658254981040955, "cells": [{"id": 7, "text": "1.", "bbox": {"l": 136.80002, "t": 543.58842, "r": 145.20392, "b": 552.80142, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Start by defining a row permission. In this example, the rules to enforce include the ", "bbox": {"l": 148.00522, "t": 543.58842, "r": 519.3288, "b": 552.80142, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "following ones:", "bbox": {"l": 151.20018, "t": 555.5882300000001, "r": 216.83159000000003, "b": 564.8012200000001, "coord_origin": "TOPLEFT"}}]}, "text": "1. Start by defining a row permission. In this example, the rules to enforce include the following ones:"}, {"label": "list_item", "id": 7, "page_no": 40, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 151.23526000976562, "t": 572.105712890625, "r": 392.51511, "b": 582.262939453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9449333548545837, "cells": [{"id": 10, "text": "-", "bbox": {"l": 152.03981, "t": 572.62779, "r": 157.57359, "b": 581.84079, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Human Resources employees can see all the rows.", "bbox": {"l": 165.59937, "t": 572.62779, "r": 392.51511, "b": 581.84079, "coord_origin": "TOPLEFT"}}]}, "text": "-Human Resources employees can see all the rows."}, {"label": "list_item", "id": 8, "page_no": 40, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 151.32948303222656, "t": 584.3190307617188, "r": 484.94476000000003, "b": 594.1929931640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9476761221885681, "cells": [{"id": 12, "text": "-", "bbox": {"l": 152.03981, "t": 584.6275899999999, "r": 157.60745, "b": 593.84059, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Managers can see only information for the employees that they manage.", "bbox": {"l": 165.59935, "t": 584.6275899999999, "r": 484.94476000000003, "b": 593.84059, "coord_origin": "TOPLEFT"}}]}, "text": "-Managers can see only information for the employees that they manage."}, {"label": "list_item", "id": 9, "page_no": 40, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 151.46128845214844, "t": 596.0510864257812, "r": 371.57324, "b": 606.2974243164062, "coord_origin": "TOPLEFT"}, "confidence": 0.9385150671005249, "cells": [{"id": 14, "text": "-", "bbox": {"l": 152.03981, "t": 596.6274, "r": 157.60446, "b": 605.8403900000001, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Employees can see only their own information.", "bbox": {"l": 165.59935, "t": 596.6274, "r": 371.57324, "b": 605.8403900000001, "coord_origin": "TOPLEFT"}}]}, "text": "-Employees can see only their own information."}, {"label": "list_item", "id": 10, "page_no": 40, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 151.29678344726562, "t": 608.191162109375, "r": 415.18304, "b": 618.0337524414062, "coord_origin": "TOPLEFT"}, "confidence": 0.9464589953422546, "cells": [{"id": 16, "text": "-", "bbox": {"l": 152.03981, "t": 608.6272, "r": 157.56662, "b": 617.84019, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Consultants are not allowed to see any rows in the table.", "bbox": {"l": 165.59937, "t": 608.6272, "r": 415.18304, "b": 617.84019, "coord_origin": "TOPLEFT"}}]}, "text": "-Consultants are not allowed to see any rows in the table."}], "body": [{"label": "section_header", "id": 2, "page_no": 40, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 150.51434326171875, "t": 70.7142562866211, "r": 356.2522, "b": 81.25257873535156, "coord_origin": "TOPLEFT"}, "confidence": 0.7506248354911804, "cells": [{"id": 2, "text": "The result of this query is shown in Figure 3-8.", "bbox": {"l": 151.19977, "t": 71.50903000000005, "r": 356.2522, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}]}, "text": "The result of this query is shown in Figure 3-8."}, {"label": "caption", "id": 3, "page_no": 40, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.24310302734375, "t": 470.6240539550781, "r": 276.3370361328125, "b": 479.94299, "coord_origin": "TOPLEFT"}, "confidence": 0.927272617816925, "cells": [{"id": 3, "text": "Figure 3-8 List of employees without RCAC enabled", "bbox": {"l": 64.800003, "t": 471.61798, "r": 275.62769, "b": 479.94299, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-8 List of employees without RCAC enabled"}, {"label": "section_header", "id": 4, "page_no": 40, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.31729888916016, "t": 499.6622314453125, "r": 339.95895, "b": 513.0746459960938, "coord_origin": "TOPLEFT"}, "confidence": 0.9666332602500916, "cells": [{"id": 4, "text": "3.6.4", "bbox": {"l": 64.800003, "t": 500.45462, "r": 94.008797, "b": 512.4426000000001, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Defining and creating row permissions", "bbox": {"l": 97.659912, "t": 500.45462, "r": 339.95895, "b": 512.4426000000001, "coord_origin": "TOPLEFT"}}]}, "text": "3.6.4 Defining and creating row permissions"}, {"label": "text", "id": 5, "page_no": 40, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.47174072265625, "t": 526.1157836914062, "r": 484.33429, "b": 536.0692749023438, "coord_origin": "TOPLEFT"}, "confidence": 0.920616090297699, "cells": [{"id": 6, "text": "Implement RCAC on the EMPLOYEES table by completing the following steps:", "bbox": {"l": 136.8, "t": 526.60861, "r": 484.33429, "b": 535.82159, "coord_origin": "TOPLEFT"}}]}, "text": "Implement RCAC on the EMPLOYEES table by completing the following steps:"}, {"label": "list_item", "id": 6, "page_no": 40, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.80002, "t": 542.7721557617188, "r": 519.3288, "b": 565.2183837890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9658254981040955, "cells": [{"id": 7, "text": "1.", "bbox": {"l": 136.80002, "t": 543.58842, "r": 145.20392, "b": 552.80142, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Start by defining a row permission. In this example, the rules to enforce include the ", "bbox": {"l": 148.00522, "t": 543.58842, "r": 519.3288, "b": 552.80142, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "following ones:", "bbox": {"l": 151.20018, "t": 555.5882300000001, "r": 216.83159000000003, "b": 564.8012200000001, "coord_origin": "TOPLEFT"}}]}, "text": "1. Start by defining a row permission. In this example, the rules to enforce include the following ones:"}, {"label": "list_item", "id": 7, "page_no": 40, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 151.23526000976562, "t": 572.105712890625, "r": 392.51511, "b": 582.262939453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9449333548545837, "cells": [{"id": 10, "text": "-", "bbox": {"l": 152.03981, "t": 572.62779, "r": 157.57359, "b": 581.84079, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Human Resources employees can see all the rows.", "bbox": {"l": 165.59937, "t": 572.62779, "r": 392.51511, "b": 581.84079, "coord_origin": "TOPLEFT"}}]}, "text": "-Human Resources employees can see all the rows."}, {"label": "list_item", "id": 8, "page_no": 40, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 151.32948303222656, "t": 584.3190307617188, "r": 484.94476000000003, "b": 594.1929931640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9476761221885681, "cells": [{"id": 12, "text": "-", "bbox": {"l": 152.03981, "t": 584.6275899999999, "r": 157.60745, "b": 593.84059, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Managers can see only information for the employees that they manage.", "bbox": {"l": 165.59935, "t": 584.6275899999999, "r": 484.94476000000003, "b": 593.84059, "coord_origin": "TOPLEFT"}}]}, "text": "-Managers can see only information for the employees that they manage."}, {"label": "list_item", "id": 9, "page_no": 40, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 151.46128845214844, "t": 596.0510864257812, "r": 371.57324, "b": 606.2974243164062, "coord_origin": "TOPLEFT"}, "confidence": 0.9385150671005249, "cells": [{"id": 14, "text": "-", "bbox": {"l": 152.03981, "t": 596.6274, "r": 157.60446, "b": 605.8403900000001, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Employees can see only their own information.", "bbox": {"l": 165.59935, "t": 596.6274, "r": 371.57324, "b": 605.8403900000001, "coord_origin": "TOPLEFT"}}]}, "text": "-Employees can see only their own information."}, {"label": "list_item", "id": 10, "page_no": 40, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 151.29678344726562, "t": 608.191162109375, "r": 415.18304, "b": 618.0337524414062, "coord_origin": "TOPLEFT"}, "confidence": 0.9464589953422546, "cells": [{"id": 16, "text": "-", "bbox": {"l": 152.03981, "t": 608.6272, "r": 157.56662, "b": 617.84019, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Consultants are not allowed to see any rows in the table.", "bbox": {"l": 165.59937, "t": 608.6272, "r": 415.18304, "b": 617.84019, "coord_origin": "TOPLEFT"}}]}, "text": "-Consultants are not allowed to see any rows in the table."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 40, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.6938781738281, "t": 754.8302612304688, "r": 523.60162, "b": 764.0167236328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9586459994316101, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 40, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.7025146484375, "t": 754.375244140625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9186720848083496, "cells": [{"id": 1, "text": "25", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "25"}]}}, {"page_no": 41, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "26 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "To implement this row permission, run the SQL statement that is shown in Example 3-7.", "bbox": {"l": 151.2, "t": 71.50867000000005, "r": 538.5603, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Example 3-7 Creating a permission for the EMPLOYEE table", "bbox": {"l": 136.8, "t": 93.49805000000003, "r": 383.20923, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "CREATE PERMISSION HR_SCHEMA.PERMISSION1_ON_EMPLOYEES", "bbox": {"l": 136.8, "t": 110.65808000000015, "r": 406.61636, "b": 119.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "ON", "bbox": {"l": 136.8, "t": 122.65790000000004, "r": 149.79282, "b": 131.43268, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "HR_SCHEMA.EMPLOYEES AS EMPLOYEES", "bbox": {"l": 188.77129, "t": 122.65790000000004, "r": 396.65637, "b": 131.43268, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "FOR ROWS", "bbox": {"l": 136.8, "t": 134.65770999999995, "r": 176.75952, "b": 143.4325, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "WHERE", "bbox": {"l": 136.8, "t": 146.65752999999995, "r": 165.35201, "b": 155.43231000000003, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1 )", "bbox": {"l": 193.90401, "t": 146.65752999999995, "r": 496.55518, "b": 155.43231000000003, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "OR", "bbox": {"l": 136.8, "t": 158.65734999999995, "r": 148.62584, "b": 167.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 184.10336, "t": 158.65734999999995, "r": 491.57513, "b": 167.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "AND", "bbox": {"l": 136.8, "t": 170.65716999999995, "r": 154.73547, "b": 179.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "( EMPLOYEES . MANAGER_OF_EMPLOYEE = SESSION_USER", "bbox": {"l": 184.62791, "t": 170.65716999999995, "r": 471.5954, "b": 179.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "OR EMPLOYEES . USER_ID = SESSION_USER ) ) ", "bbox": {"l": 181.77367, "t": 182.65697999999998, "r": 451.6156, "b": 191.43176000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "OR", "bbox": {"l": 136.8, "t": 194.65679999999998, "r": 148.62584, "b": 203.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1", "bbox": {"l": 184.10336, "t": 194.65679999999998, "r": 491.57513, "b": 203.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "AND EMPLOYEES . USER_ID = SESSION_USER )", "bbox": {"l": 182.19513, "t": 206.65661999999998, "r": 441.59589, "b": 215.43140000000005, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ENFORCED FOR ALL ACCESS", "bbox": {"l": 136.8, "t": 218.65643, "r": 251.69855000000004, "b": 227.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ENABLE ;", "bbox": {"l": 136.8, "t": 230.65625, "r": 181.73952, "b": 239.43102999999996, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "2.", "bbox": {"l": 136.8, "t": 254.50647000000004, "r": 145.20389, "b": 263.71948, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Look at the definition of the table and see the permissions, as shown in Figure 3-9. ", "bbox": {"l": 148.00517, "t": 254.50647000000004, "r": 518.79407, "b": 263.71948, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "QIBM_DEFAULT_EMPLOYEE_HR_SCHEMA is the default permission, as described in ", "bbox": {"l": 151.20016, "t": 266.50629000000004, "r": 539.85822, "b": 275.7193, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "3.1.2, \u201cEnabling and activating RCAC\u201d on page 16.", "bbox": {"l": 151.20016, "t": 278.50609999999995, "r": 374.84296, "b": 287.71912, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Figure 3-9 Row permissions that are shown in System i Navigator", "bbox": {"l": 64.800003, "t": 492.3179, "r": 330.28021, "b": 500.64291, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "3.6.5", "bbox": {"l": 64.800003, "t": 521.15472, "r": 94.073502, "b": 533.1427, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Defining and creating column masks", "bbox": {"l": 97.732674, "t": 521.15472, "r": 327.40588, "b": 533.1427, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Define the different masks for the columns that are sensitive by completing the following ", "bbox": {"l": 136.8, "t": 547.30862, "r": 526.41431, "b": 556.52162, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "steps:", "bbox": {"l": 136.8, "t": 559.30843, "r": 163.44897, "b": 568.52142, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "1.", "bbox": {"l": 136.8, "t": 576.28824, "r": 145.16614, "b": 585.50124, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Start with the DAY_OF_BIRTH column. In this example, the rules to enforce include the ", "bbox": {"l": 147.95483, "t": 576.28824, "r": 538.78564, "b": 585.50124, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "following ones:", "bbox": {"l": 151.20016, "t": 588.28804, "r": 216.83157, "b": 597.50104, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "-", "bbox": {"l": 152.03979, "t": 605.26785, "r": 157.61441, "b": 614.48085, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Human Resources can see the entire date of birth of the employees.", "bbox": {"l": 165.59933, "t": 605.26785, "r": 467.65625, "b": 614.48085, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "-", "bbox": {"l": 152.03979, "t": 622.30742, "r": 157.60942, "b": 631.5204200000001, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Employees can see only their own date of birth.", "bbox": {"l": 165.59933, "t": 622.30742, "r": 375.38675, "b": 631.5204200000001, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "-", "bbox": {"l": 152.03979, "t": 639.28723, "r": 157.61142, "b": 648.50023, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Managers can see the date of birth of their employees masked with YEAR being 9999.", "bbox": {"l": 165.59933, "t": 639.28723, "r": 547.25653, "b": 648.50023, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "To implement this column mask, run the SQL statement that is shown in Example 3-8.", "bbox": {"l": 151.20016, "t": 656.26704, "r": 530.06067, "b": 665.48004, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Example 3-8 Creation of a mask on the DATE_OF_BIRTH column", "bbox": {"l": 136.8, "t": 678.3179, "r": 403.40155, "b": 686.6429, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "CREATE MASK", "bbox": {"l": 136.8, "t": 695.418121, "r": 193.80365, "b": 704.192879, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "HR_SCHEMA.MASK_DATE_OF_BIRTH_ON_EMPLOYEES", "bbox": {"l": 204.16795, "t": 695.418121, "r": 416.63611, "b": 704.192879, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "ON", "bbox": {"l": 136.8, "t": 707.417931, "r": 148.79384, "b": 716.192688, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "HR_SCHEMA.EMPLOYEES AS EMPLOYEES ", "bbox": {"l": 178.77841, "t": 707.417931, "r": 376.67661, "b": 716.192688, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "FOR COLUMN", "bbox": {"l": 136.8, "t": 719.41774, "r": 192.76723, "b": 728.192497, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "DATE_OF_BIRTH", "bbox": {"l": 203.96066, "t": 719.41774, "r": 276.71805, "b": 728.192497, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.85331726074219, "t": 754.3814086914062, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9175847768783569, "cells": [{"id": 0, "text": "26 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.32594299316406, "t": 754.67138671875, "r": 334.42142, "b": 763.926513671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9555695652961731, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 150.2159423828125, "t": 70.65572357177734, "r": 538.5603, "b": 81.11334991455078, "coord_origin": "TOPLEFT"}, "confidence": 0.9370454549789429, "cells": [{"id": 2, "text": "To implement this row permission, run the SQL statement that is shown in Example 3-7.", "bbox": {"l": 151.2, "t": 71.50867000000005, "r": 538.5603, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.3914031982422, "t": 92.4392318725586, "r": 383.7792053222656, "b": 102.14237213134766, "coord_origin": "TOPLEFT"}, "confidence": 0.8971781134605408, "cells": [{"id": 3, "text": "Example 3-7 Creating a permission for the EMPLOYEE table", "bbox": {"l": 136.8, "t": 93.49805000000003, "r": 383.20923, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "code", "bbox": {"l": 134.622802734375, "t": 105.0101089477539, "r": 547.7505493164062, "b": 244.519775390625, "coord_origin": "TOPLEFT"}, "confidence": 0.7303169369697571, "cells": [{"id": 4, "text": "CREATE PERMISSION HR_SCHEMA.PERMISSION1_ON_EMPLOYEES", "bbox": {"l": 136.8, "t": 110.65808000000015, "r": 406.61636, "b": 119.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "ON", "bbox": {"l": 136.8, "t": 122.65790000000004, "r": 149.79282, "b": 131.43268, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "HR_SCHEMA.EMPLOYEES AS EMPLOYEES", "bbox": {"l": 188.77129, "t": 122.65790000000004, "r": 396.65637, "b": 131.43268, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "FOR ROWS", "bbox": {"l": 136.8, "t": 134.65770999999995, "r": 176.75952, "b": 143.4325, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "WHERE", "bbox": {"l": 136.8, "t": 146.65752999999995, "r": 165.35201, "b": 155.43231000000003, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1 )", "bbox": {"l": 193.90401, "t": 146.65752999999995, "r": 496.55518, "b": 155.43231000000003, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "OR", "bbox": {"l": 136.8, "t": 158.65734999999995, "r": 148.62584, "b": 167.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 184.10336, "t": 158.65734999999995, "r": 491.57513, "b": 167.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "AND", "bbox": {"l": 136.8, "t": 170.65716999999995, "r": 154.73547, "b": 179.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "( EMPLOYEES . MANAGER_OF_EMPLOYEE = SESSION_USER", "bbox": {"l": 184.62791, "t": 170.65716999999995, "r": 471.5954, "b": 179.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "OR EMPLOYEES . USER_ID = SESSION_USER ) ) ", "bbox": {"l": 181.77367, "t": 182.65697999999998, "r": 451.6156, "b": 191.43176000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "OR", "bbox": {"l": 136.8, "t": 194.65679999999998, "r": 148.62584, "b": 203.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1", "bbox": {"l": 184.10336, "t": 194.65679999999998, "r": 491.57513, "b": 203.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "AND EMPLOYEES . USER_ID = SESSION_USER )", "bbox": {"l": 182.19513, "t": 206.65661999999998, "r": 441.59589, "b": 215.43140000000005, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ENFORCED FOR ALL ACCESS", "bbox": {"l": 136.8, "t": 218.65643, "r": 251.69855000000004, "b": 227.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ENABLE ;", "bbox": {"l": 136.8, "t": 230.65625, "r": 181.73952, "b": 239.43102999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 135.9988250732422, "t": 253.1900634765625, "r": 539.85822, "b": 287.8277282714844, "coord_origin": "TOPLEFT"}, "confidence": 0.9342305064201355, "cells": [{"id": 20, "text": "2.", "bbox": {"l": 136.8, "t": 254.50647000000004, "r": 145.20389, "b": 263.71948, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Look at the definition of the table and see the permissions, as shown in Figure 3-9. ", "bbox": {"l": 148.00517, "t": 254.50647000000004, "r": 518.79407, "b": 263.71948, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "QIBM_DEFAULT_EMPLOYEE_HR_SCHEMA is the default permission, as described in ", "bbox": {"l": 151.20016, "t": 266.50629000000004, "r": 539.85822, "b": 275.7193, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "3.1.2, \u201cEnabling and activating RCAC\u201d on page 16.", "bbox": {"l": 151.20016, "t": 278.50609999999995, "r": 374.84296, "b": 287.71912, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "caption", "bbox": {"l": 64.43289947509766, "t": 491.4513244628906, "r": 331.18115234375, "b": 500.79241943359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9436566233634949, "cells": [{"id": 24, "text": "Figure 3-9 Row permissions that are shown in System i Navigator", "bbox": {"l": 64.800003, "t": 492.3179, "r": 330.28021, "b": 500.64291, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "section_header", "bbox": {"l": 64.18317413330078, "t": 520.4345703125, "r": 327.40588, "b": 533.9813232421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9629243612289429, "cells": [{"id": 25, "text": "3.6.5", "bbox": {"l": 64.800003, "t": 521.15472, "r": 94.073502, "b": 533.1427, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Defining and creating column masks", "bbox": {"l": 97.732674, "t": 521.15472, "r": 327.40588, "b": 533.1427, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 136.35951232910156, "t": 546.794189453125, "r": 526.41431, "b": 568.794921875, "coord_origin": "TOPLEFT"}, "confidence": 0.968765139579773, "cells": [{"id": 27, "text": "Define the different masks for the columns that are sensitive by completing the following ", "bbox": {"l": 136.8, "t": 547.30862, "r": 526.41431, "b": 556.52162, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "steps:", "bbox": {"l": 136.8, "t": 559.30843, "r": 163.44897, "b": 568.52142, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 136.79542541503906, "t": 575.26025390625, "r": 538.78564, "b": 597.7650756835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9648330807685852, "cells": [{"id": 29, "text": "1.", "bbox": {"l": 136.8, "t": 576.28824, "r": 145.16614, "b": 585.50124, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Start with the DAY_OF_BIRTH column. In this example, the rules to enforce include the ", "bbox": {"l": 147.95483, "t": 576.28824, "r": 538.78564, "b": 585.50124, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "following ones:", "bbox": {"l": 151.20016, "t": 588.28804, "r": 216.83157, "b": 597.50104, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 151.26760864257812, "t": 604.6339721679688, "r": 467.65625, "b": 614.5850830078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9502057433128357, "cells": [{"id": 32, "text": "-", "bbox": {"l": 152.03979, "t": 605.26785, "r": 157.61441, "b": 614.48085, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Human Resources can see the entire date of birth of the employees.", "bbox": {"l": 165.59933, "t": 605.26785, "r": 467.65625, "b": 614.48085, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 151.2598114013672, "t": 621.2564086914062, "r": 375.38675, "b": 631.7196044921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9498502016067505, "cells": [{"id": 34, "text": "-", "bbox": {"l": 152.03979, "t": 622.30742, "r": 157.60942, "b": 631.5204200000001, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Employees can see only their own date of birth.", "bbox": {"l": 165.59933, "t": 622.30742, "r": 375.38675, "b": 631.5204200000001, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "list_item", "bbox": {"l": 151.43798828125, "t": 638.585205078125, "r": 547.25653, "b": 648.8189086914062, "coord_origin": "TOPLEFT"}, "confidence": 0.9482884407043457, "cells": [{"id": 36, "text": "-", "bbox": {"l": 152.03979, "t": 639.28723, "r": 157.61142, "b": 648.50023, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Managers can see the date of birth of their employees masked with YEAR being 9999.", "bbox": {"l": 165.59933, "t": 639.28723, "r": 547.25653, "b": 648.50023, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 150.7313232421875, "t": 655.2977905273438, "r": 530.06067, "b": 665.58984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9218307137489319, "cells": [{"id": 38, "text": "To implement this column mask, run the SQL statement that is shown in Example 3-8.", "bbox": {"l": 151.20016, "t": 656.26704, "r": 530.06067, "b": 665.48004, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "caption", "bbox": {"l": 136.27670288085938, "t": 677.1241455078125, "r": 403.9977722167969, "b": 686.8948974609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9098079204559326, "cells": [{"id": 39, "text": "Example 3-8 Creation of a mask on the DATE_OF_BIRTH column", "bbox": {"l": 136.8, "t": 678.3179, "r": 403.40155, "b": 686.6429, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "text", "bbox": {"l": 136.8, "t": 695.418121, "r": 416.63611, "b": 728.192497, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 40, "text": "CREATE MASK", "bbox": {"l": 136.8, "t": 695.418121, "r": 193.80365, "b": 704.192879, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "HR_SCHEMA.MASK_DATE_OF_BIRTH_ON_EMPLOYEES", "bbox": {"l": 204.16795, "t": 695.418121, "r": 416.63611, "b": 704.192879, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "ON", "bbox": {"l": 136.8, "t": 707.417931, "r": 148.79384, "b": 716.192688, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "HR_SCHEMA.EMPLOYEES AS EMPLOYEES ", "bbox": {"l": 178.77841, "t": 707.417931, "r": 376.67661, "b": 716.192688, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "FOR COLUMN", "bbox": {"l": 136.8, "t": 719.41774, "r": 192.76723, "b": 728.192497, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "DATE_OF_BIRTH", "bbox": {"l": 203.96066, "t": 719.41774, "r": 276.71805, "b": 728.192497, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "picture", "bbox": {"l": 64.00577545166016, "t": 302.1222839355469, "r": 547.3966674804688, "b": 489.23321533203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9799203276634216, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 41, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.85331726074219, "t": 754.3814086914062, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9175847768783569, "cells": [{"id": 0, "text": "26 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "26"}, {"label": "page_footer", "id": 1, "page_no": 41, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.32594299316406, "t": 754.67138671875, "r": 334.42142, "b": 763.926513671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9555695652961731, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 2, "page_no": 41, "cluster": {"id": 2, "label": "text", "bbox": {"l": 150.2159423828125, "t": 70.65572357177734, "r": 538.5603, "b": 81.11334991455078, "coord_origin": "TOPLEFT"}, "confidence": 0.9370454549789429, "cells": [{"id": 2, "text": "To implement this row permission, run the SQL statement that is shown in Example 3-7.", "bbox": {"l": 151.2, "t": 71.50867000000005, "r": 538.5603, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "To implement this row permission, run the SQL statement that is shown in Example 3-7."}, {"label": "caption", "id": 3, "page_no": 41, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.3914031982422, "t": 92.4392318725586, "r": 383.7792053222656, "b": 102.14237213134766, "coord_origin": "TOPLEFT"}, "confidence": 0.8971781134605408, "cells": [{"id": 3, "text": "Example 3-7 Creating a permission for the EMPLOYEE table", "bbox": {"l": 136.8, "t": 93.49805000000003, "r": 383.20923, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-7 Creating a permission for the EMPLOYEE table"}, {"label": "code", "id": 4, "page_no": 41, "cluster": {"id": 4, "label": "code", "bbox": {"l": 134.622802734375, "t": 105.0101089477539, "r": 547.7505493164062, "b": 244.519775390625, "coord_origin": "TOPLEFT"}, "confidence": 0.7303169369697571, "cells": [{"id": 4, "text": "CREATE PERMISSION HR_SCHEMA.PERMISSION1_ON_EMPLOYEES", "bbox": {"l": 136.8, "t": 110.65808000000015, "r": 406.61636, "b": 119.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "ON", "bbox": {"l": 136.8, "t": 122.65790000000004, "r": 149.79282, "b": 131.43268, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "HR_SCHEMA.EMPLOYEES AS EMPLOYEES", "bbox": {"l": 188.77129, "t": 122.65790000000004, "r": 396.65637, "b": 131.43268, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "FOR ROWS", "bbox": {"l": 136.8, "t": 134.65770999999995, "r": 176.75952, "b": 143.4325, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "WHERE", "bbox": {"l": 136.8, "t": 146.65752999999995, "r": 165.35201, "b": 155.43231000000003, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1 )", "bbox": {"l": 193.90401, "t": 146.65752999999995, "r": 496.55518, "b": 155.43231000000003, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "OR", "bbox": {"l": 136.8, "t": 158.65734999999995, "r": 148.62584, "b": 167.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 184.10336, "t": 158.65734999999995, "r": 491.57513, "b": 167.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "AND", "bbox": {"l": 136.8, "t": 170.65716999999995, "r": 154.73547, "b": 179.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "( EMPLOYEES . MANAGER_OF_EMPLOYEE = SESSION_USER", "bbox": {"l": 184.62791, "t": 170.65716999999995, "r": 471.5954, "b": 179.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "OR EMPLOYEES . USER_ID = SESSION_USER ) ) ", "bbox": {"l": 181.77367, "t": 182.65697999999998, "r": 451.6156, "b": 191.43176000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "OR", "bbox": {"l": 136.8, "t": 194.65679999999998, "r": 148.62584, "b": 203.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1", "bbox": {"l": 184.10336, "t": 194.65679999999998, "r": 491.57513, "b": 203.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "AND EMPLOYEES . USER_ID = SESSION_USER )", "bbox": {"l": 182.19513, "t": 206.65661999999998, "r": 441.59589, "b": 215.43140000000005, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ENFORCED FOR ALL ACCESS", "bbox": {"l": 136.8, "t": 218.65643, "r": 251.69855000000004, "b": 227.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ENABLE ;", "bbox": {"l": 136.8, "t": 230.65625, "r": 181.73952, "b": 239.43102999999996, "coord_origin": "TOPLEFT"}}]}, "text": "CREATE PERMISSION HR_SCHEMA.PERMISSION1_ON_EMPLOYEES ON HR_SCHEMA.EMPLOYEES AS EMPLOYEES FOR ROWS WHERE ( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1 ) OR ( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND ( EMPLOYEES . MANAGER_OF_EMPLOYEE = SESSION_USER OR EMPLOYEES . USER_ID = SESSION_USER ) ) OR ( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1 AND EMPLOYEES . USER_ID = SESSION_USER ) ENFORCED FOR ALL ACCESS ENABLE ;"}, {"label": "list_item", "id": 5, "page_no": 41, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.9988250732422, "t": 253.1900634765625, "r": 539.85822, "b": 287.8277282714844, "coord_origin": "TOPLEFT"}, "confidence": 0.9342305064201355, "cells": [{"id": 20, "text": "2.", "bbox": {"l": 136.8, "t": 254.50647000000004, "r": 145.20389, "b": 263.71948, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Look at the definition of the table and see the permissions, as shown in Figure 3-9. ", "bbox": {"l": 148.00517, "t": 254.50647000000004, "r": 518.79407, "b": 263.71948, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "QIBM_DEFAULT_EMPLOYEE_HR_SCHEMA is the default permission, as described in ", "bbox": {"l": 151.20016, "t": 266.50629000000004, "r": 539.85822, "b": 275.7193, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "3.1.2, \u201cEnabling and activating RCAC\u201d on page 16.", "bbox": {"l": 151.20016, "t": 278.50609999999995, "r": 374.84296, "b": 287.71912, "coord_origin": "TOPLEFT"}}]}, "text": "2. Look at the definition of the table and see the permissions, as shown in Figure 3-9. QIBM_DEFAULT_EMPLOYEE_HR_SCHEMA is the default permission, as described in 3.1.2, \u201cEnabling and activating RCAC\u201d on page 16."}, {"label": "caption", "id": 6, "page_no": 41, "cluster": {"id": 6, "label": "caption", "bbox": {"l": 64.43289947509766, "t": 491.4513244628906, "r": 331.18115234375, "b": 500.79241943359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9436566233634949, "cells": [{"id": 24, "text": "Figure 3-9 Row permissions that are shown in System i Navigator", "bbox": {"l": 64.800003, "t": 492.3179, "r": 330.28021, "b": 500.64291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-9 Row permissions that are shown in System i Navigator"}, {"label": "section_header", "id": 7, "page_no": 41, "cluster": {"id": 7, "label": "section_header", "bbox": {"l": 64.18317413330078, "t": 520.4345703125, "r": 327.40588, "b": 533.9813232421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9629243612289429, "cells": [{"id": 25, "text": "3.6.5", "bbox": {"l": 64.800003, "t": 521.15472, "r": 94.073502, "b": 533.1427, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Defining and creating column masks", "bbox": {"l": 97.732674, "t": 521.15472, "r": 327.40588, "b": 533.1427, "coord_origin": "TOPLEFT"}}]}, "text": "3.6.5 Defining and creating column masks"}, {"label": "text", "id": 8, "page_no": 41, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.35951232910156, "t": 546.794189453125, "r": 526.41431, "b": 568.794921875, "coord_origin": "TOPLEFT"}, "confidence": 0.968765139579773, "cells": [{"id": 27, "text": "Define the different masks for the columns that are sensitive by completing the following ", "bbox": {"l": 136.8, "t": 547.30862, "r": 526.41431, "b": 556.52162, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "steps:", "bbox": {"l": 136.8, "t": 559.30843, "r": 163.44897, "b": 568.52142, "coord_origin": "TOPLEFT"}}]}, "text": "Define the different masks for the columns that are sensitive by completing the following steps:"}, {"label": "list_item", "id": 9, "page_no": 41, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 136.79542541503906, "t": 575.26025390625, "r": 538.78564, "b": 597.7650756835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9648330807685852, "cells": [{"id": 29, "text": "1.", "bbox": {"l": 136.8, "t": 576.28824, "r": 145.16614, "b": 585.50124, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Start with the DAY_OF_BIRTH column. In this example, the rules to enforce include the ", "bbox": {"l": 147.95483, "t": 576.28824, "r": 538.78564, "b": 585.50124, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "following ones:", "bbox": {"l": 151.20016, "t": 588.28804, "r": 216.83157, "b": 597.50104, "coord_origin": "TOPLEFT"}}]}, "text": "1. Start with the DAY_OF_BIRTH column. In this example, the rules to enforce include the following ones:"}, {"label": "list_item", "id": 10, "page_no": 41, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 151.26760864257812, "t": 604.6339721679688, "r": 467.65625, "b": 614.5850830078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9502057433128357, "cells": [{"id": 32, "text": "-", "bbox": {"l": 152.03979, "t": 605.26785, "r": 157.61441, "b": 614.48085, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Human Resources can see the entire date of birth of the employees.", "bbox": {"l": 165.59933, "t": 605.26785, "r": 467.65625, "b": 614.48085, "coord_origin": "TOPLEFT"}}]}, "text": "-Human Resources can see the entire date of birth of the employees."}, {"label": "list_item", "id": 11, "page_no": 41, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 151.2598114013672, "t": 621.2564086914062, "r": 375.38675, "b": 631.7196044921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9498502016067505, "cells": [{"id": 34, "text": "-", "bbox": {"l": 152.03979, "t": 622.30742, "r": 157.60942, "b": 631.5204200000001, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Employees can see only their own date of birth.", "bbox": {"l": 165.59933, "t": 622.30742, "r": 375.38675, "b": 631.5204200000001, "coord_origin": "TOPLEFT"}}]}, "text": "-Employees can see only their own date of birth."}, {"label": "list_item", "id": 12, "page_no": 41, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 151.43798828125, "t": 638.585205078125, "r": 547.25653, "b": 648.8189086914062, "coord_origin": "TOPLEFT"}, "confidence": 0.9482884407043457, "cells": [{"id": 36, "text": "-", "bbox": {"l": 152.03979, "t": 639.28723, "r": 157.61142, "b": 648.50023, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Managers can see the date of birth of their employees masked with YEAR being 9999.", "bbox": {"l": 165.59933, "t": 639.28723, "r": 547.25653, "b": 648.50023, "coord_origin": "TOPLEFT"}}]}, "text": "-Managers can see the date of birth of their employees masked with YEAR being 9999."}, {"label": "text", "id": 13, "page_no": 41, "cluster": {"id": 13, "label": "text", "bbox": {"l": 150.7313232421875, "t": 655.2977905273438, "r": 530.06067, "b": 665.58984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9218307137489319, "cells": [{"id": 38, "text": "To implement this column mask, run the SQL statement that is shown in Example 3-8.", "bbox": {"l": 151.20016, "t": 656.26704, "r": 530.06067, "b": 665.48004, "coord_origin": "TOPLEFT"}}]}, "text": "To implement this column mask, run the SQL statement that is shown in Example 3-8."}, {"label": "caption", "id": 14, "page_no": 41, "cluster": {"id": 14, "label": "caption", "bbox": {"l": 136.27670288085938, "t": 677.1241455078125, "r": 403.9977722167969, "b": 686.8948974609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9098079204559326, "cells": [{"id": 39, "text": "Example 3-8 Creation of a mask on the DATE_OF_BIRTH column", "bbox": {"l": 136.8, "t": 678.3179, "r": 403.40155, "b": 686.6429, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-8 Creation of a mask on the DATE_OF_BIRTH column"}, {"label": "text", "id": 15, "page_no": 41, "cluster": {"id": 15, "label": "text", "bbox": {"l": 136.8, "t": 695.418121, "r": 416.63611, "b": 728.192497, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 40, "text": "CREATE MASK", "bbox": {"l": 136.8, "t": 695.418121, "r": 193.80365, "b": 704.192879, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "HR_SCHEMA.MASK_DATE_OF_BIRTH_ON_EMPLOYEES", "bbox": {"l": 204.16795, "t": 695.418121, "r": 416.63611, "b": 704.192879, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "ON", "bbox": {"l": 136.8, "t": 707.417931, "r": 148.79384, "b": 716.192688, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "HR_SCHEMA.EMPLOYEES AS EMPLOYEES ", "bbox": {"l": 178.77841, "t": 707.417931, "r": 376.67661, "b": 716.192688, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "FOR COLUMN", "bbox": {"l": 136.8, "t": 719.41774, "r": 192.76723, "b": 728.192497, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "DATE_OF_BIRTH", "bbox": {"l": 203.96066, "t": 719.41774, "r": 276.71805, "b": 728.192497, "coord_origin": "TOPLEFT"}}]}, "text": "CREATE MASK HR_SCHEMA.MASK_DATE_OF_BIRTH_ON_EMPLOYEES ON HR_SCHEMA.EMPLOYEES AS EMPLOYEES FOR COLUMN DATE_OF_BIRTH"}, {"label": "picture", "id": 16, "page_no": 41, "cluster": {"id": 16, "label": "picture", "bbox": {"l": 64.00577545166016, "t": 302.1222839355469, "r": 547.3966674804688, "b": 489.23321533203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9799203276634216, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 41, "cluster": {"id": 2, "label": "text", "bbox": {"l": 150.2159423828125, "t": 70.65572357177734, "r": 538.5603, "b": 81.11334991455078, "coord_origin": "TOPLEFT"}, "confidence": 0.9370454549789429, "cells": [{"id": 2, "text": "To implement this row permission, run the SQL statement that is shown in Example 3-7.", "bbox": {"l": 151.2, "t": 71.50867000000005, "r": 538.5603, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "To implement this row permission, run the SQL statement that is shown in Example 3-7."}, {"label": "caption", "id": 3, "page_no": 41, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.3914031982422, "t": 92.4392318725586, "r": 383.7792053222656, "b": 102.14237213134766, "coord_origin": "TOPLEFT"}, "confidence": 0.8971781134605408, "cells": [{"id": 3, "text": "Example 3-7 Creating a permission for the EMPLOYEE table", "bbox": {"l": 136.8, "t": 93.49805000000003, "r": 383.20923, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-7 Creating a permission for the EMPLOYEE table"}, {"label": "code", "id": 4, "page_no": 41, "cluster": {"id": 4, "label": "code", "bbox": {"l": 134.622802734375, "t": 105.0101089477539, "r": 547.7505493164062, "b": 244.519775390625, "coord_origin": "TOPLEFT"}, "confidence": 0.7303169369697571, "cells": [{"id": 4, "text": "CREATE PERMISSION HR_SCHEMA.PERMISSION1_ON_EMPLOYEES", "bbox": {"l": 136.8, "t": 110.65808000000015, "r": 406.61636, "b": 119.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "ON", "bbox": {"l": 136.8, "t": 122.65790000000004, "r": 149.79282, "b": 131.43268, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "HR_SCHEMA.EMPLOYEES AS EMPLOYEES", "bbox": {"l": 188.77129, "t": 122.65790000000004, "r": 396.65637, "b": 131.43268, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "FOR ROWS", "bbox": {"l": 136.8, "t": 134.65770999999995, "r": 176.75952, "b": 143.4325, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "WHERE", "bbox": {"l": 136.8, "t": 146.65752999999995, "r": 165.35201, "b": 155.43231000000003, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1 )", "bbox": {"l": 193.90401, "t": 146.65752999999995, "r": 496.55518, "b": 155.43231000000003, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "OR", "bbox": {"l": 136.8, "t": 158.65734999999995, "r": 148.62584, "b": 167.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 184.10336, "t": 158.65734999999995, "r": 491.57513, "b": 167.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "AND", "bbox": {"l": 136.8, "t": 170.65716999999995, "r": 154.73547, "b": 179.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "( EMPLOYEES . MANAGER_OF_EMPLOYEE = SESSION_USER", "bbox": {"l": 184.62791, "t": 170.65716999999995, "r": 471.5954, "b": 179.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "OR EMPLOYEES . USER_ID = SESSION_USER ) ) ", "bbox": {"l": 181.77367, "t": 182.65697999999998, "r": 451.6156, "b": 191.43176000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "OR", "bbox": {"l": 136.8, "t": 194.65679999999998, "r": 148.62584, "b": 203.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1", "bbox": {"l": 184.10336, "t": 194.65679999999998, "r": 491.57513, "b": 203.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "AND EMPLOYEES . USER_ID = SESSION_USER )", "bbox": {"l": 182.19513, "t": 206.65661999999998, "r": 441.59589, "b": 215.43140000000005, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ENFORCED FOR ALL ACCESS", "bbox": {"l": 136.8, "t": 218.65643, "r": 251.69855000000004, "b": 227.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ENABLE ;", "bbox": {"l": 136.8, "t": 230.65625, "r": 181.73952, "b": 239.43102999999996, "coord_origin": "TOPLEFT"}}]}, "text": "CREATE PERMISSION HR_SCHEMA.PERMISSION1_ON_EMPLOYEES ON HR_SCHEMA.EMPLOYEES AS EMPLOYEES FOR ROWS WHERE ( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1 ) OR ( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND ( EMPLOYEES . MANAGER_OF_EMPLOYEE = SESSION_USER OR EMPLOYEES . USER_ID = SESSION_USER ) ) OR ( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1 AND EMPLOYEES . USER_ID = SESSION_USER ) ENFORCED FOR ALL ACCESS ENABLE ;"}, {"label": "list_item", "id": 5, "page_no": 41, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.9988250732422, "t": 253.1900634765625, "r": 539.85822, "b": 287.8277282714844, "coord_origin": "TOPLEFT"}, "confidence": 0.9342305064201355, "cells": [{"id": 20, "text": "2.", "bbox": {"l": 136.8, "t": 254.50647000000004, "r": 145.20389, "b": 263.71948, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Look at the definition of the table and see the permissions, as shown in Figure 3-9. ", "bbox": {"l": 148.00517, "t": 254.50647000000004, "r": 518.79407, "b": 263.71948, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "QIBM_DEFAULT_EMPLOYEE_HR_SCHEMA is the default permission, as described in ", "bbox": {"l": 151.20016, "t": 266.50629000000004, "r": 539.85822, "b": 275.7193, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "3.1.2, \u201cEnabling and activating RCAC\u201d on page 16.", "bbox": {"l": 151.20016, "t": 278.50609999999995, "r": 374.84296, "b": 287.71912, "coord_origin": "TOPLEFT"}}]}, "text": "2. Look at the definition of the table and see the permissions, as shown in Figure 3-9. QIBM_DEFAULT_EMPLOYEE_HR_SCHEMA is the default permission, as described in 3.1.2, \u201cEnabling and activating RCAC\u201d on page 16."}, {"label": "caption", "id": 6, "page_no": 41, "cluster": {"id": 6, "label": "caption", "bbox": {"l": 64.43289947509766, "t": 491.4513244628906, "r": 331.18115234375, "b": 500.79241943359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9436566233634949, "cells": [{"id": 24, "text": "Figure 3-9 Row permissions that are shown in System i Navigator", "bbox": {"l": 64.800003, "t": 492.3179, "r": 330.28021, "b": 500.64291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-9 Row permissions that are shown in System i Navigator"}, {"label": "section_header", "id": 7, "page_no": 41, "cluster": {"id": 7, "label": "section_header", "bbox": {"l": 64.18317413330078, "t": 520.4345703125, "r": 327.40588, "b": 533.9813232421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9629243612289429, "cells": [{"id": 25, "text": "3.6.5", "bbox": {"l": 64.800003, "t": 521.15472, "r": 94.073502, "b": 533.1427, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Defining and creating column masks", "bbox": {"l": 97.732674, "t": 521.15472, "r": 327.40588, "b": 533.1427, "coord_origin": "TOPLEFT"}}]}, "text": "3.6.5 Defining and creating column masks"}, {"label": "text", "id": 8, "page_no": 41, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.35951232910156, "t": 546.794189453125, "r": 526.41431, "b": 568.794921875, "coord_origin": "TOPLEFT"}, "confidence": 0.968765139579773, "cells": [{"id": 27, "text": "Define the different masks for the columns that are sensitive by completing the following ", "bbox": {"l": 136.8, "t": 547.30862, "r": 526.41431, "b": 556.52162, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "steps:", "bbox": {"l": 136.8, "t": 559.30843, "r": 163.44897, "b": 568.52142, "coord_origin": "TOPLEFT"}}]}, "text": "Define the different masks for the columns that are sensitive by completing the following steps:"}, {"label": "list_item", "id": 9, "page_no": 41, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 136.79542541503906, "t": 575.26025390625, "r": 538.78564, "b": 597.7650756835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9648330807685852, "cells": [{"id": 29, "text": "1.", "bbox": {"l": 136.8, "t": 576.28824, "r": 145.16614, "b": 585.50124, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Start with the DAY_OF_BIRTH column. In this example, the rules to enforce include the ", "bbox": {"l": 147.95483, "t": 576.28824, "r": 538.78564, "b": 585.50124, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "following ones:", "bbox": {"l": 151.20016, "t": 588.28804, "r": 216.83157, "b": 597.50104, "coord_origin": "TOPLEFT"}}]}, "text": "1. Start with the DAY_OF_BIRTH column. In this example, the rules to enforce include the following ones:"}, {"label": "list_item", "id": 10, "page_no": 41, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 151.26760864257812, "t": 604.6339721679688, "r": 467.65625, "b": 614.5850830078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9502057433128357, "cells": [{"id": 32, "text": "-", "bbox": {"l": 152.03979, "t": 605.26785, "r": 157.61441, "b": 614.48085, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Human Resources can see the entire date of birth of the employees.", "bbox": {"l": 165.59933, "t": 605.26785, "r": 467.65625, "b": 614.48085, "coord_origin": "TOPLEFT"}}]}, "text": "-Human Resources can see the entire date of birth of the employees."}, {"label": "list_item", "id": 11, "page_no": 41, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 151.2598114013672, "t": 621.2564086914062, "r": 375.38675, "b": 631.7196044921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9498502016067505, "cells": [{"id": 34, "text": "-", "bbox": {"l": 152.03979, "t": 622.30742, "r": 157.60942, "b": 631.5204200000001, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Employees can see only their own date of birth.", "bbox": {"l": 165.59933, "t": 622.30742, "r": 375.38675, "b": 631.5204200000001, "coord_origin": "TOPLEFT"}}]}, "text": "-Employees can see only their own date of birth."}, {"label": "list_item", "id": 12, "page_no": 41, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 151.43798828125, "t": 638.585205078125, "r": 547.25653, "b": 648.8189086914062, "coord_origin": "TOPLEFT"}, "confidence": 0.9482884407043457, "cells": [{"id": 36, "text": "-", "bbox": {"l": 152.03979, "t": 639.28723, "r": 157.61142, "b": 648.50023, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Managers can see the date of birth of their employees masked with YEAR being 9999.", "bbox": {"l": 165.59933, "t": 639.28723, "r": 547.25653, "b": 648.50023, "coord_origin": "TOPLEFT"}}]}, "text": "-Managers can see the date of birth of their employees masked with YEAR being 9999."}, {"label": "text", "id": 13, "page_no": 41, "cluster": {"id": 13, "label": "text", "bbox": {"l": 150.7313232421875, "t": 655.2977905273438, "r": 530.06067, "b": 665.58984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9218307137489319, "cells": [{"id": 38, "text": "To implement this column mask, run the SQL statement that is shown in Example 3-8.", "bbox": {"l": 151.20016, "t": 656.26704, "r": 530.06067, "b": 665.48004, "coord_origin": "TOPLEFT"}}]}, "text": "To implement this column mask, run the SQL statement that is shown in Example 3-8."}, {"label": "caption", "id": 14, "page_no": 41, "cluster": {"id": 14, "label": "caption", "bbox": {"l": 136.27670288085938, "t": 677.1241455078125, "r": 403.9977722167969, "b": 686.8948974609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9098079204559326, "cells": [{"id": 39, "text": "Example 3-8 Creation of a mask on the DATE_OF_BIRTH column", "bbox": {"l": 136.8, "t": 678.3179, "r": 403.40155, "b": 686.6429, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-8 Creation of a mask on the DATE_OF_BIRTH column"}, {"label": "text", "id": 15, "page_no": 41, "cluster": {"id": 15, "label": "text", "bbox": {"l": 136.8, "t": 695.418121, "r": 416.63611, "b": 728.192497, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 40, "text": "CREATE MASK", "bbox": {"l": 136.8, "t": 695.418121, "r": 193.80365, "b": 704.192879, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "HR_SCHEMA.MASK_DATE_OF_BIRTH_ON_EMPLOYEES", "bbox": {"l": 204.16795, "t": 695.418121, "r": 416.63611, "b": 704.192879, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "ON", "bbox": {"l": 136.8, "t": 707.417931, "r": 148.79384, "b": 716.192688, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "HR_SCHEMA.EMPLOYEES AS EMPLOYEES ", "bbox": {"l": 178.77841, "t": 707.417931, "r": 376.67661, "b": 716.192688, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "FOR COLUMN", "bbox": {"l": 136.8, "t": 719.41774, "r": 192.76723, "b": 728.192497, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "DATE_OF_BIRTH", "bbox": {"l": 203.96066, "t": 719.41774, "r": 276.71805, "b": 728.192497, "coord_origin": "TOPLEFT"}}]}, "text": "CREATE MASK HR_SCHEMA.MASK_DATE_OF_BIRTH_ON_EMPLOYEES ON HR_SCHEMA.EMPLOYEES AS EMPLOYEES FOR COLUMN DATE_OF_BIRTH"}, {"label": "picture", "id": 16, "page_no": 41, "cluster": {"id": 16, "label": "picture", "bbox": {"l": 64.00577545166016, "t": 302.1222839355469, "r": 547.3966674804688, "b": 489.23321533203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9799203276634216, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 41, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.85331726074219, "t": 754.3814086914062, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9175847768783569, "cells": [{"id": 0, "text": "26 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "26"}, {"label": "page_footer", "id": 1, "page_no": 41, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.32594299316406, "t": 754.67138671875, "r": 334.42142, "b": 763.926513671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9555695652961731, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 42, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "27", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "RETURN", "bbox": {"l": 136.79959, "t": 71.65845000000002, "r": 166.73935, "b": 80.43322999999998, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "CASE", "bbox": {"l": 136.79959, "t": 83.65826000000004, "r": 156.77934, "b": 92.43304, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR', 'EMP' ) = 1", "bbox": {"l": 147.26993, "t": 95.65808000000015, "r": 466.61502, "b": 104.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "THEN EMPLOYEES . DATE_OF_BIRTH", "bbox": {"l": 147.73068, "t": 107.65790000000004, "r": 311.69717, "b": 116.43268, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 147.31944, "t": 131.65752999999995, "r": 436.61547999999993, "b": 140.43231000000003, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "AND SESSION_USER = EMPLOYEES . USER_ID", "bbox": {"l": 147.54245, "t": 143.65734999999995, "r": 351.65668, "b": 152.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "THEN EMPLOYEES . DATE_OF_BIRTH", "bbox": {"l": 147.73068, "t": 155.65716999999995, "r": 311.69717, "b": 164.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 147.31944, "t": 179.65679999999998, "r": 436.61547999999993, "b": 188.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "AND SESSION_USER <> EMPLOYEES . USER_ID", "bbox": {"l": 147.52335, "t": 191.65661999999998, "r": 356.63669, "b": 200.43140000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "THEN ( 9999 || '-' ||", "bbox": {"l": 147.63832, "t": 203.65643, "r": 261.44492, "b": 212.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "MONTH ( EMPLOYEES . DATE_OF_BIRTH ) || '-'", "bbox": {"l": 272.28363, "t": 203.65643, "r": 499.89682, "b": 212.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "||", "bbox": {"l": 510.73557, "t": 203.65643, "r": 521.57428, "b": 212.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "DAY (EMPLOYEES.DATE_OF_BIRTH ))", "bbox": {"l": 160.78555, "t": 215.65625, "r": 346.6767, "b": 224.43102999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "ELSE NULL", "bbox": {"l": 149.51941, "t": 227.65607, "r": 206.75861, "b": 236.43084999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": " END", "bbox": {"l": 136.79959, "t": 239.65588000000002, "r": 156.77934, "b": 248.43066, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": " ENABLE ;", "bbox": {"l": 136.79959, "t": 251.65570000000002, "r": 186.7191, "b": 260.43048, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "2.", "bbox": {"l": 136.79959, "t": 275.50591999999995, "r": 145.18994, "b": 284.7189, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "The other column to mask in this example is the TAX_ID information. In this example, the ", "bbox": {"l": 147.98672, "t": 275.50591999999995, "r": 547.21222, "b": 284.7189, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "rules to enforce include the following ones:", "bbox": {"l": 151.19977, "t": 287.50574, "r": 339.37903, "b": 296.71871999999996, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "-", "bbox": {"l": 152.0394, "t": 304.48553000000004, "r": 157.61201, "b": 313.69852000000003, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Human Resources can see the unmasked TAX_ID of the employees.", "bbox": {"l": 165.59894, "t": 304.48553000000004, "r": 469.1528, "b": 313.69852000000003, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "-", "bbox": {"l": 152.0394, "t": 321.52512, "r": 157.60504, "b": 330.7381, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Employees can see only their own unmasked TAX_ID.", "bbox": {"l": 165.59894, "t": 321.52512, "r": 403.95953, "b": 330.7381, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "-", "bbox": {"l": 152.0394, "t": 338.50491, "r": 157.57019, "b": 347.7179, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Managers see a masked version of TAX_ID with the first five characters replaced with ", "bbox": {"l": 165.59894, "t": 338.50491, "r": 545.16846, "b": 347.7179, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "the X character (for example, XXX-XX-1234).", "bbox": {"l": 165.59894, "t": 350.50473, "r": 364.67947, "b": 359.71771, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "-", "bbox": {"l": 152.0394, "t": 367.48453, "r": 157.59309, "b": 376.6975100000001, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Any other person sees the entire TAX_ID as masked, for example, XXX-XX-XXXX.", "bbox": {"l": 165.59995, "t": 367.48453, "r": 529.46362, "b": 376.6975100000001, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "To implement this column mask, run the SQL statement that is shown in Example 3-9.", "bbox": {"l": 151.19978, "t": 384.52411, "r": 530.0603, "b": 393.73709, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Example 3-9 Creating a mask on the TAX_ID column", "bbox": {"l": 136.8, "t": 406.51801, "r": 351.9873, "b": 414.84302, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CREATE MASK", "bbox": {"l": 136.8, "t": 423.67810000000003, "r": 192.91296, "b": 432.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "HR_SCHEMA.MASK_TAX_ID_ON_EMPLOYEES ", "bbox": {"l": 203.11533, "t": 423.67810000000003, "r": 381.65659, "b": 432.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "ON", "bbox": {"l": 136.8, "t": 435.67792, "r": 148.54184, "b": 444.45270000000005, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "HR_SCHEMA.EMPLOYEES AS EMPLOYEES ", "bbox": {"l": 177.89645, "t": 435.67792, "r": 371.63684, "b": 444.45270000000005, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "FOR COLUMN", "bbox": {"l": 136.8, "t": 447.67773, "r": 199.25916, "b": 456.45251, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "TAX_ID", "bbox": {"l": 211.75098, "t": 447.67773, "r": 249.22647, "b": 456.45251, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "RETURN ", "bbox": {"l": 136.8, "t": 459.67755, "r": 176.75952, "b": 468.45233, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "CASE ", "bbox": {"l": 136.8, "t": 471.67737, "r": 161.75977, "b": 480.45215, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1", "bbox": {"l": 152.84189, "t": 483.67719, "r": 441.59589, "b": 492.45197, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "THEN EMPLOYEES . TAX_ID ", "bbox": {"l": 154.01309, "t": 495.677, "r": 291.7178, "b": 504.45178, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 ", "bbox": {"l": 152.80757, "t": 519.67661, "r": 451.6156, "b": 528.45139, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "AND SESSION_USER = EMPLOYEES . USER_ID ", "bbox": {"l": 153.21835, "t": 531.67642, "r": 366.65683, "b": 540.45117, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "THEN EMPLOYEES . TAX_ID", "bbox": {"l": 154.09363, "t": 543.6762200000001, "r": 286.67804, "b": 552.45097, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 152.82599, "t": 567.67583, "r": 446.63561999999996, "b": 576.45058, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "AND SESSION_USER <> EMPLOYEES . USER_ID ", "bbox": {"l": 153.18398, "t": 579.67563, "r": 371.63684, "b": 588.45038, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( EMPLOYEES . TAX_ID , 8 , 4 ) )", "bbox": {"l": 152.60088, "t": 591.67543, "r": 526.55469, "b": 600.45018, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1 ", "bbox": {"l": 152.80757, "t": 615.67505, "r": 451.6156, "b": 624.4498, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "THEN EMPLOYEES . TAX_ID ", "bbox": {"l": 154.01309, "t": 627.67485, "r": 291.7178, "b": 636.4496, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ELSE 'XXX-XX-XXXX' ", "bbox": {"l": 154.5134, "t": 651.67447, "r": 266.69827, "b": 660.44922, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "END", "bbox": {"l": 136.8, "t": 663.67427, "r": 157.7877, "b": 672.44904, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "ENABLE ;", "bbox": {"l": 136.8, "t": 675.67409, "r": 181.73952, "b": 684.44884, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 344.5617370605469, "t": 754.6708374023438, "r": 523.60162, "b": 764.1358032226562, "coord_origin": "TOPLEFT"}, "confidence": 0.9556928277015686, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.6422729492188, "t": 754.1753540039062, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9105784296989441, "cells": [{"id": 1, "text": "27", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 136.79959, "t": 71.65845000000002, "r": 166.73935, "b": 92.43304, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "RETURN", "bbox": {"l": 136.79959, "t": 71.65845000000002, "r": 166.73935, "b": 80.43322999999998, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "CASE", "bbox": {"l": 136.79959, "t": 83.65826000000004, "r": 156.77934, "b": 92.43304, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "code", "bbox": {"l": 136.79959, "t": 91.76913452148438, "r": 521.57428, "b": 261.5705871582031, "coord_origin": "TOPLEFT"}, "confidence": 0.778520941734314, "cells": [{"id": 4, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR', 'EMP' ) = 1", "bbox": {"l": 147.26993, "t": 95.65808000000015, "r": 466.61502, "b": 104.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "THEN EMPLOYEES . DATE_OF_BIRTH", "bbox": {"l": 147.73068, "t": 107.65790000000004, "r": 311.69717, "b": 116.43268, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 147.31944, "t": 131.65752999999995, "r": 436.61547999999993, "b": 140.43231000000003, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "AND SESSION_USER = EMPLOYEES . USER_ID", "bbox": {"l": 147.54245, "t": 143.65734999999995, "r": 351.65668, "b": 152.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "THEN EMPLOYEES . DATE_OF_BIRTH", "bbox": {"l": 147.73068, "t": 155.65716999999995, "r": 311.69717, "b": 164.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 147.31944, "t": 179.65679999999998, "r": 436.61547999999993, "b": 188.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "AND SESSION_USER <> EMPLOYEES . USER_ID", "bbox": {"l": 147.52335, "t": 191.65661999999998, "r": 356.63669, "b": 200.43140000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "THEN ( 9999 || '-' ||", "bbox": {"l": 147.63832, "t": 203.65643, "r": 261.44492, "b": 212.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "MONTH ( EMPLOYEES . DATE_OF_BIRTH ) || '-'", "bbox": {"l": 272.28363, "t": 203.65643, "r": 499.89682, "b": 212.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "||", "bbox": {"l": 510.73557, "t": 203.65643, "r": 521.57428, "b": 212.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "DAY (EMPLOYEES.DATE_OF_BIRTH ))", "bbox": {"l": 160.78555, "t": 215.65625, "r": 346.6767, "b": 224.43102999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "ELSE NULL", "bbox": {"l": 149.51941, "t": 227.65607, "r": 206.75861, "b": 236.43084999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": " END", "bbox": {"l": 136.79959, "t": 239.65588000000002, "r": 156.77934, "b": 248.43066, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": " ENABLE ;", "bbox": {"l": 136.79959, "t": 251.65570000000002, "r": 186.7191, "b": 260.43048, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 135.86044311523438, "t": 274.4537353515625, "r": 547.21222, "b": 296.77191162109375, "coord_origin": "TOPLEFT"}, "confidence": 0.8678946495056152, "cells": [{"id": 18, "text": "2.", "bbox": {"l": 136.79959, "t": 275.50591999999995, "r": 145.18994, "b": 284.7189, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "The other column to mask in this example is the TAX_ID information. In this example, the ", "bbox": {"l": 147.98672, "t": 275.50591999999995, "r": 547.21222, "b": 284.7189, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "rules to enforce include the following ones:", "bbox": {"l": 151.19977, "t": 287.50574, "r": 339.37903, "b": 296.71871999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 151.1599578857422, "t": 303.3277282714844, "r": 469.1528, "b": 313.69852000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9461130499839783, "cells": [{"id": 21, "text": "-", "bbox": {"l": 152.0394, "t": 304.48553000000004, "r": 157.61201, "b": 313.69852000000003, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Human Resources can see the unmasked TAX_ID of the employees.", "bbox": {"l": 165.59894, "t": 304.48553000000004, "r": 469.1528, "b": 313.69852000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 151.2740936279297, "t": 320.54925537109375, "r": 403.95953, "b": 330.8575439453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9467734694480896, "cells": [{"id": 23, "text": "-", "bbox": {"l": 152.0394, "t": 321.52512, "r": 157.60504, "b": 330.7381, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Employees can see only their own unmasked TAX_ID.", "bbox": {"l": 165.59894, "t": 321.52512, "r": 403.95953, "b": 330.7381, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 151.4427947998047, "t": 337.3158264160156, "r": 545.16846, "b": 359.71771, "coord_origin": "TOPLEFT"}, "confidence": 0.9705167412757874, "cells": [{"id": 25, "text": "-", "bbox": {"l": 152.0394, "t": 338.50491, "r": 157.57019, "b": 347.7179, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Managers see a masked version of TAX_ID with the first five characters replaced with ", "bbox": {"l": 165.59894, "t": 338.50491, "r": 545.16846, "b": 347.7179, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "the X character (for example, XXX-XX-1234).", "bbox": {"l": 165.59894, "t": 350.50473, "r": 364.67947, "b": 359.71771, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 151.51747131347656, "t": 366.6339111328125, "r": 529.46362, "b": 377.1689147949219, "coord_origin": "TOPLEFT"}, "confidence": 0.9469640254974365, "cells": [{"id": 28, "text": "-", "bbox": {"l": 152.0394, "t": 367.48453, "r": 157.59309, "b": 376.6975100000001, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Any other person sees the entire TAX_ID as masked, for example, XXX-XX-XXXX.", "bbox": {"l": 165.59995, "t": 367.48453, "r": 529.46362, "b": 376.6975100000001, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 150.69093322753906, "t": 383.80133056640625, "r": 530.0603, "b": 394.17559814453125, "coord_origin": "TOPLEFT"}, "confidence": 0.7003507614135742, "cells": [{"id": 30, "text": "To implement this column mask, run the SQL statement that is shown in Example 3-9.", "bbox": {"l": 151.19978, "t": 384.52411, "r": 530.0603, "b": 393.73709, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "caption", "bbox": {"l": 136.25662231445312, "t": 405.446044921875, "r": 352.31475830078125, "b": 415.0381164550781, "coord_origin": "TOPLEFT"}, "confidence": 0.8488205075263977, "cells": [{"id": 31, "text": "Example 3-9 Creating a mask on the TAX_ID column", "bbox": {"l": 136.8, "t": 406.51801, "r": 351.9873, "b": 414.84302, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "code", "bbox": {"l": 135.95343017578125, "t": 418.5181884765625, "r": 535.87548828125, "b": 688.5432739257812, "coord_origin": "TOPLEFT"}, "confidence": 0.8411229848861694, "cells": [{"id": 32, "text": "CREATE MASK", "bbox": {"l": 136.8, "t": 423.67810000000003, "r": 192.91296, "b": 432.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "HR_SCHEMA.MASK_TAX_ID_ON_EMPLOYEES ", "bbox": {"l": 203.11533, "t": 423.67810000000003, "r": 381.65659, "b": 432.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "ON", "bbox": {"l": 136.8, "t": 435.67792, "r": 148.54184, "b": 444.45270000000005, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "HR_SCHEMA.EMPLOYEES AS EMPLOYEES ", "bbox": {"l": 177.89645, "t": 435.67792, "r": 371.63684, "b": 444.45270000000005, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "FOR COLUMN", "bbox": {"l": 136.8, "t": 447.67773, "r": 199.25916, "b": 456.45251, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "TAX_ID", "bbox": {"l": 211.75098, "t": 447.67773, "r": 249.22647, "b": 456.45251, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "RETURN ", "bbox": {"l": 136.8, "t": 459.67755, "r": 176.75952, "b": 468.45233, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "CASE ", "bbox": {"l": 136.8, "t": 471.67737, "r": 161.75977, "b": 480.45215, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1", "bbox": {"l": 152.84189, "t": 483.67719, "r": 441.59589, "b": 492.45197, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "THEN EMPLOYEES . TAX_ID ", "bbox": {"l": 154.01309, "t": 495.677, "r": 291.7178, "b": 504.45178, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 ", "bbox": {"l": 152.80757, "t": 519.67661, "r": 451.6156, "b": 528.45139, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "AND SESSION_USER = EMPLOYEES . USER_ID ", "bbox": {"l": 153.21835, "t": 531.67642, "r": 366.65683, "b": 540.45117, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "THEN EMPLOYEES . TAX_ID", "bbox": {"l": 154.09363, "t": 543.6762200000001, "r": 286.67804, "b": 552.45097, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 152.82599, "t": 567.67583, "r": 446.63561999999996, "b": 576.45058, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "AND SESSION_USER <> EMPLOYEES . USER_ID ", "bbox": {"l": 153.18398, "t": 579.67563, "r": 371.63684, "b": 588.45038, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( EMPLOYEES . TAX_ID , 8 , 4 ) )", "bbox": {"l": 152.60088, "t": 591.67543, "r": 526.55469, "b": 600.45018, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1 ", "bbox": {"l": 152.80757, "t": 615.67505, "r": 451.6156, "b": 624.4498, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "THEN EMPLOYEES . TAX_ID ", "bbox": {"l": 154.01309, "t": 627.67485, "r": 291.7178, "b": 636.4496, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ELSE 'XXX-XX-XXXX' ", "bbox": {"l": 154.5134, "t": 651.67447, "r": 266.69827, "b": 660.44922, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "END", "bbox": {"l": 136.8, "t": 663.67427, "r": 157.7877, "b": 672.44904, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "ENABLE ;", "bbox": {"l": 136.8, "t": 675.67409, "r": 181.73952, "b": 684.44884, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 42, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.5617370605469, "t": 754.6708374023438, "r": 523.60162, "b": 764.1358032226562, "coord_origin": "TOPLEFT"}, "confidence": 0.9556928277015686, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 42, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6422729492188, "t": 754.1753540039062, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9105784296989441, "cells": [{"id": 1, "text": "27", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "27"}, {"label": "text", "id": 2, "page_no": 42, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.79959, "t": 71.65845000000002, "r": 166.73935, "b": 92.43304, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "RETURN", "bbox": {"l": 136.79959, "t": 71.65845000000002, "r": 166.73935, "b": 80.43322999999998, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "CASE", "bbox": {"l": 136.79959, "t": 83.65826000000004, "r": 156.77934, "b": 92.43304, "coord_origin": "TOPLEFT"}}]}, "text": "RETURN CASE"}, {"label": "code", "id": 3, "page_no": 42, "cluster": {"id": 3, "label": "code", "bbox": {"l": 136.79959, "t": 91.76913452148438, "r": 521.57428, "b": 261.5705871582031, "coord_origin": "TOPLEFT"}, "confidence": 0.778520941734314, "cells": [{"id": 4, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR', 'EMP' ) = 1", "bbox": {"l": 147.26993, "t": 95.65808000000015, "r": 466.61502, "b": 104.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "THEN EMPLOYEES . DATE_OF_BIRTH", "bbox": {"l": 147.73068, "t": 107.65790000000004, "r": 311.69717, "b": 116.43268, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 147.31944, "t": 131.65752999999995, "r": 436.61547999999993, "b": 140.43231000000003, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "AND SESSION_USER = EMPLOYEES . USER_ID", "bbox": {"l": 147.54245, "t": 143.65734999999995, "r": 351.65668, "b": 152.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "THEN EMPLOYEES . DATE_OF_BIRTH", "bbox": {"l": 147.73068, "t": 155.65716999999995, "r": 311.69717, "b": 164.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 147.31944, "t": 179.65679999999998, "r": 436.61547999999993, "b": 188.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "AND SESSION_USER <> EMPLOYEES . USER_ID", "bbox": {"l": 147.52335, "t": 191.65661999999998, "r": 356.63669, "b": 200.43140000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "THEN ( 9999 || '-' ||", "bbox": {"l": 147.63832, "t": 203.65643, "r": 261.44492, "b": 212.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "MONTH ( EMPLOYEES . DATE_OF_BIRTH ) || '-'", "bbox": {"l": 272.28363, "t": 203.65643, "r": 499.89682, "b": 212.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "||", "bbox": {"l": 510.73557, "t": 203.65643, "r": 521.57428, "b": 212.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "DAY (EMPLOYEES.DATE_OF_BIRTH ))", "bbox": {"l": 160.78555, "t": 215.65625, "r": 346.6767, "b": 224.43102999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "ELSE NULL", "bbox": {"l": 149.51941, "t": 227.65607, "r": 206.75861, "b": 236.43084999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": " END", "bbox": {"l": 136.79959, "t": 239.65588000000002, "r": 156.77934, "b": 248.43066, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": " ENABLE ;", "bbox": {"l": 136.79959, "t": 251.65570000000002, "r": 186.7191, "b": 260.43048, "coord_origin": "TOPLEFT"}}]}, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR', 'EMP' ) = 1 THEN EMPLOYEES . DATE_OF_BIRTH WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER = EMPLOYEES . USER_ID THEN EMPLOYEES . DATE_OF_BIRTH WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER <> EMPLOYEES . USER_ID THEN ( 9999 || '-' || MONTH ( EMPLOYEES . DATE_OF_BIRTH ) || '-' || DAY (EMPLOYEES.DATE_OF_BIRTH )) ELSE NULL END ENABLE ;"}, {"label": "list_item", "id": 4, "page_no": 42, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.86044311523438, "t": 274.4537353515625, "r": 547.21222, "b": 296.77191162109375, "coord_origin": "TOPLEFT"}, "confidence": 0.8678946495056152, "cells": [{"id": 18, "text": "2.", "bbox": {"l": 136.79959, "t": 275.50591999999995, "r": 145.18994, "b": 284.7189, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "The other column to mask in this example is the TAX_ID information. In this example, the ", "bbox": {"l": 147.98672, "t": 275.50591999999995, "r": 547.21222, "b": 284.7189, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "rules to enforce include the following ones:", "bbox": {"l": 151.19977, "t": 287.50574, "r": 339.37903, "b": 296.71871999999996, "coord_origin": "TOPLEFT"}}]}, "text": "2. The other column to mask in this example is the TAX_ID information. In this example, the rules to enforce include the following ones:"}, {"label": "list_item", "id": 5, "page_no": 42, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 151.1599578857422, "t": 303.3277282714844, "r": 469.1528, "b": 313.69852000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9461130499839783, "cells": [{"id": 21, "text": "-", "bbox": {"l": 152.0394, "t": 304.48553000000004, "r": 157.61201, "b": 313.69852000000003, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Human Resources can see the unmasked TAX_ID of the employees.", "bbox": {"l": 165.59894, "t": 304.48553000000004, "r": 469.1528, "b": 313.69852000000003, "coord_origin": "TOPLEFT"}}]}, "text": "-Human Resources can see the unmasked TAX_ID of the employees."}, {"label": "list_item", "id": 6, "page_no": 42, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 151.2740936279297, "t": 320.54925537109375, "r": 403.95953, "b": 330.8575439453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9467734694480896, "cells": [{"id": 23, "text": "-", "bbox": {"l": 152.0394, "t": 321.52512, "r": 157.60504, "b": 330.7381, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Employees can see only their own unmasked TAX_ID.", "bbox": {"l": 165.59894, "t": 321.52512, "r": 403.95953, "b": 330.7381, "coord_origin": "TOPLEFT"}}]}, "text": "-Employees can see only their own unmasked TAX_ID."}, {"label": "list_item", "id": 7, "page_no": 42, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 151.4427947998047, "t": 337.3158264160156, "r": 545.16846, "b": 359.71771, "coord_origin": "TOPLEFT"}, "confidence": 0.9705167412757874, "cells": [{"id": 25, "text": "-", "bbox": {"l": 152.0394, "t": 338.50491, "r": 157.57019, "b": 347.7179, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Managers see a masked version of TAX_ID with the first five characters replaced with ", "bbox": {"l": 165.59894, "t": 338.50491, "r": 545.16846, "b": 347.7179, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "the X character (for example, XXX-XX-1234).", "bbox": {"l": 165.59894, "t": 350.50473, "r": 364.67947, "b": 359.71771, "coord_origin": "TOPLEFT"}}]}, "text": "-Managers see a masked version of TAX_ID with the first five characters replaced with the X character (for example, XXX-XX-1234)."}, {"label": "list_item", "id": 8, "page_no": 42, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 151.51747131347656, "t": 366.6339111328125, "r": 529.46362, "b": 377.1689147949219, "coord_origin": "TOPLEFT"}, "confidence": 0.9469640254974365, "cells": [{"id": 28, "text": "-", "bbox": {"l": 152.0394, "t": 367.48453, "r": 157.59309, "b": 376.6975100000001, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Any other person sees the entire TAX_ID as masked, for example, XXX-XX-XXXX.", "bbox": {"l": 165.59995, "t": 367.48453, "r": 529.46362, "b": 376.6975100000001, "coord_origin": "TOPLEFT"}}]}, "text": "-Any other person sees the entire TAX_ID as masked, for example, XXX-XX-XXXX."}, {"label": "list_item", "id": 9, "page_no": 42, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 150.69093322753906, "t": 383.80133056640625, "r": 530.0603, "b": 394.17559814453125, "coord_origin": "TOPLEFT"}, "confidence": 0.7003507614135742, "cells": [{"id": 30, "text": "To implement this column mask, run the SQL statement that is shown in Example 3-9.", "bbox": {"l": 151.19978, "t": 384.52411, "r": 530.0603, "b": 393.73709, "coord_origin": "TOPLEFT"}}]}, "text": "To implement this column mask, run the SQL statement that is shown in Example 3-9."}, {"label": "caption", "id": 10, "page_no": 42, "cluster": {"id": 10, "label": "caption", "bbox": {"l": 136.25662231445312, "t": 405.446044921875, "r": 352.31475830078125, "b": 415.0381164550781, "coord_origin": "TOPLEFT"}, "confidence": 0.8488205075263977, "cells": [{"id": 31, "text": "Example 3-9 Creating a mask on the TAX_ID column", "bbox": {"l": 136.8, "t": 406.51801, "r": 351.9873, "b": 414.84302, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-9 Creating a mask on the TAX_ID column"}, {"label": "code", "id": 11, "page_no": 42, "cluster": {"id": 11, "label": "code", "bbox": {"l": 135.95343017578125, "t": 418.5181884765625, "r": 535.87548828125, "b": 688.5432739257812, "coord_origin": "TOPLEFT"}, "confidence": 0.8411229848861694, "cells": [{"id": 32, "text": "CREATE MASK", "bbox": {"l": 136.8, "t": 423.67810000000003, "r": 192.91296, "b": 432.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "HR_SCHEMA.MASK_TAX_ID_ON_EMPLOYEES ", "bbox": {"l": 203.11533, "t": 423.67810000000003, "r": 381.65659, "b": 432.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "ON", "bbox": {"l": 136.8, "t": 435.67792, "r": 148.54184, "b": 444.45270000000005, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "HR_SCHEMA.EMPLOYEES AS EMPLOYEES ", "bbox": {"l": 177.89645, "t": 435.67792, "r": 371.63684, "b": 444.45270000000005, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "FOR COLUMN", "bbox": {"l": 136.8, "t": 447.67773, "r": 199.25916, "b": 456.45251, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "TAX_ID", "bbox": {"l": 211.75098, "t": 447.67773, "r": 249.22647, "b": 456.45251, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "RETURN ", "bbox": {"l": 136.8, "t": 459.67755, "r": 176.75952, "b": 468.45233, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "CASE ", "bbox": {"l": 136.8, "t": 471.67737, "r": 161.75977, "b": 480.45215, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1", "bbox": {"l": 152.84189, "t": 483.67719, "r": 441.59589, "b": 492.45197, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "THEN EMPLOYEES . TAX_ID ", "bbox": {"l": 154.01309, "t": 495.677, "r": 291.7178, "b": 504.45178, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 ", "bbox": {"l": 152.80757, "t": 519.67661, "r": 451.6156, "b": 528.45139, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "AND SESSION_USER = EMPLOYEES . USER_ID ", "bbox": {"l": 153.21835, "t": 531.67642, "r": 366.65683, "b": 540.45117, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "THEN EMPLOYEES . TAX_ID", "bbox": {"l": 154.09363, "t": 543.6762200000001, "r": 286.67804, "b": 552.45097, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 152.82599, "t": 567.67583, "r": 446.63561999999996, "b": 576.45058, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "AND SESSION_USER <> EMPLOYEES . USER_ID ", "bbox": {"l": 153.18398, "t": 579.67563, "r": 371.63684, "b": 588.45038, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( EMPLOYEES . TAX_ID , 8 , 4 ) )", "bbox": {"l": 152.60088, "t": 591.67543, "r": 526.55469, "b": 600.45018, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1 ", "bbox": {"l": 152.80757, "t": 615.67505, "r": 451.6156, "b": 624.4498, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "THEN EMPLOYEES . TAX_ID ", "bbox": {"l": 154.01309, "t": 627.67485, "r": 291.7178, "b": 636.4496, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ELSE 'XXX-XX-XXXX' ", "bbox": {"l": 154.5134, "t": 651.67447, "r": 266.69827, "b": 660.44922, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "END", "bbox": {"l": 136.8, "t": 663.67427, "r": 157.7877, "b": 672.44904, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "ENABLE ;", "bbox": {"l": 136.8, "t": 675.67409, "r": 181.73952, "b": 684.44884, "coord_origin": "TOPLEFT"}}]}, "text": "CREATE MASK HR_SCHEMA.MASK_TAX_ID_ON_EMPLOYEES ON HR_SCHEMA.EMPLOYEES AS EMPLOYEES FOR COLUMN TAX_ID RETURN CASE WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1 THEN EMPLOYEES . TAX_ID WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER = EMPLOYEES . USER_ID THEN EMPLOYEES . TAX_ID WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER <> EMPLOYEES . USER_ID THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( EMPLOYEES . TAX_ID , 8 , 4 ) ) WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1 THEN EMPLOYEES . TAX_ID ELSE 'XXX-XX-XXXX' END ENABLE ;"}], "body": [{"label": "text", "id": 2, "page_no": 42, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.79959, "t": 71.65845000000002, "r": 166.73935, "b": 92.43304, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "RETURN", "bbox": {"l": 136.79959, "t": 71.65845000000002, "r": 166.73935, "b": 80.43322999999998, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "CASE", "bbox": {"l": 136.79959, "t": 83.65826000000004, "r": 156.77934, "b": 92.43304, "coord_origin": "TOPLEFT"}}]}, "text": "RETURN CASE"}, {"label": "code", "id": 3, "page_no": 42, "cluster": {"id": 3, "label": "code", "bbox": {"l": 136.79959, "t": 91.76913452148438, "r": 521.57428, "b": 261.5705871582031, "coord_origin": "TOPLEFT"}, "confidence": 0.778520941734314, "cells": [{"id": 4, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR', 'EMP' ) = 1", "bbox": {"l": 147.26993, "t": 95.65808000000015, "r": 466.61502, "b": 104.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "THEN EMPLOYEES . DATE_OF_BIRTH", "bbox": {"l": 147.73068, "t": 107.65790000000004, "r": 311.69717, "b": 116.43268, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 147.31944, "t": 131.65752999999995, "r": 436.61547999999993, "b": 140.43231000000003, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "AND SESSION_USER = EMPLOYEES . USER_ID", "bbox": {"l": 147.54245, "t": 143.65734999999995, "r": 351.65668, "b": 152.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "THEN EMPLOYEES . DATE_OF_BIRTH", "bbox": {"l": 147.73068, "t": 155.65716999999995, "r": 311.69717, "b": 164.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 147.31944, "t": 179.65679999999998, "r": 436.61547999999993, "b": 188.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "AND SESSION_USER <> EMPLOYEES . USER_ID", "bbox": {"l": 147.52335, "t": 191.65661999999998, "r": 356.63669, "b": 200.43140000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "THEN ( 9999 || '-' ||", "bbox": {"l": 147.63832, "t": 203.65643, "r": 261.44492, "b": 212.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "MONTH ( EMPLOYEES . DATE_OF_BIRTH ) || '-'", "bbox": {"l": 272.28363, "t": 203.65643, "r": 499.89682, "b": 212.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "||", "bbox": {"l": 510.73557, "t": 203.65643, "r": 521.57428, "b": 212.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "DAY (EMPLOYEES.DATE_OF_BIRTH ))", "bbox": {"l": 160.78555, "t": 215.65625, "r": 346.6767, "b": 224.43102999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "ELSE NULL", "bbox": {"l": 149.51941, "t": 227.65607, "r": 206.75861, "b": 236.43084999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": " END", "bbox": {"l": 136.79959, "t": 239.65588000000002, "r": 156.77934, "b": 248.43066, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": " ENABLE ;", "bbox": {"l": 136.79959, "t": 251.65570000000002, "r": 186.7191, "b": 260.43048, "coord_origin": "TOPLEFT"}}]}, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR', 'EMP' ) = 1 THEN EMPLOYEES . DATE_OF_BIRTH WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER = EMPLOYEES . USER_ID THEN EMPLOYEES . DATE_OF_BIRTH WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER <> EMPLOYEES . USER_ID THEN ( 9999 || '-' || MONTH ( EMPLOYEES . DATE_OF_BIRTH ) || '-' || DAY (EMPLOYEES.DATE_OF_BIRTH )) ELSE NULL END ENABLE ;"}, {"label": "list_item", "id": 4, "page_no": 42, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.86044311523438, "t": 274.4537353515625, "r": 547.21222, "b": 296.77191162109375, "coord_origin": "TOPLEFT"}, "confidence": 0.8678946495056152, "cells": [{"id": 18, "text": "2.", "bbox": {"l": 136.79959, "t": 275.50591999999995, "r": 145.18994, "b": 284.7189, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "The other column to mask in this example is the TAX_ID information. In this example, the ", "bbox": {"l": 147.98672, "t": 275.50591999999995, "r": 547.21222, "b": 284.7189, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "rules to enforce include the following ones:", "bbox": {"l": 151.19977, "t": 287.50574, "r": 339.37903, "b": 296.71871999999996, "coord_origin": "TOPLEFT"}}]}, "text": "2. The other column to mask in this example is the TAX_ID information. In this example, the rules to enforce include the following ones:"}, {"label": "list_item", "id": 5, "page_no": 42, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 151.1599578857422, "t": 303.3277282714844, "r": 469.1528, "b": 313.69852000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9461130499839783, "cells": [{"id": 21, "text": "-", "bbox": {"l": 152.0394, "t": 304.48553000000004, "r": 157.61201, "b": 313.69852000000003, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Human Resources can see the unmasked TAX_ID of the employees.", "bbox": {"l": 165.59894, "t": 304.48553000000004, "r": 469.1528, "b": 313.69852000000003, "coord_origin": "TOPLEFT"}}]}, "text": "-Human Resources can see the unmasked TAX_ID of the employees."}, {"label": "list_item", "id": 6, "page_no": 42, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 151.2740936279297, "t": 320.54925537109375, "r": 403.95953, "b": 330.8575439453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9467734694480896, "cells": [{"id": 23, "text": "-", "bbox": {"l": 152.0394, "t": 321.52512, "r": 157.60504, "b": 330.7381, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Employees can see only their own unmasked TAX_ID.", "bbox": {"l": 165.59894, "t": 321.52512, "r": 403.95953, "b": 330.7381, "coord_origin": "TOPLEFT"}}]}, "text": "-Employees can see only their own unmasked TAX_ID."}, {"label": "list_item", "id": 7, "page_no": 42, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 151.4427947998047, "t": 337.3158264160156, "r": 545.16846, "b": 359.71771, "coord_origin": "TOPLEFT"}, "confidence": 0.9705167412757874, "cells": [{"id": 25, "text": "-", "bbox": {"l": 152.0394, "t": 338.50491, "r": 157.57019, "b": 347.7179, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Managers see a masked version of TAX_ID with the first five characters replaced with ", "bbox": {"l": 165.59894, "t": 338.50491, "r": 545.16846, "b": 347.7179, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "the X character (for example, XXX-XX-1234).", "bbox": {"l": 165.59894, "t": 350.50473, "r": 364.67947, "b": 359.71771, "coord_origin": "TOPLEFT"}}]}, "text": "-Managers see a masked version of TAX_ID with the first five characters replaced with the X character (for example, XXX-XX-1234)."}, {"label": "list_item", "id": 8, "page_no": 42, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 151.51747131347656, "t": 366.6339111328125, "r": 529.46362, "b": 377.1689147949219, "coord_origin": "TOPLEFT"}, "confidence": 0.9469640254974365, "cells": [{"id": 28, "text": "-", "bbox": {"l": 152.0394, "t": 367.48453, "r": 157.59309, "b": 376.6975100000001, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Any other person sees the entire TAX_ID as masked, for example, XXX-XX-XXXX.", "bbox": {"l": 165.59995, "t": 367.48453, "r": 529.46362, "b": 376.6975100000001, "coord_origin": "TOPLEFT"}}]}, "text": "-Any other person sees the entire TAX_ID as masked, for example, XXX-XX-XXXX."}, {"label": "list_item", "id": 9, "page_no": 42, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 150.69093322753906, "t": 383.80133056640625, "r": 530.0603, "b": 394.17559814453125, "coord_origin": "TOPLEFT"}, "confidence": 0.7003507614135742, "cells": [{"id": 30, "text": "To implement this column mask, run the SQL statement that is shown in Example 3-9.", "bbox": {"l": 151.19978, "t": 384.52411, "r": 530.0603, "b": 393.73709, "coord_origin": "TOPLEFT"}}]}, "text": "To implement this column mask, run the SQL statement that is shown in Example 3-9."}, {"label": "caption", "id": 10, "page_no": 42, "cluster": {"id": 10, "label": "caption", "bbox": {"l": 136.25662231445312, "t": 405.446044921875, "r": 352.31475830078125, "b": 415.0381164550781, "coord_origin": "TOPLEFT"}, "confidence": 0.8488205075263977, "cells": [{"id": 31, "text": "Example 3-9 Creating a mask on the TAX_ID column", "bbox": {"l": 136.8, "t": 406.51801, "r": 351.9873, "b": 414.84302, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-9 Creating a mask on the TAX_ID column"}, {"label": "code", "id": 11, "page_no": 42, "cluster": {"id": 11, "label": "code", "bbox": {"l": 135.95343017578125, "t": 418.5181884765625, "r": 535.87548828125, "b": 688.5432739257812, "coord_origin": "TOPLEFT"}, "confidence": 0.8411229848861694, "cells": [{"id": 32, "text": "CREATE MASK", "bbox": {"l": 136.8, "t": 423.67810000000003, "r": 192.91296, "b": 432.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "HR_SCHEMA.MASK_TAX_ID_ON_EMPLOYEES ", "bbox": {"l": 203.11533, "t": 423.67810000000003, "r": 381.65659, "b": 432.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "ON", "bbox": {"l": 136.8, "t": 435.67792, "r": 148.54184, "b": 444.45270000000005, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "HR_SCHEMA.EMPLOYEES AS EMPLOYEES ", "bbox": {"l": 177.89645, "t": 435.67792, "r": 371.63684, "b": 444.45270000000005, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "FOR COLUMN", "bbox": {"l": 136.8, "t": 447.67773, "r": 199.25916, "b": 456.45251, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "TAX_ID", "bbox": {"l": 211.75098, "t": 447.67773, "r": 249.22647, "b": 456.45251, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "RETURN ", "bbox": {"l": 136.8, "t": 459.67755, "r": 176.75952, "b": 468.45233, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "CASE ", "bbox": {"l": 136.8, "t": 471.67737, "r": 161.75977, "b": 480.45215, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1", "bbox": {"l": 152.84189, "t": 483.67719, "r": 441.59589, "b": 492.45197, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "THEN EMPLOYEES . TAX_ID ", "bbox": {"l": 154.01309, "t": 495.677, "r": 291.7178, "b": 504.45178, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 ", "bbox": {"l": 152.80757, "t": 519.67661, "r": 451.6156, "b": 528.45139, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "AND SESSION_USER = EMPLOYEES . USER_ID ", "bbox": {"l": 153.21835, "t": 531.67642, "r": 366.65683, "b": 540.45117, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "THEN EMPLOYEES . TAX_ID", "bbox": {"l": 154.09363, "t": 543.6762200000001, "r": 286.67804, "b": 552.45097, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 152.82599, "t": 567.67583, "r": 446.63561999999996, "b": 576.45058, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "AND SESSION_USER <> EMPLOYEES . USER_ID ", "bbox": {"l": 153.18398, "t": 579.67563, "r": 371.63684, "b": 588.45038, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( EMPLOYEES . TAX_ID , 8 , 4 ) )", "bbox": {"l": 152.60088, "t": 591.67543, "r": 526.55469, "b": 600.45018, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1 ", "bbox": {"l": 152.80757, "t": 615.67505, "r": 451.6156, "b": 624.4498, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "THEN EMPLOYEES . TAX_ID ", "bbox": {"l": 154.01309, "t": 627.67485, "r": 291.7178, "b": 636.4496, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ELSE 'XXX-XX-XXXX' ", "bbox": {"l": 154.5134, "t": 651.67447, "r": 266.69827, "b": 660.44922, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "END", "bbox": {"l": 136.8, "t": 663.67427, "r": 157.7877, "b": 672.44904, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "ENABLE ;", "bbox": {"l": 136.8, "t": 675.67409, "r": 181.73952, "b": 684.44884, "coord_origin": "TOPLEFT"}}]}, "text": "CREATE MASK HR_SCHEMA.MASK_TAX_ID_ON_EMPLOYEES ON HR_SCHEMA.EMPLOYEES AS EMPLOYEES FOR COLUMN TAX_ID RETURN CASE WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1 THEN EMPLOYEES . TAX_ID WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER = EMPLOYEES . USER_ID THEN EMPLOYEES . TAX_ID WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER <> EMPLOYEES . USER_ID THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( EMPLOYEES . TAX_ID , 8 , 4 ) ) WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1 THEN EMPLOYEES . TAX_ID ELSE 'XXX-XX-XXXX' END ENABLE ;"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 42, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.5617370605469, "t": 754.6708374023438, "r": 523.60162, "b": 764.1358032226562, "coord_origin": "TOPLEFT"}, "confidence": 0.9556928277015686, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 42, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6422729492188, "t": 754.1753540039062, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9105784296989441, "cells": [{"id": 1, "text": "27", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "27"}]}}, {"page_no": 43, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "28 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "3.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.22156, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 3-10 shows the masks that are created in the HR_SCHEMA.", "bbox": {"l": 148.02872, "t": 71.50867000000005, "r": 449.9523899999999, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 3-10 Column masks shown in System i Navigator", "bbox": {"l": 64.800003, "t": 173.53801999999996, "r": 293.13809, "b": 181.86298, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "3.6.6", "bbox": {"l": 64.800003, "t": 202.37469, "r": 94.275139, "b": 214.36273000000006, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Activating RCAC", "bbox": {"l": 97.959534, "t": 202.37469, "r": 203.98521, "b": 214.36273000000006, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Now that you have created the row permission and the two column masks, RCAC must be ", "bbox": {"l": 136.8, "t": 228.52868999999998, "r": 537.09131, "b": 237.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "activated. The row permission and the two column masks are enabled (last clause in the ", "bbox": {"l": 136.8, "t": 240.5285, "r": 529.20422, "b": 249.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "scripts), but now you must activate RCAC on the table. To do so, complete the following steps:", "bbox": {"l": 136.8, "t": 252.52832, "r": 547.22565, "b": 261.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "1.", "bbox": {"l": 136.8, "t": 269.50811999999996, "r": 145.32378, "b": 278.72113, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Run the SQL statements that are shown in Example 3-10.", "bbox": {"l": 148.16501, "t": 269.50811999999996, "r": 409.47888, "b": 278.72113, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Example 3-10 Activating RCAC on the EMPLOYEES table ", "bbox": {"l": 136.8, "t": 291.55798, "r": 375.29099, "b": 299.88300000000004, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "/*", "bbox": {"l": 136.8, "t": 308.65811, "r": 147.22942, "b": 317.43289, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Active Row Access Control (permissions) */", "bbox": {"l": 157.65884, "t": 308.65811, "r": 376.67661, "b": 317.43289, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "/*", "bbox": {"l": 136.8, "t": 320.65793, "r": 147.70349, "b": 329.43271, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Active Column Access Control (masks)", "bbox": {"l": 158.60696, "t": 320.65793, "r": 354.86963, "b": 329.43271, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "*/", "bbox": {"l": 365.77313, "t": 320.65793, "r": 376.67661, "b": 329.43271, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ALTER TABLE HR_SCHEMA.EMPLOYEES", "bbox": {"l": 136.8, "t": 332.65775, "r": 291.7178, "b": 341.43253, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ACTIVATE ROW ACCESS CONTROL", "bbox": {"l": 136.8, "t": 344.65756, "r": 271.67831, "b": 353.43234000000007, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "ACTIVATE COLUMN ACCESS CONTROL;", "bbox": {"l": 136.8, "t": 356.65738, "r": 291.7178, "b": 365.43216, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "2.", "bbox": {"l": 136.8, "t": 380.5076, "r": 145.14954, "b": 389.72058, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Look at the definition of the EMPLOYEE table, as shown in Figure 3-11. To do this, from ", "bbox": {"l": 147.93271, "t": 380.5076, "r": 540.80145, "b": 389.72058, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "the main navigation pane of System i Navigator, click ", "bbox": {"l": 151.20013, "t": 392.50742, "r": 387.36169, "b": 401.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Schemas", "bbox": {"l": 387.29993, "t": 392.50742, "r": 431.07614, "b": 401.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "\uf0ae", "bbox": {"l": 433.85992000000005, "t": 389.64889999999997, "r": 443.69043, "b": 401.83994, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "HR_SCHEMA", "bbox": {"l": 446.51906999999994, "t": 392.50742, "r": 509.73618000000005, "b": 401.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "\uf0ae", "bbox": {"l": 512.5788, "t": 389.64889999999997, "r": 522.4093, "b": 401.83994, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Tables", "bbox": {"l": 151.19812, "t": 404.50723000000005, "r": 181.12892, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ", right-click the ", "bbox": {"l": 181.79823, "t": 404.50723000000005, "r": 248.99638, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "EMPLOYEES", "bbox": {"l": 248.93860000000004, "t": 404.50723000000005, "r": 310.44357, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " table, and click ", "bbox": {"l": 310.49835, "t": 404.50723000000005, "r": 381.53305, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Definition", "bbox": {"l": 381.59882, "t": 404.50723000000005, "r": 427.68176, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": ".", "bbox": {"l": 427.67877, "t": 404.50723000000005, "r": 430.4476599999999, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Figure 3-11 Selecting the EMPLOYEES table from System i Navigator", "bbox": {"l": 64.800003, "t": 649.0378900000001, "r": 347.43054, "b": 657.3629, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.84088897705078, "t": 754.3895874023438, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9162001013755798, "cells": [{"id": 0, "text": "28 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.28304290771484, "t": 754.72412109375, "r": 334.42142, "b": 763.943603515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9540064334869385, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 136.14459228515625, "t": 70.61093139648438, "r": 449.9523899999999, "b": 81.22673034667969, "coord_origin": "TOPLEFT"}, "confidence": 0.8751051425933838, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.22156, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 3-10 shows the masks that are created in the HR_SCHEMA.", "bbox": {"l": 148.02872, "t": 71.50867000000005, "r": 449.9523899999999, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.17350769042969, "t": 172.7456512451172, "r": 294.42578125, "b": 181.8983612060547, "coord_origin": "TOPLEFT"}, "confidence": 0.944426953792572, "cells": [{"id": 4, "text": "Figure 3-10 Column masks shown in System i Navigator", "bbox": {"l": 64.800003, "t": 173.53801999999996, "r": 293.13809, "b": 181.86298, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 64.29059600830078, "t": 201.6618194580078, "r": 203.98521, "b": 214.99534606933594, "coord_origin": "TOPLEFT"}, "confidence": 0.9645015001296997, "cells": [{"id": 5, "text": "3.6.6", "bbox": {"l": 64.800003, "t": 202.37469, "r": 94.275139, "b": 214.36273000000006, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Activating RCAC", "bbox": {"l": 97.959534, "t": 202.37469, "r": 203.98521, "b": 214.36273000000006, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.1686553955078, "t": 228.097412109375, "r": 547.22565, "b": 262.4639587402344, "coord_origin": "TOPLEFT"}, "confidence": 0.9768573045730591, "cells": [{"id": 7, "text": "Now that you have created the row permission and the two column masks, RCAC must be ", "bbox": {"l": 136.8, "t": 228.52868999999998, "r": 537.09131, "b": 237.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "activated. The row permission and the two column masks are enabled (last clause in the ", "bbox": {"l": 136.8, "t": 240.5285, "r": 529.20422, "b": 249.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "scripts), but now you must activate RCAC on the table. To do so, complete the following steps:", "bbox": {"l": 136.8, "t": 252.52832, "r": 547.22565, "b": 261.74132999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 136.5933074951172, "t": 268.52996826171875, "r": 409.47888, "b": 278.8722229003906, "coord_origin": "TOPLEFT"}, "confidence": 0.9059442281723022, "cells": [{"id": 10, "text": "1.", "bbox": {"l": 136.8, "t": 269.50811999999996, "r": 145.32378, "b": 278.72113, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Run the SQL statements that are shown in Example 3-10.", "bbox": {"l": 148.16501, "t": 269.50811999999996, "r": 409.47888, "b": 278.72113, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "section_header", "bbox": {"l": 136.31597900390625, "t": 290.4278564453125, "r": 375.29099, "b": 300.4970703125, "coord_origin": "TOPLEFT"}, "confidence": 0.6570106148719788, "cells": [{"id": 12, "text": "Example 3-10 Activating RCAC on the EMPLOYEES table ", "bbox": {"l": 136.8, "t": 291.55798, "r": 375.29099, "b": 299.88300000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.7803192138672, "t": 307.09222412109375, "r": 376.67661, "b": 318.0027160644531, "coord_origin": "TOPLEFT"}, "confidence": 0.6002406477928162, "cells": [{"id": 13, "text": "/*", "bbox": {"l": 136.8, "t": 308.65811, "r": 147.22942, "b": 317.43289, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Active Row Access Control (permissions) */", "bbox": {"l": 157.65884, "t": 308.65811, "r": 376.67661, "b": 317.43289, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 136.8, "t": 320.65793, "r": 354.86963, "b": 365.43216, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 15, "text": "/*", "bbox": {"l": 136.8, "t": 320.65793, "r": 147.70349, "b": 329.43271, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Active Column Access Control (masks)", "bbox": {"l": 158.60696, "t": 320.65793, "r": 354.86963, "b": 329.43271, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ALTER TABLE HR_SCHEMA.EMPLOYEES", "bbox": {"l": 136.8, "t": 332.65775, "r": 291.7178, "b": 341.43253, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ACTIVATE ROW ACCESS CONTROL", "bbox": {"l": 136.8, "t": 344.65756, "r": 271.67831, "b": 353.43234000000007, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "ACTIVATE COLUMN ACCESS CONTROL;", "bbox": {"l": 136.8, "t": 356.65738, "r": 291.7178, "b": 365.43216, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 365.77313, "t": 320.65793, "r": 376.67661, "b": 329.43271, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 17, "text": "*/", "bbox": {"l": 365.77313, "t": 320.65793, "r": 376.67661, "b": 329.43271, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 135.87640380859375, "t": 379.3264465332031, "r": 540.80145, "b": 413.72021, "coord_origin": "TOPLEFT"}, "confidence": 0.9449256658554077, "cells": [{"id": 21, "text": "2.", "bbox": {"l": 136.8, "t": 380.5076, "r": 145.14954, "b": 389.72058, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Look at the definition of the EMPLOYEE table, as shown in Figure 3-11. To do this, from ", "bbox": {"l": 147.93271, "t": 380.5076, "r": 540.80145, "b": 389.72058, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "the main navigation pane of System i Navigator, click ", "bbox": {"l": 151.20013, "t": 392.50742, "r": 387.36169, "b": 401.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Schemas", "bbox": {"l": 387.29993, "t": 392.50742, "r": 431.07614, "b": 401.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "\uf0ae", "bbox": {"l": 433.85992000000005, "t": 389.64889999999997, "r": 443.69043, "b": 401.83994, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "HR_SCHEMA", "bbox": {"l": 446.51906999999994, "t": 392.50742, "r": 509.73618000000005, "b": 401.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "\uf0ae", "bbox": {"l": 512.5788, "t": 389.64889999999997, "r": 522.4093, "b": 401.83994, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Tables", "bbox": {"l": 151.19812, "t": 404.50723000000005, "r": 181.12892, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ", right-click the ", "bbox": {"l": 181.79823, "t": 404.50723000000005, "r": 248.99638, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "EMPLOYEES", "bbox": {"l": 248.93860000000004, "t": 404.50723000000005, "r": 310.44357, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " table, and click ", "bbox": {"l": 310.49835, "t": 404.50723000000005, "r": 381.53305, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Definition", "bbox": {"l": 381.59882, "t": 404.50723000000005, "r": 427.68176, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": ".", "bbox": {"l": 427.67877, "t": 404.50723000000005, "r": 430.4476599999999, "b": 413.72021, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "caption", "bbox": {"l": 64.33819580078125, "t": 648.241943359375, "r": 348.354736328125, "b": 657.4004516601562, "coord_origin": "TOPLEFT"}, "confidence": 0.9499983787536621, "cells": [{"id": 34, "text": "Figure 3-11 Selecting the EMPLOYEES table from System i Navigator", "bbox": {"l": 64.800003, "t": 649.0378900000001, "r": 347.43054, "b": 657.3629, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "picture", "bbox": {"l": 63.98516845703125, "t": 427.9049987792969, "r": 530.0479125976562, "b": 646.1395874023438, "coord_origin": "TOPLEFT"}, "confidence": 0.9801459908485413, "cells": []}, {"id": 14, "label": "picture", "bbox": {"l": 63.801902770996094, "t": 95.38243103027344, "r": 547.11474609375, "b": 170.03213500976562, "coord_origin": "TOPLEFT"}, "confidence": 0.9635391235351562, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 43, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.84088897705078, "t": 754.3895874023438, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9162001013755798, "cells": [{"id": 0, "text": "28 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "28"}, {"label": "page_footer", "id": 1, "page_no": 43, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.28304290771484, "t": 754.72412109375, "r": 334.42142, "b": 763.943603515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9540064334869385, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "list_item", "id": 2, "page_no": 43, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.14459228515625, "t": 70.61093139648438, "r": 449.9523899999999, "b": 81.22673034667969, "coord_origin": "TOPLEFT"}, "confidence": 0.8751051425933838, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.22156, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 3-10 shows the masks that are created in the HR_SCHEMA.", "bbox": {"l": 148.02872, "t": 71.50867000000005, "r": 449.9523899999999, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "3. Figure 3-10 shows the masks that are created in the HR_SCHEMA."}, {"label": "caption", "id": 3, "page_no": 43, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.17350769042969, "t": 172.7456512451172, "r": 294.42578125, "b": 181.8983612060547, "coord_origin": "TOPLEFT"}, "confidence": 0.944426953792572, "cells": [{"id": 4, "text": "Figure 3-10 Column masks shown in System i Navigator", "bbox": {"l": 64.800003, "t": 173.53801999999996, "r": 293.13809, "b": 181.86298, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-10 Column masks shown in System i Navigator"}, {"label": "section_header", "id": 4, "page_no": 43, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.29059600830078, "t": 201.6618194580078, "r": 203.98521, "b": 214.99534606933594, "coord_origin": "TOPLEFT"}, "confidence": 0.9645015001296997, "cells": [{"id": 5, "text": "3.6.6", "bbox": {"l": 64.800003, "t": 202.37469, "r": 94.275139, "b": 214.36273000000006, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Activating RCAC", "bbox": {"l": 97.959534, "t": 202.37469, "r": 203.98521, "b": 214.36273000000006, "coord_origin": "TOPLEFT"}}]}, "text": "3.6.6 Activating RCAC"}, {"label": "text", "id": 5, "page_no": 43, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.1686553955078, "t": 228.097412109375, "r": 547.22565, "b": 262.4639587402344, "coord_origin": "TOPLEFT"}, "confidence": 0.9768573045730591, "cells": [{"id": 7, "text": "Now that you have created the row permission and the two column masks, RCAC must be ", "bbox": {"l": 136.8, "t": 228.52868999999998, "r": 537.09131, "b": 237.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "activated. The row permission and the two column masks are enabled (last clause in the ", "bbox": {"l": 136.8, "t": 240.5285, "r": 529.20422, "b": 249.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "scripts), but now you must activate RCAC on the table. To do so, complete the following steps:", "bbox": {"l": 136.8, "t": 252.52832, "r": 547.22565, "b": 261.74132999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Now that you have created the row permission and the two column masks, RCAC must be activated. The row permission and the two column masks are enabled (last clause in the scripts), but now you must activate RCAC on the table. To do so, complete the following steps:"}, {"label": "list_item", "id": 6, "page_no": 43, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.5933074951172, "t": 268.52996826171875, "r": 409.47888, "b": 278.8722229003906, "coord_origin": "TOPLEFT"}, "confidence": 0.9059442281723022, "cells": [{"id": 10, "text": "1.", "bbox": {"l": 136.8, "t": 269.50811999999996, "r": 145.32378, "b": 278.72113, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Run the SQL statements that are shown in Example 3-10.", "bbox": {"l": 148.16501, "t": 269.50811999999996, "r": 409.47888, "b": 278.72113, "coord_origin": "TOPLEFT"}}]}, "text": "1. Run the SQL statements that are shown in Example 3-10."}, {"label": "section_header", "id": 7, "page_no": 43, "cluster": {"id": 7, "label": "section_header", "bbox": {"l": 136.31597900390625, "t": 290.4278564453125, "r": 375.29099, "b": 300.4970703125, "coord_origin": "TOPLEFT"}, "confidence": 0.6570106148719788, "cells": [{"id": 12, "text": "Example 3-10 Activating RCAC on the EMPLOYEES table ", "bbox": {"l": 136.8, "t": 291.55798, "r": 375.29099, "b": 299.88300000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-10 Activating RCAC on the EMPLOYEES table"}, {"label": "list_item", "id": 8, "page_no": 43, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.7803192138672, "t": 307.09222412109375, "r": 376.67661, "b": 318.0027160644531, "coord_origin": "TOPLEFT"}, "confidence": 0.6002406477928162, "cells": [{"id": 13, "text": "/*", "bbox": {"l": 136.8, "t": 308.65811, "r": 147.22942, "b": 317.43289, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Active Row Access Control (permissions) */", "bbox": {"l": 157.65884, "t": 308.65811, "r": 376.67661, "b": 317.43289, "coord_origin": "TOPLEFT"}}]}, "text": "/* Active Row Access Control (permissions) */"}, {"label": "text", "id": 9, "page_no": 43, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.8, "t": 320.65793, "r": 354.86963, "b": 365.43216, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 15, "text": "/*", "bbox": {"l": 136.8, "t": 320.65793, "r": 147.70349, "b": 329.43271, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Active Column Access Control (masks)", "bbox": {"l": 158.60696, "t": 320.65793, "r": 354.86963, "b": 329.43271, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ALTER TABLE HR_SCHEMA.EMPLOYEES", "bbox": {"l": 136.8, "t": 332.65775, "r": 291.7178, "b": 341.43253, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ACTIVATE ROW ACCESS CONTROL", "bbox": {"l": 136.8, "t": 344.65756, "r": 271.67831, "b": 353.43234000000007, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "ACTIVATE COLUMN ACCESS CONTROL;", "bbox": {"l": 136.8, "t": 356.65738, "r": 291.7178, "b": 365.43216, "coord_origin": "TOPLEFT"}}]}, "text": "/* Active Column Access Control (masks) ALTER TABLE HR_SCHEMA.EMPLOYEES ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL;"}, {"label": "text", "id": 10, "page_no": 43, "cluster": {"id": 10, "label": "text", "bbox": {"l": 365.77313, "t": 320.65793, "r": 376.67661, "b": 329.43271, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 17, "text": "*/", "bbox": {"l": 365.77313, "t": 320.65793, "r": 376.67661, "b": 329.43271, "coord_origin": "TOPLEFT"}}]}, "text": "*/"}, {"label": "list_item", "id": 11, "page_no": 43, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.87640380859375, "t": 379.3264465332031, "r": 540.80145, "b": 413.72021, "coord_origin": "TOPLEFT"}, "confidence": 0.9449256658554077, "cells": [{"id": 21, "text": "2.", "bbox": {"l": 136.8, "t": 380.5076, "r": 145.14954, "b": 389.72058, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Look at the definition of the EMPLOYEE table, as shown in Figure 3-11. To do this, from ", "bbox": {"l": 147.93271, "t": 380.5076, "r": 540.80145, "b": 389.72058, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "the main navigation pane of System i Navigator, click ", "bbox": {"l": 151.20013, "t": 392.50742, "r": 387.36169, "b": 401.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Schemas", "bbox": {"l": 387.29993, "t": 392.50742, "r": 431.07614, "b": 401.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "\uf0ae", "bbox": {"l": 433.85992000000005, "t": 389.64889999999997, "r": 443.69043, "b": 401.83994, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "HR_SCHEMA", "bbox": {"l": 446.51906999999994, "t": 392.50742, "r": 509.73618000000005, "b": 401.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "\uf0ae", "bbox": {"l": 512.5788, "t": 389.64889999999997, "r": 522.4093, "b": 401.83994, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Tables", "bbox": {"l": 151.19812, "t": 404.50723000000005, "r": 181.12892, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ", right-click the ", "bbox": {"l": 181.79823, "t": 404.50723000000005, "r": 248.99638, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "EMPLOYEES", "bbox": {"l": 248.93860000000004, "t": 404.50723000000005, "r": 310.44357, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " table, and click ", "bbox": {"l": 310.49835, "t": 404.50723000000005, "r": 381.53305, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Definition", "bbox": {"l": 381.59882, "t": 404.50723000000005, "r": 427.68176, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": ".", "bbox": {"l": 427.67877, "t": 404.50723000000005, "r": 430.4476599999999, "b": 413.72021, "coord_origin": "TOPLEFT"}}]}, "text": "2. Look at the definition of the EMPLOYEE table, as shown in Figure 3-11. To do this, from the main navigation pane of System i Navigator, click Schemas \uf0ae HR_SCHEMA \uf0ae Tables , right-click the EMPLOYEES table, and click Definition ."}, {"label": "caption", "id": 12, "page_no": 43, "cluster": {"id": 12, "label": "caption", "bbox": {"l": 64.33819580078125, "t": 648.241943359375, "r": 348.354736328125, "b": 657.4004516601562, "coord_origin": "TOPLEFT"}, "confidence": 0.9499983787536621, "cells": [{"id": 34, "text": "Figure 3-11 Selecting the EMPLOYEES table from System i Navigator", "bbox": {"l": 64.800003, "t": 649.0378900000001, "r": 347.43054, "b": 657.3629, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-11 Selecting the EMPLOYEES table from System i Navigator"}, {"label": "picture", "id": 13, "page_no": 43, "cluster": {"id": 13, "label": "picture", "bbox": {"l": 63.98516845703125, "t": 427.9049987792969, "r": 530.0479125976562, "b": 646.1395874023438, "coord_origin": "TOPLEFT"}, "confidence": 0.9801459908485413, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 14, "page_no": 43, "cluster": {"id": 14, "label": "picture", "bbox": {"l": 63.801902770996094, "t": 95.38243103027344, "r": 547.11474609375, "b": 170.03213500976562, "coord_origin": "TOPLEFT"}, "confidence": 0.9635391235351562, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 43, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.14459228515625, "t": 70.61093139648438, "r": 449.9523899999999, "b": 81.22673034667969, "coord_origin": "TOPLEFT"}, "confidence": 0.8751051425933838, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.22156, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 3-10 shows the masks that are created in the HR_SCHEMA.", "bbox": {"l": 148.02872, "t": 71.50867000000005, "r": 449.9523899999999, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "3. Figure 3-10 shows the masks that are created in the HR_SCHEMA."}, {"label": "caption", "id": 3, "page_no": 43, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.17350769042969, "t": 172.7456512451172, "r": 294.42578125, "b": 181.8983612060547, "coord_origin": "TOPLEFT"}, "confidence": 0.944426953792572, "cells": [{"id": 4, "text": "Figure 3-10 Column masks shown in System i Navigator", "bbox": {"l": 64.800003, "t": 173.53801999999996, "r": 293.13809, "b": 181.86298, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-10 Column masks shown in System i Navigator"}, {"label": "section_header", "id": 4, "page_no": 43, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.29059600830078, "t": 201.6618194580078, "r": 203.98521, "b": 214.99534606933594, "coord_origin": "TOPLEFT"}, "confidence": 0.9645015001296997, "cells": [{"id": 5, "text": "3.6.6", "bbox": {"l": 64.800003, "t": 202.37469, "r": 94.275139, "b": 214.36273000000006, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Activating RCAC", "bbox": {"l": 97.959534, "t": 202.37469, "r": 203.98521, "b": 214.36273000000006, "coord_origin": "TOPLEFT"}}]}, "text": "3.6.6 Activating RCAC"}, {"label": "text", "id": 5, "page_no": 43, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.1686553955078, "t": 228.097412109375, "r": 547.22565, "b": 262.4639587402344, "coord_origin": "TOPLEFT"}, "confidence": 0.9768573045730591, "cells": [{"id": 7, "text": "Now that you have created the row permission and the two column masks, RCAC must be ", "bbox": {"l": 136.8, "t": 228.52868999999998, "r": 537.09131, "b": 237.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "activated. The row permission and the two column masks are enabled (last clause in the ", "bbox": {"l": 136.8, "t": 240.5285, "r": 529.20422, "b": 249.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "scripts), but now you must activate RCAC on the table. To do so, complete the following steps:", "bbox": {"l": 136.8, "t": 252.52832, "r": 547.22565, "b": 261.74132999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Now that you have created the row permission and the two column masks, RCAC must be activated. The row permission and the two column masks are enabled (last clause in the scripts), but now you must activate RCAC on the table. To do so, complete the following steps:"}, {"label": "list_item", "id": 6, "page_no": 43, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.5933074951172, "t": 268.52996826171875, "r": 409.47888, "b": 278.8722229003906, "coord_origin": "TOPLEFT"}, "confidence": 0.9059442281723022, "cells": [{"id": 10, "text": "1.", "bbox": {"l": 136.8, "t": 269.50811999999996, "r": 145.32378, "b": 278.72113, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Run the SQL statements that are shown in Example 3-10.", "bbox": {"l": 148.16501, "t": 269.50811999999996, "r": 409.47888, "b": 278.72113, "coord_origin": "TOPLEFT"}}]}, "text": "1. Run the SQL statements that are shown in Example 3-10."}, {"label": "section_header", "id": 7, "page_no": 43, "cluster": {"id": 7, "label": "section_header", "bbox": {"l": 136.31597900390625, "t": 290.4278564453125, "r": 375.29099, "b": 300.4970703125, "coord_origin": "TOPLEFT"}, "confidence": 0.6570106148719788, "cells": [{"id": 12, "text": "Example 3-10 Activating RCAC on the EMPLOYEES table ", "bbox": {"l": 136.8, "t": 291.55798, "r": 375.29099, "b": 299.88300000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-10 Activating RCAC on the EMPLOYEES table"}, {"label": "list_item", "id": 8, "page_no": 43, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.7803192138672, "t": 307.09222412109375, "r": 376.67661, "b": 318.0027160644531, "coord_origin": "TOPLEFT"}, "confidence": 0.6002406477928162, "cells": [{"id": 13, "text": "/*", "bbox": {"l": 136.8, "t": 308.65811, "r": 147.22942, "b": 317.43289, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Active Row Access Control (permissions) */", "bbox": {"l": 157.65884, "t": 308.65811, "r": 376.67661, "b": 317.43289, "coord_origin": "TOPLEFT"}}]}, "text": "/* Active Row Access Control (permissions) */"}, {"label": "text", "id": 9, "page_no": 43, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.8, "t": 320.65793, "r": 354.86963, "b": 365.43216, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 15, "text": "/*", "bbox": {"l": 136.8, "t": 320.65793, "r": 147.70349, "b": 329.43271, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Active Column Access Control (masks)", "bbox": {"l": 158.60696, "t": 320.65793, "r": 354.86963, "b": 329.43271, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ALTER TABLE HR_SCHEMA.EMPLOYEES", "bbox": {"l": 136.8, "t": 332.65775, "r": 291.7178, "b": 341.43253, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ACTIVATE ROW ACCESS CONTROL", "bbox": {"l": 136.8, "t": 344.65756, "r": 271.67831, "b": 353.43234000000007, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "ACTIVATE COLUMN ACCESS CONTROL;", "bbox": {"l": 136.8, "t": 356.65738, "r": 291.7178, "b": 365.43216, "coord_origin": "TOPLEFT"}}]}, "text": "/* Active Column Access Control (masks) ALTER TABLE HR_SCHEMA.EMPLOYEES ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL;"}, {"label": "text", "id": 10, "page_no": 43, "cluster": {"id": 10, "label": "text", "bbox": {"l": 365.77313, "t": 320.65793, "r": 376.67661, "b": 329.43271, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 17, "text": "*/", "bbox": {"l": 365.77313, "t": 320.65793, "r": 376.67661, "b": 329.43271, "coord_origin": "TOPLEFT"}}]}, "text": "*/"}, {"label": "list_item", "id": 11, "page_no": 43, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.87640380859375, "t": 379.3264465332031, "r": 540.80145, "b": 413.72021, "coord_origin": "TOPLEFT"}, "confidence": 0.9449256658554077, "cells": [{"id": 21, "text": "2.", "bbox": {"l": 136.8, "t": 380.5076, "r": 145.14954, "b": 389.72058, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Look at the definition of the EMPLOYEE table, as shown in Figure 3-11. To do this, from ", "bbox": {"l": 147.93271, "t": 380.5076, "r": 540.80145, "b": 389.72058, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "the main navigation pane of System i Navigator, click ", "bbox": {"l": 151.20013, "t": 392.50742, "r": 387.36169, "b": 401.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Schemas", "bbox": {"l": 387.29993, "t": 392.50742, "r": 431.07614, "b": 401.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "\uf0ae", "bbox": {"l": 433.85992000000005, "t": 389.64889999999997, "r": 443.69043, "b": 401.83994, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "HR_SCHEMA", "bbox": {"l": 446.51906999999994, "t": 392.50742, "r": 509.73618000000005, "b": 401.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "\uf0ae", "bbox": {"l": 512.5788, "t": 389.64889999999997, "r": 522.4093, "b": 401.83994, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Tables", "bbox": {"l": 151.19812, "t": 404.50723000000005, "r": 181.12892, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ", right-click the ", "bbox": {"l": 181.79823, "t": 404.50723000000005, "r": 248.99638, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "EMPLOYEES", "bbox": {"l": 248.93860000000004, "t": 404.50723000000005, "r": 310.44357, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " table, and click ", "bbox": {"l": 310.49835, "t": 404.50723000000005, "r": 381.53305, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Definition", "bbox": {"l": 381.59882, "t": 404.50723000000005, "r": 427.68176, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": ".", "bbox": {"l": 427.67877, "t": 404.50723000000005, "r": 430.4476599999999, "b": 413.72021, "coord_origin": "TOPLEFT"}}]}, "text": "2. Look at the definition of the EMPLOYEE table, as shown in Figure 3-11. To do this, from the main navigation pane of System i Navigator, click Schemas \uf0ae HR_SCHEMA \uf0ae Tables , right-click the EMPLOYEES table, and click Definition ."}, {"label": "caption", "id": 12, "page_no": 43, "cluster": {"id": 12, "label": "caption", "bbox": {"l": 64.33819580078125, "t": 648.241943359375, "r": 348.354736328125, "b": 657.4004516601562, "coord_origin": "TOPLEFT"}, "confidence": 0.9499983787536621, "cells": [{"id": 34, "text": "Figure 3-11 Selecting the EMPLOYEES table from System i Navigator", "bbox": {"l": 64.800003, "t": 649.0378900000001, "r": 347.43054, "b": 657.3629, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-11 Selecting the EMPLOYEES table from System i Navigator"}, {"label": "picture", "id": 13, "page_no": 43, "cluster": {"id": 13, "label": "picture", "bbox": {"l": 63.98516845703125, "t": 427.9049987792969, "r": 530.0479125976562, "b": 646.1395874023438, "coord_origin": "TOPLEFT"}, "confidence": 0.9801459908485413, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 14, "page_no": 43, "cluster": {"id": 14, "label": "picture", "bbox": {"l": 63.801902770996094, "t": 95.38243103027344, "r": 547.11474609375, "b": 170.03213500976562, "coord_origin": "TOPLEFT"}, "confidence": 0.9635391235351562, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 43, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.84088897705078, "t": 754.3895874023438, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9162001013755798, "cells": [{"id": 0, "text": "28 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "28"}, {"label": "page_footer", "id": 1, "page_no": 43, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.28304290771484, "t": 754.72412109375, "r": 334.42142, "b": 763.943603515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9540064334869385, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 44, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "29", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "3.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.16988, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The EMPLOYEES table definition is displayed, as shown in Figure 3-12. Note that the ", "bbox": {"l": 147.95998, "t": 71.50903000000005, "r": 531.19666, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Row access control and Column access control options are checked.", "bbox": {"l": 151.19974, "t": 83.50885000000017, "r": 455.5731799999999, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Figure 3-12 RCAC enabled on the EMPLOYEES table", "bbox": {"l": 136.8, "t": 341.298, "r": 356.32169, "b": 349.62302, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "3.6.7", "bbox": {"l": 64.800003, "t": 370.13474, "r": 93.997536, "b": 382.12271, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Demonstrating data access with RCAC", "bbox": {"l": 97.647217, "t": 370.13474, "r": 339.83972, "b": 382.12271, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "You are now ready to start testing RCAC with the four different users. Complete the following ", "bbox": {"l": 136.8, "t": 396.28873, "r": 547.25952, "b": 405.50171, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "steps:", "bbox": {"l": 136.8, "t": 408.28853999999995, "r": 163.44897, "b": 417.50152999999995, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "1.", "bbox": {"l": 136.8, "t": 425.26834, "r": 145.18379, "b": 434.48132, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "The first SQL statement that is shown in Example 3-11 illustrates the EMPLOYEE count. ", "bbox": {"l": 147.97836, "t": 425.26834, "r": 544.10724, "b": 434.48132, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "You know that there are 42 rows from the query that was run before RCAC was put in ", "bbox": {"l": 151.20015, "t": 437.26815999999997, "r": 530.11023, "b": 446.48114, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "place (see 3.6.3, \u201cDemonstrating data access without RCAC\u201d on page 24).", "bbox": {"l": 151.20015, "t": 449.26797, "r": 479.75162, "b": 458.48096, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Example 3-11 EMPLOYEES count", "bbox": {"l": 136.8, "t": 471.31799, "r": 279.08279, "b": 479.64301, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "SELECT COUNT(*) as ROW_COUNT FROM HR_SCHEMA.EMPLOYEES;", "bbox": {"l": 136.8, "t": 488.41812, "r": 406.61636, "b": 497.1929, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "2.", "bbox": {"l": 136.8, "t": 512.2683400000001, "r": 145.20477, "b": 521.48132, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "The result of the query for a user that belongs to the HR group profile is shown in ", "bbox": {"l": 148.00635, "t": 512.2683400000001, "r": 511.53809, "b": 521.48132, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Figure 3-13. This user can see all the 42 rows (employees).", "bbox": {"l": 151.20016, "t": 524.2681600000001, "r": 413.90515, "b": 533.48114, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Figure 3-13 Count of EMPLOYEES by HR", "bbox": {"l": 136.8, "t": 586.758, "r": 308.8494, "b": 595.0830100000001, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "3.", "bbox": {"l": 136.8, "t": 612.76872, "r": 145.20665, "b": 621.98172, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "The result of the same query for a user who is logged on as TQSPENSER (Manager) is ", "bbox": {"l": 148.00883, "t": 612.76872, "r": 540.72186, "b": 621.98172, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "shown in Figure 3-14. TQSPENSER has five employees in his department and he can ", "bbox": {"l": 151.20016, "t": 624.7685200000001, "r": 533.99182, "b": 633.98152, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "also see his own row, which is why the count is 6.", "bbox": {"l": 151.20016, "t": 636.76833, "r": 369.41092, "b": 645.98132, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Figure 3-14 Count of EMPLOYEES by a manager", "bbox": {"l": 136.8, "t": 698.658005, "r": 338.81226, "b": 706.983002, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 344.54718017578125, "t": 754.7352905273438, "r": 523.60162, "b": 764.0706787109375, "coord_origin": "TOPLEFT"}, "confidence": 0.956475555896759, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.6342163085938, "t": 754.2794799804688, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9159544110298157, "cells": [{"id": 1, "text": "29", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 135.99427795410156, "t": 70.56324005126953, "r": 531.19666, "b": 92.8935775756836, "coord_origin": "TOPLEFT"}, "confidence": 0.9691283106803894, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.16988, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The EMPLOYEES table definition is displayed, as shown in Figure 3-12. Note that the ", "bbox": {"l": 147.95998, "t": 71.50903000000005, "r": 531.19666, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Row access control and Column access control options are checked.", "bbox": {"l": 151.19974, "t": 83.50885000000017, "r": 455.5731799999999, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.06971740722656, "t": 340.4026794433594, "r": 356.7056579589844, "b": 350.1046142578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9446441531181335, "cells": [{"id": 5, "text": "Figure 3-12 RCAC enabled on the EMPLOYEES table", "bbox": {"l": 136.8, "t": 341.298, "r": 356.32169, "b": 349.62302, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 64.2018051147461, "t": 368.99359130859375, "r": 339.83972, "b": 382.4454650878906, "coord_origin": "TOPLEFT"}, "confidence": 0.9611930847167969, "cells": [{"id": 6, "text": "3.6.7", "bbox": {"l": 64.800003, "t": 370.13474, "r": 93.997536, "b": 382.12271, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Demonstrating data access with RCAC", "bbox": {"l": 97.647217, "t": 370.13474, "r": 339.83972, "b": 382.12271, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.7947235107422, "t": 395.46563720703125, "r": 547.25952, "b": 417.50152999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9570380449295044, "cells": [{"id": 8, "text": "You are now ready to start testing RCAC with the four different users. Complete the following ", "bbox": {"l": 136.8, "t": 396.28873, "r": 547.25952, "b": 405.50171, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "steps:", "bbox": {"l": 136.8, "t": 408.28853999999995, "r": 163.44897, "b": 417.50152999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 136.66810607910156, "t": 424.56658935546875, "r": 544.10724, "b": 459.0443115234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9760121703147888, "cells": [{"id": 10, "text": "1.", "bbox": {"l": 136.8, "t": 425.26834, "r": 145.18379, "b": 434.48132, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "The first SQL statement that is shown in Example 3-11 illustrates the EMPLOYEE count. ", "bbox": {"l": 147.97836, "t": 425.26834, "r": 544.10724, "b": 434.48132, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "You know that there are 42 rows from the query that was run before RCAC was put in ", "bbox": {"l": 151.20015, "t": 437.26815999999997, "r": 530.11023, "b": 446.48114, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "place (see 3.6.3, \u201cDemonstrating data access without RCAC\u201d on page 24).", "bbox": {"l": 151.20015, "t": 449.26797, "r": 479.75162, "b": 458.48096, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "caption", "bbox": {"l": 136.4961700439453, "t": 470.568359375, "r": 279.97296142578125, "b": 479.7723693847656, "coord_origin": "TOPLEFT"}, "confidence": 0.7746148705482483, "cells": [{"id": 14, "text": "Example 3-11 EMPLOYEES count", "bbox": {"l": 136.8, "t": 471.31799, "r": 279.08279, "b": 479.64301, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 136.306396484375, "t": 487.3329772949219, "r": 406.61636, "b": 498.07952880859375, "coord_origin": "TOPLEFT"}, "confidence": 0.6185739040374756, "cells": [{"id": 15, "text": "SELECT COUNT(*) as ROW_COUNT FROM HR_SCHEMA.EMPLOYEES;", "bbox": {"l": 136.8, "t": 488.41812, "r": 406.61636, "b": 497.1929, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.95774841308594, "t": 511.2691955566406, "r": 511.53809, "b": 533.8543701171875, "coord_origin": "TOPLEFT"}, "confidence": 0.947382390499115, "cells": [{"id": 16, "text": "2.", "bbox": {"l": 136.8, "t": 512.2683400000001, "r": 145.20477, "b": 521.48132, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "The result of the query for a user that belongs to the HR group profile is shown in ", "bbox": {"l": 148.00635, "t": 512.2683400000001, "r": 511.53809, "b": 521.48132, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Figure 3-13. This user can see all the 42 rows (employees).", "bbox": {"l": 151.20016, "t": 524.2681600000001, "r": 413.90515, "b": 533.48114, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "caption", "bbox": {"l": 136.27264404296875, "t": 585.9351196289062, "r": 309.68194580078125, "b": 595.4780883789062, "coord_origin": "TOPLEFT"}, "confidence": 0.9036827683448792, "cells": [{"id": 19, "text": "Figure 3-13 Count of EMPLOYEES by HR", "bbox": {"l": 136.8, "t": 586.758, "r": 308.8494, "b": 595.0830100000001, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 136.16087341308594, "t": 611.9103393554688, "r": 540.72186, "b": 646.2116088867188, "coord_origin": "TOPLEFT"}, "confidence": 0.9704285860061646, "cells": [{"id": 20, "text": "3.", "bbox": {"l": 136.8, "t": 612.76872, "r": 145.20665, "b": 621.98172, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "The result of the same query for a user who is logged on as TQSPENSER (Manager) is ", "bbox": {"l": 148.00883, "t": 612.76872, "r": 540.72186, "b": 621.98172, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "shown in Figure 3-14. TQSPENSER has five employees in his department and he can ", "bbox": {"l": 151.20016, "t": 624.7685200000001, "r": 533.99182, "b": 633.98152, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "also see his own row, which is why the count is 6.", "bbox": {"l": 151.20016, "t": 636.76833, "r": 369.41092, "b": 645.98132, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "caption", "bbox": {"l": 136.1033172607422, "t": 697.8408813476562, "r": 340.1351318359375, "b": 707.6279296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9447281956672668, "cells": [{"id": 24, "text": "Figure 3-14 Count of EMPLOYEES by a manager", "bbox": {"l": 136.8, "t": 698.658005, "r": 338.81226, "b": 706.983002, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "picture", "bbox": {"l": 135.93521118164062, "t": 106.84259796142578, "r": 547.290771484375, "b": 337.8546142578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9848360419273376, "cells": []}, {"id": 14, "label": "picture", "bbox": {"l": 137.4537811279297, "t": 661.5006713867188, "r": 220.26930236816406, "b": 693.4776611328125, "coord_origin": "TOPLEFT"}, "confidence": 0.8302825689315796, "cells": []}, {"id": 15, "label": "picture", "bbox": {"l": 137.24044799804688, "t": 548.8035888671875, "r": 225.1509246826172, "b": 582.4473266601562, "coord_origin": "TOPLEFT"}, "confidence": 0.7854686975479126, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 44, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.54718017578125, "t": 754.7352905273438, "r": 523.60162, "b": 764.0706787109375, "coord_origin": "TOPLEFT"}, "confidence": 0.956475555896759, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 44, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6342163085938, "t": 754.2794799804688, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9159544110298157, "cells": [{"id": 1, "text": "29", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "29"}, {"label": "list_item", "id": 2, "page_no": 44, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.99427795410156, "t": 70.56324005126953, "r": 531.19666, "b": 92.8935775756836, "coord_origin": "TOPLEFT"}, "confidence": 0.9691283106803894, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.16988, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The EMPLOYEES table definition is displayed, as shown in Figure 3-12. Note that the ", "bbox": {"l": 147.95998, "t": 71.50903000000005, "r": 531.19666, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Row access control and Column access control options are checked.", "bbox": {"l": 151.19974, "t": 83.50885000000017, "r": 455.5731799999999, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "3. The EMPLOYEES table definition is displayed, as shown in Figure 3-12. Note that the Row access control and Column access control options are checked."}, {"label": "caption", "id": 3, "page_no": 44, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.06971740722656, "t": 340.4026794433594, "r": 356.7056579589844, "b": 350.1046142578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9446441531181335, "cells": [{"id": 5, "text": "Figure 3-12 RCAC enabled on the EMPLOYEES table", "bbox": {"l": 136.8, "t": 341.298, "r": 356.32169, "b": 349.62302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-12 RCAC enabled on the EMPLOYEES table"}, {"label": "section_header", "id": 4, "page_no": 44, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.2018051147461, "t": 368.99359130859375, "r": 339.83972, "b": 382.4454650878906, "coord_origin": "TOPLEFT"}, "confidence": 0.9611930847167969, "cells": [{"id": 6, "text": "3.6.7", "bbox": {"l": 64.800003, "t": 370.13474, "r": 93.997536, "b": 382.12271, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Demonstrating data access with RCAC", "bbox": {"l": 97.647217, "t": 370.13474, "r": 339.83972, "b": 382.12271, "coord_origin": "TOPLEFT"}}]}, "text": "3.6.7 Demonstrating data access with RCAC"}, {"label": "text", "id": 5, "page_no": 44, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.7947235107422, "t": 395.46563720703125, "r": 547.25952, "b": 417.50152999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9570380449295044, "cells": [{"id": 8, "text": "You are now ready to start testing RCAC with the four different users. Complete the following ", "bbox": {"l": 136.8, "t": 396.28873, "r": 547.25952, "b": 405.50171, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "steps:", "bbox": {"l": 136.8, "t": 408.28853999999995, "r": 163.44897, "b": 417.50152999999995, "coord_origin": "TOPLEFT"}}]}, "text": "You are now ready to start testing RCAC with the four different users. Complete the following steps:"}, {"label": "list_item", "id": 6, "page_no": 44, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.66810607910156, "t": 424.56658935546875, "r": 544.10724, "b": 459.0443115234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9760121703147888, "cells": [{"id": 10, "text": "1.", "bbox": {"l": 136.8, "t": 425.26834, "r": 145.18379, "b": 434.48132, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "The first SQL statement that is shown in Example 3-11 illustrates the EMPLOYEE count. ", "bbox": {"l": 147.97836, "t": 425.26834, "r": 544.10724, "b": 434.48132, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "You know that there are 42 rows from the query that was run before RCAC was put in ", "bbox": {"l": 151.20015, "t": 437.26815999999997, "r": 530.11023, "b": 446.48114, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "place (see 3.6.3, \u201cDemonstrating data access without RCAC\u201d on page 24).", "bbox": {"l": 151.20015, "t": 449.26797, "r": 479.75162, "b": 458.48096, "coord_origin": "TOPLEFT"}}]}, "text": "1. The first SQL statement that is shown in Example 3-11 illustrates the EMPLOYEE count. You know that there are 42 rows from the query that was run before RCAC was put in place (see 3.6.3, \u201cDemonstrating data access without RCAC\u201d on page 24)."}, {"label": "caption", "id": 7, "page_no": 44, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 136.4961700439453, "t": 470.568359375, "r": 279.97296142578125, "b": 479.7723693847656, "coord_origin": "TOPLEFT"}, "confidence": 0.7746148705482483, "cells": [{"id": 14, "text": "Example 3-11 EMPLOYEES count", "bbox": {"l": 136.8, "t": 471.31799, "r": 279.08279, "b": 479.64301, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-11 EMPLOYEES count"}, {"label": "text", "id": 8, "page_no": 44, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.306396484375, "t": 487.3329772949219, "r": 406.61636, "b": 498.07952880859375, "coord_origin": "TOPLEFT"}, "confidence": 0.6185739040374756, "cells": [{"id": 15, "text": "SELECT COUNT(*) as ROW_COUNT FROM HR_SCHEMA.EMPLOYEES;", "bbox": {"l": 136.8, "t": 488.41812, "r": 406.61636, "b": 497.1929, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT COUNT(*) as ROW_COUNT FROM HR_SCHEMA.EMPLOYEES;"}, {"label": "list_item", "id": 9, "page_no": 44, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.95774841308594, "t": 511.2691955566406, "r": 511.53809, "b": 533.8543701171875, "coord_origin": "TOPLEFT"}, "confidence": 0.947382390499115, "cells": [{"id": 16, "text": "2.", "bbox": {"l": 136.8, "t": 512.2683400000001, "r": 145.20477, "b": 521.48132, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "The result of the query for a user that belongs to the HR group profile is shown in ", "bbox": {"l": 148.00635, "t": 512.2683400000001, "r": 511.53809, "b": 521.48132, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Figure 3-13. This user can see all the 42 rows (employees).", "bbox": {"l": 151.20016, "t": 524.2681600000001, "r": 413.90515, "b": 533.48114, "coord_origin": "TOPLEFT"}}]}, "text": "2. The result of the query for a user that belongs to the HR group profile is shown in Figure 3-13. This user can see all the 42 rows (employees)."}, {"label": "caption", "id": 10, "page_no": 44, "cluster": {"id": 10, "label": "caption", "bbox": {"l": 136.27264404296875, "t": 585.9351196289062, "r": 309.68194580078125, "b": 595.4780883789062, "coord_origin": "TOPLEFT"}, "confidence": 0.9036827683448792, "cells": [{"id": 19, "text": "Figure 3-13 Count of EMPLOYEES by HR", "bbox": {"l": 136.8, "t": 586.758, "r": 308.8494, "b": 595.0830100000001, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-13 Count of EMPLOYEES by HR"}, {"label": "list_item", "id": 11, "page_no": 44, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 136.16087341308594, "t": 611.9103393554688, "r": 540.72186, "b": 646.2116088867188, "coord_origin": "TOPLEFT"}, "confidence": 0.9704285860061646, "cells": [{"id": 20, "text": "3.", "bbox": {"l": 136.8, "t": 612.76872, "r": 145.20665, "b": 621.98172, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "The result of the same query for a user who is logged on as TQSPENSER (Manager) is ", "bbox": {"l": 148.00883, "t": 612.76872, "r": 540.72186, "b": 621.98172, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "shown in Figure 3-14. TQSPENSER has five employees in his department and he can ", "bbox": {"l": 151.20016, "t": 624.7685200000001, "r": 533.99182, "b": 633.98152, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "also see his own row, which is why the count is 6.", "bbox": {"l": 151.20016, "t": 636.76833, "r": 369.41092, "b": 645.98132, "coord_origin": "TOPLEFT"}}]}, "text": "3. The result of the same query for a user who is logged on as TQSPENSER (Manager) is shown in Figure 3-14. TQSPENSER has five employees in his department and he can also see his own row, which is why the count is 6."}, {"label": "caption", "id": 12, "page_no": 44, "cluster": {"id": 12, "label": "caption", "bbox": {"l": 136.1033172607422, "t": 697.8408813476562, "r": 340.1351318359375, "b": 707.6279296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9447281956672668, "cells": [{"id": 24, "text": "Figure 3-14 Count of EMPLOYEES by a manager", "bbox": {"l": 136.8, "t": 698.658005, "r": 338.81226, "b": 706.983002, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-14 Count of EMPLOYEES by a manager"}, {"label": "picture", "id": 13, "page_no": 44, "cluster": {"id": 13, "label": "picture", "bbox": {"l": 135.93521118164062, "t": 106.84259796142578, "r": 547.290771484375, "b": 337.8546142578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9848360419273376, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 14, "page_no": 44, "cluster": {"id": 14, "label": "picture", "bbox": {"l": 137.4537811279297, "t": 661.5006713867188, "r": 220.26930236816406, "b": 693.4776611328125, "coord_origin": "TOPLEFT"}, "confidence": 0.8302825689315796, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 15, "page_no": 44, "cluster": {"id": 15, "label": "picture", "bbox": {"l": 137.24044799804688, "t": 548.8035888671875, "r": 225.1509246826172, "b": 582.4473266601562, "coord_origin": "TOPLEFT"}, "confidence": 0.7854686975479126, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 44, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.99427795410156, "t": 70.56324005126953, "r": 531.19666, "b": 92.8935775756836, "coord_origin": "TOPLEFT"}, "confidence": 0.9691283106803894, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.16988, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The EMPLOYEES table definition is displayed, as shown in Figure 3-12. Note that the ", "bbox": {"l": 147.95998, "t": 71.50903000000005, "r": 531.19666, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Row access control and Column access control options are checked.", "bbox": {"l": 151.19974, "t": 83.50885000000017, "r": 455.5731799999999, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "3. The EMPLOYEES table definition is displayed, as shown in Figure 3-12. Note that the Row access control and Column access control options are checked."}, {"label": "caption", "id": 3, "page_no": 44, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.06971740722656, "t": 340.4026794433594, "r": 356.7056579589844, "b": 350.1046142578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9446441531181335, "cells": [{"id": 5, "text": "Figure 3-12 RCAC enabled on the EMPLOYEES table", "bbox": {"l": 136.8, "t": 341.298, "r": 356.32169, "b": 349.62302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-12 RCAC enabled on the EMPLOYEES table"}, {"label": "section_header", "id": 4, "page_no": 44, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.2018051147461, "t": 368.99359130859375, "r": 339.83972, "b": 382.4454650878906, "coord_origin": "TOPLEFT"}, "confidence": 0.9611930847167969, "cells": [{"id": 6, "text": "3.6.7", "bbox": {"l": 64.800003, "t": 370.13474, "r": 93.997536, "b": 382.12271, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Demonstrating data access with RCAC", "bbox": {"l": 97.647217, "t": 370.13474, "r": 339.83972, "b": 382.12271, "coord_origin": "TOPLEFT"}}]}, "text": "3.6.7 Demonstrating data access with RCAC"}, {"label": "text", "id": 5, "page_no": 44, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.7947235107422, "t": 395.46563720703125, "r": 547.25952, "b": 417.50152999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9570380449295044, "cells": [{"id": 8, "text": "You are now ready to start testing RCAC with the four different users. Complete the following ", "bbox": {"l": 136.8, "t": 396.28873, "r": 547.25952, "b": 405.50171, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "steps:", "bbox": {"l": 136.8, "t": 408.28853999999995, "r": 163.44897, "b": 417.50152999999995, "coord_origin": "TOPLEFT"}}]}, "text": "You are now ready to start testing RCAC with the four different users. Complete the following steps:"}, {"label": "list_item", "id": 6, "page_no": 44, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.66810607910156, "t": 424.56658935546875, "r": 544.10724, "b": 459.0443115234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9760121703147888, "cells": [{"id": 10, "text": "1.", "bbox": {"l": 136.8, "t": 425.26834, "r": 145.18379, "b": 434.48132, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "The first SQL statement that is shown in Example 3-11 illustrates the EMPLOYEE count. ", "bbox": {"l": 147.97836, "t": 425.26834, "r": 544.10724, "b": 434.48132, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "You know that there are 42 rows from the query that was run before RCAC was put in ", "bbox": {"l": 151.20015, "t": 437.26815999999997, "r": 530.11023, "b": 446.48114, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "place (see 3.6.3, \u201cDemonstrating data access without RCAC\u201d on page 24).", "bbox": {"l": 151.20015, "t": 449.26797, "r": 479.75162, "b": 458.48096, "coord_origin": "TOPLEFT"}}]}, "text": "1. The first SQL statement that is shown in Example 3-11 illustrates the EMPLOYEE count. You know that there are 42 rows from the query that was run before RCAC was put in place (see 3.6.3, \u201cDemonstrating data access without RCAC\u201d on page 24)."}, {"label": "caption", "id": 7, "page_no": 44, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 136.4961700439453, "t": 470.568359375, "r": 279.97296142578125, "b": 479.7723693847656, "coord_origin": "TOPLEFT"}, "confidence": 0.7746148705482483, "cells": [{"id": 14, "text": "Example 3-11 EMPLOYEES count", "bbox": {"l": 136.8, "t": 471.31799, "r": 279.08279, "b": 479.64301, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-11 EMPLOYEES count"}, {"label": "text", "id": 8, "page_no": 44, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.306396484375, "t": 487.3329772949219, "r": 406.61636, "b": 498.07952880859375, "coord_origin": "TOPLEFT"}, "confidence": 0.6185739040374756, "cells": [{"id": 15, "text": "SELECT COUNT(*) as ROW_COUNT FROM HR_SCHEMA.EMPLOYEES;", "bbox": {"l": 136.8, "t": 488.41812, "r": 406.61636, "b": 497.1929, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT COUNT(*) as ROW_COUNT FROM HR_SCHEMA.EMPLOYEES;"}, {"label": "list_item", "id": 9, "page_no": 44, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.95774841308594, "t": 511.2691955566406, "r": 511.53809, "b": 533.8543701171875, "coord_origin": "TOPLEFT"}, "confidence": 0.947382390499115, "cells": [{"id": 16, "text": "2.", "bbox": {"l": 136.8, "t": 512.2683400000001, "r": 145.20477, "b": 521.48132, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "The result of the query for a user that belongs to the HR group profile is shown in ", "bbox": {"l": 148.00635, "t": 512.2683400000001, "r": 511.53809, "b": 521.48132, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Figure 3-13. This user can see all the 42 rows (employees).", "bbox": {"l": 151.20016, "t": 524.2681600000001, "r": 413.90515, "b": 533.48114, "coord_origin": "TOPLEFT"}}]}, "text": "2. The result of the query for a user that belongs to the HR group profile is shown in Figure 3-13. This user can see all the 42 rows (employees)."}, {"label": "caption", "id": 10, "page_no": 44, "cluster": {"id": 10, "label": "caption", "bbox": {"l": 136.27264404296875, "t": 585.9351196289062, "r": 309.68194580078125, "b": 595.4780883789062, "coord_origin": "TOPLEFT"}, "confidence": 0.9036827683448792, "cells": [{"id": 19, "text": "Figure 3-13 Count of EMPLOYEES by HR", "bbox": {"l": 136.8, "t": 586.758, "r": 308.8494, "b": 595.0830100000001, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-13 Count of EMPLOYEES by HR"}, {"label": "list_item", "id": 11, "page_no": 44, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 136.16087341308594, "t": 611.9103393554688, "r": 540.72186, "b": 646.2116088867188, "coord_origin": "TOPLEFT"}, "confidence": 0.9704285860061646, "cells": [{"id": 20, "text": "3.", "bbox": {"l": 136.8, "t": 612.76872, "r": 145.20665, "b": 621.98172, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "The result of the same query for a user who is logged on as TQSPENSER (Manager) is ", "bbox": {"l": 148.00883, "t": 612.76872, "r": 540.72186, "b": 621.98172, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "shown in Figure 3-14. TQSPENSER has five employees in his department and he can ", "bbox": {"l": 151.20016, "t": 624.7685200000001, "r": 533.99182, "b": 633.98152, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "also see his own row, which is why the count is 6.", "bbox": {"l": 151.20016, "t": 636.76833, "r": 369.41092, "b": 645.98132, "coord_origin": "TOPLEFT"}}]}, "text": "3. The result of the same query for a user who is logged on as TQSPENSER (Manager) is shown in Figure 3-14. TQSPENSER has five employees in his department and he can also see his own row, which is why the count is 6."}, {"label": "caption", "id": 12, "page_no": 44, "cluster": {"id": 12, "label": "caption", "bbox": {"l": 136.1033172607422, "t": 697.8408813476562, "r": 340.1351318359375, "b": 707.6279296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9447281956672668, "cells": [{"id": 24, "text": "Figure 3-14 Count of EMPLOYEES by a manager", "bbox": {"l": 136.8, "t": 698.658005, "r": 338.81226, "b": 706.983002, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-14 Count of EMPLOYEES by a manager"}, {"label": "picture", "id": 13, "page_no": 44, "cluster": {"id": 13, "label": "picture", "bbox": {"l": 135.93521118164062, "t": 106.84259796142578, "r": 547.290771484375, "b": 337.8546142578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9848360419273376, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 14, "page_no": 44, "cluster": {"id": 14, "label": "picture", "bbox": {"l": 137.4537811279297, "t": 661.5006713867188, "r": 220.26930236816406, "b": 693.4776611328125, "coord_origin": "TOPLEFT"}, "confidence": 0.8302825689315796, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 15, "page_no": 44, "cluster": {"id": 15, "label": "picture", "bbox": {"l": 137.24044799804688, "t": 548.8035888671875, "r": 225.1509246826172, "b": 582.4473266601562, "coord_origin": "TOPLEFT"}, "confidence": 0.7854686975479126, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 44, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.54718017578125, "t": 754.7352905273438, "r": 523.60162, "b": 764.0706787109375, "coord_origin": "TOPLEFT"}, "confidence": 0.956475555896759, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 44, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6342163085938, "t": 754.2794799804688, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9159544110298157, "cells": [{"id": 1, "text": "29", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "29"}]}}, {"page_no": 45, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "30 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "4.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.04445, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The result of the same query that is run by an employee (DSSMITH) gives the result that is ", "bbox": {"l": 147.79259, "t": 71.50867000000005, "r": 547.21362, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "shown in Figure 3-15. Each employee can see only his or her own data (row).", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 493.08124, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Figure 3-15 Count of EMPLOYEES by an employee", "bbox": {"l": 136.8, "t": 145.39801, "r": 346.82037, "b": 153.72295999999994, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "5.", "bbox": {"l": 136.8, "t": 171.34869000000003, "r": 145.20747, "b": 180.56170999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "The result of the same query that is run by the Consultant/DBE gives the result that is ", "bbox": {"l": 148.00995, "t": 171.34869000000003, "r": 531.26587, "b": 180.56170999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "shown in Figure 3-16. The consultants/DBE can manage and implement RCAC, but they ", "bbox": {"l": 151.20016, "t": 183.34851000000003, "r": 543.98859, "b": 192.56151999999997, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "do not see any rows at all.", "bbox": {"l": 151.20016, "t": 195.34833000000003, "r": 267.03894, "b": 204.56133999999997, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Figure 3-16 Count of EMPLOYEES by a consultant", "bbox": {"l": 136.8, "t": 257.29791, "r": 344.35086, "b": 265.62285999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Does the result make sense? Yes, it does because RCAC is enabled.", "bbox": {"l": 151.2, "t": 283.24872, "r": 456.21011, "b": 292.4617, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "6.", "bbox": {"l": 136.79984, "t": 300.22852, "r": 145.18713, "b": 309.4415, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Run queries against the EMPLOYEES table. The query that is used in this example runs ", "bbox": {"l": 147.98289, "t": 300.22852, "r": 543.73456, "b": 309.4415, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "and tests with the four different user profiles and is the same query that was run in 3.6.3, ", "bbox": {"l": 151.20001, "t": 312.22833, "r": 544.28741, "b": 321.44131, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "\u201cDemonstrating data access without RCAC\u201d on page 24. It is shown in Example 3-12.", "bbox": {"l": 151.20001, "t": 324.22814999999997, "r": 527.40405, "b": 333.44113, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Example 3-12 SELECT statement to test with the different users", "bbox": {"l": 136.8, "t": 346.27798, "r": 396.18622, "b": 354.603, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "SELECT EMPLOYEE_ID,", "bbox": {"l": 136.8, "t": 363.37810999999994, "r": 231.71878000000004, "b": 372.15289, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "LAST_NAME, ", "bbox": {"l": 156.0726, "t": 375.37793000000005, "r": 226.73877000000002, "b": 384.15271, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "JOB_DESCRIPTION,", "bbox": {"l": 154.94188, "t": 387.37775, "r": 251.69853, "b": 396.15253000000007, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "DATE_OF_BIRTH,", "bbox": {"l": 155.31857, "t": 399.37756, "r": 241.73852999999997, "b": 408.15234, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "TAX_ID,", "bbox": {"l": 157.7877, "t": 411.37738, "r": 206.75902, "b": 420.1521599999999, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "USER_ID,", "bbox": {"l": 157.23792, "t": 423.37719999999996, "r": 211.73903, "b": 432.15198000000004, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "MANAGER_OF_EMPLOYEE", "bbox": {"l": 154.5134, "t": 435.37701, "r": 266.69827, "b": 444.15179, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "FROM", "bbox": {"l": 136.8, "t": 447.37683, "r": 157.58372, "b": 456.15161, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "HR_SCHEMA.EMPLOYEES", "bbox": {"l": 167.97559, "t": 447.37683, "r": 266.69827, "b": 456.15161, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.19510650634766, "t": 754.4282836914062, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9150190949440002, "cells": [{"id": 0, "text": "30 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.36414337158203, "t": 754.7095947265625, "r": 334.42142, "b": 763.9661865234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9484574198722839, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 135.79859924316406, "t": 70.64143371582031, "r": 547.21362, "b": 93.16808319091797, "coord_origin": "TOPLEFT"}, "confidence": 0.9721304774284363, "cells": [{"id": 2, "text": "4.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.04445, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The result of the same query that is run by an employee (DSSMITH) gives the result that is ", "bbox": {"l": 147.79259, "t": 71.50867000000005, "r": 547.21362, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "shown in Figure 3-15. Each employee can see only his or her own data (row).", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 493.08124, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 135.97097778320312, "t": 144.56964111328125, "r": 347.41455078125, "b": 154.1024932861328, "coord_origin": "TOPLEFT"}, "confidence": 0.8800588846206665, "cells": [{"id": 5, "text": "Figure 3-15 Count of EMPLOYEES by an employee", "bbox": {"l": 136.8, "t": 145.39801, "r": 346.82037, "b": 153.72295999999994, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 136.351318359375, "t": 170.72369384765625, "r": 543.98859, "b": 204.88552856445312, "coord_origin": "TOPLEFT"}, "confidence": 0.9731000661849976, "cells": [{"id": 6, "text": "5.", "bbox": {"l": 136.8, "t": 171.34869000000003, "r": 145.20747, "b": 180.56170999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "The result of the same query that is run by the Consultant/DBE gives the result that is ", "bbox": {"l": 148.00995, "t": 171.34869000000003, "r": 531.26587, "b": 180.56170999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "shown in Figure 3-16. The consultants/DBE can manage and implement RCAC, but they ", "bbox": {"l": 151.20016, "t": 183.34851000000003, "r": 543.98859, "b": 192.56151999999997, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "do not see any rows at all.", "bbox": {"l": 151.20016, "t": 195.34833000000003, "r": 267.03894, "b": 204.56133999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 136.17999267578125, "t": 256.5564880371094, "r": 345.2605285644531, "b": 265.80084228515625, "coord_origin": "TOPLEFT"}, "confidence": 0.845527708530426, "cells": [{"id": 10, "text": "Figure 3-16 Count of EMPLOYEES by a consultant", "bbox": {"l": 136.8, "t": 257.29791, "r": 344.35086, "b": 265.62285999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 150.62869262695312, "t": 282.65179443359375, "r": 456.21011, "b": 292.4617, "coord_origin": "TOPLEFT"}, "confidence": 0.8937364816665649, "cells": [{"id": 11, "text": "Does the result make sense? Yes, it does because RCAC is enabled.", "bbox": {"l": 151.2, "t": 283.24872, "r": 456.21011, "b": 292.4617, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 136.16029357910156, "t": 299.3460693359375, "r": 544.28741, "b": 333.59893798828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9715136885643005, "cells": [{"id": 12, "text": "6.", "bbox": {"l": 136.79984, "t": 300.22852, "r": 145.18713, "b": 309.4415, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Run queries against the EMPLOYEES table. The query that is used in this example runs ", "bbox": {"l": 147.98289, "t": 300.22852, "r": 543.73456, "b": 309.4415, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "and tests with the four different user profiles and is the same query that was run in 3.6.3, ", "bbox": {"l": 151.20001, "t": 312.22833, "r": 544.28741, "b": 321.44131, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "\u201cDemonstrating data access without RCAC\u201d on page 24. It is shown in Example 3-12.", "bbox": {"l": 151.20001, "t": 324.22814999999997, "r": 527.40405, "b": 333.44113, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "caption", "bbox": {"l": 136.2924041748047, "t": 345.3439636230469, "r": 396.5692138671875, "b": 354.603, "coord_origin": "TOPLEFT"}, "confidence": 0.7857663035392761, "cells": [{"id": 16, "text": "Example 3-12 SELECT statement to test with the different users", "bbox": {"l": 136.8, "t": 346.27798, "r": 396.18622, "b": 354.603, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "code", "bbox": {"l": 134.74452209472656, "t": 356.92291259765625, "r": 548.0267333984375, "b": 461.7205810546875, "coord_origin": "TOPLEFT"}, "confidence": 0.6226056814193726, "cells": [{"id": 17, "text": "SELECT EMPLOYEE_ID,", "bbox": {"l": 136.8, "t": 363.37810999999994, "r": 231.71878000000004, "b": 372.15289, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "LAST_NAME, ", "bbox": {"l": 156.0726, "t": 375.37793000000005, "r": 226.73877000000002, "b": 384.15271, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "JOB_DESCRIPTION,", "bbox": {"l": 154.94188, "t": 387.37775, "r": 251.69853, "b": 396.15253000000007, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "DATE_OF_BIRTH,", "bbox": {"l": 155.31857, "t": 399.37756, "r": 241.73852999999997, "b": 408.15234, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "TAX_ID,", "bbox": {"l": 157.7877, "t": 411.37738, "r": 206.75902, "b": 420.1521599999999, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "USER_ID,", "bbox": {"l": 157.23792, "t": 423.37719999999996, "r": 211.73903, "b": 432.15198000000004, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "MANAGER_OF_EMPLOYEE", "bbox": {"l": 154.5134, "t": 435.37701, "r": 266.69827, "b": 444.15179, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "FROM", "bbox": {"l": 136.8, "t": 447.37683, "r": 157.58372, "b": 456.15161, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "HR_SCHEMA.EMPLOYEES", "bbox": {"l": 167.97559, "t": 447.37683, "r": 266.69827, "b": 456.15161, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "picture", "bbox": {"l": 136.77099609375, "t": 107.66394805908203, "r": 225.8523406982422, "b": 140.4359130859375, "coord_origin": "TOPLEFT"}, "confidence": 0.721601665019989, "cells": []}, {"id": 11, "label": "picture", "bbox": {"l": 136.36477661132812, "t": 219.7147674560547, "r": 228.86305236816406, "b": 252.31942749023438, "coord_origin": "TOPLEFT"}, "confidence": 0.6357523798942566, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 45, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.19510650634766, "t": 754.4282836914062, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9150190949440002, "cells": [{"id": 0, "text": "30 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "30"}, {"label": "page_footer", "id": 1, "page_no": 45, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.36414337158203, "t": 754.7095947265625, "r": 334.42142, "b": 763.9661865234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9484574198722839, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "list_item", "id": 2, "page_no": 45, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.79859924316406, "t": 70.64143371582031, "r": 547.21362, "b": 93.16808319091797, "coord_origin": "TOPLEFT"}, "confidence": 0.9721304774284363, "cells": [{"id": 2, "text": "4.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.04445, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The result of the same query that is run by an employee (DSSMITH) gives the result that is ", "bbox": {"l": 147.79259, "t": 71.50867000000005, "r": 547.21362, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "shown in Figure 3-15. Each employee can see only his or her own data (row).", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 493.08124, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "4. The result of the same query that is run by an employee (DSSMITH) gives the result that is shown in Figure 3-15. Each employee can see only his or her own data (row)."}, {"label": "caption", "id": 3, "page_no": 45, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.97097778320312, "t": 144.56964111328125, "r": 347.41455078125, "b": 154.1024932861328, "coord_origin": "TOPLEFT"}, "confidence": 0.8800588846206665, "cells": [{"id": 5, "text": "Figure 3-15 Count of EMPLOYEES by an employee", "bbox": {"l": 136.8, "t": 145.39801, "r": 346.82037, "b": 153.72295999999994, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-15 Count of EMPLOYEES by an employee"}, {"label": "list_item", "id": 4, "page_no": 45, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.351318359375, "t": 170.72369384765625, "r": 543.98859, "b": 204.88552856445312, "coord_origin": "TOPLEFT"}, "confidence": 0.9731000661849976, "cells": [{"id": 6, "text": "5.", "bbox": {"l": 136.8, "t": 171.34869000000003, "r": 145.20747, "b": 180.56170999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "The result of the same query that is run by the Consultant/DBE gives the result that is ", "bbox": {"l": 148.00995, "t": 171.34869000000003, "r": 531.26587, "b": 180.56170999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "shown in Figure 3-16. The consultants/DBE can manage and implement RCAC, but they ", "bbox": {"l": 151.20016, "t": 183.34851000000003, "r": 543.98859, "b": 192.56151999999997, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "do not see any rows at all.", "bbox": {"l": 151.20016, "t": 195.34833000000003, "r": 267.03894, "b": 204.56133999999997, "coord_origin": "TOPLEFT"}}]}, "text": "5. The result of the same query that is run by the Consultant/DBE gives the result that is shown in Figure 3-16. The consultants/DBE can manage and implement RCAC, but they do not see any rows at all."}, {"label": "caption", "id": 5, "page_no": 45, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.17999267578125, "t": 256.5564880371094, "r": 345.2605285644531, "b": 265.80084228515625, "coord_origin": "TOPLEFT"}, "confidence": 0.845527708530426, "cells": [{"id": 10, "text": "Figure 3-16 Count of EMPLOYEES by a consultant", "bbox": {"l": 136.8, "t": 257.29791, "r": 344.35086, "b": 265.62285999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-16 Count of EMPLOYEES by a consultant"}, {"label": "text", "id": 6, "page_no": 45, "cluster": {"id": 6, "label": "text", "bbox": {"l": 150.62869262695312, "t": 282.65179443359375, "r": 456.21011, "b": 292.4617, "coord_origin": "TOPLEFT"}, "confidence": 0.8937364816665649, "cells": [{"id": 11, "text": "Does the result make sense? Yes, it does because RCAC is enabled.", "bbox": {"l": 151.2, "t": 283.24872, "r": 456.21011, "b": 292.4617, "coord_origin": "TOPLEFT"}}]}, "text": "Does the result make sense? Yes, it does because RCAC is enabled."}, {"label": "list_item", "id": 7, "page_no": 45, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 136.16029357910156, "t": 299.3460693359375, "r": 544.28741, "b": 333.59893798828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9715136885643005, "cells": [{"id": 12, "text": "6.", "bbox": {"l": 136.79984, "t": 300.22852, "r": 145.18713, "b": 309.4415, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Run queries against the EMPLOYEES table. The query that is used in this example runs ", "bbox": {"l": 147.98289, "t": 300.22852, "r": 543.73456, "b": 309.4415, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "and tests with the four different user profiles and is the same query that was run in 3.6.3, ", "bbox": {"l": 151.20001, "t": 312.22833, "r": 544.28741, "b": 321.44131, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "\u201cDemonstrating data access without RCAC\u201d on page 24. It is shown in Example 3-12.", "bbox": {"l": 151.20001, "t": 324.22814999999997, "r": 527.40405, "b": 333.44113, "coord_origin": "TOPLEFT"}}]}, "text": "6. Run queries against the EMPLOYEES table. The query that is used in this example runs and tests with the four different user profiles and is the same query that was run in 3.6.3, \u201cDemonstrating data access without RCAC\u201d on page 24. It is shown in Example 3-12."}, {"label": "caption", "id": 8, "page_no": 45, "cluster": {"id": 8, "label": "caption", "bbox": {"l": 136.2924041748047, "t": 345.3439636230469, "r": 396.5692138671875, "b": 354.603, "coord_origin": "TOPLEFT"}, "confidence": 0.7857663035392761, "cells": [{"id": 16, "text": "Example 3-12 SELECT statement to test with the different users", "bbox": {"l": 136.8, "t": 346.27798, "r": 396.18622, "b": 354.603, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-12 SELECT statement to test with the different users"}, {"label": "code", "id": 9, "page_no": 45, "cluster": {"id": 9, "label": "code", "bbox": {"l": 134.74452209472656, "t": 356.92291259765625, "r": 548.0267333984375, "b": 461.7205810546875, "coord_origin": "TOPLEFT"}, "confidence": 0.6226056814193726, "cells": [{"id": 17, "text": "SELECT EMPLOYEE_ID,", "bbox": {"l": 136.8, "t": 363.37810999999994, "r": 231.71878000000004, "b": 372.15289, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "LAST_NAME, ", "bbox": {"l": 156.0726, "t": 375.37793000000005, "r": 226.73877000000002, "b": 384.15271, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "JOB_DESCRIPTION,", "bbox": {"l": 154.94188, "t": 387.37775, "r": 251.69853, "b": 396.15253000000007, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "DATE_OF_BIRTH,", "bbox": {"l": 155.31857, "t": 399.37756, "r": 241.73852999999997, "b": 408.15234, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "TAX_ID,", "bbox": {"l": 157.7877, "t": 411.37738, "r": 206.75902, "b": 420.1521599999999, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "USER_ID,", "bbox": {"l": 157.23792, "t": 423.37719999999996, "r": 211.73903, "b": 432.15198000000004, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "MANAGER_OF_EMPLOYEE", "bbox": {"l": 154.5134, "t": 435.37701, "r": 266.69827, "b": 444.15179, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "FROM", "bbox": {"l": 136.8, "t": 447.37683, "r": 157.58372, "b": 456.15161, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "HR_SCHEMA.EMPLOYEES", "bbox": {"l": 167.97559, "t": 447.37683, "r": 266.69827, "b": 456.15161, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT EMPLOYEE_ID, LAST_NAME, JOB_DESCRIPTION, DATE_OF_BIRTH, TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE FROM HR_SCHEMA.EMPLOYEES"}, {"label": "picture", "id": 10, "page_no": 45, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 136.77099609375, "t": 107.66394805908203, "r": 225.8523406982422, "b": 140.4359130859375, "coord_origin": "TOPLEFT"}, "confidence": 0.721601665019989, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 11, "page_no": 45, "cluster": {"id": 11, "label": "picture", "bbox": {"l": 136.36477661132812, "t": 219.7147674560547, "r": 228.86305236816406, "b": 252.31942749023438, "coord_origin": "TOPLEFT"}, "confidence": 0.6357523798942566, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 45, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.79859924316406, "t": 70.64143371582031, "r": 547.21362, "b": 93.16808319091797, "coord_origin": "TOPLEFT"}, "confidence": 0.9721304774284363, "cells": [{"id": 2, "text": "4.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.04445, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The result of the same query that is run by an employee (DSSMITH) gives the result that is ", "bbox": {"l": 147.79259, "t": 71.50867000000005, "r": 547.21362, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "shown in Figure 3-15. Each employee can see only his or her own data (row).", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 493.08124, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "4. The result of the same query that is run by an employee (DSSMITH) gives the result that is shown in Figure 3-15. Each employee can see only his or her own data (row)."}, {"label": "caption", "id": 3, "page_no": 45, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.97097778320312, "t": 144.56964111328125, "r": 347.41455078125, "b": 154.1024932861328, "coord_origin": "TOPLEFT"}, "confidence": 0.8800588846206665, "cells": [{"id": 5, "text": "Figure 3-15 Count of EMPLOYEES by an employee", "bbox": {"l": 136.8, "t": 145.39801, "r": 346.82037, "b": 153.72295999999994, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-15 Count of EMPLOYEES by an employee"}, {"label": "list_item", "id": 4, "page_no": 45, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.351318359375, "t": 170.72369384765625, "r": 543.98859, "b": 204.88552856445312, "coord_origin": "TOPLEFT"}, "confidence": 0.9731000661849976, "cells": [{"id": 6, "text": "5.", "bbox": {"l": 136.8, "t": 171.34869000000003, "r": 145.20747, "b": 180.56170999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "The result of the same query that is run by the Consultant/DBE gives the result that is ", "bbox": {"l": 148.00995, "t": 171.34869000000003, "r": 531.26587, "b": 180.56170999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "shown in Figure 3-16. The consultants/DBE can manage and implement RCAC, but they ", "bbox": {"l": 151.20016, "t": 183.34851000000003, "r": 543.98859, "b": 192.56151999999997, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "do not see any rows at all.", "bbox": {"l": 151.20016, "t": 195.34833000000003, "r": 267.03894, "b": 204.56133999999997, "coord_origin": "TOPLEFT"}}]}, "text": "5. The result of the same query that is run by the Consultant/DBE gives the result that is shown in Figure 3-16. The consultants/DBE can manage and implement RCAC, but they do not see any rows at all."}, {"label": "caption", "id": 5, "page_no": 45, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.17999267578125, "t": 256.5564880371094, "r": 345.2605285644531, "b": 265.80084228515625, "coord_origin": "TOPLEFT"}, "confidence": 0.845527708530426, "cells": [{"id": 10, "text": "Figure 3-16 Count of EMPLOYEES by a consultant", "bbox": {"l": 136.8, "t": 257.29791, "r": 344.35086, "b": 265.62285999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-16 Count of EMPLOYEES by a consultant"}, {"label": "text", "id": 6, "page_no": 45, "cluster": {"id": 6, "label": "text", "bbox": {"l": 150.62869262695312, "t": 282.65179443359375, "r": 456.21011, "b": 292.4617, "coord_origin": "TOPLEFT"}, "confidence": 0.8937364816665649, "cells": [{"id": 11, "text": "Does the result make sense? Yes, it does because RCAC is enabled.", "bbox": {"l": 151.2, "t": 283.24872, "r": 456.21011, "b": 292.4617, "coord_origin": "TOPLEFT"}}]}, "text": "Does the result make sense? Yes, it does because RCAC is enabled."}, {"label": "list_item", "id": 7, "page_no": 45, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 136.16029357910156, "t": 299.3460693359375, "r": 544.28741, "b": 333.59893798828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9715136885643005, "cells": [{"id": 12, "text": "6.", "bbox": {"l": 136.79984, "t": 300.22852, "r": 145.18713, "b": 309.4415, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Run queries against the EMPLOYEES table. The query that is used in this example runs ", "bbox": {"l": 147.98289, "t": 300.22852, "r": 543.73456, "b": 309.4415, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "and tests with the four different user profiles and is the same query that was run in 3.6.3, ", "bbox": {"l": 151.20001, "t": 312.22833, "r": 544.28741, "b": 321.44131, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "\u201cDemonstrating data access without RCAC\u201d on page 24. It is shown in Example 3-12.", "bbox": {"l": 151.20001, "t": 324.22814999999997, "r": 527.40405, "b": 333.44113, "coord_origin": "TOPLEFT"}}]}, "text": "6. Run queries against the EMPLOYEES table. The query that is used in this example runs and tests with the four different user profiles and is the same query that was run in 3.6.3, \u201cDemonstrating data access without RCAC\u201d on page 24. It is shown in Example 3-12."}, {"label": "caption", "id": 8, "page_no": 45, "cluster": {"id": 8, "label": "caption", "bbox": {"l": 136.2924041748047, "t": 345.3439636230469, "r": 396.5692138671875, "b": 354.603, "coord_origin": "TOPLEFT"}, "confidence": 0.7857663035392761, "cells": [{"id": 16, "text": "Example 3-12 SELECT statement to test with the different users", "bbox": {"l": 136.8, "t": 346.27798, "r": 396.18622, "b": 354.603, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-12 SELECT statement to test with the different users"}, {"label": "code", "id": 9, "page_no": 45, "cluster": {"id": 9, "label": "code", "bbox": {"l": 134.74452209472656, "t": 356.92291259765625, "r": 548.0267333984375, "b": 461.7205810546875, "coord_origin": "TOPLEFT"}, "confidence": 0.6226056814193726, "cells": [{"id": 17, "text": "SELECT EMPLOYEE_ID,", "bbox": {"l": 136.8, "t": 363.37810999999994, "r": 231.71878000000004, "b": 372.15289, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "LAST_NAME, ", "bbox": {"l": 156.0726, "t": 375.37793000000005, "r": 226.73877000000002, "b": 384.15271, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "JOB_DESCRIPTION,", "bbox": {"l": 154.94188, "t": 387.37775, "r": 251.69853, "b": 396.15253000000007, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "DATE_OF_BIRTH,", "bbox": {"l": 155.31857, "t": 399.37756, "r": 241.73852999999997, "b": 408.15234, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "TAX_ID,", "bbox": {"l": 157.7877, "t": 411.37738, "r": 206.75902, "b": 420.1521599999999, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "USER_ID,", "bbox": {"l": 157.23792, "t": 423.37719999999996, "r": 211.73903, "b": 432.15198000000004, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "MANAGER_OF_EMPLOYEE", "bbox": {"l": 154.5134, "t": 435.37701, "r": 266.69827, "b": 444.15179, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "FROM", "bbox": {"l": 136.8, "t": 447.37683, "r": 157.58372, "b": 456.15161, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "HR_SCHEMA.EMPLOYEES", "bbox": {"l": 167.97559, "t": 447.37683, "r": 266.69827, "b": 456.15161, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT EMPLOYEE_ID, LAST_NAME, JOB_DESCRIPTION, DATE_OF_BIRTH, TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE FROM HR_SCHEMA.EMPLOYEES"}, {"label": "picture", "id": 10, "page_no": 45, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 136.77099609375, "t": 107.66394805908203, "r": 225.8523406982422, "b": 140.4359130859375, "coord_origin": "TOPLEFT"}, "confidence": 0.721601665019989, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 11, "page_no": 45, "cluster": {"id": 11, "label": "picture", "bbox": {"l": 136.36477661132812, "t": 219.7147674560547, "r": 228.86305236816406, "b": 252.31942749023438, "coord_origin": "TOPLEFT"}, "confidence": 0.6357523798942566, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 45, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.19510650634766, "t": 754.4282836914062, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9150190949440002, "cells": [{"id": 0, "text": "30 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "30"}, {"label": "page_footer", "id": 1, "page_no": 45, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.36414337158203, "t": 754.7095947265625, "r": 334.42142, "b": 763.9661865234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9484574198722839, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 46, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "31", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "7.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.15512, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 3-17 shows the results of the query for a Human Resources (VGLUCCHESS) user ", "bbox": {"l": 147.94031, "t": 71.50903000000005, "r": 547.15259, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "profile. The user can see all the rows and all the columns.", "bbox": {"l": 151.19978, "t": 83.50885000000017, "r": 405.80127, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Figure 3-17 SQL statement result by Human Resources user profile", "bbox": {"l": 64.800003, "t": 487.2179, "r": 338.2901, "b": 495.54291, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "8.", "bbox": {"l": 136.8, "t": 513.22864, "r": 145.20114, "b": 522.4416200000001, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Figure 3-18 shows the results of the same query for the Manager (TQSPENSER). Notice ", "bbox": {"l": 148.00151, "t": 513.22864, "r": 546.0484, "b": 522.4416200000001, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "the masking of the DATE_OF_BIRTH and TAX_ID columns.", "bbox": {"l": 151.20015, "t": 525.2284500000001, "r": 414.04752, "b": 534.4414400000001, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Figure 3-18 SQL statement result by Manager profile", "bbox": {"l": 64.800003, "t": 618.31799, "r": 279.30243, "b": 626.64301, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "9.", "bbox": {"l": 136.8, "t": 644.32863, "r": 145.19516, "b": 653.5416299999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Figure 3-19 shows the results of the same query for an employee (DSSMITH). The ", "bbox": {"l": 147.99353, "t": 644.32863, "r": 518.90057, "b": 653.5416299999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "employee can only see only his own data with no masking at all.", "bbox": {"l": 151.20016, "t": 656.32843, "r": 433.90381, "b": 665.54143, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Figure 3-19 SQL statement result by an employee profile", "bbox": {"l": 64.800003, "t": 706.338005, "r": 294.81302, "b": 714.663002, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 344.6293640136719, "t": 754.7607421875, "r": 523.60162, "b": 764.101806640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9559109210968018, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.7171630859375, "t": 754.2883911132812, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9095556735992432, "cells": [{"id": 1, "text": "31", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 136.29183959960938, "t": 70.52925872802734, "r": 547.15259, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9437284469604492, "cells": [{"id": 2, "text": "7.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.15512, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 3-17 shows the results of the query for a Human Resources (VGLUCCHESS) user ", "bbox": {"l": 147.94031, "t": 71.50903000000005, "r": 547.15259, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "profile. The user can see all the rows and all the columns.", "bbox": {"l": 151.19978, "t": 83.50885000000017, "r": 405.80127, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.41815185546875, "t": 486.6556091308594, "r": 338.3864440917969, "b": 495.9942626953125, "coord_origin": "TOPLEFT"}, "confidence": 0.8823539018630981, "cells": [{"id": 5, "text": "Figure 3-17 SQL statement result by Human Resources user profile", "bbox": {"l": 64.800003, "t": 487.2179, "r": 338.2901, "b": 495.54291, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 136.21075439453125, "t": 512.54150390625, "r": 546.0484, "b": 535.139892578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9411396384239197, "cells": [{"id": 6, "text": "8.", "bbox": {"l": 136.8, "t": 513.22864, "r": 145.20114, "b": 522.4416200000001, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Figure 3-18 shows the results of the same query for the Manager (TQSPENSER). Notice ", "bbox": {"l": 148.00151, "t": 513.22864, "r": 546.0484, "b": 522.4416200000001, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "the masking of the DATE_OF_BIRTH and TAX_ID columns.", "bbox": {"l": 151.20015, "t": 525.2284500000001, "r": 414.04752, "b": 534.4414400000001, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 64.57685852050781, "t": 617.3950805664062, "r": 279.62469482421875, "b": 626.7601318359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9109888672828674, "cells": [{"id": 9, "text": "Figure 3-18 SQL statement result by Manager profile", "bbox": {"l": 64.800003, "t": 618.31799, "r": 279.30243, "b": 626.64301, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 136.3648223876953, "t": 643.3563842773438, "r": 518.90057, "b": 665.8402709960938, "coord_origin": "TOPLEFT"}, "confidence": 0.9563440084457397, "cells": [{"id": 10, "text": "9.", "bbox": {"l": 136.8, "t": 644.32863, "r": 145.19516, "b": 653.5416299999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Figure 3-19 shows the results of the same query for an employee (DSSMITH). The ", "bbox": {"l": 147.99353, "t": 644.32863, "r": 518.90057, "b": 653.5416299999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "employee can only see only his own data with no masking at all.", "bbox": {"l": 151.20016, "t": 656.32843, "r": 433.90381, "b": 665.54143, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "caption", "bbox": {"l": 64.505126953125, "t": 705.2019653320312, "r": 295.1390380859375, "b": 714.663002, "coord_origin": "TOPLEFT"}, "confidence": 0.9352152943611145, "cells": [{"id": 13, "text": "Figure 3-19 SQL statement result by an employee profile", "bbox": {"l": 64.800003, "t": 706.338005, "r": 294.81302, "b": 714.663002, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 46, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.6293640136719, "t": 754.7607421875, "r": 523.60162, "b": 764.101806640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9559109210968018, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 46, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.7171630859375, "t": 754.2883911132812, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9095556735992432, "cells": [{"id": 1, "text": "31", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "31"}, {"label": "list_item", "id": 2, "page_no": 46, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.29183959960938, "t": 70.52925872802734, "r": 547.15259, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9437284469604492, "cells": [{"id": 2, "text": "7.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.15512, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 3-17 shows the results of the query for a Human Resources (VGLUCCHESS) user ", "bbox": {"l": 147.94031, "t": 71.50903000000005, "r": 547.15259, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "profile. The user can see all the rows and all the columns.", "bbox": {"l": 151.19978, "t": 83.50885000000017, "r": 405.80127, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "7. Figure 3-17 shows the results of the query for a Human Resources (VGLUCCHESS) user profile. The user can see all the rows and all the columns."}, {"label": "caption", "id": 3, "page_no": 46, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.41815185546875, "t": 486.6556091308594, "r": 338.3864440917969, "b": 495.9942626953125, "coord_origin": "TOPLEFT"}, "confidence": 0.8823539018630981, "cells": [{"id": 5, "text": "Figure 3-17 SQL statement result by Human Resources user profile", "bbox": {"l": 64.800003, "t": 487.2179, "r": 338.2901, "b": 495.54291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-17 SQL statement result by Human Resources user profile"}, {"label": "list_item", "id": 4, "page_no": 46, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.21075439453125, "t": 512.54150390625, "r": 546.0484, "b": 535.139892578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9411396384239197, "cells": [{"id": 6, "text": "8.", "bbox": {"l": 136.8, "t": 513.22864, "r": 145.20114, "b": 522.4416200000001, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Figure 3-18 shows the results of the same query for the Manager (TQSPENSER). Notice ", "bbox": {"l": 148.00151, "t": 513.22864, "r": 546.0484, "b": 522.4416200000001, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "the masking of the DATE_OF_BIRTH and TAX_ID columns.", "bbox": {"l": 151.20015, "t": 525.2284500000001, "r": 414.04752, "b": 534.4414400000001, "coord_origin": "TOPLEFT"}}]}, "text": "8. Figure 3-18 shows the results of the same query for the Manager (TQSPENSER). Notice the masking of the DATE_OF_BIRTH and TAX_ID columns."}, {"label": "caption", "id": 5, "page_no": 46, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.57685852050781, "t": 617.3950805664062, "r": 279.62469482421875, "b": 626.7601318359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9109888672828674, "cells": [{"id": 9, "text": "Figure 3-18 SQL statement result by Manager profile", "bbox": {"l": 64.800003, "t": 618.31799, "r": 279.30243, "b": 626.64301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-18 SQL statement result by Manager profile"}, {"label": "list_item", "id": 6, "page_no": 46, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.3648223876953, "t": 643.3563842773438, "r": 518.90057, "b": 665.8402709960938, "coord_origin": "TOPLEFT"}, "confidence": 0.9563440084457397, "cells": [{"id": 10, "text": "9.", "bbox": {"l": 136.8, "t": 644.32863, "r": 145.19516, "b": 653.5416299999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Figure 3-19 shows the results of the same query for an employee (DSSMITH). The ", "bbox": {"l": 147.99353, "t": 644.32863, "r": 518.90057, "b": 653.5416299999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "employee can only see only his own data with no masking at all.", "bbox": {"l": 151.20016, "t": 656.32843, "r": 433.90381, "b": 665.54143, "coord_origin": "TOPLEFT"}}]}, "text": "9. Figure 3-19 shows the results of the same query for an employee (DSSMITH). The employee can only see only his own data with no masking at all."}, {"label": "caption", "id": 7, "page_no": 46, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 64.505126953125, "t": 705.2019653320312, "r": 295.1390380859375, "b": 714.663002, "coord_origin": "TOPLEFT"}, "confidence": 0.9352152943611145, "cells": [{"id": 13, "text": "Figure 3-19 SQL statement result by an employee profile", "bbox": {"l": 64.800003, "t": 706.338005, "r": 294.81302, "b": 714.663002, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-19 SQL statement result by an employee profile"}], "body": [{"label": "list_item", "id": 2, "page_no": 46, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.29183959960938, "t": 70.52925872802734, "r": 547.15259, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9437284469604492, "cells": [{"id": 2, "text": "7.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.15512, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 3-17 shows the results of the query for a Human Resources (VGLUCCHESS) user ", "bbox": {"l": 147.94031, "t": 71.50903000000005, "r": 547.15259, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "profile. The user can see all the rows and all the columns.", "bbox": {"l": 151.19978, "t": 83.50885000000017, "r": 405.80127, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "7. Figure 3-17 shows the results of the query for a Human Resources (VGLUCCHESS) user profile. The user can see all the rows and all the columns."}, {"label": "caption", "id": 3, "page_no": 46, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.41815185546875, "t": 486.6556091308594, "r": 338.3864440917969, "b": 495.9942626953125, "coord_origin": "TOPLEFT"}, "confidence": 0.8823539018630981, "cells": [{"id": 5, "text": "Figure 3-17 SQL statement result by Human Resources user profile", "bbox": {"l": 64.800003, "t": 487.2179, "r": 338.2901, "b": 495.54291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-17 SQL statement result by Human Resources user profile"}, {"label": "list_item", "id": 4, "page_no": 46, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.21075439453125, "t": 512.54150390625, "r": 546.0484, "b": 535.139892578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9411396384239197, "cells": [{"id": 6, "text": "8.", "bbox": {"l": 136.8, "t": 513.22864, "r": 145.20114, "b": 522.4416200000001, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Figure 3-18 shows the results of the same query for the Manager (TQSPENSER). Notice ", "bbox": {"l": 148.00151, "t": 513.22864, "r": 546.0484, "b": 522.4416200000001, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "the masking of the DATE_OF_BIRTH and TAX_ID columns.", "bbox": {"l": 151.20015, "t": 525.2284500000001, "r": 414.04752, "b": 534.4414400000001, "coord_origin": "TOPLEFT"}}]}, "text": "8. Figure 3-18 shows the results of the same query for the Manager (TQSPENSER). Notice the masking of the DATE_OF_BIRTH and TAX_ID columns."}, {"label": "caption", "id": 5, "page_no": 46, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.57685852050781, "t": 617.3950805664062, "r": 279.62469482421875, "b": 626.7601318359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9109888672828674, "cells": [{"id": 9, "text": "Figure 3-18 SQL statement result by Manager profile", "bbox": {"l": 64.800003, "t": 618.31799, "r": 279.30243, "b": 626.64301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-18 SQL statement result by Manager profile"}, {"label": "list_item", "id": 6, "page_no": 46, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.3648223876953, "t": 643.3563842773438, "r": 518.90057, "b": 665.8402709960938, "coord_origin": "TOPLEFT"}, "confidence": 0.9563440084457397, "cells": [{"id": 10, "text": "9.", "bbox": {"l": 136.8, "t": 644.32863, "r": 145.19516, "b": 653.5416299999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Figure 3-19 shows the results of the same query for an employee (DSSMITH). The ", "bbox": {"l": 147.99353, "t": 644.32863, "r": 518.90057, "b": 653.5416299999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "employee can only see only his own data with no masking at all.", "bbox": {"l": 151.20016, "t": 656.32843, "r": 433.90381, "b": 665.54143, "coord_origin": "TOPLEFT"}}]}, "text": "9. Figure 3-19 shows the results of the same query for an employee (DSSMITH). The employee can only see only his own data with no masking at all."}, {"label": "caption", "id": 7, "page_no": 46, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 64.505126953125, "t": 705.2019653320312, "r": 295.1390380859375, "b": 714.663002, "coord_origin": "TOPLEFT"}, "confidence": 0.9352152943611145, "cells": [{"id": 13, "text": "Figure 3-19 SQL statement result by an employee profile", "bbox": {"l": 64.800003, "t": 706.338005, "r": 294.81302, "b": 714.663002, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-19 SQL statement result by an employee profile"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 46, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.6293640136719, "t": 754.7607421875, "r": 523.60162, "b": 764.101806640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9559109210968018, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 46, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.7171630859375, "t": 754.2883911132812, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9095556735992432, "cells": [{"id": 1, "text": "31", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "31"}]}}, {"page_no": 47, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "32 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "10.Figure 3-20 shows the results of the same query for the Consultant/DBE, who is not one of ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 547.27527, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "the company\u2019s employees.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 268.18436, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 3-20 SQL statement result by Consultant/DBE profile", "bbox": {"l": 64.800003, "t": 166.03801999999996, "r": 307.77298, "b": 174.36298, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "3.6.8", "bbox": {"l": 64.800003, "t": 194.87469, "r": 93.92009, "b": 206.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Demonstrating data access with a view and RCAC", "bbox": {"l": 97.56012, "t": 194.87469, "r": 408.97745, "b": 206.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "This section covers data access with a view and RCAC. Complete the following steps:", "bbox": {"l": 136.8, "t": 221.02868999999998, "r": 515.07678, "b": 230.24170000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "1.", "bbox": {"l": 136.79999, "t": 238.00847999999996, "r": 145.17825, "b": 247.2215, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "The EMPLOYEES table has a column that is called On_Leave_Flag (Figure 3-21 on ", "bbox": {"l": 147.97101, "t": 238.00847999999996, "r": 524.30975, "b": 247.2215, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "page 33) indicating that the employee is on Leave of Absence. For this purpose, a view is ", "bbox": {"l": 151.20016, "t": 250.00829999999996, "r": 547.23077, "b": 259.22131, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "created that lists only the employees that are on leave.", "bbox": {"l": 151.20018, "t": 262.00811999999996, "r": 391.80084, "b": 271.22113, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.27489471435547, "t": 754.446044921875, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9054298996925354, "cells": [{"id": 0, "text": "32 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.40065002441406, "t": 754.7294311523438, "r": 334.42142, "b": 763.9262084960938, "coord_origin": "TOPLEFT"}, "confidence": 0.9436663389205933, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 136.8, "t": 70.6961898803711, "r": 547.27527, "b": 92.95230102539062, "coord_origin": "TOPLEFT"}, "confidence": 0.678650975227356, "cells": [{"id": 2, "text": "10.Figure 3-20 shows the results of the same query for the Consultant/DBE, who is not one of ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 547.27527, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "the company\u2019s employees.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 268.18436, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.38975524902344, "t": 165.40078735351562, "r": 308.0195617675781, "b": 174.5470733642578, "coord_origin": "TOPLEFT"}, "confidence": 0.9349976181983948, "cells": [{"id": 4, "text": "Figure 3-20 SQL statement result by Consultant/DBE profile", "bbox": {"l": 64.800003, "t": 166.03801999999996, "r": 307.77298, "b": 174.36298, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 64.18441009521484, "t": 193.73703002929688, "r": 408.97745, "b": 207.04144287109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9546941518783569, "cells": [{"id": 5, "text": "3.6.8", "bbox": {"l": 64.800003, "t": 194.87469, "r": 93.92009, "b": 206.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Demonstrating data access with a view and RCAC", "bbox": {"l": 97.56012, "t": 194.87469, "r": 408.97745, "b": 206.86273000000006, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.6727294921875, "t": 220.03721618652344, "r": 515.07678, "b": 230.3160400390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9435732960700989, "cells": [{"id": 7, "text": "This section covers data access with a view and RCAC. Complete the following steps:", "bbox": {"l": 136.8, "t": 221.02868999999998, "r": 515.07678, "b": 230.24170000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 136.79999, "t": 237.41502380371094, "r": 547.23077, "b": 271.5574645996094, "coord_origin": "TOPLEFT"}, "confidence": 0.9775716662406921, "cells": [{"id": 8, "text": "1.", "bbox": {"l": 136.79999, "t": 238.00847999999996, "r": 145.17825, "b": 247.2215, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "The EMPLOYEES table has a column that is called On_Leave_Flag (Figure 3-21 on ", "bbox": {"l": 147.97101, "t": 238.00847999999996, "r": 524.30975, "b": 247.2215, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "page 33) indicating that the employee is on Leave of Absence. For this purpose, a view is ", "bbox": {"l": 151.20016, "t": 250.00829999999996, "r": 547.23077, "b": 259.22131, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "created that lists only the employees that are on leave.", "bbox": {"l": 151.20018, "t": 262.00811999999996, "r": 391.80084, "b": 271.22113, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 47, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.27489471435547, "t": 754.446044921875, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9054298996925354, "cells": [{"id": 0, "text": "32 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "32"}, {"label": "page_footer", "id": 1, "page_no": 47, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.40065002441406, "t": 754.7294311523438, "r": 334.42142, "b": 763.9262084960938, "coord_origin": "TOPLEFT"}, "confidence": 0.9436663389205933, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "list_item", "id": 2, "page_no": 47, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.8, "t": 70.6961898803711, "r": 547.27527, "b": 92.95230102539062, "coord_origin": "TOPLEFT"}, "confidence": 0.678650975227356, "cells": [{"id": 2, "text": "10.Figure 3-20 shows the results of the same query for the Consultant/DBE, who is not one of ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 547.27527, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "the company\u2019s employees.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 268.18436, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "10.Figure 3-20 shows the results of the same query for the Consultant/DBE, who is not one of the company\u2019s employees."}, {"label": "caption", "id": 3, "page_no": 47, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.38975524902344, "t": 165.40078735351562, "r": 308.0195617675781, "b": 174.5470733642578, "coord_origin": "TOPLEFT"}, "confidence": 0.9349976181983948, "cells": [{"id": 4, "text": "Figure 3-20 SQL statement result by Consultant/DBE profile", "bbox": {"l": 64.800003, "t": 166.03801999999996, "r": 307.77298, "b": 174.36298, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-20 SQL statement result by Consultant/DBE profile"}, {"label": "section_header", "id": 4, "page_no": 47, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.18441009521484, "t": 193.73703002929688, "r": 408.97745, "b": 207.04144287109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9546941518783569, "cells": [{"id": 5, "text": "3.6.8", "bbox": {"l": 64.800003, "t": 194.87469, "r": 93.92009, "b": 206.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Demonstrating data access with a view and RCAC", "bbox": {"l": 97.56012, "t": 194.87469, "r": 408.97745, "b": 206.86273000000006, "coord_origin": "TOPLEFT"}}]}, "text": "3.6.8 Demonstrating data access with a view and RCAC"}, {"label": "text", "id": 5, "page_no": 47, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.6727294921875, "t": 220.03721618652344, "r": 515.07678, "b": 230.3160400390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9435732960700989, "cells": [{"id": 7, "text": "This section covers data access with a view and RCAC. Complete the following steps:", "bbox": {"l": 136.8, "t": 221.02868999999998, "r": 515.07678, "b": 230.24170000000004, "coord_origin": "TOPLEFT"}}]}, "text": "This section covers data access with a view and RCAC. Complete the following steps:"}, {"label": "list_item", "id": 6, "page_no": 47, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.79999, "t": 237.41502380371094, "r": 547.23077, "b": 271.5574645996094, "coord_origin": "TOPLEFT"}, "confidence": 0.9775716662406921, "cells": [{"id": 8, "text": "1.", "bbox": {"l": 136.79999, "t": 238.00847999999996, "r": 145.17825, "b": 247.2215, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "The EMPLOYEES table has a column that is called On_Leave_Flag (Figure 3-21 on ", "bbox": {"l": 147.97101, "t": 238.00847999999996, "r": 524.30975, "b": 247.2215, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "page 33) indicating that the employee is on Leave of Absence. For this purpose, a view is ", "bbox": {"l": 151.20016, "t": 250.00829999999996, "r": 547.23077, "b": 259.22131, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "created that lists only the employees that are on leave.", "bbox": {"l": 151.20018, "t": 262.00811999999996, "r": 391.80084, "b": 271.22113, "coord_origin": "TOPLEFT"}}]}, "text": "1. The EMPLOYEES table has a column that is called On_Leave_Flag (Figure 3-21 on page 33) indicating that the employee is on Leave of Absence. For this purpose, a view is created that lists only the employees that are on leave."}], "body": [{"label": "list_item", "id": 2, "page_no": 47, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.8, "t": 70.6961898803711, "r": 547.27527, "b": 92.95230102539062, "coord_origin": "TOPLEFT"}, "confidence": 0.678650975227356, "cells": [{"id": 2, "text": "10.Figure 3-20 shows the results of the same query for the Consultant/DBE, who is not one of ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 547.27527, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "the company\u2019s employees.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 268.18436, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "10.Figure 3-20 shows the results of the same query for the Consultant/DBE, who is not one of the company\u2019s employees."}, {"label": "caption", "id": 3, "page_no": 47, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.38975524902344, "t": 165.40078735351562, "r": 308.0195617675781, "b": 174.5470733642578, "coord_origin": "TOPLEFT"}, "confidence": 0.9349976181983948, "cells": [{"id": 4, "text": "Figure 3-20 SQL statement result by Consultant/DBE profile", "bbox": {"l": 64.800003, "t": 166.03801999999996, "r": 307.77298, "b": 174.36298, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-20 SQL statement result by Consultant/DBE profile"}, {"label": "section_header", "id": 4, "page_no": 47, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.18441009521484, "t": 193.73703002929688, "r": 408.97745, "b": 207.04144287109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9546941518783569, "cells": [{"id": 5, "text": "3.6.8", "bbox": {"l": 64.800003, "t": 194.87469, "r": 93.92009, "b": 206.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Demonstrating data access with a view and RCAC", "bbox": {"l": 97.56012, "t": 194.87469, "r": 408.97745, "b": 206.86273000000006, "coord_origin": "TOPLEFT"}}]}, "text": "3.6.8 Demonstrating data access with a view and RCAC"}, {"label": "text", "id": 5, "page_no": 47, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.6727294921875, "t": 220.03721618652344, "r": 515.07678, "b": 230.3160400390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9435732960700989, "cells": [{"id": 7, "text": "This section covers data access with a view and RCAC. Complete the following steps:", "bbox": {"l": 136.8, "t": 221.02868999999998, "r": 515.07678, "b": 230.24170000000004, "coord_origin": "TOPLEFT"}}]}, "text": "This section covers data access with a view and RCAC. Complete the following steps:"}, {"label": "list_item", "id": 6, "page_no": 47, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.79999, "t": 237.41502380371094, "r": 547.23077, "b": 271.5574645996094, "coord_origin": "TOPLEFT"}, "confidence": 0.9775716662406921, "cells": [{"id": 8, "text": "1.", "bbox": {"l": 136.79999, "t": 238.00847999999996, "r": 145.17825, "b": 247.2215, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "The EMPLOYEES table has a column that is called On_Leave_Flag (Figure 3-21 on ", "bbox": {"l": 147.97101, "t": 238.00847999999996, "r": 524.30975, "b": 247.2215, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "page 33) indicating that the employee is on Leave of Absence. For this purpose, a view is ", "bbox": {"l": 151.20016, "t": 250.00829999999996, "r": 547.23077, "b": 259.22131, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "created that lists only the employees that are on leave.", "bbox": {"l": 151.20018, "t": 262.00811999999996, "r": 391.80084, "b": 271.22113, "coord_origin": "TOPLEFT"}}]}, "text": "1. The EMPLOYEES table has a column that is called On_Leave_Flag (Figure 3-21 on page 33) indicating that the employee is on Leave of Absence. For this purpose, a view is created that lists only the employees that are on leave."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 47, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.27489471435547, "t": 754.446044921875, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9054298996925354, "cells": [{"id": 0, "text": "32 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "32"}, {"label": "page_footer", "id": 1, "page_no": 47, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.40065002441406, "t": 754.7294311523438, "r": 334.42142, "b": 763.9262084960938, "coord_origin": "TOPLEFT"}, "confidence": 0.9436663389205933, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 48, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "33", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Figure 3-21 Employees on leave", "bbox": {"l": 64.800003, "t": 567.49789, "r": 198.35095, "b": 575.82291, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "2.", "bbox": {"l": 136.8, "t": 593.44862, "r": 145.22173, "b": 602.66162, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Example 3-13 shows the definition of the view.", "bbox": {"l": 148.02896, "t": 593.44862, "r": 355.694, "b": 602.66162, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Example 3-13 VIew of employees on leave", "bbox": {"l": 136.8, "t": 615.49789, "r": 311.19119, "b": 623.82291, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "CREATE VIEW HR_SCHEMA.EMPLOYEES_ON_LEAVE (EMPLOYEE_ID,", "bbox": {"l": 136.8, "t": 632.59802, "r": 406.61636, "b": 641.37277, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "FIRST_NAME,", "bbox": {"l": 280.25302, "t": 644.59782, "r": 401.63635, "b": 653.37257, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "MIDDLE_INITIAL,", "bbox": {"l": 269.03604, "t": 656.59763, "r": 421.61609, "b": 665.37238, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "LAST_NAME,", "bbox": {"l": 283.67535, "t": 668.59743, "r": 396.65637, "b": 677.37219, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "WORK_DEPARTMENT,", "bbox": {"l": 266.70862, "t": 680.5972399999999, "r": 426.59613, "b": 689.372, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "PHONE_EXTENSION,", "bbox": {"l": 266.70862, "t": 692.5970540000001, "r": 426.59613, "b": 701.371811, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "JOB_DESCRIPTION,", "bbox": {"l": 266.70862, "t": 704.596863, "r": 426.59613, "b": 713.37162, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "DATE_OF_BIRTH,", "bbox": {"l": 271.53592, "t": 716.596672, "r": 416.63611, "b": 725.371429, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 344.5408020019531, "t": 754.6817016601562, "r": 523.60162, "b": 764.1367797851562, "coord_origin": "TOPLEFT"}, "confidence": 0.9533696174621582, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.63330078125, "t": 754.3946533203125, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9169439077377319, "cells": [{"id": 1, "text": "33", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "caption", "bbox": {"l": 64.41194152832031, "t": 566.6688232421875, "r": 198.96627807617188, "b": 576.1551513671875, "coord_origin": "TOPLEFT"}, "confidence": 0.7591876983642578, "cells": [{"id": 2, "text": "Figure 3-21 Employees on leave", "bbox": {"l": 64.800003, "t": 567.49789, "r": 198.35095, "b": 575.82291, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "list_item", "bbox": {"l": 136.17755126953125, "t": 592.6334838867188, "r": 355.694, "b": 602.9717407226562, "coord_origin": "TOPLEFT"}, "confidence": 0.83542799949646, "cells": [{"id": 3, "text": "2.", "bbox": {"l": 136.8, "t": 593.44862, "r": 145.22173, "b": 602.66162, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Example 3-13 shows the definition of the view.", "bbox": {"l": 148.02896, "t": 593.44862, "r": 355.694, "b": 602.66162, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "caption", "bbox": {"l": 136.4932098388672, "t": 614.6098022460938, "r": 311.614013671875, "b": 624.4323120117188, "coord_origin": "TOPLEFT"}, "confidence": 0.6750876307487488, "cells": [{"id": 5, "text": "Example 3-13 VIew of employees on leave", "bbox": {"l": 136.8, "t": 615.49789, "r": 311.19119, "b": 623.82291, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "code", "bbox": {"l": 136.7435302734375, "t": 630.8392333984375, "r": 426.59613, "b": 726.1493530273438, "coord_origin": "TOPLEFT"}, "confidence": 0.7123060822486877, "cells": [{"id": 6, "text": "CREATE VIEW HR_SCHEMA.EMPLOYEES_ON_LEAVE (EMPLOYEE_ID,", "bbox": {"l": 136.8, "t": 632.59802, "r": 406.61636, "b": 641.37277, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "FIRST_NAME,", "bbox": {"l": 280.25302, "t": 644.59782, "r": 401.63635, "b": 653.37257, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "MIDDLE_INITIAL,", "bbox": {"l": 269.03604, "t": 656.59763, "r": 421.61609, "b": 665.37238, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "LAST_NAME,", "bbox": {"l": 283.67535, "t": 668.59743, "r": 396.65637, "b": 677.37219, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "WORK_DEPARTMENT,", "bbox": {"l": 266.70862, "t": 680.5972399999999, "r": 426.59613, "b": 689.372, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "PHONE_EXTENSION,", "bbox": {"l": 266.70862, "t": 692.5970540000001, "r": 426.59613, "b": 701.371811, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "JOB_DESCRIPTION,", "bbox": {"l": 266.70862, "t": 704.596863, "r": 426.59613, "b": 713.37162, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "DATE_OF_BIRTH,", "bbox": {"l": 271.53592, "t": 716.596672, "r": 416.63611, "b": 725.371429, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 48, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.5408020019531, "t": 754.6817016601562, "r": 523.60162, "b": 764.1367797851562, "coord_origin": "TOPLEFT"}, "confidence": 0.9533696174621582, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 48, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.63330078125, "t": 754.3946533203125, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9169439077377319, "cells": [{"id": 1, "text": "33", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "33"}, {"label": "caption", "id": 2, "page_no": 48, "cluster": {"id": 2, "label": "caption", "bbox": {"l": 64.41194152832031, "t": 566.6688232421875, "r": 198.96627807617188, "b": 576.1551513671875, "coord_origin": "TOPLEFT"}, "confidence": 0.7591876983642578, "cells": [{"id": 2, "text": "Figure 3-21 Employees on leave", "bbox": {"l": 64.800003, "t": 567.49789, "r": 198.35095, "b": 575.82291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-21 Employees on leave"}, {"label": "list_item", "id": 3, "page_no": 48, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 136.17755126953125, "t": 592.6334838867188, "r": 355.694, "b": 602.9717407226562, "coord_origin": "TOPLEFT"}, "confidence": 0.83542799949646, "cells": [{"id": 3, "text": "2.", "bbox": {"l": 136.8, "t": 593.44862, "r": 145.22173, "b": 602.66162, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Example 3-13 shows the definition of the view.", "bbox": {"l": 148.02896, "t": 593.44862, "r": 355.694, "b": 602.66162, "coord_origin": "TOPLEFT"}}]}, "text": "2. Example 3-13 shows the definition of the view."}, {"label": "caption", "id": 4, "page_no": 48, "cluster": {"id": 4, "label": "caption", "bbox": {"l": 136.4932098388672, "t": 614.6098022460938, "r": 311.614013671875, "b": 624.4323120117188, "coord_origin": "TOPLEFT"}, "confidence": 0.6750876307487488, "cells": [{"id": 5, "text": "Example 3-13 VIew of employees on leave", "bbox": {"l": 136.8, "t": 615.49789, "r": 311.19119, "b": 623.82291, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-13 VIew of employees on leave"}, {"label": "code", "id": 5, "page_no": 48, "cluster": {"id": 5, "label": "code", "bbox": {"l": 136.7435302734375, "t": 630.8392333984375, "r": 426.59613, "b": 726.1493530273438, "coord_origin": "TOPLEFT"}, "confidence": 0.7123060822486877, "cells": [{"id": 6, "text": "CREATE VIEW HR_SCHEMA.EMPLOYEES_ON_LEAVE (EMPLOYEE_ID,", "bbox": {"l": 136.8, "t": 632.59802, "r": 406.61636, "b": 641.37277, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "FIRST_NAME,", "bbox": {"l": 280.25302, "t": 644.59782, "r": 401.63635, "b": 653.37257, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "MIDDLE_INITIAL,", "bbox": {"l": 269.03604, "t": 656.59763, "r": 421.61609, "b": 665.37238, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "LAST_NAME,", "bbox": {"l": 283.67535, "t": 668.59743, "r": 396.65637, "b": 677.37219, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "WORK_DEPARTMENT,", "bbox": {"l": 266.70862, "t": 680.5972399999999, "r": 426.59613, "b": 689.372, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "PHONE_EXTENSION,", "bbox": {"l": 266.70862, "t": 692.5970540000001, "r": 426.59613, "b": 701.371811, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "JOB_DESCRIPTION,", "bbox": {"l": 266.70862, "t": 704.596863, "r": 426.59613, "b": 713.37162, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "DATE_OF_BIRTH,", "bbox": {"l": 271.53592, "t": 716.596672, "r": 416.63611, "b": 725.371429, "coord_origin": "TOPLEFT"}}]}, "text": "CREATE VIEW HR_SCHEMA.EMPLOYEES_ON_LEAVE (EMPLOYEE_ID, FIRST_NAME, MIDDLE_INITIAL, LAST_NAME, WORK_DEPARTMENT, PHONE_EXTENSION, JOB_DESCRIPTION, DATE_OF_BIRTH,"}], "body": [{"label": "caption", "id": 2, "page_no": 48, "cluster": {"id": 2, "label": "caption", "bbox": {"l": 64.41194152832031, "t": 566.6688232421875, "r": 198.96627807617188, "b": 576.1551513671875, "coord_origin": "TOPLEFT"}, "confidence": 0.7591876983642578, "cells": [{"id": 2, "text": "Figure 3-21 Employees on leave", "bbox": {"l": 64.800003, "t": 567.49789, "r": 198.35095, "b": 575.82291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-21 Employees on leave"}, {"label": "list_item", "id": 3, "page_no": 48, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 136.17755126953125, "t": 592.6334838867188, "r": 355.694, "b": 602.9717407226562, "coord_origin": "TOPLEFT"}, "confidence": 0.83542799949646, "cells": [{"id": 3, "text": "2.", "bbox": {"l": 136.8, "t": 593.44862, "r": 145.22173, "b": 602.66162, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Example 3-13 shows the definition of the view.", "bbox": {"l": 148.02896, "t": 593.44862, "r": 355.694, "b": 602.66162, "coord_origin": "TOPLEFT"}}]}, "text": "2. Example 3-13 shows the definition of the view."}, {"label": "caption", "id": 4, "page_no": 48, "cluster": {"id": 4, "label": "caption", "bbox": {"l": 136.4932098388672, "t": 614.6098022460938, "r": 311.614013671875, "b": 624.4323120117188, "coord_origin": "TOPLEFT"}, "confidence": 0.6750876307487488, "cells": [{"id": 5, "text": "Example 3-13 VIew of employees on leave", "bbox": {"l": 136.8, "t": 615.49789, "r": 311.19119, "b": 623.82291, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-13 VIew of employees on leave"}, {"label": "code", "id": 5, "page_no": 48, "cluster": {"id": 5, "label": "code", "bbox": {"l": 136.7435302734375, "t": 630.8392333984375, "r": 426.59613, "b": 726.1493530273438, "coord_origin": "TOPLEFT"}, "confidence": 0.7123060822486877, "cells": [{"id": 6, "text": "CREATE VIEW HR_SCHEMA.EMPLOYEES_ON_LEAVE (EMPLOYEE_ID,", "bbox": {"l": 136.8, "t": 632.59802, "r": 406.61636, "b": 641.37277, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "FIRST_NAME,", "bbox": {"l": 280.25302, "t": 644.59782, "r": 401.63635, "b": 653.37257, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "MIDDLE_INITIAL,", "bbox": {"l": 269.03604, "t": 656.59763, "r": 421.61609, "b": 665.37238, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "LAST_NAME,", "bbox": {"l": 283.67535, "t": 668.59743, "r": 396.65637, "b": 677.37219, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "WORK_DEPARTMENT,", "bbox": {"l": 266.70862, "t": 680.5972399999999, "r": 426.59613, "b": 689.372, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "PHONE_EXTENSION,", "bbox": {"l": 266.70862, "t": 692.5970540000001, "r": 426.59613, "b": 701.371811, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "JOB_DESCRIPTION,", "bbox": {"l": 266.70862, "t": 704.596863, "r": 426.59613, "b": 713.37162, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "DATE_OF_BIRTH,", "bbox": {"l": 271.53592, "t": 716.596672, "r": 416.63611, "b": 725.371429, "coord_origin": "TOPLEFT"}}]}, "text": "CREATE VIEW HR_SCHEMA.EMPLOYEES_ON_LEAVE (EMPLOYEE_ID, FIRST_NAME, MIDDLE_INITIAL, LAST_NAME, WORK_DEPARTMENT, PHONE_EXTENSION, JOB_DESCRIPTION, DATE_OF_BIRTH,"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 48, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.5408020019531, "t": 754.6817016601562, "r": 523.60162, "b": 764.1367797851562, "coord_origin": "TOPLEFT"}, "confidence": 0.9533696174621582, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 48, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.63330078125, "t": 754.3946533203125, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9169439077377319, "cells": [{"id": 1, "text": "33", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "33"}]}}, {"page_no": 49, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "34 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "TAX_ID,", "bbox": {"l": 295.95679, "t": 71.65808000000015, "r": 381.65659, "b": 80.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "USER_ID,", "bbox": {"l": 291.46075, "t": 83.65790000000004, "r": 386.6366, "b": 92.43268, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "MANAGER_OF_EMPLOYEE,", "bbox": {"l": 258.85648, "t": 95.65770999999995, "r": 446.63561999999996, "b": 104.4325, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "ON_LEAVE_FLAG )", "bbox": {"l": 269.03604, "t": 107.65752999999995, "r": 421.61609, "b": 116.43230999999992, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "AS ", "bbox": {"l": 136.8, "t": 119.65734999999995, "r": 151.74001, "b": 128.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "SELECT EMPLOYEE_ID,", "bbox": {"l": 136.8, "t": 131.65716999999995, "r": 231.71878000000004, "b": 140.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "FIRST_NAME ,", "bbox": {"l": 155.78375, "t": 143.65697999999998, "r": 231.71878000000004, "b": 152.43176000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "MIDDLE_INITIAL,", "bbox": {"l": 155.11975, "t": 155.65679999999998, "r": 246.71854, "b": 164.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "LAST_NAME ,", "bbox": {"l": 156.0726, "t": 167.65661999999998, "r": 226.73877000000002, "b": 176.43140000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "WORK_DEPARTMENT,", "bbox": {"l": 154.94188, "t": 179.65643, "r": 251.69853, "b": 188.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "PHONE_EXTENSION,", "bbox": {"l": 154.94188, "t": 191.65625, "r": 251.69853, "b": 200.43102999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "JOB_DESCRIPTION,", "bbox": {"l": 154.94188, "t": 203.65607, "r": 251.69853, "b": 212.43084999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "DATE_OF_BIRTH,", "bbox": {"l": 155.31857, "t": 215.65588000000002, "r": 241.73852999999997, "b": 224.43066, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "TAX_ID,", "bbox": {"l": 157.7877, "t": 227.65570000000002, "r": 206.75902, "b": 236.43048, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "USER_ID,", "bbox": {"l": 157.23792, "t": 239.65552000000002, "r": 211.73903, "b": 248.4303, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "MANAGER_OF_EMPLOYEE,", "bbox": {"l": 154.39282, "t": 251.65533000000005, "r": 271.67828, "b": 260.43011, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ON_LEAVE_FLAG", "bbox": {"l": 155.53102, "t": 263.65515000000005, "r": 236.69878, "b": 272.42993, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "FROM", "bbox": {"l": 136.8, "t": 275.65497000000005, "r": 157.55051, "b": 284.42975, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "HR_SCHEMA.EMPLOYEES ", "bbox": {"l": 167.92577, "t": 275.65497000000005, "r": 271.67828, "b": 284.42975, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "WHERE", "bbox": {"l": 136.8, "t": 287.65479, "r": 161.77747, "b": 296.42957, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "ON_LEAVE_FLAG = 'Y';", "bbox": {"l": 171.76845, "t": 287.65479, "r": 271.67828, "b": 296.42957, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "3.", "bbox": {"l": 136.8, "t": 316.48502, "r": 145.04652, "b": 325.698, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Use the view to query the data and see who is on leave. The SQL statement that is used is ", "bbox": {"l": 147.79535, "t": 316.48502, "r": 547.36621, "b": 325.698, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "shown in Example 3-14:", "bbox": {"l": 151.20016, "t": 328.48483, "r": 257.75723, "b": 337.69780999999995, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Example 3-14 SQL statement for employees on leave", "bbox": {"l": 136.8, "t": 350.5379899999999, "r": 353.97809, "b": 358.86301, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "SELECT EMPLOYEE_ID,", "bbox": {"l": 136.8, "t": 367.63812, "r": 231.71878000000004, "b": 376.4129, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "LAST_NAME,", "bbox": {"l": 156.39209, "t": 379.63794, "r": 221.69901999999996, "b": 388.41272, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "JOB_DESCRIPTION,", "bbox": {"l": 154.94188, "t": 391.63776, "r": 251.69853, "b": 400.41254, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "DATE_OF_BIRTH,", "bbox": {"l": 155.31857, "t": 403.63757, "r": 241.73852999999997, "b": 412.41235, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "TAX_ID,", "bbox": {"l": 157.7877, "t": 415.63739, "r": 206.75902, "b": 424.41217, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "USER_ID,", "bbox": {"l": 157.23792, "t": 427.63721, "r": 211.73903, "b": 436.41199, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "MANAGER_OF_EMPLOYEE", "bbox": {"l": 154.5134, "t": 439.63702, "r": 266.69827, "b": 448.4118000000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "FROM", "bbox": {"l": 136.8, "t": 451.63684, "r": 157.35744, "b": 460.41162, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "HR_SCHEMA.EMPLOYEES_ON_LEAVE;", "bbox": {"l": 167.63615, "t": 451.63684, "r": 316.67755, "b": 460.41162, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "4.", "bbox": {"l": 136.8, "t": 475.48706, "r": 145.07851, "b": 484.70004, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Start with the Human Resources person (VGLUCCHESS) and see what is the result of the ", "bbox": {"l": 147.83798, "t": 475.48706, "r": 547.25067, "b": 484.70004, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "previous query. He sees the two employees that are on leave and no masking is done over ", "bbox": {"l": 151.2002, "t": 487.54663, "r": 547.23877, "b": 496.75961, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "the DATE_OF_BIRTH and TAX_ID columns. The results of the query are shown in ", "bbox": {"l": 151.2002, "t": 499.54645, "r": 516.39642, "b": 508.75943, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Figure 3-22.", "bbox": {"l": 151.2002, "t": 511.54626, "r": 205.13356, "b": 520.7592500000001, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Figure 3-22 Employees on leave - Human Resources user", "bbox": {"l": 64.800003, "t": 571.09799, "r": 300.797, "b": 579.423, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "5.", "bbox": {"l": 136.8, "t": 597.04872, "r": 145.2104, "b": 606.26172, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Figure 3-23 shows what the Manager (TQSPENSER) gets when he runs the same query ", "bbox": {"l": 148.01385, "t": 597.04872, "r": 546.50952, "b": 606.26172, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "over the view. He sees only the employees that are on leave that are managed by him. In ", "bbox": {"l": 151.20016, "t": 609.04852, "r": 546.16187, "b": 618.26152, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "this example, it is one employee. The columns are masked, which confirms that RCAC is ", "bbox": {"l": 151.20016, "t": 621.04832, "r": 544.84515, "b": 630.2613200000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "applied to the view as well.", "bbox": {"l": 151.20016, "t": 633.04813, "r": 269.8038, "b": 642.26112, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Figure 3-23 Employee on leave - Manager of Field Reps user", "bbox": {"l": 64.800003, "t": 684.6179999999999, "r": 312.7247, "b": 692.943001, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.1474609375, "t": 754.3988037109375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9037860631942749, "cells": [{"id": 0, "text": "34 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.26473999023438, "t": 754.7013549804688, "r": 334.42142, "b": 764.0106811523438, "coord_origin": "TOPLEFT"}, "confidence": 0.9487432837486267, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 258.85648, "t": 71.10697937011719, "r": 446.63561999999996, "b": 117.91847229003906, "coord_origin": "TOPLEFT"}, "confidence": 0.6826066970825195, "cells": [{"id": 2, "text": "TAX_ID,", "bbox": {"l": 295.95679, "t": 71.65808000000015, "r": 381.65659, "b": 80.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "USER_ID,", "bbox": {"l": 291.46075, "t": 83.65790000000004, "r": 386.6366, "b": 92.43268, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "MANAGER_OF_EMPLOYEE,", "bbox": {"l": 258.85648, "t": 95.65770999999995, "r": 446.63561999999996, "b": 104.4325, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "ON_LEAVE_FLAG )", "bbox": {"l": 269.03604, "t": 107.65752999999995, "r": 421.61609, "b": 116.43230999999992, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.8447265625, "t": 118.94123840332031, "r": 151.74001, "b": 128.43213000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.6089476943016052, "cells": [{"id": 6, "text": "AS ", "bbox": {"l": 136.8, "t": 119.65734999999995, "r": 151.74001, "b": 128.43213000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 136.8, "t": 131.65716999999995, "r": 271.67828, "b": 260.43011, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 7, "text": "SELECT EMPLOYEE_ID,", "bbox": {"l": 136.8, "t": 131.65716999999995, "r": 231.71878000000004, "b": 140.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "FIRST_NAME ,", "bbox": {"l": 155.78375, "t": 143.65697999999998, "r": 231.71878000000004, "b": 152.43176000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "MIDDLE_INITIAL,", "bbox": {"l": 155.11975, "t": 155.65679999999998, "r": 246.71854, "b": 164.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "LAST_NAME ,", "bbox": {"l": 156.0726, "t": 167.65661999999998, "r": 226.73877000000002, "b": 176.43140000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "WORK_DEPARTMENT,", "bbox": {"l": 154.94188, "t": 179.65643, "r": 251.69853, "b": 188.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "PHONE_EXTENSION,", "bbox": {"l": 154.94188, "t": 191.65625, "r": 251.69853, "b": 200.43102999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "JOB_DESCRIPTION,", "bbox": {"l": 154.94188, "t": 203.65607, "r": 251.69853, "b": 212.43084999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "DATE_OF_BIRTH,", "bbox": {"l": 155.31857, "t": 215.65588000000002, "r": 241.73852999999997, "b": 224.43066, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "TAX_ID,", "bbox": {"l": 157.7877, "t": 227.65570000000002, "r": 206.75902, "b": 236.43048, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "USER_ID,", "bbox": {"l": 157.23792, "t": 239.65552000000002, "r": 211.73903, "b": 248.4303, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "MANAGER_OF_EMPLOYEE,", "bbox": {"l": 154.39282, "t": 251.65533000000005, "r": 271.67828, "b": 260.43011, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 155.53102, "t": 262.309326171875, "r": 236.69878, "b": 272.42993, "coord_origin": "TOPLEFT"}, "confidence": 0.6180596351623535, "cells": [{"id": 18, "text": "ON_LEAVE_FLAG", "bbox": {"l": 155.53102, "t": 263.65515000000005, "r": 236.69878, "b": 272.42993, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 136.8, "t": 274.9990234375, "r": 157.71849060058594, "b": 284.42975, "coord_origin": "TOPLEFT"}, "confidence": 0.6689217686653137, "cells": [{"id": 19, "text": "FROM", "bbox": {"l": 136.8, "t": 275.65497000000005, "r": 157.55051, "b": 284.42975, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 167.92577, "t": 274.5404052734375, "r": 271.67828, "b": 284.42975, "coord_origin": "TOPLEFT"}, "confidence": 0.6523625254631042, "cells": [{"id": 20, "text": "HR_SCHEMA.EMPLOYEES ", "bbox": {"l": 167.92577, "t": 275.65497000000005, "r": 271.67828, "b": 284.42975, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 136.10264587402344, "t": 286.8880615234375, "r": 161.95062255859375, "b": 296.42957, "coord_origin": "TOPLEFT"}, "confidence": 0.6754139065742493, "cells": [{"id": 21, "text": "WHERE", "bbox": {"l": 136.8, "t": 287.65479, "r": 161.77747, "b": 296.42957, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 171.0566864013672, "t": 286.53363037109375, "r": 271.67828, "b": 297.5150146484375, "coord_origin": "TOPLEFT"}, "confidence": 0.6802994608879089, "cells": [{"id": 22, "text": "ON_LEAVE_FLAG = 'Y';", "bbox": {"l": 171.76845, "t": 287.65479, "r": 271.67828, "b": 296.42957, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 136.068359375, "t": 315.41168212890625, "r": 547.36621, "b": 337.69780999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.8731935620307922, "cells": [{"id": 23, "text": "3.", "bbox": {"l": 136.8, "t": 316.48502, "r": 145.04652, "b": 325.698, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Use the view to query the data and see who is on leave. The SQL statement that is used is ", "bbox": {"l": 147.79535, "t": 316.48502, "r": 547.36621, "b": 325.698, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "shown in Example 3-14:", "bbox": {"l": 151.20016, "t": 328.48483, "r": 257.75723, "b": 337.69780999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "caption", "bbox": {"l": 136.2685546875, "t": 349.93072509765625, "r": 354.4166564941406, "b": 359.5875549316406, "coord_origin": "TOPLEFT"}, "confidence": 0.7664288878440857, "cells": [{"id": 26, "text": "Example 3-14 SQL statement for employees on leave", "bbox": {"l": 136.8, "t": 350.5379899999999, "r": 353.97809, "b": 358.86301, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 136.8, "t": 367.63812, "r": 266.69827, "b": 460.41162, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 27, "text": "SELECT EMPLOYEE_ID,", "bbox": {"l": 136.8, "t": 367.63812, "r": 231.71878000000004, "b": 376.4129, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "LAST_NAME,", "bbox": {"l": 156.39209, "t": 379.63794, "r": 221.69901999999996, "b": 388.41272, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "JOB_DESCRIPTION,", "bbox": {"l": 154.94188, "t": 391.63776, "r": 251.69853, "b": 400.41254, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "DATE_OF_BIRTH,", "bbox": {"l": 155.31857, "t": 403.63757, "r": 241.73852999999997, "b": 412.41235, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "TAX_ID,", "bbox": {"l": 157.7877, "t": 415.63739, "r": 206.75902, "b": 424.41217, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "USER_ID,", "bbox": {"l": 157.23792, "t": 427.63721, "r": 211.73903, "b": 436.41199, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "MANAGER_OF_EMPLOYEE", "bbox": {"l": 154.5134, "t": 439.63702, "r": 266.69827, "b": 448.4118000000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "FROM", "bbox": {"l": 136.8, "t": 451.63684, "r": 157.35744, "b": 460.41162, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 167.63615, "t": 450.5314636230469, "r": 316.67755, "b": 460.8767395019531, "coord_origin": "TOPLEFT"}, "confidence": 0.6310456991195679, "cells": [{"id": 35, "text": "HR_SCHEMA.EMPLOYEES_ON_LEAVE;", "bbox": {"l": 167.63615, "t": 451.63684, "r": 316.67755, "b": 460.41162, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "list_item", "bbox": {"l": 135.88938903808594, "t": 474.4544677734375, "r": 547.25067, "b": 521.350830078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9467523097991943, "cells": [{"id": 36, "text": "4.", "bbox": {"l": 136.8, "t": 475.48706, "r": 145.07851, "b": 484.70004, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Start with the Human Resources person (VGLUCCHESS) and see what is the result of the ", "bbox": {"l": 147.83798, "t": 475.48706, "r": 547.25067, "b": 484.70004, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "previous query. He sees the two employees that are on leave and no masking is done over ", "bbox": {"l": 151.2002, "t": 487.54663, "r": 547.23877, "b": 496.75961, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "the DATE_OF_BIRTH and TAX_ID columns. The results of the query are shown in ", "bbox": {"l": 151.2002, "t": 499.54645, "r": 516.39642, "b": 508.75943, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Figure 3-22.", "bbox": {"l": 151.2002, "t": 511.54626, "r": 205.13356, "b": 520.7592500000001, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "caption", "bbox": {"l": 64.29961395263672, "t": 569.6649780273438, "r": 301.89312744140625, "b": 579.7119140625, "coord_origin": "TOPLEFT"}, "confidence": 0.881747305393219, "cells": [{"id": 41, "text": "Figure 3-22 Employees on leave - Human Resources user", "bbox": {"l": 64.800003, "t": 571.09799, "r": 300.797, "b": 579.423, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "list_item", "bbox": {"l": 136.30172729492188, "t": 595.9632568359375, "r": 546.50952, "b": 642.4163818359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9604976177215576, "cells": [{"id": 42, "text": "5.", "bbox": {"l": 136.8, "t": 597.04872, "r": 145.2104, "b": 606.26172, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Figure 3-23 shows what the Manager (TQSPENSER) gets when he runs the same query ", "bbox": {"l": 148.01385, "t": 597.04872, "r": 546.50952, "b": 606.26172, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "over the view. He sees only the employees that are on leave that are managed by him. In ", "bbox": {"l": 151.20016, "t": 609.04852, "r": 546.16187, "b": 618.26152, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "this example, it is one employee. The columns are masked, which confirms that RCAC is ", "bbox": {"l": 151.20016, "t": 621.04832, "r": 544.84515, "b": 630.2613200000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "applied to the view as well.", "bbox": {"l": 151.20016, "t": 633.04813, "r": 269.8038, "b": 642.26112, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "caption", "bbox": {"l": 64.38579559326172, "t": 683.8665771484375, "r": 313.5398254394531, "b": 693.6953735351562, "coord_origin": "TOPLEFT"}, "confidence": 0.9106412529945374, "cells": [{"id": 47, "text": "Figure 3-23 Employee on leave - Manager of Field Reps user", "bbox": {"l": 64.800003, "t": 684.6179999999999, "r": 312.7247, "b": 692.943001, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 49, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.1474609375, "t": 754.3988037109375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9037860631942749, "cells": [{"id": 0, "text": "34 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "34"}, {"label": "page_footer", "id": 1, "page_no": 49, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.26473999023438, "t": 754.7013549804688, "r": 334.42142, "b": 764.0106811523438, "coord_origin": "TOPLEFT"}, "confidence": 0.9487432837486267, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 2, "page_no": 49, "cluster": {"id": 2, "label": "text", "bbox": {"l": 258.85648, "t": 71.10697937011719, "r": 446.63561999999996, "b": 117.91847229003906, "coord_origin": "TOPLEFT"}, "confidence": 0.6826066970825195, "cells": [{"id": 2, "text": "TAX_ID,", "bbox": {"l": 295.95679, "t": 71.65808000000015, "r": 381.65659, "b": 80.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "USER_ID,", "bbox": {"l": 291.46075, "t": 83.65790000000004, "r": 386.6366, "b": 92.43268, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "MANAGER_OF_EMPLOYEE,", "bbox": {"l": 258.85648, "t": 95.65770999999995, "r": 446.63561999999996, "b": 104.4325, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "ON_LEAVE_FLAG )", "bbox": {"l": 269.03604, "t": 107.65752999999995, "r": 421.61609, "b": 116.43230999999992, "coord_origin": "TOPLEFT"}}]}, "text": "TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE, ON_LEAVE_FLAG )"}, {"label": "text", "id": 3, "page_no": 49, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.8447265625, "t": 118.94123840332031, "r": 151.74001, "b": 128.43213000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.6089476943016052, "cells": [{"id": 6, "text": "AS ", "bbox": {"l": 136.8, "t": 119.65734999999995, "r": 151.74001, "b": 128.43213000000003, "coord_origin": "TOPLEFT"}}]}, "text": "AS"}, {"label": "text", "id": 4, "page_no": 49, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.8, "t": 131.65716999999995, "r": 271.67828, "b": 260.43011, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 7, "text": "SELECT EMPLOYEE_ID,", "bbox": {"l": 136.8, "t": 131.65716999999995, "r": 231.71878000000004, "b": 140.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "FIRST_NAME ,", "bbox": {"l": 155.78375, "t": 143.65697999999998, "r": 231.71878000000004, "b": 152.43176000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "MIDDLE_INITIAL,", "bbox": {"l": 155.11975, "t": 155.65679999999998, "r": 246.71854, "b": 164.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "LAST_NAME ,", "bbox": {"l": 156.0726, "t": 167.65661999999998, "r": 226.73877000000002, "b": 176.43140000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "WORK_DEPARTMENT,", "bbox": {"l": 154.94188, "t": 179.65643, "r": 251.69853, "b": 188.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "PHONE_EXTENSION,", "bbox": {"l": 154.94188, "t": 191.65625, "r": 251.69853, "b": 200.43102999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "JOB_DESCRIPTION,", "bbox": {"l": 154.94188, "t": 203.65607, "r": 251.69853, "b": 212.43084999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "DATE_OF_BIRTH,", "bbox": {"l": 155.31857, "t": 215.65588000000002, "r": 241.73852999999997, "b": 224.43066, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "TAX_ID,", "bbox": {"l": 157.7877, "t": 227.65570000000002, "r": 206.75902, "b": 236.43048, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "USER_ID,", "bbox": {"l": 157.23792, "t": 239.65552000000002, "r": 211.73903, "b": 248.4303, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "MANAGER_OF_EMPLOYEE,", "bbox": {"l": 154.39282, "t": 251.65533000000005, "r": 271.67828, "b": 260.43011, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT EMPLOYEE_ID, FIRST_NAME , MIDDLE_INITIAL, LAST_NAME , WORK_DEPARTMENT, PHONE_EXTENSION, JOB_DESCRIPTION, DATE_OF_BIRTH, TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE,"}, {"label": "text", "id": 5, "page_no": 49, "cluster": {"id": 5, "label": "text", "bbox": {"l": 155.53102, "t": 262.309326171875, "r": 236.69878, "b": 272.42993, "coord_origin": "TOPLEFT"}, "confidence": 0.6180596351623535, "cells": [{"id": 18, "text": "ON_LEAVE_FLAG", "bbox": {"l": 155.53102, "t": 263.65515000000005, "r": 236.69878, "b": 272.42993, "coord_origin": "TOPLEFT"}}]}, "text": "ON_LEAVE_FLAG"}, {"label": "text", "id": 6, "page_no": 49, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.8, "t": 274.9990234375, "r": 157.71849060058594, "b": 284.42975, "coord_origin": "TOPLEFT"}, "confidence": 0.6689217686653137, "cells": [{"id": 19, "text": "FROM", "bbox": {"l": 136.8, "t": 275.65497000000005, "r": 157.55051, "b": 284.42975, "coord_origin": "TOPLEFT"}}]}, "text": "FROM"}, {"label": "text", "id": 7, "page_no": 49, "cluster": {"id": 7, "label": "text", "bbox": {"l": 167.92577, "t": 274.5404052734375, "r": 271.67828, "b": 284.42975, "coord_origin": "TOPLEFT"}, "confidence": 0.6523625254631042, "cells": [{"id": 20, "text": "HR_SCHEMA.EMPLOYEES ", "bbox": {"l": 167.92577, "t": 275.65497000000005, "r": 271.67828, "b": 284.42975, "coord_origin": "TOPLEFT"}}]}, "text": "HR_SCHEMA.EMPLOYEES"}, {"label": "text", "id": 8, "page_no": 49, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.10264587402344, "t": 286.8880615234375, "r": 161.95062255859375, "b": 296.42957, "coord_origin": "TOPLEFT"}, "confidence": 0.6754139065742493, "cells": [{"id": 21, "text": "WHERE", "bbox": {"l": 136.8, "t": 287.65479, "r": 161.77747, "b": 296.42957, "coord_origin": "TOPLEFT"}}]}, "text": "WHERE"}, {"label": "text", "id": 9, "page_no": 49, "cluster": {"id": 9, "label": "text", "bbox": {"l": 171.0566864013672, "t": 286.53363037109375, "r": 271.67828, "b": 297.5150146484375, "coord_origin": "TOPLEFT"}, "confidence": 0.6802994608879089, "cells": [{"id": 22, "text": "ON_LEAVE_FLAG = 'Y';", "bbox": {"l": 171.76845, "t": 287.65479, "r": 271.67828, "b": 296.42957, "coord_origin": "TOPLEFT"}}]}, "text": "ON_LEAVE_FLAG = 'Y';"}, {"label": "list_item", "id": 10, "page_no": 49, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 136.068359375, "t": 315.41168212890625, "r": 547.36621, "b": 337.69780999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.8731935620307922, "cells": [{"id": 23, "text": "3.", "bbox": {"l": 136.8, "t": 316.48502, "r": 145.04652, "b": 325.698, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Use the view to query the data and see who is on leave. The SQL statement that is used is ", "bbox": {"l": 147.79535, "t": 316.48502, "r": 547.36621, "b": 325.698, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "shown in Example 3-14:", "bbox": {"l": 151.20016, "t": 328.48483, "r": 257.75723, "b": 337.69780999999995, "coord_origin": "TOPLEFT"}}]}, "text": "3. Use the view to query the data and see who is on leave. The SQL statement that is used is shown in Example 3-14:"}, {"label": "caption", "id": 11, "page_no": 49, "cluster": {"id": 11, "label": "caption", "bbox": {"l": 136.2685546875, "t": 349.93072509765625, "r": 354.4166564941406, "b": 359.5875549316406, "coord_origin": "TOPLEFT"}, "confidence": 0.7664288878440857, "cells": [{"id": 26, "text": "Example 3-14 SQL statement for employees on leave", "bbox": {"l": 136.8, "t": 350.5379899999999, "r": 353.97809, "b": 358.86301, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-14 SQL statement for employees on leave"}, {"label": "text", "id": 12, "page_no": 49, "cluster": {"id": 12, "label": "text", "bbox": {"l": 136.8, "t": 367.63812, "r": 266.69827, "b": 460.41162, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 27, "text": "SELECT EMPLOYEE_ID,", "bbox": {"l": 136.8, "t": 367.63812, "r": 231.71878000000004, "b": 376.4129, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "LAST_NAME,", "bbox": {"l": 156.39209, "t": 379.63794, "r": 221.69901999999996, "b": 388.41272, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "JOB_DESCRIPTION,", "bbox": {"l": 154.94188, "t": 391.63776, "r": 251.69853, "b": 400.41254, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "DATE_OF_BIRTH,", "bbox": {"l": 155.31857, "t": 403.63757, "r": 241.73852999999997, "b": 412.41235, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "TAX_ID,", "bbox": {"l": 157.7877, "t": 415.63739, "r": 206.75902, "b": 424.41217, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "USER_ID,", "bbox": {"l": 157.23792, "t": 427.63721, "r": 211.73903, "b": 436.41199, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "MANAGER_OF_EMPLOYEE", "bbox": {"l": 154.5134, "t": 439.63702, "r": 266.69827, "b": 448.4118000000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "FROM", "bbox": {"l": 136.8, "t": 451.63684, "r": 157.35744, "b": 460.41162, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT EMPLOYEE_ID, LAST_NAME, JOB_DESCRIPTION, DATE_OF_BIRTH, TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE FROM"}, {"label": "text", "id": 13, "page_no": 49, "cluster": {"id": 13, "label": "text", "bbox": {"l": 167.63615, "t": 450.5314636230469, "r": 316.67755, "b": 460.8767395019531, "coord_origin": "TOPLEFT"}, "confidence": 0.6310456991195679, "cells": [{"id": 35, "text": "HR_SCHEMA.EMPLOYEES_ON_LEAVE;", "bbox": {"l": 167.63615, "t": 451.63684, "r": 316.67755, "b": 460.41162, "coord_origin": "TOPLEFT"}}]}, "text": "HR_SCHEMA.EMPLOYEES_ON_LEAVE;"}, {"label": "list_item", "id": 14, "page_no": 49, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 135.88938903808594, "t": 474.4544677734375, "r": 547.25067, "b": 521.350830078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9467523097991943, "cells": [{"id": 36, "text": "4.", "bbox": {"l": 136.8, "t": 475.48706, "r": 145.07851, "b": 484.70004, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Start with the Human Resources person (VGLUCCHESS) and see what is the result of the ", "bbox": {"l": 147.83798, "t": 475.48706, "r": 547.25067, "b": 484.70004, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "previous query. He sees the two employees that are on leave and no masking is done over ", "bbox": {"l": 151.2002, "t": 487.54663, "r": 547.23877, "b": 496.75961, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "the DATE_OF_BIRTH and TAX_ID columns. The results of the query are shown in ", "bbox": {"l": 151.2002, "t": 499.54645, "r": 516.39642, "b": 508.75943, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Figure 3-22.", "bbox": {"l": 151.2002, "t": 511.54626, "r": 205.13356, "b": 520.7592500000001, "coord_origin": "TOPLEFT"}}]}, "text": "4. Start with the Human Resources person (VGLUCCHESS) and see what is the result of the previous query. He sees the two employees that are on leave and no masking is done over the DATE_OF_BIRTH and TAX_ID columns. The results of the query are shown in Figure 3-22."}, {"label": "caption", "id": 15, "page_no": 49, "cluster": {"id": 15, "label": "caption", "bbox": {"l": 64.29961395263672, "t": 569.6649780273438, "r": 301.89312744140625, "b": 579.7119140625, "coord_origin": "TOPLEFT"}, "confidence": 0.881747305393219, "cells": [{"id": 41, "text": "Figure 3-22 Employees on leave - Human Resources user", "bbox": {"l": 64.800003, "t": 571.09799, "r": 300.797, "b": 579.423, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-22 Employees on leave - Human Resources user"}, {"label": "list_item", "id": 16, "page_no": 49, "cluster": {"id": 16, "label": "list_item", "bbox": {"l": 136.30172729492188, "t": 595.9632568359375, "r": 546.50952, "b": 642.4163818359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9604976177215576, "cells": [{"id": 42, "text": "5.", "bbox": {"l": 136.8, "t": 597.04872, "r": 145.2104, "b": 606.26172, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Figure 3-23 shows what the Manager (TQSPENSER) gets when he runs the same query ", "bbox": {"l": 148.01385, "t": 597.04872, "r": 546.50952, "b": 606.26172, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "over the view. He sees only the employees that are on leave that are managed by him. In ", "bbox": {"l": 151.20016, "t": 609.04852, "r": 546.16187, "b": 618.26152, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "this example, it is one employee. The columns are masked, which confirms that RCAC is ", "bbox": {"l": 151.20016, "t": 621.04832, "r": 544.84515, "b": 630.2613200000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "applied to the view as well.", "bbox": {"l": 151.20016, "t": 633.04813, "r": 269.8038, "b": 642.26112, "coord_origin": "TOPLEFT"}}]}, "text": "5. Figure 3-23 shows what the Manager (TQSPENSER) gets when he runs the same query over the view. He sees only the employees that are on leave that are managed by him. In this example, it is one employee. The columns are masked, which confirms that RCAC is applied to the view as well."}, {"label": "caption", "id": 17, "page_no": 49, "cluster": {"id": 17, "label": "caption", "bbox": {"l": 64.38579559326172, "t": 683.8665771484375, "r": 313.5398254394531, "b": 693.6953735351562, "coord_origin": "TOPLEFT"}, "confidence": 0.9106412529945374, "cells": [{"id": 47, "text": "Figure 3-23 Employee on leave - Manager of Field Reps user", "bbox": {"l": 64.800003, "t": 684.6179999999999, "r": 312.7247, "b": 692.943001, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-23 Employee on leave - Manager of Field Reps user"}], "body": [{"label": "text", "id": 2, "page_no": 49, "cluster": {"id": 2, "label": "text", "bbox": {"l": 258.85648, "t": 71.10697937011719, "r": 446.63561999999996, "b": 117.91847229003906, "coord_origin": "TOPLEFT"}, "confidence": 0.6826066970825195, "cells": [{"id": 2, "text": "TAX_ID,", "bbox": {"l": 295.95679, "t": 71.65808000000015, "r": 381.65659, "b": 80.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "USER_ID,", "bbox": {"l": 291.46075, "t": 83.65790000000004, "r": 386.6366, "b": 92.43268, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "MANAGER_OF_EMPLOYEE,", "bbox": {"l": 258.85648, "t": 95.65770999999995, "r": 446.63561999999996, "b": 104.4325, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "ON_LEAVE_FLAG )", "bbox": {"l": 269.03604, "t": 107.65752999999995, "r": 421.61609, "b": 116.43230999999992, "coord_origin": "TOPLEFT"}}]}, "text": "TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE, ON_LEAVE_FLAG )"}, {"label": "text", "id": 3, "page_no": 49, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.8447265625, "t": 118.94123840332031, "r": 151.74001, "b": 128.43213000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.6089476943016052, "cells": [{"id": 6, "text": "AS ", "bbox": {"l": 136.8, "t": 119.65734999999995, "r": 151.74001, "b": 128.43213000000003, "coord_origin": "TOPLEFT"}}]}, "text": "AS"}, {"label": "text", "id": 4, "page_no": 49, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.8, "t": 131.65716999999995, "r": 271.67828, "b": 260.43011, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 7, "text": "SELECT EMPLOYEE_ID,", "bbox": {"l": 136.8, "t": 131.65716999999995, "r": 231.71878000000004, "b": 140.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "FIRST_NAME ,", "bbox": {"l": 155.78375, "t": 143.65697999999998, "r": 231.71878000000004, "b": 152.43176000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "MIDDLE_INITIAL,", "bbox": {"l": 155.11975, "t": 155.65679999999998, "r": 246.71854, "b": 164.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "LAST_NAME ,", "bbox": {"l": 156.0726, "t": 167.65661999999998, "r": 226.73877000000002, "b": 176.43140000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "WORK_DEPARTMENT,", "bbox": {"l": 154.94188, "t": 179.65643, "r": 251.69853, "b": 188.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "PHONE_EXTENSION,", "bbox": {"l": 154.94188, "t": 191.65625, "r": 251.69853, "b": 200.43102999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "JOB_DESCRIPTION,", "bbox": {"l": 154.94188, "t": 203.65607, "r": 251.69853, "b": 212.43084999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "DATE_OF_BIRTH,", "bbox": {"l": 155.31857, "t": 215.65588000000002, "r": 241.73852999999997, "b": 224.43066, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "TAX_ID,", "bbox": {"l": 157.7877, "t": 227.65570000000002, "r": 206.75902, "b": 236.43048, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "USER_ID,", "bbox": {"l": 157.23792, "t": 239.65552000000002, "r": 211.73903, "b": 248.4303, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "MANAGER_OF_EMPLOYEE,", "bbox": {"l": 154.39282, "t": 251.65533000000005, "r": 271.67828, "b": 260.43011, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT EMPLOYEE_ID, FIRST_NAME , MIDDLE_INITIAL, LAST_NAME , WORK_DEPARTMENT, PHONE_EXTENSION, JOB_DESCRIPTION, DATE_OF_BIRTH, TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE,"}, {"label": "text", "id": 5, "page_no": 49, "cluster": {"id": 5, "label": "text", "bbox": {"l": 155.53102, "t": 262.309326171875, "r": 236.69878, "b": 272.42993, "coord_origin": "TOPLEFT"}, "confidence": 0.6180596351623535, "cells": [{"id": 18, "text": "ON_LEAVE_FLAG", "bbox": {"l": 155.53102, "t": 263.65515000000005, "r": 236.69878, "b": 272.42993, "coord_origin": "TOPLEFT"}}]}, "text": "ON_LEAVE_FLAG"}, {"label": "text", "id": 6, "page_no": 49, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.8, "t": 274.9990234375, "r": 157.71849060058594, "b": 284.42975, "coord_origin": "TOPLEFT"}, "confidence": 0.6689217686653137, "cells": [{"id": 19, "text": "FROM", "bbox": {"l": 136.8, "t": 275.65497000000005, "r": 157.55051, "b": 284.42975, "coord_origin": "TOPLEFT"}}]}, "text": "FROM"}, {"label": "text", "id": 7, "page_no": 49, "cluster": {"id": 7, "label": "text", "bbox": {"l": 167.92577, "t": 274.5404052734375, "r": 271.67828, "b": 284.42975, "coord_origin": "TOPLEFT"}, "confidence": 0.6523625254631042, "cells": [{"id": 20, "text": "HR_SCHEMA.EMPLOYEES ", "bbox": {"l": 167.92577, "t": 275.65497000000005, "r": 271.67828, "b": 284.42975, "coord_origin": "TOPLEFT"}}]}, "text": "HR_SCHEMA.EMPLOYEES"}, {"label": "text", "id": 8, "page_no": 49, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.10264587402344, "t": 286.8880615234375, "r": 161.95062255859375, "b": 296.42957, "coord_origin": "TOPLEFT"}, "confidence": 0.6754139065742493, "cells": [{"id": 21, "text": "WHERE", "bbox": {"l": 136.8, "t": 287.65479, "r": 161.77747, "b": 296.42957, "coord_origin": "TOPLEFT"}}]}, "text": "WHERE"}, {"label": "text", "id": 9, "page_no": 49, "cluster": {"id": 9, "label": "text", "bbox": {"l": 171.0566864013672, "t": 286.53363037109375, "r": 271.67828, "b": 297.5150146484375, "coord_origin": "TOPLEFT"}, "confidence": 0.6802994608879089, "cells": [{"id": 22, "text": "ON_LEAVE_FLAG = 'Y';", "bbox": {"l": 171.76845, "t": 287.65479, "r": 271.67828, "b": 296.42957, "coord_origin": "TOPLEFT"}}]}, "text": "ON_LEAVE_FLAG = 'Y';"}, {"label": "list_item", "id": 10, "page_no": 49, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 136.068359375, "t": 315.41168212890625, "r": 547.36621, "b": 337.69780999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.8731935620307922, "cells": [{"id": 23, "text": "3.", "bbox": {"l": 136.8, "t": 316.48502, "r": 145.04652, "b": 325.698, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Use the view to query the data and see who is on leave. The SQL statement that is used is ", "bbox": {"l": 147.79535, "t": 316.48502, "r": 547.36621, "b": 325.698, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "shown in Example 3-14:", "bbox": {"l": 151.20016, "t": 328.48483, "r": 257.75723, "b": 337.69780999999995, "coord_origin": "TOPLEFT"}}]}, "text": "3. Use the view to query the data and see who is on leave. The SQL statement that is used is shown in Example 3-14:"}, {"label": "caption", "id": 11, "page_no": 49, "cluster": {"id": 11, "label": "caption", "bbox": {"l": 136.2685546875, "t": 349.93072509765625, "r": 354.4166564941406, "b": 359.5875549316406, "coord_origin": "TOPLEFT"}, "confidence": 0.7664288878440857, "cells": [{"id": 26, "text": "Example 3-14 SQL statement for employees on leave", "bbox": {"l": 136.8, "t": 350.5379899999999, "r": 353.97809, "b": 358.86301, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-14 SQL statement for employees on leave"}, {"label": "text", "id": 12, "page_no": 49, "cluster": {"id": 12, "label": "text", "bbox": {"l": 136.8, "t": 367.63812, "r": 266.69827, "b": 460.41162, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 27, "text": "SELECT EMPLOYEE_ID,", "bbox": {"l": 136.8, "t": 367.63812, "r": 231.71878000000004, "b": 376.4129, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "LAST_NAME,", "bbox": {"l": 156.39209, "t": 379.63794, "r": 221.69901999999996, "b": 388.41272, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "JOB_DESCRIPTION,", "bbox": {"l": 154.94188, "t": 391.63776, "r": 251.69853, "b": 400.41254, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "DATE_OF_BIRTH,", "bbox": {"l": 155.31857, "t": 403.63757, "r": 241.73852999999997, "b": 412.41235, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "TAX_ID,", "bbox": {"l": 157.7877, "t": 415.63739, "r": 206.75902, "b": 424.41217, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "USER_ID,", "bbox": {"l": 157.23792, "t": 427.63721, "r": 211.73903, "b": 436.41199, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "MANAGER_OF_EMPLOYEE", "bbox": {"l": 154.5134, "t": 439.63702, "r": 266.69827, "b": 448.4118000000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "FROM", "bbox": {"l": 136.8, "t": 451.63684, "r": 157.35744, "b": 460.41162, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT EMPLOYEE_ID, LAST_NAME, JOB_DESCRIPTION, DATE_OF_BIRTH, TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE FROM"}, {"label": "text", "id": 13, "page_no": 49, "cluster": {"id": 13, "label": "text", "bbox": {"l": 167.63615, "t": 450.5314636230469, "r": 316.67755, "b": 460.8767395019531, "coord_origin": "TOPLEFT"}, "confidence": 0.6310456991195679, "cells": [{"id": 35, "text": "HR_SCHEMA.EMPLOYEES_ON_LEAVE;", "bbox": {"l": 167.63615, "t": 451.63684, "r": 316.67755, "b": 460.41162, "coord_origin": "TOPLEFT"}}]}, "text": "HR_SCHEMA.EMPLOYEES_ON_LEAVE;"}, {"label": "list_item", "id": 14, "page_no": 49, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 135.88938903808594, "t": 474.4544677734375, "r": 547.25067, "b": 521.350830078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9467523097991943, "cells": [{"id": 36, "text": "4.", "bbox": {"l": 136.8, "t": 475.48706, "r": 145.07851, "b": 484.70004, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Start with the Human Resources person (VGLUCCHESS) and see what is the result of the ", "bbox": {"l": 147.83798, "t": 475.48706, "r": 547.25067, "b": 484.70004, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "previous query. He sees the two employees that are on leave and no masking is done over ", "bbox": {"l": 151.2002, "t": 487.54663, "r": 547.23877, "b": 496.75961, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "the DATE_OF_BIRTH and TAX_ID columns. The results of the query are shown in ", "bbox": {"l": 151.2002, "t": 499.54645, "r": 516.39642, "b": 508.75943, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Figure 3-22.", "bbox": {"l": 151.2002, "t": 511.54626, "r": 205.13356, "b": 520.7592500000001, "coord_origin": "TOPLEFT"}}]}, "text": "4. Start with the Human Resources person (VGLUCCHESS) and see what is the result of the previous query. He sees the two employees that are on leave and no masking is done over the DATE_OF_BIRTH and TAX_ID columns. The results of the query are shown in Figure 3-22."}, {"label": "caption", "id": 15, "page_no": 49, "cluster": {"id": 15, "label": "caption", "bbox": {"l": 64.29961395263672, "t": 569.6649780273438, "r": 301.89312744140625, "b": 579.7119140625, "coord_origin": "TOPLEFT"}, "confidence": 0.881747305393219, "cells": [{"id": 41, "text": "Figure 3-22 Employees on leave - Human Resources user", "bbox": {"l": 64.800003, "t": 571.09799, "r": 300.797, "b": 579.423, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-22 Employees on leave - Human Resources user"}, {"label": "list_item", "id": 16, "page_no": 49, "cluster": {"id": 16, "label": "list_item", "bbox": {"l": 136.30172729492188, "t": 595.9632568359375, "r": 546.50952, "b": 642.4163818359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9604976177215576, "cells": [{"id": 42, "text": "5.", "bbox": {"l": 136.8, "t": 597.04872, "r": 145.2104, "b": 606.26172, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Figure 3-23 shows what the Manager (TQSPENSER) gets when he runs the same query ", "bbox": {"l": 148.01385, "t": 597.04872, "r": 546.50952, "b": 606.26172, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "over the view. He sees only the employees that are on leave that are managed by him. In ", "bbox": {"l": 151.20016, "t": 609.04852, "r": 546.16187, "b": 618.26152, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "this example, it is one employee. The columns are masked, which confirms that RCAC is ", "bbox": {"l": 151.20016, "t": 621.04832, "r": 544.84515, "b": 630.2613200000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "applied to the view as well.", "bbox": {"l": 151.20016, "t": 633.04813, "r": 269.8038, "b": 642.26112, "coord_origin": "TOPLEFT"}}]}, "text": "5. Figure 3-23 shows what the Manager (TQSPENSER) gets when he runs the same query over the view. He sees only the employees that are on leave that are managed by him. In this example, it is one employee. The columns are masked, which confirms that RCAC is applied to the view as well."}, {"label": "caption", "id": 17, "page_no": 49, "cluster": {"id": 17, "label": "caption", "bbox": {"l": 64.38579559326172, "t": 683.8665771484375, "r": 313.5398254394531, "b": 693.6953735351562, "coord_origin": "TOPLEFT"}, "confidence": 0.9106412529945374, "cells": [{"id": 47, "text": "Figure 3-23 Employee on leave - Manager of Field Reps user", "bbox": {"l": 64.800003, "t": 684.6179999999999, "r": 312.7247, "b": 692.943001, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-23 Employee on leave - Manager of Field Reps user"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 49, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.1474609375, "t": 754.3988037109375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9037860631942749, "cells": [{"id": 0, "text": "34 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "34"}, {"label": "page_footer", "id": 1, "page_no": 49, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.26473999023438, "t": 754.7013549804688, "r": 334.42142, "b": 764.0106811523438, "coord_origin": "TOPLEFT"}, "confidence": 0.9487432837486267, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 50, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "35", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "6.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.19994, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 3-24 shows what the employee (DSSMITH) gets when he runs the same query ", "bbox": {"l": 148.00006, "t": 71.50903000000005, "r": 533.13684, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "over the view. The employee gets an empty set or he gets only himself if he is on leave.", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 536.18866, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": ".", "bbox": {"l": 64.799744, "t": 98.50860999999998, "r": 67.568626, "b": 107.72162000000003, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Figure 3-24 Employees on leave - employee user", "bbox": {"l": 64.800003, "t": 156.37805000000003, "r": 264.79526, "b": 164.70299999999997, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 344.6600646972656, "t": 754.7468872070312, "r": 523.60162, "b": 764.0894775390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9453045725822449, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.7924194335938, "t": 754.3042602539062, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.898695707321167, "cells": [{"id": 1, "text": "35", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 136.05897521972656, "t": 70.66057586669922, "r": 536.18866, "b": 92.95333862304688, "coord_origin": "TOPLEFT"}, "confidence": 0.8970366716384888, "cells": [{"id": 2, "text": "6.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.19994, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 3-24 shows what the employee (DSSMITH) gets when he runs the same query ", "bbox": {"l": 148.00006, "t": 71.50903000000005, "r": 533.13684, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "over the view. The employee gets an empty set or he gets only himself if he is on leave.", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 536.18866, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 64.799744, "t": 98.50860999999998, "r": 67.568626, "b": 107.72162000000003, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 5, "text": ".", "bbox": {"l": 64.799744, "t": 98.50860999999998, "r": 67.568626, "b": 107.72162000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "caption", "bbox": {"l": 64.34432983398438, "t": 155.6955108642578, "r": 265.8516540527344, "b": 164.99256896972656, "coord_origin": "TOPLEFT"}, "confidence": 0.8921710252761841, "cells": [{"id": 6, "text": "Figure 3-24 Employees on leave - employee user", "bbox": {"l": 64.800003, "t": 156.37805000000003, "r": 264.79526, "b": 164.70299999999997, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 50, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.6600646972656, "t": 754.7468872070312, "r": 523.60162, "b": 764.0894775390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9453045725822449, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 50, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.7924194335938, "t": 754.3042602539062, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.898695707321167, "cells": [{"id": 1, "text": "35", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "35"}, {"label": "list_item", "id": 2, "page_no": 50, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.05897521972656, "t": 70.66057586669922, "r": 536.18866, "b": 92.95333862304688, "coord_origin": "TOPLEFT"}, "confidence": 0.8970366716384888, "cells": [{"id": 2, "text": "6.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.19994, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 3-24 shows what the employee (DSSMITH) gets when he runs the same query ", "bbox": {"l": 148.00006, "t": 71.50903000000005, "r": 533.13684, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "over the view. The employee gets an empty set or he gets only himself if he is on leave.", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 536.18866, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "6. Figure 3-24 shows what the employee (DSSMITH) gets when he runs the same query over the view. The employee gets an empty set or he gets only himself if he is on leave."}, {"label": "text", "id": 3, "page_no": 50, "cluster": {"id": 3, "label": "text", "bbox": {"l": 64.799744, "t": 98.50860999999998, "r": 67.568626, "b": 107.72162000000003, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 5, "text": ".", "bbox": {"l": 64.799744, "t": 98.50860999999998, "r": 67.568626, "b": 107.72162000000003, "coord_origin": "TOPLEFT"}}]}, "text": "."}, {"label": "caption", "id": 4, "page_no": 50, "cluster": {"id": 4, "label": "caption", "bbox": {"l": 64.34432983398438, "t": 155.6955108642578, "r": 265.8516540527344, "b": 164.99256896972656, "coord_origin": "TOPLEFT"}, "confidence": 0.8921710252761841, "cells": [{"id": 6, "text": "Figure 3-24 Employees on leave - employee user", "bbox": {"l": 64.800003, "t": 156.37805000000003, "r": 264.79526, "b": 164.70299999999997, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-24 Employees on leave - employee user"}], "body": [{"label": "list_item", "id": 2, "page_no": 50, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.05897521972656, "t": 70.66057586669922, "r": 536.18866, "b": 92.95333862304688, "coord_origin": "TOPLEFT"}, "confidence": 0.8970366716384888, "cells": [{"id": 2, "text": "6.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.19994, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 3-24 shows what the employee (DSSMITH) gets when he runs the same query ", "bbox": {"l": 148.00006, "t": 71.50903000000005, "r": 533.13684, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "over the view. The employee gets an empty set or he gets only himself if he is on leave.", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 536.18866, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "6. Figure 3-24 shows what the employee (DSSMITH) gets when he runs the same query over the view. The employee gets an empty set or he gets only himself if he is on leave."}, {"label": "text", "id": 3, "page_no": 50, "cluster": {"id": 3, "label": "text", "bbox": {"l": 64.799744, "t": 98.50860999999998, "r": 67.568626, "b": 107.72162000000003, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 5, "text": ".", "bbox": {"l": 64.799744, "t": 98.50860999999998, "r": 67.568626, "b": 107.72162000000003, "coord_origin": "TOPLEFT"}}]}, "text": "."}, {"label": "caption", "id": 4, "page_no": 50, "cluster": {"id": 4, "label": "caption", "bbox": {"l": 64.34432983398438, "t": 155.6955108642578, "r": 265.8516540527344, "b": 164.99256896972656, "coord_origin": "TOPLEFT"}, "confidence": 0.8921710252761841, "cells": [{"id": 6, "text": "Figure 3-24 Employees on leave - employee user", "bbox": {"l": 64.800003, "t": 156.37805000000003, "r": 264.79526, "b": 164.70299999999997, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-24 Employees on leave - employee user"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 50, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.6600646972656, "t": 754.7468872070312, "r": 523.60162, "b": 764.0894775390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9453045725822449, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 50, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.7924194335938, "t": 754.3042602539062, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.898695707321167, "cells": [{"id": 1, "text": "35", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "35"}]}}, {"page_no": 51, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "36 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.35157775878906, "t": 754.292236328125, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9079517722129822, "cells": [{"id": 0, "text": "36 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.37352752685547, "t": 754.510986328125, "r": 334.5318603515625, "b": 764.0523681640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9429895877838135, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 51, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.35157775878906, "t": 754.292236328125, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9079517722129822, "cells": [{"id": 0, "text": "36 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "36"}, {"label": "page_footer", "id": 1, "page_no": 51, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.37352752685547, "t": 754.510986328125, "r": 334.5318603515625, "b": 764.0523681640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9429895877838135, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}], "body": [], "headers": [{"label": "page_footer", "id": 0, "page_no": 51, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.35157775878906, "t": 754.292236328125, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9079517722129822, "cells": [{"id": 0, "text": "36 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "36"}, {"label": "page_footer", "id": 1, "page_no": 51, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.37352752685547, "t": 754.510986328125, "r": 334.5318603515625, "b": 764.0523681640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9429895877838135, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 52, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "37", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Chapter 4.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Implementing Row and Column ", "bbox": {"l": 136.8, "t": 254.88635, "r": 532.03375, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Access Control: Banking ", "bbox": {"l": 136.8, "t": 285.84671, "r": 452.48553, "b": 309.8782, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "example", "bbox": {"l": 136.8, "t": 316.8668200000001, "r": 240.41341999999997, "b": 340.89832, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "This chapter illustrates the Row and Column Access Control (RCAC) concepts using a ", "bbox": {"l": 136.8, "t": 379.72873, "r": 520.66241, "b": 388.94171000000006, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "banking example. Appendix A, \u201cDatabase definitions for the RCAC banking example\u201d on ", "bbox": {"l": 136.80002, "t": 391.72855, "r": 527.6723, "b": 400.94153, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "page 121 provides a script that you can use to create all the database definitions or DDLs to ", "bbox": {"l": 136.80002, "t": 403.72836, "r": 546.15009, "b": 412.94135, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "re-create this RCAC example.", "bbox": {"l": 136.80002, "t": 415.72818, "r": 268.71228, "b": 424.94116, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "The following topics are covered in this chapter:", "bbox": {"l": 136.80002, "t": 437.68799, "r": 347.41214, "b": 446.90097, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 454.87695, "r": 141.78001, "b": 463.65173, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Business requirements for the RCAC banking scenario", "bbox": {"l": 151.20018, "t": 454.72757, "r": 392.97119, "b": 463.94055, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 466.87677, "r": 141.78001, "b": 475.65155, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Description of the users roles and responsibilities", "bbox": {"l": 151.20018, "t": 466.72739, "r": 368.54633, "b": 475.94037, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 478.87659, "r": 141.78001, "b": 487.65137, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Implementation of RCAC", "bbox": {"l": 151.20018, "t": 478.7272, "r": 261.45441, "b": 487.94019, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "4", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.681270599365234, "t": 754.6544799804688, "r": 257.24335, "b": 764.1611938476562, "coord_origin": "TOPLEFT"}, "confidence": 0.9473534226417542, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.5507202148438, "t": 754.1658325195312, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9108303189277649, "cells": [{"id": 1, "text": "37", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 4.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "section_header", "bbox": {"l": 135.96546936035156, "t": 253.45413208007812, "r": 532.03375, "b": 340.89832, "coord_origin": "TOPLEFT"}, "confidence": 0.8815584778785706, "cells": [{"id": 3, "text": "Implementing Row and Column ", "bbox": {"l": 136.8, "t": 254.88635, "r": 532.03375, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Access Control: Banking ", "bbox": {"l": 136.8, "t": 285.84671, "r": 452.48553, "b": 309.8782, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "example", "bbox": {"l": 136.8, "t": 316.8668200000001, "r": 240.41341999999997, "b": 340.89832, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.8340301513672, "t": 378.66455078125, "r": 546.15009, "b": 424.94116, "coord_origin": "TOPLEFT"}, "confidence": 0.9846907258033752, "cells": [{"id": 6, "text": "This chapter illustrates the Row and Column Access Control (RCAC) concepts using a ", "bbox": {"l": 136.8, "t": 379.72873, "r": 520.66241, "b": 388.94171000000006, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "banking example. Appendix A, \u201cDatabase definitions for the RCAC banking example\u201d on ", "bbox": {"l": 136.80002, "t": 391.72855, "r": 527.6723, "b": 400.94153, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "page 121 provides a script that you can use to create all the database definitions or DDLs to ", "bbox": {"l": 136.80002, "t": 403.72836, "r": 546.15009, "b": 412.94135, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "re-create this RCAC example.", "bbox": {"l": 136.80002, "t": 415.72818, "r": 268.71228, "b": 424.94116, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.71417236328125, "t": 436.7104187011719, "r": 347.41214, "b": 447.06390380859375, "coord_origin": "TOPLEFT"}, "confidence": 0.922663152217865, "cells": [{"id": 10, "text": "The following topics are covered in this chapter:", "bbox": {"l": 136.80002, "t": 437.68799, "r": 347.41214, "b": 446.90097, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.7564697265625, "t": 453.9541320800781, "r": 392.97119, "b": 464.2275695800781, "coord_origin": "TOPLEFT"}, "confidence": 0.9471576809883118, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 454.87695, "r": 141.78001, "b": 463.65173, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Business requirements for the RCAC banking scenario", "bbox": {"l": 151.20018, "t": 454.72757, "r": 392.97119, "b": 463.94055, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.56719970703125, "t": 465.5244445800781, "r": 368.54633, "b": 476.0690612792969, "coord_origin": "TOPLEFT"}, "confidence": 0.9392989873886108, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 466.87677, "r": 141.78001, "b": 475.65155, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Description of the users roles and responsibilities", "bbox": {"l": 151.20018, "t": 466.72739, "r": 368.54633, "b": 475.94037, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.7265167236328, "t": 478.0903625488281, "r": 261.45441, "b": 488.0649719238281, "coord_origin": "TOPLEFT"}, "confidence": 0.9472163915634155, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 478.87659, "r": 141.78001, "b": 487.65137, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Implementation of RCAC", "bbox": {"l": 151.20018, "t": 478.7272, "r": 261.45441, "b": 487.94019, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 500.39999, "t": 92.38893127441406, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.7300243973731995, "cells": [{"id": 17, "text": "4", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "picture", "bbox": {"l": 32.17905807495117, "t": 70.60472106933594, "r": 238.82225036621094, "b": 238.14642333984375, "coord_origin": "TOPLEFT"}, "confidence": 0.7240587472915649, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 52, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.681270599365234, "t": 754.6544799804688, "r": 257.24335, "b": 764.1611938476562, "coord_origin": "TOPLEFT"}, "confidence": 0.9473534226417542, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 52, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.5507202148438, "t": 754.1658325195312, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9108303189277649, "cells": [{"id": 1, "text": "37", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "37"}, {"label": "text", "id": 2, "page_no": 52, "cluster": {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 4.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4."}, {"label": "section_header", "id": 3, "page_no": 52, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 135.96546936035156, "t": 253.45413208007812, "r": 532.03375, "b": 340.89832, "coord_origin": "TOPLEFT"}, "confidence": 0.8815584778785706, "cells": [{"id": 3, "text": "Implementing Row and Column ", "bbox": {"l": 136.8, "t": 254.88635, "r": 532.03375, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Access Control: Banking ", "bbox": {"l": 136.8, "t": 285.84671, "r": 452.48553, "b": 309.8782, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "example", "bbox": {"l": 136.8, "t": 316.8668200000001, "r": 240.41341999999997, "b": 340.89832, "coord_origin": "TOPLEFT"}}]}, "text": "Implementing Row and Column Access Control: Banking example"}, {"label": "text", "id": 4, "page_no": 52, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.8340301513672, "t": 378.66455078125, "r": 546.15009, "b": 424.94116, "coord_origin": "TOPLEFT"}, "confidence": 0.9846907258033752, "cells": [{"id": 6, "text": "This chapter illustrates the Row and Column Access Control (RCAC) concepts using a ", "bbox": {"l": 136.8, "t": 379.72873, "r": 520.66241, "b": 388.94171000000006, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "banking example. Appendix A, \u201cDatabase definitions for the RCAC banking example\u201d on ", "bbox": {"l": 136.80002, "t": 391.72855, "r": 527.6723, "b": 400.94153, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "page 121 provides a script that you can use to create all the database definitions or DDLs to ", "bbox": {"l": 136.80002, "t": 403.72836, "r": 546.15009, "b": 412.94135, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "re-create this RCAC example.", "bbox": {"l": 136.80002, "t": 415.72818, "r": 268.71228, "b": 424.94116, "coord_origin": "TOPLEFT"}}]}, "text": "This chapter illustrates the Row and Column Access Control (RCAC) concepts using a banking example. Appendix A, \u201cDatabase definitions for the RCAC banking example\u201d on page 121 provides a script that you can use to create all the database definitions or DDLs to re-create this RCAC example."}, {"label": "text", "id": 5, "page_no": 52, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.71417236328125, "t": 436.7104187011719, "r": 347.41214, "b": 447.06390380859375, "coord_origin": "TOPLEFT"}, "confidence": 0.922663152217865, "cells": [{"id": 10, "text": "The following topics are covered in this chapter:", "bbox": {"l": 136.80002, "t": 437.68799, "r": 347.41214, "b": 446.90097, "coord_origin": "TOPLEFT"}}]}, "text": "The following topics are covered in this chapter:"}, {"label": "list_item", "id": 6, "page_no": 52, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.7564697265625, "t": 453.9541320800781, "r": 392.97119, "b": 464.2275695800781, "coord_origin": "TOPLEFT"}, "confidence": 0.9471576809883118, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 454.87695, "r": 141.78001, "b": 463.65173, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Business requirements for the RCAC banking scenario", "bbox": {"l": 151.20018, "t": 454.72757, "r": 392.97119, "b": 463.94055, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Business requirements for the RCAC banking scenario"}, {"label": "list_item", "id": 7, "page_no": 52, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.56719970703125, "t": 465.5244445800781, "r": 368.54633, "b": 476.0690612792969, "coord_origin": "TOPLEFT"}, "confidence": 0.9392989873886108, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 466.87677, "r": 141.78001, "b": 475.65155, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Description of the users roles and responsibilities", "bbox": {"l": 151.20018, "t": 466.72739, "r": 368.54633, "b": 475.94037, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Description of the users roles and responsibilities"}, {"label": "list_item", "id": 8, "page_no": 52, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.7265167236328, "t": 478.0903625488281, "r": 261.45441, "b": 488.0649719238281, "coord_origin": "TOPLEFT"}, "confidence": 0.9472163915634155, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 478.87659, "r": 141.78001, "b": 487.65137, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Implementation of RCAC", "bbox": {"l": 151.20018, "t": 478.7272, "r": 261.45441, "b": 487.94019, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Implementation of RCAC"}, {"label": "text", "id": 9, "page_no": 52, "cluster": {"id": 9, "label": "text", "bbox": {"l": 500.39999, "t": 92.38893127441406, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.7300243973731995, "cells": [{"id": 17, "text": "4", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, "text": "4"}, {"label": "picture", "id": 10, "page_no": 52, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 32.17905807495117, "t": 70.60472106933594, "r": 238.82225036621094, "b": 238.14642333984375, "coord_origin": "TOPLEFT"}, "confidence": 0.7240587472915649, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 52, "cluster": {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 4.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4."}, {"label": "section_header", "id": 3, "page_no": 52, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 135.96546936035156, "t": 253.45413208007812, "r": 532.03375, "b": 340.89832, "coord_origin": "TOPLEFT"}, "confidence": 0.8815584778785706, "cells": [{"id": 3, "text": "Implementing Row and Column ", "bbox": {"l": 136.8, "t": 254.88635, "r": 532.03375, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Access Control: Banking ", "bbox": {"l": 136.8, "t": 285.84671, "r": 452.48553, "b": 309.8782, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "example", "bbox": {"l": 136.8, "t": 316.8668200000001, "r": 240.41341999999997, "b": 340.89832, "coord_origin": "TOPLEFT"}}]}, "text": "Implementing Row and Column Access Control: Banking example"}, {"label": "text", "id": 4, "page_no": 52, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.8340301513672, "t": 378.66455078125, "r": 546.15009, "b": 424.94116, "coord_origin": "TOPLEFT"}, "confidence": 0.9846907258033752, "cells": [{"id": 6, "text": "This chapter illustrates the Row and Column Access Control (RCAC) concepts using a ", "bbox": {"l": 136.8, "t": 379.72873, "r": 520.66241, "b": 388.94171000000006, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "banking example. Appendix A, \u201cDatabase definitions for the RCAC banking example\u201d on ", "bbox": {"l": 136.80002, "t": 391.72855, "r": 527.6723, "b": 400.94153, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "page 121 provides a script that you can use to create all the database definitions or DDLs to ", "bbox": {"l": 136.80002, "t": 403.72836, "r": 546.15009, "b": 412.94135, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "re-create this RCAC example.", "bbox": {"l": 136.80002, "t": 415.72818, "r": 268.71228, "b": 424.94116, "coord_origin": "TOPLEFT"}}]}, "text": "This chapter illustrates the Row and Column Access Control (RCAC) concepts using a banking example. Appendix A, \u201cDatabase definitions for the RCAC banking example\u201d on page 121 provides a script that you can use to create all the database definitions or DDLs to re-create this RCAC example."}, {"label": "text", "id": 5, "page_no": 52, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.71417236328125, "t": 436.7104187011719, "r": 347.41214, "b": 447.06390380859375, "coord_origin": "TOPLEFT"}, "confidence": 0.922663152217865, "cells": [{"id": 10, "text": "The following topics are covered in this chapter:", "bbox": {"l": 136.80002, "t": 437.68799, "r": 347.41214, "b": 446.90097, "coord_origin": "TOPLEFT"}}]}, "text": "The following topics are covered in this chapter:"}, {"label": "list_item", "id": 6, "page_no": 52, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.7564697265625, "t": 453.9541320800781, "r": 392.97119, "b": 464.2275695800781, "coord_origin": "TOPLEFT"}, "confidence": 0.9471576809883118, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 454.87695, "r": 141.78001, "b": 463.65173, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Business requirements for the RCAC banking scenario", "bbox": {"l": 151.20018, "t": 454.72757, "r": 392.97119, "b": 463.94055, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Business requirements for the RCAC banking scenario"}, {"label": "list_item", "id": 7, "page_no": 52, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.56719970703125, "t": 465.5244445800781, "r": 368.54633, "b": 476.0690612792969, "coord_origin": "TOPLEFT"}, "confidence": 0.9392989873886108, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 466.87677, "r": 141.78001, "b": 475.65155, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Description of the users roles and responsibilities", "bbox": {"l": 151.20018, "t": 466.72739, "r": 368.54633, "b": 475.94037, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Description of the users roles and responsibilities"}, {"label": "list_item", "id": 8, "page_no": 52, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.7265167236328, "t": 478.0903625488281, "r": 261.45441, "b": 488.0649719238281, "coord_origin": "TOPLEFT"}, "confidence": 0.9472163915634155, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 478.87659, "r": 141.78001, "b": 487.65137, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Implementation of RCAC", "bbox": {"l": 151.20018, "t": 478.7272, "r": 261.45441, "b": 487.94019, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Implementation of RCAC"}, {"label": "text", "id": 9, "page_no": 52, "cluster": {"id": 9, "label": "text", "bbox": {"l": 500.39999, "t": 92.38893127441406, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.7300243973731995, "cells": [{"id": 17, "text": "4", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, "text": "4"}, {"label": "picture", "id": 10, "page_no": 52, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 32.17905807495117, "t": 70.60472106933594, "r": 238.82225036621094, "b": 238.14642333984375, "coord_origin": "TOPLEFT"}, "confidence": 0.7240587472915649, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 52, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.681270599365234, "t": 754.6544799804688, "r": 257.24335, "b": 764.1611938476562, "coord_origin": "TOPLEFT"}, "confidence": 0.9473534226417542, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 52, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.5507202148438, "t": 754.1658325195312, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9108303189277649, "cells": [{"id": 1, "text": "37", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "37"}]}}, {"page_no": 53, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "38 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "4.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.199661, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Business requirements for the RCAC banking scenario", "bbox": {"l": 91.679573, "t": 74.34069999999997, "r": 512.55139, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "As part of a new internet banking project, the ", "bbox": {"l": 136.8, "t": 106.6087, "r": 338.47913, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Bank", "bbox": {"l": 338.34, "t": 106.08496000000002, "r": 360.88632, "b": 116.14269999999988, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": " decides to raise the level of data access ", "bbox": {"l": 360.95999, "t": 106.6087, "r": 543.10248, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "control on the following three tables that are involved in the new customer-facing application:", "bbox": {"l": 136.80023, "t": 118.60852, "r": 543.90033, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "GLYPH", "bbox": {"l": 136.80023, "t": 135.79749000000004, "r": 141.78023, "b": 144.57227, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CUSTOMERS", "bbox": {"l": 151.20039, "t": 135.64806999999996, "r": 214.60674, "b": 144.86108000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "GLYPH", "bbox": {"l": 136.80023, "t": 147.79729999999995, "r": 141.78023, "b": 156.57208000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ACCOUNTS", "bbox": {"l": 151.20039, "t": 147.64788999999996, "r": 206.64072, "b": 156.86090000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "GLYPH", "bbox": {"l": 136.80023, "t": 159.79711999999995, "r": 141.78023, "b": 168.57190000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "TRANSACTIONS", "bbox": {"l": 151.20039, "t": 159.64770999999996, "r": 229.18224, "b": 168.86072000000001, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "RCAC will be used to restrict access to the rows in these three tables by using permissions, ", "bbox": {"l": 136.80023, "t": 181.60748, "r": 543.45526, "b": 190.82050000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "and to restrict column values by using masks. The default position is that no user can access ", "bbox": {"l": 136.80023, "t": 193.6073, "r": 547.2746, "b": 202.82030999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "the rows in the tables. From there, specific bank employees are allowed access only to the ", "bbox": {"l": 136.80023, "t": 205.60712, "r": 537.76495, "b": 214.82012999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "rows for their job responsibilities. In addition, columns containing personal or sensitive data ", "bbox": {"l": 136.80023, "t": 217.60693000000003, "r": 540.32367, "b": 226.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "are masked appropriately. Bank customers are allowed access to only their rows and column ", "bbox": {"l": 136.80023, "t": 229.60675000000003, "r": 547.24182, "b": 238.81975999999997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "values.", "bbox": {"l": 136.80023, "t": 241.60657000000003, "r": 167.82861, "b": 250.81957999999997, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "In this example, it is assumed that the Bank employees have access to the tables when ", "bbox": {"l": 136.80023, "t": 263.62616, "r": 523.98511, "b": 272.83916999999997, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "working on the premises only. Employee access to data is provided by programs and tools ", "bbox": {"l": 136.80023, "t": 275.62598, "r": 536.96021, "b": 284.83899, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "using standard DB2 interfaces, such as embedded SQL, ODBC, JDBC, and CLI. The ", "bbox": {"l": 136.80025, "t": 287.62582000000003, "r": 514.68756, "b": 296.83881, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "database connection authentication for these interfaces uses the employee\u2019s personal and ", "bbox": {"l": 136.80025, "t": 299.62564, "r": 537.64044, "b": 308.83862, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "unique IBM i user profile. Operating in their professional role, employees do not have access ", "bbox": {"l": 136.80026, "t": 311.62546, "r": 546.85059, "b": 320.83844, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "to bank data through the Internet.", "bbox": {"l": 136.80026, "t": 323.62527, "r": 284.8855, "b": 332.83826, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Bank customers have access to their accounts and transactions by using a new web ", "bbox": {"l": 136.80026, "t": 345.64483999999993, "r": 511.27428999999995, "b": 354.85782, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "application. Each customer has unique credentials for logging in to the application. The ", "bbox": {"l": 136.80026, "t": 357.64465, "r": 523.22845, "b": 366.85764, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "authentication of the customer is handled by the web server. After the customer is ", "bbox": {"l": 136.80026, "t": 369.64447, "r": 500.01061999999996, "b": 378.85745, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "authenticated, the web server establishes a connection to DB2 for data access. This ", "bbox": {"l": 136.80026, "t": 381.64429, "r": 510.52930000000003, "b": 390.8572700000001, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "connection uses a common IBM i user profile that is known as WEBUSER. This user profile is ", "bbox": {"l": 136.80026, "t": 393.6441, "r": 547.27075, "b": 402.85709, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "secured and is used only by the web application. No Bank employee has access to the ", "bbox": {"l": 136.80026, "t": 405.64392, "r": 521.72943, "b": 414.85689999999994, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "WEBUSER profile, and no customer has an IBM i user profile.", "bbox": {"l": 136.80026, "t": 417.64374, "r": 410.31177, "b": 426.85672000000005, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "The customer\u2019s identity is passed to DB2 by using a global variable. The global variable is ", "bbox": {"l": 136.80026, "t": 439.60355, "r": 534.81372, "b": 448.81653, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "secured and can be accessed only by the WEBUSER. The web application sets the ", "bbox": {"l": 136.80026, "t": 451.60336, "r": 508.47058, "b": 460.81635, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "CUSTOMER_LOGIN_ID variable to the customer\u2019s login value. This value is compared to the ", "bbox": {"l": 136.80026, "t": 463.60318, "r": 547.21399, "b": 472.81616, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "customer\u2019s login value that is found in the CUSTOMER_LOGIN_ID column of the ", "bbox": {"l": 136.80025, "t": 475.603, "r": 496.51453, "b": 484.81598, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "CUSTOMERS table.", "bbox": {"l": 136.80025, "t": 487.60281, "r": 227.16434, "b": 496.8158, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Applications that do not use the web interface do not have to be changed because the global ", "bbox": {"l": 136.80025, "t": 509.62238, "r": 547.24298, "b": 518.83536, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "variable is NULL by default.", "bbox": {"l": 136.80025, "t": 521.62219, "r": 258.24353, "b": 530.8351700000001, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.15193939208984, "t": 754.482421875, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.917007327079773, "cells": [{"id": 0, "text": "38 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.28313446044922, "t": 754.71630859375, "r": 334.42142, "b": 763.9201049804688, "coord_origin": "TOPLEFT"}, "confidence": 0.948601484298706, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.15269470214844, "t": 73.28873443603516, "r": 512.55139, "b": 89.75958251953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9640912413597107, "cells": [{"id": 2, "text": "4.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.199661, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Business requirements for the RCAC banking scenario", "bbox": {"l": 91.679573, "t": 74.34069999999997, "r": 512.55139, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.70774841308594, "t": 105.93765258789062, "r": 543.90033, "b": 128.36497497558594, "coord_origin": "TOPLEFT"}, "confidence": 0.9784327745437622, "cells": [{"id": 4, "text": "As part of a new internet banking project, the ", "bbox": {"l": 136.8, "t": 106.6087, "r": 338.47913, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Bank", "bbox": {"l": 338.34, "t": 106.08496000000002, "r": 360.88632, "b": 116.14269999999988, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": " decides to raise the level of data access ", "bbox": {"l": 360.95999, "t": 106.6087, "r": 543.10248, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "control on the following three tables that are involved in the new customer-facing application:", "bbox": {"l": 136.80023, "t": 118.60852, "r": 543.90033, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 135.7441864013672, "t": 134.77182006835938, "r": 214.60674, "b": 144.86108000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9225907325744629, "cells": [{"id": 8, "text": "GLYPH", "bbox": {"l": 136.80023, "t": 135.79749000000004, "r": 141.78023, "b": 144.57227, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CUSTOMERS", "bbox": {"l": 151.20039, "t": 135.64806999999996, "r": 214.60674, "b": 144.86108000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 135.63128662109375, "t": 146.7830810546875, "r": 206.64072, "b": 156.86090000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.921238124370575, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.80023, "t": 147.79729999999995, "r": 141.78023, "b": 156.57208000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ACCOUNTS", "bbox": {"l": 151.20039, "t": 147.64788999999996, "r": 206.64072, "b": 156.86090000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.5100555419922, "t": 158.49131774902344, "r": 229.18224, "b": 168.86072000000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9183958172798157, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.80023, "t": 159.79711999999995, "r": 141.78023, "b": 168.57190000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "TRANSACTIONS", "bbox": {"l": 151.20039, "t": 159.64770999999996, "r": 229.18224, "b": 168.86072000000001, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 136.0419464111328, "t": 180.70614624023438, "r": 547.2746, "b": 250.81957999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9874840378761292, "cells": [{"id": 14, "text": "RCAC will be used to restrict access to the rows in these three tables by using permissions, ", "bbox": {"l": 136.80023, "t": 181.60748, "r": 543.45526, "b": 190.82050000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "and to restrict column values by using masks. The default position is that no user can access ", "bbox": {"l": 136.80023, "t": 193.6073, "r": 547.2746, "b": 202.82030999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "the rows in the tables. From there, specific bank employees are allowed access only to the ", "bbox": {"l": 136.80023, "t": 205.60712, "r": 537.76495, "b": 214.82012999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "rows for their job responsibilities. In addition, columns containing personal or sensitive data ", "bbox": {"l": 136.80023, "t": 217.60693000000003, "r": 540.32367, "b": 226.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "are masked appropriately. Bank customers are allowed access to only their rows and column ", "bbox": {"l": 136.80023, "t": 229.60675000000003, "r": 547.24182, "b": 238.81975999999997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "values.", "bbox": {"l": 136.80023, "t": 241.60657000000003, "r": 167.82861, "b": 250.81957999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 135.87716674804688, "t": 262.61517333984375, "r": 546.85059, "b": 333.1118469238281, "coord_origin": "TOPLEFT"}, "confidence": 0.9887834191322327, "cells": [{"id": 20, "text": "In this example, it is assumed that the Bank employees have access to the tables when ", "bbox": {"l": 136.80023, "t": 263.62616, "r": 523.98511, "b": 272.83916999999997, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "working on the premises only. Employee access to data is provided by programs and tools ", "bbox": {"l": 136.80023, "t": 275.62598, "r": 536.96021, "b": 284.83899, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "using standard DB2 interfaces, such as embedded SQL, ODBC, JDBC, and CLI. The ", "bbox": {"l": 136.80025, "t": 287.62582000000003, "r": 514.68756, "b": 296.83881, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "database connection authentication for these interfaces uses the employee\u2019s personal and ", "bbox": {"l": 136.80025, "t": 299.62564, "r": 537.64044, "b": 308.83862, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "unique IBM i user profile. Operating in their professional role, employees do not have access ", "bbox": {"l": 136.80026, "t": 311.62546, "r": 546.85059, "b": 320.83844, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "to bank data through the Internet.", "bbox": {"l": 136.80026, "t": 323.62527, "r": 284.8855, "b": 332.83826, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 135.72178649902344, "t": 344.7479553222656, "r": 547.27075, "b": 427.0599670410156, "coord_origin": "TOPLEFT"}, "confidence": 0.9884931445121765, "cells": [{"id": 26, "text": "Bank customers have access to their accounts and transactions by using a new web ", "bbox": {"l": 136.80026, "t": 345.64483999999993, "r": 511.27428999999995, "b": 354.85782, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "application. Each customer has unique credentials for logging in to the application. The ", "bbox": {"l": 136.80026, "t": 357.64465, "r": 523.22845, "b": 366.85764, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "authentication of the customer is handled by the web server. After the customer is ", "bbox": {"l": 136.80026, "t": 369.64447, "r": 500.01061999999996, "b": 378.85745, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "authenticated, the web server establishes a connection to DB2 for data access. This ", "bbox": {"l": 136.80026, "t": 381.64429, "r": 510.52930000000003, "b": 390.8572700000001, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "connection uses a common IBM i user profile that is known as WEBUSER. This user profile is ", "bbox": {"l": 136.80026, "t": 393.6441, "r": 547.27075, "b": 402.85709, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "secured and is used only by the web application. No Bank employee has access to the ", "bbox": {"l": 136.80026, "t": 405.64392, "r": 521.72943, "b": 414.85689999999994, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "WEBUSER profile, and no customer has an IBM i user profile.", "bbox": {"l": 136.80026, "t": 417.64374, "r": 410.31177, "b": 426.85672000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 135.73001098632812, "t": 438.89556884765625, "r": 547.21399, "b": 496.8158, "coord_origin": "TOPLEFT"}, "confidence": 0.9869483709335327, "cells": [{"id": 33, "text": "The customer\u2019s identity is passed to DB2 by using a global variable. The global variable is ", "bbox": {"l": 136.80026, "t": 439.60355, "r": 534.81372, "b": 448.81653, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "secured and can be accessed only by the WEBUSER. The web application sets the ", "bbox": {"l": 136.80026, "t": 451.60336, "r": 508.47058, "b": 460.81635, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "CUSTOMER_LOGIN_ID variable to the customer\u2019s login value. This value is compared to the ", "bbox": {"l": 136.80026, "t": 463.60318, "r": 547.21399, "b": 472.81616, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "customer\u2019s login value that is found in the CUSTOMER_LOGIN_ID column of the ", "bbox": {"l": 136.80025, "t": 475.603, "r": 496.51453, "b": 484.81598, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "CUSTOMERS table.", "bbox": {"l": 136.80025, "t": 487.60281, "r": 227.16434, "b": 496.8158, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 135.76414489746094, "t": 508.6873474121094, "r": 547.24298, "b": 530.8351700000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9792865514755249, "cells": [{"id": 38, "text": "Applications that do not use the web interface do not have to be changed because the global ", "bbox": {"l": 136.80025, "t": 509.62238, "r": 547.24298, "b": 518.83536, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "variable is NULL by default.", "bbox": {"l": 136.80025, "t": 521.62219, "r": 258.24353, "b": 530.8351700000001, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 53, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.15193939208984, "t": 754.482421875, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.917007327079773, "cells": [{"id": 0, "text": "38 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "38"}, {"label": "page_footer", "id": 1, "page_no": 53, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.28313446044922, "t": 754.71630859375, "r": 334.42142, "b": 763.9201049804688, "coord_origin": "TOPLEFT"}, "confidence": 0.948601484298706, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "section_header", "id": 2, "page_no": 53, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.15269470214844, "t": 73.28873443603516, "r": 512.55139, "b": 89.75958251953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9640912413597107, "cells": [{"id": 2, "text": "4.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.199661, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Business requirements for the RCAC banking scenario", "bbox": {"l": 91.679573, "t": 74.34069999999997, "r": 512.55139, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, "text": "4.1 Business requirements for the RCAC banking scenario"}, {"label": "text", "id": 3, "page_no": 53, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.70774841308594, "t": 105.93765258789062, "r": 543.90033, "b": 128.36497497558594, "coord_origin": "TOPLEFT"}, "confidence": 0.9784327745437622, "cells": [{"id": 4, "text": "As part of a new internet banking project, the ", "bbox": {"l": 136.8, "t": 106.6087, "r": 338.47913, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Bank", "bbox": {"l": 338.34, "t": 106.08496000000002, "r": 360.88632, "b": 116.14269999999988, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": " decides to raise the level of data access ", "bbox": {"l": 360.95999, "t": 106.6087, "r": 543.10248, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "control on the following three tables that are involved in the new customer-facing application:", "bbox": {"l": 136.80023, "t": 118.60852, "r": 543.90033, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}]}, "text": "As part of a new internet banking project, the Bank decides to raise the level of data access control on the following three tables that are involved in the new customer-facing application:"}, {"label": "list_item", "id": 4, "page_no": 53, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.7441864013672, "t": 134.77182006835938, "r": 214.60674, "b": 144.86108000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9225907325744629, "cells": [{"id": 8, "text": "GLYPH", "bbox": {"l": 136.80023, "t": 135.79749000000004, "r": 141.78023, "b": 144.57227, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CUSTOMERS", "bbox": {"l": 151.20039, "t": 135.64806999999996, "r": 214.60674, "b": 144.86108000000002, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH CUSTOMERS"}, {"label": "list_item", "id": 5, "page_no": 53, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.63128662109375, "t": 146.7830810546875, "r": 206.64072, "b": 156.86090000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.921238124370575, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.80023, "t": 147.79729999999995, "r": 141.78023, "b": 156.57208000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ACCOUNTS", "bbox": {"l": 151.20039, "t": 147.64788999999996, "r": 206.64072, "b": 156.86090000000002, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH ACCOUNTS"}, {"label": "list_item", "id": 6, "page_no": 53, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.5100555419922, "t": 158.49131774902344, "r": 229.18224, "b": 168.86072000000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9183958172798157, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.80023, "t": 159.79711999999995, "r": 141.78023, "b": 168.57190000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "TRANSACTIONS", "bbox": {"l": 151.20039, "t": 159.64770999999996, "r": 229.18224, "b": 168.86072000000001, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH TRANSACTIONS"}, {"label": "text", "id": 7, "page_no": 53, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.0419464111328, "t": 180.70614624023438, "r": 547.2746, "b": 250.81957999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9874840378761292, "cells": [{"id": 14, "text": "RCAC will be used to restrict access to the rows in these three tables by using permissions, ", "bbox": {"l": 136.80023, "t": 181.60748, "r": 543.45526, "b": 190.82050000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "and to restrict column values by using masks. The default position is that no user can access ", "bbox": {"l": 136.80023, "t": 193.6073, "r": 547.2746, "b": 202.82030999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "the rows in the tables. From there, specific bank employees are allowed access only to the ", "bbox": {"l": 136.80023, "t": 205.60712, "r": 537.76495, "b": 214.82012999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "rows for their job responsibilities. In addition, columns containing personal or sensitive data ", "bbox": {"l": 136.80023, "t": 217.60693000000003, "r": 540.32367, "b": 226.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "are masked appropriately. Bank customers are allowed access to only their rows and column ", "bbox": {"l": 136.80023, "t": 229.60675000000003, "r": 547.24182, "b": 238.81975999999997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "values.", "bbox": {"l": 136.80023, "t": 241.60657000000003, "r": 167.82861, "b": 250.81957999999997, "coord_origin": "TOPLEFT"}}]}, "text": "RCAC will be used to restrict access to the rows in these three tables by using permissions, and to restrict column values by using masks. The default position is that no user can access the rows in the tables. From there, specific bank employees are allowed access only to the rows for their job responsibilities. In addition, columns containing personal or sensitive data are masked appropriately. Bank customers are allowed access to only their rows and column values."}, {"label": "text", "id": 8, "page_no": 53, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.87716674804688, "t": 262.61517333984375, "r": 546.85059, "b": 333.1118469238281, "coord_origin": "TOPLEFT"}, "confidence": 0.9887834191322327, "cells": [{"id": 20, "text": "In this example, it is assumed that the Bank employees have access to the tables when ", "bbox": {"l": 136.80023, "t": 263.62616, "r": 523.98511, "b": 272.83916999999997, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "working on the premises only. Employee access to data is provided by programs and tools ", "bbox": {"l": 136.80023, "t": 275.62598, "r": 536.96021, "b": 284.83899, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "using standard DB2 interfaces, such as embedded SQL, ODBC, JDBC, and CLI. The ", "bbox": {"l": 136.80025, "t": 287.62582000000003, "r": 514.68756, "b": 296.83881, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "database connection authentication for these interfaces uses the employee\u2019s personal and ", "bbox": {"l": 136.80025, "t": 299.62564, "r": 537.64044, "b": 308.83862, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "unique IBM i user profile. Operating in their professional role, employees do not have access ", "bbox": {"l": 136.80026, "t": 311.62546, "r": 546.85059, "b": 320.83844, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "to bank data through the Internet.", "bbox": {"l": 136.80026, "t": 323.62527, "r": 284.8855, "b": 332.83826, "coord_origin": "TOPLEFT"}}]}, "text": "In this example, it is assumed that the Bank employees have access to the tables when working on the premises only. Employee access to data is provided by programs and tools using standard DB2 interfaces, such as embedded SQL, ODBC, JDBC, and CLI. The database connection authentication for these interfaces uses the employee\u2019s personal and unique IBM i user profile. Operating in their professional role, employees do not have access to bank data through the Internet."}, {"label": "text", "id": 9, "page_no": 53, "cluster": {"id": 9, "label": "text", "bbox": {"l": 135.72178649902344, "t": 344.7479553222656, "r": 547.27075, "b": 427.0599670410156, "coord_origin": "TOPLEFT"}, "confidence": 0.9884931445121765, "cells": [{"id": 26, "text": "Bank customers have access to their accounts and transactions by using a new web ", "bbox": {"l": 136.80026, "t": 345.64483999999993, "r": 511.27428999999995, "b": 354.85782, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "application. Each customer has unique credentials for logging in to the application. The ", "bbox": {"l": 136.80026, "t": 357.64465, "r": 523.22845, "b": 366.85764, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "authentication of the customer is handled by the web server. After the customer is ", "bbox": {"l": 136.80026, "t": 369.64447, "r": 500.01061999999996, "b": 378.85745, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "authenticated, the web server establishes a connection to DB2 for data access. This ", "bbox": {"l": 136.80026, "t": 381.64429, "r": 510.52930000000003, "b": 390.8572700000001, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "connection uses a common IBM i user profile that is known as WEBUSER. This user profile is ", "bbox": {"l": 136.80026, "t": 393.6441, "r": 547.27075, "b": 402.85709, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "secured and is used only by the web application. No Bank employee has access to the ", "bbox": {"l": 136.80026, "t": 405.64392, "r": 521.72943, "b": 414.85689999999994, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "WEBUSER profile, and no customer has an IBM i user profile.", "bbox": {"l": 136.80026, "t": 417.64374, "r": 410.31177, "b": 426.85672000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Bank customers have access to their accounts and transactions by using a new web application. Each customer has unique credentials for logging in to the application. The authentication of the customer is handled by the web server. After the customer is authenticated, the web server establishes a connection to DB2 for data access. This connection uses a common IBM i user profile that is known as WEBUSER. This user profile is secured and is used only by the web application. No Bank employee has access to the WEBUSER profile, and no customer has an IBM i user profile."}, {"label": "text", "id": 10, "page_no": 53, "cluster": {"id": 10, "label": "text", "bbox": {"l": 135.73001098632812, "t": 438.89556884765625, "r": 547.21399, "b": 496.8158, "coord_origin": "TOPLEFT"}, "confidence": 0.9869483709335327, "cells": [{"id": 33, "text": "The customer\u2019s identity is passed to DB2 by using a global variable. The global variable is ", "bbox": {"l": 136.80026, "t": 439.60355, "r": 534.81372, "b": 448.81653, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "secured and can be accessed only by the WEBUSER. The web application sets the ", "bbox": {"l": 136.80026, "t": 451.60336, "r": 508.47058, "b": 460.81635, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "CUSTOMER_LOGIN_ID variable to the customer\u2019s login value. This value is compared to the ", "bbox": {"l": 136.80026, "t": 463.60318, "r": 547.21399, "b": 472.81616, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "customer\u2019s login value that is found in the CUSTOMER_LOGIN_ID column of the ", "bbox": {"l": 136.80025, "t": 475.603, "r": 496.51453, "b": 484.81598, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "CUSTOMERS table.", "bbox": {"l": 136.80025, "t": 487.60281, "r": 227.16434, "b": 496.8158, "coord_origin": "TOPLEFT"}}]}, "text": "The customer\u2019s identity is passed to DB2 by using a global variable. The global variable is secured and can be accessed only by the WEBUSER. The web application sets the CUSTOMER_LOGIN_ID variable to the customer\u2019s login value. This value is compared to the customer\u2019s login value that is found in the CUSTOMER_LOGIN_ID column of the CUSTOMERS table."}, {"label": "text", "id": 11, "page_no": 53, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.76414489746094, "t": 508.6873474121094, "r": 547.24298, "b": 530.8351700000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9792865514755249, "cells": [{"id": 38, "text": "Applications that do not use the web interface do not have to be changed because the global ", "bbox": {"l": 136.80025, "t": 509.62238, "r": 547.24298, "b": 518.83536, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "variable is NULL by default.", "bbox": {"l": 136.80025, "t": 521.62219, "r": 258.24353, "b": 530.8351700000001, "coord_origin": "TOPLEFT"}}]}, "text": "Applications that do not use the web interface do not have to be changed because the global variable is NULL by default."}], "body": [{"label": "section_header", "id": 2, "page_no": 53, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.15269470214844, "t": 73.28873443603516, "r": 512.55139, "b": 89.75958251953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9640912413597107, "cells": [{"id": 2, "text": "4.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.199661, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Business requirements for the RCAC banking scenario", "bbox": {"l": 91.679573, "t": 74.34069999999997, "r": 512.55139, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, "text": "4.1 Business requirements for the RCAC banking scenario"}, {"label": "text", "id": 3, "page_no": 53, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.70774841308594, "t": 105.93765258789062, "r": 543.90033, "b": 128.36497497558594, "coord_origin": "TOPLEFT"}, "confidence": 0.9784327745437622, "cells": [{"id": 4, "text": "As part of a new internet banking project, the ", "bbox": {"l": 136.8, "t": 106.6087, "r": 338.47913, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Bank", "bbox": {"l": 338.34, "t": 106.08496000000002, "r": 360.88632, "b": 116.14269999999988, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": " decides to raise the level of data access ", "bbox": {"l": 360.95999, "t": 106.6087, "r": 543.10248, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "control on the following three tables that are involved in the new customer-facing application:", "bbox": {"l": 136.80023, "t": 118.60852, "r": 543.90033, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}]}, "text": "As part of a new internet banking project, the Bank decides to raise the level of data access control on the following three tables that are involved in the new customer-facing application:"}, {"label": "list_item", "id": 4, "page_no": 53, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.7441864013672, "t": 134.77182006835938, "r": 214.60674, "b": 144.86108000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9225907325744629, "cells": [{"id": 8, "text": "GLYPH", "bbox": {"l": 136.80023, "t": 135.79749000000004, "r": 141.78023, "b": 144.57227, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CUSTOMERS", "bbox": {"l": 151.20039, "t": 135.64806999999996, "r": 214.60674, "b": 144.86108000000002, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH CUSTOMERS"}, {"label": "list_item", "id": 5, "page_no": 53, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.63128662109375, "t": 146.7830810546875, "r": 206.64072, "b": 156.86090000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.921238124370575, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.80023, "t": 147.79729999999995, "r": 141.78023, "b": 156.57208000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ACCOUNTS", "bbox": {"l": 151.20039, "t": 147.64788999999996, "r": 206.64072, "b": 156.86090000000002, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH ACCOUNTS"}, {"label": "list_item", "id": 6, "page_no": 53, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.5100555419922, "t": 158.49131774902344, "r": 229.18224, "b": 168.86072000000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9183958172798157, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.80023, "t": 159.79711999999995, "r": 141.78023, "b": 168.57190000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "TRANSACTIONS", "bbox": {"l": 151.20039, "t": 159.64770999999996, "r": 229.18224, "b": 168.86072000000001, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH TRANSACTIONS"}, {"label": "text", "id": 7, "page_no": 53, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.0419464111328, "t": 180.70614624023438, "r": 547.2746, "b": 250.81957999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9874840378761292, "cells": [{"id": 14, "text": "RCAC will be used to restrict access to the rows in these three tables by using permissions, ", "bbox": {"l": 136.80023, "t": 181.60748, "r": 543.45526, "b": 190.82050000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "and to restrict column values by using masks. The default position is that no user can access ", "bbox": {"l": 136.80023, "t": 193.6073, "r": 547.2746, "b": 202.82030999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "the rows in the tables. From there, specific bank employees are allowed access only to the ", "bbox": {"l": 136.80023, "t": 205.60712, "r": 537.76495, "b": 214.82012999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "rows for their job responsibilities. In addition, columns containing personal or sensitive data ", "bbox": {"l": 136.80023, "t": 217.60693000000003, "r": 540.32367, "b": 226.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "are masked appropriately. Bank customers are allowed access to only their rows and column ", "bbox": {"l": 136.80023, "t": 229.60675000000003, "r": 547.24182, "b": 238.81975999999997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "values.", "bbox": {"l": 136.80023, "t": 241.60657000000003, "r": 167.82861, "b": 250.81957999999997, "coord_origin": "TOPLEFT"}}]}, "text": "RCAC will be used to restrict access to the rows in these three tables by using permissions, and to restrict column values by using masks. The default position is that no user can access the rows in the tables. From there, specific bank employees are allowed access only to the rows for their job responsibilities. In addition, columns containing personal or sensitive data are masked appropriately. Bank customers are allowed access to only their rows and column values."}, {"label": "text", "id": 8, "page_no": 53, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.87716674804688, "t": 262.61517333984375, "r": 546.85059, "b": 333.1118469238281, "coord_origin": "TOPLEFT"}, "confidence": 0.9887834191322327, "cells": [{"id": 20, "text": "In this example, it is assumed that the Bank employees have access to the tables when ", "bbox": {"l": 136.80023, "t": 263.62616, "r": 523.98511, "b": 272.83916999999997, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "working on the premises only. Employee access to data is provided by programs and tools ", "bbox": {"l": 136.80023, "t": 275.62598, "r": 536.96021, "b": 284.83899, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "using standard DB2 interfaces, such as embedded SQL, ODBC, JDBC, and CLI. The ", "bbox": {"l": 136.80025, "t": 287.62582000000003, "r": 514.68756, "b": 296.83881, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "database connection authentication for these interfaces uses the employee\u2019s personal and ", "bbox": {"l": 136.80025, "t": 299.62564, "r": 537.64044, "b": 308.83862, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "unique IBM i user profile. Operating in their professional role, employees do not have access ", "bbox": {"l": 136.80026, "t": 311.62546, "r": 546.85059, "b": 320.83844, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "to bank data through the Internet.", "bbox": {"l": 136.80026, "t": 323.62527, "r": 284.8855, "b": 332.83826, "coord_origin": "TOPLEFT"}}]}, "text": "In this example, it is assumed that the Bank employees have access to the tables when working on the premises only. Employee access to data is provided by programs and tools using standard DB2 interfaces, such as embedded SQL, ODBC, JDBC, and CLI. The database connection authentication for these interfaces uses the employee\u2019s personal and unique IBM i user profile. Operating in their professional role, employees do not have access to bank data through the Internet."}, {"label": "text", "id": 9, "page_no": 53, "cluster": {"id": 9, "label": "text", "bbox": {"l": 135.72178649902344, "t": 344.7479553222656, "r": 547.27075, "b": 427.0599670410156, "coord_origin": "TOPLEFT"}, "confidence": 0.9884931445121765, "cells": [{"id": 26, "text": "Bank customers have access to their accounts and transactions by using a new web ", "bbox": {"l": 136.80026, "t": 345.64483999999993, "r": 511.27428999999995, "b": 354.85782, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "application. Each customer has unique credentials for logging in to the application. The ", "bbox": {"l": 136.80026, "t": 357.64465, "r": 523.22845, "b": 366.85764, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "authentication of the customer is handled by the web server. After the customer is ", "bbox": {"l": 136.80026, "t": 369.64447, "r": 500.01061999999996, "b": 378.85745, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "authenticated, the web server establishes a connection to DB2 for data access. This ", "bbox": {"l": 136.80026, "t": 381.64429, "r": 510.52930000000003, "b": 390.8572700000001, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "connection uses a common IBM i user profile that is known as WEBUSER. This user profile is ", "bbox": {"l": 136.80026, "t": 393.6441, "r": 547.27075, "b": 402.85709, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "secured and is used only by the web application. No Bank employee has access to the ", "bbox": {"l": 136.80026, "t": 405.64392, "r": 521.72943, "b": 414.85689999999994, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "WEBUSER profile, and no customer has an IBM i user profile.", "bbox": {"l": 136.80026, "t": 417.64374, "r": 410.31177, "b": 426.85672000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Bank customers have access to their accounts and transactions by using a new web application. Each customer has unique credentials for logging in to the application. The authentication of the customer is handled by the web server. After the customer is authenticated, the web server establishes a connection to DB2 for data access. This connection uses a common IBM i user profile that is known as WEBUSER. This user profile is secured and is used only by the web application. No Bank employee has access to the WEBUSER profile, and no customer has an IBM i user profile."}, {"label": "text", "id": 10, "page_no": 53, "cluster": {"id": 10, "label": "text", "bbox": {"l": 135.73001098632812, "t": 438.89556884765625, "r": 547.21399, "b": 496.8158, "coord_origin": "TOPLEFT"}, "confidence": 0.9869483709335327, "cells": [{"id": 33, "text": "The customer\u2019s identity is passed to DB2 by using a global variable. The global variable is ", "bbox": {"l": 136.80026, "t": 439.60355, "r": 534.81372, "b": 448.81653, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "secured and can be accessed only by the WEBUSER. The web application sets the ", "bbox": {"l": 136.80026, "t": 451.60336, "r": 508.47058, "b": 460.81635, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "CUSTOMER_LOGIN_ID variable to the customer\u2019s login value. This value is compared to the ", "bbox": {"l": 136.80026, "t": 463.60318, "r": 547.21399, "b": 472.81616, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "customer\u2019s login value that is found in the CUSTOMER_LOGIN_ID column of the ", "bbox": {"l": 136.80025, "t": 475.603, "r": 496.51453, "b": 484.81598, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "CUSTOMERS table.", "bbox": {"l": 136.80025, "t": 487.60281, "r": 227.16434, "b": 496.8158, "coord_origin": "TOPLEFT"}}]}, "text": "The customer\u2019s identity is passed to DB2 by using a global variable. The global variable is secured and can be accessed only by the WEBUSER. The web application sets the CUSTOMER_LOGIN_ID variable to the customer\u2019s login value. This value is compared to the customer\u2019s login value that is found in the CUSTOMER_LOGIN_ID column of the CUSTOMERS table."}, {"label": "text", "id": 11, "page_no": 53, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.76414489746094, "t": 508.6873474121094, "r": 547.24298, "b": 530.8351700000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9792865514755249, "cells": [{"id": 38, "text": "Applications that do not use the web interface do not have to be changed because the global ", "bbox": {"l": 136.80025, "t": 509.62238, "r": 547.24298, "b": 518.83536, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "variable is NULL by default.", "bbox": {"l": 136.80025, "t": 521.62219, "r": 258.24353, "b": 530.8351700000001, "coord_origin": "TOPLEFT"}}]}, "text": "Applications that do not use the web interface do not have to be changed because the global variable is NULL by default."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 53, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.15193939208984, "t": 754.482421875, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.917007327079773, "cells": [{"id": 0, "text": "38 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "38"}, {"label": "page_footer", "id": 1, "page_no": 53, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.28313446044922, "t": 754.71630859375, "r": 334.42142, "b": 763.9201049804688, "coord_origin": "TOPLEFT"}, "confidence": 0.948601484298706, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 54, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "39", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "A diagram of the internet banking architecture is shown in Figure 4-1:", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 442.27869, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "GLYPH", "bbox": {"l": 136.79959, "t": 88.63823999999988, "r": 141.77959, "b": 97.41301999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "The row permission and column masks for the CUSTOMERS table are based on the ", "bbox": {"l": 151.19975, "t": 88.48883000000001, "r": 526.37085, "b": 97.70183999999995, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "group of which the user profile is part. If the user is a customer, their specific login ID also ", "bbox": {"l": 151.19975, "t": 100.48865, "r": 547.35461, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "is tested.", "bbox": {"l": 151.19975, "t": 112.48845999999992, "r": 191.15727, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "GLYPH", "bbox": {"l": 136.79959, "t": 129.67742999999996, "r": 141.77959, "b": 138.45221000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "The row permission and column mask for the ACCOUNTS table are based on the ", "bbox": {"l": 151.19975, "t": 129.52801999999997, "r": 513.82544, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CUSTOMERS table permission rules. A subquery is used to connect the accounts (child) ", "bbox": {"l": 151.19975, "t": 141.52783, "r": 546.73322, "b": 150.74084000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "with the customer (parent).", "bbox": {"l": 151.19975, "t": 153.52765, "r": 270.1192, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "GLYPH", "bbox": {"l": 136.79959, "t": 170.65686000000005, "r": 141.77959, "b": 179.43164000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "The row permission for the TRANSACTIONS table is based on the ACCOUNTS table ", "bbox": {"l": 151.19975, "t": 170.50744999999995, "r": 530.51343, "b": 179.72046, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "permission rules and the CUSTOMERS table permission rules. A subquery is used to ", "bbox": {"l": 151.19975, "t": 182.50725999999997, "r": 531.53522, "b": 191.72028, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "connect the transactions (child) with the account (parent) and the account (child) with the ", "bbox": {"l": 151.19975, "t": 194.50707999999997, "r": 546.22345, "b": 203.72009000000003, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "customer (parent).", "bbox": {"l": 151.19975, "t": 206.50689999999997, "r": 232.83888, "b": 215.71991000000003, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Figure 4-1 Internet banking example", "bbox": {"l": 136.8, "t": 490.0379, "r": 286.07849, "b": 498.36292, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "4.2", "bbox": {"l": 64.800003, "t": 526.74072, "r": 87.239075, "b": 541.5037199999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Description of the users roles and responsibilities", "bbox": {"l": 91.726906, "t": 526.74072, "r": 475.69338999999997, "b": 541.5037199999999, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "During the requirements gathering phase, the following groups of users are identified and ", "bbox": {"l": 136.8, "t": 559.0086200000001, "r": 533.13452, "b": 568.22162, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "codified:", "bbox": {"l": 136.8, "t": 571.00842, "r": 173.99463, "b": 580.22142, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "GLYPH", "bbox": {"l": 136.8, "t": 588.19739, "r": 141.78, "b": 596.97214, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "SECURITY: Security officer and security administrators", "bbox": {"l": 151.20016, "t": 588.04799, "r": 395.10461, "b": 597.26099, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "GLYPH", "bbox": {"l": 136.8, "t": 600.19719, "r": 141.78, "b": 608.97194, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "DBE: Database engineers", "bbox": {"l": 151.20016, "t": 600.04779, "r": 266.76602, "b": 609.26079, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "GLYPH", "bbox": {"l": 136.8, "t": 612.19699, "r": 141.78, "b": 620.97174, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ADMIN: Bank business administrators", "bbox": {"l": 151.20016, "t": 612.04759, "r": 319.24329, "b": 621.26059, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "GLYPH", "bbox": {"l": 136.8, "t": 624.19679, "r": 141.78, "b": 632.97154, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "TELLER: Bank tellers", "bbox": {"l": 151.20016, "t": 624.04739, "r": 246.76636000000002, "b": 633.26039, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "GLYPH", "bbox": {"l": 136.8, "t": 636.19659, "r": 141.78, "b": 644.97134, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CUSTOMER: Bank customers using the internet", "bbox": {"l": 151.20016, "t": 636.0472, "r": 364.8681, "b": 645.26019, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "GLYPH", "bbox": {"l": 136.8, "t": 648.1964, "r": 141.78, "b": 656.97115, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "PUBLIC: Anyone not already in a group", "bbox": {"l": 151.20016, "t": 648.047, "r": 325.77802, "b": 657.25999, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Internet Banking Architecture", "bbox": {"l": 226.85941, "t": 237.95349, "r": 404.97986, "b": 250.65490999999997, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Web app sets global variable to user\u0092s login ID value", "bbox": {"l": 269.82669, "t": 277.10919, "r": 467.91561999999993, "b": 285.00751, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Web", "bbox": {"l": 283.75961, "t": 342.39901999999995, "r": 310.64789, "b": 354.69406000000004, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Server", "bbox": {"l": 278.34604, "t": 359.62216, "r": 316.58282, "b": 371.91720999999995, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "DB2", "bbox": {"l": 429.82370000000003, "t": 342.39901999999995, "r": 454.2041300000001, "b": 354.69406000000004, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Server", "bbox": {"l": 422.90341, "t": 359.62216, "r": 461.1402, "b": 371.91720999999995, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "LOGIN_ID", "bbox": {"l": 213.3264, "t": 346.5273700000001, "r": 250.46141, "b": 354.42569, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Authentication", "bbox": {"l": 204.0994, "t": 357.59979, "r": 259.81662, "b": 365.48889, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "\u0093", "bbox": {"l": 345.9191, "t": 347.57309, "r": 349.77597, "b": 355.46218999999996, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "WEBUSER", "bbox": {"l": 349.7944, "t": 347.57309, "r": 387.90744, "b": 355.47141, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "\u0094", "bbox": {"l": 387.9021, "t": 347.57309, "r": 391.75897, "b": 355.46218999999996, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "DB Connection", "bbox": {"l": 340.99799, "t": 358.64557, "r": 396.67065, "b": 366.53467, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Customer", "bbox": {"l": 141.8476, "t": 387.90149, "r": 191.04857, "b": 398.43259, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "All online banking", "bbox": {"l": 402.66541, "t": 412.43927, "r": 471.38903999999997, "b": 420.33759, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Only web server", "bbox": {"l": 261.18411, "t": 412.43927, "r": 323.3584, "b": 420.33759, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "All online banking ", "bbox": {"l": 402.66541, "t": 412.43927, "r": 473.3999, "b": 420.33759, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "customers run ", "bbox": {"l": 402.66571, "t": 423.51166, "r": 459.16913, "b": 431.40996999999993, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "database transactions ", "bbox": {"l": 402.66571, "t": 434.58405, "r": 488.49249, "b": 442.48236, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "with WEBUSER profile", "bbox": {"l": 402.66571, "t": 445.65643, "r": 487.45444000000003, "b": 453.55475, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Only web server ", "bbox": {"l": 261.18411, "t": 412.43927, "r": 325.42889, "b": 420.33759, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "understands true ", "bbox": {"l": 261.18405, "t": 423.51166, "r": 328.80505, "b": 431.40996999999993, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "identity of online ", "bbox": {"l": 261.18405, "t": 434.58405, "r": 328.98499, "b": 442.48236, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "banking customer ", "bbox": {"l": 261.18405, "t": 445.65643, "r": 331.50668, "b": 453.55475, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "CUSTOMER_LOGIN_ID variable used to validate RCAC", "bbox": {"l": 267.12009, "t": 470.87717, "r": 470.52832, "b": 478.77548, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 214.27481079101562, "t": 754.7271118164062, "r": 523.59357, "b": 763.9805908203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9535647034645081, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.5966186523438, "t": 754.2191772460938, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9146284461021423, "cells": [{"id": 1, "text": "39", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.5806884765625, "t": 70.6917953491211, "r": 442.27869, "b": 81.22028350830078, "coord_origin": "TOPLEFT"}, "confidence": 0.883094310760498, "cells": [{"id": 2, "text": "A diagram of the internet banking architecture is shown in Figure 4-1:", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 442.27869, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "list_item", "bbox": {"l": 135.6310577392578, "t": 87.42381286621094, "r": 547.35461, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9767823815345764, "cells": [{"id": 3, "text": "GLYPH", "bbox": {"l": 136.79959, "t": 88.63823999999988, "r": 141.77959, "b": 97.41301999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "The row permission and column masks for the CUSTOMERS table are based on the ", "bbox": {"l": 151.19975, "t": 88.48883000000001, "r": 526.37085, "b": 97.70183999999995, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "group of which the user profile is part. If the user is a customer, their specific login ID also ", "bbox": {"l": 151.19975, "t": 100.48865, "r": 547.35461, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "is tested.", "bbox": {"l": 151.19975, "t": 112.48845999999992, "r": 191.15727, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 135.43284606933594, "t": 128.3446044921875, "r": 546.73322, "b": 162.75404357910156, "coord_origin": "TOPLEFT"}, "confidence": 0.9813671708106995, "cells": [{"id": 7, "text": "GLYPH", "bbox": {"l": 136.79959, "t": 129.67742999999996, "r": 141.77959, "b": 138.45221000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "The row permission and column mask for the ACCOUNTS table are based on the ", "bbox": {"l": 151.19975, "t": 129.52801999999997, "r": 513.82544, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CUSTOMERS table permission rules. A subquery is used to connect the accounts (child) ", "bbox": {"l": 151.19975, "t": 141.52783, "r": 546.73322, "b": 150.74084000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "with the customer (parent).", "bbox": {"l": 151.19975, "t": 153.52765, "r": 270.1192, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 135.4942169189453, "t": 169.17440795898438, "r": 546.22345, "b": 215.9951171875, "coord_origin": "TOPLEFT"}, "confidence": 0.9838805794715881, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.79959, "t": 170.65686000000005, "r": 141.77959, "b": 179.43164000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "The row permission for the TRANSACTIONS table is based on the ACCOUNTS table ", "bbox": {"l": 151.19975, "t": 170.50744999999995, "r": 530.51343, "b": 179.72046, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "permission rules and the CUSTOMERS table permission rules. A subquery is used to ", "bbox": {"l": 151.19975, "t": 182.50725999999997, "r": 531.53522, "b": 191.72028, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "connect the transactions (child) with the account (parent) and the account (child) with the ", "bbox": {"l": 151.19975, "t": 194.50707999999997, "r": 546.22345, "b": 203.72009000000003, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "customer (parent).", "bbox": {"l": 151.19975, "t": 206.50689999999997, "r": 232.83888, "b": 215.71991000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "caption", "bbox": {"l": 136.07473754882812, "t": 489.646728515625, "r": 286.37646484375, "b": 498.6321105957031, "coord_origin": "TOPLEFT"}, "confidence": 0.9487526416778564, "cells": [{"id": 16, "text": "Figure 4-1 Internet banking example", "bbox": {"l": 136.8, "t": 490.0379, "r": 286.07849, "b": 498.36292, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "section_header", "bbox": {"l": 64.41133880615234, "t": 525.37890625, "r": 475.69338999999997, "b": 541.5180053710938, "coord_origin": "TOPLEFT"}, "confidence": 0.9669509530067444, "cells": [{"id": 17, "text": "4.2", "bbox": {"l": 64.800003, "t": 526.74072, "r": 87.239075, "b": 541.5037199999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Description of the users roles and responsibilities", "bbox": {"l": 91.726906, "t": 526.74072, "r": 475.69338999999997, "b": 541.5037199999999, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 135.86761474609375, "t": 557.9774169921875, "r": 533.13452, "b": 580.22142, "coord_origin": "TOPLEFT"}, "confidence": 0.9649704694747925, "cells": [{"id": 19, "text": "During the requirements gathering phase, the following groups of users are identified and ", "bbox": {"l": 136.8, "t": 559.0086200000001, "r": 533.13452, "b": 568.22162, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "codified:", "bbox": {"l": 136.8, "t": 571.00842, "r": 173.99463, "b": 580.22142, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.75192260742188, "t": 587.4430541992188, "r": 395.10461, "b": 597.5853881835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9487041234970093, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.8, "t": 588.19739, "r": 141.78, "b": 596.97214, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "SECURITY: Security officer and security administrators", "bbox": {"l": 151.20016, "t": 588.04799, "r": 395.10461, "b": 597.26099, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 135.67442321777344, "t": 599.6355590820312, "r": 266.76602, "b": 609.8877563476562, "coord_origin": "TOPLEFT"}, "confidence": 0.9388520121574402, "cells": [{"id": 23, "text": "GLYPH", "bbox": {"l": 136.8, "t": 600.19719, "r": 141.78, "b": 608.97194, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "DBE: Database engineers", "bbox": {"l": 151.20016, "t": 600.04779, "r": 266.76602, "b": 609.26079, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 135.70191955566406, "t": 611.2393188476562, "r": 319.24329, "b": 621.26059, "coord_origin": "TOPLEFT"}, "confidence": 0.9382083415985107, "cells": [{"id": 25, "text": "GLYPH", "bbox": {"l": 136.8, "t": 612.19699, "r": 141.78, "b": 620.97174, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ADMIN: Bank business administrators", "bbox": {"l": 151.20016, "t": 612.04759, "r": 319.24329, "b": 621.26059, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "list_item", "bbox": {"l": 135.53024291992188, "t": 623.206787109375, "r": 246.76636000000002, "b": 633.26039, "coord_origin": "TOPLEFT"}, "confidence": 0.9220486879348755, "cells": [{"id": 27, "text": "GLYPH", "bbox": {"l": 136.8, "t": 624.19679, "r": 141.78, "b": 632.97154, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "TELLER: Bank tellers", "bbox": {"l": 151.20016, "t": 624.04739, "r": 246.76636000000002, "b": 633.26039, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "list_item", "bbox": {"l": 135.38711547851562, "t": 635.4190673828125, "r": 365.1325378417969, "b": 645.393798828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9496619701385498, "cells": [{"id": 29, "text": "GLYPH", "bbox": {"l": 136.8, "t": 636.19659, "r": 141.78, "b": 644.97134, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CUSTOMER: Bank customers using the internet", "bbox": {"l": 151.20016, "t": 636.0472, "r": 364.8681, "b": 645.26019, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "list_item", "bbox": {"l": 135.63414001464844, "t": 647.4161987304688, "r": 325.77802, "b": 657.5957641601562, "coord_origin": "TOPLEFT"}, "confidence": 0.9528717994689941, "cells": [{"id": 31, "text": "GLYPH", "bbox": {"l": 136.8, "t": 648.1964, "r": 141.78, "b": 656.97115, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "PUBLIC: Anyone not already in a group", "bbox": {"l": 151.20016, "t": 648.047, "r": 325.77802, "b": 657.25999, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "picture", "bbox": {"l": 136.02655029296875, "t": 229.7416229248047, "r": 494.36669921875, "b": 487.56256103515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9840942025184631, "cells": [{"id": 33, "text": "Internet Banking Architecture", "bbox": {"l": 226.85941, "t": 237.95349, "r": 404.97986, "b": 250.65490999999997, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Web app sets global variable to user\u0092s login ID value", "bbox": {"l": 269.82669, "t": 277.10919, "r": 467.91561999999993, "b": 285.00751, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Web", "bbox": {"l": 283.75961, "t": 342.39901999999995, "r": 310.64789, "b": 354.69406000000004, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Server", "bbox": {"l": 278.34604, "t": 359.62216, "r": 316.58282, "b": 371.91720999999995, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "DB2", "bbox": {"l": 429.82370000000003, "t": 342.39901999999995, "r": 454.2041300000001, "b": 354.69406000000004, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Server", "bbox": {"l": 422.90341, "t": 359.62216, "r": 461.1402, "b": 371.91720999999995, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "LOGIN_ID", "bbox": {"l": 213.3264, "t": 346.5273700000001, "r": 250.46141, "b": 354.42569, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Authentication", "bbox": {"l": 204.0994, "t": 357.59979, "r": 259.81662, "b": 365.48889, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "\u0093", "bbox": {"l": 345.9191, "t": 347.57309, "r": 349.77597, "b": 355.46218999999996, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "WEBUSER", "bbox": {"l": 349.7944, "t": 347.57309, "r": 387.90744, "b": 355.47141, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "\u0094", "bbox": {"l": 387.9021, "t": 347.57309, "r": 391.75897, "b": 355.46218999999996, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "DB Connection", "bbox": {"l": 340.99799, "t": 358.64557, "r": 396.67065, "b": 366.53467, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Customer", "bbox": {"l": 141.8476, "t": 387.90149, "r": 191.04857, "b": 398.43259, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "All online banking", "bbox": {"l": 402.66541, "t": 412.43927, "r": 471.38903999999997, "b": 420.33759, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Only web server", "bbox": {"l": 261.18411, "t": 412.43927, "r": 323.3584, "b": 420.33759, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "All online banking ", "bbox": {"l": 402.66541, "t": 412.43927, "r": 473.3999, "b": 420.33759, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "customers run ", "bbox": {"l": 402.66571, "t": 423.51166, "r": 459.16913, "b": 431.40996999999993, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "database transactions ", "bbox": {"l": 402.66571, "t": 434.58405, "r": 488.49249, "b": 442.48236, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "with WEBUSER profile", "bbox": {"l": 402.66571, "t": 445.65643, "r": 487.45444000000003, "b": 453.55475, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Only web server ", "bbox": {"l": 261.18411, "t": 412.43927, "r": 325.42889, "b": 420.33759, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "understands true ", "bbox": {"l": 261.18405, "t": 423.51166, "r": 328.80505, "b": 431.40996999999993, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "identity of online ", "bbox": {"l": 261.18405, "t": 434.58405, "r": 328.98499, "b": 442.48236, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "banking customer ", "bbox": {"l": 261.18405, "t": 445.65643, "r": 331.50668, "b": 453.55475, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "CUSTOMER_LOGIN_ID variable used to validate RCAC", "bbox": {"l": 267.12009, "t": 470.87717, "r": 470.52832, "b": 478.77548, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 54, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.27481079101562, "t": 754.7271118164062, "r": 523.59357, "b": 763.9805908203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9535647034645081, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 54, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.5966186523438, "t": 754.2191772460938, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9146284461021423, "cells": [{"id": 1, "text": "39", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "39"}, {"label": "text", "id": 2, "page_no": 54, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.5806884765625, "t": 70.6917953491211, "r": 442.27869, "b": 81.22028350830078, "coord_origin": "TOPLEFT"}, "confidence": 0.883094310760498, "cells": [{"id": 2, "text": "A diagram of the internet banking architecture is shown in Figure 4-1:", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 442.27869, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}]}, "text": "A diagram of the internet banking architecture is shown in Figure 4-1:"}, {"label": "list_item", "id": 3, "page_no": 54, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 135.6310577392578, "t": 87.42381286621094, "r": 547.35461, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9767823815345764, "cells": [{"id": 3, "text": "GLYPH", "bbox": {"l": 136.79959, "t": 88.63823999999988, "r": 141.77959, "b": 97.41301999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "The row permission and column masks for the CUSTOMERS table are based on the ", "bbox": {"l": 151.19975, "t": 88.48883000000001, "r": 526.37085, "b": 97.70183999999995, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "group of which the user profile is part. If the user is a customer, their specific login ID also ", "bbox": {"l": 151.19975, "t": 100.48865, "r": 547.35461, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "is tested.", "bbox": {"l": 151.19975, "t": 112.48845999999992, "r": 191.15727, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The row permission and column masks for the CUSTOMERS table are based on the group of which the user profile is part. If the user is a customer, their specific login ID also is tested."}, {"label": "list_item", "id": 4, "page_no": 54, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.43284606933594, "t": 128.3446044921875, "r": 546.73322, "b": 162.75404357910156, "coord_origin": "TOPLEFT"}, "confidence": 0.9813671708106995, "cells": [{"id": 7, "text": "GLYPH", "bbox": {"l": 136.79959, "t": 129.67742999999996, "r": 141.77959, "b": 138.45221000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "The row permission and column mask for the ACCOUNTS table are based on the ", "bbox": {"l": 151.19975, "t": 129.52801999999997, "r": 513.82544, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CUSTOMERS table permission rules. A subquery is used to connect the accounts (child) ", "bbox": {"l": 151.19975, "t": 141.52783, "r": 546.73322, "b": 150.74084000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "with the customer (parent).", "bbox": {"l": 151.19975, "t": 153.52765, "r": 270.1192, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The row permission and column mask for the ACCOUNTS table are based on the CUSTOMERS table permission rules. A subquery is used to connect the accounts (child) with the customer (parent)."}, {"label": "list_item", "id": 5, "page_no": 54, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.4942169189453, "t": 169.17440795898438, "r": 546.22345, "b": 215.9951171875, "coord_origin": "TOPLEFT"}, "confidence": 0.9838805794715881, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.79959, "t": 170.65686000000005, "r": 141.77959, "b": 179.43164000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "The row permission for the TRANSACTIONS table is based on the ACCOUNTS table ", "bbox": {"l": 151.19975, "t": 170.50744999999995, "r": 530.51343, "b": 179.72046, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "permission rules and the CUSTOMERS table permission rules. A subquery is used to ", "bbox": {"l": 151.19975, "t": 182.50725999999997, "r": 531.53522, "b": 191.72028, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "connect the transactions (child) with the account (parent) and the account (child) with the ", "bbox": {"l": 151.19975, "t": 194.50707999999997, "r": 546.22345, "b": 203.72009000000003, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "customer (parent).", "bbox": {"l": 151.19975, "t": 206.50689999999997, "r": 232.83888, "b": 215.71991000000003, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The row permission for the TRANSACTIONS table is based on the ACCOUNTS table permission rules and the CUSTOMERS table permission rules. A subquery is used to connect the transactions (child) with the account (parent) and the account (child) with the customer (parent)."}, {"label": "caption", "id": 6, "page_no": 54, "cluster": {"id": 6, "label": "caption", "bbox": {"l": 136.07473754882812, "t": 489.646728515625, "r": 286.37646484375, "b": 498.6321105957031, "coord_origin": "TOPLEFT"}, "confidence": 0.9487526416778564, "cells": [{"id": 16, "text": "Figure 4-1 Internet banking example", "bbox": {"l": 136.8, "t": 490.0379, "r": 286.07849, "b": 498.36292, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-1 Internet banking example"}, {"label": "section_header", "id": 7, "page_no": 54, "cluster": {"id": 7, "label": "section_header", "bbox": {"l": 64.41133880615234, "t": 525.37890625, "r": 475.69338999999997, "b": 541.5180053710938, "coord_origin": "TOPLEFT"}, "confidence": 0.9669509530067444, "cells": [{"id": 17, "text": "4.2", "bbox": {"l": 64.800003, "t": 526.74072, "r": 87.239075, "b": 541.5037199999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Description of the users roles and responsibilities", "bbox": {"l": 91.726906, "t": 526.74072, "r": 475.69338999999997, "b": 541.5037199999999, "coord_origin": "TOPLEFT"}}]}, "text": "4.2 Description of the users roles and responsibilities"}, {"label": "text", "id": 8, "page_no": 54, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.86761474609375, "t": 557.9774169921875, "r": 533.13452, "b": 580.22142, "coord_origin": "TOPLEFT"}, "confidence": 0.9649704694747925, "cells": [{"id": 19, "text": "During the requirements gathering phase, the following groups of users are identified and ", "bbox": {"l": 136.8, "t": 559.0086200000001, "r": 533.13452, "b": 568.22162, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "codified:", "bbox": {"l": 136.8, "t": 571.00842, "r": 173.99463, "b": 580.22142, "coord_origin": "TOPLEFT"}}]}, "text": "During the requirements gathering phase, the following groups of users are identified and codified:"}, {"label": "list_item", "id": 9, "page_no": 54, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.75192260742188, "t": 587.4430541992188, "r": 395.10461, "b": 597.5853881835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9487041234970093, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.8, "t": 588.19739, "r": 141.78, "b": 596.97214, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "SECURITY: Security officer and security administrators", "bbox": {"l": 151.20016, "t": 588.04799, "r": 395.10461, "b": 597.26099, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH SECURITY: Security officer and security administrators"}, {"label": "list_item", "id": 10, "page_no": 54, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.67442321777344, "t": 599.6355590820312, "r": 266.76602, "b": 609.8877563476562, "coord_origin": "TOPLEFT"}, "confidence": 0.9388520121574402, "cells": [{"id": 23, "text": "GLYPH", "bbox": {"l": 136.8, "t": 600.19719, "r": 141.78, "b": 608.97194, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "DBE: Database engineers", "bbox": {"l": 151.20016, "t": 600.04779, "r": 266.76602, "b": 609.26079, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH DBE: Database engineers"}, {"label": "list_item", "id": 11, "page_no": 54, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.70191955566406, "t": 611.2393188476562, "r": 319.24329, "b": 621.26059, "coord_origin": "TOPLEFT"}, "confidence": 0.9382083415985107, "cells": [{"id": 25, "text": "GLYPH", "bbox": {"l": 136.8, "t": 612.19699, "r": 141.78, "b": 620.97174, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ADMIN: Bank business administrators", "bbox": {"l": 151.20016, "t": 612.04759, "r": 319.24329, "b": 621.26059, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH ADMIN: Bank business administrators"}, {"label": "list_item", "id": 12, "page_no": 54, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 135.53024291992188, "t": 623.206787109375, "r": 246.76636000000002, "b": 633.26039, "coord_origin": "TOPLEFT"}, "confidence": 0.9220486879348755, "cells": [{"id": 27, "text": "GLYPH", "bbox": {"l": 136.8, "t": 624.19679, "r": 141.78, "b": 632.97154, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "TELLER: Bank tellers", "bbox": {"l": 151.20016, "t": 624.04739, "r": 246.76636000000002, "b": 633.26039, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH TELLER: Bank tellers"}, {"label": "list_item", "id": 13, "page_no": 54, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 135.38711547851562, "t": 635.4190673828125, "r": 365.1325378417969, "b": 645.393798828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9496619701385498, "cells": [{"id": 29, "text": "GLYPH", "bbox": {"l": 136.8, "t": 636.19659, "r": 141.78, "b": 644.97134, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CUSTOMER: Bank customers using the internet", "bbox": {"l": 151.20016, "t": 636.0472, "r": 364.8681, "b": 645.26019, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH CUSTOMER: Bank customers using the internet"}, {"label": "list_item", "id": 14, "page_no": 54, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 135.63414001464844, "t": 647.4161987304688, "r": 325.77802, "b": 657.5957641601562, "coord_origin": "TOPLEFT"}, "confidence": 0.9528717994689941, "cells": [{"id": 31, "text": "GLYPH", "bbox": {"l": 136.8, "t": 648.1964, "r": 141.78, "b": 656.97115, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "PUBLIC: Anyone not already in a group", "bbox": {"l": 151.20016, "t": 648.047, "r": 325.77802, "b": 657.25999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH PUBLIC: Anyone not already in a group"}, {"label": "picture", "id": 15, "page_no": 54, "cluster": {"id": 15, "label": "picture", "bbox": {"l": 136.02655029296875, "t": 229.7416229248047, "r": 494.36669921875, "b": 487.56256103515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9840942025184631, "cells": [{"id": 33, "text": "Internet Banking Architecture", "bbox": {"l": 226.85941, "t": 237.95349, "r": 404.97986, "b": 250.65490999999997, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Web app sets global variable to user\u0092s login ID value", "bbox": {"l": 269.82669, "t": 277.10919, "r": 467.91561999999993, "b": 285.00751, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Web", "bbox": {"l": 283.75961, "t": 342.39901999999995, "r": 310.64789, "b": 354.69406000000004, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Server", "bbox": {"l": 278.34604, "t": 359.62216, "r": 316.58282, "b": 371.91720999999995, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "DB2", "bbox": {"l": 429.82370000000003, "t": 342.39901999999995, "r": 454.2041300000001, "b": 354.69406000000004, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Server", "bbox": {"l": 422.90341, "t": 359.62216, "r": 461.1402, "b": 371.91720999999995, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "LOGIN_ID", "bbox": {"l": 213.3264, "t": 346.5273700000001, "r": 250.46141, "b": 354.42569, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Authentication", "bbox": {"l": 204.0994, "t": 357.59979, "r": 259.81662, "b": 365.48889, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "\u0093", "bbox": {"l": 345.9191, "t": 347.57309, "r": 349.77597, "b": 355.46218999999996, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "WEBUSER", "bbox": {"l": 349.7944, "t": 347.57309, "r": 387.90744, "b": 355.47141, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "\u0094", "bbox": {"l": 387.9021, "t": 347.57309, "r": 391.75897, "b": 355.46218999999996, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "DB Connection", "bbox": {"l": 340.99799, "t": 358.64557, "r": 396.67065, "b": 366.53467, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Customer", "bbox": {"l": 141.8476, "t": 387.90149, "r": 191.04857, "b": 398.43259, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "All online banking", "bbox": {"l": 402.66541, "t": 412.43927, "r": 471.38903999999997, "b": 420.33759, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Only web server", "bbox": {"l": 261.18411, "t": 412.43927, "r": 323.3584, "b": 420.33759, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "All online banking ", "bbox": {"l": 402.66541, "t": 412.43927, "r": 473.3999, "b": 420.33759, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "customers run ", "bbox": {"l": 402.66571, "t": 423.51166, "r": 459.16913, "b": 431.40996999999993, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "database transactions ", "bbox": {"l": 402.66571, "t": 434.58405, "r": 488.49249, "b": 442.48236, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "with WEBUSER profile", "bbox": {"l": 402.66571, "t": 445.65643, "r": 487.45444000000003, "b": 453.55475, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Only web server ", "bbox": {"l": 261.18411, "t": 412.43927, "r": 325.42889, "b": 420.33759, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "understands true ", "bbox": {"l": 261.18405, "t": 423.51166, "r": 328.80505, "b": 431.40996999999993, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "identity of online ", "bbox": {"l": 261.18405, "t": 434.58405, "r": 328.98499, "b": 442.48236, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "banking customer ", "bbox": {"l": 261.18405, "t": 445.65643, "r": 331.50668, "b": 453.55475, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "CUSTOMER_LOGIN_ID variable used to validate RCAC", "bbox": {"l": 267.12009, "t": 470.87717, "r": 470.52832, "b": 478.77548, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 54, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.5806884765625, "t": 70.6917953491211, "r": 442.27869, "b": 81.22028350830078, "coord_origin": "TOPLEFT"}, "confidence": 0.883094310760498, "cells": [{"id": 2, "text": "A diagram of the internet banking architecture is shown in Figure 4-1:", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 442.27869, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}]}, "text": "A diagram of the internet banking architecture is shown in Figure 4-1:"}, {"label": "list_item", "id": 3, "page_no": 54, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 135.6310577392578, "t": 87.42381286621094, "r": 547.35461, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9767823815345764, "cells": [{"id": 3, "text": "GLYPH", "bbox": {"l": 136.79959, "t": 88.63823999999988, "r": 141.77959, "b": 97.41301999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "The row permission and column masks for the CUSTOMERS table are based on the ", "bbox": {"l": 151.19975, "t": 88.48883000000001, "r": 526.37085, "b": 97.70183999999995, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "group of which the user profile is part. If the user is a customer, their specific login ID also ", "bbox": {"l": 151.19975, "t": 100.48865, "r": 547.35461, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "is tested.", "bbox": {"l": 151.19975, "t": 112.48845999999992, "r": 191.15727, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The row permission and column masks for the CUSTOMERS table are based on the group of which the user profile is part. If the user is a customer, their specific login ID also is tested."}, {"label": "list_item", "id": 4, "page_no": 54, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.43284606933594, "t": 128.3446044921875, "r": 546.73322, "b": 162.75404357910156, "coord_origin": "TOPLEFT"}, "confidence": 0.9813671708106995, "cells": [{"id": 7, "text": "GLYPH", "bbox": {"l": 136.79959, "t": 129.67742999999996, "r": 141.77959, "b": 138.45221000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "The row permission and column mask for the ACCOUNTS table are based on the ", "bbox": {"l": 151.19975, "t": 129.52801999999997, "r": 513.82544, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CUSTOMERS table permission rules. A subquery is used to connect the accounts (child) ", "bbox": {"l": 151.19975, "t": 141.52783, "r": 546.73322, "b": 150.74084000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "with the customer (parent).", "bbox": {"l": 151.19975, "t": 153.52765, "r": 270.1192, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The row permission and column mask for the ACCOUNTS table are based on the CUSTOMERS table permission rules. A subquery is used to connect the accounts (child) with the customer (parent)."}, {"label": "list_item", "id": 5, "page_no": 54, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.4942169189453, "t": 169.17440795898438, "r": 546.22345, "b": 215.9951171875, "coord_origin": "TOPLEFT"}, "confidence": 0.9838805794715881, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.79959, "t": 170.65686000000005, "r": 141.77959, "b": 179.43164000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "The row permission for the TRANSACTIONS table is based on the ACCOUNTS table ", "bbox": {"l": 151.19975, "t": 170.50744999999995, "r": 530.51343, "b": 179.72046, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "permission rules and the CUSTOMERS table permission rules. A subquery is used to ", "bbox": {"l": 151.19975, "t": 182.50725999999997, "r": 531.53522, "b": 191.72028, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "connect the transactions (child) with the account (parent) and the account (child) with the ", "bbox": {"l": 151.19975, "t": 194.50707999999997, "r": 546.22345, "b": 203.72009000000003, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "customer (parent).", "bbox": {"l": 151.19975, "t": 206.50689999999997, "r": 232.83888, "b": 215.71991000000003, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The row permission for the TRANSACTIONS table is based on the ACCOUNTS table permission rules and the CUSTOMERS table permission rules. A subquery is used to connect the transactions (child) with the account (parent) and the account (child) with the customer (parent)."}, {"label": "caption", "id": 6, "page_no": 54, "cluster": {"id": 6, "label": "caption", "bbox": {"l": 136.07473754882812, "t": 489.646728515625, "r": 286.37646484375, "b": 498.6321105957031, "coord_origin": "TOPLEFT"}, "confidence": 0.9487526416778564, "cells": [{"id": 16, "text": "Figure 4-1 Internet banking example", "bbox": {"l": 136.8, "t": 490.0379, "r": 286.07849, "b": 498.36292, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-1 Internet banking example"}, {"label": "section_header", "id": 7, "page_no": 54, "cluster": {"id": 7, "label": "section_header", "bbox": {"l": 64.41133880615234, "t": 525.37890625, "r": 475.69338999999997, "b": 541.5180053710938, "coord_origin": "TOPLEFT"}, "confidence": 0.9669509530067444, "cells": [{"id": 17, "text": "4.2", "bbox": {"l": 64.800003, "t": 526.74072, "r": 87.239075, "b": 541.5037199999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Description of the users roles and responsibilities", "bbox": {"l": 91.726906, "t": 526.74072, "r": 475.69338999999997, "b": 541.5037199999999, "coord_origin": "TOPLEFT"}}]}, "text": "4.2 Description of the users roles and responsibilities"}, {"label": "text", "id": 8, "page_no": 54, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.86761474609375, "t": 557.9774169921875, "r": 533.13452, "b": 580.22142, "coord_origin": "TOPLEFT"}, "confidence": 0.9649704694747925, "cells": [{"id": 19, "text": "During the requirements gathering phase, the following groups of users are identified and ", "bbox": {"l": 136.8, "t": 559.0086200000001, "r": 533.13452, "b": 568.22162, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "codified:", "bbox": {"l": 136.8, "t": 571.00842, "r": 173.99463, "b": 580.22142, "coord_origin": "TOPLEFT"}}]}, "text": "During the requirements gathering phase, the following groups of users are identified and codified:"}, {"label": "list_item", "id": 9, "page_no": 54, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.75192260742188, "t": 587.4430541992188, "r": 395.10461, "b": 597.5853881835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9487041234970093, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.8, "t": 588.19739, "r": 141.78, "b": 596.97214, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "SECURITY: Security officer and security administrators", "bbox": {"l": 151.20016, "t": 588.04799, "r": 395.10461, "b": 597.26099, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH SECURITY: Security officer and security administrators"}, {"label": "list_item", "id": 10, "page_no": 54, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.67442321777344, "t": 599.6355590820312, "r": 266.76602, "b": 609.8877563476562, "coord_origin": "TOPLEFT"}, "confidence": 0.9388520121574402, "cells": [{"id": 23, "text": "GLYPH", "bbox": {"l": 136.8, "t": 600.19719, "r": 141.78, "b": 608.97194, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "DBE: Database engineers", "bbox": {"l": 151.20016, "t": 600.04779, "r": 266.76602, "b": 609.26079, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH DBE: Database engineers"}, {"label": "list_item", "id": 11, "page_no": 54, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.70191955566406, "t": 611.2393188476562, "r": 319.24329, "b": 621.26059, "coord_origin": "TOPLEFT"}, "confidence": 0.9382083415985107, "cells": [{"id": 25, "text": "GLYPH", "bbox": {"l": 136.8, "t": 612.19699, "r": 141.78, "b": 620.97174, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ADMIN: Bank business administrators", "bbox": {"l": 151.20016, "t": 612.04759, "r": 319.24329, "b": 621.26059, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH ADMIN: Bank business administrators"}, {"label": "list_item", "id": 12, "page_no": 54, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 135.53024291992188, "t": 623.206787109375, "r": 246.76636000000002, "b": 633.26039, "coord_origin": "TOPLEFT"}, "confidence": 0.9220486879348755, "cells": [{"id": 27, "text": "GLYPH", "bbox": {"l": 136.8, "t": 624.19679, "r": 141.78, "b": 632.97154, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "TELLER: Bank tellers", "bbox": {"l": 151.20016, "t": 624.04739, "r": 246.76636000000002, "b": 633.26039, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH TELLER: Bank tellers"}, {"label": "list_item", "id": 13, "page_no": 54, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 135.38711547851562, "t": 635.4190673828125, "r": 365.1325378417969, "b": 645.393798828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9496619701385498, "cells": [{"id": 29, "text": "GLYPH", "bbox": {"l": 136.8, "t": 636.19659, "r": 141.78, "b": 644.97134, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CUSTOMER: Bank customers using the internet", "bbox": {"l": 151.20016, "t": 636.0472, "r": 364.8681, "b": 645.26019, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH CUSTOMER: Bank customers using the internet"}, {"label": "list_item", "id": 14, "page_no": 54, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 135.63414001464844, "t": 647.4161987304688, "r": 325.77802, "b": 657.5957641601562, "coord_origin": "TOPLEFT"}, "confidence": 0.9528717994689941, "cells": [{"id": 31, "text": "GLYPH", "bbox": {"l": 136.8, "t": 648.1964, "r": 141.78, "b": 656.97115, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "PUBLIC: Anyone not already in a group", "bbox": {"l": 151.20016, "t": 648.047, "r": 325.77802, "b": 657.25999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH PUBLIC: Anyone not already in a group"}, {"label": "picture", "id": 15, "page_no": 54, "cluster": {"id": 15, "label": "picture", "bbox": {"l": 136.02655029296875, "t": 229.7416229248047, "r": 494.36669921875, "b": 487.56256103515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9840942025184631, "cells": [{"id": 33, "text": "Internet Banking Architecture", "bbox": {"l": 226.85941, "t": 237.95349, "r": 404.97986, "b": 250.65490999999997, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Web app sets global variable to user\u0092s login ID value", "bbox": {"l": 269.82669, "t": 277.10919, "r": 467.91561999999993, "b": 285.00751, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Web", "bbox": {"l": 283.75961, "t": 342.39901999999995, "r": 310.64789, "b": 354.69406000000004, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Server", "bbox": {"l": 278.34604, "t": 359.62216, "r": 316.58282, "b": 371.91720999999995, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "DB2", "bbox": {"l": 429.82370000000003, "t": 342.39901999999995, "r": 454.2041300000001, "b": 354.69406000000004, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Server", "bbox": {"l": 422.90341, "t": 359.62216, "r": 461.1402, "b": 371.91720999999995, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "LOGIN_ID", "bbox": {"l": 213.3264, "t": 346.5273700000001, "r": 250.46141, "b": 354.42569, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Authentication", "bbox": {"l": 204.0994, "t": 357.59979, "r": 259.81662, "b": 365.48889, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "\u0093", "bbox": {"l": 345.9191, "t": 347.57309, "r": 349.77597, "b": 355.46218999999996, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "WEBUSER", "bbox": {"l": 349.7944, "t": 347.57309, "r": 387.90744, "b": 355.47141, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "\u0094", "bbox": {"l": 387.9021, "t": 347.57309, "r": 391.75897, "b": 355.46218999999996, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "DB Connection", "bbox": {"l": 340.99799, "t": 358.64557, "r": 396.67065, "b": 366.53467, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Customer", "bbox": {"l": 141.8476, "t": 387.90149, "r": 191.04857, "b": 398.43259, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "All online banking", "bbox": {"l": 402.66541, "t": 412.43927, "r": 471.38903999999997, "b": 420.33759, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Only web server", "bbox": {"l": 261.18411, "t": 412.43927, "r": 323.3584, "b": 420.33759, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "All online banking ", "bbox": {"l": 402.66541, "t": 412.43927, "r": 473.3999, "b": 420.33759, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "customers run ", "bbox": {"l": 402.66571, "t": 423.51166, "r": 459.16913, "b": 431.40996999999993, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "database transactions ", "bbox": {"l": 402.66571, "t": 434.58405, "r": 488.49249, "b": 442.48236, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "with WEBUSER profile", "bbox": {"l": 402.66571, "t": 445.65643, "r": 487.45444000000003, "b": 453.55475, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Only web server ", "bbox": {"l": 261.18411, "t": 412.43927, "r": 325.42889, "b": 420.33759, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "understands true ", "bbox": {"l": 261.18405, "t": 423.51166, "r": 328.80505, "b": 431.40996999999993, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "identity of online ", "bbox": {"l": 261.18405, "t": 434.58405, "r": 328.98499, "b": 442.48236, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "banking customer ", "bbox": {"l": 261.18405, "t": 445.65643, "r": 331.50668, "b": 453.55475, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "CUSTOMER_LOGIN_ID variable used to validate RCAC", "bbox": {"l": 267.12009, "t": 470.87717, "r": 470.52832, "b": 478.77548, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 54, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.27481079101562, "t": 754.7271118164062, "r": 523.59357, "b": 763.9805908203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9535647034645081, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 54, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.5966186523438, "t": 754.2191772460938, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9146284461021423, "cells": [{"id": 1, "text": "39", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "39"}]}}, {"page_no": 55, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "40 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Based on their respective roles and responsibilities, the users (that is, a group) are controlled ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 547.18292, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "by row permissions and column masks. The chart that is shown in Figure 4-2 shows the rules ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 547.21271, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "for row and column access in this example.", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 326.89856, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Figure 4-2 Rules for row and column access", "bbox": {"l": 136.8, "t": 409.45801, "r": 317.22745, "b": 417.78302, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "CUSTOMERS", "bbox": {"l": 224.10969999999998, "t": 126.65734999999995, "r": 293.81296, "b": 138.39282000000003, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ACCOUNTS", "bbox": {"l": 334.76221, "t": 126.65734999999995, "r": 396.79272, "b": 138.39282000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "TRANSACTIONS", "bbox": {"l": 426.62415, "t": 126.65734999999995, "r": 513.33075, "b": 138.39282000000003, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "R", "bbox": {"l": 226.44310000000002, "t": 145.98406999999997, "r": 230.7845, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "ow", "bbox": {"l": 230.62950000000004, "t": 145.98406999999997, "r": 240.53235999999998, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Column", "bbox": {"l": 273.4537, "t": 145.98406999999997, "r": 298.51202, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Row", "bbox": {"l": 331.44345, "t": 145.98406999999997, "r": 345.53418, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Column", "bbox": {"l": 378.4899, "t": 145.98406999999997, "r": 403.54813, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Row", "bbox": {"l": 436.47955, "t": 145.98406999999997, "r": 450.57037, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Column", "bbox": {"l": 483.526, "t": 145.98406999999997, "r": 508.58422999999993, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "o", "bbox": {"l": 230.62950000000004, "t": 145.98406999999997, "r": 234.84297, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Permissions", "bbox": {"l": 214.22719999999998, "t": 155.59209999999996, "r": 252.80963, "b": 162.42798000000005, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Co u", "bbox": {"l": 273.4537, "t": 145.98406999999997, "r": 287.93063, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Masking", "bbox": {"l": 272.39001, "t": 155.59209999999996, "r": 299.58008, "b": 162.42798000000005, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "o", "bbox": {"l": 335.63129, "t": 145.98406999999997, "r": 339.84476, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Permissions", "bbox": {"l": 319.229, "t": 155.59209999999996, "r": 357.81146, "b": 162.42798000000005, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Co u", "bbox": {"l": 378.4899, "t": 145.98406999999997, "r": 392.96683, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Masking", "bbox": {"l": 377.42609, "t": 155.59209999999996, "r": 404.61615, "b": 162.42798000000005, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "o", "bbox": {"l": 440.66738999999995, "t": 145.98406999999997, "r": 444.88086, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Permissions", "bbox": {"l": 424.2652, "t": 155.59209999999996, "r": 462.84766, "b": 162.42798000000005, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Co u", "bbox": {"l": 483.526, "t": 145.98406999999997, "r": 498.00293, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Masking", "bbox": {"l": 482.46231000000006, "t": 155.59209999999996, "r": 509.6523700000001, "b": 162.42798000000005, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "SECURITY", "bbox": {"l": 150.4369, "t": 184.42291, "r": 194.79079, "b": 194.19275000000005, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "No Rows", "bbox": {"l": 213.2664, "t": 184.74456999999995, "r": 250.56985, "b": 193.55651999999998, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Yes", "bbox": {"l": 277.68503, "t": 184.74456999999995, "r": 291.3363, "b": 193.55651999999998, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "No Rows", "bbox": {"l": 318.52045, "t": 184.74456999999995, "r": 355.82394, "b": 193.55651999999998, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Yes", "bbox": {"l": 382.93912, "t": 184.74456999999995, "r": 396.59039, "b": 193.55651999999998, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "No Rows", "bbox": {"l": 423.74057, "t": 184.74456999999995, "r": 461.0440699999999, "b": 193.55651999999998, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "No", "bbox": {"l": 488.94882, "t": 184.74456999999995, "r": 501.1167, "b": 193.55651999999998, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "DBE", "bbox": {"l": 175.9668, "t": 222.82056, "r": 194.78658, "b": 232.59038999999996, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "All Rows", "bbox": {"l": 213.7811, "t": 223.07367, "r": 250.2054, "b": 231.88562000000002, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Yes", "bbox": {"l": 277.69119, "t": 223.07367, "r": 291.52158, "b": 231.88562000000002, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "All Rows", "bbox": {"l": 319.04132, "t": 223.07367, "r": 355.46152, "b": 231.88562000000002, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Yes", "bbox": {"l": 382.9473, "t": 223.07367, "r": 396.77768, "b": 231.88562000000002, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "All Rows", "bbox": {"l": 424.26346, "t": 223.07367, "r": 460.68365000000006, "b": 231.88562000000002, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "No", "bbox": {"l": 488.95798, "t": 223.07367, "r": 501.30292000000003, "b": 231.88562000000002, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "ADMIN", "bbox": {"l": 161.1087, "t": 261.25256, "r": 194.82318, "b": 271.02239999999995, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "All Rows", "bbox": {"l": 213.7811, "t": 261.40265, "r": 250.2054, "b": 270.2146, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "No", "bbox": {"l": 278.44574, "t": 261.40265, "r": 290.79065, "b": 270.2146, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "All Rows", "bbox": {"l": 319.04437, "t": 261.40265, "r": 355.46869, "b": 270.2146, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "No", "bbox": {"l": 383.70905, "t": 261.40265, "r": 396.05396, "b": 270.2146, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "All Rows", "bbox": {"l": 424.27371, "t": 261.40265, "r": 460.69803, "b": 270.2146, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "No", "bbox": {"l": 488.97235, "t": 261.40265, "r": 501.31726, "b": 270.2146, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "TELLER", "bbox": {"l": 162.241, "t": 299.6503000000001, "r": 194.78195, "b": 309.42014, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "All Rows", "bbox": {"l": 213.7811, "t": 299.69748, "r": 250.2054, "b": 308.50939999999997, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Yes", "bbox": {"l": 277.69119, "t": 299.69748, "r": 291.52158, "b": 308.50939999999997, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "All Rows", "bbox": {"l": 319.04132, "t": 299.69748, "r": 355.46152, "b": 308.50939999999997, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "No", "bbox": {"l": 383.70187, "t": 299.69748, "r": 396.04681, "b": 308.50939999999997, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "All Rows", "bbox": {"l": 424.26657, "t": 299.69748, "r": 460.69089, "b": 308.50939999999997, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "No", "bbox": {"l": 488.96520999999996, "t": 299.69748, "r": 501.31012, "b": 308.50939999999997, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "CUSTOMER", "bbox": {"l": 141.7897, "t": 338.04796999999996, "r": 194.80273, "b": 347.81781, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "Own ", "bbox": {"l": 221.9136, "t": 331.84998, "r": 244.41694999999999, "b": 340.66190000000006, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Rows", "bbox": {"l": 220.57534999999996, "t": 344.20312, "r": 243.25369, "b": 353.01505, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "No", "bbox": {"l": 278.42932, "t": 338.02655, "r": 290.77835, "b": 346.83847, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Own ", "bbox": {"l": 327.15533, "t": 331.84998, "r": 349.65869, "b": 340.66190000000006, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Rows", "bbox": {"l": 325.81708, "t": 344.20312, "r": 348.49545, "b": 353.01505, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "No", "bbox": {"l": 383.67105, "t": 338.02655, "r": 396.02008, "b": 346.83847, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "Own ", "bbox": {"l": 432.3630999999999, "t": 331.84998, "r": 454.86645999999996, "b": 340.66190000000006, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "Rows", "bbox": {"l": 431.02484000000004, "t": 344.20312, "r": 453.70322, "b": 353.01505, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "No", "bbox": {"l": 488.91278, "t": 338.02655, "r": 501.26181, "b": 346.83847, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "No Rows", "bbox": {"l": 213.2664, "t": 376.35559, "r": 250.56985, "b": 385.16751, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Yes", "bbox": {"l": 277.68503, "t": 376.35559, "r": 291.3363, "b": 385.16751, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "No Rows", "bbox": {"l": 318.52045, "t": 376.35559, "r": 355.82394, "b": 385.16751, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "Yes", "bbox": {"l": 382.93912, "t": 376.35559, "r": 396.59039, "b": 385.16751, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "No Rows", "bbox": {"l": 423.74057, "t": 376.35559, "r": 461.0440699999999, "b": 385.16751, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "No", "bbox": {"l": 488.94882, "t": 376.35559, "r": 501.1167, "b": 385.16751, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "PUBLIC", "bbox": {"l": 161.55479, "t": 376.4456799999999, "r": 194.79735, "b": 386.21552, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.19805908203125, "t": 754.2051391601562, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9140270948410034, "cells": [{"id": 0, "text": "40 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.33177947998047, "t": 754.7326049804688, "r": 334.42142, "b": 763.9369506835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9506687521934509, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 136.27764892578125, "t": 70.70075225830078, "r": 547.21271, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9673320651054382, "cells": [{"id": 2, "text": "Based on their respective roles and responsibilities, the users (that is, a group) are controlled ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 547.18292, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "by row permissions and column masks. The chart that is shown in Figure 4-2 shows the rules ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 547.21271, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "for row and column access in this example.", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 326.89856, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.13352966308594, "t": 408.7555236816406, "r": 317.8505554199219, "b": 418.05963134765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9396594762802124, "cells": [{"id": 5, "text": "Figure 4-2 Rules for row and column access", "bbox": {"l": 136.8, "t": 409.45801, "r": 317.22745, "b": 417.78302, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "picture", "bbox": {"l": 136.22354125976562, "t": 119.91455841064453, "r": 529.123291015625, "b": 404.9533386230469, "coord_origin": "TOPLEFT"}, "confidence": 0.8848159909248352, "cells": [{"id": 6, "text": "CUSTOMERS", "bbox": {"l": 224.10969999999998, "t": 126.65734999999995, "r": 293.81296, "b": 138.39282000000003, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ACCOUNTS", "bbox": {"l": 334.76221, "t": 126.65734999999995, "r": 396.79272, "b": 138.39282000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "TRANSACTIONS", "bbox": {"l": 426.62415, "t": 126.65734999999995, "r": 513.33075, "b": 138.39282000000003, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "R", "bbox": {"l": 226.44310000000002, "t": 145.98406999999997, "r": 230.7845, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "ow", "bbox": {"l": 230.62950000000004, "t": 145.98406999999997, "r": 240.53235999999998, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Column", "bbox": {"l": 273.4537, "t": 145.98406999999997, "r": 298.51202, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Row", "bbox": {"l": 331.44345, "t": 145.98406999999997, "r": 345.53418, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Column", "bbox": {"l": 378.4899, "t": 145.98406999999997, "r": 403.54813, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Row", "bbox": {"l": 436.47955, "t": 145.98406999999997, "r": 450.57037, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Column", "bbox": {"l": 483.526, "t": 145.98406999999997, "r": 508.58422999999993, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "o", "bbox": {"l": 230.62950000000004, "t": 145.98406999999997, "r": 234.84297, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Permissions", "bbox": {"l": 214.22719999999998, "t": 155.59209999999996, "r": 252.80963, "b": 162.42798000000005, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Co u", "bbox": {"l": 273.4537, "t": 145.98406999999997, "r": 287.93063, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Masking", "bbox": {"l": 272.39001, "t": 155.59209999999996, "r": 299.58008, "b": 162.42798000000005, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "o", "bbox": {"l": 335.63129, "t": 145.98406999999997, "r": 339.84476, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Permissions", "bbox": {"l": 319.229, "t": 155.59209999999996, "r": 357.81146, "b": 162.42798000000005, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Co u", "bbox": {"l": 378.4899, "t": 145.98406999999997, "r": 392.96683, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Masking", "bbox": {"l": 377.42609, "t": 155.59209999999996, "r": 404.61615, "b": 162.42798000000005, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "o", "bbox": {"l": 440.66738999999995, "t": 145.98406999999997, "r": 444.88086, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Permissions", "bbox": {"l": 424.2652, "t": 155.59209999999996, "r": 462.84766, "b": 162.42798000000005, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Co u", "bbox": {"l": 483.526, "t": 145.98406999999997, "r": 498.00293, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Masking", "bbox": {"l": 482.46231000000006, "t": 155.59209999999996, "r": 509.6523700000001, "b": 162.42798000000005, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "SECURITY", "bbox": {"l": 150.4369, "t": 184.42291, "r": 194.79079, "b": 194.19275000000005, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "No Rows", "bbox": {"l": 213.2664, "t": 184.74456999999995, "r": 250.56985, "b": 193.55651999999998, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Yes", "bbox": {"l": 277.68503, "t": 184.74456999999995, "r": 291.3363, "b": 193.55651999999998, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "No Rows", "bbox": {"l": 318.52045, "t": 184.74456999999995, "r": 355.82394, "b": 193.55651999999998, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Yes", "bbox": {"l": 382.93912, "t": 184.74456999999995, "r": 396.59039, "b": 193.55651999999998, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "No Rows", "bbox": {"l": 423.74057, "t": 184.74456999999995, "r": 461.0440699999999, "b": 193.55651999999998, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "No", "bbox": {"l": 488.94882, "t": 184.74456999999995, "r": 501.1167, "b": 193.55651999999998, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "DBE", "bbox": {"l": 175.9668, "t": 222.82056, "r": 194.78658, "b": 232.59038999999996, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "All Rows", "bbox": {"l": 213.7811, "t": 223.07367, "r": 250.2054, "b": 231.88562000000002, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Yes", "bbox": {"l": 277.69119, "t": 223.07367, "r": 291.52158, "b": 231.88562000000002, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "All Rows", "bbox": {"l": 319.04132, "t": 223.07367, "r": 355.46152, "b": 231.88562000000002, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Yes", "bbox": {"l": 382.9473, "t": 223.07367, "r": 396.77768, "b": 231.88562000000002, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "All Rows", "bbox": {"l": 424.26346, "t": 223.07367, "r": 460.68365000000006, "b": 231.88562000000002, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "No", "bbox": {"l": 488.95798, "t": 223.07367, "r": 501.30292000000003, "b": 231.88562000000002, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "ADMIN", "bbox": {"l": 161.1087, "t": 261.25256, "r": 194.82318, "b": 271.02239999999995, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "All Rows", "bbox": {"l": 213.7811, "t": 261.40265, "r": 250.2054, "b": 270.2146, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "No", "bbox": {"l": 278.44574, "t": 261.40265, "r": 290.79065, "b": 270.2146, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "All Rows", "bbox": {"l": 319.04437, "t": 261.40265, "r": 355.46869, "b": 270.2146, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "No", "bbox": {"l": 383.70905, "t": 261.40265, "r": 396.05396, "b": 270.2146, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "All Rows", "bbox": {"l": 424.27371, "t": 261.40265, "r": 460.69803, "b": 270.2146, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "No", "bbox": {"l": 488.97235, "t": 261.40265, "r": 501.31726, "b": 270.2146, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "TELLER", "bbox": {"l": 162.241, "t": 299.6503000000001, "r": 194.78195, "b": 309.42014, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "All Rows", "bbox": {"l": 213.7811, "t": 299.69748, "r": 250.2054, "b": 308.50939999999997, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Yes", "bbox": {"l": 277.69119, "t": 299.69748, "r": 291.52158, "b": 308.50939999999997, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "All Rows", "bbox": {"l": 319.04132, "t": 299.69748, "r": 355.46152, "b": 308.50939999999997, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "No", "bbox": {"l": 383.70187, "t": 299.69748, "r": 396.04681, "b": 308.50939999999997, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "All Rows", "bbox": {"l": 424.26657, "t": 299.69748, "r": 460.69089, "b": 308.50939999999997, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "No", "bbox": {"l": 488.96520999999996, "t": 299.69748, "r": 501.31012, "b": 308.50939999999997, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "CUSTOMER", "bbox": {"l": 141.7897, "t": 338.04796999999996, "r": 194.80273, "b": 347.81781, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "Own ", "bbox": {"l": 221.9136, "t": 331.84998, "r": 244.41694999999999, "b": 340.66190000000006, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Rows", "bbox": {"l": 220.57534999999996, "t": 344.20312, "r": 243.25369, "b": 353.01505, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "No", "bbox": {"l": 278.42932, "t": 338.02655, "r": 290.77835, "b": 346.83847, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Own ", "bbox": {"l": 327.15533, "t": 331.84998, "r": 349.65869, "b": 340.66190000000006, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Rows", "bbox": {"l": 325.81708, "t": 344.20312, "r": 348.49545, "b": 353.01505, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "No", "bbox": {"l": 383.67105, "t": 338.02655, "r": 396.02008, "b": 346.83847, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "Own ", "bbox": {"l": 432.3630999999999, "t": 331.84998, "r": 454.86645999999996, "b": 340.66190000000006, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "Rows", "bbox": {"l": 431.02484000000004, "t": 344.20312, "r": 453.70322, "b": 353.01505, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "No", "bbox": {"l": 488.91278, "t": 338.02655, "r": 501.26181, "b": 346.83847, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "No Rows", "bbox": {"l": 213.2664, "t": 376.35559, "r": 250.56985, "b": 385.16751, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Yes", "bbox": {"l": 277.68503, "t": 376.35559, "r": 291.3363, "b": 385.16751, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "No Rows", "bbox": {"l": 318.52045, "t": 376.35559, "r": 355.82394, "b": 385.16751, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "Yes", "bbox": {"l": 382.93912, "t": 376.35559, "r": 396.59039, "b": 385.16751, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "No Rows", "bbox": {"l": 423.74057, "t": 376.35559, "r": 461.0440699999999, "b": 385.16751, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "No", "bbox": {"l": 488.94882, "t": 376.35559, "r": 501.1167, "b": 385.16751, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "PUBLIC", "bbox": {"l": 161.55479, "t": 376.4456799999999, "r": 194.79735, "b": 386.21552, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 55, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.19805908203125, "t": 754.2051391601562, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9140270948410034, "cells": [{"id": 0, "text": "40 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "40"}, {"label": "page_footer", "id": 1, "page_no": 55, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.33177947998047, "t": 754.7326049804688, "r": 334.42142, "b": 763.9369506835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9506687521934509, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 2, "page_no": 55, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.27764892578125, "t": 70.70075225830078, "r": 547.21271, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9673320651054382, "cells": [{"id": 2, "text": "Based on their respective roles and responsibilities, the users (that is, a group) are controlled ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 547.18292, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "by row permissions and column masks. The chart that is shown in Figure 4-2 shows the rules ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 547.21271, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "for row and column access in this example.", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 326.89856, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Based on their respective roles and responsibilities, the users (that is, a group) are controlled by row permissions and column masks. The chart that is shown in Figure 4-2 shows the rules for row and column access in this example."}, {"label": "caption", "id": 3, "page_no": 55, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.13352966308594, "t": 408.7555236816406, "r": 317.8505554199219, "b": 418.05963134765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9396594762802124, "cells": [{"id": 5, "text": "Figure 4-2 Rules for row and column access", "bbox": {"l": 136.8, "t": 409.45801, "r": 317.22745, "b": 417.78302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-2 Rules for row and column access"}, {"label": "picture", "id": 4, "page_no": 55, "cluster": {"id": 4, "label": "picture", "bbox": {"l": 136.22354125976562, "t": 119.91455841064453, "r": 529.123291015625, "b": 404.9533386230469, "coord_origin": "TOPLEFT"}, "confidence": 0.8848159909248352, "cells": [{"id": 6, "text": "CUSTOMERS", "bbox": {"l": 224.10969999999998, "t": 126.65734999999995, "r": 293.81296, "b": 138.39282000000003, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ACCOUNTS", "bbox": {"l": 334.76221, "t": 126.65734999999995, "r": 396.79272, "b": 138.39282000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "TRANSACTIONS", "bbox": {"l": 426.62415, "t": 126.65734999999995, "r": 513.33075, "b": 138.39282000000003, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "R", "bbox": {"l": 226.44310000000002, "t": 145.98406999999997, "r": 230.7845, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "ow", "bbox": {"l": 230.62950000000004, "t": 145.98406999999997, "r": 240.53235999999998, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Column", "bbox": {"l": 273.4537, "t": 145.98406999999997, "r": 298.51202, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Row", "bbox": {"l": 331.44345, "t": 145.98406999999997, "r": 345.53418, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Column", "bbox": {"l": 378.4899, "t": 145.98406999999997, "r": 403.54813, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Row", "bbox": {"l": 436.47955, "t": 145.98406999999997, "r": 450.57037, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Column", "bbox": {"l": 483.526, "t": 145.98406999999997, "r": 508.58422999999993, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "o", "bbox": {"l": 230.62950000000004, "t": 145.98406999999997, "r": 234.84297, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Permissions", "bbox": {"l": 214.22719999999998, "t": 155.59209999999996, "r": 252.80963, "b": 162.42798000000005, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Co u", "bbox": {"l": 273.4537, "t": 145.98406999999997, "r": 287.93063, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Masking", "bbox": {"l": 272.39001, "t": 155.59209999999996, "r": 299.58008, "b": 162.42798000000005, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "o", "bbox": {"l": 335.63129, "t": 145.98406999999997, "r": 339.84476, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Permissions", "bbox": {"l": 319.229, "t": 155.59209999999996, "r": 357.81146, "b": 162.42798000000005, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Co u", "bbox": {"l": 378.4899, "t": 145.98406999999997, "r": 392.96683, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Masking", "bbox": {"l": 377.42609, "t": 155.59209999999996, "r": 404.61615, "b": 162.42798000000005, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "o", "bbox": {"l": 440.66738999999995, "t": 145.98406999999997, "r": 444.88086, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Permissions", "bbox": {"l": 424.2652, "t": 155.59209999999996, "r": 462.84766, "b": 162.42798000000005, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Co u", "bbox": {"l": 483.526, "t": 145.98406999999997, "r": 498.00293, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Masking", "bbox": {"l": 482.46231000000006, "t": 155.59209999999996, "r": 509.6523700000001, "b": 162.42798000000005, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "SECURITY", "bbox": {"l": 150.4369, "t": 184.42291, "r": 194.79079, "b": 194.19275000000005, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "No Rows", "bbox": {"l": 213.2664, "t": 184.74456999999995, "r": 250.56985, "b": 193.55651999999998, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Yes", "bbox": {"l": 277.68503, "t": 184.74456999999995, "r": 291.3363, "b": 193.55651999999998, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "No Rows", "bbox": {"l": 318.52045, "t": 184.74456999999995, "r": 355.82394, "b": 193.55651999999998, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Yes", "bbox": {"l": 382.93912, "t": 184.74456999999995, "r": 396.59039, "b": 193.55651999999998, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "No Rows", "bbox": {"l": 423.74057, "t": 184.74456999999995, "r": 461.0440699999999, "b": 193.55651999999998, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "No", "bbox": {"l": 488.94882, "t": 184.74456999999995, "r": 501.1167, "b": 193.55651999999998, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "DBE", "bbox": {"l": 175.9668, "t": 222.82056, "r": 194.78658, "b": 232.59038999999996, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "All Rows", "bbox": {"l": 213.7811, "t": 223.07367, "r": 250.2054, "b": 231.88562000000002, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Yes", "bbox": {"l": 277.69119, "t": 223.07367, "r": 291.52158, "b": 231.88562000000002, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "All Rows", "bbox": {"l": 319.04132, "t": 223.07367, "r": 355.46152, "b": 231.88562000000002, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Yes", "bbox": {"l": 382.9473, "t": 223.07367, "r": 396.77768, "b": 231.88562000000002, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "All Rows", "bbox": {"l": 424.26346, "t": 223.07367, "r": 460.68365000000006, "b": 231.88562000000002, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "No", "bbox": {"l": 488.95798, "t": 223.07367, "r": 501.30292000000003, "b": 231.88562000000002, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "ADMIN", "bbox": {"l": 161.1087, "t": 261.25256, "r": 194.82318, "b": 271.02239999999995, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "All Rows", "bbox": {"l": 213.7811, "t": 261.40265, "r": 250.2054, "b": 270.2146, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "No", "bbox": {"l": 278.44574, "t": 261.40265, "r": 290.79065, "b": 270.2146, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "All Rows", "bbox": {"l": 319.04437, "t": 261.40265, "r": 355.46869, "b": 270.2146, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "No", "bbox": {"l": 383.70905, "t": 261.40265, "r": 396.05396, "b": 270.2146, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "All Rows", "bbox": {"l": 424.27371, "t": 261.40265, "r": 460.69803, "b": 270.2146, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "No", "bbox": {"l": 488.97235, "t": 261.40265, "r": 501.31726, "b": 270.2146, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "TELLER", "bbox": {"l": 162.241, "t": 299.6503000000001, "r": 194.78195, "b": 309.42014, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "All Rows", "bbox": {"l": 213.7811, "t": 299.69748, "r": 250.2054, "b": 308.50939999999997, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Yes", "bbox": {"l": 277.69119, "t": 299.69748, "r": 291.52158, "b": 308.50939999999997, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "All Rows", "bbox": {"l": 319.04132, "t": 299.69748, "r": 355.46152, "b": 308.50939999999997, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "No", "bbox": {"l": 383.70187, "t": 299.69748, "r": 396.04681, "b": 308.50939999999997, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "All Rows", "bbox": {"l": 424.26657, "t": 299.69748, "r": 460.69089, "b": 308.50939999999997, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "No", "bbox": {"l": 488.96520999999996, "t": 299.69748, "r": 501.31012, "b": 308.50939999999997, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "CUSTOMER", "bbox": {"l": 141.7897, "t": 338.04796999999996, "r": 194.80273, "b": 347.81781, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "Own ", "bbox": {"l": 221.9136, "t": 331.84998, "r": 244.41694999999999, "b": 340.66190000000006, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Rows", "bbox": {"l": 220.57534999999996, "t": 344.20312, "r": 243.25369, "b": 353.01505, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "No", "bbox": {"l": 278.42932, "t": 338.02655, "r": 290.77835, "b": 346.83847, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Own ", "bbox": {"l": 327.15533, "t": 331.84998, "r": 349.65869, "b": 340.66190000000006, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Rows", "bbox": {"l": 325.81708, "t": 344.20312, "r": 348.49545, "b": 353.01505, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "No", "bbox": {"l": 383.67105, "t": 338.02655, "r": 396.02008, "b": 346.83847, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "Own ", "bbox": {"l": 432.3630999999999, "t": 331.84998, "r": 454.86645999999996, "b": 340.66190000000006, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "Rows", "bbox": {"l": 431.02484000000004, "t": 344.20312, "r": 453.70322, "b": 353.01505, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "No", "bbox": {"l": 488.91278, "t": 338.02655, "r": 501.26181, "b": 346.83847, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "No Rows", "bbox": {"l": 213.2664, "t": 376.35559, "r": 250.56985, "b": 385.16751, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Yes", "bbox": {"l": 277.68503, "t": 376.35559, "r": 291.3363, "b": 385.16751, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "No Rows", "bbox": {"l": 318.52045, "t": 376.35559, "r": 355.82394, "b": 385.16751, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "Yes", "bbox": {"l": 382.93912, "t": 376.35559, "r": 396.59039, "b": 385.16751, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "No Rows", "bbox": {"l": 423.74057, "t": 376.35559, "r": 461.0440699999999, "b": 385.16751, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "No", "bbox": {"l": 488.94882, "t": 376.35559, "r": 501.1167, "b": 385.16751, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "PUBLIC", "bbox": {"l": 161.55479, "t": 376.4456799999999, "r": 194.79735, "b": 386.21552, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 55, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.27764892578125, "t": 70.70075225830078, "r": 547.21271, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9673320651054382, "cells": [{"id": 2, "text": "Based on their respective roles and responsibilities, the users (that is, a group) are controlled ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 547.18292, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "by row permissions and column masks. The chart that is shown in Figure 4-2 shows the rules ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 547.21271, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "for row and column access in this example.", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 326.89856, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Based on their respective roles and responsibilities, the users (that is, a group) are controlled by row permissions and column masks. The chart that is shown in Figure 4-2 shows the rules for row and column access in this example."}, {"label": "caption", "id": 3, "page_no": 55, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.13352966308594, "t": 408.7555236816406, "r": 317.8505554199219, "b": 418.05963134765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9396594762802124, "cells": [{"id": 5, "text": "Figure 4-2 Rules for row and column access", "bbox": {"l": 136.8, "t": 409.45801, "r": 317.22745, "b": 417.78302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-2 Rules for row and column access"}, {"label": "picture", "id": 4, "page_no": 55, "cluster": {"id": 4, "label": "picture", "bbox": {"l": 136.22354125976562, "t": 119.91455841064453, "r": 529.123291015625, "b": 404.9533386230469, "coord_origin": "TOPLEFT"}, "confidence": 0.8848159909248352, "cells": [{"id": 6, "text": "CUSTOMERS", "bbox": {"l": 224.10969999999998, "t": 126.65734999999995, "r": 293.81296, "b": 138.39282000000003, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ACCOUNTS", "bbox": {"l": 334.76221, "t": 126.65734999999995, "r": 396.79272, "b": 138.39282000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "TRANSACTIONS", "bbox": {"l": 426.62415, "t": 126.65734999999995, "r": 513.33075, "b": 138.39282000000003, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "R", "bbox": {"l": 226.44310000000002, "t": 145.98406999999997, "r": 230.7845, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "ow", "bbox": {"l": 230.62950000000004, "t": 145.98406999999997, "r": 240.53235999999998, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Column", "bbox": {"l": 273.4537, "t": 145.98406999999997, "r": 298.51202, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Row", "bbox": {"l": 331.44345, "t": 145.98406999999997, "r": 345.53418, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Column", "bbox": {"l": 378.4899, "t": 145.98406999999997, "r": 403.54813, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Row", "bbox": {"l": 436.47955, "t": 145.98406999999997, "r": 450.57037, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Column", "bbox": {"l": 483.526, "t": 145.98406999999997, "r": 508.58422999999993, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "o", "bbox": {"l": 230.62950000000004, "t": 145.98406999999997, "r": 234.84297, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Permissions", "bbox": {"l": 214.22719999999998, "t": 155.59209999999996, "r": 252.80963, "b": 162.42798000000005, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Co u", "bbox": {"l": 273.4537, "t": 145.98406999999997, "r": 287.93063, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Masking", "bbox": {"l": 272.39001, "t": 155.59209999999996, "r": 299.58008, "b": 162.42798000000005, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "o", "bbox": {"l": 335.63129, "t": 145.98406999999997, "r": 339.84476, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Permissions", "bbox": {"l": 319.229, "t": 155.59209999999996, "r": 357.81146, "b": 162.42798000000005, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Co u", "bbox": {"l": 378.4899, "t": 145.98406999999997, "r": 392.96683, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Masking", "bbox": {"l": 377.42609, "t": 155.59209999999996, "r": 404.61615, "b": 162.42798000000005, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "o", "bbox": {"l": 440.66738999999995, "t": 145.98406999999997, "r": 444.88086, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Permissions", "bbox": {"l": 424.2652, "t": 155.59209999999996, "r": 462.84766, "b": 162.42798000000005, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Co u", "bbox": {"l": 483.526, "t": 145.98406999999997, "r": 498.00293, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Masking", "bbox": {"l": 482.46231000000006, "t": 155.59209999999996, "r": 509.6523700000001, "b": 162.42798000000005, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "SECURITY", "bbox": {"l": 150.4369, "t": 184.42291, "r": 194.79079, "b": 194.19275000000005, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "No Rows", "bbox": {"l": 213.2664, "t": 184.74456999999995, "r": 250.56985, "b": 193.55651999999998, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Yes", "bbox": {"l": 277.68503, "t": 184.74456999999995, "r": 291.3363, "b": 193.55651999999998, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "No Rows", "bbox": {"l": 318.52045, "t": 184.74456999999995, "r": 355.82394, "b": 193.55651999999998, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Yes", "bbox": {"l": 382.93912, "t": 184.74456999999995, "r": 396.59039, "b": 193.55651999999998, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "No Rows", "bbox": {"l": 423.74057, "t": 184.74456999999995, "r": 461.0440699999999, "b": 193.55651999999998, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "No", "bbox": {"l": 488.94882, "t": 184.74456999999995, "r": 501.1167, "b": 193.55651999999998, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "DBE", "bbox": {"l": 175.9668, "t": 222.82056, "r": 194.78658, "b": 232.59038999999996, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "All Rows", "bbox": {"l": 213.7811, "t": 223.07367, "r": 250.2054, "b": 231.88562000000002, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Yes", "bbox": {"l": 277.69119, "t": 223.07367, "r": 291.52158, "b": 231.88562000000002, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "All Rows", "bbox": {"l": 319.04132, "t": 223.07367, "r": 355.46152, "b": 231.88562000000002, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Yes", "bbox": {"l": 382.9473, "t": 223.07367, "r": 396.77768, "b": 231.88562000000002, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "All Rows", "bbox": {"l": 424.26346, "t": 223.07367, "r": 460.68365000000006, "b": 231.88562000000002, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "No", "bbox": {"l": 488.95798, "t": 223.07367, "r": 501.30292000000003, "b": 231.88562000000002, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "ADMIN", "bbox": {"l": 161.1087, "t": 261.25256, "r": 194.82318, "b": 271.02239999999995, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "All Rows", "bbox": {"l": 213.7811, "t": 261.40265, "r": 250.2054, "b": 270.2146, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "No", "bbox": {"l": 278.44574, "t": 261.40265, "r": 290.79065, "b": 270.2146, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "All Rows", "bbox": {"l": 319.04437, "t": 261.40265, "r": 355.46869, "b": 270.2146, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "No", "bbox": {"l": 383.70905, "t": 261.40265, "r": 396.05396, "b": 270.2146, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "All Rows", "bbox": {"l": 424.27371, "t": 261.40265, "r": 460.69803, "b": 270.2146, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "No", "bbox": {"l": 488.97235, "t": 261.40265, "r": 501.31726, "b": 270.2146, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "TELLER", "bbox": {"l": 162.241, "t": 299.6503000000001, "r": 194.78195, "b": 309.42014, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "All Rows", "bbox": {"l": 213.7811, "t": 299.69748, "r": 250.2054, "b": 308.50939999999997, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Yes", "bbox": {"l": 277.69119, "t": 299.69748, "r": 291.52158, "b": 308.50939999999997, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "All Rows", "bbox": {"l": 319.04132, "t": 299.69748, "r": 355.46152, "b": 308.50939999999997, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "No", "bbox": {"l": 383.70187, "t": 299.69748, "r": 396.04681, "b": 308.50939999999997, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "All Rows", "bbox": {"l": 424.26657, "t": 299.69748, "r": 460.69089, "b": 308.50939999999997, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "No", "bbox": {"l": 488.96520999999996, "t": 299.69748, "r": 501.31012, "b": 308.50939999999997, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "CUSTOMER", "bbox": {"l": 141.7897, "t": 338.04796999999996, "r": 194.80273, "b": 347.81781, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "Own ", "bbox": {"l": 221.9136, "t": 331.84998, "r": 244.41694999999999, "b": 340.66190000000006, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Rows", "bbox": {"l": 220.57534999999996, "t": 344.20312, "r": 243.25369, "b": 353.01505, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "No", "bbox": {"l": 278.42932, "t": 338.02655, "r": 290.77835, "b": 346.83847, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Own ", "bbox": {"l": 327.15533, "t": 331.84998, "r": 349.65869, "b": 340.66190000000006, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Rows", "bbox": {"l": 325.81708, "t": 344.20312, "r": 348.49545, "b": 353.01505, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "No", "bbox": {"l": 383.67105, "t": 338.02655, "r": 396.02008, "b": 346.83847, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "Own ", "bbox": {"l": 432.3630999999999, "t": 331.84998, "r": 454.86645999999996, "b": 340.66190000000006, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "Rows", "bbox": {"l": 431.02484000000004, "t": 344.20312, "r": 453.70322, "b": 353.01505, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "No", "bbox": {"l": 488.91278, "t": 338.02655, "r": 501.26181, "b": 346.83847, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "No Rows", "bbox": {"l": 213.2664, "t": 376.35559, "r": 250.56985, "b": 385.16751, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Yes", "bbox": {"l": 277.68503, "t": 376.35559, "r": 291.3363, "b": 385.16751, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "No Rows", "bbox": {"l": 318.52045, "t": 376.35559, "r": 355.82394, "b": 385.16751, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "Yes", "bbox": {"l": 382.93912, "t": 376.35559, "r": 396.59039, "b": 385.16751, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "No Rows", "bbox": {"l": 423.74057, "t": 376.35559, "r": 461.0440699999999, "b": 385.16751, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "No", "bbox": {"l": 488.94882, "t": 376.35559, "r": 501.1167, "b": 385.16751, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "PUBLIC", "bbox": {"l": 161.55479, "t": 376.4456799999999, "r": 194.79735, "b": 386.21552, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 55, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.19805908203125, "t": 754.2051391601562, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9140270948410034, "cells": [{"id": 0, "text": "40 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "40"}, {"label": "page_footer", "id": 1, "page_no": 55, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.33177947998047, "t": 754.7326049804688, "r": 334.42142, "b": 763.9369506835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9506687521934509, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 56, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "41", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "The chart that is shown in Figure 4-3 shows the column access that is allowed by group and ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 545.29602, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "lists the column masks by table.", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 277.30936, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 4-3 Column masks", "bbox": {"l": 136.8, "t": 402.138, "r": 244.67220999999998, "b": 410.46301, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "For the demonstration and testing of RCAC in this example, the following users interact with ", "bbox": {"l": 136.8, "t": 428.14871, "r": 543.45782, "b": 437.36169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "the database. Furthermore, the column masking rules are developed independently of the ", "bbox": {"l": 136.8, "t": 440.14853, "r": 535.67096, "b": 449.36151, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "row permissions. If a person does not have permission to access the row, the column mask ", "bbox": {"l": 136.8, "t": 452.14834999999994, "r": 541.92706, "b": 461.36133, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "processing does not occur.", "bbox": {"l": 136.8, "t": 464.14816, "r": 255.69651999999996, "b": 473.36115, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 481.27734, "r": 141.78, "b": 490.05212, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Hernando Bedoya is a DB2 for i database engineer with the user profile of HBEDOYA. He ", "bbox": {"l": 151.20016, "t": 481.12796, "r": 547.29358, "b": 490.34094, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "is part of the DBE group.", "bbox": {"l": 151.20016, "t": 493.12778, "r": 260.65955, "b": 502.34076, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "GLYPH", "bbox": {"l": 136.8, "t": 510.25696, "r": 141.78, "b": 519.03174, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Mike Cain is a DB2 for i database engineer with the user profile of MCAIN. He is part of ", "bbox": {"l": 151.20016, "t": 510.10757, "r": 538.92694, "b": 519.32056, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "the DBE group.", "bbox": {"l": 151.20016, "t": 522.10739, "r": 219.05766, "b": 531.32037, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 539.29636, "r": 141.78, "b": 548.07111, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Veronica G. Lucchess is a bank account administrator with the user profile of ", "bbox": {"l": 151.20016, "t": 539.14696, "r": 492.53729, "b": 548.35995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "VGLUCCHESS. She is part of the ADMIN group.", "bbox": {"l": 151.20016, "t": 551.14676, "r": 366.6041, "b": 560.35976, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "GLYPH", "bbox": {"l": 136.8, "t": 568.27597, "r": 141.78, "b": 577.05072, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Tom Q. Spenser is a bank teller with the user profile of TQSPENSER. He is part of the ", "bbox": {"l": 151.20016, "t": 568.12657, "r": 534.65118, "b": 577.33957, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "TELLER group.", "bbox": {"l": 151.20018, "t": 580.12637, "r": 219.6682, "b": 589.33937, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 597.25558, "r": 141.78001, "b": 606.03033, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "The IT security officer has the user profile of SECURITY. She is not part of any group.", "bbox": {"l": 151.20018, "t": 597.10619, "r": 529.1214, "b": 606.31918, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 614.29515, "r": 141.78099, "b": 623.0699, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "The online banking web application uses the user profile WEBUSER. This profile is part of ", "bbox": {"l": 151.20116, "t": 614.14575, "r": 547.33234, "b": 623.35875, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "the CUSTOMER group. Any future customer-facing applications can also use this group if ", "bbox": {"l": 151.20116, "t": 626.14555, "r": 547.30249, "b": 635.35855, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "needed.", "bbox": {"l": 151.20116, "t": 638.14536, "r": 187.36992, "b": 647.35835, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 655.27457, "r": 141.78099, "b": 664.04932, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Adam O. Olsen is a bank customer with a web application login ID of KLD72CQR8JG.", "bbox": {"l": 151.20116, "t": 655.12517, "r": 530.79578, "b": 664.33817, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "CUSTOMERS", "bbox": {"l": 287.80969, "t": 111.80242999999996, "r": 355.42447, "b": 123.18358999999998, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Row", "bbox": {"l": 223.74899, "t": 130.54552999999999, "r": 237.25998, "b": 137.17511000000002, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Permissions", "bbox": {"l": 211.90196, "t": 139.86339999999996, "r": 249.31949, "b": 146.49298, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Column", "bbox": {"l": 310.23877, "t": 130.54552999999999, "r": 334.52832, "b": 137.17511000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Maskin", "bbox": {"l": 309.20752, "t": 139.86339999999996, "r": 331.92926, "b": 146.49298, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "g", "bbox": {"l": 331.9368, "t": 139.86346000000003, "r": 335.58884, "b": 146.49303999999995, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "ACCOUNTS", "bbox": {"l": 428.2442, "t": 111.80242999999996, "r": 488.26617000000005, "b": 123.18358999999998, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Column", "bbox": {"l": 446.91339, "t": 130.54552999999999, "r": 471.20294, "b": 137.17511000000002, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Masking", "bbox": {"l": 445.88214, "t": 139.86339999999996, "r": 472.26285, "b": 146.49298, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "SECURITY", "bbox": {"l": 150.03751, "t": 173.64770999999996, "r": 193.05225, "b": 183.12256000000002, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "No Rows", "bbox": {"l": 212.634, "t": 175.52368, "r": 248.92102000000003, "b": 184.06952, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER", "bbox": {"l": 263.18381, "t": 156.68151999999998, "r": 373.63184, "b": 162.37212999999997, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "CUSTOMER_EMAIL", "bbox": {"l": 263.18381, "t": 164.66832999999997, "r": 314.60641, "b": 170.35895000000005, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CUSTOMER_LOGIN_ID", "bbox": {"l": 263.18381, "t": 172.65515000000005, "r": 323.65616, "b": 178.34576000000004, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "CUSTOMER_SECURITY_QUESTION", "bbox": {"l": 263.18381, "t": 180.64197000000001, "r": 355.06308, "b": 186.33258, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "ACCOUNT_NUMBER", "bbox": {"l": 427.81256, "t": 176.64855999999997, "r": 482.86053, "b": 182.33916999999997, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "g", "bbox": {"l": 468.61081, "t": 139.86346000000003, "r": 472.26285, "b": 146.49303999999995, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "DBE", "bbox": {"l": 174.7966, "t": 226.89313000000004, "r": 193.04816, "b": 236.36798, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER", "bbox": {"l": 263.18381, "t": 188.62872000000004, "r": 382.36545, "b": 194.31934, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "CUSTOMER_TAX_ID", "bbox": {"l": 263.18381, "t": 196.61554, "r": 316.47134, "b": 202.30615, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "All Rows", "bbox": {"l": 213.1331, "t": 227.43799, "r": 248.37787, "b": 235.98383, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER", "bbox": {"l": 263.18381, "t": 208.59569999999997, "r": 373.63184, "b": 214.28632000000005, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "CUSTOMER_EMAIL", "bbox": {"l": 263.18381, "t": 216.58252000000005, "r": 314.60641, "b": 222.27313000000004, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "CUSTOMER_LOGIN_ID", "bbox": {"l": 263.18381, "t": 224.56934, "r": 323.65616, "b": 230.25995, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ACCOUNT NUMBER", "bbox": {"l": 427.81161, "t": 228.56273999999996, "r": 482.91415, "b": 234.25336000000004, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "ADMIN", "bbox": {"l": 160.3871, "t": 261.00342, "r": 193.08365, "b": 270.47826999999995, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "CUSTOMER_SECURITY_QUESTION", "bbox": {"l": 263.18381, "t": 232.55615, "r": 355.06308, "b": 238.24676999999997, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER", "bbox": {"l": 263.18381, "t": 240.54296999999997, "r": 382.36545, "b": 246.23357999999996, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "CUSTOMER_TAX_ID", "bbox": {"l": 263.18381, "t": 248.52979000000005, "r": 316.47134, "b": 254.22040000000004, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "ACCOUNT_NUMBER", "bbox": {"l": 427.81161, "t": 228.56273999999996, "r": 482.9232799999999, "b": 234.25336000000004, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "All Rows", "bbox": {"l": 213.1331, "t": 263.04578000000004, "r": 248.45371999999998, "b": 271.59160999999995, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "None", "bbox": {"l": 315.53061, "t": 264.17065, "r": 330.12256, "b": 269.86127, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "None", "bbox": {"l": 448.08353, "t": 264.17065, "r": 462.67548, "b": 269.86127, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "TELLER", "bbox": {"l": 161.4852, "t": 293.44980000000004, "r": 193.04367, "b": 302.92464999999993, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "All Rows", "bbox": {"l": 213.1331, "t": 294.66019, "r": 248.45371999999998, "b": 303.20605, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "CUSTOMER_EMAIL", "bbox": {"l": 263.18381, "t": 279.81146, "r": 314.60641, "b": 285.50208, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "CUSTOMER_LOGIN_ID", "bbox": {"l": 263.18381, "t": 287.79828, "r": 323.65616, "b": 293.48892000000006, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "CUSTOMER_SECURITY_QUESTION", "bbox": {"l": 263.18381, "t": 295.7851299999999, "r": 355.06308, "b": 301.47577, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER", "bbox": {"l": 263.18381, "t": 303.77197, "r": 382.36545, "b": 309.46262, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "CUSTOMER TAX ID", "bbox": {"l": 263.18381, "t": 311.75882, "r": 316.46936, "b": 317.44946, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "None", "bbox": {"l": 448.07916000000006, "t": 295.7851299999999, "r": 462.67110999999994, "b": 301.47577, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "CUSTOMER", "bbox": {"l": 141.6514, "t": 324.798, "r": 193.06383, "b": 334.27286, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "_", "bbox": {"l": 294.03271, "t": 311.75864, "r": 297.34726, "b": 317.44928, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "_", "bbox": {"l": 307.37738, "t": 311.75864, "r": 310.69193, "b": 317.44928, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "Own Rows", "bbox": {"l": 208.8403, "t": 326.27468999999996, "r": 252.72676, "b": 334.82055999999994, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "None", "bbox": {"l": 315.53061, "t": 327.39941, "r": 330.12256, "b": 333.09006, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "None", "bbox": {"l": 448.08353, "t": 327.39941, "r": 462.67548, "b": 333.09006, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER", "bbox": {"l": 263.18353, "t": 343.04031, "r": 373.63156, "b": 348.73096, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "CUSTOMER_EMAIL", "bbox": {"l": 263.18353, "t": 351.0271599999999, "r": 314.60614, "b": 356.7178, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "CUSTOMER LOGIN ID", "bbox": {"l": 263.18381, "t": 359.0139199999999, "r": 323.6488, "b": 364.70456, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "No Rows", "bbox": {"l": 212.634, "t": 361.88251, "r": 248.92102000000003, "b": 370.42838, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "CUSTOMER_LOGIN_ID", "bbox": {"l": 263.18381, "t": 359.0139199999999, "r": 323.63718, "b": 364.70456, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "CUSTOMER_SECURITY_QUESTION", "bbox": {"l": 263.18381, "t": 367.00064, "r": 355.06308, "b": 372.69128, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER", "bbox": {"l": 263.18381, "t": 374.98749, "r": 382.36545, "b": 380.67813, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "CUSTOMER_TAX_ID", "bbox": {"l": 263.18381, "t": 382.97433, "r": 316.47134, "b": 388.66497999999996, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "ACCOUNT_NUMBER", "bbox": {"l": 427.81256, "t": 363.00723000000005, "r": 482.86053, "b": 368.69788, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "PUBLIC", "bbox": {"l": 160.8197, "t": 360.00649999999996, "r": 193.05859, "b": 369.48135, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 214.2675018310547, "t": 754.7578125, "r": 523.59357, "b": 763.9957885742188, "coord_origin": "TOPLEFT"}, "confidence": 0.9552486538887024, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.689697265625, "t": 754.2295532226562, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9034480452537537, "cells": [{"id": 1, "text": "41", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.74815368652344, "t": 70.60477447509766, "r": 545.29602, "b": 92.98249816894531, "coord_origin": "TOPLEFT"}, "confidence": 0.8913360834121704, "cells": [{"id": 2, "text": "The chart that is shown in Figure 4-3 shows the column access that is allowed by group and ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 545.29602, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "lists the column masks by table.", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 277.30936, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.09585571289062, "t": 401.38555908203125, "r": 245.08297729492188, "b": 410.9154052734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9149027466773987, "cells": [{"id": 4, "text": "Figure 4-3 Column masks", "bbox": {"l": 136.8, "t": 402.138, "r": 244.67220999999998, "b": 410.46301, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 136.05606079101562, "t": 427.2995300292969, "r": 543.45782, "b": 473.7316589355469, "coord_origin": "TOPLEFT"}, "confidence": 0.9834994673728943, "cells": [{"id": 5, "text": "For the demonstration and testing of RCAC in this example, the following users interact with ", "bbox": {"l": 136.8, "t": 428.14871, "r": 543.45782, "b": 437.36169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "the database. Furthermore, the column masking rules are developed independently of the ", "bbox": {"l": 136.8, "t": 440.14853, "r": 535.67096, "b": 449.36151, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "row permissions. If a person does not have permission to access the row, the column mask ", "bbox": {"l": 136.8, "t": 452.14834999999994, "r": 541.92706, "b": 461.36133, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "processing does not occur.", "bbox": {"l": 136.8, "t": 464.14816, "r": 255.69651999999996, "b": 473.36115, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 135.7457733154297, "t": 479.84906005859375, "r": 547.29358, "b": 502.5825500488281, "coord_origin": "TOPLEFT"}, "confidence": 0.9738782048225403, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 481.27734, "r": 141.78, "b": 490.05212, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Hernando Bedoya is a DB2 for i database engineer with the user profile of HBEDOYA. He ", "bbox": {"l": 151.20016, "t": 481.12796, "r": 547.29358, "b": 490.34094, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "is part of the DBE group.", "bbox": {"l": 151.20016, "t": 493.12778, "r": 260.65955, "b": 502.34076, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.60708618164062, "t": 509.2861328125, "r": 538.92694, "b": 531.83251953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9742493033409119, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.8, "t": 510.25696, "r": 141.78, "b": 519.03174, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Mike Cain is a DB2 for i database engineer with the user profile of MCAIN. He is part of ", "bbox": {"l": 151.20016, "t": 510.10757, "r": 538.92694, "b": 519.32056, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "the DBE group.", "bbox": {"l": 151.20016, "t": 522.10739, "r": 219.05766, "b": 531.32037, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.6043701171875, "t": 537.8555908203125, "r": 492.53729, "b": 560.4962768554688, "coord_origin": "TOPLEFT"}, "confidence": 0.9739224314689636, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 539.29636, "r": 141.78, "b": 548.07111, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Veronica G. Lucchess is a bank account administrator with the user profile of ", "bbox": {"l": 151.20016, "t": 539.14696, "r": 492.53729, "b": 548.35995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "VGLUCCHESS. She is part of the ADMIN group.", "bbox": {"l": 151.20016, "t": 551.14676, "r": 366.6041, "b": 560.35976, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.5557403564453, "t": 567.1375732421875, "r": 534.65118, "b": 589.821044921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9734449982643127, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.8, "t": 568.27597, "r": 141.78, "b": 577.05072, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Tom Q. Spenser is a bank teller with the user profile of TQSPENSER. He is part of the ", "bbox": {"l": 151.20016, "t": 568.12657, "r": 534.65118, "b": 577.33957, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "TELLER group.", "bbox": {"l": 151.20018, "t": 580.12637, "r": 219.6682, "b": 589.33937, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.36813354492188, "t": 595.9415893554688, "r": 529.1214, "b": 606.3484497070312, "coord_origin": "TOPLEFT"}, "confidence": 0.9539303779602051, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 597.25558, "r": 141.78001, "b": 606.03033, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "The IT security officer has the user profile of SECURITY. She is not part of any group.", "bbox": {"l": 151.20018, "t": 597.10619, "r": 529.1214, "b": 606.31918, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 135.52735900878906, "t": 613.2100219726562, "r": 547.33234, "b": 647.35835, "coord_origin": "TOPLEFT"}, "confidence": 0.9781912565231323, "cells": [{"id": 23, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 614.29515, "r": 141.78099, "b": 623.0699, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "The online banking web application uses the user profile WEBUSER. This profile is part of ", "bbox": {"l": 151.20116, "t": 614.14575, "r": 547.33234, "b": 623.35875, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "the CUSTOMER group. Any future customer-facing applications can also use this group if ", "bbox": {"l": 151.20116, "t": 626.14555, "r": 547.30249, "b": 635.35855, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "needed.", "bbox": {"l": 151.20116, "t": 638.14536, "r": 187.36992, "b": 647.35835, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 135.407958984375, "t": 653.871337890625, "r": 530.79578, "b": 664.398681640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9545347690582275, "cells": [{"id": 27, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 655.27457, "r": 141.78099, "b": 664.04932, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Adam O. Olsen is a bank customer with a web application login ID of KLD72CQR8JG.", "bbox": {"l": 151.20116, "t": 655.12517, "r": 530.79578, "b": 664.33817, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "table", "bbox": {"l": 135.74551391601562, "t": 107.74129486083984, "r": 529.2235107421875, "b": 398.3458557128906, "coord_origin": "TOPLEFT"}, "confidence": 0.8612171411514282, "cells": [{"id": 29, "text": "CUSTOMERS", "bbox": {"l": 287.80969, "t": 111.80242999999996, "r": 355.42447, "b": 123.18358999999998, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Row", "bbox": {"l": 223.74899, "t": 130.54552999999999, "r": 237.25998, "b": 137.17511000000002, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Permissions", "bbox": {"l": 211.90196, "t": 139.86339999999996, "r": 249.31949, "b": 146.49298, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Column", "bbox": {"l": 310.23877, "t": 130.54552999999999, "r": 334.52832, "b": 137.17511000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Maskin", "bbox": {"l": 309.20752, "t": 139.86339999999996, "r": 331.92926, "b": 146.49298, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "g", "bbox": {"l": 331.9368, "t": 139.86346000000003, "r": 335.58884, "b": 146.49303999999995, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "ACCOUNTS", "bbox": {"l": 428.2442, "t": 111.80242999999996, "r": 488.26617000000005, "b": 123.18358999999998, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Column", "bbox": {"l": 446.91339, "t": 130.54552999999999, "r": 471.20294, "b": 137.17511000000002, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Masking", "bbox": {"l": 445.88214, "t": 139.86339999999996, "r": 472.26285, "b": 146.49298, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "SECURITY", "bbox": {"l": 150.03751, "t": 173.64770999999996, "r": 193.05225, "b": 183.12256000000002, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "No Rows", "bbox": {"l": 212.634, "t": 175.52368, "r": 248.92102000000003, "b": 184.06952, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER", "bbox": {"l": 263.18381, "t": 156.68151999999998, "r": 373.63184, "b": 162.37212999999997, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "CUSTOMER_EMAIL", "bbox": {"l": 263.18381, "t": 164.66832999999997, "r": 314.60641, "b": 170.35895000000005, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CUSTOMER_LOGIN_ID", "bbox": {"l": 263.18381, "t": 172.65515000000005, "r": 323.65616, "b": 178.34576000000004, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "CUSTOMER_SECURITY_QUESTION", "bbox": {"l": 263.18381, "t": 180.64197000000001, "r": 355.06308, "b": 186.33258, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "ACCOUNT_NUMBER", "bbox": {"l": 427.81256, "t": 176.64855999999997, "r": 482.86053, "b": 182.33916999999997, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "g", "bbox": {"l": 468.61081, "t": 139.86346000000003, "r": 472.26285, "b": 146.49303999999995, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "DBE", "bbox": {"l": 174.7966, "t": 226.89313000000004, "r": 193.04816, "b": 236.36798, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER", "bbox": {"l": 263.18381, "t": 188.62872000000004, "r": 382.36545, "b": 194.31934, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "CUSTOMER_TAX_ID", "bbox": {"l": 263.18381, "t": 196.61554, "r": 316.47134, "b": 202.30615, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "All Rows", "bbox": {"l": 213.1331, "t": 227.43799, "r": 248.37787, "b": 235.98383, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER", "bbox": {"l": 263.18381, "t": 208.59569999999997, "r": 373.63184, "b": 214.28632000000005, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "CUSTOMER_EMAIL", "bbox": {"l": 263.18381, "t": 216.58252000000005, "r": 314.60641, "b": 222.27313000000004, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "CUSTOMER_LOGIN_ID", "bbox": {"l": 263.18381, "t": 224.56934, "r": 323.65616, "b": 230.25995, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ACCOUNT NUMBER", "bbox": {"l": 427.81161, "t": 228.56273999999996, "r": 482.91415, "b": 234.25336000000004, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "ADMIN", "bbox": {"l": 160.3871, "t": 261.00342, "r": 193.08365, "b": 270.47826999999995, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "CUSTOMER_SECURITY_QUESTION", "bbox": {"l": 263.18381, "t": 232.55615, "r": 355.06308, "b": 238.24676999999997, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER", "bbox": {"l": 263.18381, "t": 240.54296999999997, "r": 382.36545, "b": 246.23357999999996, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "CUSTOMER_TAX_ID", "bbox": {"l": 263.18381, "t": 248.52979000000005, "r": 316.47134, "b": 254.22040000000004, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "ACCOUNT_NUMBER", "bbox": {"l": 427.81161, "t": 228.56273999999996, "r": 482.9232799999999, "b": 234.25336000000004, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "All Rows", "bbox": {"l": 213.1331, "t": 263.04578000000004, "r": 248.45371999999998, "b": 271.59160999999995, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "None", "bbox": {"l": 315.53061, "t": 264.17065, "r": 330.12256, "b": 269.86127, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "None", "bbox": {"l": 448.08353, "t": 264.17065, "r": 462.67548, "b": 269.86127, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "TELLER", "bbox": {"l": 161.4852, "t": 293.44980000000004, "r": 193.04367, "b": 302.92464999999993, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "All Rows", "bbox": {"l": 213.1331, "t": 294.66019, "r": 248.45371999999998, "b": 303.20605, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "CUSTOMER_EMAIL", "bbox": {"l": 263.18381, "t": 279.81146, "r": 314.60641, "b": 285.50208, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "CUSTOMER_LOGIN_ID", "bbox": {"l": 263.18381, "t": 287.79828, "r": 323.65616, "b": 293.48892000000006, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "CUSTOMER_SECURITY_QUESTION", "bbox": {"l": 263.18381, "t": 295.7851299999999, "r": 355.06308, "b": 301.47577, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER", "bbox": {"l": 263.18381, "t": 303.77197, "r": 382.36545, "b": 309.46262, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "CUSTOMER TAX ID", "bbox": {"l": 263.18381, "t": 311.75882, "r": 316.46936, "b": 317.44946, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "None", "bbox": {"l": 448.07916000000006, "t": 295.7851299999999, "r": 462.67110999999994, "b": 301.47577, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "CUSTOMER", "bbox": {"l": 141.6514, "t": 324.798, "r": 193.06383, "b": 334.27286, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "_", "bbox": {"l": 294.03271, "t": 311.75864, "r": 297.34726, "b": 317.44928, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "_", "bbox": {"l": 307.37738, "t": 311.75864, "r": 310.69193, "b": 317.44928, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "Own Rows", "bbox": {"l": 208.8403, "t": 326.27468999999996, "r": 252.72676, "b": 334.82055999999994, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "None", "bbox": {"l": 315.53061, "t": 327.39941, "r": 330.12256, "b": 333.09006, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "None", "bbox": {"l": 448.08353, "t": 327.39941, "r": 462.67548, "b": 333.09006, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER", "bbox": {"l": 263.18353, "t": 343.04031, "r": 373.63156, "b": 348.73096, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "CUSTOMER_EMAIL", "bbox": {"l": 263.18353, "t": 351.0271599999999, "r": 314.60614, "b": 356.7178, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "CUSTOMER LOGIN ID", "bbox": {"l": 263.18381, "t": 359.0139199999999, "r": 323.6488, "b": 364.70456, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "No Rows", "bbox": {"l": 212.634, "t": 361.88251, "r": 248.92102000000003, "b": 370.42838, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "CUSTOMER_LOGIN_ID", "bbox": {"l": 263.18381, "t": 359.0139199999999, "r": 323.63718, "b": 364.70456, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "CUSTOMER_SECURITY_QUESTION", "bbox": {"l": 263.18381, "t": 367.00064, "r": 355.06308, "b": 372.69128, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER", "bbox": {"l": 263.18381, "t": 374.98749, "r": 382.36545, "b": 380.67813, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "CUSTOMER_TAX_ID", "bbox": {"l": 263.18381, "t": 382.97433, "r": 316.47134, "b": 388.66497999999996, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "ACCOUNT_NUMBER", "bbox": {"l": 427.81256, "t": 363.00723000000005, "r": 482.86053, "b": 368.69788, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "PUBLIC", "bbox": {"l": 160.8197, "t": 360.00649999999996, "r": 193.05859, "b": 369.48135, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {"12": {"label": "table", "id": 12, "page_no": 56, "cluster": {"id": 12, "label": "table", "bbox": {"l": 135.74551391601562, "t": 107.74129486083984, "r": 529.2235107421875, "b": 398.3458557128906, "coord_origin": "TOPLEFT"}, "confidence": 0.8612171411514282, "cells": [{"id": 29, "text": "CUSTOMERS", "bbox": {"l": 287.80969, "t": 111.80242999999996, "r": 355.42447, "b": 123.18358999999998, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Row", "bbox": {"l": 223.74899, "t": 130.54552999999999, "r": 237.25998, "b": 137.17511000000002, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Permissions", "bbox": {"l": 211.90196, "t": 139.86339999999996, "r": 249.31949, "b": 146.49298, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Column", "bbox": {"l": 310.23877, "t": 130.54552999999999, "r": 334.52832, "b": 137.17511000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Maskin", "bbox": {"l": 309.20752, "t": 139.86339999999996, "r": 331.92926, "b": 146.49298, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "g", "bbox": {"l": 331.9368, "t": 139.86346000000003, "r": 335.58884, "b": 146.49303999999995, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "ACCOUNTS", "bbox": {"l": 428.2442, "t": 111.80242999999996, "r": 488.26617000000005, "b": 123.18358999999998, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Column", "bbox": {"l": 446.91339, "t": 130.54552999999999, "r": 471.20294, "b": 137.17511000000002, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Masking", "bbox": {"l": 445.88214, "t": 139.86339999999996, "r": 472.26285, "b": 146.49298, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "SECURITY", "bbox": {"l": 150.03751, "t": 173.64770999999996, "r": 193.05225, "b": 183.12256000000002, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "No Rows", "bbox": {"l": 212.634, "t": 175.52368, "r": 248.92102000000003, "b": 184.06952, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER", "bbox": {"l": 263.18381, "t": 156.68151999999998, "r": 373.63184, "b": 162.37212999999997, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "CUSTOMER_EMAIL", "bbox": {"l": 263.18381, "t": 164.66832999999997, "r": 314.60641, "b": 170.35895000000005, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CUSTOMER_LOGIN_ID", "bbox": {"l": 263.18381, "t": 172.65515000000005, "r": 323.65616, "b": 178.34576000000004, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "CUSTOMER_SECURITY_QUESTION", "bbox": {"l": 263.18381, "t": 180.64197000000001, "r": 355.06308, "b": 186.33258, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "ACCOUNT_NUMBER", "bbox": {"l": 427.81256, "t": 176.64855999999997, "r": 482.86053, "b": 182.33916999999997, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "g", "bbox": {"l": 468.61081, "t": 139.86346000000003, "r": 472.26285, "b": 146.49303999999995, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "DBE", "bbox": {"l": 174.7966, "t": 226.89313000000004, "r": 193.04816, "b": 236.36798, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER", "bbox": {"l": 263.18381, "t": 188.62872000000004, "r": 382.36545, "b": 194.31934, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "CUSTOMER_TAX_ID", "bbox": {"l": 263.18381, "t": 196.61554, "r": 316.47134, "b": 202.30615, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "All Rows", "bbox": {"l": 213.1331, "t": 227.43799, "r": 248.37787, "b": 235.98383, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER", "bbox": {"l": 263.18381, "t": 208.59569999999997, "r": 373.63184, "b": 214.28632000000005, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "CUSTOMER_EMAIL", "bbox": {"l": 263.18381, "t": 216.58252000000005, "r": 314.60641, "b": 222.27313000000004, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "CUSTOMER_LOGIN_ID", "bbox": {"l": 263.18381, "t": 224.56934, "r": 323.65616, "b": 230.25995, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ACCOUNT NUMBER", "bbox": {"l": 427.81161, "t": 228.56273999999996, "r": 482.91415, "b": 234.25336000000004, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "ADMIN", "bbox": {"l": 160.3871, "t": 261.00342, "r": 193.08365, "b": 270.47826999999995, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "CUSTOMER_SECURITY_QUESTION", "bbox": {"l": 263.18381, "t": 232.55615, "r": 355.06308, "b": 238.24676999999997, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER", "bbox": {"l": 263.18381, "t": 240.54296999999997, "r": 382.36545, "b": 246.23357999999996, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "CUSTOMER_TAX_ID", "bbox": {"l": 263.18381, "t": 248.52979000000005, "r": 316.47134, "b": 254.22040000000004, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "ACCOUNT_NUMBER", "bbox": {"l": 427.81161, "t": 228.56273999999996, "r": 482.9232799999999, "b": 234.25336000000004, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "All Rows", "bbox": {"l": 213.1331, "t": 263.04578000000004, "r": 248.45371999999998, "b": 271.59160999999995, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "None", "bbox": {"l": 315.53061, "t": 264.17065, "r": 330.12256, "b": 269.86127, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "None", "bbox": {"l": 448.08353, "t": 264.17065, "r": 462.67548, "b": 269.86127, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "TELLER", "bbox": {"l": 161.4852, "t": 293.44980000000004, "r": 193.04367, "b": 302.92464999999993, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "All Rows", "bbox": {"l": 213.1331, "t": 294.66019, "r": 248.45371999999998, "b": 303.20605, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "CUSTOMER_EMAIL", "bbox": {"l": 263.18381, "t": 279.81146, "r": 314.60641, "b": 285.50208, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "CUSTOMER_LOGIN_ID", "bbox": {"l": 263.18381, "t": 287.79828, "r": 323.65616, "b": 293.48892000000006, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "CUSTOMER_SECURITY_QUESTION", "bbox": {"l": 263.18381, "t": 295.7851299999999, "r": 355.06308, "b": 301.47577, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER", "bbox": {"l": 263.18381, "t": 303.77197, "r": 382.36545, "b": 309.46262, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "CUSTOMER TAX ID", "bbox": {"l": 263.18381, "t": 311.75882, "r": 316.46936, "b": 317.44946, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "None", "bbox": {"l": 448.07916000000006, "t": 295.7851299999999, "r": 462.67110999999994, "b": 301.47577, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "CUSTOMER", "bbox": {"l": 141.6514, "t": 324.798, "r": 193.06383, "b": 334.27286, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "_", "bbox": {"l": 294.03271, "t": 311.75864, "r": 297.34726, "b": 317.44928, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "_", "bbox": {"l": 307.37738, "t": 311.75864, "r": 310.69193, "b": 317.44928, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "Own Rows", "bbox": {"l": 208.8403, "t": 326.27468999999996, "r": 252.72676, "b": 334.82055999999994, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "None", "bbox": {"l": 315.53061, "t": 327.39941, "r": 330.12256, "b": 333.09006, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "None", "bbox": {"l": 448.08353, "t": 327.39941, "r": 462.67548, "b": 333.09006, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER", "bbox": {"l": 263.18353, "t": 343.04031, "r": 373.63156, "b": 348.73096, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "CUSTOMER_EMAIL", "bbox": {"l": 263.18353, "t": 351.0271599999999, "r": 314.60614, "b": 356.7178, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "CUSTOMER LOGIN ID", "bbox": {"l": 263.18381, "t": 359.0139199999999, "r": 323.6488, "b": 364.70456, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "No Rows", "bbox": {"l": 212.634, "t": 361.88251, "r": 248.92102000000003, "b": 370.42838, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "CUSTOMER_LOGIN_ID", "bbox": {"l": 263.18381, "t": 359.0139199999999, "r": 323.63718, "b": 364.70456, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "CUSTOMER_SECURITY_QUESTION", "bbox": {"l": 263.18381, "t": 367.00064, "r": 355.06308, "b": 372.69128, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER", "bbox": {"l": 263.18381, "t": 374.98749, "r": 382.36545, "b": 380.67813, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "CUSTOMER_TAX_ID", "bbox": {"l": 263.18381, "t": 382.97433, "r": 316.47134, "b": 388.66497999999996, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "ACCOUNT_NUMBER", "bbox": {"l": 427.81256, "t": 363.00723000000005, "r": 482.86053, "b": 368.69788, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "PUBLIC", "bbox": {"l": 160.8197, "t": 360.00649999999996, "r": 193.05859, "b": 369.48135, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "ched", "ched", "nl", "fcel", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "fcel", "nl"], "num_rows": 7, "num_cols": 4, "table_cells": [{"bbox": {"l": 287.80969, "t": 111.80242999999996, "r": 355.42447, "b": 123.18358999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "CUSTOMERS", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 428.2442, "t": 111.80242999999996, "r": 488.26617000000005, "b": 123.18358999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "ACCOUNTS", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 150.03751, "t": 173.64770999999996, "r": 193.05225, "b": 183.12256000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "SECURITY", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 212.634, "t": 175.52368, "r": 248.92102000000003, "b": 184.06952, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "No Rows", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 263.18381, "t": 156.68151999999998, "r": 382.36545, "b": 202.30615, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER CUSTOMER_EMAIL CUSTOMER_LOGIN_ID CUSTOMER_SECURITY_QUESTION CUSTOMER_SECURITY_QUESTION_ANSWER CUSTOMER_TAX_ID", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 427.81256, "t": 176.64855999999997, "r": 482.86053, "b": 182.33916999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "ACCOUNT_NUMBER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 174.7966, "t": 226.89313000000004, "r": 193.04816, "b": 236.36798, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "DBE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 213.1331, "t": 227.43799, "r": 248.37787, "b": 235.98383, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "All Rows", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 263.18381, "t": 208.59569999999997, "r": 382.36545, "b": 254.22040000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER CUSTOMER_EMAIL CUSTOMER_LOGIN_ID CUSTOMER_SECURITY_QUESTION CUSTOMER_SECURITY_QUESTION_ANSWER CUSTOMER_TAX_ID", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 427.81161, "t": 228.56273999999996, "r": 482.9232799999999, "b": 234.25336000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "ACCOUNT NUMBER ACCOUNT_NUMBER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 160.3871, "t": 261.00342, "r": 193.08365, "b": 270.47826999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ADMIN", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 213.1331, "t": 263.04578000000004, "r": 248.45371999999998, "b": 271.59160999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "All Rows", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 315.53061, "t": 264.17065, "r": 330.12256, "b": 269.86127, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "None", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 448.08353, "t": 264.17065, "r": 462.67548, "b": 269.86127, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "None", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 161.4852, "t": 293.44980000000004, "r": 193.04367, "b": 302.92464999999993, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "TELLER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 213.1331, "t": 294.66019, "r": 248.45371999999998, "b": 303.20605, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "All Rows", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 263.18381, "t": 279.81146, "r": 382.36545, "b": 317.44946, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "CUSTOMER_EMAIL CUSTOMER_LOGIN_ID CUSTOMER_SECURITY_QUESTION CUSTOMER_SECURITY_QUESTION_ANSWER CUSTOMER TAX ID _ _", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 448.07916000000006, "t": 295.7851299999999, "r": 462.67110999999994, "b": 301.47577, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "None", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 141.6514, "t": 324.798, "r": 193.06383, "b": 334.27286, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CUSTOMER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 208.8403, "t": 326.27468999999996, "r": 252.72676, "b": 334.82055999999994, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Own Rows", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 315.53061, "t": 327.39941, "r": 330.12256, "b": 333.09006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "None", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 448.08353, "t": 327.39941, "r": 462.67548, "b": 333.09006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "None", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 263.18353, "t": 343.04031, "r": 382.36545, "b": 388.66497999999996, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER CUSTOMER_EMAIL CUSTOMER LOGIN ID CUSTOMER_LOGIN_ID CUSTOMER_SECURITY_QUESTION CUSTOMER_SECURITY_QUESTION_ANSWER CUSTOMER_TAX_ID", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 212.634, "t": 361.88251, "r": 248.92102000000003, "b": 370.42838, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "No Rows", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 427.81256, "t": 363.00723000000005, "r": 482.86053, "b": 368.69788, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "ACCOUNT_NUMBER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 160.8197, "t": 360.00649999999996, "r": 193.05859, "b": 369.48135, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PUBLIC", "column_header": false, "row_header": false, "row_section": false}]}}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 56, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.2675018310547, "t": 754.7578125, "r": 523.59357, "b": 763.9957885742188, "coord_origin": "TOPLEFT"}, "confidence": 0.9552486538887024, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 56, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.689697265625, "t": 754.2295532226562, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9034480452537537, "cells": [{"id": 1, "text": "41", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "41"}, {"label": "text", "id": 2, "page_no": 56, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.74815368652344, "t": 70.60477447509766, "r": 545.29602, "b": 92.98249816894531, "coord_origin": "TOPLEFT"}, "confidence": 0.8913360834121704, "cells": [{"id": 2, "text": "The chart that is shown in Figure 4-3 shows the column access that is allowed by group and ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 545.29602, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "lists the column masks by table.", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 277.30936, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "The chart that is shown in Figure 4-3 shows the column access that is allowed by group and lists the column masks by table."}, {"label": "caption", "id": 3, "page_no": 56, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.09585571289062, "t": 401.38555908203125, "r": 245.08297729492188, "b": 410.9154052734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9149027466773987, "cells": [{"id": 4, "text": "Figure 4-3 Column masks", "bbox": {"l": 136.8, "t": 402.138, "r": 244.67220999999998, "b": 410.46301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-3 Column masks"}, {"label": "text", "id": 4, "page_no": 56, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.05606079101562, "t": 427.2995300292969, "r": 543.45782, "b": 473.7316589355469, "coord_origin": "TOPLEFT"}, "confidence": 0.9834994673728943, "cells": [{"id": 5, "text": "For the demonstration and testing of RCAC in this example, the following users interact with ", "bbox": {"l": 136.8, "t": 428.14871, "r": 543.45782, "b": 437.36169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "the database. Furthermore, the column masking rules are developed independently of the ", "bbox": {"l": 136.8, "t": 440.14853, "r": 535.67096, "b": 449.36151, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "row permissions. If a person does not have permission to access the row, the column mask ", "bbox": {"l": 136.8, "t": 452.14834999999994, "r": 541.92706, "b": 461.36133, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "processing does not occur.", "bbox": {"l": 136.8, "t": 464.14816, "r": 255.69651999999996, "b": 473.36115, "coord_origin": "TOPLEFT"}}]}, "text": "For the demonstration and testing of RCAC in this example, the following users interact with the database. Furthermore, the column masking rules are developed independently of the row permissions. If a person does not have permission to access the row, the column mask processing does not occur."}, {"label": "list_item", "id": 5, "page_no": 56, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.7457733154297, "t": 479.84906005859375, "r": 547.29358, "b": 502.5825500488281, "coord_origin": "TOPLEFT"}, "confidence": 0.9738782048225403, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 481.27734, "r": 141.78, "b": 490.05212, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Hernando Bedoya is a DB2 for i database engineer with the user profile of HBEDOYA. He ", "bbox": {"l": 151.20016, "t": 481.12796, "r": 547.29358, "b": 490.34094, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "is part of the DBE group.", "bbox": {"l": 151.20016, "t": 493.12778, "r": 260.65955, "b": 502.34076, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Hernando Bedoya is a DB2 for i database engineer with the user profile of HBEDOYA. He is part of the DBE group."}, {"label": "list_item", "id": 6, "page_no": 56, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.60708618164062, "t": 509.2861328125, "r": 538.92694, "b": 531.83251953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9742493033409119, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.8, "t": 510.25696, "r": 141.78, "b": 519.03174, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Mike Cain is a DB2 for i database engineer with the user profile of MCAIN. He is part of ", "bbox": {"l": 151.20016, "t": 510.10757, "r": 538.92694, "b": 519.32056, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "the DBE group.", "bbox": {"l": 151.20016, "t": 522.10739, "r": 219.05766, "b": 531.32037, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Mike Cain is a DB2 for i database engineer with the user profile of MCAIN. He is part of the DBE group."}, {"label": "list_item", "id": 7, "page_no": 56, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.6043701171875, "t": 537.8555908203125, "r": 492.53729, "b": 560.4962768554688, "coord_origin": "TOPLEFT"}, "confidence": 0.9739224314689636, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 539.29636, "r": 141.78, "b": 548.07111, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Veronica G. Lucchess is a bank account administrator with the user profile of ", "bbox": {"l": 151.20016, "t": 539.14696, "r": 492.53729, "b": 548.35995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "VGLUCCHESS. She is part of the ADMIN group.", "bbox": {"l": 151.20016, "t": 551.14676, "r": 366.6041, "b": 560.35976, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Veronica G. Lucchess is a bank account administrator with the user profile of VGLUCCHESS. She is part of the ADMIN group."}, {"label": "list_item", "id": 8, "page_no": 56, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.5557403564453, "t": 567.1375732421875, "r": 534.65118, "b": 589.821044921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9734449982643127, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.8, "t": 568.27597, "r": 141.78, "b": 577.05072, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Tom Q. Spenser is a bank teller with the user profile of TQSPENSER. He is part of the ", "bbox": {"l": 151.20016, "t": 568.12657, "r": 534.65118, "b": 577.33957, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "TELLER group.", "bbox": {"l": 151.20018, "t": 580.12637, "r": 219.6682, "b": 589.33937, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Tom Q. Spenser is a bank teller with the user profile of TQSPENSER. He is part of the TELLER group."}, {"label": "list_item", "id": 9, "page_no": 56, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.36813354492188, "t": 595.9415893554688, "r": 529.1214, "b": 606.3484497070312, "coord_origin": "TOPLEFT"}, "confidence": 0.9539303779602051, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 597.25558, "r": 141.78001, "b": 606.03033, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "The IT security officer has the user profile of SECURITY. She is not part of any group.", "bbox": {"l": 151.20018, "t": 597.10619, "r": 529.1214, "b": 606.31918, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The IT security officer has the user profile of SECURITY. She is not part of any group."}, {"label": "list_item", "id": 10, "page_no": 56, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.52735900878906, "t": 613.2100219726562, "r": 547.33234, "b": 647.35835, "coord_origin": "TOPLEFT"}, "confidence": 0.9781912565231323, "cells": [{"id": 23, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 614.29515, "r": 141.78099, "b": 623.0699, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "The online banking web application uses the user profile WEBUSER. This profile is part of ", "bbox": {"l": 151.20116, "t": 614.14575, "r": 547.33234, "b": 623.35875, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "the CUSTOMER group. Any future customer-facing applications can also use this group if ", "bbox": {"l": 151.20116, "t": 626.14555, "r": 547.30249, "b": 635.35855, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "needed.", "bbox": {"l": 151.20116, "t": 638.14536, "r": 187.36992, "b": 647.35835, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The online banking web application uses the user profile WEBUSER. This profile is part of the CUSTOMER group. Any future customer-facing applications can also use this group if needed."}, {"label": "list_item", "id": 11, "page_no": 56, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.407958984375, "t": 653.871337890625, "r": 530.79578, "b": 664.398681640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9545347690582275, "cells": [{"id": 27, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 655.27457, "r": 141.78099, "b": 664.04932, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Adam O. Olsen is a bank customer with a web application login ID of KLD72CQR8JG.", "bbox": {"l": 151.20116, "t": 655.12517, "r": 530.79578, "b": 664.33817, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Adam O. Olsen is a bank customer with a web application login ID of KLD72CQR8JG."}, {"label": "table", "id": 12, "page_no": 56, "cluster": {"id": 12, "label": "table", "bbox": {"l": 135.74551391601562, "t": 107.74129486083984, "r": 529.2235107421875, "b": 398.3458557128906, "coord_origin": "TOPLEFT"}, "confidence": 0.8612171411514282, "cells": [{"id": 29, "text": "CUSTOMERS", "bbox": {"l": 287.80969, "t": 111.80242999999996, "r": 355.42447, "b": 123.18358999999998, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Row", "bbox": {"l": 223.74899, "t": 130.54552999999999, "r": 237.25998, "b": 137.17511000000002, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Permissions", "bbox": {"l": 211.90196, "t": 139.86339999999996, "r": 249.31949, "b": 146.49298, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Column", "bbox": {"l": 310.23877, "t": 130.54552999999999, "r": 334.52832, "b": 137.17511000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Maskin", "bbox": {"l": 309.20752, "t": 139.86339999999996, "r": 331.92926, "b": 146.49298, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "g", "bbox": {"l": 331.9368, "t": 139.86346000000003, "r": 335.58884, "b": 146.49303999999995, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "ACCOUNTS", "bbox": {"l": 428.2442, "t": 111.80242999999996, "r": 488.26617000000005, "b": 123.18358999999998, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Column", "bbox": {"l": 446.91339, "t": 130.54552999999999, "r": 471.20294, "b": 137.17511000000002, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Masking", "bbox": {"l": 445.88214, "t": 139.86339999999996, "r": 472.26285, "b": 146.49298, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "SECURITY", "bbox": {"l": 150.03751, "t": 173.64770999999996, "r": 193.05225, "b": 183.12256000000002, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "No Rows", "bbox": {"l": 212.634, "t": 175.52368, "r": 248.92102000000003, "b": 184.06952, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER", "bbox": {"l": 263.18381, "t": 156.68151999999998, "r": 373.63184, "b": 162.37212999999997, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "CUSTOMER_EMAIL", "bbox": {"l": 263.18381, "t": 164.66832999999997, "r": 314.60641, "b": 170.35895000000005, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CUSTOMER_LOGIN_ID", "bbox": {"l": 263.18381, "t": 172.65515000000005, "r": 323.65616, "b": 178.34576000000004, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "CUSTOMER_SECURITY_QUESTION", "bbox": {"l": 263.18381, "t": 180.64197000000001, "r": 355.06308, "b": 186.33258, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "ACCOUNT_NUMBER", "bbox": {"l": 427.81256, "t": 176.64855999999997, "r": 482.86053, "b": 182.33916999999997, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "g", "bbox": {"l": 468.61081, "t": 139.86346000000003, "r": 472.26285, "b": 146.49303999999995, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "DBE", "bbox": {"l": 174.7966, "t": 226.89313000000004, "r": 193.04816, "b": 236.36798, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER", "bbox": {"l": 263.18381, "t": 188.62872000000004, "r": 382.36545, "b": 194.31934, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "CUSTOMER_TAX_ID", "bbox": {"l": 263.18381, "t": 196.61554, "r": 316.47134, "b": 202.30615, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "All Rows", "bbox": {"l": 213.1331, "t": 227.43799, "r": 248.37787, "b": 235.98383, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER", "bbox": {"l": 263.18381, "t": 208.59569999999997, "r": 373.63184, "b": 214.28632000000005, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "CUSTOMER_EMAIL", "bbox": {"l": 263.18381, "t": 216.58252000000005, "r": 314.60641, "b": 222.27313000000004, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "CUSTOMER_LOGIN_ID", "bbox": {"l": 263.18381, "t": 224.56934, "r": 323.65616, "b": 230.25995, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ACCOUNT NUMBER", "bbox": {"l": 427.81161, "t": 228.56273999999996, "r": 482.91415, "b": 234.25336000000004, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "ADMIN", "bbox": {"l": 160.3871, "t": 261.00342, "r": 193.08365, "b": 270.47826999999995, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "CUSTOMER_SECURITY_QUESTION", "bbox": {"l": 263.18381, "t": 232.55615, "r": 355.06308, "b": 238.24676999999997, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER", "bbox": {"l": 263.18381, "t": 240.54296999999997, "r": 382.36545, "b": 246.23357999999996, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "CUSTOMER_TAX_ID", "bbox": {"l": 263.18381, "t": 248.52979000000005, "r": 316.47134, "b": 254.22040000000004, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "ACCOUNT_NUMBER", "bbox": {"l": 427.81161, "t": 228.56273999999996, "r": 482.9232799999999, "b": 234.25336000000004, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "All Rows", "bbox": {"l": 213.1331, "t": 263.04578000000004, "r": 248.45371999999998, "b": 271.59160999999995, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "None", "bbox": {"l": 315.53061, "t": 264.17065, "r": 330.12256, "b": 269.86127, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "None", "bbox": {"l": 448.08353, "t": 264.17065, "r": 462.67548, "b": 269.86127, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "TELLER", "bbox": {"l": 161.4852, "t": 293.44980000000004, "r": 193.04367, "b": 302.92464999999993, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "All Rows", "bbox": {"l": 213.1331, "t": 294.66019, "r": 248.45371999999998, "b": 303.20605, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "CUSTOMER_EMAIL", "bbox": {"l": 263.18381, "t": 279.81146, "r": 314.60641, "b": 285.50208, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "CUSTOMER_LOGIN_ID", "bbox": {"l": 263.18381, "t": 287.79828, "r": 323.65616, "b": 293.48892000000006, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "CUSTOMER_SECURITY_QUESTION", "bbox": {"l": 263.18381, "t": 295.7851299999999, "r": 355.06308, "b": 301.47577, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER", "bbox": {"l": 263.18381, "t": 303.77197, "r": 382.36545, "b": 309.46262, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "CUSTOMER TAX ID", "bbox": {"l": 263.18381, "t": 311.75882, "r": 316.46936, "b": 317.44946, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "None", "bbox": {"l": 448.07916000000006, "t": 295.7851299999999, "r": 462.67110999999994, "b": 301.47577, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "CUSTOMER", "bbox": {"l": 141.6514, "t": 324.798, "r": 193.06383, "b": 334.27286, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "_", "bbox": {"l": 294.03271, "t": 311.75864, "r": 297.34726, "b": 317.44928, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "_", "bbox": {"l": 307.37738, "t": 311.75864, "r": 310.69193, "b": 317.44928, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "Own Rows", "bbox": {"l": 208.8403, "t": 326.27468999999996, "r": 252.72676, "b": 334.82055999999994, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "None", "bbox": {"l": 315.53061, "t": 327.39941, "r": 330.12256, "b": 333.09006, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "None", "bbox": {"l": 448.08353, "t": 327.39941, "r": 462.67548, "b": 333.09006, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER", "bbox": {"l": 263.18353, "t": 343.04031, "r": 373.63156, "b": 348.73096, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "CUSTOMER_EMAIL", "bbox": {"l": 263.18353, "t": 351.0271599999999, "r": 314.60614, "b": 356.7178, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "CUSTOMER LOGIN ID", "bbox": {"l": 263.18381, "t": 359.0139199999999, "r": 323.6488, "b": 364.70456, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "No Rows", "bbox": {"l": 212.634, "t": 361.88251, "r": 248.92102000000003, "b": 370.42838, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "CUSTOMER_LOGIN_ID", "bbox": {"l": 263.18381, "t": 359.0139199999999, "r": 323.63718, "b": 364.70456, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "CUSTOMER_SECURITY_QUESTION", "bbox": {"l": 263.18381, "t": 367.00064, "r": 355.06308, "b": 372.69128, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER", "bbox": {"l": 263.18381, "t": 374.98749, "r": 382.36545, "b": 380.67813, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "CUSTOMER_TAX_ID", "bbox": {"l": 263.18381, "t": 382.97433, "r": 316.47134, "b": 388.66497999999996, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "ACCOUNT_NUMBER", "bbox": {"l": 427.81256, "t": 363.00723000000005, "r": 482.86053, "b": 368.69788, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "PUBLIC", "bbox": {"l": 160.8197, "t": 360.00649999999996, "r": 193.05859, "b": 369.48135, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "ched", "ched", "nl", "fcel", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "fcel", "nl"], "num_rows": 7, "num_cols": 4, "table_cells": [{"bbox": {"l": 287.80969, "t": 111.80242999999996, "r": 355.42447, "b": 123.18358999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "CUSTOMERS", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 428.2442, "t": 111.80242999999996, "r": 488.26617000000005, "b": 123.18358999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "ACCOUNTS", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 150.03751, "t": 173.64770999999996, "r": 193.05225, "b": 183.12256000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "SECURITY", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 212.634, "t": 175.52368, "r": 248.92102000000003, "b": 184.06952, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "No Rows", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 263.18381, "t": 156.68151999999998, "r": 382.36545, "b": 202.30615, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER CUSTOMER_EMAIL CUSTOMER_LOGIN_ID CUSTOMER_SECURITY_QUESTION CUSTOMER_SECURITY_QUESTION_ANSWER CUSTOMER_TAX_ID", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 427.81256, "t": 176.64855999999997, "r": 482.86053, "b": 182.33916999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "ACCOUNT_NUMBER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 174.7966, "t": 226.89313000000004, "r": 193.04816, "b": 236.36798, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "DBE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 213.1331, "t": 227.43799, "r": 248.37787, "b": 235.98383, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "All Rows", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 263.18381, "t": 208.59569999999997, "r": 382.36545, "b": 254.22040000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER CUSTOMER_EMAIL CUSTOMER_LOGIN_ID CUSTOMER_SECURITY_QUESTION CUSTOMER_SECURITY_QUESTION_ANSWER CUSTOMER_TAX_ID", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 427.81161, "t": 228.56273999999996, "r": 482.9232799999999, "b": 234.25336000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "ACCOUNT NUMBER ACCOUNT_NUMBER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 160.3871, "t": 261.00342, "r": 193.08365, "b": 270.47826999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ADMIN", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 213.1331, "t": 263.04578000000004, "r": 248.45371999999998, "b": 271.59160999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "All Rows", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 315.53061, "t": 264.17065, "r": 330.12256, "b": 269.86127, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "None", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 448.08353, "t": 264.17065, "r": 462.67548, "b": 269.86127, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "None", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 161.4852, "t": 293.44980000000004, "r": 193.04367, "b": 302.92464999999993, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "TELLER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 213.1331, "t": 294.66019, "r": 248.45371999999998, "b": 303.20605, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "All Rows", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 263.18381, "t": 279.81146, "r": 382.36545, "b": 317.44946, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "CUSTOMER_EMAIL CUSTOMER_LOGIN_ID CUSTOMER_SECURITY_QUESTION CUSTOMER_SECURITY_QUESTION_ANSWER CUSTOMER TAX ID _ _", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 448.07916000000006, "t": 295.7851299999999, "r": 462.67110999999994, "b": 301.47577, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "None", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 141.6514, "t": 324.798, "r": 193.06383, "b": 334.27286, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CUSTOMER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 208.8403, "t": 326.27468999999996, "r": 252.72676, "b": 334.82055999999994, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Own Rows", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 315.53061, "t": 327.39941, "r": 330.12256, "b": 333.09006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "None", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 448.08353, "t": 327.39941, "r": 462.67548, "b": 333.09006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "None", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 263.18353, "t": 343.04031, "r": 382.36545, "b": 388.66497999999996, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER CUSTOMER_EMAIL CUSTOMER LOGIN ID CUSTOMER_LOGIN_ID CUSTOMER_SECURITY_QUESTION CUSTOMER_SECURITY_QUESTION_ANSWER CUSTOMER_TAX_ID", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 212.634, "t": 361.88251, "r": 248.92102000000003, "b": 370.42838, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "No Rows", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 427.81256, "t": 363.00723000000005, "r": 482.86053, "b": 368.69788, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "ACCOUNT_NUMBER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 160.8197, "t": 360.00649999999996, "r": 193.05859, "b": 369.48135, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PUBLIC", "column_header": false, "row_header": false, "row_section": false}]}], "body": [{"label": "text", "id": 2, "page_no": 56, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.74815368652344, "t": 70.60477447509766, "r": 545.29602, "b": 92.98249816894531, "coord_origin": "TOPLEFT"}, "confidence": 0.8913360834121704, "cells": [{"id": 2, "text": "The chart that is shown in Figure 4-3 shows the column access that is allowed by group and ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 545.29602, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "lists the column masks by table.", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 277.30936, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "The chart that is shown in Figure 4-3 shows the column access that is allowed by group and lists the column masks by table."}, {"label": "caption", "id": 3, "page_no": 56, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.09585571289062, "t": 401.38555908203125, "r": 245.08297729492188, "b": 410.9154052734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9149027466773987, "cells": [{"id": 4, "text": "Figure 4-3 Column masks", "bbox": {"l": 136.8, "t": 402.138, "r": 244.67220999999998, "b": 410.46301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-3 Column masks"}, {"label": "text", "id": 4, "page_no": 56, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.05606079101562, "t": 427.2995300292969, "r": 543.45782, "b": 473.7316589355469, "coord_origin": "TOPLEFT"}, "confidence": 0.9834994673728943, "cells": [{"id": 5, "text": "For the demonstration and testing of RCAC in this example, the following users interact with ", "bbox": {"l": 136.8, "t": 428.14871, "r": 543.45782, "b": 437.36169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "the database. Furthermore, the column masking rules are developed independently of the ", "bbox": {"l": 136.8, "t": 440.14853, "r": 535.67096, "b": 449.36151, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "row permissions. If a person does not have permission to access the row, the column mask ", "bbox": {"l": 136.8, "t": 452.14834999999994, "r": 541.92706, "b": 461.36133, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "processing does not occur.", "bbox": {"l": 136.8, "t": 464.14816, "r": 255.69651999999996, "b": 473.36115, "coord_origin": "TOPLEFT"}}]}, "text": "For the demonstration and testing of RCAC in this example, the following users interact with the database. Furthermore, the column masking rules are developed independently of the row permissions. If a person does not have permission to access the row, the column mask processing does not occur."}, {"label": "list_item", "id": 5, "page_no": 56, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.7457733154297, "t": 479.84906005859375, "r": 547.29358, "b": 502.5825500488281, "coord_origin": "TOPLEFT"}, "confidence": 0.9738782048225403, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 481.27734, "r": 141.78, "b": 490.05212, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Hernando Bedoya is a DB2 for i database engineer with the user profile of HBEDOYA. He ", "bbox": {"l": 151.20016, "t": 481.12796, "r": 547.29358, "b": 490.34094, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "is part of the DBE group.", "bbox": {"l": 151.20016, "t": 493.12778, "r": 260.65955, "b": 502.34076, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Hernando Bedoya is a DB2 for i database engineer with the user profile of HBEDOYA. He is part of the DBE group."}, {"label": "list_item", "id": 6, "page_no": 56, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.60708618164062, "t": 509.2861328125, "r": 538.92694, "b": 531.83251953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9742493033409119, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.8, "t": 510.25696, "r": 141.78, "b": 519.03174, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Mike Cain is a DB2 for i database engineer with the user profile of MCAIN. He is part of ", "bbox": {"l": 151.20016, "t": 510.10757, "r": 538.92694, "b": 519.32056, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "the DBE group.", "bbox": {"l": 151.20016, "t": 522.10739, "r": 219.05766, "b": 531.32037, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Mike Cain is a DB2 for i database engineer with the user profile of MCAIN. He is part of the DBE group."}, {"label": "list_item", "id": 7, "page_no": 56, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.6043701171875, "t": 537.8555908203125, "r": 492.53729, "b": 560.4962768554688, "coord_origin": "TOPLEFT"}, "confidence": 0.9739224314689636, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 539.29636, "r": 141.78, "b": 548.07111, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Veronica G. Lucchess is a bank account administrator with the user profile of ", "bbox": {"l": 151.20016, "t": 539.14696, "r": 492.53729, "b": 548.35995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "VGLUCCHESS. She is part of the ADMIN group.", "bbox": {"l": 151.20016, "t": 551.14676, "r": 366.6041, "b": 560.35976, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Veronica G. Lucchess is a bank account administrator with the user profile of VGLUCCHESS. She is part of the ADMIN group."}, {"label": "list_item", "id": 8, "page_no": 56, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.5557403564453, "t": 567.1375732421875, "r": 534.65118, "b": 589.821044921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9734449982643127, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.8, "t": 568.27597, "r": 141.78, "b": 577.05072, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Tom Q. Spenser is a bank teller with the user profile of TQSPENSER. He is part of the ", "bbox": {"l": 151.20016, "t": 568.12657, "r": 534.65118, "b": 577.33957, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "TELLER group.", "bbox": {"l": 151.20018, "t": 580.12637, "r": 219.6682, "b": 589.33937, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Tom Q. Spenser is a bank teller with the user profile of TQSPENSER. He is part of the TELLER group."}, {"label": "list_item", "id": 9, "page_no": 56, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.36813354492188, "t": 595.9415893554688, "r": 529.1214, "b": 606.3484497070312, "coord_origin": "TOPLEFT"}, "confidence": 0.9539303779602051, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 597.25558, "r": 141.78001, "b": 606.03033, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "The IT security officer has the user profile of SECURITY. She is not part of any group.", "bbox": {"l": 151.20018, "t": 597.10619, "r": 529.1214, "b": 606.31918, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The IT security officer has the user profile of SECURITY. She is not part of any group."}, {"label": "list_item", "id": 10, "page_no": 56, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.52735900878906, "t": 613.2100219726562, "r": 547.33234, "b": 647.35835, "coord_origin": "TOPLEFT"}, "confidence": 0.9781912565231323, "cells": [{"id": 23, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 614.29515, "r": 141.78099, "b": 623.0699, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "The online banking web application uses the user profile WEBUSER. This profile is part of ", "bbox": {"l": 151.20116, "t": 614.14575, "r": 547.33234, "b": 623.35875, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "the CUSTOMER group. Any future customer-facing applications can also use this group if ", "bbox": {"l": 151.20116, "t": 626.14555, "r": 547.30249, "b": 635.35855, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "needed.", "bbox": {"l": 151.20116, "t": 638.14536, "r": 187.36992, "b": 647.35835, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The online banking web application uses the user profile WEBUSER. This profile is part of the CUSTOMER group. Any future customer-facing applications can also use this group if needed."}, {"label": "list_item", "id": 11, "page_no": 56, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.407958984375, "t": 653.871337890625, "r": 530.79578, "b": 664.398681640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9545347690582275, "cells": [{"id": 27, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 655.27457, "r": 141.78099, "b": 664.04932, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Adam O. Olsen is a bank customer with a web application login ID of KLD72CQR8JG.", "bbox": {"l": 151.20116, "t": 655.12517, "r": 530.79578, "b": 664.33817, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Adam O. Olsen is a bank customer with a web application login ID of KLD72CQR8JG."}, {"label": "table", "id": 12, "page_no": 56, "cluster": {"id": 12, "label": "table", "bbox": {"l": 135.74551391601562, "t": 107.74129486083984, "r": 529.2235107421875, "b": 398.3458557128906, "coord_origin": "TOPLEFT"}, "confidence": 0.8612171411514282, "cells": [{"id": 29, "text": "CUSTOMERS", "bbox": {"l": 287.80969, "t": 111.80242999999996, "r": 355.42447, "b": 123.18358999999998, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Row", "bbox": {"l": 223.74899, "t": 130.54552999999999, "r": 237.25998, "b": 137.17511000000002, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Permissions", "bbox": {"l": 211.90196, "t": 139.86339999999996, "r": 249.31949, "b": 146.49298, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Column", "bbox": {"l": 310.23877, "t": 130.54552999999999, "r": 334.52832, "b": 137.17511000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Maskin", "bbox": {"l": 309.20752, "t": 139.86339999999996, "r": 331.92926, "b": 146.49298, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "g", "bbox": {"l": 331.9368, "t": 139.86346000000003, "r": 335.58884, "b": 146.49303999999995, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "ACCOUNTS", "bbox": {"l": 428.2442, "t": 111.80242999999996, "r": 488.26617000000005, "b": 123.18358999999998, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Column", "bbox": {"l": 446.91339, "t": 130.54552999999999, "r": 471.20294, "b": 137.17511000000002, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Masking", "bbox": {"l": 445.88214, "t": 139.86339999999996, "r": 472.26285, "b": 146.49298, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "SECURITY", "bbox": {"l": 150.03751, "t": 173.64770999999996, "r": 193.05225, "b": 183.12256000000002, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "No Rows", "bbox": {"l": 212.634, "t": 175.52368, "r": 248.92102000000003, "b": 184.06952, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER", "bbox": {"l": 263.18381, "t": 156.68151999999998, "r": 373.63184, "b": 162.37212999999997, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "CUSTOMER_EMAIL", "bbox": {"l": 263.18381, "t": 164.66832999999997, "r": 314.60641, "b": 170.35895000000005, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CUSTOMER_LOGIN_ID", "bbox": {"l": 263.18381, "t": 172.65515000000005, "r": 323.65616, "b": 178.34576000000004, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "CUSTOMER_SECURITY_QUESTION", "bbox": {"l": 263.18381, "t": 180.64197000000001, "r": 355.06308, "b": 186.33258, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "ACCOUNT_NUMBER", "bbox": {"l": 427.81256, "t": 176.64855999999997, "r": 482.86053, "b": 182.33916999999997, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "g", "bbox": {"l": 468.61081, "t": 139.86346000000003, "r": 472.26285, "b": 146.49303999999995, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "DBE", "bbox": {"l": 174.7966, "t": 226.89313000000004, "r": 193.04816, "b": 236.36798, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER", "bbox": {"l": 263.18381, "t": 188.62872000000004, "r": 382.36545, "b": 194.31934, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "CUSTOMER_TAX_ID", "bbox": {"l": 263.18381, "t": 196.61554, "r": 316.47134, "b": 202.30615, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "All Rows", "bbox": {"l": 213.1331, "t": 227.43799, "r": 248.37787, "b": 235.98383, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER", "bbox": {"l": 263.18381, "t": 208.59569999999997, "r": 373.63184, "b": 214.28632000000005, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "CUSTOMER_EMAIL", "bbox": {"l": 263.18381, "t": 216.58252000000005, "r": 314.60641, "b": 222.27313000000004, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "CUSTOMER_LOGIN_ID", "bbox": {"l": 263.18381, "t": 224.56934, "r": 323.65616, "b": 230.25995, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ACCOUNT NUMBER", "bbox": {"l": 427.81161, "t": 228.56273999999996, "r": 482.91415, "b": 234.25336000000004, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "ADMIN", "bbox": {"l": 160.3871, "t": 261.00342, "r": 193.08365, "b": 270.47826999999995, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "CUSTOMER_SECURITY_QUESTION", "bbox": {"l": 263.18381, "t": 232.55615, "r": 355.06308, "b": 238.24676999999997, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER", "bbox": {"l": 263.18381, "t": 240.54296999999997, "r": 382.36545, "b": 246.23357999999996, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "CUSTOMER_TAX_ID", "bbox": {"l": 263.18381, "t": 248.52979000000005, "r": 316.47134, "b": 254.22040000000004, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "ACCOUNT_NUMBER", "bbox": {"l": 427.81161, "t": 228.56273999999996, "r": 482.9232799999999, "b": 234.25336000000004, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "All Rows", "bbox": {"l": 213.1331, "t": 263.04578000000004, "r": 248.45371999999998, "b": 271.59160999999995, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "None", "bbox": {"l": 315.53061, "t": 264.17065, "r": 330.12256, "b": 269.86127, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "None", "bbox": {"l": 448.08353, "t": 264.17065, "r": 462.67548, "b": 269.86127, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "TELLER", "bbox": {"l": 161.4852, "t": 293.44980000000004, "r": 193.04367, "b": 302.92464999999993, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "All Rows", "bbox": {"l": 213.1331, "t": 294.66019, "r": 248.45371999999998, "b": 303.20605, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "CUSTOMER_EMAIL", "bbox": {"l": 263.18381, "t": 279.81146, "r": 314.60641, "b": 285.50208, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "CUSTOMER_LOGIN_ID", "bbox": {"l": 263.18381, "t": 287.79828, "r": 323.65616, "b": 293.48892000000006, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "CUSTOMER_SECURITY_QUESTION", "bbox": {"l": 263.18381, "t": 295.7851299999999, "r": 355.06308, "b": 301.47577, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER", "bbox": {"l": 263.18381, "t": 303.77197, "r": 382.36545, "b": 309.46262, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "CUSTOMER TAX ID", "bbox": {"l": 263.18381, "t": 311.75882, "r": 316.46936, "b": 317.44946, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "None", "bbox": {"l": 448.07916000000006, "t": 295.7851299999999, "r": 462.67110999999994, "b": 301.47577, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "CUSTOMER", "bbox": {"l": 141.6514, "t": 324.798, "r": 193.06383, "b": 334.27286, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "_", "bbox": {"l": 294.03271, "t": 311.75864, "r": 297.34726, "b": 317.44928, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "_", "bbox": {"l": 307.37738, "t": 311.75864, "r": 310.69193, "b": 317.44928, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "Own Rows", "bbox": {"l": 208.8403, "t": 326.27468999999996, "r": 252.72676, "b": 334.82055999999994, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "None", "bbox": {"l": 315.53061, "t": 327.39941, "r": 330.12256, "b": 333.09006, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "None", "bbox": {"l": 448.08353, "t": 327.39941, "r": 462.67548, "b": 333.09006, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER", "bbox": {"l": 263.18353, "t": 343.04031, "r": 373.63156, "b": 348.73096, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "CUSTOMER_EMAIL", "bbox": {"l": 263.18353, "t": 351.0271599999999, "r": 314.60614, "b": 356.7178, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "CUSTOMER LOGIN ID", "bbox": {"l": 263.18381, "t": 359.0139199999999, "r": 323.6488, "b": 364.70456, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "No Rows", "bbox": {"l": 212.634, "t": 361.88251, "r": 248.92102000000003, "b": 370.42838, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "CUSTOMER_LOGIN_ID", "bbox": {"l": 263.18381, "t": 359.0139199999999, "r": 323.63718, "b": 364.70456, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "CUSTOMER_SECURITY_QUESTION", "bbox": {"l": 263.18381, "t": 367.00064, "r": 355.06308, "b": 372.69128, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER", "bbox": {"l": 263.18381, "t": 374.98749, "r": 382.36545, "b": 380.67813, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "CUSTOMER_TAX_ID", "bbox": {"l": 263.18381, "t": 382.97433, "r": 316.47134, "b": 388.66497999999996, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "ACCOUNT_NUMBER", "bbox": {"l": 427.81256, "t": 363.00723000000005, "r": 482.86053, "b": 368.69788, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "PUBLIC", "bbox": {"l": 160.8197, "t": 360.00649999999996, "r": 193.05859, "b": 369.48135, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "ched", "ched", "nl", "fcel", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "fcel", "nl"], "num_rows": 7, "num_cols": 4, "table_cells": [{"bbox": {"l": 287.80969, "t": 111.80242999999996, "r": 355.42447, "b": 123.18358999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "CUSTOMERS", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 428.2442, "t": 111.80242999999996, "r": 488.26617000000005, "b": 123.18358999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "ACCOUNTS", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 150.03751, "t": 173.64770999999996, "r": 193.05225, "b": 183.12256000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "SECURITY", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 212.634, "t": 175.52368, "r": 248.92102000000003, "b": 184.06952, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "No Rows", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 263.18381, "t": 156.68151999999998, "r": 382.36545, "b": 202.30615, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER CUSTOMER_EMAIL CUSTOMER_LOGIN_ID CUSTOMER_SECURITY_QUESTION CUSTOMER_SECURITY_QUESTION_ANSWER CUSTOMER_TAX_ID", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 427.81256, "t": 176.64855999999997, "r": 482.86053, "b": 182.33916999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "ACCOUNT_NUMBER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 174.7966, "t": 226.89313000000004, "r": 193.04816, "b": 236.36798, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "DBE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 213.1331, "t": 227.43799, "r": 248.37787, "b": 235.98383, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "All Rows", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 263.18381, "t": 208.59569999999997, "r": 382.36545, "b": 254.22040000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER CUSTOMER_EMAIL CUSTOMER_LOGIN_ID CUSTOMER_SECURITY_QUESTION CUSTOMER_SECURITY_QUESTION_ANSWER CUSTOMER_TAX_ID", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 427.81161, "t": 228.56273999999996, "r": 482.9232799999999, "b": 234.25336000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "ACCOUNT NUMBER ACCOUNT_NUMBER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 160.3871, "t": 261.00342, "r": 193.08365, "b": 270.47826999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ADMIN", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 213.1331, "t": 263.04578000000004, "r": 248.45371999999998, "b": 271.59160999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "All Rows", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 315.53061, "t": 264.17065, "r": 330.12256, "b": 269.86127, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "None", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 448.08353, "t": 264.17065, "r": 462.67548, "b": 269.86127, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "None", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 161.4852, "t": 293.44980000000004, "r": 193.04367, "b": 302.92464999999993, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "TELLER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 213.1331, "t": 294.66019, "r": 248.45371999999998, "b": 303.20605, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "All Rows", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 263.18381, "t": 279.81146, "r": 382.36545, "b": 317.44946, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "CUSTOMER_EMAIL CUSTOMER_LOGIN_ID CUSTOMER_SECURITY_QUESTION CUSTOMER_SECURITY_QUESTION_ANSWER CUSTOMER TAX ID _ _", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 448.07916000000006, "t": 295.7851299999999, "r": 462.67110999999994, "b": 301.47577, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "None", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 141.6514, "t": 324.798, "r": 193.06383, "b": 334.27286, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CUSTOMER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 208.8403, "t": 326.27468999999996, "r": 252.72676, "b": 334.82055999999994, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Own Rows", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 315.53061, "t": 327.39941, "r": 330.12256, "b": 333.09006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "None", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 448.08353, "t": 327.39941, "r": 462.67548, "b": 333.09006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "None", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 263.18353, "t": 343.04031, "r": 382.36545, "b": 388.66497999999996, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER CUSTOMER_EMAIL CUSTOMER LOGIN ID CUSTOMER_LOGIN_ID CUSTOMER_SECURITY_QUESTION CUSTOMER_SECURITY_QUESTION_ANSWER CUSTOMER_TAX_ID", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 212.634, "t": 361.88251, "r": 248.92102000000003, "b": 370.42838, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "No Rows", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 427.81256, "t": 363.00723000000005, "r": 482.86053, "b": 368.69788, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "ACCOUNT_NUMBER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 160.8197, "t": 360.00649999999996, "r": 193.05859, "b": 369.48135, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PUBLIC", "column_header": false, "row_header": false, "row_section": false}]}], "headers": [{"label": "page_footer", "id": 0, "page_no": 56, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.2675018310547, "t": 754.7578125, "r": 523.59357, "b": 763.9957885742188, "coord_origin": "TOPLEFT"}, "confidence": 0.9552486538887024, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 56, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.689697265625, "t": 754.2295532226562, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9034480452537537, "cells": [{"id": 1, "text": "41", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "41"}]}}, {"page_no": 57, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "42 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "4.3", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 87.421951, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Implementation of RCAC", "bbox": {"l": 91.946342, "t": 71.22069999999997, "r": 283.63077, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 4-4 shows the data model of the banking scenario that is used in this example.", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 514.24524, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Figure 4-4 Data model of the banking scenario", "bbox": {"l": 136.8, "t": 304.698, "r": 326.74951, "b": 313.02301, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "This section covers the following steps:", "bbox": {"l": 136.8, "t": 330.64871, "r": 309.19659, "b": 339.86169, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "GLYPH", "bbox": {"l": 136.8, "t": 347.77789, "r": 141.78, "b": 356.55267, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Reviewing the tables that are used in this example", "bbox": {"l": 151.20016, "t": 347.62851, "r": 372.99231, "b": 356.84148999999996, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 359.77771, "r": 141.78, "b": 368.5524899999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Assigning function ID QIBM_DB_SECADM to the Database Engineers group", "bbox": {"l": 151.20016, "t": 359.62833, "r": 490.64977999999996, "b": 368.8413100000001, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "GLYPH", "bbox": {"l": 136.8, "t": 371.77753000000007, "r": 141.78, "b": 380.55231000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Creating group profiles for the users and their roles", "bbox": {"l": 151.20016, "t": 371.62814, "r": 376.40479, "b": 380.84113, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 383.77734, "r": 141.78, "b": 392.55212, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Creating the CUSTOMER_LOGIN_ID global variable", "bbox": {"l": 151.20016, "t": 383.62796, "r": 384.36783, "b": 392.84093999999993, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 395.7771599999999, "r": 141.78, "b": 404.55194, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Defining and creating row permissions", "bbox": {"l": 151.20016, "t": 395.62778, "r": 320.76019, "b": 404.84076000000005, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "GLYPH", "bbox": {"l": 136.8, "t": 407.77698000000004, "r": 141.78, "b": 416.55176, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Defining and creating column masks", "bbox": {"l": 151.20016, "t": 407.62759, "r": 312.2962, "b": 416.84058, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "GLYPH", "bbox": {"l": 136.8, "t": 419.77679, "r": 141.78, "b": 428.55157, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Restricting the inserting and updating of masked data", "bbox": {"l": 151.20016, "t": 419.62741, "r": 387.66956, "b": 428.84039, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "GLYPH", "bbox": {"l": 136.8, "t": 431.77661, "r": 141.78, "b": 440.55139, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Activating row and column access control", "bbox": {"l": 151.20016, "t": 431.62723, "r": 334.12161, "b": 440.84021, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "GLYPH", "bbox": {"l": 136.8, "t": 443.77643, "r": 141.78, "b": 452.55121, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Reviewing row permissions", "bbox": {"l": 151.20016, "t": 443.6270400000001, "r": 271.91437, "b": 452.84003000000007, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "GLYPH", "bbox": {"l": 136.8, "t": 455.77624999999995, "r": 141.78, "b": 464.55103, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Demonstrating data access with RCAC", "bbox": {"l": 151.20016, "t": 455.62686, "r": 323.46332, "b": 464.83984, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "GLYPH", "bbox": {"l": 136.8, "t": 467.77606, "r": 141.78, "b": 476.55084, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Query implementation with RCAC activated", "bbox": {"l": 151.20016, "t": 467.62668, "r": 343.13235, "b": 476.83966, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "4.3.1", "bbox": {"l": 64.800003, "t": 497.51462, "r": 93.916855, "b": 509.50259, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Reviewing the tables that are used in this example", "bbox": {"l": 97.556473, "t": 497.51462, "r": 410.41861, "b": 509.50259, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "This section reviews the tables that are used in this example. As shown in Figure 4-5, there ", "bbox": {"l": 136.8, "t": 523.66861, "r": 541.10931, "b": 532.88159, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "are three main tables that are involved in the data model: CUSTOMERS, ACCOUNTS, and ", "bbox": {"l": 136.8, "t": 535.6684, "r": 540.25769, "b": 544.88141, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "TRANSACTIONS. There are 90 customers.", "bbox": {"l": 136.80002, "t": 547.66821, "r": 328.83478, "b": 556.88121, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Figure 4-5 Tables that are used in the banking example", "bbox": {"l": 136.8, "t": 632.058, "r": 360.5787, "b": 640.38301, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Note:", "bbox": {"l": 142.8, "t": 669.04871, "r": 168.33246, "b": 678.26172, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": " Appendix A, \u201cDatabase definitions for the RCAC banking example\u201d on page 121 ", "bbox": {"l": 168.36035, "t": 669.04871, "r": 525.7511, "b": 678.26172, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "provides a script that you can use to create all the database definitions or DDLs to ", "bbox": {"l": 142.8, "t": 681.04852, "r": 507.59195, "b": 690.26153, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "re-create this RCAC example.", "bbox": {"l": 142.8, "t": 693.048332, "r": 274.7132, "b": 702.261337, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.21815490722656, "t": 754.3350219726562, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9143346548080444, "cells": [{"id": 0, "text": "42 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.31220245361328, "t": 754.725341796875, "r": 334.42142, "b": 763.9521484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9546207785606384, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.2745590209961, "t": 70.01868438720703, "r": 283.63077, "b": 86.2046127319336, "coord_origin": "TOPLEFT"}, "confidence": 0.9637309312820435, "cells": [{"id": 2, "text": "4.3", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 87.421951, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Implementation of RCAC", "bbox": {"l": 91.946342, "t": 71.22069999999997, "r": 283.63077, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 136.4054412841797, "t": 102.70518493652344, "r": 514.24524, "b": 112.8113784790039, "coord_origin": "TOPLEFT"}, "confidence": 0.9328395128250122, "cells": [{"id": 4, "text": "Figure 4-4 shows the data model of the banking scenario that is used in this example.", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 514.24524, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "caption", "bbox": {"l": 136.15525817871094, "t": 304.1411437988281, "r": 327.0066223144531, "b": 313.5270690917969, "coord_origin": "TOPLEFT"}, "confidence": 0.9527500867843628, "cells": [{"id": 5, "text": "Figure 4-4 Data model of the banking scenario", "bbox": {"l": 136.8, "t": 304.698, "r": 326.74951, "b": 313.02301, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.9271240234375, "t": 330.0567321777344, "r": 309.19659, "b": 340.14447021484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9125084280967712, "cells": [{"id": 6, "text": "This section covers the following steps:", "bbox": {"l": 136.8, "t": 330.64871, "r": 309.19659, "b": 339.86169, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.67567443847656, "t": 346.7349853515625, "r": 372.99231, "b": 356.84148999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.9496878385543823, "cells": [{"id": 7, "text": "GLYPH", "bbox": {"l": 136.8, "t": 347.77789, "r": 141.78, "b": 356.55267, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Reviewing the tables that are used in this example", "bbox": {"l": 151.20016, "t": 347.62851, "r": 372.99231, "b": 356.84148999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.61679077148438, "t": 358.9612731933594, "r": 490.73876953125, "b": 369.148193359375, "coord_origin": "TOPLEFT"}, "confidence": 0.950393795967102, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 359.77771, "r": 141.78, "b": 368.5524899999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Assigning function ID QIBM_DB_SECADM to the Database Engineers group", "bbox": {"l": 151.20016, "t": 359.62833, "r": 490.64977999999996, "b": 368.8413100000001, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.76889038085938, "t": 370.83758544921875, "r": 376.5744934082031, "b": 381.0343933105469, "coord_origin": "TOPLEFT"}, "confidence": 0.941796600818634, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.8, "t": 371.77753000000007, "r": 141.78, "b": 380.55231000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Creating group profiles for the users and their roles", "bbox": {"l": 151.20016, "t": 371.62814, "r": 376.40479, "b": 380.84113, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.6211395263672, "t": 382.32257080078125, "r": 384.36783, "b": 393.1546630859375, "coord_origin": "TOPLEFT"}, "confidence": 0.9414183497428894, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 383.77734, "r": 141.78, "b": 392.55212, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Creating the CUSTOMER_LOGIN_ID global variable", "bbox": {"l": 151.20016, "t": 383.62796, "r": 384.36783, "b": 392.84093999999993, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 135.83248901367188, "t": 394.7557373046875, "r": 320.7999572753906, "b": 405.1979675292969, "coord_origin": "TOPLEFT"}, "confidence": 0.9373244643211365, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 395.7771599999999, "r": 141.78, "b": 404.55194, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Defining and creating row permissions", "bbox": {"l": 151.20016, "t": 395.62778, "r": 320.76019, "b": 404.84076000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 135.7002716064453, "t": 406.6421813964844, "r": 312.3022155761719, "b": 417.1481628417969, "coord_origin": "TOPLEFT"}, "confidence": 0.933269202709198, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.8, "t": 407.77698000000004, "r": 141.78, "b": 416.55176, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Defining and creating column masks", "bbox": {"l": 151.20016, "t": 407.62759, "r": 312.2962, "b": 416.84058, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "list_item", "bbox": {"l": 135.64413452148438, "t": 418.73663330078125, "r": 387.66956, "b": 429.0638732910156, "coord_origin": "TOPLEFT"}, "confidence": 0.9468620419502258, "cells": [{"id": 19, "text": "GLYPH", "bbox": {"l": 136.8, "t": 419.77679, "r": 141.78, "b": 428.55157, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Restricting the inserting and updating of masked data", "bbox": {"l": 151.20016, "t": 419.62741, "r": 387.66956, "b": 428.84039, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "list_item", "bbox": {"l": 135.75306701660156, "t": 430.962890625, "r": 334.12161, "b": 440.8876647949219, "coord_origin": "TOPLEFT"}, "confidence": 0.9373239874839783, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.8, "t": 431.77661, "r": 141.78, "b": 440.55139, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Activating row and column access control", "bbox": {"l": 151.20016, "t": 431.62723, "r": 334.12161, "b": 440.84021, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "list_item", "bbox": {"l": 135.65428161621094, "t": 442.6007995605469, "r": 271.91437, "b": 453.1351013183594, "coord_origin": "TOPLEFT"}, "confidence": 0.9312872290611267, "cells": [{"id": 23, "text": "GLYPH", "bbox": {"l": 136.8, "t": 443.77643, "r": 141.78, "b": 452.55121, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Reviewing row permissions", "bbox": {"l": 151.20016, "t": 443.6270400000001, "r": 271.91437, "b": 452.84003000000007, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "list_item", "bbox": {"l": 135.8694305419922, "t": 454.0513000488281, "r": 323.46332, "b": 464.83984, "coord_origin": "TOPLEFT"}, "confidence": 0.9388870000839233, "cells": [{"id": 25, "text": "GLYPH", "bbox": {"l": 136.8, "t": 455.77624999999995, "r": 141.78, "b": 464.55103, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Demonstrating data access with RCAC", "bbox": {"l": 151.20016, "t": 455.62686, "r": 323.46332, "b": 464.83984, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "list_item", "bbox": {"l": 135.73135375976562, "t": 466.73114013671875, "r": 343.2095031738281, "b": 476.8760070800781, "coord_origin": "TOPLEFT"}, "confidence": 0.9516265392303467, "cells": [{"id": 27, "text": "GLYPH", "bbox": {"l": 136.8, "t": 467.77606, "r": 141.78, "b": 476.55084, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Query implementation with RCAC activated", "bbox": {"l": 151.20016, "t": 467.62668, "r": 343.13235, "b": 476.83966, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "section_header", "bbox": {"l": 64.17279052734375, "t": 496.611083984375, "r": 410.41861, "b": 509.50259, "coord_origin": "TOPLEFT"}, "confidence": 0.9660991430282593, "cells": [{"id": 29, "text": "4.3.1", "bbox": {"l": 64.800003, "t": 497.51462, "r": 93.916855, "b": 509.50259, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Reviewing the tables that are used in this example", "bbox": {"l": 97.556473, "t": 497.51462, "r": 410.41861, "b": 509.50259, "coord_origin": "TOPLEFT"}}]}, {"id": 18, "label": "text", "bbox": {"l": 135.51849365234375, "t": 522.7078857421875, "r": 541.10931, "b": 556.88121, "coord_origin": "TOPLEFT"}, "confidence": 0.9787154197692871, "cells": [{"id": 31, "text": "This section reviews the tables that are used in this example. As shown in Figure 4-5, there ", "bbox": {"l": 136.8, "t": 523.66861, "r": 541.10931, "b": 532.88159, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "are three main tables that are involved in the data model: CUSTOMERS, ACCOUNTS, and ", "bbox": {"l": 136.8, "t": 535.6684, "r": 540.25769, "b": 544.88141, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "TRANSACTIONS. There are 90 customers.", "bbox": {"l": 136.80002, "t": 547.66821, "r": 328.83478, "b": 556.88121, "coord_origin": "TOPLEFT"}}]}, {"id": 19, "label": "caption", "bbox": {"l": 136.22021484375, "t": 631.5818481445312, "r": 361.25982666015625, "b": 640.684326171875, "coord_origin": "TOPLEFT"}, "confidence": 0.950111448764801, "cells": [{"id": 34, "text": "Figure 4-5 Tables that are used in the banking example", "bbox": {"l": 136.8, "t": 632.058, "r": 360.5787, "b": 640.38301, "coord_origin": "TOPLEFT"}}]}, {"id": 20, "label": "text", "bbox": {"l": 142.3465576171875, "t": 667.8150024414062, "r": 525.7511, "b": 702.261337, "coord_origin": "TOPLEFT"}, "confidence": 0.9773550629615784, "cells": [{"id": 35, "text": "Note:", "bbox": {"l": 142.8, "t": 669.04871, "r": 168.33246, "b": 678.26172, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": " Appendix A, \u201cDatabase definitions for the RCAC banking example\u201d on page 121 ", "bbox": {"l": 168.36035, "t": 669.04871, "r": 525.7511, "b": 678.26172, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "provides a script that you can use to create all the database definitions or DDLs to ", "bbox": {"l": 142.8, "t": 681.04852, "r": 507.59195, "b": 690.26153, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "re-create this RCAC example.", "bbox": {"l": 142.8, "t": 693.048332, "r": 274.7132, "b": 702.261337, "coord_origin": "TOPLEFT"}}]}, {"id": 21, "label": "picture", "bbox": {"l": 136.12950134277344, "t": 127.06898498535156, "r": 451.212158203125, "b": 301.4627380371094, "coord_origin": "TOPLEFT"}, "confidence": 0.986349880695343, "cells": []}, {"id": 22, "label": "picture", "bbox": {"l": 135.7327880859375, "t": 570.8567504882812, "r": 415.3825988769531, "b": 628.9186401367188, "coord_origin": "TOPLEFT"}, "confidence": 0.9538632035255432, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 57, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.21815490722656, "t": 754.3350219726562, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9143346548080444, "cells": [{"id": 0, "text": "42 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "42"}, {"label": "page_footer", "id": 1, "page_no": 57, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.31220245361328, "t": 754.725341796875, "r": 334.42142, "b": 763.9521484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9546207785606384, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "section_header", "id": 2, "page_no": 57, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.2745590209961, "t": 70.01868438720703, "r": 283.63077, "b": 86.2046127319336, "coord_origin": "TOPLEFT"}, "confidence": 0.9637309312820435, "cells": [{"id": 2, "text": "4.3", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 87.421951, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Implementation of RCAC", "bbox": {"l": 91.946342, "t": 71.22069999999997, "r": 283.63077, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, "text": "4.3 Implementation of RCAC"}, {"label": "text", "id": 3, "page_no": 57, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.4054412841797, "t": 102.70518493652344, "r": 514.24524, "b": 112.8113784790039, "coord_origin": "TOPLEFT"}, "confidence": 0.9328395128250122, "cells": [{"id": 4, "text": "Figure 4-4 shows the data model of the banking scenario that is used in this example.", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 514.24524, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-4 shows the data model of the banking scenario that is used in this example."}, {"label": "caption", "id": 4, "page_no": 57, "cluster": {"id": 4, "label": "caption", "bbox": {"l": 136.15525817871094, "t": 304.1411437988281, "r": 327.0066223144531, "b": 313.5270690917969, "coord_origin": "TOPLEFT"}, "confidence": 0.9527500867843628, "cells": [{"id": 5, "text": "Figure 4-4 Data model of the banking scenario", "bbox": {"l": 136.8, "t": 304.698, "r": 326.74951, "b": 313.02301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-4 Data model of the banking scenario"}, {"label": "text", "id": 5, "page_no": 57, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.9271240234375, "t": 330.0567321777344, "r": 309.19659, "b": 340.14447021484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9125084280967712, "cells": [{"id": 6, "text": "This section covers the following steps:", "bbox": {"l": 136.8, "t": 330.64871, "r": 309.19659, "b": 339.86169, "coord_origin": "TOPLEFT"}}]}, "text": "This section covers the following steps:"}, {"label": "list_item", "id": 6, "page_no": 57, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.67567443847656, "t": 346.7349853515625, "r": 372.99231, "b": 356.84148999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.9496878385543823, "cells": [{"id": 7, "text": "GLYPH", "bbox": {"l": 136.8, "t": 347.77789, "r": 141.78, "b": 356.55267, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Reviewing the tables that are used in this example", "bbox": {"l": 151.20016, "t": 347.62851, "r": 372.99231, "b": 356.84148999999996, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Reviewing the tables that are used in this example"}, {"label": "list_item", "id": 7, "page_no": 57, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.61679077148438, "t": 358.9612731933594, "r": 490.73876953125, "b": 369.148193359375, "coord_origin": "TOPLEFT"}, "confidence": 0.950393795967102, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 359.77771, "r": 141.78, "b": 368.5524899999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Assigning function ID QIBM_DB_SECADM to the Database Engineers group", "bbox": {"l": 151.20016, "t": 359.62833, "r": 490.64977999999996, "b": 368.8413100000001, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Assigning function ID QIBM_DB_SECADM to the Database Engineers group"}, {"label": "list_item", "id": 8, "page_no": 57, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.76889038085938, "t": 370.83758544921875, "r": 376.5744934082031, "b": 381.0343933105469, "coord_origin": "TOPLEFT"}, "confidence": 0.941796600818634, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.8, "t": 371.77753000000007, "r": 141.78, "b": 380.55231000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Creating group profiles for the users and their roles", "bbox": {"l": 151.20016, "t": 371.62814, "r": 376.40479, "b": 380.84113, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Creating group profiles for the users and their roles"}, {"label": "list_item", "id": 9, "page_no": 57, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.6211395263672, "t": 382.32257080078125, "r": 384.36783, "b": 393.1546630859375, "coord_origin": "TOPLEFT"}, "confidence": 0.9414183497428894, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 383.77734, "r": 141.78, "b": 392.55212, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Creating the CUSTOMER_LOGIN_ID global variable", "bbox": {"l": 151.20016, "t": 383.62796, "r": 384.36783, "b": 392.84093999999993, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Creating the CUSTOMER_LOGIN_ID global variable"}, {"label": "list_item", "id": 10, "page_no": 57, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.83248901367188, "t": 394.7557373046875, "r": 320.7999572753906, "b": 405.1979675292969, "coord_origin": "TOPLEFT"}, "confidence": 0.9373244643211365, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 395.7771599999999, "r": 141.78, "b": 404.55194, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Defining and creating row permissions", "bbox": {"l": 151.20016, "t": 395.62778, "r": 320.76019, "b": 404.84076000000005, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Defining and creating row permissions"}, {"label": "list_item", "id": 11, "page_no": 57, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.7002716064453, "t": 406.6421813964844, "r": 312.3022155761719, "b": 417.1481628417969, "coord_origin": "TOPLEFT"}, "confidence": 0.933269202709198, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.8, "t": 407.77698000000004, "r": 141.78, "b": 416.55176, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Defining and creating column masks", "bbox": {"l": 151.20016, "t": 407.62759, "r": 312.2962, "b": 416.84058, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Defining and creating column masks"}, {"label": "list_item", "id": 12, "page_no": 57, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 135.64413452148438, "t": 418.73663330078125, "r": 387.66956, "b": 429.0638732910156, "coord_origin": "TOPLEFT"}, "confidence": 0.9468620419502258, "cells": [{"id": 19, "text": "GLYPH", "bbox": {"l": 136.8, "t": 419.77679, "r": 141.78, "b": 428.55157, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Restricting the inserting and updating of masked data", "bbox": {"l": 151.20016, "t": 419.62741, "r": 387.66956, "b": 428.84039, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Restricting the inserting and updating of masked data"}, {"label": "list_item", "id": 13, "page_no": 57, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 135.75306701660156, "t": 430.962890625, "r": 334.12161, "b": 440.8876647949219, "coord_origin": "TOPLEFT"}, "confidence": 0.9373239874839783, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.8, "t": 431.77661, "r": 141.78, "b": 440.55139, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Activating row and column access control", "bbox": {"l": 151.20016, "t": 431.62723, "r": 334.12161, "b": 440.84021, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Activating row and column access control"}, {"label": "list_item", "id": 14, "page_no": 57, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 135.65428161621094, "t": 442.6007995605469, "r": 271.91437, "b": 453.1351013183594, "coord_origin": "TOPLEFT"}, "confidence": 0.9312872290611267, "cells": [{"id": 23, "text": "GLYPH", "bbox": {"l": 136.8, "t": 443.77643, "r": 141.78, "b": 452.55121, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Reviewing row permissions", "bbox": {"l": 151.20016, "t": 443.6270400000001, "r": 271.91437, "b": 452.84003000000007, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Reviewing row permissions"}, {"label": "list_item", "id": 15, "page_no": 57, "cluster": {"id": 15, "label": "list_item", "bbox": {"l": 135.8694305419922, "t": 454.0513000488281, "r": 323.46332, "b": 464.83984, "coord_origin": "TOPLEFT"}, "confidence": 0.9388870000839233, "cells": [{"id": 25, "text": "GLYPH", "bbox": {"l": 136.8, "t": 455.77624999999995, "r": 141.78, "b": 464.55103, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Demonstrating data access with RCAC", "bbox": {"l": 151.20016, "t": 455.62686, "r": 323.46332, "b": 464.83984, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Demonstrating data access with RCAC"}, {"label": "list_item", "id": 16, "page_no": 57, "cluster": {"id": 16, "label": "list_item", "bbox": {"l": 135.73135375976562, "t": 466.73114013671875, "r": 343.2095031738281, "b": 476.8760070800781, "coord_origin": "TOPLEFT"}, "confidence": 0.9516265392303467, "cells": [{"id": 27, "text": "GLYPH", "bbox": {"l": 136.8, "t": 467.77606, "r": 141.78, "b": 476.55084, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Query implementation with RCAC activated", "bbox": {"l": 151.20016, "t": 467.62668, "r": 343.13235, "b": 476.83966, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Query implementation with RCAC activated"}, {"label": "section_header", "id": 17, "page_no": 57, "cluster": {"id": 17, "label": "section_header", "bbox": {"l": 64.17279052734375, "t": 496.611083984375, "r": 410.41861, "b": 509.50259, "coord_origin": "TOPLEFT"}, "confidence": 0.9660991430282593, "cells": [{"id": 29, "text": "4.3.1", "bbox": {"l": 64.800003, "t": 497.51462, "r": 93.916855, "b": 509.50259, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Reviewing the tables that are used in this example", "bbox": {"l": 97.556473, "t": 497.51462, "r": 410.41861, "b": 509.50259, "coord_origin": "TOPLEFT"}}]}, "text": "4.3.1 Reviewing the tables that are used in this example"}, {"label": "text", "id": 18, "page_no": 57, "cluster": {"id": 18, "label": "text", "bbox": {"l": 135.51849365234375, "t": 522.7078857421875, "r": 541.10931, "b": 556.88121, "coord_origin": "TOPLEFT"}, "confidence": 0.9787154197692871, "cells": [{"id": 31, "text": "This section reviews the tables that are used in this example. As shown in Figure 4-5, there ", "bbox": {"l": 136.8, "t": 523.66861, "r": 541.10931, "b": 532.88159, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "are three main tables that are involved in the data model: CUSTOMERS, ACCOUNTS, and ", "bbox": {"l": 136.8, "t": 535.6684, "r": 540.25769, "b": 544.88141, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "TRANSACTIONS. There are 90 customers.", "bbox": {"l": 136.80002, "t": 547.66821, "r": 328.83478, "b": 556.88121, "coord_origin": "TOPLEFT"}}]}, "text": "This section reviews the tables that are used in this example. As shown in Figure 4-5, there are three main tables that are involved in the data model: CUSTOMERS, ACCOUNTS, and TRANSACTIONS. There are 90 customers."}, {"label": "caption", "id": 19, "page_no": 57, "cluster": {"id": 19, "label": "caption", "bbox": {"l": 136.22021484375, "t": 631.5818481445312, "r": 361.25982666015625, "b": 640.684326171875, "coord_origin": "TOPLEFT"}, "confidence": 0.950111448764801, "cells": [{"id": 34, "text": "Figure 4-5 Tables that are used in the banking example", "bbox": {"l": 136.8, "t": 632.058, "r": 360.5787, "b": 640.38301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-5 Tables that are used in the banking example"}, {"label": "text", "id": 20, "page_no": 57, "cluster": {"id": 20, "label": "text", "bbox": {"l": 142.3465576171875, "t": 667.8150024414062, "r": 525.7511, "b": 702.261337, "coord_origin": "TOPLEFT"}, "confidence": 0.9773550629615784, "cells": [{"id": 35, "text": "Note:", "bbox": {"l": 142.8, "t": 669.04871, "r": 168.33246, "b": 678.26172, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": " Appendix A, \u201cDatabase definitions for the RCAC banking example\u201d on page 121 ", "bbox": {"l": 168.36035, "t": 669.04871, "r": 525.7511, "b": 678.26172, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "provides a script that you can use to create all the database definitions or DDLs to ", "bbox": {"l": 142.8, "t": 681.04852, "r": 507.59195, "b": 690.26153, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "re-create this RCAC example.", "bbox": {"l": 142.8, "t": 693.048332, "r": 274.7132, "b": 702.261337, "coord_origin": "TOPLEFT"}}]}, "text": "Note: Appendix A, \u201cDatabase definitions for the RCAC banking example\u201d on page 121 provides a script that you can use to create all the database definitions or DDLs to re-create this RCAC example."}, {"label": "picture", "id": 21, "page_no": 57, "cluster": {"id": 21, "label": "picture", "bbox": {"l": 136.12950134277344, "t": 127.06898498535156, "r": 451.212158203125, "b": 301.4627380371094, "coord_origin": "TOPLEFT"}, "confidence": 0.986349880695343, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 22, "page_no": 57, "cluster": {"id": 22, "label": "picture", "bbox": {"l": 135.7327880859375, "t": 570.8567504882812, "r": 415.3825988769531, "b": 628.9186401367188, "coord_origin": "TOPLEFT"}, "confidence": 0.9538632035255432, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "section_header", "id": 2, "page_no": 57, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.2745590209961, "t": 70.01868438720703, "r": 283.63077, "b": 86.2046127319336, "coord_origin": "TOPLEFT"}, "confidence": 0.9637309312820435, "cells": [{"id": 2, "text": "4.3", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 87.421951, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Implementation of RCAC", "bbox": {"l": 91.946342, "t": 71.22069999999997, "r": 283.63077, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, "text": "4.3 Implementation of RCAC"}, {"label": "text", "id": 3, "page_no": 57, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.4054412841797, "t": 102.70518493652344, "r": 514.24524, "b": 112.8113784790039, "coord_origin": "TOPLEFT"}, "confidence": 0.9328395128250122, "cells": [{"id": 4, "text": "Figure 4-4 shows the data model of the banking scenario that is used in this example.", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 514.24524, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-4 shows the data model of the banking scenario that is used in this example."}, {"label": "caption", "id": 4, "page_no": 57, "cluster": {"id": 4, "label": "caption", "bbox": {"l": 136.15525817871094, "t": 304.1411437988281, "r": 327.0066223144531, "b": 313.5270690917969, "coord_origin": "TOPLEFT"}, "confidence": 0.9527500867843628, "cells": [{"id": 5, "text": "Figure 4-4 Data model of the banking scenario", "bbox": {"l": 136.8, "t": 304.698, "r": 326.74951, "b": 313.02301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-4 Data model of the banking scenario"}, {"label": "text", "id": 5, "page_no": 57, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.9271240234375, "t": 330.0567321777344, "r": 309.19659, "b": 340.14447021484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9125084280967712, "cells": [{"id": 6, "text": "This section covers the following steps:", "bbox": {"l": 136.8, "t": 330.64871, "r": 309.19659, "b": 339.86169, "coord_origin": "TOPLEFT"}}]}, "text": "This section covers the following steps:"}, {"label": "list_item", "id": 6, "page_no": 57, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.67567443847656, "t": 346.7349853515625, "r": 372.99231, "b": 356.84148999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.9496878385543823, "cells": [{"id": 7, "text": "GLYPH", "bbox": {"l": 136.8, "t": 347.77789, "r": 141.78, "b": 356.55267, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Reviewing the tables that are used in this example", "bbox": {"l": 151.20016, "t": 347.62851, "r": 372.99231, "b": 356.84148999999996, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Reviewing the tables that are used in this example"}, {"label": "list_item", "id": 7, "page_no": 57, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.61679077148438, "t": 358.9612731933594, "r": 490.73876953125, "b": 369.148193359375, "coord_origin": "TOPLEFT"}, "confidence": 0.950393795967102, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 359.77771, "r": 141.78, "b": 368.5524899999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Assigning function ID QIBM_DB_SECADM to the Database Engineers group", "bbox": {"l": 151.20016, "t": 359.62833, "r": 490.64977999999996, "b": 368.8413100000001, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Assigning function ID QIBM_DB_SECADM to the Database Engineers group"}, {"label": "list_item", "id": 8, "page_no": 57, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.76889038085938, "t": 370.83758544921875, "r": 376.5744934082031, "b": 381.0343933105469, "coord_origin": "TOPLEFT"}, "confidence": 0.941796600818634, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.8, "t": 371.77753000000007, "r": 141.78, "b": 380.55231000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Creating group profiles for the users and their roles", "bbox": {"l": 151.20016, "t": 371.62814, "r": 376.40479, "b": 380.84113, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Creating group profiles for the users and their roles"}, {"label": "list_item", "id": 9, "page_no": 57, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.6211395263672, "t": 382.32257080078125, "r": 384.36783, "b": 393.1546630859375, "coord_origin": "TOPLEFT"}, "confidence": 0.9414183497428894, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 383.77734, "r": 141.78, "b": 392.55212, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Creating the CUSTOMER_LOGIN_ID global variable", "bbox": {"l": 151.20016, "t": 383.62796, "r": 384.36783, "b": 392.84093999999993, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Creating the CUSTOMER_LOGIN_ID global variable"}, {"label": "list_item", "id": 10, "page_no": 57, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.83248901367188, "t": 394.7557373046875, "r": 320.7999572753906, "b": 405.1979675292969, "coord_origin": "TOPLEFT"}, "confidence": 0.9373244643211365, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 395.7771599999999, "r": 141.78, "b": 404.55194, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Defining and creating row permissions", "bbox": {"l": 151.20016, "t": 395.62778, "r": 320.76019, "b": 404.84076000000005, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Defining and creating row permissions"}, {"label": "list_item", "id": 11, "page_no": 57, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.7002716064453, "t": 406.6421813964844, "r": 312.3022155761719, "b": 417.1481628417969, "coord_origin": "TOPLEFT"}, "confidence": 0.933269202709198, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.8, "t": 407.77698000000004, "r": 141.78, "b": 416.55176, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Defining and creating column masks", "bbox": {"l": 151.20016, "t": 407.62759, "r": 312.2962, "b": 416.84058, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Defining and creating column masks"}, {"label": "list_item", "id": 12, "page_no": 57, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 135.64413452148438, "t": 418.73663330078125, "r": 387.66956, "b": 429.0638732910156, "coord_origin": "TOPLEFT"}, "confidence": 0.9468620419502258, "cells": [{"id": 19, "text": "GLYPH", "bbox": {"l": 136.8, "t": 419.77679, "r": 141.78, "b": 428.55157, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Restricting the inserting and updating of masked data", "bbox": {"l": 151.20016, "t": 419.62741, "r": 387.66956, "b": 428.84039, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Restricting the inserting and updating of masked data"}, {"label": "list_item", "id": 13, "page_no": 57, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 135.75306701660156, "t": 430.962890625, "r": 334.12161, "b": 440.8876647949219, "coord_origin": "TOPLEFT"}, "confidence": 0.9373239874839783, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.8, "t": 431.77661, "r": 141.78, "b": 440.55139, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Activating row and column access control", "bbox": {"l": 151.20016, "t": 431.62723, "r": 334.12161, "b": 440.84021, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Activating row and column access control"}, {"label": "list_item", "id": 14, "page_no": 57, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 135.65428161621094, "t": 442.6007995605469, "r": 271.91437, "b": 453.1351013183594, "coord_origin": "TOPLEFT"}, "confidence": 0.9312872290611267, "cells": [{"id": 23, "text": "GLYPH", "bbox": {"l": 136.8, "t": 443.77643, "r": 141.78, "b": 452.55121, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Reviewing row permissions", "bbox": {"l": 151.20016, "t": 443.6270400000001, "r": 271.91437, "b": 452.84003000000007, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Reviewing row permissions"}, {"label": "list_item", "id": 15, "page_no": 57, "cluster": {"id": 15, "label": "list_item", "bbox": {"l": 135.8694305419922, "t": 454.0513000488281, "r": 323.46332, "b": 464.83984, "coord_origin": "TOPLEFT"}, "confidence": 0.9388870000839233, "cells": [{"id": 25, "text": "GLYPH", "bbox": {"l": 136.8, "t": 455.77624999999995, "r": 141.78, "b": 464.55103, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Demonstrating data access with RCAC", "bbox": {"l": 151.20016, "t": 455.62686, "r": 323.46332, "b": 464.83984, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Demonstrating data access with RCAC"}, {"label": "list_item", "id": 16, "page_no": 57, "cluster": {"id": 16, "label": "list_item", "bbox": {"l": 135.73135375976562, "t": 466.73114013671875, "r": 343.2095031738281, "b": 476.8760070800781, "coord_origin": "TOPLEFT"}, "confidence": 0.9516265392303467, "cells": [{"id": 27, "text": "GLYPH", "bbox": {"l": 136.8, "t": 467.77606, "r": 141.78, "b": 476.55084, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Query implementation with RCAC activated", "bbox": {"l": 151.20016, "t": 467.62668, "r": 343.13235, "b": 476.83966, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Query implementation with RCAC activated"}, {"label": "section_header", "id": 17, "page_no": 57, "cluster": {"id": 17, "label": "section_header", "bbox": {"l": 64.17279052734375, "t": 496.611083984375, "r": 410.41861, "b": 509.50259, "coord_origin": "TOPLEFT"}, "confidence": 0.9660991430282593, "cells": [{"id": 29, "text": "4.3.1", "bbox": {"l": 64.800003, "t": 497.51462, "r": 93.916855, "b": 509.50259, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Reviewing the tables that are used in this example", "bbox": {"l": 97.556473, "t": 497.51462, "r": 410.41861, "b": 509.50259, "coord_origin": "TOPLEFT"}}]}, "text": "4.3.1 Reviewing the tables that are used in this example"}, {"label": "text", "id": 18, "page_no": 57, "cluster": {"id": 18, "label": "text", "bbox": {"l": 135.51849365234375, "t": 522.7078857421875, "r": 541.10931, "b": 556.88121, "coord_origin": "TOPLEFT"}, "confidence": 0.9787154197692871, "cells": [{"id": 31, "text": "This section reviews the tables that are used in this example. As shown in Figure 4-5, there ", "bbox": {"l": 136.8, "t": 523.66861, "r": 541.10931, "b": 532.88159, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "are three main tables that are involved in the data model: CUSTOMERS, ACCOUNTS, and ", "bbox": {"l": 136.8, "t": 535.6684, "r": 540.25769, "b": 544.88141, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "TRANSACTIONS. There are 90 customers.", "bbox": {"l": 136.80002, "t": 547.66821, "r": 328.83478, "b": 556.88121, "coord_origin": "TOPLEFT"}}]}, "text": "This section reviews the tables that are used in this example. As shown in Figure 4-5, there are three main tables that are involved in the data model: CUSTOMERS, ACCOUNTS, and TRANSACTIONS. There are 90 customers."}, {"label": "caption", "id": 19, "page_no": 57, "cluster": {"id": 19, "label": "caption", "bbox": {"l": 136.22021484375, "t": 631.5818481445312, "r": 361.25982666015625, "b": 640.684326171875, "coord_origin": "TOPLEFT"}, "confidence": 0.950111448764801, "cells": [{"id": 34, "text": "Figure 4-5 Tables that are used in the banking example", "bbox": {"l": 136.8, "t": 632.058, "r": 360.5787, "b": 640.38301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-5 Tables that are used in the banking example"}, {"label": "text", "id": 20, "page_no": 57, "cluster": {"id": 20, "label": "text", "bbox": {"l": 142.3465576171875, "t": 667.8150024414062, "r": 525.7511, "b": 702.261337, "coord_origin": "TOPLEFT"}, "confidence": 0.9773550629615784, "cells": [{"id": 35, "text": "Note:", "bbox": {"l": 142.8, "t": 669.04871, "r": 168.33246, "b": 678.26172, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": " Appendix A, \u201cDatabase definitions for the RCAC banking example\u201d on page 121 ", "bbox": {"l": 168.36035, "t": 669.04871, "r": 525.7511, "b": 678.26172, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "provides a script that you can use to create all the database definitions or DDLs to ", "bbox": {"l": 142.8, "t": 681.04852, "r": 507.59195, "b": 690.26153, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "re-create this RCAC example.", "bbox": {"l": 142.8, "t": 693.048332, "r": 274.7132, "b": 702.261337, "coord_origin": "TOPLEFT"}}]}, "text": "Note: Appendix A, \u201cDatabase definitions for the RCAC banking example\u201d on page 121 provides a script that you can use to create all the database definitions or DDLs to re-create this RCAC example."}, {"label": "picture", "id": 21, "page_no": 57, "cluster": {"id": 21, "label": "picture", "bbox": {"l": 136.12950134277344, "t": 127.06898498535156, "r": 451.212158203125, "b": 301.4627380371094, "coord_origin": "TOPLEFT"}, "confidence": 0.986349880695343, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 22, "page_no": 57, "cluster": {"id": 22, "label": "picture", "bbox": {"l": 135.7327880859375, "t": 570.8567504882812, "r": 415.3825988769531, "b": 628.9186401367188, "coord_origin": "TOPLEFT"}, "confidence": 0.9538632035255432, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 57, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.21815490722656, "t": 754.3350219726562, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9143346548080444, "cells": [{"id": 0, "text": "42 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "42"}, {"label": "page_footer", "id": 1, "page_no": 57, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.31220245361328, "t": 754.725341796875, "r": 334.42142, "b": 763.9521484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9546207785606384, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 58, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "43", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "To review the attributes of each table that is used in this banking example, complete the ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 525.07031, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "following steps:", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 204.65807, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "1.", "bbox": {"l": 136.79959, "t": 100.48865, "r": 145.18024, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Review the columns of each the tables through System i Navigator. Expand ", "bbox": {"l": 147.97379, "t": 100.48865, "r": 486.43526999999995, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Database", "bbox": {"l": 486.41952999999995, "t": 100.48865, "r": 530.89691, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "\uf0ae", "bbox": {"l": 533.39984, "t": 97.63013000000001, "r": 543.23035, "b": 109.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "named Database", "bbox": {"l": 151.19977, "t": 112.48845999999992, "r": 230.63674999999998, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "\uf0ae", "bbox": {"l": 233.09984999999998, "t": 109.62994000000003, "r": 242.93037, "b": 121.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": " Schemas", "bbox": {"l": 243.00008999999997, "t": 112.48845999999992, "r": 289.5123, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "\uf0ae", "bbox": {"l": 292.07999, "t": 109.62994000000003, "r": 301.91049, "b": 121.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": " BANK_SCHEMA", "bbox": {"l": 301.92047, "t": 112.48845999999992, "r": 382.03775, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "\uf0ae", "bbox": {"l": 384.60043, "t": 109.62994000000003, "r": 394.43094, "b": 121.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " Tables", "bbox": {"l": 394.50067, "t": 112.48845999999992, "r": 427.25119, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": ".", "bbox": {"l": 427.86069, "t": 112.48845999999992, "r": 430.62958, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "2.", "bbox": {"l": 136.8006, "t": 129.52801999999997, "r": 145.23108, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Right-click the CUSTOMERS table and select ", "bbox": {"l": 148.04124, "t": 129.52801999999997, "r": 355.32602, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Definition", "bbox": {"l": 355.32101, "t": 129.52801999999997, "r": 401.47073, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ". Figure 4-6 shows the attributes ", "bbox": {"l": 401.46072, "t": 129.52801999999997, "r": 546.83588, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "for the CUSTOMERS table. The Row access control and Column access control options ", "bbox": {"l": 151.20079, "t": 141.52783, "r": 542.72644, "b": 150.74084000000005, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "are not selected, which indicates that the table does not have RCAC implemented.", "bbox": {"l": 151.20081, "t": 153.52765, "r": 514.64014, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Figure 4-6 CUSTOMERS table attributes", "bbox": {"l": 136.8, "t": 365.65799, "r": 303.49619, "b": 373.983, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "3.", "bbox": {"l": 136.8, "t": 391.60873, "r": 145.62772, "b": 400.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Click the ", "bbox": {"l": 148.57028, "t": 391.60873, "r": 192.09492, "b": 400.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Columns", "bbox": {"l": 192.11984, "t": 391.60873, "r": 234.88211000000004, "b": 400.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": " tab to see the columns of the CUSTOMERS table, as shown in ", "bbox": {"l": 234.84026999999998, "t": 391.60873, "r": 517.36163, "b": 400.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Figure 4-7.", "bbox": {"l": 151.20016, "t": 403.60855, "r": 199.55498, "b": 412.82153, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Figure 4-7 Column definitions of the CUSTOMERS table", "bbox": {"l": 64.800003, "t": 613.63789, "r": 293.4675, "b": 621.96291, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 214.2801971435547, "t": 754.7266845703125, "r": 523.59357, "b": 764.0281372070312, "coord_origin": "TOPLEFT"}, "confidence": 0.9543154239654541, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.720947265625, "t": 754.1746215820312, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9061288833618164, "cells": [{"id": 1, "text": "43", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.93377685546875, "t": 70.66082763671875, "r": 525.07031, "b": 93.04185485839844, "coord_origin": "TOPLEFT"}, "confidence": 0.9635977745056152, "cells": [{"id": 2, "text": "To review the attributes of each table that is used in this banking example, complete the ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 525.07031, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "following steps:", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 204.65807, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "list_item", "bbox": {"l": 136.77842712402344, "t": 97.63013000000001, "r": 543.23035, "b": 121.82097999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.9705125689506531, "cells": [{"id": 4, "text": "1.", "bbox": {"l": 136.79959, "t": 100.48865, "r": 145.18024, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Review the columns of each the tables through System i Navigator. Expand ", "bbox": {"l": 147.97379, "t": 100.48865, "r": 486.43526999999995, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Database", "bbox": {"l": 486.41952999999995, "t": 100.48865, "r": 530.89691, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "\uf0ae", "bbox": {"l": 533.39984, "t": 97.63013000000001, "r": 543.23035, "b": 109.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "named Database", "bbox": {"l": 151.19977, "t": 112.48845999999992, "r": 230.63674999999998, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "\uf0ae", "bbox": {"l": 233.09984999999998, "t": 109.62994000000003, "r": 242.93037, "b": 121.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": " Schemas", "bbox": {"l": 243.00008999999997, "t": 112.48845999999992, "r": 289.5123, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "\uf0ae", "bbox": {"l": 292.07999, "t": 109.62994000000003, "r": 301.91049, "b": 121.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": " BANK_SCHEMA", "bbox": {"l": 301.92047, "t": 112.48845999999992, "r": 382.03775, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "\uf0ae", "bbox": {"l": 384.60043, "t": 109.62994000000003, "r": 394.43094, "b": 121.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " Tables", "bbox": {"l": 394.50067, "t": 112.48845999999992, "r": 427.25119, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": ".", "bbox": {"l": 427.86069, "t": 112.48845999999992, "r": 430.62958, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 136.044677734375, "t": 128.51512145996094, "r": 546.83588, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9810754060745239, "cells": [{"id": 16, "text": "2.", "bbox": {"l": 136.8006, "t": 129.52801999999997, "r": 145.23108, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Right-click the CUSTOMERS table and select ", "bbox": {"l": 148.04124, "t": 129.52801999999997, "r": 355.32602, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Definition", "bbox": {"l": 355.32101, "t": 129.52801999999997, "r": 401.47073, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ". Figure 4-6 shows the attributes ", "bbox": {"l": 401.46072, "t": 129.52801999999997, "r": 546.83588, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "for the CUSTOMERS table. The Row access control and Column access control options ", "bbox": {"l": 151.20079, "t": 141.52783, "r": 542.72644, "b": 150.74084000000005, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "are not selected, which indicates that the table does not have RCAC implemented.", "bbox": {"l": 151.20081, "t": 153.52765, "r": 514.64014, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 136.25962829589844, "t": 364.7186584472656, "r": 303.7537536621094, "b": 373.983, "coord_origin": "TOPLEFT"}, "confidence": 0.9458591341972351, "cells": [{"id": 22, "text": "Figure 4-6 CUSTOMERS table attributes", "bbox": {"l": 136.8, "t": 365.65799, "r": 303.49619, "b": 373.983, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.99163818359375, "t": 390.5973205566406, "r": 517.36163, "b": 413.2025146484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9586500525474548, "cells": [{"id": 23, "text": "3.", "bbox": {"l": 136.8, "t": 391.60873, "r": 145.62772, "b": 400.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Click the ", "bbox": {"l": 148.57028, "t": 391.60873, "r": 192.09492, "b": 400.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Columns", "bbox": {"l": 192.11984, "t": 391.60873, "r": 234.88211000000004, "b": 400.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": " tab to see the columns of the CUSTOMERS table, as shown in ", "bbox": {"l": 234.84026999999998, "t": 391.60873, "r": 517.36163, "b": 400.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Figure 4-7.", "bbox": {"l": 151.20016, "t": 403.60855, "r": 199.55498, "b": 412.82153, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "caption", "bbox": {"l": 64.40914916992188, "t": 612.3688354492188, "r": 293.8601989746094, "b": 622.066162109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9436265826225281, "cells": [{"id": 28, "text": "Figure 4-7 Column definitions of the CUSTOMERS table", "bbox": {"l": 64.800003, "t": 613.63789, "r": 293.4675, "b": 621.96291, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 135.87620544433594, "t": 177.42987060546875, "r": 417.8246765136719, "b": 361.81787109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9830227494239807, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 58, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.2801971435547, "t": 754.7266845703125, "r": 523.59357, "b": 764.0281372070312, "coord_origin": "TOPLEFT"}, "confidence": 0.9543154239654541, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 58, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.720947265625, "t": 754.1746215820312, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9061288833618164, "cells": [{"id": 1, "text": "43", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "43"}, {"label": "text", "id": 2, "page_no": 58, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.93377685546875, "t": 70.66082763671875, "r": 525.07031, "b": 93.04185485839844, "coord_origin": "TOPLEFT"}, "confidence": 0.9635977745056152, "cells": [{"id": 2, "text": "To review the attributes of each table that is used in this banking example, complete the ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 525.07031, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "following steps:", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 204.65807, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "To review the attributes of each table that is used in this banking example, complete the following steps:"}, {"label": "list_item", "id": 3, "page_no": 58, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 136.77842712402344, "t": 97.63013000000001, "r": 543.23035, "b": 121.82097999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.9705125689506531, "cells": [{"id": 4, "text": "1.", "bbox": {"l": 136.79959, "t": 100.48865, "r": 145.18024, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Review the columns of each the tables through System i Navigator. Expand ", "bbox": {"l": 147.97379, "t": 100.48865, "r": 486.43526999999995, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Database", "bbox": {"l": 486.41952999999995, "t": 100.48865, "r": 530.89691, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "\uf0ae", "bbox": {"l": 533.39984, "t": 97.63013000000001, "r": 543.23035, "b": 109.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "named Database", "bbox": {"l": 151.19977, "t": 112.48845999999992, "r": 230.63674999999998, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "\uf0ae", "bbox": {"l": 233.09984999999998, "t": 109.62994000000003, "r": 242.93037, "b": 121.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": " Schemas", "bbox": {"l": 243.00008999999997, "t": 112.48845999999992, "r": 289.5123, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "\uf0ae", "bbox": {"l": 292.07999, "t": 109.62994000000003, "r": 301.91049, "b": 121.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": " BANK_SCHEMA", "bbox": {"l": 301.92047, "t": 112.48845999999992, "r": 382.03775, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "\uf0ae", "bbox": {"l": 384.60043, "t": 109.62994000000003, "r": 394.43094, "b": 121.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " Tables", "bbox": {"l": 394.50067, "t": 112.48845999999992, "r": 427.25119, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": ".", "bbox": {"l": 427.86069, "t": 112.48845999999992, "r": 430.62958, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}]}, "text": "1. Review the columns of each the tables through System i Navigator. Expand Database \uf0ae named Database \uf0ae Schemas \uf0ae BANK_SCHEMA \uf0ae Tables ."}, {"label": "list_item", "id": 4, "page_no": 58, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.044677734375, "t": 128.51512145996094, "r": 546.83588, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9810754060745239, "cells": [{"id": 16, "text": "2.", "bbox": {"l": 136.8006, "t": 129.52801999999997, "r": 145.23108, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Right-click the CUSTOMERS table and select ", "bbox": {"l": 148.04124, "t": 129.52801999999997, "r": 355.32602, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Definition", "bbox": {"l": 355.32101, "t": 129.52801999999997, "r": 401.47073, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ". Figure 4-6 shows the attributes ", "bbox": {"l": 401.46072, "t": 129.52801999999997, "r": 546.83588, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "for the CUSTOMERS table. The Row access control and Column access control options ", "bbox": {"l": 151.20079, "t": 141.52783, "r": 542.72644, "b": 150.74084000000005, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "are not selected, which indicates that the table does not have RCAC implemented.", "bbox": {"l": 151.20081, "t": 153.52765, "r": 514.64014, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}}]}, "text": "2. Right-click the CUSTOMERS table and select Definition . Figure 4-6 shows the attributes for the CUSTOMERS table. The Row access control and Column access control options are not selected, which indicates that the table does not have RCAC implemented."}, {"label": "caption", "id": 5, "page_no": 58, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.25962829589844, "t": 364.7186584472656, "r": 303.7537536621094, "b": 373.983, "coord_origin": "TOPLEFT"}, "confidence": 0.9458591341972351, "cells": [{"id": 22, "text": "Figure 4-6 CUSTOMERS table attributes", "bbox": {"l": 136.8, "t": 365.65799, "r": 303.49619, "b": 373.983, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-6 CUSTOMERS table attributes"}, {"label": "list_item", "id": 6, "page_no": 58, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.99163818359375, "t": 390.5973205566406, "r": 517.36163, "b": 413.2025146484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9586500525474548, "cells": [{"id": 23, "text": "3.", "bbox": {"l": 136.8, "t": 391.60873, "r": 145.62772, "b": 400.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Click the ", "bbox": {"l": 148.57028, "t": 391.60873, "r": 192.09492, "b": 400.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Columns", "bbox": {"l": 192.11984, "t": 391.60873, "r": 234.88211000000004, "b": 400.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": " tab to see the columns of the CUSTOMERS table, as shown in ", "bbox": {"l": 234.84026999999998, "t": 391.60873, "r": 517.36163, "b": 400.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Figure 4-7.", "bbox": {"l": 151.20016, "t": 403.60855, "r": 199.55498, "b": 412.82153, "coord_origin": "TOPLEFT"}}]}, "text": "3. Click the Columns tab to see the columns of the CUSTOMERS table, as shown in Figure 4-7."}, {"label": "caption", "id": 7, "page_no": 58, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 64.40914916992188, "t": 612.3688354492188, "r": 293.8601989746094, "b": 622.066162109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9436265826225281, "cells": [{"id": 28, "text": "Figure 4-7 Column definitions of the CUSTOMERS table", "bbox": {"l": 64.800003, "t": 613.63789, "r": 293.4675, "b": 621.96291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-7 Column definitions of the CUSTOMERS table"}, {"label": "picture", "id": 8, "page_no": 58, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 135.87620544433594, "t": 177.42987060546875, "r": 417.8246765136719, "b": 361.81787109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9830227494239807, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 58, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.93377685546875, "t": 70.66082763671875, "r": 525.07031, "b": 93.04185485839844, "coord_origin": "TOPLEFT"}, "confidence": 0.9635977745056152, "cells": [{"id": 2, "text": "To review the attributes of each table that is used in this banking example, complete the ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 525.07031, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "following steps:", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 204.65807, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "To review the attributes of each table that is used in this banking example, complete the following steps:"}, {"label": "list_item", "id": 3, "page_no": 58, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 136.77842712402344, "t": 97.63013000000001, "r": 543.23035, "b": 121.82097999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.9705125689506531, "cells": [{"id": 4, "text": "1.", "bbox": {"l": 136.79959, "t": 100.48865, "r": 145.18024, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Review the columns of each the tables through System i Navigator. Expand ", "bbox": {"l": 147.97379, "t": 100.48865, "r": 486.43526999999995, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Database", "bbox": {"l": 486.41952999999995, "t": 100.48865, "r": 530.89691, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "\uf0ae", "bbox": {"l": 533.39984, "t": 97.63013000000001, "r": 543.23035, "b": 109.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "named Database", "bbox": {"l": 151.19977, "t": 112.48845999999992, "r": 230.63674999999998, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "\uf0ae", "bbox": {"l": 233.09984999999998, "t": 109.62994000000003, "r": 242.93037, "b": 121.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": " Schemas", "bbox": {"l": 243.00008999999997, "t": 112.48845999999992, "r": 289.5123, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "\uf0ae", "bbox": {"l": 292.07999, "t": 109.62994000000003, "r": 301.91049, "b": 121.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": " BANK_SCHEMA", "bbox": {"l": 301.92047, "t": 112.48845999999992, "r": 382.03775, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "\uf0ae", "bbox": {"l": 384.60043, "t": 109.62994000000003, "r": 394.43094, "b": 121.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " Tables", "bbox": {"l": 394.50067, "t": 112.48845999999992, "r": 427.25119, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": ".", "bbox": {"l": 427.86069, "t": 112.48845999999992, "r": 430.62958, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}]}, "text": "1. Review the columns of each the tables through System i Navigator. Expand Database \uf0ae named Database \uf0ae Schemas \uf0ae BANK_SCHEMA \uf0ae Tables ."}, {"label": "list_item", "id": 4, "page_no": 58, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.044677734375, "t": 128.51512145996094, "r": 546.83588, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9810754060745239, "cells": [{"id": 16, "text": "2.", "bbox": {"l": 136.8006, "t": 129.52801999999997, "r": 145.23108, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Right-click the CUSTOMERS table and select ", "bbox": {"l": 148.04124, "t": 129.52801999999997, "r": 355.32602, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Definition", "bbox": {"l": 355.32101, "t": 129.52801999999997, "r": 401.47073, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ". Figure 4-6 shows the attributes ", "bbox": {"l": 401.46072, "t": 129.52801999999997, "r": 546.83588, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "for the CUSTOMERS table. The Row access control and Column access control options ", "bbox": {"l": 151.20079, "t": 141.52783, "r": 542.72644, "b": 150.74084000000005, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "are not selected, which indicates that the table does not have RCAC implemented.", "bbox": {"l": 151.20081, "t": 153.52765, "r": 514.64014, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}}]}, "text": "2. Right-click the CUSTOMERS table and select Definition . Figure 4-6 shows the attributes for the CUSTOMERS table. The Row access control and Column access control options are not selected, which indicates that the table does not have RCAC implemented."}, {"label": "caption", "id": 5, "page_no": 58, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.25962829589844, "t": 364.7186584472656, "r": 303.7537536621094, "b": 373.983, "coord_origin": "TOPLEFT"}, "confidence": 0.9458591341972351, "cells": [{"id": 22, "text": "Figure 4-6 CUSTOMERS table attributes", "bbox": {"l": 136.8, "t": 365.65799, "r": 303.49619, "b": 373.983, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-6 CUSTOMERS table attributes"}, {"label": "list_item", "id": 6, "page_no": 58, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.99163818359375, "t": 390.5973205566406, "r": 517.36163, "b": 413.2025146484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9586500525474548, "cells": [{"id": 23, "text": "3.", "bbox": {"l": 136.8, "t": 391.60873, "r": 145.62772, "b": 400.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Click the ", "bbox": {"l": 148.57028, "t": 391.60873, "r": 192.09492, "b": 400.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Columns", "bbox": {"l": 192.11984, "t": 391.60873, "r": 234.88211000000004, "b": 400.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": " tab to see the columns of the CUSTOMERS table, as shown in ", "bbox": {"l": 234.84026999999998, "t": 391.60873, "r": 517.36163, "b": 400.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Figure 4-7.", "bbox": {"l": 151.20016, "t": 403.60855, "r": 199.55498, "b": 412.82153, "coord_origin": "TOPLEFT"}}]}, "text": "3. Click the Columns tab to see the columns of the CUSTOMERS table, as shown in Figure 4-7."}, {"label": "caption", "id": 7, "page_no": 58, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 64.40914916992188, "t": 612.3688354492188, "r": 293.8601989746094, "b": 622.066162109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9436265826225281, "cells": [{"id": 28, "text": "Figure 4-7 Column definitions of the CUSTOMERS table", "bbox": {"l": 64.800003, "t": 613.63789, "r": 293.4675, "b": 621.96291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-7 Column definitions of the CUSTOMERS table"}, {"label": "picture", "id": 8, "page_no": 58, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 135.87620544433594, "t": 177.42987060546875, "r": 417.8246765136719, "b": 361.81787109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9830227494239807, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 58, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.2801971435547, "t": 754.7266845703125, "r": 523.59357, "b": 764.0281372070312, "coord_origin": "TOPLEFT"}, "confidence": 0.9543154239654541, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 58, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.720947265625, "t": 754.1746215820312, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9061288833618164, "cells": [{"id": 1, "text": "43", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "43"}]}}, {"page_no": 59, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "44 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "4.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.62772, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Click the ", "bbox": {"l": 148.57028, "t": 71.50867000000005, "r": 192.09492, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Key Constraints", "bbox": {"l": 192.11984, "t": 71.50867000000005, "r": 268.44635, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": ", ", "bbox": {"l": 268.26007, "t": 71.50867000000005, "r": 273.89941, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Foreign Key Constraints", "bbox": {"l": 273.83966, "t": 71.50867000000005, "r": 389.64954, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": ", and ", "bbox": {"l": 389.45932, "t": 71.50867000000005, "r": 414.47784, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Check Constraints ", "bbox": {"l": 414.47983, "t": 71.50867000000005, "r": 505.37079, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "tabs to ", "bbox": {"l": 505.37976, "t": 71.50867000000005, "r": 538.20105, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "review the key, foreign, and check constraints on the CUSTOMERS table, as shown in ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 532.73871, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Figure 4-8. There are no Foreign Key Constraints or Check Constraints on the ", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 497.69751, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CUSTOMERS table.", "bbox": {"l": 151.20016, "t": 107.50811999999996, "r": 241.55133, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Figure 4-8 Reviewing the constraints on the CUSTOMERS table", "bbox": {"l": 136.8, "t": 309.49799, "r": 395.883, "b": 317.823, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "5.", "bbox": {"l": 136.8, "t": 335.44873, "r": 145.16769, "b": 344.66171, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Review the definition of the ACCOUNTS table. The definition of the ACCOUNTS table is ", "bbox": {"l": 147.95692, "t": 335.44873, "r": 542.19183, "b": 344.66171, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "shown in Figure 4-9. RCAC has not been defined for this table yet.", "bbox": {"l": 151.20016, "t": 347.44855, "r": 443.98938000000004, "b": 356.66153, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Figure 4-9 ACCOUNTS table attributes", "bbox": {"l": 136.8, "t": 563.8979899999999, "r": 296.60315, "b": 572.2230099999999, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.17613220214844, "t": 754.111572265625, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8975403904914856, "cells": [{"id": 0, "text": "44 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.36976623535156, "t": 754.63330078125, "r": 334.42142, "b": 764.0048217773438, "coord_origin": "TOPLEFT"}, "confidence": 0.9470958709716797, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 135.88308715820312, "t": 70.43685150146484, "r": 538.20105, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9693993330001831, "cells": [{"id": 2, "text": "4.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.62772, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Click the ", "bbox": {"l": 148.57028, "t": 71.50867000000005, "r": 192.09492, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Key Constraints", "bbox": {"l": 192.11984, "t": 71.50867000000005, "r": 268.44635, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": ", ", "bbox": {"l": 268.26007, "t": 71.50867000000005, "r": 273.89941, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Foreign Key Constraints", "bbox": {"l": 273.83966, "t": 71.50867000000005, "r": 389.64954, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": ", and ", "bbox": {"l": 389.45932, "t": 71.50867000000005, "r": 414.47784, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Check Constraints ", "bbox": {"l": 414.47983, "t": 71.50867000000005, "r": 505.37079, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "tabs to ", "bbox": {"l": 505.37976, "t": 71.50867000000005, "r": 538.20105, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "review the key, foreign, and check constraints on the CUSTOMERS table, as shown in ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 532.73871, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Figure 4-8. There are no Foreign Key Constraints or Check Constraints on the ", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 497.69751, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CUSTOMERS table.", "bbox": {"l": 151.20016, "t": 107.50811999999996, "r": 241.55133, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.06980895996094, "t": 308.5224304199219, "r": 396.0132141113281, "b": 317.984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9484499096870422, "cells": [{"id": 13, "text": "Figure 4-8 Reviewing the constraints on the CUSTOMERS table", "bbox": {"l": 136.8, "t": 309.49799, "r": 395.883, "b": 317.823, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 136.2538299560547, "t": 334.63983154296875, "r": 542.19183, "b": 357.26708984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9527929425239563, "cells": [{"id": 14, "text": "5.", "bbox": {"l": 136.8, "t": 335.44873, "r": 145.16769, "b": 344.66171, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Review the definition of the ACCOUNTS table. The definition of the ACCOUNTS table is ", "bbox": {"l": 147.95692, "t": 335.44873, "r": 542.19183, "b": 344.66171, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "shown in Figure 4-9. RCAC has not been defined for this table yet.", "bbox": {"l": 151.20016, "t": 347.44855, "r": 443.98938000000004, "b": 356.66153, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 136.27098083496094, "t": 563.2742919921875, "r": 297.00921630859375, "b": 572.619384765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9486443996429443, "cells": [{"id": 17, "text": "Figure 4-9 ACCOUNTS table attributes", "bbox": {"l": 136.8, "t": 563.8979899999999, "r": 296.60315, "b": 572.2230099999999, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "picture", "bbox": {"l": 134.96737670898438, "t": 370.881591796875, "r": 457.1007080078125, "b": 560.7245483398438, "coord_origin": "TOPLEFT"}, "confidence": 0.9808177947998047, "cells": []}, {"id": 7, "label": "picture", "bbox": {"l": 135.36148071289062, "t": 131.26109313964844, "r": 533.2239379882812, "b": 305.0644836425781, "coord_origin": "TOPLEFT"}, "confidence": 0.9682222604751587, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 59, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.17613220214844, "t": 754.111572265625, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8975403904914856, "cells": [{"id": 0, "text": "44 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "44"}, {"label": "page_footer", "id": 1, "page_no": 59, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.36976623535156, "t": 754.63330078125, "r": 334.42142, "b": 764.0048217773438, "coord_origin": "TOPLEFT"}, "confidence": 0.9470958709716797, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "list_item", "id": 2, "page_no": 59, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.88308715820312, "t": 70.43685150146484, "r": 538.20105, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9693993330001831, "cells": [{"id": 2, "text": "4.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.62772, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Click the ", "bbox": {"l": 148.57028, "t": 71.50867000000005, "r": 192.09492, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Key Constraints", "bbox": {"l": 192.11984, "t": 71.50867000000005, "r": 268.44635, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": ", ", "bbox": {"l": 268.26007, "t": 71.50867000000005, "r": 273.89941, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Foreign Key Constraints", "bbox": {"l": 273.83966, "t": 71.50867000000005, "r": 389.64954, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": ", and ", "bbox": {"l": 389.45932, "t": 71.50867000000005, "r": 414.47784, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Check Constraints ", "bbox": {"l": 414.47983, "t": 71.50867000000005, "r": 505.37079, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "tabs to ", "bbox": {"l": 505.37976, "t": 71.50867000000005, "r": 538.20105, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "review the key, foreign, and check constraints on the CUSTOMERS table, as shown in ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 532.73871, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Figure 4-8. There are no Foreign Key Constraints or Check Constraints on the ", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 497.69751, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CUSTOMERS table.", "bbox": {"l": 151.20016, "t": 107.50811999999996, "r": 241.55133, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "4. Click the Key Constraints , Foreign Key Constraints , and Check Constraints tabs to review the key, foreign, and check constraints on the CUSTOMERS table, as shown in Figure 4-8. There are no Foreign Key Constraints or Check Constraints on the CUSTOMERS table."}, {"label": "caption", "id": 3, "page_no": 59, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.06980895996094, "t": 308.5224304199219, "r": 396.0132141113281, "b": 317.984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9484499096870422, "cells": [{"id": 13, "text": "Figure 4-8 Reviewing the constraints on the CUSTOMERS table", "bbox": {"l": 136.8, "t": 309.49799, "r": 395.883, "b": 317.823, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-8 Reviewing the constraints on the CUSTOMERS table"}, {"label": "list_item", "id": 4, "page_no": 59, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.2538299560547, "t": 334.63983154296875, "r": 542.19183, "b": 357.26708984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9527929425239563, "cells": [{"id": 14, "text": "5.", "bbox": {"l": 136.8, "t": 335.44873, "r": 145.16769, "b": 344.66171, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Review the definition of the ACCOUNTS table. The definition of the ACCOUNTS table is ", "bbox": {"l": 147.95692, "t": 335.44873, "r": 542.19183, "b": 344.66171, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "shown in Figure 4-9. RCAC has not been defined for this table yet.", "bbox": {"l": 151.20016, "t": 347.44855, "r": 443.98938000000004, "b": 356.66153, "coord_origin": "TOPLEFT"}}]}, "text": "5. Review the definition of the ACCOUNTS table. The definition of the ACCOUNTS table is shown in Figure 4-9. RCAC has not been defined for this table yet."}, {"label": "caption", "id": 5, "page_no": 59, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.27098083496094, "t": 563.2742919921875, "r": 297.00921630859375, "b": 572.619384765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9486443996429443, "cells": [{"id": 17, "text": "Figure 4-9 ACCOUNTS table attributes", "bbox": {"l": 136.8, "t": 563.8979899999999, "r": 296.60315, "b": 572.2230099999999, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-9 ACCOUNTS table attributes"}, {"label": "picture", "id": 6, "page_no": 59, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 134.96737670898438, "t": 370.881591796875, "r": 457.1007080078125, "b": 560.7245483398438, "coord_origin": "TOPLEFT"}, "confidence": 0.9808177947998047, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 7, "page_no": 59, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 135.36148071289062, "t": 131.26109313964844, "r": 533.2239379882812, "b": 305.0644836425781, "coord_origin": "TOPLEFT"}, "confidence": 0.9682222604751587, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 59, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.88308715820312, "t": 70.43685150146484, "r": 538.20105, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9693993330001831, "cells": [{"id": 2, "text": "4.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.62772, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Click the ", "bbox": {"l": 148.57028, "t": 71.50867000000005, "r": 192.09492, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Key Constraints", "bbox": {"l": 192.11984, "t": 71.50867000000005, "r": 268.44635, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": ", ", "bbox": {"l": 268.26007, "t": 71.50867000000005, "r": 273.89941, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Foreign Key Constraints", "bbox": {"l": 273.83966, "t": 71.50867000000005, "r": 389.64954, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": ", and ", "bbox": {"l": 389.45932, "t": 71.50867000000005, "r": 414.47784, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Check Constraints ", "bbox": {"l": 414.47983, "t": 71.50867000000005, "r": 505.37079, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "tabs to ", "bbox": {"l": 505.37976, "t": 71.50867000000005, "r": 538.20105, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "review the key, foreign, and check constraints on the CUSTOMERS table, as shown in ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 532.73871, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Figure 4-8. There are no Foreign Key Constraints or Check Constraints on the ", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 497.69751, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CUSTOMERS table.", "bbox": {"l": 151.20016, "t": 107.50811999999996, "r": 241.55133, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "4. Click the Key Constraints , Foreign Key Constraints , and Check Constraints tabs to review the key, foreign, and check constraints on the CUSTOMERS table, as shown in Figure 4-8. There are no Foreign Key Constraints or Check Constraints on the CUSTOMERS table."}, {"label": "caption", "id": 3, "page_no": 59, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.06980895996094, "t": 308.5224304199219, "r": 396.0132141113281, "b": 317.984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9484499096870422, "cells": [{"id": 13, "text": "Figure 4-8 Reviewing the constraints on the CUSTOMERS table", "bbox": {"l": 136.8, "t": 309.49799, "r": 395.883, "b": 317.823, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-8 Reviewing the constraints on the CUSTOMERS table"}, {"label": "list_item", "id": 4, "page_no": 59, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.2538299560547, "t": 334.63983154296875, "r": 542.19183, "b": 357.26708984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9527929425239563, "cells": [{"id": 14, "text": "5.", "bbox": {"l": 136.8, "t": 335.44873, "r": 145.16769, "b": 344.66171, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Review the definition of the ACCOUNTS table. The definition of the ACCOUNTS table is ", "bbox": {"l": 147.95692, "t": 335.44873, "r": 542.19183, "b": 344.66171, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "shown in Figure 4-9. RCAC has not been defined for this table yet.", "bbox": {"l": 151.20016, "t": 347.44855, "r": 443.98938000000004, "b": 356.66153, "coord_origin": "TOPLEFT"}}]}, "text": "5. Review the definition of the ACCOUNTS table. The definition of the ACCOUNTS table is shown in Figure 4-9. RCAC has not been defined for this table yet."}, {"label": "caption", "id": 5, "page_no": 59, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.27098083496094, "t": 563.2742919921875, "r": 297.00921630859375, "b": 572.619384765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9486443996429443, "cells": [{"id": 17, "text": "Figure 4-9 ACCOUNTS table attributes", "bbox": {"l": 136.8, "t": 563.8979899999999, "r": 296.60315, "b": 572.2230099999999, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-9 ACCOUNTS table attributes"}, {"label": "picture", "id": 6, "page_no": 59, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 134.96737670898438, "t": 370.881591796875, "r": 457.1007080078125, "b": 560.7245483398438, "coord_origin": "TOPLEFT"}, "confidence": 0.9808177947998047, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 7, "page_no": 59, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 135.36148071289062, "t": 131.26109313964844, "r": 533.2239379882812, "b": 305.0644836425781, "coord_origin": "TOPLEFT"}, "confidence": 0.9682222604751587, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 59, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.17613220214844, "t": 754.111572265625, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8975403904914856, "cells": [{"id": 0, "text": "44 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "44"}, {"label": "page_footer", "id": 1, "page_no": 59, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.36976623535156, "t": 754.63330078125, "r": 334.42142, "b": 764.0048217773438, "coord_origin": "TOPLEFT"}, "confidence": 0.9470958709716797, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 60, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "45", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "6.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.6273, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Click the ", "bbox": {"l": 148.56987, "t": 71.50903000000005, "r": 192.0945, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Columns", "bbox": {"l": 192.11943, "t": 71.50903000000005, "r": 234.88168, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": " tab to see the columns of the ACCOUNTS table, as shown in ", "bbox": {"l": 234.83986, "t": 71.50903000000005, "r": 509.63537999999994, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Figure 4-10.", "bbox": {"l": 151.19977, "t": 83.50885000000017, "r": 205.13313, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Figure 4-10 Column definitions of the ACCOUNTS table", "bbox": {"l": 64.800003, "t": 238.51801, "r": 291.57025, "b": 246.84295999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "7.", "bbox": {"l": 136.8, "t": 264.52855999999997, "r": 145.62772, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Click the ", "bbox": {"l": 148.57028, "t": 264.52855999999997, "r": 192.09492, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Key Constraints", "bbox": {"l": 192.11984, "t": 264.52855999999997, "r": 268.44635, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": ", ", "bbox": {"l": 268.26007, "t": 264.52855999999997, "r": 273.89941, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Foreign Key Constraints", "bbox": {"l": 273.83966, "t": 264.52855999999997, "r": 389.64954, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": ", and ", "bbox": {"l": 389.45932, "t": 264.52855999999997, "r": 414.47784, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Check Constraints ", "bbox": {"l": 414.47983, "t": 264.52855999999997, "r": 505.37079, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "tabs to ", "bbox": {"l": 505.37976, "t": 264.52855999999997, "r": 538.20105, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "review the key, foreign, and check constraints on the ACCOUNTS table, as shown in ", "bbox": {"l": 151.20016, "t": 276.52837999999997, "r": 525.10461, "b": 285.74139, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Figure 4-11. There is one Foreign Key Constraint and no Check Constraints on the ", "bbox": {"l": 151.20016, "t": 288.52823, "r": 518.26709, "b": 297.74120999999997, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ACCOUNTS table.", "bbox": {"l": 151.20016, "t": 300.52805, "r": 233.81839, "b": 309.7410300000001, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Figure 4-11 Reviewing the constraints on the ACCOUNTS table", "bbox": {"l": 64.800003, "t": 488.17801, "r": 322.01459, "b": 496.50302, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 214.28741455078125, "t": 754.7380981445312, "r": 523.59357, "b": 764.0592041015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9521146416664124, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.7454833984375, "t": 754.0681762695312, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8975669741630554, "cells": [{"id": 1, "text": "45", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 135.9091033935547, "t": 70.44548034667969, "r": 509.63537999999994, "b": 93.29779815673828, "coord_origin": "TOPLEFT"}, "confidence": 0.9061452746391296, "cells": [{"id": 2, "text": "6.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.6273, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Click the ", "bbox": {"l": 148.56987, "t": 71.50903000000005, "r": 192.0945, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Columns", "bbox": {"l": 192.11943, "t": 71.50903000000005, "r": 234.88168, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": " tab to see the columns of the ACCOUNTS table, as shown in ", "bbox": {"l": 234.83986, "t": 71.50903000000005, "r": 509.63537999999994, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Figure 4-10.", "bbox": {"l": 151.19977, "t": 83.50885000000017, "r": 205.13313, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.17601013183594, "t": 237.03350830078125, "r": 291.64111328125, "b": 246.84295999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9145481586456299, "cells": [{"id": 7, "text": "Figure 4-10 Column definitions of the ACCOUNTS table", "bbox": {"l": 64.800003, "t": 238.51801, "r": 291.57025, "b": 246.84295999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 136.2264404296875, "t": 263.83184814453125, "r": 538.20105, "b": 309.7410300000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9501693248748779, "cells": [{"id": 8, "text": "7.", "bbox": {"l": 136.8, "t": 264.52855999999997, "r": 145.62772, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Click the ", "bbox": {"l": 148.57028, "t": 264.52855999999997, "r": 192.09492, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Key Constraints", "bbox": {"l": 192.11984, "t": 264.52855999999997, "r": 268.44635, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": ", ", "bbox": {"l": 268.26007, "t": 264.52855999999997, "r": 273.89941, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Foreign Key Constraints", "bbox": {"l": 273.83966, "t": 264.52855999999997, "r": 389.64954, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": ", and ", "bbox": {"l": 389.45932, "t": 264.52855999999997, "r": 414.47784, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Check Constraints ", "bbox": {"l": 414.47983, "t": 264.52855999999997, "r": 505.37079, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "tabs to ", "bbox": {"l": 505.37976, "t": 264.52855999999997, "r": 538.20105, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "review the key, foreign, and check constraints on the ACCOUNTS table, as shown in ", "bbox": {"l": 151.20016, "t": 276.52837999999997, "r": 525.10461, "b": 285.74139, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Figure 4-11. There is one Foreign Key Constraint and no Check Constraints on the ", "bbox": {"l": 151.20016, "t": 288.52823, "r": 518.26709, "b": 297.74120999999997, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ACCOUNTS table.", "bbox": {"l": 151.20016, "t": 300.52805, "r": 233.81839, "b": 309.7410300000001, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 64.48716735839844, "t": 487.4658203125, "r": 322.23956298828125, "b": 496.8700866699219, "coord_origin": "TOPLEFT"}, "confidence": 0.9331468939781189, "cells": [{"id": 19, "text": "Figure 4-11 Reviewing the constraints on the ACCOUNTS table", "bbox": {"l": 64.800003, "t": 488.17801, "r": 322.01459, "b": 496.50302, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "picture", "bbox": {"l": 63.629615783691406, "t": 323.9850769042969, "r": 546.4091796875, "b": 483.8927001953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9249711632728577, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 60, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.28741455078125, "t": 754.7380981445312, "r": 523.59357, "b": 764.0592041015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9521146416664124, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 60, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.7454833984375, "t": 754.0681762695312, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8975669741630554, "cells": [{"id": 1, "text": "45", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "45"}, {"label": "list_item", "id": 2, "page_no": 60, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.9091033935547, "t": 70.44548034667969, "r": 509.63537999999994, "b": 93.29779815673828, "coord_origin": "TOPLEFT"}, "confidence": 0.9061452746391296, "cells": [{"id": 2, "text": "6.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.6273, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Click the ", "bbox": {"l": 148.56987, "t": 71.50903000000005, "r": 192.0945, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Columns", "bbox": {"l": 192.11943, "t": 71.50903000000005, "r": 234.88168, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": " tab to see the columns of the ACCOUNTS table, as shown in ", "bbox": {"l": 234.83986, "t": 71.50903000000005, "r": 509.63537999999994, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Figure 4-10.", "bbox": {"l": 151.19977, "t": 83.50885000000017, "r": 205.13313, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "6. Click the Columns tab to see the columns of the ACCOUNTS table, as shown in Figure 4-10."}, {"label": "caption", "id": 3, "page_no": 60, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.17601013183594, "t": 237.03350830078125, "r": 291.64111328125, "b": 246.84295999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9145481586456299, "cells": [{"id": 7, "text": "Figure 4-10 Column definitions of the ACCOUNTS table", "bbox": {"l": 64.800003, "t": 238.51801, "r": 291.57025, "b": 246.84295999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-10 Column definitions of the ACCOUNTS table"}, {"label": "list_item", "id": 4, "page_no": 60, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.2264404296875, "t": 263.83184814453125, "r": 538.20105, "b": 309.7410300000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9501693248748779, "cells": [{"id": 8, "text": "7.", "bbox": {"l": 136.8, "t": 264.52855999999997, "r": 145.62772, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Click the ", "bbox": {"l": 148.57028, "t": 264.52855999999997, "r": 192.09492, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Key Constraints", "bbox": {"l": 192.11984, "t": 264.52855999999997, "r": 268.44635, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": ", ", "bbox": {"l": 268.26007, "t": 264.52855999999997, "r": 273.89941, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Foreign Key Constraints", "bbox": {"l": 273.83966, "t": 264.52855999999997, "r": 389.64954, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": ", and ", "bbox": {"l": 389.45932, "t": 264.52855999999997, "r": 414.47784, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Check Constraints ", "bbox": {"l": 414.47983, "t": 264.52855999999997, "r": 505.37079, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "tabs to ", "bbox": {"l": 505.37976, "t": 264.52855999999997, "r": 538.20105, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "review the key, foreign, and check constraints on the ACCOUNTS table, as shown in ", "bbox": {"l": 151.20016, "t": 276.52837999999997, "r": 525.10461, "b": 285.74139, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Figure 4-11. There is one Foreign Key Constraint and no Check Constraints on the ", "bbox": {"l": 151.20016, "t": 288.52823, "r": 518.26709, "b": 297.74120999999997, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ACCOUNTS table.", "bbox": {"l": 151.20016, "t": 300.52805, "r": 233.81839, "b": 309.7410300000001, "coord_origin": "TOPLEFT"}}]}, "text": "7. Click the Key Constraints , Foreign Key Constraints , and Check Constraints tabs to review the key, foreign, and check constraints on the ACCOUNTS table, as shown in Figure 4-11. There is one Foreign Key Constraint and no Check Constraints on the ACCOUNTS table."}, {"label": "caption", "id": 5, "page_no": 60, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.48716735839844, "t": 487.4658203125, "r": 322.23956298828125, "b": 496.8700866699219, "coord_origin": "TOPLEFT"}, "confidence": 0.9331468939781189, "cells": [{"id": 19, "text": "Figure 4-11 Reviewing the constraints on the ACCOUNTS table", "bbox": {"l": 64.800003, "t": 488.17801, "r": 322.01459, "b": 496.50302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-11 Reviewing the constraints on the ACCOUNTS table"}, {"label": "picture", "id": 6, "page_no": 60, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 63.629615783691406, "t": 323.9850769042969, "r": 546.4091796875, "b": 483.8927001953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9249711632728577, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 60, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.9091033935547, "t": 70.44548034667969, "r": 509.63537999999994, "b": 93.29779815673828, "coord_origin": "TOPLEFT"}, "confidence": 0.9061452746391296, "cells": [{"id": 2, "text": "6.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.6273, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Click the ", "bbox": {"l": 148.56987, "t": 71.50903000000005, "r": 192.0945, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Columns", "bbox": {"l": 192.11943, "t": 71.50903000000005, "r": 234.88168, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": " tab to see the columns of the ACCOUNTS table, as shown in ", "bbox": {"l": 234.83986, "t": 71.50903000000005, "r": 509.63537999999994, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Figure 4-10.", "bbox": {"l": 151.19977, "t": 83.50885000000017, "r": 205.13313, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "6. Click the Columns tab to see the columns of the ACCOUNTS table, as shown in Figure 4-10."}, {"label": "caption", "id": 3, "page_no": 60, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.17601013183594, "t": 237.03350830078125, "r": 291.64111328125, "b": 246.84295999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9145481586456299, "cells": [{"id": 7, "text": "Figure 4-10 Column definitions of the ACCOUNTS table", "bbox": {"l": 64.800003, "t": 238.51801, "r": 291.57025, "b": 246.84295999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-10 Column definitions of the ACCOUNTS table"}, {"label": "list_item", "id": 4, "page_no": 60, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.2264404296875, "t": 263.83184814453125, "r": 538.20105, "b": 309.7410300000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9501693248748779, "cells": [{"id": 8, "text": "7.", "bbox": {"l": 136.8, "t": 264.52855999999997, "r": 145.62772, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Click the ", "bbox": {"l": 148.57028, "t": 264.52855999999997, "r": 192.09492, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Key Constraints", "bbox": {"l": 192.11984, "t": 264.52855999999997, "r": 268.44635, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": ", ", "bbox": {"l": 268.26007, "t": 264.52855999999997, "r": 273.89941, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Foreign Key Constraints", "bbox": {"l": 273.83966, "t": 264.52855999999997, "r": 389.64954, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": ", and ", "bbox": {"l": 389.45932, "t": 264.52855999999997, "r": 414.47784, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Check Constraints ", "bbox": {"l": 414.47983, "t": 264.52855999999997, "r": 505.37079, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "tabs to ", "bbox": {"l": 505.37976, "t": 264.52855999999997, "r": 538.20105, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "review the key, foreign, and check constraints on the ACCOUNTS table, as shown in ", "bbox": {"l": 151.20016, "t": 276.52837999999997, "r": 525.10461, "b": 285.74139, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Figure 4-11. There is one Foreign Key Constraint and no Check Constraints on the ", "bbox": {"l": 151.20016, "t": 288.52823, "r": 518.26709, "b": 297.74120999999997, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ACCOUNTS table.", "bbox": {"l": 151.20016, "t": 300.52805, "r": 233.81839, "b": 309.7410300000001, "coord_origin": "TOPLEFT"}}]}, "text": "7. Click the Key Constraints , Foreign Key Constraints , and Check Constraints tabs to review the key, foreign, and check constraints on the ACCOUNTS table, as shown in Figure 4-11. There is one Foreign Key Constraint and no Check Constraints on the ACCOUNTS table."}, {"label": "caption", "id": 5, "page_no": 60, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.48716735839844, "t": 487.4658203125, "r": 322.23956298828125, "b": 496.8700866699219, "coord_origin": "TOPLEFT"}, "confidence": 0.9331468939781189, "cells": [{"id": 19, "text": "Figure 4-11 Reviewing the constraints on the ACCOUNTS table", "bbox": {"l": 64.800003, "t": 488.17801, "r": 322.01459, "b": 496.50302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-11 Reviewing the constraints on the ACCOUNTS table"}, {"label": "picture", "id": 6, "page_no": 60, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 63.629615783691406, "t": 323.9850769042969, "r": 546.4091796875, "b": 483.8927001953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9249711632728577, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 60, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.28741455078125, "t": 754.7380981445312, "r": 523.59357, "b": 764.0592041015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9521146416664124, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 60, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.7454833984375, "t": 754.0681762695312, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8975669741630554, "cells": [{"id": 1, "text": "45", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "45"}]}}, {"page_no": 61, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "46 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "8.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.06769, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Review the definition of the TRANSACTIONS table. The definition of the TRANSACTIONS ", "bbox": {"l": 147.82356, "t": 71.50867000000005, "r": 547.25958, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "table is shown in Figure 4-12. RCAC is not defined for this table yet.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 449.76917, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Figure 4-12 TRANSACTIONS table attributes", "bbox": {"l": 136.8, "t": 299.95801, "r": 321.56638, "b": 308.28302, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "9.", "bbox": {"l": 136.8, "t": 325.90872, "r": 145.62772, "b": 335.1217, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Click the ", "bbox": {"l": 148.57028, "t": 325.90872, "r": 192.09492, "b": 335.1217, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Columns", "bbox": {"l": 192.11984, "t": 325.90872, "r": 234.88211000000004, "b": 335.1217, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": " tab to see the columns of the TRANSACTIONS table, as shown in ", "bbox": {"l": 234.84026999999998, "t": 325.90872, "r": 531.82043, "b": 335.1217, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Figure 4-13.", "bbox": {"l": 151.20016, "t": 337.90854, "r": 205.13353, "b": 347.1215199999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Figure 4-13 Column definitions of the TRANSACTIONS table", "bbox": {"l": 136.8, "t": 483.31799, "r": 383.62402, "b": 491.64301, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "10.Click the ", "bbox": {"l": 136.8, "t": 509.32861, "r": 192.09694, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Key Constraints", "bbox": {"l": 192.11984, "t": 509.32861, "r": 268.44635, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ", ", "bbox": {"l": 268.26007, "t": 509.32861, "r": 273.89941, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Foreign Key Constraints", "bbox": {"l": 273.83966, "t": 509.32861, "r": 389.64954, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ", and ", "bbox": {"l": 389.45932, "t": 509.32861, "r": 414.47784, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Check Constraints ", "bbox": {"l": 414.47983, "t": 509.32861, "r": 505.37079, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "tabs to ", "bbox": {"l": 505.37976, "t": 509.32861, "r": 538.20105, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "review the key, foreign, and check constraints on the TRANSACTIONS table, as shown in ", "bbox": {"l": 151.20016, "t": 521.32843, "r": 547.3941, "b": 530.54141, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Figure 4-14. There is one Foreign Key Constraint and one Check Constraint on the ", "bbox": {"l": 151.20016, "t": 533.32822, "r": 518.87848, "b": 542.54123, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "TRANSACTIONS table.", "bbox": {"l": 151.20016, "t": 545.32803, "r": 256.03613, "b": 554.54103, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Figure 4-14 Reviewing the constraints on the TRANSACTIONS table", "bbox": {"l": 64.800003, "t": 725.837997, "r": 342.01257, "b": 734.162998, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.11357116699219, "t": 754.0479125976562, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8953660130500793, "cells": [{"id": 0, "text": "46 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.1781997680664, "t": 754.6085205078125, "r": 334.42142, "b": 764.017578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9389416575431824, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 136.05352783203125, "t": 70.39522552490234, "r": 547.25958, "b": 93.26668548583984, "coord_origin": "TOPLEFT"}, "confidence": 0.9381867051124573, "cells": [{"id": 2, "text": "8.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.06769, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Review the definition of the TRANSACTIONS table. The definition of the TRANSACTIONS ", "bbox": {"l": 147.82356, "t": 71.50867000000005, "r": 547.25958, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "table is shown in Figure 4-12. RCAC is not defined for this table yet.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 449.76917, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.08340454101562, "t": 299.330322265625, "r": 321.95263671875, "b": 308.88140869140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9399792551994324, "cells": [{"id": 5, "text": "Figure 4-12 TRANSACTIONS table attributes", "bbox": {"l": 136.8, "t": 299.95801, "r": 321.56638, "b": 308.28302, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 136.10157775878906, "t": 325.2121887207031, "r": 531.82043, "b": 348.0757141113281, "coord_origin": "TOPLEFT"}, "confidence": 0.9077776670455933, "cells": [{"id": 6, "text": "9.", "bbox": {"l": 136.8, "t": 325.90872, "r": 145.62772, "b": 335.1217, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Click the ", "bbox": {"l": 148.57028, "t": 325.90872, "r": 192.09492, "b": 335.1217, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Columns", "bbox": {"l": 192.11984, "t": 325.90872, "r": 234.88211000000004, "b": 335.1217, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": " tab to see the columns of the TRANSACTIONS table, as shown in ", "bbox": {"l": 234.84026999999998, "t": 325.90872, "r": 531.82043, "b": 335.1217, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Figure 4-13.", "bbox": {"l": 151.20016, "t": 337.90854, "r": 205.13353, "b": 347.1215199999999, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 136.23361206054688, "t": 482.2267150878906, "r": 383.62402, "b": 492.1814270019531, "coord_origin": "TOPLEFT"}, "confidence": 0.9186105132102966, "cells": [{"id": 11, "text": "Figure 4-13 Column definitions of the TRANSACTIONS table", "bbox": {"l": 136.8, "t": 483.31799, "r": 383.62402, "b": 491.64301, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 136.8, "t": 508.458251953125, "r": 547.3941, "b": 554.54103, "coord_origin": "TOPLEFT"}, "confidence": 0.7894290685653687, "cells": [{"id": 12, "text": "10.Click the ", "bbox": {"l": 136.8, "t": 509.32861, "r": 192.09694, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Key Constraints", "bbox": {"l": 192.11984, "t": 509.32861, "r": 268.44635, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ", ", "bbox": {"l": 268.26007, "t": 509.32861, "r": 273.89941, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Foreign Key Constraints", "bbox": {"l": 273.83966, "t": 509.32861, "r": 389.64954, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ", and ", "bbox": {"l": 389.45932, "t": 509.32861, "r": 414.47784, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Check Constraints ", "bbox": {"l": 414.47983, "t": 509.32861, "r": 505.37079, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "tabs to ", "bbox": {"l": 505.37976, "t": 509.32861, "r": 538.20105, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "review the key, foreign, and check constraints on the TRANSACTIONS table, as shown in ", "bbox": {"l": 151.20016, "t": 521.32843, "r": 547.3941, "b": 530.54141, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Figure 4-14. There is one Foreign Key Constraint and one Check Constraint on the ", "bbox": {"l": 151.20016, "t": 533.32822, "r": 518.87848, "b": 542.54123, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "TRANSACTIONS table.", "bbox": {"l": 151.20016, "t": 545.32803, "r": 256.03613, "b": 554.54103, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "caption", "bbox": {"l": 64.34345245361328, "t": 724.33056640625, "r": 342.01257, "b": 734.162998, "coord_origin": "TOPLEFT"}, "confidence": 0.927774965763092, "cells": [{"id": 22, "text": "Figure 4-14 Reviewing the constraints on the TRANSACTIONS table", "bbox": {"l": 64.800003, "t": 725.837997, "r": 342.01257, "b": 734.162998, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 135.87826538085938, "t": 107.37496948242188, "r": 451.5091857910156, "b": 296.46051025390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9791154861450195, "cells": []}, {"id": 9, "label": "picture", "bbox": {"l": 63.676544189453125, "t": 568.8480224609375, "r": 546.6666870117188, "b": 722.6273803710938, "coord_origin": "TOPLEFT"}, "confidence": 0.9123829007148743, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 61, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.11357116699219, "t": 754.0479125976562, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8953660130500793, "cells": [{"id": 0, "text": "46 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "46"}, {"label": "page_footer", "id": 1, "page_no": 61, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.1781997680664, "t": 754.6085205078125, "r": 334.42142, "b": 764.017578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9389416575431824, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "list_item", "id": 2, "page_no": 61, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.05352783203125, "t": 70.39522552490234, "r": 547.25958, "b": 93.26668548583984, "coord_origin": "TOPLEFT"}, "confidence": 0.9381867051124573, "cells": [{"id": 2, "text": "8.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.06769, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Review the definition of the TRANSACTIONS table. The definition of the TRANSACTIONS ", "bbox": {"l": 147.82356, "t": 71.50867000000005, "r": 547.25958, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "table is shown in Figure 4-12. RCAC is not defined for this table yet.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 449.76917, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "8. Review the definition of the TRANSACTIONS table. The definition of the TRANSACTIONS table is shown in Figure 4-12. RCAC is not defined for this table yet."}, {"label": "caption", "id": 3, "page_no": 61, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.08340454101562, "t": 299.330322265625, "r": 321.95263671875, "b": 308.88140869140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9399792551994324, "cells": [{"id": 5, "text": "Figure 4-12 TRANSACTIONS table attributes", "bbox": {"l": 136.8, "t": 299.95801, "r": 321.56638, "b": 308.28302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-12 TRANSACTIONS table attributes"}, {"label": "list_item", "id": 4, "page_no": 61, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.10157775878906, "t": 325.2121887207031, "r": 531.82043, "b": 348.0757141113281, "coord_origin": "TOPLEFT"}, "confidence": 0.9077776670455933, "cells": [{"id": 6, "text": "9.", "bbox": {"l": 136.8, "t": 325.90872, "r": 145.62772, "b": 335.1217, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Click the ", "bbox": {"l": 148.57028, "t": 325.90872, "r": 192.09492, "b": 335.1217, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Columns", "bbox": {"l": 192.11984, "t": 325.90872, "r": 234.88211000000004, "b": 335.1217, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": " tab to see the columns of the TRANSACTIONS table, as shown in ", "bbox": {"l": 234.84026999999998, "t": 325.90872, "r": 531.82043, "b": 335.1217, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Figure 4-13.", "bbox": {"l": 151.20016, "t": 337.90854, "r": 205.13353, "b": 347.1215199999999, "coord_origin": "TOPLEFT"}}]}, "text": "9. Click the Columns tab to see the columns of the TRANSACTIONS table, as shown in Figure 4-13."}, {"label": "caption", "id": 5, "page_no": 61, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.23361206054688, "t": 482.2267150878906, "r": 383.62402, "b": 492.1814270019531, "coord_origin": "TOPLEFT"}, "confidence": 0.9186105132102966, "cells": [{"id": 11, "text": "Figure 4-13 Column definitions of the TRANSACTIONS table", "bbox": {"l": 136.8, "t": 483.31799, "r": 383.62402, "b": 491.64301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-13 Column definitions of the TRANSACTIONS table"}, {"label": "list_item", "id": 6, "page_no": 61, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.8, "t": 508.458251953125, "r": 547.3941, "b": 554.54103, "coord_origin": "TOPLEFT"}, "confidence": 0.7894290685653687, "cells": [{"id": 12, "text": "10.Click the ", "bbox": {"l": 136.8, "t": 509.32861, "r": 192.09694, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Key Constraints", "bbox": {"l": 192.11984, "t": 509.32861, "r": 268.44635, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ", ", "bbox": {"l": 268.26007, "t": 509.32861, "r": 273.89941, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Foreign Key Constraints", "bbox": {"l": 273.83966, "t": 509.32861, "r": 389.64954, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ", and ", "bbox": {"l": 389.45932, "t": 509.32861, "r": 414.47784, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Check Constraints ", "bbox": {"l": 414.47983, "t": 509.32861, "r": 505.37079, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "tabs to ", "bbox": {"l": 505.37976, "t": 509.32861, "r": 538.20105, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "review the key, foreign, and check constraints on the TRANSACTIONS table, as shown in ", "bbox": {"l": 151.20016, "t": 521.32843, "r": 547.3941, "b": 530.54141, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Figure 4-14. There is one Foreign Key Constraint and one Check Constraint on the ", "bbox": {"l": 151.20016, "t": 533.32822, "r": 518.87848, "b": 542.54123, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "TRANSACTIONS table.", "bbox": {"l": 151.20016, "t": 545.32803, "r": 256.03613, "b": 554.54103, "coord_origin": "TOPLEFT"}}]}, "text": "10.Click the Key Constraints , Foreign Key Constraints , and Check Constraints tabs to review the key, foreign, and check constraints on the TRANSACTIONS table, as shown in Figure 4-14. There is one Foreign Key Constraint and one Check Constraint on the TRANSACTIONS table."}, {"label": "caption", "id": 7, "page_no": 61, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 64.34345245361328, "t": 724.33056640625, "r": 342.01257, "b": 734.162998, "coord_origin": "TOPLEFT"}, "confidence": 0.927774965763092, "cells": [{"id": 22, "text": "Figure 4-14 Reviewing the constraints on the TRANSACTIONS table", "bbox": {"l": 64.800003, "t": 725.837997, "r": 342.01257, "b": 734.162998, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-14 Reviewing the constraints on the TRANSACTIONS table"}, {"label": "picture", "id": 8, "page_no": 61, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 135.87826538085938, "t": 107.37496948242188, "r": 451.5091857910156, "b": 296.46051025390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9791154861450195, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 9, "page_no": 61, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 63.676544189453125, "t": 568.8480224609375, "r": 546.6666870117188, "b": 722.6273803710938, "coord_origin": "TOPLEFT"}, "confidence": 0.9123829007148743, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 61, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.05352783203125, "t": 70.39522552490234, "r": 547.25958, "b": 93.26668548583984, "coord_origin": "TOPLEFT"}, "confidence": 0.9381867051124573, "cells": [{"id": 2, "text": "8.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.06769, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Review the definition of the TRANSACTIONS table. The definition of the TRANSACTIONS ", "bbox": {"l": 147.82356, "t": 71.50867000000005, "r": 547.25958, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "table is shown in Figure 4-12. RCAC is not defined for this table yet.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 449.76917, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "8. Review the definition of the TRANSACTIONS table. The definition of the TRANSACTIONS table is shown in Figure 4-12. RCAC is not defined for this table yet."}, {"label": "caption", "id": 3, "page_no": 61, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.08340454101562, "t": 299.330322265625, "r": 321.95263671875, "b": 308.88140869140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9399792551994324, "cells": [{"id": 5, "text": "Figure 4-12 TRANSACTIONS table attributes", "bbox": {"l": 136.8, "t": 299.95801, "r": 321.56638, "b": 308.28302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-12 TRANSACTIONS table attributes"}, {"label": "list_item", "id": 4, "page_no": 61, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.10157775878906, "t": 325.2121887207031, "r": 531.82043, "b": 348.0757141113281, "coord_origin": "TOPLEFT"}, "confidence": 0.9077776670455933, "cells": [{"id": 6, "text": "9.", "bbox": {"l": 136.8, "t": 325.90872, "r": 145.62772, "b": 335.1217, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Click the ", "bbox": {"l": 148.57028, "t": 325.90872, "r": 192.09492, "b": 335.1217, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Columns", "bbox": {"l": 192.11984, "t": 325.90872, "r": 234.88211000000004, "b": 335.1217, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": " tab to see the columns of the TRANSACTIONS table, as shown in ", "bbox": {"l": 234.84026999999998, "t": 325.90872, "r": 531.82043, "b": 335.1217, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Figure 4-13.", "bbox": {"l": 151.20016, "t": 337.90854, "r": 205.13353, "b": 347.1215199999999, "coord_origin": "TOPLEFT"}}]}, "text": "9. Click the Columns tab to see the columns of the TRANSACTIONS table, as shown in Figure 4-13."}, {"label": "caption", "id": 5, "page_no": 61, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.23361206054688, "t": 482.2267150878906, "r": 383.62402, "b": 492.1814270019531, "coord_origin": "TOPLEFT"}, "confidence": 0.9186105132102966, "cells": [{"id": 11, "text": "Figure 4-13 Column definitions of the TRANSACTIONS table", "bbox": {"l": 136.8, "t": 483.31799, "r": 383.62402, "b": 491.64301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-13 Column definitions of the TRANSACTIONS table"}, {"label": "list_item", "id": 6, "page_no": 61, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.8, "t": 508.458251953125, "r": 547.3941, "b": 554.54103, "coord_origin": "TOPLEFT"}, "confidence": 0.7894290685653687, "cells": [{"id": 12, "text": "10.Click the ", "bbox": {"l": 136.8, "t": 509.32861, "r": 192.09694, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Key Constraints", "bbox": {"l": 192.11984, "t": 509.32861, "r": 268.44635, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ", ", "bbox": {"l": 268.26007, "t": 509.32861, "r": 273.89941, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Foreign Key Constraints", "bbox": {"l": 273.83966, "t": 509.32861, "r": 389.64954, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ", and ", "bbox": {"l": 389.45932, "t": 509.32861, "r": 414.47784, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Check Constraints ", "bbox": {"l": 414.47983, "t": 509.32861, "r": 505.37079, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "tabs to ", "bbox": {"l": 505.37976, "t": 509.32861, "r": 538.20105, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "review the key, foreign, and check constraints on the TRANSACTIONS table, as shown in ", "bbox": {"l": 151.20016, "t": 521.32843, "r": 547.3941, "b": 530.54141, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Figure 4-14. There is one Foreign Key Constraint and one Check Constraint on the ", "bbox": {"l": 151.20016, "t": 533.32822, "r": 518.87848, "b": 542.54123, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "TRANSACTIONS table.", "bbox": {"l": 151.20016, "t": 545.32803, "r": 256.03613, "b": 554.54103, "coord_origin": "TOPLEFT"}}]}, "text": "10.Click the Key Constraints , Foreign Key Constraints , and Check Constraints tabs to review the key, foreign, and check constraints on the TRANSACTIONS table, as shown in Figure 4-14. There is one Foreign Key Constraint and one Check Constraint on the TRANSACTIONS table."}, {"label": "caption", "id": 7, "page_no": 61, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 64.34345245361328, "t": 724.33056640625, "r": 342.01257, "b": 734.162998, "coord_origin": "TOPLEFT"}, "confidence": 0.927774965763092, "cells": [{"id": 22, "text": "Figure 4-14 Reviewing the constraints on the TRANSACTIONS table", "bbox": {"l": 64.800003, "t": 725.837997, "r": 342.01257, "b": 734.162998, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-14 Reviewing the constraints on the TRANSACTIONS table"}, {"label": "picture", "id": 8, "page_no": 61, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 135.87826538085938, "t": 107.37496948242188, "r": 451.5091857910156, "b": 296.46051025390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9791154861450195, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 9, "page_no": 61, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 63.676544189453125, "t": 568.8480224609375, "r": 546.6666870117188, "b": 722.6273803710938, "coord_origin": "TOPLEFT"}, "confidence": 0.9123829007148743, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 61, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.11357116699219, "t": 754.0479125976562, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8953660130500793, "cells": [{"id": 0, "text": "46 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "46"}, {"label": "page_footer", "id": 1, "page_no": 61, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.1781997680664, "t": 754.6085205078125, "r": 334.42142, "b": 764.017578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9389416575431824, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 62, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "47", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Now that you have reviewed the database model for this example, the following sections ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 527.00562, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "describe the steps that are required to implement RCAC in this banking scenario.", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 494.7092, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "4.3.2", "bbox": {"l": 64.800003, "t": 113.33471999999995, "r": 93.888939, "b": 125.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Assigning function ID QIBM_DB_SECADM to the Database Engineers ", "bbox": {"l": 97.52504, "t": 113.33471999999995, "r": 532.11951, "b": 125.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "group", "bbox": {"l": 64.799988, "t": 129.35455000000002, "r": 101.27979, "b": 141.34258999999997, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "The first step is to assign the appropriate function usage ID to the Database Engineers ", "bbox": {"l": 136.8, "t": 155.50867000000005, "r": 522.06989, "b": 164.72168, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "(DBEs) that will be implementing RCAC. For a description of function usage IDs, see 2.1, ", "bbox": {"l": 136.8, "t": 167.50847999999996, "r": 531.98792, "b": 176.7215, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "\u201cRoles\u201d on page 8. In this example, the DBEs are users MCAIN and HBEDOYA.", "bbox": {"l": 136.80002, "t": 179.50829999999996, "r": 487.71283000000005, "b": 188.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Complete the following steps:", "bbox": {"l": 136.80002, "t": 201.52788999999996, "r": 266.86069, "b": 210.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "1.", "bbox": {"l": 136.80002, "t": 218.50769000000003, "r": 145.22206, "b": 227.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Right-click the database connection and select ", "bbox": {"l": 148.0294, "t": 218.50769000000003, "r": 359.07529, "b": 227.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Application Administration", "bbox": {"l": 359.16, "t": 218.50769000000003, "r": 486.7905, "b": 227.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ", as shown in", "bbox": {"l": 486.71973, "t": 218.50769000000003, "r": 544.54364, "b": 227.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Figure 4-15.", "bbox": {"l": 151.19922, "t": 230.50751000000002, "r": 205.13258, "b": 239.72051999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Figure 4-15 Application administration", "bbox": {"l": 136.8, "t": 494.41791, "r": 292.51532, "b": 502.74292, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 214.25257873535156, "t": 754.7490234375, "r": 523.59357, "b": 764.0389404296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9526394605636597, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.6387939453125, "t": 754.2075805664062, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9067078232765198, "cells": [{"id": 1, "text": "47", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 136.23085021972656, "t": 70.71146392822266, "r": 527.00562, "b": 92.8815689086914, "coord_origin": "TOPLEFT"}, "confidence": 0.9731295108795166, "cells": [{"id": 2, "text": "Now that you have reviewed the database model for this example, the following sections ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 527.00562, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "describe the steps that are required to implement RCAC in this banking scenario.", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 494.7092, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "section_header", "bbox": {"l": 64.15889739990234, "t": 112.25782775878906, "r": 532.11951, "b": 141.6817169189453, "coord_origin": "TOPLEFT"}, "confidence": 0.9485021233558655, "cells": [{"id": 4, "text": "4.3.2", "bbox": {"l": 64.800003, "t": 113.33471999999995, "r": 93.888939, "b": 125.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Assigning function ID QIBM_DB_SECADM to the Database Engineers ", "bbox": {"l": 97.52504, "t": 113.33471999999995, "r": 532.11951, "b": 125.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "group", "bbox": {"l": 64.799988, "t": 129.35455000000002, "r": 101.27979, "b": 141.34258999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.7303466796875, "t": 154.53631591796875, "r": 531.98792, "b": 188.7343292236328, "coord_origin": "TOPLEFT"}, "confidence": 0.9785159826278687, "cells": [{"id": 7, "text": "The first step is to assign the appropriate function usage ID to the Database Engineers ", "bbox": {"l": 136.8, "t": 155.50867000000005, "r": 522.06989, "b": 164.72168, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "(DBEs) that will be implementing RCAC. For a description of function usage IDs, see 2.1, ", "bbox": {"l": 136.8, "t": 167.50847999999996, "r": 531.98792, "b": 176.7215, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "\u201cRoles\u201d on page 8. In this example, the DBEs are users MCAIN and HBEDOYA.", "bbox": {"l": 136.80002, "t": 179.50829999999996, "r": 487.71283000000005, "b": 188.72131000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "section_header", "bbox": {"l": 136.1609649658203, "t": 200.50624084472656, "r": 266.86069, "b": 211.13751220703125, "coord_origin": "TOPLEFT"}, "confidence": 0.8128474354743958, "cells": [{"id": 10, "text": "Complete the following steps:", "bbox": {"l": 136.80002, "t": 201.52788999999996, "r": 266.86069, "b": 210.74090999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 136.48870849609375, "t": 217.26614379882812, "r": 544.54364, "b": 239.72051999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.9693723320960999, "cells": [{"id": 11, "text": "1.", "bbox": {"l": 136.80002, "t": 218.50769000000003, "r": 145.22206, "b": 227.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Right-click the database connection and select ", "bbox": {"l": 148.0294, "t": 218.50769000000003, "r": 359.07529, "b": 227.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Application Administration", "bbox": {"l": 359.16, "t": 218.50769000000003, "r": 486.7905, "b": 227.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ", as shown in", "bbox": {"l": 486.71973, "t": 218.50769000000003, "r": 544.54364, "b": 227.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Figure 4-15.", "bbox": {"l": 151.19922, "t": 230.50751000000002, "r": 205.13258, "b": 239.72051999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "caption", "bbox": {"l": 136.063720703125, "t": 493.6786193847656, "r": 292.96966552734375, "b": 502.8232727050781, "coord_origin": "TOPLEFT"}, "confidence": 0.948575496673584, "cells": [{"id": 16, "text": "Figure 4-15 Application administration", "bbox": {"l": 136.8, "t": 494.41791, "r": 292.51532, "b": 502.74292, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 135.87820434570312, "t": 254.07247924804688, "r": 343.8211669921875, "b": 492.20819091796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9855658411979675, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 62, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.25257873535156, "t": 754.7490234375, "r": 523.59357, "b": 764.0389404296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9526394605636597, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 62, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6387939453125, "t": 754.2075805664062, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9067078232765198, "cells": [{"id": 1, "text": "47", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "47"}, {"label": "text", "id": 2, "page_no": 62, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.23085021972656, "t": 70.71146392822266, "r": 527.00562, "b": 92.8815689086914, "coord_origin": "TOPLEFT"}, "confidence": 0.9731295108795166, "cells": [{"id": 2, "text": "Now that you have reviewed the database model for this example, the following sections ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 527.00562, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "describe the steps that are required to implement RCAC in this banking scenario.", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 494.7092, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Now that you have reviewed the database model for this example, the following sections describe the steps that are required to implement RCAC in this banking scenario."}, {"label": "section_header", "id": 3, "page_no": 62, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 64.15889739990234, "t": 112.25782775878906, "r": 532.11951, "b": 141.6817169189453, "coord_origin": "TOPLEFT"}, "confidence": 0.9485021233558655, "cells": [{"id": 4, "text": "4.3.2", "bbox": {"l": 64.800003, "t": 113.33471999999995, "r": 93.888939, "b": 125.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Assigning function ID QIBM_DB_SECADM to the Database Engineers ", "bbox": {"l": 97.52504, "t": 113.33471999999995, "r": 532.11951, "b": 125.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "group", "bbox": {"l": 64.799988, "t": 129.35455000000002, "r": 101.27979, "b": 141.34258999999997, "coord_origin": "TOPLEFT"}}]}, "text": "4.3.2 Assigning function ID QIBM_DB_SECADM to the Database Engineers group"}, {"label": "text", "id": 4, "page_no": 62, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.7303466796875, "t": 154.53631591796875, "r": 531.98792, "b": 188.7343292236328, "coord_origin": "TOPLEFT"}, "confidence": 0.9785159826278687, "cells": [{"id": 7, "text": "The first step is to assign the appropriate function usage ID to the Database Engineers ", "bbox": {"l": 136.8, "t": 155.50867000000005, "r": 522.06989, "b": 164.72168, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "(DBEs) that will be implementing RCAC. For a description of function usage IDs, see 2.1, ", "bbox": {"l": 136.8, "t": 167.50847999999996, "r": 531.98792, "b": 176.7215, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "\u201cRoles\u201d on page 8. In this example, the DBEs are users MCAIN and HBEDOYA.", "bbox": {"l": 136.80002, "t": 179.50829999999996, "r": 487.71283000000005, "b": 188.72131000000002, "coord_origin": "TOPLEFT"}}]}, "text": "The first step is to assign the appropriate function usage ID to the Database Engineers (DBEs) that will be implementing RCAC. For a description of function usage IDs, see 2.1, \u201cRoles\u201d on page 8. In this example, the DBEs are users MCAIN and HBEDOYA."}, {"label": "section_header", "id": 5, "page_no": 62, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 136.1609649658203, "t": 200.50624084472656, "r": 266.86069, "b": 211.13751220703125, "coord_origin": "TOPLEFT"}, "confidence": 0.8128474354743958, "cells": [{"id": 10, "text": "Complete the following steps:", "bbox": {"l": 136.80002, "t": 201.52788999999996, "r": 266.86069, "b": 210.74090999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Complete the following steps:"}, {"label": "list_item", "id": 6, "page_no": 62, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.48870849609375, "t": 217.26614379882812, "r": 544.54364, "b": 239.72051999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.9693723320960999, "cells": [{"id": 11, "text": "1.", "bbox": {"l": 136.80002, "t": 218.50769000000003, "r": 145.22206, "b": 227.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Right-click the database connection and select ", "bbox": {"l": 148.0294, "t": 218.50769000000003, "r": 359.07529, "b": 227.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Application Administration", "bbox": {"l": 359.16, "t": 218.50769000000003, "r": 486.7905, "b": 227.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ", as shown in", "bbox": {"l": 486.71973, "t": 218.50769000000003, "r": 544.54364, "b": 227.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Figure 4-15.", "bbox": {"l": 151.19922, "t": 230.50751000000002, "r": 205.13258, "b": 239.72051999999996, "coord_origin": "TOPLEFT"}}]}, "text": "1. Right-click the database connection and select Application Administration , as shown in Figure 4-15."}, {"label": "caption", "id": 7, "page_no": 62, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 136.063720703125, "t": 493.6786193847656, "r": 292.96966552734375, "b": 502.8232727050781, "coord_origin": "TOPLEFT"}, "confidence": 0.948575496673584, "cells": [{"id": 16, "text": "Figure 4-15 Application administration", "bbox": {"l": 136.8, "t": 494.41791, "r": 292.51532, "b": 502.74292, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-15 Application administration"}, {"label": "picture", "id": 8, "page_no": 62, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 135.87820434570312, "t": 254.07247924804688, "r": 343.8211669921875, "b": 492.20819091796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9855658411979675, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 62, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.23085021972656, "t": 70.71146392822266, "r": 527.00562, "b": 92.8815689086914, "coord_origin": "TOPLEFT"}, "confidence": 0.9731295108795166, "cells": [{"id": 2, "text": "Now that you have reviewed the database model for this example, the following sections ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 527.00562, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "describe the steps that are required to implement RCAC in this banking scenario.", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 494.7092, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Now that you have reviewed the database model for this example, the following sections describe the steps that are required to implement RCAC in this banking scenario."}, {"label": "section_header", "id": 3, "page_no": 62, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 64.15889739990234, "t": 112.25782775878906, "r": 532.11951, "b": 141.6817169189453, "coord_origin": "TOPLEFT"}, "confidence": 0.9485021233558655, "cells": [{"id": 4, "text": "4.3.2", "bbox": {"l": 64.800003, "t": 113.33471999999995, "r": 93.888939, "b": 125.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Assigning function ID QIBM_DB_SECADM to the Database Engineers ", "bbox": {"l": 97.52504, "t": 113.33471999999995, "r": 532.11951, "b": 125.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "group", "bbox": {"l": 64.799988, "t": 129.35455000000002, "r": 101.27979, "b": 141.34258999999997, "coord_origin": "TOPLEFT"}}]}, "text": "4.3.2 Assigning function ID QIBM_DB_SECADM to the Database Engineers group"}, {"label": "text", "id": 4, "page_no": 62, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.7303466796875, "t": 154.53631591796875, "r": 531.98792, "b": 188.7343292236328, "coord_origin": "TOPLEFT"}, "confidence": 0.9785159826278687, "cells": [{"id": 7, "text": "The first step is to assign the appropriate function usage ID to the Database Engineers ", "bbox": {"l": 136.8, "t": 155.50867000000005, "r": 522.06989, "b": 164.72168, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "(DBEs) that will be implementing RCAC. For a description of function usage IDs, see 2.1, ", "bbox": {"l": 136.8, "t": 167.50847999999996, "r": 531.98792, "b": 176.7215, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "\u201cRoles\u201d on page 8. In this example, the DBEs are users MCAIN and HBEDOYA.", "bbox": {"l": 136.80002, "t": 179.50829999999996, "r": 487.71283000000005, "b": 188.72131000000002, "coord_origin": "TOPLEFT"}}]}, "text": "The first step is to assign the appropriate function usage ID to the Database Engineers (DBEs) that will be implementing RCAC. For a description of function usage IDs, see 2.1, \u201cRoles\u201d on page 8. In this example, the DBEs are users MCAIN and HBEDOYA."}, {"label": "section_header", "id": 5, "page_no": 62, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 136.1609649658203, "t": 200.50624084472656, "r": 266.86069, "b": 211.13751220703125, "coord_origin": "TOPLEFT"}, "confidence": 0.8128474354743958, "cells": [{"id": 10, "text": "Complete the following steps:", "bbox": {"l": 136.80002, "t": 201.52788999999996, "r": 266.86069, "b": 210.74090999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Complete the following steps:"}, {"label": "list_item", "id": 6, "page_no": 62, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.48870849609375, "t": 217.26614379882812, "r": 544.54364, "b": 239.72051999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.9693723320960999, "cells": [{"id": 11, "text": "1.", "bbox": {"l": 136.80002, "t": 218.50769000000003, "r": 145.22206, "b": 227.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Right-click the database connection and select ", "bbox": {"l": 148.0294, "t": 218.50769000000003, "r": 359.07529, "b": 227.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Application Administration", "bbox": {"l": 359.16, "t": 218.50769000000003, "r": 486.7905, "b": 227.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ", as shown in", "bbox": {"l": 486.71973, "t": 218.50769000000003, "r": 544.54364, "b": 227.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Figure 4-15.", "bbox": {"l": 151.19922, "t": 230.50751000000002, "r": 205.13258, "b": 239.72051999999996, "coord_origin": "TOPLEFT"}}]}, "text": "1. Right-click the database connection and select Application Administration , as shown in Figure 4-15."}, {"label": "caption", "id": 7, "page_no": 62, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 136.063720703125, "t": 493.6786193847656, "r": 292.96966552734375, "b": 502.8232727050781, "coord_origin": "TOPLEFT"}, "confidence": 0.948575496673584, "cells": [{"id": 16, "text": "Figure 4-15 Application administration", "bbox": {"l": 136.8, "t": 494.41791, "r": 292.51532, "b": 502.74292, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-15 Application administration"}, {"label": "picture", "id": 8, "page_no": 62, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 135.87820434570312, "t": 254.07247924804688, "r": 343.8211669921875, "b": 492.20819091796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9855658411979675, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 62, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.25257873535156, "t": 754.7490234375, "r": 523.59357, "b": 764.0389404296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9526394605636597, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 62, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6387939453125, "t": 754.2075805664062, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9067078232765198, "cells": [{"id": 1, "text": "47", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "47"}]}}, {"page_no": 63, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "48 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "2.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.19351, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The Application Administration window opens, as shown in Figure 4-16. Click ", "bbox": {"l": 147.99136, "t": 71.50867000000005, "r": 493.65488, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "IBM i", "bbox": {"l": 493.7405099999999, "t": 71.50867000000005, "r": 517.56885, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "\uf0ae", "bbox": {"l": 520.38049, "t": 68.65014999999994, "r": 530.211, "b": 80.84118999999998, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Database", "bbox": {"l": 151.20117, "t": 83.50847999999996, "r": 195.65863, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " and select the function usage ID of ", "bbox": {"l": 195.66162, "t": 83.50847999999996, "r": 355.12521, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Database Security Administrator", "bbox": {"l": 355.08139, "t": 83.50847999999996, "r": 510.06299, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": ".", "bbox": {"l": 509.5809300000001, "t": 83.50847999999996, "r": 512.34979, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Figure 4-16 Application administration for IBM i", "bbox": {"l": 136.8, "t": 392.95801, "r": 328.13547, "b": 401.28302, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "3.", "bbox": {"l": 136.8, "t": 418.90872, "r": 145.84831, "b": 428.1217, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Click ", "bbox": {"l": 148.86441, "t": 418.90872, "r": 175.38007, "b": 428.1217, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Customize", "bbox": {"l": 175.43982, "t": 418.90872, "r": 226.02864, "b": 428.1217, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " for the function usage ID of Database Security Administrator, as shown ", "bbox": {"l": 226.07945, "t": 418.90872, "r": 544.57233, "b": 428.1217, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "in Figure 4-17.", "bbox": {"l": 151.19919, "t": 430.90854, "r": 215.63544000000002, "b": 440.1215199999999, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Figure 4-17 Customizing the Database Security Administrator function usage ID", "bbox": {"l": 136.8, "t": 613.758, "r": 458.56000000000006, "b": 622.0830100000001, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.1659164428711, "t": 754.1441040039062, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9094043970108032, "cells": [{"id": 0, "text": "48 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.31367492675781, "t": 754.6023559570312, "r": 334.42142, "b": 764.0177001953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9526337385177612, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 135.7973175048828, "t": 68.65014999999994, "r": 530.211, "b": 93.15596771240234, "coord_origin": "TOPLEFT"}, "confidence": 0.9675157070159912, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.19351, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The Application Administration window opens, as shown in Figure 4-16. Click ", "bbox": {"l": 147.99136, "t": 71.50867000000005, "r": 493.65488, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "IBM i", "bbox": {"l": 493.7405099999999, "t": 71.50867000000005, "r": 517.56885, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "\uf0ae", "bbox": {"l": 520.38049, "t": 68.65014999999994, "r": 530.211, "b": 80.84118999999998, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Database", "bbox": {"l": 151.20117, "t": 83.50847999999996, "r": 195.65863, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " and select the function usage ID of ", "bbox": {"l": 195.66162, "t": 83.50847999999996, "r": 355.12521, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Database Security Administrator", "bbox": {"l": 355.08139, "t": 83.50847999999996, "r": 510.06299, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": ".", "bbox": {"l": 509.5809300000001, "t": 83.50847999999996, "r": 512.34979, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 135.85130310058594, "t": 391.84564208984375, "r": 329.4411315917969, "b": 401.4302673339844, "coord_origin": "TOPLEFT"}, "confidence": 0.9492601156234741, "cells": [{"id": 10, "text": "Figure 4-16 Application administration for IBM i", "bbox": {"l": 136.8, "t": 392.95801, "r": 328.13547, "b": 401.28302, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 135.79788208007812, "t": 417.66436767578125, "r": 544.57233, "b": 440.6051330566406, "coord_origin": "TOPLEFT"}, "confidence": 0.9629845023155212, "cells": [{"id": 11, "text": "3.", "bbox": {"l": 136.8, "t": 418.90872, "r": 145.84831, "b": 428.1217, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Click ", "bbox": {"l": 148.86441, "t": 418.90872, "r": 175.38007, "b": 428.1217, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Customize", "bbox": {"l": 175.43982, "t": 418.90872, "r": 226.02864, "b": 428.1217, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " for the function usage ID of Database Security Administrator, as shown ", "bbox": {"l": 226.07945, "t": 418.90872, "r": 544.57233, "b": 428.1217, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "in Figure 4-17.", "bbox": {"l": 151.19919, "t": 430.90854, "r": 215.63544000000002, "b": 440.1215199999999, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 136.05140686035156, "t": 612.469482421875, "r": 459.4308776855469, "b": 622.1511840820312, "coord_origin": "TOPLEFT"}, "confidence": 0.9522164463996887, "cells": [{"id": 16, "text": "Figure 4-17 Customizing the Database Security Administrator function usage ID", "bbox": {"l": 136.8, "t": 613.758, "r": 458.56000000000006, "b": 622.0830100000001, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "picture", "bbox": {"l": 136.17874145507812, "t": 107.1623306274414, "r": 527.1444702148438, "b": 388.9134826660156, "coord_origin": "TOPLEFT"}, "confidence": 0.9870592355728149, "cells": []}, {"id": 7, "label": "picture", "bbox": {"l": 136.42279052734375, "t": 454.41522216796875, "r": 528.0494384765625, "b": 610.991455078125, "coord_origin": "TOPLEFT"}, "confidence": 0.986380398273468, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 63, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.1659164428711, "t": 754.1441040039062, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9094043970108032, "cells": [{"id": 0, "text": "48 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "48"}, {"label": "page_footer", "id": 1, "page_no": 63, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.31367492675781, "t": 754.6023559570312, "r": 334.42142, "b": 764.0177001953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9526337385177612, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "list_item", "id": 2, "page_no": 63, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.7973175048828, "t": 68.65014999999994, "r": 530.211, "b": 93.15596771240234, "coord_origin": "TOPLEFT"}, "confidence": 0.9675157070159912, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.19351, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The Application Administration window opens, as shown in Figure 4-16. Click ", "bbox": {"l": 147.99136, "t": 71.50867000000005, "r": 493.65488, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "IBM i", "bbox": {"l": 493.7405099999999, "t": 71.50867000000005, "r": 517.56885, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "\uf0ae", "bbox": {"l": 520.38049, "t": 68.65014999999994, "r": 530.211, "b": 80.84118999999998, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Database", "bbox": {"l": 151.20117, "t": 83.50847999999996, "r": 195.65863, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " and select the function usage ID of ", "bbox": {"l": 195.66162, "t": 83.50847999999996, "r": 355.12521, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Database Security Administrator", "bbox": {"l": 355.08139, "t": 83.50847999999996, "r": 510.06299, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": ".", "bbox": {"l": 509.5809300000001, "t": 83.50847999999996, "r": 512.34979, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "2. The Application Administration window opens, as shown in Figure 4-16. Click IBM i \uf0ae Database and select the function usage ID of Database Security Administrator ."}, {"label": "caption", "id": 3, "page_no": 63, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.85130310058594, "t": 391.84564208984375, "r": 329.4411315917969, "b": 401.4302673339844, "coord_origin": "TOPLEFT"}, "confidence": 0.9492601156234741, "cells": [{"id": 10, "text": "Figure 4-16 Application administration for IBM i", "bbox": {"l": 136.8, "t": 392.95801, "r": 328.13547, "b": 401.28302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-16 Application administration for IBM i"}, {"label": "list_item", "id": 4, "page_no": 63, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.79788208007812, "t": 417.66436767578125, "r": 544.57233, "b": 440.6051330566406, "coord_origin": "TOPLEFT"}, "confidence": 0.9629845023155212, "cells": [{"id": 11, "text": "3.", "bbox": {"l": 136.8, "t": 418.90872, "r": 145.84831, "b": 428.1217, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Click ", "bbox": {"l": 148.86441, "t": 418.90872, "r": 175.38007, "b": 428.1217, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Customize", "bbox": {"l": 175.43982, "t": 418.90872, "r": 226.02864, "b": 428.1217, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " for the function usage ID of Database Security Administrator, as shown ", "bbox": {"l": 226.07945, "t": 418.90872, "r": 544.57233, "b": 428.1217, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "in Figure 4-17.", "bbox": {"l": 151.19919, "t": 430.90854, "r": 215.63544000000002, "b": 440.1215199999999, "coord_origin": "TOPLEFT"}}]}, "text": "3. Click Customize for the function usage ID of Database Security Administrator, as shown in Figure 4-17."}, {"label": "caption", "id": 5, "page_no": 63, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.05140686035156, "t": 612.469482421875, "r": 459.4308776855469, "b": 622.1511840820312, "coord_origin": "TOPLEFT"}, "confidence": 0.9522164463996887, "cells": [{"id": 16, "text": "Figure 4-17 Customizing the Database Security Administrator function usage ID", "bbox": {"l": 136.8, "t": 613.758, "r": 458.56000000000006, "b": 622.0830100000001, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-17 Customizing the Database Security Administrator function usage ID"}, {"label": "picture", "id": 6, "page_no": 63, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 136.17874145507812, "t": 107.1623306274414, "r": 527.1444702148438, "b": 388.9134826660156, "coord_origin": "TOPLEFT"}, "confidence": 0.9870592355728149, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 7, "page_no": 63, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 136.42279052734375, "t": 454.41522216796875, "r": 528.0494384765625, "b": 610.991455078125, "coord_origin": "TOPLEFT"}, "confidence": 0.986380398273468, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 63, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.7973175048828, "t": 68.65014999999994, "r": 530.211, "b": 93.15596771240234, "coord_origin": "TOPLEFT"}, "confidence": 0.9675157070159912, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.19351, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The Application Administration window opens, as shown in Figure 4-16. Click ", "bbox": {"l": 147.99136, "t": 71.50867000000005, "r": 493.65488, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "IBM i", "bbox": {"l": 493.7405099999999, "t": 71.50867000000005, "r": 517.56885, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "\uf0ae", "bbox": {"l": 520.38049, "t": 68.65014999999994, "r": 530.211, "b": 80.84118999999998, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Database", "bbox": {"l": 151.20117, "t": 83.50847999999996, "r": 195.65863, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " and select the function usage ID of ", "bbox": {"l": 195.66162, "t": 83.50847999999996, "r": 355.12521, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Database Security Administrator", "bbox": {"l": 355.08139, "t": 83.50847999999996, "r": 510.06299, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": ".", "bbox": {"l": 509.5809300000001, "t": 83.50847999999996, "r": 512.34979, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "2. The Application Administration window opens, as shown in Figure 4-16. Click IBM i \uf0ae Database and select the function usage ID of Database Security Administrator ."}, {"label": "caption", "id": 3, "page_no": 63, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.85130310058594, "t": 391.84564208984375, "r": 329.4411315917969, "b": 401.4302673339844, "coord_origin": "TOPLEFT"}, "confidence": 0.9492601156234741, "cells": [{"id": 10, "text": "Figure 4-16 Application administration for IBM i", "bbox": {"l": 136.8, "t": 392.95801, "r": 328.13547, "b": 401.28302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-16 Application administration for IBM i"}, {"label": "list_item", "id": 4, "page_no": 63, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.79788208007812, "t": 417.66436767578125, "r": 544.57233, "b": 440.6051330566406, "coord_origin": "TOPLEFT"}, "confidence": 0.9629845023155212, "cells": [{"id": 11, "text": "3.", "bbox": {"l": 136.8, "t": 418.90872, "r": 145.84831, "b": 428.1217, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Click ", "bbox": {"l": 148.86441, "t": 418.90872, "r": 175.38007, "b": 428.1217, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Customize", "bbox": {"l": 175.43982, "t": 418.90872, "r": 226.02864, "b": 428.1217, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " for the function usage ID of Database Security Administrator, as shown ", "bbox": {"l": 226.07945, "t": 418.90872, "r": 544.57233, "b": 428.1217, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "in Figure 4-17.", "bbox": {"l": 151.19919, "t": 430.90854, "r": 215.63544000000002, "b": 440.1215199999999, "coord_origin": "TOPLEFT"}}]}, "text": "3. Click Customize for the function usage ID of Database Security Administrator, as shown in Figure 4-17."}, {"label": "caption", "id": 5, "page_no": 63, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.05140686035156, "t": 612.469482421875, "r": 459.4308776855469, "b": 622.1511840820312, "coord_origin": "TOPLEFT"}, "confidence": 0.9522164463996887, "cells": [{"id": 16, "text": "Figure 4-17 Customizing the Database Security Administrator function usage ID", "bbox": {"l": 136.8, "t": 613.758, "r": 458.56000000000006, "b": 622.0830100000001, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-17 Customizing the Database Security Administrator function usage ID"}, {"label": "picture", "id": 6, "page_no": 63, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 136.17874145507812, "t": 107.1623306274414, "r": 527.1444702148438, "b": 388.9134826660156, "coord_origin": "TOPLEFT"}, "confidence": 0.9870592355728149, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 7, "page_no": 63, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 136.42279052734375, "t": 454.41522216796875, "r": 528.0494384765625, "b": 610.991455078125, "coord_origin": "TOPLEFT"}, "confidence": 0.986380398273468, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 63, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.1659164428711, "t": 754.1441040039062, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9094043970108032, "cells": [{"id": 0, "text": "48 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "48"}, {"label": "page_footer", "id": 1, "page_no": 63, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.31367492675781, "t": 754.6023559570312, "r": 334.42142, "b": 764.0177001953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9526337385177612, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 64, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "49", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "4.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.1438, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The Customize Access window opens, as shown in Figure 4-18. Click the users that need ", "bbox": {"l": 147.9252, "t": 71.50903000000005, "r": 547.17651, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "to implement RCAC. For this example, HBEDOYA and MCAIN are selected. Click ", "bbox": {"l": 151.19876, "t": 83.50885000000017, "r": 506.5556, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Add", "bbox": {"l": 506.51874, "t": 83.50885000000017, "r": 525.81329, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": " and ", "bbox": {"l": 525.83917, "t": 83.50885000000017, "r": 547.19739, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "then click ", "bbox": {"l": 151.19876, "t": 95.50867000000005, "r": 195.40625, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "OK", "bbox": {"l": 195.41916, "t": 95.50867000000005, "r": 210.46075, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": ".", "bbox": {"l": 210.41891, "t": 95.50867000000005, "r": 213.18779, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Figure 4-18 Customize Access window", "bbox": {"l": 136.8, "t": 405.55798, "r": 296.37628, "b": 413.88300000000004, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "5.", "bbox": {"l": 136.8, "t": 431.50872999999996, "r": 145.20036, "b": 440.72171, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "The Application Administrator window opens again. The function usage ID of Database ", "bbox": {"l": 148.00046, "t": 431.50872999999996, "r": 537.65015, "b": 440.72171, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Security Administrator now has an X in the Customized Access column, as shown in ", "bbox": {"l": 151.20016, "t": 443.50854, "r": 525.76385, "b": 452.72153, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Figure 4-19.", "bbox": {"l": 151.20016, "t": 455.50836, "r": 205.13353, "b": 464.72134, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": ".", "bbox": {"l": 136.8, "t": 470.50812, "r": 139.56888, "b": 479.7211, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Figure 4-19 Function usage ID Database Security Administrator customized", "bbox": {"l": 136.8, "t": 586.9379, "r": 442.35632, "b": 595.26291, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 214.2803955078125, "t": 754.738525390625, "r": 523.59357, "b": 764.0549926757812, "coord_origin": "TOPLEFT"}, "confidence": 0.956462025642395, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.666015625, "t": 754.0488891601562, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9085332155227661, "cells": [{"id": 1, "text": "49", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 135.78591918945312, "t": 70.48530578613281, "r": 547.19739, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9741643071174622, "cells": [{"id": 2, "text": "4.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.1438, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The Customize Access window opens, as shown in Figure 4-18. Click the users that need ", "bbox": {"l": 147.9252, "t": 71.50903000000005, "r": 547.17651, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "to implement RCAC. For this example, HBEDOYA and MCAIN are selected. Click ", "bbox": {"l": 151.19876, "t": 83.50885000000017, "r": 506.5556, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Add", "bbox": {"l": 506.51874, "t": 83.50885000000017, "r": 525.81329, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": " and ", "bbox": {"l": 525.83917, "t": 83.50885000000017, "r": 547.19739, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "then click ", "bbox": {"l": 151.19876, "t": 95.50867000000005, "r": 195.40625, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "OK", "bbox": {"l": 195.41916, "t": 95.50867000000005, "r": 210.46075, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": ".", "bbox": {"l": 210.41891, "t": 95.50867000000005, "r": 213.18779, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.0041961669922, "t": 404.69866943359375, "r": 297.5841369628906, "b": 413.9527282714844, "coord_origin": "TOPLEFT"}, "confidence": 0.9453438520431519, "cells": [{"id": 10, "text": "Figure 4-18 Customize Access window", "bbox": {"l": 136.8, "t": 405.55798, "r": 296.37628, "b": 413.88300000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 136.253173828125, "t": 430.48211669921875, "r": 537.65015, "b": 465.2202453613281, "coord_origin": "TOPLEFT"}, "confidence": 0.9763842225074768, "cells": [{"id": 11, "text": "5.", "bbox": {"l": 136.8, "t": 431.50872999999996, "r": 145.20036, "b": 440.72171, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "The Application Administrator window opens again. The function usage ID of Database ", "bbox": {"l": 148.00046, "t": 431.50872999999996, "r": 537.65015, "b": 440.72171, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Security Administrator now has an X in the Customized Access column, as shown in ", "bbox": {"l": 151.20016, "t": 443.50854, "r": 525.76385, "b": 452.72153, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Figure 4-19.", "bbox": {"l": 151.20016, "t": 455.50836, "r": 205.13353, "b": 464.72134, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "picture", "bbox": {"l": 136.03775024414062, "t": 470.50812, "r": 484.38336181640625, "b": 583.2213134765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9760020971298218, "cells": [{"id": 15, "text": ".", "bbox": {"l": 136.8, "t": 470.50812, "r": 139.56888, "b": 479.7211, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "caption", "bbox": {"l": 136.1788787841797, "t": 586.18408203125, "r": 443.8726501464844, "b": 595.6748046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9425281286239624, "cells": [{"id": 16, "text": "Figure 4-19 Function usage ID Database Security Administrator customized", "bbox": {"l": 136.8, "t": 586.9379, "r": 442.35632, "b": 595.26291, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "picture", "bbox": {"l": 136.3659210205078, "t": 118.70867919921875, "r": 485.6257629394531, "b": 401.78082275390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9869308471679688, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 64, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.2803955078125, "t": 754.738525390625, "r": 523.59357, "b": 764.0549926757812, "coord_origin": "TOPLEFT"}, "confidence": 0.956462025642395, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 64, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.666015625, "t": 754.0488891601562, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9085332155227661, "cells": [{"id": 1, "text": "49", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "49"}, {"label": "list_item", "id": 2, "page_no": 64, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.78591918945312, "t": 70.48530578613281, "r": 547.19739, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9741643071174622, "cells": [{"id": 2, "text": "4.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.1438, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The Customize Access window opens, as shown in Figure 4-18. Click the users that need ", "bbox": {"l": 147.9252, "t": 71.50903000000005, "r": 547.17651, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "to implement RCAC. For this example, HBEDOYA and MCAIN are selected. Click ", "bbox": {"l": 151.19876, "t": 83.50885000000017, "r": 506.5556, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Add", "bbox": {"l": 506.51874, "t": 83.50885000000017, "r": 525.81329, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": " and ", "bbox": {"l": 525.83917, "t": 83.50885000000017, "r": 547.19739, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "then click ", "bbox": {"l": 151.19876, "t": 95.50867000000005, "r": 195.40625, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "OK", "bbox": {"l": 195.41916, "t": 95.50867000000005, "r": 210.46075, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": ".", "bbox": {"l": 210.41891, "t": 95.50867000000005, "r": 213.18779, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "4. The Customize Access window opens, as shown in Figure 4-18. Click the users that need to implement RCAC. For this example, HBEDOYA and MCAIN are selected. Click Add and then click OK ."}, {"label": "caption", "id": 3, "page_no": 64, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.0041961669922, "t": 404.69866943359375, "r": 297.5841369628906, "b": 413.9527282714844, "coord_origin": "TOPLEFT"}, "confidence": 0.9453438520431519, "cells": [{"id": 10, "text": "Figure 4-18 Customize Access window", "bbox": {"l": 136.8, "t": 405.55798, "r": 296.37628, "b": 413.88300000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-18 Customize Access window"}, {"label": "list_item", "id": 4, "page_no": 64, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.253173828125, "t": 430.48211669921875, "r": 537.65015, "b": 465.2202453613281, "coord_origin": "TOPLEFT"}, "confidence": 0.9763842225074768, "cells": [{"id": 11, "text": "5.", "bbox": {"l": 136.8, "t": 431.50872999999996, "r": 145.20036, "b": 440.72171, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "The Application Administrator window opens again. The function usage ID of Database ", "bbox": {"l": 148.00046, "t": 431.50872999999996, "r": 537.65015, "b": 440.72171, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Security Administrator now has an X in the Customized Access column, as shown in ", "bbox": {"l": 151.20016, "t": 443.50854, "r": 525.76385, "b": 452.72153, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Figure 4-19.", "bbox": {"l": 151.20016, "t": 455.50836, "r": 205.13353, "b": 464.72134, "coord_origin": "TOPLEFT"}}]}, "text": "5. The Application Administrator window opens again. The function usage ID of Database Security Administrator now has an X in the Customized Access column, as shown in Figure 4-19."}, {"label": "picture", "id": 5, "page_no": 64, "cluster": {"id": 5, "label": "picture", "bbox": {"l": 136.03775024414062, "t": 470.50812, "r": 484.38336181640625, "b": 583.2213134765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9760020971298218, "cells": [{"id": 15, "text": ".", "bbox": {"l": 136.8, "t": 470.50812, "r": 139.56888, "b": 479.7211, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "caption", "id": 6, "page_no": 64, "cluster": {"id": 6, "label": "caption", "bbox": {"l": 136.1788787841797, "t": 586.18408203125, "r": 443.8726501464844, "b": 595.6748046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9425281286239624, "cells": [{"id": 16, "text": "Figure 4-19 Function usage ID Database Security Administrator customized", "bbox": {"l": 136.8, "t": 586.9379, "r": 442.35632, "b": 595.26291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-19 Function usage ID Database Security Administrator customized"}, {"label": "picture", "id": 7, "page_no": 64, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 136.3659210205078, "t": 118.70867919921875, "r": 485.6257629394531, "b": 401.78082275390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9869308471679688, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 64, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.78591918945312, "t": 70.48530578613281, "r": 547.19739, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9741643071174622, "cells": [{"id": 2, "text": "4.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.1438, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The Customize Access window opens, as shown in Figure 4-18. Click the users that need ", "bbox": {"l": 147.9252, "t": 71.50903000000005, "r": 547.17651, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "to implement RCAC. For this example, HBEDOYA and MCAIN are selected. Click ", "bbox": {"l": 151.19876, "t": 83.50885000000017, "r": 506.5556, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Add", "bbox": {"l": 506.51874, "t": 83.50885000000017, "r": 525.81329, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": " and ", "bbox": {"l": 525.83917, "t": 83.50885000000017, "r": 547.19739, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "then click ", "bbox": {"l": 151.19876, "t": 95.50867000000005, "r": 195.40625, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "OK", "bbox": {"l": 195.41916, "t": 95.50867000000005, "r": 210.46075, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": ".", "bbox": {"l": 210.41891, "t": 95.50867000000005, "r": 213.18779, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "4. The Customize Access window opens, as shown in Figure 4-18. Click the users that need to implement RCAC. For this example, HBEDOYA and MCAIN are selected. Click Add and then click OK ."}, {"label": "caption", "id": 3, "page_no": 64, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.0041961669922, "t": 404.69866943359375, "r": 297.5841369628906, "b": 413.9527282714844, "coord_origin": "TOPLEFT"}, "confidence": 0.9453438520431519, "cells": [{"id": 10, "text": "Figure 4-18 Customize Access window", "bbox": {"l": 136.8, "t": 405.55798, "r": 296.37628, "b": 413.88300000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-18 Customize Access window"}, {"label": "list_item", "id": 4, "page_no": 64, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.253173828125, "t": 430.48211669921875, "r": 537.65015, "b": 465.2202453613281, "coord_origin": "TOPLEFT"}, "confidence": 0.9763842225074768, "cells": [{"id": 11, "text": "5.", "bbox": {"l": 136.8, "t": 431.50872999999996, "r": 145.20036, "b": 440.72171, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "The Application Administrator window opens again. The function usage ID of Database ", "bbox": {"l": 148.00046, "t": 431.50872999999996, "r": 537.65015, "b": 440.72171, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Security Administrator now has an X in the Customized Access column, as shown in ", "bbox": {"l": 151.20016, "t": 443.50854, "r": 525.76385, "b": 452.72153, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Figure 4-19.", "bbox": {"l": 151.20016, "t": 455.50836, "r": 205.13353, "b": 464.72134, "coord_origin": "TOPLEFT"}}]}, "text": "5. The Application Administrator window opens again. The function usage ID of Database Security Administrator now has an X in the Customized Access column, as shown in Figure 4-19."}, {"label": "picture", "id": 5, "page_no": 64, "cluster": {"id": 5, "label": "picture", "bbox": {"l": 136.03775024414062, "t": 470.50812, "r": 484.38336181640625, "b": 583.2213134765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9760020971298218, "cells": [{"id": 15, "text": ".", "bbox": {"l": 136.8, "t": 470.50812, "r": 139.56888, "b": 479.7211, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "caption", "id": 6, "page_no": 64, "cluster": {"id": 6, "label": "caption", "bbox": {"l": 136.1788787841797, "t": 586.18408203125, "r": 443.8726501464844, "b": 595.6748046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9425281286239624, "cells": [{"id": 16, "text": "Figure 4-19 Function usage ID Database Security Administrator customized", "bbox": {"l": 136.8, "t": 586.9379, "r": 442.35632, "b": 595.26291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-19 Function usage ID Database Security Administrator customized"}, {"label": "picture", "id": 7, "page_no": 64, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 136.3659210205078, "t": 118.70867919921875, "r": 485.6257629394531, "b": 401.78082275390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9869308471679688, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 64, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.2803955078125, "t": 754.738525390625, "r": 523.59357, "b": 764.0549926757812, "coord_origin": "TOPLEFT"}, "confidence": 0.956462025642395, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 64, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.666015625, "t": 754.0488891601562, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9085332155227661, "cells": [{"id": 1, "text": "49", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "49"}]}}, {"page_no": 65, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "50 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "6.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.1907, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Run an SQL query that shows which user profiles are enabled to define RCAC. The SQL ", "bbox": {"l": 147.98759, "t": 71.50867000000005, "r": 545.57037, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "query is shown in Figure 4-20.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 285.23688, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Figure 4-20 Query to display user profiles with function usage ID for RCAC", "bbox": {"l": 136.8, "t": 275.77801999999997, "r": 437.8742700000001, "b": 284.103, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "4.3.3", "bbox": {"l": 64.800003, "t": 304.61474999999996, "r": 93.871941, "b": 316.6027199999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Creating group profiles for the users and their roles", "bbox": {"l": 97.50592, "t": 304.61474999999996, "r": 418.56525, "b": 316.6027199999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "The next step is to create the different group profiles (ADMIN, CUSTOMER, TELLER, and ", "bbox": {"l": 136.8, "t": 330.76874, "r": 536.23578, "b": 339.98172000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "DBE) and assign the different user profiles to the different group profiles. For a description of ", "bbox": {"l": 136.8, "t": 342.76855, "r": 547.27246, "b": 351.98154, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "the different groups and users for this example, see 4.2, \u201cDescription of the users roles and ", "bbox": {"l": 136.8, "t": 354.76837, "r": 540.82733, "b": 363.98135, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "responsibilities\u201d on page 39.", "bbox": {"l": 136.8, "t": 366.76819, "r": 261.1217, "b": 375.98117, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Complete the following steps:", "bbox": {"l": 136.8, "t": 388.78774999999996, "r": 266.86069, "b": 398.00073, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "1.", "bbox": {"l": 136.8, "t": 405.76755, "r": 145.20288, "b": 414.98053, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "On the main navigation pane of System i Navigator, right-click ", "bbox": {"l": 148.00386, "t": 405.76755, "r": 426.30643, "b": 414.98053, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Groups ", "bbox": {"l": 426.30035, "t": 405.76755, "r": 464.4541300000001, "b": 414.98053, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "and select ", "bbox": {"l": 464.46011, "t": 405.76755, "r": 512.76715, "b": 414.98053, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "New ", "bbox": {"l": 512.76013, "t": 405.76755, "r": 535.9978, "b": 414.98053, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Group", "bbox": {"l": 151.20016, "t": 417.76736, "r": 180.91782, "b": 426.98035, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ", as shown in Figure 4-21.", "bbox": {"l": 180.6001, "t": 417.76736, "r": 295.52158, "b": 426.98035, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Figure 4-21 Creating group profiles", "bbox": {"l": 136.8, "t": 591.6179999999999, "r": 281.0097, "b": 599.94301, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.19255828857422, "t": 754.3742065429688, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9205988645553589, "cells": [{"id": 0, "text": "50 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.27255249023438, "t": 754.7175903320312, "r": 334.42142, "b": 763.9406127929688, "coord_origin": "TOPLEFT"}, "confidence": 0.9552856683731079, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 135.97772216796875, "t": 70.58170318603516, "r": 545.57037, "b": 93.28826904296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9537994265556335, "cells": [{"id": 2, "text": "6.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.1907, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Run an SQL query that shows which user profiles are enabled to define RCAC. The SQL ", "bbox": {"l": 147.98759, "t": 71.50867000000005, "r": 545.57037, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "query is shown in Figure 4-20.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 285.23688, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.3402557373047, "t": 274.47186279296875, "r": 438.3047790527344, "b": 284.2582702636719, "coord_origin": "TOPLEFT"}, "confidence": 0.9432975053787231, "cells": [{"id": 5, "text": "Figure 4-20 Query to display user profiles with function usage ID for RCAC", "bbox": {"l": 136.8, "t": 275.77801999999997, "r": 437.8742700000001, "b": 284.103, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 64.06755065917969, "t": 303.6237487792969, "r": 418.56525, "b": 317.0628662109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9638302326202393, "cells": [{"id": 6, "text": "4.3.3", "bbox": {"l": 64.800003, "t": 304.61474999999996, "r": 93.871941, "b": 316.6027199999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Creating group profiles for the users and their roles", "bbox": {"l": 97.50592, "t": 304.61474999999996, "r": 418.56525, "b": 316.6027199999999, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.84303283691406, "t": 329.9059143066406, "r": 547.27246, "b": 376.3108825683594, "coord_origin": "TOPLEFT"}, "confidence": 0.986221194267273, "cells": [{"id": 8, "text": "The next step is to create the different group profiles (ADMIN, CUSTOMER, TELLER, and ", "bbox": {"l": 136.8, "t": 330.76874, "r": 536.23578, "b": 339.98172000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "DBE) and assign the different user profiles to the different group profiles. For a description of ", "bbox": {"l": 136.8, "t": 342.76855, "r": 547.27246, "b": 351.98154, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "the different groups and users for this example, see 4.2, \u201cDescription of the users roles and ", "bbox": {"l": 136.8, "t": 354.76837, "r": 540.82733, "b": 363.98135, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "responsibilities\u201d on page 39.", "bbox": {"l": 136.8, "t": 366.76819, "r": 261.1217, "b": 375.98117, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "section_header", "bbox": {"l": 136.06056213378906, "t": 387.9443054199219, "r": 266.86069, "b": 398.36285400390625, "coord_origin": "TOPLEFT"}, "confidence": 0.7973853349685669, "cells": [{"id": 12, "text": "Complete the following steps:", "bbox": {"l": 136.8, "t": 388.78774999999996, "r": 266.86069, "b": 398.00073, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 136.78126525878906, "t": 404.716552734375, "r": 535.9978, "b": 427.2034606933594, "coord_origin": "TOPLEFT"}, "confidence": 0.966343879699707, "cells": [{"id": 13, "text": "1.", "bbox": {"l": 136.8, "t": 405.76755, "r": 145.20288, "b": 414.98053, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "On the main navigation pane of System i Navigator, right-click ", "bbox": {"l": 148.00386, "t": 405.76755, "r": 426.30643, "b": 414.98053, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Groups ", "bbox": {"l": 426.30035, "t": 405.76755, "r": 464.4541300000001, "b": 414.98053, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "and select ", "bbox": {"l": 464.46011, "t": 405.76755, "r": 512.76715, "b": 414.98053, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "New ", "bbox": {"l": 512.76013, "t": 405.76755, "r": 535.9978, "b": 414.98053, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Group", "bbox": {"l": 151.20016, "t": 417.76736, "r": 180.91782, "b": 426.98035, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ", as shown in Figure 4-21.", "bbox": {"l": 180.6001, "t": 417.76736, "r": 295.52158, "b": 426.98035, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "caption", "bbox": {"l": 136.255126953125, "t": 590.8622436523438, "r": 281.4906005859375, "b": 600.1361083984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9437876343727112, "cells": [{"id": 20, "text": "Figure 4-21 Creating group profiles", "bbox": {"l": 136.8, "t": 591.6179999999999, "r": 281.0097, "b": 599.94301, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "picture", "bbox": {"l": 135.67332458496094, "t": 441.32366943359375, "r": 358.52606201171875, "b": 587.8834228515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9837242364883423, "cells": []}, {"id": 10, "label": "picture", "bbox": {"l": 134.8684539794922, "t": 107.64208984375, "r": 447.195556640625, "b": 272.4745788574219, "coord_origin": "TOPLEFT"}, "confidence": 0.7622372508049011, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 65, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.19255828857422, "t": 754.3742065429688, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9205988645553589, "cells": [{"id": 0, "text": "50 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "50"}, {"label": "page_footer", "id": 1, "page_no": 65, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.27255249023438, "t": 754.7175903320312, "r": 334.42142, "b": 763.9406127929688, "coord_origin": "TOPLEFT"}, "confidence": 0.9552856683731079, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "list_item", "id": 2, "page_no": 65, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.97772216796875, "t": 70.58170318603516, "r": 545.57037, "b": 93.28826904296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9537994265556335, "cells": [{"id": 2, "text": "6.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.1907, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Run an SQL query that shows which user profiles are enabled to define RCAC. The SQL ", "bbox": {"l": 147.98759, "t": 71.50867000000005, "r": 545.57037, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "query is shown in Figure 4-20.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 285.23688, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "6. Run an SQL query that shows which user profiles are enabled to define RCAC. The SQL query is shown in Figure 4-20."}, {"label": "caption", "id": 3, "page_no": 65, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.3402557373047, "t": 274.47186279296875, "r": 438.3047790527344, "b": 284.2582702636719, "coord_origin": "TOPLEFT"}, "confidence": 0.9432975053787231, "cells": [{"id": 5, "text": "Figure 4-20 Query to display user profiles with function usage ID for RCAC", "bbox": {"l": 136.8, "t": 275.77801999999997, "r": 437.8742700000001, "b": 284.103, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-20 Query to display user profiles with function usage ID for RCAC"}, {"label": "section_header", "id": 4, "page_no": 65, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.06755065917969, "t": 303.6237487792969, "r": 418.56525, "b": 317.0628662109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9638302326202393, "cells": [{"id": 6, "text": "4.3.3", "bbox": {"l": 64.800003, "t": 304.61474999999996, "r": 93.871941, "b": 316.6027199999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Creating group profiles for the users and their roles", "bbox": {"l": 97.50592, "t": 304.61474999999996, "r": 418.56525, "b": 316.6027199999999, "coord_origin": "TOPLEFT"}}]}, "text": "4.3.3 Creating group profiles for the users and their roles"}, {"label": "text", "id": 5, "page_no": 65, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.84303283691406, "t": 329.9059143066406, "r": 547.27246, "b": 376.3108825683594, "coord_origin": "TOPLEFT"}, "confidence": 0.986221194267273, "cells": [{"id": 8, "text": "The next step is to create the different group profiles (ADMIN, CUSTOMER, TELLER, and ", "bbox": {"l": 136.8, "t": 330.76874, "r": 536.23578, "b": 339.98172000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "DBE) and assign the different user profiles to the different group profiles. For a description of ", "bbox": {"l": 136.8, "t": 342.76855, "r": 547.27246, "b": 351.98154, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "the different groups and users for this example, see 4.2, \u201cDescription of the users roles and ", "bbox": {"l": 136.8, "t": 354.76837, "r": 540.82733, "b": 363.98135, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "responsibilities\u201d on page 39.", "bbox": {"l": 136.8, "t": 366.76819, "r": 261.1217, "b": 375.98117, "coord_origin": "TOPLEFT"}}]}, "text": "The next step is to create the different group profiles (ADMIN, CUSTOMER, TELLER, and DBE) and assign the different user profiles to the different group profiles. For a description of the different groups and users for this example, see 4.2, \u201cDescription of the users roles and responsibilities\u201d on page 39."}, {"label": "section_header", "id": 6, "page_no": 65, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 136.06056213378906, "t": 387.9443054199219, "r": 266.86069, "b": 398.36285400390625, "coord_origin": "TOPLEFT"}, "confidence": 0.7973853349685669, "cells": [{"id": 12, "text": "Complete the following steps:", "bbox": {"l": 136.8, "t": 388.78774999999996, "r": 266.86069, "b": 398.00073, "coord_origin": "TOPLEFT"}}]}, "text": "Complete the following steps:"}, {"label": "list_item", "id": 7, "page_no": 65, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 136.78126525878906, "t": 404.716552734375, "r": 535.9978, "b": 427.2034606933594, "coord_origin": "TOPLEFT"}, "confidence": 0.966343879699707, "cells": [{"id": 13, "text": "1.", "bbox": {"l": 136.8, "t": 405.76755, "r": 145.20288, "b": 414.98053, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "On the main navigation pane of System i Navigator, right-click ", "bbox": {"l": 148.00386, "t": 405.76755, "r": 426.30643, "b": 414.98053, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Groups ", "bbox": {"l": 426.30035, "t": 405.76755, "r": 464.4541300000001, "b": 414.98053, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "and select ", "bbox": {"l": 464.46011, "t": 405.76755, "r": 512.76715, "b": 414.98053, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "New ", "bbox": {"l": 512.76013, "t": 405.76755, "r": 535.9978, "b": 414.98053, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Group", "bbox": {"l": 151.20016, "t": 417.76736, "r": 180.91782, "b": 426.98035, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ", as shown in Figure 4-21.", "bbox": {"l": 180.6001, "t": 417.76736, "r": 295.52158, "b": 426.98035, "coord_origin": "TOPLEFT"}}]}, "text": "1. On the main navigation pane of System i Navigator, right-click Groups and select New Group , as shown in Figure 4-21."}, {"label": "caption", "id": 8, "page_no": 65, "cluster": {"id": 8, "label": "caption", "bbox": {"l": 136.255126953125, "t": 590.8622436523438, "r": 281.4906005859375, "b": 600.1361083984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9437876343727112, "cells": [{"id": 20, "text": "Figure 4-21 Creating group profiles", "bbox": {"l": 136.8, "t": 591.6179999999999, "r": 281.0097, "b": 599.94301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-21 Creating group profiles"}, {"label": "picture", "id": 9, "page_no": 65, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 135.67332458496094, "t": 441.32366943359375, "r": 358.52606201171875, "b": 587.8834228515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9837242364883423, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 10, "page_no": 65, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 134.8684539794922, "t": 107.64208984375, "r": 447.195556640625, "b": 272.4745788574219, "coord_origin": "TOPLEFT"}, "confidence": 0.7622372508049011, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 65, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.97772216796875, "t": 70.58170318603516, "r": 545.57037, "b": 93.28826904296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9537994265556335, "cells": [{"id": 2, "text": "6.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.1907, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Run an SQL query that shows which user profiles are enabled to define RCAC. The SQL ", "bbox": {"l": 147.98759, "t": 71.50867000000005, "r": 545.57037, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "query is shown in Figure 4-20.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 285.23688, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "6. Run an SQL query that shows which user profiles are enabled to define RCAC. The SQL query is shown in Figure 4-20."}, {"label": "caption", "id": 3, "page_no": 65, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.3402557373047, "t": 274.47186279296875, "r": 438.3047790527344, "b": 284.2582702636719, "coord_origin": "TOPLEFT"}, "confidence": 0.9432975053787231, "cells": [{"id": 5, "text": "Figure 4-20 Query to display user profiles with function usage ID for RCAC", "bbox": {"l": 136.8, "t": 275.77801999999997, "r": 437.8742700000001, "b": 284.103, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-20 Query to display user profiles with function usage ID for RCAC"}, {"label": "section_header", "id": 4, "page_no": 65, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.06755065917969, "t": 303.6237487792969, "r": 418.56525, "b": 317.0628662109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9638302326202393, "cells": [{"id": 6, "text": "4.3.3", "bbox": {"l": 64.800003, "t": 304.61474999999996, "r": 93.871941, "b": 316.6027199999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Creating group profiles for the users and their roles", "bbox": {"l": 97.50592, "t": 304.61474999999996, "r": 418.56525, "b": 316.6027199999999, "coord_origin": "TOPLEFT"}}]}, "text": "4.3.3 Creating group profiles for the users and their roles"}, {"label": "text", "id": 5, "page_no": 65, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.84303283691406, "t": 329.9059143066406, "r": 547.27246, "b": 376.3108825683594, "coord_origin": "TOPLEFT"}, "confidence": 0.986221194267273, "cells": [{"id": 8, "text": "The next step is to create the different group profiles (ADMIN, CUSTOMER, TELLER, and ", "bbox": {"l": 136.8, "t": 330.76874, "r": 536.23578, "b": 339.98172000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "DBE) and assign the different user profiles to the different group profiles. For a description of ", "bbox": {"l": 136.8, "t": 342.76855, "r": 547.27246, "b": 351.98154, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "the different groups and users for this example, see 4.2, \u201cDescription of the users roles and ", "bbox": {"l": 136.8, "t": 354.76837, "r": 540.82733, "b": 363.98135, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "responsibilities\u201d on page 39.", "bbox": {"l": 136.8, "t": 366.76819, "r": 261.1217, "b": 375.98117, "coord_origin": "TOPLEFT"}}]}, "text": "The next step is to create the different group profiles (ADMIN, CUSTOMER, TELLER, and DBE) and assign the different user profiles to the different group profiles. For a description of the different groups and users for this example, see 4.2, \u201cDescription of the users roles and responsibilities\u201d on page 39."}, {"label": "section_header", "id": 6, "page_no": 65, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 136.06056213378906, "t": 387.9443054199219, "r": 266.86069, "b": 398.36285400390625, "coord_origin": "TOPLEFT"}, "confidence": 0.7973853349685669, "cells": [{"id": 12, "text": "Complete the following steps:", "bbox": {"l": 136.8, "t": 388.78774999999996, "r": 266.86069, "b": 398.00073, "coord_origin": "TOPLEFT"}}]}, "text": "Complete the following steps:"}, {"label": "list_item", "id": 7, "page_no": 65, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 136.78126525878906, "t": 404.716552734375, "r": 535.9978, "b": 427.2034606933594, "coord_origin": "TOPLEFT"}, "confidence": 0.966343879699707, "cells": [{"id": 13, "text": "1.", "bbox": {"l": 136.8, "t": 405.76755, "r": 145.20288, "b": 414.98053, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "On the main navigation pane of System i Navigator, right-click ", "bbox": {"l": 148.00386, "t": 405.76755, "r": 426.30643, "b": 414.98053, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Groups ", "bbox": {"l": 426.30035, "t": 405.76755, "r": 464.4541300000001, "b": 414.98053, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "and select ", "bbox": {"l": 464.46011, "t": 405.76755, "r": 512.76715, "b": 414.98053, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "New ", "bbox": {"l": 512.76013, "t": 405.76755, "r": 535.9978, "b": 414.98053, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Group", "bbox": {"l": 151.20016, "t": 417.76736, "r": 180.91782, "b": 426.98035, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ", as shown in Figure 4-21.", "bbox": {"l": 180.6001, "t": 417.76736, "r": 295.52158, "b": 426.98035, "coord_origin": "TOPLEFT"}}]}, "text": "1. On the main navigation pane of System i Navigator, right-click Groups and select New Group , as shown in Figure 4-21."}, {"label": "caption", "id": 8, "page_no": 65, "cluster": {"id": 8, "label": "caption", "bbox": {"l": 136.255126953125, "t": 590.8622436523438, "r": 281.4906005859375, "b": 600.1361083984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9437876343727112, "cells": [{"id": 20, "text": "Figure 4-21 Creating group profiles", "bbox": {"l": 136.8, "t": 591.6179999999999, "r": 281.0097, "b": 599.94301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-21 Creating group profiles"}, {"label": "picture", "id": 9, "page_no": 65, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 135.67332458496094, "t": 441.32366943359375, "r": 358.52606201171875, "b": 587.8834228515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9837242364883423, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 10, "page_no": 65, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 134.8684539794922, "t": 107.64208984375, "r": 447.195556640625, "b": 272.4745788574219, "coord_origin": "TOPLEFT"}, "confidence": 0.7622372508049011, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 65, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.19255828857422, "t": 754.3742065429688, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9205988645553589, "cells": [{"id": 0, "text": "50 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "50"}, {"label": "page_footer", "id": 1, "page_no": 65, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.27255249023438, "t": 754.7175903320312, "r": 334.42142, "b": 763.9406127929688, "coord_origin": "TOPLEFT"}, "confidence": 0.9552856683731079, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 66, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "51", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.17026, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The New Group window opens, as shown in Figure 4-22. For each new group, enter the ", "bbox": {"l": 147.96048, "t": 71.50903000000005, "r": 540.68945, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Group name (ADMIN, CUSTOMER, TELLER, and DBE) and add the user profiles that are ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 547.20844, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "associated to this group by selecting the user profile and clicking ", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 438.54974000000004, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Add", "bbox": {"l": 438.47998, "t": 95.50867000000005, "r": 457.77448, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": ".", "bbox": {"l": 457.80038, "t": 95.50867000000005, "r": 460.56927, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Figure 4-22 shows adding user TQSPENCER to the TELLER group profile.", "bbox": {"l": 151.20071, "t": 112.48845999999992, "r": 482.46234000000004, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Figure 4-22 Creating group profiles and adding users", "bbox": {"l": 136.8, "t": 364.33797999999996, "r": 352.45258, "b": 372.6629899999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "3.", "bbox": {"l": 136.8, "t": 390.28873, "r": 145.18831, "b": 399.50171, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "After you create all the group profiles, you should see them listed in System i Navigator ", "bbox": {"l": 147.98441, "t": 390.28873, "r": 537.61829, "b": 399.50171, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "under ", "bbox": {"l": 151.20016, "t": 402.28853999999995, "r": 179.56824, "b": 411.50152999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Users and Groups", "bbox": {"l": 179.52043, "t": 402.28853999999995, "r": 265.87564, "b": 411.50152999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "\uf0ae", "bbox": {"l": 268.3208, "t": 399.43002, "r": 278.15131, "b": 411.62106, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": " Groups", "bbox": {"l": 278.16028, "t": 402.28853999999995, "r": 316.31705, "b": 411.50152999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ", as shown in Figure 4-23.", "bbox": {"l": 316.14075, "t": 402.28853999999995, "r": 431.05228, "b": 411.50152999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Figure 4-23 Newly created group profiles", "bbox": {"l": 136.8, "t": 553.33789, "r": 303.75809, "b": 561.6629, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 214.30003356933594, "t": 754.7357177734375, "r": 523.59357, "b": 764.0491333007812, "coord_origin": "TOPLEFT"}, "confidence": 0.956891655921936, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.7405395507812, "t": 754.3246459960938, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9111406803131104, "cells": [{"id": 1, "text": "51", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 136.031005859375, "t": 70.50956726074219, "r": 547.20844, "b": 104.95550537109375, "coord_origin": "TOPLEFT"}, "confidence": 0.976949155330658, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.17026, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The New Group window opens, as shown in Figure 4-22. For each new group, enter the ", "bbox": {"l": 147.96048, "t": 71.50903000000005, "r": 540.68945, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Group name (ADMIN, CUSTOMER, TELLER, and DBE) and add the user profiles that are ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 547.20844, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "associated to this group by selecting the user profile and clicking ", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 438.54974000000004, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Add", "bbox": {"l": 438.47998, "t": 95.50867000000005, "r": 457.77448, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": ".", "bbox": {"l": 457.80038, "t": 95.50867000000005, "r": 460.56927, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 150.73487854003906, "t": 111.0660400390625, "r": 482.46234000000004, "b": 121.75677490234375, "coord_origin": "TOPLEFT"}, "confidence": 0.7767043113708496, "cells": [{"id": 8, "text": "Figure 4-22 shows adding user TQSPENCER to the TELLER group profile.", "bbox": {"l": 151.20071, "t": 112.48845999999992, "r": 482.46234000000004, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "caption", "bbox": {"l": 136.369873046875, "t": 363.4606018066406, "r": 352.9217834472656, "b": 372.808837890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9455896019935608, "cells": [{"id": 9, "text": "Figure 4-22 Creating group profiles and adding users", "bbox": {"l": 136.8, "t": 364.33797999999996, "r": 352.45258, "b": 372.6629899999999, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 136.0438232421875, "t": 389.4517822265625, "r": 537.61829, "b": 411.7866516113281, "coord_origin": "TOPLEFT"}, "confidence": 0.9663872122764587, "cells": [{"id": 10, "text": "3.", "bbox": {"l": 136.8, "t": 390.28873, "r": 145.18831, "b": 399.50171, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "After you create all the group profiles, you should see them listed in System i Navigator ", "bbox": {"l": 147.98441, "t": 390.28873, "r": 537.61829, "b": 399.50171, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "under ", "bbox": {"l": 151.20016, "t": 402.28853999999995, "r": 179.56824, "b": 411.50152999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Users and Groups", "bbox": {"l": 179.52043, "t": 402.28853999999995, "r": 265.87564, "b": 411.50152999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "\uf0ae", "bbox": {"l": 268.3208, "t": 399.43002, "r": 278.15131, "b": 411.62106, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": " Groups", "bbox": {"l": 278.16028, "t": 402.28853999999995, "r": 316.31705, "b": 411.50152999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ", as shown in Figure 4-23.", "bbox": {"l": 316.14075, "t": 402.28853999999995, "r": 431.05228, "b": 411.50152999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "caption", "bbox": {"l": 136.12078857421875, "t": 553.0734252929688, "r": 303.932373046875, "b": 562.2108764648438, "coord_origin": "TOPLEFT"}, "confidence": 0.9498841166496277, "cells": [{"id": 17, "text": "Figure 4-23 Newly created group profiles", "bbox": {"l": 136.8, "t": 553.33789, "r": 303.75809, "b": 561.6629, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "picture", "bbox": {"l": 136.2171630859375, "t": 135.30877685546875, "r": 474.1829528808594, "b": 361.1051330566406, "coord_origin": "TOPLEFT"}, "confidence": 0.9854894280433655, "cells": []}, {"id": 8, "label": "picture", "bbox": {"l": 136.2489471435547, "t": 425.68438720703125, "r": 269.5424499511719, "b": 550.3474731445312, "coord_origin": "TOPLEFT"}, "confidence": 0.9837116599082947, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 66, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.30003356933594, "t": 754.7357177734375, "r": 523.59357, "b": 764.0491333007812, "coord_origin": "TOPLEFT"}, "confidence": 0.956891655921936, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 66, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.7405395507812, "t": 754.3246459960938, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9111406803131104, "cells": [{"id": 1, "text": "51", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "51"}, {"label": "list_item", "id": 2, "page_no": 66, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.031005859375, "t": 70.50956726074219, "r": 547.20844, "b": 104.95550537109375, "coord_origin": "TOPLEFT"}, "confidence": 0.976949155330658, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.17026, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The New Group window opens, as shown in Figure 4-22. For each new group, enter the ", "bbox": {"l": 147.96048, "t": 71.50903000000005, "r": 540.68945, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Group name (ADMIN, CUSTOMER, TELLER, and DBE) and add the user profiles that are ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 547.20844, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "associated to this group by selecting the user profile and clicking ", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 438.54974000000004, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Add", "bbox": {"l": 438.47998, "t": 95.50867000000005, "r": 457.77448, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": ".", "bbox": {"l": 457.80038, "t": 95.50867000000005, "r": 460.56927, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "2. The New Group window opens, as shown in Figure 4-22. For each new group, enter the Group name (ADMIN, CUSTOMER, TELLER, and DBE) and add the user profiles that are associated to this group by selecting the user profile and clicking Add ."}, {"label": "text", "id": 3, "page_no": 66, "cluster": {"id": 3, "label": "text", "bbox": {"l": 150.73487854003906, "t": 111.0660400390625, "r": 482.46234000000004, "b": 121.75677490234375, "coord_origin": "TOPLEFT"}, "confidence": 0.7767043113708496, "cells": [{"id": 8, "text": "Figure 4-22 shows adding user TQSPENCER to the TELLER group profile.", "bbox": {"l": 151.20071, "t": 112.48845999999992, "r": 482.46234000000004, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-22 shows adding user TQSPENCER to the TELLER group profile."}, {"label": "caption", "id": 4, "page_no": 66, "cluster": {"id": 4, "label": "caption", "bbox": {"l": 136.369873046875, "t": 363.4606018066406, "r": 352.9217834472656, "b": 372.808837890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9455896019935608, "cells": [{"id": 9, "text": "Figure 4-22 Creating group profiles and adding users", "bbox": {"l": 136.8, "t": 364.33797999999996, "r": 352.45258, "b": 372.6629899999999, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-22 Creating group profiles and adding users"}, {"label": "list_item", "id": 5, "page_no": 66, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 136.0438232421875, "t": 389.4517822265625, "r": 537.61829, "b": 411.7866516113281, "coord_origin": "TOPLEFT"}, "confidence": 0.9663872122764587, "cells": [{"id": 10, "text": "3.", "bbox": {"l": 136.8, "t": 390.28873, "r": 145.18831, "b": 399.50171, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "After you create all the group profiles, you should see them listed in System i Navigator ", "bbox": {"l": 147.98441, "t": 390.28873, "r": 537.61829, "b": 399.50171, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "under ", "bbox": {"l": 151.20016, "t": 402.28853999999995, "r": 179.56824, "b": 411.50152999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Users and Groups", "bbox": {"l": 179.52043, "t": 402.28853999999995, "r": 265.87564, "b": 411.50152999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "\uf0ae", "bbox": {"l": 268.3208, "t": 399.43002, "r": 278.15131, "b": 411.62106, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": " Groups", "bbox": {"l": 278.16028, "t": 402.28853999999995, "r": 316.31705, "b": 411.50152999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ", as shown in Figure 4-23.", "bbox": {"l": 316.14075, "t": 402.28853999999995, "r": 431.05228, "b": 411.50152999999995, "coord_origin": "TOPLEFT"}}]}, "text": "3. After you create all the group profiles, you should see them listed in System i Navigator under Users and Groups \uf0ae Groups , as shown in Figure 4-23."}, {"label": "caption", "id": 6, "page_no": 66, "cluster": {"id": 6, "label": "caption", "bbox": {"l": 136.12078857421875, "t": 553.0734252929688, "r": 303.932373046875, "b": 562.2108764648438, "coord_origin": "TOPLEFT"}, "confidence": 0.9498841166496277, "cells": [{"id": 17, "text": "Figure 4-23 Newly created group profiles", "bbox": {"l": 136.8, "t": 553.33789, "r": 303.75809, "b": 561.6629, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-23 Newly created group profiles"}, {"label": "picture", "id": 7, "page_no": 66, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 136.2171630859375, "t": 135.30877685546875, "r": 474.1829528808594, "b": 361.1051330566406, "coord_origin": "TOPLEFT"}, "confidence": 0.9854894280433655, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 8, "page_no": 66, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 136.2489471435547, "t": 425.68438720703125, "r": 269.5424499511719, "b": 550.3474731445312, "coord_origin": "TOPLEFT"}, "confidence": 0.9837116599082947, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 66, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.031005859375, "t": 70.50956726074219, "r": 547.20844, "b": 104.95550537109375, "coord_origin": "TOPLEFT"}, "confidence": 0.976949155330658, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.17026, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The New Group window opens, as shown in Figure 4-22. For each new group, enter the ", "bbox": {"l": 147.96048, "t": 71.50903000000005, "r": 540.68945, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Group name (ADMIN, CUSTOMER, TELLER, and DBE) and add the user profiles that are ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 547.20844, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "associated to this group by selecting the user profile and clicking ", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 438.54974000000004, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Add", "bbox": {"l": 438.47998, "t": 95.50867000000005, "r": 457.77448, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": ".", "bbox": {"l": 457.80038, "t": 95.50867000000005, "r": 460.56927, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "2. The New Group window opens, as shown in Figure 4-22. For each new group, enter the Group name (ADMIN, CUSTOMER, TELLER, and DBE) and add the user profiles that are associated to this group by selecting the user profile and clicking Add ."}, {"label": "text", "id": 3, "page_no": 66, "cluster": {"id": 3, "label": "text", "bbox": {"l": 150.73487854003906, "t": 111.0660400390625, "r": 482.46234000000004, "b": 121.75677490234375, "coord_origin": "TOPLEFT"}, "confidence": 0.7767043113708496, "cells": [{"id": 8, "text": "Figure 4-22 shows adding user TQSPENCER to the TELLER group profile.", "bbox": {"l": 151.20071, "t": 112.48845999999992, "r": 482.46234000000004, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-22 shows adding user TQSPENCER to the TELLER group profile."}, {"label": "caption", "id": 4, "page_no": 66, "cluster": {"id": 4, "label": "caption", "bbox": {"l": 136.369873046875, "t": 363.4606018066406, "r": 352.9217834472656, "b": 372.808837890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9455896019935608, "cells": [{"id": 9, "text": "Figure 4-22 Creating group profiles and adding users", "bbox": {"l": 136.8, "t": 364.33797999999996, "r": 352.45258, "b": 372.6629899999999, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-22 Creating group profiles and adding users"}, {"label": "list_item", "id": 5, "page_no": 66, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 136.0438232421875, "t": 389.4517822265625, "r": 537.61829, "b": 411.7866516113281, "coord_origin": "TOPLEFT"}, "confidence": 0.9663872122764587, "cells": [{"id": 10, "text": "3.", "bbox": {"l": 136.8, "t": 390.28873, "r": 145.18831, "b": 399.50171, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "After you create all the group profiles, you should see them listed in System i Navigator ", "bbox": {"l": 147.98441, "t": 390.28873, "r": 537.61829, "b": 399.50171, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "under ", "bbox": {"l": 151.20016, "t": 402.28853999999995, "r": 179.56824, "b": 411.50152999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Users and Groups", "bbox": {"l": 179.52043, "t": 402.28853999999995, "r": 265.87564, "b": 411.50152999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "\uf0ae", "bbox": {"l": 268.3208, "t": 399.43002, "r": 278.15131, "b": 411.62106, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": " Groups", "bbox": {"l": 278.16028, "t": 402.28853999999995, "r": 316.31705, "b": 411.50152999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ", as shown in Figure 4-23.", "bbox": {"l": 316.14075, "t": 402.28853999999995, "r": 431.05228, "b": 411.50152999999995, "coord_origin": "TOPLEFT"}}]}, "text": "3. After you create all the group profiles, you should see them listed in System i Navigator under Users and Groups \uf0ae Groups , as shown in Figure 4-23."}, {"label": "caption", "id": 6, "page_no": 66, "cluster": {"id": 6, "label": "caption", "bbox": {"l": 136.12078857421875, "t": 553.0734252929688, "r": 303.932373046875, "b": 562.2108764648438, "coord_origin": "TOPLEFT"}, "confidence": 0.9498841166496277, "cells": [{"id": 17, "text": "Figure 4-23 Newly created group profiles", "bbox": {"l": 136.8, "t": 553.33789, "r": 303.75809, "b": 561.6629, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-23 Newly created group profiles"}, {"label": "picture", "id": 7, "page_no": 66, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 136.2171630859375, "t": 135.30877685546875, "r": 474.1829528808594, "b": 361.1051330566406, "coord_origin": "TOPLEFT"}, "confidence": 0.9854894280433655, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 8, "page_no": 66, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 136.2489471435547, "t": 425.68438720703125, "r": 269.5424499511719, "b": 550.3474731445312, "coord_origin": "TOPLEFT"}, "confidence": 0.9837116599082947, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 66, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.30003356933594, "t": 754.7357177734375, "r": 523.59357, "b": 764.0491333007812, "coord_origin": "TOPLEFT"}, "confidence": 0.956891655921936, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 66, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.7405395507812, "t": 754.3246459960938, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9111406803131104, "cells": [{"id": 1, "text": "51", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "51"}]}}, {"page_no": 67, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "52 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "4.3.4", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 93.893837, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Creating the CUSTOMER_LOGIN_ID global variable ", "bbox": {"l": 97.530579, "t": 71.33471999999995, "r": 420.28372, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "In this step, you create a global variable that is used to capture the Customer_Login_ID ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 524.35071, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "information, which is required to validate the permissions. For more information about global ", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 545.77252, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "variables, see 3.2.2, \u201cBuilt-in global variables\u201d on page 19.", "bbox": {"l": 136.8, "t": 121.48834000000011, "r": 393.31793, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Complete the following steps:", "bbox": {"l": 136.8, "t": 143.50793, "r": 266.86069, "b": 152.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "1.", "bbox": {"l": 136.8, "t": 160.48773000000006, "r": 145.18987, "b": 169.70074, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "From System i Navigator, under the schema Bank_Schema, right-click ", "bbox": {"l": 147.98647, "t": 160.48773000000006, "r": 463.85352, "b": 169.70074, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Global Variable", "bbox": {"l": 463.79974000000004, "t": 160.48773000000006, "r": 535.91608, "b": 169.70074, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "and select ", "bbox": {"l": 151.20016, "t": 172.48755000000006, "r": 199.5191, "b": 181.70056, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "New", "bbox": {"l": 199.50018, "t": 172.48755000000006, "r": 219.97794, "b": 181.70056, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "\uf0ae", "bbox": {"l": 222.71992, "t": 169.62902999999994, "r": 232.55045000000004, "b": 181.82007, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Global Variable", "bbox": {"l": 235.38007999999996, "t": 172.48755000000006, "r": 307.45761, "b": 181.70056, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": ", as shown in Figure 4-24.", "bbox": {"l": 307.26041, "t": 172.48755000000006, "r": 422.09814, "b": 181.70056, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Figure 4-24 Creating a global variable", "bbox": {"l": 136.8, "t": 407.95801, "r": 291.84482, "b": 416.28302, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "2.", "bbox": {"l": 136.8, "t": 433.90872, "r": 145.17693, "b": 443.1217, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "The New Global Variable window opens, as shown in Figure 4-25. Enter the global ", "bbox": {"l": 147.96921, "t": 433.90872, "r": 517.53796, "b": 443.1217, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "variable name of CUSTOMER_LOGIN_ID, select the data type of VARCHAR, and leave ", "bbox": {"l": 151.20016, "t": 445.90854, "r": 541.19196, "b": 455.1215199999999, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "the default value of NULL. This default value ensures that users that do not use the web ", "bbox": {"l": 151.20016, "t": 457.90836, "r": 541.04456, "b": 467.12134, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "interface do not have permission to access the data. Click ", "bbox": {"l": 151.20016, "t": 469.90817, "r": 408.75781, "b": 479.12115, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "OK", "bbox": {"l": 408.84045, "t": 469.90817, "r": 423.76251, "b": 479.12115, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": ".", "bbox": {"l": 423.78046, "t": 469.90817, "r": 426.54935, "b": 479.12115, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Figure 4-25 Creating a global variable called CUSTOMER_LOGIN_ID", "bbox": {"l": 64.800003, "t": 712.158005, "r": 346.33698, "b": 720.4830019999999, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.1907958984375, "t": 754.3226928710938, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9162147045135498, "cells": [{"id": 0, "text": "52 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.31280517578125, "t": 754.688720703125, "r": 334.42142, "b": 763.898193359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9516439437866211, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.14804077148438, "t": 70.27552795410156, "r": 420.28372, "b": 83.57343292236328, "coord_origin": "TOPLEFT"}, "confidence": 0.9602196216583252, "cells": [{"id": 2, "text": "4.3.4", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 93.893837, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Creating the CUSTOMER_LOGIN_ID global variable ", "bbox": {"l": 97.530579, "t": 71.33471999999995, "r": 420.28372, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.99069213867188, "t": 96.89618682861328, "r": 545.77252, "b": 131.00881958007812, "coord_origin": "TOPLEFT"}, "confidence": 0.9838969707489014, "cells": [{"id": 4, "text": "In this step, you create a global variable that is used to capture the Customer_Login_ID ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 524.35071, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "information, which is required to validate the permissions. For more information about global ", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 545.77252, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "variables, see 3.2.2, \u201cBuilt-in global variables\u201d on page 19.", "bbox": {"l": 136.8, "t": 121.48834000000011, "r": 393.31793, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 136.14224243164062, "t": 142.52076721191406, "r": 266.86069, "b": 152.9317626953125, "coord_origin": "TOPLEFT"}, "confidence": 0.8107734322547913, "cells": [{"id": 7, "text": "Complete the following steps:", "bbox": {"l": 136.8, "t": 143.50793, "r": 266.86069, "b": 152.72095000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 136.56494140625, "t": 159.2626495361328, "r": 535.943603515625, "b": 181.82007, "coord_origin": "TOPLEFT"}, "confidence": 0.9734883904457092, "cells": [{"id": 8, "text": "1.", "bbox": {"l": 136.8, "t": 160.48773000000006, "r": 145.18987, "b": 169.70074, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "From System i Navigator, under the schema Bank_Schema, right-click ", "bbox": {"l": 147.98647, "t": 160.48773000000006, "r": 463.85352, "b": 169.70074, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Global Variable", "bbox": {"l": 463.79974000000004, "t": 160.48773000000006, "r": 535.91608, "b": 169.70074, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "and select ", "bbox": {"l": 151.20016, "t": 172.48755000000006, "r": 199.5191, "b": 181.70056, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "New", "bbox": {"l": 199.50018, "t": 172.48755000000006, "r": 219.97794, "b": 181.70056, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "\uf0ae", "bbox": {"l": 222.71992, "t": 169.62902999999994, "r": 232.55045000000004, "b": 181.82007, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Global Variable", "bbox": {"l": 235.38007999999996, "t": 172.48755000000006, "r": 307.45761, "b": 181.70056, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": ", as shown in Figure 4-24.", "bbox": {"l": 307.26041, "t": 172.48755000000006, "r": 422.09814, "b": 181.70056, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "caption", "bbox": {"l": 136.03294372558594, "t": 407.6881408691406, "r": 292.05377197265625, "b": 416.7829284667969, "coord_origin": "TOPLEFT"}, "confidence": 0.9526056051254272, "cells": [{"id": 16, "text": "Figure 4-24 Creating a global variable", "bbox": {"l": 136.8, "t": 407.95801, "r": 291.84482, "b": 416.28302, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.92572021484375, "t": 433.5293884277344, "r": 541.19196, "b": 479.4812927246094, "coord_origin": "TOPLEFT"}, "confidence": 0.9796995520591736, "cells": [{"id": 17, "text": "2.", "bbox": {"l": 136.8, "t": 433.90872, "r": 145.17693, "b": 443.1217, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "The New Global Variable window opens, as shown in Figure 4-25. Enter the global ", "bbox": {"l": 147.96921, "t": 433.90872, "r": 517.53796, "b": 443.1217, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "variable name of CUSTOMER_LOGIN_ID, select the data type of VARCHAR, and leave ", "bbox": {"l": 151.20016, "t": 445.90854, "r": 541.19196, "b": 455.1215199999999, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "the default value of NULL. This default value ensures that users that do not use the web ", "bbox": {"l": 151.20016, "t": 457.90836, "r": 541.04456, "b": 467.12134, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "interface do not have permission to access the data. Click ", "bbox": {"l": 151.20016, "t": 469.90817, "r": 408.75781, "b": 479.12115, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "OK", "bbox": {"l": 408.84045, "t": 469.90817, "r": 423.76251, "b": 479.12115, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": ".", "bbox": {"l": 423.78046, "t": 469.90817, "r": 426.54935, "b": 479.12115, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "caption", "bbox": {"l": 64.31603240966797, "t": 710.88671875, "r": 347.040283203125, "b": 720.9501342773438, "coord_origin": "TOPLEFT"}, "confidence": 0.9492066502571106, "cells": [{"id": 24, "text": "Figure 4-25 Creating a global variable called CUSTOMER_LOGIN_ID", "bbox": {"l": 64.800003, "t": 712.158005, "r": 346.33698, "b": 720.4830019999999, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "picture", "bbox": {"l": 135.9110107421875, "t": 195.97637939453125, "r": 454.9993896484375, "b": 405.2922058105469, "coord_origin": "TOPLEFT"}, "confidence": 0.987210750579834, "cells": []}, {"id": 10, "label": "picture", "bbox": {"l": 64.25324249267578, "t": 493.0924987792969, "r": 546.2809448242188, "b": 708.3674926757812, "coord_origin": "TOPLEFT"}, "confidence": 0.9863254427909851, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 67, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.1907958984375, "t": 754.3226928710938, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9162147045135498, "cells": [{"id": 0, "text": "52 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "52"}, {"label": "page_footer", "id": 1, "page_no": 67, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.31280517578125, "t": 754.688720703125, "r": 334.42142, "b": 763.898193359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9516439437866211, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "section_header", "id": 2, "page_no": 67, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.14804077148438, "t": 70.27552795410156, "r": 420.28372, "b": 83.57343292236328, "coord_origin": "TOPLEFT"}, "confidence": 0.9602196216583252, "cells": [{"id": 2, "text": "4.3.4", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 93.893837, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Creating the CUSTOMER_LOGIN_ID global variable ", "bbox": {"l": 97.530579, "t": 71.33471999999995, "r": 420.28372, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "4.3.4 Creating the CUSTOMER_LOGIN_ID global variable"}, {"label": "text", "id": 3, "page_no": 67, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.99069213867188, "t": 96.89618682861328, "r": 545.77252, "b": 131.00881958007812, "coord_origin": "TOPLEFT"}, "confidence": 0.9838969707489014, "cells": [{"id": 4, "text": "In this step, you create a global variable that is used to capture the Customer_Login_ID ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 524.35071, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "information, which is required to validate the permissions. For more information about global ", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 545.77252, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "variables, see 3.2.2, \u201cBuilt-in global variables\u201d on page 19.", "bbox": {"l": 136.8, "t": 121.48834000000011, "r": 393.31793, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}]}, "text": "In this step, you create a global variable that is used to capture the Customer_Login_ID information, which is required to validate the permissions. For more information about global variables, see 3.2.2, \u201cBuilt-in global variables\u201d on page 19."}, {"label": "section_header", "id": 4, "page_no": 67, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 136.14224243164062, "t": 142.52076721191406, "r": 266.86069, "b": 152.9317626953125, "coord_origin": "TOPLEFT"}, "confidence": 0.8107734322547913, "cells": [{"id": 7, "text": "Complete the following steps:", "bbox": {"l": 136.8, "t": 143.50793, "r": 266.86069, "b": 152.72095000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Complete the following steps:"}, {"label": "list_item", "id": 5, "page_no": 67, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 136.56494140625, "t": 159.2626495361328, "r": 535.943603515625, "b": 181.82007, "coord_origin": "TOPLEFT"}, "confidence": 0.9734883904457092, "cells": [{"id": 8, "text": "1.", "bbox": {"l": 136.8, "t": 160.48773000000006, "r": 145.18987, "b": 169.70074, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "From System i Navigator, under the schema Bank_Schema, right-click ", "bbox": {"l": 147.98647, "t": 160.48773000000006, "r": 463.85352, "b": 169.70074, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Global Variable", "bbox": {"l": 463.79974000000004, "t": 160.48773000000006, "r": 535.91608, "b": 169.70074, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "and select ", "bbox": {"l": 151.20016, "t": 172.48755000000006, "r": 199.5191, "b": 181.70056, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "New", "bbox": {"l": 199.50018, "t": 172.48755000000006, "r": 219.97794, "b": 181.70056, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "\uf0ae", "bbox": {"l": 222.71992, "t": 169.62902999999994, "r": 232.55045000000004, "b": 181.82007, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Global Variable", "bbox": {"l": 235.38007999999996, "t": 172.48755000000006, "r": 307.45761, "b": 181.70056, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": ", as shown in Figure 4-24.", "bbox": {"l": 307.26041, "t": 172.48755000000006, "r": 422.09814, "b": 181.70056, "coord_origin": "TOPLEFT"}}]}, "text": "1. From System i Navigator, under the schema Bank_Schema, right-click Global Variable and select New \uf0ae Global Variable , as shown in Figure 4-24."}, {"label": "caption", "id": 6, "page_no": 67, "cluster": {"id": 6, "label": "caption", "bbox": {"l": 136.03294372558594, "t": 407.6881408691406, "r": 292.05377197265625, "b": 416.7829284667969, "coord_origin": "TOPLEFT"}, "confidence": 0.9526056051254272, "cells": [{"id": 16, "text": "Figure 4-24 Creating a global variable", "bbox": {"l": 136.8, "t": 407.95801, "r": 291.84482, "b": 416.28302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-24 Creating a global variable"}, {"label": "list_item", "id": 7, "page_no": 67, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.92572021484375, "t": 433.5293884277344, "r": 541.19196, "b": 479.4812927246094, "coord_origin": "TOPLEFT"}, "confidence": 0.9796995520591736, "cells": [{"id": 17, "text": "2.", "bbox": {"l": 136.8, "t": 433.90872, "r": 145.17693, "b": 443.1217, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "The New Global Variable window opens, as shown in Figure 4-25. Enter the global ", "bbox": {"l": 147.96921, "t": 433.90872, "r": 517.53796, "b": 443.1217, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "variable name of CUSTOMER_LOGIN_ID, select the data type of VARCHAR, and leave ", "bbox": {"l": 151.20016, "t": 445.90854, "r": 541.19196, "b": 455.1215199999999, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "the default value of NULL. This default value ensures that users that do not use the web ", "bbox": {"l": 151.20016, "t": 457.90836, "r": 541.04456, "b": 467.12134, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "interface do not have permission to access the data. Click ", "bbox": {"l": 151.20016, "t": 469.90817, "r": 408.75781, "b": 479.12115, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "OK", "bbox": {"l": 408.84045, "t": 469.90817, "r": 423.76251, "b": 479.12115, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": ".", "bbox": {"l": 423.78046, "t": 469.90817, "r": 426.54935, "b": 479.12115, "coord_origin": "TOPLEFT"}}]}, "text": "2. The New Global Variable window opens, as shown in Figure 4-25. Enter the global variable name of CUSTOMER_LOGIN_ID, select the data type of VARCHAR, and leave the default value of NULL. This default value ensures that users that do not use the web interface do not have permission to access the data. Click OK ."}, {"label": "caption", "id": 8, "page_no": 67, "cluster": {"id": 8, "label": "caption", "bbox": {"l": 64.31603240966797, "t": 710.88671875, "r": 347.040283203125, "b": 720.9501342773438, "coord_origin": "TOPLEFT"}, "confidence": 0.9492066502571106, "cells": [{"id": 24, "text": "Figure 4-25 Creating a global variable called CUSTOMER_LOGIN_ID", "bbox": {"l": 64.800003, "t": 712.158005, "r": 346.33698, "b": 720.4830019999999, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-25 Creating a global variable called CUSTOMER_LOGIN_ID"}, {"label": "picture", "id": 9, "page_no": 67, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 135.9110107421875, "t": 195.97637939453125, "r": 454.9993896484375, "b": 405.2922058105469, "coord_origin": "TOPLEFT"}, "confidence": 0.987210750579834, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 10, "page_no": 67, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 64.25324249267578, "t": 493.0924987792969, "r": 546.2809448242188, "b": 708.3674926757812, "coord_origin": "TOPLEFT"}, "confidence": 0.9863254427909851, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "section_header", "id": 2, "page_no": 67, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.14804077148438, "t": 70.27552795410156, "r": 420.28372, "b": 83.57343292236328, "coord_origin": "TOPLEFT"}, "confidence": 0.9602196216583252, "cells": [{"id": 2, "text": "4.3.4", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 93.893837, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Creating the CUSTOMER_LOGIN_ID global variable ", "bbox": {"l": 97.530579, "t": 71.33471999999995, "r": 420.28372, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "4.3.4 Creating the CUSTOMER_LOGIN_ID global variable"}, {"label": "text", "id": 3, "page_no": 67, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.99069213867188, "t": 96.89618682861328, "r": 545.77252, "b": 131.00881958007812, "coord_origin": "TOPLEFT"}, "confidence": 0.9838969707489014, "cells": [{"id": 4, "text": "In this step, you create a global variable that is used to capture the Customer_Login_ID ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 524.35071, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "information, which is required to validate the permissions. For more information about global ", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 545.77252, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "variables, see 3.2.2, \u201cBuilt-in global variables\u201d on page 19.", "bbox": {"l": 136.8, "t": 121.48834000000011, "r": 393.31793, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}]}, "text": "In this step, you create a global variable that is used to capture the Customer_Login_ID information, which is required to validate the permissions. For more information about global variables, see 3.2.2, \u201cBuilt-in global variables\u201d on page 19."}, {"label": "section_header", "id": 4, "page_no": 67, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 136.14224243164062, "t": 142.52076721191406, "r": 266.86069, "b": 152.9317626953125, "coord_origin": "TOPLEFT"}, "confidence": 0.8107734322547913, "cells": [{"id": 7, "text": "Complete the following steps:", "bbox": {"l": 136.8, "t": 143.50793, "r": 266.86069, "b": 152.72095000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Complete the following steps:"}, {"label": "list_item", "id": 5, "page_no": 67, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 136.56494140625, "t": 159.2626495361328, "r": 535.943603515625, "b": 181.82007, "coord_origin": "TOPLEFT"}, "confidence": 0.9734883904457092, "cells": [{"id": 8, "text": "1.", "bbox": {"l": 136.8, "t": 160.48773000000006, "r": 145.18987, "b": 169.70074, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "From System i Navigator, under the schema Bank_Schema, right-click ", "bbox": {"l": 147.98647, "t": 160.48773000000006, "r": 463.85352, "b": 169.70074, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Global Variable", "bbox": {"l": 463.79974000000004, "t": 160.48773000000006, "r": 535.91608, "b": 169.70074, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "and select ", "bbox": {"l": 151.20016, "t": 172.48755000000006, "r": 199.5191, "b": 181.70056, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "New", "bbox": {"l": 199.50018, "t": 172.48755000000006, "r": 219.97794, "b": 181.70056, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "\uf0ae", "bbox": {"l": 222.71992, "t": 169.62902999999994, "r": 232.55045000000004, "b": 181.82007, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Global Variable", "bbox": {"l": 235.38007999999996, "t": 172.48755000000006, "r": 307.45761, "b": 181.70056, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": ", as shown in Figure 4-24.", "bbox": {"l": 307.26041, "t": 172.48755000000006, "r": 422.09814, "b": 181.70056, "coord_origin": "TOPLEFT"}}]}, "text": "1. From System i Navigator, under the schema Bank_Schema, right-click Global Variable and select New \uf0ae Global Variable , as shown in Figure 4-24."}, {"label": "caption", "id": 6, "page_no": 67, "cluster": {"id": 6, "label": "caption", "bbox": {"l": 136.03294372558594, "t": 407.6881408691406, "r": 292.05377197265625, "b": 416.7829284667969, "coord_origin": "TOPLEFT"}, "confidence": 0.9526056051254272, "cells": [{"id": 16, "text": "Figure 4-24 Creating a global variable", "bbox": {"l": 136.8, "t": 407.95801, "r": 291.84482, "b": 416.28302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-24 Creating a global variable"}, {"label": "list_item", "id": 7, "page_no": 67, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.92572021484375, "t": 433.5293884277344, "r": 541.19196, "b": 479.4812927246094, "coord_origin": "TOPLEFT"}, "confidence": 0.9796995520591736, "cells": [{"id": 17, "text": "2.", "bbox": {"l": 136.8, "t": 433.90872, "r": 145.17693, "b": 443.1217, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "The New Global Variable window opens, as shown in Figure 4-25. Enter the global ", "bbox": {"l": 147.96921, "t": 433.90872, "r": 517.53796, "b": 443.1217, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "variable name of CUSTOMER_LOGIN_ID, select the data type of VARCHAR, and leave ", "bbox": {"l": 151.20016, "t": 445.90854, "r": 541.19196, "b": 455.1215199999999, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "the default value of NULL. This default value ensures that users that do not use the web ", "bbox": {"l": 151.20016, "t": 457.90836, "r": 541.04456, "b": 467.12134, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "interface do not have permission to access the data. Click ", "bbox": {"l": 151.20016, "t": 469.90817, "r": 408.75781, "b": 479.12115, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "OK", "bbox": {"l": 408.84045, "t": 469.90817, "r": 423.76251, "b": 479.12115, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": ".", "bbox": {"l": 423.78046, "t": 469.90817, "r": 426.54935, "b": 479.12115, "coord_origin": "TOPLEFT"}}]}, "text": "2. The New Global Variable window opens, as shown in Figure 4-25. Enter the global variable name of CUSTOMER_LOGIN_ID, select the data type of VARCHAR, and leave the default value of NULL. This default value ensures that users that do not use the web interface do not have permission to access the data. Click OK ."}, {"label": "caption", "id": 8, "page_no": 67, "cluster": {"id": 8, "label": "caption", "bbox": {"l": 64.31603240966797, "t": 710.88671875, "r": 347.040283203125, "b": 720.9501342773438, "coord_origin": "TOPLEFT"}, "confidence": 0.9492066502571106, "cells": [{"id": 24, "text": "Figure 4-25 Creating a global variable called CUSTOMER_LOGIN_ID", "bbox": {"l": 64.800003, "t": 712.158005, "r": 346.33698, "b": 720.4830019999999, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-25 Creating a global variable called CUSTOMER_LOGIN_ID"}, {"label": "picture", "id": 9, "page_no": 67, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 135.9110107421875, "t": 195.97637939453125, "r": 454.9993896484375, "b": 405.2922058105469, "coord_origin": "TOPLEFT"}, "confidence": 0.987210750579834, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 10, "page_no": 67, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 64.25324249267578, "t": 493.0924987792969, "r": 546.2809448242188, "b": 708.3674926757812, "coord_origin": "TOPLEFT"}, "confidence": 0.9863254427909851, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 67, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.1907958984375, "t": 754.3226928710938, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9162147045135498, "cells": [{"id": 0, "text": "52 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "52"}, {"label": "page_footer", "id": 1, "page_no": 67, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.31280517578125, "t": 754.688720703125, "r": 334.42142, "b": 763.898193359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9516439437866211, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 68, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "53", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "3.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.08879, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Now that the global variable is created, assign permissions to the variable so that it can be ", "bbox": {"l": 147.85187, "t": 71.50903000000005, "r": 547.25427, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "set by the program. Right-click the CUSTOMER_LOGIN_ID global variable and select ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 532.09296, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Permissions", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 210.36716, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ", as shown in Figure 4-26.", "bbox": {"l": 210.17989, "t": 95.50867000000005, "r": 325.08237, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Figure 4-26 Setting permissions on the CUSTOMER_LOGIN_ID global variable", "bbox": {"l": 136.8, "t": 242.83794999999998, "r": 456.94073, "b": 251.16290000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "4.", "bbox": {"l": 136.8, "t": 268.78857000000005, "r": 145.2059, "b": 278.00158999999996, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "The Permissions window opens, as shown in Figure 4-27. Select ", "bbox": {"l": 148.00787, "t": 268.78857000000005, "r": 439.29123, "b": 278.00158999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Change", "bbox": {"l": 439.32007, "t": 268.78857000000005, "r": 476.15612999999996, "b": 278.00158999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": " authority for ", "bbox": {"l": 476.10034, "t": 268.78857000000005, "r": 534.23877, "b": 278.00158999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Webuser so that the application can set this global variable.", "bbox": {"l": 151.20016, "t": 280.78842, "r": 413.51169, "b": 290.0014, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Figure 4-27 Setting change permissions for Webuser on the CUSTOMER_LOGIN_ID global variable", "bbox": {"l": 136.8, "t": 579.49789, "r": 539.75073, "b": 587.82291, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 214.31678771972656, "t": 754.7354125976562, "r": 523.59357, "b": 764.0438232421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9558536410331726, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.7046508789062, "t": 754.34130859375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9125332832336426, "cells": [{"id": 1, "text": "53", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 136.12977600097656, "t": 70.7454833984375, "r": 547.25427, "b": 104.7872085571289, "coord_origin": "TOPLEFT"}, "confidence": 0.9774090051651001, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.08879, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Now that the global variable is created, assign permissions to the variable so that it can be ", "bbox": {"l": 147.85187, "t": 71.50903000000005, "r": 547.25427, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "set by the program. Right-click the CUSTOMER_LOGIN_ID global variable and select ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 532.09296, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Permissions", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 210.36716, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ", as shown in Figure 4-26.", "bbox": {"l": 210.17989, "t": 95.50867000000005, "r": 325.08237, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 135.95867919921875, "t": 241.98797607421875, "r": 457.0142822265625, "b": 251.3716278076172, "coord_origin": "TOPLEFT"}, "confidence": 0.9472981095314026, "cells": [{"id": 7, "text": "Figure 4-26 Setting permissions on the CUSTOMER_LOGIN_ID global variable", "bbox": {"l": 136.8, "t": 242.83794999999998, "r": 456.94073, "b": 251.16290000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 135.82858276367188, "t": 267.8819274902344, "r": 534.23877, "b": 290.46051025390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9716678857803345, "cells": [{"id": 8, "text": "4.", "bbox": {"l": 136.8, "t": 268.78857000000005, "r": 145.2059, "b": 278.00158999999996, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "The Permissions window opens, as shown in Figure 4-27. Select ", "bbox": {"l": 148.00787, "t": 268.78857000000005, "r": 439.29123, "b": 278.00158999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Change", "bbox": {"l": 439.32007, "t": 268.78857000000005, "r": 476.15612999999996, "b": 278.00158999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": " authority for ", "bbox": {"l": 476.10034, "t": 268.78857000000005, "r": 534.23877, "b": 278.00158999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Webuser so that the application can set this global variable.", "bbox": {"l": 151.20016, "t": 280.78842, "r": 413.51169, "b": 290.0014, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 136.15591430664062, "t": 578.5726318359375, "r": 540.3552856445312, "b": 588.1502075195312, "coord_origin": "TOPLEFT"}, "confidence": 0.9472869038581848, "cells": [{"id": 13, "text": "Figure 4-27 Setting change permissions for Webuser on the CUSTOMER_LOGIN_ID global variable", "bbox": {"l": 136.8, "t": 579.49789, "r": 539.75073, "b": 587.82291, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "picture", "bbox": {"l": 136.84584045410156, "t": 303.6470031738281, "r": 547.677978515625, "b": 576.6021118164062, "coord_origin": "TOPLEFT"}, "confidence": 0.9863014221191406, "cells": []}, {"id": 7, "label": "picture", "bbox": {"l": 136.07814025878906, "t": 119.34014892578125, "r": 346.28375244140625, "b": 239.5808868408203, "coord_origin": "TOPLEFT"}, "confidence": 0.9723811745643616, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 68, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.31678771972656, "t": 754.7354125976562, "r": 523.59357, "b": 764.0438232421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9558536410331726, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 68, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.7046508789062, "t": 754.34130859375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9125332832336426, "cells": [{"id": 1, "text": "53", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "53"}, {"label": "list_item", "id": 2, "page_no": 68, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.12977600097656, "t": 70.7454833984375, "r": 547.25427, "b": 104.7872085571289, "coord_origin": "TOPLEFT"}, "confidence": 0.9774090051651001, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.08879, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Now that the global variable is created, assign permissions to the variable so that it can be ", "bbox": {"l": 147.85187, "t": 71.50903000000005, "r": 547.25427, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "set by the program. Right-click the CUSTOMER_LOGIN_ID global variable and select ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 532.09296, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Permissions", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 210.36716, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ", as shown in Figure 4-26.", "bbox": {"l": 210.17989, "t": 95.50867000000005, "r": 325.08237, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "3. Now that the global variable is created, assign permissions to the variable so that it can be set by the program. Right-click the CUSTOMER_LOGIN_ID global variable and select Permissions , as shown in Figure 4-26."}, {"label": "caption", "id": 3, "page_no": 68, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.95867919921875, "t": 241.98797607421875, "r": 457.0142822265625, "b": 251.3716278076172, "coord_origin": "TOPLEFT"}, "confidence": 0.9472981095314026, "cells": [{"id": 7, "text": "Figure 4-26 Setting permissions on the CUSTOMER_LOGIN_ID global variable", "bbox": {"l": 136.8, "t": 242.83794999999998, "r": 456.94073, "b": 251.16290000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-26 Setting permissions on the CUSTOMER_LOGIN_ID global variable"}, {"label": "list_item", "id": 4, "page_no": 68, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.82858276367188, "t": 267.8819274902344, "r": 534.23877, "b": 290.46051025390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9716678857803345, "cells": [{"id": 8, "text": "4.", "bbox": {"l": 136.8, "t": 268.78857000000005, "r": 145.2059, "b": 278.00158999999996, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "The Permissions window opens, as shown in Figure 4-27. Select ", "bbox": {"l": 148.00787, "t": 268.78857000000005, "r": 439.29123, "b": 278.00158999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Change", "bbox": {"l": 439.32007, "t": 268.78857000000005, "r": 476.15612999999996, "b": 278.00158999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": " authority for ", "bbox": {"l": 476.10034, "t": 268.78857000000005, "r": 534.23877, "b": 278.00158999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Webuser so that the application can set this global variable.", "bbox": {"l": 151.20016, "t": 280.78842, "r": 413.51169, "b": 290.0014, "coord_origin": "TOPLEFT"}}]}, "text": "4. The Permissions window opens, as shown in Figure 4-27. Select Change authority for Webuser so that the application can set this global variable."}, {"label": "caption", "id": 5, "page_no": 68, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.15591430664062, "t": 578.5726318359375, "r": 540.3552856445312, "b": 588.1502075195312, "coord_origin": "TOPLEFT"}, "confidence": 0.9472869038581848, "cells": [{"id": 13, "text": "Figure 4-27 Setting change permissions for Webuser on the CUSTOMER_LOGIN_ID global variable", "bbox": {"l": 136.8, "t": 579.49789, "r": 539.75073, "b": 587.82291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-27 Setting change permissions for Webuser on the CUSTOMER_LOGIN_ID global variable"}, {"label": "picture", "id": 6, "page_no": 68, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 136.84584045410156, "t": 303.6470031738281, "r": 547.677978515625, "b": 576.6021118164062, "coord_origin": "TOPLEFT"}, "confidence": 0.9863014221191406, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 7, "page_no": 68, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 136.07814025878906, "t": 119.34014892578125, "r": 346.28375244140625, "b": 239.5808868408203, "coord_origin": "TOPLEFT"}, "confidence": 0.9723811745643616, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 68, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.12977600097656, "t": 70.7454833984375, "r": 547.25427, "b": 104.7872085571289, "coord_origin": "TOPLEFT"}, "confidence": 0.9774090051651001, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.08879, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Now that the global variable is created, assign permissions to the variable so that it can be ", "bbox": {"l": 147.85187, "t": 71.50903000000005, "r": 547.25427, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "set by the program. Right-click the CUSTOMER_LOGIN_ID global variable and select ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 532.09296, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Permissions", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 210.36716, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ", as shown in Figure 4-26.", "bbox": {"l": 210.17989, "t": 95.50867000000005, "r": 325.08237, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "3. Now that the global variable is created, assign permissions to the variable so that it can be set by the program. Right-click the CUSTOMER_LOGIN_ID global variable and select Permissions , as shown in Figure 4-26."}, {"label": "caption", "id": 3, "page_no": 68, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.95867919921875, "t": 241.98797607421875, "r": 457.0142822265625, "b": 251.3716278076172, "coord_origin": "TOPLEFT"}, "confidence": 0.9472981095314026, "cells": [{"id": 7, "text": "Figure 4-26 Setting permissions on the CUSTOMER_LOGIN_ID global variable", "bbox": {"l": 136.8, "t": 242.83794999999998, "r": 456.94073, "b": 251.16290000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-26 Setting permissions on the CUSTOMER_LOGIN_ID global variable"}, {"label": "list_item", "id": 4, "page_no": 68, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.82858276367188, "t": 267.8819274902344, "r": 534.23877, "b": 290.46051025390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9716678857803345, "cells": [{"id": 8, "text": "4.", "bbox": {"l": 136.8, "t": 268.78857000000005, "r": 145.2059, "b": 278.00158999999996, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "The Permissions window opens, as shown in Figure 4-27. Select ", "bbox": {"l": 148.00787, "t": 268.78857000000005, "r": 439.29123, "b": 278.00158999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Change", "bbox": {"l": 439.32007, "t": 268.78857000000005, "r": 476.15612999999996, "b": 278.00158999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": " authority for ", "bbox": {"l": 476.10034, "t": 268.78857000000005, "r": 534.23877, "b": 278.00158999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Webuser so that the application can set this global variable.", "bbox": {"l": 151.20016, "t": 280.78842, "r": 413.51169, "b": 290.0014, "coord_origin": "TOPLEFT"}}]}, "text": "4. The Permissions window opens, as shown in Figure 4-27. Select Change authority for Webuser so that the application can set this global variable."}, {"label": "caption", "id": 5, "page_no": 68, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.15591430664062, "t": 578.5726318359375, "r": 540.3552856445312, "b": 588.1502075195312, "coord_origin": "TOPLEFT"}, "confidence": 0.9472869038581848, "cells": [{"id": 13, "text": "Figure 4-27 Setting change permissions for Webuser on the CUSTOMER_LOGIN_ID global variable", "bbox": {"l": 136.8, "t": 579.49789, "r": 539.75073, "b": 587.82291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-27 Setting change permissions for Webuser on the CUSTOMER_LOGIN_ID global variable"}, {"label": "picture", "id": 6, "page_no": 68, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 136.84584045410156, "t": 303.6470031738281, "r": 547.677978515625, "b": 576.6021118164062, "coord_origin": "TOPLEFT"}, "confidence": 0.9863014221191406, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 7, "page_no": 68, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 136.07814025878906, "t": 119.34014892578125, "r": 346.28375244140625, "b": 239.5808868408203, "coord_origin": "TOPLEFT"}, "confidence": 0.9723811745643616, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 68, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.31678771972656, "t": 754.7354125976562, "r": 523.59357, "b": 764.0438232421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9558536410331726, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 68, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.7046508789062, "t": 754.34130859375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9125332832336426, "cells": [{"id": 1, "text": "53", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "53"}]}}, {"page_no": 69, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "54 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "4.3.5", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 94.008797, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Defining and creating row permissions", "bbox": {"l": 97.659912, "t": 71.33471999999995, "r": 339.95895, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "You now ready to define the row permissions of the tables. Complete the following steps:", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 527.37946, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "1.", "bbox": {"l": 136.8, "t": 114.52826000000005, "r": 145.19618, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "From the navigation pane of System i Navigator, click ", "bbox": {"l": 147.99492, "t": 114.52826000000005, "r": 388.58487, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Schemas", "bbox": {"l": 388.50015, "t": 114.52826000000005, "r": 432.27634000000006, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "\uf0ae", "bbox": {"l": 435.06015, "t": 111.66974000000005, "r": 444.89066, "b": 123.86077999999986, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "BANK_SCHEMA", "bbox": {"l": 447.72031, "t": 114.52826000000005, "r": 525.15625, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": ", ", "bbox": {"l": 525.12048, "t": 114.52826000000005, "r": 530.75983, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "right-click ", "bbox": {"l": 151.2002, "t": 126.52808000000005, "r": 196.0929, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Row Permissions", "bbox": {"l": 196.13971, "t": 126.52808000000005, "r": 278.99695, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": ", and select", "bbox": {"l": 278.81967, "t": 126.52808000000005, "r": 329.97723, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " New", "bbox": {"l": 329.93936, "t": 126.52808000000005, "r": 353.22482, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "\uf0ae", "bbox": {"l": 355.61923, "t": 123.66956000000016, "r": 365.44974, "b": 135.86059999999998, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": " Row Permission", "bbox": {"l": 365.51947, "t": 126.52808000000005, "r": 445.6078499999999, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ", as shown in ", "bbox": {"l": 445.5590199999999, "t": 126.52808000000005, "r": 506.52917, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Figure 4-28.", "bbox": {"l": 151.19818, "t": 138.52788999999996, "r": 205.13155, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Figure 4-28 Selecting new row permissions", "bbox": {"l": 136.8, "t": 423.31799, "r": 313.46371, "b": 431.64301, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.29161071777344, "t": 754.29296875, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9131852984428406, "cells": [{"id": 0, "text": "54 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.33383178710938, "t": 754.6670532226562, "r": 334.42142, "b": 763.9429321289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9536429047584534, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.21206665039062, "t": 70.20098876953125, "r": 339.95895, "b": 83.59224700927734, "coord_origin": "TOPLEFT"}, "confidence": 0.9649859070777893, "cells": [{"id": 2, "text": "4.3.5", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 94.008797, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Defining and creating row permissions", "bbox": {"l": 97.659912, "t": 71.33471999999995, "r": 339.95895, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.9742889404297, "t": 96.73395538330078, "r": 527.37946, "b": 106.9632339477539, "coord_origin": "TOPLEFT"}, "confidence": 0.9519023299217224, "cells": [{"id": 4, "text": "You now ready to define the row permissions of the tables. Complete the following steps:", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 527.37946, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 136.758056640625, "t": 111.66974000000005, "r": 530.75983, "b": 148.32473754882812, "coord_origin": "TOPLEFT"}, "confidence": 0.9718437194824219, "cells": [{"id": 5, "text": "1.", "bbox": {"l": 136.8, "t": 114.52826000000005, "r": 145.19618, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "From the navigation pane of System i Navigator, click ", "bbox": {"l": 147.99492, "t": 114.52826000000005, "r": 388.58487, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Schemas", "bbox": {"l": 388.50015, "t": 114.52826000000005, "r": 432.27634000000006, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "\uf0ae", "bbox": {"l": 435.06015, "t": 111.66974000000005, "r": 444.89066, "b": 123.86077999999986, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "BANK_SCHEMA", "bbox": {"l": 447.72031, "t": 114.52826000000005, "r": 525.15625, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": ", ", "bbox": {"l": 525.12048, "t": 114.52826000000005, "r": 530.75983, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "right-click ", "bbox": {"l": 151.2002, "t": 126.52808000000005, "r": 196.0929, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Row Permissions", "bbox": {"l": 196.13971, "t": 126.52808000000005, "r": 278.99695, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": ", and select", "bbox": {"l": 278.81967, "t": 126.52808000000005, "r": 329.97723, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " New", "bbox": {"l": 329.93936, "t": 126.52808000000005, "r": 353.22482, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "\uf0ae", "bbox": {"l": 355.61923, "t": 123.66956000000016, "r": 365.44974, "b": 135.86059999999998, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": " Row Permission", "bbox": {"l": 365.51947, "t": 126.52808000000005, "r": 445.6078499999999, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ", as shown in ", "bbox": {"l": 445.5590199999999, "t": 126.52808000000005, "r": 506.52917, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Figure 4-28.", "bbox": {"l": 151.19818, "t": 138.52788999999996, "r": 205.13155, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 136.1620330810547, "t": 422.876953125, "r": 314.04541015625, "b": 432.17633056640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9444904327392578, "cells": [{"id": 19, "text": "Figure 4-28 Selecting new row permissions", "bbox": {"l": 136.8, "t": 423.31799, "r": 313.46371, "b": 431.64301, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "picture", "bbox": {"l": 136.3912811279297, "t": 161.90283203125, "r": 467.3126220703125, "b": 420.1808166503906, "coord_origin": "TOPLEFT"}, "confidence": 0.9873494505882263, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 69, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.29161071777344, "t": 754.29296875, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9131852984428406, "cells": [{"id": 0, "text": "54 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "54"}, {"label": "page_footer", "id": 1, "page_no": 69, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.33383178710938, "t": 754.6670532226562, "r": 334.42142, "b": 763.9429321289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9536429047584534, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "section_header", "id": 2, "page_no": 69, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.21206665039062, "t": 70.20098876953125, "r": 339.95895, "b": 83.59224700927734, "coord_origin": "TOPLEFT"}, "confidence": 0.9649859070777893, "cells": [{"id": 2, "text": "4.3.5", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 94.008797, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Defining and creating row permissions", "bbox": {"l": 97.659912, "t": 71.33471999999995, "r": 339.95895, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "4.3.5 Defining and creating row permissions"}, {"label": "text", "id": 3, "page_no": 69, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.9742889404297, "t": 96.73395538330078, "r": 527.37946, "b": 106.9632339477539, "coord_origin": "TOPLEFT"}, "confidence": 0.9519023299217224, "cells": [{"id": 4, "text": "You now ready to define the row permissions of the tables. Complete the following steps:", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 527.37946, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}]}, "text": "You now ready to define the row permissions of the tables. Complete the following steps:"}, {"label": "list_item", "id": 4, "page_no": 69, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.758056640625, "t": 111.66974000000005, "r": 530.75983, "b": 148.32473754882812, "coord_origin": "TOPLEFT"}, "confidence": 0.9718437194824219, "cells": [{"id": 5, "text": "1.", "bbox": {"l": 136.8, "t": 114.52826000000005, "r": 145.19618, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "From the navigation pane of System i Navigator, click ", "bbox": {"l": 147.99492, "t": 114.52826000000005, "r": 388.58487, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Schemas", "bbox": {"l": 388.50015, "t": 114.52826000000005, "r": 432.27634000000006, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "\uf0ae", "bbox": {"l": 435.06015, "t": 111.66974000000005, "r": 444.89066, "b": 123.86077999999986, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "BANK_SCHEMA", "bbox": {"l": 447.72031, "t": 114.52826000000005, "r": 525.15625, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": ", ", "bbox": {"l": 525.12048, "t": 114.52826000000005, "r": 530.75983, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "right-click ", "bbox": {"l": 151.2002, "t": 126.52808000000005, "r": 196.0929, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Row Permissions", "bbox": {"l": 196.13971, "t": 126.52808000000005, "r": 278.99695, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": ", and select", "bbox": {"l": 278.81967, "t": 126.52808000000005, "r": 329.97723, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " New", "bbox": {"l": 329.93936, "t": 126.52808000000005, "r": 353.22482, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "\uf0ae", "bbox": {"l": 355.61923, "t": 123.66956000000016, "r": 365.44974, "b": 135.86059999999998, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": " Row Permission", "bbox": {"l": 365.51947, "t": 126.52808000000005, "r": 445.6078499999999, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ", as shown in ", "bbox": {"l": 445.5590199999999, "t": 126.52808000000005, "r": 506.52917, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Figure 4-28.", "bbox": {"l": 151.19818, "t": 138.52788999999996, "r": 205.13155, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}]}, "text": "1. From the navigation pane of System i Navigator, click Schemas \uf0ae BANK_SCHEMA , right-click Row Permissions , and select New \uf0ae Row Permission , as shown in Figure 4-28."}, {"label": "caption", "id": 5, "page_no": 69, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.1620330810547, "t": 422.876953125, "r": 314.04541015625, "b": 432.17633056640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9444904327392578, "cells": [{"id": 19, "text": "Figure 4-28 Selecting new row permissions", "bbox": {"l": 136.8, "t": 423.31799, "r": 313.46371, "b": 431.64301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-28 Selecting new row permissions"}, {"label": "picture", "id": 6, "page_no": 69, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 136.3912811279297, "t": 161.90283203125, "r": 467.3126220703125, "b": 420.1808166503906, "coord_origin": "TOPLEFT"}, "confidence": 0.9873494505882263, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "section_header", "id": 2, "page_no": 69, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.21206665039062, "t": 70.20098876953125, "r": 339.95895, "b": 83.59224700927734, "coord_origin": "TOPLEFT"}, "confidence": 0.9649859070777893, "cells": [{"id": 2, "text": "4.3.5", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 94.008797, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Defining and creating row permissions", "bbox": {"l": 97.659912, "t": 71.33471999999995, "r": 339.95895, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "4.3.5 Defining and creating row permissions"}, {"label": "text", "id": 3, "page_no": 69, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.9742889404297, "t": 96.73395538330078, "r": 527.37946, "b": 106.9632339477539, "coord_origin": "TOPLEFT"}, "confidence": 0.9519023299217224, "cells": [{"id": 4, "text": "You now ready to define the row permissions of the tables. Complete the following steps:", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 527.37946, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}]}, "text": "You now ready to define the row permissions of the tables. Complete the following steps:"}, {"label": "list_item", "id": 4, "page_no": 69, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.758056640625, "t": 111.66974000000005, "r": 530.75983, "b": 148.32473754882812, "coord_origin": "TOPLEFT"}, "confidence": 0.9718437194824219, "cells": [{"id": 5, "text": "1.", "bbox": {"l": 136.8, "t": 114.52826000000005, "r": 145.19618, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "From the navigation pane of System i Navigator, click ", "bbox": {"l": 147.99492, "t": 114.52826000000005, "r": 388.58487, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Schemas", "bbox": {"l": 388.50015, "t": 114.52826000000005, "r": 432.27634000000006, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "\uf0ae", "bbox": {"l": 435.06015, "t": 111.66974000000005, "r": 444.89066, "b": 123.86077999999986, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "BANK_SCHEMA", "bbox": {"l": 447.72031, "t": 114.52826000000005, "r": 525.15625, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": ", ", "bbox": {"l": 525.12048, "t": 114.52826000000005, "r": 530.75983, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "right-click ", "bbox": {"l": 151.2002, "t": 126.52808000000005, "r": 196.0929, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Row Permissions", "bbox": {"l": 196.13971, "t": 126.52808000000005, "r": 278.99695, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": ", and select", "bbox": {"l": 278.81967, "t": 126.52808000000005, "r": 329.97723, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " New", "bbox": {"l": 329.93936, "t": 126.52808000000005, "r": 353.22482, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "\uf0ae", "bbox": {"l": 355.61923, "t": 123.66956000000016, "r": 365.44974, "b": 135.86059999999998, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": " Row Permission", "bbox": {"l": 365.51947, "t": 126.52808000000005, "r": 445.6078499999999, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ", as shown in ", "bbox": {"l": 445.5590199999999, "t": 126.52808000000005, "r": 506.52917, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Figure 4-28.", "bbox": {"l": 151.19818, "t": 138.52788999999996, "r": 205.13155, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}]}, "text": "1. From the navigation pane of System i Navigator, click Schemas \uf0ae BANK_SCHEMA , right-click Row Permissions , and select New \uf0ae Row Permission , as shown in Figure 4-28."}, {"label": "caption", "id": 5, "page_no": 69, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.1620330810547, "t": 422.876953125, "r": 314.04541015625, "b": 432.17633056640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9444904327392578, "cells": [{"id": 19, "text": "Figure 4-28 Selecting new row permissions", "bbox": {"l": 136.8, "t": 423.31799, "r": 313.46371, "b": 431.64301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-28 Selecting new row permissions"}, {"label": "picture", "id": 6, "page_no": 69, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 136.3912811279297, "t": 161.90283203125, "r": 467.3126220703125, "b": 420.1808166503906, "coord_origin": "TOPLEFT"}, "confidence": 0.9873494505882263, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 69, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.29161071777344, "t": 754.29296875, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9131852984428406, "cells": [{"id": 0, "text": "54 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "54"}, {"label": "page_footer", "id": 1, "page_no": 69, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.33383178710938, "t": 754.6670532226562, "r": 334.42142, "b": 763.9429321289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9536429047584534, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 70, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "55", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.18062, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The New Row Permission window opens, as shown in Figure 4-29. Enter the information ", "bbox": {"l": 147.97429, "t": 71.50903000000005, "r": 544.50513, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "regarding the row permissions on the CUSTOMERS table. This row permission defines ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 538.36682, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "what is established in the following policy:", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 334.9458, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "-", "bbox": {"l": 152.03938, "t": 112.48845999999992, "r": 157.60901, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "User profiles that belong to DBE, ADMIN, and TELLER group profiles can see all the ", "bbox": {"l": 165.59892, "t": 112.48845999999992, "r": 542.18152, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "rows.", "bbox": {"l": 165.59892, "t": 124.48828000000003, "r": 189.17128, "b": 133.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "-", "bbox": {"l": 152.03938, "t": 141.52783, "r": 157.61002, "b": 150.74084000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER ", "bbox": {"l": 165.59894, "t": 141.52783, "r": 534.40277, "b": 150.74084000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "user) can see only the rows that match their customer login ID. The login ID value ", "bbox": {"l": 165.59892, "t": 153.52765, "r": 527.79926, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "representing the online banking user is passed from the web application to the ", "bbox": {"l": 165.59892, "t": 165.52747, "r": 513.83038, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "database by using the global variable CUSTOMER_LOGIN_ID. The permission rule ", "bbox": {"l": 165.59891, "t": 177.52728000000002, "r": 537.78314, "b": 186.74030000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "uses a subquery to check whether the global variable matches the ", "bbox": {"l": 165.59891, "t": 189.52710000000002, "r": 460.90103, "b": 198.74010999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "CUSTOMER_LOGIN_ID column value in the CUSTOMERS table.", "bbox": {"l": 165.59891, "t": 201.52692000000002, "r": 456.26354999999995, "b": 210.73992999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "-", "bbox": {"l": 152.03937, "t": 218.50671, "r": 157.61099, "b": 227.71973000000003, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Any other user profile cannot see any rows at all.", "bbox": {"l": 165.59891, "t": 218.50671, "r": 381.32654, "b": 227.71973000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Select the ", "bbox": {"l": 151.19974, "t": 235.48650999999995, "r": 198.41113, "b": 244.69952, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Enabled", "bbox": {"l": 198.4201, "t": 235.48650999999995, "r": 237.21332, "b": 244.69952, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": " option. Click ", "bbox": {"l": 237.18044, "t": 235.48650999999995, "r": 297.04803, "b": 244.69952, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "OK", "bbox": {"l": 297.00018, "t": 235.48650999999995, "r": 311.92224, "b": 244.69952, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": ".", "bbox": {"l": 311.99994, "t": 235.48650999999995, "r": 314.76883, "b": 244.69952, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Figure 4-29 New row permissions on the CUSTOMERS table", "bbox": {"l": 136.8, "t": 529.9379, "r": 384.29547, "b": 538.26291, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 214.24986267089844, "t": 754.7130737304688, "r": 523.59357, "b": 764.043212890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9545792937278748, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.6702270507812, "t": 754.3177490234375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9093314409255981, "cells": [{"id": 1, "text": "55", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 136.03018188476562, "t": 70.50949096679688, "r": 544.50513, "b": 104.85425567626953, "coord_origin": "TOPLEFT"}, "confidence": 0.9784817099571228, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.18062, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The New Row Permission window opens, as shown in Figure 4-29. Enter the information ", "bbox": {"l": 147.97429, "t": 71.50903000000005, "r": 544.50513, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "regarding the row permissions on the CUSTOMERS table. This row permission defines ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 538.36682, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "what is established in the following policy:", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 334.9458, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "list_item", "bbox": {"l": 151.3019256591797, "t": 111.28250122070312, "r": 542.18152, "b": 133.70128999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9687250852584839, "cells": [{"id": 6, "text": "-", "bbox": {"l": 152.03938, "t": 112.48845999999992, "r": 157.60901, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "User profiles that belong to DBE, ADMIN, and TELLER group profiles can see all the ", "bbox": {"l": 165.59892, "t": 112.48845999999992, "r": 542.18152, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "rows.", "bbox": {"l": 165.59892, "t": 124.48828000000003, "r": 189.17128, "b": 133.70128999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 151.4884796142578, "t": 140.4087677001953, "r": 537.78314, "b": 210.73992999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.983960747718811, "cells": [{"id": 9, "text": "-", "bbox": {"l": 152.03938, "t": 141.52783, "r": 157.61002, "b": 150.74084000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER ", "bbox": {"l": 165.59894, "t": 141.52783, "r": 534.40277, "b": 150.74084000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "user) can see only the rows that match their customer login ID. The login ID value ", "bbox": {"l": 165.59892, "t": 153.52765, "r": 527.79926, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "representing the online banking user is passed from the web application to the ", "bbox": {"l": 165.59892, "t": 165.52747, "r": 513.83038, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "database by using the global variable CUSTOMER_LOGIN_ID. The permission rule ", "bbox": {"l": 165.59891, "t": 177.52728000000002, "r": 537.78314, "b": 186.74030000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "uses a subquery to check whether the global variable matches the ", "bbox": {"l": 165.59891, "t": 189.52710000000002, "r": 460.90103, "b": 198.74010999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "CUSTOMER_LOGIN_ID column value in the CUSTOMERS table.", "bbox": {"l": 165.59891, "t": 201.52692000000002, "r": 456.26354999999995, "b": 210.73992999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 151.66030883789062, "t": 217.47354125976562, "r": 381.32654, "b": 227.79330444335938, "coord_origin": "TOPLEFT"}, "confidence": 0.9481797814369202, "cells": [{"id": 16, "text": "-", "bbox": {"l": 152.03937, "t": 218.50671, "r": 157.61099, "b": 227.71973000000003, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Any other user profile cannot see any rows at all.", "bbox": {"l": 165.59891, "t": 218.50671, "r": 381.32654, "b": 227.71973000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 151.00958251953125, "t": 234.5278778076172, "r": 314.76883, "b": 245.11355590820312, "coord_origin": "TOPLEFT"}, "confidence": 0.7769520878791809, "cells": [{"id": 18, "text": "Select the ", "bbox": {"l": 151.19974, "t": 235.48650999999995, "r": 198.41113, "b": 244.69952, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Enabled", "bbox": {"l": 198.4201, "t": 235.48650999999995, "r": 237.21332, "b": 244.69952, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": " option. Click ", "bbox": {"l": 237.18044, "t": 235.48650999999995, "r": 297.04803, "b": 244.69952, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "OK", "bbox": {"l": 297.00018, "t": 235.48650999999995, "r": 311.92224, "b": 244.69952, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": ".", "bbox": {"l": 311.99994, "t": 235.48650999999995, "r": 314.76883, "b": 244.69952, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "caption", "bbox": {"l": 135.95968627929688, "t": 529.3792114257812, "r": 384.6536865234375, "b": 538.73486328125, "coord_origin": "TOPLEFT"}, "confidence": 0.947584867477417, "cells": [{"id": 23, "text": "Figure 4-29 New row permissions on the CUSTOMERS table", "bbox": {"l": 136.8, "t": 529.9379, "r": 384.29547, "b": 538.26291, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 136.22802734375, "t": 258.7868347167969, "r": 507.9937438964844, "b": 526.5271606445312, "coord_origin": "TOPLEFT"}, "confidence": 0.9844093918800354, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 70, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.24986267089844, "t": 754.7130737304688, "r": 523.59357, "b": 764.043212890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9545792937278748, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 70, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6702270507812, "t": 754.3177490234375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9093314409255981, "cells": [{"id": 1, "text": "55", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "55"}, {"label": "list_item", "id": 2, "page_no": 70, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.03018188476562, "t": 70.50949096679688, "r": 544.50513, "b": 104.85425567626953, "coord_origin": "TOPLEFT"}, "confidence": 0.9784817099571228, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.18062, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The New Row Permission window opens, as shown in Figure 4-29. Enter the information ", "bbox": {"l": 147.97429, "t": 71.50903000000005, "r": 544.50513, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "regarding the row permissions on the CUSTOMERS table. This row permission defines ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 538.36682, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "what is established in the following policy:", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 334.9458, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "2. The New Row Permission window opens, as shown in Figure 4-29. Enter the information regarding the row permissions on the CUSTOMERS table. This row permission defines what is established in the following policy:"}, {"label": "list_item", "id": 3, "page_no": 70, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 151.3019256591797, "t": 111.28250122070312, "r": 542.18152, "b": 133.70128999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9687250852584839, "cells": [{"id": 6, "text": "-", "bbox": {"l": 152.03938, "t": 112.48845999999992, "r": 157.60901, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "User profiles that belong to DBE, ADMIN, and TELLER group profiles can see all the ", "bbox": {"l": 165.59892, "t": 112.48845999999992, "r": 542.18152, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "rows.", "bbox": {"l": 165.59892, "t": 124.48828000000003, "r": 189.17128, "b": 133.70128999999997, "coord_origin": "TOPLEFT"}}]}, "text": "-User profiles that belong to DBE, ADMIN, and TELLER group profiles can see all the rows."}, {"label": "list_item", "id": 4, "page_no": 70, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 151.4884796142578, "t": 140.4087677001953, "r": 537.78314, "b": 210.73992999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.983960747718811, "cells": [{"id": 9, "text": "-", "bbox": {"l": 152.03938, "t": 141.52783, "r": 157.61002, "b": 150.74084000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER ", "bbox": {"l": 165.59894, "t": 141.52783, "r": 534.40277, "b": 150.74084000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "user) can see only the rows that match their customer login ID. The login ID value ", "bbox": {"l": 165.59892, "t": 153.52765, "r": 527.79926, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "representing the online banking user is passed from the web application to the ", "bbox": {"l": 165.59892, "t": 165.52747, "r": 513.83038, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "database by using the global variable CUSTOMER_LOGIN_ID. The permission rule ", "bbox": {"l": 165.59891, "t": 177.52728000000002, "r": 537.78314, "b": 186.74030000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "uses a subquery to check whether the global variable matches the ", "bbox": {"l": 165.59891, "t": 189.52710000000002, "r": 460.90103, "b": 198.74010999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "CUSTOMER_LOGIN_ID column value in the CUSTOMERS table.", "bbox": {"l": 165.59891, "t": 201.52692000000002, "r": 456.26354999999995, "b": 210.73992999999996, "coord_origin": "TOPLEFT"}}]}, "text": "-User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER user) can see only the rows that match their customer login ID. The login ID value representing the online banking user is passed from the web application to the database by using the global variable CUSTOMER_LOGIN_ID. The permission rule uses a subquery to check whether the global variable matches the CUSTOMER_LOGIN_ID column value in the CUSTOMERS table."}, {"label": "list_item", "id": 5, "page_no": 70, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 151.66030883789062, "t": 217.47354125976562, "r": 381.32654, "b": 227.79330444335938, "coord_origin": "TOPLEFT"}, "confidence": 0.9481797814369202, "cells": [{"id": 16, "text": "-", "bbox": {"l": 152.03937, "t": 218.50671, "r": 157.61099, "b": 227.71973000000003, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Any other user profile cannot see any rows at all.", "bbox": {"l": 165.59891, "t": 218.50671, "r": 381.32654, "b": 227.71973000000003, "coord_origin": "TOPLEFT"}}]}, "text": "-Any other user profile cannot see any rows at all."}, {"label": "text", "id": 6, "page_no": 70, "cluster": {"id": 6, "label": "text", "bbox": {"l": 151.00958251953125, "t": 234.5278778076172, "r": 314.76883, "b": 245.11355590820312, "coord_origin": "TOPLEFT"}, "confidence": 0.7769520878791809, "cells": [{"id": 18, "text": "Select the ", "bbox": {"l": 151.19974, "t": 235.48650999999995, "r": 198.41113, "b": 244.69952, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Enabled", "bbox": {"l": 198.4201, "t": 235.48650999999995, "r": 237.21332, "b": 244.69952, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": " option. Click ", "bbox": {"l": 237.18044, "t": 235.48650999999995, "r": 297.04803, "b": 244.69952, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "OK", "bbox": {"l": 297.00018, "t": 235.48650999999995, "r": 311.92224, "b": 244.69952, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": ".", "bbox": {"l": 311.99994, "t": 235.48650999999995, "r": 314.76883, "b": 244.69952, "coord_origin": "TOPLEFT"}}]}, "text": "Select the Enabled option. Click OK ."}, {"label": "caption", "id": 7, "page_no": 70, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 135.95968627929688, "t": 529.3792114257812, "r": 384.6536865234375, "b": 538.73486328125, "coord_origin": "TOPLEFT"}, "confidence": 0.947584867477417, "cells": [{"id": 23, "text": "Figure 4-29 New row permissions on the CUSTOMERS table", "bbox": {"l": 136.8, "t": 529.9379, "r": 384.29547, "b": 538.26291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-29 New row permissions on the CUSTOMERS table"}, {"label": "picture", "id": 8, "page_no": 70, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 136.22802734375, "t": 258.7868347167969, "r": 507.9937438964844, "b": 526.5271606445312, "coord_origin": "TOPLEFT"}, "confidence": 0.9844093918800354, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 70, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.03018188476562, "t": 70.50949096679688, "r": 544.50513, "b": 104.85425567626953, "coord_origin": "TOPLEFT"}, "confidence": 0.9784817099571228, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.18062, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The New Row Permission window opens, as shown in Figure 4-29. Enter the information ", "bbox": {"l": 147.97429, "t": 71.50903000000005, "r": 544.50513, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "regarding the row permissions on the CUSTOMERS table. This row permission defines ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 538.36682, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "what is established in the following policy:", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 334.9458, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "2. The New Row Permission window opens, as shown in Figure 4-29. Enter the information regarding the row permissions on the CUSTOMERS table. This row permission defines what is established in the following policy:"}, {"label": "list_item", "id": 3, "page_no": 70, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 151.3019256591797, "t": 111.28250122070312, "r": 542.18152, "b": 133.70128999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9687250852584839, "cells": [{"id": 6, "text": "-", "bbox": {"l": 152.03938, "t": 112.48845999999992, "r": 157.60901, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "User profiles that belong to DBE, ADMIN, and TELLER group profiles can see all the ", "bbox": {"l": 165.59892, "t": 112.48845999999992, "r": 542.18152, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "rows.", "bbox": {"l": 165.59892, "t": 124.48828000000003, "r": 189.17128, "b": 133.70128999999997, "coord_origin": "TOPLEFT"}}]}, "text": "-User profiles that belong to DBE, ADMIN, and TELLER group profiles can see all the rows."}, {"label": "list_item", "id": 4, "page_no": 70, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 151.4884796142578, "t": 140.4087677001953, "r": 537.78314, "b": 210.73992999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.983960747718811, "cells": [{"id": 9, "text": "-", "bbox": {"l": 152.03938, "t": 141.52783, "r": 157.61002, "b": 150.74084000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER ", "bbox": {"l": 165.59894, "t": 141.52783, "r": 534.40277, "b": 150.74084000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "user) can see only the rows that match their customer login ID. The login ID value ", "bbox": {"l": 165.59892, "t": 153.52765, "r": 527.79926, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "representing the online banking user is passed from the web application to the ", "bbox": {"l": 165.59892, "t": 165.52747, "r": 513.83038, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "database by using the global variable CUSTOMER_LOGIN_ID. The permission rule ", "bbox": {"l": 165.59891, "t": 177.52728000000002, "r": 537.78314, "b": 186.74030000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "uses a subquery to check whether the global variable matches the ", "bbox": {"l": 165.59891, "t": 189.52710000000002, "r": 460.90103, "b": 198.74010999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "CUSTOMER_LOGIN_ID column value in the CUSTOMERS table.", "bbox": {"l": 165.59891, "t": 201.52692000000002, "r": 456.26354999999995, "b": 210.73992999999996, "coord_origin": "TOPLEFT"}}]}, "text": "-User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER user) can see only the rows that match their customer login ID. The login ID value representing the online banking user is passed from the web application to the database by using the global variable CUSTOMER_LOGIN_ID. The permission rule uses a subquery to check whether the global variable matches the CUSTOMER_LOGIN_ID column value in the CUSTOMERS table."}, {"label": "list_item", "id": 5, "page_no": 70, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 151.66030883789062, "t": 217.47354125976562, "r": 381.32654, "b": 227.79330444335938, "coord_origin": "TOPLEFT"}, "confidence": 0.9481797814369202, "cells": [{"id": 16, "text": "-", "bbox": {"l": 152.03937, "t": 218.50671, "r": 157.61099, "b": 227.71973000000003, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Any other user profile cannot see any rows at all.", "bbox": {"l": 165.59891, "t": 218.50671, "r": 381.32654, "b": 227.71973000000003, "coord_origin": "TOPLEFT"}}]}, "text": "-Any other user profile cannot see any rows at all."}, {"label": "text", "id": 6, "page_no": 70, "cluster": {"id": 6, "label": "text", "bbox": {"l": 151.00958251953125, "t": 234.5278778076172, "r": 314.76883, "b": 245.11355590820312, "coord_origin": "TOPLEFT"}, "confidence": 0.7769520878791809, "cells": [{"id": 18, "text": "Select the ", "bbox": {"l": 151.19974, "t": 235.48650999999995, "r": 198.41113, "b": 244.69952, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Enabled", "bbox": {"l": 198.4201, "t": 235.48650999999995, "r": 237.21332, "b": 244.69952, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": " option. Click ", "bbox": {"l": 237.18044, "t": 235.48650999999995, "r": 297.04803, "b": 244.69952, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "OK", "bbox": {"l": 297.00018, "t": 235.48650999999995, "r": 311.92224, "b": 244.69952, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": ".", "bbox": {"l": 311.99994, "t": 235.48650999999995, "r": 314.76883, "b": 244.69952, "coord_origin": "TOPLEFT"}}]}, "text": "Select the Enabled option. Click OK ."}, {"label": "caption", "id": 7, "page_no": 70, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 135.95968627929688, "t": 529.3792114257812, "r": 384.6536865234375, "b": 538.73486328125, "coord_origin": "TOPLEFT"}, "confidence": 0.947584867477417, "cells": [{"id": 23, "text": "Figure 4-29 New row permissions on the CUSTOMERS table", "bbox": {"l": 136.8, "t": 529.9379, "r": 384.29547, "b": 538.26291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-29 New row permissions on the CUSTOMERS table"}, {"label": "picture", "id": 8, "page_no": 70, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 136.22802734375, "t": 258.7868347167969, "r": 507.9937438964844, "b": 526.5271606445312, "coord_origin": "TOPLEFT"}, "confidence": 0.9844093918800354, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 70, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.24986267089844, "t": 754.7130737304688, "r": 523.59357, "b": 764.043212890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9545792937278748, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 70, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6702270507812, "t": 754.3177490234375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9093314409255981, "cells": [{"id": 1, "text": "55", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "55"}]}}, {"page_no": 71, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "56 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "3.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.16809, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Define the row permissions for the ACCOUNTS table. The New Row Permission window ", "bbox": {"l": 147.95744, "t": 71.50867000000005, "r": 543.83636, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "opens, as shown in Figure 4-30. Enter the information regarding the row permissions on ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 542.03442, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "the ACCOUNTS table. This row permission defines what is established in the following ", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 535.38037, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "policy:", "bbox": {"l": 151.20016, "t": 107.50811999999996, "r": 179.53438, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "-", "bbox": {"l": 152.03979, "t": 124.48792000000003, "r": 157.61043, "b": 133.70092999999997, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "User profiles that belong to DBE, ADMIN and TELLER group profiles can see all the ", "bbox": {"l": 165.59935, "t": 124.48792000000003, "r": 539.45398, "b": 133.70092999999997, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "rows.", "bbox": {"l": 165.59933, "t": 136.48773000000006, "r": 189.17169, "b": 145.70074, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "-", "bbox": {"l": 152.03979, "t": 153.52728000000002, "r": 157.61043, "b": 162.74030000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER ", "bbox": {"l": 165.59935, "t": 153.52728000000002, "r": 534.36139, "b": 162.74030000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "user) can see only the rows that match their customer login ID. The login ID value ", "bbox": {"l": 165.59933, "t": 165.52710000000002, "r": 527.79968, "b": 174.74010999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "representing the online banking user is passed from the web application to the ", "bbox": {"l": 165.59933, "t": 177.52692000000002, "r": 513.83081, "b": 186.73992999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "database by using the global variable CUSTOMER_LOGIN_ID. The permission rule ", "bbox": {"l": 165.59933, "t": 189.52673000000004, "r": 537.75769, "b": 198.73974999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "uses a subquery to check whether the global variable matches the ", "bbox": {"l": 165.59933, "t": 201.52655000000004, "r": 460.90145999999993, "b": 210.73955999999998, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "CUSTOMER_LOGIN_ID column value in the CUSTOMERS table.", "bbox": {"l": 165.59933, "t": 213.52637000000004, "r": 456.26398, "b": 222.73937999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "-", "bbox": {"l": 152.03979, "t": 230.50616000000002, "r": 157.61142, "b": 239.71918000000005, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Any other user profile cannot see any rows at all.", "bbox": {"l": 165.59933, "t": 230.50616000000002, "r": 381.32697, "b": 239.71918000000005, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Select the ", "bbox": {"l": 151.20016, "t": 247.48595999999998, "r": 198.41156, "b": 256.69897000000003, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Enabled", "bbox": {"l": 198.42053, "t": 247.48595999999998, "r": 237.21375, "b": 256.69897000000003, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": " option. Click ", "bbox": {"l": 237.18086000000002, "t": 247.48595999999998, "r": 297.04846, "b": 256.69897000000003, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "OK", "bbox": {"l": 297.00061, "t": 247.48595999999998, "r": 311.92267, "b": 256.69897000000003, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": ".", "bbox": {"l": 312.00037, "t": 247.48595999999998, "r": 314.76926, "b": 256.69897000000003, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Figure 4-30 New row permissions on the ACCOUNTS table", "bbox": {"l": 64.800003, "t": 585.7379900000001, "r": 305.46814, "b": 594.063, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.20973205566406, "t": 754.2777099609375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9139277338981628, "cells": [{"id": 0, "text": "56 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.28527069091797, "t": 754.64208984375, "r": 334.42142, "b": 763.944091796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9527794718742371, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 136.20513916015625, "t": 70.595458984375, "r": 543.83636, "b": 117.18975830078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9810321927070618, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.16809, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Define the row permissions for the ACCOUNTS table. The New Row Permission window ", "bbox": {"l": 147.95744, "t": 71.50867000000005, "r": 543.83636, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "opens, as shown in Figure 4-30. Enter the information regarding the row permissions on ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 542.03442, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "the ACCOUNTS table. This row permission defines what is established in the following ", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 535.38037, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "policy:", "bbox": {"l": 151.20016, "t": 107.50811999999996, "r": 179.53438, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "list_item", "bbox": {"l": 151.44004821777344, "t": 123.32445526123047, "r": 539.45398, "b": 145.70074, "coord_origin": "TOPLEFT"}, "confidence": 0.9677587151527405, "cells": [{"id": 7, "text": "-", "bbox": {"l": 152.03979, "t": 124.48792000000003, "r": 157.61043, "b": 133.70092999999997, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "User profiles that belong to DBE, ADMIN and TELLER group profiles can see all the ", "bbox": {"l": 165.59935, "t": 124.48792000000003, "r": 539.45398, "b": 133.70092999999997, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "rows.", "bbox": {"l": 165.59933, "t": 136.48773000000006, "r": 189.17169, "b": 145.70074, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 151.2493438720703, "t": 152.3936767578125, "r": 537.75769, "b": 222.73937999999998, "coord_origin": "TOPLEFT"}, "confidence": 0.9846922159194946, "cells": [{"id": 10, "text": "-", "bbox": {"l": 152.03979, "t": 153.52728000000002, "r": 157.61043, "b": 162.74030000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER ", "bbox": {"l": 165.59935, "t": 153.52728000000002, "r": 534.36139, "b": 162.74030000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "user) can see only the rows that match their customer login ID. The login ID value ", "bbox": {"l": 165.59933, "t": 165.52710000000002, "r": 527.79968, "b": 174.74010999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "representing the online banking user is passed from the web application to the ", "bbox": {"l": 165.59933, "t": 177.52692000000002, "r": 513.83081, "b": 186.73992999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "database by using the global variable CUSTOMER_LOGIN_ID. The permission rule ", "bbox": {"l": 165.59933, "t": 189.52673000000004, "r": 537.75769, "b": 198.73974999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "uses a subquery to check whether the global variable matches the ", "bbox": {"l": 165.59933, "t": 201.52655000000004, "r": 460.90145999999993, "b": 210.73955999999998, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "CUSTOMER_LOGIN_ID column value in the CUSTOMERS table.", "bbox": {"l": 165.59933, "t": 213.52637000000004, "r": 456.26398, "b": 222.73937999999998, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 151.43359375, "t": 229.4423370361328, "r": 381.32697, "b": 239.7835235595703, "coord_origin": "TOPLEFT"}, "confidence": 0.9531306028366089, "cells": [{"id": 17, "text": "-", "bbox": {"l": 152.03979, "t": 230.50616000000002, "r": 157.61142, "b": 239.71918000000005, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Any other user profile cannot see any rows at all.", "bbox": {"l": 165.59933, "t": 230.50616000000002, "r": 381.32697, "b": 239.71918000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 150.8797149658203, "t": 246.4891815185547, "r": 314.76926, "b": 256.9587707519531, "coord_origin": "TOPLEFT"}, "confidence": 0.8528881072998047, "cells": [{"id": 19, "text": "Select the ", "bbox": {"l": 151.20016, "t": 247.48595999999998, "r": 198.41156, "b": 256.69897000000003, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Enabled", "bbox": {"l": 198.42053, "t": 247.48595999999998, "r": 237.21375, "b": 256.69897000000003, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": " option. Click ", "bbox": {"l": 237.18086000000002, "t": 247.48595999999998, "r": 297.04846, "b": 256.69897000000003, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "OK", "bbox": {"l": 297.00061, "t": 247.48595999999998, "r": 311.92267, "b": 256.69897000000003, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": ".", "bbox": {"l": 312.00037, "t": 247.48595999999998, "r": 314.76926, "b": 256.69897000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "caption", "bbox": {"l": 64.3364486694336, "t": 584.8099365234375, "r": 305.99822998046875, "b": 594.063, "coord_origin": "TOPLEFT"}, "confidence": 0.9497343897819519, "cells": [{"id": 24, "text": "Figure 4-30 New row permissions on the ACCOUNTS table", "bbox": {"l": 64.800003, "t": 585.7379900000001, "r": 305.46814, "b": 594.063, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 63.957679748535156, "t": 270.48822021484375, "r": 540.6087646484375, "b": 582.9116821289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9854897260665894, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 71, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.20973205566406, "t": 754.2777099609375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9139277338981628, "cells": [{"id": 0, "text": "56 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "56"}, {"label": "page_footer", "id": 1, "page_no": 71, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.28527069091797, "t": 754.64208984375, "r": 334.42142, "b": 763.944091796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9527794718742371, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "list_item", "id": 2, "page_no": 71, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.20513916015625, "t": 70.595458984375, "r": 543.83636, "b": 117.18975830078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9810321927070618, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.16809, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Define the row permissions for the ACCOUNTS table. The New Row Permission window ", "bbox": {"l": 147.95744, "t": 71.50867000000005, "r": 543.83636, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "opens, as shown in Figure 4-30. Enter the information regarding the row permissions on ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 542.03442, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "the ACCOUNTS table. This row permission defines what is established in the following ", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 535.38037, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "policy:", "bbox": {"l": 151.20016, "t": 107.50811999999996, "r": 179.53438, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "3. Define the row permissions for the ACCOUNTS table. The New Row Permission window opens, as shown in Figure 4-30. Enter the information regarding the row permissions on the ACCOUNTS table. This row permission defines what is established in the following policy:"}, {"label": "list_item", "id": 3, "page_no": 71, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 151.44004821777344, "t": 123.32445526123047, "r": 539.45398, "b": 145.70074, "coord_origin": "TOPLEFT"}, "confidence": 0.9677587151527405, "cells": [{"id": 7, "text": "-", "bbox": {"l": 152.03979, "t": 124.48792000000003, "r": 157.61043, "b": 133.70092999999997, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "User profiles that belong to DBE, ADMIN and TELLER group profiles can see all the ", "bbox": {"l": 165.59935, "t": 124.48792000000003, "r": 539.45398, "b": 133.70092999999997, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "rows.", "bbox": {"l": 165.59933, "t": 136.48773000000006, "r": 189.17169, "b": 145.70074, "coord_origin": "TOPLEFT"}}]}, "text": "-User profiles that belong to DBE, ADMIN and TELLER group profiles can see all the rows."}, {"label": "list_item", "id": 4, "page_no": 71, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 151.2493438720703, "t": 152.3936767578125, "r": 537.75769, "b": 222.73937999999998, "coord_origin": "TOPLEFT"}, "confidence": 0.9846922159194946, "cells": [{"id": 10, "text": "-", "bbox": {"l": 152.03979, "t": 153.52728000000002, "r": 157.61043, "b": 162.74030000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER ", "bbox": {"l": 165.59935, "t": 153.52728000000002, "r": 534.36139, "b": 162.74030000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "user) can see only the rows that match their customer login ID. The login ID value ", "bbox": {"l": 165.59933, "t": 165.52710000000002, "r": 527.79968, "b": 174.74010999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "representing the online banking user is passed from the web application to the ", "bbox": {"l": 165.59933, "t": 177.52692000000002, "r": 513.83081, "b": 186.73992999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "database by using the global variable CUSTOMER_LOGIN_ID. The permission rule ", "bbox": {"l": 165.59933, "t": 189.52673000000004, "r": 537.75769, "b": 198.73974999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "uses a subquery to check whether the global variable matches the ", "bbox": {"l": 165.59933, "t": 201.52655000000004, "r": 460.90145999999993, "b": 210.73955999999998, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "CUSTOMER_LOGIN_ID column value in the CUSTOMERS table.", "bbox": {"l": 165.59933, "t": 213.52637000000004, "r": 456.26398, "b": 222.73937999999998, "coord_origin": "TOPLEFT"}}]}, "text": "-User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER user) can see only the rows that match their customer login ID. The login ID value representing the online banking user is passed from the web application to the database by using the global variable CUSTOMER_LOGIN_ID. The permission rule uses a subquery to check whether the global variable matches the CUSTOMER_LOGIN_ID column value in the CUSTOMERS table."}, {"label": "list_item", "id": 5, "page_no": 71, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 151.43359375, "t": 229.4423370361328, "r": 381.32697, "b": 239.7835235595703, "coord_origin": "TOPLEFT"}, "confidence": 0.9531306028366089, "cells": [{"id": 17, "text": "-", "bbox": {"l": 152.03979, "t": 230.50616000000002, "r": 157.61142, "b": 239.71918000000005, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Any other user profile cannot see any rows at all.", "bbox": {"l": 165.59933, "t": 230.50616000000002, "r": 381.32697, "b": 239.71918000000005, "coord_origin": "TOPLEFT"}}]}, "text": "-Any other user profile cannot see any rows at all."}, {"label": "text", "id": 6, "page_no": 71, "cluster": {"id": 6, "label": "text", "bbox": {"l": 150.8797149658203, "t": 246.4891815185547, "r": 314.76926, "b": 256.9587707519531, "coord_origin": "TOPLEFT"}, "confidence": 0.8528881072998047, "cells": [{"id": 19, "text": "Select the ", "bbox": {"l": 151.20016, "t": 247.48595999999998, "r": 198.41156, "b": 256.69897000000003, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Enabled", "bbox": {"l": 198.42053, "t": 247.48595999999998, "r": 237.21375, "b": 256.69897000000003, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": " option. Click ", "bbox": {"l": 237.18086000000002, "t": 247.48595999999998, "r": 297.04846, "b": 256.69897000000003, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "OK", "bbox": {"l": 297.00061, "t": 247.48595999999998, "r": 311.92267, "b": 256.69897000000003, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": ".", "bbox": {"l": 312.00037, "t": 247.48595999999998, "r": 314.76926, "b": 256.69897000000003, "coord_origin": "TOPLEFT"}}]}, "text": "Select the Enabled option. Click OK ."}, {"label": "caption", "id": 7, "page_no": 71, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 64.3364486694336, "t": 584.8099365234375, "r": 305.99822998046875, "b": 594.063, "coord_origin": "TOPLEFT"}, "confidence": 0.9497343897819519, "cells": [{"id": 24, "text": "Figure 4-30 New row permissions on the ACCOUNTS table", "bbox": {"l": 64.800003, "t": 585.7379900000001, "r": 305.46814, "b": 594.063, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-30 New row permissions on the ACCOUNTS table"}, {"label": "picture", "id": 8, "page_no": 71, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 63.957679748535156, "t": 270.48822021484375, "r": 540.6087646484375, "b": 582.9116821289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9854897260665894, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 71, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.20513916015625, "t": 70.595458984375, "r": 543.83636, "b": 117.18975830078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9810321927070618, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.16809, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Define the row permissions for the ACCOUNTS table. The New Row Permission window ", "bbox": {"l": 147.95744, "t": 71.50867000000005, "r": 543.83636, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "opens, as shown in Figure 4-30. Enter the information regarding the row permissions on ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 542.03442, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "the ACCOUNTS table. This row permission defines what is established in the following ", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 535.38037, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "policy:", "bbox": {"l": 151.20016, "t": 107.50811999999996, "r": 179.53438, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "3. Define the row permissions for the ACCOUNTS table. The New Row Permission window opens, as shown in Figure 4-30. Enter the information regarding the row permissions on the ACCOUNTS table. This row permission defines what is established in the following policy:"}, {"label": "list_item", "id": 3, "page_no": 71, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 151.44004821777344, "t": 123.32445526123047, "r": 539.45398, "b": 145.70074, "coord_origin": "TOPLEFT"}, "confidence": 0.9677587151527405, "cells": [{"id": 7, "text": "-", "bbox": {"l": 152.03979, "t": 124.48792000000003, "r": 157.61043, "b": 133.70092999999997, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "User profiles that belong to DBE, ADMIN and TELLER group profiles can see all the ", "bbox": {"l": 165.59935, "t": 124.48792000000003, "r": 539.45398, "b": 133.70092999999997, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "rows.", "bbox": {"l": 165.59933, "t": 136.48773000000006, "r": 189.17169, "b": 145.70074, "coord_origin": "TOPLEFT"}}]}, "text": "-User profiles that belong to DBE, ADMIN and TELLER group profiles can see all the rows."}, {"label": "list_item", "id": 4, "page_no": 71, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 151.2493438720703, "t": 152.3936767578125, "r": 537.75769, "b": 222.73937999999998, "coord_origin": "TOPLEFT"}, "confidence": 0.9846922159194946, "cells": [{"id": 10, "text": "-", "bbox": {"l": 152.03979, "t": 153.52728000000002, "r": 157.61043, "b": 162.74030000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER ", "bbox": {"l": 165.59935, "t": 153.52728000000002, "r": 534.36139, "b": 162.74030000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "user) can see only the rows that match their customer login ID. The login ID value ", "bbox": {"l": 165.59933, "t": 165.52710000000002, "r": 527.79968, "b": 174.74010999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "representing the online banking user is passed from the web application to the ", "bbox": {"l": 165.59933, "t": 177.52692000000002, "r": 513.83081, "b": 186.73992999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "database by using the global variable CUSTOMER_LOGIN_ID. The permission rule ", "bbox": {"l": 165.59933, "t": 189.52673000000004, "r": 537.75769, "b": 198.73974999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "uses a subquery to check whether the global variable matches the ", "bbox": {"l": 165.59933, "t": 201.52655000000004, "r": 460.90145999999993, "b": 210.73955999999998, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "CUSTOMER_LOGIN_ID column value in the CUSTOMERS table.", "bbox": {"l": 165.59933, "t": 213.52637000000004, "r": 456.26398, "b": 222.73937999999998, "coord_origin": "TOPLEFT"}}]}, "text": "-User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER user) can see only the rows that match their customer login ID. The login ID value representing the online banking user is passed from the web application to the database by using the global variable CUSTOMER_LOGIN_ID. The permission rule uses a subquery to check whether the global variable matches the CUSTOMER_LOGIN_ID column value in the CUSTOMERS table."}, {"label": "list_item", "id": 5, "page_no": 71, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 151.43359375, "t": 229.4423370361328, "r": 381.32697, "b": 239.7835235595703, "coord_origin": "TOPLEFT"}, "confidence": 0.9531306028366089, "cells": [{"id": 17, "text": "-", "bbox": {"l": 152.03979, "t": 230.50616000000002, "r": 157.61142, "b": 239.71918000000005, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Any other user profile cannot see any rows at all.", "bbox": {"l": 165.59933, "t": 230.50616000000002, "r": 381.32697, "b": 239.71918000000005, "coord_origin": "TOPLEFT"}}]}, "text": "-Any other user profile cannot see any rows at all."}, {"label": "text", "id": 6, "page_no": 71, "cluster": {"id": 6, "label": "text", "bbox": {"l": 150.8797149658203, "t": 246.4891815185547, "r": 314.76926, "b": 256.9587707519531, "coord_origin": "TOPLEFT"}, "confidence": 0.8528881072998047, "cells": [{"id": 19, "text": "Select the ", "bbox": {"l": 151.20016, "t": 247.48595999999998, "r": 198.41156, "b": 256.69897000000003, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Enabled", "bbox": {"l": 198.42053, "t": 247.48595999999998, "r": 237.21375, "b": 256.69897000000003, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": " option. Click ", "bbox": {"l": 237.18086000000002, "t": 247.48595999999998, "r": 297.04846, "b": 256.69897000000003, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "OK", "bbox": {"l": 297.00061, "t": 247.48595999999998, "r": 311.92267, "b": 256.69897000000003, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": ".", "bbox": {"l": 312.00037, "t": 247.48595999999998, "r": 314.76926, "b": 256.69897000000003, "coord_origin": "TOPLEFT"}}]}, "text": "Select the Enabled option. Click OK ."}, {"label": "caption", "id": 7, "page_no": 71, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 64.3364486694336, "t": 584.8099365234375, "r": 305.99822998046875, "b": 594.063, "coord_origin": "TOPLEFT"}, "confidence": 0.9497343897819519, "cells": [{"id": 24, "text": "Figure 4-30 New row permissions on the ACCOUNTS table", "bbox": {"l": 64.800003, "t": 585.7379900000001, "r": 305.46814, "b": 594.063, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-30 New row permissions on the ACCOUNTS table"}, {"label": "picture", "id": 8, "page_no": 71, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 63.957679748535156, "t": 270.48822021484375, "r": 540.6087646484375, "b": 582.9116821289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9854897260665894, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 71, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.20973205566406, "t": 754.2777099609375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9139277338981628, "cells": [{"id": 0, "text": "56 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "56"}, {"label": "page_footer", "id": 1, "page_no": 71, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.28527069091797, "t": 754.64208984375, "r": 334.42142, "b": 763.944091796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9527794718742371, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 72, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "57", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "4.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.17957, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Define the row permissions on the TRANSACTIONS table. The New Row Permission ", "bbox": {"l": 147.9729, "t": 71.50903000000005, "r": 529.90491, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "window opens, as shown in Figure 4-31. Enter the information regarding the row ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 507.79965, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "permissions on the TRANSACTIONS table. This row permission defines what is ", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 506.39526, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "established in the following policy:", "bbox": {"l": 151.19974, "t": 107.50847999999996, "r": 301.1127, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "-", "bbox": {"l": 152.03937, "t": 124.48828000000003, "r": 157.60899, "b": 133.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "User profiles that belong to DBE, ADMIN, and TELLER group profiles can see all of the ", "bbox": {"l": 165.59891, "t": 124.48828000000003, "r": 547.22925, "b": 133.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "rows.", "bbox": {"l": 165.59891, "t": 136.48810000000003, "r": 189.17126, "b": 145.70110999999997, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "-", "bbox": {"l": 152.03937, "t": 153.52765, "r": 157.61, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER ", "bbox": {"l": 165.59892, "t": 153.52765, "r": 534.40277, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "user) can see only the rows that match their customer login ID. The login ID value ", "bbox": {"l": 165.59891, "t": 165.52747, "r": 527.79926, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "representing the online banking user is passed from the web application to the ", "bbox": {"l": 165.59891, "t": 177.52728000000002, "r": 513.83038, "b": 186.74030000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "database by using the global variable CUSTOMER_LOGIN_ID. The permission rule ", "bbox": {"l": 165.59891, "t": 189.52710000000002, "r": 537.78314, "b": 198.74010999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "uses a subquery to check whether the global variable matches the ", "bbox": {"l": 165.59891, "t": 201.52692000000002, "r": 460.90103, "b": 210.73992999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "CUSTOMER_LOGIN_ID column value in the CUSTOMERS table.", "bbox": {"l": 165.59891, "t": 213.52673000000004, "r": 456.26354999999995, "b": 222.73974999999996, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "-", "bbox": {"l": 152.03937, "t": 306.52628, "r": 157.61099, "b": 315.73926, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Any other user profile cannot see any rows at all.", "bbox": {"l": 165.59891, "t": 306.52628, "r": 381.32654, "b": 315.73926, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Select the ", "bbox": {"l": 151.19974, "t": 323.50607, "r": 198.41113, "b": 332.71906, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Enabled", "bbox": {"l": 198.4201, "t": 323.50607, "r": 237.21332, "b": 332.71906, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": " option. Click ", "bbox": {"l": 237.18044, "t": 323.50607, "r": 297.04803, "b": 332.71906, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "OK", "bbox": {"l": 297.00018, "t": 323.50607, "r": 311.92224, "b": 332.71906, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": ".", "bbox": {"l": 311.99994, "t": 323.50607, "r": 314.76883, "b": 332.71906, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Figure 4-31 New row permissions on the TRANSACTIONS table", "bbox": {"l": 64.800003, "t": 714.318001, "r": 325.42834, "b": 722.642998, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Note:", "bbox": {"l": 171.60001, "t": 241.48870999999997, "r": 197.13246, "b": 250.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": " You must join back to ACCOUNTS and then to CUSTOMERS by using a ", "bbox": {"l": 197.16035, "t": 241.48870999999997, "r": 522.27563, "b": 250.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "subquery to check whether the global variable matches CUSTOMER_LOGIN_ID. ", "bbox": {"l": 171.60001, "t": 253.48852999999997, "r": 531.92487, "b": 262.70154, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Also, if the row permission or column mask rule text references another table with ", "bbox": {"l": 171.60001, "t": 265.48834, "r": 533.39197, "b": 274.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "RCAC defined, the RCAC for the referenced table is ignored.", "bbox": {"l": 171.60001, "t": 277.48816, "r": 439.61749, "b": 286.70117, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 214.22891235351562, "t": 754.7304077148438, "r": 523.59357, "b": 763.9957275390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9545765519142151, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.5846557617188, "t": 754.2442016601562, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9055094718933105, "cells": [{"id": 1, "text": "57", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 135.74258422851562, "t": 70.44811248779297, "r": 529.90491, "b": 116.96112823486328, "coord_origin": "TOPLEFT"}, "confidence": 0.9810266494750977, "cells": [{"id": 2, "text": "4.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.17957, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Define the row permissions on the TRANSACTIONS table. The New Row Permission ", "bbox": {"l": 147.9729, "t": 71.50903000000005, "r": 529.90491, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "window opens, as shown in Figure 4-31. Enter the information regarding the row ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 507.79965, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "permissions on the TRANSACTIONS table. This row permission defines what is ", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 506.39526, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "established in the following policy:", "bbox": {"l": 151.19974, "t": 107.50847999999996, "r": 301.1127, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "list_item", "bbox": {"l": 151.45989990234375, "t": 123.25712585449219, "r": 547.22925, "b": 145.70110999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9677688479423523, "cells": [{"id": 7, "text": "-", "bbox": {"l": 152.03937, "t": 124.48828000000003, "r": 157.60899, "b": 133.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "User profiles that belong to DBE, ADMIN, and TELLER group profiles can see all of the ", "bbox": {"l": 165.59891, "t": 124.48828000000003, "r": 547.22925, "b": 133.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "rows.", "bbox": {"l": 165.59891, "t": 136.48810000000003, "r": 189.17126, "b": 145.70110999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 151.29940795898438, "t": 152.36669921875, "r": 537.78314, "b": 222.73974999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.983658492565155, "cells": [{"id": 10, "text": "-", "bbox": {"l": 152.03937, "t": 153.52765, "r": 157.61, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER ", "bbox": {"l": 165.59892, "t": 153.52765, "r": 534.40277, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "user) can see only the rows that match their customer login ID. The login ID value ", "bbox": {"l": 165.59891, "t": 165.52747, "r": 527.79926, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "representing the online banking user is passed from the web application to the ", "bbox": {"l": 165.59891, "t": 177.52728000000002, "r": 513.83038, "b": 186.74030000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "database by using the global variable CUSTOMER_LOGIN_ID. The permission rule ", "bbox": {"l": 165.59891, "t": 189.52710000000002, "r": 537.78314, "b": 198.74010999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "uses a subquery to check whether the global variable matches the ", "bbox": {"l": 165.59891, "t": 201.52692000000002, "r": 460.90103, "b": 210.73992999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "CUSTOMER_LOGIN_ID column value in the CUSTOMERS table.", "bbox": {"l": 165.59891, "t": 213.52673000000004, "r": 456.26354999999995, "b": 222.73974999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 151.38229370117188, "t": 306.10906982421875, "r": 381.32654, "b": 316.44915771484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9394587874412537, "cells": [{"id": 17, "text": "-", "bbox": {"l": 152.03937, "t": 306.52628, "r": 157.61099, "b": 315.73926, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Any other user profile cannot see any rows at all.", "bbox": {"l": 165.59891, "t": 306.52628, "r": 381.32654, "b": 315.73926, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 150.89027404785156, "t": 322.4906311035156, "r": 314.76883, "b": 333.08697509765625, "coord_origin": "TOPLEFT"}, "confidence": 0.7668123245239258, "cells": [{"id": 19, "text": "Select the ", "bbox": {"l": 151.19974, "t": 323.50607, "r": 198.41113, "b": 332.71906, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Enabled", "bbox": {"l": 198.4201, "t": 323.50607, "r": 237.21332, "b": 332.71906, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": " option. Click ", "bbox": {"l": 237.18044, "t": 323.50607, "r": 297.04803, "b": 332.71906, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "OK", "bbox": {"l": 297.00018, "t": 323.50607, "r": 311.92224, "b": 332.71906, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": ".", "bbox": {"l": 311.99994, "t": 323.50607, "r": 314.76883, "b": 332.71906, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "caption", "bbox": {"l": 64.22490692138672, "t": 713.5319213867188, "r": 325.5702819824219, "b": 722.9600830078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9502029418945312, "cells": [{"id": 24, "text": "Figure 4-31 New row permissions on the TRANSACTIONS table", "bbox": {"l": 64.800003, "t": 714.318001, "r": 325.42834, "b": 722.642998, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 170.69351196289062, "t": 240.3377685546875, "r": 533.39197, "b": 286.7464904785156, "coord_origin": "TOPLEFT"}, "confidence": 0.9755160808563232, "cells": [{"id": 25, "text": "Note:", "bbox": {"l": 171.60001, "t": 241.48870999999997, "r": 197.13246, "b": 250.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": " You must join back to ACCOUNTS and then to CUSTOMERS by using a ", "bbox": {"l": 197.16035, "t": 241.48870999999997, "r": 522.27563, "b": 250.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "subquery to check whether the global variable matches CUSTOMER_LOGIN_ID. ", "bbox": {"l": 171.60001, "t": 253.48852999999997, "r": 531.92487, "b": 262.70154, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Also, if the row permission or column mask rule text references another table with ", "bbox": {"l": 171.60001, "t": 265.48834, "r": 533.39197, "b": 274.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "RCAC defined, the RCAC for the referenced table is ignored.", "bbox": {"l": 171.60001, "t": 277.48816, "r": 439.61749, "b": 286.70117, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "picture", "bbox": {"l": 63.73027801513672, "t": 346.8805236816406, "r": 535.9136352539062, "b": 711.4491577148438, "coord_origin": "TOPLEFT"}, "confidence": 0.9856986403465271, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 72, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.22891235351562, "t": 754.7304077148438, "r": 523.59357, "b": 763.9957275390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9545765519142151, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 72, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.5846557617188, "t": 754.2442016601562, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9055094718933105, "cells": [{"id": 1, "text": "57", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "57"}, {"label": "list_item", "id": 2, "page_no": 72, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.74258422851562, "t": 70.44811248779297, "r": 529.90491, "b": 116.96112823486328, "coord_origin": "TOPLEFT"}, "confidence": 0.9810266494750977, "cells": [{"id": 2, "text": "4.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.17957, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Define the row permissions on the TRANSACTIONS table. The New Row Permission ", "bbox": {"l": 147.9729, "t": 71.50903000000005, "r": 529.90491, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "window opens, as shown in Figure 4-31. Enter the information regarding the row ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 507.79965, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "permissions on the TRANSACTIONS table. This row permission defines what is ", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 506.39526, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "established in the following policy:", "bbox": {"l": 151.19974, "t": 107.50847999999996, "r": 301.1127, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "4. Define the row permissions on the TRANSACTIONS table. The New Row Permission window opens, as shown in Figure 4-31. Enter the information regarding the row permissions on the TRANSACTIONS table. This row permission defines what is established in the following policy:"}, {"label": "list_item", "id": 3, "page_no": 72, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 151.45989990234375, "t": 123.25712585449219, "r": 547.22925, "b": 145.70110999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9677688479423523, "cells": [{"id": 7, "text": "-", "bbox": {"l": 152.03937, "t": 124.48828000000003, "r": 157.60899, "b": 133.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "User profiles that belong to DBE, ADMIN, and TELLER group profiles can see all of the ", "bbox": {"l": 165.59891, "t": 124.48828000000003, "r": 547.22925, "b": 133.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "rows.", "bbox": {"l": 165.59891, "t": 136.48810000000003, "r": 189.17126, "b": 145.70110999999997, "coord_origin": "TOPLEFT"}}]}, "text": "-User profiles that belong to DBE, ADMIN, and TELLER group profiles can see all of the rows."}, {"label": "list_item", "id": 4, "page_no": 72, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 151.29940795898438, "t": 152.36669921875, "r": 537.78314, "b": 222.73974999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.983658492565155, "cells": [{"id": 10, "text": "-", "bbox": {"l": 152.03937, "t": 153.52765, "r": 157.61, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER ", "bbox": {"l": 165.59892, "t": 153.52765, "r": 534.40277, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "user) can see only the rows that match their customer login ID. The login ID value ", "bbox": {"l": 165.59891, "t": 165.52747, "r": 527.79926, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "representing the online banking user is passed from the web application to the ", "bbox": {"l": 165.59891, "t": 177.52728000000002, "r": 513.83038, "b": 186.74030000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "database by using the global variable CUSTOMER_LOGIN_ID. The permission rule ", "bbox": {"l": 165.59891, "t": 189.52710000000002, "r": 537.78314, "b": 198.74010999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "uses a subquery to check whether the global variable matches the ", "bbox": {"l": 165.59891, "t": 201.52692000000002, "r": 460.90103, "b": 210.73992999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "CUSTOMER_LOGIN_ID column value in the CUSTOMERS table.", "bbox": {"l": 165.59891, "t": 213.52673000000004, "r": 456.26354999999995, "b": 222.73974999999996, "coord_origin": "TOPLEFT"}}]}, "text": "-User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER user) can see only the rows that match their customer login ID. The login ID value representing the online banking user is passed from the web application to the database by using the global variable CUSTOMER_LOGIN_ID. The permission rule uses a subquery to check whether the global variable matches the CUSTOMER_LOGIN_ID column value in the CUSTOMERS table."}, {"label": "list_item", "id": 5, "page_no": 72, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 151.38229370117188, "t": 306.10906982421875, "r": 381.32654, "b": 316.44915771484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9394587874412537, "cells": [{"id": 17, "text": "-", "bbox": {"l": 152.03937, "t": 306.52628, "r": 157.61099, "b": 315.73926, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Any other user profile cannot see any rows at all.", "bbox": {"l": 165.59891, "t": 306.52628, "r": 381.32654, "b": 315.73926, "coord_origin": "TOPLEFT"}}]}, "text": "-Any other user profile cannot see any rows at all."}, {"label": "text", "id": 6, "page_no": 72, "cluster": {"id": 6, "label": "text", "bbox": {"l": 150.89027404785156, "t": 322.4906311035156, "r": 314.76883, "b": 333.08697509765625, "coord_origin": "TOPLEFT"}, "confidence": 0.7668123245239258, "cells": [{"id": 19, "text": "Select the ", "bbox": {"l": 151.19974, "t": 323.50607, "r": 198.41113, "b": 332.71906, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Enabled", "bbox": {"l": 198.4201, "t": 323.50607, "r": 237.21332, "b": 332.71906, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": " option. Click ", "bbox": {"l": 237.18044, "t": 323.50607, "r": 297.04803, "b": 332.71906, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "OK", "bbox": {"l": 297.00018, "t": 323.50607, "r": 311.92224, "b": 332.71906, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": ".", "bbox": {"l": 311.99994, "t": 323.50607, "r": 314.76883, "b": 332.71906, "coord_origin": "TOPLEFT"}}]}, "text": "Select the Enabled option. Click OK ."}, {"label": "caption", "id": 7, "page_no": 72, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 64.22490692138672, "t": 713.5319213867188, "r": 325.5702819824219, "b": 722.9600830078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9502029418945312, "cells": [{"id": 24, "text": "Figure 4-31 New row permissions on the TRANSACTIONS table", "bbox": {"l": 64.800003, "t": 714.318001, "r": 325.42834, "b": 722.642998, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-31 New row permissions on the TRANSACTIONS table"}, {"label": "text", "id": 8, "page_no": 72, "cluster": {"id": 8, "label": "text", "bbox": {"l": 170.69351196289062, "t": 240.3377685546875, "r": 533.39197, "b": 286.7464904785156, "coord_origin": "TOPLEFT"}, "confidence": 0.9755160808563232, "cells": [{"id": 25, "text": "Note:", "bbox": {"l": 171.60001, "t": 241.48870999999997, "r": 197.13246, "b": 250.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": " You must join back to ACCOUNTS and then to CUSTOMERS by using a ", "bbox": {"l": 197.16035, "t": 241.48870999999997, "r": 522.27563, "b": 250.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "subquery to check whether the global variable matches CUSTOMER_LOGIN_ID. ", "bbox": {"l": 171.60001, "t": 253.48852999999997, "r": 531.92487, "b": 262.70154, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Also, if the row permission or column mask rule text references another table with ", "bbox": {"l": 171.60001, "t": 265.48834, "r": 533.39197, "b": 274.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "RCAC defined, the RCAC for the referenced table is ignored.", "bbox": {"l": 171.60001, "t": 277.48816, "r": 439.61749, "b": 286.70117, "coord_origin": "TOPLEFT"}}]}, "text": "Note: You must join back to ACCOUNTS and then to CUSTOMERS by using a subquery to check whether the global variable matches CUSTOMER_LOGIN_ID. Also, if the row permission or column mask rule text references another table with RCAC defined, the RCAC for the referenced table is ignored."}, {"label": "picture", "id": 9, "page_no": 72, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 63.73027801513672, "t": 346.8805236816406, "r": 535.9136352539062, "b": 711.4491577148438, "coord_origin": "TOPLEFT"}, "confidence": 0.9856986403465271, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 72, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.74258422851562, "t": 70.44811248779297, "r": 529.90491, "b": 116.96112823486328, "coord_origin": "TOPLEFT"}, "confidence": 0.9810266494750977, "cells": [{"id": 2, "text": "4.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.17957, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Define the row permissions on the TRANSACTIONS table. The New Row Permission ", "bbox": {"l": 147.9729, "t": 71.50903000000005, "r": 529.90491, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "window opens, as shown in Figure 4-31. Enter the information regarding the row ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 507.79965, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "permissions on the TRANSACTIONS table. This row permission defines what is ", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 506.39526, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "established in the following policy:", "bbox": {"l": 151.19974, "t": 107.50847999999996, "r": 301.1127, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "4. Define the row permissions on the TRANSACTIONS table. The New Row Permission window opens, as shown in Figure 4-31. Enter the information regarding the row permissions on the TRANSACTIONS table. This row permission defines what is established in the following policy:"}, {"label": "list_item", "id": 3, "page_no": 72, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 151.45989990234375, "t": 123.25712585449219, "r": 547.22925, "b": 145.70110999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9677688479423523, "cells": [{"id": 7, "text": "-", "bbox": {"l": 152.03937, "t": 124.48828000000003, "r": 157.60899, "b": 133.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "User profiles that belong to DBE, ADMIN, and TELLER group profiles can see all of the ", "bbox": {"l": 165.59891, "t": 124.48828000000003, "r": 547.22925, "b": 133.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "rows.", "bbox": {"l": 165.59891, "t": 136.48810000000003, "r": 189.17126, "b": 145.70110999999997, "coord_origin": "TOPLEFT"}}]}, "text": "-User profiles that belong to DBE, ADMIN, and TELLER group profiles can see all of the rows."}, {"label": "list_item", "id": 4, "page_no": 72, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 151.29940795898438, "t": 152.36669921875, "r": 537.78314, "b": 222.73974999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.983658492565155, "cells": [{"id": 10, "text": "-", "bbox": {"l": 152.03937, "t": 153.52765, "r": 157.61, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER ", "bbox": {"l": 165.59892, "t": 153.52765, "r": 534.40277, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "user) can see only the rows that match their customer login ID. The login ID value ", "bbox": {"l": 165.59891, "t": 165.52747, "r": 527.79926, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "representing the online banking user is passed from the web application to the ", "bbox": {"l": 165.59891, "t": 177.52728000000002, "r": 513.83038, "b": 186.74030000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "database by using the global variable CUSTOMER_LOGIN_ID. The permission rule ", "bbox": {"l": 165.59891, "t": 189.52710000000002, "r": 537.78314, "b": 198.74010999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "uses a subquery to check whether the global variable matches the ", "bbox": {"l": 165.59891, "t": 201.52692000000002, "r": 460.90103, "b": 210.73992999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "CUSTOMER_LOGIN_ID column value in the CUSTOMERS table.", "bbox": {"l": 165.59891, "t": 213.52673000000004, "r": 456.26354999999995, "b": 222.73974999999996, "coord_origin": "TOPLEFT"}}]}, "text": "-User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER user) can see only the rows that match their customer login ID. The login ID value representing the online banking user is passed from the web application to the database by using the global variable CUSTOMER_LOGIN_ID. The permission rule uses a subquery to check whether the global variable matches the CUSTOMER_LOGIN_ID column value in the CUSTOMERS table."}, {"label": "list_item", "id": 5, "page_no": 72, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 151.38229370117188, "t": 306.10906982421875, "r": 381.32654, "b": 316.44915771484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9394587874412537, "cells": [{"id": 17, "text": "-", "bbox": {"l": 152.03937, "t": 306.52628, "r": 157.61099, "b": 315.73926, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Any other user profile cannot see any rows at all.", "bbox": {"l": 165.59891, "t": 306.52628, "r": 381.32654, "b": 315.73926, "coord_origin": "TOPLEFT"}}]}, "text": "-Any other user profile cannot see any rows at all."}, {"label": "text", "id": 6, "page_no": 72, "cluster": {"id": 6, "label": "text", "bbox": {"l": 150.89027404785156, "t": 322.4906311035156, "r": 314.76883, "b": 333.08697509765625, "coord_origin": "TOPLEFT"}, "confidence": 0.7668123245239258, "cells": [{"id": 19, "text": "Select the ", "bbox": {"l": 151.19974, "t": 323.50607, "r": 198.41113, "b": 332.71906, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Enabled", "bbox": {"l": 198.4201, "t": 323.50607, "r": 237.21332, "b": 332.71906, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": " option. Click ", "bbox": {"l": 237.18044, "t": 323.50607, "r": 297.04803, "b": 332.71906, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "OK", "bbox": {"l": 297.00018, "t": 323.50607, "r": 311.92224, "b": 332.71906, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": ".", "bbox": {"l": 311.99994, "t": 323.50607, "r": 314.76883, "b": 332.71906, "coord_origin": "TOPLEFT"}}]}, "text": "Select the Enabled option. Click OK ."}, {"label": "caption", "id": 7, "page_no": 72, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 64.22490692138672, "t": 713.5319213867188, "r": 325.5702819824219, "b": 722.9600830078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9502029418945312, "cells": [{"id": 24, "text": "Figure 4-31 New row permissions on the TRANSACTIONS table", "bbox": {"l": 64.800003, "t": 714.318001, "r": 325.42834, "b": 722.642998, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-31 New row permissions on the TRANSACTIONS table"}, {"label": "text", "id": 8, "page_no": 72, "cluster": {"id": 8, "label": "text", "bbox": {"l": 170.69351196289062, "t": 240.3377685546875, "r": 533.39197, "b": 286.7464904785156, "coord_origin": "TOPLEFT"}, "confidence": 0.9755160808563232, "cells": [{"id": 25, "text": "Note:", "bbox": {"l": 171.60001, "t": 241.48870999999997, "r": 197.13246, "b": 250.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": " You must join back to ACCOUNTS and then to CUSTOMERS by using a ", "bbox": {"l": 197.16035, "t": 241.48870999999997, "r": 522.27563, "b": 250.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "subquery to check whether the global variable matches CUSTOMER_LOGIN_ID. ", "bbox": {"l": 171.60001, "t": 253.48852999999997, "r": 531.92487, "b": 262.70154, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Also, if the row permission or column mask rule text references another table with ", "bbox": {"l": 171.60001, "t": 265.48834, "r": 533.39197, "b": 274.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "RCAC defined, the RCAC for the referenced table is ignored.", "bbox": {"l": 171.60001, "t": 277.48816, "r": 439.61749, "b": 286.70117, "coord_origin": "TOPLEFT"}}]}, "text": "Note: You must join back to ACCOUNTS and then to CUSTOMERS by using a subquery to check whether the global variable matches CUSTOMER_LOGIN_ID. Also, if the row permission or column mask rule text references another table with RCAC defined, the RCAC for the referenced table is ignored."}, {"label": "picture", "id": 9, "page_no": 72, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 63.73027801513672, "t": 346.8805236816406, "r": 535.9136352539062, "b": 711.4491577148438, "coord_origin": "TOPLEFT"}, "confidence": 0.9856986403465271, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 72, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.22891235351562, "t": 754.7304077148438, "r": 523.59357, "b": 763.9957275390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9545765519142151, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 72, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.5846557617188, "t": 754.2442016601562, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9055094718933105, "cells": [{"id": 1, "text": "57", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "57"}]}}, {"page_no": 73, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "58 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "5.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.15915, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "To verify that the row permissions are enabled, from System i Navigator, click ", "bbox": {"l": 147.94556, "t": 71.50867000000005, "r": 493.84805000000006, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Row ", "bbox": {"l": 493.80023, "t": 71.50867000000005, "r": 517.62854, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Permissions", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 210.36757, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ", as shown in Figure 4-32. The three row permissions are created and ", "bbox": {"l": 210.1803, "t": 83.50847999999996, "r": 521.19122, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "enabled.", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 189.4117, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Figure 4-32 List of row permissions on BANK_SCHEMA", "bbox": {"l": 64.800003, "t": 275.53801999999996, "r": 292.52338, "b": 283.86301, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "4.3.6", "bbox": {"l": 64.800003, "t": 304.37473, "r": 94.073502, "b": 316.36269999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Defining and creating column masks", "bbox": {"l": 97.732674, "t": 304.37473, "r": 327.40588, "b": 316.36269999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "This section defines the masks on the columns. Complete the following steps:", "bbox": {"l": 136.8, "t": 330.52872, "r": 479.42001000000005, "b": 339.7417, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "1.", "bbox": {"l": 136.79999, "t": 347.50851, "r": 145.18799, "b": 356.7215, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "From the main navigation pane of System i Navigator, click ", "bbox": {"l": 147.98398, "t": 347.50851, "r": 412.92996, "b": 356.7215, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Schemas", "bbox": {"l": 412.92007, "t": 347.50851, "r": 456.69629000000003, "b": 356.7215, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "\uf0ae", "bbox": {"l": 459.48007, "t": 344.64999, "r": 469.31058, "b": 356.84103, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "BANK_SCHEMA", "bbox": {"l": 151.20013, "t": 359.50833, "r": 228.63610999999997, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ", right-click ", "bbox": {"l": 228.60028, "t": 359.50833, "r": 279.04767, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Column Masks", "bbox": {"l": 279.12039, "t": 359.50833, "r": 349.62723, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ", and select", "bbox": {"l": 349.50073, "t": 359.50833, "r": 400.5477, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": " New", "bbox": {"l": 400.62042, "t": 359.50833, "r": 423.72662, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "\uf0ae", "bbox": {"l": 426.54031, "t": 356.64980999999995, "r": 436.37082, "b": 368.84085, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Column Mask", "bbox": {"l": 439.20047000000005, "t": 359.50833, "r": 504.10678, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": ", as ", "bbox": {"l": 504.18050999999997, "t": 359.50833, "r": 523.07068, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "shown in Figure 4-33.", "bbox": {"l": 151.2001, "t": 371.50815, "r": 247.20354, "b": 380.72113, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Figure 4-33 Creating a column mask", "bbox": {"l": 136.8, "t": 571.87799, "r": 287.181, "b": 580.203, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.232666015625, "t": 754.386474609375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9160420298576355, "cells": [{"id": 0, "text": "58 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.35807037353516, "t": 754.7005615234375, "r": 334.42142, "b": 763.9410400390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9541155695915222, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 136.36386108398438, "t": 70.54908752441406, "r": 521.19122, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9746115207672119, "cells": [{"id": 2, "text": "5.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.15915, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "To verify that the row permissions are enabled, from System i Navigator, click ", "bbox": {"l": 147.94556, "t": 71.50867000000005, "r": 493.84805000000006, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Row ", "bbox": {"l": 493.80023, "t": 71.50867000000005, "r": 517.62854, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Permissions", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 210.36757, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ", as shown in Figure 4-32. The three row permissions are created and ", "bbox": {"l": 210.1803, "t": 83.50847999999996, "r": 521.19122, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "enabled.", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 189.4117, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.27239227294922, "t": 274.6299133300781, "r": 292.91876220703125, "b": 283.9879150390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9361065626144409, "cells": [{"id": 8, "text": "Figure 4-32 List of row permissions on BANK_SCHEMA", "bbox": {"l": 64.800003, "t": 275.53801999999996, "r": 292.52338, "b": 283.86301, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 64.21476745605469, "t": 303.8726806640625, "r": 327.40588, "b": 317.2160339355469, "coord_origin": "TOPLEFT"}, "confidence": 0.9644060134887695, "cells": [{"id": 9, "text": "4.3.6", "bbox": {"l": 64.800003, "t": 304.37473, "r": 94.073502, "b": 316.36269999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Defining and creating column masks", "bbox": {"l": 97.732674, "t": 304.37473, "r": 327.40588, "b": 316.36269999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.03562927246094, "t": 329.9996337890625, "r": 479.42001000000005, "b": 340.2921142578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9330124855041504, "cells": [{"id": 11, "text": "This section defines the masks on the columns. Complete the following steps:", "bbox": {"l": 136.8, "t": 330.52872, "r": 479.42001000000005, "b": 339.7417, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 136.79999, "t": 344.64999, "r": 523.07068, "b": 381.08123779296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9756982922554016, "cells": [{"id": 12, "text": "1.", "bbox": {"l": 136.79999, "t": 347.50851, "r": 145.18799, "b": 356.7215, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "From the main navigation pane of System i Navigator, click ", "bbox": {"l": 147.98398, "t": 347.50851, "r": 412.92996, "b": 356.7215, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Schemas", "bbox": {"l": 412.92007, "t": 347.50851, "r": 456.69629000000003, "b": 356.7215, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "\uf0ae", "bbox": {"l": 459.48007, "t": 344.64999, "r": 469.31058, "b": 356.84103, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "BANK_SCHEMA", "bbox": {"l": 151.20013, "t": 359.50833, "r": 228.63610999999997, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ", right-click ", "bbox": {"l": 228.60028, "t": 359.50833, "r": 279.04767, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Column Masks", "bbox": {"l": 279.12039, "t": 359.50833, "r": 349.62723, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ", and select", "bbox": {"l": 349.50073, "t": 359.50833, "r": 400.5477, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": " New", "bbox": {"l": 400.62042, "t": 359.50833, "r": 423.72662, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "\uf0ae", "bbox": {"l": 426.54031, "t": 356.64980999999995, "r": 436.37082, "b": 368.84085, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Column Mask", "bbox": {"l": 439.20047000000005, "t": 359.50833, "r": 504.10678, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": ", as ", "bbox": {"l": 504.18050999999997, "t": 359.50833, "r": 523.07068, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "shown in Figure 4-33.", "bbox": {"l": 151.2001, "t": 371.50815, "r": 247.20354, "b": 380.72113, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "caption", "bbox": {"l": 136.1403350830078, "t": 571.737060546875, "r": 287.95941162109375, "b": 581.0671997070312, "coord_origin": "TOPLEFT"}, "confidence": 0.947037935256958, "cells": [{"id": 25, "text": "Figure 4-33 Creating a column mask", "bbox": {"l": 136.8, "t": 571.87799, "r": 287.181, "b": 580.203, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 136.1191864013672, "t": 395.1215515136719, "r": 456.9282531738281, "b": 568.6239013671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9855613112449646, "cells": []}, {"id": 9, "label": "picture", "bbox": {"l": 64.10432434082031, "t": 119.99431610107422, "r": 545.318603515625, "b": 271.414306640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9836570024490356, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 73, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.232666015625, "t": 754.386474609375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9160420298576355, "cells": [{"id": 0, "text": "58 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "58"}, {"label": "page_footer", "id": 1, "page_no": 73, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.35807037353516, "t": 754.7005615234375, "r": 334.42142, "b": 763.9410400390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9541155695915222, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "list_item", "id": 2, "page_no": 73, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.36386108398438, "t": 70.54908752441406, "r": 521.19122, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9746115207672119, "cells": [{"id": 2, "text": "5.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.15915, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "To verify that the row permissions are enabled, from System i Navigator, click ", "bbox": {"l": 147.94556, "t": 71.50867000000005, "r": 493.84805000000006, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Row ", "bbox": {"l": 493.80023, "t": 71.50867000000005, "r": 517.62854, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Permissions", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 210.36757, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ", as shown in Figure 4-32. The three row permissions are created and ", "bbox": {"l": 210.1803, "t": 83.50847999999996, "r": 521.19122, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "enabled.", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 189.4117, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}]}, "text": "5. To verify that the row permissions are enabled, from System i Navigator, click Row Permissions , as shown in Figure 4-32. The three row permissions are created and enabled."}, {"label": "caption", "id": 3, "page_no": 73, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.27239227294922, "t": 274.6299133300781, "r": 292.91876220703125, "b": 283.9879150390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9361065626144409, "cells": [{"id": 8, "text": "Figure 4-32 List of row permissions on BANK_SCHEMA", "bbox": {"l": 64.800003, "t": 275.53801999999996, "r": 292.52338, "b": 283.86301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-32 List of row permissions on BANK_SCHEMA"}, {"label": "section_header", "id": 4, "page_no": 73, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.21476745605469, "t": 303.8726806640625, "r": 327.40588, "b": 317.2160339355469, "coord_origin": "TOPLEFT"}, "confidence": 0.9644060134887695, "cells": [{"id": 9, "text": "4.3.6", "bbox": {"l": 64.800003, "t": 304.37473, "r": 94.073502, "b": 316.36269999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Defining and creating column masks", "bbox": {"l": 97.732674, "t": 304.37473, "r": 327.40588, "b": 316.36269999999996, "coord_origin": "TOPLEFT"}}]}, "text": "4.3.6 Defining and creating column masks"}, {"label": "text", "id": 5, "page_no": 73, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.03562927246094, "t": 329.9996337890625, "r": 479.42001000000005, "b": 340.2921142578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9330124855041504, "cells": [{"id": 11, "text": "This section defines the masks on the columns. Complete the following steps:", "bbox": {"l": 136.8, "t": 330.52872, "r": 479.42001000000005, "b": 339.7417, "coord_origin": "TOPLEFT"}}]}, "text": "This section defines the masks on the columns. Complete the following steps:"}, {"label": "list_item", "id": 6, "page_no": 73, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.79999, "t": 344.64999, "r": 523.07068, "b": 381.08123779296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9756982922554016, "cells": [{"id": 12, "text": "1.", "bbox": {"l": 136.79999, "t": 347.50851, "r": 145.18799, "b": 356.7215, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "From the main navigation pane of System i Navigator, click ", "bbox": {"l": 147.98398, "t": 347.50851, "r": 412.92996, "b": 356.7215, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Schemas", "bbox": {"l": 412.92007, "t": 347.50851, "r": 456.69629000000003, "b": 356.7215, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "\uf0ae", "bbox": {"l": 459.48007, "t": 344.64999, "r": 469.31058, "b": 356.84103, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "BANK_SCHEMA", "bbox": {"l": 151.20013, "t": 359.50833, "r": 228.63610999999997, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ", right-click ", "bbox": {"l": 228.60028, "t": 359.50833, "r": 279.04767, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Column Masks", "bbox": {"l": 279.12039, "t": 359.50833, "r": 349.62723, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ", and select", "bbox": {"l": 349.50073, "t": 359.50833, "r": 400.5477, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": " New", "bbox": {"l": 400.62042, "t": 359.50833, "r": 423.72662, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "\uf0ae", "bbox": {"l": 426.54031, "t": 356.64980999999995, "r": 436.37082, "b": 368.84085, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Column Mask", "bbox": {"l": 439.20047000000005, "t": 359.50833, "r": 504.10678, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": ", as ", "bbox": {"l": 504.18050999999997, "t": 359.50833, "r": 523.07068, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "shown in Figure 4-33.", "bbox": {"l": 151.2001, "t": 371.50815, "r": 247.20354, "b": 380.72113, "coord_origin": "TOPLEFT"}}]}, "text": "1. From the main navigation pane of System i Navigator, click Schemas \uf0ae BANK_SCHEMA , right-click Column Masks , and select New \uf0ae Column Mask , as shown in Figure 4-33."}, {"label": "caption", "id": 7, "page_no": 73, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 136.1403350830078, "t": 571.737060546875, "r": 287.95941162109375, "b": 581.0671997070312, "coord_origin": "TOPLEFT"}, "confidence": 0.947037935256958, "cells": [{"id": 25, "text": "Figure 4-33 Creating a column mask", "bbox": {"l": 136.8, "t": 571.87799, "r": 287.181, "b": 580.203, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-33 Creating a column mask"}, {"label": "picture", "id": 8, "page_no": 73, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 136.1191864013672, "t": 395.1215515136719, "r": 456.9282531738281, "b": 568.6239013671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9855613112449646, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 9, "page_no": 73, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 64.10432434082031, "t": 119.99431610107422, "r": 545.318603515625, "b": 271.414306640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9836570024490356, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 73, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.36386108398438, "t": 70.54908752441406, "r": 521.19122, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9746115207672119, "cells": [{"id": 2, "text": "5.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.15915, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "To verify that the row permissions are enabled, from System i Navigator, click ", "bbox": {"l": 147.94556, "t": 71.50867000000005, "r": 493.84805000000006, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Row ", "bbox": {"l": 493.80023, "t": 71.50867000000005, "r": 517.62854, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Permissions", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 210.36757, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ", as shown in Figure 4-32. The three row permissions are created and ", "bbox": {"l": 210.1803, "t": 83.50847999999996, "r": 521.19122, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "enabled.", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 189.4117, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}]}, "text": "5. To verify that the row permissions are enabled, from System i Navigator, click Row Permissions , as shown in Figure 4-32. The three row permissions are created and enabled."}, {"label": "caption", "id": 3, "page_no": 73, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.27239227294922, "t": 274.6299133300781, "r": 292.91876220703125, "b": 283.9879150390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9361065626144409, "cells": [{"id": 8, "text": "Figure 4-32 List of row permissions on BANK_SCHEMA", "bbox": {"l": 64.800003, "t": 275.53801999999996, "r": 292.52338, "b": 283.86301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-32 List of row permissions on BANK_SCHEMA"}, {"label": "section_header", "id": 4, "page_no": 73, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.21476745605469, "t": 303.8726806640625, "r": 327.40588, "b": 317.2160339355469, "coord_origin": "TOPLEFT"}, "confidence": 0.9644060134887695, "cells": [{"id": 9, "text": "4.3.6", "bbox": {"l": 64.800003, "t": 304.37473, "r": 94.073502, "b": 316.36269999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Defining and creating column masks", "bbox": {"l": 97.732674, "t": 304.37473, "r": 327.40588, "b": 316.36269999999996, "coord_origin": "TOPLEFT"}}]}, "text": "4.3.6 Defining and creating column masks"}, {"label": "text", "id": 5, "page_no": 73, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.03562927246094, "t": 329.9996337890625, "r": 479.42001000000005, "b": 340.2921142578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9330124855041504, "cells": [{"id": 11, "text": "This section defines the masks on the columns. Complete the following steps:", "bbox": {"l": 136.8, "t": 330.52872, "r": 479.42001000000005, "b": 339.7417, "coord_origin": "TOPLEFT"}}]}, "text": "This section defines the masks on the columns. Complete the following steps:"}, {"label": "list_item", "id": 6, "page_no": 73, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.79999, "t": 344.64999, "r": 523.07068, "b": 381.08123779296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9756982922554016, "cells": [{"id": 12, "text": "1.", "bbox": {"l": 136.79999, "t": 347.50851, "r": 145.18799, "b": 356.7215, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "From the main navigation pane of System i Navigator, click ", "bbox": {"l": 147.98398, "t": 347.50851, "r": 412.92996, "b": 356.7215, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Schemas", "bbox": {"l": 412.92007, "t": 347.50851, "r": 456.69629000000003, "b": 356.7215, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "\uf0ae", "bbox": {"l": 459.48007, "t": 344.64999, "r": 469.31058, "b": 356.84103, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "BANK_SCHEMA", "bbox": {"l": 151.20013, "t": 359.50833, "r": 228.63610999999997, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ", right-click ", "bbox": {"l": 228.60028, "t": 359.50833, "r": 279.04767, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Column Masks", "bbox": {"l": 279.12039, "t": 359.50833, "r": 349.62723, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ", and select", "bbox": {"l": 349.50073, "t": 359.50833, "r": 400.5477, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": " New", "bbox": {"l": 400.62042, "t": 359.50833, "r": 423.72662, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "\uf0ae", "bbox": {"l": 426.54031, "t": 356.64980999999995, "r": 436.37082, "b": 368.84085, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Column Mask", "bbox": {"l": 439.20047000000005, "t": 359.50833, "r": 504.10678, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": ", as ", "bbox": {"l": 504.18050999999997, "t": 359.50833, "r": 523.07068, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "shown in Figure 4-33.", "bbox": {"l": 151.2001, "t": 371.50815, "r": 247.20354, "b": 380.72113, "coord_origin": "TOPLEFT"}}]}, "text": "1. From the main navigation pane of System i Navigator, click Schemas \uf0ae BANK_SCHEMA , right-click Column Masks , and select New \uf0ae Column Mask , as shown in Figure 4-33."}, {"label": "caption", "id": 7, "page_no": 73, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 136.1403350830078, "t": 571.737060546875, "r": 287.95941162109375, "b": 581.0671997070312, "coord_origin": "TOPLEFT"}, "confidence": 0.947037935256958, "cells": [{"id": 25, "text": "Figure 4-33 Creating a column mask", "bbox": {"l": 136.8, "t": 571.87799, "r": 287.181, "b": 580.203, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-33 Creating a column mask"}, {"label": "picture", "id": 8, "page_no": 73, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 136.1191864013672, "t": 395.1215515136719, "r": 456.9282531738281, "b": 568.6239013671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9855613112449646, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 9, "page_no": 73, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 64.10432434082031, "t": 119.99431610107422, "r": 545.318603515625, "b": 271.414306640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9836570024490356, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 73, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.232666015625, "t": 754.386474609375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9160420298576355, "cells": [{"id": 0, "text": "58 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "58"}, {"label": "page_footer", "id": 1, "page_no": 73, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.35807037353516, "t": 754.7005615234375, "r": 334.42142, "b": 763.9410400390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9541155695915222, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 74, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "59", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.17424, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "In the New Column Mask window, which is shown in Figure 4-34, enter the following ", "bbox": {"l": 147.96579, "t": 71.50903000000005, "r": 524.10217, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "information:", "bbox": {"l": 151.19876, "t": 83.50885000000017, "r": 203.38417, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "-", "bbox": {"l": 152.03839, "t": 100.48865, "r": 157.57317, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Select the CUSTOMERS table on which to create the column mask.", "bbox": {"l": 165.59793, "t": 100.48865, "r": 465.46960000000007, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "-", "bbox": {"l": 152.03839, "t": 112.48845999999992, "r": 157.57416, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Select the Column to mask; in this example, it is CUSTOMER_EMAIL.", "bbox": {"l": 165.59793, "t": 112.48845999999992, "r": 475.19052000000005, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "-", "bbox": {"l": 152.03839, "t": 124.48828000000003, "r": 157.61002, "b": 133.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Define the masking logic depending on the rules that you want to enforce. In this ", "bbox": {"l": 165.59793, "t": 124.48828000000003, "r": 522.83429, "b": 133.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "example, either the ADMIN or CUSTOMER group profiles can see the entire email ", "bbox": {"l": 165.59793, "t": 136.48810000000003, "r": 531.30621, "b": 145.70110999999997, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "address; otherwise, it is masked to ****@****.", "bbox": {"l": 165.59793, "t": 148.48792000000003, "r": 365.33081, "b": 157.70092999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Select the ", "bbox": {"l": 151.19775, "t": 165.52747, "r": 198.40915, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Enabled", "bbox": {"l": 198.41812, "t": 165.52747, "r": 237.21132999999998, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": " option. Click ", "bbox": {"l": 237.17845, "t": 165.52747, "r": 297.04605, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "OK", "bbox": {"l": 296.9982, "t": 165.52747, "r": 311.92026, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ".", "bbox": {"l": 311.99796, "t": 165.52747, "r": 314.76685, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Figure 4-34 Defining a column mask on the CUSTOMERS table", "bbox": {"l": 136.8, "t": 605.7179, "r": 394.91101, "b": 614.04291, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "3.", "bbox": {"l": 136.8, "t": 631.72862, "r": 145.18929, "b": 640.9416200000001, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Repeat steps 1 on page 58 and 2 to create column masks for the following columns:", "bbox": {"l": 147.9857, "t": 631.72862, "r": 522.03296, "b": 640.9416200000001, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "-", "bbox": {"l": 152.03979, "t": 648.70844, "r": 157.59648, "b": 657.92143, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "MASK_DRIVERS_LICENSE_ON_CUSTOMERS", "bbox": {"l": 165.59933, "t": 648.70844, "r": 381.77414, "b": 657.92143, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "-", "bbox": {"l": 152.03979, "t": 660.7082399999999, "r": 157.59549, "b": 669.92124, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "MASK_LOGIN_ID_ON_CUSTOMERS", "bbox": {"l": 165.59935, "t": 660.7082399999999, "r": 335.7012, "b": 669.92124, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "-", "bbox": {"l": 152.03979, "t": 672.70805, "r": 157.59349, "b": 681.92105, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS", "bbox": {"l": 165.59933, "t": 672.70805, "r": 446.63971, "b": 681.92105, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "-", "bbox": {"l": 152.03979, "t": 684.70786, "r": 157.59747, "b": 693.92086, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "MASK_ACCOUNT_NUMBER_ON_ACCOUNTS", "bbox": {"l": 165.59933, "t": 684.70786, "r": 379.32303, "b": 693.92086, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "-", "bbox": {"l": 152.03979, "t": 696.707664, "r": 157.59349, "b": 705.92067, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "MASK_SECURITY_QUESTION_ON_CUSTOMERS", "bbox": {"l": 165.59933, "t": 696.707664, "r": 397.17035, "b": 705.92067, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "-", "bbox": {"l": 152.03979, "t": 708.707474, "r": 157.59747, "b": 717.920479, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "MASK_TAX_ID_ON_CUSTOMERS", "bbox": {"l": 165.59933, "t": 708.707474, "r": 322.77811, "b": 717.920479, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 214.23280334472656, "t": 754.7346801757812, "r": 523.59357, "b": 763.9798583984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9574586153030396, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.6565551757812, "t": 754.1910400390625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9153223633766174, "cells": [{"id": 1, "text": "59", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 136.03579711914062, "t": 70.76680755615234, "r": 524.10217, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.935202956199646, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.17424, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "In the New Column Mask window, which is shown in Figure 4-34, enter the following ", "bbox": {"l": 147.96579, "t": 71.50903000000005, "r": 524.10217, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "information:", "bbox": {"l": 151.19876, "t": 83.50885000000017, "r": 203.38417, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "list_item", "bbox": {"l": 151.32827758789062, "t": 99.3359375, "r": 465.46960000000007, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9387155175209045, "cells": [{"id": 5, "text": "-", "bbox": {"l": 152.03839, "t": 100.48865, "r": 157.57317, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Select the CUSTOMERS table on which to create the column mask.", "bbox": {"l": 165.59793, "t": 100.48865, "r": 465.46960000000007, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 151.2732391357422, "t": 111.13023376464844, "r": 475.19052000000005, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9359274506568909, "cells": [{"id": 7, "text": "-", "bbox": {"l": 152.03839, "t": 112.48845999999992, "r": 157.57416, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Select the Column to mask; in this example, it is CUSTOMER_EMAIL.", "bbox": {"l": 165.59793, "t": 112.48845999999992, "r": 475.19052000000005, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 151.39305114746094, "t": 123.64397430419922, "r": 531.30621, "b": 157.70092999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9761620759963989, "cells": [{"id": 9, "text": "-", "bbox": {"l": 152.03839, "t": 124.48828000000003, "r": 157.61002, "b": 133.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Define the masking logic depending on the rules that you want to enforce. In this ", "bbox": {"l": 165.59793, "t": 124.48828000000003, "r": 522.83429, "b": 133.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "example, either the ADMIN or CUSTOMER group profiles can see the entire email ", "bbox": {"l": 165.59793, "t": 136.48810000000003, "r": 531.30621, "b": 145.70110999999997, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "address; otherwise, it is masked to ****@****.", "bbox": {"l": 165.59793, "t": 148.48792000000003, "r": 365.33081, "b": 157.70092999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 150.79855346679688, "t": 164.49195861816406, "r": 314.76685, "b": 175.1024627685547, "coord_origin": "TOPLEFT"}, "confidence": 0.7048681974411011, "cells": [{"id": 13, "text": "Select the ", "bbox": {"l": 151.19775, "t": 165.52747, "r": 198.40915, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Enabled", "bbox": {"l": 198.41812, "t": 165.52747, "r": 237.21132999999998, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": " option. Click ", "bbox": {"l": 237.17845, "t": 165.52747, "r": 297.04605, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "OK", "bbox": {"l": 296.9982, "t": 165.52747, "r": 311.92026, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ".", "bbox": {"l": 311.99796, "t": 165.52747, "r": 314.76685, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "caption", "bbox": {"l": 135.8140106201172, "t": 604.765380859375, "r": 395.16131591796875, "b": 614.04291, "coord_origin": "TOPLEFT"}, "confidence": 0.9423272013664246, "cells": [{"id": 18, "text": "Figure 4-34 Defining a column mask on the CUSTOMERS table", "bbox": {"l": 136.8, "t": 605.7179, "r": 394.91101, "b": 614.04291, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 136.26536560058594, "t": 630.8367919921875, "r": 522.03296, "b": 641.0337524414062, "coord_origin": "TOPLEFT"}, "confidence": 0.8807461857795715, "cells": [{"id": 19, "text": "3.", "bbox": {"l": 136.8, "t": 631.72862, "r": 145.18929, "b": 640.9416200000001, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Repeat steps 1 on page 58 and 2 to create column masks for the following columns:", "bbox": {"l": 147.9857, "t": 631.72862, "r": 522.03296, "b": 640.9416200000001, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 151.44378662109375, "t": 647.1741943359375, "r": 381.77414, "b": 657.92143, "coord_origin": "TOPLEFT"}, "confidence": 0.9306973814964294, "cells": [{"id": 21, "text": "-", "bbox": {"l": 152.03979, "t": 648.70844, "r": 157.59648, "b": 657.92143, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "MASK_DRIVERS_LICENSE_ON_CUSTOMERS", "bbox": {"l": 165.59933, "t": 648.70844, "r": 381.77414, "b": 657.92143, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 151.36248779296875, "t": 659.518798828125, "r": 335.7012, "b": 669.92124, "coord_origin": "TOPLEFT"}, "confidence": 0.9286901354789734, "cells": [{"id": 23, "text": "-", "bbox": {"l": 152.03979, "t": 660.7082399999999, "r": 157.59549, "b": 669.92124, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "MASK_LOGIN_ID_ON_CUSTOMERS", "bbox": {"l": 165.59935, "t": 660.7082399999999, "r": 335.7012, "b": 669.92124, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 151.4147491455078, "t": 671.4402465820312, "r": 446.63971, "b": 681.92105, "coord_origin": "TOPLEFT"}, "confidence": 0.9449449777603149, "cells": [{"id": 25, "text": "-", "bbox": {"l": 152.03979, "t": 672.70805, "r": 157.59349, "b": 681.92105, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS", "bbox": {"l": 165.59933, "t": 672.70805, "r": 446.63971, "b": 681.92105, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "list_item", "bbox": {"l": 151.27947998046875, "t": 683.0931396484375, "r": 379.591064453125, "b": 693.92086, "coord_origin": "TOPLEFT"}, "confidence": 0.924078106880188, "cells": [{"id": 27, "text": "-", "bbox": {"l": 152.03979, "t": 684.70786, "r": 157.59747, "b": 693.92086, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "MASK_ACCOUNT_NUMBER_ON_ACCOUNTS", "bbox": {"l": 165.59933, "t": 684.70786, "r": 379.32303, "b": 693.92086, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "list_item", "bbox": {"l": 151.41717529296875, "t": 695.0255737304688, "r": 397.17035, "b": 705.92067, "coord_origin": "TOPLEFT"}, "confidence": 0.9357948303222656, "cells": [{"id": 29, "text": "-", "bbox": {"l": 152.03979, "t": 696.707664, "r": 157.59349, "b": 705.92067, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "MASK_SECURITY_QUESTION_ON_CUSTOMERS", "bbox": {"l": 165.59933, "t": 696.707664, "r": 397.17035, "b": 705.92067, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "list_item", "bbox": {"l": 151.33258056640625, "t": 707.4501953125, "r": 322.77811, "b": 717.920479, "coord_origin": "TOPLEFT"}, "confidence": 0.9366948008537292, "cells": [{"id": 31, "text": "-", "bbox": {"l": 152.03979, "t": 708.707474, "r": 157.59747, "b": 717.920479, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "MASK_TAX_ID_ON_CUSTOMERS", "bbox": {"l": 165.59933, "t": 708.707474, "r": 322.77811, "b": 717.920479, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "picture", "bbox": {"l": 136.62161254882812, "t": 188.8601531982422, "r": 533.3434448242188, "b": 602.5858154296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9852358102798462, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 74, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.23280334472656, "t": 754.7346801757812, "r": 523.59357, "b": 763.9798583984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9574586153030396, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 74, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6565551757812, "t": 754.1910400390625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9153223633766174, "cells": [{"id": 1, "text": "59", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "59"}, {"label": "list_item", "id": 2, "page_no": 74, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.03579711914062, "t": 70.76680755615234, "r": 524.10217, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.935202956199646, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.17424, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "In the New Column Mask window, which is shown in Figure 4-34, enter the following ", "bbox": {"l": 147.96579, "t": 71.50903000000005, "r": 524.10217, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "information:", "bbox": {"l": 151.19876, "t": 83.50885000000017, "r": 203.38417, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "2. In the New Column Mask window, which is shown in Figure 4-34, enter the following information:"}, {"label": "list_item", "id": 3, "page_no": 74, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 151.32827758789062, "t": 99.3359375, "r": 465.46960000000007, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9387155175209045, "cells": [{"id": 5, "text": "-", "bbox": {"l": 152.03839, "t": 100.48865, "r": 157.57317, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Select the CUSTOMERS table on which to create the column mask.", "bbox": {"l": 165.59793, "t": 100.48865, "r": 465.46960000000007, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}]}, "text": "-Select the CUSTOMERS table on which to create the column mask."}, {"label": "list_item", "id": 4, "page_no": 74, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 151.2732391357422, "t": 111.13023376464844, "r": 475.19052000000005, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9359274506568909, "cells": [{"id": 7, "text": "-", "bbox": {"l": 152.03839, "t": 112.48845999999992, "r": 157.57416, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Select the Column to mask; in this example, it is CUSTOMER_EMAIL.", "bbox": {"l": 165.59793, "t": 112.48845999999992, "r": 475.19052000000005, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}]}, "text": "-Select the Column to mask; in this example, it is CUSTOMER_EMAIL."}, {"label": "list_item", "id": 5, "page_no": 74, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 151.39305114746094, "t": 123.64397430419922, "r": 531.30621, "b": 157.70092999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9761620759963989, "cells": [{"id": 9, "text": "-", "bbox": {"l": 152.03839, "t": 124.48828000000003, "r": 157.61002, "b": 133.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Define the masking logic depending on the rules that you want to enforce. In this ", "bbox": {"l": 165.59793, "t": 124.48828000000003, "r": 522.83429, "b": 133.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "example, either the ADMIN or CUSTOMER group profiles can see the entire email ", "bbox": {"l": 165.59793, "t": 136.48810000000003, "r": 531.30621, "b": 145.70110999999997, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "address; otherwise, it is masked to ****@****.", "bbox": {"l": 165.59793, "t": 148.48792000000003, "r": 365.33081, "b": 157.70092999999997, "coord_origin": "TOPLEFT"}}]}, "text": "-Define the masking logic depending on the rules that you want to enforce. In this example, either the ADMIN or CUSTOMER group profiles can see the entire email address; otherwise, it is masked to ****@****."}, {"label": "text", "id": 6, "page_no": 74, "cluster": {"id": 6, "label": "text", "bbox": {"l": 150.79855346679688, "t": 164.49195861816406, "r": 314.76685, "b": 175.1024627685547, "coord_origin": "TOPLEFT"}, "confidence": 0.7048681974411011, "cells": [{"id": 13, "text": "Select the ", "bbox": {"l": 151.19775, "t": 165.52747, "r": 198.40915, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Enabled", "bbox": {"l": 198.41812, "t": 165.52747, "r": 237.21132999999998, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": " option. Click ", "bbox": {"l": 237.17845, "t": 165.52747, "r": 297.04605, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "OK", "bbox": {"l": 296.9982, "t": 165.52747, "r": 311.92026, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ".", "bbox": {"l": 311.99796, "t": 165.52747, "r": 314.76685, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Select the Enabled option. Click OK ."}, {"label": "caption", "id": 7, "page_no": 74, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 135.8140106201172, "t": 604.765380859375, "r": 395.16131591796875, "b": 614.04291, "coord_origin": "TOPLEFT"}, "confidence": 0.9423272013664246, "cells": [{"id": 18, "text": "Figure 4-34 Defining a column mask on the CUSTOMERS table", "bbox": {"l": 136.8, "t": 605.7179, "r": 394.91101, "b": 614.04291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-34 Defining a column mask on the CUSTOMERS table"}, {"label": "list_item", "id": 8, "page_no": 74, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 136.26536560058594, "t": 630.8367919921875, "r": 522.03296, "b": 641.0337524414062, "coord_origin": "TOPLEFT"}, "confidence": 0.8807461857795715, "cells": [{"id": 19, "text": "3.", "bbox": {"l": 136.8, "t": 631.72862, "r": 145.18929, "b": 640.9416200000001, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Repeat steps 1 on page 58 and 2 to create column masks for the following columns:", "bbox": {"l": 147.9857, "t": 631.72862, "r": 522.03296, "b": 640.9416200000001, "coord_origin": "TOPLEFT"}}]}, "text": "3. Repeat steps 1 on page 58 and 2 to create column masks for the following columns:"}, {"label": "list_item", "id": 9, "page_no": 74, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 151.44378662109375, "t": 647.1741943359375, "r": 381.77414, "b": 657.92143, "coord_origin": "TOPLEFT"}, "confidence": 0.9306973814964294, "cells": [{"id": 21, "text": "-", "bbox": {"l": 152.03979, "t": 648.70844, "r": 157.59648, "b": 657.92143, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "MASK_DRIVERS_LICENSE_ON_CUSTOMERS", "bbox": {"l": 165.59933, "t": 648.70844, "r": 381.77414, "b": 657.92143, "coord_origin": "TOPLEFT"}}]}, "text": "-MASK_DRIVERS_LICENSE_ON_CUSTOMERS"}, {"label": "list_item", "id": 10, "page_no": 74, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 151.36248779296875, "t": 659.518798828125, "r": 335.7012, "b": 669.92124, "coord_origin": "TOPLEFT"}, "confidence": 0.9286901354789734, "cells": [{"id": 23, "text": "-", "bbox": {"l": 152.03979, "t": 660.7082399999999, "r": 157.59549, "b": 669.92124, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "MASK_LOGIN_ID_ON_CUSTOMERS", "bbox": {"l": 165.59935, "t": 660.7082399999999, "r": 335.7012, "b": 669.92124, "coord_origin": "TOPLEFT"}}]}, "text": "-MASK_LOGIN_ID_ON_CUSTOMERS"}, {"label": "list_item", "id": 11, "page_no": 74, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 151.4147491455078, "t": 671.4402465820312, "r": 446.63971, "b": 681.92105, "coord_origin": "TOPLEFT"}, "confidence": 0.9449449777603149, "cells": [{"id": 25, "text": "-", "bbox": {"l": 152.03979, "t": 672.70805, "r": 157.59349, "b": 681.92105, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS", "bbox": {"l": 165.59933, "t": 672.70805, "r": 446.63971, "b": 681.92105, "coord_origin": "TOPLEFT"}}]}, "text": "-MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS"}, {"label": "list_item", "id": 12, "page_no": 74, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 151.27947998046875, "t": 683.0931396484375, "r": 379.591064453125, "b": 693.92086, "coord_origin": "TOPLEFT"}, "confidence": 0.924078106880188, "cells": [{"id": 27, "text": "-", "bbox": {"l": 152.03979, "t": 684.70786, "r": 157.59747, "b": 693.92086, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "MASK_ACCOUNT_NUMBER_ON_ACCOUNTS", "bbox": {"l": 165.59933, "t": 684.70786, "r": 379.32303, "b": 693.92086, "coord_origin": "TOPLEFT"}}]}, "text": "-MASK_ACCOUNT_NUMBER_ON_ACCOUNTS"}, {"label": "list_item", "id": 13, "page_no": 74, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 151.41717529296875, "t": 695.0255737304688, "r": 397.17035, "b": 705.92067, "coord_origin": "TOPLEFT"}, "confidence": 0.9357948303222656, "cells": [{"id": 29, "text": "-", "bbox": {"l": 152.03979, "t": 696.707664, "r": 157.59349, "b": 705.92067, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "MASK_SECURITY_QUESTION_ON_CUSTOMERS", "bbox": {"l": 165.59933, "t": 696.707664, "r": 397.17035, "b": 705.92067, "coord_origin": "TOPLEFT"}}]}, "text": "-MASK_SECURITY_QUESTION_ON_CUSTOMERS"}, {"label": "list_item", "id": 14, "page_no": 74, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 151.33258056640625, "t": 707.4501953125, "r": 322.77811, "b": 717.920479, "coord_origin": "TOPLEFT"}, "confidence": 0.9366948008537292, "cells": [{"id": 31, "text": "-", "bbox": {"l": 152.03979, "t": 708.707474, "r": 157.59747, "b": 717.920479, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "MASK_TAX_ID_ON_CUSTOMERS", "bbox": {"l": 165.59933, "t": 708.707474, "r": 322.77811, "b": 717.920479, "coord_origin": "TOPLEFT"}}]}, "text": "-MASK_TAX_ID_ON_CUSTOMERS"}, {"label": "picture", "id": 15, "page_no": 74, "cluster": {"id": 15, "label": "picture", "bbox": {"l": 136.62161254882812, "t": 188.8601531982422, "r": 533.3434448242188, "b": 602.5858154296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9852358102798462, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 74, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.03579711914062, "t": 70.76680755615234, "r": 524.10217, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.935202956199646, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.17424, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "In the New Column Mask window, which is shown in Figure 4-34, enter the following ", "bbox": {"l": 147.96579, "t": 71.50903000000005, "r": 524.10217, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "information:", "bbox": {"l": 151.19876, "t": 83.50885000000017, "r": 203.38417, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "2. In the New Column Mask window, which is shown in Figure 4-34, enter the following information:"}, {"label": "list_item", "id": 3, "page_no": 74, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 151.32827758789062, "t": 99.3359375, "r": 465.46960000000007, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9387155175209045, "cells": [{"id": 5, "text": "-", "bbox": {"l": 152.03839, "t": 100.48865, "r": 157.57317, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Select the CUSTOMERS table on which to create the column mask.", "bbox": {"l": 165.59793, "t": 100.48865, "r": 465.46960000000007, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}]}, "text": "-Select the CUSTOMERS table on which to create the column mask."}, {"label": "list_item", "id": 4, "page_no": 74, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 151.2732391357422, "t": 111.13023376464844, "r": 475.19052000000005, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9359274506568909, "cells": [{"id": 7, "text": "-", "bbox": {"l": 152.03839, "t": 112.48845999999992, "r": 157.57416, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Select the Column to mask; in this example, it is CUSTOMER_EMAIL.", "bbox": {"l": 165.59793, "t": 112.48845999999992, "r": 475.19052000000005, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}]}, "text": "-Select the Column to mask; in this example, it is CUSTOMER_EMAIL."}, {"label": "list_item", "id": 5, "page_no": 74, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 151.39305114746094, "t": 123.64397430419922, "r": 531.30621, "b": 157.70092999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9761620759963989, "cells": [{"id": 9, "text": "-", "bbox": {"l": 152.03839, "t": 124.48828000000003, "r": 157.61002, "b": 133.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Define the masking logic depending on the rules that you want to enforce. In this ", "bbox": {"l": 165.59793, "t": 124.48828000000003, "r": 522.83429, "b": 133.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "example, either the ADMIN or CUSTOMER group profiles can see the entire email ", "bbox": {"l": 165.59793, "t": 136.48810000000003, "r": 531.30621, "b": 145.70110999999997, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "address; otherwise, it is masked to ****@****.", "bbox": {"l": 165.59793, "t": 148.48792000000003, "r": 365.33081, "b": 157.70092999999997, "coord_origin": "TOPLEFT"}}]}, "text": "-Define the masking logic depending on the rules that you want to enforce. In this example, either the ADMIN or CUSTOMER group profiles can see the entire email address; otherwise, it is masked to ****@****."}, {"label": "text", "id": 6, "page_no": 74, "cluster": {"id": 6, "label": "text", "bbox": {"l": 150.79855346679688, "t": 164.49195861816406, "r": 314.76685, "b": 175.1024627685547, "coord_origin": "TOPLEFT"}, "confidence": 0.7048681974411011, "cells": [{"id": 13, "text": "Select the ", "bbox": {"l": 151.19775, "t": 165.52747, "r": 198.40915, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Enabled", "bbox": {"l": 198.41812, "t": 165.52747, "r": 237.21132999999998, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": " option. Click ", "bbox": {"l": 237.17845, "t": 165.52747, "r": 297.04605, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "OK", "bbox": {"l": 296.9982, "t": 165.52747, "r": 311.92026, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ".", "bbox": {"l": 311.99796, "t": 165.52747, "r": 314.76685, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Select the Enabled option. Click OK ."}, {"label": "caption", "id": 7, "page_no": 74, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 135.8140106201172, "t": 604.765380859375, "r": 395.16131591796875, "b": 614.04291, "coord_origin": "TOPLEFT"}, "confidence": 0.9423272013664246, "cells": [{"id": 18, "text": "Figure 4-34 Defining a column mask on the CUSTOMERS table", "bbox": {"l": 136.8, "t": 605.7179, "r": 394.91101, "b": 614.04291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-34 Defining a column mask on the CUSTOMERS table"}, {"label": "list_item", "id": 8, "page_no": 74, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 136.26536560058594, "t": 630.8367919921875, "r": 522.03296, "b": 641.0337524414062, "coord_origin": "TOPLEFT"}, "confidence": 0.8807461857795715, "cells": [{"id": 19, "text": "3.", "bbox": {"l": 136.8, "t": 631.72862, "r": 145.18929, "b": 640.9416200000001, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Repeat steps 1 on page 58 and 2 to create column masks for the following columns:", "bbox": {"l": 147.9857, "t": 631.72862, "r": 522.03296, "b": 640.9416200000001, "coord_origin": "TOPLEFT"}}]}, "text": "3. Repeat steps 1 on page 58 and 2 to create column masks for the following columns:"}, {"label": "list_item", "id": 9, "page_no": 74, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 151.44378662109375, "t": 647.1741943359375, "r": 381.77414, "b": 657.92143, "coord_origin": "TOPLEFT"}, "confidence": 0.9306973814964294, "cells": [{"id": 21, "text": "-", "bbox": {"l": 152.03979, "t": 648.70844, "r": 157.59648, "b": 657.92143, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "MASK_DRIVERS_LICENSE_ON_CUSTOMERS", "bbox": {"l": 165.59933, "t": 648.70844, "r": 381.77414, "b": 657.92143, "coord_origin": "TOPLEFT"}}]}, "text": "-MASK_DRIVERS_LICENSE_ON_CUSTOMERS"}, {"label": "list_item", "id": 10, "page_no": 74, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 151.36248779296875, "t": 659.518798828125, "r": 335.7012, "b": 669.92124, "coord_origin": "TOPLEFT"}, "confidence": 0.9286901354789734, "cells": [{"id": 23, "text": "-", "bbox": {"l": 152.03979, "t": 660.7082399999999, "r": 157.59549, "b": 669.92124, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "MASK_LOGIN_ID_ON_CUSTOMERS", "bbox": {"l": 165.59935, "t": 660.7082399999999, "r": 335.7012, "b": 669.92124, "coord_origin": "TOPLEFT"}}]}, "text": "-MASK_LOGIN_ID_ON_CUSTOMERS"}, {"label": "list_item", "id": 11, "page_no": 74, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 151.4147491455078, "t": 671.4402465820312, "r": 446.63971, "b": 681.92105, "coord_origin": "TOPLEFT"}, "confidence": 0.9449449777603149, "cells": [{"id": 25, "text": "-", "bbox": {"l": 152.03979, "t": 672.70805, "r": 157.59349, "b": 681.92105, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS", "bbox": {"l": 165.59933, "t": 672.70805, "r": 446.63971, "b": 681.92105, "coord_origin": "TOPLEFT"}}]}, "text": "-MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS"}, {"label": "list_item", "id": 12, "page_no": 74, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 151.27947998046875, "t": 683.0931396484375, "r": 379.591064453125, "b": 693.92086, "coord_origin": "TOPLEFT"}, "confidence": 0.924078106880188, "cells": [{"id": 27, "text": "-", "bbox": {"l": 152.03979, "t": 684.70786, "r": 157.59747, "b": 693.92086, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "MASK_ACCOUNT_NUMBER_ON_ACCOUNTS", "bbox": {"l": 165.59933, "t": 684.70786, "r": 379.32303, "b": 693.92086, "coord_origin": "TOPLEFT"}}]}, "text": "-MASK_ACCOUNT_NUMBER_ON_ACCOUNTS"}, {"label": "list_item", "id": 13, "page_no": 74, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 151.41717529296875, "t": 695.0255737304688, "r": 397.17035, "b": 705.92067, "coord_origin": "TOPLEFT"}, "confidence": 0.9357948303222656, "cells": [{"id": 29, "text": "-", "bbox": {"l": 152.03979, "t": 696.707664, "r": 157.59349, "b": 705.92067, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "MASK_SECURITY_QUESTION_ON_CUSTOMERS", "bbox": {"l": 165.59933, "t": 696.707664, "r": 397.17035, "b": 705.92067, "coord_origin": "TOPLEFT"}}]}, "text": "-MASK_SECURITY_QUESTION_ON_CUSTOMERS"}, {"label": "list_item", "id": 14, "page_no": 74, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 151.33258056640625, "t": 707.4501953125, "r": 322.77811, "b": 717.920479, "coord_origin": "TOPLEFT"}, "confidence": 0.9366948008537292, "cells": [{"id": 31, "text": "-", "bbox": {"l": 152.03979, "t": 708.707474, "r": 157.59747, "b": 717.920479, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "MASK_TAX_ID_ON_CUSTOMERS", "bbox": {"l": 165.59933, "t": 708.707474, "r": 322.77811, "b": 717.920479, "coord_origin": "TOPLEFT"}}]}, "text": "-MASK_TAX_ID_ON_CUSTOMERS"}, {"label": "picture", "id": 15, "page_no": 74, "cluster": {"id": 15, "label": "picture", "bbox": {"l": 136.62161254882812, "t": 188.8601531982422, "r": 533.3434448242188, "b": 602.5858154296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9852358102798462, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 74, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.23280334472656, "t": 754.7346801757812, "r": 523.59357, "b": 763.9798583984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9574586153030396, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 74, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6565551757812, "t": 754.1910400390625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9153223633766174, "cells": [{"id": 1, "text": "59", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "59"}]}}, {"page_no": 75, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "60 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "4.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.15868, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "To verify that the column masks are enabled, from System i Navigator, click ", "bbox": {"l": 147.94489, "t": 71.50867000000005, "r": 485.4787, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Column ", "bbox": {"l": 485.40002, "t": 71.50867000000005, "r": 525.39343, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Masks", "bbox": {"l": 151.2002, "t": 83.50847999999996, "r": 181.74052, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ", as shown in Figure 4-35. The seven column masks are created and enabled.", "bbox": {"l": 181.62003, "t": 83.50847999999996, "r": 525.70728, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Figure 4-35 List of column masks on BANK_SCHEMA", "bbox": {"l": 64.800003, "t": 184.27801999999997, "r": 285.03, "b": 192.60297000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "4.3.7", "bbox": {"l": 64.800003, "t": 213.11469, "r": 93.985405, "b": 225.10271999999998, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Restricting the inserting and updating of masked data", "bbox": {"l": 97.633568, "t": 213.11469, "r": 433.79065, "b": 225.10271999999998, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "This step defines the check constraints that support the column masks to make sure that on ", "bbox": {"l": 136.8, "t": 239.26868000000002, "r": 544.46484, "b": 248.48168999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "INSERTS or UPDATES, data is not written with a masked value. For more information about ", "bbox": {"l": 136.8, "t": 251.26849000000004, "r": 544.92688, "b": 260.48150999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "the propagation of masked data, see 6.8, \u201cAvoiding propagation of masked data\u201d on ", "bbox": {"l": 136.8, "t": 263.26831000000004, "r": 508.48523, "b": 272.48132, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "page 108.", "bbox": {"l": 136.8, "t": 275.26813000000004, "r": 181.30827, "b": 284.48114, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Complete the following steps:", "bbox": {"l": 136.8, "t": 297.2279700000001, "r": 266.86069, "b": 306.44095, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "1.", "bbox": {"l": 136.8, "t": 314.26755, "r": 145.1564, "b": 323.48053, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Create a check constraint on the column CUSTOMER_EMAIL in the CUSTOMERS table. ", "bbox": {"l": 147.94186, "t": 314.26755, "r": 547.19568, "b": 323.48053, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "From the navigation pane of System i Navigator, right-click the ", "bbox": {"l": 151.20016, "t": 326.26736, "r": 428.14206, "b": 335.48035, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "CUSTOMERS ", "bbox": {"l": 428.10013, "t": 326.26736, "r": 494.30425999999994, "b": 335.48035, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "table and ", "bbox": {"l": 494.34009, "t": 326.26736, "r": 538.0177, "b": 335.48035, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "select ", "bbox": {"l": 151.20013, "t": 338.26718, "r": 180.07518, "b": 347.48016000000007, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Definition", "bbox": {"l": 180.06023, "t": 338.26718, "r": 226.23678999999998, "b": 347.48016000000007, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": ", as shown Figure 4-36", "bbox": {"l": 226.14017, "t": 338.26718, "r": 327.7511, "b": 347.48016000000007, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Figure 4-36 Definition of the CUSTOMERS table", "bbox": {"l": 136.8, "t": 472.09799, "r": 334.01611, "b": 480.423, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "2.", "bbox": {"l": 136.8, "t": 498.04874, "r": 145.07706, "b": 507.26172, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "From the CUSTOMERS definition window, click the ", "bbox": {"l": 147.83607, "t": 498.04874, "r": 376.15961, "b": 507.26172, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Check Constraints", "bbox": {"l": 376.08002, "t": 498.04874, "r": 463.7648899999999, "b": 507.26172, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": " tab and click ", "bbox": {"l": 463.73996, "t": 498.04874, "r": 522.76489, "b": 507.26172, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Add", "bbox": {"l": 522.77985, "t": 498.04874, "r": 542.0744, "b": 507.26172, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ", ", "bbox": {"l": 542.10028, "t": 498.04874, "r": 547.73962, "b": 507.26172, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "as shown in Figure 4-37.", "bbox": {"l": 151.20013, "t": 510.04855, "r": 260.45734, "b": 519.26154, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Figure 4-37 Adding a check constraint", "bbox": {"l": 64.800003, "t": 603.85789, "r": 220.9212, "b": 612.18291, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.13931274414062, "t": 754.37646484375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9181943535804749, "cells": [{"id": 0, "text": "60 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.2583236694336, "t": 754.7027587890625, "r": 334.42142, "b": 763.9403686523438, "coord_origin": "TOPLEFT"}, "confidence": 0.9538118243217468, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 135.86886596679688, "t": 70.40605926513672, "r": 525.70728, "b": 92.86236572265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9647813439369202, "cells": [{"id": 2, "text": "4.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.15868, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "To verify that the column masks are enabled, from System i Navigator, click ", "bbox": {"l": 147.94489, "t": 71.50867000000005, "r": 485.4787, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Column ", "bbox": {"l": 485.40002, "t": 71.50867000000005, "r": 525.39343, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Masks", "bbox": {"l": 151.2002, "t": 83.50847999999996, "r": 181.74052, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ", as shown in Figure 4-35. The seven column masks are created and enabled.", "bbox": {"l": 181.62003, "t": 83.50847999999996, "r": 525.70728, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.10326385498047, "t": 183.41061401367188, "r": 285.1827087402344, "b": 192.7096710205078, "coord_origin": "TOPLEFT"}, "confidence": 0.9432595372200012, "cells": [{"id": 7, "text": "Figure 4-35 List of column masks on BANK_SCHEMA", "bbox": {"l": 64.800003, "t": 184.27801999999997, "r": 285.03, "b": 192.60297000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 64.0513916015625, "t": 212.59413146972656, "r": 433.79065, "b": 225.7198028564453, "coord_origin": "TOPLEFT"}, "confidence": 0.9636105895042419, "cells": [{"id": 8, "text": "4.3.7", "bbox": {"l": 64.800003, "t": 213.11469, "r": 93.985405, "b": 225.10271999999998, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Restricting the inserting and updating of masked data", "bbox": {"l": 97.633568, "t": 213.11469, "r": 433.79065, "b": 225.10271999999998, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.85455322265625, "t": 238.7532196044922, "r": 544.92688, "b": 284.9345397949219, "coord_origin": "TOPLEFT"}, "confidence": 0.9866855144500732, "cells": [{"id": 10, "text": "This step defines the check constraints that support the column masks to make sure that on ", "bbox": {"l": 136.8, "t": 239.26868000000002, "r": 544.46484, "b": 248.48168999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "INSERTS or UPDATES, data is not written with a masked value. For more information about ", "bbox": {"l": 136.8, "t": 251.26849000000004, "r": 544.92688, "b": 260.48150999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "the propagation of masked data, see 6.8, \u201cAvoiding propagation of masked data\u201d on ", "bbox": {"l": 136.8, "t": 263.26831000000004, "r": 508.48523, "b": 272.48132, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "page 108.", "bbox": {"l": 136.8, "t": 275.26813000000004, "r": 181.30827, "b": 284.48114, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "section_header", "bbox": {"l": 136.1099090576172, "t": 296.4962158203125, "r": 266.86069, "b": 307.0681457519531, "coord_origin": "TOPLEFT"}, "confidence": 0.8199454545974731, "cells": [{"id": 14, "text": "Complete the following steps:", "bbox": {"l": 136.8, "t": 297.2279700000001, "r": 266.86069, "b": 306.44095, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 136.3522491455078, "t": 313.09881591796875, "r": 547.19568, "b": 347.6925048828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9741182923316956, "cells": [{"id": 15, "text": "1.", "bbox": {"l": 136.8, "t": 314.26755, "r": 145.1564, "b": 323.48053, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Create a check constraint on the column CUSTOMER_EMAIL in the CUSTOMERS table. ", "bbox": {"l": 147.94186, "t": 314.26755, "r": 547.19568, "b": 323.48053, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "From the navigation pane of System i Navigator, right-click the ", "bbox": {"l": 151.20016, "t": 326.26736, "r": 428.14206, "b": 335.48035, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "CUSTOMERS ", "bbox": {"l": 428.10013, "t": 326.26736, "r": 494.30425999999994, "b": 335.48035, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "table and ", "bbox": {"l": 494.34009, "t": 326.26736, "r": 538.0177, "b": 335.48035, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "select ", "bbox": {"l": 151.20013, "t": 338.26718, "r": 180.07518, "b": 347.48016000000007, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Definition", "bbox": {"l": 180.06023, "t": 338.26718, "r": 226.23678999999998, "b": 347.48016000000007, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": ", as shown Figure 4-36", "bbox": {"l": 226.14017, "t": 338.26718, "r": 327.7511, "b": 347.48016000000007, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "caption", "bbox": {"l": 135.78135681152344, "t": 471.4366455078125, "r": 334.3720397949219, "b": 480.8490295410156, "coord_origin": "TOPLEFT"}, "confidence": 0.9464175701141357, "cells": [{"id": 23, "text": "Figure 4-36 Definition of the CUSTOMERS table", "bbox": {"l": 136.8, "t": 472.09799, "r": 334.01611, "b": 480.423, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.75648498535156, "t": 497.3858337402344, "r": 547.73962, "b": 519.6641845703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9690989851951599, "cells": [{"id": 24, "text": "2.", "bbox": {"l": 136.8, "t": 498.04874, "r": 145.07706, "b": 507.26172, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "From the CUSTOMERS definition window, click the ", "bbox": {"l": 147.83607, "t": 498.04874, "r": 376.15961, "b": 507.26172, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Check Constraints", "bbox": {"l": 376.08002, "t": 498.04874, "r": 463.7648899999999, "b": 507.26172, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": " tab and click ", "bbox": {"l": 463.73996, "t": 498.04874, "r": 522.76489, "b": 507.26172, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Add", "bbox": {"l": 522.77985, "t": 498.04874, "r": 542.0744, "b": 507.26172, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ", ", "bbox": {"l": 542.10028, "t": 498.04874, "r": 547.73962, "b": 507.26172, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "as shown in Figure 4-37.", "bbox": {"l": 151.20013, "t": 510.04855, "r": 260.45734, "b": 519.26154, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "caption", "bbox": {"l": 64.25939178466797, "t": 602.9214477539062, "r": 221.74893188476562, "b": 612.18291, "coord_origin": "TOPLEFT"}, "confidence": 0.9495618343353271, "cells": [{"id": 31, "text": "Figure 4-37 Adding a check constraint", "bbox": {"l": 64.800003, "t": 603.85789, "r": 220.9212, "b": 612.18291, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "picture", "bbox": {"l": 136.29519653320312, "t": 362.13775634765625, "r": 545.3217163085938, "b": 468.5462951660156, "coord_origin": "TOPLEFT"}, "confidence": 0.983352780342102, "cells": []}, {"id": 12, "label": "picture", "bbox": {"l": 64.00347900390625, "t": 533.6920776367188, "r": 546.5211181640625, "b": 600.8970947265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9819415807723999, "cells": []}, {"id": 13, "label": "picture", "bbox": {"l": 64.02095031738281, "t": 107.45484924316406, "r": 547.409912109375, "b": 180.8109893798828, "coord_origin": "TOPLEFT"}, "confidence": 0.9703426361083984, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 75, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.13931274414062, "t": 754.37646484375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9181943535804749, "cells": [{"id": 0, "text": "60 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "60"}, {"label": "page_footer", "id": 1, "page_no": 75, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.2583236694336, "t": 754.7027587890625, "r": 334.42142, "b": 763.9403686523438, "coord_origin": "TOPLEFT"}, "confidence": 0.9538118243217468, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "list_item", "id": 2, "page_no": 75, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.86886596679688, "t": 70.40605926513672, "r": 525.70728, "b": 92.86236572265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9647813439369202, "cells": [{"id": 2, "text": "4.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.15868, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "To verify that the column masks are enabled, from System i Navigator, click ", "bbox": {"l": 147.94489, "t": 71.50867000000005, "r": 485.4787, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Column ", "bbox": {"l": 485.40002, "t": 71.50867000000005, "r": 525.39343, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Masks", "bbox": {"l": 151.2002, "t": 83.50847999999996, "r": 181.74052, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ", as shown in Figure 4-35. The seven column masks are created and enabled.", "bbox": {"l": 181.62003, "t": 83.50847999999996, "r": 525.70728, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "4. To verify that the column masks are enabled, from System i Navigator, click Column Masks , as shown in Figure 4-35. The seven column masks are created and enabled."}, {"label": "caption", "id": 3, "page_no": 75, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.10326385498047, "t": 183.41061401367188, "r": 285.1827087402344, "b": 192.7096710205078, "coord_origin": "TOPLEFT"}, "confidence": 0.9432595372200012, "cells": [{"id": 7, "text": "Figure 4-35 List of column masks on BANK_SCHEMA", "bbox": {"l": 64.800003, "t": 184.27801999999997, "r": 285.03, "b": 192.60297000000003, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-35 List of column masks on BANK_SCHEMA"}, {"label": "section_header", "id": 4, "page_no": 75, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.0513916015625, "t": 212.59413146972656, "r": 433.79065, "b": 225.7198028564453, "coord_origin": "TOPLEFT"}, "confidence": 0.9636105895042419, "cells": [{"id": 8, "text": "4.3.7", "bbox": {"l": 64.800003, "t": 213.11469, "r": 93.985405, "b": 225.10271999999998, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Restricting the inserting and updating of masked data", "bbox": {"l": 97.633568, "t": 213.11469, "r": 433.79065, "b": 225.10271999999998, "coord_origin": "TOPLEFT"}}]}, "text": "4.3.7 Restricting the inserting and updating of masked data"}, {"label": "text", "id": 5, "page_no": 75, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.85455322265625, "t": 238.7532196044922, "r": 544.92688, "b": 284.9345397949219, "coord_origin": "TOPLEFT"}, "confidence": 0.9866855144500732, "cells": [{"id": 10, "text": "This step defines the check constraints that support the column masks to make sure that on ", "bbox": {"l": 136.8, "t": 239.26868000000002, "r": 544.46484, "b": 248.48168999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "INSERTS or UPDATES, data is not written with a masked value. For more information about ", "bbox": {"l": 136.8, "t": 251.26849000000004, "r": 544.92688, "b": 260.48150999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "the propagation of masked data, see 6.8, \u201cAvoiding propagation of masked data\u201d on ", "bbox": {"l": 136.8, "t": 263.26831000000004, "r": 508.48523, "b": 272.48132, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "page 108.", "bbox": {"l": 136.8, "t": 275.26813000000004, "r": 181.30827, "b": 284.48114, "coord_origin": "TOPLEFT"}}]}, "text": "This step defines the check constraints that support the column masks to make sure that on INSERTS or UPDATES, data is not written with a masked value. For more information about the propagation of masked data, see 6.8, \u201cAvoiding propagation of masked data\u201d on page 108."}, {"label": "section_header", "id": 6, "page_no": 75, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 136.1099090576172, "t": 296.4962158203125, "r": 266.86069, "b": 307.0681457519531, "coord_origin": "TOPLEFT"}, "confidence": 0.8199454545974731, "cells": [{"id": 14, "text": "Complete the following steps:", "bbox": {"l": 136.8, "t": 297.2279700000001, "r": 266.86069, "b": 306.44095, "coord_origin": "TOPLEFT"}}]}, "text": "Complete the following steps:"}, {"label": "list_item", "id": 7, "page_no": 75, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 136.3522491455078, "t": 313.09881591796875, "r": 547.19568, "b": 347.6925048828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9741182923316956, "cells": [{"id": 15, "text": "1.", "bbox": {"l": 136.8, "t": 314.26755, "r": 145.1564, "b": 323.48053, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Create a check constraint on the column CUSTOMER_EMAIL in the CUSTOMERS table. ", "bbox": {"l": 147.94186, "t": 314.26755, "r": 547.19568, "b": 323.48053, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "From the navigation pane of System i Navigator, right-click the ", "bbox": {"l": 151.20016, "t": 326.26736, "r": 428.14206, "b": 335.48035, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "CUSTOMERS ", "bbox": {"l": 428.10013, "t": 326.26736, "r": 494.30425999999994, "b": 335.48035, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "table and ", "bbox": {"l": 494.34009, "t": 326.26736, "r": 538.0177, "b": 335.48035, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "select ", "bbox": {"l": 151.20013, "t": 338.26718, "r": 180.07518, "b": 347.48016000000007, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Definition", "bbox": {"l": 180.06023, "t": 338.26718, "r": 226.23678999999998, "b": 347.48016000000007, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": ", as shown Figure 4-36", "bbox": {"l": 226.14017, "t": 338.26718, "r": 327.7511, "b": 347.48016000000007, "coord_origin": "TOPLEFT"}}]}, "text": "1. Create a check constraint on the column CUSTOMER_EMAIL in the CUSTOMERS table. From the navigation pane of System i Navigator, right-click the CUSTOMERS table and select Definition , as shown Figure 4-36"}, {"label": "caption", "id": 8, "page_no": 75, "cluster": {"id": 8, "label": "caption", "bbox": {"l": 135.78135681152344, "t": 471.4366455078125, "r": 334.3720397949219, "b": 480.8490295410156, "coord_origin": "TOPLEFT"}, "confidence": 0.9464175701141357, "cells": [{"id": 23, "text": "Figure 4-36 Definition of the CUSTOMERS table", "bbox": {"l": 136.8, "t": 472.09799, "r": 334.01611, "b": 480.423, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-36 Definition of the CUSTOMERS table"}, {"label": "list_item", "id": 9, "page_no": 75, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.75648498535156, "t": 497.3858337402344, "r": 547.73962, "b": 519.6641845703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9690989851951599, "cells": [{"id": 24, "text": "2.", "bbox": {"l": 136.8, "t": 498.04874, "r": 145.07706, "b": 507.26172, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "From the CUSTOMERS definition window, click the ", "bbox": {"l": 147.83607, "t": 498.04874, "r": 376.15961, "b": 507.26172, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Check Constraints", "bbox": {"l": 376.08002, "t": 498.04874, "r": 463.7648899999999, "b": 507.26172, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": " tab and click ", "bbox": {"l": 463.73996, "t": 498.04874, "r": 522.76489, "b": 507.26172, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Add", "bbox": {"l": 522.77985, "t": 498.04874, "r": 542.0744, "b": 507.26172, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ", ", "bbox": {"l": 542.10028, "t": 498.04874, "r": 547.73962, "b": 507.26172, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "as shown in Figure 4-37.", "bbox": {"l": 151.20013, "t": 510.04855, "r": 260.45734, "b": 519.26154, "coord_origin": "TOPLEFT"}}]}, "text": "2. From the CUSTOMERS definition window, click the Check Constraints tab and click Add , as shown in Figure 4-37."}, {"label": "caption", "id": 10, "page_no": 75, "cluster": {"id": 10, "label": "caption", "bbox": {"l": 64.25939178466797, "t": 602.9214477539062, "r": 221.74893188476562, "b": 612.18291, "coord_origin": "TOPLEFT"}, "confidence": 0.9495618343353271, "cells": [{"id": 31, "text": "Figure 4-37 Adding a check constraint", "bbox": {"l": 64.800003, "t": 603.85789, "r": 220.9212, "b": 612.18291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-37 Adding a check constraint"}, {"label": "picture", "id": 11, "page_no": 75, "cluster": {"id": 11, "label": "picture", "bbox": {"l": 136.29519653320312, "t": 362.13775634765625, "r": 545.3217163085938, "b": 468.5462951660156, "coord_origin": "TOPLEFT"}, "confidence": 0.983352780342102, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 12, "page_no": 75, "cluster": {"id": 12, "label": "picture", "bbox": {"l": 64.00347900390625, "t": 533.6920776367188, "r": 546.5211181640625, "b": 600.8970947265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9819415807723999, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 13, "page_no": 75, "cluster": {"id": 13, "label": "picture", "bbox": {"l": 64.02095031738281, "t": 107.45484924316406, "r": 547.409912109375, "b": 180.8109893798828, "coord_origin": "TOPLEFT"}, "confidence": 0.9703426361083984, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 75, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.86886596679688, "t": 70.40605926513672, "r": 525.70728, "b": 92.86236572265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9647813439369202, "cells": [{"id": 2, "text": "4.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.15868, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "To verify that the column masks are enabled, from System i Navigator, click ", "bbox": {"l": 147.94489, "t": 71.50867000000005, "r": 485.4787, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Column ", "bbox": {"l": 485.40002, "t": 71.50867000000005, "r": 525.39343, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Masks", "bbox": {"l": 151.2002, "t": 83.50847999999996, "r": 181.74052, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ", as shown in Figure 4-35. The seven column masks are created and enabled.", "bbox": {"l": 181.62003, "t": 83.50847999999996, "r": 525.70728, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "4. To verify that the column masks are enabled, from System i Navigator, click Column Masks , as shown in Figure 4-35. The seven column masks are created and enabled."}, {"label": "caption", "id": 3, "page_no": 75, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.10326385498047, "t": 183.41061401367188, "r": 285.1827087402344, "b": 192.7096710205078, "coord_origin": "TOPLEFT"}, "confidence": 0.9432595372200012, "cells": [{"id": 7, "text": "Figure 4-35 List of column masks on BANK_SCHEMA", "bbox": {"l": 64.800003, "t": 184.27801999999997, "r": 285.03, "b": 192.60297000000003, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-35 List of column masks on BANK_SCHEMA"}, {"label": "section_header", "id": 4, "page_no": 75, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.0513916015625, "t": 212.59413146972656, "r": 433.79065, "b": 225.7198028564453, "coord_origin": "TOPLEFT"}, "confidence": 0.9636105895042419, "cells": [{"id": 8, "text": "4.3.7", "bbox": {"l": 64.800003, "t": 213.11469, "r": 93.985405, "b": 225.10271999999998, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Restricting the inserting and updating of masked data", "bbox": {"l": 97.633568, "t": 213.11469, "r": 433.79065, "b": 225.10271999999998, "coord_origin": "TOPLEFT"}}]}, "text": "4.3.7 Restricting the inserting and updating of masked data"}, {"label": "text", "id": 5, "page_no": 75, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.85455322265625, "t": 238.7532196044922, "r": 544.92688, "b": 284.9345397949219, "coord_origin": "TOPLEFT"}, "confidence": 0.9866855144500732, "cells": [{"id": 10, "text": "This step defines the check constraints that support the column masks to make sure that on ", "bbox": {"l": 136.8, "t": 239.26868000000002, "r": 544.46484, "b": 248.48168999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "INSERTS or UPDATES, data is not written with a masked value. For more information about ", "bbox": {"l": 136.8, "t": 251.26849000000004, "r": 544.92688, "b": 260.48150999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "the propagation of masked data, see 6.8, \u201cAvoiding propagation of masked data\u201d on ", "bbox": {"l": 136.8, "t": 263.26831000000004, "r": 508.48523, "b": 272.48132, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "page 108.", "bbox": {"l": 136.8, "t": 275.26813000000004, "r": 181.30827, "b": 284.48114, "coord_origin": "TOPLEFT"}}]}, "text": "This step defines the check constraints that support the column masks to make sure that on INSERTS or UPDATES, data is not written with a masked value. For more information about the propagation of masked data, see 6.8, \u201cAvoiding propagation of masked data\u201d on page 108."}, {"label": "section_header", "id": 6, "page_no": 75, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 136.1099090576172, "t": 296.4962158203125, "r": 266.86069, "b": 307.0681457519531, "coord_origin": "TOPLEFT"}, "confidence": 0.8199454545974731, "cells": [{"id": 14, "text": "Complete the following steps:", "bbox": {"l": 136.8, "t": 297.2279700000001, "r": 266.86069, "b": 306.44095, "coord_origin": "TOPLEFT"}}]}, "text": "Complete the following steps:"}, {"label": "list_item", "id": 7, "page_no": 75, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 136.3522491455078, "t": 313.09881591796875, "r": 547.19568, "b": 347.6925048828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9741182923316956, "cells": [{"id": 15, "text": "1.", "bbox": {"l": 136.8, "t": 314.26755, "r": 145.1564, "b": 323.48053, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Create a check constraint on the column CUSTOMER_EMAIL in the CUSTOMERS table. ", "bbox": {"l": 147.94186, "t": 314.26755, "r": 547.19568, "b": 323.48053, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "From the navigation pane of System i Navigator, right-click the ", "bbox": {"l": 151.20016, "t": 326.26736, "r": 428.14206, "b": 335.48035, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "CUSTOMERS ", "bbox": {"l": 428.10013, "t": 326.26736, "r": 494.30425999999994, "b": 335.48035, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "table and ", "bbox": {"l": 494.34009, "t": 326.26736, "r": 538.0177, "b": 335.48035, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "select ", "bbox": {"l": 151.20013, "t": 338.26718, "r": 180.07518, "b": 347.48016000000007, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Definition", "bbox": {"l": 180.06023, "t": 338.26718, "r": 226.23678999999998, "b": 347.48016000000007, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": ", as shown Figure 4-36", "bbox": {"l": 226.14017, "t": 338.26718, "r": 327.7511, "b": 347.48016000000007, "coord_origin": "TOPLEFT"}}]}, "text": "1. Create a check constraint on the column CUSTOMER_EMAIL in the CUSTOMERS table. From the navigation pane of System i Navigator, right-click the CUSTOMERS table and select Definition , as shown Figure 4-36"}, {"label": "caption", "id": 8, "page_no": 75, "cluster": {"id": 8, "label": "caption", "bbox": {"l": 135.78135681152344, "t": 471.4366455078125, "r": 334.3720397949219, "b": 480.8490295410156, "coord_origin": "TOPLEFT"}, "confidence": 0.9464175701141357, "cells": [{"id": 23, "text": "Figure 4-36 Definition of the CUSTOMERS table", "bbox": {"l": 136.8, "t": 472.09799, "r": 334.01611, "b": 480.423, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-36 Definition of the CUSTOMERS table"}, {"label": "list_item", "id": 9, "page_no": 75, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.75648498535156, "t": 497.3858337402344, "r": 547.73962, "b": 519.6641845703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9690989851951599, "cells": [{"id": 24, "text": "2.", "bbox": {"l": 136.8, "t": 498.04874, "r": 145.07706, "b": 507.26172, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "From the CUSTOMERS definition window, click the ", "bbox": {"l": 147.83607, "t": 498.04874, "r": 376.15961, "b": 507.26172, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Check Constraints", "bbox": {"l": 376.08002, "t": 498.04874, "r": 463.7648899999999, "b": 507.26172, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": " tab and click ", "bbox": {"l": 463.73996, "t": 498.04874, "r": 522.76489, "b": 507.26172, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Add", "bbox": {"l": 522.77985, "t": 498.04874, "r": 542.0744, "b": 507.26172, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ", ", "bbox": {"l": 542.10028, "t": 498.04874, "r": 547.73962, "b": 507.26172, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "as shown in Figure 4-37.", "bbox": {"l": 151.20013, "t": 510.04855, "r": 260.45734, "b": 519.26154, "coord_origin": "TOPLEFT"}}]}, "text": "2. From the CUSTOMERS definition window, click the Check Constraints tab and click Add , as shown in Figure 4-37."}, {"label": "caption", "id": 10, "page_no": 75, "cluster": {"id": 10, "label": "caption", "bbox": {"l": 64.25939178466797, "t": 602.9214477539062, "r": 221.74893188476562, "b": 612.18291, "coord_origin": "TOPLEFT"}, "confidence": 0.9495618343353271, "cells": [{"id": 31, "text": "Figure 4-37 Adding a check constraint", "bbox": {"l": 64.800003, "t": 603.85789, "r": 220.9212, "b": 612.18291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-37 Adding a check constraint"}, {"label": "picture", "id": 11, "page_no": 75, "cluster": {"id": 11, "label": "picture", "bbox": {"l": 136.29519653320312, "t": 362.13775634765625, "r": 545.3217163085938, "b": 468.5462951660156, "coord_origin": "TOPLEFT"}, "confidence": 0.983352780342102, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 12, "page_no": 75, "cluster": {"id": 12, "label": "picture", "bbox": {"l": 64.00347900390625, "t": 533.6920776367188, "r": 546.5211181640625, "b": 600.8970947265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9819415807723999, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 13, "page_no": 75, "cluster": {"id": 13, "label": "picture", "bbox": {"l": 64.02095031738281, "t": 107.45484924316406, "r": 547.409912109375, "b": 180.8109893798828, "coord_origin": "TOPLEFT"}, "confidence": 0.9703426361083984, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 75, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.13931274414062, "t": 754.37646484375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9181943535804749, "cells": [{"id": 0, "text": "60 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "60"}, {"label": "page_footer", "id": 1, "page_no": 75, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.2583236694336, "t": 754.7027587890625, "r": 334.42142, "b": 763.9403686523438, "coord_origin": "TOPLEFT"}, "confidence": 0.9538118243217468, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 76, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "61", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "3.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.18819, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The New Check Constraint window opens, as shown in Figure 4-38. Complete the ", "bbox": {"l": 147.98439, "t": 71.50903000000005, "r": 515.81549, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "following steps:", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 219.05225, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "a.", "bbox": {"l": 151.19975, "t": 100.48865, "r": 160.00291, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Select the ", "bbox": {"l": 162.9373, "t": 100.48865, "r": 212.81131, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "CUSTOMER_EMAIL", "bbox": {"l": 212.81927, "t": 100.48865, "r": 306.29187, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": " column.", "bbox": {"l": 306.23911, "t": 100.48865, "r": 344.06818, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "b.", "bbox": {"l": 151.19875, "t": 117.52819999999997, "r": 159.57977, "b": 126.74121000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Enter the check constraint condition. In this example, specify CUSTOMER_EMAIL to ", "bbox": {"l": 162.37343, "t": 117.52819999999997, "r": 541.59985, "b": 126.74121000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "be different from ****@****, which is the mask value.", "bbox": {"l": 165.59891, "t": 129.52801999999997, "r": 395.45975, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "c.", "bbox": {"l": 151.19875, "t": 146.50780999999995, "r": 159.48901, "b": 155.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Select the ", "bbox": {"l": 162.45135, "t": 146.50780999999995, "r": 212.80035, "b": 155.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "On update violation, preserve column value ", "bbox": {"l": 212.81827, "t": 146.50780999999995, "r": 422.71716, "b": 155.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "option and click ", "bbox": {"l": 422.69836, "t": 146.50780999999995, "r": 494.17922999999996, "b": 155.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "OK", "bbox": {"l": 494.15839, "t": 146.50780999999995, "r": 509.08044000000007, "b": 155.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ".", "bbox": {"l": 509.15814, "t": 146.50780999999995, "r": 511.92703, "b": 155.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Figure 4-38 Specifying a new check constraint on the CUSTOMERS table", "bbox": {"l": 64.800003, "t": 654.19789, "r": 361.97821, "b": 662.5228999999999, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 214.33963012695312, "t": 754.6822509765625, "r": 523.59357, "b": 764.0059204101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9542582035064697, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.6194458007812, "t": 754.259521484375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9045737385749817, "cells": [{"id": 1, "text": "61", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 136.19448852539062, "t": 70.60295867919922, "r": 515.81549, "b": 92.99156951904297, "coord_origin": "TOPLEFT"}, "confidence": 0.9727184176445007, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.18819, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The New Check Constraint window opens, as shown in Figure 4-38. Complete the ", "bbox": {"l": 147.98439, "t": 71.50903000000005, "r": 515.81549, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "following steps:", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 219.05225, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "list_item", "bbox": {"l": 150.47923278808594, "t": 99.40367889404297, "r": 344.06818, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9255325794219971, "cells": [{"id": 5, "text": "a.", "bbox": {"l": 151.19975, "t": 100.48865, "r": 160.00291, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Select the ", "bbox": {"l": 162.9373, "t": 100.48865, "r": 212.81131, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "CUSTOMER_EMAIL", "bbox": {"l": 212.81927, "t": 100.48865, "r": 306.29187, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": " column.", "bbox": {"l": 306.23911, "t": 100.48865, "r": 344.06818, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 150.597412109375, "t": 116.41293334960938, "r": 541.59985, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9738664627075195, "cells": [{"id": 9, "text": "b.", "bbox": {"l": 151.19875, "t": 117.52819999999997, "r": 159.57977, "b": 126.74121000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Enter the check constraint condition. In this example, specify CUSTOMER_EMAIL to ", "bbox": {"l": 162.37343, "t": 117.52819999999997, "r": 541.59985, "b": 126.74121000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "be different from ****@****, which is the mask value.", "bbox": {"l": 165.59891, "t": 129.52801999999997, "r": 395.45975, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 150.6071319580078, "t": 145.43560791015625, "r": 511.92703, "b": 155.8599853515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9509996175765991, "cells": [{"id": 12, "text": "c.", "bbox": {"l": 151.19875, "t": 146.50780999999995, "r": 159.48901, "b": 155.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Select the ", "bbox": {"l": 162.45135, "t": 146.50780999999995, "r": 212.80035, "b": 155.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "On update violation, preserve column value ", "bbox": {"l": 212.81827, "t": 146.50780999999995, "r": 422.71716, "b": 155.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "option and click ", "bbox": {"l": 422.69836, "t": 146.50780999999995, "r": 494.17922999999996, "b": 155.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "OK", "bbox": {"l": 494.15839, "t": 146.50780999999995, "r": 509.08044000000007, "b": 155.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ".", "bbox": {"l": 509.15814, "t": 146.50780999999995, "r": 511.92703, "b": 155.72082999999998, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "caption", "bbox": {"l": 64.2974853515625, "t": 653.2451782226562, "r": 362.4355773925781, "b": 662.75830078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9486740827560425, "cells": [{"id": 18, "text": "Figure 4-38 Specifying a new check constraint on the CUSTOMERS table", "bbox": {"l": 64.800003, "t": 654.19789, "r": 361.97821, "b": 662.5228999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "picture", "bbox": {"l": 63.89818572998047, "t": 169.34371948242188, "r": 543.365966796875, "b": 650.5548095703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9851900935173035, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 76, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.33963012695312, "t": 754.6822509765625, "r": 523.59357, "b": 764.0059204101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9542582035064697, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 76, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6194458007812, "t": 754.259521484375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9045737385749817, "cells": [{"id": 1, "text": "61", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "61"}, {"label": "list_item", "id": 2, "page_no": 76, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.19448852539062, "t": 70.60295867919922, "r": 515.81549, "b": 92.99156951904297, "coord_origin": "TOPLEFT"}, "confidence": 0.9727184176445007, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.18819, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The New Check Constraint window opens, as shown in Figure 4-38. Complete the ", "bbox": {"l": 147.98439, "t": 71.50903000000005, "r": 515.81549, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "following steps:", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 219.05225, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "3. The New Check Constraint window opens, as shown in Figure 4-38. Complete the following steps:"}, {"label": "list_item", "id": 3, "page_no": 76, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 150.47923278808594, "t": 99.40367889404297, "r": 344.06818, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9255325794219971, "cells": [{"id": 5, "text": "a.", "bbox": {"l": 151.19975, "t": 100.48865, "r": 160.00291, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Select the ", "bbox": {"l": 162.9373, "t": 100.48865, "r": 212.81131, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "CUSTOMER_EMAIL", "bbox": {"l": 212.81927, "t": 100.48865, "r": 306.29187, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": " column.", "bbox": {"l": 306.23911, "t": 100.48865, "r": 344.06818, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}]}, "text": "a. Select the CUSTOMER_EMAIL column."}, {"label": "list_item", "id": 4, "page_no": 76, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 150.597412109375, "t": 116.41293334960938, "r": 541.59985, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9738664627075195, "cells": [{"id": 9, "text": "b.", "bbox": {"l": 151.19875, "t": 117.52819999999997, "r": 159.57977, "b": 126.74121000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Enter the check constraint condition. In this example, specify CUSTOMER_EMAIL to ", "bbox": {"l": 162.37343, "t": 117.52819999999997, "r": 541.59985, "b": 126.74121000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "be different from ****@****, which is the mask value.", "bbox": {"l": 165.59891, "t": 129.52801999999997, "r": 395.45975, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}]}, "text": "b. Enter the check constraint condition. In this example, specify CUSTOMER_EMAIL to be different from ****@****, which is the mask value."}, {"label": "list_item", "id": 5, "page_no": 76, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 150.6071319580078, "t": 145.43560791015625, "r": 511.92703, "b": 155.8599853515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9509996175765991, "cells": [{"id": 12, "text": "c.", "bbox": {"l": 151.19875, "t": 146.50780999999995, "r": 159.48901, "b": 155.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Select the ", "bbox": {"l": 162.45135, "t": 146.50780999999995, "r": 212.80035, "b": 155.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "On update violation, preserve column value ", "bbox": {"l": 212.81827, "t": 146.50780999999995, "r": 422.71716, "b": 155.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "option and click ", "bbox": {"l": 422.69836, "t": 146.50780999999995, "r": 494.17922999999996, "b": 155.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "OK", "bbox": {"l": 494.15839, "t": 146.50780999999995, "r": 509.08044000000007, "b": 155.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ".", "bbox": {"l": 509.15814, "t": 146.50780999999995, "r": 511.92703, "b": 155.72082999999998, "coord_origin": "TOPLEFT"}}]}, "text": "c. Select the On update violation, preserve column value option and click OK ."}, {"label": "caption", "id": 6, "page_no": 76, "cluster": {"id": 6, "label": "caption", "bbox": {"l": 64.2974853515625, "t": 653.2451782226562, "r": 362.4355773925781, "b": 662.75830078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9486740827560425, "cells": [{"id": 18, "text": "Figure 4-38 Specifying a new check constraint on the CUSTOMERS table", "bbox": {"l": 64.800003, "t": 654.19789, "r": 361.97821, "b": 662.5228999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-38 Specifying a new check constraint on the CUSTOMERS table"}, {"label": "picture", "id": 7, "page_no": 76, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 63.89818572998047, "t": 169.34371948242188, "r": 543.365966796875, "b": 650.5548095703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9851900935173035, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 76, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.19448852539062, "t": 70.60295867919922, "r": 515.81549, "b": 92.99156951904297, "coord_origin": "TOPLEFT"}, "confidence": 0.9727184176445007, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.18819, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The New Check Constraint window opens, as shown in Figure 4-38. Complete the ", "bbox": {"l": 147.98439, "t": 71.50903000000005, "r": 515.81549, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "following steps:", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 219.05225, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "3. The New Check Constraint window opens, as shown in Figure 4-38. Complete the following steps:"}, {"label": "list_item", "id": 3, "page_no": 76, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 150.47923278808594, "t": 99.40367889404297, "r": 344.06818, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9255325794219971, "cells": [{"id": 5, "text": "a.", "bbox": {"l": 151.19975, "t": 100.48865, "r": 160.00291, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Select the ", "bbox": {"l": 162.9373, "t": 100.48865, "r": 212.81131, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "CUSTOMER_EMAIL", "bbox": {"l": 212.81927, "t": 100.48865, "r": 306.29187, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": " column.", "bbox": {"l": 306.23911, "t": 100.48865, "r": 344.06818, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}]}, "text": "a. Select the CUSTOMER_EMAIL column."}, {"label": "list_item", "id": 4, "page_no": 76, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 150.597412109375, "t": 116.41293334960938, "r": 541.59985, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9738664627075195, "cells": [{"id": 9, "text": "b.", "bbox": {"l": 151.19875, "t": 117.52819999999997, "r": 159.57977, "b": 126.74121000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Enter the check constraint condition. In this example, specify CUSTOMER_EMAIL to ", "bbox": {"l": 162.37343, "t": 117.52819999999997, "r": 541.59985, "b": 126.74121000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "be different from ****@****, which is the mask value.", "bbox": {"l": 165.59891, "t": 129.52801999999997, "r": 395.45975, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}]}, "text": "b. Enter the check constraint condition. In this example, specify CUSTOMER_EMAIL to be different from ****@****, which is the mask value."}, {"label": "list_item", "id": 5, "page_no": 76, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 150.6071319580078, "t": 145.43560791015625, "r": 511.92703, "b": 155.8599853515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9509996175765991, "cells": [{"id": 12, "text": "c.", "bbox": {"l": 151.19875, "t": 146.50780999999995, "r": 159.48901, "b": 155.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Select the ", "bbox": {"l": 162.45135, "t": 146.50780999999995, "r": 212.80035, "b": 155.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "On update violation, preserve column value ", "bbox": {"l": 212.81827, "t": 146.50780999999995, "r": 422.71716, "b": 155.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "option and click ", "bbox": {"l": 422.69836, "t": 146.50780999999995, "r": 494.17922999999996, "b": 155.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "OK", "bbox": {"l": 494.15839, "t": 146.50780999999995, "r": 509.08044000000007, "b": 155.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ".", "bbox": {"l": 509.15814, "t": 146.50780999999995, "r": 511.92703, "b": 155.72082999999998, "coord_origin": "TOPLEFT"}}]}, "text": "c. Select the On update violation, preserve column value option and click OK ."}, {"label": "caption", "id": 6, "page_no": 76, "cluster": {"id": 6, "label": "caption", "bbox": {"l": 64.2974853515625, "t": 653.2451782226562, "r": 362.4355773925781, "b": 662.75830078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9486740827560425, "cells": [{"id": 18, "text": "Figure 4-38 Specifying a new check constraint on the CUSTOMERS table", "bbox": {"l": 64.800003, "t": 654.19789, "r": 361.97821, "b": 662.5228999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-38 Specifying a new check constraint on the CUSTOMERS table"}, {"label": "picture", "id": 7, "page_no": 76, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 63.89818572998047, "t": 169.34371948242188, "r": 543.365966796875, "b": 650.5548095703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9851900935173035, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 76, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.33963012695312, "t": 754.6822509765625, "r": 523.59357, "b": 764.0059204101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9542582035064697, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 76, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6194458007812, "t": 754.259521484375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9045737385749817, "cells": [{"id": 1, "text": "61", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "61"}]}}, {"page_no": 77, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "62 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "4.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.18027, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 4-39 shows that there is now a check constraint on the CUSTOMERS table that ", "bbox": {"l": 147.97366, "t": 71.50867000000005, "r": 535.55554, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "prevents any masked data from being updated to the CUSTOMER_EMAIL column.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 517.11249, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Figure 4-39 Check constraint on the CUSTOMERS table", "bbox": {"l": 64.800003, "t": 387.43799, "r": 293.78427, "b": 395.763, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "5.", "bbox": {"l": 136.8, "t": 413.38873, "r": 145.20113, "b": 422.60172, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Create all the other check constraints that are associated to each of the masks on the ", "bbox": {"l": 148.00148, "t": 413.38873, "r": 531.54163, "b": 422.60172, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "CUSTOMERS table. After this is done, these constraints should look like the ones that are ", "bbox": {"l": 151.20016, "t": 425.38855, "r": 547.27332, "b": 434.6015300000001, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "shown in Figure 4-40.", "bbox": {"l": 151.20016, "t": 437.38837, "r": 247.20359999999997, "b": 446.60135, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Figure 4-40 List of check constraints on the CUSTOMERS table", "bbox": {"l": 64.800003, "t": 603.37799, "r": 322.73096, "b": 611.703, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.20623016357422, "t": 754.3389282226562, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9119569659233093, "cells": [{"id": 0, "text": "62 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.26509857177734, "t": 754.6648559570312, "r": 334.42142, "b": 763.939453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9529509544372559, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 135.84481811523438, "t": 70.5638198852539, "r": 535.55554, "b": 92.91973876953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9732864499092102, "cells": [{"id": 2, "text": "4.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.18027, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 4-39 shows that there is now a check constraint on the CUSTOMERS table that ", "bbox": {"l": 147.97366, "t": 71.50867000000005, "r": 535.55554, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "prevents any masked data from being updated to the CUSTOMER_EMAIL column.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 517.11249, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.23225402832031, "t": 386.5921325683594, "r": 294.2088317871094, "b": 395.9991455078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9511763453483582, "cells": [{"id": 5, "text": "Figure 4-39 Check constraint on the CUSTOMERS table", "bbox": {"l": 64.800003, "t": 387.43799, "r": 293.78427, "b": 395.763, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 136.3284149169922, "t": 412.6619567871094, "r": 547.27332, "b": 447.14215087890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9731178879737854, "cells": [{"id": 6, "text": "5.", "bbox": {"l": 136.8, "t": 413.38873, "r": 145.20113, "b": 422.60172, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Create all the other check constraints that are associated to each of the masks on the ", "bbox": {"l": 148.00148, "t": 413.38873, "r": 531.54163, "b": 422.60172, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "CUSTOMERS table. After this is done, these constraints should look like the ones that are ", "bbox": {"l": 151.20016, "t": 425.38855, "r": 547.27332, "b": 434.6015300000001, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "shown in Figure 4-40.", "bbox": {"l": 151.20016, "t": 437.38837, "r": 247.20359999999997, "b": 446.60135, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 64.24510955810547, "t": 602.5396118164062, "r": 323.0049743652344, "b": 611.9821166992188, "coord_origin": "TOPLEFT"}, "confidence": 0.9424684047698975, "cells": [{"id": 10, "text": "Figure 4-40 List of check constraints on the CUSTOMERS table", "bbox": {"l": 64.800003, "t": 603.37799, "r": 322.73096, "b": 611.703, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "picture", "bbox": {"l": 63.67375564575195, "t": 107.14707946777344, "r": 546.8531494140625, "b": 383.6925354003906, "coord_origin": "TOPLEFT"}, "confidence": 0.9858631491661072, "cells": []}, {"id": 7, "label": "picture", "bbox": {"l": 63.88129806518555, "t": 461.2124938964844, "r": 543.3204956054688, "b": 600.3211669921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9816429018974304, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 77, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.20623016357422, "t": 754.3389282226562, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9119569659233093, "cells": [{"id": 0, "text": "62 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "62"}, {"label": "page_footer", "id": 1, "page_no": 77, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.26509857177734, "t": 754.6648559570312, "r": 334.42142, "b": 763.939453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9529509544372559, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "list_item", "id": 2, "page_no": 77, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.84481811523438, "t": 70.5638198852539, "r": 535.55554, "b": 92.91973876953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9732864499092102, "cells": [{"id": 2, "text": "4.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.18027, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 4-39 shows that there is now a check constraint on the CUSTOMERS table that ", "bbox": {"l": 147.97366, "t": 71.50867000000005, "r": 535.55554, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "prevents any masked data from being updated to the CUSTOMER_EMAIL column.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 517.11249, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "4. Figure 4-39 shows that there is now a check constraint on the CUSTOMERS table that prevents any masked data from being updated to the CUSTOMER_EMAIL column."}, {"label": "caption", "id": 3, "page_no": 77, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.23225402832031, "t": 386.5921325683594, "r": 294.2088317871094, "b": 395.9991455078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9511763453483582, "cells": [{"id": 5, "text": "Figure 4-39 Check constraint on the CUSTOMERS table", "bbox": {"l": 64.800003, "t": 387.43799, "r": 293.78427, "b": 395.763, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-39 Check constraint on the CUSTOMERS table"}, {"label": "list_item", "id": 4, "page_no": 77, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.3284149169922, "t": 412.6619567871094, "r": 547.27332, "b": 447.14215087890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9731178879737854, "cells": [{"id": 6, "text": "5.", "bbox": {"l": 136.8, "t": 413.38873, "r": 145.20113, "b": 422.60172, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Create all the other check constraints that are associated to each of the masks on the ", "bbox": {"l": 148.00148, "t": 413.38873, "r": 531.54163, "b": 422.60172, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "CUSTOMERS table. After this is done, these constraints should look like the ones that are ", "bbox": {"l": 151.20016, "t": 425.38855, "r": 547.27332, "b": 434.6015300000001, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "shown in Figure 4-40.", "bbox": {"l": 151.20016, "t": 437.38837, "r": 247.20359999999997, "b": 446.60135, "coord_origin": "TOPLEFT"}}]}, "text": "5. Create all the other check constraints that are associated to each of the masks on the CUSTOMERS table. After this is done, these constraints should look like the ones that are shown in Figure 4-40."}, {"label": "caption", "id": 5, "page_no": 77, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.24510955810547, "t": 602.5396118164062, "r": 323.0049743652344, "b": 611.9821166992188, "coord_origin": "TOPLEFT"}, "confidence": 0.9424684047698975, "cells": [{"id": 10, "text": "Figure 4-40 List of check constraints on the CUSTOMERS table", "bbox": {"l": 64.800003, "t": 603.37799, "r": 322.73096, "b": 611.703, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-40 List of check constraints on the CUSTOMERS table"}, {"label": "picture", "id": 6, "page_no": 77, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 63.67375564575195, "t": 107.14707946777344, "r": 546.8531494140625, "b": 383.6925354003906, "coord_origin": "TOPLEFT"}, "confidence": 0.9858631491661072, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 7, "page_no": 77, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 63.88129806518555, "t": 461.2124938964844, "r": 543.3204956054688, "b": 600.3211669921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9816429018974304, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 77, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.84481811523438, "t": 70.5638198852539, "r": 535.55554, "b": 92.91973876953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9732864499092102, "cells": [{"id": 2, "text": "4.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.18027, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 4-39 shows that there is now a check constraint on the CUSTOMERS table that ", "bbox": {"l": 147.97366, "t": 71.50867000000005, "r": 535.55554, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "prevents any masked data from being updated to the CUSTOMER_EMAIL column.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 517.11249, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "4. Figure 4-39 shows that there is now a check constraint on the CUSTOMERS table that prevents any masked data from being updated to the CUSTOMER_EMAIL column."}, {"label": "caption", "id": 3, "page_no": 77, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.23225402832031, "t": 386.5921325683594, "r": 294.2088317871094, "b": 395.9991455078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9511763453483582, "cells": [{"id": 5, "text": "Figure 4-39 Check constraint on the CUSTOMERS table", "bbox": {"l": 64.800003, "t": 387.43799, "r": 293.78427, "b": 395.763, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-39 Check constraint on the CUSTOMERS table"}, {"label": "list_item", "id": 4, "page_no": 77, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.3284149169922, "t": 412.6619567871094, "r": 547.27332, "b": 447.14215087890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9731178879737854, "cells": [{"id": 6, "text": "5.", "bbox": {"l": 136.8, "t": 413.38873, "r": 145.20113, "b": 422.60172, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Create all the other check constraints that are associated to each of the masks on the ", "bbox": {"l": 148.00148, "t": 413.38873, "r": 531.54163, "b": 422.60172, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "CUSTOMERS table. After this is done, these constraints should look like the ones that are ", "bbox": {"l": 151.20016, "t": 425.38855, "r": 547.27332, "b": 434.6015300000001, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "shown in Figure 4-40.", "bbox": {"l": 151.20016, "t": 437.38837, "r": 247.20359999999997, "b": 446.60135, "coord_origin": "TOPLEFT"}}]}, "text": "5. Create all the other check constraints that are associated to each of the masks on the CUSTOMERS table. After this is done, these constraints should look like the ones that are shown in Figure 4-40."}, {"label": "caption", "id": 5, "page_no": 77, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.24510955810547, "t": 602.5396118164062, "r": 323.0049743652344, "b": 611.9821166992188, "coord_origin": "TOPLEFT"}, "confidence": 0.9424684047698975, "cells": [{"id": 10, "text": "Figure 4-40 List of check constraints on the CUSTOMERS table", "bbox": {"l": 64.800003, "t": 603.37799, "r": 322.73096, "b": 611.703, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-40 List of check constraints on the CUSTOMERS table"}, {"label": "picture", "id": 6, "page_no": 77, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 63.67375564575195, "t": 107.14707946777344, "r": 546.8531494140625, "b": 383.6925354003906, "coord_origin": "TOPLEFT"}, "confidence": 0.9858631491661072, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 7, "page_no": 77, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 63.88129806518555, "t": 461.2124938964844, "r": 543.3204956054688, "b": 600.3211669921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9816429018974304, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 77, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.20623016357422, "t": 754.3389282226562, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9119569659233093, "cells": [{"id": 0, "text": "62 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "62"}, {"label": "page_footer", "id": 1, "page_no": 77, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.26509857177734, "t": 754.6648559570312, "r": 334.42142, "b": 763.939453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9529509544372559, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 78, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "63", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "4.3.8", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 93.937424, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Activating row and column access control", "bbox": {"l": 97.57959, "t": 71.33471999999995, "r": 360.40594, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "You are now ready to activate RCAC on all three tables in this example. Complete the ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 516.22321, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "following steps:", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 204.65848, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "1.", "bbox": {"l": 136.8, "t": 126.52808000000005, "r": 145.15627, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Start by enabling RCAC on the CUSTOMERS table. From System i Navigator, right-click ", "bbox": {"l": 147.94167, "t": 126.52808000000005, "r": 542.70996, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "the ", "bbox": {"l": 151.20016, "t": 138.52788999999996, "r": 167.81343, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CUSTOMERS", "bbox": {"l": 167.88017, "t": 138.52788999999996, "r": 231.29152, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": " table and select ", "bbox": {"l": 231.30048000000002, "t": 138.52788999999996, "r": 306.71658, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Definition", "bbox": {"l": 306.66083, "t": 138.52788999999996, "r": 352.81055, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": ". As shown in Figure 4-41, make sure that ", "bbox": {"l": 352.80054, "t": 138.52788999999996, "r": 540.20892, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "you select ", "bbox": {"l": 151.20018, "t": 150.52770999999996, "r": 198.73924, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Row access control", "bbox": {"l": 198.78009, "t": 150.52770999999996, "r": 292.3035, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": " and ", "bbox": {"l": 292.32043, "t": 150.52770999999996, "r": 314.64279, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Column access control", "bbox": {"l": 314.52026, "t": 150.52770999999996, "r": 424.31631, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ". Click ", "bbox": {"l": 424.32031, "t": 150.52770999999996, "r": 454.07382, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "OK", "bbox": {"l": 454.0798, "t": 150.52770999999996, "r": 469.1214, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ".", "bbox": {"l": 469.07956, "t": 150.52770999999996, "r": 471.84845, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Figure 4-41 Enabling RCAC on the CUSTOMERS table", "bbox": {"l": 136.8, "t": 336.31799, "r": 361.49582, "b": 344.64301, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "2.", "bbox": {"l": 136.8, "t": 362.26874, "r": 145.19742, "b": 371.48172000000005, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Enable RCAC on the ACCOUNTS table. Right-click the ", "bbox": {"l": 147.99657, "t": 362.26874, "r": 396.99893, "b": 371.48172000000005, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ACCOUNTS ", "bbox": {"l": 397.01996, "t": 362.26874, "r": 456.02994, "b": 371.48172000000005, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "table and select ", "bbox": {"l": 456.00009000000006, "t": 362.26874, "r": 528.64832, "b": 371.48172000000005, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Definition", "bbox": {"l": 151.2002, "t": 374.26855, "r": 197.23233, "b": 383.48154, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": ". As shown Figure 4-42, make sure that you select ", "bbox": {"l": 197.28014, "t": 374.26855, "r": 421.7308, "b": 383.48154, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Row access control", "bbox": {"l": 421.73969, "t": 374.26855, "r": 515.25806, "b": 383.48154, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": " and ", "bbox": {"l": 515.21924, "t": 374.26855, "r": 537.47778, "b": 383.48154, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Column access control", "bbox": {"l": 151.19919, "t": 386.26837, "r": 261.00516, "b": 395.48135, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": ". Click ", "bbox": {"l": 260.93945, "t": 386.26837, "r": 290.77264, "b": 395.48135, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "OK", "bbox": {"l": 290.7597, "t": 386.26837, "r": 305.68176, "b": 395.48135, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": ".", "bbox": {"l": 305.75946, "t": 386.26837, "r": 308.52835, "b": 395.48135, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Figure 4-42 Enabling RCAC on ACCOUNTS", "bbox": {"l": 136.8, "t": 576.7979, "r": 317.85483, "b": 585.12291, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 214.27894592285156, "t": 754.7236328125, "r": 523.59357, "b": 764.05419921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9573627710342407, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.566162109375, "t": 754.30859375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9157171249389648, "cells": [{"id": 1, "text": "63", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.11198425292969, "t": 70.35449981689453, "r": 360.40594, "b": 83.69813537597656, "coord_origin": "TOPLEFT"}, "confidence": 0.9612811207771301, "cells": [{"id": 2, "text": "4.3.8", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 93.937424, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Activating row and column access control", "bbox": {"l": 97.57959, "t": 71.33471999999995, "r": 360.40594, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 136.0153350830078, "t": 96.60980987548828, "r": 516.22321, "b": 118.89674377441406, "coord_origin": "TOPLEFT"}, "confidence": 0.9671575427055359, "cells": [{"id": 4, "text": "You are now ready to activate RCAC on all three tables in this example. Complete the ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 516.22321, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "following steps:", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 204.65848, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 136.8, "t": 125.977294921875, "r": 542.70996, "b": 160.520263671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9787286520004272, "cells": [{"id": 6, "text": "1.", "bbox": {"l": 136.8, "t": 126.52808000000005, "r": 145.15627, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Start by enabling RCAC on the CUSTOMERS table. From System i Navigator, right-click ", "bbox": {"l": 147.94167, "t": 126.52808000000005, "r": 542.70996, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "the ", "bbox": {"l": 151.20016, "t": 138.52788999999996, "r": 167.81343, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CUSTOMERS", "bbox": {"l": 167.88017, "t": 138.52788999999996, "r": 231.29152, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": " table and select ", "bbox": {"l": 231.30048000000002, "t": 138.52788999999996, "r": 306.71658, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Definition", "bbox": {"l": 306.66083, "t": 138.52788999999996, "r": 352.81055, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": ". As shown in Figure 4-41, make sure that ", "bbox": {"l": 352.80054, "t": 138.52788999999996, "r": 540.20892, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "you select ", "bbox": {"l": 151.20018, "t": 150.52770999999996, "r": 198.73924, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Row access control", "bbox": {"l": 198.78009, "t": 150.52770999999996, "r": 292.3035, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": " and ", "bbox": {"l": 292.32043, "t": 150.52770999999996, "r": 314.64279, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Column access control", "bbox": {"l": 314.52026, "t": 150.52770999999996, "r": 424.31631, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ". Click ", "bbox": {"l": 424.32031, "t": 150.52770999999996, "r": 454.07382, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "OK", "bbox": {"l": 454.0798, "t": 150.52770999999996, "r": 469.1214, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ".", "bbox": {"l": 469.07956, "t": 150.52770999999996, "r": 471.84845, "b": 159.74072, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 136.109375, "t": 335.1785888671875, "r": 361.76947021484375, "b": 344.71710205078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9520919322967529, "cells": [{"id": 20, "text": "Figure 4-41 Enabling RCAC on the CUSTOMERS table", "bbox": {"l": 136.8, "t": 336.31799, "r": 361.49582, "b": 344.64301, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.86691284179688, "t": 361.27203369140625, "r": 537.47778, "b": 395.48135, "coord_origin": "TOPLEFT"}, "confidence": 0.969711422920227, "cells": [{"id": 21, "text": "2.", "bbox": {"l": 136.8, "t": 362.26874, "r": 145.19742, "b": 371.48172000000005, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Enable RCAC on the ACCOUNTS table. Right-click the ", "bbox": {"l": 147.99657, "t": 362.26874, "r": 396.99893, "b": 371.48172000000005, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ACCOUNTS ", "bbox": {"l": 397.01996, "t": 362.26874, "r": 456.02994, "b": 371.48172000000005, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "table and select ", "bbox": {"l": 456.00009000000006, "t": 362.26874, "r": 528.64832, "b": 371.48172000000005, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Definition", "bbox": {"l": 151.2002, "t": 374.26855, "r": 197.23233, "b": 383.48154, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": ". As shown Figure 4-42, make sure that you select ", "bbox": {"l": 197.28014, "t": 374.26855, "r": 421.7308, "b": 383.48154, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Row access control", "bbox": {"l": 421.73969, "t": 374.26855, "r": 515.25806, "b": 383.48154, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": " and ", "bbox": {"l": 515.21924, "t": 374.26855, "r": 537.47778, "b": 383.48154, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Column access control", "bbox": {"l": 151.19919, "t": 386.26837, "r": 261.00516, "b": 395.48135, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": ". Click ", "bbox": {"l": 260.93945, "t": 386.26837, "r": 290.77264, "b": 395.48135, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "OK", "bbox": {"l": 290.7597, "t": 386.26837, "r": 305.68176, "b": 395.48135, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": ".", "bbox": {"l": 305.75946, "t": 386.26837, "r": 308.52835, "b": 395.48135, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "caption", "bbox": {"l": 136.17703247070312, "t": 575.9801635742188, "r": 318.5569763183594, "b": 585.77587890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9541999101638794, "cells": [{"id": 33, "text": "Figure 4-42 Enabling RCAC on ACCOUNTS", "bbox": {"l": 136.8, "t": 576.7979, "r": 317.85483, "b": 585.12291, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 135.82846069335938, "t": 410.0953674316406, "r": 534.9657592773438, "b": 572.7034912109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9863720536231995, "cells": []}, {"id": 9, "label": "picture", "bbox": {"l": 135.9375457763672, "t": 173.51026916503906, "r": 546.1521606445312, "b": 332.9508361816406, "coord_origin": "TOPLEFT"}, "confidence": 0.9859922528266907, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 78, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.27894592285156, "t": 754.7236328125, "r": 523.59357, "b": 764.05419921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9573627710342407, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 78, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.566162109375, "t": 754.30859375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9157171249389648, "cells": [{"id": 1, "text": "63", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "63"}, {"label": "section_header", "id": 2, "page_no": 78, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.11198425292969, "t": 70.35449981689453, "r": 360.40594, "b": 83.69813537597656, "coord_origin": "TOPLEFT"}, "confidence": 0.9612811207771301, "cells": [{"id": 2, "text": "4.3.8", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 93.937424, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Activating row and column access control", "bbox": {"l": 97.57959, "t": 71.33471999999995, "r": 360.40594, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "4.3.8 Activating row and column access control"}, {"label": "text", "id": 3, "page_no": 78, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.0153350830078, "t": 96.60980987548828, "r": 516.22321, "b": 118.89674377441406, "coord_origin": "TOPLEFT"}, "confidence": 0.9671575427055359, "cells": [{"id": 4, "text": "You are now ready to activate RCAC on all three tables in this example. Complete the ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 516.22321, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "following steps:", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 204.65848, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}]}, "text": "You are now ready to activate RCAC on all three tables in this example. Complete the following steps:"}, {"label": "list_item", "id": 4, "page_no": 78, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.8, "t": 125.977294921875, "r": 542.70996, "b": 160.520263671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9787286520004272, "cells": [{"id": 6, "text": "1.", "bbox": {"l": 136.8, "t": 126.52808000000005, "r": 145.15627, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Start by enabling RCAC on the CUSTOMERS table. From System i Navigator, right-click ", "bbox": {"l": 147.94167, "t": 126.52808000000005, "r": 542.70996, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "the ", "bbox": {"l": 151.20016, "t": 138.52788999999996, "r": 167.81343, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CUSTOMERS", "bbox": {"l": 167.88017, "t": 138.52788999999996, "r": 231.29152, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": " table and select ", "bbox": {"l": 231.30048000000002, "t": 138.52788999999996, "r": 306.71658, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Definition", "bbox": {"l": 306.66083, "t": 138.52788999999996, "r": 352.81055, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": ". As shown in Figure 4-41, make sure that ", "bbox": {"l": 352.80054, "t": 138.52788999999996, "r": 540.20892, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "you select ", "bbox": {"l": 151.20018, "t": 150.52770999999996, "r": 198.73924, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Row access control", "bbox": {"l": 198.78009, "t": 150.52770999999996, "r": 292.3035, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": " and ", "bbox": {"l": 292.32043, "t": 150.52770999999996, "r": 314.64279, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Column access control", "bbox": {"l": 314.52026, "t": 150.52770999999996, "r": 424.31631, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ". Click ", "bbox": {"l": 424.32031, "t": 150.52770999999996, "r": 454.07382, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "OK", "bbox": {"l": 454.0798, "t": 150.52770999999996, "r": 469.1214, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ".", "bbox": {"l": 469.07956, "t": 150.52770999999996, "r": 471.84845, "b": 159.74072, "coord_origin": "TOPLEFT"}}]}, "text": "1. Start by enabling RCAC on the CUSTOMERS table. From System i Navigator, right-click the CUSTOMERS table and select Definition . As shown in Figure 4-41, make sure that you select Row access control and Column access control . Click OK ."}, {"label": "caption", "id": 5, "page_no": 78, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.109375, "t": 335.1785888671875, "r": 361.76947021484375, "b": 344.71710205078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9520919322967529, "cells": [{"id": 20, "text": "Figure 4-41 Enabling RCAC on the CUSTOMERS table", "bbox": {"l": 136.8, "t": 336.31799, "r": 361.49582, "b": 344.64301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-41 Enabling RCAC on the CUSTOMERS table"}, {"label": "list_item", "id": 6, "page_no": 78, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.86691284179688, "t": 361.27203369140625, "r": 537.47778, "b": 395.48135, "coord_origin": "TOPLEFT"}, "confidence": 0.969711422920227, "cells": [{"id": 21, "text": "2.", "bbox": {"l": 136.8, "t": 362.26874, "r": 145.19742, "b": 371.48172000000005, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Enable RCAC on the ACCOUNTS table. Right-click the ", "bbox": {"l": 147.99657, "t": 362.26874, "r": 396.99893, "b": 371.48172000000005, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ACCOUNTS ", "bbox": {"l": 397.01996, "t": 362.26874, "r": 456.02994, "b": 371.48172000000005, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "table and select ", "bbox": {"l": 456.00009000000006, "t": 362.26874, "r": 528.64832, "b": 371.48172000000005, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Definition", "bbox": {"l": 151.2002, "t": 374.26855, "r": 197.23233, "b": 383.48154, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": ". As shown Figure 4-42, make sure that you select ", "bbox": {"l": 197.28014, "t": 374.26855, "r": 421.7308, "b": 383.48154, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Row access control", "bbox": {"l": 421.73969, "t": 374.26855, "r": 515.25806, "b": 383.48154, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": " and ", "bbox": {"l": 515.21924, "t": 374.26855, "r": 537.47778, "b": 383.48154, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Column access control", "bbox": {"l": 151.19919, "t": 386.26837, "r": 261.00516, "b": 395.48135, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": ". Click ", "bbox": {"l": 260.93945, "t": 386.26837, "r": 290.77264, "b": 395.48135, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "OK", "bbox": {"l": 290.7597, "t": 386.26837, "r": 305.68176, "b": 395.48135, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": ".", "bbox": {"l": 305.75946, "t": 386.26837, "r": 308.52835, "b": 395.48135, "coord_origin": "TOPLEFT"}}]}, "text": "2. Enable RCAC on the ACCOUNTS table. Right-click the ACCOUNTS table and select Definition . As shown Figure 4-42, make sure that you select Row access control and Column access control . Click OK ."}, {"label": "caption", "id": 7, "page_no": 78, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 136.17703247070312, "t": 575.9801635742188, "r": 318.5569763183594, "b": 585.77587890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9541999101638794, "cells": [{"id": 33, "text": "Figure 4-42 Enabling RCAC on ACCOUNTS", "bbox": {"l": 136.8, "t": 576.7979, "r": 317.85483, "b": 585.12291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-42 Enabling RCAC on ACCOUNTS"}, {"label": "picture", "id": 8, "page_no": 78, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 135.82846069335938, "t": 410.0953674316406, "r": 534.9657592773438, "b": 572.7034912109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9863720536231995, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 9, "page_no": 78, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 135.9375457763672, "t": 173.51026916503906, "r": 546.1521606445312, "b": 332.9508361816406, "coord_origin": "TOPLEFT"}, "confidence": 0.9859922528266907, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "section_header", "id": 2, "page_no": 78, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.11198425292969, "t": 70.35449981689453, "r": 360.40594, "b": 83.69813537597656, "coord_origin": "TOPLEFT"}, "confidence": 0.9612811207771301, "cells": [{"id": 2, "text": "4.3.8", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 93.937424, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Activating row and column access control", "bbox": {"l": 97.57959, "t": 71.33471999999995, "r": 360.40594, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "4.3.8 Activating row and column access control"}, {"label": "text", "id": 3, "page_no": 78, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.0153350830078, "t": 96.60980987548828, "r": 516.22321, "b": 118.89674377441406, "coord_origin": "TOPLEFT"}, "confidence": 0.9671575427055359, "cells": [{"id": 4, "text": "You are now ready to activate RCAC on all three tables in this example. Complete the ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 516.22321, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "following steps:", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 204.65848, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}]}, "text": "You are now ready to activate RCAC on all three tables in this example. Complete the following steps:"}, {"label": "list_item", "id": 4, "page_no": 78, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.8, "t": 125.977294921875, "r": 542.70996, "b": 160.520263671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9787286520004272, "cells": [{"id": 6, "text": "1.", "bbox": {"l": 136.8, "t": 126.52808000000005, "r": 145.15627, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Start by enabling RCAC on the CUSTOMERS table. From System i Navigator, right-click ", "bbox": {"l": 147.94167, "t": 126.52808000000005, "r": 542.70996, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "the ", "bbox": {"l": 151.20016, "t": 138.52788999999996, "r": 167.81343, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CUSTOMERS", "bbox": {"l": 167.88017, "t": 138.52788999999996, "r": 231.29152, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": " table and select ", "bbox": {"l": 231.30048000000002, "t": 138.52788999999996, "r": 306.71658, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Definition", "bbox": {"l": 306.66083, "t": 138.52788999999996, "r": 352.81055, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": ". As shown in Figure 4-41, make sure that ", "bbox": {"l": 352.80054, "t": 138.52788999999996, "r": 540.20892, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "you select ", "bbox": {"l": 151.20018, "t": 150.52770999999996, "r": 198.73924, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Row access control", "bbox": {"l": 198.78009, "t": 150.52770999999996, "r": 292.3035, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": " and ", "bbox": {"l": 292.32043, "t": 150.52770999999996, "r": 314.64279, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Column access control", "bbox": {"l": 314.52026, "t": 150.52770999999996, "r": 424.31631, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ". Click ", "bbox": {"l": 424.32031, "t": 150.52770999999996, "r": 454.07382, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "OK", "bbox": {"l": 454.0798, "t": 150.52770999999996, "r": 469.1214, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ".", "bbox": {"l": 469.07956, "t": 150.52770999999996, "r": 471.84845, "b": 159.74072, "coord_origin": "TOPLEFT"}}]}, "text": "1. Start by enabling RCAC on the CUSTOMERS table. From System i Navigator, right-click the CUSTOMERS table and select Definition . As shown in Figure 4-41, make sure that you select Row access control and Column access control . Click OK ."}, {"label": "caption", "id": 5, "page_no": 78, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.109375, "t": 335.1785888671875, "r": 361.76947021484375, "b": 344.71710205078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9520919322967529, "cells": [{"id": 20, "text": "Figure 4-41 Enabling RCAC on the CUSTOMERS table", "bbox": {"l": 136.8, "t": 336.31799, "r": 361.49582, "b": 344.64301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-41 Enabling RCAC on the CUSTOMERS table"}, {"label": "list_item", "id": 6, "page_no": 78, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.86691284179688, "t": 361.27203369140625, "r": 537.47778, "b": 395.48135, "coord_origin": "TOPLEFT"}, "confidence": 0.969711422920227, "cells": [{"id": 21, "text": "2.", "bbox": {"l": 136.8, "t": 362.26874, "r": 145.19742, "b": 371.48172000000005, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Enable RCAC on the ACCOUNTS table. Right-click the ", "bbox": {"l": 147.99657, "t": 362.26874, "r": 396.99893, "b": 371.48172000000005, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ACCOUNTS ", "bbox": {"l": 397.01996, "t": 362.26874, "r": 456.02994, "b": 371.48172000000005, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "table and select ", "bbox": {"l": 456.00009000000006, "t": 362.26874, "r": 528.64832, "b": 371.48172000000005, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Definition", "bbox": {"l": 151.2002, "t": 374.26855, "r": 197.23233, "b": 383.48154, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": ". As shown Figure 4-42, make sure that you select ", "bbox": {"l": 197.28014, "t": 374.26855, "r": 421.7308, "b": 383.48154, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Row access control", "bbox": {"l": 421.73969, "t": 374.26855, "r": 515.25806, "b": 383.48154, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": " and ", "bbox": {"l": 515.21924, "t": 374.26855, "r": 537.47778, "b": 383.48154, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Column access control", "bbox": {"l": 151.19919, "t": 386.26837, "r": 261.00516, "b": 395.48135, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": ". Click ", "bbox": {"l": 260.93945, "t": 386.26837, "r": 290.77264, "b": 395.48135, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "OK", "bbox": {"l": 290.7597, "t": 386.26837, "r": 305.68176, "b": 395.48135, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": ".", "bbox": {"l": 305.75946, "t": 386.26837, "r": 308.52835, "b": 395.48135, "coord_origin": "TOPLEFT"}}]}, "text": "2. Enable RCAC on the ACCOUNTS table. Right-click the ACCOUNTS table and select Definition . As shown Figure 4-42, make sure that you select Row access control and Column access control . Click OK ."}, {"label": "caption", "id": 7, "page_no": 78, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 136.17703247070312, "t": 575.9801635742188, "r": 318.5569763183594, "b": 585.77587890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9541999101638794, "cells": [{"id": 33, "text": "Figure 4-42 Enabling RCAC on ACCOUNTS", "bbox": {"l": 136.8, "t": 576.7979, "r": 317.85483, "b": 585.12291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-42 Enabling RCAC on ACCOUNTS"}, {"label": "picture", "id": 8, "page_no": 78, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 135.82846069335938, "t": 410.0953674316406, "r": 534.9657592773438, "b": 572.7034912109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9863720536231995, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 9, "page_no": 78, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 135.9375457763672, "t": 173.51026916503906, "r": 546.1521606445312, "b": 332.9508361816406, "coord_origin": "TOPLEFT"}, "confidence": 0.9859922528266907, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 78, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.27894592285156, "t": 754.7236328125, "r": 523.59357, "b": 764.05419921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9573627710342407, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 78, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.566162109375, "t": 754.30859375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9157171249389648, "cells": [{"id": 1, "text": "63", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "63"}]}}, {"page_no": 79, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "64 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "3.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.18999, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Enable RCAC on the TRANSACTIONS table. Right-click the ", "bbox": {"l": 147.98666, "t": 71.50867000000005, "r": 419.13211, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "TRANSACTIONS ", "bbox": {"l": 419.21979, "t": 71.50867000000005, "r": 501.02628, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "table and ", "bbox": {"l": 500.99936, "t": 71.50867000000005, "r": 544.67987, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "select ", "bbox": {"l": 151.19919, "t": 83.50847999999996, "r": 180.07423, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Definition", "bbox": {"l": 180.05928, "t": 83.50847999999996, "r": 226.23584, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": ". As shown in Figure 4-43, make sure that you select ", "bbox": {"l": 226.13922, "t": 83.50847999999996, "r": 461.255, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Row access ", "bbox": {"l": 461.15839, "t": 83.50847999999996, "r": 520.97821, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "control", "bbox": {"l": 151.19821, "t": 95.50829999999996, "r": 184.90685, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": ". Click ", "bbox": {"l": 184.85803, "t": 95.50829999999996, "r": 214.66931000000002, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "OK", "bbox": {"l": 214.67826999999997, "t": 95.50829999999996, "r": 229.71985999999998, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": ".", "bbox": {"l": 229.61826999999997, "t": 95.50829999999996, "r": 232.38715000000002, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Figure 4-43 Enabling RCAC on TRANSACTIONS", "bbox": {"l": 136.8, "t": 280.15799, "r": 337.80872, "b": 288.483, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "4.3.9", "bbox": {"l": 64.800003, "t": 308.99472, "r": 94.076729, "b": 320.9827, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Reviewing row permissions", "bbox": {"l": 97.73632, "t": 308.99472, "r": 271.11932, "b": 320.9827, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "This section displays all the row permissions after enabling RCAC. Complete the following ", "bbox": {"l": 136.8, "t": 335.14871, "r": 535.83545, "b": 344.36169, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "steps:", "bbox": {"l": 136.80099, "t": 347.14853, "r": 163.44998, "b": 356.36151, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "1.", "bbox": {"l": 136.80099, "t": 364.12833, "r": 145.24223, "b": 373.3413100000001, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "From System i Navigator, click ", "bbox": {"l": 148.05597, "t": 364.12833, "r": 287.52866, "b": 373.3413100000001, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Row Permissions", "bbox": {"l": 287.58145, "t": 364.12833, "r": 370.44568, "b": 373.3413100000001, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": ", as shown in Figure 4-44. Three ", "bbox": {"l": 370.32117, "t": 364.12833, "r": 516.80585, "b": 373.3413100000001, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "additional Row Permissions are added (QIBM_DEFAULT*). There is one per each row ", "bbox": {"l": 151.20117, "t": 376.12814, "r": 533.23096, "b": 385.34113, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "permission.", "bbox": {"l": 151.20117, "t": 388.12796, "r": 202.5141, "b": 397.34093999999993, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Figure 4-44 Row permissions after enabling RCAC", "bbox": {"l": 64.800003, "t": 584.6579, "r": 271.20956, "b": 592.98291, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.15714263916016, "t": 754.3335571289062, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9127570390701294, "cells": [{"id": 0, "text": "64 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.25228881835938, "t": 754.6705932617188, "r": 334.42142, "b": 763.9555053710938, "coord_origin": "TOPLEFT"}, "confidence": 0.9553424715995789, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 136.11422729492188, "t": 70.50455474853516, "r": 544.67987, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9770053625106812, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.18999, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Enable RCAC on the TRANSACTIONS table. Right-click the ", "bbox": {"l": 147.98666, "t": 71.50867000000005, "r": 419.13211, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "TRANSACTIONS ", "bbox": {"l": 419.21979, "t": 71.50867000000005, "r": 501.02628, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "table and ", "bbox": {"l": 500.99936, "t": 71.50867000000005, "r": 544.67987, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "select ", "bbox": {"l": 151.19919, "t": 83.50847999999996, "r": 180.07423, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Definition", "bbox": {"l": 180.05928, "t": 83.50847999999996, "r": 226.23584, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": ". As shown in Figure 4-43, make sure that you select ", "bbox": {"l": 226.13922, "t": 83.50847999999996, "r": 461.255, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Row access ", "bbox": {"l": 461.15839, "t": 83.50847999999996, "r": 520.97821, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "control", "bbox": {"l": 151.19821, "t": 95.50829999999996, "r": 184.90685, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": ". Click ", "bbox": {"l": 184.85803, "t": 95.50829999999996, "r": 214.66931000000002, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "OK", "bbox": {"l": 214.67826999999997, "t": 95.50829999999996, "r": 229.71985999999998, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": ".", "bbox": {"l": 229.61826999999997, "t": 95.50829999999996, "r": 232.38715000000002, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.18548583984375, "t": 279.2968444824219, "r": 338.2870788574219, "b": 289.08013916015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9507059454917908, "cells": [{"id": 14, "text": "Figure 4-43 Enabling RCAC on TRANSACTIONS", "bbox": {"l": 136.8, "t": 280.15799, "r": 337.80872, "b": 288.483, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 64.14816284179688, "t": 307.58905029296875, "r": 271.11932, "b": 320.9827, "coord_origin": "TOPLEFT"}, "confidence": 0.9649584889411926, "cells": [{"id": 15, "text": "4.3.9", "bbox": {"l": 64.800003, "t": 308.99472, "r": 94.076729, "b": 320.9827, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Reviewing row permissions", "bbox": {"l": 97.73632, "t": 308.99472, "r": 271.11932, "b": 320.9827, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.9355010986328, "t": 333.9635009765625, "r": 535.83545, "b": 356.36151, "coord_origin": "TOPLEFT"}, "confidence": 0.9637021422386169, "cells": [{"id": 17, "text": "This section displays all the row permissions after enabling RCAC. Complete the following ", "bbox": {"l": 136.8, "t": 335.14871, "r": 535.83545, "b": 344.36169, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "steps:", "bbox": {"l": 136.80099, "t": 347.14853, "r": 163.44998, "b": 356.36151, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 136.80099, "t": 363.3408508300781, "r": 533.23096, "b": 397.5221252441406, "coord_origin": "TOPLEFT"}, "confidence": 0.9786288738250732, "cells": [{"id": 19, "text": "1.", "bbox": {"l": 136.80099, "t": 364.12833, "r": 145.24223, "b": 373.3413100000001, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "From System i Navigator, click ", "bbox": {"l": 148.05597, "t": 364.12833, "r": 287.52866, "b": 373.3413100000001, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Row Permissions", "bbox": {"l": 287.58145, "t": 364.12833, "r": 370.44568, "b": 373.3413100000001, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": ", as shown in Figure 4-44. Three ", "bbox": {"l": 370.32117, "t": 364.12833, "r": 516.80585, "b": 373.3413100000001, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "additional Row Permissions are added (QIBM_DEFAULT*). There is one per each row ", "bbox": {"l": 151.20117, "t": 376.12814, "r": 533.23096, "b": 385.34113, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "permission.", "bbox": {"l": 151.20117, "t": 388.12796, "r": 202.5141, "b": 397.34093999999993, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "caption", "bbox": {"l": 64.30838775634766, "t": 584.093017578125, "r": 271.8835754394531, "b": 593.4585571289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9465454816818237, "cells": [{"id": 25, "text": "Figure 4-44 Row permissions after enabling RCAC", "bbox": {"l": 64.800003, "t": 584.6579, "r": 271.20956, "b": 592.98291, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 136.07981872558594, "t": 119.14159393310547, "r": 547.2720947265625, "b": 276.12908935546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9865725040435791, "cells": []}, {"id": 9, "label": "picture", "bbox": {"l": 63.96348190307617, "t": 412.05908203125, "r": 546.8929443359375, "b": 581.2628784179688, "coord_origin": "TOPLEFT"}, "confidence": 0.9827678799629211, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 79, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.15714263916016, "t": 754.3335571289062, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9127570390701294, "cells": [{"id": 0, "text": "64 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "64"}, {"label": "page_footer", "id": 1, "page_no": 79, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.25228881835938, "t": 754.6705932617188, "r": 334.42142, "b": 763.9555053710938, "coord_origin": "TOPLEFT"}, "confidence": 0.9553424715995789, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "list_item", "id": 2, "page_no": 79, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.11422729492188, "t": 70.50455474853516, "r": 544.67987, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9770053625106812, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.18999, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Enable RCAC on the TRANSACTIONS table. Right-click the ", "bbox": {"l": 147.98666, "t": 71.50867000000005, "r": 419.13211, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "TRANSACTIONS ", "bbox": {"l": 419.21979, "t": 71.50867000000005, "r": 501.02628, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "table and ", "bbox": {"l": 500.99936, "t": 71.50867000000005, "r": 544.67987, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "select ", "bbox": {"l": 151.19919, "t": 83.50847999999996, "r": 180.07423, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Definition", "bbox": {"l": 180.05928, "t": 83.50847999999996, "r": 226.23584, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": ". As shown in Figure 4-43, make sure that you select ", "bbox": {"l": 226.13922, "t": 83.50847999999996, "r": 461.255, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Row access ", "bbox": {"l": 461.15839, "t": 83.50847999999996, "r": 520.97821, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "control", "bbox": {"l": 151.19821, "t": 95.50829999999996, "r": 184.90685, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": ". Click ", "bbox": {"l": 184.85803, "t": 95.50829999999996, "r": 214.66931000000002, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "OK", "bbox": {"l": 214.67826999999997, "t": 95.50829999999996, "r": 229.71985999999998, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": ".", "bbox": {"l": 229.61826999999997, "t": 95.50829999999996, "r": 232.38715000000002, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}]}, "text": "3. Enable RCAC on the TRANSACTIONS table. Right-click the TRANSACTIONS table and select Definition . As shown in Figure 4-43, make sure that you select Row access control . Click OK ."}, {"label": "caption", "id": 3, "page_no": 79, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.18548583984375, "t": 279.2968444824219, "r": 338.2870788574219, "b": 289.08013916015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9507059454917908, "cells": [{"id": 14, "text": "Figure 4-43 Enabling RCAC on TRANSACTIONS", "bbox": {"l": 136.8, "t": 280.15799, "r": 337.80872, "b": 288.483, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-43 Enabling RCAC on TRANSACTIONS"}, {"label": "section_header", "id": 4, "page_no": 79, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.14816284179688, "t": 307.58905029296875, "r": 271.11932, "b": 320.9827, "coord_origin": "TOPLEFT"}, "confidence": 0.9649584889411926, "cells": [{"id": 15, "text": "4.3.9", "bbox": {"l": 64.800003, "t": 308.99472, "r": 94.076729, "b": 320.9827, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Reviewing row permissions", "bbox": {"l": 97.73632, "t": 308.99472, "r": 271.11932, "b": 320.9827, "coord_origin": "TOPLEFT"}}]}, "text": "4.3.9 Reviewing row permissions"}, {"label": "text", "id": 5, "page_no": 79, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.9355010986328, "t": 333.9635009765625, "r": 535.83545, "b": 356.36151, "coord_origin": "TOPLEFT"}, "confidence": 0.9637021422386169, "cells": [{"id": 17, "text": "This section displays all the row permissions after enabling RCAC. Complete the following ", "bbox": {"l": 136.8, "t": 335.14871, "r": 535.83545, "b": 344.36169, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "steps:", "bbox": {"l": 136.80099, "t": 347.14853, "r": 163.44998, "b": 356.36151, "coord_origin": "TOPLEFT"}}]}, "text": "This section displays all the row permissions after enabling RCAC. Complete the following steps:"}, {"label": "list_item", "id": 6, "page_no": 79, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.80099, "t": 363.3408508300781, "r": 533.23096, "b": 397.5221252441406, "coord_origin": "TOPLEFT"}, "confidence": 0.9786288738250732, "cells": [{"id": 19, "text": "1.", "bbox": {"l": 136.80099, "t": 364.12833, "r": 145.24223, "b": 373.3413100000001, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "From System i Navigator, click ", "bbox": {"l": 148.05597, "t": 364.12833, "r": 287.52866, "b": 373.3413100000001, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Row Permissions", "bbox": {"l": 287.58145, "t": 364.12833, "r": 370.44568, "b": 373.3413100000001, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": ", as shown in Figure 4-44. Three ", "bbox": {"l": 370.32117, "t": 364.12833, "r": 516.80585, "b": 373.3413100000001, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "additional Row Permissions are added (QIBM_DEFAULT*). There is one per each row ", "bbox": {"l": 151.20117, "t": 376.12814, "r": 533.23096, "b": 385.34113, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "permission.", "bbox": {"l": 151.20117, "t": 388.12796, "r": 202.5141, "b": 397.34093999999993, "coord_origin": "TOPLEFT"}}]}, "text": "1. From System i Navigator, click Row Permissions , as shown in Figure 4-44. Three additional Row Permissions are added (QIBM_DEFAULT*). There is one per each row permission."}, {"label": "caption", "id": 7, "page_no": 79, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 64.30838775634766, "t": 584.093017578125, "r": 271.8835754394531, "b": 593.4585571289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9465454816818237, "cells": [{"id": 25, "text": "Figure 4-44 Row permissions after enabling RCAC", "bbox": {"l": 64.800003, "t": 584.6579, "r": 271.20956, "b": 592.98291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-44 Row permissions after enabling RCAC"}, {"label": "picture", "id": 8, "page_no": 79, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 136.07981872558594, "t": 119.14159393310547, "r": 547.2720947265625, "b": 276.12908935546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9865725040435791, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 9, "page_no": 79, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 63.96348190307617, "t": 412.05908203125, "r": 546.8929443359375, "b": 581.2628784179688, "coord_origin": "TOPLEFT"}, "confidence": 0.9827678799629211, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 79, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.11422729492188, "t": 70.50455474853516, "r": 544.67987, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9770053625106812, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.18999, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Enable RCAC on the TRANSACTIONS table. Right-click the ", "bbox": {"l": 147.98666, "t": 71.50867000000005, "r": 419.13211, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "TRANSACTIONS ", "bbox": {"l": 419.21979, "t": 71.50867000000005, "r": 501.02628, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "table and ", "bbox": {"l": 500.99936, "t": 71.50867000000005, "r": 544.67987, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "select ", "bbox": {"l": 151.19919, "t": 83.50847999999996, "r": 180.07423, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Definition", "bbox": {"l": 180.05928, "t": 83.50847999999996, "r": 226.23584, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": ". As shown in Figure 4-43, make sure that you select ", "bbox": {"l": 226.13922, "t": 83.50847999999996, "r": 461.255, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Row access ", "bbox": {"l": 461.15839, "t": 83.50847999999996, "r": 520.97821, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "control", "bbox": {"l": 151.19821, "t": 95.50829999999996, "r": 184.90685, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": ". Click ", "bbox": {"l": 184.85803, "t": 95.50829999999996, "r": 214.66931000000002, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "OK", "bbox": {"l": 214.67826999999997, "t": 95.50829999999996, "r": 229.71985999999998, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": ".", "bbox": {"l": 229.61826999999997, "t": 95.50829999999996, "r": 232.38715000000002, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}]}, "text": "3. Enable RCAC on the TRANSACTIONS table. Right-click the TRANSACTIONS table and select Definition . As shown in Figure 4-43, make sure that you select Row access control . Click OK ."}, {"label": "caption", "id": 3, "page_no": 79, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.18548583984375, "t": 279.2968444824219, "r": 338.2870788574219, "b": 289.08013916015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9507059454917908, "cells": [{"id": 14, "text": "Figure 4-43 Enabling RCAC on TRANSACTIONS", "bbox": {"l": 136.8, "t": 280.15799, "r": 337.80872, "b": 288.483, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-43 Enabling RCAC on TRANSACTIONS"}, {"label": "section_header", "id": 4, "page_no": 79, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.14816284179688, "t": 307.58905029296875, "r": 271.11932, "b": 320.9827, "coord_origin": "TOPLEFT"}, "confidence": 0.9649584889411926, "cells": [{"id": 15, "text": "4.3.9", "bbox": {"l": 64.800003, "t": 308.99472, "r": 94.076729, "b": 320.9827, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Reviewing row permissions", "bbox": {"l": 97.73632, "t": 308.99472, "r": 271.11932, "b": 320.9827, "coord_origin": "TOPLEFT"}}]}, "text": "4.3.9 Reviewing row permissions"}, {"label": "text", "id": 5, "page_no": 79, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.9355010986328, "t": 333.9635009765625, "r": 535.83545, "b": 356.36151, "coord_origin": "TOPLEFT"}, "confidence": 0.9637021422386169, "cells": [{"id": 17, "text": "This section displays all the row permissions after enabling RCAC. Complete the following ", "bbox": {"l": 136.8, "t": 335.14871, "r": 535.83545, "b": 344.36169, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "steps:", "bbox": {"l": 136.80099, "t": 347.14853, "r": 163.44998, "b": 356.36151, "coord_origin": "TOPLEFT"}}]}, "text": "This section displays all the row permissions after enabling RCAC. Complete the following steps:"}, {"label": "list_item", "id": 6, "page_no": 79, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.80099, "t": 363.3408508300781, "r": 533.23096, "b": 397.5221252441406, "coord_origin": "TOPLEFT"}, "confidence": 0.9786288738250732, "cells": [{"id": 19, "text": "1.", "bbox": {"l": 136.80099, "t": 364.12833, "r": 145.24223, "b": 373.3413100000001, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "From System i Navigator, click ", "bbox": {"l": 148.05597, "t": 364.12833, "r": 287.52866, "b": 373.3413100000001, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Row Permissions", "bbox": {"l": 287.58145, "t": 364.12833, "r": 370.44568, "b": 373.3413100000001, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": ", as shown in Figure 4-44. Three ", "bbox": {"l": 370.32117, "t": 364.12833, "r": 516.80585, "b": 373.3413100000001, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "additional Row Permissions are added (QIBM_DEFAULT*). There is one per each row ", "bbox": {"l": 151.20117, "t": 376.12814, "r": 533.23096, "b": 385.34113, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "permission.", "bbox": {"l": 151.20117, "t": 388.12796, "r": 202.5141, "b": 397.34093999999993, "coord_origin": "TOPLEFT"}}]}, "text": "1. From System i Navigator, click Row Permissions , as shown in Figure 4-44. Three additional Row Permissions are added (QIBM_DEFAULT*). There is one per each row permission."}, {"label": "caption", "id": 7, "page_no": 79, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 64.30838775634766, "t": 584.093017578125, "r": 271.8835754394531, "b": 593.4585571289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9465454816818237, "cells": [{"id": 25, "text": "Figure 4-44 Row permissions after enabling RCAC", "bbox": {"l": 64.800003, "t": 584.6579, "r": 271.20956, "b": 592.98291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-44 Row permissions after enabling RCAC"}, {"label": "picture", "id": 8, "page_no": 79, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 136.07981872558594, "t": 119.14159393310547, "r": 547.2720947265625, "b": 276.12908935546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9865725040435791, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 9, "page_no": 79, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 63.96348190307617, "t": 412.05908203125, "r": 546.8929443359375, "b": 581.2628784179688, "coord_origin": "TOPLEFT"}, "confidence": 0.9827678799629211, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 79, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.15714263916016, "t": 754.3335571289062, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9127570390701294, "cells": [{"id": 0, "text": "64 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "64"}, {"label": "page_footer", "id": 1, "page_no": 79, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.25228881835938, "t": 754.6705932617188, "r": 334.42142, "b": 763.9555053710938, "coord_origin": "TOPLEFT"}, "confidence": 0.9553424715995789, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 80, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "65", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.21153, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Look at one of the row permission definitions by right-clicking it and selecting ", "bbox": {"l": 148.0155, "t": 71.50903000000005, "r": 492.7739, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Definition", "bbox": {"l": 492.65945, "t": 71.50903000000005, "r": 538.80908, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": ", ", "bbox": {"l": 538.73938, "t": 71.50903000000005, "r": 544.37872, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "as shown in Figure 4-45.", "bbox": {"l": 151.19977, "t": 83.50885000000017, "r": 260.45697, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Figure 4-45 Selecting row permission definition", "bbox": {"l": 136.8, "t": 242.05804, "r": 328.69974, "b": 250.38300000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "3.", "bbox": {"l": 136.8, "t": 268.06866, "r": 145.16658, "b": 277.28168000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "A window opens, as shown in Figure 4-46. Take note of the nonsensical search condition ", "bbox": {"l": 147.95543, "t": 268.06866, "r": 546.08038, "b": 277.28168000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "(0=1) of the QIBM_DEFAULT row permission. This permission is ORed with all of the ", "bbox": {"l": 151.20016, "t": 280.06851, "r": 528.18719, "b": 289.28149, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "others and it ensures that if someone does not meet any of the criteria from the row ", "bbox": {"l": 151.20016, "t": 292.06832999999995, "r": 522.29791, "b": 301.28131, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "permission then this condition is tested, and because it is false the access is denied.", "bbox": {"l": 151.20016, "t": 304.06815000000006, "r": 523.24811, "b": 313.28113, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Figure 4-46 Search condition of the QIBM_DEFAULT row permission", "bbox": {"l": 64.800003, "t": 598.758, "r": 342.44904, "b": 607.0830100000001, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 214.26358032226562, "t": 754.7083740234375, "r": 523.59357, "b": 764.0580444335938, "coord_origin": "TOPLEFT"}, "confidence": 0.9547041058540344, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.6220703125, "t": 754.29638671875, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9117289185523987, "cells": [{"id": 1, "text": "65", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 135.80770874023438, "t": 70.57334899902344, "r": 544.37872, "b": 92.76964569091797, "coord_origin": "TOPLEFT"}, "confidence": 0.965424120426178, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.21153, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Look at one of the row permission definitions by right-clicking it and selecting ", "bbox": {"l": 148.0155, "t": 71.50903000000005, "r": 492.7739, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Definition", "bbox": {"l": 492.65945, "t": 71.50903000000005, "r": 538.80908, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": ", ", "bbox": {"l": 538.73938, "t": 71.50903000000005, "r": 544.37872, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "as shown in Figure 4-45.", "bbox": {"l": 151.19977, "t": 83.50885000000017, "r": 260.45697, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 135.82278442382812, "t": 241.54090881347656, "r": 328.7805480957031, "b": 250.71495056152344, "coord_origin": "TOPLEFT"}, "confidence": 0.9502364993095398, "cells": [{"id": 7, "text": "Figure 4-45 Selecting row permission definition", "bbox": {"l": 136.8, "t": 242.05804, "r": 328.69974, "b": 250.38300000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 136.20486450195312, "t": 267.31622314453125, "r": 546.08038, "b": 313.33673095703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9789031744003296, "cells": [{"id": 8, "text": "3.", "bbox": {"l": 136.8, "t": 268.06866, "r": 145.16658, "b": 277.28168000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "A window opens, as shown in Figure 4-46. Take note of the nonsensical search condition ", "bbox": {"l": 147.95543, "t": 268.06866, "r": 546.08038, "b": 277.28168000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "(0=1) of the QIBM_DEFAULT row permission. This permission is ORed with all of the ", "bbox": {"l": 151.20016, "t": 280.06851, "r": 528.18719, "b": 289.28149, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "others and it ensures that if someone does not meet any of the criteria from the row ", "bbox": {"l": 151.20016, "t": 292.06832999999995, "r": 522.29791, "b": 301.28131, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "permission then this condition is tested, and because it is false the access is denied.", "bbox": {"l": 151.20016, "t": 304.06815000000006, "r": 523.24811, "b": 313.28113, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 64.38289642333984, "t": 598.0608520507812, "r": 342.9576110839844, "b": 607.2294921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9494208693504333, "cells": [{"id": 13, "text": "Figure 4-46 Search condition of the QIBM_DEFAULT row permission", "bbox": {"l": 64.800003, "t": 598.758, "r": 342.44904, "b": 607.0830100000001, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "picture", "bbox": {"l": 136.34481811523438, "t": 107.48910522460938, "r": 467.5279846191406, "b": 238.44802856445312, "coord_origin": "TOPLEFT"}, "confidence": 0.9859717488288879, "cells": []}, {"id": 7, "label": "picture", "bbox": {"l": 63.714664459228516, "t": 327.1063232421875, "r": 502.0154113769531, "b": 595.8734741210938, "coord_origin": "TOPLEFT"}, "confidence": 0.9849998950958252, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 80, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.26358032226562, "t": 754.7083740234375, "r": 523.59357, "b": 764.0580444335938, "coord_origin": "TOPLEFT"}, "confidence": 0.9547041058540344, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 80, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6220703125, "t": 754.29638671875, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9117289185523987, "cells": [{"id": 1, "text": "65", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "65"}, {"label": "list_item", "id": 2, "page_no": 80, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.80770874023438, "t": 70.57334899902344, "r": 544.37872, "b": 92.76964569091797, "coord_origin": "TOPLEFT"}, "confidence": 0.965424120426178, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.21153, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Look at one of the row permission definitions by right-clicking it and selecting ", "bbox": {"l": 148.0155, "t": 71.50903000000005, "r": 492.7739, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Definition", "bbox": {"l": 492.65945, "t": 71.50903000000005, "r": 538.80908, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": ", ", "bbox": {"l": 538.73938, "t": 71.50903000000005, "r": 544.37872, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "as shown in Figure 4-45.", "bbox": {"l": 151.19977, "t": 83.50885000000017, "r": 260.45697, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "2. Look at one of the row permission definitions by right-clicking it and selecting Definition , as shown in Figure 4-45."}, {"label": "caption", "id": 3, "page_no": 80, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.82278442382812, "t": 241.54090881347656, "r": 328.7805480957031, "b": 250.71495056152344, "coord_origin": "TOPLEFT"}, "confidence": 0.9502364993095398, "cells": [{"id": 7, "text": "Figure 4-45 Selecting row permission definition", "bbox": {"l": 136.8, "t": 242.05804, "r": 328.69974, "b": 250.38300000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-45 Selecting row permission definition"}, {"label": "list_item", "id": 4, "page_no": 80, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.20486450195312, "t": 267.31622314453125, "r": 546.08038, "b": 313.33673095703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9789031744003296, "cells": [{"id": 8, "text": "3.", "bbox": {"l": 136.8, "t": 268.06866, "r": 145.16658, "b": 277.28168000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "A window opens, as shown in Figure 4-46. Take note of the nonsensical search condition ", "bbox": {"l": 147.95543, "t": 268.06866, "r": 546.08038, "b": 277.28168000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "(0=1) of the QIBM_DEFAULT row permission. This permission is ORed with all of the ", "bbox": {"l": 151.20016, "t": 280.06851, "r": 528.18719, "b": 289.28149, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "others and it ensures that if someone does not meet any of the criteria from the row ", "bbox": {"l": 151.20016, "t": 292.06832999999995, "r": 522.29791, "b": 301.28131, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "permission then this condition is tested, and because it is false the access is denied.", "bbox": {"l": 151.20016, "t": 304.06815000000006, "r": 523.24811, "b": 313.28113, "coord_origin": "TOPLEFT"}}]}, "text": "3. A window opens, as shown in Figure 4-46. Take note of the nonsensical search condition (0=1) of the QIBM_DEFAULT row permission. This permission is ORed with all of the others and it ensures that if someone does not meet any of the criteria from the row permission then this condition is tested, and because it is false the access is denied."}, {"label": "caption", "id": 5, "page_no": 80, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.38289642333984, "t": 598.0608520507812, "r": 342.9576110839844, "b": 607.2294921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9494208693504333, "cells": [{"id": 13, "text": "Figure 4-46 Search condition of the QIBM_DEFAULT row permission", "bbox": {"l": 64.800003, "t": 598.758, "r": 342.44904, "b": 607.0830100000001, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-46 Search condition of the QIBM_DEFAULT row permission"}, {"label": "picture", "id": 6, "page_no": 80, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 136.34481811523438, "t": 107.48910522460938, "r": 467.5279846191406, "b": 238.44802856445312, "coord_origin": "TOPLEFT"}, "confidence": 0.9859717488288879, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 7, "page_no": 80, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 63.714664459228516, "t": 327.1063232421875, "r": 502.0154113769531, "b": 595.8734741210938, "coord_origin": "TOPLEFT"}, "confidence": 0.9849998950958252, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 80, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.80770874023438, "t": 70.57334899902344, "r": 544.37872, "b": 92.76964569091797, "coord_origin": "TOPLEFT"}, "confidence": 0.965424120426178, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.21153, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Look at one of the row permission definitions by right-clicking it and selecting ", "bbox": {"l": 148.0155, "t": 71.50903000000005, "r": 492.7739, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Definition", "bbox": {"l": 492.65945, "t": 71.50903000000005, "r": 538.80908, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": ", ", "bbox": {"l": 538.73938, "t": 71.50903000000005, "r": 544.37872, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "as shown in Figure 4-45.", "bbox": {"l": 151.19977, "t": 83.50885000000017, "r": 260.45697, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "2. Look at one of the row permission definitions by right-clicking it and selecting Definition , as shown in Figure 4-45."}, {"label": "caption", "id": 3, "page_no": 80, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.82278442382812, "t": 241.54090881347656, "r": 328.7805480957031, "b": 250.71495056152344, "coord_origin": "TOPLEFT"}, "confidence": 0.9502364993095398, "cells": [{"id": 7, "text": "Figure 4-45 Selecting row permission definition", "bbox": {"l": 136.8, "t": 242.05804, "r": 328.69974, "b": 250.38300000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-45 Selecting row permission definition"}, {"label": "list_item", "id": 4, "page_no": 80, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.20486450195312, "t": 267.31622314453125, "r": 546.08038, "b": 313.33673095703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9789031744003296, "cells": [{"id": 8, "text": "3.", "bbox": {"l": 136.8, "t": 268.06866, "r": 145.16658, "b": 277.28168000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "A window opens, as shown in Figure 4-46. Take note of the nonsensical search condition ", "bbox": {"l": 147.95543, "t": 268.06866, "r": 546.08038, "b": 277.28168000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "(0=1) of the QIBM_DEFAULT row permission. This permission is ORed with all of the ", "bbox": {"l": 151.20016, "t": 280.06851, "r": 528.18719, "b": 289.28149, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "others and it ensures that if someone does not meet any of the criteria from the row ", "bbox": {"l": 151.20016, "t": 292.06832999999995, "r": 522.29791, "b": 301.28131, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "permission then this condition is tested, and because it is false the access is denied.", "bbox": {"l": 151.20016, "t": 304.06815000000006, "r": 523.24811, "b": 313.28113, "coord_origin": "TOPLEFT"}}]}, "text": "3. A window opens, as shown in Figure 4-46. Take note of the nonsensical search condition (0=1) of the QIBM_DEFAULT row permission. This permission is ORed with all of the others and it ensures that if someone does not meet any of the criteria from the row permission then this condition is tested, and because it is false the access is denied."}, {"label": "caption", "id": 5, "page_no": 80, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.38289642333984, "t": 598.0608520507812, "r": 342.9576110839844, "b": 607.2294921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9494208693504333, "cells": [{"id": 13, "text": "Figure 4-46 Search condition of the QIBM_DEFAULT row permission", "bbox": {"l": 64.800003, "t": 598.758, "r": 342.44904, "b": 607.0830100000001, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-46 Search condition of the QIBM_DEFAULT row permission"}, {"label": "picture", "id": 6, "page_no": 80, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 136.34481811523438, "t": 107.48910522460938, "r": 467.5279846191406, "b": 238.44802856445312, "coord_origin": "TOPLEFT"}, "confidence": 0.9859717488288879, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 7, "page_no": 80, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 63.714664459228516, "t": 327.1063232421875, "r": 502.0154113769531, "b": 595.8734741210938, "coord_origin": "TOPLEFT"}, "confidence": 0.9849998950958252, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 80, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.26358032226562, "t": 754.7083740234375, "r": 523.59357, "b": 764.0580444335938, "coord_origin": "TOPLEFT"}, "confidence": 0.9547041058540344, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 80, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6220703125, "t": 754.29638671875, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9117289185523987, "cells": [{"id": 1, "text": "65", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "65"}]}}, {"page_no": 81, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "66 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "4.3.10", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 101.29621, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Demonstrating data access with RCAC", "bbox": {"l": 104.94582, "t": 71.33471999999995, "r": 347.13361, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "You are now ready to test the RCAC definitions. Run the following SQL statements with each ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 547.25568, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "type of user (DBE, SECURITY, TELLER, ADMIN, and WEBUSER):", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 433.09406, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 126.67749000000003, "r": 141.78, "b": 135.45227, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "A ", "bbox": {"l": 151.20016, "t": 126.52808000000005, "r": 160.64622, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "SELECT", "bbox": {"l": 160.62033, "t": 126.67749000000003, "r": 190.61983, "b": 135.50207999999998, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": " statement that returns the SESSION_USER.", "bbox": {"l": 190.61986, "t": 126.52808000000005, "r": 390.82486, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "GLYPH", "bbox": {"l": 136.8, "t": 143.65729, "r": 141.78, "b": 152.43206999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "A ", "bbox": {"l": 151.20016, "t": 143.50787000000003, "r": 160.64622, "b": 152.72089000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "SELECT", "bbox": {"l": 160.62033, "t": 143.65729, "r": 190.61983, "b": 152.48186999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": " statement that counts the customers from the CUSTOMER table. There are 90 ", "bbox": {"l": 190.61986, "t": 143.50787000000003, "r": 543.19196, "b": 152.72089000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "customers in the CUSTOMER table.", "bbox": {"l": 151.20016, "t": 155.50769000000003, "r": 310.90085, "b": 164.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 172.63689999999997, "r": 141.78, "b": 181.41168000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "A simple ", "bbox": {"l": 151.20016, "t": 172.48748999999998, "r": 192.29114, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "SELECT", "bbox": {"l": 192.30011, "t": 172.63689999999997, "r": 222.23987, "b": 181.46149000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": " statement that returns the following output from the CUSTOMERS table ", "bbox": {"l": 222.29964, "t": 172.48748999999998, "r": 543.64008, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ordered by customer_name:", "bbox": {"l": 151.19919, "t": 184.4873, "r": 276.00995, "b": 193.70032000000003, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "-c", "bbox": {"l": 152.03882, "t": 201.52686000000006, "r": 178.60014, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "u", "bbox": {"l": 170.57835, "t": 201.52686000000006, "r": 184.13789, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "s", "bbox": {"l": 176.15794, "t": 201.52686000000006, "r": 189.15973, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "t", "bbox": {"l": 181.13794, "t": 201.52686000000006, "r": 191.9286, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "o", "bbox": {"l": 183.89786, "t": 201.52686000000006, "r": 197.4574, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "m", "bbox": {"l": 189.47745, "t": 201.52686000000006, "r": 205.79591, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "e", "bbox": {"l": 197.81696, "t": 201.52686000000006, "r": 211.3765, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "r", "bbox": {"l": 203.33678, "t": 201.52686000000006, "r": 214.67525, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "_", "bbox": {"l": 206.69728, "t": 201.52686000000006, "r": 220.25682, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "i", "bbox": {"l": 212.2171, "t": 201.52686000000006, "r": 222.45001, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "d", "bbox": {"l": 214.43719000000002, "t": 201.52686000000006, "r": 227.99673, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "-", "bbox": {"l": 152.03882, "t": 213.52666999999997, "r": 157.61443, "b": 222.73969, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "customer_name", "bbox": {"l": 165.59836, "t": 213.52666999999997, "r": 237.24663000000004, "b": 222.73969, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "-", "bbox": {"l": 152.03882, "t": 225.52648999999997, "r": 157.61443, "b": 234.73950000000002, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "customer_email", "bbox": {"l": 165.59836, "t": 225.52648999999997, "r": 236.13907, "b": 234.73950000000002, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "-c", "bbox": {"l": 152.03882, "t": 237.52630999999997, "r": 178.60014, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "u", "bbox": {"l": 170.57835, "t": 237.52630999999997, "r": 184.13789, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "s", "bbox": {"l": 176.15794, "t": 237.52630999999997, "r": 189.15973, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "t", "bbox": {"l": 181.13794, "t": 237.52630999999997, "r": 191.9286, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "o", "bbox": {"l": 183.89786, "t": 237.52630999999997, "r": 197.4574, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "m", "bbox": {"l": 189.47745, "t": 237.52630999999997, "r": 205.79591, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "e", "bbox": {"l": 197.81696, "t": 237.52630999999997, "r": 211.3765, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "r", "bbox": {"l": 203.33678, "t": 237.52630999999997, "r": 214.67525, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "_", "bbox": {"l": 206.69728, "t": 237.52630999999997, "r": 220.25682, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "t", "bbox": {"l": 212.2171, "t": 237.52630999999997, "r": 223.00777, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "a", "bbox": {"l": 215.03677, "t": 237.52630999999997, "r": 228.59631000000002, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "x", "bbox": {"l": 220.55659, "t": 237.52630999999997, "r": 233.55837999999997, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "_", "bbox": {"l": 225.59636, "t": 237.52630999999997, "r": 239.15590000000003, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "i", "bbox": {"l": 231.11618, "t": 237.52630999999997, "r": 241.34908999999996, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "d", "bbox": {"l": 233.33627, "t": 237.52630999999997, "r": 246.89580999999998, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "-", "bbox": {"l": 152.03882, "t": 249.52612, "r": 157.61044, "b": 258.73914, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "customer_drivers_license_number", "bbox": {"l": 165.59836, "t": 249.52612, "r": 318.23041, "b": 258.73914, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Data access for a DBE user with RCAC", "bbox": {"l": 136.8, "t": 275.36401, "r": 357.22922, "b": 286.46402, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "To test a DBE (MCAIN) user, complete the following steps:", "bbox": {"l": 136.8, "t": 290.50872999999996, "r": 394.54984, "b": 299.72171, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "1.", "bbox": {"l": 136.8, "t": 307.48853, "r": 145.21211, "b": 316.70151, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Confirm that the user is the user of the session by running the first SQL statement, as ", "bbox": {"l": 148.01613, "t": 307.48853, "r": 531.48303, "b": 316.70151, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "shown in Figure 4-47. In this example, MCAIN is the DBE user.", "bbox": {"l": 151.20016, "t": 319.48834, "r": 429.04044, "b": 328.70131999999995, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "Figure 4-47 DBE session user", "bbox": {"l": 136.8, "t": 441.67801, "r": 261.65161, "b": 450.00302, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "2.", "bbox": {"l": 136.8, "t": 467.62872, "r": 145.20607, "b": 476.84171, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "The number of rows that the DBE user MCAIN can see is shown in Figure 4-48.", "bbox": {"l": 148.00812, "t": 467.62872, "r": 503.15964, "b": 476.84171, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Figure 4-48 Number of rows that DBE user can see in the CUSTOMERS table", "bbox": {"l": 136.8, "t": 627.7979, "r": 451.75512999999995, "b": 636.12291, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.22357940673828, "t": 754.4584350585938, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9105024337768555, "cells": [{"id": 0, "text": "66 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.37715148925781, "t": 754.6815795898438, "r": 334.42142, "b": 763.9869384765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9468215703964233, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.1228256225586, "t": 70.26021575927734, "r": 347.13361, "b": 83.70108795166016, "coord_origin": "TOPLEFT"}, "confidence": 0.9626623392105103, "cells": [{"id": 2, "text": "4.3.10", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 101.29621, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Demonstrating data access with RCAC", "bbox": {"l": 104.94582, "t": 71.33471999999995, "r": 347.13361, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.73379516601562, "t": 96.64435577392578, "r": 547.25568, "b": 119.03988647460938, "coord_origin": "TOPLEFT"}, "confidence": 0.9718443751335144, "cells": [{"id": 4, "text": "You are now ready to test the RCAC definitions. Run the following SQL statements with each ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 547.25568, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "type of user (DBE, SECURITY, TELLER, ADMIN, and WEBUSER):", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 433.09406, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 135.537353515625, "t": 125.70227813720703, "r": 390.82486, "b": 135.94515991210938, "coord_origin": "TOPLEFT"}, "confidence": 0.9467165470123291, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 126.67749000000003, "r": 141.78, "b": 135.45227, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "A ", "bbox": {"l": 151.20016, "t": 126.52808000000005, "r": 160.64622, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "SELECT", "bbox": {"l": 160.62033, "t": 126.67749000000003, "r": 190.61983, "b": 135.50207999999998, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": " statement that returns the SESSION_USER.", "bbox": {"l": 190.61986, "t": 126.52808000000005, "r": 390.82486, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 135.6352081298828, "t": 142.6588897705078, "r": 543.19196, "b": 164.72069999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9719513654708862, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.8, "t": 143.65729, "r": 141.78, "b": 152.43206999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "A ", "bbox": {"l": 151.20016, "t": 143.50787000000003, "r": 160.64622, "b": 152.72089000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "SELECT", "bbox": {"l": 160.62033, "t": 143.65729, "r": 190.61983, "b": 152.48186999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": " statement that counts the customers from the CUSTOMER table. There are 90 ", "bbox": {"l": 190.61986, "t": 143.50787000000003, "r": 543.19196, "b": 152.72089000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "customers in the CUSTOMER table.", "bbox": {"l": 151.20016, "t": 155.50769000000003, "r": 310.90085, "b": 164.72069999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.70932006835938, "t": 171.48867797851562, "r": 543.64008, "b": 193.7998046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9690733551979065, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 172.63689999999997, "r": 141.78, "b": 181.41168000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "A simple ", "bbox": {"l": 151.20016, "t": 172.48748999999998, "r": 192.29114, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "SELECT", "bbox": {"l": 192.30011, "t": 172.63689999999997, "r": 222.23987, "b": 181.46149000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": " statement that returns the following output from the CUSTOMERS table ", "bbox": {"l": 222.29964, "t": 172.48748999999998, "r": 543.64008, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ordered by customer_name:", "bbox": {"l": 151.19919, "t": 184.4873, "r": 276.00995, "b": 193.70032000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 151.35504150390625, "t": 200.90966796875, "r": 227.99673, "b": 210.73987, "coord_origin": "TOPLEFT"}, "confidence": 0.914056658744812, "cells": [{"id": 20, "text": "-c", "bbox": {"l": 152.03882, "t": 201.52686000000006, "r": 178.60014, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "u", "bbox": {"l": 170.57835, "t": 201.52686000000006, "r": 184.13789, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "s", "bbox": {"l": 176.15794, "t": 201.52686000000006, "r": 189.15973, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "t", "bbox": {"l": 181.13794, "t": 201.52686000000006, "r": 191.9286, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "o", "bbox": {"l": 183.89786, "t": 201.52686000000006, "r": 197.4574, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "m", "bbox": {"l": 189.47745, "t": 201.52686000000006, "r": 205.79591, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "e", "bbox": {"l": 197.81696, "t": 201.52686000000006, "r": 211.3765, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "r", "bbox": {"l": 203.33678, "t": 201.52686000000006, "r": 214.67525, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "_", "bbox": {"l": 206.69728, "t": 201.52686000000006, "r": 220.25682, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "i", "bbox": {"l": 212.2171, "t": 201.52686000000006, "r": 222.45001, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "d", "bbox": {"l": 214.43719000000002, "t": 201.52686000000006, "r": 227.99673, "b": 210.73987, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 151.4617462158203, "t": 213.36526489257812, "r": 237.24663000000004, "b": 222.73969, "coord_origin": "TOPLEFT"}, "confidence": 0.908424973487854, "cells": [{"id": 31, "text": "-", "bbox": {"l": 152.03882, "t": 213.52666999999997, "r": 157.61443, "b": 222.73969, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "customer_name", "bbox": {"l": 165.59836, "t": 213.52666999999997, "r": 237.24663000000004, "b": 222.73969, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 151.39413452148438, "t": 224.96202087402344, "r": 236.13907, "b": 234.73950000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9008285403251648, "cells": [{"id": 33, "text": "-", "bbox": {"l": 152.03882, "t": 225.52648999999997, "r": 157.61443, "b": 234.73950000000002, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "customer_email", "bbox": {"l": 165.59836, "t": 225.52648999999997, "r": 236.13907, "b": 234.73950000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 151.38189697265625, "t": 237.14512634277344, "r": 246.89580999999998, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9172974228858948, "cells": [{"id": 35, "text": "-c", "bbox": {"l": 152.03882, "t": 237.52630999999997, "r": 178.60014, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "u", "bbox": {"l": 170.57835, "t": 237.52630999999997, "r": 184.13789, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "s", "bbox": {"l": 176.15794, "t": 237.52630999999997, "r": 189.15973, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "t", "bbox": {"l": 181.13794, "t": 237.52630999999997, "r": 191.9286, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "o", "bbox": {"l": 183.89786, "t": 237.52630999999997, "r": 197.4574, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "m", "bbox": {"l": 189.47745, "t": 237.52630999999997, "r": 205.79591, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "e", "bbox": {"l": 197.81696, "t": 237.52630999999997, "r": 211.3765, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "r", "bbox": {"l": 203.33678, "t": 237.52630999999997, "r": 214.67525, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "_", "bbox": {"l": 206.69728, "t": 237.52630999999997, "r": 220.25682, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "t", "bbox": {"l": 212.2171, "t": 237.52630999999997, "r": 223.00777, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "a", "bbox": {"l": 215.03677, "t": 237.52630999999997, "r": 228.59631000000002, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "x", "bbox": {"l": 220.55659, "t": 237.52630999999997, "r": 233.55837999999997, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "_", "bbox": {"l": 225.59636, "t": 237.52630999999997, "r": 239.15590000000003, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "i", "bbox": {"l": 231.11618, "t": 237.52630999999997, "r": 241.34908999999996, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "d", "bbox": {"l": 233.33627, "t": 237.52630999999997, "r": 246.89580999999998, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 151.4001007080078, "t": 248.64210510253906, "r": 318.3563537597656, "b": 258.73914, "coord_origin": "TOPLEFT"}, "confidence": 0.9473636746406555, "cells": [{"id": 50, "text": "-", "bbox": {"l": 152.03882, "t": 249.52612, "r": 157.61044, "b": 258.73914, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "customer_drivers_license_number", "bbox": {"l": 165.59836, "t": 249.52612, "r": 318.23041, "b": 258.73914, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "section_header", "bbox": {"l": 136.71405029296875, "t": 274.4760437011719, "r": 357.22922, "b": 286.46402, "coord_origin": "TOPLEFT"}, "confidence": 0.9395599961280823, "cells": [{"id": 52, "text": "Data access for a DBE user with RCAC", "bbox": {"l": 136.8, "t": 275.36401, "r": 357.22922, "b": 286.46402, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 136.20758056640625, "t": 289.3038635253906, "r": 394.54984, "b": 299.72171, "coord_origin": "TOPLEFT"}, "confidence": 0.9441509246826172, "cells": [{"id": 53, "text": "To test a DBE (MCAIN) user, complete the following steps:", "bbox": {"l": 136.8, "t": 290.50872999999996, "r": 394.54984, "b": 299.72171, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "list_item", "bbox": {"l": 136.73385620117188, "t": 306.8790588378906, "r": 531.48303, "b": 328.8634033203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9618597626686096, "cells": [{"id": 54, "text": "1.", "bbox": {"l": 136.8, "t": 307.48853, "r": 145.21211, "b": 316.70151, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Confirm that the user is the user of the session by running the first SQL statement, as ", "bbox": {"l": 148.01613, "t": 307.48853, "r": 531.48303, "b": 316.70151, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "shown in Figure 4-47. In this example, MCAIN is the DBE user.", "bbox": {"l": 151.20016, "t": 319.48834, "r": 429.04044, "b": 328.70131999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "caption", "bbox": {"l": 136.308349609375, "t": 440.55535888671875, "r": 262.7190856933594, "b": 450.0071105957031, "coord_origin": "TOPLEFT"}, "confidence": 0.9195859432220459, "cells": [{"id": 57, "text": "Figure 4-47 DBE session user", "bbox": {"l": 136.8, "t": 441.67801, "r": 261.65161, "b": 450.00302, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "list_item", "bbox": {"l": 135.81915283203125, "t": 466.6739807128906, "r": 503.15964, "b": 477.26654052734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9244843125343323, "cells": [{"id": 58, "text": "2.", "bbox": {"l": 136.8, "t": 467.62872, "r": 145.20607, "b": 476.84171, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "The number of rows that the DBE user MCAIN can see is shown in Figure 4-48.", "bbox": {"l": 148.00812, "t": 467.62872, "r": 503.15964, "b": 476.84171, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "caption", "bbox": {"l": 136.09771728515625, "t": 626.5655517578125, "r": 451.9573974609375, "b": 636.12291, "coord_origin": "TOPLEFT"}, "confidence": 0.9248898029327393, "cells": [{"id": 60, "text": "Figure 4-48 Number of rows that DBE user can see in the CUSTOMERS table", "bbox": {"l": 136.8, "t": 627.7979, "r": 451.75512999999995, "b": 636.12291, "coord_origin": "TOPLEFT"}}]}, {"id": 18, "label": "picture", "bbox": {"l": 135.9881591796875, "t": 491.6136474609375, "r": 393.8948669433594, "b": 625.150146484375, "coord_origin": "TOPLEFT"}, "confidence": 0.8431334495544434, "cells": []}, {"id": 19, "label": "picture", "bbox": {"l": 136.04849243164062, "t": 343.6217346191406, "r": 358.4311218261719, "b": 438.34320068359375, "coord_origin": "TOPLEFT"}, "confidence": 0.7820501923561096, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 81, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.22357940673828, "t": 754.4584350585938, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9105024337768555, "cells": [{"id": 0, "text": "66 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "66"}, {"label": "page_footer", "id": 1, "page_no": 81, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.37715148925781, "t": 754.6815795898438, "r": 334.42142, "b": 763.9869384765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9468215703964233, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "section_header", "id": 2, "page_no": 81, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.1228256225586, "t": 70.26021575927734, "r": 347.13361, "b": 83.70108795166016, "coord_origin": "TOPLEFT"}, "confidence": 0.9626623392105103, "cells": [{"id": 2, "text": "4.3.10", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 101.29621, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Demonstrating data access with RCAC", "bbox": {"l": 104.94582, "t": 71.33471999999995, "r": 347.13361, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "4.3.10 Demonstrating data access with RCAC"}, {"label": "text", "id": 3, "page_no": 81, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.73379516601562, "t": 96.64435577392578, "r": 547.25568, "b": 119.03988647460938, "coord_origin": "TOPLEFT"}, "confidence": 0.9718443751335144, "cells": [{"id": 4, "text": "You are now ready to test the RCAC definitions. Run the following SQL statements with each ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 547.25568, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "type of user (DBE, SECURITY, TELLER, ADMIN, and WEBUSER):", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 433.09406, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}]}, "text": "You are now ready to test the RCAC definitions. Run the following SQL statements with each type of user (DBE, SECURITY, TELLER, ADMIN, and WEBUSER):"}, {"label": "list_item", "id": 4, "page_no": 81, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.537353515625, "t": 125.70227813720703, "r": 390.82486, "b": 135.94515991210938, "coord_origin": "TOPLEFT"}, "confidence": 0.9467165470123291, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 126.67749000000003, "r": 141.78, "b": 135.45227, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "A ", "bbox": {"l": 151.20016, "t": 126.52808000000005, "r": 160.64622, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "SELECT", "bbox": {"l": 160.62033, "t": 126.67749000000003, "r": 190.61983, "b": 135.50207999999998, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": " statement that returns the SESSION_USER.", "bbox": {"l": 190.61986, "t": 126.52808000000005, "r": 390.82486, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH A SELECT statement that returns the SESSION_USER."}, {"label": "list_item", "id": 5, "page_no": 81, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.6352081298828, "t": 142.6588897705078, "r": 543.19196, "b": 164.72069999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9719513654708862, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.8, "t": 143.65729, "r": 141.78, "b": 152.43206999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "A ", "bbox": {"l": 151.20016, "t": 143.50787000000003, "r": 160.64622, "b": 152.72089000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "SELECT", "bbox": {"l": 160.62033, "t": 143.65729, "r": 190.61983, "b": 152.48186999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": " statement that counts the customers from the CUSTOMER table. There are 90 ", "bbox": {"l": 190.61986, "t": 143.50787000000003, "r": 543.19196, "b": 152.72089000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "customers in the CUSTOMER table.", "bbox": {"l": 151.20016, "t": 155.50769000000003, "r": 310.90085, "b": 164.72069999999997, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH A SELECT statement that counts the customers from the CUSTOMER table. There are 90 customers in the CUSTOMER table."}, {"label": "list_item", "id": 6, "page_no": 81, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.70932006835938, "t": 171.48867797851562, "r": 543.64008, "b": 193.7998046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9690733551979065, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 172.63689999999997, "r": 141.78, "b": 181.41168000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "A simple ", "bbox": {"l": 151.20016, "t": 172.48748999999998, "r": 192.29114, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "SELECT", "bbox": {"l": 192.30011, "t": 172.63689999999997, "r": 222.23987, "b": 181.46149000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": " statement that returns the following output from the CUSTOMERS table ", "bbox": {"l": 222.29964, "t": 172.48748999999998, "r": 543.64008, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ordered by customer_name:", "bbox": {"l": 151.19919, "t": 184.4873, "r": 276.00995, "b": 193.70032000000003, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH A simple SELECT statement that returns the following output from the CUSTOMERS table ordered by customer_name:"}, {"label": "list_item", "id": 7, "page_no": 81, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 151.35504150390625, "t": 200.90966796875, "r": 227.99673, "b": 210.73987, "coord_origin": "TOPLEFT"}, "confidence": 0.914056658744812, "cells": [{"id": 20, "text": "-c", "bbox": {"l": 152.03882, "t": 201.52686000000006, "r": 178.60014, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "u", "bbox": {"l": 170.57835, "t": 201.52686000000006, "r": 184.13789, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "s", "bbox": {"l": 176.15794, "t": 201.52686000000006, "r": 189.15973, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "t", "bbox": {"l": 181.13794, "t": 201.52686000000006, "r": 191.9286, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "o", "bbox": {"l": 183.89786, "t": 201.52686000000006, "r": 197.4574, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "m", "bbox": {"l": 189.47745, "t": 201.52686000000006, "r": 205.79591, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "e", "bbox": {"l": 197.81696, "t": 201.52686000000006, "r": 211.3765, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "r", "bbox": {"l": 203.33678, "t": 201.52686000000006, "r": 214.67525, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "_", "bbox": {"l": 206.69728, "t": 201.52686000000006, "r": 220.25682, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "i", "bbox": {"l": 212.2171, "t": 201.52686000000006, "r": 222.45001, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "d", "bbox": {"l": 214.43719000000002, "t": 201.52686000000006, "r": 227.99673, "b": 210.73987, "coord_origin": "TOPLEFT"}}]}, "text": "-c u s t o m e r _ i d"}, {"label": "list_item", "id": 8, "page_no": 81, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 151.4617462158203, "t": 213.36526489257812, "r": 237.24663000000004, "b": 222.73969, "coord_origin": "TOPLEFT"}, "confidence": 0.908424973487854, "cells": [{"id": 31, "text": "-", "bbox": {"l": 152.03882, "t": 213.52666999999997, "r": 157.61443, "b": 222.73969, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "customer_name", "bbox": {"l": 165.59836, "t": 213.52666999999997, "r": 237.24663000000004, "b": 222.73969, "coord_origin": "TOPLEFT"}}]}, "text": "-customer_name"}, {"label": "list_item", "id": 9, "page_no": 81, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 151.39413452148438, "t": 224.96202087402344, "r": 236.13907, "b": 234.73950000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9008285403251648, "cells": [{"id": 33, "text": "-", "bbox": {"l": 152.03882, "t": 225.52648999999997, "r": 157.61443, "b": 234.73950000000002, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "customer_email", "bbox": {"l": 165.59836, "t": 225.52648999999997, "r": 236.13907, "b": 234.73950000000002, "coord_origin": "TOPLEFT"}}]}, "text": "-customer_email"}, {"label": "list_item", "id": 10, "page_no": 81, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 151.38189697265625, "t": 237.14512634277344, "r": 246.89580999999998, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9172974228858948, "cells": [{"id": 35, "text": "-c", "bbox": {"l": 152.03882, "t": 237.52630999999997, "r": 178.60014, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "u", "bbox": {"l": 170.57835, "t": 237.52630999999997, "r": 184.13789, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "s", "bbox": {"l": 176.15794, "t": 237.52630999999997, "r": 189.15973, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "t", "bbox": {"l": 181.13794, "t": 237.52630999999997, "r": 191.9286, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "o", "bbox": {"l": 183.89786, "t": 237.52630999999997, "r": 197.4574, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "m", "bbox": {"l": 189.47745, "t": 237.52630999999997, "r": 205.79591, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "e", "bbox": {"l": 197.81696, "t": 237.52630999999997, "r": 211.3765, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "r", "bbox": {"l": 203.33678, "t": 237.52630999999997, "r": 214.67525, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "_", "bbox": {"l": 206.69728, "t": 237.52630999999997, "r": 220.25682, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "t", "bbox": {"l": 212.2171, "t": 237.52630999999997, "r": 223.00777, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "a", "bbox": {"l": 215.03677, "t": 237.52630999999997, "r": 228.59631000000002, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "x", "bbox": {"l": 220.55659, "t": 237.52630999999997, "r": 233.55837999999997, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "_", "bbox": {"l": 225.59636, "t": 237.52630999999997, "r": 239.15590000000003, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "i", "bbox": {"l": 231.11618, "t": 237.52630999999997, "r": 241.34908999999996, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "d", "bbox": {"l": 233.33627, "t": 237.52630999999997, "r": 246.89580999999998, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}]}, "text": "-c u s t o m e r _ t a x _ i d"}, {"label": "list_item", "id": 11, "page_no": 81, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 151.4001007080078, "t": 248.64210510253906, "r": 318.3563537597656, "b": 258.73914, "coord_origin": "TOPLEFT"}, "confidence": 0.9473636746406555, "cells": [{"id": 50, "text": "-", "bbox": {"l": 152.03882, "t": 249.52612, "r": 157.61044, "b": 258.73914, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "customer_drivers_license_number", "bbox": {"l": 165.59836, "t": 249.52612, "r": 318.23041, "b": 258.73914, "coord_origin": "TOPLEFT"}}]}, "text": "-customer_drivers_license_number"}, {"label": "section_header", "id": 12, "page_no": 81, "cluster": {"id": 12, "label": "section_header", "bbox": {"l": 136.71405029296875, "t": 274.4760437011719, "r": 357.22922, "b": 286.46402, "coord_origin": "TOPLEFT"}, "confidence": 0.9395599961280823, "cells": [{"id": 52, "text": "Data access for a DBE user with RCAC", "bbox": {"l": 136.8, "t": 275.36401, "r": 357.22922, "b": 286.46402, "coord_origin": "TOPLEFT"}}]}, "text": "Data access for a DBE user with RCAC"}, {"label": "text", "id": 13, "page_no": 81, "cluster": {"id": 13, "label": "text", "bbox": {"l": 136.20758056640625, "t": 289.3038635253906, "r": 394.54984, "b": 299.72171, "coord_origin": "TOPLEFT"}, "confidence": 0.9441509246826172, "cells": [{"id": 53, "text": "To test a DBE (MCAIN) user, complete the following steps:", "bbox": {"l": 136.8, "t": 290.50872999999996, "r": 394.54984, "b": 299.72171, "coord_origin": "TOPLEFT"}}]}, "text": "To test a DBE (MCAIN) user, complete the following steps:"}, {"label": "list_item", "id": 14, "page_no": 81, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 136.73385620117188, "t": 306.8790588378906, "r": 531.48303, "b": 328.8634033203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9618597626686096, "cells": [{"id": 54, "text": "1.", "bbox": {"l": 136.8, "t": 307.48853, "r": 145.21211, "b": 316.70151, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Confirm that the user is the user of the session by running the first SQL statement, as ", "bbox": {"l": 148.01613, "t": 307.48853, "r": 531.48303, "b": 316.70151, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "shown in Figure 4-47. In this example, MCAIN is the DBE user.", "bbox": {"l": 151.20016, "t": 319.48834, "r": 429.04044, "b": 328.70131999999995, "coord_origin": "TOPLEFT"}}]}, "text": "1. Confirm that the user is the user of the session by running the first SQL statement, as shown in Figure 4-47. In this example, MCAIN is the DBE user."}, {"label": "caption", "id": 15, "page_no": 81, "cluster": {"id": 15, "label": "caption", "bbox": {"l": 136.308349609375, "t": 440.55535888671875, "r": 262.7190856933594, "b": 450.0071105957031, "coord_origin": "TOPLEFT"}, "confidence": 0.9195859432220459, "cells": [{"id": 57, "text": "Figure 4-47 DBE session user", "bbox": {"l": 136.8, "t": 441.67801, "r": 261.65161, "b": 450.00302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-47 DBE session user"}, {"label": "list_item", "id": 16, "page_no": 81, "cluster": {"id": 16, "label": "list_item", "bbox": {"l": 135.81915283203125, "t": 466.6739807128906, "r": 503.15964, "b": 477.26654052734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9244843125343323, "cells": [{"id": 58, "text": "2.", "bbox": {"l": 136.8, "t": 467.62872, "r": 145.20607, "b": 476.84171, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "The number of rows that the DBE user MCAIN can see is shown in Figure 4-48.", "bbox": {"l": 148.00812, "t": 467.62872, "r": 503.15964, "b": 476.84171, "coord_origin": "TOPLEFT"}}]}, "text": "2. The number of rows that the DBE user MCAIN can see is shown in Figure 4-48."}, {"label": "caption", "id": 17, "page_no": 81, "cluster": {"id": 17, "label": "caption", "bbox": {"l": 136.09771728515625, "t": 626.5655517578125, "r": 451.9573974609375, "b": 636.12291, "coord_origin": "TOPLEFT"}, "confidence": 0.9248898029327393, "cells": [{"id": 60, "text": "Figure 4-48 Number of rows that DBE user can see in the CUSTOMERS table", "bbox": {"l": 136.8, "t": 627.7979, "r": 451.75512999999995, "b": 636.12291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-48 Number of rows that DBE user can see in the CUSTOMERS table"}, {"label": "picture", "id": 18, "page_no": 81, "cluster": {"id": 18, "label": "picture", "bbox": {"l": 135.9881591796875, "t": 491.6136474609375, "r": 393.8948669433594, "b": 625.150146484375, "coord_origin": "TOPLEFT"}, "confidence": 0.8431334495544434, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 19, "page_no": 81, "cluster": {"id": 19, "label": "picture", "bbox": {"l": 136.04849243164062, "t": 343.6217346191406, "r": 358.4311218261719, "b": 438.34320068359375, "coord_origin": "TOPLEFT"}, "confidence": 0.7820501923561096, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "section_header", "id": 2, "page_no": 81, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.1228256225586, "t": 70.26021575927734, "r": 347.13361, "b": 83.70108795166016, "coord_origin": "TOPLEFT"}, "confidence": 0.9626623392105103, "cells": [{"id": 2, "text": "4.3.10", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 101.29621, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Demonstrating data access with RCAC", "bbox": {"l": 104.94582, "t": 71.33471999999995, "r": 347.13361, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "4.3.10 Demonstrating data access with RCAC"}, {"label": "text", "id": 3, "page_no": 81, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.73379516601562, "t": 96.64435577392578, "r": 547.25568, "b": 119.03988647460938, "coord_origin": "TOPLEFT"}, "confidence": 0.9718443751335144, "cells": [{"id": 4, "text": "You are now ready to test the RCAC definitions. Run the following SQL statements with each ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 547.25568, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "type of user (DBE, SECURITY, TELLER, ADMIN, and WEBUSER):", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 433.09406, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}]}, "text": "You are now ready to test the RCAC definitions. Run the following SQL statements with each type of user (DBE, SECURITY, TELLER, ADMIN, and WEBUSER):"}, {"label": "list_item", "id": 4, "page_no": 81, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.537353515625, "t": 125.70227813720703, "r": 390.82486, "b": 135.94515991210938, "coord_origin": "TOPLEFT"}, "confidence": 0.9467165470123291, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 126.67749000000003, "r": 141.78, "b": 135.45227, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "A ", "bbox": {"l": 151.20016, "t": 126.52808000000005, "r": 160.64622, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "SELECT", "bbox": {"l": 160.62033, "t": 126.67749000000003, "r": 190.61983, "b": 135.50207999999998, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": " statement that returns the SESSION_USER.", "bbox": {"l": 190.61986, "t": 126.52808000000005, "r": 390.82486, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH A SELECT statement that returns the SESSION_USER."}, {"label": "list_item", "id": 5, "page_no": 81, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.6352081298828, "t": 142.6588897705078, "r": 543.19196, "b": 164.72069999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9719513654708862, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.8, "t": 143.65729, "r": 141.78, "b": 152.43206999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "A ", "bbox": {"l": 151.20016, "t": 143.50787000000003, "r": 160.64622, "b": 152.72089000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "SELECT", "bbox": {"l": 160.62033, "t": 143.65729, "r": 190.61983, "b": 152.48186999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": " statement that counts the customers from the CUSTOMER table. There are 90 ", "bbox": {"l": 190.61986, "t": 143.50787000000003, "r": 543.19196, "b": 152.72089000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "customers in the CUSTOMER table.", "bbox": {"l": 151.20016, "t": 155.50769000000003, "r": 310.90085, "b": 164.72069999999997, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH A SELECT statement that counts the customers from the CUSTOMER table. There are 90 customers in the CUSTOMER table."}, {"label": "list_item", "id": 6, "page_no": 81, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.70932006835938, "t": 171.48867797851562, "r": 543.64008, "b": 193.7998046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9690733551979065, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 172.63689999999997, "r": 141.78, "b": 181.41168000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "A simple ", "bbox": {"l": 151.20016, "t": 172.48748999999998, "r": 192.29114, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "SELECT", "bbox": {"l": 192.30011, "t": 172.63689999999997, "r": 222.23987, "b": 181.46149000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": " statement that returns the following output from the CUSTOMERS table ", "bbox": {"l": 222.29964, "t": 172.48748999999998, "r": 543.64008, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ordered by customer_name:", "bbox": {"l": 151.19919, "t": 184.4873, "r": 276.00995, "b": 193.70032000000003, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH A simple SELECT statement that returns the following output from the CUSTOMERS table ordered by customer_name:"}, {"label": "list_item", "id": 7, "page_no": 81, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 151.35504150390625, "t": 200.90966796875, "r": 227.99673, "b": 210.73987, "coord_origin": "TOPLEFT"}, "confidence": 0.914056658744812, "cells": [{"id": 20, "text": "-c", "bbox": {"l": 152.03882, "t": 201.52686000000006, "r": 178.60014, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "u", "bbox": {"l": 170.57835, "t": 201.52686000000006, "r": 184.13789, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "s", "bbox": {"l": 176.15794, "t": 201.52686000000006, "r": 189.15973, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "t", "bbox": {"l": 181.13794, "t": 201.52686000000006, "r": 191.9286, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "o", "bbox": {"l": 183.89786, "t": 201.52686000000006, "r": 197.4574, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "m", "bbox": {"l": 189.47745, "t": 201.52686000000006, "r": 205.79591, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "e", "bbox": {"l": 197.81696, "t": 201.52686000000006, "r": 211.3765, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "r", "bbox": {"l": 203.33678, "t": 201.52686000000006, "r": 214.67525, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "_", "bbox": {"l": 206.69728, "t": 201.52686000000006, "r": 220.25682, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "i", "bbox": {"l": 212.2171, "t": 201.52686000000006, "r": 222.45001, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "d", "bbox": {"l": 214.43719000000002, "t": 201.52686000000006, "r": 227.99673, "b": 210.73987, "coord_origin": "TOPLEFT"}}]}, "text": "-c u s t o m e r _ i d"}, {"label": "list_item", "id": 8, "page_no": 81, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 151.4617462158203, "t": 213.36526489257812, "r": 237.24663000000004, "b": 222.73969, "coord_origin": "TOPLEFT"}, "confidence": 0.908424973487854, "cells": [{"id": 31, "text": "-", "bbox": {"l": 152.03882, "t": 213.52666999999997, "r": 157.61443, "b": 222.73969, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "customer_name", "bbox": {"l": 165.59836, "t": 213.52666999999997, "r": 237.24663000000004, "b": 222.73969, "coord_origin": "TOPLEFT"}}]}, "text": "-customer_name"}, {"label": "list_item", "id": 9, "page_no": 81, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 151.39413452148438, "t": 224.96202087402344, "r": 236.13907, "b": 234.73950000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9008285403251648, "cells": [{"id": 33, "text": "-", "bbox": {"l": 152.03882, "t": 225.52648999999997, "r": 157.61443, "b": 234.73950000000002, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "customer_email", "bbox": {"l": 165.59836, "t": 225.52648999999997, "r": 236.13907, "b": 234.73950000000002, "coord_origin": "TOPLEFT"}}]}, "text": "-customer_email"}, {"label": "list_item", "id": 10, "page_no": 81, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 151.38189697265625, "t": 237.14512634277344, "r": 246.89580999999998, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9172974228858948, "cells": [{"id": 35, "text": "-c", "bbox": {"l": 152.03882, "t": 237.52630999999997, "r": 178.60014, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "u", "bbox": {"l": 170.57835, "t": 237.52630999999997, "r": 184.13789, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "s", "bbox": {"l": 176.15794, "t": 237.52630999999997, "r": 189.15973, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "t", "bbox": {"l": 181.13794, "t": 237.52630999999997, "r": 191.9286, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "o", "bbox": {"l": 183.89786, "t": 237.52630999999997, "r": 197.4574, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "m", "bbox": {"l": 189.47745, "t": 237.52630999999997, "r": 205.79591, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "e", "bbox": {"l": 197.81696, "t": 237.52630999999997, "r": 211.3765, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "r", "bbox": {"l": 203.33678, "t": 237.52630999999997, "r": 214.67525, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "_", "bbox": {"l": 206.69728, "t": 237.52630999999997, "r": 220.25682, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "t", "bbox": {"l": 212.2171, "t": 237.52630999999997, "r": 223.00777, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "a", "bbox": {"l": 215.03677, "t": 237.52630999999997, "r": 228.59631000000002, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "x", "bbox": {"l": 220.55659, "t": 237.52630999999997, "r": 233.55837999999997, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "_", "bbox": {"l": 225.59636, "t": 237.52630999999997, "r": 239.15590000000003, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "i", "bbox": {"l": 231.11618, "t": 237.52630999999997, "r": 241.34908999999996, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "d", "bbox": {"l": 233.33627, "t": 237.52630999999997, "r": 246.89580999999998, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}]}, "text": "-c u s t o m e r _ t a x _ i d"}, {"label": "list_item", "id": 11, "page_no": 81, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 151.4001007080078, "t": 248.64210510253906, "r": 318.3563537597656, "b": 258.73914, "coord_origin": "TOPLEFT"}, "confidence": 0.9473636746406555, "cells": [{"id": 50, "text": "-", "bbox": {"l": 152.03882, "t": 249.52612, "r": 157.61044, "b": 258.73914, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "customer_drivers_license_number", "bbox": {"l": 165.59836, "t": 249.52612, "r": 318.23041, "b": 258.73914, "coord_origin": "TOPLEFT"}}]}, "text": "-customer_drivers_license_number"}, {"label": "section_header", "id": 12, "page_no": 81, "cluster": {"id": 12, "label": "section_header", "bbox": {"l": 136.71405029296875, "t": 274.4760437011719, "r": 357.22922, "b": 286.46402, "coord_origin": "TOPLEFT"}, "confidence": 0.9395599961280823, "cells": [{"id": 52, "text": "Data access for a DBE user with RCAC", "bbox": {"l": 136.8, "t": 275.36401, "r": 357.22922, "b": 286.46402, "coord_origin": "TOPLEFT"}}]}, "text": "Data access for a DBE user with RCAC"}, {"label": "text", "id": 13, "page_no": 81, "cluster": {"id": 13, "label": "text", "bbox": {"l": 136.20758056640625, "t": 289.3038635253906, "r": 394.54984, "b": 299.72171, "coord_origin": "TOPLEFT"}, "confidence": 0.9441509246826172, "cells": [{"id": 53, "text": "To test a DBE (MCAIN) user, complete the following steps:", "bbox": {"l": 136.8, "t": 290.50872999999996, "r": 394.54984, "b": 299.72171, "coord_origin": "TOPLEFT"}}]}, "text": "To test a DBE (MCAIN) user, complete the following steps:"}, {"label": "list_item", "id": 14, "page_no": 81, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 136.73385620117188, "t": 306.8790588378906, "r": 531.48303, "b": 328.8634033203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9618597626686096, "cells": [{"id": 54, "text": "1.", "bbox": {"l": 136.8, "t": 307.48853, "r": 145.21211, "b": 316.70151, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Confirm that the user is the user of the session by running the first SQL statement, as ", "bbox": {"l": 148.01613, "t": 307.48853, "r": 531.48303, "b": 316.70151, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "shown in Figure 4-47. In this example, MCAIN is the DBE user.", "bbox": {"l": 151.20016, "t": 319.48834, "r": 429.04044, "b": 328.70131999999995, "coord_origin": "TOPLEFT"}}]}, "text": "1. Confirm that the user is the user of the session by running the first SQL statement, as shown in Figure 4-47. In this example, MCAIN is the DBE user."}, {"label": "caption", "id": 15, "page_no": 81, "cluster": {"id": 15, "label": "caption", "bbox": {"l": 136.308349609375, "t": 440.55535888671875, "r": 262.7190856933594, "b": 450.0071105957031, "coord_origin": "TOPLEFT"}, "confidence": 0.9195859432220459, "cells": [{"id": 57, "text": "Figure 4-47 DBE session user", "bbox": {"l": 136.8, "t": 441.67801, "r": 261.65161, "b": 450.00302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-47 DBE session user"}, {"label": "list_item", "id": 16, "page_no": 81, "cluster": {"id": 16, "label": "list_item", "bbox": {"l": 135.81915283203125, "t": 466.6739807128906, "r": 503.15964, "b": 477.26654052734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9244843125343323, "cells": [{"id": 58, "text": "2.", "bbox": {"l": 136.8, "t": 467.62872, "r": 145.20607, "b": 476.84171, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "The number of rows that the DBE user MCAIN can see is shown in Figure 4-48.", "bbox": {"l": 148.00812, "t": 467.62872, "r": 503.15964, "b": 476.84171, "coord_origin": "TOPLEFT"}}]}, "text": "2. The number of rows that the DBE user MCAIN can see is shown in Figure 4-48."}, {"label": "caption", "id": 17, "page_no": 81, "cluster": {"id": 17, "label": "caption", "bbox": {"l": 136.09771728515625, "t": 626.5655517578125, "r": 451.9573974609375, "b": 636.12291, "coord_origin": "TOPLEFT"}, "confidence": 0.9248898029327393, "cells": [{"id": 60, "text": "Figure 4-48 Number of rows that DBE user can see in the CUSTOMERS table", "bbox": {"l": 136.8, "t": 627.7979, "r": 451.75512999999995, "b": 636.12291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-48 Number of rows that DBE user can see in the CUSTOMERS table"}, {"label": "picture", "id": 18, "page_no": 81, "cluster": {"id": 18, "label": "picture", "bbox": {"l": 135.9881591796875, "t": 491.6136474609375, "r": 393.8948669433594, "b": 625.150146484375, "coord_origin": "TOPLEFT"}, "confidence": 0.8431334495544434, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 19, "page_no": 81, "cluster": {"id": 19, "label": "picture", "bbox": {"l": 136.04849243164062, "t": 343.6217346191406, "r": 358.4311218261719, "b": 438.34320068359375, "coord_origin": "TOPLEFT"}, "confidence": 0.7820501923561096, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 81, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.22357940673828, "t": 754.4584350585938, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9105024337768555, "cells": [{"id": 0, "text": "66 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "66"}, {"label": "page_footer", "id": 1, "page_no": 81, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.37715148925781, "t": 754.6815795898438, "r": 334.42142, "b": 763.9869384765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9468215703964233, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 82, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "67", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "3.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.19135, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The result of the third SQL statement is shown in Figure 4-49. Note the masked columns. ", "bbox": {"l": 147.98859, "t": 71.50903000000005, "r": 547.29102, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "User MCAIN can see all the rows in the CUSTOMERS table, but there are some columns ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 547.17639, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "where the result is masked.", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 272.61414, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Figure 4-49 SQL statement that is run by the DBE user with masked columns", "bbox": {"l": 64.800003, "t": 471.198, "r": 376.18823, "b": 479.52301, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Data access for SECURITY user with RCAC", "bbox": {"l": 136.8, "t": 497.00391, "r": 382.60321, "b": 508.10391, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "To test a SECURITY user, complete the following steps:", "bbox": {"l": 136.8, "t": 512.1487099999999, "r": 382.87076, "b": 521.36169, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "1.", "bbox": {"l": 136.8, "t": 529.12851, "r": 145.21211, "b": 538.34152, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Confirm that the user is the user of the session by running the first SQL statement, as ", "bbox": {"l": 148.01613, "t": 529.12851, "r": 531.48303, "b": 538.34152, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "shown in Figure 4-50. In this example, SECURITY is the security officer.", "bbox": {"l": 151.20016, "t": 541.12833, "r": 469.19904, "b": 550.34132, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Figure 4-50 SECURITY session user", "bbox": {"l": 136.8, "t": 687.9179, "r": 288.62375, "b": 696.242897, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 214.31561279296875, "t": 754.7977905273438, "r": 523.59357, "b": 764.0062866210938, "coord_origin": "TOPLEFT"}, "confidence": 0.9568237662315369, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.5758666992188, "t": 754.2555541992188, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9127215147018433, "cells": [{"id": 1, "text": "67", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 136.20147705078125, "t": 70.6068115234375, "r": 547.29102, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9730502963066101, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.19135, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The result of the third SQL statement is shown in Figure 4-49. Note the masked columns. ", "bbox": {"l": 147.98859, "t": 71.50903000000005, "r": 547.29102, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "User MCAIN can see all the rows in the CUSTOMERS table, but there are some columns ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 547.17639, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "where the result is masked.", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 272.61414, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.37542724609375, "t": 469.88720703125, "r": 376.57159423828125, "b": 479.52301, "coord_origin": "TOPLEFT"}, "confidence": 0.940518319606781, "cells": [{"id": 6, "text": "Figure 4-49 SQL statement that is run by the DBE user with masked columns", "bbox": {"l": 64.800003, "t": 471.198, "r": 376.18823, "b": 479.52301, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 136.4634246826172, "t": 495.54241943359375, "r": 382.60321, "b": 508.10391, "coord_origin": "TOPLEFT"}, "confidence": 0.9448604583740234, "cells": [{"id": 7, "text": "Data access for SECURITY user with RCAC", "bbox": {"l": 136.8, "t": 497.00391, "r": 382.60321, "b": 508.10391, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.3077392578125, "t": 511.1701354980469, "r": 382.87076, "b": 521.498046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9233824014663696, "cells": [{"id": 8, "text": "To test a SECURITY user, complete the following steps:", "bbox": {"l": 136.8, "t": 512.1487099999999, "r": 382.87076, "b": 521.36169, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 136.8, "t": 527.958740234375, "r": 531.48303, "b": 550.41796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9695555567741394, "cells": [{"id": 9, "text": "1.", "bbox": {"l": 136.8, "t": 529.12851, "r": 145.21211, "b": 538.34152, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Confirm that the user is the user of the session by running the first SQL statement, as ", "bbox": {"l": 148.01613, "t": 529.12851, "r": 531.48303, "b": 538.34152, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "shown in Figure 4-50. In this example, SECURITY is the security officer.", "bbox": {"l": 151.20016, "t": 541.12833, "r": 469.19904, "b": 550.34132, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "caption", "bbox": {"l": 136.09732055664062, "t": 687.5260620117188, "r": 289.5880432128906, "b": 696.827880859375, "coord_origin": "TOPLEFT"}, "confidence": 0.9477524161338806, "cells": [{"id": 12, "text": "Figure 4-50 SECURITY session user", "bbox": {"l": 136.8, "t": 687.9179, "r": 288.62375, "b": 696.242897, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 135.97964477539062, "t": 564.6740112304688, "r": 354.29364013671875, "b": 685.4274291992188, "coord_origin": "TOPLEFT"}, "confidence": 0.945771336555481, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 82, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.31561279296875, "t": 754.7977905273438, "r": 523.59357, "b": 764.0062866210938, "coord_origin": "TOPLEFT"}, "confidence": 0.9568237662315369, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 82, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.5758666992188, "t": 754.2555541992188, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9127215147018433, "cells": [{"id": 1, "text": "67", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "67"}, {"label": "list_item", "id": 2, "page_no": 82, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.20147705078125, "t": 70.6068115234375, "r": 547.29102, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9730502963066101, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.19135, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The result of the third SQL statement is shown in Figure 4-49. Note the masked columns. ", "bbox": {"l": 147.98859, "t": 71.50903000000005, "r": 547.29102, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "User MCAIN can see all the rows in the CUSTOMERS table, but there are some columns ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 547.17639, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "where the result is masked.", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 272.61414, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "3. The result of the third SQL statement is shown in Figure 4-49. Note the masked columns. User MCAIN can see all the rows in the CUSTOMERS table, but there are some columns where the result is masked."}, {"label": "caption", "id": 3, "page_no": 82, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.37542724609375, "t": 469.88720703125, "r": 376.57159423828125, "b": 479.52301, "coord_origin": "TOPLEFT"}, "confidence": 0.940518319606781, "cells": [{"id": 6, "text": "Figure 4-49 SQL statement that is run by the DBE user with masked columns", "bbox": {"l": 64.800003, "t": 471.198, "r": 376.18823, "b": 479.52301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-49 SQL statement that is run by the DBE user with masked columns"}, {"label": "section_header", "id": 4, "page_no": 82, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 136.4634246826172, "t": 495.54241943359375, "r": 382.60321, "b": 508.10391, "coord_origin": "TOPLEFT"}, "confidence": 0.9448604583740234, "cells": [{"id": 7, "text": "Data access for SECURITY user with RCAC", "bbox": {"l": 136.8, "t": 497.00391, "r": 382.60321, "b": 508.10391, "coord_origin": "TOPLEFT"}}]}, "text": "Data access for SECURITY user with RCAC"}, {"label": "text", "id": 5, "page_no": 82, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.3077392578125, "t": 511.1701354980469, "r": 382.87076, "b": 521.498046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9233824014663696, "cells": [{"id": 8, "text": "To test a SECURITY user, complete the following steps:", "bbox": {"l": 136.8, "t": 512.1487099999999, "r": 382.87076, "b": 521.36169, "coord_origin": "TOPLEFT"}}]}, "text": "To test a SECURITY user, complete the following steps:"}, {"label": "list_item", "id": 6, "page_no": 82, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.8, "t": 527.958740234375, "r": 531.48303, "b": 550.41796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9695555567741394, "cells": [{"id": 9, "text": "1.", "bbox": {"l": 136.8, "t": 529.12851, "r": 145.21211, "b": 538.34152, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Confirm that the user is the user of the session by running the first SQL statement, as ", "bbox": {"l": 148.01613, "t": 529.12851, "r": 531.48303, "b": 538.34152, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "shown in Figure 4-50. In this example, SECURITY is the security officer.", "bbox": {"l": 151.20016, "t": 541.12833, "r": 469.19904, "b": 550.34132, "coord_origin": "TOPLEFT"}}]}, "text": "1. Confirm that the user is the user of the session by running the first SQL statement, as shown in Figure 4-50. In this example, SECURITY is the security officer."}, {"label": "caption", "id": 7, "page_no": 82, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 136.09732055664062, "t": 687.5260620117188, "r": 289.5880432128906, "b": 696.827880859375, "coord_origin": "TOPLEFT"}, "confidence": 0.9477524161338806, "cells": [{"id": 12, "text": "Figure 4-50 SECURITY session user", "bbox": {"l": 136.8, "t": 687.9179, "r": 288.62375, "b": 696.242897, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-50 SECURITY session user"}, {"label": "picture", "id": 8, "page_no": 82, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 135.97964477539062, "t": 564.6740112304688, "r": 354.29364013671875, "b": 685.4274291992188, "coord_origin": "TOPLEFT"}, "confidence": 0.945771336555481, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 82, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.20147705078125, "t": 70.6068115234375, "r": 547.29102, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9730502963066101, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.19135, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The result of the third SQL statement is shown in Figure 4-49. Note the masked columns. ", "bbox": {"l": 147.98859, "t": 71.50903000000005, "r": 547.29102, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "User MCAIN can see all the rows in the CUSTOMERS table, but there are some columns ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 547.17639, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "where the result is masked.", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 272.61414, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "3. The result of the third SQL statement is shown in Figure 4-49. Note the masked columns. User MCAIN can see all the rows in the CUSTOMERS table, but there are some columns where the result is masked."}, {"label": "caption", "id": 3, "page_no": 82, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.37542724609375, "t": 469.88720703125, "r": 376.57159423828125, "b": 479.52301, "coord_origin": "TOPLEFT"}, "confidence": 0.940518319606781, "cells": [{"id": 6, "text": "Figure 4-49 SQL statement that is run by the DBE user with masked columns", "bbox": {"l": 64.800003, "t": 471.198, "r": 376.18823, "b": 479.52301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-49 SQL statement that is run by the DBE user with masked columns"}, {"label": "section_header", "id": 4, "page_no": 82, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 136.4634246826172, "t": 495.54241943359375, "r": 382.60321, "b": 508.10391, "coord_origin": "TOPLEFT"}, "confidence": 0.9448604583740234, "cells": [{"id": 7, "text": "Data access for SECURITY user with RCAC", "bbox": {"l": 136.8, "t": 497.00391, "r": 382.60321, "b": 508.10391, "coord_origin": "TOPLEFT"}}]}, "text": "Data access for SECURITY user with RCAC"}, {"label": "text", "id": 5, "page_no": 82, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.3077392578125, "t": 511.1701354980469, "r": 382.87076, "b": 521.498046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9233824014663696, "cells": [{"id": 8, "text": "To test a SECURITY user, complete the following steps:", "bbox": {"l": 136.8, "t": 512.1487099999999, "r": 382.87076, "b": 521.36169, "coord_origin": "TOPLEFT"}}]}, "text": "To test a SECURITY user, complete the following steps:"}, {"label": "list_item", "id": 6, "page_no": 82, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.8, "t": 527.958740234375, "r": 531.48303, "b": 550.41796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9695555567741394, "cells": [{"id": 9, "text": "1.", "bbox": {"l": 136.8, "t": 529.12851, "r": 145.21211, "b": 538.34152, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Confirm that the user is the user of the session by running the first SQL statement, as ", "bbox": {"l": 148.01613, "t": 529.12851, "r": 531.48303, "b": 538.34152, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "shown in Figure 4-50. In this example, SECURITY is the security officer.", "bbox": {"l": 151.20016, "t": 541.12833, "r": 469.19904, "b": 550.34132, "coord_origin": "TOPLEFT"}}]}, "text": "1. Confirm that the user is the user of the session by running the first SQL statement, as shown in Figure 4-50. In this example, SECURITY is the security officer."}, {"label": "caption", "id": 7, "page_no": 82, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 136.09732055664062, "t": 687.5260620117188, "r": 289.5880432128906, "b": 696.827880859375, "coord_origin": "TOPLEFT"}, "confidence": 0.9477524161338806, "cells": [{"id": 12, "text": "Figure 4-50 SECURITY session user", "bbox": {"l": 136.8, "t": 687.9179, "r": 288.62375, "b": 696.242897, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-50 SECURITY session user"}, {"label": "picture", "id": 8, "page_no": 82, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 135.97964477539062, "t": 564.6740112304688, "r": 354.29364013671875, "b": 685.4274291992188, "coord_origin": "TOPLEFT"}, "confidence": 0.945771336555481, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 82, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.31561279296875, "t": 754.7977905273438, "r": 523.59357, "b": 764.0062866210938, "coord_origin": "TOPLEFT"}, "confidence": 0.9568237662315369, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 82, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.5758666992188, "t": 754.2555541992188, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9127215147018433, "cells": [{"id": 1, "text": "67", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "67"}]}}, {"page_no": 83, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "68 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "2.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.05519, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The number of rows in the CUSTOMERS table that the security officer can see is shown in ", "bbox": {"l": 147.8069, "t": 71.50867000000005, "r": 547.19379, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 4-51. The security officer cannot see any data at all.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 411.76868, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Figure 4-51 Number of rows that the security officer can see in the CUSTOMERS table", "bbox": {"l": 136.8, "t": 228.61803999999995, "r": 486.40319999999997, "b": 236.94299, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "3.", "bbox": {"l": 136.8, "t": 254.56866000000002, "r": 145.20145, "b": 263.78168000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "The result of the third SQL statement is shown in Figure 4-52. Note the empty set that is ", "bbox": {"l": 148.00191, "t": 254.56866000000002, "r": 542.73871, "b": 263.78168000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "returned to the security officer.", "bbox": {"l": 151.20016, "t": 266.56848, "r": 286.06564, "b": 275.78148999999996, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Figure 4-52 SQL statement that is run by the SECURITY user - no results", "bbox": {"l": 64.800003, "t": 441.67801, "r": 362.02679, "b": 450.00302, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Data access for TELLER user with RCAC", "bbox": {"l": 136.8, "t": 467.48401, "r": 368.64481, "b": 478.58401, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "To test a Teller (TQSPENCER) user, complete the following steps:", "bbox": {"l": 136.8, "t": 482.62872, "r": 427.75647, "b": 491.84171, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "1.", "bbox": {"l": 136.79999, "t": 499.60852, "r": 145.21622, "b": 508.8215, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Confirm that the TELLER user is the user of the session by running the first SQL ", "bbox": {"l": 148.02162, "t": 499.60852, "r": 509.23330999999996, "b": 508.8215, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "statement, as shown in Figure 4-53. In this example, TQSPENCER is a TELLER user.", "bbox": {"l": 151.20015, "t": 511.60834, "r": 530.67822, "b": 520.82132, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Figure 4-53 TELLER session user", "bbox": {"l": 136.8, "t": 672.8579, "r": 277.11722, "b": 681.1829, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.20339965820312, "t": 754.427978515625, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9174648523330688, "cells": [{"id": 0, "text": "68 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.34625244140625, "t": 754.708740234375, "r": 334.42142, "b": 763.9661865234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9526290893554688, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 135.87147521972656, "t": 70.62814331054688, "r": 547.19379, "b": 93.03572082519531, "coord_origin": "TOPLEFT"}, "confidence": 0.9643672108650208, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.05519, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The number of rows in the CUSTOMERS table that the security officer can see is shown in ", "bbox": {"l": 147.8069, "t": 71.50867000000005, "r": 547.19379, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 4-51. The security officer cannot see any data at all.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 411.76868, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.1445770263672, "t": 228.07118225097656, "r": 486.7213439941406, "b": 237.11375427246094, "coord_origin": "TOPLEFT"}, "confidence": 0.9390786290168762, "cells": [{"id": 5, "text": "Figure 4-51 Number of rows that the security officer can see in the CUSTOMERS table", "bbox": {"l": 136.8, "t": 228.61803999999995, "r": 486.40319999999997, "b": 236.94299, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 136.01255798339844, "t": 254.04481506347656, "r": 542.73871, "b": 275.8885192871094, "coord_origin": "TOPLEFT"}, "confidence": 0.9614978432655334, "cells": [{"id": 6, "text": "3.", "bbox": {"l": 136.8, "t": 254.56866000000002, "r": 145.20145, "b": 263.78168000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "The result of the third SQL statement is shown in Figure 4-52. Note the empty set that is ", "bbox": {"l": 148.00191, "t": 254.56866000000002, "r": 542.73871, "b": 263.78168000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "returned to the security officer.", "bbox": {"l": 151.20016, "t": 266.56848, "r": 286.06564, "b": 275.78148999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 64.1894760131836, "t": 440.5732116699219, "r": 362.28131103515625, "b": 450.00302, "coord_origin": "TOPLEFT"}, "confidence": 0.952978253364563, "cells": [{"id": 9, "text": "Figure 4-52 SQL statement that is run by the SECURITY user - no results", "bbox": {"l": 64.800003, "t": 441.67801, "r": 362.02679, "b": 450.00302, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "section_header", "bbox": {"l": 136.5155792236328, "t": 466.390380859375, "r": 368.64481, "b": 478.58401, "coord_origin": "TOPLEFT"}, "confidence": 0.9474611878395081, "cells": [{"id": 10, "text": "Data access for TELLER user with RCAC", "bbox": {"l": 136.8, "t": 467.48401, "r": 368.64481, "b": 478.58401, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 136.20401000976562, "t": 481.7389831542969, "r": 427.75647, "b": 492.3285217285156, "coord_origin": "TOPLEFT"}, "confidence": 0.9360538125038147, "cells": [{"id": 11, "text": "To test a Teller (TQSPENCER) user, complete the following steps:", "bbox": {"l": 136.8, "t": 482.62872, "r": 427.75647, "b": 491.84171, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 136.66238403320312, "t": 498.4595947265625, "r": 530.67822, "b": 520.9165649414062, "coord_origin": "TOPLEFT"}, "confidence": 0.960720956325531, "cells": [{"id": 12, "text": "1.", "bbox": {"l": 136.79999, "t": 499.60852, "r": 145.21622, "b": 508.8215, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Confirm that the TELLER user is the user of the session by running the first SQL ", "bbox": {"l": 148.02162, "t": 499.60852, "r": 509.23330999999996, "b": 508.8215, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "statement, as shown in Figure 4-53. In this example, TQSPENCER is a TELLER user.", "bbox": {"l": 151.20015, "t": 511.60834, "r": 530.67822, "b": 520.82132, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "caption", "bbox": {"l": 136.1230010986328, "t": 672.151611328125, "r": 278.20037841796875, "b": 681.5107421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9520363211631775, "cells": [{"id": 15, "text": "Figure 4-53 TELLER session user", "bbox": {"l": 136.8, "t": 672.8579, "r": 277.11722, "b": 681.1829, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "picture", "bbox": {"l": 135.7608642578125, "t": 535.8259887695312, "r": 362.02239990234375, "b": 669.7214965820312, "coord_origin": "TOPLEFT"}, "confidence": 0.9807249307632446, "cells": []}, {"id": 11, "label": "picture", "bbox": {"l": 64.11683654785156, "t": 289.6597900390625, "r": 546.5642700195312, "b": 438.1582946777344, "coord_origin": "TOPLEFT"}, "confidence": 0.9767975211143494, "cells": []}, {"id": 12, "label": "picture", "bbox": {"l": 136.23712158203125, "t": 107.2462158203125, "r": 385.9791564941406, "b": 225.44589233398438, "coord_origin": "TOPLEFT"}, "confidence": 0.9731733202934265, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 83, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.20339965820312, "t": 754.427978515625, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9174648523330688, "cells": [{"id": 0, "text": "68 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "68"}, {"label": "page_footer", "id": 1, "page_no": 83, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.34625244140625, "t": 754.708740234375, "r": 334.42142, "b": 763.9661865234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9526290893554688, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "list_item", "id": 2, "page_no": 83, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.87147521972656, "t": 70.62814331054688, "r": 547.19379, "b": 93.03572082519531, "coord_origin": "TOPLEFT"}, "confidence": 0.9643672108650208, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.05519, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The number of rows in the CUSTOMERS table that the security officer can see is shown in ", "bbox": {"l": 147.8069, "t": 71.50867000000005, "r": 547.19379, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 4-51. The security officer cannot see any data at all.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 411.76868, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "2. The number of rows in the CUSTOMERS table that the security officer can see is shown in Figure 4-51. The security officer cannot see any data at all."}, {"label": "caption", "id": 3, "page_no": 83, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.1445770263672, "t": 228.07118225097656, "r": 486.7213439941406, "b": 237.11375427246094, "coord_origin": "TOPLEFT"}, "confidence": 0.9390786290168762, "cells": [{"id": 5, "text": "Figure 4-51 Number of rows that the security officer can see in the CUSTOMERS table", "bbox": {"l": 136.8, "t": 228.61803999999995, "r": 486.40319999999997, "b": 236.94299, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-51 Number of rows that the security officer can see in the CUSTOMERS table"}, {"label": "list_item", "id": 4, "page_no": 83, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.01255798339844, "t": 254.04481506347656, "r": 542.73871, "b": 275.8885192871094, "coord_origin": "TOPLEFT"}, "confidence": 0.9614978432655334, "cells": [{"id": 6, "text": "3.", "bbox": {"l": 136.8, "t": 254.56866000000002, "r": 145.20145, "b": 263.78168000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "The result of the third SQL statement is shown in Figure 4-52. Note the empty set that is ", "bbox": {"l": 148.00191, "t": 254.56866000000002, "r": 542.73871, "b": 263.78168000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "returned to the security officer.", "bbox": {"l": 151.20016, "t": 266.56848, "r": 286.06564, "b": 275.78148999999996, "coord_origin": "TOPLEFT"}}]}, "text": "3. The result of the third SQL statement is shown in Figure 4-52. Note the empty set that is returned to the security officer."}, {"label": "caption", "id": 5, "page_no": 83, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.1894760131836, "t": 440.5732116699219, "r": 362.28131103515625, "b": 450.00302, "coord_origin": "TOPLEFT"}, "confidence": 0.952978253364563, "cells": [{"id": 9, "text": "Figure 4-52 SQL statement that is run by the SECURITY user - no results", "bbox": {"l": 64.800003, "t": 441.67801, "r": 362.02679, "b": 450.00302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-52 SQL statement that is run by the SECURITY user - no results"}, {"label": "section_header", "id": 6, "page_no": 83, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 136.5155792236328, "t": 466.390380859375, "r": 368.64481, "b": 478.58401, "coord_origin": "TOPLEFT"}, "confidence": 0.9474611878395081, "cells": [{"id": 10, "text": "Data access for TELLER user with RCAC", "bbox": {"l": 136.8, "t": 467.48401, "r": 368.64481, "b": 478.58401, "coord_origin": "TOPLEFT"}}]}, "text": "Data access for TELLER user with RCAC"}, {"label": "text", "id": 7, "page_no": 83, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.20401000976562, "t": 481.7389831542969, "r": 427.75647, "b": 492.3285217285156, "coord_origin": "TOPLEFT"}, "confidence": 0.9360538125038147, "cells": [{"id": 11, "text": "To test a Teller (TQSPENCER) user, complete the following steps:", "bbox": {"l": 136.8, "t": 482.62872, "r": 427.75647, "b": 491.84171, "coord_origin": "TOPLEFT"}}]}, "text": "To test a Teller (TQSPENCER) user, complete the following steps:"}, {"label": "list_item", "id": 8, "page_no": 83, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 136.66238403320312, "t": 498.4595947265625, "r": 530.67822, "b": 520.9165649414062, "coord_origin": "TOPLEFT"}, "confidence": 0.960720956325531, "cells": [{"id": 12, "text": "1.", "bbox": {"l": 136.79999, "t": 499.60852, "r": 145.21622, "b": 508.8215, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Confirm that the TELLER user is the user of the session by running the first SQL ", "bbox": {"l": 148.02162, "t": 499.60852, "r": 509.23330999999996, "b": 508.8215, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "statement, as shown in Figure 4-53. In this example, TQSPENCER is a TELLER user.", "bbox": {"l": 151.20015, "t": 511.60834, "r": 530.67822, "b": 520.82132, "coord_origin": "TOPLEFT"}}]}, "text": "1. Confirm that the TELLER user is the user of the session by running the first SQL statement, as shown in Figure 4-53. In this example, TQSPENCER is a TELLER user."}, {"label": "caption", "id": 9, "page_no": 83, "cluster": {"id": 9, "label": "caption", "bbox": {"l": 136.1230010986328, "t": 672.151611328125, "r": 278.20037841796875, "b": 681.5107421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9520363211631775, "cells": [{"id": 15, "text": "Figure 4-53 TELLER session user", "bbox": {"l": 136.8, "t": 672.8579, "r": 277.11722, "b": 681.1829, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-53 TELLER session user"}, {"label": "picture", "id": 10, "page_no": 83, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 135.7608642578125, "t": 535.8259887695312, "r": 362.02239990234375, "b": 669.7214965820312, "coord_origin": "TOPLEFT"}, "confidence": 0.9807249307632446, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 11, "page_no": 83, "cluster": {"id": 11, "label": "picture", "bbox": {"l": 64.11683654785156, "t": 289.6597900390625, "r": 546.5642700195312, "b": 438.1582946777344, "coord_origin": "TOPLEFT"}, "confidence": 0.9767975211143494, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 12, "page_no": 83, "cluster": {"id": 12, "label": "picture", "bbox": {"l": 136.23712158203125, "t": 107.2462158203125, "r": 385.9791564941406, "b": 225.44589233398438, "coord_origin": "TOPLEFT"}, "confidence": 0.9731733202934265, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 83, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.87147521972656, "t": 70.62814331054688, "r": 547.19379, "b": 93.03572082519531, "coord_origin": "TOPLEFT"}, "confidence": 0.9643672108650208, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.05519, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The number of rows in the CUSTOMERS table that the security officer can see is shown in ", "bbox": {"l": 147.8069, "t": 71.50867000000005, "r": 547.19379, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 4-51. The security officer cannot see any data at all.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 411.76868, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "2. The number of rows in the CUSTOMERS table that the security officer can see is shown in Figure 4-51. The security officer cannot see any data at all."}, {"label": "caption", "id": 3, "page_no": 83, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.1445770263672, "t": 228.07118225097656, "r": 486.7213439941406, "b": 237.11375427246094, "coord_origin": "TOPLEFT"}, "confidence": 0.9390786290168762, "cells": [{"id": 5, "text": "Figure 4-51 Number of rows that the security officer can see in the CUSTOMERS table", "bbox": {"l": 136.8, "t": 228.61803999999995, "r": 486.40319999999997, "b": 236.94299, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-51 Number of rows that the security officer can see in the CUSTOMERS table"}, {"label": "list_item", "id": 4, "page_no": 83, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.01255798339844, "t": 254.04481506347656, "r": 542.73871, "b": 275.8885192871094, "coord_origin": "TOPLEFT"}, "confidence": 0.9614978432655334, "cells": [{"id": 6, "text": "3.", "bbox": {"l": 136.8, "t": 254.56866000000002, "r": 145.20145, "b": 263.78168000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "The result of the third SQL statement is shown in Figure 4-52. Note the empty set that is ", "bbox": {"l": 148.00191, "t": 254.56866000000002, "r": 542.73871, "b": 263.78168000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "returned to the security officer.", "bbox": {"l": 151.20016, "t": 266.56848, "r": 286.06564, "b": 275.78148999999996, "coord_origin": "TOPLEFT"}}]}, "text": "3. The result of the third SQL statement is shown in Figure 4-52. Note the empty set that is returned to the security officer."}, {"label": "caption", "id": 5, "page_no": 83, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.1894760131836, "t": 440.5732116699219, "r": 362.28131103515625, "b": 450.00302, "coord_origin": "TOPLEFT"}, "confidence": 0.952978253364563, "cells": [{"id": 9, "text": "Figure 4-52 SQL statement that is run by the SECURITY user - no results", "bbox": {"l": 64.800003, "t": 441.67801, "r": 362.02679, "b": 450.00302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-52 SQL statement that is run by the SECURITY user - no results"}, {"label": "section_header", "id": 6, "page_no": 83, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 136.5155792236328, "t": 466.390380859375, "r": 368.64481, "b": 478.58401, "coord_origin": "TOPLEFT"}, "confidence": 0.9474611878395081, "cells": [{"id": 10, "text": "Data access for TELLER user with RCAC", "bbox": {"l": 136.8, "t": 467.48401, "r": 368.64481, "b": 478.58401, "coord_origin": "TOPLEFT"}}]}, "text": "Data access for TELLER user with RCAC"}, {"label": "text", "id": 7, "page_no": 83, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.20401000976562, "t": 481.7389831542969, "r": 427.75647, "b": 492.3285217285156, "coord_origin": "TOPLEFT"}, "confidence": 0.9360538125038147, "cells": [{"id": 11, "text": "To test a Teller (TQSPENCER) user, complete the following steps:", "bbox": {"l": 136.8, "t": 482.62872, "r": 427.75647, "b": 491.84171, "coord_origin": "TOPLEFT"}}]}, "text": "To test a Teller (TQSPENCER) user, complete the following steps:"}, {"label": "list_item", "id": 8, "page_no": 83, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 136.66238403320312, "t": 498.4595947265625, "r": 530.67822, "b": 520.9165649414062, "coord_origin": "TOPLEFT"}, "confidence": 0.960720956325531, "cells": [{"id": 12, "text": "1.", "bbox": {"l": 136.79999, "t": 499.60852, "r": 145.21622, "b": 508.8215, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Confirm that the TELLER user is the user of the session by running the first SQL ", "bbox": {"l": 148.02162, "t": 499.60852, "r": 509.23330999999996, "b": 508.8215, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "statement, as shown in Figure 4-53. In this example, TQSPENCER is a TELLER user.", "bbox": {"l": 151.20015, "t": 511.60834, "r": 530.67822, "b": 520.82132, "coord_origin": "TOPLEFT"}}]}, "text": "1. Confirm that the TELLER user is the user of the session by running the first SQL statement, as shown in Figure 4-53. In this example, TQSPENCER is a TELLER user."}, {"label": "caption", "id": 9, "page_no": 83, "cluster": {"id": 9, "label": "caption", "bbox": {"l": 136.1230010986328, "t": 672.151611328125, "r": 278.20037841796875, "b": 681.5107421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9520363211631775, "cells": [{"id": 15, "text": "Figure 4-53 TELLER session user", "bbox": {"l": 136.8, "t": 672.8579, "r": 277.11722, "b": 681.1829, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-53 TELLER session user"}, {"label": "picture", "id": 10, "page_no": 83, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 135.7608642578125, "t": 535.8259887695312, "r": 362.02239990234375, "b": 669.7214965820312, "coord_origin": "TOPLEFT"}, "confidence": 0.9807249307632446, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 11, "page_no": 83, "cluster": {"id": 11, "label": "picture", "bbox": {"l": 64.11683654785156, "t": 289.6597900390625, "r": 546.5642700195312, "b": 438.1582946777344, "coord_origin": "TOPLEFT"}, "confidence": 0.9767975211143494, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 12, "page_no": 83, "cluster": {"id": 12, "label": "picture", "bbox": {"l": 136.23712158203125, "t": 107.2462158203125, "r": 385.9791564941406, "b": 225.44589233398438, "coord_origin": "TOPLEFT"}, "confidence": 0.9731733202934265, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 83, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.20339965820312, "t": 754.427978515625, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9174648523330688, "cells": [{"id": 0, "text": "68 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "68"}, {"label": "page_footer", "id": 1, "page_no": 83, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.34625244140625, "t": 754.708740234375, "r": 334.42142, "b": 763.9661865234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9526290893554688, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 84, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "69", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.1451, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The number of rows in the CUSTOMERS table that the TELLER user can see is shown in ", "bbox": {"l": 147.92693, "t": 71.50903000000005, "r": 547.24017, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 4-54. The TELLER user can see all the rows.", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 381.47095, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Figure 4-54 Number of rows that the TELLER user can see in the CUSTOMERS table", "bbox": {"l": 136.8, "t": 222.49805000000003, "r": 482.17749, "b": 230.82299999999998, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "3.", "bbox": {"l": 136.8, "t": 248.44867, "r": 145.19176, "b": 257.66168000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "The result of the third SQL statement is shown in Figure 4-55. Note the masked columns. ", "bbox": {"l": 147.98898, "t": 248.44867, "r": 547.29144, "b": 257.66168000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "The TELLER user, TQSPENSER, can see all the rows, but there are some columns where ", "bbox": {"l": 151.20016, "t": 260.44849, "r": 547.20081, "b": 269.66150000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "the result is masked.", "bbox": {"l": 151.20013, "t": 272.4483, "r": 242.59509, "b": 281.66132, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Figure 4-55 SQL statement that is run by the TELLER user with masked columns", "bbox": {"l": 64.800003, "t": 673.158, "r": 391.66644, "b": 681.483, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 214.29336547851562, "t": 754.7902221679688, "r": 523.59357, "b": 763.9354248046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9566875696182251, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.5740966796875, "t": 754.166259765625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9140955209732056, "cells": [{"id": 1, "text": "69", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 135.8011474609375, "t": 70.60009765625, "r": 547.24017, "b": 92.9535140991211, "coord_origin": "TOPLEFT"}, "confidence": 0.953477680683136, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.1451, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The number of rows in the CUSTOMERS table that the TELLER user can see is shown in ", "bbox": {"l": 147.92693, "t": 71.50903000000005, "r": 547.24017, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 4-54. The TELLER user can see all the rows.", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 381.47095, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 135.62548828125, "t": 221.36160278320312, "r": 482.5060729980469, "b": 230.82299999999998, "coord_origin": "TOPLEFT"}, "confidence": 0.9344339370727539, "cells": [{"id": 5, "text": "Figure 4-54 Number of rows that the TELLER user can see in the CUSTOMERS table", "bbox": {"l": 136.8, "t": 222.49805000000003, "r": 482.17749, "b": 230.82299999999998, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 136.01345825195312, "t": 247.20472717285156, "r": 547.29144, "b": 281.66132, "coord_origin": "TOPLEFT"}, "confidence": 0.9552950263023376, "cells": [{"id": 6, "text": "3.", "bbox": {"l": 136.8, "t": 248.44867, "r": 145.19176, "b": 257.66168000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "The result of the third SQL statement is shown in Figure 4-55. Note the masked columns. ", "bbox": {"l": 147.98898, "t": 248.44867, "r": 547.29144, "b": 257.66168000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "The TELLER user, TQSPENSER, can see all the rows, but there are some columns where ", "bbox": {"l": 151.20016, "t": 260.44849, "r": 547.20081, "b": 269.66150000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "the result is masked.", "bbox": {"l": 151.20013, "t": 272.4483, "r": 242.59509, "b": 281.66132, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 64.17078399658203, "t": 672.1625366210938, "r": 391.8590393066406, "b": 681.483, "coord_origin": "TOPLEFT"}, "confidence": 0.9434057474136353, "cells": [{"id": 10, "text": "Figure 4-55 SQL statement that is run by the TELLER user with masked columns", "bbox": {"l": 64.800003, "t": 673.158, "r": 391.66644, "b": 681.483, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "picture", "bbox": {"l": 135.92535400390625, "t": 107.52780151367188, "r": 388.818115234375, "b": 219.1571807861328, "coord_origin": "TOPLEFT"}, "confidence": 0.9634679555892944, "cells": []}, {"id": 7, "label": "picture", "bbox": {"l": 64.41838073730469, "t": 296.1629638671875, "r": 548.2760009765625, "b": 670.6256713867188, "coord_origin": "TOPLEFT"}, "confidence": 0.7070707678794861, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 84, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.29336547851562, "t": 754.7902221679688, "r": 523.59357, "b": 763.9354248046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9566875696182251, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 84, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.5740966796875, "t": 754.166259765625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9140955209732056, "cells": [{"id": 1, "text": "69", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "69"}, {"label": "list_item", "id": 2, "page_no": 84, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.8011474609375, "t": 70.60009765625, "r": 547.24017, "b": 92.9535140991211, "coord_origin": "TOPLEFT"}, "confidence": 0.953477680683136, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.1451, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The number of rows in the CUSTOMERS table that the TELLER user can see is shown in ", "bbox": {"l": 147.92693, "t": 71.50903000000005, "r": 547.24017, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 4-54. The TELLER user can see all the rows.", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 381.47095, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "2. The number of rows in the CUSTOMERS table that the TELLER user can see is shown in Figure 4-54. The TELLER user can see all the rows."}, {"label": "caption", "id": 3, "page_no": 84, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.62548828125, "t": 221.36160278320312, "r": 482.5060729980469, "b": 230.82299999999998, "coord_origin": "TOPLEFT"}, "confidence": 0.9344339370727539, "cells": [{"id": 5, "text": "Figure 4-54 Number of rows that the TELLER user can see in the CUSTOMERS table", "bbox": {"l": 136.8, "t": 222.49805000000003, "r": 482.17749, "b": 230.82299999999998, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-54 Number of rows that the TELLER user can see in the CUSTOMERS table"}, {"label": "list_item", "id": 4, "page_no": 84, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.01345825195312, "t": 247.20472717285156, "r": 547.29144, "b": 281.66132, "coord_origin": "TOPLEFT"}, "confidence": 0.9552950263023376, "cells": [{"id": 6, "text": "3.", "bbox": {"l": 136.8, "t": 248.44867, "r": 145.19176, "b": 257.66168000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "The result of the third SQL statement is shown in Figure 4-55. Note the masked columns. ", "bbox": {"l": 147.98898, "t": 248.44867, "r": 547.29144, "b": 257.66168000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "The TELLER user, TQSPENSER, can see all the rows, but there are some columns where ", "bbox": {"l": 151.20016, "t": 260.44849, "r": 547.20081, "b": 269.66150000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "the result is masked.", "bbox": {"l": 151.20013, "t": 272.4483, "r": 242.59509, "b": 281.66132, "coord_origin": "TOPLEFT"}}]}, "text": "3. The result of the third SQL statement is shown in Figure 4-55. Note the masked columns. The TELLER user, TQSPENSER, can see all the rows, but there are some columns where the result is masked."}, {"label": "caption", "id": 5, "page_no": 84, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.17078399658203, "t": 672.1625366210938, "r": 391.8590393066406, "b": 681.483, "coord_origin": "TOPLEFT"}, "confidence": 0.9434057474136353, "cells": [{"id": 10, "text": "Figure 4-55 SQL statement that is run by the TELLER user with masked columns", "bbox": {"l": 64.800003, "t": 673.158, "r": 391.66644, "b": 681.483, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-55 SQL statement that is run by the TELLER user with masked columns"}, {"label": "picture", "id": 6, "page_no": 84, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 135.92535400390625, "t": 107.52780151367188, "r": 388.818115234375, "b": 219.1571807861328, "coord_origin": "TOPLEFT"}, "confidence": 0.9634679555892944, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 7, "page_no": 84, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 64.41838073730469, "t": 296.1629638671875, "r": 548.2760009765625, "b": 670.6256713867188, "coord_origin": "TOPLEFT"}, "confidence": 0.7070707678794861, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 84, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.8011474609375, "t": 70.60009765625, "r": 547.24017, "b": 92.9535140991211, "coord_origin": "TOPLEFT"}, "confidence": 0.953477680683136, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.1451, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The number of rows in the CUSTOMERS table that the TELLER user can see is shown in ", "bbox": {"l": 147.92693, "t": 71.50903000000005, "r": 547.24017, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 4-54. The TELLER user can see all the rows.", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 381.47095, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "2. The number of rows in the CUSTOMERS table that the TELLER user can see is shown in Figure 4-54. The TELLER user can see all the rows."}, {"label": "caption", "id": 3, "page_no": 84, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.62548828125, "t": 221.36160278320312, "r": 482.5060729980469, "b": 230.82299999999998, "coord_origin": "TOPLEFT"}, "confidence": 0.9344339370727539, "cells": [{"id": 5, "text": "Figure 4-54 Number of rows that the TELLER user can see in the CUSTOMERS table", "bbox": {"l": 136.8, "t": 222.49805000000003, "r": 482.17749, "b": 230.82299999999998, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-54 Number of rows that the TELLER user can see in the CUSTOMERS table"}, {"label": "list_item", "id": 4, "page_no": 84, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.01345825195312, "t": 247.20472717285156, "r": 547.29144, "b": 281.66132, "coord_origin": "TOPLEFT"}, "confidence": 0.9552950263023376, "cells": [{"id": 6, "text": "3.", "bbox": {"l": 136.8, "t": 248.44867, "r": 145.19176, "b": 257.66168000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "The result of the third SQL statement is shown in Figure 4-55. Note the masked columns. ", "bbox": {"l": 147.98898, "t": 248.44867, "r": 547.29144, "b": 257.66168000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "The TELLER user, TQSPENSER, can see all the rows, but there are some columns where ", "bbox": {"l": 151.20016, "t": 260.44849, "r": 547.20081, "b": 269.66150000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "the result is masked.", "bbox": {"l": 151.20013, "t": 272.4483, "r": 242.59509, "b": 281.66132, "coord_origin": "TOPLEFT"}}]}, "text": "3. The result of the third SQL statement is shown in Figure 4-55. Note the masked columns. The TELLER user, TQSPENSER, can see all the rows, but there are some columns where the result is masked."}, {"label": "caption", "id": 5, "page_no": 84, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.17078399658203, "t": 672.1625366210938, "r": 391.8590393066406, "b": 681.483, "coord_origin": "TOPLEFT"}, "confidence": 0.9434057474136353, "cells": [{"id": 10, "text": "Figure 4-55 SQL statement that is run by the TELLER user with masked columns", "bbox": {"l": 64.800003, "t": 673.158, "r": 391.66644, "b": 681.483, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-55 SQL statement that is run by the TELLER user with masked columns"}, {"label": "picture", "id": 6, "page_no": 84, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 135.92535400390625, "t": 107.52780151367188, "r": 388.818115234375, "b": 219.1571807861328, "coord_origin": "TOPLEFT"}, "confidence": 0.9634679555892944, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 7, "page_no": 84, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 64.41838073730469, "t": 296.1629638671875, "r": 548.2760009765625, "b": 670.6256713867188, "coord_origin": "TOPLEFT"}, "confidence": 0.7070707678794861, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 84, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.29336547851562, "t": 754.7902221679688, "r": 523.59357, "b": 763.9354248046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9566875696182251, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 84, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.5740966796875, "t": 754.166259765625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9140955209732056, "cells": [{"id": 1, "text": "69", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "69"}]}}, {"page_no": 85, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "70 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Data access for ADMIN user with RCAC", "bbox": {"l": 136.8, "t": 71.36395000000005, "r": 361.2876, "b": 82.46398999999997, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "To test an ADMIN (VGLUCCHESS) user, complete the following steps:", "bbox": {"l": 136.8, "t": 86.50867000000005, "r": 448.12963999999994, "b": 95.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "1.", "bbox": {"l": 136.8, "t": 103.48845999999992, "r": 145.08908, "b": 112.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Confirm that the ADMIN user is the user of the session by running the first SQL statement, ", "bbox": {"l": 147.8521, "t": 103.48845999999992, "r": 547.23853, "b": 112.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "as shown in Figure 4-56. In this example, VGLUCCHESS is an ADMIN user.", "bbox": {"l": 151.20016, "t": 115.48828000000003, "r": 487.41986, "b": 124.70129000000009, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Figure 4-56 ADMIN session user ", "bbox": {"l": 136.8, "t": 225.79803000000004, "r": 274.63858, "b": 234.12298999999996, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "2.", "bbox": {"l": 136.8, "t": 251.74872000000005, "r": 145.19705, "b": 260.96173, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "The number of rows that the ADMIN user can see is shown in Figure 4-57. The ADMIN ", "bbox": {"l": 147.99605, "t": 251.74872000000005, "r": 537.45203, "b": 260.96173, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "user can see all the rows.", "bbox": {"l": 151.20016, "t": 263.74854000000005, "r": 264.17142, "b": 272.96155, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Figure 4-57 Number of rows that the ADMIN can see in the CUSTOMERS table", "bbox": {"l": 136.8, "t": 372.138, "r": 457.1981799999999, "b": 380.46301, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.99982833862305, "t": 754.1723022460938, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9086830019950867, "cells": [{"id": 0, "text": "70 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.3930892944336, "t": 754.6930541992188, "r": 334.42142, "b": 763.9622192382812, "coord_origin": "TOPLEFT"}, "confidence": 0.9444864988327026, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 136.52813720703125, "t": 70.49939727783203, "r": 361.2876, "b": 82.46398999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9242165684700012, "cells": [{"id": 2, "text": "Data access for ADMIN user with RCAC", "bbox": {"l": 136.8, "t": 71.36395000000005, "r": 361.2876, "b": 82.46398999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 136.3176727294922, "t": 85.13993835449219, "r": 448.12963999999994, "b": 95.72167999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9380269646644592, "cells": [{"id": 3, "text": "To test an ADMIN (VGLUCCHESS) user, complete the following steps:", "bbox": {"l": 136.8, "t": 86.50867000000005, "r": 448.12963999999994, "b": 95.72167999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 136.8, "t": 102.55648040771484, "r": 547.23853, "b": 125.00703430175781, "coord_origin": "TOPLEFT"}, "confidence": 0.9487622976303101, "cells": [{"id": 4, "text": "1.", "bbox": {"l": 136.8, "t": 103.48845999999992, "r": 145.08908, "b": 112.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Confirm that the ADMIN user is the user of the session by running the first SQL statement, ", "bbox": {"l": 147.8521, "t": 103.48845999999992, "r": 547.23853, "b": 112.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "as shown in Figure 4-56. In this example, VGLUCCHESS is an ADMIN user.", "bbox": {"l": 151.20016, "t": 115.48828000000003, "r": 487.41986, "b": 124.70129000000009, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 136.44989013671875, "t": 224.8011932373047, "r": 274.63858, "b": 234.12298999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.8895819187164307, "cells": [{"id": 7, "text": "Figure 4-56 ADMIN session user ", "bbox": {"l": 136.8, "t": 225.79803000000004, "r": 274.63858, "b": 234.12298999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.9615936279297, "t": 250.71633911132812, "r": 537.45203, "b": 272.96155, "coord_origin": "TOPLEFT"}, "confidence": 0.9431179761886597, "cells": [{"id": 8, "text": "2.", "bbox": {"l": 136.8, "t": 251.74872000000005, "r": 145.19705, "b": 260.96173, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "The number of rows that the ADMIN user can see is shown in Figure 4-57. The ADMIN ", "bbox": {"l": 147.99605, "t": 251.74872000000005, "r": 537.45203, "b": 260.96173, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "user can see all the rows.", "bbox": {"l": 151.20016, "t": 263.74854000000005, "r": 264.17142, "b": 272.96155, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "caption", "bbox": {"l": 136.13417053222656, "t": 371.2900695800781, "r": 457.3196716308594, "b": 380.5198974609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9259661436080933, "cells": [{"id": 11, "text": "Figure 4-57 Number of rows that the ADMIN can see in the CUSTOMERS table", "bbox": {"l": 136.8, "t": 372.138, "r": 457.1981799999999, "b": 380.46301, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 136.3792266845703, "t": 287.3948059082031, "r": 382.5545654296875, "b": 368.70892333984375, "coord_origin": "TOPLEFT"}, "confidence": 0.7004774212837219, "cells": []}, {"id": 9, "label": "picture", "bbox": {"l": 136.20846557617188, "t": 138.96017456054688, "r": 352.89752197265625, "b": 222.64027404785156, "coord_origin": "TOPLEFT"}, "confidence": 0.6416024565696716, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 85, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.99982833862305, "t": 754.1723022460938, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9086830019950867, "cells": [{"id": 0, "text": "70 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "70"}, {"label": "page_footer", "id": 1, "page_no": 85, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.3930892944336, "t": 754.6930541992188, "r": 334.42142, "b": 763.9622192382812, "coord_origin": "TOPLEFT"}, "confidence": 0.9444864988327026, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "section_header", "id": 2, "page_no": 85, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 136.52813720703125, "t": 70.49939727783203, "r": 361.2876, "b": 82.46398999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9242165684700012, "cells": [{"id": 2, "text": "Data access for ADMIN user with RCAC", "bbox": {"l": 136.8, "t": 71.36395000000005, "r": 361.2876, "b": 82.46398999999997, "coord_origin": "TOPLEFT"}}]}, "text": "Data access for ADMIN user with RCAC"}, {"label": "text", "id": 3, "page_no": 85, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.3176727294922, "t": 85.13993835449219, "r": 448.12963999999994, "b": 95.72167999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9380269646644592, "cells": [{"id": 3, "text": "To test an ADMIN (VGLUCCHESS) user, complete the following steps:", "bbox": {"l": 136.8, "t": 86.50867000000005, "r": 448.12963999999994, "b": 95.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "To test an ADMIN (VGLUCCHESS) user, complete the following steps:"}, {"label": "list_item", "id": 4, "page_no": 85, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.8, "t": 102.55648040771484, "r": 547.23853, "b": 125.00703430175781, "coord_origin": "TOPLEFT"}, "confidence": 0.9487622976303101, "cells": [{"id": 4, "text": "1.", "bbox": {"l": 136.8, "t": 103.48845999999992, "r": 145.08908, "b": 112.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Confirm that the ADMIN user is the user of the session by running the first SQL statement, ", "bbox": {"l": 147.8521, "t": 103.48845999999992, "r": 547.23853, "b": 112.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "as shown in Figure 4-56. In this example, VGLUCCHESS is an ADMIN user.", "bbox": {"l": 151.20016, "t": 115.48828000000003, "r": 487.41986, "b": 124.70129000000009, "coord_origin": "TOPLEFT"}}]}, "text": "1. Confirm that the ADMIN user is the user of the session by running the first SQL statement, as shown in Figure 4-56. In this example, VGLUCCHESS is an ADMIN user."}, {"label": "caption", "id": 5, "page_no": 85, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.44989013671875, "t": 224.8011932373047, "r": 274.63858, "b": 234.12298999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.8895819187164307, "cells": [{"id": 7, "text": "Figure 4-56 ADMIN session user ", "bbox": {"l": 136.8, "t": 225.79803000000004, "r": 274.63858, "b": 234.12298999999996, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-56 ADMIN session user"}, {"label": "list_item", "id": 6, "page_no": 85, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.9615936279297, "t": 250.71633911132812, "r": 537.45203, "b": 272.96155, "coord_origin": "TOPLEFT"}, "confidence": 0.9431179761886597, "cells": [{"id": 8, "text": "2.", "bbox": {"l": 136.8, "t": 251.74872000000005, "r": 145.19705, "b": 260.96173, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "The number of rows that the ADMIN user can see is shown in Figure 4-57. The ADMIN ", "bbox": {"l": 147.99605, "t": 251.74872000000005, "r": 537.45203, "b": 260.96173, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "user can see all the rows.", "bbox": {"l": 151.20016, "t": 263.74854000000005, "r": 264.17142, "b": 272.96155, "coord_origin": "TOPLEFT"}}]}, "text": "2. The number of rows that the ADMIN user can see is shown in Figure 4-57. The ADMIN user can see all the rows."}, {"label": "caption", "id": 7, "page_no": 85, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 136.13417053222656, "t": 371.2900695800781, "r": 457.3196716308594, "b": 380.5198974609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9259661436080933, "cells": [{"id": 11, "text": "Figure 4-57 Number of rows that the ADMIN can see in the CUSTOMERS table", "bbox": {"l": 136.8, "t": 372.138, "r": 457.1981799999999, "b": 380.46301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-57 Number of rows that the ADMIN can see in the CUSTOMERS table"}, {"label": "picture", "id": 8, "page_no": 85, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 136.3792266845703, "t": 287.3948059082031, "r": 382.5545654296875, "b": 368.70892333984375, "coord_origin": "TOPLEFT"}, "confidence": 0.7004774212837219, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 9, "page_no": 85, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 136.20846557617188, "t": 138.96017456054688, "r": 352.89752197265625, "b": 222.64027404785156, "coord_origin": "TOPLEFT"}, "confidence": 0.6416024565696716, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "section_header", "id": 2, "page_no": 85, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 136.52813720703125, "t": 70.49939727783203, "r": 361.2876, "b": 82.46398999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9242165684700012, "cells": [{"id": 2, "text": "Data access for ADMIN user with RCAC", "bbox": {"l": 136.8, "t": 71.36395000000005, "r": 361.2876, "b": 82.46398999999997, "coord_origin": "TOPLEFT"}}]}, "text": "Data access for ADMIN user with RCAC"}, {"label": "text", "id": 3, "page_no": 85, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.3176727294922, "t": 85.13993835449219, "r": 448.12963999999994, "b": 95.72167999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9380269646644592, "cells": [{"id": 3, "text": "To test an ADMIN (VGLUCCHESS) user, complete the following steps:", "bbox": {"l": 136.8, "t": 86.50867000000005, "r": 448.12963999999994, "b": 95.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "To test an ADMIN (VGLUCCHESS) user, complete the following steps:"}, {"label": "list_item", "id": 4, "page_no": 85, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.8, "t": 102.55648040771484, "r": 547.23853, "b": 125.00703430175781, "coord_origin": "TOPLEFT"}, "confidence": 0.9487622976303101, "cells": [{"id": 4, "text": "1.", "bbox": {"l": 136.8, "t": 103.48845999999992, "r": 145.08908, "b": 112.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Confirm that the ADMIN user is the user of the session by running the first SQL statement, ", "bbox": {"l": 147.8521, "t": 103.48845999999992, "r": 547.23853, "b": 112.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "as shown in Figure 4-56. In this example, VGLUCCHESS is an ADMIN user.", "bbox": {"l": 151.20016, "t": 115.48828000000003, "r": 487.41986, "b": 124.70129000000009, "coord_origin": "TOPLEFT"}}]}, "text": "1. Confirm that the ADMIN user is the user of the session by running the first SQL statement, as shown in Figure 4-56. In this example, VGLUCCHESS is an ADMIN user."}, {"label": "caption", "id": 5, "page_no": 85, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.44989013671875, "t": 224.8011932373047, "r": 274.63858, "b": 234.12298999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.8895819187164307, "cells": [{"id": 7, "text": "Figure 4-56 ADMIN session user ", "bbox": {"l": 136.8, "t": 225.79803000000004, "r": 274.63858, "b": 234.12298999999996, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-56 ADMIN session user"}, {"label": "list_item", "id": 6, "page_no": 85, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.9615936279297, "t": 250.71633911132812, "r": 537.45203, "b": 272.96155, "coord_origin": "TOPLEFT"}, "confidence": 0.9431179761886597, "cells": [{"id": 8, "text": "2.", "bbox": {"l": 136.8, "t": 251.74872000000005, "r": 145.19705, "b": 260.96173, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "The number of rows that the ADMIN user can see is shown in Figure 4-57. The ADMIN ", "bbox": {"l": 147.99605, "t": 251.74872000000005, "r": 537.45203, "b": 260.96173, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "user can see all the rows.", "bbox": {"l": 151.20016, "t": 263.74854000000005, "r": 264.17142, "b": 272.96155, "coord_origin": "TOPLEFT"}}]}, "text": "2. The number of rows that the ADMIN user can see is shown in Figure 4-57. The ADMIN user can see all the rows."}, {"label": "caption", "id": 7, "page_no": 85, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 136.13417053222656, "t": 371.2900695800781, "r": 457.3196716308594, "b": 380.5198974609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9259661436080933, "cells": [{"id": 11, "text": "Figure 4-57 Number of rows that the ADMIN can see in the CUSTOMERS table", "bbox": {"l": 136.8, "t": 372.138, "r": 457.1981799999999, "b": 380.46301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-57 Number of rows that the ADMIN can see in the CUSTOMERS table"}, {"label": "picture", "id": 8, "page_no": 85, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 136.3792266845703, "t": 287.3948059082031, "r": 382.5545654296875, "b": 368.70892333984375, "coord_origin": "TOPLEFT"}, "confidence": 0.7004774212837219, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 9, "page_no": 85, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 136.20846557617188, "t": 138.96017456054688, "r": 352.89752197265625, "b": 222.64027404785156, "coord_origin": "TOPLEFT"}, "confidence": 0.6416024565696716, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 85, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.99982833862305, "t": 754.1723022460938, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9086830019950867, "cells": [{"id": 0, "text": "70 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "70"}, {"label": "page_footer", "id": 1, "page_no": 85, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.3930892944336, "t": 754.6930541992188, "r": 334.42142, "b": 763.9622192382812, "coord_origin": "TOPLEFT"}, "confidence": 0.9444864988327026, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 86, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "71", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "3.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.19983, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The result of the third SQL statement is shown in Figure 4-58. There are no masked ", "bbox": {"l": 147.99991, "t": 71.50903000000005, "r": 524.19788, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "columns.", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 191.06964, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Figure 4-58 SQL statement that is run by the ADMIN user - no masked columns", "bbox": {"l": 64.800003, "t": 479.298, "r": 386.27728, "b": 487.62302, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Data access for WEBUSER user with RCAC", "bbox": {"l": 136.8, "t": 505.10391, "r": 383.07721, "b": 516.2039199999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "To test a CUSTOMERS (WEBUSER) user that accesses the database by using the web ", "bbox": {"l": 136.8, "t": 520.24872, "r": 527.58466, "b": 529.4617000000001, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "application, complete the following steps:", "bbox": {"l": 136.80002, "t": 532.2484999999999, "r": 317.9585, "b": 541.4615200000001, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "1.", "bbox": {"l": 136.80002, "t": 549.28809, "r": 145.21213, "b": 558.50108, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Confirm that the user is the user of the session by running the first SQL statement, as ", "bbox": {"l": 148.01616, "t": 549.28809, "r": 531.48303, "b": 558.50108, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "shown in Figure 4-59. In this example, WEBUSER is a CUSTOMER user.", "bbox": {"l": 151.20018, "t": 561.2878900000001, "r": 475.2537500000001, "b": 570.50089, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Figure 4-59 WEBUSER session user", "bbox": {"l": 136.8, "t": 676.998, "r": 288.54453, "b": 685.323, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 214.297607421875, "t": 754.7944946289062, "r": 523.59357, "b": 763.9957275390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9579306244850159, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.4384765625, "t": 754.1445922851562, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9092021584510803, "cells": [{"id": 1, "text": "71", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 136.0950164794922, "t": 70.5864028930664, "r": 524.19788, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9504329562187195, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.19983, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The result of the third SQL statement is shown in Figure 4-58. There are no masked ", "bbox": {"l": 147.99991, "t": 71.50903000000005, "r": 524.19788, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "columns.", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 191.06964, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.27821350097656, "t": 478.5440979003906, "r": 386.91961669921875, "b": 488.0338134765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9340198636054993, "cells": [{"id": 5, "text": "Figure 4-58 SQL statement that is run by the ADMIN user - no masked columns", "bbox": {"l": 64.800003, "t": 479.298, "r": 386.27728, "b": 487.62302, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 136.49583435058594, "t": 504.4722595214844, "r": 383.07721, "b": 516.2039199999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9497081637382507, "cells": [{"id": 6, "text": "Data access for WEBUSER user with RCAC", "bbox": {"l": 136.8, "t": 505.10391, "r": 383.07721, "b": 516.2039199999999, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.1496124267578, "t": 519.399169921875, "r": 527.58466, "b": 541.5465698242188, "coord_origin": "TOPLEFT"}, "confidence": 0.9660984873771667, "cells": [{"id": 7, "text": "To test a CUSTOMERS (WEBUSER) user that accesses the database by using the web ", "bbox": {"l": 136.8, "t": 520.24872, "r": 527.58466, "b": 529.4617000000001, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "application, complete the following steps:", "bbox": {"l": 136.80002, "t": 532.2484999999999, "r": 317.9585, "b": 541.4615200000001, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 136.61180114746094, "t": 548.59814453125, "r": 531.48303, "b": 571.005126953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9623847007751465, "cells": [{"id": 9, "text": "1.", "bbox": {"l": 136.80002, "t": 549.28809, "r": 145.21213, "b": 558.50108, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Confirm that the user is the user of the session by running the first SQL statement, as ", "bbox": {"l": 148.01616, "t": 549.28809, "r": 531.48303, "b": 558.50108, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "shown in Figure 4-59. In this example, WEBUSER is a CUSTOMER user.", "bbox": {"l": 151.20018, "t": 561.2878900000001, "r": 475.2537500000001, "b": 570.50089, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "caption", "bbox": {"l": 136.1943817138672, "t": 675.9807739257812, "r": 289.5948791503906, "b": 685.4607543945312, "coord_origin": "TOPLEFT"}, "confidence": 0.9459738731384277, "cells": [{"id": 12, "text": "Figure 4-59 WEBUSER session user", "bbox": {"l": 136.8, "t": 676.998, "r": 288.54453, "b": 685.323, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 136.11729431152344, "t": 584.64208984375, "r": 354.23046875, "b": 673.7885131835938, "coord_origin": "TOPLEFT"}, "confidence": 0.949955403804779, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 86, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.297607421875, "t": 754.7944946289062, "r": 523.59357, "b": 763.9957275390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9579306244850159, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 86, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.4384765625, "t": 754.1445922851562, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9092021584510803, "cells": [{"id": 1, "text": "71", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "71"}, {"label": "list_item", "id": 2, "page_no": 86, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.0950164794922, "t": 70.5864028930664, "r": 524.19788, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9504329562187195, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.19983, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The result of the third SQL statement is shown in Figure 4-58. There are no masked ", "bbox": {"l": 147.99991, "t": 71.50903000000005, "r": 524.19788, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "columns.", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 191.06964, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "3. The result of the third SQL statement is shown in Figure 4-58. There are no masked columns."}, {"label": "caption", "id": 3, "page_no": 86, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.27821350097656, "t": 478.5440979003906, "r": 386.91961669921875, "b": 488.0338134765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9340198636054993, "cells": [{"id": 5, "text": "Figure 4-58 SQL statement that is run by the ADMIN user - no masked columns", "bbox": {"l": 64.800003, "t": 479.298, "r": 386.27728, "b": 487.62302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-58 SQL statement that is run by the ADMIN user - no masked columns"}, {"label": "section_header", "id": 4, "page_no": 86, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 136.49583435058594, "t": 504.4722595214844, "r": 383.07721, "b": 516.2039199999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9497081637382507, "cells": [{"id": 6, "text": "Data access for WEBUSER user with RCAC", "bbox": {"l": 136.8, "t": 505.10391, "r": 383.07721, "b": 516.2039199999999, "coord_origin": "TOPLEFT"}}]}, "text": "Data access for WEBUSER user with RCAC"}, {"label": "text", "id": 5, "page_no": 86, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.1496124267578, "t": 519.399169921875, "r": 527.58466, "b": 541.5465698242188, "coord_origin": "TOPLEFT"}, "confidence": 0.9660984873771667, "cells": [{"id": 7, "text": "To test a CUSTOMERS (WEBUSER) user that accesses the database by using the web ", "bbox": {"l": 136.8, "t": 520.24872, "r": 527.58466, "b": 529.4617000000001, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "application, complete the following steps:", "bbox": {"l": 136.80002, "t": 532.2484999999999, "r": 317.9585, "b": 541.4615200000001, "coord_origin": "TOPLEFT"}}]}, "text": "To test a CUSTOMERS (WEBUSER) user that accesses the database by using the web application, complete the following steps:"}, {"label": "list_item", "id": 6, "page_no": 86, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.61180114746094, "t": 548.59814453125, "r": 531.48303, "b": 571.005126953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9623847007751465, "cells": [{"id": 9, "text": "1.", "bbox": {"l": 136.80002, "t": 549.28809, "r": 145.21213, "b": 558.50108, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Confirm that the user is the user of the session by running the first SQL statement, as ", "bbox": {"l": 148.01616, "t": 549.28809, "r": 531.48303, "b": 558.50108, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "shown in Figure 4-59. In this example, WEBUSER is a CUSTOMER user.", "bbox": {"l": 151.20018, "t": 561.2878900000001, "r": 475.2537500000001, "b": 570.50089, "coord_origin": "TOPLEFT"}}]}, "text": "1. Confirm that the user is the user of the session by running the first SQL statement, as shown in Figure 4-59. In this example, WEBUSER is a CUSTOMER user."}, {"label": "caption", "id": 7, "page_no": 86, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 136.1943817138672, "t": 675.9807739257812, "r": 289.5948791503906, "b": 685.4607543945312, "coord_origin": "TOPLEFT"}, "confidence": 0.9459738731384277, "cells": [{"id": 12, "text": "Figure 4-59 WEBUSER session user", "bbox": {"l": 136.8, "t": 676.998, "r": 288.54453, "b": 685.323, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-59 WEBUSER session user"}, {"label": "picture", "id": 8, "page_no": 86, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 136.11729431152344, "t": 584.64208984375, "r": 354.23046875, "b": 673.7885131835938, "coord_origin": "TOPLEFT"}, "confidence": 0.949955403804779, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 86, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.0950164794922, "t": 70.5864028930664, "r": 524.19788, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9504329562187195, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.19983, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The result of the third SQL statement is shown in Figure 4-58. There are no masked ", "bbox": {"l": 147.99991, "t": 71.50903000000005, "r": 524.19788, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "columns.", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 191.06964, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "3. The result of the third SQL statement is shown in Figure 4-58. There are no masked columns."}, {"label": "caption", "id": 3, "page_no": 86, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.27821350097656, "t": 478.5440979003906, "r": 386.91961669921875, "b": 488.0338134765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9340198636054993, "cells": [{"id": 5, "text": "Figure 4-58 SQL statement that is run by the ADMIN user - no masked columns", "bbox": {"l": 64.800003, "t": 479.298, "r": 386.27728, "b": 487.62302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-58 SQL statement that is run by the ADMIN user - no masked columns"}, {"label": "section_header", "id": 4, "page_no": 86, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 136.49583435058594, "t": 504.4722595214844, "r": 383.07721, "b": 516.2039199999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9497081637382507, "cells": [{"id": 6, "text": "Data access for WEBUSER user with RCAC", "bbox": {"l": 136.8, "t": 505.10391, "r": 383.07721, "b": 516.2039199999999, "coord_origin": "TOPLEFT"}}]}, "text": "Data access for WEBUSER user with RCAC"}, {"label": "text", "id": 5, "page_no": 86, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.1496124267578, "t": 519.399169921875, "r": 527.58466, "b": 541.5465698242188, "coord_origin": "TOPLEFT"}, "confidence": 0.9660984873771667, "cells": [{"id": 7, "text": "To test a CUSTOMERS (WEBUSER) user that accesses the database by using the web ", "bbox": {"l": 136.8, "t": 520.24872, "r": 527.58466, "b": 529.4617000000001, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "application, complete the following steps:", "bbox": {"l": 136.80002, "t": 532.2484999999999, "r": 317.9585, "b": 541.4615200000001, "coord_origin": "TOPLEFT"}}]}, "text": "To test a CUSTOMERS (WEBUSER) user that accesses the database by using the web application, complete the following steps:"}, {"label": "list_item", "id": 6, "page_no": 86, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.61180114746094, "t": 548.59814453125, "r": 531.48303, "b": 571.005126953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9623847007751465, "cells": [{"id": 9, "text": "1.", "bbox": {"l": 136.80002, "t": 549.28809, "r": 145.21213, "b": 558.50108, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Confirm that the user is the user of the session by running the first SQL statement, as ", "bbox": {"l": 148.01616, "t": 549.28809, "r": 531.48303, "b": 558.50108, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "shown in Figure 4-59. In this example, WEBUSER is a CUSTOMER user.", "bbox": {"l": 151.20018, "t": 561.2878900000001, "r": 475.2537500000001, "b": 570.50089, "coord_origin": "TOPLEFT"}}]}, "text": "1. Confirm that the user is the user of the session by running the first SQL statement, as shown in Figure 4-59. In this example, WEBUSER is a CUSTOMER user."}, {"label": "caption", "id": 7, "page_no": 86, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 136.1943817138672, "t": 675.9807739257812, "r": 289.5948791503906, "b": 685.4607543945312, "coord_origin": "TOPLEFT"}, "confidence": 0.9459738731384277, "cells": [{"id": 12, "text": "Figure 4-59 WEBUSER session user", "bbox": {"l": 136.8, "t": 676.998, "r": 288.54453, "b": 685.323, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-59 WEBUSER session user"}, {"label": "picture", "id": 8, "page_no": 86, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 136.11729431152344, "t": 584.64208984375, "r": 354.23046875, "b": 673.7885131835938, "coord_origin": "TOPLEFT"}, "confidence": 0.949955403804779, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 86, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.297607421875, "t": 754.7944946289062, "r": 523.59357, "b": 763.9957275390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9579306244850159, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 86, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.4384765625, "t": 754.1445922851562, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9092021584510803, "cells": [{"id": 1, "text": "71", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "71"}]}}, {"page_no": 87, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "72 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "2.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.13539, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "A global variable (CUSTOMER_LOGIN_ID) is set by the web application and then is used ", "bbox": {"l": 147.91383, "t": 71.50867000000005, "r": 547.29254, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "to check the row permissions. Figure 4-60 shows setting the global variable by using the ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 542.53851, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "customer login ID.", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 231.01662000000002, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Figure 4-60 Setting the global variable CUSTOMER_LOGIN_ID", "bbox": {"l": 136.8, "t": 224.41803000000004, "r": 393.9201, "b": 232.74298, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "3.", "bbox": {"l": 136.8, "t": 250.36870999999996, "r": 145.17363, "b": 259.58173, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Verify that the global variable was set with the correct value by clicking the ", "bbox": {"l": 147.96483, "t": 250.36870999999996, "r": 480.55042, "b": 259.58173, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Global ", "bbox": {"l": 480.53955, "t": 250.36870999999996, "r": 514.37964, "b": 259.58173, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Variable", "bbox": {"l": 151.19922, "t": 262.36852999999996, "r": 188.79124, "b": 271.58154, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": " tab, as shown in Figure 4-61.", "bbox": {"l": 189.35896, "t": 262.36852999999996, "r": 320.52722, "b": 271.58154, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Figure 4-61 Viewing the global variable value", "bbox": {"l": 136.8, "t": 522.31799, "r": 320.45041, "b": 530.64301, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "4.", "bbox": {"l": 136.8, "t": 548.26872, "r": 145.19461, "b": 557.48172, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "The number of rows that the WEBUSER can see is shown in Figure 4-62. This user can ", "bbox": {"l": 147.99278, "t": 548.26872, "r": 541.26068, "b": 557.48172, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "see only the one row that belongs to his web-based user ID.", "bbox": {"l": 151.20018, "t": 560.2685200000001, "r": 415.91998, "b": 569.48152, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Figure 4-62 Number of rows that the WEBUSER can see in the CUSTOMERS table", "bbox": {"l": 136.8, "t": 687.0779, "r": 473.70947, "b": 695.402901, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.95808410644531, "t": 754.2484130859375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9073862433433533, "cells": [{"id": 0, "text": "72 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.32298278808594, "t": 754.67529296875, "r": 334.42142, "b": 764.010009765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9502434730529785, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 135.97177124023438, "t": 70.53437042236328, "r": 547.29254, "b": 105.20692443847656, "coord_origin": "TOPLEFT"}, "confidence": 0.9725183844566345, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.13539, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "A global variable (CUSTOMER_LOGIN_ID) is set by the web application and then is used ", "bbox": {"l": 147.91383, "t": 71.50867000000005, "r": 547.29254, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "to check the row permissions. Figure 4-60 shows setting the global variable by using the ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 542.53851, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "customer login ID.", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 231.01662000000002, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.13768005371094, "t": 223.07266235351562, "r": 394.4398498535156, "b": 232.92161560058594, "coord_origin": "TOPLEFT"}, "confidence": 0.9459361433982849, "cells": [{"id": 6, "text": "Figure 4-60 Setting the global variable CUSTOMER_LOGIN_ID", "bbox": {"l": 136.8, "t": 224.41803000000004, "r": 393.9201, "b": 232.74298, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 135.97732543945312, "t": 249.29721069335938, "r": 514.37964, "b": 271.60693359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9487968683242798, "cells": [{"id": 7, "text": "3.", "bbox": {"l": 136.8, "t": 250.36870999999996, "r": 145.17363, "b": 259.58173, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Verify that the global variable was set with the correct value by clicking the ", "bbox": {"l": 147.96483, "t": 250.36870999999996, "r": 480.55042, "b": 259.58173, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Global ", "bbox": {"l": 480.53955, "t": 250.36870999999996, "r": 514.37964, "b": 259.58173, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Variable", "bbox": {"l": 151.19922, "t": 262.36852999999996, "r": 188.79124, "b": 271.58154, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": " tab, as shown in Figure 4-61.", "bbox": {"l": 189.35896, "t": 262.36852999999996, "r": 320.52722, "b": 271.58154, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 136.13868713378906, "t": 521.3612060546875, "r": 320.7819519042969, "b": 530.787841796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9481346607208252, "cells": [{"id": 12, "text": "Figure 4-61 Viewing the global variable value", "bbox": {"l": 136.8, "t": 522.31799, "r": 320.45041, "b": 530.64301, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.78077697753906, "t": 547.3094482421875, "r": 541.26068, "b": 569.7304077148438, "coord_origin": "TOPLEFT"}, "confidence": 0.9655671715736389, "cells": [{"id": 13, "text": "4.", "bbox": {"l": 136.8, "t": 548.26872, "r": 145.19461, "b": 557.48172, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "The number of rows that the WEBUSER can see is shown in Figure 4-62. This user can ", "bbox": {"l": 147.99278, "t": 548.26872, "r": 541.26068, "b": 557.48172, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "see only the one row that belongs to his web-based user ID.", "bbox": {"l": 151.20018, "t": 560.2685200000001, "r": 415.91998, "b": 569.48152, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "caption", "bbox": {"l": 136.2648468017578, "t": 685.8698120117188, "r": 474.20855712890625, "b": 695.402901, "coord_origin": "TOPLEFT"}, "confidence": 0.9365612864494324, "cells": [{"id": 16, "text": "Figure 4-62 Number of rows that the WEBUSER can see in the CUSTOMERS table", "bbox": {"l": 136.8, "t": 687.0779, "r": 473.70947, "b": 695.402901, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 136.12271118164062, "t": 285.7159118652344, "r": 395.9803466796875, "b": 519.3853149414062, "coord_origin": "TOPLEFT"}, "confidence": 0.9821423888206482, "cells": []}, {"id": 9, "label": "picture", "bbox": {"l": 136.00576782226562, "t": 584.1505737304688, "r": 382.0115966796875, "b": 684.032470703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9579524993896484, "cells": []}, {"id": 10, "label": "picture", "bbox": {"l": 135.9663848876953, "t": 119.12814331054688, "r": 547.538818359375, "b": 221.56602478027344, "coord_origin": "TOPLEFT"}, "confidence": 0.9356961846351624, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 87, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.95808410644531, "t": 754.2484130859375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9073862433433533, "cells": [{"id": 0, "text": "72 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "72"}, {"label": "page_footer", "id": 1, "page_no": 87, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.32298278808594, "t": 754.67529296875, "r": 334.42142, "b": 764.010009765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9502434730529785, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "list_item", "id": 2, "page_no": 87, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.97177124023438, "t": 70.53437042236328, "r": 547.29254, "b": 105.20692443847656, "coord_origin": "TOPLEFT"}, "confidence": 0.9725183844566345, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.13539, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "A global variable (CUSTOMER_LOGIN_ID) is set by the web application and then is used ", "bbox": {"l": 147.91383, "t": 71.50867000000005, "r": 547.29254, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "to check the row permissions. Figure 4-60 shows setting the global variable by using the ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 542.53851, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "customer login ID.", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 231.01662000000002, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}]}, "text": "2. A global variable (CUSTOMER_LOGIN_ID) is set by the web application and then is used to check the row permissions. Figure 4-60 shows setting the global variable by using the customer login ID."}, {"label": "caption", "id": 3, "page_no": 87, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.13768005371094, "t": 223.07266235351562, "r": 394.4398498535156, "b": 232.92161560058594, "coord_origin": "TOPLEFT"}, "confidence": 0.9459361433982849, "cells": [{"id": 6, "text": "Figure 4-60 Setting the global variable CUSTOMER_LOGIN_ID", "bbox": {"l": 136.8, "t": 224.41803000000004, "r": 393.9201, "b": 232.74298, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-60 Setting the global variable CUSTOMER_LOGIN_ID"}, {"label": "list_item", "id": 4, "page_no": 87, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.97732543945312, "t": 249.29721069335938, "r": 514.37964, "b": 271.60693359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9487968683242798, "cells": [{"id": 7, "text": "3.", "bbox": {"l": 136.8, "t": 250.36870999999996, "r": 145.17363, "b": 259.58173, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Verify that the global variable was set with the correct value by clicking the ", "bbox": {"l": 147.96483, "t": 250.36870999999996, "r": 480.55042, "b": 259.58173, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Global ", "bbox": {"l": 480.53955, "t": 250.36870999999996, "r": 514.37964, "b": 259.58173, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Variable", "bbox": {"l": 151.19922, "t": 262.36852999999996, "r": 188.79124, "b": 271.58154, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": " tab, as shown in Figure 4-61.", "bbox": {"l": 189.35896, "t": 262.36852999999996, "r": 320.52722, "b": 271.58154, "coord_origin": "TOPLEFT"}}]}, "text": "3. Verify that the global variable was set with the correct value by clicking the Global Variable tab, as shown in Figure 4-61."}, {"label": "caption", "id": 5, "page_no": 87, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.13868713378906, "t": 521.3612060546875, "r": 320.7819519042969, "b": 530.787841796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9481346607208252, "cells": [{"id": 12, "text": "Figure 4-61 Viewing the global variable value", "bbox": {"l": 136.8, "t": 522.31799, "r": 320.45041, "b": 530.64301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-61 Viewing the global variable value"}, {"label": "list_item", "id": 6, "page_no": 87, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.78077697753906, "t": 547.3094482421875, "r": 541.26068, "b": 569.7304077148438, "coord_origin": "TOPLEFT"}, "confidence": 0.9655671715736389, "cells": [{"id": 13, "text": "4.", "bbox": {"l": 136.8, "t": 548.26872, "r": 145.19461, "b": 557.48172, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "The number of rows that the WEBUSER can see is shown in Figure 4-62. This user can ", "bbox": {"l": 147.99278, "t": 548.26872, "r": 541.26068, "b": 557.48172, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "see only the one row that belongs to his web-based user ID.", "bbox": {"l": 151.20018, "t": 560.2685200000001, "r": 415.91998, "b": 569.48152, "coord_origin": "TOPLEFT"}}]}, "text": "4. The number of rows that the WEBUSER can see is shown in Figure 4-62. This user can see only the one row that belongs to his web-based user ID."}, {"label": "caption", "id": 7, "page_no": 87, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 136.2648468017578, "t": 685.8698120117188, "r": 474.20855712890625, "b": 695.402901, "coord_origin": "TOPLEFT"}, "confidence": 0.9365612864494324, "cells": [{"id": 16, "text": "Figure 4-62 Number of rows that the WEBUSER can see in the CUSTOMERS table", "bbox": {"l": 136.8, "t": 687.0779, "r": 473.70947, "b": 695.402901, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-62 Number of rows that the WEBUSER can see in the CUSTOMERS table"}, {"label": "picture", "id": 8, "page_no": 87, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 136.12271118164062, "t": 285.7159118652344, "r": 395.9803466796875, "b": 519.3853149414062, "coord_origin": "TOPLEFT"}, "confidence": 0.9821423888206482, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 9, "page_no": 87, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 136.00576782226562, "t": 584.1505737304688, "r": 382.0115966796875, "b": 684.032470703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9579524993896484, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 10, "page_no": 87, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 135.9663848876953, "t": 119.12814331054688, "r": 547.538818359375, "b": 221.56602478027344, "coord_origin": "TOPLEFT"}, "confidence": 0.9356961846351624, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 87, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.97177124023438, "t": 70.53437042236328, "r": 547.29254, "b": 105.20692443847656, "coord_origin": "TOPLEFT"}, "confidence": 0.9725183844566345, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.13539, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "A global variable (CUSTOMER_LOGIN_ID) is set by the web application and then is used ", "bbox": {"l": 147.91383, "t": 71.50867000000005, "r": 547.29254, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "to check the row permissions. Figure 4-60 shows setting the global variable by using the ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 542.53851, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "customer login ID.", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 231.01662000000002, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}]}, "text": "2. A global variable (CUSTOMER_LOGIN_ID) is set by the web application and then is used to check the row permissions. Figure 4-60 shows setting the global variable by using the customer login ID."}, {"label": "caption", "id": 3, "page_no": 87, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.13768005371094, "t": 223.07266235351562, "r": 394.4398498535156, "b": 232.92161560058594, "coord_origin": "TOPLEFT"}, "confidence": 0.9459361433982849, "cells": [{"id": 6, "text": "Figure 4-60 Setting the global variable CUSTOMER_LOGIN_ID", "bbox": {"l": 136.8, "t": 224.41803000000004, "r": 393.9201, "b": 232.74298, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-60 Setting the global variable CUSTOMER_LOGIN_ID"}, {"label": "list_item", "id": 4, "page_no": 87, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.97732543945312, "t": 249.29721069335938, "r": 514.37964, "b": 271.60693359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9487968683242798, "cells": [{"id": 7, "text": "3.", "bbox": {"l": 136.8, "t": 250.36870999999996, "r": 145.17363, "b": 259.58173, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Verify that the global variable was set with the correct value by clicking the ", "bbox": {"l": 147.96483, "t": 250.36870999999996, "r": 480.55042, "b": 259.58173, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Global ", "bbox": {"l": 480.53955, "t": 250.36870999999996, "r": 514.37964, "b": 259.58173, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Variable", "bbox": {"l": 151.19922, "t": 262.36852999999996, "r": 188.79124, "b": 271.58154, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": " tab, as shown in Figure 4-61.", "bbox": {"l": 189.35896, "t": 262.36852999999996, "r": 320.52722, "b": 271.58154, "coord_origin": "TOPLEFT"}}]}, "text": "3. Verify that the global variable was set with the correct value by clicking the Global Variable tab, as shown in Figure 4-61."}, {"label": "caption", "id": 5, "page_no": 87, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.13868713378906, "t": 521.3612060546875, "r": 320.7819519042969, "b": 530.787841796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9481346607208252, "cells": [{"id": 12, "text": "Figure 4-61 Viewing the global variable value", "bbox": {"l": 136.8, "t": 522.31799, "r": 320.45041, "b": 530.64301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-61 Viewing the global variable value"}, {"label": "list_item", "id": 6, "page_no": 87, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.78077697753906, "t": 547.3094482421875, "r": 541.26068, "b": 569.7304077148438, "coord_origin": "TOPLEFT"}, "confidence": 0.9655671715736389, "cells": [{"id": 13, "text": "4.", "bbox": {"l": 136.8, "t": 548.26872, "r": 145.19461, "b": 557.48172, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "The number of rows that the WEBUSER can see is shown in Figure 4-62. This user can ", "bbox": {"l": 147.99278, "t": 548.26872, "r": 541.26068, "b": 557.48172, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "see only the one row that belongs to his web-based user ID.", "bbox": {"l": 151.20018, "t": 560.2685200000001, "r": 415.91998, "b": 569.48152, "coord_origin": "TOPLEFT"}}]}, "text": "4. The number of rows that the WEBUSER can see is shown in Figure 4-62. This user can see only the one row that belongs to his web-based user ID."}, {"label": "caption", "id": 7, "page_no": 87, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 136.2648468017578, "t": 685.8698120117188, "r": 474.20855712890625, "b": 695.402901, "coord_origin": "TOPLEFT"}, "confidence": 0.9365612864494324, "cells": [{"id": 16, "text": "Figure 4-62 Number of rows that the WEBUSER can see in the CUSTOMERS table", "bbox": {"l": 136.8, "t": 687.0779, "r": 473.70947, "b": 695.402901, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-62 Number of rows that the WEBUSER can see in the CUSTOMERS table"}, {"label": "picture", "id": 8, "page_no": 87, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 136.12271118164062, "t": 285.7159118652344, "r": 395.9803466796875, "b": 519.3853149414062, "coord_origin": "TOPLEFT"}, "confidence": 0.9821423888206482, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 9, "page_no": 87, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 136.00576782226562, "t": 584.1505737304688, "r": 382.0115966796875, "b": 684.032470703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9579524993896484, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 10, "page_no": 87, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 135.9663848876953, "t": 119.12814331054688, "r": 547.538818359375, "b": 221.56602478027344, "coord_origin": "TOPLEFT"}, "confidence": 0.9356961846351624, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 87, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.95808410644531, "t": 754.2484130859375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9073862433433533, "cells": [{"id": 0, "text": "72 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "72"}, {"label": "page_footer", "id": 1, "page_no": 87, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.32298278808594, "t": 754.67529296875, "r": 334.42142, "b": 764.010009765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9502434730529785, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 88, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "73", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "5.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.19983, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The result of the third SQL statement is shown in Figure 4-63. There are no masked ", "bbox": {"l": 147.99991, "t": 71.50903000000005, "r": 524.19788, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "columns, and the user can see only one row, which is the user\u2019s own row.", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 474.59003, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Figure 4-63 SQL statement that is run by WEBUSER - no masked columns", "bbox": {"l": 64.800003, "t": 253.69799999999998, "r": 367.66254, "b": 262.02295000000004, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Other examples of data access with RCAC", "bbox": {"l": 136.8, "t": 279.50397, "r": 377.4744, "b": 290.60400000000004, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "To run an SQL statement that lists all the accounts and current balance by customer, ", "bbox": {"l": 136.8, "t": 294.64871, "r": 512.95129, "b": 303.86169, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "complete the following steps:", "bbox": {"l": 136.8, "t": 306.64853, "r": 264.64957, "b": 315.86151, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "1.", "bbox": {"l": 136.8, "t": 323.68811, "r": 145.19756, "b": 332.90109000000007, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Run the SQL statement that is shown in Figure 4-64 using the WEBUSER user profile. ", "bbox": {"l": 147.99672, "t": 323.68811, "r": 535.26086, "b": 332.90109000000007, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "The SQL statement has no WHERE clause, but the WEBUSER can see only his ", "bbox": {"l": 151.20016, "t": 335.68793, "r": 508.49417, "b": 344.90091, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "accounts.", "bbox": {"l": 151.20016, "t": 347.68774, "r": 193.7981, "b": 356.90073, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Figure 4-64 List of accounts and current balance by customer using the WEBUSER user profile", "bbox": {"l": 136.8, "t": 544.81799, "r": 519.68433, "b": 553.14301, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 214.31243896484375, "t": 754.7880249023438, "r": 523.59357, "b": 764.0306396484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9599050283432007, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.3995361328125, "t": 754.3471069335938, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9170706868171692, "cells": [{"id": 1, "text": "73", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 136.2493438720703, "t": 70.56134033203125, "r": 524.19788, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9599125981330872, "cells": [{"id": 2, "text": "5.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.19983, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The result of the third SQL statement is shown in Figure 4-63. There are no masked ", "bbox": {"l": 147.99991, "t": 71.50903000000005, "r": 524.19788, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "columns, and the user can see only one row, which is the user\u2019s own row.", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 474.59003, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.18749237060547, "t": 252.73291015625, "r": 368.2061462402344, "b": 262.02295000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9425347447395325, "cells": [{"id": 5, "text": "Figure 4-63 SQL statement that is run by WEBUSER - no masked columns", "bbox": {"l": 64.800003, "t": 253.69799999999998, "r": 367.66254, "b": 262.02295000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 136.10256958007812, "t": 278.1611328125, "r": 377.4744, "b": 290.60400000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.956287682056427, "cells": [{"id": 6, "text": "Other examples of data access with RCAC", "bbox": {"l": 136.8, "t": 279.50397, "r": 377.4744, "b": 290.60400000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.91213989257812, "t": 293.9790344238281, "r": 512.95129, "b": 316.0233459472656, "coord_origin": "TOPLEFT"}, "confidence": 0.9553588032722473, "cells": [{"id": 7, "text": "To run an SQL statement that lists all the accounts and current balance by customer, ", "bbox": {"l": 136.8, "t": 294.64871, "r": 512.95129, "b": 303.86169, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "complete the following steps:", "bbox": {"l": 136.8, "t": 306.64853, "r": 264.64957, "b": 315.86151, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 136.5059051513672, "t": 322.4664001464844, "r": 535.26086, "b": 356.90073, "coord_origin": "TOPLEFT"}, "confidence": 0.9514802098274231, "cells": [{"id": 9, "text": "1.", "bbox": {"l": 136.8, "t": 323.68811, "r": 145.19756, "b": 332.90109000000007, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Run the SQL statement that is shown in Figure 4-64 using the WEBUSER user profile. ", "bbox": {"l": 147.99672, "t": 323.68811, "r": 535.26086, "b": 332.90109000000007, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "The SQL statement has no WHERE clause, but the WEBUSER can see only his ", "bbox": {"l": 151.20016, "t": 335.68793, "r": 508.49417, "b": 344.90091, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "accounts.", "bbox": {"l": 151.20016, "t": 347.68774, "r": 193.7981, "b": 356.90073, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "caption", "bbox": {"l": 136.13351440429688, "t": 544.0534057617188, "r": 520.2975463867188, "b": 553.3374633789062, "coord_origin": "TOPLEFT"}, "confidence": 0.9272187948226929, "cells": [{"id": 13, "text": "Figure 4-64 List of accounts and current balance by customer using the WEBUSER user profile", "bbox": {"l": 136.8, "t": 544.81799, "r": 519.68433, "b": 553.14301, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 64.07161712646484, "t": 107.4771728515625, "r": 546.6607055664062, "b": 250.95677185058594, "coord_origin": "TOPLEFT"}, "confidence": 0.9455775618553162, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 88, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.31243896484375, "t": 754.7880249023438, "r": 523.59357, "b": 764.0306396484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9599050283432007, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 88, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.3995361328125, "t": 754.3471069335938, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9170706868171692, "cells": [{"id": 1, "text": "73", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "73"}, {"label": "list_item", "id": 2, "page_no": 88, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.2493438720703, "t": 70.56134033203125, "r": 524.19788, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9599125981330872, "cells": [{"id": 2, "text": "5.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.19983, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The result of the third SQL statement is shown in Figure 4-63. There are no masked ", "bbox": {"l": 147.99991, "t": 71.50903000000005, "r": 524.19788, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "columns, and the user can see only one row, which is the user\u2019s own row.", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 474.59003, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "5. The result of the third SQL statement is shown in Figure 4-63. There are no masked columns, and the user can see only one row, which is the user\u2019s own row."}, {"label": "caption", "id": 3, "page_no": 88, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.18749237060547, "t": 252.73291015625, "r": 368.2061462402344, "b": 262.02295000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9425347447395325, "cells": [{"id": 5, "text": "Figure 4-63 SQL statement that is run by WEBUSER - no masked columns", "bbox": {"l": 64.800003, "t": 253.69799999999998, "r": 367.66254, "b": 262.02295000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-63 SQL statement that is run by WEBUSER - no masked columns"}, {"label": "section_header", "id": 4, "page_no": 88, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 136.10256958007812, "t": 278.1611328125, "r": 377.4744, "b": 290.60400000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.956287682056427, "cells": [{"id": 6, "text": "Other examples of data access with RCAC", "bbox": {"l": 136.8, "t": 279.50397, "r": 377.4744, "b": 290.60400000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Other examples of data access with RCAC"}, {"label": "text", "id": 5, "page_no": 88, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.91213989257812, "t": 293.9790344238281, "r": 512.95129, "b": 316.0233459472656, "coord_origin": "TOPLEFT"}, "confidence": 0.9553588032722473, "cells": [{"id": 7, "text": "To run an SQL statement that lists all the accounts and current balance by customer, ", "bbox": {"l": 136.8, "t": 294.64871, "r": 512.95129, "b": 303.86169, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "complete the following steps:", "bbox": {"l": 136.8, "t": 306.64853, "r": 264.64957, "b": 315.86151, "coord_origin": "TOPLEFT"}}]}, "text": "To run an SQL statement that lists all the accounts and current balance by customer, complete the following steps:"}, {"label": "list_item", "id": 6, "page_no": 88, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.5059051513672, "t": 322.4664001464844, "r": 535.26086, "b": 356.90073, "coord_origin": "TOPLEFT"}, "confidence": 0.9514802098274231, "cells": [{"id": 9, "text": "1.", "bbox": {"l": 136.8, "t": 323.68811, "r": 145.19756, "b": 332.90109000000007, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Run the SQL statement that is shown in Figure 4-64 using the WEBUSER user profile. ", "bbox": {"l": 147.99672, "t": 323.68811, "r": 535.26086, "b": 332.90109000000007, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "The SQL statement has no WHERE clause, but the WEBUSER can see only his ", "bbox": {"l": 151.20016, "t": 335.68793, "r": 508.49417, "b": 344.90091, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "accounts.", "bbox": {"l": 151.20016, "t": 347.68774, "r": 193.7981, "b": 356.90073, "coord_origin": "TOPLEFT"}}]}, "text": "1. Run the SQL statement that is shown in Figure 4-64 using the WEBUSER user profile. The SQL statement has no WHERE clause, but the WEBUSER can see only his accounts."}, {"label": "caption", "id": 7, "page_no": 88, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 136.13351440429688, "t": 544.0534057617188, "r": 520.2975463867188, "b": 553.3374633789062, "coord_origin": "TOPLEFT"}, "confidence": 0.9272187948226929, "cells": [{"id": 13, "text": "Figure 4-64 List of accounts and current balance by customer using the WEBUSER user profile", "bbox": {"l": 136.8, "t": 544.81799, "r": 519.68433, "b": 553.14301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-64 List of accounts and current balance by customer using the WEBUSER user profile"}, {"label": "picture", "id": 8, "page_no": 88, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 64.07161712646484, "t": 107.4771728515625, "r": 546.6607055664062, "b": 250.95677185058594, "coord_origin": "TOPLEFT"}, "confidence": 0.9455775618553162, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 88, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.2493438720703, "t": 70.56134033203125, "r": 524.19788, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9599125981330872, "cells": [{"id": 2, "text": "5.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.19983, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The result of the third SQL statement is shown in Figure 4-63. There are no masked ", "bbox": {"l": 147.99991, "t": 71.50903000000005, "r": 524.19788, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "columns, and the user can see only one row, which is the user\u2019s own row.", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 474.59003, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "5. The result of the third SQL statement is shown in Figure 4-63. There are no masked columns, and the user can see only one row, which is the user\u2019s own row."}, {"label": "caption", "id": 3, "page_no": 88, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.18749237060547, "t": 252.73291015625, "r": 368.2061462402344, "b": 262.02295000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9425347447395325, "cells": [{"id": 5, "text": "Figure 4-63 SQL statement that is run by WEBUSER - no masked columns", "bbox": {"l": 64.800003, "t": 253.69799999999998, "r": 367.66254, "b": 262.02295000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-63 SQL statement that is run by WEBUSER - no masked columns"}, {"label": "section_header", "id": 4, "page_no": 88, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 136.10256958007812, "t": 278.1611328125, "r": 377.4744, "b": 290.60400000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.956287682056427, "cells": [{"id": 6, "text": "Other examples of data access with RCAC", "bbox": {"l": 136.8, "t": 279.50397, "r": 377.4744, "b": 290.60400000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Other examples of data access with RCAC"}, {"label": "text", "id": 5, "page_no": 88, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.91213989257812, "t": 293.9790344238281, "r": 512.95129, "b": 316.0233459472656, "coord_origin": "TOPLEFT"}, "confidence": 0.9553588032722473, "cells": [{"id": 7, "text": "To run an SQL statement that lists all the accounts and current balance by customer, ", "bbox": {"l": 136.8, "t": 294.64871, "r": 512.95129, "b": 303.86169, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "complete the following steps:", "bbox": {"l": 136.8, "t": 306.64853, "r": 264.64957, "b": 315.86151, "coord_origin": "TOPLEFT"}}]}, "text": "To run an SQL statement that lists all the accounts and current balance by customer, complete the following steps:"}, {"label": "list_item", "id": 6, "page_no": 88, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.5059051513672, "t": 322.4664001464844, "r": 535.26086, "b": 356.90073, "coord_origin": "TOPLEFT"}, "confidence": 0.9514802098274231, "cells": [{"id": 9, "text": "1.", "bbox": {"l": 136.8, "t": 323.68811, "r": 145.19756, "b": 332.90109000000007, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Run the SQL statement that is shown in Figure 4-64 using the WEBUSER user profile. ", "bbox": {"l": 147.99672, "t": 323.68811, "r": 535.26086, "b": 332.90109000000007, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "The SQL statement has no WHERE clause, but the WEBUSER can see only his ", "bbox": {"l": 151.20016, "t": 335.68793, "r": 508.49417, "b": 344.90091, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "accounts.", "bbox": {"l": 151.20016, "t": 347.68774, "r": 193.7981, "b": 356.90073, "coord_origin": "TOPLEFT"}}]}, "text": "1. Run the SQL statement that is shown in Figure 4-64 using the WEBUSER user profile. The SQL statement has no WHERE clause, but the WEBUSER can see only his accounts."}, {"label": "caption", "id": 7, "page_no": 88, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 136.13351440429688, "t": 544.0534057617188, "r": 520.2975463867188, "b": 553.3374633789062, "coord_origin": "TOPLEFT"}, "confidence": 0.9272187948226929, "cells": [{"id": 13, "text": "Figure 4-64 List of accounts and current balance by customer using the WEBUSER user profile", "bbox": {"l": 136.8, "t": 544.81799, "r": 519.68433, "b": 553.14301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-64 List of accounts and current balance by customer using the WEBUSER user profile"}, {"label": "picture", "id": 8, "page_no": 88, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 64.07161712646484, "t": 107.4771728515625, "r": 546.6607055664062, "b": 250.95677185058594, "coord_origin": "TOPLEFT"}, "confidence": 0.9455775618553162, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 88, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.31243896484375, "t": 754.7880249023438, "r": 523.59357, "b": 764.0306396484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9599050283432007, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 88, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.3995361328125, "t": 754.3471069335938, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9170706868171692, "cells": [{"id": 1, "text": "73", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "73"}]}}, {"page_no": 89, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "74 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "2.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.19731, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 4-65 shows running a more complex SQL statement that calculates transaction ", "bbox": {"l": 147.99638, "t": 71.50867000000005, "r": 533.56744, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "total by account for year and quarter. Run this statement using the WEBUSER profile. The ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 547.25665, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "SQL statement has no ", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 253.40468, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "WHERE", "bbox": {"l": 253.44055, "t": 95.65770999999995, "r": 278.4003, "b": 104.48230000000012, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " clause, but the WEBUSER user can see only his ", "bbox": {"l": 278.4003, "t": 95.50829999999996, "r": 498.4646000000001, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "transactions.", "bbox": {"l": 151.20013, "t": 107.50811999999996, "r": 207.61755, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Figure 4-65 Calculate transaction total by account for year and quarter using the WEBUSER profile", "bbox": {"l": 136.8, "t": 502.2179, "r": 534.44336, "b": 510.54291, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.96171188354492, "t": 754.11767578125, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9149019718170166, "cells": [{"id": 0, "text": "74 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.27671813964844, "t": 754.632568359375, "r": 334.42142, "b": 764.0243530273438, "coord_origin": "TOPLEFT"}, "confidence": 0.9512301087379456, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 135.940185546875, "t": 70.60448455810547, "r": 547.25665, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9553778171539307, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.19731, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 4-65 shows running a more complex SQL statement that calculates transaction ", "bbox": {"l": 147.99638, "t": 71.50867000000005, "r": 533.56744, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "total by account for year and quarter. Run this statement using the WEBUSER profile. The ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 547.25665, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "SQL statement has no ", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 253.40468, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "WHERE", "bbox": {"l": 253.44055, "t": 95.65770999999995, "r": 278.4003, "b": 104.48230000000012, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " clause, but the WEBUSER user can see only his ", "bbox": {"l": 278.4003, "t": 95.50829999999996, "r": 498.4646000000001, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "transactions.", "bbox": {"l": 151.20013, "t": 107.50811999999996, "r": 207.61755, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.05810546875, "t": 501.21514892578125, "r": 535.08740234375, "b": 510.911376953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9247013926506042, "cells": [{"id": 9, "text": "Figure 4-65 Calculate transaction total by account for year and quarter using the WEBUSER profile", "bbox": {"l": 136.8, "t": 502.2179, "r": 534.44336, "b": 510.54291, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 89, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.96171188354492, "t": 754.11767578125, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9149019718170166, "cells": [{"id": 0, "text": "74 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "74"}, {"label": "page_footer", "id": 1, "page_no": 89, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.27671813964844, "t": 754.632568359375, "r": 334.42142, "b": 764.0243530273438, "coord_origin": "TOPLEFT"}, "confidence": 0.9512301087379456, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "list_item", "id": 2, "page_no": 89, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.940185546875, "t": 70.60448455810547, "r": 547.25665, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9553778171539307, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.19731, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 4-65 shows running a more complex SQL statement that calculates transaction ", "bbox": {"l": 147.99638, "t": 71.50867000000005, "r": 533.56744, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "total by account for year and quarter. Run this statement using the WEBUSER profile. The ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 547.25665, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "SQL statement has no ", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 253.40468, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "WHERE", "bbox": {"l": 253.44055, "t": 95.65770999999995, "r": 278.4003, "b": 104.48230000000012, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " clause, but the WEBUSER user can see only his ", "bbox": {"l": 278.4003, "t": 95.50829999999996, "r": 498.4646000000001, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "transactions.", "bbox": {"l": 151.20013, "t": 107.50811999999996, "r": 207.61755, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "2. Figure 4-65 shows running a more complex SQL statement that calculates transaction total by account for year and quarter. Run this statement using the WEBUSER profile. The SQL statement has no WHERE clause, but the WEBUSER user can see only his transactions."}, {"label": "caption", "id": 3, "page_no": 89, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.05810546875, "t": 501.21514892578125, "r": 535.08740234375, "b": 510.911376953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9247013926506042, "cells": [{"id": 9, "text": "Figure 4-65 Calculate transaction total by account for year and quarter using the WEBUSER profile", "bbox": {"l": 136.8, "t": 502.2179, "r": 534.44336, "b": 510.54291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-65 Calculate transaction total by account for year and quarter using the WEBUSER profile"}], "body": [{"label": "list_item", "id": 2, "page_no": 89, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.940185546875, "t": 70.60448455810547, "r": 547.25665, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9553778171539307, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.19731, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 4-65 shows running a more complex SQL statement that calculates transaction ", "bbox": {"l": 147.99638, "t": 71.50867000000005, "r": 533.56744, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "total by account for year and quarter. Run this statement using the WEBUSER profile. The ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 547.25665, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "SQL statement has no ", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 253.40468, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "WHERE", "bbox": {"l": 253.44055, "t": 95.65770999999995, "r": 278.4003, "b": 104.48230000000012, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " clause, but the WEBUSER user can see only his ", "bbox": {"l": 278.4003, "t": 95.50829999999996, "r": 498.4646000000001, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "transactions.", "bbox": {"l": 151.20013, "t": 107.50811999999996, "r": 207.61755, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "2. Figure 4-65 shows running a more complex SQL statement that calculates transaction total by account for year and quarter. Run this statement using the WEBUSER profile. The SQL statement has no WHERE clause, but the WEBUSER user can see only his transactions."}, {"label": "caption", "id": 3, "page_no": 89, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.05810546875, "t": 501.21514892578125, "r": 535.08740234375, "b": 510.911376953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9247013926506042, "cells": [{"id": 9, "text": "Figure 4-65 Calculate transaction total by account for year and quarter using the WEBUSER profile", "bbox": {"l": 136.8, "t": 502.2179, "r": 534.44336, "b": 510.54291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-65 Calculate transaction total by account for year and quarter using the WEBUSER profile"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 89, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.96171188354492, "t": 754.11767578125, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9149019718170166, "cells": [{"id": 0, "text": "74 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "74"}, {"label": "page_footer", "id": 1, "page_no": 89, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.27671813964844, "t": 754.632568359375, "r": 334.42142, "b": 764.0243530273438, "coord_origin": "TOPLEFT"}, "confidence": 0.9512301087379456, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 90, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "75", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "3.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.09937, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Run the same SQL statement that lists the accounts and current balance by customer, but ", "bbox": {"l": 147.86595, "t": 71.50903000000005, "r": 547.24005, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "use a TELLER user profile. The result of this SQL statement is shown in Figure 4-66. The ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 547.12665, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "TELLER user can see all the rows in the CUSTOMERS table.", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 422.51218, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Figure 4-66 List of accounts and current balance by customer using a TELLER user profile", "bbox": {"l": 136.8, "t": 493.27789, "r": 500.70490000000007, "b": 501.60291, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "4.3.11", "bbox": {"l": 64.800003, "t": 522.11475, "r": 101.23562, "b": 534.10272, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Query implementation with RCAC activated", "bbox": {"l": 104.87917, "t": 522.11475, "r": 375.06628, "b": 534.10272, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "This section looks at some other interesting information that is related to RCAC by comparing ", "bbox": {"l": 136.8, "t": 548.26872, "r": 547.16693, "b": 557.48172, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "the access plans of the same SQL statement without RCAC and with RCAC. This example ", "bbox": {"l": 136.80002, "t": 560.2685200000001, "r": 538.92499, "b": 569.48152, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "uses Visual Explain and runs an SQL statement that lists the accounts and current balance ", "bbox": {"l": 136.80002, "t": 572.26833, "r": 541.53564, "b": 581.48132, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "by customer.", "bbox": {"l": 136.80002, "t": 584.26813, "r": 193.24632, "b": 593.48112, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 214.29998779296875, "t": 754.763427734375, "r": 523.59357, "b": 764.0404663085938, "coord_origin": "TOPLEFT"}, "confidence": 0.9579424262046814, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.4443969726562, "t": 754.1858520507812, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9183679819107056, "cells": [{"id": 1, "text": "75", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 136.18202209472656, "t": 70.665283203125, "r": 547.24005, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9646015167236328, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.09937, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Run the same SQL statement that lists the accounts and current balance by customer, but ", "bbox": {"l": 147.86595, "t": 71.50903000000005, "r": 547.24005, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "use a TELLER user profile. The result of this SQL statement is shown in Figure 4-66. The ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 547.12665, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "TELLER user can see all the rows in the CUSTOMERS table.", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 422.51218, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.2951202392578, "t": 492.5509033203125, "r": 501.49591064453125, "b": 502.1121826171875, "coord_origin": "TOPLEFT"}, "confidence": 0.9091576933860779, "cells": [{"id": 6, "text": "Figure 4-66 List of accounts and current balance by customer using a TELLER user profile", "bbox": {"l": 136.8, "t": 493.27789, "r": 500.70490000000007, "b": 501.60291, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 64.09226989746094, "t": 521.0582885742188, "r": 375.06628, "b": 534.3353271484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9637629389762878, "cells": [{"id": 7, "text": "4.3.11", "bbox": {"l": 64.800003, "t": 522.11475, "r": 101.23562, "b": 534.10272, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Query implementation with RCAC activated", "bbox": {"l": 104.87917, "t": 522.11475, "r": 375.06628, "b": 534.10272, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.77622985839844, "t": 547.2048950195312, "r": 547.16693, "b": 593.8646850585938, "coord_origin": "TOPLEFT"}, "confidence": 0.9798411130905151, "cells": [{"id": 9, "text": "This section looks at some other interesting information that is related to RCAC by comparing ", "bbox": {"l": 136.8, "t": 548.26872, "r": 547.16693, "b": 557.48172, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "the access plans of the same SQL statement without RCAC and with RCAC. This example ", "bbox": {"l": 136.80002, "t": 560.2685200000001, "r": 538.92499, "b": 569.48152, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "uses Visual Explain and runs an SQL statement that lists the accounts and current balance ", "bbox": {"l": 136.80002, "t": 572.26833, "r": 541.53564, "b": 581.48132, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "by customer.", "bbox": {"l": 136.80002, "t": 584.26813, "r": 193.24632, "b": 593.48112, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 90, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.29998779296875, "t": 754.763427734375, "r": 523.59357, "b": 764.0404663085938, "coord_origin": "TOPLEFT"}, "confidence": 0.9579424262046814, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 90, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.4443969726562, "t": 754.1858520507812, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9183679819107056, "cells": [{"id": 1, "text": "75", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "75"}, {"label": "list_item", "id": 2, "page_no": 90, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.18202209472656, "t": 70.665283203125, "r": 547.24005, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9646015167236328, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.09937, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Run the same SQL statement that lists the accounts and current balance by customer, but ", "bbox": {"l": 147.86595, "t": 71.50903000000005, "r": 547.24005, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "use a TELLER user profile. The result of this SQL statement is shown in Figure 4-66. The ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 547.12665, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "TELLER user can see all the rows in the CUSTOMERS table.", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 422.51218, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "3. Run the same SQL statement that lists the accounts and current balance by customer, but use a TELLER user profile. The result of this SQL statement is shown in Figure 4-66. The TELLER user can see all the rows in the CUSTOMERS table."}, {"label": "caption", "id": 3, "page_no": 90, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.2951202392578, "t": 492.5509033203125, "r": 501.49591064453125, "b": 502.1121826171875, "coord_origin": "TOPLEFT"}, "confidence": 0.9091576933860779, "cells": [{"id": 6, "text": "Figure 4-66 List of accounts and current balance by customer using a TELLER user profile", "bbox": {"l": 136.8, "t": 493.27789, "r": 500.70490000000007, "b": 501.60291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-66 List of accounts and current balance by customer using a TELLER user profile"}, {"label": "section_header", "id": 4, "page_no": 90, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.09226989746094, "t": 521.0582885742188, "r": 375.06628, "b": 534.3353271484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9637629389762878, "cells": [{"id": 7, "text": "4.3.11", "bbox": {"l": 64.800003, "t": 522.11475, "r": 101.23562, "b": 534.10272, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Query implementation with RCAC activated", "bbox": {"l": 104.87917, "t": 522.11475, "r": 375.06628, "b": 534.10272, "coord_origin": "TOPLEFT"}}]}, "text": "4.3.11 Query implementation with RCAC activated"}, {"label": "text", "id": 5, "page_no": 90, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.77622985839844, "t": 547.2048950195312, "r": 547.16693, "b": 593.8646850585938, "coord_origin": "TOPLEFT"}, "confidence": 0.9798411130905151, "cells": [{"id": 9, "text": "This section looks at some other interesting information that is related to RCAC by comparing ", "bbox": {"l": 136.8, "t": 548.26872, "r": 547.16693, "b": 557.48172, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "the access plans of the same SQL statement without RCAC and with RCAC. This example ", "bbox": {"l": 136.80002, "t": 560.2685200000001, "r": 538.92499, "b": 569.48152, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "uses Visual Explain and runs an SQL statement that lists the accounts and current balance ", "bbox": {"l": 136.80002, "t": 572.26833, "r": 541.53564, "b": 581.48132, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "by customer.", "bbox": {"l": 136.80002, "t": 584.26813, "r": 193.24632, "b": 593.48112, "coord_origin": "TOPLEFT"}}]}, "text": "This section looks at some other interesting information that is related to RCAC by comparing the access plans of the same SQL statement without RCAC and with RCAC. This example uses Visual Explain and runs an SQL statement that lists the accounts and current balance by customer."}], "body": [{"label": "list_item", "id": 2, "page_no": 90, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.18202209472656, "t": 70.665283203125, "r": 547.24005, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9646015167236328, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.09937, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Run the same SQL statement that lists the accounts and current balance by customer, but ", "bbox": {"l": 147.86595, "t": 71.50903000000005, "r": 547.24005, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "use a TELLER user profile. The result of this SQL statement is shown in Figure 4-66. The ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 547.12665, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "TELLER user can see all the rows in the CUSTOMERS table.", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 422.51218, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "3. Run the same SQL statement that lists the accounts and current balance by customer, but use a TELLER user profile. The result of this SQL statement is shown in Figure 4-66. The TELLER user can see all the rows in the CUSTOMERS table."}, {"label": "caption", "id": 3, "page_no": 90, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.2951202392578, "t": 492.5509033203125, "r": 501.49591064453125, "b": 502.1121826171875, "coord_origin": "TOPLEFT"}, "confidence": 0.9091576933860779, "cells": [{"id": 6, "text": "Figure 4-66 List of accounts and current balance by customer using a TELLER user profile", "bbox": {"l": 136.8, "t": 493.27789, "r": 500.70490000000007, "b": 501.60291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-66 List of accounts and current balance by customer using a TELLER user profile"}, {"label": "section_header", "id": 4, "page_no": 90, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.09226989746094, "t": 521.0582885742188, "r": 375.06628, "b": 534.3353271484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9637629389762878, "cells": [{"id": 7, "text": "4.3.11", "bbox": {"l": 64.800003, "t": 522.11475, "r": 101.23562, "b": 534.10272, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Query implementation with RCAC activated", "bbox": {"l": 104.87917, "t": 522.11475, "r": 375.06628, "b": 534.10272, "coord_origin": "TOPLEFT"}}]}, "text": "4.3.11 Query implementation with RCAC activated"}, {"label": "text", "id": 5, "page_no": 90, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.77622985839844, "t": 547.2048950195312, "r": 547.16693, "b": 593.8646850585938, "coord_origin": "TOPLEFT"}, "confidence": 0.9798411130905151, "cells": [{"id": 9, "text": "This section looks at some other interesting information that is related to RCAC by comparing ", "bbox": {"l": 136.8, "t": 548.26872, "r": 547.16693, "b": 557.48172, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "the access plans of the same SQL statement without RCAC and with RCAC. This example ", "bbox": {"l": 136.80002, "t": 560.2685200000001, "r": 538.92499, "b": 569.48152, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "uses Visual Explain and runs an SQL statement that lists the accounts and current balance ", "bbox": {"l": 136.80002, "t": 572.26833, "r": 541.53564, "b": 581.48132, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "by customer.", "bbox": {"l": 136.80002, "t": 584.26813, "r": 193.24632, "b": 593.48112, "coord_origin": "TOPLEFT"}}]}, "text": "This section looks at some other interesting information that is related to RCAC by comparing the access plans of the same SQL statement without RCAC and with RCAC. This example uses Visual Explain and runs an SQL statement that lists the accounts and current balance by customer."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 90, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.29998779296875, "t": 754.763427734375, "r": 523.59357, "b": 764.0404663085938, "coord_origin": "TOPLEFT"}, "confidence": 0.9579424262046814, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 90, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.4443969726562, "t": 754.1858520507812, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9183679819107056, "cells": [{"id": 1, "text": "75", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "75"}]}}, {"page_no": 91, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "76 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Complete the following steps:", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 266.86069, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "1.", "bbox": {"l": 136.8, "t": 88.48845999999992, "r": 145.19209, "b": 97.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 4-67 shows the SQL statement in Visual Explain ran with no RCAC. The ", "bbox": {"l": 147.98944, "t": 88.48845999999992, "r": 503.11377, "b": 97.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "implementation of the SQL statement is a two-way join, which is exactly what the SQL ", "bbox": {"l": 151.20016, "t": 100.48828000000003, "r": 532.47498, "b": 109.70129000000009, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "statement is doing.", "bbox": {"l": 151.20016, "t": 112.48810000000014, "r": 235.12212, "b": 121.70110999999997, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Figure 4-67 Visual Explain with no RCAC enabled", "bbox": {"l": 136.8, "t": 501.73801, "r": 339.57263, "b": 510.06302, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.95058822631836, "t": 754.2190551757812, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9133445024490356, "cells": [{"id": 0, "text": "76 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.32958221435547, "t": 754.64501953125, "r": 334.42142, "b": 763.9790649414062, "coord_origin": "TOPLEFT"}, "confidence": 0.952595591545105, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 136.1143798828125, "t": 70.55393981933594, "r": 266.86069, "b": 81.28746795654297, "coord_origin": "TOPLEFT"}, "confidence": 0.7829880118370056, "cells": [{"id": 2, "text": "Complete the following steps:", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 266.86069, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "list_item", "bbox": {"l": 136.79046630859375, "t": 87.4289321899414, "r": 532.47498, "b": 121.70110999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9777867794036865, "cells": [{"id": 3, "text": "1.", "bbox": {"l": 136.8, "t": 88.48845999999992, "r": 145.19209, "b": 97.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 4-67 shows the SQL statement in Visual Explain ran with no RCAC. The ", "bbox": {"l": 147.98944, "t": 88.48845999999992, "r": 503.11377, "b": 97.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "implementation of the SQL statement is a two-way join, which is exactly what the SQL ", "bbox": {"l": 151.20016, "t": 100.48828000000003, "r": 532.47498, "b": 109.70129000000009, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "statement is doing.", "bbox": {"l": 151.20016, "t": 112.48810000000014, "r": 235.12212, "b": 121.70110999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "caption", "bbox": {"l": 136.02316284179688, "t": 500.6075134277344, "r": 340.572021484375, "b": 510.297119140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9476897120475769, "cells": [{"id": 7, "text": "Figure 4-67 Visual Explain with no RCAC enabled", "bbox": {"l": 136.8, "t": 501.73801, "r": 339.57263, "b": 510.06302, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "picture", "bbox": {"l": 136.32431030273438, "t": 135.9857940673828, "r": 399.8092956542969, "b": 498.6230773925781, "coord_origin": "TOPLEFT"}, "confidence": 0.9861094355583191, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 91, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.95058822631836, "t": 754.2190551757812, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9133445024490356, "cells": [{"id": 0, "text": "76 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "76"}, {"label": "page_footer", "id": 1, "page_no": 91, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.32958221435547, "t": 754.64501953125, "r": 334.42142, "b": 763.9790649414062, "coord_origin": "TOPLEFT"}, "confidence": 0.952595591545105, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "section_header", "id": 2, "page_no": 91, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 136.1143798828125, "t": 70.55393981933594, "r": 266.86069, "b": 81.28746795654297, "coord_origin": "TOPLEFT"}, "confidence": 0.7829880118370056, "cells": [{"id": 2, "text": "Complete the following steps:", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 266.86069, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Complete the following steps:"}, {"label": "list_item", "id": 3, "page_no": 91, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 136.79046630859375, "t": 87.4289321899414, "r": 532.47498, "b": 121.70110999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9777867794036865, "cells": [{"id": 3, "text": "1.", "bbox": {"l": 136.8, "t": 88.48845999999992, "r": 145.19209, "b": 97.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 4-67 shows the SQL statement in Visual Explain ran with no RCAC. The ", "bbox": {"l": 147.98944, "t": 88.48845999999992, "r": 503.11377, "b": 97.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "implementation of the SQL statement is a two-way join, which is exactly what the SQL ", "bbox": {"l": 151.20016, "t": 100.48828000000003, "r": 532.47498, "b": 109.70129000000009, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "statement is doing.", "bbox": {"l": 151.20016, "t": 112.48810000000014, "r": 235.12212, "b": 121.70110999999997, "coord_origin": "TOPLEFT"}}]}, "text": "1. Figure 4-67 shows the SQL statement in Visual Explain ran with no RCAC. The implementation of the SQL statement is a two-way join, which is exactly what the SQL statement is doing."}, {"label": "caption", "id": 4, "page_no": 91, "cluster": {"id": 4, "label": "caption", "bbox": {"l": 136.02316284179688, "t": 500.6075134277344, "r": 340.572021484375, "b": 510.297119140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9476897120475769, "cells": [{"id": 7, "text": "Figure 4-67 Visual Explain with no RCAC enabled", "bbox": {"l": 136.8, "t": 501.73801, "r": 339.57263, "b": 510.06302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-67 Visual Explain with no RCAC enabled"}, {"label": "picture", "id": 5, "page_no": 91, "cluster": {"id": 5, "label": "picture", "bbox": {"l": 136.32431030273438, "t": 135.9857940673828, "r": 399.8092956542969, "b": 498.6230773925781, "coord_origin": "TOPLEFT"}, "confidence": 0.9861094355583191, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "section_header", "id": 2, "page_no": 91, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 136.1143798828125, "t": 70.55393981933594, "r": 266.86069, "b": 81.28746795654297, "coord_origin": "TOPLEFT"}, "confidence": 0.7829880118370056, "cells": [{"id": 2, "text": "Complete the following steps:", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 266.86069, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Complete the following steps:"}, {"label": "list_item", "id": 3, "page_no": 91, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 136.79046630859375, "t": 87.4289321899414, "r": 532.47498, "b": 121.70110999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9777867794036865, "cells": [{"id": 3, "text": "1.", "bbox": {"l": 136.8, "t": 88.48845999999992, "r": 145.19209, "b": 97.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 4-67 shows the SQL statement in Visual Explain ran with no RCAC. The ", "bbox": {"l": 147.98944, "t": 88.48845999999992, "r": 503.11377, "b": 97.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "implementation of the SQL statement is a two-way join, which is exactly what the SQL ", "bbox": {"l": 151.20016, "t": 100.48828000000003, "r": 532.47498, "b": 109.70129000000009, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "statement is doing.", "bbox": {"l": 151.20016, "t": 112.48810000000014, "r": 235.12212, "b": 121.70110999999997, "coord_origin": "TOPLEFT"}}]}, "text": "1. Figure 4-67 shows the SQL statement in Visual Explain ran with no RCAC. The implementation of the SQL statement is a two-way join, which is exactly what the SQL statement is doing."}, {"label": "caption", "id": 4, "page_no": 91, "cluster": {"id": 4, "label": "caption", "bbox": {"l": 136.02316284179688, "t": 500.6075134277344, "r": 340.572021484375, "b": 510.297119140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9476897120475769, "cells": [{"id": 7, "text": "Figure 4-67 Visual Explain with no RCAC enabled", "bbox": {"l": 136.8, "t": 501.73801, "r": 339.57263, "b": 510.06302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-67 Visual Explain with no RCAC enabled"}, {"label": "picture", "id": 5, "page_no": 91, "cluster": {"id": 5, "label": "picture", "bbox": {"l": 136.32431030273438, "t": 135.9857940673828, "r": 399.8092956542969, "b": 498.6230773925781, "coord_origin": "TOPLEFT"}, "confidence": 0.9861094355583191, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 91, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.95058822631836, "t": 754.2190551757812, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9133445024490356, "cells": [{"id": 0, "text": "76 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "76"}, {"label": "page_footer", "id": 1, "page_no": 91, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.32958221435547, "t": 754.64501953125, "r": 334.42142, "b": 763.9790649414062, "coord_origin": "TOPLEFT"}, "confidence": 0.952595591545105, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 92, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "77", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.19554, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 4-68 shows the Visual Explain of the same SQL statement, but with RCAC ", "bbox": {"l": 147.9942, "t": 71.50903000000005, "r": 513.35919, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "enabled. It is clear that the implementation of the SQL statement is more complex ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 514.04858, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "because the row permission rule becomes part of the ", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 389.64822, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "WHERE", "bbox": {"l": 389.57941, "t": 95.65808000000015, "r": 414.53918, "b": 104.48266999999998, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " clause.", "bbox": {"l": 414.59991, "t": 95.50867000000005, "r": 448.8892200000001, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Figure 4-68 Visual Explain with RCAC enabled", "bbox": {"l": 136.8, "t": 480.55798, "r": 327.09329, "b": 488.883, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "3.", "bbox": {"l": 136.8, "t": 506.56863, "r": 145.17432, "b": 515.78162, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Compare the advised indexes that are provided by the Optimizer without RCAC and with ", "bbox": {"l": 147.96574, "t": 506.56863, "r": 543.63715, "b": 515.78162, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "RCAC enabled. Figure 4-69 shows the index advice for the SQL statement without RCAC ", "bbox": {"l": 151.20016, "t": 518.56845, "r": 547.23944, "b": 527.78143, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "enabled. The index being advised is for the ORDER BY clause.", "bbox": {"l": 151.20016, "t": 530.5682400000001, "r": 430.28333, "b": 539.78125, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Figure 4-69 Index advice with no RCAC", "bbox": {"l": 64.800003, "t": 667.5179, "r": 227.10149, "b": 675.8429, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 214.30316162109375, "t": 754.7198486328125, "r": 523.59357, "b": 764.0086669921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9557602405548096, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.3654174804688, "t": 754.280029296875, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9056527614593506, "cells": [{"id": 1, "text": "77", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 136.00341796875, "t": 70.4630355834961, "r": 514.04858, "b": 104.82832336425781, "coord_origin": "TOPLEFT"}, "confidence": 0.9761855006217957, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.19554, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 4-68 shows the Visual Explain of the same SQL statement, but with RCAC ", "bbox": {"l": 147.9942, "t": 71.50903000000005, "r": 513.35919, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "enabled. It is clear that the implementation of the SQL statement is more complex ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 514.04858, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "because the row permission rule becomes part of the ", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 389.64822, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "WHERE", "bbox": {"l": 389.57941, "t": 95.65808000000015, "r": 414.53918, "b": 104.48266999999998, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " clause.", "bbox": {"l": 414.59991, "t": 95.50867000000005, "r": 448.8892200000001, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 135.9990692138672, "t": 480.2080078125, "r": 327.9913635253906, "b": 489.21875, "coord_origin": "TOPLEFT"}, "confidence": 0.9529653191566467, "cells": [{"id": 8, "text": "Figure 4-68 Visual Explain with RCAC enabled", "bbox": {"l": 136.8, "t": 480.55798, "r": 327.09329, "b": 488.883, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 136.2928924560547, "t": 505.9650573730469, "r": 547.23944, "b": 540.0134887695312, "coord_origin": "TOPLEFT"}, "confidence": 0.9766737818717957, "cells": [{"id": 9, "text": "3.", "bbox": {"l": 136.8, "t": 506.56863, "r": 145.17432, "b": 515.78162, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Compare the advised indexes that are provided by the Optimizer without RCAC and with ", "bbox": {"l": 147.96574, "t": 506.56863, "r": 543.63715, "b": 515.78162, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "RCAC enabled. Figure 4-69 shows the index advice for the SQL statement without RCAC ", "bbox": {"l": 151.20016, "t": 518.56845, "r": 547.23944, "b": 527.78143, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "enabled. The index being advised is for the ORDER BY clause.", "bbox": {"l": 151.20016, "t": 530.5682400000001, "r": 430.28333, "b": 539.78125, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 64.35660552978516, "t": 666.6797485351562, "r": 227.347412109375, "b": 675.9388427734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9514287114143372, "cells": [{"id": 13, "text": "Figure 4-69 Index advice with no RCAC", "bbox": {"l": 64.800003, "t": 667.5179, "r": 227.10149, "b": 675.8429, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "picture", "bbox": {"l": 136.5016632080078, "t": 119.2491226196289, "r": 545.4508666992188, "b": 477.5412292480469, "coord_origin": "TOPLEFT"}, "confidence": 0.9864527583122253, "cells": []}, {"id": 7, "label": "picture", "bbox": {"l": 64.27847290039062, "t": 553.5813598632812, "r": 506.39263916015625, "b": 664.0870361328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9797717928886414, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 92, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.30316162109375, "t": 754.7198486328125, "r": 523.59357, "b": 764.0086669921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9557602405548096, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 92, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.3654174804688, "t": 754.280029296875, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9056527614593506, "cells": [{"id": 1, "text": "77", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "77"}, {"label": "list_item", "id": 2, "page_no": 92, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.00341796875, "t": 70.4630355834961, "r": 514.04858, "b": 104.82832336425781, "coord_origin": "TOPLEFT"}, "confidence": 0.9761855006217957, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.19554, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 4-68 shows the Visual Explain of the same SQL statement, but with RCAC ", "bbox": {"l": 147.9942, "t": 71.50903000000005, "r": 513.35919, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "enabled. It is clear that the implementation of the SQL statement is more complex ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 514.04858, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "because the row permission rule becomes part of the ", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 389.64822, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "WHERE", "bbox": {"l": 389.57941, "t": 95.65808000000015, "r": 414.53918, "b": 104.48266999999998, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " clause.", "bbox": {"l": 414.59991, "t": 95.50867000000005, "r": 448.8892200000001, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "2. Figure 4-68 shows the Visual Explain of the same SQL statement, but with RCAC enabled. It is clear that the implementation of the SQL statement is more complex because the row permission rule becomes part of the WHERE clause."}, {"label": "caption", "id": 3, "page_no": 92, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.9990692138672, "t": 480.2080078125, "r": 327.9913635253906, "b": 489.21875, "coord_origin": "TOPLEFT"}, "confidence": 0.9529653191566467, "cells": [{"id": 8, "text": "Figure 4-68 Visual Explain with RCAC enabled", "bbox": {"l": 136.8, "t": 480.55798, "r": 327.09329, "b": 488.883, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-68 Visual Explain with RCAC enabled"}, {"label": "list_item", "id": 4, "page_no": 92, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.2928924560547, "t": 505.9650573730469, "r": 547.23944, "b": 540.0134887695312, "coord_origin": "TOPLEFT"}, "confidence": 0.9766737818717957, "cells": [{"id": 9, "text": "3.", "bbox": {"l": 136.8, "t": 506.56863, "r": 145.17432, "b": 515.78162, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Compare the advised indexes that are provided by the Optimizer without RCAC and with ", "bbox": {"l": 147.96574, "t": 506.56863, "r": 543.63715, "b": 515.78162, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "RCAC enabled. Figure 4-69 shows the index advice for the SQL statement without RCAC ", "bbox": {"l": 151.20016, "t": 518.56845, "r": 547.23944, "b": 527.78143, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "enabled. The index being advised is for the ORDER BY clause.", "bbox": {"l": 151.20016, "t": 530.5682400000001, "r": 430.28333, "b": 539.78125, "coord_origin": "TOPLEFT"}}]}, "text": "3. Compare the advised indexes that are provided by the Optimizer without RCAC and with RCAC enabled. Figure 4-69 shows the index advice for the SQL statement without RCAC enabled. The index being advised is for the ORDER BY clause."}, {"label": "caption", "id": 5, "page_no": 92, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.35660552978516, "t": 666.6797485351562, "r": 227.347412109375, "b": 675.9388427734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9514287114143372, "cells": [{"id": 13, "text": "Figure 4-69 Index advice with no RCAC", "bbox": {"l": 64.800003, "t": 667.5179, "r": 227.10149, "b": 675.8429, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-69 Index advice with no RCAC"}, {"label": "picture", "id": 6, "page_no": 92, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 136.5016632080078, "t": 119.2491226196289, "r": 545.4508666992188, "b": 477.5412292480469, "coord_origin": "TOPLEFT"}, "confidence": 0.9864527583122253, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 7, "page_no": 92, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 64.27847290039062, "t": 553.5813598632812, "r": 506.39263916015625, "b": 664.0870361328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9797717928886414, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 92, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.00341796875, "t": 70.4630355834961, "r": 514.04858, "b": 104.82832336425781, "coord_origin": "TOPLEFT"}, "confidence": 0.9761855006217957, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.19554, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 4-68 shows the Visual Explain of the same SQL statement, but with RCAC ", "bbox": {"l": 147.9942, "t": 71.50903000000005, "r": 513.35919, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "enabled. It is clear that the implementation of the SQL statement is more complex ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 514.04858, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "because the row permission rule becomes part of the ", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 389.64822, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "WHERE", "bbox": {"l": 389.57941, "t": 95.65808000000015, "r": 414.53918, "b": 104.48266999999998, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " clause.", "bbox": {"l": 414.59991, "t": 95.50867000000005, "r": 448.8892200000001, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "2. Figure 4-68 shows the Visual Explain of the same SQL statement, but with RCAC enabled. It is clear that the implementation of the SQL statement is more complex because the row permission rule becomes part of the WHERE clause."}, {"label": "caption", "id": 3, "page_no": 92, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.9990692138672, "t": 480.2080078125, "r": 327.9913635253906, "b": 489.21875, "coord_origin": "TOPLEFT"}, "confidence": 0.9529653191566467, "cells": [{"id": 8, "text": "Figure 4-68 Visual Explain with RCAC enabled", "bbox": {"l": 136.8, "t": 480.55798, "r": 327.09329, "b": 488.883, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-68 Visual Explain with RCAC enabled"}, {"label": "list_item", "id": 4, "page_no": 92, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.2928924560547, "t": 505.9650573730469, "r": 547.23944, "b": 540.0134887695312, "coord_origin": "TOPLEFT"}, "confidence": 0.9766737818717957, "cells": [{"id": 9, "text": "3.", "bbox": {"l": 136.8, "t": 506.56863, "r": 145.17432, "b": 515.78162, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Compare the advised indexes that are provided by the Optimizer without RCAC and with ", "bbox": {"l": 147.96574, "t": 506.56863, "r": 543.63715, "b": 515.78162, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "RCAC enabled. Figure 4-69 shows the index advice for the SQL statement without RCAC ", "bbox": {"l": 151.20016, "t": 518.56845, "r": 547.23944, "b": 527.78143, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "enabled. The index being advised is for the ORDER BY clause.", "bbox": {"l": 151.20016, "t": 530.5682400000001, "r": 430.28333, "b": 539.78125, "coord_origin": "TOPLEFT"}}]}, "text": "3. Compare the advised indexes that are provided by the Optimizer without RCAC and with RCAC enabled. Figure 4-69 shows the index advice for the SQL statement without RCAC enabled. The index being advised is for the ORDER BY clause."}, {"label": "caption", "id": 5, "page_no": 92, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.35660552978516, "t": 666.6797485351562, "r": 227.347412109375, "b": 675.9388427734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9514287114143372, "cells": [{"id": 13, "text": "Figure 4-69 Index advice with no RCAC", "bbox": {"l": 64.800003, "t": 667.5179, "r": 227.10149, "b": 675.8429, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-69 Index advice with no RCAC"}, {"label": "picture", "id": 6, "page_no": 92, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 136.5016632080078, "t": 119.2491226196289, "r": 545.4508666992188, "b": 477.5412292480469, "coord_origin": "TOPLEFT"}, "confidence": 0.9864527583122253, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 7, "page_no": 92, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 64.27847290039062, "t": 553.5813598632812, "r": 506.39263916015625, "b": 664.0870361328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9797717928886414, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 92, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.30316162109375, "t": 754.7198486328125, "r": 523.59357, "b": 764.0086669921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9557602405548096, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 92, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.3654174804688, "t": 754.280029296875, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9056527614593506, "cells": [{"id": 1, "text": "77", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "77"}]}}, {"page_no": 93, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "78 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "4.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.03265, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Now, look at the advised indexes with RCAC enabled. As shown in Figure 4-70, there is an ", "bbox": {"l": 147.77686, "t": 71.50867000000005, "r": 547.18872, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "additional index being advised, which is basically for the row permission rule. For more ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 535.9599, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "information, see 6.4.2, \u201cIndex advisor\u201d on page 99.", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 374.21558, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Figure 4-70 Index advice with RCAC enabled", "bbox": {"l": 64.800003, "t": 238.63800000000003, "r": 248.88689000000002, "b": 246.96294999999998, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.94062805175781, "t": 754.1842651367188, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9147760272026062, "cells": [{"id": 0, "text": "78 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.33392333984375, "t": 754.6708374023438, "r": 334.42142, "b": 763.9481811523438, "coord_origin": "TOPLEFT"}, "confidence": 0.9523293972015381, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 135.9367218017578, "t": 70.61515045166016, "r": 547.18872, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9803981184959412, "cells": [{"id": 2, "text": "4.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.03265, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Now, look at the advised indexes with RCAC enabled. As shown in Figure 4-70, there is an ", "bbox": {"l": 147.77686, "t": 71.50867000000005, "r": 547.18872, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "additional index being advised, which is basically for the row permission rule. For more ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 535.9599, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "information, see 6.4.2, \u201cIndex advisor\u201d on page 99.", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 374.21558, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.2020263671875, "t": 238.3303680419922, "r": 249.87530517578125, "b": 247.58013916015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9492548704147339, "cells": [{"id": 6, "text": "Figure 4-70 Index advice with RCAC enabled", "bbox": {"l": 64.800003, "t": 238.63800000000003, "r": 248.88689000000002, "b": 246.96294999999998, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "picture", "bbox": {"l": 64.13593292236328, "t": 119.456298828125, "r": 508.70513916015625, "b": 234.94915771484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9820812344551086, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 93, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.94062805175781, "t": 754.1842651367188, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9147760272026062, "cells": [{"id": 0, "text": "78 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "78"}, {"label": "page_footer", "id": 1, "page_no": 93, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.33392333984375, "t": 754.6708374023438, "r": 334.42142, "b": 763.9481811523438, "coord_origin": "TOPLEFT"}, "confidence": 0.9523293972015381, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "list_item", "id": 2, "page_no": 93, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.9367218017578, "t": 70.61515045166016, "r": 547.18872, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9803981184959412, "cells": [{"id": 2, "text": "4.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.03265, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Now, look at the advised indexes with RCAC enabled. As shown in Figure 4-70, there is an ", "bbox": {"l": 147.77686, "t": 71.50867000000005, "r": 547.18872, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "additional index being advised, which is basically for the row permission rule. For more ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 535.9599, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "information, see 6.4.2, \u201cIndex advisor\u201d on page 99.", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 374.21558, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}]}, "text": "4. Now, look at the advised indexes with RCAC enabled. As shown in Figure 4-70, there is an additional index being advised, which is basically for the row permission rule. For more information, see 6.4.2, \u201cIndex advisor\u201d on page 99."}, {"label": "caption", "id": 3, "page_no": 93, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.2020263671875, "t": 238.3303680419922, "r": 249.87530517578125, "b": 247.58013916015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9492548704147339, "cells": [{"id": 6, "text": "Figure 4-70 Index advice with RCAC enabled", "bbox": {"l": 64.800003, "t": 238.63800000000003, "r": 248.88689000000002, "b": 246.96294999999998, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-70 Index advice with RCAC enabled"}, {"label": "picture", "id": 4, "page_no": 93, "cluster": {"id": 4, "label": "picture", "bbox": {"l": 64.13593292236328, "t": 119.456298828125, "r": 508.70513916015625, "b": 234.94915771484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9820812344551086, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 93, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.9367218017578, "t": 70.61515045166016, "r": 547.18872, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9803981184959412, "cells": [{"id": 2, "text": "4.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.03265, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Now, look at the advised indexes with RCAC enabled. As shown in Figure 4-70, there is an ", "bbox": {"l": 147.77686, "t": 71.50867000000005, "r": 547.18872, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "additional index being advised, which is basically for the row permission rule. For more ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 535.9599, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "information, see 6.4.2, \u201cIndex advisor\u201d on page 99.", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 374.21558, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}]}, "text": "4. Now, look at the advised indexes with RCAC enabled. As shown in Figure 4-70, there is an additional index being advised, which is basically for the row permission rule. For more information, see 6.4.2, \u201cIndex advisor\u201d on page 99."}, {"label": "caption", "id": 3, "page_no": 93, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.2020263671875, "t": 238.3303680419922, "r": 249.87530517578125, "b": 247.58013916015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9492548704147339, "cells": [{"id": 6, "text": "Figure 4-70 Index advice with RCAC enabled", "bbox": {"l": 64.800003, "t": 238.63800000000003, "r": 248.88689000000002, "b": 246.96294999999998, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-70 Index advice with RCAC enabled"}, {"label": "picture", "id": 4, "page_no": 93, "cluster": {"id": 4, "label": "picture", "bbox": {"l": 64.13593292236328, "t": 119.456298828125, "r": 508.70513916015625, "b": 234.94915771484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9820812344551086, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 93, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.94062805175781, "t": 754.1842651367188, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9147760272026062, "cells": [{"id": 0, "text": "78 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "78"}, {"label": "page_footer", "id": 1, "page_no": 93, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.33392333984375, "t": 754.6708374023438, "r": 334.42142, "b": 763.9481811523438, "coord_origin": "TOPLEFT"}, "confidence": 0.9523293972015381, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 94, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "79", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Chapter 5.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "RCAC and non-SQL interfaces", "bbox": {"l": 136.8, "t": 254.88635, "r": 511.1796, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "A benefit of Row and Column Access Control (RCAC) is that its security controls are enforced ", "bbox": {"l": 136.8, "t": 317.68872, "r": 547.18188, "b": 326.90170000000006, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "across all the interfaces that access DB2 for i because the security rules are defined and ", "bbox": {"l": 136.8, "t": 329.68854, "r": 530.37024, "b": 338.90152, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "enforced at the database level. The examples that are shown in this paper focus on ", "bbox": {"l": 136.8, "t": 341.68835, "r": 506.3607799999999, "b": 350.90134, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "SQL-based access, but row permissions and column masks also are enforced for non-SQL ", "bbox": {"l": 136.8, "t": 353.68817, "r": 540.88196, "b": 362.90115, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "interfaces, such as native record-level access in RPG and COBOL programs and CL ", "bbox": {"l": 136.8, "t": 365.68799, "r": 512.052, "b": 374.90097, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "commands, such as Display Physical File Member (", "bbox": {"l": 136.8, "t": 377.68781, "r": 364.92484, "b": 386.90079, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "DSPPFM", "bbox": {"l": 364.86011, "t": 377.83718999999996, "r": 394.85962, "b": 386.66177, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": ") and Copy File (", "bbox": {"l": 394.85962, "t": 377.68781, "r": 468.42514, "b": 386.90079, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CPYF", "bbox": {"l": 468.41919000000007, "t": 377.83718999999996, "r": 488.39893, "b": 386.66177, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": ").", "bbox": {"l": 488.39896, "t": 377.68781, "r": 494.57016, "b": 386.90079, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "This consistent enforcement across all interfaces is a good thing, but there are some nuances ", "bbox": {"l": 136.79898, "t": 399.70737, "r": 547.25549, "b": 408.92035, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "and restrictions as a result of applying an SQL-based technology such as RCAC to non-SQL ", "bbox": {"l": 136.799, "t": 411.70717999999994, "r": 547.1532, "b": 420.9201699999999, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "interfaces. These considerations are described in this chapter.", "bbox": {"l": 136.799, "t": 423.70700000000005, "r": 411.01178, "b": 432.91998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "The following topics are covered in this chapter in this chapter:", "bbox": {"l": 136.799, "t": 445.72656, "r": 412.43704, "b": 454.9395400000001, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "GLYPH", "bbox": {"l": 136.799, "t": 462.85574, "r": 141.77899, "b": 471.63052, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Unsupported interfaces", "bbox": {"l": 151.19916, "t": 462.70636, "r": 254.56697, "b": 471.91934, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "GLYPH", "bbox": {"l": 136.799, "t": 474.85556, "r": 141.77899, "b": 483.63034, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Native query result differences", "bbox": {"l": 151.19916, "t": 474.70618, "r": 285.97983, "b": 483.91916, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "GLYPH", "bbox": {"l": 136.799, "t": 486.85538, "r": 141.77899, "b": 495.63016, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Accidental updates with masked values", "bbox": {"l": 151.19916, "t": 486.70599, "r": 325.08792, "b": 495.91898, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "GLYPH", "bbox": {"l": 136.799, "t": 498.85519, "r": 141.77899, "b": 507.62997, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "System CL commands considerations", "bbox": {"l": 151.19916, "t": 498.70581, "r": 318.95844, "b": 507.91879, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "5", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.744651794433594, "t": 754.7680053710938, "r": 257.24335, "b": 764.091796875, "coord_origin": "TOPLEFT"}, "confidence": 0.949221134185791, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.3575439453125, "t": 754.22607421875, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9138334393501282, "cells": [{"id": 1, "text": "79", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 5.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "section_header", "bbox": {"l": 136.8, "t": 253.33033752441406, "r": 511.1796, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9421312808990479, "cells": [{"id": 3, "text": "RCAC and non-SQL interfaces", "bbox": {"l": 136.8, "t": 254.88635, "r": 511.1796, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.93673706054688, "t": 316.58636474609375, "r": 547.18188, "b": 386.9336242675781, "coord_origin": "TOPLEFT"}, "confidence": 0.9848811626434326, "cells": [{"id": 4, "text": "A benefit of Row and Column Access Control (RCAC) is that its security controls are enforced ", "bbox": {"l": 136.8, "t": 317.68872, "r": 547.18188, "b": 326.90170000000006, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "across all the interfaces that access DB2 for i because the security rules are defined and ", "bbox": {"l": 136.8, "t": 329.68854, "r": 530.37024, "b": 338.90152, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "enforced at the database level. The examples that are shown in this paper focus on ", "bbox": {"l": 136.8, "t": 341.68835, "r": 506.3607799999999, "b": 350.90134, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "SQL-based access, but row permissions and column masks also are enforced for non-SQL ", "bbox": {"l": 136.8, "t": 353.68817, "r": 540.88196, "b": 362.90115, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "interfaces, such as native record-level access in RPG and COBOL programs and CL ", "bbox": {"l": 136.8, "t": 365.68799, "r": 512.052, "b": 374.90097, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "commands, such as Display Physical File Member (", "bbox": {"l": 136.8, "t": 377.68781, "r": 364.92484, "b": 386.90079, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "DSPPFM", "bbox": {"l": 364.86011, "t": 377.83718999999996, "r": 394.85962, "b": 386.66177, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": ") and Copy File (", "bbox": {"l": 394.85962, "t": 377.68781, "r": 468.42514, "b": 386.90079, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CPYF", "bbox": {"l": 468.41919000000007, "t": 377.83718999999996, "r": 488.39893, "b": 386.66177, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": ").", "bbox": {"l": 488.39896, "t": 377.68781, "r": 494.57016, "b": 386.90079, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.76991271972656, "t": 398.7801208496094, "r": 547.25549, "b": 432.91998, "coord_origin": "TOPLEFT"}, "confidence": 0.981573224067688, "cells": [{"id": 14, "text": "This consistent enforcement across all interfaces is a good thing, but there are some nuances ", "bbox": {"l": 136.79898, "t": 399.70737, "r": 547.25549, "b": 408.92035, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "and restrictions as a result of applying an SQL-based technology such as RCAC to non-SQL ", "bbox": {"l": 136.799, "t": 411.70717999999994, "r": 547.1532, "b": 420.9201699999999, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "interfaces. These considerations are described in this chapter.", "bbox": {"l": 136.799, "t": 423.70700000000005, "r": 411.01178, "b": 432.91998, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 136.10678100585938, "t": 444.8198547363281, "r": 412.43704, "b": 454.9395400000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9355656504631042, "cells": [{"id": 17, "text": "The following topics are covered in this chapter in this chapter:", "bbox": {"l": 136.799, "t": 445.72656, "r": 412.43704, "b": 454.9395400000001, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.8011016845703, "t": 462.3359680175781, "r": 254.56697, "b": 472.4132080078125, "coord_origin": "TOPLEFT"}, "confidence": 0.946121335029602, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.799, "t": 462.85574, "r": 141.77899, "b": 471.63052, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Unsupported interfaces", "bbox": {"l": 151.19916, "t": 462.70636, "r": 254.56697, "b": 471.91934, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.7434844970703, "t": 474.6011657714844, "r": 285.9834289550781, "b": 483.91916, "coord_origin": "TOPLEFT"}, "confidence": 0.9351681470870972, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.799, "t": 474.85556, "r": 141.77899, "b": 483.63034, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Native query result differences", "bbox": {"l": 151.19916, "t": 474.70618, "r": 285.97983, "b": 483.91916, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.7656707763672, "t": 485.91131591796875, "r": 325.08792, "b": 495.91898, "coord_origin": "TOPLEFT"}, "confidence": 0.9449910521507263, "cells": [{"id": 22, "text": "GLYPH", "bbox": {"l": 136.799, "t": 486.85538, "r": 141.77899, "b": 495.63016, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Accidental updates with masked values", "bbox": {"l": 151.19916, "t": 486.70599, "r": 325.08792, "b": 495.91898, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 135.72933959960938, "t": 498.2069091796875, "r": 318.95844, "b": 508.3310852050781, "coord_origin": "TOPLEFT"}, "confidence": 0.9523792862892151, "cells": [{"id": 24, "text": "GLYPH", "bbox": {"l": 136.799, "t": 498.85519, "r": 141.77899, "b": 507.62997, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "System CL commands considerations", "bbox": {"l": 151.19916, "t": 498.70581, "r": 318.95844, "b": 507.91879, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.6404241919517517, "cells": [{"id": 26, "text": "5", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "picture", "bbox": {"l": 32.17748260498047, "t": 70.54951477050781, "r": 239.63507080078125, "b": 238.013427734375, "coord_origin": "TOPLEFT"}, "confidence": 0.7029868960380554, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 94, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.744651794433594, "t": 754.7680053710938, "r": 257.24335, "b": 764.091796875, "coord_origin": "TOPLEFT"}, "confidence": 0.949221134185791, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 94, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.3575439453125, "t": 754.22607421875, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9138334393501282, "cells": [{"id": 1, "text": "79", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "79"}, {"label": "text", "id": 2, "page_no": 94, "cluster": {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 5.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 5."}, {"label": "section_header", "id": 3, "page_no": 94, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 136.8, "t": 253.33033752441406, "r": 511.1796, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9421312808990479, "cells": [{"id": 3, "text": "RCAC and non-SQL interfaces", "bbox": {"l": 136.8, "t": 254.88635, "r": 511.1796, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}]}, "text": "RCAC and non-SQL interfaces"}, {"label": "text", "id": 4, "page_no": 94, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.93673706054688, "t": 316.58636474609375, "r": 547.18188, "b": 386.9336242675781, "coord_origin": "TOPLEFT"}, "confidence": 0.9848811626434326, "cells": [{"id": 4, "text": "A benefit of Row and Column Access Control (RCAC) is that its security controls are enforced ", "bbox": {"l": 136.8, "t": 317.68872, "r": 547.18188, "b": 326.90170000000006, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "across all the interfaces that access DB2 for i because the security rules are defined and ", "bbox": {"l": 136.8, "t": 329.68854, "r": 530.37024, "b": 338.90152, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "enforced at the database level. The examples that are shown in this paper focus on ", "bbox": {"l": 136.8, "t": 341.68835, "r": 506.3607799999999, "b": 350.90134, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "SQL-based access, but row permissions and column masks also are enforced for non-SQL ", "bbox": {"l": 136.8, "t": 353.68817, "r": 540.88196, "b": 362.90115, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "interfaces, such as native record-level access in RPG and COBOL programs and CL ", "bbox": {"l": 136.8, "t": 365.68799, "r": 512.052, "b": 374.90097, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "commands, such as Display Physical File Member (", "bbox": {"l": 136.8, "t": 377.68781, "r": 364.92484, "b": 386.90079, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "DSPPFM", "bbox": {"l": 364.86011, "t": 377.83718999999996, "r": 394.85962, "b": 386.66177, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": ") and Copy File (", "bbox": {"l": 394.85962, "t": 377.68781, "r": 468.42514, "b": 386.90079, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CPYF", "bbox": {"l": 468.41919000000007, "t": 377.83718999999996, "r": 488.39893, "b": 386.66177, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": ").", "bbox": {"l": 488.39896, "t": 377.68781, "r": 494.57016, "b": 386.90079, "coord_origin": "TOPLEFT"}}]}, "text": "A benefit of Row and Column Access Control (RCAC) is that its security controls are enforced across all the interfaces that access DB2 for i because the security rules are defined and enforced at the database level. The examples that are shown in this paper focus on SQL-based access, but row permissions and column masks also are enforced for non-SQL interfaces, such as native record-level access in RPG and COBOL programs and CL commands, such as Display Physical File Member ( DSPPFM ) and Copy File ( CPYF )."}, {"label": "text", "id": 5, "page_no": 94, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.76991271972656, "t": 398.7801208496094, "r": 547.25549, "b": 432.91998, "coord_origin": "TOPLEFT"}, "confidence": 0.981573224067688, "cells": [{"id": 14, "text": "This consistent enforcement across all interfaces is a good thing, but there are some nuances ", "bbox": {"l": 136.79898, "t": 399.70737, "r": 547.25549, "b": 408.92035, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "and restrictions as a result of applying an SQL-based technology such as RCAC to non-SQL ", "bbox": {"l": 136.799, "t": 411.70717999999994, "r": 547.1532, "b": 420.9201699999999, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "interfaces. These considerations are described in this chapter.", "bbox": {"l": 136.799, "t": 423.70700000000005, "r": 411.01178, "b": 432.91998, "coord_origin": "TOPLEFT"}}]}, "text": "This consistent enforcement across all interfaces is a good thing, but there are some nuances and restrictions as a result of applying an SQL-based technology such as RCAC to non-SQL interfaces. These considerations are described in this chapter."}, {"label": "text", "id": 6, "page_no": 94, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.10678100585938, "t": 444.8198547363281, "r": 412.43704, "b": 454.9395400000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9355656504631042, "cells": [{"id": 17, "text": "The following topics are covered in this chapter in this chapter:", "bbox": {"l": 136.799, "t": 445.72656, "r": 412.43704, "b": 454.9395400000001, "coord_origin": "TOPLEFT"}}]}, "text": "The following topics are covered in this chapter in this chapter:"}, {"label": "list_item", "id": 7, "page_no": 94, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.8011016845703, "t": 462.3359680175781, "r": 254.56697, "b": 472.4132080078125, "coord_origin": "TOPLEFT"}, "confidence": 0.946121335029602, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.799, "t": 462.85574, "r": 141.77899, "b": 471.63052, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Unsupported interfaces", "bbox": {"l": 151.19916, "t": 462.70636, "r": 254.56697, "b": 471.91934, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Unsupported interfaces"}, {"label": "list_item", "id": 8, "page_no": 94, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.7434844970703, "t": 474.6011657714844, "r": 285.9834289550781, "b": 483.91916, "coord_origin": "TOPLEFT"}, "confidence": 0.9351681470870972, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.799, "t": 474.85556, "r": 141.77899, "b": 483.63034, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Native query result differences", "bbox": {"l": 151.19916, "t": 474.70618, "r": 285.97983, "b": 483.91916, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Native query result differences"}, {"label": "list_item", "id": 9, "page_no": 94, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.7656707763672, "t": 485.91131591796875, "r": 325.08792, "b": 495.91898, "coord_origin": "TOPLEFT"}, "confidence": 0.9449910521507263, "cells": [{"id": 22, "text": "GLYPH", "bbox": {"l": 136.799, "t": 486.85538, "r": 141.77899, "b": 495.63016, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Accidental updates with masked values", "bbox": {"l": 151.19916, "t": 486.70599, "r": 325.08792, "b": 495.91898, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Accidental updates with masked values"}, {"label": "list_item", "id": 10, "page_no": 94, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.72933959960938, "t": 498.2069091796875, "r": 318.95844, "b": 508.3310852050781, "coord_origin": "TOPLEFT"}, "confidence": 0.9523792862892151, "cells": [{"id": 24, "text": "GLYPH", "bbox": {"l": 136.799, "t": 498.85519, "r": 141.77899, "b": 507.62997, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "System CL commands considerations", "bbox": {"l": 151.19916, "t": 498.70581, "r": 318.95844, "b": 507.91879, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH System CL commands considerations"}, {"label": "text", "id": 11, "page_no": 94, "cluster": {"id": 11, "label": "text", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.6404241919517517, "cells": [{"id": 26, "text": "5", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, "text": "5"}, {"label": "picture", "id": 12, "page_no": 94, "cluster": {"id": 12, "label": "picture", "bbox": {"l": 32.17748260498047, "t": 70.54951477050781, "r": 239.63507080078125, "b": 238.013427734375, "coord_origin": "TOPLEFT"}, "confidence": 0.7029868960380554, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 94, "cluster": {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 5.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 5."}, {"label": "section_header", "id": 3, "page_no": 94, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 136.8, "t": 253.33033752441406, "r": 511.1796, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9421312808990479, "cells": [{"id": 3, "text": "RCAC and non-SQL interfaces", "bbox": {"l": 136.8, "t": 254.88635, "r": 511.1796, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}]}, "text": "RCAC and non-SQL interfaces"}, {"label": "text", "id": 4, "page_no": 94, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.93673706054688, "t": 316.58636474609375, "r": 547.18188, "b": 386.9336242675781, "coord_origin": "TOPLEFT"}, "confidence": 0.9848811626434326, "cells": [{"id": 4, "text": "A benefit of Row and Column Access Control (RCAC) is that its security controls are enforced ", "bbox": {"l": 136.8, "t": 317.68872, "r": 547.18188, "b": 326.90170000000006, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "across all the interfaces that access DB2 for i because the security rules are defined and ", "bbox": {"l": 136.8, "t": 329.68854, "r": 530.37024, "b": 338.90152, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "enforced at the database level. The examples that are shown in this paper focus on ", "bbox": {"l": 136.8, "t": 341.68835, "r": 506.3607799999999, "b": 350.90134, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "SQL-based access, but row permissions and column masks also are enforced for non-SQL ", "bbox": {"l": 136.8, "t": 353.68817, "r": 540.88196, "b": 362.90115, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "interfaces, such as native record-level access in RPG and COBOL programs and CL ", "bbox": {"l": 136.8, "t": 365.68799, "r": 512.052, "b": 374.90097, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "commands, such as Display Physical File Member (", "bbox": {"l": 136.8, "t": 377.68781, "r": 364.92484, "b": 386.90079, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "DSPPFM", "bbox": {"l": 364.86011, "t": 377.83718999999996, "r": 394.85962, "b": 386.66177, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": ") and Copy File (", "bbox": {"l": 394.85962, "t": 377.68781, "r": 468.42514, "b": 386.90079, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CPYF", "bbox": {"l": 468.41919000000007, "t": 377.83718999999996, "r": 488.39893, "b": 386.66177, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": ").", "bbox": {"l": 488.39896, "t": 377.68781, "r": 494.57016, "b": 386.90079, "coord_origin": "TOPLEFT"}}]}, "text": "A benefit of Row and Column Access Control (RCAC) is that its security controls are enforced across all the interfaces that access DB2 for i because the security rules are defined and enforced at the database level. The examples that are shown in this paper focus on SQL-based access, but row permissions and column masks also are enforced for non-SQL interfaces, such as native record-level access in RPG and COBOL programs and CL commands, such as Display Physical File Member ( DSPPFM ) and Copy File ( CPYF )."}, {"label": "text", "id": 5, "page_no": 94, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.76991271972656, "t": 398.7801208496094, "r": 547.25549, "b": 432.91998, "coord_origin": "TOPLEFT"}, "confidence": 0.981573224067688, "cells": [{"id": 14, "text": "This consistent enforcement across all interfaces is a good thing, but there are some nuances ", "bbox": {"l": 136.79898, "t": 399.70737, "r": 547.25549, "b": 408.92035, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "and restrictions as a result of applying an SQL-based technology such as RCAC to non-SQL ", "bbox": {"l": 136.799, "t": 411.70717999999994, "r": 547.1532, "b": 420.9201699999999, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "interfaces. These considerations are described in this chapter.", "bbox": {"l": 136.799, "t": 423.70700000000005, "r": 411.01178, "b": 432.91998, "coord_origin": "TOPLEFT"}}]}, "text": "This consistent enforcement across all interfaces is a good thing, but there are some nuances and restrictions as a result of applying an SQL-based technology such as RCAC to non-SQL interfaces. These considerations are described in this chapter."}, {"label": "text", "id": 6, "page_no": 94, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.10678100585938, "t": 444.8198547363281, "r": 412.43704, "b": 454.9395400000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9355656504631042, "cells": [{"id": 17, "text": "The following topics are covered in this chapter in this chapter:", "bbox": {"l": 136.799, "t": 445.72656, "r": 412.43704, "b": 454.9395400000001, "coord_origin": "TOPLEFT"}}]}, "text": "The following topics are covered in this chapter in this chapter:"}, {"label": "list_item", "id": 7, "page_no": 94, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.8011016845703, "t": 462.3359680175781, "r": 254.56697, "b": 472.4132080078125, "coord_origin": "TOPLEFT"}, "confidence": 0.946121335029602, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.799, "t": 462.85574, "r": 141.77899, "b": 471.63052, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Unsupported interfaces", "bbox": {"l": 151.19916, "t": 462.70636, "r": 254.56697, "b": 471.91934, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Unsupported interfaces"}, {"label": "list_item", "id": 8, "page_no": 94, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.7434844970703, "t": 474.6011657714844, "r": 285.9834289550781, "b": 483.91916, "coord_origin": "TOPLEFT"}, "confidence": 0.9351681470870972, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.799, "t": 474.85556, "r": 141.77899, "b": 483.63034, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Native query result differences", "bbox": {"l": 151.19916, "t": 474.70618, "r": 285.97983, "b": 483.91916, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Native query result differences"}, {"label": "list_item", "id": 9, "page_no": 94, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.7656707763672, "t": 485.91131591796875, "r": 325.08792, "b": 495.91898, "coord_origin": "TOPLEFT"}, "confidence": 0.9449910521507263, "cells": [{"id": 22, "text": "GLYPH", "bbox": {"l": 136.799, "t": 486.85538, "r": 141.77899, "b": 495.63016, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Accidental updates with masked values", "bbox": {"l": 151.19916, "t": 486.70599, "r": 325.08792, "b": 495.91898, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Accidental updates with masked values"}, {"label": "list_item", "id": 10, "page_no": 94, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.72933959960938, "t": 498.2069091796875, "r": 318.95844, "b": 508.3310852050781, "coord_origin": "TOPLEFT"}, "confidence": 0.9523792862892151, "cells": [{"id": 24, "text": "GLYPH", "bbox": {"l": 136.799, "t": 498.85519, "r": 141.77899, "b": 507.62997, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "System CL commands considerations", "bbox": {"l": 151.19916, "t": 498.70581, "r": 318.95844, "b": 507.91879, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH System CL commands considerations"}, {"label": "text", "id": 11, "page_no": 94, "cluster": {"id": 11, "label": "text", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.6404241919517517, "cells": [{"id": 26, "text": "5", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, "text": "5"}, {"label": "picture", "id": 12, "page_no": 94, "cluster": {"id": 12, "label": "picture", "bbox": {"l": 32.17748260498047, "t": 70.54951477050781, "r": 239.63507080078125, "b": 238.013427734375, "coord_origin": "TOPLEFT"}, "confidence": 0.7029868960380554, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 94, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.744651794433594, "t": 754.7680053710938, "r": 257.24335, "b": 764.091796875, "coord_origin": "TOPLEFT"}, "confidence": 0.949221134185791, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 94, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.3575439453125, "t": 754.22607421875, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9138334393501282, "cells": [{"id": 1, "text": "79", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "79"}]}}, {"page_no": 95, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "80 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "5.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.539185, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Unsupported interfaces", "bbox": {"l": 92.087021, "t": 74.34069999999997, "r": 275.70184, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "It is not possible to create a row permission or column mask on a distributed table or a ", "bbox": {"l": 136.8, "t": 106.6087, "r": 519.797, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "program-described file.", "bbox": {"l": 136.8, "t": 118.60852, "r": 238.85611, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "After a row permission or column mask is added to a table, there are some data access ", "bbox": {"l": 136.8, "t": 140.62811, "r": 525.55267, "b": 149.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "requests that no longer work. An attempt to open or query a table with activated RCAC ", "bbox": {"l": 136.8, "t": 152.62793, "r": 521.97815, "b": 161.84094000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "controls involving any of the following scenarios is rejected with the CPD43A4 error message:", "bbox": {"l": 136.8, "t": 164.62775, "r": 547.21381, "b": 173.84076000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 181.75696000000005, "r": 141.78001, "b": 190.53174, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "A logical file with multiple formats if the open attempt requests more than one format.", "bbox": {"l": 151.20018, "t": 181.60753999999997, "r": 526.03485, "b": 190.82056, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 193.75676999999996, "r": 141.78001, "b": 202.53156, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "A table or query that specifies an ICU 2.6.1 sort sequence.", "bbox": {"l": 151.20018, "t": 193.60735999999997, "r": 410.49484, "b": 202.82037000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 205.75658999999996, "r": 141.78001, "b": 214.53137000000004, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "A table with read triggers.", "bbox": {"l": 151.20018, "t": 205.60717999999997, "r": 264.33585, "b": 214.82019000000003, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "This unsupported interface error occurs when a table with RCAC controls is accessed, not ", "bbox": {"l": 136.80002, "t": 227.62676999999996, "r": 537.02081, "b": 236.83978000000002, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "when the RCAC control is created and activated.", "bbox": {"l": 136.80002, "t": 239.62658999999996, "r": 351.88031, "b": 248.83960000000002, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "For example, assume that there is a physical file, PF1, which is referenced by a single format ", "bbox": {"l": 136.80002, "t": 261.64617999999996, "r": 547.27563, "b": 270.85919, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "logical file (LFS) and a multi-format logical file (LFM). A row permission is successfully ", "bbox": {"l": 136.80002, "t": 273.64599999999996, "r": 519.41534, "b": 282.85900999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "created and activated for PF1. Any application that accesses PF1 directly or LFS continues to ", "bbox": {"l": 136.79901, "t": 285.6458400000001, "r": 547.23773, "b": 294.85883000000007, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "work without any issues. However, any application that opens LFM with multiple formats ", "bbox": {"l": 136.79901, "t": 297.64566, "r": 526.68823, "b": 306.85864, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "receives an error on the open attempt after the row permission is activated for PF1.", "bbox": {"l": 136.79901, "t": 309.64548, "r": 503.38181, "b": 318.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "5.2", "bbox": {"l": 64.800003, "t": 416.34069999999997, "r": 87.404282, "b": 431.1037, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Native query result differences", "bbox": {"l": 91.925117, "t": 416.34069999999997, "r": 329.61151, "b": 431.1037, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "The SQL Query Engine (SQE) is the only engine that is enhanced by IBM to enforce RCAC ", "bbox": {"l": 136.8, "t": 448.60873, "r": 542.39417, "b": 457.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "controls on query requests. In order for native query requests to work with RCAC, these ", "bbox": {"l": 136.8, "t": 460.60855, "r": 526.14728, "b": 469.82153, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "native query requests are now processed by SQE instead of the Classic Query Engine ", "bbox": {"l": 136.8, "t": 472.60837, "r": 521.31879, "b": 481.82135, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "(CQE). Native query requests can consist of the following items:", "bbox": {"l": 136.8, "t": 484.60818, "r": 419.14819, "b": 493.82117, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "GLYPH", "bbox": {"l": 136.8, "t": 501.79715, "r": 141.78, "b": 510.57193, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Query/400", "bbox": {"l": 151.20016, "t": 501.64777, "r": 198.17549, "b": 510.86075, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "GLYPH", "bbox": {"l": 136.8, "t": 513.79697, "r": 141.78, "b": 522.5717500000001, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "QQQQRY API", "bbox": {"l": 151.20016, "t": 513.6475800000001, "r": 214.61249, "b": 522.86057, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "GLYPH", "bbox": {"l": 136.8, "t": 525.79678, "r": 141.78, "b": 534.57156, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Open Query File (", "bbox": {"l": 151.20016, "t": 525.6474000000001, "r": 230.89011, "b": 534.8603800000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "OPNQRYF", "bbox": {"l": 230.93991000000003, "t": 525.79678, "r": 265.85968, "b": 534.6213700000001, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": ") command", "bbox": {"l": 265.92041, "t": 525.6474000000001, "r": 315.8399, "b": 534.8603800000001, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "GLYPH", "bbox": {"l": 136.79997, "t": 537.7966, "r": 141.77997, "b": 546.5713499999999, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Run Query (", "bbox": {"l": 151.20013, "t": 537.6472, "r": 205.94926, "b": 546.8602, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "RUNQRY", "bbox": {"l": 205.92038, "t": 537.7966, "r": 235.91989, "b": 546.62115, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": ") command", "bbox": {"l": 235.91991, "t": 537.6472, "r": 285.85736, "b": 546.8602, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "GLYPH", "bbox": {"l": 136.79997, "t": 549.7964, "r": 141.77997, "b": 558.57115, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Native open (RPG, COBOL, OPNDBF, and so on) of an SQL view", "bbox": {"l": 151.20013, "t": 549.6469999999999, "r": 441.4704, "b": 558.86, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Legacy queries that have been running without any issues for many years and over many", "bbox": {"l": 136.79997, "t": 571.66656, "r": 530.37244, "b": 580.87956, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "IBM i releases are now processed by a different query engine. As a result, the runtime ", "bbox": {"l": 136.79997, "t": 583.66637, "r": 519.22693, "b": 592.87936, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "behavior and results that are returned can be different for native query requests with RCAC ", "bbox": {"l": 136.79997, "t": 595.66617, "r": 541.63519, "b": 604.8791699999999, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "enabled. The ", "bbox": {"l": 136.79997, "t": 607.66597, "r": 197.70737, "b": 616.87897, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "OPNQRYF", "bbox": {"l": 197.70039, "t": 607.81537, "r": 232.67992000000004, "b": 616.6399200000001, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": " command and Query/400 run with SQE by default.", "bbox": {"l": 232.68091, "t": 607.66597, "r": 458.73212, "b": 616.87897, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "The following list documents some of the query output differences that can occur when native ", "bbox": {"l": 136.80096, "t": 629.62578, "r": 547.28345, "b": 638.83878, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "query requests are processed by CQE:", "bbox": {"l": 136.80096, "t": 641.62558, "r": 309.73151, "b": 650.83858, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 658.81454, "r": 141.78096, "b": 667.5893, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Different ordering in the result set", "bbox": {"l": 151.20113, "t": 658.66515, "r": 298.89197, "b": 667.87814, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 670.81435, "r": 141.78096, "b": 679.58911, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "Different values for null columns or columns with errors", "bbox": {"l": 151.20113, "t": 670.66495, "r": 393.49902, "b": 679.87795, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 682.81416, "r": 141.78096, "b": 691.58892, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Suppression of some mapping error messages", "bbox": {"l": 151.20113, "t": 682.66476, "r": 358.48862, "b": 691.87776, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 694.813972, "r": 141.78096, "b": 703.5887299999999, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "Loss of RRN positioning capabilities", "bbox": {"l": 151.20113, "t": 694.664566, "r": 310.57407, "b": 703.877571, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 706.813782, "r": 141.78096, "b": 715.588539, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "Duplicate key processing behavior differences", "bbox": {"l": 151.20113, "t": 706.6643750000001, "r": 354.20792, "b": 715.87738, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 718.813591, "r": 141.78096, "b": 727.588348, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Missing key feedback", "bbox": {"l": 151.20113, "t": 718.664185, "r": 245.8849, "b": 727.87719, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "Important:", "bbox": {"l": 142.8, "t": 337.60873, "r": 192.41673, "b": 346.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": " This potential runtime error places a heavy emphasis on a comprehensive ", "bbox": {"l": 192.41974, "t": 337.60873, "r": 524.8606, "b": 346.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "testing plan to ensure that all programs are tested. If testing uncovers an unsupported ", "bbox": {"l": 142.80002, "t": 349.60855, "r": 524.34381, "b": 358.82153, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "interface, then you must investigate whether the application can be rewritten to use a data ", "bbox": {"l": 142.80002, "t": 361.60837, "r": 541.237, "b": 370.82134999999994, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "access interface that is supported by RCAC.", "bbox": {"l": 142.80002, "t": 373.60818000000006, "r": 338.13461, "b": 382.82117000000005, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.1874008178711, "t": 754.3892211914062, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9252743721008301, "cells": [{"id": 0, "text": "80 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.2634048461914, "t": 754.6898193359375, "r": 334.42142, "b": 763.9056396484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9558761715888977, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.43855285644531, "t": 73.36776733398438, "r": 275.70184, "b": 89.5892105102539, "coord_origin": "TOPLEFT"}, "confidence": 0.9696915745735168, "cells": [{"id": 2, "text": "5.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.539185, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Unsupported interfaces", "bbox": {"l": 92.087021, "t": 74.34069999999997, "r": 275.70184, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 136.1591339111328, "t": 105.93167114257812, "r": 519.797, "b": 128.38632202148438, "coord_origin": "TOPLEFT"}, "confidence": 0.9809359312057495, "cells": [{"id": 4, "text": "It is not possible to create a row permission or column mask on a distributed table or a ", "bbox": {"l": 136.8, "t": 106.6087, "r": 519.797, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "program-described file.", "bbox": {"l": 136.8, "t": 118.60852, "r": 238.85611, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.89776611328125, "t": 140.08090209960938, "r": 547.21381, "b": 174.56727600097656, "coord_origin": "TOPLEFT"}, "confidence": 0.9822454452514648, "cells": [{"id": 6, "text": "After a row permission or column mask is added to a table, there are some data access ", "bbox": {"l": 136.8, "t": 140.62811, "r": 525.55267, "b": 149.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "requests that no longer work. An attempt to open or query a table with activated RCAC ", "bbox": {"l": 136.8, "t": 152.62793, "r": 521.97815, "b": 161.84094000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "controls involving any of the following scenarios is rejected with the CPD43A4 error message:", "bbox": {"l": 136.8, "t": 164.62775, "r": 547.21381, "b": 173.84076000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 135.5338592529297, "t": 180.65792846679688, "r": 526.03485, "b": 191.1039581298828, "coord_origin": "TOPLEFT"}, "confidence": 0.9507953524589539, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 181.75696000000005, "r": 141.78001, "b": 190.53174, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "A logical file with multiple formats if the open attempt requests more than one format.", "bbox": {"l": 151.20018, "t": 181.60753999999997, "r": 526.03485, "b": 190.82056, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.57638549804688, "t": 192.57815551757812, "r": 410.49484, "b": 203.17335510253906, "coord_origin": "TOPLEFT"}, "confidence": 0.9401845932006836, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 193.75676999999996, "r": 141.78001, "b": 202.53156, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "A table or query that specifies an ICU 2.6.1 sort sequence.", "bbox": {"l": 151.20018, "t": 193.60735999999997, "r": 410.49484, "b": 202.82037000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.51390075683594, "t": 205.0358123779297, "r": 264.33585, "b": 215.18972778320312, "coord_origin": "TOPLEFT"}, "confidence": 0.9484872221946716, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 205.75658999999996, "r": 141.78001, "b": 214.53137000000004, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "A table with read triggers.", "bbox": {"l": 151.20018, "t": 205.60717999999997, "r": 264.33585, "b": 214.82019000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 135.78880310058594, "t": 226.60470581054688, "r": 537.02081, "b": 248.83960000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9780105948448181, "cells": [{"id": 15, "text": "This unsupported interface error occurs when a table with RCAC controls is accessed, not ", "bbox": {"l": 136.80002, "t": 227.62676999999996, "r": 537.02081, "b": 236.83978000000002, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "when the RCAC control is created and activated.", "bbox": {"l": 136.80002, "t": 239.62658999999996, "r": 351.88031, "b": 248.83960000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 136.04721069335938, "t": 260.5085144042969, "r": 547.27563, "b": 318.8584599999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9873144030570984, "cells": [{"id": 17, "text": "For example, assume that there is a physical file, PF1, which is referenced by a single format ", "bbox": {"l": 136.80002, "t": 261.64617999999996, "r": 547.27563, "b": 270.85919, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "logical file (LFS) and a multi-format logical file (LFM). A row permission is successfully ", "bbox": {"l": 136.80002, "t": 273.64599999999996, "r": 519.41534, "b": 282.85900999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "created and activated for PF1. Any application that accesses PF1 directly or LFS continues to ", "bbox": {"l": 136.79901, "t": 285.6458400000001, "r": 547.23773, "b": 294.85883000000007, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "work without any issues. However, any application that opens LFM with multiple formats ", "bbox": {"l": 136.79901, "t": 297.64566, "r": 526.68823, "b": 306.85864, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "receives an error on the open attempt after the row permission is activated for PF1.", "bbox": {"l": 136.79901, "t": 309.64548, "r": 503.38181, "b": 318.8584599999999, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "section_header", "bbox": {"l": 64.47200012207031, "t": 415.3008117675781, "r": 329.61151, "b": 431.6415710449219, "coord_origin": "TOPLEFT"}, "confidence": 0.9681466221809387, "cells": [{"id": 22, "text": "5.2", "bbox": {"l": 64.800003, "t": 416.34069999999997, "r": 87.404282, "b": 431.1037, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Native query result differences", "bbox": {"l": 91.925117, "t": 416.34069999999997, "r": 329.61151, "b": 431.1037, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 135.66397094726562, "t": 447.6929626464844, "r": 542.39417, "b": 494.5770263671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9864740371704102, "cells": [{"id": 24, "text": "The SQL Query Engine (SQE) is the only engine that is enhanced by IBM to enforce RCAC ", "bbox": {"l": 136.8, "t": 448.60873, "r": 542.39417, "b": 457.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "controls on query requests. In order for native query requests to work with RCAC, these ", "bbox": {"l": 136.8, "t": 460.60855, "r": 526.14728, "b": 469.82153, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "native query requests are now processed by SQE instead of the Classic Query Engine ", "bbox": {"l": 136.8, "t": 472.60837, "r": 521.31879, "b": 481.82135, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "(CQE). Native query requests can consist of the following items:", "bbox": {"l": 136.8, "t": 484.60818, "r": 419.14819, "b": 493.82117, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "list_item", "bbox": {"l": 135.92169189453125, "t": 500.54949951171875, "r": 198.29859924316406, "b": 510.86075, "coord_origin": "TOPLEFT"}, "confidence": 0.9383296370506287, "cells": [{"id": 28, "text": "GLYPH", "bbox": {"l": 136.8, "t": 501.79715, "r": 141.78, "b": 510.57193, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Query/400", "bbox": {"l": 151.20016, "t": 501.64777, "r": 198.17549, "b": 510.86075, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "list_item", "bbox": {"l": 135.69873046875, "t": 512.3756713867188, "r": 214.61249, "b": 522.86057, "coord_origin": "TOPLEFT"}, "confidence": 0.9262765645980835, "cells": [{"id": 30, "text": "GLYPH", "bbox": {"l": 136.8, "t": 513.79697, "r": 141.78, "b": 522.5717500000001, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "QQQQRY API", "bbox": {"l": 151.20016, "t": 513.6475800000001, "r": 214.61249, "b": 522.86057, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "list_item", "bbox": {"l": 135.62481689453125, "t": 524.65283203125, "r": 315.8399, "b": 534.8603800000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9469870328903198, "cells": [{"id": 32, "text": "GLYPH", "bbox": {"l": 136.8, "t": 525.79678, "r": 141.78, "b": 534.57156, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Open Query File (", "bbox": {"l": 151.20016, "t": 525.6474000000001, "r": 230.89011, "b": 534.8603800000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "OPNQRYF", "bbox": {"l": 230.93991000000003, "t": 525.79678, "r": 265.85968, "b": 534.6213700000001, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": ") command", "bbox": {"l": 265.92041, "t": 525.6474000000001, "r": 315.8399, "b": 534.8603800000001, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "list_item", "bbox": {"l": 135.5345458984375, "t": 536.3973388671875, "r": 285.93896484375, "b": 546.8602, "coord_origin": "TOPLEFT"}, "confidence": 0.934996485710144, "cells": [{"id": 36, "text": "GLYPH", "bbox": {"l": 136.79997, "t": 537.7966, "r": 141.77997, "b": 546.5713499999999, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Run Query (", "bbox": {"l": 151.20013, "t": 537.6472, "r": 205.94926, "b": 546.8602, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "RUNQRY", "bbox": {"l": 205.92038, "t": 537.7966, "r": 235.91989, "b": 546.62115, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": ") command", "bbox": {"l": 235.91991, "t": 537.6472, "r": 285.85736, "b": 546.8602, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "list_item", "bbox": {"l": 135.56021118164062, "t": 548.5358276367188, "r": 441.7839660644531, "b": 558.86, "coord_origin": "TOPLEFT"}, "confidence": 0.9559246897697449, "cells": [{"id": 40, "text": "GLYPH", "bbox": {"l": 136.79997, "t": 549.7964, "r": 141.77997, "b": 558.57115, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Native open (RPG, COBOL, OPNDBF, and so on) of an SQL view", "bbox": {"l": 151.20013, "t": 549.6469999999999, "r": 441.4704, "b": 558.86, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "text", "bbox": {"l": 135.97003173828125, "t": 570.7841796875, "r": 541.63519, "b": 617.0958251953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9824656248092651, "cells": [{"id": 42, "text": "Legacy queries that have been running without any issues for many years and over many", "bbox": {"l": 136.79997, "t": 571.66656, "r": 530.37244, "b": 580.87956, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "IBM i releases are now processed by a different query engine. As a result, the runtime ", "bbox": {"l": 136.79997, "t": 583.66637, "r": 519.22693, "b": 592.87936, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "behavior and results that are returned can be different for native query requests with RCAC ", "bbox": {"l": 136.79997, "t": 595.66617, "r": 541.63519, "b": 604.8791699999999, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "enabled. The ", "bbox": {"l": 136.79997, "t": 607.66597, "r": 197.70737, "b": 616.87897, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "OPNQRYF", "bbox": {"l": 197.70039, "t": 607.81537, "r": 232.67992000000004, "b": 616.6399200000001, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": " command and Query/400 run with SQE by default.", "bbox": {"l": 232.68091, "t": 607.66597, "r": 458.73212, "b": 616.87897, "coord_origin": "TOPLEFT"}}]}, {"id": 18, "label": "text", "bbox": {"l": 135.73948669433594, "t": 628.62744140625, "r": 547.28345, "b": 651.3435668945312, "coord_origin": "TOPLEFT"}, "confidence": 0.975006639957428, "cells": [{"id": 48, "text": "The following list documents some of the query output differences that can occur when native ", "bbox": {"l": 136.80096, "t": 629.62578, "r": 547.28345, "b": 638.83878, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "query requests are processed by CQE:", "bbox": {"l": 136.80096, "t": 641.62558, "r": 309.73151, "b": 650.83858, "coord_origin": "TOPLEFT"}}]}, {"id": 19, "label": "list_item", "bbox": {"l": 135.9209747314453, "t": 658.1214599609375, "r": 299.18975830078125, "b": 668.4609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9473878741264343, "cells": [{"id": 50, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 658.81454, "r": 141.78096, "b": 667.5893, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Different ordering in the result set", "bbox": {"l": 151.20113, "t": 658.66515, "r": 298.89197, "b": 667.87814, "coord_origin": "TOPLEFT"}}]}, {"id": 20, "label": "list_item", "bbox": {"l": 135.68008422851562, "t": 670.212890625, "r": 393.49902, "b": 680.426513671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9464444518089294, "cells": [{"id": 52, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 670.81435, "r": 141.78096, "b": 679.58911, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "Different values for null columns or columns with errors", "bbox": {"l": 151.20113, "t": 670.66495, "r": 393.49902, "b": 679.87795, "coord_origin": "TOPLEFT"}}]}, {"id": 21, "label": "list_item", "bbox": {"l": 135.76820373535156, "t": 681.9945068359375, "r": 358.48862, "b": 692.8447265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9444779753684998, "cells": [{"id": 54, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 682.81416, "r": 141.78096, "b": 691.58892, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Suppression of some mapping error messages", "bbox": {"l": 151.20113, "t": 682.66476, "r": 358.48862, "b": 691.87776, "coord_origin": "TOPLEFT"}}]}, {"id": 22, "label": "list_item", "bbox": {"l": 135.62449645996094, "t": 693.85107421875, "r": 310.7019348144531, "b": 704.2999267578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9346434473991394, "cells": [{"id": 56, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 694.813972, "r": 141.78096, "b": 703.5887299999999, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "Loss of RRN positioning capabilities", "bbox": {"l": 151.20113, "t": 694.664566, "r": 310.57407, "b": 703.877571, "coord_origin": "TOPLEFT"}}]}, {"id": 23, "label": "list_item", "bbox": {"l": 135.7325439453125, "t": 705.99072265625, "r": 354.20792, "b": 716.4747924804688, "coord_origin": "TOPLEFT"}, "confidence": 0.9466715455055237, "cells": [{"id": 58, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 706.813782, "r": 141.78096, "b": 715.588539, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "Duplicate key processing behavior differences", "bbox": {"l": 151.20113, "t": 706.6643750000001, "r": 354.20792, "b": 715.87738, "coord_origin": "TOPLEFT"}}]}, {"id": 24, "label": "list_item", "bbox": {"l": 135.72433471679688, "t": 718.1799926757812, "r": 246.4168701171875, "b": 728.3264770507812, "coord_origin": "TOPLEFT"}, "confidence": 0.9458449482917786, "cells": [{"id": 60, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 718.813591, "r": 141.78096, "b": 727.588348, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Missing key feedback", "bbox": {"l": 151.20113, "t": 718.664185, "r": 245.8849, "b": 727.87719, "coord_origin": "TOPLEFT"}}]}, {"id": 25, "label": "text", "bbox": {"l": 141.973876953125, "t": 336.4569396972656, "r": 541.237, "b": 383.3992919921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9816816449165344, "cells": [{"id": 62, "text": "Important:", "bbox": {"l": 142.8, "t": 337.60873, "r": 192.41673, "b": 346.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": " This potential runtime error places a heavy emphasis on a comprehensive ", "bbox": {"l": 192.41974, "t": 337.60873, "r": 524.8606, "b": 346.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "testing plan to ensure that all programs are tested. If testing uncovers an unsupported ", "bbox": {"l": 142.80002, "t": 349.60855, "r": 524.34381, "b": 358.82153, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "interface, then you must investigate whether the application can be rewritten to use a data ", "bbox": {"l": 142.80002, "t": 361.60837, "r": 541.237, "b": 370.82134999999994, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "access interface that is supported by RCAC.", "bbox": {"l": 142.80002, "t": 373.60818000000006, "r": 338.13461, "b": 382.82117000000005, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 95, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.1874008178711, "t": 754.3892211914062, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9252743721008301, "cells": [{"id": 0, "text": "80 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "80"}, {"label": "page_footer", "id": 1, "page_no": 95, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.2634048461914, "t": 754.6898193359375, "r": 334.42142, "b": 763.9056396484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9558761715888977, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "section_header", "id": 2, "page_no": 95, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.43855285644531, "t": 73.36776733398438, "r": 275.70184, "b": 89.5892105102539, "coord_origin": "TOPLEFT"}, "confidence": 0.9696915745735168, "cells": [{"id": 2, "text": "5.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.539185, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Unsupported interfaces", "bbox": {"l": 92.087021, "t": 74.34069999999997, "r": 275.70184, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, "text": "5.1 Unsupported interfaces"}, {"label": "text", "id": 3, "page_no": 95, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.1591339111328, "t": 105.93167114257812, "r": 519.797, "b": 128.38632202148438, "coord_origin": "TOPLEFT"}, "confidence": 0.9809359312057495, "cells": [{"id": 4, "text": "It is not possible to create a row permission or column mask on a distributed table or a ", "bbox": {"l": 136.8, "t": 106.6087, "r": 519.797, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "program-described file.", "bbox": {"l": 136.8, "t": 118.60852, "r": 238.85611, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}]}, "text": "It is not possible to create a row permission or column mask on a distributed table or a program-described file."}, {"label": "text", "id": 4, "page_no": 95, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.89776611328125, "t": 140.08090209960938, "r": 547.21381, "b": 174.56727600097656, "coord_origin": "TOPLEFT"}, "confidence": 0.9822454452514648, "cells": [{"id": 6, "text": "After a row permission or column mask is added to a table, there are some data access ", "bbox": {"l": 136.8, "t": 140.62811, "r": 525.55267, "b": 149.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "requests that no longer work. An attempt to open or query a table with activated RCAC ", "bbox": {"l": 136.8, "t": 152.62793, "r": 521.97815, "b": 161.84094000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "controls involving any of the following scenarios is rejected with the CPD43A4 error message:", "bbox": {"l": 136.8, "t": 164.62775, "r": 547.21381, "b": 173.84076000000005, "coord_origin": "TOPLEFT"}}]}, "text": "After a row permission or column mask is added to a table, there are some data access requests that no longer work. An attempt to open or query a table with activated RCAC controls involving any of the following scenarios is rejected with the CPD43A4 error message:"}, {"label": "list_item", "id": 5, "page_no": 95, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.5338592529297, "t": 180.65792846679688, "r": 526.03485, "b": 191.1039581298828, "coord_origin": "TOPLEFT"}, "confidence": 0.9507953524589539, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 181.75696000000005, "r": 141.78001, "b": 190.53174, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "A logical file with multiple formats if the open attempt requests more than one format.", "bbox": {"l": 151.20018, "t": 181.60753999999997, "r": 526.03485, "b": 190.82056, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH A logical file with multiple formats if the open attempt requests more than one format."}, {"label": "list_item", "id": 6, "page_no": 95, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.57638549804688, "t": 192.57815551757812, "r": 410.49484, "b": 203.17335510253906, "coord_origin": "TOPLEFT"}, "confidence": 0.9401845932006836, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 193.75676999999996, "r": 141.78001, "b": 202.53156, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "A table or query that specifies an ICU 2.6.1 sort sequence.", "bbox": {"l": 151.20018, "t": 193.60735999999997, "r": 410.49484, "b": 202.82037000000003, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH A table or query that specifies an ICU 2.6.1 sort sequence."}, {"label": "list_item", "id": 7, "page_no": 95, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.51390075683594, "t": 205.0358123779297, "r": 264.33585, "b": 215.18972778320312, "coord_origin": "TOPLEFT"}, "confidence": 0.9484872221946716, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 205.75658999999996, "r": 141.78001, "b": 214.53137000000004, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "A table with read triggers.", "bbox": {"l": 151.20018, "t": 205.60717999999997, "r": 264.33585, "b": 214.82019000000003, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH A table with read triggers."}, {"label": "text", "id": 8, "page_no": 95, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.78880310058594, "t": 226.60470581054688, "r": 537.02081, "b": 248.83960000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9780105948448181, "cells": [{"id": 15, "text": "This unsupported interface error occurs when a table with RCAC controls is accessed, not ", "bbox": {"l": 136.80002, "t": 227.62676999999996, "r": 537.02081, "b": 236.83978000000002, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "when the RCAC control is created and activated.", "bbox": {"l": 136.80002, "t": 239.62658999999996, "r": 351.88031, "b": 248.83960000000002, "coord_origin": "TOPLEFT"}}]}, "text": "This unsupported interface error occurs when a table with RCAC controls is accessed, not when the RCAC control is created and activated."}, {"label": "text", "id": 9, "page_no": 95, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.04721069335938, "t": 260.5085144042969, "r": 547.27563, "b": 318.8584599999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9873144030570984, "cells": [{"id": 17, "text": "For example, assume that there is a physical file, PF1, which is referenced by a single format ", "bbox": {"l": 136.80002, "t": 261.64617999999996, "r": 547.27563, "b": 270.85919, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "logical file (LFS) and a multi-format logical file (LFM). A row permission is successfully ", "bbox": {"l": 136.80002, "t": 273.64599999999996, "r": 519.41534, "b": 282.85900999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "created and activated for PF1. Any application that accesses PF1 directly or LFS continues to ", "bbox": {"l": 136.79901, "t": 285.6458400000001, "r": 547.23773, "b": 294.85883000000007, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "work without any issues. However, any application that opens LFM with multiple formats ", "bbox": {"l": 136.79901, "t": 297.64566, "r": 526.68823, "b": 306.85864, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "receives an error on the open attempt after the row permission is activated for PF1.", "bbox": {"l": 136.79901, "t": 309.64548, "r": 503.38181, "b": 318.8584599999999, "coord_origin": "TOPLEFT"}}]}, "text": "For example, assume that there is a physical file, PF1, which is referenced by a single format logical file (LFS) and a multi-format logical file (LFM). A row permission is successfully created and activated for PF1. Any application that accesses PF1 directly or LFS continues to work without any issues. However, any application that opens LFM with multiple formats receives an error on the open attempt after the row permission is activated for PF1."}, {"label": "section_header", "id": 10, "page_no": 95, "cluster": {"id": 10, "label": "section_header", "bbox": {"l": 64.47200012207031, "t": 415.3008117675781, "r": 329.61151, "b": 431.6415710449219, "coord_origin": "TOPLEFT"}, "confidence": 0.9681466221809387, "cells": [{"id": 22, "text": "5.2", "bbox": {"l": 64.800003, "t": 416.34069999999997, "r": 87.404282, "b": 431.1037, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Native query result differences", "bbox": {"l": 91.925117, "t": 416.34069999999997, "r": 329.61151, "b": 431.1037, "coord_origin": "TOPLEFT"}}]}, "text": "5.2 Native query result differences"}, {"label": "text", "id": 11, "page_no": 95, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.66397094726562, "t": 447.6929626464844, "r": 542.39417, "b": 494.5770263671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9864740371704102, "cells": [{"id": 24, "text": "The SQL Query Engine (SQE) is the only engine that is enhanced by IBM to enforce RCAC ", "bbox": {"l": 136.8, "t": 448.60873, "r": 542.39417, "b": 457.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "controls on query requests. In order for native query requests to work with RCAC, these ", "bbox": {"l": 136.8, "t": 460.60855, "r": 526.14728, "b": 469.82153, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "native query requests are now processed by SQE instead of the Classic Query Engine ", "bbox": {"l": 136.8, "t": 472.60837, "r": 521.31879, "b": 481.82135, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "(CQE). Native query requests can consist of the following items:", "bbox": {"l": 136.8, "t": 484.60818, "r": 419.14819, "b": 493.82117, "coord_origin": "TOPLEFT"}}]}, "text": "The SQL Query Engine (SQE) is the only engine that is enhanced by IBM to enforce RCAC controls on query requests. In order for native query requests to work with RCAC, these native query requests are now processed by SQE instead of the Classic Query Engine (CQE). Native query requests can consist of the following items:"}, {"label": "list_item", "id": 12, "page_no": 95, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 135.92169189453125, "t": 500.54949951171875, "r": 198.29859924316406, "b": 510.86075, "coord_origin": "TOPLEFT"}, "confidence": 0.9383296370506287, "cells": [{"id": 28, "text": "GLYPH", "bbox": {"l": 136.8, "t": 501.79715, "r": 141.78, "b": 510.57193, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Query/400", "bbox": {"l": 151.20016, "t": 501.64777, "r": 198.17549, "b": 510.86075, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Query/400"}, {"label": "list_item", "id": 13, "page_no": 95, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 135.69873046875, "t": 512.3756713867188, "r": 214.61249, "b": 522.86057, "coord_origin": "TOPLEFT"}, "confidence": 0.9262765645980835, "cells": [{"id": 30, "text": "GLYPH", "bbox": {"l": 136.8, "t": 513.79697, "r": 141.78, "b": 522.5717500000001, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "QQQQRY API", "bbox": {"l": 151.20016, "t": 513.6475800000001, "r": 214.61249, "b": 522.86057, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH QQQQRY API"}, {"label": "list_item", "id": 14, "page_no": 95, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 135.62481689453125, "t": 524.65283203125, "r": 315.8399, "b": 534.8603800000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9469870328903198, "cells": [{"id": 32, "text": "GLYPH", "bbox": {"l": 136.8, "t": 525.79678, "r": 141.78, "b": 534.57156, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Open Query File (", "bbox": {"l": 151.20016, "t": 525.6474000000001, "r": 230.89011, "b": 534.8603800000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "OPNQRYF", "bbox": {"l": 230.93991000000003, "t": 525.79678, "r": 265.85968, "b": 534.6213700000001, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": ") command", "bbox": {"l": 265.92041, "t": 525.6474000000001, "r": 315.8399, "b": 534.8603800000001, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Open Query File ( OPNQRYF ) command"}, {"label": "list_item", "id": 15, "page_no": 95, "cluster": {"id": 15, "label": "list_item", "bbox": {"l": 135.5345458984375, "t": 536.3973388671875, "r": 285.93896484375, "b": 546.8602, "coord_origin": "TOPLEFT"}, "confidence": 0.934996485710144, "cells": [{"id": 36, "text": "GLYPH", "bbox": {"l": 136.79997, "t": 537.7966, "r": 141.77997, "b": 546.5713499999999, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Run Query (", "bbox": {"l": 151.20013, "t": 537.6472, "r": 205.94926, "b": 546.8602, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "RUNQRY", "bbox": {"l": 205.92038, "t": 537.7966, "r": 235.91989, "b": 546.62115, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": ") command", "bbox": {"l": 235.91991, "t": 537.6472, "r": 285.85736, "b": 546.8602, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Run Query ( RUNQRY ) command"}, {"label": "list_item", "id": 16, "page_no": 95, "cluster": {"id": 16, "label": "list_item", "bbox": {"l": 135.56021118164062, "t": 548.5358276367188, "r": 441.7839660644531, "b": 558.86, "coord_origin": "TOPLEFT"}, "confidence": 0.9559246897697449, "cells": [{"id": 40, "text": "GLYPH", "bbox": {"l": 136.79997, "t": 549.7964, "r": 141.77997, "b": 558.57115, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Native open (RPG, COBOL, OPNDBF, and so on) of an SQL view", "bbox": {"l": 151.20013, "t": 549.6469999999999, "r": 441.4704, "b": 558.86, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Native open (RPG, COBOL, OPNDBF, and so on) of an SQL view"}, {"label": "text", "id": 17, "page_no": 95, "cluster": {"id": 17, "label": "text", "bbox": {"l": 135.97003173828125, "t": 570.7841796875, "r": 541.63519, "b": 617.0958251953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9824656248092651, "cells": [{"id": 42, "text": "Legacy queries that have been running without any issues for many years and over many", "bbox": {"l": 136.79997, "t": 571.66656, "r": 530.37244, "b": 580.87956, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "IBM i releases are now processed by a different query engine. As a result, the runtime ", "bbox": {"l": 136.79997, "t": 583.66637, "r": 519.22693, "b": 592.87936, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "behavior and results that are returned can be different for native query requests with RCAC ", "bbox": {"l": 136.79997, "t": 595.66617, "r": 541.63519, "b": 604.8791699999999, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "enabled. The ", "bbox": {"l": 136.79997, "t": 607.66597, "r": 197.70737, "b": 616.87897, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "OPNQRYF", "bbox": {"l": 197.70039, "t": 607.81537, "r": 232.67992000000004, "b": 616.6399200000001, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": " command and Query/400 run with SQE by default.", "bbox": {"l": 232.68091, "t": 607.66597, "r": 458.73212, "b": 616.87897, "coord_origin": "TOPLEFT"}}]}, "text": "Legacy queries that have been running without any issues for many years and over many IBM i releases are now processed by a different query engine. As a result, the runtime behavior and results that are returned can be different for native query requests with RCAC enabled. The OPNQRYF command and Query/400 run with SQE by default."}, {"label": "text", "id": 18, "page_no": 95, "cluster": {"id": 18, "label": "text", "bbox": {"l": 135.73948669433594, "t": 628.62744140625, "r": 547.28345, "b": 651.3435668945312, "coord_origin": "TOPLEFT"}, "confidence": 0.975006639957428, "cells": [{"id": 48, "text": "The following list documents some of the query output differences that can occur when native ", "bbox": {"l": 136.80096, "t": 629.62578, "r": 547.28345, "b": 638.83878, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "query requests are processed by CQE:", "bbox": {"l": 136.80096, "t": 641.62558, "r": 309.73151, "b": 650.83858, "coord_origin": "TOPLEFT"}}]}, "text": "The following list documents some of the query output differences that can occur when native query requests are processed by CQE:"}, {"label": "list_item", "id": 19, "page_no": 95, "cluster": {"id": 19, "label": "list_item", "bbox": {"l": 135.9209747314453, "t": 658.1214599609375, "r": 299.18975830078125, "b": 668.4609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9473878741264343, "cells": [{"id": 50, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 658.81454, "r": 141.78096, "b": 667.5893, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Different ordering in the result set", "bbox": {"l": 151.20113, "t": 658.66515, "r": 298.89197, "b": 667.87814, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Different ordering in the result set"}, {"label": "list_item", "id": 20, "page_no": 95, "cluster": {"id": 20, "label": "list_item", "bbox": {"l": 135.68008422851562, "t": 670.212890625, "r": 393.49902, "b": 680.426513671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9464444518089294, "cells": [{"id": 52, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 670.81435, "r": 141.78096, "b": 679.58911, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "Different values for null columns or columns with errors", "bbox": {"l": 151.20113, "t": 670.66495, "r": 393.49902, "b": 679.87795, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Different values for null columns or columns with errors"}, {"label": "list_item", "id": 21, "page_no": 95, "cluster": {"id": 21, "label": "list_item", "bbox": {"l": 135.76820373535156, "t": 681.9945068359375, "r": 358.48862, "b": 692.8447265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9444779753684998, "cells": [{"id": 54, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 682.81416, "r": 141.78096, "b": 691.58892, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Suppression of some mapping error messages", "bbox": {"l": 151.20113, "t": 682.66476, "r": 358.48862, "b": 691.87776, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Suppression of some mapping error messages"}, {"label": "list_item", "id": 22, "page_no": 95, "cluster": {"id": 22, "label": "list_item", "bbox": {"l": 135.62449645996094, "t": 693.85107421875, "r": 310.7019348144531, "b": 704.2999267578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9346434473991394, "cells": [{"id": 56, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 694.813972, "r": 141.78096, "b": 703.5887299999999, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "Loss of RRN positioning capabilities", "bbox": {"l": 151.20113, "t": 694.664566, "r": 310.57407, "b": 703.877571, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Loss of RRN positioning capabilities"}, {"label": "list_item", "id": 23, "page_no": 95, "cluster": {"id": 23, "label": "list_item", "bbox": {"l": 135.7325439453125, "t": 705.99072265625, "r": 354.20792, "b": 716.4747924804688, "coord_origin": "TOPLEFT"}, "confidence": 0.9466715455055237, "cells": [{"id": 58, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 706.813782, "r": 141.78096, "b": 715.588539, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "Duplicate key processing behavior differences", "bbox": {"l": 151.20113, "t": 706.6643750000001, "r": 354.20792, "b": 715.87738, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Duplicate key processing behavior differences"}, {"label": "list_item", "id": 24, "page_no": 95, "cluster": {"id": 24, "label": "list_item", "bbox": {"l": 135.72433471679688, "t": 718.1799926757812, "r": 246.4168701171875, "b": 728.3264770507812, "coord_origin": "TOPLEFT"}, "confidence": 0.9458449482917786, "cells": [{"id": 60, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 718.813591, "r": 141.78096, "b": 727.588348, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Missing key feedback", "bbox": {"l": 151.20113, "t": 718.664185, "r": 245.8849, "b": 727.87719, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Missing key feedback"}, {"label": "text", "id": 25, "page_no": 95, "cluster": {"id": 25, "label": "text", "bbox": {"l": 141.973876953125, "t": 336.4569396972656, "r": 541.237, "b": 383.3992919921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9816816449165344, "cells": [{"id": 62, "text": "Important:", "bbox": {"l": 142.8, "t": 337.60873, "r": 192.41673, "b": 346.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": " This potential runtime error places a heavy emphasis on a comprehensive ", "bbox": {"l": 192.41974, "t": 337.60873, "r": 524.8606, "b": 346.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "testing plan to ensure that all programs are tested. If testing uncovers an unsupported ", "bbox": {"l": 142.80002, "t": 349.60855, "r": 524.34381, "b": 358.82153, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "interface, then you must investigate whether the application can be rewritten to use a data ", "bbox": {"l": 142.80002, "t": 361.60837, "r": 541.237, "b": 370.82134999999994, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "access interface that is supported by RCAC.", "bbox": {"l": 142.80002, "t": 373.60818000000006, "r": 338.13461, "b": 382.82117000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Important: This potential runtime error places a heavy emphasis on a comprehensive testing plan to ensure that all programs are tested. If testing uncovers an unsupported interface, then you must investigate whether the application can be rewritten to use a data access interface that is supported by RCAC."}], "body": [{"label": "section_header", "id": 2, "page_no": 95, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.43855285644531, "t": 73.36776733398438, "r": 275.70184, "b": 89.5892105102539, "coord_origin": "TOPLEFT"}, "confidence": 0.9696915745735168, "cells": [{"id": 2, "text": "5.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.539185, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Unsupported interfaces", "bbox": {"l": 92.087021, "t": 74.34069999999997, "r": 275.70184, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, "text": "5.1 Unsupported interfaces"}, {"label": "text", "id": 3, "page_no": 95, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.1591339111328, "t": 105.93167114257812, "r": 519.797, "b": 128.38632202148438, "coord_origin": "TOPLEFT"}, "confidence": 0.9809359312057495, "cells": [{"id": 4, "text": "It is not possible to create a row permission or column mask on a distributed table or a ", "bbox": {"l": 136.8, "t": 106.6087, "r": 519.797, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "program-described file.", "bbox": {"l": 136.8, "t": 118.60852, "r": 238.85611, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}]}, "text": "It is not possible to create a row permission or column mask on a distributed table or a program-described file."}, {"label": "text", "id": 4, "page_no": 95, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.89776611328125, "t": 140.08090209960938, "r": 547.21381, "b": 174.56727600097656, "coord_origin": "TOPLEFT"}, "confidence": 0.9822454452514648, "cells": [{"id": 6, "text": "After a row permission or column mask is added to a table, there are some data access ", "bbox": {"l": 136.8, "t": 140.62811, "r": 525.55267, "b": 149.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "requests that no longer work. An attempt to open or query a table with activated RCAC ", "bbox": {"l": 136.8, "t": 152.62793, "r": 521.97815, "b": 161.84094000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "controls involving any of the following scenarios is rejected with the CPD43A4 error message:", "bbox": {"l": 136.8, "t": 164.62775, "r": 547.21381, "b": 173.84076000000005, "coord_origin": "TOPLEFT"}}]}, "text": "After a row permission or column mask is added to a table, there are some data access requests that no longer work. An attempt to open or query a table with activated RCAC controls involving any of the following scenarios is rejected with the CPD43A4 error message:"}, {"label": "list_item", "id": 5, "page_no": 95, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.5338592529297, "t": 180.65792846679688, "r": 526.03485, "b": 191.1039581298828, "coord_origin": "TOPLEFT"}, "confidence": 0.9507953524589539, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 181.75696000000005, "r": 141.78001, "b": 190.53174, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "A logical file with multiple formats if the open attempt requests more than one format.", "bbox": {"l": 151.20018, "t": 181.60753999999997, "r": 526.03485, "b": 190.82056, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH A logical file with multiple formats if the open attempt requests more than one format."}, {"label": "list_item", "id": 6, "page_no": 95, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.57638549804688, "t": 192.57815551757812, "r": 410.49484, "b": 203.17335510253906, "coord_origin": "TOPLEFT"}, "confidence": 0.9401845932006836, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 193.75676999999996, "r": 141.78001, "b": 202.53156, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "A table or query that specifies an ICU 2.6.1 sort sequence.", "bbox": {"l": 151.20018, "t": 193.60735999999997, "r": 410.49484, "b": 202.82037000000003, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH A table or query that specifies an ICU 2.6.1 sort sequence."}, {"label": "list_item", "id": 7, "page_no": 95, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.51390075683594, "t": 205.0358123779297, "r": 264.33585, "b": 215.18972778320312, "coord_origin": "TOPLEFT"}, "confidence": 0.9484872221946716, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 205.75658999999996, "r": 141.78001, "b": 214.53137000000004, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "A table with read triggers.", "bbox": {"l": 151.20018, "t": 205.60717999999997, "r": 264.33585, "b": 214.82019000000003, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH A table with read triggers."}, {"label": "text", "id": 8, "page_no": 95, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.78880310058594, "t": 226.60470581054688, "r": 537.02081, "b": 248.83960000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9780105948448181, "cells": [{"id": 15, "text": "This unsupported interface error occurs when a table with RCAC controls is accessed, not ", "bbox": {"l": 136.80002, "t": 227.62676999999996, "r": 537.02081, "b": 236.83978000000002, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "when the RCAC control is created and activated.", "bbox": {"l": 136.80002, "t": 239.62658999999996, "r": 351.88031, "b": 248.83960000000002, "coord_origin": "TOPLEFT"}}]}, "text": "This unsupported interface error occurs when a table with RCAC controls is accessed, not when the RCAC control is created and activated."}, {"label": "text", "id": 9, "page_no": 95, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.04721069335938, "t": 260.5085144042969, "r": 547.27563, "b": 318.8584599999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9873144030570984, "cells": [{"id": 17, "text": "For example, assume that there is a physical file, PF1, which is referenced by a single format ", "bbox": {"l": 136.80002, "t": 261.64617999999996, "r": 547.27563, "b": 270.85919, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "logical file (LFS) and a multi-format logical file (LFM). A row permission is successfully ", "bbox": {"l": 136.80002, "t": 273.64599999999996, "r": 519.41534, "b": 282.85900999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "created and activated for PF1. Any application that accesses PF1 directly or LFS continues to ", "bbox": {"l": 136.79901, "t": 285.6458400000001, "r": 547.23773, "b": 294.85883000000007, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "work without any issues. However, any application that opens LFM with multiple formats ", "bbox": {"l": 136.79901, "t": 297.64566, "r": 526.68823, "b": 306.85864, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "receives an error on the open attempt after the row permission is activated for PF1.", "bbox": {"l": 136.79901, "t": 309.64548, "r": 503.38181, "b": 318.8584599999999, "coord_origin": "TOPLEFT"}}]}, "text": "For example, assume that there is a physical file, PF1, which is referenced by a single format logical file (LFS) and a multi-format logical file (LFM). A row permission is successfully created and activated for PF1. Any application that accesses PF1 directly or LFS continues to work without any issues. However, any application that opens LFM with multiple formats receives an error on the open attempt after the row permission is activated for PF1."}, {"label": "section_header", "id": 10, "page_no": 95, "cluster": {"id": 10, "label": "section_header", "bbox": {"l": 64.47200012207031, "t": 415.3008117675781, "r": 329.61151, "b": 431.6415710449219, "coord_origin": "TOPLEFT"}, "confidence": 0.9681466221809387, "cells": [{"id": 22, "text": "5.2", "bbox": {"l": 64.800003, "t": 416.34069999999997, "r": 87.404282, "b": 431.1037, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Native query result differences", "bbox": {"l": 91.925117, "t": 416.34069999999997, "r": 329.61151, "b": 431.1037, "coord_origin": "TOPLEFT"}}]}, "text": "5.2 Native query result differences"}, {"label": "text", "id": 11, "page_no": 95, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.66397094726562, "t": 447.6929626464844, "r": 542.39417, "b": 494.5770263671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9864740371704102, "cells": [{"id": 24, "text": "The SQL Query Engine (SQE) is the only engine that is enhanced by IBM to enforce RCAC ", "bbox": {"l": 136.8, "t": 448.60873, "r": 542.39417, "b": 457.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "controls on query requests. In order for native query requests to work with RCAC, these ", "bbox": {"l": 136.8, "t": 460.60855, "r": 526.14728, "b": 469.82153, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "native query requests are now processed by SQE instead of the Classic Query Engine ", "bbox": {"l": 136.8, "t": 472.60837, "r": 521.31879, "b": 481.82135, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "(CQE). Native query requests can consist of the following items:", "bbox": {"l": 136.8, "t": 484.60818, "r": 419.14819, "b": 493.82117, "coord_origin": "TOPLEFT"}}]}, "text": "The SQL Query Engine (SQE) is the only engine that is enhanced by IBM to enforce RCAC controls on query requests. In order for native query requests to work with RCAC, these native query requests are now processed by SQE instead of the Classic Query Engine (CQE). Native query requests can consist of the following items:"}, {"label": "list_item", "id": 12, "page_no": 95, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 135.92169189453125, "t": 500.54949951171875, "r": 198.29859924316406, "b": 510.86075, "coord_origin": "TOPLEFT"}, "confidence": 0.9383296370506287, "cells": [{"id": 28, "text": "GLYPH", "bbox": {"l": 136.8, "t": 501.79715, "r": 141.78, "b": 510.57193, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Query/400", "bbox": {"l": 151.20016, "t": 501.64777, "r": 198.17549, "b": 510.86075, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Query/400"}, {"label": "list_item", "id": 13, "page_no": 95, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 135.69873046875, "t": 512.3756713867188, "r": 214.61249, "b": 522.86057, "coord_origin": "TOPLEFT"}, "confidence": 0.9262765645980835, "cells": [{"id": 30, "text": "GLYPH", "bbox": {"l": 136.8, "t": 513.79697, "r": 141.78, "b": 522.5717500000001, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "QQQQRY API", "bbox": {"l": 151.20016, "t": 513.6475800000001, "r": 214.61249, "b": 522.86057, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH QQQQRY API"}, {"label": "list_item", "id": 14, "page_no": 95, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 135.62481689453125, "t": 524.65283203125, "r": 315.8399, "b": 534.8603800000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9469870328903198, "cells": [{"id": 32, "text": "GLYPH", "bbox": {"l": 136.8, "t": 525.79678, "r": 141.78, "b": 534.57156, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Open Query File (", "bbox": {"l": 151.20016, "t": 525.6474000000001, "r": 230.89011, "b": 534.8603800000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "OPNQRYF", "bbox": {"l": 230.93991000000003, "t": 525.79678, "r": 265.85968, "b": 534.6213700000001, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": ") command", "bbox": {"l": 265.92041, "t": 525.6474000000001, "r": 315.8399, "b": 534.8603800000001, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Open Query File ( OPNQRYF ) command"}, {"label": "list_item", "id": 15, "page_no": 95, "cluster": {"id": 15, "label": "list_item", "bbox": {"l": 135.5345458984375, "t": 536.3973388671875, "r": 285.93896484375, "b": 546.8602, "coord_origin": "TOPLEFT"}, "confidence": 0.934996485710144, "cells": [{"id": 36, "text": "GLYPH", "bbox": {"l": 136.79997, "t": 537.7966, "r": 141.77997, "b": 546.5713499999999, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Run Query (", "bbox": {"l": 151.20013, "t": 537.6472, "r": 205.94926, "b": 546.8602, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "RUNQRY", "bbox": {"l": 205.92038, "t": 537.7966, "r": 235.91989, "b": 546.62115, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": ") command", "bbox": {"l": 235.91991, "t": 537.6472, "r": 285.85736, "b": 546.8602, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Run Query ( RUNQRY ) command"}, {"label": "list_item", "id": 16, "page_no": 95, "cluster": {"id": 16, "label": "list_item", "bbox": {"l": 135.56021118164062, "t": 548.5358276367188, "r": 441.7839660644531, "b": 558.86, "coord_origin": "TOPLEFT"}, "confidence": 0.9559246897697449, "cells": [{"id": 40, "text": "GLYPH", "bbox": {"l": 136.79997, "t": 549.7964, "r": 141.77997, "b": 558.57115, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Native open (RPG, COBOL, OPNDBF, and so on) of an SQL view", "bbox": {"l": 151.20013, "t": 549.6469999999999, "r": 441.4704, "b": 558.86, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Native open (RPG, COBOL, OPNDBF, and so on) of an SQL view"}, {"label": "text", "id": 17, "page_no": 95, "cluster": {"id": 17, "label": "text", "bbox": {"l": 135.97003173828125, "t": 570.7841796875, "r": 541.63519, "b": 617.0958251953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9824656248092651, "cells": [{"id": 42, "text": "Legacy queries that have been running without any issues for many years and over many", "bbox": {"l": 136.79997, "t": 571.66656, "r": 530.37244, "b": 580.87956, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "IBM i releases are now processed by a different query engine. As a result, the runtime ", "bbox": {"l": 136.79997, "t": 583.66637, "r": 519.22693, "b": 592.87936, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "behavior and results that are returned can be different for native query requests with RCAC ", "bbox": {"l": 136.79997, "t": 595.66617, "r": 541.63519, "b": 604.8791699999999, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "enabled. The ", "bbox": {"l": 136.79997, "t": 607.66597, "r": 197.70737, "b": 616.87897, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "OPNQRYF", "bbox": {"l": 197.70039, "t": 607.81537, "r": 232.67992000000004, "b": 616.6399200000001, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": " command and Query/400 run with SQE by default.", "bbox": {"l": 232.68091, "t": 607.66597, "r": 458.73212, "b": 616.87897, "coord_origin": "TOPLEFT"}}]}, "text": "Legacy queries that have been running without any issues for many years and over many IBM i releases are now processed by a different query engine. As a result, the runtime behavior and results that are returned can be different for native query requests with RCAC enabled. The OPNQRYF command and Query/400 run with SQE by default."}, {"label": "text", "id": 18, "page_no": 95, "cluster": {"id": 18, "label": "text", "bbox": {"l": 135.73948669433594, "t": 628.62744140625, "r": 547.28345, "b": 651.3435668945312, "coord_origin": "TOPLEFT"}, "confidence": 0.975006639957428, "cells": [{"id": 48, "text": "The following list documents some of the query output differences that can occur when native ", "bbox": {"l": 136.80096, "t": 629.62578, "r": 547.28345, "b": 638.83878, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "query requests are processed by CQE:", "bbox": {"l": 136.80096, "t": 641.62558, "r": 309.73151, "b": 650.83858, "coord_origin": "TOPLEFT"}}]}, "text": "The following list documents some of the query output differences that can occur when native query requests are processed by CQE:"}, {"label": "list_item", "id": 19, "page_no": 95, "cluster": {"id": 19, "label": "list_item", "bbox": {"l": 135.9209747314453, "t": 658.1214599609375, "r": 299.18975830078125, "b": 668.4609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9473878741264343, "cells": [{"id": 50, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 658.81454, "r": 141.78096, "b": 667.5893, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Different ordering in the result set", "bbox": {"l": 151.20113, "t": 658.66515, "r": 298.89197, "b": 667.87814, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Different ordering in the result set"}, {"label": "list_item", "id": 20, "page_no": 95, "cluster": {"id": 20, "label": "list_item", "bbox": {"l": 135.68008422851562, "t": 670.212890625, "r": 393.49902, "b": 680.426513671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9464444518089294, "cells": [{"id": 52, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 670.81435, "r": 141.78096, "b": 679.58911, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "Different values for null columns or columns with errors", "bbox": {"l": 151.20113, "t": 670.66495, "r": 393.49902, "b": 679.87795, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Different values for null columns or columns with errors"}, {"label": "list_item", "id": 21, "page_no": 95, "cluster": {"id": 21, "label": "list_item", "bbox": {"l": 135.76820373535156, "t": 681.9945068359375, "r": 358.48862, "b": 692.8447265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9444779753684998, "cells": [{"id": 54, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 682.81416, "r": 141.78096, "b": 691.58892, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Suppression of some mapping error messages", "bbox": {"l": 151.20113, "t": 682.66476, "r": 358.48862, "b": 691.87776, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Suppression of some mapping error messages"}, {"label": "list_item", "id": 22, "page_no": 95, "cluster": {"id": 22, "label": "list_item", "bbox": {"l": 135.62449645996094, "t": 693.85107421875, "r": 310.7019348144531, "b": 704.2999267578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9346434473991394, "cells": [{"id": 56, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 694.813972, "r": 141.78096, "b": 703.5887299999999, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "Loss of RRN positioning capabilities", "bbox": {"l": 151.20113, "t": 694.664566, "r": 310.57407, "b": 703.877571, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Loss of RRN positioning capabilities"}, {"label": "list_item", "id": 23, "page_no": 95, "cluster": {"id": 23, "label": "list_item", "bbox": {"l": 135.7325439453125, "t": 705.99072265625, "r": 354.20792, "b": 716.4747924804688, "coord_origin": "TOPLEFT"}, "confidence": 0.9466715455055237, "cells": [{"id": 58, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 706.813782, "r": 141.78096, "b": 715.588539, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "Duplicate key processing behavior differences", "bbox": {"l": 151.20113, "t": 706.6643750000001, "r": 354.20792, "b": 715.87738, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Duplicate key processing behavior differences"}, {"label": "list_item", "id": 24, "page_no": 95, "cluster": {"id": 24, "label": "list_item", "bbox": {"l": 135.72433471679688, "t": 718.1799926757812, "r": 246.4168701171875, "b": 728.3264770507812, "coord_origin": "TOPLEFT"}, "confidence": 0.9458449482917786, "cells": [{"id": 60, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 718.813591, "r": 141.78096, "b": 727.588348, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Missing key feedback", "bbox": {"l": 151.20113, "t": 718.664185, "r": 245.8849, "b": 727.87719, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Missing key feedback"}, {"label": "text", "id": 25, "page_no": 95, "cluster": {"id": 25, "label": "text", "bbox": {"l": 141.973876953125, "t": 336.4569396972656, "r": 541.237, "b": 383.3992919921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9816816449165344, "cells": [{"id": 62, "text": "Important:", "bbox": {"l": 142.8, "t": 337.60873, "r": 192.41673, "b": 346.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": " This potential runtime error places a heavy emphasis on a comprehensive ", "bbox": {"l": 192.41974, "t": 337.60873, "r": 524.8606, "b": 346.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "testing plan to ensure that all programs are tested. If testing uncovers an unsupported ", "bbox": {"l": 142.80002, "t": 349.60855, "r": 524.34381, "b": 358.82153, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "interface, then you must investigate whether the application can be rewritten to use a data ", "bbox": {"l": 142.80002, "t": 361.60837, "r": 541.237, "b": 370.82134999999994, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "access interface that is supported by RCAC.", "bbox": {"l": 142.80002, "t": 373.60818000000006, "r": 338.13461, "b": 382.82117000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Important: This potential runtime error places a heavy emphasis on a comprehensive testing plan to ensure that all programs are tested. If testing uncovers an unsupported interface, then you must investigate whether the application can be rewritten to use a data access interface that is supported by RCAC."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 95, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.1874008178711, "t": 754.3892211914062, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9252743721008301, "cells": [{"id": 0, "text": "80 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "80"}, {"label": "page_footer", "id": 1, "page_no": 95, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.2634048461914, "t": 754.6898193359375, "r": 334.42142, "b": 763.9056396484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9558761715888977, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 96, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 5. RCAC and non-SQL interfaces ", "bbox": {"l": 354.29999, "t": 755.538002, "r": 523.63324, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "81", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "For a list of the differences and additional details, see the ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 391.62125, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "IBM i Memo to Users Version 7.2", "bbox": {"l": 391.6192, "t": 71.50903000000005, "r": 537.52203, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": ", ", "bbox": {"l": 537.4187, "t": 71.50903000000005, "r": 543.05804, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "found at:", "bbox": {"l": 136.79861, "t": 83.50885000000017, "r": 175.42749, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgmtu.htm", "bbox": {"l": 136.79861, "t": 100.63806, "r": 521.5733, "b": 109.41283999999996, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "In addition, the performance of a native query with SQE can be different. It is possible that a ", "bbox": {"l": 136.79861, "t": 122.50824, "r": 544.66058, "b": 131.72125000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "new index or keyed logical file might need to be created to improve the performance.", "bbox": {"l": 136.79861, "t": 134.50806, "r": 508.98987000000005, "b": 143.72107000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "5.3", "bbox": {"l": 64.800003, "t": 229.20068000000003, "r": 107.0743, "b": 243.96367999999995, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Accidental updates with masked values", "bbox": {"l": 110.99170000000001, "t": 229.20068000000003, "r": 396.82227, "b": 243.96367999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "The masked values that are returned by a column mask can potentially cause the original ", "bbox": {"l": 136.8, "t": 261.52855999999997, "r": 533.76666, "b": 270.74158, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "data value to be accidentally overwritten, especially with applications using native record-level ", "bbox": {"l": 136.8, "t": 273.52837999999997, "r": 547.18481, "b": 282.74139, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "access.", "bbox": {"l": 136.79999, "t": 285.52823, "r": 170.50961, "b": 294.74120999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "For example, consider a table containing three columns of first name, last name, and tax ID ", "bbox": {"l": 136.79999, "t": 307.48804, "r": 541.6969, "b": 316.7010200000001, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "that is read by an RPG program. The user running the program is not authorized to see the ", "bbox": {"l": 136.79999, "t": 319.48785, "r": 540.84137, "b": 328.70084, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "tax ID value, so a masked value (*****3333) is written into the program\u2019s record buffer, as ", "bbox": {"l": 136.79999, "t": 331.48767, "r": 530.73004, "b": 340.70064999999994, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "shown Figure 5-1.", "bbox": {"l": 136.8, "t": 343.48749, "r": 216.65632999999997, "b": 352.70047000000005, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "In this example, the application reads the data for an update to correct the misspelling of the ", "bbox": {"l": 136.8, "t": 365.50705, "r": 545.41302, "b": 374.72003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "last name. The last name value is changed to Smith in the buffer. Now, a WRITE request is ", "bbox": {"l": 136.79999, "t": 377.50687, "r": 540.198, "b": 386.71985, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "issued by the program, which uses the contents of the record buffer to update the row in the ", "bbox": {"l": 136.79999, "t": 389.50668, "r": 544.25977, "b": 398.71967, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "underlying DB2 table. Unfortunately, the record buffer still contains a masked value for the tax ", "bbox": {"l": 136.79999, "t": 401.50649999999996, "r": 547.14398, "b": 410.71948, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "ID, so the tax ID value in the table is accidentally set to the masked value.", "bbox": {"l": 136.79997, "t": 413.5063200000001, "r": 461.0538, "b": 422.7193, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Figure 5-1 Accidental update with masked values scenario", "bbox": {"l": 136.8, "t": 723.137901, "r": 373.81857, "b": 731.462898, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Important:", "bbox": {"l": 142.8, "t": 162.52868999999998, "r": 192.41673, "b": 171.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": " Based on the potential impacts of query result set and performance ", "bbox": {"l": 192.41974, "t": 162.52868999999998, "r": 495.4548, "b": 171.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "differences, you should perform extensive functional testing and performance ", "bbox": {"l": 142.80002, "t": 174.5285, "r": 485.46099999999996, "b": 183.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "benchmarking of applications and reports that use native query interfaces. ", "bbox": {"l": 142.80002, "t": 186.52832, "r": 473.03167999999994, "b": 195.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "\u2026", "bbox": {"l": 233.05431000000002, "t": 474.24478, "r": 239.71214, "b": 484.23154, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "HLL Program using Native Record-Level Access", "bbox": {"l": 191.36845, "t": 446.30069, "r": 445.35726999999997, "b": 456.56488, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "READ", "bbox": {"l": 233.05431000000002, "t": 487.56049, "r": 259.57025, "b": 497.54724, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Record Buffer-> ", "bbox": {"l": 238.12204000000003, "t": 501.52307, "r": 313.72403, "b": 511.01047, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Joe Smyth *****3333", "bbox": {"l": 313.72516, "t": 501.52307, "r": 413.24988, "b": 511.02158, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "\u2026", "bbox": {"l": 233.05431000000002, "t": 527.65549, "r": 239.71214, "b": 537.64223, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "/* Application logic corrects last name to Smith */", "bbox": {"l": 233.05431000000002, "t": 541.43492, "r": 444.82404, "b": 550.24414, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "WRITE", "bbox": {"l": 233.05431000000002, "t": 565.97496, "r": 266.1937, "b": 575.96172, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "df", "bbox": {"l": 266.1586, "t": 579.93794, "r": 304.32135, "b": 589.4253699999999, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "f", "bbox": {"l": 289.75067, "t": 579.93794, "r": 307.61145, "b": 589.4253699999999, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "ih", "bbox": {"l": 345.7197, "t": 579.93794, "r": 362.1246, "b": 589.43646, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "*****", "bbox": {"l": 360.73679, "t": 579.93794, "r": 388.33353, "b": 589.43646, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "TaxID value changed", "bbox": {"l": 300.70541, "t": 624.36053, "r": 394.25247, "b": 633.85905, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Record Buffer-> ", "bbox": {"l": 240.6368, "t": 579.93794, "r": 313.68628, "b": 589.4253699999999, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Joe Smith ", "bbox": {"l": 313.72513, "t": 579.93794, "r": 360.76648, "b": 589.43646, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "*****3333", "bbox": {"l": 360.73679, "t": 579.93794, "r": 410.82452, "b": 589.43646, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Joe Smyth 111223333", "bbox": {"l": 149.09151, "t": 656.44766, "r": 258.49426, "b": 666.34564, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "TaxID value changed ", "bbox": {"l": 300.70541, "t": 624.36053, "r": 396.71878, "b": 633.85905, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "from 11122333 to *****3333", "bbox": {"l": 305.77271, "t": 637.67621, "r": 440.5318, "b": 647.17473, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 353.64373779296875, "t": 754.87646484375, "r": 523.63324, "b": 764.1002197265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9528434872627258, "cells": [{"id": 0, "text": "Chapter 5. RCAC and non-SQL interfaces ", "bbox": {"l": 354.29999, "t": 755.538002, "r": 523.63324, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.66748046875, "t": 754.2764282226562, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9146247506141663, "cells": [{"id": 1, "text": "81", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 136.42791748046875, "t": 70.61494445800781, "r": 543.05804, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9628674387931824, "cells": [{"id": 2, "text": "For a list of the differences and additional details, see the ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 391.62125, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "IBM i Memo to Users Version 7.2", "bbox": {"l": 391.6192, "t": 71.50903000000005, "r": 537.52203, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": ", ", "bbox": {"l": 537.4187, "t": 71.50903000000005, "r": 543.05804, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "found at:", "bbox": {"l": 136.79861, "t": 83.50885000000017, "r": 175.42749, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 136.22903442382812, "t": 99.42984008789062, "r": 521.8867797851562, "b": 109.78103637695312, "coord_origin": "TOPLEFT"}, "confidence": 0.8841223120689392, "cells": [{"id": 6, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgmtu.htm", "bbox": {"l": 136.79861, "t": 100.63806, "r": 521.5733, "b": 109.41283999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 136.18670654296875, "t": 121.53282165527344, "r": 544.66058, "b": 143.72107000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9777080416679382, "cells": [{"id": 7, "text": "In addition, the performance of a native query with SQE can be different. It is possible that a ", "bbox": {"l": 136.79861, "t": 122.50824, "r": 544.66058, "b": 131.72125000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "new index or keyed logical file might need to be created to improve the performance.", "bbox": {"l": 136.79861, "t": 134.50806, "r": 508.98987000000005, "b": 143.72107000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "section_header", "bbox": {"l": 64.66980743408203, "t": 228.1348419189453, "r": 396.82227, "b": 244.21737670898438, "coord_origin": "TOPLEFT"}, "confidence": 0.967221200466156, "cells": [{"id": 9, "text": "5.3", "bbox": {"l": 64.800003, "t": 229.20068000000003, "r": 107.0743, "b": 243.96367999999995, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Accidental updates with masked values", "bbox": {"l": 110.99170000000001, "t": 229.20068000000003, "r": 396.82227, "b": 243.96367999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 135.81739807128906, "t": 260.6902770996094, "r": 547.18481, "b": 294.74120999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9834569096565247, "cells": [{"id": 11, "text": "The masked values that are returned by a column mask can potentially cause the original ", "bbox": {"l": 136.8, "t": 261.52855999999997, "r": 533.76666, "b": 270.74158, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "data value to be accidentally overwritten, especially with applications using native record-level ", "bbox": {"l": 136.8, "t": 273.52837999999997, "r": 547.18481, "b": 282.74139, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "access.", "bbox": {"l": 136.79999, "t": 285.52823, "r": 170.50961, "b": 294.74120999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 135.87274169921875, "t": 306.6039123535156, "r": 541.6969, "b": 352.80584716796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9875996112823486, "cells": [{"id": 14, "text": "For example, consider a table containing three columns of first name, last name, and tax ID ", "bbox": {"l": 136.79999, "t": 307.48804, "r": 541.6969, "b": 316.7010200000001, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "that is read by an RPG program. The user running the program is not authorized to see the ", "bbox": {"l": 136.79999, "t": 319.48785, "r": 540.84137, "b": 328.70084, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "tax ID value, so a masked value (*****3333) is written into the program\u2019s record buffer, as ", "bbox": {"l": 136.79999, "t": 331.48767, "r": 530.73004, "b": 340.70064999999994, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "shown Figure 5-1.", "bbox": {"l": 136.8, "t": 343.48749, "r": 216.65632999999997, "b": 352.70047000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 136.08998107910156, "t": 364.7171325683594, "r": 547.14398, "b": 422.7193, "coord_origin": "TOPLEFT"}, "confidence": 0.9872422218322754, "cells": [{"id": 18, "text": "In this example, the application reads the data for an update to correct the misspelling of the ", "bbox": {"l": 136.8, "t": 365.50705, "r": 545.41302, "b": 374.72003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "last name. The last name value is changed to Smith in the buffer. Now, a WRITE request is ", "bbox": {"l": 136.79999, "t": 377.50687, "r": 540.198, "b": 386.71985, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "issued by the program, which uses the contents of the record buffer to update the row in the ", "bbox": {"l": 136.79999, "t": 389.50668, "r": 544.25977, "b": 398.71967, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "underlying DB2 table. Unfortunately, the record buffer still contains a masked value for the tax ", "bbox": {"l": 136.79999, "t": 401.50649999999996, "r": 547.14398, "b": 410.71948, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "ID, so the tax ID value in the table is accidentally set to the masked value.", "bbox": {"l": 136.79997, "t": 413.5063200000001, "r": 461.0538, "b": 422.7193, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "caption", "bbox": {"l": 136.07180786132812, "t": 722.1818237304688, "r": 374.3499755859375, "b": 731.462898, "coord_origin": "TOPLEFT"}, "confidence": 0.9452338218688965, "cells": [{"id": 23, "text": "Figure 5-1 Accidental update with masked values scenario", "bbox": {"l": 136.8, "t": 723.137901, "r": 373.81857, "b": 731.462898, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 141.93385314941406, "t": 161.8843994140625, "r": 495.4548, "b": 196.31082153320312, "coord_origin": "TOPLEFT"}, "confidence": 0.9745184183120728, "cells": [{"id": 24, "text": "Important:", "bbox": {"l": 142.8, "t": 162.52868999999998, "r": 192.41673, "b": 171.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": " Based on the potential impacts of query result set and performance ", "bbox": {"l": 192.41974, "t": 162.52868999999998, "r": 495.4548, "b": 171.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "differences, you should perform extensive functional testing and performance ", "bbox": {"l": 142.80002, "t": 174.5285, "r": 485.46099999999996, "b": 183.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "benchmarking of applications and reports that use native query interfaces. ", "bbox": {"l": 142.80002, "t": 186.52832, "r": 473.03167999999994, "b": 195.74132999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "picture", "bbox": {"l": 135.8197021484375, "t": 437.9704895019531, "r": 527.1633911132812, "b": 719.9022827148438, "coord_origin": "TOPLEFT"}, "confidence": 0.980728805065155, "cells": [{"id": 28, "text": "\u2026", "bbox": {"l": 233.05431000000002, "t": 474.24478, "r": 239.71214, "b": 484.23154, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "HLL Program using Native Record-Level Access", "bbox": {"l": 191.36845, "t": 446.30069, "r": 445.35726999999997, "b": 456.56488, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "READ", "bbox": {"l": 233.05431000000002, "t": 487.56049, "r": 259.57025, "b": 497.54724, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Record Buffer-> ", "bbox": {"l": 238.12204000000003, "t": 501.52307, "r": 313.72403, "b": 511.01047, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Joe Smyth *****3333", "bbox": {"l": 313.72516, "t": 501.52307, "r": 413.24988, "b": 511.02158, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "\u2026", "bbox": {"l": 233.05431000000002, "t": 527.65549, "r": 239.71214, "b": 537.64223, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "/* Application logic corrects last name to Smith */", "bbox": {"l": 233.05431000000002, "t": 541.43492, "r": 444.82404, "b": 550.24414, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "WRITE", "bbox": {"l": 233.05431000000002, "t": 565.97496, "r": 266.1937, "b": 575.96172, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "df", "bbox": {"l": 266.1586, "t": 579.93794, "r": 304.32135, "b": 589.4253699999999, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "f", "bbox": {"l": 289.75067, "t": 579.93794, "r": 307.61145, "b": 589.4253699999999, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "ih", "bbox": {"l": 345.7197, "t": 579.93794, "r": 362.1246, "b": 589.43646, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "*****", "bbox": {"l": 360.73679, "t": 579.93794, "r": 388.33353, "b": 589.43646, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "TaxID value changed", "bbox": {"l": 300.70541, "t": 624.36053, "r": 394.25247, "b": 633.85905, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Record Buffer-> ", "bbox": {"l": 240.6368, "t": 579.93794, "r": 313.68628, "b": 589.4253699999999, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Joe Smith ", "bbox": {"l": 313.72513, "t": 579.93794, "r": 360.76648, "b": 589.43646, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "*****3333", "bbox": {"l": 360.73679, "t": 579.93794, "r": 410.82452, "b": 589.43646, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Joe Smyth 111223333", "bbox": {"l": 149.09151, "t": 656.44766, "r": 258.49426, "b": 666.34564, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "TaxID value changed ", "bbox": {"l": 300.70541, "t": 624.36053, "r": 396.71878, "b": 633.85905, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "from 11122333 to *****3333", "bbox": {"l": 305.77271, "t": 637.67621, "r": 440.5318, "b": 647.17473, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 96, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 353.64373779296875, "t": 754.87646484375, "r": 523.63324, "b": 764.1002197265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9528434872627258, "cells": [{"id": 0, "text": "Chapter 5. RCAC and non-SQL interfaces ", "bbox": {"l": 354.29999, "t": 755.538002, "r": 523.63324, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 5. RCAC and non-SQL interfaces"}, {"label": "page_footer", "id": 1, "page_no": 96, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.66748046875, "t": 754.2764282226562, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9146247506141663, "cells": [{"id": 1, "text": "81", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "81"}, {"label": "text", "id": 2, "page_no": 96, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.42791748046875, "t": 70.61494445800781, "r": 543.05804, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9628674387931824, "cells": [{"id": 2, "text": "For a list of the differences and additional details, see the ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 391.62125, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "IBM i Memo to Users Version 7.2", "bbox": {"l": 391.6192, "t": 71.50903000000005, "r": 537.52203, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": ", ", "bbox": {"l": 537.4187, "t": 71.50903000000005, "r": 543.05804, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "found at:", "bbox": {"l": 136.79861, "t": 83.50885000000017, "r": 175.42749, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "For a list of the differences and additional details, see the IBM i Memo to Users Version 7.2 , found at:"}, {"label": "text", "id": 3, "page_no": 96, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.22903442382812, "t": 99.42984008789062, "r": 521.8867797851562, "b": 109.78103637695312, "coord_origin": "TOPLEFT"}, "confidence": 0.8841223120689392, "cells": [{"id": 6, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgmtu.htm", "bbox": {"l": 136.79861, "t": 100.63806, "r": 521.5733, "b": 109.41283999999996, "coord_origin": "TOPLEFT"}}]}, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgmtu.htm"}, {"label": "text", "id": 4, "page_no": 96, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.18670654296875, "t": 121.53282165527344, "r": 544.66058, "b": 143.72107000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9777080416679382, "cells": [{"id": 7, "text": "In addition, the performance of a native query with SQE can be different. It is possible that a ", "bbox": {"l": 136.79861, "t": 122.50824, "r": 544.66058, "b": 131.72125000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "new index or keyed logical file might need to be created to improve the performance.", "bbox": {"l": 136.79861, "t": 134.50806, "r": 508.98987000000005, "b": 143.72107000000005, "coord_origin": "TOPLEFT"}}]}, "text": "In addition, the performance of a native query with SQE can be different. It is possible that a new index or keyed logical file might need to be created to improve the performance."}, {"label": "section_header", "id": 5, "page_no": 96, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 64.66980743408203, "t": 228.1348419189453, "r": 396.82227, "b": 244.21737670898438, "coord_origin": "TOPLEFT"}, "confidence": 0.967221200466156, "cells": [{"id": 9, "text": "5.3", "bbox": {"l": 64.800003, "t": 229.20068000000003, "r": 107.0743, "b": 243.96367999999995, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Accidental updates with masked values", "bbox": {"l": 110.99170000000001, "t": 229.20068000000003, "r": 396.82227, "b": 243.96367999999995, "coord_origin": "TOPLEFT"}}]}, "text": "5.3 Accidental updates with masked values"}, {"label": "text", "id": 6, "page_no": 96, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.81739807128906, "t": 260.6902770996094, "r": 547.18481, "b": 294.74120999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9834569096565247, "cells": [{"id": 11, "text": "The masked values that are returned by a column mask can potentially cause the original ", "bbox": {"l": 136.8, "t": 261.52855999999997, "r": 533.76666, "b": 270.74158, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "data value to be accidentally overwritten, especially with applications using native record-level ", "bbox": {"l": 136.8, "t": 273.52837999999997, "r": 547.18481, "b": 282.74139, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "access.", "bbox": {"l": 136.79999, "t": 285.52823, "r": 170.50961, "b": 294.74120999999997, "coord_origin": "TOPLEFT"}}]}, "text": "The masked values that are returned by a column mask can potentially cause the original data value to be accidentally overwritten, especially with applications using native record-level access."}, {"label": "text", "id": 7, "page_no": 96, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.87274169921875, "t": 306.6039123535156, "r": 541.6969, "b": 352.80584716796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9875996112823486, "cells": [{"id": 14, "text": "For example, consider a table containing three columns of first name, last name, and tax ID ", "bbox": {"l": 136.79999, "t": 307.48804, "r": 541.6969, "b": 316.7010200000001, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "that is read by an RPG program. The user running the program is not authorized to see the ", "bbox": {"l": 136.79999, "t": 319.48785, "r": 540.84137, "b": 328.70084, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "tax ID value, so a masked value (*****3333) is written into the program\u2019s record buffer, as ", "bbox": {"l": 136.79999, "t": 331.48767, "r": 530.73004, "b": 340.70064999999994, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "shown Figure 5-1.", "bbox": {"l": 136.8, "t": 343.48749, "r": 216.65632999999997, "b": 352.70047000000005, "coord_origin": "TOPLEFT"}}]}, "text": "For example, consider a table containing three columns of first name, last name, and tax ID that is read by an RPG program. The user running the program is not authorized to see the tax ID value, so a masked value (*****3333) is written into the program\u2019s record buffer, as shown Figure 5-1."}, {"label": "text", "id": 8, "page_no": 96, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.08998107910156, "t": 364.7171325683594, "r": 547.14398, "b": 422.7193, "coord_origin": "TOPLEFT"}, "confidence": 0.9872422218322754, "cells": [{"id": 18, "text": "In this example, the application reads the data for an update to correct the misspelling of the ", "bbox": {"l": 136.8, "t": 365.50705, "r": 545.41302, "b": 374.72003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "last name. The last name value is changed to Smith in the buffer. Now, a WRITE request is ", "bbox": {"l": 136.79999, "t": 377.50687, "r": 540.198, "b": 386.71985, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "issued by the program, which uses the contents of the record buffer to update the row in the ", "bbox": {"l": 136.79999, "t": 389.50668, "r": 544.25977, "b": 398.71967, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "underlying DB2 table. Unfortunately, the record buffer still contains a masked value for the tax ", "bbox": {"l": 136.79999, "t": 401.50649999999996, "r": 547.14398, "b": 410.71948, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "ID, so the tax ID value in the table is accidentally set to the masked value.", "bbox": {"l": 136.79997, "t": 413.5063200000001, "r": 461.0538, "b": 422.7193, "coord_origin": "TOPLEFT"}}]}, "text": "In this example, the application reads the data for an update to correct the misspelling of the last name. The last name value is changed to Smith in the buffer. Now, a WRITE request is issued by the program, which uses the contents of the record buffer to update the row in the underlying DB2 table. Unfortunately, the record buffer still contains a masked value for the tax ID, so the tax ID value in the table is accidentally set to the masked value."}, {"label": "caption", "id": 9, "page_no": 96, "cluster": {"id": 9, "label": "caption", "bbox": {"l": 136.07180786132812, "t": 722.1818237304688, "r": 374.3499755859375, "b": 731.462898, "coord_origin": "TOPLEFT"}, "confidence": 0.9452338218688965, "cells": [{"id": 23, "text": "Figure 5-1 Accidental update with masked values scenario", "bbox": {"l": 136.8, "t": 723.137901, "r": 373.81857, "b": 731.462898, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 5-1 Accidental update with masked values scenario"}, {"label": "text", "id": 10, "page_no": 96, "cluster": {"id": 10, "label": "text", "bbox": {"l": 141.93385314941406, "t": 161.8843994140625, "r": 495.4548, "b": 196.31082153320312, "coord_origin": "TOPLEFT"}, "confidence": 0.9745184183120728, "cells": [{"id": 24, "text": "Important:", "bbox": {"l": 142.8, "t": 162.52868999999998, "r": 192.41673, "b": 171.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": " Based on the potential impacts of query result set and performance ", "bbox": {"l": 192.41974, "t": 162.52868999999998, "r": 495.4548, "b": 171.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "differences, you should perform extensive functional testing and performance ", "bbox": {"l": 142.80002, "t": 174.5285, "r": 485.46099999999996, "b": 183.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "benchmarking of applications and reports that use native query interfaces. ", "bbox": {"l": 142.80002, "t": 186.52832, "r": 473.03167999999994, "b": 195.74132999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Important: Based on the potential impacts of query result set and performance differences, you should perform extensive functional testing and performance benchmarking of applications and reports that use native query interfaces."}, {"label": "picture", "id": 11, "page_no": 96, "cluster": {"id": 11, "label": "picture", "bbox": {"l": 135.8197021484375, "t": 437.9704895019531, "r": 527.1633911132812, "b": 719.9022827148438, "coord_origin": "TOPLEFT"}, "confidence": 0.980728805065155, "cells": [{"id": 28, "text": "\u2026", "bbox": {"l": 233.05431000000002, "t": 474.24478, "r": 239.71214, "b": 484.23154, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "HLL Program using Native Record-Level Access", "bbox": {"l": 191.36845, "t": 446.30069, "r": 445.35726999999997, "b": 456.56488, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "READ", "bbox": {"l": 233.05431000000002, "t": 487.56049, "r": 259.57025, "b": 497.54724, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Record Buffer-> ", "bbox": {"l": 238.12204000000003, "t": 501.52307, "r": 313.72403, "b": 511.01047, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Joe Smyth *****3333", "bbox": {"l": 313.72516, "t": 501.52307, "r": 413.24988, "b": 511.02158, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "\u2026", "bbox": {"l": 233.05431000000002, "t": 527.65549, "r": 239.71214, "b": 537.64223, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "/* Application logic corrects last name to Smith */", "bbox": {"l": 233.05431000000002, "t": 541.43492, "r": 444.82404, "b": 550.24414, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "WRITE", "bbox": {"l": 233.05431000000002, "t": 565.97496, "r": 266.1937, "b": 575.96172, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "df", "bbox": {"l": 266.1586, "t": 579.93794, "r": 304.32135, "b": 589.4253699999999, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "f", "bbox": {"l": 289.75067, "t": 579.93794, "r": 307.61145, "b": 589.4253699999999, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "ih", "bbox": {"l": 345.7197, "t": 579.93794, "r": 362.1246, "b": 589.43646, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "*****", "bbox": {"l": 360.73679, "t": 579.93794, "r": 388.33353, "b": 589.43646, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "TaxID value changed", "bbox": {"l": 300.70541, "t": 624.36053, "r": 394.25247, "b": 633.85905, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Record Buffer-> ", "bbox": {"l": 240.6368, "t": 579.93794, "r": 313.68628, "b": 589.4253699999999, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Joe Smith ", "bbox": {"l": 313.72513, "t": 579.93794, "r": 360.76648, "b": 589.43646, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "*****3333", "bbox": {"l": 360.73679, "t": 579.93794, "r": 410.82452, "b": 589.43646, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Joe Smyth 111223333", "bbox": {"l": 149.09151, "t": 656.44766, "r": 258.49426, "b": 666.34564, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "TaxID value changed ", "bbox": {"l": 300.70541, "t": 624.36053, "r": 396.71878, "b": 633.85905, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "from 11122333 to *****3333", "bbox": {"l": 305.77271, "t": 637.67621, "r": 440.5318, "b": 647.17473, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 96, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.42791748046875, "t": 70.61494445800781, "r": 543.05804, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9628674387931824, "cells": [{"id": 2, "text": "For a list of the differences and additional details, see the ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 391.62125, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "IBM i Memo to Users Version 7.2", "bbox": {"l": 391.6192, "t": 71.50903000000005, "r": 537.52203, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": ", ", "bbox": {"l": 537.4187, "t": 71.50903000000005, "r": 543.05804, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "found at:", "bbox": {"l": 136.79861, "t": 83.50885000000017, "r": 175.42749, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "For a list of the differences and additional details, see the IBM i Memo to Users Version 7.2 , found at:"}, {"label": "text", "id": 3, "page_no": 96, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.22903442382812, "t": 99.42984008789062, "r": 521.8867797851562, "b": 109.78103637695312, "coord_origin": "TOPLEFT"}, "confidence": 0.8841223120689392, "cells": [{"id": 6, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgmtu.htm", "bbox": {"l": 136.79861, "t": 100.63806, "r": 521.5733, "b": 109.41283999999996, "coord_origin": "TOPLEFT"}}]}, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgmtu.htm"}, {"label": "text", "id": 4, "page_no": 96, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.18670654296875, "t": 121.53282165527344, "r": 544.66058, "b": 143.72107000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9777080416679382, "cells": [{"id": 7, "text": "In addition, the performance of a native query with SQE can be different. It is possible that a ", "bbox": {"l": 136.79861, "t": 122.50824, "r": 544.66058, "b": 131.72125000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "new index or keyed logical file might need to be created to improve the performance.", "bbox": {"l": 136.79861, "t": 134.50806, "r": 508.98987000000005, "b": 143.72107000000005, "coord_origin": "TOPLEFT"}}]}, "text": "In addition, the performance of a native query with SQE can be different. It is possible that a new index or keyed logical file might need to be created to improve the performance."}, {"label": "section_header", "id": 5, "page_no": 96, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 64.66980743408203, "t": 228.1348419189453, "r": 396.82227, "b": 244.21737670898438, "coord_origin": "TOPLEFT"}, "confidence": 0.967221200466156, "cells": [{"id": 9, "text": "5.3", "bbox": {"l": 64.800003, "t": 229.20068000000003, "r": 107.0743, "b": 243.96367999999995, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Accidental updates with masked values", "bbox": {"l": 110.99170000000001, "t": 229.20068000000003, "r": 396.82227, "b": 243.96367999999995, "coord_origin": "TOPLEFT"}}]}, "text": "5.3 Accidental updates with masked values"}, {"label": "text", "id": 6, "page_no": 96, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.81739807128906, "t": 260.6902770996094, "r": 547.18481, "b": 294.74120999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9834569096565247, "cells": [{"id": 11, "text": "The masked values that are returned by a column mask can potentially cause the original ", "bbox": {"l": 136.8, "t": 261.52855999999997, "r": 533.76666, "b": 270.74158, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "data value to be accidentally overwritten, especially with applications using native record-level ", "bbox": {"l": 136.8, "t": 273.52837999999997, "r": 547.18481, "b": 282.74139, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "access.", "bbox": {"l": 136.79999, "t": 285.52823, "r": 170.50961, "b": 294.74120999999997, "coord_origin": "TOPLEFT"}}]}, "text": "The masked values that are returned by a column mask can potentially cause the original data value to be accidentally overwritten, especially with applications using native record-level access."}, {"label": "text", "id": 7, "page_no": 96, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.87274169921875, "t": 306.6039123535156, "r": 541.6969, "b": 352.80584716796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9875996112823486, "cells": [{"id": 14, "text": "For example, consider a table containing three columns of first name, last name, and tax ID ", "bbox": {"l": 136.79999, "t": 307.48804, "r": 541.6969, "b": 316.7010200000001, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "that is read by an RPG program. The user running the program is not authorized to see the ", "bbox": {"l": 136.79999, "t": 319.48785, "r": 540.84137, "b": 328.70084, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "tax ID value, so a masked value (*****3333) is written into the program\u2019s record buffer, as ", "bbox": {"l": 136.79999, "t": 331.48767, "r": 530.73004, "b": 340.70064999999994, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "shown Figure 5-1.", "bbox": {"l": 136.8, "t": 343.48749, "r": 216.65632999999997, "b": 352.70047000000005, "coord_origin": "TOPLEFT"}}]}, "text": "For example, consider a table containing three columns of first name, last name, and tax ID that is read by an RPG program. The user running the program is not authorized to see the tax ID value, so a masked value (*****3333) is written into the program\u2019s record buffer, as shown Figure 5-1."}, {"label": "text", "id": 8, "page_no": 96, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.08998107910156, "t": 364.7171325683594, "r": 547.14398, "b": 422.7193, "coord_origin": "TOPLEFT"}, "confidence": 0.9872422218322754, "cells": [{"id": 18, "text": "In this example, the application reads the data for an update to correct the misspelling of the ", "bbox": {"l": 136.8, "t": 365.50705, "r": 545.41302, "b": 374.72003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "last name. The last name value is changed to Smith in the buffer. Now, a WRITE request is ", "bbox": {"l": 136.79999, "t": 377.50687, "r": 540.198, "b": 386.71985, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "issued by the program, which uses the contents of the record buffer to update the row in the ", "bbox": {"l": 136.79999, "t": 389.50668, "r": 544.25977, "b": 398.71967, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "underlying DB2 table. Unfortunately, the record buffer still contains a masked value for the tax ", "bbox": {"l": 136.79999, "t": 401.50649999999996, "r": 547.14398, "b": 410.71948, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "ID, so the tax ID value in the table is accidentally set to the masked value.", "bbox": {"l": 136.79997, "t": 413.5063200000001, "r": 461.0538, "b": 422.7193, "coord_origin": "TOPLEFT"}}]}, "text": "In this example, the application reads the data for an update to correct the misspelling of the last name. The last name value is changed to Smith in the buffer. Now, a WRITE request is issued by the program, which uses the contents of the record buffer to update the row in the underlying DB2 table. Unfortunately, the record buffer still contains a masked value for the tax ID, so the tax ID value in the table is accidentally set to the masked value."}, {"label": "caption", "id": 9, "page_no": 96, "cluster": {"id": 9, "label": "caption", "bbox": {"l": 136.07180786132812, "t": 722.1818237304688, "r": 374.3499755859375, "b": 731.462898, "coord_origin": "TOPLEFT"}, "confidence": 0.9452338218688965, "cells": [{"id": 23, "text": "Figure 5-1 Accidental update with masked values scenario", "bbox": {"l": 136.8, "t": 723.137901, "r": 373.81857, "b": 731.462898, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 5-1 Accidental update with masked values scenario"}, {"label": "text", "id": 10, "page_no": 96, "cluster": {"id": 10, "label": "text", "bbox": {"l": 141.93385314941406, "t": 161.8843994140625, "r": 495.4548, "b": 196.31082153320312, "coord_origin": "TOPLEFT"}, "confidence": 0.9745184183120728, "cells": [{"id": 24, "text": "Important:", "bbox": {"l": 142.8, "t": 162.52868999999998, "r": 192.41673, "b": 171.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": " Based on the potential impacts of query result set and performance ", "bbox": {"l": 192.41974, "t": 162.52868999999998, "r": 495.4548, "b": 171.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "differences, you should perform extensive functional testing and performance ", "bbox": {"l": 142.80002, "t": 174.5285, "r": 485.46099999999996, "b": 183.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "benchmarking of applications and reports that use native query interfaces. ", "bbox": {"l": 142.80002, "t": 186.52832, "r": 473.03167999999994, "b": 195.74132999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Important: Based on the potential impacts of query result set and performance differences, you should perform extensive functional testing and performance benchmarking of applications and reports that use native query interfaces."}, {"label": "picture", "id": 11, "page_no": 96, "cluster": {"id": 11, "label": "picture", "bbox": {"l": 135.8197021484375, "t": 437.9704895019531, "r": 527.1633911132812, "b": 719.9022827148438, "coord_origin": "TOPLEFT"}, "confidence": 0.980728805065155, "cells": [{"id": 28, "text": "\u2026", "bbox": {"l": 233.05431000000002, "t": 474.24478, "r": 239.71214, "b": 484.23154, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "HLL Program using Native Record-Level Access", "bbox": {"l": 191.36845, "t": 446.30069, "r": 445.35726999999997, "b": 456.56488, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "READ", "bbox": {"l": 233.05431000000002, "t": 487.56049, "r": 259.57025, "b": 497.54724, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Record Buffer-> ", "bbox": {"l": 238.12204000000003, "t": 501.52307, "r": 313.72403, "b": 511.01047, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Joe Smyth *****3333", "bbox": {"l": 313.72516, "t": 501.52307, "r": 413.24988, "b": 511.02158, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "\u2026", "bbox": {"l": 233.05431000000002, "t": 527.65549, "r": 239.71214, "b": 537.64223, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "/* Application logic corrects last name to Smith */", "bbox": {"l": 233.05431000000002, "t": 541.43492, "r": 444.82404, "b": 550.24414, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "WRITE", "bbox": {"l": 233.05431000000002, "t": 565.97496, "r": 266.1937, "b": 575.96172, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "df", "bbox": {"l": 266.1586, "t": 579.93794, "r": 304.32135, "b": 589.4253699999999, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "f", "bbox": {"l": 289.75067, "t": 579.93794, "r": 307.61145, "b": 589.4253699999999, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "ih", "bbox": {"l": 345.7197, "t": 579.93794, "r": 362.1246, "b": 589.43646, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "*****", "bbox": {"l": 360.73679, "t": 579.93794, "r": 388.33353, "b": 589.43646, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "TaxID value changed", "bbox": {"l": 300.70541, "t": 624.36053, "r": 394.25247, "b": 633.85905, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Record Buffer-> ", "bbox": {"l": 240.6368, "t": 579.93794, "r": 313.68628, "b": 589.4253699999999, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Joe Smith ", "bbox": {"l": 313.72513, "t": 579.93794, "r": 360.76648, "b": 589.43646, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "*****3333", "bbox": {"l": 360.73679, "t": 579.93794, "r": 410.82452, "b": 589.43646, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Joe Smyth 111223333", "bbox": {"l": 149.09151, "t": 656.44766, "r": 258.49426, "b": 666.34564, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "TaxID value changed ", "bbox": {"l": 300.70541, "t": 624.36053, "r": 396.71878, "b": 633.85905, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "from 11122333 to *****3333", "bbox": {"l": 305.77271, "t": 637.67621, "r": 440.5318, "b": 647.17473, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 96, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 353.64373779296875, "t": 754.87646484375, "r": 523.63324, "b": 764.1002197265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9528434872627258, "cells": [{"id": 0, "text": "Chapter 5. RCAC and non-SQL interfaces ", "bbox": {"l": 354.29999, "t": 755.538002, "r": 523.63324, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 5. RCAC and non-SQL interfaces"}, {"label": "page_footer", "id": 1, "page_no": 96, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.66748046875, "t": 754.2764282226562, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9146247506141663, "cells": [{"id": 1, "text": "81", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "81"}]}}, {"page_no": 97, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "82 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Obviously, careful planning and testing should be exercised to avoid accidental updates with ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 545.14294, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "masked values.", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 205.66844, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "DB2 for i also enhanced its check constraint support in the IBM i 7.2 release with a new ", "bbox": {"l": 136.8, "t": 105.52808000000005, "r": 524.7757, "b": 114.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "ON ", "bbox": {"l": 524.7002, "t": 105.67749000000003, "r": 539.69995, "b": 114.50207999999998, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "UPDATE", "bbox": {"l": 136.80002, "t": 117.67731000000003, "r": 166.73978, "b": 126.50189, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " clause that allows the existing value to be preserved when a masked value is detected ", "bbox": {"l": 166.79955, "t": 117.52788999999996, "r": 547.26752, "b": 126.74090999999987, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "by a check constraint. Details about how to employ this new check constraint support can be ", "bbox": {"l": 136.80002, "t": 129.52770999999996, "r": 546.92078, "b": 138.74072, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "found in 6.8.1, \u201cCheck constraint solution\u201d on page 108.", "bbox": {"l": 136.80002, "t": 141.52752999999996, "r": 381.83194, "b": 150.74054, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "5.4", "bbox": {"l": 64.800003, "t": 179.22069999999997, "r": 87.337959, "b": 193.9837, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "System CL commands considerations", "bbox": {"l": 91.845535, "t": 179.22069999999997, "r": 385.58484, "b": 193.9837, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "As stated earlier, RCAC controls are enforced on all data access interfaces. This enforcement ", "bbox": {"l": 136.8, "t": 211.48870999999997, "r": 547.26038, "b": 220.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "is not limited to programmatic interfaces; it also includes system CL commands that read and ", "bbox": {"l": 136.8, "t": 223.48852999999997, "r": 547.17889, "b": 232.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "insert data, such as the Create Duplicate Object (", "bbox": {"l": 136.80002, "t": 235.48834, "r": 355.65302, "b": 244.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "CRTDUPOBJ", "bbox": {"l": 355.49969, "t": 235.63775999999996, "r": 400.43921, "b": 244.46234000000004, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ") and Start DFU (", "bbox": {"l": 400.49997, "t": 235.48834, "r": 476.93701, "b": 244.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "STRDFU", "bbox": {"l": 476.99976, "t": 235.63775999999996, "r": 506.9395099999999, "b": 244.46234000000004, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": ") CL ", "bbox": {"l": 506.9395099999999, "t": 235.48834, "r": 528.60651, "b": 244.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "commands. This section documents the behavior of the Create Duplicate Object (", "bbox": {"l": 136.79901, "t": 247.48816, "r": 493.72556, "b": 256.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "CRTDUPOBJ", "bbox": {"l": 493.61899, "t": 247.63756999999998, "r": 538.55853, "b": 256.46216000000004, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "), ", "bbox": {"l": 538.55853, "t": 247.48816, "r": 547.48962, "b": 256.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Copy File (", "bbox": {"l": 136.79904, "t": 259.48798, "r": 184.84109, "b": 268.70099000000005, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "CPYF", "bbox": {"l": 184.79927, "t": 259.63739, "r": 204.77904, "b": 268.46198000000004, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "), and Copy Library (", "bbox": {"l": 204.77904, "t": 259.48798, "r": 295.79846, "b": 268.70099000000005, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "CPYLIB", "bbox": {"l": 295.7995, "t": 259.63739, "r": 325.73926, "b": 268.46198000000004, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": ") CL commands with RCAC.", "bbox": {"l": 325.80002, "t": 259.48798, "r": 450.0838600000001, "b": 268.70099000000005, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "5.4.1", "bbox": {"l": 64.800003, "t": 289.37473, "r": 93.960258, "b": 301.36269999999996, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Create Duplicate Object (CRTDUPOBJ) command", "bbox": {"l": 97.605309, "t": 289.37473, "r": 405.04672, "b": 301.36269999999996, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "The ", "bbox": {"l": 136.8, "t": 315.52872, "r": 156.82855, "b": 324.7417, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CRTDUPOBJ", "bbox": {"l": 156.77977, "t": 315.67810000000003, "r": 201.77904, "b": 324.50269, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " command is enhanced with a new Access Control (", "bbox": {"l": 201.78004, "t": 315.52872, "r": 430.97162, "b": 324.7417, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "ACCCTL", "bbox": {"l": 430.97955, "t": 315.67810000000003, "r": 460.91931, "b": 324.50269, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": ") parameter in the ", "bbox": {"l": 460.97906, "t": 315.52872, "r": 542.51752, "b": 324.7417, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "IBM i 7.2 release to copy RCAC controls to the new object being created. Row permissions ", "bbox": {"l": 136.79901, "t": 327.52853, "r": 541.07751, "b": 336.74152, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "and column masks are copied to the new object by default because the default value for the ", "bbox": {"l": 136.79901, "t": 339.52835, "r": 542.97083, "b": 348.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "ACCCTL", "bbox": {"l": 136.799, "t": 351.67755, "r": 166.73875, "b": 360.50214000000005, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": " parameter is ", "bbox": {"l": 166.79852, "t": 351.52817, "r": 227.73976, "b": 360.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "*ALL", "bbox": {"l": 227.75870000000003, "t": 351.67755, "r": 247.73845, "b": 360.45233, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": ".", "bbox": {"l": 247.73846, "t": 351.52817, "r": 250.50734, "b": 360.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "If the invoker of the ", "bbox": {"l": 136.798, "t": 373.48798, "r": 223.97386, "b": 382.70096, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "CRTDUPOBJ", "bbox": {"l": 223.91812, "t": 373.63735999999994, "r": 268.85764, "b": 382.46194, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": " command asks for data to be copied with a value of ", "bbox": {"l": 268.9184, "t": 373.48798, "r": 501.69666, "b": 382.70096, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "*YES", "bbox": {"l": 501.65869, "t": 373.63735999999994, "r": 521.63843, "b": 382.41214, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": " for ", "bbox": {"l": 521.69922, "t": 373.48798, "r": 538.55847, "b": 382.70096, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "the ", "bbox": {"l": 136.79901, "t": 385.48779, "r": 153.41228, "b": 394.70078, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "DATA", "bbox": {"l": 153.47902, "t": 385.63718, "r": 173.45877, "b": 394.46176, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": " parameter, the value of the ", "bbox": {"l": 173.45879, "t": 385.48779, "r": 297.59729, "b": 394.70078, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ACCCTL", "bbox": {"l": 297.59924, "t": 385.63718, "r": 327.59875, "b": 394.46176, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": " parameter must be ", "bbox": {"l": 327.59875, "t": 385.48779, "r": 416.82043, "b": 394.70078, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "*ALL", "bbox": {"l": 416.81845, "t": 385.63718, "r": 436.79819000000003, "b": 394.41195999999997, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": ". If not, the command ", "bbox": {"l": 436.79822, "t": 385.48779, "r": 533.45392, "b": 394.70078, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "invocation receives an error.", "bbox": {"l": 136.79803, "t": 397.48761, "r": 261.15759, "b": 406.70059000000003, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "When data is copied to the duplicated object with the ", "bbox": {"l": 136.79803, "t": 419.50717, "r": 370.7355, "b": 428.72015, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "DATA", "bbox": {"l": 370.67773, "t": 419.65656, "r": 390.59775, "b": 428.48114, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": " parameter, all rows and unmasked ", "bbox": {"l": 390.6575, "t": 419.50717, "r": 547.21686, "b": 428.72015, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "column values are copied into the new object, even if the command invoker is not authorized ", "bbox": {"l": 136.79701, "t": 431.50699, "r": 546.87817, "b": 440.71997, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "to view all rows or certain column values. This behavior occurs because the RCAC controls ", "bbox": {"l": 136.79701, "t": 443.50681, "r": 541.51062, "b": 452.71979, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "also are copied to the new object. The copied RCAC controls enforce that only authorized ", "bbox": {"l": 136.79701, "t": 455.50661999999994, "r": 535.04083, "b": 464.7196, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "users are allowed to view row and column values in the newly duplicated object.", "bbox": {"l": 136.79701, "t": 467.50644, "r": 489.0842599999999, "b": 476.71942, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "5.4.2", "bbox": {"l": 64.800003, "t": 497.39474, "r": 94.162216, "b": 509.38272, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Copy File (CPYF) command", "bbox": {"l": 97.832489, "t": 497.39474, "r": 270.95599, "b": 509.38272, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "The ", "bbox": {"l": 136.8, "t": 523.54874, "r": 156.82855, "b": 532.76172, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "CPYF", "bbox": {"l": 156.60048, "t": 523.69812, "r": 176.58025, "b": 532.52271, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": " command copies only data, so there is no new parameter to copy RCAC controls to ", "bbox": {"l": 176.58025, "t": 523.54874, "r": 547.28552, "b": 532.76172, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "the target table. Therefore, if ", "bbox": {"l": 136.8, "t": 535.54852, "r": 263.37762, "b": 544.76154, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "CPYF", "bbox": {"l": 263.39957, "t": 535.69794, "r": 283.3793, "b": 544.5224900000001, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": " is used to create a target table, there are no RCAC controls ", "bbox": {"l": 283.37933, "t": 535.54852, "r": 547.23456, "b": 544.76154, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "placed on the target table.", "bbox": {"l": 136.79901, "t": 547.54834, "r": 252.06812, "b": 556.76134, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "When RCAC controls are in place on the source table, the ", "bbox": {"l": 136.79901, "t": 569.50815, "r": 391.27509, "b": 578.72115, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "CPYF", "bbox": {"l": 391.25909, "t": 569.65755, "r": 411.23883, "b": 578.4821000000001, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": " command is limited to reading ", "bbox": {"l": 411.23886, "t": 569.50815, "r": 547.17792, "b": 578.72115, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "rows and column values that are based on the invoker of the ", "bbox": {"l": 136.79904, "t": 581.5079499999999, "r": 405.7749, "b": 590.72095, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "CPYF", "bbox": {"l": 405.71906, "t": 581.65735, "r": 425.69882, "b": 590.4819, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": " command. If a user is ", "bbox": {"l": 425.75858, "t": 581.5079499999999, "r": 526.83667, "b": 590.72095, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "authorized to see all rows and column values, then all rows and unmasked column values are ", "bbox": {"l": 136.79907, "t": 593.50775, "r": 547.32733, "b": 602.72075, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "copied to the target table (assuming no RCAC controls are on the target table). If a user ", "bbox": {"l": 136.79907, "t": 605.50755, "r": 526.13843, "b": 614.72055, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "without full access runs the ", "bbox": {"l": 136.79907, "t": 617.50735, "r": 258.86984, "b": 626.72035, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "CPYF", "bbox": {"l": 258.89871, "t": 617.65675, "r": 278.87845, "b": 626.48131, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": " command, the ", "bbox": {"l": 278.87848, "t": 617.50735, "r": 347.34949, "b": 626.72035, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "CPYF", "bbox": {"l": 347.27878, "t": 617.65675, "r": 367.25854, "b": 626.48131, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": " command can copy only a subset of the ", "bbox": {"l": 367.25854, "t": 617.50735, "r": 547.17291, "b": 626.72035, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "rows into the target table. In addition, if that user can view only masked column values, then ", "bbox": {"l": 136.7981, "t": 629.50716, "r": 543.80835, "b": 638.72015, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "masked values are copied into the target table. This also applies to the Copy to Import File ", "bbox": {"l": 136.7981, "t": 641.5069599999999, "r": 538.44824, "b": 650.71996, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "(", "bbox": {"l": 136.7981, "t": 653.50676, "r": 140.11478, "b": 662.71976, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "CPYTOIMPF", "bbox": {"l": 140.09784, "t": 653.65616, "r": 185.09709, "b": 662.48071, "coord_origin": "TOPLEFT"}}, {"id": 86, "text": ") command.", "bbox": {"l": 185.09811, "t": 653.50676, "r": 237.83435000000003, "b": 662.71976, "coord_origin": "TOPLEFT"}}, {"id": 87, "text": "If the target table has RCAC controls defined and activated, then the ", "bbox": {"l": 136.7981, "t": 675.52632, "r": 441.13778999999994, "b": 684.73933, "coord_origin": "TOPLEFT"}}, {"id": 88, "text": "CPYF", "bbox": {"l": 441.05816999999996, "t": 675.67573, "r": 461.0379, "b": 684.50028, "coord_origin": "TOPLEFT"}}, {"id": 89, "text": " command is ", "bbox": {"l": 461.03792999999996, "t": 675.52632, "r": 520.46222, "b": 684.73933, "coord_origin": "TOPLEFT"}}, {"id": 90, "text": "allowed only to add or replace rows in the target table based on the RCAC controls. If ", "bbox": {"l": 136.7981, "t": 687.52613, "r": 515.72437, "b": 696.739136, "coord_origin": "TOPLEFT"}}, {"id": 91, "text": "CPYF", "bbox": {"l": 515.75818, "t": 687.67554, "r": 535.73792, "b": 696.500092, "coord_origin": "TOPLEFT"}}, {"id": 92, "text": "tries to add a row to the target table that the command invoker is not allowed to view ", "bbox": {"l": 136.7981, "t": 699.52594, "r": 510.53024, "b": 708.738945, "coord_origin": "TOPLEFT"}}, {"id": 93, "text": "according to the target RCAC controls, then an error is received.", "bbox": {"l": 136.7981, "t": 711.525749, "r": 420.63605, "b": 720.738754, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.22566223144531, "t": 754.41650390625, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9210326671600342, "cells": [{"id": 0, "text": "82 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.18901824951172, "t": 754.7184448242188, "r": 334.42142, "b": 763.9121704101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9529549479484558, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.91806030273438, "t": 70.726806640625, "r": 545.14294, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9776225686073303, "cells": [{"id": 2, "text": "Obviously, careful planning and testing should be exercised to avoid accidental updates with ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 545.14294, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "masked values.", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 205.66844, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.93345642089844, "t": 104.64000701904297, "r": 547.26752, "b": 150.74054, "coord_origin": "TOPLEFT"}, "confidence": 0.9867440462112427, "cells": [{"id": 4, "text": "DB2 for i also enhanced its check constraint support in the IBM i 7.2 release with a new ", "bbox": {"l": 136.8, "t": 105.52808000000005, "r": 524.7757, "b": 114.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "ON ", "bbox": {"l": 524.7002, "t": 105.67749000000003, "r": 539.69995, "b": 114.50207999999998, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "UPDATE", "bbox": {"l": 136.80002, "t": 117.67731000000003, "r": 166.73978, "b": 126.50189, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " clause that allows the existing value to be preserved when a masked value is detected ", "bbox": {"l": 166.79955, "t": 117.52788999999996, "r": 547.26752, "b": 126.74090999999987, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "by a check constraint. Details about how to employ this new check constraint support can be ", "bbox": {"l": 136.80002, "t": 129.52770999999996, "r": 546.92078, "b": 138.74072, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "found in 6.8.1, \u201cCheck constraint solution\u201d on page 108.", "bbox": {"l": 136.80002, "t": 141.52752999999996, "r": 381.83194, "b": 150.74054, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 64.44256591796875, "t": 177.93212890625, "r": 385.58484, "b": 194.52586364746094, "coord_origin": "TOPLEFT"}, "confidence": 0.9684726595878601, "cells": [{"id": 10, "text": "5.4", "bbox": {"l": 64.800003, "t": 179.22069999999997, "r": 87.337959, "b": 193.9837, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "System CL commands considerations", "bbox": {"l": 91.845535, "t": 179.22069999999997, "r": 385.58484, "b": 193.9837, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.84999084472656, "t": 210.4622344970703, "r": 547.48962, "b": 269.1277770996094, "coord_origin": "TOPLEFT"}, "confidence": 0.9875320792198181, "cells": [{"id": 12, "text": "As stated earlier, RCAC controls are enforced on all data access interfaces. This enforcement ", "bbox": {"l": 136.8, "t": 211.48870999999997, "r": 547.26038, "b": 220.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "is not limited to programmatic interfaces; it also includes system CL commands that read and ", "bbox": {"l": 136.8, "t": 223.48852999999997, "r": 547.17889, "b": 232.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "insert data, such as the Create Duplicate Object (", "bbox": {"l": 136.80002, "t": 235.48834, "r": 355.65302, "b": 244.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "CRTDUPOBJ", "bbox": {"l": 355.49969, "t": 235.63775999999996, "r": 400.43921, "b": 244.46234000000004, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ") and Start DFU (", "bbox": {"l": 400.49997, "t": 235.48834, "r": 476.93701, "b": 244.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "STRDFU", "bbox": {"l": 476.99976, "t": 235.63775999999996, "r": 506.9395099999999, "b": 244.46234000000004, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": ") CL ", "bbox": {"l": 506.9395099999999, "t": 235.48834, "r": 528.60651, "b": 244.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "commands. This section documents the behavior of the Create Duplicate Object (", "bbox": {"l": 136.79901, "t": 247.48816, "r": 493.72556, "b": 256.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "CRTDUPOBJ", "bbox": {"l": 493.61899, "t": 247.63756999999998, "r": 538.55853, "b": 256.46216000000004, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "), ", "bbox": {"l": 538.55853, "t": 247.48816, "r": 547.48962, "b": 256.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Copy File (", "bbox": {"l": 136.79904, "t": 259.48798, "r": 184.84109, "b": 268.70099000000005, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "CPYF", "bbox": {"l": 184.79927, "t": 259.63739, "r": 204.77904, "b": 268.46198000000004, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "), and Copy Library (", "bbox": {"l": 204.77904, "t": 259.48798, "r": 295.79846, "b": 268.70099000000005, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "CPYLIB", "bbox": {"l": 295.7995, "t": 259.63739, "r": 325.73926, "b": 268.46198000000004, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": ") CL commands with RCAC.", "bbox": {"l": 325.80002, "t": 259.48798, "r": 450.0838600000001, "b": 268.70099000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "section_header", "bbox": {"l": 64.2880630493164, "t": 288.19952392578125, "r": 405.04672, "b": 301.8869323730469, "coord_origin": "TOPLEFT"}, "confidence": 0.9681828022003174, "cells": [{"id": 27, "text": "5.4.1", "bbox": {"l": 64.800003, "t": 289.37473, "r": 93.960258, "b": 301.36269999999996, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Create Duplicate Object (CRTDUPOBJ) command", "bbox": {"l": 97.605309, "t": 289.37473, "r": 405.04672, "b": 301.36269999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 135.64491271972656, "t": 314.66900634765625, "r": 542.97083, "b": 360.74115000000006, "coord_origin": "TOPLEFT"}, "confidence": 0.987525224685669, "cells": [{"id": 29, "text": "The ", "bbox": {"l": 136.8, "t": 315.52872, "r": 156.82855, "b": 324.7417, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CRTDUPOBJ", "bbox": {"l": 156.77977, "t": 315.67810000000003, "r": 201.77904, "b": 324.50269, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " command is enhanced with a new Access Control (", "bbox": {"l": 201.78004, "t": 315.52872, "r": 430.97162, "b": 324.7417, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "ACCCTL", "bbox": {"l": 430.97955, "t": 315.67810000000003, "r": 460.91931, "b": 324.50269, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": ") parameter in the ", "bbox": {"l": 460.97906, "t": 315.52872, "r": 542.51752, "b": 324.7417, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "IBM i 7.2 release to copy RCAC controls to the new object being created. Row permissions ", "bbox": {"l": 136.79901, "t": 327.52853, "r": 541.07751, "b": 336.74152, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "and column masks are copied to the new object by default because the default value for the ", "bbox": {"l": 136.79901, "t": 339.52835, "r": 542.97083, "b": 348.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "ACCCTL", "bbox": {"l": 136.799, "t": 351.67755, "r": 166.73875, "b": 360.50214000000005, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": " parameter is ", "bbox": {"l": 166.79852, "t": 351.52817, "r": 227.73976, "b": 360.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "*ALL", "bbox": {"l": 227.75870000000003, "t": 351.67755, "r": 247.73845, "b": 360.45233, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": ".", "bbox": {"l": 247.73846, "t": 351.52817, "r": 250.50734, "b": 360.74115000000006, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 135.95484924316406, "t": 372.71258544921875, "r": 538.55847, "b": 406.70059000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9827100038528442, "cells": [{"id": 40, "text": "If the invoker of the ", "bbox": {"l": 136.798, "t": 373.48798, "r": 223.97386, "b": 382.70096, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "CRTDUPOBJ", "bbox": {"l": 223.91812, "t": 373.63735999999994, "r": 268.85764, "b": 382.46194, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": " command asks for data to be copied with a value of ", "bbox": {"l": 268.9184, "t": 373.48798, "r": 501.69666, "b": 382.70096, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "*YES", "bbox": {"l": 501.65869, "t": 373.63735999999994, "r": 521.63843, "b": 382.41214, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": " for ", "bbox": {"l": 521.69922, "t": 373.48798, "r": 538.55847, "b": 382.70096, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "the ", "bbox": {"l": 136.79901, "t": 385.48779, "r": 153.41228, "b": 394.70078, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "DATA", "bbox": {"l": 153.47902, "t": 385.63718, "r": 173.45877, "b": 394.46176, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": " parameter, the value of the ", "bbox": {"l": 173.45879, "t": 385.48779, "r": 297.59729, "b": 394.70078, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ACCCTL", "bbox": {"l": 297.59924, "t": 385.63718, "r": 327.59875, "b": 394.46176, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": " parameter must be ", "bbox": {"l": 327.59875, "t": 385.48779, "r": 416.82043, "b": 394.70078, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "*ALL", "bbox": {"l": 416.81845, "t": 385.63718, "r": 436.79819000000003, "b": 394.41195999999997, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": ". If not, the command ", "bbox": {"l": 436.79822, "t": 385.48779, "r": 533.45392, "b": 394.70078, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "invocation receives an error.", "bbox": {"l": 136.79803, "t": 397.48761, "r": 261.15759, "b": 406.70059000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 135.810791015625, "t": 418.80743408203125, "r": 547.21686, "b": 476.839599609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9882908463478088, "cells": [{"id": 53, "text": "When data is copied to the duplicated object with the ", "bbox": {"l": 136.79803, "t": 419.50717, "r": 370.7355, "b": 428.72015, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "DATA", "bbox": {"l": 370.67773, "t": 419.65656, "r": 390.59775, "b": 428.48114, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": " parameter, all rows and unmasked ", "bbox": {"l": 390.6575, "t": 419.50717, "r": 547.21686, "b": 428.72015, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "column values are copied into the new object, even if the command invoker is not authorized ", "bbox": {"l": 136.79701, "t": 431.50699, "r": 546.87817, "b": 440.71997, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "to view all rows or certain column values. This behavior occurs because the RCAC controls ", "bbox": {"l": 136.79701, "t": 443.50681, "r": 541.51062, "b": 452.71979, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "also are copied to the new object. The copied RCAC controls enforce that only authorized ", "bbox": {"l": 136.79701, "t": 455.50661999999994, "r": 535.04083, "b": 464.7196, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "users are allowed to view row and column values in the newly duplicated object.", "bbox": {"l": 136.79701, "t": 467.50644, "r": 489.0842599999999, "b": 476.71942, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "section_header", "bbox": {"l": 64.34564208984375, "t": 495.8337097167969, "r": 270.95599, "b": 509.7830810546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9675832390785217, "cells": [{"id": 60, "text": "5.4.2", "bbox": {"l": 64.800003, "t": 497.39474, "r": 94.162216, "b": 509.38272, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Copy File (CPYF) command", "bbox": {"l": 97.832489, "t": 497.39474, "r": 270.95599, "b": 509.38272, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 135.7013702392578, "t": 522.5596313476562, "r": 547.28552, "b": 557.3438110351562, "coord_origin": "TOPLEFT"}, "confidence": 0.9865304827690125, "cells": [{"id": 62, "text": "The ", "bbox": {"l": 136.8, "t": 523.54874, "r": 156.82855, "b": 532.76172, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "CPYF", "bbox": {"l": 156.60048, "t": 523.69812, "r": 176.58025, "b": 532.52271, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": " command copies only data, so there is no new parameter to copy RCAC controls to ", "bbox": {"l": 176.58025, "t": 523.54874, "r": 547.28552, "b": 532.76172, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "the target table. Therefore, if ", "bbox": {"l": 136.8, "t": 535.54852, "r": 263.37762, "b": 544.76154, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "CPYF", "bbox": {"l": 263.39957, "t": 535.69794, "r": 283.3793, "b": 544.5224900000001, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": " is used to create a target table, there are no RCAC controls ", "bbox": {"l": 283.37933, "t": 535.54852, "r": 547.23456, "b": 544.76154, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "placed on the target table.", "bbox": {"l": 136.79901, "t": 547.54834, "r": 252.06812, "b": 556.76134, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 135.7746124267578, "t": 568.5869750976562, "r": 547.32733, "b": 662.71976, "coord_origin": "TOPLEFT"}, "confidence": 0.9887324571609497, "cells": [{"id": 69, "text": "When RCAC controls are in place on the source table, the ", "bbox": {"l": 136.79901, "t": 569.50815, "r": 391.27509, "b": 578.72115, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "CPYF", "bbox": {"l": 391.25909, "t": 569.65755, "r": 411.23883, "b": 578.4821000000001, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": " command is limited to reading ", "bbox": {"l": 411.23886, "t": 569.50815, "r": 547.17792, "b": 578.72115, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "rows and column values that are based on the invoker of the ", "bbox": {"l": 136.79904, "t": 581.5079499999999, "r": 405.7749, "b": 590.72095, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "CPYF", "bbox": {"l": 405.71906, "t": 581.65735, "r": 425.69882, "b": 590.4819, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": " command. If a user is ", "bbox": {"l": 425.75858, "t": 581.5079499999999, "r": 526.83667, "b": 590.72095, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "authorized to see all rows and column values, then all rows and unmasked column values are ", "bbox": {"l": 136.79907, "t": 593.50775, "r": 547.32733, "b": 602.72075, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "copied to the target table (assuming no RCAC controls are on the target table). If a user ", "bbox": {"l": 136.79907, "t": 605.50755, "r": 526.13843, "b": 614.72055, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "without full access runs the ", "bbox": {"l": 136.79907, "t": 617.50735, "r": 258.86984, "b": 626.72035, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "CPYF", "bbox": {"l": 258.89871, "t": 617.65675, "r": 278.87845, "b": 626.48131, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": " command, the ", "bbox": {"l": 278.87848, "t": 617.50735, "r": 347.34949, "b": 626.72035, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "CPYF", "bbox": {"l": 347.27878, "t": 617.65675, "r": 367.25854, "b": 626.48131, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": " command can copy only a subset of the ", "bbox": {"l": 367.25854, "t": 617.50735, "r": 547.17291, "b": 626.72035, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "rows into the target table. In addition, if that user can view only masked column values, then ", "bbox": {"l": 136.7981, "t": 629.50716, "r": 543.80835, "b": 638.72015, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "masked values are copied into the target table. This also applies to the Copy to Import File ", "bbox": {"l": 136.7981, "t": 641.5069599999999, "r": 538.44824, "b": 650.71996, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "(", "bbox": {"l": 136.7981, "t": 653.50676, "r": 140.11478, "b": 662.71976, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "CPYTOIMPF", "bbox": {"l": 140.09784, "t": 653.65616, "r": 185.09709, "b": 662.48071, "coord_origin": "TOPLEFT"}}, {"id": 86, "text": ") command.", "bbox": {"l": 185.09811, "t": 653.50676, "r": 237.83435000000003, "b": 662.71976, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 136.0672149658203, "t": 674.6004638671875, "r": 535.8108520507812, "b": 720.9636840820312, "coord_origin": "TOPLEFT"}, "confidence": 0.9881445169448853, "cells": [{"id": 87, "text": "If the target table has RCAC controls defined and activated, then the ", "bbox": {"l": 136.7981, "t": 675.52632, "r": 441.13778999999994, "b": 684.73933, "coord_origin": "TOPLEFT"}}, {"id": 88, "text": "CPYF", "bbox": {"l": 441.05816999999996, "t": 675.67573, "r": 461.0379, "b": 684.50028, "coord_origin": "TOPLEFT"}}, {"id": 89, "text": " command is ", "bbox": {"l": 461.03792999999996, "t": 675.52632, "r": 520.46222, "b": 684.73933, "coord_origin": "TOPLEFT"}}, {"id": 90, "text": "allowed only to add or replace rows in the target table based on the RCAC controls. If ", "bbox": {"l": 136.7981, "t": 687.52613, "r": 515.72437, "b": 696.739136, "coord_origin": "TOPLEFT"}}, {"id": 91, "text": "CPYF", "bbox": {"l": 515.75818, "t": 687.67554, "r": 535.73792, "b": 696.500092, "coord_origin": "TOPLEFT"}}, {"id": 92, "text": "tries to add a row to the target table that the command invoker is not allowed to view ", "bbox": {"l": 136.7981, "t": 699.52594, "r": 510.53024, "b": 708.738945, "coord_origin": "TOPLEFT"}}, {"id": 93, "text": "according to the target RCAC controls, then an error is received.", "bbox": {"l": 136.7981, "t": 711.525749, "r": 420.63605, "b": 720.738754, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 97, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.22566223144531, "t": 754.41650390625, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9210326671600342, "cells": [{"id": 0, "text": "82 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "82"}, {"label": "page_footer", "id": 1, "page_no": 97, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.18901824951172, "t": 754.7184448242188, "r": 334.42142, "b": 763.9121704101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9529549479484558, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 2, "page_no": 97, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.91806030273438, "t": 70.726806640625, "r": 545.14294, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9776225686073303, "cells": [{"id": 2, "text": "Obviously, careful planning and testing should be exercised to avoid accidental updates with ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 545.14294, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "masked values.", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 205.66844, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Obviously, careful planning and testing should be exercised to avoid accidental updates with masked values."}, {"label": "text", "id": 3, "page_no": 97, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.93345642089844, "t": 104.64000701904297, "r": 547.26752, "b": 150.74054, "coord_origin": "TOPLEFT"}, "confidence": 0.9867440462112427, "cells": [{"id": 4, "text": "DB2 for i also enhanced its check constraint support in the IBM i 7.2 release with a new ", "bbox": {"l": 136.8, "t": 105.52808000000005, "r": 524.7757, "b": 114.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "ON ", "bbox": {"l": 524.7002, "t": 105.67749000000003, "r": 539.69995, "b": 114.50207999999998, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "UPDATE", "bbox": {"l": 136.80002, "t": 117.67731000000003, "r": 166.73978, "b": 126.50189, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " clause that allows the existing value to be preserved when a masked value is detected ", "bbox": {"l": 166.79955, "t": 117.52788999999996, "r": 547.26752, "b": 126.74090999999987, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "by a check constraint. Details about how to employ this new check constraint support can be ", "bbox": {"l": 136.80002, "t": 129.52770999999996, "r": 546.92078, "b": 138.74072, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "found in 6.8.1, \u201cCheck constraint solution\u201d on page 108.", "bbox": {"l": 136.80002, "t": 141.52752999999996, "r": 381.83194, "b": 150.74054, "coord_origin": "TOPLEFT"}}]}, "text": "DB2 for i also enhanced its check constraint support in the IBM i 7.2 release with a new ON UPDATE clause that allows the existing value to be preserved when a masked value is detected by a check constraint. Details about how to employ this new check constraint support can be found in 6.8.1, \u201cCheck constraint solution\u201d on page 108."}, {"label": "section_header", "id": 4, "page_no": 97, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.44256591796875, "t": 177.93212890625, "r": 385.58484, "b": 194.52586364746094, "coord_origin": "TOPLEFT"}, "confidence": 0.9684726595878601, "cells": [{"id": 10, "text": "5.4", "bbox": {"l": 64.800003, "t": 179.22069999999997, "r": 87.337959, "b": 193.9837, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "System CL commands considerations", "bbox": {"l": 91.845535, "t": 179.22069999999997, "r": 385.58484, "b": 193.9837, "coord_origin": "TOPLEFT"}}]}, "text": "5.4 System CL commands considerations"}, {"label": "text", "id": 5, "page_no": 97, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.84999084472656, "t": 210.4622344970703, "r": 547.48962, "b": 269.1277770996094, "coord_origin": "TOPLEFT"}, "confidence": 0.9875320792198181, "cells": [{"id": 12, "text": "As stated earlier, RCAC controls are enforced on all data access interfaces. This enforcement ", "bbox": {"l": 136.8, "t": 211.48870999999997, "r": 547.26038, "b": 220.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "is not limited to programmatic interfaces; it also includes system CL commands that read and ", "bbox": {"l": 136.8, "t": 223.48852999999997, "r": 547.17889, "b": 232.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "insert data, such as the Create Duplicate Object (", "bbox": {"l": 136.80002, "t": 235.48834, "r": 355.65302, "b": 244.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "CRTDUPOBJ", "bbox": {"l": 355.49969, "t": 235.63775999999996, "r": 400.43921, "b": 244.46234000000004, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ") and Start DFU (", "bbox": {"l": 400.49997, "t": 235.48834, "r": 476.93701, "b": 244.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "STRDFU", "bbox": {"l": 476.99976, "t": 235.63775999999996, "r": 506.9395099999999, "b": 244.46234000000004, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": ") CL ", "bbox": {"l": 506.9395099999999, "t": 235.48834, "r": 528.60651, "b": 244.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "commands. This section documents the behavior of the Create Duplicate Object (", "bbox": {"l": 136.79901, "t": 247.48816, "r": 493.72556, "b": 256.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "CRTDUPOBJ", "bbox": {"l": 493.61899, "t": 247.63756999999998, "r": 538.55853, "b": 256.46216000000004, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "), ", "bbox": {"l": 538.55853, "t": 247.48816, "r": 547.48962, "b": 256.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Copy File (", "bbox": {"l": 136.79904, "t": 259.48798, "r": 184.84109, "b": 268.70099000000005, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "CPYF", "bbox": {"l": 184.79927, "t": 259.63739, "r": 204.77904, "b": 268.46198000000004, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "), and Copy Library (", "bbox": {"l": 204.77904, "t": 259.48798, "r": 295.79846, "b": 268.70099000000005, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "CPYLIB", "bbox": {"l": 295.7995, "t": 259.63739, "r": 325.73926, "b": 268.46198000000004, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": ") CL commands with RCAC.", "bbox": {"l": 325.80002, "t": 259.48798, "r": 450.0838600000001, "b": 268.70099000000005, "coord_origin": "TOPLEFT"}}]}, "text": "As stated earlier, RCAC controls are enforced on all data access interfaces. This enforcement is not limited to programmatic interfaces; it also includes system CL commands that read and insert data, such as the Create Duplicate Object ( CRTDUPOBJ ) and Start DFU ( STRDFU ) CL commands. This section documents the behavior of the Create Duplicate Object ( CRTDUPOBJ ), Copy File ( CPYF ), and Copy Library ( CPYLIB ) CL commands with RCAC."}, {"label": "section_header", "id": 6, "page_no": 97, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 64.2880630493164, "t": 288.19952392578125, "r": 405.04672, "b": 301.8869323730469, "coord_origin": "TOPLEFT"}, "confidence": 0.9681828022003174, "cells": [{"id": 27, "text": "5.4.1", "bbox": {"l": 64.800003, "t": 289.37473, "r": 93.960258, "b": 301.36269999999996, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Create Duplicate Object (CRTDUPOBJ) command", "bbox": {"l": 97.605309, "t": 289.37473, "r": 405.04672, "b": 301.36269999999996, "coord_origin": "TOPLEFT"}}]}, "text": "5.4.1 Create Duplicate Object (CRTDUPOBJ) command"}, {"label": "text", "id": 7, "page_no": 97, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.64491271972656, "t": 314.66900634765625, "r": 542.97083, "b": 360.74115000000006, "coord_origin": "TOPLEFT"}, "confidence": 0.987525224685669, "cells": [{"id": 29, "text": "The ", "bbox": {"l": 136.8, "t": 315.52872, "r": 156.82855, "b": 324.7417, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CRTDUPOBJ", "bbox": {"l": 156.77977, "t": 315.67810000000003, "r": 201.77904, "b": 324.50269, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " command is enhanced with a new Access Control (", "bbox": {"l": 201.78004, "t": 315.52872, "r": 430.97162, "b": 324.7417, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "ACCCTL", "bbox": {"l": 430.97955, "t": 315.67810000000003, "r": 460.91931, "b": 324.50269, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": ") parameter in the ", "bbox": {"l": 460.97906, "t": 315.52872, "r": 542.51752, "b": 324.7417, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "IBM i 7.2 release to copy RCAC controls to the new object being created. Row permissions ", "bbox": {"l": 136.79901, "t": 327.52853, "r": 541.07751, "b": 336.74152, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "and column masks are copied to the new object by default because the default value for the ", "bbox": {"l": 136.79901, "t": 339.52835, "r": 542.97083, "b": 348.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "ACCCTL", "bbox": {"l": 136.799, "t": 351.67755, "r": 166.73875, "b": 360.50214000000005, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": " parameter is ", "bbox": {"l": 166.79852, "t": 351.52817, "r": 227.73976, "b": 360.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "*ALL", "bbox": {"l": 227.75870000000003, "t": 351.67755, "r": 247.73845, "b": 360.45233, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": ".", "bbox": {"l": 247.73846, "t": 351.52817, "r": 250.50734, "b": 360.74115000000006, "coord_origin": "TOPLEFT"}}]}, "text": "The CRTDUPOBJ command is enhanced with a new Access Control ( ACCCTL ) parameter in the IBM i 7.2 release to copy RCAC controls to the new object being created. Row permissions and column masks are copied to the new object by default because the default value for the ACCCTL parameter is *ALL ."}, {"label": "text", "id": 8, "page_no": 97, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.95484924316406, "t": 372.71258544921875, "r": 538.55847, "b": 406.70059000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9827100038528442, "cells": [{"id": 40, "text": "If the invoker of the ", "bbox": {"l": 136.798, "t": 373.48798, "r": 223.97386, "b": 382.70096, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "CRTDUPOBJ", "bbox": {"l": 223.91812, "t": 373.63735999999994, "r": 268.85764, "b": 382.46194, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": " command asks for data to be copied with a value of ", "bbox": {"l": 268.9184, "t": 373.48798, "r": 501.69666, "b": 382.70096, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "*YES", "bbox": {"l": 501.65869, "t": 373.63735999999994, "r": 521.63843, "b": 382.41214, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": " for ", "bbox": {"l": 521.69922, "t": 373.48798, "r": 538.55847, "b": 382.70096, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "the ", "bbox": {"l": 136.79901, "t": 385.48779, "r": 153.41228, "b": 394.70078, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "DATA", "bbox": {"l": 153.47902, "t": 385.63718, "r": 173.45877, "b": 394.46176, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": " parameter, the value of the ", "bbox": {"l": 173.45879, "t": 385.48779, "r": 297.59729, "b": 394.70078, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ACCCTL", "bbox": {"l": 297.59924, "t": 385.63718, "r": 327.59875, "b": 394.46176, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": " parameter must be ", "bbox": {"l": 327.59875, "t": 385.48779, "r": 416.82043, "b": 394.70078, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "*ALL", "bbox": {"l": 416.81845, "t": 385.63718, "r": 436.79819000000003, "b": 394.41195999999997, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": ". If not, the command ", "bbox": {"l": 436.79822, "t": 385.48779, "r": 533.45392, "b": 394.70078, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "invocation receives an error.", "bbox": {"l": 136.79803, "t": 397.48761, "r": 261.15759, "b": 406.70059000000003, "coord_origin": "TOPLEFT"}}]}, "text": "If the invoker of the CRTDUPOBJ command asks for data to be copied with a value of *YES for the DATA parameter, the value of the ACCCTL parameter must be *ALL . If not, the command invocation receives an error."}, {"label": "text", "id": 9, "page_no": 97, "cluster": {"id": 9, "label": "text", "bbox": {"l": 135.810791015625, "t": 418.80743408203125, "r": 547.21686, "b": 476.839599609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9882908463478088, "cells": [{"id": 53, "text": "When data is copied to the duplicated object with the ", "bbox": {"l": 136.79803, "t": 419.50717, "r": 370.7355, "b": 428.72015, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "DATA", "bbox": {"l": 370.67773, "t": 419.65656, "r": 390.59775, "b": 428.48114, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": " parameter, all rows and unmasked ", "bbox": {"l": 390.6575, "t": 419.50717, "r": 547.21686, "b": 428.72015, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "column values are copied into the new object, even if the command invoker is not authorized ", "bbox": {"l": 136.79701, "t": 431.50699, "r": 546.87817, "b": 440.71997, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "to view all rows or certain column values. This behavior occurs because the RCAC controls ", "bbox": {"l": 136.79701, "t": 443.50681, "r": 541.51062, "b": 452.71979, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "also are copied to the new object. The copied RCAC controls enforce that only authorized ", "bbox": {"l": 136.79701, "t": 455.50661999999994, "r": 535.04083, "b": 464.7196, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "users are allowed to view row and column values in the newly duplicated object.", "bbox": {"l": 136.79701, "t": 467.50644, "r": 489.0842599999999, "b": 476.71942, "coord_origin": "TOPLEFT"}}]}, "text": "When data is copied to the duplicated object with the DATA parameter, all rows and unmasked column values are copied into the new object, even if the command invoker is not authorized to view all rows or certain column values. This behavior occurs because the RCAC controls also are copied to the new object. The copied RCAC controls enforce that only authorized users are allowed to view row and column values in the newly duplicated object."}, {"label": "section_header", "id": 10, "page_no": 97, "cluster": {"id": 10, "label": "section_header", "bbox": {"l": 64.34564208984375, "t": 495.8337097167969, "r": 270.95599, "b": 509.7830810546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9675832390785217, "cells": [{"id": 60, "text": "5.4.2", "bbox": {"l": 64.800003, "t": 497.39474, "r": 94.162216, "b": 509.38272, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Copy File (CPYF) command", "bbox": {"l": 97.832489, "t": 497.39474, "r": 270.95599, "b": 509.38272, "coord_origin": "TOPLEFT"}}]}, "text": "5.4.2 Copy File (CPYF) command"}, {"label": "text", "id": 11, "page_no": 97, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.7013702392578, "t": 522.5596313476562, "r": 547.28552, "b": 557.3438110351562, "coord_origin": "TOPLEFT"}, "confidence": 0.9865304827690125, "cells": [{"id": 62, "text": "The ", "bbox": {"l": 136.8, "t": 523.54874, "r": 156.82855, "b": 532.76172, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "CPYF", "bbox": {"l": 156.60048, "t": 523.69812, "r": 176.58025, "b": 532.52271, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": " command copies only data, so there is no new parameter to copy RCAC controls to ", "bbox": {"l": 176.58025, "t": 523.54874, "r": 547.28552, "b": 532.76172, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "the target table. Therefore, if ", "bbox": {"l": 136.8, "t": 535.54852, "r": 263.37762, "b": 544.76154, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "CPYF", "bbox": {"l": 263.39957, "t": 535.69794, "r": 283.3793, "b": 544.5224900000001, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": " is used to create a target table, there are no RCAC controls ", "bbox": {"l": 283.37933, "t": 535.54852, "r": 547.23456, "b": 544.76154, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "placed on the target table.", "bbox": {"l": 136.79901, "t": 547.54834, "r": 252.06812, "b": 556.76134, "coord_origin": "TOPLEFT"}}]}, "text": "The CPYF command copies only data, so there is no new parameter to copy RCAC controls to the target table. Therefore, if CPYF is used to create a target table, there are no RCAC controls placed on the target table."}, {"label": "text", "id": 12, "page_no": 97, "cluster": {"id": 12, "label": "text", "bbox": {"l": 135.7746124267578, "t": 568.5869750976562, "r": 547.32733, "b": 662.71976, "coord_origin": "TOPLEFT"}, "confidence": 0.9887324571609497, "cells": [{"id": 69, "text": "When RCAC controls are in place on the source table, the ", "bbox": {"l": 136.79901, "t": 569.50815, "r": 391.27509, "b": 578.72115, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "CPYF", "bbox": {"l": 391.25909, "t": 569.65755, "r": 411.23883, "b": 578.4821000000001, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": " command is limited to reading ", "bbox": {"l": 411.23886, "t": 569.50815, "r": 547.17792, "b": 578.72115, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "rows and column values that are based on the invoker of the ", "bbox": {"l": 136.79904, "t": 581.5079499999999, "r": 405.7749, "b": 590.72095, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "CPYF", "bbox": {"l": 405.71906, "t": 581.65735, "r": 425.69882, "b": 590.4819, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": " command. If a user is ", "bbox": {"l": 425.75858, "t": 581.5079499999999, "r": 526.83667, "b": 590.72095, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "authorized to see all rows and column values, then all rows and unmasked column values are ", "bbox": {"l": 136.79907, "t": 593.50775, "r": 547.32733, "b": 602.72075, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "copied to the target table (assuming no RCAC controls are on the target table). If a user ", "bbox": {"l": 136.79907, "t": 605.50755, "r": 526.13843, "b": 614.72055, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "without full access runs the ", "bbox": {"l": 136.79907, "t": 617.50735, "r": 258.86984, "b": 626.72035, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "CPYF", "bbox": {"l": 258.89871, "t": 617.65675, "r": 278.87845, "b": 626.48131, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": " command, the ", "bbox": {"l": 278.87848, "t": 617.50735, "r": 347.34949, "b": 626.72035, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "CPYF", "bbox": {"l": 347.27878, "t": 617.65675, "r": 367.25854, "b": 626.48131, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": " command can copy only a subset of the ", "bbox": {"l": 367.25854, "t": 617.50735, "r": 547.17291, "b": 626.72035, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "rows into the target table. In addition, if that user can view only masked column values, then ", "bbox": {"l": 136.7981, "t": 629.50716, "r": 543.80835, "b": 638.72015, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "masked values are copied into the target table. This also applies to the Copy to Import File ", "bbox": {"l": 136.7981, "t": 641.5069599999999, "r": 538.44824, "b": 650.71996, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "(", "bbox": {"l": 136.7981, "t": 653.50676, "r": 140.11478, "b": 662.71976, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "CPYTOIMPF", "bbox": {"l": 140.09784, "t": 653.65616, "r": 185.09709, "b": 662.48071, "coord_origin": "TOPLEFT"}}, {"id": 86, "text": ") command.", "bbox": {"l": 185.09811, "t": 653.50676, "r": 237.83435000000003, "b": 662.71976, "coord_origin": "TOPLEFT"}}]}, "text": "When RCAC controls are in place on the source table, the CPYF command is limited to reading rows and column values that are based on the invoker of the CPYF command. If a user is authorized to see all rows and column values, then all rows and unmasked column values are copied to the target table (assuming no RCAC controls are on the target table). If a user without full access runs the CPYF command, the CPYF command can copy only a subset of the rows into the target table. In addition, if that user can view only masked column values, then masked values are copied into the target table. This also applies to the Copy to Import File ( CPYTOIMPF ) command."}, {"label": "text", "id": 13, "page_no": 97, "cluster": {"id": 13, "label": "text", "bbox": {"l": 136.0672149658203, "t": 674.6004638671875, "r": 535.8108520507812, "b": 720.9636840820312, "coord_origin": "TOPLEFT"}, "confidence": 0.9881445169448853, "cells": [{"id": 87, "text": "If the target table has RCAC controls defined and activated, then the ", "bbox": {"l": 136.7981, "t": 675.52632, "r": 441.13778999999994, "b": 684.73933, "coord_origin": "TOPLEFT"}}, {"id": 88, "text": "CPYF", "bbox": {"l": 441.05816999999996, "t": 675.67573, "r": 461.0379, "b": 684.50028, "coord_origin": "TOPLEFT"}}, {"id": 89, "text": " command is ", "bbox": {"l": 461.03792999999996, "t": 675.52632, "r": 520.46222, "b": 684.73933, "coord_origin": "TOPLEFT"}}, {"id": 90, "text": "allowed only to add or replace rows in the target table based on the RCAC controls. If ", "bbox": {"l": 136.7981, "t": 687.52613, "r": 515.72437, "b": 696.739136, "coord_origin": "TOPLEFT"}}, {"id": 91, "text": "CPYF", "bbox": {"l": 515.75818, "t": 687.67554, "r": 535.73792, "b": 696.500092, "coord_origin": "TOPLEFT"}}, {"id": 92, "text": "tries to add a row to the target table that the command invoker is not allowed to view ", "bbox": {"l": 136.7981, "t": 699.52594, "r": 510.53024, "b": 708.738945, "coord_origin": "TOPLEFT"}}, {"id": 93, "text": "according to the target RCAC controls, then an error is received.", "bbox": {"l": 136.7981, "t": 711.525749, "r": 420.63605, "b": 720.738754, "coord_origin": "TOPLEFT"}}]}, "text": "If the target table has RCAC controls defined and activated, then the CPYF command is allowed only to add or replace rows in the target table based on the RCAC controls. If CPYF tries to add a row to the target table that the command invoker is not allowed to view according to the target RCAC controls, then an error is received."}], "body": [{"label": "text", "id": 2, "page_no": 97, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.91806030273438, "t": 70.726806640625, "r": 545.14294, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9776225686073303, "cells": [{"id": 2, "text": "Obviously, careful planning and testing should be exercised to avoid accidental updates with ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 545.14294, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "masked values.", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 205.66844, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Obviously, careful planning and testing should be exercised to avoid accidental updates with masked values."}, {"label": "text", "id": 3, "page_no": 97, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.93345642089844, "t": 104.64000701904297, "r": 547.26752, "b": 150.74054, "coord_origin": "TOPLEFT"}, "confidence": 0.9867440462112427, "cells": [{"id": 4, "text": "DB2 for i also enhanced its check constraint support in the IBM i 7.2 release with a new ", "bbox": {"l": 136.8, "t": 105.52808000000005, "r": 524.7757, "b": 114.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "ON ", "bbox": {"l": 524.7002, "t": 105.67749000000003, "r": 539.69995, "b": 114.50207999999998, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "UPDATE", "bbox": {"l": 136.80002, "t": 117.67731000000003, "r": 166.73978, "b": 126.50189, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " clause that allows the existing value to be preserved when a masked value is detected ", "bbox": {"l": 166.79955, "t": 117.52788999999996, "r": 547.26752, "b": 126.74090999999987, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "by a check constraint. Details about how to employ this new check constraint support can be ", "bbox": {"l": 136.80002, "t": 129.52770999999996, "r": 546.92078, "b": 138.74072, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "found in 6.8.1, \u201cCheck constraint solution\u201d on page 108.", "bbox": {"l": 136.80002, "t": 141.52752999999996, "r": 381.83194, "b": 150.74054, "coord_origin": "TOPLEFT"}}]}, "text": "DB2 for i also enhanced its check constraint support in the IBM i 7.2 release with a new ON UPDATE clause that allows the existing value to be preserved when a masked value is detected by a check constraint. Details about how to employ this new check constraint support can be found in 6.8.1, \u201cCheck constraint solution\u201d on page 108."}, {"label": "section_header", "id": 4, "page_no": 97, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.44256591796875, "t": 177.93212890625, "r": 385.58484, "b": 194.52586364746094, "coord_origin": "TOPLEFT"}, "confidence": 0.9684726595878601, "cells": [{"id": 10, "text": "5.4", "bbox": {"l": 64.800003, "t": 179.22069999999997, "r": 87.337959, "b": 193.9837, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "System CL commands considerations", "bbox": {"l": 91.845535, "t": 179.22069999999997, "r": 385.58484, "b": 193.9837, "coord_origin": "TOPLEFT"}}]}, "text": "5.4 System CL commands considerations"}, {"label": "text", "id": 5, "page_no": 97, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.84999084472656, "t": 210.4622344970703, "r": 547.48962, "b": 269.1277770996094, "coord_origin": "TOPLEFT"}, "confidence": 0.9875320792198181, "cells": [{"id": 12, "text": "As stated earlier, RCAC controls are enforced on all data access interfaces. This enforcement ", "bbox": {"l": 136.8, "t": 211.48870999999997, "r": 547.26038, "b": 220.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "is not limited to programmatic interfaces; it also includes system CL commands that read and ", "bbox": {"l": 136.8, "t": 223.48852999999997, "r": 547.17889, "b": 232.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "insert data, such as the Create Duplicate Object (", "bbox": {"l": 136.80002, "t": 235.48834, "r": 355.65302, "b": 244.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "CRTDUPOBJ", "bbox": {"l": 355.49969, "t": 235.63775999999996, "r": 400.43921, "b": 244.46234000000004, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ") and Start DFU (", "bbox": {"l": 400.49997, "t": 235.48834, "r": 476.93701, "b": 244.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "STRDFU", "bbox": {"l": 476.99976, "t": 235.63775999999996, "r": 506.9395099999999, "b": 244.46234000000004, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": ") CL ", "bbox": {"l": 506.9395099999999, "t": 235.48834, "r": 528.60651, "b": 244.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "commands. This section documents the behavior of the Create Duplicate Object (", "bbox": {"l": 136.79901, "t": 247.48816, "r": 493.72556, "b": 256.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "CRTDUPOBJ", "bbox": {"l": 493.61899, "t": 247.63756999999998, "r": 538.55853, "b": 256.46216000000004, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "), ", "bbox": {"l": 538.55853, "t": 247.48816, "r": 547.48962, "b": 256.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Copy File (", "bbox": {"l": 136.79904, "t": 259.48798, "r": 184.84109, "b": 268.70099000000005, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "CPYF", "bbox": {"l": 184.79927, "t": 259.63739, "r": 204.77904, "b": 268.46198000000004, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "), and Copy Library (", "bbox": {"l": 204.77904, "t": 259.48798, "r": 295.79846, "b": 268.70099000000005, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "CPYLIB", "bbox": {"l": 295.7995, "t": 259.63739, "r": 325.73926, "b": 268.46198000000004, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": ") CL commands with RCAC.", "bbox": {"l": 325.80002, "t": 259.48798, "r": 450.0838600000001, "b": 268.70099000000005, "coord_origin": "TOPLEFT"}}]}, "text": "As stated earlier, RCAC controls are enforced on all data access interfaces. This enforcement is not limited to programmatic interfaces; it also includes system CL commands that read and insert data, such as the Create Duplicate Object ( CRTDUPOBJ ) and Start DFU ( STRDFU ) CL commands. This section documents the behavior of the Create Duplicate Object ( CRTDUPOBJ ), Copy File ( CPYF ), and Copy Library ( CPYLIB ) CL commands with RCAC."}, {"label": "section_header", "id": 6, "page_no": 97, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 64.2880630493164, "t": 288.19952392578125, "r": 405.04672, "b": 301.8869323730469, "coord_origin": "TOPLEFT"}, "confidence": 0.9681828022003174, "cells": [{"id": 27, "text": "5.4.1", "bbox": {"l": 64.800003, "t": 289.37473, "r": 93.960258, "b": 301.36269999999996, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Create Duplicate Object (CRTDUPOBJ) command", "bbox": {"l": 97.605309, "t": 289.37473, "r": 405.04672, "b": 301.36269999999996, "coord_origin": "TOPLEFT"}}]}, "text": "5.4.1 Create Duplicate Object (CRTDUPOBJ) command"}, {"label": "text", "id": 7, "page_no": 97, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.64491271972656, "t": 314.66900634765625, "r": 542.97083, "b": 360.74115000000006, "coord_origin": "TOPLEFT"}, "confidence": 0.987525224685669, "cells": [{"id": 29, "text": "The ", "bbox": {"l": 136.8, "t": 315.52872, "r": 156.82855, "b": 324.7417, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CRTDUPOBJ", "bbox": {"l": 156.77977, "t": 315.67810000000003, "r": 201.77904, "b": 324.50269, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " command is enhanced with a new Access Control (", "bbox": {"l": 201.78004, "t": 315.52872, "r": 430.97162, "b": 324.7417, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "ACCCTL", "bbox": {"l": 430.97955, "t": 315.67810000000003, "r": 460.91931, "b": 324.50269, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": ") parameter in the ", "bbox": {"l": 460.97906, "t": 315.52872, "r": 542.51752, "b": 324.7417, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "IBM i 7.2 release to copy RCAC controls to the new object being created. Row permissions ", "bbox": {"l": 136.79901, "t": 327.52853, "r": 541.07751, "b": 336.74152, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "and column masks are copied to the new object by default because the default value for the ", "bbox": {"l": 136.79901, "t": 339.52835, "r": 542.97083, "b": 348.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "ACCCTL", "bbox": {"l": 136.799, "t": 351.67755, "r": 166.73875, "b": 360.50214000000005, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": " parameter is ", "bbox": {"l": 166.79852, "t": 351.52817, "r": 227.73976, "b": 360.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "*ALL", "bbox": {"l": 227.75870000000003, "t": 351.67755, "r": 247.73845, "b": 360.45233, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": ".", "bbox": {"l": 247.73846, "t": 351.52817, "r": 250.50734, "b": 360.74115000000006, "coord_origin": "TOPLEFT"}}]}, "text": "The CRTDUPOBJ command is enhanced with a new Access Control ( ACCCTL ) parameter in the IBM i 7.2 release to copy RCAC controls to the new object being created. Row permissions and column masks are copied to the new object by default because the default value for the ACCCTL parameter is *ALL ."}, {"label": "text", "id": 8, "page_no": 97, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.95484924316406, "t": 372.71258544921875, "r": 538.55847, "b": 406.70059000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9827100038528442, "cells": [{"id": 40, "text": "If the invoker of the ", "bbox": {"l": 136.798, "t": 373.48798, "r": 223.97386, "b": 382.70096, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "CRTDUPOBJ", "bbox": {"l": 223.91812, "t": 373.63735999999994, "r": 268.85764, "b": 382.46194, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": " command asks for data to be copied with a value of ", "bbox": {"l": 268.9184, "t": 373.48798, "r": 501.69666, "b": 382.70096, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "*YES", "bbox": {"l": 501.65869, "t": 373.63735999999994, "r": 521.63843, "b": 382.41214, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": " for ", "bbox": {"l": 521.69922, "t": 373.48798, "r": 538.55847, "b": 382.70096, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "the ", "bbox": {"l": 136.79901, "t": 385.48779, "r": 153.41228, "b": 394.70078, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "DATA", "bbox": {"l": 153.47902, "t": 385.63718, "r": 173.45877, "b": 394.46176, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": " parameter, the value of the ", "bbox": {"l": 173.45879, "t": 385.48779, "r": 297.59729, "b": 394.70078, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ACCCTL", "bbox": {"l": 297.59924, "t": 385.63718, "r": 327.59875, "b": 394.46176, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": " parameter must be ", "bbox": {"l": 327.59875, "t": 385.48779, "r": 416.82043, "b": 394.70078, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "*ALL", "bbox": {"l": 416.81845, "t": 385.63718, "r": 436.79819000000003, "b": 394.41195999999997, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": ". If not, the command ", "bbox": {"l": 436.79822, "t": 385.48779, "r": 533.45392, "b": 394.70078, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "invocation receives an error.", "bbox": {"l": 136.79803, "t": 397.48761, "r": 261.15759, "b": 406.70059000000003, "coord_origin": "TOPLEFT"}}]}, "text": "If the invoker of the CRTDUPOBJ command asks for data to be copied with a value of *YES for the DATA parameter, the value of the ACCCTL parameter must be *ALL . If not, the command invocation receives an error."}, {"label": "text", "id": 9, "page_no": 97, "cluster": {"id": 9, "label": "text", "bbox": {"l": 135.810791015625, "t": 418.80743408203125, "r": 547.21686, "b": 476.839599609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9882908463478088, "cells": [{"id": 53, "text": "When data is copied to the duplicated object with the ", "bbox": {"l": 136.79803, "t": 419.50717, "r": 370.7355, "b": 428.72015, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "DATA", "bbox": {"l": 370.67773, "t": 419.65656, "r": 390.59775, "b": 428.48114, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": " parameter, all rows and unmasked ", "bbox": {"l": 390.6575, "t": 419.50717, "r": 547.21686, "b": 428.72015, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "column values are copied into the new object, even if the command invoker is not authorized ", "bbox": {"l": 136.79701, "t": 431.50699, "r": 546.87817, "b": 440.71997, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "to view all rows or certain column values. This behavior occurs because the RCAC controls ", "bbox": {"l": 136.79701, "t": 443.50681, "r": 541.51062, "b": 452.71979, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "also are copied to the new object. The copied RCAC controls enforce that only authorized ", "bbox": {"l": 136.79701, "t": 455.50661999999994, "r": 535.04083, "b": 464.7196, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "users are allowed to view row and column values in the newly duplicated object.", "bbox": {"l": 136.79701, "t": 467.50644, "r": 489.0842599999999, "b": 476.71942, "coord_origin": "TOPLEFT"}}]}, "text": "When data is copied to the duplicated object with the DATA parameter, all rows and unmasked column values are copied into the new object, even if the command invoker is not authorized to view all rows or certain column values. This behavior occurs because the RCAC controls also are copied to the new object. The copied RCAC controls enforce that only authorized users are allowed to view row and column values in the newly duplicated object."}, {"label": "section_header", "id": 10, "page_no": 97, "cluster": {"id": 10, "label": "section_header", "bbox": {"l": 64.34564208984375, "t": 495.8337097167969, "r": 270.95599, "b": 509.7830810546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9675832390785217, "cells": [{"id": 60, "text": "5.4.2", "bbox": {"l": 64.800003, "t": 497.39474, "r": 94.162216, "b": 509.38272, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Copy File (CPYF) command", "bbox": {"l": 97.832489, "t": 497.39474, "r": 270.95599, "b": 509.38272, "coord_origin": "TOPLEFT"}}]}, "text": "5.4.2 Copy File (CPYF) command"}, {"label": "text", "id": 11, "page_no": 97, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.7013702392578, "t": 522.5596313476562, "r": 547.28552, "b": 557.3438110351562, "coord_origin": "TOPLEFT"}, "confidence": 0.9865304827690125, "cells": [{"id": 62, "text": "The ", "bbox": {"l": 136.8, "t": 523.54874, "r": 156.82855, "b": 532.76172, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "CPYF", "bbox": {"l": 156.60048, "t": 523.69812, "r": 176.58025, "b": 532.52271, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": " command copies only data, so there is no new parameter to copy RCAC controls to ", "bbox": {"l": 176.58025, "t": 523.54874, "r": 547.28552, "b": 532.76172, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "the target table. Therefore, if ", "bbox": {"l": 136.8, "t": 535.54852, "r": 263.37762, "b": 544.76154, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "CPYF", "bbox": {"l": 263.39957, "t": 535.69794, "r": 283.3793, "b": 544.5224900000001, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": " is used to create a target table, there are no RCAC controls ", "bbox": {"l": 283.37933, "t": 535.54852, "r": 547.23456, "b": 544.76154, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "placed on the target table.", "bbox": {"l": 136.79901, "t": 547.54834, "r": 252.06812, "b": 556.76134, "coord_origin": "TOPLEFT"}}]}, "text": "The CPYF command copies only data, so there is no new parameter to copy RCAC controls to the target table. Therefore, if CPYF is used to create a target table, there are no RCAC controls placed on the target table."}, {"label": "text", "id": 12, "page_no": 97, "cluster": {"id": 12, "label": "text", "bbox": {"l": 135.7746124267578, "t": 568.5869750976562, "r": 547.32733, "b": 662.71976, "coord_origin": "TOPLEFT"}, "confidence": 0.9887324571609497, "cells": [{"id": 69, "text": "When RCAC controls are in place on the source table, the ", "bbox": {"l": 136.79901, "t": 569.50815, "r": 391.27509, "b": 578.72115, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "CPYF", "bbox": {"l": 391.25909, "t": 569.65755, "r": 411.23883, "b": 578.4821000000001, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": " command is limited to reading ", "bbox": {"l": 411.23886, "t": 569.50815, "r": 547.17792, "b": 578.72115, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "rows and column values that are based on the invoker of the ", "bbox": {"l": 136.79904, "t": 581.5079499999999, "r": 405.7749, "b": 590.72095, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "CPYF", "bbox": {"l": 405.71906, "t": 581.65735, "r": 425.69882, "b": 590.4819, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": " command. If a user is ", "bbox": {"l": 425.75858, "t": 581.5079499999999, "r": 526.83667, "b": 590.72095, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "authorized to see all rows and column values, then all rows and unmasked column values are ", "bbox": {"l": 136.79907, "t": 593.50775, "r": 547.32733, "b": 602.72075, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "copied to the target table (assuming no RCAC controls are on the target table). If a user ", "bbox": {"l": 136.79907, "t": 605.50755, "r": 526.13843, "b": 614.72055, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "without full access runs the ", "bbox": {"l": 136.79907, "t": 617.50735, "r": 258.86984, "b": 626.72035, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "CPYF", "bbox": {"l": 258.89871, "t": 617.65675, "r": 278.87845, "b": 626.48131, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": " command, the ", "bbox": {"l": 278.87848, "t": 617.50735, "r": 347.34949, "b": 626.72035, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "CPYF", "bbox": {"l": 347.27878, "t": 617.65675, "r": 367.25854, "b": 626.48131, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": " command can copy only a subset of the ", "bbox": {"l": 367.25854, "t": 617.50735, "r": 547.17291, "b": 626.72035, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "rows into the target table. In addition, if that user can view only masked column values, then ", "bbox": {"l": 136.7981, "t": 629.50716, "r": 543.80835, "b": 638.72015, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "masked values are copied into the target table. This also applies to the Copy to Import File ", "bbox": {"l": 136.7981, "t": 641.5069599999999, "r": 538.44824, "b": 650.71996, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "(", "bbox": {"l": 136.7981, "t": 653.50676, "r": 140.11478, "b": 662.71976, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "CPYTOIMPF", "bbox": {"l": 140.09784, "t": 653.65616, "r": 185.09709, "b": 662.48071, "coord_origin": "TOPLEFT"}}, {"id": 86, "text": ") command.", "bbox": {"l": 185.09811, "t": 653.50676, "r": 237.83435000000003, "b": 662.71976, "coord_origin": "TOPLEFT"}}]}, "text": "When RCAC controls are in place on the source table, the CPYF command is limited to reading rows and column values that are based on the invoker of the CPYF command. If a user is authorized to see all rows and column values, then all rows and unmasked column values are copied to the target table (assuming no RCAC controls are on the target table). If a user without full access runs the CPYF command, the CPYF command can copy only a subset of the rows into the target table. In addition, if that user can view only masked column values, then masked values are copied into the target table. This also applies to the Copy to Import File ( CPYTOIMPF ) command."}, {"label": "text", "id": 13, "page_no": 97, "cluster": {"id": 13, "label": "text", "bbox": {"l": 136.0672149658203, "t": 674.6004638671875, "r": 535.8108520507812, "b": 720.9636840820312, "coord_origin": "TOPLEFT"}, "confidence": 0.9881445169448853, "cells": [{"id": 87, "text": "If the target table has RCAC controls defined and activated, then the ", "bbox": {"l": 136.7981, "t": 675.52632, "r": 441.13778999999994, "b": 684.73933, "coord_origin": "TOPLEFT"}}, {"id": 88, "text": "CPYF", "bbox": {"l": 441.05816999999996, "t": 675.67573, "r": 461.0379, "b": 684.50028, "coord_origin": "TOPLEFT"}}, {"id": 89, "text": " command is ", "bbox": {"l": 461.03792999999996, "t": 675.52632, "r": 520.46222, "b": 684.73933, "coord_origin": "TOPLEFT"}}, {"id": 90, "text": "allowed only to add or replace rows in the target table based on the RCAC controls. If ", "bbox": {"l": 136.7981, "t": 687.52613, "r": 515.72437, "b": 696.739136, "coord_origin": "TOPLEFT"}}, {"id": 91, "text": "CPYF", "bbox": {"l": 515.75818, "t": 687.67554, "r": 535.73792, "b": 696.500092, "coord_origin": "TOPLEFT"}}, {"id": 92, "text": "tries to add a row to the target table that the command invoker is not allowed to view ", "bbox": {"l": 136.7981, "t": 699.52594, "r": 510.53024, "b": 708.738945, "coord_origin": "TOPLEFT"}}, {"id": 93, "text": "according to the target RCAC controls, then an error is received.", "bbox": {"l": 136.7981, "t": 711.525749, "r": 420.63605, "b": 720.738754, "coord_origin": "TOPLEFT"}}]}, "text": "If the target table has RCAC controls defined and activated, then the CPYF command is allowed only to add or replace rows in the target table based on the RCAC controls. If CPYF tries to add a row to the target table that the command invoker is not allowed to view according to the target RCAC controls, then an error is received."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 97, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.22566223144531, "t": 754.41650390625, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9210326671600342, "cells": [{"id": 0, "text": "82 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "82"}, {"label": "page_footer", "id": 1, "page_no": 97, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.18901824951172, "t": 754.7184448242188, "r": 334.42142, "b": 763.9121704101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9529549479484558, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 98, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 5. RCAC and non-SQL interfaces ", "bbox": {"l": 354.29999, "t": 755.538002, "r": 523.63324, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "83", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "5.4.3", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 94.102646, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Copy Library (CPYLIB) command", "bbox": {"l": 97.765472, "t": 71.33471999999995, "r": 305.67719, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "The ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 156.82855, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "CPYLIB", "bbox": {"l": 156.77977, "t": 97.63812000000007, "r": 186.77928, "b": 106.46271000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": " command is enhanced with the same Access Control (", "bbox": {"l": 186.7793, "t": 97.48870999999997, "r": 430.68668, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ACCCTL", "bbox": {"l": 430.61902, "t": 97.63812000000007, "r": 460.61852999999996, "b": 106.46271000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": ") parameter as the ", "bbox": {"l": 460.61954, "t": 97.48870999999997, "r": 544.97375, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CRTDUPOBJ", "bbox": {"l": 136.79901, "t": 109.63793999999996, "r": 181.73853, "b": 118.46252000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": " command in the IBM i 7.2 release (see 5.4.1, \u201cCreate Duplicate Object ", "bbox": {"l": 181.79929, "t": 109.48852999999997, "r": 498.45456, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "(CRTDUPOBJ) command\u201d on page 82). Row permissions and column masks are copied to ", "bbox": {"l": 136.79901, "t": 121.48834000000011, "r": 541.4729, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "the new object in the new library by default because the default value for the ", "bbox": {"l": 136.79903, "t": 133.48816, "r": 474.6371500000001, "b": 142.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "ACCCTL", "bbox": {"l": 474.71892999999994, "t": 133.63756999999998, "r": 504.65869, "b": 142.46216000000004, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "parameter is ", "bbox": {"l": 136.79904, "t": 145.48798, "r": 195.04218, "b": 154.70099000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "*ALL", "bbox": {"l": 194.9993, "t": 145.63738999999998, "r": 214.97905999999998, "b": 154.41216999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ". ", "bbox": {"l": 214.97905999999998, "t": 145.48798, "r": 220.61841999999996, "b": 154.70099000000005, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 353.7088317871094, "t": 754.8579711914062, "r": 523.63324, "b": 764.1048583984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9495401382446289, "cells": [{"id": 0, "text": "Chapter 5. RCAC and non-SQL interfaces ", "bbox": {"l": 354.29999, "t": 755.538002, "r": 523.63324, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.67578125, "t": 754.3722534179688, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9193902611732483, "cells": [{"id": 1, "text": "83", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.39531707763672, "t": 70.02782440185547, "r": 305.67719, "b": 83.7774429321289, "coord_origin": "TOPLEFT"}, "confidence": 0.968555748462677, "cells": [{"id": 2, "text": "5.4.3", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 94.102646, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Copy Library (CPYLIB) command", "bbox": {"l": 97.765472, "t": 71.33471999999995, "r": 305.67719, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.95230102539062, "t": 96.7219467163086, "r": 544.97375, "b": 154.70099000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9855459928512573, "cells": [{"id": 4, "text": "The ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 156.82855, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "CPYLIB", "bbox": {"l": 156.77977, "t": 97.63812000000007, "r": 186.77928, "b": 106.46271000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": " command is enhanced with the same Access Control (", "bbox": {"l": 186.7793, "t": 97.48870999999997, "r": 430.68668, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ACCCTL", "bbox": {"l": 430.61902, "t": 97.63812000000007, "r": 460.61852999999996, "b": 106.46271000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": ") parameter as the ", "bbox": {"l": 460.61954, "t": 97.48870999999997, "r": 544.97375, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CRTDUPOBJ", "bbox": {"l": 136.79901, "t": 109.63793999999996, "r": 181.73853, "b": 118.46252000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": " command in the IBM i 7.2 release (see 5.4.1, \u201cCreate Duplicate Object ", "bbox": {"l": 181.79929, "t": 109.48852999999997, "r": 498.45456, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "(CRTDUPOBJ) command\u201d on page 82). Row permissions and column masks are copied to ", "bbox": {"l": 136.79901, "t": 121.48834000000011, "r": 541.4729, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "the new object in the new library by default because the default value for the ", "bbox": {"l": 136.79903, "t": 133.48816, "r": 474.6371500000001, "b": 142.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "ACCCTL", "bbox": {"l": 474.71892999999994, "t": 133.63756999999998, "r": 504.65869, "b": 142.46216000000004, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "parameter is ", "bbox": {"l": 136.79904, "t": 145.48798, "r": 195.04218, "b": 154.70099000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "*ALL", "bbox": {"l": 194.9993, "t": 145.63738999999998, "r": 214.97905999999998, "b": 154.41216999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ". ", "bbox": {"l": 214.97905999999998, "t": 145.48798, "r": 220.61841999999996, "b": 154.70099000000005, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 98, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 353.7088317871094, "t": 754.8579711914062, "r": 523.63324, "b": 764.1048583984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9495401382446289, "cells": [{"id": 0, "text": "Chapter 5. RCAC and non-SQL interfaces ", "bbox": {"l": 354.29999, "t": 755.538002, "r": 523.63324, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 5. RCAC and non-SQL interfaces"}, {"label": "page_footer", "id": 1, "page_no": 98, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.67578125, "t": 754.3722534179688, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9193902611732483, "cells": [{"id": 1, "text": "83", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "83"}, {"label": "section_header", "id": 2, "page_no": 98, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.39531707763672, "t": 70.02782440185547, "r": 305.67719, "b": 83.7774429321289, "coord_origin": "TOPLEFT"}, "confidence": 0.968555748462677, "cells": [{"id": 2, "text": "5.4.3", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 94.102646, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Copy Library (CPYLIB) command", "bbox": {"l": 97.765472, "t": 71.33471999999995, "r": 305.67719, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "5.4.3 Copy Library (CPYLIB) command"}, {"label": "text", "id": 3, "page_no": 98, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.95230102539062, "t": 96.7219467163086, "r": 544.97375, "b": 154.70099000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9855459928512573, "cells": [{"id": 4, "text": "The ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 156.82855, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "CPYLIB", "bbox": {"l": 156.77977, "t": 97.63812000000007, "r": 186.77928, "b": 106.46271000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": " command is enhanced with the same Access Control (", "bbox": {"l": 186.7793, "t": 97.48870999999997, "r": 430.68668, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ACCCTL", "bbox": {"l": 430.61902, "t": 97.63812000000007, "r": 460.61852999999996, "b": 106.46271000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": ") parameter as the ", "bbox": {"l": 460.61954, "t": 97.48870999999997, "r": 544.97375, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CRTDUPOBJ", "bbox": {"l": 136.79901, "t": 109.63793999999996, "r": 181.73853, "b": 118.46252000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": " command in the IBM i 7.2 release (see 5.4.1, \u201cCreate Duplicate Object ", "bbox": {"l": 181.79929, "t": 109.48852999999997, "r": 498.45456, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "(CRTDUPOBJ) command\u201d on page 82). Row permissions and column masks are copied to ", "bbox": {"l": 136.79901, "t": 121.48834000000011, "r": 541.4729, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "the new object in the new library by default because the default value for the ", "bbox": {"l": 136.79903, "t": 133.48816, "r": 474.6371500000001, "b": 142.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "ACCCTL", "bbox": {"l": 474.71892999999994, "t": 133.63756999999998, "r": 504.65869, "b": 142.46216000000004, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "parameter is ", "bbox": {"l": 136.79904, "t": 145.48798, "r": 195.04218, "b": 154.70099000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "*ALL", "bbox": {"l": 194.9993, "t": 145.63738999999998, "r": 214.97905999999998, "b": 154.41216999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ". ", "bbox": {"l": 214.97905999999998, "t": 145.48798, "r": 220.61841999999996, "b": 154.70099000000005, "coord_origin": "TOPLEFT"}}]}, "text": "The CPYLIB command is enhanced with the same Access Control ( ACCCTL ) parameter as the CRTDUPOBJ command in the IBM i 7.2 release (see 5.4.1, \u201cCreate Duplicate Object (CRTDUPOBJ) command\u201d on page 82). Row permissions and column masks are copied to the new object in the new library by default because the default value for the ACCCTL parameter is *ALL ."}], "body": [{"label": "section_header", "id": 2, "page_no": 98, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.39531707763672, "t": 70.02782440185547, "r": 305.67719, "b": 83.7774429321289, "coord_origin": "TOPLEFT"}, "confidence": 0.968555748462677, "cells": [{"id": 2, "text": "5.4.3", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 94.102646, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Copy Library (CPYLIB) command", "bbox": {"l": 97.765472, "t": 71.33471999999995, "r": 305.67719, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "5.4.3 Copy Library (CPYLIB) command"}, {"label": "text", "id": 3, "page_no": 98, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.95230102539062, "t": 96.7219467163086, "r": 544.97375, "b": 154.70099000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9855459928512573, "cells": [{"id": 4, "text": "The ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 156.82855, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "CPYLIB", "bbox": {"l": 156.77977, "t": 97.63812000000007, "r": 186.77928, "b": 106.46271000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": " command is enhanced with the same Access Control (", "bbox": {"l": 186.7793, "t": 97.48870999999997, "r": 430.68668, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ACCCTL", "bbox": {"l": 430.61902, "t": 97.63812000000007, "r": 460.61852999999996, "b": 106.46271000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": ") parameter as the ", "bbox": {"l": 460.61954, "t": 97.48870999999997, "r": 544.97375, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CRTDUPOBJ", "bbox": {"l": 136.79901, "t": 109.63793999999996, "r": 181.73853, "b": 118.46252000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": " command in the IBM i 7.2 release (see 5.4.1, \u201cCreate Duplicate Object ", "bbox": {"l": 181.79929, "t": 109.48852999999997, "r": 498.45456, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "(CRTDUPOBJ) command\u201d on page 82). Row permissions and column masks are copied to ", "bbox": {"l": 136.79901, "t": 121.48834000000011, "r": 541.4729, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "the new object in the new library by default because the default value for the ", "bbox": {"l": 136.79903, "t": 133.48816, "r": 474.6371500000001, "b": 142.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "ACCCTL", "bbox": {"l": 474.71892999999994, "t": 133.63756999999998, "r": 504.65869, "b": 142.46216000000004, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "parameter is ", "bbox": {"l": 136.79904, "t": 145.48798, "r": 195.04218, "b": 154.70099000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "*ALL", "bbox": {"l": 194.9993, "t": 145.63738999999998, "r": 214.97905999999998, "b": 154.41216999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ". ", "bbox": {"l": 214.97905999999998, "t": 145.48798, "r": 220.61841999999996, "b": 154.70099000000005, "coord_origin": "TOPLEFT"}}]}, "text": "The CPYLIB command is enhanced with the same Access Control ( ACCCTL ) parameter as the CRTDUPOBJ command in the IBM i 7.2 release (see 5.4.1, \u201cCreate Duplicate Object (CRTDUPOBJ) command\u201d on page 82). Row permissions and column masks are copied to the new object in the new library by default because the default value for the ACCCTL parameter is *ALL ."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 98, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 353.7088317871094, "t": 754.8579711914062, "r": 523.63324, "b": 764.1048583984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9495401382446289, "cells": [{"id": 0, "text": "Chapter 5. RCAC and non-SQL interfaces ", "bbox": {"l": 354.29999, "t": 755.538002, "r": 523.63324, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 5. RCAC and non-SQL interfaces"}, {"label": "page_footer", "id": 1, "page_no": 98, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.67578125, "t": 754.3722534179688, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9193902611732483, "cells": [{"id": 1, "text": "83", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "83"}]}}, {"page_no": 99, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "84 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.472412109375, "t": 754.2569580078125, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9049738645553589, "cells": [{"id": 0, "text": "84 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.35282135009766, "t": 754.5419311523438, "r": 334.50579833984375, "b": 764.05126953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9411050081253052, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 99, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.472412109375, "t": 754.2569580078125, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9049738645553589, "cells": [{"id": 0, "text": "84 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "84"}, {"label": "page_footer", "id": 1, "page_no": 99, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.35282135009766, "t": 754.5419311523438, "r": 334.50579833984375, "b": 764.05126953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9411050081253052, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}], "body": [], "headers": [{"label": "page_footer", "id": 0, "page_no": 99, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.472412109375, "t": 754.2569580078125, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9049738645553589, "cells": [{"id": 0, "text": "84 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "84"}, {"label": "page_footer", "id": 1, "page_no": 99, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.35282135009766, "t": 754.5419311523438, "r": 334.50579833984375, "b": 764.05126953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9411050081253052, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 100, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "85", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Chapter 6.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Additional considerations", "bbox": {"l": 136.8, "t": 254.88635, "r": 455.59796, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "This chapter covers additional considerations that must be taken into account when ", "bbox": {"l": 136.8, "t": 317.68872, "r": 507.11765, "b": 326.90170000000006, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "implementing Row and Column Access Control (RCAC), including the following functions:", "bbox": {"l": 136.8, "t": 329.68854, "r": 531.34546, "b": 338.90152, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 346.8775, "r": 141.78, "b": 355.65228, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Timing of column masking", "bbox": {"l": 151.20016, "t": 346.72812, "r": 267.31885, "b": 355.94110000000006, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "GLYPH", "bbox": {"l": 136.8, "t": 358.87731999999994, "r": 141.78, "b": 367.6521, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Data movement", "bbox": {"l": 151.20016, "t": 358.72794, "r": 221.34749999999997, "b": 367.94092, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "GLYPH", "bbox": {"l": 136.8, "t": 370.87714000000005, "r": 141.78, "b": 379.65191999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Joins", "bbox": {"l": 151.20016, "t": 370.72775, "r": 174.48665, "b": 379.94073, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "GLYPH", "bbox": {"l": 136.8, "t": 382.87695, "r": 141.78, "b": 391.65173, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Views", "bbox": {"l": 151.20016, "t": 382.72757, "r": 177.67285, "b": 391.94055000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "GLYPH", "bbox": {"l": 136.8, "t": 394.87677, "r": 141.78, "b": 403.65155, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Materialized query tables", "bbox": {"l": 151.20016, "t": 394.72739, "r": 262.43051, "b": 403.94037, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "GLYPH", "bbox": {"l": 136.8, "t": 406.87659, "r": 141.78, "b": 415.65136999999993, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Index advisor", "bbox": {"l": 151.20016, "t": 406.7272, "r": 210.29085, "b": 415.94019, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "GLYPH", "bbox": {"l": 136.8, "t": 418.8764, "r": 141.78, "b": 427.65118, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Monitoring, analysis, and debugging", "bbox": {"l": 151.20016, "t": 418.72702, "r": 310.97345, "b": 427.94, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "GLYPH", "bbox": {"l": 136.8, "t": 430.87622, "r": 141.78, "b": 439.651, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Performance and scalability", "bbox": {"l": 151.20016, "t": 430.72684, "r": 273.34265, "b": 439.93981999999994, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "The following topics are covered in this chapter:", "bbox": {"l": 136.8, "t": 452.68665, "r": 347.41214, "b": 461.89963, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "GLYPH", "bbox": {"l": 136.8, "t": 469.87561, "r": 141.78, "b": 478.65039, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Timing of column masking", "bbox": {"l": 151.20016, "t": 469.72623, "r": 267.31885, "b": 478.93921, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "GLYPH", "bbox": {"l": 136.8, "t": 481.87543, "r": 141.78, "b": 490.65021, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "RCAC effects on data movement", "bbox": {"l": 151.20016, "t": 481.72604, "r": 296.34232, "b": 490.93903, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "GLYPH", "bbox": {"l": 136.8, "t": 493.87524, "r": 141.78, "b": 502.65002, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "RCAC effects on joins", "bbox": {"l": 151.20016, "t": 493.72586, "r": 248.37093, "b": 502.93884, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "GLYPH", "bbox": {"l": 136.8, "t": 505.87506, "r": 141.78, "b": 514.64984, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Monitoring, analyzing, and debugging with RCAC", "bbox": {"l": 151.20016, "t": 505.72568, "r": 368.62, "b": 514.93866, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "GLYPH", "bbox": {"l": 136.8, "t": 517.8748800000001, "r": 141.78, "b": 526.64966, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Views, materialized query tables, and query rewrite with RCAC", "bbox": {"l": 151.20016, "t": 517.72549, "r": 428.50857999999994, "b": 526.93848, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "GLYPH", "bbox": {"l": 136.8, "t": 529.87469, "r": 141.78, "b": 538.64944, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "RCAC effects on performance and scalability", "bbox": {"l": 151.20016, "t": 529.72528, "r": 349.38428, "b": 538.93829, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "GLYPH", "bbox": {"l": 136.8, "t": 541.8745, "r": 141.78, "b": 550.6492499999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Exclusive lock to implement RCAC (availability issues)", "bbox": {"l": 151.20016, "t": 541.7251, "r": 390.44034, "b": 550.9381, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 553.8743, "r": 141.77998, "b": 562.64905, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Avoiding propagation of masked data", "bbox": {"l": 151.20015, "t": 553.7249, "r": 315.37079, "b": 562.9379, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 565.8741, "r": 141.77998, "b": 574.64885, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Triggers and functions (SECURED)", "bbox": {"l": 151.20015, "t": 565.7247, "r": 307.30423, "b": 574.9377, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 577.8739, "r": 141.77998, "b": 586.64865, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "RCAC is only one part of the solution", "bbox": {"l": 151.20015, "t": 577.7245, "r": 315.14774, "b": 586.9375, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "6", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.789581298828125, "t": 754.7017822265625, "r": 257.24335, "b": 764.1205444335938, "coord_origin": "TOPLEFT"}, "confidence": 0.9495893716812134, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.6629028320312, "t": 754.3357543945312, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.917849063873291, "cells": [{"id": 1, "text": "85", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 6.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "section_header", "bbox": {"l": 136.34396362304688, "t": 253.19119262695312, "r": 455.59796, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9567626714706421, "cells": [{"id": 3, "text": "Additional considerations", "bbox": {"l": 136.8, "t": 254.88635, "r": 455.59796, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.87008666992188, "t": 316.7393493652344, "r": 531.34546, "b": 339.10498046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9598965644836426, "cells": [{"id": 4, "text": "This chapter covers additional considerations that must be taken into account when ", "bbox": {"l": 136.8, "t": 317.68872, "r": 507.11765, "b": 326.90170000000006, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "implementing Row and Column Access Control (RCAC), including the following functions:", "bbox": {"l": 136.8, "t": 329.68854, "r": 531.34546, "b": 338.90152, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 135.8069610595703, "t": 346.03759765625, "r": 267.31885, "b": 356.3053283691406, "coord_origin": "TOPLEFT"}, "confidence": 0.9453163743019104, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 346.8775, "r": 141.78, "b": 355.65228, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Timing of column masking", "bbox": {"l": 151.20016, "t": 346.72812, "r": 267.31885, "b": 355.94110000000006, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.6639404296875, "t": 358.057373046875, "r": 221.46388244628906, "b": 367.94092, "coord_origin": "TOPLEFT"}, "confidence": 0.9263733625411987, "cells": [{"id": 8, "text": "GLYPH", "bbox": {"l": 136.8, "t": 358.87731999999994, "r": 141.78, "b": 367.6521, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Data movement", "bbox": {"l": 151.20016, "t": 358.72794, "r": 221.34749999999997, "b": 367.94092, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.80430603027344, "t": 370.3742370605469, "r": 174.48665, "b": 379.94073, "coord_origin": "TOPLEFT"}, "confidence": 0.909616231918335, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.8, "t": 370.87714000000005, "r": 141.78, "b": 379.65191999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Joins", "bbox": {"l": 151.20016, "t": 370.72775, "r": 174.48665, "b": 379.94073, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.77816772460938, "t": 382.2833251953125, "r": 177.67285, "b": 391.94055000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9085867404937744, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.8, "t": 382.87695, "r": 141.78, "b": 391.65173, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Views", "bbox": {"l": 151.20016, "t": 382.72757, "r": 177.67285, "b": 391.94055000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.9530487060547, "t": 394.1155090332031, "r": 262.43051, "b": 404.1868896484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9477983713150024, "cells": [{"id": 14, "text": "GLYPH", "bbox": {"l": 136.8, "t": 394.87677, "r": 141.78, "b": 403.65155, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Materialized query tables", "bbox": {"l": 151.20016, "t": 394.72739, "r": 262.43051, "b": 403.94037, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 135.72091674804688, "t": 406.3046569824219, "r": 210.3322296142578, "b": 415.94019, "coord_origin": "TOPLEFT"}, "confidence": 0.9171162247657776, "cells": [{"id": 16, "text": "GLYPH", "bbox": {"l": 136.8, "t": 406.87659, "r": 141.78, "b": 415.65136999999993, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Index advisor", "bbox": {"l": 151.20016, "t": 406.7272, "r": 210.29085, "b": 415.94019, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 135.53468322753906, "t": 418.32232666015625, "r": 310.97345, "b": 428.54669189453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9497132301330566, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.8, "t": 418.8764, "r": 141.78, "b": 427.65118, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Monitoring, analysis, and debugging", "bbox": {"l": 151.20016, "t": 418.72702, "r": 310.97345, "b": 427.94, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "list_item", "bbox": {"l": 135.64329528808594, "t": 429.8523864746094, "r": 273.34265, "b": 440.3828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9438368082046509, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.8, "t": 430.87622, "r": 141.78, "b": 439.651, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Performance and scalability", "bbox": {"l": 151.20016, "t": 430.72684, "r": 273.34265, "b": 439.93981999999994, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 136.005859375, "t": 451.9608154296875, "r": 347.41214, "b": 462.3204650878906, "coord_origin": "TOPLEFT"}, "confidence": 0.875919759273529, "cells": [{"id": 22, "text": "The following topics are covered in this chapter:", "bbox": {"l": 136.8, "t": 452.68665, "r": 347.41214, "b": 461.89963, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "list_item", "bbox": {"l": 135.94393920898438, "t": 468.6572265625, "r": 267.31885, "b": 479.11810302734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9442504644393921, "cells": [{"id": 23, "text": "GLYPH", "bbox": {"l": 136.8, "t": 469.87561, "r": 141.78, "b": 478.65039, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Timing of column masking", "bbox": {"l": 151.20016, "t": 469.72623, "r": 267.31885, "b": 478.93921, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "list_item", "bbox": {"l": 135.8094024658203, "t": 480.9632568359375, "r": 296.34232, "b": 490.93903, "coord_origin": "TOPLEFT"}, "confidence": 0.9341280460357666, "cells": [{"id": 25, "text": "GLYPH", "bbox": {"l": 136.8, "t": 481.87543, "r": 141.78, "b": 490.65021, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "RCAC effects on data movement", "bbox": {"l": 151.20016, "t": 481.72604, "r": 296.34232, "b": 490.93903, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "list_item", "bbox": {"l": 135.80313110351562, "t": 492.80511474609375, "r": 248.5316162109375, "b": 502.96875, "coord_origin": "TOPLEFT"}, "confidence": 0.9282206892967224, "cells": [{"id": 27, "text": "GLYPH", "bbox": {"l": 136.8, "t": 493.87524, "r": 141.78, "b": 502.65002, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "RCAC effects on joins", "bbox": {"l": 151.20016, "t": 493.72586, "r": 248.37093, "b": 502.93884, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "list_item", "bbox": {"l": 135.69058227539062, "t": 504.4717712402344, "r": 368.62, "b": 515.00390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9455210566520691, "cells": [{"id": 29, "text": "GLYPH", "bbox": {"l": 136.8, "t": 505.87506, "r": 141.78, "b": 514.64984, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Monitoring, analyzing, and debugging with RCAC", "bbox": {"l": 151.20016, "t": 505.72568, "r": 368.62, "b": 514.93866, "coord_origin": "TOPLEFT"}}]}, {"id": 18, "label": "list_item", "bbox": {"l": 135.53225708007812, "t": 516.2424926757812, "r": 428.50857999999994, "b": 526.93848, "coord_origin": "TOPLEFT"}, "confidence": 0.9446545243263245, "cells": [{"id": 31, "text": "GLYPH", "bbox": {"l": 136.8, "t": 517.8748800000001, "r": 141.78, "b": 526.64966, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Views, materialized query tables, and query rewrite with RCAC", "bbox": {"l": 151.20016, "t": 517.72549, "r": 428.50857999999994, "b": 526.93848, "coord_origin": "TOPLEFT"}}]}, {"id": 19, "label": "list_item", "bbox": {"l": 135.63209533691406, "t": 528.7277221679688, "r": 349.38428, "b": 539.08544921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9345404505729675, "cells": [{"id": 33, "text": "GLYPH", "bbox": {"l": 136.8, "t": 529.87469, "r": 141.78, "b": 538.64944, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "RCAC effects on performance and scalability", "bbox": {"l": 151.20016, "t": 529.72528, "r": 349.38428, "b": 538.93829, "coord_origin": "TOPLEFT"}}]}, {"id": 20, "label": "list_item", "bbox": {"l": 135.68804931640625, "t": 540.8400268554688, "r": 390.44034, "b": 551.35888671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9479876160621643, "cells": [{"id": 35, "text": "GLYPH", "bbox": {"l": 136.8, "t": 541.8745, "r": 141.78, "b": 550.6492499999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Exclusive lock to implement RCAC (availability issues)", "bbox": {"l": 151.20016, "t": 541.7251, "r": 390.44034, "b": 550.9381, "coord_origin": "TOPLEFT"}}]}, {"id": 21, "label": "list_item", "bbox": {"l": 135.8003692626953, "t": 552.6859741210938, "r": 315.37079, "b": 563.0116577148438, "coord_origin": "TOPLEFT"}, "confidence": 0.9349662661552429, "cells": [{"id": 37, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 553.8743, "r": 141.77998, "b": 562.64905, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Avoiding propagation of masked data", "bbox": {"l": 151.20015, "t": 553.7249, "r": 315.37079, "b": 562.9379, "coord_origin": "TOPLEFT"}}]}, {"id": 22, "label": "list_item", "bbox": {"l": 135.62815856933594, "t": 564.294189453125, "r": 307.30423, "b": 574.9377, "coord_origin": "TOPLEFT"}, "confidence": 0.9371550679206848, "cells": [{"id": 39, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 565.8741, "r": 141.77998, "b": 574.64885, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Triggers and functions (SECURED)", "bbox": {"l": 151.20015, "t": 565.7247, "r": 307.30423, "b": 574.9377, "coord_origin": "TOPLEFT"}}]}, {"id": 23, "label": "list_item", "bbox": {"l": 135.61077880859375, "t": 576.708740234375, "r": 315.14774, "b": 587.1307983398438, "coord_origin": "TOPLEFT"}, "confidence": 0.9537895917892456, "cells": [{"id": 41, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 577.8739, "r": 141.77998, "b": 586.64865, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "RCAC is only one part of the solution", "bbox": {"l": 151.20015, "t": 577.7245, "r": 315.14774, "b": 586.9375, "coord_origin": "TOPLEFT"}}]}, {"id": 24, "label": "text", "bbox": {"l": 500.39999, "t": 93.05345916748047, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.7402352690696716, "cells": [{"id": 43, "text": "6", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, {"id": 25, "label": "picture", "bbox": {"l": 32.03302764892578, "t": 70.35401916503906, "r": 238.4545135498047, "b": 238.00796508789062, "coord_origin": "TOPLEFT"}, "confidence": 0.6230185627937317, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 100, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.789581298828125, "t": 754.7017822265625, "r": 257.24335, "b": 764.1205444335938, "coord_origin": "TOPLEFT"}, "confidence": 0.9495893716812134, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 100, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6629028320312, "t": 754.3357543945312, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.917849063873291, "cells": [{"id": 1, "text": "85", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "85"}, {"label": "text", "id": 2, "page_no": 100, "cluster": {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 6.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6."}, {"label": "section_header", "id": 3, "page_no": 100, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 136.34396362304688, "t": 253.19119262695312, "r": 455.59796, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9567626714706421, "cells": [{"id": 3, "text": "Additional considerations", "bbox": {"l": 136.8, "t": 254.88635, "r": 455.59796, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Additional considerations"}, {"label": "text", "id": 4, "page_no": 100, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.87008666992188, "t": 316.7393493652344, "r": 531.34546, "b": 339.10498046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9598965644836426, "cells": [{"id": 4, "text": "This chapter covers additional considerations that must be taken into account when ", "bbox": {"l": 136.8, "t": 317.68872, "r": 507.11765, "b": 326.90170000000006, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "implementing Row and Column Access Control (RCAC), including the following functions:", "bbox": {"l": 136.8, "t": 329.68854, "r": 531.34546, "b": 338.90152, "coord_origin": "TOPLEFT"}}]}, "text": "This chapter covers additional considerations that must be taken into account when implementing Row and Column Access Control (RCAC), including the following functions:"}, {"label": "list_item", "id": 5, "page_no": 100, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.8069610595703, "t": 346.03759765625, "r": 267.31885, "b": 356.3053283691406, "coord_origin": "TOPLEFT"}, "confidence": 0.9453163743019104, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 346.8775, "r": 141.78, "b": 355.65228, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Timing of column masking", "bbox": {"l": 151.20016, "t": 346.72812, "r": 267.31885, "b": 355.94110000000006, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Timing of column masking"}, {"label": "list_item", "id": 6, "page_no": 100, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.6639404296875, "t": 358.057373046875, "r": 221.46388244628906, "b": 367.94092, "coord_origin": "TOPLEFT"}, "confidence": 0.9263733625411987, "cells": [{"id": 8, "text": "GLYPH", "bbox": {"l": 136.8, "t": 358.87731999999994, "r": 141.78, "b": 367.6521, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Data movement", "bbox": {"l": 151.20016, "t": 358.72794, "r": 221.34749999999997, "b": 367.94092, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Data movement"}, {"label": "list_item", "id": 7, "page_no": 100, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.80430603027344, "t": 370.3742370605469, "r": 174.48665, "b": 379.94073, "coord_origin": "TOPLEFT"}, "confidence": 0.909616231918335, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.8, "t": 370.87714000000005, "r": 141.78, "b": 379.65191999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Joins", "bbox": {"l": 151.20016, "t": 370.72775, "r": 174.48665, "b": 379.94073, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Joins"}, {"label": "list_item", "id": 8, "page_no": 100, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.77816772460938, "t": 382.2833251953125, "r": 177.67285, "b": 391.94055000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9085867404937744, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.8, "t": 382.87695, "r": 141.78, "b": 391.65173, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Views", "bbox": {"l": 151.20016, "t": 382.72757, "r": 177.67285, "b": 391.94055000000003, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Views"}, {"label": "list_item", "id": 9, "page_no": 100, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.9530487060547, "t": 394.1155090332031, "r": 262.43051, "b": 404.1868896484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9477983713150024, "cells": [{"id": 14, "text": "GLYPH", "bbox": {"l": 136.8, "t": 394.87677, "r": 141.78, "b": 403.65155, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Materialized query tables", "bbox": {"l": 151.20016, "t": 394.72739, "r": 262.43051, "b": 403.94037, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Materialized query tables"}, {"label": "list_item", "id": 10, "page_no": 100, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.72091674804688, "t": 406.3046569824219, "r": 210.3322296142578, "b": 415.94019, "coord_origin": "TOPLEFT"}, "confidence": 0.9171162247657776, "cells": [{"id": 16, "text": "GLYPH", "bbox": {"l": 136.8, "t": 406.87659, "r": 141.78, "b": 415.65136999999993, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Index advisor", "bbox": {"l": 151.20016, "t": 406.7272, "r": 210.29085, "b": 415.94019, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Index advisor"}, {"label": "list_item", "id": 11, "page_no": 100, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.53468322753906, "t": 418.32232666015625, "r": 310.97345, "b": 428.54669189453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9497132301330566, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.8, "t": 418.8764, "r": 141.78, "b": 427.65118, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Monitoring, analysis, and debugging", "bbox": {"l": 151.20016, "t": 418.72702, "r": 310.97345, "b": 427.94, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Monitoring, analysis, and debugging"}, {"label": "list_item", "id": 12, "page_no": 100, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 135.64329528808594, "t": 429.8523864746094, "r": 273.34265, "b": 440.3828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9438368082046509, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.8, "t": 430.87622, "r": 141.78, "b": 439.651, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Performance and scalability", "bbox": {"l": 151.20016, "t": 430.72684, "r": 273.34265, "b": 439.93981999999994, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Performance and scalability"}, {"label": "text", "id": 13, "page_no": 100, "cluster": {"id": 13, "label": "text", "bbox": {"l": 136.005859375, "t": 451.9608154296875, "r": 347.41214, "b": 462.3204650878906, "coord_origin": "TOPLEFT"}, "confidence": 0.875919759273529, "cells": [{"id": 22, "text": "The following topics are covered in this chapter:", "bbox": {"l": 136.8, "t": 452.68665, "r": 347.41214, "b": 461.89963, "coord_origin": "TOPLEFT"}}]}, "text": "The following topics are covered in this chapter:"}, {"label": "list_item", "id": 14, "page_no": 100, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 135.94393920898438, "t": 468.6572265625, "r": 267.31885, "b": 479.11810302734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9442504644393921, "cells": [{"id": 23, "text": "GLYPH", "bbox": {"l": 136.8, "t": 469.87561, "r": 141.78, "b": 478.65039, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Timing of column masking", "bbox": {"l": 151.20016, "t": 469.72623, "r": 267.31885, "b": 478.93921, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Timing of column masking"}, {"label": "list_item", "id": 15, "page_no": 100, "cluster": {"id": 15, "label": "list_item", "bbox": {"l": 135.8094024658203, "t": 480.9632568359375, "r": 296.34232, "b": 490.93903, "coord_origin": "TOPLEFT"}, "confidence": 0.9341280460357666, "cells": [{"id": 25, "text": "GLYPH", "bbox": {"l": 136.8, "t": 481.87543, "r": 141.78, "b": 490.65021, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "RCAC effects on data movement", "bbox": {"l": 151.20016, "t": 481.72604, "r": 296.34232, "b": 490.93903, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH RCAC effects on data movement"}, {"label": "list_item", "id": 16, "page_no": 100, "cluster": {"id": 16, "label": "list_item", "bbox": {"l": 135.80313110351562, "t": 492.80511474609375, "r": 248.5316162109375, "b": 502.96875, "coord_origin": "TOPLEFT"}, "confidence": 0.9282206892967224, "cells": [{"id": 27, "text": "GLYPH", "bbox": {"l": 136.8, "t": 493.87524, "r": 141.78, "b": 502.65002, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "RCAC effects on joins", "bbox": {"l": 151.20016, "t": 493.72586, "r": 248.37093, "b": 502.93884, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH RCAC effects on joins"}, {"label": "list_item", "id": 17, "page_no": 100, "cluster": {"id": 17, "label": "list_item", "bbox": {"l": 135.69058227539062, "t": 504.4717712402344, "r": 368.62, "b": 515.00390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9455210566520691, "cells": [{"id": 29, "text": "GLYPH", "bbox": {"l": 136.8, "t": 505.87506, "r": 141.78, "b": 514.64984, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Monitoring, analyzing, and debugging with RCAC", "bbox": {"l": 151.20016, "t": 505.72568, "r": 368.62, "b": 514.93866, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Monitoring, analyzing, and debugging with RCAC"}, {"label": "list_item", "id": 18, "page_no": 100, "cluster": {"id": 18, "label": "list_item", "bbox": {"l": 135.53225708007812, "t": 516.2424926757812, "r": 428.50857999999994, "b": 526.93848, "coord_origin": "TOPLEFT"}, "confidence": 0.9446545243263245, "cells": [{"id": 31, "text": "GLYPH", "bbox": {"l": 136.8, "t": 517.8748800000001, "r": 141.78, "b": 526.64966, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Views, materialized query tables, and query rewrite with RCAC", "bbox": {"l": 151.20016, "t": 517.72549, "r": 428.50857999999994, "b": 526.93848, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Views, materialized query tables, and query rewrite with RCAC"}, {"label": "list_item", "id": 19, "page_no": 100, "cluster": {"id": 19, "label": "list_item", "bbox": {"l": 135.63209533691406, "t": 528.7277221679688, "r": 349.38428, "b": 539.08544921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9345404505729675, "cells": [{"id": 33, "text": "GLYPH", "bbox": {"l": 136.8, "t": 529.87469, "r": 141.78, "b": 538.64944, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "RCAC effects on performance and scalability", "bbox": {"l": 151.20016, "t": 529.72528, "r": 349.38428, "b": 538.93829, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH RCAC effects on performance and scalability"}, {"label": "list_item", "id": 20, "page_no": 100, "cluster": {"id": 20, "label": "list_item", "bbox": {"l": 135.68804931640625, "t": 540.8400268554688, "r": 390.44034, "b": 551.35888671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9479876160621643, "cells": [{"id": 35, "text": "GLYPH", "bbox": {"l": 136.8, "t": 541.8745, "r": 141.78, "b": 550.6492499999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Exclusive lock to implement RCAC (availability issues)", "bbox": {"l": 151.20016, "t": 541.7251, "r": 390.44034, "b": 550.9381, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Exclusive lock to implement RCAC (availability issues)"}, {"label": "list_item", "id": 21, "page_no": 100, "cluster": {"id": 21, "label": "list_item", "bbox": {"l": 135.8003692626953, "t": 552.6859741210938, "r": 315.37079, "b": 563.0116577148438, "coord_origin": "TOPLEFT"}, "confidence": 0.9349662661552429, "cells": [{"id": 37, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 553.8743, "r": 141.77998, "b": 562.64905, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Avoiding propagation of masked data", "bbox": {"l": 151.20015, "t": 553.7249, "r": 315.37079, "b": 562.9379, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Avoiding propagation of masked data"}, {"label": "list_item", "id": 22, "page_no": 100, "cluster": {"id": 22, "label": "list_item", "bbox": {"l": 135.62815856933594, "t": 564.294189453125, "r": 307.30423, "b": 574.9377, "coord_origin": "TOPLEFT"}, "confidence": 0.9371550679206848, "cells": [{"id": 39, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 565.8741, "r": 141.77998, "b": 574.64885, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Triggers and functions (SECURED)", "bbox": {"l": 151.20015, "t": 565.7247, "r": 307.30423, "b": 574.9377, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Triggers and functions (SECURED)"}, {"label": "list_item", "id": 23, "page_no": 100, "cluster": {"id": 23, "label": "list_item", "bbox": {"l": 135.61077880859375, "t": 576.708740234375, "r": 315.14774, "b": 587.1307983398438, "coord_origin": "TOPLEFT"}, "confidence": 0.9537895917892456, "cells": [{"id": 41, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 577.8739, "r": 141.77998, "b": 586.64865, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "RCAC is only one part of the solution", "bbox": {"l": 151.20015, "t": 577.7245, "r": 315.14774, "b": 586.9375, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH RCAC is only one part of the solution"}, {"label": "text", "id": 24, "page_no": 100, "cluster": {"id": 24, "label": "text", "bbox": {"l": 500.39999, "t": 93.05345916748047, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.7402352690696716, "cells": [{"id": 43, "text": "6", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, "text": "6"}, {"label": "picture", "id": 25, "page_no": 100, "cluster": {"id": 25, "label": "picture", "bbox": {"l": 32.03302764892578, "t": 70.35401916503906, "r": 238.4545135498047, "b": 238.00796508789062, "coord_origin": "TOPLEFT"}, "confidence": 0.6230185627937317, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 100, "cluster": {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 6.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6."}, {"label": "section_header", "id": 3, "page_no": 100, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 136.34396362304688, "t": 253.19119262695312, "r": 455.59796, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9567626714706421, "cells": [{"id": 3, "text": "Additional considerations", "bbox": {"l": 136.8, "t": 254.88635, "r": 455.59796, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Additional considerations"}, {"label": "text", "id": 4, "page_no": 100, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.87008666992188, "t": 316.7393493652344, "r": 531.34546, "b": 339.10498046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9598965644836426, "cells": [{"id": 4, "text": "This chapter covers additional considerations that must be taken into account when ", "bbox": {"l": 136.8, "t": 317.68872, "r": 507.11765, "b": 326.90170000000006, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "implementing Row and Column Access Control (RCAC), including the following functions:", "bbox": {"l": 136.8, "t": 329.68854, "r": 531.34546, "b": 338.90152, "coord_origin": "TOPLEFT"}}]}, "text": "This chapter covers additional considerations that must be taken into account when implementing Row and Column Access Control (RCAC), including the following functions:"}, {"label": "list_item", "id": 5, "page_no": 100, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.8069610595703, "t": 346.03759765625, "r": 267.31885, "b": 356.3053283691406, "coord_origin": "TOPLEFT"}, "confidence": 0.9453163743019104, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 346.8775, "r": 141.78, "b": 355.65228, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Timing of column masking", "bbox": {"l": 151.20016, "t": 346.72812, "r": 267.31885, "b": 355.94110000000006, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Timing of column masking"}, {"label": "list_item", "id": 6, "page_no": 100, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.6639404296875, "t": 358.057373046875, "r": 221.46388244628906, "b": 367.94092, "coord_origin": "TOPLEFT"}, "confidence": 0.9263733625411987, "cells": [{"id": 8, "text": "GLYPH", "bbox": {"l": 136.8, "t": 358.87731999999994, "r": 141.78, "b": 367.6521, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Data movement", "bbox": {"l": 151.20016, "t": 358.72794, "r": 221.34749999999997, "b": 367.94092, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Data movement"}, {"label": "list_item", "id": 7, "page_no": 100, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.80430603027344, "t": 370.3742370605469, "r": 174.48665, "b": 379.94073, "coord_origin": "TOPLEFT"}, "confidence": 0.909616231918335, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.8, "t": 370.87714000000005, "r": 141.78, "b": 379.65191999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Joins", "bbox": {"l": 151.20016, "t": 370.72775, "r": 174.48665, "b": 379.94073, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Joins"}, {"label": "list_item", "id": 8, "page_no": 100, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.77816772460938, "t": 382.2833251953125, "r": 177.67285, "b": 391.94055000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9085867404937744, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.8, "t": 382.87695, "r": 141.78, "b": 391.65173, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Views", "bbox": {"l": 151.20016, "t": 382.72757, "r": 177.67285, "b": 391.94055000000003, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Views"}, {"label": "list_item", "id": 9, "page_no": 100, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.9530487060547, "t": 394.1155090332031, "r": 262.43051, "b": 404.1868896484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9477983713150024, "cells": [{"id": 14, "text": "GLYPH", "bbox": {"l": 136.8, "t": 394.87677, "r": 141.78, "b": 403.65155, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Materialized query tables", "bbox": {"l": 151.20016, "t": 394.72739, "r": 262.43051, "b": 403.94037, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Materialized query tables"}, {"label": "list_item", "id": 10, "page_no": 100, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.72091674804688, "t": 406.3046569824219, "r": 210.3322296142578, "b": 415.94019, "coord_origin": "TOPLEFT"}, "confidence": 0.9171162247657776, "cells": [{"id": 16, "text": "GLYPH", "bbox": {"l": 136.8, "t": 406.87659, "r": 141.78, "b": 415.65136999999993, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Index advisor", "bbox": {"l": 151.20016, "t": 406.7272, "r": 210.29085, "b": 415.94019, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Index advisor"}, {"label": "list_item", "id": 11, "page_no": 100, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.53468322753906, "t": 418.32232666015625, "r": 310.97345, "b": 428.54669189453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9497132301330566, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.8, "t": 418.8764, "r": 141.78, "b": 427.65118, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Monitoring, analysis, and debugging", "bbox": {"l": 151.20016, "t": 418.72702, "r": 310.97345, "b": 427.94, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Monitoring, analysis, and debugging"}, {"label": "list_item", "id": 12, "page_no": 100, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 135.64329528808594, "t": 429.8523864746094, "r": 273.34265, "b": 440.3828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9438368082046509, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.8, "t": 430.87622, "r": 141.78, "b": 439.651, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Performance and scalability", "bbox": {"l": 151.20016, "t": 430.72684, "r": 273.34265, "b": 439.93981999999994, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Performance and scalability"}, {"label": "text", "id": 13, "page_no": 100, "cluster": {"id": 13, "label": "text", "bbox": {"l": 136.005859375, "t": 451.9608154296875, "r": 347.41214, "b": 462.3204650878906, "coord_origin": "TOPLEFT"}, "confidence": 0.875919759273529, "cells": [{"id": 22, "text": "The following topics are covered in this chapter:", "bbox": {"l": 136.8, "t": 452.68665, "r": 347.41214, "b": 461.89963, "coord_origin": "TOPLEFT"}}]}, "text": "The following topics are covered in this chapter:"}, {"label": "list_item", "id": 14, "page_no": 100, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 135.94393920898438, "t": 468.6572265625, "r": 267.31885, "b": 479.11810302734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9442504644393921, "cells": [{"id": 23, "text": "GLYPH", "bbox": {"l": 136.8, "t": 469.87561, "r": 141.78, "b": 478.65039, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Timing of column masking", "bbox": {"l": 151.20016, "t": 469.72623, "r": 267.31885, "b": 478.93921, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Timing of column masking"}, {"label": "list_item", "id": 15, "page_no": 100, "cluster": {"id": 15, "label": "list_item", "bbox": {"l": 135.8094024658203, "t": 480.9632568359375, "r": 296.34232, "b": 490.93903, "coord_origin": "TOPLEFT"}, "confidence": 0.9341280460357666, "cells": [{"id": 25, "text": "GLYPH", "bbox": {"l": 136.8, "t": 481.87543, "r": 141.78, "b": 490.65021, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "RCAC effects on data movement", "bbox": {"l": 151.20016, "t": 481.72604, "r": 296.34232, "b": 490.93903, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH RCAC effects on data movement"}, {"label": "list_item", "id": 16, "page_no": 100, "cluster": {"id": 16, "label": "list_item", "bbox": {"l": 135.80313110351562, "t": 492.80511474609375, "r": 248.5316162109375, "b": 502.96875, "coord_origin": "TOPLEFT"}, "confidence": 0.9282206892967224, "cells": [{"id": 27, "text": "GLYPH", "bbox": {"l": 136.8, "t": 493.87524, "r": 141.78, "b": 502.65002, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "RCAC effects on joins", "bbox": {"l": 151.20016, "t": 493.72586, "r": 248.37093, "b": 502.93884, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH RCAC effects on joins"}, {"label": "list_item", "id": 17, "page_no": 100, "cluster": {"id": 17, "label": "list_item", "bbox": {"l": 135.69058227539062, "t": 504.4717712402344, "r": 368.62, "b": 515.00390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9455210566520691, "cells": [{"id": 29, "text": "GLYPH", "bbox": {"l": 136.8, "t": 505.87506, "r": 141.78, "b": 514.64984, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Monitoring, analyzing, and debugging with RCAC", "bbox": {"l": 151.20016, "t": 505.72568, "r": 368.62, "b": 514.93866, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Monitoring, analyzing, and debugging with RCAC"}, {"label": "list_item", "id": 18, "page_no": 100, "cluster": {"id": 18, "label": "list_item", "bbox": {"l": 135.53225708007812, "t": 516.2424926757812, "r": 428.50857999999994, "b": 526.93848, "coord_origin": "TOPLEFT"}, "confidence": 0.9446545243263245, "cells": [{"id": 31, "text": "GLYPH", "bbox": {"l": 136.8, "t": 517.8748800000001, "r": 141.78, "b": 526.64966, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Views, materialized query tables, and query rewrite with RCAC", "bbox": {"l": 151.20016, "t": 517.72549, "r": 428.50857999999994, "b": 526.93848, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Views, materialized query tables, and query rewrite with RCAC"}, {"label": "list_item", "id": 19, "page_no": 100, "cluster": {"id": 19, "label": "list_item", "bbox": {"l": 135.63209533691406, "t": 528.7277221679688, "r": 349.38428, "b": 539.08544921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9345404505729675, "cells": [{"id": 33, "text": "GLYPH", "bbox": {"l": 136.8, "t": 529.87469, "r": 141.78, "b": 538.64944, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "RCAC effects on performance and scalability", "bbox": {"l": 151.20016, "t": 529.72528, "r": 349.38428, "b": 538.93829, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH RCAC effects on performance and scalability"}, {"label": "list_item", "id": 20, "page_no": 100, "cluster": {"id": 20, "label": "list_item", "bbox": {"l": 135.68804931640625, "t": 540.8400268554688, "r": 390.44034, "b": 551.35888671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9479876160621643, "cells": [{"id": 35, "text": "GLYPH", "bbox": {"l": 136.8, "t": 541.8745, "r": 141.78, "b": 550.6492499999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Exclusive lock to implement RCAC (availability issues)", "bbox": {"l": 151.20016, "t": 541.7251, "r": 390.44034, "b": 550.9381, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Exclusive lock to implement RCAC (availability issues)"}, {"label": "list_item", "id": 21, "page_no": 100, "cluster": {"id": 21, "label": "list_item", "bbox": {"l": 135.8003692626953, "t": 552.6859741210938, "r": 315.37079, "b": 563.0116577148438, "coord_origin": "TOPLEFT"}, "confidence": 0.9349662661552429, "cells": [{"id": 37, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 553.8743, "r": 141.77998, "b": 562.64905, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Avoiding propagation of masked data", "bbox": {"l": 151.20015, "t": 553.7249, "r": 315.37079, "b": 562.9379, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Avoiding propagation of masked data"}, {"label": "list_item", "id": 22, "page_no": 100, "cluster": {"id": 22, "label": "list_item", "bbox": {"l": 135.62815856933594, "t": 564.294189453125, "r": 307.30423, "b": 574.9377, "coord_origin": "TOPLEFT"}, "confidence": 0.9371550679206848, "cells": [{"id": 39, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 565.8741, "r": 141.77998, "b": 574.64885, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Triggers and functions (SECURED)", "bbox": {"l": 151.20015, "t": 565.7247, "r": 307.30423, "b": 574.9377, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Triggers and functions (SECURED)"}, {"label": "list_item", "id": 23, "page_no": 100, "cluster": {"id": 23, "label": "list_item", "bbox": {"l": 135.61077880859375, "t": 576.708740234375, "r": 315.14774, "b": 587.1307983398438, "coord_origin": "TOPLEFT"}, "confidence": 0.9537895917892456, "cells": [{"id": 41, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 577.8739, "r": 141.77998, "b": 586.64865, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "RCAC is only one part of the solution", "bbox": {"l": 151.20015, "t": 577.7245, "r": 315.14774, "b": 586.9375, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH RCAC is only one part of the solution"}, {"label": "text", "id": 24, "page_no": 100, "cluster": {"id": 24, "label": "text", "bbox": {"l": 500.39999, "t": 93.05345916748047, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.7402352690696716, "cells": [{"id": 43, "text": "6", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, "text": "6"}, {"label": "picture", "id": 25, "page_no": 100, "cluster": {"id": 25, "label": "picture", "bbox": {"l": 32.03302764892578, "t": 70.35401916503906, "r": 238.4545135498047, "b": 238.00796508789062, "coord_origin": "TOPLEFT"}, "confidence": 0.6230185627937317, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 100, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.789581298828125, "t": 754.7017822265625, "r": 257.24335, "b": 764.1205444335938, "coord_origin": "TOPLEFT"}, "confidence": 0.9495893716812134, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 100, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6629028320312, "t": 754.3357543945312, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.917849063873291, "cells": [{"id": 1, "text": "85", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "85"}]}}, {"page_no": 101, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "86 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "6.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.453255, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Timing of column masking", "bbox": {"l": 91.983902, "t": 74.34069999999997, "r": 298.45441, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "An important design and implementation consideration is the fact that RCAC column masking ", "bbox": {"l": 136.8, "t": 106.6087, "r": 547.24963, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "occurs after all of the query processing is complete, which means that the query results are ", "bbox": {"l": 136.8, "t": 118.60852, "r": 542.35236, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "not at all based on the masked values. Any local selection, joining, grouping, or ordering ", "bbox": {"l": 136.8, "t": 130.60834, "r": 527.76294, "b": 139.82135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "operations are based on the unmasked column values. Only the final result set is the target of ", "bbox": {"l": 136.8, "t": 142.60815000000002, "r": 547.23962, "b": 151.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "the masking. ", "bbox": {"l": 136.8, "t": 154.60797000000002, "r": 196.23331, "b": 163.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "An example of this situation is shown in Figure 6-1. However, note that aggregate functions (a ", "bbox": {"l": 136.8, "t": 176.62756000000002, "r": 547.23254, "b": 185.84058000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "form of grouping) are based on masked values.", "bbox": {"l": 136.8, "t": 188.62738000000002, "r": 345.5368, "b": 197.84038999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Figure 6-1 Timing of column masking", "bbox": {"l": 136.8, "t": 472.578, "r": 289.59567, "b": 480.90302, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "SELECT", "bbox": {"l": 223.54629999999997, "t": 224.41350999999997, "r": 250.22076000000004, "b": 232.33582, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "CREDIT_CARD_NUMBER,", "bbox": {"l": 290.24081, "t": 224.41350999999997, "r": 386.13547, "b": 232.33582, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "SUM(AMOUNT) AS TOTAL", "bbox": {"l": 290.2482, "t": 235.53063999999995, "r": 389.2164, "b": 243.45294, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "FROM", "bbox": {"l": 223.54629999999997, "t": 246.64757999999995, "r": 247.25089, "b": 254.56989, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "TRANSACTIONS", "bbox": {"l": 290.24869, "t": 246.64757999999995, "r": 350.20563, "b": 254.56989, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "GROUP BY", "bbox": {"l": 223.54629999999997, "t": 257.76471000000004, "r": 263.57651, "b": 265.68701, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "CREDIT_CARD_NUMBER", "bbox": {"l": 290.2843, "t": 257.76471000000004, "r": 383.71991, "b": 265.68701, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ORDER BY", "bbox": {"l": 223.54629999999997, "t": 268.88184, "r": 262.38541, "b": 276.80413999999996, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "CREDIT_CARD_NUMBER;", "bbox": {"l": 290.28986, "t": 268.88184, "r": 386.24557, "b": 276.80413999999996, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "CREDIT CARD NUMBER", "bbox": {"l": 149.4512, "t": 317.02898999999996, "r": 233.62379, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "TOTAL", "bbox": {"l": 257.74921, "t": 317.02898999999996, "r": 279.16821, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "CREDIT CARD NUMBER", "bbox": {"l": 318.98621, "t": 317.02898999999996, "r": 403.15881, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "TOTAL", "bbox": {"l": 427.28424, "t": 317.02898999999996, "r": 448.70325, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Without ", "bbox": {"l": 160.457, "t": 298.77588, "r": 207.85185, "b": 310.3793, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "RCAC Masking", "bbox": {"l": 207.84406, "t": 298.76291, "r": 284.9068, "b": 309.87311, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "With ", "bbox": {"l": 341.02625, "t": 298.77588, "r": 370.2554, "b": 310.3793, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "RCAC Masking", "bbox": {"l": 370.23593, "t": 298.76291, "r": 447.29868000000005, "b": 309.87311, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "_", "bbox": {"l": 174.2422, "t": 317.02898999999996, "r": 178.39442, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "_", "bbox": {"l": 197.80983, "t": 317.02898999999996, "r": 201.96205, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "3785 0000 0000 1234", "bbox": {"l": 148.50592, "t": 330.5637500000001, "r": 221.83939, "b": 337.69257, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "233.50", "bbox": {"l": 272.4223, "t": 330.5637500000001, "r": 295.64975, "b": 337.69257, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "3785 1111 1111 1234", "bbox": {"l": 148.50592, "t": 344.07098, "r": 221.83853, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "105.10", "bbox": {"l": 272.42145, "t": 344.07098, "r": 295.6489, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "3785 2222 2222 1234", "bbox": {"l": 148.5062, "t": 357.60629, "r": 221.84132000000002, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "300 00", "bbox": {"l": 272.40579, "t": 357.60629, "r": 295.64658, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "_", "bbox": {"l": 343.77731, "t": 317.02898999999996, "r": 347.92953, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "_", "bbox": {"l": 367.34494, "t": 317.02898999999996, "r": 371.49716, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "**** **** **** 1234", "bbox": {"l": 318.04102, "t": 330.5637500000001, "r": 390.68494, "b": 337.69257, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "233.50", "bbox": {"l": 441.96823, "t": 330.5637500000001, "r": 465.16064, "b": 337.69257, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "**** **** **** 1234", "bbox": {"l": 318.04102, "t": 344.07098, "r": 390.68494, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "105.10", "bbox": {"l": 441.96823, "t": 344.07098, "r": 465.16064, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 357.60629, "r": 390.65433, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "300 00", "bbox": {"l": 441.94089, "t": 357.60629, "r": 465.18167, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "300.00", "bbox": {"l": 272.40579, "t": 357.60629, "r": 295.6427, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "3785 3333 3333 1234", "bbox": {"l": 148.5062, "t": 371.1413, "r": 221.85214, "b": 378.27011, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "1,775.00", "bbox": {"l": 266.12503, "t": 371.1413, "r": 295.66751, "b": 378.27011, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "5466 4444 4444 1234", "bbox": {"l": 148.5062, "t": 384.64853, "r": 221.83881000000002, "b": 391.77734, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "601.70", "bbox": {"l": 272.42175, "t": 384.64853, "r": 295.6492, "b": 391.77734, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "300.00", "bbox": {"l": 441.94089, "t": 357.60629, "r": 465.1777, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 371.1413, "r": 390.69855, "b": 378.27011, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "1,775.00", "bbox": {"l": 435.67264000000006, "t": 371.1413, "r": 465.16843000000006, "b": 378.27011, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 384.64853, "r": 390.68521, "b": 391.77734, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "601.70", "bbox": {"l": 441.96851, "t": 384.64853, "r": 465.1609199999999, "b": 391.77734, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "5466 5555 5555 1234", "bbox": {"l": 148.5062, "t": 398.18347, "r": 221.83881000000002, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "37.80", "bbox": {"l": 276.64648, "t": 398.18347, "r": 295.64832, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "5466 6666 6666 1234", "bbox": {"l": 148.5062, "t": 411.71823, "r": 221.83881000000002, "b": 418.84705, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "490.45", "bbox": {"l": 272.42175, "t": 411.71823, "r": 295.6492, "b": 418.84705, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "6011 7777 7777 1234", "bbox": {"l": 148.5062, "t": 425.2258, "r": 221.84132000000002, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "1005.00", "bbox": {"l": 268.1813, "t": 425.2258, "r": 295.64603, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 398.18347, "r": 390.68521, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "37.80", "bbox": {"l": 446.1933, "t": 398.18347, "r": 465.16595, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 411.71823, "r": 390.68521, "b": 418.84705, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "490.45", "bbox": {"l": 441.96851, "t": 411.71823, "r": 465.1609199999999, "b": 418.84705, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 425.22546, "r": 390.66788, "b": 432.35428, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "1005.00", "bbox": {"l": 437.7164, "t": 425.2258, "r": 465.18112, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "6011 8888 8888 1234", "bbox": {"l": 148.5062, "t": 438.76077, "r": 221.83881000000002, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "750.33", "bbox": {"l": 272.42175, "t": 438.76077, "r": 295.6492, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "6011 9999 9999 0001", "bbox": {"l": 148.5062, "t": 452.29553, "r": 221.83881000000002, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "10.00", "bbox": {"l": 276.64648, "t": 452.29553, "r": 295.64832, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": " 1234", "bbox": {"l": 371.76227, "t": 425.2258, "r": 390.66788, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 438.76077, "r": 390.68521, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "750.33", "bbox": {"l": 441.96851, "t": 438.76077, "r": 465.1609199999999, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "**** **** **** 0001", "bbox": {"l": 318.04129, "t": 452.29553, "r": 390.68521, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "10.00", "bbox": {"l": 446.1933, "t": 452.29553, "r": 465.16595, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.28016662597656, "t": 754.42529296875, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9138955473899841, "cells": [{"id": 0, "text": "86 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.40719604492188, "t": 754.6533813476562, "r": 334.42142, "b": 763.9609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9498723745346069, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.63821411132812, "t": 73.412353515625, "r": 298.45441, "b": 89.93876647949219, "coord_origin": "TOPLEFT"}, "confidence": 0.9695685505867004, "cells": [{"id": 2, "text": "6.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.453255, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Timing of column masking", "bbox": {"l": 91.983902, "t": 74.34069999999997, "r": 298.45441, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.9453887939453, "t": 105.85498046875, "r": 547.24963, "b": 164.5647430419922, "coord_origin": "TOPLEFT"}, "confidence": 0.9870750308036804, "cells": [{"id": 4, "text": "An important design and implementation consideration is the fact that RCAC column masking ", "bbox": {"l": 136.8, "t": 106.6087, "r": 547.24963, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "occurs after all of the query processing is complete, which means that the query results are ", "bbox": {"l": 136.8, "t": 118.60852, "r": 542.35236, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "not at all based on the masked values. Any local selection, joining, grouping, or ordering ", "bbox": {"l": 136.8, "t": 130.60834, "r": 527.76294, "b": 139.82135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "operations are based on the unmasked column values. Only the final result set is the target of ", "bbox": {"l": 136.8, "t": 142.60815000000002, "r": 547.23962, "b": 151.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "the masking. ", "bbox": {"l": 136.8, "t": 154.60797000000002, "r": 196.23331, "b": 163.82097999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 136.015625, "t": 176.0285186767578, "r": 547.23254, "b": 198.28158569335938, "coord_origin": "TOPLEFT"}, "confidence": 0.9749656319618225, "cells": [{"id": 9, "text": "An example of this situation is shown in Figure 6-1. However, note that aggregate functions (a ", "bbox": {"l": 136.8, "t": 176.62756000000002, "r": 547.23254, "b": 185.84058000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "form of grouping) are based on masked values.", "bbox": {"l": 136.8, "t": 188.62738000000002, "r": 345.5368, "b": 197.84038999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 136.17198181152344, "t": 472.1231689453125, "r": 290.1625061035156, "b": 481.7851867675781, "coord_origin": "TOPLEFT"}, "confidence": 0.9372553825378418, "cells": [{"id": 11, "text": "Figure 6-1 Timing of column masking", "bbox": {"l": 136.8, "t": 472.578, "r": 289.59567, "b": 480.90302, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 222.81260681152344, "t": 223.79876708984375, "r": 250.3378143310547, "b": 232.33582, "coord_origin": "TOPLEFT"}, "confidence": 0.6529437899589539, "cells": [{"id": 12, "text": "SELECT", "bbox": {"l": 223.54629999999997, "t": 224.41350999999997, "r": 250.22076000000004, "b": 232.33582, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 289.8625183105469, "t": 223.75645446777344, "r": 386.13547, "b": 232.33582, "coord_origin": "TOPLEFT"}, "confidence": 0.6274991631507874, "cells": [{"id": 13, "text": "CREDIT_CARD_NUMBER,", "bbox": {"l": 290.24081, "t": 224.41350999999997, "r": 386.13547, "b": 232.33582, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 290.2482, "t": 235.53063999999995, "r": 389.2164, "b": 254.56989, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 14, "text": "SUM(AMOUNT) AS TOTAL", "bbox": {"l": 290.2482, "t": 235.53063999999995, "r": 389.2164, "b": 243.45294, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "TRANSACTIONS", "bbox": {"l": 290.24869, "t": 246.64757999999995, "r": 350.20563, "b": 254.56989, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 223.27870178222656, "t": 245.79042053222656, "r": 247.33633422851562, "b": 254.56989, "coord_origin": "TOPLEFT"}, "confidence": 0.7264513373374939, "cells": [{"id": 15, "text": "FROM", "bbox": {"l": 223.54629999999997, "t": 246.64757999999995, "r": 247.25089, "b": 254.56989, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 223.30404663085938, "t": 256.77313232421875, "r": 264.05712890625, "b": 265.68701, "coord_origin": "TOPLEFT"}, "confidence": 0.739473283290863, "cells": [{"id": 17, "text": "GROUP BY", "bbox": {"l": 223.54629999999997, "t": 257.76471000000004, "r": 263.57651, "b": 265.68701, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 289.9476623535156, "t": 256.7027893066406, "r": 384.1680908203125, "b": 265.68701, "coord_origin": "TOPLEFT"}, "confidence": 0.727581799030304, "cells": [{"id": 18, "text": "CREDIT_CARD_NUMBER", "bbox": {"l": 290.2843, "t": 257.76471000000004, "r": 383.71991, "b": 265.68701, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 223.270263671875, "t": 268.14324951171875, "r": 262.7109680175781, "b": 276.80413999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.74038165807724, "cells": [{"id": 19, "text": "ORDER BY", "bbox": {"l": 223.54629999999997, "t": 268.88184, "r": 262.38541, "b": 276.80413999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 290.0070495605469, "t": 267.8889465332031, "r": 386.24557, "b": 277.3880920410156, "coord_origin": "TOPLEFT"}, "confidence": 0.754478394985199, "cells": [{"id": 20, "text": "CREDIT_CARD_NUMBER;", "bbox": {"l": 290.28986, "t": 268.88184, "r": 386.24557, "b": 276.80413999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "table", "bbox": {"l": 143.16891479492188, "t": 312.9064636230469, "r": 300.13482666015625, "b": 464.53564453125, "coord_origin": "TOPLEFT"}, "confidence": 0.938347578048706, "cells": [{"id": 21, "text": "CREDIT CARD NUMBER", "bbox": {"l": 149.4512, "t": 317.02898999999996, "r": 233.62379, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "TOTAL", "bbox": {"l": 257.74921, "t": 317.02898999999996, "r": 279.16821, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "_", "bbox": {"l": 174.2422, "t": 317.02898999999996, "r": 178.39442, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "_", "bbox": {"l": 197.80983, "t": 317.02898999999996, "r": 201.96205, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "3785 0000 0000 1234", "bbox": {"l": 148.50592, "t": 330.5637500000001, "r": 221.83939, "b": 337.69257, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "233.50", "bbox": {"l": 272.4223, "t": 330.5637500000001, "r": 295.64975, "b": 337.69257, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "3785 1111 1111 1234", "bbox": {"l": 148.50592, "t": 344.07098, "r": 221.83853, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "105.10", "bbox": {"l": 272.42145, "t": 344.07098, "r": 295.6489, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "3785 2222 2222 1234", "bbox": {"l": 148.5062, "t": 357.60629, "r": 221.84132000000002, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "300 00", "bbox": {"l": 272.40579, "t": 357.60629, "r": 295.64658, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "300.00", "bbox": {"l": 272.40579, "t": 357.60629, "r": 295.6427, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "3785 3333 3333 1234", "bbox": {"l": 148.5062, "t": 371.1413, "r": 221.85214, "b": 378.27011, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "1,775.00", "bbox": {"l": 266.12503, "t": 371.1413, "r": 295.66751, "b": 378.27011, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "5466 4444 4444 1234", "bbox": {"l": 148.5062, "t": 384.64853, "r": 221.83881000000002, "b": 391.77734, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "601.70", "bbox": {"l": 272.42175, "t": 384.64853, "r": 295.6492, "b": 391.77734, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "5466 5555 5555 1234", "bbox": {"l": 148.5062, "t": 398.18347, "r": 221.83881000000002, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "37.80", "bbox": {"l": 276.64648, "t": 398.18347, "r": 295.64832, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "5466 6666 6666 1234", "bbox": {"l": 148.5062, "t": 411.71823, "r": 221.83881000000002, "b": 418.84705, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "490.45", "bbox": {"l": 272.42175, "t": 411.71823, "r": 295.6492, "b": 418.84705, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "6011 7777 7777 1234", "bbox": {"l": 148.5062, "t": 425.2258, "r": 221.84132000000002, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "1005.00", "bbox": {"l": 268.1813, "t": 425.2258, "r": 295.64603, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "6011 8888 8888 1234", "bbox": {"l": 148.5062, "t": 438.76077, "r": 221.83881000000002, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "750.33", "bbox": {"l": 272.42175, "t": 438.76077, "r": 295.6492, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "6011 9999 9999 0001", "bbox": {"l": 148.5062, "t": 452.29553, "r": 221.83881000000002, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "10.00", "bbox": {"l": 276.64648, "t": 452.29553, "r": 295.64832, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "table", "bbox": {"l": 313.3494567871094, "t": 312.5643005371094, "r": 470.7187805175781, "b": 464.93182373046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9333541393280029, "cells": [{"id": 23, "text": "CREDIT CARD NUMBER", "bbox": {"l": 318.98621, "t": 317.02898999999996, "r": 403.15881, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "TOTAL", "bbox": {"l": 427.28424, "t": 317.02898999999996, "r": 448.70325, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "_", "bbox": {"l": 343.77731, "t": 317.02898999999996, "r": 347.92953, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "_", "bbox": {"l": 367.34494, "t": 317.02898999999996, "r": 371.49716, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "**** **** **** 1234", "bbox": {"l": 318.04102, "t": 330.5637500000001, "r": 390.68494, "b": 337.69257, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "233.50", "bbox": {"l": 441.96823, "t": 330.5637500000001, "r": 465.16064, "b": 337.69257, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "**** **** **** 1234", "bbox": {"l": 318.04102, "t": 344.07098, "r": 390.68494, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "105.10", "bbox": {"l": 441.96823, "t": 344.07098, "r": 465.16064, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 357.60629, "r": 390.65433, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "300 00", "bbox": {"l": 441.94089, "t": 357.60629, "r": 465.18167, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "300.00", "bbox": {"l": 441.94089, "t": 357.60629, "r": 465.1777, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 371.1413, "r": 390.69855, "b": 378.27011, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "1,775.00", "bbox": {"l": 435.67264000000006, "t": 371.1413, "r": 465.16843000000006, "b": 378.27011, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 384.64853, "r": 390.68521, "b": 391.77734, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "601.70", "bbox": {"l": 441.96851, "t": 384.64853, "r": 465.1609199999999, "b": 391.77734, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 398.18347, "r": 390.68521, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "37.80", "bbox": {"l": 446.1933, "t": 398.18347, "r": 465.16595, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 411.71823, "r": 390.68521, "b": 418.84705, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "490.45", "bbox": {"l": 441.96851, "t": 411.71823, "r": 465.1609199999999, "b": 418.84705, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 425.22546, "r": 390.66788, "b": 432.35428, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "1005.00", "bbox": {"l": 437.7164, "t": 425.2258, "r": 465.18112, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": " 1234", "bbox": {"l": 371.76227, "t": 425.2258, "r": 390.66788, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 438.76077, "r": 390.68521, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "750.33", "bbox": {"l": 441.96851, "t": 438.76077, "r": 465.1609199999999, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "**** **** **** 0001", "bbox": {"l": 318.04129, "t": 452.29553, "r": 390.68521, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "10.00", "bbox": {"l": 446.1933, "t": 452.29553, "r": 465.16595, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "section_header", "bbox": {"l": 160.457, "t": 297.8916931152344, "r": 285.01361083984375, "b": 310.3793, "coord_origin": "TOPLEFT"}, "confidence": 0.8418190479278564, "cells": [{"id": 25, "text": "Without ", "bbox": {"l": 160.457, "t": 298.77588, "r": 207.85185, "b": 310.3793, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "RCAC Masking", "bbox": {"l": 207.84406, "t": 298.76291, "r": 284.9068, "b": 309.87311, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "section_header", "bbox": {"l": 341.02625, "t": 297.97357177734375, "r": 447.76593017578125, "b": 310.3793, "coord_origin": "TOPLEFT"}, "confidence": 0.8612884283065796, "cells": [{"id": 27, "text": "With ", "bbox": {"l": 341.02625, "t": 298.77588, "r": 370.2554, "b": 310.3793, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "RCAC Masking", "bbox": {"l": 370.23593, "t": 298.76291, "r": 447.29868000000005, "b": 309.87311, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {"14": {"label": "table", "id": 14, "page_no": 101, "cluster": {"id": 14, "label": "table", "bbox": {"l": 143.16891479492188, "t": 312.9064636230469, "r": 300.13482666015625, "b": 464.53564453125, "coord_origin": "TOPLEFT"}, "confidence": 0.938347578048706, "cells": [{"id": 21, "text": "CREDIT CARD NUMBER", "bbox": {"l": 149.4512, "t": 317.02898999999996, "r": 233.62379, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "TOTAL", "bbox": {"l": 257.74921, "t": 317.02898999999996, "r": 279.16821, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "_", "bbox": {"l": 174.2422, "t": 317.02898999999996, "r": 178.39442, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "_", "bbox": {"l": 197.80983, "t": 317.02898999999996, "r": 201.96205, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "3785 0000 0000 1234", "bbox": {"l": 148.50592, "t": 330.5637500000001, "r": 221.83939, "b": 337.69257, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "233.50", "bbox": {"l": 272.4223, "t": 330.5637500000001, "r": 295.64975, "b": 337.69257, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "3785 1111 1111 1234", "bbox": {"l": 148.50592, "t": 344.07098, "r": 221.83853, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "105.10", "bbox": {"l": 272.42145, "t": 344.07098, "r": 295.6489, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "3785 2222 2222 1234", "bbox": {"l": 148.5062, "t": 357.60629, "r": 221.84132000000002, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "300 00", "bbox": {"l": 272.40579, "t": 357.60629, "r": 295.64658, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "300.00", "bbox": {"l": 272.40579, "t": 357.60629, "r": 295.6427, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "3785 3333 3333 1234", "bbox": {"l": 148.5062, "t": 371.1413, "r": 221.85214, "b": 378.27011, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "1,775.00", "bbox": {"l": 266.12503, "t": 371.1413, "r": 295.66751, "b": 378.27011, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "5466 4444 4444 1234", "bbox": {"l": 148.5062, "t": 384.64853, "r": 221.83881000000002, "b": 391.77734, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "601.70", "bbox": {"l": 272.42175, "t": 384.64853, "r": 295.6492, "b": 391.77734, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "5466 5555 5555 1234", "bbox": {"l": 148.5062, "t": 398.18347, "r": 221.83881000000002, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "37.80", "bbox": {"l": 276.64648, "t": 398.18347, "r": 295.64832, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "5466 6666 6666 1234", "bbox": {"l": 148.5062, "t": 411.71823, "r": 221.83881000000002, "b": 418.84705, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "490.45", "bbox": {"l": 272.42175, "t": 411.71823, "r": 295.6492, "b": 418.84705, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "6011 7777 7777 1234", "bbox": {"l": 148.5062, "t": 425.2258, "r": 221.84132000000002, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "1005.00", "bbox": {"l": 268.1813, "t": 425.2258, "r": 295.64603, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "6011 8888 8888 1234", "bbox": {"l": 148.5062, "t": 438.76077, "r": 221.83881000000002, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "750.33", "bbox": {"l": 272.42175, "t": 438.76077, "r": 295.6492, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "6011 9999 9999 0001", "bbox": {"l": 148.5062, "t": 452.29553, "r": 221.83881000000002, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "10.00", "bbox": {"l": 276.64648, "t": 452.29553, "r": 295.64832, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl"], "num_rows": 11, "num_cols": 2, "table_cells": [{"bbox": {"l": 149.4512, "t": 317.02898999999996, "r": 233.62379, "b": 324.16614, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CREDIT CARD NUMBER _ _", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 257.74921, "t": 317.02898999999996, "r": 279.16821, "b": 324.16614, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "TOTAL", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 148.50592, "t": 330.5637500000001, "r": 221.83939, "b": 337.69257, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3785 0000 0000 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 272.4223, "t": 330.5637500000001, "r": 295.64975, "b": 337.69257, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "233.50", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.50592, "t": 344.07098, "r": 221.83853, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3785 1111 1111 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 272.42145, "t": 344.07098, "r": 295.6489, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "105.10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.5062, "t": 357.60629, "r": 221.84132000000002, "b": 364.73511, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3785 2222 2222 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 272.40579, "t": 357.60629, "r": 295.64658, "b": 364.73511, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "300 00 300.00", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.5062, "t": 371.1413, "r": 221.85214, "b": 378.27011, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3785 3333 3333 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 266.12503, "t": 371.1413, "r": 295.66751, "b": 378.27011, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "1,775.00", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.5062, "t": 384.64853, "r": 221.83881000000002, "b": 391.77734, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "5466 4444 4444 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 272.42175, "t": 384.64853, "r": 295.6492, "b": 391.77734, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "601.70", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.5062, "t": 398.18347, "r": 221.83881000000002, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "5466 5555 5555 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 276.64648, "t": 398.18347, "r": 295.64832, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "37.80", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.5062, "t": 411.71823, "r": 221.83881000000002, "b": 418.84705, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "5466 6666 6666 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 272.42175, "t": 411.71823, "r": 295.6492, "b": 418.84705, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "490.45", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.5062, "t": 425.2258, "r": 221.84132000000002, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "6011 7777 7777 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 268.1813, "t": 425.2258, "r": 295.64603, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "1005.00", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.5062, "t": 438.76077, "r": 221.83881000000002, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "6011 8888 8888 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 272.42175, "t": 438.76077, "r": 295.6492, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "750.33", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.5062, "t": 452.29553, "r": 221.83881000000002, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "6011 9999 9999 0001", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 276.64648, "t": 452.29553, "r": 295.64832, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "10.00", "column_header": false, "row_header": false, "row_section": false}]}, "15": {"label": "table", "id": 15, "page_no": 101, "cluster": {"id": 15, "label": "table", "bbox": {"l": 313.3494567871094, "t": 312.5643005371094, "r": 470.7187805175781, "b": 464.93182373046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9333541393280029, "cells": [{"id": 23, "text": "CREDIT CARD NUMBER", "bbox": {"l": 318.98621, "t": 317.02898999999996, "r": 403.15881, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "TOTAL", "bbox": {"l": 427.28424, "t": 317.02898999999996, "r": 448.70325, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "_", "bbox": {"l": 343.77731, "t": 317.02898999999996, "r": 347.92953, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "_", "bbox": {"l": 367.34494, "t": 317.02898999999996, "r": 371.49716, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "**** **** **** 1234", "bbox": {"l": 318.04102, "t": 330.5637500000001, "r": 390.68494, "b": 337.69257, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "233.50", "bbox": {"l": 441.96823, "t": 330.5637500000001, "r": 465.16064, "b": 337.69257, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "**** **** **** 1234", "bbox": {"l": 318.04102, "t": 344.07098, "r": 390.68494, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "105.10", "bbox": {"l": 441.96823, "t": 344.07098, "r": 465.16064, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 357.60629, "r": 390.65433, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "300 00", "bbox": {"l": 441.94089, "t": 357.60629, "r": 465.18167, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "300.00", "bbox": {"l": 441.94089, "t": 357.60629, "r": 465.1777, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 371.1413, "r": 390.69855, "b": 378.27011, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "1,775.00", "bbox": {"l": 435.67264000000006, "t": 371.1413, "r": 465.16843000000006, "b": 378.27011, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 384.64853, "r": 390.68521, "b": 391.77734, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "601.70", "bbox": {"l": 441.96851, "t": 384.64853, "r": 465.1609199999999, "b": 391.77734, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 398.18347, "r": 390.68521, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "37.80", "bbox": {"l": 446.1933, "t": 398.18347, "r": 465.16595, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 411.71823, "r": 390.68521, "b": 418.84705, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "490.45", "bbox": {"l": 441.96851, "t": 411.71823, "r": 465.1609199999999, "b": 418.84705, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 425.22546, "r": 390.66788, "b": 432.35428, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "1005.00", "bbox": {"l": 437.7164, "t": 425.2258, "r": 465.18112, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": " 1234", "bbox": {"l": 371.76227, "t": 425.2258, "r": 390.66788, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 438.76077, "r": 390.68521, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "750.33", "bbox": {"l": 441.96851, "t": 438.76077, "r": 465.1609199999999, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "**** **** **** 0001", "bbox": {"l": 318.04129, "t": 452.29553, "r": 390.68521, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "10.00", "bbox": {"l": 446.1933, "t": 452.29553, "r": 465.16595, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl"], "num_rows": 11, "num_cols": 2, "table_cells": [{"bbox": {"l": 318.98621, "t": 317.02898999999996, "r": 403.15881, "b": 324.16614, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CREDIT CARD NUMBER _ _", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 427.28424, "t": 317.02898999999996, "r": 448.70325, "b": 324.16614, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "TOTAL", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04102, "t": 330.5637500000001, "r": 390.68494, "b": 337.69257, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 441.96823, "t": 330.5637500000001, "r": 465.16064, "b": 337.69257, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "233.50", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04102, "t": 344.07098, "r": 390.68494, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 441.96823, "t": 344.07098, "r": 465.16064, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "105.10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04129, "t": 357.60629, "r": 390.65433, "b": 364.73511, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 441.94089, "t": 357.60629, "r": 465.18167, "b": 364.73511, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "300 00 300.00", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04129, "t": 371.1413, "r": 390.69855, "b": 378.27011, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 435.67264000000006, "t": 371.1413, "r": 465.16843000000006, "b": 378.27011, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "1,775.00", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04129, "t": 384.64853, "r": 390.68521, "b": 391.77734, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 441.96851, "t": 384.64853, "r": 465.1609199999999, "b": 391.77734, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "601.70", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04129, "t": 398.18347, "r": 390.68521, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 446.1933, "t": 398.18347, "r": 465.16595, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "37.80", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04129, "t": 411.71823, "r": 390.68521, "b": 418.84705, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 441.96851, "t": 411.71823, "r": 465.1609199999999, "b": 418.84705, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "490.45", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04129, "t": 425.22546, "r": 390.66788, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 437.7164, "t": 425.2258, "r": 465.18112, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "1005.00", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04129, "t": 438.76077, "r": 390.68521, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 441.96851, "t": 438.76077, "r": 465.1609199999999, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "750.33", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04129, "t": 452.29553, "r": 390.68521, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 0001", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 446.1933, "t": 452.29553, "r": 465.16595, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "10.00", "column_header": false, "row_header": false, "row_section": false}]}}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 101, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.28016662597656, "t": 754.42529296875, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9138955473899841, "cells": [{"id": 0, "text": "86 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "86"}, {"label": "page_footer", "id": 1, "page_no": 101, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.40719604492188, "t": 754.6533813476562, "r": 334.42142, "b": 763.9609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9498723745346069, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "section_header", "id": 2, "page_no": 101, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.63821411132812, "t": 73.412353515625, "r": 298.45441, "b": 89.93876647949219, "coord_origin": "TOPLEFT"}, "confidence": 0.9695685505867004, "cells": [{"id": 2, "text": "6.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.453255, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Timing of column masking", "bbox": {"l": 91.983902, "t": 74.34069999999997, "r": 298.45441, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, "text": "6.1 Timing of column masking"}, {"label": "text", "id": 3, "page_no": 101, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.9453887939453, "t": 105.85498046875, "r": 547.24963, "b": 164.5647430419922, "coord_origin": "TOPLEFT"}, "confidence": 0.9870750308036804, "cells": [{"id": 4, "text": "An important design and implementation consideration is the fact that RCAC column masking ", "bbox": {"l": 136.8, "t": 106.6087, "r": 547.24963, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "occurs after all of the query processing is complete, which means that the query results are ", "bbox": {"l": 136.8, "t": 118.60852, "r": 542.35236, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "not at all based on the masked values. Any local selection, joining, grouping, or ordering ", "bbox": {"l": 136.8, "t": 130.60834, "r": 527.76294, "b": 139.82135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "operations are based on the unmasked column values. Only the final result set is the target of ", "bbox": {"l": 136.8, "t": 142.60815000000002, "r": 547.23962, "b": 151.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "the masking. ", "bbox": {"l": 136.8, "t": 154.60797000000002, "r": 196.23331, "b": 163.82097999999996, "coord_origin": "TOPLEFT"}}]}, "text": "An important design and implementation consideration is the fact that RCAC column masking occurs after all of the query processing is complete, which means that the query results are not at all based on the masked values. Any local selection, joining, grouping, or ordering operations are based on the unmasked column values. Only the final result set is the target of the masking."}, {"label": "text", "id": 4, "page_no": 101, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.015625, "t": 176.0285186767578, "r": 547.23254, "b": 198.28158569335938, "coord_origin": "TOPLEFT"}, "confidence": 0.9749656319618225, "cells": [{"id": 9, "text": "An example of this situation is shown in Figure 6-1. However, note that aggregate functions (a ", "bbox": {"l": 136.8, "t": 176.62756000000002, "r": 547.23254, "b": 185.84058000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "form of grouping) are based on masked values.", "bbox": {"l": 136.8, "t": 188.62738000000002, "r": 345.5368, "b": 197.84038999999996, "coord_origin": "TOPLEFT"}}]}, "text": "An example of this situation is shown in Figure 6-1. However, note that aggregate functions (a form of grouping) are based on masked values."}, {"label": "caption", "id": 5, "page_no": 101, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.17198181152344, "t": 472.1231689453125, "r": 290.1625061035156, "b": 481.7851867675781, "coord_origin": "TOPLEFT"}, "confidence": 0.9372553825378418, "cells": [{"id": 11, "text": "Figure 6-1 Timing of column masking", "bbox": {"l": 136.8, "t": 472.578, "r": 289.59567, "b": 480.90302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-1 Timing of column masking"}, {"label": "text", "id": 6, "page_no": 101, "cluster": {"id": 6, "label": "text", "bbox": {"l": 222.81260681152344, "t": 223.79876708984375, "r": 250.3378143310547, "b": 232.33582, "coord_origin": "TOPLEFT"}, "confidence": 0.6529437899589539, "cells": [{"id": 12, "text": "SELECT", "bbox": {"l": 223.54629999999997, "t": 224.41350999999997, "r": 250.22076000000004, "b": 232.33582, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT"}, {"label": "text", "id": 7, "page_no": 101, "cluster": {"id": 7, "label": "text", "bbox": {"l": 289.8625183105469, "t": 223.75645446777344, "r": 386.13547, "b": 232.33582, "coord_origin": "TOPLEFT"}, "confidence": 0.6274991631507874, "cells": [{"id": 13, "text": "CREDIT_CARD_NUMBER,", "bbox": {"l": 290.24081, "t": 224.41350999999997, "r": 386.13547, "b": 232.33582, "coord_origin": "TOPLEFT"}}]}, "text": "CREDIT_CARD_NUMBER,"}, {"label": "text", "id": 8, "page_no": 101, "cluster": {"id": 8, "label": "text", "bbox": {"l": 290.2482, "t": 235.53063999999995, "r": 389.2164, "b": 254.56989, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 14, "text": "SUM(AMOUNT) AS TOTAL", "bbox": {"l": 290.2482, "t": 235.53063999999995, "r": 389.2164, "b": 243.45294, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "TRANSACTIONS", "bbox": {"l": 290.24869, "t": 246.64757999999995, "r": 350.20563, "b": 254.56989, "coord_origin": "TOPLEFT"}}]}, "text": "SUM(AMOUNT) AS TOTAL TRANSACTIONS"}, {"label": "text", "id": 9, "page_no": 101, "cluster": {"id": 9, "label": "text", "bbox": {"l": 223.27870178222656, "t": 245.79042053222656, "r": 247.33633422851562, "b": 254.56989, "coord_origin": "TOPLEFT"}, "confidence": 0.7264513373374939, "cells": [{"id": 15, "text": "FROM", "bbox": {"l": 223.54629999999997, "t": 246.64757999999995, "r": 247.25089, "b": 254.56989, "coord_origin": "TOPLEFT"}}]}, "text": "FROM"}, {"label": "text", "id": 10, "page_no": 101, "cluster": {"id": 10, "label": "text", "bbox": {"l": 223.30404663085938, "t": 256.77313232421875, "r": 264.05712890625, "b": 265.68701, "coord_origin": "TOPLEFT"}, "confidence": 0.739473283290863, "cells": [{"id": 17, "text": "GROUP BY", "bbox": {"l": 223.54629999999997, "t": 257.76471000000004, "r": 263.57651, "b": 265.68701, "coord_origin": "TOPLEFT"}}]}, "text": "GROUP BY"}, {"label": "text", "id": 11, "page_no": 101, "cluster": {"id": 11, "label": "text", "bbox": {"l": 289.9476623535156, "t": 256.7027893066406, "r": 384.1680908203125, "b": 265.68701, "coord_origin": "TOPLEFT"}, "confidence": 0.727581799030304, "cells": [{"id": 18, "text": "CREDIT_CARD_NUMBER", "bbox": {"l": 290.2843, "t": 257.76471000000004, "r": 383.71991, "b": 265.68701, "coord_origin": "TOPLEFT"}}]}, "text": "CREDIT_CARD_NUMBER"}, {"label": "text", "id": 12, "page_no": 101, "cluster": {"id": 12, "label": "text", "bbox": {"l": 223.270263671875, "t": 268.14324951171875, "r": 262.7109680175781, "b": 276.80413999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.74038165807724, "cells": [{"id": 19, "text": "ORDER BY", "bbox": {"l": 223.54629999999997, "t": 268.88184, "r": 262.38541, "b": 276.80413999999996, "coord_origin": "TOPLEFT"}}]}, "text": "ORDER BY"}, {"label": "text", "id": 13, "page_no": 101, "cluster": {"id": 13, "label": "text", "bbox": {"l": 290.0070495605469, "t": 267.8889465332031, "r": 386.24557, "b": 277.3880920410156, "coord_origin": "TOPLEFT"}, "confidence": 0.754478394985199, "cells": [{"id": 20, "text": "CREDIT_CARD_NUMBER;", "bbox": {"l": 290.28986, "t": 268.88184, "r": 386.24557, "b": 276.80413999999996, "coord_origin": "TOPLEFT"}}]}, "text": "CREDIT_CARD_NUMBER;"}, {"label": "table", "id": 14, "page_no": 101, "cluster": {"id": 14, "label": "table", "bbox": {"l": 143.16891479492188, "t": 312.9064636230469, "r": 300.13482666015625, "b": 464.53564453125, "coord_origin": "TOPLEFT"}, "confidence": 0.938347578048706, "cells": [{"id": 21, "text": "CREDIT CARD NUMBER", "bbox": {"l": 149.4512, "t": 317.02898999999996, "r": 233.62379, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "TOTAL", "bbox": {"l": 257.74921, "t": 317.02898999999996, "r": 279.16821, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "_", "bbox": {"l": 174.2422, "t": 317.02898999999996, "r": 178.39442, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "_", "bbox": {"l": 197.80983, "t": 317.02898999999996, "r": 201.96205, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "3785 0000 0000 1234", "bbox": {"l": 148.50592, "t": 330.5637500000001, "r": 221.83939, "b": 337.69257, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "233.50", "bbox": {"l": 272.4223, "t": 330.5637500000001, "r": 295.64975, "b": 337.69257, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "3785 1111 1111 1234", "bbox": {"l": 148.50592, "t": 344.07098, "r": 221.83853, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "105.10", "bbox": {"l": 272.42145, "t": 344.07098, "r": 295.6489, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "3785 2222 2222 1234", "bbox": {"l": 148.5062, "t": 357.60629, "r": 221.84132000000002, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "300 00", "bbox": {"l": 272.40579, "t": 357.60629, "r": 295.64658, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "300.00", "bbox": {"l": 272.40579, "t": 357.60629, "r": 295.6427, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "3785 3333 3333 1234", "bbox": {"l": 148.5062, "t": 371.1413, "r": 221.85214, "b": 378.27011, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "1,775.00", "bbox": {"l": 266.12503, "t": 371.1413, "r": 295.66751, "b": 378.27011, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "5466 4444 4444 1234", "bbox": {"l": 148.5062, "t": 384.64853, "r": 221.83881000000002, "b": 391.77734, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "601.70", "bbox": {"l": 272.42175, "t": 384.64853, "r": 295.6492, "b": 391.77734, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "5466 5555 5555 1234", "bbox": {"l": 148.5062, "t": 398.18347, "r": 221.83881000000002, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "37.80", "bbox": {"l": 276.64648, "t": 398.18347, "r": 295.64832, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "5466 6666 6666 1234", "bbox": {"l": 148.5062, "t": 411.71823, "r": 221.83881000000002, "b": 418.84705, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "490.45", "bbox": {"l": 272.42175, "t": 411.71823, "r": 295.6492, "b": 418.84705, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "6011 7777 7777 1234", "bbox": {"l": 148.5062, "t": 425.2258, "r": 221.84132000000002, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "1005.00", "bbox": {"l": 268.1813, "t": 425.2258, "r": 295.64603, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "6011 8888 8888 1234", "bbox": {"l": 148.5062, "t": 438.76077, "r": 221.83881000000002, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "750.33", "bbox": {"l": 272.42175, "t": 438.76077, "r": 295.6492, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "6011 9999 9999 0001", "bbox": {"l": 148.5062, "t": 452.29553, "r": 221.83881000000002, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "10.00", "bbox": {"l": 276.64648, "t": 452.29553, "r": 295.64832, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl"], "num_rows": 11, "num_cols": 2, "table_cells": [{"bbox": {"l": 149.4512, "t": 317.02898999999996, "r": 233.62379, "b": 324.16614, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CREDIT CARD NUMBER _ _", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 257.74921, "t": 317.02898999999996, "r": 279.16821, "b": 324.16614, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "TOTAL", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 148.50592, "t": 330.5637500000001, "r": 221.83939, "b": 337.69257, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3785 0000 0000 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 272.4223, "t": 330.5637500000001, "r": 295.64975, "b": 337.69257, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "233.50", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.50592, "t": 344.07098, "r": 221.83853, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3785 1111 1111 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 272.42145, "t": 344.07098, "r": 295.6489, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "105.10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.5062, "t": 357.60629, "r": 221.84132000000002, "b": 364.73511, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3785 2222 2222 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 272.40579, "t": 357.60629, "r": 295.64658, "b": 364.73511, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "300 00 300.00", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.5062, "t": 371.1413, "r": 221.85214, "b": 378.27011, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3785 3333 3333 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 266.12503, "t": 371.1413, "r": 295.66751, "b": 378.27011, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "1,775.00", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.5062, "t": 384.64853, "r": 221.83881000000002, "b": 391.77734, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "5466 4444 4444 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 272.42175, "t": 384.64853, "r": 295.6492, "b": 391.77734, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "601.70", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.5062, "t": 398.18347, "r": 221.83881000000002, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "5466 5555 5555 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 276.64648, "t": 398.18347, "r": 295.64832, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "37.80", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.5062, "t": 411.71823, "r": 221.83881000000002, "b": 418.84705, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "5466 6666 6666 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 272.42175, "t": 411.71823, "r": 295.6492, "b": 418.84705, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "490.45", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.5062, "t": 425.2258, "r": 221.84132000000002, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "6011 7777 7777 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 268.1813, "t": 425.2258, "r": 295.64603, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "1005.00", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.5062, "t": 438.76077, "r": 221.83881000000002, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "6011 8888 8888 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 272.42175, "t": 438.76077, "r": 295.6492, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "750.33", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.5062, "t": 452.29553, "r": 221.83881000000002, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "6011 9999 9999 0001", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 276.64648, "t": 452.29553, "r": 295.64832, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "10.00", "column_header": false, "row_header": false, "row_section": false}]}, {"label": "table", "id": 15, "page_no": 101, "cluster": {"id": 15, "label": "table", "bbox": {"l": 313.3494567871094, "t": 312.5643005371094, "r": 470.7187805175781, "b": 464.93182373046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9333541393280029, "cells": [{"id": 23, "text": "CREDIT CARD NUMBER", "bbox": {"l": 318.98621, "t": 317.02898999999996, "r": 403.15881, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "TOTAL", "bbox": {"l": 427.28424, "t": 317.02898999999996, "r": 448.70325, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "_", "bbox": {"l": 343.77731, "t": 317.02898999999996, "r": 347.92953, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "_", "bbox": {"l": 367.34494, "t": 317.02898999999996, "r": 371.49716, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "**** **** **** 1234", "bbox": {"l": 318.04102, "t": 330.5637500000001, "r": 390.68494, "b": 337.69257, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "233.50", "bbox": {"l": 441.96823, "t": 330.5637500000001, "r": 465.16064, "b": 337.69257, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "**** **** **** 1234", "bbox": {"l": 318.04102, "t": 344.07098, "r": 390.68494, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "105.10", "bbox": {"l": 441.96823, "t": 344.07098, "r": 465.16064, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 357.60629, "r": 390.65433, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "300 00", "bbox": {"l": 441.94089, "t": 357.60629, "r": 465.18167, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "300.00", "bbox": {"l": 441.94089, "t": 357.60629, "r": 465.1777, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 371.1413, "r": 390.69855, "b": 378.27011, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "1,775.00", "bbox": {"l": 435.67264000000006, "t": 371.1413, "r": 465.16843000000006, "b": 378.27011, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 384.64853, "r": 390.68521, "b": 391.77734, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "601.70", "bbox": {"l": 441.96851, "t": 384.64853, "r": 465.1609199999999, "b": 391.77734, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 398.18347, "r": 390.68521, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "37.80", "bbox": {"l": 446.1933, "t": 398.18347, "r": 465.16595, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 411.71823, "r": 390.68521, "b": 418.84705, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "490.45", "bbox": {"l": 441.96851, "t": 411.71823, "r": 465.1609199999999, "b": 418.84705, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 425.22546, "r": 390.66788, "b": 432.35428, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "1005.00", "bbox": {"l": 437.7164, "t": 425.2258, "r": 465.18112, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": " 1234", "bbox": {"l": 371.76227, "t": 425.2258, "r": 390.66788, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 438.76077, "r": 390.68521, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "750.33", "bbox": {"l": 441.96851, "t": 438.76077, "r": 465.1609199999999, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "**** **** **** 0001", "bbox": {"l": 318.04129, "t": 452.29553, "r": 390.68521, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "10.00", "bbox": {"l": 446.1933, "t": 452.29553, "r": 465.16595, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl"], "num_rows": 11, "num_cols": 2, "table_cells": [{"bbox": {"l": 318.98621, "t": 317.02898999999996, "r": 403.15881, "b": 324.16614, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CREDIT CARD NUMBER _ _", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 427.28424, "t": 317.02898999999996, "r": 448.70325, "b": 324.16614, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "TOTAL", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04102, "t": 330.5637500000001, "r": 390.68494, "b": 337.69257, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 441.96823, "t": 330.5637500000001, "r": 465.16064, "b": 337.69257, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "233.50", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04102, "t": 344.07098, "r": 390.68494, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 441.96823, "t": 344.07098, "r": 465.16064, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "105.10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04129, "t": 357.60629, "r": 390.65433, "b": 364.73511, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 441.94089, "t": 357.60629, "r": 465.18167, "b": 364.73511, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "300 00 300.00", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04129, "t": 371.1413, "r": 390.69855, "b": 378.27011, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 435.67264000000006, "t": 371.1413, "r": 465.16843000000006, "b": 378.27011, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "1,775.00", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04129, "t": 384.64853, "r": 390.68521, "b": 391.77734, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 441.96851, "t": 384.64853, "r": 465.1609199999999, "b": 391.77734, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "601.70", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04129, "t": 398.18347, "r": 390.68521, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 446.1933, "t": 398.18347, "r": 465.16595, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "37.80", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04129, "t": 411.71823, "r": 390.68521, "b": 418.84705, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 441.96851, "t": 411.71823, "r": 465.1609199999999, "b": 418.84705, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "490.45", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04129, "t": 425.22546, "r": 390.66788, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 437.7164, "t": 425.2258, "r": 465.18112, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "1005.00", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04129, "t": 438.76077, "r": 390.68521, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 441.96851, "t": 438.76077, "r": 465.1609199999999, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "750.33", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04129, "t": 452.29553, "r": 390.68521, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 0001", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 446.1933, "t": 452.29553, "r": 465.16595, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "10.00", "column_header": false, "row_header": false, "row_section": false}]}, {"label": "section_header", "id": 16, "page_no": 101, "cluster": {"id": 16, "label": "section_header", "bbox": {"l": 160.457, "t": 297.8916931152344, "r": 285.01361083984375, "b": 310.3793, "coord_origin": "TOPLEFT"}, "confidence": 0.8418190479278564, "cells": [{"id": 25, "text": "Without ", "bbox": {"l": 160.457, "t": 298.77588, "r": 207.85185, "b": 310.3793, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "RCAC Masking", "bbox": {"l": 207.84406, "t": 298.76291, "r": 284.9068, "b": 309.87311, "coord_origin": "TOPLEFT"}}]}, "text": "Without RCAC Masking"}, {"label": "section_header", "id": 17, "page_no": 101, "cluster": {"id": 17, "label": "section_header", "bbox": {"l": 341.02625, "t": 297.97357177734375, "r": 447.76593017578125, "b": 310.3793, "coord_origin": "TOPLEFT"}, "confidence": 0.8612884283065796, "cells": [{"id": 27, "text": "With ", "bbox": {"l": 341.02625, "t": 298.77588, "r": 370.2554, "b": 310.3793, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "RCAC Masking", "bbox": {"l": 370.23593, "t": 298.76291, "r": 447.29868000000005, "b": 309.87311, "coord_origin": "TOPLEFT"}}]}, "text": "With RCAC Masking"}], "body": [{"label": "section_header", "id": 2, "page_no": 101, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.63821411132812, "t": 73.412353515625, "r": 298.45441, "b": 89.93876647949219, "coord_origin": "TOPLEFT"}, "confidence": 0.9695685505867004, "cells": [{"id": 2, "text": "6.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.453255, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Timing of column masking", "bbox": {"l": 91.983902, "t": 74.34069999999997, "r": 298.45441, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, "text": "6.1 Timing of column masking"}, {"label": "text", "id": 3, "page_no": 101, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.9453887939453, "t": 105.85498046875, "r": 547.24963, "b": 164.5647430419922, "coord_origin": "TOPLEFT"}, "confidence": 0.9870750308036804, "cells": [{"id": 4, "text": "An important design and implementation consideration is the fact that RCAC column masking ", "bbox": {"l": 136.8, "t": 106.6087, "r": 547.24963, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "occurs after all of the query processing is complete, which means that the query results are ", "bbox": {"l": 136.8, "t": 118.60852, "r": 542.35236, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "not at all based on the masked values. Any local selection, joining, grouping, or ordering ", "bbox": {"l": 136.8, "t": 130.60834, "r": 527.76294, "b": 139.82135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "operations are based on the unmasked column values. Only the final result set is the target of ", "bbox": {"l": 136.8, "t": 142.60815000000002, "r": 547.23962, "b": 151.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "the masking. ", "bbox": {"l": 136.8, "t": 154.60797000000002, "r": 196.23331, "b": 163.82097999999996, "coord_origin": "TOPLEFT"}}]}, "text": "An important design and implementation consideration is the fact that RCAC column masking occurs after all of the query processing is complete, which means that the query results are not at all based on the masked values. Any local selection, joining, grouping, or ordering operations are based on the unmasked column values. Only the final result set is the target of the masking."}, {"label": "text", "id": 4, "page_no": 101, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.015625, "t": 176.0285186767578, "r": 547.23254, "b": 198.28158569335938, "coord_origin": "TOPLEFT"}, "confidence": 0.9749656319618225, "cells": [{"id": 9, "text": "An example of this situation is shown in Figure 6-1. However, note that aggregate functions (a ", "bbox": {"l": 136.8, "t": 176.62756000000002, "r": 547.23254, "b": 185.84058000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "form of grouping) are based on masked values.", "bbox": {"l": 136.8, "t": 188.62738000000002, "r": 345.5368, "b": 197.84038999999996, "coord_origin": "TOPLEFT"}}]}, "text": "An example of this situation is shown in Figure 6-1. However, note that aggregate functions (a form of grouping) are based on masked values."}, {"label": "caption", "id": 5, "page_no": 101, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.17198181152344, "t": 472.1231689453125, "r": 290.1625061035156, "b": 481.7851867675781, "coord_origin": "TOPLEFT"}, "confidence": 0.9372553825378418, "cells": [{"id": 11, "text": "Figure 6-1 Timing of column masking", "bbox": {"l": 136.8, "t": 472.578, "r": 289.59567, "b": 480.90302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-1 Timing of column masking"}, {"label": "text", "id": 6, "page_no": 101, "cluster": {"id": 6, "label": "text", "bbox": {"l": 222.81260681152344, "t": 223.79876708984375, "r": 250.3378143310547, "b": 232.33582, "coord_origin": "TOPLEFT"}, "confidence": 0.6529437899589539, "cells": [{"id": 12, "text": "SELECT", "bbox": {"l": 223.54629999999997, "t": 224.41350999999997, "r": 250.22076000000004, "b": 232.33582, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT"}, {"label": "text", "id": 7, "page_no": 101, "cluster": {"id": 7, "label": "text", "bbox": {"l": 289.8625183105469, "t": 223.75645446777344, "r": 386.13547, "b": 232.33582, "coord_origin": "TOPLEFT"}, "confidence": 0.6274991631507874, "cells": [{"id": 13, "text": "CREDIT_CARD_NUMBER,", "bbox": {"l": 290.24081, "t": 224.41350999999997, "r": 386.13547, "b": 232.33582, "coord_origin": "TOPLEFT"}}]}, "text": "CREDIT_CARD_NUMBER,"}, {"label": "text", "id": 8, "page_no": 101, "cluster": {"id": 8, "label": "text", "bbox": {"l": 290.2482, "t": 235.53063999999995, "r": 389.2164, "b": 254.56989, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 14, "text": "SUM(AMOUNT) AS TOTAL", "bbox": {"l": 290.2482, "t": 235.53063999999995, "r": 389.2164, "b": 243.45294, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "TRANSACTIONS", "bbox": {"l": 290.24869, "t": 246.64757999999995, "r": 350.20563, "b": 254.56989, "coord_origin": "TOPLEFT"}}]}, "text": "SUM(AMOUNT) AS TOTAL TRANSACTIONS"}, {"label": "text", "id": 9, "page_no": 101, "cluster": {"id": 9, "label": "text", "bbox": {"l": 223.27870178222656, "t": 245.79042053222656, "r": 247.33633422851562, "b": 254.56989, "coord_origin": "TOPLEFT"}, "confidence": 0.7264513373374939, "cells": [{"id": 15, "text": "FROM", "bbox": {"l": 223.54629999999997, "t": 246.64757999999995, "r": 247.25089, "b": 254.56989, "coord_origin": "TOPLEFT"}}]}, "text": "FROM"}, {"label": "text", "id": 10, "page_no": 101, "cluster": {"id": 10, "label": "text", "bbox": {"l": 223.30404663085938, "t": 256.77313232421875, "r": 264.05712890625, "b": 265.68701, "coord_origin": "TOPLEFT"}, "confidence": 0.739473283290863, "cells": [{"id": 17, "text": "GROUP BY", "bbox": {"l": 223.54629999999997, "t": 257.76471000000004, "r": 263.57651, "b": 265.68701, "coord_origin": "TOPLEFT"}}]}, "text": "GROUP BY"}, {"label": "text", "id": 11, "page_no": 101, "cluster": {"id": 11, "label": "text", "bbox": {"l": 289.9476623535156, "t": 256.7027893066406, "r": 384.1680908203125, "b": 265.68701, "coord_origin": "TOPLEFT"}, "confidence": 0.727581799030304, "cells": [{"id": 18, "text": "CREDIT_CARD_NUMBER", "bbox": {"l": 290.2843, "t": 257.76471000000004, "r": 383.71991, "b": 265.68701, "coord_origin": "TOPLEFT"}}]}, "text": "CREDIT_CARD_NUMBER"}, {"label": "text", "id": 12, "page_no": 101, "cluster": {"id": 12, "label": "text", "bbox": {"l": 223.270263671875, "t": 268.14324951171875, "r": 262.7109680175781, "b": 276.80413999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.74038165807724, "cells": [{"id": 19, "text": "ORDER BY", "bbox": {"l": 223.54629999999997, "t": 268.88184, "r": 262.38541, "b": 276.80413999999996, "coord_origin": "TOPLEFT"}}]}, "text": "ORDER BY"}, {"label": "text", "id": 13, "page_no": 101, "cluster": {"id": 13, "label": "text", "bbox": {"l": 290.0070495605469, "t": 267.8889465332031, "r": 386.24557, "b": 277.3880920410156, "coord_origin": "TOPLEFT"}, "confidence": 0.754478394985199, "cells": [{"id": 20, "text": "CREDIT_CARD_NUMBER;", "bbox": {"l": 290.28986, "t": 268.88184, "r": 386.24557, "b": 276.80413999999996, "coord_origin": "TOPLEFT"}}]}, "text": "CREDIT_CARD_NUMBER;"}, {"label": "table", "id": 14, "page_no": 101, "cluster": {"id": 14, "label": "table", "bbox": {"l": 143.16891479492188, "t": 312.9064636230469, "r": 300.13482666015625, "b": 464.53564453125, "coord_origin": "TOPLEFT"}, "confidence": 0.938347578048706, "cells": [{"id": 21, "text": "CREDIT CARD NUMBER", "bbox": {"l": 149.4512, "t": 317.02898999999996, "r": 233.62379, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "TOTAL", "bbox": {"l": 257.74921, "t": 317.02898999999996, "r": 279.16821, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "_", "bbox": {"l": 174.2422, "t": 317.02898999999996, "r": 178.39442, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "_", "bbox": {"l": 197.80983, "t": 317.02898999999996, "r": 201.96205, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "3785 0000 0000 1234", "bbox": {"l": 148.50592, "t": 330.5637500000001, "r": 221.83939, "b": 337.69257, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "233.50", "bbox": {"l": 272.4223, "t": 330.5637500000001, "r": 295.64975, "b": 337.69257, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "3785 1111 1111 1234", "bbox": {"l": 148.50592, "t": 344.07098, "r": 221.83853, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "105.10", "bbox": {"l": 272.42145, "t": 344.07098, "r": 295.6489, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "3785 2222 2222 1234", "bbox": {"l": 148.5062, "t": 357.60629, "r": 221.84132000000002, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "300 00", "bbox": {"l": 272.40579, "t": 357.60629, "r": 295.64658, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "300.00", "bbox": {"l": 272.40579, "t": 357.60629, "r": 295.6427, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "3785 3333 3333 1234", "bbox": {"l": 148.5062, "t": 371.1413, "r": 221.85214, "b": 378.27011, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "1,775.00", "bbox": {"l": 266.12503, "t": 371.1413, "r": 295.66751, "b": 378.27011, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "5466 4444 4444 1234", "bbox": {"l": 148.5062, "t": 384.64853, "r": 221.83881000000002, "b": 391.77734, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "601.70", "bbox": {"l": 272.42175, "t": 384.64853, "r": 295.6492, "b": 391.77734, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "5466 5555 5555 1234", "bbox": {"l": 148.5062, "t": 398.18347, "r": 221.83881000000002, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "37.80", "bbox": {"l": 276.64648, "t": 398.18347, "r": 295.64832, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "5466 6666 6666 1234", "bbox": {"l": 148.5062, "t": 411.71823, "r": 221.83881000000002, "b": 418.84705, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "490.45", "bbox": {"l": 272.42175, "t": 411.71823, "r": 295.6492, "b": 418.84705, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "6011 7777 7777 1234", "bbox": {"l": 148.5062, "t": 425.2258, "r": 221.84132000000002, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "1005.00", "bbox": {"l": 268.1813, "t": 425.2258, "r": 295.64603, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "6011 8888 8888 1234", "bbox": {"l": 148.5062, "t": 438.76077, "r": 221.83881000000002, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "750.33", "bbox": {"l": 272.42175, "t": 438.76077, "r": 295.6492, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "6011 9999 9999 0001", "bbox": {"l": 148.5062, "t": 452.29553, "r": 221.83881000000002, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "10.00", "bbox": {"l": 276.64648, "t": 452.29553, "r": 295.64832, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl"], "num_rows": 11, "num_cols": 2, "table_cells": [{"bbox": {"l": 149.4512, "t": 317.02898999999996, "r": 233.62379, "b": 324.16614, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CREDIT CARD NUMBER _ _", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 257.74921, "t": 317.02898999999996, "r": 279.16821, "b": 324.16614, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "TOTAL", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 148.50592, "t": 330.5637500000001, "r": 221.83939, "b": 337.69257, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3785 0000 0000 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 272.4223, "t": 330.5637500000001, "r": 295.64975, "b": 337.69257, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "233.50", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.50592, "t": 344.07098, "r": 221.83853, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3785 1111 1111 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 272.42145, "t": 344.07098, "r": 295.6489, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "105.10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.5062, "t": 357.60629, "r": 221.84132000000002, "b": 364.73511, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3785 2222 2222 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 272.40579, "t": 357.60629, "r": 295.64658, "b": 364.73511, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "300 00 300.00", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.5062, "t": 371.1413, "r": 221.85214, "b": 378.27011, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3785 3333 3333 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 266.12503, "t": 371.1413, "r": 295.66751, "b": 378.27011, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "1,775.00", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.5062, "t": 384.64853, "r": 221.83881000000002, "b": 391.77734, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "5466 4444 4444 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 272.42175, "t": 384.64853, "r": 295.6492, "b": 391.77734, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "601.70", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.5062, "t": 398.18347, "r": 221.83881000000002, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "5466 5555 5555 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 276.64648, "t": 398.18347, "r": 295.64832, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "37.80", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.5062, "t": 411.71823, "r": 221.83881000000002, "b": 418.84705, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "5466 6666 6666 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 272.42175, "t": 411.71823, "r": 295.6492, "b": 418.84705, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "490.45", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.5062, "t": 425.2258, "r": 221.84132000000002, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "6011 7777 7777 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 268.1813, "t": 425.2258, "r": 295.64603, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "1005.00", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.5062, "t": 438.76077, "r": 221.83881000000002, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "6011 8888 8888 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 272.42175, "t": 438.76077, "r": 295.6492, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "750.33", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.5062, "t": 452.29553, "r": 221.83881000000002, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "6011 9999 9999 0001", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 276.64648, "t": 452.29553, "r": 295.64832, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "10.00", "column_header": false, "row_header": false, "row_section": false}]}, {"label": "table", "id": 15, "page_no": 101, "cluster": {"id": 15, "label": "table", "bbox": {"l": 313.3494567871094, "t": 312.5643005371094, "r": 470.7187805175781, "b": 464.93182373046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9333541393280029, "cells": [{"id": 23, "text": "CREDIT CARD NUMBER", "bbox": {"l": 318.98621, "t": 317.02898999999996, "r": 403.15881, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "TOTAL", "bbox": {"l": 427.28424, "t": 317.02898999999996, "r": 448.70325, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "_", "bbox": {"l": 343.77731, "t": 317.02898999999996, "r": 347.92953, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "_", "bbox": {"l": 367.34494, "t": 317.02898999999996, "r": 371.49716, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "**** **** **** 1234", "bbox": {"l": 318.04102, "t": 330.5637500000001, "r": 390.68494, "b": 337.69257, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "233.50", "bbox": {"l": 441.96823, "t": 330.5637500000001, "r": 465.16064, "b": 337.69257, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "**** **** **** 1234", "bbox": {"l": 318.04102, "t": 344.07098, "r": 390.68494, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "105.10", "bbox": {"l": 441.96823, "t": 344.07098, "r": 465.16064, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 357.60629, "r": 390.65433, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "300 00", "bbox": {"l": 441.94089, "t": 357.60629, "r": 465.18167, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "300.00", "bbox": {"l": 441.94089, "t": 357.60629, "r": 465.1777, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 371.1413, "r": 390.69855, "b": 378.27011, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "1,775.00", "bbox": {"l": 435.67264000000006, "t": 371.1413, "r": 465.16843000000006, "b": 378.27011, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 384.64853, "r": 390.68521, "b": 391.77734, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "601.70", "bbox": {"l": 441.96851, "t": 384.64853, "r": 465.1609199999999, "b": 391.77734, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 398.18347, "r": 390.68521, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "37.80", "bbox": {"l": 446.1933, "t": 398.18347, "r": 465.16595, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 411.71823, "r": 390.68521, "b": 418.84705, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "490.45", "bbox": {"l": 441.96851, "t": 411.71823, "r": 465.1609199999999, "b": 418.84705, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 425.22546, "r": 390.66788, "b": 432.35428, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "1005.00", "bbox": {"l": 437.7164, "t": 425.2258, "r": 465.18112, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": " 1234", "bbox": {"l": 371.76227, "t": 425.2258, "r": 390.66788, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 438.76077, "r": 390.68521, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "750.33", "bbox": {"l": 441.96851, "t": 438.76077, "r": 465.1609199999999, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "**** **** **** 0001", "bbox": {"l": 318.04129, "t": 452.29553, "r": 390.68521, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "10.00", "bbox": {"l": 446.1933, "t": 452.29553, "r": 465.16595, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl"], "num_rows": 11, "num_cols": 2, "table_cells": [{"bbox": {"l": 318.98621, "t": 317.02898999999996, "r": 403.15881, "b": 324.16614, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CREDIT CARD NUMBER _ _", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 427.28424, "t": 317.02898999999996, "r": 448.70325, "b": 324.16614, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "TOTAL", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04102, "t": 330.5637500000001, "r": 390.68494, "b": 337.69257, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 441.96823, "t": 330.5637500000001, "r": 465.16064, "b": 337.69257, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "233.50", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04102, "t": 344.07098, "r": 390.68494, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 441.96823, "t": 344.07098, "r": 465.16064, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "105.10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04129, "t": 357.60629, "r": 390.65433, "b": 364.73511, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 441.94089, "t": 357.60629, "r": 465.18167, "b": 364.73511, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "300 00 300.00", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04129, "t": 371.1413, "r": 390.69855, "b": 378.27011, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 435.67264000000006, "t": 371.1413, "r": 465.16843000000006, "b": 378.27011, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "1,775.00", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04129, "t": 384.64853, "r": 390.68521, "b": 391.77734, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 441.96851, "t": 384.64853, "r": 465.1609199999999, "b": 391.77734, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "601.70", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04129, "t": 398.18347, "r": 390.68521, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 446.1933, "t": 398.18347, "r": 465.16595, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "37.80", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04129, "t": 411.71823, "r": 390.68521, "b": 418.84705, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 441.96851, "t": 411.71823, "r": 465.1609199999999, "b": 418.84705, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "490.45", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04129, "t": 425.22546, "r": 390.66788, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 437.7164, "t": 425.2258, "r": 465.18112, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "1005.00", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04129, "t": 438.76077, "r": 390.68521, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 441.96851, "t": 438.76077, "r": 465.1609199999999, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "750.33", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04129, "t": 452.29553, "r": 390.68521, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 0001", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 446.1933, "t": 452.29553, "r": 465.16595, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "10.00", "column_header": false, "row_header": false, "row_section": false}]}, {"label": "section_header", "id": 16, "page_no": 101, "cluster": {"id": 16, "label": "section_header", "bbox": {"l": 160.457, "t": 297.8916931152344, "r": 285.01361083984375, "b": 310.3793, "coord_origin": "TOPLEFT"}, "confidence": 0.8418190479278564, "cells": [{"id": 25, "text": "Without ", "bbox": {"l": 160.457, "t": 298.77588, "r": 207.85185, "b": 310.3793, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "RCAC Masking", "bbox": {"l": 207.84406, "t": 298.76291, "r": 284.9068, "b": 309.87311, "coord_origin": "TOPLEFT"}}]}, "text": "Without RCAC Masking"}, {"label": "section_header", "id": 17, "page_no": 101, "cluster": {"id": 17, "label": "section_header", "bbox": {"l": 341.02625, "t": 297.97357177734375, "r": 447.76593017578125, "b": 310.3793, "coord_origin": "TOPLEFT"}, "confidence": 0.8612884283065796, "cells": [{"id": 27, "text": "With ", "bbox": {"l": 341.02625, "t": 298.77588, "r": 370.2554, "b": 310.3793, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "RCAC Masking", "bbox": {"l": 370.23593, "t": 298.76291, "r": 447.29868000000005, "b": 309.87311, "coord_origin": "TOPLEFT"}}]}, "text": "With RCAC Masking"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 101, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.28016662597656, "t": 754.42529296875, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9138955473899841, "cells": [{"id": 0, "text": "86 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "86"}, {"label": "page_footer", "id": 1, "page_no": 101, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.40719604492188, "t": 754.6533813476562, "r": 334.42142, "b": 763.9609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9498723745346069, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 102, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "87", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Conversely, field procedure masking causes the column values to be changed (that is, ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 518.83441, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "masked) and stored in the row. When the table is queried and the masked columns are ", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 522.90308, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "referenced, the masked data is used for any local selection, joining, grouping, or ordering ", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 531.92255, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "operations. This situation can have a profound effect on the query\u2019s final result set and not ", "bbox": {"l": 136.79959, "t": 107.50847999999996, "r": 536.70471, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "just on the column values that are returned. Field procedure masking occurs when the ", "bbox": {"l": 136.79959, "t": 119.50829999999996, "r": 519.66205, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "column values are read from disk before any query processing. RCAC masking occurs when ", "bbox": {"l": 136.79959, "t": 131.50811999999996, "r": 547.14746, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "the column values are returned to the application after query processing. This difference in ", "bbox": {"l": 136.79959, "t": 143.50793, "r": 538.93219, "b": 152.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "behavior is shown in Figure 6-2.", "bbox": {"l": 136.79959, "t": 155.50775, "r": 278.22067, "b": 164.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Figure 6-2 Masking differences between Fieldproc and RCAC", "bbox": {"l": 136.8, "t": 532.9379, "r": 385.92093, "b": 541.26291, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Note:", "bbox": {"l": 142.8, "t": 183.52868999999998, "r": 168.33246, "b": 192.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": " Column masks can influence an SQL ", "bbox": {"l": 168.36035, "t": 183.52868999999998, "r": 338.26401, "b": 192.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "INSERT", "bbox": {"l": 338.3407, "t": 183.67809999999997, "r": 368.28046, "b": 192.50269000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " or ", "bbox": {"l": 368.28046, "t": 183.52868999999998, "r": 382.79913, "b": 192.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "UPDATE", "bbox": {"l": 382.74039, "t": 183.67809999999997, "r": 412.68015, "b": 192.50269000000003, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ". For example, you cannot ", "bbox": {"l": 412.7399, "t": 183.52868999999998, "r": 530.08759, "b": 192.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "insert or update a table with column access control activated with masked data generated ", "bbox": {"l": 142.79999, "t": 195.5285, "r": 540.74689, "b": 204.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "from an expression within the same statement that is based on a column with a column ", "bbox": {"l": 142.79999, "t": 207.52832, "r": 529.61914, "b": 216.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "mask.", "bbox": {"l": 142.79999, "t": 219.52814, "r": 169.49278, "b": 228.74114999999995, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "RCAC", "bbox": {"l": 342.6669, "t": 353.21677, "r": 363.56644, "b": 361.33936000000006, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "SQE S l", "bbox": {"l": 196.25211, "t": 403.55573, "r": 232.60068, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "ti", "bbox": {"l": 242.64763, "t": 403.55573, "r": 247.37315, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "P", "bbox": {"l": 260.52017, "t": 403.55573, "r": 266.83984, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "i", "bbox": {"l": 294.80676, "t": 403.55573, "r": 296.90384, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Column mask", "bbox": {"l": 347.00021, "t": 364.60345, "r": 399.17926, "b": 372.71655000000004, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "processing", "bbox": {"l": 349.15137, "t": 375.99026, "r": 390.10114, "b": 384.10336, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "SQE Selecti", "bbox": {"l": 196.25211, "t": 403.55573, "r": 247.37483, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "on", "bbox": {"l": 247.3976, "t": 403.55573, "r": 257.95886, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Processing", "bbox": {"l": 260.52399, "t": 403.55573, "r": 307.49136, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "r3vS#45zt!J9*m$p6", "bbox": {"l": 212.0354, "t": 475.92493, "r": 294.86868, "b": 484.38913, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "FieldProc", "bbox": {"l": 336.34091, "t": 451.58566, "r": 372.53864, "b": 459.70825, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Decode and mask", "bbox": {"l": 338.87164, "t": 462.97247, "r": 407.23135, "b": 471.08557, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "processing", "bbox": {"l": 338.4921, "t": 474.35928, "r": 379.44186, "b": 482.47238, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 376.0430603027344, "t": 754.8911743164062, "r": 523.62878, "b": 764.1041870117188, "coord_origin": "TOPLEFT"}, "confidence": 0.951887309551239, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.6262817382812, "t": 754.2442016601562, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9136953949928284, "cells": [{"id": 1, "text": "87", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.76144409179688, "t": 70.67374420166016, "r": 547.14746, "b": 164.8749542236328, "coord_origin": "TOPLEFT"}, "confidence": 0.9858981370925903, "cells": [{"id": 2, "text": "Conversely, field procedure masking causes the column values to be changed (that is, ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 518.83441, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "masked) and stored in the row. When the table is queried and the masked columns are ", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 522.90308, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "referenced, the masked data is used for any local selection, joining, grouping, or ordering ", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 531.92255, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "operations. This situation can have a profound effect on the query\u2019s final result set and not ", "bbox": {"l": 136.79959, "t": 107.50847999999996, "r": 536.70471, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "just on the column values that are returned. Field procedure masking occurs when the ", "bbox": {"l": 136.79959, "t": 119.50829999999996, "r": 519.66205, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "column values are read from disk before any query processing. RCAC masking occurs when ", "bbox": {"l": 136.79959, "t": 131.50811999999996, "r": 547.14746, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "the column values are returned to the application after query processing. This difference in ", "bbox": {"l": 136.79959, "t": 143.50793, "r": 538.93219, "b": 152.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "behavior is shown in Figure 6-2.", "bbox": {"l": 136.79959, "t": 155.50775, "r": 278.22067, "b": 164.72076000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.22874450683594, "t": 531.9801025390625, "r": 386.6689758300781, "b": 541.701416015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9406759738922119, "cells": [{"id": 10, "text": "Figure 6-2 Masking differences between Fieldproc and RCAC", "bbox": {"l": 136.8, "t": 532.9379, "r": 385.92093, "b": 541.26291, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 142.0433349609375, "t": 182.4264373779297, "r": 540.74689, "b": 228.74114999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9510505199432373, "cells": [{"id": 11, "text": "Note:", "bbox": {"l": 142.8, "t": 183.52868999999998, "r": 168.33246, "b": 192.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": " Column masks can influence an SQL ", "bbox": {"l": 168.36035, "t": 183.52868999999998, "r": 338.26401, "b": 192.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "INSERT", "bbox": {"l": 338.3407, "t": 183.67809999999997, "r": 368.28046, "b": 192.50269000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " or ", "bbox": {"l": 368.28046, "t": 183.52868999999998, "r": 382.79913, "b": 192.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "UPDATE", "bbox": {"l": 382.74039, "t": 183.67809999999997, "r": 412.68015, "b": 192.50269000000003, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ". For example, you cannot ", "bbox": {"l": 412.7399, "t": 183.52868999999998, "r": 530.08759, "b": 192.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "insert or update a table with column access control activated with masked data generated ", "bbox": {"l": 142.79999, "t": 195.5285, "r": 540.74689, "b": 204.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "from an expression within the same statement that is based on a column with a column ", "bbox": {"l": 142.79999, "t": 207.52832, "r": 529.61914, "b": 216.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "mask.", "bbox": {"l": 142.79999, "t": 219.52814, "r": 169.49278, "b": 228.74114999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "picture", "bbox": {"l": 136.07940673828125, "t": 255.5457000732422, "r": 412.541015625, "b": 529.3939819335938, "coord_origin": "TOPLEFT"}, "confidence": 0.984312891960144, "cells": [{"id": 20, "text": "RCAC", "bbox": {"l": 342.6669, "t": 353.21677, "r": 363.56644, "b": 361.33936000000006, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "SQE S l", "bbox": {"l": 196.25211, "t": 403.55573, "r": 232.60068, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "ti", "bbox": {"l": 242.64763, "t": 403.55573, "r": 247.37315, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "P", "bbox": {"l": 260.52017, "t": 403.55573, "r": 266.83984, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "i", "bbox": {"l": 294.80676, "t": 403.55573, "r": 296.90384, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Column mask", "bbox": {"l": 347.00021, "t": 364.60345, "r": 399.17926, "b": 372.71655000000004, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "processing", "bbox": {"l": 349.15137, "t": 375.99026, "r": 390.10114, "b": 384.10336, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "SQE Selecti", "bbox": {"l": 196.25211, "t": 403.55573, "r": 247.37483, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "on", "bbox": {"l": 247.3976, "t": 403.55573, "r": 257.95886, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Processing", "bbox": {"l": 260.52399, "t": 403.55573, "r": 307.49136, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "r3vS#45zt!J9*m$p6", "bbox": {"l": 212.0354, "t": 475.92493, "r": 294.86868, "b": 484.38913, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "FieldProc", "bbox": {"l": 336.34091, "t": 451.58566, "r": 372.53864, "b": 459.70825, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Decode and mask", "bbox": {"l": 338.87164, "t": 462.97247, "r": 407.23135, "b": 471.08557, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "processing", "bbox": {"l": 338.4921, "t": 474.35928, "r": 379.44186, "b": 482.47238, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 102, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 376.0430603027344, "t": 754.8911743164062, "r": 523.62878, "b": 764.1041870117188, "coord_origin": "TOPLEFT"}, "confidence": 0.951887309551239, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 102, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6262817382812, "t": 754.2442016601562, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9136953949928284, "cells": [{"id": 1, "text": "87", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "87"}, {"label": "text", "id": 2, "page_no": 102, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.76144409179688, "t": 70.67374420166016, "r": 547.14746, "b": 164.8749542236328, "coord_origin": "TOPLEFT"}, "confidence": 0.9858981370925903, "cells": [{"id": 2, "text": "Conversely, field procedure masking causes the column values to be changed (that is, ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 518.83441, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "masked) and stored in the row. When the table is queried and the masked columns are ", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 522.90308, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "referenced, the masked data is used for any local selection, joining, grouping, or ordering ", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 531.92255, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "operations. This situation can have a profound effect on the query\u2019s final result set and not ", "bbox": {"l": 136.79959, "t": 107.50847999999996, "r": 536.70471, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "just on the column values that are returned. Field procedure masking occurs when the ", "bbox": {"l": 136.79959, "t": 119.50829999999996, "r": 519.66205, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "column values are read from disk before any query processing. RCAC masking occurs when ", "bbox": {"l": 136.79959, "t": 131.50811999999996, "r": 547.14746, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "the column values are returned to the application after query processing. This difference in ", "bbox": {"l": 136.79959, "t": 143.50793, "r": 538.93219, "b": 152.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "behavior is shown in Figure 6-2.", "bbox": {"l": 136.79959, "t": 155.50775, "r": 278.22067, "b": 164.72076000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Conversely, field procedure masking causes the column values to be changed (that is, masked) and stored in the row. When the table is queried and the masked columns are referenced, the masked data is used for any local selection, joining, grouping, or ordering operations. This situation can have a profound effect on the query\u2019s final result set and not just on the column values that are returned. Field procedure masking occurs when the column values are read from disk before any query processing. RCAC masking occurs when the column values are returned to the application after query processing. This difference in behavior is shown in Figure 6-2."}, {"label": "caption", "id": 3, "page_no": 102, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.22874450683594, "t": 531.9801025390625, "r": 386.6689758300781, "b": 541.701416015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9406759738922119, "cells": [{"id": 10, "text": "Figure 6-2 Masking differences between Fieldproc and RCAC", "bbox": {"l": 136.8, "t": 532.9379, "r": 385.92093, "b": 541.26291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-2 Masking differences between Fieldproc and RCAC"}, {"label": "text", "id": 4, "page_no": 102, "cluster": {"id": 4, "label": "text", "bbox": {"l": 142.0433349609375, "t": 182.4264373779297, "r": 540.74689, "b": 228.74114999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9510505199432373, "cells": [{"id": 11, "text": "Note:", "bbox": {"l": 142.8, "t": 183.52868999999998, "r": 168.33246, "b": 192.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": " Column masks can influence an SQL ", "bbox": {"l": 168.36035, "t": 183.52868999999998, "r": 338.26401, "b": 192.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "INSERT", "bbox": {"l": 338.3407, "t": 183.67809999999997, "r": 368.28046, "b": 192.50269000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " or ", "bbox": {"l": 368.28046, "t": 183.52868999999998, "r": 382.79913, "b": 192.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "UPDATE", "bbox": {"l": 382.74039, "t": 183.67809999999997, "r": 412.68015, "b": 192.50269000000003, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ". For example, you cannot ", "bbox": {"l": 412.7399, "t": 183.52868999999998, "r": 530.08759, "b": 192.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "insert or update a table with column access control activated with masked data generated ", "bbox": {"l": 142.79999, "t": 195.5285, "r": 540.74689, "b": 204.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "from an expression within the same statement that is based on a column with a column ", "bbox": {"l": 142.79999, "t": 207.52832, "r": 529.61914, "b": 216.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "mask.", "bbox": {"l": 142.79999, "t": 219.52814, "r": 169.49278, "b": 228.74114999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Note: Column masks can influence an SQL INSERT or UPDATE . For example, you cannot insert or update a table with column access control activated with masked data generated from an expression within the same statement that is based on a column with a column mask."}, {"label": "picture", "id": 5, "page_no": 102, "cluster": {"id": 5, "label": "picture", "bbox": {"l": 136.07940673828125, "t": 255.5457000732422, "r": 412.541015625, "b": 529.3939819335938, "coord_origin": "TOPLEFT"}, "confidence": 0.984312891960144, "cells": [{"id": 20, "text": "RCAC", "bbox": {"l": 342.6669, "t": 353.21677, "r": 363.56644, "b": 361.33936000000006, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "SQE S l", "bbox": {"l": 196.25211, "t": 403.55573, "r": 232.60068, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "ti", "bbox": {"l": 242.64763, "t": 403.55573, "r": 247.37315, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "P", "bbox": {"l": 260.52017, "t": 403.55573, "r": 266.83984, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "i", "bbox": {"l": 294.80676, "t": 403.55573, "r": 296.90384, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Column mask", "bbox": {"l": 347.00021, "t": 364.60345, "r": 399.17926, "b": 372.71655000000004, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "processing", "bbox": {"l": 349.15137, "t": 375.99026, "r": 390.10114, "b": 384.10336, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "SQE Selecti", "bbox": {"l": 196.25211, "t": 403.55573, "r": 247.37483, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "on", "bbox": {"l": 247.3976, "t": 403.55573, "r": 257.95886, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Processing", "bbox": {"l": 260.52399, "t": 403.55573, "r": 307.49136, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "r3vS#45zt!J9*m$p6", "bbox": {"l": 212.0354, "t": 475.92493, "r": 294.86868, "b": 484.38913, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "FieldProc", "bbox": {"l": 336.34091, "t": 451.58566, "r": 372.53864, "b": 459.70825, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Decode and mask", "bbox": {"l": 338.87164, "t": 462.97247, "r": 407.23135, "b": 471.08557, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "processing", "bbox": {"l": 338.4921, "t": 474.35928, "r": 379.44186, "b": 482.47238, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 102, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.76144409179688, "t": 70.67374420166016, "r": 547.14746, "b": 164.8749542236328, "coord_origin": "TOPLEFT"}, "confidence": 0.9858981370925903, "cells": [{"id": 2, "text": "Conversely, field procedure masking causes the column values to be changed (that is, ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 518.83441, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "masked) and stored in the row. When the table is queried and the masked columns are ", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 522.90308, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "referenced, the masked data is used for any local selection, joining, grouping, or ordering ", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 531.92255, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "operations. This situation can have a profound effect on the query\u2019s final result set and not ", "bbox": {"l": 136.79959, "t": 107.50847999999996, "r": 536.70471, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "just on the column values that are returned. Field procedure masking occurs when the ", "bbox": {"l": 136.79959, "t": 119.50829999999996, "r": 519.66205, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "column values are read from disk before any query processing. RCAC masking occurs when ", "bbox": {"l": 136.79959, "t": 131.50811999999996, "r": 547.14746, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "the column values are returned to the application after query processing. This difference in ", "bbox": {"l": 136.79959, "t": 143.50793, "r": 538.93219, "b": 152.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "behavior is shown in Figure 6-2.", "bbox": {"l": 136.79959, "t": 155.50775, "r": 278.22067, "b": 164.72076000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Conversely, field procedure masking causes the column values to be changed (that is, masked) and stored in the row. When the table is queried and the masked columns are referenced, the masked data is used for any local selection, joining, grouping, or ordering operations. This situation can have a profound effect on the query\u2019s final result set and not just on the column values that are returned. Field procedure masking occurs when the column values are read from disk before any query processing. RCAC masking occurs when the column values are returned to the application after query processing. This difference in behavior is shown in Figure 6-2."}, {"label": "caption", "id": 3, "page_no": 102, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.22874450683594, "t": 531.9801025390625, "r": 386.6689758300781, "b": 541.701416015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9406759738922119, "cells": [{"id": 10, "text": "Figure 6-2 Masking differences between Fieldproc and RCAC", "bbox": {"l": 136.8, "t": 532.9379, "r": 385.92093, "b": 541.26291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-2 Masking differences between Fieldproc and RCAC"}, {"label": "text", "id": 4, "page_no": 102, "cluster": {"id": 4, "label": "text", "bbox": {"l": 142.0433349609375, "t": 182.4264373779297, "r": 540.74689, "b": 228.74114999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9510505199432373, "cells": [{"id": 11, "text": "Note:", "bbox": {"l": 142.8, "t": 183.52868999999998, "r": 168.33246, "b": 192.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": " Column masks can influence an SQL ", "bbox": {"l": 168.36035, "t": 183.52868999999998, "r": 338.26401, "b": 192.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "INSERT", "bbox": {"l": 338.3407, "t": 183.67809999999997, "r": 368.28046, "b": 192.50269000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " or ", "bbox": {"l": 368.28046, "t": 183.52868999999998, "r": 382.79913, "b": 192.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "UPDATE", "bbox": {"l": 382.74039, "t": 183.67809999999997, "r": 412.68015, "b": 192.50269000000003, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ". For example, you cannot ", "bbox": {"l": 412.7399, "t": 183.52868999999998, "r": 530.08759, "b": 192.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "insert or update a table with column access control activated with masked data generated ", "bbox": {"l": 142.79999, "t": 195.5285, "r": 540.74689, "b": 204.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "from an expression within the same statement that is based on a column with a column ", "bbox": {"l": 142.79999, "t": 207.52832, "r": 529.61914, "b": 216.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "mask.", "bbox": {"l": 142.79999, "t": 219.52814, "r": 169.49278, "b": 228.74114999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Note: Column masks can influence an SQL INSERT or UPDATE . For example, you cannot insert or update a table with column access control activated with masked data generated from an expression within the same statement that is based on a column with a column mask."}, {"label": "picture", "id": 5, "page_no": 102, "cluster": {"id": 5, "label": "picture", "bbox": {"l": 136.07940673828125, "t": 255.5457000732422, "r": 412.541015625, "b": 529.3939819335938, "coord_origin": "TOPLEFT"}, "confidence": 0.984312891960144, "cells": [{"id": 20, "text": "RCAC", "bbox": {"l": 342.6669, "t": 353.21677, "r": 363.56644, "b": 361.33936000000006, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "SQE S l", "bbox": {"l": 196.25211, "t": 403.55573, "r": 232.60068, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "ti", "bbox": {"l": 242.64763, "t": 403.55573, "r": 247.37315, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "P", "bbox": {"l": 260.52017, "t": 403.55573, "r": 266.83984, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "i", "bbox": {"l": 294.80676, "t": 403.55573, "r": 296.90384, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Column mask", "bbox": {"l": 347.00021, "t": 364.60345, "r": 399.17926, "b": 372.71655000000004, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "processing", "bbox": {"l": 349.15137, "t": 375.99026, "r": 390.10114, "b": 384.10336, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "SQE Selecti", "bbox": {"l": 196.25211, "t": 403.55573, "r": 247.37483, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "on", "bbox": {"l": 247.3976, "t": 403.55573, "r": 257.95886, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Processing", "bbox": {"l": 260.52399, "t": 403.55573, "r": 307.49136, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "r3vS#45zt!J9*m$p6", "bbox": {"l": 212.0354, "t": 475.92493, "r": 294.86868, "b": 484.38913, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "FieldProc", "bbox": {"l": 336.34091, "t": 451.58566, "r": 372.53864, "b": 459.70825, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Decode and mask", "bbox": {"l": 338.87164, "t": 462.97247, "r": 407.23135, "b": 471.08557, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "processing", "bbox": {"l": 338.4921, "t": 474.35928, "r": 379.44186, "b": 482.47238, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 102, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 376.0430603027344, "t": 754.8911743164062, "r": 523.62878, "b": 764.1041870117188, "coord_origin": "TOPLEFT"}, "confidence": 0.951887309551239, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 102, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6262817382812, "t": 754.2442016601562, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9136953949928284, "cells": [{"id": 1, "text": "87", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "87"}]}}, {"page_no": 103, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "88 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "6.2", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 87.295662, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "RCAC effects on data movement", "bbox": {"l": 91.794777, "t": 71.22069999999997, "r": 342.67798, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "As described earlier and shown in Figure 6-3, RCAC is applied pervasively regardless of the ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 546.47467, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "data access programming interface, SQL statement, or IBM i command. The effects of RCAC ", "bbox": {"l": 136.8, "t": 115.48852999999997, "r": 547.2276, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "on data movement scenarios can be profound and possibly problematic. It is important to ", "bbox": {"l": 136.8, "t": 127.48834000000011, "r": 531.81549, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "understand these effects and make the appropriate adjustments to avoid incorrect results or ", "bbox": {"l": 136.8, "t": 139.48816, "r": 544.49969, "b": 148.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "data loss.", "bbox": {"l": 136.8, "t": 151.48798, "r": 179.40094, "b": 160.70099000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Figure 6-3 RCAC and data movement", "bbox": {"l": 136.8, "t": 292.33797999999996, "r": 291.97351, "b": 300.6629899999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "The \u201cuser\u201d that is running the data movement application or process, whether it be a high ", "bbox": {"l": 136.8, "t": 318.34872, "r": 532.05664, "b": 327.56171, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "availability (HA) scenario, an extract, transform, load (ETL) scenario, or just copying data from ", "bbox": {"l": 136.8, "t": 330.34854, "r": 547.16595, "b": 339.56152, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "one file or table to another one, must have permission to all the source rows without masking, ", "bbox": {"l": 136.79999, "t": 342.34836, "r": 547.27454, "b": 351.56134, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "and not be restricted from putting rows into the target. Allowing the data movement ", "bbox": {"l": 136.79999, "t": 354.34817999999996, "r": 504.48126, "b": 363.56116, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "application or process to bypass the RCAC rules must be based on a clear and concise ", "bbox": {"l": 136.79999, "t": 366.34799, "r": 525.23895, "b": 375.56097000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "understanding of the organization\u2019s object security and data access policy. Proper design, ", "bbox": {"l": 136.79999, "t": 378.34781, "r": 535.10541, "b": 387.56079, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "implementation, and testing are critical success factors when applying RCAC.", "bbox": {"l": 136.79999, "t": 390.3476299999999, "r": 478.83932, "b": 399.56061, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "This section covers in detail the following three examples:", "bbox": {"l": 136.79999, "t": 495.34793, "r": 390.66049, "b": 504.56091, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 512.47711, "r": 141.77998, "b": 521.25189, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Effects when RCAC is defined on the source table", "bbox": {"l": 151.20015, "t": 512.32773, "r": 372.08902, "b": 521.54071, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 524.47693, "r": 141.77998, "b": 533.25171, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Effects when RCAC is defined on the target table", "bbox": {"l": 151.20015, "t": 524.32755, "r": 367.63791, "b": 533.54053, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 536.47675, "r": 141.77998, "b": 545.2515, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Effects when RCAC is defined on both source and target tables", "bbox": {"l": 151.20015, "t": 536.32735, "r": 430.46753000000007, "b": 545.54034, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "6.2.1", "bbox": {"l": 64.800003, "t": 566.15462, "r": 93.897987, "b": 578.14262, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Effects when RCAC is defined on the source table", "bbox": {"l": 97.535255, "t": 566.15462, "r": 407.97049, "b": 578.14262, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Example 6-1 shows a simple example that illustrates the effect of RCAC as defined on the ", "bbox": {"l": 136.8, "t": 592.30862, "r": 536.16815, "b": 601.52162, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "source table.", "bbox": {"l": 136.80002, "t": 604.30843, "r": 193.61981, "b": 613.52142, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Example 6-1 INSERT INTO TARGET statement", "bbox": {"l": 136.8, "t": 626.35789, "r": 330.92816, "b": 634.68291, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "bbox": {"l": 136.8, "t": 643.51813, "r": 346.67709, "b": 652.29288, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Important:", "bbox": {"l": 142.8, "t": 418.30872, "r": 192.41673, "b": 427.5217, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " RCAC is applied to the table or physical file access. It is not applied to the ", "bbox": {"l": 192.41974, "t": 418.30872, "r": 523.17328, "b": 427.5217, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "journal receiver access. Any and all database transactions are represented in the journal ", "bbox": {"l": 142.80002, "t": 430.30853, "r": 536.52759, "b": 439.52151, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "regardless of RCAC row permissions and column masks. This makes it essential that", "bbox": {"l": 142.80002, "t": 442.30835, "r": 518.3606, "b": 451.52133, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "IBM i security is used to ensure that only authorized personnel have access to the ", "bbox": {"l": 142.80002, "t": 454.30816999999996, "r": 506.91161999999997, "b": 463.52115, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "journaled data.", "bbox": {"l": 142.80002, "t": 466.30798, "r": 209.20135, "b": 475.52097, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Source", "bbox": {"l": 159.0775, "t": 225.34418000000005, "r": 204.37405, "b": 239.35186999999996, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Table", "bbox": {"l": 164.21069, "t": 245.01648, "r": 197.96193, "b": 259.02417, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Target", "bbox": {"l": 434.70389000000006, "t": 225.34418000000005, "r": 474.6087, "b": 239.35186999999996, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Table", "bbox": {"l": 437.77770999999996, "t": 245.01648, "r": 471.52896, "b": 259.02417, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "RCAC", "bbox": {"l": 294.07819, "t": 220.35155999999995, "r": 334.01767, "b": 236.12005999999997, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Permissions", "bbox": {"l": 291.86511, "t": 240.09747000000004, "r": 336.3851, "b": 247.98181, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "k", "bbox": {"l": 318.2381, "t": 251.16314999999997, "r": 322.43384, "b": 259.04749000000004, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "SELECT", "bbox": {"l": 236.414, "t": 236.34747000000004, "r": 263.0611, "b": 244.24103000000002, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "INSERT", "bbox": {"l": 363.76089, "t": 236.34747000000004, "r": 390.84229, "b": 244.24103000000002, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Masks", "bbox": {"l": 302.31589, "t": 251.16314999999997, "r": 325.93185, "b": 259.04749000000004, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.2040786743164, "t": 754.5180053710938, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9170101284980774, "cells": [{"id": 0, "text": "88 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.31021881103516, "t": 754.7303466796875, "r": 334.42142, "b": 763.929931640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9497126936912537, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.4045181274414, "t": 70.29792785644531, "r": 342.9945068359375, "b": 85.9837, "coord_origin": "TOPLEFT"}, "confidence": 0.9599847793579102, "cells": [{"id": 2, "text": "6.2", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 87.295662, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "RCAC effects on data movement", "bbox": {"l": 91.794777, "t": 71.22069999999997, "r": 342.67798, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.77244567871094, "t": 102.67330932617188, "r": 547.2276, "b": 160.70099000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9856138825416565, "cells": [{"id": 4, "text": "As described earlier and shown in Figure 6-3, RCAC is applied pervasively regardless of the ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 546.47467, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "data access programming interface, SQL statement, or IBM i command. The effects of RCAC ", "bbox": {"l": 136.8, "t": 115.48852999999997, "r": 547.2276, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "on data movement scenarios can be profound and possibly problematic. It is important to ", "bbox": {"l": 136.8, "t": 127.48834000000011, "r": 531.81549, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "understand these effects and make the appropriate adjustments to avoid incorrect results or ", "bbox": {"l": 136.8, "t": 139.48816, "r": 544.49969, "b": 148.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "data loss.", "bbox": {"l": 136.8, "t": 151.48798, "r": 179.40094, "b": 160.70099000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "caption", "bbox": {"l": 135.88336181640625, "t": 291.65277099609375, "r": 292.6585693359375, "b": 300.9308776855469, "coord_origin": "TOPLEFT"}, "confidence": 0.9376186728477478, "cells": [{"id": 9, "text": "Figure 6-3 RCAC and data movement", "bbox": {"l": 136.8, "t": 292.33797999999996, "r": 291.97351, "b": 300.6629899999999, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.75350952148438, "t": 317.5677185058594, "r": 547.27454, "b": 399.9143371582031, "coord_origin": "TOPLEFT"}, "confidence": 0.9871634244918823, "cells": [{"id": 10, "text": "The \u201cuser\u201d that is running the data movement application or process, whether it be a high ", "bbox": {"l": 136.8, "t": 318.34872, "r": 532.05664, "b": 327.56171, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "availability (HA) scenario, an extract, transform, load (ETL) scenario, or just copying data from ", "bbox": {"l": 136.8, "t": 330.34854, "r": 547.16595, "b": 339.56152, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "one file or table to another one, must have permission to all the source rows without masking, ", "bbox": {"l": 136.79999, "t": 342.34836, "r": 547.27454, "b": 351.56134, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "and not be restricted from putting rows into the target. Allowing the data movement ", "bbox": {"l": 136.79999, "t": 354.34817999999996, "r": 504.48126, "b": 363.56116, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "application or process to bypass the RCAC rules must be based on a clear and concise ", "bbox": {"l": 136.79999, "t": 366.34799, "r": 525.23895, "b": 375.56097000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "understanding of the organization\u2019s object security and data access policy. Proper design, ", "bbox": {"l": 136.79999, "t": 378.34781, "r": 535.10541, "b": 387.56079, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "implementation, and testing are critical success factors when applying RCAC.", "bbox": {"l": 136.79999, "t": 390.3476299999999, "r": 478.83932, "b": 399.56061, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 135.97303771972656, "t": 494.7318115234375, "r": 390.66049, "b": 504.98223876953125, "coord_origin": "TOPLEFT"}, "confidence": 0.8897727131843567, "cells": [{"id": 17, "text": "This section covers in detail the following three examples:", "bbox": {"l": 136.79999, "t": 495.34793, "r": 390.66049, "b": 504.56091, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.6826171875, "t": 511.1615905761719, "r": 372.08902, "b": 521.54071, "coord_origin": "TOPLEFT"}, "confidence": 0.9416220784187317, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 512.47711, "r": 141.77998, "b": 521.25189, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Effects when RCAC is defined on the source table", "bbox": {"l": 151.20015, "t": 512.32773, "r": 372.08902, "b": 521.54071, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.69775390625, "t": 523.0594482421875, "r": 367.63791, "b": 533.54053, "coord_origin": "TOPLEFT"}, "confidence": 0.9410248398780823, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 524.47693, "r": 141.77998, "b": 533.25171, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Effects when RCAC is defined on the target table", "bbox": {"l": 151.20015, "t": 524.32755, "r": 367.63791, "b": 533.54053, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.60743713378906, "t": 535.3680419921875, "r": 430.46753000000007, "b": 545.6080322265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9507178664207458, "cells": [{"id": 22, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 536.47675, "r": 141.77998, "b": 545.2515, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Effects when RCAC is defined on both source and target tables", "bbox": {"l": 151.20015, "t": 536.32735, "r": 430.46753000000007, "b": 545.54034, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "section_header", "bbox": {"l": 64.18472290039062, "t": 565.0562133789062, "r": 407.97049, "b": 578.14262, "coord_origin": "TOPLEFT"}, "confidence": 0.9600307941436768, "cells": [{"id": 24, "text": "6.2.1", "bbox": {"l": 64.800003, "t": 566.15462, "r": 93.897987, "b": 578.14262, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Effects when RCAC is defined on the source table", "bbox": {"l": 97.535255, "t": 566.15462, "r": 407.97049, "b": 578.14262, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 136.2682647705078, "t": 591.3966064453125, "r": 536.16815, "b": 613.52142, "coord_origin": "TOPLEFT"}, "confidence": 0.97333163022995, "cells": [{"id": 26, "text": "Example 6-1 shows a simple example that illustrates the effect of RCAC as defined on the ", "bbox": {"l": 136.8, "t": 592.30862, "r": 536.16815, "b": 601.52162, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "source table.", "bbox": {"l": 136.80002, "t": 604.30843, "r": 193.61981, "b": 613.52142, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "caption", "bbox": {"l": 136.156005859375, "t": 625.2975463867188, "r": 331.8805847167969, "b": 634.7236938476562, "coord_origin": "TOPLEFT"}, "confidence": 0.7500959634780884, "cells": [{"id": 28, "text": "Example 6-1 INSERT INTO TARGET statement", "bbox": {"l": 136.8, "t": 626.35789, "r": 330.92816, "b": 634.68291, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 136.8, "t": 642.6497802734375, "r": 346.67709, "b": 652.3346557617188, "coord_origin": "TOPLEFT"}, "confidence": 0.719869077205658, "cells": [{"id": 29, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "bbox": {"l": 136.8, "t": 643.51813, "r": 346.67709, "b": 652.29288, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "text", "bbox": {"l": 141.819091796875, "t": 417.33447265625, "r": 536.52759, "b": 475.52097, "coord_origin": "TOPLEFT"}, "confidence": 0.9828086495399475, "cells": [{"id": 30, "text": "Important:", "bbox": {"l": 142.8, "t": 418.30872, "r": 192.41673, "b": 427.5217, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " RCAC is applied to the table or physical file access. It is not applied to the ", "bbox": {"l": 192.41974, "t": 418.30872, "r": 523.17328, "b": 427.5217, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "journal receiver access. Any and all database transactions are represented in the journal ", "bbox": {"l": 142.80002, "t": 430.30853, "r": 536.52759, "b": 439.52151, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "regardless of RCAC row permissions and column masks. This makes it essential that", "bbox": {"l": 142.80002, "t": 442.30835, "r": 518.3606, "b": 451.52133, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "IBM i security is used to ensure that only authorized personnel have access to the ", "bbox": {"l": 142.80002, "t": 454.30816999999996, "r": 506.91161999999997, "b": 463.52115, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "journaled data.", "bbox": {"l": 142.80002, "t": 466.30798, "r": 209.20135, "b": 475.52097, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "picture", "bbox": {"l": 135.86012268066406, "t": 175.29827880859375, "r": 497.2643127441406, "b": 289.20782470703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9842056035995483, "cells": [{"id": 36, "text": "Source", "bbox": {"l": 159.0775, "t": 225.34418000000005, "r": 204.37405, "b": 239.35186999999996, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Table", "bbox": {"l": 164.21069, "t": 245.01648, "r": 197.96193, "b": 259.02417, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Target", "bbox": {"l": 434.70389000000006, "t": 225.34418000000005, "r": 474.6087, "b": 239.35186999999996, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Table", "bbox": {"l": 437.77770999999996, "t": 245.01648, "r": 471.52896, "b": 259.02417, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "RCAC", "bbox": {"l": 294.07819, "t": 220.35155999999995, "r": 334.01767, "b": 236.12005999999997, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Permissions", "bbox": {"l": 291.86511, "t": 240.09747000000004, "r": 336.3851, "b": 247.98181, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "k", "bbox": {"l": 318.2381, "t": 251.16314999999997, "r": 322.43384, "b": 259.04749000000004, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "SELECT", "bbox": {"l": 236.414, "t": 236.34747000000004, "r": 263.0611, "b": 244.24103000000002, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "INSERT", "bbox": {"l": 363.76089, "t": 236.34747000000004, "r": 390.84229, "b": 244.24103000000002, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Masks", "bbox": {"l": 302.31589, "t": 251.16314999999997, "r": 325.93185, "b": 259.04749000000004, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 103, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.2040786743164, "t": 754.5180053710938, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9170101284980774, "cells": [{"id": 0, "text": "88 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "88"}, {"label": "page_footer", "id": 1, "page_no": 103, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.31021881103516, "t": 754.7303466796875, "r": 334.42142, "b": 763.929931640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9497126936912537, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "section_header", "id": 2, "page_no": 103, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.4045181274414, "t": 70.29792785644531, "r": 342.9945068359375, "b": 85.9837, "coord_origin": "TOPLEFT"}, "confidence": 0.9599847793579102, "cells": [{"id": 2, "text": "6.2", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 87.295662, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "RCAC effects on data movement", "bbox": {"l": 91.794777, "t": 71.22069999999997, "r": 342.67798, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, "text": "6.2 RCAC effects on data movement"}, {"label": "text", "id": 3, "page_no": 103, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.77244567871094, "t": 102.67330932617188, "r": 547.2276, "b": 160.70099000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9856138825416565, "cells": [{"id": 4, "text": "As described earlier and shown in Figure 6-3, RCAC is applied pervasively regardless of the ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 546.47467, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "data access programming interface, SQL statement, or IBM i command. The effects of RCAC ", "bbox": {"l": 136.8, "t": 115.48852999999997, "r": 547.2276, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "on data movement scenarios can be profound and possibly problematic. It is important to ", "bbox": {"l": 136.8, "t": 127.48834000000011, "r": 531.81549, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "understand these effects and make the appropriate adjustments to avoid incorrect results or ", "bbox": {"l": 136.8, "t": 139.48816, "r": 544.49969, "b": 148.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "data loss.", "bbox": {"l": 136.8, "t": 151.48798, "r": 179.40094, "b": 160.70099000000005, "coord_origin": "TOPLEFT"}}]}, "text": "As described earlier and shown in Figure 6-3, RCAC is applied pervasively regardless of the data access programming interface, SQL statement, or IBM i command. The effects of RCAC on data movement scenarios can be profound and possibly problematic. It is important to understand these effects and make the appropriate adjustments to avoid incorrect results or data loss."}, {"label": "caption", "id": 4, "page_no": 103, "cluster": {"id": 4, "label": "caption", "bbox": {"l": 135.88336181640625, "t": 291.65277099609375, "r": 292.6585693359375, "b": 300.9308776855469, "coord_origin": "TOPLEFT"}, "confidence": 0.9376186728477478, "cells": [{"id": 9, "text": "Figure 6-3 RCAC and data movement", "bbox": {"l": 136.8, "t": 292.33797999999996, "r": 291.97351, "b": 300.6629899999999, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-3 RCAC and data movement"}, {"label": "text", "id": 5, "page_no": 103, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.75350952148438, "t": 317.5677185058594, "r": 547.27454, "b": 399.9143371582031, "coord_origin": "TOPLEFT"}, "confidence": 0.9871634244918823, "cells": [{"id": 10, "text": "The \u201cuser\u201d that is running the data movement application or process, whether it be a high ", "bbox": {"l": 136.8, "t": 318.34872, "r": 532.05664, "b": 327.56171, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "availability (HA) scenario, an extract, transform, load (ETL) scenario, or just copying data from ", "bbox": {"l": 136.8, "t": 330.34854, "r": 547.16595, "b": 339.56152, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "one file or table to another one, must have permission to all the source rows without masking, ", "bbox": {"l": 136.79999, "t": 342.34836, "r": 547.27454, "b": 351.56134, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "and not be restricted from putting rows into the target. Allowing the data movement ", "bbox": {"l": 136.79999, "t": 354.34817999999996, "r": 504.48126, "b": 363.56116, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "application or process to bypass the RCAC rules must be based on a clear and concise ", "bbox": {"l": 136.79999, "t": 366.34799, "r": 525.23895, "b": 375.56097000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "understanding of the organization\u2019s object security and data access policy. Proper design, ", "bbox": {"l": 136.79999, "t": 378.34781, "r": 535.10541, "b": 387.56079, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "implementation, and testing are critical success factors when applying RCAC.", "bbox": {"l": 136.79999, "t": 390.3476299999999, "r": 478.83932, "b": 399.56061, "coord_origin": "TOPLEFT"}}]}, "text": "The \u201cuser\u201d that is running the data movement application or process, whether it be a high availability (HA) scenario, an extract, transform, load (ETL) scenario, or just copying data from one file or table to another one, must have permission to all the source rows without masking, and not be restricted from putting rows into the target. Allowing the data movement application or process to bypass the RCAC rules must be based on a clear and concise understanding of the organization\u2019s object security and data access policy. Proper design, implementation, and testing are critical success factors when applying RCAC."}, {"label": "text", "id": 6, "page_no": 103, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.97303771972656, "t": 494.7318115234375, "r": 390.66049, "b": 504.98223876953125, "coord_origin": "TOPLEFT"}, "confidence": 0.8897727131843567, "cells": [{"id": 17, "text": "This section covers in detail the following three examples:", "bbox": {"l": 136.79999, "t": 495.34793, "r": 390.66049, "b": 504.56091, "coord_origin": "TOPLEFT"}}]}, "text": "This section covers in detail the following three examples:"}, {"label": "list_item", "id": 7, "page_no": 103, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.6826171875, "t": 511.1615905761719, "r": 372.08902, "b": 521.54071, "coord_origin": "TOPLEFT"}, "confidence": 0.9416220784187317, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 512.47711, "r": 141.77998, "b": 521.25189, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Effects when RCAC is defined on the source table", "bbox": {"l": 151.20015, "t": 512.32773, "r": 372.08902, "b": 521.54071, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Effects when RCAC is defined on the source table"}, {"label": "list_item", "id": 8, "page_no": 103, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.69775390625, "t": 523.0594482421875, "r": 367.63791, "b": 533.54053, "coord_origin": "TOPLEFT"}, "confidence": 0.9410248398780823, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 524.47693, "r": 141.77998, "b": 533.25171, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Effects when RCAC is defined on the target table", "bbox": {"l": 151.20015, "t": 524.32755, "r": 367.63791, "b": 533.54053, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Effects when RCAC is defined on the target table"}, {"label": "list_item", "id": 9, "page_no": 103, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.60743713378906, "t": 535.3680419921875, "r": 430.46753000000007, "b": 545.6080322265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9507178664207458, "cells": [{"id": 22, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 536.47675, "r": 141.77998, "b": 545.2515, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Effects when RCAC is defined on both source and target tables", "bbox": {"l": 151.20015, "t": 536.32735, "r": 430.46753000000007, "b": 545.54034, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Effects when RCAC is defined on both source and target tables"}, {"label": "section_header", "id": 10, "page_no": 103, "cluster": {"id": 10, "label": "section_header", "bbox": {"l": 64.18472290039062, "t": 565.0562133789062, "r": 407.97049, "b": 578.14262, "coord_origin": "TOPLEFT"}, "confidence": 0.9600307941436768, "cells": [{"id": 24, "text": "6.2.1", "bbox": {"l": 64.800003, "t": 566.15462, "r": 93.897987, "b": 578.14262, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Effects when RCAC is defined on the source table", "bbox": {"l": 97.535255, "t": 566.15462, "r": 407.97049, "b": 578.14262, "coord_origin": "TOPLEFT"}}]}, "text": "6.2.1 Effects when RCAC is defined on the source table"}, {"label": "text", "id": 11, "page_no": 103, "cluster": {"id": 11, "label": "text", "bbox": {"l": 136.2682647705078, "t": 591.3966064453125, "r": 536.16815, "b": 613.52142, "coord_origin": "TOPLEFT"}, "confidence": 0.97333163022995, "cells": [{"id": 26, "text": "Example 6-1 shows a simple example that illustrates the effect of RCAC as defined on the ", "bbox": {"l": 136.8, "t": 592.30862, "r": 536.16815, "b": 601.52162, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "source table.", "bbox": {"l": 136.80002, "t": 604.30843, "r": 193.61981, "b": 613.52142, "coord_origin": "TOPLEFT"}}]}, "text": "Example 6-1 shows a simple example that illustrates the effect of RCAC as defined on the source table."}, {"label": "caption", "id": 12, "page_no": 103, "cluster": {"id": 12, "label": "caption", "bbox": {"l": 136.156005859375, "t": 625.2975463867188, "r": 331.8805847167969, "b": 634.7236938476562, "coord_origin": "TOPLEFT"}, "confidence": 0.7500959634780884, "cells": [{"id": 28, "text": "Example 6-1 INSERT INTO TARGET statement", "bbox": {"l": 136.8, "t": 626.35789, "r": 330.92816, "b": 634.68291, "coord_origin": "TOPLEFT"}}]}, "text": "Example 6-1 INSERT INTO TARGET statement"}, {"label": "text", "id": 13, "page_no": 103, "cluster": {"id": 13, "label": "text", "bbox": {"l": 136.8, "t": 642.6497802734375, "r": 346.67709, "b": 652.3346557617188, "coord_origin": "TOPLEFT"}, "confidence": 0.719869077205658, "cells": [{"id": 29, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "bbox": {"l": 136.8, "t": 643.51813, "r": 346.67709, "b": 652.29288, "coord_origin": "TOPLEFT"}}]}, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);"}, {"label": "text", "id": 14, "page_no": 103, "cluster": {"id": 14, "label": "text", "bbox": {"l": 141.819091796875, "t": 417.33447265625, "r": 536.52759, "b": 475.52097, "coord_origin": "TOPLEFT"}, "confidence": 0.9828086495399475, "cells": [{"id": 30, "text": "Important:", "bbox": {"l": 142.8, "t": 418.30872, "r": 192.41673, "b": 427.5217, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " RCAC is applied to the table or physical file access. It is not applied to the ", "bbox": {"l": 192.41974, "t": 418.30872, "r": 523.17328, "b": 427.5217, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "journal receiver access. Any and all database transactions are represented in the journal ", "bbox": {"l": 142.80002, "t": 430.30853, "r": 536.52759, "b": 439.52151, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "regardless of RCAC row permissions and column masks. This makes it essential that", "bbox": {"l": 142.80002, "t": 442.30835, "r": 518.3606, "b": 451.52133, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "IBM i security is used to ensure that only authorized personnel have access to the ", "bbox": {"l": 142.80002, "t": 454.30816999999996, "r": 506.91161999999997, "b": 463.52115, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "journaled data.", "bbox": {"l": 142.80002, "t": 466.30798, "r": 209.20135, "b": 475.52097, "coord_origin": "TOPLEFT"}}]}, "text": "Important: RCAC is applied to the table or physical file access. It is not applied to the journal receiver access. Any and all database transactions are represented in the journal regardless of RCAC row permissions and column masks. This makes it essential that IBM i security is used to ensure that only authorized personnel have access to the journaled data."}, {"label": "picture", "id": 15, "page_no": 103, "cluster": {"id": 15, "label": "picture", "bbox": {"l": 135.86012268066406, "t": 175.29827880859375, "r": 497.2643127441406, "b": 289.20782470703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9842056035995483, "cells": [{"id": 36, "text": "Source", "bbox": {"l": 159.0775, "t": 225.34418000000005, "r": 204.37405, "b": 239.35186999999996, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Table", "bbox": {"l": 164.21069, "t": 245.01648, "r": 197.96193, "b": 259.02417, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Target", "bbox": {"l": 434.70389000000006, "t": 225.34418000000005, "r": 474.6087, "b": 239.35186999999996, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Table", "bbox": {"l": 437.77770999999996, "t": 245.01648, "r": 471.52896, "b": 259.02417, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "RCAC", "bbox": {"l": 294.07819, "t": 220.35155999999995, "r": 334.01767, "b": 236.12005999999997, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Permissions", "bbox": {"l": 291.86511, "t": 240.09747000000004, "r": 336.3851, "b": 247.98181, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "k", "bbox": {"l": 318.2381, "t": 251.16314999999997, "r": 322.43384, "b": 259.04749000000004, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "SELECT", "bbox": {"l": 236.414, "t": 236.34747000000004, "r": 263.0611, "b": 244.24103000000002, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "INSERT", "bbox": {"l": 363.76089, "t": 236.34747000000004, "r": 390.84229, "b": 244.24103000000002, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Masks", "bbox": {"l": 302.31589, "t": 251.16314999999997, "r": 325.93185, "b": 259.04749000000004, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "section_header", "id": 2, "page_no": 103, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.4045181274414, "t": 70.29792785644531, "r": 342.9945068359375, "b": 85.9837, "coord_origin": "TOPLEFT"}, "confidence": 0.9599847793579102, "cells": [{"id": 2, "text": "6.2", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 87.295662, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "RCAC effects on data movement", "bbox": {"l": 91.794777, "t": 71.22069999999997, "r": 342.67798, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, "text": "6.2 RCAC effects on data movement"}, {"label": "text", "id": 3, "page_no": 103, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.77244567871094, "t": 102.67330932617188, "r": 547.2276, "b": 160.70099000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9856138825416565, "cells": [{"id": 4, "text": "As described earlier and shown in Figure 6-3, RCAC is applied pervasively regardless of the ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 546.47467, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "data access programming interface, SQL statement, or IBM i command. The effects of RCAC ", "bbox": {"l": 136.8, "t": 115.48852999999997, "r": 547.2276, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "on data movement scenarios can be profound and possibly problematic. It is important to ", "bbox": {"l": 136.8, "t": 127.48834000000011, "r": 531.81549, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "understand these effects and make the appropriate adjustments to avoid incorrect results or ", "bbox": {"l": 136.8, "t": 139.48816, "r": 544.49969, "b": 148.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "data loss.", "bbox": {"l": 136.8, "t": 151.48798, "r": 179.40094, "b": 160.70099000000005, "coord_origin": "TOPLEFT"}}]}, "text": "As described earlier and shown in Figure 6-3, RCAC is applied pervasively regardless of the data access programming interface, SQL statement, or IBM i command. The effects of RCAC on data movement scenarios can be profound and possibly problematic. It is important to understand these effects and make the appropriate adjustments to avoid incorrect results or data loss."}, {"label": "caption", "id": 4, "page_no": 103, "cluster": {"id": 4, "label": "caption", "bbox": {"l": 135.88336181640625, "t": 291.65277099609375, "r": 292.6585693359375, "b": 300.9308776855469, "coord_origin": "TOPLEFT"}, "confidence": 0.9376186728477478, "cells": [{"id": 9, "text": "Figure 6-3 RCAC and data movement", "bbox": {"l": 136.8, "t": 292.33797999999996, "r": 291.97351, "b": 300.6629899999999, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-3 RCAC and data movement"}, {"label": "text", "id": 5, "page_no": 103, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.75350952148438, "t": 317.5677185058594, "r": 547.27454, "b": 399.9143371582031, "coord_origin": "TOPLEFT"}, "confidence": 0.9871634244918823, "cells": [{"id": 10, "text": "The \u201cuser\u201d that is running the data movement application or process, whether it be a high ", "bbox": {"l": 136.8, "t": 318.34872, "r": 532.05664, "b": 327.56171, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "availability (HA) scenario, an extract, transform, load (ETL) scenario, or just copying data from ", "bbox": {"l": 136.8, "t": 330.34854, "r": 547.16595, "b": 339.56152, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "one file or table to another one, must have permission to all the source rows without masking, ", "bbox": {"l": 136.79999, "t": 342.34836, "r": 547.27454, "b": 351.56134, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "and not be restricted from putting rows into the target. Allowing the data movement ", "bbox": {"l": 136.79999, "t": 354.34817999999996, "r": 504.48126, "b": 363.56116, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "application or process to bypass the RCAC rules must be based on a clear and concise ", "bbox": {"l": 136.79999, "t": 366.34799, "r": 525.23895, "b": 375.56097000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "understanding of the organization\u2019s object security and data access policy. Proper design, ", "bbox": {"l": 136.79999, "t": 378.34781, "r": 535.10541, "b": 387.56079, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "implementation, and testing are critical success factors when applying RCAC.", "bbox": {"l": 136.79999, "t": 390.3476299999999, "r": 478.83932, "b": 399.56061, "coord_origin": "TOPLEFT"}}]}, "text": "The \u201cuser\u201d that is running the data movement application or process, whether it be a high availability (HA) scenario, an extract, transform, load (ETL) scenario, or just copying data from one file or table to another one, must have permission to all the source rows without masking, and not be restricted from putting rows into the target. Allowing the data movement application or process to bypass the RCAC rules must be based on a clear and concise understanding of the organization\u2019s object security and data access policy. Proper design, implementation, and testing are critical success factors when applying RCAC."}, {"label": "text", "id": 6, "page_no": 103, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.97303771972656, "t": 494.7318115234375, "r": 390.66049, "b": 504.98223876953125, "coord_origin": "TOPLEFT"}, "confidence": 0.8897727131843567, "cells": [{"id": 17, "text": "This section covers in detail the following three examples:", "bbox": {"l": 136.79999, "t": 495.34793, "r": 390.66049, "b": 504.56091, "coord_origin": "TOPLEFT"}}]}, "text": "This section covers in detail the following three examples:"}, {"label": "list_item", "id": 7, "page_no": 103, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.6826171875, "t": 511.1615905761719, "r": 372.08902, "b": 521.54071, "coord_origin": "TOPLEFT"}, "confidence": 0.9416220784187317, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 512.47711, "r": 141.77998, "b": 521.25189, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Effects when RCAC is defined on the source table", "bbox": {"l": 151.20015, "t": 512.32773, "r": 372.08902, "b": 521.54071, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Effects when RCAC is defined on the source table"}, {"label": "list_item", "id": 8, "page_no": 103, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.69775390625, "t": 523.0594482421875, "r": 367.63791, "b": 533.54053, "coord_origin": "TOPLEFT"}, "confidence": 0.9410248398780823, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 524.47693, "r": 141.77998, "b": 533.25171, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Effects when RCAC is defined on the target table", "bbox": {"l": 151.20015, "t": 524.32755, "r": 367.63791, "b": 533.54053, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Effects when RCAC is defined on the target table"}, {"label": "list_item", "id": 9, "page_no": 103, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.60743713378906, "t": 535.3680419921875, "r": 430.46753000000007, "b": 545.6080322265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9507178664207458, "cells": [{"id": 22, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 536.47675, "r": 141.77998, "b": 545.2515, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Effects when RCAC is defined on both source and target tables", "bbox": {"l": 151.20015, "t": 536.32735, "r": 430.46753000000007, "b": 545.54034, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Effects when RCAC is defined on both source and target tables"}, {"label": "section_header", "id": 10, "page_no": 103, "cluster": {"id": 10, "label": "section_header", "bbox": {"l": 64.18472290039062, "t": 565.0562133789062, "r": 407.97049, "b": 578.14262, "coord_origin": "TOPLEFT"}, "confidence": 0.9600307941436768, "cells": [{"id": 24, "text": "6.2.1", "bbox": {"l": 64.800003, "t": 566.15462, "r": 93.897987, "b": 578.14262, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Effects when RCAC is defined on the source table", "bbox": {"l": 97.535255, "t": 566.15462, "r": 407.97049, "b": 578.14262, "coord_origin": "TOPLEFT"}}]}, "text": "6.2.1 Effects when RCAC is defined on the source table"}, {"label": "text", "id": 11, "page_no": 103, "cluster": {"id": 11, "label": "text", "bbox": {"l": 136.2682647705078, "t": 591.3966064453125, "r": 536.16815, "b": 613.52142, "coord_origin": "TOPLEFT"}, "confidence": 0.97333163022995, "cells": [{"id": 26, "text": "Example 6-1 shows a simple example that illustrates the effect of RCAC as defined on the ", "bbox": {"l": 136.8, "t": 592.30862, "r": 536.16815, "b": 601.52162, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "source table.", "bbox": {"l": 136.80002, "t": 604.30843, "r": 193.61981, "b": 613.52142, "coord_origin": "TOPLEFT"}}]}, "text": "Example 6-1 shows a simple example that illustrates the effect of RCAC as defined on the source table."}, {"label": "caption", "id": 12, "page_no": 103, "cluster": {"id": 12, "label": "caption", "bbox": {"l": 136.156005859375, "t": 625.2975463867188, "r": 331.8805847167969, "b": 634.7236938476562, "coord_origin": "TOPLEFT"}, "confidence": 0.7500959634780884, "cells": [{"id": 28, "text": "Example 6-1 INSERT INTO TARGET statement", "bbox": {"l": 136.8, "t": 626.35789, "r": 330.92816, "b": 634.68291, "coord_origin": "TOPLEFT"}}]}, "text": "Example 6-1 INSERT INTO TARGET statement"}, {"label": "text", "id": 13, "page_no": 103, "cluster": {"id": 13, "label": "text", "bbox": {"l": 136.8, "t": 642.6497802734375, "r": 346.67709, "b": 652.3346557617188, "coord_origin": "TOPLEFT"}, "confidence": 0.719869077205658, "cells": [{"id": 29, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "bbox": {"l": 136.8, "t": 643.51813, "r": 346.67709, "b": 652.29288, "coord_origin": "TOPLEFT"}}]}, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);"}, {"label": "text", "id": 14, "page_no": 103, "cluster": {"id": 14, "label": "text", "bbox": {"l": 141.819091796875, "t": 417.33447265625, "r": 536.52759, "b": 475.52097, "coord_origin": "TOPLEFT"}, "confidence": 0.9828086495399475, "cells": [{"id": 30, "text": "Important:", "bbox": {"l": 142.8, "t": 418.30872, "r": 192.41673, "b": 427.5217, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " RCAC is applied to the table or physical file access. It is not applied to the ", "bbox": {"l": 192.41974, "t": 418.30872, "r": 523.17328, "b": 427.5217, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "journal receiver access. Any and all database transactions are represented in the journal ", "bbox": {"l": 142.80002, "t": 430.30853, "r": 536.52759, "b": 439.52151, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "regardless of RCAC row permissions and column masks. This makes it essential that", "bbox": {"l": 142.80002, "t": 442.30835, "r": 518.3606, "b": 451.52133, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "IBM i security is used to ensure that only authorized personnel have access to the ", "bbox": {"l": 142.80002, "t": 454.30816999999996, "r": 506.91161999999997, "b": 463.52115, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "journaled data.", "bbox": {"l": 142.80002, "t": 466.30798, "r": 209.20135, "b": 475.52097, "coord_origin": "TOPLEFT"}}]}, "text": "Important: RCAC is applied to the table or physical file access. It is not applied to the journal receiver access. Any and all database transactions are represented in the journal regardless of RCAC row permissions and column masks. This makes it essential that IBM i security is used to ensure that only authorized personnel have access to the journaled data."}, {"label": "picture", "id": 15, "page_no": 103, "cluster": {"id": 15, "label": "picture", "bbox": {"l": 135.86012268066406, "t": 175.29827880859375, "r": 497.2643127441406, "b": 289.20782470703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9842056035995483, "cells": [{"id": 36, "text": "Source", "bbox": {"l": 159.0775, "t": 225.34418000000005, "r": 204.37405, "b": 239.35186999999996, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Table", "bbox": {"l": 164.21069, "t": 245.01648, "r": 197.96193, "b": 259.02417, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Target", "bbox": {"l": 434.70389000000006, "t": 225.34418000000005, "r": 474.6087, "b": 239.35186999999996, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Table", "bbox": {"l": 437.77770999999996, "t": 245.01648, "r": 471.52896, "b": 259.02417, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "RCAC", "bbox": {"l": 294.07819, "t": 220.35155999999995, "r": 334.01767, "b": 236.12005999999997, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Permissions", "bbox": {"l": 291.86511, "t": 240.09747000000004, "r": 336.3851, "b": 247.98181, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "k", "bbox": {"l": 318.2381, "t": 251.16314999999997, "r": 322.43384, "b": 259.04749000000004, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "SELECT", "bbox": {"l": 236.414, "t": 236.34747000000004, "r": 263.0611, "b": 244.24103000000002, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "INSERT", "bbox": {"l": 363.76089, "t": 236.34747000000004, "r": 390.84229, "b": 244.24103000000002, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Masks", "bbox": {"l": 302.31589, "t": 251.16314999999997, "r": 325.93185, "b": 259.04749000000004, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 103, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.2040786743164, "t": 754.5180053710938, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9170101284980774, "cells": [{"id": 0, "text": "88 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "88"}, {"label": "page_footer", "id": 1, "page_no": 103, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.31021881103516, "t": 754.7303466796875, "r": 334.42142, "b": 763.929931640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9497126936912537, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 104, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "89", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "For example, given a \u201csource\u201d table with a row permission defined as ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 443.44409, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "NAME <> 'CAIN'", "bbox": {"l": 443.39925999999997, "t": 71.65845000000002, "r": 513.35828, "b": 80.43322999999998, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " and a ", "bbox": {"l": 513.41907, "t": 71.50903000000005, "r": 544.08289, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "column mask that is defined to project the value 999.99 for AMOUNT, the ", "bbox": {"l": 136.79956, "t": 83.50885000000017, "r": 462.2626, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "SELECT", "bbox": {"l": 462.23958999999996, "t": 83.65826000000004, "r": 492.23911000000004, "b": 92.48284999999998, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " statement ", "bbox": {"l": 492.23911000000004, "t": 83.50885000000017, "r": 541.67755, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "produces a result set that has the RCAC rules applied. This reduced and modified result set is ", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 547.29004, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "inserted into the \u201ctarget\u201d table even though the query is defined as returning all rows and all ", "bbox": {"l": 136.79959, "t": 107.50847999999996, "r": 542.46948, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "columns. Instead of seven rows that are selected from the source, only three rows are ", "bbox": {"l": 136.79959, "t": 119.50829999999996, "r": 517.87115, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "returned and placed into the target, as shown in Figure 6-4.", "bbox": {"l": 136.79959, "t": 131.50811999999996, "r": 399.19583, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Figure 6-4 RCAC effects on data movement from SOURCE", "bbox": {"l": 136.8, "t": 407.89798, "r": 377.21973, "b": 416.22299, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "6.2.2", "bbox": {"l": 64.800003, "t": 436.73474000000004, "r": 93.918915, "b": 448.72272, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Effects when RCAC is defined on the target table", "bbox": {"l": 97.5588, "t": 436.73474000000004, "r": 401.65768, "b": 448.72272, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Example 6-2 shows a simple example that illustrates the effect of RCAC as defined on the ", "bbox": {"l": 136.8, "t": 462.88873, "r": 536.16815, "b": 472.10172, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "target table.", "bbox": {"l": 136.80002, "t": 474.88855, "r": 189.17468, "b": 484.10153, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Example 6-2 INSERT INTO TARGET statement", "bbox": {"l": 136.8, "t": 496.8779, "r": 330.92816, "b": 505.20291, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "bbox": {"l": 136.8, "t": 514.03799, "r": 346.67709, "b": 522.81277, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "RCAC Effects on Data Movement", "bbox": {"l": 206.3309, "t": 162.62329, "r": 422.9632, "b": 176.68286, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "RCAC Rule Text", "bbox": {"l": 274.85211, "t": 205.28314, "r": 362.21695, "b": 217.60175000000004, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Source", "bbox": {"l": 154.65469, "t": 230.24994000000004, "r": 200.11852, "b": 244.30951000000005, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Table", "bbox": {"l": 159.80653, "t": 249.99414000000002, "r": 193.6824, "b": 264.05371, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Target", "bbox": {"l": 431.29999, "t": 230.24994000000004, "r": 471.35211, "b": 244.30951000000005, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Table", "bbox": {"l": 434.38485999999995, "t": 249.99414000000002, "r": 468.26074, "b": 264.05371, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Permission: WHERE NAME <> \u0091CAIN\u0092", "bbox": {"l": 238.9718, "t": 233.84717, "r": 390.40936, "b": 242.63109999999995, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Mask: AMOUNT", "bbox": {"l": 238.9718, "t": 258.62097000000006, "r": 306.32385, "b": 267.40491, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "GLYPH", "bbox": {"l": 308.66531, "t": 258.56964000000005, "r": 318.72308, "b": 267.81586000000004, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "999 99", "bbox": {"l": 321.09851, "t": 258.62097000000006, "r": 349.76877, "b": 267.40491, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Mask: AMOUNT ", "bbox": {"l": 238.9718, "t": 258.62097000000006, "r": 308.6116, "b": 267.40491, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "999.99", "bbox": {"l": 321.09851, "t": 258.62097000000006, "r": 349.7634, "b": 267.40491, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "PKey", "bbox": {"l": 149.4408, "t": 310.95052999999996, "r": 161.93875, "b": 316.23233, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Name", "bbox": {"l": 173.33221, "t": 310.95052999999996, "r": 188.56422, "b": 316.23233, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Amount", "bbox": {"l": 199.92807, "t": 310.95052999999996, "r": 220.69669, "b": 316.23233, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "0001", "bbox": {"l": 150.24294, "t": 322.05707, "r": 162.72176, "b": 327.33267000000006, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "CAIN", "bbox": {"l": 170.12364, "t": 322.05707, "r": 182.49139, "b": 327.33267000000006, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "10.00", "bbox": {"l": 207.42496, "t": 322.05707, "r": 221.45003999999997, "b": 327.33267000000006, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "0002", "bbox": {"l": 150.24294, "t": 333.16360000000003, "r": 162.72916, "b": 338.43921, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "BEDOYA", "bbox": {"l": 170.1292, "t": 333.16360000000003, "r": 190.28262, "b": 338.43921, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "25.50", "bbox": {"l": 207.42062, "t": 333.16360000000003, "r": 221.45497, "b": 338.43921, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "PKey", "bbox": {"l": 408.655, "t": 328.22742000000005, "r": 421.15295, "b": 333.5092200000001, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Name", "bbox": {"l": 432.54642, "t": 328.22742000000005, "r": 447.77841, "b": 333.5092200000001, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Amount", "bbox": {"l": 459.14224, "t": 328.22742000000005, "r": 479.91085999999996, "b": 333.5092200000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "0002", "bbox": {"l": 409.45721, "t": 339.33392, "r": 421.92615, "b": 344.60953, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "BEDOYA", "bbox": {"l": 429.3255899999999, "t": 339.33392, "r": 449.5209699999999, "b": 344.60953, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "999 99", "bbox": {"l": 463.53989, "t": 339.33392, "r": 480.66864, "b": 344.60953, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "0003", "bbox": {"l": 150.2429, "t": 344.27022999999997, "r": 162.72173, "b": 349.54583999999994, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "CAIN", "bbox": {"l": 170.12361, "t": 344.27022999999997, "r": 182.49136, "b": 349.54583999999994, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "333.00", "bbox": {"l": 204.30893, "t": 344.27022999999997, "r": 221.45371999999998, "b": 349.54583999999994, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "0004", "bbox": {"l": 150.2429, "t": 355.37677, "r": 162.72913, "b": 360.6523700000001, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "BEDOYA", "bbox": {"l": 170.12917, "t": 355.37677, "r": 190.28259, "b": 360.6523700000001, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "75.25", "bbox": {"l": 207.42059, "t": 355.37677, "r": 221.45494, "b": 360.6523700000001, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "0005", "bbox": {"l": 150.2429, "t": 366.48331, "r": 162.72173, "b": 371.75891, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "CAIN", "bbox": {"l": 170.12361, "t": 366.48331, "r": 182.49136, "b": 371.75891, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "987.65", "bbox": {"l": 204.30893, "t": 366.48331, "r": 221.45371999999998, "b": 371.75891, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "0006", "bbox": {"l": 150.2429, "t": 377.58984, "r": 162.72665, "b": 382.86545, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "BEDOYA", "bbox": {"l": 170.12732, "t": 377.58984, "r": 190.27829, "b": 382.86545, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "123.45", "bbox": {"l": 204.30092, "t": 377.58984, "r": 221.45312, "b": 382.86545, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "999.99", "bbox": {"l": 463.53989, "t": 339.33392, "r": 480.6648599999999, "b": 344.60953, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "0004", "bbox": {"l": 409.45721, "t": 350.44052, "r": 421.94098, "b": 355.71613, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "BEDOYA", "bbox": {"l": 429.34164, "t": 350.44052, "r": 449.49254999999994, "b": 355.71613, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "999.99", "bbox": {"l": 463.51517, "t": 350.44052, "r": 480.66736, "b": 355.71613, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "0006", "bbox": {"l": 409.45721, "t": 361.54706, "r": 421.94098, "b": 366.82266, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "BEDOYA", "bbox": {"l": 429.34164, "t": 361.54706, "r": 449.49254999999994, "b": 366.82266, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "999.99", "bbox": {"l": 463.51517, "t": 361.54706, "r": 480.66736, "b": 366.82266, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "INSERT", "bbox": {"l": 358.05859, "t": 344.44214, "r": 382.19501, "b": 351.49335, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "RCAC", "bbox": {"l": 303.63651, "t": 343.49350000000004, "r": 325.92178, "b": 352.27744, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "SELECT", "bbox": {"l": 244.12399, "t": 345.18253, "r": 267.87735, "b": 352.23373, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "0007", "bbox": {"l": 150.2429, "t": 388.69644, "r": 162.72418, "b": 393.97205, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "CAIN", "bbox": {"l": 170.12546, "t": 388.69644, "r": 182.49568, "b": 393.97205, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "1.00", "bbox": {"l": 210.54463, "t": 388.69644, "r": 221.45248, "b": 393.97205, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "bbox": {"l": 235.08450000000002, "t": 383.49487, "r": 474.7415199999999, "b": 394.04608, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 376.070556640625, "t": 754.9903564453125, "r": 523.62878, "b": 764.04638671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9512802362442017, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.6676635742188, "t": 754.3189697265625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9165906310081482, "cells": [{"id": 1, "text": "89", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 136.09054565429688, "t": 70.63800048828125, "r": 547.29004, "b": 141.22569274902344, "coord_origin": "TOPLEFT"}, "confidence": 0.9863300919532776, "cells": [{"id": 2, "text": "For example, given a \u201csource\u201d table with a row permission defined as ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 443.44409, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "NAME <> 'CAIN'", "bbox": {"l": 443.39925999999997, "t": 71.65845000000002, "r": 513.35828, "b": 80.43322999999998, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " and a ", "bbox": {"l": 513.41907, "t": 71.50903000000005, "r": 544.08289, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "column mask that is defined to project the value 999.99 for AMOUNT, the ", "bbox": {"l": 136.79956, "t": 83.50885000000017, "r": 462.2626, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "SELECT", "bbox": {"l": 462.23958999999996, "t": 83.65826000000004, "r": 492.23911000000004, "b": 92.48284999999998, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " statement ", "bbox": {"l": 492.23911000000004, "t": 83.50885000000017, "r": 541.67755, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "produces a result set that has the RCAC rules applied. This reduced and modified result set is ", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 547.29004, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "inserted into the \u201ctarget\u201d table even though the query is defined as returning all rows and all ", "bbox": {"l": 136.79959, "t": 107.50847999999996, "r": 542.46948, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "columns. Instead of seven rows that are selected from the source, only three rows are ", "bbox": {"l": 136.79959, "t": 119.50829999999996, "r": 517.87115, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "returned and placed into the target, as shown in Figure 6-4.", "bbox": {"l": 136.79959, "t": 131.50811999999996, "r": 399.19583, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.06468200683594, "t": 407.373046875, "r": 377.7413635253906, "b": 416.83404541015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9107280969619751, "cells": [{"id": 12, "text": "Figure 6-4 RCAC effects on data movement from SOURCE", "bbox": {"l": 136.8, "t": 407.89798, "r": 377.21973, "b": 416.22299, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 64.16183471679688, "t": 435.82305908203125, "r": 401.65768, "b": 449.0105895996094, "coord_origin": "TOPLEFT"}, "confidence": 0.9636408090591431, "cells": [{"id": 13, "text": "6.2.2", "bbox": {"l": 64.800003, "t": 436.73474000000004, "r": 93.918915, "b": 448.72272, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Effects when RCAC is defined on the target table", "bbox": {"l": 97.5588, "t": 436.73474000000004, "r": 401.65768, "b": 448.72272, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.28038024902344, "t": 462.0472412109375, "r": 536.16815, "b": 484.10153, "coord_origin": "TOPLEFT"}, "confidence": 0.9741792678833008, "cells": [{"id": 15, "text": "Example 6-2 shows a simple example that illustrates the effect of RCAC as defined on the ", "bbox": {"l": 136.8, "t": 462.88873, "r": 536.16815, "b": 472.10172, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "target table.", "bbox": {"l": 136.80002, "t": 474.88855, "r": 189.17468, "b": 484.10153, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "caption", "bbox": {"l": 136.6165771484375, "t": 495.8085632324219, "r": 331.8912658691406, "b": 505.41259765625, "coord_origin": "TOPLEFT"}, "confidence": 0.6991708874702454, "cells": [{"id": 17, "text": "Example 6-2 INSERT INTO TARGET statement", "bbox": {"l": 136.8, "t": 496.8779, "r": 330.92816, "b": 505.20291, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 136.8, "t": 513.3344116210938, "r": 346.67709, "b": 522.9288940429688, "coord_origin": "TOPLEFT"}, "confidence": 0.6854607462882996, "cells": [{"id": 18, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "bbox": {"l": 136.8, "t": 514.03799, "r": 346.67709, "b": 522.81277, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 135.99375915527344, "t": 155.52529907226562, "r": 491.57470703125, "b": 403.7139892578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9803420901298523, "cells": [{"id": 19, "text": "RCAC Effects on Data Movement", "bbox": {"l": 206.3309, "t": 162.62329, "r": 422.9632, "b": 176.68286, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "RCAC Rule Text", "bbox": {"l": 274.85211, "t": 205.28314, "r": 362.21695, "b": 217.60175000000004, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Source", "bbox": {"l": 154.65469, "t": 230.24994000000004, "r": 200.11852, "b": 244.30951000000005, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Table", "bbox": {"l": 159.80653, "t": 249.99414000000002, "r": 193.6824, "b": 264.05371, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Target", "bbox": {"l": 431.29999, "t": 230.24994000000004, "r": 471.35211, "b": 244.30951000000005, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Table", "bbox": {"l": 434.38485999999995, "t": 249.99414000000002, "r": 468.26074, "b": 264.05371, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Permission: WHERE NAME <> \u0091CAIN\u0092", "bbox": {"l": 238.9718, "t": 233.84717, "r": 390.40936, "b": 242.63109999999995, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Mask: AMOUNT", "bbox": {"l": 238.9718, "t": 258.62097000000006, "r": 306.32385, "b": 267.40491, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "GLYPH", "bbox": {"l": 308.66531, "t": 258.56964000000005, "r": 318.72308, "b": 267.81586000000004, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "999 99", "bbox": {"l": 321.09851, "t": 258.62097000000006, "r": 349.76877, "b": 267.40491, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Mask: AMOUNT ", "bbox": {"l": 238.9718, "t": 258.62097000000006, "r": 308.6116, "b": 267.40491, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "999.99", "bbox": {"l": 321.09851, "t": 258.62097000000006, "r": 349.7634, "b": 267.40491, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "PKey", "bbox": {"l": 149.4408, "t": 310.95052999999996, "r": 161.93875, "b": 316.23233, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Name", "bbox": {"l": 173.33221, "t": 310.95052999999996, "r": 188.56422, "b": 316.23233, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Amount", "bbox": {"l": 199.92807, "t": 310.95052999999996, "r": 220.69669, "b": 316.23233, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "0001", "bbox": {"l": 150.24294, "t": 322.05707, "r": 162.72176, "b": 327.33267000000006, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "CAIN", "bbox": {"l": 170.12364, "t": 322.05707, "r": 182.49139, "b": 327.33267000000006, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "10.00", "bbox": {"l": 207.42496, "t": 322.05707, "r": 221.45003999999997, "b": 327.33267000000006, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "0002", "bbox": {"l": 150.24294, "t": 333.16360000000003, "r": 162.72916, "b": 338.43921, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "BEDOYA", "bbox": {"l": 170.1292, "t": 333.16360000000003, "r": 190.28262, "b": 338.43921, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "25.50", "bbox": {"l": 207.42062, "t": 333.16360000000003, "r": 221.45497, "b": 338.43921, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "PKey", "bbox": {"l": 408.655, "t": 328.22742000000005, "r": 421.15295, "b": 333.5092200000001, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Name", "bbox": {"l": 432.54642, "t": 328.22742000000005, "r": 447.77841, "b": 333.5092200000001, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Amount", "bbox": {"l": 459.14224, "t": 328.22742000000005, "r": 479.91085999999996, "b": 333.5092200000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "0002", "bbox": {"l": 409.45721, "t": 339.33392, "r": 421.92615, "b": 344.60953, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "BEDOYA", "bbox": {"l": 429.3255899999999, "t": 339.33392, "r": 449.5209699999999, "b": 344.60953, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "999 99", "bbox": {"l": 463.53989, "t": 339.33392, "r": 480.66864, "b": 344.60953, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "0003", "bbox": {"l": 150.2429, "t": 344.27022999999997, "r": 162.72173, "b": 349.54583999999994, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "CAIN", "bbox": {"l": 170.12361, "t": 344.27022999999997, "r": 182.49136, "b": 349.54583999999994, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "333.00", "bbox": {"l": 204.30893, "t": 344.27022999999997, "r": 221.45371999999998, "b": 349.54583999999994, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "0004", "bbox": {"l": 150.2429, "t": 355.37677, "r": 162.72913, "b": 360.6523700000001, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "BEDOYA", "bbox": {"l": 170.12917, "t": 355.37677, "r": 190.28259, "b": 360.6523700000001, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "75.25", "bbox": {"l": 207.42059, "t": 355.37677, "r": 221.45494, "b": 360.6523700000001, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "0005", "bbox": {"l": 150.2429, "t": 366.48331, "r": 162.72173, "b": 371.75891, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "CAIN", "bbox": {"l": 170.12361, "t": 366.48331, "r": 182.49136, "b": 371.75891, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "987.65", "bbox": {"l": 204.30893, "t": 366.48331, "r": 221.45371999999998, "b": 371.75891, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "0006", "bbox": {"l": 150.2429, "t": 377.58984, "r": 162.72665, "b": 382.86545, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "BEDOYA", "bbox": {"l": 170.12732, "t": 377.58984, "r": 190.27829, "b": 382.86545, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "123.45", "bbox": {"l": 204.30092, "t": 377.58984, "r": 221.45312, "b": 382.86545, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "999.99", "bbox": {"l": 463.53989, "t": 339.33392, "r": 480.6648599999999, "b": 344.60953, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "0004", "bbox": {"l": 409.45721, "t": 350.44052, "r": 421.94098, "b": 355.71613, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "BEDOYA", "bbox": {"l": 429.34164, "t": 350.44052, "r": 449.49254999999994, "b": 355.71613, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "999.99", "bbox": {"l": 463.51517, "t": 350.44052, "r": 480.66736, "b": 355.71613, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "0006", "bbox": {"l": 409.45721, "t": 361.54706, "r": 421.94098, "b": 366.82266, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "BEDOYA", "bbox": {"l": 429.34164, "t": 361.54706, "r": 449.49254999999994, "b": 366.82266, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "999.99", "bbox": {"l": 463.51517, "t": 361.54706, "r": 480.66736, "b": 366.82266, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "INSERT", "bbox": {"l": 358.05859, "t": 344.44214, "r": 382.19501, "b": 351.49335, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "RCAC", "bbox": {"l": 303.63651, "t": 343.49350000000004, "r": 325.92178, "b": 352.27744, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "SELECT", "bbox": {"l": 244.12399, "t": 345.18253, "r": 267.87735, "b": 352.23373, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "0007", "bbox": {"l": 150.2429, "t": 388.69644, "r": 162.72418, "b": 393.97205, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "CAIN", "bbox": {"l": 170.12546, "t": 388.69644, "r": 182.49568, "b": 393.97205, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "1.00", "bbox": {"l": 210.54463, "t": 388.69644, "r": 221.45248, "b": 393.97205, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "bbox": {"l": 235.08450000000002, "t": 383.49487, "r": 474.7415199999999, "b": 394.04608, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 104, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 376.070556640625, "t": 754.9903564453125, "r": 523.62878, "b": 764.04638671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9512802362442017, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 104, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6676635742188, "t": 754.3189697265625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9165906310081482, "cells": [{"id": 1, "text": "89", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "89"}, {"label": "text", "id": 2, "page_no": 104, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.09054565429688, "t": 70.63800048828125, "r": 547.29004, "b": 141.22569274902344, "coord_origin": "TOPLEFT"}, "confidence": 0.9863300919532776, "cells": [{"id": 2, "text": "For example, given a \u201csource\u201d table with a row permission defined as ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 443.44409, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "NAME <> 'CAIN'", "bbox": {"l": 443.39925999999997, "t": 71.65845000000002, "r": 513.35828, "b": 80.43322999999998, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " and a ", "bbox": {"l": 513.41907, "t": 71.50903000000005, "r": 544.08289, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "column mask that is defined to project the value 999.99 for AMOUNT, the ", "bbox": {"l": 136.79956, "t": 83.50885000000017, "r": 462.2626, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "SELECT", "bbox": {"l": 462.23958999999996, "t": 83.65826000000004, "r": 492.23911000000004, "b": 92.48284999999998, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " statement ", "bbox": {"l": 492.23911000000004, "t": 83.50885000000017, "r": 541.67755, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "produces a result set that has the RCAC rules applied. This reduced and modified result set is ", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 547.29004, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "inserted into the \u201ctarget\u201d table even though the query is defined as returning all rows and all ", "bbox": {"l": 136.79959, "t": 107.50847999999996, "r": 542.46948, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "columns. Instead of seven rows that are selected from the source, only three rows are ", "bbox": {"l": 136.79959, "t": 119.50829999999996, "r": 517.87115, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "returned and placed into the target, as shown in Figure 6-4.", "bbox": {"l": 136.79959, "t": 131.50811999999996, "r": 399.19583, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "For example, given a \u201csource\u201d table with a row permission defined as NAME <> 'CAIN' and a column mask that is defined to project the value 999.99 for AMOUNT, the SELECT statement produces a result set that has the RCAC rules applied. This reduced and modified result set is inserted into the \u201ctarget\u201d table even though the query is defined as returning all rows and all columns. Instead of seven rows that are selected from the source, only three rows are returned and placed into the target, as shown in Figure 6-4."}, {"label": "caption", "id": 3, "page_no": 104, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.06468200683594, "t": 407.373046875, "r": 377.7413635253906, "b": 416.83404541015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9107280969619751, "cells": [{"id": 12, "text": "Figure 6-4 RCAC effects on data movement from SOURCE", "bbox": {"l": 136.8, "t": 407.89798, "r": 377.21973, "b": 416.22299, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-4 RCAC effects on data movement from SOURCE"}, {"label": "section_header", "id": 4, "page_no": 104, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.16183471679688, "t": 435.82305908203125, "r": 401.65768, "b": 449.0105895996094, "coord_origin": "TOPLEFT"}, "confidence": 0.9636408090591431, "cells": [{"id": 13, "text": "6.2.2", "bbox": {"l": 64.800003, "t": 436.73474000000004, "r": 93.918915, "b": 448.72272, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Effects when RCAC is defined on the target table", "bbox": {"l": 97.5588, "t": 436.73474000000004, "r": 401.65768, "b": 448.72272, "coord_origin": "TOPLEFT"}}]}, "text": "6.2.2 Effects when RCAC is defined on the target table"}, {"label": "text", "id": 5, "page_no": 104, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.28038024902344, "t": 462.0472412109375, "r": 536.16815, "b": 484.10153, "coord_origin": "TOPLEFT"}, "confidence": 0.9741792678833008, "cells": [{"id": 15, "text": "Example 6-2 shows a simple example that illustrates the effect of RCAC as defined on the ", "bbox": {"l": 136.8, "t": 462.88873, "r": 536.16815, "b": 472.10172, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "target table.", "bbox": {"l": 136.80002, "t": 474.88855, "r": 189.17468, "b": 484.10153, "coord_origin": "TOPLEFT"}}]}, "text": "Example 6-2 shows a simple example that illustrates the effect of RCAC as defined on the target table."}, {"label": "caption", "id": 6, "page_no": 104, "cluster": {"id": 6, "label": "caption", "bbox": {"l": 136.6165771484375, "t": 495.8085632324219, "r": 331.8912658691406, "b": 505.41259765625, "coord_origin": "TOPLEFT"}, "confidence": 0.6991708874702454, "cells": [{"id": 17, "text": "Example 6-2 INSERT INTO TARGET statement", "bbox": {"l": 136.8, "t": 496.8779, "r": 330.92816, "b": 505.20291, "coord_origin": "TOPLEFT"}}]}, "text": "Example 6-2 INSERT INTO TARGET statement"}, {"label": "text", "id": 7, "page_no": 104, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.8, "t": 513.3344116210938, "r": 346.67709, "b": 522.9288940429688, "coord_origin": "TOPLEFT"}, "confidence": 0.6854607462882996, "cells": [{"id": 18, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "bbox": {"l": 136.8, "t": 514.03799, "r": 346.67709, "b": 522.81277, "coord_origin": "TOPLEFT"}}]}, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);"}, {"label": "picture", "id": 8, "page_no": 104, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 135.99375915527344, "t": 155.52529907226562, "r": 491.57470703125, "b": 403.7139892578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9803420901298523, "cells": [{"id": 19, "text": "RCAC Effects on Data Movement", "bbox": {"l": 206.3309, "t": 162.62329, "r": 422.9632, "b": 176.68286, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "RCAC Rule Text", "bbox": {"l": 274.85211, "t": 205.28314, "r": 362.21695, "b": 217.60175000000004, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Source", "bbox": {"l": 154.65469, "t": 230.24994000000004, "r": 200.11852, "b": 244.30951000000005, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Table", "bbox": {"l": 159.80653, "t": 249.99414000000002, "r": 193.6824, "b": 264.05371, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Target", "bbox": {"l": 431.29999, "t": 230.24994000000004, "r": 471.35211, "b": 244.30951000000005, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Table", "bbox": {"l": 434.38485999999995, "t": 249.99414000000002, "r": 468.26074, "b": 264.05371, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Permission: WHERE NAME <> \u0091CAIN\u0092", "bbox": {"l": 238.9718, "t": 233.84717, "r": 390.40936, "b": 242.63109999999995, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Mask: AMOUNT", "bbox": {"l": 238.9718, "t": 258.62097000000006, "r": 306.32385, "b": 267.40491, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "GLYPH", "bbox": {"l": 308.66531, "t": 258.56964000000005, "r": 318.72308, "b": 267.81586000000004, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "999 99", "bbox": {"l": 321.09851, "t": 258.62097000000006, "r": 349.76877, "b": 267.40491, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Mask: AMOUNT ", "bbox": {"l": 238.9718, "t": 258.62097000000006, "r": 308.6116, "b": 267.40491, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "999.99", "bbox": {"l": 321.09851, "t": 258.62097000000006, "r": 349.7634, "b": 267.40491, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "PKey", "bbox": {"l": 149.4408, "t": 310.95052999999996, "r": 161.93875, "b": 316.23233, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Name", "bbox": {"l": 173.33221, "t": 310.95052999999996, "r": 188.56422, "b": 316.23233, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Amount", "bbox": {"l": 199.92807, "t": 310.95052999999996, "r": 220.69669, "b": 316.23233, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "0001", "bbox": {"l": 150.24294, "t": 322.05707, "r": 162.72176, "b": 327.33267000000006, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "CAIN", "bbox": {"l": 170.12364, "t": 322.05707, "r": 182.49139, "b": 327.33267000000006, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "10.00", "bbox": {"l": 207.42496, "t": 322.05707, "r": 221.45003999999997, "b": 327.33267000000006, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "0002", "bbox": {"l": 150.24294, "t": 333.16360000000003, "r": 162.72916, "b": 338.43921, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "BEDOYA", "bbox": {"l": 170.1292, "t": 333.16360000000003, "r": 190.28262, "b": 338.43921, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "25.50", "bbox": {"l": 207.42062, "t": 333.16360000000003, "r": 221.45497, "b": 338.43921, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "PKey", "bbox": {"l": 408.655, "t": 328.22742000000005, "r": 421.15295, "b": 333.5092200000001, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Name", "bbox": {"l": 432.54642, "t": 328.22742000000005, "r": 447.77841, "b": 333.5092200000001, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Amount", "bbox": {"l": 459.14224, "t": 328.22742000000005, "r": 479.91085999999996, "b": 333.5092200000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "0002", "bbox": {"l": 409.45721, "t": 339.33392, "r": 421.92615, "b": 344.60953, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "BEDOYA", "bbox": {"l": 429.3255899999999, "t": 339.33392, "r": 449.5209699999999, "b": 344.60953, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "999 99", "bbox": {"l": 463.53989, "t": 339.33392, "r": 480.66864, "b": 344.60953, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "0003", "bbox": {"l": 150.2429, "t": 344.27022999999997, "r": 162.72173, "b": 349.54583999999994, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "CAIN", "bbox": {"l": 170.12361, "t": 344.27022999999997, "r": 182.49136, "b": 349.54583999999994, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "333.00", "bbox": {"l": 204.30893, "t": 344.27022999999997, "r": 221.45371999999998, "b": 349.54583999999994, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "0004", "bbox": {"l": 150.2429, "t": 355.37677, "r": 162.72913, "b": 360.6523700000001, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "BEDOYA", "bbox": {"l": 170.12917, "t": 355.37677, "r": 190.28259, "b": 360.6523700000001, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "75.25", "bbox": {"l": 207.42059, "t": 355.37677, "r": 221.45494, "b": 360.6523700000001, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "0005", "bbox": {"l": 150.2429, "t": 366.48331, "r": 162.72173, "b": 371.75891, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "CAIN", "bbox": {"l": 170.12361, "t": 366.48331, "r": 182.49136, "b": 371.75891, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "987.65", "bbox": {"l": 204.30893, "t": 366.48331, "r": 221.45371999999998, "b": 371.75891, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "0006", "bbox": {"l": 150.2429, "t": 377.58984, "r": 162.72665, "b": 382.86545, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "BEDOYA", "bbox": {"l": 170.12732, "t": 377.58984, "r": 190.27829, "b": 382.86545, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "123.45", "bbox": {"l": 204.30092, "t": 377.58984, "r": 221.45312, "b": 382.86545, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "999.99", "bbox": {"l": 463.53989, "t": 339.33392, "r": 480.6648599999999, "b": 344.60953, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "0004", "bbox": {"l": 409.45721, "t": 350.44052, "r": 421.94098, "b": 355.71613, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "BEDOYA", "bbox": {"l": 429.34164, "t": 350.44052, "r": 449.49254999999994, "b": 355.71613, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "999.99", "bbox": {"l": 463.51517, "t": 350.44052, "r": 480.66736, "b": 355.71613, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "0006", "bbox": {"l": 409.45721, "t": 361.54706, "r": 421.94098, "b": 366.82266, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "BEDOYA", "bbox": {"l": 429.34164, "t": 361.54706, "r": 449.49254999999994, "b": 366.82266, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "999.99", "bbox": {"l": 463.51517, "t": 361.54706, "r": 480.66736, "b": 366.82266, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "INSERT", "bbox": {"l": 358.05859, "t": 344.44214, "r": 382.19501, "b": 351.49335, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "RCAC", "bbox": {"l": 303.63651, "t": 343.49350000000004, "r": 325.92178, "b": 352.27744, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "SELECT", "bbox": {"l": 244.12399, "t": 345.18253, "r": 267.87735, "b": 352.23373, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "0007", "bbox": {"l": 150.2429, "t": 388.69644, "r": 162.72418, "b": 393.97205, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "CAIN", "bbox": {"l": 170.12546, "t": 388.69644, "r": 182.49568, "b": 393.97205, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "1.00", "bbox": {"l": 210.54463, "t": 388.69644, "r": 221.45248, "b": 393.97205, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "bbox": {"l": 235.08450000000002, "t": 383.49487, "r": 474.7415199999999, "b": 394.04608, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 104, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.09054565429688, "t": 70.63800048828125, "r": 547.29004, "b": 141.22569274902344, "coord_origin": "TOPLEFT"}, "confidence": 0.9863300919532776, "cells": [{"id": 2, "text": "For example, given a \u201csource\u201d table with a row permission defined as ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 443.44409, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "NAME <> 'CAIN'", "bbox": {"l": 443.39925999999997, "t": 71.65845000000002, "r": 513.35828, "b": 80.43322999999998, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " and a ", "bbox": {"l": 513.41907, "t": 71.50903000000005, "r": 544.08289, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "column mask that is defined to project the value 999.99 for AMOUNT, the ", "bbox": {"l": 136.79956, "t": 83.50885000000017, "r": 462.2626, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "SELECT", "bbox": {"l": 462.23958999999996, "t": 83.65826000000004, "r": 492.23911000000004, "b": 92.48284999999998, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " statement ", "bbox": {"l": 492.23911000000004, "t": 83.50885000000017, "r": 541.67755, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "produces a result set that has the RCAC rules applied. This reduced and modified result set is ", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 547.29004, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "inserted into the \u201ctarget\u201d table even though the query is defined as returning all rows and all ", "bbox": {"l": 136.79959, "t": 107.50847999999996, "r": 542.46948, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "columns. Instead of seven rows that are selected from the source, only three rows are ", "bbox": {"l": 136.79959, "t": 119.50829999999996, "r": 517.87115, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "returned and placed into the target, as shown in Figure 6-4.", "bbox": {"l": 136.79959, "t": 131.50811999999996, "r": 399.19583, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "For example, given a \u201csource\u201d table with a row permission defined as NAME <> 'CAIN' and a column mask that is defined to project the value 999.99 for AMOUNT, the SELECT statement produces a result set that has the RCAC rules applied. This reduced and modified result set is inserted into the \u201ctarget\u201d table even though the query is defined as returning all rows and all columns. Instead of seven rows that are selected from the source, only three rows are returned and placed into the target, as shown in Figure 6-4."}, {"label": "caption", "id": 3, "page_no": 104, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.06468200683594, "t": 407.373046875, "r": 377.7413635253906, "b": 416.83404541015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9107280969619751, "cells": [{"id": 12, "text": "Figure 6-4 RCAC effects on data movement from SOURCE", "bbox": {"l": 136.8, "t": 407.89798, "r": 377.21973, "b": 416.22299, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-4 RCAC effects on data movement from SOURCE"}, {"label": "section_header", "id": 4, "page_no": 104, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.16183471679688, "t": 435.82305908203125, "r": 401.65768, "b": 449.0105895996094, "coord_origin": "TOPLEFT"}, "confidence": 0.9636408090591431, "cells": [{"id": 13, "text": "6.2.2", "bbox": {"l": 64.800003, "t": 436.73474000000004, "r": 93.918915, "b": 448.72272, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Effects when RCAC is defined on the target table", "bbox": {"l": 97.5588, "t": 436.73474000000004, "r": 401.65768, "b": 448.72272, "coord_origin": "TOPLEFT"}}]}, "text": "6.2.2 Effects when RCAC is defined on the target table"}, {"label": "text", "id": 5, "page_no": 104, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.28038024902344, "t": 462.0472412109375, "r": 536.16815, "b": 484.10153, "coord_origin": "TOPLEFT"}, "confidence": 0.9741792678833008, "cells": [{"id": 15, "text": "Example 6-2 shows a simple example that illustrates the effect of RCAC as defined on the ", "bbox": {"l": 136.8, "t": 462.88873, "r": 536.16815, "b": 472.10172, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "target table.", "bbox": {"l": 136.80002, "t": 474.88855, "r": 189.17468, "b": 484.10153, "coord_origin": "TOPLEFT"}}]}, "text": "Example 6-2 shows a simple example that illustrates the effect of RCAC as defined on the target table."}, {"label": "caption", "id": 6, "page_no": 104, "cluster": {"id": 6, "label": "caption", "bbox": {"l": 136.6165771484375, "t": 495.8085632324219, "r": 331.8912658691406, "b": 505.41259765625, "coord_origin": "TOPLEFT"}, "confidence": 0.6991708874702454, "cells": [{"id": 17, "text": "Example 6-2 INSERT INTO TARGET statement", "bbox": {"l": 136.8, "t": 496.8779, "r": 330.92816, "b": 505.20291, "coord_origin": "TOPLEFT"}}]}, "text": "Example 6-2 INSERT INTO TARGET statement"}, {"label": "text", "id": 7, "page_no": 104, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.8, "t": 513.3344116210938, "r": 346.67709, "b": 522.9288940429688, "coord_origin": "TOPLEFT"}, "confidence": 0.6854607462882996, "cells": [{"id": 18, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "bbox": {"l": 136.8, "t": 514.03799, "r": 346.67709, "b": 522.81277, "coord_origin": "TOPLEFT"}}]}, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);"}, {"label": "picture", "id": 8, "page_no": 104, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 135.99375915527344, "t": 155.52529907226562, "r": 491.57470703125, "b": 403.7139892578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9803420901298523, "cells": [{"id": 19, "text": "RCAC Effects on Data Movement", "bbox": {"l": 206.3309, "t": 162.62329, "r": 422.9632, "b": 176.68286, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "RCAC Rule Text", "bbox": {"l": 274.85211, "t": 205.28314, "r": 362.21695, "b": 217.60175000000004, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Source", "bbox": {"l": 154.65469, "t": 230.24994000000004, "r": 200.11852, "b": 244.30951000000005, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Table", "bbox": {"l": 159.80653, "t": 249.99414000000002, "r": 193.6824, "b": 264.05371, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Target", "bbox": {"l": 431.29999, "t": 230.24994000000004, "r": 471.35211, "b": 244.30951000000005, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Table", "bbox": {"l": 434.38485999999995, "t": 249.99414000000002, "r": 468.26074, "b": 264.05371, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Permission: WHERE NAME <> \u0091CAIN\u0092", "bbox": {"l": 238.9718, "t": 233.84717, "r": 390.40936, "b": 242.63109999999995, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Mask: AMOUNT", "bbox": {"l": 238.9718, "t": 258.62097000000006, "r": 306.32385, "b": 267.40491, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "GLYPH", "bbox": {"l": 308.66531, "t": 258.56964000000005, "r": 318.72308, "b": 267.81586000000004, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "999 99", "bbox": {"l": 321.09851, "t": 258.62097000000006, "r": 349.76877, "b": 267.40491, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Mask: AMOUNT ", "bbox": {"l": 238.9718, "t": 258.62097000000006, "r": 308.6116, "b": 267.40491, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "999.99", "bbox": {"l": 321.09851, "t": 258.62097000000006, "r": 349.7634, "b": 267.40491, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "PKey", "bbox": {"l": 149.4408, "t": 310.95052999999996, "r": 161.93875, "b": 316.23233, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Name", "bbox": {"l": 173.33221, "t": 310.95052999999996, "r": 188.56422, "b": 316.23233, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Amount", "bbox": {"l": 199.92807, "t": 310.95052999999996, "r": 220.69669, "b": 316.23233, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "0001", "bbox": {"l": 150.24294, "t": 322.05707, "r": 162.72176, "b": 327.33267000000006, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "CAIN", "bbox": {"l": 170.12364, "t": 322.05707, "r": 182.49139, "b": 327.33267000000006, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "10.00", "bbox": {"l": 207.42496, "t": 322.05707, "r": 221.45003999999997, "b": 327.33267000000006, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "0002", "bbox": {"l": 150.24294, "t": 333.16360000000003, "r": 162.72916, "b": 338.43921, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "BEDOYA", "bbox": {"l": 170.1292, "t": 333.16360000000003, "r": 190.28262, "b": 338.43921, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "25.50", "bbox": {"l": 207.42062, "t": 333.16360000000003, "r": 221.45497, "b": 338.43921, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "PKey", "bbox": {"l": 408.655, "t": 328.22742000000005, "r": 421.15295, "b": 333.5092200000001, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Name", "bbox": {"l": 432.54642, "t": 328.22742000000005, "r": 447.77841, "b": 333.5092200000001, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Amount", "bbox": {"l": 459.14224, "t": 328.22742000000005, "r": 479.91085999999996, "b": 333.5092200000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "0002", "bbox": {"l": 409.45721, "t": 339.33392, "r": 421.92615, "b": 344.60953, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "BEDOYA", "bbox": {"l": 429.3255899999999, "t": 339.33392, "r": 449.5209699999999, "b": 344.60953, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "999 99", "bbox": {"l": 463.53989, "t": 339.33392, "r": 480.66864, "b": 344.60953, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "0003", "bbox": {"l": 150.2429, "t": 344.27022999999997, "r": 162.72173, "b": 349.54583999999994, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "CAIN", "bbox": {"l": 170.12361, "t": 344.27022999999997, "r": 182.49136, "b": 349.54583999999994, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "333.00", "bbox": {"l": 204.30893, "t": 344.27022999999997, "r": 221.45371999999998, "b": 349.54583999999994, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "0004", "bbox": {"l": 150.2429, "t": 355.37677, "r": 162.72913, "b": 360.6523700000001, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "BEDOYA", "bbox": {"l": 170.12917, "t": 355.37677, "r": 190.28259, "b": 360.6523700000001, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "75.25", "bbox": {"l": 207.42059, "t": 355.37677, "r": 221.45494, "b": 360.6523700000001, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "0005", "bbox": {"l": 150.2429, "t": 366.48331, "r": 162.72173, "b": 371.75891, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "CAIN", "bbox": {"l": 170.12361, "t": 366.48331, "r": 182.49136, "b": 371.75891, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "987.65", "bbox": {"l": 204.30893, "t": 366.48331, "r": 221.45371999999998, "b": 371.75891, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "0006", "bbox": {"l": 150.2429, "t": 377.58984, "r": 162.72665, "b": 382.86545, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "BEDOYA", "bbox": {"l": 170.12732, "t": 377.58984, "r": 190.27829, "b": 382.86545, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "123.45", "bbox": {"l": 204.30092, "t": 377.58984, "r": 221.45312, "b": 382.86545, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "999.99", "bbox": {"l": 463.53989, "t": 339.33392, "r": 480.6648599999999, "b": 344.60953, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "0004", "bbox": {"l": 409.45721, "t": 350.44052, "r": 421.94098, "b": 355.71613, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "BEDOYA", "bbox": {"l": 429.34164, "t": 350.44052, "r": 449.49254999999994, "b": 355.71613, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "999.99", "bbox": {"l": 463.51517, "t": 350.44052, "r": 480.66736, "b": 355.71613, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "0006", "bbox": {"l": 409.45721, "t": 361.54706, "r": 421.94098, "b": 366.82266, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "BEDOYA", "bbox": {"l": 429.34164, "t": 361.54706, "r": 449.49254999999994, "b": 366.82266, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "999.99", "bbox": {"l": 463.51517, "t": 361.54706, "r": 480.66736, "b": 366.82266, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "INSERT", "bbox": {"l": 358.05859, "t": 344.44214, "r": 382.19501, "b": 351.49335, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "RCAC", "bbox": {"l": 303.63651, "t": 343.49350000000004, "r": 325.92178, "b": 352.27744, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "SELECT", "bbox": {"l": 244.12399, "t": 345.18253, "r": 267.87735, "b": 352.23373, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "0007", "bbox": {"l": 150.2429, "t": 388.69644, "r": 162.72418, "b": 393.97205, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "CAIN", "bbox": {"l": 170.12546, "t": 388.69644, "r": 182.49568, "b": 393.97205, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "1.00", "bbox": {"l": 210.54463, "t": 388.69644, "r": 221.45248, "b": 393.97205, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "bbox": {"l": 235.08450000000002, "t": 383.49487, "r": 474.7415199999999, "b": 394.04608, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 104, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 376.070556640625, "t": 754.9903564453125, "r": 523.62878, "b": 764.04638671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9512802362442017, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 104, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6676635742188, "t": 754.3189697265625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9165906310081482, "cells": [{"id": 1, "text": "89", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "89"}]}}, {"page_no": 105, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "90 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Given a \u201ctarget\u201d table with a row permission defined as ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 380.89371, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "NAME <> 'CAIN'", "bbox": {"l": 380.87976, "t": 71.65808000000015, "r": 450.7790499999999, "b": 80.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " and a column mask ", "bbox": {"l": 450.83978, "t": 71.50867000000005, "r": 543.01062, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "that is defined to project the value 999.99 for AMOUNT, the ", "bbox": {"l": 136.79999, "t": 83.50847999999996, "r": 400.68625, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "SELECT", "bbox": {"l": 400.62048, "t": 83.65790000000004, "r": 430.56023999999996, "b": 92.48248000000001, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " statement produces a ", "bbox": {"l": 430.56023999999996, "t": 83.50847999999996, "r": 532.24695, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "result set that represents all the rows and columns. The seven row result set is inserted into ", "bbox": {"l": 136.80002, "t": 95.50829999999996, "r": 543.31641, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "the \u201ctarget\u201d, and the RCAC row permission causes an error to be returned, as shown in ", "bbox": {"l": 136.80002, "t": 107.50811999999996, "r": 523.92529, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Figure 6-5. The source rows where ", "bbox": {"l": 136.80002, "t": 119.50792999999999, "r": 292.3653, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "NAME = 'CAIN'", "bbox": {"l": 292.32043, "t": 119.65734999999995, "r": 355.79947, "b": 128.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": " do not satisfy the target table\u2019s permission, ", "bbox": {"l": 355.80051, "t": 119.50792999999999, "r": 547.26459, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "and therefore cannot be inserted. In other words, you are inserting data that you cannot read.", "bbox": {"l": 136.80002, "t": 131.50775, "r": 547.2417, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Figure 6-5 RCAC effects on data movement on TARGET", "bbox": {"l": 136.8, "t": 414.61798, "r": 366.09122, "b": 422.94299, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "6.2.3", "bbox": {"l": 64.800003, "t": 443.45474, "r": 93.849205, "b": 455.44272, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Effects when RCAC is defined on both source and target tables", "bbox": {"l": 97.480339, "t": 443.45474, "r": 490.12787, "b": 455.44272, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Example 6-3 shows a simple example that illustrates the effect of RCAC as defined on both ", "bbox": {"l": 136.8, "t": 469.60873, "r": 541.63324, "b": 478.82172, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "the source and the target tables.", "bbox": {"l": 136.80002, "t": 481.60855, "r": 279.84653, "b": 490.82153, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Example 6-3 INSERT INTO TARGET statement", "bbox": {"l": 136.8, "t": 503.5979, "r": 330.92816, "b": 511.92291, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "bbox": {"l": 136.8, "t": 520.758, "r": 346.67709, "b": 529.53278, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Given a \u201csource\u201d table and a \u201ctarget\u201d table with a row permission defined as ", "bbox": {"l": 136.8, "t": 549.5882300000001, "r": 472.36234, "b": 558.8012200000001, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "NAME <> 'CAIN'", "bbox": {"l": 472.31952, "t": 549.73763, "r": 542.2785, "b": 558.51237, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "and a column mask that is defined to project the value 999.99 for AMOUNT, the ", "bbox": {"l": 136.79996, "t": 561.58803, "r": 490.08017000000007, "b": 570.80103, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "SELECT", "bbox": {"l": 490.02042, "t": 561.73743, "r": 520.0199, "b": 570.56198, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "statement produces a result set that has the RCAC rules applied. This reduced and modified ", "bbox": {"l": 136.80099, "t": 573.5878299999999, "r": 547.2467, "b": 582.80083, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "result set is inserted into the \u201ctarget\u201d table even though the query is defined as returning all ", "bbox": {"l": 136.80099, "t": 585.58763, "r": 539.85034, "b": 594.80063, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "rows and all columns. Instead of seven rows that are selected from the source, only three ", "bbox": {"l": 136.80099, "t": 597.58743, "r": 532.92114, "b": 606.80043, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "rows are returned.", "bbox": {"l": 136.80099, "t": 609.58723, "r": 218.03972000000002, "b": 618.80023, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "RCAC Effects on Data Movement", "bbox": {"l": 208.3886, "t": 165.44983000000002, "r": 424.4899, "b": 179.47484999999995, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "RCAC Rule Text", "bbox": {"l": 276.74149, "t": 208.00494000000003, "r": 363.89221, "b": 220.29327, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Source", "bbox": {"l": 156.83929, "t": 232.91034000000002, "r": 202.1917, "b": 246.93535999999995, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Table", "bbox": {"l": 161.97852, "t": 252.60601999999994, "r": 195.77136, "b": 266.63104, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Target", "bbox": {"l": 432.80521, "t": 232.91034000000002, "r": 472.75925, "b": 246.93535999999995, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Table", "bbox": {"l": 435.88251, "t": 252.60601999999994, "r": 469.67538, "b": 266.63104, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Permission: WHERE NAME <> \u0091CAIN\u0092", "bbox": {"l": 240.9493, "t": 236.49872000000005, "r": 392.01541, "b": 245.26104999999995, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Mask: AMOUNT", "bbox": {"l": 240.9493, "t": 261.21160999999995, "r": 308.13611, "b": 269.97393999999997, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "GLYPH", "bbox": {"l": 310.47171, "t": 261.1604, "r": 320.50479, "b": 270.38385000000005, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "999 99", "bbox": {"l": 322.8743, "t": 261.21160999999995, "r": 351.47424, "b": 269.97393999999997, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Mask: AMOUNT ", "bbox": {"l": 240.9493, "t": 261.21160999999995, "r": 310.41809, "b": 269.97393999999997, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "999.99", "bbox": {"l": 322.8743, "t": 261.21160999999995, "r": 351.46893, "b": 269.97393999999997, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "PKey", "bbox": {"l": 151.6382, "t": 313.41269000000005, "r": 164.10535, "b": 318.68152, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Name", "bbox": {"l": 175.47073, "t": 313.41269000000005, "r": 190.66521, "b": 318.68152, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Amount", "bbox": {"l": 202.00105, "t": 313.41269000000005, "r": 222.71851000000004, "b": 318.68152, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "0001", "bbox": {"l": 152.43835, "t": 324.49203, "r": 164.88643, "b": 329.75473, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "CAIN", "bbox": {"l": 172.27008, "t": 324.49203, "r": 184.60736, "b": 329.75473, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "10.00", "bbox": {"l": 209.47951, "t": 324.49203, "r": 223.47005, "b": 329.75473, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "0002", "bbox": {"l": 152.43835, "t": 335.57138, "r": 164.89381, "b": 340.83408, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "BEDOYA", "bbox": {"l": 172.27562, "t": 335.57138, "r": 192.37941, "b": 340.83408, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "25.50", "bbox": {"l": 209.4752, "t": 335.57138, "r": 223.47498, "b": 340.83408, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "PKey", "bbox": {"l": 410.21579, "t": 330.64709, "r": 422.68292, "b": 335.91592, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Name", "bbox": {"l": 434.04831, "t": 330.64709, "r": 449.24280000000005, "b": 335.91592, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Amount", "bbox": {"l": 460.57863999999995, "t": 330.64709, "r": 481.29610999999994, "b": 335.91592, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ERR", "bbox": {"l": 435.85199000000006, "t": 336.77774, "r": 450.38702, "b": 344.67169, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "OR", "bbox": {"l": 450.29745, "t": 336.77774, "r": 461.42471000000006, "b": 344.67169, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": ":", "bbox": {"l": 461.42661000000004, "t": 336.77774, "r": 463.9009699999999, "b": 344.67169, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "0003", "bbox": {"l": 152.43829, "t": 346.65057, "r": 164.88637, "b": 351.91327, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "CAIN", "bbox": {"l": 172.27002, "t": 346.65057, "r": 184.6073, "b": 351.91327, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "333.00", "bbox": {"l": 206.37112, "t": 346.65057, "r": 223.47367999999997, "b": 351.91327, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "0004", "bbox": {"l": 152.43829, "t": 357.72992, "r": 164.89375, "b": 362.99261000000007, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "BEDOYA", "bbox": {"l": 172.27556, "t": 357.72992, "r": 192.37935, "b": 362.99261000000007, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "75.25", "bbox": {"l": 209.47514, "t": 357.72992, "r": 223.47491, "b": 362.99261000000007, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "0005", "bbox": {"l": 152.43829, "t": 368.80927, "r": 164.88637, "b": 374.07196000000005, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "CAIN", "bbox": {"l": 172.27002, "t": 368.80927, "r": 184.6073, "b": 374.07196000000005, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "987.65", "bbox": {"l": 206.37112, "t": 368.80927, "r": 223.47367999999997, "b": 374.07196000000005, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "0006", "bbox": {"l": 152.43829, "t": 379.88861, "r": 164.8913, "b": 385.15131, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "BEDOYA", "bbox": {"l": 172.27373, "t": 379.88861, "r": 192.37505, "b": 385.15131, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "123.45", "bbox": {"l": 206.36313, "t": 379.88861, "r": 223.47307, "b": 385.15131, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "INSERT", "bbox": {"l": 359.74359, "t": 346.82211, "r": 383.82053, "b": 353.85596, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "RCAC", "bbox": {"l": 305.4552, "t": 345.87585, "r": 327.68582, "b": 354.63812, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "SELECT", "bbox": {"l": 246.0889, "t": 347.5607, "r": 269.78372, "b": 354.59454, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "INSER", "bbox": {"l": 415.60159, "t": 347.85703, "r": 437.65851000000004, "b": 355.75098, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "T or ", "bbox": {"l": 437.56802, "t": 347.85703, "r": 454.15735, "b": 355.75098, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "UPD", "bbox": {"l": 454.28015, "t": 347.85703, "r": 470.66449000000006, "b": 355.75098, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "ATE", "bbox": {"l": 470.55276, "t": 347.85703, "r": 484.20978, "b": 355.75098, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "does", "bbox": {"l": 420.52539, "t": 358.93628, "r": 434.21057, "b": 366.8302299999999, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "not", "bbox": {"l": 445.9407, "t": 358.93628, "r": 453.2720299999999, "b": 366.8302299999999, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "sa", "bbox": {"l": 453.2720299999999, "t": 358.93628, "r": 463.5359199999999, "b": 366.8302299999999, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "tisfy", "bbox": {"l": 463.4556, "t": 358.93628, "r": 479.23618000000005, "b": 366.8302299999999, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "row permissions.", "bbox": {"l": 418.00211, "t": 370.01553, "r": 481.72345, "b": 377.90948, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "0007", "bbox": {"l": 152.43829, "t": 390.96759, "r": 164.88882, "b": 396.23029, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "CAIN", "bbox": {"l": 172.27187, "t": 390.96759, "r": 184.6116, "b": 396.23029, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "1.00", "bbox": {"l": 212.59146, "t": 390.96759, "r": 223.47244, "b": 396.23029, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "bbox": {"l": 237.07159, "t": 385.77884, "r": 476.14007999999995, "b": 396.30414, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.0672378540039, "t": 754.3772583007812, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9143837690353394, "cells": [{"id": 0, "text": "90 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.31163787841797, "t": 754.7432861328125, "r": 334.42142, "b": 763.88671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9527189135551453, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.84625244140625, "t": 70.61248779296875, "r": 547.26459, "b": 141.04803466796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9829095602035522, "cells": [{"id": 2, "text": "Given a \u201ctarget\u201d table with a row permission defined as ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 380.89371, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "NAME <> 'CAIN'", "bbox": {"l": 380.87976, "t": 71.65808000000015, "r": 450.7790499999999, "b": 80.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " and a column mask ", "bbox": {"l": 450.83978, "t": 71.50867000000005, "r": 543.01062, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "that is defined to project the value 999.99 for AMOUNT, the ", "bbox": {"l": 136.79999, "t": 83.50847999999996, "r": 400.68625, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "SELECT", "bbox": {"l": 400.62048, "t": 83.65790000000004, "r": 430.56023999999996, "b": 92.48248000000001, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " statement produces a ", "bbox": {"l": 430.56023999999996, "t": 83.50847999999996, "r": 532.24695, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "result set that represents all the rows and columns. The seven row result set is inserted into ", "bbox": {"l": 136.80002, "t": 95.50829999999996, "r": 543.31641, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "the \u201ctarget\u201d, and the RCAC row permission causes an error to be returned, as shown in ", "bbox": {"l": 136.80002, "t": 107.50811999999996, "r": 523.92529, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Figure 6-5. The source rows where ", "bbox": {"l": 136.80002, "t": 119.50792999999999, "r": 292.3653, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "NAME = 'CAIN'", "bbox": {"l": 292.32043, "t": 119.65734999999995, "r": 355.79947, "b": 128.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": " do not satisfy the target table\u2019s permission, ", "bbox": {"l": 355.80051, "t": 119.50792999999999, "r": 547.26459, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "and therefore cannot be inserted. In other words, you are inserting data that you cannot read.", "bbox": {"l": 136.80002, "t": 131.50775, "r": 547.2417, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.212646484375, "t": 414.0885009765625, "r": 367.2479248046875, "b": 423.6403503417969, "coord_origin": "TOPLEFT"}, "confidence": 0.9330379962921143, "cells": [{"id": 14, "text": "Figure 6-5 RCAC effects on data movement on TARGET", "bbox": {"l": 136.8, "t": 414.61798, "r": 366.09122, "b": 422.94299, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 64.19894409179688, "t": 442.4447326660156, "r": 490.12787, "b": 455.5812683105469, "coord_origin": "TOPLEFT"}, "confidence": 0.958083987236023, "cells": [{"id": 15, "text": "6.2.3", "bbox": {"l": 64.800003, "t": 443.45474, "r": 93.849205, "b": 455.44272, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Effects when RCAC is defined on both source and target tables", "bbox": {"l": 97.480339, "t": 443.45474, "r": 490.12787, "b": 455.44272, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.13351440429688, "t": 468.7479248046875, "r": 541.63324, "b": 490.82153, "coord_origin": "TOPLEFT"}, "confidence": 0.971232533454895, "cells": [{"id": 17, "text": "Example 6-3 shows a simple example that illustrates the effect of RCAC as defined on both ", "bbox": {"l": 136.8, "t": 469.60873, "r": 541.63324, "b": 478.82172, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "the source and the target tables.", "bbox": {"l": 136.80002, "t": 481.60855, "r": 279.84653, "b": 490.82153, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "caption", "bbox": {"l": 136.3226776123047, "t": 502.52581787109375, "r": 332.0595703125, "b": 512.0237426757812, "coord_origin": "TOPLEFT"}, "confidence": 0.7299772500991821, "cells": [{"id": 19, "text": "Example 6-3 INSERT INTO TARGET statement", "bbox": {"l": 136.8, "t": 503.5979, "r": 330.92816, "b": 511.92291, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 136.8, "t": 520.758, "r": 346.67709, "b": 529.53278, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 20, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "bbox": {"l": 136.8, "t": 520.758, "r": 346.67709, "b": 529.53278, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 135.995849609375, "t": 548.8137817382812, "r": 547.2467, "b": 618.80023, "coord_origin": "TOPLEFT"}, "confidence": 0.9855359196662903, "cells": [{"id": 21, "text": "Given a \u201csource\u201d table and a \u201ctarget\u201d table with a row permission defined as ", "bbox": {"l": 136.8, "t": 549.5882300000001, "r": 472.36234, "b": 558.8012200000001, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "NAME <> 'CAIN'", "bbox": {"l": 472.31952, "t": 549.73763, "r": 542.2785, "b": 558.51237, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "and a column mask that is defined to project the value 999.99 for AMOUNT, the ", "bbox": {"l": 136.79996, "t": 561.58803, "r": 490.08017000000007, "b": 570.80103, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "SELECT", "bbox": {"l": 490.02042, "t": 561.73743, "r": 520.0199, "b": 570.56198, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "statement produces a result set that has the RCAC rules applied. This reduced and modified ", "bbox": {"l": 136.80099, "t": 573.5878299999999, "r": 547.2467, "b": 582.80083, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "result set is inserted into the \u201ctarget\u201d table even though the query is defined as returning all ", "bbox": {"l": 136.80099, "t": 585.58763, "r": 539.85034, "b": 594.80063, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "rows and all columns. Instead of seven rows that are selected from the source, only three ", "bbox": {"l": 136.80099, "t": 597.58743, "r": 532.92114, "b": 606.80043, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "rows are returned.", "bbox": {"l": 136.80099, "t": 609.58723, "r": 218.03972000000002, "b": 618.80023, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "picture", "bbox": {"l": 136.0791015625, "t": 155.57220458984375, "r": 499.302978515625, "b": 410.439208984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9825493097305298, "cells": [{"id": 29, "text": "RCAC Effects on Data Movement", "bbox": {"l": 208.3886, "t": 165.44983000000002, "r": 424.4899, "b": 179.47484999999995, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "RCAC Rule Text", "bbox": {"l": 276.74149, "t": 208.00494000000003, "r": 363.89221, "b": 220.29327, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Source", "bbox": {"l": 156.83929, "t": 232.91034000000002, "r": 202.1917, "b": 246.93535999999995, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Table", "bbox": {"l": 161.97852, "t": 252.60601999999994, "r": 195.77136, "b": 266.63104, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Target", "bbox": {"l": 432.80521, "t": 232.91034000000002, "r": 472.75925, "b": 246.93535999999995, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Table", "bbox": {"l": 435.88251, "t": 252.60601999999994, "r": 469.67538, "b": 266.63104, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Permission: WHERE NAME <> \u0091CAIN\u0092", "bbox": {"l": 240.9493, "t": 236.49872000000005, "r": 392.01541, "b": 245.26104999999995, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Mask: AMOUNT", "bbox": {"l": 240.9493, "t": 261.21160999999995, "r": 308.13611, "b": 269.97393999999997, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "GLYPH", "bbox": {"l": 310.47171, "t": 261.1604, "r": 320.50479, "b": 270.38385000000005, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "999 99", "bbox": {"l": 322.8743, "t": 261.21160999999995, "r": 351.47424, "b": 269.97393999999997, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Mask: AMOUNT ", "bbox": {"l": 240.9493, "t": 261.21160999999995, "r": 310.41809, "b": 269.97393999999997, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "999.99", "bbox": {"l": 322.8743, "t": 261.21160999999995, "r": 351.46893, "b": 269.97393999999997, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "PKey", "bbox": {"l": 151.6382, "t": 313.41269000000005, "r": 164.10535, "b": 318.68152, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Name", "bbox": {"l": 175.47073, "t": 313.41269000000005, "r": 190.66521, "b": 318.68152, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Amount", "bbox": {"l": 202.00105, "t": 313.41269000000005, "r": 222.71851000000004, "b": 318.68152, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "0001", "bbox": {"l": 152.43835, "t": 324.49203, "r": 164.88643, "b": 329.75473, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "CAIN", "bbox": {"l": 172.27008, "t": 324.49203, "r": 184.60736, "b": 329.75473, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "10.00", "bbox": {"l": 209.47951, "t": 324.49203, "r": 223.47005, "b": 329.75473, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "0002", "bbox": {"l": 152.43835, "t": 335.57138, "r": 164.89381, "b": 340.83408, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "BEDOYA", "bbox": {"l": 172.27562, "t": 335.57138, "r": 192.37941, "b": 340.83408, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "25.50", "bbox": {"l": 209.4752, "t": 335.57138, "r": 223.47498, "b": 340.83408, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "PKey", "bbox": {"l": 410.21579, "t": 330.64709, "r": 422.68292, "b": 335.91592, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Name", "bbox": {"l": 434.04831, "t": 330.64709, "r": 449.24280000000005, "b": 335.91592, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Amount", "bbox": {"l": 460.57863999999995, "t": 330.64709, "r": 481.29610999999994, "b": 335.91592, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ERR", "bbox": {"l": 435.85199000000006, "t": 336.77774, "r": 450.38702, "b": 344.67169, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "OR", "bbox": {"l": 450.29745, "t": 336.77774, "r": 461.42471000000006, "b": 344.67169, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": ":", "bbox": {"l": 461.42661000000004, "t": 336.77774, "r": 463.9009699999999, "b": 344.67169, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "0003", "bbox": {"l": 152.43829, "t": 346.65057, "r": 164.88637, "b": 351.91327, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "CAIN", "bbox": {"l": 172.27002, "t": 346.65057, "r": 184.6073, "b": 351.91327, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "333.00", "bbox": {"l": 206.37112, "t": 346.65057, "r": 223.47367999999997, "b": 351.91327, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "0004", "bbox": {"l": 152.43829, "t": 357.72992, "r": 164.89375, "b": 362.99261000000007, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "BEDOYA", "bbox": {"l": 172.27556, "t": 357.72992, "r": 192.37935, "b": 362.99261000000007, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "75.25", "bbox": {"l": 209.47514, "t": 357.72992, "r": 223.47491, "b": 362.99261000000007, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "0005", "bbox": {"l": 152.43829, "t": 368.80927, "r": 164.88637, "b": 374.07196000000005, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "CAIN", "bbox": {"l": 172.27002, "t": 368.80927, "r": 184.6073, "b": 374.07196000000005, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "987.65", "bbox": {"l": 206.37112, "t": 368.80927, "r": 223.47367999999997, "b": 374.07196000000005, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "0006", "bbox": {"l": 152.43829, "t": 379.88861, "r": 164.8913, "b": 385.15131, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "BEDOYA", "bbox": {"l": 172.27373, "t": 379.88861, "r": 192.37505, "b": 385.15131, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "123.45", "bbox": {"l": 206.36313, "t": 379.88861, "r": 223.47307, "b": 385.15131, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "INSERT", "bbox": {"l": 359.74359, "t": 346.82211, "r": 383.82053, "b": 353.85596, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "RCAC", "bbox": {"l": 305.4552, "t": 345.87585, "r": 327.68582, "b": 354.63812, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "SELECT", "bbox": {"l": 246.0889, "t": 347.5607, "r": 269.78372, "b": 354.59454, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "INSER", "bbox": {"l": 415.60159, "t": 347.85703, "r": 437.65851000000004, "b": 355.75098, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "T or ", "bbox": {"l": 437.56802, "t": 347.85703, "r": 454.15735, "b": 355.75098, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "UPD", "bbox": {"l": 454.28015, "t": 347.85703, "r": 470.66449000000006, "b": 355.75098, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "ATE", "bbox": {"l": 470.55276, "t": 347.85703, "r": 484.20978, "b": 355.75098, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "does", "bbox": {"l": 420.52539, "t": 358.93628, "r": 434.21057, "b": 366.8302299999999, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "not", "bbox": {"l": 445.9407, "t": 358.93628, "r": 453.2720299999999, "b": 366.8302299999999, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "sa", "bbox": {"l": 453.2720299999999, "t": 358.93628, "r": 463.5359199999999, "b": 366.8302299999999, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "tisfy", "bbox": {"l": 463.4556, "t": 358.93628, "r": 479.23618000000005, "b": 366.8302299999999, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "row permissions.", "bbox": {"l": 418.00211, "t": 370.01553, "r": 481.72345, "b": 377.90948, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "0007", "bbox": {"l": 152.43829, "t": 390.96759, "r": 164.88882, "b": 396.23029, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "CAIN", "bbox": {"l": 172.27187, "t": 390.96759, "r": 184.6116, "b": 396.23029, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "1.00", "bbox": {"l": 212.59146, "t": 390.96759, "r": 223.47244, "b": 396.23029, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "bbox": {"l": 237.07159, "t": 385.77884, "r": 476.14007999999995, "b": 396.30414, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 105, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.0672378540039, "t": 754.3772583007812, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9143837690353394, "cells": [{"id": 0, "text": "90 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "90"}, {"label": "page_footer", "id": 1, "page_no": 105, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.31163787841797, "t": 754.7432861328125, "r": 334.42142, "b": 763.88671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9527189135551453, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 2, "page_no": 105, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.84625244140625, "t": 70.61248779296875, "r": 547.26459, "b": 141.04803466796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9829095602035522, "cells": [{"id": 2, "text": "Given a \u201ctarget\u201d table with a row permission defined as ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 380.89371, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "NAME <> 'CAIN'", "bbox": {"l": 380.87976, "t": 71.65808000000015, "r": 450.7790499999999, "b": 80.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " and a column mask ", "bbox": {"l": 450.83978, "t": 71.50867000000005, "r": 543.01062, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "that is defined to project the value 999.99 for AMOUNT, the ", "bbox": {"l": 136.79999, "t": 83.50847999999996, "r": 400.68625, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "SELECT", "bbox": {"l": 400.62048, "t": 83.65790000000004, "r": 430.56023999999996, "b": 92.48248000000001, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " statement produces a ", "bbox": {"l": 430.56023999999996, "t": 83.50847999999996, "r": 532.24695, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "result set that represents all the rows and columns. The seven row result set is inserted into ", "bbox": {"l": 136.80002, "t": 95.50829999999996, "r": 543.31641, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "the \u201ctarget\u201d, and the RCAC row permission causes an error to be returned, as shown in ", "bbox": {"l": 136.80002, "t": 107.50811999999996, "r": 523.92529, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Figure 6-5. The source rows where ", "bbox": {"l": 136.80002, "t": 119.50792999999999, "r": 292.3653, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "NAME = 'CAIN'", "bbox": {"l": 292.32043, "t": 119.65734999999995, "r": 355.79947, "b": 128.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": " do not satisfy the target table\u2019s permission, ", "bbox": {"l": 355.80051, "t": 119.50792999999999, "r": 547.26459, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "and therefore cannot be inserted. In other words, you are inserting data that you cannot read.", "bbox": {"l": 136.80002, "t": 131.50775, "r": 547.2417, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Given a \u201ctarget\u201d table with a row permission defined as NAME <> 'CAIN' and a column mask that is defined to project the value 999.99 for AMOUNT, the SELECT statement produces a result set that represents all the rows and columns. The seven row result set is inserted into the \u201ctarget\u201d, and the RCAC row permission causes an error to be returned, as shown in Figure 6-5. The source rows where NAME = 'CAIN' do not satisfy the target table\u2019s permission, and therefore cannot be inserted. In other words, you are inserting data that you cannot read."}, {"label": "caption", "id": 3, "page_no": 105, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.212646484375, "t": 414.0885009765625, "r": 367.2479248046875, "b": 423.6403503417969, "coord_origin": "TOPLEFT"}, "confidence": 0.9330379962921143, "cells": [{"id": 14, "text": "Figure 6-5 RCAC effects on data movement on TARGET", "bbox": {"l": 136.8, "t": 414.61798, "r": 366.09122, "b": 422.94299, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-5 RCAC effects on data movement on TARGET"}, {"label": "section_header", "id": 4, "page_no": 105, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.19894409179688, "t": 442.4447326660156, "r": 490.12787, "b": 455.5812683105469, "coord_origin": "TOPLEFT"}, "confidence": 0.958083987236023, "cells": [{"id": 15, "text": "6.2.3", "bbox": {"l": 64.800003, "t": 443.45474, "r": 93.849205, "b": 455.44272, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Effects when RCAC is defined on both source and target tables", "bbox": {"l": 97.480339, "t": 443.45474, "r": 490.12787, "b": 455.44272, "coord_origin": "TOPLEFT"}}]}, "text": "6.2.3 Effects when RCAC is defined on both source and target tables"}, {"label": "text", "id": 5, "page_no": 105, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.13351440429688, "t": 468.7479248046875, "r": 541.63324, "b": 490.82153, "coord_origin": "TOPLEFT"}, "confidence": 0.971232533454895, "cells": [{"id": 17, "text": "Example 6-3 shows a simple example that illustrates the effect of RCAC as defined on both ", "bbox": {"l": 136.8, "t": 469.60873, "r": 541.63324, "b": 478.82172, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "the source and the target tables.", "bbox": {"l": 136.80002, "t": 481.60855, "r": 279.84653, "b": 490.82153, "coord_origin": "TOPLEFT"}}]}, "text": "Example 6-3 shows a simple example that illustrates the effect of RCAC as defined on both the source and the target tables."}, {"label": "caption", "id": 6, "page_no": 105, "cluster": {"id": 6, "label": "caption", "bbox": {"l": 136.3226776123047, "t": 502.52581787109375, "r": 332.0595703125, "b": 512.0237426757812, "coord_origin": "TOPLEFT"}, "confidence": 0.7299772500991821, "cells": [{"id": 19, "text": "Example 6-3 INSERT INTO TARGET statement", "bbox": {"l": 136.8, "t": 503.5979, "r": 330.92816, "b": 511.92291, "coord_origin": "TOPLEFT"}}]}, "text": "Example 6-3 INSERT INTO TARGET statement"}, {"label": "text", "id": 7, "page_no": 105, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.8, "t": 520.758, "r": 346.67709, "b": 529.53278, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 20, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "bbox": {"l": 136.8, "t": 520.758, "r": 346.67709, "b": 529.53278, "coord_origin": "TOPLEFT"}}]}, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);"}, {"label": "text", "id": 8, "page_no": 105, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.995849609375, "t": 548.8137817382812, "r": 547.2467, "b": 618.80023, "coord_origin": "TOPLEFT"}, "confidence": 0.9855359196662903, "cells": [{"id": 21, "text": "Given a \u201csource\u201d table and a \u201ctarget\u201d table with a row permission defined as ", "bbox": {"l": 136.8, "t": 549.5882300000001, "r": 472.36234, "b": 558.8012200000001, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "NAME <> 'CAIN'", "bbox": {"l": 472.31952, "t": 549.73763, "r": 542.2785, "b": 558.51237, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "and a column mask that is defined to project the value 999.99 for AMOUNT, the ", "bbox": {"l": 136.79996, "t": 561.58803, "r": 490.08017000000007, "b": 570.80103, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "SELECT", "bbox": {"l": 490.02042, "t": 561.73743, "r": 520.0199, "b": 570.56198, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "statement produces a result set that has the RCAC rules applied. This reduced and modified ", "bbox": {"l": 136.80099, "t": 573.5878299999999, "r": 547.2467, "b": 582.80083, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "result set is inserted into the \u201ctarget\u201d table even though the query is defined as returning all ", "bbox": {"l": 136.80099, "t": 585.58763, "r": 539.85034, "b": 594.80063, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "rows and all columns. Instead of seven rows that are selected from the source, only three ", "bbox": {"l": 136.80099, "t": 597.58743, "r": 532.92114, "b": 606.80043, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "rows are returned.", "bbox": {"l": 136.80099, "t": 609.58723, "r": 218.03972000000002, "b": 618.80023, "coord_origin": "TOPLEFT"}}]}, "text": "Given a \u201csource\u201d table and a \u201ctarget\u201d table with a row permission defined as NAME <> 'CAIN' and a column mask that is defined to project the value 999.99 for AMOUNT, the SELECT statement produces a result set that has the RCAC rules applied. This reduced and modified result set is inserted into the \u201ctarget\u201d table even though the query is defined as returning all rows and all columns. Instead of seven rows that are selected from the source, only three rows are returned."}, {"label": "picture", "id": 9, "page_no": 105, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 136.0791015625, "t": 155.57220458984375, "r": 499.302978515625, "b": 410.439208984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9825493097305298, "cells": [{"id": 29, "text": "RCAC Effects on Data Movement", "bbox": {"l": 208.3886, "t": 165.44983000000002, "r": 424.4899, "b": 179.47484999999995, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "RCAC Rule Text", "bbox": {"l": 276.74149, "t": 208.00494000000003, "r": 363.89221, "b": 220.29327, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Source", "bbox": {"l": 156.83929, "t": 232.91034000000002, "r": 202.1917, "b": 246.93535999999995, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Table", "bbox": {"l": 161.97852, "t": 252.60601999999994, "r": 195.77136, "b": 266.63104, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Target", "bbox": {"l": 432.80521, "t": 232.91034000000002, "r": 472.75925, "b": 246.93535999999995, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Table", "bbox": {"l": 435.88251, "t": 252.60601999999994, "r": 469.67538, "b": 266.63104, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Permission: WHERE NAME <> \u0091CAIN\u0092", "bbox": {"l": 240.9493, "t": 236.49872000000005, "r": 392.01541, "b": 245.26104999999995, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Mask: AMOUNT", "bbox": {"l": 240.9493, "t": 261.21160999999995, "r": 308.13611, "b": 269.97393999999997, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "GLYPH", "bbox": {"l": 310.47171, "t": 261.1604, "r": 320.50479, "b": 270.38385000000005, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "999 99", "bbox": {"l": 322.8743, "t": 261.21160999999995, "r": 351.47424, "b": 269.97393999999997, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Mask: AMOUNT ", "bbox": {"l": 240.9493, "t": 261.21160999999995, "r": 310.41809, "b": 269.97393999999997, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "999.99", "bbox": {"l": 322.8743, "t": 261.21160999999995, "r": 351.46893, "b": 269.97393999999997, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "PKey", "bbox": {"l": 151.6382, "t": 313.41269000000005, "r": 164.10535, "b": 318.68152, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Name", "bbox": {"l": 175.47073, "t": 313.41269000000005, "r": 190.66521, "b": 318.68152, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Amount", "bbox": {"l": 202.00105, "t": 313.41269000000005, "r": 222.71851000000004, "b": 318.68152, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "0001", "bbox": {"l": 152.43835, "t": 324.49203, "r": 164.88643, "b": 329.75473, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "CAIN", "bbox": {"l": 172.27008, "t": 324.49203, "r": 184.60736, "b": 329.75473, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "10.00", "bbox": {"l": 209.47951, "t": 324.49203, "r": 223.47005, "b": 329.75473, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "0002", "bbox": {"l": 152.43835, "t": 335.57138, "r": 164.89381, "b": 340.83408, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "BEDOYA", "bbox": {"l": 172.27562, "t": 335.57138, "r": 192.37941, "b": 340.83408, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "25.50", "bbox": {"l": 209.4752, "t": 335.57138, "r": 223.47498, "b": 340.83408, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "PKey", "bbox": {"l": 410.21579, "t": 330.64709, "r": 422.68292, "b": 335.91592, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Name", "bbox": {"l": 434.04831, "t": 330.64709, "r": 449.24280000000005, "b": 335.91592, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Amount", "bbox": {"l": 460.57863999999995, "t": 330.64709, "r": 481.29610999999994, "b": 335.91592, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ERR", "bbox": {"l": 435.85199000000006, "t": 336.77774, "r": 450.38702, "b": 344.67169, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "OR", "bbox": {"l": 450.29745, "t": 336.77774, "r": 461.42471000000006, "b": 344.67169, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": ":", "bbox": {"l": 461.42661000000004, "t": 336.77774, "r": 463.9009699999999, "b": 344.67169, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "0003", "bbox": {"l": 152.43829, "t": 346.65057, "r": 164.88637, "b": 351.91327, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "CAIN", "bbox": {"l": 172.27002, "t": 346.65057, "r": 184.6073, "b": 351.91327, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "333.00", "bbox": {"l": 206.37112, "t": 346.65057, "r": 223.47367999999997, "b": 351.91327, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "0004", "bbox": {"l": 152.43829, "t": 357.72992, "r": 164.89375, "b": 362.99261000000007, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "BEDOYA", "bbox": {"l": 172.27556, "t": 357.72992, "r": 192.37935, "b": 362.99261000000007, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "75.25", "bbox": {"l": 209.47514, "t": 357.72992, "r": 223.47491, "b": 362.99261000000007, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "0005", "bbox": {"l": 152.43829, "t": 368.80927, "r": 164.88637, "b": 374.07196000000005, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "CAIN", "bbox": {"l": 172.27002, "t": 368.80927, "r": 184.6073, "b": 374.07196000000005, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "987.65", "bbox": {"l": 206.37112, "t": 368.80927, "r": 223.47367999999997, "b": 374.07196000000005, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "0006", "bbox": {"l": 152.43829, "t": 379.88861, "r": 164.8913, "b": 385.15131, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "BEDOYA", "bbox": {"l": 172.27373, "t": 379.88861, "r": 192.37505, "b": 385.15131, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "123.45", "bbox": {"l": 206.36313, "t": 379.88861, "r": 223.47307, "b": 385.15131, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "INSERT", "bbox": {"l": 359.74359, "t": 346.82211, "r": 383.82053, "b": 353.85596, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "RCAC", "bbox": {"l": 305.4552, "t": 345.87585, "r": 327.68582, "b": 354.63812, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "SELECT", "bbox": {"l": 246.0889, "t": 347.5607, "r": 269.78372, "b": 354.59454, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "INSER", "bbox": {"l": 415.60159, "t": 347.85703, "r": 437.65851000000004, "b": 355.75098, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "T or ", "bbox": {"l": 437.56802, "t": 347.85703, "r": 454.15735, "b": 355.75098, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "UPD", "bbox": {"l": 454.28015, "t": 347.85703, "r": 470.66449000000006, "b": 355.75098, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "ATE", "bbox": {"l": 470.55276, "t": 347.85703, "r": 484.20978, "b": 355.75098, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "does", "bbox": {"l": 420.52539, "t": 358.93628, "r": 434.21057, "b": 366.8302299999999, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "not", "bbox": {"l": 445.9407, "t": 358.93628, "r": 453.2720299999999, "b": 366.8302299999999, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "sa", "bbox": {"l": 453.2720299999999, "t": 358.93628, "r": 463.5359199999999, "b": 366.8302299999999, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "tisfy", "bbox": {"l": 463.4556, "t": 358.93628, "r": 479.23618000000005, "b": 366.8302299999999, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "row permissions.", "bbox": {"l": 418.00211, "t": 370.01553, "r": 481.72345, "b": 377.90948, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "0007", "bbox": {"l": 152.43829, "t": 390.96759, "r": 164.88882, "b": 396.23029, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "CAIN", "bbox": {"l": 172.27187, "t": 390.96759, "r": 184.6116, "b": 396.23029, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "1.00", "bbox": {"l": 212.59146, "t": 390.96759, "r": 223.47244, "b": 396.23029, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "bbox": {"l": 237.07159, "t": 385.77884, "r": 476.14007999999995, "b": 396.30414, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 105, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.84625244140625, "t": 70.61248779296875, "r": 547.26459, "b": 141.04803466796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9829095602035522, "cells": [{"id": 2, "text": "Given a \u201ctarget\u201d table with a row permission defined as ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 380.89371, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "NAME <> 'CAIN'", "bbox": {"l": 380.87976, "t": 71.65808000000015, "r": 450.7790499999999, "b": 80.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " and a column mask ", "bbox": {"l": 450.83978, "t": 71.50867000000005, "r": 543.01062, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "that is defined to project the value 999.99 for AMOUNT, the ", "bbox": {"l": 136.79999, "t": 83.50847999999996, "r": 400.68625, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "SELECT", "bbox": {"l": 400.62048, "t": 83.65790000000004, "r": 430.56023999999996, "b": 92.48248000000001, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " statement produces a ", "bbox": {"l": 430.56023999999996, "t": 83.50847999999996, "r": 532.24695, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "result set that represents all the rows and columns. The seven row result set is inserted into ", "bbox": {"l": 136.80002, "t": 95.50829999999996, "r": 543.31641, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "the \u201ctarget\u201d, and the RCAC row permission causes an error to be returned, as shown in ", "bbox": {"l": 136.80002, "t": 107.50811999999996, "r": 523.92529, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Figure 6-5. The source rows where ", "bbox": {"l": 136.80002, "t": 119.50792999999999, "r": 292.3653, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "NAME = 'CAIN'", "bbox": {"l": 292.32043, "t": 119.65734999999995, "r": 355.79947, "b": 128.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": " do not satisfy the target table\u2019s permission, ", "bbox": {"l": 355.80051, "t": 119.50792999999999, "r": 547.26459, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "and therefore cannot be inserted. In other words, you are inserting data that you cannot read.", "bbox": {"l": 136.80002, "t": 131.50775, "r": 547.2417, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Given a \u201ctarget\u201d table with a row permission defined as NAME <> 'CAIN' and a column mask that is defined to project the value 999.99 for AMOUNT, the SELECT statement produces a result set that represents all the rows and columns. The seven row result set is inserted into the \u201ctarget\u201d, and the RCAC row permission causes an error to be returned, as shown in Figure 6-5. The source rows where NAME = 'CAIN' do not satisfy the target table\u2019s permission, and therefore cannot be inserted. In other words, you are inserting data that you cannot read."}, {"label": "caption", "id": 3, "page_no": 105, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.212646484375, "t": 414.0885009765625, "r": 367.2479248046875, "b": 423.6403503417969, "coord_origin": "TOPLEFT"}, "confidence": 0.9330379962921143, "cells": [{"id": 14, "text": "Figure 6-5 RCAC effects on data movement on TARGET", "bbox": {"l": 136.8, "t": 414.61798, "r": 366.09122, "b": 422.94299, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-5 RCAC effects on data movement on TARGET"}, {"label": "section_header", "id": 4, "page_no": 105, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.19894409179688, "t": 442.4447326660156, "r": 490.12787, "b": 455.5812683105469, "coord_origin": "TOPLEFT"}, "confidence": 0.958083987236023, "cells": [{"id": 15, "text": "6.2.3", "bbox": {"l": 64.800003, "t": 443.45474, "r": 93.849205, "b": 455.44272, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Effects when RCAC is defined on both source and target tables", "bbox": {"l": 97.480339, "t": 443.45474, "r": 490.12787, "b": 455.44272, "coord_origin": "TOPLEFT"}}]}, "text": "6.2.3 Effects when RCAC is defined on both source and target tables"}, {"label": "text", "id": 5, "page_no": 105, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.13351440429688, "t": 468.7479248046875, "r": 541.63324, "b": 490.82153, "coord_origin": "TOPLEFT"}, "confidence": 0.971232533454895, "cells": [{"id": 17, "text": "Example 6-3 shows a simple example that illustrates the effect of RCAC as defined on both ", "bbox": {"l": 136.8, "t": 469.60873, "r": 541.63324, "b": 478.82172, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "the source and the target tables.", "bbox": {"l": 136.80002, "t": 481.60855, "r": 279.84653, "b": 490.82153, "coord_origin": "TOPLEFT"}}]}, "text": "Example 6-3 shows a simple example that illustrates the effect of RCAC as defined on both the source and the target tables."}, {"label": "caption", "id": 6, "page_no": 105, "cluster": {"id": 6, "label": "caption", "bbox": {"l": 136.3226776123047, "t": 502.52581787109375, "r": 332.0595703125, "b": 512.0237426757812, "coord_origin": "TOPLEFT"}, "confidence": 0.7299772500991821, "cells": [{"id": 19, "text": "Example 6-3 INSERT INTO TARGET statement", "bbox": {"l": 136.8, "t": 503.5979, "r": 330.92816, "b": 511.92291, "coord_origin": "TOPLEFT"}}]}, "text": "Example 6-3 INSERT INTO TARGET statement"}, {"label": "text", "id": 7, "page_no": 105, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.8, "t": 520.758, "r": 346.67709, "b": 529.53278, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 20, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "bbox": {"l": 136.8, "t": 520.758, "r": 346.67709, "b": 529.53278, "coord_origin": "TOPLEFT"}}]}, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);"}, {"label": "text", "id": 8, "page_no": 105, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.995849609375, "t": 548.8137817382812, "r": 547.2467, "b": 618.80023, "coord_origin": "TOPLEFT"}, "confidence": 0.9855359196662903, "cells": [{"id": 21, "text": "Given a \u201csource\u201d table and a \u201ctarget\u201d table with a row permission defined as ", "bbox": {"l": 136.8, "t": 549.5882300000001, "r": 472.36234, "b": 558.8012200000001, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "NAME <> 'CAIN'", "bbox": {"l": 472.31952, "t": 549.73763, "r": 542.2785, "b": 558.51237, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "and a column mask that is defined to project the value 999.99 for AMOUNT, the ", "bbox": {"l": 136.79996, "t": 561.58803, "r": 490.08017000000007, "b": 570.80103, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "SELECT", "bbox": {"l": 490.02042, "t": 561.73743, "r": 520.0199, "b": 570.56198, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "statement produces a result set that has the RCAC rules applied. This reduced and modified ", "bbox": {"l": 136.80099, "t": 573.5878299999999, "r": 547.2467, "b": 582.80083, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "result set is inserted into the \u201ctarget\u201d table even though the query is defined as returning all ", "bbox": {"l": 136.80099, "t": 585.58763, "r": 539.85034, "b": 594.80063, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "rows and all columns. Instead of seven rows that are selected from the source, only three ", "bbox": {"l": 136.80099, "t": 597.58743, "r": 532.92114, "b": 606.80043, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "rows are returned.", "bbox": {"l": 136.80099, "t": 609.58723, "r": 218.03972000000002, "b": 618.80023, "coord_origin": "TOPLEFT"}}]}, "text": "Given a \u201csource\u201d table and a \u201ctarget\u201d table with a row permission defined as NAME <> 'CAIN' and a column mask that is defined to project the value 999.99 for AMOUNT, the SELECT statement produces a result set that has the RCAC rules applied. This reduced and modified result set is inserted into the \u201ctarget\u201d table even though the query is defined as returning all rows and all columns. Instead of seven rows that are selected from the source, only three rows are returned."}, {"label": "picture", "id": 9, "page_no": 105, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 136.0791015625, "t": 155.57220458984375, "r": 499.302978515625, "b": 410.439208984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9825493097305298, "cells": [{"id": 29, "text": "RCAC Effects on Data Movement", "bbox": {"l": 208.3886, "t": 165.44983000000002, "r": 424.4899, "b": 179.47484999999995, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "RCAC Rule Text", "bbox": {"l": 276.74149, "t": 208.00494000000003, "r": 363.89221, "b": 220.29327, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Source", "bbox": {"l": 156.83929, "t": 232.91034000000002, "r": 202.1917, "b": 246.93535999999995, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Table", "bbox": {"l": 161.97852, "t": 252.60601999999994, "r": 195.77136, "b": 266.63104, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Target", "bbox": {"l": 432.80521, "t": 232.91034000000002, "r": 472.75925, "b": 246.93535999999995, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Table", "bbox": {"l": 435.88251, "t": 252.60601999999994, "r": 469.67538, "b": 266.63104, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Permission: WHERE NAME <> \u0091CAIN\u0092", "bbox": {"l": 240.9493, "t": 236.49872000000005, "r": 392.01541, "b": 245.26104999999995, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Mask: AMOUNT", "bbox": {"l": 240.9493, "t": 261.21160999999995, "r": 308.13611, "b": 269.97393999999997, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "GLYPH", "bbox": {"l": 310.47171, "t": 261.1604, "r": 320.50479, "b": 270.38385000000005, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "999 99", "bbox": {"l": 322.8743, "t": 261.21160999999995, "r": 351.47424, "b": 269.97393999999997, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Mask: AMOUNT ", "bbox": {"l": 240.9493, "t": 261.21160999999995, "r": 310.41809, "b": 269.97393999999997, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "999.99", "bbox": {"l": 322.8743, "t": 261.21160999999995, "r": 351.46893, "b": 269.97393999999997, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "PKey", "bbox": {"l": 151.6382, "t": 313.41269000000005, "r": 164.10535, "b": 318.68152, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Name", "bbox": {"l": 175.47073, "t": 313.41269000000005, "r": 190.66521, "b": 318.68152, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Amount", "bbox": {"l": 202.00105, "t": 313.41269000000005, "r": 222.71851000000004, "b": 318.68152, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "0001", "bbox": {"l": 152.43835, "t": 324.49203, "r": 164.88643, "b": 329.75473, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "CAIN", "bbox": {"l": 172.27008, "t": 324.49203, "r": 184.60736, "b": 329.75473, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "10.00", "bbox": {"l": 209.47951, "t": 324.49203, "r": 223.47005, "b": 329.75473, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "0002", "bbox": {"l": 152.43835, "t": 335.57138, "r": 164.89381, "b": 340.83408, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "BEDOYA", "bbox": {"l": 172.27562, "t": 335.57138, "r": 192.37941, "b": 340.83408, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "25.50", "bbox": {"l": 209.4752, "t": 335.57138, "r": 223.47498, "b": 340.83408, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "PKey", "bbox": {"l": 410.21579, "t": 330.64709, "r": 422.68292, "b": 335.91592, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Name", "bbox": {"l": 434.04831, "t": 330.64709, "r": 449.24280000000005, "b": 335.91592, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Amount", "bbox": {"l": 460.57863999999995, "t": 330.64709, "r": 481.29610999999994, "b": 335.91592, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ERR", "bbox": {"l": 435.85199000000006, "t": 336.77774, "r": 450.38702, "b": 344.67169, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "OR", "bbox": {"l": 450.29745, "t": 336.77774, "r": 461.42471000000006, "b": 344.67169, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": ":", "bbox": {"l": 461.42661000000004, "t": 336.77774, "r": 463.9009699999999, "b": 344.67169, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "0003", "bbox": {"l": 152.43829, "t": 346.65057, "r": 164.88637, "b": 351.91327, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "CAIN", "bbox": {"l": 172.27002, "t": 346.65057, "r": 184.6073, "b": 351.91327, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "333.00", "bbox": {"l": 206.37112, "t": 346.65057, "r": 223.47367999999997, "b": 351.91327, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "0004", "bbox": {"l": 152.43829, "t": 357.72992, "r": 164.89375, "b": 362.99261000000007, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "BEDOYA", "bbox": {"l": 172.27556, "t": 357.72992, "r": 192.37935, "b": 362.99261000000007, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "75.25", "bbox": {"l": 209.47514, "t": 357.72992, "r": 223.47491, "b": 362.99261000000007, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "0005", "bbox": {"l": 152.43829, "t": 368.80927, "r": 164.88637, "b": 374.07196000000005, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "CAIN", "bbox": {"l": 172.27002, "t": 368.80927, "r": 184.6073, "b": 374.07196000000005, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "987.65", "bbox": {"l": 206.37112, "t": 368.80927, "r": 223.47367999999997, "b": 374.07196000000005, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "0006", "bbox": {"l": 152.43829, "t": 379.88861, "r": 164.8913, "b": 385.15131, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "BEDOYA", "bbox": {"l": 172.27373, "t": 379.88861, "r": 192.37505, "b": 385.15131, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "123.45", "bbox": {"l": 206.36313, "t": 379.88861, "r": 223.47307, "b": 385.15131, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "INSERT", "bbox": {"l": 359.74359, "t": 346.82211, "r": 383.82053, "b": 353.85596, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "RCAC", "bbox": {"l": 305.4552, "t": 345.87585, "r": 327.68582, "b": 354.63812, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "SELECT", "bbox": {"l": 246.0889, "t": 347.5607, "r": 269.78372, "b": 354.59454, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "INSER", "bbox": {"l": 415.60159, "t": 347.85703, "r": 437.65851000000004, "b": 355.75098, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "T or ", "bbox": {"l": 437.56802, "t": 347.85703, "r": 454.15735, "b": 355.75098, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "UPD", "bbox": {"l": 454.28015, "t": 347.85703, "r": 470.66449000000006, "b": 355.75098, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "ATE", "bbox": {"l": 470.55276, "t": 347.85703, "r": 484.20978, "b": 355.75098, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "does", "bbox": {"l": 420.52539, "t": 358.93628, "r": 434.21057, "b": 366.8302299999999, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "not", "bbox": {"l": 445.9407, "t": 358.93628, "r": 453.2720299999999, "b": 366.8302299999999, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "sa", "bbox": {"l": 453.2720299999999, "t": 358.93628, "r": 463.5359199999999, "b": 366.8302299999999, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "tisfy", "bbox": {"l": 463.4556, "t": 358.93628, "r": 479.23618000000005, "b": 366.8302299999999, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "row permissions.", "bbox": {"l": 418.00211, "t": 370.01553, "r": 481.72345, "b": 377.90948, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "0007", "bbox": {"l": 152.43829, "t": 390.96759, "r": 164.88882, "b": 396.23029, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "CAIN", "bbox": {"l": 172.27187, "t": 390.96759, "r": 184.6116, "b": 396.23029, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "1.00", "bbox": {"l": 212.59146, "t": 390.96759, "r": 223.47244, "b": 396.23029, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "bbox": {"l": 237.07159, "t": 385.77884, "r": 476.14007999999995, "b": 396.30414, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 105, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.0672378540039, "t": 754.3772583007812, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9143837690353394, "cells": [{"id": 0, "text": "90 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "90"}, {"label": "page_footer", "id": 1, "page_no": 105, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.31163787841797, "t": 754.7432861328125, "r": 334.42142, "b": 763.88671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9527189135551453, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 106, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "91", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Although the source rows where", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 278.92981, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": " NAME <> 'CAIN'", "bbox": {"l": 278.99951, "t": 71.65845000000002, "r": 353.33795, "b": 80.43322999999998, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " do satisfy the target table\u2019s permission, the ", "bbox": {"l": 353.33997, "t": 71.50903000000005, "r": 547.24823, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "AMOUNT column value of 999.99 represents masked data and therefore cannot be inserted. ", "bbox": {"l": 136.79961, "t": 83.50885000000017, "r": 547.25018, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "An error is returned indicating the failure, as shown in Figure 6-6. In this scenario, DB2 is ", "bbox": {"l": 136.79961, "t": 95.50867000000005, "r": 531.00842, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "protecting against an overt attempt to insert masked data.", "bbox": {"l": 136.79961, "t": 107.50847999999996, "r": 391.95767, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Figure 6-6 RCAC effects on data movement on SOURCE and TARGET", "bbox": {"l": 136.8, "t": 388.45801, "r": 424.51382, "b": 396.78302, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "6.3", "bbox": {"l": 64.800003, "t": 425.10071, "r": 87.442535, "b": 439.86371, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "RCAC effects on joins", "bbox": {"l": 91.971039, "t": 425.10071, "r": 263.02802, "b": 439.86371, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "As mentioned previously, a fundamental concept of row permission is that it defines a logical ", "bbox": {"l": 136.8, "t": 457.42870999999997, "r": 546.7406, "b": 466.64169, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "subset of rows that a user or group of users is permitted to access and use. This subset ", "bbox": {"l": 136.8, "t": 469.42853, "r": 526.64325, "b": 478.64151, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "becomes the new basis of any query against the table that has RCAC enabled. ", "bbox": {"l": 136.79901, "t": 481.42834, "r": 487.7705700000001, "b": 490.64133, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "RCAC Effects on Data Movement", "bbox": {"l": 208.8893, "t": 142.60357999999997, "r": 425.65588, "b": 156.67174999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "RCAC Rule Text", "bbox": {"l": 277.45261, "t": 185.28967, "r": 364.87134, "b": 197.61577999999997, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Source", "bbox": {"l": 157.1814, "t": 210.27166999999997, "r": 202.67342, "b": 224.33983999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Table", "bbox": {"l": 162.33644, "t": 230.02801999999997, "r": 196.23332, "b": 244.09618999999998, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Target", "bbox": {"l": 433.9967, "t": 210.27166999999997, "r": 474.07373, "b": 224.33983999999998, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Table", "bbox": {"l": 437.0834699999999, "t": 230.02801999999997, "r": 470.98035, "b": 244.09618999999998, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Permission: WHERE NAME <> \u0091CAIN\u0092", "bbox": {"l": 241.55029, "t": 213.87108999999998, "r": 393.08215, "b": 222.66039999999998, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Mask: AMOUNT", "bbox": {"l": 241.55029, "t": 238.66010000000006, "r": 308.94427, "b": 247.44939999999997, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "GLYPH", "bbox": {"l": 311.28659, "t": 238.6087, "r": 321.35062, "b": 247.86059999999998, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "999 99", "bbox": {"l": 323.72739, "t": 238.66010000000006, "r": 352.4155, "b": 247.44939999999997, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Mask: AMOUNT ", "bbox": {"l": 241.55029, "t": 238.66010000000006, "r": 311.23285, "b": 247.44939999999997, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "999.99", "bbox": {"l": 323.72739, "t": 238.66010000000006, "r": 352.4101, "b": 247.44939999999997, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "PKey", "bbox": {"l": 151.9642, "t": 291.02185000000003, "r": 164.46983, "b": 296.30688, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Name", "bbox": {"l": 175.87032, "t": 291.02185000000003, "r": 191.11169, "b": 296.30688, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Amount", "bbox": {"l": 202.48253, "t": 291.02185000000003, "r": 223.26395, "b": 296.30688, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "0001", "bbox": {"l": 152.76683, "t": 302.13522, "r": 165.25333, "b": 307.41406, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CAIN", "bbox": {"l": 172.65977, "t": 302.13522, "r": 185.03514, "b": 307.41406, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "10.00", "bbox": {"l": 209.98405, "t": 302.13522, "r": 224.01779000000002, "b": 307.41406, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "0002", "bbox": {"l": 152.76683, "t": 313.2486, "r": 165.26074, "b": 318.52744, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "BEDOYA", "bbox": {"l": 172.66534, "t": 313.2486, "r": 192.83121, "b": 318.52744, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "25.50", "bbox": {"l": 209.97977, "t": 313.2486, "r": 224.02275, "b": 318.52744, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "PKey", "bbox": {"l": 411.3378, "t": 308.30936, "r": 423.84344, "b": 313.59439, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Name", "bbox": {"l": 435.24393, "t": 308.30936, "r": 450.48532, "b": 313.59439, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Amount", "bbox": {"l": 461.8561700000001, "t": 308.30936, "r": 482.63754, "b": 313.59439, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "ERR", "bbox": {"l": 437.05289000000005, "t": 314.45877, "r": 451.63263, "b": 322.37701, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "OR", "bbox": {"l": 451.54279, "t": 314.45877, "r": 462.70425, "b": 322.37701, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": ":", "bbox": {"l": 462.70621, "t": 314.45877, "r": 465.18816999999996, "b": 322.37701, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "0003", "bbox": {"l": 152.76691, "t": 324.36197000000004, "r": 165.2534, "b": 329.64081, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CAIN", "bbox": {"l": 172.65985, "t": 324.36197000000004, "r": 185.03522, "b": 329.64081, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "333.00", "bbox": {"l": 206.86621, "t": 324.36197000000004, "r": 224.02156, "b": 329.64081, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "0004", "bbox": {"l": 152.76691, "t": 335.47534, "r": 165.26082, "b": 340.75418, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "BEDOYA", "bbox": {"l": 172.66542, "t": 335.47534, "r": 192.83128, "b": 340.75418, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "75.25", "bbox": {"l": 209.97984, "t": 335.47534, "r": 224.02283, "b": 340.75418, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "0005", "bbox": {"l": 152.76691, "t": 346.58871000000005, "r": 165.2534, "b": 351.86755, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "CAIN", "bbox": {"l": 172.65985, "t": 346.58871000000005, "r": 185.03522, "b": 351.86755, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "987.65", "bbox": {"l": 206.86621, "t": 346.58871000000005, "r": 224.02156, "b": 351.86755, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "0006", "bbox": {"l": 152.76691, "t": 357.70208999999994, "r": 165.25835, "b": 362.98093, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "BEDOYA", "bbox": {"l": 172.66356, "t": 357.70208999999994, "r": 192.82693, "b": 362.98093, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "123.45", "bbox": {"l": 206.8582, "t": 357.70208999999994, "r": 224.02097, "b": 362.98093, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "INSERT", "bbox": {"l": 360.71021, "t": 324.53406000000007, "r": 384.86127, "b": 331.58953999999994, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "RCAC", "bbox": {"l": 306.2547, "t": 323.58484, "r": 328.55386, "b": 332.37415, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "SELECT", "bbox": {"l": 246.7057, "t": 325.27496, "r": 270.47351, "b": 332.33044, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "Ro", "bbox": {"l": 422.82159, "t": 325.57208, "r": 432.36795, "b": 333.49033, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "w or c", "bbox": {"l": 432.5124200000001, "t": 325.57208, "r": 455.17249, "b": 333.49033, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "o", "bbox": {"l": 455.26602, "t": 325.57208, "r": 459.96512, "b": 333.49033, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "lumn ", "bbox": {"l": 460.14017, "t": 325.57208, "r": 481.52313, "b": 333.49033, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "access", "bbox": {"l": 413.25211, "t": 336.68539, "r": 433.96523999999994, "b": 344.60364, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "c", "bbox": {"l": 418.90115, "t": 336.68539, "r": 443.38031, "b": 344.60364, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "ont", "bbox": {"l": 443.29419000000007, "t": 336.68539, "r": 456.05045, "b": 344.60364, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "r", "bbox": {"l": 456.03748, "t": 336.68539, "r": 459.26775999999995, "b": 344.60364, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "ol is", "bbox": {"l": 459.12793, "t": 336.68539, "r": 473.1619299999999, "b": 344.60364, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "not", "bbox": {"l": 482.9226100000001, "t": 336.68539, "r": 488.00629, "b": 344.60364, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "valid.", "bbox": {"l": 441.12802000000005, "t": 347.79871, "r": 461.11813, "b": 355.71695, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "0007", "bbox": {"l": 152.76691, "t": 368.81546, "r": 165.25587, "b": 374.0943, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "CAIN", "bbox": {"l": 172.66171, "t": 368.81546, "r": 185.03955, "b": 374.0943, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "1.00", "bbox": {"l": 213.10577, "t": 368.81546, "r": 224.02036, "b": 374.0943, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "bbox": {"l": 237.6606, "t": 363.61063, "r": 477.46509, "b": 374.1683300000001, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "Note:", "bbox": {"l": 142.8, "t": 509.44864, "r": 168.33246, "b": 518.6616200000001, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": " Thinking of the row permission as defining a virtual set of rows that can be operated ", "bbox": {"l": 168.36035, "t": 509.44864, "r": 541.38123, "b": 518.6616200000001, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "on is the secret to understanding the effect of RCAC on any join operation.", "bbox": {"l": 142.79997, "t": 521.4484600000001, "r": 471.47884999999997, "b": 530.6614400000001, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 376.1033630371094, "t": 754.9728393554688, "r": 523.62878, "b": 764.0504150390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9539369940757751, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.6055297851562, "t": 754.2470092773438, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9151113629341125, "cells": [{"id": 1, "text": "91", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.59042358398438, "t": 70.5692138671875, "r": 547.25018, "b": 116.77182006835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9812178611755371, "cells": [{"id": 2, "text": "Although the source rows where", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 278.92981, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": " NAME <> 'CAIN'", "bbox": {"l": 278.99951, "t": 71.65845000000002, "r": 353.33795, "b": 80.43322999999998, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " do satisfy the target table\u2019s permission, the ", "bbox": {"l": 353.33997, "t": 71.50903000000005, "r": 547.24823, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "AMOUNT column value of 999.99 represents masked data and therefore cannot be inserted. ", "bbox": {"l": 136.79961, "t": 83.50885000000017, "r": 547.25018, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "An error is returned indicating the failure, as shown in Figure 6-6. In this scenario, DB2 is ", "bbox": {"l": 136.79961, "t": 95.50867000000005, "r": 531.00842, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "protecting against an overt attempt to insert masked data.", "bbox": {"l": 136.79961, "t": 107.50847999999996, "r": 391.95767, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 135.80810546875, "t": 387.26177978515625, "r": 425.63427734375, "b": 396.8255920410156, "coord_origin": "TOPLEFT"}, "confidence": 0.9390740990638733, "cells": [{"id": 8, "text": "Figure 6-6 RCAC effects on data movement on SOURCE and TARGET", "bbox": {"l": 136.8, "t": 388.45801, "r": 424.51382, "b": 396.78302, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 64.44702911376953, "t": 424.1014404296875, "r": 263.02802, "b": 440.4540100097656, "coord_origin": "TOPLEFT"}, "confidence": 0.9687318205833435, "cells": [{"id": 9, "text": "6.3", "bbox": {"l": 64.800003, "t": 425.10071, "r": 87.442535, "b": 439.86371, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "RCAC effects on joins", "bbox": {"l": 91.971039, "t": 425.10071, "r": 263.02802, "b": 439.86371, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.9691619873047, "t": 456.65673828125, "r": 546.7406, "b": 490.82232666015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9842352867126465, "cells": [{"id": 11, "text": "As mentioned previously, a fundamental concept of row permission is that it defines a logical ", "bbox": {"l": 136.8, "t": 457.42870999999997, "r": 546.7406, "b": 466.64169, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "subset of rows that a user or group of users is permitted to access and use. This subset ", "bbox": {"l": 136.8, "t": 469.42853, "r": 526.64325, "b": 478.64151, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "becomes the new basis of any query against the table that has RCAC enabled. ", "bbox": {"l": 136.79901, "t": 481.42834, "r": 487.7705700000001, "b": 490.64133, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "picture", "bbox": {"l": 136.0598907470703, "t": 131.39212036132812, "r": 501.41558837890625, "b": 384.4598083496094, "coord_origin": "TOPLEFT"}, "confidence": 0.9831688404083252, "cells": [{"id": 14, "text": "RCAC Effects on Data Movement", "bbox": {"l": 208.8893, "t": 142.60357999999997, "r": 425.65588, "b": 156.67174999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "RCAC Rule Text", "bbox": {"l": 277.45261, "t": 185.28967, "r": 364.87134, "b": 197.61577999999997, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Source", "bbox": {"l": 157.1814, "t": 210.27166999999997, "r": 202.67342, "b": 224.33983999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Table", "bbox": {"l": 162.33644, "t": 230.02801999999997, "r": 196.23332, "b": 244.09618999999998, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Target", "bbox": {"l": 433.9967, "t": 210.27166999999997, "r": 474.07373, "b": 224.33983999999998, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Table", "bbox": {"l": 437.0834699999999, "t": 230.02801999999997, "r": 470.98035, "b": 244.09618999999998, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Permission: WHERE NAME <> \u0091CAIN\u0092", "bbox": {"l": 241.55029, "t": 213.87108999999998, "r": 393.08215, "b": 222.66039999999998, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Mask: AMOUNT", "bbox": {"l": 241.55029, "t": 238.66010000000006, "r": 308.94427, "b": 247.44939999999997, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "GLYPH", "bbox": {"l": 311.28659, "t": 238.6087, "r": 321.35062, "b": 247.86059999999998, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "999 99", "bbox": {"l": 323.72739, "t": 238.66010000000006, "r": 352.4155, "b": 247.44939999999997, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Mask: AMOUNT ", "bbox": {"l": 241.55029, "t": 238.66010000000006, "r": 311.23285, "b": 247.44939999999997, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "999.99", "bbox": {"l": 323.72739, "t": 238.66010000000006, "r": 352.4101, "b": 247.44939999999997, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "PKey", "bbox": {"l": 151.9642, "t": 291.02185000000003, "r": 164.46983, "b": 296.30688, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Name", "bbox": {"l": 175.87032, "t": 291.02185000000003, "r": 191.11169, "b": 296.30688, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Amount", "bbox": {"l": 202.48253, "t": 291.02185000000003, "r": 223.26395, "b": 296.30688, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "0001", "bbox": {"l": 152.76683, "t": 302.13522, "r": 165.25333, "b": 307.41406, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CAIN", "bbox": {"l": 172.65977, "t": 302.13522, "r": 185.03514, "b": 307.41406, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "10.00", "bbox": {"l": 209.98405, "t": 302.13522, "r": 224.01779000000002, "b": 307.41406, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "0002", "bbox": {"l": 152.76683, "t": 313.2486, "r": 165.26074, "b": 318.52744, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "BEDOYA", "bbox": {"l": 172.66534, "t": 313.2486, "r": 192.83121, "b": 318.52744, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "25.50", "bbox": {"l": 209.97977, "t": 313.2486, "r": 224.02275, "b": 318.52744, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "PKey", "bbox": {"l": 411.3378, "t": 308.30936, "r": 423.84344, "b": 313.59439, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Name", "bbox": {"l": 435.24393, "t": 308.30936, "r": 450.48532, "b": 313.59439, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Amount", "bbox": {"l": 461.8561700000001, "t": 308.30936, "r": 482.63754, "b": 313.59439, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "ERR", "bbox": {"l": 437.05289000000005, "t": 314.45877, "r": 451.63263, "b": 322.37701, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "OR", "bbox": {"l": 451.54279, "t": 314.45877, "r": 462.70425, "b": 322.37701, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": ":", "bbox": {"l": 462.70621, "t": 314.45877, "r": 465.18816999999996, "b": 322.37701, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "0003", "bbox": {"l": 152.76691, "t": 324.36197000000004, "r": 165.2534, "b": 329.64081, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CAIN", "bbox": {"l": 172.65985, "t": 324.36197000000004, "r": 185.03522, "b": 329.64081, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "333.00", "bbox": {"l": 206.86621, "t": 324.36197000000004, "r": 224.02156, "b": 329.64081, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "0004", "bbox": {"l": 152.76691, "t": 335.47534, "r": 165.26082, "b": 340.75418, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "BEDOYA", "bbox": {"l": 172.66542, "t": 335.47534, "r": 192.83128, "b": 340.75418, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "75.25", "bbox": {"l": 209.97984, "t": 335.47534, "r": 224.02283, "b": 340.75418, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "0005", "bbox": {"l": 152.76691, "t": 346.58871000000005, "r": 165.2534, "b": 351.86755, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "CAIN", "bbox": {"l": 172.65985, "t": 346.58871000000005, "r": 185.03522, "b": 351.86755, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "987.65", "bbox": {"l": 206.86621, "t": 346.58871000000005, "r": 224.02156, "b": 351.86755, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "0006", "bbox": {"l": 152.76691, "t": 357.70208999999994, "r": 165.25835, "b": 362.98093, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "BEDOYA", "bbox": {"l": 172.66356, "t": 357.70208999999994, "r": 192.82693, "b": 362.98093, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "123.45", "bbox": {"l": 206.8582, "t": 357.70208999999994, "r": 224.02097, "b": 362.98093, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "INSERT", "bbox": {"l": 360.71021, "t": 324.53406000000007, "r": 384.86127, "b": 331.58953999999994, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "RCAC", "bbox": {"l": 306.2547, "t": 323.58484, "r": 328.55386, "b": 332.37415, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "SELECT", "bbox": {"l": 246.7057, "t": 325.27496, "r": 270.47351, "b": 332.33044, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "Ro", "bbox": {"l": 422.82159, "t": 325.57208, "r": 432.36795, "b": 333.49033, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "w or c", "bbox": {"l": 432.5124200000001, "t": 325.57208, "r": 455.17249, "b": 333.49033, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "o", "bbox": {"l": 455.26602, "t": 325.57208, "r": 459.96512, "b": 333.49033, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "lumn ", "bbox": {"l": 460.14017, "t": 325.57208, "r": 481.52313, "b": 333.49033, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "access", "bbox": {"l": 413.25211, "t": 336.68539, "r": 433.96523999999994, "b": 344.60364, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "c", "bbox": {"l": 418.90115, "t": 336.68539, "r": 443.38031, "b": 344.60364, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "ont", "bbox": {"l": 443.29419000000007, "t": 336.68539, "r": 456.05045, "b": 344.60364, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "r", "bbox": {"l": 456.03748, "t": 336.68539, "r": 459.26775999999995, "b": 344.60364, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "ol is", "bbox": {"l": 459.12793, "t": 336.68539, "r": 473.1619299999999, "b": 344.60364, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "not", "bbox": {"l": 482.9226100000001, "t": 336.68539, "r": 488.00629, "b": 344.60364, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "valid.", "bbox": {"l": 441.12802000000005, "t": 347.79871, "r": 461.11813, "b": 355.71695, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "0007", "bbox": {"l": 152.76691, "t": 368.81546, "r": 165.25587, "b": 374.0943, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "CAIN", "bbox": {"l": 172.66171, "t": 368.81546, "r": 185.03955, "b": 374.0943, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "1.00", "bbox": {"l": 213.10577, "t": 368.81546, "r": 224.02036, "b": 374.0943, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "bbox": {"l": 237.6606, "t": 363.61063, "r": 477.46509, "b": 374.1683300000001, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 142.4822540283203, "t": 508.5616760253906, "r": 541.38123, "b": 530.8720092773438, "coord_origin": "TOPLEFT"}, "confidence": 0.9712533354759216, "cells": [{"id": 71, "text": "Note:", "bbox": {"l": 142.8, "t": 509.44864, "r": 168.33246, "b": 518.6616200000001, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": " Thinking of the row permission as defining a virtual set of rows that can be operated ", "bbox": {"l": 168.36035, "t": 509.44864, "r": 541.38123, "b": 518.6616200000001, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "on is the secret to understanding the effect of RCAC on any join operation.", "bbox": {"l": 142.79997, "t": 521.4484600000001, "r": 471.47884999999997, "b": 530.6614400000001, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 106, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 376.1033630371094, "t": 754.9728393554688, "r": 523.62878, "b": 764.0504150390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9539369940757751, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 106, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6055297851562, "t": 754.2470092773438, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9151113629341125, "cells": [{"id": 1, "text": "91", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "91"}, {"label": "text", "id": 2, "page_no": 106, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.59042358398438, "t": 70.5692138671875, "r": 547.25018, "b": 116.77182006835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9812178611755371, "cells": [{"id": 2, "text": "Although the source rows where", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 278.92981, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": " NAME <> 'CAIN'", "bbox": {"l": 278.99951, "t": 71.65845000000002, "r": 353.33795, "b": 80.43322999999998, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " do satisfy the target table\u2019s permission, the ", "bbox": {"l": 353.33997, "t": 71.50903000000005, "r": 547.24823, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "AMOUNT column value of 999.99 represents masked data and therefore cannot be inserted. ", "bbox": {"l": 136.79961, "t": 83.50885000000017, "r": 547.25018, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "An error is returned indicating the failure, as shown in Figure 6-6. In this scenario, DB2 is ", "bbox": {"l": 136.79961, "t": 95.50867000000005, "r": 531.00842, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "protecting against an overt attempt to insert masked data.", "bbox": {"l": 136.79961, "t": 107.50847999999996, "r": 391.95767, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Although the source rows where NAME <> 'CAIN' do satisfy the target table\u2019s permission, the AMOUNT column value of 999.99 represents masked data and therefore cannot be inserted. An error is returned indicating the failure, as shown in Figure 6-6. In this scenario, DB2 is protecting against an overt attempt to insert masked data."}, {"label": "caption", "id": 3, "page_no": 106, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.80810546875, "t": 387.26177978515625, "r": 425.63427734375, "b": 396.8255920410156, "coord_origin": "TOPLEFT"}, "confidence": 0.9390740990638733, "cells": [{"id": 8, "text": "Figure 6-6 RCAC effects on data movement on SOURCE and TARGET", "bbox": {"l": 136.8, "t": 388.45801, "r": 424.51382, "b": 396.78302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-6 RCAC effects on data movement on SOURCE and TARGET"}, {"label": "section_header", "id": 4, "page_no": 106, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.44702911376953, "t": 424.1014404296875, "r": 263.02802, "b": 440.4540100097656, "coord_origin": "TOPLEFT"}, "confidence": 0.9687318205833435, "cells": [{"id": 9, "text": "6.3", "bbox": {"l": 64.800003, "t": 425.10071, "r": 87.442535, "b": 439.86371, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "RCAC effects on joins", "bbox": {"l": 91.971039, "t": 425.10071, "r": 263.02802, "b": 439.86371, "coord_origin": "TOPLEFT"}}]}, "text": "6.3 RCAC effects on joins"}, {"label": "text", "id": 5, "page_no": 106, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.9691619873047, "t": 456.65673828125, "r": 546.7406, "b": 490.82232666015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9842352867126465, "cells": [{"id": 11, "text": "As mentioned previously, a fundamental concept of row permission is that it defines a logical ", "bbox": {"l": 136.8, "t": 457.42870999999997, "r": 546.7406, "b": 466.64169, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "subset of rows that a user or group of users is permitted to access and use. This subset ", "bbox": {"l": 136.8, "t": 469.42853, "r": 526.64325, "b": 478.64151, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "becomes the new basis of any query against the table that has RCAC enabled. ", "bbox": {"l": 136.79901, "t": 481.42834, "r": 487.7705700000001, "b": 490.64133, "coord_origin": "TOPLEFT"}}]}, "text": "As mentioned previously, a fundamental concept of row permission is that it defines a logical subset of rows that a user or group of users is permitted to access and use. This subset becomes the new basis of any query against the table that has RCAC enabled."}, {"label": "picture", "id": 6, "page_no": 106, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 136.0598907470703, "t": 131.39212036132812, "r": 501.41558837890625, "b": 384.4598083496094, "coord_origin": "TOPLEFT"}, "confidence": 0.9831688404083252, "cells": [{"id": 14, "text": "RCAC Effects on Data Movement", "bbox": {"l": 208.8893, "t": 142.60357999999997, "r": 425.65588, "b": 156.67174999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "RCAC Rule Text", "bbox": {"l": 277.45261, "t": 185.28967, "r": 364.87134, "b": 197.61577999999997, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Source", "bbox": {"l": 157.1814, "t": 210.27166999999997, "r": 202.67342, "b": 224.33983999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Table", "bbox": {"l": 162.33644, "t": 230.02801999999997, "r": 196.23332, "b": 244.09618999999998, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Target", "bbox": {"l": 433.9967, "t": 210.27166999999997, "r": 474.07373, "b": 224.33983999999998, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Table", "bbox": {"l": 437.0834699999999, "t": 230.02801999999997, "r": 470.98035, "b": 244.09618999999998, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Permission: WHERE NAME <> \u0091CAIN\u0092", "bbox": {"l": 241.55029, "t": 213.87108999999998, "r": 393.08215, "b": 222.66039999999998, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Mask: AMOUNT", "bbox": {"l": 241.55029, "t": 238.66010000000006, "r": 308.94427, "b": 247.44939999999997, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "GLYPH", "bbox": {"l": 311.28659, "t": 238.6087, "r": 321.35062, "b": 247.86059999999998, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "999 99", "bbox": {"l": 323.72739, "t": 238.66010000000006, "r": 352.4155, "b": 247.44939999999997, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Mask: AMOUNT ", "bbox": {"l": 241.55029, "t": 238.66010000000006, "r": 311.23285, "b": 247.44939999999997, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "999.99", "bbox": {"l": 323.72739, "t": 238.66010000000006, "r": 352.4101, "b": 247.44939999999997, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "PKey", "bbox": {"l": 151.9642, "t": 291.02185000000003, "r": 164.46983, "b": 296.30688, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Name", "bbox": {"l": 175.87032, "t": 291.02185000000003, "r": 191.11169, "b": 296.30688, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Amount", "bbox": {"l": 202.48253, "t": 291.02185000000003, "r": 223.26395, "b": 296.30688, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "0001", "bbox": {"l": 152.76683, "t": 302.13522, "r": 165.25333, "b": 307.41406, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CAIN", "bbox": {"l": 172.65977, "t": 302.13522, "r": 185.03514, "b": 307.41406, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "10.00", "bbox": {"l": 209.98405, "t": 302.13522, "r": 224.01779000000002, "b": 307.41406, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "0002", "bbox": {"l": 152.76683, "t": 313.2486, "r": 165.26074, "b": 318.52744, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "BEDOYA", "bbox": {"l": 172.66534, "t": 313.2486, "r": 192.83121, "b": 318.52744, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "25.50", "bbox": {"l": 209.97977, "t": 313.2486, "r": 224.02275, "b": 318.52744, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "PKey", "bbox": {"l": 411.3378, "t": 308.30936, "r": 423.84344, "b": 313.59439, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Name", "bbox": {"l": 435.24393, "t": 308.30936, "r": 450.48532, "b": 313.59439, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Amount", "bbox": {"l": 461.8561700000001, "t": 308.30936, "r": 482.63754, "b": 313.59439, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "ERR", "bbox": {"l": 437.05289000000005, "t": 314.45877, "r": 451.63263, "b": 322.37701, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "OR", "bbox": {"l": 451.54279, "t": 314.45877, "r": 462.70425, "b": 322.37701, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": ":", "bbox": {"l": 462.70621, "t": 314.45877, "r": 465.18816999999996, "b": 322.37701, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "0003", "bbox": {"l": 152.76691, "t": 324.36197000000004, "r": 165.2534, "b": 329.64081, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CAIN", "bbox": {"l": 172.65985, "t": 324.36197000000004, "r": 185.03522, "b": 329.64081, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "333.00", "bbox": {"l": 206.86621, "t": 324.36197000000004, "r": 224.02156, "b": 329.64081, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "0004", "bbox": {"l": 152.76691, "t": 335.47534, "r": 165.26082, "b": 340.75418, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "BEDOYA", "bbox": {"l": 172.66542, "t": 335.47534, "r": 192.83128, "b": 340.75418, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "75.25", "bbox": {"l": 209.97984, "t": 335.47534, "r": 224.02283, "b": 340.75418, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "0005", "bbox": {"l": 152.76691, "t": 346.58871000000005, "r": 165.2534, "b": 351.86755, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "CAIN", "bbox": {"l": 172.65985, "t": 346.58871000000005, "r": 185.03522, "b": 351.86755, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "987.65", "bbox": {"l": 206.86621, "t": 346.58871000000005, "r": 224.02156, "b": 351.86755, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "0006", "bbox": {"l": 152.76691, "t": 357.70208999999994, "r": 165.25835, "b": 362.98093, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "BEDOYA", "bbox": {"l": 172.66356, "t": 357.70208999999994, "r": 192.82693, "b": 362.98093, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "123.45", "bbox": {"l": 206.8582, "t": 357.70208999999994, "r": 224.02097, "b": 362.98093, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "INSERT", "bbox": {"l": 360.71021, "t": 324.53406000000007, "r": 384.86127, "b": 331.58953999999994, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "RCAC", "bbox": {"l": 306.2547, "t": 323.58484, "r": 328.55386, "b": 332.37415, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "SELECT", "bbox": {"l": 246.7057, "t": 325.27496, "r": 270.47351, "b": 332.33044, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "Ro", "bbox": {"l": 422.82159, "t": 325.57208, "r": 432.36795, "b": 333.49033, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "w or c", "bbox": {"l": 432.5124200000001, "t": 325.57208, "r": 455.17249, "b": 333.49033, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "o", "bbox": {"l": 455.26602, "t": 325.57208, "r": 459.96512, "b": 333.49033, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "lumn ", "bbox": {"l": 460.14017, "t": 325.57208, "r": 481.52313, "b": 333.49033, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "access", "bbox": {"l": 413.25211, "t": 336.68539, "r": 433.96523999999994, "b": 344.60364, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "c", "bbox": {"l": 418.90115, "t": 336.68539, "r": 443.38031, "b": 344.60364, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "ont", "bbox": {"l": 443.29419000000007, "t": 336.68539, "r": 456.05045, "b": 344.60364, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "r", "bbox": {"l": 456.03748, "t": 336.68539, "r": 459.26775999999995, "b": 344.60364, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "ol is", "bbox": {"l": 459.12793, "t": 336.68539, "r": 473.1619299999999, "b": 344.60364, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "not", "bbox": {"l": 482.9226100000001, "t": 336.68539, "r": 488.00629, "b": 344.60364, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "valid.", "bbox": {"l": 441.12802000000005, "t": 347.79871, "r": 461.11813, "b": 355.71695, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "0007", "bbox": {"l": 152.76691, "t": 368.81546, "r": 165.25587, "b": 374.0943, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "CAIN", "bbox": {"l": 172.66171, "t": 368.81546, "r": 185.03955, "b": 374.0943, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "1.00", "bbox": {"l": 213.10577, "t": 368.81546, "r": 224.02036, "b": 374.0943, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "bbox": {"l": 237.6606, "t": 363.61063, "r": 477.46509, "b": 374.1683300000001, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "text", "id": 7, "page_no": 106, "cluster": {"id": 7, "label": "text", "bbox": {"l": 142.4822540283203, "t": 508.5616760253906, "r": 541.38123, "b": 530.8720092773438, "coord_origin": "TOPLEFT"}, "confidence": 0.9712533354759216, "cells": [{"id": 71, "text": "Note:", "bbox": {"l": 142.8, "t": 509.44864, "r": 168.33246, "b": 518.6616200000001, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": " Thinking of the row permission as defining a virtual set of rows that can be operated ", "bbox": {"l": 168.36035, "t": 509.44864, "r": 541.38123, "b": 518.6616200000001, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "on is the secret to understanding the effect of RCAC on any join operation.", "bbox": {"l": 142.79997, "t": 521.4484600000001, "r": 471.47884999999997, "b": 530.6614400000001, "coord_origin": "TOPLEFT"}}]}, "text": "Note: Thinking of the row permission as defining a virtual set of rows that can be operated on is the secret to understanding the effect of RCAC on any join operation."}], "body": [{"label": "text", "id": 2, "page_no": 106, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.59042358398438, "t": 70.5692138671875, "r": 547.25018, "b": 116.77182006835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9812178611755371, "cells": [{"id": 2, "text": "Although the source rows where", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 278.92981, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": " NAME <> 'CAIN'", "bbox": {"l": 278.99951, "t": 71.65845000000002, "r": 353.33795, "b": 80.43322999999998, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " do satisfy the target table\u2019s permission, the ", "bbox": {"l": 353.33997, "t": 71.50903000000005, "r": 547.24823, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "AMOUNT column value of 999.99 represents masked data and therefore cannot be inserted. ", "bbox": {"l": 136.79961, "t": 83.50885000000017, "r": 547.25018, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "An error is returned indicating the failure, as shown in Figure 6-6. In this scenario, DB2 is ", "bbox": {"l": 136.79961, "t": 95.50867000000005, "r": 531.00842, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "protecting against an overt attempt to insert masked data.", "bbox": {"l": 136.79961, "t": 107.50847999999996, "r": 391.95767, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Although the source rows where NAME <> 'CAIN' do satisfy the target table\u2019s permission, the AMOUNT column value of 999.99 represents masked data and therefore cannot be inserted. An error is returned indicating the failure, as shown in Figure 6-6. In this scenario, DB2 is protecting against an overt attempt to insert masked data."}, {"label": "caption", "id": 3, "page_no": 106, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.80810546875, "t": 387.26177978515625, "r": 425.63427734375, "b": 396.8255920410156, "coord_origin": "TOPLEFT"}, "confidence": 0.9390740990638733, "cells": [{"id": 8, "text": "Figure 6-6 RCAC effects on data movement on SOURCE and TARGET", "bbox": {"l": 136.8, "t": 388.45801, "r": 424.51382, "b": 396.78302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-6 RCAC effects on data movement on SOURCE and TARGET"}, {"label": "section_header", "id": 4, "page_no": 106, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.44702911376953, "t": 424.1014404296875, "r": 263.02802, "b": 440.4540100097656, "coord_origin": "TOPLEFT"}, "confidence": 0.9687318205833435, "cells": [{"id": 9, "text": "6.3", "bbox": {"l": 64.800003, "t": 425.10071, "r": 87.442535, "b": 439.86371, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "RCAC effects on joins", "bbox": {"l": 91.971039, "t": 425.10071, "r": 263.02802, "b": 439.86371, "coord_origin": "TOPLEFT"}}]}, "text": "6.3 RCAC effects on joins"}, {"label": "text", "id": 5, "page_no": 106, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.9691619873047, "t": 456.65673828125, "r": 546.7406, "b": 490.82232666015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9842352867126465, "cells": [{"id": 11, "text": "As mentioned previously, a fundamental concept of row permission is that it defines a logical ", "bbox": {"l": 136.8, "t": 457.42870999999997, "r": 546.7406, "b": 466.64169, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "subset of rows that a user or group of users is permitted to access and use. This subset ", "bbox": {"l": 136.8, "t": 469.42853, "r": 526.64325, "b": 478.64151, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "becomes the new basis of any query against the table that has RCAC enabled. ", "bbox": {"l": 136.79901, "t": 481.42834, "r": 487.7705700000001, "b": 490.64133, "coord_origin": "TOPLEFT"}}]}, "text": "As mentioned previously, a fundamental concept of row permission is that it defines a logical subset of rows that a user or group of users is permitted to access and use. This subset becomes the new basis of any query against the table that has RCAC enabled."}, {"label": "picture", "id": 6, "page_no": 106, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 136.0598907470703, "t": 131.39212036132812, "r": 501.41558837890625, "b": 384.4598083496094, "coord_origin": "TOPLEFT"}, "confidence": 0.9831688404083252, "cells": [{"id": 14, "text": "RCAC Effects on Data Movement", "bbox": {"l": 208.8893, "t": 142.60357999999997, "r": 425.65588, "b": 156.67174999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "RCAC Rule Text", "bbox": {"l": 277.45261, "t": 185.28967, "r": 364.87134, "b": 197.61577999999997, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Source", "bbox": {"l": 157.1814, "t": 210.27166999999997, "r": 202.67342, "b": 224.33983999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Table", "bbox": {"l": 162.33644, "t": 230.02801999999997, "r": 196.23332, "b": 244.09618999999998, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Target", "bbox": {"l": 433.9967, "t": 210.27166999999997, "r": 474.07373, "b": 224.33983999999998, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Table", "bbox": {"l": 437.0834699999999, "t": 230.02801999999997, "r": 470.98035, "b": 244.09618999999998, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Permission: WHERE NAME <> \u0091CAIN\u0092", "bbox": {"l": 241.55029, "t": 213.87108999999998, "r": 393.08215, "b": 222.66039999999998, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Mask: AMOUNT", "bbox": {"l": 241.55029, "t": 238.66010000000006, "r": 308.94427, "b": 247.44939999999997, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "GLYPH", "bbox": {"l": 311.28659, "t": 238.6087, "r": 321.35062, "b": 247.86059999999998, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "999 99", "bbox": {"l": 323.72739, "t": 238.66010000000006, "r": 352.4155, "b": 247.44939999999997, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Mask: AMOUNT ", "bbox": {"l": 241.55029, "t": 238.66010000000006, "r": 311.23285, "b": 247.44939999999997, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "999.99", "bbox": {"l": 323.72739, "t": 238.66010000000006, "r": 352.4101, "b": 247.44939999999997, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "PKey", "bbox": {"l": 151.9642, "t": 291.02185000000003, "r": 164.46983, "b": 296.30688, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Name", "bbox": {"l": 175.87032, "t": 291.02185000000003, "r": 191.11169, "b": 296.30688, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Amount", "bbox": {"l": 202.48253, "t": 291.02185000000003, "r": 223.26395, "b": 296.30688, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "0001", "bbox": {"l": 152.76683, "t": 302.13522, "r": 165.25333, "b": 307.41406, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CAIN", "bbox": {"l": 172.65977, "t": 302.13522, "r": 185.03514, "b": 307.41406, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "10.00", "bbox": {"l": 209.98405, "t": 302.13522, "r": 224.01779000000002, "b": 307.41406, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "0002", "bbox": {"l": 152.76683, "t": 313.2486, "r": 165.26074, "b": 318.52744, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "BEDOYA", "bbox": {"l": 172.66534, "t": 313.2486, "r": 192.83121, "b": 318.52744, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "25.50", "bbox": {"l": 209.97977, "t": 313.2486, "r": 224.02275, "b": 318.52744, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "PKey", "bbox": {"l": 411.3378, "t": 308.30936, "r": 423.84344, "b": 313.59439, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Name", "bbox": {"l": 435.24393, "t": 308.30936, "r": 450.48532, "b": 313.59439, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Amount", "bbox": {"l": 461.8561700000001, "t": 308.30936, "r": 482.63754, "b": 313.59439, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "ERR", "bbox": {"l": 437.05289000000005, "t": 314.45877, "r": 451.63263, "b": 322.37701, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "OR", "bbox": {"l": 451.54279, "t": 314.45877, "r": 462.70425, "b": 322.37701, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": ":", "bbox": {"l": 462.70621, "t": 314.45877, "r": 465.18816999999996, "b": 322.37701, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "0003", "bbox": {"l": 152.76691, "t": 324.36197000000004, "r": 165.2534, "b": 329.64081, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CAIN", "bbox": {"l": 172.65985, "t": 324.36197000000004, "r": 185.03522, "b": 329.64081, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "333.00", "bbox": {"l": 206.86621, "t": 324.36197000000004, "r": 224.02156, "b": 329.64081, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "0004", "bbox": {"l": 152.76691, "t": 335.47534, "r": 165.26082, "b": 340.75418, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "BEDOYA", "bbox": {"l": 172.66542, "t": 335.47534, "r": 192.83128, "b": 340.75418, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "75.25", "bbox": {"l": 209.97984, "t": 335.47534, "r": 224.02283, "b": 340.75418, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "0005", "bbox": {"l": 152.76691, "t": 346.58871000000005, "r": 165.2534, "b": 351.86755, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "CAIN", "bbox": {"l": 172.65985, "t": 346.58871000000005, "r": 185.03522, "b": 351.86755, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "987.65", "bbox": {"l": 206.86621, "t": 346.58871000000005, "r": 224.02156, "b": 351.86755, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "0006", "bbox": {"l": 152.76691, "t": 357.70208999999994, "r": 165.25835, "b": 362.98093, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "BEDOYA", "bbox": {"l": 172.66356, "t": 357.70208999999994, "r": 192.82693, "b": 362.98093, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "123.45", "bbox": {"l": 206.8582, "t": 357.70208999999994, "r": 224.02097, "b": 362.98093, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "INSERT", "bbox": {"l": 360.71021, "t": 324.53406000000007, "r": 384.86127, "b": 331.58953999999994, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "RCAC", "bbox": {"l": 306.2547, "t": 323.58484, "r": 328.55386, "b": 332.37415, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "SELECT", "bbox": {"l": 246.7057, "t": 325.27496, "r": 270.47351, "b": 332.33044, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "Ro", "bbox": {"l": 422.82159, "t": 325.57208, "r": 432.36795, "b": 333.49033, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "w or c", "bbox": {"l": 432.5124200000001, "t": 325.57208, "r": 455.17249, "b": 333.49033, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "o", "bbox": {"l": 455.26602, "t": 325.57208, "r": 459.96512, "b": 333.49033, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "lumn ", "bbox": {"l": 460.14017, "t": 325.57208, "r": 481.52313, "b": 333.49033, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "access", "bbox": {"l": 413.25211, "t": 336.68539, "r": 433.96523999999994, "b": 344.60364, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "c", "bbox": {"l": 418.90115, "t": 336.68539, "r": 443.38031, "b": 344.60364, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "ont", "bbox": {"l": 443.29419000000007, "t": 336.68539, "r": 456.05045, "b": 344.60364, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "r", "bbox": {"l": 456.03748, "t": 336.68539, "r": 459.26775999999995, "b": 344.60364, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "ol is", "bbox": {"l": 459.12793, "t": 336.68539, "r": 473.1619299999999, "b": 344.60364, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "not", "bbox": {"l": 482.9226100000001, "t": 336.68539, "r": 488.00629, "b": 344.60364, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "valid.", "bbox": {"l": 441.12802000000005, "t": 347.79871, "r": 461.11813, "b": 355.71695, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "0007", "bbox": {"l": 152.76691, "t": 368.81546, "r": 165.25587, "b": 374.0943, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "CAIN", "bbox": {"l": 172.66171, "t": 368.81546, "r": 185.03955, "b": 374.0943, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "1.00", "bbox": {"l": 213.10577, "t": 368.81546, "r": 224.02036, "b": 374.0943, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "bbox": {"l": 237.6606, "t": 363.61063, "r": 477.46509, "b": 374.1683300000001, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "text", "id": 7, "page_no": 106, "cluster": {"id": 7, "label": "text", "bbox": {"l": 142.4822540283203, "t": 508.5616760253906, "r": 541.38123, "b": 530.8720092773438, "coord_origin": "TOPLEFT"}, "confidence": 0.9712533354759216, "cells": [{"id": 71, "text": "Note:", "bbox": {"l": 142.8, "t": 509.44864, "r": 168.33246, "b": 518.6616200000001, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": " Thinking of the row permission as defining a virtual set of rows that can be operated ", "bbox": {"l": 168.36035, "t": 509.44864, "r": 541.38123, "b": 518.6616200000001, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "on is the secret to understanding the effect of RCAC on any join operation.", "bbox": {"l": 142.79997, "t": 521.4484600000001, "r": 471.47884999999997, "b": 530.6614400000001, "coord_origin": "TOPLEFT"}}]}, "text": "Note: Thinking of the row permission as defining a virtual set of rows that can be operated on is the secret to understanding the effect of RCAC on any join operation."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 106, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 376.1033630371094, "t": 754.9728393554688, "r": 523.62878, "b": 764.0504150390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9539369940757751, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 106, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6055297851562, "t": 754.2470092773438, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9151113629341125, "cells": [{"id": 1, "text": "91", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "91"}]}}, {"page_no": 107, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "92 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "As shown in Figure 6-7, there are two different sets, set A and set B. However, set B has a ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 537.42993, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "row permission that subsets the rows that a user can see.", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 391.50604, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 6-7 Set A and set B with row permissions", "bbox": {"l": 136.8, "t": 320.298, "r": 333.67859, "b": 328.62302, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "6.3.1", "bbox": {"l": 64.800003, "t": 349.13474, "r": 94.749428, "b": 361.12271, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Inner joins", "bbox": {"l": 98.493103, "t": 349.13474, "r": 166.59303, "b": 361.12271, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Inner join defines the intersection of two data sets. For a row to be returned from the inner join ", "bbox": {"l": 136.8, "t": 375.28873, "r": 547.21875, "b": 384.50171, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "query, it must appear in both sets, as shown in Figure 6-8.", "bbox": {"l": 136.8, "t": 387.28853999999995, "r": 392.98315, "b": 396.50152999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Figure 6-8", "bbox": {"l": 136.8, "t": 625.63789, "r": 177.73784, "b": 633.96291, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Inner join without RCAC permission", "bbox": {"l": 185.23007, "t": 625.63789, "r": 327.00775, "b": 633.96291, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Permitted", "bbox": {"l": 354.46219, "t": 172.28998, "r": 430.1011700000001, "b": 188.77050999999994, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "by", "bbox": {"l": 383.15869, "t": 194.41150000000005, "r": 401.3905, "b": 210.89202999999998, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "RCAC", "bbox": {"l": 372.22079, "t": 216.53308000000004, "r": 412.28287, "b": 233.01360999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Set A", "bbox": {"l": 210.7952, "t": 292.03516, "r": 250.37243999999998, "b": 307.81519, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Set B", "bbox": {"l": 386.354, "t": 292.03516, "r": 425.10168, "b": 307.81519, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Result of Intersection", "bbox": {"l": 171.8576, "t": 505.00116, "r": 277.11508, "b": 515.18533, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Set A", "bbox": {"l": 232.8615, "t": 607.4495400000001, "r": 271.10748, "b": 622.7257999999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Set B", "bbox": {"l": 343.29138, "t": 607.4495400000001, "r": 380.77533, "b": 622.7257999999999, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.16549682617188, "t": 754.3916625976562, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9147290587425232, "cells": [{"id": 0, "text": "92 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.34784698486328, "t": 754.6744995117188, "r": 334.42142, "b": 763.9275512695312, "coord_origin": "TOPLEFT"}, "confidence": 0.951833963394165, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 136.05355834960938, "t": 70.50668334960938, "r": 537.42993, "b": 92.82316589355469, "coord_origin": "TOPLEFT"}, "confidence": 0.9440383911132812, "cells": [{"id": 2, "text": "As shown in Figure 6-7, there are two different sets, set A and set B. However, set B has a ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 537.42993, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "row permission that subsets the rows that a user can see.", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 391.50604, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.143310546875, "t": 319.539306640625, "r": 334.12286376953125, "b": 328.9681701660156, "coord_origin": "TOPLEFT"}, "confidence": 0.9443629384040833, "cells": [{"id": 4, "text": "Figure 6-7 Set A and set B with row permissions", "bbox": {"l": 136.8, "t": 320.298, "r": 333.67859, "b": 328.62302, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 64.19314575195312, "t": 348.505126953125, "r": 166.59303, "b": 361.54974365234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9613147974014282, "cells": [{"id": 5, "text": "6.3.1", "bbox": {"l": 64.800003, "t": 349.13474, "r": 94.749428, "b": 361.12271, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Inner joins", "bbox": {"l": 98.493103, "t": 349.13474, "r": 166.59303, "b": 361.12271, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.13674926757812, "t": 374.5938415527344, "r": 547.21875, "b": 397.1634216308594, "coord_origin": "TOPLEFT"}, "confidence": 0.965448260307312, "cells": [{"id": 7, "text": "Inner join defines the intersection of two data sets. For a row to be returned from the inner join ", "bbox": {"l": 136.8, "t": 375.28873, "r": 547.21875, "b": 384.50171, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "query, it must appear in both sets, as shown in Figure 6-8.", "bbox": {"l": 136.8, "t": 387.28853999999995, "r": 392.98315, "b": 396.50152999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "caption", "bbox": {"l": 136.0211181640625, "t": 624.7966918945312, "r": 327.359130859375, "b": 634.3587036132812, "coord_origin": "TOPLEFT"}, "confidence": 0.9452580213546753, "cells": [{"id": 9, "text": "Figure 6-8", "bbox": {"l": 136.8, "t": 625.63789, "r": 177.73784, "b": 633.96291, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Inner join without RCAC permission", "bbox": {"l": 185.23007, "t": 625.63789, "r": 327.00775, "b": 633.96291, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "picture", "bbox": {"l": 136.11366271972656, "t": 107.33206176757812, "r": 502.8105773925781, "b": 316.0246887207031, "coord_origin": "TOPLEFT"}, "confidence": 0.9822977781295776, "cells": [{"id": 11, "text": "Permitted", "bbox": {"l": 354.46219, "t": 172.28998, "r": 430.1011700000001, "b": 188.77050999999994, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "by", "bbox": {"l": 383.15869, "t": 194.41150000000005, "r": 401.3905, "b": 210.89202999999998, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "RCAC", "bbox": {"l": 372.22079, "t": 216.53308000000004, "r": 412.28287, "b": 233.01360999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Set A", "bbox": {"l": 210.7952, "t": 292.03516, "r": 250.37243999999998, "b": 307.81519, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Set B", "bbox": {"l": 386.354, "t": 292.03516, "r": 425.10168, "b": 307.81519, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 135.9275665283203, "t": 410.61224365234375, "r": 464.8796691894531, "b": 622.7257999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9838927984237671, "cells": [{"id": 16, "text": "Result of Intersection", "bbox": {"l": 171.8576, "t": 505.00116, "r": 277.11508, "b": 515.18533, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Set A", "bbox": {"l": 232.8615, "t": 607.4495400000001, "r": 271.10748, "b": 622.7257999999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Set B", "bbox": {"l": 343.29138, "t": 607.4495400000001, "r": 380.77533, "b": 622.7257999999999, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 107, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.16549682617188, "t": 754.3916625976562, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9147290587425232, "cells": [{"id": 0, "text": "92 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "92"}, {"label": "page_footer", "id": 1, "page_no": 107, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.34784698486328, "t": 754.6744995117188, "r": 334.42142, "b": 763.9275512695312, "coord_origin": "TOPLEFT"}, "confidence": 0.951833963394165, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 2, "page_no": 107, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.05355834960938, "t": 70.50668334960938, "r": 537.42993, "b": 92.82316589355469, "coord_origin": "TOPLEFT"}, "confidence": 0.9440383911132812, "cells": [{"id": 2, "text": "As shown in Figure 6-7, there are two different sets, set A and set B. However, set B has a ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 537.42993, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "row permission that subsets the rows that a user can see.", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 391.50604, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "As shown in Figure 6-7, there are two different sets, set A and set B. However, set B has a row permission that subsets the rows that a user can see."}, {"label": "caption", "id": 3, "page_no": 107, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.143310546875, "t": 319.539306640625, "r": 334.12286376953125, "b": 328.9681701660156, "coord_origin": "TOPLEFT"}, "confidence": 0.9443629384040833, "cells": [{"id": 4, "text": "Figure 6-7 Set A and set B with row permissions", "bbox": {"l": 136.8, "t": 320.298, "r": 333.67859, "b": 328.62302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-7 Set A and set B with row permissions"}, {"label": "section_header", "id": 4, "page_no": 107, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.19314575195312, "t": 348.505126953125, "r": 166.59303, "b": 361.54974365234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9613147974014282, "cells": [{"id": 5, "text": "6.3.1", "bbox": {"l": 64.800003, "t": 349.13474, "r": 94.749428, "b": 361.12271, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Inner joins", "bbox": {"l": 98.493103, "t": 349.13474, "r": 166.59303, "b": 361.12271, "coord_origin": "TOPLEFT"}}]}, "text": "6.3.1 Inner joins"}, {"label": "text", "id": 5, "page_no": 107, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.13674926757812, "t": 374.5938415527344, "r": 547.21875, "b": 397.1634216308594, "coord_origin": "TOPLEFT"}, "confidence": 0.965448260307312, "cells": [{"id": 7, "text": "Inner join defines the intersection of two data sets. For a row to be returned from the inner join ", "bbox": {"l": 136.8, "t": 375.28873, "r": 547.21875, "b": 384.50171, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "query, it must appear in both sets, as shown in Figure 6-8.", "bbox": {"l": 136.8, "t": 387.28853999999995, "r": 392.98315, "b": 396.50152999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Inner join defines the intersection of two data sets. For a row to be returned from the inner join query, it must appear in both sets, as shown in Figure 6-8."}, {"label": "caption", "id": 6, "page_no": 107, "cluster": {"id": 6, "label": "caption", "bbox": {"l": 136.0211181640625, "t": 624.7966918945312, "r": 327.359130859375, "b": 634.3587036132812, "coord_origin": "TOPLEFT"}, "confidence": 0.9452580213546753, "cells": [{"id": 9, "text": "Figure 6-8", "bbox": {"l": 136.8, "t": 625.63789, "r": 177.73784, "b": 633.96291, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Inner join without RCAC permission", "bbox": {"l": 185.23007, "t": 625.63789, "r": 327.00775, "b": 633.96291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-8 Inner join without RCAC permission"}, {"label": "picture", "id": 7, "page_no": 107, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 136.11366271972656, "t": 107.33206176757812, "r": 502.8105773925781, "b": 316.0246887207031, "coord_origin": "TOPLEFT"}, "confidence": 0.9822977781295776, "cells": [{"id": 11, "text": "Permitted", "bbox": {"l": 354.46219, "t": 172.28998, "r": 430.1011700000001, "b": 188.77050999999994, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "by", "bbox": {"l": 383.15869, "t": 194.41150000000005, "r": 401.3905, "b": 210.89202999999998, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "RCAC", "bbox": {"l": 372.22079, "t": 216.53308000000004, "r": 412.28287, "b": 233.01360999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Set A", "bbox": {"l": 210.7952, "t": 292.03516, "r": 250.37243999999998, "b": 307.81519, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Set B", "bbox": {"l": 386.354, "t": 292.03516, "r": 425.10168, "b": 307.81519, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 8, "page_no": 107, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 135.9275665283203, "t": 410.61224365234375, "r": 464.8796691894531, "b": 622.7257999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9838927984237671, "cells": [{"id": 16, "text": "Result of Intersection", "bbox": {"l": 171.8576, "t": 505.00116, "r": 277.11508, "b": 515.18533, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Set A", "bbox": {"l": 232.8615, "t": 607.4495400000001, "r": 271.10748, "b": 622.7257999999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Set B", "bbox": {"l": 343.29138, "t": 607.4495400000001, "r": 380.77533, "b": 622.7257999999999, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 107, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.05355834960938, "t": 70.50668334960938, "r": 537.42993, "b": 92.82316589355469, "coord_origin": "TOPLEFT"}, "confidence": 0.9440383911132812, "cells": [{"id": 2, "text": "As shown in Figure 6-7, there are two different sets, set A and set B. However, set B has a ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 537.42993, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "row permission that subsets the rows that a user can see.", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 391.50604, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "As shown in Figure 6-7, there are two different sets, set A and set B. However, set B has a row permission that subsets the rows that a user can see."}, {"label": "caption", "id": 3, "page_no": 107, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.143310546875, "t": 319.539306640625, "r": 334.12286376953125, "b": 328.9681701660156, "coord_origin": "TOPLEFT"}, "confidence": 0.9443629384040833, "cells": [{"id": 4, "text": "Figure 6-7 Set A and set B with row permissions", "bbox": {"l": 136.8, "t": 320.298, "r": 333.67859, "b": 328.62302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-7 Set A and set B with row permissions"}, {"label": "section_header", "id": 4, "page_no": 107, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.19314575195312, "t": 348.505126953125, "r": 166.59303, "b": 361.54974365234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9613147974014282, "cells": [{"id": 5, "text": "6.3.1", "bbox": {"l": 64.800003, "t": 349.13474, "r": 94.749428, "b": 361.12271, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Inner joins", "bbox": {"l": 98.493103, "t": 349.13474, "r": 166.59303, "b": 361.12271, "coord_origin": "TOPLEFT"}}]}, "text": "6.3.1 Inner joins"}, {"label": "text", "id": 5, "page_no": 107, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.13674926757812, "t": 374.5938415527344, "r": 547.21875, "b": 397.1634216308594, "coord_origin": "TOPLEFT"}, "confidence": 0.965448260307312, "cells": [{"id": 7, "text": "Inner join defines the intersection of two data sets. For a row to be returned from the inner join ", "bbox": {"l": 136.8, "t": 375.28873, "r": 547.21875, "b": 384.50171, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "query, it must appear in both sets, as shown in Figure 6-8.", "bbox": {"l": 136.8, "t": 387.28853999999995, "r": 392.98315, "b": 396.50152999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Inner join defines the intersection of two data sets. For a row to be returned from the inner join query, it must appear in both sets, as shown in Figure 6-8."}, {"label": "caption", "id": 6, "page_no": 107, "cluster": {"id": 6, "label": "caption", "bbox": {"l": 136.0211181640625, "t": 624.7966918945312, "r": 327.359130859375, "b": 634.3587036132812, "coord_origin": "TOPLEFT"}, "confidence": 0.9452580213546753, "cells": [{"id": 9, "text": "Figure 6-8", "bbox": {"l": 136.8, "t": 625.63789, "r": 177.73784, "b": 633.96291, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Inner join without RCAC permission", "bbox": {"l": 185.23007, "t": 625.63789, "r": 327.00775, "b": 633.96291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-8 Inner join without RCAC permission"}, {"label": "picture", "id": 7, "page_no": 107, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 136.11366271972656, "t": 107.33206176757812, "r": 502.8105773925781, "b": 316.0246887207031, "coord_origin": "TOPLEFT"}, "confidence": 0.9822977781295776, "cells": [{"id": 11, "text": "Permitted", "bbox": {"l": 354.46219, "t": 172.28998, "r": 430.1011700000001, "b": 188.77050999999994, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "by", "bbox": {"l": 383.15869, "t": 194.41150000000005, "r": 401.3905, "b": 210.89202999999998, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "RCAC", "bbox": {"l": 372.22079, "t": 216.53308000000004, "r": 412.28287, "b": 233.01360999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Set A", "bbox": {"l": 210.7952, "t": 292.03516, "r": 250.37243999999998, "b": 307.81519, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Set B", "bbox": {"l": 386.354, "t": 292.03516, "r": 425.10168, "b": 307.81519, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 8, "page_no": 107, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 135.9275665283203, "t": 410.61224365234375, "r": 464.8796691894531, "b": 622.7257999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9838927984237671, "cells": [{"id": 16, "text": "Result of Intersection", "bbox": {"l": 171.8576, "t": 505.00116, "r": 277.11508, "b": 515.18533, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Set A", "bbox": {"l": 232.8615, "t": 607.4495400000001, "r": 271.10748, "b": 622.7257999999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Set B", "bbox": {"l": 343.29138, "t": 607.4495400000001, "r": 380.77533, "b": 622.7257999999999, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 107, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.16549682617188, "t": 754.3916625976562, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9147290587425232, "cells": [{"id": 0, "text": "92 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "92"}, {"label": "page_footer", "id": 1, "page_no": 107, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.34784698486328, "t": 754.6744995117188, "r": 334.42142, "b": 763.9275512695312, "coord_origin": "TOPLEFT"}, "confidence": 0.951833963394165, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 108, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "93", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Given that row permission serves to eliminate logically rows from one or more sets, the result ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 547.32196, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "set from an inner join (and a subquery) can be different when RCAC is applied. RCAC can ", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 537.83099, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "reduce the number of rows that are permitted to be accessed by the join, as shown in ", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 515.98468, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Figure 6-9. ", "bbox": {"l": 136.79959, "t": 107.50847999999996, "r": 187.91333, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Figure 6-9 Inner join with RCAC permission", "bbox": {"l": 136.8, "t": 424.27798, "r": 314.49866, "b": 432.603, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Effect of column masks on inner joins:", "bbox": {"l": 142.8, "t": 135.52855999999997, "r": 326.52615, "b": 144.74158, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": " Because column masks are applied after the ", "bbox": {"l": 326.52017, "t": 135.52855999999997, "r": 529.25281, "b": 144.74158, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "query final results are determined, the masked value has no effect on the join processing ", "bbox": {"l": 142.8, "t": 147.52837999999997, "r": 537.63239, "b": 156.74139000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "and corresponding query result set.", "bbox": {"l": 142.8, "t": 159.52819999999997, "r": 299.81543, "b": 168.74121000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Inner Join with RCAC Permission", "bbox": {"l": 204.2908, "t": 187.63684, "r": 410.12238, "b": 201.08349999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Permitted", "bbox": {"l": 305.52841, "t": 269.37561000000005, "r": 378.18561, "b": 285.20309, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Result of Intersection", "bbox": {"l": 171.5974, "t": 295.78427, "r": 276.01706, "b": 305.88739, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Set A", "bbox": {"l": 232.11571000000004, "t": 397.4173, "r": 270.05716, "b": 412.57201999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Set B", "bbox": {"l": 341.66632, "t": 397.4173, "r": 378.85181, "b": 412.57201999999995, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 376.04339599609375, "t": 754.8524169921875, "r": 523.62878, "b": 764.1233520507812, "coord_origin": "TOPLEFT"}, "confidence": 0.9509537220001221, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.5010375976562, "t": 754.3138427734375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9208362102508545, "cells": [{"id": 1, "text": "93", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.92884826660156, "t": 70.47429656982422, "r": 547.32196, "b": 116.84603881835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9856703877449036, "cells": [{"id": 2, "text": "Given that row permission serves to eliminate logically rows from one or more sets, the result ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 547.32196, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "set from an inner join (and a subquery) can be different when RCAC is applied. RCAC can ", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 537.83099, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "reduce the number of rows that are permitted to be accessed by the join, as shown in ", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 515.98468, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Figure 6-9. ", "bbox": {"l": 136.79959, "t": 107.50847999999996, "r": 187.91333, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.20010375976562, "t": 423.43145751953125, "r": 314.9713439941406, "b": 432.9030456542969, "coord_origin": "TOPLEFT"}, "confidence": 0.943959653377533, "cells": [{"id": 6, "text": "Figure 6-9 Inner join with RCAC permission", "bbox": {"l": 136.8, "t": 424.27798, "r": 314.49866, "b": 432.603, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 142.26942443847656, "t": 134.60061645507812, "r": 537.63239, "b": 169.2606201171875, "coord_origin": "TOPLEFT"}, "confidence": 0.9708845019340515, "cells": [{"id": 7, "text": "Effect of column masks on inner joins:", "bbox": {"l": 142.8, "t": 135.52855999999997, "r": 326.52615, "b": 144.74158, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": " Because column masks are applied after the ", "bbox": {"l": 326.52017, "t": 135.52855999999997, "r": 529.25281, "b": 144.74158, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "query final results are determined, the masked value has no effect on the join processing ", "bbox": {"l": 142.8, "t": 147.52837999999997, "r": 537.63239, "b": 156.74139000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "and corresponding query result set.", "bbox": {"l": 142.8, "t": 159.52819999999997, "r": 299.81543, "b": 168.74121000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "picture", "bbox": {"l": 136.01123046875, "t": 187.63684, "r": 470.03668212890625, "b": 420.47430419921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9833499193191528, "cells": [{"id": 11, "text": "Inner Join with RCAC Permission", "bbox": {"l": 204.2908, "t": 187.63684, "r": 410.12238, "b": 201.08349999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Permitted", "bbox": {"l": 305.52841, "t": 269.37561000000005, "r": 378.18561, "b": 285.20309, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Result of Intersection", "bbox": {"l": 171.5974, "t": 295.78427, "r": 276.01706, "b": 305.88739, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Set A", "bbox": {"l": 232.11571000000004, "t": 397.4173, "r": 270.05716, "b": 412.57201999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Set B", "bbox": {"l": 341.66632, "t": 397.4173, "r": 378.85181, "b": 412.57201999999995, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 108, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 376.04339599609375, "t": 754.8524169921875, "r": 523.62878, "b": 764.1233520507812, "coord_origin": "TOPLEFT"}, "confidence": 0.9509537220001221, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 108, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.5010375976562, "t": 754.3138427734375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9208362102508545, "cells": [{"id": 1, "text": "93", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "93"}, {"label": "text", "id": 2, "page_no": 108, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.92884826660156, "t": 70.47429656982422, "r": 547.32196, "b": 116.84603881835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9856703877449036, "cells": [{"id": 2, "text": "Given that row permission serves to eliminate logically rows from one or more sets, the result ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 547.32196, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "set from an inner join (and a subquery) can be different when RCAC is applied. RCAC can ", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 537.83099, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "reduce the number of rows that are permitted to be accessed by the join, as shown in ", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 515.98468, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Figure 6-9. ", "bbox": {"l": 136.79959, "t": 107.50847999999996, "r": 187.91333, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Given that row permission serves to eliminate logically rows from one or more sets, the result set from an inner join (and a subquery) can be different when RCAC is applied. RCAC can reduce the number of rows that are permitted to be accessed by the join, as shown in Figure 6-9."}, {"label": "caption", "id": 3, "page_no": 108, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.20010375976562, "t": 423.43145751953125, "r": 314.9713439941406, "b": 432.9030456542969, "coord_origin": "TOPLEFT"}, "confidence": 0.943959653377533, "cells": [{"id": 6, "text": "Figure 6-9 Inner join with RCAC permission", "bbox": {"l": 136.8, "t": 424.27798, "r": 314.49866, "b": 432.603, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-9 Inner join with RCAC permission"}, {"label": "text", "id": 4, "page_no": 108, "cluster": {"id": 4, "label": "text", "bbox": {"l": 142.26942443847656, "t": 134.60061645507812, "r": 537.63239, "b": 169.2606201171875, "coord_origin": "TOPLEFT"}, "confidence": 0.9708845019340515, "cells": [{"id": 7, "text": "Effect of column masks on inner joins:", "bbox": {"l": 142.8, "t": 135.52855999999997, "r": 326.52615, "b": 144.74158, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": " Because column masks are applied after the ", "bbox": {"l": 326.52017, "t": 135.52855999999997, "r": 529.25281, "b": 144.74158, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "query final results are determined, the masked value has no effect on the join processing ", "bbox": {"l": 142.8, "t": 147.52837999999997, "r": 537.63239, "b": 156.74139000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "and corresponding query result set.", "bbox": {"l": 142.8, "t": 159.52819999999997, "r": 299.81543, "b": 168.74121000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Effect of column masks on inner joins: Because column masks are applied after the query final results are determined, the masked value has no effect on the join processing and corresponding query result set."}, {"label": "picture", "id": 5, "page_no": 108, "cluster": {"id": 5, "label": "picture", "bbox": {"l": 136.01123046875, "t": 187.63684, "r": 470.03668212890625, "b": 420.47430419921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9833499193191528, "cells": [{"id": 11, "text": "Inner Join with RCAC Permission", "bbox": {"l": 204.2908, "t": 187.63684, "r": 410.12238, "b": 201.08349999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Permitted", "bbox": {"l": 305.52841, "t": 269.37561000000005, "r": 378.18561, "b": 285.20309, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Result of Intersection", "bbox": {"l": 171.5974, "t": 295.78427, "r": 276.01706, "b": 305.88739, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Set A", "bbox": {"l": 232.11571000000004, "t": 397.4173, "r": 270.05716, "b": 412.57201999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Set B", "bbox": {"l": 341.66632, "t": 397.4173, "r": 378.85181, "b": 412.57201999999995, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 108, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.92884826660156, "t": 70.47429656982422, "r": 547.32196, "b": 116.84603881835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9856703877449036, "cells": [{"id": 2, "text": "Given that row permission serves to eliminate logically rows from one or more sets, the result ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 547.32196, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "set from an inner join (and a subquery) can be different when RCAC is applied. RCAC can ", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 537.83099, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "reduce the number of rows that are permitted to be accessed by the join, as shown in ", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 515.98468, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Figure 6-9. ", "bbox": {"l": 136.79959, "t": 107.50847999999996, "r": 187.91333, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Given that row permission serves to eliminate logically rows from one or more sets, the result set from an inner join (and a subquery) can be different when RCAC is applied. RCAC can reduce the number of rows that are permitted to be accessed by the join, as shown in Figure 6-9."}, {"label": "caption", "id": 3, "page_no": 108, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.20010375976562, "t": 423.43145751953125, "r": 314.9713439941406, "b": 432.9030456542969, "coord_origin": "TOPLEFT"}, "confidence": 0.943959653377533, "cells": [{"id": 6, "text": "Figure 6-9 Inner join with RCAC permission", "bbox": {"l": 136.8, "t": 424.27798, "r": 314.49866, "b": 432.603, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-9 Inner join with RCAC permission"}, {"label": "text", "id": 4, "page_no": 108, "cluster": {"id": 4, "label": "text", "bbox": {"l": 142.26942443847656, "t": 134.60061645507812, "r": 537.63239, "b": 169.2606201171875, "coord_origin": "TOPLEFT"}, "confidence": 0.9708845019340515, "cells": [{"id": 7, "text": "Effect of column masks on inner joins:", "bbox": {"l": 142.8, "t": 135.52855999999997, "r": 326.52615, "b": 144.74158, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": " Because column masks are applied after the ", "bbox": {"l": 326.52017, "t": 135.52855999999997, "r": 529.25281, "b": 144.74158, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "query final results are determined, the masked value has no effect on the join processing ", "bbox": {"l": 142.8, "t": 147.52837999999997, "r": 537.63239, "b": 156.74139000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "and corresponding query result set.", "bbox": {"l": 142.8, "t": 159.52819999999997, "r": 299.81543, "b": 168.74121000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Effect of column masks on inner joins: Because column masks are applied after the query final results are determined, the masked value has no effect on the join processing and corresponding query result set."}, {"label": "picture", "id": 5, "page_no": 108, "cluster": {"id": 5, "label": "picture", "bbox": {"l": 136.01123046875, "t": 187.63684, "r": 470.03668212890625, "b": 420.47430419921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9833499193191528, "cells": [{"id": 11, "text": "Inner Join with RCAC Permission", "bbox": {"l": 204.2908, "t": 187.63684, "r": 410.12238, "b": 201.08349999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Permitted", "bbox": {"l": 305.52841, "t": 269.37561000000005, "r": 378.18561, "b": 285.20309, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Result of Intersection", "bbox": {"l": 171.5974, "t": 295.78427, "r": 276.01706, "b": 305.88739, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Set A", "bbox": {"l": 232.11571000000004, "t": 397.4173, "r": 270.05716, "b": 412.57201999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Set B", "bbox": {"l": 341.66632, "t": 397.4173, "r": 378.85181, "b": 412.57201999999995, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 108, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 376.04339599609375, "t": 754.8524169921875, "r": 523.62878, "b": 764.1233520507812, "coord_origin": "TOPLEFT"}, "confidence": 0.9509537220001221, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 108, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.5010375976562, "t": 754.3138427734375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9208362102508545, "cells": [{"id": 1, "text": "93", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "93"}]}}, {"page_no": 109, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "94 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "6.3.2", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 94.717293, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Outer joins", "bbox": {"l": 98.456955, "t": 71.33471999999995, "r": 169.47015, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Outer joins preserve one or both sides of two data sets. A row can be returned from the outer ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 547.22864, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "join query if it appears in the primary set (LEFT, RIGHT, or both in the case of FULL), as ", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 527.93719, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "shown in Figure 6-10. Column values from the secondary set are returned if the row has a ", "bbox": {"l": 136.8, "t": 121.48834000000011, "r": 536.82648, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "match in the primary set. Otherwise, NULL is returned for the column value by default.", "bbox": {"l": 136.8, "t": 133.48816, "r": 516.36261, "b": 142.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Figure 6-10 Outer join without RCAC permission", "bbox": {"l": 136.8, "t": 376.27798, "r": 334.02512, "b": 384.603, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Set A", "bbox": {"l": 245.52909999999997, "t": 356.12268000000006, "r": 283.88458, "b": 371.44269, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Set B", "bbox": {"l": 356.27518, "t": 356.12268000000006, "r": 393.86646, "b": 371.44269, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.17929077148438, "t": 754.3489990234375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9131594896316528, "cells": [{"id": 0, "text": "94 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.3522720336914, "t": 754.6829833984375, "r": 334.42142, "b": 763.9155883789062, "coord_origin": "TOPLEFT"}, "confidence": 0.9499405026435852, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.229248046875, "t": 70.42779541015625, "r": 169.51583862304688, "b": 83.49371337890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9645467400550842, "cells": [{"id": 2, "text": "6.3.2", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 94.717293, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Outer joins", "bbox": {"l": 98.456955, "t": 71.33471999999995, "r": 169.47015, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.7491912841797, "t": 96.71513366699219, "r": 547.22864, "b": 142.9807586669922, "coord_origin": "TOPLEFT"}, "confidence": 0.9866304993629456, "cells": [{"id": 4, "text": "Outer joins preserve one or both sides of two data sets. A row can be returned from the outer ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 547.22864, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "join query if it appears in the primary set (LEFT, RIGHT, or both in the case of FULL), as ", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 527.93719, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "shown in Figure 6-10. Column values from the secondary set are returned if the row has a ", "bbox": {"l": 136.8, "t": 121.48834000000011, "r": 536.82648, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "match in the primary set. Otherwise, NULL is returned for the column value by default.", "bbox": {"l": 136.8, "t": 133.48816, "r": 516.36261, "b": 142.70117000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "caption", "bbox": {"l": 136.09414672851562, "t": 375.3983154296875, "r": 334.3742370605469, "b": 384.94317626953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9473740458488464, "cells": [{"id": 8, "text": "Figure 6-10 Outer join without RCAC permission", "bbox": {"l": 136.8, "t": 376.27798, "r": 334.02512, "b": 384.603, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "picture", "bbox": {"l": 136.0685272216797, "t": 157.57115173339844, "r": 478.2557678222656, "b": 372.21685791015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9835702180862427, "cells": [{"id": 9, "text": "Set A", "bbox": {"l": 245.52909999999997, "t": 356.12268000000006, "r": 283.88458, "b": 371.44269, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Set B", "bbox": {"l": 356.27518, "t": 356.12268000000006, "r": 393.86646, "b": 371.44269, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 109, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.17929077148438, "t": 754.3489990234375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9131594896316528, "cells": [{"id": 0, "text": "94 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "94"}, {"label": "page_footer", "id": 1, "page_no": 109, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.3522720336914, "t": 754.6829833984375, "r": 334.42142, "b": 763.9155883789062, "coord_origin": "TOPLEFT"}, "confidence": 0.9499405026435852, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "section_header", "id": 2, "page_no": 109, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.229248046875, "t": 70.42779541015625, "r": 169.51583862304688, "b": 83.49371337890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9645467400550842, "cells": [{"id": 2, "text": "6.3.2", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 94.717293, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Outer joins", "bbox": {"l": 98.456955, "t": 71.33471999999995, "r": 169.47015, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "6.3.2 Outer joins"}, {"label": "text", "id": 3, "page_no": 109, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.7491912841797, "t": 96.71513366699219, "r": 547.22864, "b": 142.9807586669922, "coord_origin": "TOPLEFT"}, "confidence": 0.9866304993629456, "cells": [{"id": 4, "text": "Outer joins preserve one or both sides of two data sets. A row can be returned from the outer ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 547.22864, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "join query if it appears in the primary set (LEFT, RIGHT, or both in the case of FULL), as ", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 527.93719, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "shown in Figure 6-10. Column values from the secondary set are returned if the row has a ", "bbox": {"l": 136.8, "t": 121.48834000000011, "r": 536.82648, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "match in the primary set. Otherwise, NULL is returned for the column value by default.", "bbox": {"l": 136.8, "t": 133.48816, "r": 516.36261, "b": 142.70117000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Outer joins preserve one or both sides of two data sets. A row can be returned from the outer join query if it appears in the primary set (LEFT, RIGHT, or both in the case of FULL), as shown in Figure 6-10. Column values from the secondary set are returned if the row has a match in the primary set. Otherwise, NULL is returned for the column value by default."}, {"label": "caption", "id": 4, "page_no": 109, "cluster": {"id": 4, "label": "caption", "bbox": {"l": 136.09414672851562, "t": 375.3983154296875, "r": 334.3742370605469, "b": 384.94317626953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9473740458488464, "cells": [{"id": 8, "text": "Figure 6-10 Outer join without RCAC permission", "bbox": {"l": 136.8, "t": 376.27798, "r": 334.02512, "b": 384.603, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-10 Outer join without RCAC permission"}, {"label": "picture", "id": 5, "page_no": 109, "cluster": {"id": 5, "label": "picture", "bbox": {"l": 136.0685272216797, "t": 157.57115173339844, "r": 478.2557678222656, "b": 372.21685791015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9835702180862427, "cells": [{"id": 9, "text": "Set A", "bbox": {"l": 245.52909999999997, "t": 356.12268000000006, "r": 283.88458, "b": 371.44269, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Set B", "bbox": {"l": 356.27518, "t": 356.12268000000006, "r": 393.86646, "b": 371.44269, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "section_header", "id": 2, "page_no": 109, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.229248046875, "t": 70.42779541015625, "r": 169.51583862304688, "b": 83.49371337890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9645467400550842, "cells": [{"id": 2, "text": "6.3.2", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 94.717293, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Outer joins", "bbox": {"l": 98.456955, "t": 71.33471999999995, "r": 169.47015, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "6.3.2 Outer joins"}, {"label": "text", "id": 3, "page_no": 109, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.7491912841797, "t": 96.71513366699219, "r": 547.22864, "b": 142.9807586669922, "coord_origin": "TOPLEFT"}, "confidence": 0.9866304993629456, "cells": [{"id": 4, "text": "Outer joins preserve one or both sides of two data sets. A row can be returned from the outer ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 547.22864, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "join query if it appears in the primary set (LEFT, RIGHT, or both in the case of FULL), as ", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 527.93719, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "shown in Figure 6-10. Column values from the secondary set are returned if the row has a ", "bbox": {"l": 136.8, "t": 121.48834000000011, "r": 536.82648, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "match in the primary set. Otherwise, NULL is returned for the column value by default.", "bbox": {"l": 136.8, "t": 133.48816, "r": 516.36261, "b": 142.70117000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Outer joins preserve one or both sides of two data sets. A row can be returned from the outer join query if it appears in the primary set (LEFT, RIGHT, or both in the case of FULL), as shown in Figure 6-10. Column values from the secondary set are returned if the row has a match in the primary set. Otherwise, NULL is returned for the column value by default."}, {"label": "caption", "id": 4, "page_no": 109, "cluster": {"id": 4, "label": "caption", "bbox": {"l": 136.09414672851562, "t": 375.3983154296875, "r": 334.3742370605469, "b": 384.94317626953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9473740458488464, "cells": [{"id": 8, "text": "Figure 6-10 Outer join without RCAC permission", "bbox": {"l": 136.8, "t": 376.27798, "r": 334.02512, "b": 384.603, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-10 Outer join without RCAC permission"}, {"label": "picture", "id": 5, "page_no": 109, "cluster": {"id": 5, "label": "picture", "bbox": {"l": 136.0685272216797, "t": 157.57115173339844, "r": 478.2557678222656, "b": 372.21685791015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9835702180862427, "cells": [{"id": 9, "text": "Set A", "bbox": {"l": 245.52909999999997, "t": 356.12268000000006, "r": 283.88458, "b": 371.44269, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Set B", "bbox": {"l": 356.27518, "t": 356.12268000000006, "r": 393.86646, "b": 371.44269, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 109, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.17929077148438, "t": 754.3489990234375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9131594896316528, "cells": [{"id": 0, "text": "94 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "94"}, {"label": "page_footer", "id": 1, "page_no": 109, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.3522720336914, "t": 754.6829833984375, "r": 334.42142, "b": 763.9155883789062, "coord_origin": "TOPLEFT"}, "confidence": 0.9499405026435852, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 110, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "95", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Given that row permission serves to eliminate logically rows from one or more sets, more ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 531.78638, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "column values that are returned from the secondary table in outer join can be NULL when ", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 535.29822, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "RCAC is applied, as shown in Figure 6-11.", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 324.68701, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Figure 6-11 Outer join with RCAC permission", "bbox": {"l": 136.8, "t": 425.478, "r": 321.55734, "b": 433.80301, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Effect of column masks on inner joins:", "bbox": {"l": 142.8, "t": 123.52855999999997, "r": 326.52615, "b": 132.74158, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " Because column masks are applied after the ", "bbox": {"l": 326.52017, "t": 123.52855999999997, "r": 529.25281, "b": 132.74158, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "query final results are determined, the masked value has no effect on the join processing ", "bbox": {"l": 142.8, "t": 135.52837999999997, "r": 537.63239, "b": 144.74139000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "and corresponding query result set.", "bbox": {"l": 142.8, "t": 147.52819999999997, "r": 299.81543, "b": 156.74121000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Outer Join with RCAC Permission", "bbox": {"l": 217.42469999999997, "t": 186.37725999999998, "r": 429.09708, "b": 199.98357999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Permitted", "bbox": {"l": 321.53659, "t": 269.08660999999995, "r": 395.05688, "b": 285.10199, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Set A", "bbox": {"l": 247.25200000000004, "t": 398.64859, "r": 285.64417, "b": 413.98325, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Set B", "bbox": {"l": 358.10394, "t": 398.64859, "r": 395.73117, "b": 413.98325, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 376.03192138671875, "t": 754.89306640625, "r": 523.62878, "b": 764.0955810546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9518811702728271, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.5347900390625, "t": 754.2847900390625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9189174175262451, "cells": [{"id": 1, "text": "95", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.9468994140625, "t": 70.65094757080078, "r": 535.29822, "b": 104.91271209716797, "coord_origin": "TOPLEFT"}, "confidence": 0.9831045269966125, "cells": [{"id": 2, "text": "Given that row permission serves to eliminate logically rows from one or more sets, more ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 531.78638, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "column values that are returned from the secondary table in outer join can be NULL when ", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 535.29822, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "RCAC is applied, as shown in Figure 6-11.", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 324.68701, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 135.94920349121094, "t": 424.67193603515625, "r": 321.8890380859375, "b": 434.1568603515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9448755383491516, "cells": [{"id": 5, "text": "Figure 6-11 Outer join with RCAC permission", "bbox": {"l": 136.8, "t": 425.478, "r": 321.55734, "b": 433.80301, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 142.19854736328125, "t": 122.269287109375, "r": 537.63239, "b": 157.0519561767578, "coord_origin": "TOPLEFT"}, "confidence": 0.968166708946228, "cells": [{"id": 6, "text": "Effect of column masks on inner joins:", "bbox": {"l": 142.8, "t": 123.52855999999997, "r": 326.52615, "b": 132.74158, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " Because column masks are applied after the ", "bbox": {"l": 326.52017, "t": 123.52855999999997, "r": 529.25281, "b": 132.74158, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "query final results are determined, the masked value has no effect on the join processing ", "bbox": {"l": 142.8, "t": 135.52837999999997, "r": 537.63239, "b": 144.74139000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "and corresponding query result set.", "bbox": {"l": 142.8, "t": 147.52819999999997, "r": 299.81543, "b": 156.74121000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "picture", "bbox": {"l": 136.01914978027344, "t": 183.2970428466797, "r": 483.0831298828125, "b": 421.65618896484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9844624996185303, "cells": [{"id": 10, "text": "Outer Join with RCAC Permission", "bbox": {"l": 217.42469999999997, "t": 186.37725999999998, "r": 429.09708, "b": 199.98357999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Permitted", "bbox": {"l": 321.53659, "t": 269.08660999999995, "r": 395.05688, "b": 285.10199, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Set A", "bbox": {"l": 247.25200000000004, "t": 398.64859, "r": 285.64417, "b": 413.98325, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Set B", "bbox": {"l": 358.10394, "t": 398.64859, "r": 395.73117, "b": 413.98325, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 110, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 376.03192138671875, "t": 754.89306640625, "r": 523.62878, "b": 764.0955810546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9518811702728271, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 110, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.5347900390625, "t": 754.2847900390625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9189174175262451, "cells": [{"id": 1, "text": "95", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "95"}, {"label": "text", "id": 2, "page_no": 110, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.9468994140625, "t": 70.65094757080078, "r": 535.29822, "b": 104.91271209716797, "coord_origin": "TOPLEFT"}, "confidence": 0.9831045269966125, "cells": [{"id": 2, "text": "Given that row permission serves to eliminate logically rows from one or more sets, more ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 531.78638, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "column values that are returned from the secondary table in outer join can be NULL when ", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 535.29822, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "RCAC is applied, as shown in Figure 6-11.", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 324.68701, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Given that row permission serves to eliminate logically rows from one or more sets, more column values that are returned from the secondary table in outer join can be NULL when RCAC is applied, as shown in Figure 6-11."}, {"label": "caption", "id": 3, "page_no": 110, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.94920349121094, "t": 424.67193603515625, "r": 321.8890380859375, "b": 434.1568603515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9448755383491516, "cells": [{"id": 5, "text": "Figure 6-11 Outer join with RCAC permission", "bbox": {"l": 136.8, "t": 425.478, "r": 321.55734, "b": 433.80301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-11 Outer join with RCAC permission"}, {"label": "text", "id": 4, "page_no": 110, "cluster": {"id": 4, "label": "text", "bbox": {"l": 142.19854736328125, "t": 122.269287109375, "r": 537.63239, "b": 157.0519561767578, "coord_origin": "TOPLEFT"}, "confidence": 0.968166708946228, "cells": [{"id": 6, "text": "Effect of column masks on inner joins:", "bbox": {"l": 142.8, "t": 123.52855999999997, "r": 326.52615, "b": 132.74158, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " Because column masks are applied after the ", "bbox": {"l": 326.52017, "t": 123.52855999999997, "r": 529.25281, "b": 132.74158, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "query final results are determined, the masked value has no effect on the join processing ", "bbox": {"l": 142.8, "t": 135.52837999999997, "r": 537.63239, "b": 144.74139000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "and corresponding query result set.", "bbox": {"l": 142.8, "t": 147.52819999999997, "r": 299.81543, "b": 156.74121000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Effect of column masks on inner joins: Because column masks are applied after the query final results are determined, the masked value has no effect on the join processing and corresponding query result set."}, {"label": "picture", "id": 5, "page_no": 110, "cluster": {"id": 5, "label": "picture", "bbox": {"l": 136.01914978027344, "t": 183.2970428466797, "r": 483.0831298828125, "b": 421.65618896484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9844624996185303, "cells": [{"id": 10, "text": "Outer Join with RCAC Permission", "bbox": {"l": 217.42469999999997, "t": 186.37725999999998, "r": 429.09708, "b": 199.98357999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Permitted", "bbox": {"l": 321.53659, "t": 269.08660999999995, "r": 395.05688, "b": 285.10199, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Set A", "bbox": {"l": 247.25200000000004, "t": 398.64859, "r": 285.64417, "b": 413.98325, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Set B", "bbox": {"l": 358.10394, "t": 398.64859, "r": 395.73117, "b": 413.98325, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 110, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.9468994140625, "t": 70.65094757080078, "r": 535.29822, "b": 104.91271209716797, "coord_origin": "TOPLEFT"}, "confidence": 0.9831045269966125, "cells": [{"id": 2, "text": "Given that row permission serves to eliminate logically rows from one or more sets, more ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 531.78638, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "column values that are returned from the secondary table in outer join can be NULL when ", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 535.29822, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "RCAC is applied, as shown in Figure 6-11.", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 324.68701, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Given that row permission serves to eliminate logically rows from one or more sets, more column values that are returned from the secondary table in outer join can be NULL when RCAC is applied, as shown in Figure 6-11."}, {"label": "caption", "id": 3, "page_no": 110, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.94920349121094, "t": 424.67193603515625, "r": 321.8890380859375, "b": 434.1568603515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9448755383491516, "cells": [{"id": 5, "text": "Figure 6-11 Outer join with RCAC permission", "bbox": {"l": 136.8, "t": 425.478, "r": 321.55734, "b": 433.80301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-11 Outer join with RCAC permission"}, {"label": "text", "id": 4, "page_no": 110, "cluster": {"id": 4, "label": "text", "bbox": {"l": 142.19854736328125, "t": 122.269287109375, "r": 537.63239, "b": 157.0519561767578, "coord_origin": "TOPLEFT"}, "confidence": 0.968166708946228, "cells": [{"id": 6, "text": "Effect of column masks on inner joins:", "bbox": {"l": 142.8, "t": 123.52855999999997, "r": 326.52615, "b": 132.74158, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " Because column masks are applied after the ", "bbox": {"l": 326.52017, "t": 123.52855999999997, "r": 529.25281, "b": 132.74158, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "query final results are determined, the masked value has no effect on the join processing ", "bbox": {"l": 142.8, "t": 135.52837999999997, "r": 537.63239, "b": 144.74139000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "and corresponding query result set.", "bbox": {"l": 142.8, "t": 147.52819999999997, "r": 299.81543, "b": 156.74121000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Effect of column masks on inner joins: Because column masks are applied after the query final results are determined, the masked value has no effect on the join processing and corresponding query result set."}, {"label": "picture", "id": 5, "page_no": 110, "cluster": {"id": 5, "label": "picture", "bbox": {"l": 136.01914978027344, "t": 183.2970428466797, "r": 483.0831298828125, "b": 421.65618896484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9844624996185303, "cells": [{"id": 10, "text": "Outer Join with RCAC Permission", "bbox": {"l": 217.42469999999997, "t": 186.37725999999998, "r": 429.09708, "b": 199.98357999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Permitted", "bbox": {"l": 321.53659, "t": 269.08660999999995, "r": 395.05688, "b": 285.10199, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Set A", "bbox": {"l": 247.25200000000004, "t": 398.64859, "r": 285.64417, "b": 413.98325, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Set B", "bbox": {"l": 358.10394, "t": 398.64859, "r": 395.73117, "b": 413.98325, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 110, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 376.03192138671875, "t": 754.89306640625, "r": 523.62878, "b": 764.0955810546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9518811702728271, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 110, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.5347900390625, "t": 754.2847900390625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9189174175262451, "cells": [{"id": 1, "text": "95", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "95"}]}}, {"page_no": 111, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "96 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "6.3.3", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 94.481644, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Exception joins", "bbox": {"l": 98.191849, "t": 71.33471999999995, "r": 196.83258, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Exception joins preserve one side of two data sets. A row can be returned from the exception ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 547.29144, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "join query if it appears in the primary set (LEFT or RIGHT) and the row does not appear in the ", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 547.1618, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "secondary set, as shown in Figure 6-12. Column values from the secondary set are returned ", "bbox": {"l": 136.8, "t": 121.48834000000011, "r": 547.28455, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "as NULL by default.", "bbox": {"l": 136.8, "t": 133.48816, "r": 224.03667, "b": 142.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Figure 6-12 Exception join without RCAC permission", "bbox": {"l": 136.8, "t": 398.23801, "r": 351.00632, "b": 406.56302, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Given that row permission serves to eliminate logically rows from one or more sets, more ", "bbox": {"l": 136.8, "t": 424.24872, "r": 531.78979, "b": 433.4617, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "rows can appear to be exceptions when RCAC is applied, as shown in Figure 6-13. Also, ", "bbox": {"l": 136.8, "t": 436.24854, "r": 530.54565, "b": 445.46151999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "because column masks are applied after the query final results are determined, the masked ", "bbox": {"l": 136.8, "t": 448.2483500000001, "r": 544.33844, "b": 457.46133, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "value has no effect on the join processing and corresponding query result set.", "bbox": {"l": 136.8, "t": 460.24817, "r": 480.02267000000006, "b": 469.46115, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Figure 6-13 Exception join with RCAC permission", "bbox": {"l": 136.8, "t": 722.958, "r": 338.56827, "b": 731.282997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Exception Join without RCAC Permission", "bbox": {"l": 191.03551, "t": 156.67548, "r": 450.43784, "b": 170.29900999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Set A", "bbox": {"l": 244.7269, "t": 369.21613, "r": 283.16766, "b": 384.57019, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Set B", "bbox": {"l": 355.71924, "t": 369.21613, "r": 393.3941, "b": 384.57019, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Exception Join with RCAC Permission", "bbox": {"l": 206.02071, "t": 484.02805, "r": 443.83853, "b": 497.68188, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Permitted", "bbox": {"l": 323.2894, "t": 567.02611, "r": 397.06619, "b": 583.09737, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Set A", "bbox": {"l": 248.74560999999997, "t": 697.040131, "r": 287.2717, "b": 712.428268, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Set B", "bbox": {"l": 359.98425, "t": 697.040131, "r": 397.74274, "b": 712.428268, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.0777587890625, "t": 754.3192749023438, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9142870903015137, "cells": [{"id": 0, "text": "96 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.31871032714844, "t": 754.6510620117188, "r": 334.42142, "b": 763.94580078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9500807523727417, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.29151153564453, "t": 70.38421630859375, "r": 196.83258, "b": 83.45001983642578, "coord_origin": "TOPLEFT"}, "confidence": 0.9660816788673401, "cells": [{"id": 2, "text": "6.3.3", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 94.481644, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Exception joins", "bbox": {"l": 98.191849, "t": 71.33471999999995, "r": 196.83258, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.8982696533203, "t": 96.56317138671875, "r": 547.29144, "b": 143.43101501464844, "coord_origin": "TOPLEFT"}, "confidence": 0.9861393570899963, "cells": [{"id": 4, "text": "Exception joins preserve one side of two data sets. A row can be returned from the exception ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 547.29144, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "join query if it appears in the primary set (LEFT or RIGHT) and the row does not appear in the ", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 547.1618, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "secondary set, as shown in Figure 6-12. Column values from the secondary set are returned ", "bbox": {"l": 136.8, "t": 121.48834000000011, "r": 547.28455, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "as NULL by default.", "bbox": {"l": 136.8, "t": 133.48816, "r": 224.03667, "b": 142.70117000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "caption", "bbox": {"l": 135.93870544433594, "t": 397.3731689453125, "r": 351.4439392089844, "b": 406.8922424316406, "coord_origin": "TOPLEFT"}, "confidence": 0.9481934905052185, "cells": [{"id": 8, "text": "Figure 6-12 Exception join without RCAC permission", "bbox": {"l": 136.8, "t": 398.23801, "r": 351.00632, "b": 406.56302, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.85084533691406, "t": 423.3223876953125, "r": 544.33844, "b": 469.4621276855469, "coord_origin": "TOPLEFT"}, "confidence": 0.9827116131782532, "cells": [{"id": 9, "text": "Given that row permission serves to eliminate logically rows from one or more sets, more ", "bbox": {"l": 136.8, "t": 424.24872, "r": 531.78979, "b": 433.4617, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "rows can appear to be exceptions when RCAC is applied, as shown in Figure 6-13. Also, ", "bbox": {"l": 136.8, "t": 436.24854, "r": 530.54565, "b": 445.46151999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "because column masks are applied after the query final results are determined, the masked ", "bbox": {"l": 136.8, "t": 448.2483500000001, "r": 544.33844, "b": 457.46133, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "value has no effect on the join processing and corresponding query result set.", "bbox": {"l": 136.8, "t": 460.24817, "r": 480.02267000000006, "b": 469.46115, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "caption", "bbox": {"l": 136.105224609375, "t": 721.96630859375, "r": 339.2431945800781, "b": 731.4581298828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9437704086303711, "cells": [{"id": 13, "text": "Figure 6-13 Exception join with RCAC permission", "bbox": {"l": 136.8, "t": 722.958, "r": 338.56827, "b": 731.282997, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "picture", "bbox": {"l": 136.2607879638672, "t": 156.67548, "r": 484.0173034667969, "b": 394.3146667480469, "coord_origin": "TOPLEFT"}, "confidence": 0.9834190607070923, "cells": [{"id": 14, "text": "Exception Join without RCAC Permission", "bbox": {"l": 191.03551, "t": 156.67548, "r": 450.43784, "b": 170.29900999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Set A", "bbox": {"l": 244.7269, "t": 369.21613, "r": 283.16766, "b": 384.57019, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Set B", "bbox": {"l": 355.71924, "t": 369.21613, "r": 393.3941, "b": 384.57019, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 135.89076232910156, "t": 484.02805, "r": 485.4429931640625, "b": 719.3485717773438, "coord_origin": "TOPLEFT"}, "confidence": 0.9840064644813538, "cells": [{"id": 17, "text": "Exception Join with RCAC Permission", "bbox": {"l": 206.02071, "t": 484.02805, "r": 443.83853, "b": 497.68188, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Permitted", "bbox": {"l": 323.2894, "t": 567.02611, "r": 397.06619, "b": 583.09737, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Set A", "bbox": {"l": 248.74560999999997, "t": 697.040131, "r": 287.2717, "b": 712.428268, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Set B", "bbox": {"l": 359.98425, "t": 697.040131, "r": 397.74274, "b": 712.428268, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 111, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.0777587890625, "t": 754.3192749023438, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9142870903015137, "cells": [{"id": 0, "text": "96 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "96"}, {"label": "page_footer", "id": 1, "page_no": 111, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.31871032714844, "t": 754.6510620117188, "r": 334.42142, "b": 763.94580078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9500807523727417, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "section_header", "id": 2, "page_no": 111, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.29151153564453, "t": 70.38421630859375, "r": 196.83258, "b": 83.45001983642578, "coord_origin": "TOPLEFT"}, "confidence": 0.9660816788673401, "cells": [{"id": 2, "text": "6.3.3", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 94.481644, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Exception joins", "bbox": {"l": 98.191849, "t": 71.33471999999995, "r": 196.83258, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "6.3.3 Exception joins"}, {"label": "text", "id": 3, "page_no": 111, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.8982696533203, "t": 96.56317138671875, "r": 547.29144, "b": 143.43101501464844, "coord_origin": "TOPLEFT"}, "confidence": 0.9861393570899963, "cells": [{"id": 4, "text": "Exception joins preserve one side of two data sets. A row can be returned from the exception ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 547.29144, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "join query if it appears in the primary set (LEFT or RIGHT) and the row does not appear in the ", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 547.1618, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "secondary set, as shown in Figure 6-12. Column values from the secondary set are returned ", "bbox": {"l": 136.8, "t": 121.48834000000011, "r": 547.28455, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "as NULL by default.", "bbox": {"l": 136.8, "t": 133.48816, "r": 224.03667, "b": 142.70117000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Exception joins preserve one side of two data sets. A row can be returned from the exception join query if it appears in the primary set (LEFT or RIGHT) and the row does not appear in the secondary set, as shown in Figure 6-12. Column values from the secondary set are returned as NULL by default."}, {"label": "caption", "id": 4, "page_no": 111, "cluster": {"id": 4, "label": "caption", "bbox": {"l": 135.93870544433594, "t": 397.3731689453125, "r": 351.4439392089844, "b": 406.8922424316406, "coord_origin": "TOPLEFT"}, "confidence": 0.9481934905052185, "cells": [{"id": 8, "text": "Figure 6-12 Exception join without RCAC permission", "bbox": {"l": 136.8, "t": 398.23801, "r": 351.00632, "b": 406.56302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-12 Exception join without RCAC permission"}, {"label": "text", "id": 5, "page_no": 111, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.85084533691406, "t": 423.3223876953125, "r": 544.33844, "b": 469.4621276855469, "coord_origin": "TOPLEFT"}, "confidence": 0.9827116131782532, "cells": [{"id": 9, "text": "Given that row permission serves to eliminate logically rows from one or more sets, more ", "bbox": {"l": 136.8, "t": 424.24872, "r": 531.78979, "b": 433.4617, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "rows can appear to be exceptions when RCAC is applied, as shown in Figure 6-13. Also, ", "bbox": {"l": 136.8, "t": 436.24854, "r": 530.54565, "b": 445.46151999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "because column masks are applied after the query final results are determined, the masked ", "bbox": {"l": 136.8, "t": 448.2483500000001, "r": 544.33844, "b": 457.46133, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "value has no effect on the join processing and corresponding query result set.", "bbox": {"l": 136.8, "t": 460.24817, "r": 480.02267000000006, "b": 469.46115, "coord_origin": "TOPLEFT"}}]}, "text": "Given that row permission serves to eliminate logically rows from one or more sets, more rows can appear to be exceptions when RCAC is applied, as shown in Figure 6-13. Also, because column masks are applied after the query final results are determined, the masked value has no effect on the join processing and corresponding query result set."}, {"label": "caption", "id": 6, "page_no": 111, "cluster": {"id": 6, "label": "caption", "bbox": {"l": 136.105224609375, "t": 721.96630859375, "r": 339.2431945800781, "b": 731.4581298828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9437704086303711, "cells": [{"id": 13, "text": "Figure 6-13 Exception join with RCAC permission", "bbox": {"l": 136.8, "t": 722.958, "r": 338.56827, "b": 731.282997, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-13 Exception join with RCAC permission"}, {"label": "picture", "id": 7, "page_no": 111, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 136.2607879638672, "t": 156.67548, "r": 484.0173034667969, "b": 394.3146667480469, "coord_origin": "TOPLEFT"}, "confidence": 0.9834190607070923, "cells": [{"id": 14, "text": "Exception Join without RCAC Permission", "bbox": {"l": 191.03551, "t": 156.67548, "r": 450.43784, "b": 170.29900999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Set A", "bbox": {"l": 244.7269, "t": 369.21613, "r": 283.16766, "b": 384.57019, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Set B", "bbox": {"l": 355.71924, "t": 369.21613, "r": 393.3941, "b": 384.57019, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 8, "page_no": 111, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 135.89076232910156, "t": 484.02805, "r": 485.4429931640625, "b": 719.3485717773438, "coord_origin": "TOPLEFT"}, "confidence": 0.9840064644813538, "cells": [{"id": 17, "text": "Exception Join with RCAC Permission", "bbox": {"l": 206.02071, "t": 484.02805, "r": 443.83853, "b": 497.68188, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Permitted", "bbox": {"l": 323.2894, "t": 567.02611, "r": 397.06619, "b": 583.09737, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Set A", "bbox": {"l": 248.74560999999997, "t": 697.040131, "r": 287.2717, "b": 712.428268, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Set B", "bbox": {"l": 359.98425, "t": 697.040131, "r": 397.74274, "b": 712.428268, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "section_header", "id": 2, "page_no": 111, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.29151153564453, "t": 70.38421630859375, "r": 196.83258, "b": 83.45001983642578, "coord_origin": "TOPLEFT"}, "confidence": 0.9660816788673401, "cells": [{"id": 2, "text": "6.3.3", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 94.481644, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Exception joins", "bbox": {"l": 98.191849, "t": 71.33471999999995, "r": 196.83258, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "6.3.3 Exception joins"}, {"label": "text", "id": 3, "page_no": 111, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.8982696533203, "t": 96.56317138671875, "r": 547.29144, "b": 143.43101501464844, "coord_origin": "TOPLEFT"}, "confidence": 0.9861393570899963, "cells": [{"id": 4, "text": "Exception joins preserve one side of two data sets. A row can be returned from the exception ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 547.29144, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "join query if it appears in the primary set (LEFT or RIGHT) and the row does not appear in the ", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 547.1618, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "secondary set, as shown in Figure 6-12. Column values from the secondary set are returned ", "bbox": {"l": 136.8, "t": 121.48834000000011, "r": 547.28455, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "as NULL by default.", "bbox": {"l": 136.8, "t": 133.48816, "r": 224.03667, "b": 142.70117000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Exception joins preserve one side of two data sets. A row can be returned from the exception join query if it appears in the primary set (LEFT or RIGHT) and the row does not appear in the secondary set, as shown in Figure 6-12. Column values from the secondary set are returned as NULL by default."}, {"label": "caption", "id": 4, "page_no": 111, "cluster": {"id": 4, "label": "caption", "bbox": {"l": 135.93870544433594, "t": 397.3731689453125, "r": 351.4439392089844, "b": 406.8922424316406, "coord_origin": "TOPLEFT"}, "confidence": 0.9481934905052185, "cells": [{"id": 8, "text": "Figure 6-12 Exception join without RCAC permission", "bbox": {"l": 136.8, "t": 398.23801, "r": 351.00632, "b": 406.56302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-12 Exception join without RCAC permission"}, {"label": "text", "id": 5, "page_no": 111, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.85084533691406, "t": 423.3223876953125, "r": 544.33844, "b": 469.4621276855469, "coord_origin": "TOPLEFT"}, "confidence": 0.9827116131782532, "cells": [{"id": 9, "text": "Given that row permission serves to eliminate logically rows from one or more sets, more ", "bbox": {"l": 136.8, "t": 424.24872, "r": 531.78979, "b": 433.4617, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "rows can appear to be exceptions when RCAC is applied, as shown in Figure 6-13. Also, ", "bbox": {"l": 136.8, "t": 436.24854, "r": 530.54565, "b": 445.46151999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "because column masks are applied after the query final results are determined, the masked ", "bbox": {"l": 136.8, "t": 448.2483500000001, "r": 544.33844, "b": 457.46133, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "value has no effect on the join processing and corresponding query result set.", "bbox": {"l": 136.8, "t": 460.24817, "r": 480.02267000000006, "b": 469.46115, "coord_origin": "TOPLEFT"}}]}, "text": "Given that row permission serves to eliminate logically rows from one or more sets, more rows can appear to be exceptions when RCAC is applied, as shown in Figure 6-13. Also, because column masks are applied after the query final results are determined, the masked value has no effect on the join processing and corresponding query result set."}, {"label": "caption", "id": 6, "page_no": 111, "cluster": {"id": 6, "label": "caption", "bbox": {"l": 136.105224609375, "t": 721.96630859375, "r": 339.2431945800781, "b": 731.4581298828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9437704086303711, "cells": [{"id": 13, "text": "Figure 6-13 Exception join with RCAC permission", "bbox": {"l": 136.8, "t": 722.958, "r": 338.56827, "b": 731.282997, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-13 Exception join with RCAC permission"}, {"label": "picture", "id": 7, "page_no": 111, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 136.2607879638672, "t": 156.67548, "r": 484.0173034667969, "b": 394.3146667480469, "coord_origin": "TOPLEFT"}, "confidence": 0.9834190607070923, "cells": [{"id": 14, "text": "Exception Join without RCAC Permission", "bbox": {"l": 191.03551, "t": 156.67548, "r": 450.43784, "b": 170.29900999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Set A", "bbox": {"l": 244.7269, "t": 369.21613, "r": 283.16766, "b": 384.57019, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Set B", "bbox": {"l": 355.71924, "t": 369.21613, "r": 393.3941, "b": 384.57019, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 8, "page_no": 111, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 135.89076232910156, "t": 484.02805, "r": 485.4429931640625, "b": 719.3485717773438, "coord_origin": "TOPLEFT"}, "confidence": 0.9840064644813538, "cells": [{"id": 17, "text": "Exception Join with RCAC Permission", "bbox": {"l": 206.02071, "t": 484.02805, "r": 443.83853, "b": 497.68188, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Permitted", "bbox": {"l": 323.2894, "t": 567.02611, "r": 397.06619, "b": 583.09737, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Set A", "bbox": {"l": 248.74560999999997, "t": 697.040131, "r": 287.2717, "b": 712.428268, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Set B", "bbox": {"l": 359.98425, "t": 697.040131, "r": 397.74274, "b": 712.428268, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 111, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.0777587890625, "t": 754.3192749023438, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9142870903015137, "cells": [{"id": 0, "text": "96 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "96"}, {"label": "page_footer", "id": 1, "page_no": 111, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.31871032714844, "t": 754.6510620117188, "r": 334.42142, "b": 763.94580078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9500807523727417, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 112, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "97", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "6.4", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 87.197906, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Monitoring, analyzing, and debugging with RCAC", "bbox": {"l": 91.677475, "t": 71.22069999999997, "r": 469.47693, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "It is assumed (and it is a critical success factor) that the database engineer or application ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 532.22595, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "developer has a thorough understanding of the DB2 for i Query Optimizer, Database Engine, ", "bbox": {"l": 136.8, "t": 115.48852999999997, "r": 547.22473, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "and all the associated tools and techniques.", "bbox": {"l": 136.8, "t": 127.48834000000011, "r": 330.59174, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "The monitoring, analyzing, and debugging process basically stays the same when RCAC row ", "bbox": {"l": 136.8, "t": 149.50793, "r": 547.19684, "b": 158.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "permissions or column masks are in place, with a few important differences:", "bbox": {"l": 136.8, "t": 161.50775, "r": 471.66223, "b": 170.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 178.63696000000004, "r": 141.78, "b": 187.41174, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "The underlying data access plan can be different and more complex based on the rule ", "bbox": {"l": 151.20016, "t": 178.48755000000006, "r": 534.25262, "b": 187.70056, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "text.", "bbox": {"l": 151.20016, "t": 190.48737000000006, "r": 169.73871, "b": 199.70038, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "GLYPH", "bbox": {"l": 136.8, "t": 207.67633, "r": 141.78, "b": 216.45110999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "The database results can be reduced or modified based on the rule text and user profile.", "bbox": {"l": 151.20016, "t": 207.52692000000002, "r": 541.55432, "b": 216.73992999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "GLYPH", "bbox": {"l": 136.8, "t": 224.65612999999996, "r": 141.78, "b": 233.43091000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "The run time of the request can be affected either positively or negatively based on the ", "bbox": {"l": 151.20016, "t": 224.50671, "r": 536.04651, "b": 233.71973000000003, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "rule text.", "bbox": {"l": 151.20016, "t": 236.50653, "r": 189.53125, "b": 245.71954000000005, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "GLYPH", "bbox": {"l": 136.8, "t": 253.63574000000006, "r": 141.78, "b": 262.41052, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "For high-level language record level access, query plans must be considered, and not just ", "bbox": {"l": 151.20016, "t": 253.48632999999995, "r": 547.22461, "b": 262.69934, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "program code.", "bbox": {"l": 151.20016, "t": 265.48614999999995, "r": 215.34057999999996, "b": 274.69916, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "During analyzing and debugging, it is important to account for all of the RCAC definitions for ", "bbox": {"l": 136.8, "t": 287.50574, "r": 544.67383, "b": 296.71871999999996, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "each table or file to understand the logic and corresponding work that is associated with ", "bbox": {"l": 136.8, "t": 299.5055500000001, "r": 526.74591, "b": 308.7185400000001, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "processing the row permissions and column masks. It is also important to realize that, ", "bbox": {"l": 136.8, "t": 311.50537, "r": 517.995, "b": 320.71835, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "depending on the user profile in effect at run time, the database actions and query results can ", "bbox": {"l": 136.8, "t": 323.50519, "r": 547.22968, "b": 332.71816999999993, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "be different.", "bbox": {"l": 136.8, "t": 335.50500000000005, "r": 189.23442, "b": 344.71799000000004, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "RCAC is designed and implemented to be transparent to the user. It is possible for user ", "bbox": {"l": 136.8, "t": 357.52457, "r": 524.91028, "b": 366.73755, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "\u201cMike\u201d and user \u201cHernando\u201d to run the exact same query, against the exact same data on the ", "bbox": {"l": 136.8, "t": 369.52438, "r": 547.27863, "b": 378.73737, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "exact same system, and get different result sets. There is no error, no warning, and no ", "bbox": {"l": 136.8, "t": 381.5242, "r": 520.1225, "b": 390.73718, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "indication that RCAC reduced or modified the respective answers that are returned. ", "bbox": {"l": 136.8, "t": 393.52401999999995, "r": 507.29110999999995, "b": 402.737, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Furthermore, it is also likely that user \u201cMike\u201d and user \u201cHernando\u201d have different query run ", "bbox": {"l": 136.8, "t": 405.52383, "r": 536.83752, "b": 414.73682, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "times even though it appears that everything is the same for both users. The actual query ", "bbox": {"l": 136.8, "t": 417.52365, "r": 533.12726, "b": 426.73663, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "plan contains the RCAC logic, and this additional code path can alter the amount of work that ", "bbox": {"l": 136.8, "t": 429.5234699999999, "r": 547.22693, "b": 438.73645, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "is needed to produce results, based on the user running the query.", "bbox": {"l": 136.80002, "t": 441.52328, "r": 430.67883, "b": 450.73627, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "When monitoring, analyzing, and debugging a database process when RCAC is enabled, it is ", "bbox": {"l": 136.80002, "t": 463.48309, "r": 547.32837, "b": 472.69608, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "critical to keep as many of the \u201cvariables\u201d the same as possible. Use a good scientific ", "bbox": {"l": 136.80002, "t": 475.48291, "r": 514.85553, "b": 484.69589, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "process. For example, when re-creating a problem situation running under the same user ", "bbox": {"l": 136.80002, "t": 487.54248, "r": 532.38837, "b": 496.75546, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "profile with the same data and under the same conditions, it is almost mandatory. Otherwise, ", "bbox": {"l": 136.80002, "t": 499.5423, "r": 547.29474, "b": 508.75528, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "the database behavior and query results can be different.", "bbox": {"l": 136.80002, "t": 511.54211, "r": 389.40143, "b": 520.7551000000001, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "To successfully perform monitoring, analyzing, and debugging when RCAC is enabled likely ", "bbox": {"l": 136.80002, "t": 533.5019199999999, "r": 543.10217, "b": 542.71492, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "involves changes in the security and data access policies of the organization, and require new ", "bbox": {"l": 136.8, "t": 545.50172, "r": 547.25159, "b": 554.71472, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "responsibilities, authority, and oversight within the data-centric application development ", "bbox": {"l": 136.8, "t": 557.50153, "r": 523.1922, "b": 566.71452, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "community. As such, establishing and staffing the position of \u201cdatabase engineer\u201d becomes ", "bbox": {"l": 136.79999, "t": 569.50133, "r": 541.04547, "b": 578.71432, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "even more important.", "bbox": {"l": 136.79999, "t": 581.50113, "r": 231.05352999999997, "b": 590.7141300000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "6.4.1", "bbox": {"l": 64.800003, "t": 611.39471, "r": 94.078636, "b": 623.3827200000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Query monitoring and analysis tools", "bbox": {"l": 97.738449, "t": 611.39471, "r": 325.99066, "b": 623.3827200000001, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "When monitoring and collecting metrics on database requests, DB2 for i provides additional ", "bbox": {"l": 136.8, "t": 637.54872, "r": 543.20374, "b": 646.76172, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "information that indicates row permissions or column masks are being applied. This ", "bbox": {"l": 136.8, "t": 649.54852, "r": 507.93053999999995, "b": 658.76152, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "information is integrated and part of the standard tools, such as Visual Explain, SQL Plan ", "bbox": {"l": 136.8, "t": 661.54832, "r": 532.96576, "b": 670.76133, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "Cache Snapshot, and SQL Performance Monitor.", "bbox": {"l": 136.8, "t": 673.54813, "r": 353.58246, "b": 682.76114, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 376.0887756347656, "t": 754.9174194335938, "r": 523.62878, "b": 764.0950927734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9518945813179016, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.5423583984375, "t": 754.1775512695312, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9179106950759888, "cells": [{"id": 1, "text": "97", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.39301300048828, "t": 69.98062896728516, "r": 469.47693, "b": 86.35014343261719, "coord_origin": "TOPLEFT"}, "confidence": 0.9647093415260315, "cells": [{"id": 2, "text": "6.4", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 87.197906, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Monitoring, analyzing, and debugging with RCAC", "bbox": {"l": 91.677475, "t": 71.22069999999997, "r": 469.47693, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.89646911621094, "t": 102.54719543457031, "r": 547.22473, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9837515950202942, "cells": [{"id": 4, "text": "It is assumed (and it is a critical success factor) that the database engineer or application ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 532.22595, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "developer has a thorough understanding of the DB2 for i Query Optimizer, Database Engine, ", "bbox": {"l": 136.8, "t": 115.48852999999997, "r": 547.22473, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "and all the associated tools and techniques.", "bbox": {"l": 136.8, "t": 127.48834000000011, "r": 330.59174, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.66171264648438, "t": 148.67874145507812, "r": 547.19684, "b": 170.99827575683594, "coord_origin": "TOPLEFT"}, "confidence": 0.9781493544578552, "cells": [{"id": 7, "text": "The monitoring, analyzing, and debugging process basically stays the same when RCAC row ", "bbox": {"l": 136.8, "t": 149.50793, "r": 547.19684, "b": 158.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "permissions or column masks are in place, with a few important differences:", "bbox": {"l": 136.8, "t": 161.50775, "r": 471.66223, "b": 170.72076000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 135.6549530029297, "t": 177.3022918701172, "r": 534.25262, "b": 199.70038, "coord_origin": "TOPLEFT"}, "confidence": 0.9730353951454163, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 178.63696000000004, "r": 141.78, "b": 187.41174, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "The underlying data access plan can be different and more complex based on the rule ", "bbox": {"l": 151.20016, "t": 178.48755000000006, "r": 534.25262, "b": 187.70056, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "text.", "bbox": {"l": 151.20016, "t": 190.48737000000006, "r": 169.73871, "b": 199.70038, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.5695037841797, "t": 206.69236755371094, "r": 541.55432, "b": 216.73992999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.9567621350288391, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.8, "t": 207.67633, "r": 141.78, "b": 216.45110999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "The database results can be reduced or modified based on the rule text and user profile.", "bbox": {"l": 151.20016, "t": 207.52692000000002, "r": 541.55432, "b": 216.73992999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.70484924316406, "t": 223.55690002441406, "r": 536.04651, "b": 245.71954000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9668188095092773, "cells": [{"id": 14, "text": "GLYPH", "bbox": {"l": 136.8, "t": 224.65612999999996, "r": 141.78, "b": 233.43091000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "The run time of the request can be affected either positively or negatively based on the ", "bbox": {"l": 151.20016, "t": 224.50671, "r": 536.04651, "b": 233.71973000000003, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "rule text.", "bbox": {"l": 151.20016, "t": 236.50653, "r": 189.53125, "b": 245.71954000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.6377410888672, "t": 252.64540100097656, "r": 547.22461, "b": 275.0115051269531, "coord_origin": "TOPLEFT"}, "confidence": 0.9790591597557068, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.8, "t": 253.63574000000006, "r": 141.78, "b": 262.41052, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "For high-level language record level access, query plans must be considered, and not just ", "bbox": {"l": 151.20016, "t": 253.48632999999995, "r": 547.22461, "b": 262.69934, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "program code.", "bbox": {"l": 151.20016, "t": 265.48614999999995, "r": 215.34057999999996, "b": 274.69916, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 135.7350311279297, "t": 286.7269287109375, "r": 547.22968, "b": 344.71799000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9875780940055847, "cells": [{"id": 20, "text": "During analyzing and debugging, it is important to account for all of the RCAC definitions for ", "bbox": {"l": 136.8, "t": 287.50574, "r": 544.67383, "b": 296.71871999999996, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "each table or file to understand the logic and corresponding work that is associated with ", "bbox": {"l": 136.8, "t": 299.5055500000001, "r": 526.74591, "b": 308.7185400000001, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "processing the row permissions and column masks. It is also important to realize that, ", "bbox": {"l": 136.8, "t": 311.50537, "r": 517.995, "b": 320.71835, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "depending on the user profile in effect at run time, the database actions and query results can ", "bbox": {"l": 136.8, "t": 323.50519, "r": 547.22968, "b": 332.71816999999993, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "be different.", "bbox": {"l": 136.8, "t": 335.50500000000005, "r": 189.23442, "b": 344.71799000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 136.05958557128906, "t": 356.62713623046875, "r": 547.27863, "b": 451.1844177246094, "coord_origin": "TOPLEFT"}, "confidence": 0.9875933527946472, "cells": [{"id": 25, "text": "RCAC is designed and implemented to be transparent to the user. It is possible for user ", "bbox": {"l": 136.8, "t": 357.52457, "r": 524.91028, "b": 366.73755, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "\u201cMike\u201d and user \u201cHernando\u201d to run the exact same query, against the exact same data on the ", "bbox": {"l": 136.8, "t": 369.52438, "r": 547.27863, "b": 378.73737, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "exact same system, and get different result sets. There is no error, no warning, and no ", "bbox": {"l": 136.8, "t": 381.5242, "r": 520.1225, "b": 390.73718, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "indication that RCAC reduced or modified the respective answers that are returned. ", "bbox": {"l": 136.8, "t": 393.52401999999995, "r": 507.29110999999995, "b": 402.737, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Furthermore, it is also likely that user \u201cMike\u201d and user \u201cHernando\u201d have different query run ", "bbox": {"l": 136.8, "t": 405.52383, "r": 536.83752, "b": 414.73682, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "times even though it appears that everything is the same for both users. The actual query ", "bbox": {"l": 136.8, "t": 417.52365, "r": 533.12726, "b": 426.73663, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "plan contains the RCAC logic, and this additional code path can alter the amount of work that ", "bbox": {"l": 136.8, "t": 429.5234699999999, "r": 547.22693, "b": 438.73645, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "is needed to produce results, based on the user running the query.", "bbox": {"l": 136.80002, "t": 441.52328, "r": 430.67883, "b": 450.73627, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 135.9143524169922, "t": 462.9166564941406, "r": 547.32837, "b": 520.765869140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9875532388687134, "cells": [{"id": 33, "text": "When monitoring, analyzing, and debugging a database process when RCAC is enabled, it is ", "bbox": {"l": 136.80002, "t": 463.48309, "r": 547.32837, "b": 472.69608, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "critical to keep as many of the \u201cvariables\u201d the same as possible. Use a good scientific ", "bbox": {"l": 136.80002, "t": 475.48291, "r": 514.85553, "b": 484.69589, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "process. For example, when re-creating a problem situation running under the same user ", "bbox": {"l": 136.80002, "t": 487.54248, "r": 532.38837, "b": 496.75546, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "profile with the same data and under the same conditions, it is almost mandatory. Otherwise, ", "bbox": {"l": 136.80002, "t": 499.5423, "r": 547.29474, "b": 508.75528, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "the database behavior and query results can be different.", "bbox": {"l": 136.80002, "t": 511.54211, "r": 389.40143, "b": 520.7551000000001, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 135.94204711914062, "t": 532.7372436523438, "r": 547.25159, "b": 590.7141300000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9887582063674927, "cells": [{"id": 38, "text": "To successfully perform monitoring, analyzing, and debugging when RCAC is enabled likely ", "bbox": {"l": 136.80002, "t": 533.5019199999999, "r": 543.10217, "b": 542.71492, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "involves changes in the security and data access policies of the organization, and require new ", "bbox": {"l": 136.8, "t": 545.50172, "r": 547.25159, "b": 554.71472, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "responsibilities, authority, and oversight within the data-centric application development ", "bbox": {"l": 136.8, "t": 557.50153, "r": 523.1922, "b": 566.71452, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "community. As such, establishing and staffing the position of \u201cdatabase engineer\u201d becomes ", "bbox": {"l": 136.79999, "t": 569.50133, "r": 541.04547, "b": 578.71432, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "even more important.", "bbox": {"l": 136.79999, "t": 581.50113, "r": 231.05352999999997, "b": 590.7141300000001, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "section_header", "bbox": {"l": 64.17730712890625, "t": 610.3857421875, "r": 325.99066, "b": 623.9208984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9681240320205688, "cells": [{"id": 43, "text": "6.4.1", "bbox": {"l": 64.800003, "t": 611.39471, "r": 94.078636, "b": 623.3827200000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Query monitoring and analysis tools", "bbox": {"l": 97.738449, "t": 611.39471, "r": 325.99066, "b": 623.3827200000001, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "text", "bbox": {"l": 136.0252227783203, "t": 636.5751953125, "r": 543.20374, "b": 682.76114, "coord_origin": "TOPLEFT"}, "confidence": 0.9866449236869812, "cells": [{"id": 45, "text": "When monitoring and collecting metrics on database requests, DB2 for i provides additional ", "bbox": {"l": 136.8, "t": 637.54872, "r": 543.20374, "b": 646.76172, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "information that indicates row permissions or column masks are being applied. This ", "bbox": {"l": 136.8, "t": 649.54852, "r": 507.93053999999995, "b": 658.76152, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "information is integrated and part of the standard tools, such as Visual Explain, SQL Plan ", "bbox": {"l": 136.8, "t": 661.54832, "r": 532.96576, "b": 670.76133, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "Cache Snapshot, and SQL Performance Monitor.", "bbox": {"l": 136.8, "t": 673.54813, "r": 353.58246, "b": 682.76114, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 112, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 376.0887756347656, "t": 754.9174194335938, "r": 523.62878, "b": 764.0950927734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9518945813179016, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 112, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.5423583984375, "t": 754.1775512695312, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9179106950759888, "cells": [{"id": 1, "text": "97", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "97"}, {"label": "section_header", "id": 2, "page_no": 112, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.39301300048828, "t": 69.98062896728516, "r": 469.47693, "b": 86.35014343261719, "coord_origin": "TOPLEFT"}, "confidence": 0.9647093415260315, "cells": [{"id": 2, "text": "6.4", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 87.197906, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Monitoring, analyzing, and debugging with RCAC", "bbox": {"l": 91.677475, "t": 71.22069999999997, "r": 469.47693, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, "text": "6.4 Monitoring, analyzing, and debugging with RCAC"}, {"label": "text", "id": 3, "page_no": 112, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.89646911621094, "t": 102.54719543457031, "r": 547.22473, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9837515950202942, "cells": [{"id": 4, "text": "It is assumed (and it is a critical success factor) that the database engineer or application ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 532.22595, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "developer has a thorough understanding of the DB2 for i Query Optimizer, Database Engine, ", "bbox": {"l": 136.8, "t": 115.48852999999997, "r": 547.22473, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "and all the associated tools and techniques.", "bbox": {"l": 136.8, "t": 127.48834000000011, "r": 330.59174, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}]}, "text": "It is assumed (and it is a critical success factor) that the database engineer or application developer has a thorough understanding of the DB2 for i Query Optimizer, Database Engine, and all the associated tools and techniques."}, {"label": "text", "id": 4, "page_no": 112, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.66171264648438, "t": 148.67874145507812, "r": 547.19684, "b": 170.99827575683594, "coord_origin": "TOPLEFT"}, "confidence": 0.9781493544578552, "cells": [{"id": 7, "text": "The monitoring, analyzing, and debugging process basically stays the same when RCAC row ", "bbox": {"l": 136.8, "t": 149.50793, "r": 547.19684, "b": 158.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "permissions or column masks are in place, with a few important differences:", "bbox": {"l": 136.8, "t": 161.50775, "r": 471.66223, "b": 170.72076000000004, "coord_origin": "TOPLEFT"}}]}, "text": "The monitoring, analyzing, and debugging process basically stays the same when RCAC row permissions or column masks are in place, with a few important differences:"}, {"label": "list_item", "id": 5, "page_no": 112, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.6549530029297, "t": 177.3022918701172, "r": 534.25262, "b": 199.70038, "coord_origin": "TOPLEFT"}, "confidence": 0.9730353951454163, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 178.63696000000004, "r": 141.78, "b": 187.41174, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "The underlying data access plan can be different and more complex based on the rule ", "bbox": {"l": 151.20016, "t": 178.48755000000006, "r": 534.25262, "b": 187.70056, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "text.", "bbox": {"l": 151.20016, "t": 190.48737000000006, "r": 169.73871, "b": 199.70038, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The underlying data access plan can be different and more complex based on the rule text."}, {"label": "list_item", "id": 6, "page_no": 112, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.5695037841797, "t": 206.69236755371094, "r": 541.55432, "b": 216.73992999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.9567621350288391, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.8, "t": 207.67633, "r": 141.78, "b": 216.45110999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "The database results can be reduced or modified based on the rule text and user profile.", "bbox": {"l": 151.20016, "t": 207.52692000000002, "r": 541.55432, "b": 216.73992999999996, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The database results can be reduced or modified based on the rule text and user profile."}, {"label": "list_item", "id": 7, "page_no": 112, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.70484924316406, "t": 223.55690002441406, "r": 536.04651, "b": 245.71954000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9668188095092773, "cells": [{"id": 14, "text": "GLYPH", "bbox": {"l": 136.8, "t": 224.65612999999996, "r": 141.78, "b": 233.43091000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "The run time of the request can be affected either positively or negatively based on the ", "bbox": {"l": 151.20016, "t": 224.50671, "r": 536.04651, "b": 233.71973000000003, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "rule text.", "bbox": {"l": 151.20016, "t": 236.50653, "r": 189.53125, "b": 245.71954000000005, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The run time of the request can be affected either positively or negatively based on the rule text."}, {"label": "list_item", "id": 8, "page_no": 112, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.6377410888672, "t": 252.64540100097656, "r": 547.22461, "b": 275.0115051269531, "coord_origin": "TOPLEFT"}, "confidence": 0.9790591597557068, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.8, "t": 253.63574000000006, "r": 141.78, "b": 262.41052, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "For high-level language record level access, query plans must be considered, and not just ", "bbox": {"l": 151.20016, "t": 253.48632999999995, "r": 547.22461, "b": 262.69934, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "program code.", "bbox": {"l": 151.20016, "t": 265.48614999999995, "r": 215.34057999999996, "b": 274.69916, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH For high-level language record level access, query plans must be considered, and not just program code."}, {"label": "text", "id": 9, "page_no": 112, "cluster": {"id": 9, "label": "text", "bbox": {"l": 135.7350311279297, "t": 286.7269287109375, "r": 547.22968, "b": 344.71799000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9875780940055847, "cells": [{"id": 20, "text": "During analyzing and debugging, it is important to account for all of the RCAC definitions for ", "bbox": {"l": 136.8, "t": 287.50574, "r": 544.67383, "b": 296.71871999999996, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "each table or file to understand the logic and corresponding work that is associated with ", "bbox": {"l": 136.8, "t": 299.5055500000001, "r": 526.74591, "b": 308.7185400000001, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "processing the row permissions and column masks. It is also important to realize that, ", "bbox": {"l": 136.8, "t": 311.50537, "r": 517.995, "b": 320.71835, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "depending on the user profile in effect at run time, the database actions and query results can ", "bbox": {"l": 136.8, "t": 323.50519, "r": 547.22968, "b": 332.71816999999993, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "be different.", "bbox": {"l": 136.8, "t": 335.50500000000005, "r": 189.23442, "b": 344.71799000000004, "coord_origin": "TOPLEFT"}}]}, "text": "During analyzing and debugging, it is important to account for all of the RCAC definitions for each table or file to understand the logic and corresponding work that is associated with processing the row permissions and column masks. It is also important to realize that, depending on the user profile in effect at run time, the database actions and query results can be different."}, {"label": "text", "id": 10, "page_no": 112, "cluster": {"id": 10, "label": "text", "bbox": {"l": 136.05958557128906, "t": 356.62713623046875, "r": 547.27863, "b": 451.1844177246094, "coord_origin": "TOPLEFT"}, "confidence": 0.9875933527946472, "cells": [{"id": 25, "text": "RCAC is designed and implemented to be transparent to the user. It is possible for user ", "bbox": {"l": 136.8, "t": 357.52457, "r": 524.91028, "b": 366.73755, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "\u201cMike\u201d and user \u201cHernando\u201d to run the exact same query, against the exact same data on the ", "bbox": {"l": 136.8, "t": 369.52438, "r": 547.27863, "b": 378.73737, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "exact same system, and get different result sets. There is no error, no warning, and no ", "bbox": {"l": 136.8, "t": 381.5242, "r": 520.1225, "b": 390.73718, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "indication that RCAC reduced or modified the respective answers that are returned. ", "bbox": {"l": 136.8, "t": 393.52401999999995, "r": 507.29110999999995, "b": 402.737, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Furthermore, it is also likely that user \u201cMike\u201d and user \u201cHernando\u201d have different query run ", "bbox": {"l": 136.8, "t": 405.52383, "r": 536.83752, "b": 414.73682, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "times even though it appears that everything is the same for both users. The actual query ", "bbox": {"l": 136.8, "t": 417.52365, "r": 533.12726, "b": 426.73663, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "plan contains the RCAC logic, and this additional code path can alter the amount of work that ", "bbox": {"l": 136.8, "t": 429.5234699999999, "r": 547.22693, "b": 438.73645, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "is needed to produce results, based on the user running the query.", "bbox": {"l": 136.80002, "t": 441.52328, "r": 430.67883, "b": 450.73627, "coord_origin": "TOPLEFT"}}]}, "text": "RCAC is designed and implemented to be transparent to the user. It is possible for user \u201cMike\u201d and user \u201cHernando\u201d to run the exact same query, against the exact same data on the exact same system, and get different result sets. There is no error, no warning, and no indication that RCAC reduced or modified the respective answers that are returned. Furthermore, it is also likely that user \u201cMike\u201d and user \u201cHernando\u201d have different query run times even though it appears that everything is the same for both users. The actual query plan contains the RCAC logic, and this additional code path can alter the amount of work that is needed to produce results, based on the user running the query."}, {"label": "text", "id": 11, "page_no": 112, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.9143524169922, "t": 462.9166564941406, "r": 547.32837, "b": 520.765869140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9875532388687134, "cells": [{"id": 33, "text": "When monitoring, analyzing, and debugging a database process when RCAC is enabled, it is ", "bbox": {"l": 136.80002, "t": 463.48309, "r": 547.32837, "b": 472.69608, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "critical to keep as many of the \u201cvariables\u201d the same as possible. Use a good scientific ", "bbox": {"l": 136.80002, "t": 475.48291, "r": 514.85553, "b": 484.69589, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "process. For example, when re-creating a problem situation running under the same user ", "bbox": {"l": 136.80002, "t": 487.54248, "r": 532.38837, "b": 496.75546, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "profile with the same data and under the same conditions, it is almost mandatory. Otherwise, ", "bbox": {"l": 136.80002, "t": 499.5423, "r": 547.29474, "b": 508.75528, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "the database behavior and query results can be different.", "bbox": {"l": 136.80002, "t": 511.54211, "r": 389.40143, "b": 520.7551000000001, "coord_origin": "TOPLEFT"}}]}, "text": "When monitoring, analyzing, and debugging a database process when RCAC is enabled, it is critical to keep as many of the \u201cvariables\u201d the same as possible. Use a good scientific process. For example, when re-creating a problem situation running under the same user profile with the same data and under the same conditions, it is almost mandatory. Otherwise, the database behavior and query results can be different."}, {"label": "text", "id": 12, "page_no": 112, "cluster": {"id": 12, "label": "text", "bbox": {"l": 135.94204711914062, "t": 532.7372436523438, "r": 547.25159, "b": 590.7141300000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9887582063674927, "cells": [{"id": 38, "text": "To successfully perform monitoring, analyzing, and debugging when RCAC is enabled likely ", "bbox": {"l": 136.80002, "t": 533.5019199999999, "r": 543.10217, "b": 542.71492, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "involves changes in the security and data access policies of the organization, and require new ", "bbox": {"l": 136.8, "t": 545.50172, "r": 547.25159, "b": 554.71472, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "responsibilities, authority, and oversight within the data-centric application development ", "bbox": {"l": 136.8, "t": 557.50153, "r": 523.1922, "b": 566.71452, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "community. As such, establishing and staffing the position of \u201cdatabase engineer\u201d becomes ", "bbox": {"l": 136.79999, "t": 569.50133, "r": 541.04547, "b": 578.71432, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "even more important.", "bbox": {"l": 136.79999, "t": 581.50113, "r": 231.05352999999997, "b": 590.7141300000001, "coord_origin": "TOPLEFT"}}]}, "text": "To successfully perform monitoring, analyzing, and debugging when RCAC is enabled likely involves changes in the security and data access policies of the organization, and require new responsibilities, authority, and oversight within the data-centric application development community. As such, establishing and staffing the position of \u201cdatabase engineer\u201d becomes even more important."}, {"label": "section_header", "id": 13, "page_no": 112, "cluster": {"id": 13, "label": "section_header", "bbox": {"l": 64.17730712890625, "t": 610.3857421875, "r": 325.99066, "b": 623.9208984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9681240320205688, "cells": [{"id": 43, "text": "6.4.1", "bbox": {"l": 64.800003, "t": 611.39471, "r": 94.078636, "b": 623.3827200000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Query monitoring and analysis tools", "bbox": {"l": 97.738449, "t": 611.39471, "r": 325.99066, "b": 623.3827200000001, "coord_origin": "TOPLEFT"}}]}, "text": "6.4.1 Query monitoring and analysis tools"}, {"label": "text", "id": 14, "page_no": 112, "cluster": {"id": 14, "label": "text", "bbox": {"l": 136.0252227783203, "t": 636.5751953125, "r": 543.20374, "b": 682.76114, "coord_origin": "TOPLEFT"}, "confidence": 0.9866449236869812, "cells": [{"id": 45, "text": "When monitoring and collecting metrics on database requests, DB2 for i provides additional ", "bbox": {"l": 136.8, "t": 637.54872, "r": 543.20374, "b": 646.76172, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "information that indicates row permissions or column masks are being applied. This ", "bbox": {"l": 136.8, "t": 649.54852, "r": 507.93053999999995, "b": 658.76152, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "information is integrated and part of the standard tools, such as Visual Explain, SQL Plan ", "bbox": {"l": 136.8, "t": 661.54832, "r": 532.96576, "b": 670.76133, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "Cache Snapshot, and SQL Performance Monitor.", "bbox": {"l": 136.8, "t": 673.54813, "r": 353.58246, "b": 682.76114, "coord_origin": "TOPLEFT"}}]}, "text": "When monitoring and collecting metrics on database requests, DB2 for i provides additional information that indicates row permissions or column masks are being applied. This information is integrated and part of the standard tools, such as Visual Explain, SQL Plan Cache Snapshot, and SQL Performance Monitor."}], "body": [{"label": "section_header", "id": 2, "page_no": 112, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.39301300048828, "t": 69.98062896728516, "r": 469.47693, "b": 86.35014343261719, "coord_origin": "TOPLEFT"}, "confidence": 0.9647093415260315, "cells": [{"id": 2, "text": "6.4", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 87.197906, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Monitoring, analyzing, and debugging with RCAC", "bbox": {"l": 91.677475, "t": 71.22069999999997, "r": 469.47693, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, "text": "6.4 Monitoring, analyzing, and debugging with RCAC"}, {"label": "text", "id": 3, "page_no": 112, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.89646911621094, "t": 102.54719543457031, "r": 547.22473, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9837515950202942, "cells": [{"id": 4, "text": "It is assumed (and it is a critical success factor) that the database engineer or application ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 532.22595, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "developer has a thorough understanding of the DB2 for i Query Optimizer, Database Engine, ", "bbox": {"l": 136.8, "t": 115.48852999999997, "r": 547.22473, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "and all the associated tools and techniques.", "bbox": {"l": 136.8, "t": 127.48834000000011, "r": 330.59174, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}]}, "text": "It is assumed (and it is a critical success factor) that the database engineer or application developer has a thorough understanding of the DB2 for i Query Optimizer, Database Engine, and all the associated tools and techniques."}, {"label": "text", "id": 4, "page_no": 112, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.66171264648438, "t": 148.67874145507812, "r": 547.19684, "b": 170.99827575683594, "coord_origin": "TOPLEFT"}, "confidence": 0.9781493544578552, "cells": [{"id": 7, "text": "The monitoring, analyzing, and debugging process basically stays the same when RCAC row ", "bbox": {"l": 136.8, "t": 149.50793, "r": 547.19684, "b": 158.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "permissions or column masks are in place, with a few important differences:", "bbox": {"l": 136.8, "t": 161.50775, "r": 471.66223, "b": 170.72076000000004, "coord_origin": "TOPLEFT"}}]}, "text": "The monitoring, analyzing, and debugging process basically stays the same when RCAC row permissions or column masks are in place, with a few important differences:"}, {"label": "list_item", "id": 5, "page_no": 112, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.6549530029297, "t": 177.3022918701172, "r": 534.25262, "b": 199.70038, "coord_origin": "TOPLEFT"}, "confidence": 0.9730353951454163, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 178.63696000000004, "r": 141.78, "b": 187.41174, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "The underlying data access plan can be different and more complex based on the rule ", "bbox": {"l": 151.20016, "t": 178.48755000000006, "r": 534.25262, "b": 187.70056, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "text.", "bbox": {"l": 151.20016, "t": 190.48737000000006, "r": 169.73871, "b": 199.70038, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The underlying data access plan can be different and more complex based on the rule text."}, {"label": "list_item", "id": 6, "page_no": 112, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.5695037841797, "t": 206.69236755371094, "r": 541.55432, "b": 216.73992999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.9567621350288391, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.8, "t": 207.67633, "r": 141.78, "b": 216.45110999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "The database results can be reduced or modified based on the rule text and user profile.", "bbox": {"l": 151.20016, "t": 207.52692000000002, "r": 541.55432, "b": 216.73992999999996, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The database results can be reduced or modified based on the rule text and user profile."}, {"label": "list_item", "id": 7, "page_no": 112, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.70484924316406, "t": 223.55690002441406, "r": 536.04651, "b": 245.71954000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9668188095092773, "cells": [{"id": 14, "text": "GLYPH", "bbox": {"l": 136.8, "t": 224.65612999999996, "r": 141.78, "b": 233.43091000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "The run time of the request can be affected either positively or negatively based on the ", "bbox": {"l": 151.20016, "t": 224.50671, "r": 536.04651, "b": 233.71973000000003, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "rule text.", "bbox": {"l": 151.20016, "t": 236.50653, "r": 189.53125, "b": 245.71954000000005, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The run time of the request can be affected either positively or negatively based on the rule text."}, {"label": "list_item", "id": 8, "page_no": 112, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.6377410888672, "t": 252.64540100097656, "r": 547.22461, "b": 275.0115051269531, "coord_origin": "TOPLEFT"}, "confidence": 0.9790591597557068, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.8, "t": 253.63574000000006, "r": 141.78, "b": 262.41052, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "For high-level language record level access, query plans must be considered, and not just ", "bbox": {"l": 151.20016, "t": 253.48632999999995, "r": 547.22461, "b": 262.69934, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "program code.", "bbox": {"l": 151.20016, "t": 265.48614999999995, "r": 215.34057999999996, "b": 274.69916, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH For high-level language record level access, query plans must be considered, and not just program code."}, {"label": "text", "id": 9, "page_no": 112, "cluster": {"id": 9, "label": "text", "bbox": {"l": 135.7350311279297, "t": 286.7269287109375, "r": 547.22968, "b": 344.71799000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9875780940055847, "cells": [{"id": 20, "text": "During analyzing and debugging, it is important to account for all of the RCAC definitions for ", "bbox": {"l": 136.8, "t": 287.50574, "r": 544.67383, "b": 296.71871999999996, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "each table or file to understand the logic and corresponding work that is associated with ", "bbox": {"l": 136.8, "t": 299.5055500000001, "r": 526.74591, "b": 308.7185400000001, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "processing the row permissions and column masks. It is also important to realize that, ", "bbox": {"l": 136.8, "t": 311.50537, "r": 517.995, "b": 320.71835, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "depending on the user profile in effect at run time, the database actions and query results can ", "bbox": {"l": 136.8, "t": 323.50519, "r": 547.22968, "b": 332.71816999999993, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "be different.", "bbox": {"l": 136.8, "t": 335.50500000000005, "r": 189.23442, "b": 344.71799000000004, "coord_origin": "TOPLEFT"}}]}, "text": "During analyzing and debugging, it is important to account for all of the RCAC definitions for each table or file to understand the logic and corresponding work that is associated with processing the row permissions and column masks. It is also important to realize that, depending on the user profile in effect at run time, the database actions and query results can be different."}, {"label": "text", "id": 10, "page_no": 112, "cluster": {"id": 10, "label": "text", "bbox": {"l": 136.05958557128906, "t": 356.62713623046875, "r": 547.27863, "b": 451.1844177246094, "coord_origin": "TOPLEFT"}, "confidence": 0.9875933527946472, "cells": [{"id": 25, "text": "RCAC is designed and implemented to be transparent to the user. It is possible for user ", "bbox": {"l": 136.8, "t": 357.52457, "r": 524.91028, "b": 366.73755, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "\u201cMike\u201d and user \u201cHernando\u201d to run the exact same query, against the exact same data on the ", "bbox": {"l": 136.8, "t": 369.52438, "r": 547.27863, "b": 378.73737, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "exact same system, and get different result sets. There is no error, no warning, and no ", "bbox": {"l": 136.8, "t": 381.5242, "r": 520.1225, "b": 390.73718, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "indication that RCAC reduced or modified the respective answers that are returned. ", "bbox": {"l": 136.8, "t": 393.52401999999995, "r": 507.29110999999995, "b": 402.737, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Furthermore, it is also likely that user \u201cMike\u201d and user \u201cHernando\u201d have different query run ", "bbox": {"l": 136.8, "t": 405.52383, "r": 536.83752, "b": 414.73682, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "times even though it appears that everything is the same for both users. The actual query ", "bbox": {"l": 136.8, "t": 417.52365, "r": 533.12726, "b": 426.73663, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "plan contains the RCAC logic, and this additional code path can alter the amount of work that ", "bbox": {"l": 136.8, "t": 429.5234699999999, "r": 547.22693, "b": 438.73645, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "is needed to produce results, based on the user running the query.", "bbox": {"l": 136.80002, "t": 441.52328, "r": 430.67883, "b": 450.73627, "coord_origin": "TOPLEFT"}}]}, "text": "RCAC is designed and implemented to be transparent to the user. It is possible for user \u201cMike\u201d and user \u201cHernando\u201d to run the exact same query, against the exact same data on the exact same system, and get different result sets. There is no error, no warning, and no indication that RCAC reduced or modified the respective answers that are returned. Furthermore, it is also likely that user \u201cMike\u201d and user \u201cHernando\u201d have different query run times even though it appears that everything is the same for both users. The actual query plan contains the RCAC logic, and this additional code path can alter the amount of work that is needed to produce results, based on the user running the query."}, {"label": "text", "id": 11, "page_no": 112, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.9143524169922, "t": 462.9166564941406, "r": 547.32837, "b": 520.765869140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9875532388687134, "cells": [{"id": 33, "text": "When monitoring, analyzing, and debugging a database process when RCAC is enabled, it is ", "bbox": {"l": 136.80002, "t": 463.48309, "r": 547.32837, "b": 472.69608, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "critical to keep as many of the \u201cvariables\u201d the same as possible. Use a good scientific ", "bbox": {"l": 136.80002, "t": 475.48291, "r": 514.85553, "b": 484.69589, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "process. For example, when re-creating a problem situation running under the same user ", "bbox": {"l": 136.80002, "t": 487.54248, "r": 532.38837, "b": 496.75546, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "profile with the same data and under the same conditions, it is almost mandatory. Otherwise, ", "bbox": {"l": 136.80002, "t": 499.5423, "r": 547.29474, "b": 508.75528, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "the database behavior and query results can be different.", "bbox": {"l": 136.80002, "t": 511.54211, "r": 389.40143, "b": 520.7551000000001, "coord_origin": "TOPLEFT"}}]}, "text": "When monitoring, analyzing, and debugging a database process when RCAC is enabled, it is critical to keep as many of the \u201cvariables\u201d the same as possible. Use a good scientific process. For example, when re-creating a problem situation running under the same user profile with the same data and under the same conditions, it is almost mandatory. Otherwise, the database behavior and query results can be different."}, {"label": "text", "id": 12, "page_no": 112, "cluster": {"id": 12, "label": "text", "bbox": {"l": 135.94204711914062, "t": 532.7372436523438, "r": 547.25159, "b": 590.7141300000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9887582063674927, "cells": [{"id": 38, "text": "To successfully perform monitoring, analyzing, and debugging when RCAC is enabled likely ", "bbox": {"l": 136.80002, "t": 533.5019199999999, "r": 543.10217, "b": 542.71492, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "involves changes in the security and data access policies of the organization, and require new ", "bbox": {"l": 136.8, "t": 545.50172, "r": 547.25159, "b": 554.71472, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "responsibilities, authority, and oversight within the data-centric application development ", "bbox": {"l": 136.8, "t": 557.50153, "r": 523.1922, "b": 566.71452, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "community. As such, establishing and staffing the position of \u201cdatabase engineer\u201d becomes ", "bbox": {"l": 136.79999, "t": 569.50133, "r": 541.04547, "b": 578.71432, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "even more important.", "bbox": {"l": 136.79999, "t": 581.50113, "r": 231.05352999999997, "b": 590.7141300000001, "coord_origin": "TOPLEFT"}}]}, "text": "To successfully perform monitoring, analyzing, and debugging when RCAC is enabled likely involves changes in the security and data access policies of the organization, and require new responsibilities, authority, and oversight within the data-centric application development community. As such, establishing and staffing the position of \u201cdatabase engineer\u201d becomes even more important."}, {"label": "section_header", "id": 13, "page_no": 112, "cluster": {"id": 13, "label": "section_header", "bbox": {"l": 64.17730712890625, "t": 610.3857421875, "r": 325.99066, "b": 623.9208984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9681240320205688, "cells": [{"id": 43, "text": "6.4.1", "bbox": {"l": 64.800003, "t": 611.39471, "r": 94.078636, "b": 623.3827200000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Query monitoring and analysis tools", "bbox": {"l": 97.738449, "t": 611.39471, "r": 325.99066, "b": 623.3827200000001, "coord_origin": "TOPLEFT"}}]}, "text": "6.4.1 Query monitoring and analysis tools"}, {"label": "text", "id": 14, "page_no": 112, "cluster": {"id": 14, "label": "text", "bbox": {"l": 136.0252227783203, "t": 636.5751953125, "r": 543.20374, "b": 682.76114, "coord_origin": "TOPLEFT"}, "confidence": 0.9866449236869812, "cells": [{"id": 45, "text": "When monitoring and collecting metrics on database requests, DB2 for i provides additional ", "bbox": {"l": 136.8, "t": 637.54872, "r": 543.20374, "b": 646.76172, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "information that indicates row permissions or column masks are being applied. This ", "bbox": {"l": 136.8, "t": 649.54852, "r": 507.93053999999995, "b": 658.76152, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "information is integrated and part of the standard tools, such as Visual Explain, SQL Plan ", "bbox": {"l": 136.8, "t": 661.54832, "r": 532.96576, "b": 670.76133, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "Cache Snapshot, and SQL Performance Monitor.", "bbox": {"l": 136.8, "t": 673.54813, "r": 353.58246, "b": 682.76114, "coord_origin": "TOPLEFT"}}]}, "text": "When monitoring and collecting metrics on database requests, DB2 for i provides additional information that indicates row permissions or column masks are being applied. This information is integrated and part of the standard tools, such as Visual Explain, SQL Plan Cache Snapshot, and SQL Performance Monitor."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 112, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 376.0887756347656, "t": 754.9174194335938, "r": 523.62878, "b": 764.0950927734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9518945813179016, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 112, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.5423583984375, "t": 754.1775512695312, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9179106950759888, "cells": [{"id": 1, "text": "97", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "97"}]}}, {"page_no": 113, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "98 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Figure 6-14 shows how Visual Explain externalizes RCAC.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 394.5509, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 6-14 Visual Explain indicating that RCAC is applied", "bbox": {"l": 64.800003, "t": 352.698, "r": 300.70435, "b": 361.02301, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 6-15 shows the main dashboard of an SQL Performance Monitor. Click ", "bbox": {"l": 136.8, "t": 378.70871, "r": 482.50363, "b": 387.92169, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Summary", "bbox": {"l": 482.5803199999999, "t": 378.70871, "r": 528.22699, "b": 387.92169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ".", "bbox": {"l": 527.22003, "t": 378.70871, "r": 529.98889, "b": 387.92169, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Figure 6-15 SQL Performance Monitor", "bbox": {"l": 64.800003, "t": 545.59799, "r": 222.08038, "b": 553.923, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Figure 6-16 shows the summary of an SQL Performance Monitor with an indication that ", "bbox": {"l": 136.8, "t": 571.54872, "r": 524.75702, "b": 580.76172, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "RCAC is applied.", "bbox": {"l": 136.8, "t": 583.54852, "r": 212.66629, "b": 592.76152, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Figure 6-16 SQL Performance Monitor indicating that RCAC is applied", "bbox": {"l": 64.800003, "t": 689.058, "r": 348.245, "b": 697.382996, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.10893249511719, "t": 754.4006958007812, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9148916006088257, "cells": [{"id": 0, "text": "98 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.39404296875, "t": 754.6958618164062, "r": 334.42142, "b": 763.9676513671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9504665732383728, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 136.44447326660156, "t": 70.6107177734375, "r": 394.5509, "b": 81.15087127685547, "coord_origin": "TOPLEFT"}, "confidence": 0.6426960825920105, "cells": [{"id": 2, "text": "Figure 6-14 shows how Visual Explain externalizes RCAC.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 394.5509, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.1352310180664, "t": 351.9909973144531, "r": 301.8788146972656, "b": 361.4986877441406, "coord_origin": "TOPLEFT"}, "confidence": 0.9484913349151611, "cells": [{"id": 3, "text": "Figure 6-14 Visual Explain indicating that RCAC is applied", "bbox": {"l": 64.800003, "t": 352.698, "r": 300.70435, "b": 361.02301, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 136.34783935546875, "t": 378.1083679199219, "r": 529.98889, "b": 388.4996337890625, "coord_origin": "TOPLEFT"}, "confidence": 0.7494233846664429, "cells": [{"id": 4, "text": "Figure 6-15 shows the main dashboard of an SQL Performance Monitor. Click ", "bbox": {"l": 136.8, "t": 378.70871, "r": 482.50363, "b": 387.92169, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Summary", "bbox": {"l": 482.5803199999999, "t": 378.70871, "r": 528.22699, "b": 387.92169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ".", "bbox": {"l": 527.22003, "t": 378.70871, "r": 529.98889, "b": 387.92169, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 64.04948425292969, "t": 544.6276245117188, "r": 222.99563598632812, "b": 554.0814208984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9098349213600159, "cells": [{"id": 7, "text": "Figure 6-15 SQL Performance Monitor", "bbox": {"l": 64.800003, "t": 545.59799, "r": 222.08038, "b": 553.923, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 136.6471710205078, "t": 570.5686645507812, "r": 524.75702, "b": 593.2821655273438, "coord_origin": "TOPLEFT"}, "confidence": 0.8541293740272522, "cells": [{"id": 8, "text": "Figure 6-16 shows the summary of an SQL Performance Monitor with an indication that ", "bbox": {"l": 136.8, "t": 571.54872, "r": 524.75702, "b": 580.76172, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "RCAC is applied.", "bbox": {"l": 136.8, "t": 583.54852, "r": 212.66629, "b": 592.76152, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "caption", "bbox": {"l": 64.28324127197266, "t": 688.001220703125, "r": 349.08843994140625, "b": 697.662109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9500105977058411, "cells": [{"id": 10, "text": "Figure 6-16 SQL Performance Monitor indicating that RCAC is applied", "bbox": {"l": 64.800003, "t": 689.058, "r": 348.245, "b": 697.382996, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 64.03382873535156, "t": 402.0129699707031, "r": 546.9832153320312, "b": 542.2274169921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9835320711135864, "cells": []}, {"id": 9, "label": "picture", "bbox": {"l": 64.05506134033203, "t": 95.34317016601562, "r": 546.421142578125, "b": 349.3290100097656, "coord_origin": "TOPLEFT"}, "confidence": 0.98197340965271, "cells": []}, {"id": 10, "label": "picture", "bbox": {"l": 63.78765869140625, "t": 606.9619140625, "r": 546.1412353515625, "b": 685.5827026367188, "coord_origin": "TOPLEFT"}, "confidence": 0.9799405932426453, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 113, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.10893249511719, "t": 754.4006958007812, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9148916006088257, "cells": [{"id": 0, "text": "98 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "98"}, {"label": "page_footer", "id": 1, "page_no": 113, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.39404296875, "t": 754.6958618164062, "r": 334.42142, "b": 763.9676513671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9504665732383728, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 2, "page_no": 113, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.44447326660156, "t": 70.6107177734375, "r": 394.5509, "b": 81.15087127685547, "coord_origin": "TOPLEFT"}, "confidence": 0.6426960825920105, "cells": [{"id": 2, "text": "Figure 6-14 shows how Visual Explain externalizes RCAC.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 394.5509, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-14 shows how Visual Explain externalizes RCAC."}, {"label": "caption", "id": 3, "page_no": 113, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.1352310180664, "t": 351.9909973144531, "r": 301.8788146972656, "b": 361.4986877441406, "coord_origin": "TOPLEFT"}, "confidence": 0.9484913349151611, "cells": [{"id": 3, "text": "Figure 6-14 Visual Explain indicating that RCAC is applied", "bbox": {"l": 64.800003, "t": 352.698, "r": 300.70435, "b": 361.02301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-14 Visual Explain indicating that RCAC is applied"}, {"label": "text", "id": 4, "page_no": 113, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.34783935546875, "t": 378.1083679199219, "r": 529.98889, "b": 388.4996337890625, "coord_origin": "TOPLEFT"}, "confidence": 0.7494233846664429, "cells": [{"id": 4, "text": "Figure 6-15 shows the main dashboard of an SQL Performance Monitor. Click ", "bbox": {"l": 136.8, "t": 378.70871, "r": 482.50363, "b": 387.92169, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Summary", "bbox": {"l": 482.5803199999999, "t": 378.70871, "r": 528.22699, "b": 387.92169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ".", "bbox": {"l": 527.22003, "t": 378.70871, "r": 529.98889, "b": 387.92169, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-15 shows the main dashboard of an SQL Performance Monitor. Click Summary ."}, {"label": "caption", "id": 5, "page_no": 113, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.04948425292969, "t": 544.6276245117188, "r": 222.99563598632812, "b": 554.0814208984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9098349213600159, "cells": [{"id": 7, "text": "Figure 6-15 SQL Performance Monitor", "bbox": {"l": 64.800003, "t": 545.59799, "r": 222.08038, "b": 553.923, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-15 SQL Performance Monitor"}, {"label": "text", "id": 6, "page_no": 113, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.6471710205078, "t": 570.5686645507812, "r": 524.75702, "b": 593.2821655273438, "coord_origin": "TOPLEFT"}, "confidence": 0.8541293740272522, "cells": [{"id": 8, "text": "Figure 6-16 shows the summary of an SQL Performance Monitor with an indication that ", "bbox": {"l": 136.8, "t": 571.54872, "r": 524.75702, "b": 580.76172, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "RCAC is applied.", "bbox": {"l": 136.8, "t": 583.54852, "r": 212.66629, "b": 592.76152, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-16 shows the summary of an SQL Performance Monitor with an indication that RCAC is applied."}, {"label": "caption", "id": 7, "page_no": 113, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 64.28324127197266, "t": 688.001220703125, "r": 349.08843994140625, "b": 697.662109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9500105977058411, "cells": [{"id": 10, "text": "Figure 6-16 SQL Performance Monitor indicating that RCAC is applied", "bbox": {"l": 64.800003, "t": 689.058, "r": 348.245, "b": 697.382996, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-16 SQL Performance Monitor indicating that RCAC is applied"}, {"label": "picture", "id": 8, "page_no": 113, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 64.03382873535156, "t": 402.0129699707031, "r": 546.9832153320312, "b": 542.2274169921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9835320711135864, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 9, "page_no": 113, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 64.05506134033203, "t": 95.34317016601562, "r": 546.421142578125, "b": 349.3290100097656, "coord_origin": "TOPLEFT"}, "confidence": 0.98197340965271, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 10, "page_no": 113, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 63.78765869140625, "t": 606.9619140625, "r": 546.1412353515625, "b": 685.5827026367188, "coord_origin": "TOPLEFT"}, "confidence": 0.9799405932426453, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 113, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.44447326660156, "t": 70.6107177734375, "r": 394.5509, "b": 81.15087127685547, "coord_origin": "TOPLEFT"}, "confidence": 0.6426960825920105, "cells": [{"id": 2, "text": "Figure 6-14 shows how Visual Explain externalizes RCAC.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 394.5509, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-14 shows how Visual Explain externalizes RCAC."}, {"label": "caption", "id": 3, "page_no": 113, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.1352310180664, "t": 351.9909973144531, "r": 301.8788146972656, "b": 361.4986877441406, "coord_origin": "TOPLEFT"}, "confidence": 0.9484913349151611, "cells": [{"id": 3, "text": "Figure 6-14 Visual Explain indicating that RCAC is applied", "bbox": {"l": 64.800003, "t": 352.698, "r": 300.70435, "b": 361.02301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-14 Visual Explain indicating that RCAC is applied"}, {"label": "text", "id": 4, "page_no": 113, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.34783935546875, "t": 378.1083679199219, "r": 529.98889, "b": 388.4996337890625, "coord_origin": "TOPLEFT"}, "confidence": 0.7494233846664429, "cells": [{"id": 4, "text": "Figure 6-15 shows the main dashboard of an SQL Performance Monitor. Click ", "bbox": {"l": 136.8, "t": 378.70871, "r": 482.50363, "b": 387.92169, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Summary", "bbox": {"l": 482.5803199999999, "t": 378.70871, "r": 528.22699, "b": 387.92169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ".", "bbox": {"l": 527.22003, "t": 378.70871, "r": 529.98889, "b": 387.92169, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-15 shows the main dashboard of an SQL Performance Monitor. Click Summary ."}, {"label": "caption", "id": 5, "page_no": 113, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.04948425292969, "t": 544.6276245117188, "r": 222.99563598632812, "b": 554.0814208984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9098349213600159, "cells": [{"id": 7, "text": "Figure 6-15 SQL Performance Monitor", "bbox": {"l": 64.800003, "t": 545.59799, "r": 222.08038, "b": 553.923, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-15 SQL Performance Monitor"}, {"label": "text", "id": 6, "page_no": 113, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.6471710205078, "t": 570.5686645507812, "r": 524.75702, "b": 593.2821655273438, "coord_origin": "TOPLEFT"}, "confidence": 0.8541293740272522, "cells": [{"id": 8, "text": "Figure 6-16 shows the summary of an SQL Performance Monitor with an indication that ", "bbox": {"l": 136.8, "t": 571.54872, "r": 524.75702, "b": 580.76172, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "RCAC is applied.", "bbox": {"l": 136.8, "t": 583.54852, "r": 212.66629, "b": 592.76152, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-16 shows the summary of an SQL Performance Monitor with an indication that RCAC is applied."}, {"label": "caption", "id": 7, "page_no": 113, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 64.28324127197266, "t": 688.001220703125, "r": 349.08843994140625, "b": 697.662109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9500105977058411, "cells": [{"id": 10, "text": "Figure 6-16 SQL Performance Monitor indicating that RCAC is applied", "bbox": {"l": 64.800003, "t": 689.058, "r": 348.245, "b": 697.382996, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-16 SQL Performance Monitor indicating that RCAC is applied"}, {"label": "picture", "id": 8, "page_no": 113, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 64.03382873535156, "t": 402.0129699707031, "r": 546.9832153320312, "b": 542.2274169921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9835320711135864, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 9, "page_no": 113, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 64.05506134033203, "t": 95.34317016601562, "r": 546.421142578125, "b": 349.3290100097656, "coord_origin": "TOPLEFT"}, "confidence": 0.98197340965271, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 10, "page_no": 113, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 63.78765869140625, "t": 606.9619140625, "r": 546.1412353515625, "b": 685.5827026367188, "coord_origin": "TOPLEFT"}, "confidence": 0.9799405932426453, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 113, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.10893249511719, "t": 754.4006958007812, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9148916006088257, "cells": [{"id": 0, "text": "98 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "98"}, {"label": "page_footer", "id": 1, "page_no": 113, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.39404296875, "t": 754.6958618164062, "r": 334.42142, "b": 763.9676513671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9504665732383728, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 114, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "99", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Figure 6-17 shows the statements of an SQL Performance Monitor and how RCAC is ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 514.50977, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "externalized.", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 193.28972, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 6-17 SQL Performance Monitor showing statements and RCAC", "bbox": {"l": 64.800003, "t": 221.11803999999995, "r": 349.08563, "b": 229.44299, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "When implementing RCAC as part of a comprehensive and pervasive data access control ", "bbox": {"l": 136.8, "t": 247.12872000000004, "r": 535.89722, "b": 256.34173999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "initiative, consider that the database monitoring and analysis tools can collect literal values ", "bbox": {"l": 136.8, "t": 259.12854000000004, "r": 538.49878, "b": 268.34155, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "that are passed as part of SQL statements. These literal values can be viewed as part of the ", "bbox": {"l": 136.79999, "t": 271.12836000000004, "r": 546.87805, "b": 280.34137, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "information collected. If any of the literals are based on or are used with masked columns, it is ", "bbox": {"l": 136.79999, "t": 283.1282, "r": 547.19598, "b": 292.34119, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "important to review the database engineer\u2019s policy for viewing these data elements. For ", "bbox": {"l": 136.79999, "t": 295.12802, "r": 524.2348, "b": 304.341, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "example, supposed that column CUSTOMER_TAX_ID is deemed masked for the database ", "bbox": {"l": 136.8, "t": 307.12784, "r": 540.35242, "b": 316.34081999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "engineer and the CUSTOMER_TAX_ID column is used in a predicate as follows:", "bbox": {"l": 136.8, "t": 319.12766, "r": 491.99249, "b": 328.34064000000006, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "WHERE CUSTOMER_TAX_ID = '123-45-7890'", "bbox": {"l": 136.8, "t": 336.25684, "r": 321.65756, "b": 345.03162, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "The literal value of \u2019123-45-7890\u2019 is visible to the analyst, effectively exposing sensitive ", "bbox": {"l": 136.8, "t": 358.12701, "r": 520.11249, "b": 367.34, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "information. If this is not acceptable, you must implement the ", "bbox": {"l": 136.8, "t": 370.12683, "r": 407.22797, "b": 379.33981, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "SYSPROC.SET_COLUMN_ATTRIBUTE procedure.", "bbox": {"l": 136.8, "t": 382.1266499999999, "r": 366.48557, "b": 391.33963, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "The SET_COLUMN_ATTRIBUTE procedure sets the SECURE attribute for a column so that ", "bbox": {"l": 136.8, "t": 404.14621, "r": 546.67786, "b": 413.35919, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "variable values that are used for the column cannot be seen in the SQL Performance Monitor, ", "bbox": {"l": 136.79999, "t": 416.14603, "r": 547.2644, "b": 425.35900999999996, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "SQL Plan Cache Snapshot, or Visual Explain.", "bbox": {"l": 136.79999, "t": 428.1458400000001, "r": 338.97601, "b": 437.35883000000007, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "6.4.2", "bbox": {"l": 64.800003, "t": 457.97473, "r": 94.474304, "b": 469.96271, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Index advisor", "bbox": {"l": 98.183594, "t": 457.97473, "r": 184.20438, "b": 469.96271, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Because the RCAC rule text can be almost any valid SQL logic, including local selection ", "bbox": {"l": 136.8, "t": 484.12872, "r": 527.37341, "b": 493.34171, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "predicates, join conditions, and subqueries, the standard query tuning techniques still apply. ", "bbox": {"l": 136.8, "t": 496.12854, "r": 544.1452, "b": 505.34152, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Without a doubt, a proper and adequate indexing strategy is a good starting point.", "bbox": {"l": 136.79999, "t": 508.12836, "r": 498.02637000000004, "b": 517.34134, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "The index advisor is not specifically enhanced for RCAC, but because the rule text is a fully ", "bbox": {"l": 136.79999, "t": 530.14792, "r": 540.85529, "b": 539.36092, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "integrated part of the query plan, any opportunities for indexing is advised based on the ", "bbox": {"l": 136.79999, "t": 542.1477199999999, "r": 525.34064, "b": 551.36072, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "current Query Optimizer functionality. If an index is advised because of the RCAC rule text ", "bbox": {"l": 136.79999, "t": 554.14752, "r": 536.7569, "b": 563.36052, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "logic, there is no RCAC reason code provided. Analyzing the query plan and the RCAC rule ", "bbox": {"l": 136.79999, "t": 566.14732, "r": 543.59814, "b": 575.36032, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "text provides the understanding as to why the index is being advised.", "bbox": {"l": 136.79999, "t": 578.1471300000001, "r": 440.79403999999994, "b": 587.36012, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 376.0592956542969, "t": 754.98291015625, "r": 523.62878, "b": 764.048828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9528514742851257, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.5274047851562, "t": 754.2946166992188, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.922478199005127, "cells": [{"id": 1, "text": "99", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 136.21266174316406, "t": 70.70671844482422, "r": 514.50977, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9165806770324707, "cells": [{"id": 2, "text": "Figure 6-17 shows the statements of an SQL Performance Monitor and how RCAC is ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 514.50977, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "externalized.", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 193.28972, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.27816772460938, "t": 220.06015014648438, "r": 349.6502685546875, "b": 229.44299, "coord_origin": "TOPLEFT"}, "confidence": 0.9448087215423584, "cells": [{"id": 4, "text": "Figure 6-17 SQL Performance Monitor showing statements and RCAC", "bbox": {"l": 64.800003, "t": 221.11803999999995, "r": 349.08563, "b": 229.44299, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.8977813720703, "t": 245.93429565429688, "r": 547.19598, "b": 328.34064000000006, "coord_origin": "TOPLEFT"}, "confidence": 0.9853147268295288, "cells": [{"id": 5, "text": "When implementing RCAC as part of a comprehensive and pervasive data access control ", "bbox": {"l": 136.8, "t": 247.12872000000004, "r": 535.89722, "b": 256.34173999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "initiative, consider that the database monitoring and analysis tools can collect literal values ", "bbox": {"l": 136.8, "t": 259.12854000000004, "r": 538.49878, "b": 268.34155, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "that are passed as part of SQL statements. These literal values can be viewed as part of the ", "bbox": {"l": 136.79999, "t": 271.12836000000004, "r": 546.87805, "b": 280.34137, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "information collected. If any of the literals are based on or are used with masked columns, it is ", "bbox": {"l": 136.79999, "t": 283.1282, "r": 547.19598, "b": 292.34119, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "important to review the database engineer\u2019s policy for viewing these data elements. For ", "bbox": {"l": 136.79999, "t": 295.12802, "r": 524.2348, "b": 304.341, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "example, supposed that column CUSTOMER_TAX_ID is deemed masked for the database ", "bbox": {"l": 136.8, "t": 307.12784, "r": 540.35242, "b": 316.34081999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "engineer and the CUSTOMER_TAX_ID column is used in a predicate as follows:", "bbox": {"l": 136.8, "t": 319.12766, "r": 491.99249, "b": 328.34064000000006, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.05642700195312, "t": 335.3828125, "r": 321.65756, "b": 346.0798034667969, "coord_origin": "TOPLEFT"}, "confidence": 0.7673708200454712, "cells": [{"id": 12, "text": "WHERE CUSTOMER_TAX_ID = '123-45-7890'", "bbox": {"l": 136.8, "t": 336.25684, "r": 321.65756, "b": 345.03162, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 135.81124877929688, "t": 357.3571472167969, "r": 520.11249, "b": 391.33963, "coord_origin": "TOPLEFT"}, "confidence": 0.9725678563117981, "cells": [{"id": 13, "text": "The literal value of \u2019123-45-7890\u2019 is visible to the analyst, effectively exposing sensitive ", "bbox": {"l": 136.8, "t": 358.12701, "r": 520.11249, "b": 367.34, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "information. If this is not acceptable, you must implement the ", "bbox": {"l": 136.8, "t": 370.12683, "r": 407.22797, "b": 379.33981, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "SYSPROC.SET_COLUMN_ATTRIBUTE procedure.", "bbox": {"l": 136.8, "t": 382.1266499999999, "r": 366.48557, "b": 391.33963, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 135.4740447998047, "t": 403.30865478515625, "r": 547.2644, "b": 437.394287109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9761651754379272, "cells": [{"id": 16, "text": "The SET_COLUMN_ATTRIBUTE procedure sets the SECURE attribute for a column so that ", "bbox": {"l": 136.8, "t": 404.14621, "r": 546.67786, "b": 413.35919, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "variable values that are used for the column cannot be seen in the SQL Performance Monitor, ", "bbox": {"l": 136.79999, "t": 416.14603, "r": 547.2644, "b": 425.35900999999996, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "SQL Plan Cache Snapshot, or Visual Explain.", "bbox": {"l": 136.79999, "t": 428.1458400000001, "r": 338.97601, "b": 437.35883000000007, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "section_header", "bbox": {"l": 64.00121307373047, "t": 457.377197265625, "r": 184.5458984375, "b": 469.96271, "coord_origin": "TOPLEFT"}, "confidence": 0.9545406103134155, "cells": [{"id": 19, "text": "6.4.2", "bbox": {"l": 64.800003, "t": 457.97473, "r": 94.474304, "b": 469.96271, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Index advisor", "bbox": {"l": 98.183594, "t": 457.97473, "r": 184.20438, "b": 469.96271, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 135.94943237304688, "t": 483.509033203125, "r": 544.1452, "b": 517.70703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9826521873474121, "cells": [{"id": 21, "text": "Because the RCAC rule text can be almost any valid SQL logic, including local selection ", "bbox": {"l": 136.8, "t": 484.12872, "r": 527.37341, "b": 493.34171, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "predicates, join conditions, and subqueries, the standard query tuning techniques still apply. ", "bbox": {"l": 136.8, "t": 496.12854, "r": 544.1452, "b": 505.34152, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Without a doubt, a proper and adequate indexing strategy is a good starting point.", "bbox": {"l": 136.79999, "t": 508.12836, "r": 498.02637000000004, "b": 517.34134, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 135.8879852294922, "t": 529.4095458984375, "r": 543.59814, "b": 587.827880859375, "coord_origin": "TOPLEFT"}, "confidence": 0.9877107739448547, "cells": [{"id": 24, "text": "The index advisor is not specifically enhanced for RCAC, but because the rule text is a fully ", "bbox": {"l": 136.79999, "t": 530.14792, "r": 540.85529, "b": 539.36092, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "integrated part of the query plan, any opportunities for indexing is advised based on the ", "bbox": {"l": 136.79999, "t": 542.1477199999999, "r": 525.34064, "b": 551.36072, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "current Query Optimizer functionality. If an index is advised because of the RCAC rule text ", "bbox": {"l": 136.79999, "t": 554.14752, "r": 536.7569, "b": 563.36052, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "logic, there is no RCAC reason code provided. Analyzing the query plan and the RCAC rule ", "bbox": {"l": 136.79999, "t": 566.14732, "r": 543.59814, "b": 575.36032, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "text provides the understanding as to why the index is being advised.", "bbox": {"l": 136.79999, "t": 578.1471300000001, "r": 440.79403999999994, "b": 587.36012, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "picture", "bbox": {"l": 63.79280090332031, "t": 107.09796142578125, "r": 547.32080078125, "b": 217.7356414794922, "coord_origin": "TOPLEFT"}, "confidence": 0.9807502627372742, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 114, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 376.0592956542969, "t": 754.98291015625, "r": 523.62878, "b": 764.048828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9528514742851257, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 114, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.5274047851562, "t": 754.2946166992188, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.922478199005127, "cells": [{"id": 1, "text": "99", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "99"}, {"label": "text", "id": 2, "page_no": 114, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.21266174316406, "t": 70.70671844482422, "r": 514.50977, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9165806770324707, "cells": [{"id": 2, "text": "Figure 6-17 shows the statements of an SQL Performance Monitor and how RCAC is ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 514.50977, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "externalized.", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 193.28972, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-17 shows the statements of an SQL Performance Monitor and how RCAC is externalized."}, {"label": "caption", "id": 3, "page_no": 114, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.27816772460938, "t": 220.06015014648438, "r": 349.6502685546875, "b": 229.44299, "coord_origin": "TOPLEFT"}, "confidence": 0.9448087215423584, "cells": [{"id": 4, "text": "Figure 6-17 SQL Performance Monitor showing statements and RCAC", "bbox": {"l": 64.800003, "t": 221.11803999999995, "r": 349.08563, "b": 229.44299, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-17 SQL Performance Monitor showing statements and RCAC"}, {"label": "text", "id": 4, "page_no": 114, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.8977813720703, "t": 245.93429565429688, "r": 547.19598, "b": 328.34064000000006, "coord_origin": "TOPLEFT"}, "confidence": 0.9853147268295288, "cells": [{"id": 5, "text": "When implementing RCAC as part of a comprehensive and pervasive data access control ", "bbox": {"l": 136.8, "t": 247.12872000000004, "r": 535.89722, "b": 256.34173999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "initiative, consider that the database monitoring and analysis tools can collect literal values ", "bbox": {"l": 136.8, "t": 259.12854000000004, "r": 538.49878, "b": 268.34155, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "that are passed as part of SQL statements. These literal values can be viewed as part of the ", "bbox": {"l": 136.79999, "t": 271.12836000000004, "r": 546.87805, "b": 280.34137, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "information collected. If any of the literals are based on or are used with masked columns, it is ", "bbox": {"l": 136.79999, "t": 283.1282, "r": 547.19598, "b": 292.34119, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "important to review the database engineer\u2019s policy for viewing these data elements. For ", "bbox": {"l": 136.79999, "t": 295.12802, "r": 524.2348, "b": 304.341, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "example, supposed that column CUSTOMER_TAX_ID is deemed masked for the database ", "bbox": {"l": 136.8, "t": 307.12784, "r": 540.35242, "b": 316.34081999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "engineer and the CUSTOMER_TAX_ID column is used in a predicate as follows:", "bbox": {"l": 136.8, "t": 319.12766, "r": 491.99249, "b": 328.34064000000006, "coord_origin": "TOPLEFT"}}]}, "text": "When implementing RCAC as part of a comprehensive and pervasive data access control initiative, consider that the database monitoring and analysis tools can collect literal values that are passed as part of SQL statements. These literal values can be viewed as part of the information collected. If any of the literals are based on or are used with masked columns, it is important to review the database engineer\u2019s policy for viewing these data elements. For example, supposed that column CUSTOMER_TAX_ID is deemed masked for the database engineer and the CUSTOMER_TAX_ID column is used in a predicate as follows:"}, {"label": "text", "id": 5, "page_no": 114, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.05642700195312, "t": 335.3828125, "r": 321.65756, "b": 346.0798034667969, "coord_origin": "TOPLEFT"}, "confidence": 0.7673708200454712, "cells": [{"id": 12, "text": "WHERE CUSTOMER_TAX_ID = '123-45-7890'", "bbox": {"l": 136.8, "t": 336.25684, "r": 321.65756, "b": 345.03162, "coord_origin": "TOPLEFT"}}]}, "text": "WHERE CUSTOMER_TAX_ID = '123-45-7890'"}, {"label": "text", "id": 6, "page_no": 114, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.81124877929688, "t": 357.3571472167969, "r": 520.11249, "b": 391.33963, "coord_origin": "TOPLEFT"}, "confidence": 0.9725678563117981, "cells": [{"id": 13, "text": "The literal value of \u2019123-45-7890\u2019 is visible to the analyst, effectively exposing sensitive ", "bbox": {"l": 136.8, "t": 358.12701, "r": 520.11249, "b": 367.34, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "information. If this is not acceptable, you must implement the ", "bbox": {"l": 136.8, "t": 370.12683, "r": 407.22797, "b": 379.33981, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "SYSPROC.SET_COLUMN_ATTRIBUTE procedure.", "bbox": {"l": 136.8, "t": 382.1266499999999, "r": 366.48557, "b": 391.33963, "coord_origin": "TOPLEFT"}}]}, "text": "The literal value of \u2019123-45-7890\u2019 is visible to the analyst, effectively exposing sensitive information. If this is not acceptable, you must implement the SYSPROC.SET_COLUMN_ATTRIBUTE procedure."}, {"label": "text", "id": 7, "page_no": 114, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.4740447998047, "t": 403.30865478515625, "r": 547.2644, "b": 437.394287109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9761651754379272, "cells": [{"id": 16, "text": "The SET_COLUMN_ATTRIBUTE procedure sets the SECURE attribute for a column so that ", "bbox": {"l": 136.8, "t": 404.14621, "r": 546.67786, "b": 413.35919, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "variable values that are used for the column cannot be seen in the SQL Performance Monitor, ", "bbox": {"l": 136.79999, "t": 416.14603, "r": 547.2644, "b": 425.35900999999996, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "SQL Plan Cache Snapshot, or Visual Explain.", "bbox": {"l": 136.79999, "t": 428.1458400000001, "r": 338.97601, "b": 437.35883000000007, "coord_origin": "TOPLEFT"}}]}, "text": "The SET_COLUMN_ATTRIBUTE procedure sets the SECURE attribute for a column so that variable values that are used for the column cannot be seen in the SQL Performance Monitor, SQL Plan Cache Snapshot, or Visual Explain."}, {"label": "section_header", "id": 8, "page_no": 114, "cluster": {"id": 8, "label": "section_header", "bbox": {"l": 64.00121307373047, "t": 457.377197265625, "r": 184.5458984375, "b": 469.96271, "coord_origin": "TOPLEFT"}, "confidence": 0.9545406103134155, "cells": [{"id": 19, "text": "6.4.2", "bbox": {"l": 64.800003, "t": 457.97473, "r": 94.474304, "b": 469.96271, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Index advisor", "bbox": {"l": 98.183594, "t": 457.97473, "r": 184.20438, "b": 469.96271, "coord_origin": "TOPLEFT"}}]}, "text": "6.4.2 Index advisor"}, {"label": "text", "id": 9, "page_no": 114, "cluster": {"id": 9, "label": "text", "bbox": {"l": 135.94943237304688, "t": 483.509033203125, "r": 544.1452, "b": 517.70703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9826521873474121, "cells": [{"id": 21, "text": "Because the RCAC rule text can be almost any valid SQL logic, including local selection ", "bbox": {"l": 136.8, "t": 484.12872, "r": 527.37341, "b": 493.34171, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "predicates, join conditions, and subqueries, the standard query tuning techniques still apply. ", "bbox": {"l": 136.8, "t": 496.12854, "r": 544.1452, "b": 505.34152, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Without a doubt, a proper and adequate indexing strategy is a good starting point.", "bbox": {"l": 136.79999, "t": 508.12836, "r": 498.02637000000004, "b": 517.34134, "coord_origin": "TOPLEFT"}}]}, "text": "Because the RCAC rule text can be almost any valid SQL logic, including local selection predicates, join conditions, and subqueries, the standard query tuning techniques still apply. Without a doubt, a proper and adequate indexing strategy is a good starting point."}, {"label": "text", "id": 10, "page_no": 114, "cluster": {"id": 10, "label": "text", "bbox": {"l": 135.8879852294922, "t": 529.4095458984375, "r": 543.59814, "b": 587.827880859375, "coord_origin": "TOPLEFT"}, "confidence": 0.9877107739448547, "cells": [{"id": 24, "text": "The index advisor is not specifically enhanced for RCAC, but because the rule text is a fully ", "bbox": {"l": 136.79999, "t": 530.14792, "r": 540.85529, "b": 539.36092, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "integrated part of the query plan, any opportunities for indexing is advised based on the ", "bbox": {"l": 136.79999, "t": 542.1477199999999, "r": 525.34064, "b": 551.36072, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "current Query Optimizer functionality. If an index is advised because of the RCAC rule text ", "bbox": {"l": 136.79999, "t": 554.14752, "r": 536.7569, "b": 563.36052, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "logic, there is no RCAC reason code provided. Analyzing the query plan and the RCAC rule ", "bbox": {"l": 136.79999, "t": 566.14732, "r": 543.59814, "b": 575.36032, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "text provides the understanding as to why the index is being advised.", "bbox": {"l": 136.79999, "t": 578.1471300000001, "r": 440.79403999999994, "b": 587.36012, "coord_origin": "TOPLEFT"}}]}, "text": "The index advisor is not specifically enhanced for RCAC, but because the rule text is a fully integrated part of the query plan, any opportunities for indexing is advised based on the current Query Optimizer functionality. If an index is advised because of the RCAC rule text logic, there is no RCAC reason code provided. Analyzing the query plan and the RCAC rule text provides the understanding as to why the index is being advised."}, {"label": "picture", "id": 11, "page_no": 114, "cluster": {"id": 11, "label": "picture", "bbox": {"l": 63.79280090332031, "t": 107.09796142578125, "r": 547.32080078125, "b": 217.7356414794922, "coord_origin": "TOPLEFT"}, "confidence": 0.9807502627372742, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 114, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.21266174316406, "t": 70.70671844482422, "r": 514.50977, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9165806770324707, "cells": [{"id": 2, "text": "Figure 6-17 shows the statements of an SQL Performance Monitor and how RCAC is ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 514.50977, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "externalized.", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 193.28972, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-17 shows the statements of an SQL Performance Monitor and how RCAC is externalized."}, {"label": "caption", "id": 3, "page_no": 114, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.27816772460938, "t": 220.06015014648438, "r": 349.6502685546875, "b": 229.44299, "coord_origin": "TOPLEFT"}, "confidence": 0.9448087215423584, "cells": [{"id": 4, "text": "Figure 6-17 SQL Performance Monitor showing statements and RCAC", "bbox": {"l": 64.800003, "t": 221.11803999999995, "r": 349.08563, "b": 229.44299, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-17 SQL Performance Monitor showing statements and RCAC"}, {"label": "text", "id": 4, "page_no": 114, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.8977813720703, "t": 245.93429565429688, "r": 547.19598, "b": 328.34064000000006, "coord_origin": "TOPLEFT"}, "confidence": 0.9853147268295288, "cells": [{"id": 5, "text": "When implementing RCAC as part of a comprehensive and pervasive data access control ", "bbox": {"l": 136.8, "t": 247.12872000000004, "r": 535.89722, "b": 256.34173999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "initiative, consider that the database monitoring and analysis tools can collect literal values ", "bbox": {"l": 136.8, "t": 259.12854000000004, "r": 538.49878, "b": 268.34155, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "that are passed as part of SQL statements. These literal values can be viewed as part of the ", "bbox": {"l": 136.79999, "t": 271.12836000000004, "r": 546.87805, "b": 280.34137, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "information collected. If any of the literals are based on or are used with masked columns, it is ", "bbox": {"l": 136.79999, "t": 283.1282, "r": 547.19598, "b": 292.34119, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "important to review the database engineer\u2019s policy for viewing these data elements. For ", "bbox": {"l": 136.79999, "t": 295.12802, "r": 524.2348, "b": 304.341, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "example, supposed that column CUSTOMER_TAX_ID is deemed masked for the database ", "bbox": {"l": 136.8, "t": 307.12784, "r": 540.35242, "b": 316.34081999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "engineer and the CUSTOMER_TAX_ID column is used in a predicate as follows:", "bbox": {"l": 136.8, "t": 319.12766, "r": 491.99249, "b": 328.34064000000006, "coord_origin": "TOPLEFT"}}]}, "text": "When implementing RCAC as part of a comprehensive and pervasive data access control initiative, consider that the database monitoring and analysis tools can collect literal values that are passed as part of SQL statements. These literal values can be viewed as part of the information collected. If any of the literals are based on or are used with masked columns, it is important to review the database engineer\u2019s policy for viewing these data elements. For example, supposed that column CUSTOMER_TAX_ID is deemed masked for the database engineer and the CUSTOMER_TAX_ID column is used in a predicate as follows:"}, {"label": "text", "id": 5, "page_no": 114, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.05642700195312, "t": 335.3828125, "r": 321.65756, "b": 346.0798034667969, "coord_origin": "TOPLEFT"}, "confidence": 0.7673708200454712, "cells": [{"id": 12, "text": "WHERE CUSTOMER_TAX_ID = '123-45-7890'", "bbox": {"l": 136.8, "t": 336.25684, "r": 321.65756, "b": 345.03162, "coord_origin": "TOPLEFT"}}]}, "text": "WHERE CUSTOMER_TAX_ID = '123-45-7890'"}, {"label": "text", "id": 6, "page_no": 114, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.81124877929688, "t": 357.3571472167969, "r": 520.11249, "b": 391.33963, "coord_origin": "TOPLEFT"}, "confidence": 0.9725678563117981, "cells": [{"id": 13, "text": "The literal value of \u2019123-45-7890\u2019 is visible to the analyst, effectively exposing sensitive ", "bbox": {"l": 136.8, "t": 358.12701, "r": 520.11249, "b": 367.34, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "information. If this is not acceptable, you must implement the ", "bbox": {"l": 136.8, "t": 370.12683, "r": 407.22797, "b": 379.33981, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "SYSPROC.SET_COLUMN_ATTRIBUTE procedure.", "bbox": {"l": 136.8, "t": 382.1266499999999, "r": 366.48557, "b": 391.33963, "coord_origin": "TOPLEFT"}}]}, "text": "The literal value of \u2019123-45-7890\u2019 is visible to the analyst, effectively exposing sensitive information. If this is not acceptable, you must implement the SYSPROC.SET_COLUMN_ATTRIBUTE procedure."}, {"label": "text", "id": 7, "page_no": 114, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.4740447998047, "t": 403.30865478515625, "r": 547.2644, "b": 437.394287109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9761651754379272, "cells": [{"id": 16, "text": "The SET_COLUMN_ATTRIBUTE procedure sets the SECURE attribute for a column so that ", "bbox": {"l": 136.8, "t": 404.14621, "r": 546.67786, "b": 413.35919, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "variable values that are used for the column cannot be seen in the SQL Performance Monitor, ", "bbox": {"l": 136.79999, "t": 416.14603, "r": 547.2644, "b": 425.35900999999996, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "SQL Plan Cache Snapshot, or Visual Explain.", "bbox": {"l": 136.79999, "t": 428.1458400000001, "r": 338.97601, "b": 437.35883000000007, "coord_origin": "TOPLEFT"}}]}, "text": "The SET_COLUMN_ATTRIBUTE procedure sets the SECURE attribute for a column so that variable values that are used for the column cannot be seen in the SQL Performance Monitor, SQL Plan Cache Snapshot, or Visual Explain."}, {"label": "section_header", "id": 8, "page_no": 114, "cluster": {"id": 8, "label": "section_header", "bbox": {"l": 64.00121307373047, "t": 457.377197265625, "r": 184.5458984375, "b": 469.96271, "coord_origin": "TOPLEFT"}, "confidence": 0.9545406103134155, "cells": [{"id": 19, "text": "6.4.2", "bbox": {"l": 64.800003, "t": 457.97473, "r": 94.474304, "b": 469.96271, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Index advisor", "bbox": {"l": 98.183594, "t": 457.97473, "r": 184.20438, "b": 469.96271, "coord_origin": "TOPLEFT"}}]}, "text": "6.4.2 Index advisor"}, {"label": "text", "id": 9, "page_no": 114, "cluster": {"id": 9, "label": "text", "bbox": {"l": 135.94943237304688, "t": 483.509033203125, "r": 544.1452, "b": 517.70703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9826521873474121, "cells": [{"id": 21, "text": "Because the RCAC rule text can be almost any valid SQL logic, including local selection ", "bbox": {"l": 136.8, "t": 484.12872, "r": 527.37341, "b": 493.34171, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "predicates, join conditions, and subqueries, the standard query tuning techniques still apply. ", "bbox": {"l": 136.8, "t": 496.12854, "r": 544.1452, "b": 505.34152, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Without a doubt, a proper and adequate indexing strategy is a good starting point.", "bbox": {"l": 136.79999, "t": 508.12836, "r": 498.02637000000004, "b": 517.34134, "coord_origin": "TOPLEFT"}}]}, "text": "Because the RCAC rule text can be almost any valid SQL logic, including local selection predicates, join conditions, and subqueries, the standard query tuning techniques still apply. Without a doubt, a proper and adequate indexing strategy is a good starting point."}, {"label": "text", "id": 10, "page_no": 114, "cluster": {"id": 10, "label": "text", "bbox": {"l": 135.8879852294922, "t": 529.4095458984375, "r": 543.59814, "b": 587.827880859375, "coord_origin": "TOPLEFT"}, "confidence": 0.9877107739448547, "cells": [{"id": 24, "text": "The index advisor is not specifically enhanced for RCAC, but because the rule text is a fully ", "bbox": {"l": 136.79999, "t": 530.14792, "r": 540.85529, "b": 539.36092, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "integrated part of the query plan, any opportunities for indexing is advised based on the ", "bbox": {"l": 136.79999, "t": 542.1477199999999, "r": 525.34064, "b": 551.36072, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "current Query Optimizer functionality. If an index is advised because of the RCAC rule text ", "bbox": {"l": 136.79999, "t": 554.14752, "r": 536.7569, "b": 563.36052, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "logic, there is no RCAC reason code provided. Analyzing the query plan and the RCAC rule ", "bbox": {"l": 136.79999, "t": 566.14732, "r": 543.59814, "b": 575.36032, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "text provides the understanding as to why the index is being advised.", "bbox": {"l": 136.79999, "t": 578.1471300000001, "r": 440.79403999999994, "b": 587.36012, "coord_origin": "TOPLEFT"}}]}, "text": "The index advisor is not specifically enhanced for RCAC, but because the rule text is a fully integrated part of the query plan, any opportunities for indexing is advised based on the current Query Optimizer functionality. If an index is advised because of the RCAC rule text logic, there is no RCAC reason code provided. Analyzing the query plan and the RCAC rule text provides the understanding as to why the index is being advised."}, {"label": "picture", "id": 11, "page_no": 114, "cluster": {"id": 11, "label": "picture", "bbox": {"l": 63.79280090332031, "t": 107.09796142578125, "r": 547.32080078125, "b": 217.7356414794922, "coord_origin": "TOPLEFT"}, "confidence": 0.9807502627372742, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 114, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 376.0592956542969, "t": 754.98291015625, "r": 523.62878, "b": 764.048828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9528514742851257, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 114, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.5274047851562, "t": 754.2946166992188, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.922478199005127, "cells": [{"id": 1, "text": "99", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "99"}]}}, {"page_no": 115, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "100 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "For example, the query that is shown in Figure 6-18 produces index advice for the user\u2019s ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 529.22491, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "predicate and the RCAC predicate.", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 291.40308, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 6-18 Index advice and RCAC", "bbox": {"l": 136.8, "t": 381.91799999999995, "r": 285.60236, "b": 390.24301, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "In Figure 6-19, index advisor is showing an index for the ACCOUNTS and CUSTOMERS ", "bbox": {"l": 136.8, "t": 407.92870999999997, "r": 530.6283, "b": 417.14169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "tables based on the RCAC rule text.", "bbox": {"l": 136.8, "t": 419.9285300000001, "r": 295.63611, "b": 429.14151, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Figure 6-19 Index advisor based on the RCAC rule", "bbox": {"l": 64.800003, "t": 558.0178999999999, "r": 271.233, "b": 566.34291, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "For more information about creating and using indexes, see ", "bbox": {"l": 136.8, "t": 584.02863, "r": 402.31378, "b": 593.24162, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "IBM DB2 for i indexing methods ", "bbox": {"l": 402.36047, "t": 584.02863, "r": 545.00952, "b": 593.24162, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "and strategies", "bbox": {"l": 136.79999, "t": 596.02843, "r": 199.48126, "b": 605.2414200000001, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": ", found at:", "bbox": {"l": 199.3199, "t": 596.02843, "r": 243.46958999999998, "b": 605.2414200000001, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "http://www.ibm.com/partnerworld/wps/servlet/ContentHandler/stg_ast_sys_wp_db2_i_in", "bbox": {"l": 136.79999, "t": 613.15764, "r": 546.53442, "b": 621.9323899999999, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "dexing_methods_strategies", "bbox": {"l": 136.79999, "t": 625.15744, "r": 261.71826, "b": 633.93219, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "6.4.3", "bbox": {"l": 64.800003, "t": 654.8347200000001, "r": 94.251732, "b": 666.82272, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Metadata using catalogs", "bbox": {"l": 97.933197, "t": 654.8347200000001, "r": 251.73373, "b": 666.82272, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "To make the discovery and identification of RCAC row permissions and column masks ", "bbox": {"l": 136.8, "t": 680.9887200000001, "r": 519.3606, "b": 690.20172, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "programmatically, query the QSYS2.SYSCONTROLS catalog view or the ", "bbox": {"l": 136.8, "t": 692.988525, "r": 461.96115, "b": 702.20153, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "QSYS2.SYSCONTROLSDEP catalog view directly. Otherwise, the System i Navigator ", "bbox": {"l": 136.8, "t": 704.988335, "r": 518.80981, "b": 714.20134, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Database graphical interface can be used interactively.", "bbox": {"l": 136.80099, "t": 716.988144, "r": 377.75638, "b": 726.201149, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "SELECT *", "bbox": {"l": 157.9931, "t": 149.12018, "r": 203.30074, "b": 159.40918, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "FROM ACCOUNTS A", "bbox": {"l": 157.9931, "t": 170.76196000000004, "r": 261.50269, "b": 181.05096000000003, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "WHERE A.", "bbox": {"l": 157.9931, "t": 192.40283, "r": 207.43439, "b": 202.69182999999998, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ACCOUNT_NUMBER", "bbox": {"l": 207.4079, "t": 192.40283, "r": 308.69241, "b": 202.70385999999996, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "= ?", "bbox": {"l": 311.45059, "t": 192.40283, "r": 325.75049, "b": 202.69182999999998, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "AND", "bbox": {"l": 157.99429, "t": 214.04462, "r": 180.14389, "b": 224.33362, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "A.CUSTOMER ID IN (", "bbox": {"l": 197.36319, "t": 214.04462, "r": 299.22586, "b": 224.33362, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "_", "bbox": {"l": 262.95361, "t": 214.04418999999996, "r": 268.9465, "b": 224.33318999999995, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "(", "bbox": {"l": 295.57959, "t": 214.04418999999996, "r": 299.22586, "b": 224.33318999999995, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "SELECT C.", "bbox": {"l": 236.68889999999996, "t": 235.68548999999996, "r": 285.47073, "b": 245.97448999999995, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CUSTOMER_ID", "bbox": {"l": 285.51285, "t": 235.68548999999996, "r": 359.03998, "b": 245.98650999999995, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "FROM CUSTOMERS C", "bbox": {"l": 236.68889999999996, "t": 257.32678, "r": 346.32556, "b": 267.61578, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "WHERE C.", "bbox": {"l": 236.68889999999996, "t": 278.96813999999995, "r": 285.50443, "b": 289.25711000000007, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "CUSTOMER_LOGIN_ID", "bbox": {"l": 285.51285, "t": 278.96813999999995, "r": 396.81561, "b": 289.26913, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "= CUSTOMER_LOGIN_ID);", "bbox": {"l": 399.42456, "t": 278.96813999999995, "r": 524.35449, "b": 289.25711000000007, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "A.CUSTOMER_ID has an index (via the foreign key constraint)", "bbox": {"l": 204.2925, "t": 321.07211, "r": 472.9567, "b": 330.41876, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "A ACCOUNT NUMBER d", "bbox": {"l": 204.2925, "t": 347.30402, "r": 311.6994, "b": 356.65067, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "t h", "bbox": {"l": 340.37268, "t": 347.30402, "r": 352.16086, "b": 356.65067, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "i", "bbox": {"l": 383.88382, "t": 347.30402, "r": 387.12537, "b": 356.65067, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "d", "bbox": {"l": 390.32446, "t": 347.30402, "r": 397.60028, "b": 356.65067, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "A.ACCOUNT_NUMBER does not have an index", "bbox": {"l": 204.2925, "t": 347.30402, "r": 407.07541, "b": 356.65067, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "C.CUSTOMER_LOGIN_ID, C.CCUSTOMER_ID does not have an index", "bbox": {"l": 204.29321, "t": 360.41992, "r": 499.13022, "b": 369.76657, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.36641693115234, "t": 754.297607421875, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9257708787918091, "cells": [{"id": 0, "text": "100 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 98.54092407226562, "t": 754.6331787109375, "r": 339.8568115234375, "b": 764.0162353515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9520395398139954, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 136.3820037841797, "t": 70.64859008789062, "r": 529.22491, "b": 92.91596984863281, "coord_origin": "TOPLEFT"}, "confidence": 0.9596586227416992, "cells": [{"id": 2, "text": "For example, the query that is shown in Figure 6-18 produces index advice for the user\u2019s ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 529.22491, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "predicate and the RCAC predicate.", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 291.40308, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.15460205078125, "t": 381.4628601074219, "r": 286.3040466308594, "b": 390.739990234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9480466842651367, "cells": [{"id": 4, "text": "Figure 6-18 Index advice and RCAC", "bbox": {"l": 136.8, "t": 381.91799999999995, "r": 285.60236, "b": 390.24301, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 136.26499938964844, "t": 407.0609130859375, "r": 530.6283, "b": 429.14151, "coord_origin": "TOPLEFT"}, "confidence": 0.9521172642707825, "cells": [{"id": 5, "text": "In Figure 6-19, index advisor is showing an index for the ACCOUNTS and CUSTOMERS ", "bbox": {"l": 136.8, "t": 407.92870999999997, "r": 530.6283, "b": 417.14169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "tables based on the RCAC rule text.", "bbox": {"l": 136.8, "t": 419.9285300000001, "r": 295.63611, "b": 429.14151, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 64.29851531982422, "t": 557.3598022460938, "r": 271.84735107421875, "b": 566.8680419921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9459379315376282, "cells": [{"id": 7, "text": "Figure 6-19 Index advisor based on the RCAC rule", "bbox": {"l": 64.800003, "t": 558.0178999999999, "r": 271.233, "b": 566.34291, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 136.3258819580078, "t": 583.20947265625, "r": 545.00952, "b": 605.608154296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9606812596321106, "cells": [{"id": 8, "text": "For more information about creating and using indexes, see ", "bbox": {"l": 136.8, "t": 584.02863, "r": 402.31378, "b": 593.24162, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "IBM DB2 for i indexing methods ", "bbox": {"l": 402.36047, "t": 584.02863, "r": 545.00952, "b": 593.24162, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "and strategies", "bbox": {"l": 136.79999, "t": 596.02843, "r": 199.48126, "b": 605.2414200000001, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": ", found at:", "bbox": {"l": 199.3199, "t": 596.02843, "r": 243.46958999999998, "b": 605.2414200000001, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 136.258544921875, "t": 612.0850219726562, "r": 546.53442, "b": 634.7529907226562, "coord_origin": "TOPLEFT"}, "confidence": 0.9552512764930725, "cells": [{"id": 12, "text": "http://www.ibm.com/partnerworld/wps/servlet/ContentHandler/stg_ast_sys_wp_db2_i_in", "bbox": {"l": 136.79999, "t": 613.15764, "r": 546.53442, "b": 621.9323899999999, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "dexing_methods_strategies", "bbox": {"l": 136.79999, "t": 625.15744, "r": 261.71826, "b": 633.93219, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "section_header", "bbox": {"l": 64.1768798828125, "t": 653.7276000976562, "r": 251.73373, "b": 667.0787353515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9654273390769958, "cells": [{"id": 14, "text": "6.4.3", "bbox": {"l": 64.800003, "t": 654.8347200000001, "r": 94.251732, "b": 666.82272, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Metadata using catalogs", "bbox": {"l": 97.933197, "t": 654.8347200000001, "r": 251.73373, "b": 666.82272, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 135.8922119140625, "t": 679.9402465820312, "r": 519.3606, "b": 726.3667602539062, "coord_origin": "TOPLEFT"}, "confidence": 0.9741504192352295, "cells": [{"id": 16, "text": "To make the discovery and identification of RCAC row permissions and column masks ", "bbox": {"l": 136.8, "t": 680.9887200000001, "r": 519.3606, "b": 690.20172, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "programmatically, query the QSYS2.SYSCONTROLS catalog view or the ", "bbox": {"l": 136.8, "t": 692.988525, "r": 461.96115, "b": 702.20153, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "QSYS2.SYSCONTROLSDEP catalog view directly. Otherwise, the System i Navigator ", "bbox": {"l": 136.8, "t": 704.988335, "r": 518.80981, "b": 714.20134, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Database graphical interface can be used interactively.", "bbox": {"l": 136.80099, "t": 716.988144, "r": 377.75638, "b": 726.201149, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "picture", "bbox": {"l": 136.10072326660156, "t": 107.46050262451172, "r": 547.119140625, "b": 378.9705810546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9820297360420227, "cells": [{"id": 20, "text": "SELECT *", "bbox": {"l": 157.9931, "t": 149.12018, "r": 203.30074, "b": 159.40918, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "FROM ACCOUNTS A", "bbox": {"l": 157.9931, "t": 170.76196000000004, "r": 261.50269, "b": 181.05096000000003, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "WHERE A.", "bbox": {"l": 157.9931, "t": 192.40283, "r": 207.43439, "b": 202.69182999999998, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ACCOUNT_NUMBER", "bbox": {"l": 207.4079, "t": 192.40283, "r": 308.69241, "b": 202.70385999999996, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "= ?", "bbox": {"l": 311.45059, "t": 192.40283, "r": 325.75049, "b": 202.69182999999998, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "AND", "bbox": {"l": 157.99429, "t": 214.04462, "r": 180.14389, "b": 224.33362, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "A.CUSTOMER ID IN (", "bbox": {"l": 197.36319, "t": 214.04462, "r": 299.22586, "b": 224.33362, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "_", "bbox": {"l": 262.95361, "t": 214.04418999999996, "r": 268.9465, "b": 224.33318999999995, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "(", "bbox": {"l": 295.57959, "t": 214.04418999999996, "r": 299.22586, "b": 224.33318999999995, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "SELECT C.", "bbox": {"l": 236.68889999999996, "t": 235.68548999999996, "r": 285.47073, "b": 245.97448999999995, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CUSTOMER_ID", "bbox": {"l": 285.51285, "t": 235.68548999999996, "r": 359.03998, "b": 245.98650999999995, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "FROM CUSTOMERS C", "bbox": {"l": 236.68889999999996, "t": 257.32678, "r": 346.32556, "b": 267.61578, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "WHERE C.", "bbox": {"l": 236.68889999999996, "t": 278.96813999999995, "r": 285.50443, "b": 289.25711000000007, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "CUSTOMER_LOGIN_ID", "bbox": {"l": 285.51285, "t": 278.96813999999995, "r": 396.81561, "b": 289.26913, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "= CUSTOMER_LOGIN_ID);", "bbox": {"l": 399.42456, "t": 278.96813999999995, "r": 524.35449, "b": 289.25711000000007, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "A.CUSTOMER_ID has an index (via the foreign key constraint)", "bbox": {"l": 204.2925, "t": 321.07211, "r": 472.9567, "b": 330.41876, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "A ACCOUNT NUMBER d", "bbox": {"l": 204.2925, "t": 347.30402, "r": 311.6994, "b": 356.65067, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "t h", "bbox": {"l": 340.37268, "t": 347.30402, "r": 352.16086, "b": 356.65067, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "i", "bbox": {"l": 383.88382, "t": 347.30402, "r": 387.12537, "b": 356.65067, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "d", "bbox": {"l": 390.32446, "t": 347.30402, "r": 397.60028, "b": 356.65067, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "A.ACCOUNT_NUMBER does not have an index", "bbox": {"l": 204.2925, "t": 347.30402, "r": 407.07541, "b": 356.65067, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "C.CUSTOMER_LOGIN_ID, C.CCUSTOMER_ID does not have an index", "bbox": {"l": 204.29321, "t": 360.41992, "r": 499.13022, "b": 369.76657, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "picture", "bbox": {"l": 64.22953796386719, "t": 443.35888671875, "r": 510.0937805175781, "b": 554.72021484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9759700298309326, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 115, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.36641693115234, "t": 754.297607421875, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9257708787918091, "cells": [{"id": 0, "text": "100 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "100"}, {"label": "page_footer", "id": 1, "page_no": 115, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.54092407226562, "t": 754.6331787109375, "r": 339.8568115234375, "b": 764.0162353515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9520395398139954, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 2, "page_no": 115, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.3820037841797, "t": 70.64859008789062, "r": 529.22491, "b": 92.91596984863281, "coord_origin": "TOPLEFT"}, "confidence": 0.9596586227416992, "cells": [{"id": 2, "text": "For example, the query that is shown in Figure 6-18 produces index advice for the user\u2019s ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 529.22491, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "predicate and the RCAC predicate.", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 291.40308, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "For example, the query that is shown in Figure 6-18 produces index advice for the user\u2019s predicate and the RCAC predicate."}, {"label": "caption", "id": 3, "page_no": 115, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.15460205078125, "t": 381.4628601074219, "r": 286.3040466308594, "b": 390.739990234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9480466842651367, "cells": [{"id": 4, "text": "Figure 6-18 Index advice and RCAC", "bbox": {"l": 136.8, "t": 381.91799999999995, "r": 285.60236, "b": 390.24301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-18 Index advice and RCAC"}, {"label": "text", "id": 4, "page_no": 115, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.26499938964844, "t": 407.0609130859375, "r": 530.6283, "b": 429.14151, "coord_origin": "TOPLEFT"}, "confidence": 0.9521172642707825, "cells": [{"id": 5, "text": "In Figure 6-19, index advisor is showing an index for the ACCOUNTS and CUSTOMERS ", "bbox": {"l": 136.8, "t": 407.92870999999997, "r": 530.6283, "b": 417.14169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "tables based on the RCAC rule text.", "bbox": {"l": 136.8, "t": 419.9285300000001, "r": 295.63611, "b": 429.14151, "coord_origin": "TOPLEFT"}}]}, "text": "In Figure 6-19, index advisor is showing an index for the ACCOUNTS and CUSTOMERS tables based on the RCAC rule text."}, {"label": "caption", "id": 5, "page_no": 115, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.29851531982422, "t": 557.3598022460938, "r": 271.84735107421875, "b": 566.8680419921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9459379315376282, "cells": [{"id": 7, "text": "Figure 6-19 Index advisor based on the RCAC rule", "bbox": {"l": 64.800003, "t": 558.0178999999999, "r": 271.233, "b": 566.34291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-19 Index advisor based on the RCAC rule"}, {"label": "text", "id": 6, "page_no": 115, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.3258819580078, "t": 583.20947265625, "r": 545.00952, "b": 605.608154296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9606812596321106, "cells": [{"id": 8, "text": "For more information about creating and using indexes, see ", "bbox": {"l": 136.8, "t": 584.02863, "r": 402.31378, "b": 593.24162, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "IBM DB2 for i indexing methods ", "bbox": {"l": 402.36047, "t": 584.02863, "r": 545.00952, "b": 593.24162, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "and strategies", "bbox": {"l": 136.79999, "t": 596.02843, "r": 199.48126, "b": 605.2414200000001, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": ", found at:", "bbox": {"l": 199.3199, "t": 596.02843, "r": 243.46958999999998, "b": 605.2414200000001, "coord_origin": "TOPLEFT"}}]}, "text": "For more information about creating and using indexes, see IBM DB2 for i indexing methods and strategies , found at:"}, {"label": "text", "id": 7, "page_no": 115, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.258544921875, "t": 612.0850219726562, "r": 546.53442, "b": 634.7529907226562, "coord_origin": "TOPLEFT"}, "confidence": 0.9552512764930725, "cells": [{"id": 12, "text": "http://www.ibm.com/partnerworld/wps/servlet/ContentHandler/stg_ast_sys_wp_db2_i_in", "bbox": {"l": 136.79999, "t": 613.15764, "r": 546.53442, "b": 621.9323899999999, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "dexing_methods_strategies", "bbox": {"l": 136.79999, "t": 625.15744, "r": 261.71826, "b": 633.93219, "coord_origin": "TOPLEFT"}}]}, "text": "http://www.ibm.com/partnerworld/wps/servlet/ContentHandler/stg_ast_sys_wp_db2_i_in dexing_methods_strategies"}, {"label": "section_header", "id": 8, "page_no": 115, "cluster": {"id": 8, "label": "section_header", "bbox": {"l": 64.1768798828125, "t": 653.7276000976562, "r": 251.73373, "b": 667.0787353515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9654273390769958, "cells": [{"id": 14, "text": "6.4.3", "bbox": {"l": 64.800003, "t": 654.8347200000001, "r": 94.251732, "b": 666.82272, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Metadata using catalogs", "bbox": {"l": 97.933197, "t": 654.8347200000001, "r": 251.73373, "b": 666.82272, "coord_origin": "TOPLEFT"}}]}, "text": "6.4.3 Metadata using catalogs"}, {"label": "text", "id": 9, "page_no": 115, "cluster": {"id": 9, "label": "text", "bbox": {"l": 135.8922119140625, "t": 679.9402465820312, "r": 519.3606, "b": 726.3667602539062, "coord_origin": "TOPLEFT"}, "confidence": 0.9741504192352295, "cells": [{"id": 16, "text": "To make the discovery and identification of RCAC row permissions and column masks ", "bbox": {"l": 136.8, "t": 680.9887200000001, "r": 519.3606, "b": 690.20172, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "programmatically, query the QSYS2.SYSCONTROLS catalog view or the ", "bbox": {"l": 136.8, "t": 692.988525, "r": 461.96115, "b": 702.20153, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "QSYS2.SYSCONTROLSDEP catalog view directly. Otherwise, the System i Navigator ", "bbox": {"l": 136.8, "t": 704.988335, "r": 518.80981, "b": 714.20134, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Database graphical interface can be used interactively.", "bbox": {"l": 136.80099, "t": 716.988144, "r": 377.75638, "b": 726.201149, "coord_origin": "TOPLEFT"}}]}, "text": "To make the discovery and identification of RCAC row permissions and column masks programmatically, query the QSYS2.SYSCONTROLS catalog view or the QSYS2.SYSCONTROLSDEP catalog view directly. Otherwise, the System i Navigator Database graphical interface can be used interactively."}, {"label": "picture", "id": 10, "page_no": 115, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 136.10072326660156, "t": 107.46050262451172, "r": 547.119140625, "b": 378.9705810546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9820297360420227, "cells": [{"id": 20, "text": "SELECT *", "bbox": {"l": 157.9931, "t": 149.12018, "r": 203.30074, "b": 159.40918, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "FROM ACCOUNTS A", "bbox": {"l": 157.9931, "t": 170.76196000000004, "r": 261.50269, "b": 181.05096000000003, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "WHERE A.", "bbox": {"l": 157.9931, "t": 192.40283, "r": 207.43439, "b": 202.69182999999998, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ACCOUNT_NUMBER", "bbox": {"l": 207.4079, "t": 192.40283, "r": 308.69241, "b": 202.70385999999996, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "= ?", "bbox": {"l": 311.45059, "t": 192.40283, "r": 325.75049, "b": 202.69182999999998, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "AND", "bbox": {"l": 157.99429, "t": 214.04462, "r": 180.14389, "b": 224.33362, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "A.CUSTOMER ID IN (", "bbox": {"l": 197.36319, "t": 214.04462, "r": 299.22586, "b": 224.33362, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "_", "bbox": {"l": 262.95361, "t": 214.04418999999996, "r": 268.9465, "b": 224.33318999999995, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "(", "bbox": {"l": 295.57959, "t": 214.04418999999996, "r": 299.22586, "b": 224.33318999999995, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "SELECT C.", "bbox": {"l": 236.68889999999996, "t": 235.68548999999996, "r": 285.47073, "b": 245.97448999999995, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CUSTOMER_ID", "bbox": {"l": 285.51285, "t": 235.68548999999996, "r": 359.03998, "b": 245.98650999999995, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "FROM CUSTOMERS C", "bbox": {"l": 236.68889999999996, "t": 257.32678, "r": 346.32556, "b": 267.61578, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "WHERE C.", "bbox": {"l": 236.68889999999996, "t": 278.96813999999995, "r": 285.50443, "b": 289.25711000000007, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "CUSTOMER_LOGIN_ID", "bbox": {"l": 285.51285, "t": 278.96813999999995, "r": 396.81561, "b": 289.26913, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "= CUSTOMER_LOGIN_ID);", "bbox": {"l": 399.42456, "t": 278.96813999999995, "r": 524.35449, "b": 289.25711000000007, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "A.CUSTOMER_ID has an index (via the foreign key constraint)", "bbox": {"l": 204.2925, "t": 321.07211, "r": 472.9567, "b": 330.41876, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "A ACCOUNT NUMBER d", "bbox": {"l": 204.2925, "t": 347.30402, "r": 311.6994, "b": 356.65067, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "t h", "bbox": {"l": 340.37268, "t": 347.30402, "r": 352.16086, "b": 356.65067, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "i", "bbox": {"l": 383.88382, "t": 347.30402, "r": 387.12537, "b": 356.65067, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "d", "bbox": {"l": 390.32446, "t": 347.30402, "r": 397.60028, "b": 356.65067, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "A.ACCOUNT_NUMBER does not have an index", "bbox": {"l": 204.2925, "t": 347.30402, "r": 407.07541, "b": 356.65067, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "C.CUSTOMER_LOGIN_ID, C.CCUSTOMER_ID does not have an index", "bbox": {"l": 204.29321, "t": 360.41992, "r": 499.13022, "b": 369.76657, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 11, "page_no": 115, "cluster": {"id": 11, "label": "picture", "bbox": {"l": 64.22953796386719, "t": 443.35888671875, "r": 510.0937805175781, "b": 554.72021484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9759700298309326, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 115, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.3820037841797, "t": 70.64859008789062, "r": 529.22491, "b": 92.91596984863281, "coord_origin": "TOPLEFT"}, "confidence": 0.9596586227416992, "cells": [{"id": 2, "text": "For example, the query that is shown in Figure 6-18 produces index advice for the user\u2019s ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 529.22491, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "predicate and the RCAC predicate.", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 291.40308, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "For example, the query that is shown in Figure 6-18 produces index advice for the user\u2019s predicate and the RCAC predicate."}, {"label": "caption", "id": 3, "page_no": 115, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.15460205078125, "t": 381.4628601074219, "r": 286.3040466308594, "b": 390.739990234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9480466842651367, "cells": [{"id": 4, "text": "Figure 6-18 Index advice and RCAC", "bbox": {"l": 136.8, "t": 381.91799999999995, "r": 285.60236, "b": 390.24301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-18 Index advice and RCAC"}, {"label": "text", "id": 4, "page_no": 115, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.26499938964844, "t": 407.0609130859375, "r": 530.6283, "b": 429.14151, "coord_origin": "TOPLEFT"}, "confidence": 0.9521172642707825, "cells": [{"id": 5, "text": "In Figure 6-19, index advisor is showing an index for the ACCOUNTS and CUSTOMERS ", "bbox": {"l": 136.8, "t": 407.92870999999997, "r": 530.6283, "b": 417.14169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "tables based on the RCAC rule text.", "bbox": {"l": 136.8, "t": 419.9285300000001, "r": 295.63611, "b": 429.14151, "coord_origin": "TOPLEFT"}}]}, "text": "In Figure 6-19, index advisor is showing an index for the ACCOUNTS and CUSTOMERS tables based on the RCAC rule text."}, {"label": "caption", "id": 5, "page_no": 115, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.29851531982422, "t": 557.3598022460938, "r": 271.84735107421875, "b": 566.8680419921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9459379315376282, "cells": [{"id": 7, "text": "Figure 6-19 Index advisor based on the RCAC rule", "bbox": {"l": 64.800003, "t": 558.0178999999999, "r": 271.233, "b": 566.34291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-19 Index advisor based on the RCAC rule"}, {"label": "text", "id": 6, "page_no": 115, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.3258819580078, "t": 583.20947265625, "r": 545.00952, "b": 605.608154296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9606812596321106, "cells": [{"id": 8, "text": "For more information about creating and using indexes, see ", "bbox": {"l": 136.8, "t": 584.02863, "r": 402.31378, "b": 593.24162, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "IBM DB2 for i indexing methods ", "bbox": {"l": 402.36047, "t": 584.02863, "r": 545.00952, "b": 593.24162, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "and strategies", "bbox": {"l": 136.79999, "t": 596.02843, "r": 199.48126, "b": 605.2414200000001, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": ", found at:", "bbox": {"l": 199.3199, "t": 596.02843, "r": 243.46958999999998, "b": 605.2414200000001, "coord_origin": "TOPLEFT"}}]}, "text": "For more information about creating and using indexes, see IBM DB2 for i indexing methods and strategies , found at:"}, {"label": "text", "id": 7, "page_no": 115, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.258544921875, "t": 612.0850219726562, "r": 546.53442, "b": 634.7529907226562, "coord_origin": "TOPLEFT"}, "confidence": 0.9552512764930725, "cells": [{"id": 12, "text": "http://www.ibm.com/partnerworld/wps/servlet/ContentHandler/stg_ast_sys_wp_db2_i_in", "bbox": {"l": 136.79999, "t": 613.15764, "r": 546.53442, "b": 621.9323899999999, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "dexing_methods_strategies", "bbox": {"l": 136.79999, "t": 625.15744, "r": 261.71826, "b": 633.93219, "coord_origin": "TOPLEFT"}}]}, "text": "http://www.ibm.com/partnerworld/wps/servlet/ContentHandler/stg_ast_sys_wp_db2_i_in dexing_methods_strategies"}, {"label": "section_header", "id": 8, "page_no": 115, "cluster": {"id": 8, "label": "section_header", "bbox": {"l": 64.1768798828125, "t": 653.7276000976562, "r": 251.73373, "b": 667.0787353515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9654273390769958, "cells": [{"id": 14, "text": "6.4.3", "bbox": {"l": 64.800003, "t": 654.8347200000001, "r": 94.251732, "b": 666.82272, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Metadata using catalogs", "bbox": {"l": 97.933197, "t": 654.8347200000001, "r": 251.73373, "b": 666.82272, "coord_origin": "TOPLEFT"}}]}, "text": "6.4.3 Metadata using catalogs"}, {"label": "text", "id": 9, "page_no": 115, "cluster": {"id": 9, "label": "text", "bbox": {"l": 135.8922119140625, "t": 679.9402465820312, "r": 519.3606, "b": 726.3667602539062, "coord_origin": "TOPLEFT"}, "confidence": 0.9741504192352295, "cells": [{"id": 16, "text": "To make the discovery and identification of RCAC row permissions and column masks ", "bbox": {"l": 136.8, "t": 680.9887200000001, "r": 519.3606, "b": 690.20172, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "programmatically, query the QSYS2.SYSCONTROLS catalog view or the ", "bbox": {"l": 136.8, "t": 692.988525, "r": 461.96115, "b": 702.20153, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "QSYS2.SYSCONTROLSDEP catalog view directly. Otherwise, the System i Navigator ", "bbox": {"l": 136.8, "t": 704.988335, "r": 518.80981, "b": 714.20134, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Database graphical interface can be used interactively.", "bbox": {"l": 136.80099, "t": 716.988144, "r": 377.75638, "b": 726.201149, "coord_origin": "TOPLEFT"}}]}, "text": "To make the discovery and identification of RCAC row permissions and column masks programmatically, query the QSYS2.SYSCONTROLS catalog view or the QSYS2.SYSCONTROLSDEP catalog view directly. Otherwise, the System i Navigator Database graphical interface can be used interactively."}, {"label": "picture", "id": 10, "page_no": 115, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 136.10072326660156, "t": 107.46050262451172, "r": 547.119140625, "b": 378.9705810546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9820297360420227, "cells": [{"id": 20, "text": "SELECT *", "bbox": {"l": 157.9931, "t": 149.12018, "r": 203.30074, "b": 159.40918, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "FROM ACCOUNTS A", "bbox": {"l": 157.9931, "t": 170.76196000000004, "r": 261.50269, "b": 181.05096000000003, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "WHERE A.", "bbox": {"l": 157.9931, "t": 192.40283, "r": 207.43439, "b": 202.69182999999998, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ACCOUNT_NUMBER", "bbox": {"l": 207.4079, "t": 192.40283, "r": 308.69241, "b": 202.70385999999996, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "= ?", "bbox": {"l": 311.45059, "t": 192.40283, "r": 325.75049, "b": 202.69182999999998, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "AND", "bbox": {"l": 157.99429, "t": 214.04462, "r": 180.14389, "b": 224.33362, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "A.CUSTOMER ID IN (", "bbox": {"l": 197.36319, "t": 214.04462, "r": 299.22586, "b": 224.33362, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "_", "bbox": {"l": 262.95361, "t": 214.04418999999996, "r": 268.9465, "b": 224.33318999999995, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "(", "bbox": {"l": 295.57959, "t": 214.04418999999996, "r": 299.22586, "b": 224.33318999999995, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "SELECT C.", "bbox": {"l": 236.68889999999996, "t": 235.68548999999996, "r": 285.47073, "b": 245.97448999999995, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CUSTOMER_ID", "bbox": {"l": 285.51285, "t": 235.68548999999996, "r": 359.03998, "b": 245.98650999999995, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "FROM CUSTOMERS C", "bbox": {"l": 236.68889999999996, "t": 257.32678, "r": 346.32556, "b": 267.61578, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "WHERE C.", "bbox": {"l": 236.68889999999996, "t": 278.96813999999995, "r": 285.50443, "b": 289.25711000000007, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "CUSTOMER_LOGIN_ID", "bbox": {"l": 285.51285, "t": 278.96813999999995, "r": 396.81561, "b": 289.26913, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "= CUSTOMER_LOGIN_ID);", "bbox": {"l": 399.42456, "t": 278.96813999999995, "r": 524.35449, "b": 289.25711000000007, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "A.CUSTOMER_ID has an index (via the foreign key constraint)", "bbox": {"l": 204.2925, "t": 321.07211, "r": 472.9567, "b": 330.41876, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "A ACCOUNT NUMBER d", "bbox": {"l": 204.2925, "t": 347.30402, "r": 311.6994, "b": 356.65067, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "t h", "bbox": {"l": 340.37268, "t": 347.30402, "r": 352.16086, "b": 356.65067, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "i", "bbox": {"l": 383.88382, "t": 347.30402, "r": 387.12537, "b": 356.65067, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "d", "bbox": {"l": 390.32446, "t": 347.30402, "r": 397.60028, "b": 356.65067, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "A.ACCOUNT_NUMBER does not have an index", "bbox": {"l": 204.2925, "t": 347.30402, "r": 407.07541, "b": 356.65067, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "C.CUSTOMER_LOGIN_ID, C.CCUSTOMER_ID does not have an index", "bbox": {"l": 204.29321, "t": 360.41992, "r": 499.13022, "b": 369.76657, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 11, "page_no": 115, "cluster": {"id": 11, "label": "picture", "bbox": {"l": 64.22953796386719, "t": 443.35888671875, "r": 510.0937805175781, "b": 554.72021484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9759700298309326, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 115, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.36641693115234, "t": 754.297607421875, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9257708787918091, "cells": [{"id": 0, "text": "100 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "100"}, {"label": "page_footer", "id": 1, "page_no": 115, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.54092407226562, "t": 754.6331787109375, "r": 339.8568115234375, "b": 764.0162353515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9520395398139954, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 116, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 371.28, "t": 755.538002, "r": 517.96918, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "101", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Figure 6-20 shows the QSYS2.SYSCONTROLS catalog view.", "bbox": {"l": 136.8002, "t": 71.50903000000005, "r": 409.46722, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 6-20 RCAC and catalogs", "bbox": {"l": 64.800003, "t": 246.19799999999998, "r": 196.89209, "b": 254.52295000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "The SYSCONTROLS catalog view contains the following columns:", "bbox": {"l": 136.8, "t": 272.14868, "r": 430.36699999999996, "b": 281.36169, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 289.33768, "r": 141.78, "b": 298.11246, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "COLUMN_NAME", "bbox": {"l": 151.20016, "t": 289.18829, "r": 228.86325000000002, "b": 298.40128, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "GLYPH", "bbox": {"l": 136.8, "t": 301.33749, "r": 141.78, "b": 310.11227, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "CONTROL_TYPE", "bbox": {"l": 151.20016, "t": 301.18811, "r": 231.54153, "b": 310.40109000000007, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 313.33730999999995, "r": 141.78, "b": 322.11209, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "CREATE_TIME", "bbox": {"l": 151.20016, "t": 313.18793, "r": 219.97597, "b": 322.40091, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "GLYPH", "bbox": {"l": 136.8, "t": 325.33713000000006, "r": 141.78, "b": 334.11190999999997, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "ENABLE", "bbox": {"l": 151.20016, "t": 325.18774, "r": 190.62184, "b": 334.40073, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 337.33694, "r": 141.78, "b": 346.11172, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "ENFORCED", "bbox": {"l": 151.20016, "t": 337.18756, "r": 207.25305, "b": 346.40054000000003, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 349.33676, "r": 141.78, "b": 358.11154, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "ASP_NUMBER", "bbox": {"l": 151.20016, "t": 349.18738, "r": 220.03371999999996, "b": 358.40036, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "GLYPH", "bbox": {"l": 136.8, "t": 361.33658, "r": 141.78, "b": 370.11135999999993, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "IMPLICIT", "bbox": {"l": 151.20016, "t": 361.18719, "r": 193.41263, "b": 370.40018, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "GLYPH", "bbox": {"l": 136.8, "t": 373.33639999999997, "r": 141.78, "b": 382.11118000000005, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "LABEL", "bbox": {"l": 151.20016, "t": 373.18701, "r": 182.29428, "b": 382.39999, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "GLYPH", "bbox": {"l": 136.8, "t": 385.33621, "r": 141.78, "b": 394.11099, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "LAST_ALTERED", "bbox": {"l": 151.20016, "t": 385.18683, "r": 226.72983, "b": 394.39980999999995, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "GLYPH", "bbox": {"l": 136.8, "t": 397.33603, "r": 141.78, "b": 406.11081, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "LONG_COMMENT", "bbox": {"l": 151.20016, "t": 397.18665, "r": 236.66890999999998, "b": 406.39963000000006, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "GLYPH", "bbox": {"l": 136.8, "t": 409.33584999999994, "r": 141.78, "b": 418.11063, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "RCAC_NAME", "bbox": {"l": 151.20016, "t": 409.18646, "r": 213.68124, "b": 418.39944, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "GLYPH", "bbox": {"l": 136.8, "t": 421.33566, "r": 141.78, "b": 430.11044, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "RCAC_OWNER", "bbox": {"l": 151.20016, "t": 421.18628, "r": 222.78268, "b": 430.39926, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "GLYPH", "bbox": {"l": 136.8, "t": 433.33548, "r": 141.78, "b": 442.11026, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "RCAC_SCHEMA", "bbox": {"l": 151.20016, "t": 433.1861, "r": 227.54257000000004, "b": 442.39908, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "GLYPH", "bbox": {"l": 136.8, "t": 445.3353, "r": 141.78, "b": 454.11008, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "RULETEXT", "bbox": {"l": 151.20016, "t": 445.18591, "r": 202.96228, "b": 454.39889999999997, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "GLYPH", "bbox": {"l": 136.8, "t": 457.33511, "r": 141.78, "b": 466.10989, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "SYSTEM_COLUMN_NAME", "bbox": {"l": 151.20016, "t": 457.18573, "r": 275.5697, "b": 466.39871, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "GLYPH", "bbox": {"l": 136.8, "t": 469.33493, "r": 141.78, "b": 478.10971, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "SYSTEM_TABLE_NAME", "bbox": {"l": 151.20016, "t": 469.18555, "r": 262.72827, "b": 478.39853, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "GLYPH", "bbox": {"l": 136.8, "t": 481.33475, "r": 141.78, "b": 490.10953, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "SYSTEM_TABLE_SCHEMA", "bbox": {"l": 151.20016, "t": 481.18536, "r": 276.52487, "b": 490.39835, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "GLYPH", "bbox": {"l": 136.8, "t": 493.33456, "r": 141.78, "b": 502.10934, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "TABLE_NAME", "bbox": {"l": 151.20016, "t": 493.18518, "r": 216.03579999999997, "b": 502.39816, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "GLYPH", "bbox": {"l": 136.8, "t": 505.33438, "r": 141.78, "b": 514.10916, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "TABLE_SCHEMA", "bbox": {"l": 151.20016, "t": 505.185, "r": 230.00568000000004, "b": 514.39798, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "GLYPH", "bbox": {"l": 136.8, "t": 517.3342, "r": 141.78, "b": 526.10898, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "TBCORRELATION", "bbox": {"l": 151.20016, "t": 517.18481, "r": 235.02153, "b": 526.3978, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "The SYSCONTROLSDEP catalog view contains the following columns:", "bbox": {"l": 136.8, "t": 539.20438, "r": 451.01199, "b": 548.41737, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "GLYPH", "bbox": {"l": 136.8, "t": 556.33359, "r": 141.78, "b": 565.10834, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "COLUMN_NAME", "bbox": {"l": 151.20016, "t": 556.1841900000001, "r": 228.86325000000002, "b": 565.39719, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "GLYPH", "bbox": {"l": 136.8, "t": 568.33339, "r": 141.78, "b": 577.10814, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "CONTROL_TYPE", "bbox": {"l": 151.20016, "t": 568.18399, "r": 231.54153, "b": 577.39699, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "GLYPH", "bbox": {"l": 136.8, "t": 580.3331900000001, "r": 141.78, "b": 589.10794, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "IASP_NUMBER", "bbox": {"l": 151.20016, "t": 580.18379, "r": 222.81953000000001, "b": 589.39679, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "GLYPH", "bbox": {"l": 136.8, "t": 592.33299, "r": 141.78, "b": 601.10774, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "OBJECT_NAME", "bbox": {"l": 151.20016, "t": 592.18359, "r": 225.03064999999998, "b": 601.3965900000001, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "GLYPH", "bbox": {"l": 136.8, "t": 604.3327899999999, "r": 141.78, "b": 613.10754, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "OBJECT_SCHEMA", "bbox": {"l": 151.20016, "t": 604.1834, "r": 238.91888, "b": 613.39639, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "GLYPH", "bbox": {"l": 136.8, "t": 616.3326, "r": 141.78, "b": 625.10735, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "OBJECT_TYPE", "bbox": {"l": 151.20016, "t": 616.1831999999999, "r": 222.27176, "b": 625.3961899999999, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "GLYPH", "bbox": {"l": 136.8, "t": 628.3324, "r": 141.78, "b": 637.10715, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "PARM_SIGNATURE", "bbox": {"l": 151.20016, "t": 628.183, "r": 241.48854, "b": 637.396, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "GLYPH", "bbox": {"l": 136.8, "t": 640.3322000000001, "r": 141.78, "b": 649.10695, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "RCAC_NAME", "bbox": {"l": 151.20016, "t": 640.1828, "r": 213.68124, "b": 649.3958, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "GLYPH", "bbox": {"l": 136.8, "t": 652.332, "r": 141.78, "b": 661.10675, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "RCAC_SCHEMA", "bbox": {"l": 151.20016, "t": 652.1826, "r": 227.54257000000004, "b": 661.3956000000001, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "GLYPH", "bbox": {"l": 136.8, "t": 664.33181, "r": 141.78, "b": 673.10657, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "SYSTEM_TABLE_NAME", "bbox": {"l": 151.20016, "t": 664.1824, "r": 262.72827, "b": 673.39541, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "GLYPH", "bbox": {"l": 136.8, "t": 676.33162, "r": 141.78, "b": 685.10638, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "SYSTEM_TABLE_SCHEMA", "bbox": {"l": 151.20016, "t": 676.18221, "r": 276.52487, "b": 685.39522, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "For more information, see the ", "bbox": {"l": 136.8, "t": 698.201782, "r": 270.28992, "b": 707.414787, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "IBM i 7.2 DB2 for i SQL Reference Guide", "bbox": {"l": 270.29987, "t": 698.201782, "r": 451.84072999999995, "b": 707.414787, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": ", found at:", "bbox": {"l": 451.79996, "t": 698.201782, "r": 495.94863999999995, "b": 707.414787, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/db2/rbafzintro.htm?lang", "bbox": {"l": 136.80002, "t": 715.330994, "r": 546.53442, "b": 724.105751, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "=en", "bbox": {"l": 136.80002, "t": 727.3308030000001, "r": 151.74002, "b": 736.10556, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 370.6695251464844, "t": 754.8765258789062, "r": 517.96918, "b": 763.8857421875, "coord_origin": "TOPLEFT"}, "confidence": 0.947565495967865, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 371.28, "t": 755.538002, "r": 517.96918, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 530.2025146484375, "t": 754.233154296875, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9223108291625977, "cells": [{"id": 1, "text": "101", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 136.48927307128906, "t": 70.64897155761719, "r": 409.46722, "b": 81.03340148925781, "coord_origin": "TOPLEFT"}, "confidence": 0.6312575936317444, "cells": [{"id": 2, "text": "Figure 6-20 shows the QSYS2.SYSCONTROLS catalog view.", "bbox": {"l": 136.8002, "t": 71.50903000000005, "r": 409.46722, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.26973724365234, "t": 245.4910888671875, "r": 197.03440856933594, "b": 254.8696746826172, "coord_origin": "TOPLEFT"}, "confidence": 0.8850163221359253, "cells": [{"id": 3, "text": "Figure 6-20 RCAC and catalogs", "bbox": {"l": 64.800003, "t": 246.19799999999998, "r": 196.89209, "b": 254.52295000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 136.15829467773438, "t": 271.2189636230469, "r": 430.36699999999996, "b": 281.557861328125, "coord_origin": "TOPLEFT"}, "confidence": 0.8766745924949646, "cells": [{"id": 4, "text": "The SYSCONTROLS catalog view contains the following columns:", "bbox": {"l": 136.8, "t": 272.14868, "r": 430.36699999999996, "b": 281.36169, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 135.715576171875, "t": 288.5225830078125, "r": 229.52528381347656, "b": 298.40128, "coord_origin": "TOPLEFT"}, "confidence": 0.9187909364700317, "cells": [{"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 289.33768, "r": 141.78, "b": 298.11246, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "COLUMN_NAME", "bbox": {"l": 151.20016, "t": 289.18829, "r": 228.86325000000002, "b": 298.40128, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.78355407714844, "t": 300.58892822265625, "r": 231.54153, "b": 310.40109000000007, "coord_origin": "TOPLEFT"}, "confidence": 0.9145805835723877, "cells": [{"id": 7, "text": "GLYPH", "bbox": {"l": 136.8, "t": 301.33749, "r": 141.78, "b": 310.11227, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "CONTROL_TYPE", "bbox": {"l": 151.20016, "t": 301.18811, "r": 231.54153, "b": 310.40109000000007, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.8020477294922, "t": 312.4302673339844, "r": 219.97597, "b": 322.40091, "coord_origin": "TOPLEFT"}, "confidence": 0.9202974438667297, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 313.33730999999995, "r": 141.78, "b": 322.11209, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "CREATE_TIME", "bbox": {"l": 151.20016, "t": 313.18793, "r": 219.97597, "b": 322.40091, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.65097045898438, "t": 324.4266052246094, "r": 190.9705047607422, "b": 334.40073, "coord_origin": "TOPLEFT"}, "confidence": 0.9024768471717834, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.8, "t": 325.33713000000006, "r": 141.78, "b": 334.11190999999997, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "ENABLE", "bbox": {"l": 151.20016, "t": 325.18774, "r": 190.62184, "b": 334.40073, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.5606231689453, "t": 336.0796813964844, "r": 207.5435791015625, "b": 346.40054000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9086344838142395, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 337.33694, "r": 141.78, "b": 346.11172, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "ENFORCED", "bbox": {"l": 151.20016, "t": 337.18756, "r": 207.25305, "b": 346.40054000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 135.4138946533203, "t": 348.0664367675781, "r": 220.03371999999996, "b": 358.40036, "coord_origin": "TOPLEFT"}, "confidence": 0.9216498136520386, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 349.33676, "r": 141.78, "b": 358.11154, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "ASP_NUMBER", "bbox": {"l": 151.20016, "t": 349.18738, "r": 220.03371999999996, "b": 358.40036, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 135.53013610839844, "t": 360.2685852050781, "r": 193.41263, "b": 370.40018, "coord_origin": "TOPLEFT"}, "confidence": 0.908420741558075, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.8, "t": 361.33658, "r": 141.78, "b": 370.11135999999993, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "IMPLICIT", "bbox": {"l": 151.20016, "t": 361.18719, "r": 193.41263, "b": 370.40018, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "list_item", "bbox": {"l": 135.5832061767578, "t": 372.1552429199219, "r": 182.29428, "b": 382.39999, "coord_origin": "TOPLEFT"}, "confidence": 0.8999857902526855, "cells": [{"id": 19, "text": "GLYPH", "bbox": {"l": 136.8, "t": 373.33639999999997, "r": 141.78, "b": 382.11118000000005, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "LABEL", "bbox": {"l": 151.20016, "t": 373.18701, "r": 182.29428, "b": 382.39999, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "list_item", "bbox": {"l": 135.9365997314453, "t": 384.15179443359375, "r": 226.72983, "b": 394.39980999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9266810417175293, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.8, "t": 385.33621, "r": 141.78, "b": 394.11099, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "LAST_ALTERED", "bbox": {"l": 151.20016, "t": 385.18683, "r": 226.72983, "b": 394.39980999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "list_item", "bbox": {"l": 135.55462646484375, "t": 395.8648376464844, "r": 236.96395874023438, "b": 406.39963000000006, "coord_origin": "TOPLEFT"}, "confidence": 0.9251843690872192, "cells": [{"id": 23, "text": "GLYPH", "bbox": {"l": 136.8, "t": 397.33603, "r": 141.78, "b": 406.11081, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "LONG_COMMENT", "bbox": {"l": 151.20016, "t": 397.18665, "r": 236.66890999999998, "b": 406.39963000000006, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "list_item", "bbox": {"l": 135.59799194335938, "t": 408.1325378417969, "r": 213.861328125, "b": 418.39944, "coord_origin": "TOPLEFT"}, "confidence": 0.9111971855163574, "cells": [{"id": 25, "text": "GLYPH", "bbox": {"l": 136.8, "t": 409.33584999999994, "r": 141.78, "b": 418.11063, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "RCAC_NAME", "bbox": {"l": 151.20016, "t": 409.18646, "r": 213.68124, "b": 418.39944, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "list_item", "bbox": {"l": 135.62445068359375, "t": 419.9839782714844, "r": 223.28578186035156, "b": 430.39926, "coord_origin": "TOPLEFT"}, "confidence": 0.9163252115249634, "cells": [{"id": 27, "text": "GLYPH", "bbox": {"l": 136.8, "t": 421.33566, "r": 141.78, "b": 430.11044, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "RCAC_OWNER", "bbox": {"l": 151.20016, "t": 421.18628, "r": 222.78268, "b": 430.39926, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "list_item", "bbox": {"l": 135.59918212890625, "t": 431.9518737792969, "r": 227.91741943359375, "b": 442.39908, "coord_origin": "TOPLEFT"}, "confidence": 0.9221100211143494, "cells": [{"id": 29, "text": "GLYPH", "bbox": {"l": 136.8, "t": 433.33548, "r": 141.78, "b": 442.11026, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "RCAC_SCHEMA", "bbox": {"l": 151.20016, "t": 433.1861, "r": 227.54257000000004, "b": 442.39908, "coord_origin": "TOPLEFT"}}]}, {"id": 18, "label": "list_item", "bbox": {"l": 135.649658203125, "t": 444.19696044921875, "r": 202.96228, "b": 454.39889999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9048181772232056, "cells": [{"id": 31, "text": "GLYPH", "bbox": {"l": 136.8, "t": 445.3353, "r": 141.78, "b": 454.11008, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "RULETEXT", "bbox": {"l": 151.20016, "t": 445.18591, "r": 202.96228, "b": 454.39889999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 19, "label": "list_item", "bbox": {"l": 135.53004455566406, "t": 456.36712646484375, "r": 275.5697, "b": 466.39871, "coord_origin": "TOPLEFT"}, "confidence": 0.9331137537956238, "cells": [{"id": 33, "text": "GLYPH", "bbox": {"l": 136.8, "t": 457.33511, "r": 141.78, "b": 466.10989, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "SYSTEM_COLUMN_NAME", "bbox": {"l": 151.20016, "t": 457.18573, "r": 275.5697, "b": 466.39871, "coord_origin": "TOPLEFT"}}]}, {"id": 20, "label": "list_item", "bbox": {"l": 135.6468963623047, "t": 467.97235107421875, "r": 263.12493896484375, "b": 478.39853, "coord_origin": "TOPLEFT"}, "confidence": 0.9202753305435181, "cells": [{"id": 35, "text": "GLYPH", "bbox": {"l": 136.8, "t": 469.33493, "r": 141.78, "b": 478.10971, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "SYSTEM_TABLE_NAME", "bbox": {"l": 151.20016, "t": 469.18555, "r": 262.72827, "b": 478.39853, "coord_origin": "TOPLEFT"}}]}, {"id": 21, "label": "list_item", "bbox": {"l": 135.67005920410156, "t": 480.2753601074219, "r": 276.916015625, "b": 490.39835, "coord_origin": "TOPLEFT"}, "confidence": 0.93083256483078, "cells": [{"id": 37, "text": "GLYPH", "bbox": {"l": 136.8, "t": 481.33475, "r": 141.78, "b": 490.10953, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "SYSTEM_TABLE_SCHEMA", "bbox": {"l": 151.20016, "t": 481.18536, "r": 276.52487, "b": 490.39835, "coord_origin": "TOPLEFT"}}]}, {"id": 22, "label": "list_item", "bbox": {"l": 135.68890380859375, "t": 492.2499084472656, "r": 216.28732299804688, "b": 502.39816, "coord_origin": "TOPLEFT"}, "confidence": 0.9164599180221558, "cells": [{"id": 39, "text": "GLYPH", "bbox": {"l": 136.8, "t": 493.33456, "r": 141.78, "b": 502.10934, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "TABLE_NAME", "bbox": {"l": 151.20016, "t": 493.18518, "r": 216.03579999999997, "b": 502.39816, "coord_origin": "TOPLEFT"}}]}, {"id": 23, "label": "list_item", "bbox": {"l": 135.64125061035156, "t": 504.14703369140625, "r": 230.32113647460938, "b": 514.39798, "coord_origin": "TOPLEFT"}, "confidence": 0.9193540215492249, "cells": [{"id": 41, "text": "GLYPH", "bbox": {"l": 136.8, "t": 505.33438, "r": 141.78, "b": 514.10916, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "TABLE_SCHEMA", "bbox": {"l": 151.20016, "t": 505.185, "r": 230.00568000000004, "b": 514.39798, "coord_origin": "TOPLEFT"}}]}, {"id": 24, "label": "list_item", "bbox": {"l": 135.58006286621094, "t": 516.2754516601562, "r": 235.02153, "b": 526.3978, "coord_origin": "TOPLEFT"}, "confidence": 0.9276848435401917, "cells": [{"id": 43, "text": "GLYPH", "bbox": {"l": 136.8, "t": 517.3342, "r": 141.78, "b": 526.10898, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "TBCORRELATION", "bbox": {"l": 151.20016, "t": 517.18481, "r": 235.02153, "b": 526.3978, "coord_origin": "TOPLEFT"}}]}, {"id": 25, "label": "text", "bbox": {"l": 136.2348175048828, "t": 538.4920043945312, "r": 451.01199, "b": 548.9942626953125, "coord_origin": "TOPLEFT"}, "confidence": 0.8883419632911682, "cells": [{"id": 45, "text": "The SYSCONTROLSDEP catalog view contains the following columns:", "bbox": {"l": 136.8, "t": 539.20438, "r": 451.01199, "b": 548.41737, "coord_origin": "TOPLEFT"}}]}, {"id": 26, "label": "list_item", "bbox": {"l": 135.6955108642578, "t": 554.92236328125, "r": 229.20022583007812, "b": 565.39719, "coord_origin": "TOPLEFT"}, "confidence": 0.9285773634910583, "cells": [{"id": 46, "text": "GLYPH", "bbox": {"l": 136.8, "t": 556.33359, "r": 141.78, "b": 565.10834, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "COLUMN_NAME", "bbox": {"l": 151.20016, "t": 556.1841900000001, "r": 228.86325000000002, "b": 565.39719, "coord_origin": "TOPLEFT"}}]}, {"id": 27, "label": "list_item", "bbox": {"l": 135.7337188720703, "t": 567.2264404296875, "r": 231.54153, "b": 577.39699, "coord_origin": "TOPLEFT"}, "confidence": 0.9127693772315979, "cells": [{"id": 48, "text": "GLYPH", "bbox": {"l": 136.8, "t": 568.33339, "r": 141.78, "b": 577.10814, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "CONTROL_TYPE", "bbox": {"l": 151.20016, "t": 568.18399, "r": 231.54153, "b": 577.39699, "coord_origin": "TOPLEFT"}}]}, {"id": 28, "label": "list_item", "bbox": {"l": 135.7036590576172, "t": 579.0064086914062, "r": 223.13241577148438, "b": 589.39679, "coord_origin": "TOPLEFT"}, "confidence": 0.9143235683441162, "cells": [{"id": 50, "text": "GLYPH", "bbox": {"l": 136.8, "t": 580.3331900000001, "r": 141.78, "b": 589.10794, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "IASP_NUMBER", "bbox": {"l": 151.20016, "t": 580.18379, "r": 222.81953000000001, "b": 589.39679, "coord_origin": "TOPLEFT"}}]}, {"id": 29, "label": "list_item", "bbox": {"l": 135.64175415039062, "t": 590.69970703125, "r": 225.03064999999998, "b": 601.3965900000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9129092693328857, "cells": [{"id": 52, "text": "GLYPH", "bbox": {"l": 136.8, "t": 592.33299, "r": 141.78, "b": 601.10774, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "OBJECT_NAME", "bbox": {"l": 151.20016, "t": 592.18359, "r": 225.03064999999998, "b": 601.3965900000001, "coord_origin": "TOPLEFT"}}]}, {"id": 30, "label": "list_item", "bbox": {"l": 135.65492248535156, "t": 602.8453369140625, "r": 239.2605743408203, "b": 613.39639, "coord_origin": "TOPLEFT"}, "confidence": 0.9242467880249023, "cells": [{"id": 54, "text": "GLYPH", "bbox": {"l": 136.8, "t": 604.3327899999999, "r": 141.78, "b": 613.10754, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "OBJECT_SCHEMA", "bbox": {"l": 151.20016, "t": 604.1834, "r": 238.91888, "b": 613.39639, "coord_origin": "TOPLEFT"}}]}, {"id": 31, "label": "list_item", "bbox": {"l": 135.42955017089844, "t": 614.6676635742188, "r": 222.27176, "b": 625.3961899999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9121018648147583, "cells": [{"id": 56, "text": "GLYPH", "bbox": {"l": 136.8, "t": 616.3326, "r": 141.78, "b": 625.10735, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "OBJECT_TYPE", "bbox": {"l": 151.20016, "t": 616.1831999999999, "r": 222.27176, "b": 625.3961899999999, "coord_origin": "TOPLEFT"}}]}, {"id": 32, "label": "list_item", "bbox": {"l": 135.63658142089844, "t": 626.9090576171875, "r": 241.48854, "b": 637.396, "coord_origin": "TOPLEFT"}, "confidence": 0.9265965223312378, "cells": [{"id": 58, "text": "GLYPH", "bbox": {"l": 136.8, "t": 628.3324, "r": 141.78, "b": 637.10715, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "PARM_SIGNATURE", "bbox": {"l": 151.20016, "t": 628.183, "r": 241.48854, "b": 637.396, "coord_origin": "TOPLEFT"}}]}, {"id": 33, "label": "list_item", "bbox": {"l": 135.70877075195312, "t": 639.044921875, "r": 213.68124, "b": 649.3958, "coord_origin": "TOPLEFT"}, "confidence": 0.9117604494094849, "cells": [{"id": 60, "text": "GLYPH", "bbox": {"l": 136.8, "t": 640.3322000000001, "r": 141.78, "b": 649.10695, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "RCAC_NAME", "bbox": {"l": 151.20016, "t": 640.1828, "r": 213.68124, "b": 649.3958, "coord_origin": "TOPLEFT"}}]}, {"id": 34, "label": "list_item", "bbox": {"l": 135.70849609375, "t": 651.1845703125, "r": 227.56272888183594, "b": 661.3956000000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9165326356887817, "cells": [{"id": 62, "text": "GLYPH", "bbox": {"l": 136.8, "t": 652.332, "r": 141.78, "b": 661.10675, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "RCAC_SCHEMA", "bbox": {"l": 151.20016, "t": 652.1826, "r": 227.54257000000004, "b": 661.3956000000001, "coord_origin": "TOPLEFT"}}]}, {"id": 35, "label": "list_item", "bbox": {"l": 135.59637451171875, "t": 662.8261108398438, "r": 262.72827, "b": 673.39541, "coord_origin": "TOPLEFT"}, "confidence": 0.9273440837860107, "cells": [{"id": 64, "text": "GLYPH", "bbox": {"l": 136.8, "t": 664.33181, "r": 141.78, "b": 673.10657, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "SYSTEM_TABLE_NAME", "bbox": {"l": 151.20016, "t": 664.1824, "r": 262.72827, "b": 673.39541, "coord_origin": "TOPLEFT"}}]}, {"id": 36, "label": "list_item", "bbox": {"l": 135.5303497314453, "t": 675.0317993164062, "r": 276.7511291503906, "b": 685.39522, "coord_origin": "TOPLEFT"}, "confidence": 0.9355826377868652, "cells": [{"id": 66, "text": "GLYPH", "bbox": {"l": 136.8, "t": 676.33162, "r": 141.78, "b": 685.10638, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "SYSTEM_TABLE_SCHEMA", "bbox": {"l": 151.20016, "t": 676.18221, "r": 276.52487, "b": 685.39522, "coord_origin": "TOPLEFT"}}]}, {"id": 37, "label": "text", "bbox": {"l": 136.2892303466797, "t": 697.2129516601562, "r": 495.94863999999995, "b": 707.414787, "coord_origin": "TOPLEFT"}, "confidence": 0.8819487690925598, "cells": [{"id": 68, "text": "For more information, see the ", "bbox": {"l": 136.8, "t": 698.201782, "r": 270.28992, "b": 707.414787, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "IBM i 7.2 DB2 for i SQL Reference Guide", "bbox": {"l": 270.29987, "t": 698.201782, "r": 451.84072999999995, "b": 707.414787, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": ", found at:", "bbox": {"l": 451.79996, "t": 698.201782, "r": 495.94863999999995, "b": 707.414787, "coord_origin": "TOPLEFT"}}]}, {"id": 38, "label": "text", "bbox": {"l": 136.3297119140625, "t": 713.9354248046875, "r": 546.53442, "b": 736.10556, "coord_origin": "TOPLEFT"}, "confidence": 0.9137188792228699, "cells": [{"id": 71, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/db2/rbafzintro.htm?lang", "bbox": {"l": 136.80002, "t": 715.330994, "r": 546.53442, "b": 724.105751, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "=en", "bbox": {"l": 136.80002, "t": 727.3308030000001, "r": 151.74002, "b": 736.10556, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 116, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 370.6695251464844, "t": 754.8765258789062, "r": 517.96918, "b": 763.8857421875, "coord_origin": "TOPLEFT"}, "confidence": 0.947565495967865, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 371.28, "t": 755.538002, "r": 517.96918, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 116, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.2025146484375, "t": 754.233154296875, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9223108291625977, "cells": [{"id": 1, "text": "101", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "101"}, {"label": "section_header", "id": 2, "page_no": 116, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 136.48927307128906, "t": 70.64897155761719, "r": 409.46722, "b": 81.03340148925781, "coord_origin": "TOPLEFT"}, "confidence": 0.6312575936317444, "cells": [{"id": 2, "text": "Figure 6-20 shows the QSYS2.SYSCONTROLS catalog view.", "bbox": {"l": 136.8002, "t": 71.50903000000005, "r": 409.46722, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-20 shows the QSYS2.SYSCONTROLS catalog view."}, {"label": "caption", "id": 3, "page_no": 116, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.26973724365234, "t": 245.4910888671875, "r": 197.03440856933594, "b": 254.8696746826172, "coord_origin": "TOPLEFT"}, "confidence": 0.8850163221359253, "cells": [{"id": 3, "text": "Figure 6-20 RCAC and catalogs", "bbox": {"l": 64.800003, "t": 246.19799999999998, "r": 196.89209, "b": 254.52295000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-20 RCAC and catalogs"}, {"label": "text", "id": 4, "page_no": 116, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.15829467773438, "t": 271.2189636230469, "r": 430.36699999999996, "b": 281.557861328125, "coord_origin": "TOPLEFT"}, "confidence": 0.8766745924949646, "cells": [{"id": 4, "text": "The SYSCONTROLS catalog view contains the following columns:", "bbox": {"l": 136.8, "t": 272.14868, "r": 430.36699999999996, "b": 281.36169, "coord_origin": "TOPLEFT"}}]}, "text": "The SYSCONTROLS catalog view contains the following columns:"}, {"label": "list_item", "id": 5, "page_no": 116, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.715576171875, "t": 288.5225830078125, "r": 229.52528381347656, "b": 298.40128, "coord_origin": "TOPLEFT"}, "confidence": 0.9187909364700317, "cells": [{"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 289.33768, "r": 141.78, "b": 298.11246, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "COLUMN_NAME", "bbox": {"l": 151.20016, "t": 289.18829, "r": 228.86325000000002, "b": 298.40128, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH COLUMN_NAME"}, {"label": "list_item", "id": 6, "page_no": 116, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.78355407714844, "t": 300.58892822265625, "r": 231.54153, "b": 310.40109000000007, "coord_origin": "TOPLEFT"}, "confidence": 0.9145805835723877, "cells": [{"id": 7, "text": "GLYPH", "bbox": {"l": 136.8, "t": 301.33749, "r": 141.78, "b": 310.11227, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "CONTROL_TYPE", "bbox": {"l": 151.20016, "t": 301.18811, "r": 231.54153, "b": 310.40109000000007, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH CONTROL_TYPE"}, {"label": "list_item", "id": 7, "page_no": 116, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.8020477294922, "t": 312.4302673339844, "r": 219.97597, "b": 322.40091, "coord_origin": "TOPLEFT"}, "confidence": 0.9202974438667297, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 313.33730999999995, "r": 141.78, "b": 322.11209, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "CREATE_TIME", "bbox": {"l": 151.20016, "t": 313.18793, "r": 219.97597, "b": 322.40091, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH CREATE_TIME"}, {"label": "list_item", "id": 8, "page_no": 116, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.65097045898438, "t": 324.4266052246094, "r": 190.9705047607422, "b": 334.40073, "coord_origin": "TOPLEFT"}, "confidence": 0.9024768471717834, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.8, "t": 325.33713000000006, "r": 141.78, "b": 334.11190999999997, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "ENABLE", "bbox": {"l": 151.20016, "t": 325.18774, "r": 190.62184, "b": 334.40073, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH ENABLE"}, {"label": "list_item", "id": 9, "page_no": 116, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.5606231689453, "t": 336.0796813964844, "r": 207.5435791015625, "b": 346.40054000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9086344838142395, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 337.33694, "r": 141.78, "b": 346.11172, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "ENFORCED", "bbox": {"l": 151.20016, "t": 337.18756, "r": 207.25305, "b": 346.40054000000003, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH ENFORCED"}, {"label": "list_item", "id": 10, "page_no": 116, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.4138946533203, "t": 348.0664367675781, "r": 220.03371999999996, "b": 358.40036, "coord_origin": "TOPLEFT"}, "confidence": 0.9216498136520386, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 349.33676, "r": 141.78, "b": 358.11154, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "ASP_NUMBER", "bbox": {"l": 151.20016, "t": 349.18738, "r": 220.03371999999996, "b": 358.40036, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH ASP_NUMBER"}, {"label": "list_item", "id": 11, "page_no": 116, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.53013610839844, "t": 360.2685852050781, "r": 193.41263, "b": 370.40018, "coord_origin": "TOPLEFT"}, "confidence": 0.908420741558075, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.8, "t": 361.33658, "r": 141.78, "b": 370.11135999999993, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "IMPLICIT", "bbox": {"l": 151.20016, "t": 361.18719, "r": 193.41263, "b": 370.40018, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH IMPLICIT"}, {"label": "list_item", "id": 12, "page_no": 116, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 135.5832061767578, "t": 372.1552429199219, "r": 182.29428, "b": 382.39999, "coord_origin": "TOPLEFT"}, "confidence": 0.8999857902526855, "cells": [{"id": 19, "text": "GLYPH", "bbox": {"l": 136.8, "t": 373.33639999999997, "r": 141.78, "b": 382.11118000000005, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "LABEL", "bbox": {"l": 151.20016, "t": 373.18701, "r": 182.29428, "b": 382.39999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH LABEL"}, {"label": "list_item", "id": 13, "page_no": 116, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 135.9365997314453, "t": 384.15179443359375, "r": 226.72983, "b": 394.39980999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9266810417175293, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.8, "t": 385.33621, "r": 141.78, "b": 394.11099, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "LAST_ALTERED", "bbox": {"l": 151.20016, "t": 385.18683, "r": 226.72983, "b": 394.39980999999995, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH LAST_ALTERED"}, {"label": "list_item", "id": 14, "page_no": 116, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 135.55462646484375, "t": 395.8648376464844, "r": 236.96395874023438, "b": 406.39963000000006, "coord_origin": "TOPLEFT"}, "confidence": 0.9251843690872192, "cells": [{"id": 23, "text": "GLYPH", "bbox": {"l": 136.8, "t": 397.33603, "r": 141.78, "b": 406.11081, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "LONG_COMMENT", "bbox": {"l": 151.20016, "t": 397.18665, "r": 236.66890999999998, "b": 406.39963000000006, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH LONG_COMMENT"}, {"label": "list_item", "id": 15, "page_no": 116, "cluster": {"id": 15, "label": "list_item", "bbox": {"l": 135.59799194335938, "t": 408.1325378417969, "r": 213.861328125, "b": 418.39944, "coord_origin": "TOPLEFT"}, "confidence": 0.9111971855163574, "cells": [{"id": 25, "text": "GLYPH", "bbox": {"l": 136.8, "t": 409.33584999999994, "r": 141.78, "b": 418.11063, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "RCAC_NAME", "bbox": {"l": 151.20016, "t": 409.18646, "r": 213.68124, "b": 418.39944, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH RCAC_NAME"}, {"label": "list_item", "id": 16, "page_no": 116, "cluster": {"id": 16, "label": "list_item", "bbox": {"l": 135.62445068359375, "t": 419.9839782714844, "r": 223.28578186035156, "b": 430.39926, "coord_origin": "TOPLEFT"}, "confidence": 0.9163252115249634, "cells": [{"id": 27, "text": "GLYPH", "bbox": {"l": 136.8, "t": 421.33566, "r": 141.78, "b": 430.11044, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "RCAC_OWNER", "bbox": {"l": 151.20016, "t": 421.18628, "r": 222.78268, "b": 430.39926, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH RCAC_OWNER"}, {"label": "list_item", "id": 17, "page_no": 116, "cluster": {"id": 17, "label": "list_item", "bbox": {"l": 135.59918212890625, "t": 431.9518737792969, "r": 227.91741943359375, "b": 442.39908, "coord_origin": "TOPLEFT"}, "confidence": 0.9221100211143494, "cells": [{"id": 29, "text": "GLYPH", "bbox": {"l": 136.8, "t": 433.33548, "r": 141.78, "b": 442.11026, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "RCAC_SCHEMA", "bbox": {"l": 151.20016, "t": 433.1861, "r": 227.54257000000004, "b": 442.39908, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH RCAC_SCHEMA"}, {"label": "list_item", "id": 18, "page_no": 116, "cluster": {"id": 18, "label": "list_item", "bbox": {"l": 135.649658203125, "t": 444.19696044921875, "r": 202.96228, "b": 454.39889999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9048181772232056, "cells": [{"id": 31, "text": "GLYPH", "bbox": {"l": 136.8, "t": 445.3353, "r": 141.78, "b": 454.11008, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "RULETEXT", "bbox": {"l": 151.20016, "t": 445.18591, "r": 202.96228, "b": 454.39889999999997, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH RULETEXT"}, {"label": "list_item", "id": 19, "page_no": 116, "cluster": {"id": 19, "label": "list_item", "bbox": {"l": 135.53004455566406, "t": 456.36712646484375, "r": 275.5697, "b": 466.39871, "coord_origin": "TOPLEFT"}, "confidence": 0.9331137537956238, "cells": [{"id": 33, "text": "GLYPH", "bbox": {"l": 136.8, "t": 457.33511, "r": 141.78, "b": 466.10989, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "SYSTEM_COLUMN_NAME", "bbox": {"l": 151.20016, "t": 457.18573, "r": 275.5697, "b": 466.39871, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH SYSTEM_COLUMN_NAME"}, {"label": "list_item", "id": 20, "page_no": 116, "cluster": {"id": 20, "label": "list_item", "bbox": {"l": 135.6468963623047, "t": 467.97235107421875, "r": 263.12493896484375, "b": 478.39853, "coord_origin": "TOPLEFT"}, "confidence": 0.9202753305435181, "cells": [{"id": 35, "text": "GLYPH", "bbox": {"l": 136.8, "t": 469.33493, "r": 141.78, "b": 478.10971, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "SYSTEM_TABLE_NAME", "bbox": {"l": 151.20016, "t": 469.18555, "r": 262.72827, "b": 478.39853, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH SYSTEM_TABLE_NAME"}, {"label": "list_item", "id": 21, "page_no": 116, "cluster": {"id": 21, "label": "list_item", "bbox": {"l": 135.67005920410156, "t": 480.2753601074219, "r": 276.916015625, "b": 490.39835, "coord_origin": "TOPLEFT"}, "confidence": 0.93083256483078, "cells": [{"id": 37, "text": "GLYPH", "bbox": {"l": 136.8, "t": 481.33475, "r": 141.78, "b": 490.10953, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "SYSTEM_TABLE_SCHEMA", "bbox": {"l": 151.20016, "t": 481.18536, "r": 276.52487, "b": 490.39835, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH SYSTEM_TABLE_SCHEMA"}, {"label": "list_item", "id": 22, "page_no": 116, "cluster": {"id": 22, "label": "list_item", "bbox": {"l": 135.68890380859375, "t": 492.2499084472656, "r": 216.28732299804688, "b": 502.39816, "coord_origin": "TOPLEFT"}, "confidence": 0.9164599180221558, "cells": [{"id": 39, "text": "GLYPH", "bbox": {"l": 136.8, "t": 493.33456, "r": 141.78, "b": 502.10934, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "TABLE_NAME", "bbox": {"l": 151.20016, "t": 493.18518, "r": 216.03579999999997, "b": 502.39816, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH TABLE_NAME"}, {"label": "list_item", "id": 23, "page_no": 116, "cluster": {"id": 23, "label": "list_item", "bbox": {"l": 135.64125061035156, "t": 504.14703369140625, "r": 230.32113647460938, "b": 514.39798, "coord_origin": "TOPLEFT"}, "confidence": 0.9193540215492249, "cells": [{"id": 41, "text": "GLYPH", "bbox": {"l": 136.8, "t": 505.33438, "r": 141.78, "b": 514.10916, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "TABLE_SCHEMA", "bbox": {"l": 151.20016, "t": 505.185, "r": 230.00568000000004, "b": 514.39798, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH TABLE_SCHEMA"}, {"label": "list_item", "id": 24, "page_no": 116, "cluster": {"id": 24, "label": "list_item", "bbox": {"l": 135.58006286621094, "t": 516.2754516601562, "r": 235.02153, "b": 526.3978, "coord_origin": "TOPLEFT"}, "confidence": 0.9276848435401917, "cells": [{"id": 43, "text": "GLYPH", "bbox": {"l": 136.8, "t": 517.3342, "r": 141.78, "b": 526.10898, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "TBCORRELATION", "bbox": {"l": 151.20016, "t": 517.18481, "r": 235.02153, "b": 526.3978, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH TBCORRELATION"}, {"label": "text", "id": 25, "page_no": 116, "cluster": {"id": 25, "label": "text", "bbox": {"l": 136.2348175048828, "t": 538.4920043945312, "r": 451.01199, "b": 548.9942626953125, "coord_origin": "TOPLEFT"}, "confidence": 0.8883419632911682, "cells": [{"id": 45, "text": "The SYSCONTROLSDEP catalog view contains the following columns:", "bbox": {"l": 136.8, "t": 539.20438, "r": 451.01199, "b": 548.41737, "coord_origin": "TOPLEFT"}}]}, "text": "The SYSCONTROLSDEP catalog view contains the following columns:"}, {"label": "list_item", "id": 26, "page_no": 116, "cluster": {"id": 26, "label": "list_item", "bbox": {"l": 135.6955108642578, "t": 554.92236328125, "r": 229.20022583007812, "b": 565.39719, "coord_origin": "TOPLEFT"}, "confidence": 0.9285773634910583, "cells": [{"id": 46, "text": "GLYPH", "bbox": {"l": 136.8, "t": 556.33359, "r": 141.78, "b": 565.10834, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "COLUMN_NAME", "bbox": {"l": 151.20016, "t": 556.1841900000001, "r": 228.86325000000002, "b": 565.39719, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH COLUMN_NAME"}, {"label": "list_item", "id": 27, "page_no": 116, "cluster": {"id": 27, "label": "list_item", "bbox": {"l": 135.7337188720703, "t": 567.2264404296875, "r": 231.54153, "b": 577.39699, "coord_origin": "TOPLEFT"}, "confidence": 0.9127693772315979, "cells": [{"id": 48, "text": "GLYPH", "bbox": {"l": 136.8, "t": 568.33339, "r": 141.78, "b": 577.10814, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "CONTROL_TYPE", "bbox": {"l": 151.20016, "t": 568.18399, "r": 231.54153, "b": 577.39699, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH CONTROL_TYPE"}, {"label": "list_item", "id": 28, "page_no": 116, "cluster": {"id": 28, "label": "list_item", "bbox": {"l": 135.7036590576172, "t": 579.0064086914062, "r": 223.13241577148438, "b": 589.39679, "coord_origin": "TOPLEFT"}, "confidence": 0.9143235683441162, "cells": [{"id": 50, "text": "GLYPH", "bbox": {"l": 136.8, "t": 580.3331900000001, "r": 141.78, "b": 589.10794, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "IASP_NUMBER", "bbox": {"l": 151.20016, "t": 580.18379, "r": 222.81953000000001, "b": 589.39679, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH IASP_NUMBER"}, {"label": "list_item", "id": 29, "page_no": 116, "cluster": {"id": 29, "label": "list_item", "bbox": {"l": 135.64175415039062, "t": 590.69970703125, "r": 225.03064999999998, "b": 601.3965900000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9129092693328857, "cells": [{"id": 52, "text": "GLYPH", "bbox": {"l": 136.8, "t": 592.33299, "r": 141.78, "b": 601.10774, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "OBJECT_NAME", "bbox": {"l": 151.20016, "t": 592.18359, "r": 225.03064999999998, "b": 601.3965900000001, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH OBJECT_NAME"}, {"label": "list_item", "id": 30, "page_no": 116, "cluster": {"id": 30, "label": "list_item", "bbox": {"l": 135.65492248535156, "t": 602.8453369140625, "r": 239.2605743408203, "b": 613.39639, "coord_origin": "TOPLEFT"}, "confidence": 0.9242467880249023, "cells": [{"id": 54, "text": "GLYPH", "bbox": {"l": 136.8, "t": 604.3327899999999, "r": 141.78, "b": 613.10754, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "OBJECT_SCHEMA", "bbox": {"l": 151.20016, "t": 604.1834, "r": 238.91888, "b": 613.39639, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH OBJECT_SCHEMA"}, {"label": "list_item", "id": 31, "page_no": 116, "cluster": {"id": 31, "label": "list_item", "bbox": {"l": 135.42955017089844, "t": 614.6676635742188, "r": 222.27176, "b": 625.3961899999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9121018648147583, "cells": [{"id": 56, "text": "GLYPH", "bbox": {"l": 136.8, "t": 616.3326, "r": 141.78, "b": 625.10735, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "OBJECT_TYPE", "bbox": {"l": 151.20016, "t": 616.1831999999999, "r": 222.27176, "b": 625.3961899999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH OBJECT_TYPE"}, {"label": "list_item", "id": 32, "page_no": 116, "cluster": {"id": 32, "label": "list_item", "bbox": {"l": 135.63658142089844, "t": 626.9090576171875, "r": 241.48854, "b": 637.396, "coord_origin": "TOPLEFT"}, "confidence": 0.9265965223312378, "cells": [{"id": 58, "text": "GLYPH", "bbox": {"l": 136.8, "t": 628.3324, "r": 141.78, "b": 637.10715, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "PARM_SIGNATURE", "bbox": {"l": 151.20016, "t": 628.183, "r": 241.48854, "b": 637.396, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH PARM_SIGNATURE"}, {"label": "list_item", "id": 33, "page_no": 116, "cluster": {"id": 33, "label": "list_item", "bbox": {"l": 135.70877075195312, "t": 639.044921875, "r": 213.68124, "b": 649.3958, "coord_origin": "TOPLEFT"}, "confidence": 0.9117604494094849, "cells": [{"id": 60, "text": "GLYPH", "bbox": {"l": 136.8, "t": 640.3322000000001, "r": 141.78, "b": 649.10695, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "RCAC_NAME", "bbox": {"l": 151.20016, "t": 640.1828, "r": 213.68124, "b": 649.3958, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH RCAC_NAME"}, {"label": "list_item", "id": 34, "page_no": 116, "cluster": {"id": 34, "label": "list_item", "bbox": {"l": 135.70849609375, "t": 651.1845703125, "r": 227.56272888183594, "b": 661.3956000000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9165326356887817, "cells": [{"id": 62, "text": "GLYPH", "bbox": {"l": 136.8, "t": 652.332, "r": 141.78, "b": 661.10675, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "RCAC_SCHEMA", "bbox": {"l": 151.20016, "t": 652.1826, "r": 227.54257000000004, "b": 661.3956000000001, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH RCAC_SCHEMA"}, {"label": "list_item", "id": 35, "page_no": 116, "cluster": {"id": 35, "label": "list_item", "bbox": {"l": 135.59637451171875, "t": 662.8261108398438, "r": 262.72827, "b": 673.39541, "coord_origin": "TOPLEFT"}, "confidence": 0.9273440837860107, "cells": [{"id": 64, "text": "GLYPH", "bbox": {"l": 136.8, "t": 664.33181, "r": 141.78, "b": 673.10657, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "SYSTEM_TABLE_NAME", "bbox": {"l": 151.20016, "t": 664.1824, "r": 262.72827, "b": 673.39541, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH SYSTEM_TABLE_NAME"}, {"label": "list_item", "id": 36, "page_no": 116, "cluster": {"id": 36, "label": "list_item", "bbox": {"l": 135.5303497314453, "t": 675.0317993164062, "r": 276.7511291503906, "b": 685.39522, "coord_origin": "TOPLEFT"}, "confidence": 0.9355826377868652, "cells": [{"id": 66, "text": "GLYPH", "bbox": {"l": 136.8, "t": 676.33162, "r": 141.78, "b": 685.10638, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "SYSTEM_TABLE_SCHEMA", "bbox": {"l": 151.20016, "t": 676.18221, "r": 276.52487, "b": 685.39522, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH SYSTEM_TABLE_SCHEMA"}, {"label": "text", "id": 37, "page_no": 116, "cluster": {"id": 37, "label": "text", "bbox": {"l": 136.2892303466797, "t": 697.2129516601562, "r": 495.94863999999995, "b": 707.414787, "coord_origin": "TOPLEFT"}, "confidence": 0.8819487690925598, "cells": [{"id": 68, "text": "For more information, see the ", "bbox": {"l": 136.8, "t": 698.201782, "r": 270.28992, "b": 707.414787, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "IBM i 7.2 DB2 for i SQL Reference Guide", "bbox": {"l": 270.29987, "t": 698.201782, "r": 451.84072999999995, "b": 707.414787, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": ", found at:", "bbox": {"l": 451.79996, "t": 698.201782, "r": 495.94863999999995, "b": 707.414787, "coord_origin": "TOPLEFT"}}]}, "text": "For more information, see the IBM i 7.2 DB2 for i SQL Reference Guide , found at:"}, {"label": "text", "id": 38, "page_no": 116, "cluster": {"id": 38, "label": "text", "bbox": {"l": 136.3297119140625, "t": 713.9354248046875, "r": 546.53442, "b": 736.10556, "coord_origin": "TOPLEFT"}, "confidence": 0.9137188792228699, "cells": [{"id": 71, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/db2/rbafzintro.htm?lang", "bbox": {"l": 136.80002, "t": 715.330994, "r": 546.53442, "b": 724.105751, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "=en", "bbox": {"l": 136.80002, "t": 727.3308030000001, "r": 151.74002, "b": 736.10556, "coord_origin": "TOPLEFT"}}]}, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/db2/rbafzintro.htm?lang =en"}], "body": [{"label": "section_header", "id": 2, "page_no": 116, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 136.48927307128906, "t": 70.64897155761719, "r": 409.46722, "b": 81.03340148925781, "coord_origin": "TOPLEFT"}, "confidence": 0.6312575936317444, "cells": [{"id": 2, "text": "Figure 6-20 shows the QSYS2.SYSCONTROLS catalog view.", "bbox": {"l": 136.8002, "t": 71.50903000000005, "r": 409.46722, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-20 shows the QSYS2.SYSCONTROLS catalog view."}, {"label": "caption", "id": 3, "page_no": 116, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.26973724365234, "t": 245.4910888671875, "r": 197.03440856933594, "b": 254.8696746826172, "coord_origin": "TOPLEFT"}, "confidence": 0.8850163221359253, "cells": [{"id": 3, "text": "Figure 6-20 RCAC and catalogs", "bbox": {"l": 64.800003, "t": 246.19799999999998, "r": 196.89209, "b": 254.52295000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-20 RCAC and catalogs"}, {"label": "text", "id": 4, "page_no": 116, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.15829467773438, "t": 271.2189636230469, "r": 430.36699999999996, "b": 281.557861328125, "coord_origin": "TOPLEFT"}, "confidence": 0.8766745924949646, "cells": [{"id": 4, "text": "The SYSCONTROLS catalog view contains the following columns:", "bbox": {"l": 136.8, "t": 272.14868, "r": 430.36699999999996, "b": 281.36169, "coord_origin": "TOPLEFT"}}]}, "text": "The SYSCONTROLS catalog view contains the following columns:"}, {"label": "list_item", "id": 5, "page_no": 116, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.715576171875, "t": 288.5225830078125, "r": 229.52528381347656, "b": 298.40128, "coord_origin": "TOPLEFT"}, "confidence": 0.9187909364700317, "cells": [{"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 289.33768, "r": 141.78, "b": 298.11246, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "COLUMN_NAME", "bbox": {"l": 151.20016, "t": 289.18829, "r": 228.86325000000002, "b": 298.40128, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH COLUMN_NAME"}, {"label": "list_item", "id": 6, "page_no": 116, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.78355407714844, "t": 300.58892822265625, "r": 231.54153, "b": 310.40109000000007, "coord_origin": "TOPLEFT"}, "confidence": 0.9145805835723877, "cells": [{"id": 7, "text": "GLYPH", "bbox": {"l": 136.8, "t": 301.33749, "r": 141.78, "b": 310.11227, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "CONTROL_TYPE", "bbox": {"l": 151.20016, "t": 301.18811, "r": 231.54153, "b": 310.40109000000007, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH CONTROL_TYPE"}, {"label": "list_item", "id": 7, "page_no": 116, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.8020477294922, "t": 312.4302673339844, "r": 219.97597, "b": 322.40091, "coord_origin": "TOPLEFT"}, "confidence": 0.9202974438667297, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 313.33730999999995, "r": 141.78, "b": 322.11209, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "CREATE_TIME", "bbox": {"l": 151.20016, "t": 313.18793, "r": 219.97597, "b": 322.40091, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH CREATE_TIME"}, {"label": "list_item", "id": 8, "page_no": 116, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.65097045898438, "t": 324.4266052246094, "r": 190.9705047607422, "b": 334.40073, "coord_origin": "TOPLEFT"}, "confidence": 0.9024768471717834, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.8, "t": 325.33713000000006, "r": 141.78, "b": 334.11190999999997, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "ENABLE", "bbox": {"l": 151.20016, "t": 325.18774, "r": 190.62184, "b": 334.40073, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH ENABLE"}, {"label": "list_item", "id": 9, "page_no": 116, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.5606231689453, "t": 336.0796813964844, "r": 207.5435791015625, "b": 346.40054000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9086344838142395, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 337.33694, "r": 141.78, "b": 346.11172, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "ENFORCED", "bbox": {"l": 151.20016, "t": 337.18756, "r": 207.25305, "b": 346.40054000000003, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH ENFORCED"}, {"label": "list_item", "id": 10, "page_no": 116, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.4138946533203, "t": 348.0664367675781, "r": 220.03371999999996, "b": 358.40036, "coord_origin": "TOPLEFT"}, "confidence": 0.9216498136520386, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 349.33676, "r": 141.78, "b": 358.11154, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "ASP_NUMBER", "bbox": {"l": 151.20016, "t": 349.18738, "r": 220.03371999999996, "b": 358.40036, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH ASP_NUMBER"}, {"label": "list_item", "id": 11, "page_no": 116, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.53013610839844, "t": 360.2685852050781, "r": 193.41263, "b": 370.40018, "coord_origin": "TOPLEFT"}, "confidence": 0.908420741558075, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.8, "t": 361.33658, "r": 141.78, "b": 370.11135999999993, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "IMPLICIT", "bbox": {"l": 151.20016, "t": 361.18719, "r": 193.41263, "b": 370.40018, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH IMPLICIT"}, {"label": "list_item", "id": 12, "page_no": 116, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 135.5832061767578, "t": 372.1552429199219, "r": 182.29428, "b": 382.39999, "coord_origin": "TOPLEFT"}, "confidence": 0.8999857902526855, "cells": [{"id": 19, "text": "GLYPH", "bbox": {"l": 136.8, "t": 373.33639999999997, "r": 141.78, "b": 382.11118000000005, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "LABEL", "bbox": {"l": 151.20016, "t": 373.18701, "r": 182.29428, "b": 382.39999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH LABEL"}, {"label": "list_item", "id": 13, "page_no": 116, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 135.9365997314453, "t": 384.15179443359375, "r": 226.72983, "b": 394.39980999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9266810417175293, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.8, "t": 385.33621, "r": 141.78, "b": 394.11099, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "LAST_ALTERED", "bbox": {"l": 151.20016, "t": 385.18683, "r": 226.72983, "b": 394.39980999999995, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH LAST_ALTERED"}, {"label": "list_item", "id": 14, "page_no": 116, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 135.55462646484375, "t": 395.8648376464844, "r": 236.96395874023438, "b": 406.39963000000006, "coord_origin": "TOPLEFT"}, "confidence": 0.9251843690872192, "cells": [{"id": 23, "text": "GLYPH", "bbox": {"l": 136.8, "t": 397.33603, "r": 141.78, "b": 406.11081, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "LONG_COMMENT", "bbox": {"l": 151.20016, "t": 397.18665, "r": 236.66890999999998, "b": 406.39963000000006, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH LONG_COMMENT"}, {"label": "list_item", "id": 15, "page_no": 116, "cluster": {"id": 15, "label": "list_item", "bbox": {"l": 135.59799194335938, "t": 408.1325378417969, "r": 213.861328125, "b": 418.39944, "coord_origin": "TOPLEFT"}, "confidence": 0.9111971855163574, "cells": [{"id": 25, "text": "GLYPH", "bbox": {"l": 136.8, "t": 409.33584999999994, "r": 141.78, "b": 418.11063, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "RCAC_NAME", "bbox": {"l": 151.20016, "t": 409.18646, "r": 213.68124, "b": 418.39944, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH RCAC_NAME"}, {"label": "list_item", "id": 16, "page_no": 116, "cluster": {"id": 16, "label": "list_item", "bbox": {"l": 135.62445068359375, "t": 419.9839782714844, "r": 223.28578186035156, "b": 430.39926, "coord_origin": "TOPLEFT"}, "confidence": 0.9163252115249634, "cells": [{"id": 27, "text": "GLYPH", "bbox": {"l": 136.8, "t": 421.33566, "r": 141.78, "b": 430.11044, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "RCAC_OWNER", "bbox": {"l": 151.20016, "t": 421.18628, "r": 222.78268, "b": 430.39926, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH RCAC_OWNER"}, {"label": "list_item", "id": 17, "page_no": 116, "cluster": {"id": 17, "label": "list_item", "bbox": {"l": 135.59918212890625, "t": 431.9518737792969, "r": 227.91741943359375, "b": 442.39908, "coord_origin": "TOPLEFT"}, "confidence": 0.9221100211143494, "cells": [{"id": 29, "text": "GLYPH", "bbox": {"l": 136.8, "t": 433.33548, "r": 141.78, "b": 442.11026, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "RCAC_SCHEMA", "bbox": {"l": 151.20016, "t": 433.1861, "r": 227.54257000000004, "b": 442.39908, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH RCAC_SCHEMA"}, {"label": "list_item", "id": 18, "page_no": 116, "cluster": {"id": 18, "label": "list_item", "bbox": {"l": 135.649658203125, "t": 444.19696044921875, "r": 202.96228, "b": 454.39889999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9048181772232056, "cells": [{"id": 31, "text": "GLYPH", "bbox": {"l": 136.8, "t": 445.3353, "r": 141.78, "b": 454.11008, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "RULETEXT", "bbox": {"l": 151.20016, "t": 445.18591, "r": 202.96228, "b": 454.39889999999997, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH RULETEXT"}, {"label": "list_item", "id": 19, "page_no": 116, "cluster": {"id": 19, "label": "list_item", "bbox": {"l": 135.53004455566406, "t": 456.36712646484375, "r": 275.5697, "b": 466.39871, "coord_origin": "TOPLEFT"}, "confidence": 0.9331137537956238, "cells": [{"id": 33, "text": "GLYPH", "bbox": {"l": 136.8, "t": 457.33511, "r": 141.78, "b": 466.10989, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "SYSTEM_COLUMN_NAME", "bbox": {"l": 151.20016, "t": 457.18573, "r": 275.5697, "b": 466.39871, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH SYSTEM_COLUMN_NAME"}, {"label": "list_item", "id": 20, "page_no": 116, "cluster": {"id": 20, "label": "list_item", "bbox": {"l": 135.6468963623047, "t": 467.97235107421875, "r": 263.12493896484375, "b": 478.39853, "coord_origin": "TOPLEFT"}, "confidence": 0.9202753305435181, "cells": [{"id": 35, "text": "GLYPH", "bbox": {"l": 136.8, "t": 469.33493, "r": 141.78, "b": 478.10971, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "SYSTEM_TABLE_NAME", "bbox": {"l": 151.20016, "t": 469.18555, "r": 262.72827, "b": 478.39853, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH SYSTEM_TABLE_NAME"}, {"label": "list_item", "id": 21, "page_no": 116, "cluster": {"id": 21, "label": "list_item", "bbox": {"l": 135.67005920410156, "t": 480.2753601074219, "r": 276.916015625, "b": 490.39835, "coord_origin": "TOPLEFT"}, "confidence": 0.93083256483078, "cells": [{"id": 37, "text": "GLYPH", "bbox": {"l": 136.8, "t": 481.33475, "r": 141.78, "b": 490.10953, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "SYSTEM_TABLE_SCHEMA", "bbox": {"l": 151.20016, "t": 481.18536, "r": 276.52487, "b": 490.39835, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH SYSTEM_TABLE_SCHEMA"}, {"label": "list_item", "id": 22, "page_no": 116, "cluster": {"id": 22, "label": "list_item", "bbox": {"l": 135.68890380859375, "t": 492.2499084472656, "r": 216.28732299804688, "b": 502.39816, "coord_origin": "TOPLEFT"}, "confidence": 0.9164599180221558, "cells": [{"id": 39, "text": "GLYPH", "bbox": {"l": 136.8, "t": 493.33456, "r": 141.78, "b": 502.10934, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "TABLE_NAME", "bbox": {"l": 151.20016, "t": 493.18518, "r": 216.03579999999997, "b": 502.39816, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH TABLE_NAME"}, {"label": "list_item", "id": 23, "page_no": 116, "cluster": {"id": 23, "label": "list_item", "bbox": {"l": 135.64125061035156, "t": 504.14703369140625, "r": 230.32113647460938, "b": 514.39798, "coord_origin": "TOPLEFT"}, "confidence": 0.9193540215492249, "cells": [{"id": 41, "text": "GLYPH", "bbox": {"l": 136.8, "t": 505.33438, "r": 141.78, "b": 514.10916, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "TABLE_SCHEMA", "bbox": {"l": 151.20016, "t": 505.185, "r": 230.00568000000004, "b": 514.39798, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH TABLE_SCHEMA"}, {"label": "list_item", "id": 24, "page_no": 116, "cluster": {"id": 24, "label": "list_item", "bbox": {"l": 135.58006286621094, "t": 516.2754516601562, "r": 235.02153, "b": 526.3978, "coord_origin": "TOPLEFT"}, "confidence": 0.9276848435401917, "cells": [{"id": 43, "text": "GLYPH", "bbox": {"l": 136.8, "t": 517.3342, "r": 141.78, "b": 526.10898, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "TBCORRELATION", "bbox": {"l": 151.20016, "t": 517.18481, "r": 235.02153, "b": 526.3978, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH TBCORRELATION"}, {"label": "text", "id": 25, "page_no": 116, "cluster": {"id": 25, "label": "text", "bbox": {"l": 136.2348175048828, "t": 538.4920043945312, "r": 451.01199, "b": 548.9942626953125, "coord_origin": "TOPLEFT"}, "confidence": 0.8883419632911682, "cells": [{"id": 45, "text": "The SYSCONTROLSDEP catalog view contains the following columns:", "bbox": {"l": 136.8, "t": 539.20438, "r": 451.01199, "b": 548.41737, "coord_origin": "TOPLEFT"}}]}, "text": "The SYSCONTROLSDEP catalog view contains the following columns:"}, {"label": "list_item", "id": 26, "page_no": 116, "cluster": {"id": 26, "label": "list_item", "bbox": {"l": 135.6955108642578, "t": 554.92236328125, "r": 229.20022583007812, "b": 565.39719, "coord_origin": "TOPLEFT"}, "confidence": 0.9285773634910583, "cells": [{"id": 46, "text": "GLYPH", "bbox": {"l": 136.8, "t": 556.33359, "r": 141.78, "b": 565.10834, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "COLUMN_NAME", "bbox": {"l": 151.20016, "t": 556.1841900000001, "r": 228.86325000000002, "b": 565.39719, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH COLUMN_NAME"}, {"label": "list_item", "id": 27, "page_no": 116, "cluster": {"id": 27, "label": "list_item", "bbox": {"l": 135.7337188720703, "t": 567.2264404296875, "r": 231.54153, "b": 577.39699, "coord_origin": "TOPLEFT"}, "confidence": 0.9127693772315979, "cells": [{"id": 48, "text": "GLYPH", "bbox": {"l": 136.8, "t": 568.33339, "r": 141.78, "b": 577.10814, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "CONTROL_TYPE", "bbox": {"l": 151.20016, "t": 568.18399, "r": 231.54153, "b": 577.39699, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH CONTROL_TYPE"}, {"label": "list_item", "id": 28, "page_no": 116, "cluster": {"id": 28, "label": "list_item", "bbox": {"l": 135.7036590576172, "t": 579.0064086914062, "r": 223.13241577148438, "b": 589.39679, "coord_origin": "TOPLEFT"}, "confidence": 0.9143235683441162, "cells": [{"id": 50, "text": "GLYPH", "bbox": {"l": 136.8, "t": 580.3331900000001, "r": 141.78, "b": 589.10794, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "IASP_NUMBER", "bbox": {"l": 151.20016, "t": 580.18379, "r": 222.81953000000001, "b": 589.39679, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH IASP_NUMBER"}, {"label": "list_item", "id": 29, "page_no": 116, "cluster": {"id": 29, "label": "list_item", "bbox": {"l": 135.64175415039062, "t": 590.69970703125, "r": 225.03064999999998, "b": 601.3965900000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9129092693328857, "cells": [{"id": 52, "text": "GLYPH", "bbox": {"l": 136.8, "t": 592.33299, "r": 141.78, "b": 601.10774, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "OBJECT_NAME", "bbox": {"l": 151.20016, "t": 592.18359, "r": 225.03064999999998, "b": 601.3965900000001, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH OBJECT_NAME"}, {"label": "list_item", "id": 30, "page_no": 116, "cluster": {"id": 30, "label": "list_item", "bbox": {"l": 135.65492248535156, "t": 602.8453369140625, "r": 239.2605743408203, "b": 613.39639, "coord_origin": "TOPLEFT"}, "confidence": 0.9242467880249023, "cells": [{"id": 54, "text": "GLYPH", "bbox": {"l": 136.8, "t": 604.3327899999999, "r": 141.78, "b": 613.10754, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "OBJECT_SCHEMA", "bbox": {"l": 151.20016, "t": 604.1834, "r": 238.91888, "b": 613.39639, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH OBJECT_SCHEMA"}, {"label": "list_item", "id": 31, "page_no": 116, "cluster": {"id": 31, "label": "list_item", "bbox": {"l": 135.42955017089844, "t": 614.6676635742188, "r": 222.27176, "b": 625.3961899999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9121018648147583, "cells": [{"id": 56, "text": "GLYPH", "bbox": {"l": 136.8, "t": 616.3326, "r": 141.78, "b": 625.10735, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "OBJECT_TYPE", "bbox": {"l": 151.20016, "t": 616.1831999999999, "r": 222.27176, "b": 625.3961899999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH OBJECT_TYPE"}, {"label": "list_item", "id": 32, "page_no": 116, "cluster": {"id": 32, "label": "list_item", "bbox": {"l": 135.63658142089844, "t": 626.9090576171875, "r": 241.48854, "b": 637.396, "coord_origin": "TOPLEFT"}, "confidence": 0.9265965223312378, "cells": [{"id": 58, "text": "GLYPH", "bbox": {"l": 136.8, "t": 628.3324, "r": 141.78, "b": 637.10715, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "PARM_SIGNATURE", "bbox": {"l": 151.20016, "t": 628.183, "r": 241.48854, "b": 637.396, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH PARM_SIGNATURE"}, {"label": "list_item", "id": 33, "page_no": 116, "cluster": {"id": 33, "label": "list_item", "bbox": {"l": 135.70877075195312, "t": 639.044921875, "r": 213.68124, "b": 649.3958, "coord_origin": "TOPLEFT"}, "confidence": 0.9117604494094849, "cells": [{"id": 60, "text": "GLYPH", "bbox": {"l": 136.8, "t": 640.3322000000001, "r": 141.78, "b": 649.10695, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "RCAC_NAME", "bbox": {"l": 151.20016, "t": 640.1828, "r": 213.68124, "b": 649.3958, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH RCAC_NAME"}, {"label": "list_item", "id": 34, "page_no": 116, "cluster": {"id": 34, "label": "list_item", "bbox": {"l": 135.70849609375, "t": 651.1845703125, "r": 227.56272888183594, "b": 661.3956000000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9165326356887817, "cells": [{"id": 62, "text": "GLYPH", "bbox": {"l": 136.8, "t": 652.332, "r": 141.78, "b": 661.10675, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "RCAC_SCHEMA", "bbox": {"l": 151.20016, "t": 652.1826, "r": 227.54257000000004, "b": 661.3956000000001, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH RCAC_SCHEMA"}, {"label": "list_item", "id": 35, "page_no": 116, "cluster": {"id": 35, "label": "list_item", "bbox": {"l": 135.59637451171875, "t": 662.8261108398438, "r": 262.72827, "b": 673.39541, "coord_origin": "TOPLEFT"}, "confidence": 0.9273440837860107, "cells": [{"id": 64, "text": "GLYPH", "bbox": {"l": 136.8, "t": 664.33181, "r": 141.78, "b": 673.10657, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "SYSTEM_TABLE_NAME", "bbox": {"l": 151.20016, "t": 664.1824, "r": 262.72827, "b": 673.39541, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH SYSTEM_TABLE_NAME"}, {"label": "list_item", "id": 36, "page_no": 116, "cluster": {"id": 36, "label": "list_item", "bbox": {"l": 135.5303497314453, "t": 675.0317993164062, "r": 276.7511291503906, "b": 685.39522, "coord_origin": "TOPLEFT"}, "confidence": 0.9355826377868652, "cells": [{"id": 66, "text": "GLYPH", "bbox": {"l": 136.8, "t": 676.33162, "r": 141.78, "b": 685.10638, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "SYSTEM_TABLE_SCHEMA", "bbox": {"l": 151.20016, "t": 676.18221, "r": 276.52487, "b": 685.39522, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH SYSTEM_TABLE_SCHEMA"}, {"label": "text", "id": 37, "page_no": 116, "cluster": {"id": 37, "label": "text", "bbox": {"l": 136.2892303466797, "t": 697.2129516601562, "r": 495.94863999999995, "b": 707.414787, "coord_origin": "TOPLEFT"}, "confidence": 0.8819487690925598, "cells": [{"id": 68, "text": "For more information, see the ", "bbox": {"l": 136.8, "t": 698.201782, "r": 270.28992, "b": 707.414787, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "IBM i 7.2 DB2 for i SQL Reference Guide", "bbox": {"l": 270.29987, "t": 698.201782, "r": 451.84072999999995, "b": 707.414787, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": ", found at:", "bbox": {"l": 451.79996, "t": 698.201782, "r": 495.94863999999995, "b": 707.414787, "coord_origin": "TOPLEFT"}}]}, "text": "For more information, see the IBM i 7.2 DB2 for i SQL Reference Guide , found at:"}, {"label": "text", "id": 38, "page_no": 116, "cluster": {"id": 38, "label": "text", "bbox": {"l": 136.3297119140625, "t": 713.9354248046875, "r": 546.53442, "b": 736.10556, "coord_origin": "TOPLEFT"}, "confidence": 0.9137188792228699, "cells": [{"id": 71, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/db2/rbafzintro.htm?lang", "bbox": {"l": 136.80002, "t": 715.330994, "r": 546.53442, "b": 724.105751, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "=en", "bbox": {"l": 136.80002, "t": 727.3308030000001, "r": 151.74002, "b": 736.10556, "coord_origin": "TOPLEFT"}}]}, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/db2/rbafzintro.htm?lang =en"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 116, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 370.6695251464844, "t": 754.8765258789062, "r": 517.96918, "b": 763.8857421875, "coord_origin": "TOPLEFT"}, "confidence": 0.947565495967865, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 371.28, "t": 755.538002, "r": 517.96918, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 116, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.2025146484375, "t": 754.233154296875, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9223108291625977, "cells": [{"id": 1, "text": "101", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "101"}]}}, {"page_no": 117, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "102 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "6.5", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 87.239647, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Views, materialized query tables, and query rewrite with ", "bbox": {"l": 91.727562, "t": 71.22069999999997, "r": 524.18311, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "RCAC", "bbox": {"l": 64.800003, "t": 90.18120999999985, "r": 110.31155000000001, "b": 104.94421, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "This section covers the implications to views, materialized query tables (MQTs), and query ", "bbox": {"l": 136.8, "t": 122.50867000000005, "r": 538.62842, "b": 131.72168, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "rewrite when RCAC is activated on a table.", "bbox": {"l": 136.8, "t": 134.50847999999996, "r": 325.84781, "b": 143.7215, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "6.5.1", "bbox": {"l": 64.800003, "t": 164.33471999999995, "r": 95.074188, "b": 176.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Views", "bbox": {"l": 98.858459, "t": 164.33471999999995, "r": 137.44987, "b": 176.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Any access to an SQL view that is over one or more tables that have RCAC also have those ", "bbox": {"l": 136.8, "t": 190.48870999999997, "r": 544.74371, "b": 199.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "row permissions and column masking rules applied. If an SQL view has predicates, those are ", "bbox": {"l": 136.8, "t": 202.48852999999997, "r": 547.26752, "b": 211.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "logically ANDed with any search condition that is specified in the permissions that are defined ", "bbox": {"l": 136.8, "t": 214.48834, "r": 547.23859, "b": 223.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "on the underlying tables. The view does not have to project the columns that are referenced ", "bbox": {"l": 136.80002, "t": 226.48816, "r": 543.3761, "b": 235.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "by the permissions. Figure 6-21 shows an example of a view definition and user query.", "bbox": {"l": 136.80002, "t": 238.48798, "r": 518.17145, "b": 247.70099000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Figure 6-21 View definition and user query", "bbox": {"l": 136.8, "t": 533.53799, "r": 310.7493, "b": 541.86301, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "SELECT *", "bbox": {"l": 221.75999, "t": 415.785, "r": 263.2117, "b": 426.76498, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "FROM", "bbox": {"l": 221.75999, "t": 435.58524, "r": 249.27039, "b": 446.56522, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "OPEN_ACCOUNTS_VIEW A", "bbox": {"l": 257.76453, "t": 435.58524, "r": 377.16104, "b": 446.56522, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "WHERE A.ACCOUNT_NUMBER = ?", "bbox": {"l": 221.75999, "t": 455.38547, "r": 373.84509, "b": 466.36545, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "CREATE VIEW OPEN_ACCOUNTS_VIEW AS (", "bbox": {"l": 149.75999, "t": 282.10501, "r": 342.65335, "b": 293.08499, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "SELECT ACCOUNT_NUMBER,", "bbox": {"l": 185.76012, "t": 301.90524, "r": 315.43719, "b": 312.88522, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "ACCOUNT_CURRENT_BALANCE", "bbox": {"l": 221.76024, "t": 321.70547, "r": 361.79144, "b": 332.6854599999999, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "FROM", "bbox": {"l": 185.76012, "t": 341.50570999999997, "r": 213.24416, "b": 352.4856899999999, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ACCOUNTS A", "bbox": {"l": 221.74707, "t": 341.50570999999997, "r": 280.42856, "b": 352.4856899999999, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "WHERE A. ACCOUNT_DATE_CLOSED IS NULL) ", "bbox": {"l": 185.76012, "t": 361.30593999999996, "r": 389.11301, "b": 372.28592, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Note", "bbox": {"l": 180.12, "t": 492.88498, "r": 200.53775, "b": 502.905, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": ": PERMISSION1_ON_ACCOUNTS allows access to the row", "bbox": {"l": 200.51971, "t": 492.88498, "r": 435.52273999999994, "b": 502.905, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "based the user\u2019s group and CUSTOMER_ID value", "bbox": {"l": 209.7, "t": 504.88498, "r": 405.92563, "b": 514.905, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.45819091796875, "t": 754.2963256835938, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9219294190406799, "cells": [{"id": 0, "text": "102 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 98.59468078613281, "t": 754.6023559570312, "r": 339.92059326171875, "b": 764.0437622070312, "coord_origin": "TOPLEFT"}, "confidence": 0.9517812728881836, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.48343658447266, "t": 69.85620880126953, "r": 524.18311, "b": 104.94421, "coord_origin": "TOPLEFT"}, "confidence": 0.951751172542572, "cells": [{"id": 2, "text": "6.5", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 87.239647, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Views, materialized query tables, and query rewrite with ", "bbox": {"l": 91.727562, "t": 71.22069999999997, "r": 524.18311, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "RCAC", "bbox": {"l": 64.800003, "t": 90.18120999999985, "r": 110.31155000000001, "b": 104.94421, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.83413696289062, "t": 121.24685668945312, "r": 538.62842, "b": 143.7215, "coord_origin": "TOPLEFT"}, "confidence": 0.9707952737808228, "cells": [{"id": 5, "text": "This section covers the implications to views, materialized query tables (MQTs), and query ", "bbox": {"l": 136.8, "t": 122.50867000000005, "r": 538.62842, "b": 131.72168, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "rewrite when RCAC is activated on a table.", "bbox": {"l": 136.8, "t": 134.50847999999996, "r": 325.84781, "b": 143.7215, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 64.00408935546875, "t": 163.15185546875, "r": 137.59872436523438, "b": 176.32275000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9475746154785156, "cells": [{"id": 7, "text": "6.5.1", "bbox": {"l": 64.800003, "t": 164.33471999999995, "r": 95.074188, "b": 176.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Views", "bbox": {"l": 98.858459, "t": 164.33471999999995, "r": 137.44987, "b": 176.32275000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.95098876953125, "t": 189.26473999023438, "r": 547.26752, "b": 247.95785522460938, "coord_origin": "TOPLEFT"}, "confidence": 0.9861626029014587, "cells": [{"id": 9, "text": "Any access to an SQL view that is over one or more tables that have RCAC also have those ", "bbox": {"l": 136.8, "t": 190.48870999999997, "r": 544.74371, "b": 199.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "row permissions and column masking rules applied. If an SQL view has predicates, those are ", "bbox": {"l": 136.8, "t": 202.48852999999997, "r": 547.26752, "b": 211.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "logically ANDed with any search condition that is specified in the permissions that are defined ", "bbox": {"l": 136.8, "t": 214.48834, "r": 547.23859, "b": 223.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "on the underlying tables. The view does not have to project the columns that are referenced ", "bbox": {"l": 136.80002, "t": 226.48816, "r": 543.3761, "b": 235.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "by the permissions. Figure 6-21 shows an example of a view definition and user query.", "bbox": {"l": 136.80002, "t": 238.48798, "r": 518.17145, "b": 247.70099000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "caption", "bbox": {"l": 136.1767120361328, "t": 532.8250122070312, "r": 311.7160949707031, "b": 542.2582397460938, "coord_origin": "TOPLEFT"}, "confidence": 0.9393132328987122, "cells": [{"id": 14, "text": "Figure 6-21 View definition and user query", "bbox": {"l": 136.8, "t": 533.53799, "r": 310.7493, "b": 541.86301, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "picture", "bbox": {"l": 136.61915588378906, "t": 262.3319396972656, "r": 491.90362548828125, "b": 529.945556640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9785625338554382, "cells": [{"id": 15, "text": "SELECT *", "bbox": {"l": 221.75999, "t": 415.785, "r": 263.2117, "b": 426.76498, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "FROM", "bbox": {"l": 221.75999, "t": 435.58524, "r": 249.27039, "b": 446.56522, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "OPEN_ACCOUNTS_VIEW A", "bbox": {"l": 257.76453, "t": 435.58524, "r": 377.16104, "b": 446.56522, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "WHERE A.ACCOUNT_NUMBER = ?", "bbox": {"l": 221.75999, "t": 455.38547, "r": 373.84509, "b": 466.36545, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "CREATE VIEW OPEN_ACCOUNTS_VIEW AS (", "bbox": {"l": 149.75999, "t": 282.10501, "r": 342.65335, "b": 293.08499, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "SELECT ACCOUNT_NUMBER,", "bbox": {"l": 185.76012, "t": 301.90524, "r": 315.43719, "b": 312.88522, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "ACCOUNT_CURRENT_BALANCE", "bbox": {"l": 221.76024, "t": 321.70547, "r": 361.79144, "b": 332.6854599999999, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "FROM", "bbox": {"l": 185.76012, "t": 341.50570999999997, "r": 213.24416, "b": 352.4856899999999, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ACCOUNTS A", "bbox": {"l": 221.74707, "t": 341.50570999999997, "r": 280.42856, "b": 352.4856899999999, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "WHERE A. ACCOUNT_DATE_CLOSED IS NULL) ", "bbox": {"l": 185.76012, "t": 361.30593999999996, "r": 389.11301, "b": 372.28592, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Note", "bbox": {"l": 180.12, "t": 492.88498, "r": 200.53775, "b": 502.905, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": ": PERMISSION1_ON_ACCOUNTS allows access to the row", "bbox": {"l": 200.51971, "t": 492.88498, "r": 435.52273999999994, "b": 502.905, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "based the user\u2019s group and CUSTOMER_ID value", "bbox": {"l": 209.7, "t": 504.88498, "r": 405.92563, "b": 514.905, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 117, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.45819091796875, "t": 754.2963256835938, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9219294190406799, "cells": [{"id": 0, "text": "102 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "102"}, {"label": "page_footer", "id": 1, "page_no": 117, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.59468078613281, "t": 754.6023559570312, "r": 339.92059326171875, "b": 764.0437622070312, "coord_origin": "TOPLEFT"}, "confidence": 0.9517812728881836, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "section_header", "id": 2, "page_no": 117, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.48343658447266, "t": 69.85620880126953, "r": 524.18311, "b": 104.94421, "coord_origin": "TOPLEFT"}, "confidence": 0.951751172542572, "cells": [{"id": 2, "text": "6.5", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 87.239647, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Views, materialized query tables, and query rewrite with ", "bbox": {"l": 91.727562, "t": 71.22069999999997, "r": 524.18311, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "RCAC", "bbox": {"l": 64.800003, "t": 90.18120999999985, "r": 110.31155000000001, "b": 104.94421, "coord_origin": "TOPLEFT"}}]}, "text": "6.5 Views, materialized query tables, and query rewrite with RCAC"}, {"label": "text", "id": 3, "page_no": 117, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.83413696289062, "t": 121.24685668945312, "r": 538.62842, "b": 143.7215, "coord_origin": "TOPLEFT"}, "confidence": 0.9707952737808228, "cells": [{"id": 5, "text": "This section covers the implications to views, materialized query tables (MQTs), and query ", "bbox": {"l": 136.8, "t": 122.50867000000005, "r": 538.62842, "b": 131.72168, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "rewrite when RCAC is activated on a table.", "bbox": {"l": 136.8, "t": 134.50847999999996, "r": 325.84781, "b": 143.7215, "coord_origin": "TOPLEFT"}}]}, "text": "This section covers the implications to views, materialized query tables (MQTs), and query rewrite when RCAC is activated on a table."}, {"label": "section_header", "id": 4, "page_no": 117, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.00408935546875, "t": 163.15185546875, "r": 137.59872436523438, "b": 176.32275000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9475746154785156, "cells": [{"id": 7, "text": "6.5.1", "bbox": {"l": 64.800003, "t": 164.33471999999995, "r": 95.074188, "b": 176.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Views", "bbox": {"l": 98.858459, "t": 164.33471999999995, "r": 137.44987, "b": 176.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "6.5.1 Views"}, {"label": "text", "id": 5, "page_no": 117, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.95098876953125, "t": 189.26473999023438, "r": 547.26752, "b": 247.95785522460938, "coord_origin": "TOPLEFT"}, "confidence": 0.9861626029014587, "cells": [{"id": 9, "text": "Any access to an SQL view that is over one or more tables that have RCAC also have those ", "bbox": {"l": 136.8, "t": 190.48870999999997, "r": 544.74371, "b": 199.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "row permissions and column masking rules applied. If an SQL view has predicates, those are ", "bbox": {"l": 136.8, "t": 202.48852999999997, "r": 547.26752, "b": 211.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "logically ANDed with any search condition that is specified in the permissions that are defined ", "bbox": {"l": 136.8, "t": 214.48834, "r": 547.23859, "b": 223.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "on the underlying tables. The view does not have to project the columns that are referenced ", "bbox": {"l": 136.80002, "t": 226.48816, "r": 543.3761, "b": 235.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "by the permissions. Figure 6-21 shows an example of a view definition and user query.", "bbox": {"l": 136.80002, "t": 238.48798, "r": 518.17145, "b": 247.70099000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Any access to an SQL view that is over one or more tables that have RCAC also have those row permissions and column masking rules applied. If an SQL view has predicates, those are logically ANDed with any search condition that is specified in the permissions that are defined on the underlying tables. The view does not have to project the columns that are referenced by the permissions. Figure 6-21 shows an example of a view definition and user query."}, {"label": "caption", "id": 6, "page_no": 117, "cluster": {"id": 6, "label": "caption", "bbox": {"l": 136.1767120361328, "t": 532.8250122070312, "r": 311.7160949707031, "b": 542.2582397460938, "coord_origin": "TOPLEFT"}, "confidence": 0.9393132328987122, "cells": [{"id": 14, "text": "Figure 6-21 View definition and user query", "bbox": {"l": 136.8, "t": 533.53799, "r": 310.7493, "b": 541.86301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-21 View definition and user query"}, {"label": "picture", "id": 7, "page_no": 117, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 136.61915588378906, "t": 262.3319396972656, "r": 491.90362548828125, "b": 529.945556640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9785625338554382, "cells": [{"id": 15, "text": "SELECT *", "bbox": {"l": 221.75999, "t": 415.785, "r": 263.2117, "b": 426.76498, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "FROM", "bbox": {"l": 221.75999, "t": 435.58524, "r": 249.27039, "b": 446.56522, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "OPEN_ACCOUNTS_VIEW A", "bbox": {"l": 257.76453, "t": 435.58524, "r": 377.16104, "b": 446.56522, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "WHERE A.ACCOUNT_NUMBER = ?", "bbox": {"l": 221.75999, "t": 455.38547, "r": 373.84509, "b": 466.36545, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "CREATE VIEW OPEN_ACCOUNTS_VIEW AS (", "bbox": {"l": 149.75999, "t": 282.10501, "r": 342.65335, "b": 293.08499, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "SELECT ACCOUNT_NUMBER,", "bbox": {"l": 185.76012, "t": 301.90524, "r": 315.43719, "b": 312.88522, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "ACCOUNT_CURRENT_BALANCE", "bbox": {"l": 221.76024, "t": 321.70547, "r": 361.79144, "b": 332.6854599999999, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "FROM", "bbox": {"l": 185.76012, "t": 341.50570999999997, "r": 213.24416, "b": 352.4856899999999, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ACCOUNTS A", "bbox": {"l": 221.74707, "t": 341.50570999999997, "r": 280.42856, "b": 352.4856899999999, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "WHERE A. ACCOUNT_DATE_CLOSED IS NULL) ", "bbox": {"l": 185.76012, "t": 361.30593999999996, "r": 389.11301, "b": 372.28592, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Note", "bbox": {"l": 180.12, "t": 492.88498, "r": 200.53775, "b": 502.905, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": ": PERMISSION1_ON_ACCOUNTS allows access to the row", "bbox": {"l": 200.51971, "t": 492.88498, "r": 435.52273999999994, "b": 502.905, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "based the user\u2019s group and CUSTOMER_ID value", "bbox": {"l": 209.7, "t": 504.88498, "r": 405.92563, "b": 514.905, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "section_header", "id": 2, "page_no": 117, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.48343658447266, "t": 69.85620880126953, "r": 524.18311, "b": 104.94421, "coord_origin": "TOPLEFT"}, "confidence": 0.951751172542572, "cells": [{"id": 2, "text": "6.5", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 87.239647, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Views, materialized query tables, and query rewrite with ", "bbox": {"l": 91.727562, "t": 71.22069999999997, "r": 524.18311, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "RCAC", "bbox": {"l": 64.800003, "t": 90.18120999999985, "r": 110.31155000000001, "b": 104.94421, "coord_origin": "TOPLEFT"}}]}, "text": "6.5 Views, materialized query tables, and query rewrite with RCAC"}, {"label": "text", "id": 3, "page_no": 117, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.83413696289062, "t": 121.24685668945312, "r": 538.62842, "b": 143.7215, "coord_origin": "TOPLEFT"}, "confidence": 0.9707952737808228, "cells": [{"id": 5, "text": "This section covers the implications to views, materialized query tables (MQTs), and query ", "bbox": {"l": 136.8, "t": 122.50867000000005, "r": 538.62842, "b": 131.72168, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "rewrite when RCAC is activated on a table.", "bbox": {"l": 136.8, "t": 134.50847999999996, "r": 325.84781, "b": 143.7215, "coord_origin": "TOPLEFT"}}]}, "text": "This section covers the implications to views, materialized query tables (MQTs), and query rewrite when RCAC is activated on a table."}, {"label": "section_header", "id": 4, "page_no": 117, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.00408935546875, "t": 163.15185546875, "r": 137.59872436523438, "b": 176.32275000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9475746154785156, "cells": [{"id": 7, "text": "6.5.1", "bbox": {"l": 64.800003, "t": 164.33471999999995, "r": 95.074188, "b": 176.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Views", "bbox": {"l": 98.858459, "t": 164.33471999999995, "r": 137.44987, "b": 176.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "6.5.1 Views"}, {"label": "text", "id": 5, "page_no": 117, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.95098876953125, "t": 189.26473999023438, "r": 547.26752, "b": 247.95785522460938, "coord_origin": "TOPLEFT"}, "confidence": 0.9861626029014587, "cells": [{"id": 9, "text": "Any access to an SQL view that is over one or more tables that have RCAC also have those ", "bbox": {"l": 136.8, "t": 190.48870999999997, "r": 544.74371, "b": 199.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "row permissions and column masking rules applied. If an SQL view has predicates, those are ", "bbox": {"l": 136.8, "t": 202.48852999999997, "r": 547.26752, "b": 211.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "logically ANDed with any search condition that is specified in the permissions that are defined ", "bbox": {"l": 136.8, "t": 214.48834, "r": 547.23859, "b": 223.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "on the underlying tables. The view does not have to project the columns that are referenced ", "bbox": {"l": 136.80002, "t": 226.48816, "r": 543.3761, "b": 235.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "by the permissions. Figure 6-21 shows an example of a view definition and user query.", "bbox": {"l": 136.80002, "t": 238.48798, "r": 518.17145, "b": 247.70099000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Any access to an SQL view that is over one or more tables that have RCAC also have those row permissions and column masking rules applied. If an SQL view has predicates, those are logically ANDed with any search condition that is specified in the permissions that are defined on the underlying tables. The view does not have to project the columns that are referenced by the permissions. Figure 6-21 shows an example of a view definition and user query."}, {"label": "caption", "id": 6, "page_no": 117, "cluster": {"id": 6, "label": "caption", "bbox": {"l": 136.1767120361328, "t": 532.8250122070312, "r": 311.7160949707031, "b": 542.2582397460938, "coord_origin": "TOPLEFT"}, "confidence": 0.9393132328987122, "cells": [{"id": 14, "text": "Figure 6-21 View definition and user query", "bbox": {"l": 136.8, "t": 533.53799, "r": 310.7493, "b": 541.86301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-21 View definition and user query"}, {"label": "picture", "id": 7, "page_no": 117, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 136.61915588378906, "t": 262.3319396972656, "r": 491.90362548828125, "b": 529.945556640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9785625338554382, "cells": [{"id": 15, "text": "SELECT *", "bbox": {"l": 221.75999, "t": 415.785, "r": 263.2117, "b": 426.76498, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "FROM", "bbox": {"l": 221.75999, "t": 435.58524, "r": 249.27039, "b": 446.56522, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "OPEN_ACCOUNTS_VIEW A", "bbox": {"l": 257.76453, "t": 435.58524, "r": 377.16104, "b": 446.56522, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "WHERE A.ACCOUNT_NUMBER = ?", "bbox": {"l": 221.75999, "t": 455.38547, "r": 373.84509, "b": 466.36545, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "CREATE VIEW OPEN_ACCOUNTS_VIEW AS (", "bbox": {"l": 149.75999, "t": 282.10501, "r": 342.65335, "b": 293.08499, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "SELECT ACCOUNT_NUMBER,", "bbox": {"l": 185.76012, "t": 301.90524, "r": 315.43719, "b": 312.88522, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "ACCOUNT_CURRENT_BALANCE", "bbox": {"l": 221.76024, "t": 321.70547, "r": 361.79144, "b": 332.6854599999999, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "FROM", "bbox": {"l": 185.76012, "t": 341.50570999999997, "r": 213.24416, "b": 352.4856899999999, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ACCOUNTS A", "bbox": {"l": 221.74707, "t": 341.50570999999997, "r": 280.42856, "b": 352.4856899999999, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "WHERE A. ACCOUNT_DATE_CLOSED IS NULL) ", "bbox": {"l": 185.76012, "t": 361.30593999999996, "r": 389.11301, "b": 372.28592, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Note", "bbox": {"l": 180.12, "t": 492.88498, "r": 200.53775, "b": 502.905, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": ": PERMISSION1_ON_ACCOUNTS allows access to the row", "bbox": {"l": 200.51971, "t": 492.88498, "r": 435.52273999999994, "b": 502.905, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "based the user\u2019s group and CUSTOMER_ID value", "bbox": {"l": 209.7, "t": 504.88498, "r": 405.92563, "b": 514.905, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 117, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.45819091796875, "t": 754.2963256835938, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9219294190406799, "cells": [{"id": 0, "text": "102 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "102"}, {"label": "page_footer", "id": 1, "page_no": 117, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.59468078613281, "t": 754.6023559570312, "r": 339.92059326171875, "b": 764.0437622070312, "coord_origin": "TOPLEFT"}, "confidence": 0.9517812728881836, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 118, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 371.28, "t": 755.538002, "r": 517.96918, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "103", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "What the query optimizer plans for and what the database engine runs is shown in the ", "bbox": {"l": 136.8002, "t": 71.50903000000005, "r": 519.47528, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 6-22.", "bbox": {"l": 136.8002, "t": 83.50885000000017, "r": 190.73257, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 6-22 Query rewrite with RCAC", "bbox": {"l": 136.8, "t": 390.798, "r": 290.5614, "b": 399.12302, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "6.5.2", "bbox": {"l": 64.800003, "t": 419.63474, "r": 94.26078, "b": 431.62271, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Materialized query tables", "bbox": {"l": 97.943375, "t": 419.63474, "r": 255.487, "b": 431.62271, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "When the query to populate a materialized query table (MQT) is run by the system on either ", "bbox": {"l": 136.8, "t": 445.78873, "r": 544.90387, "b": 455.00171, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "the create table or a refresh table, and one or more source tables have RCAC defined, the ", "bbox": {"l": 136.8, "t": 457.78853999999995, "r": 536.97687, "b": 467.00153, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "row permissions and column masks are ignored. This means that the MQT has all of the data.", "bbox": {"l": 136.8, "t": 469.78836, "r": 547.27844, "b": 479.00134, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Because the MQT is a copy of the base table data, when a permission is created on the base ", "bbox": {"l": 136.8, "t": 491.80792, "r": 547.28455, "b": 501.0209, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "table, all the related MQTs are altered to have a default row permission. This default ", "bbox": {"l": 136.8, "t": 503.80774, "r": 509.82686999999993, "b": 513.02072, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "permission prevents any of the rows from being directly queried.", "bbox": {"l": 136.8, "t": 515.80756, "r": 419.78342, "b": 525.02054, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "When a query implicitly uses an MQT, the underlying row permissions and column masks are ", "bbox": {"l": 136.8, "t": 537.82712, "r": 547.27246, "b": 547.04012, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "built into the query that uses the MQT. In order for the MQT to be used for optimization, the ", "bbox": {"l": 136.8, "t": 549.82692, "r": 540.15295, "b": 559.0399199999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "MQT must include any columns that are used by the row permissions and column masks.", "bbox": {"l": 136.8, "t": 561.82672, "r": 531.36346, "b": 571.03972, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "The following example illustrates this scenario:", "bbox": {"l": 136.8, "t": 583.78653, "r": 342.15033, "b": 592.99953, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "1.", "bbox": {"l": 136.80002, "t": 600.8261, "r": 145.33115, "b": 610.03909, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Create schema and tables:", "bbox": {"l": 148.17487, "t": 600.8261, "r": 270.41348, "b": 610.03909, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "CREATE SCHEMA Schema1; ", "bbox": {"l": 151.20018, "t": 617.95531, "r": 266.09869, "b": 626.73006, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "CREATE TABLE Schema1.employee(userID varchar(128), LocationID integer, Regionid ", "bbox": {"l": 151.20018, "t": 629.95511, "r": 547.25555, "b": 638.72986, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "integer); ", "bbox": {"l": 151.20018, "t": 641.95491, "r": 201.11969, "b": 650.72966, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "CREATE TABLE Schema1.Sales (INVOICE INTEGER NOT NULL, SALEAMT DECIMAL(5,2), ", "bbox": {"l": 151.20018, "t": 653.95471, "r": 531.05463, "b": 662.72946, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "TAXAMT DECIMAL(5,2), LOCATIONID INTEGER, REGIONID INTEGER);", "bbox": {"l": 151.20018, "t": 665.95452, "r": 446.03607000000005, "b": 674.72928, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "CREATE VIEW OPEN_ACCOUNTS_VIEW AS (", "bbox": {"l": 154.0657, "t": 131.60051999999996, "r": 351.96384, "b": 141.26044000000002, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "SELECT ACCOUNT_NUMBER,", "bbox": {"l": 191.0079, "t": 151.91881999999998, "r": 324.31876, "b": 161.57874000000004, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ACCOUNT_CURRENT_BALANCE", "bbox": {"l": 227.95076, "t": 172.23748999999998, "r": 371.7757, "b": 181.89739999999995, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "FROM", "bbox": {"l": 191.0079, "t": 192.55535999999995, "r": 219.33701999999997, "b": 202.21527000000003, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "ACCOUNTS A", "bbox": {"l": 227.93269000000004, "t": 192.55535999999995, "r": 288.18939, "b": 202.21527000000003, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "WHERE A. ACCOUNT_DATE_CLOSED IS NULL) ", "bbox": {"l": 191.0079, "t": 212.87401999999997, "r": 399.53876, "b": 222.53394000000003, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "SELECT *", "bbox": {"l": 227.95019999999997, "t": 268.74872000000005, "r": 270.48792, "b": 278.40863, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "FROM", "bbox": {"l": 227.95019999999997, "t": 289.06738000000007, "r": 256.2793, "b": 298.72736, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "OPEN_ACCOUNTS_VIEW A", "bbox": {"l": 264.87497, "t": 289.06738000000007, "r": 387.39151, "b": 298.72736, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "WHERE A.ACCOUNT_NUMBER = ?", "bbox": {"l": 227.95019999999997, "t": 309.38522, "r": 384.06647, "b": 319.0452, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Note", "bbox": {"l": 185.2511, "t": 347.86838000000006, "r": 206.08113, "b": 356.64368, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": ": PERMISSION1_ON_ACCOUNTS allows access to the row", "bbox": {"l": 206.0927, "t": 347.86838000000006, "r": 447.3443, "b": 356.63342, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "based the user\u0092s group and CUSTOMER_ID value", "bbox": {"l": 215.69733, "t": 360.18246000000005, "r": 416.87384, "b": 368.9475100000001, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 370.6492004394531, "t": 754.8782348632812, "r": 517.96918, "b": 763.9190063476562, "coord_origin": "TOPLEFT"}, "confidence": 0.9510338306427002, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 371.28, "t": 755.538002, "r": 517.96918, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 530.1799926757812, "t": 754.2610473632812, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9243813157081604, "cells": [{"id": 1, "text": "103", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.9568634033203, "t": 70.61416625976562, "r": 519.47528, "b": 93.16253662109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9543677568435669, "cells": [{"id": 2, "text": "What the query optimizer plans for and what the database engine runs is shown in the ", "bbox": {"l": 136.8002, "t": 71.50903000000005, "r": 519.47528, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 6-22.", "bbox": {"l": 136.8002, "t": 83.50885000000017, "r": 190.73257, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 135.89744567871094, "t": 390.0194091796875, "r": 291.39215087890625, "b": 399.5681457519531, "coord_origin": "TOPLEFT"}, "confidence": 0.9462981820106506, "cells": [{"id": 4, "text": "Figure 6-22 Query rewrite with RCAC", "bbox": {"l": 136.8, "t": 390.798, "r": 290.5614, "b": 399.12302, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 64.23944091796875, "t": 418.5478515625, "r": 255.487, "b": 431.62271, "coord_origin": "TOPLEFT"}, "confidence": 0.9655659198760986, "cells": [{"id": 5, "text": "6.5.2", "bbox": {"l": 64.800003, "t": 419.63474, "r": 94.26078, "b": 431.62271, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Materialized query tables", "bbox": {"l": 97.943375, "t": 419.63474, "r": 255.487, "b": 431.62271, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.8983154296875, "t": 444.7919921875, "r": 547.27844, "b": 479.00134, "coord_origin": "TOPLEFT"}, "confidence": 0.982417643070221, "cells": [{"id": 7, "text": "When the query to populate a materialized query table (MQT) is run by the system on either ", "bbox": {"l": 136.8, "t": 445.78873, "r": 544.90387, "b": 455.00171, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "the create table or a refresh table, and one or more source tables have RCAC defined, the ", "bbox": {"l": 136.8, "t": 457.78853999999995, "r": 536.97687, "b": 467.00153, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "row permissions and column masks are ignored. This means that the MQT has all of the data.", "bbox": {"l": 136.8, "t": 469.78836, "r": 547.27844, "b": 479.00134, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 136.05838012695312, "t": 490.664794921875, "r": 547.28455, "b": 525.02054, "coord_origin": "TOPLEFT"}, "confidence": 0.9831634163856506, "cells": [{"id": 10, "text": "Because the MQT is a copy of the base table data, when a permission is created on the base ", "bbox": {"l": 136.8, "t": 491.80792, "r": 547.28455, "b": 501.0209, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "table, all the related MQTs are altered to have a default row permission. This default ", "bbox": {"l": 136.8, "t": 503.80774, "r": 509.82686999999993, "b": 513.02072, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "permission prevents any of the rows from being directly queried.", "bbox": {"l": 136.8, "t": 515.80756, "r": 419.78342, "b": 525.02054, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 135.96612548828125, "t": 536.773193359375, "r": 547.27246, "b": 571.03972, "coord_origin": "TOPLEFT"}, "confidence": 0.9812561869621277, "cells": [{"id": 13, "text": "When a query implicitly uses an MQT, the underlying row permissions and column masks are ", "bbox": {"l": 136.8, "t": 537.82712, "r": 547.27246, "b": 547.04012, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "built into the query that uses the MQT. In order for the MQT to be used for optimization, the ", "bbox": {"l": 136.8, "t": 549.82692, "r": 540.15295, "b": 559.0399199999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "MQT must include any columns that are used by the row permissions and column masks.", "bbox": {"l": 136.8, "t": 561.82672, "r": 531.36346, "b": 571.03972, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 136.03353881835938, "t": 582.82958984375, "r": 342.15033, "b": 592.99953, "coord_origin": "TOPLEFT"}, "confidence": 0.9185956120491028, "cells": [{"id": 16, "text": "The following example illustrates this scenario:", "bbox": {"l": 136.8, "t": 583.78653, "r": 342.15033, "b": 592.99953, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 136.65509033203125, "t": 600.0938720703125, "r": 270.41348, "b": 610.03909, "coord_origin": "TOPLEFT"}, "confidence": 0.708869218826294, "cells": [{"id": 17, "text": "1.", "bbox": {"l": 136.80002, "t": 600.8261, "r": 145.33115, "b": 610.03909, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Create schema and tables:", "bbox": {"l": 148.17487, "t": 600.8261, "r": 270.41348, "b": 610.03909, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 151.20018, "t": 617.95531, "r": 547.25555, "b": 674.72928, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 19, "text": "CREATE SCHEMA Schema1; ", "bbox": {"l": 151.20018, "t": 617.95531, "r": 266.09869, "b": 626.73006, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "CREATE TABLE Schema1.employee(userID varchar(128), LocationID integer, Regionid ", "bbox": {"l": 151.20018, "t": 629.95511, "r": 547.25555, "b": 638.72986, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "integer); ", "bbox": {"l": 151.20018, "t": 641.95491, "r": 201.11969, "b": 650.72966, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "CREATE TABLE Schema1.Sales (INVOICE INTEGER NOT NULL, SALEAMT DECIMAL(5,2), ", "bbox": {"l": 151.20018, "t": 653.95471, "r": 531.05463, "b": 662.72946, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "TAXAMT DECIMAL(5,2), LOCATIONID INTEGER, REGIONID INTEGER);", "bbox": {"l": 151.20018, "t": 665.95452, "r": 446.03607000000005, "b": 674.72928, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "picture", "bbox": {"l": 136.2811279296875, "t": 106.85755920410156, "r": 508.5420227050781, "b": 388.0796203613281, "coord_origin": "TOPLEFT"}, "confidence": 0.9733899235725403, "cells": [{"id": 24, "text": "CREATE VIEW OPEN_ACCOUNTS_VIEW AS (", "bbox": {"l": 154.0657, "t": 131.60051999999996, "r": 351.96384, "b": 141.26044000000002, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "SELECT ACCOUNT_NUMBER,", "bbox": {"l": 191.0079, "t": 151.91881999999998, "r": 324.31876, "b": 161.57874000000004, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ACCOUNT_CURRENT_BALANCE", "bbox": {"l": 227.95076, "t": 172.23748999999998, "r": 371.7757, "b": 181.89739999999995, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "FROM", "bbox": {"l": 191.0079, "t": 192.55535999999995, "r": 219.33701999999997, "b": 202.21527000000003, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "ACCOUNTS A", "bbox": {"l": 227.93269000000004, "t": 192.55535999999995, "r": 288.18939, "b": 202.21527000000003, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "WHERE A. ACCOUNT_DATE_CLOSED IS NULL) ", "bbox": {"l": 191.0079, "t": 212.87401999999997, "r": 399.53876, "b": 222.53394000000003, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "SELECT *", "bbox": {"l": 227.95019999999997, "t": 268.74872000000005, "r": 270.48792, "b": 278.40863, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "FROM", "bbox": {"l": 227.95019999999997, "t": 289.06738000000007, "r": 256.2793, "b": 298.72736, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "OPEN_ACCOUNTS_VIEW A", "bbox": {"l": 264.87497, "t": 289.06738000000007, "r": 387.39151, "b": 298.72736, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "WHERE A.ACCOUNT_NUMBER = ?", "bbox": {"l": 227.95019999999997, "t": 309.38522, "r": 384.06647, "b": 319.0452, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Note", "bbox": {"l": 185.2511, "t": 347.86838000000006, "r": 206.08113, "b": 356.64368, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": ": PERMISSION1_ON_ACCOUNTS allows access to the row", "bbox": {"l": 206.0927, "t": 347.86838000000006, "r": 447.3443, "b": 356.63342, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "based the user\u0092s group and CUSTOMER_ID value", "bbox": {"l": 215.69733, "t": 360.18246000000005, "r": 416.87384, "b": 368.9475100000001, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 118, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 370.6492004394531, "t": 754.8782348632812, "r": 517.96918, "b": 763.9190063476562, "coord_origin": "TOPLEFT"}, "confidence": 0.9510338306427002, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 371.28, "t": 755.538002, "r": 517.96918, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 118, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.1799926757812, "t": 754.2610473632812, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9243813157081604, "cells": [{"id": 1, "text": "103", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "103"}, {"label": "text", "id": 2, "page_no": 118, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.9568634033203, "t": 70.61416625976562, "r": 519.47528, "b": 93.16253662109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9543677568435669, "cells": [{"id": 2, "text": "What the query optimizer plans for and what the database engine runs is shown in the ", "bbox": {"l": 136.8002, "t": 71.50903000000005, "r": 519.47528, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 6-22.", "bbox": {"l": 136.8002, "t": 83.50885000000017, "r": 190.73257, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "What the query optimizer plans for and what the database engine runs is shown in the Figure 6-22."}, {"label": "caption", "id": 3, "page_no": 118, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.89744567871094, "t": 390.0194091796875, "r": 291.39215087890625, "b": 399.5681457519531, "coord_origin": "TOPLEFT"}, "confidence": 0.9462981820106506, "cells": [{"id": 4, "text": "Figure 6-22 Query rewrite with RCAC", "bbox": {"l": 136.8, "t": 390.798, "r": 290.5614, "b": 399.12302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-22 Query rewrite with RCAC"}, {"label": "section_header", "id": 4, "page_no": 118, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.23944091796875, "t": 418.5478515625, "r": 255.487, "b": 431.62271, "coord_origin": "TOPLEFT"}, "confidence": 0.9655659198760986, "cells": [{"id": 5, "text": "6.5.2", "bbox": {"l": 64.800003, "t": 419.63474, "r": 94.26078, "b": 431.62271, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Materialized query tables", "bbox": {"l": 97.943375, "t": 419.63474, "r": 255.487, "b": 431.62271, "coord_origin": "TOPLEFT"}}]}, "text": "6.5.2 Materialized query tables"}, {"label": "text", "id": 5, "page_no": 118, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.8983154296875, "t": 444.7919921875, "r": 547.27844, "b": 479.00134, "coord_origin": "TOPLEFT"}, "confidence": 0.982417643070221, "cells": [{"id": 7, "text": "When the query to populate a materialized query table (MQT) is run by the system on either ", "bbox": {"l": 136.8, "t": 445.78873, "r": 544.90387, "b": 455.00171, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "the create table or a refresh table, and one or more source tables have RCAC defined, the ", "bbox": {"l": 136.8, "t": 457.78853999999995, "r": 536.97687, "b": 467.00153, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "row permissions and column masks are ignored. This means that the MQT has all of the data.", "bbox": {"l": 136.8, "t": 469.78836, "r": 547.27844, "b": 479.00134, "coord_origin": "TOPLEFT"}}]}, "text": "When the query to populate a materialized query table (MQT) is run by the system on either the create table or a refresh table, and one or more source tables have RCAC defined, the row permissions and column masks are ignored. This means that the MQT has all of the data."}, {"label": "text", "id": 6, "page_no": 118, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.05838012695312, "t": 490.664794921875, "r": 547.28455, "b": 525.02054, "coord_origin": "TOPLEFT"}, "confidence": 0.9831634163856506, "cells": [{"id": 10, "text": "Because the MQT is a copy of the base table data, when a permission is created on the base ", "bbox": {"l": 136.8, "t": 491.80792, "r": 547.28455, "b": 501.0209, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "table, all the related MQTs are altered to have a default row permission. This default ", "bbox": {"l": 136.8, "t": 503.80774, "r": 509.82686999999993, "b": 513.02072, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "permission prevents any of the rows from being directly queried.", "bbox": {"l": 136.8, "t": 515.80756, "r": 419.78342, "b": 525.02054, "coord_origin": "TOPLEFT"}}]}, "text": "Because the MQT is a copy of the base table data, when a permission is created on the base table, all the related MQTs are altered to have a default row permission. This default permission prevents any of the rows from being directly queried."}, {"label": "text", "id": 7, "page_no": 118, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.96612548828125, "t": 536.773193359375, "r": 547.27246, "b": 571.03972, "coord_origin": "TOPLEFT"}, "confidence": 0.9812561869621277, "cells": [{"id": 13, "text": "When a query implicitly uses an MQT, the underlying row permissions and column masks are ", "bbox": {"l": 136.8, "t": 537.82712, "r": 547.27246, "b": 547.04012, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "built into the query that uses the MQT. In order for the MQT to be used for optimization, the ", "bbox": {"l": 136.8, "t": 549.82692, "r": 540.15295, "b": 559.0399199999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "MQT must include any columns that are used by the row permissions and column masks.", "bbox": {"l": 136.8, "t": 561.82672, "r": 531.36346, "b": 571.03972, "coord_origin": "TOPLEFT"}}]}, "text": "When a query implicitly uses an MQT, the underlying row permissions and column masks are built into the query that uses the MQT. In order for the MQT to be used for optimization, the MQT must include any columns that are used by the row permissions and column masks."}, {"label": "text", "id": 8, "page_no": 118, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.03353881835938, "t": 582.82958984375, "r": 342.15033, "b": 592.99953, "coord_origin": "TOPLEFT"}, "confidence": 0.9185956120491028, "cells": [{"id": 16, "text": "The following example illustrates this scenario:", "bbox": {"l": 136.8, "t": 583.78653, "r": 342.15033, "b": 592.99953, "coord_origin": "TOPLEFT"}}]}, "text": "The following example illustrates this scenario:"}, {"label": "list_item", "id": 9, "page_no": 118, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 136.65509033203125, "t": 600.0938720703125, "r": 270.41348, "b": 610.03909, "coord_origin": "TOPLEFT"}, "confidence": 0.708869218826294, "cells": [{"id": 17, "text": "1.", "bbox": {"l": 136.80002, "t": 600.8261, "r": 145.33115, "b": 610.03909, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Create schema and tables:", "bbox": {"l": 148.17487, "t": 600.8261, "r": 270.41348, "b": 610.03909, "coord_origin": "TOPLEFT"}}]}, "text": "1. Create schema and tables:"}, {"label": "text", "id": 10, "page_no": 118, "cluster": {"id": 10, "label": "text", "bbox": {"l": 151.20018, "t": 617.95531, "r": 547.25555, "b": 674.72928, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 19, "text": "CREATE SCHEMA Schema1; ", "bbox": {"l": 151.20018, "t": 617.95531, "r": 266.09869, "b": 626.73006, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "CREATE TABLE Schema1.employee(userID varchar(128), LocationID integer, Regionid ", "bbox": {"l": 151.20018, "t": 629.95511, "r": 547.25555, "b": 638.72986, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "integer); ", "bbox": {"l": 151.20018, "t": 641.95491, "r": 201.11969, "b": 650.72966, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "CREATE TABLE Schema1.Sales (INVOICE INTEGER NOT NULL, SALEAMT DECIMAL(5,2), ", "bbox": {"l": 151.20018, "t": 653.95471, "r": 531.05463, "b": 662.72946, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "TAXAMT DECIMAL(5,2), LOCATIONID INTEGER, REGIONID INTEGER);", "bbox": {"l": 151.20018, "t": 665.95452, "r": 446.03607000000005, "b": 674.72928, "coord_origin": "TOPLEFT"}}]}, "text": "CREATE SCHEMA Schema1; CREATE TABLE Schema1.employee(userID varchar(128), LocationID integer, Regionid integer); CREATE TABLE Schema1.Sales (INVOICE INTEGER NOT NULL, SALEAMT DECIMAL(5,2), TAXAMT DECIMAL(5,2), LOCATIONID INTEGER, REGIONID INTEGER);"}, {"label": "picture", "id": 11, "page_no": 118, "cluster": {"id": 11, "label": "picture", "bbox": {"l": 136.2811279296875, "t": 106.85755920410156, "r": 508.5420227050781, "b": 388.0796203613281, "coord_origin": "TOPLEFT"}, "confidence": 0.9733899235725403, "cells": [{"id": 24, "text": "CREATE VIEW OPEN_ACCOUNTS_VIEW AS (", "bbox": {"l": 154.0657, "t": 131.60051999999996, "r": 351.96384, "b": 141.26044000000002, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "SELECT ACCOUNT_NUMBER,", "bbox": {"l": 191.0079, "t": 151.91881999999998, "r": 324.31876, "b": 161.57874000000004, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ACCOUNT_CURRENT_BALANCE", "bbox": {"l": 227.95076, "t": 172.23748999999998, "r": 371.7757, "b": 181.89739999999995, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "FROM", "bbox": {"l": 191.0079, "t": 192.55535999999995, "r": 219.33701999999997, "b": 202.21527000000003, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "ACCOUNTS A", "bbox": {"l": 227.93269000000004, "t": 192.55535999999995, "r": 288.18939, "b": 202.21527000000003, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "WHERE A. ACCOUNT_DATE_CLOSED IS NULL) ", "bbox": {"l": 191.0079, "t": 212.87401999999997, "r": 399.53876, "b": 222.53394000000003, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "SELECT *", "bbox": {"l": 227.95019999999997, "t": 268.74872000000005, "r": 270.48792, "b": 278.40863, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "FROM", "bbox": {"l": 227.95019999999997, "t": 289.06738000000007, "r": 256.2793, "b": 298.72736, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "OPEN_ACCOUNTS_VIEW A", "bbox": {"l": 264.87497, "t": 289.06738000000007, "r": 387.39151, "b": 298.72736, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "WHERE A.ACCOUNT_NUMBER = ?", "bbox": {"l": 227.95019999999997, "t": 309.38522, "r": 384.06647, "b": 319.0452, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Note", "bbox": {"l": 185.2511, "t": 347.86838000000006, "r": 206.08113, "b": 356.64368, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": ": PERMISSION1_ON_ACCOUNTS allows access to the row", "bbox": {"l": 206.0927, "t": 347.86838000000006, "r": 447.3443, "b": 356.63342, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "based the user\u0092s group and CUSTOMER_ID value", "bbox": {"l": 215.69733, "t": 360.18246000000005, "r": 416.87384, "b": 368.9475100000001, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 118, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.9568634033203, "t": 70.61416625976562, "r": 519.47528, "b": 93.16253662109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9543677568435669, "cells": [{"id": 2, "text": "What the query optimizer plans for and what the database engine runs is shown in the ", "bbox": {"l": 136.8002, "t": 71.50903000000005, "r": 519.47528, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 6-22.", "bbox": {"l": 136.8002, "t": 83.50885000000017, "r": 190.73257, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "What the query optimizer plans for and what the database engine runs is shown in the Figure 6-22."}, {"label": "caption", "id": 3, "page_no": 118, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.89744567871094, "t": 390.0194091796875, "r": 291.39215087890625, "b": 399.5681457519531, "coord_origin": "TOPLEFT"}, "confidence": 0.9462981820106506, "cells": [{"id": 4, "text": "Figure 6-22 Query rewrite with RCAC", "bbox": {"l": 136.8, "t": 390.798, "r": 290.5614, "b": 399.12302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-22 Query rewrite with RCAC"}, {"label": "section_header", "id": 4, "page_no": 118, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.23944091796875, "t": 418.5478515625, "r": 255.487, "b": 431.62271, "coord_origin": "TOPLEFT"}, "confidence": 0.9655659198760986, "cells": [{"id": 5, "text": "6.5.2", "bbox": {"l": 64.800003, "t": 419.63474, "r": 94.26078, "b": 431.62271, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Materialized query tables", "bbox": {"l": 97.943375, "t": 419.63474, "r": 255.487, "b": 431.62271, "coord_origin": "TOPLEFT"}}]}, "text": "6.5.2 Materialized query tables"}, {"label": "text", "id": 5, "page_no": 118, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.8983154296875, "t": 444.7919921875, "r": 547.27844, "b": 479.00134, "coord_origin": "TOPLEFT"}, "confidence": 0.982417643070221, "cells": [{"id": 7, "text": "When the query to populate a materialized query table (MQT) is run by the system on either ", "bbox": {"l": 136.8, "t": 445.78873, "r": 544.90387, "b": 455.00171, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "the create table or a refresh table, and one or more source tables have RCAC defined, the ", "bbox": {"l": 136.8, "t": 457.78853999999995, "r": 536.97687, "b": 467.00153, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "row permissions and column masks are ignored. This means that the MQT has all of the data.", "bbox": {"l": 136.8, "t": 469.78836, "r": 547.27844, "b": 479.00134, "coord_origin": "TOPLEFT"}}]}, "text": "When the query to populate a materialized query table (MQT) is run by the system on either the create table or a refresh table, and one or more source tables have RCAC defined, the row permissions and column masks are ignored. This means that the MQT has all of the data."}, {"label": "text", "id": 6, "page_no": 118, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.05838012695312, "t": 490.664794921875, "r": 547.28455, "b": 525.02054, "coord_origin": "TOPLEFT"}, "confidence": 0.9831634163856506, "cells": [{"id": 10, "text": "Because the MQT is a copy of the base table data, when a permission is created on the base ", "bbox": {"l": 136.8, "t": 491.80792, "r": 547.28455, "b": 501.0209, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "table, all the related MQTs are altered to have a default row permission. This default ", "bbox": {"l": 136.8, "t": 503.80774, "r": 509.82686999999993, "b": 513.02072, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "permission prevents any of the rows from being directly queried.", "bbox": {"l": 136.8, "t": 515.80756, "r": 419.78342, "b": 525.02054, "coord_origin": "TOPLEFT"}}]}, "text": "Because the MQT is a copy of the base table data, when a permission is created on the base table, all the related MQTs are altered to have a default row permission. This default permission prevents any of the rows from being directly queried."}, {"label": "text", "id": 7, "page_no": 118, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.96612548828125, "t": 536.773193359375, "r": 547.27246, "b": 571.03972, "coord_origin": "TOPLEFT"}, "confidence": 0.9812561869621277, "cells": [{"id": 13, "text": "When a query implicitly uses an MQT, the underlying row permissions and column masks are ", "bbox": {"l": 136.8, "t": 537.82712, "r": 547.27246, "b": 547.04012, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "built into the query that uses the MQT. In order for the MQT to be used for optimization, the ", "bbox": {"l": 136.8, "t": 549.82692, "r": 540.15295, "b": 559.0399199999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "MQT must include any columns that are used by the row permissions and column masks.", "bbox": {"l": 136.8, "t": 561.82672, "r": 531.36346, "b": 571.03972, "coord_origin": "TOPLEFT"}}]}, "text": "When a query implicitly uses an MQT, the underlying row permissions and column masks are built into the query that uses the MQT. In order for the MQT to be used for optimization, the MQT must include any columns that are used by the row permissions and column masks."}, {"label": "text", "id": 8, "page_no": 118, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.03353881835938, "t": 582.82958984375, "r": 342.15033, "b": 592.99953, "coord_origin": "TOPLEFT"}, "confidence": 0.9185956120491028, "cells": [{"id": 16, "text": "The following example illustrates this scenario:", "bbox": {"l": 136.8, "t": 583.78653, "r": 342.15033, "b": 592.99953, "coord_origin": "TOPLEFT"}}]}, "text": "The following example illustrates this scenario:"}, {"label": "list_item", "id": 9, "page_no": 118, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 136.65509033203125, "t": 600.0938720703125, "r": 270.41348, "b": 610.03909, "coord_origin": "TOPLEFT"}, "confidence": 0.708869218826294, "cells": [{"id": 17, "text": "1.", "bbox": {"l": 136.80002, "t": 600.8261, "r": 145.33115, "b": 610.03909, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Create schema and tables:", "bbox": {"l": 148.17487, "t": 600.8261, "r": 270.41348, "b": 610.03909, "coord_origin": "TOPLEFT"}}]}, "text": "1. Create schema and tables:"}, {"label": "text", "id": 10, "page_no": 118, "cluster": {"id": 10, "label": "text", "bbox": {"l": 151.20018, "t": 617.95531, "r": 547.25555, "b": 674.72928, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 19, "text": "CREATE SCHEMA Schema1; ", "bbox": {"l": 151.20018, "t": 617.95531, "r": 266.09869, "b": 626.73006, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "CREATE TABLE Schema1.employee(userID varchar(128), LocationID integer, Regionid ", "bbox": {"l": 151.20018, "t": 629.95511, "r": 547.25555, "b": 638.72986, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "integer); ", "bbox": {"l": 151.20018, "t": 641.95491, "r": 201.11969, "b": 650.72966, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "CREATE TABLE Schema1.Sales (INVOICE INTEGER NOT NULL, SALEAMT DECIMAL(5,2), ", "bbox": {"l": 151.20018, "t": 653.95471, "r": 531.05463, "b": 662.72946, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "TAXAMT DECIMAL(5,2), LOCATIONID INTEGER, REGIONID INTEGER);", "bbox": {"l": 151.20018, "t": 665.95452, "r": 446.03607000000005, "b": 674.72928, "coord_origin": "TOPLEFT"}}]}, "text": "CREATE SCHEMA Schema1; CREATE TABLE Schema1.employee(userID varchar(128), LocationID integer, Regionid integer); CREATE TABLE Schema1.Sales (INVOICE INTEGER NOT NULL, SALEAMT DECIMAL(5,2), TAXAMT DECIMAL(5,2), LOCATIONID INTEGER, REGIONID INTEGER);"}, {"label": "picture", "id": 11, "page_no": 118, "cluster": {"id": 11, "label": "picture", "bbox": {"l": 136.2811279296875, "t": 106.85755920410156, "r": 508.5420227050781, "b": 388.0796203613281, "coord_origin": "TOPLEFT"}, "confidence": 0.9733899235725403, "cells": [{"id": 24, "text": "CREATE VIEW OPEN_ACCOUNTS_VIEW AS (", "bbox": {"l": 154.0657, "t": 131.60051999999996, "r": 351.96384, "b": 141.26044000000002, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "SELECT ACCOUNT_NUMBER,", "bbox": {"l": 191.0079, "t": 151.91881999999998, "r": 324.31876, "b": 161.57874000000004, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ACCOUNT_CURRENT_BALANCE", "bbox": {"l": 227.95076, "t": 172.23748999999998, "r": 371.7757, "b": 181.89739999999995, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "FROM", "bbox": {"l": 191.0079, "t": 192.55535999999995, "r": 219.33701999999997, "b": 202.21527000000003, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "ACCOUNTS A", "bbox": {"l": 227.93269000000004, "t": 192.55535999999995, "r": 288.18939, "b": 202.21527000000003, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "WHERE A. ACCOUNT_DATE_CLOSED IS NULL) ", "bbox": {"l": 191.0079, "t": 212.87401999999997, "r": 399.53876, "b": 222.53394000000003, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "SELECT *", "bbox": {"l": 227.95019999999997, "t": 268.74872000000005, "r": 270.48792, "b": 278.40863, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "FROM", "bbox": {"l": 227.95019999999997, "t": 289.06738000000007, "r": 256.2793, "b": 298.72736, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "OPEN_ACCOUNTS_VIEW A", "bbox": {"l": 264.87497, "t": 289.06738000000007, "r": 387.39151, "b": 298.72736, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "WHERE A.ACCOUNT_NUMBER = ?", "bbox": {"l": 227.95019999999997, "t": 309.38522, "r": 384.06647, "b": 319.0452, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Note", "bbox": {"l": 185.2511, "t": 347.86838000000006, "r": 206.08113, "b": 356.64368, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": ": PERMISSION1_ON_ACCOUNTS allows access to the row", "bbox": {"l": 206.0927, "t": 347.86838000000006, "r": 447.3443, "b": 356.63342, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "based the user\u0092s group and CUSTOMER_ID value", "bbox": {"l": 215.69733, "t": 360.18246000000005, "r": 416.87384, "b": 368.9475100000001, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 118, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 370.6492004394531, "t": 754.8782348632812, "r": 517.96918, "b": 763.9190063476562, "coord_origin": "TOPLEFT"}, "confidence": 0.9510338306427002, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 371.28, "t": 755.538002, "r": 517.96918, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 118, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.1799926757812, "t": 754.2610473632812, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9243813157081604, "cells": [{"id": 1, "text": "103", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "103"}]}}, {"page_no": 119, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "104 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "2.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.18584, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Create a row permission that allows the employees to see only rows from the region they ", "bbox": {"l": 147.98111, "t": 71.50867000000005, "r": 545.86609, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "work in:", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 185.53629, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "/* Create permission that only allows the employees to see rows from the region ", "bbox": {"l": 151.20016, "t": 100.6377, "r": 547.19574, "b": 109.41247999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "they work in */ ", "bbox": {"l": 151.20016, "t": 112.63751000000002, "r": 231.17896, "b": 121.41228999999998, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "CREATE PERMISSION Schema1.Sales_PERM1 ", "bbox": {"l": 151.20016, "t": 124.6373299999999, "r": 341.0975, "b": 133.41210999999998, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "ON schema1.sales FOR ROWS ", "bbox": {"l": 151.20016, "t": 136.63715000000002, "r": 286.07846, "b": 145.41192999999998, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "WHERE CURRENT_USER in (SELECT userId FROM schema1.employee E ", "bbox": {"l": 151.20016, "t": 148.63696000000004, "r": 455.99606, "b": 157.41174, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "WHERE", "bbox": {"l": 151.20016, "t": 160.63678000000004, "r": 176.17984, "b": 169.41156, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "e.regionid = regionid) ", "bbox": {"l": 186.17171, "t": 160.63678000000004, "r": 301.07822, "b": 169.41156, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "ENFORCED FOR ALL ", "bbox": {"l": 151.20016, "t": 172.63660000000004, "r": 236.15893999999997, "b": 181.41138, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "ACCESS ENABLE;", "bbox": {"l": 151.20016, "t": 184.63640999999996, "r": 221.15918, "b": 193.41119000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "3.", "bbox": {"l": 136.8, "t": 201.52655000000004, "r": 145.2496, "b": 210.73955999999998, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Create an MQT to summarize sales by location:", "bbox": {"l": 148.06615, "t": 201.52655000000004, "r": 362.02145, "b": 210.73955999999998, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "-- Create MQT to summarize sales by location", "bbox": {"l": 151.20016, "t": 218.65576, "r": 371.03726, "b": 227.43053999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "-- This has all of the data. The schema1.sales_perm1 predicate was not applied ", "bbox": {"l": 151.20016, "t": 230.65558, "r": 545.99457, "b": 239.43035999999995, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "CREATE TABLE Schema1.Location_Sales_MQT as ", "bbox": {"l": 151.20016, "t": 242.6554, "r": 366.05728, "b": 251.43017999999995, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "AS (SELECT LocationID, SUM(Saleamt) as Total_Location_Sales ", "bbox": {"l": 151.20016, "t": 254.65521, "r": 451.01605, "b": 263.42999, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "FROM SCHEMA1.SALES ", "bbox": {"l": 151.20016, "t": 266.65503, "r": 246.11894, "b": 275.42981, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "GROUP BY LOCATIONID)", "bbox": {"l": 151.20016, "t": 278.65485, "r": 251.09894999999997, "b": 287.42963, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "DATA INITIALLY DEFERRED", "bbox": {"l": 151.20016, "t": 290.65466, "r": 266.09869, "b": 299.42944000000006, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "REFRESH DEFERRED", "bbox": {"l": 151.20016, "t": 302.65448, "r": 231.11919, "b": 311.42926, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "MAINTAINED BY USER; ", "bbox": {"l": 151.20016, "t": 314.6543, "r": 251.09893999999997, "b": 323.42908, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "4.", "bbox": {"l": 136.8, "t": 331.48471, "r": 145.25726, "b": 340.69768999999997, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Populate the MQT (permission is not applied):", "bbox": {"l": 148.07635, "t": 331.48471, "r": 354.34628, "b": 340.69768999999997, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "/* Populate the MQT - Permission not applied here */ ", "bbox": {"l": 151.20016, "t": 348.67368000000005, "r": 416.03656, "b": 357.44845999999995, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "REFRESH TABLE Schema1.Location_Sales_MQT ", "bbox": {"l": 151.20016, "t": 360.67349, "r": 356.03751, "b": 369.44827, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "The following query matches Location_Sales_MQT, but it cannot be used because it does ", "bbox": {"l": 151.20016, "t": 377.50391, "r": 547.19977, "b": 386.71689, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "not have column regionid, which is needed by the schema1.sales_PERM1 permission:", "bbox": {"l": 151.20016, "t": 389.50371999999993, "r": 533.10944, "b": 398.7167099999999, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "SELECT Locationid, sum(SALEAMT) FROM schema1.sales", "bbox": {"l": 151.20016, "t": 406.63290000000006, "r": 401.03677, "b": 415.40767999999997, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "GROUP BY locationid; ", "bbox": {"l": 151.20016, "t": 418.63272, "r": 256.19846, "b": 427.4075000000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "5.", "bbox": {"l": 136.8, "t": 435.52292, "r": 145.23802, "b": 444.7359, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Create an MQT to summarize by region and location:", "bbox": {"l": 148.05069, "t": 435.52292, "r": 385.90356, "b": 444.7359, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "-- MQT to summarize by region and location ", "bbox": {"l": 151.20016, "t": 452.6521, "r": 366.11707, "b": 461.42688, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Create table schema1.Region_Location_Sales_MQT as ", "bbox": {"l": 151.20016, "t": 464.65192, "r": 401.09653, "b": 473.4267, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "AS (SELECT REGIONID, LocationID, SUM(Saleamt) as Total_Location_Sales ", "bbox": {"l": 151.20016, "t": 476.65173, "r": 500.9953300000001, "b": 485.42651, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "FROM SCHEMA1.SALES", "bbox": {"l": 151.20016, "t": 488.65155, "r": 241.13895, "b": 497.42633, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "GROUP BY REGIONID, LOCATIONID)", "bbox": {"l": 151.20016, "t": 500.65137, "r": 301.07822, "b": 509.42615, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "DATA INITIALLY DEFERRED", "bbox": {"l": 151.20016, "t": 512.6511800000001, "r": 266.09869, "b": 521.42596, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "REFRESH DEFERRED", "bbox": {"l": 151.20016, "t": 524.6510000000001, "r": 231.11919, "b": 533.42578, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "MAINTAINED BY USER; ", "bbox": {"l": 151.20016, "t": 536.65082, "r": 251.09893999999997, "b": 545.42557, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "6.", "bbox": {"l": 136.8, "t": 553.54099, "r": 145.2187, "b": 562.75398, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Populate the Region_location_Sales_MQT (permission not applied):", "bbox": {"l": 148.02496, "t": 553.54099, "r": 452.10781999999995, "b": 562.75398, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "/* Populate the Region_location_Sales_MQT - Permission not applied here */ ", "bbox": {"l": 151.20016, "t": 570.6702, "r": 535.97479, "b": 579.4449500000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Refresh table schema1.Region_Location_Sales_MQT ", "bbox": {"l": 151.20016, "t": 582.67, "r": 391.07678, "b": 591.44475, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "The following query can use the Region_location_SALES_MQT because it has ", "bbox": {"l": 151.20016, "t": 599.50041, "r": 502.06903, "b": 608.7134100000001, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "REGIONID, which is required for the schema1.sales_PERM1 permission:", "bbox": {"l": 151.20016, "t": 611.50021, "r": 474.7886, "b": 620.71321, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "SELECT Locationid, sum(SALEAMT) FROM schema1.sales", "bbox": {"l": 151.20018, "t": 628.68918, "r": 401.03677, "b": 637.46393, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "GROUP BY", "bbox": {"l": 151.20018, "t": 640.68898, "r": 191.17677, "b": 649.4637299999999, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "locationid;", "bbox": {"l": 201.17091, "t": 640.68898, "r": 256.13873, "b": 649.4637299999999, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.42345428466797, "t": 754.3500366210938, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9201931953430176, "cells": [{"id": 0, "text": "104 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 98.57719421386719, "t": 754.6668090820312, "r": 339.839599609375, "b": 764.0997924804688, "coord_origin": "TOPLEFT"}, "confidence": 0.948181688785553, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 135.87754821777344, "t": 70.59613037109375, "r": 545.86609, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.8737232089042664, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.18584, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Create a row permission that allows the employees to see only rows from the region they ", "bbox": {"l": 147.98111, "t": 71.50867000000005, "r": 545.86609, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "work in:", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 185.53629, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "code", "bbox": {"l": 149.48439025878906, "t": 98.91398620605469, "r": 547.19574, "b": 193.41119000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.7315705418586731, "cells": [{"id": 5, "text": "/* Create permission that only allows the employees to see rows from the region ", "bbox": {"l": 151.20016, "t": 100.6377, "r": 547.19574, "b": 109.41247999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "they work in */ ", "bbox": {"l": 151.20016, "t": 112.63751000000002, "r": 231.17896, "b": 121.41228999999998, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "CREATE PERMISSION Schema1.Sales_PERM1 ", "bbox": {"l": 151.20016, "t": 124.6373299999999, "r": 341.0975, "b": 133.41210999999998, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "ON schema1.sales FOR ROWS ", "bbox": {"l": 151.20016, "t": 136.63715000000002, "r": 286.07846, "b": 145.41192999999998, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "WHERE CURRENT_USER in (SELECT userId FROM schema1.employee E ", "bbox": {"l": 151.20016, "t": 148.63696000000004, "r": 455.99606, "b": 157.41174, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "WHERE", "bbox": {"l": 151.20016, "t": 160.63678000000004, "r": 176.17984, "b": 169.41156, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "e.regionid = regionid) ", "bbox": {"l": 186.17171, "t": 160.63678000000004, "r": 301.07822, "b": 169.41156, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "ENFORCED FOR ALL ", "bbox": {"l": 151.20016, "t": 172.63660000000004, "r": 236.15893999999997, "b": 181.41138, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "ACCESS ENABLE;", "bbox": {"l": 151.20016, "t": 184.63640999999996, "r": 221.15918, "b": 193.41119000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 136.09523010253906, "t": 200.49166870117188, "r": 362.02145, "b": 210.96173095703125, "coord_origin": "TOPLEFT"}, "confidence": 0.7428785562515259, "cells": [{"id": 14, "text": "3.", "bbox": {"l": 136.8, "t": 201.52655000000004, "r": 145.2496, "b": 210.73955999999998, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Create an MQT to summarize sales by location:", "bbox": {"l": 148.06615, "t": 201.52655000000004, "r": 362.02145, "b": 210.73955999999998, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 149.7567138671875, "t": 217.29092407226562, "r": 545.99457, "b": 323.42908, "coord_origin": "TOPLEFT"}, "confidence": 0.7042393684387207, "cells": [{"id": 16, "text": "-- Create MQT to summarize sales by location", "bbox": {"l": 151.20016, "t": 218.65576, "r": 371.03726, "b": 227.43053999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "-- This has all of the data. The schema1.sales_perm1 predicate was not applied ", "bbox": {"l": 151.20016, "t": 230.65558, "r": 545.99457, "b": 239.43035999999995, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "CREATE TABLE Schema1.Location_Sales_MQT as ", "bbox": {"l": 151.20016, "t": 242.6554, "r": 366.05728, "b": 251.43017999999995, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "AS (SELECT LocationID, SUM(Saleamt) as Total_Location_Sales ", "bbox": {"l": 151.20016, "t": 254.65521, "r": 451.01605, "b": 263.42999, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "FROM SCHEMA1.SALES ", "bbox": {"l": 151.20016, "t": 266.65503, "r": 246.11894, "b": 275.42981, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "GROUP BY LOCATIONID)", "bbox": {"l": 151.20016, "t": 278.65485, "r": 251.09894999999997, "b": 287.42963, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "DATA INITIALLY DEFERRED", "bbox": {"l": 151.20016, "t": 290.65466, "r": 266.09869, "b": 299.42944000000006, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "REFRESH DEFERRED", "bbox": {"l": 151.20016, "t": 302.65448, "r": 231.11919, "b": 311.42926, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "MAINTAINED BY USER; ", "bbox": {"l": 151.20016, "t": 314.6543, "r": 251.09893999999997, "b": 323.42908, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.95851135253906, "t": 330.4781494140625, "r": 354.34628, "b": 341.0965881347656, "coord_origin": "TOPLEFT"}, "confidence": 0.7467354536056519, "cells": [{"id": 25, "text": "4.", "bbox": {"l": 136.8, "t": 331.48471, "r": 145.25726, "b": 340.69768999999997, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Populate the MQT (permission is not applied):", "bbox": {"l": 148.07635, "t": 331.48471, "r": 354.34628, "b": 340.69768999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 150.7456512451172, "t": 348.16949462890625, "r": 416.03656, "b": 370.27532958984375, "coord_origin": "TOPLEFT"}, "confidence": 0.698642373085022, "cells": [{"id": 27, "text": "/* Populate the MQT - Permission not applied here */ ", "bbox": {"l": 151.20016, "t": 348.67368000000005, "r": 416.03656, "b": 357.44845999999995, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "REFRESH TABLE Schema1.Location_Sales_MQT ", "bbox": {"l": 151.20016, "t": 360.67349, "r": 356.03751, "b": 369.44827, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 150.36888122558594, "t": 376.5781555175781, "r": 547.19977, "b": 399.09686279296875, "coord_origin": "TOPLEFT"}, "confidence": 0.8833680748939514, "cells": [{"id": 29, "text": "The following query matches Location_Sales_MQT, but it cannot be used because it does ", "bbox": {"l": 151.20016, "t": 377.50391, "r": 547.19977, "b": 386.71689, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "not have column regionid, which is needed by the schema1.sales_PERM1 permission:", "bbox": {"l": 151.20016, "t": 389.50371999999993, "r": 533.10944, "b": 398.7167099999999, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 150.5345001220703, "t": 405.3749084472656, "r": 401.03677, "b": 427.4075000000001, "coord_origin": "TOPLEFT"}, "confidence": 0.7805010676383972, "cells": [{"id": 31, "text": "SELECT Locationid, sum(SALEAMT) FROM schema1.sales", "bbox": {"l": 151.20016, "t": 406.63290000000006, "r": 401.03677, "b": 415.40767999999997, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "GROUP BY locationid; ", "bbox": {"l": 151.20016, "t": 418.63272, "r": 256.19846, "b": 427.4075000000001, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 136.50941467285156, "t": 434.431884765625, "r": 385.90356, "b": 444.9353942871094, "coord_origin": "TOPLEFT"}, "confidence": 0.7377039194107056, "cells": [{"id": 33, "text": "5.", "bbox": {"l": 136.8, "t": 435.52292, "r": 145.23802, "b": 444.7359, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Create an MQT to summarize by region and location:", "bbox": {"l": 148.05069, "t": 435.52292, "r": 385.90356, "b": 444.7359, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 150.02435302734375, "t": 451.1933288574219, "r": 500.9953300000001, "b": 545.42557, "coord_origin": "TOPLEFT"}, "confidence": 0.8073603510856628, "cells": [{"id": 35, "text": "-- MQT to summarize by region and location ", "bbox": {"l": 151.20016, "t": 452.6521, "r": 366.11707, "b": 461.42688, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Create table schema1.Region_Location_Sales_MQT as ", "bbox": {"l": 151.20016, "t": 464.65192, "r": 401.09653, "b": 473.4267, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "AS (SELECT REGIONID, LocationID, SUM(Saleamt) as Total_Location_Sales ", "bbox": {"l": 151.20016, "t": 476.65173, "r": 500.9953300000001, "b": 485.42651, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "FROM SCHEMA1.SALES", "bbox": {"l": 151.20016, "t": 488.65155, "r": 241.13895, "b": 497.42633, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "GROUP BY REGIONID, LOCATIONID)", "bbox": {"l": 151.20016, "t": 500.65137, "r": 301.07822, "b": 509.42615, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "DATA INITIALLY DEFERRED", "bbox": {"l": 151.20016, "t": 512.6511800000001, "r": 266.09869, "b": 521.42596, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "REFRESH DEFERRED", "bbox": {"l": 151.20016, "t": 524.6510000000001, "r": 231.11919, "b": 533.42578, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "MAINTAINED BY USER; ", "bbox": {"l": 151.20016, "t": 536.65082, "r": 251.09893999999997, "b": 545.42557, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "list_item", "bbox": {"l": 136.33966064453125, "t": 552.5261840820312, "r": 452.10781999999995, "b": 563.1635131835938, "coord_origin": "TOPLEFT"}, "confidence": 0.7632867097854614, "cells": [{"id": 43, "text": "6.", "bbox": {"l": 136.8, "t": 553.54099, "r": 145.2187, "b": 562.75398, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Populate the Region_location_Sales_MQT (permission not applied):", "bbox": {"l": 148.02496, "t": 553.54099, "r": 452.10781999999995, "b": 562.75398, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 150.35263061523438, "t": 569.8162841796875, "r": 535.97479, "b": 592.6467895507812, "coord_origin": "TOPLEFT"}, "confidence": 0.8625366687774658, "cells": [{"id": 45, "text": "/* Populate the Region_location_Sales_MQT - Permission not applied here */ ", "bbox": {"l": 151.20016, "t": 570.6702, "r": 535.97479, "b": 579.4449500000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Refresh table schema1.Region_Location_Sales_MQT ", "bbox": {"l": 151.20016, "t": 582.67, "r": 391.07678, "b": 591.44475, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "text", "bbox": {"l": 150.33642578125, "t": 598.5096435546875, "r": 502.06903, "b": 620.71321, "coord_origin": "TOPLEFT"}, "confidence": 0.9041882157325745, "cells": [{"id": 47, "text": "The following query can use the Region_location_SALES_MQT because it has ", "bbox": {"l": 151.20016, "t": 599.50041, "r": 502.06903, "b": 608.7134100000001, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "REGIONID, which is required for the schema1.sales_PERM1 permission:", "bbox": {"l": 151.20016, "t": 611.50021, "r": 474.7886, "b": 620.71321, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "text", "bbox": {"l": 150.63597106933594, "t": 628.1326293945312, "r": 401.03677, "b": 649.8663940429688, "coord_origin": "TOPLEFT"}, "confidence": 0.8543345332145691, "cells": [{"id": 49, "text": "SELECT Locationid, sum(SALEAMT) FROM schema1.sales", "bbox": {"l": 151.20018, "t": 628.68918, "r": 401.03677, "b": 637.46393, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "GROUP BY", "bbox": {"l": 151.20018, "t": 640.68898, "r": 191.17677, "b": 649.4637299999999, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "locationid;", "bbox": {"l": 201.17091, "t": 640.68898, "r": 256.13873, "b": 649.4637299999999, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 119, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.42345428466797, "t": 754.3500366210938, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9201931953430176, "cells": [{"id": 0, "text": "104 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "104"}, {"label": "page_footer", "id": 1, "page_no": 119, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.57719421386719, "t": 754.6668090820312, "r": 339.839599609375, "b": 764.0997924804688, "coord_origin": "TOPLEFT"}, "confidence": 0.948181688785553, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "list_item", "id": 2, "page_no": 119, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.87754821777344, "t": 70.59613037109375, "r": 545.86609, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.8737232089042664, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.18584, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Create a row permission that allows the employees to see only rows from the region they ", "bbox": {"l": 147.98111, "t": 71.50867000000005, "r": 545.86609, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "work in:", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 185.53629, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "2. Create a row permission that allows the employees to see only rows from the region they work in:"}, {"label": "code", "id": 3, "page_no": 119, "cluster": {"id": 3, "label": "code", "bbox": {"l": 149.48439025878906, "t": 98.91398620605469, "r": 547.19574, "b": 193.41119000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.7315705418586731, "cells": [{"id": 5, "text": "/* Create permission that only allows the employees to see rows from the region ", "bbox": {"l": 151.20016, "t": 100.6377, "r": 547.19574, "b": 109.41247999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "they work in */ ", "bbox": {"l": 151.20016, "t": 112.63751000000002, "r": 231.17896, "b": 121.41228999999998, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "CREATE PERMISSION Schema1.Sales_PERM1 ", "bbox": {"l": 151.20016, "t": 124.6373299999999, "r": 341.0975, "b": 133.41210999999998, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "ON schema1.sales FOR ROWS ", "bbox": {"l": 151.20016, "t": 136.63715000000002, "r": 286.07846, "b": 145.41192999999998, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "WHERE CURRENT_USER in (SELECT userId FROM schema1.employee E ", "bbox": {"l": 151.20016, "t": 148.63696000000004, "r": 455.99606, "b": 157.41174, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "WHERE", "bbox": {"l": 151.20016, "t": 160.63678000000004, "r": 176.17984, "b": 169.41156, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "e.regionid = regionid) ", "bbox": {"l": 186.17171, "t": 160.63678000000004, "r": 301.07822, "b": 169.41156, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "ENFORCED FOR ALL ", "bbox": {"l": 151.20016, "t": 172.63660000000004, "r": 236.15893999999997, "b": 181.41138, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "ACCESS ENABLE;", "bbox": {"l": 151.20016, "t": 184.63640999999996, "r": 221.15918, "b": 193.41119000000003, "coord_origin": "TOPLEFT"}}]}, "text": "/* Create permission that only allows the employees to see rows from the region they work in */ CREATE PERMISSION Schema1.Sales_PERM1 ON schema1.sales FOR ROWS WHERE CURRENT_USER in (SELECT userId FROM schema1.employee E WHERE e.regionid = regionid) ENFORCED FOR ALL ACCESS ENABLE;"}, {"label": "list_item", "id": 4, "page_no": 119, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.09523010253906, "t": 200.49166870117188, "r": 362.02145, "b": 210.96173095703125, "coord_origin": "TOPLEFT"}, "confidence": 0.7428785562515259, "cells": [{"id": 14, "text": "3.", "bbox": {"l": 136.8, "t": 201.52655000000004, "r": 145.2496, "b": 210.73955999999998, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Create an MQT to summarize sales by location:", "bbox": {"l": 148.06615, "t": 201.52655000000004, "r": 362.02145, "b": 210.73955999999998, "coord_origin": "TOPLEFT"}}]}, "text": "3. Create an MQT to summarize sales by location:"}, {"label": "text", "id": 5, "page_no": 119, "cluster": {"id": 5, "label": "text", "bbox": {"l": 149.7567138671875, "t": 217.29092407226562, "r": 545.99457, "b": 323.42908, "coord_origin": "TOPLEFT"}, "confidence": 0.7042393684387207, "cells": [{"id": 16, "text": "-- Create MQT to summarize sales by location", "bbox": {"l": 151.20016, "t": 218.65576, "r": 371.03726, "b": 227.43053999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "-- This has all of the data. The schema1.sales_perm1 predicate was not applied ", "bbox": {"l": 151.20016, "t": 230.65558, "r": 545.99457, "b": 239.43035999999995, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "CREATE TABLE Schema1.Location_Sales_MQT as ", "bbox": {"l": 151.20016, "t": 242.6554, "r": 366.05728, "b": 251.43017999999995, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "AS (SELECT LocationID, SUM(Saleamt) as Total_Location_Sales ", "bbox": {"l": 151.20016, "t": 254.65521, "r": 451.01605, "b": 263.42999, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "FROM SCHEMA1.SALES ", "bbox": {"l": 151.20016, "t": 266.65503, "r": 246.11894, "b": 275.42981, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "GROUP BY LOCATIONID)", "bbox": {"l": 151.20016, "t": 278.65485, "r": 251.09894999999997, "b": 287.42963, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "DATA INITIALLY DEFERRED", "bbox": {"l": 151.20016, "t": 290.65466, "r": 266.09869, "b": 299.42944000000006, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "REFRESH DEFERRED", "bbox": {"l": 151.20016, "t": 302.65448, "r": 231.11919, "b": 311.42926, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "MAINTAINED BY USER; ", "bbox": {"l": 151.20016, "t": 314.6543, "r": 251.09893999999997, "b": 323.42908, "coord_origin": "TOPLEFT"}}]}, "text": "-- Create MQT to summarize sales by location -- This has all of the data. The schema1.sales_perm1 predicate was not applied CREATE TABLE Schema1.Location_Sales_MQT as AS (SELECT LocationID, SUM(Saleamt) as Total_Location_Sales FROM SCHEMA1.SALES GROUP BY LOCATIONID) DATA INITIALLY DEFERRED REFRESH DEFERRED MAINTAINED BY USER;"}, {"label": "list_item", "id": 6, "page_no": 119, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.95851135253906, "t": 330.4781494140625, "r": 354.34628, "b": 341.0965881347656, "coord_origin": "TOPLEFT"}, "confidence": 0.7467354536056519, "cells": [{"id": 25, "text": "4.", "bbox": {"l": 136.8, "t": 331.48471, "r": 145.25726, "b": 340.69768999999997, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Populate the MQT (permission is not applied):", "bbox": {"l": 148.07635, "t": 331.48471, "r": 354.34628, "b": 340.69768999999997, "coord_origin": "TOPLEFT"}}]}, "text": "4. Populate the MQT (permission is not applied):"}, {"label": "text", "id": 7, "page_no": 119, "cluster": {"id": 7, "label": "text", "bbox": {"l": 150.7456512451172, "t": 348.16949462890625, "r": 416.03656, "b": 370.27532958984375, "coord_origin": "TOPLEFT"}, "confidence": 0.698642373085022, "cells": [{"id": 27, "text": "/* Populate the MQT - Permission not applied here */ ", "bbox": {"l": 151.20016, "t": 348.67368000000005, "r": 416.03656, "b": 357.44845999999995, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "REFRESH TABLE Schema1.Location_Sales_MQT ", "bbox": {"l": 151.20016, "t": 360.67349, "r": 356.03751, "b": 369.44827, "coord_origin": "TOPLEFT"}}]}, "text": "/* Populate the MQT - Permission not applied here */ REFRESH TABLE Schema1.Location_Sales_MQT"}, {"label": "text", "id": 8, "page_no": 119, "cluster": {"id": 8, "label": "text", "bbox": {"l": 150.36888122558594, "t": 376.5781555175781, "r": 547.19977, "b": 399.09686279296875, "coord_origin": "TOPLEFT"}, "confidence": 0.8833680748939514, "cells": [{"id": 29, "text": "The following query matches Location_Sales_MQT, but it cannot be used because it does ", "bbox": {"l": 151.20016, "t": 377.50391, "r": 547.19977, "b": 386.71689, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "not have column regionid, which is needed by the schema1.sales_PERM1 permission:", "bbox": {"l": 151.20016, "t": 389.50371999999993, "r": 533.10944, "b": 398.7167099999999, "coord_origin": "TOPLEFT"}}]}, "text": "The following query matches Location_Sales_MQT, but it cannot be used because it does not have column regionid, which is needed by the schema1.sales_PERM1 permission:"}, {"label": "text", "id": 9, "page_no": 119, "cluster": {"id": 9, "label": "text", "bbox": {"l": 150.5345001220703, "t": 405.3749084472656, "r": 401.03677, "b": 427.4075000000001, "coord_origin": "TOPLEFT"}, "confidence": 0.7805010676383972, "cells": [{"id": 31, "text": "SELECT Locationid, sum(SALEAMT) FROM schema1.sales", "bbox": {"l": 151.20016, "t": 406.63290000000006, "r": 401.03677, "b": 415.40767999999997, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "GROUP BY locationid; ", "bbox": {"l": 151.20016, "t": 418.63272, "r": 256.19846, "b": 427.4075000000001, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT Locationid, sum(SALEAMT) FROM schema1.sales GROUP BY locationid;"}, {"label": "list_item", "id": 10, "page_no": 119, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 136.50941467285156, "t": 434.431884765625, "r": 385.90356, "b": 444.9353942871094, "coord_origin": "TOPLEFT"}, "confidence": 0.7377039194107056, "cells": [{"id": 33, "text": "5.", "bbox": {"l": 136.8, "t": 435.52292, "r": 145.23802, "b": 444.7359, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Create an MQT to summarize by region and location:", "bbox": {"l": 148.05069, "t": 435.52292, "r": 385.90356, "b": 444.7359, "coord_origin": "TOPLEFT"}}]}, "text": "5. Create an MQT to summarize by region and location:"}, {"label": "text", "id": 11, "page_no": 119, "cluster": {"id": 11, "label": "text", "bbox": {"l": 150.02435302734375, "t": 451.1933288574219, "r": 500.9953300000001, "b": 545.42557, "coord_origin": "TOPLEFT"}, "confidence": 0.8073603510856628, "cells": [{"id": 35, "text": "-- MQT to summarize by region and location ", "bbox": {"l": 151.20016, "t": 452.6521, "r": 366.11707, "b": 461.42688, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Create table schema1.Region_Location_Sales_MQT as ", "bbox": {"l": 151.20016, "t": 464.65192, "r": 401.09653, "b": 473.4267, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "AS (SELECT REGIONID, LocationID, SUM(Saleamt) as Total_Location_Sales ", "bbox": {"l": 151.20016, "t": 476.65173, "r": 500.9953300000001, "b": 485.42651, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "FROM SCHEMA1.SALES", "bbox": {"l": 151.20016, "t": 488.65155, "r": 241.13895, "b": 497.42633, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "GROUP BY REGIONID, LOCATIONID)", "bbox": {"l": 151.20016, "t": 500.65137, "r": 301.07822, "b": 509.42615, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "DATA INITIALLY DEFERRED", "bbox": {"l": 151.20016, "t": 512.6511800000001, "r": 266.09869, "b": 521.42596, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "REFRESH DEFERRED", "bbox": {"l": 151.20016, "t": 524.6510000000001, "r": 231.11919, "b": 533.42578, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "MAINTAINED BY USER; ", "bbox": {"l": 151.20016, "t": 536.65082, "r": 251.09893999999997, "b": 545.42557, "coord_origin": "TOPLEFT"}}]}, "text": "-- MQT to summarize by region and location Create table schema1.Region_Location_Sales_MQT as AS (SELECT REGIONID, LocationID, SUM(Saleamt) as Total_Location_Sales FROM SCHEMA1.SALES GROUP BY REGIONID, LOCATIONID) DATA INITIALLY DEFERRED REFRESH DEFERRED MAINTAINED BY USER;"}, {"label": "list_item", "id": 12, "page_no": 119, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 136.33966064453125, "t": 552.5261840820312, "r": 452.10781999999995, "b": 563.1635131835938, "coord_origin": "TOPLEFT"}, "confidence": 0.7632867097854614, "cells": [{"id": 43, "text": "6.", "bbox": {"l": 136.8, "t": 553.54099, "r": 145.2187, "b": 562.75398, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Populate the Region_location_Sales_MQT (permission not applied):", "bbox": {"l": 148.02496, "t": 553.54099, "r": 452.10781999999995, "b": 562.75398, "coord_origin": "TOPLEFT"}}]}, "text": "6. Populate the Region_location_Sales_MQT (permission not applied):"}, {"label": "text", "id": 13, "page_no": 119, "cluster": {"id": 13, "label": "text", "bbox": {"l": 150.35263061523438, "t": 569.8162841796875, "r": 535.97479, "b": 592.6467895507812, "coord_origin": "TOPLEFT"}, "confidence": 0.8625366687774658, "cells": [{"id": 45, "text": "/* Populate the Region_location_Sales_MQT - Permission not applied here */ ", "bbox": {"l": 151.20016, "t": 570.6702, "r": 535.97479, "b": 579.4449500000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Refresh table schema1.Region_Location_Sales_MQT ", "bbox": {"l": 151.20016, "t": 582.67, "r": 391.07678, "b": 591.44475, "coord_origin": "TOPLEFT"}}]}, "text": "/* Populate the Region_location_Sales_MQT - Permission not applied here */ Refresh table schema1.Region_Location_Sales_MQT"}, {"label": "text", "id": 14, "page_no": 119, "cluster": {"id": 14, "label": "text", "bbox": {"l": 150.33642578125, "t": 598.5096435546875, "r": 502.06903, "b": 620.71321, "coord_origin": "TOPLEFT"}, "confidence": 0.9041882157325745, "cells": [{"id": 47, "text": "The following query can use the Region_location_SALES_MQT because it has ", "bbox": {"l": 151.20016, "t": 599.50041, "r": 502.06903, "b": 608.7134100000001, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "REGIONID, which is required for the schema1.sales_PERM1 permission:", "bbox": {"l": 151.20016, "t": 611.50021, "r": 474.7886, "b": 620.71321, "coord_origin": "TOPLEFT"}}]}, "text": "The following query can use the Region_location_SALES_MQT because it has REGIONID, which is required for the schema1.sales_PERM1 permission:"}, {"label": "text", "id": 15, "page_no": 119, "cluster": {"id": 15, "label": "text", "bbox": {"l": 150.63597106933594, "t": 628.1326293945312, "r": 401.03677, "b": 649.8663940429688, "coord_origin": "TOPLEFT"}, "confidence": 0.8543345332145691, "cells": [{"id": 49, "text": "SELECT Locationid, sum(SALEAMT) FROM schema1.sales", "bbox": {"l": 151.20018, "t": 628.68918, "r": 401.03677, "b": 637.46393, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "GROUP BY", "bbox": {"l": 151.20018, "t": 640.68898, "r": 191.17677, "b": 649.4637299999999, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "locationid;", "bbox": {"l": 201.17091, "t": 640.68898, "r": 256.13873, "b": 649.4637299999999, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT Locationid, sum(SALEAMT) FROM schema1.sales GROUP BY locationid;"}], "body": [{"label": "list_item", "id": 2, "page_no": 119, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.87754821777344, "t": 70.59613037109375, "r": 545.86609, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.8737232089042664, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.18584, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Create a row permission that allows the employees to see only rows from the region they ", "bbox": {"l": 147.98111, "t": 71.50867000000005, "r": 545.86609, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "work in:", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 185.53629, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "2. Create a row permission that allows the employees to see only rows from the region they work in:"}, {"label": "code", "id": 3, "page_no": 119, "cluster": {"id": 3, "label": "code", "bbox": {"l": 149.48439025878906, "t": 98.91398620605469, "r": 547.19574, "b": 193.41119000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.7315705418586731, "cells": [{"id": 5, "text": "/* Create permission that only allows the employees to see rows from the region ", "bbox": {"l": 151.20016, "t": 100.6377, "r": 547.19574, "b": 109.41247999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "they work in */ ", "bbox": {"l": 151.20016, "t": 112.63751000000002, "r": 231.17896, "b": 121.41228999999998, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "CREATE PERMISSION Schema1.Sales_PERM1 ", "bbox": {"l": 151.20016, "t": 124.6373299999999, "r": 341.0975, "b": 133.41210999999998, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "ON schema1.sales FOR ROWS ", "bbox": {"l": 151.20016, "t": 136.63715000000002, "r": 286.07846, "b": 145.41192999999998, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "WHERE CURRENT_USER in (SELECT userId FROM schema1.employee E ", "bbox": {"l": 151.20016, "t": 148.63696000000004, "r": 455.99606, "b": 157.41174, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "WHERE", "bbox": {"l": 151.20016, "t": 160.63678000000004, "r": 176.17984, "b": 169.41156, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "e.regionid = regionid) ", "bbox": {"l": 186.17171, "t": 160.63678000000004, "r": 301.07822, "b": 169.41156, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "ENFORCED FOR ALL ", "bbox": {"l": 151.20016, "t": 172.63660000000004, "r": 236.15893999999997, "b": 181.41138, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "ACCESS ENABLE;", "bbox": {"l": 151.20016, "t": 184.63640999999996, "r": 221.15918, "b": 193.41119000000003, "coord_origin": "TOPLEFT"}}]}, "text": "/* Create permission that only allows the employees to see rows from the region they work in */ CREATE PERMISSION Schema1.Sales_PERM1 ON schema1.sales FOR ROWS WHERE CURRENT_USER in (SELECT userId FROM schema1.employee E WHERE e.regionid = regionid) ENFORCED FOR ALL ACCESS ENABLE;"}, {"label": "list_item", "id": 4, "page_no": 119, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.09523010253906, "t": 200.49166870117188, "r": 362.02145, "b": 210.96173095703125, "coord_origin": "TOPLEFT"}, "confidence": 0.7428785562515259, "cells": [{"id": 14, "text": "3.", "bbox": {"l": 136.8, "t": 201.52655000000004, "r": 145.2496, "b": 210.73955999999998, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Create an MQT to summarize sales by location:", "bbox": {"l": 148.06615, "t": 201.52655000000004, "r": 362.02145, "b": 210.73955999999998, "coord_origin": "TOPLEFT"}}]}, "text": "3. Create an MQT to summarize sales by location:"}, {"label": "text", "id": 5, "page_no": 119, "cluster": {"id": 5, "label": "text", "bbox": {"l": 149.7567138671875, "t": 217.29092407226562, "r": 545.99457, "b": 323.42908, "coord_origin": "TOPLEFT"}, "confidence": 0.7042393684387207, "cells": [{"id": 16, "text": "-- Create MQT to summarize sales by location", "bbox": {"l": 151.20016, "t": 218.65576, "r": 371.03726, "b": 227.43053999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "-- This has all of the data. The schema1.sales_perm1 predicate was not applied ", "bbox": {"l": 151.20016, "t": 230.65558, "r": 545.99457, "b": 239.43035999999995, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "CREATE TABLE Schema1.Location_Sales_MQT as ", "bbox": {"l": 151.20016, "t": 242.6554, "r": 366.05728, "b": 251.43017999999995, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "AS (SELECT LocationID, SUM(Saleamt) as Total_Location_Sales ", "bbox": {"l": 151.20016, "t": 254.65521, "r": 451.01605, "b": 263.42999, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "FROM SCHEMA1.SALES ", "bbox": {"l": 151.20016, "t": 266.65503, "r": 246.11894, "b": 275.42981, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "GROUP BY LOCATIONID)", "bbox": {"l": 151.20016, "t": 278.65485, "r": 251.09894999999997, "b": 287.42963, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "DATA INITIALLY DEFERRED", "bbox": {"l": 151.20016, "t": 290.65466, "r": 266.09869, "b": 299.42944000000006, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "REFRESH DEFERRED", "bbox": {"l": 151.20016, "t": 302.65448, "r": 231.11919, "b": 311.42926, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "MAINTAINED BY USER; ", "bbox": {"l": 151.20016, "t": 314.6543, "r": 251.09893999999997, "b": 323.42908, "coord_origin": "TOPLEFT"}}]}, "text": "-- Create MQT to summarize sales by location -- This has all of the data. The schema1.sales_perm1 predicate was not applied CREATE TABLE Schema1.Location_Sales_MQT as AS (SELECT LocationID, SUM(Saleamt) as Total_Location_Sales FROM SCHEMA1.SALES GROUP BY LOCATIONID) DATA INITIALLY DEFERRED REFRESH DEFERRED MAINTAINED BY USER;"}, {"label": "list_item", "id": 6, "page_no": 119, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.95851135253906, "t": 330.4781494140625, "r": 354.34628, "b": 341.0965881347656, "coord_origin": "TOPLEFT"}, "confidence": 0.7467354536056519, "cells": [{"id": 25, "text": "4.", "bbox": {"l": 136.8, "t": 331.48471, "r": 145.25726, "b": 340.69768999999997, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Populate the MQT (permission is not applied):", "bbox": {"l": 148.07635, "t": 331.48471, "r": 354.34628, "b": 340.69768999999997, "coord_origin": "TOPLEFT"}}]}, "text": "4. Populate the MQT (permission is not applied):"}, {"label": "text", "id": 7, "page_no": 119, "cluster": {"id": 7, "label": "text", "bbox": {"l": 150.7456512451172, "t": 348.16949462890625, "r": 416.03656, "b": 370.27532958984375, "coord_origin": "TOPLEFT"}, "confidence": 0.698642373085022, "cells": [{"id": 27, "text": "/* Populate the MQT - Permission not applied here */ ", "bbox": {"l": 151.20016, "t": 348.67368000000005, "r": 416.03656, "b": 357.44845999999995, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "REFRESH TABLE Schema1.Location_Sales_MQT ", "bbox": {"l": 151.20016, "t": 360.67349, "r": 356.03751, "b": 369.44827, "coord_origin": "TOPLEFT"}}]}, "text": "/* Populate the MQT - Permission not applied here */ REFRESH TABLE Schema1.Location_Sales_MQT"}, {"label": "text", "id": 8, "page_no": 119, "cluster": {"id": 8, "label": "text", "bbox": {"l": 150.36888122558594, "t": 376.5781555175781, "r": 547.19977, "b": 399.09686279296875, "coord_origin": "TOPLEFT"}, "confidence": 0.8833680748939514, "cells": [{"id": 29, "text": "The following query matches Location_Sales_MQT, but it cannot be used because it does ", "bbox": {"l": 151.20016, "t": 377.50391, "r": 547.19977, "b": 386.71689, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "not have column regionid, which is needed by the schema1.sales_PERM1 permission:", "bbox": {"l": 151.20016, "t": 389.50371999999993, "r": 533.10944, "b": 398.7167099999999, "coord_origin": "TOPLEFT"}}]}, "text": "The following query matches Location_Sales_MQT, but it cannot be used because it does not have column regionid, which is needed by the schema1.sales_PERM1 permission:"}, {"label": "text", "id": 9, "page_no": 119, "cluster": {"id": 9, "label": "text", "bbox": {"l": 150.5345001220703, "t": 405.3749084472656, "r": 401.03677, "b": 427.4075000000001, "coord_origin": "TOPLEFT"}, "confidence": 0.7805010676383972, "cells": [{"id": 31, "text": "SELECT Locationid, sum(SALEAMT) FROM schema1.sales", "bbox": {"l": 151.20016, "t": 406.63290000000006, "r": 401.03677, "b": 415.40767999999997, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "GROUP BY locationid; ", "bbox": {"l": 151.20016, "t": 418.63272, "r": 256.19846, "b": 427.4075000000001, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT Locationid, sum(SALEAMT) FROM schema1.sales GROUP BY locationid;"}, {"label": "list_item", "id": 10, "page_no": 119, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 136.50941467285156, "t": 434.431884765625, "r": 385.90356, "b": 444.9353942871094, "coord_origin": "TOPLEFT"}, "confidence": 0.7377039194107056, "cells": [{"id": 33, "text": "5.", "bbox": {"l": 136.8, "t": 435.52292, "r": 145.23802, "b": 444.7359, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Create an MQT to summarize by region and location:", "bbox": {"l": 148.05069, "t": 435.52292, "r": 385.90356, "b": 444.7359, "coord_origin": "TOPLEFT"}}]}, "text": "5. Create an MQT to summarize by region and location:"}, {"label": "text", "id": 11, "page_no": 119, "cluster": {"id": 11, "label": "text", "bbox": {"l": 150.02435302734375, "t": 451.1933288574219, "r": 500.9953300000001, "b": 545.42557, "coord_origin": "TOPLEFT"}, "confidence": 0.8073603510856628, "cells": [{"id": 35, "text": "-- MQT to summarize by region and location ", "bbox": {"l": 151.20016, "t": 452.6521, "r": 366.11707, "b": 461.42688, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Create table schema1.Region_Location_Sales_MQT as ", "bbox": {"l": 151.20016, "t": 464.65192, "r": 401.09653, "b": 473.4267, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "AS (SELECT REGIONID, LocationID, SUM(Saleamt) as Total_Location_Sales ", "bbox": {"l": 151.20016, "t": 476.65173, "r": 500.9953300000001, "b": 485.42651, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "FROM SCHEMA1.SALES", "bbox": {"l": 151.20016, "t": 488.65155, "r": 241.13895, "b": 497.42633, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "GROUP BY REGIONID, LOCATIONID)", "bbox": {"l": 151.20016, "t": 500.65137, "r": 301.07822, "b": 509.42615, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "DATA INITIALLY DEFERRED", "bbox": {"l": 151.20016, "t": 512.6511800000001, "r": 266.09869, "b": 521.42596, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "REFRESH DEFERRED", "bbox": {"l": 151.20016, "t": 524.6510000000001, "r": 231.11919, "b": 533.42578, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "MAINTAINED BY USER; ", "bbox": {"l": 151.20016, "t": 536.65082, "r": 251.09893999999997, "b": 545.42557, "coord_origin": "TOPLEFT"}}]}, "text": "-- MQT to summarize by region and location Create table schema1.Region_Location_Sales_MQT as AS (SELECT REGIONID, LocationID, SUM(Saleamt) as Total_Location_Sales FROM SCHEMA1.SALES GROUP BY REGIONID, LOCATIONID) DATA INITIALLY DEFERRED REFRESH DEFERRED MAINTAINED BY USER;"}, {"label": "list_item", "id": 12, "page_no": 119, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 136.33966064453125, "t": 552.5261840820312, "r": 452.10781999999995, "b": 563.1635131835938, "coord_origin": "TOPLEFT"}, "confidence": 0.7632867097854614, "cells": [{"id": 43, "text": "6.", "bbox": {"l": 136.8, "t": 553.54099, "r": 145.2187, "b": 562.75398, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Populate the Region_location_Sales_MQT (permission not applied):", "bbox": {"l": 148.02496, "t": 553.54099, "r": 452.10781999999995, "b": 562.75398, "coord_origin": "TOPLEFT"}}]}, "text": "6. Populate the Region_location_Sales_MQT (permission not applied):"}, {"label": "text", "id": 13, "page_no": 119, "cluster": {"id": 13, "label": "text", "bbox": {"l": 150.35263061523438, "t": 569.8162841796875, "r": 535.97479, "b": 592.6467895507812, "coord_origin": "TOPLEFT"}, "confidence": 0.8625366687774658, "cells": [{"id": 45, "text": "/* Populate the Region_location_Sales_MQT - Permission not applied here */ ", "bbox": {"l": 151.20016, "t": 570.6702, "r": 535.97479, "b": 579.4449500000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Refresh table schema1.Region_Location_Sales_MQT ", "bbox": {"l": 151.20016, "t": 582.67, "r": 391.07678, "b": 591.44475, "coord_origin": "TOPLEFT"}}]}, "text": "/* Populate the Region_location_Sales_MQT - Permission not applied here */ Refresh table schema1.Region_Location_Sales_MQT"}, {"label": "text", "id": 14, "page_no": 119, "cluster": {"id": 14, "label": "text", "bbox": {"l": 150.33642578125, "t": 598.5096435546875, "r": 502.06903, "b": 620.71321, "coord_origin": "TOPLEFT"}, "confidence": 0.9041882157325745, "cells": [{"id": 47, "text": "The following query can use the Region_location_SALES_MQT because it has ", "bbox": {"l": 151.20016, "t": 599.50041, "r": 502.06903, "b": 608.7134100000001, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "REGIONID, which is required for the schema1.sales_PERM1 permission:", "bbox": {"l": 151.20016, "t": 611.50021, "r": 474.7886, "b": 620.71321, "coord_origin": "TOPLEFT"}}]}, "text": "The following query can use the Region_location_SALES_MQT because it has REGIONID, which is required for the schema1.sales_PERM1 permission:"}, {"label": "text", "id": 15, "page_no": 119, "cluster": {"id": 15, "label": "text", "bbox": {"l": 150.63597106933594, "t": 628.1326293945312, "r": 401.03677, "b": 649.8663940429688, "coord_origin": "TOPLEFT"}, "confidence": 0.8543345332145691, "cells": [{"id": 49, "text": "SELECT Locationid, sum(SALEAMT) FROM schema1.sales", "bbox": {"l": 151.20018, "t": 628.68918, "r": 401.03677, "b": 637.46393, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "GROUP BY", "bbox": {"l": 151.20018, "t": 640.68898, "r": 191.17677, "b": 649.4637299999999, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "locationid;", "bbox": {"l": 201.17091, "t": 640.68898, "r": 256.13873, "b": 649.4637299999999, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT Locationid, sum(SALEAMT) FROM schema1.sales GROUP BY locationid;"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 119, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.42345428466797, "t": 754.3500366210938, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9201931953430176, "cells": [{"id": 0, "text": "104 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "104"}, {"label": "page_footer", "id": 1, "page_no": 119, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.57719421386719, "t": 754.6668090820312, "r": 339.839599609375, "b": 764.0997924804688, "coord_origin": "TOPLEFT"}, "confidence": 0.948181688785553, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 120, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 371.28, "t": 755.538002, "r": 517.96918, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "105", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "This example has the following additional implications:", "bbox": {"l": 136.8002, "t": 71.50903000000005, "r": 376.07117, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "GLYPH", "bbox": {"l": 136.8002, "t": 88.63823999999988, "r": 141.7802, "b": 97.41301999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Users must be prevented from explicitly querying the MQT or a view that is created over it. ", "bbox": {"l": 151.20036, "t": 88.48883000000001, "r": 547.27185, "b": 97.70183999999995, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Those two cases bypass the row permission and column mask rules from the underlying ", "bbox": {"l": 151.20036, "t": 100.48865, "r": 544.09833, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "tables.", "bbox": {"l": 151.20036, "t": 112.48845999999992, "r": 180.23874, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "GLYPH", "bbox": {"l": 136.8002, "t": 129.67742999999996, "r": 141.7802, "b": 138.45221000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "If the user writes code to update incrementally an MQT, that code must be run from a user ", "bbox": {"l": 151.20036, "t": 129.52801999999997, "r": 547.31061, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "that has permission to view all of the rows and all columns in their unmasked state. ", "bbox": {"l": 151.20036, "t": 141.52783, "r": 519.6994, "b": 150.74084000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Otherwise, the MQT contents are not complete and queries that implicitly use the MQT ", "bbox": {"l": 151.20036, "t": 153.52765, "r": 536.80664, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "might get wrong results.", "bbox": {"l": 151.20036, "t": 165.52747, "r": 257.17972, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "GLYPH", "bbox": {"l": 136.8002, "t": 182.65668000000005, "r": 141.7802, "b": 191.43146000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "To prevent this, a check constraint can be created to cause an error if masked data was ", "bbox": {"l": 151.20036, "t": 182.50725999999997, "r": 539.19519, "b": 191.72028, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "inserted into the MQT.", "bbox": {"l": 151.20036, "t": 194.50707999999997, "r": 249.24758999999997, "b": 203.72009000000003, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "6.5.3", "bbox": {"l": 64.800003, "t": 224.33471999999995, "r": 94.544197, "b": 236.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Query rewrite", "bbox": {"l": 98.262222, "t": 224.33471999999995, "r": 184.48561, "b": 236.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Query rewrite is a technique that the optimizer can use to change the original request to ", "bbox": {"l": 136.8, "t": 250.48870999999997, "r": 527.12238, "b": 259.70172, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "improve performance.", "bbox": {"l": 136.8, "t": 262.48852999999997, "r": 233.39114, "b": 271.70154, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "For example, a query that references Table1 might be rewritten to access an MQT over ", "bbox": {"l": 136.8, "t": 284.50812, "r": 522.46423, "b": 293.7211, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Table1, or it might also be optimized to access only the fields in an index that is defined over ", "bbox": {"l": 136.8, "t": 296.50793, "r": 545.13904, "b": 305.72092, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Table1 and avoid touching Table1. With RCAC, defining these rewrites can still occur, but the ", "bbox": {"l": 136.8, "t": 308.50775, "r": 547.15894, "b": 317.72073, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "MQT or index also must include all columns that are needed by the row permissions or ", "bbox": {"l": 136.79999, "t": 320.50757, "r": 521.83862, "b": 329.72055, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "column masks that are defined on Table1.", "bbox": {"l": 136.79999, "t": 332.50738999999993, "r": 321.46436, "b": 341.72037, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "As part of adding RCAC, the impact to these potentially significant performance optimizations ", "bbox": {"l": 136.79999, "t": 354.52695, "r": 547.38397, "b": 363.73993, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "must be considered. Usage of MQTs or index-only access might be reduced or eliminated by ", "bbox": {"l": 136.79999, "t": 366.52675999999997, "r": 547.37024, "b": 375.73974999999996, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "enabling RCAC.", "bbox": {"l": 136.79999, "t": 378.52658, "r": 207.61162, "b": 387.73956, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "6.6", "bbox": {"l": 64.800003, "t": 416.2207, "r": 87.229889, "b": 430.9837, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "RCAC effects on performance and scalability", "bbox": {"l": 91.715851, "t": 416.2207, "r": 436.9425, "b": 430.9837, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "As with any discussion that is related to performance and scalability, nothing is certain or ", "bbox": {"l": 136.8, "t": 448.48874, "r": 530.32556, "b": 457.70172, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "guaranteed. There are always many variables that are involved. First, a good foundation of ", "bbox": {"l": 136.8, "t": 460.48856, "r": 538.07629, "b": 469.70154, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "knowledge and skill is required to appreciate fully what is occurring when a database request ", "bbox": {"l": 136.8, "t": 472.48837, "r": 547.23462, "b": 481.70135, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "is handled within an RCAC enabled environment. Implementing the row permission or column ", "bbox": {"l": 136.79999, "t": 484.54794, "r": 547.32916, "b": 493.76093, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "masks involves the query optimizer and database engine. The process that identifies the rows ", "bbox": {"l": 136.79999, "t": 496.54776, "r": 547.2218, "b": 505.76074, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "that you have permission to access is considered a \u201cquery\u201d, and as such a query plan must ", "bbox": {"l": 136.79999, "t": 508.54758, "r": 541.98187, "b": 517.7605599999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "be formulated. In the case of SQL requests, the RCAC portion of the query is combined with ", "bbox": {"l": 136.79999, "t": 520.54739, "r": 546.37335, "b": 529.7603799999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "the user\u2019s query, much like a query referencing a view.", "bbox": {"l": 136.79999, "t": 532.54718, "r": 376.45456, "b": 541.76019, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "For native record level access, this RCAC \u201cquery\u201d is also built and used to test the permission. ", "bbox": {"l": 136.79999, "t": 554.5070000000001, "r": 547.25256, "b": 563.72, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "When a file is opened, the RCAC rule text logic is included, optimized, and run as part of the ", "bbox": {"l": 136.79999, "t": 566.50681, "r": 546.77655, "b": 575.7198, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "native read, write, update, or delete operation. The amount of work (and time) required to ", "bbox": {"l": 136.79999, "t": 578.50661, "r": 532.45898, "b": 587.7196, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "identify the record based on the user\u2019s permission is directly related to the complexity and ", "bbox": {"l": 136.79999, "t": 590.50641, "r": 534.86322, "b": 599.71941, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "depth of the logic that is needed to identify the records that can be returned.", "bbox": {"l": 136.79999, "t": 602.50621, "r": 472.18805, "b": 611.71921, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "A simple example to illustrate this concept is a random read using a keyed logical file (that is, ", "bbox": {"l": 136.79999, "t": 624.52577, "r": 547.16492, "b": 633.7387699999999, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "an index). In its purest form, a random read uses two data access methods: index probe (find ", "bbox": {"l": 136.79999, "t": 636.52557, "r": 547.2276, "b": 645.73857, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "the key and RRN) and table probe (find the record using RRN). If the RCAC rule text specifies ", "bbox": {"l": 136.79999, "t": 648.52538, "r": 547.28448, "b": 657.73837, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "five nested subqueries to determine whether the user has access to the record, this logic ", "bbox": {"l": 136.79999, "t": 660.52518, "r": 531.45306, "b": 669.73818, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "must be added to the path. The subquery processing now becomes part of the original ", "bbox": {"l": 136.8, "t": 672.52499, "r": 521.33472, "b": 681.73799, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "\u201crandom read\u201d request. Instead of two simple I/Os to retrieve the record, there can be a ", "bbox": {"l": 136.8, "t": 684.5248, "r": 523.44214, "b": 693.737801, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "minimum of 12 I/Os to retrieve the same record. These I/Os can be done with a result of \u201cnot ", "bbox": {"l": 136.8, "t": 696.524605, "r": 547.17896, "b": 705.73761, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "found\u201d if the user is not entitled to any of the records.", "bbox": {"l": 136.8, "t": 708.524414, "r": 369.51031, "b": 717.737419, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 370.60284423828125, "t": 754.8819580078125, "r": 517.96918, "b": 763.8931884765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9508994817733765, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 371.28, "t": 755.538002, "r": 517.96918, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 530.1432495117188, "t": 754.2498779296875, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9262385368347168, "cells": [{"id": 1, "text": "105", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.60304260253906, "t": 70.77579498291016, "r": 376.07117, "b": 80.92020416259766, "coord_origin": "TOPLEFT"}, "confidence": 0.9324866533279419, "cells": [{"id": 2, "text": "This example has the following additional implications:", "bbox": {"l": 136.8002, "t": 71.50903000000005, "r": 376.07117, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "list_item", "bbox": {"l": 135.650634765625, "t": 87.60993957519531, "r": 547.27185, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9790242910385132, "cells": [{"id": 3, "text": "GLYPH", "bbox": {"l": 136.8002, "t": 88.63823999999988, "r": 141.7802, "b": 97.41301999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Users must be prevented from explicitly querying the MQT or a view that is created over it. ", "bbox": {"l": 151.20036, "t": 88.48883000000001, "r": 547.27185, "b": 97.70183999999995, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Those two cases bypass the row permission and column mask rules from the underlying ", "bbox": {"l": 151.20036, "t": 100.48865, "r": 544.09833, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "tables.", "bbox": {"l": 151.20036, "t": 112.48845999999992, "r": 180.23874, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 135.53536987304688, "t": 128.6663360595703, "r": 547.31061, "b": 175.40707397460938, "coord_origin": "TOPLEFT"}, "confidence": 0.9846358299255371, "cells": [{"id": 7, "text": "GLYPH", "bbox": {"l": 136.8002, "t": 129.67742999999996, "r": 141.7802, "b": 138.45221000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "If the user writes code to update incrementally an MQT, that code must be run from a user ", "bbox": {"l": 151.20036, "t": 129.52801999999997, "r": 547.31061, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "that has permission to view all of the rows and all columns in their unmasked state. ", "bbox": {"l": 151.20036, "t": 141.52783, "r": 519.6994, "b": 150.74084000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Otherwise, the MQT contents are not complete and queries that implicitly use the MQT ", "bbox": {"l": 151.20036, "t": 153.52765, "r": 536.80664, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "might get wrong results.", "bbox": {"l": 151.20036, "t": 165.52747, "r": 257.17972, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 135.59909057617188, "t": 181.56338500976562, "r": 539.19519, "b": 203.72009000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9713051319122314, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.8002, "t": 182.65668000000005, "r": 141.7802, "b": 191.43146000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "To prevent this, a check constraint can be created to cause an error if masked data was ", "bbox": {"l": 151.20036, "t": 182.50725999999997, "r": 539.19519, "b": 191.72028, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "inserted into the MQT.", "bbox": {"l": 151.20036, "t": 194.50707999999997, "r": 249.24758999999997, "b": 203.72009000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "section_header", "bbox": {"l": 64.1431655883789, "t": 223.16065979003906, "r": 184.48561, "b": 236.4196014404297, "coord_origin": "TOPLEFT"}, "confidence": 0.9630040526390076, "cells": [{"id": 15, "text": "6.5.3", "bbox": {"l": 64.800003, "t": 224.33471999999995, "r": 94.544197, "b": 236.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Query rewrite", "bbox": {"l": 98.262222, "t": 224.33471999999995, "r": 184.48561, "b": 236.32275000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 136.05111694335938, "t": 249.4633331298828, "r": 527.12238, "b": 271.70154, "coord_origin": "TOPLEFT"}, "confidence": 0.9792811870574951, "cells": [{"id": 17, "text": "Query rewrite is a technique that the optimizer can use to change the original request to ", "bbox": {"l": 136.8, "t": 250.48870999999997, "r": 527.12238, "b": 259.70172, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "improve performance.", "bbox": {"l": 136.8, "t": 262.48852999999997, "r": 233.39114, "b": 271.70154, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 135.7935791015625, "t": 283.475830078125, "r": 547.15894, "b": 341.72037, "coord_origin": "TOPLEFT"}, "confidence": 0.9867231249809265, "cells": [{"id": 19, "text": "For example, a query that references Table1 might be rewritten to access an MQT over ", "bbox": {"l": 136.8, "t": 284.50812, "r": 522.46423, "b": 293.7211, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Table1, or it might also be optimized to access only the fields in an index that is defined over ", "bbox": {"l": 136.8, "t": 296.50793, "r": 545.13904, "b": 305.72092, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Table1 and avoid touching Table1. With RCAC, defining these rewrites can still occur, but the ", "bbox": {"l": 136.8, "t": 308.50775, "r": 547.15894, "b": 317.72073, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "MQT or index also must include all columns that are needed by the row permissions or ", "bbox": {"l": 136.79999, "t": 320.50757, "r": 521.83862, "b": 329.72055, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "column masks that are defined on Table1.", "bbox": {"l": 136.79999, "t": 332.50738999999993, "r": 321.46436, "b": 341.72037, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 135.94505310058594, "t": 354.0857238769531, "r": 547.38397, "b": 388.08538818359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9863255620002747, "cells": [{"id": 24, "text": "As part of adding RCAC, the impact to these potentially significant performance optimizations ", "bbox": {"l": 136.79999, "t": 354.52695, "r": 547.38397, "b": 363.73993, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "must be considered. Usage of MQTs or index-only access might be reduced or eliminated by ", "bbox": {"l": 136.79999, "t": 366.52675999999997, "r": 547.37024, "b": 375.73974999999996, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "enabling RCAC.", "bbox": {"l": 136.79999, "t": 378.52658, "r": 207.61162, "b": 387.73956, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "section_header", "bbox": {"l": 64.35859680175781, "t": 415.6083068847656, "r": 436.9425, "b": 431.4162902832031, "coord_origin": "TOPLEFT"}, "confidence": 0.9681130051612854, "cells": [{"id": 27, "text": "6.6", "bbox": {"l": 64.800003, "t": 416.2207, "r": 87.229889, "b": 430.9837, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "RCAC effects on performance and scalability", "bbox": {"l": 91.715851, "t": 416.2207, "r": 436.9425, "b": 430.9837, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 135.86106872558594, "t": 447.5397033691406, "r": 547.32916, "b": 542.3749389648438, "coord_origin": "TOPLEFT"}, "confidence": 0.9881693124771118, "cells": [{"id": 29, "text": "As with any discussion that is related to performance and scalability, nothing is certain or ", "bbox": {"l": 136.8, "t": 448.48874, "r": 530.32556, "b": 457.70172, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "guaranteed. There are always many variables that are involved. First, a good foundation of ", "bbox": {"l": 136.8, "t": 460.48856, "r": 538.07629, "b": 469.70154, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "knowledge and skill is required to appreciate fully what is occurring when a database request ", "bbox": {"l": 136.8, "t": 472.48837, "r": 547.23462, "b": 481.70135, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "is handled within an RCAC enabled environment. Implementing the row permission or column ", "bbox": {"l": 136.79999, "t": 484.54794, "r": 547.32916, "b": 493.76093, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "masks involves the query optimizer and database engine. The process that identifies the rows ", "bbox": {"l": 136.79999, "t": 496.54776, "r": 547.2218, "b": 505.76074, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "that you have permission to access is considered a \u201cquery\u201d, and as such a query plan must ", "bbox": {"l": 136.79999, "t": 508.54758, "r": 541.98187, "b": 517.7605599999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "be formulated. In the case of SQL requests, the RCAC portion of the query is combined with ", "bbox": {"l": 136.79999, "t": 520.54739, "r": 546.37335, "b": 529.7603799999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "the user\u2019s query, much like a query referencing a view.", "bbox": {"l": 136.79999, "t": 532.54718, "r": 376.45456, "b": 541.76019, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 135.9717254638672, "t": 553.3796997070312, "r": 547.25256, "b": 611.71921, "coord_origin": "TOPLEFT"}, "confidence": 0.9866422414779663, "cells": [{"id": 37, "text": "For native record level access, this RCAC \u201cquery\u201d is also built and used to test the permission. ", "bbox": {"l": 136.79999, "t": 554.5070000000001, "r": 547.25256, "b": 563.72, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "When a file is opened, the RCAC rule text logic is included, optimized, and run as part of the ", "bbox": {"l": 136.79999, "t": 566.50681, "r": 546.77655, "b": 575.7198, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "native read, write, update, or delete operation. The amount of work (and time) required to ", "bbox": {"l": 136.79999, "t": 578.50661, "r": 532.45898, "b": 587.7196, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "identify the record based on the user\u2019s permission is directly related to the complexity and ", "bbox": {"l": 136.79999, "t": 590.50641, "r": 534.86322, "b": 599.71941, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "depth of the logic that is needed to identify the records that can be returned.", "bbox": {"l": 136.79999, "t": 602.50621, "r": 472.18805, "b": 611.71921, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 135.7317657470703, "t": 624.3082885742188, "r": 547.28448, "b": 717.9722900390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9876141548156738, "cells": [{"id": 42, "text": "A simple example to illustrate this concept is a random read using a keyed logical file (that is, ", "bbox": {"l": 136.79999, "t": 624.52577, "r": 547.16492, "b": 633.7387699999999, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "an index). In its purest form, a random read uses two data access methods: index probe (find ", "bbox": {"l": 136.79999, "t": 636.52557, "r": 547.2276, "b": 645.73857, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "the key and RRN) and table probe (find the record using RRN). If the RCAC rule text specifies ", "bbox": {"l": 136.79999, "t": 648.52538, "r": 547.28448, "b": 657.73837, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "five nested subqueries to determine whether the user has access to the record, this logic ", "bbox": {"l": 136.79999, "t": 660.52518, "r": 531.45306, "b": 669.73818, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "must be added to the path. The subquery processing now becomes part of the original ", "bbox": {"l": 136.8, "t": 672.52499, "r": 521.33472, "b": 681.73799, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "\u201crandom read\u201d request. Instead of two simple I/Os to retrieve the record, there can be a ", "bbox": {"l": 136.8, "t": 684.5248, "r": 523.44214, "b": 693.737801, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "minimum of 12 I/Os to retrieve the same record. These I/Os can be done with a result of \u201cnot ", "bbox": {"l": 136.8, "t": 696.524605, "r": 547.17896, "b": 705.73761, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "found\u201d if the user is not entitled to any of the records.", "bbox": {"l": 136.8, "t": 708.524414, "r": 369.51031, "b": 717.737419, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 120, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 370.60284423828125, "t": 754.8819580078125, "r": 517.96918, "b": 763.8931884765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9508994817733765, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 371.28, "t": 755.538002, "r": 517.96918, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 120, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.1432495117188, "t": 754.2498779296875, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9262385368347168, "cells": [{"id": 1, "text": "105", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "105"}, {"label": "text", "id": 2, "page_no": 120, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.60304260253906, "t": 70.77579498291016, "r": 376.07117, "b": 80.92020416259766, "coord_origin": "TOPLEFT"}, "confidence": 0.9324866533279419, "cells": [{"id": 2, "text": "This example has the following additional implications:", "bbox": {"l": 136.8002, "t": 71.50903000000005, "r": 376.07117, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}]}, "text": "This example has the following additional implications:"}, {"label": "list_item", "id": 3, "page_no": 120, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 135.650634765625, "t": 87.60993957519531, "r": 547.27185, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9790242910385132, "cells": [{"id": 3, "text": "GLYPH", "bbox": {"l": 136.8002, "t": 88.63823999999988, "r": 141.7802, "b": 97.41301999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Users must be prevented from explicitly querying the MQT or a view that is created over it. ", "bbox": {"l": 151.20036, "t": 88.48883000000001, "r": 547.27185, "b": 97.70183999999995, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Those two cases bypass the row permission and column mask rules from the underlying ", "bbox": {"l": 151.20036, "t": 100.48865, "r": 544.09833, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "tables.", "bbox": {"l": 151.20036, "t": 112.48845999999992, "r": 180.23874, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Users must be prevented from explicitly querying the MQT or a view that is created over it. Those two cases bypass the row permission and column mask rules from the underlying tables."}, {"label": "list_item", "id": 4, "page_no": 120, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.53536987304688, "t": 128.6663360595703, "r": 547.31061, "b": 175.40707397460938, "coord_origin": "TOPLEFT"}, "confidence": 0.9846358299255371, "cells": [{"id": 7, "text": "GLYPH", "bbox": {"l": 136.8002, "t": 129.67742999999996, "r": 141.7802, "b": 138.45221000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "If the user writes code to update incrementally an MQT, that code must be run from a user ", "bbox": {"l": 151.20036, "t": 129.52801999999997, "r": 547.31061, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "that has permission to view all of the rows and all columns in their unmasked state. ", "bbox": {"l": 151.20036, "t": 141.52783, "r": 519.6994, "b": 150.74084000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Otherwise, the MQT contents are not complete and queries that implicitly use the MQT ", "bbox": {"l": 151.20036, "t": 153.52765, "r": 536.80664, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "might get wrong results.", "bbox": {"l": 151.20036, "t": 165.52747, "r": 257.17972, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH If the user writes code to update incrementally an MQT, that code must be run from a user that has permission to view all of the rows and all columns in their unmasked state. Otherwise, the MQT contents are not complete and queries that implicitly use the MQT might get wrong results."}, {"label": "list_item", "id": 5, "page_no": 120, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.59909057617188, "t": 181.56338500976562, "r": 539.19519, "b": 203.72009000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9713051319122314, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.8002, "t": 182.65668000000005, "r": 141.7802, "b": 191.43146000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "To prevent this, a check constraint can be created to cause an error if masked data was ", "bbox": {"l": 151.20036, "t": 182.50725999999997, "r": 539.19519, "b": 191.72028, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "inserted into the MQT.", "bbox": {"l": 151.20036, "t": 194.50707999999997, "r": 249.24758999999997, "b": 203.72009000000003, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH To prevent this, a check constraint can be created to cause an error if masked data was inserted into the MQT."}, {"label": "section_header", "id": 6, "page_no": 120, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 64.1431655883789, "t": 223.16065979003906, "r": 184.48561, "b": 236.4196014404297, "coord_origin": "TOPLEFT"}, "confidence": 0.9630040526390076, "cells": [{"id": 15, "text": "6.5.3", "bbox": {"l": 64.800003, "t": 224.33471999999995, "r": 94.544197, "b": 236.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Query rewrite", "bbox": {"l": 98.262222, "t": 224.33471999999995, "r": 184.48561, "b": 236.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "6.5.3 Query rewrite"}, {"label": "text", "id": 7, "page_no": 120, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.05111694335938, "t": 249.4633331298828, "r": 527.12238, "b": 271.70154, "coord_origin": "TOPLEFT"}, "confidence": 0.9792811870574951, "cells": [{"id": 17, "text": "Query rewrite is a technique that the optimizer can use to change the original request to ", "bbox": {"l": 136.8, "t": 250.48870999999997, "r": 527.12238, "b": 259.70172, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "improve performance.", "bbox": {"l": 136.8, "t": 262.48852999999997, "r": 233.39114, "b": 271.70154, "coord_origin": "TOPLEFT"}}]}, "text": "Query rewrite is a technique that the optimizer can use to change the original request to improve performance."}, {"label": "text", "id": 8, "page_no": 120, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.7935791015625, "t": 283.475830078125, "r": 547.15894, "b": 341.72037, "coord_origin": "TOPLEFT"}, "confidence": 0.9867231249809265, "cells": [{"id": 19, "text": "For example, a query that references Table1 might be rewritten to access an MQT over ", "bbox": {"l": 136.8, "t": 284.50812, "r": 522.46423, "b": 293.7211, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Table1, or it might also be optimized to access only the fields in an index that is defined over ", "bbox": {"l": 136.8, "t": 296.50793, "r": 545.13904, "b": 305.72092, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Table1 and avoid touching Table1. With RCAC, defining these rewrites can still occur, but the ", "bbox": {"l": 136.8, "t": 308.50775, "r": 547.15894, "b": 317.72073, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "MQT or index also must include all columns that are needed by the row permissions or ", "bbox": {"l": 136.79999, "t": 320.50757, "r": 521.83862, "b": 329.72055, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "column masks that are defined on Table1.", "bbox": {"l": 136.79999, "t": 332.50738999999993, "r": 321.46436, "b": 341.72037, "coord_origin": "TOPLEFT"}}]}, "text": "For example, a query that references Table1 might be rewritten to access an MQT over Table1, or it might also be optimized to access only the fields in an index that is defined over Table1 and avoid touching Table1. With RCAC, defining these rewrites can still occur, but the MQT or index also must include all columns that are needed by the row permissions or column masks that are defined on Table1."}, {"label": "text", "id": 9, "page_no": 120, "cluster": {"id": 9, "label": "text", "bbox": {"l": 135.94505310058594, "t": 354.0857238769531, "r": 547.38397, "b": 388.08538818359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9863255620002747, "cells": [{"id": 24, "text": "As part of adding RCAC, the impact to these potentially significant performance optimizations ", "bbox": {"l": 136.79999, "t": 354.52695, "r": 547.38397, "b": 363.73993, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "must be considered. Usage of MQTs or index-only access might be reduced or eliminated by ", "bbox": {"l": 136.79999, "t": 366.52675999999997, "r": 547.37024, "b": 375.73974999999996, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "enabling RCAC.", "bbox": {"l": 136.79999, "t": 378.52658, "r": 207.61162, "b": 387.73956, "coord_origin": "TOPLEFT"}}]}, "text": "As part of adding RCAC, the impact to these potentially significant performance optimizations must be considered. Usage of MQTs or index-only access might be reduced or eliminated by enabling RCAC."}, {"label": "section_header", "id": 10, "page_no": 120, "cluster": {"id": 10, "label": "section_header", "bbox": {"l": 64.35859680175781, "t": 415.6083068847656, "r": 436.9425, "b": 431.4162902832031, "coord_origin": "TOPLEFT"}, "confidence": 0.9681130051612854, "cells": [{"id": 27, "text": "6.6", "bbox": {"l": 64.800003, "t": 416.2207, "r": 87.229889, "b": 430.9837, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "RCAC effects on performance and scalability", "bbox": {"l": 91.715851, "t": 416.2207, "r": 436.9425, "b": 430.9837, "coord_origin": "TOPLEFT"}}]}, "text": "6.6 RCAC effects on performance and scalability"}, {"label": "text", "id": 11, "page_no": 120, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.86106872558594, "t": 447.5397033691406, "r": 547.32916, "b": 542.3749389648438, "coord_origin": "TOPLEFT"}, "confidence": 0.9881693124771118, "cells": [{"id": 29, "text": "As with any discussion that is related to performance and scalability, nothing is certain or ", "bbox": {"l": 136.8, "t": 448.48874, "r": 530.32556, "b": 457.70172, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "guaranteed. There are always many variables that are involved. First, a good foundation of ", "bbox": {"l": 136.8, "t": 460.48856, "r": 538.07629, "b": 469.70154, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "knowledge and skill is required to appreciate fully what is occurring when a database request ", "bbox": {"l": 136.8, "t": 472.48837, "r": 547.23462, "b": 481.70135, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "is handled within an RCAC enabled environment. Implementing the row permission or column ", "bbox": {"l": 136.79999, "t": 484.54794, "r": 547.32916, "b": 493.76093, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "masks involves the query optimizer and database engine. The process that identifies the rows ", "bbox": {"l": 136.79999, "t": 496.54776, "r": 547.2218, "b": 505.76074, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "that you have permission to access is considered a \u201cquery\u201d, and as such a query plan must ", "bbox": {"l": 136.79999, "t": 508.54758, "r": 541.98187, "b": 517.7605599999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "be formulated. In the case of SQL requests, the RCAC portion of the query is combined with ", "bbox": {"l": 136.79999, "t": 520.54739, "r": 546.37335, "b": 529.7603799999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "the user\u2019s query, much like a query referencing a view.", "bbox": {"l": 136.79999, "t": 532.54718, "r": 376.45456, "b": 541.76019, "coord_origin": "TOPLEFT"}}]}, "text": "As with any discussion that is related to performance and scalability, nothing is certain or guaranteed. There are always many variables that are involved. First, a good foundation of knowledge and skill is required to appreciate fully what is occurring when a database request is handled within an RCAC enabled environment. Implementing the row permission or column masks involves the query optimizer and database engine. The process that identifies the rows that you have permission to access is considered a \u201cquery\u201d, and as such a query plan must be formulated. In the case of SQL requests, the RCAC portion of the query is combined with the user\u2019s query, much like a query referencing a view."}, {"label": "text", "id": 12, "page_no": 120, "cluster": {"id": 12, "label": "text", "bbox": {"l": 135.9717254638672, "t": 553.3796997070312, "r": 547.25256, "b": 611.71921, "coord_origin": "TOPLEFT"}, "confidence": 0.9866422414779663, "cells": [{"id": 37, "text": "For native record level access, this RCAC \u201cquery\u201d is also built and used to test the permission. ", "bbox": {"l": 136.79999, "t": 554.5070000000001, "r": 547.25256, "b": 563.72, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "When a file is opened, the RCAC rule text logic is included, optimized, and run as part of the ", "bbox": {"l": 136.79999, "t": 566.50681, "r": 546.77655, "b": 575.7198, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "native read, write, update, or delete operation. The amount of work (and time) required to ", "bbox": {"l": 136.79999, "t": 578.50661, "r": 532.45898, "b": 587.7196, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "identify the record based on the user\u2019s permission is directly related to the complexity and ", "bbox": {"l": 136.79999, "t": 590.50641, "r": 534.86322, "b": 599.71941, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "depth of the logic that is needed to identify the records that can be returned.", "bbox": {"l": 136.79999, "t": 602.50621, "r": 472.18805, "b": 611.71921, "coord_origin": "TOPLEFT"}}]}, "text": "For native record level access, this RCAC \u201cquery\u201d is also built and used to test the permission. When a file is opened, the RCAC rule text logic is included, optimized, and run as part of the native read, write, update, or delete operation. The amount of work (and time) required to identify the record based on the user\u2019s permission is directly related to the complexity and depth of the logic that is needed to identify the records that can be returned."}, {"label": "text", "id": 13, "page_no": 120, "cluster": {"id": 13, "label": "text", "bbox": {"l": 135.7317657470703, "t": 624.3082885742188, "r": 547.28448, "b": 717.9722900390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9876141548156738, "cells": [{"id": 42, "text": "A simple example to illustrate this concept is a random read using a keyed logical file (that is, ", "bbox": {"l": 136.79999, "t": 624.52577, "r": 547.16492, "b": 633.7387699999999, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "an index). In its purest form, a random read uses two data access methods: index probe (find ", "bbox": {"l": 136.79999, "t": 636.52557, "r": 547.2276, "b": 645.73857, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "the key and RRN) and table probe (find the record using RRN). If the RCAC rule text specifies ", "bbox": {"l": 136.79999, "t": 648.52538, "r": 547.28448, "b": 657.73837, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "five nested subqueries to determine whether the user has access to the record, this logic ", "bbox": {"l": 136.79999, "t": 660.52518, "r": 531.45306, "b": 669.73818, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "must be added to the path. The subquery processing now becomes part of the original ", "bbox": {"l": 136.8, "t": 672.52499, "r": 521.33472, "b": 681.73799, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "\u201crandom read\u201d request. Instead of two simple I/Os to retrieve the record, there can be a ", "bbox": {"l": 136.8, "t": 684.5248, "r": 523.44214, "b": 693.737801, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "minimum of 12 I/Os to retrieve the same record. These I/Os can be done with a result of \u201cnot ", "bbox": {"l": 136.8, "t": 696.524605, "r": 547.17896, "b": 705.73761, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "found\u201d if the user is not entitled to any of the records.", "bbox": {"l": 136.8, "t": 708.524414, "r": 369.51031, "b": 717.737419, "coord_origin": "TOPLEFT"}}]}, "text": "A simple example to illustrate this concept is a random read using a keyed logical file (that is, an index). In its purest form, a random read uses two data access methods: index probe (find the key and RRN) and table probe (find the record using RRN). If the RCAC rule text specifies five nested subqueries to determine whether the user has access to the record, this logic must be added to the path. The subquery processing now becomes part of the original \u201crandom read\u201d request. Instead of two simple I/Os to retrieve the record, there can be a minimum of 12 I/Os to retrieve the same record. These I/Os can be done with a result of \u201cnot found\u201d if the user is not entitled to any of the records."}], "body": [{"label": "text", "id": 2, "page_no": 120, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.60304260253906, "t": 70.77579498291016, "r": 376.07117, "b": 80.92020416259766, "coord_origin": "TOPLEFT"}, "confidence": 0.9324866533279419, "cells": [{"id": 2, "text": "This example has the following additional implications:", "bbox": {"l": 136.8002, "t": 71.50903000000005, "r": 376.07117, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}]}, "text": "This example has the following additional implications:"}, {"label": "list_item", "id": 3, "page_no": 120, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 135.650634765625, "t": 87.60993957519531, "r": 547.27185, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9790242910385132, "cells": [{"id": 3, "text": "GLYPH", "bbox": {"l": 136.8002, "t": 88.63823999999988, "r": 141.7802, "b": 97.41301999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Users must be prevented from explicitly querying the MQT or a view that is created over it. ", "bbox": {"l": 151.20036, "t": 88.48883000000001, "r": 547.27185, "b": 97.70183999999995, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Those two cases bypass the row permission and column mask rules from the underlying ", "bbox": {"l": 151.20036, "t": 100.48865, "r": 544.09833, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "tables.", "bbox": {"l": 151.20036, "t": 112.48845999999992, "r": 180.23874, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Users must be prevented from explicitly querying the MQT or a view that is created over it. Those two cases bypass the row permission and column mask rules from the underlying tables."}, {"label": "list_item", "id": 4, "page_no": 120, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.53536987304688, "t": 128.6663360595703, "r": 547.31061, "b": 175.40707397460938, "coord_origin": "TOPLEFT"}, "confidence": 0.9846358299255371, "cells": [{"id": 7, "text": "GLYPH", "bbox": {"l": 136.8002, "t": 129.67742999999996, "r": 141.7802, "b": 138.45221000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "If the user writes code to update incrementally an MQT, that code must be run from a user ", "bbox": {"l": 151.20036, "t": 129.52801999999997, "r": 547.31061, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "that has permission to view all of the rows and all columns in their unmasked state. ", "bbox": {"l": 151.20036, "t": 141.52783, "r": 519.6994, "b": 150.74084000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Otherwise, the MQT contents are not complete and queries that implicitly use the MQT ", "bbox": {"l": 151.20036, "t": 153.52765, "r": 536.80664, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "might get wrong results.", "bbox": {"l": 151.20036, "t": 165.52747, "r": 257.17972, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH If the user writes code to update incrementally an MQT, that code must be run from a user that has permission to view all of the rows and all columns in their unmasked state. Otherwise, the MQT contents are not complete and queries that implicitly use the MQT might get wrong results."}, {"label": "list_item", "id": 5, "page_no": 120, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.59909057617188, "t": 181.56338500976562, "r": 539.19519, "b": 203.72009000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9713051319122314, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.8002, "t": 182.65668000000005, "r": 141.7802, "b": 191.43146000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "To prevent this, a check constraint can be created to cause an error if masked data was ", "bbox": {"l": 151.20036, "t": 182.50725999999997, "r": 539.19519, "b": 191.72028, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "inserted into the MQT.", "bbox": {"l": 151.20036, "t": 194.50707999999997, "r": 249.24758999999997, "b": 203.72009000000003, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH To prevent this, a check constraint can be created to cause an error if masked data was inserted into the MQT."}, {"label": "section_header", "id": 6, "page_no": 120, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 64.1431655883789, "t": 223.16065979003906, "r": 184.48561, "b": 236.4196014404297, "coord_origin": "TOPLEFT"}, "confidence": 0.9630040526390076, "cells": [{"id": 15, "text": "6.5.3", "bbox": {"l": 64.800003, "t": 224.33471999999995, "r": 94.544197, "b": 236.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Query rewrite", "bbox": {"l": 98.262222, "t": 224.33471999999995, "r": 184.48561, "b": 236.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "6.5.3 Query rewrite"}, {"label": "text", "id": 7, "page_no": 120, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.05111694335938, "t": 249.4633331298828, "r": 527.12238, "b": 271.70154, "coord_origin": "TOPLEFT"}, "confidence": 0.9792811870574951, "cells": [{"id": 17, "text": "Query rewrite is a technique that the optimizer can use to change the original request to ", "bbox": {"l": 136.8, "t": 250.48870999999997, "r": 527.12238, "b": 259.70172, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "improve performance.", "bbox": {"l": 136.8, "t": 262.48852999999997, "r": 233.39114, "b": 271.70154, "coord_origin": "TOPLEFT"}}]}, "text": "Query rewrite is a technique that the optimizer can use to change the original request to improve performance."}, {"label": "text", "id": 8, "page_no": 120, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.7935791015625, "t": 283.475830078125, "r": 547.15894, "b": 341.72037, "coord_origin": "TOPLEFT"}, "confidence": 0.9867231249809265, "cells": [{"id": 19, "text": "For example, a query that references Table1 might be rewritten to access an MQT over ", "bbox": {"l": 136.8, "t": 284.50812, "r": 522.46423, "b": 293.7211, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Table1, or it might also be optimized to access only the fields in an index that is defined over ", "bbox": {"l": 136.8, "t": 296.50793, "r": 545.13904, "b": 305.72092, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Table1 and avoid touching Table1. With RCAC, defining these rewrites can still occur, but the ", "bbox": {"l": 136.8, "t": 308.50775, "r": 547.15894, "b": 317.72073, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "MQT or index also must include all columns that are needed by the row permissions or ", "bbox": {"l": 136.79999, "t": 320.50757, "r": 521.83862, "b": 329.72055, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "column masks that are defined on Table1.", "bbox": {"l": 136.79999, "t": 332.50738999999993, "r": 321.46436, "b": 341.72037, "coord_origin": "TOPLEFT"}}]}, "text": "For example, a query that references Table1 might be rewritten to access an MQT over Table1, or it might also be optimized to access only the fields in an index that is defined over Table1 and avoid touching Table1. With RCAC, defining these rewrites can still occur, but the MQT or index also must include all columns that are needed by the row permissions or column masks that are defined on Table1."}, {"label": "text", "id": 9, "page_no": 120, "cluster": {"id": 9, "label": "text", "bbox": {"l": 135.94505310058594, "t": 354.0857238769531, "r": 547.38397, "b": 388.08538818359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9863255620002747, "cells": [{"id": 24, "text": "As part of adding RCAC, the impact to these potentially significant performance optimizations ", "bbox": {"l": 136.79999, "t": 354.52695, "r": 547.38397, "b": 363.73993, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "must be considered. Usage of MQTs or index-only access might be reduced or eliminated by ", "bbox": {"l": 136.79999, "t": 366.52675999999997, "r": 547.37024, "b": 375.73974999999996, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "enabling RCAC.", "bbox": {"l": 136.79999, "t": 378.52658, "r": 207.61162, "b": 387.73956, "coord_origin": "TOPLEFT"}}]}, "text": "As part of adding RCAC, the impact to these potentially significant performance optimizations must be considered. Usage of MQTs or index-only access might be reduced or eliminated by enabling RCAC."}, {"label": "section_header", "id": 10, "page_no": 120, "cluster": {"id": 10, "label": "section_header", "bbox": {"l": 64.35859680175781, "t": 415.6083068847656, "r": 436.9425, "b": 431.4162902832031, "coord_origin": "TOPLEFT"}, "confidence": 0.9681130051612854, "cells": [{"id": 27, "text": "6.6", "bbox": {"l": 64.800003, "t": 416.2207, "r": 87.229889, "b": 430.9837, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "RCAC effects on performance and scalability", "bbox": {"l": 91.715851, "t": 416.2207, "r": 436.9425, "b": 430.9837, "coord_origin": "TOPLEFT"}}]}, "text": "6.6 RCAC effects on performance and scalability"}, {"label": "text", "id": 11, "page_no": 120, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.86106872558594, "t": 447.5397033691406, "r": 547.32916, "b": 542.3749389648438, "coord_origin": "TOPLEFT"}, "confidence": 0.9881693124771118, "cells": [{"id": 29, "text": "As with any discussion that is related to performance and scalability, nothing is certain or ", "bbox": {"l": 136.8, "t": 448.48874, "r": 530.32556, "b": 457.70172, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "guaranteed. There are always many variables that are involved. First, a good foundation of ", "bbox": {"l": 136.8, "t": 460.48856, "r": 538.07629, "b": 469.70154, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "knowledge and skill is required to appreciate fully what is occurring when a database request ", "bbox": {"l": 136.8, "t": 472.48837, "r": 547.23462, "b": 481.70135, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "is handled within an RCAC enabled environment. Implementing the row permission or column ", "bbox": {"l": 136.79999, "t": 484.54794, "r": 547.32916, "b": 493.76093, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "masks involves the query optimizer and database engine. The process that identifies the rows ", "bbox": {"l": 136.79999, "t": 496.54776, "r": 547.2218, "b": 505.76074, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "that you have permission to access is considered a \u201cquery\u201d, and as such a query plan must ", "bbox": {"l": 136.79999, "t": 508.54758, "r": 541.98187, "b": 517.7605599999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "be formulated. In the case of SQL requests, the RCAC portion of the query is combined with ", "bbox": {"l": 136.79999, "t": 520.54739, "r": 546.37335, "b": 529.7603799999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "the user\u2019s query, much like a query referencing a view.", "bbox": {"l": 136.79999, "t": 532.54718, "r": 376.45456, "b": 541.76019, "coord_origin": "TOPLEFT"}}]}, "text": "As with any discussion that is related to performance and scalability, nothing is certain or guaranteed. There are always many variables that are involved. First, a good foundation of knowledge and skill is required to appreciate fully what is occurring when a database request is handled within an RCAC enabled environment. Implementing the row permission or column masks involves the query optimizer and database engine. The process that identifies the rows that you have permission to access is considered a \u201cquery\u201d, and as such a query plan must be formulated. In the case of SQL requests, the RCAC portion of the query is combined with the user\u2019s query, much like a query referencing a view."}, {"label": "text", "id": 12, "page_no": 120, "cluster": {"id": 12, "label": "text", "bbox": {"l": 135.9717254638672, "t": 553.3796997070312, "r": 547.25256, "b": 611.71921, "coord_origin": "TOPLEFT"}, "confidence": 0.9866422414779663, "cells": [{"id": 37, "text": "For native record level access, this RCAC \u201cquery\u201d is also built and used to test the permission. ", "bbox": {"l": 136.79999, "t": 554.5070000000001, "r": 547.25256, "b": 563.72, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "When a file is opened, the RCAC rule text logic is included, optimized, and run as part of the ", "bbox": {"l": 136.79999, "t": 566.50681, "r": 546.77655, "b": 575.7198, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "native read, write, update, or delete operation. The amount of work (and time) required to ", "bbox": {"l": 136.79999, "t": 578.50661, "r": 532.45898, "b": 587.7196, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "identify the record based on the user\u2019s permission is directly related to the complexity and ", "bbox": {"l": 136.79999, "t": 590.50641, "r": 534.86322, "b": 599.71941, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "depth of the logic that is needed to identify the records that can be returned.", "bbox": {"l": 136.79999, "t": 602.50621, "r": 472.18805, "b": 611.71921, "coord_origin": "TOPLEFT"}}]}, "text": "For native record level access, this RCAC \u201cquery\u201d is also built and used to test the permission. When a file is opened, the RCAC rule text logic is included, optimized, and run as part of the native read, write, update, or delete operation. The amount of work (and time) required to identify the record based on the user\u2019s permission is directly related to the complexity and depth of the logic that is needed to identify the records that can be returned."}, {"label": "text", "id": 13, "page_no": 120, "cluster": {"id": 13, "label": "text", "bbox": {"l": 135.7317657470703, "t": 624.3082885742188, "r": 547.28448, "b": 717.9722900390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9876141548156738, "cells": [{"id": 42, "text": "A simple example to illustrate this concept is a random read using a keyed logical file (that is, ", "bbox": {"l": 136.79999, "t": 624.52577, "r": 547.16492, "b": 633.7387699999999, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "an index). In its purest form, a random read uses two data access methods: index probe (find ", "bbox": {"l": 136.79999, "t": 636.52557, "r": 547.2276, "b": 645.73857, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "the key and RRN) and table probe (find the record using RRN). If the RCAC rule text specifies ", "bbox": {"l": 136.79999, "t": 648.52538, "r": 547.28448, "b": 657.73837, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "five nested subqueries to determine whether the user has access to the record, this logic ", "bbox": {"l": 136.79999, "t": 660.52518, "r": 531.45306, "b": 669.73818, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "must be added to the path. The subquery processing now becomes part of the original ", "bbox": {"l": 136.8, "t": 672.52499, "r": 521.33472, "b": 681.73799, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "\u201crandom read\u201d request. Instead of two simple I/Os to retrieve the record, there can be a ", "bbox": {"l": 136.8, "t": 684.5248, "r": 523.44214, "b": 693.737801, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "minimum of 12 I/Os to retrieve the same record. These I/Os can be done with a result of \u201cnot ", "bbox": {"l": 136.8, "t": 696.524605, "r": 547.17896, "b": 705.73761, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "found\u201d if the user is not entitled to any of the records.", "bbox": {"l": 136.8, "t": 708.524414, "r": 369.51031, "b": 717.737419, "coord_origin": "TOPLEFT"}}]}, "text": "A simple example to illustrate this concept is a random read using a keyed logical file (that is, an index). In its purest form, a random read uses two data access methods: index probe (find the key and RRN) and table probe (find the record using RRN). If the RCAC rule text specifies five nested subqueries to determine whether the user has access to the record, this logic must be added to the path. The subquery processing now becomes part of the original \u201crandom read\u201d request. Instead of two simple I/Os to retrieve the record, there can be a minimum of 12 I/Os to retrieve the same record. These I/Os can be done with a result of \u201cnot found\u201d if the user is not entitled to any of the records."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 120, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 370.60284423828125, "t": 754.8819580078125, "r": 517.96918, "b": 763.8931884765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9508994817733765, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 371.28, "t": 755.538002, "r": 517.96918, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 120, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.1432495117188, "t": 754.2498779296875, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9262385368347168, "cells": [{"id": 1, "text": "105", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "105"}]}}, {"page_no": 121, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "106 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "For programs that access records sequentially, in or out of key order, the added RCAC logic ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 543.5155, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "can have a profound effect on the performance and scalability. Reading the \u201cnext record\u201d in ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 539.91107, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "order is no longer a simple matter of positioning to the next available key, as shown in ", "bbox": {"l": 136.80002, "t": 95.50829999999996, "r": 516.06189, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Figure 6-23.", "bbox": {"l": 136.80002, "t": 107.50811999999996, "r": 190.73239, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Figure 6-23 Native record access with no RCAC", "bbox": {"l": 136.8, "t": 404.77798, "r": 332.58868, "b": 413.103, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Native RLA Request", "bbox": {"l": 179.1436, "t": 155.32299999999998, "r": 278.48407, "b": 165.81525, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "RRN", "bbox": {"l": 355.00479, "t": 142.72247000000004, "r": 371.4198, "b": 150.59167000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Record Data", "bbox": {"l": 412.7984, "t": 142.72247000000004, "r": 459.23407, "b": 150.59167000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "1", "bbox": {"l": 375.93451, "t": 157.64544999999998, "r": 380.59537, "b": 165.50543000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "123", "bbox": {"l": 387.94699, "t": 157.4248, "r": 404.49164, "b": 166.19494999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CAIN", "bbox": {"l": 404.49438, "t": 157.96722, "r": 426.46198, "b": 166.24090999999999, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "aaaa456", "bbox": {"l": 437.34372, "t": 157.4248, "r": 475.91571, "b": 166.19494999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "GLYPH", "bbox": {"l": 323.6568, "t": 153.94312000000002, "r": 333.83542, "b": 171.4389, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "2", "bbox": {"l": 375.93411, "t": 172.53827, "r": 380.59497, "b": 180.39824999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "123", "bbox": {"l": 387.94659, "t": 172.31763, "r": 404.49124, "b": 181.08776999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "CAIN", "bbox": {"l": 404.49399, "t": 172.86005, "r": 426.46158, "b": 181.13373, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "bbbb456", "bbox": {"l": 437.34332000000006, "t": 172.31763, "r": 475.91531000000003, "b": 181.08776999999998, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "3", "bbox": {"l": 375.93408, "t": 187.46130000000005, "r": 380.59494, "b": 195.32128999999998, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "123", "bbox": {"l": 387.94656, "t": 187.24066000000005, "r": 404.49121, "b": 196.01080000000002, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "CAIN", "bbox": {"l": 404.49396, "t": 187.78308000000004, "r": 426.46155, "b": 196.05676000000005, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "cccc456", "bbox": {"l": 437.3432900000001, "t": 187.24066000000005, "r": 475.91528000000005, "b": 196.01080000000002, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "4", "bbox": {"l": 375.93411, "t": 202.38477, "r": 380.59497, "b": 210.24474999999995, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "123", "bbox": {"l": 387.9462, "t": 202.16405999999995, "r": 404.49084, "b": 210.93420000000003, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "CAIN", "bbox": {"l": 404.4935, "t": 202.70648000000006, "r": 426.46109, "b": 210.98015999999996, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "dddd456", "bbox": {"l": 437.34299, "t": 202.16405999999995, "r": 475.91498000000007, "b": 210.93420000000003, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "NR", "bbox": {"l": 230.0419, "t": 204.42553999999996, "r": 280.56635, "b": 220.16387999999995, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "C", "bbox": {"l": 266.42206, "t": 204.42553999999996, "r": 290.17664, "b": 220.16387999999995, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "A", "bbox": {"l": 276.16107, "t": 204.42553999999996, "r": 301.33136, "b": 220.16387999999995, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "5", "bbox": {"l": 375.93411, "t": 217.27722000000006, "r": 380.59497, "b": 225.13720999999998, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "123", "bbox": {"l": 387.94659, "t": 217.05658000000005, "r": 404.49124, "b": 225.82672000000002, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CAIN", "bbox": {"l": 404.49399, "t": 217.59900000000005, "r": 426.46158, "b": 225.87267999999995, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "eeee456", "bbox": {"l": 437.34332000000006, "t": 217.05658000000005, "r": 475.91531000000003, "b": 225.82672000000002, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "\u0085", "bbox": {"l": 374.24902, "t": 232.20025999999996, "r": 380.59219, "b": 240.06024000000002, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "\u0085", "bbox": {"l": 387.94659, "t": 231.97960999999998, "r": 393.4624, "b": 240.74976000000004, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "No RCAC", "bbox": {"l": 230.0419, "t": 204.42553999999996, "r": 296.65891, "b": 220.16387999999995, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "\u0085", "bbox": {"l": 374.24869, "t": 247.12378, "r": 380.59186, "b": 254.98375999999996, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "\u0085", "bbox": {"l": 387.94626, "t": 246.90314, "r": 393.46207, "b": 255.67327999999998, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "\u0085", "bbox": {"l": 374.24869, "t": 262.01648, "r": 380.59186, "b": 269.87645999999995, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "\u0085", "bbox": {"l": 387.94626, "t": 261.79584, "r": 393.46207, "b": 270.56597999999997, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "\u0085", "bbox": {"l": 374.24869, "t": 276.93944999999997, "r": 380.59186, "b": 284.7995, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "\u0085", "bbox": {"l": 387.94626, "t": 276.71880999999996, "r": 393.46207, "b": 285.48895, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "\u0085", "bbox": {"l": 374.24869, "t": 291.8627599999999, "r": 380.59186, "b": 299.72278, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "\u0085", "bbox": {"l": 387.94626, "t": 291.64212, "r": 393.46207, "b": 300.41223, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "\u0085", "bbox": {"l": 374.24869, "t": 306.7554, "r": 380.59186, "b": 314.61542, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "\u0085", "bbox": {"l": 387.94626, "t": 306.53476, "r": 393.46207, "b": 315.30487, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "1000001", "bbox": {"l": 347.98749, "t": 321.67856, "r": 380.60059, "b": 329.53857, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "123", "bbox": {"l": 387.9462, "t": 321.45801, "r": 404.49084, "b": 330.22812, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "CAIN", "bbox": {"l": 404.4935, "t": 322.0004, "r": 426.46109, "b": 330.27408, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "vvvv456", "bbox": {"l": 437.34299, "t": 321.45801, "r": 475.91498000000007, "b": 330.22812, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "1000002", "bbox": {"l": 347.98749, "t": 336.60184, "r": 380.60059, "b": 344.46185, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "123", "bbox": {"l": 387.94672, "t": 336.3812, "r": 404.49136, "b": 345.15131, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "CAIN", "bbox": {"l": 404.49411, "t": 336.9235800000001, "r": 426.4617, "b": 345.19727, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "wwww456", "bbox": {"l": 437.34344, "t": 336.3812, "r": 475.91544, "b": 345.15131, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "1000003", "bbox": {"l": 347.98749, "t": 351.49448, "r": 380.60059, "b": 359.35449, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "123", "bbox": {"l": 387.94672, "t": 351.27383, "r": 404.49136, "b": 360.04395, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "CAIN", "bbox": {"l": 404.49411, "t": 351.81621999999993, "r": 426.4617, "b": 360.0899, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "xxxx456", "bbox": {"l": 437.34344, "t": 351.27383, "r": 475.91544, "b": 360.04395, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "1000004", "bbox": {"l": 347.98749, "t": 366.41766000000007, "r": 380.60059, "b": 374.27768, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "123", "bbox": {"l": 387.94672, "t": 366.19701999999995, "r": 404.49136, "b": 374.96713, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "BEDOYA", "bbox": {"l": 404.49411, "t": 366.73941, "r": 437.42895999999996, "b": 375.01309000000003, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "yyyy456", "bbox": {"l": 437.46664, "t": 366.19701999999995, "r": 475.89061999999996, "b": 374.96713, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "1000005", "bbox": {"l": 347.9884, "t": 381.34064000000006, "r": 380.6015, "b": 389.20064999999994, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "123", "bbox": {"l": 387.94763, "t": 381.11999999999995, "r": 404.49228, "b": 389.89011, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "BEDOYA", "bbox": {"l": 404.49503, "t": 381.66238, "r": 437.42987, "b": 389.93607000000003, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "zzzz456", "bbox": {"l": 437.46756000000005, "t": 381.11999999999995, "r": 475.89154, "b": 389.89011, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.41461944580078, "t": 754.2803344726562, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9247628450393677, "cells": [{"id": 0, "text": "106 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 98.62214660644531, "t": 754.58251953125, "r": 339.8680725097656, "b": 764.0300903320312, "coord_origin": "TOPLEFT"}, "confidence": 0.9530835747718811, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.8849639892578, "t": 70.34988403320312, "r": 543.5155, "b": 116.99058532714844, "coord_origin": "TOPLEFT"}, "confidence": 0.9810242652893066, "cells": [{"id": 2, "text": "For programs that access records sequentially, in or out of key order, the added RCAC logic ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 543.5155, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "can have a profound effect on the performance and scalability. Reading the \u201cnext record\u201d in ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 539.91107, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "order is no longer a simple matter of positioning to the next available key, as shown in ", "bbox": {"l": 136.80002, "t": 95.50829999999996, "r": 516.06189, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Figure 6-23.", "bbox": {"l": 136.80002, "t": 107.50811999999996, "r": 190.73239, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.106201171875, "t": 403.9275817871094, "r": 333.33013916015625, "b": 413.6200256347656, "coord_origin": "TOPLEFT"}, "confidence": 0.9444288611412048, "cells": [{"id": 6, "text": "Figure 6-23 Native record access with no RCAC", "bbox": {"l": 136.8, "t": 404.77798, "r": 332.58868, "b": 413.103, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "picture", "bbox": {"l": 136.19158935546875, "t": 131.57861328125, "r": 506.083740234375, "b": 400.9339294433594, "coord_origin": "TOPLEFT"}, "confidence": 0.9722803235054016, "cells": [{"id": 7, "text": "Native RLA Request", "bbox": {"l": 179.1436, "t": 155.32299999999998, "r": 278.48407, "b": 165.81525, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "RRN", "bbox": {"l": 355.00479, "t": 142.72247000000004, "r": 371.4198, "b": 150.59167000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Record Data", "bbox": {"l": 412.7984, "t": 142.72247000000004, "r": 459.23407, "b": 150.59167000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "1", "bbox": {"l": 375.93451, "t": 157.64544999999998, "r": 380.59537, "b": 165.50543000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "123", "bbox": {"l": 387.94699, "t": 157.4248, "r": 404.49164, "b": 166.19494999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CAIN", "bbox": {"l": 404.49438, "t": 157.96722, "r": 426.46198, "b": 166.24090999999999, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "aaaa456", "bbox": {"l": 437.34372, "t": 157.4248, "r": 475.91571, "b": 166.19494999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "GLYPH", "bbox": {"l": 323.6568, "t": 153.94312000000002, "r": 333.83542, "b": 171.4389, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "2", "bbox": {"l": 375.93411, "t": 172.53827, "r": 380.59497, "b": 180.39824999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "123", "bbox": {"l": 387.94659, "t": 172.31763, "r": 404.49124, "b": 181.08776999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "CAIN", "bbox": {"l": 404.49399, "t": 172.86005, "r": 426.46158, "b": 181.13373, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "bbbb456", "bbox": {"l": 437.34332000000006, "t": 172.31763, "r": 475.91531000000003, "b": 181.08776999999998, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "3", "bbox": {"l": 375.93408, "t": 187.46130000000005, "r": 380.59494, "b": 195.32128999999998, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "123", "bbox": {"l": 387.94656, "t": 187.24066000000005, "r": 404.49121, "b": 196.01080000000002, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "CAIN", "bbox": {"l": 404.49396, "t": 187.78308000000004, "r": 426.46155, "b": 196.05676000000005, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "cccc456", "bbox": {"l": 437.3432900000001, "t": 187.24066000000005, "r": 475.91528000000005, "b": 196.01080000000002, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "4", "bbox": {"l": 375.93411, "t": 202.38477, "r": 380.59497, "b": 210.24474999999995, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "123", "bbox": {"l": 387.9462, "t": 202.16405999999995, "r": 404.49084, "b": 210.93420000000003, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "CAIN", "bbox": {"l": 404.4935, "t": 202.70648000000006, "r": 426.46109, "b": 210.98015999999996, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "dddd456", "bbox": {"l": 437.34299, "t": 202.16405999999995, "r": 475.91498000000007, "b": 210.93420000000003, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "NR", "bbox": {"l": 230.0419, "t": 204.42553999999996, "r": 280.56635, "b": 220.16387999999995, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "C", "bbox": {"l": 266.42206, "t": 204.42553999999996, "r": 290.17664, "b": 220.16387999999995, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "A", "bbox": {"l": 276.16107, "t": 204.42553999999996, "r": 301.33136, "b": 220.16387999999995, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "5", "bbox": {"l": 375.93411, "t": 217.27722000000006, "r": 380.59497, "b": 225.13720999999998, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "123", "bbox": {"l": 387.94659, "t": 217.05658000000005, "r": 404.49124, "b": 225.82672000000002, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CAIN", "bbox": {"l": 404.49399, "t": 217.59900000000005, "r": 426.46158, "b": 225.87267999999995, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "eeee456", "bbox": {"l": 437.34332000000006, "t": 217.05658000000005, "r": 475.91531000000003, "b": 225.82672000000002, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "\u0085", "bbox": {"l": 374.24902, "t": 232.20025999999996, "r": 380.59219, "b": 240.06024000000002, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "\u0085", "bbox": {"l": 387.94659, "t": 231.97960999999998, "r": 393.4624, "b": 240.74976000000004, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "No RCAC", "bbox": {"l": 230.0419, "t": 204.42553999999996, "r": 296.65891, "b": 220.16387999999995, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "\u0085", "bbox": {"l": 374.24869, "t": 247.12378, "r": 380.59186, "b": 254.98375999999996, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "\u0085", "bbox": {"l": 387.94626, "t": 246.90314, "r": 393.46207, "b": 255.67327999999998, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "\u0085", "bbox": {"l": 374.24869, "t": 262.01648, "r": 380.59186, "b": 269.87645999999995, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "\u0085", "bbox": {"l": 387.94626, "t": 261.79584, "r": 393.46207, "b": 270.56597999999997, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "\u0085", "bbox": {"l": 374.24869, "t": 276.93944999999997, "r": 380.59186, "b": 284.7995, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "\u0085", "bbox": {"l": 387.94626, "t": 276.71880999999996, "r": 393.46207, "b": 285.48895, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "\u0085", "bbox": {"l": 374.24869, "t": 291.8627599999999, "r": 380.59186, "b": 299.72278, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "\u0085", "bbox": {"l": 387.94626, "t": 291.64212, "r": 393.46207, "b": 300.41223, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "\u0085", "bbox": {"l": 374.24869, "t": 306.7554, "r": 380.59186, "b": 314.61542, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "\u0085", "bbox": {"l": 387.94626, "t": 306.53476, "r": 393.46207, "b": 315.30487, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "1000001", "bbox": {"l": 347.98749, "t": 321.67856, "r": 380.60059, "b": 329.53857, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "123", "bbox": {"l": 387.9462, "t": 321.45801, "r": 404.49084, "b": 330.22812, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "CAIN", "bbox": {"l": 404.4935, "t": 322.0004, "r": 426.46109, "b": 330.27408, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "vvvv456", "bbox": {"l": 437.34299, "t": 321.45801, "r": 475.91498000000007, "b": 330.22812, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "1000002", "bbox": {"l": 347.98749, "t": 336.60184, "r": 380.60059, "b": 344.46185, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "123", "bbox": {"l": 387.94672, "t": 336.3812, "r": 404.49136, "b": 345.15131, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "CAIN", "bbox": {"l": 404.49411, "t": 336.9235800000001, "r": 426.4617, "b": 345.19727, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "wwww456", "bbox": {"l": 437.34344, "t": 336.3812, "r": 475.91544, "b": 345.15131, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "1000003", "bbox": {"l": 347.98749, "t": 351.49448, "r": 380.60059, "b": 359.35449, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "123", "bbox": {"l": 387.94672, "t": 351.27383, "r": 404.49136, "b": 360.04395, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "CAIN", "bbox": {"l": 404.49411, "t": 351.81621999999993, "r": 426.4617, "b": 360.0899, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "xxxx456", "bbox": {"l": 437.34344, "t": 351.27383, "r": 475.91544, "b": 360.04395, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "1000004", "bbox": {"l": 347.98749, "t": 366.41766000000007, "r": 380.60059, "b": 374.27768, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "123", "bbox": {"l": 387.94672, "t": 366.19701999999995, "r": 404.49136, "b": 374.96713, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "BEDOYA", "bbox": {"l": 404.49411, "t": 366.73941, "r": 437.42895999999996, "b": 375.01309000000003, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "yyyy456", "bbox": {"l": 437.46664, "t": 366.19701999999995, "r": 475.89061999999996, "b": 374.96713, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "1000005", "bbox": {"l": 347.9884, "t": 381.34064000000006, "r": 380.6015, "b": 389.20064999999994, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "123", "bbox": {"l": 387.94763, "t": 381.11999999999995, "r": 404.49228, "b": 389.89011, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "BEDOYA", "bbox": {"l": 404.49503, "t": 381.66238, "r": 437.42987, "b": 389.93607000000003, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "zzzz456", "bbox": {"l": 437.46756000000005, "t": 381.11999999999995, "r": 475.89154, "b": 389.89011, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 121, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.41461944580078, "t": 754.2803344726562, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9247628450393677, "cells": [{"id": 0, "text": "106 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "106"}, {"label": "page_footer", "id": 1, "page_no": 121, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.62214660644531, "t": 754.58251953125, "r": 339.8680725097656, "b": 764.0300903320312, "coord_origin": "TOPLEFT"}, "confidence": 0.9530835747718811, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 2, "page_no": 121, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.8849639892578, "t": 70.34988403320312, "r": 543.5155, "b": 116.99058532714844, "coord_origin": "TOPLEFT"}, "confidence": 0.9810242652893066, "cells": [{"id": 2, "text": "For programs that access records sequentially, in or out of key order, the added RCAC logic ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 543.5155, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "can have a profound effect on the performance and scalability. Reading the \u201cnext record\u201d in ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 539.91107, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "order is no longer a simple matter of positioning to the next available key, as shown in ", "bbox": {"l": 136.80002, "t": 95.50829999999996, "r": 516.06189, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Figure 6-23.", "bbox": {"l": 136.80002, "t": 107.50811999999996, "r": 190.73239, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "For programs that access records sequentially, in or out of key order, the added RCAC logic can have a profound effect on the performance and scalability. Reading the \u201cnext record\u201d in order is no longer a simple matter of positioning to the next available key, as shown in Figure 6-23."}, {"label": "caption", "id": 3, "page_no": 121, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.106201171875, "t": 403.9275817871094, "r": 333.33013916015625, "b": 413.6200256347656, "coord_origin": "TOPLEFT"}, "confidence": 0.9444288611412048, "cells": [{"id": 6, "text": "Figure 6-23 Native record access with no RCAC", "bbox": {"l": 136.8, "t": 404.77798, "r": 332.58868, "b": 413.103, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-23 Native record access with no RCAC"}, {"label": "picture", "id": 4, "page_no": 121, "cluster": {"id": 4, "label": "picture", "bbox": {"l": 136.19158935546875, "t": 131.57861328125, "r": 506.083740234375, "b": 400.9339294433594, "coord_origin": "TOPLEFT"}, "confidence": 0.9722803235054016, "cells": [{"id": 7, "text": "Native RLA Request", "bbox": {"l": 179.1436, "t": 155.32299999999998, "r": 278.48407, "b": 165.81525, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "RRN", "bbox": {"l": 355.00479, "t": 142.72247000000004, "r": 371.4198, "b": 150.59167000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Record Data", "bbox": {"l": 412.7984, "t": 142.72247000000004, "r": 459.23407, "b": 150.59167000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "1", "bbox": {"l": 375.93451, "t": 157.64544999999998, "r": 380.59537, "b": 165.50543000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "123", "bbox": {"l": 387.94699, "t": 157.4248, "r": 404.49164, "b": 166.19494999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CAIN", "bbox": {"l": 404.49438, "t": 157.96722, "r": 426.46198, "b": 166.24090999999999, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "aaaa456", "bbox": {"l": 437.34372, "t": 157.4248, "r": 475.91571, "b": 166.19494999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "GLYPH", "bbox": {"l": 323.6568, "t": 153.94312000000002, "r": 333.83542, "b": 171.4389, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "2", "bbox": {"l": 375.93411, "t": 172.53827, "r": 380.59497, "b": 180.39824999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "123", "bbox": {"l": 387.94659, "t": 172.31763, "r": 404.49124, "b": 181.08776999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "CAIN", "bbox": {"l": 404.49399, "t": 172.86005, "r": 426.46158, "b": 181.13373, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "bbbb456", "bbox": {"l": 437.34332000000006, "t": 172.31763, "r": 475.91531000000003, "b": 181.08776999999998, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "3", "bbox": {"l": 375.93408, "t": 187.46130000000005, "r": 380.59494, "b": 195.32128999999998, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "123", "bbox": {"l": 387.94656, "t": 187.24066000000005, "r": 404.49121, "b": 196.01080000000002, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "CAIN", "bbox": {"l": 404.49396, "t": 187.78308000000004, "r": 426.46155, "b": 196.05676000000005, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "cccc456", "bbox": {"l": 437.3432900000001, "t": 187.24066000000005, "r": 475.91528000000005, "b": 196.01080000000002, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "4", "bbox": {"l": 375.93411, "t": 202.38477, "r": 380.59497, "b": 210.24474999999995, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "123", "bbox": {"l": 387.9462, "t": 202.16405999999995, "r": 404.49084, "b": 210.93420000000003, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "CAIN", "bbox": {"l": 404.4935, "t": 202.70648000000006, "r": 426.46109, "b": 210.98015999999996, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "dddd456", "bbox": {"l": 437.34299, "t": 202.16405999999995, "r": 475.91498000000007, "b": 210.93420000000003, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "NR", "bbox": {"l": 230.0419, "t": 204.42553999999996, "r": 280.56635, "b": 220.16387999999995, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "C", "bbox": {"l": 266.42206, "t": 204.42553999999996, "r": 290.17664, "b": 220.16387999999995, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "A", "bbox": {"l": 276.16107, "t": 204.42553999999996, "r": 301.33136, "b": 220.16387999999995, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "5", "bbox": {"l": 375.93411, "t": 217.27722000000006, "r": 380.59497, "b": 225.13720999999998, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "123", "bbox": {"l": 387.94659, "t": 217.05658000000005, "r": 404.49124, "b": 225.82672000000002, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CAIN", "bbox": {"l": 404.49399, "t": 217.59900000000005, "r": 426.46158, "b": 225.87267999999995, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "eeee456", "bbox": {"l": 437.34332000000006, "t": 217.05658000000005, "r": 475.91531000000003, "b": 225.82672000000002, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "\u0085", "bbox": {"l": 374.24902, "t": 232.20025999999996, "r": 380.59219, "b": 240.06024000000002, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "\u0085", "bbox": {"l": 387.94659, "t": 231.97960999999998, "r": 393.4624, "b": 240.74976000000004, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "No RCAC", "bbox": {"l": 230.0419, "t": 204.42553999999996, "r": 296.65891, "b": 220.16387999999995, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "\u0085", "bbox": {"l": 374.24869, "t": 247.12378, "r": 380.59186, "b": 254.98375999999996, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "\u0085", "bbox": {"l": 387.94626, "t": 246.90314, "r": 393.46207, "b": 255.67327999999998, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "\u0085", "bbox": {"l": 374.24869, "t": 262.01648, "r": 380.59186, "b": 269.87645999999995, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "\u0085", "bbox": {"l": 387.94626, "t": 261.79584, "r": 393.46207, "b": 270.56597999999997, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "\u0085", "bbox": {"l": 374.24869, "t": 276.93944999999997, "r": 380.59186, "b": 284.7995, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "\u0085", "bbox": {"l": 387.94626, "t": 276.71880999999996, "r": 393.46207, "b": 285.48895, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "\u0085", "bbox": {"l": 374.24869, "t": 291.8627599999999, "r": 380.59186, "b": 299.72278, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "\u0085", "bbox": {"l": 387.94626, "t": 291.64212, "r": 393.46207, "b": 300.41223, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "\u0085", "bbox": {"l": 374.24869, "t": 306.7554, "r": 380.59186, "b": 314.61542, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "\u0085", "bbox": {"l": 387.94626, "t": 306.53476, "r": 393.46207, "b": 315.30487, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "1000001", "bbox": {"l": 347.98749, "t": 321.67856, "r": 380.60059, "b": 329.53857, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "123", "bbox": {"l": 387.9462, "t": 321.45801, "r": 404.49084, "b": 330.22812, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "CAIN", "bbox": {"l": 404.4935, "t": 322.0004, "r": 426.46109, "b": 330.27408, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "vvvv456", "bbox": {"l": 437.34299, "t": 321.45801, "r": 475.91498000000007, "b": 330.22812, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "1000002", "bbox": {"l": 347.98749, "t": 336.60184, "r": 380.60059, "b": 344.46185, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "123", "bbox": {"l": 387.94672, "t": 336.3812, "r": 404.49136, "b": 345.15131, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "CAIN", "bbox": {"l": 404.49411, "t": 336.9235800000001, "r": 426.4617, "b": 345.19727, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "wwww456", "bbox": {"l": 437.34344, "t": 336.3812, "r": 475.91544, "b": 345.15131, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "1000003", "bbox": {"l": 347.98749, "t": 351.49448, "r": 380.60059, "b": 359.35449, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "123", "bbox": {"l": 387.94672, "t": 351.27383, "r": 404.49136, "b": 360.04395, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "CAIN", "bbox": {"l": 404.49411, "t": 351.81621999999993, "r": 426.4617, "b": 360.0899, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "xxxx456", "bbox": {"l": 437.34344, "t": 351.27383, "r": 475.91544, "b": 360.04395, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "1000004", "bbox": {"l": 347.98749, "t": 366.41766000000007, "r": 380.60059, "b": 374.27768, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "123", "bbox": {"l": 387.94672, "t": 366.19701999999995, "r": 404.49136, "b": 374.96713, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "BEDOYA", "bbox": {"l": 404.49411, "t": 366.73941, "r": 437.42895999999996, "b": 375.01309000000003, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "yyyy456", "bbox": {"l": 437.46664, "t": 366.19701999999995, "r": 475.89061999999996, "b": 374.96713, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "1000005", "bbox": {"l": 347.9884, "t": 381.34064000000006, "r": 380.6015, "b": 389.20064999999994, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "123", "bbox": {"l": 387.94763, "t": 381.11999999999995, "r": 404.49228, "b": 389.89011, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "BEDOYA", "bbox": {"l": 404.49503, "t": 381.66238, "r": 437.42987, "b": 389.93607000000003, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "zzzz456", "bbox": {"l": 437.46756000000005, "t": 381.11999999999995, "r": 475.89154, "b": 389.89011, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 121, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.8849639892578, "t": 70.34988403320312, "r": 543.5155, "b": 116.99058532714844, "coord_origin": "TOPLEFT"}, "confidence": 0.9810242652893066, "cells": [{"id": 2, "text": "For programs that access records sequentially, in or out of key order, the added RCAC logic ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 543.5155, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "can have a profound effect on the performance and scalability. Reading the \u201cnext record\u201d in ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 539.91107, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "order is no longer a simple matter of positioning to the next available key, as shown in ", "bbox": {"l": 136.80002, "t": 95.50829999999996, "r": 516.06189, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Figure 6-23.", "bbox": {"l": 136.80002, "t": 107.50811999999996, "r": 190.73239, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "For programs that access records sequentially, in or out of key order, the added RCAC logic can have a profound effect on the performance and scalability. Reading the \u201cnext record\u201d in order is no longer a simple matter of positioning to the next available key, as shown in Figure 6-23."}, {"label": "caption", "id": 3, "page_no": 121, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.106201171875, "t": 403.9275817871094, "r": 333.33013916015625, "b": 413.6200256347656, "coord_origin": "TOPLEFT"}, "confidence": 0.9444288611412048, "cells": [{"id": 6, "text": "Figure 6-23 Native record access with no RCAC", "bbox": {"l": 136.8, "t": 404.77798, "r": 332.58868, "b": 413.103, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-23 Native record access with no RCAC"}, {"label": "picture", "id": 4, "page_no": 121, "cluster": {"id": 4, "label": "picture", "bbox": {"l": 136.19158935546875, "t": 131.57861328125, "r": 506.083740234375, "b": 400.9339294433594, "coord_origin": "TOPLEFT"}, "confidence": 0.9722803235054016, "cells": [{"id": 7, "text": "Native RLA Request", "bbox": {"l": 179.1436, "t": 155.32299999999998, "r": 278.48407, "b": 165.81525, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "RRN", "bbox": {"l": 355.00479, "t": 142.72247000000004, "r": 371.4198, "b": 150.59167000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Record Data", "bbox": {"l": 412.7984, "t": 142.72247000000004, "r": 459.23407, "b": 150.59167000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "1", "bbox": {"l": 375.93451, "t": 157.64544999999998, "r": 380.59537, "b": 165.50543000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "123", "bbox": {"l": 387.94699, "t": 157.4248, "r": 404.49164, "b": 166.19494999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CAIN", "bbox": {"l": 404.49438, "t": 157.96722, "r": 426.46198, "b": 166.24090999999999, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "aaaa456", "bbox": {"l": 437.34372, "t": 157.4248, "r": 475.91571, "b": 166.19494999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "GLYPH", "bbox": {"l": 323.6568, "t": 153.94312000000002, "r": 333.83542, "b": 171.4389, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "2", "bbox": {"l": 375.93411, "t": 172.53827, "r": 380.59497, "b": 180.39824999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "123", "bbox": {"l": 387.94659, "t": 172.31763, "r": 404.49124, "b": 181.08776999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "CAIN", "bbox": {"l": 404.49399, "t": 172.86005, "r": 426.46158, "b": 181.13373, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "bbbb456", "bbox": {"l": 437.34332000000006, "t": 172.31763, "r": 475.91531000000003, "b": 181.08776999999998, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "3", "bbox": {"l": 375.93408, "t": 187.46130000000005, "r": 380.59494, "b": 195.32128999999998, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "123", "bbox": {"l": 387.94656, "t": 187.24066000000005, "r": 404.49121, "b": 196.01080000000002, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "CAIN", "bbox": {"l": 404.49396, "t": 187.78308000000004, "r": 426.46155, "b": 196.05676000000005, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "cccc456", "bbox": {"l": 437.3432900000001, "t": 187.24066000000005, "r": 475.91528000000005, "b": 196.01080000000002, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "4", "bbox": {"l": 375.93411, "t": 202.38477, "r": 380.59497, "b": 210.24474999999995, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "123", "bbox": {"l": 387.9462, "t": 202.16405999999995, "r": 404.49084, "b": 210.93420000000003, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "CAIN", "bbox": {"l": 404.4935, "t": 202.70648000000006, "r": 426.46109, "b": 210.98015999999996, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "dddd456", "bbox": {"l": 437.34299, "t": 202.16405999999995, "r": 475.91498000000007, "b": 210.93420000000003, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "NR", "bbox": {"l": 230.0419, "t": 204.42553999999996, "r": 280.56635, "b": 220.16387999999995, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "C", "bbox": {"l": 266.42206, "t": 204.42553999999996, "r": 290.17664, "b": 220.16387999999995, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "A", "bbox": {"l": 276.16107, "t": 204.42553999999996, "r": 301.33136, "b": 220.16387999999995, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "5", "bbox": {"l": 375.93411, "t": 217.27722000000006, "r": 380.59497, "b": 225.13720999999998, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "123", "bbox": {"l": 387.94659, "t": 217.05658000000005, "r": 404.49124, "b": 225.82672000000002, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CAIN", "bbox": {"l": 404.49399, "t": 217.59900000000005, "r": 426.46158, "b": 225.87267999999995, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "eeee456", "bbox": {"l": 437.34332000000006, "t": 217.05658000000005, "r": 475.91531000000003, "b": 225.82672000000002, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "\u0085", "bbox": {"l": 374.24902, "t": 232.20025999999996, "r": 380.59219, "b": 240.06024000000002, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "\u0085", "bbox": {"l": 387.94659, "t": 231.97960999999998, "r": 393.4624, "b": 240.74976000000004, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "No RCAC", "bbox": {"l": 230.0419, "t": 204.42553999999996, "r": 296.65891, "b": 220.16387999999995, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "\u0085", "bbox": {"l": 374.24869, "t": 247.12378, "r": 380.59186, "b": 254.98375999999996, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "\u0085", "bbox": {"l": 387.94626, "t": 246.90314, "r": 393.46207, "b": 255.67327999999998, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "\u0085", "bbox": {"l": 374.24869, "t": 262.01648, "r": 380.59186, "b": 269.87645999999995, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "\u0085", "bbox": {"l": 387.94626, "t": 261.79584, "r": 393.46207, "b": 270.56597999999997, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "\u0085", "bbox": {"l": 374.24869, "t": 276.93944999999997, "r": 380.59186, "b": 284.7995, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "\u0085", "bbox": {"l": 387.94626, "t": 276.71880999999996, "r": 393.46207, "b": 285.48895, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "\u0085", "bbox": {"l": 374.24869, "t": 291.8627599999999, "r": 380.59186, "b": 299.72278, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "\u0085", "bbox": {"l": 387.94626, "t": 291.64212, "r": 393.46207, "b": 300.41223, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "\u0085", "bbox": {"l": 374.24869, "t": 306.7554, "r": 380.59186, "b": 314.61542, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "\u0085", "bbox": {"l": 387.94626, "t": 306.53476, "r": 393.46207, "b": 315.30487, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "1000001", "bbox": {"l": 347.98749, "t": 321.67856, "r": 380.60059, "b": 329.53857, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "123", "bbox": {"l": 387.9462, "t": 321.45801, "r": 404.49084, "b": 330.22812, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "CAIN", "bbox": {"l": 404.4935, "t": 322.0004, "r": 426.46109, "b": 330.27408, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "vvvv456", "bbox": {"l": 437.34299, "t": 321.45801, "r": 475.91498000000007, "b": 330.22812, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "1000002", "bbox": {"l": 347.98749, "t": 336.60184, "r": 380.60059, "b": 344.46185, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "123", "bbox": {"l": 387.94672, "t": 336.3812, "r": 404.49136, "b": 345.15131, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "CAIN", "bbox": {"l": 404.49411, "t": 336.9235800000001, "r": 426.4617, "b": 345.19727, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "wwww456", "bbox": {"l": 437.34344, "t": 336.3812, "r": 475.91544, "b": 345.15131, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "1000003", "bbox": {"l": 347.98749, "t": 351.49448, "r": 380.60059, "b": 359.35449, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "123", "bbox": {"l": 387.94672, "t": 351.27383, "r": 404.49136, "b": 360.04395, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "CAIN", "bbox": {"l": 404.49411, "t": 351.81621999999993, "r": 426.4617, "b": 360.0899, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "xxxx456", "bbox": {"l": 437.34344, "t": 351.27383, "r": 475.91544, "b": 360.04395, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "1000004", "bbox": {"l": 347.98749, "t": 366.41766000000007, "r": 380.60059, "b": 374.27768, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "123", "bbox": {"l": 387.94672, "t": 366.19701999999995, "r": 404.49136, "b": 374.96713, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "BEDOYA", "bbox": {"l": 404.49411, "t": 366.73941, "r": 437.42895999999996, "b": 375.01309000000003, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "yyyy456", "bbox": {"l": 437.46664, "t": 366.19701999999995, "r": 475.89061999999996, "b": 374.96713, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "1000005", "bbox": {"l": 347.9884, "t": 381.34064000000006, "r": 380.6015, "b": 389.20064999999994, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "123", "bbox": {"l": 387.94763, "t": 381.11999999999995, "r": 404.49228, "b": 389.89011, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "BEDOYA", "bbox": {"l": 404.49503, "t": 381.66238, "r": 437.42987, "b": 389.93607000000003, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "zzzz456", "bbox": {"l": 437.46756000000005, "t": 381.11999999999995, "r": 475.89154, "b": 389.89011, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 121, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.41461944580078, "t": 754.2803344726562, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9247628450393677, "cells": [{"id": 0, "text": "106 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "106"}, {"label": "page_footer", "id": 1, "page_no": 121, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.62214660644531, "t": 754.58251953125, "r": 339.8680725097656, "b": 764.0300903320312, "coord_origin": "TOPLEFT"}, "confidence": 0.9530835747718811, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 122, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 371.28, "t": 755.538002, "r": 517.96918, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "107", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Before the record, as identified by the key, is considered available, the RCAC logic must be ", "bbox": {"l": 136.8002, "t": 71.50903000000005, "r": 539.8396, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "run. If the record is rejected by RCAC, the next record in sequence that is permissible must be ", "bbox": {"l": 136.8002, "t": 83.50885000000017, "r": 547.29565, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "identified. This spinning through the records can take a long time and uses many resources, ", "bbox": {"l": 136.8002, "t": 95.50867000000005, "r": 545.24677, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "as shown in Figure 6-24.", "bbox": {"l": 136.8002, "t": 107.50847999999996, "r": 246.12015, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Figure 6-24 Native record level access with RCAC", "bbox": {"l": 136.8, "t": 408.73801, "r": 340.54565, "b": 417.06302, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "After the row permissions and column masks are designed and implemented, adequate ", "bbox": {"l": 136.8, "t": 434.68872, "r": 525.86151, "b": 443.90170000000006, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "performance and scalability testing are recommended.", "bbox": {"l": 136.8, "t": 446.74829, "r": 377.29614, "b": 455.96127, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "6.7", "bbox": {"l": 64.800003, "t": 484.4407, "r": 87.161385, "b": 499.2037, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Exclusive lock to implement RCAC (availability issues)", "bbox": {"l": 91.633644, "t": 484.4407, "r": 510.04889, "b": 499.2037, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "When defining permissions or enabling RCAC, an exclusive lock on the base table is ", "bbox": {"l": 136.8, "t": 516.70871, "r": 512.02203, "b": 525.92169, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "obtained. The impact to other applications depends on the order of create permission and the ", "bbox": {"l": 136.8, "t": 528.70853, "r": 547.24969, "b": 537.92152, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "alter table to activate RCAC.", "bbox": {"l": 136.8, "t": 540.7083299999999, "r": 261.91846, "b": 549.92133, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Consider the following scenarios:", "bbox": {"l": 136.8, "t": 562.72789, "r": 283.20502, "b": 571.94089, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 579.8571000000001, "r": 141.78, "b": 588.63185, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Scenario 1: Adding permissions and RCAC is not enabled on the table:", "bbox": {"l": 151.20016, "t": 579.7076999999999, "r": 464.85846, "b": 588.9207, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "-", "bbox": {"l": 152.03976, "t": 596.74727, "r": 157.61636, "b": 605.96027, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Job 1 reading data from the table (open for input) holds a *SHRRD on the member and ", "bbox": {"l": 165.6003, "t": 596.74727, "r": 547.40094, "b": 605.96027, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "a *SHRRD on the data. ", "bbox": {"l": 165.5993, "t": 608.74707, "r": 271.70319, "b": 617.96007, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "-", "bbox": {"l": 152.03976, "t": 625.7268799999999, "r": 157.59546, "b": 634.93988, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Job 2 adding, updating, or deleting rows from table (open for output) holds a *SHRRD ", "bbox": {"l": 165.59932, "t": 625.7268799999999, "r": 546.01855, "b": 634.93988, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "on the member and a *SHRUPD on the data.", "bbox": {"l": 165.5993, "t": 637.72668, "r": 364.6698, "b": 646.93968, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "-", "bbox": {"l": 152.03976, "t": 654.7065, "r": 157.61139, "b": 663.91949, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Job 4 allocates the object and gets a *SHRRD on the file and a *EXCLRD on the data.", "bbox": {"l": 165.5993, "t": 654.7065, "r": 546.81927, "b": 663.91949, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "-", "bbox": {"l": 152.03976, "t": 671.7460599999999, "r": 157.61139, "b": 680.95906, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Job 3 attempts to add a permission to the table. Permission is added and the ", "bbox": {"l": 165.5993, "t": 671.7460599999999, "r": 507.56107000000003, "b": 680.95906, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "pseudo-closed cursors for Job1 and Job 2 are closed. Job 4 still holds the *SHRRD on ", "bbox": {"l": 165.5993, "t": 683.74586, "r": 547.16492, "b": 692.95887, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "the file and *EXCLRD on the data. ", "bbox": {"l": 165.5993, "t": 695.745674, "r": 320.09985, "b": 704.958679, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "The net result from Scenario 1 is that you can add permissions without having to end the ", "bbox": {"l": 151.19914, "t": 712.725487, "r": 545.11029, "b": 721.938492, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "applications that are reading the base table. ", "bbox": {"l": 151.19914, "t": 724.725296, "r": 347.6232, "b": 733.938301, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Native RLA Request", "bbox": {"l": 164.6366, "t": 161.3573, "r": 264.40671, "b": 171.8949, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "RRN", "bbox": {"l": 360.86261, "t": 148.70245, "r": 377.34851, "b": 156.60564999999997, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Record Data", "bbox": {"l": 418.90582, "t": 148.70245, "r": 465.54205, "b": 156.60564999999997, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "1", "bbox": {"l": 381.88269, "t": 163.68988000000002, "r": 386.56366, "b": 171.58385999999996, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "123", "bbox": {"l": 393.94705, "t": 163.46831999999995, "r": 410.56314, "b": 172.27630999999997, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "CAIN", "bbox": {"l": 410.56592, "t": 164.01306, "r": 432.62839, "b": 172.32245, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "aaaaaa456", "bbox": {"l": 432.63208, "t": 163.46831999999995, "r": 482.27261, "b": 172.27630999999997, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "RCAC", "bbox": {"l": 295.24869, "t": 139.88818000000003, "r": 335.90213, "b": 155.69464000000005, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "\u00d7", "bbox": {"l": 295.06409, "t": 158.86370999999997, "r": 305.28674, "b": 176.43517999999995, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "2", "bbox": {"l": 381.88239, "t": 178.64721999999995, "r": 386.56335, "b": 186.5412, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "123", "bbox": {"l": 393.94675, "t": 178.42566, "r": 410.56284, "b": 187.23364000000004, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CAIN", "bbox": {"l": 410.56561, "t": 178.97040000000004, "r": 432.62808, "b": 187.27979000000005, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "bbbbbb456", "bbox": {"l": 432.63177, "t": 178.42566, "r": 482.27231, "b": 187.23364000000004, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "3", "bbox": {"l": 381.88239, "t": 193.63469999999995, "r": 386.56335, "b": 201.52868999999998, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "123", "bbox": {"l": 393.94675, "t": 193.41314999999997, "r": 410.56284, "b": 202.22113000000002, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "CAIN", "bbox": {"l": 410.56561, "t": 193.95789000000002, "r": 432.62808, "b": 202.26727000000005, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "cccccc456", "bbox": {"l": 432.63177, "t": 193.41314999999997, "r": 482.27231, "b": 202.22113000000002, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "4", "bbox": {"l": 381.88239, "t": 208.62285999999995, "r": 386.56335, "b": 216.51684999999998, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "123", "bbox": {"l": 393.9465, "t": 208.40112, "r": 410.56259, "b": 217.20911, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "CAIN", "bbox": {"l": 410.5654, "t": 208.94586000000004, "r": 432.62787, "b": 217.25525000000005, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "dddddd456", "bbox": {"l": 432.63159, "t": 208.40112, "r": 482.27213000000006, "b": 217.20911, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "\u00d7", "bbox": {"l": 295.06409, "t": 187.85344999999995, "r": 305.28674, "b": 205.42493000000002, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "5", "bbox": {"l": 381.88239, "t": 223.57970999999998, "r": 386.56335, "b": 231.47369000000003, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "123", "bbox": {"l": 393.94675, "t": 223.35815000000002, "r": 410.56284, "b": 232.16614000000004, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "CAIN", "bbox": {"l": 410.56561, "t": 223.90288999999996, "r": 432.62808, "b": 232.21227999999996, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "eeeeee456", "bbox": {"l": 432.63177, "t": 223.35815000000002, "r": 482.27231, "b": 232.16614000000004, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "\u0085", "bbox": {"l": 380.19003, "t": 238.56719999999996, "r": 386.56061, "b": 246.46118, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "\u0085", "bbox": {"l": 393.94675, "t": 238.34564, "r": 399.48636, "b": 247.15363000000002, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "\u00d7", "bbox": {"l": 295.06409, "t": 216.84520999999995, "r": 305.28674, "b": 234.41669000000002, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "\u0085", "bbox": {"l": 380.18979, "t": 253.55542000000003, "r": 386.56036, "b": 261.44939999999997, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "\u0085", "bbox": {"l": 393.9465, "t": 253.33385999999996, "r": 399.48611, "b": 262.14185, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "\u0085", "bbox": {"l": 380.18979, "t": 268.51239, "r": 386.56036, "b": 276.40637000000004, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "\u0085", "bbox": {"l": 393.9465, "t": 268.29083, "r": 399.48611, "b": 277.09882000000005, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "\u0085", "bbox": {"l": 380.18979, "t": 283.49985, "r": 386.56036, "b": 291.3938, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "\u0085", "bbox": {"l": 393.9465, "t": 283.27823, "r": 399.48611, "b": 292.08624, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "Row Permission", "bbox": {"l": 145.49409, "t": 259.80902000000003, "r": 224.43881, "b": 270.33429, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": ":", "bbox": {"l": 224.43390000000002, "t": 259.80902000000003, "r": 227.83154, "b": 270.34662000000003, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "WHERE NAME <> \u0091CAIN\u0092", "bbox": {"l": 145.49409, "t": 289.35373, "r": 267.97665, "b": 299.89133, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "s", "bbox": {"l": 304.82001, "t": 255.23577999999998, "r": 309.67026, "b": 266.24114999999995, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "p", "bbox": {"l": 309.68259, "t": 255.23577999999998, "r": 316.18243, "b": 266.24114999999995, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "in", "bbox": {"l": 316.17621, "t": 255.23577999999998, "r": 325.67731, "b": 266.24114999999995, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "thru", "bbox": {"l": 304.45065, "t": 270.00811999999996, "r": 326.05524, "b": 281.01349, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "rec", "bbox": {"l": 296.51059, "t": 284.78042999999997, "r": 311.95633, "b": 295.78583, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "ords", "bbox": {"l": 311.84555, "t": 284.78042999999997, "r": 334.01147, "b": 295.78583, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "\u0085", "bbox": {"l": 380.18979, "t": 298.48804, "r": 386.56036, "b": 306.38199, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "\u0085", "bbox": {"l": 393.9465, "t": 298.26642, "r": 399.48611, "b": 307.07443, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "\u0085", "bbox": {"l": 380.18979, "t": 313.44501, "r": 386.56036, "b": 321.33896, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "\u0085", "bbox": {"l": 393.9465, "t": 313.22339, "r": 399.48611, "b": 322.0314, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "1000001", "bbox": {"l": 353.81491, "t": 328.43283, "r": 386.56885, "b": 336.32678, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "123", "bbox": {"l": 393.9465, "t": 328.21121, "r": 410.56259, "b": 337.01923, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "CAIN", "bbox": {"l": 410.5654, "t": 328.7559499999999, "r": 432.62787, "b": 337.0654, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "vvvvvv456", "bbox": {"l": 432.63159, "t": 328.21121, "r": 482.27213000000006, "b": 337.01923, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "\u00d7", "bbox": {"l": 295.06409, "t": 323.94492, "r": 305.28674, "b": 341.51636, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "1000002", "bbox": {"l": 353.81491, "t": 343.42062, "r": 386.56885, "b": 351.31458, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "123", "bbox": {"l": 393.94669, "t": 343.19901, "r": 410.56277, "b": 352.00702, "coord_origin": "TOPLEFT"}}, {"id": 86, "text": "CAIN", "bbox": {"l": 410.56555, "t": 343.74374, "r": 432.62802000000005, "b": 352.05319, "coord_origin": "TOPLEFT"}}, {"id": 87, "text": "wwwwww456", "bbox": {"l": 432.63170999999994, "t": 343.19901, "r": 482.27224999999993, "b": 352.00702, "coord_origin": "TOPLEFT"}}, {"id": 88, "text": "1000003", "bbox": {"l": 353.81491, "t": 358.37759, "r": 386.56885, "b": 366.27155, "coord_origin": "TOPLEFT"}}, {"id": 89, "text": "123", "bbox": {"l": 393.94669, "t": 358.15598, "r": 410.56277, "b": 366.96399, "coord_origin": "TOPLEFT"}}, {"id": 90, "text": "CAIN", "bbox": {"l": 410.56555, "t": 358.70071, "r": 432.62802000000005, "b": 367.01016, "coord_origin": "TOPLEFT"}}, {"id": 91, "text": "xxxxxx456", "bbox": {"l": 432.63170999999994, "t": 358.15598, "r": 482.27224999999993, "b": 366.96399, "coord_origin": "TOPLEFT"}}, {"id": 92, "text": "GLYPH", "bbox": {"l": 293.21759, "t": 368.69284, "r": 303.44025, "b": 386.26428, "coord_origin": "TOPLEFT"}}, {"id": 93, "text": "\u00d7", "bbox": {"l": 295.06409, "t": 352.53653, "r": 305.28674, "b": 370.10797, "coord_origin": "TOPLEFT"}}, {"id": 94, "text": "1000004", "bbox": {"l": 353.81491, "t": 373.36545, "r": 386.56885, "b": 381.25939999999997, "coord_origin": "TOPLEFT"}}, {"id": 95, "text": "123", "bbox": {"l": 393.94669, "t": 373.14383, "r": 410.56277, "b": 381.95184, "coord_origin": "TOPLEFT"}}, {"id": 96, "text": "BEDOYA", "bbox": {"l": 410.56555, "t": 373.68857, "r": 443.64264, "b": 381.99802, "coord_origin": "TOPLEFT"}}, {"id": 97, "text": "yyyy456", "bbox": {"l": 443.68048, "t": 373.14383, "r": 482.27039, "b": 381.95184, "coord_origin": "TOPLEFT"}}, {"id": 98, "text": "1000005", "bbox": {"l": 353.81583, "t": 388.35287, "r": 386.56976, "b": 396.24683, "coord_origin": "TOPLEFT"}}, {"id": 99, "text": "123", "bbox": {"l": 393.9476, "t": 388.13126, "r": 410.56369, "b": 396.93927, "coord_origin": "TOPLEFT"}}, {"id": 100, "text": "BEDOYA", "bbox": {"l": 410.56647, "t": 388.67599, "r": 443.64354999999995, "b": 396.98544, "coord_origin": "TOPLEFT"}}, {"id": 101, "text": "zzzz456", "bbox": {"l": 443.6814, "t": 388.13126, "r": 482.2713, "b": 396.93927, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 370.56109619140625, "t": 754.820068359375, "r": 517.96918, "b": 763.9142456054688, "coord_origin": "TOPLEFT"}, "confidence": 0.9531034231185913, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 371.28, "t": 755.538002, "r": 517.96918, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 530.158935546875, "t": 754.1790161132812, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9219108819961548, "cells": [{"id": 1, "text": "107", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 136.06326293945312, "t": 70.65892791748047, "r": 547.29565, "b": 116.73127746582031, "coord_origin": "TOPLEFT"}, "confidence": 0.9824259281158447, "cells": [{"id": 2, "text": "Before the record, as identified by the key, is considered available, the RCAC logic must be ", "bbox": {"l": 136.8002, "t": 71.50903000000005, "r": 539.8396, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "run. If the record is rejected by RCAC, the next record in sequence that is permissible must be ", "bbox": {"l": 136.8002, "t": 83.50885000000017, "r": 547.29565, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "identified. This spinning through the records can take a long time and uses many resources, ", "bbox": {"l": 136.8002, "t": 95.50867000000005, "r": 545.24677, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "as shown in Figure 6-24.", "bbox": {"l": 136.8002, "t": 107.50847999999996, "r": 246.12015, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 135.92271423339844, "t": 407.9793701171875, "r": 341.2294616699219, "b": 417.6308898925781, "coord_origin": "TOPLEFT"}, "confidence": 0.9458103775978088, "cells": [{"id": 6, "text": "Figure 6-24 Native record level access with RCAC", "bbox": {"l": 136.8, "t": 408.73801, "r": 340.54565, "b": 417.06302, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.81785583496094, "t": 433.958251953125, "r": 525.86151, "b": 456.21856689453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9756483435630798, "cells": [{"id": 7, "text": "After the row permissions and column masks are designed and implemented, adequate ", "bbox": {"l": 136.8, "t": 434.68872, "r": 525.86151, "b": 443.90170000000006, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "performance and scalability testing are recommended.", "bbox": {"l": 136.8, "t": 446.74829, "r": 377.29614, "b": 455.96127, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "section_header", "bbox": {"l": 64.4524917602539, "t": 483.275146484375, "r": 510.04889, "b": 500.006103515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9643033742904663, "cells": [{"id": 9, "text": "6.7", "bbox": {"l": 64.800003, "t": 484.4407, "r": 87.161385, "b": 499.2037, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Exclusive lock to implement RCAC (availability issues)", "bbox": {"l": 91.633644, "t": 484.4407, "r": 510.04889, "b": 499.2037, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 135.74249267578125, "t": 516.0097045898438, "r": 547.24969, "b": 549.92133, "coord_origin": "TOPLEFT"}, "confidence": 0.9808005094528198, "cells": [{"id": 11, "text": "When defining permissions or enabling RCAC, an exclusive lock on the base table is ", "bbox": {"l": 136.8, "t": 516.70871, "r": 512.02203, "b": 525.92169, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "obtained. The impact to other applications depends on the order of create permission and the ", "bbox": {"l": 136.8, "t": 528.70853, "r": 547.24969, "b": 537.92152, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "alter table to activate RCAC.", "bbox": {"l": 136.8, "t": 540.7083299999999, "r": 261.91846, "b": 549.92133, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 136.18580627441406, "t": 561.9881591796875, "r": 283.20502, "b": 572.285888671875, "coord_origin": "TOPLEFT"}, "confidence": 0.8252715468406677, "cells": [{"id": 14, "text": "Consider the following scenarios:", "bbox": {"l": 136.8, "t": 562.72789, "r": 283.20502, "b": 571.94089, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.5818634033203, "t": 578.6119995117188, "r": 464.85846, "b": 588.9207, "coord_origin": "TOPLEFT"}, "confidence": 0.9519445896148682, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 579.8571000000001, "r": 141.78, "b": 588.63185, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Scenario 1: Adding permissions and RCAC is not enabled on the table:", "bbox": {"l": 151.20016, "t": 579.7076999999999, "r": 464.85846, "b": 588.9207, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 151.1683349609375, "t": 595.9595336914062, "r": 547.40094, "b": 617.96007, "coord_origin": "TOPLEFT"}, "confidence": 0.9689837098121643, "cells": [{"id": 17, "text": "-", "bbox": {"l": 152.03976, "t": 596.74727, "r": 157.61636, "b": 605.96027, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Job 1 reading data from the table (open for input) holds a *SHRRD on the member and ", "bbox": {"l": 165.6003, "t": 596.74727, "r": 547.40094, "b": 605.96027, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "a *SHRRD on the data. ", "bbox": {"l": 165.5993, "t": 608.74707, "r": 271.70319, "b": 617.96007, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 151.33261108398438, "t": 624.4862670898438, "r": 546.01855, "b": 646.93968, "coord_origin": "TOPLEFT"}, "confidence": 0.972244918346405, "cells": [{"id": 20, "text": "-", "bbox": {"l": 152.03976, "t": 625.7268799999999, "r": 157.59546, "b": 634.93988, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Job 2 adding, updating, or deleting rows from table (open for output) holds a *SHRRD ", "bbox": {"l": 165.59932, "t": 625.7268799999999, "r": 546.01855, "b": 634.93988, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "on the member and a *SHRUPD on the data.", "bbox": {"l": 165.5993, "t": 637.72668, "r": 364.6698, "b": 646.93968, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 151.21334838867188, "t": 653.9972534179688, "r": 546.81927, "b": 664.3414916992188, "coord_origin": "TOPLEFT"}, "confidence": 0.9548404812812805, "cells": [{"id": 23, "text": "-", "bbox": {"l": 152.03976, "t": 654.7065, "r": 157.61139, "b": 663.91949, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Job 4 allocates the object and gets a *SHRRD on the file and a *EXCLRD on the data.", "bbox": {"l": 165.5993, "t": 654.7065, "r": 546.81927, "b": 663.91949, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "list_item", "bbox": {"l": 151.15476989746094, "t": 670.9539794921875, "r": 547.16492, "b": 704.958679, "coord_origin": "TOPLEFT"}, "confidence": 0.9793244004249573, "cells": [{"id": 25, "text": "-", "bbox": {"l": 152.03976, "t": 671.7460599999999, "r": 157.61139, "b": 680.95906, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Job 3 attempts to add a permission to the table. Permission is added and the ", "bbox": {"l": 165.5993, "t": 671.7460599999999, "r": 507.56107000000003, "b": 680.95906, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "pseudo-closed cursors for Job1 and Job 2 are closed. Job 4 still holds the *SHRRD on ", "bbox": {"l": 165.5993, "t": 683.74586, "r": 547.16492, "b": 692.95887, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "the file and *EXCLRD on the data. ", "bbox": {"l": 165.5993, "t": 695.745674, "r": 320.09985, "b": 704.958679, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 150.30223083496094, "t": 711.9512939453125, "r": 545.11029, "b": 734.1187133789062, "coord_origin": "TOPLEFT"}, "confidence": 0.9760500192642212, "cells": [{"id": 29, "text": "The net result from Scenario 1 is that you can add permissions without having to end the ", "bbox": {"l": 151.19914, "t": 712.725487, "r": 545.11029, "b": 721.938492, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "applications that are reading the base table. ", "bbox": {"l": 151.19914, "t": 724.725296, "r": 347.6232, "b": 733.938301, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "picture", "bbox": {"l": 135.89947509765625, "t": 131.36407470703125, "r": 513.2355346679688, "b": 404.8336486816406, "coord_origin": "TOPLEFT"}, "confidence": 0.9828073978424072, "cells": [{"id": 31, "text": "Native RLA Request", "bbox": {"l": 164.6366, "t": 161.3573, "r": 264.40671, "b": 171.8949, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "RRN", "bbox": {"l": 360.86261, "t": 148.70245, "r": 377.34851, "b": 156.60564999999997, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Record Data", "bbox": {"l": 418.90582, "t": 148.70245, "r": 465.54205, "b": 156.60564999999997, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "1", "bbox": {"l": 381.88269, "t": 163.68988000000002, "r": 386.56366, "b": 171.58385999999996, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "123", "bbox": {"l": 393.94705, "t": 163.46831999999995, "r": 410.56314, "b": 172.27630999999997, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "CAIN", "bbox": {"l": 410.56592, "t": 164.01306, "r": 432.62839, "b": 172.32245, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "aaaaaa456", "bbox": {"l": 432.63208, "t": 163.46831999999995, "r": 482.27261, "b": 172.27630999999997, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "RCAC", "bbox": {"l": 295.24869, "t": 139.88818000000003, "r": 335.90213, "b": 155.69464000000005, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "\u00d7", "bbox": {"l": 295.06409, "t": 158.86370999999997, "r": 305.28674, "b": 176.43517999999995, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "2", "bbox": {"l": 381.88239, "t": 178.64721999999995, "r": 386.56335, "b": 186.5412, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "123", "bbox": {"l": 393.94675, "t": 178.42566, "r": 410.56284, "b": 187.23364000000004, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CAIN", "bbox": {"l": 410.56561, "t": 178.97040000000004, "r": 432.62808, "b": 187.27979000000005, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "bbbbbb456", "bbox": {"l": 432.63177, "t": 178.42566, "r": 482.27231, "b": 187.23364000000004, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "3", "bbox": {"l": 381.88239, "t": 193.63469999999995, "r": 386.56335, "b": 201.52868999999998, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "123", "bbox": {"l": 393.94675, "t": 193.41314999999997, "r": 410.56284, "b": 202.22113000000002, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "CAIN", "bbox": {"l": 410.56561, "t": 193.95789000000002, "r": 432.62808, "b": 202.26727000000005, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "cccccc456", "bbox": {"l": 432.63177, "t": 193.41314999999997, "r": 482.27231, "b": 202.22113000000002, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "4", "bbox": {"l": 381.88239, "t": 208.62285999999995, "r": 386.56335, "b": 216.51684999999998, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "123", "bbox": {"l": 393.9465, "t": 208.40112, "r": 410.56259, "b": 217.20911, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "CAIN", "bbox": {"l": 410.5654, "t": 208.94586000000004, "r": 432.62787, "b": 217.25525000000005, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "dddddd456", "bbox": {"l": 432.63159, "t": 208.40112, "r": 482.27213000000006, "b": 217.20911, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "\u00d7", "bbox": {"l": 295.06409, "t": 187.85344999999995, "r": 305.28674, "b": 205.42493000000002, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "5", "bbox": {"l": 381.88239, "t": 223.57970999999998, "r": 386.56335, "b": 231.47369000000003, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "123", "bbox": {"l": 393.94675, "t": 223.35815000000002, "r": 410.56284, "b": 232.16614000000004, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "CAIN", "bbox": {"l": 410.56561, "t": 223.90288999999996, "r": 432.62808, "b": 232.21227999999996, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "eeeeee456", "bbox": {"l": 432.63177, "t": 223.35815000000002, "r": 482.27231, "b": 232.16614000000004, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "\u0085", "bbox": {"l": 380.19003, "t": 238.56719999999996, "r": 386.56061, "b": 246.46118, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "\u0085", "bbox": {"l": 393.94675, "t": 238.34564, "r": 399.48636, "b": 247.15363000000002, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "\u00d7", "bbox": {"l": 295.06409, "t": 216.84520999999995, "r": 305.28674, "b": 234.41669000000002, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "\u0085", "bbox": {"l": 380.18979, "t": 253.55542000000003, "r": 386.56036, "b": 261.44939999999997, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "\u0085", "bbox": {"l": 393.9465, "t": 253.33385999999996, "r": 399.48611, "b": 262.14185, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "\u0085", "bbox": {"l": 380.18979, "t": 268.51239, "r": 386.56036, "b": 276.40637000000004, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "\u0085", "bbox": {"l": 393.9465, "t": 268.29083, "r": 399.48611, "b": 277.09882000000005, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "\u0085", "bbox": {"l": 380.18979, "t": 283.49985, "r": 386.56036, "b": 291.3938, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "\u0085", "bbox": {"l": 393.9465, "t": 283.27823, "r": 399.48611, "b": 292.08624, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "Row Permission", "bbox": {"l": 145.49409, "t": 259.80902000000003, "r": 224.43881, "b": 270.33429, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": ":", "bbox": {"l": 224.43390000000002, "t": 259.80902000000003, "r": 227.83154, "b": 270.34662000000003, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "WHERE NAME <> \u0091CAIN\u0092", "bbox": {"l": 145.49409, "t": 289.35373, "r": 267.97665, "b": 299.89133, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "s", "bbox": {"l": 304.82001, "t": 255.23577999999998, "r": 309.67026, "b": 266.24114999999995, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "p", "bbox": {"l": 309.68259, "t": 255.23577999999998, "r": 316.18243, "b": 266.24114999999995, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "in", "bbox": {"l": 316.17621, "t": 255.23577999999998, "r": 325.67731, "b": 266.24114999999995, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "thru", "bbox": {"l": 304.45065, "t": 270.00811999999996, "r": 326.05524, "b": 281.01349, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "rec", "bbox": {"l": 296.51059, "t": 284.78042999999997, "r": 311.95633, "b": 295.78583, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "ords", "bbox": {"l": 311.84555, "t": 284.78042999999997, "r": 334.01147, "b": 295.78583, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "\u0085", "bbox": {"l": 380.18979, "t": 298.48804, "r": 386.56036, "b": 306.38199, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "\u0085", "bbox": {"l": 393.9465, "t": 298.26642, "r": 399.48611, "b": 307.07443, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "\u0085", "bbox": {"l": 380.18979, "t": 313.44501, "r": 386.56036, "b": 321.33896, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "\u0085", "bbox": {"l": 393.9465, "t": 313.22339, "r": 399.48611, "b": 322.0314, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "1000001", "bbox": {"l": 353.81491, "t": 328.43283, "r": 386.56885, "b": 336.32678, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "123", "bbox": {"l": 393.9465, "t": 328.21121, "r": 410.56259, "b": 337.01923, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "CAIN", "bbox": {"l": 410.5654, "t": 328.7559499999999, "r": 432.62787, "b": 337.0654, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "vvvvvv456", "bbox": {"l": 432.63159, "t": 328.21121, "r": 482.27213000000006, "b": 337.01923, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "\u00d7", "bbox": {"l": 295.06409, "t": 323.94492, "r": 305.28674, "b": 341.51636, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "1000002", "bbox": {"l": 353.81491, "t": 343.42062, "r": 386.56885, "b": 351.31458, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "123", "bbox": {"l": 393.94669, "t": 343.19901, "r": 410.56277, "b": 352.00702, "coord_origin": "TOPLEFT"}}, {"id": 86, "text": "CAIN", "bbox": {"l": 410.56555, "t": 343.74374, "r": 432.62802000000005, "b": 352.05319, "coord_origin": "TOPLEFT"}}, {"id": 87, "text": "wwwwww456", "bbox": {"l": 432.63170999999994, "t": 343.19901, "r": 482.27224999999993, "b": 352.00702, "coord_origin": "TOPLEFT"}}, {"id": 88, "text": "1000003", "bbox": {"l": 353.81491, "t": 358.37759, "r": 386.56885, "b": 366.27155, "coord_origin": "TOPLEFT"}}, {"id": 89, "text": "123", "bbox": {"l": 393.94669, "t": 358.15598, "r": 410.56277, "b": 366.96399, "coord_origin": "TOPLEFT"}}, {"id": 90, "text": "CAIN", "bbox": {"l": 410.56555, "t": 358.70071, "r": 432.62802000000005, "b": 367.01016, "coord_origin": "TOPLEFT"}}, {"id": 91, "text": "xxxxxx456", "bbox": {"l": 432.63170999999994, "t": 358.15598, "r": 482.27224999999993, "b": 366.96399, "coord_origin": "TOPLEFT"}}, {"id": 92, "text": "GLYPH", "bbox": {"l": 293.21759, "t": 368.69284, "r": 303.44025, "b": 386.26428, "coord_origin": "TOPLEFT"}}, {"id": 93, "text": "\u00d7", "bbox": {"l": 295.06409, "t": 352.53653, "r": 305.28674, "b": 370.10797, "coord_origin": "TOPLEFT"}}, {"id": 94, "text": "1000004", "bbox": {"l": 353.81491, "t": 373.36545, "r": 386.56885, "b": 381.25939999999997, "coord_origin": "TOPLEFT"}}, {"id": 95, "text": "123", "bbox": {"l": 393.94669, "t": 373.14383, "r": 410.56277, "b": 381.95184, "coord_origin": "TOPLEFT"}}, {"id": 96, "text": "BEDOYA", "bbox": {"l": 410.56555, "t": 373.68857, "r": 443.64264, "b": 381.99802, "coord_origin": "TOPLEFT"}}, {"id": 97, "text": "yyyy456", "bbox": {"l": 443.68048, "t": 373.14383, "r": 482.27039, "b": 381.95184, "coord_origin": "TOPLEFT"}}, {"id": 98, "text": "1000005", "bbox": {"l": 353.81583, "t": 388.35287, "r": 386.56976, "b": 396.24683, "coord_origin": "TOPLEFT"}}, {"id": 99, "text": "123", "bbox": {"l": 393.9476, "t": 388.13126, "r": 410.56369, "b": 396.93927, "coord_origin": "TOPLEFT"}}, {"id": 100, "text": "BEDOYA", "bbox": {"l": 410.56647, "t": 388.67599, "r": 443.64354999999995, "b": 396.98544, "coord_origin": "TOPLEFT"}}, {"id": 101, "text": "zzzz456", "bbox": {"l": 443.6814, "t": 388.13126, "r": 482.2713, "b": 396.93927, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 122, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 370.56109619140625, "t": 754.820068359375, "r": 517.96918, "b": 763.9142456054688, "coord_origin": "TOPLEFT"}, "confidence": 0.9531034231185913, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 371.28, "t": 755.538002, "r": 517.96918, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 122, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.158935546875, "t": 754.1790161132812, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9219108819961548, "cells": [{"id": 1, "text": "107", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "107"}, {"label": "text", "id": 2, "page_no": 122, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.06326293945312, "t": 70.65892791748047, "r": 547.29565, "b": 116.73127746582031, "coord_origin": "TOPLEFT"}, "confidence": 0.9824259281158447, "cells": [{"id": 2, "text": "Before the record, as identified by the key, is considered available, the RCAC logic must be ", "bbox": {"l": 136.8002, "t": 71.50903000000005, "r": 539.8396, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "run. If the record is rejected by RCAC, the next record in sequence that is permissible must be ", "bbox": {"l": 136.8002, "t": 83.50885000000017, "r": 547.29565, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "identified. This spinning through the records can take a long time and uses many resources, ", "bbox": {"l": 136.8002, "t": 95.50867000000005, "r": 545.24677, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "as shown in Figure 6-24.", "bbox": {"l": 136.8002, "t": 107.50847999999996, "r": 246.12015, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Before the record, as identified by the key, is considered available, the RCAC logic must be run. If the record is rejected by RCAC, the next record in sequence that is permissible must be identified. This spinning through the records can take a long time and uses many resources, as shown in Figure 6-24."}, {"label": "caption", "id": 3, "page_no": 122, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.92271423339844, "t": 407.9793701171875, "r": 341.2294616699219, "b": 417.6308898925781, "coord_origin": "TOPLEFT"}, "confidence": 0.9458103775978088, "cells": [{"id": 6, "text": "Figure 6-24 Native record level access with RCAC", "bbox": {"l": 136.8, "t": 408.73801, "r": 340.54565, "b": 417.06302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-24 Native record level access with RCAC"}, {"label": "text", "id": 4, "page_no": 122, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.81785583496094, "t": 433.958251953125, "r": 525.86151, "b": 456.21856689453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9756483435630798, "cells": [{"id": 7, "text": "After the row permissions and column masks are designed and implemented, adequate ", "bbox": {"l": 136.8, "t": 434.68872, "r": 525.86151, "b": 443.90170000000006, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "performance and scalability testing are recommended.", "bbox": {"l": 136.8, "t": 446.74829, "r": 377.29614, "b": 455.96127, "coord_origin": "TOPLEFT"}}]}, "text": "After the row permissions and column masks are designed and implemented, adequate performance and scalability testing are recommended."}, {"label": "section_header", "id": 5, "page_no": 122, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 64.4524917602539, "t": 483.275146484375, "r": 510.04889, "b": 500.006103515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9643033742904663, "cells": [{"id": 9, "text": "6.7", "bbox": {"l": 64.800003, "t": 484.4407, "r": 87.161385, "b": 499.2037, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Exclusive lock to implement RCAC (availability issues)", "bbox": {"l": 91.633644, "t": 484.4407, "r": 510.04889, "b": 499.2037, "coord_origin": "TOPLEFT"}}]}, "text": "6.7 Exclusive lock to implement RCAC (availability issues)"}, {"label": "text", "id": 6, "page_no": 122, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.74249267578125, "t": 516.0097045898438, "r": 547.24969, "b": 549.92133, "coord_origin": "TOPLEFT"}, "confidence": 0.9808005094528198, "cells": [{"id": 11, "text": "When defining permissions or enabling RCAC, an exclusive lock on the base table is ", "bbox": {"l": 136.8, "t": 516.70871, "r": 512.02203, "b": 525.92169, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "obtained. The impact to other applications depends on the order of create permission and the ", "bbox": {"l": 136.8, "t": 528.70853, "r": 547.24969, "b": 537.92152, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "alter table to activate RCAC.", "bbox": {"l": 136.8, "t": 540.7083299999999, "r": 261.91846, "b": 549.92133, "coord_origin": "TOPLEFT"}}]}, "text": "When defining permissions or enabling RCAC, an exclusive lock on the base table is obtained. The impact to other applications depends on the order of create permission and the alter table to activate RCAC."}, {"label": "text", "id": 7, "page_no": 122, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.18580627441406, "t": 561.9881591796875, "r": 283.20502, "b": 572.285888671875, "coord_origin": "TOPLEFT"}, "confidence": 0.8252715468406677, "cells": [{"id": 14, "text": "Consider the following scenarios:", "bbox": {"l": 136.8, "t": 562.72789, "r": 283.20502, "b": 571.94089, "coord_origin": "TOPLEFT"}}]}, "text": "Consider the following scenarios:"}, {"label": "list_item", "id": 8, "page_no": 122, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.5818634033203, "t": 578.6119995117188, "r": 464.85846, "b": 588.9207, "coord_origin": "TOPLEFT"}, "confidence": 0.9519445896148682, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 579.8571000000001, "r": 141.78, "b": 588.63185, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Scenario 1: Adding permissions and RCAC is not enabled on the table:", "bbox": {"l": 151.20016, "t": 579.7076999999999, "r": 464.85846, "b": 588.9207, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Scenario 1: Adding permissions and RCAC is not enabled on the table:"}, {"label": "list_item", "id": 9, "page_no": 122, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 151.1683349609375, "t": 595.9595336914062, "r": 547.40094, "b": 617.96007, "coord_origin": "TOPLEFT"}, "confidence": 0.9689837098121643, "cells": [{"id": 17, "text": "-", "bbox": {"l": 152.03976, "t": 596.74727, "r": 157.61636, "b": 605.96027, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Job 1 reading data from the table (open for input) holds a *SHRRD on the member and ", "bbox": {"l": 165.6003, "t": 596.74727, "r": 547.40094, "b": 605.96027, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "a *SHRRD on the data. ", "bbox": {"l": 165.5993, "t": 608.74707, "r": 271.70319, "b": 617.96007, "coord_origin": "TOPLEFT"}}]}, "text": "-Job 1 reading data from the table (open for input) holds a *SHRRD on the member and a *SHRRD on the data."}, {"label": "list_item", "id": 10, "page_no": 122, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 151.33261108398438, "t": 624.4862670898438, "r": 546.01855, "b": 646.93968, "coord_origin": "TOPLEFT"}, "confidence": 0.972244918346405, "cells": [{"id": 20, "text": "-", "bbox": {"l": 152.03976, "t": 625.7268799999999, "r": 157.59546, "b": 634.93988, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Job 2 adding, updating, or deleting rows from table (open for output) holds a *SHRRD ", "bbox": {"l": 165.59932, "t": 625.7268799999999, "r": 546.01855, "b": 634.93988, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "on the member and a *SHRUPD on the data.", "bbox": {"l": 165.5993, "t": 637.72668, "r": 364.6698, "b": 646.93968, "coord_origin": "TOPLEFT"}}]}, "text": "-Job 2 adding, updating, or deleting rows from table (open for output) holds a *SHRRD on the member and a *SHRUPD on the data."}, {"label": "list_item", "id": 11, "page_no": 122, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 151.21334838867188, "t": 653.9972534179688, "r": 546.81927, "b": 664.3414916992188, "coord_origin": "TOPLEFT"}, "confidence": 0.9548404812812805, "cells": [{"id": 23, "text": "-", "bbox": {"l": 152.03976, "t": 654.7065, "r": 157.61139, "b": 663.91949, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Job 4 allocates the object and gets a *SHRRD on the file and a *EXCLRD on the data.", "bbox": {"l": 165.5993, "t": 654.7065, "r": 546.81927, "b": 663.91949, "coord_origin": "TOPLEFT"}}]}, "text": "-Job 4 allocates the object and gets a *SHRRD on the file and a *EXCLRD on the data."}, {"label": "list_item", "id": 12, "page_no": 122, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 151.15476989746094, "t": 670.9539794921875, "r": 547.16492, "b": 704.958679, "coord_origin": "TOPLEFT"}, "confidence": 0.9793244004249573, "cells": [{"id": 25, "text": "-", "bbox": {"l": 152.03976, "t": 671.7460599999999, "r": 157.61139, "b": 680.95906, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Job 3 attempts to add a permission to the table. Permission is added and the ", "bbox": {"l": 165.5993, "t": 671.7460599999999, "r": 507.56107000000003, "b": 680.95906, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "pseudo-closed cursors for Job1 and Job 2 are closed. Job 4 still holds the *SHRRD on ", "bbox": {"l": 165.5993, "t": 683.74586, "r": 547.16492, "b": 692.95887, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "the file and *EXCLRD on the data. ", "bbox": {"l": 165.5993, "t": 695.745674, "r": 320.09985, "b": 704.958679, "coord_origin": "TOPLEFT"}}]}, "text": "-Job 3 attempts to add a permission to the table. Permission is added and the pseudo-closed cursors for Job1 and Job 2 are closed. Job 4 still holds the *SHRRD on the file and *EXCLRD on the data."}, {"label": "text", "id": 13, "page_no": 122, "cluster": {"id": 13, "label": "text", "bbox": {"l": 150.30223083496094, "t": 711.9512939453125, "r": 545.11029, "b": 734.1187133789062, "coord_origin": "TOPLEFT"}, "confidence": 0.9760500192642212, "cells": [{"id": 29, "text": "The net result from Scenario 1 is that you can add permissions without having to end the ", "bbox": {"l": 151.19914, "t": 712.725487, "r": 545.11029, "b": 721.938492, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "applications that are reading the base table. ", "bbox": {"l": 151.19914, "t": 724.725296, "r": 347.6232, "b": 733.938301, "coord_origin": "TOPLEFT"}}]}, "text": "The net result from Scenario 1 is that you can add permissions without having to end the applications that are reading the base table."}, {"label": "picture", "id": 14, "page_no": 122, "cluster": {"id": 14, "label": "picture", "bbox": {"l": 135.89947509765625, "t": 131.36407470703125, "r": 513.2355346679688, "b": 404.8336486816406, "coord_origin": "TOPLEFT"}, "confidence": 0.9828073978424072, "cells": [{"id": 31, "text": "Native RLA Request", "bbox": {"l": 164.6366, "t": 161.3573, "r": 264.40671, "b": 171.8949, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "RRN", "bbox": {"l": 360.86261, "t": 148.70245, "r": 377.34851, "b": 156.60564999999997, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Record Data", "bbox": {"l": 418.90582, "t": 148.70245, "r": 465.54205, "b": 156.60564999999997, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "1", "bbox": {"l": 381.88269, "t": 163.68988000000002, "r": 386.56366, "b": 171.58385999999996, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "123", "bbox": {"l": 393.94705, "t": 163.46831999999995, "r": 410.56314, "b": 172.27630999999997, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "CAIN", "bbox": {"l": 410.56592, "t": 164.01306, "r": 432.62839, "b": 172.32245, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "aaaaaa456", "bbox": {"l": 432.63208, "t": 163.46831999999995, "r": 482.27261, "b": 172.27630999999997, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "RCAC", "bbox": {"l": 295.24869, "t": 139.88818000000003, "r": 335.90213, "b": 155.69464000000005, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "\u00d7", "bbox": {"l": 295.06409, "t": 158.86370999999997, "r": 305.28674, "b": 176.43517999999995, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "2", "bbox": {"l": 381.88239, "t": 178.64721999999995, "r": 386.56335, "b": 186.5412, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "123", "bbox": {"l": 393.94675, "t": 178.42566, "r": 410.56284, "b": 187.23364000000004, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CAIN", "bbox": {"l": 410.56561, "t": 178.97040000000004, "r": 432.62808, "b": 187.27979000000005, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "bbbbbb456", "bbox": {"l": 432.63177, "t": 178.42566, "r": 482.27231, "b": 187.23364000000004, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "3", "bbox": {"l": 381.88239, "t": 193.63469999999995, "r": 386.56335, "b": 201.52868999999998, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "123", "bbox": {"l": 393.94675, "t": 193.41314999999997, "r": 410.56284, "b": 202.22113000000002, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "CAIN", "bbox": {"l": 410.56561, "t": 193.95789000000002, "r": 432.62808, "b": 202.26727000000005, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "cccccc456", "bbox": {"l": 432.63177, "t": 193.41314999999997, "r": 482.27231, "b": 202.22113000000002, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "4", "bbox": {"l": 381.88239, "t": 208.62285999999995, "r": 386.56335, "b": 216.51684999999998, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "123", "bbox": {"l": 393.9465, "t": 208.40112, "r": 410.56259, "b": 217.20911, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "CAIN", "bbox": {"l": 410.5654, "t": 208.94586000000004, "r": 432.62787, "b": 217.25525000000005, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "dddddd456", "bbox": {"l": 432.63159, "t": 208.40112, "r": 482.27213000000006, "b": 217.20911, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "\u00d7", "bbox": {"l": 295.06409, "t": 187.85344999999995, "r": 305.28674, "b": 205.42493000000002, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "5", "bbox": {"l": 381.88239, "t": 223.57970999999998, "r": 386.56335, "b": 231.47369000000003, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "123", "bbox": {"l": 393.94675, "t": 223.35815000000002, "r": 410.56284, "b": 232.16614000000004, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "CAIN", "bbox": {"l": 410.56561, "t": 223.90288999999996, "r": 432.62808, "b": 232.21227999999996, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "eeeeee456", "bbox": {"l": 432.63177, "t": 223.35815000000002, "r": 482.27231, "b": 232.16614000000004, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "\u0085", "bbox": {"l": 380.19003, "t": 238.56719999999996, "r": 386.56061, "b": 246.46118, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "\u0085", "bbox": {"l": 393.94675, "t": 238.34564, "r": 399.48636, "b": 247.15363000000002, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "\u00d7", "bbox": {"l": 295.06409, "t": 216.84520999999995, "r": 305.28674, "b": 234.41669000000002, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "\u0085", "bbox": {"l": 380.18979, "t": 253.55542000000003, "r": 386.56036, "b": 261.44939999999997, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "\u0085", "bbox": {"l": 393.9465, "t": 253.33385999999996, "r": 399.48611, "b": 262.14185, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "\u0085", "bbox": {"l": 380.18979, "t": 268.51239, "r": 386.56036, "b": 276.40637000000004, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "\u0085", "bbox": {"l": 393.9465, "t": 268.29083, "r": 399.48611, "b": 277.09882000000005, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "\u0085", "bbox": {"l": 380.18979, "t": 283.49985, "r": 386.56036, "b": 291.3938, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "\u0085", "bbox": {"l": 393.9465, "t": 283.27823, "r": 399.48611, "b": 292.08624, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "Row Permission", "bbox": {"l": 145.49409, "t": 259.80902000000003, "r": 224.43881, "b": 270.33429, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": ":", "bbox": {"l": 224.43390000000002, "t": 259.80902000000003, "r": 227.83154, "b": 270.34662000000003, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "WHERE NAME <> \u0091CAIN\u0092", "bbox": {"l": 145.49409, "t": 289.35373, "r": 267.97665, "b": 299.89133, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "s", "bbox": {"l": 304.82001, "t": 255.23577999999998, "r": 309.67026, "b": 266.24114999999995, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "p", "bbox": {"l": 309.68259, "t": 255.23577999999998, "r": 316.18243, "b": 266.24114999999995, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "in", "bbox": {"l": 316.17621, "t": 255.23577999999998, "r": 325.67731, "b": 266.24114999999995, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "thru", "bbox": {"l": 304.45065, "t": 270.00811999999996, "r": 326.05524, "b": 281.01349, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "rec", "bbox": {"l": 296.51059, "t": 284.78042999999997, "r": 311.95633, "b": 295.78583, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "ords", "bbox": {"l": 311.84555, "t": 284.78042999999997, "r": 334.01147, "b": 295.78583, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "\u0085", "bbox": {"l": 380.18979, "t": 298.48804, "r": 386.56036, "b": 306.38199, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "\u0085", "bbox": {"l": 393.9465, "t": 298.26642, "r": 399.48611, "b": 307.07443, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "\u0085", "bbox": {"l": 380.18979, "t": 313.44501, "r": 386.56036, "b": 321.33896, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "\u0085", "bbox": {"l": 393.9465, "t": 313.22339, "r": 399.48611, "b": 322.0314, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "1000001", "bbox": {"l": 353.81491, "t": 328.43283, "r": 386.56885, "b": 336.32678, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "123", "bbox": {"l": 393.9465, "t": 328.21121, "r": 410.56259, "b": 337.01923, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "CAIN", "bbox": {"l": 410.5654, "t": 328.7559499999999, "r": 432.62787, "b": 337.0654, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "vvvvvv456", "bbox": {"l": 432.63159, "t": 328.21121, "r": 482.27213000000006, "b": 337.01923, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "\u00d7", "bbox": {"l": 295.06409, "t": 323.94492, "r": 305.28674, "b": 341.51636, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "1000002", "bbox": {"l": 353.81491, "t": 343.42062, "r": 386.56885, "b": 351.31458, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "123", "bbox": {"l": 393.94669, "t": 343.19901, "r": 410.56277, "b": 352.00702, "coord_origin": "TOPLEFT"}}, {"id": 86, "text": "CAIN", "bbox": {"l": 410.56555, "t": 343.74374, "r": 432.62802000000005, "b": 352.05319, "coord_origin": "TOPLEFT"}}, {"id": 87, "text": "wwwwww456", "bbox": {"l": 432.63170999999994, "t": 343.19901, "r": 482.27224999999993, "b": 352.00702, "coord_origin": "TOPLEFT"}}, {"id": 88, "text": "1000003", "bbox": {"l": 353.81491, "t": 358.37759, "r": 386.56885, "b": 366.27155, "coord_origin": "TOPLEFT"}}, {"id": 89, "text": "123", "bbox": {"l": 393.94669, "t": 358.15598, "r": 410.56277, "b": 366.96399, "coord_origin": "TOPLEFT"}}, {"id": 90, "text": "CAIN", "bbox": {"l": 410.56555, "t": 358.70071, "r": 432.62802000000005, "b": 367.01016, "coord_origin": "TOPLEFT"}}, {"id": 91, "text": "xxxxxx456", "bbox": {"l": 432.63170999999994, "t": 358.15598, "r": 482.27224999999993, "b": 366.96399, "coord_origin": "TOPLEFT"}}, {"id": 92, "text": "GLYPH", "bbox": {"l": 293.21759, "t": 368.69284, "r": 303.44025, "b": 386.26428, "coord_origin": "TOPLEFT"}}, {"id": 93, "text": "\u00d7", "bbox": {"l": 295.06409, "t": 352.53653, "r": 305.28674, "b": 370.10797, "coord_origin": "TOPLEFT"}}, {"id": 94, "text": "1000004", "bbox": {"l": 353.81491, "t": 373.36545, "r": 386.56885, "b": 381.25939999999997, "coord_origin": "TOPLEFT"}}, {"id": 95, "text": "123", "bbox": {"l": 393.94669, "t": 373.14383, "r": 410.56277, "b": 381.95184, "coord_origin": "TOPLEFT"}}, {"id": 96, "text": "BEDOYA", "bbox": {"l": 410.56555, "t": 373.68857, "r": 443.64264, "b": 381.99802, "coord_origin": "TOPLEFT"}}, {"id": 97, "text": "yyyy456", "bbox": {"l": 443.68048, "t": 373.14383, "r": 482.27039, "b": 381.95184, "coord_origin": "TOPLEFT"}}, {"id": 98, "text": "1000005", "bbox": {"l": 353.81583, "t": 388.35287, "r": 386.56976, "b": 396.24683, "coord_origin": "TOPLEFT"}}, {"id": 99, "text": "123", "bbox": {"l": 393.9476, "t": 388.13126, "r": 410.56369, "b": 396.93927, "coord_origin": "TOPLEFT"}}, {"id": 100, "text": "BEDOYA", "bbox": {"l": 410.56647, "t": 388.67599, "r": 443.64354999999995, "b": 396.98544, "coord_origin": "TOPLEFT"}}, {"id": 101, "text": "zzzz456", "bbox": {"l": 443.6814, "t": 388.13126, "r": 482.2713, "b": 396.93927, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 122, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.06326293945312, "t": 70.65892791748047, "r": 547.29565, "b": 116.73127746582031, "coord_origin": "TOPLEFT"}, "confidence": 0.9824259281158447, "cells": [{"id": 2, "text": "Before the record, as identified by the key, is considered available, the RCAC logic must be ", "bbox": {"l": 136.8002, "t": 71.50903000000005, "r": 539.8396, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "run. If the record is rejected by RCAC, the next record in sequence that is permissible must be ", "bbox": {"l": 136.8002, "t": 83.50885000000017, "r": 547.29565, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "identified. This spinning through the records can take a long time and uses many resources, ", "bbox": {"l": 136.8002, "t": 95.50867000000005, "r": 545.24677, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "as shown in Figure 6-24.", "bbox": {"l": 136.8002, "t": 107.50847999999996, "r": 246.12015, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Before the record, as identified by the key, is considered available, the RCAC logic must be run. If the record is rejected by RCAC, the next record in sequence that is permissible must be identified. This spinning through the records can take a long time and uses many resources, as shown in Figure 6-24."}, {"label": "caption", "id": 3, "page_no": 122, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.92271423339844, "t": 407.9793701171875, "r": 341.2294616699219, "b": 417.6308898925781, "coord_origin": "TOPLEFT"}, "confidence": 0.9458103775978088, "cells": [{"id": 6, "text": "Figure 6-24 Native record level access with RCAC", "bbox": {"l": 136.8, "t": 408.73801, "r": 340.54565, "b": 417.06302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-24 Native record level access with RCAC"}, {"label": "text", "id": 4, "page_no": 122, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.81785583496094, "t": 433.958251953125, "r": 525.86151, "b": 456.21856689453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9756483435630798, "cells": [{"id": 7, "text": "After the row permissions and column masks are designed and implemented, adequate ", "bbox": {"l": 136.8, "t": 434.68872, "r": 525.86151, "b": 443.90170000000006, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "performance and scalability testing are recommended.", "bbox": {"l": 136.8, "t": 446.74829, "r": 377.29614, "b": 455.96127, "coord_origin": "TOPLEFT"}}]}, "text": "After the row permissions and column masks are designed and implemented, adequate performance and scalability testing are recommended."}, {"label": "section_header", "id": 5, "page_no": 122, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 64.4524917602539, "t": 483.275146484375, "r": 510.04889, "b": 500.006103515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9643033742904663, "cells": [{"id": 9, "text": "6.7", "bbox": {"l": 64.800003, "t": 484.4407, "r": 87.161385, "b": 499.2037, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Exclusive lock to implement RCAC (availability issues)", "bbox": {"l": 91.633644, "t": 484.4407, "r": 510.04889, "b": 499.2037, "coord_origin": "TOPLEFT"}}]}, "text": "6.7 Exclusive lock to implement RCAC (availability issues)"}, {"label": "text", "id": 6, "page_no": 122, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.74249267578125, "t": 516.0097045898438, "r": 547.24969, "b": 549.92133, "coord_origin": "TOPLEFT"}, "confidence": 0.9808005094528198, "cells": [{"id": 11, "text": "When defining permissions or enabling RCAC, an exclusive lock on the base table is ", "bbox": {"l": 136.8, "t": 516.70871, "r": 512.02203, "b": 525.92169, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "obtained. The impact to other applications depends on the order of create permission and the ", "bbox": {"l": 136.8, "t": 528.70853, "r": 547.24969, "b": 537.92152, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "alter table to activate RCAC.", "bbox": {"l": 136.8, "t": 540.7083299999999, "r": 261.91846, "b": 549.92133, "coord_origin": "TOPLEFT"}}]}, "text": "When defining permissions or enabling RCAC, an exclusive lock on the base table is obtained. The impact to other applications depends on the order of create permission and the alter table to activate RCAC."}, {"label": "text", "id": 7, "page_no": 122, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.18580627441406, "t": 561.9881591796875, "r": 283.20502, "b": 572.285888671875, "coord_origin": "TOPLEFT"}, "confidence": 0.8252715468406677, "cells": [{"id": 14, "text": "Consider the following scenarios:", "bbox": {"l": 136.8, "t": 562.72789, "r": 283.20502, "b": 571.94089, "coord_origin": "TOPLEFT"}}]}, "text": "Consider the following scenarios:"}, {"label": "list_item", "id": 8, "page_no": 122, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.5818634033203, "t": 578.6119995117188, "r": 464.85846, "b": 588.9207, "coord_origin": "TOPLEFT"}, "confidence": 0.9519445896148682, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 579.8571000000001, "r": 141.78, "b": 588.63185, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Scenario 1: Adding permissions and RCAC is not enabled on the table:", "bbox": {"l": 151.20016, "t": 579.7076999999999, "r": 464.85846, "b": 588.9207, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Scenario 1: Adding permissions and RCAC is not enabled on the table:"}, {"label": "list_item", "id": 9, "page_no": 122, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 151.1683349609375, "t": 595.9595336914062, "r": 547.40094, "b": 617.96007, "coord_origin": "TOPLEFT"}, "confidence": 0.9689837098121643, "cells": [{"id": 17, "text": "-", "bbox": {"l": 152.03976, "t": 596.74727, "r": 157.61636, "b": 605.96027, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Job 1 reading data from the table (open for input) holds a *SHRRD on the member and ", "bbox": {"l": 165.6003, "t": 596.74727, "r": 547.40094, "b": 605.96027, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "a *SHRRD on the data. ", "bbox": {"l": 165.5993, "t": 608.74707, "r": 271.70319, "b": 617.96007, "coord_origin": "TOPLEFT"}}]}, "text": "-Job 1 reading data from the table (open for input) holds a *SHRRD on the member and a *SHRRD on the data."}, {"label": "list_item", "id": 10, "page_no": 122, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 151.33261108398438, "t": 624.4862670898438, "r": 546.01855, "b": 646.93968, "coord_origin": "TOPLEFT"}, "confidence": 0.972244918346405, "cells": [{"id": 20, "text": "-", "bbox": {"l": 152.03976, "t": 625.7268799999999, "r": 157.59546, "b": 634.93988, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Job 2 adding, updating, or deleting rows from table (open for output) holds a *SHRRD ", "bbox": {"l": 165.59932, "t": 625.7268799999999, "r": 546.01855, "b": 634.93988, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "on the member and a *SHRUPD on the data.", "bbox": {"l": 165.5993, "t": 637.72668, "r": 364.6698, "b": 646.93968, "coord_origin": "TOPLEFT"}}]}, "text": "-Job 2 adding, updating, or deleting rows from table (open for output) holds a *SHRRD on the member and a *SHRUPD on the data."}, {"label": "list_item", "id": 11, "page_no": 122, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 151.21334838867188, "t": 653.9972534179688, "r": 546.81927, "b": 664.3414916992188, "coord_origin": "TOPLEFT"}, "confidence": 0.9548404812812805, "cells": [{"id": 23, "text": "-", "bbox": {"l": 152.03976, "t": 654.7065, "r": 157.61139, "b": 663.91949, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Job 4 allocates the object and gets a *SHRRD on the file and a *EXCLRD on the data.", "bbox": {"l": 165.5993, "t": 654.7065, "r": 546.81927, "b": 663.91949, "coord_origin": "TOPLEFT"}}]}, "text": "-Job 4 allocates the object and gets a *SHRRD on the file and a *EXCLRD on the data."}, {"label": "list_item", "id": 12, "page_no": 122, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 151.15476989746094, "t": 670.9539794921875, "r": 547.16492, "b": 704.958679, "coord_origin": "TOPLEFT"}, "confidence": 0.9793244004249573, "cells": [{"id": 25, "text": "-", "bbox": {"l": 152.03976, "t": 671.7460599999999, "r": 157.61139, "b": 680.95906, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Job 3 attempts to add a permission to the table. Permission is added and the ", "bbox": {"l": 165.5993, "t": 671.7460599999999, "r": 507.56107000000003, "b": 680.95906, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "pseudo-closed cursors for Job1 and Job 2 are closed. Job 4 still holds the *SHRRD on ", "bbox": {"l": 165.5993, "t": 683.74586, "r": 547.16492, "b": 692.95887, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "the file and *EXCLRD on the data. ", "bbox": {"l": 165.5993, "t": 695.745674, "r": 320.09985, "b": 704.958679, "coord_origin": "TOPLEFT"}}]}, "text": "-Job 3 attempts to add a permission to the table. Permission is added and the pseudo-closed cursors for Job1 and Job 2 are closed. Job 4 still holds the *SHRRD on the file and *EXCLRD on the data."}, {"label": "text", "id": 13, "page_no": 122, "cluster": {"id": 13, "label": "text", "bbox": {"l": 150.30223083496094, "t": 711.9512939453125, "r": 545.11029, "b": 734.1187133789062, "coord_origin": "TOPLEFT"}, "confidence": 0.9760500192642212, "cells": [{"id": 29, "text": "The net result from Scenario 1 is that you can add permissions without having to end the ", "bbox": {"l": 151.19914, "t": 712.725487, "r": 545.11029, "b": 721.938492, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "applications that are reading the base table. ", "bbox": {"l": 151.19914, "t": 724.725296, "r": 347.6232, "b": 733.938301, "coord_origin": "TOPLEFT"}}]}, "text": "The net result from Scenario 1 is that you can add permissions without having to end the applications that are reading the base table."}, {"label": "picture", "id": 14, "page_no": 122, "cluster": {"id": 14, "label": "picture", "bbox": {"l": 135.89947509765625, "t": 131.36407470703125, "r": 513.2355346679688, "b": 404.8336486816406, "coord_origin": "TOPLEFT"}, "confidence": 0.9828073978424072, "cells": [{"id": 31, "text": "Native RLA Request", "bbox": {"l": 164.6366, "t": 161.3573, "r": 264.40671, "b": 171.8949, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "RRN", "bbox": {"l": 360.86261, "t": 148.70245, "r": 377.34851, "b": 156.60564999999997, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Record Data", "bbox": {"l": 418.90582, "t": 148.70245, "r": 465.54205, "b": 156.60564999999997, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "1", "bbox": {"l": 381.88269, "t": 163.68988000000002, "r": 386.56366, "b": 171.58385999999996, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "123", "bbox": {"l": 393.94705, "t": 163.46831999999995, "r": 410.56314, "b": 172.27630999999997, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "CAIN", "bbox": {"l": 410.56592, "t": 164.01306, "r": 432.62839, "b": 172.32245, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "aaaaaa456", "bbox": {"l": 432.63208, "t": 163.46831999999995, "r": 482.27261, "b": 172.27630999999997, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "RCAC", "bbox": {"l": 295.24869, "t": 139.88818000000003, "r": 335.90213, "b": 155.69464000000005, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "\u00d7", "bbox": {"l": 295.06409, "t": 158.86370999999997, "r": 305.28674, "b": 176.43517999999995, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "2", "bbox": {"l": 381.88239, "t": 178.64721999999995, "r": 386.56335, "b": 186.5412, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "123", "bbox": {"l": 393.94675, "t": 178.42566, "r": 410.56284, "b": 187.23364000000004, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CAIN", "bbox": {"l": 410.56561, "t": 178.97040000000004, "r": 432.62808, "b": 187.27979000000005, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "bbbbbb456", "bbox": {"l": 432.63177, "t": 178.42566, "r": 482.27231, "b": 187.23364000000004, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "3", "bbox": {"l": 381.88239, "t": 193.63469999999995, "r": 386.56335, "b": 201.52868999999998, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "123", "bbox": {"l": 393.94675, "t": 193.41314999999997, "r": 410.56284, "b": 202.22113000000002, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "CAIN", "bbox": {"l": 410.56561, "t": 193.95789000000002, "r": 432.62808, "b": 202.26727000000005, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "cccccc456", "bbox": {"l": 432.63177, "t": 193.41314999999997, "r": 482.27231, "b": 202.22113000000002, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "4", "bbox": {"l": 381.88239, "t": 208.62285999999995, "r": 386.56335, "b": 216.51684999999998, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "123", "bbox": {"l": 393.9465, "t": 208.40112, "r": 410.56259, "b": 217.20911, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "CAIN", "bbox": {"l": 410.5654, "t": 208.94586000000004, "r": 432.62787, "b": 217.25525000000005, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "dddddd456", "bbox": {"l": 432.63159, "t": 208.40112, "r": 482.27213000000006, "b": 217.20911, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "\u00d7", "bbox": {"l": 295.06409, "t": 187.85344999999995, "r": 305.28674, "b": 205.42493000000002, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "5", "bbox": {"l": 381.88239, "t": 223.57970999999998, "r": 386.56335, "b": 231.47369000000003, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "123", "bbox": {"l": 393.94675, "t": 223.35815000000002, "r": 410.56284, "b": 232.16614000000004, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "CAIN", "bbox": {"l": 410.56561, "t": 223.90288999999996, "r": 432.62808, "b": 232.21227999999996, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "eeeeee456", "bbox": {"l": 432.63177, "t": 223.35815000000002, "r": 482.27231, "b": 232.16614000000004, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "\u0085", "bbox": {"l": 380.19003, "t": 238.56719999999996, "r": 386.56061, "b": 246.46118, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "\u0085", "bbox": {"l": 393.94675, "t": 238.34564, "r": 399.48636, "b": 247.15363000000002, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "\u00d7", "bbox": {"l": 295.06409, "t": 216.84520999999995, "r": 305.28674, "b": 234.41669000000002, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "\u0085", "bbox": {"l": 380.18979, "t": 253.55542000000003, "r": 386.56036, "b": 261.44939999999997, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "\u0085", "bbox": {"l": 393.9465, "t": 253.33385999999996, "r": 399.48611, "b": 262.14185, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "\u0085", "bbox": {"l": 380.18979, "t": 268.51239, "r": 386.56036, "b": 276.40637000000004, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "\u0085", "bbox": {"l": 393.9465, "t": 268.29083, "r": 399.48611, "b": 277.09882000000005, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "\u0085", "bbox": {"l": 380.18979, "t": 283.49985, "r": 386.56036, "b": 291.3938, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "\u0085", "bbox": {"l": 393.9465, "t": 283.27823, "r": 399.48611, "b": 292.08624, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "Row Permission", "bbox": {"l": 145.49409, "t": 259.80902000000003, "r": 224.43881, "b": 270.33429, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": ":", "bbox": {"l": 224.43390000000002, "t": 259.80902000000003, "r": 227.83154, "b": 270.34662000000003, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "WHERE NAME <> \u0091CAIN\u0092", "bbox": {"l": 145.49409, "t": 289.35373, "r": 267.97665, "b": 299.89133, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "s", "bbox": {"l": 304.82001, "t": 255.23577999999998, "r": 309.67026, "b": 266.24114999999995, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "p", "bbox": {"l": 309.68259, "t": 255.23577999999998, "r": 316.18243, "b": 266.24114999999995, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "in", "bbox": {"l": 316.17621, "t": 255.23577999999998, "r": 325.67731, "b": 266.24114999999995, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "thru", "bbox": {"l": 304.45065, "t": 270.00811999999996, "r": 326.05524, "b": 281.01349, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "rec", "bbox": {"l": 296.51059, "t": 284.78042999999997, "r": 311.95633, "b": 295.78583, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "ords", "bbox": {"l": 311.84555, "t": 284.78042999999997, "r": 334.01147, "b": 295.78583, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "\u0085", "bbox": {"l": 380.18979, "t": 298.48804, "r": 386.56036, "b": 306.38199, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "\u0085", "bbox": {"l": 393.9465, "t": 298.26642, "r": 399.48611, "b": 307.07443, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "\u0085", "bbox": {"l": 380.18979, "t": 313.44501, "r": 386.56036, "b": 321.33896, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "\u0085", "bbox": {"l": 393.9465, "t": 313.22339, "r": 399.48611, "b": 322.0314, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "1000001", "bbox": {"l": 353.81491, "t": 328.43283, "r": 386.56885, "b": 336.32678, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "123", "bbox": {"l": 393.9465, "t": 328.21121, "r": 410.56259, "b": 337.01923, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "CAIN", "bbox": {"l": 410.5654, "t": 328.7559499999999, "r": 432.62787, "b": 337.0654, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "vvvvvv456", "bbox": {"l": 432.63159, "t": 328.21121, "r": 482.27213000000006, "b": 337.01923, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "\u00d7", "bbox": {"l": 295.06409, "t": 323.94492, "r": 305.28674, "b": 341.51636, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "1000002", "bbox": {"l": 353.81491, "t": 343.42062, "r": 386.56885, "b": 351.31458, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "123", "bbox": {"l": 393.94669, "t": 343.19901, "r": 410.56277, "b": 352.00702, "coord_origin": "TOPLEFT"}}, {"id": 86, "text": "CAIN", "bbox": {"l": 410.56555, "t": 343.74374, "r": 432.62802000000005, "b": 352.05319, "coord_origin": "TOPLEFT"}}, {"id": 87, "text": "wwwwww456", "bbox": {"l": 432.63170999999994, "t": 343.19901, "r": 482.27224999999993, "b": 352.00702, "coord_origin": "TOPLEFT"}}, {"id": 88, "text": "1000003", "bbox": {"l": 353.81491, "t": 358.37759, "r": 386.56885, "b": 366.27155, "coord_origin": "TOPLEFT"}}, {"id": 89, "text": "123", "bbox": {"l": 393.94669, "t": 358.15598, "r": 410.56277, "b": 366.96399, "coord_origin": "TOPLEFT"}}, {"id": 90, "text": "CAIN", "bbox": {"l": 410.56555, "t": 358.70071, "r": 432.62802000000005, "b": 367.01016, "coord_origin": "TOPLEFT"}}, {"id": 91, "text": "xxxxxx456", "bbox": {"l": 432.63170999999994, "t": 358.15598, "r": 482.27224999999993, "b": 366.96399, "coord_origin": "TOPLEFT"}}, {"id": 92, "text": "GLYPH", "bbox": {"l": 293.21759, "t": 368.69284, "r": 303.44025, "b": 386.26428, "coord_origin": "TOPLEFT"}}, {"id": 93, "text": "\u00d7", "bbox": {"l": 295.06409, "t": 352.53653, "r": 305.28674, "b": 370.10797, "coord_origin": "TOPLEFT"}}, {"id": 94, "text": "1000004", "bbox": {"l": 353.81491, "t": 373.36545, "r": 386.56885, "b": 381.25939999999997, "coord_origin": "TOPLEFT"}}, {"id": 95, "text": "123", "bbox": {"l": 393.94669, "t": 373.14383, "r": 410.56277, "b": 381.95184, "coord_origin": "TOPLEFT"}}, {"id": 96, "text": "BEDOYA", "bbox": {"l": 410.56555, "t": 373.68857, "r": 443.64264, "b": 381.99802, "coord_origin": "TOPLEFT"}}, {"id": 97, "text": "yyyy456", "bbox": {"l": 443.68048, "t": 373.14383, "r": 482.27039, "b": 381.95184, "coord_origin": "TOPLEFT"}}, {"id": 98, "text": "1000005", "bbox": {"l": 353.81583, "t": 388.35287, "r": 386.56976, "b": 396.24683, "coord_origin": "TOPLEFT"}}, {"id": 99, "text": "123", "bbox": {"l": 393.9476, "t": 388.13126, "r": 410.56369, "b": 396.93927, "coord_origin": "TOPLEFT"}}, {"id": 100, "text": "BEDOYA", "bbox": {"l": 410.56647, "t": 388.67599, "r": 443.64354999999995, "b": 396.98544, "coord_origin": "TOPLEFT"}}, {"id": 101, "text": "zzzz456", "bbox": {"l": 443.6814, "t": 388.13126, "r": 482.2713, "b": 396.93927, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 122, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 370.56109619140625, "t": 754.820068359375, "r": 517.96918, "b": 763.9142456054688, "coord_origin": "TOPLEFT"}, "confidence": 0.9531034231185913, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 371.28, "t": 755.538002, "r": 517.96918, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 122, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.158935546875, "t": 754.1790161132812, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9219108819961548, "cells": [{"id": 1, "text": "107", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "107"}]}}, {"page_no": 123, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "108 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "GLYPH", "bbox": {"l": 136.8, "t": 71.65808000000015, "r": 141.78, "b": 80.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Scenario 2: Altering a table to activate RCAC requires that all applications using the table ", "bbox": {"l": 151.20016, "t": 71.50867000000005, "r": 547.22571, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "be ended. The alter table requires exclusive use of the table.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 417.98367, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 100.6377, "r": 141.78, "b": 109.41247999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Scenario 3: Altering the table to activate RCAC before the permissions are added. The ", "bbox": {"l": 151.20016, "t": 100.48828000000003, "r": 535.80072, "b": 109.70129000000009, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "alter table requires exclusive use of the table, as in scenario 2. All applications must be ", "bbox": {"l": 151.20016, "t": 112.48810000000014, "r": 536.8244, "b": 121.70110999999997, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "ended to perform this alter. After the alter is complete, any applications trying to read data ", "bbox": {"l": 151.20018, "t": 124.48792000000003, "r": 547.35034, "b": 133.70092999999997, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "do not get any results, and attempts to insert new rows returns the following message:", "bbox": {"l": 151.20018, "t": 136.48773000000006, "r": 531.30865, "b": 145.70074, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "SQ20471] INSERT or UPDATE does not satisfy row permissions. ", "bbox": {"l": 151.20018, "t": 153.67669999999998, "r": 451.01605, "b": 162.45147999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "To create a permission in this case requires that you end all the applications, unlike ", "bbox": {"l": 151.20018, "t": 170.50707999999997, "r": 520.22693, "b": 179.72009000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "scenario 1 where permissions can be added while the applications were active. In this ", "bbox": {"l": 151.20018, "t": 182.50689999999997, "r": 532.72491, "b": 191.71991000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "case, the applications must be ended to run the create permission.", "bbox": {"l": 151.20016, "t": 194.50671, "r": 445.84579, "b": 203.71973000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "6.8", "bbox": {"l": 64.800003, "t": 232.20068000000003, "r": 87.224396, "b": 246.96367999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Avoiding propagation of masked data", "bbox": {"l": 91.709259, "t": 232.20068000000003, "r": 380.35474, "b": 246.96367999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Operations such as insert or update into a table with active column access control can fail if ", "bbox": {"l": 136.8, "t": 264.52855999999997, "r": 542.45679, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "the input data is masked data. This can happen when data to be inserted or updated contains ", "bbox": {"l": 136.8, "t": 276.52837999999997, "r": 547.30225, "b": 285.74139, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "the masked value as a result of a ", "bbox": {"l": 136.8, "t": 288.52823, "r": 285.78268, "b": 297.74120999999997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "SELECT", "bbox": {"l": 285.77969, "t": 288.67761, "r": 315.77921, "b": 297.50219999999996, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": " from a table with active column access control.", "bbox": {"l": 315.77921, "t": 288.52823, "r": 524.6864, "b": 297.74120999999997, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "For example, assume TABLE1 and TABLE2 have active column access control and for insert, ", "bbox": {"l": 136.799, "t": 310.48804, "r": 547.19684, "b": 319.7010200000001, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "selecting data from TABLE2 returns the masked data. The following INSERT returns an error:", "bbox": {"l": 136.799, "t": 322.48785, "r": 547.17798, "b": 331.70084, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "INSERT INTO TABLE1 SELECT * FROM TABLE2", "bbox": {"l": 136.799, "t": 339.67682, "r": 331.6763, "b": 348.4516, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "The masked data that is returned from the ", "bbox": {"l": 136.799, "t": 361.48724, "r": 325.64349, "b": 370.70023, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "SELECT * FROM TABLE2", "bbox": {"l": 325.7392, "t": 361.63662999999997, "r": 425.638, "b": 370.46121, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": " might not be valid input ", "bbox": {"l": 425.69876, "t": 361.48724, "r": 533.77673, "b": 370.70023, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "data for TABLE1 because of data type or column check constraint.", "bbox": {"l": 136.79898, "t": 373.48706, "r": 428.83823, "b": 382.70004, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "There are two ways to prevent this situation from happening: Define a check constraint or ", "bbox": {"l": 136.79898, "t": 395.50661999999994, "r": 532.65228, "b": 404.7196, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "create a before trigger. ", "bbox": {"l": 136.79898, "t": 407.50644000000005, "r": 240.03132999999997, "b": 416.71942, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "6.8.1", "bbox": {"l": 64.800003, "t": 437.33475, "r": 94.18383, "b": 449.32272, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Check constraint solution", "bbox": {"l": 97.856804, "t": 437.33475, "r": 260.10202, "b": 449.32272, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "One way to prevent this problem is to define a check constraint.", "bbox": {"l": 136.8, "t": 463.48874, "r": 416.49878, "b": 472.70172, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "As part of RCAC, new SQL syntax is provided to allow an action to be performed when a ", "bbox": {"l": 136.8, "t": 485.5083, "r": 530.50873, "b": 494.72128, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "violation of the check constraints check condition occurs instead of giving that error. However, ", "bbox": {"l": 136.8, "t": 497.50812, "r": 547.25665, "b": 506.7211, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "if the check condition is still not met after the action, a hard error is returned. A check ", "bbox": {"l": 136.8, "t": 509.50793, "r": 513.95343, "b": 518.72092, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "constraint with the new on-violation-clause is allowed on both the ", "bbox": {"l": 136.8, "t": 521.50775, "r": 426.2395, "b": 530.72073, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "CREATE TABLE", "bbox": {"l": 426.23962, "t": 521.65714, "r": 486.1788900000001, "b": 530.48172, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": " and ", "bbox": {"l": 486.1799, "t": 521.50775, "r": 508.43851, "b": 530.72073, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ALTER ", "bbox": {"l": 508.4395099999999, "t": 521.65714, "r": 538.37927, "b": 530.48172, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "TABLE", "bbox": {"l": 136.80002, "t": 533.65695, "r": 161.75978, "b": 542.4815100000001, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": " statements.", "bbox": {"l": 161.75978, "t": 533.5075400000001, "r": 216.09458999999998, "b": 542.72055, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "In the Example 6-4, the mask is defined to return a value of \u2019XXX-XX-nnnn\u2019 for any query that ", "bbox": {"l": 136.80002, "t": 555.52711, "r": 547.17096, "b": 564.74011, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "is not done by a user profile in the DBMGR group. The constraint checks that the column SSN ", "bbox": {"l": 136.80002, "t": 567.52692, "r": 547.2804, "b": 576.73991, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "does not have the masked value.", "bbox": {"l": 136.80002, "t": 579.5267200000001, "r": 282.49396, "b": 588.73972, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Example 6-4 Check constraint to avoid masked data", "bbox": {"l": 64.800003, "t": 601.5178999999999, "r": 276.75806, "b": 609.84291, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "CREATE SCHEMA MY_LIB", "bbox": {"l": 64.800003, "t": 618.6780200000001, "r": 164.69879, "b": 627.45277, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "SET SCHEMA MY_LIB", "bbox": {"l": 64.800003, "t": 630.67783, "r": 149.69904, "b": 639.45258, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "CREATE TABLE MY_LIB.EMP_INFO", "bbox": {"l": 64.800003, "t": 642.67763, "r": 204.71805, "b": 651.45238, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "(COL1_name CHAR(10) WITH DEFAULT 'DEFAULT',", "bbox": {"l": 119.66983, "t": 654.67743, "r": 414.59515, "b": 663.45218, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "COL2_ssn CHAR(11) WITH DEFAULT 'DEFAULT')", "bbox": {"l": 126.86674, "t": 666.67724, "r": 409.61517, "b": 675.452, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "CREATE MASK MASK_ssn ON MY_LIB.EMP_INFO", "bbox": {"l": 64.800003, "t": 678.67705, "r": 259.67731, "b": 687.45181, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "FOR COLUMN COL2_ssn RETURN", "bbox": {"l": 64.800003, "t": 690.67686, "r": 194.6983, "b": 699.4516140000001, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "CASE", "bbox": {"l": 64.800003, "t": 702.676666, "r": 84.77977, "b": 711.451424, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": " WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBMGR' ) = 1", "bbox": {"l": 64.800003, "t": 714.676476, "r": 359.63589, "b": 723.451233, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": " THEN COL2_ssn", "bbox": {"l": 64.800003, "t": 726.676285, "r": 139.73904, "b": 735.451042, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.37716674804688, "t": 754.4281616210938, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9158027768135071, "cells": [{"id": 0, "text": "108 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 98.70913696289062, "t": 754.5992431640625, "r": 339.81958, "b": 764.000732421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9243242740631104, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 135.47494506835938, "t": 70.6369857788086, "r": 547.22571, "b": 92.73275756835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9781896471977234, "cells": [{"id": 2, "text": "GLYPH", "bbox": {"l": 136.8, "t": 71.65808000000015, "r": 141.78, "b": 80.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Scenario 2: Altering a table to activate RCAC requires that all applications using the table ", "bbox": {"l": 151.20016, "t": 71.50867000000005, "r": 547.22571, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "be ended. The alter table requires exclusive use of the table.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 417.98367, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "list_item", "bbox": {"l": 135.47486877441406, "t": 99.36483764648438, "r": 547.35034, "b": 145.75274658203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9809828400611877, "cells": [{"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 100.6377, "r": 141.78, "b": 109.41247999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Scenario 3: Altering the table to activate RCAC before the permissions are added. The ", "bbox": {"l": 151.20016, "t": 100.48828000000003, "r": 535.80072, "b": 109.70129000000009, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "alter table requires exclusive use of the table, as in scenario 2. All applications must be ", "bbox": {"l": 151.20016, "t": 112.48810000000014, "r": 536.8244, "b": 121.70110999999997, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "ended to perform this alter. After the alter is complete, any applications trying to read data ", "bbox": {"l": 151.20018, "t": 124.48792000000003, "r": 547.35034, "b": 133.70092999999997, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "do not get any results, and attempts to insert new rows returns the following message:", "bbox": {"l": 151.20018, "t": 136.48773000000006, "r": 531.30865, "b": 145.70074, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 150.78724670410156, "t": 152.71084594726562, "r": 451.01605, "b": 162.89410400390625, "coord_origin": "TOPLEFT"}, "confidence": 0.7630197405815125, "cells": [{"id": 10, "text": "SQ20471] INSERT or UPDATE does not satisfy row permissions. ", "bbox": {"l": 151.20018, "t": 153.67669999999998, "r": 451.01605, "b": 162.45147999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 150.4237060546875, "t": 169.4068603515625, "r": 532.72491, "b": 203.71973000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9614198207855225, "cells": [{"id": 11, "text": "To create a permission in this case requires that you end all the applications, unlike ", "bbox": {"l": 151.20018, "t": 170.50707999999997, "r": 520.22693, "b": 179.72009000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "scenario 1 where permissions can be added while the applications were active. In this ", "bbox": {"l": 151.20018, "t": 182.50689999999997, "r": 532.72491, "b": 191.71991000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "case, the applications must be ended to run the create permission.", "bbox": {"l": 151.20016, "t": 194.50671, "r": 445.84579, "b": 203.71973000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "section_header", "bbox": {"l": 64.3337173461914, "t": 230.51942443847656, "r": 380.35474, "b": 246.96367999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9671851992607117, "cells": [{"id": 14, "text": "6.8", "bbox": {"l": 64.800003, "t": 232.20068000000003, "r": 87.224396, "b": 246.96367999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Avoiding propagation of masked data", "bbox": {"l": 91.709259, "t": 232.20068000000003, "r": 380.35474, "b": 246.96367999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 135.83189392089844, "t": 264.0419616699219, "r": 547.30225, "b": 297.74120999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9809823036193848, "cells": [{"id": 16, "text": "Operations such as insert or update into a table with active column access control can fail if ", "bbox": {"l": 136.8, "t": 264.52855999999997, "r": 542.45679, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "the input data is masked data. This can happen when data to be inserted or updated contains ", "bbox": {"l": 136.8, "t": 276.52837999999997, "r": 547.30225, "b": 285.74139, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "the masked value as a result of a ", "bbox": {"l": 136.8, "t": 288.52823, "r": 285.78268, "b": 297.74120999999997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "SELECT", "bbox": {"l": 285.77969, "t": 288.67761, "r": 315.77921, "b": 297.50219999999996, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": " from a table with active column access control.", "bbox": {"l": 315.77921, "t": 288.52823, "r": 524.6864, "b": 297.74120999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 136.41940307617188, "t": 309.37554931640625, "r": 547.19684, "b": 331.70084, "coord_origin": "TOPLEFT"}, "confidence": 0.9635169506072998, "cells": [{"id": 21, "text": "For example, assume TABLE1 and TABLE2 have active column access control and for insert, ", "bbox": {"l": 136.799, "t": 310.48804, "r": 547.19684, "b": 319.7010200000001, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "selecting data from TABLE2 returns the masked data. The following INSERT returns an error:", "bbox": {"l": 136.799, "t": 322.48785, "r": 547.17798, "b": 331.70084, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 136.799, "t": 339.67682, "r": 331.6763, "b": 348.4516, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 23, "text": "INSERT INTO TABLE1 SELECT * FROM TABLE2", "bbox": {"l": 136.799, "t": 339.67682, "r": 331.6763, "b": 348.4516, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 135.9666290283203, "t": 360.73516845703125, "r": 533.77673, "b": 382.9076232910156, "coord_origin": "TOPLEFT"}, "confidence": 0.973406195640564, "cells": [{"id": 24, "text": "The masked data that is returned from the ", "bbox": {"l": 136.799, "t": 361.48724, "r": 325.64349, "b": 370.70023, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "SELECT * FROM TABLE2", "bbox": {"l": 325.7392, "t": 361.63662999999997, "r": 425.638, "b": 370.46121, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": " might not be valid input ", "bbox": {"l": 425.69876, "t": 361.48724, "r": 533.77673, "b": 370.70023, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "data for TABLE1 because of data type or column check constraint.", "bbox": {"l": 136.79898, "t": 373.48706, "r": 428.83823, "b": 382.70004, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 135.8269805908203, "t": 394.7623291015625, "r": 532.65228, "b": 417.0003662109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9747862815856934, "cells": [{"id": 28, "text": "There are two ways to prevent this situation from happening: Define a check constraint or ", "bbox": {"l": 136.79898, "t": 395.50661999999994, "r": 532.65228, "b": 404.7196, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "create a before trigger. ", "bbox": {"l": 136.79898, "t": 407.50644000000005, "r": 240.03132999999997, "b": 416.71942, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "section_header", "bbox": {"l": 64.09215545654297, "t": 436.41485595703125, "r": 260.10202, "b": 449.32272, "coord_origin": "TOPLEFT"}, "confidence": 0.9572468996047974, "cells": [{"id": 30, "text": "6.8.1", "bbox": {"l": 64.800003, "t": 437.33475, "r": 94.18383, "b": 449.32272, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Check constraint solution", "bbox": {"l": 97.856804, "t": 437.33475, "r": 260.10202, "b": 449.32272, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 136.16067504882812, "t": 462.88629150390625, "r": 416.49878, "b": 472.83758544921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9524036049842834, "cells": [{"id": 32, "text": "One way to prevent this problem is to define a check constraint.", "bbox": {"l": 136.8, "t": 463.48874, "r": 416.49878, "b": 472.70172, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "text", "bbox": {"l": 135.7001190185547, "t": 484.599365234375, "r": 547.25665, "b": 542.72055, "coord_origin": "TOPLEFT"}, "confidence": 0.9841123223304749, "cells": [{"id": 33, "text": "As part of RCAC, new SQL syntax is provided to allow an action to be performed when a ", "bbox": {"l": 136.8, "t": 485.5083, "r": 530.50873, "b": 494.72128, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "violation of the check constraints check condition occurs instead of giving that error. However, ", "bbox": {"l": 136.8, "t": 497.50812, "r": 547.25665, "b": 506.7211, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "if the check condition is still not met after the action, a hard error is returned. A check ", "bbox": {"l": 136.8, "t": 509.50793, "r": 513.95343, "b": 518.72092, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "constraint with the new on-violation-clause is allowed on both the ", "bbox": {"l": 136.8, "t": 521.50775, "r": 426.2395, "b": 530.72073, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "CREATE TABLE", "bbox": {"l": 426.23962, "t": 521.65714, "r": 486.1788900000001, "b": 530.48172, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": " and ", "bbox": {"l": 486.1799, "t": 521.50775, "r": 508.43851, "b": 530.72073, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ALTER ", "bbox": {"l": 508.4395099999999, "t": 521.65714, "r": 538.37927, "b": 530.48172, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "TABLE", "bbox": {"l": 136.80002, "t": 533.65695, "r": 161.75978, "b": 542.4815100000001, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": " statements.", "bbox": {"l": 161.75978, "t": 533.5075400000001, "r": 216.09458999999998, "b": 542.72055, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "text", "bbox": {"l": 136.0422821044922, "t": 554.6649780273438, "r": 547.2804, "b": 588.73972, "coord_origin": "TOPLEFT"}, "confidence": 0.9792662262916565, "cells": [{"id": 42, "text": "In the Example 6-4, the mask is defined to return a value of \u2019XXX-XX-nnnn\u2019 for any query that ", "bbox": {"l": 136.80002, "t": 555.52711, "r": 547.17096, "b": 564.74011, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "is not done by a user profile in the DBMGR group. The constraint checks that the column SSN ", "bbox": {"l": 136.80002, "t": 567.52692, "r": 547.2804, "b": 576.73991, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "does not have the masked value.", "bbox": {"l": 136.80002, "t": 579.5267200000001, "r": 282.49396, "b": 588.73972, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "caption", "bbox": {"l": 64.23851013183594, "t": 600.50146484375, "r": 277.07000732421875, "b": 610.2802124023438, "coord_origin": "TOPLEFT"}, "confidence": 0.8750464916229248, "cells": [{"id": 45, "text": "Example 6-4 Check constraint to avoid masked data", "bbox": {"l": 64.800003, "t": 601.5178999999999, "r": 276.75806, "b": 609.84291, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "code", "bbox": {"l": 64.16464233398438, "t": 618.1095581054688, "r": 414.59515, "b": 736.5281982421875, "coord_origin": "TOPLEFT"}, "confidence": 0.8303214311599731, "cells": [{"id": 46, "text": "CREATE SCHEMA MY_LIB", "bbox": {"l": 64.800003, "t": 618.6780200000001, "r": 164.69879, "b": 627.45277, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "SET SCHEMA MY_LIB", "bbox": {"l": 64.800003, "t": 630.67783, "r": 149.69904, "b": 639.45258, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "CREATE TABLE MY_LIB.EMP_INFO", "bbox": {"l": 64.800003, "t": 642.67763, "r": 204.71805, "b": 651.45238, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "(COL1_name CHAR(10) WITH DEFAULT 'DEFAULT',", "bbox": {"l": 119.66983, "t": 654.67743, "r": 414.59515, "b": 663.45218, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "COL2_ssn CHAR(11) WITH DEFAULT 'DEFAULT')", "bbox": {"l": 126.86674, "t": 666.67724, "r": 409.61517, "b": 675.452, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "CREATE MASK MASK_ssn ON MY_LIB.EMP_INFO", "bbox": {"l": 64.800003, "t": 678.67705, "r": 259.67731, "b": 687.45181, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "FOR COLUMN COL2_ssn RETURN", "bbox": {"l": 64.800003, "t": 690.67686, "r": 194.6983, "b": 699.4516140000001, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "CASE", "bbox": {"l": 64.800003, "t": 702.676666, "r": 84.77977, "b": 711.451424, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": " WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBMGR' ) = 1", "bbox": {"l": 64.800003, "t": 714.676476, "r": 359.63589, "b": 723.451233, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": " THEN COL2_ssn", "bbox": {"l": 64.800003, "t": 726.676285, "r": 139.73904, "b": 735.451042, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 123, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.37716674804688, "t": 754.4281616210938, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9158027768135071, "cells": [{"id": 0, "text": "108 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "108"}, {"label": "page_footer", "id": 1, "page_no": 123, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.70913696289062, "t": 754.5992431640625, "r": 339.81958, "b": 764.000732421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9243242740631104, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "list_item", "id": 2, "page_no": 123, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.47494506835938, "t": 70.6369857788086, "r": 547.22571, "b": 92.73275756835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9781896471977234, "cells": [{"id": 2, "text": "GLYPH", "bbox": {"l": 136.8, "t": 71.65808000000015, "r": 141.78, "b": 80.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Scenario 2: Altering a table to activate RCAC requires that all applications using the table ", "bbox": {"l": 151.20016, "t": 71.50867000000005, "r": 547.22571, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "be ended. The alter table requires exclusive use of the table.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 417.98367, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Scenario 2: Altering a table to activate RCAC requires that all applications using the table be ended. The alter table requires exclusive use of the table."}, {"label": "list_item", "id": 3, "page_no": 123, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 135.47486877441406, "t": 99.36483764648438, "r": 547.35034, "b": 145.75274658203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9809828400611877, "cells": [{"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 100.6377, "r": 141.78, "b": 109.41247999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Scenario 3: Altering the table to activate RCAC before the permissions are added. The ", "bbox": {"l": 151.20016, "t": 100.48828000000003, "r": 535.80072, "b": 109.70129000000009, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "alter table requires exclusive use of the table, as in scenario 2. All applications must be ", "bbox": {"l": 151.20016, "t": 112.48810000000014, "r": 536.8244, "b": 121.70110999999997, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "ended to perform this alter. After the alter is complete, any applications trying to read data ", "bbox": {"l": 151.20018, "t": 124.48792000000003, "r": 547.35034, "b": 133.70092999999997, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "do not get any results, and attempts to insert new rows returns the following message:", "bbox": {"l": 151.20018, "t": 136.48773000000006, "r": 531.30865, "b": 145.70074, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Scenario 3: Altering the table to activate RCAC before the permissions are added. The alter table requires exclusive use of the table, as in scenario 2. All applications must be ended to perform this alter. After the alter is complete, any applications trying to read data do not get any results, and attempts to insert new rows returns the following message:"}, {"label": "text", "id": 4, "page_no": 123, "cluster": {"id": 4, "label": "text", "bbox": {"l": 150.78724670410156, "t": 152.71084594726562, "r": 451.01605, "b": 162.89410400390625, "coord_origin": "TOPLEFT"}, "confidence": 0.7630197405815125, "cells": [{"id": 10, "text": "SQ20471] INSERT or UPDATE does not satisfy row permissions. ", "bbox": {"l": 151.20018, "t": 153.67669999999998, "r": 451.01605, "b": 162.45147999999995, "coord_origin": "TOPLEFT"}}]}, "text": "SQ20471] INSERT or UPDATE does not satisfy row permissions."}, {"label": "text", "id": 5, "page_no": 123, "cluster": {"id": 5, "label": "text", "bbox": {"l": 150.4237060546875, "t": 169.4068603515625, "r": 532.72491, "b": 203.71973000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9614198207855225, "cells": [{"id": 11, "text": "To create a permission in this case requires that you end all the applications, unlike ", "bbox": {"l": 151.20018, "t": 170.50707999999997, "r": 520.22693, "b": 179.72009000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "scenario 1 where permissions can be added while the applications were active. In this ", "bbox": {"l": 151.20018, "t": 182.50689999999997, "r": 532.72491, "b": 191.71991000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "case, the applications must be ended to run the create permission.", "bbox": {"l": 151.20016, "t": 194.50671, "r": 445.84579, "b": 203.71973000000003, "coord_origin": "TOPLEFT"}}]}, "text": "To create a permission in this case requires that you end all the applications, unlike scenario 1 where permissions can be added while the applications were active. In this case, the applications must be ended to run the create permission."}, {"label": "section_header", "id": 6, "page_no": 123, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 64.3337173461914, "t": 230.51942443847656, "r": 380.35474, "b": 246.96367999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9671851992607117, "cells": [{"id": 14, "text": "6.8", "bbox": {"l": 64.800003, "t": 232.20068000000003, "r": 87.224396, "b": 246.96367999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Avoiding propagation of masked data", "bbox": {"l": 91.709259, "t": 232.20068000000003, "r": 380.35474, "b": 246.96367999999995, "coord_origin": "TOPLEFT"}}]}, "text": "6.8 Avoiding propagation of masked data"}, {"label": "text", "id": 7, "page_no": 123, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.83189392089844, "t": 264.0419616699219, "r": 547.30225, "b": 297.74120999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9809823036193848, "cells": [{"id": 16, "text": "Operations such as insert or update into a table with active column access control can fail if ", "bbox": {"l": 136.8, "t": 264.52855999999997, "r": 542.45679, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "the input data is masked data. This can happen when data to be inserted or updated contains ", "bbox": {"l": 136.8, "t": 276.52837999999997, "r": 547.30225, "b": 285.74139, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "the masked value as a result of a ", "bbox": {"l": 136.8, "t": 288.52823, "r": 285.78268, "b": 297.74120999999997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "SELECT", "bbox": {"l": 285.77969, "t": 288.67761, "r": 315.77921, "b": 297.50219999999996, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": " from a table with active column access control.", "bbox": {"l": 315.77921, "t": 288.52823, "r": 524.6864, "b": 297.74120999999997, "coord_origin": "TOPLEFT"}}]}, "text": "Operations such as insert or update into a table with active column access control can fail if the input data is masked data. This can happen when data to be inserted or updated contains the masked value as a result of a SELECT from a table with active column access control."}, {"label": "text", "id": 8, "page_no": 123, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.41940307617188, "t": 309.37554931640625, "r": 547.19684, "b": 331.70084, "coord_origin": "TOPLEFT"}, "confidence": 0.9635169506072998, "cells": [{"id": 21, "text": "For example, assume TABLE1 and TABLE2 have active column access control and for insert, ", "bbox": {"l": 136.799, "t": 310.48804, "r": 547.19684, "b": 319.7010200000001, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "selecting data from TABLE2 returns the masked data. The following INSERT returns an error:", "bbox": {"l": 136.799, "t": 322.48785, "r": 547.17798, "b": 331.70084, "coord_origin": "TOPLEFT"}}]}, "text": "For example, assume TABLE1 and TABLE2 have active column access control and for insert, selecting data from TABLE2 returns the masked data. The following INSERT returns an error:"}, {"label": "text", "id": 9, "page_no": 123, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.799, "t": 339.67682, "r": 331.6763, "b": 348.4516, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 23, "text": "INSERT INTO TABLE1 SELECT * FROM TABLE2", "bbox": {"l": 136.799, "t": 339.67682, "r": 331.6763, "b": 348.4516, "coord_origin": "TOPLEFT"}}]}, "text": "INSERT INTO TABLE1 SELECT * FROM TABLE2"}, {"label": "text", "id": 10, "page_no": 123, "cluster": {"id": 10, "label": "text", "bbox": {"l": 135.9666290283203, "t": 360.73516845703125, "r": 533.77673, "b": 382.9076232910156, "coord_origin": "TOPLEFT"}, "confidence": 0.973406195640564, "cells": [{"id": 24, "text": "The masked data that is returned from the ", "bbox": {"l": 136.799, "t": 361.48724, "r": 325.64349, "b": 370.70023, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "SELECT * FROM TABLE2", "bbox": {"l": 325.7392, "t": 361.63662999999997, "r": 425.638, "b": 370.46121, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": " might not be valid input ", "bbox": {"l": 425.69876, "t": 361.48724, "r": 533.77673, "b": 370.70023, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "data for TABLE1 because of data type or column check constraint.", "bbox": {"l": 136.79898, "t": 373.48706, "r": 428.83823, "b": 382.70004, "coord_origin": "TOPLEFT"}}]}, "text": "The masked data that is returned from the SELECT * FROM TABLE2 might not be valid input data for TABLE1 because of data type or column check constraint."}, {"label": "text", "id": 11, "page_no": 123, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.8269805908203, "t": 394.7623291015625, "r": 532.65228, "b": 417.0003662109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9747862815856934, "cells": [{"id": 28, "text": "There are two ways to prevent this situation from happening: Define a check constraint or ", "bbox": {"l": 136.79898, "t": 395.50661999999994, "r": 532.65228, "b": 404.7196, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "create a before trigger. ", "bbox": {"l": 136.79898, "t": 407.50644000000005, "r": 240.03132999999997, "b": 416.71942, "coord_origin": "TOPLEFT"}}]}, "text": "There are two ways to prevent this situation from happening: Define a check constraint or create a before trigger."}, {"label": "section_header", "id": 12, "page_no": 123, "cluster": {"id": 12, "label": "section_header", "bbox": {"l": 64.09215545654297, "t": 436.41485595703125, "r": 260.10202, "b": 449.32272, "coord_origin": "TOPLEFT"}, "confidence": 0.9572468996047974, "cells": [{"id": 30, "text": "6.8.1", "bbox": {"l": 64.800003, "t": 437.33475, "r": 94.18383, "b": 449.32272, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Check constraint solution", "bbox": {"l": 97.856804, "t": 437.33475, "r": 260.10202, "b": 449.32272, "coord_origin": "TOPLEFT"}}]}, "text": "6.8.1 Check constraint solution"}, {"label": "text", "id": 13, "page_no": 123, "cluster": {"id": 13, "label": "text", "bbox": {"l": 136.16067504882812, "t": 462.88629150390625, "r": 416.49878, "b": 472.83758544921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9524036049842834, "cells": [{"id": 32, "text": "One way to prevent this problem is to define a check constraint.", "bbox": {"l": 136.8, "t": 463.48874, "r": 416.49878, "b": 472.70172, "coord_origin": "TOPLEFT"}}]}, "text": "One way to prevent this problem is to define a check constraint."}, {"label": "text", "id": 14, "page_no": 123, "cluster": {"id": 14, "label": "text", "bbox": {"l": 135.7001190185547, "t": 484.599365234375, "r": 547.25665, "b": 542.72055, "coord_origin": "TOPLEFT"}, "confidence": 0.9841123223304749, "cells": [{"id": 33, "text": "As part of RCAC, new SQL syntax is provided to allow an action to be performed when a ", "bbox": {"l": 136.8, "t": 485.5083, "r": 530.50873, "b": 494.72128, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "violation of the check constraints check condition occurs instead of giving that error. However, ", "bbox": {"l": 136.8, "t": 497.50812, "r": 547.25665, "b": 506.7211, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "if the check condition is still not met after the action, a hard error is returned. A check ", "bbox": {"l": 136.8, "t": 509.50793, "r": 513.95343, "b": 518.72092, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "constraint with the new on-violation-clause is allowed on both the ", "bbox": {"l": 136.8, "t": 521.50775, "r": 426.2395, "b": 530.72073, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "CREATE TABLE", "bbox": {"l": 426.23962, "t": 521.65714, "r": 486.1788900000001, "b": 530.48172, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": " and ", "bbox": {"l": 486.1799, "t": 521.50775, "r": 508.43851, "b": 530.72073, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ALTER ", "bbox": {"l": 508.4395099999999, "t": 521.65714, "r": 538.37927, "b": 530.48172, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "TABLE", "bbox": {"l": 136.80002, "t": 533.65695, "r": 161.75978, "b": 542.4815100000001, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": " statements.", "bbox": {"l": 161.75978, "t": 533.5075400000001, "r": 216.09458999999998, "b": 542.72055, "coord_origin": "TOPLEFT"}}]}, "text": "As part of RCAC, new SQL syntax is provided to allow an action to be performed when a violation of the check constraints check condition occurs instead of giving that error. However, if the check condition is still not met after the action, a hard error is returned. A check constraint with the new on-violation-clause is allowed on both the CREATE TABLE and ALTER TABLE statements."}, {"label": "text", "id": 15, "page_no": 123, "cluster": {"id": 15, "label": "text", "bbox": {"l": 136.0422821044922, "t": 554.6649780273438, "r": 547.2804, "b": 588.73972, "coord_origin": "TOPLEFT"}, "confidence": 0.9792662262916565, "cells": [{"id": 42, "text": "In the Example 6-4, the mask is defined to return a value of \u2019XXX-XX-nnnn\u2019 for any query that ", "bbox": {"l": 136.80002, "t": 555.52711, "r": 547.17096, "b": 564.74011, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "is not done by a user profile in the DBMGR group. The constraint checks that the column SSN ", "bbox": {"l": 136.80002, "t": 567.52692, "r": 547.2804, "b": 576.73991, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "does not have the masked value.", "bbox": {"l": 136.80002, "t": 579.5267200000001, "r": 282.49396, "b": 588.73972, "coord_origin": "TOPLEFT"}}]}, "text": "In the Example 6-4, the mask is defined to return a value of \u2019XXX-XX-nnnn\u2019 for any query that is not done by a user profile in the DBMGR group. The constraint checks that the column SSN does not have the masked value."}, {"label": "caption", "id": 16, "page_no": 123, "cluster": {"id": 16, "label": "caption", "bbox": {"l": 64.23851013183594, "t": 600.50146484375, "r": 277.07000732421875, "b": 610.2802124023438, "coord_origin": "TOPLEFT"}, "confidence": 0.8750464916229248, "cells": [{"id": 45, "text": "Example 6-4 Check constraint to avoid masked data", "bbox": {"l": 64.800003, "t": 601.5178999999999, "r": 276.75806, "b": 609.84291, "coord_origin": "TOPLEFT"}}]}, "text": "Example 6-4 Check constraint to avoid masked data"}, {"label": "code", "id": 17, "page_no": 123, "cluster": {"id": 17, "label": "code", "bbox": {"l": 64.16464233398438, "t": 618.1095581054688, "r": 414.59515, "b": 736.5281982421875, "coord_origin": "TOPLEFT"}, "confidence": 0.8303214311599731, "cells": [{"id": 46, "text": "CREATE SCHEMA MY_LIB", "bbox": {"l": 64.800003, "t": 618.6780200000001, "r": 164.69879, "b": 627.45277, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "SET SCHEMA MY_LIB", "bbox": {"l": 64.800003, "t": 630.67783, "r": 149.69904, "b": 639.45258, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "CREATE TABLE MY_LIB.EMP_INFO", "bbox": {"l": 64.800003, "t": 642.67763, "r": 204.71805, "b": 651.45238, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "(COL1_name CHAR(10) WITH DEFAULT 'DEFAULT',", "bbox": {"l": 119.66983, "t": 654.67743, "r": 414.59515, "b": 663.45218, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "COL2_ssn CHAR(11) WITH DEFAULT 'DEFAULT')", "bbox": {"l": 126.86674, "t": 666.67724, "r": 409.61517, "b": 675.452, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "CREATE MASK MASK_ssn ON MY_LIB.EMP_INFO", "bbox": {"l": 64.800003, "t": 678.67705, "r": 259.67731, "b": 687.45181, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "FOR COLUMN COL2_ssn RETURN", "bbox": {"l": 64.800003, "t": 690.67686, "r": 194.6983, "b": 699.4516140000001, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "CASE", "bbox": {"l": 64.800003, "t": 702.676666, "r": 84.77977, "b": 711.451424, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": " WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBMGR' ) = 1", "bbox": {"l": 64.800003, "t": 714.676476, "r": 359.63589, "b": 723.451233, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": " THEN COL2_ssn", "bbox": {"l": 64.800003, "t": 726.676285, "r": 139.73904, "b": 735.451042, "coord_origin": "TOPLEFT"}}]}, "text": "CREATE SCHEMA MY_LIB SET SCHEMA MY_LIB CREATE TABLE MY_LIB.EMP_INFO (COL1_name CHAR(10) WITH DEFAULT 'DEFAULT', COL2_ssn CHAR(11) WITH DEFAULT 'DEFAULT') CREATE MASK MASK_ssn ON MY_LIB.EMP_INFO FOR COLUMN COL2_ssn RETURN CASE WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBMGR' ) = 1 THEN COL2_ssn"}], "body": [{"label": "list_item", "id": 2, "page_no": 123, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.47494506835938, "t": 70.6369857788086, "r": 547.22571, "b": 92.73275756835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9781896471977234, "cells": [{"id": 2, "text": "GLYPH", "bbox": {"l": 136.8, "t": 71.65808000000015, "r": 141.78, "b": 80.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Scenario 2: Altering a table to activate RCAC requires that all applications using the table ", "bbox": {"l": 151.20016, "t": 71.50867000000005, "r": 547.22571, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "be ended. The alter table requires exclusive use of the table.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 417.98367, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Scenario 2: Altering a table to activate RCAC requires that all applications using the table be ended. The alter table requires exclusive use of the table."}, {"label": "list_item", "id": 3, "page_no": 123, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 135.47486877441406, "t": 99.36483764648438, "r": 547.35034, "b": 145.75274658203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9809828400611877, "cells": [{"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 100.6377, "r": 141.78, "b": 109.41247999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Scenario 3: Altering the table to activate RCAC before the permissions are added. The ", "bbox": {"l": 151.20016, "t": 100.48828000000003, "r": 535.80072, "b": 109.70129000000009, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "alter table requires exclusive use of the table, as in scenario 2. All applications must be ", "bbox": {"l": 151.20016, "t": 112.48810000000014, "r": 536.8244, "b": 121.70110999999997, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "ended to perform this alter. After the alter is complete, any applications trying to read data ", "bbox": {"l": 151.20018, "t": 124.48792000000003, "r": 547.35034, "b": 133.70092999999997, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "do not get any results, and attempts to insert new rows returns the following message:", "bbox": {"l": 151.20018, "t": 136.48773000000006, "r": 531.30865, "b": 145.70074, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Scenario 3: Altering the table to activate RCAC before the permissions are added. The alter table requires exclusive use of the table, as in scenario 2. All applications must be ended to perform this alter. After the alter is complete, any applications trying to read data do not get any results, and attempts to insert new rows returns the following message:"}, {"label": "text", "id": 4, "page_no": 123, "cluster": {"id": 4, "label": "text", "bbox": {"l": 150.78724670410156, "t": 152.71084594726562, "r": 451.01605, "b": 162.89410400390625, "coord_origin": "TOPLEFT"}, "confidence": 0.7630197405815125, "cells": [{"id": 10, "text": "SQ20471] INSERT or UPDATE does not satisfy row permissions. ", "bbox": {"l": 151.20018, "t": 153.67669999999998, "r": 451.01605, "b": 162.45147999999995, "coord_origin": "TOPLEFT"}}]}, "text": "SQ20471] INSERT or UPDATE does not satisfy row permissions."}, {"label": "text", "id": 5, "page_no": 123, "cluster": {"id": 5, "label": "text", "bbox": {"l": 150.4237060546875, "t": 169.4068603515625, "r": 532.72491, "b": 203.71973000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9614198207855225, "cells": [{"id": 11, "text": "To create a permission in this case requires that you end all the applications, unlike ", "bbox": {"l": 151.20018, "t": 170.50707999999997, "r": 520.22693, "b": 179.72009000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "scenario 1 where permissions can be added while the applications were active. In this ", "bbox": {"l": 151.20018, "t": 182.50689999999997, "r": 532.72491, "b": 191.71991000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "case, the applications must be ended to run the create permission.", "bbox": {"l": 151.20016, "t": 194.50671, "r": 445.84579, "b": 203.71973000000003, "coord_origin": "TOPLEFT"}}]}, "text": "To create a permission in this case requires that you end all the applications, unlike scenario 1 where permissions can be added while the applications were active. In this case, the applications must be ended to run the create permission."}, {"label": "section_header", "id": 6, "page_no": 123, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 64.3337173461914, "t": 230.51942443847656, "r": 380.35474, "b": 246.96367999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9671851992607117, "cells": [{"id": 14, "text": "6.8", "bbox": {"l": 64.800003, "t": 232.20068000000003, "r": 87.224396, "b": 246.96367999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Avoiding propagation of masked data", "bbox": {"l": 91.709259, "t": 232.20068000000003, "r": 380.35474, "b": 246.96367999999995, "coord_origin": "TOPLEFT"}}]}, "text": "6.8 Avoiding propagation of masked data"}, {"label": "text", "id": 7, "page_no": 123, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.83189392089844, "t": 264.0419616699219, "r": 547.30225, "b": 297.74120999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9809823036193848, "cells": [{"id": 16, "text": "Operations such as insert or update into a table with active column access control can fail if ", "bbox": {"l": 136.8, "t": 264.52855999999997, "r": 542.45679, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "the input data is masked data. This can happen when data to be inserted or updated contains ", "bbox": {"l": 136.8, "t": 276.52837999999997, "r": 547.30225, "b": 285.74139, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "the masked value as a result of a ", "bbox": {"l": 136.8, "t": 288.52823, "r": 285.78268, "b": 297.74120999999997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "SELECT", "bbox": {"l": 285.77969, "t": 288.67761, "r": 315.77921, "b": 297.50219999999996, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": " from a table with active column access control.", "bbox": {"l": 315.77921, "t": 288.52823, "r": 524.6864, "b": 297.74120999999997, "coord_origin": "TOPLEFT"}}]}, "text": "Operations such as insert or update into a table with active column access control can fail if the input data is masked data. This can happen when data to be inserted or updated contains the masked value as a result of a SELECT from a table with active column access control."}, {"label": "text", "id": 8, "page_no": 123, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.41940307617188, "t": 309.37554931640625, "r": 547.19684, "b": 331.70084, "coord_origin": "TOPLEFT"}, "confidence": 0.9635169506072998, "cells": [{"id": 21, "text": "For example, assume TABLE1 and TABLE2 have active column access control and for insert, ", "bbox": {"l": 136.799, "t": 310.48804, "r": 547.19684, "b": 319.7010200000001, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "selecting data from TABLE2 returns the masked data. The following INSERT returns an error:", "bbox": {"l": 136.799, "t": 322.48785, "r": 547.17798, "b": 331.70084, "coord_origin": "TOPLEFT"}}]}, "text": "For example, assume TABLE1 and TABLE2 have active column access control and for insert, selecting data from TABLE2 returns the masked data. The following INSERT returns an error:"}, {"label": "text", "id": 9, "page_no": 123, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.799, "t": 339.67682, "r": 331.6763, "b": 348.4516, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 23, "text": "INSERT INTO TABLE1 SELECT * FROM TABLE2", "bbox": {"l": 136.799, "t": 339.67682, "r": 331.6763, "b": 348.4516, "coord_origin": "TOPLEFT"}}]}, "text": "INSERT INTO TABLE1 SELECT * FROM TABLE2"}, {"label": "text", "id": 10, "page_no": 123, "cluster": {"id": 10, "label": "text", "bbox": {"l": 135.9666290283203, "t": 360.73516845703125, "r": 533.77673, "b": 382.9076232910156, "coord_origin": "TOPLEFT"}, "confidence": 0.973406195640564, "cells": [{"id": 24, "text": "The masked data that is returned from the ", "bbox": {"l": 136.799, "t": 361.48724, "r": 325.64349, "b": 370.70023, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "SELECT * FROM TABLE2", "bbox": {"l": 325.7392, "t": 361.63662999999997, "r": 425.638, "b": 370.46121, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": " might not be valid input ", "bbox": {"l": 425.69876, "t": 361.48724, "r": 533.77673, "b": 370.70023, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "data for TABLE1 because of data type or column check constraint.", "bbox": {"l": 136.79898, "t": 373.48706, "r": 428.83823, "b": 382.70004, "coord_origin": "TOPLEFT"}}]}, "text": "The masked data that is returned from the SELECT * FROM TABLE2 might not be valid input data for TABLE1 because of data type or column check constraint."}, {"label": "text", "id": 11, "page_no": 123, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.8269805908203, "t": 394.7623291015625, "r": 532.65228, "b": 417.0003662109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9747862815856934, "cells": [{"id": 28, "text": "There are two ways to prevent this situation from happening: Define a check constraint or ", "bbox": {"l": 136.79898, "t": 395.50661999999994, "r": 532.65228, "b": 404.7196, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "create a before trigger. ", "bbox": {"l": 136.79898, "t": 407.50644000000005, "r": 240.03132999999997, "b": 416.71942, "coord_origin": "TOPLEFT"}}]}, "text": "There are two ways to prevent this situation from happening: Define a check constraint or create a before trigger."}, {"label": "section_header", "id": 12, "page_no": 123, "cluster": {"id": 12, "label": "section_header", "bbox": {"l": 64.09215545654297, "t": 436.41485595703125, "r": 260.10202, "b": 449.32272, "coord_origin": "TOPLEFT"}, "confidence": 0.9572468996047974, "cells": [{"id": 30, "text": "6.8.1", "bbox": {"l": 64.800003, "t": 437.33475, "r": 94.18383, "b": 449.32272, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Check constraint solution", "bbox": {"l": 97.856804, "t": 437.33475, "r": 260.10202, "b": 449.32272, "coord_origin": "TOPLEFT"}}]}, "text": "6.8.1 Check constraint solution"}, {"label": "text", "id": 13, "page_no": 123, "cluster": {"id": 13, "label": "text", "bbox": {"l": 136.16067504882812, "t": 462.88629150390625, "r": 416.49878, "b": 472.83758544921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9524036049842834, "cells": [{"id": 32, "text": "One way to prevent this problem is to define a check constraint.", "bbox": {"l": 136.8, "t": 463.48874, "r": 416.49878, "b": 472.70172, "coord_origin": "TOPLEFT"}}]}, "text": "One way to prevent this problem is to define a check constraint."}, {"label": "text", "id": 14, "page_no": 123, "cluster": {"id": 14, "label": "text", "bbox": {"l": 135.7001190185547, "t": 484.599365234375, "r": 547.25665, "b": 542.72055, "coord_origin": "TOPLEFT"}, "confidence": 0.9841123223304749, "cells": [{"id": 33, "text": "As part of RCAC, new SQL syntax is provided to allow an action to be performed when a ", "bbox": {"l": 136.8, "t": 485.5083, "r": 530.50873, "b": 494.72128, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "violation of the check constraints check condition occurs instead of giving that error. However, ", "bbox": {"l": 136.8, "t": 497.50812, "r": 547.25665, "b": 506.7211, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "if the check condition is still not met after the action, a hard error is returned. A check ", "bbox": {"l": 136.8, "t": 509.50793, "r": 513.95343, "b": 518.72092, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "constraint with the new on-violation-clause is allowed on both the ", "bbox": {"l": 136.8, "t": 521.50775, "r": 426.2395, "b": 530.72073, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "CREATE TABLE", "bbox": {"l": 426.23962, "t": 521.65714, "r": 486.1788900000001, "b": 530.48172, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": " and ", "bbox": {"l": 486.1799, "t": 521.50775, "r": 508.43851, "b": 530.72073, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ALTER ", "bbox": {"l": 508.4395099999999, "t": 521.65714, "r": 538.37927, "b": 530.48172, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "TABLE", "bbox": {"l": 136.80002, "t": 533.65695, "r": 161.75978, "b": 542.4815100000001, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": " statements.", "bbox": {"l": 161.75978, "t": 533.5075400000001, "r": 216.09458999999998, "b": 542.72055, "coord_origin": "TOPLEFT"}}]}, "text": "As part of RCAC, new SQL syntax is provided to allow an action to be performed when a violation of the check constraints check condition occurs instead of giving that error. However, if the check condition is still not met after the action, a hard error is returned. A check constraint with the new on-violation-clause is allowed on both the CREATE TABLE and ALTER TABLE statements."}, {"label": "text", "id": 15, "page_no": 123, "cluster": {"id": 15, "label": "text", "bbox": {"l": 136.0422821044922, "t": 554.6649780273438, "r": 547.2804, "b": 588.73972, "coord_origin": "TOPLEFT"}, "confidence": 0.9792662262916565, "cells": [{"id": 42, "text": "In the Example 6-4, the mask is defined to return a value of \u2019XXX-XX-nnnn\u2019 for any query that ", "bbox": {"l": 136.80002, "t": 555.52711, "r": 547.17096, "b": 564.74011, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "is not done by a user profile in the DBMGR group. The constraint checks that the column SSN ", "bbox": {"l": 136.80002, "t": 567.52692, "r": 547.2804, "b": 576.73991, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "does not have the masked value.", "bbox": {"l": 136.80002, "t": 579.5267200000001, "r": 282.49396, "b": 588.73972, "coord_origin": "TOPLEFT"}}]}, "text": "In the Example 6-4, the mask is defined to return a value of \u2019XXX-XX-nnnn\u2019 for any query that is not done by a user profile in the DBMGR group. The constraint checks that the column SSN does not have the masked value."}, {"label": "caption", "id": 16, "page_no": 123, "cluster": {"id": 16, "label": "caption", "bbox": {"l": 64.23851013183594, "t": 600.50146484375, "r": 277.07000732421875, "b": 610.2802124023438, "coord_origin": "TOPLEFT"}, "confidence": 0.8750464916229248, "cells": [{"id": 45, "text": "Example 6-4 Check constraint to avoid masked data", "bbox": {"l": 64.800003, "t": 601.5178999999999, "r": 276.75806, "b": 609.84291, "coord_origin": "TOPLEFT"}}]}, "text": "Example 6-4 Check constraint to avoid masked data"}, {"label": "code", "id": 17, "page_no": 123, "cluster": {"id": 17, "label": "code", "bbox": {"l": 64.16464233398438, "t": 618.1095581054688, "r": 414.59515, "b": 736.5281982421875, "coord_origin": "TOPLEFT"}, "confidence": 0.8303214311599731, "cells": [{"id": 46, "text": "CREATE SCHEMA MY_LIB", "bbox": {"l": 64.800003, "t": 618.6780200000001, "r": 164.69879, "b": 627.45277, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "SET SCHEMA MY_LIB", "bbox": {"l": 64.800003, "t": 630.67783, "r": 149.69904, "b": 639.45258, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "CREATE TABLE MY_LIB.EMP_INFO", "bbox": {"l": 64.800003, "t": 642.67763, "r": 204.71805, "b": 651.45238, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "(COL1_name CHAR(10) WITH DEFAULT 'DEFAULT',", "bbox": {"l": 119.66983, "t": 654.67743, "r": 414.59515, "b": 663.45218, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "COL2_ssn CHAR(11) WITH DEFAULT 'DEFAULT')", "bbox": {"l": 126.86674, "t": 666.67724, "r": 409.61517, "b": 675.452, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "CREATE MASK MASK_ssn ON MY_LIB.EMP_INFO", "bbox": {"l": 64.800003, "t": 678.67705, "r": 259.67731, "b": 687.45181, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "FOR COLUMN COL2_ssn RETURN", "bbox": {"l": 64.800003, "t": 690.67686, "r": 194.6983, "b": 699.4516140000001, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "CASE", "bbox": {"l": 64.800003, "t": 702.676666, "r": 84.77977, "b": 711.451424, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": " WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBMGR' ) = 1", "bbox": {"l": 64.800003, "t": 714.676476, "r": 359.63589, "b": 723.451233, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": " THEN COL2_ssn", "bbox": {"l": 64.800003, "t": 726.676285, "r": 139.73904, "b": 735.451042, "coord_origin": "TOPLEFT"}}]}, "text": "CREATE SCHEMA MY_LIB SET SCHEMA MY_LIB CREATE TABLE MY_LIB.EMP_INFO (COL1_name CHAR(10) WITH DEFAULT 'DEFAULT', COL2_ssn CHAR(11) WITH DEFAULT 'DEFAULT') CREATE MASK MASK_ssn ON MY_LIB.EMP_INFO FOR COLUMN COL2_ssn RETURN CASE WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBMGR' ) = 1 THEN COL2_ssn"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 123, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.37716674804688, "t": 754.4281616210938, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9158027768135071, "cells": [{"id": 0, "text": "108 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "108"}, {"label": "page_footer", "id": 1, "page_no": 123, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.70913696289062, "t": 754.5992431640625, "r": 339.81958, "b": 764.000732421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9243242740631104, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 124, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 371.28, "t": 755.538002, "r": 517.96918, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "109", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": " ELSE 'XXX-XX-'||SUBSTR(COL2_ssn,8,4)", "bbox": {"l": 64.800385, "t": 71.65845000000002, "r": 254.69768999999997, "b": 80.43322999999998, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "END", "bbox": {"l": 64.800385, "t": 83.65826000000004, "r": 79.740387, "b": 92.43304, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "ENABLE", "bbox": {"l": 64.800385, "t": 95.65808000000015, "r": 94.74015, "b": 104.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "|", "bbox": {"l": 64.800385, "t": 107.65790000000004, "r": 69.780388, "b": 116.43268, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "/* Check constraint for the update and insert.*/", "bbox": {"l": 64.800385, "t": 119.65770999999995, "r": 304.61722, "b": 128.4325, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ALTER TABLE MY_LIB.EMP_INFO", "bbox": {"l": 64.800385, "t": 131.65752999999995, "r": 199.67868, "b": 140.43231000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "ADD CONSTRAINT MASK_ssn_preserve", "bbox": {"l": 75.381416, "t": 143.65734999999995, "r": 244.67795000000004, "b": 152.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CHECK(SUBSTR(COL2_ssn,1,7)<>'XXX-XX-') -- Allow any value other than the mask ", "bbox": {"l": 75.169739, "t": 155.65716999999995, "r": 479.57458, "b": 164.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "ON UPDATE VIOLATION PRESERVE COL2_ssn -- Don't update the mask portion of the existing value", "bbox": {"l": 75.00663, "t": 167.65697999999998, "r": 544.49384, "b": 176.43176000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ON INSERT VIOLATION SET COL2_ssn = DEFAULT", "bbox": {"l": 75.238907, "t": 179.65679999999998, "r": 294.44788, "b": 188.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "-- for insert set this to the default value.", "bbox": {"l": 304.88638, "t": 179.65679999999998, "r": 534.53387, "b": 188.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "6.8.2", "bbox": {"l": 64.800003, "t": 216.35468000000003, "r": 94.229622, "b": 228.34271, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Before trigger solution", "bbox": {"l": 97.908325, "t": 216.35468000000003, "r": 240.54407, "b": 228.34271, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "The actions that are described in Example 6-4 on page 108 for ", "bbox": {"l": 136.8, "t": 242.50867000000005, "r": 415.47696, "b": 251.72168, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "ON UPDATE VIOLATION", "bbox": {"l": 415.49969, "t": 242.65808000000004, "r": 510.17944000000006, "b": 251.43286, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": " and ", "bbox": {"l": 510.23923, "t": 242.50867000000005, "r": 532.31854, "b": 251.72168, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ON ", "bbox": {"l": 532.31958, "t": 242.65808000000004, "r": 547.31934, "b": 251.43286, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "INSERT VIOLATION", "bbox": {"l": 136.80002, "t": 254.65790000000004, "r": 216.71904000000004, "b": 263.43268, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": " also can be handled by a before trigger, as shown in Example 6-5.", "bbox": {"l": 216.77982, "t": 254.50847999999996, "r": 511.9704, "b": 263.7215, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Example 6-5 Before trigger to avoid masked data", "bbox": {"l": 136.8, "t": 276.55798000000004, "r": 336.43527, "b": 284.88300000000004, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "CREATE TRIGGER PREVENT_MASK_SSN BEFORE INSERT OR UPDATE ON MY_LIB.EMP_INFO", "bbox": {"l": 136.8, "t": 293.65811, "r": 506.5749200000001, "b": 302.43289, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "REFERENCING NEW ROW AS N OLD ROW AS O", "bbox": {"l": 136.8, "t": 305.65793, "r": 321.65756, "b": 314.43271, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "FOR EACH ROW MODE DB2ROW", "bbox": {"l": 136.8, "t": 317.65775, "r": 256.73828, "b": 326.43253, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "SECURED", "bbox": {"l": 136.8, "t": 329.65756, "r": 171.77951, "b": 338.43234000000007, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "WHEN(SUBSTR(N.COL2_ssn,1,7) = 'XXX-XX-')", "bbox": {"l": 136.8, "t": 341.65738, "r": 336.65732, "b": 350.43216, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "BEGIN", "bbox": {"l": 136.8, "t": 353.6572, "r": 161.75977, "b": 362.43198, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IF INSERTING THEN SET N.COL2_ssn = DEFAULT;", "bbox": {"l": 136.8, "t": 365.65700999999996, "r": 351.65707, "b": 374.43179000000003, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "ELSEIF UPDATING THEN SET N.COL2_ssn = O.COL2_ssn;", "bbox": {"l": 136.8, "t": 377.65683000000007, "r": 381.65659, "b": 386.43161, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "END IF;", "bbox": {"l": 136.8, "t": 389.65665, "r": 171.77951, "b": 398.43143, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "END", "bbox": {"l": 136.8, "t": 401.6564599999999, "r": 151.74001, "b": 410.43124, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "6.9", "bbox": {"l": 64.800003, "t": 446.2207, "r": 87.247795, "b": 460.9837, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Triggers and functions (SECURED)", "bbox": {"l": 91.737335, "t": 446.2207, "r": 360.91705, "b": 460.9837, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "There are some considerations that must be considered when there are triggers and ", "bbox": {"l": 136.8, "t": 478.48874, "r": 511.73724000000004, "b": 487.70172, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "functions on tables that have RCAC enabled. The purpose of SECURE for triggers and ", "bbox": {"l": 136.8, "t": 490.54831, "r": 522.49512, "b": 499.76129, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "functions is so that a user who is allowed to create a trigger or function is not necessarily able ", "bbox": {"l": 136.8, "t": 502.54813, "r": 547.24677, "b": 511.76111, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "to make it SECURE themselves. This prevents the trigger/function developer from adding ", "bbox": {"l": 136.8, "t": 514.5479399999999, "r": 532.30658, "b": 523.7609299999999, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "code that skims off data that they are not allowed to see.", "bbox": {"l": 136.8, "t": 526.5477599999999, "r": 386.24026, "b": 535.7607399999999, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "6.9.1", "bbox": {"l": 64.800003, "t": 556.37462, "r": 94.489105, "b": 568.36263, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Triggers", "bbox": {"l": 98.200249, "t": 556.37462, "r": 151.61127, "b": 568.36263, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Triggers have access to the data in rows outside of the row permission or column masking. ", "bbox": {"l": 136.8, "t": 582.52863, "r": 539.66608, "b": 591.74162, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "An after trigger has access to the new row image after the permission has allowed the update ", "bbox": {"l": 136.80002, "t": 594.52843, "r": 547.28851, "b": 603.7414200000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "or insert to occur. Therefore, the triggers can potentially change the insert or update image ", "bbox": {"l": 136.80002, "t": 606.52823, "r": 539.64722, "b": 615.74123, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "value so that it violates the permission.", "bbox": {"l": 136.80002, "t": 618.52803, "r": 308.52338, "b": 627.74103, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 370.6949157714844, "t": 754.8876342773438, "r": 517.96918, "b": 763.9262084960938, "coord_origin": "TOPLEFT"}, "confidence": 0.9537138938903809, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 371.28, "t": 755.538002, "r": 517.96918, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 530.17626953125, "t": 754.1600341796875, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9287368059158325, "cells": [{"id": 1, "text": "109", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "code", "bbox": {"l": 63.44700622558594, "t": 70.49668884277344, "r": 546.8219604492188, "b": 191.2418975830078, "coord_origin": "TOPLEFT"}, "confidence": 0.8540793061256409, "cells": [{"id": 2, "text": " ELSE 'XXX-XX-'||SUBSTR(COL2_ssn,8,4)", "bbox": {"l": 64.800385, "t": 71.65845000000002, "r": 254.69768999999997, "b": 80.43322999999998, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "END", "bbox": {"l": 64.800385, "t": 83.65826000000004, "r": 79.740387, "b": 92.43304, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "ENABLE", "bbox": {"l": 64.800385, "t": 95.65808000000015, "r": 94.74015, "b": 104.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "|", "bbox": {"l": 64.800385, "t": 107.65790000000004, "r": 69.780388, "b": 116.43268, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "/* Check constraint for the update and insert.*/", "bbox": {"l": 64.800385, "t": 119.65770999999995, "r": 304.61722, "b": 128.4325, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ALTER TABLE MY_LIB.EMP_INFO", "bbox": {"l": 64.800385, "t": 131.65752999999995, "r": 199.67868, "b": 140.43231000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "ADD CONSTRAINT MASK_ssn_preserve", "bbox": {"l": 75.381416, "t": 143.65734999999995, "r": 244.67795000000004, "b": 152.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CHECK(SUBSTR(COL2_ssn,1,7)<>'XXX-XX-') -- Allow any value other than the mask ", "bbox": {"l": 75.169739, "t": 155.65716999999995, "r": 479.57458, "b": 164.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "ON UPDATE VIOLATION PRESERVE COL2_ssn -- Don't update the mask portion of the existing value", "bbox": {"l": 75.00663, "t": 167.65697999999998, "r": 544.49384, "b": 176.43176000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ON INSERT VIOLATION SET COL2_ssn = DEFAULT", "bbox": {"l": 75.238907, "t": 179.65679999999998, "r": 294.44788, "b": 188.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "-- for insert set this to the default value.", "bbox": {"l": 304.88638, "t": 179.65679999999998, "r": 534.53387, "b": 188.43158000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "section_header", "bbox": {"l": 64.23657989501953, "t": 215.09384155273438, "r": 240.54407, "b": 228.5045623779297, "coord_origin": "TOPLEFT"}, "confidence": 0.9668058753013611, "cells": [{"id": 13, "text": "6.8.2", "bbox": {"l": 64.800003, "t": 216.35468000000003, "r": 94.229622, "b": 228.34271, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Before trigger solution", "bbox": {"l": 97.908325, "t": 216.35468000000003, "r": 240.54407, "b": 228.34271, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 136.24661254882812, "t": 241.2919464111328, "r": 547.31934, "b": 263.7215, "coord_origin": "TOPLEFT"}, "confidence": 0.9730713963508606, "cells": [{"id": 15, "text": "The actions that are described in Example 6-4 on page 108 for ", "bbox": {"l": 136.8, "t": 242.50867000000005, "r": 415.47696, "b": 251.72168, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "ON UPDATE VIOLATION", "bbox": {"l": 415.49969, "t": 242.65808000000004, "r": 510.17944000000006, "b": 251.43286, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": " and ", "bbox": {"l": 510.23923, "t": 242.50867000000005, "r": 532.31854, "b": 251.72168, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ON ", "bbox": {"l": 532.31958, "t": 242.65808000000004, "r": 547.31934, "b": 251.43286, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "INSERT VIOLATION", "bbox": {"l": 136.80002, "t": 254.65790000000004, "r": 216.71904000000004, "b": 263.43268, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": " also can be handled by a before trigger, as shown in Example 6-5.", "bbox": {"l": 216.77982, "t": 254.50847999999996, "r": 511.9704, "b": 263.7215, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 136.40687561035156, "t": 276.0124816894531, "r": 336.7406311035156, "b": 285.537841796875, "coord_origin": "TOPLEFT"}, "confidence": 0.6352336406707764, "cells": [{"id": 21, "text": "Example 6-5 Before trigger to avoid masked data", "bbox": {"l": 136.8, "t": 276.55798000000004, "r": 336.43527, "b": 284.88300000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "code", "bbox": {"l": 135.9194793701172, "t": 291.04913330078125, "r": 506.87237548828125, "b": 412.2622375488281, "coord_origin": "TOPLEFT"}, "confidence": 0.7042911648750305, "cells": [{"id": 22, "text": "CREATE TRIGGER PREVENT_MASK_SSN BEFORE INSERT OR UPDATE ON MY_LIB.EMP_INFO", "bbox": {"l": 136.8, "t": 293.65811, "r": 506.5749200000001, "b": 302.43289, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "REFERENCING NEW ROW AS N OLD ROW AS O", "bbox": {"l": 136.8, "t": 305.65793, "r": 321.65756, "b": 314.43271, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "FOR EACH ROW MODE DB2ROW", "bbox": {"l": 136.8, "t": 317.65775, "r": 256.73828, "b": 326.43253, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "SECURED", "bbox": {"l": 136.8, "t": 329.65756, "r": 171.77951, "b": 338.43234000000007, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "WHEN(SUBSTR(N.COL2_ssn,1,7) = 'XXX-XX-')", "bbox": {"l": 136.8, "t": 341.65738, "r": 336.65732, "b": 350.43216, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "BEGIN", "bbox": {"l": 136.8, "t": 353.6572, "r": 161.75977, "b": 362.43198, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IF INSERTING THEN SET N.COL2_ssn = DEFAULT;", "bbox": {"l": 136.8, "t": 365.65700999999996, "r": 351.65707, "b": 374.43179000000003, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "ELSEIF UPDATING THEN SET N.COL2_ssn = O.COL2_ssn;", "bbox": {"l": 136.8, "t": 377.65683000000007, "r": 381.65659, "b": 386.43161, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "END IF;", "bbox": {"l": 136.8, "t": 389.65665, "r": 171.77951, "b": 398.43143, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "END", "bbox": {"l": 136.8, "t": 401.6564599999999, "r": 151.74001, "b": 410.43124, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "section_header", "bbox": {"l": 64.4358139038086, "t": 445.3469543457031, "r": 360.91705, "b": 462.0101318359375, "coord_origin": "TOPLEFT"}, "confidence": 0.968204915523529, "cells": [{"id": 32, "text": "6.9", "bbox": {"l": 64.800003, "t": 446.2207, "r": 87.247795, "b": 460.9837, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Triggers and functions (SECURED)", "bbox": {"l": 91.737335, "t": 446.2207, "r": 360.91705, "b": 460.9837, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 135.90432739257812, "t": 477.2076721191406, "r": 547.24677, "b": 536.2446899414062, "coord_origin": "TOPLEFT"}, "confidence": 0.984616219997406, "cells": [{"id": 34, "text": "There are some considerations that must be considered when there are triggers and ", "bbox": {"l": 136.8, "t": 478.48874, "r": 511.73724000000004, "b": 487.70172, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "functions on tables that have RCAC enabled. The purpose of SECURE for triggers and ", "bbox": {"l": 136.8, "t": 490.54831, "r": 522.49512, "b": 499.76129, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "functions is so that a user who is allowed to create a trigger or function is not necessarily able ", "bbox": {"l": 136.8, "t": 502.54813, "r": 547.24677, "b": 511.76111, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "to make it SECURE themselves. This prevents the trigger/function developer from adding ", "bbox": {"l": 136.8, "t": 514.5479399999999, "r": 532.30658, "b": 523.7609299999999, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "code that skims off data that they are not allowed to see.", "bbox": {"l": 136.8, "t": 526.5477599999999, "r": 386.24026, "b": 535.7607399999999, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "section_header", "bbox": {"l": 64.1463851928711, "t": 555.9064331054688, "r": 151.61127, "b": 569.22412109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9636334180831909, "cells": [{"id": 39, "text": "6.9.1", "bbox": {"l": 64.800003, "t": 556.37462, "r": 94.489105, "b": 568.36263, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Triggers", "bbox": {"l": 98.200249, "t": 556.37462, "r": 151.61127, "b": 568.36263, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 135.57107543945312, "t": 582.0809936523438, "r": 547.28851, "b": 627.99658203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9859280586242676, "cells": [{"id": 41, "text": "Triggers have access to the data in rows outside of the row permission or column masking. ", "bbox": {"l": 136.8, "t": 582.52863, "r": 539.66608, "b": 591.74162, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "An after trigger has access to the new row image after the permission has allowed the update ", "bbox": {"l": 136.80002, "t": 594.52843, "r": 547.28851, "b": 603.7414200000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "or insert to occur. Therefore, the triggers can potentially change the insert or update image ", "bbox": {"l": 136.80002, "t": 606.52823, "r": 539.64722, "b": 615.74123, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "value so that it violates the permission.", "bbox": {"l": 136.80002, "t": 618.52803, "r": 308.52338, "b": 627.74103, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 124, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 370.6949157714844, "t": 754.8876342773438, "r": 517.96918, "b": 763.9262084960938, "coord_origin": "TOPLEFT"}, "confidence": 0.9537138938903809, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 371.28, "t": 755.538002, "r": 517.96918, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 124, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.17626953125, "t": 754.1600341796875, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9287368059158325, "cells": [{"id": 1, "text": "109", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "109"}, {"label": "code", "id": 2, "page_no": 124, "cluster": {"id": 2, "label": "code", "bbox": {"l": 63.44700622558594, "t": 70.49668884277344, "r": 546.8219604492188, "b": 191.2418975830078, "coord_origin": "TOPLEFT"}, "confidence": 0.8540793061256409, "cells": [{"id": 2, "text": " ELSE 'XXX-XX-'||SUBSTR(COL2_ssn,8,4)", "bbox": {"l": 64.800385, "t": 71.65845000000002, "r": 254.69768999999997, "b": 80.43322999999998, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "END", "bbox": {"l": 64.800385, "t": 83.65826000000004, "r": 79.740387, "b": 92.43304, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "ENABLE", "bbox": {"l": 64.800385, "t": 95.65808000000015, "r": 94.74015, "b": 104.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "|", "bbox": {"l": 64.800385, "t": 107.65790000000004, "r": 69.780388, "b": 116.43268, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "/* Check constraint for the update and insert.*/", "bbox": {"l": 64.800385, "t": 119.65770999999995, "r": 304.61722, "b": 128.4325, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ALTER TABLE MY_LIB.EMP_INFO", "bbox": {"l": 64.800385, "t": 131.65752999999995, "r": 199.67868, "b": 140.43231000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "ADD CONSTRAINT MASK_ssn_preserve", "bbox": {"l": 75.381416, "t": 143.65734999999995, "r": 244.67795000000004, "b": 152.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CHECK(SUBSTR(COL2_ssn,1,7)<>'XXX-XX-') -- Allow any value other than the mask ", "bbox": {"l": 75.169739, "t": 155.65716999999995, "r": 479.57458, "b": 164.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "ON UPDATE VIOLATION PRESERVE COL2_ssn -- Don't update the mask portion of the existing value", "bbox": {"l": 75.00663, "t": 167.65697999999998, "r": 544.49384, "b": 176.43176000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ON INSERT VIOLATION SET COL2_ssn = DEFAULT", "bbox": {"l": 75.238907, "t": 179.65679999999998, "r": 294.44788, "b": 188.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "-- for insert set this to the default value.", "bbox": {"l": 304.88638, "t": 179.65679999999998, "r": 534.53387, "b": 188.43158000000005, "coord_origin": "TOPLEFT"}}]}, "text": "ELSE 'XXX-XX-'||SUBSTR(COL2_ssn,8,4) END ENABLE | /* Check constraint for the update and insert.*/ ALTER TABLE MY_LIB.EMP_INFO ADD CONSTRAINT MASK_ssn_preserve CHECK(SUBSTR(COL2_ssn,1,7)<>'XXX-XX-') -- Allow any value other than the mask ON UPDATE VIOLATION PRESERVE COL2_ssn -- Don't update the mask portion of the existing value ON INSERT VIOLATION SET COL2_ssn = DEFAULT -- for insert set this to the default value."}, {"label": "section_header", "id": 3, "page_no": 124, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 64.23657989501953, "t": 215.09384155273438, "r": 240.54407, "b": 228.5045623779297, "coord_origin": "TOPLEFT"}, "confidence": 0.9668058753013611, "cells": [{"id": 13, "text": "6.8.2", "bbox": {"l": 64.800003, "t": 216.35468000000003, "r": 94.229622, "b": 228.34271, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Before trigger solution", "bbox": {"l": 97.908325, "t": 216.35468000000003, "r": 240.54407, "b": 228.34271, "coord_origin": "TOPLEFT"}}]}, "text": "6.8.2 Before trigger solution"}, {"label": "text", "id": 4, "page_no": 124, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.24661254882812, "t": 241.2919464111328, "r": 547.31934, "b": 263.7215, "coord_origin": "TOPLEFT"}, "confidence": 0.9730713963508606, "cells": [{"id": 15, "text": "The actions that are described in Example 6-4 on page 108 for ", "bbox": {"l": 136.8, "t": 242.50867000000005, "r": 415.47696, "b": 251.72168, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "ON UPDATE VIOLATION", "bbox": {"l": 415.49969, "t": 242.65808000000004, "r": 510.17944000000006, "b": 251.43286, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": " and ", "bbox": {"l": 510.23923, "t": 242.50867000000005, "r": 532.31854, "b": 251.72168, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ON ", "bbox": {"l": 532.31958, "t": 242.65808000000004, "r": 547.31934, "b": 251.43286, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "INSERT VIOLATION", "bbox": {"l": 136.80002, "t": 254.65790000000004, "r": 216.71904000000004, "b": 263.43268, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": " also can be handled by a before trigger, as shown in Example 6-5.", "bbox": {"l": 216.77982, "t": 254.50847999999996, "r": 511.9704, "b": 263.7215, "coord_origin": "TOPLEFT"}}]}, "text": "The actions that are described in Example 6-4 on page 108 for ON UPDATE VIOLATION and ON INSERT VIOLATION also can be handled by a before trigger, as shown in Example 6-5."}, {"label": "caption", "id": 5, "page_no": 124, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.40687561035156, "t": 276.0124816894531, "r": 336.7406311035156, "b": 285.537841796875, "coord_origin": "TOPLEFT"}, "confidence": 0.6352336406707764, "cells": [{"id": 21, "text": "Example 6-5 Before trigger to avoid masked data", "bbox": {"l": 136.8, "t": 276.55798000000004, "r": 336.43527, "b": 284.88300000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Example 6-5 Before trigger to avoid masked data"}, {"label": "code", "id": 6, "page_no": 124, "cluster": {"id": 6, "label": "code", "bbox": {"l": 135.9194793701172, "t": 291.04913330078125, "r": 506.87237548828125, "b": 412.2622375488281, "coord_origin": "TOPLEFT"}, "confidence": 0.7042911648750305, "cells": [{"id": 22, "text": "CREATE TRIGGER PREVENT_MASK_SSN BEFORE INSERT OR UPDATE ON MY_LIB.EMP_INFO", "bbox": {"l": 136.8, "t": 293.65811, "r": 506.5749200000001, "b": 302.43289, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "REFERENCING NEW ROW AS N OLD ROW AS O", "bbox": {"l": 136.8, "t": 305.65793, "r": 321.65756, "b": 314.43271, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "FOR EACH ROW MODE DB2ROW", "bbox": {"l": 136.8, "t": 317.65775, "r": 256.73828, "b": 326.43253, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "SECURED", "bbox": {"l": 136.8, "t": 329.65756, "r": 171.77951, "b": 338.43234000000007, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "WHEN(SUBSTR(N.COL2_ssn,1,7) = 'XXX-XX-')", "bbox": {"l": 136.8, "t": 341.65738, "r": 336.65732, "b": 350.43216, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "BEGIN", "bbox": {"l": 136.8, "t": 353.6572, "r": 161.75977, "b": 362.43198, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IF INSERTING THEN SET N.COL2_ssn = DEFAULT;", "bbox": {"l": 136.8, "t": 365.65700999999996, "r": 351.65707, "b": 374.43179000000003, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "ELSEIF UPDATING THEN SET N.COL2_ssn = O.COL2_ssn;", "bbox": {"l": 136.8, "t": 377.65683000000007, "r": 381.65659, "b": 386.43161, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "END IF;", "bbox": {"l": 136.8, "t": 389.65665, "r": 171.77951, "b": 398.43143, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "END", "bbox": {"l": 136.8, "t": 401.6564599999999, "r": 151.74001, "b": 410.43124, "coord_origin": "TOPLEFT"}}]}, "text": "CREATE TRIGGER PREVENT_MASK_SSN BEFORE INSERT OR UPDATE ON MY_LIB.EMP_INFO REFERENCING NEW ROW AS N OLD ROW AS O FOR EACH ROW MODE DB2ROW SECURED WHEN(SUBSTR(N.COL2_ssn,1,7) = 'XXX-XX-') BEGIN IF INSERTING THEN SET N.COL2_ssn = DEFAULT; ELSEIF UPDATING THEN SET N.COL2_ssn = O.COL2_ssn; END IF; END"}, {"label": "section_header", "id": 7, "page_no": 124, "cluster": {"id": 7, "label": "section_header", "bbox": {"l": 64.4358139038086, "t": 445.3469543457031, "r": 360.91705, "b": 462.0101318359375, "coord_origin": "TOPLEFT"}, "confidence": 0.968204915523529, "cells": [{"id": 32, "text": "6.9", "bbox": {"l": 64.800003, "t": 446.2207, "r": 87.247795, "b": 460.9837, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Triggers and functions (SECURED)", "bbox": {"l": 91.737335, "t": 446.2207, "r": 360.91705, "b": 460.9837, "coord_origin": "TOPLEFT"}}]}, "text": "6.9 Triggers and functions (SECURED)"}, {"label": "text", "id": 8, "page_no": 124, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.90432739257812, "t": 477.2076721191406, "r": 547.24677, "b": 536.2446899414062, "coord_origin": "TOPLEFT"}, "confidence": 0.984616219997406, "cells": [{"id": 34, "text": "There are some considerations that must be considered when there are triggers and ", "bbox": {"l": 136.8, "t": 478.48874, "r": 511.73724000000004, "b": 487.70172, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "functions on tables that have RCAC enabled. The purpose of SECURE for triggers and ", "bbox": {"l": 136.8, "t": 490.54831, "r": 522.49512, "b": 499.76129, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "functions is so that a user who is allowed to create a trigger or function is not necessarily able ", "bbox": {"l": 136.8, "t": 502.54813, "r": 547.24677, "b": 511.76111, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "to make it SECURE themselves. This prevents the trigger/function developer from adding ", "bbox": {"l": 136.8, "t": 514.5479399999999, "r": 532.30658, "b": 523.7609299999999, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "code that skims off data that they are not allowed to see.", "bbox": {"l": 136.8, "t": 526.5477599999999, "r": 386.24026, "b": 535.7607399999999, "coord_origin": "TOPLEFT"}}]}, "text": "There are some considerations that must be considered when there are triggers and functions on tables that have RCAC enabled. The purpose of SECURE for triggers and functions is so that a user who is allowed to create a trigger or function is not necessarily able to make it SECURE themselves. This prevents the trigger/function developer from adding code that skims off data that they are not allowed to see."}, {"label": "section_header", "id": 9, "page_no": 124, "cluster": {"id": 9, "label": "section_header", "bbox": {"l": 64.1463851928711, "t": 555.9064331054688, "r": 151.61127, "b": 569.22412109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9636334180831909, "cells": [{"id": 39, "text": "6.9.1", "bbox": {"l": 64.800003, "t": 556.37462, "r": 94.489105, "b": 568.36263, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Triggers", "bbox": {"l": 98.200249, "t": 556.37462, "r": 151.61127, "b": 568.36263, "coord_origin": "TOPLEFT"}}]}, "text": "6.9.1 Triggers"}, {"label": "text", "id": 10, "page_no": 124, "cluster": {"id": 10, "label": "text", "bbox": {"l": 135.57107543945312, "t": 582.0809936523438, "r": 547.28851, "b": 627.99658203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9859280586242676, "cells": [{"id": 41, "text": "Triggers have access to the data in rows outside of the row permission or column masking. ", "bbox": {"l": 136.8, "t": 582.52863, "r": 539.66608, "b": 591.74162, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "An after trigger has access to the new row image after the permission has allowed the update ", "bbox": {"l": 136.80002, "t": 594.52843, "r": 547.28851, "b": 603.7414200000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "or insert to occur. Therefore, the triggers can potentially change the insert or update image ", "bbox": {"l": 136.80002, "t": 606.52823, "r": 539.64722, "b": 615.74123, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "value so that it violates the permission.", "bbox": {"l": 136.80002, "t": 618.52803, "r": 308.52338, "b": 627.74103, "coord_origin": "TOPLEFT"}}]}, "text": "Triggers have access to the data in rows outside of the row permission or column masking. An after trigger has access to the new row image after the permission has allowed the update or insert to occur. Therefore, the triggers can potentially change the insert or update image value so that it violates the permission."}], "body": [{"label": "code", "id": 2, "page_no": 124, "cluster": {"id": 2, "label": "code", "bbox": {"l": 63.44700622558594, "t": 70.49668884277344, "r": 546.8219604492188, "b": 191.2418975830078, "coord_origin": "TOPLEFT"}, "confidence": 0.8540793061256409, "cells": [{"id": 2, "text": " ELSE 'XXX-XX-'||SUBSTR(COL2_ssn,8,4)", "bbox": {"l": 64.800385, "t": 71.65845000000002, "r": 254.69768999999997, "b": 80.43322999999998, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "END", "bbox": {"l": 64.800385, "t": 83.65826000000004, "r": 79.740387, "b": 92.43304, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "ENABLE", "bbox": {"l": 64.800385, "t": 95.65808000000015, "r": 94.74015, "b": 104.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "|", "bbox": {"l": 64.800385, "t": 107.65790000000004, "r": 69.780388, "b": 116.43268, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "/* Check constraint for the update and insert.*/", "bbox": {"l": 64.800385, "t": 119.65770999999995, "r": 304.61722, "b": 128.4325, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ALTER TABLE MY_LIB.EMP_INFO", "bbox": {"l": 64.800385, "t": 131.65752999999995, "r": 199.67868, "b": 140.43231000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "ADD CONSTRAINT MASK_ssn_preserve", "bbox": {"l": 75.381416, "t": 143.65734999999995, "r": 244.67795000000004, "b": 152.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CHECK(SUBSTR(COL2_ssn,1,7)<>'XXX-XX-') -- Allow any value other than the mask ", "bbox": {"l": 75.169739, "t": 155.65716999999995, "r": 479.57458, "b": 164.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "ON UPDATE VIOLATION PRESERVE COL2_ssn -- Don't update the mask portion of the existing value", "bbox": {"l": 75.00663, "t": 167.65697999999998, "r": 544.49384, "b": 176.43176000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ON INSERT VIOLATION SET COL2_ssn = DEFAULT", "bbox": {"l": 75.238907, "t": 179.65679999999998, "r": 294.44788, "b": 188.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "-- for insert set this to the default value.", "bbox": {"l": 304.88638, "t": 179.65679999999998, "r": 534.53387, "b": 188.43158000000005, "coord_origin": "TOPLEFT"}}]}, "text": "ELSE 'XXX-XX-'||SUBSTR(COL2_ssn,8,4) END ENABLE | /* Check constraint for the update and insert.*/ ALTER TABLE MY_LIB.EMP_INFO ADD CONSTRAINT MASK_ssn_preserve CHECK(SUBSTR(COL2_ssn,1,7)<>'XXX-XX-') -- Allow any value other than the mask ON UPDATE VIOLATION PRESERVE COL2_ssn -- Don't update the mask portion of the existing value ON INSERT VIOLATION SET COL2_ssn = DEFAULT -- for insert set this to the default value."}, {"label": "section_header", "id": 3, "page_no": 124, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 64.23657989501953, "t": 215.09384155273438, "r": 240.54407, "b": 228.5045623779297, "coord_origin": "TOPLEFT"}, "confidence": 0.9668058753013611, "cells": [{"id": 13, "text": "6.8.2", "bbox": {"l": 64.800003, "t": 216.35468000000003, "r": 94.229622, "b": 228.34271, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Before trigger solution", "bbox": {"l": 97.908325, "t": 216.35468000000003, "r": 240.54407, "b": 228.34271, "coord_origin": "TOPLEFT"}}]}, "text": "6.8.2 Before trigger solution"}, {"label": "text", "id": 4, "page_no": 124, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.24661254882812, "t": 241.2919464111328, "r": 547.31934, "b": 263.7215, "coord_origin": "TOPLEFT"}, "confidence": 0.9730713963508606, "cells": [{"id": 15, "text": "The actions that are described in Example 6-4 on page 108 for ", "bbox": {"l": 136.8, "t": 242.50867000000005, "r": 415.47696, "b": 251.72168, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "ON UPDATE VIOLATION", "bbox": {"l": 415.49969, "t": 242.65808000000004, "r": 510.17944000000006, "b": 251.43286, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": " and ", "bbox": {"l": 510.23923, "t": 242.50867000000005, "r": 532.31854, "b": 251.72168, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ON ", "bbox": {"l": 532.31958, "t": 242.65808000000004, "r": 547.31934, "b": 251.43286, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "INSERT VIOLATION", "bbox": {"l": 136.80002, "t": 254.65790000000004, "r": 216.71904000000004, "b": 263.43268, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": " also can be handled by a before trigger, as shown in Example 6-5.", "bbox": {"l": 216.77982, "t": 254.50847999999996, "r": 511.9704, "b": 263.7215, "coord_origin": "TOPLEFT"}}]}, "text": "The actions that are described in Example 6-4 on page 108 for ON UPDATE VIOLATION and ON INSERT VIOLATION also can be handled by a before trigger, as shown in Example 6-5."}, {"label": "caption", "id": 5, "page_no": 124, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.40687561035156, "t": 276.0124816894531, "r": 336.7406311035156, "b": 285.537841796875, "coord_origin": "TOPLEFT"}, "confidence": 0.6352336406707764, "cells": [{"id": 21, "text": "Example 6-5 Before trigger to avoid masked data", "bbox": {"l": 136.8, "t": 276.55798000000004, "r": 336.43527, "b": 284.88300000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Example 6-5 Before trigger to avoid masked data"}, {"label": "code", "id": 6, "page_no": 124, "cluster": {"id": 6, "label": "code", "bbox": {"l": 135.9194793701172, "t": 291.04913330078125, "r": 506.87237548828125, "b": 412.2622375488281, "coord_origin": "TOPLEFT"}, "confidence": 0.7042911648750305, "cells": [{"id": 22, "text": "CREATE TRIGGER PREVENT_MASK_SSN BEFORE INSERT OR UPDATE ON MY_LIB.EMP_INFO", "bbox": {"l": 136.8, "t": 293.65811, "r": 506.5749200000001, "b": 302.43289, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "REFERENCING NEW ROW AS N OLD ROW AS O", "bbox": {"l": 136.8, "t": 305.65793, "r": 321.65756, "b": 314.43271, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "FOR EACH ROW MODE DB2ROW", "bbox": {"l": 136.8, "t": 317.65775, "r": 256.73828, "b": 326.43253, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "SECURED", "bbox": {"l": 136.8, "t": 329.65756, "r": 171.77951, "b": 338.43234000000007, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "WHEN(SUBSTR(N.COL2_ssn,1,7) = 'XXX-XX-')", "bbox": {"l": 136.8, "t": 341.65738, "r": 336.65732, "b": 350.43216, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "BEGIN", "bbox": {"l": 136.8, "t": 353.6572, "r": 161.75977, "b": 362.43198, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IF INSERTING THEN SET N.COL2_ssn = DEFAULT;", "bbox": {"l": 136.8, "t": 365.65700999999996, "r": 351.65707, "b": 374.43179000000003, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "ELSEIF UPDATING THEN SET N.COL2_ssn = O.COL2_ssn;", "bbox": {"l": 136.8, "t": 377.65683000000007, "r": 381.65659, "b": 386.43161, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "END IF;", "bbox": {"l": 136.8, "t": 389.65665, "r": 171.77951, "b": 398.43143, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "END", "bbox": {"l": 136.8, "t": 401.6564599999999, "r": 151.74001, "b": 410.43124, "coord_origin": "TOPLEFT"}}]}, "text": "CREATE TRIGGER PREVENT_MASK_SSN BEFORE INSERT OR UPDATE ON MY_LIB.EMP_INFO REFERENCING NEW ROW AS N OLD ROW AS O FOR EACH ROW MODE DB2ROW SECURED WHEN(SUBSTR(N.COL2_ssn,1,7) = 'XXX-XX-') BEGIN IF INSERTING THEN SET N.COL2_ssn = DEFAULT; ELSEIF UPDATING THEN SET N.COL2_ssn = O.COL2_ssn; END IF; END"}, {"label": "section_header", "id": 7, "page_no": 124, "cluster": {"id": 7, "label": "section_header", "bbox": {"l": 64.4358139038086, "t": 445.3469543457031, "r": 360.91705, "b": 462.0101318359375, "coord_origin": "TOPLEFT"}, "confidence": 0.968204915523529, "cells": [{"id": 32, "text": "6.9", "bbox": {"l": 64.800003, "t": 446.2207, "r": 87.247795, "b": 460.9837, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Triggers and functions (SECURED)", "bbox": {"l": 91.737335, "t": 446.2207, "r": 360.91705, "b": 460.9837, "coord_origin": "TOPLEFT"}}]}, "text": "6.9 Triggers and functions (SECURED)"}, {"label": "text", "id": 8, "page_no": 124, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.90432739257812, "t": 477.2076721191406, "r": 547.24677, "b": 536.2446899414062, "coord_origin": "TOPLEFT"}, "confidence": 0.984616219997406, "cells": [{"id": 34, "text": "There are some considerations that must be considered when there are triggers and ", "bbox": {"l": 136.8, "t": 478.48874, "r": 511.73724000000004, "b": 487.70172, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "functions on tables that have RCAC enabled. The purpose of SECURE for triggers and ", "bbox": {"l": 136.8, "t": 490.54831, "r": 522.49512, "b": 499.76129, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "functions is so that a user who is allowed to create a trigger or function is not necessarily able ", "bbox": {"l": 136.8, "t": 502.54813, "r": 547.24677, "b": 511.76111, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "to make it SECURE themselves. This prevents the trigger/function developer from adding ", "bbox": {"l": 136.8, "t": 514.5479399999999, "r": 532.30658, "b": 523.7609299999999, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "code that skims off data that they are not allowed to see.", "bbox": {"l": 136.8, "t": 526.5477599999999, "r": 386.24026, "b": 535.7607399999999, "coord_origin": "TOPLEFT"}}]}, "text": "There are some considerations that must be considered when there are triggers and functions on tables that have RCAC enabled. The purpose of SECURE for triggers and functions is so that a user who is allowed to create a trigger or function is not necessarily able to make it SECURE themselves. This prevents the trigger/function developer from adding code that skims off data that they are not allowed to see."}, {"label": "section_header", "id": 9, "page_no": 124, "cluster": {"id": 9, "label": "section_header", "bbox": {"l": 64.1463851928711, "t": 555.9064331054688, "r": 151.61127, "b": 569.22412109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9636334180831909, "cells": [{"id": 39, "text": "6.9.1", "bbox": {"l": 64.800003, "t": 556.37462, "r": 94.489105, "b": 568.36263, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Triggers", "bbox": {"l": 98.200249, "t": 556.37462, "r": 151.61127, "b": 568.36263, "coord_origin": "TOPLEFT"}}]}, "text": "6.9.1 Triggers"}, {"label": "text", "id": 10, "page_no": 124, "cluster": {"id": 10, "label": "text", "bbox": {"l": 135.57107543945312, "t": 582.0809936523438, "r": 547.28851, "b": 627.99658203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9859280586242676, "cells": [{"id": 41, "text": "Triggers have access to the data in rows outside of the row permission or column masking. ", "bbox": {"l": 136.8, "t": 582.52863, "r": 539.66608, "b": 591.74162, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "An after trigger has access to the new row image after the permission has allowed the update ", "bbox": {"l": 136.80002, "t": 594.52843, "r": 547.28851, "b": 603.7414200000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "or insert to occur. Therefore, the triggers can potentially change the insert or update image ", "bbox": {"l": 136.80002, "t": 606.52823, "r": 539.64722, "b": 615.74123, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "value so that it violates the permission.", "bbox": {"l": 136.80002, "t": 618.52803, "r": 308.52338, "b": 627.74103, "coord_origin": "TOPLEFT"}}]}, "text": "Triggers have access to the data in rows outside of the row permission or column masking. An after trigger has access to the new row image after the permission has allowed the update or insert to occur. Therefore, the triggers can potentially change the insert or update image value so that it violates the permission."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 124, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 370.6949157714844, "t": 754.8876342773438, "r": 517.96918, "b": 763.9262084960938, "coord_origin": "TOPLEFT"}, "confidence": 0.9537138938903809, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 371.28, "t": 755.538002, "r": 517.96918, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 124, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.17626953125, "t": 754.1600341796875, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9287368059158325, "cells": [{"id": 1, "text": "109", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "109"}]}}, {"page_no": 125, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "110 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Any triggers that are defined on a table must be created with an attribute that designates that ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 547.19171, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "it is SECURED when RCAC definitions are created or altered for that table, as shown in ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 525.63544, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Example 6-6. The same applies to a view that has an instead of trigger. That trigger must be ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 546.29614, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "secure at the point RCAC is enabled for any of the underlying tables the view is over.", "bbox": {"l": 136.8, "t": 107.50811999999996, "r": 510.41656, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Example 6-6 Trigger SECURED", "bbox": {"l": 136.8, "t": 129.49805000000003, "r": 268.7634, "b": 137.82299999999998, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "/* Trigger created with the SECURED attribute */ ", "bbox": {"l": 136.8, "t": 146.65808000000004, "r": 381.65662, "b": 155.43286, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "CREATE TRIGGER PREVENT_MASK_SSN BEFORE INSERT OR UPDATE ON MY_LIB.EMP_INFO", "bbox": {"l": 136.8, "t": 158.65790000000004, "r": 506.5749200000001, "b": 167.43268, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "REFERENCING NEW ROW AS N OLD ROW AS O", "bbox": {"l": 136.8, "t": 170.65770999999995, "r": 321.65756, "b": 179.4325, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "FOR EACH ROW MODE DB2ROW", "bbox": {"l": 136.8, "t": 182.65752999999995, "r": 256.73828, "b": 191.43231000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "SECURED", "bbox": {"l": 136.8, "t": 194.65734999999995, "r": 171.77951, "b": 203.48193000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "WHEN(SUBSTR(N.COL2_ssn,1,7) = 'XXX-XX-')", "bbox": {"l": 136.8, "t": 206.65716999999995, "r": 336.65732, "b": 215.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": " BEGIN", "bbox": {"l": 136.8, "t": 218.65697999999998, "r": 171.77951, "b": 227.43176000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " IF INSERTING THEN SET N.COL2_ssn = DEFAULT;", "bbox": {"l": 136.8, "t": 230.65679999999998, "r": 361.67685, "b": 239.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": " ELSEIF UPDATING THEN SET N.COL2_ssn = O.COL2_ssn;", "bbox": {"l": 136.8, "t": 242.65661999999998, "r": 391.61661, "b": 251.43140000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": " END IF;", "bbox": {"l": 136.8, "t": 254.65643, "r": 181.73952, "b": 263.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "END", "bbox": {"l": 136.8, "t": 266.65625, "r": 151.74001, "b": 275.43102999999996, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "6.9.2", "bbox": {"l": 64.800003, "t": 303.35474, "r": 95.878601, "b": 315.34271, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Functions", "bbox": {"l": 99.763428, "t": 303.35474, "r": 166.5321, "b": 315.34271, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Within a ", "bbox": {"l": 136.8, "t": 329.50872999999996, "r": 175.10915, "b": 338.72171, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "CREATE PERMISSION ", "bbox": {"l": 175.19978, "t": 329.65811, "r": 264.23819, "b": 338.4827, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "or ", "bbox": {"l": 264.2402, "t": 329.50872999999996, "r": 275.93024, "b": 338.72171, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "CREATE MASK", "bbox": {"l": 275.70016, "t": 329.65811, "r": 330.17938, "b": 338.4827, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": ", a function can be called. Because that UDF has ", "bbox": {"l": 330.18036, "t": 329.50872999999996, "r": 547.26648, "b": 338.72171, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "access to the data before the RCAC rules are applied, the SECURE attribute is required on ", "bbox": {"l": 136.79997, "t": 341.50854, "r": 541.7995, "b": 350.72153, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "that function, as shown in Example 6-7.", "bbox": {"l": 136.79997, "t": 353.50836, "r": 311.13376, "b": 362.72134, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Example 6-7 Specifying SECURED on a function", "bbox": {"l": 136.8, "t": 375.55798, "r": 336.69186, "b": 383.88300000000004, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "CREATE PERMISSION SCHEMA.PERM1 ON SCHEMA.TABLE1 FOR ROWS WHERE", "bbox": {"l": 136.8, "t": 392.65811, "r": 446.63564999999994, "b": 401.43289, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "MY_UDF(CURRENT_USER,COLUMN1) = 1 ", "bbox": {"l": 136.8, "t": 404.65793, "r": 301.6778, "b": 413.43271, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "ENFORCED FOR ALL ACCESS ENABLE;", "bbox": {"l": 136.8, "t": 416.65775, "r": 291.71783, "b": 425.43253, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "CREATE FUNCTION MY_UDF", "bbox": {"l": 136.8, "t": 440.65735, "r": 246.71854, "b": 449.43213, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "(INP1 CHAR(32),", "bbox": {"l": 151.20016, "t": 452.65717, "r": 226.13921, "b": 461.43195, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "INP2 INTEGER)", "bbox": {"l": 151.20016, "t": 464.65698, "r": 216.11943000000002, "b": 473.43176, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Returns INTEGER", "bbox": {"l": 136.8, "t": 476.6568, "r": 211.73903, "b": 485.43158, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "LANGUAGE SQL", "bbox": {"l": 136.8, "t": 488.65662, "r": 196.73926, "b": 497.4314, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "CONTAINS SQL ", "bbox": {"l": 136.8, "t": 500.65643, "r": 201.71927, "b": 509.43121, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "SECURED", "bbox": {"l": 136.8, "t": 512.65625, "r": 171.77951, "b": 521.48083, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "The SECURED attribute of MY_UDF signifies that the function is considered secure for ", "bbox": {"l": 136.8, "t": 541.54724, "r": 523.70319, "b": 550.7602400000001, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "RCAC. If a function is called from an SQL statement, and references a column in a table that ", "bbox": {"l": 136.8, "t": 553.54704, "r": 547.25848, "b": 562.76004, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "has RCAC, it must be declared as secure. In that case, if the secure function calls other ", "bbox": {"l": 136.8, "t": 565.54684, "r": 525.11749, "b": 574.7598399999999, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "functions, they are not validated to confirm whether they are secure.", "bbox": {"l": 136.8, "t": 577.54665, "r": 436.59887999999995, "b": 586.75964, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Consider the following examples:", "bbox": {"l": 136.8, "t": 599.50645, "r": 282.67517, "b": 608.71945, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "GLYPH", "bbox": {"l": 136.8, "t": 616.69542, "r": 141.78, "b": 625.47017, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Table1 has RCAC defined and enabled. ", "bbox": {"l": 151.20016, "t": 616.54602, "r": 328.26205, "b": 625.75902, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "SELECT", "bbox": {"l": 328.26007, "t": 616.69542, "r": 358.25958, "b": 625.5199700000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": " MY_UDF2(Column2) from schema.table1.", "bbox": {"l": 358.25958, "t": 616.54602, "r": 547.18878, "b": 625.75902, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "MY_UDF2 must be created with the SECURED attribute. If MY_UDF2 invokes MY_UDF3, ", "bbox": {"l": 151.19916, "t": 633.52583, "r": 547.14795, "b": 642.73883, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "there is no checking to ensure that it is also created with SECURED.", "bbox": {"l": 151.19916, "t": 645.52563, "r": 453.13351000000006, "b": 654.7386300000001, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "NOT SECURED is the default on the create function unless SECURED is explicitly ", "bbox": {"l": 151.19916, "t": 662.50545, "r": 517.91437, "b": 671.71844, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "selected.", "bbox": {"l": 151.19917, "t": 674.5052499999999, "r": 191.17961, "b": 683.71825, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "This same rule applies for any function that might be invoked with a masked column ", "bbox": {"l": 151.19917, "t": 691.54482, "r": 523.39453, "b": 700.75782, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "specified as an argument.", "bbox": {"l": 151.19917, "t": 703.544624, "r": 265.68439, "b": 712.757629, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.38241577148438, "t": 754.223876953125, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9262574315071106, "cells": [{"id": 0, "text": "110 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 98.55854797363281, "t": 754.67041015625, "r": 339.81958, "b": 764.0196533203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9510535597801208, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.9443817138672, "t": 70.57403564453125, "r": 547.19171, "b": 116.93487548828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9825777411460876, "cells": [{"id": 2, "text": "Any triggers that are defined on a table must be created with an attribute that designates that ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 547.19171, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "it is SECURED when RCAC definitions are created or altered for that table, as shown in ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 525.63544, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Example 6-6. The same applies to a view that has an instead of trigger. That trigger must be ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 546.29614, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "secure at the point RCAC is enabled for any of the underlying tables the view is over.", "bbox": {"l": 136.8, "t": 107.50811999999996, "r": 510.41656, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.2041778564453, "t": 128.47238159179688, "r": 269.5399475097656, "b": 138.4495086669922, "coord_origin": "TOPLEFT"}, "confidence": 0.6751627326011658, "cells": [{"id": 6, "text": "Example 6-6 Trigger SECURED", "bbox": {"l": 136.8, "t": 129.49805000000003, "r": 268.7634, "b": 137.82299999999998, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "code", "bbox": {"l": 135.4769287109375, "t": 144.5382080078125, "r": 506.97552490234375, "b": 277.2768249511719, "coord_origin": "TOPLEFT"}, "confidence": 0.8320841193199158, "cells": [{"id": 7, "text": "/* Trigger created with the SECURED attribute */ ", "bbox": {"l": 136.8, "t": 146.65808000000004, "r": 381.65662, "b": 155.43286, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "CREATE TRIGGER PREVENT_MASK_SSN BEFORE INSERT OR UPDATE ON MY_LIB.EMP_INFO", "bbox": {"l": 136.8, "t": 158.65790000000004, "r": 506.5749200000001, "b": 167.43268, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "REFERENCING NEW ROW AS N OLD ROW AS O", "bbox": {"l": 136.8, "t": 170.65770999999995, "r": 321.65756, "b": 179.4325, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "FOR EACH ROW MODE DB2ROW", "bbox": {"l": 136.8, "t": 182.65752999999995, "r": 256.73828, "b": 191.43231000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "SECURED", "bbox": {"l": 136.8, "t": 194.65734999999995, "r": 171.77951, "b": 203.48193000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "WHEN(SUBSTR(N.COL2_ssn,1,7) = 'XXX-XX-')", "bbox": {"l": 136.8, "t": 206.65716999999995, "r": 336.65732, "b": 215.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": " BEGIN", "bbox": {"l": 136.8, "t": 218.65697999999998, "r": 171.77951, "b": 227.43176000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " IF INSERTING THEN SET N.COL2_ssn = DEFAULT;", "bbox": {"l": 136.8, "t": 230.65679999999998, "r": 361.67685, "b": 239.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": " ELSEIF UPDATING THEN SET N.COL2_ssn = O.COL2_ssn;", "bbox": {"l": 136.8, "t": 242.65661999999998, "r": 391.61661, "b": 251.43140000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": " END IF;", "bbox": {"l": 136.8, "t": 254.65643, "r": 181.73952, "b": 263.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "END", "bbox": {"l": 136.8, "t": 266.65625, "r": 151.74001, "b": 275.43102999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "section_header", "bbox": {"l": 64.11894226074219, "t": 302.4302978515625, "r": 166.5321, "b": 315.34271, "coord_origin": "TOPLEFT"}, "confidence": 0.9550953507423401, "cells": [{"id": 18, "text": "6.9.2", "bbox": {"l": 64.800003, "t": 303.35474, "r": 95.878601, "b": 315.34271, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Functions", "bbox": {"l": 99.763428, "t": 303.35474, "r": 166.5321, "b": 315.34271, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 135.63002014160156, "t": 328.42071533203125, "r": 547.26648, "b": 362.8425598144531, "coord_origin": "TOPLEFT"}, "confidence": 0.9755208492279053, "cells": [{"id": 20, "text": "Within a ", "bbox": {"l": 136.8, "t": 329.50872999999996, "r": 175.10915, "b": 338.72171, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "CREATE PERMISSION ", "bbox": {"l": 175.19978, "t": 329.65811, "r": 264.23819, "b": 338.4827, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "or ", "bbox": {"l": 264.2402, "t": 329.50872999999996, "r": 275.93024, "b": 338.72171, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "CREATE MASK", "bbox": {"l": 275.70016, "t": 329.65811, "r": 330.17938, "b": 338.4827, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": ", a function can be called. Because that UDF has ", "bbox": {"l": 330.18036, "t": 329.50872999999996, "r": 547.26648, "b": 338.72171, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "access to the data before the RCAC rules are applied, the SECURE attribute is required on ", "bbox": {"l": 136.79997, "t": 341.50854, "r": 541.7995, "b": 350.72153, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "that function, as shown in Example 6-7.", "bbox": {"l": 136.79997, "t": 353.50836, "r": 311.13376, "b": 362.72134, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "code", "bbox": {"l": 134.9473114013672, "t": 375.2805480957031, "r": 547.4903564453125, "b": 525.2118530273438, "coord_origin": "TOPLEFT"}, "confidence": 0.7434961199760437, "cells": [{"id": 27, "text": "Example 6-7 Specifying SECURED on a function", "bbox": {"l": 136.8, "t": 375.55798, "r": 336.69186, "b": 383.88300000000004, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "CREATE PERMISSION SCHEMA.PERM1 ON SCHEMA.TABLE1 FOR ROWS WHERE", "bbox": {"l": 136.8, "t": 392.65811, "r": 446.63564999999994, "b": 401.43289, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "MY_UDF(CURRENT_USER,COLUMN1) = 1 ", "bbox": {"l": 136.8, "t": 404.65793, "r": 301.6778, "b": 413.43271, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "ENFORCED FOR ALL ACCESS ENABLE;", "bbox": {"l": 136.8, "t": 416.65775, "r": 291.71783, "b": 425.43253, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "CREATE FUNCTION MY_UDF", "bbox": {"l": 136.8, "t": 440.65735, "r": 246.71854, "b": 449.43213, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "(INP1 CHAR(32),", "bbox": {"l": 151.20016, "t": 452.65717, "r": 226.13921, "b": 461.43195, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "INP2 INTEGER)", "bbox": {"l": 151.20016, "t": 464.65698, "r": 216.11943000000002, "b": 473.43176, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Returns INTEGER", "bbox": {"l": 136.8, "t": 476.6568, "r": 211.73903, "b": 485.43158, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "LANGUAGE SQL", "bbox": {"l": 136.8, "t": 488.65662, "r": 196.73926, "b": 497.4314, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "CONTAINS SQL ", "bbox": {"l": 136.8, "t": 500.65643, "r": 201.71927, "b": 509.43121, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "SECURED", "bbox": {"l": 136.8, "t": 512.65625, "r": 171.77951, "b": 521.48083, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 135.8338165283203, "t": 540.63720703125, "r": 547.25848, "b": 586.96923828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9799280166625977, "cells": [{"id": 38, "text": "The SECURED attribute of MY_UDF signifies that the function is considered secure for ", "bbox": {"l": 136.8, "t": 541.54724, "r": 523.70319, "b": 550.7602400000001, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "RCAC. If a function is called from an SQL statement, and references a column in a table that ", "bbox": {"l": 136.8, "t": 553.54704, "r": 547.25848, "b": 562.76004, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "has RCAC, it must be declared as secure. In that case, if the secure function calls other ", "bbox": {"l": 136.8, "t": 565.54684, "r": 525.11749, "b": 574.7598399999999, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "functions, they are not validated to confirm whether they are secure.", "bbox": {"l": 136.8, "t": 577.54665, "r": 436.59887999999995, "b": 586.75964, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 136.09840393066406, "t": 598.6279296875, "r": 282.67517, "b": 608.9580078125, "coord_origin": "TOPLEFT"}, "confidence": 0.7475109100341797, "cells": [{"id": 42, "text": "Consider the following examples:", "bbox": {"l": 136.8, "t": 599.50645, "r": 282.67517, "b": 608.71945, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 135.61990356445312, "t": 615.7908935546875, "r": 547.18878, "b": 625.75902, "coord_origin": "TOPLEFT"}, "confidence": 0.8809047937393188, "cells": [{"id": 43, "text": "GLYPH", "bbox": {"l": 136.8, "t": 616.69542, "r": 141.78, "b": 625.47017, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Table1 has RCAC defined and enabled. ", "bbox": {"l": 151.20016, "t": 616.54602, "r": 328.26205, "b": 625.75902, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "SELECT", "bbox": {"l": 328.26007, "t": 616.69542, "r": 358.25958, "b": 625.5199700000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": " MY_UDF2(Column2) from schema.table1.", "bbox": {"l": 358.25958, "t": 616.54602, "r": 547.18878, "b": 625.75902, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 150.3736572265625, "t": 632.4197387695312, "r": 547.14795, "b": 654.8876953125, "coord_origin": "TOPLEFT"}, "confidence": 0.6744217872619629, "cells": [{"id": 47, "text": "MY_UDF2 must be created with the SECURED attribute. If MY_UDF2 invokes MY_UDF3, ", "bbox": {"l": 151.19916, "t": 633.52583, "r": 547.14795, "b": 642.73883, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "there is no checking to ensure that it is also created with SECURED.", "bbox": {"l": 151.19916, "t": 645.52563, "r": 453.13351000000006, "b": 654.7386300000001, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "list_item", "bbox": {"l": 150.47885131835938, "t": 661.2188720703125, "r": 517.91437, "b": 683.71825, "coord_origin": "TOPLEFT"}, "confidence": 0.704971969127655, "cells": [{"id": 49, "text": "NOT SECURED is the default on the create function unless SECURED is explicitly ", "bbox": {"l": 151.19916, "t": 662.50545, "r": 517.91437, "b": 671.71844, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "selected.", "bbox": {"l": 151.19917, "t": 674.5052499999999, "r": 191.17961, "b": 683.71825, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 150.35072326660156, "t": 690.4181518554688, "r": 523.39453, "b": 713.2664794921875, "coord_origin": "TOPLEFT"}, "confidence": 0.856052815914154, "cells": [{"id": 51, "text": "This same rule applies for any function that might be invoked with a masked column ", "bbox": {"l": 151.19917, "t": 691.54482, "r": 523.39453, "b": 700.75782, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "specified as an argument.", "bbox": {"l": 151.19917, "t": 703.544624, "r": 265.68439, "b": 712.757629, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 125, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.38241577148438, "t": 754.223876953125, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9262574315071106, "cells": [{"id": 0, "text": "110 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "110"}, {"label": "page_footer", "id": 1, "page_no": 125, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.55854797363281, "t": 754.67041015625, "r": 339.81958, "b": 764.0196533203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9510535597801208, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 2, "page_no": 125, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.9443817138672, "t": 70.57403564453125, "r": 547.19171, "b": 116.93487548828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9825777411460876, "cells": [{"id": 2, "text": "Any triggers that are defined on a table must be created with an attribute that designates that ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 547.19171, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "it is SECURED when RCAC definitions are created or altered for that table, as shown in ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 525.63544, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Example 6-6. The same applies to a view that has an instead of trigger. That trigger must be ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 546.29614, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "secure at the point RCAC is enabled for any of the underlying tables the view is over.", "bbox": {"l": 136.8, "t": 107.50811999999996, "r": 510.41656, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Any triggers that are defined on a table must be created with an attribute that designates that it is SECURED when RCAC definitions are created or altered for that table, as shown in Example 6-6. The same applies to a view that has an instead of trigger. That trigger must be secure at the point RCAC is enabled for any of the underlying tables the view is over."}, {"label": "caption", "id": 3, "page_no": 125, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.2041778564453, "t": 128.47238159179688, "r": 269.5399475097656, "b": 138.4495086669922, "coord_origin": "TOPLEFT"}, "confidence": 0.6751627326011658, "cells": [{"id": 6, "text": "Example 6-6 Trigger SECURED", "bbox": {"l": 136.8, "t": 129.49805000000003, "r": 268.7634, "b": 137.82299999999998, "coord_origin": "TOPLEFT"}}]}, "text": "Example 6-6 Trigger SECURED"}, {"label": "code", "id": 4, "page_no": 125, "cluster": {"id": 4, "label": "code", "bbox": {"l": 135.4769287109375, "t": 144.5382080078125, "r": 506.97552490234375, "b": 277.2768249511719, "coord_origin": "TOPLEFT"}, "confidence": 0.8320841193199158, "cells": [{"id": 7, "text": "/* Trigger created with the SECURED attribute */ ", "bbox": {"l": 136.8, "t": 146.65808000000004, "r": 381.65662, "b": 155.43286, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "CREATE TRIGGER PREVENT_MASK_SSN BEFORE INSERT OR UPDATE ON MY_LIB.EMP_INFO", "bbox": {"l": 136.8, "t": 158.65790000000004, "r": 506.5749200000001, "b": 167.43268, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "REFERENCING NEW ROW AS N OLD ROW AS O", "bbox": {"l": 136.8, "t": 170.65770999999995, "r": 321.65756, "b": 179.4325, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "FOR EACH ROW MODE DB2ROW", "bbox": {"l": 136.8, "t": 182.65752999999995, "r": 256.73828, "b": 191.43231000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "SECURED", "bbox": {"l": 136.8, "t": 194.65734999999995, "r": 171.77951, "b": 203.48193000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "WHEN(SUBSTR(N.COL2_ssn,1,7) = 'XXX-XX-')", "bbox": {"l": 136.8, "t": 206.65716999999995, "r": 336.65732, "b": 215.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": " BEGIN", "bbox": {"l": 136.8, "t": 218.65697999999998, "r": 171.77951, "b": 227.43176000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " IF INSERTING THEN SET N.COL2_ssn = DEFAULT;", "bbox": {"l": 136.8, "t": 230.65679999999998, "r": 361.67685, "b": 239.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": " ELSEIF UPDATING THEN SET N.COL2_ssn = O.COL2_ssn;", "bbox": {"l": 136.8, "t": 242.65661999999998, "r": 391.61661, "b": 251.43140000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": " END IF;", "bbox": {"l": 136.8, "t": 254.65643, "r": 181.73952, "b": 263.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "END", "bbox": {"l": 136.8, "t": 266.65625, "r": 151.74001, "b": 275.43102999999996, "coord_origin": "TOPLEFT"}}]}, "text": "/* Trigger created with the SECURED attribute */ CREATE TRIGGER PREVENT_MASK_SSN BEFORE INSERT OR UPDATE ON MY_LIB.EMP_INFO REFERENCING NEW ROW AS N OLD ROW AS O FOR EACH ROW MODE DB2ROW SECURED WHEN(SUBSTR(N.COL2_ssn,1,7) = 'XXX-XX-') BEGIN IF INSERTING THEN SET N.COL2_ssn = DEFAULT; ELSEIF UPDATING THEN SET N.COL2_ssn = O.COL2_ssn; END IF; END"}, {"label": "section_header", "id": 5, "page_no": 125, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 64.11894226074219, "t": 302.4302978515625, "r": 166.5321, "b": 315.34271, "coord_origin": "TOPLEFT"}, "confidence": 0.9550953507423401, "cells": [{"id": 18, "text": "6.9.2", "bbox": {"l": 64.800003, "t": 303.35474, "r": 95.878601, "b": 315.34271, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Functions", "bbox": {"l": 99.763428, "t": 303.35474, "r": 166.5321, "b": 315.34271, "coord_origin": "TOPLEFT"}}]}, "text": "6.9.2 Functions"}, {"label": "text", "id": 6, "page_no": 125, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.63002014160156, "t": 328.42071533203125, "r": 547.26648, "b": 362.8425598144531, "coord_origin": "TOPLEFT"}, "confidence": 0.9755208492279053, "cells": [{"id": 20, "text": "Within a ", "bbox": {"l": 136.8, "t": 329.50872999999996, "r": 175.10915, "b": 338.72171, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "CREATE PERMISSION ", "bbox": {"l": 175.19978, "t": 329.65811, "r": 264.23819, "b": 338.4827, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "or ", "bbox": {"l": 264.2402, "t": 329.50872999999996, "r": 275.93024, "b": 338.72171, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "CREATE MASK", "bbox": {"l": 275.70016, "t": 329.65811, "r": 330.17938, "b": 338.4827, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": ", a function can be called. Because that UDF has ", "bbox": {"l": 330.18036, "t": 329.50872999999996, "r": 547.26648, "b": 338.72171, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "access to the data before the RCAC rules are applied, the SECURE attribute is required on ", "bbox": {"l": 136.79997, "t": 341.50854, "r": 541.7995, "b": 350.72153, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "that function, as shown in Example 6-7.", "bbox": {"l": 136.79997, "t": 353.50836, "r": 311.13376, "b": 362.72134, "coord_origin": "TOPLEFT"}}]}, "text": "Within a CREATE PERMISSION or CREATE MASK , a function can be called. Because that UDF has access to the data before the RCAC rules are applied, the SECURE attribute is required on that function, as shown in Example 6-7."}, {"label": "code", "id": 7, "page_no": 125, "cluster": {"id": 7, "label": "code", "bbox": {"l": 134.9473114013672, "t": 375.2805480957031, "r": 547.4903564453125, "b": 525.2118530273438, "coord_origin": "TOPLEFT"}, "confidence": 0.7434961199760437, "cells": [{"id": 27, "text": "Example 6-7 Specifying SECURED on a function", "bbox": {"l": 136.8, "t": 375.55798, "r": 336.69186, "b": 383.88300000000004, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "CREATE PERMISSION SCHEMA.PERM1 ON SCHEMA.TABLE1 FOR ROWS WHERE", "bbox": {"l": 136.8, "t": 392.65811, "r": 446.63564999999994, "b": 401.43289, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "MY_UDF(CURRENT_USER,COLUMN1) = 1 ", "bbox": {"l": 136.8, "t": 404.65793, "r": 301.6778, "b": 413.43271, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "ENFORCED FOR ALL ACCESS ENABLE;", "bbox": {"l": 136.8, "t": 416.65775, "r": 291.71783, "b": 425.43253, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "CREATE FUNCTION MY_UDF", "bbox": {"l": 136.8, "t": 440.65735, "r": 246.71854, "b": 449.43213, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "(INP1 CHAR(32),", "bbox": {"l": 151.20016, "t": 452.65717, "r": 226.13921, "b": 461.43195, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "INP2 INTEGER)", "bbox": {"l": 151.20016, "t": 464.65698, "r": 216.11943000000002, "b": 473.43176, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Returns INTEGER", "bbox": {"l": 136.8, "t": 476.6568, "r": 211.73903, "b": 485.43158, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "LANGUAGE SQL", "bbox": {"l": 136.8, "t": 488.65662, "r": 196.73926, "b": 497.4314, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "CONTAINS SQL ", "bbox": {"l": 136.8, "t": 500.65643, "r": 201.71927, "b": 509.43121, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "SECURED", "bbox": {"l": 136.8, "t": 512.65625, "r": 171.77951, "b": 521.48083, "coord_origin": "TOPLEFT"}}]}, "text": "Example 6-7 Specifying SECURED on a function CREATE PERMISSION SCHEMA.PERM1 ON SCHEMA.TABLE1 FOR ROWS WHERE MY_UDF(CURRENT_USER,COLUMN1) = 1 ENFORCED FOR ALL ACCESS ENABLE; CREATE FUNCTION MY_UDF (INP1 CHAR(32), INP2 INTEGER) Returns INTEGER LANGUAGE SQL CONTAINS SQL SECURED"}, {"label": "text", "id": 8, "page_no": 125, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.8338165283203, "t": 540.63720703125, "r": 547.25848, "b": 586.96923828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9799280166625977, "cells": [{"id": 38, "text": "The SECURED attribute of MY_UDF signifies that the function is considered secure for ", "bbox": {"l": 136.8, "t": 541.54724, "r": 523.70319, "b": 550.7602400000001, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "RCAC. If a function is called from an SQL statement, and references a column in a table that ", "bbox": {"l": 136.8, "t": 553.54704, "r": 547.25848, "b": 562.76004, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "has RCAC, it must be declared as secure. In that case, if the secure function calls other ", "bbox": {"l": 136.8, "t": 565.54684, "r": 525.11749, "b": 574.7598399999999, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "functions, they are not validated to confirm whether they are secure.", "bbox": {"l": 136.8, "t": 577.54665, "r": 436.59887999999995, "b": 586.75964, "coord_origin": "TOPLEFT"}}]}, "text": "The SECURED attribute of MY_UDF signifies that the function is considered secure for RCAC. If a function is called from an SQL statement, and references a column in a table that has RCAC, it must be declared as secure. In that case, if the secure function calls other functions, they are not validated to confirm whether they are secure."}, {"label": "text", "id": 9, "page_no": 125, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.09840393066406, "t": 598.6279296875, "r": 282.67517, "b": 608.9580078125, "coord_origin": "TOPLEFT"}, "confidence": 0.7475109100341797, "cells": [{"id": 42, "text": "Consider the following examples:", "bbox": {"l": 136.8, "t": 599.50645, "r": 282.67517, "b": 608.71945, "coord_origin": "TOPLEFT"}}]}, "text": "Consider the following examples:"}, {"label": "list_item", "id": 10, "page_no": 125, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.61990356445312, "t": 615.7908935546875, "r": 547.18878, "b": 625.75902, "coord_origin": "TOPLEFT"}, "confidence": 0.8809047937393188, "cells": [{"id": 43, "text": "GLYPH", "bbox": {"l": 136.8, "t": 616.69542, "r": 141.78, "b": 625.47017, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Table1 has RCAC defined and enabled. ", "bbox": {"l": 151.20016, "t": 616.54602, "r": 328.26205, "b": 625.75902, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "SELECT", "bbox": {"l": 328.26007, "t": 616.69542, "r": 358.25958, "b": 625.5199700000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": " MY_UDF2(Column2) from schema.table1.", "bbox": {"l": 358.25958, "t": 616.54602, "r": 547.18878, "b": 625.75902, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Table1 has RCAC defined and enabled. SELECT MY_UDF2(Column2) from schema.table1."}, {"label": "list_item", "id": 11, "page_no": 125, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 150.3736572265625, "t": 632.4197387695312, "r": 547.14795, "b": 654.8876953125, "coord_origin": "TOPLEFT"}, "confidence": 0.6744217872619629, "cells": [{"id": 47, "text": "MY_UDF2 must be created with the SECURED attribute. If MY_UDF2 invokes MY_UDF3, ", "bbox": {"l": 151.19916, "t": 633.52583, "r": 547.14795, "b": 642.73883, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "there is no checking to ensure that it is also created with SECURED.", "bbox": {"l": 151.19916, "t": 645.52563, "r": 453.13351000000006, "b": 654.7386300000001, "coord_origin": "TOPLEFT"}}]}, "text": "MY_UDF2 must be created with the SECURED attribute. If MY_UDF2 invokes MY_UDF3, there is no checking to ensure that it is also created with SECURED."}, {"label": "list_item", "id": 12, "page_no": 125, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 150.47885131835938, "t": 661.2188720703125, "r": 517.91437, "b": 683.71825, "coord_origin": "TOPLEFT"}, "confidence": 0.704971969127655, "cells": [{"id": 49, "text": "NOT SECURED is the default on the create function unless SECURED is explicitly ", "bbox": {"l": 151.19916, "t": 662.50545, "r": 517.91437, "b": 671.71844, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "selected.", "bbox": {"l": 151.19917, "t": 674.5052499999999, "r": 191.17961, "b": 683.71825, "coord_origin": "TOPLEFT"}}]}, "text": "NOT SECURED is the default on the create function unless SECURED is explicitly selected."}, {"label": "text", "id": 13, "page_no": 125, "cluster": {"id": 13, "label": "text", "bbox": {"l": 150.35072326660156, "t": 690.4181518554688, "r": 523.39453, "b": 713.2664794921875, "coord_origin": "TOPLEFT"}, "confidence": 0.856052815914154, "cells": [{"id": 51, "text": "This same rule applies for any function that might be invoked with a masked column ", "bbox": {"l": 151.19917, "t": 691.54482, "r": 523.39453, "b": 700.75782, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "specified as an argument.", "bbox": {"l": 151.19917, "t": 703.544624, "r": 265.68439, "b": 712.757629, "coord_origin": "TOPLEFT"}}]}, "text": "This same rule applies for any function that might be invoked with a masked column specified as an argument."}], "body": [{"label": "text", "id": 2, "page_no": 125, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.9443817138672, "t": 70.57403564453125, "r": 547.19171, "b": 116.93487548828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9825777411460876, "cells": [{"id": 2, "text": "Any triggers that are defined on a table must be created with an attribute that designates that ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 547.19171, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "it is SECURED when RCAC definitions are created or altered for that table, as shown in ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 525.63544, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Example 6-6. The same applies to a view that has an instead of trigger. That trigger must be ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 546.29614, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "secure at the point RCAC is enabled for any of the underlying tables the view is over.", "bbox": {"l": 136.8, "t": 107.50811999999996, "r": 510.41656, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Any triggers that are defined on a table must be created with an attribute that designates that it is SECURED when RCAC definitions are created or altered for that table, as shown in Example 6-6. The same applies to a view that has an instead of trigger. That trigger must be secure at the point RCAC is enabled for any of the underlying tables the view is over."}, {"label": "caption", "id": 3, "page_no": 125, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.2041778564453, "t": 128.47238159179688, "r": 269.5399475097656, "b": 138.4495086669922, "coord_origin": "TOPLEFT"}, "confidence": 0.6751627326011658, "cells": [{"id": 6, "text": "Example 6-6 Trigger SECURED", "bbox": {"l": 136.8, "t": 129.49805000000003, "r": 268.7634, "b": 137.82299999999998, "coord_origin": "TOPLEFT"}}]}, "text": "Example 6-6 Trigger SECURED"}, {"label": "code", "id": 4, "page_no": 125, "cluster": {"id": 4, "label": "code", "bbox": {"l": 135.4769287109375, "t": 144.5382080078125, "r": 506.97552490234375, "b": 277.2768249511719, "coord_origin": "TOPLEFT"}, "confidence": 0.8320841193199158, "cells": [{"id": 7, "text": "/* Trigger created with the SECURED attribute */ ", "bbox": {"l": 136.8, "t": 146.65808000000004, "r": 381.65662, "b": 155.43286, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "CREATE TRIGGER PREVENT_MASK_SSN BEFORE INSERT OR UPDATE ON MY_LIB.EMP_INFO", "bbox": {"l": 136.8, "t": 158.65790000000004, "r": 506.5749200000001, "b": 167.43268, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "REFERENCING NEW ROW AS N OLD ROW AS O", "bbox": {"l": 136.8, "t": 170.65770999999995, "r": 321.65756, "b": 179.4325, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "FOR EACH ROW MODE DB2ROW", "bbox": {"l": 136.8, "t": 182.65752999999995, "r": 256.73828, "b": 191.43231000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "SECURED", "bbox": {"l": 136.8, "t": 194.65734999999995, "r": 171.77951, "b": 203.48193000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "WHEN(SUBSTR(N.COL2_ssn,1,7) = 'XXX-XX-')", "bbox": {"l": 136.8, "t": 206.65716999999995, "r": 336.65732, "b": 215.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": " BEGIN", "bbox": {"l": 136.8, "t": 218.65697999999998, "r": 171.77951, "b": 227.43176000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " IF INSERTING THEN SET N.COL2_ssn = DEFAULT;", "bbox": {"l": 136.8, "t": 230.65679999999998, "r": 361.67685, "b": 239.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": " ELSEIF UPDATING THEN SET N.COL2_ssn = O.COL2_ssn;", "bbox": {"l": 136.8, "t": 242.65661999999998, "r": 391.61661, "b": 251.43140000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": " END IF;", "bbox": {"l": 136.8, "t": 254.65643, "r": 181.73952, "b": 263.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "END", "bbox": {"l": 136.8, "t": 266.65625, "r": 151.74001, "b": 275.43102999999996, "coord_origin": "TOPLEFT"}}]}, "text": "/* Trigger created with the SECURED attribute */ CREATE TRIGGER PREVENT_MASK_SSN BEFORE INSERT OR UPDATE ON MY_LIB.EMP_INFO REFERENCING NEW ROW AS N OLD ROW AS O FOR EACH ROW MODE DB2ROW SECURED WHEN(SUBSTR(N.COL2_ssn,1,7) = 'XXX-XX-') BEGIN IF INSERTING THEN SET N.COL2_ssn = DEFAULT; ELSEIF UPDATING THEN SET N.COL2_ssn = O.COL2_ssn; END IF; END"}, {"label": "section_header", "id": 5, "page_no": 125, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 64.11894226074219, "t": 302.4302978515625, "r": 166.5321, "b": 315.34271, "coord_origin": "TOPLEFT"}, "confidence": 0.9550953507423401, "cells": [{"id": 18, "text": "6.9.2", "bbox": {"l": 64.800003, "t": 303.35474, "r": 95.878601, "b": 315.34271, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Functions", "bbox": {"l": 99.763428, "t": 303.35474, "r": 166.5321, "b": 315.34271, "coord_origin": "TOPLEFT"}}]}, "text": "6.9.2 Functions"}, {"label": "text", "id": 6, "page_no": 125, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.63002014160156, "t": 328.42071533203125, "r": 547.26648, "b": 362.8425598144531, "coord_origin": "TOPLEFT"}, "confidence": 0.9755208492279053, "cells": [{"id": 20, "text": "Within a ", "bbox": {"l": 136.8, "t": 329.50872999999996, "r": 175.10915, "b": 338.72171, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "CREATE PERMISSION ", "bbox": {"l": 175.19978, "t": 329.65811, "r": 264.23819, "b": 338.4827, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "or ", "bbox": {"l": 264.2402, "t": 329.50872999999996, "r": 275.93024, "b": 338.72171, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "CREATE MASK", "bbox": {"l": 275.70016, "t": 329.65811, "r": 330.17938, "b": 338.4827, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": ", a function can be called. Because that UDF has ", "bbox": {"l": 330.18036, "t": 329.50872999999996, "r": 547.26648, "b": 338.72171, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "access to the data before the RCAC rules are applied, the SECURE attribute is required on ", "bbox": {"l": 136.79997, "t": 341.50854, "r": 541.7995, "b": 350.72153, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "that function, as shown in Example 6-7.", "bbox": {"l": 136.79997, "t": 353.50836, "r": 311.13376, "b": 362.72134, "coord_origin": "TOPLEFT"}}]}, "text": "Within a CREATE PERMISSION or CREATE MASK , a function can be called. Because that UDF has access to the data before the RCAC rules are applied, the SECURE attribute is required on that function, as shown in Example 6-7."}, {"label": "code", "id": 7, "page_no": 125, "cluster": {"id": 7, "label": "code", "bbox": {"l": 134.9473114013672, "t": 375.2805480957031, "r": 547.4903564453125, "b": 525.2118530273438, "coord_origin": "TOPLEFT"}, "confidence": 0.7434961199760437, "cells": [{"id": 27, "text": "Example 6-7 Specifying SECURED on a function", "bbox": {"l": 136.8, "t": 375.55798, "r": 336.69186, "b": 383.88300000000004, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "CREATE PERMISSION SCHEMA.PERM1 ON SCHEMA.TABLE1 FOR ROWS WHERE", "bbox": {"l": 136.8, "t": 392.65811, "r": 446.63564999999994, "b": 401.43289, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "MY_UDF(CURRENT_USER,COLUMN1) = 1 ", "bbox": {"l": 136.8, "t": 404.65793, "r": 301.6778, "b": 413.43271, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "ENFORCED FOR ALL ACCESS ENABLE;", "bbox": {"l": 136.8, "t": 416.65775, "r": 291.71783, "b": 425.43253, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "CREATE FUNCTION MY_UDF", "bbox": {"l": 136.8, "t": 440.65735, "r": 246.71854, "b": 449.43213, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "(INP1 CHAR(32),", "bbox": {"l": 151.20016, "t": 452.65717, "r": 226.13921, "b": 461.43195, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "INP2 INTEGER)", "bbox": {"l": 151.20016, "t": 464.65698, "r": 216.11943000000002, "b": 473.43176, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Returns INTEGER", "bbox": {"l": 136.8, "t": 476.6568, "r": 211.73903, "b": 485.43158, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "LANGUAGE SQL", "bbox": {"l": 136.8, "t": 488.65662, "r": 196.73926, "b": 497.4314, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "CONTAINS SQL ", "bbox": {"l": 136.8, "t": 500.65643, "r": 201.71927, "b": 509.43121, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "SECURED", "bbox": {"l": 136.8, "t": 512.65625, "r": 171.77951, "b": 521.48083, "coord_origin": "TOPLEFT"}}]}, "text": "Example 6-7 Specifying SECURED on a function CREATE PERMISSION SCHEMA.PERM1 ON SCHEMA.TABLE1 FOR ROWS WHERE MY_UDF(CURRENT_USER,COLUMN1) = 1 ENFORCED FOR ALL ACCESS ENABLE; CREATE FUNCTION MY_UDF (INP1 CHAR(32), INP2 INTEGER) Returns INTEGER LANGUAGE SQL CONTAINS SQL SECURED"}, {"label": "text", "id": 8, "page_no": 125, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.8338165283203, "t": 540.63720703125, "r": 547.25848, "b": 586.96923828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9799280166625977, "cells": [{"id": 38, "text": "The SECURED attribute of MY_UDF signifies that the function is considered secure for ", "bbox": {"l": 136.8, "t": 541.54724, "r": 523.70319, "b": 550.7602400000001, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "RCAC. If a function is called from an SQL statement, and references a column in a table that ", "bbox": {"l": 136.8, "t": 553.54704, "r": 547.25848, "b": 562.76004, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "has RCAC, it must be declared as secure. In that case, if the secure function calls other ", "bbox": {"l": 136.8, "t": 565.54684, "r": 525.11749, "b": 574.7598399999999, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "functions, they are not validated to confirm whether they are secure.", "bbox": {"l": 136.8, "t": 577.54665, "r": 436.59887999999995, "b": 586.75964, "coord_origin": "TOPLEFT"}}]}, "text": "The SECURED attribute of MY_UDF signifies that the function is considered secure for RCAC. If a function is called from an SQL statement, and references a column in a table that has RCAC, it must be declared as secure. In that case, if the secure function calls other functions, they are not validated to confirm whether they are secure."}, {"label": "text", "id": 9, "page_no": 125, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.09840393066406, "t": 598.6279296875, "r": 282.67517, "b": 608.9580078125, "coord_origin": "TOPLEFT"}, "confidence": 0.7475109100341797, "cells": [{"id": 42, "text": "Consider the following examples:", "bbox": {"l": 136.8, "t": 599.50645, "r": 282.67517, "b": 608.71945, "coord_origin": "TOPLEFT"}}]}, "text": "Consider the following examples:"}, {"label": "list_item", "id": 10, "page_no": 125, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.61990356445312, "t": 615.7908935546875, "r": 547.18878, "b": 625.75902, "coord_origin": "TOPLEFT"}, "confidence": 0.8809047937393188, "cells": [{"id": 43, "text": "GLYPH", "bbox": {"l": 136.8, "t": 616.69542, "r": 141.78, "b": 625.47017, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Table1 has RCAC defined and enabled. ", "bbox": {"l": 151.20016, "t": 616.54602, "r": 328.26205, "b": 625.75902, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "SELECT", "bbox": {"l": 328.26007, "t": 616.69542, "r": 358.25958, "b": 625.5199700000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": " MY_UDF2(Column2) from schema.table1.", "bbox": {"l": 358.25958, "t": 616.54602, "r": 547.18878, "b": 625.75902, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Table1 has RCAC defined and enabled. SELECT MY_UDF2(Column2) from schema.table1."}, {"label": "list_item", "id": 11, "page_no": 125, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 150.3736572265625, "t": 632.4197387695312, "r": 547.14795, "b": 654.8876953125, "coord_origin": "TOPLEFT"}, "confidence": 0.6744217872619629, "cells": [{"id": 47, "text": "MY_UDF2 must be created with the SECURED attribute. If MY_UDF2 invokes MY_UDF3, ", "bbox": {"l": 151.19916, "t": 633.52583, "r": 547.14795, "b": 642.73883, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "there is no checking to ensure that it is also created with SECURED.", "bbox": {"l": 151.19916, "t": 645.52563, "r": 453.13351000000006, "b": 654.7386300000001, "coord_origin": "TOPLEFT"}}]}, "text": "MY_UDF2 must be created with the SECURED attribute. If MY_UDF2 invokes MY_UDF3, there is no checking to ensure that it is also created with SECURED."}, {"label": "list_item", "id": 12, "page_no": 125, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 150.47885131835938, "t": 661.2188720703125, "r": 517.91437, "b": 683.71825, "coord_origin": "TOPLEFT"}, "confidence": 0.704971969127655, "cells": [{"id": 49, "text": "NOT SECURED is the default on the create function unless SECURED is explicitly ", "bbox": {"l": 151.19916, "t": 662.50545, "r": 517.91437, "b": 671.71844, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "selected.", "bbox": {"l": 151.19917, "t": 674.5052499999999, "r": 191.17961, "b": 683.71825, "coord_origin": "TOPLEFT"}}]}, "text": "NOT SECURED is the default on the create function unless SECURED is explicitly selected."}, {"label": "text", "id": 13, "page_no": 125, "cluster": {"id": 13, "label": "text", "bbox": {"l": 150.35072326660156, "t": 690.4181518554688, "r": 523.39453, "b": 713.2664794921875, "coord_origin": "TOPLEFT"}, "confidence": 0.856052815914154, "cells": [{"id": 51, "text": "This same rule applies for any function that might be invoked with a masked column ", "bbox": {"l": 151.19917, "t": 691.54482, "r": 523.39453, "b": 700.75782, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "specified as an argument.", "bbox": {"l": 151.19917, "t": 703.544624, "r": 265.68439, "b": 712.757629, "coord_origin": "TOPLEFT"}}]}, "text": "This same rule applies for any function that might be invoked with a masked column specified as an argument."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 125, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.38241577148438, "t": 754.223876953125, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9262574315071106, "cells": [{"id": 0, "text": "110 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "110"}, {"label": "page_footer", "id": 1, "page_no": 125, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.55854797363281, "t": 754.67041015625, "r": 339.81958, "b": 764.0196533203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9510535597801208, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 126, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 371.28, "t": 755.538002, "r": 517.96918, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "111", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "GLYPH", "bbox": {"l": 136.8002, "t": 71.65845000000002, "r": 141.7802, "b": 80.43322999999998, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Table2 column SSN has a column mask that is defined on it. ", "bbox": {"l": 151.20036, "t": 71.50903000000005, "r": 419.79163, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "SELECT", "bbox": {"l": 151.20036, "t": 88.63823999999988, "r": 181.14012, "b": 97.46283000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": " MY_UDF4(SSN) from table2. Because SSN has a column mask that is defined, ", "bbox": {"l": 181.19989, "t": 88.48883000000001, "r": 537.51099, "b": 97.70183999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "MY_UDF4 must be created with the SECURED attribute.", "bbox": {"l": 151.20036, "t": 100.48865, "r": 402.42545, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "6.10", "bbox": {"l": 64.800003, "t": 138.18073000000004, "r": 96.288353, "b": 152.94372999999996, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "RCAC is only one part of the solution", "bbox": {"l": 100.78667, "t": 138.18073000000004, "r": 387.57983, "b": 152.94372999999996, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "When designing and implementing RCAC row permissions, special attention should be given ", "bbox": {"l": 136.8, "t": 170.50867000000005, "r": 547.25458, "b": 179.72168, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "to the effectiveness and limitations of controlling data access. Data can be housed in objects ", "bbox": {"l": 136.8, "t": 182.50847999999996, "r": 547.1908, "b": 191.7215, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "other than tables or physical files. The role and responsibility of the database user, for ", "bbox": {"l": 136.8, "t": 194.50829999999996, "r": 516.95819, "b": 203.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "example, the database engineer, must be reconciled with their respective authority and ", "bbox": {"l": 136.79999, "t": 206.50811999999996, "r": 522.3587, "b": 215.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "access privileges.", "bbox": {"l": 136.79999, "t": 218.50793, "r": 215.6035, "b": 227.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Figure 6-25 illustrates that object level security is the first check and that RCAC permissions ", "bbox": {"l": 136.79999, "t": 240.52752999999996, "r": 544.86804, "b": 249.74054, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "provide control only on tables and physical files.", "bbox": {"l": 136.8, "t": 252.52733999999998, "r": 347.7309, "b": 261.74036, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Figure 6-25 Object-level security and RCAC permissions", "bbox": {"l": 136.8, "t": 564.7979, "r": 366.65814, "b": 573.12291, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "To get access to the table and the rows, the user must pass the object level authority test and ", "bbox": {"l": 136.8, "t": 590.80862, "r": 547.21686, "b": 600.02162, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "the RCAC permission test.", "bbox": {"l": 136.8, "t": 602.80843, "r": 254.45151, "b": 612.02142, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "The IBM i journal captures the transactional data and places an image of the row in the ", "bbox": {"l": 136.8, "t": 624.76823, "r": 523.51202, "b": 633.98123, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "journal receiver. If the user has access to the journal receiver, the row image can be viewed if ", "bbox": {"l": 136.8, "t": 636.76804, "r": 547.21771, "b": 645.98103, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "the user has authority to the journal receiver.", "bbox": {"l": 136.8, "t": 648.76784, "r": 334.24704, "b": 657.98083, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Although the SQL Plan Cache data, the SQL Plan Cache Snapshot data, and the SQL ", "bbox": {"l": 136.8, "t": 670.7874, "r": 520.78979, "b": 680.0004, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Performance Monitor data do not reveal the results of queries, they can show the literal values ", "bbox": {"l": 136.8, "t": 682.78721, "r": 547.24268, "b": 692.000214, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "that are passed along with the SQL statements.", "bbox": {"l": 136.8, "t": 694.787018, "r": 347.23083, "b": 704.000023, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Object", "bbox": {"l": 156.9715, "t": 285.76688, "r": 190.61691, "b": 296.29796999999996, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Level", "bbox": {"l": 160.69307, "t": 300.53012, "r": 186.89537, "b": 311.06122, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Authority", "bbox": {"l": 149.2823, "t": 315.2934, "r": 198.35532, "b": 325.82449, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Functional", "bbox": {"l": 267.20389, "t": 285.76688, "r": 320.83136, "b": 296.29796999999996, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "ID", "bbox": {"l": 288.48755, "t": 300.53012, "r": 299.54523, "b": 311.06122, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Allowance", "bbox": {"l": 267.45001, "t": 315.2934, "r": 320.55463, "b": 325.82449, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "RCAC", "bbox": {"l": 220.76109000000002, "t": 285.76688, "r": 247.8049, "b": 296.29796999999996, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Permission", "bbox": {"l": 206.33618, "t": 300.53012, "r": 262.33313, "b": 311.06122, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Table", "bbox": {"l": 438.45789, "t": 342.79007, "r": 464.58762, "b": 353.32117000000005, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "GLYPH", "bbox": {"l": 169.6125, "t": 341.27759, "r": 177.77641, "b": 355.31033, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "GLYPH", "bbox": {"l": 230.17299999999997, "t": 342.35464, "r": 238.33691, "b": 356.38739, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Journal Receiver", "bbox": {"l": 386.50961, "t": 387.26437, "r": 470.06216, "b": 397.79547, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "GLYPH", "bbox": {"l": 169.6125, "t": 385.75198, "r": 177.77641, "b": 399.7847300000001, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "SQL Plan Cache", "bbox": {"l": 380.32751, "t": 433.3996, "r": 458.0436700000001, "b": 443.93069, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "GLYPH", "bbox": {"l": 169.6125, "t": 431.91799999999995, "r": 177.77641, "b": 445.95074, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "GLYPH", "bbox": {"l": 289.84091, "t": 431.88718, "r": 298.00482, "b": 445.91992, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "SQL Plan Cache Snapshot", "bbox": {"l": 344.00369, "t": 479.53488, "r": 471.96899, "b": 490.06598, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "GLYPH", "bbox": {"l": 169.6125, "t": 478.02237, "r": 177.77641, "b": 492.05511, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "GLYPH", "bbox": {"l": 289.84006, "t": 478.02237, "r": 298.00397, "b": 492.05511, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "SQL Performance Monitor", "bbox": {"l": 333.2695, "t": 528.7457899999999, "r": 465.95779, "b": 539.27689, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "GLYPH", "bbox": {"l": 169.6125, "t": 527.2332799999999, "r": 177.77641, "b": 541.26604, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "GLYPH", "bbox": {"l": 289.84006, "t": 527.2332799999999, "r": 298.00397, "b": 541.26604, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 370.63580322265625, "t": 754.8801879882812, "r": 517.96918, "b": 763.9136352539062, "coord_origin": "TOPLEFT"}, "confidence": 0.9545277953147888, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 371.28, "t": 755.538002, "r": 517.96918, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 529.969970703125, "t": 754.25830078125, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9215238094329834, "cells": [{"id": 1, "text": "111", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 135.3511199951172, "t": 70.59781646728516, "r": 419.79163, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}, "confidence": 0.9019970893859863, "cells": [{"id": 2, "text": "GLYPH", "bbox": {"l": 136.8002, "t": 71.65845000000002, "r": 141.7802, "b": 80.43322999999998, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Table2 column SSN has a column mask that is defined on it. ", "bbox": {"l": 151.20036, "t": 71.50903000000005, "r": 419.79163, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "list_item", "bbox": {"l": 150.33642578125, "t": 87.26454162597656, "r": 537.51099, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.6998697519302368, "cells": [{"id": 4, "text": "SELECT", "bbox": {"l": 151.20036, "t": 88.63823999999988, "r": 181.14012, "b": 97.46283000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": " MY_UDF4(SSN) from table2. Because SSN has a column mask that is defined, ", "bbox": {"l": 181.19989, "t": 88.48883000000001, "r": 537.51099, "b": 97.70183999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "MY_UDF4 must be created with the SECURED attribute.", "bbox": {"l": 151.20036, "t": 100.48865, "r": 402.42545, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 64.35963439941406, "t": 136.777099609375, "r": 387.57983, "b": 153.22242736816406, "coord_origin": "TOPLEFT"}, "confidence": 0.9685361981391907, "cells": [{"id": 7, "text": "6.10", "bbox": {"l": 64.800003, "t": 138.18073000000004, "r": 96.288353, "b": 152.94372999999996, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "RCAC is only one part of the solution", "bbox": {"l": 100.78667, "t": 138.18073000000004, "r": 387.57983, "b": 152.94372999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.8172607421875, "t": 169.369384765625, "r": 547.25458, "b": 227.78855895996094, "coord_origin": "TOPLEFT"}, "confidence": 0.9881147146224976, "cells": [{"id": 9, "text": "When designing and implementing RCAC row permissions, special attention should be given ", "bbox": {"l": 136.8, "t": 170.50867000000005, "r": 547.25458, "b": 179.72168, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "to the effectiveness and limitations of controlling data access. Data can be housed in objects ", "bbox": {"l": 136.8, "t": 182.50847999999996, "r": 547.1908, "b": 191.7215, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "other than tables or physical files. The role and responsibility of the database user, for ", "bbox": {"l": 136.8, "t": 194.50829999999996, "r": 516.95819, "b": 203.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "example, the database engineer, must be reconciled with their respective authority and ", "bbox": {"l": 136.79999, "t": 206.50811999999996, "r": 522.3587, "b": 215.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "access privileges.", "bbox": {"l": 136.79999, "t": 218.50793, "r": 215.6035, "b": 227.72095000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 136.24098205566406, "t": 239.97531127929688, "r": 544.86804, "b": 262.68121337890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9742384552955627, "cells": [{"id": 14, "text": "Figure 6-25 illustrates that object level security is the first check and that RCAC permissions ", "bbox": {"l": 136.79999, "t": 240.52752999999996, "r": 544.86804, "b": 249.74054, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "provide control only on tables and physical files.", "bbox": {"l": 136.8, "t": 252.52733999999998, "r": 347.7309, "b": 261.74036, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "caption", "bbox": {"l": 136.0601806640625, "t": 564.0174560546875, "r": 366.7088317871094, "b": 573.477783203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9522354602813721, "cells": [{"id": 16, "text": "Figure 6-25 Object-level security and RCAC permissions", "bbox": {"l": 136.8, "t": 564.7979, "r": 366.65814, "b": 573.12291, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 135.88059997558594, "t": 590.0465087890625, "r": 547.21686, "b": 612.02142, "coord_origin": "TOPLEFT"}, "confidence": 0.9771828055381775, "cells": [{"id": 17, "text": "To get access to the table and the rows, the user must pass the object level authority test and ", "bbox": {"l": 136.8, "t": 590.80862, "r": 547.21686, "b": 600.02162, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "the RCAC permission test.", "bbox": {"l": 136.8, "t": 602.80843, "r": 254.45151, "b": 612.02142, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 135.60548400878906, "t": 624.0549926757812, "r": 547.21771, "b": 658.4563598632812, "coord_origin": "TOPLEFT"}, "confidence": 0.9841781258583069, "cells": [{"id": 19, "text": "The IBM i journal captures the transactional data and places an image of the row in the ", "bbox": {"l": 136.8, "t": 624.76823, "r": 523.51202, "b": 633.98123, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "journal receiver. If the user has access to the journal receiver, the row image can be viewed if ", "bbox": {"l": 136.8, "t": 636.76804, "r": 547.21771, "b": 645.98103, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "the user has authority to the journal receiver.", "bbox": {"l": 136.8, "t": 648.76784, "r": 334.24704, "b": 657.98083, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 136.01368713378906, "t": 669.8409423828125, "r": 547.24268, "b": 704.1990966796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9835835099220276, "cells": [{"id": 22, "text": "Although the SQL Plan Cache data, the SQL Plan Cache Snapshot data, and the SQL ", "bbox": {"l": 136.8, "t": 670.7874, "r": 520.78979, "b": 680.0004, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Performance Monitor data do not reveal the results of queries, they can show the literal values ", "bbox": {"l": 136.8, "t": 682.78721, "r": 547.24268, "b": 692.000214, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "that are passed along with the SQL statements.", "bbox": {"l": 136.8, "t": 694.787018, "r": 347.23083, "b": 704.000023, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "picture", "bbox": {"l": 136.06109619140625, "t": 276.0924377441406, "r": 509.6692199707031, "b": 561.36865234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9848344326019287, "cells": [{"id": 25, "text": "Object", "bbox": {"l": 156.9715, "t": 285.76688, "r": 190.61691, "b": 296.29796999999996, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Level", "bbox": {"l": 160.69307, "t": 300.53012, "r": 186.89537, "b": 311.06122, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Authority", "bbox": {"l": 149.2823, "t": 315.2934, "r": 198.35532, "b": 325.82449, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Functional", "bbox": {"l": 267.20389, "t": 285.76688, "r": 320.83136, "b": 296.29796999999996, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "ID", "bbox": {"l": 288.48755, "t": 300.53012, "r": 299.54523, "b": 311.06122, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Allowance", "bbox": {"l": 267.45001, "t": 315.2934, "r": 320.55463, "b": 325.82449, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "RCAC", "bbox": {"l": 220.76109000000002, "t": 285.76688, "r": 247.8049, "b": 296.29796999999996, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Permission", "bbox": {"l": 206.33618, "t": 300.53012, "r": 262.33313, "b": 311.06122, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Table", "bbox": {"l": 438.45789, "t": 342.79007, "r": 464.58762, "b": 353.32117000000005, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "GLYPH", "bbox": {"l": 169.6125, "t": 341.27759, "r": 177.77641, "b": 355.31033, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "GLYPH", "bbox": {"l": 230.17299999999997, "t": 342.35464, "r": 238.33691, "b": 356.38739, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Journal Receiver", "bbox": {"l": 386.50961, "t": 387.26437, "r": 470.06216, "b": 397.79547, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "GLYPH", "bbox": {"l": 169.6125, "t": 385.75198, "r": 177.77641, "b": 399.7847300000001, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "SQL Plan Cache", "bbox": {"l": 380.32751, "t": 433.3996, "r": 458.0436700000001, "b": 443.93069, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "GLYPH", "bbox": {"l": 169.6125, "t": 431.91799999999995, "r": 177.77641, "b": 445.95074, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "GLYPH", "bbox": {"l": 289.84091, "t": 431.88718, "r": 298.00482, "b": 445.91992, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "SQL Plan Cache Snapshot", "bbox": {"l": 344.00369, "t": 479.53488, "r": 471.96899, "b": 490.06598, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "GLYPH", "bbox": {"l": 169.6125, "t": 478.02237, "r": 177.77641, "b": 492.05511, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "GLYPH", "bbox": {"l": 289.84006, "t": 478.02237, "r": 298.00397, "b": 492.05511, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "SQL Performance Monitor", "bbox": {"l": 333.2695, "t": 528.7457899999999, "r": 465.95779, "b": 539.27689, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "GLYPH", "bbox": {"l": 169.6125, "t": 527.2332799999999, "r": 177.77641, "b": 541.26604, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "GLYPH", "bbox": {"l": 289.84006, "t": 527.2332799999999, "r": 298.00397, "b": 541.26604, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 126, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 370.63580322265625, "t": 754.8801879882812, "r": 517.96918, "b": 763.9136352539062, "coord_origin": "TOPLEFT"}, "confidence": 0.9545277953147888, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 371.28, "t": 755.538002, "r": 517.96918, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 126, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 529.969970703125, "t": 754.25830078125, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9215238094329834, "cells": [{"id": 1, "text": "111", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "111"}, {"label": "list_item", "id": 2, "page_no": 126, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.3511199951172, "t": 70.59781646728516, "r": 419.79163, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}, "confidence": 0.9019970893859863, "cells": [{"id": 2, "text": "GLYPH", "bbox": {"l": 136.8002, "t": 71.65845000000002, "r": 141.7802, "b": 80.43322999999998, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Table2 column SSN has a column mask that is defined on it. ", "bbox": {"l": 151.20036, "t": 71.50903000000005, "r": 419.79163, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Table2 column SSN has a column mask that is defined on it."}, {"label": "list_item", "id": 3, "page_no": 126, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 150.33642578125, "t": 87.26454162597656, "r": 537.51099, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.6998697519302368, "cells": [{"id": 4, "text": "SELECT", "bbox": {"l": 151.20036, "t": 88.63823999999988, "r": 181.14012, "b": 97.46283000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": " MY_UDF4(SSN) from table2. Because SSN has a column mask that is defined, ", "bbox": {"l": 181.19989, "t": 88.48883000000001, "r": 537.51099, "b": 97.70183999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "MY_UDF4 must be created with the SECURED attribute.", "bbox": {"l": 151.20036, "t": 100.48865, "r": 402.42545, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT MY_UDF4(SSN) from table2. Because SSN has a column mask that is defined, MY_UDF4 must be created with the SECURED attribute."}, {"label": "section_header", "id": 4, "page_no": 126, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.35963439941406, "t": 136.777099609375, "r": 387.57983, "b": 153.22242736816406, "coord_origin": "TOPLEFT"}, "confidence": 0.9685361981391907, "cells": [{"id": 7, "text": "6.10", "bbox": {"l": 64.800003, "t": 138.18073000000004, "r": 96.288353, "b": 152.94372999999996, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "RCAC is only one part of the solution", "bbox": {"l": 100.78667, "t": 138.18073000000004, "r": 387.57983, "b": 152.94372999999996, "coord_origin": "TOPLEFT"}}]}, "text": "6.10 RCAC is only one part of the solution"}, {"label": "text", "id": 5, "page_no": 126, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.8172607421875, "t": 169.369384765625, "r": 547.25458, "b": 227.78855895996094, "coord_origin": "TOPLEFT"}, "confidence": 0.9881147146224976, "cells": [{"id": 9, "text": "When designing and implementing RCAC row permissions, special attention should be given ", "bbox": {"l": 136.8, "t": 170.50867000000005, "r": 547.25458, "b": 179.72168, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "to the effectiveness and limitations of controlling data access. Data can be housed in objects ", "bbox": {"l": 136.8, "t": 182.50847999999996, "r": 547.1908, "b": 191.7215, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "other than tables or physical files. The role and responsibility of the database user, for ", "bbox": {"l": 136.8, "t": 194.50829999999996, "r": 516.95819, "b": 203.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "example, the database engineer, must be reconciled with their respective authority and ", "bbox": {"l": 136.79999, "t": 206.50811999999996, "r": 522.3587, "b": 215.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "access privileges.", "bbox": {"l": 136.79999, "t": 218.50793, "r": 215.6035, "b": 227.72095000000002, "coord_origin": "TOPLEFT"}}]}, "text": "When designing and implementing RCAC row permissions, special attention should be given to the effectiveness and limitations of controlling data access. Data can be housed in objects other than tables or physical files. The role and responsibility of the database user, for example, the database engineer, must be reconciled with their respective authority and access privileges."}, {"label": "text", "id": 6, "page_no": 126, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.24098205566406, "t": 239.97531127929688, "r": 544.86804, "b": 262.68121337890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9742384552955627, "cells": [{"id": 14, "text": "Figure 6-25 illustrates that object level security is the first check and that RCAC permissions ", "bbox": {"l": 136.79999, "t": 240.52752999999996, "r": 544.86804, "b": 249.74054, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "provide control only on tables and physical files.", "bbox": {"l": 136.8, "t": 252.52733999999998, "r": 347.7309, "b": 261.74036, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-25 illustrates that object level security is the first check and that RCAC permissions provide control only on tables and physical files."}, {"label": "caption", "id": 7, "page_no": 126, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 136.0601806640625, "t": 564.0174560546875, "r": 366.7088317871094, "b": 573.477783203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9522354602813721, "cells": [{"id": 16, "text": "Figure 6-25 Object-level security and RCAC permissions", "bbox": {"l": 136.8, "t": 564.7979, "r": 366.65814, "b": 573.12291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-25 Object-level security and RCAC permissions"}, {"label": "text", "id": 8, "page_no": 126, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.88059997558594, "t": 590.0465087890625, "r": 547.21686, "b": 612.02142, "coord_origin": "TOPLEFT"}, "confidence": 0.9771828055381775, "cells": [{"id": 17, "text": "To get access to the table and the rows, the user must pass the object level authority test and ", "bbox": {"l": 136.8, "t": 590.80862, "r": 547.21686, "b": 600.02162, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "the RCAC permission test.", "bbox": {"l": 136.8, "t": 602.80843, "r": 254.45151, "b": 612.02142, "coord_origin": "TOPLEFT"}}]}, "text": "To get access to the table and the rows, the user must pass the object level authority test and the RCAC permission test."}, {"label": "text", "id": 9, "page_no": 126, "cluster": {"id": 9, "label": "text", "bbox": {"l": 135.60548400878906, "t": 624.0549926757812, "r": 547.21771, "b": 658.4563598632812, "coord_origin": "TOPLEFT"}, "confidence": 0.9841781258583069, "cells": [{"id": 19, "text": "The IBM i journal captures the transactional data and places an image of the row in the ", "bbox": {"l": 136.8, "t": 624.76823, "r": 523.51202, "b": 633.98123, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "journal receiver. If the user has access to the journal receiver, the row image can be viewed if ", "bbox": {"l": 136.8, "t": 636.76804, "r": 547.21771, "b": 645.98103, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "the user has authority to the journal receiver.", "bbox": {"l": 136.8, "t": 648.76784, "r": 334.24704, "b": 657.98083, "coord_origin": "TOPLEFT"}}]}, "text": "The IBM i journal captures the transactional data and places an image of the row in the journal receiver. If the user has access to the journal receiver, the row image can be viewed if the user has authority to the journal receiver."}, {"label": "text", "id": 10, "page_no": 126, "cluster": {"id": 10, "label": "text", "bbox": {"l": 136.01368713378906, "t": 669.8409423828125, "r": 547.24268, "b": 704.1990966796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9835835099220276, "cells": [{"id": 22, "text": "Although the SQL Plan Cache data, the SQL Plan Cache Snapshot data, and the SQL ", "bbox": {"l": 136.8, "t": 670.7874, "r": 520.78979, "b": 680.0004, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Performance Monitor data do not reveal the results of queries, they can show the literal values ", "bbox": {"l": 136.8, "t": 682.78721, "r": 547.24268, "b": 692.000214, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "that are passed along with the SQL statements.", "bbox": {"l": 136.8, "t": 694.787018, "r": 347.23083, "b": 704.000023, "coord_origin": "TOPLEFT"}}]}, "text": "Although the SQL Plan Cache data, the SQL Plan Cache Snapshot data, and the SQL Performance Monitor data do not reveal the results of queries, they can show the literal values that are passed along with the SQL statements."}, {"label": "picture", "id": 11, "page_no": 126, "cluster": {"id": 11, "label": "picture", "bbox": {"l": 136.06109619140625, "t": 276.0924377441406, "r": 509.6692199707031, "b": 561.36865234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9848344326019287, "cells": [{"id": 25, "text": "Object", "bbox": {"l": 156.9715, "t": 285.76688, "r": 190.61691, "b": 296.29796999999996, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Level", "bbox": {"l": 160.69307, "t": 300.53012, "r": 186.89537, "b": 311.06122, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Authority", "bbox": {"l": 149.2823, "t": 315.2934, "r": 198.35532, "b": 325.82449, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Functional", "bbox": {"l": 267.20389, "t": 285.76688, "r": 320.83136, "b": 296.29796999999996, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "ID", "bbox": {"l": 288.48755, "t": 300.53012, "r": 299.54523, "b": 311.06122, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Allowance", "bbox": {"l": 267.45001, "t": 315.2934, "r": 320.55463, "b": 325.82449, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "RCAC", "bbox": {"l": 220.76109000000002, "t": 285.76688, "r": 247.8049, "b": 296.29796999999996, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Permission", "bbox": {"l": 206.33618, "t": 300.53012, "r": 262.33313, "b": 311.06122, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Table", "bbox": {"l": 438.45789, "t": 342.79007, "r": 464.58762, "b": 353.32117000000005, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "GLYPH", "bbox": {"l": 169.6125, "t": 341.27759, "r": 177.77641, "b": 355.31033, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "GLYPH", "bbox": {"l": 230.17299999999997, "t": 342.35464, "r": 238.33691, "b": 356.38739, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Journal Receiver", "bbox": {"l": 386.50961, "t": 387.26437, "r": 470.06216, "b": 397.79547, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "GLYPH", "bbox": {"l": 169.6125, "t": 385.75198, "r": 177.77641, "b": 399.7847300000001, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "SQL Plan Cache", "bbox": {"l": 380.32751, "t": 433.3996, "r": 458.0436700000001, "b": 443.93069, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "GLYPH", "bbox": {"l": 169.6125, "t": 431.91799999999995, "r": 177.77641, "b": 445.95074, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "GLYPH", "bbox": {"l": 289.84091, "t": 431.88718, "r": 298.00482, "b": 445.91992, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "SQL Plan Cache Snapshot", "bbox": {"l": 344.00369, "t": 479.53488, "r": 471.96899, "b": 490.06598, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "GLYPH", "bbox": {"l": 169.6125, "t": 478.02237, "r": 177.77641, "b": 492.05511, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "GLYPH", "bbox": {"l": 289.84006, "t": 478.02237, "r": 298.00397, "b": 492.05511, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "SQL Performance Monitor", "bbox": {"l": 333.2695, "t": 528.7457899999999, "r": 465.95779, "b": 539.27689, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "GLYPH", "bbox": {"l": 169.6125, "t": 527.2332799999999, "r": 177.77641, "b": 541.26604, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "GLYPH", "bbox": {"l": 289.84006, "t": 527.2332799999999, "r": 298.00397, "b": 541.26604, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 126, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.3511199951172, "t": 70.59781646728516, "r": 419.79163, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}, "confidence": 0.9019970893859863, "cells": [{"id": 2, "text": "GLYPH", "bbox": {"l": 136.8002, "t": 71.65845000000002, "r": 141.7802, "b": 80.43322999999998, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Table2 column SSN has a column mask that is defined on it. ", "bbox": {"l": 151.20036, "t": 71.50903000000005, "r": 419.79163, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Table2 column SSN has a column mask that is defined on it."}, {"label": "list_item", "id": 3, "page_no": 126, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 150.33642578125, "t": 87.26454162597656, "r": 537.51099, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.6998697519302368, "cells": [{"id": 4, "text": "SELECT", "bbox": {"l": 151.20036, "t": 88.63823999999988, "r": 181.14012, "b": 97.46283000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": " MY_UDF4(SSN) from table2. Because SSN has a column mask that is defined, ", "bbox": {"l": 181.19989, "t": 88.48883000000001, "r": 537.51099, "b": 97.70183999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "MY_UDF4 must be created with the SECURED attribute.", "bbox": {"l": 151.20036, "t": 100.48865, "r": 402.42545, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT MY_UDF4(SSN) from table2. Because SSN has a column mask that is defined, MY_UDF4 must be created with the SECURED attribute."}, {"label": "section_header", "id": 4, "page_no": 126, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.35963439941406, "t": 136.777099609375, "r": 387.57983, "b": 153.22242736816406, "coord_origin": "TOPLEFT"}, "confidence": 0.9685361981391907, "cells": [{"id": 7, "text": "6.10", "bbox": {"l": 64.800003, "t": 138.18073000000004, "r": 96.288353, "b": 152.94372999999996, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "RCAC is only one part of the solution", "bbox": {"l": 100.78667, "t": 138.18073000000004, "r": 387.57983, "b": 152.94372999999996, "coord_origin": "TOPLEFT"}}]}, "text": "6.10 RCAC is only one part of the solution"}, {"label": "text", "id": 5, "page_no": 126, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.8172607421875, "t": 169.369384765625, "r": 547.25458, "b": 227.78855895996094, "coord_origin": "TOPLEFT"}, "confidence": 0.9881147146224976, "cells": [{"id": 9, "text": "When designing and implementing RCAC row permissions, special attention should be given ", "bbox": {"l": 136.8, "t": 170.50867000000005, "r": 547.25458, "b": 179.72168, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "to the effectiveness and limitations of controlling data access. Data can be housed in objects ", "bbox": {"l": 136.8, "t": 182.50847999999996, "r": 547.1908, "b": 191.7215, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "other than tables or physical files. The role and responsibility of the database user, for ", "bbox": {"l": 136.8, "t": 194.50829999999996, "r": 516.95819, "b": 203.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "example, the database engineer, must be reconciled with their respective authority and ", "bbox": {"l": 136.79999, "t": 206.50811999999996, "r": 522.3587, "b": 215.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "access privileges.", "bbox": {"l": 136.79999, "t": 218.50793, "r": 215.6035, "b": 227.72095000000002, "coord_origin": "TOPLEFT"}}]}, "text": "When designing and implementing RCAC row permissions, special attention should be given to the effectiveness and limitations of controlling data access. Data can be housed in objects other than tables or physical files. The role and responsibility of the database user, for example, the database engineer, must be reconciled with their respective authority and access privileges."}, {"label": "text", "id": 6, "page_no": 126, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.24098205566406, "t": 239.97531127929688, "r": 544.86804, "b": 262.68121337890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9742384552955627, "cells": [{"id": 14, "text": "Figure 6-25 illustrates that object level security is the first check and that RCAC permissions ", "bbox": {"l": 136.79999, "t": 240.52752999999996, "r": 544.86804, "b": 249.74054, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "provide control only on tables and physical files.", "bbox": {"l": 136.8, "t": 252.52733999999998, "r": 347.7309, "b": 261.74036, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-25 illustrates that object level security is the first check and that RCAC permissions provide control only on tables and physical files."}, {"label": "caption", "id": 7, "page_no": 126, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 136.0601806640625, "t": 564.0174560546875, "r": 366.7088317871094, "b": 573.477783203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9522354602813721, "cells": [{"id": 16, "text": "Figure 6-25 Object-level security and RCAC permissions", "bbox": {"l": 136.8, "t": 564.7979, "r": 366.65814, "b": 573.12291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-25 Object-level security and RCAC permissions"}, {"label": "text", "id": 8, "page_no": 126, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.88059997558594, "t": 590.0465087890625, "r": 547.21686, "b": 612.02142, "coord_origin": "TOPLEFT"}, "confidence": 0.9771828055381775, "cells": [{"id": 17, "text": "To get access to the table and the rows, the user must pass the object level authority test and ", "bbox": {"l": 136.8, "t": 590.80862, "r": 547.21686, "b": 600.02162, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "the RCAC permission test.", "bbox": {"l": 136.8, "t": 602.80843, "r": 254.45151, "b": 612.02142, "coord_origin": "TOPLEFT"}}]}, "text": "To get access to the table and the rows, the user must pass the object level authority test and the RCAC permission test."}, {"label": "text", "id": 9, "page_no": 126, "cluster": {"id": 9, "label": "text", "bbox": {"l": 135.60548400878906, "t": 624.0549926757812, "r": 547.21771, "b": 658.4563598632812, "coord_origin": "TOPLEFT"}, "confidence": 0.9841781258583069, "cells": [{"id": 19, "text": "The IBM i journal captures the transactional data and places an image of the row in the ", "bbox": {"l": 136.8, "t": 624.76823, "r": 523.51202, "b": 633.98123, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "journal receiver. If the user has access to the journal receiver, the row image can be viewed if ", "bbox": {"l": 136.8, "t": 636.76804, "r": 547.21771, "b": 645.98103, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "the user has authority to the journal receiver.", "bbox": {"l": 136.8, "t": 648.76784, "r": 334.24704, "b": 657.98083, "coord_origin": "TOPLEFT"}}]}, "text": "The IBM i journal captures the transactional data and places an image of the row in the journal receiver. If the user has access to the journal receiver, the row image can be viewed if the user has authority to the journal receiver."}, {"label": "text", "id": 10, "page_no": 126, "cluster": {"id": 10, "label": "text", "bbox": {"l": 136.01368713378906, "t": 669.8409423828125, "r": 547.24268, "b": 704.1990966796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9835835099220276, "cells": [{"id": 22, "text": "Although the SQL Plan Cache data, the SQL Plan Cache Snapshot data, and the SQL ", "bbox": {"l": 136.8, "t": 670.7874, "r": 520.78979, "b": 680.0004, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Performance Monitor data do not reveal the results of queries, they can show the literal values ", "bbox": {"l": 136.8, "t": 682.78721, "r": 547.24268, "b": 692.000214, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "that are passed along with the SQL statements.", "bbox": {"l": 136.8, "t": 694.787018, "r": 347.23083, "b": 704.000023, "coord_origin": "TOPLEFT"}}]}, "text": "Although the SQL Plan Cache data, the SQL Plan Cache Snapshot data, and the SQL Performance Monitor data do not reveal the results of queries, they can show the literal values that are passed along with the SQL statements."}, {"label": "picture", "id": 11, "page_no": 126, "cluster": {"id": 11, "label": "picture", "bbox": {"l": 136.06109619140625, "t": 276.0924377441406, "r": 509.6692199707031, "b": 561.36865234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9848344326019287, "cells": [{"id": 25, "text": "Object", "bbox": {"l": 156.9715, "t": 285.76688, "r": 190.61691, "b": 296.29796999999996, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Level", "bbox": {"l": 160.69307, "t": 300.53012, "r": 186.89537, "b": 311.06122, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Authority", "bbox": {"l": 149.2823, "t": 315.2934, "r": 198.35532, "b": 325.82449, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Functional", "bbox": {"l": 267.20389, "t": 285.76688, "r": 320.83136, "b": 296.29796999999996, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "ID", "bbox": {"l": 288.48755, "t": 300.53012, "r": 299.54523, "b": 311.06122, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Allowance", "bbox": {"l": 267.45001, "t": 315.2934, "r": 320.55463, "b": 325.82449, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "RCAC", "bbox": {"l": 220.76109000000002, "t": 285.76688, "r": 247.8049, "b": 296.29796999999996, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Permission", "bbox": {"l": 206.33618, "t": 300.53012, "r": 262.33313, "b": 311.06122, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Table", "bbox": {"l": 438.45789, "t": 342.79007, "r": 464.58762, "b": 353.32117000000005, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "GLYPH", "bbox": {"l": 169.6125, "t": 341.27759, "r": 177.77641, "b": 355.31033, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "GLYPH", "bbox": {"l": 230.17299999999997, "t": 342.35464, "r": 238.33691, "b": 356.38739, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Journal Receiver", "bbox": {"l": 386.50961, "t": 387.26437, "r": 470.06216, "b": 397.79547, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "GLYPH", "bbox": {"l": 169.6125, "t": 385.75198, "r": 177.77641, "b": 399.7847300000001, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "SQL Plan Cache", "bbox": {"l": 380.32751, "t": 433.3996, "r": 458.0436700000001, "b": 443.93069, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "GLYPH", "bbox": {"l": 169.6125, "t": 431.91799999999995, "r": 177.77641, "b": 445.95074, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "GLYPH", "bbox": {"l": 289.84091, "t": 431.88718, "r": 298.00482, "b": 445.91992, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "SQL Plan Cache Snapshot", "bbox": {"l": 344.00369, "t": 479.53488, "r": 471.96899, "b": 490.06598, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "GLYPH", "bbox": {"l": 169.6125, "t": 478.02237, "r": 177.77641, "b": 492.05511, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "GLYPH", "bbox": {"l": 289.84006, "t": 478.02237, "r": 298.00397, "b": 492.05511, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "SQL Performance Monitor", "bbox": {"l": 333.2695, "t": 528.7457899999999, "r": 465.95779, "b": 539.27689, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "GLYPH", "bbox": {"l": 169.6125, "t": 527.2332799999999, "r": 177.77641, "b": 541.26604, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "GLYPH", "bbox": {"l": 289.84006, "t": 527.2332799999999, "r": 298.00397, "b": 541.26604, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 126, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 370.63580322265625, "t": 754.8801879882812, "r": 517.96918, "b": 763.9136352539062, "coord_origin": "TOPLEFT"}, "confidence": 0.9545277953147888, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 371.28, "t": 755.538002, "r": 517.96918, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 126, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 529.969970703125, "t": 754.25830078125, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9215238094329834, "cells": [{"id": 1, "text": "111", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "111"}]}}, {"page_no": 127, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "112 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "The ability to monitor, analyze, debug, and tune data-centric applications effectively and ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 525.94611, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "efficiently requires some understanding of the underlying data, or at least the attributes of the ", "bbox": {"l": 136.79999, "t": 83.50847999999996, "r": 547.29626, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "data. The organization must be willing to reconcile the conflicting requirements of \u201crestricting ", "bbox": {"l": 136.79999, "t": 95.50829999999996, "r": 546.69183, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "access to data\u201d, and \u201cneeding access to data\u201d.", "bbox": {"l": 136.79999, "t": 107.50811999999996, "r": 341.75491, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.37667846679688, "t": 754.1668090820312, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.924152672290802, "cells": [{"id": 0, "text": "112 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 98.55838012695312, "t": 754.5621337890625, "r": 339.87249755859375, "b": 764.0390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9473952651023865, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.75006103515625, "t": 70.58626556396484, "r": 547.29626, "b": 116.85999298095703, "coord_origin": "TOPLEFT"}, "confidence": 0.9814152121543884, "cells": [{"id": 2, "text": "The ability to monitor, analyze, debug, and tune data-centric applications effectively and ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 525.94611, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "efficiently requires some understanding of the underlying data, or at least the attributes of the ", "bbox": {"l": 136.79999, "t": 83.50847999999996, "r": 547.29626, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "data. The organization must be willing to reconcile the conflicting requirements of \u201crestricting ", "bbox": {"l": 136.79999, "t": 95.50829999999996, "r": 546.69183, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "access to data\u201d, and \u201cneeding access to data\u201d.", "bbox": {"l": 136.79999, "t": 107.50811999999996, "r": 341.75491, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 127, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.37667846679688, "t": 754.1668090820312, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.924152672290802, "cells": [{"id": 0, "text": "112 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "112"}, {"label": "page_footer", "id": 1, "page_no": 127, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.55838012695312, "t": 754.5621337890625, "r": 339.87249755859375, "b": 764.0390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9473952651023865, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 2, "page_no": 127, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.75006103515625, "t": 70.58626556396484, "r": 547.29626, "b": 116.85999298095703, "coord_origin": "TOPLEFT"}, "confidence": 0.9814152121543884, "cells": [{"id": 2, "text": "The ability to monitor, analyze, debug, and tune data-centric applications effectively and ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 525.94611, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "efficiently requires some understanding of the underlying data, or at least the attributes of the ", "bbox": {"l": 136.79999, "t": 83.50847999999996, "r": 547.29626, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "data. The organization must be willing to reconcile the conflicting requirements of \u201crestricting ", "bbox": {"l": 136.79999, "t": 95.50829999999996, "r": 546.69183, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "access to data\u201d, and \u201cneeding access to data\u201d.", "bbox": {"l": 136.79999, "t": 107.50811999999996, "r": 341.75491, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "The ability to monitor, analyze, debug, and tune data-centric applications effectively and efficiently requires some understanding of the underlying data, or at least the attributes of the data. The organization must be willing to reconcile the conflicting requirements of \u201crestricting access to data\u201d, and \u201cneeding access to data\u201d."}], "body": [{"label": "text", "id": 2, "page_no": 127, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.75006103515625, "t": 70.58626556396484, "r": 547.29626, "b": 116.85999298095703, "coord_origin": "TOPLEFT"}, "confidence": 0.9814152121543884, "cells": [{"id": 2, "text": "The ability to monitor, analyze, debug, and tune data-centric applications effectively and ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 525.94611, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "efficiently requires some understanding of the underlying data, or at least the attributes of the ", "bbox": {"l": 136.79999, "t": 83.50847999999996, "r": 547.29626, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "data. The organization must be willing to reconcile the conflicting requirements of \u201crestricting ", "bbox": {"l": 136.79999, "t": 95.50829999999996, "r": 546.69183, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "access to data\u201d, and \u201cneeding access to data\u201d.", "bbox": {"l": 136.79999, "t": 107.50811999999996, "r": 341.75491, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "The ability to monitor, analyze, debug, and tune data-centric applications effectively and efficiently requires some understanding of the underlying data, or at least the attributes of the data. The organization must be willing to reconcile the conflicting requirements of \u201crestricting access to data\u201d, and \u201cneeding access to data\u201d."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 127, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.37667846679688, "t": 754.1668090820312, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.924152672290802, "cells": [{"id": 0, "text": "112 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "112"}, {"label": "page_footer", "id": 1, "page_no": 127, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.55838012695312, "t": 754.5621337890625, "r": 339.87249755859375, "b": 764.0390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9473952651023865, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 128, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "113", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Chapter 7.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Row and Column Access Control ", "bbox": {"l": 136.8, "t": 254.88635, "r": 547.26062, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "management", "bbox": {"l": 136.8, "t": 285.84671, "r": 297.06284, "b": 309.8782, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "After Row and Column Access Control (RCAC) definitions are defined and activated in a ", "bbox": {"l": 136.8, "t": 348.70871, "r": 528.83258, "b": 357.92169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "database, your management processes must be adjusted to accommodate these new ", "bbox": {"l": 136.8, "t": 360.70853, "r": 518.32983, "b": 369.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "security controls. This chapter highlights some of the changes that should be considered.", "bbox": {"l": 136.8, "t": 372.7083400000001, "r": 530.23193, "b": 381.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "The following topics are covered in this chapter:", "bbox": {"l": 136.8, "t": 394.72791, "r": 347.41214, "b": 403.94089, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 411.85709, "r": 141.78, "b": 420.63187, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Managing row permissions and column masks", "bbox": {"l": 151.20016, "t": 411.7077, "r": 356.28354, "b": 420.92068000000006, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "GLYPH", "bbox": {"l": 136.8, "t": 423.85689999999994, "r": 141.78, "b": 432.63168, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Managing tables with row permissions and column masks", "bbox": {"l": 151.20016, "t": 423.70752, "r": 406.06464, "b": 432.9205, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 435.85672000000005, "r": 141.78, "b": 444.63149999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Monitoring and auditing function usage", "bbox": {"l": 151.20016, "t": 435.70733999999993, "r": 323.05093, "b": 444.92032, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "7", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.72496032714844, "t": 754.732177734375, "r": 257.24335, "b": 764.0621948242188, "coord_origin": "TOPLEFT"}, "confidence": 0.9485868811607361, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 530.0635986328125, "t": 754.3052368164062, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9265602827072144, "cells": [{"id": 1, "text": "113", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 7.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "section_header", "bbox": {"l": 136.8, "t": 253.06494140625, "r": 547.26062, "b": 310.1415100097656, "coord_origin": "TOPLEFT"}, "confidence": 0.9408386945724487, "cells": [{"id": 3, "text": "Row and Column Access Control ", "bbox": {"l": 136.8, "t": 254.88635, "r": 547.26062, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "management", "bbox": {"l": 136.8, "t": 285.84671, "r": 297.06284, "b": 309.8782, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.95159912109375, "t": 348.0643310546875, "r": 530.336181640625, "b": 382.1923522949219, "coord_origin": "TOPLEFT"}, "confidence": 0.9827558994293213, "cells": [{"id": 5, "text": "After Row and Column Access Control (RCAC) definitions are defined and activated in a ", "bbox": {"l": 136.8, "t": 348.70871, "r": 528.83258, "b": 357.92169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "database, your management processes must be adjusted to accommodate these new ", "bbox": {"l": 136.8, "t": 360.70853, "r": 518.32983, "b": 369.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "security controls. This chapter highlights some of the changes that should be considered.", "bbox": {"l": 136.8, "t": 372.7083400000001, "r": 530.23193, "b": 381.92133000000007, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.9311981201172, "t": 394.0325622558594, "r": 347.41214, "b": 404.31439208984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9188783764839172, "cells": [{"id": 8, "text": "The following topics are covered in this chapter:", "bbox": {"l": 136.8, "t": 394.72791, "r": 347.41214, "b": 403.94089, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.7118682861328, "t": 410.8296203613281, "r": 356.28354, "b": 420.92068000000006, "coord_origin": "TOPLEFT"}, "confidence": 0.9452411532402039, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 411.85709, "r": 141.78, "b": 420.63187, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Managing row permissions and column masks", "bbox": {"l": 151.20016, "t": 411.7077, "r": 356.28354, "b": 420.92068000000006, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.60548400878906, "t": 422.74298095703125, "r": 406.06464, "b": 432.9902648925781, "coord_origin": "TOPLEFT"}, "confidence": 0.9472385048866272, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.8, "t": 423.85689999999994, "r": 141.78, "b": 432.63168, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Managing tables with row permissions and column masks", "bbox": {"l": 151.20016, "t": 423.70752, "r": 406.06464, "b": 432.9205, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.78424072265625, "t": 434.835693359375, "r": 323.05093, "b": 445.13641357421875, "coord_origin": "TOPLEFT"}, "confidence": 0.953090488910675, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 435.85672000000005, "r": 141.78, "b": 444.63149999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Monitoring and auditing function usage", "bbox": {"l": 151.20016, "t": 435.70733999999993, "r": 323.05093, "b": 444.92032, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 15, "text": "7", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "picture", "bbox": {"l": 32.251461029052734, "t": 70.665283203125, "r": 239.58355712890625, "b": 238.41876220703125, "coord_origin": "TOPLEFT"}, "confidence": 0.7878549695014954, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 128, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.72496032714844, "t": 754.732177734375, "r": 257.24335, "b": 764.0621948242188, "coord_origin": "TOPLEFT"}, "confidence": 0.9485868811607361, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 128, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.0635986328125, "t": 754.3052368164062, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9265602827072144, "cells": [{"id": 1, "text": "113", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "113"}, {"label": "text", "id": 2, "page_no": 128, "cluster": {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 7.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 7."}, {"label": "section_header", "id": 3, "page_no": 128, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 136.8, "t": 253.06494140625, "r": 547.26062, "b": 310.1415100097656, "coord_origin": "TOPLEFT"}, "confidence": 0.9408386945724487, "cells": [{"id": 3, "text": "Row and Column Access Control ", "bbox": {"l": 136.8, "t": 254.88635, "r": 547.26062, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "management", "bbox": {"l": 136.8, "t": 285.84671, "r": 297.06284, "b": 309.8782, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control management"}, {"label": "text", "id": 4, "page_no": 128, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.95159912109375, "t": 348.0643310546875, "r": 530.336181640625, "b": 382.1923522949219, "coord_origin": "TOPLEFT"}, "confidence": 0.9827558994293213, "cells": [{"id": 5, "text": "After Row and Column Access Control (RCAC) definitions are defined and activated in a ", "bbox": {"l": 136.8, "t": 348.70871, "r": 528.83258, "b": 357.92169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "database, your management processes must be adjusted to accommodate these new ", "bbox": {"l": 136.8, "t": 360.70853, "r": 518.32983, "b": 369.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "security controls. This chapter highlights some of the changes that should be considered.", "bbox": {"l": 136.8, "t": 372.7083400000001, "r": 530.23193, "b": 381.92133000000007, "coord_origin": "TOPLEFT"}}]}, "text": "After Row and Column Access Control (RCAC) definitions are defined and activated in a database, your management processes must be adjusted to accommodate these new security controls. This chapter highlights some of the changes that should be considered."}, {"label": "text", "id": 5, "page_no": 128, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.9311981201172, "t": 394.0325622558594, "r": 347.41214, "b": 404.31439208984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9188783764839172, "cells": [{"id": 8, "text": "The following topics are covered in this chapter:", "bbox": {"l": 136.8, "t": 394.72791, "r": 347.41214, "b": 403.94089, "coord_origin": "TOPLEFT"}}]}, "text": "The following topics are covered in this chapter:"}, {"label": "list_item", "id": 6, "page_no": 128, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.7118682861328, "t": 410.8296203613281, "r": 356.28354, "b": 420.92068000000006, "coord_origin": "TOPLEFT"}, "confidence": 0.9452411532402039, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 411.85709, "r": 141.78, "b": 420.63187, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Managing row permissions and column masks", "bbox": {"l": 151.20016, "t": 411.7077, "r": 356.28354, "b": 420.92068000000006, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Managing row permissions and column masks"}, {"label": "list_item", "id": 7, "page_no": 128, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.60548400878906, "t": 422.74298095703125, "r": 406.06464, "b": 432.9902648925781, "coord_origin": "TOPLEFT"}, "confidence": 0.9472385048866272, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.8, "t": 423.85689999999994, "r": 141.78, "b": 432.63168, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Managing tables with row permissions and column masks", "bbox": {"l": 151.20016, "t": 423.70752, "r": 406.06464, "b": 432.9205, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Managing tables with row permissions and column masks"}, {"label": "list_item", "id": 8, "page_no": 128, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.78424072265625, "t": 434.835693359375, "r": 323.05093, "b": 445.13641357421875, "coord_origin": "TOPLEFT"}, "confidence": 0.953090488910675, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 435.85672000000005, "r": 141.78, "b": 444.63149999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Monitoring and auditing function usage", "bbox": {"l": 151.20016, "t": 435.70733999999993, "r": 323.05093, "b": 444.92032, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Monitoring and auditing function usage"}, {"label": "text", "id": 9, "page_no": 128, "cluster": {"id": 9, "label": "text", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 15, "text": "7", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, "text": "7"}, {"label": "picture", "id": 10, "page_no": 128, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 32.251461029052734, "t": 70.665283203125, "r": 239.58355712890625, "b": 238.41876220703125, "coord_origin": "TOPLEFT"}, "confidence": 0.7878549695014954, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 128, "cluster": {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 7.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 7."}, {"label": "section_header", "id": 3, "page_no": 128, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 136.8, "t": 253.06494140625, "r": 547.26062, "b": 310.1415100097656, "coord_origin": "TOPLEFT"}, "confidence": 0.9408386945724487, "cells": [{"id": 3, "text": "Row and Column Access Control ", "bbox": {"l": 136.8, "t": 254.88635, "r": 547.26062, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "management", "bbox": {"l": 136.8, "t": 285.84671, "r": 297.06284, "b": 309.8782, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control management"}, {"label": "text", "id": 4, "page_no": 128, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.95159912109375, "t": 348.0643310546875, "r": 530.336181640625, "b": 382.1923522949219, "coord_origin": "TOPLEFT"}, "confidence": 0.9827558994293213, "cells": [{"id": 5, "text": "After Row and Column Access Control (RCAC) definitions are defined and activated in a ", "bbox": {"l": 136.8, "t": 348.70871, "r": 528.83258, "b": 357.92169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "database, your management processes must be adjusted to accommodate these new ", "bbox": {"l": 136.8, "t": 360.70853, "r": 518.32983, "b": 369.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "security controls. This chapter highlights some of the changes that should be considered.", "bbox": {"l": 136.8, "t": 372.7083400000001, "r": 530.23193, "b": 381.92133000000007, "coord_origin": "TOPLEFT"}}]}, "text": "After Row and Column Access Control (RCAC) definitions are defined and activated in a database, your management processes must be adjusted to accommodate these new security controls. This chapter highlights some of the changes that should be considered."}, {"label": "text", "id": 5, "page_no": 128, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.9311981201172, "t": 394.0325622558594, "r": 347.41214, "b": 404.31439208984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9188783764839172, "cells": [{"id": 8, "text": "The following topics are covered in this chapter:", "bbox": {"l": 136.8, "t": 394.72791, "r": 347.41214, "b": 403.94089, "coord_origin": "TOPLEFT"}}]}, "text": "The following topics are covered in this chapter:"}, {"label": "list_item", "id": 6, "page_no": 128, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.7118682861328, "t": 410.8296203613281, "r": 356.28354, "b": 420.92068000000006, "coord_origin": "TOPLEFT"}, "confidence": 0.9452411532402039, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 411.85709, "r": 141.78, "b": 420.63187, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Managing row permissions and column masks", "bbox": {"l": 151.20016, "t": 411.7077, "r": 356.28354, "b": 420.92068000000006, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Managing row permissions and column masks"}, {"label": "list_item", "id": 7, "page_no": 128, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.60548400878906, "t": 422.74298095703125, "r": 406.06464, "b": 432.9902648925781, "coord_origin": "TOPLEFT"}, "confidence": 0.9472385048866272, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.8, "t": 423.85689999999994, "r": 141.78, "b": 432.63168, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Managing tables with row permissions and column masks", "bbox": {"l": 151.20016, "t": 423.70752, "r": 406.06464, "b": 432.9205, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Managing tables with row permissions and column masks"}, {"label": "list_item", "id": 8, "page_no": 128, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.78424072265625, "t": 434.835693359375, "r": 323.05093, "b": 445.13641357421875, "coord_origin": "TOPLEFT"}, "confidence": 0.953090488910675, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 435.85672000000005, "r": 141.78, "b": 444.63149999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Monitoring and auditing function usage", "bbox": {"l": 151.20016, "t": 435.70733999999993, "r": 323.05093, "b": 444.92032, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Monitoring and auditing function usage"}, {"label": "text", "id": 9, "page_no": 128, "cluster": {"id": 9, "label": "text", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 15, "text": "7", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, "text": "7"}, {"label": "picture", "id": 10, "page_no": 128, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 32.251461029052734, "t": 70.665283203125, "r": 239.58355712890625, "b": 238.41876220703125, "coord_origin": "TOPLEFT"}, "confidence": 0.7878549695014954, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 128, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.72496032714844, "t": 754.732177734375, "r": 257.24335, "b": 764.0621948242188, "coord_origin": "TOPLEFT"}, "confidence": 0.9485868811607361, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 128, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.0635986328125, "t": 754.3052368164062, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9265602827072144, "cells": [{"id": 1, "text": "113", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "113"}]}}, {"page_no": 129, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "114 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "7.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.246155, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Managing row permissions and column masks", "bbox": {"l": 91.735367, "t": 74.34069999999997, "r": 449.79186999999996, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "This section focuses on the management of the RCAC row permissions and column masks.", "bbox": {"l": 136.8, "t": 106.6087, "r": 541.12109, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "7.1.1", "bbox": {"l": 64.800003, "t": 136.49463000000003, "r": 94.272484, "b": 148.48266999999998, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Source management", "bbox": {"l": 97.956543, "t": 136.49463000000003, "r": 228.30336000000003, "b": 148.48266999999998, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "The SQL statements that are used to define row permissions and column masks should be ", "bbox": {"l": 136.8, "t": 162.64868, "r": 540.84125, "b": 171.86168999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "managed with a change management process. Ideally, you already are using a change ", "bbox": {"l": 136.8, "t": 174.6485, "r": 522.78192, "b": 183.86150999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "management process for your database definitions, and that same process can be extended ", "bbox": {"l": 136.8, "t": 186.64832, "r": 546.4278, "b": 195.86132999999995, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "to cover your RCAC definitions.", "bbox": {"l": 136.8, "t": 198.64813000000004, "r": 275.15433, "b": 207.86114999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "If you are using SQL DDL to define your DB2 tables, then you have the option of adding the ", "bbox": {"l": 136.8, "t": 220.60790999999995, "r": 542.61035, "b": 229.82092, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "RCAC definitions to the same source file as the table definition. The benefit of this approach ", "bbox": {"l": 136.8, "t": 232.60772999999995, "r": 545.20575, "b": 241.82074, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "is that it keeps all DDL that is related to a table in a single source file. The downside is that if ", "bbox": {"l": 136.80002, "t": 244.60753999999997, "r": 546.14105, "b": 253.82056, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "you must re-create only the RCAC definitions and leave the table unchanged, then you must ", "bbox": {"l": 136.80005, "t": 256.60735999999997, "r": 545.83148, "b": 265.82037, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "identify and extract only the RCAC definitions from the source file. There are situations where ", "bbox": {"l": 136.80005, "t": 268.60717999999997, "r": 547.24664, "b": 277.82019, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "the row permissions and column masks must be changed or re-created without changing the ", "bbox": {"l": 136.80005, "t": 280.60703, "r": 547.2934, "b": 289.82001, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "definition of the associated table.", "bbox": {"l": 136.80005, "t": 292.60684000000003, "r": 282.08453, "b": 301.81982, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "7.1.2", "bbox": {"l": 64.800003, "t": 322.49472, "r": 94.315964, "b": 334.4827, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Modifying definitions", "bbox": {"l": 98.005455, "t": 322.49472, "r": 231.46431000000004, "b": 334.4827, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "After RCAC is activated for a table, the row permission and column mask definitions can be ", "bbox": {"l": 136.8, "t": 348.64871, "r": 541.84814, "b": 357.86169, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "re-created to change the data access behavior for that table. Usage of the ", "bbox": {"l": 136.8, "t": 360.64853, "r": 463.4190699999999, "b": 369.86151, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "OR REPLACE", "bbox": {"l": 463.38042999999993, "t": 360.79791000000006, "r": 513.05994, "b": 369.6225, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": " clause ", "bbox": {"l": 513.05994, "t": 360.64853, "r": 547.19885, "b": 369.86151, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "on the ", "bbox": {"l": 136.80002, "t": 372.64834999999994, "r": 167.34138, "b": 381.86133, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "CREATE MASK", "bbox": {"l": 167.34036, "t": 372.79773, "r": 222.29962, "b": 381.62231, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": " and ", "bbox": {"l": 222.30063, "t": 372.64834999999994, "r": 244.62298999999996, "b": 381.86133, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "CREATE PERMISSION", "bbox": {"l": 244.56022999999996, "t": 372.79773, "r": 329.51904, "b": 381.62231, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": " SQL statements simplifies the re-creation ", "bbox": {"l": 329.52002, "t": 372.64834999999994, "r": 517.78992, "b": 381.86133, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "process by folding in the deletion of the existing RCAC definition.", "bbox": {"l": 136.8, "t": 384.64816, "r": 422.41983, "b": 393.86115, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "This capability makes it easy to change your RCAC definitions as you test the controls with ", "bbox": {"l": 136.8, "t": 406.60797, "r": 539.65204, "b": 415.82095, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "your applications and identify tweaks that must be made to your RCAC implementation. ", "bbox": {"l": 136.79999, "t": 418.60779, "r": 524.70508, "b": 427.82077, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "However, re-creation of RCAC definitions does require an exclusive lock to be acquired on the ", "bbox": {"l": 136.79999, "t": 430.6076, "r": 547.2923, "b": 439.82059, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "table during the process.", "bbox": {"l": 136.79999, "t": 442.60742, "r": 245.98248, "b": 451.82040000000006, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "7.1.3", "bbox": {"l": 64.800003, "t": 472.49472, "r": 94.159073, "b": 484.4827, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Turning on and off", "bbox": {"l": 97.828957, "t": 472.49472, "r": 214.43356, "b": 484.4827, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "As described in 3.1.2, \u201cEnabling and activating RCAC\u201d on page 16, the SQL ", "bbox": {"l": 136.8, "t": 498.64862, "r": 473.00781, "b": 507.8616, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "ALTER", "bbox": {"l": 472.92017, "t": 498.798, "r": 497.9397000000001, "b": 507.62259, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": " statement ", "bbox": {"l": 497.9397000000001, "t": 498.64862, "r": 547.18286, "b": 507.8616, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "can turn on and off row permissions and column masks. The ", "bbox": {"l": 136.80008, "t": 510.64844, "r": 406.95114, "b": 519.86142, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ALTER MASK", "bbox": {"l": 406.98001, "t": 510.79782, "r": 456.89954000000006, "b": 519.62241, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": " and A", "bbox": {"l": 456.9603, "t": 510.64844, "r": 485.8443, "b": 519.86142, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "LTER ", "bbox": {"l": 485.8204, "t": 510.79782, "r": 510.78018, "b": 519.62241, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "PERMISSION", "bbox": {"l": 136.80011, "t": 522.79764, "r": 186.71962, "b": 531.62222, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": " statements allow an individual row permission or column mask to be turned off ", "bbox": {"l": 186.78038, "t": 522.64825, "r": 538.5675, "b": 531.86124, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "with the ", "bbox": {"l": 136.80011, "t": 534.64804, "r": 174.01068, "b": 543.86105, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "DISABLE", "bbox": {"l": 173.99971, "t": 534.79745, "r": 208.97923, "b": 543.62201, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": " option and back on with the ", "bbox": {"l": 208.97923, "t": 534.64804, "r": 336.03802, "b": 543.86105, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ENABLE", "bbox": {"l": 336.05887, "t": 534.79745, "r": 366.05838, "b": 543.62201, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": " option. The ", "bbox": {"l": 365.99863, "t": 534.64804, "r": 421.61823, "b": 543.86105, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ALTER TABLE", "bbox": {"l": 421.5585, "t": 534.79745, "r": 476.51778999999993, "b": 543.62201, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": " statement can ", "bbox": {"l": 476.57855, "t": 534.64804, "r": 544.97375, "b": 543.86105, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "deactivate enforcement of all the row permissions and column masks for a single table.", "bbox": {"l": 136.79816, "t": 546.64786, "r": 520.03705, "b": 555.86086, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "7.1.4", "bbox": {"l": 64.800003, "t": 645.47462, "r": 94.598396, "b": 657.46263, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "Regenerating", "bbox": {"l": 98.323196, "t": 645.47462, "r": 183.93999, "b": 657.46263, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "DB2 also can regenerate an existing row permission or column mask. This regenerate option ", "bbox": {"l": 136.8, "t": 671.62862, "r": 547.32727, "b": 680.84162, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "can be useful with more complex RCAC definitions that reference other DB2 objects.", "bbox": {"l": 136.8, "t": 683.62843, "r": 509.6644600000001, "b": 692.8414310000001, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "Important:", "bbox": {"l": 142.8, "t": 574.66862, "r": 192.41673, "b": 583.88162, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": " Although these capabilities make it easy to temporarily turn off RCAC security ", "bbox": {"l": 192.41974, "t": 574.66862, "r": 541.13116, "b": 583.88162, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "so that you can make environment or application changes, these processes require an ", "bbox": {"l": 142.799, "t": 586.66843, "r": 526.54175, "b": 595.8814199999999, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "exclusive lock to be obtained on a table. Therefore, this activity must be planned carefully ", "bbox": {"l": 142.799, "t": 598.66823, "r": 538.427, "b": 607.88123, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "to avoid disruptions and outages.", "bbox": {"l": 142.799, "t": 610.66803, "r": 289.06061, "b": 619.88103, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.35222625732422, "t": 754.2322998046875, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9273734092712402, "cells": [{"id": 0, "text": "114 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 98.60916137695312, "t": 754.7075805664062, "r": 339.81958, "b": 763.9705200195312, "coord_origin": "TOPLEFT"}, "confidence": 0.9511194229125977, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.16378021240234, "t": 73.54357147216797, "r": 449.79186999999996, "b": 89.48138427734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9686716198921204, "cells": [{"id": 2, "text": "7.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.246155, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Managing row permissions and column masks", "bbox": {"l": 91.735367, "t": 74.34069999999997, "r": 449.79186999999996, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.75418090820312, "t": 106.12907409667969, "r": 541.12109, "b": 116.29986572265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9501754641532898, "cells": [{"id": 4, "text": "This section focuses on the management of the RCAC row permissions and column masks.", "bbox": {"l": 136.8, "t": 106.6087, "r": 541.12109, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 63.90059280395508, "t": 135.95755004882812, "r": 228.30336000000003, "b": 148.8716583251953, "coord_origin": "TOPLEFT"}, "confidence": 0.9683852195739746, "cells": [{"id": 5, "text": "7.1.1", "bbox": {"l": 64.800003, "t": 136.49463000000003, "r": 94.272484, "b": 148.48266999999998, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Source management", "bbox": {"l": 97.956543, "t": 136.49463000000003, "r": 228.30336000000003, "b": 148.48266999999998, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.94558715820312, "t": 161.98435974121094, "r": 546.4278, "b": 208.3597412109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9878652691841125, "cells": [{"id": 7, "text": "The SQL statements that are used to define row permissions and column masks should be ", "bbox": {"l": 136.8, "t": 162.64868, "r": 540.84125, "b": 171.86168999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "managed with a change management process. Ideally, you already are using a change ", "bbox": {"l": 136.8, "t": 174.6485, "r": 522.78192, "b": 183.86150999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "management process for your database definitions, and that same process can be extended ", "bbox": {"l": 136.8, "t": 186.64832, "r": 546.4278, "b": 195.86132999999995, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "to cover your RCAC definitions.", "bbox": {"l": 136.8, "t": 198.64813000000004, "r": 275.15433, "b": 207.86114999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 135.89431762695312, "t": 220.08180236816406, "r": 547.2934, "b": 301.81982, "coord_origin": "TOPLEFT"}, "confidence": 0.9883837699890137, "cells": [{"id": 11, "text": "If you are using SQL DDL to define your DB2 tables, then you have the option of adding the ", "bbox": {"l": 136.8, "t": 220.60790999999995, "r": 542.61035, "b": 229.82092, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "RCAC definitions to the same source file as the table definition. The benefit of this approach ", "bbox": {"l": 136.8, "t": 232.60772999999995, "r": 545.20575, "b": 241.82074, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "is that it keeps all DDL that is related to a table in a single source file. The downside is that if ", "bbox": {"l": 136.80002, "t": 244.60753999999997, "r": 546.14105, "b": 253.82056, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "you must re-create only the RCAC definitions and leave the table unchanged, then you must ", "bbox": {"l": 136.80005, "t": 256.60735999999997, "r": 545.83148, "b": 265.82037, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "identify and extract only the RCAC definitions from the source file. There are situations where ", "bbox": {"l": 136.80005, "t": 268.60717999999997, "r": 547.24664, "b": 277.82019, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "the row permissions and column masks must be changed or re-created without changing the ", "bbox": {"l": 136.80005, "t": 280.60703, "r": 547.2934, "b": 289.82001, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "definition of the associated table.", "bbox": {"l": 136.80005, "t": 292.60684000000003, "r": 282.08453, "b": 301.81982, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "section_header", "bbox": {"l": 63.8327522277832, "t": 321.6274108886719, "r": 231.46431000000004, "b": 334.95697021484375, "coord_origin": "TOPLEFT"}, "confidence": 0.964327871799469, "cells": [{"id": 18, "text": "7.1.2", "bbox": {"l": 64.800003, "t": 322.49472, "r": 94.315964, "b": 334.4827, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Modifying definitions", "bbox": {"l": 98.005455, "t": 322.49472, "r": 231.46431000000004, "b": 334.4827, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 135.9163360595703, "t": 348.02764892578125, "r": 547.19885, "b": 394.3303527832031, "coord_origin": "TOPLEFT"}, "confidence": 0.9876542687416077, "cells": [{"id": 20, "text": "After RCAC is activated for a table, the row permission and column mask definitions can be ", "bbox": {"l": 136.8, "t": 348.64871, "r": 541.84814, "b": 357.86169, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "re-created to change the data access behavior for that table. Usage of the ", "bbox": {"l": 136.8, "t": 360.64853, "r": 463.4190699999999, "b": 369.86151, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "OR REPLACE", "bbox": {"l": 463.38042999999993, "t": 360.79791000000006, "r": 513.05994, "b": 369.6225, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": " clause ", "bbox": {"l": 513.05994, "t": 360.64853, "r": 547.19885, "b": 369.86151, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "on the ", "bbox": {"l": 136.80002, "t": 372.64834999999994, "r": 167.34138, "b": 381.86133, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "CREATE MASK", "bbox": {"l": 167.34036, "t": 372.79773, "r": 222.29962, "b": 381.62231, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": " and ", "bbox": {"l": 222.30063, "t": 372.64834999999994, "r": 244.62298999999996, "b": 381.86133, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "CREATE PERMISSION", "bbox": {"l": 244.56022999999996, "t": 372.79773, "r": 329.51904, "b": 381.62231, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": " SQL statements simplifies the re-creation ", "bbox": {"l": 329.52002, "t": 372.64834999999994, "r": 517.78992, "b": 381.86133, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "process by folding in the deletion of the existing RCAC definition.", "bbox": {"l": 136.8, "t": 384.64816, "r": 422.41983, "b": 393.86115, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 135.8429718017578, "t": 406.0337829589844, "r": 547.2923, "b": 452.2233581542969, "coord_origin": "TOPLEFT"}, "confidence": 0.9873954057693481, "cells": [{"id": 30, "text": "This capability makes it easy to change your RCAC definitions as you test the controls with ", "bbox": {"l": 136.8, "t": 406.60797, "r": 539.65204, "b": 415.82095, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "your applications and identify tweaks that must be made to your RCAC implementation. ", "bbox": {"l": 136.79999, "t": 418.60779, "r": 524.70508, "b": 427.82077, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "However, re-creation of RCAC definitions does require an exclusive lock to be acquired on the ", "bbox": {"l": 136.79999, "t": 430.6076, "r": 547.2923, "b": 439.82059, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "table during the process.", "bbox": {"l": 136.79999, "t": 442.60742, "r": 245.98248, "b": 451.82040000000006, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "section_header", "bbox": {"l": 64.0130844116211, "t": 471.7661437988281, "r": 214.6126708984375, "b": 484.9178771972656, "coord_origin": "TOPLEFT"}, "confidence": 0.9660051465034485, "cells": [{"id": 34, "text": "7.1.3", "bbox": {"l": 64.800003, "t": 472.49472, "r": 94.159073, "b": 484.4827, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Turning on and off", "bbox": {"l": 97.828957, "t": 472.49472, "r": 214.43356, "b": 484.4827, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 136.03684997558594, "t": 498.14910888671875, "r": 547.18286, "b": 556.083740234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9864468574523926, "cells": [{"id": 36, "text": "As described in 3.1.2, \u201cEnabling and activating RCAC\u201d on page 16, the SQL ", "bbox": {"l": 136.8, "t": 498.64862, "r": 473.00781, "b": 507.8616, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "ALTER", "bbox": {"l": 472.92017, "t": 498.798, "r": 497.9397000000001, "b": 507.62259, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": " statement ", "bbox": {"l": 497.9397000000001, "t": 498.64862, "r": 547.18286, "b": 507.8616, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "can turn on and off row permissions and column masks. The ", "bbox": {"l": 136.80008, "t": 510.64844, "r": 406.95114, "b": 519.86142, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ALTER MASK", "bbox": {"l": 406.98001, "t": 510.79782, "r": 456.89954000000006, "b": 519.62241, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": " and A", "bbox": {"l": 456.9603, "t": 510.64844, "r": 485.8443, "b": 519.86142, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "LTER ", "bbox": {"l": 485.8204, "t": 510.79782, "r": 510.78018, "b": 519.62241, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "PERMISSION", "bbox": {"l": 136.80011, "t": 522.79764, "r": 186.71962, "b": 531.62222, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": " statements allow an individual row permission or column mask to be turned off ", "bbox": {"l": 186.78038, "t": 522.64825, "r": 538.5675, "b": 531.86124, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "with the ", "bbox": {"l": 136.80011, "t": 534.64804, "r": 174.01068, "b": 543.86105, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "DISABLE", "bbox": {"l": 173.99971, "t": 534.79745, "r": 208.97923, "b": 543.62201, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": " option and back on with the ", "bbox": {"l": 208.97923, "t": 534.64804, "r": 336.03802, "b": 543.86105, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ENABLE", "bbox": {"l": 336.05887, "t": 534.79745, "r": 366.05838, "b": 543.62201, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": " option. The ", "bbox": {"l": 365.99863, "t": 534.64804, "r": 421.61823, "b": 543.86105, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ALTER TABLE", "bbox": {"l": 421.5585, "t": 534.79745, "r": 476.51778999999993, "b": 543.62201, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": " statement can ", "bbox": {"l": 476.57855, "t": 534.64804, "r": 544.97375, "b": 543.86105, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "deactivate enforcement of all the row permissions and column masks for a single table.", "bbox": {"l": 136.79816, "t": 546.64786, "r": 520.03705, "b": 555.86086, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "section_header", "bbox": {"l": 64.14586639404297, "t": 644.4866333007812, "r": 183.93999, "b": 657.650634765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9669332504272461, "cells": [{"id": 53, "text": "7.1.4", "bbox": {"l": 64.800003, "t": 645.47462, "r": 94.598396, "b": 657.46263, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "Regenerating", "bbox": {"l": 98.323196, "t": 645.47462, "r": 183.93999, "b": 657.46263, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 136.13162231445312, "t": 670.6488647460938, "r": 547.32727, "b": 692.8422241210938, "coord_origin": "TOPLEFT"}, "confidence": 0.9813348054885864, "cells": [{"id": 55, "text": "DB2 also can regenerate an existing row permission or column mask. This regenerate option ", "bbox": {"l": 136.8, "t": 671.62862, "r": 547.32727, "b": 680.84162, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "can be useful with more complex RCAC definitions that reference other DB2 objects.", "bbox": {"l": 136.8, "t": 683.62843, "r": 509.6644600000001, "b": 692.8414310000001, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "text", "bbox": {"l": 142.16134643554688, "t": 573.9788818359375, "r": 541.13116, "b": 620.4790649414062, "coord_origin": "TOPLEFT"}, "confidence": 0.9856665730476379, "cells": [{"id": 57, "text": "Important:", "bbox": {"l": 142.8, "t": 574.66862, "r": 192.41673, "b": 583.88162, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": " Although these capabilities make it easy to temporarily turn off RCAC security ", "bbox": {"l": 192.41974, "t": 574.66862, "r": 541.13116, "b": 583.88162, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "so that you can make environment or application changes, these processes require an ", "bbox": {"l": 142.799, "t": 586.66843, "r": 526.54175, "b": 595.8814199999999, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "exclusive lock to be obtained on a table. Therefore, this activity must be planned carefully ", "bbox": {"l": 142.799, "t": 598.66823, "r": 538.427, "b": 607.88123, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "to avoid disruptions and outages.", "bbox": {"l": 142.799, "t": 610.66803, "r": 289.06061, "b": 619.88103, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 129, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.35222625732422, "t": 754.2322998046875, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9273734092712402, "cells": [{"id": 0, "text": "114 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "114"}, {"label": "page_footer", "id": 1, "page_no": 129, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.60916137695312, "t": 754.7075805664062, "r": 339.81958, "b": 763.9705200195312, "coord_origin": "TOPLEFT"}, "confidence": 0.9511194229125977, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "section_header", "id": 2, "page_no": 129, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.16378021240234, "t": 73.54357147216797, "r": 449.79186999999996, "b": 89.48138427734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9686716198921204, "cells": [{"id": 2, "text": "7.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.246155, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Managing row permissions and column masks", "bbox": {"l": 91.735367, "t": 74.34069999999997, "r": 449.79186999999996, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, "text": "7.1 Managing row permissions and column masks"}, {"label": "text", "id": 3, "page_no": 129, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.75418090820312, "t": 106.12907409667969, "r": 541.12109, "b": 116.29986572265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9501754641532898, "cells": [{"id": 4, "text": "This section focuses on the management of the RCAC row permissions and column masks.", "bbox": {"l": 136.8, "t": 106.6087, "r": 541.12109, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}]}, "text": "This section focuses on the management of the RCAC row permissions and column masks."}, {"label": "section_header", "id": 4, "page_no": 129, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 63.90059280395508, "t": 135.95755004882812, "r": 228.30336000000003, "b": 148.8716583251953, "coord_origin": "TOPLEFT"}, "confidence": 0.9683852195739746, "cells": [{"id": 5, "text": "7.1.1", "bbox": {"l": 64.800003, "t": 136.49463000000003, "r": 94.272484, "b": 148.48266999999998, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Source management", "bbox": {"l": 97.956543, "t": 136.49463000000003, "r": 228.30336000000003, "b": 148.48266999999998, "coord_origin": "TOPLEFT"}}]}, "text": "7.1.1 Source management"}, {"label": "text", "id": 5, "page_no": 129, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.94558715820312, "t": 161.98435974121094, "r": 546.4278, "b": 208.3597412109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9878652691841125, "cells": [{"id": 7, "text": "The SQL statements that are used to define row permissions and column masks should be ", "bbox": {"l": 136.8, "t": 162.64868, "r": 540.84125, "b": 171.86168999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "managed with a change management process. Ideally, you already are using a change ", "bbox": {"l": 136.8, "t": 174.6485, "r": 522.78192, "b": 183.86150999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "management process for your database definitions, and that same process can be extended ", "bbox": {"l": 136.8, "t": 186.64832, "r": 546.4278, "b": 195.86132999999995, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "to cover your RCAC definitions.", "bbox": {"l": 136.8, "t": 198.64813000000004, "r": 275.15433, "b": 207.86114999999995, "coord_origin": "TOPLEFT"}}]}, "text": "The SQL statements that are used to define row permissions and column masks should be managed with a change management process. Ideally, you already are using a change management process for your database definitions, and that same process can be extended to cover your RCAC definitions."}, {"label": "text", "id": 6, "page_no": 129, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.89431762695312, "t": 220.08180236816406, "r": 547.2934, "b": 301.81982, "coord_origin": "TOPLEFT"}, "confidence": 0.9883837699890137, "cells": [{"id": 11, "text": "If you are using SQL DDL to define your DB2 tables, then you have the option of adding the ", "bbox": {"l": 136.8, "t": 220.60790999999995, "r": 542.61035, "b": 229.82092, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "RCAC definitions to the same source file as the table definition. The benefit of this approach ", "bbox": {"l": 136.8, "t": 232.60772999999995, "r": 545.20575, "b": 241.82074, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "is that it keeps all DDL that is related to a table in a single source file. The downside is that if ", "bbox": {"l": 136.80002, "t": 244.60753999999997, "r": 546.14105, "b": 253.82056, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "you must re-create only the RCAC definitions and leave the table unchanged, then you must ", "bbox": {"l": 136.80005, "t": 256.60735999999997, "r": 545.83148, "b": 265.82037, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "identify and extract only the RCAC definitions from the source file. There are situations where ", "bbox": {"l": 136.80005, "t": 268.60717999999997, "r": 547.24664, "b": 277.82019, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "the row permissions and column masks must be changed or re-created without changing the ", "bbox": {"l": 136.80005, "t": 280.60703, "r": 547.2934, "b": 289.82001, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "definition of the associated table.", "bbox": {"l": 136.80005, "t": 292.60684000000003, "r": 282.08453, "b": 301.81982, "coord_origin": "TOPLEFT"}}]}, "text": "If you are using SQL DDL to define your DB2 tables, then you have the option of adding the RCAC definitions to the same source file as the table definition. The benefit of this approach is that it keeps all DDL that is related to a table in a single source file. The downside is that if you must re-create only the RCAC definitions and leave the table unchanged, then you must identify and extract only the RCAC definitions from the source file. There are situations where the row permissions and column masks must be changed or re-created without changing the definition of the associated table."}, {"label": "section_header", "id": 7, "page_no": 129, "cluster": {"id": 7, "label": "section_header", "bbox": {"l": 63.8327522277832, "t": 321.6274108886719, "r": 231.46431000000004, "b": 334.95697021484375, "coord_origin": "TOPLEFT"}, "confidence": 0.964327871799469, "cells": [{"id": 18, "text": "7.1.2", "bbox": {"l": 64.800003, "t": 322.49472, "r": 94.315964, "b": 334.4827, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Modifying definitions", "bbox": {"l": 98.005455, "t": 322.49472, "r": 231.46431000000004, "b": 334.4827, "coord_origin": "TOPLEFT"}}]}, "text": "7.1.2 Modifying definitions"}, {"label": "text", "id": 8, "page_no": 129, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.9163360595703, "t": 348.02764892578125, "r": 547.19885, "b": 394.3303527832031, "coord_origin": "TOPLEFT"}, "confidence": 0.9876542687416077, "cells": [{"id": 20, "text": "After RCAC is activated for a table, the row permission and column mask definitions can be ", "bbox": {"l": 136.8, "t": 348.64871, "r": 541.84814, "b": 357.86169, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "re-created to change the data access behavior for that table. Usage of the ", "bbox": {"l": 136.8, "t": 360.64853, "r": 463.4190699999999, "b": 369.86151, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "OR REPLACE", "bbox": {"l": 463.38042999999993, "t": 360.79791000000006, "r": 513.05994, "b": 369.6225, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": " clause ", "bbox": {"l": 513.05994, "t": 360.64853, "r": 547.19885, "b": 369.86151, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "on the ", "bbox": {"l": 136.80002, "t": 372.64834999999994, "r": 167.34138, "b": 381.86133, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "CREATE MASK", "bbox": {"l": 167.34036, "t": 372.79773, "r": 222.29962, "b": 381.62231, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": " and ", "bbox": {"l": 222.30063, "t": 372.64834999999994, "r": 244.62298999999996, "b": 381.86133, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "CREATE PERMISSION", "bbox": {"l": 244.56022999999996, "t": 372.79773, "r": 329.51904, "b": 381.62231, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": " SQL statements simplifies the re-creation ", "bbox": {"l": 329.52002, "t": 372.64834999999994, "r": 517.78992, "b": 381.86133, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "process by folding in the deletion of the existing RCAC definition.", "bbox": {"l": 136.8, "t": 384.64816, "r": 422.41983, "b": 393.86115, "coord_origin": "TOPLEFT"}}]}, "text": "After RCAC is activated for a table, the row permission and column mask definitions can be re-created to change the data access behavior for that table. Usage of the OR REPLACE clause on the CREATE MASK and CREATE PERMISSION SQL statements simplifies the re-creation process by folding in the deletion of the existing RCAC definition."}, {"label": "text", "id": 9, "page_no": 129, "cluster": {"id": 9, "label": "text", "bbox": {"l": 135.8429718017578, "t": 406.0337829589844, "r": 547.2923, "b": 452.2233581542969, "coord_origin": "TOPLEFT"}, "confidence": 0.9873954057693481, "cells": [{"id": 30, "text": "This capability makes it easy to change your RCAC definitions as you test the controls with ", "bbox": {"l": 136.8, "t": 406.60797, "r": 539.65204, "b": 415.82095, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "your applications and identify tweaks that must be made to your RCAC implementation. ", "bbox": {"l": 136.79999, "t": 418.60779, "r": 524.70508, "b": 427.82077, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "However, re-creation of RCAC definitions does require an exclusive lock to be acquired on the ", "bbox": {"l": 136.79999, "t": 430.6076, "r": 547.2923, "b": 439.82059, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "table during the process.", "bbox": {"l": 136.79999, "t": 442.60742, "r": 245.98248, "b": 451.82040000000006, "coord_origin": "TOPLEFT"}}]}, "text": "This capability makes it easy to change your RCAC definitions as you test the controls with your applications and identify tweaks that must be made to your RCAC implementation. However, re-creation of RCAC definitions does require an exclusive lock to be acquired on the table during the process."}, {"label": "section_header", "id": 10, "page_no": 129, "cluster": {"id": 10, "label": "section_header", "bbox": {"l": 64.0130844116211, "t": 471.7661437988281, "r": 214.6126708984375, "b": 484.9178771972656, "coord_origin": "TOPLEFT"}, "confidence": 0.9660051465034485, "cells": [{"id": 34, "text": "7.1.3", "bbox": {"l": 64.800003, "t": 472.49472, "r": 94.159073, "b": 484.4827, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Turning on and off", "bbox": {"l": 97.828957, "t": 472.49472, "r": 214.43356, "b": 484.4827, "coord_origin": "TOPLEFT"}}]}, "text": "7.1.3 Turning on and off"}, {"label": "text", "id": 11, "page_no": 129, "cluster": {"id": 11, "label": "text", "bbox": {"l": 136.03684997558594, "t": 498.14910888671875, "r": 547.18286, "b": 556.083740234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9864468574523926, "cells": [{"id": 36, "text": "As described in 3.1.2, \u201cEnabling and activating RCAC\u201d on page 16, the SQL ", "bbox": {"l": 136.8, "t": 498.64862, "r": 473.00781, "b": 507.8616, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "ALTER", "bbox": {"l": 472.92017, "t": 498.798, "r": 497.9397000000001, "b": 507.62259, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": " statement ", "bbox": {"l": 497.9397000000001, "t": 498.64862, "r": 547.18286, "b": 507.8616, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "can turn on and off row permissions and column masks. The ", "bbox": {"l": 136.80008, "t": 510.64844, "r": 406.95114, "b": 519.86142, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ALTER MASK", "bbox": {"l": 406.98001, "t": 510.79782, "r": 456.89954000000006, "b": 519.62241, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": " and A", "bbox": {"l": 456.9603, "t": 510.64844, "r": 485.8443, "b": 519.86142, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "LTER ", "bbox": {"l": 485.8204, "t": 510.79782, "r": 510.78018, "b": 519.62241, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "PERMISSION", "bbox": {"l": 136.80011, "t": 522.79764, "r": 186.71962, "b": 531.62222, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": " statements allow an individual row permission or column mask to be turned off ", "bbox": {"l": 186.78038, "t": 522.64825, "r": 538.5675, "b": 531.86124, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "with the ", "bbox": {"l": 136.80011, "t": 534.64804, "r": 174.01068, "b": 543.86105, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "DISABLE", "bbox": {"l": 173.99971, "t": 534.79745, "r": 208.97923, "b": 543.62201, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": " option and back on with the ", "bbox": {"l": 208.97923, "t": 534.64804, "r": 336.03802, "b": 543.86105, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ENABLE", "bbox": {"l": 336.05887, "t": 534.79745, "r": 366.05838, "b": 543.62201, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": " option. The ", "bbox": {"l": 365.99863, "t": 534.64804, "r": 421.61823, "b": 543.86105, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ALTER TABLE", "bbox": {"l": 421.5585, "t": 534.79745, "r": 476.51778999999993, "b": 543.62201, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": " statement can ", "bbox": {"l": 476.57855, "t": 534.64804, "r": 544.97375, "b": 543.86105, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "deactivate enforcement of all the row permissions and column masks for a single table.", "bbox": {"l": 136.79816, "t": 546.64786, "r": 520.03705, "b": 555.86086, "coord_origin": "TOPLEFT"}}]}, "text": "As described in 3.1.2, \u201cEnabling and activating RCAC\u201d on page 16, the SQL ALTER statement can turn on and off row permissions and column masks. The ALTER MASK and A LTER PERMISSION statements allow an individual row permission or column mask to be turned off with the DISABLE option and back on with the ENABLE option. The ALTER TABLE statement can deactivate enforcement of all the row permissions and column masks for a single table."}, {"label": "section_header", "id": 12, "page_no": 129, "cluster": {"id": 12, "label": "section_header", "bbox": {"l": 64.14586639404297, "t": 644.4866333007812, "r": 183.93999, "b": 657.650634765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9669332504272461, "cells": [{"id": 53, "text": "7.1.4", "bbox": {"l": 64.800003, "t": 645.47462, "r": 94.598396, "b": 657.46263, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "Regenerating", "bbox": {"l": 98.323196, "t": 645.47462, "r": 183.93999, "b": 657.46263, "coord_origin": "TOPLEFT"}}]}, "text": "7.1.4 Regenerating"}, {"label": "text", "id": 13, "page_no": 129, "cluster": {"id": 13, "label": "text", "bbox": {"l": 136.13162231445312, "t": 670.6488647460938, "r": 547.32727, "b": 692.8422241210938, "coord_origin": "TOPLEFT"}, "confidence": 0.9813348054885864, "cells": [{"id": 55, "text": "DB2 also can regenerate an existing row permission or column mask. This regenerate option ", "bbox": {"l": 136.8, "t": 671.62862, "r": 547.32727, "b": 680.84162, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "can be useful with more complex RCAC definitions that reference other DB2 objects.", "bbox": {"l": 136.8, "t": 683.62843, "r": 509.6644600000001, "b": 692.8414310000001, "coord_origin": "TOPLEFT"}}]}, "text": "DB2 also can regenerate an existing row permission or column mask. This regenerate option can be useful with more complex RCAC definitions that reference other DB2 objects."}, {"label": "text", "id": 14, "page_no": 129, "cluster": {"id": 14, "label": "text", "bbox": {"l": 142.16134643554688, "t": 573.9788818359375, "r": 541.13116, "b": 620.4790649414062, "coord_origin": "TOPLEFT"}, "confidence": 0.9856665730476379, "cells": [{"id": 57, "text": "Important:", "bbox": {"l": 142.8, "t": 574.66862, "r": 192.41673, "b": 583.88162, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": " Although these capabilities make it easy to temporarily turn off RCAC security ", "bbox": {"l": 192.41974, "t": 574.66862, "r": 541.13116, "b": 583.88162, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "so that you can make environment or application changes, these processes require an ", "bbox": {"l": 142.799, "t": 586.66843, "r": 526.54175, "b": 595.8814199999999, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "exclusive lock to be obtained on a table. Therefore, this activity must be planned carefully ", "bbox": {"l": 142.799, "t": 598.66823, "r": 538.427, "b": 607.88123, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "to avoid disruptions and outages.", "bbox": {"l": 142.799, "t": 610.66803, "r": 289.06061, "b": 619.88103, "coord_origin": "TOPLEFT"}}]}, "text": "Important: Although these capabilities make it easy to temporarily turn off RCAC security so that you can make environment or application changes, these processes require an exclusive lock to be obtained on a table. Therefore, this activity must be planned carefully to avoid disruptions and outages."}], "body": [{"label": "section_header", "id": 2, "page_no": 129, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.16378021240234, "t": 73.54357147216797, "r": 449.79186999999996, "b": 89.48138427734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9686716198921204, "cells": [{"id": 2, "text": "7.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.246155, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Managing row permissions and column masks", "bbox": {"l": 91.735367, "t": 74.34069999999997, "r": 449.79186999999996, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, "text": "7.1 Managing row permissions and column masks"}, {"label": "text", "id": 3, "page_no": 129, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.75418090820312, "t": 106.12907409667969, "r": 541.12109, "b": 116.29986572265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9501754641532898, "cells": [{"id": 4, "text": "This section focuses on the management of the RCAC row permissions and column masks.", "bbox": {"l": 136.8, "t": 106.6087, "r": 541.12109, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}]}, "text": "This section focuses on the management of the RCAC row permissions and column masks."}, {"label": "section_header", "id": 4, "page_no": 129, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 63.90059280395508, "t": 135.95755004882812, "r": 228.30336000000003, "b": 148.8716583251953, "coord_origin": "TOPLEFT"}, "confidence": 0.9683852195739746, "cells": [{"id": 5, "text": "7.1.1", "bbox": {"l": 64.800003, "t": 136.49463000000003, "r": 94.272484, "b": 148.48266999999998, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Source management", "bbox": {"l": 97.956543, "t": 136.49463000000003, "r": 228.30336000000003, "b": 148.48266999999998, "coord_origin": "TOPLEFT"}}]}, "text": "7.1.1 Source management"}, {"label": "text", "id": 5, "page_no": 129, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.94558715820312, "t": 161.98435974121094, "r": 546.4278, "b": 208.3597412109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9878652691841125, "cells": [{"id": 7, "text": "The SQL statements that are used to define row permissions and column masks should be ", "bbox": {"l": 136.8, "t": 162.64868, "r": 540.84125, "b": 171.86168999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "managed with a change management process. Ideally, you already are using a change ", "bbox": {"l": 136.8, "t": 174.6485, "r": 522.78192, "b": 183.86150999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "management process for your database definitions, and that same process can be extended ", "bbox": {"l": 136.8, "t": 186.64832, "r": 546.4278, "b": 195.86132999999995, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "to cover your RCAC definitions.", "bbox": {"l": 136.8, "t": 198.64813000000004, "r": 275.15433, "b": 207.86114999999995, "coord_origin": "TOPLEFT"}}]}, "text": "The SQL statements that are used to define row permissions and column masks should be managed with a change management process. Ideally, you already are using a change management process for your database definitions, and that same process can be extended to cover your RCAC definitions."}, {"label": "text", "id": 6, "page_no": 129, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.89431762695312, "t": 220.08180236816406, "r": 547.2934, "b": 301.81982, "coord_origin": "TOPLEFT"}, "confidence": 0.9883837699890137, "cells": [{"id": 11, "text": "If you are using SQL DDL to define your DB2 tables, then you have the option of adding the ", "bbox": {"l": 136.8, "t": 220.60790999999995, "r": 542.61035, "b": 229.82092, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "RCAC definitions to the same source file as the table definition. The benefit of this approach ", "bbox": {"l": 136.8, "t": 232.60772999999995, "r": 545.20575, "b": 241.82074, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "is that it keeps all DDL that is related to a table in a single source file. The downside is that if ", "bbox": {"l": 136.80002, "t": 244.60753999999997, "r": 546.14105, "b": 253.82056, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "you must re-create only the RCAC definitions and leave the table unchanged, then you must ", "bbox": {"l": 136.80005, "t": 256.60735999999997, "r": 545.83148, "b": 265.82037, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "identify and extract only the RCAC definitions from the source file. There are situations where ", "bbox": {"l": 136.80005, "t": 268.60717999999997, "r": 547.24664, "b": 277.82019, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "the row permissions and column masks must be changed or re-created without changing the ", "bbox": {"l": 136.80005, "t": 280.60703, "r": 547.2934, "b": 289.82001, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "definition of the associated table.", "bbox": {"l": 136.80005, "t": 292.60684000000003, "r": 282.08453, "b": 301.81982, "coord_origin": "TOPLEFT"}}]}, "text": "If you are using SQL DDL to define your DB2 tables, then you have the option of adding the RCAC definitions to the same source file as the table definition. The benefit of this approach is that it keeps all DDL that is related to a table in a single source file. The downside is that if you must re-create only the RCAC definitions and leave the table unchanged, then you must identify and extract only the RCAC definitions from the source file. There are situations where the row permissions and column masks must be changed or re-created without changing the definition of the associated table."}, {"label": "section_header", "id": 7, "page_no": 129, "cluster": {"id": 7, "label": "section_header", "bbox": {"l": 63.8327522277832, "t": 321.6274108886719, "r": 231.46431000000004, "b": 334.95697021484375, "coord_origin": "TOPLEFT"}, "confidence": 0.964327871799469, "cells": [{"id": 18, "text": "7.1.2", "bbox": {"l": 64.800003, "t": 322.49472, "r": 94.315964, "b": 334.4827, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Modifying definitions", "bbox": {"l": 98.005455, "t": 322.49472, "r": 231.46431000000004, "b": 334.4827, "coord_origin": "TOPLEFT"}}]}, "text": "7.1.2 Modifying definitions"}, {"label": "text", "id": 8, "page_no": 129, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.9163360595703, "t": 348.02764892578125, "r": 547.19885, "b": 394.3303527832031, "coord_origin": "TOPLEFT"}, "confidence": 0.9876542687416077, "cells": [{"id": 20, "text": "After RCAC is activated for a table, the row permission and column mask definitions can be ", "bbox": {"l": 136.8, "t": 348.64871, "r": 541.84814, "b": 357.86169, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "re-created to change the data access behavior for that table. Usage of the ", "bbox": {"l": 136.8, "t": 360.64853, "r": 463.4190699999999, "b": 369.86151, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "OR REPLACE", "bbox": {"l": 463.38042999999993, "t": 360.79791000000006, "r": 513.05994, "b": 369.6225, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": " clause ", "bbox": {"l": 513.05994, "t": 360.64853, "r": 547.19885, "b": 369.86151, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "on the ", "bbox": {"l": 136.80002, "t": 372.64834999999994, "r": 167.34138, "b": 381.86133, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "CREATE MASK", "bbox": {"l": 167.34036, "t": 372.79773, "r": 222.29962, "b": 381.62231, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": " and ", "bbox": {"l": 222.30063, "t": 372.64834999999994, "r": 244.62298999999996, "b": 381.86133, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "CREATE PERMISSION", "bbox": {"l": 244.56022999999996, "t": 372.79773, "r": 329.51904, "b": 381.62231, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": " SQL statements simplifies the re-creation ", "bbox": {"l": 329.52002, "t": 372.64834999999994, "r": 517.78992, "b": 381.86133, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "process by folding in the deletion of the existing RCAC definition.", "bbox": {"l": 136.8, "t": 384.64816, "r": 422.41983, "b": 393.86115, "coord_origin": "TOPLEFT"}}]}, "text": "After RCAC is activated for a table, the row permission and column mask definitions can be re-created to change the data access behavior for that table. Usage of the OR REPLACE clause on the CREATE MASK and CREATE PERMISSION SQL statements simplifies the re-creation process by folding in the deletion of the existing RCAC definition."}, {"label": "text", "id": 9, "page_no": 129, "cluster": {"id": 9, "label": "text", "bbox": {"l": 135.8429718017578, "t": 406.0337829589844, "r": 547.2923, "b": 452.2233581542969, "coord_origin": "TOPLEFT"}, "confidence": 0.9873954057693481, "cells": [{"id": 30, "text": "This capability makes it easy to change your RCAC definitions as you test the controls with ", "bbox": {"l": 136.8, "t": 406.60797, "r": 539.65204, "b": 415.82095, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "your applications and identify tweaks that must be made to your RCAC implementation. ", "bbox": {"l": 136.79999, "t": 418.60779, "r": 524.70508, "b": 427.82077, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "However, re-creation of RCAC definitions does require an exclusive lock to be acquired on the ", "bbox": {"l": 136.79999, "t": 430.6076, "r": 547.2923, "b": 439.82059, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "table during the process.", "bbox": {"l": 136.79999, "t": 442.60742, "r": 245.98248, "b": 451.82040000000006, "coord_origin": "TOPLEFT"}}]}, "text": "This capability makes it easy to change your RCAC definitions as you test the controls with your applications and identify tweaks that must be made to your RCAC implementation. However, re-creation of RCAC definitions does require an exclusive lock to be acquired on the table during the process."}, {"label": "section_header", "id": 10, "page_no": 129, "cluster": {"id": 10, "label": "section_header", "bbox": {"l": 64.0130844116211, "t": 471.7661437988281, "r": 214.6126708984375, "b": 484.9178771972656, "coord_origin": "TOPLEFT"}, "confidence": 0.9660051465034485, "cells": [{"id": 34, "text": "7.1.3", "bbox": {"l": 64.800003, "t": 472.49472, "r": 94.159073, "b": 484.4827, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Turning on and off", "bbox": {"l": 97.828957, "t": 472.49472, "r": 214.43356, "b": 484.4827, "coord_origin": "TOPLEFT"}}]}, "text": "7.1.3 Turning on and off"}, {"label": "text", "id": 11, "page_no": 129, "cluster": {"id": 11, "label": "text", "bbox": {"l": 136.03684997558594, "t": 498.14910888671875, "r": 547.18286, "b": 556.083740234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9864468574523926, "cells": [{"id": 36, "text": "As described in 3.1.2, \u201cEnabling and activating RCAC\u201d on page 16, the SQL ", "bbox": {"l": 136.8, "t": 498.64862, "r": 473.00781, "b": 507.8616, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "ALTER", "bbox": {"l": 472.92017, "t": 498.798, "r": 497.9397000000001, "b": 507.62259, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": " statement ", "bbox": {"l": 497.9397000000001, "t": 498.64862, "r": 547.18286, "b": 507.8616, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "can turn on and off row permissions and column masks. The ", "bbox": {"l": 136.80008, "t": 510.64844, "r": 406.95114, "b": 519.86142, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ALTER MASK", "bbox": {"l": 406.98001, "t": 510.79782, "r": 456.89954000000006, "b": 519.62241, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": " and A", "bbox": {"l": 456.9603, "t": 510.64844, "r": 485.8443, "b": 519.86142, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "LTER ", "bbox": {"l": 485.8204, "t": 510.79782, "r": 510.78018, "b": 519.62241, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "PERMISSION", "bbox": {"l": 136.80011, "t": 522.79764, "r": 186.71962, "b": 531.62222, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": " statements allow an individual row permission or column mask to be turned off ", "bbox": {"l": 186.78038, "t": 522.64825, "r": 538.5675, "b": 531.86124, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "with the ", "bbox": {"l": 136.80011, "t": 534.64804, "r": 174.01068, "b": 543.86105, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "DISABLE", "bbox": {"l": 173.99971, "t": 534.79745, "r": 208.97923, "b": 543.62201, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": " option and back on with the ", "bbox": {"l": 208.97923, "t": 534.64804, "r": 336.03802, "b": 543.86105, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ENABLE", "bbox": {"l": 336.05887, "t": 534.79745, "r": 366.05838, "b": 543.62201, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": " option. The ", "bbox": {"l": 365.99863, "t": 534.64804, "r": 421.61823, "b": 543.86105, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ALTER TABLE", "bbox": {"l": 421.5585, "t": 534.79745, "r": 476.51778999999993, "b": 543.62201, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": " statement can ", "bbox": {"l": 476.57855, "t": 534.64804, "r": 544.97375, "b": 543.86105, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "deactivate enforcement of all the row permissions and column masks for a single table.", "bbox": {"l": 136.79816, "t": 546.64786, "r": 520.03705, "b": 555.86086, "coord_origin": "TOPLEFT"}}]}, "text": "As described in 3.1.2, \u201cEnabling and activating RCAC\u201d on page 16, the SQL ALTER statement can turn on and off row permissions and column masks. The ALTER MASK and A LTER PERMISSION statements allow an individual row permission or column mask to be turned off with the DISABLE option and back on with the ENABLE option. The ALTER TABLE statement can deactivate enforcement of all the row permissions and column masks for a single table."}, {"label": "section_header", "id": 12, "page_no": 129, "cluster": {"id": 12, "label": "section_header", "bbox": {"l": 64.14586639404297, "t": 644.4866333007812, "r": 183.93999, "b": 657.650634765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9669332504272461, "cells": [{"id": 53, "text": "7.1.4", "bbox": {"l": 64.800003, "t": 645.47462, "r": 94.598396, "b": 657.46263, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "Regenerating", "bbox": {"l": 98.323196, "t": 645.47462, "r": 183.93999, "b": 657.46263, "coord_origin": "TOPLEFT"}}]}, "text": "7.1.4 Regenerating"}, {"label": "text", "id": 13, "page_no": 129, "cluster": {"id": 13, "label": "text", "bbox": {"l": 136.13162231445312, "t": 670.6488647460938, "r": 547.32727, "b": 692.8422241210938, "coord_origin": "TOPLEFT"}, "confidence": 0.9813348054885864, "cells": [{"id": 55, "text": "DB2 also can regenerate an existing row permission or column mask. This regenerate option ", "bbox": {"l": 136.8, "t": 671.62862, "r": 547.32727, "b": 680.84162, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "can be useful with more complex RCAC definitions that reference other DB2 objects.", "bbox": {"l": 136.8, "t": 683.62843, "r": 509.6644600000001, "b": 692.8414310000001, "coord_origin": "TOPLEFT"}}]}, "text": "DB2 also can regenerate an existing row permission or column mask. This regenerate option can be useful with more complex RCAC definitions that reference other DB2 objects."}, {"label": "text", "id": 14, "page_no": 129, "cluster": {"id": 14, "label": "text", "bbox": {"l": 142.16134643554688, "t": 573.9788818359375, "r": 541.13116, "b": 620.4790649414062, "coord_origin": "TOPLEFT"}, "confidence": 0.9856665730476379, "cells": [{"id": 57, "text": "Important:", "bbox": {"l": 142.8, "t": 574.66862, "r": 192.41673, "b": 583.88162, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": " Although these capabilities make it easy to temporarily turn off RCAC security ", "bbox": {"l": 192.41974, "t": 574.66862, "r": 541.13116, "b": 583.88162, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "so that you can make environment or application changes, these processes require an ", "bbox": {"l": 142.799, "t": 586.66843, "r": 526.54175, "b": 595.8814199999999, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "exclusive lock to be obtained on a table. Therefore, this activity must be planned carefully ", "bbox": {"l": 142.799, "t": 598.66823, "r": 538.427, "b": 607.88123, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "to avoid disruptions and outages.", "bbox": {"l": 142.799, "t": 610.66803, "r": 289.06061, "b": 619.88103, "coord_origin": "TOPLEFT"}}]}, "text": "Important: Although these capabilities make it easy to temporarily turn off RCAC security so that you can make environment or application changes, these processes require an exclusive lock to be obtained on a table. Therefore, this activity must be planned carefully to avoid disruptions and outages."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 129, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.35222625732422, "t": 754.2322998046875, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9273734092712402, "cells": [{"id": 0, "text": "114 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "114"}, {"label": "page_footer", "id": 1, "page_no": 129, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.60916137695312, "t": 754.7075805664062, "r": 339.81958, "b": 763.9705200195312, "coord_origin": "TOPLEFT"}, "confidence": 0.9511194229125977, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 130, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 7. Row and Column Access Control management ", "bbox": {"l": 284.39999, "t": 755.538002, "r": 518.01208, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "115", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "For example, consider a row permission on an ACCOUNTS table ", "bbox": {"l": 136.8002, "t": 71.50903000000005, "r": 426.74084, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "(PERMISSION1_ON_ACCOUNTS). The ACCOUNTS table row permission references and ", "bbox": {"l": 136.8002, "t": 83.50885000000017, "r": 541.2251, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "compares columns in the CUSTOMERS table. When the definition of the CUSTOMERS table ", "bbox": {"l": 136.8002, "t": 95.50867000000005, "r": 547.20105, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "changes, DB2 does not check to determine whether the change to the CUSTOMERS table ", "bbox": {"l": 136.8002, "t": 107.50847999999996, "r": 539.45013, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "breaks the ACCOUNTS table row permission. If this table definition change does break the ", "bbox": {"l": 136.8002, "t": 119.50829999999996, "r": 540.14032, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "row permission, an error does not surface until an application tries to read rows from the ", "bbox": {"l": 136.8002, "t": 131.50811999999996, "r": 528.31085, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "ACCOUNTS table.", "bbox": {"l": 136.8002, "t": 143.50793, "r": 219.39151, "b": 152.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Instead of waiting for an application to detect this error, the ", "bbox": {"l": 136.8002, "t": 165.52752999999996, "r": 395.05807, "b": 174.74054, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "REGENERATE", "bbox": {"l": 394.98032, "t": 165.67693999999995, "r": 444.95959, "b": 174.50153, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": " option can be used on ", "bbox": {"l": 444.9606, "t": 165.52752999999996, "r": 547.16022, "b": 174.74054, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "the ACCOUNTS row permission. The ", "bbox": {"l": 136.8002, "t": 177.52733999999998, "r": 304.96188, "b": 186.74036, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "REGENERATE", "bbox": {"l": 304.86029, "t": 177.67675999999994, "r": 354.83957, "b": 186.50134000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " option returns an error if the change in the ", "bbox": {"l": 354.84058, "t": 177.52733999999998, "r": 546.79071, "b": 186.74036, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "CUSTOMERS table definition causes the row permission to be invalid. In this way, the row ", "bbox": {"l": 136.80025, "t": 189.52715999999998, "r": 536.28687, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "permission can be proactively corrected before an application discovers the error.", "bbox": {"l": 136.80025, "t": 201.52697999999998, "r": 495.64507999999995, "b": 210.73999000000003, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "7.2", "bbox": {"l": 64.800003, "t": 239.22058000000004, "r": 87.193398, "b": 253.98357999999996, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Managing tables with row permissions and column masks", "bbox": {"l": 91.672058, "t": 239.22058000000004, "r": 536.6239, "b": 253.98357999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "This section examines the object management considerations after RCAC is added to a DB2 ", "bbox": {"l": 136.8, "t": 271.48870999999997, "r": 547.26471, "b": 280.70172, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "table.", "bbox": {"l": 136.8, "t": 283.48856, "r": 160.85938, "b": 292.70154, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "7.2.1", "bbox": {"l": 64.800003, "t": 313.37473, "r": 94.395134, "b": 325.36269999999996, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Save and restore", "bbox": {"l": 98.094528, "t": 313.37473, "r": 205.33696, "b": 325.36269999999996, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Row permissions and column masks are stored in the DB2 table object itself, so they are ", "bbox": {"l": 136.8, "t": 339.52872, "r": 530.53082, "b": 348.7417, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "automatically saved and restored when the DB2 table object is saved and restored. ", "bbox": {"l": 136.8, "t": 351.52853, "r": 505.7432600000001, "b": 360.74152, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Therefore, no adjustments must be made to your database backup process to accommodate ", "bbox": {"l": 136.8, "t": 363.52835, "r": 547.16217, "b": 372.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "RCAC.", "bbox": {"l": 136.8, "t": 375.52817, "r": 167.29852, "b": 384.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Save and restore processing works fine with RCAC if the RCAC definition does not reference ", "bbox": {"l": 136.8, "t": 397.48798, "r": 547.22571, "b": 406.70096, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "other DB2 objects other than the table over which they are defined. When the RCAC definition ", "bbox": {"l": 136.8, "t": 409.48779, "r": 547.14392, "b": 418.70078, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "has dependencies on other DB2 objects, the restore process is much more challenging.", "bbox": {"l": 136.8, "t": 421.48761, "r": 523.84241, "b": 430.70059000000003, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 283.8012390136719, "t": 754.84130859375, "r": 518.01208, "b": 764.0040283203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9527303576469421, "cells": [{"id": 0, "text": "Chapter 7. Row and Column Access Control management ", "bbox": {"l": 284.39999, "t": 755.538002, "r": 518.01208, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 530.0354614257812, "t": 754.32568359375, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9183745980262756, "cells": [{"id": 1, "text": "115", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.9884796142578, "t": 70.43203735351562, "r": 547.20105, "b": 152.72095000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9827796220779419, "cells": [{"id": 2, "text": "For example, consider a row permission on an ACCOUNTS table ", "bbox": {"l": 136.8002, "t": 71.50903000000005, "r": 426.74084, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "(PERMISSION1_ON_ACCOUNTS). The ACCOUNTS table row permission references and ", "bbox": {"l": 136.8002, "t": 83.50885000000017, "r": 541.2251, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "compares columns in the CUSTOMERS table. When the definition of the CUSTOMERS table ", "bbox": {"l": 136.8002, "t": 95.50867000000005, "r": 547.20105, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "changes, DB2 does not check to determine whether the change to the CUSTOMERS table ", "bbox": {"l": 136.8002, "t": 107.50847999999996, "r": 539.45013, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "breaks the ACCOUNTS table row permission. If this table definition change does break the ", "bbox": {"l": 136.8002, "t": 119.50829999999996, "r": 540.14032, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "row permission, an error does not surface until an application tries to read rows from the ", "bbox": {"l": 136.8002, "t": 131.50811999999996, "r": 528.31085, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "ACCOUNTS table.", "bbox": {"l": 136.8002, "t": 143.50793, "r": 219.39151, "b": 152.72095000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.99624633789062, "t": 164.5958709716797, "r": 547.16022, "b": 211.07290649414062, "coord_origin": "TOPLEFT"}, "confidence": 0.9867848753929138, "cells": [{"id": 9, "text": "Instead of waiting for an application to detect this error, the ", "bbox": {"l": 136.8002, "t": 165.52752999999996, "r": 395.05807, "b": 174.74054, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "REGENERATE", "bbox": {"l": 394.98032, "t": 165.67693999999995, "r": 444.95959, "b": 174.50153, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": " option can be used on ", "bbox": {"l": 444.9606, "t": 165.52752999999996, "r": 547.16022, "b": 174.74054, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "the ACCOUNTS row permission. The ", "bbox": {"l": 136.8002, "t": 177.52733999999998, "r": 304.96188, "b": 186.74036, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "REGENERATE", "bbox": {"l": 304.86029, "t": 177.67675999999994, "r": 354.83957, "b": 186.50134000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " option returns an error if the change in the ", "bbox": {"l": 354.84058, "t": 177.52733999999998, "r": 546.79071, "b": 186.74036, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "CUSTOMERS table definition causes the row permission to be invalid. In this way, the row ", "bbox": {"l": 136.80025, "t": 189.52715999999998, "r": 536.28687, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "permission can be proactively corrected before an application discovers the error.", "bbox": {"l": 136.80025, "t": 201.52697999999998, "r": 495.64507999999995, "b": 210.73999000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 63.91755676269531, "t": 238.19967651367188, "r": 536.6239, "b": 254.27833557128906, "coord_origin": "TOPLEFT"}, "confidence": 0.9644711017608643, "cells": [{"id": 17, "text": "7.2", "bbox": {"l": 64.800003, "t": 239.22058000000004, "r": 87.193398, "b": 253.98357999999996, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Managing tables with row permissions and column masks", "bbox": {"l": 91.672058, "t": 239.22058000000004, "r": 536.6239, "b": 253.98357999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.8260498046875, "t": 270.5757751464844, "r": 547.26471, "b": 292.70154, "coord_origin": "TOPLEFT"}, "confidence": 0.9742122888565063, "cells": [{"id": 19, "text": "This section examines the object management considerations after RCAC is added to a DB2 ", "bbox": {"l": 136.8, "t": 271.48870999999997, "r": 547.26471, "b": 280.70172, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "table.", "bbox": {"l": 136.8, "t": 283.48856, "r": 160.85938, "b": 292.70154, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "section_header", "bbox": {"l": 63.97272872924805, "t": 312.4022216796875, "r": 205.33696, "b": 325.36269999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.955165684223175, "cells": [{"id": 21, "text": "7.2.1", "bbox": {"l": 64.800003, "t": 313.37473, "r": 94.395134, "b": 325.36269999999996, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Save and restore", "bbox": {"l": 98.094528, "t": 313.37473, "r": 205.33696, "b": 325.36269999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 135.9362335205078, "t": 338.6729431152344, "r": 547.16217, "b": 384.74115000000006, "coord_origin": "TOPLEFT"}, "confidence": 0.9810709357261658, "cells": [{"id": 23, "text": "Row permissions and column masks are stored in the DB2 table object itself, so they are ", "bbox": {"l": 136.8, "t": 339.52872, "r": 530.53082, "b": 348.7417, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "automatically saved and restored when the DB2 table object is saved and restored. ", "bbox": {"l": 136.8, "t": 351.52853, "r": 505.7432600000001, "b": 360.74152, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Therefore, no adjustments must be made to your database backup process to accommodate ", "bbox": {"l": 136.8, "t": 363.52835, "r": 547.16217, "b": 372.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "RCAC.", "bbox": {"l": 136.8, "t": 375.52817, "r": 167.29852, "b": 384.74115000000006, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 135.97621154785156, "t": 396.52679443359375, "r": 547.22571, "b": 430.947021484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9845772385597229, "cells": [{"id": 27, "text": "Save and restore processing works fine with RCAC if the RCAC definition does not reference ", "bbox": {"l": 136.8, "t": 397.48798, "r": 547.22571, "b": 406.70096, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "other DB2 objects other than the table over which they are defined. When the RCAC definition ", "bbox": {"l": 136.8, "t": 409.48779, "r": 547.14392, "b": 418.70078, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "has dependencies on other DB2 objects, the restore process is much more challenging.", "bbox": {"l": 136.8, "t": 421.48761, "r": 523.84241, "b": 430.70059000000003, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 130, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 283.8012390136719, "t": 754.84130859375, "r": 518.01208, "b": 764.0040283203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9527303576469421, "cells": [{"id": 0, "text": "Chapter 7. Row and Column Access Control management ", "bbox": {"l": 284.39999, "t": 755.538002, "r": 518.01208, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 7. Row and Column Access Control management"}, {"label": "page_footer", "id": 1, "page_no": 130, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.0354614257812, "t": 754.32568359375, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9183745980262756, "cells": [{"id": 1, "text": "115", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "115"}, {"label": "text", "id": 2, "page_no": 130, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.9884796142578, "t": 70.43203735351562, "r": 547.20105, "b": 152.72095000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9827796220779419, "cells": [{"id": 2, "text": "For example, consider a row permission on an ACCOUNTS table ", "bbox": {"l": 136.8002, "t": 71.50903000000005, "r": 426.74084, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "(PERMISSION1_ON_ACCOUNTS). The ACCOUNTS table row permission references and ", "bbox": {"l": 136.8002, "t": 83.50885000000017, "r": 541.2251, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "compares columns in the CUSTOMERS table. When the definition of the CUSTOMERS table ", "bbox": {"l": 136.8002, "t": 95.50867000000005, "r": 547.20105, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "changes, DB2 does not check to determine whether the change to the CUSTOMERS table ", "bbox": {"l": 136.8002, "t": 107.50847999999996, "r": 539.45013, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "breaks the ACCOUNTS table row permission. If this table definition change does break the ", "bbox": {"l": 136.8002, "t": 119.50829999999996, "r": 540.14032, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "row permission, an error does not surface until an application tries to read rows from the ", "bbox": {"l": 136.8002, "t": 131.50811999999996, "r": 528.31085, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "ACCOUNTS table.", "bbox": {"l": 136.8002, "t": 143.50793, "r": 219.39151, "b": 152.72095000000002, "coord_origin": "TOPLEFT"}}]}, "text": "For example, consider a row permission on an ACCOUNTS table (PERMISSION1_ON_ACCOUNTS). The ACCOUNTS table row permission references and compares columns in the CUSTOMERS table. When the definition of the CUSTOMERS table changes, DB2 does not check to determine whether the change to the CUSTOMERS table breaks the ACCOUNTS table row permission. If this table definition change does break the row permission, an error does not surface until an application tries to read rows from the ACCOUNTS table."}, {"label": "text", "id": 3, "page_no": 130, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.99624633789062, "t": 164.5958709716797, "r": 547.16022, "b": 211.07290649414062, "coord_origin": "TOPLEFT"}, "confidence": 0.9867848753929138, "cells": [{"id": 9, "text": "Instead of waiting for an application to detect this error, the ", "bbox": {"l": 136.8002, "t": 165.52752999999996, "r": 395.05807, "b": 174.74054, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "REGENERATE", "bbox": {"l": 394.98032, "t": 165.67693999999995, "r": 444.95959, "b": 174.50153, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": " option can be used on ", "bbox": {"l": 444.9606, "t": 165.52752999999996, "r": 547.16022, "b": 174.74054, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "the ACCOUNTS row permission. The ", "bbox": {"l": 136.8002, "t": 177.52733999999998, "r": 304.96188, "b": 186.74036, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "REGENERATE", "bbox": {"l": 304.86029, "t": 177.67675999999994, "r": 354.83957, "b": 186.50134000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " option returns an error if the change in the ", "bbox": {"l": 354.84058, "t": 177.52733999999998, "r": 546.79071, "b": 186.74036, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "CUSTOMERS table definition causes the row permission to be invalid. In this way, the row ", "bbox": {"l": 136.80025, "t": 189.52715999999998, "r": 536.28687, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "permission can be proactively corrected before an application discovers the error.", "bbox": {"l": 136.80025, "t": 201.52697999999998, "r": 495.64507999999995, "b": 210.73999000000003, "coord_origin": "TOPLEFT"}}]}, "text": "Instead of waiting for an application to detect this error, the REGENERATE option can be used on the ACCOUNTS row permission. The REGENERATE option returns an error if the change in the CUSTOMERS table definition causes the row permission to be invalid. In this way, the row permission can be proactively corrected before an application discovers the error."}, {"label": "section_header", "id": 4, "page_no": 130, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 63.91755676269531, "t": 238.19967651367188, "r": 536.6239, "b": 254.27833557128906, "coord_origin": "TOPLEFT"}, "confidence": 0.9644711017608643, "cells": [{"id": 17, "text": "7.2", "bbox": {"l": 64.800003, "t": 239.22058000000004, "r": 87.193398, "b": 253.98357999999996, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Managing tables with row permissions and column masks", "bbox": {"l": 91.672058, "t": 239.22058000000004, "r": 536.6239, "b": 253.98357999999996, "coord_origin": "TOPLEFT"}}]}, "text": "7.2 Managing tables with row permissions and column masks"}, {"label": "text", "id": 5, "page_no": 130, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.8260498046875, "t": 270.5757751464844, "r": 547.26471, "b": 292.70154, "coord_origin": "TOPLEFT"}, "confidence": 0.9742122888565063, "cells": [{"id": 19, "text": "This section examines the object management considerations after RCAC is added to a DB2 ", "bbox": {"l": 136.8, "t": 271.48870999999997, "r": 547.26471, "b": 280.70172, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "table.", "bbox": {"l": 136.8, "t": 283.48856, "r": 160.85938, "b": 292.70154, "coord_origin": "TOPLEFT"}}]}, "text": "This section examines the object management considerations after RCAC is added to a DB2 table."}, {"label": "section_header", "id": 6, "page_no": 130, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 63.97272872924805, "t": 312.4022216796875, "r": 205.33696, "b": 325.36269999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.955165684223175, "cells": [{"id": 21, "text": "7.2.1", "bbox": {"l": 64.800003, "t": 313.37473, "r": 94.395134, "b": 325.36269999999996, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Save and restore", "bbox": {"l": 98.094528, "t": 313.37473, "r": 205.33696, "b": 325.36269999999996, "coord_origin": "TOPLEFT"}}]}, "text": "7.2.1 Save and restore"}, {"label": "text", "id": 7, "page_no": 130, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.9362335205078, "t": 338.6729431152344, "r": 547.16217, "b": 384.74115000000006, "coord_origin": "TOPLEFT"}, "confidence": 0.9810709357261658, "cells": [{"id": 23, "text": "Row permissions and column masks are stored in the DB2 table object itself, so they are ", "bbox": {"l": 136.8, "t": 339.52872, "r": 530.53082, "b": 348.7417, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "automatically saved and restored when the DB2 table object is saved and restored. ", "bbox": {"l": 136.8, "t": 351.52853, "r": 505.7432600000001, "b": 360.74152, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Therefore, no adjustments must be made to your database backup process to accommodate ", "bbox": {"l": 136.8, "t": 363.52835, "r": 547.16217, "b": 372.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "RCAC.", "bbox": {"l": 136.8, "t": 375.52817, "r": 167.29852, "b": 384.74115000000006, "coord_origin": "TOPLEFT"}}]}, "text": "Row permissions and column masks are stored in the DB2 table object itself, so they are automatically saved and restored when the DB2 table object is saved and restored. Therefore, no adjustments must be made to your database backup process to accommodate RCAC."}, {"label": "text", "id": 8, "page_no": 130, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.97621154785156, "t": 396.52679443359375, "r": 547.22571, "b": 430.947021484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9845772385597229, "cells": [{"id": 27, "text": "Save and restore processing works fine with RCAC if the RCAC definition does not reference ", "bbox": {"l": 136.8, "t": 397.48798, "r": 547.22571, "b": 406.70096, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "other DB2 objects other than the table over which they are defined. When the RCAC definition ", "bbox": {"l": 136.8, "t": 409.48779, "r": 547.14392, "b": 418.70078, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "has dependencies on other DB2 objects, the restore process is much more challenging.", "bbox": {"l": 136.8, "t": 421.48761, "r": 523.84241, "b": 430.70059000000003, "coord_origin": "TOPLEFT"}}]}, "text": "Save and restore processing works fine with RCAC if the RCAC definition does not reference other DB2 objects other than the table over which they are defined. When the RCAC definition has dependencies on other DB2 objects, the restore process is much more challenging."}], "body": [{"label": "text", "id": 2, "page_no": 130, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.9884796142578, "t": 70.43203735351562, "r": 547.20105, "b": 152.72095000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9827796220779419, "cells": [{"id": 2, "text": "For example, consider a row permission on an ACCOUNTS table ", "bbox": {"l": 136.8002, "t": 71.50903000000005, "r": 426.74084, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "(PERMISSION1_ON_ACCOUNTS). The ACCOUNTS table row permission references and ", "bbox": {"l": 136.8002, "t": 83.50885000000017, "r": 541.2251, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "compares columns in the CUSTOMERS table. When the definition of the CUSTOMERS table ", "bbox": {"l": 136.8002, "t": 95.50867000000005, "r": 547.20105, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "changes, DB2 does not check to determine whether the change to the CUSTOMERS table ", "bbox": {"l": 136.8002, "t": 107.50847999999996, "r": 539.45013, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "breaks the ACCOUNTS table row permission. If this table definition change does break the ", "bbox": {"l": 136.8002, "t": 119.50829999999996, "r": 540.14032, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "row permission, an error does not surface until an application tries to read rows from the ", "bbox": {"l": 136.8002, "t": 131.50811999999996, "r": 528.31085, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "ACCOUNTS table.", "bbox": {"l": 136.8002, "t": 143.50793, "r": 219.39151, "b": 152.72095000000002, "coord_origin": "TOPLEFT"}}]}, "text": "For example, consider a row permission on an ACCOUNTS table (PERMISSION1_ON_ACCOUNTS). The ACCOUNTS table row permission references and compares columns in the CUSTOMERS table. When the definition of the CUSTOMERS table changes, DB2 does not check to determine whether the change to the CUSTOMERS table breaks the ACCOUNTS table row permission. If this table definition change does break the row permission, an error does not surface until an application tries to read rows from the ACCOUNTS table."}, {"label": "text", "id": 3, "page_no": 130, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.99624633789062, "t": 164.5958709716797, "r": 547.16022, "b": 211.07290649414062, "coord_origin": "TOPLEFT"}, "confidence": 0.9867848753929138, "cells": [{"id": 9, "text": "Instead of waiting for an application to detect this error, the ", "bbox": {"l": 136.8002, "t": 165.52752999999996, "r": 395.05807, "b": 174.74054, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "REGENERATE", "bbox": {"l": 394.98032, "t": 165.67693999999995, "r": 444.95959, "b": 174.50153, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": " option can be used on ", "bbox": {"l": 444.9606, "t": 165.52752999999996, "r": 547.16022, "b": 174.74054, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "the ACCOUNTS row permission. The ", "bbox": {"l": 136.8002, "t": 177.52733999999998, "r": 304.96188, "b": 186.74036, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "REGENERATE", "bbox": {"l": 304.86029, "t": 177.67675999999994, "r": 354.83957, "b": 186.50134000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " option returns an error if the change in the ", "bbox": {"l": 354.84058, "t": 177.52733999999998, "r": 546.79071, "b": 186.74036, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "CUSTOMERS table definition causes the row permission to be invalid. In this way, the row ", "bbox": {"l": 136.80025, "t": 189.52715999999998, "r": 536.28687, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "permission can be proactively corrected before an application discovers the error.", "bbox": {"l": 136.80025, "t": 201.52697999999998, "r": 495.64507999999995, "b": 210.73999000000003, "coord_origin": "TOPLEFT"}}]}, "text": "Instead of waiting for an application to detect this error, the REGENERATE option can be used on the ACCOUNTS row permission. The REGENERATE option returns an error if the change in the CUSTOMERS table definition causes the row permission to be invalid. In this way, the row permission can be proactively corrected before an application discovers the error."}, {"label": "section_header", "id": 4, "page_no": 130, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 63.91755676269531, "t": 238.19967651367188, "r": 536.6239, "b": 254.27833557128906, "coord_origin": "TOPLEFT"}, "confidence": 0.9644711017608643, "cells": [{"id": 17, "text": "7.2", "bbox": {"l": 64.800003, "t": 239.22058000000004, "r": 87.193398, "b": 253.98357999999996, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Managing tables with row permissions and column masks", "bbox": {"l": 91.672058, "t": 239.22058000000004, "r": 536.6239, "b": 253.98357999999996, "coord_origin": "TOPLEFT"}}]}, "text": "7.2 Managing tables with row permissions and column masks"}, {"label": "text", "id": 5, "page_no": 130, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.8260498046875, "t": 270.5757751464844, "r": 547.26471, "b": 292.70154, "coord_origin": "TOPLEFT"}, "confidence": 0.9742122888565063, "cells": [{"id": 19, "text": "This section examines the object management considerations after RCAC is added to a DB2 ", "bbox": {"l": 136.8, "t": 271.48870999999997, "r": 547.26471, "b": 280.70172, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "table.", "bbox": {"l": 136.8, "t": 283.48856, "r": 160.85938, "b": 292.70154, "coord_origin": "TOPLEFT"}}]}, "text": "This section examines the object management considerations after RCAC is added to a DB2 table."}, {"label": "section_header", "id": 6, "page_no": 130, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 63.97272872924805, "t": 312.4022216796875, "r": 205.33696, "b": 325.36269999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.955165684223175, "cells": [{"id": 21, "text": "7.2.1", "bbox": {"l": 64.800003, "t": 313.37473, "r": 94.395134, "b": 325.36269999999996, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Save and restore", "bbox": {"l": 98.094528, "t": 313.37473, "r": 205.33696, "b": 325.36269999999996, "coord_origin": "TOPLEFT"}}]}, "text": "7.2.1 Save and restore"}, {"label": "text", "id": 7, "page_no": 130, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.9362335205078, "t": 338.6729431152344, "r": 547.16217, "b": 384.74115000000006, "coord_origin": "TOPLEFT"}, "confidence": 0.9810709357261658, "cells": [{"id": 23, "text": "Row permissions and column masks are stored in the DB2 table object itself, so they are ", "bbox": {"l": 136.8, "t": 339.52872, "r": 530.53082, "b": 348.7417, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "automatically saved and restored when the DB2 table object is saved and restored. ", "bbox": {"l": 136.8, "t": 351.52853, "r": 505.7432600000001, "b": 360.74152, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Therefore, no adjustments must be made to your database backup process to accommodate ", "bbox": {"l": 136.8, "t": 363.52835, "r": 547.16217, "b": 372.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "RCAC.", "bbox": {"l": 136.8, "t": 375.52817, "r": 167.29852, "b": 384.74115000000006, "coord_origin": "TOPLEFT"}}]}, "text": "Row permissions and column masks are stored in the DB2 table object itself, so they are automatically saved and restored when the DB2 table object is saved and restored. Therefore, no adjustments must be made to your database backup process to accommodate RCAC."}, {"label": "text", "id": 8, "page_no": 130, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.97621154785156, "t": 396.52679443359375, "r": 547.22571, "b": 430.947021484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9845772385597229, "cells": [{"id": 27, "text": "Save and restore processing works fine with RCAC if the RCAC definition does not reference ", "bbox": {"l": 136.8, "t": 397.48798, "r": 547.22571, "b": 406.70096, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "other DB2 objects other than the table over which they are defined. When the RCAC definition ", "bbox": {"l": 136.8, "t": 409.48779, "r": 547.14392, "b": 418.70078, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "has dependencies on other DB2 objects, the restore process is much more challenging.", "bbox": {"l": 136.8, "t": 421.48761, "r": 523.84241, "b": 430.70059000000003, "coord_origin": "TOPLEFT"}}]}, "text": "Save and restore processing works fine with RCAC if the RCAC definition does not reference other DB2 objects other than the table over which they are defined. When the RCAC definition has dependencies on other DB2 objects, the restore process is much more challenging."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 130, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 283.8012390136719, "t": 754.84130859375, "r": 518.01208, "b": 764.0040283203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9527303576469421, "cells": [{"id": 0, "text": "Chapter 7. Row and Column Access Control management ", "bbox": {"l": 284.39999, "t": 755.538002, "r": 518.01208, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 7. Row and Column Access Control management"}, {"label": "page_footer", "id": 1, "page_no": 130, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.0354614257812, "t": 754.32568359375, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9183745980262756, "cells": [{"id": 1, "text": "115", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "115"}]}}, {"page_no": 131, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "116 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "For example, assume that the BANKSCHEMA library (which is the system name or short ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 531.61835, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "name for the schema long name of BANK_SCHEMA) is saved and restored into a library ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 530.71289, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "named BANK_TEST. Recall from the example in 7.1.4, \u201cRegenerating\u201d on page 114 that the ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 545.21863, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "row permission on the ACCOUNTS table references the CUSTOMERS table (\u2026", "bbox": {"l": 136.8, "t": 107.50811999999996, "r": 490.46466, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "SELECT ", "bbox": {"l": 490.43976000000004, "t": 107.65752999999995, "r": 525.3595, "b": 116.48212000000001, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "C.CUSTOMER_ID FROM CUSTOMERS C", "bbox": {"l": 136.79999, "t": 119.65734999999995, "r": 286.67804, "b": 128.48193000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "\u2026). After the restore operation, the ACCOUNTS row ", "bbox": {"l": 286.73981, "t": 119.50792999999999, "r": 521.1106, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "permission still references the CUSTOMERS table in BANK_SCHEMA because DB2 ", "bbox": {"l": 136.79997, "t": 131.50775, "r": 513.90448, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "explicitly qualifies all object references when the row permission or column mask is created. ", "bbox": {"l": 136.79996, "t": 143.50757, "r": 544.04651, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "The restore processing does not change the explicit qualification from BANK_SCHEMA to ", "bbox": {"l": 136.79996, "t": 155.50739, "r": 535.98975, "b": 164.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "BANK_TEST. As a result, the restored ACCOUNTS row permission now depends on DB2 ", "bbox": {"l": 136.79996, "t": 167.5072, "r": 535.21295, "b": 176.72020999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "objects residing in a different schema, even though it was not created that way originally. For ", "bbox": {"l": 136.79996, "t": 179.50702, "r": 546.44183, "b": 188.72002999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "more details, see Figure 7-1.", "bbox": {"l": 136.79996, "t": 191.50684, "r": 263.8049, "b": 200.71984999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Figure 7-1 Restoring tables to different schemas", "bbox": {"l": 136.8, "t": 457.27798, "r": 333.25101, "b": 465.603, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "The only way to fix this issue is to re-create the row permission or column mask after the ", "bbox": {"l": 136.8, "t": 483.22873, "r": 529.77881, "b": 492.44171, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "restore operation. Re-creation of the row permission or column mask is required only for ", "bbox": {"l": 136.8, "t": 495.22855, "r": 528.1543, "b": 504.44153, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "definitions that reference other DB2 objects, but it is simpler to re-create all of the RCAC ", "bbox": {"l": 136.8, "t": 507.22836, "r": 528.0686, "b": 516.44135, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "definitions instead of a subset. For example, generate the SQL using System i Navigator, ", "bbox": {"l": 136.8, "t": 519.2281800000001, "r": 531.37744, "b": 528.4411600000001, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "clear the \u201cSchema qualify names for objects\u201d and select the \u201cOR REPLACE clause\u201d, and then ", "bbox": {"l": 136.8, "t": 531.22797, "r": 547.26556, "b": 540.44098, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "run the generated script.", "bbox": {"l": 136.8, "t": 543.22778, "r": 245.34109, "b": 552.44078, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "7.2.2", "bbox": {"l": 64.800003, "t": 573.11472, "r": 94.223091, "b": 585.10272, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Table migration", "bbox": {"l": 97.90097, "t": 573.11472, "r": 196.4101, "b": 585.10272, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "There are several IBM i CL commands, such as Move Object (", "bbox": {"l": 136.8, "t": 599.26872, "r": 411.69705, "b": 608.48172, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "MOVOBJ", "bbox": {"l": 411.66016, "t": 599.41812, "r": 441.59990999999997, "b": 608.2426800000001, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "), Create Duplicate ", "bbox": {"l": 441.65967, "t": 599.26872, "r": 527.79877, "b": 608.48172, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Object (", "bbox": {"l": 136.79999, "t": 611.2685200000001, "r": 171.80441, "b": 620.48152, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "CRTDUPOBJ", "bbox": {"l": 171.77951, "t": 611.41792, "r": 216.71902, "b": 620.24248, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "), and Copy Library (", "bbox": {"l": 216.77979, "t": 611.2685200000001, "r": 307.79428, "b": 620.48152, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CPYLIB", "bbox": {"l": 307.73947, "t": 611.41792, "r": 337.73901, "b": 620.24248, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "), which are used to migrate a table from one ", "bbox": {"l": 337.73999, "t": 611.2685200000001, "r": 538.52258, "b": 620.48152, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "library to another one. Often, this migration is done to create different versions of the table ", "bbox": {"l": 136.79997, "t": 623.26833, "r": 535.95691, "b": 632.48132, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "that can be used for development or testing purposes. ", "bbox": {"l": 136.79997, "t": 635.26813, "r": 377.78326, "b": 644.48112, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "The migration of a table with RCAC has the same challenges as restore processing. If the ", "bbox": {"l": 136.79997, "t": 657.22794, "r": 535.00952, "b": 666.44093, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "RCAC definition references other DB2 objects, then IBM i CL commands do not change the ", "bbox": {"l": 136.79997, "t": 669.22774, "r": 542.69781, "b": 678.44074, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "schema names that are explicitly qualified by the DB2 internal RCAC processing.", "bbox": {"l": 136.79997, "t": 681.22755, "r": 494.12694999999997, "b": 690.44055, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Again, re-creating the row permission or column mask is the only way to fix the issue of ", "bbox": {"l": 136.79997, "t": 703.247116, "r": 524.25989, "b": 712.460121, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "references to DB2 objects in other schemas. ", "bbox": {"l": 136.79997, "t": 715.246925, "r": 335.79077, "b": 724.45993, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Move", "bbox": {"l": 316.2662, "t": 220.88775999999996, "r": 344.72815, "b": 231.39691000000005, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Copy", "bbox": {"l": 318.01773, "t": 235.63744999999994, "r": 342.92993, "b": 246.14661, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "BANK SCHEMA", "bbox": {"l": 196.3947, "t": 287.32263000000006, "r": 273.97681, "b": 297.83176, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "BANK TEST", "bbox": {"l": 397.38919, "t": 286.03204, "r": 454.81213, "b": 296.54117, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Duplicate", "bbox": {"l": 306.95551, "t": 250.38702, "r": 354.05246, "b": 260.89617999999996, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Restore", "bbox": {"l": 311.56479, "t": 265.13671999999997, "r": 349.3006, "b": 275.64586999999995, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "BANK_SCHEMA", "bbox": {"l": 196.3947, "t": 287.32263000000006, "r": 273.95575, "b": 297.83176, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "BANK_TEST", "bbox": {"l": 397.38919, "t": 286.03204, "r": 454.89566, "b": 296.54117, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "ACCOUNTS", "bbox": {"l": 161.9789, "t": 307.9545, "r": 208.89331, "b": 316.71362, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ACCOUNTS", "bbox": {"l": 352.83301, "t": 307.9545, "r": 399.74747, "b": 316.71362, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "CUSTOMERS", "bbox": {"l": 257.8822, "t": 354.96887, "r": 310.7991, "b": 363.728, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Pe", "bbox": {"l": 198.0847, "t": 334.38089, "r": 208.51683, "b": 343.14001, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "rmission", "bbox": {"l": 208.52605, "t": 334.38089, "r": 244.6942, "b": 343.14001, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "CUSTOMERS", "bbox": {"l": 449.93481, "t": 355.27618, "r": 502.85172000000006, "b": 364.03531, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "Pe", "bbox": {"l": 390.1373, "t": 334.68817, "r": 400.56946, "b": 343.4473, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "rmission", "bbox": {"l": 400.57867, "t": 334.68817, "r": 436.74683, "b": 343.4473, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "References BANK_SCHEMA.CUSTOMERS", "bbox": {"l": 158.7216, "t": 431.38046, "r": 311.55884, "b": 439.62183, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "References BANK_SCHEMA.CUSTOMERS", "bbox": {"l": 350.7742, "t": 431.68777, "r": 503.61142000000007, "b": 439.92914, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.29827880859375, "t": 754.2285766601562, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9285372495651245, "cells": [{"id": 0, "text": "116 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 98.44544219970703, "t": 754.6015625, "r": 339.8977355957031, "b": 763.9843139648438, "coord_origin": "TOPLEFT"}, "confidence": 0.954731285572052, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.94534301757812, "t": 70.57475280761719, "r": 546.44183, "b": 200.73284912109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9859393835067749, "cells": [{"id": 2, "text": "For example, assume that the BANKSCHEMA library (which is the system name or short ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 531.61835, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "name for the schema long name of BANK_SCHEMA) is saved and restored into a library ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 530.71289, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "named BANK_TEST. Recall from the example in 7.1.4, \u201cRegenerating\u201d on page 114 that the ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 545.21863, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "row permission on the ACCOUNTS table references the CUSTOMERS table (\u2026", "bbox": {"l": 136.8, "t": 107.50811999999996, "r": 490.46466, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "SELECT ", "bbox": {"l": 490.43976000000004, "t": 107.65752999999995, "r": 525.3595, "b": 116.48212000000001, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "C.CUSTOMER_ID FROM CUSTOMERS C", "bbox": {"l": 136.79999, "t": 119.65734999999995, "r": 286.67804, "b": 128.48193000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "\u2026). After the restore operation, the ACCOUNTS row ", "bbox": {"l": 286.73981, "t": 119.50792999999999, "r": 521.1106, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "permission still references the CUSTOMERS table in BANK_SCHEMA because DB2 ", "bbox": {"l": 136.79997, "t": 131.50775, "r": 513.90448, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "explicitly qualifies all object references when the row permission or column mask is created. ", "bbox": {"l": 136.79996, "t": 143.50757, "r": 544.04651, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "The restore processing does not change the explicit qualification from BANK_SCHEMA to ", "bbox": {"l": 136.79996, "t": 155.50739, "r": 535.98975, "b": 164.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "BANK_TEST. As a result, the restored ACCOUNTS row permission now depends on DB2 ", "bbox": {"l": 136.79996, "t": 167.5072, "r": 535.21295, "b": 176.72020999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "objects residing in a different schema, even though it was not created that way originally. For ", "bbox": {"l": 136.79996, "t": 179.50702, "r": 546.44183, "b": 188.72002999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "more details, see Figure 7-1.", "bbox": {"l": 136.79996, "t": 191.50684, "r": 263.8049, "b": 200.71984999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 135.7970428466797, "t": 456.8849182128906, "r": 333.88006591796875, "b": 466.27325439453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9470012187957764, "cells": [{"id": 15, "text": "Figure 7-1 Restoring tables to different schemas", "bbox": {"l": 136.8, "t": 457.27798, "r": 333.25101, "b": 465.603, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.7681427001953, "t": 482.7886657714844, "r": 547.26556, "b": 553.0422973632812, "coord_origin": "TOPLEFT"}, "confidence": 0.986469030380249, "cells": [{"id": 16, "text": "The only way to fix this issue is to re-create the row permission or column mask after the ", "bbox": {"l": 136.8, "t": 483.22873, "r": 529.77881, "b": 492.44171, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "restore operation. Re-creation of the row permission or column mask is required only for ", "bbox": {"l": 136.8, "t": 495.22855, "r": 528.1543, "b": 504.44153, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "definitions that reference other DB2 objects, but it is simpler to re-create all of the RCAC ", "bbox": {"l": 136.8, "t": 507.22836, "r": 528.0686, "b": 516.44135, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "definitions instead of a subset. For example, generate the SQL using System i Navigator, ", "bbox": {"l": 136.8, "t": 519.2281800000001, "r": 531.37744, "b": 528.4411600000001, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "clear the \u201cSchema qualify names for objects\u201d and select the \u201cOR REPLACE clause\u201d, and then ", "bbox": {"l": 136.8, "t": 531.22797, "r": 547.26556, "b": 540.44098, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "run the generated script.", "bbox": {"l": 136.8, "t": 543.22778, "r": 245.34109, "b": 552.44078, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "section_header", "bbox": {"l": 63.921077728271484, "t": 572.3475952148438, "r": 196.4101, "b": 585.6023559570312, "coord_origin": "TOPLEFT"}, "confidence": 0.9667927026748657, "cells": [{"id": 22, "text": "7.2.2", "bbox": {"l": 64.800003, "t": 573.11472, "r": 94.223091, "b": 585.10272, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Table migration", "bbox": {"l": 97.90097, "t": 573.11472, "r": 196.4101, "b": 585.10272, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 135.8064727783203, "t": 598.497802734375, "r": 538.52258, "b": 645.066162109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9866422414779663, "cells": [{"id": 24, "text": "There are several IBM i CL commands, such as Move Object (", "bbox": {"l": 136.8, "t": 599.26872, "r": 411.69705, "b": 608.48172, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "MOVOBJ", "bbox": {"l": 411.66016, "t": 599.41812, "r": 441.59990999999997, "b": 608.2426800000001, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "), Create Duplicate ", "bbox": {"l": 441.65967, "t": 599.26872, "r": 527.79877, "b": 608.48172, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Object (", "bbox": {"l": 136.79999, "t": 611.2685200000001, "r": 171.80441, "b": 620.48152, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "CRTDUPOBJ", "bbox": {"l": 171.77951, "t": 611.41792, "r": 216.71902, "b": 620.24248, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "), and Copy Library (", "bbox": {"l": 216.77979, "t": 611.2685200000001, "r": 307.79428, "b": 620.48152, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CPYLIB", "bbox": {"l": 307.73947, "t": 611.41792, "r": 337.73901, "b": 620.24248, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "), which are used to migrate a table from one ", "bbox": {"l": 337.73999, "t": 611.2685200000001, "r": 538.52258, "b": 620.48152, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "library to another one. Often, this migration is done to create different versions of the table ", "bbox": {"l": 136.79997, "t": 623.26833, "r": 535.95691, "b": 632.48132, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "that can be used for development or testing purposes. ", "bbox": {"l": 136.79997, "t": 635.26813, "r": 377.78326, "b": 644.48112, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 135.9099884033203, "t": 656.6238403320312, "r": 542.69781, "b": 691.0518188476562, "coord_origin": "TOPLEFT"}, "confidence": 0.9842554926872253, "cells": [{"id": 34, "text": "The migration of a table with RCAC has the same challenges as restore processing. If the ", "bbox": {"l": 136.79997, "t": 657.22794, "r": 535.00952, "b": 666.44093, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "RCAC definition references other DB2 objects, then IBM i CL commands do not change the ", "bbox": {"l": 136.79997, "t": 669.22774, "r": 542.69781, "b": 678.44074, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "schema names that are explicitly qualified by the DB2 internal RCAC processing.", "bbox": {"l": 136.79997, "t": 681.22755, "r": 494.12694999999997, "b": 690.44055, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 135.79965209960938, "t": 702.5816040039062, "r": 524.25989, "b": 724.7844848632812, "coord_origin": "TOPLEFT"}, "confidence": 0.97635817527771, "cells": [{"id": 37, "text": "Again, re-creating the row permission or column mask is the only way to fix the issue of ", "bbox": {"l": 136.79997, "t": 703.247116, "r": 524.25989, "b": 712.460121, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "references to DB2 objects in other schemas. ", "bbox": {"l": 136.79997, "t": 715.246925, "r": 335.79077, "b": 724.45993, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "picture", "bbox": {"l": 136.1027374267578, "t": 215.22740173339844, "r": 522.8739013671875, "b": 453.6589050292969, "coord_origin": "TOPLEFT"}, "confidence": 0.9824627637863159, "cells": [{"id": 39, "text": "Move", "bbox": {"l": 316.2662, "t": 220.88775999999996, "r": 344.72815, "b": 231.39691000000005, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Copy", "bbox": {"l": 318.01773, "t": 235.63744999999994, "r": 342.92993, "b": 246.14661, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "BANK SCHEMA", "bbox": {"l": 196.3947, "t": 287.32263000000006, "r": 273.97681, "b": 297.83176, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "BANK TEST", "bbox": {"l": 397.38919, "t": 286.03204, "r": 454.81213, "b": 296.54117, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Duplicate", "bbox": {"l": 306.95551, "t": 250.38702, "r": 354.05246, "b": 260.89617999999996, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Restore", "bbox": {"l": 311.56479, "t": 265.13671999999997, "r": 349.3006, "b": 275.64586999999995, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "BANK_SCHEMA", "bbox": {"l": 196.3947, "t": 287.32263000000006, "r": 273.95575, "b": 297.83176, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "BANK_TEST", "bbox": {"l": 397.38919, "t": 286.03204, "r": 454.89566, "b": 296.54117, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "ACCOUNTS", "bbox": {"l": 161.9789, "t": 307.9545, "r": 208.89331, "b": 316.71362, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ACCOUNTS", "bbox": {"l": 352.83301, "t": 307.9545, "r": 399.74747, "b": 316.71362, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "CUSTOMERS", "bbox": {"l": 257.8822, "t": 354.96887, "r": 310.7991, "b": 363.728, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Pe", "bbox": {"l": 198.0847, "t": 334.38089, "r": 208.51683, "b": 343.14001, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "rmission", "bbox": {"l": 208.52605, "t": 334.38089, "r": 244.6942, "b": 343.14001, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "CUSTOMERS", "bbox": {"l": 449.93481, "t": 355.27618, "r": 502.85172000000006, "b": 364.03531, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "Pe", "bbox": {"l": 390.1373, "t": 334.68817, "r": 400.56946, "b": 343.4473, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "rmission", "bbox": {"l": 400.57867, "t": 334.68817, "r": 436.74683, "b": 343.4473, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "References BANK_SCHEMA.CUSTOMERS", "bbox": {"l": 158.7216, "t": 431.38046, "r": 311.55884, "b": 439.62183, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "References BANK_SCHEMA.CUSTOMERS", "bbox": {"l": 350.7742, "t": 431.68777, "r": 503.61142000000007, "b": 439.92914, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 131, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.29827880859375, "t": 754.2285766601562, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9285372495651245, "cells": [{"id": 0, "text": "116 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "116"}, {"label": "page_footer", "id": 1, "page_no": 131, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.44544219970703, "t": 754.6015625, "r": 339.8977355957031, "b": 763.9843139648438, "coord_origin": "TOPLEFT"}, "confidence": 0.954731285572052, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 2, "page_no": 131, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.94534301757812, "t": 70.57475280761719, "r": 546.44183, "b": 200.73284912109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9859393835067749, "cells": [{"id": 2, "text": "For example, assume that the BANKSCHEMA library (which is the system name or short ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 531.61835, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "name for the schema long name of BANK_SCHEMA) is saved and restored into a library ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 530.71289, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "named BANK_TEST. Recall from the example in 7.1.4, \u201cRegenerating\u201d on page 114 that the ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 545.21863, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "row permission on the ACCOUNTS table references the CUSTOMERS table (\u2026", "bbox": {"l": 136.8, "t": 107.50811999999996, "r": 490.46466, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "SELECT ", "bbox": {"l": 490.43976000000004, "t": 107.65752999999995, "r": 525.3595, "b": 116.48212000000001, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "C.CUSTOMER_ID FROM CUSTOMERS C", "bbox": {"l": 136.79999, "t": 119.65734999999995, "r": 286.67804, "b": 128.48193000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "\u2026). After the restore operation, the ACCOUNTS row ", "bbox": {"l": 286.73981, "t": 119.50792999999999, "r": 521.1106, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "permission still references the CUSTOMERS table in BANK_SCHEMA because DB2 ", "bbox": {"l": 136.79997, "t": 131.50775, "r": 513.90448, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "explicitly qualifies all object references when the row permission or column mask is created. ", "bbox": {"l": 136.79996, "t": 143.50757, "r": 544.04651, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "The restore processing does not change the explicit qualification from BANK_SCHEMA to ", "bbox": {"l": 136.79996, "t": 155.50739, "r": 535.98975, "b": 164.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "BANK_TEST. As a result, the restored ACCOUNTS row permission now depends on DB2 ", "bbox": {"l": 136.79996, "t": 167.5072, "r": 535.21295, "b": 176.72020999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "objects residing in a different schema, even though it was not created that way originally. For ", "bbox": {"l": 136.79996, "t": 179.50702, "r": 546.44183, "b": 188.72002999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "more details, see Figure 7-1.", "bbox": {"l": 136.79996, "t": 191.50684, "r": 263.8049, "b": 200.71984999999995, "coord_origin": "TOPLEFT"}}]}, "text": "For example, assume that the BANKSCHEMA library (which is the system name or short name for the schema long name of BANK_SCHEMA) is saved and restored into a library named BANK_TEST. Recall from the example in 7.1.4, \u201cRegenerating\u201d on page 114 that the row permission on the ACCOUNTS table references the CUSTOMERS table (\u2026 SELECT C.CUSTOMER_ID FROM CUSTOMERS C \u2026). After the restore operation, the ACCOUNTS row permission still references the CUSTOMERS table in BANK_SCHEMA because DB2 explicitly qualifies all object references when the row permission or column mask is created. The restore processing does not change the explicit qualification from BANK_SCHEMA to BANK_TEST. As a result, the restored ACCOUNTS row permission now depends on DB2 objects residing in a different schema, even though it was not created that way originally. For more details, see Figure 7-1."}, {"label": "caption", "id": 3, "page_no": 131, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.7970428466797, "t": 456.8849182128906, "r": 333.88006591796875, "b": 466.27325439453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9470012187957764, "cells": [{"id": 15, "text": "Figure 7-1 Restoring tables to different schemas", "bbox": {"l": 136.8, "t": 457.27798, "r": 333.25101, "b": 465.603, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 7-1 Restoring tables to different schemas"}, {"label": "text", "id": 4, "page_no": 131, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.7681427001953, "t": 482.7886657714844, "r": 547.26556, "b": 553.0422973632812, "coord_origin": "TOPLEFT"}, "confidence": 0.986469030380249, "cells": [{"id": 16, "text": "The only way to fix this issue is to re-create the row permission or column mask after the ", "bbox": {"l": 136.8, "t": 483.22873, "r": 529.77881, "b": 492.44171, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "restore operation. Re-creation of the row permission or column mask is required only for ", "bbox": {"l": 136.8, "t": 495.22855, "r": 528.1543, "b": 504.44153, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "definitions that reference other DB2 objects, but it is simpler to re-create all of the RCAC ", "bbox": {"l": 136.8, "t": 507.22836, "r": 528.0686, "b": 516.44135, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "definitions instead of a subset. For example, generate the SQL using System i Navigator, ", "bbox": {"l": 136.8, "t": 519.2281800000001, "r": 531.37744, "b": 528.4411600000001, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "clear the \u201cSchema qualify names for objects\u201d and select the \u201cOR REPLACE clause\u201d, and then ", "bbox": {"l": 136.8, "t": 531.22797, "r": 547.26556, "b": 540.44098, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "run the generated script.", "bbox": {"l": 136.8, "t": 543.22778, "r": 245.34109, "b": 552.44078, "coord_origin": "TOPLEFT"}}]}, "text": "The only way to fix this issue is to re-create the row permission or column mask after the restore operation. Re-creation of the row permission or column mask is required only for definitions that reference other DB2 objects, but it is simpler to re-create all of the RCAC definitions instead of a subset. For example, generate the SQL using System i Navigator, clear the \u201cSchema qualify names for objects\u201d and select the \u201cOR REPLACE clause\u201d, and then run the generated script."}, {"label": "section_header", "id": 5, "page_no": 131, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 63.921077728271484, "t": 572.3475952148438, "r": 196.4101, "b": 585.6023559570312, "coord_origin": "TOPLEFT"}, "confidence": 0.9667927026748657, "cells": [{"id": 22, "text": "7.2.2", "bbox": {"l": 64.800003, "t": 573.11472, "r": 94.223091, "b": 585.10272, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Table migration", "bbox": {"l": 97.90097, "t": 573.11472, "r": 196.4101, "b": 585.10272, "coord_origin": "TOPLEFT"}}]}, "text": "7.2.2 Table migration"}, {"label": "text", "id": 6, "page_no": 131, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.8064727783203, "t": 598.497802734375, "r": 538.52258, "b": 645.066162109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9866422414779663, "cells": [{"id": 24, "text": "There are several IBM i CL commands, such as Move Object (", "bbox": {"l": 136.8, "t": 599.26872, "r": 411.69705, "b": 608.48172, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "MOVOBJ", "bbox": {"l": 411.66016, "t": 599.41812, "r": 441.59990999999997, "b": 608.2426800000001, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "), Create Duplicate ", "bbox": {"l": 441.65967, "t": 599.26872, "r": 527.79877, "b": 608.48172, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Object (", "bbox": {"l": 136.79999, "t": 611.2685200000001, "r": 171.80441, "b": 620.48152, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "CRTDUPOBJ", "bbox": {"l": 171.77951, "t": 611.41792, "r": 216.71902, "b": 620.24248, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "), and Copy Library (", "bbox": {"l": 216.77979, "t": 611.2685200000001, "r": 307.79428, "b": 620.48152, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CPYLIB", "bbox": {"l": 307.73947, "t": 611.41792, "r": 337.73901, "b": 620.24248, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "), which are used to migrate a table from one ", "bbox": {"l": 337.73999, "t": 611.2685200000001, "r": 538.52258, "b": 620.48152, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "library to another one. Often, this migration is done to create different versions of the table ", "bbox": {"l": 136.79997, "t": 623.26833, "r": 535.95691, "b": 632.48132, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "that can be used for development or testing purposes. ", "bbox": {"l": 136.79997, "t": 635.26813, "r": 377.78326, "b": 644.48112, "coord_origin": "TOPLEFT"}}]}, "text": "There are several IBM i CL commands, such as Move Object ( MOVOBJ ), Create Duplicate Object ( CRTDUPOBJ ), and Copy Library ( CPYLIB ), which are used to migrate a table from one library to another one. Often, this migration is done to create different versions of the table that can be used for development or testing purposes."}, {"label": "text", "id": 7, "page_no": 131, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.9099884033203, "t": 656.6238403320312, "r": 542.69781, "b": 691.0518188476562, "coord_origin": "TOPLEFT"}, "confidence": 0.9842554926872253, "cells": [{"id": 34, "text": "The migration of a table with RCAC has the same challenges as restore processing. If the ", "bbox": {"l": 136.79997, "t": 657.22794, "r": 535.00952, "b": 666.44093, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "RCAC definition references other DB2 objects, then IBM i CL commands do not change the ", "bbox": {"l": 136.79997, "t": 669.22774, "r": 542.69781, "b": 678.44074, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "schema names that are explicitly qualified by the DB2 internal RCAC processing.", "bbox": {"l": 136.79997, "t": 681.22755, "r": 494.12694999999997, "b": 690.44055, "coord_origin": "TOPLEFT"}}]}, "text": "The migration of a table with RCAC has the same challenges as restore processing. If the RCAC definition references other DB2 objects, then IBM i CL commands do not change the schema names that are explicitly qualified by the DB2 internal RCAC processing."}, {"label": "text", "id": 8, "page_no": 131, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.79965209960938, "t": 702.5816040039062, "r": 524.25989, "b": 724.7844848632812, "coord_origin": "TOPLEFT"}, "confidence": 0.97635817527771, "cells": [{"id": 37, "text": "Again, re-creating the row permission or column mask is the only way to fix the issue of ", "bbox": {"l": 136.79997, "t": 703.247116, "r": 524.25989, "b": 712.460121, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "references to DB2 objects in other schemas. ", "bbox": {"l": 136.79997, "t": 715.246925, "r": 335.79077, "b": 724.45993, "coord_origin": "TOPLEFT"}}]}, "text": "Again, re-creating the row permission or column mask is the only way to fix the issue of references to DB2 objects in other schemas."}, {"label": "picture", "id": 9, "page_no": 131, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 136.1027374267578, "t": 215.22740173339844, "r": 522.8739013671875, "b": 453.6589050292969, "coord_origin": "TOPLEFT"}, "confidence": 0.9824627637863159, "cells": [{"id": 39, "text": "Move", "bbox": {"l": 316.2662, "t": 220.88775999999996, "r": 344.72815, "b": 231.39691000000005, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Copy", "bbox": {"l": 318.01773, "t": 235.63744999999994, "r": 342.92993, "b": 246.14661, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "BANK SCHEMA", "bbox": {"l": 196.3947, "t": 287.32263000000006, "r": 273.97681, "b": 297.83176, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "BANK TEST", "bbox": {"l": 397.38919, "t": 286.03204, "r": 454.81213, "b": 296.54117, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Duplicate", "bbox": {"l": 306.95551, "t": 250.38702, "r": 354.05246, "b": 260.89617999999996, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Restore", "bbox": {"l": 311.56479, "t": 265.13671999999997, "r": 349.3006, "b": 275.64586999999995, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "BANK_SCHEMA", "bbox": {"l": 196.3947, "t": 287.32263000000006, "r": 273.95575, "b": 297.83176, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "BANK_TEST", "bbox": {"l": 397.38919, "t": 286.03204, "r": 454.89566, "b": 296.54117, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "ACCOUNTS", "bbox": {"l": 161.9789, "t": 307.9545, "r": 208.89331, "b": 316.71362, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ACCOUNTS", "bbox": {"l": 352.83301, "t": 307.9545, "r": 399.74747, "b": 316.71362, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "CUSTOMERS", "bbox": {"l": 257.8822, "t": 354.96887, "r": 310.7991, "b": 363.728, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Pe", "bbox": {"l": 198.0847, "t": 334.38089, "r": 208.51683, "b": 343.14001, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "rmission", "bbox": {"l": 208.52605, "t": 334.38089, "r": 244.6942, "b": 343.14001, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "CUSTOMERS", "bbox": {"l": 449.93481, "t": 355.27618, "r": 502.85172000000006, "b": 364.03531, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "Pe", "bbox": {"l": 390.1373, "t": 334.68817, "r": 400.56946, "b": 343.4473, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "rmission", "bbox": {"l": 400.57867, "t": 334.68817, "r": 436.74683, "b": 343.4473, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "References BANK_SCHEMA.CUSTOMERS", "bbox": {"l": 158.7216, "t": 431.38046, "r": 311.55884, "b": 439.62183, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "References BANK_SCHEMA.CUSTOMERS", "bbox": {"l": 350.7742, "t": 431.68777, "r": 503.61142000000007, "b": 439.92914, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 131, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.94534301757812, "t": 70.57475280761719, "r": 546.44183, "b": 200.73284912109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9859393835067749, "cells": [{"id": 2, "text": "For example, assume that the BANKSCHEMA library (which is the system name or short ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 531.61835, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "name for the schema long name of BANK_SCHEMA) is saved and restored into a library ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 530.71289, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "named BANK_TEST. Recall from the example in 7.1.4, \u201cRegenerating\u201d on page 114 that the ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 545.21863, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "row permission on the ACCOUNTS table references the CUSTOMERS table (\u2026", "bbox": {"l": 136.8, "t": 107.50811999999996, "r": 490.46466, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "SELECT ", "bbox": {"l": 490.43976000000004, "t": 107.65752999999995, "r": 525.3595, "b": 116.48212000000001, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "C.CUSTOMER_ID FROM CUSTOMERS C", "bbox": {"l": 136.79999, "t": 119.65734999999995, "r": 286.67804, "b": 128.48193000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "\u2026). After the restore operation, the ACCOUNTS row ", "bbox": {"l": 286.73981, "t": 119.50792999999999, "r": 521.1106, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "permission still references the CUSTOMERS table in BANK_SCHEMA because DB2 ", "bbox": {"l": 136.79997, "t": 131.50775, "r": 513.90448, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "explicitly qualifies all object references when the row permission or column mask is created. ", "bbox": {"l": 136.79996, "t": 143.50757, "r": 544.04651, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "The restore processing does not change the explicit qualification from BANK_SCHEMA to ", "bbox": {"l": 136.79996, "t": 155.50739, "r": 535.98975, "b": 164.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "BANK_TEST. As a result, the restored ACCOUNTS row permission now depends on DB2 ", "bbox": {"l": 136.79996, "t": 167.5072, "r": 535.21295, "b": 176.72020999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "objects residing in a different schema, even though it was not created that way originally. For ", "bbox": {"l": 136.79996, "t": 179.50702, "r": 546.44183, "b": 188.72002999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "more details, see Figure 7-1.", "bbox": {"l": 136.79996, "t": 191.50684, "r": 263.8049, "b": 200.71984999999995, "coord_origin": "TOPLEFT"}}]}, "text": "For example, assume that the BANKSCHEMA library (which is the system name or short name for the schema long name of BANK_SCHEMA) is saved and restored into a library named BANK_TEST. Recall from the example in 7.1.4, \u201cRegenerating\u201d on page 114 that the row permission on the ACCOUNTS table references the CUSTOMERS table (\u2026 SELECT C.CUSTOMER_ID FROM CUSTOMERS C \u2026). After the restore operation, the ACCOUNTS row permission still references the CUSTOMERS table in BANK_SCHEMA because DB2 explicitly qualifies all object references when the row permission or column mask is created. The restore processing does not change the explicit qualification from BANK_SCHEMA to BANK_TEST. As a result, the restored ACCOUNTS row permission now depends on DB2 objects residing in a different schema, even though it was not created that way originally. For more details, see Figure 7-1."}, {"label": "caption", "id": 3, "page_no": 131, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.7970428466797, "t": 456.8849182128906, "r": 333.88006591796875, "b": 466.27325439453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9470012187957764, "cells": [{"id": 15, "text": "Figure 7-1 Restoring tables to different schemas", "bbox": {"l": 136.8, "t": 457.27798, "r": 333.25101, "b": 465.603, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 7-1 Restoring tables to different schemas"}, {"label": "text", "id": 4, "page_no": 131, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.7681427001953, "t": 482.7886657714844, "r": 547.26556, "b": 553.0422973632812, "coord_origin": "TOPLEFT"}, "confidence": 0.986469030380249, "cells": [{"id": 16, "text": "The only way to fix this issue is to re-create the row permission or column mask after the ", "bbox": {"l": 136.8, "t": 483.22873, "r": 529.77881, "b": 492.44171, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "restore operation. Re-creation of the row permission or column mask is required only for ", "bbox": {"l": 136.8, "t": 495.22855, "r": 528.1543, "b": 504.44153, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "definitions that reference other DB2 objects, but it is simpler to re-create all of the RCAC ", "bbox": {"l": 136.8, "t": 507.22836, "r": 528.0686, "b": 516.44135, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "definitions instead of a subset. For example, generate the SQL using System i Navigator, ", "bbox": {"l": 136.8, "t": 519.2281800000001, "r": 531.37744, "b": 528.4411600000001, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "clear the \u201cSchema qualify names for objects\u201d and select the \u201cOR REPLACE clause\u201d, and then ", "bbox": {"l": 136.8, "t": 531.22797, "r": 547.26556, "b": 540.44098, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "run the generated script.", "bbox": {"l": 136.8, "t": 543.22778, "r": 245.34109, "b": 552.44078, "coord_origin": "TOPLEFT"}}]}, "text": "The only way to fix this issue is to re-create the row permission or column mask after the restore operation. Re-creation of the row permission or column mask is required only for definitions that reference other DB2 objects, but it is simpler to re-create all of the RCAC definitions instead of a subset. For example, generate the SQL using System i Navigator, clear the \u201cSchema qualify names for objects\u201d and select the \u201cOR REPLACE clause\u201d, and then run the generated script."}, {"label": "section_header", "id": 5, "page_no": 131, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 63.921077728271484, "t": 572.3475952148438, "r": 196.4101, "b": 585.6023559570312, "coord_origin": "TOPLEFT"}, "confidence": 0.9667927026748657, "cells": [{"id": 22, "text": "7.2.2", "bbox": {"l": 64.800003, "t": 573.11472, "r": 94.223091, "b": 585.10272, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Table migration", "bbox": {"l": 97.90097, "t": 573.11472, "r": 196.4101, "b": 585.10272, "coord_origin": "TOPLEFT"}}]}, "text": "7.2.2 Table migration"}, {"label": "text", "id": 6, "page_no": 131, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.8064727783203, "t": 598.497802734375, "r": 538.52258, "b": 645.066162109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9866422414779663, "cells": [{"id": 24, "text": "There are several IBM i CL commands, such as Move Object (", "bbox": {"l": 136.8, "t": 599.26872, "r": 411.69705, "b": 608.48172, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "MOVOBJ", "bbox": {"l": 411.66016, "t": 599.41812, "r": 441.59990999999997, "b": 608.2426800000001, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "), Create Duplicate ", "bbox": {"l": 441.65967, "t": 599.26872, "r": 527.79877, "b": 608.48172, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Object (", "bbox": {"l": 136.79999, "t": 611.2685200000001, "r": 171.80441, "b": 620.48152, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "CRTDUPOBJ", "bbox": {"l": 171.77951, "t": 611.41792, "r": 216.71902, "b": 620.24248, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "), and Copy Library (", "bbox": {"l": 216.77979, "t": 611.2685200000001, "r": 307.79428, "b": 620.48152, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CPYLIB", "bbox": {"l": 307.73947, "t": 611.41792, "r": 337.73901, "b": 620.24248, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "), which are used to migrate a table from one ", "bbox": {"l": 337.73999, "t": 611.2685200000001, "r": 538.52258, "b": 620.48152, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "library to another one. Often, this migration is done to create different versions of the table ", "bbox": {"l": 136.79997, "t": 623.26833, "r": 535.95691, "b": 632.48132, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "that can be used for development or testing purposes. ", "bbox": {"l": 136.79997, "t": 635.26813, "r": 377.78326, "b": 644.48112, "coord_origin": "TOPLEFT"}}]}, "text": "There are several IBM i CL commands, such as Move Object ( MOVOBJ ), Create Duplicate Object ( CRTDUPOBJ ), and Copy Library ( CPYLIB ), which are used to migrate a table from one library to another one. Often, this migration is done to create different versions of the table that can be used for development or testing purposes."}, {"label": "text", "id": 7, "page_no": 131, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.9099884033203, "t": 656.6238403320312, "r": 542.69781, "b": 691.0518188476562, "coord_origin": "TOPLEFT"}, "confidence": 0.9842554926872253, "cells": [{"id": 34, "text": "The migration of a table with RCAC has the same challenges as restore processing. If the ", "bbox": {"l": 136.79997, "t": 657.22794, "r": 535.00952, "b": 666.44093, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "RCAC definition references other DB2 objects, then IBM i CL commands do not change the ", "bbox": {"l": 136.79997, "t": 669.22774, "r": 542.69781, "b": 678.44074, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "schema names that are explicitly qualified by the DB2 internal RCAC processing.", "bbox": {"l": 136.79997, "t": 681.22755, "r": 494.12694999999997, "b": 690.44055, "coord_origin": "TOPLEFT"}}]}, "text": "The migration of a table with RCAC has the same challenges as restore processing. If the RCAC definition references other DB2 objects, then IBM i CL commands do not change the schema names that are explicitly qualified by the DB2 internal RCAC processing."}, {"label": "text", "id": 8, "page_no": 131, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.79965209960938, "t": 702.5816040039062, "r": 524.25989, "b": 724.7844848632812, "coord_origin": "TOPLEFT"}, "confidence": 0.97635817527771, "cells": [{"id": 37, "text": "Again, re-creating the row permission or column mask is the only way to fix the issue of ", "bbox": {"l": 136.79997, "t": 703.247116, "r": 524.25989, "b": 712.460121, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "references to DB2 objects in other schemas. ", "bbox": {"l": 136.79997, "t": 715.246925, "r": 335.79077, "b": 724.45993, "coord_origin": "TOPLEFT"}}]}, "text": "Again, re-creating the row permission or column mask is the only way to fix the issue of references to DB2 objects in other schemas."}, {"label": "picture", "id": 9, "page_no": 131, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 136.1027374267578, "t": 215.22740173339844, "r": 522.8739013671875, "b": 453.6589050292969, "coord_origin": "TOPLEFT"}, "confidence": 0.9824627637863159, "cells": [{"id": 39, "text": "Move", "bbox": {"l": 316.2662, "t": 220.88775999999996, "r": 344.72815, "b": 231.39691000000005, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Copy", "bbox": {"l": 318.01773, "t": 235.63744999999994, "r": 342.92993, "b": 246.14661, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "BANK SCHEMA", "bbox": {"l": 196.3947, "t": 287.32263000000006, "r": 273.97681, "b": 297.83176, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "BANK TEST", "bbox": {"l": 397.38919, "t": 286.03204, "r": 454.81213, "b": 296.54117, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Duplicate", "bbox": {"l": 306.95551, "t": 250.38702, "r": 354.05246, "b": 260.89617999999996, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Restore", "bbox": {"l": 311.56479, "t": 265.13671999999997, "r": 349.3006, "b": 275.64586999999995, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "BANK_SCHEMA", "bbox": {"l": 196.3947, "t": 287.32263000000006, "r": 273.95575, "b": 297.83176, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "BANK_TEST", "bbox": {"l": 397.38919, "t": 286.03204, "r": 454.89566, "b": 296.54117, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "ACCOUNTS", "bbox": {"l": 161.9789, "t": 307.9545, "r": 208.89331, "b": 316.71362, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ACCOUNTS", "bbox": {"l": 352.83301, "t": 307.9545, "r": 399.74747, "b": 316.71362, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "CUSTOMERS", "bbox": {"l": 257.8822, "t": 354.96887, "r": 310.7991, "b": 363.728, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Pe", "bbox": {"l": 198.0847, "t": 334.38089, "r": 208.51683, "b": 343.14001, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "rmission", "bbox": {"l": 208.52605, "t": 334.38089, "r": 244.6942, "b": 343.14001, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "CUSTOMERS", "bbox": {"l": 449.93481, "t": 355.27618, "r": 502.85172000000006, "b": 364.03531, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "Pe", "bbox": {"l": 390.1373, "t": 334.68817, "r": 400.56946, "b": 343.4473, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "rmission", "bbox": {"l": 400.57867, "t": 334.68817, "r": 436.74683, "b": 343.4473, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "References BANK_SCHEMA.CUSTOMERS", "bbox": {"l": 158.7216, "t": 431.38046, "r": 311.55884, "b": 439.62183, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "References BANK_SCHEMA.CUSTOMERS", "bbox": {"l": 350.7742, "t": 431.68777, "r": 503.61142000000007, "b": 439.92914, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 131, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.29827880859375, "t": 754.2285766601562, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9285372495651245, "cells": [{"id": 0, "text": "116 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "116"}, {"label": "page_footer", "id": 1, "page_no": 131, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.44544219970703, "t": 754.6015625, "r": 339.8977355957031, "b": 763.9843139648438, "coord_origin": "TOPLEFT"}, "confidence": 0.954731285572052, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 132, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 7. Row and Column Access Control management ", "bbox": {"l": 284.39999, "t": 755.538002, "r": 518.01208, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "117", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "7.3", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 87.32769, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Monitoring and auditing function usage", "bbox": {"l": 91.833237, "t": 71.22069999999997, "r": 396.18387, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "While establishing proper roles for users, separating duties using function usage IDs, and ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 533.2309, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "defining RCAC policies allows you to implement an effective and pervasive data access ", "bbox": {"l": 136.8, "t": 115.48852999999997, "r": 524.80878, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "control scheme. How do you monitor and audit everyone who is involved in the ", "bbox": {"l": 136.8, "t": 127.48834000000011, "r": 485.689, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "implementation of that scheme? The answer is to use IBM i journaling. A special journal that ", "bbox": {"l": 136.8, "t": 139.48816, "r": 546.32922, "b": 148.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "is called QAUDJRN, also known as the ", "bbox": {"l": 136.8, "t": 151.48798, "r": 311.74442, "b": 160.70099000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "audit journal", "bbox": {"l": 311.64001, "t": 150.96497, "r": 369.36407, "b": 161.02270999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": ", can provide a record and audit trail of ", "bbox": {"l": 369.35999, "t": 151.48870999999997, "r": 542.42297, "b": 160.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "many security relevant events that occur on the system, including RCAC-related events.", "bbox": {"l": 136.79996, "t": 163.48852999999997, "r": 523.64832, "b": 172.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "The tasks and operations of security administrators and database engineers who are ", "bbox": {"l": 136.79996, "t": 185.50811999999996, "r": 514.04791, "b": 194.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "collaborating can (and should) be effectively monitored and audited to ensure that the ", "bbox": {"l": 136.79996, "t": 197.50793, "r": 516.71832, "b": 206.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "organization\u2019s data access control and governance policies are in place and enabled. For ", "bbox": {"l": 136.79996, "t": 209.50775, "r": 532.58826, "b": 218.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "example, the Database Engineers can be involved in designing and developing functions and ", "bbox": {"l": 136.79996, "t": 221.50757, "r": 547.29333, "b": 230.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "triggers that must be secured using the SECURE attribute. Otherwise, without properly ", "bbox": {"l": 136.79996, "t": 233.50739, "r": 522.2171, "b": 242.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "securing functions and triggers, the RCAC controls can be bypassed.", "bbox": {"l": 136.79996, "t": 245.5072, "r": 442.06406, "b": 254.72020999999995, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "A new journal entry type of \u201cAX\u201d for journal entry code \u201cT\u201d (audit trail) is now used for RCAC. ", "bbox": {"l": 136.79996, "t": 267.52679, "r": 546.21472, "b": 276.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "More information about the journaling of RCAC operations can be found in the following ", "bbox": {"l": 136.79996, "t": 279.52661, "r": 525.30579, "b": 288.73962, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "documents:", "bbox": {"l": 136.79996, "t": 291.52646, "r": 188.45851, "b": 300.73944, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "GLYPH", "bbox": {"l": 136.79996, "t": 308.65564, "r": 141.77995, "b": 317.43042, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "IBM i Version 7.2 Journal Management Guide", "bbox": {"l": 151.20012, "t": 308.50626, "r": 352.84631, "b": 317.71924, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": ", found at:", "bbox": {"l": 352.67999, "t": 308.50626, "r": 396.89444, "b": 317.71924, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzaki/rzakiprintthis", "bbox": {"l": 151.20013, "t": 325.63544, "r": 545.99457, "b": 334.41022, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": ".htm?lang=en", "bbox": {"l": 151.20013, "t": 337.63525000000004, "r": 211.1394, "b": 346.41003, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "GLYPH", "bbox": {"l": 136.79997, "t": 354.67484, "r": 141.77997, "b": 363.44962, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "IBM i Version 7.2 Security Reference Guide", "bbox": {"l": 151.20013, "t": 354.52545, "r": 343.57654, "b": 363.73842999999994, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": ", found at:", "bbox": {"l": 343.38031, "t": 354.52545, "r": 387.59177, "b": 363.73842999999994, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzarl/rzarlkickoff.h", "bbox": {"l": 151.20012, "t": 371.65463, "r": 545.99451, "b": 380.42941, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "tm?lang=en", "bbox": {"l": 151.20012, "t": 383.65445, "r": 201.11963, "b": 392.42923, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 283.7824401855469, "t": 754.8123779296875, "r": 518.01208, "b": 764.00732421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9508650898933411, "cells": [{"id": 0, "text": "Chapter 7. Row and Column Access Control management ", "bbox": {"l": 284.39999, "t": 755.538002, "r": 518.01208, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 530.0186157226562, "t": 754.230224609375, "r": 547.265380859375, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9163357019424438, "cells": [{"id": 1, "text": "117", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.03428649902344, "t": 70.103271484375, "r": 396.18387, "b": 86.66415405273438, "coord_origin": "TOPLEFT"}, "confidence": 0.9635764956474304, "cells": [{"id": 2, "text": "7.3", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 87.32769, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Monitoring and auditing function usage", "bbox": {"l": 91.833237, "t": 71.22069999999997, "r": 396.18387, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.9032745361328, "t": 102.72404479980469, "r": 546.32922, "b": 172.8615264892578, "coord_origin": "TOPLEFT"}, "confidence": 0.9850849509239197, "cells": [{"id": 4, "text": "While establishing proper roles for users, separating duties using function usage IDs, and ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 533.2309, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "defining RCAC policies allows you to implement an effective and pervasive data access ", "bbox": {"l": 136.8, "t": 115.48852999999997, "r": 524.80878, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "control scheme. How do you monitor and audit everyone who is involved in the ", "bbox": {"l": 136.8, "t": 127.48834000000011, "r": 485.689, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "implementation of that scheme? The answer is to use IBM i journaling. A special journal that ", "bbox": {"l": 136.8, "t": 139.48816, "r": 546.32922, "b": 148.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "is called QAUDJRN, also known as the ", "bbox": {"l": 136.8, "t": 151.48798, "r": 311.74442, "b": 160.70099000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "audit journal", "bbox": {"l": 311.64001, "t": 150.96497, "r": 369.36407, "b": 161.02270999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": ", can provide a record and audit trail of ", "bbox": {"l": 369.35999, "t": 151.48870999999997, "r": 542.42297, "b": 160.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "many security relevant events that occur on the system, including RCAC-related events.", "bbox": {"l": 136.79996, "t": 163.48852999999997, "r": 523.64832, "b": 172.70154000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.86427307128906, "t": 184.6098175048828, "r": 547.29333, "b": 255.25311279296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9875213503837585, "cells": [{"id": 12, "text": "The tasks and operations of security administrators and database engineers who are ", "bbox": {"l": 136.79996, "t": 185.50811999999996, "r": 514.04791, "b": 194.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "collaborating can (and should) be effectively monitored and audited to ensure that the ", "bbox": {"l": 136.79996, "t": 197.50793, "r": 516.71832, "b": 206.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "organization\u2019s data access control and governance policies are in place and enabled. For ", "bbox": {"l": 136.79996, "t": 209.50775, "r": 532.58826, "b": 218.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "example, the Database Engineers can be involved in designing and developing functions and ", "bbox": {"l": 136.79996, "t": 221.50757, "r": 547.29333, "b": 230.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "triggers that must be secured using the SECURE attribute. Otherwise, without properly ", "bbox": {"l": 136.79996, "t": 233.50739, "r": 522.2171, "b": 242.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "securing functions and triggers, the RCAC controls can be bypassed.", "bbox": {"l": 136.79996, "t": 245.5072, "r": 442.06406, "b": 254.72020999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.72532653808594, "t": 266.5744934082031, "r": 546.21472, "b": 300.73944, "coord_origin": "TOPLEFT"}, "confidence": 0.9673486948013306, "cells": [{"id": 18, "text": "A new journal entry type of \u201cAX\u201d for journal entry code \u201cT\u201d (audit trail) is now used for RCAC. ", "bbox": {"l": 136.79996, "t": 267.52679, "r": 546.21472, "b": 276.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "More information about the journaling of RCAC operations can be found in the following ", "bbox": {"l": 136.79996, "t": 279.52661, "r": 525.30579, "b": 288.73962, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "documents:", "bbox": {"l": 136.79996, "t": 291.52646, "r": 188.45851, "b": 300.73944, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.6563262939453, "t": 307.4368591308594, "r": 396.89444, "b": 317.71924, "coord_origin": "TOPLEFT"}, "confidence": 0.910222053527832, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.79996, "t": 308.65564, "r": 141.77995, "b": 317.43042, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "IBM i Version 7.2 Journal Management Guide", "bbox": {"l": 151.20012, "t": 308.50626, "r": 352.84631, "b": 317.71924, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": ", found at:", "bbox": {"l": 352.67999, "t": 308.50626, "r": 396.89444, "b": 317.71924, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 150.67897033691406, "t": 324.8032531738281, "r": 545.99457, "b": 346.948974609375, "coord_origin": "TOPLEFT"}, "confidence": 0.8444021940231323, "cells": [{"id": 24, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzaki/rzakiprintthis", "bbox": {"l": 151.20013, "t": 325.63544, "r": 545.99457, "b": 334.41022, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": ".htm?lang=en", "bbox": {"l": 151.20013, "t": 337.63525000000004, "r": 211.1394, "b": 346.41003, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.60202026367188, "t": 353.90203857421875, "r": 387.59177, "b": 364.74249267578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9257392883300781, "cells": [{"id": 26, "text": "GLYPH", "bbox": {"l": 136.79997, "t": 354.67484, "r": 141.77997, "b": 363.44962, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "IBM i Version 7.2 Security Reference Guide", "bbox": {"l": 151.20013, "t": 354.52545, "r": 343.57654, "b": 363.73842999999994, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": ", found at:", "bbox": {"l": 343.38031, "t": 354.52545, "r": 387.59177, "b": 363.73842999999994, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 150.6260986328125, "t": 370.6153259277344, "r": 546.2595825195312, "b": 392.73980712890625, "coord_origin": "TOPLEFT"}, "confidence": 0.7952681183815002, "cells": [{"id": 29, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzarl/rzarlkickoff.h", "bbox": {"l": 151.20012, "t": 371.65463, "r": 545.99451, "b": 380.42941, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "tm?lang=en", "bbox": {"l": 151.20012, "t": 383.65445, "r": 201.11963, "b": 392.42923, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 132, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 283.7824401855469, "t": 754.8123779296875, "r": 518.01208, "b": 764.00732421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9508650898933411, "cells": [{"id": 0, "text": "Chapter 7. Row and Column Access Control management ", "bbox": {"l": 284.39999, "t": 755.538002, "r": 518.01208, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 7. Row and Column Access Control management"}, {"label": "page_footer", "id": 1, "page_no": 132, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.0186157226562, "t": 754.230224609375, "r": 547.265380859375, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9163357019424438, "cells": [{"id": 1, "text": "117", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "117"}, {"label": "section_header", "id": 2, "page_no": 132, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.03428649902344, "t": 70.103271484375, "r": 396.18387, "b": 86.66415405273438, "coord_origin": "TOPLEFT"}, "confidence": 0.9635764956474304, "cells": [{"id": 2, "text": "7.3", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 87.32769, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Monitoring and auditing function usage", "bbox": {"l": 91.833237, "t": 71.22069999999997, "r": 396.18387, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, "text": "7.3 Monitoring and auditing function usage"}, {"label": "text", "id": 3, "page_no": 132, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.9032745361328, "t": 102.72404479980469, "r": 546.32922, "b": 172.8615264892578, "coord_origin": "TOPLEFT"}, "confidence": 0.9850849509239197, "cells": [{"id": 4, "text": "While establishing proper roles for users, separating duties using function usage IDs, and ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 533.2309, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "defining RCAC policies allows you to implement an effective and pervasive data access ", "bbox": {"l": 136.8, "t": 115.48852999999997, "r": 524.80878, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "control scheme. How do you monitor and audit everyone who is involved in the ", "bbox": {"l": 136.8, "t": 127.48834000000011, "r": 485.689, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "implementation of that scheme? The answer is to use IBM i journaling. A special journal that ", "bbox": {"l": 136.8, "t": 139.48816, "r": 546.32922, "b": 148.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "is called QAUDJRN, also known as the ", "bbox": {"l": 136.8, "t": 151.48798, "r": 311.74442, "b": 160.70099000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "audit journal", "bbox": {"l": 311.64001, "t": 150.96497, "r": 369.36407, "b": 161.02270999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": ", can provide a record and audit trail of ", "bbox": {"l": 369.35999, "t": 151.48870999999997, "r": 542.42297, "b": 160.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "many security relevant events that occur on the system, including RCAC-related events.", "bbox": {"l": 136.79996, "t": 163.48852999999997, "r": 523.64832, "b": 172.70154000000002, "coord_origin": "TOPLEFT"}}]}, "text": "While establishing proper roles for users, separating duties using function usage IDs, and defining RCAC policies allows you to implement an effective and pervasive data access control scheme. How do you monitor and audit everyone who is involved in the implementation of that scheme? The answer is to use IBM i journaling. A special journal that is called QAUDJRN, also known as the audit journal , can provide a record and audit trail of many security relevant events that occur on the system, including RCAC-related events."}, {"label": "text", "id": 4, "page_no": 132, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.86427307128906, "t": 184.6098175048828, "r": 547.29333, "b": 255.25311279296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9875213503837585, "cells": [{"id": 12, "text": "The tasks and operations of security administrators and database engineers who are ", "bbox": {"l": 136.79996, "t": 185.50811999999996, "r": 514.04791, "b": 194.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "collaborating can (and should) be effectively monitored and audited to ensure that the ", "bbox": {"l": 136.79996, "t": 197.50793, "r": 516.71832, "b": 206.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "organization\u2019s data access control and governance policies are in place and enabled. For ", "bbox": {"l": 136.79996, "t": 209.50775, "r": 532.58826, "b": 218.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "example, the Database Engineers can be involved in designing and developing functions and ", "bbox": {"l": 136.79996, "t": 221.50757, "r": 547.29333, "b": 230.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "triggers that must be secured using the SECURE attribute. Otherwise, without properly ", "bbox": {"l": 136.79996, "t": 233.50739, "r": 522.2171, "b": 242.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "securing functions and triggers, the RCAC controls can be bypassed.", "bbox": {"l": 136.79996, "t": 245.5072, "r": 442.06406, "b": 254.72020999999995, "coord_origin": "TOPLEFT"}}]}, "text": "The tasks and operations of security administrators and database engineers who are collaborating can (and should) be effectively monitored and audited to ensure that the organization\u2019s data access control and governance policies are in place and enabled. For example, the Database Engineers can be involved in designing and developing functions and triggers that must be secured using the SECURE attribute. Otherwise, without properly securing functions and triggers, the RCAC controls can be bypassed."}, {"label": "text", "id": 5, "page_no": 132, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.72532653808594, "t": 266.5744934082031, "r": 546.21472, "b": 300.73944, "coord_origin": "TOPLEFT"}, "confidence": 0.9673486948013306, "cells": [{"id": 18, "text": "A new journal entry type of \u201cAX\u201d for journal entry code \u201cT\u201d (audit trail) is now used for RCAC. ", "bbox": {"l": 136.79996, "t": 267.52679, "r": 546.21472, "b": 276.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "More information about the journaling of RCAC operations can be found in the following ", "bbox": {"l": 136.79996, "t": 279.52661, "r": 525.30579, "b": 288.73962, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "documents:", "bbox": {"l": 136.79996, "t": 291.52646, "r": 188.45851, "b": 300.73944, "coord_origin": "TOPLEFT"}}]}, "text": "A new journal entry type of \u201cAX\u201d for journal entry code \u201cT\u201d (audit trail) is now used for RCAC. More information about the journaling of RCAC operations can be found in the following documents:"}, {"label": "list_item", "id": 6, "page_no": 132, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.6563262939453, "t": 307.4368591308594, "r": 396.89444, "b": 317.71924, "coord_origin": "TOPLEFT"}, "confidence": 0.910222053527832, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.79996, "t": 308.65564, "r": 141.77995, "b": 317.43042, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "IBM i Version 7.2 Journal Management Guide", "bbox": {"l": 151.20012, "t": 308.50626, "r": 352.84631, "b": 317.71924, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": ", found at:", "bbox": {"l": 352.67999, "t": 308.50626, "r": 396.89444, "b": 317.71924, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH IBM i Version 7.2 Journal Management Guide , found at:"}, {"label": "list_item", "id": 7, "page_no": 132, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 150.67897033691406, "t": 324.8032531738281, "r": 545.99457, "b": 346.948974609375, "coord_origin": "TOPLEFT"}, "confidence": 0.8444021940231323, "cells": [{"id": 24, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzaki/rzakiprintthis", "bbox": {"l": 151.20013, "t": 325.63544, "r": 545.99457, "b": 334.41022, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": ".htm?lang=en", "bbox": {"l": 151.20013, "t": 337.63525000000004, "r": 211.1394, "b": 346.41003, "coord_origin": "TOPLEFT"}}]}, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzaki/rzakiprintthis .htm?lang=en"}, {"label": "list_item", "id": 8, "page_no": 132, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.60202026367188, "t": 353.90203857421875, "r": 387.59177, "b": 364.74249267578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9257392883300781, "cells": [{"id": 26, "text": "GLYPH", "bbox": {"l": 136.79997, "t": 354.67484, "r": 141.77997, "b": 363.44962, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "IBM i Version 7.2 Security Reference Guide", "bbox": {"l": 151.20013, "t": 354.52545, "r": 343.57654, "b": 363.73842999999994, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": ", found at:", "bbox": {"l": 343.38031, "t": 354.52545, "r": 387.59177, "b": 363.73842999999994, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH IBM i Version 7.2 Security Reference Guide , found at:"}, {"label": "list_item", "id": 9, "page_no": 132, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 150.6260986328125, "t": 370.6153259277344, "r": 546.2595825195312, "b": 392.73980712890625, "coord_origin": "TOPLEFT"}, "confidence": 0.7952681183815002, "cells": [{"id": 29, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzarl/rzarlkickoff.h", "bbox": {"l": 151.20012, "t": 371.65463, "r": 545.99451, "b": 380.42941, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "tm?lang=en", "bbox": {"l": 151.20012, "t": 383.65445, "r": 201.11963, "b": 392.42923, "coord_origin": "TOPLEFT"}}]}, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzarl/rzarlkickoff.h tm?lang=en"}], "body": [{"label": "section_header", "id": 2, "page_no": 132, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.03428649902344, "t": 70.103271484375, "r": 396.18387, "b": 86.66415405273438, "coord_origin": "TOPLEFT"}, "confidence": 0.9635764956474304, "cells": [{"id": 2, "text": "7.3", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 87.32769, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Monitoring and auditing function usage", "bbox": {"l": 91.833237, "t": 71.22069999999997, "r": 396.18387, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, "text": "7.3 Monitoring and auditing function usage"}, {"label": "text", "id": 3, "page_no": 132, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.9032745361328, "t": 102.72404479980469, "r": 546.32922, "b": 172.8615264892578, "coord_origin": "TOPLEFT"}, "confidence": 0.9850849509239197, "cells": [{"id": 4, "text": "While establishing proper roles for users, separating duties using function usage IDs, and ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 533.2309, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "defining RCAC policies allows you to implement an effective and pervasive data access ", "bbox": {"l": 136.8, "t": 115.48852999999997, "r": 524.80878, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "control scheme. How do you monitor and audit everyone who is involved in the ", "bbox": {"l": 136.8, "t": 127.48834000000011, "r": 485.689, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "implementation of that scheme? The answer is to use IBM i journaling. A special journal that ", "bbox": {"l": 136.8, "t": 139.48816, "r": 546.32922, "b": 148.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "is called QAUDJRN, also known as the ", "bbox": {"l": 136.8, "t": 151.48798, "r": 311.74442, "b": 160.70099000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "audit journal", "bbox": {"l": 311.64001, "t": 150.96497, "r": 369.36407, "b": 161.02270999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": ", can provide a record and audit trail of ", "bbox": {"l": 369.35999, "t": 151.48870999999997, "r": 542.42297, "b": 160.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "many security relevant events that occur on the system, including RCAC-related events.", "bbox": {"l": 136.79996, "t": 163.48852999999997, "r": 523.64832, "b": 172.70154000000002, "coord_origin": "TOPLEFT"}}]}, "text": "While establishing proper roles for users, separating duties using function usage IDs, and defining RCAC policies allows you to implement an effective and pervasive data access control scheme. How do you monitor and audit everyone who is involved in the implementation of that scheme? The answer is to use IBM i journaling. A special journal that is called QAUDJRN, also known as the audit journal , can provide a record and audit trail of many security relevant events that occur on the system, including RCAC-related events."}, {"label": "text", "id": 4, "page_no": 132, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.86427307128906, "t": 184.6098175048828, "r": 547.29333, "b": 255.25311279296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9875213503837585, "cells": [{"id": 12, "text": "The tasks and operations of security administrators and database engineers who are ", "bbox": {"l": 136.79996, "t": 185.50811999999996, "r": 514.04791, "b": 194.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "collaborating can (and should) be effectively monitored and audited to ensure that the ", "bbox": {"l": 136.79996, "t": 197.50793, "r": 516.71832, "b": 206.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "organization\u2019s data access control and governance policies are in place and enabled. For ", "bbox": {"l": 136.79996, "t": 209.50775, "r": 532.58826, "b": 218.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "example, the Database Engineers can be involved in designing and developing functions and ", "bbox": {"l": 136.79996, "t": 221.50757, "r": 547.29333, "b": 230.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "triggers that must be secured using the SECURE attribute. Otherwise, without properly ", "bbox": {"l": 136.79996, "t": 233.50739, "r": 522.2171, "b": 242.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "securing functions and triggers, the RCAC controls can be bypassed.", "bbox": {"l": 136.79996, "t": 245.5072, "r": 442.06406, "b": 254.72020999999995, "coord_origin": "TOPLEFT"}}]}, "text": "The tasks and operations of security administrators and database engineers who are collaborating can (and should) be effectively monitored and audited to ensure that the organization\u2019s data access control and governance policies are in place and enabled. For example, the Database Engineers can be involved in designing and developing functions and triggers that must be secured using the SECURE attribute. Otherwise, without properly securing functions and triggers, the RCAC controls can be bypassed."}, {"label": "text", "id": 5, "page_no": 132, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.72532653808594, "t": 266.5744934082031, "r": 546.21472, "b": 300.73944, "coord_origin": "TOPLEFT"}, "confidence": 0.9673486948013306, "cells": [{"id": 18, "text": "A new journal entry type of \u201cAX\u201d for journal entry code \u201cT\u201d (audit trail) is now used for RCAC. ", "bbox": {"l": 136.79996, "t": 267.52679, "r": 546.21472, "b": 276.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "More information about the journaling of RCAC operations can be found in the following ", "bbox": {"l": 136.79996, "t": 279.52661, "r": 525.30579, "b": 288.73962, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "documents:", "bbox": {"l": 136.79996, "t": 291.52646, "r": 188.45851, "b": 300.73944, "coord_origin": "TOPLEFT"}}]}, "text": "A new journal entry type of \u201cAX\u201d for journal entry code \u201cT\u201d (audit trail) is now used for RCAC. More information about the journaling of RCAC operations can be found in the following documents:"}, {"label": "list_item", "id": 6, "page_no": 132, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.6563262939453, "t": 307.4368591308594, "r": 396.89444, "b": 317.71924, "coord_origin": "TOPLEFT"}, "confidence": 0.910222053527832, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.79996, "t": 308.65564, "r": 141.77995, "b": 317.43042, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "IBM i Version 7.2 Journal Management Guide", "bbox": {"l": 151.20012, "t": 308.50626, "r": 352.84631, "b": 317.71924, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": ", found at:", "bbox": {"l": 352.67999, "t": 308.50626, "r": 396.89444, "b": 317.71924, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH IBM i Version 7.2 Journal Management Guide , found at:"}, {"label": "list_item", "id": 7, "page_no": 132, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 150.67897033691406, "t": 324.8032531738281, "r": 545.99457, "b": 346.948974609375, "coord_origin": "TOPLEFT"}, "confidence": 0.8444021940231323, "cells": [{"id": 24, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzaki/rzakiprintthis", "bbox": {"l": 151.20013, "t": 325.63544, "r": 545.99457, "b": 334.41022, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": ".htm?lang=en", "bbox": {"l": 151.20013, "t": 337.63525000000004, "r": 211.1394, "b": 346.41003, "coord_origin": "TOPLEFT"}}]}, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzaki/rzakiprintthis .htm?lang=en"}, {"label": "list_item", "id": 8, "page_no": 132, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.60202026367188, "t": 353.90203857421875, "r": 387.59177, "b": 364.74249267578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9257392883300781, "cells": [{"id": 26, "text": "GLYPH", "bbox": {"l": 136.79997, "t": 354.67484, "r": 141.77997, "b": 363.44962, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "IBM i Version 7.2 Security Reference Guide", "bbox": {"l": 151.20013, "t": 354.52545, "r": 343.57654, "b": 363.73842999999994, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": ", found at:", "bbox": {"l": 343.38031, "t": 354.52545, "r": 387.59177, "b": 363.73842999999994, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH IBM i Version 7.2 Security Reference Guide , found at:"}, {"label": "list_item", "id": 9, "page_no": 132, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 150.6260986328125, "t": 370.6153259277344, "r": 546.2595825195312, "b": 392.73980712890625, "coord_origin": "TOPLEFT"}, "confidence": 0.7952681183815002, "cells": [{"id": 29, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzarl/rzarlkickoff.h", "bbox": {"l": 151.20012, "t": 371.65463, "r": 545.99451, "b": 380.42941, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "tm?lang=en", "bbox": {"l": 151.20012, "t": 383.65445, "r": 201.11963, "b": 392.42923, "coord_origin": "TOPLEFT"}}]}, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzarl/rzarlkickoff.h tm?lang=en"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 132, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 283.7824401855469, "t": 754.8123779296875, "r": 518.01208, "b": 764.00732421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9508650898933411, "cells": [{"id": 0, "text": "Chapter 7. Row and Column Access Control management ", "bbox": {"l": 284.39999, "t": 755.538002, "r": 518.01208, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 7. Row and Column Access Control management"}, {"label": "page_footer", "id": 1, "page_no": 132, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.0186157226562, "t": 754.230224609375, "r": 547.265380859375, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9163357019424438, "cells": [{"id": 1, "text": "117", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "117"}]}}, {"page_no": 133, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "118 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.53031158447266, "t": 754.076416015625, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9196769595146179, "cells": [{"id": 0, "text": "118 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 98.5851821899414, "t": 754.4262084960938, "r": 340.1449890136719, "b": 764.1357421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9428929090499878, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 133, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.53031158447266, "t": 754.076416015625, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9196769595146179, "cells": [{"id": 0, "text": "118 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "118"}, {"label": "page_footer", "id": 1, "page_no": 133, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.5851821899414, "t": 754.4262084960938, "r": 340.1449890136719, "b": 764.1357421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9428929090499878, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}], "body": [], "headers": [{"label": "page_footer", "id": 0, "page_no": 133, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.53031158447266, "t": 754.076416015625, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9196769595146179, "cells": [{"id": 0, "text": "118 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "118"}, {"label": "page_footer", "id": 1, "page_no": 133, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.5851821899414, "t": 754.4262084960938, "r": 340.1449890136719, "b": 764.1357421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9428929090499878, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 134, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "119", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Chapter 8.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Designing and planning for ", "bbox": {"l": 136.8, "t": 254.88635, "r": 479.93341, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "success", "bbox": {"l": 136.8, "t": 285.84671, "r": 239.39761, "b": 309.8782, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Although successfully implementing Row and Column Access Control (RCAC) is based on ", "bbox": {"l": 136.8, "t": 348.70871, "r": 538.46985, "b": 357.92169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "knowledge and skills, designing and planning are fundamental aspects. This chapter ", "bbox": {"l": 136.79999, "t": 360.70853, "r": 511.88861, "b": 369.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "describes the need for a deep understanding of the technology, and good design, proper ", "bbox": {"l": 136.79996, "t": 372.7083400000001, "r": 529.5744, "b": 381.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "planning, and adequate testing.", "bbox": {"l": 136.79996, "t": 384.70816, "r": 276.33261, "b": 393.92114, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "The following topics are covered in this chapter:", "bbox": {"l": 136.79996, "t": 406.7277199999999, "r": 347.41208, "b": 415.9407, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "GLYPH", "bbox": {"l": 136.79996, "t": 423.85689999999994, "r": 141.77995, "b": 432.63168, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Implementing RCAC with good design and proper planning", "bbox": {"l": 151.20012, "t": 423.70752, "r": 411.53955, "b": 432.9205, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "GLYPH", "bbox": {"l": 136.79996, "t": 435.85672000000005, "r": 141.77995, "b": 444.63149999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "DB2 for i Center of Excellence", "bbox": {"l": 151.20012, "t": 435.70733999999993, "r": 284.81952, "b": 444.92032, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "8", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.695404052734375, "t": 754.7307739257812, "r": 257.24335, "b": 764.0828247070312, "coord_origin": "TOPLEFT"}, "confidence": 0.9506158828735352, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 530.0399169921875, "t": 754.2144165039062, "r": 547.2623901367188, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.925187349319458, "cells": [{"id": 1, "text": "119", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 8.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "section_header", "bbox": {"l": 136.7628173828125, "t": 253.29893493652344, "r": 479.93341, "b": 309.8782, "coord_origin": "TOPLEFT"}, "confidence": 0.9399341940879822, "cells": [{"id": 3, "text": "Designing and planning for ", "bbox": {"l": 136.8, "t": 254.88635, "r": 479.93341, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "success", "bbox": {"l": 136.8, "t": 285.84671, "r": 239.39761, "b": 309.8782, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.9272003173828, "t": 347.94287109375, "r": 538.46985, "b": 394.585205078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9859251379966736, "cells": [{"id": 5, "text": "Although successfully implementing Row and Column Access Control (RCAC) is based on ", "bbox": {"l": 136.8, "t": 348.70871, "r": 538.46985, "b": 357.92169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "knowledge and skills, designing and planning are fundamental aspects. This chapter ", "bbox": {"l": 136.79999, "t": 360.70853, "r": 511.88861, "b": 369.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "describes the need for a deep understanding of the technology, and good design, proper ", "bbox": {"l": 136.79996, "t": 372.7083400000001, "r": 529.5744, "b": 381.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "planning, and adequate testing.", "bbox": {"l": 136.79996, "t": 384.70816, "r": 276.33261, "b": 393.92114, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.9006805419922, "t": 406.127197265625, "r": 347.41208, "b": 416.26715087890625, "coord_origin": "TOPLEFT"}, "confidence": 0.945638120174408, "cells": [{"id": 9, "text": "The following topics are covered in this chapter:", "bbox": {"l": 136.79996, "t": 406.7277199999999, "r": 347.41208, "b": 415.9407, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.63284301757812, "t": 422.662109375, "r": 411.53955, "b": 432.9858703613281, "coord_origin": "TOPLEFT"}, "confidence": 0.9510299563407898, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.79996, "t": 423.85689999999994, "r": 141.77995, "b": 432.63168, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Implementing RCAC with good design and proper planning", "bbox": {"l": 151.20012, "t": 423.70752, "r": 411.53955, "b": 432.9205, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.8564910888672, "t": 434.4798278808594, "r": 284.81952, "b": 444.92032, "coord_origin": "TOPLEFT"}, "confidence": 0.9291093945503235, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.79996, "t": 435.85672000000005, "r": 141.77995, "b": 444.63149999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "DB2 for i Center of Excellence", "bbox": {"l": 151.20012, "t": 435.70733999999993, "r": 284.81952, "b": 444.92032, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 500.39999, "t": 93.13899230957031, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.7733241319656372, "cells": [{"id": 14, "text": "8", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "picture", "bbox": {"l": 32.17782974243164, "t": 70.58657836914062, "r": 238.9773712158203, "b": 238.30882263183594, "coord_origin": "TOPLEFT"}, "confidence": 0.722669243812561, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 134, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.695404052734375, "t": 754.7307739257812, "r": 257.24335, "b": 764.0828247070312, "coord_origin": "TOPLEFT"}, "confidence": 0.9506158828735352, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 134, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.0399169921875, "t": 754.2144165039062, "r": 547.2623901367188, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.925187349319458, "cells": [{"id": 1, "text": "119", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "119"}, {"label": "text", "id": 2, "page_no": 134, "cluster": {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 8.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 8."}, {"label": "section_header", "id": 3, "page_no": 134, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 136.7628173828125, "t": 253.29893493652344, "r": 479.93341, "b": 309.8782, "coord_origin": "TOPLEFT"}, "confidence": 0.9399341940879822, "cells": [{"id": 3, "text": "Designing and planning for ", "bbox": {"l": 136.8, "t": 254.88635, "r": 479.93341, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "success", "bbox": {"l": 136.8, "t": 285.84671, "r": 239.39761, "b": 309.8782, "coord_origin": "TOPLEFT"}}]}, "text": "Designing and planning for success"}, {"label": "text", "id": 4, "page_no": 134, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.9272003173828, "t": 347.94287109375, "r": 538.46985, "b": 394.585205078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9859251379966736, "cells": [{"id": 5, "text": "Although successfully implementing Row and Column Access Control (RCAC) is based on ", "bbox": {"l": 136.8, "t": 348.70871, "r": 538.46985, "b": 357.92169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "knowledge and skills, designing and planning are fundamental aspects. This chapter ", "bbox": {"l": 136.79999, "t": 360.70853, "r": 511.88861, "b": 369.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "describes the need for a deep understanding of the technology, and good design, proper ", "bbox": {"l": 136.79996, "t": 372.7083400000001, "r": 529.5744, "b": 381.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "planning, and adequate testing.", "bbox": {"l": 136.79996, "t": 384.70816, "r": 276.33261, "b": 393.92114, "coord_origin": "TOPLEFT"}}]}, "text": "Although successfully implementing Row and Column Access Control (RCAC) is based on knowledge and skills, designing and planning are fundamental aspects. This chapter describes the need for a deep understanding of the technology, and good design, proper planning, and adequate testing."}, {"label": "text", "id": 5, "page_no": 134, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.9006805419922, "t": 406.127197265625, "r": 347.41208, "b": 416.26715087890625, "coord_origin": "TOPLEFT"}, "confidence": 0.945638120174408, "cells": [{"id": 9, "text": "The following topics are covered in this chapter:", "bbox": {"l": 136.79996, "t": 406.7277199999999, "r": 347.41208, "b": 415.9407, "coord_origin": "TOPLEFT"}}]}, "text": "The following topics are covered in this chapter:"}, {"label": "list_item", "id": 6, "page_no": 134, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.63284301757812, "t": 422.662109375, "r": 411.53955, "b": 432.9858703613281, "coord_origin": "TOPLEFT"}, "confidence": 0.9510299563407898, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.79996, "t": 423.85689999999994, "r": 141.77995, "b": 432.63168, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Implementing RCAC with good design and proper planning", "bbox": {"l": 151.20012, "t": 423.70752, "r": 411.53955, "b": 432.9205, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Implementing RCAC with good design and proper planning"}, {"label": "list_item", "id": 7, "page_no": 134, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.8564910888672, "t": 434.4798278808594, "r": 284.81952, "b": 444.92032, "coord_origin": "TOPLEFT"}, "confidence": 0.9291093945503235, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.79996, "t": 435.85672000000005, "r": 141.77995, "b": 444.63149999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "DB2 for i Center of Excellence", "bbox": {"l": 151.20012, "t": 435.70733999999993, "r": 284.81952, "b": 444.92032, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH DB2 for i Center of Excellence"}, {"label": "text", "id": 8, "page_no": 134, "cluster": {"id": 8, "label": "text", "bbox": {"l": 500.39999, "t": 93.13899230957031, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.7733241319656372, "cells": [{"id": 14, "text": "8", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, "text": "8"}, {"label": "picture", "id": 9, "page_no": 134, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 32.17782974243164, "t": 70.58657836914062, "r": 238.9773712158203, "b": 238.30882263183594, "coord_origin": "TOPLEFT"}, "confidence": 0.722669243812561, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 134, "cluster": {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 8.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 8."}, {"label": "section_header", "id": 3, "page_no": 134, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 136.7628173828125, "t": 253.29893493652344, "r": 479.93341, "b": 309.8782, "coord_origin": "TOPLEFT"}, "confidence": 0.9399341940879822, "cells": [{"id": 3, "text": "Designing and planning for ", "bbox": {"l": 136.8, "t": 254.88635, "r": 479.93341, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "success", "bbox": {"l": 136.8, "t": 285.84671, "r": 239.39761, "b": 309.8782, "coord_origin": "TOPLEFT"}}]}, "text": "Designing and planning for success"}, {"label": "text", "id": 4, "page_no": 134, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.9272003173828, "t": 347.94287109375, "r": 538.46985, "b": 394.585205078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9859251379966736, "cells": [{"id": 5, "text": "Although successfully implementing Row and Column Access Control (RCAC) is based on ", "bbox": {"l": 136.8, "t": 348.70871, "r": 538.46985, "b": 357.92169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "knowledge and skills, designing and planning are fundamental aspects. This chapter ", "bbox": {"l": 136.79999, "t": 360.70853, "r": 511.88861, "b": 369.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "describes the need for a deep understanding of the technology, and good design, proper ", "bbox": {"l": 136.79996, "t": 372.7083400000001, "r": 529.5744, "b": 381.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "planning, and adequate testing.", "bbox": {"l": 136.79996, "t": 384.70816, "r": 276.33261, "b": 393.92114, "coord_origin": "TOPLEFT"}}]}, "text": "Although successfully implementing Row and Column Access Control (RCAC) is based on knowledge and skills, designing and planning are fundamental aspects. This chapter describes the need for a deep understanding of the technology, and good design, proper planning, and adequate testing."}, {"label": "text", "id": 5, "page_no": 134, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.9006805419922, "t": 406.127197265625, "r": 347.41208, "b": 416.26715087890625, "coord_origin": "TOPLEFT"}, "confidence": 0.945638120174408, "cells": [{"id": 9, "text": "The following topics are covered in this chapter:", "bbox": {"l": 136.79996, "t": 406.7277199999999, "r": 347.41208, "b": 415.9407, "coord_origin": "TOPLEFT"}}]}, "text": "The following topics are covered in this chapter:"}, {"label": "list_item", "id": 6, "page_no": 134, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.63284301757812, "t": 422.662109375, "r": 411.53955, "b": 432.9858703613281, "coord_origin": "TOPLEFT"}, "confidence": 0.9510299563407898, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.79996, "t": 423.85689999999994, "r": 141.77995, "b": 432.63168, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Implementing RCAC with good design and proper planning", "bbox": {"l": 151.20012, "t": 423.70752, "r": 411.53955, "b": 432.9205, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Implementing RCAC with good design and proper planning"}, {"label": "list_item", "id": 7, "page_no": 134, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.8564910888672, "t": 434.4798278808594, "r": 284.81952, "b": 444.92032, "coord_origin": "TOPLEFT"}, "confidence": 0.9291093945503235, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.79996, "t": 435.85672000000005, "r": 141.77995, "b": 444.63149999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "DB2 for i Center of Excellence", "bbox": {"l": 151.20012, "t": 435.70733999999993, "r": 284.81952, "b": 444.92032, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH DB2 for i Center of Excellence"}, {"label": "text", "id": 8, "page_no": 134, "cluster": {"id": 8, "label": "text", "bbox": {"l": 500.39999, "t": 93.13899230957031, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.7733241319656372, "cells": [{"id": 14, "text": "8", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, "text": "8"}, {"label": "picture", "id": 9, "page_no": 134, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 32.17782974243164, "t": 70.58657836914062, "r": 238.9773712158203, "b": 238.30882263183594, "coord_origin": "TOPLEFT"}, "confidence": 0.722669243812561, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 134, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.695404052734375, "t": 754.7307739257812, "r": 257.24335, "b": 764.0828247070312, "coord_origin": "TOPLEFT"}, "confidence": 0.9506158828735352, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 134, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.0399169921875, "t": 754.2144165039062, "r": 547.2623901367188, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.925187349319458, "cells": [{"id": 1, "text": "119", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "119"}]}}, {"page_no": 135, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "120 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "8.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.191185, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Implementing RCAC with good design and proper planning", "bbox": {"l": 91.669403, "t": 74.34069999999997, "r": 544.55121, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "By using RCAC, the row and column data that is returned to the requester can be controlled ", "bbox": {"l": 136.8, "t": 106.6087, "r": 544.7099, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "and governed by a set of data-centric policies that are defined with SQL and implemented ", "bbox": {"l": 136.80002, "t": 118.60852, "r": 535.37122, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "within DB2 for i.", "bbox": {"l": 136.80002, "t": 130.60834, "r": 206.53296, "b": 139.82135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "RCAC provides fine-grained access control and is complementary to IBM i object-level ", "bbox": {"l": 136.80002, "t": 152.62793, "r": 520.39148, "b": 161.84094000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "security. With the new RCAC feature of DB2 for i, the database engineer, in partnership with ", "bbox": {"l": 136.80002, "t": 164.62775, "r": 544.76562, "b": 173.84076000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "the data owner and security officer, can ensure that users have access to the data based on ", "bbox": {"l": 136.80002, "t": 176.62756000000002, "r": 545.35938, "b": 185.84058000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "their level of authorization and responsibility.", "bbox": {"l": 136.80002, "t": 188.62738000000002, "r": 332.01102, "b": 197.84038999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "This situation also can include separation of duties, such as allowing the application ", "bbox": {"l": 136.80002, "t": 210.64697, "r": 508.75708, "b": 219.85999000000004, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "developers to design and implement the solutions, but restricting them from accessing the ", "bbox": {"l": 136.80002, "t": 222.64679, "r": 535.40131, "b": 231.85979999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "production data based on policy. Just because someone writes and owns the program, it does ", "bbox": {"l": 136.80002, "t": 234.64661, "r": 547.25061, "b": 243.85961999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "not mean that they have access to all the sensitive data that their program can potentially ", "bbox": {"l": 136.80002, "t": 246.64642000000003, "r": 532.39722, "b": 255.85943999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "read.", "bbox": {"l": 136.80002, "t": 258.64624000000003, "r": 159.58949, "b": 267.85925, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "This paper has described the following pervasive power and advantages of RCAC:", "bbox": {"l": 136.80002, "t": 280.60608, "r": 500.55725, "b": 289.81906000000004, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 297.79504, "r": 141.78001, "b": 306.56982, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Access can be controlled through simple or sophisticated logic.", "bbox": {"l": 151.20018, "t": 297.64566, "r": 429.45065, "b": 306.85864, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "GLYPH", "bbox": {"l": 136.80101, "t": 309.79486, "r": 141.78101, "b": 318.56964, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Virtually no application changes are required.", "bbox": {"l": 151.20117, "t": 309.64548, "r": 351.64917, "b": 318.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "GLYPH", "bbox": {"l": 136.80101, "t": 321.79468, "r": 141.78101, "b": 330.56946, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "The implementation of the access policy is part of the DB2 data access layer.", "bbox": {"l": 151.20117, "t": 321.64529000000005, "r": 491.77822999999995, "b": 330.85828000000004, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "GLYPH", "bbox": {"l": 136.80101, "t": 333.79449, "r": 141.78101, "b": 342.56927, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Table data is protected regardless of the interface that is used.", "bbox": {"l": 151.20117, "t": 333.64511, "r": 426.24567, "b": 342.85809, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "GLYPH", "bbox": {"l": 136.80101, "t": 345.79431, "r": 141.78101, "b": 354.56909, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "No user is inherently exempted from the access control policies.", "bbox": {"l": 151.20117, "t": 345.64493, "r": 433.24645999999996, "b": 354.85791, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 357.79413, "r": 141.78099, "b": 366.56891, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Groups of users can share policies and permissions.", "bbox": {"l": 151.20116, "t": 357.64474, "r": 383.57187, "b": 366.85773, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "A deep understanding of the technology, and proper planning, good design, adequate testing, ", "bbox": {"l": 136.80099, "t": 379.60454999999996, "r": 547.24536, "b": 388.81753999999995, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "and monitored deployment are critical for success. This includes the usage of quality ", "bbox": {"l": 136.80099, "t": 391.60437, "r": 512.45325, "b": 400.81735, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "assurance testing, and realistic performance and scalability exercises that serve to ", "bbox": {"l": 136.80099, "t": 403.60419, "r": 503.2384, "b": 412.81717, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "demonstrate that all of your requirements are being met. As part of the verification process, ", "bbox": {"l": 136.802, "t": 415.60400000000004, "r": 541.73065, "b": 424.81699000000003, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "the usage of in-depth proofs of concepts and proofs of technology are recommended, if not ", "bbox": {"l": 136.802, "t": 427.60382, "r": 541.32037, "b": 436.8168, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "essential. When RCAC is activated, the results of queries can change. Anticipating this ", "bbox": {"l": 136.802, "t": 439.60364, "r": 522.3526, "b": 448.81662, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "change and realizing the effects of RCAC before going live are of the utmost importance.", "bbox": {"l": 136.802, "t": 451.60345, "r": 528.17004, "b": 460.81644, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "With the ever-growing value of data, and the vast and varied database technology that is ", "bbox": {"l": 136.802, "t": 473.62302, "r": 529.30786, "b": 482.836, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "available today, it is crucial to have a person or persons on staff who specialize in data-centric ", "bbox": {"l": 136.802, "t": 485.62283, "r": 547.11536, "b": 494.83582, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "design, development, and deployment. This role and responsibility falls on the database ", "bbox": {"l": 136.802, "t": 497.62265, "r": 526.18219, "b": 506.83563, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "engineer. With the availability of DB2 RCAC, the importance of full-time database engineering ", "bbox": {"l": 136.802, "t": 509.62247, "r": 547.1958, "b": 518.83545, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "has grown.", "bbox": {"l": 136.802, "t": 521.62228, "r": 185.39784, "b": 530.83527, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "8.2", "bbox": {"l": 64.800003, "t": 559.3207199999999, "r": 87.389702, "b": 574.08372, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "DB2 for i Center of Excellence", "bbox": {"l": 91.907631, "t": 559.3207199999999, "r": 324.01276, "b": 574.08372, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "To further assist you with understanding and implementing RCAC, the DB2 for i Center of ", "bbox": {"l": 136.8, "t": 591.64862, "r": 532.66528, "b": 600.86162, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Excellence team offers an RCAC education and consulting workshop. In addition to ", "bbox": {"l": 136.8, "t": 603.64842, "r": 506.34979, "b": 612.8614200000001, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "knowledge transfer, a working session allows for a review of your data access control ", "bbox": {"l": 136.8, "t": 615.64822, "r": 514.10956, "b": 624.86122, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "requirements, review of the current environment, solution ideation, and high-level solution ", "bbox": {"l": 136.8, "t": 627.6480300000001, "r": 533.23181, "b": 636.86102, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "design. ", "bbox": {"l": 136.8, "t": 639.64783, "r": 171.82933, "b": 648.86082, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "If you are interested in engaging with the DB2 for i Center of Excellence, contact Mike Cain at ", "bbox": {"l": 136.8, "t": 661.6673900000001, "r": 547.2406, "b": 670.88039, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "mcain@us.ibm.com", "bbox": {"l": 136.8, "t": 673.8166, "r": 216.71902, "b": 682.59136, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": ".", "bbox": {"l": 216.7798, "t": 673.6672, "r": 219.54867999999996, "b": 682.8802000000001, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.42459869384766, "t": 754.2553100585938, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.930542528629303, "cells": [{"id": 0, "text": "120 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 98.57987976074219, "t": 754.646240234375, "r": 339.84716796875, "b": 764.02783203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9501276612281799, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.5673599243164, "t": 73.4725112915039, "r": 544.55121, "b": 90.01676940917969, "coord_origin": "TOPLEFT"}, "confidence": 0.9646757245063782, "cells": [{"id": 2, "text": "8.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.191185, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Implementing RCAC with good design and proper planning", "bbox": {"l": 91.669403, "t": 74.34069999999997, "r": 544.55121, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.9280242919922, "t": 105.88225555419922, "r": 544.7099, "b": 139.82135000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9831311702728271, "cells": [{"id": 4, "text": "By using RCAC, the row and column data that is returned to the requester can be controlled ", "bbox": {"l": 136.8, "t": 106.6087, "r": 544.7099, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "and governed by a set of data-centric policies that are defined with SQL and implemented ", "bbox": {"l": 136.80002, "t": 118.60852, "r": 535.37122, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "within DB2 for i.", "bbox": {"l": 136.80002, "t": 130.60834, "r": 206.53296, "b": 139.82135000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 136.055419921875, "t": 151.780517578125, "r": 545.35938, "b": 198.01513671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9863764643669128, "cells": [{"id": 7, "text": "RCAC provides fine-grained access control and is complementary to IBM i object-level ", "bbox": {"l": 136.80002, "t": 152.62793, "r": 520.39148, "b": 161.84094000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "security. With the new RCAC feature of DB2 for i, the database engineer, in partnership with ", "bbox": {"l": 136.80002, "t": 164.62775, "r": 544.76562, "b": 173.84076000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "the data owner and security officer, can ensure that users have access to the data based on ", "bbox": {"l": 136.80002, "t": 176.62756000000002, "r": 545.35938, "b": 185.84058000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "their level of authorization and responsibility.", "bbox": {"l": 136.80002, "t": 188.62738000000002, "r": 332.01102, "b": 197.84038999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.8184356689453, "t": 209.97195434570312, "r": 547.25061, "b": 267.85925, "coord_origin": "TOPLEFT"}, "confidence": 0.988143265247345, "cells": [{"id": 11, "text": "This situation also can include separation of duties, such as allowing the application ", "bbox": {"l": 136.80002, "t": 210.64697, "r": 508.75708, "b": 219.85999000000004, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "developers to design and implement the solutions, but restricting them from accessing the ", "bbox": {"l": 136.80002, "t": 222.64679, "r": 535.40131, "b": 231.85979999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "production data based on policy. Just because someone writes and owns the program, it does ", "bbox": {"l": 136.80002, "t": 234.64661, "r": 547.25061, "b": 243.85961999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "not mean that they have access to all the sensitive data that their program can potentially ", "bbox": {"l": 136.80002, "t": 246.64642000000003, "r": 532.39722, "b": 255.85943999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "read.", "bbox": {"l": 136.80002, "t": 258.64624000000003, "r": 159.58949, "b": 267.85925, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 135.80397033691406, "t": 280.05120849609375, "r": 500.55725, "b": 290.4837951660156, "coord_origin": "TOPLEFT"}, "confidence": 0.9292261004447937, "cells": [{"id": 16, "text": "This paper has described the following pervasive power and advantages of RCAC:", "bbox": {"l": 136.80002, "t": 280.60608, "r": 500.55725, "b": 289.81906000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.56689453125, "t": 296.6219787597656, "r": 429.45065, "b": 307.35797119140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9498389363288879, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 297.79504, "r": 141.78001, "b": 306.56982, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Access can be controlled through simple or sophisticated logic.", "bbox": {"l": 151.20018, "t": 297.64566, "r": 429.45065, "b": 306.85864, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.60137939453125, "t": 308.7406311035156, "r": 351.64917, "b": 319.1260070800781, "coord_origin": "TOPLEFT"}, "confidence": 0.942351758480072, "cells": [{"id": 19, "text": "GLYPH", "bbox": {"l": 136.80101, "t": 309.79486, "r": 141.78101, "b": 318.56964, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Virtually no application changes are required.", "bbox": {"l": 151.20117, "t": 309.64548, "r": 351.64917, "b": 318.8584599999999, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.644775390625, "t": 320.5731201171875, "r": 491.77822999999995, "b": 331.0446472167969, "coord_origin": "TOPLEFT"}, "confidence": 0.9509508013725281, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.80101, "t": 321.79468, "r": 141.78101, "b": 330.56946, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "The implementation of the access policy is part of the DB2 data access layer.", "bbox": {"l": 151.20117, "t": 321.64529000000005, "r": 491.77822999999995, "b": 330.85828000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 135.75515747070312, "t": 332.263427734375, "r": 426.24567, "b": 343.17962646484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9367370009422302, "cells": [{"id": 23, "text": "GLYPH", "bbox": {"l": 136.80101, "t": 333.79449, "r": 141.78101, "b": 342.56927, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Table data is protected regardless of the interface that is used.", "bbox": {"l": 151.20117, "t": 333.64511, "r": 426.24567, "b": 342.85809, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 135.80447387695312, "t": 344.1607666015625, "r": 433.24645999999996, "b": 355.1954040527344, "coord_origin": "TOPLEFT"}, "confidence": 0.9496915936470032, "cells": [{"id": 25, "text": "GLYPH", "bbox": {"l": 136.80101, "t": 345.79431, "r": 141.78101, "b": 354.56909, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "No user is inherently exempted from the access control policies.", "bbox": {"l": 151.20117, "t": 345.64493, "r": 433.24645999999996, "b": 354.85791, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "list_item", "bbox": {"l": 135.60531616210938, "t": 356.711669921875, "r": 383.57187, "b": 367.0285339355469, "coord_origin": "TOPLEFT"}, "confidence": 0.9547297358512878, "cells": [{"id": 27, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 357.79413, "r": 141.78099, "b": 366.56891, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Groups of users can share policies and permissions.", "bbox": {"l": 151.20116, "t": 357.64474, "r": 383.57187, "b": 366.85773, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 135.60353088378906, "t": 378.73797607421875, "r": 547.24536, "b": 461.1492614746094, "coord_origin": "TOPLEFT"}, "confidence": 0.9838752746582031, "cells": [{"id": 29, "text": "A deep understanding of the technology, and proper planning, good design, adequate testing, ", "bbox": {"l": 136.80099, "t": 379.60454999999996, "r": 547.24536, "b": 388.81753999999995, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "and monitored deployment are critical for success. This includes the usage of quality ", "bbox": {"l": 136.80099, "t": 391.60437, "r": 512.45325, "b": 400.81735, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "assurance testing, and realistic performance and scalability exercises that serve to ", "bbox": {"l": 136.80099, "t": 403.60419, "r": 503.2384, "b": 412.81717, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "demonstrate that all of your requirements are being met. As part of the verification process, ", "bbox": {"l": 136.802, "t": 415.60400000000004, "r": 541.73065, "b": 424.81699000000003, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "the usage of in-depth proofs of concepts and proofs of technology are recommended, if not ", "bbox": {"l": 136.802, "t": 427.60382, "r": 541.32037, "b": 436.8168, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "essential. When RCAC is activated, the results of queries can change. Anticipating this ", "bbox": {"l": 136.802, "t": 439.60364, "r": 522.3526, "b": 448.81662, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "change and realizing the effects of RCAC before going live are of the utmost importance.", "bbox": {"l": 136.802, "t": 451.60345, "r": 528.17004, "b": 460.81644, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "text", "bbox": {"l": 135.79904174804688, "t": 472.91790771484375, "r": 547.1958, "b": 531.1986694335938, "coord_origin": "TOPLEFT"}, "confidence": 0.9882535934448242, "cells": [{"id": 36, "text": "With the ever-growing value of data, and the vast and varied database technology that is ", "bbox": {"l": 136.802, "t": 473.62302, "r": 529.30786, "b": 482.836, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "available today, it is crucial to have a person or persons on staff who specialize in data-centric ", "bbox": {"l": 136.802, "t": 485.62283, "r": 547.11536, "b": 494.83582, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "design, development, and deployment. This role and responsibility falls on the database ", "bbox": {"l": 136.802, "t": 497.62265, "r": 526.18219, "b": 506.83563, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "engineer. With the availability of DB2 RCAC, the importance of full-time database engineering ", "bbox": {"l": 136.802, "t": 509.62247, "r": 547.1958, "b": 518.83545, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "has grown.", "bbox": {"l": 136.802, "t": 521.62228, "r": 185.39784, "b": 530.83527, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "section_header", "bbox": {"l": 64.42830657958984, "t": 558.0595703125, "r": 324.01276, "b": 574.08372, "coord_origin": "TOPLEFT"}, "confidence": 0.9633642435073853, "cells": [{"id": 41, "text": "8.2", "bbox": {"l": 64.800003, "t": 559.3207199999999, "r": 87.389702, "b": 574.08372, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "DB2 for i Center of Excellence", "bbox": {"l": 91.907631, "t": 559.3207199999999, "r": 324.01276, "b": 574.08372, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "text", "bbox": {"l": 135.96109008789062, "t": 590.4443359375, "r": 533.23181, "b": 649.4010009765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9875909090042114, "cells": [{"id": 43, "text": "To further assist you with understanding and implementing RCAC, the DB2 for i Center of ", "bbox": {"l": 136.8, "t": 591.64862, "r": 532.66528, "b": 600.86162, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Excellence team offers an RCAC education and consulting workshop. In addition to ", "bbox": {"l": 136.8, "t": 603.64842, "r": 506.34979, "b": 612.8614200000001, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "knowledge transfer, a working session allows for a review of your data access control ", "bbox": {"l": 136.8, "t": 615.64822, "r": 514.10956, "b": 624.86122, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "requirements, review of the current environment, solution ideation, and high-level solution ", "bbox": {"l": 136.8, "t": 627.6480300000001, "r": 533.23181, "b": 636.86102, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "design. ", "bbox": {"l": 136.8, "t": 639.64783, "r": 171.82933, "b": 648.86082, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "text", "bbox": {"l": 136.06277465820312, "t": 660.7098999023438, "r": 547.2406, "b": 682.8802000000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9721947908401489, "cells": [{"id": 48, "text": "If you are interested in engaging with the DB2 for i Center of Excellence, contact Mike Cain at ", "bbox": {"l": 136.8, "t": 661.6673900000001, "r": 547.2406, "b": 670.88039, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "mcain@us.ibm.com", "bbox": {"l": 136.8, "t": 673.8166, "r": 216.71902, "b": 682.59136, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": ".", "bbox": {"l": 216.7798, "t": 673.6672, "r": 219.54867999999996, "b": 682.8802000000001, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 135, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.42459869384766, "t": 754.2553100585938, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.930542528629303, "cells": [{"id": 0, "text": "120 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "120"}, {"label": "page_footer", "id": 1, "page_no": 135, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.57987976074219, "t": 754.646240234375, "r": 339.84716796875, "b": 764.02783203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9501276612281799, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "section_header", "id": 2, "page_no": 135, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.5673599243164, "t": 73.4725112915039, "r": 544.55121, "b": 90.01676940917969, "coord_origin": "TOPLEFT"}, "confidence": 0.9646757245063782, "cells": [{"id": 2, "text": "8.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.191185, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Implementing RCAC with good design and proper planning", "bbox": {"l": 91.669403, "t": 74.34069999999997, "r": 544.55121, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, "text": "8.1 Implementing RCAC with good design and proper planning"}, {"label": "text", "id": 3, "page_no": 135, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.9280242919922, "t": 105.88225555419922, "r": 544.7099, "b": 139.82135000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9831311702728271, "cells": [{"id": 4, "text": "By using RCAC, the row and column data that is returned to the requester can be controlled ", "bbox": {"l": 136.8, "t": 106.6087, "r": 544.7099, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "and governed by a set of data-centric policies that are defined with SQL and implemented ", "bbox": {"l": 136.80002, "t": 118.60852, "r": 535.37122, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "within DB2 for i.", "bbox": {"l": 136.80002, "t": 130.60834, "r": 206.53296, "b": 139.82135000000005, "coord_origin": "TOPLEFT"}}]}, "text": "By using RCAC, the row and column data that is returned to the requester can be controlled and governed by a set of data-centric policies that are defined with SQL and implemented within DB2 for i."}, {"label": "text", "id": 4, "page_no": 135, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.055419921875, "t": 151.780517578125, "r": 545.35938, "b": 198.01513671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9863764643669128, "cells": [{"id": 7, "text": "RCAC provides fine-grained access control and is complementary to IBM i object-level ", "bbox": {"l": 136.80002, "t": 152.62793, "r": 520.39148, "b": 161.84094000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "security. With the new RCAC feature of DB2 for i, the database engineer, in partnership with ", "bbox": {"l": 136.80002, "t": 164.62775, "r": 544.76562, "b": 173.84076000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "the data owner and security officer, can ensure that users have access to the data based on ", "bbox": {"l": 136.80002, "t": 176.62756000000002, "r": 545.35938, "b": 185.84058000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "their level of authorization and responsibility.", "bbox": {"l": 136.80002, "t": 188.62738000000002, "r": 332.01102, "b": 197.84038999999996, "coord_origin": "TOPLEFT"}}]}, "text": "RCAC provides fine-grained access control and is complementary to IBM i object-level security. With the new RCAC feature of DB2 for i, the database engineer, in partnership with the data owner and security officer, can ensure that users have access to the data based on their level of authorization and responsibility."}, {"label": "text", "id": 5, "page_no": 135, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.8184356689453, "t": 209.97195434570312, "r": 547.25061, "b": 267.85925, "coord_origin": "TOPLEFT"}, "confidence": 0.988143265247345, "cells": [{"id": 11, "text": "This situation also can include separation of duties, such as allowing the application ", "bbox": {"l": 136.80002, "t": 210.64697, "r": 508.75708, "b": 219.85999000000004, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "developers to design and implement the solutions, but restricting them from accessing the ", "bbox": {"l": 136.80002, "t": 222.64679, "r": 535.40131, "b": 231.85979999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "production data based on policy. Just because someone writes and owns the program, it does ", "bbox": {"l": 136.80002, "t": 234.64661, "r": 547.25061, "b": 243.85961999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "not mean that they have access to all the sensitive data that their program can potentially ", "bbox": {"l": 136.80002, "t": 246.64642000000003, "r": 532.39722, "b": 255.85943999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "read.", "bbox": {"l": 136.80002, "t": 258.64624000000003, "r": 159.58949, "b": 267.85925, "coord_origin": "TOPLEFT"}}]}, "text": "This situation also can include separation of duties, such as allowing the application developers to design and implement the solutions, but restricting them from accessing the production data based on policy. Just because someone writes and owns the program, it does not mean that they have access to all the sensitive data that their program can potentially read."}, {"label": "text", "id": 6, "page_no": 135, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.80397033691406, "t": 280.05120849609375, "r": 500.55725, "b": 290.4837951660156, "coord_origin": "TOPLEFT"}, "confidence": 0.9292261004447937, "cells": [{"id": 16, "text": "This paper has described the following pervasive power and advantages of RCAC:", "bbox": {"l": 136.80002, "t": 280.60608, "r": 500.55725, "b": 289.81906000000004, "coord_origin": "TOPLEFT"}}]}, "text": "This paper has described the following pervasive power and advantages of RCAC:"}, {"label": "list_item", "id": 7, "page_no": 135, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.56689453125, "t": 296.6219787597656, "r": 429.45065, "b": 307.35797119140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9498389363288879, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 297.79504, "r": 141.78001, "b": 306.56982, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Access can be controlled through simple or sophisticated logic.", "bbox": {"l": 151.20018, "t": 297.64566, "r": 429.45065, "b": 306.85864, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Access can be controlled through simple or sophisticated logic."}, {"label": "list_item", "id": 8, "page_no": 135, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.60137939453125, "t": 308.7406311035156, "r": 351.64917, "b": 319.1260070800781, "coord_origin": "TOPLEFT"}, "confidence": 0.942351758480072, "cells": [{"id": 19, "text": "GLYPH", "bbox": {"l": 136.80101, "t": 309.79486, "r": 141.78101, "b": 318.56964, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Virtually no application changes are required.", "bbox": {"l": 151.20117, "t": 309.64548, "r": 351.64917, "b": 318.8584599999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Virtually no application changes are required."}, {"label": "list_item", "id": 9, "page_no": 135, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.644775390625, "t": 320.5731201171875, "r": 491.77822999999995, "b": 331.0446472167969, "coord_origin": "TOPLEFT"}, "confidence": 0.9509508013725281, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.80101, "t": 321.79468, "r": 141.78101, "b": 330.56946, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "The implementation of the access policy is part of the DB2 data access layer.", "bbox": {"l": 151.20117, "t": 321.64529000000005, "r": 491.77822999999995, "b": 330.85828000000004, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The implementation of the access policy is part of the DB2 data access layer."}, {"label": "list_item", "id": 10, "page_no": 135, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.75515747070312, "t": 332.263427734375, "r": 426.24567, "b": 343.17962646484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9367370009422302, "cells": [{"id": 23, "text": "GLYPH", "bbox": {"l": 136.80101, "t": 333.79449, "r": 141.78101, "b": 342.56927, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Table data is protected regardless of the interface that is used.", "bbox": {"l": 151.20117, "t": 333.64511, "r": 426.24567, "b": 342.85809, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Table data is protected regardless of the interface that is used."}, {"label": "list_item", "id": 11, "page_no": 135, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.80447387695312, "t": 344.1607666015625, "r": 433.24645999999996, "b": 355.1954040527344, "coord_origin": "TOPLEFT"}, "confidence": 0.9496915936470032, "cells": [{"id": 25, "text": "GLYPH", "bbox": {"l": 136.80101, "t": 345.79431, "r": 141.78101, "b": 354.56909, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "No user is inherently exempted from the access control policies.", "bbox": {"l": 151.20117, "t": 345.64493, "r": 433.24645999999996, "b": 354.85791, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH No user is inherently exempted from the access control policies."}, {"label": "list_item", "id": 12, "page_no": 135, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 135.60531616210938, "t": 356.711669921875, "r": 383.57187, "b": 367.0285339355469, "coord_origin": "TOPLEFT"}, "confidence": 0.9547297358512878, "cells": [{"id": 27, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 357.79413, "r": 141.78099, "b": 366.56891, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Groups of users can share policies and permissions.", "bbox": {"l": 151.20116, "t": 357.64474, "r": 383.57187, "b": 366.85773, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Groups of users can share policies and permissions."}, {"label": "text", "id": 13, "page_no": 135, "cluster": {"id": 13, "label": "text", "bbox": {"l": 135.60353088378906, "t": 378.73797607421875, "r": 547.24536, "b": 461.1492614746094, "coord_origin": "TOPLEFT"}, "confidence": 0.9838752746582031, "cells": [{"id": 29, "text": "A deep understanding of the technology, and proper planning, good design, adequate testing, ", "bbox": {"l": 136.80099, "t": 379.60454999999996, "r": 547.24536, "b": 388.81753999999995, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "and monitored deployment are critical for success. This includes the usage of quality ", "bbox": {"l": 136.80099, "t": 391.60437, "r": 512.45325, "b": 400.81735, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "assurance testing, and realistic performance and scalability exercises that serve to ", "bbox": {"l": 136.80099, "t": 403.60419, "r": 503.2384, "b": 412.81717, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "demonstrate that all of your requirements are being met. As part of the verification process, ", "bbox": {"l": 136.802, "t": 415.60400000000004, "r": 541.73065, "b": 424.81699000000003, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "the usage of in-depth proofs of concepts and proofs of technology are recommended, if not ", "bbox": {"l": 136.802, "t": 427.60382, "r": 541.32037, "b": 436.8168, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "essential. When RCAC is activated, the results of queries can change. Anticipating this ", "bbox": {"l": 136.802, "t": 439.60364, "r": 522.3526, "b": 448.81662, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "change and realizing the effects of RCAC before going live are of the utmost importance.", "bbox": {"l": 136.802, "t": 451.60345, "r": 528.17004, "b": 460.81644, "coord_origin": "TOPLEFT"}}]}, "text": "A deep understanding of the technology, and proper planning, good design, adequate testing, and monitored deployment are critical for success. This includes the usage of quality assurance testing, and realistic performance and scalability exercises that serve to demonstrate that all of your requirements are being met. As part of the verification process, the usage of in-depth proofs of concepts and proofs of technology are recommended, if not essential. When RCAC is activated, the results of queries can change. Anticipating this change and realizing the effects of RCAC before going live are of the utmost importance."}, {"label": "text", "id": 14, "page_no": 135, "cluster": {"id": 14, "label": "text", "bbox": {"l": 135.79904174804688, "t": 472.91790771484375, "r": 547.1958, "b": 531.1986694335938, "coord_origin": "TOPLEFT"}, "confidence": 0.9882535934448242, "cells": [{"id": 36, "text": "With the ever-growing value of data, and the vast and varied database technology that is ", "bbox": {"l": 136.802, "t": 473.62302, "r": 529.30786, "b": 482.836, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "available today, it is crucial to have a person or persons on staff who specialize in data-centric ", "bbox": {"l": 136.802, "t": 485.62283, "r": 547.11536, "b": 494.83582, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "design, development, and deployment. This role and responsibility falls on the database ", "bbox": {"l": 136.802, "t": 497.62265, "r": 526.18219, "b": 506.83563, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "engineer. With the availability of DB2 RCAC, the importance of full-time database engineering ", "bbox": {"l": 136.802, "t": 509.62247, "r": 547.1958, "b": 518.83545, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "has grown.", "bbox": {"l": 136.802, "t": 521.62228, "r": 185.39784, "b": 530.83527, "coord_origin": "TOPLEFT"}}]}, "text": "With the ever-growing value of data, and the vast and varied database technology that is available today, it is crucial to have a person or persons on staff who specialize in data-centric design, development, and deployment. This role and responsibility falls on the database engineer. With the availability of DB2 RCAC, the importance of full-time database engineering has grown."}, {"label": "section_header", "id": 15, "page_no": 135, "cluster": {"id": 15, "label": "section_header", "bbox": {"l": 64.42830657958984, "t": 558.0595703125, "r": 324.01276, "b": 574.08372, "coord_origin": "TOPLEFT"}, "confidence": 0.9633642435073853, "cells": [{"id": 41, "text": "8.2", "bbox": {"l": 64.800003, "t": 559.3207199999999, "r": 87.389702, "b": 574.08372, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "DB2 for i Center of Excellence", "bbox": {"l": 91.907631, "t": 559.3207199999999, "r": 324.01276, "b": 574.08372, "coord_origin": "TOPLEFT"}}]}, "text": "8.2 DB2 for i Center of Excellence"}, {"label": "text", "id": 16, "page_no": 135, "cluster": {"id": 16, "label": "text", "bbox": {"l": 135.96109008789062, "t": 590.4443359375, "r": 533.23181, "b": 649.4010009765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9875909090042114, "cells": [{"id": 43, "text": "To further assist you with understanding and implementing RCAC, the DB2 for i Center of ", "bbox": {"l": 136.8, "t": 591.64862, "r": 532.66528, "b": 600.86162, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Excellence team offers an RCAC education and consulting workshop. In addition to ", "bbox": {"l": 136.8, "t": 603.64842, "r": 506.34979, "b": 612.8614200000001, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "knowledge transfer, a working session allows for a review of your data access control ", "bbox": {"l": 136.8, "t": 615.64822, "r": 514.10956, "b": 624.86122, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "requirements, review of the current environment, solution ideation, and high-level solution ", "bbox": {"l": 136.8, "t": 627.6480300000001, "r": 533.23181, "b": 636.86102, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "design. ", "bbox": {"l": 136.8, "t": 639.64783, "r": 171.82933, "b": 648.86082, "coord_origin": "TOPLEFT"}}]}, "text": "To further assist you with understanding and implementing RCAC, the DB2 for i Center of Excellence team offers an RCAC education and consulting workshop. In addition to knowledge transfer, a working session allows for a review of your data access control requirements, review of the current environment, solution ideation, and high-level solution design."}, {"label": "text", "id": 17, "page_no": 135, "cluster": {"id": 17, "label": "text", "bbox": {"l": 136.06277465820312, "t": 660.7098999023438, "r": 547.2406, "b": 682.8802000000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9721947908401489, "cells": [{"id": 48, "text": "If you are interested in engaging with the DB2 for i Center of Excellence, contact Mike Cain at ", "bbox": {"l": 136.8, "t": 661.6673900000001, "r": 547.2406, "b": 670.88039, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "mcain@us.ibm.com", "bbox": {"l": 136.8, "t": 673.8166, "r": 216.71902, "b": 682.59136, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": ".", "bbox": {"l": 216.7798, "t": 673.6672, "r": 219.54867999999996, "b": 682.8802000000001, "coord_origin": "TOPLEFT"}}]}, "text": "If you are interested in engaging with the DB2 for i Center of Excellence, contact Mike Cain at mcain@us.ibm.com ."}], "body": [{"label": "section_header", "id": 2, "page_no": 135, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.5673599243164, "t": 73.4725112915039, "r": 544.55121, "b": 90.01676940917969, "coord_origin": "TOPLEFT"}, "confidence": 0.9646757245063782, "cells": [{"id": 2, "text": "8.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.191185, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Implementing RCAC with good design and proper planning", "bbox": {"l": 91.669403, "t": 74.34069999999997, "r": 544.55121, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, "text": "8.1 Implementing RCAC with good design and proper planning"}, {"label": "text", "id": 3, "page_no": 135, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.9280242919922, "t": 105.88225555419922, "r": 544.7099, "b": 139.82135000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9831311702728271, "cells": [{"id": 4, "text": "By using RCAC, the row and column data that is returned to the requester can be controlled ", "bbox": {"l": 136.8, "t": 106.6087, "r": 544.7099, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "and governed by a set of data-centric policies that are defined with SQL and implemented ", "bbox": {"l": 136.80002, "t": 118.60852, "r": 535.37122, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "within DB2 for i.", "bbox": {"l": 136.80002, "t": 130.60834, "r": 206.53296, "b": 139.82135000000005, "coord_origin": "TOPLEFT"}}]}, "text": "By using RCAC, the row and column data that is returned to the requester can be controlled and governed by a set of data-centric policies that are defined with SQL and implemented within DB2 for i."}, {"label": "text", "id": 4, "page_no": 135, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.055419921875, "t": 151.780517578125, "r": 545.35938, "b": 198.01513671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9863764643669128, "cells": [{"id": 7, "text": "RCAC provides fine-grained access control and is complementary to IBM i object-level ", "bbox": {"l": 136.80002, "t": 152.62793, "r": 520.39148, "b": 161.84094000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "security. With the new RCAC feature of DB2 for i, the database engineer, in partnership with ", "bbox": {"l": 136.80002, "t": 164.62775, "r": 544.76562, "b": 173.84076000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "the data owner and security officer, can ensure that users have access to the data based on ", "bbox": {"l": 136.80002, "t": 176.62756000000002, "r": 545.35938, "b": 185.84058000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "their level of authorization and responsibility.", "bbox": {"l": 136.80002, "t": 188.62738000000002, "r": 332.01102, "b": 197.84038999999996, "coord_origin": "TOPLEFT"}}]}, "text": "RCAC provides fine-grained access control and is complementary to IBM i object-level security. With the new RCAC feature of DB2 for i, the database engineer, in partnership with the data owner and security officer, can ensure that users have access to the data based on their level of authorization and responsibility."}, {"label": "text", "id": 5, "page_no": 135, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.8184356689453, "t": 209.97195434570312, "r": 547.25061, "b": 267.85925, "coord_origin": "TOPLEFT"}, "confidence": 0.988143265247345, "cells": [{"id": 11, "text": "This situation also can include separation of duties, such as allowing the application ", "bbox": {"l": 136.80002, "t": 210.64697, "r": 508.75708, "b": 219.85999000000004, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "developers to design and implement the solutions, but restricting them from accessing the ", "bbox": {"l": 136.80002, "t": 222.64679, "r": 535.40131, "b": 231.85979999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "production data based on policy. Just because someone writes and owns the program, it does ", "bbox": {"l": 136.80002, "t": 234.64661, "r": 547.25061, "b": 243.85961999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "not mean that they have access to all the sensitive data that their program can potentially ", "bbox": {"l": 136.80002, "t": 246.64642000000003, "r": 532.39722, "b": 255.85943999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "read.", "bbox": {"l": 136.80002, "t": 258.64624000000003, "r": 159.58949, "b": 267.85925, "coord_origin": "TOPLEFT"}}]}, "text": "This situation also can include separation of duties, such as allowing the application developers to design and implement the solutions, but restricting them from accessing the production data based on policy. Just because someone writes and owns the program, it does not mean that they have access to all the sensitive data that their program can potentially read."}, {"label": "text", "id": 6, "page_no": 135, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.80397033691406, "t": 280.05120849609375, "r": 500.55725, "b": 290.4837951660156, "coord_origin": "TOPLEFT"}, "confidence": 0.9292261004447937, "cells": [{"id": 16, "text": "This paper has described the following pervasive power and advantages of RCAC:", "bbox": {"l": 136.80002, "t": 280.60608, "r": 500.55725, "b": 289.81906000000004, "coord_origin": "TOPLEFT"}}]}, "text": "This paper has described the following pervasive power and advantages of RCAC:"}, {"label": "list_item", "id": 7, "page_no": 135, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.56689453125, "t": 296.6219787597656, "r": 429.45065, "b": 307.35797119140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9498389363288879, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 297.79504, "r": 141.78001, "b": 306.56982, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Access can be controlled through simple or sophisticated logic.", "bbox": {"l": 151.20018, "t": 297.64566, "r": 429.45065, "b": 306.85864, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Access can be controlled through simple or sophisticated logic."}, {"label": "list_item", "id": 8, "page_no": 135, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.60137939453125, "t": 308.7406311035156, "r": 351.64917, "b": 319.1260070800781, "coord_origin": "TOPLEFT"}, "confidence": 0.942351758480072, "cells": [{"id": 19, "text": "GLYPH", "bbox": {"l": 136.80101, "t": 309.79486, "r": 141.78101, "b": 318.56964, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Virtually no application changes are required.", "bbox": {"l": 151.20117, "t": 309.64548, "r": 351.64917, "b": 318.8584599999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Virtually no application changes are required."}, {"label": "list_item", "id": 9, "page_no": 135, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.644775390625, "t": 320.5731201171875, "r": 491.77822999999995, "b": 331.0446472167969, "coord_origin": "TOPLEFT"}, "confidence": 0.9509508013725281, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.80101, "t": 321.79468, "r": 141.78101, "b": 330.56946, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "The implementation of the access policy is part of the DB2 data access layer.", "bbox": {"l": 151.20117, "t": 321.64529000000005, "r": 491.77822999999995, "b": 330.85828000000004, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The implementation of the access policy is part of the DB2 data access layer."}, {"label": "list_item", "id": 10, "page_no": 135, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.75515747070312, "t": 332.263427734375, "r": 426.24567, "b": 343.17962646484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9367370009422302, "cells": [{"id": 23, "text": "GLYPH", "bbox": {"l": 136.80101, "t": 333.79449, "r": 141.78101, "b": 342.56927, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Table data is protected regardless of the interface that is used.", "bbox": {"l": 151.20117, "t": 333.64511, "r": 426.24567, "b": 342.85809, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Table data is protected regardless of the interface that is used."}, {"label": "list_item", "id": 11, "page_no": 135, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.80447387695312, "t": 344.1607666015625, "r": 433.24645999999996, "b": 355.1954040527344, "coord_origin": "TOPLEFT"}, "confidence": 0.9496915936470032, "cells": [{"id": 25, "text": "GLYPH", "bbox": {"l": 136.80101, "t": 345.79431, "r": 141.78101, "b": 354.56909, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "No user is inherently exempted from the access control policies.", "bbox": {"l": 151.20117, "t": 345.64493, "r": 433.24645999999996, "b": 354.85791, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH No user is inherently exempted from the access control policies."}, {"label": "list_item", "id": 12, "page_no": 135, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 135.60531616210938, "t": 356.711669921875, "r": 383.57187, "b": 367.0285339355469, "coord_origin": "TOPLEFT"}, "confidence": 0.9547297358512878, "cells": [{"id": 27, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 357.79413, "r": 141.78099, "b": 366.56891, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Groups of users can share policies and permissions.", "bbox": {"l": 151.20116, "t": 357.64474, "r": 383.57187, "b": 366.85773, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Groups of users can share policies and permissions."}, {"label": "text", "id": 13, "page_no": 135, "cluster": {"id": 13, "label": "text", "bbox": {"l": 135.60353088378906, "t": 378.73797607421875, "r": 547.24536, "b": 461.1492614746094, "coord_origin": "TOPLEFT"}, "confidence": 0.9838752746582031, "cells": [{"id": 29, "text": "A deep understanding of the technology, and proper planning, good design, adequate testing, ", "bbox": {"l": 136.80099, "t": 379.60454999999996, "r": 547.24536, "b": 388.81753999999995, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "and monitored deployment are critical for success. This includes the usage of quality ", "bbox": {"l": 136.80099, "t": 391.60437, "r": 512.45325, "b": 400.81735, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "assurance testing, and realistic performance and scalability exercises that serve to ", "bbox": {"l": 136.80099, "t": 403.60419, "r": 503.2384, "b": 412.81717, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "demonstrate that all of your requirements are being met. As part of the verification process, ", "bbox": {"l": 136.802, "t": 415.60400000000004, "r": 541.73065, "b": 424.81699000000003, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "the usage of in-depth proofs of concepts and proofs of technology are recommended, if not ", "bbox": {"l": 136.802, "t": 427.60382, "r": 541.32037, "b": 436.8168, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "essential. When RCAC is activated, the results of queries can change. Anticipating this ", "bbox": {"l": 136.802, "t": 439.60364, "r": 522.3526, "b": 448.81662, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "change and realizing the effects of RCAC before going live are of the utmost importance.", "bbox": {"l": 136.802, "t": 451.60345, "r": 528.17004, "b": 460.81644, "coord_origin": "TOPLEFT"}}]}, "text": "A deep understanding of the technology, and proper planning, good design, adequate testing, and monitored deployment are critical for success. This includes the usage of quality assurance testing, and realistic performance and scalability exercises that serve to demonstrate that all of your requirements are being met. As part of the verification process, the usage of in-depth proofs of concepts and proofs of technology are recommended, if not essential. When RCAC is activated, the results of queries can change. Anticipating this change and realizing the effects of RCAC before going live are of the utmost importance."}, {"label": "text", "id": 14, "page_no": 135, "cluster": {"id": 14, "label": "text", "bbox": {"l": 135.79904174804688, "t": 472.91790771484375, "r": 547.1958, "b": 531.1986694335938, "coord_origin": "TOPLEFT"}, "confidence": 0.9882535934448242, "cells": [{"id": 36, "text": "With the ever-growing value of data, and the vast and varied database technology that is ", "bbox": {"l": 136.802, "t": 473.62302, "r": 529.30786, "b": 482.836, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "available today, it is crucial to have a person or persons on staff who specialize in data-centric ", "bbox": {"l": 136.802, "t": 485.62283, "r": 547.11536, "b": 494.83582, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "design, development, and deployment. This role and responsibility falls on the database ", "bbox": {"l": 136.802, "t": 497.62265, "r": 526.18219, "b": 506.83563, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "engineer. With the availability of DB2 RCAC, the importance of full-time database engineering ", "bbox": {"l": 136.802, "t": 509.62247, "r": 547.1958, "b": 518.83545, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "has grown.", "bbox": {"l": 136.802, "t": 521.62228, "r": 185.39784, "b": 530.83527, "coord_origin": "TOPLEFT"}}]}, "text": "With the ever-growing value of data, and the vast and varied database technology that is available today, it is crucial to have a person or persons on staff who specialize in data-centric design, development, and deployment. This role and responsibility falls on the database engineer. With the availability of DB2 RCAC, the importance of full-time database engineering has grown."}, {"label": "section_header", "id": 15, "page_no": 135, "cluster": {"id": 15, "label": "section_header", "bbox": {"l": 64.42830657958984, "t": 558.0595703125, "r": 324.01276, "b": 574.08372, "coord_origin": "TOPLEFT"}, "confidence": 0.9633642435073853, "cells": [{"id": 41, "text": "8.2", "bbox": {"l": 64.800003, "t": 559.3207199999999, "r": 87.389702, "b": 574.08372, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "DB2 for i Center of Excellence", "bbox": {"l": 91.907631, "t": 559.3207199999999, "r": 324.01276, "b": 574.08372, "coord_origin": "TOPLEFT"}}]}, "text": "8.2 DB2 for i Center of Excellence"}, {"label": "text", "id": 16, "page_no": 135, "cluster": {"id": 16, "label": "text", "bbox": {"l": 135.96109008789062, "t": 590.4443359375, "r": 533.23181, "b": 649.4010009765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9875909090042114, "cells": [{"id": 43, "text": "To further assist you with understanding and implementing RCAC, the DB2 for i Center of ", "bbox": {"l": 136.8, "t": 591.64862, "r": 532.66528, "b": 600.86162, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Excellence team offers an RCAC education and consulting workshop. In addition to ", "bbox": {"l": 136.8, "t": 603.64842, "r": 506.34979, "b": 612.8614200000001, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "knowledge transfer, a working session allows for a review of your data access control ", "bbox": {"l": 136.8, "t": 615.64822, "r": 514.10956, "b": 624.86122, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "requirements, review of the current environment, solution ideation, and high-level solution ", "bbox": {"l": 136.8, "t": 627.6480300000001, "r": 533.23181, "b": 636.86102, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "design. ", "bbox": {"l": 136.8, "t": 639.64783, "r": 171.82933, "b": 648.86082, "coord_origin": "TOPLEFT"}}]}, "text": "To further assist you with understanding and implementing RCAC, the DB2 for i Center of Excellence team offers an RCAC education and consulting workshop. In addition to knowledge transfer, a working session allows for a review of your data access control requirements, review of the current environment, solution ideation, and high-level solution design."}, {"label": "text", "id": 17, "page_no": 135, "cluster": {"id": 17, "label": "text", "bbox": {"l": 136.06277465820312, "t": 660.7098999023438, "r": 547.2406, "b": 682.8802000000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9721947908401489, "cells": [{"id": 48, "text": "If you are interested in engaging with the DB2 for i Center of Excellence, contact Mike Cain at ", "bbox": {"l": 136.8, "t": 661.6673900000001, "r": 547.2406, "b": 670.88039, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "mcain@us.ibm.com", "bbox": {"l": 136.8, "t": 673.8166, "r": 216.71902, "b": 682.59136, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": ".", "bbox": {"l": 216.7798, "t": 673.6672, "r": 219.54867999999996, "b": 682.8802000000001, "coord_origin": "TOPLEFT"}}]}, "text": "If you are interested in engaging with the DB2 for i Center of Excellence, contact Mike Cain at mcain@us.ibm.com ."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 135, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.42459869384766, "t": 754.2553100585938, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.930542528629303, "cells": [{"id": 0, "text": "120 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "120"}, {"label": "page_footer", "id": 1, "page_no": 135, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.57987976074219, "t": 754.646240234375, "r": 339.84716796875, "b": 764.02783203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9501276612281799, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 136, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "121", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Appendix A.", "bbox": {"l": 74.400002, "t": 268.54272000000003, "r": 115.15289, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Database definitions for the ", "bbox": {"l": 136.8, "t": 254.88635, "r": 485.79715000000004, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "RCAC banking example", "bbox": {"l": 136.8, "t": 285.84671, "r": 428.4878499999999, "b": 309.8782, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "This appendix provides the database definitions or DDLs to re-create the Row and Column ", "bbox": {"l": 136.8, "t": 348.70871, "r": 539.84735, "b": 357.92169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Access Control (RCAC) scenario that is described in Chapter 4, \u201cImplementing Row and ", "bbox": {"l": 136.8, "t": 360.70853, "r": 528.8894, "b": 369.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Column Access Control: Banking example\u201d on page 37. The script that is shown in ", "bbox": {"l": 136.8, "t": 372.7083400000001, "r": 503.20746, "b": 381.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Example A-1 is the DDL script that is used to implement this example.", "bbox": {"l": 136.8, "t": 384.70816, "r": 445.51532, "b": 393.92114, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Example A-1 DDL script to implement the RCAC banking example", "bbox": {"l": 64.800003, "t": 406.75800000000004, "r": 332.5787, "b": 415.08301, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "/* Database Definitions for RCAC Bank Scenario */", "bbox": {"l": 64.800003, "t": 423.87332, "r": 284.99847, "b": 431.80231000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "/* Schema */", "bbox": {"l": 64.800003, "t": 434.85333, "r": 118.7397, "b": 442.78232, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CREATE SCHEMA BANK_SCHEMA FOR SCHEMA BANKSCHEMA ; ", "bbox": {"l": 64.800003, "t": 445.89365, "r": 289.49847, "b": 453.82263000000006, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "/* Global Variable */", "bbox": {"l": 64.800003, "t": 467.85364, "r": 159.1794, "b": 475.78262, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "CREATE VARIABLE BANK_SCHEMA.CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800003, "t": 478.89395, "r": 271.49847, "b": 486.82294, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "VARCHAR( 30) ; ", "bbox": {"l": 79.200005, "t": 489.87396, "r": 146.57941, "b": 497.80295, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "LABEL ON VARIABLE BANK_SCHEMA.CUSTOMER_LOGIN_ID IS 'Customer''s log in value passed by web application' ; ", "bbox": {"l": 64.800003, "t": 511.89426, "r": 541.13666, "b": 519.8232399999999, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "/* Tables */", "bbox": {"l": 64.800003, "t": 533.85425, "r": 118.7397, "b": 541.78326, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "CREATE TABLE BANK_SCHEMA.CUSTOMERS ( ", "bbox": {"l": 64.800003, "t": 555.8745700000001, "r": 231.05878999999996, "b": 563.80357, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "CUSTOMER_ID FOR COLUMN CUSTO00001 INTEGER GENERATED ALWAYS AS IDENTITY ( ", "bbox": {"l": 79.200005, "t": 566.85457, "r": 407.21759, "b": 574.78357, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "START WITH 1 INCREMENT BY 1 ", "bbox": {"l": 79.200005, "t": 577.89487, "r": 205.0191, "b": 585.8238699999999, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "NO MINVALUE NO MAXVALUE ", "bbox": {"l": 79.200005, "t": 588.87486, "r": 187.0191, "b": 596.80386, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "NO CYCLE NO ORDER ", "bbox": {"l": 79.200005, "t": 599.85486, "r": 160.07941, "b": 607.78386, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "CACHE 20 ), ", "bbox": {"l": 79.200005, "t": 610.89516, "r": 133.13971, "b": 618.82416, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "CUSTOMER_NAME FOR COLUMN CUSTO00002 VARCHAR(30) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 621.87515, "r": 384.77789, "b": 629.8041499999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "CUSTOMER_ADDRESS FOR COLUMN CUSTO00003 VARCHAR(30) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 632.85515, "r": 398.27789, "b": 640.78415, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "CUSTOMER_CITY FOR COLUMN CUSTO00004 VARCHAR(30) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 643.89545, "r": 384.77789, "b": 651.8244500000001, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "CUSTOMER_STATE FOR COLUMN CUSTO00005 CHAR(2) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 654.87544, "r": 371.27789, "b": 662.80444, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "CUSTOMER_PHONE FOR COLUMN CUSTO00006 CHAR(10) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 665.85544, "r": 375.77789, "b": 673.78444, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "CUSTOMER_EMAIL FOR COLUMN CUSTO00007 VARCHAR(30) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 676.89574, "r": 389.27789, "b": 684.82474, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CUSTOMER_TAX_ID FOR COLUMN CUSTO00008 CHAR(11) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 687.87574, "r": 380.27789, "b": 695.804741, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER FOR COLUMN CUSTO00012 CHAR(13) CCSID 37 DEFAULT NULL , ", "bbox": {"l": 79.200005, "t": 698.916039, "r": 470.15729, "b": 706.845039, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CUSTOMER_LOGIN_ID FOR COLUMN CUSTO00009 VARCHAR(30) CCSID 37 DEFAULT NULL , ", "bbox": {"l": 79.200005, "t": 709.896042, "r": 420.71759, "b": 717.825043, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "CUSTOMER_SECURITY_QUESTION FOR COLUMN CUSTO00010 VARCHAR(100) CCSID 37 DEFAULT NULL , ", "bbox": {"l": 79.200005, "t": 720.876045, "r": 465.65729, "b": 728.80505, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "A", "bbox": {"l": 497.03989, "t": 93.16870000000006, "r": 525.89099, "b": 130.13171, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.67854309082031, "t": 754.6529541015625, "r": 257.24335, "b": 764.1146850585938, "coord_origin": "TOPLEFT"}, "confidence": 0.9381327033042908, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 530.0882568359375, "t": 754.2919311523438, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9215134382247925, "cells": [{"id": 1, "text": "121", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 74.400002, "t": 268.54272000000003, "r": 115.15289, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Appendix A.", "bbox": {"l": 74.400002, "t": 268.54272000000003, "r": 115.15289, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "section_header", "bbox": {"l": 136.8, "t": 253.2744140625, "r": 485.79715000000004, "b": 310.868896484375, "coord_origin": "TOPLEFT"}, "confidence": 0.931329607963562, "cells": [{"id": 3, "text": "Database definitions for the ", "bbox": {"l": 136.8, "t": 254.88635, "r": 485.79715000000004, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "RCAC banking example", "bbox": {"l": 136.8, "t": 285.84671, "r": 428.4878499999999, "b": 309.8782, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.599853515625, "t": 347.8815612792969, "r": 539.84735, "b": 394.2618408203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9735324382781982, "cells": [{"id": 5, "text": "This appendix provides the database definitions or DDLs to re-create the Row and Column ", "bbox": {"l": 136.8, "t": 348.70871, "r": 539.84735, "b": 357.92169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Access Control (RCAC) scenario that is described in Chapter 4, \u201cImplementing Row and ", "bbox": {"l": 136.8, "t": 360.70853, "r": 528.8894, "b": 369.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Column Access Control: Banking example\u201d on page 37. The script that is shown in ", "bbox": {"l": 136.8, "t": 372.7083400000001, "r": 503.20746, "b": 381.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Example A-1 is the DDL script that is used to implement this example.", "bbox": {"l": 136.8, "t": 384.70816, "r": 445.51532, "b": 393.92114, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 64.52754211425781, "t": 405.9345397949219, "r": 332.9858703613281, "b": 415.5800476074219, "coord_origin": "TOPLEFT"}, "confidence": 0.7840588688850403, "cells": [{"id": 9, "text": "Example A-1 DDL script to implement the RCAC banking example", "bbox": {"l": 64.800003, "t": 406.75800000000004, "r": 332.5787, "b": 415.08301, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "code", "bbox": {"l": 62.520992279052734, "t": 420.8819580078125, "r": 541.13666, "b": 730.4379272460938, "coord_origin": "TOPLEFT"}, "confidence": 0.8016359806060791, "cells": [{"id": 10, "text": "/* Database Definitions for RCAC Bank Scenario */", "bbox": {"l": 64.800003, "t": 423.87332, "r": 284.99847, "b": 431.80231000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "/* Schema */", "bbox": {"l": 64.800003, "t": 434.85333, "r": 118.7397, "b": 442.78232, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CREATE SCHEMA BANK_SCHEMA FOR SCHEMA BANKSCHEMA ; ", "bbox": {"l": 64.800003, "t": 445.89365, "r": 289.49847, "b": 453.82263000000006, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "/* Global Variable */", "bbox": {"l": 64.800003, "t": 467.85364, "r": 159.1794, "b": 475.78262, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "CREATE VARIABLE BANK_SCHEMA.CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800003, "t": 478.89395, "r": 271.49847, "b": 486.82294, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "VARCHAR( 30) ; ", "bbox": {"l": 79.200005, "t": 489.87396, "r": 146.57941, "b": 497.80295, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "LABEL ON VARIABLE BANK_SCHEMA.CUSTOMER_LOGIN_ID IS 'Customer''s log in value passed by web application' ; ", "bbox": {"l": 64.800003, "t": 511.89426, "r": 541.13666, "b": 519.8232399999999, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "/* Tables */", "bbox": {"l": 64.800003, "t": 533.85425, "r": 118.7397, "b": 541.78326, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "CREATE TABLE BANK_SCHEMA.CUSTOMERS ( ", "bbox": {"l": 64.800003, "t": 555.8745700000001, "r": 231.05878999999996, "b": 563.80357, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "CUSTOMER_ID FOR COLUMN CUSTO00001 INTEGER GENERATED ALWAYS AS IDENTITY ( ", "bbox": {"l": 79.200005, "t": 566.85457, "r": 407.21759, "b": 574.78357, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "START WITH 1 INCREMENT BY 1 ", "bbox": {"l": 79.200005, "t": 577.89487, "r": 205.0191, "b": 585.8238699999999, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "NO MINVALUE NO MAXVALUE ", "bbox": {"l": 79.200005, "t": 588.87486, "r": 187.0191, "b": 596.80386, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "NO CYCLE NO ORDER ", "bbox": {"l": 79.200005, "t": 599.85486, "r": 160.07941, "b": 607.78386, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "CACHE 20 ), ", "bbox": {"l": 79.200005, "t": 610.89516, "r": 133.13971, "b": 618.82416, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "CUSTOMER_NAME FOR COLUMN CUSTO00002 VARCHAR(30) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 621.87515, "r": 384.77789, "b": 629.8041499999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "CUSTOMER_ADDRESS FOR COLUMN CUSTO00003 VARCHAR(30) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 632.85515, "r": 398.27789, "b": 640.78415, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "CUSTOMER_CITY FOR COLUMN CUSTO00004 VARCHAR(30) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 643.89545, "r": 384.77789, "b": 651.8244500000001, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "CUSTOMER_STATE FOR COLUMN CUSTO00005 CHAR(2) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 654.87544, "r": 371.27789, "b": 662.80444, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "CUSTOMER_PHONE FOR COLUMN CUSTO00006 CHAR(10) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 665.85544, "r": 375.77789, "b": 673.78444, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "CUSTOMER_EMAIL FOR COLUMN CUSTO00007 VARCHAR(30) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 676.89574, "r": 389.27789, "b": 684.82474, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CUSTOMER_TAX_ID FOR COLUMN CUSTO00008 CHAR(11) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 687.87574, "r": 380.27789, "b": 695.804741, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER FOR COLUMN CUSTO00012 CHAR(13) CCSID 37 DEFAULT NULL , ", "bbox": {"l": 79.200005, "t": 698.916039, "r": 470.15729, "b": 706.845039, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CUSTOMER_LOGIN_ID FOR COLUMN CUSTO00009 VARCHAR(30) CCSID 37 DEFAULT NULL , ", "bbox": {"l": 79.200005, "t": 709.896042, "r": 420.71759, "b": 717.825043, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "CUSTOMER_SECURITY_QUESTION FOR COLUMN CUSTO00010 VARCHAR(100) CCSID 37 DEFAULT NULL , ", "bbox": {"l": 79.200005, "t": 720.876045, "r": 465.65729, "b": 728.80505, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 496.9212951660156, "t": 92.56521606445312, "r": 526.1300659179688, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.6984182596206665, "cells": [{"id": 34, "text": "A", "bbox": {"l": 497.03989, "t": 93.16870000000006, "r": 525.89099, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 31.834123611450195, "t": 70.96026611328125, "r": 238.2196044921875, "b": 238.40943908691406, "coord_origin": "TOPLEFT"}, "confidence": 0.6705455780029297, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 136, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.67854309082031, "t": 754.6529541015625, "r": 257.24335, "b": 764.1146850585938, "coord_origin": "TOPLEFT"}, "confidence": 0.9381327033042908, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 136, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.0882568359375, "t": 754.2919311523438, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9215134382247925, "cells": [{"id": 1, "text": "121", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "121"}, {"label": "text", "id": 2, "page_no": 136, "cluster": {"id": 2, "label": "text", "bbox": {"l": 74.400002, "t": 268.54272000000003, "r": 115.15289, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Appendix A.", "bbox": {"l": 74.400002, "t": 268.54272000000003, "r": 115.15289, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Appendix A."}, {"label": "section_header", "id": 3, "page_no": 136, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 136.8, "t": 253.2744140625, "r": 485.79715000000004, "b": 310.868896484375, "coord_origin": "TOPLEFT"}, "confidence": 0.931329607963562, "cells": [{"id": 3, "text": "Database definitions for the ", "bbox": {"l": 136.8, "t": 254.88635, "r": 485.79715000000004, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "RCAC banking example", "bbox": {"l": 136.8, "t": 285.84671, "r": 428.4878499999999, "b": 309.8782, "coord_origin": "TOPLEFT"}}]}, "text": "Database definitions for the RCAC banking example"}, {"label": "text", "id": 4, "page_no": 136, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.599853515625, "t": 347.8815612792969, "r": 539.84735, "b": 394.2618408203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9735324382781982, "cells": [{"id": 5, "text": "This appendix provides the database definitions or DDLs to re-create the Row and Column ", "bbox": {"l": 136.8, "t": 348.70871, "r": 539.84735, "b": 357.92169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Access Control (RCAC) scenario that is described in Chapter 4, \u201cImplementing Row and ", "bbox": {"l": 136.8, "t": 360.70853, "r": 528.8894, "b": 369.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Column Access Control: Banking example\u201d on page 37. The script that is shown in ", "bbox": {"l": 136.8, "t": 372.7083400000001, "r": 503.20746, "b": 381.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Example A-1 is the DDL script that is used to implement this example.", "bbox": {"l": 136.8, "t": 384.70816, "r": 445.51532, "b": 393.92114, "coord_origin": "TOPLEFT"}}]}, "text": "This appendix provides the database definitions or DDLs to re-create the Row and Column Access Control (RCAC) scenario that is described in Chapter 4, \u201cImplementing Row and Column Access Control: Banking example\u201d on page 37. The script that is shown in Example A-1 is the DDL script that is used to implement this example."}, {"label": "caption", "id": 5, "page_no": 136, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.52754211425781, "t": 405.9345397949219, "r": 332.9858703613281, "b": 415.5800476074219, "coord_origin": "TOPLEFT"}, "confidence": 0.7840588688850403, "cells": [{"id": 9, "text": "Example A-1 DDL script to implement the RCAC banking example", "bbox": {"l": 64.800003, "t": 406.75800000000004, "r": 332.5787, "b": 415.08301, "coord_origin": "TOPLEFT"}}]}, "text": "Example A-1 DDL script to implement the RCAC banking example"}, {"label": "code", "id": 6, "page_no": 136, "cluster": {"id": 6, "label": "code", "bbox": {"l": 62.520992279052734, "t": 420.8819580078125, "r": 541.13666, "b": 730.4379272460938, "coord_origin": "TOPLEFT"}, "confidence": 0.8016359806060791, "cells": [{"id": 10, "text": "/* Database Definitions for RCAC Bank Scenario */", "bbox": {"l": 64.800003, "t": 423.87332, "r": 284.99847, "b": 431.80231000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "/* Schema */", "bbox": {"l": 64.800003, "t": 434.85333, "r": 118.7397, "b": 442.78232, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CREATE SCHEMA BANK_SCHEMA FOR SCHEMA BANKSCHEMA ; ", "bbox": {"l": 64.800003, "t": 445.89365, "r": 289.49847, "b": 453.82263000000006, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "/* Global Variable */", "bbox": {"l": 64.800003, "t": 467.85364, "r": 159.1794, "b": 475.78262, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "CREATE VARIABLE BANK_SCHEMA.CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800003, "t": 478.89395, "r": 271.49847, "b": 486.82294, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "VARCHAR( 30) ; ", "bbox": {"l": 79.200005, "t": 489.87396, "r": 146.57941, "b": 497.80295, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "LABEL ON VARIABLE BANK_SCHEMA.CUSTOMER_LOGIN_ID IS 'Customer''s log in value passed by web application' ; ", "bbox": {"l": 64.800003, "t": 511.89426, "r": 541.13666, "b": 519.8232399999999, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "/* Tables */", "bbox": {"l": 64.800003, "t": 533.85425, "r": 118.7397, "b": 541.78326, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "CREATE TABLE BANK_SCHEMA.CUSTOMERS ( ", "bbox": {"l": 64.800003, "t": 555.8745700000001, "r": 231.05878999999996, "b": 563.80357, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "CUSTOMER_ID FOR COLUMN CUSTO00001 INTEGER GENERATED ALWAYS AS IDENTITY ( ", "bbox": {"l": 79.200005, "t": 566.85457, "r": 407.21759, "b": 574.78357, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "START WITH 1 INCREMENT BY 1 ", "bbox": {"l": 79.200005, "t": 577.89487, "r": 205.0191, "b": 585.8238699999999, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "NO MINVALUE NO MAXVALUE ", "bbox": {"l": 79.200005, "t": 588.87486, "r": 187.0191, "b": 596.80386, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "NO CYCLE NO ORDER ", "bbox": {"l": 79.200005, "t": 599.85486, "r": 160.07941, "b": 607.78386, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "CACHE 20 ), ", "bbox": {"l": 79.200005, "t": 610.89516, "r": 133.13971, "b": 618.82416, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "CUSTOMER_NAME FOR COLUMN CUSTO00002 VARCHAR(30) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 621.87515, "r": 384.77789, "b": 629.8041499999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "CUSTOMER_ADDRESS FOR COLUMN CUSTO00003 VARCHAR(30) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 632.85515, "r": 398.27789, "b": 640.78415, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "CUSTOMER_CITY FOR COLUMN CUSTO00004 VARCHAR(30) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 643.89545, "r": 384.77789, "b": 651.8244500000001, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "CUSTOMER_STATE FOR COLUMN CUSTO00005 CHAR(2) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 654.87544, "r": 371.27789, "b": 662.80444, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "CUSTOMER_PHONE FOR COLUMN CUSTO00006 CHAR(10) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 665.85544, "r": 375.77789, "b": 673.78444, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "CUSTOMER_EMAIL FOR COLUMN CUSTO00007 VARCHAR(30) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 676.89574, "r": 389.27789, "b": 684.82474, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CUSTOMER_TAX_ID FOR COLUMN CUSTO00008 CHAR(11) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 687.87574, "r": 380.27789, "b": 695.804741, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER FOR COLUMN CUSTO00012 CHAR(13) CCSID 37 DEFAULT NULL , ", "bbox": {"l": 79.200005, "t": 698.916039, "r": 470.15729, "b": 706.845039, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CUSTOMER_LOGIN_ID FOR COLUMN CUSTO00009 VARCHAR(30) CCSID 37 DEFAULT NULL , ", "bbox": {"l": 79.200005, "t": 709.896042, "r": 420.71759, "b": 717.825043, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "CUSTOMER_SECURITY_QUESTION FOR COLUMN CUSTO00010 VARCHAR(100) CCSID 37 DEFAULT NULL , ", "bbox": {"l": 79.200005, "t": 720.876045, "r": 465.65729, "b": 728.80505, "coord_origin": "TOPLEFT"}}]}, "text": "/* Database Definitions for RCAC Bank Scenario */ /* Schema */ CREATE SCHEMA BANK_SCHEMA FOR SCHEMA BANKSCHEMA ; /* Global Variable */ CREATE VARIABLE BANK_SCHEMA.CUSTOMER_LOGIN_ID VARCHAR( 30) ; LABEL ON VARIABLE BANK_SCHEMA.CUSTOMER_LOGIN_ID IS 'Customer''s log in value passed by web application' ; /* Tables */ CREATE TABLE BANK_SCHEMA.CUSTOMERS ( CUSTOMER_ID FOR COLUMN CUSTO00001 INTEGER GENERATED ALWAYS AS IDENTITY ( START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE NO CYCLE NO ORDER CACHE 20 ), CUSTOMER_NAME FOR COLUMN CUSTO00002 VARCHAR(30) CCSID 37 NOT NULL , CUSTOMER_ADDRESS FOR COLUMN CUSTO00003 VARCHAR(30) CCSID 37 NOT NULL , CUSTOMER_CITY FOR COLUMN CUSTO00004 VARCHAR(30) CCSID 37 NOT NULL , CUSTOMER_STATE FOR COLUMN CUSTO00005 CHAR(2) CCSID 37 NOT NULL , CUSTOMER_PHONE FOR COLUMN CUSTO00006 CHAR(10) CCSID 37 NOT NULL , CUSTOMER_EMAIL FOR COLUMN CUSTO00007 VARCHAR(30) CCSID 37 NOT NULL , CUSTOMER_TAX_ID FOR COLUMN CUSTO00008 CHAR(11) CCSID 37 NOT NULL , CUSTOMER_DRIVERS_LICENSE_NUMBER FOR COLUMN CUSTO00012 CHAR(13) CCSID 37 DEFAULT NULL , CUSTOMER_LOGIN_ID FOR COLUMN CUSTO00009 VARCHAR(30) CCSID 37 DEFAULT NULL , CUSTOMER_SECURITY_QUESTION FOR COLUMN CUSTO00010 VARCHAR(100) CCSID 37 DEFAULT NULL ,"}, {"label": "text", "id": 7, "page_no": 136, "cluster": {"id": 7, "label": "text", "bbox": {"l": 496.9212951660156, "t": 92.56521606445312, "r": 526.1300659179688, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.6984182596206665, "cells": [{"id": 34, "text": "A", "bbox": {"l": 497.03989, "t": 93.16870000000006, "r": 525.89099, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, "text": "A"}, {"label": "picture", "id": 8, "page_no": 136, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 31.834123611450195, "t": 70.96026611328125, "r": 238.2196044921875, "b": 238.40943908691406, "coord_origin": "TOPLEFT"}, "confidence": 0.6705455780029297, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 136, "cluster": {"id": 2, "label": "text", "bbox": {"l": 74.400002, "t": 268.54272000000003, "r": 115.15289, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Appendix A.", "bbox": {"l": 74.400002, "t": 268.54272000000003, "r": 115.15289, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Appendix A."}, {"label": "section_header", "id": 3, "page_no": 136, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 136.8, "t": 253.2744140625, "r": 485.79715000000004, "b": 310.868896484375, "coord_origin": "TOPLEFT"}, "confidence": 0.931329607963562, "cells": [{"id": 3, "text": "Database definitions for the ", "bbox": {"l": 136.8, "t": 254.88635, "r": 485.79715000000004, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "RCAC banking example", "bbox": {"l": 136.8, "t": 285.84671, "r": 428.4878499999999, "b": 309.8782, "coord_origin": "TOPLEFT"}}]}, "text": "Database definitions for the RCAC banking example"}, {"label": "text", "id": 4, "page_no": 136, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.599853515625, "t": 347.8815612792969, "r": 539.84735, "b": 394.2618408203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9735324382781982, "cells": [{"id": 5, "text": "This appendix provides the database definitions or DDLs to re-create the Row and Column ", "bbox": {"l": 136.8, "t": 348.70871, "r": 539.84735, "b": 357.92169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Access Control (RCAC) scenario that is described in Chapter 4, \u201cImplementing Row and ", "bbox": {"l": 136.8, "t": 360.70853, "r": 528.8894, "b": 369.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Column Access Control: Banking example\u201d on page 37. The script that is shown in ", "bbox": {"l": 136.8, "t": 372.7083400000001, "r": 503.20746, "b": 381.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Example A-1 is the DDL script that is used to implement this example.", "bbox": {"l": 136.8, "t": 384.70816, "r": 445.51532, "b": 393.92114, "coord_origin": "TOPLEFT"}}]}, "text": "This appendix provides the database definitions or DDLs to re-create the Row and Column Access Control (RCAC) scenario that is described in Chapter 4, \u201cImplementing Row and Column Access Control: Banking example\u201d on page 37. The script that is shown in Example A-1 is the DDL script that is used to implement this example."}, {"label": "caption", "id": 5, "page_no": 136, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.52754211425781, "t": 405.9345397949219, "r": 332.9858703613281, "b": 415.5800476074219, "coord_origin": "TOPLEFT"}, "confidence": 0.7840588688850403, "cells": [{"id": 9, "text": "Example A-1 DDL script to implement the RCAC banking example", "bbox": {"l": 64.800003, "t": 406.75800000000004, "r": 332.5787, "b": 415.08301, "coord_origin": "TOPLEFT"}}]}, "text": "Example A-1 DDL script to implement the RCAC banking example"}, {"label": "code", "id": 6, "page_no": 136, "cluster": {"id": 6, "label": "code", "bbox": {"l": 62.520992279052734, "t": 420.8819580078125, "r": 541.13666, "b": 730.4379272460938, "coord_origin": "TOPLEFT"}, "confidence": 0.8016359806060791, "cells": [{"id": 10, "text": "/* Database Definitions for RCAC Bank Scenario */", "bbox": {"l": 64.800003, "t": 423.87332, "r": 284.99847, "b": 431.80231000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "/* Schema */", "bbox": {"l": 64.800003, "t": 434.85333, "r": 118.7397, "b": 442.78232, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CREATE SCHEMA BANK_SCHEMA FOR SCHEMA BANKSCHEMA ; ", "bbox": {"l": 64.800003, "t": 445.89365, "r": 289.49847, "b": 453.82263000000006, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "/* Global Variable */", "bbox": {"l": 64.800003, "t": 467.85364, "r": 159.1794, "b": 475.78262, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "CREATE VARIABLE BANK_SCHEMA.CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800003, "t": 478.89395, "r": 271.49847, "b": 486.82294, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "VARCHAR( 30) ; ", "bbox": {"l": 79.200005, "t": 489.87396, "r": 146.57941, "b": 497.80295, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "LABEL ON VARIABLE BANK_SCHEMA.CUSTOMER_LOGIN_ID IS 'Customer''s log in value passed by web application' ; ", "bbox": {"l": 64.800003, "t": 511.89426, "r": 541.13666, "b": 519.8232399999999, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "/* Tables */", "bbox": {"l": 64.800003, "t": 533.85425, "r": 118.7397, "b": 541.78326, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "CREATE TABLE BANK_SCHEMA.CUSTOMERS ( ", "bbox": {"l": 64.800003, "t": 555.8745700000001, "r": 231.05878999999996, "b": 563.80357, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "CUSTOMER_ID FOR COLUMN CUSTO00001 INTEGER GENERATED ALWAYS AS IDENTITY ( ", "bbox": {"l": 79.200005, "t": 566.85457, "r": 407.21759, "b": 574.78357, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "START WITH 1 INCREMENT BY 1 ", "bbox": {"l": 79.200005, "t": 577.89487, "r": 205.0191, "b": 585.8238699999999, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "NO MINVALUE NO MAXVALUE ", "bbox": {"l": 79.200005, "t": 588.87486, "r": 187.0191, "b": 596.80386, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "NO CYCLE NO ORDER ", "bbox": {"l": 79.200005, "t": 599.85486, "r": 160.07941, "b": 607.78386, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "CACHE 20 ), ", "bbox": {"l": 79.200005, "t": 610.89516, "r": 133.13971, "b": 618.82416, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "CUSTOMER_NAME FOR COLUMN CUSTO00002 VARCHAR(30) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 621.87515, "r": 384.77789, "b": 629.8041499999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "CUSTOMER_ADDRESS FOR COLUMN CUSTO00003 VARCHAR(30) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 632.85515, "r": 398.27789, "b": 640.78415, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "CUSTOMER_CITY FOR COLUMN CUSTO00004 VARCHAR(30) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 643.89545, "r": 384.77789, "b": 651.8244500000001, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "CUSTOMER_STATE FOR COLUMN CUSTO00005 CHAR(2) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 654.87544, "r": 371.27789, "b": 662.80444, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "CUSTOMER_PHONE FOR COLUMN CUSTO00006 CHAR(10) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 665.85544, "r": 375.77789, "b": 673.78444, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "CUSTOMER_EMAIL FOR COLUMN CUSTO00007 VARCHAR(30) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 676.89574, "r": 389.27789, "b": 684.82474, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CUSTOMER_TAX_ID FOR COLUMN CUSTO00008 CHAR(11) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 687.87574, "r": 380.27789, "b": 695.804741, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER FOR COLUMN CUSTO00012 CHAR(13) CCSID 37 DEFAULT NULL , ", "bbox": {"l": 79.200005, "t": 698.916039, "r": 470.15729, "b": 706.845039, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CUSTOMER_LOGIN_ID FOR COLUMN CUSTO00009 VARCHAR(30) CCSID 37 DEFAULT NULL , ", "bbox": {"l": 79.200005, "t": 709.896042, "r": 420.71759, "b": 717.825043, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "CUSTOMER_SECURITY_QUESTION FOR COLUMN CUSTO00010 VARCHAR(100) CCSID 37 DEFAULT NULL , ", "bbox": {"l": 79.200005, "t": 720.876045, "r": 465.65729, "b": 728.80505, "coord_origin": "TOPLEFT"}}]}, "text": "/* Database Definitions for RCAC Bank Scenario */ /* Schema */ CREATE SCHEMA BANK_SCHEMA FOR SCHEMA BANKSCHEMA ; /* Global Variable */ CREATE VARIABLE BANK_SCHEMA.CUSTOMER_LOGIN_ID VARCHAR( 30) ; LABEL ON VARIABLE BANK_SCHEMA.CUSTOMER_LOGIN_ID IS 'Customer''s log in value passed by web application' ; /* Tables */ CREATE TABLE BANK_SCHEMA.CUSTOMERS ( CUSTOMER_ID FOR COLUMN CUSTO00001 INTEGER GENERATED ALWAYS AS IDENTITY ( START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE NO CYCLE NO ORDER CACHE 20 ), CUSTOMER_NAME FOR COLUMN CUSTO00002 VARCHAR(30) CCSID 37 NOT NULL , CUSTOMER_ADDRESS FOR COLUMN CUSTO00003 VARCHAR(30) CCSID 37 NOT NULL , CUSTOMER_CITY FOR COLUMN CUSTO00004 VARCHAR(30) CCSID 37 NOT NULL , CUSTOMER_STATE FOR COLUMN CUSTO00005 CHAR(2) CCSID 37 NOT NULL , CUSTOMER_PHONE FOR COLUMN CUSTO00006 CHAR(10) CCSID 37 NOT NULL , CUSTOMER_EMAIL FOR COLUMN CUSTO00007 VARCHAR(30) CCSID 37 NOT NULL , CUSTOMER_TAX_ID FOR COLUMN CUSTO00008 CHAR(11) CCSID 37 NOT NULL , CUSTOMER_DRIVERS_LICENSE_NUMBER FOR COLUMN CUSTO00012 CHAR(13) CCSID 37 DEFAULT NULL , CUSTOMER_LOGIN_ID FOR COLUMN CUSTO00009 VARCHAR(30) CCSID 37 DEFAULT NULL , CUSTOMER_SECURITY_QUESTION FOR COLUMN CUSTO00010 VARCHAR(100) CCSID 37 DEFAULT NULL ,"}, {"label": "text", "id": 7, "page_no": 136, "cluster": {"id": 7, "label": "text", "bbox": {"l": 496.9212951660156, "t": 92.56521606445312, "r": 526.1300659179688, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.6984182596206665, "cells": [{"id": 34, "text": "A", "bbox": {"l": 497.03989, "t": 93.16870000000006, "r": 525.89099, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, "text": "A"}, {"label": "picture", "id": 8, "page_no": 136, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 31.834123611450195, "t": 70.96026611328125, "r": 238.2196044921875, "b": 238.40943908691406, "coord_origin": "TOPLEFT"}, "confidence": 0.6705455780029297, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 136, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.67854309082031, "t": 754.6529541015625, "r": 257.24335, "b": 764.1146850585938, "coord_origin": "TOPLEFT"}, "confidence": 0.9381327033042908, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 136, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.0882568359375, "t": 754.2919311523438, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9215134382247925, "cells": [{"id": 1, "text": "121", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "121"}]}}, {"page_no": 137, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "122 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER FOR COLUMN CUSTO00011 VARCHAR(100) CCSID 37 DEFAULT NULL , ", "bbox": {"l": 79.200302, "t": 71.67296999999996, "r": 497.09729000000004, "b": 79.60199, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "INSERT_TIMESTAMP FOR COLUMN INSER00001 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , ", "bbox": {"l": 79.200302, "t": 82.65295000000015, "r": 546.53699, "b": 90.58196999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "UPDATE_TIMESTAMP FOR COLUMN UPDAT00001 TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE ", "bbox": {"l": 79.200302, "t": 93.63292999999999, "r": 479.15759, "b": 101.56195000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , ", "bbox": {"l": 75.257675, "t": 104.67322000000001, "r": 352.37817, "b": 112.60222999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "CONSTRAINT BANK_SCHEMA.CUSTOMER_ID_PK PRIMARY KEY( CUSTOMER_ID ) ) ; ", "bbox": {"l": 79.200302, "t": 115.65319999999997, "r": 389.2782, "b": 123.58220999999992, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 137.67352000000005, "r": 217.55908, "b": 145.60253999999998, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_LOGIN_ID_UK ", "bbox": {"l": 79.200302, "t": 148.6535, "r": 294.8988, "b": 156.58252000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "UNIQUE( CUSTOMER_LOGIN_ID ) ; ", "bbox": {"l": 79.200302, "t": 159.69379000000004, "r": 214.01939, "b": 167.62279999999998, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 181.65381000000002, "r": 217.55908, "b": 189.58281999999997, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_DRIVERS_LICENSE_CHECK ", "bbox": {"l": 79.200302, "t": 192.69408999999996, "r": 339.8385, "b": 200.62311, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CHECK( CUSTOMER_DRIVERS_LICENSE_NUMBER <> '*************' ) ", "bbox": {"l": 79.200302, "t": 203.67407000000003, "r": 357.8385, "b": 211.60308999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "ON UPDATE VIOLATION PRESERVE CUSTOMER_DRIVERS_LICENSE_NUMBER ; ", "bbox": {"l": 79.200302, "t": 214.65404999999998, "r": 366.7782, "b": 222.58307000000002, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 236.67438000000004, "r": 217.55908, "b": 244.60339, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_EMAIL_CHECK ", "bbox": {"l": 79.200302, "t": 247.65436, "r": 294.8988, "b": 255.58336999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "CHECK( CUSTOMER_EMAIL <> '****@****' ) ", "bbox": {"l": 79.200302, "t": 258.69464000000005, "r": 263.45911, "b": 266.62366, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "ON UPDATE VIOLATION PRESERVE CUSTOMER_EMAIL ; ", "bbox": {"l": 79.200302, "t": 269.67462, "r": 290.3988, "b": 277.60364000000004, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 291.69495, "r": 217.55908, "b": 299.62393, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_LOGIN_ID_CHECK ", "bbox": {"l": 79.200302, "t": 302.67496, "r": 308.3988, "b": 310.60393999999997, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "CHECK( CUSTOMER_LOGIN_ID <> '*****' ) ", "bbox": {"l": 79.200302, "t": 313.65497, "r": 258.95911, "b": 321.58395, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "ON INSERT VIOLATION SET CUSTOMER_LOGIN_ID = DEFAULT", "bbox": {"l": 79.200302, "t": 324.6952800000001, "r": 317.01254, "b": 332.62427, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "ON UPDATE VIOLATION PRESERVE CUSTOMER_LOGIN_ID ; ", "bbox": {"l": 79.200302, "t": 335.67529, "r": 303.8988, "b": 343.60428, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 357.69559, "r": 217.55908, "b": 365.62457, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_SECURITY_QUESTION_CHECK ", "bbox": {"l": 79.200302, "t": 368.6756, "r": 348.8385, "b": 376.60458, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "CHECK( CUSTOMER_SECURITY_QUESTION_ANSWER <> '*****' ) ", "bbox": {"l": 79.200302, "t": 379.65561, "r": 330.8385, "b": 387.58459, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ON INSERT VIOLATION SET CUSTOMER_SECURITY_QUESTION_ANSWER = DEFAULT ", "bbox": {"l": 79.200302, "t": 390.69592, "r": 398.2782, "b": 398.62491000000006, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "ON UPDATE VIOLATION PRESERVE CUSTOMER_SECURITY_QUESTION_ANSWER ; ", "bbox": {"l": 79.200302, "t": 401.67592999999994, "r": 375.7782, "b": 409.60492, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 423.69622999999996, "r": 217.55908, "b": 431.6252099999999, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 79.200302, "t": 434.67624, "r": 353.3385, "b": 442.60522, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CHECK( CUSTOMER_SECURITY_QUESTION <> '*****' ) ", "bbox": {"l": 79.200302, "t": 445.65625, "r": 299.3988, "b": 453.58524, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "ON INSERT VIOLATION SET CUSTOMER_SECURITY_QUESTION = DEFAULT", "bbox": {"l": 79.200302, "t": 456.69656, "r": 357.50146, "b": 464.62555, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "ON UPDATE VIOLATION PRESERVE CUSTOMER_SECURITY_QUESTION ; ", "bbox": {"l": 79.200302, "t": 467.67657, "r": 344.3385, "b": 475.60556, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 489.69687, "r": 217.55908, "b": 497.62585, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_TAX_ID_CHECK ", "bbox": {"l": 79.200302, "t": 500.67688, "r": 299.3988, "b": 508.60587, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "CHECK( CUSTOMER_TAX_ID <> 'XXX-XX-XXXX' AND SUBSTR ( CUSTOMER_TAX_ID , 1 , 7 ) <> 'XXX-XX-' ) ", "bbox": {"l": 79.200302, "t": 511.65689, "r": 510.59729000000004, "b": 519.58588, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "ON UPDATE VIOLATION PRESERVE CUSTOMER_TAX_ID ; ", "bbox": {"l": 79.200302, "t": 522.6972000000001, "r": 294.8988, "b": 530.62619, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "CREATE TABLE BANK_SCHEMA.ACCOUNTS ( ", "bbox": {"l": 64.800301, "t": 544.65721, "r": 226.55908, "b": 552.5862099999999, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "ACCOUNT_ID INTEGER GENERATED ALWAYS AS IDENTITY ( ", "bbox": {"l": 79.200302, "t": 555.69751, "r": 303.8988, "b": 563.62651, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "START WITH 1 INCREMENT BY 1 ", "bbox": {"l": 79.200302, "t": 566.67751, "r": 205.01939, "b": 574.6065100000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "NO MINVALUE NO MAXVALUE ", "bbox": {"l": 79.200302, "t": 577.6575, "r": 187.01939, "b": 585.5865, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "NO CYCLE NO ORDER ", "bbox": {"l": 79.200302, "t": 588.6978, "r": 160.0797, "b": 596.6268, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CACHE 20 ), ", "bbox": {"l": 79.200302, "t": 599.6777999999999, "r": 133.14, "b": 607.6068, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "CUSTOMER_ID FOR COLUMN CUSTID", "bbox": {"l": 79.200302, "t": 610.65779, "r": 217.35544, "b": 618.5867900000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "INTEGER NOT NULL , ", "bbox": {"l": 226.88337999999996, "t": 610.65779, "r": 317.3988, "b": 618.5867900000001, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "ACCOUNT_NUMBER FOR COLUMN ACCOUNTNO VARCHAR(50) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200302, "t": 621.69809, "r": 389.2782, "b": 629.62709, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "ACCOUNT_NAME FOR COLUMN ACCOUNTNAM CHAR(12) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200302, "t": 632.67809, "r": 366.7782, "b": 640.60709, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "ACCOUNT_DATE_OPENED FOR COLUMN OPENDATE DATE DEFAULT CURRENT_DATE , ", "bbox": {"l": 79.200302, "t": 643.71838, "r": 393.7782, "b": 651.64738, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ACCOUNT_DATE_CLOSED FOR COLUMN CLOSEDATE DATE DEFAULT NULL , ", "bbox": {"l": 79.200302, "t": 654.69838, "r": 357.8385, "b": 662.62738, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "ACCOUNT_CURRENT_BALANCE FOR COLUMN ACCTBAL", "bbox": {"l": 79.200302, "t": 665.6783800000001, "r": 272.67203, "b": 673.60738, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "DECIMAL(11, 2) NOT NULL DEFAULT 0 , ", "bbox": {"l": 281.88498, "t": 665.6783800000001, "r": 447.71789999999993, "b": 673.60738, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "INSERT_TIMESTAMP FOR COLUMN INSDATE TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , ", "bbox": {"l": 79.200302, "t": 676.71867, "r": 546.53699, "b": 684.6476700000001, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "UPDATE_TIMESTAMP FOR COLUMN UPDDATE TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE ", "bbox": {"l": 79.200302, "t": 687.69868, "r": 479.15759, "b": 695.6276780000001, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , ", "bbox": {"l": 75.257675, "t": 698.67868, "r": 352.37817, "b": 706.607681, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "CONSTRAINT BANK_SCHEMA.ACCOUNT_ID_PK PRIMARY KEY( ACCOUNT_ID ) ); ", "bbox": {"l": 79.200302, "t": 709.718979, "r": 375.7782, "b": 717.64798, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.49662017822266, "t": 754.4017944335938, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9092414379119873, "cells": [{"id": 0, "text": "122 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 98.57022857666016, "t": 754.6959228515625, "r": 339.9194030761719, "b": 764.0059204101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9339437484741211, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "code", "bbox": {"l": 63.45902633666992, "t": 70.63676452636719, "r": 546.53699, "b": 721.98095703125, "coord_origin": "TOPLEFT"}, "confidence": 0.7888815402984619, "cells": [{"id": 2, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER FOR COLUMN CUSTO00011 VARCHAR(100) CCSID 37 DEFAULT NULL , ", "bbox": {"l": 79.200302, "t": 71.67296999999996, "r": 497.09729000000004, "b": 79.60199, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "INSERT_TIMESTAMP FOR COLUMN INSER00001 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , ", "bbox": {"l": 79.200302, "t": 82.65295000000015, "r": 546.53699, "b": 90.58196999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "UPDATE_TIMESTAMP FOR COLUMN UPDAT00001 TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE ", "bbox": {"l": 79.200302, "t": 93.63292999999999, "r": 479.15759, "b": 101.56195000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , ", "bbox": {"l": 75.257675, "t": 104.67322000000001, "r": 352.37817, "b": 112.60222999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "CONSTRAINT BANK_SCHEMA.CUSTOMER_ID_PK PRIMARY KEY( CUSTOMER_ID ) ) ; ", "bbox": {"l": 79.200302, "t": 115.65319999999997, "r": 389.2782, "b": 123.58220999999992, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 137.67352000000005, "r": 217.55908, "b": 145.60253999999998, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_LOGIN_ID_UK ", "bbox": {"l": 79.200302, "t": 148.6535, "r": 294.8988, "b": 156.58252000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "UNIQUE( CUSTOMER_LOGIN_ID ) ; ", "bbox": {"l": 79.200302, "t": 159.69379000000004, "r": 214.01939, "b": 167.62279999999998, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 181.65381000000002, "r": 217.55908, "b": 189.58281999999997, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_DRIVERS_LICENSE_CHECK ", "bbox": {"l": 79.200302, "t": 192.69408999999996, "r": 339.8385, "b": 200.62311, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CHECK( CUSTOMER_DRIVERS_LICENSE_NUMBER <> '*************' ) ", "bbox": {"l": 79.200302, "t": 203.67407000000003, "r": 357.8385, "b": 211.60308999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "ON UPDATE VIOLATION PRESERVE CUSTOMER_DRIVERS_LICENSE_NUMBER ; ", "bbox": {"l": 79.200302, "t": 214.65404999999998, "r": 366.7782, "b": 222.58307000000002, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 236.67438000000004, "r": 217.55908, "b": 244.60339, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_EMAIL_CHECK ", "bbox": {"l": 79.200302, "t": 247.65436, "r": 294.8988, "b": 255.58336999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "CHECK( CUSTOMER_EMAIL <> '****@****' ) ", "bbox": {"l": 79.200302, "t": 258.69464000000005, "r": 263.45911, "b": 266.62366, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "ON UPDATE VIOLATION PRESERVE CUSTOMER_EMAIL ; ", "bbox": {"l": 79.200302, "t": 269.67462, "r": 290.3988, "b": 277.60364000000004, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 291.69495, "r": 217.55908, "b": 299.62393, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_LOGIN_ID_CHECK ", "bbox": {"l": 79.200302, "t": 302.67496, "r": 308.3988, "b": 310.60393999999997, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "CHECK( CUSTOMER_LOGIN_ID <> '*****' ) ", "bbox": {"l": 79.200302, "t": 313.65497, "r": 258.95911, "b": 321.58395, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "ON INSERT VIOLATION SET CUSTOMER_LOGIN_ID = DEFAULT", "bbox": {"l": 79.200302, "t": 324.6952800000001, "r": 317.01254, "b": 332.62427, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "ON UPDATE VIOLATION PRESERVE CUSTOMER_LOGIN_ID ; ", "bbox": {"l": 79.200302, "t": 335.67529, "r": 303.8988, "b": 343.60428, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 357.69559, "r": 217.55908, "b": 365.62457, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_SECURITY_QUESTION_CHECK ", "bbox": {"l": 79.200302, "t": 368.6756, "r": 348.8385, "b": 376.60458, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "CHECK( CUSTOMER_SECURITY_QUESTION_ANSWER <> '*****' ) ", "bbox": {"l": 79.200302, "t": 379.65561, "r": 330.8385, "b": 387.58459, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ON INSERT VIOLATION SET CUSTOMER_SECURITY_QUESTION_ANSWER = DEFAULT ", "bbox": {"l": 79.200302, "t": 390.69592, "r": 398.2782, "b": 398.62491000000006, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "ON UPDATE VIOLATION PRESERVE CUSTOMER_SECURITY_QUESTION_ANSWER ; ", "bbox": {"l": 79.200302, "t": 401.67592999999994, "r": 375.7782, "b": 409.60492, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 423.69622999999996, "r": 217.55908, "b": 431.6252099999999, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 79.200302, "t": 434.67624, "r": 353.3385, "b": 442.60522, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CHECK( CUSTOMER_SECURITY_QUESTION <> '*****' ) ", "bbox": {"l": 79.200302, "t": 445.65625, "r": 299.3988, "b": 453.58524, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "ON INSERT VIOLATION SET CUSTOMER_SECURITY_QUESTION = DEFAULT", "bbox": {"l": 79.200302, "t": 456.69656, "r": 357.50146, "b": 464.62555, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "ON UPDATE VIOLATION PRESERVE CUSTOMER_SECURITY_QUESTION ; ", "bbox": {"l": 79.200302, "t": 467.67657, "r": 344.3385, "b": 475.60556, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 489.69687, "r": 217.55908, "b": 497.62585, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_TAX_ID_CHECK ", "bbox": {"l": 79.200302, "t": 500.67688, "r": 299.3988, "b": 508.60587, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "CHECK( CUSTOMER_TAX_ID <> 'XXX-XX-XXXX' AND SUBSTR ( CUSTOMER_TAX_ID , 1 , 7 ) <> 'XXX-XX-' ) ", "bbox": {"l": 79.200302, "t": 511.65689, "r": 510.59729000000004, "b": 519.58588, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "ON UPDATE VIOLATION PRESERVE CUSTOMER_TAX_ID ; ", "bbox": {"l": 79.200302, "t": 522.6972000000001, "r": 294.8988, "b": 530.62619, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "CREATE TABLE BANK_SCHEMA.ACCOUNTS ( ", "bbox": {"l": 64.800301, "t": 544.65721, "r": 226.55908, "b": 552.5862099999999, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "ACCOUNT_ID INTEGER GENERATED ALWAYS AS IDENTITY ( ", "bbox": {"l": 79.200302, "t": 555.69751, "r": 303.8988, "b": 563.62651, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "START WITH 1 INCREMENT BY 1 ", "bbox": {"l": 79.200302, "t": 566.67751, "r": 205.01939, "b": 574.6065100000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "NO MINVALUE NO MAXVALUE ", "bbox": {"l": 79.200302, "t": 577.6575, "r": 187.01939, "b": 585.5865, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "NO CYCLE NO ORDER ", "bbox": {"l": 79.200302, "t": 588.6978, "r": 160.0797, "b": 596.6268, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CACHE 20 ), ", "bbox": {"l": 79.200302, "t": 599.6777999999999, "r": 133.14, "b": 607.6068, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "CUSTOMER_ID FOR COLUMN CUSTID", "bbox": {"l": 79.200302, "t": 610.65779, "r": 217.35544, "b": 618.5867900000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "INTEGER NOT NULL , ", "bbox": {"l": 226.88337999999996, "t": 610.65779, "r": 317.3988, "b": 618.5867900000001, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "ACCOUNT_NUMBER FOR COLUMN ACCOUNTNO VARCHAR(50) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200302, "t": 621.69809, "r": 389.2782, "b": 629.62709, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "ACCOUNT_NAME FOR COLUMN ACCOUNTNAM CHAR(12) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200302, "t": 632.67809, "r": 366.7782, "b": 640.60709, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "ACCOUNT_DATE_OPENED FOR COLUMN OPENDATE DATE DEFAULT CURRENT_DATE , ", "bbox": {"l": 79.200302, "t": 643.71838, "r": 393.7782, "b": 651.64738, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ACCOUNT_DATE_CLOSED FOR COLUMN CLOSEDATE DATE DEFAULT NULL , ", "bbox": {"l": 79.200302, "t": 654.69838, "r": 357.8385, "b": 662.62738, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "ACCOUNT_CURRENT_BALANCE FOR COLUMN ACCTBAL", "bbox": {"l": 79.200302, "t": 665.6783800000001, "r": 272.67203, "b": 673.60738, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "DECIMAL(11, 2) NOT NULL DEFAULT 0 , ", "bbox": {"l": 281.88498, "t": 665.6783800000001, "r": 447.71789999999993, "b": 673.60738, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "INSERT_TIMESTAMP FOR COLUMN INSDATE TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , ", "bbox": {"l": 79.200302, "t": 676.71867, "r": 546.53699, "b": 684.6476700000001, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "UPDATE_TIMESTAMP FOR COLUMN UPDDATE TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE ", "bbox": {"l": 79.200302, "t": 687.69868, "r": 479.15759, "b": 695.6276780000001, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , ", "bbox": {"l": 75.257675, "t": 698.67868, "r": 352.37817, "b": 706.607681, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "CONSTRAINT BANK_SCHEMA.ACCOUNT_ID_PK PRIMARY KEY( ACCOUNT_ID ) ); ", "bbox": {"l": 79.200302, "t": 709.718979, "r": 375.7782, "b": 717.64798, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 137, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.49662017822266, "t": 754.4017944335938, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9092414379119873, "cells": [{"id": 0, "text": "122 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "122"}, {"label": "page_footer", "id": 1, "page_no": 137, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.57022857666016, "t": 754.6959228515625, "r": 339.9194030761719, "b": 764.0059204101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9339437484741211, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "code", "id": 2, "page_no": 137, "cluster": {"id": 2, "label": "code", "bbox": {"l": 63.45902633666992, "t": 70.63676452636719, "r": 546.53699, "b": 721.98095703125, "coord_origin": "TOPLEFT"}, "confidence": 0.7888815402984619, "cells": [{"id": 2, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER FOR COLUMN CUSTO00011 VARCHAR(100) CCSID 37 DEFAULT NULL , ", "bbox": {"l": 79.200302, "t": 71.67296999999996, "r": 497.09729000000004, "b": 79.60199, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "INSERT_TIMESTAMP FOR COLUMN INSER00001 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , ", "bbox": {"l": 79.200302, "t": 82.65295000000015, "r": 546.53699, "b": 90.58196999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "UPDATE_TIMESTAMP FOR COLUMN UPDAT00001 TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE ", "bbox": {"l": 79.200302, "t": 93.63292999999999, "r": 479.15759, "b": 101.56195000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , ", "bbox": {"l": 75.257675, "t": 104.67322000000001, "r": 352.37817, "b": 112.60222999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "CONSTRAINT BANK_SCHEMA.CUSTOMER_ID_PK PRIMARY KEY( CUSTOMER_ID ) ) ; ", "bbox": {"l": 79.200302, "t": 115.65319999999997, "r": 389.2782, "b": 123.58220999999992, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 137.67352000000005, "r": 217.55908, "b": 145.60253999999998, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_LOGIN_ID_UK ", "bbox": {"l": 79.200302, "t": 148.6535, "r": 294.8988, "b": 156.58252000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "UNIQUE( CUSTOMER_LOGIN_ID ) ; ", "bbox": {"l": 79.200302, "t": 159.69379000000004, "r": 214.01939, "b": 167.62279999999998, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 181.65381000000002, "r": 217.55908, "b": 189.58281999999997, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_DRIVERS_LICENSE_CHECK ", "bbox": {"l": 79.200302, "t": 192.69408999999996, "r": 339.8385, "b": 200.62311, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CHECK( CUSTOMER_DRIVERS_LICENSE_NUMBER <> '*************' ) ", "bbox": {"l": 79.200302, "t": 203.67407000000003, "r": 357.8385, "b": 211.60308999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "ON UPDATE VIOLATION PRESERVE CUSTOMER_DRIVERS_LICENSE_NUMBER ; ", "bbox": {"l": 79.200302, "t": 214.65404999999998, "r": 366.7782, "b": 222.58307000000002, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 236.67438000000004, "r": 217.55908, "b": 244.60339, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_EMAIL_CHECK ", "bbox": {"l": 79.200302, "t": 247.65436, "r": 294.8988, "b": 255.58336999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "CHECK( CUSTOMER_EMAIL <> '****@****' ) ", "bbox": {"l": 79.200302, "t": 258.69464000000005, "r": 263.45911, "b": 266.62366, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "ON UPDATE VIOLATION PRESERVE CUSTOMER_EMAIL ; ", "bbox": {"l": 79.200302, "t": 269.67462, "r": 290.3988, "b": 277.60364000000004, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 291.69495, "r": 217.55908, "b": 299.62393, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_LOGIN_ID_CHECK ", "bbox": {"l": 79.200302, "t": 302.67496, "r": 308.3988, "b": 310.60393999999997, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "CHECK( CUSTOMER_LOGIN_ID <> '*****' ) ", "bbox": {"l": 79.200302, "t": 313.65497, "r": 258.95911, "b": 321.58395, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "ON INSERT VIOLATION SET CUSTOMER_LOGIN_ID = DEFAULT", "bbox": {"l": 79.200302, "t": 324.6952800000001, "r": 317.01254, "b": 332.62427, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "ON UPDATE VIOLATION PRESERVE CUSTOMER_LOGIN_ID ; ", "bbox": {"l": 79.200302, "t": 335.67529, "r": 303.8988, "b": 343.60428, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 357.69559, "r": 217.55908, "b": 365.62457, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_SECURITY_QUESTION_CHECK ", "bbox": {"l": 79.200302, "t": 368.6756, "r": 348.8385, "b": 376.60458, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "CHECK( CUSTOMER_SECURITY_QUESTION_ANSWER <> '*****' ) ", "bbox": {"l": 79.200302, "t": 379.65561, "r": 330.8385, "b": 387.58459, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ON INSERT VIOLATION SET CUSTOMER_SECURITY_QUESTION_ANSWER = DEFAULT ", "bbox": {"l": 79.200302, "t": 390.69592, "r": 398.2782, "b": 398.62491000000006, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "ON UPDATE VIOLATION PRESERVE CUSTOMER_SECURITY_QUESTION_ANSWER ; ", "bbox": {"l": 79.200302, "t": 401.67592999999994, "r": 375.7782, "b": 409.60492, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 423.69622999999996, "r": 217.55908, "b": 431.6252099999999, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 79.200302, "t": 434.67624, "r": 353.3385, "b": 442.60522, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CHECK( CUSTOMER_SECURITY_QUESTION <> '*****' ) ", "bbox": {"l": 79.200302, "t": 445.65625, "r": 299.3988, "b": 453.58524, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "ON INSERT VIOLATION SET CUSTOMER_SECURITY_QUESTION = DEFAULT", "bbox": {"l": 79.200302, "t": 456.69656, "r": 357.50146, "b": 464.62555, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "ON UPDATE VIOLATION PRESERVE CUSTOMER_SECURITY_QUESTION ; ", "bbox": {"l": 79.200302, "t": 467.67657, "r": 344.3385, "b": 475.60556, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 489.69687, "r": 217.55908, "b": 497.62585, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_TAX_ID_CHECK ", "bbox": {"l": 79.200302, "t": 500.67688, "r": 299.3988, "b": 508.60587, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "CHECK( CUSTOMER_TAX_ID <> 'XXX-XX-XXXX' AND SUBSTR ( CUSTOMER_TAX_ID , 1 , 7 ) <> 'XXX-XX-' ) ", "bbox": {"l": 79.200302, "t": 511.65689, "r": 510.59729000000004, "b": 519.58588, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "ON UPDATE VIOLATION PRESERVE CUSTOMER_TAX_ID ; ", "bbox": {"l": 79.200302, "t": 522.6972000000001, "r": 294.8988, "b": 530.62619, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "CREATE TABLE BANK_SCHEMA.ACCOUNTS ( ", "bbox": {"l": 64.800301, "t": 544.65721, "r": 226.55908, "b": 552.5862099999999, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "ACCOUNT_ID INTEGER GENERATED ALWAYS AS IDENTITY ( ", "bbox": {"l": 79.200302, "t": 555.69751, "r": 303.8988, "b": 563.62651, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "START WITH 1 INCREMENT BY 1 ", "bbox": {"l": 79.200302, "t": 566.67751, "r": 205.01939, "b": 574.6065100000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "NO MINVALUE NO MAXVALUE ", "bbox": {"l": 79.200302, "t": 577.6575, "r": 187.01939, "b": 585.5865, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "NO CYCLE NO ORDER ", "bbox": {"l": 79.200302, "t": 588.6978, "r": 160.0797, "b": 596.6268, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CACHE 20 ), ", "bbox": {"l": 79.200302, "t": 599.6777999999999, "r": 133.14, "b": 607.6068, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "CUSTOMER_ID FOR COLUMN CUSTID", "bbox": {"l": 79.200302, "t": 610.65779, "r": 217.35544, "b": 618.5867900000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "INTEGER NOT NULL , ", "bbox": {"l": 226.88337999999996, "t": 610.65779, "r": 317.3988, "b": 618.5867900000001, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "ACCOUNT_NUMBER FOR COLUMN ACCOUNTNO VARCHAR(50) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200302, "t": 621.69809, "r": 389.2782, "b": 629.62709, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "ACCOUNT_NAME FOR COLUMN ACCOUNTNAM CHAR(12) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200302, "t": 632.67809, "r": 366.7782, "b": 640.60709, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "ACCOUNT_DATE_OPENED FOR COLUMN OPENDATE DATE DEFAULT CURRENT_DATE , ", "bbox": {"l": 79.200302, "t": 643.71838, "r": 393.7782, "b": 651.64738, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ACCOUNT_DATE_CLOSED FOR COLUMN CLOSEDATE DATE DEFAULT NULL , ", "bbox": {"l": 79.200302, "t": 654.69838, "r": 357.8385, "b": 662.62738, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "ACCOUNT_CURRENT_BALANCE FOR COLUMN ACCTBAL", "bbox": {"l": 79.200302, "t": 665.6783800000001, "r": 272.67203, "b": 673.60738, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "DECIMAL(11, 2) NOT NULL DEFAULT 0 , ", "bbox": {"l": 281.88498, "t": 665.6783800000001, "r": 447.71789999999993, "b": 673.60738, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "INSERT_TIMESTAMP FOR COLUMN INSDATE TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , ", "bbox": {"l": 79.200302, "t": 676.71867, "r": 546.53699, "b": 684.6476700000001, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "UPDATE_TIMESTAMP FOR COLUMN UPDDATE TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE ", "bbox": {"l": 79.200302, "t": 687.69868, "r": 479.15759, "b": 695.6276780000001, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , ", "bbox": {"l": 75.257675, "t": 698.67868, "r": 352.37817, "b": 706.607681, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "CONSTRAINT BANK_SCHEMA.ACCOUNT_ID_PK PRIMARY KEY( ACCOUNT_ID ) ); ", "bbox": {"l": 79.200302, "t": 709.718979, "r": 375.7782, "b": 717.64798, "coord_origin": "TOPLEFT"}}]}, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER FOR COLUMN CUSTO00011 VARCHAR(100) CCSID 37 DEFAULT NULL , INSERT_TIMESTAMP FOR COLUMN INSER00001 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , UPDATE_TIMESTAMP FOR COLUMN UPDAT00001 TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , CONSTRAINT BANK_SCHEMA.CUSTOMER_ID_PK PRIMARY KEY( CUSTOMER_ID ) ) ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_LOGIN_ID_UK UNIQUE( CUSTOMER_LOGIN_ID ) ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_DRIVERS_LICENSE_CHECK CHECK( CUSTOMER_DRIVERS_LICENSE_NUMBER <> '*************' ) ON UPDATE VIOLATION PRESERVE CUSTOMER_DRIVERS_LICENSE_NUMBER ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_EMAIL_CHECK CHECK( CUSTOMER_EMAIL <> '****@****' ) ON UPDATE VIOLATION PRESERVE CUSTOMER_EMAIL ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_LOGIN_ID_CHECK CHECK( CUSTOMER_LOGIN_ID <> '*****' ) ON INSERT VIOLATION SET CUSTOMER_LOGIN_ID = DEFAULT ON UPDATE VIOLATION PRESERVE CUSTOMER_LOGIN_ID ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_SECURITY_QUESTION_CHECK CHECK( CUSTOMER_SECURITY_QUESTION_ANSWER <> '*****' ) ON INSERT VIOLATION SET CUSTOMER_SECURITY_QUESTION_ANSWER = DEFAULT ON UPDATE VIOLATION PRESERVE CUSTOMER_SECURITY_QUESTION_ANSWER ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_SECURITY_QUESTION_ANSWER CHECK( CUSTOMER_SECURITY_QUESTION <> '*****' ) ON INSERT VIOLATION SET CUSTOMER_SECURITY_QUESTION = DEFAULT ON UPDATE VIOLATION PRESERVE CUSTOMER_SECURITY_QUESTION ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_TAX_ID_CHECK CHECK( CUSTOMER_TAX_ID <> 'XXX-XX-XXXX' AND SUBSTR ( CUSTOMER_TAX_ID , 1 , 7 ) <> 'XXX-XX-' ) ON UPDATE VIOLATION PRESERVE CUSTOMER_TAX_ID ; CREATE TABLE BANK_SCHEMA.ACCOUNTS ( ACCOUNT_ID INTEGER GENERATED ALWAYS AS IDENTITY ( START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE NO CYCLE NO ORDER CACHE 20 ), CUSTOMER_ID FOR COLUMN CUSTID INTEGER NOT NULL , ACCOUNT_NUMBER FOR COLUMN ACCOUNTNO VARCHAR(50) CCSID 37 NOT NULL , ACCOUNT_NAME FOR COLUMN ACCOUNTNAM CHAR(12) CCSID 37 NOT NULL , ACCOUNT_DATE_OPENED FOR COLUMN OPENDATE DATE DEFAULT CURRENT_DATE , ACCOUNT_DATE_CLOSED FOR COLUMN CLOSEDATE DATE DEFAULT NULL , ACCOUNT_CURRENT_BALANCE FOR COLUMN ACCTBAL DECIMAL(11, 2) NOT NULL DEFAULT 0 , INSERT_TIMESTAMP FOR COLUMN INSDATE TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , UPDATE_TIMESTAMP FOR COLUMN UPDDATE TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , CONSTRAINT BANK_SCHEMA.ACCOUNT_ID_PK PRIMARY KEY( ACCOUNT_ID ) );"}], "body": [{"label": "code", "id": 2, "page_no": 137, "cluster": {"id": 2, "label": "code", "bbox": {"l": 63.45902633666992, "t": 70.63676452636719, "r": 546.53699, "b": 721.98095703125, "coord_origin": "TOPLEFT"}, "confidence": 0.7888815402984619, "cells": [{"id": 2, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER FOR COLUMN CUSTO00011 VARCHAR(100) CCSID 37 DEFAULT NULL , ", "bbox": {"l": 79.200302, "t": 71.67296999999996, "r": 497.09729000000004, "b": 79.60199, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "INSERT_TIMESTAMP FOR COLUMN INSER00001 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , ", "bbox": {"l": 79.200302, "t": 82.65295000000015, "r": 546.53699, "b": 90.58196999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "UPDATE_TIMESTAMP FOR COLUMN UPDAT00001 TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE ", "bbox": {"l": 79.200302, "t": 93.63292999999999, "r": 479.15759, "b": 101.56195000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , ", "bbox": {"l": 75.257675, "t": 104.67322000000001, "r": 352.37817, "b": 112.60222999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "CONSTRAINT BANK_SCHEMA.CUSTOMER_ID_PK PRIMARY KEY( CUSTOMER_ID ) ) ; ", "bbox": {"l": 79.200302, "t": 115.65319999999997, "r": 389.2782, "b": 123.58220999999992, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 137.67352000000005, "r": 217.55908, "b": 145.60253999999998, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_LOGIN_ID_UK ", "bbox": {"l": 79.200302, "t": 148.6535, "r": 294.8988, "b": 156.58252000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "UNIQUE( CUSTOMER_LOGIN_ID ) ; ", "bbox": {"l": 79.200302, "t": 159.69379000000004, "r": 214.01939, "b": 167.62279999999998, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 181.65381000000002, "r": 217.55908, "b": 189.58281999999997, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_DRIVERS_LICENSE_CHECK ", "bbox": {"l": 79.200302, "t": 192.69408999999996, "r": 339.8385, "b": 200.62311, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CHECK( CUSTOMER_DRIVERS_LICENSE_NUMBER <> '*************' ) ", "bbox": {"l": 79.200302, "t": 203.67407000000003, "r": 357.8385, "b": 211.60308999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "ON UPDATE VIOLATION PRESERVE CUSTOMER_DRIVERS_LICENSE_NUMBER ; ", "bbox": {"l": 79.200302, "t": 214.65404999999998, "r": 366.7782, "b": 222.58307000000002, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 236.67438000000004, "r": 217.55908, "b": 244.60339, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_EMAIL_CHECK ", "bbox": {"l": 79.200302, "t": 247.65436, "r": 294.8988, "b": 255.58336999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "CHECK( CUSTOMER_EMAIL <> '****@****' ) ", "bbox": {"l": 79.200302, "t": 258.69464000000005, "r": 263.45911, "b": 266.62366, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "ON UPDATE VIOLATION PRESERVE CUSTOMER_EMAIL ; ", "bbox": {"l": 79.200302, "t": 269.67462, "r": 290.3988, "b": 277.60364000000004, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 291.69495, "r": 217.55908, "b": 299.62393, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_LOGIN_ID_CHECK ", "bbox": {"l": 79.200302, "t": 302.67496, "r": 308.3988, "b": 310.60393999999997, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "CHECK( CUSTOMER_LOGIN_ID <> '*****' ) ", "bbox": {"l": 79.200302, "t": 313.65497, "r": 258.95911, "b": 321.58395, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "ON INSERT VIOLATION SET CUSTOMER_LOGIN_ID = DEFAULT", "bbox": {"l": 79.200302, "t": 324.6952800000001, "r": 317.01254, "b": 332.62427, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "ON UPDATE VIOLATION PRESERVE CUSTOMER_LOGIN_ID ; ", "bbox": {"l": 79.200302, "t": 335.67529, "r": 303.8988, "b": 343.60428, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 357.69559, "r": 217.55908, "b": 365.62457, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_SECURITY_QUESTION_CHECK ", "bbox": {"l": 79.200302, "t": 368.6756, "r": 348.8385, "b": 376.60458, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "CHECK( CUSTOMER_SECURITY_QUESTION_ANSWER <> '*****' ) ", "bbox": {"l": 79.200302, "t": 379.65561, "r": 330.8385, "b": 387.58459, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ON INSERT VIOLATION SET CUSTOMER_SECURITY_QUESTION_ANSWER = DEFAULT ", "bbox": {"l": 79.200302, "t": 390.69592, "r": 398.2782, "b": 398.62491000000006, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "ON UPDATE VIOLATION PRESERVE CUSTOMER_SECURITY_QUESTION_ANSWER ; ", "bbox": {"l": 79.200302, "t": 401.67592999999994, "r": 375.7782, "b": 409.60492, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 423.69622999999996, "r": 217.55908, "b": 431.6252099999999, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 79.200302, "t": 434.67624, "r": 353.3385, "b": 442.60522, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CHECK( CUSTOMER_SECURITY_QUESTION <> '*****' ) ", "bbox": {"l": 79.200302, "t": 445.65625, "r": 299.3988, "b": 453.58524, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "ON INSERT VIOLATION SET CUSTOMER_SECURITY_QUESTION = DEFAULT", "bbox": {"l": 79.200302, "t": 456.69656, "r": 357.50146, "b": 464.62555, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "ON UPDATE VIOLATION PRESERVE CUSTOMER_SECURITY_QUESTION ; ", "bbox": {"l": 79.200302, "t": 467.67657, "r": 344.3385, "b": 475.60556, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 489.69687, "r": 217.55908, "b": 497.62585, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_TAX_ID_CHECK ", "bbox": {"l": 79.200302, "t": 500.67688, "r": 299.3988, "b": 508.60587, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "CHECK( CUSTOMER_TAX_ID <> 'XXX-XX-XXXX' AND SUBSTR ( CUSTOMER_TAX_ID , 1 , 7 ) <> 'XXX-XX-' ) ", "bbox": {"l": 79.200302, "t": 511.65689, "r": 510.59729000000004, "b": 519.58588, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "ON UPDATE VIOLATION PRESERVE CUSTOMER_TAX_ID ; ", "bbox": {"l": 79.200302, "t": 522.6972000000001, "r": 294.8988, "b": 530.62619, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "CREATE TABLE BANK_SCHEMA.ACCOUNTS ( ", "bbox": {"l": 64.800301, "t": 544.65721, "r": 226.55908, "b": 552.5862099999999, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "ACCOUNT_ID INTEGER GENERATED ALWAYS AS IDENTITY ( ", "bbox": {"l": 79.200302, "t": 555.69751, "r": 303.8988, "b": 563.62651, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "START WITH 1 INCREMENT BY 1 ", "bbox": {"l": 79.200302, "t": 566.67751, "r": 205.01939, "b": 574.6065100000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "NO MINVALUE NO MAXVALUE ", "bbox": {"l": 79.200302, "t": 577.6575, "r": 187.01939, "b": 585.5865, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "NO CYCLE NO ORDER ", "bbox": {"l": 79.200302, "t": 588.6978, "r": 160.0797, "b": 596.6268, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CACHE 20 ), ", "bbox": {"l": 79.200302, "t": 599.6777999999999, "r": 133.14, "b": 607.6068, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "CUSTOMER_ID FOR COLUMN CUSTID", "bbox": {"l": 79.200302, "t": 610.65779, "r": 217.35544, "b": 618.5867900000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "INTEGER NOT NULL , ", "bbox": {"l": 226.88337999999996, "t": 610.65779, "r": 317.3988, "b": 618.5867900000001, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "ACCOUNT_NUMBER FOR COLUMN ACCOUNTNO VARCHAR(50) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200302, "t": 621.69809, "r": 389.2782, "b": 629.62709, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "ACCOUNT_NAME FOR COLUMN ACCOUNTNAM CHAR(12) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200302, "t": 632.67809, "r": 366.7782, "b": 640.60709, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "ACCOUNT_DATE_OPENED FOR COLUMN OPENDATE DATE DEFAULT CURRENT_DATE , ", "bbox": {"l": 79.200302, "t": 643.71838, "r": 393.7782, "b": 651.64738, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ACCOUNT_DATE_CLOSED FOR COLUMN CLOSEDATE DATE DEFAULT NULL , ", "bbox": {"l": 79.200302, "t": 654.69838, "r": 357.8385, "b": 662.62738, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "ACCOUNT_CURRENT_BALANCE FOR COLUMN ACCTBAL", "bbox": {"l": 79.200302, "t": 665.6783800000001, "r": 272.67203, "b": 673.60738, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "DECIMAL(11, 2) NOT NULL DEFAULT 0 , ", "bbox": {"l": 281.88498, "t": 665.6783800000001, "r": 447.71789999999993, "b": 673.60738, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "INSERT_TIMESTAMP FOR COLUMN INSDATE TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , ", "bbox": {"l": 79.200302, "t": 676.71867, "r": 546.53699, "b": 684.6476700000001, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "UPDATE_TIMESTAMP FOR COLUMN UPDDATE TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE ", "bbox": {"l": 79.200302, "t": 687.69868, "r": 479.15759, "b": 695.6276780000001, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , ", "bbox": {"l": 75.257675, "t": 698.67868, "r": 352.37817, "b": 706.607681, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "CONSTRAINT BANK_SCHEMA.ACCOUNT_ID_PK PRIMARY KEY( ACCOUNT_ID ) ); ", "bbox": {"l": 79.200302, "t": 709.718979, "r": 375.7782, "b": 717.64798, "coord_origin": "TOPLEFT"}}]}, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER FOR COLUMN CUSTO00011 VARCHAR(100) CCSID 37 DEFAULT NULL , INSERT_TIMESTAMP FOR COLUMN INSER00001 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , UPDATE_TIMESTAMP FOR COLUMN UPDAT00001 TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , CONSTRAINT BANK_SCHEMA.CUSTOMER_ID_PK PRIMARY KEY( CUSTOMER_ID ) ) ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_LOGIN_ID_UK UNIQUE( CUSTOMER_LOGIN_ID ) ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_DRIVERS_LICENSE_CHECK CHECK( CUSTOMER_DRIVERS_LICENSE_NUMBER <> '*************' ) ON UPDATE VIOLATION PRESERVE CUSTOMER_DRIVERS_LICENSE_NUMBER ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_EMAIL_CHECK CHECK( CUSTOMER_EMAIL <> '****@****' ) ON UPDATE VIOLATION PRESERVE CUSTOMER_EMAIL ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_LOGIN_ID_CHECK CHECK( CUSTOMER_LOGIN_ID <> '*****' ) ON INSERT VIOLATION SET CUSTOMER_LOGIN_ID = DEFAULT ON UPDATE VIOLATION PRESERVE CUSTOMER_LOGIN_ID ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_SECURITY_QUESTION_CHECK CHECK( CUSTOMER_SECURITY_QUESTION_ANSWER <> '*****' ) ON INSERT VIOLATION SET CUSTOMER_SECURITY_QUESTION_ANSWER = DEFAULT ON UPDATE VIOLATION PRESERVE CUSTOMER_SECURITY_QUESTION_ANSWER ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_SECURITY_QUESTION_ANSWER CHECK( CUSTOMER_SECURITY_QUESTION <> '*****' ) ON INSERT VIOLATION SET CUSTOMER_SECURITY_QUESTION = DEFAULT ON UPDATE VIOLATION PRESERVE CUSTOMER_SECURITY_QUESTION ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_TAX_ID_CHECK CHECK( CUSTOMER_TAX_ID <> 'XXX-XX-XXXX' AND SUBSTR ( CUSTOMER_TAX_ID , 1 , 7 ) <> 'XXX-XX-' ) ON UPDATE VIOLATION PRESERVE CUSTOMER_TAX_ID ; CREATE TABLE BANK_SCHEMA.ACCOUNTS ( ACCOUNT_ID INTEGER GENERATED ALWAYS AS IDENTITY ( START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE NO CYCLE NO ORDER CACHE 20 ), CUSTOMER_ID FOR COLUMN CUSTID INTEGER NOT NULL , ACCOUNT_NUMBER FOR COLUMN ACCOUNTNO VARCHAR(50) CCSID 37 NOT NULL , ACCOUNT_NAME FOR COLUMN ACCOUNTNAM CHAR(12) CCSID 37 NOT NULL , ACCOUNT_DATE_OPENED FOR COLUMN OPENDATE DATE DEFAULT CURRENT_DATE , ACCOUNT_DATE_CLOSED FOR COLUMN CLOSEDATE DATE DEFAULT NULL , ACCOUNT_CURRENT_BALANCE FOR COLUMN ACCTBAL DECIMAL(11, 2) NOT NULL DEFAULT 0 , INSERT_TIMESTAMP FOR COLUMN INSDATE TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , UPDATE_TIMESTAMP FOR COLUMN UPDDATE TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , CONSTRAINT BANK_SCHEMA.ACCOUNT_ID_PK PRIMARY KEY( ACCOUNT_ID ) );"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 137, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.49662017822266, "t": 754.4017944335938, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9092414379119873, "cells": [{"id": 0, "text": "122 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "122"}, {"label": "page_footer", "id": 1, "page_no": 137, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.57022857666016, "t": 754.6959228515625, "r": 339.9194030761719, "b": 764.0059204101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9339437484741211, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 138, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Appendix A. Database definitions for the RCAC banking example ", "bbox": {"l": 257.57999, "t": 755.538002, "r": 517.90582, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "123", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "ALTER TABLE BANK_SCHEMA.ACCOUNTS ", "bbox": {"l": 64.800003, "t": 71.67296999999996, "r": 213.11909, "b": 79.60199, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "ADD CONSTRAINT BANK_SCHEMA.ACCOUNT_CUSTOMER_ID_FK ", "bbox": {"l": 79.200005, "t": 82.65295000000015, "r": 303.8985, "b": 90.58196999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "FOREIGN KEY( CUSTOMER_ID ) ", "bbox": {"l": 79.200005, "t": 93.63292999999999, "r": 200.5191, "b": 101.56195000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "REFERENCES BANK_SCHEMA.CUSTOMERS ( CUSTO00001 ) ", "bbox": {"l": 79.200005, "t": 104.67322000000001, "r": 294.8985, "b": 112.60222999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "ON DELETE RESTRICT ", "bbox": {"l": 79.200005, "t": 115.65319999999997, "r": 164.5191, "b": 123.58220999999992, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ON UPDATE RESTRICT ; ", "bbox": {"l": 79.200005, "t": 126.63318000000015, "r": 173.57941, "b": 134.56219, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "ALTER TABLE BANK_SCHEMA.ACCOUNTS ", "bbox": {"l": 64.800003, "t": 148.6535, "r": 213.11909, "b": 156.58252000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "ADD CONSTRAINT BANK_SCHEMA.ACCOUNT_NUMBER_CHECK ", "bbox": {"l": 79.200005, "t": 159.69379000000004, "r": 294.8985, "b": 167.62279999999998, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "CHECK( ACCOUNT_NUMBER <> '*****' ) ", "bbox": {"l": 79.200005, "t": 170.67377, "r": 245.4588, "b": 178.60278000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ON UPDATE VIOLATION PRESERVE ACCOUNT_NUMBER ;", "bbox": {"l": 79.200005, "t": 181.65374999999995, "r": 285.8985, "b": 189.58276, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CREATE TABLE BANK_SCHEMA.TRANSACTIONS FOR SYSTEM NAME TRANS ( ", "bbox": {"l": 64.800003, "t": 203.67407000000003, "r": 343.43817, "b": 211.60308999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "TRANSACTION_ID FOR COLUMN TRANS00001 INTEGER GENERATED ALWAYS AS IDENTITY ( ", "bbox": {"l": 79.200005, "t": 214.65404999999998, "r": 420.71759, "b": 222.58307000000002, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "START WITH 1 INCREMENT BY 1 ", "bbox": {"l": 79.200005, "t": 225.69434, "r": 205.0191, "b": 233.62334999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "NO MINVALUE NO MAXVALUE ", "bbox": {"l": 79.200005, "t": 236.67431999999997, "r": 187.0191, "b": 244.60333000000003, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "NO CYCLE NO ORDER ", "bbox": {"l": 79.200005, "t": 247.65430000000003, "r": 160.07941, "b": 255.58330999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "CACHE 20 ), ", "bbox": {"l": 79.200005, "t": 258.69458, "r": 133.13971, "b": 266.6236, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ACCOUNT_ID INTEGER NOT NULL , ", "bbox": {"l": 79.200005, "t": 269.67456000000004, "r": 214.0191, "b": 277.60357999999997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "TRANSACTION_TYPE FOR COLUMN TRANS00002 CHAR(1) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 280.6546000000001, "r": 380.27789, "b": 288.58359, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "TRANSACTION_DATE FOR COLUMN TRANS00003 DATE NOT NULL DEFAULT CURRENT_DATE , ", "bbox": {"l": 79.200005, "t": 291.69492, "r": 420.71759, "b": 299.6239, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "TRANSACTION_TIME FOR COLUMN TRANS00004 TIME NOT NULL DEFAULT CURRENT_TIME , ", "bbox": {"l": 79.200005, "t": 302.67493, "r": 420.71759, "b": 310.60391, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "TRANSACTION_AMOUNT FOR COLUMN TRANS00005 DECIMAL(11, 2) NOT NULL , ", "bbox": {"l": 79.200005, "t": 313.65494, "r": 380.27789, "b": 321.58392, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "INSERT_TIMESTAMP FOR COLUMN INSER00001 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , ", "bbox": {"l": 79.200005, "t": 324.69525, "r": 546.53668, "b": 332.62424000000004, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "UPDATE_TIMESTAMP FOR COLUMN UPDAT00001 TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE ", "bbox": {"l": 79.200005, "t": 335.6752599999999, "r": 479.15729, "b": 343.60425, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , ", "bbox": {"l": 75.257378, "t": 346.65527, "r": 352.37787, "b": 354.58426, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "CONSTRAINT BANK_SCHEMA.TRANSACTION_ID_PK PRIMARY KEY( TRANSACTION_ID ) ) ; ", "bbox": {"l": 79.200005, "t": 357.69559, "r": 416.21759, "b": 365.62457, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "ALTER TABLE BANK_SCHEMA.TRANSACTIONS ", "bbox": {"l": 64.800003, "t": 379.65558, "r": 231.05878999999996, "b": 387.58456, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "ADD CONSTRAINT BANK_SCHEMA.TRANSACTIONS_ACCOUNT_ID_FK ", "bbox": {"l": 79.200005, "t": 390.69589, "r": 321.8382, "b": 398.62488, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "FOREIGN KEY( ACCOUNT_ID ) ", "bbox": {"l": 79.200005, "t": 401.6759, "r": 196.0191, "b": 409.60489, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "REFERENCES BANK_SCHEMA.ACCOUNTS ( ACCOUNT_ID ) ", "bbox": {"l": 79.200005, "t": 412.65591, "r": 290.3985, "b": 420.58490000000006, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "ON DELETE RESTRICT ", "bbox": {"l": 79.200005, "t": 423.69622999999996, "r": 164.5191, "b": 431.6252099999999, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "ON UPDATE RESTRICT ;", "bbox": {"l": 79.200005, "t": 434.67624, "r": 169.07941, "b": 442.60522, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "/* Permissions and Masks */", "bbox": {"l": 64.800003, "t": 456.69653, "r": 186.11909, "b": 464.62552, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800003, "t": 478.65652, "r": 446.75726000000003, "b": 486.58551, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) ", "bbox": {"l": 79.200005, "t": 489.69684, "r": 528.59698, "b": 497.62582, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "OR ", "bbox": {"l": 64.800003, "t": 500.67685, "r": 78.300003, "b": 508.60583, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800003, "t": 511.65686, "r": 361.37787, "b": 519.5858499999999, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "AND ( C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ) ) ", "bbox": {"l": 64.800003, "t": 522.69717, "r": 374.87787, "b": 530.62616, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ENFORCED FOR ALL ACCESS ", "bbox": {"l": 79.200005, "t": 533.67715, "r": 196.0191, "b": 541.60617, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ENABLE ; ", "bbox": {"l": 79.200005, "t": 544.65717, "r": 124.1397, "b": 552.58617, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "CREATE MASK BANK_SCHEMA.MASK_EMAIL_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800003, "t": 566.67746, "r": 415.31757, "b": 574.60646, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "FOR COLUMN CUSTOMER_EMAIL ", "bbox": {"l": 79.200005, "t": 577.6574599999999, "r": 196.0191, "b": 585.58646, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "RETURN CASE ", "bbox": {"l": 79.200005, "t": 588.69775, "r": 137.63971, "b": 596.62675, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800003, "t": 599.67775, "r": 361.37787, "b": 607.60675, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "THEN C . CUSTOMER_EMAIL ", "bbox": {"l": 64.800003, "t": 610.65775, "r": 172.61909, "b": 618.5867499999999, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800003, "t": 621.69804, "r": 374.87787, "b": 629.62704, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "THEN C . CUSTOMER_EMAIL ", "bbox": {"l": 64.800003, "t": 632.67804, "r": 172.61909, "b": 640.60704, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ELSE '****@****' ", "bbox": {"l": 64.800003, "t": 643.71834, "r": 141.1794, "b": 651.64734, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "END ", "bbox": {"l": 64.800003, "t": 654.6983299999999, "r": 96.2397, "b": 662.62733, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ENABLE ; ", "bbox": {"l": 79.200005, "t": 665.67833, "r": 124.1397, "b": 673.60733, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "CREATE MASK BANK_SCHEMA.MASK_TAX_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800003, "t": 687.69863, "r": 419.81757, "b": 695.627632, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "FOR COLUMN CUSTOMER_TAX_ID ", "bbox": {"l": 79.200005, "t": 698.678635, "r": 200.5191, "b": 706.607635, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "RETURN CASE ", "bbox": {"l": 79.200005, "t": 709.718933, "r": 137.63971, "b": 717.647934, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800003, "t": 720.698936, "r": 361.37787, "b": 728.627941, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 256.79608154296875, "t": 754.73193359375, "r": 517.90582, "b": 763.9072265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9521042704582214, "cells": [{"id": 0, "text": "Appendix A. Database definitions for the RCAC banking example ", "bbox": {"l": 257.57999, "t": 755.538002, "r": 517.90582, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 530.0982055664062, "t": 754.3765869140625, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9163233041763306, "cells": [{"id": 1, "text": "123", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "code", "bbox": {"l": 62.7338981628418, "t": 71.67296999999996, "r": 546.53668, "b": 730.2366943359375, "coord_origin": "TOPLEFT"}, "confidence": 0.7971411347389221, "cells": [{"id": 2, "text": "ALTER TABLE BANK_SCHEMA.ACCOUNTS ", "bbox": {"l": 64.800003, "t": 71.67296999999996, "r": 213.11909, "b": 79.60199, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "ADD CONSTRAINT BANK_SCHEMA.ACCOUNT_CUSTOMER_ID_FK ", "bbox": {"l": 79.200005, "t": 82.65295000000015, "r": 303.8985, "b": 90.58196999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "FOREIGN KEY( CUSTOMER_ID ) ", "bbox": {"l": 79.200005, "t": 93.63292999999999, "r": 200.5191, "b": 101.56195000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "REFERENCES BANK_SCHEMA.CUSTOMERS ( CUSTO00001 ) ", "bbox": {"l": 79.200005, "t": 104.67322000000001, "r": 294.8985, "b": 112.60222999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "ON DELETE RESTRICT ", "bbox": {"l": 79.200005, "t": 115.65319999999997, "r": 164.5191, "b": 123.58220999999992, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ON UPDATE RESTRICT ; ", "bbox": {"l": 79.200005, "t": 126.63318000000015, "r": 173.57941, "b": 134.56219, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "ALTER TABLE BANK_SCHEMA.ACCOUNTS ", "bbox": {"l": 64.800003, "t": 148.6535, "r": 213.11909, "b": 156.58252000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "ADD CONSTRAINT BANK_SCHEMA.ACCOUNT_NUMBER_CHECK ", "bbox": {"l": 79.200005, "t": 159.69379000000004, "r": 294.8985, "b": 167.62279999999998, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "CHECK( ACCOUNT_NUMBER <> '*****' ) ", "bbox": {"l": 79.200005, "t": 170.67377, "r": 245.4588, "b": 178.60278000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ON UPDATE VIOLATION PRESERVE ACCOUNT_NUMBER ;", "bbox": {"l": 79.200005, "t": 181.65374999999995, "r": 285.8985, "b": 189.58276, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CREATE TABLE BANK_SCHEMA.TRANSACTIONS FOR SYSTEM NAME TRANS ( ", "bbox": {"l": 64.800003, "t": 203.67407000000003, "r": 343.43817, "b": 211.60308999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "TRANSACTION_ID FOR COLUMN TRANS00001 INTEGER GENERATED ALWAYS AS IDENTITY ( ", "bbox": {"l": 79.200005, "t": 214.65404999999998, "r": 420.71759, "b": 222.58307000000002, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "START WITH 1 INCREMENT BY 1 ", "bbox": {"l": 79.200005, "t": 225.69434, "r": 205.0191, "b": 233.62334999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "NO MINVALUE NO MAXVALUE ", "bbox": {"l": 79.200005, "t": 236.67431999999997, "r": 187.0191, "b": 244.60333000000003, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "NO CYCLE NO ORDER ", "bbox": {"l": 79.200005, "t": 247.65430000000003, "r": 160.07941, "b": 255.58330999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "CACHE 20 ), ", "bbox": {"l": 79.200005, "t": 258.69458, "r": 133.13971, "b": 266.6236, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ACCOUNT_ID INTEGER NOT NULL , ", "bbox": {"l": 79.200005, "t": 269.67456000000004, "r": 214.0191, "b": 277.60357999999997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "TRANSACTION_TYPE FOR COLUMN TRANS00002 CHAR(1) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 280.6546000000001, "r": 380.27789, "b": 288.58359, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "TRANSACTION_DATE FOR COLUMN TRANS00003 DATE NOT NULL DEFAULT CURRENT_DATE , ", "bbox": {"l": 79.200005, "t": 291.69492, "r": 420.71759, "b": 299.6239, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "TRANSACTION_TIME FOR COLUMN TRANS00004 TIME NOT NULL DEFAULT CURRENT_TIME , ", "bbox": {"l": 79.200005, "t": 302.67493, "r": 420.71759, "b": 310.60391, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "TRANSACTION_AMOUNT FOR COLUMN TRANS00005 DECIMAL(11, 2) NOT NULL , ", "bbox": {"l": 79.200005, "t": 313.65494, "r": 380.27789, "b": 321.58392, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "INSERT_TIMESTAMP FOR COLUMN INSER00001 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , ", "bbox": {"l": 79.200005, "t": 324.69525, "r": 546.53668, "b": 332.62424000000004, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "UPDATE_TIMESTAMP FOR COLUMN UPDAT00001 TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE ", "bbox": {"l": 79.200005, "t": 335.6752599999999, "r": 479.15729, "b": 343.60425, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , ", "bbox": {"l": 75.257378, "t": 346.65527, "r": 352.37787, "b": 354.58426, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "CONSTRAINT BANK_SCHEMA.TRANSACTION_ID_PK PRIMARY KEY( TRANSACTION_ID ) ) ; ", "bbox": {"l": 79.200005, "t": 357.69559, "r": 416.21759, "b": 365.62457, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "ALTER TABLE BANK_SCHEMA.TRANSACTIONS ", "bbox": {"l": 64.800003, "t": 379.65558, "r": 231.05878999999996, "b": 387.58456, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "ADD CONSTRAINT BANK_SCHEMA.TRANSACTIONS_ACCOUNT_ID_FK ", "bbox": {"l": 79.200005, "t": 390.69589, "r": 321.8382, "b": 398.62488, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "FOREIGN KEY( ACCOUNT_ID ) ", "bbox": {"l": 79.200005, "t": 401.6759, "r": 196.0191, "b": 409.60489, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "REFERENCES BANK_SCHEMA.ACCOUNTS ( ACCOUNT_ID ) ", "bbox": {"l": 79.200005, "t": 412.65591, "r": 290.3985, "b": 420.58490000000006, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "ON DELETE RESTRICT ", "bbox": {"l": 79.200005, "t": 423.69622999999996, "r": 164.5191, "b": 431.6252099999999, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "ON UPDATE RESTRICT ;", "bbox": {"l": 79.200005, "t": 434.67624, "r": 169.07941, "b": 442.60522, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "/* Permissions and Masks */", "bbox": {"l": 64.800003, "t": 456.69653, "r": 186.11909, "b": 464.62552, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800003, "t": 478.65652, "r": 446.75726000000003, "b": 486.58551, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) ", "bbox": {"l": 79.200005, "t": 489.69684, "r": 528.59698, "b": 497.62582, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "OR ", "bbox": {"l": 64.800003, "t": 500.67685, "r": 78.300003, "b": 508.60583, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800003, "t": 511.65686, "r": 361.37787, "b": 519.5858499999999, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "AND ( C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ) ) ", "bbox": {"l": 64.800003, "t": 522.69717, "r": 374.87787, "b": 530.62616, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ENFORCED FOR ALL ACCESS ", "bbox": {"l": 79.200005, "t": 533.67715, "r": 196.0191, "b": 541.60617, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ENABLE ; ", "bbox": {"l": 79.200005, "t": 544.65717, "r": 124.1397, "b": 552.58617, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "CREATE MASK BANK_SCHEMA.MASK_EMAIL_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800003, "t": 566.67746, "r": 415.31757, "b": 574.60646, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "FOR COLUMN CUSTOMER_EMAIL ", "bbox": {"l": 79.200005, "t": 577.6574599999999, "r": 196.0191, "b": 585.58646, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "RETURN CASE ", "bbox": {"l": 79.200005, "t": 588.69775, "r": 137.63971, "b": 596.62675, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800003, "t": 599.67775, "r": 361.37787, "b": 607.60675, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "THEN C . CUSTOMER_EMAIL ", "bbox": {"l": 64.800003, "t": 610.65775, "r": 172.61909, "b": 618.5867499999999, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800003, "t": 621.69804, "r": 374.87787, "b": 629.62704, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "THEN C . CUSTOMER_EMAIL ", "bbox": {"l": 64.800003, "t": 632.67804, "r": 172.61909, "b": 640.60704, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ELSE '****@****' ", "bbox": {"l": 64.800003, "t": 643.71834, "r": 141.1794, "b": 651.64734, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "END ", "bbox": {"l": 64.800003, "t": 654.6983299999999, "r": 96.2397, "b": 662.62733, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ENABLE ; ", "bbox": {"l": 79.200005, "t": 665.67833, "r": 124.1397, "b": 673.60733, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "CREATE MASK BANK_SCHEMA.MASK_TAX_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800003, "t": 687.69863, "r": 419.81757, "b": 695.627632, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "FOR COLUMN CUSTOMER_TAX_ID ", "bbox": {"l": 79.200005, "t": 698.678635, "r": 200.5191, "b": 706.607635, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "RETURN CASE ", "bbox": {"l": 79.200005, "t": 709.718933, "r": 137.63971, "b": 717.647934, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800003, "t": 720.698936, "r": 361.37787, "b": 728.627941, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 138, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 256.79608154296875, "t": 754.73193359375, "r": 517.90582, "b": 763.9072265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9521042704582214, "cells": [{"id": 0, "text": "Appendix A. Database definitions for the RCAC banking example ", "bbox": {"l": 257.57999, "t": 755.538002, "r": 517.90582, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Appendix A. Database definitions for the RCAC banking example"}, {"label": "page_footer", "id": 1, "page_no": 138, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.0982055664062, "t": 754.3765869140625, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9163233041763306, "cells": [{"id": 1, "text": "123", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "123"}, {"label": "code", "id": 2, "page_no": 138, "cluster": {"id": 2, "label": "code", "bbox": {"l": 62.7338981628418, "t": 71.67296999999996, "r": 546.53668, "b": 730.2366943359375, "coord_origin": "TOPLEFT"}, "confidence": 0.7971411347389221, "cells": [{"id": 2, "text": "ALTER TABLE BANK_SCHEMA.ACCOUNTS ", "bbox": {"l": 64.800003, "t": 71.67296999999996, "r": 213.11909, "b": 79.60199, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "ADD CONSTRAINT BANK_SCHEMA.ACCOUNT_CUSTOMER_ID_FK ", "bbox": {"l": 79.200005, "t": 82.65295000000015, "r": 303.8985, "b": 90.58196999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "FOREIGN KEY( CUSTOMER_ID ) ", "bbox": {"l": 79.200005, "t": 93.63292999999999, "r": 200.5191, "b": 101.56195000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "REFERENCES BANK_SCHEMA.CUSTOMERS ( CUSTO00001 ) ", "bbox": {"l": 79.200005, "t": 104.67322000000001, "r": 294.8985, "b": 112.60222999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "ON DELETE RESTRICT ", "bbox": {"l": 79.200005, "t": 115.65319999999997, "r": 164.5191, "b": 123.58220999999992, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ON UPDATE RESTRICT ; ", "bbox": {"l": 79.200005, "t": 126.63318000000015, "r": 173.57941, "b": 134.56219, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "ALTER TABLE BANK_SCHEMA.ACCOUNTS ", "bbox": {"l": 64.800003, "t": 148.6535, "r": 213.11909, "b": 156.58252000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "ADD CONSTRAINT BANK_SCHEMA.ACCOUNT_NUMBER_CHECK ", "bbox": {"l": 79.200005, "t": 159.69379000000004, "r": 294.8985, "b": 167.62279999999998, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "CHECK( ACCOUNT_NUMBER <> '*****' ) ", "bbox": {"l": 79.200005, "t": 170.67377, "r": 245.4588, "b": 178.60278000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ON UPDATE VIOLATION PRESERVE ACCOUNT_NUMBER ;", "bbox": {"l": 79.200005, "t": 181.65374999999995, "r": 285.8985, "b": 189.58276, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CREATE TABLE BANK_SCHEMA.TRANSACTIONS FOR SYSTEM NAME TRANS ( ", "bbox": {"l": 64.800003, "t": 203.67407000000003, "r": 343.43817, "b": 211.60308999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "TRANSACTION_ID FOR COLUMN TRANS00001 INTEGER GENERATED ALWAYS AS IDENTITY ( ", "bbox": {"l": 79.200005, "t": 214.65404999999998, "r": 420.71759, "b": 222.58307000000002, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "START WITH 1 INCREMENT BY 1 ", "bbox": {"l": 79.200005, "t": 225.69434, "r": 205.0191, "b": 233.62334999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "NO MINVALUE NO MAXVALUE ", "bbox": {"l": 79.200005, "t": 236.67431999999997, "r": 187.0191, "b": 244.60333000000003, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "NO CYCLE NO ORDER ", "bbox": {"l": 79.200005, "t": 247.65430000000003, "r": 160.07941, "b": 255.58330999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "CACHE 20 ), ", "bbox": {"l": 79.200005, "t": 258.69458, "r": 133.13971, "b": 266.6236, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ACCOUNT_ID INTEGER NOT NULL , ", "bbox": {"l": 79.200005, "t": 269.67456000000004, "r": 214.0191, "b": 277.60357999999997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "TRANSACTION_TYPE FOR COLUMN TRANS00002 CHAR(1) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 280.6546000000001, "r": 380.27789, "b": 288.58359, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "TRANSACTION_DATE FOR COLUMN TRANS00003 DATE NOT NULL DEFAULT CURRENT_DATE , ", "bbox": {"l": 79.200005, "t": 291.69492, "r": 420.71759, "b": 299.6239, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "TRANSACTION_TIME FOR COLUMN TRANS00004 TIME NOT NULL DEFAULT CURRENT_TIME , ", "bbox": {"l": 79.200005, "t": 302.67493, "r": 420.71759, "b": 310.60391, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "TRANSACTION_AMOUNT FOR COLUMN TRANS00005 DECIMAL(11, 2) NOT NULL , ", "bbox": {"l": 79.200005, "t": 313.65494, "r": 380.27789, "b": 321.58392, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "INSERT_TIMESTAMP FOR COLUMN INSER00001 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , ", "bbox": {"l": 79.200005, "t": 324.69525, "r": 546.53668, "b": 332.62424000000004, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "UPDATE_TIMESTAMP FOR COLUMN UPDAT00001 TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE ", "bbox": {"l": 79.200005, "t": 335.6752599999999, "r": 479.15729, "b": 343.60425, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , ", "bbox": {"l": 75.257378, "t": 346.65527, "r": 352.37787, "b": 354.58426, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "CONSTRAINT BANK_SCHEMA.TRANSACTION_ID_PK PRIMARY KEY( TRANSACTION_ID ) ) ; ", "bbox": {"l": 79.200005, "t": 357.69559, "r": 416.21759, "b": 365.62457, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "ALTER TABLE BANK_SCHEMA.TRANSACTIONS ", "bbox": {"l": 64.800003, "t": 379.65558, "r": 231.05878999999996, "b": 387.58456, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "ADD CONSTRAINT BANK_SCHEMA.TRANSACTIONS_ACCOUNT_ID_FK ", "bbox": {"l": 79.200005, "t": 390.69589, "r": 321.8382, "b": 398.62488, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "FOREIGN KEY( ACCOUNT_ID ) ", "bbox": {"l": 79.200005, "t": 401.6759, "r": 196.0191, "b": 409.60489, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "REFERENCES BANK_SCHEMA.ACCOUNTS ( ACCOUNT_ID ) ", "bbox": {"l": 79.200005, "t": 412.65591, "r": 290.3985, "b": 420.58490000000006, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "ON DELETE RESTRICT ", "bbox": {"l": 79.200005, "t": 423.69622999999996, "r": 164.5191, "b": 431.6252099999999, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "ON UPDATE RESTRICT ;", "bbox": {"l": 79.200005, "t": 434.67624, "r": 169.07941, "b": 442.60522, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "/* Permissions and Masks */", "bbox": {"l": 64.800003, "t": 456.69653, "r": 186.11909, "b": 464.62552, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800003, "t": 478.65652, "r": 446.75726000000003, "b": 486.58551, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) ", "bbox": {"l": 79.200005, "t": 489.69684, "r": 528.59698, "b": 497.62582, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "OR ", "bbox": {"l": 64.800003, "t": 500.67685, "r": 78.300003, "b": 508.60583, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800003, "t": 511.65686, "r": 361.37787, "b": 519.5858499999999, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "AND ( C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ) ) ", "bbox": {"l": 64.800003, "t": 522.69717, "r": 374.87787, "b": 530.62616, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ENFORCED FOR ALL ACCESS ", "bbox": {"l": 79.200005, "t": 533.67715, "r": 196.0191, "b": 541.60617, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ENABLE ; ", "bbox": {"l": 79.200005, "t": 544.65717, "r": 124.1397, "b": 552.58617, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "CREATE MASK BANK_SCHEMA.MASK_EMAIL_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800003, "t": 566.67746, "r": 415.31757, "b": 574.60646, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "FOR COLUMN CUSTOMER_EMAIL ", "bbox": {"l": 79.200005, "t": 577.6574599999999, "r": 196.0191, "b": 585.58646, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "RETURN CASE ", "bbox": {"l": 79.200005, "t": 588.69775, "r": 137.63971, "b": 596.62675, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800003, "t": 599.67775, "r": 361.37787, "b": 607.60675, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "THEN C . CUSTOMER_EMAIL ", "bbox": {"l": 64.800003, "t": 610.65775, "r": 172.61909, "b": 618.5867499999999, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800003, "t": 621.69804, "r": 374.87787, "b": 629.62704, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "THEN C . CUSTOMER_EMAIL ", "bbox": {"l": 64.800003, "t": 632.67804, "r": 172.61909, "b": 640.60704, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ELSE '****@****' ", "bbox": {"l": 64.800003, "t": 643.71834, "r": 141.1794, "b": 651.64734, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "END ", "bbox": {"l": 64.800003, "t": 654.6983299999999, "r": 96.2397, "b": 662.62733, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ENABLE ; ", "bbox": {"l": 79.200005, "t": 665.67833, "r": 124.1397, "b": 673.60733, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "CREATE MASK BANK_SCHEMA.MASK_TAX_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800003, "t": 687.69863, "r": 419.81757, "b": 695.627632, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "FOR COLUMN CUSTOMER_TAX_ID ", "bbox": {"l": 79.200005, "t": 698.678635, "r": 200.5191, "b": 706.607635, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "RETURN CASE ", "bbox": {"l": 79.200005, "t": 709.718933, "r": 137.63971, "b": 717.647934, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800003, "t": 720.698936, "r": 361.37787, "b": 728.627941, "coord_origin": "TOPLEFT"}}]}, "text": "ALTER TABLE BANK_SCHEMA.ACCOUNTS ADD CONSTRAINT BANK_SCHEMA.ACCOUNT_CUSTOMER_ID_FK FOREIGN KEY( CUSTOMER_ID ) REFERENCES BANK_SCHEMA.CUSTOMERS ( CUSTO00001 ) ON DELETE RESTRICT ON UPDATE RESTRICT ; ALTER TABLE BANK_SCHEMA.ACCOUNTS ADD CONSTRAINT BANK_SCHEMA.ACCOUNT_NUMBER_CHECK CHECK( ACCOUNT_NUMBER <> '*****' ) ON UPDATE VIOLATION PRESERVE ACCOUNT_NUMBER ; CREATE TABLE BANK_SCHEMA.TRANSACTIONS FOR SYSTEM NAME TRANS ( TRANSACTION_ID FOR COLUMN TRANS00001 INTEGER GENERATED ALWAYS AS IDENTITY ( START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE NO CYCLE NO ORDER CACHE 20 ), ACCOUNT_ID INTEGER NOT NULL , TRANSACTION_TYPE FOR COLUMN TRANS00002 CHAR(1) CCSID 37 NOT NULL , TRANSACTION_DATE FOR COLUMN TRANS00003 DATE NOT NULL DEFAULT CURRENT_DATE , TRANSACTION_TIME FOR COLUMN TRANS00004 TIME NOT NULL DEFAULT CURRENT_TIME , TRANSACTION_AMOUNT FOR COLUMN TRANS00005 DECIMAL(11, 2) NOT NULL , INSERT_TIMESTAMP FOR COLUMN INSER00001 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , UPDATE_TIMESTAMP FOR COLUMN UPDAT00001 TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , CONSTRAINT BANK_SCHEMA.TRANSACTION_ID_PK PRIMARY KEY( TRANSACTION_ID ) ) ; ALTER TABLE BANK_SCHEMA.TRANSACTIONS ADD CONSTRAINT BANK_SCHEMA.TRANSACTIONS_ACCOUNT_ID_FK FOREIGN KEY( ACCOUNT_ID ) REFERENCES BANK_SCHEMA.ACCOUNTS ( ACCOUNT_ID ) ON DELETE RESTRICT ON UPDATE RESTRICT ; /* Permissions and Masks */ CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) OR ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 AND ( C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ) ) ENFORCED FOR ALL ACCESS ENABLE ; CREATE MASK BANK_SCHEMA.MASK_EMAIL_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_EMAIL RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_EMAIL WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_EMAIL ELSE '****@****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_TAX_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_TAX_ID RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1"}], "body": [{"label": "code", "id": 2, "page_no": 138, "cluster": {"id": 2, "label": "code", "bbox": {"l": 62.7338981628418, "t": 71.67296999999996, "r": 546.53668, "b": 730.2366943359375, "coord_origin": "TOPLEFT"}, "confidence": 0.7971411347389221, "cells": [{"id": 2, "text": "ALTER TABLE BANK_SCHEMA.ACCOUNTS ", "bbox": {"l": 64.800003, "t": 71.67296999999996, "r": 213.11909, "b": 79.60199, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "ADD CONSTRAINT BANK_SCHEMA.ACCOUNT_CUSTOMER_ID_FK ", "bbox": {"l": 79.200005, "t": 82.65295000000015, "r": 303.8985, "b": 90.58196999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "FOREIGN KEY( CUSTOMER_ID ) ", "bbox": {"l": 79.200005, "t": 93.63292999999999, "r": 200.5191, "b": 101.56195000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "REFERENCES BANK_SCHEMA.CUSTOMERS ( CUSTO00001 ) ", "bbox": {"l": 79.200005, "t": 104.67322000000001, "r": 294.8985, "b": 112.60222999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "ON DELETE RESTRICT ", "bbox": {"l": 79.200005, "t": 115.65319999999997, "r": 164.5191, "b": 123.58220999999992, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ON UPDATE RESTRICT ; ", "bbox": {"l": 79.200005, "t": 126.63318000000015, "r": 173.57941, "b": 134.56219, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "ALTER TABLE BANK_SCHEMA.ACCOUNTS ", "bbox": {"l": 64.800003, "t": 148.6535, "r": 213.11909, "b": 156.58252000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "ADD CONSTRAINT BANK_SCHEMA.ACCOUNT_NUMBER_CHECK ", "bbox": {"l": 79.200005, "t": 159.69379000000004, "r": 294.8985, "b": 167.62279999999998, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "CHECK( ACCOUNT_NUMBER <> '*****' ) ", "bbox": {"l": 79.200005, "t": 170.67377, "r": 245.4588, "b": 178.60278000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ON UPDATE VIOLATION PRESERVE ACCOUNT_NUMBER ;", "bbox": {"l": 79.200005, "t": 181.65374999999995, "r": 285.8985, "b": 189.58276, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CREATE TABLE BANK_SCHEMA.TRANSACTIONS FOR SYSTEM NAME TRANS ( ", "bbox": {"l": 64.800003, "t": 203.67407000000003, "r": 343.43817, "b": 211.60308999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "TRANSACTION_ID FOR COLUMN TRANS00001 INTEGER GENERATED ALWAYS AS IDENTITY ( ", "bbox": {"l": 79.200005, "t": 214.65404999999998, "r": 420.71759, "b": 222.58307000000002, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "START WITH 1 INCREMENT BY 1 ", "bbox": {"l": 79.200005, "t": 225.69434, "r": 205.0191, "b": 233.62334999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "NO MINVALUE NO MAXVALUE ", "bbox": {"l": 79.200005, "t": 236.67431999999997, "r": 187.0191, "b": 244.60333000000003, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "NO CYCLE NO ORDER ", "bbox": {"l": 79.200005, "t": 247.65430000000003, "r": 160.07941, "b": 255.58330999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "CACHE 20 ), ", "bbox": {"l": 79.200005, "t": 258.69458, "r": 133.13971, "b": 266.6236, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ACCOUNT_ID INTEGER NOT NULL , ", "bbox": {"l": 79.200005, "t": 269.67456000000004, "r": 214.0191, "b": 277.60357999999997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "TRANSACTION_TYPE FOR COLUMN TRANS00002 CHAR(1) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 280.6546000000001, "r": 380.27789, "b": 288.58359, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "TRANSACTION_DATE FOR COLUMN TRANS00003 DATE NOT NULL DEFAULT CURRENT_DATE , ", "bbox": {"l": 79.200005, "t": 291.69492, "r": 420.71759, "b": 299.6239, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "TRANSACTION_TIME FOR COLUMN TRANS00004 TIME NOT NULL DEFAULT CURRENT_TIME , ", "bbox": {"l": 79.200005, "t": 302.67493, "r": 420.71759, "b": 310.60391, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "TRANSACTION_AMOUNT FOR COLUMN TRANS00005 DECIMAL(11, 2) NOT NULL , ", "bbox": {"l": 79.200005, "t": 313.65494, "r": 380.27789, "b": 321.58392, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "INSERT_TIMESTAMP FOR COLUMN INSER00001 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , ", "bbox": {"l": 79.200005, "t": 324.69525, "r": 546.53668, "b": 332.62424000000004, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "UPDATE_TIMESTAMP FOR COLUMN UPDAT00001 TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE ", "bbox": {"l": 79.200005, "t": 335.6752599999999, "r": 479.15729, "b": 343.60425, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , ", "bbox": {"l": 75.257378, "t": 346.65527, "r": 352.37787, "b": 354.58426, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "CONSTRAINT BANK_SCHEMA.TRANSACTION_ID_PK PRIMARY KEY( TRANSACTION_ID ) ) ; ", "bbox": {"l": 79.200005, "t": 357.69559, "r": 416.21759, "b": 365.62457, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "ALTER TABLE BANK_SCHEMA.TRANSACTIONS ", "bbox": {"l": 64.800003, "t": 379.65558, "r": 231.05878999999996, "b": 387.58456, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "ADD CONSTRAINT BANK_SCHEMA.TRANSACTIONS_ACCOUNT_ID_FK ", "bbox": {"l": 79.200005, "t": 390.69589, "r": 321.8382, "b": 398.62488, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "FOREIGN KEY( ACCOUNT_ID ) ", "bbox": {"l": 79.200005, "t": 401.6759, "r": 196.0191, "b": 409.60489, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "REFERENCES BANK_SCHEMA.ACCOUNTS ( ACCOUNT_ID ) ", "bbox": {"l": 79.200005, "t": 412.65591, "r": 290.3985, "b": 420.58490000000006, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "ON DELETE RESTRICT ", "bbox": {"l": 79.200005, "t": 423.69622999999996, "r": 164.5191, "b": 431.6252099999999, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "ON UPDATE RESTRICT ;", "bbox": {"l": 79.200005, "t": 434.67624, "r": 169.07941, "b": 442.60522, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "/* Permissions and Masks */", "bbox": {"l": 64.800003, "t": 456.69653, "r": 186.11909, "b": 464.62552, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800003, "t": 478.65652, "r": 446.75726000000003, "b": 486.58551, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) ", "bbox": {"l": 79.200005, "t": 489.69684, "r": 528.59698, "b": 497.62582, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "OR ", "bbox": {"l": 64.800003, "t": 500.67685, "r": 78.300003, "b": 508.60583, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800003, "t": 511.65686, "r": 361.37787, "b": 519.5858499999999, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "AND ( C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ) ) ", "bbox": {"l": 64.800003, "t": 522.69717, "r": 374.87787, "b": 530.62616, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ENFORCED FOR ALL ACCESS ", "bbox": {"l": 79.200005, "t": 533.67715, "r": 196.0191, "b": 541.60617, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ENABLE ; ", "bbox": {"l": 79.200005, "t": 544.65717, "r": 124.1397, "b": 552.58617, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "CREATE MASK BANK_SCHEMA.MASK_EMAIL_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800003, "t": 566.67746, "r": 415.31757, "b": 574.60646, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "FOR COLUMN CUSTOMER_EMAIL ", "bbox": {"l": 79.200005, "t": 577.6574599999999, "r": 196.0191, "b": 585.58646, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "RETURN CASE ", "bbox": {"l": 79.200005, "t": 588.69775, "r": 137.63971, "b": 596.62675, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800003, "t": 599.67775, "r": 361.37787, "b": 607.60675, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "THEN C . CUSTOMER_EMAIL ", "bbox": {"l": 64.800003, "t": 610.65775, "r": 172.61909, "b": 618.5867499999999, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800003, "t": 621.69804, "r": 374.87787, "b": 629.62704, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "THEN C . CUSTOMER_EMAIL ", "bbox": {"l": 64.800003, "t": 632.67804, "r": 172.61909, "b": 640.60704, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ELSE '****@****' ", "bbox": {"l": 64.800003, "t": 643.71834, "r": 141.1794, "b": 651.64734, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "END ", "bbox": {"l": 64.800003, "t": 654.6983299999999, "r": 96.2397, "b": 662.62733, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ENABLE ; ", "bbox": {"l": 79.200005, "t": 665.67833, "r": 124.1397, "b": 673.60733, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "CREATE MASK BANK_SCHEMA.MASK_TAX_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800003, "t": 687.69863, "r": 419.81757, "b": 695.627632, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "FOR COLUMN CUSTOMER_TAX_ID ", "bbox": {"l": 79.200005, "t": 698.678635, "r": 200.5191, "b": 706.607635, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "RETURN CASE ", "bbox": {"l": 79.200005, "t": 709.718933, "r": 137.63971, "b": 717.647934, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800003, "t": 720.698936, "r": 361.37787, "b": 728.627941, "coord_origin": "TOPLEFT"}}]}, "text": "ALTER TABLE BANK_SCHEMA.ACCOUNTS ADD CONSTRAINT BANK_SCHEMA.ACCOUNT_CUSTOMER_ID_FK FOREIGN KEY( CUSTOMER_ID ) REFERENCES BANK_SCHEMA.CUSTOMERS ( CUSTO00001 ) ON DELETE RESTRICT ON UPDATE RESTRICT ; ALTER TABLE BANK_SCHEMA.ACCOUNTS ADD CONSTRAINT BANK_SCHEMA.ACCOUNT_NUMBER_CHECK CHECK( ACCOUNT_NUMBER <> '*****' ) ON UPDATE VIOLATION PRESERVE ACCOUNT_NUMBER ; CREATE TABLE BANK_SCHEMA.TRANSACTIONS FOR SYSTEM NAME TRANS ( TRANSACTION_ID FOR COLUMN TRANS00001 INTEGER GENERATED ALWAYS AS IDENTITY ( START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE NO CYCLE NO ORDER CACHE 20 ), ACCOUNT_ID INTEGER NOT NULL , TRANSACTION_TYPE FOR COLUMN TRANS00002 CHAR(1) CCSID 37 NOT NULL , TRANSACTION_DATE FOR COLUMN TRANS00003 DATE NOT NULL DEFAULT CURRENT_DATE , TRANSACTION_TIME FOR COLUMN TRANS00004 TIME NOT NULL DEFAULT CURRENT_TIME , TRANSACTION_AMOUNT FOR COLUMN TRANS00005 DECIMAL(11, 2) NOT NULL , INSERT_TIMESTAMP FOR COLUMN INSER00001 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , UPDATE_TIMESTAMP FOR COLUMN UPDAT00001 TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , CONSTRAINT BANK_SCHEMA.TRANSACTION_ID_PK PRIMARY KEY( TRANSACTION_ID ) ) ; ALTER TABLE BANK_SCHEMA.TRANSACTIONS ADD CONSTRAINT BANK_SCHEMA.TRANSACTIONS_ACCOUNT_ID_FK FOREIGN KEY( ACCOUNT_ID ) REFERENCES BANK_SCHEMA.ACCOUNTS ( ACCOUNT_ID ) ON DELETE RESTRICT ON UPDATE RESTRICT ; /* Permissions and Masks */ CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) OR ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 AND ( C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ) ) ENFORCED FOR ALL ACCESS ENABLE ; CREATE MASK BANK_SCHEMA.MASK_EMAIL_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_EMAIL RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_EMAIL WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_EMAIL ELSE '****@****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_TAX_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_TAX_ID RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 138, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 256.79608154296875, "t": 754.73193359375, "r": 517.90582, "b": 763.9072265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9521042704582214, "cells": [{"id": 0, "text": "Appendix A. Database definitions for the RCAC banking example ", "bbox": {"l": 257.57999, "t": 755.538002, "r": 517.90582, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Appendix A. Database definitions for the RCAC banking example"}, {"label": "page_footer", "id": 1, "page_no": 138, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.0982055664062, "t": 754.3765869140625, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9163233041763306, "cells": [{"id": 1, "text": "123", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "123"}]}}, {"page_no": 139, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "124 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "THEN C . CUSTOMER_TAX_ID ", "bbox": {"l": 64.800308, "t": 71.67296999999996, "r": 177.1194, "b": 79.60199, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 ", "bbox": {"l": 64.800308, "t": 82.65295000000015, "r": 365.87817, "b": 90.58196999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( C . CUSTOMER_TAX_ID , 8 , 4 ) ) ", "bbox": {"l": 64.800308, "t": 93.63292999999999, "r": 392.81787, "b": 101.56195000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 104.67322000000001, "r": 374.87817, "b": 112.60222999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "THEN C . CUSTOMER_TAX_ID ", "bbox": {"l": 64.800308, "t": 115.65319999999997, "r": 177.1194, "b": 123.58220999999992, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ELSE 'XXX-XX-XXXX' ", "bbox": {"l": 64.800308, "t": 126.63318000000015, "r": 150.1797, "b": 134.56219, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "END ", "bbox": {"l": 64.800308, "t": 137.67345999999998, "r": 96.240005, "b": 145.60248, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 148.65344000000005, "r": 124.14001, "b": 156.58245999999997, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "CREATE MASK BANK_SCHEMA.MASK_DRIVERS_LICENSE_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 170.67377, "r": 460.25757, "b": 178.60278000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "FOR COLUMN CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 79.20031, "t": 181.65374999999995, "r": 272.45911, "b": 189.58276, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 192.69403, "r": 137.64001, "b": 200.62305000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 203.67400999999995, "r": 361.37817, "b": 211.60303, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 64.800308, "t": 214.65399000000002, "r": 249.0591, "b": 222.58300999999994, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 ", "bbox": {"l": 64.800308, "t": 225.69426999999996, "r": 365.87817, "b": 233.62329, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 64.800308, "t": 236.67426, "r": 249.0591, "b": 244.60326999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 247.65423999999996, "r": 374.87817, "b": 255.58325000000002, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 64.800308, "t": 258.69452, "r": 249.0591, "b": 266.62354000000005, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ELSE '*************' ", "bbox": {"l": 64.800308, "t": 269.67449999999997, "r": 159.1797, "b": 277.60352, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "END ", "bbox": {"l": 64.800308, "t": 280.65454, "r": 96.240005, "b": 288.58353, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 291.69485000000003, "r": 124.14001, "b": 299.62384, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "CREATE MASK BANK_SCHEMA.MASK_LOGIN_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 313.65485, "r": 428.81786999999997, "b": 321.58383, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "FOR COLUMN CUSTOMER_LOGIN_ID ", "bbox": {"l": 79.20031, "t": 324.69516, "r": 209.51941, "b": 332.62415, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 335.67517, "r": 137.64001, "b": 343.6041599999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 346.65518, "r": 361.37817, "b": 354.58417, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "THEN C . CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800308, "t": 357.69550000000004, "r": 186.1194, "b": 365.62448, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 368.67551, "r": 374.87817, "b": 376.60449, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "THEN C . CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800308, "t": 379.65552, "r": 186.1194, "b": 387.5845, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "ELSE '*****' ", "bbox": {"l": 64.800308, "t": 390.69583, "r": 123.24001, "b": 398.62482, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "END ", "bbox": {"l": 64.800308, "t": 401.67584, "r": 96.240005, "b": 409.60482999999994, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 412.65585, "r": 124.14001, "b": 420.58484, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 434.67615, "r": 469.25757, "b": 442.60513, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "FOR COLUMN CUSTOMER_SECURITY_QUESTION ", "bbox": {"l": 79.20031, "t": 445.65616000000006, "r": 249.95911, "b": 453.58514, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 456.6964699999999, "r": 137.64001, "b": 464.62546, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 467.67648, "r": 361.37817, "b": 475.60547, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "THEN C . CUSTOMER_SECURITY_QUESTION ", "bbox": {"l": 64.800308, "t": 478.65649, "r": 226.5591, "b": 486.58548, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 489.69681, "r": 374.87817, "b": 497.62579, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "THEN C . CUSTOMER_SECURITY_QUESTION ", "bbox": {"l": 64.800308, "t": 500.67682, "r": 226.5591, "b": 508.6058, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ELSE '*****' ", "bbox": {"l": 64.800308, "t": 511.65683, "r": 123.24001, "b": 519.58582, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "END ", "bbox": {"l": 64.800308, "t": 522.69714, "r": 96.240005, "b": 530.62613, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 533.6771200000001, "r": 124.14001, "b": 541.60614, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 555.69745, "r": 500.69727, "b": 563.62645, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "FOR COLUMN CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 79.20031, "t": 566.6774399999999, "r": 281.3988, "b": 574.60645, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 577.65744, "r": 137.64001, "b": 585.58644, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 588.6977400000001, "r": 361.37817, "b": 596.62674, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 64.800308, "t": 599.67773, "r": 258.05908, "b": 607.60674, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 610.65773, "r": 374.87817, "b": 618.58673, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 64.800308, "t": 621.69803, "r": 258.05908, "b": 629.62703, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "ELSE '*****' ", "bbox": {"l": 64.800308, "t": 632.6780200000001, "r": 123.24001, "b": 640.60703, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "END ", "bbox": {"l": 64.800308, "t": 643.71832, "r": 96.240005, "b": 651.64732, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 654.69832, "r": 124.14001, "b": 662.62732, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800308, "t": 676.71861, "r": 226.5591, "b": 684.64761, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ACTIVATE ROW ACCESS CONTROL ", "bbox": {"l": 79.20031, "t": 687.69862, "r": 214.01941, "b": 695.627617, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "ACTIVATE COLUMN ACCESS CONTROL ;", "bbox": {"l": 79.20031, "t": 698.678619, "r": 223.01941, "b": 706.60762, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.50080871582031, "t": 754.5338745117188, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8994000554084778, "cells": [{"id": 0, "text": "124 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 98.63966369628906, "t": 754.71435546875, "r": 339.882080078125, "b": 764.0100708007812, "coord_origin": "TOPLEFT"}, "confidence": 0.9430771470069885, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "code", "bbox": {"l": 62.60613250732422, "t": 69.35981750488281, "r": 500.69727, "b": 707.7635498046875, "coord_origin": "TOPLEFT"}, "confidence": 0.763217568397522, "cells": [{"id": 2, "text": "THEN C . CUSTOMER_TAX_ID ", "bbox": {"l": 64.800308, "t": 71.67296999999996, "r": 177.1194, "b": 79.60199, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 ", "bbox": {"l": 64.800308, "t": 82.65295000000015, "r": 365.87817, "b": 90.58196999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( C . CUSTOMER_TAX_ID , 8 , 4 ) ) ", "bbox": {"l": 64.800308, "t": 93.63292999999999, "r": 392.81787, "b": 101.56195000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 104.67322000000001, "r": 374.87817, "b": 112.60222999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "THEN C . CUSTOMER_TAX_ID ", "bbox": {"l": 64.800308, "t": 115.65319999999997, "r": 177.1194, "b": 123.58220999999992, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ELSE 'XXX-XX-XXXX' ", "bbox": {"l": 64.800308, "t": 126.63318000000015, "r": 150.1797, "b": 134.56219, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "END ", "bbox": {"l": 64.800308, "t": 137.67345999999998, "r": 96.240005, "b": 145.60248, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 148.65344000000005, "r": 124.14001, "b": 156.58245999999997, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "CREATE MASK BANK_SCHEMA.MASK_DRIVERS_LICENSE_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 170.67377, "r": 460.25757, "b": 178.60278000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "FOR COLUMN CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 79.20031, "t": 181.65374999999995, "r": 272.45911, "b": 189.58276, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 192.69403, "r": 137.64001, "b": 200.62305000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 203.67400999999995, "r": 361.37817, "b": 211.60303, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 64.800308, "t": 214.65399000000002, "r": 249.0591, "b": 222.58300999999994, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 ", "bbox": {"l": 64.800308, "t": 225.69426999999996, "r": 365.87817, "b": 233.62329, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 64.800308, "t": 236.67426, "r": 249.0591, "b": 244.60326999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 247.65423999999996, "r": 374.87817, "b": 255.58325000000002, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 64.800308, "t": 258.69452, "r": 249.0591, "b": 266.62354000000005, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ELSE '*************' ", "bbox": {"l": 64.800308, "t": 269.67449999999997, "r": 159.1797, "b": 277.60352, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "END ", "bbox": {"l": 64.800308, "t": 280.65454, "r": 96.240005, "b": 288.58353, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 291.69485000000003, "r": 124.14001, "b": 299.62384, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "CREATE MASK BANK_SCHEMA.MASK_LOGIN_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 313.65485, "r": 428.81786999999997, "b": 321.58383, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "FOR COLUMN CUSTOMER_LOGIN_ID ", "bbox": {"l": 79.20031, "t": 324.69516, "r": 209.51941, "b": 332.62415, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 335.67517, "r": 137.64001, "b": 343.6041599999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 346.65518, "r": 361.37817, "b": 354.58417, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "THEN C . CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800308, "t": 357.69550000000004, "r": 186.1194, "b": 365.62448, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 368.67551, "r": 374.87817, "b": 376.60449, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "THEN C . CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800308, "t": 379.65552, "r": 186.1194, "b": 387.5845, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "ELSE '*****' ", "bbox": {"l": 64.800308, "t": 390.69583, "r": 123.24001, "b": 398.62482, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "END ", "bbox": {"l": 64.800308, "t": 401.67584, "r": 96.240005, "b": 409.60482999999994, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 412.65585, "r": 124.14001, "b": 420.58484, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 434.67615, "r": 469.25757, "b": 442.60513, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "FOR COLUMN CUSTOMER_SECURITY_QUESTION ", "bbox": {"l": 79.20031, "t": 445.65616000000006, "r": 249.95911, "b": 453.58514, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 456.6964699999999, "r": 137.64001, "b": 464.62546, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 467.67648, "r": 361.37817, "b": 475.60547, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "THEN C . CUSTOMER_SECURITY_QUESTION ", "bbox": {"l": 64.800308, "t": 478.65649, "r": 226.5591, "b": 486.58548, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 489.69681, "r": 374.87817, "b": 497.62579, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "THEN C . CUSTOMER_SECURITY_QUESTION ", "bbox": {"l": 64.800308, "t": 500.67682, "r": 226.5591, "b": 508.6058, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ELSE '*****' ", "bbox": {"l": 64.800308, "t": 511.65683, "r": 123.24001, "b": 519.58582, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "END ", "bbox": {"l": 64.800308, "t": 522.69714, "r": 96.240005, "b": 530.62613, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 533.6771200000001, "r": 124.14001, "b": 541.60614, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 555.69745, "r": 500.69727, "b": 563.62645, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "FOR COLUMN CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 79.20031, "t": 566.6774399999999, "r": 281.3988, "b": 574.60645, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 577.65744, "r": 137.64001, "b": 585.58644, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 588.6977400000001, "r": 361.37817, "b": 596.62674, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 64.800308, "t": 599.67773, "r": 258.05908, "b": 607.60674, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 610.65773, "r": 374.87817, "b": 618.58673, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 64.800308, "t": 621.69803, "r": 258.05908, "b": 629.62703, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "ELSE '*****' ", "bbox": {"l": 64.800308, "t": 632.6780200000001, "r": 123.24001, "b": 640.60703, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "END ", "bbox": {"l": 64.800308, "t": 643.71832, "r": 96.240005, "b": 651.64732, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 654.69832, "r": 124.14001, "b": 662.62732, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800308, "t": 676.71861, "r": 226.5591, "b": 684.64761, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ACTIVATE ROW ACCESS CONTROL ", "bbox": {"l": 79.20031, "t": 687.69862, "r": 214.01941, "b": 695.627617, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "ACTIVATE COLUMN ACCESS CONTROL ;", "bbox": {"l": 79.20031, "t": 698.678619, "r": 223.01941, "b": 706.60762, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 139, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.50080871582031, "t": 754.5338745117188, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8994000554084778, "cells": [{"id": 0, "text": "124 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "124"}, {"label": "page_footer", "id": 1, "page_no": 139, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.63966369628906, "t": 754.71435546875, "r": 339.882080078125, "b": 764.0100708007812, "coord_origin": "TOPLEFT"}, "confidence": 0.9430771470069885, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "code", "id": 2, "page_no": 139, "cluster": {"id": 2, "label": "code", "bbox": {"l": 62.60613250732422, "t": 69.35981750488281, "r": 500.69727, "b": 707.7635498046875, "coord_origin": "TOPLEFT"}, "confidence": 0.763217568397522, "cells": [{"id": 2, "text": "THEN C . CUSTOMER_TAX_ID ", "bbox": {"l": 64.800308, "t": 71.67296999999996, "r": 177.1194, "b": 79.60199, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 ", "bbox": {"l": 64.800308, "t": 82.65295000000015, "r": 365.87817, "b": 90.58196999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( C . CUSTOMER_TAX_ID , 8 , 4 ) ) ", "bbox": {"l": 64.800308, "t": 93.63292999999999, "r": 392.81787, "b": 101.56195000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 104.67322000000001, "r": 374.87817, "b": 112.60222999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "THEN C . CUSTOMER_TAX_ID ", "bbox": {"l": 64.800308, "t": 115.65319999999997, "r": 177.1194, "b": 123.58220999999992, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ELSE 'XXX-XX-XXXX' ", "bbox": {"l": 64.800308, "t": 126.63318000000015, "r": 150.1797, "b": 134.56219, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "END ", "bbox": {"l": 64.800308, "t": 137.67345999999998, "r": 96.240005, "b": 145.60248, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 148.65344000000005, "r": 124.14001, "b": 156.58245999999997, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "CREATE MASK BANK_SCHEMA.MASK_DRIVERS_LICENSE_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 170.67377, "r": 460.25757, "b": 178.60278000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "FOR COLUMN CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 79.20031, "t": 181.65374999999995, "r": 272.45911, "b": 189.58276, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 192.69403, "r": 137.64001, "b": 200.62305000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 203.67400999999995, "r": 361.37817, "b": 211.60303, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 64.800308, "t": 214.65399000000002, "r": 249.0591, "b": 222.58300999999994, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 ", "bbox": {"l": 64.800308, "t": 225.69426999999996, "r": 365.87817, "b": 233.62329, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 64.800308, "t": 236.67426, "r": 249.0591, "b": 244.60326999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 247.65423999999996, "r": 374.87817, "b": 255.58325000000002, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 64.800308, "t": 258.69452, "r": 249.0591, "b": 266.62354000000005, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ELSE '*************' ", "bbox": {"l": 64.800308, "t": 269.67449999999997, "r": 159.1797, "b": 277.60352, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "END ", "bbox": {"l": 64.800308, "t": 280.65454, "r": 96.240005, "b": 288.58353, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 291.69485000000003, "r": 124.14001, "b": 299.62384, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "CREATE MASK BANK_SCHEMA.MASK_LOGIN_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 313.65485, "r": 428.81786999999997, "b": 321.58383, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "FOR COLUMN CUSTOMER_LOGIN_ID ", "bbox": {"l": 79.20031, "t": 324.69516, "r": 209.51941, "b": 332.62415, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 335.67517, "r": 137.64001, "b": 343.6041599999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 346.65518, "r": 361.37817, "b": 354.58417, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "THEN C . CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800308, "t": 357.69550000000004, "r": 186.1194, "b": 365.62448, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 368.67551, "r": 374.87817, "b": 376.60449, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "THEN C . CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800308, "t": 379.65552, "r": 186.1194, "b": 387.5845, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "ELSE '*****' ", "bbox": {"l": 64.800308, "t": 390.69583, "r": 123.24001, "b": 398.62482, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "END ", "bbox": {"l": 64.800308, "t": 401.67584, "r": 96.240005, "b": 409.60482999999994, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 412.65585, "r": 124.14001, "b": 420.58484, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 434.67615, "r": 469.25757, "b": 442.60513, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "FOR COLUMN CUSTOMER_SECURITY_QUESTION ", "bbox": {"l": 79.20031, "t": 445.65616000000006, "r": 249.95911, "b": 453.58514, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 456.6964699999999, "r": 137.64001, "b": 464.62546, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 467.67648, "r": 361.37817, "b": 475.60547, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "THEN C . CUSTOMER_SECURITY_QUESTION ", "bbox": {"l": 64.800308, "t": 478.65649, "r": 226.5591, "b": 486.58548, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 489.69681, "r": 374.87817, "b": 497.62579, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "THEN C . CUSTOMER_SECURITY_QUESTION ", "bbox": {"l": 64.800308, "t": 500.67682, "r": 226.5591, "b": 508.6058, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ELSE '*****' ", "bbox": {"l": 64.800308, "t": 511.65683, "r": 123.24001, "b": 519.58582, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "END ", "bbox": {"l": 64.800308, "t": 522.69714, "r": 96.240005, "b": 530.62613, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 533.6771200000001, "r": 124.14001, "b": 541.60614, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 555.69745, "r": 500.69727, "b": 563.62645, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "FOR COLUMN CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 79.20031, "t": 566.6774399999999, "r": 281.3988, "b": 574.60645, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 577.65744, "r": 137.64001, "b": 585.58644, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 588.6977400000001, "r": 361.37817, "b": 596.62674, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 64.800308, "t": 599.67773, "r": 258.05908, "b": 607.60674, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 610.65773, "r": 374.87817, "b": 618.58673, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 64.800308, "t": 621.69803, "r": 258.05908, "b": 629.62703, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "ELSE '*****' ", "bbox": {"l": 64.800308, "t": 632.6780200000001, "r": 123.24001, "b": 640.60703, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "END ", "bbox": {"l": 64.800308, "t": 643.71832, "r": 96.240005, "b": 651.64732, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 654.69832, "r": 124.14001, "b": 662.62732, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800308, "t": 676.71861, "r": 226.5591, "b": 684.64761, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ACTIVATE ROW ACCESS CONTROL ", "bbox": {"l": 79.20031, "t": 687.69862, "r": 214.01941, "b": 695.627617, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "ACTIVATE COLUMN ACCESS CONTROL ;", "bbox": {"l": 79.20031, "t": 698.678619, "r": 223.01941, "b": 706.60762, "coord_origin": "TOPLEFT"}}]}, "text": "THEN C . CUSTOMER_TAX_ID WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( C . CUSTOMER_TAX_ID , 8 , 4 ) ) WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_TAX_ID ELSE 'XXX-XX-XXXX' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_DRIVERS_LICENSE_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_DRIVERS_LICENSE_NUMBER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ELSE '*************' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_LOGIN_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_LOGIN_ID RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_LOGIN_ID WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_LOGIN_ID ELSE '*****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_SECURITY_QUESTION RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION ELSE '*****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_SECURITY_QUESTION_ANSWER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ELSE '*****' END ENABLE ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL ;"}], "body": [{"label": "code", "id": 2, "page_no": 139, "cluster": {"id": 2, "label": "code", "bbox": {"l": 62.60613250732422, "t": 69.35981750488281, "r": 500.69727, "b": 707.7635498046875, "coord_origin": "TOPLEFT"}, "confidence": 0.763217568397522, "cells": [{"id": 2, "text": "THEN C . CUSTOMER_TAX_ID ", "bbox": {"l": 64.800308, "t": 71.67296999999996, "r": 177.1194, "b": 79.60199, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 ", "bbox": {"l": 64.800308, "t": 82.65295000000015, "r": 365.87817, "b": 90.58196999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( C . CUSTOMER_TAX_ID , 8 , 4 ) ) ", "bbox": {"l": 64.800308, "t": 93.63292999999999, "r": 392.81787, "b": 101.56195000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 104.67322000000001, "r": 374.87817, "b": 112.60222999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "THEN C . CUSTOMER_TAX_ID ", "bbox": {"l": 64.800308, "t": 115.65319999999997, "r": 177.1194, "b": 123.58220999999992, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ELSE 'XXX-XX-XXXX' ", "bbox": {"l": 64.800308, "t": 126.63318000000015, "r": 150.1797, "b": 134.56219, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "END ", "bbox": {"l": 64.800308, "t": 137.67345999999998, "r": 96.240005, "b": 145.60248, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 148.65344000000005, "r": 124.14001, "b": 156.58245999999997, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "CREATE MASK BANK_SCHEMA.MASK_DRIVERS_LICENSE_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 170.67377, "r": 460.25757, "b": 178.60278000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "FOR COLUMN CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 79.20031, "t": 181.65374999999995, "r": 272.45911, "b": 189.58276, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 192.69403, "r": 137.64001, "b": 200.62305000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 203.67400999999995, "r": 361.37817, "b": 211.60303, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 64.800308, "t": 214.65399000000002, "r": 249.0591, "b": 222.58300999999994, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 ", "bbox": {"l": 64.800308, "t": 225.69426999999996, "r": 365.87817, "b": 233.62329, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 64.800308, "t": 236.67426, "r": 249.0591, "b": 244.60326999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 247.65423999999996, "r": 374.87817, "b": 255.58325000000002, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 64.800308, "t": 258.69452, "r": 249.0591, "b": 266.62354000000005, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ELSE '*************' ", "bbox": {"l": 64.800308, "t": 269.67449999999997, "r": 159.1797, "b": 277.60352, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "END ", "bbox": {"l": 64.800308, "t": 280.65454, "r": 96.240005, "b": 288.58353, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 291.69485000000003, "r": 124.14001, "b": 299.62384, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "CREATE MASK BANK_SCHEMA.MASK_LOGIN_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 313.65485, "r": 428.81786999999997, "b": 321.58383, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "FOR COLUMN CUSTOMER_LOGIN_ID ", "bbox": {"l": 79.20031, "t": 324.69516, "r": 209.51941, "b": 332.62415, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 335.67517, "r": 137.64001, "b": 343.6041599999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 346.65518, "r": 361.37817, "b": 354.58417, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "THEN C . CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800308, "t": 357.69550000000004, "r": 186.1194, "b": 365.62448, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 368.67551, "r": 374.87817, "b": 376.60449, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "THEN C . CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800308, "t": 379.65552, "r": 186.1194, "b": 387.5845, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "ELSE '*****' ", "bbox": {"l": 64.800308, "t": 390.69583, "r": 123.24001, "b": 398.62482, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "END ", "bbox": {"l": 64.800308, "t": 401.67584, "r": 96.240005, "b": 409.60482999999994, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 412.65585, "r": 124.14001, "b": 420.58484, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 434.67615, "r": 469.25757, "b": 442.60513, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "FOR COLUMN CUSTOMER_SECURITY_QUESTION ", "bbox": {"l": 79.20031, "t": 445.65616000000006, "r": 249.95911, "b": 453.58514, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 456.6964699999999, "r": 137.64001, "b": 464.62546, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 467.67648, "r": 361.37817, "b": 475.60547, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "THEN C . CUSTOMER_SECURITY_QUESTION ", "bbox": {"l": 64.800308, "t": 478.65649, "r": 226.5591, "b": 486.58548, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 489.69681, "r": 374.87817, "b": 497.62579, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "THEN C . CUSTOMER_SECURITY_QUESTION ", "bbox": {"l": 64.800308, "t": 500.67682, "r": 226.5591, "b": 508.6058, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ELSE '*****' ", "bbox": {"l": 64.800308, "t": 511.65683, "r": 123.24001, "b": 519.58582, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "END ", "bbox": {"l": 64.800308, "t": 522.69714, "r": 96.240005, "b": 530.62613, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 533.6771200000001, "r": 124.14001, "b": 541.60614, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 555.69745, "r": 500.69727, "b": 563.62645, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "FOR COLUMN CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 79.20031, "t": 566.6774399999999, "r": 281.3988, "b": 574.60645, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 577.65744, "r": 137.64001, "b": 585.58644, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 588.6977400000001, "r": 361.37817, "b": 596.62674, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 64.800308, "t": 599.67773, "r": 258.05908, "b": 607.60674, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 610.65773, "r": 374.87817, "b": 618.58673, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 64.800308, "t": 621.69803, "r": 258.05908, "b": 629.62703, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "ELSE '*****' ", "bbox": {"l": 64.800308, "t": 632.6780200000001, "r": 123.24001, "b": 640.60703, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "END ", "bbox": {"l": 64.800308, "t": 643.71832, "r": 96.240005, "b": 651.64732, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 654.69832, "r": 124.14001, "b": 662.62732, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800308, "t": 676.71861, "r": 226.5591, "b": 684.64761, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ACTIVATE ROW ACCESS CONTROL ", "bbox": {"l": 79.20031, "t": 687.69862, "r": 214.01941, "b": 695.627617, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "ACTIVATE COLUMN ACCESS CONTROL ;", "bbox": {"l": 79.20031, "t": 698.678619, "r": 223.01941, "b": 706.60762, "coord_origin": "TOPLEFT"}}]}, "text": "THEN C . CUSTOMER_TAX_ID WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( C . CUSTOMER_TAX_ID , 8 , 4 ) ) WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_TAX_ID ELSE 'XXX-XX-XXXX' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_DRIVERS_LICENSE_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_DRIVERS_LICENSE_NUMBER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ELSE '*************' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_LOGIN_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_LOGIN_ID RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_LOGIN_ID WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_LOGIN_ID ELSE '*****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_SECURITY_QUESTION RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION ELSE '*****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_SECURITY_QUESTION_ANSWER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ELSE '*****' END ENABLE ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL ;"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 139, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.50080871582031, "t": 754.5338745117188, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8994000554084778, "cells": [{"id": 0, "text": "124 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "124"}, {"label": "page_footer", "id": 1, "page_no": 139, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.63966369628906, "t": 754.71435546875, "r": 339.882080078125, "b": 764.0100708007812, "coord_origin": "TOPLEFT"}, "confidence": 0.9430771470069885, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 140, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Appendix A. Database definitions for the RCAC banking example ", "bbox": {"l": 257.57999, "t": 755.538002, "r": 517.90582, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "125", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_ACCOUNTS ON BANK_SCHEMA.ACCOUNTS AS A ", "bbox": {"l": 64.800003, "t": 71.67296999999996, "r": 437.75726000000003, "b": 79.60199, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) ", "bbox": {"l": 79.200005, "t": 82.65295000000015, "r": 528.59698, "b": 90.58196999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "OR ", "bbox": {"l": 64.800003, "t": 93.63292999999999, "r": 78.300003, "b": 101.56195000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800003, "t": 104.67322000000001, "r": 361.37787, "b": 112.60222999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "AND ( A . CUSTOMER_ID IN ( ", "bbox": {"l": 64.800003, "t": 115.65319999999997, "r": 186.11909, "b": 123.58220999999992, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "SELECT C . CUSTOMER_ID ", "bbox": {"l": 64.800003, "t": 126.63318000000015, "r": 168.1794, "b": 134.56219, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "FROM BANK_SCHEMA . CUSTOMERS C ", "bbox": {"l": 64.800003, "t": 137.67345999999998, "r": 204.11909, "b": 145.60248, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "WHERE C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800003, "t": 148.65344000000005, "r": 343.43817, "b": 156.58245999999997, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "ENFORCED FOR ALL ACCESS ", "bbox": {"l": 79.200005, "t": 170.67377, "r": 196.0191, "b": 178.60278000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ENABLE ; ", "bbox": {"l": 79.200005, "t": 181.65374999999995, "r": 124.1397, "b": 189.58276, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CREATE MASK BANK_SCHEMA.MASK_ACCOUNT_NUMBER_ON_ACCOUNTS ON BANK_SCHEMA.ACCOUNTS AS A ", "bbox": {"l": 64.800003, "t": 203.67407000000003, "r": 446.75726000000003, "b": 211.60308999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "FOR COLUMN ACCOUNT_NUMBER ", "bbox": {"l": 79.200005, "t": 214.65404999999998, "r": 196.0191, "b": 222.58307000000002, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "RETURN CASE ", "bbox": {"l": 79.200005, "t": 225.69434, "r": 137.63971, "b": 233.62334999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800003, "t": 236.67431999999997, "r": 361.37787, "b": 244.60333000000003, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "THEN A . ACCOUNT_NUMBER ", "bbox": {"l": 64.800003, "t": 247.65430000000003, "r": 172.61909, "b": 255.58330999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 ", "bbox": {"l": 64.800003, "t": 258.69458, "r": 365.87787, "b": 266.6236, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "THEN A . ACCOUNT_NUMBER ", "bbox": {"l": 64.800003, "t": 269.67456000000004, "r": 172.61909, "b": 277.60357999999997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800003, "t": 280.6546000000001, "r": 374.87787, "b": 288.58359, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "THEN A . ACCOUNT_NUMBER ", "bbox": {"l": 64.800003, "t": 291.69492, "r": 172.61909, "b": 299.6239, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "ELSE '*****' ", "bbox": {"l": 64.800003, "t": 302.67493, "r": 123.2397, "b": 310.60391, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "END ", "bbox": {"l": 64.800003, "t": 313.65494, "r": 96.2397, "b": 321.58392, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ENABLE ; ", "bbox": {"l": 79.200005, "t": 324.69525, "r": 124.1397, "b": 332.62424000000004, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "ALTER TABLE BANK_SCHEMA.ACCOUNTS", "bbox": {"l": 64.800003, "t": 346.65524, "r": 212.80827, "b": 354.58423000000005, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "ACTIVATE ROW ACCESS CONTROL ", "bbox": {"l": 79.200005, "t": 357.69555999999994, "r": 214.0191, "b": 365.62454, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ACTIVATE COLUMN ACCESS CONTROL ;", "bbox": {"l": 79.200005, "t": 368.67557, "r": 223.01909999999998, "b": 376.60454999999996, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_TRANSACTIONS ON BANK_SCHEMA.TRANSACTIONS AS T ", "bbox": {"l": 64.800003, "t": 390.69586, "r": 473.75726000000003, "b": 398.62485, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) ", "bbox": {"l": 79.200005, "t": 401.67587000000003, "r": 528.59698, "b": 409.60486, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "OR ", "bbox": {"l": 64.800003, "t": 412.65588, "r": 78.300003, "b": 420.58487, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800003, "t": 423.6962, "r": 361.37787, "b": 431.62518, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "AND ( T . ACCOUNT_ID IN ( ", "bbox": {"l": 64.800003, "t": 434.67621, "r": 181.61909, "b": 442.60519, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "SELECT A . ACCOUNT_ID ", "bbox": {"l": 64.800003, "t": 445.65621999999996, "r": 163.6794, "b": 453.58521, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "FROM BANK_SCHEMA . ACCOUNTS A ", "bbox": {"l": 64.800003, "t": 456.69653, "r": 199.61909, "b": 464.62552, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "WHERE A . CUSTOMER_ID IN ( ", "bbox": {"l": 64.800003, "t": 467.67654, "r": 186.11909, "b": 475.60553, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "SELECT C . CUSTOMER_ID ", "bbox": {"l": 64.800003, "t": 478.65656, "r": 168.1794, "b": 486.58554, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "FROM BANK_SCHEMA . CUSTOMERS C ", "bbox": {"l": 64.800003, "t": 489.69687, "r": 204.11909, "b": 497.62585, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "WHERE C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800003, "t": 500.67688, "r": 343.43817, "b": 508.60587, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "ENFORCED FOR ALL ACCESS ", "bbox": {"l": 79.200005, "t": 522.69717, "r": 196.0191, "b": 530.62616, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ENABLE ; ", "bbox": {"l": 79.200005, "t": 533.67715, "r": 124.1397, "b": 541.60617, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ALTER TABLE BANK_SCHEMA.TRANSACTIONS ", "bbox": {"l": 64.800003, "t": 555.69748, "r": 240.05878999999996, "b": 563.62648, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "ACTIVATE ROW ACCESS CONTROL ;", "bbox": {"l": 79.200005, "t": 566.67747, "r": 209.5191, "b": 574.6064799999999, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "/* END */", "bbox": {"l": 64.800003, "t": 588.69778, "r": 105.2397, "b": 596.62679, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 256.8621520996094, "t": 754.7630004882812, "r": 517.90582, "b": 763.9440307617188, "coord_origin": "TOPLEFT"}, "confidence": 0.9532458186149597, "cells": [{"id": 0, "text": "Appendix A. Database definitions for the RCAC banking example ", "bbox": {"l": 257.57999, "t": 755.538002, "r": 517.90582, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 530.1473999023438, "t": 754.3292846679688, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9204425811767578, "cells": [{"id": 1, "text": "125", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "code", "bbox": {"l": 63.12764358520508, "t": 70.03921508789062, "r": 528.59698, "b": 600.8012084960938, "coord_origin": "TOPLEFT"}, "confidence": 0.867974579334259, "cells": [{"id": 2, "text": "CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_ACCOUNTS ON BANK_SCHEMA.ACCOUNTS AS A ", "bbox": {"l": 64.800003, "t": 71.67296999999996, "r": 437.75726000000003, "b": 79.60199, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) ", "bbox": {"l": 79.200005, "t": 82.65295000000015, "r": 528.59698, "b": 90.58196999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "OR ", "bbox": {"l": 64.800003, "t": 93.63292999999999, "r": 78.300003, "b": 101.56195000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800003, "t": 104.67322000000001, "r": 361.37787, "b": 112.60222999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "AND ( A . CUSTOMER_ID IN ( ", "bbox": {"l": 64.800003, "t": 115.65319999999997, "r": 186.11909, "b": 123.58220999999992, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "SELECT C . CUSTOMER_ID ", "bbox": {"l": 64.800003, "t": 126.63318000000015, "r": 168.1794, "b": 134.56219, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "FROM BANK_SCHEMA . CUSTOMERS C ", "bbox": {"l": 64.800003, "t": 137.67345999999998, "r": 204.11909, "b": 145.60248, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "WHERE C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800003, "t": 148.65344000000005, "r": 343.43817, "b": 156.58245999999997, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "ENFORCED FOR ALL ACCESS ", "bbox": {"l": 79.200005, "t": 170.67377, "r": 196.0191, "b": 178.60278000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ENABLE ; ", "bbox": {"l": 79.200005, "t": 181.65374999999995, "r": 124.1397, "b": 189.58276, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CREATE MASK BANK_SCHEMA.MASK_ACCOUNT_NUMBER_ON_ACCOUNTS ON BANK_SCHEMA.ACCOUNTS AS A ", "bbox": {"l": 64.800003, "t": 203.67407000000003, "r": 446.75726000000003, "b": 211.60308999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "FOR COLUMN ACCOUNT_NUMBER ", "bbox": {"l": 79.200005, "t": 214.65404999999998, "r": 196.0191, "b": 222.58307000000002, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "RETURN CASE ", "bbox": {"l": 79.200005, "t": 225.69434, "r": 137.63971, "b": 233.62334999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800003, "t": 236.67431999999997, "r": 361.37787, "b": 244.60333000000003, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "THEN A . ACCOUNT_NUMBER ", "bbox": {"l": 64.800003, "t": 247.65430000000003, "r": 172.61909, "b": 255.58330999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 ", "bbox": {"l": 64.800003, "t": 258.69458, "r": 365.87787, "b": 266.6236, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "THEN A . ACCOUNT_NUMBER ", "bbox": {"l": 64.800003, "t": 269.67456000000004, "r": 172.61909, "b": 277.60357999999997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800003, "t": 280.6546000000001, "r": 374.87787, "b": 288.58359, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "THEN A . ACCOUNT_NUMBER ", "bbox": {"l": 64.800003, "t": 291.69492, "r": 172.61909, "b": 299.6239, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "ELSE '*****' ", "bbox": {"l": 64.800003, "t": 302.67493, "r": 123.2397, "b": 310.60391, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "END ", "bbox": {"l": 64.800003, "t": 313.65494, "r": 96.2397, "b": 321.58392, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ENABLE ; ", "bbox": {"l": 79.200005, "t": 324.69525, "r": 124.1397, "b": 332.62424000000004, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "ALTER TABLE BANK_SCHEMA.ACCOUNTS", "bbox": {"l": 64.800003, "t": 346.65524, "r": 212.80827, "b": 354.58423000000005, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "ACTIVATE ROW ACCESS CONTROL ", "bbox": {"l": 79.200005, "t": 357.69555999999994, "r": 214.0191, "b": 365.62454, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ACTIVATE COLUMN ACCESS CONTROL ;", "bbox": {"l": 79.200005, "t": 368.67557, "r": 223.01909999999998, "b": 376.60454999999996, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_TRANSACTIONS ON BANK_SCHEMA.TRANSACTIONS AS T ", "bbox": {"l": 64.800003, "t": 390.69586, "r": 473.75726000000003, "b": 398.62485, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) ", "bbox": {"l": 79.200005, "t": 401.67587000000003, "r": 528.59698, "b": 409.60486, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "OR ", "bbox": {"l": 64.800003, "t": 412.65588, "r": 78.300003, "b": 420.58487, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800003, "t": 423.6962, "r": 361.37787, "b": 431.62518, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "AND ( T . ACCOUNT_ID IN ( ", "bbox": {"l": 64.800003, "t": 434.67621, "r": 181.61909, "b": 442.60519, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "SELECT A . ACCOUNT_ID ", "bbox": {"l": 64.800003, "t": 445.65621999999996, "r": 163.6794, "b": 453.58521, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "FROM BANK_SCHEMA . ACCOUNTS A ", "bbox": {"l": 64.800003, "t": 456.69653, "r": 199.61909, "b": 464.62552, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "WHERE A . CUSTOMER_ID IN ( ", "bbox": {"l": 64.800003, "t": 467.67654, "r": 186.11909, "b": 475.60553, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "SELECT C . CUSTOMER_ID ", "bbox": {"l": 64.800003, "t": 478.65656, "r": 168.1794, "b": 486.58554, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "FROM BANK_SCHEMA . CUSTOMERS C ", "bbox": {"l": 64.800003, "t": 489.69687, "r": 204.11909, "b": 497.62585, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "WHERE C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800003, "t": 500.67688, "r": 343.43817, "b": 508.60587, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "ENFORCED FOR ALL ACCESS ", "bbox": {"l": 79.200005, "t": 522.69717, "r": 196.0191, "b": 530.62616, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ENABLE ; ", "bbox": {"l": 79.200005, "t": 533.67715, "r": 124.1397, "b": 541.60617, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ALTER TABLE BANK_SCHEMA.TRANSACTIONS ", "bbox": {"l": 64.800003, "t": 555.69748, "r": 240.05878999999996, "b": 563.62648, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "ACTIVATE ROW ACCESS CONTROL ;", "bbox": {"l": 79.200005, "t": 566.67747, "r": 209.5191, "b": 574.6064799999999, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "/* END */", "bbox": {"l": 64.800003, "t": 588.69778, "r": 105.2397, "b": 596.62679, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 140, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 256.8621520996094, "t": 754.7630004882812, "r": 517.90582, "b": 763.9440307617188, "coord_origin": "TOPLEFT"}, "confidence": 0.9532458186149597, "cells": [{"id": 0, "text": "Appendix A. Database definitions for the RCAC banking example ", "bbox": {"l": 257.57999, "t": 755.538002, "r": 517.90582, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Appendix A. Database definitions for the RCAC banking example"}, {"label": "page_footer", "id": 1, "page_no": 140, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.1473999023438, "t": 754.3292846679688, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9204425811767578, "cells": [{"id": 1, "text": "125", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "125"}, {"label": "code", "id": 2, "page_no": 140, "cluster": {"id": 2, "label": "code", "bbox": {"l": 63.12764358520508, "t": 70.03921508789062, "r": 528.59698, "b": 600.8012084960938, "coord_origin": "TOPLEFT"}, "confidence": 0.867974579334259, "cells": [{"id": 2, "text": "CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_ACCOUNTS ON BANK_SCHEMA.ACCOUNTS AS A ", "bbox": {"l": 64.800003, "t": 71.67296999999996, "r": 437.75726000000003, "b": 79.60199, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) ", "bbox": {"l": 79.200005, "t": 82.65295000000015, "r": 528.59698, "b": 90.58196999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "OR ", "bbox": {"l": 64.800003, "t": 93.63292999999999, "r": 78.300003, "b": 101.56195000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800003, "t": 104.67322000000001, "r": 361.37787, "b": 112.60222999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "AND ( A . CUSTOMER_ID IN ( ", "bbox": {"l": 64.800003, "t": 115.65319999999997, "r": 186.11909, "b": 123.58220999999992, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "SELECT C . CUSTOMER_ID ", "bbox": {"l": 64.800003, "t": 126.63318000000015, "r": 168.1794, "b": 134.56219, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "FROM BANK_SCHEMA . CUSTOMERS C ", "bbox": {"l": 64.800003, "t": 137.67345999999998, "r": 204.11909, "b": 145.60248, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "WHERE C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800003, "t": 148.65344000000005, "r": 343.43817, "b": 156.58245999999997, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "ENFORCED FOR ALL ACCESS ", "bbox": {"l": 79.200005, "t": 170.67377, "r": 196.0191, "b": 178.60278000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ENABLE ; ", "bbox": {"l": 79.200005, "t": 181.65374999999995, "r": 124.1397, "b": 189.58276, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CREATE MASK BANK_SCHEMA.MASK_ACCOUNT_NUMBER_ON_ACCOUNTS ON BANK_SCHEMA.ACCOUNTS AS A ", "bbox": {"l": 64.800003, "t": 203.67407000000003, "r": 446.75726000000003, "b": 211.60308999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "FOR COLUMN ACCOUNT_NUMBER ", "bbox": {"l": 79.200005, "t": 214.65404999999998, "r": 196.0191, "b": 222.58307000000002, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "RETURN CASE ", "bbox": {"l": 79.200005, "t": 225.69434, "r": 137.63971, "b": 233.62334999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800003, "t": 236.67431999999997, "r": 361.37787, "b": 244.60333000000003, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "THEN A . ACCOUNT_NUMBER ", "bbox": {"l": 64.800003, "t": 247.65430000000003, "r": 172.61909, "b": 255.58330999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 ", "bbox": {"l": 64.800003, "t": 258.69458, "r": 365.87787, "b": 266.6236, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "THEN A . ACCOUNT_NUMBER ", "bbox": {"l": 64.800003, "t": 269.67456000000004, "r": 172.61909, "b": 277.60357999999997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800003, "t": 280.6546000000001, "r": 374.87787, "b": 288.58359, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "THEN A . ACCOUNT_NUMBER ", "bbox": {"l": 64.800003, "t": 291.69492, "r": 172.61909, "b": 299.6239, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "ELSE '*****' ", "bbox": {"l": 64.800003, "t": 302.67493, "r": 123.2397, "b": 310.60391, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "END ", "bbox": {"l": 64.800003, "t": 313.65494, "r": 96.2397, "b": 321.58392, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ENABLE ; ", "bbox": {"l": 79.200005, "t": 324.69525, "r": 124.1397, "b": 332.62424000000004, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "ALTER TABLE BANK_SCHEMA.ACCOUNTS", "bbox": {"l": 64.800003, "t": 346.65524, "r": 212.80827, "b": 354.58423000000005, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "ACTIVATE ROW ACCESS CONTROL ", "bbox": {"l": 79.200005, "t": 357.69555999999994, "r": 214.0191, "b": 365.62454, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ACTIVATE COLUMN ACCESS CONTROL ;", "bbox": {"l": 79.200005, "t": 368.67557, "r": 223.01909999999998, "b": 376.60454999999996, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_TRANSACTIONS ON BANK_SCHEMA.TRANSACTIONS AS T ", "bbox": {"l": 64.800003, "t": 390.69586, "r": 473.75726000000003, "b": 398.62485, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) ", "bbox": {"l": 79.200005, "t": 401.67587000000003, "r": 528.59698, "b": 409.60486, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "OR ", "bbox": {"l": 64.800003, "t": 412.65588, "r": 78.300003, "b": 420.58487, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800003, "t": 423.6962, "r": 361.37787, "b": 431.62518, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "AND ( T . ACCOUNT_ID IN ( ", "bbox": {"l": 64.800003, "t": 434.67621, "r": 181.61909, "b": 442.60519, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "SELECT A . ACCOUNT_ID ", "bbox": {"l": 64.800003, "t": 445.65621999999996, "r": 163.6794, "b": 453.58521, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "FROM BANK_SCHEMA . ACCOUNTS A ", "bbox": {"l": 64.800003, "t": 456.69653, "r": 199.61909, "b": 464.62552, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "WHERE A . CUSTOMER_ID IN ( ", "bbox": {"l": 64.800003, "t": 467.67654, "r": 186.11909, "b": 475.60553, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "SELECT C . CUSTOMER_ID ", "bbox": {"l": 64.800003, "t": 478.65656, "r": 168.1794, "b": 486.58554, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "FROM BANK_SCHEMA . CUSTOMERS C ", "bbox": {"l": 64.800003, "t": 489.69687, "r": 204.11909, "b": 497.62585, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "WHERE C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800003, "t": 500.67688, "r": 343.43817, "b": 508.60587, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "ENFORCED FOR ALL ACCESS ", "bbox": {"l": 79.200005, "t": 522.69717, "r": 196.0191, "b": 530.62616, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ENABLE ; ", "bbox": {"l": 79.200005, "t": 533.67715, "r": 124.1397, "b": 541.60617, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ALTER TABLE BANK_SCHEMA.TRANSACTIONS ", "bbox": {"l": 64.800003, "t": 555.69748, "r": 240.05878999999996, "b": 563.62648, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "ACTIVATE ROW ACCESS CONTROL ;", "bbox": {"l": 79.200005, "t": 566.67747, "r": 209.5191, "b": 574.6064799999999, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "/* END */", "bbox": {"l": 64.800003, "t": 588.69778, "r": 105.2397, "b": 596.62679, "coord_origin": "TOPLEFT"}}]}, "text": "CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_ACCOUNTS ON BANK_SCHEMA.ACCOUNTS AS A FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) OR ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 AND ( A . CUSTOMER_ID IN ( SELECT C . CUSTOMER_ID FROM BANK_SCHEMA . CUSTOMERS C WHERE C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ENFORCED FOR ALL ACCESS ENABLE ; CREATE MASK BANK_SCHEMA.MASK_ACCOUNT_NUMBER_ON_ACCOUNTS ON BANK_SCHEMA.ACCOUNTS AS A FOR COLUMN ACCOUNT_NUMBER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN A . ACCOUNT_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN A . ACCOUNT_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN A . ACCOUNT_NUMBER ELSE '*****' END ENABLE ; ALTER TABLE BANK_SCHEMA.ACCOUNTS ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL ; CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_TRANSACTIONS ON BANK_SCHEMA.TRANSACTIONS AS T FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) OR ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 AND ( T . ACCOUNT_ID IN ( SELECT A . ACCOUNT_ID FROM BANK_SCHEMA . ACCOUNTS A WHERE A . CUSTOMER_ID IN ( SELECT C . CUSTOMER_ID FROM BANK_SCHEMA . CUSTOMERS C WHERE C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ENFORCED FOR ALL ACCESS ENABLE ; ALTER TABLE BANK_SCHEMA.TRANSACTIONS ACTIVATE ROW ACCESS CONTROL ; /* END */"}], "body": [{"label": "code", "id": 2, "page_no": 140, "cluster": {"id": 2, "label": "code", "bbox": {"l": 63.12764358520508, "t": 70.03921508789062, "r": 528.59698, "b": 600.8012084960938, "coord_origin": "TOPLEFT"}, "confidence": 0.867974579334259, "cells": [{"id": 2, "text": "CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_ACCOUNTS ON BANK_SCHEMA.ACCOUNTS AS A ", "bbox": {"l": 64.800003, "t": 71.67296999999996, "r": 437.75726000000003, "b": 79.60199, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) ", "bbox": {"l": 79.200005, "t": 82.65295000000015, "r": 528.59698, "b": 90.58196999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "OR ", "bbox": {"l": 64.800003, "t": 93.63292999999999, "r": 78.300003, "b": 101.56195000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800003, "t": 104.67322000000001, "r": 361.37787, "b": 112.60222999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "AND ( A . CUSTOMER_ID IN ( ", "bbox": {"l": 64.800003, "t": 115.65319999999997, "r": 186.11909, "b": 123.58220999999992, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "SELECT C . CUSTOMER_ID ", "bbox": {"l": 64.800003, "t": 126.63318000000015, "r": 168.1794, "b": 134.56219, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "FROM BANK_SCHEMA . CUSTOMERS C ", "bbox": {"l": 64.800003, "t": 137.67345999999998, "r": 204.11909, "b": 145.60248, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "WHERE C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800003, "t": 148.65344000000005, "r": 343.43817, "b": 156.58245999999997, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "ENFORCED FOR ALL ACCESS ", "bbox": {"l": 79.200005, "t": 170.67377, "r": 196.0191, "b": 178.60278000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ENABLE ; ", "bbox": {"l": 79.200005, "t": 181.65374999999995, "r": 124.1397, "b": 189.58276, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CREATE MASK BANK_SCHEMA.MASK_ACCOUNT_NUMBER_ON_ACCOUNTS ON BANK_SCHEMA.ACCOUNTS AS A ", "bbox": {"l": 64.800003, "t": 203.67407000000003, "r": 446.75726000000003, "b": 211.60308999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "FOR COLUMN ACCOUNT_NUMBER ", "bbox": {"l": 79.200005, "t": 214.65404999999998, "r": 196.0191, "b": 222.58307000000002, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "RETURN CASE ", "bbox": {"l": 79.200005, "t": 225.69434, "r": 137.63971, "b": 233.62334999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800003, "t": 236.67431999999997, "r": 361.37787, "b": 244.60333000000003, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "THEN A . ACCOUNT_NUMBER ", "bbox": {"l": 64.800003, "t": 247.65430000000003, "r": 172.61909, "b": 255.58330999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 ", "bbox": {"l": 64.800003, "t": 258.69458, "r": 365.87787, "b": 266.6236, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "THEN A . ACCOUNT_NUMBER ", "bbox": {"l": 64.800003, "t": 269.67456000000004, "r": 172.61909, "b": 277.60357999999997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800003, "t": 280.6546000000001, "r": 374.87787, "b": 288.58359, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "THEN A . ACCOUNT_NUMBER ", "bbox": {"l": 64.800003, "t": 291.69492, "r": 172.61909, "b": 299.6239, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "ELSE '*****' ", "bbox": {"l": 64.800003, "t": 302.67493, "r": 123.2397, "b": 310.60391, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "END ", "bbox": {"l": 64.800003, "t": 313.65494, "r": 96.2397, "b": 321.58392, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ENABLE ; ", "bbox": {"l": 79.200005, "t": 324.69525, "r": 124.1397, "b": 332.62424000000004, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "ALTER TABLE BANK_SCHEMA.ACCOUNTS", "bbox": {"l": 64.800003, "t": 346.65524, "r": 212.80827, "b": 354.58423000000005, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "ACTIVATE ROW ACCESS CONTROL ", "bbox": {"l": 79.200005, "t": 357.69555999999994, "r": 214.0191, "b": 365.62454, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ACTIVATE COLUMN ACCESS CONTROL ;", "bbox": {"l": 79.200005, "t": 368.67557, "r": 223.01909999999998, "b": 376.60454999999996, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_TRANSACTIONS ON BANK_SCHEMA.TRANSACTIONS AS T ", "bbox": {"l": 64.800003, "t": 390.69586, "r": 473.75726000000003, "b": 398.62485, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) ", "bbox": {"l": 79.200005, "t": 401.67587000000003, "r": 528.59698, "b": 409.60486, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "OR ", "bbox": {"l": 64.800003, "t": 412.65588, "r": 78.300003, "b": 420.58487, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800003, "t": 423.6962, "r": 361.37787, "b": 431.62518, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "AND ( T . ACCOUNT_ID IN ( ", "bbox": {"l": 64.800003, "t": 434.67621, "r": 181.61909, "b": 442.60519, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "SELECT A . ACCOUNT_ID ", "bbox": {"l": 64.800003, "t": 445.65621999999996, "r": 163.6794, "b": 453.58521, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "FROM BANK_SCHEMA . ACCOUNTS A ", "bbox": {"l": 64.800003, "t": 456.69653, "r": 199.61909, "b": 464.62552, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "WHERE A . CUSTOMER_ID IN ( ", "bbox": {"l": 64.800003, "t": 467.67654, "r": 186.11909, "b": 475.60553, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "SELECT C . CUSTOMER_ID ", "bbox": {"l": 64.800003, "t": 478.65656, "r": 168.1794, "b": 486.58554, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "FROM BANK_SCHEMA . CUSTOMERS C ", "bbox": {"l": 64.800003, "t": 489.69687, "r": 204.11909, "b": 497.62585, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "WHERE C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800003, "t": 500.67688, "r": 343.43817, "b": 508.60587, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "ENFORCED FOR ALL ACCESS ", "bbox": {"l": 79.200005, "t": 522.69717, "r": 196.0191, "b": 530.62616, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ENABLE ; ", "bbox": {"l": 79.200005, "t": 533.67715, "r": 124.1397, "b": 541.60617, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ALTER TABLE BANK_SCHEMA.TRANSACTIONS ", "bbox": {"l": 64.800003, "t": 555.69748, "r": 240.05878999999996, "b": 563.62648, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "ACTIVATE ROW ACCESS CONTROL ;", "bbox": {"l": 79.200005, "t": 566.67747, "r": 209.5191, "b": 574.6064799999999, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "/* END */", "bbox": {"l": 64.800003, "t": 588.69778, "r": 105.2397, "b": 596.62679, "coord_origin": "TOPLEFT"}}]}, "text": "CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_ACCOUNTS ON BANK_SCHEMA.ACCOUNTS AS A FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) OR ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 AND ( A . CUSTOMER_ID IN ( SELECT C . CUSTOMER_ID FROM BANK_SCHEMA . CUSTOMERS C WHERE C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ENFORCED FOR ALL ACCESS ENABLE ; CREATE MASK BANK_SCHEMA.MASK_ACCOUNT_NUMBER_ON_ACCOUNTS ON BANK_SCHEMA.ACCOUNTS AS A FOR COLUMN ACCOUNT_NUMBER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN A . ACCOUNT_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN A . ACCOUNT_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN A . ACCOUNT_NUMBER ELSE '*****' END ENABLE ; ALTER TABLE BANK_SCHEMA.ACCOUNTS ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL ; CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_TRANSACTIONS ON BANK_SCHEMA.TRANSACTIONS AS T FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) OR ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 AND ( T . ACCOUNT_ID IN ( SELECT A . ACCOUNT_ID FROM BANK_SCHEMA . ACCOUNTS A WHERE A . CUSTOMER_ID IN ( SELECT C . CUSTOMER_ID FROM BANK_SCHEMA . CUSTOMERS C WHERE C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ENFORCED FOR ALL ACCESS ENABLE ; ALTER TABLE BANK_SCHEMA.TRANSACTIONS ACTIVATE ROW ACCESS CONTROL ; /* END */"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 140, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 256.8621520996094, "t": 754.7630004882812, "r": 517.90582, "b": 763.9440307617188, "coord_origin": "TOPLEFT"}, "confidence": 0.9532458186149597, "cells": [{"id": 0, "text": "Appendix A. Database definitions for the RCAC banking example ", "bbox": {"l": 257.57999, "t": 755.538002, "r": 517.90582, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Appendix A. Database definitions for the RCAC banking example"}, {"label": "page_footer", "id": 1, "page_no": 140, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.1473999023438, "t": 754.3292846679688, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9204425811767578, "cells": [{"id": 1, "text": "125", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "125"}]}}, {"page_no": 141, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "126 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.55541229248047, "t": 754.0760498046875, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.922152578830719, "cells": [{"id": 0, "text": "126 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 98.59571838378906, "t": 754.413818359375, "r": 340.1140441894531, "b": 764.1231079101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9446555376052856, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 141, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.55541229248047, "t": 754.0760498046875, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.922152578830719, "cells": [{"id": 0, "text": "126 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "126"}, {"label": "page_footer", "id": 1, "page_no": 141, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.59571838378906, "t": 754.413818359375, "r": 340.1140441894531, "b": 764.1231079101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9446555376052856, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}], "body": [], "headers": [{"label": "page_footer", "id": 0, "page_no": 141, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.55541229248047, "t": 754.0760498046875, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.922152578830719, "cells": [{"id": 0, "text": "126 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "126"}, {"label": "page_footer", "id": 1, "page_no": 141, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.59571838378906, "t": 754.413818359375, "r": 340.1140441894531, "b": 764.1231079101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9446555376052856, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 142, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "127", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Related publications", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 299.20081, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The publications that are listed in this section are considered suitable for a more detailed ", "bbox": {"l": 136.8, "t": 132.64862000000005, "r": 530.0675, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "description of the topics that are covered in this paper.", "bbox": {"l": 136.8, "t": 144.64844000000005, "r": 376.55719, "b": 153.86145, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Other publications", "bbox": {"l": 64.800003, "t": 182.34069999999997, "r": 205.97418, "b": 197.1037, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "These publications are relevant as further information sources:", "bbox": {"l": 136.8, "t": 214.6087, "r": 413.18115, "b": 223.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "GLYPH", "bbox": {"l": 136.8, "t": 231.79767000000004, "r": 141.78, "b": 240.57245, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "IBM DB2 for i indexing methods and strategies", "bbox": {"l": 151.20016, "t": 231.64824999999996, "r": 356.53046, "b": 240.86127, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": " white paper:", "bbox": {"l": 356.58035, "t": 231.64824999999996, "r": 414.05658, "b": 240.86127, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "http://www.ibm.com/partnerworld/wps/servlet/ContentHandler/stg_ast_sys_wp_db2_i", "bbox": {"l": 151.20016, "t": 248.77747, "r": 545.99457, "b": 257.55224999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "_indexing_methods_strategies", "bbox": {"l": 151.20016, "t": 260.77728, "r": 291.11823, "b": 269.55206, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "GLYPH", "bbox": {"l": 136.8, "t": 277.75708, "r": 141.78, "b": 286.53186, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "IBM i Memo to Users Version 7.2", "bbox": {"l": 151.20016, "t": 277.60767, "r": 297.0036, "b": 286.8206799999999, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ":", "bbox": {"l": 297.00061, "t": 277.60767, "r": 299.7695, "b": 286.8206799999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgmtu.htm", "bbox": {"l": 151.20015, "t": 294.79666, "r": 535.97485, "b": 303.57144, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 311.77646, "r": 141.77998, "b": 320.55124, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "IBM i Version 7.2 DB2 for i SQL Reference Guide", "bbox": {"l": 151.20015, "t": 311.62708, "r": 368.68774, "b": 320.84006, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": ":", "bbox": {"l": 368.63989, "t": 311.62708, "r": 371.40878, "b": 320.84006, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/db2/rbafzintro.htm?l", "bbox": {"l": 151.20013, "t": 328.75626, "r": 545.99457, "b": 337.5310400000001, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "ang=en", "bbox": {"l": 151.20013, "t": 340.75607, "r": 181.13989, "b": 349.53085, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "GLYPH", "bbox": {"l": 136.79997, "t": 357.79565, "r": 141.77997, "b": 366.57043, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "IBM i Version 7.2 Journal Management Guide", "bbox": {"l": 151.20013, "t": 357.64627, "r": 352.84634, "b": 366.8592499999999, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": ":", "bbox": {"l": 352.86026, "t": 357.64627, "r": 355.62915, "b": 366.8592499999999, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzaki/rzakiprintthis", "bbox": {"l": 151.20013, "t": 374.77545, "r": 545.99457, "b": 383.55023, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": ".htm?lang=en", "bbox": {"l": 151.20013, "t": 386.77527, "r": 211.1394, "b": 395.55005, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "GLYPH", "bbox": {"l": 136.79997, "t": 403.75507, "r": 141.77997, "b": 412.52985, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "IBM i Version 7.2 Security Reference Guide", "bbox": {"l": 151.20013, "t": 403.60568, "r": 343.57654, "b": 412.81866, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": ":", "bbox": {"l": 343.56061, "t": 403.60568, "r": 346.3295, "b": 412.81866, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzarl/rzarlkickoff.h", "bbox": {"l": 151.20015, "t": 420.79465, "r": 545.99457, "b": 429.56943, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "tm?lang=en", "bbox": {"l": 151.20015, "t": 432.79446, "r": 201.17941, "b": 441.5692399999999, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Online resources", "bbox": {"l": 64.800003, "t": 470.3407, "r": 195.13574, "b": 485.1037, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "These websites are relevant as further information sources:", "bbox": {"l": 136.8, "t": 502.60861, "r": 399.36154, "b": 511.82159, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "GLYPH", "bbox": {"l": 136.8, "t": 519.7975799999999, "r": 141.78, "b": 528.57236, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Database programming topic of the IBM i 7.2 IBM Knowledge Center:", "bbox": {"l": 151.20016, "t": 519.64819, "r": 457.80386, "b": 528.86118, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgdbp.htm?l", "bbox": {"l": 151.20016, "t": 536.7774, "r": 545.99457, "b": 545.55215, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "ang=en", "bbox": {"l": 151.20016, "t": 548.77721, "r": 181.13992, "b": 557.55196, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "GLYPH", "bbox": {"l": 136.8, "t": 565.81677, "r": 141.78, "b": 574.59152, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Identity Theft Resource Center", "bbox": {"l": 151.20016, "t": 565.66737, "r": 287.27969, "b": 574.88037, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "http://www.idtheftcenter.org", "bbox": {"l": 151.20016, "t": 582.79659, "r": 291.11823, "b": 591.57133, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "GLYPH", "bbox": {"l": 136.8, "t": 599.7764, "r": 141.78, "b": 608.55115, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Ponemon Institute", "bbox": {"l": 151.20016, "t": 599.627, "r": 231.24367, "b": 608.84, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "http://www.ponemon.org/", "bbox": {"l": 151.20016, "t": 616.81596, "r": 266.09869, "b": 625.59071, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.680240631103516, "t": 754.7608032226562, "r": 257.24335, "b": 764.109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9499529600143433, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 530.1651000976562, "t": 754.2824096679688, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9230133295059204, "cells": [{"id": 1, "text": "127", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.800003, "t": 72.91483306884766, "r": 299.20081, "b": 96.60542297363281, "coord_origin": "TOPLEFT"}, "confidence": 0.9644432663917542, "cells": [{"id": 2, "text": "Related publications", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 299.20081, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.75408935546875, "t": 132.06002807617188, "r": 530.0675, "b": 154.35791015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9717119932174683, "cells": [{"id": 3, "text": "The publications that are listed in this section are considered suitable for a more detailed ", "bbox": {"l": 136.8, "t": 132.64862000000005, "r": 530.0675, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "description of the topics that are covered in this paper.", "bbox": {"l": 136.8, "t": 144.64844000000005, "r": 376.55719, "b": 153.86145, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 64.5552978515625, "t": 181.37648010253906, "r": 205.97418, "b": 197.83837890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9622768759727478, "cells": [{"id": 5, "text": "Other publications", "bbox": {"l": 64.800003, "t": 182.34069999999997, "r": 205.97418, "b": 197.1037, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.73150634765625, "t": 213.93795776367188, "r": 413.18115, "b": 224.1931915283203, "coord_origin": "TOPLEFT"}, "confidence": 0.9328869581222534, "cells": [{"id": 6, "text": "These publications are relevant as further information sources:", "bbox": {"l": 136.8, "t": 214.6087, "r": 413.18115, "b": 223.82172000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.81341552734375, "t": 230.74234008789062, "r": 414.05658, "b": 240.96536254882812, "coord_origin": "TOPLEFT"}, "confidence": 0.9425700902938843, "cells": [{"id": 7, "text": "GLYPH", "bbox": {"l": 136.8, "t": 231.79767000000004, "r": 141.78, "b": 240.57245, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "IBM DB2 for i indexing methods and strategies", "bbox": {"l": 151.20016, "t": 231.64824999999996, "r": 356.53046, "b": 240.86127, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": " white paper:", "bbox": {"l": 356.58035, "t": 231.64824999999996, "r": 414.05658, "b": 240.86127, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 150.4676513671875, "t": 248.0777587890625, "r": 545.99457, "b": 270.6806945800781, "coord_origin": "TOPLEFT"}, "confidence": 0.7933239340782166, "cells": [{"id": 10, "text": "http://www.ibm.com/partnerworld/wps/servlet/ContentHandler/stg_ast_sys_wp_db2_i", "bbox": {"l": 151.20016, "t": 248.77747, "r": 545.99457, "b": 257.55224999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "_indexing_methods_strategies", "bbox": {"l": 151.20016, "t": 260.77728, "r": 291.11823, "b": 269.55206, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.8154296875, "t": 276.60491943359375, "r": 299.7695, "b": 286.8206799999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9148671627044678, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.8, "t": 277.75708, "r": 141.78, "b": 286.53186, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "IBM i Memo to Users Version 7.2", "bbox": {"l": 151.20016, "t": 277.60767, "r": 297.0036, "b": 286.8206799999999, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ":", "bbox": {"l": 297.00061, "t": 277.60767, "r": 299.7695, "b": 286.8206799999999, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 150.4538116455078, "t": 294.1251525878906, "r": 536.3565673828125, "b": 304.4701232910156, "coord_origin": "TOPLEFT"}, "confidence": 0.7976768016815186, "cells": [{"id": 15, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgmtu.htm", "bbox": {"l": 151.20015, "t": 294.79666, "r": 535.97485, "b": 303.57144, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 135.64071655273438, "t": 310.49432373046875, "r": 371.40878, "b": 320.84006, "coord_origin": "TOPLEFT"}, "confidence": 0.9118204712867737, "cells": [{"id": 16, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 311.77646, "r": 141.77998, "b": 320.55124, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "IBM i Version 7.2 DB2 for i SQL Reference Guide", "bbox": {"l": 151.20015, "t": 311.62708, "r": 368.68774, "b": 320.84006, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": ":", "bbox": {"l": 368.63989, "t": 311.62708, "r": 371.40878, "b": 320.84006, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 150.3872833251953, "t": 328.0414123535156, "r": 545.99457, "b": 349.66357421875, "coord_origin": "TOPLEFT"}, "confidence": 0.7908105850219727, "cells": [{"id": 19, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/db2/rbafzintro.htm?l", "bbox": {"l": 151.20013, "t": 328.75626, "r": 545.99457, "b": 337.5310400000001, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "ang=en", "bbox": {"l": 151.20013, "t": 340.75607, "r": 181.13989, "b": 349.53085, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "list_item", "bbox": {"l": 135.63323974609375, "t": 356.6874694824219, "r": 355.62915, "b": 366.8592499999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9359384179115295, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.79997, "t": 357.79565, "r": 141.77997, "b": 366.57043, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "IBM i Version 7.2 Journal Management Guide", "bbox": {"l": 151.20013, "t": 357.64627, "r": 352.84634, "b": 366.8592499999999, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": ":", "bbox": {"l": 352.86026, "t": 357.64627, "r": 355.62915, "b": 366.8592499999999, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "list_item", "bbox": {"l": 150.4163360595703, "t": 374.12347412109375, "r": 545.99457, "b": 396.02581787109375, "coord_origin": "TOPLEFT"}, "confidence": 0.7968815565109253, "cells": [{"id": 24, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzaki/rzakiprintthis", "bbox": {"l": 151.20013, "t": 374.77545, "r": 545.99457, "b": 383.55023, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": ".htm?lang=en", "bbox": {"l": 151.20013, "t": 386.77527, "r": 211.1394, "b": 395.55005, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "list_item", "bbox": {"l": 135.4580078125, "t": 402.4890441894531, "r": 346.3946838378906, "b": 413.17169189453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9383506178855896, "cells": [{"id": 26, "text": "GLYPH", "bbox": {"l": 136.79997, "t": 403.75507, "r": 141.77997, "b": 412.52985, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "IBM i Version 7.2 Security Reference Guide", "bbox": {"l": 151.20013, "t": 403.60568, "r": 343.57654, "b": 412.81866, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": ":", "bbox": {"l": 343.56061, "t": 403.60568, "r": 346.3295, "b": 412.81866, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "list_item", "bbox": {"l": 150.8020477294922, "t": 419.9049377441406, "r": 546.1087036132812, "b": 442.11077880859375, "coord_origin": "TOPLEFT"}, "confidence": 0.7104644179344177, "cells": [{"id": 29, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzarl/rzarlkickoff.h", "bbox": {"l": 151.20015, "t": 420.79465, "r": 545.99457, "b": 429.56943, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "tm?lang=en", "bbox": {"l": 151.20015, "t": 432.79446, "r": 201.17941, "b": 441.5692399999999, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "section_header", "bbox": {"l": 64.61199188232422, "t": 469.3950500488281, "r": 195.13574, "b": 485.1037, "coord_origin": "TOPLEFT"}, "confidence": 0.9526883959770203, "cells": [{"id": 31, "text": "Online resources", "bbox": {"l": 64.800003, "t": 470.3407, "r": 195.13574, "b": 485.1037, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "text", "bbox": {"l": 135.812255859375, "t": 501.83233642578125, "r": 399.36154, "b": 511.82159, "coord_origin": "TOPLEFT"}, "confidence": 0.9205816388130188, "cells": [{"id": 32, "text": "These websites are relevant as further information sources:", "bbox": {"l": 136.8, "t": 502.60861, "r": 399.36154, "b": 511.82159, "coord_origin": "TOPLEFT"}}]}, {"id": 18, "label": "list_item", "bbox": {"l": 135.69252014160156, "t": 518.7003784179688, "r": 457.80386, "b": 528.908203125, "coord_origin": "TOPLEFT"}, "confidence": 0.928091824054718, "cells": [{"id": 33, "text": "GLYPH", "bbox": {"l": 136.8, "t": 519.7975799999999, "r": 141.78, "b": 528.57236, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Database programming topic of the IBM i 7.2 IBM Knowledge Center:", "bbox": {"l": 151.20016, "t": 519.64819, "r": 457.80386, "b": 528.86118, "coord_origin": "TOPLEFT"}}]}, {"id": 19, "label": "list_item", "bbox": {"l": 150.2280731201172, "t": 536.205322265625, "r": 545.99457, "b": 557.8463745117188, "coord_origin": "TOPLEFT"}, "confidence": 0.7536969184875488, "cells": [{"id": 35, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgdbp.htm?l", "bbox": {"l": 151.20016, "t": 536.7774, "r": 545.99457, "b": 545.55215, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "ang=en", "bbox": {"l": 151.20016, "t": 548.77721, "r": 181.13992, "b": 557.55196, "coord_origin": "TOPLEFT"}}]}, {"id": 20, "label": "list_item", "bbox": {"l": 135.60523986816406, "t": 564.5147705078125, "r": 287.6324768066406, "b": 575.3772583007812, "coord_origin": "TOPLEFT"}, "confidence": 0.9084469079971313, "cells": [{"id": 37, "text": "GLYPH", "bbox": {"l": 136.8, "t": 565.81677, "r": 141.78, "b": 574.59152, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Identity Theft Resource Center", "bbox": {"l": 151.20016, "t": 565.66737, "r": 287.27969, "b": 574.88037, "coord_origin": "TOPLEFT"}}]}, {"id": 21, "label": "list_item", "bbox": {"l": 150.68099975585938, "t": 582.1913452148438, "r": 291.11823, "b": 592.1077880859375, "coord_origin": "TOPLEFT"}, "confidence": 0.6532412171363831, "cells": [{"id": 39, "text": "http://www.idtheftcenter.org", "bbox": {"l": 151.20016, "t": 582.79659, "r": 291.11823, "b": 591.57133, "coord_origin": "TOPLEFT"}}]}, {"id": 22, "label": "list_item", "bbox": {"l": 135.6503448486328, "t": 598.7340698242188, "r": 231.24367, "b": 608.84, "coord_origin": "TOPLEFT"}, "confidence": 0.9109565615653992, "cells": [{"id": 40, "text": "GLYPH", "bbox": {"l": 136.8, "t": 599.7764, "r": 141.78, "b": 608.55115, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Ponemon Institute", "bbox": {"l": 151.20016, "t": 599.627, "r": 231.24367, "b": 608.84, "coord_origin": "TOPLEFT"}}]}, {"id": 23, "label": "list_item", "bbox": {"l": 150.75747680664062, "t": 615.7659912109375, "r": 266.09869, "b": 625.9202880859375, "coord_origin": "TOPLEFT"}, "confidence": 0.6917186975479126, "cells": [{"id": 42, "text": "http://www.ponemon.org/", "bbox": {"l": 151.20016, "t": 616.81596, "r": 266.09869, "b": 625.59071, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 142, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.680240631103516, "t": 754.7608032226562, "r": 257.24335, "b": 764.109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9499529600143433, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 142, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.1651000976562, "t": 754.2824096679688, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9230133295059204, "cells": [{"id": 1, "text": "127", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "127"}, {"label": "section_header", "id": 2, "page_no": 142, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.800003, "t": 72.91483306884766, "r": 299.20081, "b": 96.60542297363281, "coord_origin": "TOPLEFT"}, "confidence": 0.9644432663917542, "cells": [{"id": 2, "text": "Related publications", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 299.20081, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Related publications"}, {"label": "text", "id": 3, "page_no": 142, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.75408935546875, "t": 132.06002807617188, "r": 530.0675, "b": 154.35791015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9717119932174683, "cells": [{"id": 3, "text": "The publications that are listed in this section are considered suitable for a more detailed ", "bbox": {"l": 136.8, "t": 132.64862000000005, "r": 530.0675, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "description of the topics that are covered in this paper.", "bbox": {"l": 136.8, "t": 144.64844000000005, "r": 376.55719, "b": 153.86145, "coord_origin": "TOPLEFT"}}]}, "text": "The publications that are listed in this section are considered suitable for a more detailed description of the topics that are covered in this paper."}, {"label": "section_header", "id": 4, "page_no": 142, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.5552978515625, "t": 181.37648010253906, "r": 205.97418, "b": 197.83837890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9622768759727478, "cells": [{"id": 5, "text": "Other publications", "bbox": {"l": 64.800003, "t": 182.34069999999997, "r": 205.97418, "b": 197.1037, "coord_origin": "TOPLEFT"}}]}, "text": "Other publications"}, {"label": "text", "id": 5, "page_no": 142, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.73150634765625, "t": 213.93795776367188, "r": 413.18115, "b": 224.1931915283203, "coord_origin": "TOPLEFT"}, "confidence": 0.9328869581222534, "cells": [{"id": 6, "text": "These publications are relevant as further information sources:", "bbox": {"l": 136.8, "t": 214.6087, "r": 413.18115, "b": 223.82172000000003, "coord_origin": "TOPLEFT"}}]}, "text": "These publications are relevant as further information sources:"}, {"label": "list_item", "id": 6, "page_no": 142, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.81341552734375, "t": 230.74234008789062, "r": 414.05658, "b": 240.96536254882812, "coord_origin": "TOPLEFT"}, "confidence": 0.9425700902938843, "cells": [{"id": 7, "text": "GLYPH", "bbox": {"l": 136.8, "t": 231.79767000000004, "r": 141.78, "b": 240.57245, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "IBM DB2 for i indexing methods and strategies", "bbox": {"l": 151.20016, "t": 231.64824999999996, "r": 356.53046, "b": 240.86127, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": " white paper:", "bbox": {"l": 356.58035, "t": 231.64824999999996, "r": 414.05658, "b": 240.86127, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH IBM DB2 for i indexing methods and strategies white paper:"}, {"label": "list_item", "id": 7, "page_no": 142, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 150.4676513671875, "t": 248.0777587890625, "r": 545.99457, "b": 270.6806945800781, "coord_origin": "TOPLEFT"}, "confidence": 0.7933239340782166, "cells": [{"id": 10, "text": "http://www.ibm.com/partnerworld/wps/servlet/ContentHandler/stg_ast_sys_wp_db2_i", "bbox": {"l": 151.20016, "t": 248.77747, "r": 545.99457, "b": 257.55224999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "_indexing_methods_strategies", "bbox": {"l": 151.20016, "t": 260.77728, "r": 291.11823, "b": 269.55206, "coord_origin": "TOPLEFT"}}]}, "text": "http://www.ibm.com/partnerworld/wps/servlet/ContentHandler/stg_ast_sys_wp_db2_i _indexing_methods_strategies"}, {"label": "list_item", "id": 8, "page_no": 142, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.8154296875, "t": 276.60491943359375, "r": 299.7695, "b": 286.8206799999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9148671627044678, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.8, "t": 277.75708, "r": 141.78, "b": 286.53186, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "IBM i Memo to Users Version 7.2", "bbox": {"l": 151.20016, "t": 277.60767, "r": 297.0036, "b": 286.8206799999999, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ":", "bbox": {"l": 297.00061, "t": 277.60767, "r": 299.7695, "b": 286.8206799999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH IBM i Memo to Users Version 7.2 :"}, {"label": "list_item", "id": 9, "page_no": 142, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 150.4538116455078, "t": 294.1251525878906, "r": 536.3565673828125, "b": 304.4701232910156, "coord_origin": "TOPLEFT"}, "confidence": 0.7976768016815186, "cells": [{"id": 15, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgmtu.htm", "bbox": {"l": 151.20015, "t": 294.79666, "r": 535.97485, "b": 303.57144, "coord_origin": "TOPLEFT"}}]}, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgmtu.htm"}, {"label": "list_item", "id": 10, "page_no": 142, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.64071655273438, "t": 310.49432373046875, "r": 371.40878, "b": 320.84006, "coord_origin": "TOPLEFT"}, "confidence": 0.9118204712867737, "cells": [{"id": 16, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 311.77646, "r": 141.77998, "b": 320.55124, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "IBM i Version 7.2 DB2 for i SQL Reference Guide", "bbox": {"l": 151.20015, "t": 311.62708, "r": 368.68774, "b": 320.84006, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": ":", "bbox": {"l": 368.63989, "t": 311.62708, "r": 371.40878, "b": 320.84006, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH IBM i Version 7.2 DB2 for i SQL Reference Guide :"}, {"label": "list_item", "id": 11, "page_no": 142, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 150.3872833251953, "t": 328.0414123535156, "r": 545.99457, "b": 349.66357421875, "coord_origin": "TOPLEFT"}, "confidence": 0.7908105850219727, "cells": [{"id": 19, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/db2/rbafzintro.htm?l", "bbox": {"l": 151.20013, "t": 328.75626, "r": 545.99457, "b": 337.5310400000001, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "ang=en", "bbox": {"l": 151.20013, "t": 340.75607, "r": 181.13989, "b": 349.53085, "coord_origin": "TOPLEFT"}}]}, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/db2/rbafzintro.htm?l ang=en"}, {"label": "list_item", "id": 12, "page_no": 142, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 135.63323974609375, "t": 356.6874694824219, "r": 355.62915, "b": 366.8592499999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9359384179115295, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.79997, "t": 357.79565, "r": 141.77997, "b": 366.57043, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "IBM i Version 7.2 Journal Management Guide", "bbox": {"l": 151.20013, "t": 357.64627, "r": 352.84634, "b": 366.8592499999999, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": ":", "bbox": {"l": 352.86026, "t": 357.64627, "r": 355.62915, "b": 366.8592499999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH IBM i Version 7.2 Journal Management Guide :"}, {"label": "list_item", "id": 13, "page_no": 142, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 150.4163360595703, "t": 374.12347412109375, "r": 545.99457, "b": 396.02581787109375, "coord_origin": "TOPLEFT"}, "confidence": 0.7968815565109253, "cells": [{"id": 24, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzaki/rzakiprintthis", "bbox": {"l": 151.20013, "t": 374.77545, "r": 545.99457, "b": 383.55023, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": ".htm?lang=en", "bbox": {"l": 151.20013, "t": 386.77527, "r": 211.1394, "b": 395.55005, "coord_origin": "TOPLEFT"}}]}, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzaki/rzakiprintthis .htm?lang=en"}, {"label": "list_item", "id": 14, "page_no": 142, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 135.4580078125, "t": 402.4890441894531, "r": 346.3946838378906, "b": 413.17169189453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9383506178855896, "cells": [{"id": 26, "text": "GLYPH", "bbox": {"l": 136.79997, "t": 403.75507, "r": 141.77997, "b": 412.52985, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "IBM i Version 7.2 Security Reference Guide", "bbox": {"l": 151.20013, "t": 403.60568, "r": 343.57654, "b": 412.81866, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": ":", "bbox": {"l": 343.56061, "t": 403.60568, "r": 346.3295, "b": 412.81866, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH IBM i Version 7.2 Security Reference Guide :"}, {"label": "list_item", "id": 15, "page_no": 142, "cluster": {"id": 15, "label": "list_item", "bbox": {"l": 150.8020477294922, "t": 419.9049377441406, "r": 546.1087036132812, "b": 442.11077880859375, "coord_origin": "TOPLEFT"}, "confidence": 0.7104644179344177, "cells": [{"id": 29, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzarl/rzarlkickoff.h", "bbox": {"l": 151.20015, "t": 420.79465, "r": 545.99457, "b": 429.56943, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "tm?lang=en", "bbox": {"l": 151.20015, "t": 432.79446, "r": 201.17941, "b": 441.5692399999999, "coord_origin": "TOPLEFT"}}]}, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzarl/rzarlkickoff.h tm?lang=en"}, {"label": "section_header", "id": 16, "page_no": 142, "cluster": {"id": 16, "label": "section_header", "bbox": {"l": 64.61199188232422, "t": 469.3950500488281, "r": 195.13574, "b": 485.1037, "coord_origin": "TOPLEFT"}, "confidence": 0.9526883959770203, "cells": [{"id": 31, "text": "Online resources", "bbox": {"l": 64.800003, "t": 470.3407, "r": 195.13574, "b": 485.1037, "coord_origin": "TOPLEFT"}}]}, "text": "Online resources"}, {"label": "text", "id": 17, "page_no": 142, "cluster": {"id": 17, "label": "text", "bbox": {"l": 135.812255859375, "t": 501.83233642578125, "r": 399.36154, "b": 511.82159, "coord_origin": "TOPLEFT"}, "confidence": 0.9205816388130188, "cells": [{"id": 32, "text": "These websites are relevant as further information sources:", "bbox": {"l": 136.8, "t": 502.60861, "r": 399.36154, "b": 511.82159, "coord_origin": "TOPLEFT"}}]}, "text": "These websites are relevant as further information sources:"}, {"label": "list_item", "id": 18, "page_no": 142, "cluster": {"id": 18, "label": "list_item", "bbox": {"l": 135.69252014160156, "t": 518.7003784179688, "r": 457.80386, "b": 528.908203125, "coord_origin": "TOPLEFT"}, "confidence": 0.928091824054718, "cells": [{"id": 33, "text": "GLYPH", "bbox": {"l": 136.8, "t": 519.7975799999999, "r": 141.78, "b": 528.57236, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Database programming topic of the IBM i 7.2 IBM Knowledge Center:", "bbox": {"l": 151.20016, "t": 519.64819, "r": 457.80386, "b": 528.86118, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Database programming topic of the IBM i 7.2 IBM Knowledge Center:"}, {"label": "list_item", "id": 19, "page_no": 142, "cluster": {"id": 19, "label": "list_item", "bbox": {"l": 150.2280731201172, "t": 536.205322265625, "r": 545.99457, "b": 557.8463745117188, "coord_origin": "TOPLEFT"}, "confidence": 0.7536969184875488, "cells": [{"id": 35, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgdbp.htm?l", "bbox": {"l": 151.20016, "t": 536.7774, "r": 545.99457, "b": 545.55215, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "ang=en", "bbox": {"l": 151.20016, "t": 548.77721, "r": 181.13992, "b": 557.55196, "coord_origin": "TOPLEFT"}}]}, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgdbp.htm?l ang=en"}, {"label": "list_item", "id": 20, "page_no": 142, "cluster": {"id": 20, "label": "list_item", "bbox": {"l": 135.60523986816406, "t": 564.5147705078125, "r": 287.6324768066406, "b": 575.3772583007812, "coord_origin": "TOPLEFT"}, "confidence": 0.9084469079971313, "cells": [{"id": 37, "text": "GLYPH", "bbox": {"l": 136.8, "t": 565.81677, "r": 141.78, "b": 574.59152, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Identity Theft Resource Center", "bbox": {"l": 151.20016, "t": 565.66737, "r": 287.27969, "b": 574.88037, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Identity Theft Resource Center"}, {"label": "list_item", "id": 21, "page_no": 142, "cluster": {"id": 21, "label": "list_item", "bbox": {"l": 150.68099975585938, "t": 582.1913452148438, "r": 291.11823, "b": 592.1077880859375, "coord_origin": "TOPLEFT"}, "confidence": 0.6532412171363831, "cells": [{"id": 39, "text": "http://www.idtheftcenter.org", "bbox": {"l": 151.20016, "t": 582.79659, "r": 291.11823, "b": 591.57133, "coord_origin": "TOPLEFT"}}]}, "text": "http://www.idtheftcenter.org"}, {"label": "list_item", "id": 22, "page_no": 142, "cluster": {"id": 22, "label": "list_item", "bbox": {"l": 135.6503448486328, "t": 598.7340698242188, "r": 231.24367, "b": 608.84, "coord_origin": "TOPLEFT"}, "confidence": 0.9109565615653992, "cells": [{"id": 40, "text": "GLYPH", "bbox": {"l": 136.8, "t": 599.7764, "r": 141.78, "b": 608.55115, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Ponemon Institute", "bbox": {"l": 151.20016, "t": 599.627, "r": 231.24367, "b": 608.84, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Ponemon Institute"}, {"label": "list_item", "id": 23, "page_no": 142, "cluster": {"id": 23, "label": "list_item", "bbox": {"l": 150.75747680664062, "t": 615.7659912109375, "r": 266.09869, "b": 625.9202880859375, "coord_origin": "TOPLEFT"}, "confidence": 0.6917186975479126, "cells": [{"id": 42, "text": "http://www.ponemon.org/", "bbox": {"l": 151.20016, "t": 616.81596, "r": 266.09869, "b": 625.59071, "coord_origin": "TOPLEFT"}}]}, "text": "http://www.ponemon.org/"}], "body": [{"label": "section_header", "id": 2, "page_no": 142, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.800003, "t": 72.91483306884766, "r": 299.20081, "b": 96.60542297363281, "coord_origin": "TOPLEFT"}, "confidence": 0.9644432663917542, "cells": [{"id": 2, "text": "Related publications", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 299.20081, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Related publications"}, {"label": "text", "id": 3, "page_no": 142, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.75408935546875, "t": 132.06002807617188, "r": 530.0675, "b": 154.35791015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9717119932174683, "cells": [{"id": 3, "text": "The publications that are listed in this section are considered suitable for a more detailed ", "bbox": {"l": 136.8, "t": 132.64862000000005, "r": 530.0675, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "description of the topics that are covered in this paper.", "bbox": {"l": 136.8, "t": 144.64844000000005, "r": 376.55719, "b": 153.86145, "coord_origin": "TOPLEFT"}}]}, "text": "The publications that are listed in this section are considered suitable for a more detailed description of the topics that are covered in this paper."}, {"label": "section_header", "id": 4, "page_no": 142, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.5552978515625, "t": 181.37648010253906, "r": 205.97418, "b": 197.83837890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9622768759727478, "cells": [{"id": 5, "text": "Other publications", "bbox": {"l": 64.800003, "t": 182.34069999999997, "r": 205.97418, "b": 197.1037, "coord_origin": "TOPLEFT"}}]}, "text": "Other publications"}, {"label": "text", "id": 5, "page_no": 142, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.73150634765625, "t": 213.93795776367188, "r": 413.18115, "b": 224.1931915283203, "coord_origin": "TOPLEFT"}, "confidence": 0.9328869581222534, "cells": [{"id": 6, "text": "These publications are relevant as further information sources:", "bbox": {"l": 136.8, "t": 214.6087, "r": 413.18115, "b": 223.82172000000003, "coord_origin": "TOPLEFT"}}]}, "text": "These publications are relevant as further information sources:"}, {"label": "list_item", "id": 6, "page_no": 142, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.81341552734375, "t": 230.74234008789062, "r": 414.05658, "b": 240.96536254882812, "coord_origin": "TOPLEFT"}, "confidence": 0.9425700902938843, "cells": [{"id": 7, "text": "GLYPH", "bbox": {"l": 136.8, "t": 231.79767000000004, "r": 141.78, "b": 240.57245, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "IBM DB2 for i indexing methods and strategies", "bbox": {"l": 151.20016, "t": 231.64824999999996, "r": 356.53046, "b": 240.86127, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": " white paper:", "bbox": {"l": 356.58035, "t": 231.64824999999996, "r": 414.05658, "b": 240.86127, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH IBM DB2 for i indexing methods and strategies white paper:"}, {"label": "list_item", "id": 7, "page_no": 142, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 150.4676513671875, "t": 248.0777587890625, "r": 545.99457, "b": 270.6806945800781, "coord_origin": "TOPLEFT"}, "confidence": 0.7933239340782166, "cells": [{"id": 10, "text": "http://www.ibm.com/partnerworld/wps/servlet/ContentHandler/stg_ast_sys_wp_db2_i", "bbox": {"l": 151.20016, "t": 248.77747, "r": 545.99457, "b": 257.55224999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "_indexing_methods_strategies", "bbox": {"l": 151.20016, "t": 260.77728, "r": 291.11823, "b": 269.55206, "coord_origin": "TOPLEFT"}}]}, "text": "http://www.ibm.com/partnerworld/wps/servlet/ContentHandler/stg_ast_sys_wp_db2_i _indexing_methods_strategies"}, {"label": "list_item", "id": 8, "page_no": 142, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.8154296875, "t": 276.60491943359375, "r": 299.7695, "b": 286.8206799999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9148671627044678, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.8, "t": 277.75708, "r": 141.78, "b": 286.53186, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "IBM i Memo to Users Version 7.2", "bbox": {"l": 151.20016, "t": 277.60767, "r": 297.0036, "b": 286.8206799999999, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ":", "bbox": {"l": 297.00061, "t": 277.60767, "r": 299.7695, "b": 286.8206799999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH IBM i Memo to Users Version 7.2 :"}, {"label": "list_item", "id": 9, "page_no": 142, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 150.4538116455078, "t": 294.1251525878906, "r": 536.3565673828125, "b": 304.4701232910156, "coord_origin": "TOPLEFT"}, "confidence": 0.7976768016815186, "cells": [{"id": 15, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgmtu.htm", "bbox": {"l": 151.20015, "t": 294.79666, "r": 535.97485, "b": 303.57144, "coord_origin": "TOPLEFT"}}]}, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgmtu.htm"}, {"label": "list_item", "id": 10, "page_no": 142, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.64071655273438, "t": 310.49432373046875, "r": 371.40878, "b": 320.84006, "coord_origin": "TOPLEFT"}, "confidence": 0.9118204712867737, "cells": [{"id": 16, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 311.77646, "r": 141.77998, "b": 320.55124, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "IBM i Version 7.2 DB2 for i SQL Reference Guide", "bbox": {"l": 151.20015, "t": 311.62708, "r": 368.68774, "b": 320.84006, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": ":", "bbox": {"l": 368.63989, "t": 311.62708, "r": 371.40878, "b": 320.84006, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH IBM i Version 7.2 DB2 for i SQL Reference Guide :"}, {"label": "list_item", "id": 11, "page_no": 142, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 150.3872833251953, "t": 328.0414123535156, "r": 545.99457, "b": 349.66357421875, "coord_origin": "TOPLEFT"}, "confidence": 0.7908105850219727, "cells": [{"id": 19, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/db2/rbafzintro.htm?l", "bbox": {"l": 151.20013, "t": 328.75626, "r": 545.99457, "b": 337.5310400000001, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "ang=en", "bbox": {"l": 151.20013, "t": 340.75607, "r": 181.13989, "b": 349.53085, "coord_origin": "TOPLEFT"}}]}, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/db2/rbafzintro.htm?l ang=en"}, {"label": "list_item", "id": 12, "page_no": 142, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 135.63323974609375, "t": 356.6874694824219, "r": 355.62915, "b": 366.8592499999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9359384179115295, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.79997, "t": 357.79565, "r": 141.77997, "b": 366.57043, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "IBM i Version 7.2 Journal Management Guide", "bbox": {"l": 151.20013, "t": 357.64627, "r": 352.84634, "b": 366.8592499999999, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": ":", "bbox": {"l": 352.86026, "t": 357.64627, "r": 355.62915, "b": 366.8592499999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH IBM i Version 7.2 Journal Management Guide :"}, {"label": "list_item", "id": 13, "page_no": 142, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 150.4163360595703, "t": 374.12347412109375, "r": 545.99457, "b": 396.02581787109375, "coord_origin": "TOPLEFT"}, "confidence": 0.7968815565109253, "cells": [{"id": 24, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzaki/rzakiprintthis", "bbox": {"l": 151.20013, "t": 374.77545, "r": 545.99457, "b": 383.55023, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": ".htm?lang=en", "bbox": {"l": 151.20013, "t": 386.77527, "r": 211.1394, "b": 395.55005, "coord_origin": "TOPLEFT"}}]}, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzaki/rzakiprintthis .htm?lang=en"}, {"label": "list_item", "id": 14, "page_no": 142, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 135.4580078125, "t": 402.4890441894531, "r": 346.3946838378906, "b": 413.17169189453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9383506178855896, "cells": [{"id": 26, "text": "GLYPH", "bbox": {"l": 136.79997, "t": 403.75507, "r": 141.77997, "b": 412.52985, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "IBM i Version 7.2 Security Reference Guide", "bbox": {"l": 151.20013, "t": 403.60568, "r": 343.57654, "b": 412.81866, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": ":", "bbox": {"l": 343.56061, "t": 403.60568, "r": 346.3295, "b": 412.81866, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH IBM i Version 7.2 Security Reference Guide :"}, {"label": "list_item", "id": 15, "page_no": 142, "cluster": {"id": 15, "label": "list_item", "bbox": {"l": 150.8020477294922, "t": 419.9049377441406, "r": 546.1087036132812, "b": 442.11077880859375, "coord_origin": "TOPLEFT"}, "confidence": 0.7104644179344177, "cells": [{"id": 29, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzarl/rzarlkickoff.h", "bbox": {"l": 151.20015, "t": 420.79465, "r": 545.99457, "b": 429.56943, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "tm?lang=en", "bbox": {"l": 151.20015, "t": 432.79446, "r": 201.17941, "b": 441.5692399999999, "coord_origin": "TOPLEFT"}}]}, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzarl/rzarlkickoff.h tm?lang=en"}, {"label": "section_header", "id": 16, "page_no": 142, "cluster": {"id": 16, "label": "section_header", "bbox": {"l": 64.61199188232422, "t": 469.3950500488281, "r": 195.13574, "b": 485.1037, "coord_origin": "TOPLEFT"}, "confidence": 0.9526883959770203, "cells": [{"id": 31, "text": "Online resources", "bbox": {"l": 64.800003, "t": 470.3407, "r": 195.13574, "b": 485.1037, "coord_origin": "TOPLEFT"}}]}, "text": "Online resources"}, {"label": "text", "id": 17, "page_no": 142, "cluster": {"id": 17, "label": "text", "bbox": {"l": 135.812255859375, "t": 501.83233642578125, "r": 399.36154, "b": 511.82159, "coord_origin": "TOPLEFT"}, "confidence": 0.9205816388130188, "cells": [{"id": 32, "text": "These websites are relevant as further information sources:", "bbox": {"l": 136.8, "t": 502.60861, "r": 399.36154, "b": 511.82159, "coord_origin": "TOPLEFT"}}]}, "text": "These websites are relevant as further information sources:"}, {"label": "list_item", "id": 18, "page_no": 142, "cluster": {"id": 18, "label": "list_item", "bbox": {"l": 135.69252014160156, "t": 518.7003784179688, "r": 457.80386, "b": 528.908203125, "coord_origin": "TOPLEFT"}, "confidence": 0.928091824054718, "cells": [{"id": 33, "text": "GLYPH", "bbox": {"l": 136.8, "t": 519.7975799999999, "r": 141.78, "b": 528.57236, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Database programming topic of the IBM i 7.2 IBM Knowledge Center:", "bbox": {"l": 151.20016, "t": 519.64819, "r": 457.80386, "b": 528.86118, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Database programming topic of the IBM i 7.2 IBM Knowledge Center:"}, {"label": "list_item", "id": 19, "page_no": 142, "cluster": {"id": 19, "label": "list_item", "bbox": {"l": 150.2280731201172, "t": 536.205322265625, "r": 545.99457, "b": 557.8463745117188, "coord_origin": "TOPLEFT"}, "confidence": 0.7536969184875488, "cells": [{"id": 35, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgdbp.htm?l", "bbox": {"l": 151.20016, "t": 536.7774, "r": 545.99457, "b": 545.55215, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "ang=en", "bbox": {"l": 151.20016, "t": 548.77721, "r": 181.13992, "b": 557.55196, "coord_origin": "TOPLEFT"}}]}, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgdbp.htm?l ang=en"}, {"label": "list_item", "id": 20, "page_no": 142, "cluster": {"id": 20, "label": "list_item", "bbox": {"l": 135.60523986816406, "t": 564.5147705078125, "r": 287.6324768066406, "b": 575.3772583007812, "coord_origin": "TOPLEFT"}, "confidence": 0.9084469079971313, "cells": [{"id": 37, "text": "GLYPH", "bbox": {"l": 136.8, "t": 565.81677, "r": 141.78, "b": 574.59152, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Identity Theft Resource Center", "bbox": {"l": 151.20016, "t": 565.66737, "r": 287.27969, "b": 574.88037, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Identity Theft Resource Center"}, {"label": "list_item", "id": 21, "page_no": 142, "cluster": {"id": 21, "label": "list_item", "bbox": {"l": 150.68099975585938, "t": 582.1913452148438, "r": 291.11823, "b": 592.1077880859375, "coord_origin": "TOPLEFT"}, "confidence": 0.6532412171363831, "cells": [{"id": 39, "text": "http://www.idtheftcenter.org", "bbox": {"l": 151.20016, "t": 582.79659, "r": 291.11823, "b": 591.57133, "coord_origin": "TOPLEFT"}}]}, "text": "http://www.idtheftcenter.org"}, {"label": "list_item", "id": 22, "page_no": 142, "cluster": {"id": 22, "label": "list_item", "bbox": {"l": 135.6503448486328, "t": 598.7340698242188, "r": 231.24367, "b": 608.84, "coord_origin": "TOPLEFT"}, "confidence": 0.9109565615653992, "cells": [{"id": 40, "text": "GLYPH", "bbox": {"l": 136.8, "t": 599.7764, "r": 141.78, "b": 608.55115, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Ponemon Institute", "bbox": {"l": 151.20016, "t": 599.627, "r": 231.24367, "b": 608.84, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Ponemon Institute"}, {"label": "list_item", "id": 23, "page_no": 142, "cluster": {"id": 23, "label": "list_item", "bbox": {"l": 150.75747680664062, "t": 615.7659912109375, "r": 266.09869, "b": 625.9202880859375, "coord_origin": "TOPLEFT"}, "confidence": 0.6917186975479126, "cells": [{"id": 42, "text": "http://www.ponemon.org/", "bbox": {"l": 151.20016, "t": 616.81596, "r": 266.09869, "b": 625.59071, "coord_origin": "TOPLEFT"}}]}, "text": "http://www.ponemon.org/"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 142, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.680240631103516, "t": 754.7608032226562, "r": 257.24335, "b": 764.109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9499529600143433, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 142, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.1651000976562, "t": 754.2824096679688, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9230133295059204, "cells": [{"id": 1, "text": "127", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "127"}]}}, {"page_no": 143, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "128 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Help from IBM", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 172.86197, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "IBM Support and downloads", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 262.60373, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "ibm.com", "bbox": {"l": 136.8, "t": 120.67767000000003, "r": 171.77951, "b": 129.50225999999998, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "/support", "bbox": {"l": 171.77953, "t": 120.67767000000003, "r": 211.73904, "b": 129.45245, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "IBM Global Services", "bbox": {"l": 136.8, "t": 142.48803999999996, "r": 227.63222, "b": 151.70105, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ibm.com", "bbox": {"l": 136.8, "t": 159.67700000000002, "r": 171.77951, "b": 168.50158999999996, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "/services", "bbox": {"l": 171.77953, "t": 159.67700000000002, "r": 216.71904000000004, "b": 168.45177999999999, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.5219497680664, "t": 754.391845703125, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9169230461120605, "cells": [{"id": 0, "text": "128 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 98.66630554199219, "t": 754.5946655273438, "r": 339.9003601074219, "b": 764.0750732421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9336705803871155, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.73175811767578, "t": 70.09744262695312, "r": 172.86197, "b": 86.14898681640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9345404505729675, "cells": [{"id": 2, "text": "Help from IBM", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 172.86197, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 136.51719665527344, "t": 102.7090072631836, "r": 262.60373, "b": 113.38191986083984, "coord_origin": "TOPLEFT"}, "confidence": 0.8567046523094177, "cells": [{"id": 3, "text": "IBM Support and downloads", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 262.60373, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 136.8, "t": 120.41547393798828, "r": 211.73904, "b": 130.2474365234375, "coord_origin": "TOPLEFT"}, "confidence": 0.8032501339912415, "cells": [{"id": 4, "text": "ibm.com", "bbox": {"l": 136.8, "t": 120.67767000000003, "r": 171.77951, "b": 129.50225999999998, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "/support", "bbox": {"l": 171.77953, "t": 120.67767000000003, "r": 211.73904, "b": 129.45245, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.5938720703125, "t": 141.32887268066406, "r": 227.63222, "b": 151.70105, "coord_origin": "TOPLEFT"}, "confidence": 0.7982341051101685, "cells": [{"id": 6, "text": "IBM Global Services", "bbox": {"l": 136.8, "t": 142.48803999999996, "r": 227.63222, "b": 151.70105, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 136.8, "t": 159.01025390625, "r": 216.71904000000004, "b": 168.50158999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.8333450555801392, "cells": [{"id": 7, "text": "ibm.com", "bbox": {"l": 136.8, "t": 159.67700000000002, "r": 171.77951, "b": 168.50158999999996, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "/services", "bbox": {"l": 171.77953, "t": 159.67700000000002, "r": 216.71904000000004, "b": 168.45177999999999, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 143, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.5219497680664, "t": 754.391845703125, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9169230461120605, "cells": [{"id": 0, "text": "128 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "128"}, {"label": "page_footer", "id": 1, "page_no": 143, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.66630554199219, "t": 754.5946655273438, "r": 339.9003601074219, "b": 764.0750732421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9336705803871155, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "section_header", "id": 2, "page_no": 143, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.73175811767578, "t": 70.09744262695312, "r": 172.86197, "b": 86.14898681640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9345404505729675, "cells": [{"id": 2, "text": "Help from IBM", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 172.86197, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, "text": "Help from IBM"}, {"label": "text", "id": 3, "page_no": 143, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.51719665527344, "t": 102.7090072631836, "r": 262.60373, "b": 113.38191986083984, "coord_origin": "TOPLEFT"}, "confidence": 0.8567046523094177, "cells": [{"id": 3, "text": "IBM Support and downloads", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 262.60373, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Support and downloads"}, {"label": "text", "id": 4, "page_no": 143, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.8, "t": 120.41547393798828, "r": 211.73904, "b": 130.2474365234375, "coord_origin": "TOPLEFT"}, "confidence": 0.8032501339912415, "cells": [{"id": 4, "text": "ibm.com", "bbox": {"l": 136.8, "t": 120.67767000000003, "r": 171.77951, "b": 129.50225999999998, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "/support", "bbox": {"l": 171.77953, "t": 120.67767000000003, "r": 211.73904, "b": 129.45245, "coord_origin": "TOPLEFT"}}]}, "text": "ibm.com /support"}, {"label": "text", "id": 5, "page_no": 143, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.5938720703125, "t": 141.32887268066406, "r": 227.63222, "b": 151.70105, "coord_origin": "TOPLEFT"}, "confidence": 0.7982341051101685, "cells": [{"id": 6, "text": "IBM Global Services", "bbox": {"l": 136.8, "t": 142.48803999999996, "r": 227.63222, "b": 151.70105, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Global Services"}, {"label": "text", "id": 6, "page_no": 143, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.8, "t": 159.01025390625, "r": 216.71904000000004, "b": 168.50158999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.8333450555801392, "cells": [{"id": 7, "text": "ibm.com", "bbox": {"l": 136.8, "t": 159.67700000000002, "r": 171.77951, "b": 168.50158999999996, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "/services", "bbox": {"l": 171.77953, "t": 159.67700000000002, "r": 216.71904000000004, "b": 168.45177999999999, "coord_origin": "TOPLEFT"}}]}, "text": "ibm.com /services"}], "body": [{"label": "section_header", "id": 2, "page_no": 143, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.73175811767578, "t": 70.09744262695312, "r": 172.86197, "b": 86.14898681640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9345404505729675, "cells": [{"id": 2, "text": "Help from IBM", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 172.86197, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, "text": "Help from IBM"}, {"label": "text", "id": 3, "page_no": 143, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.51719665527344, "t": 102.7090072631836, "r": 262.60373, "b": 113.38191986083984, "coord_origin": "TOPLEFT"}, "confidence": 0.8567046523094177, "cells": [{"id": 3, "text": "IBM Support and downloads", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 262.60373, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Support and downloads"}, {"label": "text", "id": 4, "page_no": 143, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.8, "t": 120.41547393798828, "r": 211.73904, "b": 130.2474365234375, "coord_origin": "TOPLEFT"}, "confidence": 0.8032501339912415, "cells": [{"id": 4, "text": "ibm.com", "bbox": {"l": 136.8, "t": 120.67767000000003, "r": 171.77951, "b": 129.50225999999998, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "/support", "bbox": {"l": 171.77953, "t": 120.67767000000003, "r": 211.73904, "b": 129.45245, "coord_origin": "TOPLEFT"}}]}, "text": "ibm.com /support"}, {"label": "text", "id": 5, "page_no": 143, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.5938720703125, "t": 141.32887268066406, "r": 227.63222, "b": 151.70105, "coord_origin": "TOPLEFT"}, "confidence": 0.7982341051101685, "cells": [{"id": 6, "text": "IBM Global Services", "bbox": {"l": 136.8, "t": 142.48803999999996, "r": 227.63222, "b": 151.70105, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Global Services"}, {"label": "text", "id": 6, "page_no": 143, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.8, "t": 159.01025390625, "r": 216.71904000000004, "b": 168.50158999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.8333450555801392, "cells": [{"id": 7, "text": "ibm.com", "bbox": {"l": 136.8, "t": 159.67700000000002, "r": 171.77951, "b": 168.50158999999996, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "/services", "bbox": {"l": 171.77953, "t": 159.67700000000002, "r": 216.71904000000004, "b": 168.45177999999999, "coord_origin": "TOPLEFT"}}]}, "text": "ibm.com /services"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 143, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.5219497680664, "t": 754.391845703125, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9169230461120605, "cells": [{"id": 0, "text": "128 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "128"}, {"label": "page_footer", "id": 1, "page_no": 143, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.66630554199219, "t": 754.5946655273438, "r": 339.9003601074219, "b": 764.0750732421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9336705803871155, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 144, "size": {"width": 612.0, "height": 792.0}, "cells": [], "predictions": {"layout": {"clusters": []}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [], "body": [], "headers": []}}, {"page_no": 145, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "fi", "bbox": {"l": 558.11987, "t": 45.468689999999924, "r": 565.46039, "b": 54.68169999999998, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "REDP-5110-00", "bbox": {"l": 171.0, "t": 631.338, "r": 231.88769999999997, "b": 639.66301, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "INTERNATIONAL ", "bbox": {"l": 467.3399999999999, "t": 247.71831999999995, "r": 559.80933, "b": 260.16052, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "TECHNICAL", "bbox": {"l": 467.3399999999999, "t": 261.75842, "r": 529.50208, "b": 274.20061999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "SUPPORT", "bbox": {"l": 467.3399999999999, "t": 275.73839999999996, "r": 518.93317, "b": 288.1806, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "ORGANIZATION", "bbox": {"l": 467.3399999999999, "t": 289.71841, "r": 550.7475, "b": 302.16061, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "BUILDING TECHNICAL ", "bbox": {"l": 467.3399999999999, "t": 351.79199, "r": 571.70758, "b": 362.47198, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "INFORMATION BASED ON ", "bbox": {"l": 467.3399999999999, "t": 363.79199, "r": 587.38916, "b": 374.47198, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "PRACTICAL EXPERIENCE", "bbox": {"l": 467.3399999999999, "t": 375.79199, "r": 582.5556, "b": 386.47198, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "IBM Redbooks are developed ", "bbox": {"l": 467.3399999999999, "t": 399.8602900000001, "r": 587.46674, "b": 409.63251, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "by the IBM International ", "bbox": {"l": 467.3399999999999, "t": 410.90067, "r": 566.34229, "b": 420.67285, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Technical Support ", "bbox": {"l": 467.3399999999999, "t": 421.88068, "r": 543.20404, "b": 431.65289, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Organization. Experts from ", "bbox": {"l": 467.3399999999999, "t": 432.8606899999999, "r": 577.76697, "b": 442.63287, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "IBM, Customers and Partners ", "bbox": {"l": 467.3399999999999, "t": 443.90106, "r": 587.40948, "b": 453.67328, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "from around the world create ", "bbox": {"l": 467.3399999999999, "t": 454.88107, "r": 587.52051, "b": 464.65326, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "timely technical information ", "bbox": {"l": 467.3399999999999, "t": 465.86108, "r": 582.67505, "b": 475.6333, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "based on realistic scenarios. ", "bbox": {"l": 467.3399999999999, "t": 476.90146, "r": 585.46722, "b": 486.67365, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Specific recommendations ", "bbox": {"l": 467.3399999999999, "t": 487.88147, "r": 577.70874, "b": 497.65369, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "are provided to help you ", "bbox": {"l": 467.3399999999999, "t": 498.86148, "r": 568.03546, "b": 508.63367, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "implement IT solutions more ", "bbox": {"l": 467.3399999999999, "t": 509.90186, "r": 585.44525, "b": 519.67407, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "effectively in your ", "bbox": {"l": 467.3399999999999, "t": 520.8818699999999, "r": 541.4967, "b": 530.65405, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "environment.", "bbox": {"l": 467.3399999999999, "t": 531.8618799999999, "r": 520.64893, "b": 541.63406, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "For more information:", "bbox": {"l": 467.3399999999999, "t": 578.83191, "r": 570.948, "b": 589.5119, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ibm.com", "bbox": {"l": 467.3399999999999, "t": 590.83191, "r": 508.59961, "b": 601.5119, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "/redbooks", "bbox": {"l": 508.56000000000006, "t": 590.83191, "r": 552.74518, "b": 601.5119, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Redpaper", "bbox": {"l": 474.60001, "t": 164.05658000000005, "r": 580.88989, "b": 188.94097999999997, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "\u2122", "bbox": {"l": 582.53992, "t": 172.32714999999996, "r": 592.13989, "b": 181.20714999999996, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Row and Column Access Control ", "bbox": {"l": 27.0, "t": 73.63799999999992, "r": 447.36002, "b": 103.00800000000004, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Support in IBM DB2 for i", "bbox": {"l": 27.0, "t": 113.76000999999997, "r": 314.43002, "b": 140.46002, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Implement roles and ", "bbox": {"l": 26.700001, "t": 242.17200000000003, "r": 127.4436, "b": 252.85199, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "separation of duties", "bbox": {"l": 26.700001, "t": 256.15198, "r": 121.6608, "b": 266.83196999999996, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Leverage row ", "bbox": {"l": 26.700001, "t": 284.17197, "r": 93.970795, "b": 294.85196, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "permissions on the ", "bbox": {"l": 26.700001, "t": 298.15198000000004, "r": 120.28319999999998, "b": 308.83197, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "database", "bbox": {"l": 26.700001, "t": 312.19199000000003, "r": 70.413605, "b": 322.87198, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Protect columns by ", "bbox": {"l": 26.700001, "t": 340.15198000000004, "r": 121.44960000000002, "b": 350.83197, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "defining column ", "bbox": {"l": 26.700001, "t": 354.19199000000003, "r": 106.5696, "b": 364.87198, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "masks", "bbox": {"l": 26.700001, "t": 368.1720000000001, "r": 58.194, "b": 378.85199, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "This IBM Redpaper publication provides information about the IBM i 7.2 ", "bbox": {"l": 152.94, "t": 242.72857999999997, "r": 413.99057, "b": 251.59295999999995, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "feature of IBM DB2 for i Row and Column Access Control (RCAC). It ", "bbox": {"l": 152.94002, "t": 254.72839, "r": 401.85635, "b": 263.59277, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "offers a broad description of the function and advantages of controlling ", "bbox": {"l": 152.94002, "t": 266.72821, "r": 414.08423, "b": 275.59259, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "access to data in a comprehensive and transparent way. This ", "bbox": {"l": 152.94002, "t": 278.72803, "r": 381.24014, "b": 287.59244, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "publication helps you understand the capabilities of RCAC and provides ", "bbox": {"l": 152.94002, "t": 290.72784, "r": 414.07031, "b": 299.59225, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "examples of defining, creating, and implementing the row permissions ", "bbox": {"l": 152.94002, "t": 302.72766, "r": 414.05447, "b": 311.59207, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "and column masks in a relational database environment.", "bbox": {"l": 152.94002, "t": 314.72747999999996, "r": 362.3291, "b": 323.59189, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "This paper is intended for database engineers, data-centric application ", "bbox": {"l": 152.94002, "t": 331.70728, "r": 414.17383, "b": 340.57169, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "developers, and security officers who want to design and implement ", "bbox": {"l": 152.94002, "t": 343.70709, "r": 407.61029, "b": 352.5715, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "RCAC as a part of their data control and governance policy. A solid ", "bbox": {"l": 152.94002, "t": 355.70691, "r": 399.29565, "b": 364.57132, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "background in IBM i object level security, DB2 for i relational database ", "bbox": {"l": 152.94002, "t": 367.70673, "r": 414.0603, "b": 376.57114, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "concepts, and SQL is assumed.", "bbox": {"l": 152.94002, "t": 379.70654, "r": 268.86945, "b": 388.57095, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Back cover", "bbox": {"l": 287.22, "t": 28.54803000000004, "r": 414.24481, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "picture", "bbox": {"l": 485.1698303222656, "t": 25.259197235107422, "r": 566.2962036132812, "b": 54.68169999999998, "coord_origin": "TOPLEFT"}, "confidence": 0.9404253363609314, "cells": [{"id": 0, "text": "fi", "bbox": {"l": 558.11987, "t": 45.468689999999924, "r": 565.46039, "b": 54.68169999999998, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 170.78512573242188, "t": 630.505859375, "r": 232.11270141601562, "b": 639.66301, "coord_origin": "TOPLEFT"}, "confidence": 0.7700248956680298, "cells": [{"id": 1, "text": "REDP-5110-00", "bbox": {"l": 171.0, "t": 631.338, "r": 231.88769999999997, "b": 639.66301, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 466.3692626953125, "t": 247.39378356933594, "r": 559.80933, "b": 302.16061, "coord_origin": "TOPLEFT"}, "confidence": 0.8532671332359314, "cells": [{"id": 2, "text": "INTERNATIONAL ", "bbox": {"l": 467.3399999999999, "t": 247.71831999999995, "r": 559.80933, "b": 260.16052, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "TECHNICAL", "bbox": {"l": 467.3399999999999, "t": 261.75842, "r": 529.50208, "b": 274.20061999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "SUPPORT", "bbox": {"l": 467.3399999999999, "t": 275.73839999999996, "r": 518.93317, "b": 288.1806, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "ORGANIZATION", "bbox": {"l": 467.3399999999999, "t": 289.71841, "r": 550.7475, "b": 302.16061, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 466.3262939453125, "t": 351.4299011230469, "r": 587.38916, "b": 386.47198, "coord_origin": "TOPLEFT"}, "confidence": 0.7157137989997864, "cells": [{"id": 6, "text": "BUILDING TECHNICAL ", "bbox": {"l": 467.3399999999999, "t": 351.79199, "r": 571.70758, "b": 362.47198, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "INFORMATION BASED ON ", "bbox": {"l": 467.3399999999999, "t": 363.79199, "r": 587.38916, "b": 374.47198, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "PRACTICAL EXPERIENCE", "bbox": {"l": 467.3399999999999, "t": 375.79199, "r": 582.5556, "b": 386.47198, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 466.1037292480469, "t": 398.81231689453125, "r": 587.52051, "b": 541.63406, "coord_origin": "TOPLEFT"}, "confidence": 0.9518945813179016, "cells": [{"id": 9, "text": "IBM Redbooks are developed ", "bbox": {"l": 467.3399999999999, "t": 399.8602900000001, "r": 587.46674, "b": 409.63251, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "by the IBM International ", "bbox": {"l": 467.3399999999999, "t": 410.90067, "r": 566.34229, "b": 420.67285, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Technical Support ", "bbox": {"l": 467.3399999999999, "t": 421.88068, "r": 543.20404, "b": 431.65289, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Organization. Experts from ", "bbox": {"l": 467.3399999999999, "t": 432.8606899999999, "r": 577.76697, "b": 442.63287, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "IBM, Customers and Partners ", "bbox": {"l": 467.3399999999999, "t": 443.90106, "r": 587.40948, "b": 453.67328, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "from around the world create ", "bbox": {"l": 467.3399999999999, "t": 454.88107, "r": 587.52051, "b": 464.65326, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "timely technical information ", "bbox": {"l": 467.3399999999999, "t": 465.86108, "r": 582.67505, "b": 475.6333, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "based on realistic scenarios. ", "bbox": {"l": 467.3399999999999, "t": 476.90146, "r": 585.46722, "b": 486.67365, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Specific recommendations ", "bbox": {"l": 467.3399999999999, "t": 487.88147, "r": 577.70874, "b": 497.65369, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "are provided to help you ", "bbox": {"l": 467.3399999999999, "t": 498.86148, "r": 568.03546, "b": 508.63367, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "implement IT solutions more ", "bbox": {"l": 467.3399999999999, "t": 509.90186, "r": 585.44525, "b": 519.67407, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "effectively in your ", "bbox": {"l": 467.3399999999999, "t": 520.8818699999999, "r": 541.4967, "b": 530.65405, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "environment.", "bbox": {"l": 467.3399999999999, "t": 531.8618799999999, "r": 520.64893, "b": 541.63406, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 466.66748046875, "t": 577.88818359375, "r": 571.0052490234375, "b": 601.5119, "coord_origin": "TOPLEFT"}, "confidence": 0.8230004906654358, "cells": [{"id": 22, "text": "For more information:", "bbox": {"l": 467.3399999999999, "t": 578.83191, "r": 570.948, "b": 589.5119, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ibm.com", "bbox": {"l": 467.3399999999999, "t": 590.83191, "r": 508.59961, "b": 601.5119, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "/redbooks", "bbox": {"l": 508.56000000000006, "t": 590.83191, "r": 552.74518, "b": 601.5119, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "picture", "bbox": {"l": 474.35540771484375, "t": 80.05133819580078, "r": 592.2726440429688, "b": 189.8126220703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9696109890937805, "cells": [{"id": 25, "text": "Redpaper", "bbox": {"l": 474.60001, "t": 164.05658000000005, "r": 580.88989, "b": 188.94097999999997, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "\u2122", "bbox": {"l": 582.53992, "t": 172.32714999999996, "r": 592.13989, "b": 181.20714999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "section_header", "bbox": {"l": 26.454715728759766, "t": 71.63792419433594, "r": 447.36002, "b": 141.0381317138672, "coord_origin": "TOPLEFT"}, "confidence": 0.7128154635429382, "cells": [{"id": 27, "text": "Row and Column Access Control ", "bbox": {"l": 27.0, "t": 73.63799999999992, "r": 447.36002, "b": 103.00800000000004, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Support in IBM DB2 for i", "bbox": {"l": 27.0, "t": 113.76000999999997, "r": 314.43002, "b": 140.46002, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 26.35322380065918, "t": 240.97860717773438, "r": 127.4436, "b": 267.21185302734375, "coord_origin": "TOPLEFT"}, "confidence": 0.8400375843048096, "cells": [{"id": 29, "text": "Implement roles and ", "bbox": {"l": 26.700001, "t": 242.17200000000003, "r": 127.4436, "b": 252.85199, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "separation of duties", "bbox": {"l": 26.700001, "t": 256.15198, "r": 121.6608, "b": 266.83196999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 26.22105598449707, "t": 283.7095947265625, "r": 120.28319999999998, "b": 322.87198, "coord_origin": "TOPLEFT"}, "confidence": 0.8828509449958801, "cells": [{"id": 31, "text": "Leverage row ", "bbox": {"l": 26.700001, "t": 284.17197, "r": 93.970795, "b": 294.85196, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "permissions on the ", "bbox": {"l": 26.700001, "t": 298.15198000000004, "r": 120.28319999999998, "b": 308.83197, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "database", "bbox": {"l": 26.700001, "t": 312.19199000000003, "r": 70.413605, "b": 322.87198, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 26.226221084594727, "t": 339.11865234375, "r": 121.44960000000002, "b": 378.85199, "coord_origin": "TOPLEFT"}, "confidence": 0.9064874649047852, "cells": [{"id": 34, "text": "Protect columns by ", "bbox": {"l": 26.700001, "t": 340.15198000000004, "r": 121.44960000000002, "b": 350.83197, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "defining column ", "bbox": {"l": 26.700001, "t": 354.19199000000003, "r": 106.5696, "b": 364.87198, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "masks", "bbox": {"l": 26.700001, "t": 368.1720000000001, "r": 58.194, "b": 378.85199, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 152.25205993652344, "t": 241.8492889404297, "r": 414.08423, "b": 323.59189, "coord_origin": "TOPLEFT"}, "confidence": 0.9789718389511108, "cells": [{"id": 37, "text": "This IBM Redpaper publication provides information about the IBM i 7.2 ", "bbox": {"l": 152.94, "t": 242.72857999999997, "r": 413.99057, "b": 251.59295999999995, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "feature of IBM DB2 for i Row and Column Access Control (RCAC). It ", "bbox": {"l": 152.94002, "t": 254.72839, "r": 401.85635, "b": 263.59277, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "offers a broad description of the function and advantages of controlling ", "bbox": {"l": 152.94002, "t": 266.72821, "r": 414.08423, "b": 275.59259, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "access to data in a comprehensive and transparent way. This ", "bbox": {"l": 152.94002, "t": 278.72803, "r": 381.24014, "b": 287.59244, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "publication helps you understand the capabilities of RCAC and provides ", "bbox": {"l": 152.94002, "t": 290.72784, "r": 414.07031, "b": 299.59225, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "examples of defining, creating, and implementing the row permissions ", "bbox": {"l": 152.94002, "t": 302.72766, "r": 414.05447, "b": 311.59207, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "and column masks in a relational database environment.", "bbox": {"l": 152.94002, "t": 314.72747999999996, "r": 362.3291, "b": 323.59189, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 152.3572540283203, "t": 330.5283203125, "r": 414.17383, "b": 388.909912109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9799743890762329, "cells": [{"id": 44, "text": "This paper is intended for database engineers, data-centric application ", "bbox": {"l": 152.94002, "t": 331.70728, "r": 414.17383, "b": 340.57169, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "developers, and security officers who want to design and implement ", "bbox": {"l": 152.94002, "t": 343.70709, "r": 407.61029, "b": 352.5715, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "RCAC as a part of their data control and governance policy. A solid ", "bbox": {"l": 152.94002, "t": 355.70691, "r": 399.29565, "b": 364.57132, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "background in IBM i object level security, DB2 for i relational database ", "bbox": {"l": 152.94002, "t": 367.70673, "r": 414.0603, "b": 376.57114, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "concepts, and SQL is assumed.", "bbox": {"l": 152.94002, "t": 379.70654, "r": 268.86945, "b": 388.57095, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 287.22, "t": 28.54803000000004, "r": 414.24481, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 49, "text": "Back cover", "bbox": {"l": 287.22, "t": 28.54803000000004, "r": 414.24481, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "picture", "id": 0, "page_no": 145, "cluster": {"id": 0, "label": "picture", "bbox": {"l": 485.1698303222656, "t": 25.259197235107422, "r": 566.2962036132812, "b": 54.68169999999998, "coord_origin": "TOPLEFT"}, "confidence": 0.9404253363609314, "cells": [{"id": 0, "text": "fi", "bbox": {"l": 558.11987, "t": 45.468689999999924, "r": 565.46039, "b": 54.68169999999998, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "page_footer", "id": 1, "page_no": 145, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 170.78512573242188, "t": 630.505859375, "r": 232.11270141601562, "b": 639.66301, "coord_origin": "TOPLEFT"}, "confidence": 0.7700248956680298, "cells": [{"id": 1, "text": "REDP-5110-00", "bbox": {"l": 171.0, "t": 631.338, "r": 231.88769999999997, "b": 639.66301, "coord_origin": "TOPLEFT"}}]}, "text": "REDP-5110-00"}, {"label": "text", "id": 2, "page_no": 145, "cluster": {"id": 2, "label": "text", "bbox": {"l": 466.3692626953125, "t": 247.39378356933594, "r": 559.80933, "b": 302.16061, "coord_origin": "TOPLEFT"}, "confidence": 0.8532671332359314, "cells": [{"id": 2, "text": "INTERNATIONAL ", "bbox": {"l": 467.3399999999999, "t": 247.71831999999995, "r": 559.80933, "b": 260.16052, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "TECHNICAL", "bbox": {"l": 467.3399999999999, "t": 261.75842, "r": 529.50208, "b": 274.20061999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "SUPPORT", "bbox": {"l": 467.3399999999999, "t": 275.73839999999996, "r": 518.93317, "b": 288.1806, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "ORGANIZATION", "bbox": {"l": 467.3399999999999, "t": 289.71841, "r": 550.7475, "b": 302.16061, "coord_origin": "TOPLEFT"}}]}, "text": "INTERNATIONAL TECHNICAL SUPPORT ORGANIZATION"}, {"label": "text", "id": 3, "page_no": 145, "cluster": {"id": 3, "label": "text", "bbox": {"l": 466.3262939453125, "t": 351.4299011230469, "r": 587.38916, "b": 386.47198, "coord_origin": "TOPLEFT"}, "confidence": 0.7157137989997864, "cells": [{"id": 6, "text": "BUILDING TECHNICAL ", "bbox": {"l": 467.3399999999999, "t": 351.79199, "r": 571.70758, "b": 362.47198, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "INFORMATION BASED ON ", "bbox": {"l": 467.3399999999999, "t": 363.79199, "r": 587.38916, "b": 374.47198, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "PRACTICAL EXPERIENCE", "bbox": {"l": 467.3399999999999, "t": 375.79199, "r": 582.5556, "b": 386.47198, "coord_origin": "TOPLEFT"}}]}, "text": "BUILDING TECHNICAL INFORMATION BASED ON PRACTICAL EXPERIENCE"}, {"label": "text", "id": 4, "page_no": 145, "cluster": {"id": 4, "label": "text", "bbox": {"l": 466.1037292480469, "t": 398.81231689453125, "r": 587.52051, "b": 541.63406, "coord_origin": "TOPLEFT"}, "confidence": 0.9518945813179016, "cells": [{"id": 9, "text": "IBM Redbooks are developed ", "bbox": {"l": 467.3399999999999, "t": 399.8602900000001, "r": 587.46674, "b": 409.63251, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "by the IBM International ", "bbox": {"l": 467.3399999999999, "t": 410.90067, "r": 566.34229, "b": 420.67285, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Technical Support ", "bbox": {"l": 467.3399999999999, "t": 421.88068, "r": 543.20404, "b": 431.65289, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Organization. Experts from ", "bbox": {"l": 467.3399999999999, "t": 432.8606899999999, "r": 577.76697, "b": 442.63287, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "IBM, Customers and Partners ", "bbox": {"l": 467.3399999999999, "t": 443.90106, "r": 587.40948, "b": 453.67328, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "from around the world create ", "bbox": {"l": 467.3399999999999, "t": 454.88107, "r": 587.52051, "b": 464.65326, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "timely technical information ", "bbox": {"l": 467.3399999999999, "t": 465.86108, "r": 582.67505, "b": 475.6333, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "based on realistic scenarios. ", "bbox": {"l": 467.3399999999999, "t": 476.90146, "r": 585.46722, "b": 486.67365, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Specific recommendations ", "bbox": {"l": 467.3399999999999, "t": 487.88147, "r": 577.70874, "b": 497.65369, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "are provided to help you ", "bbox": {"l": 467.3399999999999, "t": 498.86148, "r": 568.03546, "b": 508.63367, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "implement IT solutions more ", "bbox": {"l": 467.3399999999999, "t": 509.90186, "r": 585.44525, "b": 519.67407, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "effectively in your ", "bbox": {"l": 467.3399999999999, "t": 520.8818699999999, "r": 541.4967, "b": 530.65405, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "environment.", "bbox": {"l": 467.3399999999999, "t": 531.8618799999999, "r": 520.64893, "b": 541.63406, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Redbooks are developed by the IBM International Technical Support Organization. Experts from IBM, Customers and Partners from around the world create timely technical information based on realistic scenarios. Specific recommendations are provided to help you implement IT solutions more effectively in your environment."}, {"label": "text", "id": 5, "page_no": 145, "cluster": {"id": 5, "label": "text", "bbox": {"l": 466.66748046875, "t": 577.88818359375, "r": 571.0052490234375, "b": 601.5119, "coord_origin": "TOPLEFT"}, "confidence": 0.8230004906654358, "cells": [{"id": 22, "text": "For more information:", "bbox": {"l": 467.3399999999999, "t": 578.83191, "r": 570.948, "b": 589.5119, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ibm.com", "bbox": {"l": 467.3399999999999, "t": 590.83191, "r": 508.59961, "b": 601.5119, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "/redbooks", "bbox": {"l": 508.56000000000006, "t": 590.83191, "r": 552.74518, "b": 601.5119, "coord_origin": "TOPLEFT"}}]}, "text": "For more information: ibm.com /redbooks"}, {"label": "picture", "id": 6, "page_no": 145, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 474.35540771484375, "t": 80.05133819580078, "r": 592.2726440429688, "b": 189.8126220703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9696109890937805, "cells": [{"id": 25, "text": "Redpaper", "bbox": {"l": 474.60001, "t": 164.05658000000005, "r": 580.88989, "b": 188.94097999999997, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "\u2122", "bbox": {"l": 582.53992, "t": 172.32714999999996, "r": 592.13989, "b": 181.20714999999996, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "section_header", "id": 7, "page_no": 145, "cluster": {"id": 7, "label": "section_header", "bbox": {"l": 26.454715728759766, "t": 71.63792419433594, "r": 447.36002, "b": 141.0381317138672, "coord_origin": "TOPLEFT"}, "confidence": 0.7128154635429382, "cells": [{"id": 27, "text": "Row and Column Access Control ", "bbox": {"l": 27.0, "t": 73.63799999999992, "r": 447.36002, "b": 103.00800000000004, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Support in IBM DB2 for i", "bbox": {"l": 27.0, "t": 113.76000999999997, "r": 314.43002, "b": 140.46002, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 8, "page_no": 145, "cluster": {"id": 8, "label": "text", "bbox": {"l": 26.35322380065918, "t": 240.97860717773438, "r": 127.4436, "b": 267.21185302734375, "coord_origin": "TOPLEFT"}, "confidence": 0.8400375843048096, "cells": [{"id": 29, "text": "Implement roles and ", "bbox": {"l": 26.700001, "t": 242.17200000000003, "r": 127.4436, "b": 252.85199, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "separation of duties", "bbox": {"l": 26.700001, "t": 256.15198, "r": 121.6608, "b": 266.83196999999996, "coord_origin": "TOPLEFT"}}]}, "text": "Implement roles and separation of duties"}, {"label": "text", "id": 9, "page_no": 145, "cluster": {"id": 9, "label": "text", "bbox": {"l": 26.22105598449707, "t": 283.7095947265625, "r": 120.28319999999998, "b": 322.87198, "coord_origin": "TOPLEFT"}, "confidence": 0.8828509449958801, "cells": [{"id": 31, "text": "Leverage row ", "bbox": {"l": 26.700001, "t": 284.17197, "r": 93.970795, "b": 294.85196, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "permissions on the ", "bbox": {"l": 26.700001, "t": 298.15198000000004, "r": 120.28319999999998, "b": 308.83197, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "database", "bbox": {"l": 26.700001, "t": 312.19199000000003, "r": 70.413605, "b": 322.87198, "coord_origin": "TOPLEFT"}}]}, "text": "Leverage row permissions on the database"}, {"label": "text", "id": 10, "page_no": 145, "cluster": {"id": 10, "label": "text", "bbox": {"l": 26.226221084594727, "t": 339.11865234375, "r": 121.44960000000002, "b": 378.85199, "coord_origin": "TOPLEFT"}, "confidence": 0.9064874649047852, "cells": [{"id": 34, "text": "Protect columns by ", "bbox": {"l": 26.700001, "t": 340.15198000000004, "r": 121.44960000000002, "b": 350.83197, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "defining column ", "bbox": {"l": 26.700001, "t": 354.19199000000003, "r": 106.5696, "b": 364.87198, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "masks", "bbox": {"l": 26.700001, "t": 368.1720000000001, "r": 58.194, "b": 378.85199, "coord_origin": "TOPLEFT"}}]}, "text": "Protect columns by defining column masks"}, {"label": "text", "id": 11, "page_no": 145, "cluster": {"id": 11, "label": "text", "bbox": {"l": 152.25205993652344, "t": 241.8492889404297, "r": 414.08423, "b": 323.59189, "coord_origin": "TOPLEFT"}, "confidence": 0.9789718389511108, "cells": [{"id": 37, "text": "This IBM Redpaper publication provides information about the IBM i 7.2 ", "bbox": {"l": 152.94, "t": 242.72857999999997, "r": 413.99057, "b": 251.59295999999995, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "feature of IBM DB2 for i Row and Column Access Control (RCAC). It ", "bbox": {"l": 152.94002, "t": 254.72839, "r": 401.85635, "b": 263.59277, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "offers a broad description of the function and advantages of controlling ", "bbox": {"l": 152.94002, "t": 266.72821, "r": 414.08423, "b": 275.59259, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "access to data in a comprehensive and transparent way. This ", "bbox": {"l": 152.94002, "t": 278.72803, "r": 381.24014, "b": 287.59244, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "publication helps you understand the capabilities of RCAC and provides ", "bbox": {"l": 152.94002, "t": 290.72784, "r": 414.07031, "b": 299.59225, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "examples of defining, creating, and implementing the row permissions ", "bbox": {"l": 152.94002, "t": 302.72766, "r": 414.05447, "b": 311.59207, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "and column masks in a relational database environment.", "bbox": {"l": 152.94002, "t": 314.72747999999996, "r": 362.3291, "b": 323.59189, "coord_origin": "TOPLEFT"}}]}, "text": "This IBM Redpaper publication provides information about the IBM i 7.2 feature of IBM DB2 for i Row and Column Access Control (RCAC). It offers a broad description of the function and advantages of controlling access to data in a comprehensive and transparent way. This publication helps you understand the capabilities of RCAC and provides examples of defining, creating, and implementing the row permissions and column masks in a relational database environment."}, {"label": "text", "id": 12, "page_no": 145, "cluster": {"id": 12, "label": "text", "bbox": {"l": 152.3572540283203, "t": 330.5283203125, "r": 414.17383, "b": 388.909912109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9799743890762329, "cells": [{"id": 44, "text": "This paper is intended for database engineers, data-centric application ", "bbox": {"l": 152.94002, "t": 331.70728, "r": 414.17383, "b": 340.57169, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "developers, and security officers who want to design and implement ", "bbox": {"l": 152.94002, "t": 343.70709, "r": 407.61029, "b": 352.5715, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "RCAC as a part of their data control and governance policy. A solid ", "bbox": {"l": 152.94002, "t": 355.70691, "r": 399.29565, "b": 364.57132, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "background in IBM i object level security, DB2 for i relational database ", "bbox": {"l": 152.94002, "t": 367.70673, "r": 414.0603, "b": 376.57114, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "concepts, and SQL is assumed.", "bbox": {"l": 152.94002, "t": 379.70654, "r": 268.86945, "b": 388.57095, "coord_origin": "TOPLEFT"}}]}, "text": "This paper is intended for database engineers, data-centric application developers, and security officers who want to design and implement RCAC as a part of their data control and governance policy. A solid background in IBM i object level security, DB2 for i relational database concepts, and SQL is assumed."}, {"label": "text", "id": 13, "page_no": 145, "cluster": {"id": 13, "label": "text", "bbox": {"l": 287.22, "t": 28.54803000000004, "r": 414.24481, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 49, "text": "Back cover", "bbox": {"l": 287.22, "t": 28.54803000000004, "r": 414.24481, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}}]}, "text": "Back cover"}], "body": [{"label": "picture", "id": 0, "page_no": 145, "cluster": {"id": 0, "label": "picture", "bbox": {"l": 485.1698303222656, "t": 25.259197235107422, "r": 566.2962036132812, "b": 54.68169999999998, "coord_origin": "TOPLEFT"}, "confidence": 0.9404253363609314, "cells": [{"id": 0, "text": "fi", "bbox": {"l": 558.11987, "t": 45.468689999999924, "r": 565.46039, "b": 54.68169999999998, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "text", "id": 2, "page_no": 145, "cluster": {"id": 2, "label": "text", "bbox": {"l": 466.3692626953125, "t": 247.39378356933594, "r": 559.80933, "b": 302.16061, "coord_origin": "TOPLEFT"}, "confidence": 0.8532671332359314, "cells": [{"id": 2, "text": "INTERNATIONAL ", "bbox": {"l": 467.3399999999999, "t": 247.71831999999995, "r": 559.80933, "b": 260.16052, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "TECHNICAL", "bbox": {"l": 467.3399999999999, "t": 261.75842, "r": 529.50208, "b": 274.20061999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "SUPPORT", "bbox": {"l": 467.3399999999999, "t": 275.73839999999996, "r": 518.93317, "b": 288.1806, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "ORGANIZATION", "bbox": {"l": 467.3399999999999, "t": 289.71841, "r": 550.7475, "b": 302.16061, "coord_origin": "TOPLEFT"}}]}, "text": "INTERNATIONAL TECHNICAL SUPPORT ORGANIZATION"}, {"label": "text", "id": 3, "page_no": 145, "cluster": {"id": 3, "label": "text", "bbox": {"l": 466.3262939453125, "t": 351.4299011230469, "r": 587.38916, "b": 386.47198, "coord_origin": "TOPLEFT"}, "confidence": 0.7157137989997864, "cells": [{"id": 6, "text": "BUILDING TECHNICAL ", "bbox": {"l": 467.3399999999999, "t": 351.79199, "r": 571.70758, "b": 362.47198, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "INFORMATION BASED ON ", "bbox": {"l": 467.3399999999999, "t": 363.79199, "r": 587.38916, "b": 374.47198, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "PRACTICAL EXPERIENCE", "bbox": {"l": 467.3399999999999, "t": 375.79199, "r": 582.5556, "b": 386.47198, "coord_origin": "TOPLEFT"}}]}, "text": "BUILDING TECHNICAL INFORMATION BASED ON PRACTICAL EXPERIENCE"}, {"label": "text", "id": 4, "page_no": 145, "cluster": {"id": 4, "label": "text", "bbox": {"l": 466.1037292480469, "t": 398.81231689453125, "r": 587.52051, "b": 541.63406, "coord_origin": "TOPLEFT"}, "confidence": 0.9518945813179016, "cells": [{"id": 9, "text": "IBM Redbooks are developed ", "bbox": {"l": 467.3399999999999, "t": 399.8602900000001, "r": 587.46674, "b": 409.63251, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "by the IBM International ", "bbox": {"l": 467.3399999999999, "t": 410.90067, "r": 566.34229, "b": 420.67285, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Technical Support ", "bbox": {"l": 467.3399999999999, "t": 421.88068, "r": 543.20404, "b": 431.65289, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Organization. Experts from ", "bbox": {"l": 467.3399999999999, "t": 432.8606899999999, "r": 577.76697, "b": 442.63287, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "IBM, Customers and Partners ", "bbox": {"l": 467.3399999999999, "t": 443.90106, "r": 587.40948, "b": 453.67328, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "from around the world create ", "bbox": {"l": 467.3399999999999, "t": 454.88107, "r": 587.52051, "b": 464.65326, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "timely technical information ", "bbox": {"l": 467.3399999999999, "t": 465.86108, "r": 582.67505, "b": 475.6333, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "based on realistic scenarios. ", "bbox": {"l": 467.3399999999999, "t": 476.90146, "r": 585.46722, "b": 486.67365, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Specific recommendations ", "bbox": {"l": 467.3399999999999, "t": 487.88147, "r": 577.70874, "b": 497.65369, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "are provided to help you ", "bbox": {"l": 467.3399999999999, "t": 498.86148, "r": 568.03546, "b": 508.63367, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "implement IT solutions more ", "bbox": {"l": 467.3399999999999, "t": 509.90186, "r": 585.44525, "b": 519.67407, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "effectively in your ", "bbox": {"l": 467.3399999999999, "t": 520.8818699999999, "r": 541.4967, "b": 530.65405, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "environment.", "bbox": {"l": 467.3399999999999, "t": 531.8618799999999, "r": 520.64893, "b": 541.63406, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Redbooks are developed by the IBM International Technical Support Organization. Experts from IBM, Customers and Partners from around the world create timely technical information based on realistic scenarios. Specific recommendations are provided to help you implement IT solutions more effectively in your environment."}, {"label": "text", "id": 5, "page_no": 145, "cluster": {"id": 5, "label": "text", "bbox": {"l": 466.66748046875, "t": 577.88818359375, "r": 571.0052490234375, "b": 601.5119, "coord_origin": "TOPLEFT"}, "confidence": 0.8230004906654358, "cells": [{"id": 22, "text": "For more information:", "bbox": {"l": 467.3399999999999, "t": 578.83191, "r": 570.948, "b": 589.5119, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ibm.com", "bbox": {"l": 467.3399999999999, "t": 590.83191, "r": 508.59961, "b": 601.5119, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "/redbooks", "bbox": {"l": 508.56000000000006, "t": 590.83191, "r": 552.74518, "b": 601.5119, "coord_origin": "TOPLEFT"}}]}, "text": "For more information: ibm.com /redbooks"}, {"label": "picture", "id": 6, "page_no": 145, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 474.35540771484375, "t": 80.05133819580078, "r": 592.2726440429688, "b": 189.8126220703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9696109890937805, "cells": [{"id": 25, "text": "Redpaper", "bbox": {"l": 474.60001, "t": 164.05658000000005, "r": 580.88989, "b": 188.94097999999997, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "\u2122", "bbox": {"l": 582.53992, "t": 172.32714999999996, "r": 592.13989, "b": 181.20714999999996, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "section_header", "id": 7, "page_no": 145, "cluster": {"id": 7, "label": "section_header", "bbox": {"l": 26.454715728759766, "t": 71.63792419433594, "r": 447.36002, "b": 141.0381317138672, "coord_origin": "TOPLEFT"}, "confidence": 0.7128154635429382, "cells": [{"id": 27, "text": "Row and Column Access Control ", "bbox": {"l": 27.0, "t": 73.63799999999992, "r": 447.36002, "b": 103.00800000000004, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Support in IBM DB2 for i", "bbox": {"l": 27.0, "t": 113.76000999999997, "r": 314.43002, "b": 140.46002, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 8, "page_no": 145, "cluster": {"id": 8, "label": "text", "bbox": {"l": 26.35322380065918, "t": 240.97860717773438, "r": 127.4436, "b": 267.21185302734375, "coord_origin": "TOPLEFT"}, "confidence": 0.8400375843048096, "cells": [{"id": 29, "text": "Implement roles and ", "bbox": {"l": 26.700001, "t": 242.17200000000003, "r": 127.4436, "b": 252.85199, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "separation of duties", "bbox": {"l": 26.700001, "t": 256.15198, "r": 121.6608, "b": 266.83196999999996, "coord_origin": "TOPLEFT"}}]}, "text": "Implement roles and separation of duties"}, {"label": "text", "id": 9, "page_no": 145, "cluster": {"id": 9, "label": "text", "bbox": {"l": 26.22105598449707, "t": 283.7095947265625, "r": 120.28319999999998, "b": 322.87198, "coord_origin": "TOPLEFT"}, "confidence": 0.8828509449958801, "cells": [{"id": 31, "text": "Leverage row ", "bbox": {"l": 26.700001, "t": 284.17197, "r": 93.970795, "b": 294.85196, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "permissions on the ", "bbox": {"l": 26.700001, "t": 298.15198000000004, "r": 120.28319999999998, "b": 308.83197, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "database", "bbox": {"l": 26.700001, "t": 312.19199000000003, "r": 70.413605, "b": 322.87198, "coord_origin": "TOPLEFT"}}]}, "text": "Leverage row permissions on the database"}, {"label": "text", "id": 10, "page_no": 145, "cluster": {"id": 10, "label": "text", "bbox": {"l": 26.226221084594727, "t": 339.11865234375, "r": 121.44960000000002, "b": 378.85199, "coord_origin": "TOPLEFT"}, "confidence": 0.9064874649047852, "cells": [{"id": 34, "text": "Protect columns by ", "bbox": {"l": 26.700001, "t": 340.15198000000004, "r": 121.44960000000002, "b": 350.83197, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "defining column ", "bbox": {"l": 26.700001, "t": 354.19199000000003, "r": 106.5696, "b": 364.87198, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "masks", "bbox": {"l": 26.700001, "t": 368.1720000000001, "r": 58.194, "b": 378.85199, "coord_origin": "TOPLEFT"}}]}, "text": "Protect columns by defining column masks"}, {"label": "text", "id": 11, "page_no": 145, "cluster": {"id": 11, "label": "text", "bbox": {"l": 152.25205993652344, "t": 241.8492889404297, "r": 414.08423, "b": 323.59189, "coord_origin": "TOPLEFT"}, "confidence": 0.9789718389511108, "cells": [{"id": 37, "text": "This IBM Redpaper publication provides information about the IBM i 7.2 ", "bbox": {"l": 152.94, "t": 242.72857999999997, "r": 413.99057, "b": 251.59295999999995, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "feature of IBM DB2 for i Row and Column Access Control (RCAC). It ", "bbox": {"l": 152.94002, "t": 254.72839, "r": 401.85635, "b": 263.59277, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "offers a broad description of the function and advantages of controlling ", "bbox": {"l": 152.94002, "t": 266.72821, "r": 414.08423, "b": 275.59259, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "access to data in a comprehensive and transparent way. This ", "bbox": {"l": 152.94002, "t": 278.72803, "r": 381.24014, "b": 287.59244, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "publication helps you understand the capabilities of RCAC and provides ", "bbox": {"l": 152.94002, "t": 290.72784, "r": 414.07031, "b": 299.59225, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "examples of defining, creating, and implementing the row permissions ", "bbox": {"l": 152.94002, "t": 302.72766, "r": 414.05447, "b": 311.59207, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "and column masks in a relational database environment.", "bbox": {"l": 152.94002, "t": 314.72747999999996, "r": 362.3291, "b": 323.59189, "coord_origin": "TOPLEFT"}}]}, "text": "This IBM Redpaper publication provides information about the IBM i 7.2 feature of IBM DB2 for i Row and Column Access Control (RCAC). It offers a broad description of the function and advantages of controlling access to data in a comprehensive and transparent way. This publication helps you understand the capabilities of RCAC and provides examples of defining, creating, and implementing the row permissions and column masks in a relational database environment."}, {"label": "text", "id": 12, "page_no": 145, "cluster": {"id": 12, "label": "text", "bbox": {"l": 152.3572540283203, "t": 330.5283203125, "r": 414.17383, "b": 388.909912109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9799743890762329, "cells": [{"id": 44, "text": "This paper is intended for database engineers, data-centric application ", "bbox": {"l": 152.94002, "t": 331.70728, "r": 414.17383, "b": 340.57169, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "developers, and security officers who want to design and implement ", "bbox": {"l": 152.94002, "t": 343.70709, "r": 407.61029, "b": 352.5715, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "RCAC as a part of their data control and governance policy. A solid ", "bbox": {"l": 152.94002, "t": 355.70691, "r": 399.29565, "b": 364.57132, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "background in IBM i object level security, DB2 for i relational database ", "bbox": {"l": 152.94002, "t": 367.70673, "r": 414.0603, "b": 376.57114, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "concepts, and SQL is assumed.", "bbox": {"l": 152.94002, "t": 379.70654, "r": 268.86945, "b": 388.57095, "coord_origin": "TOPLEFT"}}]}, "text": "This paper is intended for database engineers, data-centric application developers, and security officers who want to design and implement RCAC as a part of their data control and governance policy. A solid background in IBM i object level security, DB2 for i relational database concepts, and SQL is assumed."}, {"label": "text", "id": 13, "page_no": 145, "cluster": {"id": 13, "label": "text", "bbox": {"l": 287.22, "t": 28.54803000000004, "r": 414.24481, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 49, "text": "Back cover", "bbox": {"l": 287.22, "t": 28.54803000000004, "r": 414.24481, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}}]}, "text": "Back cover"}], "headers": [{"label": "page_footer", "id": 1, "page_no": 145, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 170.78512573242188, "t": 630.505859375, "r": 232.11270141601562, "b": 639.66301, "coord_origin": "TOPLEFT"}, "confidence": 0.7700248956680298, "cells": [{"id": 1, "text": "REDP-5110-00", "bbox": {"l": 171.0, "t": 631.338, "r": 231.88769999999997, "b": 639.66301, "coord_origin": "TOPLEFT"}}]}, "text": "REDP-5110-00"}]}}] \ No newline at end of file diff --git a/tests/data/groundtruth/docling_v1/redp5110_sampled.doctags.txt b/tests/data/groundtruth/docling_v1/redp5110_sampled.doctags.txt new file mode 100644 index 00000000..01aa36cb --- /dev/null +++ b/tests/data/groundtruth/docling_v1/redp5110_sampled.doctags.txt @@ -0,0 +1,299 @@ + +Front cover +
+ +
+Row and Column Access Control Support in IBM DB2 for i +Implement roles and separation of duties +Leverage row permissions on the database +Protect columns by defining column masks +Jim Bainbridge Hernando Bedoya Rob Bestgen Mike Cain Dan Cruikshank Jim Denton Doug Mack Tom McKinley Kent Milligan +Redpaper +Contents + + +Notices. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii +Trademarks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii +DB2 for i Center of Excellence. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix +Preface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi +Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi +Now you can become a published author, too!. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii +Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xiii +Stay connected to IBM Redbooks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv +Chapter 1. Securing and protecting IBM DB2 data . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 +1.1 Security fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 +1.2 Current state of IBM i security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2 +1.3 DB2 for i security controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 +1.3.1 Existing row and column control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4 +1.3.2 New controls: Row and Column Access Control. . . . . . . . . . . . . . . . . . . . . . . . . . .5 +Chapter 2. Roles and separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7 +2.1 Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8 +2.1.1 DDM and DRDA application server access: QIBM_DB_DDMDRDA . . . . . . . . . . .8 +2.1.2 Toolbox application server access: QIBM_DB_ZDA. . . . . . . . . . . . . . . . . . . . . . . .8 +2.1.3 Database Administrator function: QIBM_DB_SQLADM . . . . . . . . . . . . . . . . . . . . .9 +2.1.4 Database Information function: QIBM_DB_SYSMON. . . . . . . . . . . . . . . . . . . . . . 9 +2.1.5 Security Administrator function: QIBM_DB_SECADM . . . . . . . . . . . . . . . . . . . . . .9 +2.1.6 Change Function Usage CL command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10 +2.1.7 Verifying function usage IDs for RCAC with the FUNCTION_USAGE view . . . . .10 +2.2 Separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 +Chapter 3. Row and Column Access Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13 +3.1 Explanation of RCAC and the concept of access control . . . . . . . . . . . . . . . . . . . . . . .14 +3.1.1 Row permission and column mask definitions. . . . . . . . . . . . . . . . . . . . . . . . . . . 14 +3.1.2 Enabling and activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16 +3.2 Special registers and built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18 +3.2.1 Special registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18 +3.2.2 Built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .19 +3.3 VERIFY_GROUP_FOR_USER function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20 +3.4 Establishing and controlling accessibility by using the RCAC rule text . . . . . . . . . . . . .21 +. . . . . . . . . . . . . . . . . . . . . . . . 22 +3.5 SELECT, INSERT, and UPDATE behavior with RCAC +3.6.1 Assigning the QIBM_DB_SECADM function ID to the consultants. . . . . . . . . . . .23 +3.6.2 Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .23 +3.6.3 Demonstrating data access without RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24 +3.6.4 Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25 +3.6.5 Defining and creating column masks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 +3.6.6 Activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28 +3.6.7 Demonstrating data access with RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29 +3.6.8 Demonstrating data access with a view and RCAC . . . . . . . . . . . . . . . . . . . . . . .32 +
+DB2 for i Center of Excellence +Solution Brief IBM Systems Lab Services and Training +
+ +
+Highlights +- GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH +- GLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH +- GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH +- GLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH +
+ +
+Power Services +DB2 for i Center of Excellence +Expert help to achieve your business requirements +We build confident, satisfied clients +No one else has the vast consulting experiences, skills sharing and renown service offerings to do what we can do for you. +Because no one else is IBM. +With combined experiences and direct access to development groups, we're the experts in IBM DB2® for i. The DB2 for i Center of Excellence (CoE) can help you achieve-perhaps reexamine and exceed-your business requirements and gain more confidence and satisfaction in IBM product data management products and solutions. +Who we are, some of what we do +Global CoE engagements cover topics including: +- r Database performance and scalability +- r Advanced SQL knowledge and skills transfer +- r Business intelligence and analytics +- r DB2 Web Query +- r Query/400 modernization for better reporting and analysis capabilities +- r Database modernization and re-engineering +- r Data-centric architecture and design +- r Extremely large database and overcoming limits to growth +- r ISV education and enablement +Preface +This IBMfi Redpaper™ publication provides information about the IBM i 7.2 feature of IBM DB2fi for i Row and Column Access Control (RCAC). It offers a broad description of the function and advantages of controlling access to data in a comprehensive and transparent way. This publication helps you understand the capabilities of RCAC and provides examples of defining, creating, and implementing the row permissions and column masks in a relational database environment. +This paper is intended for database engineers, data-centric application developers, and security officers who want to design and implement RCAC as a part of their data control and governance policy. A solid background in IBM i object level security, DB2 for i relational database concepts, and SQL is assumed. +This paper was produced by the IBM DB2 for i Center of Excellence team in partnership with the International Technical Support Organization (ITSO), Rochester, Minnesota US. +
+ +
+
+ +
+Jim Bainbridge is a senior DB2 consultant on the DB2 for i Center of Excellence team in the IBM Lab Services and Training organization. His primary role is training and implementation services for IBM DB2 Web Query for i and business analytics. Jim began his career with IBM 30 years ago in the IBM Rochester Development Lab, where he developed cooperative processing products that paired IBM PCs with IBM S/36 and AS/.400 systems. In the years since, Jim has held numerous technical roles, including independent software vendors technical support on a broad range of IBM technologies and products, and supporting customers in the IBM Executive Briefing Center and IBM Project Office. +Hernando Bedoya is a Senior IT Specialist at STG Lab Services and Training in Rochester, Minnesota. He writes extensively and teaches IBM classes worldwide in all areas of DB2 for i. Before joining STG Lab Services, he worked in the ITSO for nine years writing multiple IBM Redbooksfi publications. He also worked for IBM Colombia as an IBM AS/400fi IT Specialist doing presales support for the Andean countries. He has 28 years of experience in the computing field and has taught database classes in Colombian universities. He holds a Master's degree in Computer Science from EAFIT, Colombia. His areas of expertise are database technology, performance, and data warehousing. Hernando can be contacted at hbedoya@us.ibm.com . +Authors +
+ +
+Chapter 1. +1 +Securing and protecting IBM DB2 data +Recent news headlines are filled with reports of data breaches and cyber-attacks impacting global businesses of all sizes. The Identity Theft Resource Center$^{1}$ reports that almost 5000 data breaches have occurred since 2005, exposing over 600 million records of data. The financial cost of these data breaches is skyrocketing. Studies from the Ponemon Institute$^{2}$ revealed that the average cost of a data breach increased in 2013 by 15% globally and resulted in a brand equity loss of $9.4 million per attack. The average cost that is incurred for each lost record containing sensitive information increased more than 9% to $145 per record. +Businesses must make a serious effort to secure their data and recognize that securing information assets is a cost of doing business. In many parts of the world and in many industries, securing the data is required by law and subject to audits. Data security is no longer an option; it is a requirement. +This chapter describes how you can secure and protect data in DB2 for i. The following topics are covered in this chapter: +- GLYPH Security fundamentals +- GLYPH Current state of IBM i security +- GLYPH DB2 for i security controls +1.1 Security fundamentals +Before reviewing database security techniques, there are two fundamental steps in securing information assets that must be described: +- GLYPH First, and most important, is the definition of a company's security policy . Without a security policy, there is no definition of what are acceptable practices for using, accessing, and storing information by who, what, when, where, and how. A security policy should minimally address three things: confidentiality, integrity, and availability. +- The monitoring and assessment of adherence to the security policy determines whether your security strategy is working. Often, IBM security consultants are asked to perform security assessments for companies without regard to the security policy. Although these assessments can be useful for observing how the system is defined and how data is being accessed, they cannot determine the level of security without a security policy. Without a security policy, it really is not an assessment as much as it is a baseline for monitoring the changes in the security settings that are captured. +A security policy is what defines whether the system and its settings are secure (or not). +- GLYPH The second fundamental in securing data assets is the use of resource security . If implemented properly, resource security prevents data breaches from both internal and external intrusions. Resource security controls are closely tied to the part of the security policy that defines who should have access to what information resources. A hacker might be good enough to get through your company firewalls and sift his way through to your system, but if they do not have explicit access to your database, the hacker cannot compromise your information assets. +With your eyes now open to the importance of securing information assets, the rest of this chapter reviews the methods that are available for securing database resources on IBM i. +1.2 Current state of IBM i security +Because of the inherently secure nature of IBM i, many clients rely on the default system settings to protect their business data that is stored in DB2 for i. In most cases, this means no data protection because the default setting for the Create default public authority (QCRTAUT) system value is *CHANGE. +Even more disturbing is that many IBM i clients remain in this state, despite the news headlines and the significant costs that are involved with databases being compromised. This default security configuration makes it quite challenging to implement basic security policies. A tighter implementation is required if you really want to protect one of your company's most valuable assets, which is the data. +Traditionally, IBM i applications have employed menu-based security to counteract this default configuration that gives all users access to the data. The theory is that data is protected by the menu options controlling what database operations that the user can perform. This approach is ineffective, even if the user profile is restricted from running interactive commands. The reason is that in today's connected world there are a multitude of interfaces into the system, from web browsers to PC clients, that bypass application menus. If there are no object-level controls, users of these newer interfaces have an open door to your data. +Many businesses are trying to limit data access to a need-to-know basis. This security goal means that users should be given access only to the minimum set of data that is required to perform their job. Often, users with object-level access are given access to row and column values that are beyond what their business task requires because that object-level security provides an all-or-nothing solution. For example, object-level controls allow a manager to access data about all employees. Most security policies limit a manager to accessing data only for the employees that they manage. +1.3.1 Existing row and column control +Some IBM i clients have tried augmenting the all-or-nothing object-level security with SQL views (or logical files) and application logic, as shown in Figure 1-2. However, application-based logic is easy to bypass with all of the different data access interfaces that are provided by the IBM i operating system, such as Open Database Connectivity (ODBC) and System i Navigator. +Using SQL views to limit access to a subset of the data in a table also has its own set of challenges. First, there is the complexity of managing all of the SQL view objects that are used for securing data access. Second, scaling a view-based security solution can be difficult as the amount of data grows and the number of users increases. +Even if you are willing to live with these performance and management issues, a user with *ALLOBJ access still can directly access all of the data in the underlying DB2 table and easily bypass the security controls that are built into an SQL view. +Figure 1-2 Existing row and column controls +
+ +Figure 1-2 Existing row and column controls +
+2.1.6 Change Function Usage CL command +The following CL commands can be used to work with, display, or change function usage IDs: +- GLYPH Work Function Usage ( WRKFCNUSG ) +- GLYPH Change Function Usage ( CHGFCNUSG ) +- GLYPH Display Function Usage ( DSPFCNUSG ) +For example, the following CHGFCNUSG command shows granting authorization to user HBEDOYA to administer and manage RCAC rules: +CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED) +2.1.7 Verifying function usage IDs for RCAC with the FUNCTION_USAGE view +The FUNCTION_USAGE view contains function usage configuration details. Table 2-1 describes the columns in the FUNCTION_USAGE view. +Table 2-1 FUNCTION_USAGE view + + + +Column nameData typeDescription +FUNCTION_IDVARCHAR(30)ID of the function. +USER_NAMEVARCHAR(10)Name of the user profile that has a usage setting for this function. +USAGEVARCHAR(7)Usage setting: GLYPH ALLOWED: The user profile is allowed to use the function. GLYPH DENIED: The user profile is not allowed to use the function. +USER_TYPEVARCHAR(5)Type of user profile: GLYPH USER: The user profile is a user. GLYPH GROUP: The user profile is a group. +
Table 2-1 FUNCTION_USAGE view
+To discover who has authorization to define and manage RCAC, you can use the query that is shown in Example 2-1. +Example 2-1 Query to determine who has authority to define and manage RCAC +SELECT function_id, user_name, usage, user_type FROM function_usage WHERE function_id='QIBM_DB_SECADM' ORDER BY user_name; +2.2 Separation of duties +Separation of duties helps businesses comply with industry regulations or organizational requirements and simplifies the management of authorities. Separation of duties is commonly used to prevent fraudulent activities or errors by a single person. It provides the ability for administrative functions to be divided across individuals without overlapping responsibilities, so that one user does not possess unlimited authority, such as with the *ALLOBJ authority. +For example, assume that a business has assigned the duty to manage security on IBM i to Theresa. Before release IBM i 7.2, to grant privileges, Theresa had to have the same privileges Theresa was granting to others. Therefore, to grant *USE privileges to the PAYROLL table, Theresa had to have *OBJMGT and *USE authority (or a higher level of authority, such as *ALLOBJ). This requirement allowed Theresa to access the data in the PAYROLL table even though Theresa's job description was only to manage its security. +In IBM i 7.2, the QIBM_DB_SECADM function usage grants authorities, revokes authorities, changes ownership, or changes the primary group without giving access to the object or, in the case of a database table, to the data that is in the table or allowing other operations on the table. +QIBM_DB_SECADM function usage can be granted only by a user with *SECADM special authority and can be given to a user or a group. +QIBM_DB_SECADM also is responsible for administering RCAC, which restricts which rows a user is allowed to access in a table and whether a user is allowed to see information in certain columns of a table. +A preferred practice is that the RCAC administrator has the QIBM_DB_SECADM function usage ID, but absolutely no other data privileges. The result is that the RCAC administrator can deploy and maintain the RCAC constructs, but cannot grant themselves unauthorized access to data itself. +Table 2-2 shows a comparison of the different function usage IDs and *JOBCTL authority to the different CL commands and DB2 for i tools. +Table 2-2 Comparison of the different function usage IDs and *JOBCTL authority + + + +User action*JOBCTLQIBM_DB_SECADMQIBM_DB_SQLADMQIBM_DB_SYSMONNo Authority +SET CURRENT DEGREE (SQL statement)XX +CHGQRYA command targeting a different user's jobXX +STRDBMON or ENDDBMON commands targeting a different user's jobXX +STRDBMON or ENDDBMON commands targeting a job that matches the current userXXXX +QUSRJOBI() API format 900 or System i Navigator's SQL Details for JobXXX +Visual Explain within Run SQL scriptsXXXX +Visual Explain outside of Run SQL scriptsXX +ANALYZE PLAN CACHE procedureXX +DUMP PLAN CACHE procedureXX +MODIFY PLAN CACHE procedureXX +MODIFY PLAN CACHE PROPERTIES procedure (currently does not check authority)XX +CHANGE PLAN CACHE SIZE procedure (currently does not check authority)XX +
Table 2-2 Comparison of the different function usage IDs and *JOBCTL authority
+The SQL CREATE PERMISSION statement that is shown in Figure 3-1 is used to define and initially enable or disable the row access rules. +Figure 3-1 CREATE PERMISSION SQL statement +
+ +The SQL CREATE PERMISSION statement that is shown in Figure 3-1 is used to define and initially enable or disable the row access rules.Figure 3-1 CREATE PERMISSION SQL statement +
+Column mask +A column mask is a database object that manifests a column value access control rule for a specific column in a specific table. It uses a CASE expression that describes what you see when you access the column. For example, a teller can see only the last four digits of a tax identification number. +Table 3-1 summarizes these special registers and their values. +Table 3-1 Special registers and their corresponding values + + + +Special registerCorresponding value +USER or SESSION_USERThe effective user of the thread excluding adopted authority. +CURRENT_USERThe effective user of the thread including adopted authority. When no adopted authority is present, this has the same value as USER. +SYSTEM_USERThe authorization ID that initiated the connection. +
Table 3-1 Special registers and their corresponding values
+Figure 3-5 shows the difference in the special register values when an adopted authority is used: +- GLYPH A user connects to the server using the user profile ALICE. +- GLYPH USER and CURRENT USER initially have the same value of ALICE. +- GLYPH ALICE calls an SQL procedure that is named proc1, which is owned by user profile JOE and was created to adopt JOE's authority when it is called. +- GLYPH While the procedure is running, the special register USER still contains the value of ALICE because it excludes any adopted authority. The special register CURRENT USER contains the value of JOE because it includes any adopted authority. +- GLYPH When proc1 ends, the session reverts to its original state with both USER and CURRENT USER having the value of ALICE. +Figure 3-5 Special registers and adopted authority +
+ +Figure 3-5 Special registers and adopted authority +
+3.2.2 Built-in global variables +Built-in global variables are provided with the database manager and are used in SQL statements to retrieve scalar values that are associated with the variables. +IBM DB2 for i supports nine different built-in global variables that are read only and maintained by the system. These global variables can be used to identify attributes of the database connection and used as part of the RCAC logic. +Table 3-2 lists the nine built-in global variables. +Table 3-2 Built-in global variables + + + +Global variableTypeDescription +CLIENT_HOSTVARCHAR(255)Host name of the current client as returned by the system +CLIENT_IPADDRVARCHAR(128)IP address of the current client as returned by the system +CLIENT_PORTINTEGERPort used by the current client to communicate with the server +PACKAGE_NAMEVARCHAR(128)Name of the currently running package +PACKAGE_SCHEMAVARCHAR(128)Schema name of the currently running package +PACKAGE_VERSIONVARCHAR(64)Version identifier of the currently running package +ROUTINE_SCHEMAVARCHAR(128)Schema name of the currently running routine +ROUTINE_SPECIFIC_NAMEVARCHAR(128)Name of the currently running routine +ROUTINE_TYPECHAR(1)Type of the currently running routine +
Table 3-2 Built-in global variables
+3.3 VERIFY_GROUP_FOR_USER function +The VERIFY_GROUP_FOR_USER function was added in IBM i 7.2. Although it is primarily intended for use with RCAC permissions and masks, it can be used in other SQL statements. The first parameter must be one of these three special registers: SESSION_USER, USER, or CURRENT_USER. The second and subsequent parameters are a list of user or group profiles. Each of these values must be 1 - 10 characters in length. These values are not validated for their existence, which means that you can specify the names of user profiles that do not exist without receiving any kind of error. +If a special register value is in the list of user profiles or it is a member of a group profile included in the list, the function returns a long integer value of 1. Otherwise, it returns a value of 0. It never returns the null value. +Here is an example of using the VERIFY_GROUP_FOR_USER function: +- 1. There are user profiles for MGR, JANE, JUDY, and TONY. +- 2. The user profile JANE specifies a group profile of MGR. +- 3. If a user is connected to the server using user profile JANE, all of the following function invocations return a value of 1: +VERIFY_GROUP_FOR_USER (CURRENT_USER, 'MGR') VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR') VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR', 'STEVE') The following function invocation returns a value of 0: VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JUDY', 'TONY') +RETURN CASE +WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR', 'EMP' ) = 1 THEN EMPLOYEES . DATE_OF_BIRTH WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER = EMPLOYEES . USER_ID THEN EMPLOYEES . DATE_OF_BIRTH WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER <> EMPLOYEES . USER_ID THEN ( 9999 || '-' || MONTH ( EMPLOYEES . DATE_OF_BIRTH ) || '-' || DAY (EMPLOYEES.DATE_OF_BIRTH )) ELSE NULL END ENABLE ; +- 2. The other column to mask in this example is the TAX_ID information. In this example, the rules to enforce include the following ones: +- -Human Resources can see the unmasked TAX_ID of the employees. +- -Employees can see only their own unmasked TAX_ID. +- -Managers see a masked version of TAX_ID with the first five characters replaced with the X character (for example, XXX-XX-1234). +- -Any other person sees the entire TAX_ID as masked, for example, XXX-XX-XXXX. +- To implement this column mask, run the SQL statement that is shown in Example 3-9. +Example 3-9 Creating a mask on the TAX_ID column +CREATE MASK HR_SCHEMA.MASK_TAX_ID_ON_EMPLOYEES ON HR_SCHEMA.EMPLOYEES AS EMPLOYEES FOR COLUMN TAX_ID RETURN CASE WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1 THEN EMPLOYEES . TAX_ID WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER = EMPLOYEES . USER_ID THEN EMPLOYEES . TAX_ID WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER <> EMPLOYEES . USER_ID THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( EMPLOYEES . TAX_ID , 8 , 4 ) ) WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1 THEN EMPLOYEES . TAX_ID ELSE 'XXX-XX-XXXX' END ENABLE ; +- 3. Figure 3-10 shows the masks that are created in the HR_SCHEMA. +Figure 3-10 Column masks shown in System i Navigator +
+ +Figure 3-10 Column masks shown in System i Navigator +
+3.6.6 Activating RCAC +Now that you have created the row permission and the two column masks, RCAC must be activated. The row permission and the two column masks are enabled (last clause in the scripts), but now you must activate RCAC on the table. To do so, complete the following steps: +- 1. Run the SQL statements that are shown in Example 3-10. +Example 3-10 Activating RCAC on the EMPLOYEES table +- /* Active Row Access Control (permissions) */ +/* Active Column Access Control (masks) ALTER TABLE HR_SCHEMA.EMPLOYEES ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL; +*/ +- 2. Look at the definition of the EMPLOYEE table, as shown in Figure 3-11. To do this, from the main navigation pane of System i Navigator, click Schemas  HR_SCHEMA  Tables , right-click the EMPLOYEES table, and click Definition . +Figure 3-11 Selecting the EMPLOYEES table from System i Navigator +
+ +Figure 3-11 Selecting the EMPLOYEES table from System i Navigator +
+- 2. Figure 4-68 shows the Visual Explain of the same SQL statement, but with RCAC enabled. It is clear that the implementation of the SQL statement is more complex because the row permission rule becomes part of the WHERE clause. +Figure 4-68 Visual Explain with RCAC enabled +
+ +Figure 4-68 Visual Explain with RCAC enabled +
+- 3. Compare the advised indexes that are provided by the Optimizer without RCAC and with RCAC enabled. Figure 4-69 shows the index advice for the SQL statement without RCAC enabled. The index being advised is for the ORDER BY clause. +Figure 4-69 Index advice with no RCAC +
+ +Figure 4-69 Index advice with no RCAC +
+THEN C . CUSTOMER_TAX_ID WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( C . CUSTOMER_TAX_ID , 8 , 4 ) ) WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_TAX_ID ELSE 'XXX-XX-XXXX' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_DRIVERS_LICENSE_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_DRIVERS_LICENSE_NUMBER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ELSE '*************' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_LOGIN_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_LOGIN_ID RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_LOGIN_ID WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_LOGIN_ID ELSE '*****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_SECURITY_QUESTION RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION ELSE '*****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_SECURITY_QUESTION_ANSWER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ELSE '*****' END ENABLE ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL ; +Back cover +Row and Column Access Control Support in IBM DB2 for i +Implement roles and separation of duties +Leverage row permissions on the database +Protect columns by defining column masks +This IBM Redpaper publication provides information about the IBM i 7.2 feature of IBM DB2 for i Row and Column Access Control (RCAC). It offers a broad description of the function and advantages of controlling access to data in a comprehensive and transparent way. This publication helps you understand the capabilities of RCAC and provides examples of defining, creating, and implementing the row permissions and column masks in a relational database environment. +This paper is intended for database engineers, data-centric application developers, and security officers who want to design and implement RCAC as a part of their data control and governance policy. A solid background in IBM i object level security, DB2 for i relational database concepts, and SQL is assumed. +
+ +
+
+ +
+INTERNATIONAL TECHNICAL SUPPORT ORGANIZATION +BUILDING TECHNICAL INFORMATION BASED ON PRACTICAL EXPERIENCE +IBM Redbooks are developed by the IBM International Technical Support Organization. Experts from IBM, Customers and Partners from around the world create timely technical information based on realistic scenarios. Specific recommendations are provided to help you implement IT solutions more effectively in your environment. +For more information: ibm.com /redbooks +
\ No newline at end of file diff --git a/tests/data/groundtruth/docling_v1/redp5110_sampled.json b/tests/data/groundtruth/docling_v1/redp5110_sampled.json new file mode 100644 index 00000000..88ca21fa --- /dev/null +++ b/tests/data/groundtruth/docling_v1/redp5110_sampled.json @@ -0,0 +1 @@ +{"_name": "", "type": "pdf-document", "description": {"title": null, "abstract": null, "authors": null, "affiliations": null, "subjects": null, "keywords": null, "publication_date": null, "languages": null, "license": null, "publishers": null, "url_refs": null, "references": null, "publication": null, "reference_count": null, "citation_count": null, "citation_date": null, "advanced": null, "analytics": null, "logs": [], "collection": null, "acquisition": null}, "file-info": {"filename": "redp5110_sampled.pdf", "filename-prov": null, "document-hash": "2f6bc92861997d1434c069040dc63447c3e415e8e9eadbd1a8129ba2327ddba5", "#-pages": 18, "collection-name": null, "description": null, "page-hashes": [{"hash": "87bfb77a4cff4ea497ce5cb77e341706a21c70ce31418b976f04908220b7bc1e", "model": "default", "page": 1}, {"hash": "0c2f740de34230eddd3a1b82042820cf10cdb531c33b3652c221269b166dda18", "model": "default", "page": 2}, {"hash": "29ed89c83dd6a7a480da597d56fa5b4f143185929165d96c10f9507692f26422", "model": "default", "page": 3}, {"hash": "6a4c21e7bd1a152501214f7b97fba0a7957892e8a27fb0c9a0b234e6711d0bf4", "model": "default", "page": 4}, {"hash": "98d99d46a4299177161f858ea18bb4e4616dc8090935ed643e4698abde7dc2f7", "model": "default", "page": 5}, {"hash": "4dc8738c880ac38f2f5db63734cc40037c2eca11fd9a7ed8772f8c39b2d9392d", "model": "default", "page": 6}, {"hash": "96975908473aa87150613f7983bad4c6b4f3964d102667d9c041ee1fb11a5a70", "model": "default", "page": 7}, {"hash": "eb34465d03a7271be9fb7f12da6a8f00ceb4c29619583205ec0bd4dd52339dbd", "model": "default", "page": 8}, {"hash": "2cd521c0ff1e9fddb17a0c9866f1fc5939e7e487023de0e5437c427e8d94b75f", "model": "default", "page": 9}, {"hash": "6c91461cd03b5b5c1da4159bb1b249414285cb850cd470094c35688cb173d5c0", "model": "default", "page": 10}, {"hash": "539c4a50ee2387942d228c663b8e1effa439736a2d281bd943bf5a44ebe211ea", "model": "default", "page": 11}, {"hash": "2f540152e2b5d81120b795f81891ec81e34a3d01e179690eb4ffa24ad8c99980", "model": "default", "page": 12}, {"hash": "22a94907fc652c858ddf04a9bcf252c8dbe136e26c6ba58374a58e38f224f2a5", "model": "default", "page": 13}, {"hash": "fd69abc57759fd5ce42ea513a500214fde4ec9a5b96a4526228aef53a4928d19", "model": "default", "page": 14}, {"hash": "712a230347f0b94199888825e9b7a192b9bbca8600088d2b3bcce4a2adf3648e", "model": "default", "page": 15}, {"hash": "ceb256886852658b9ea5263c6c6a0c9bef26128b123a4885cf24385cb1edc6e6", "model": "default", "page": 16}, {"hash": "373513373f60d79806f33aaaa001b81ba2c88db50c9a509afcd36af3c2c60fd0", "model": "default", "page": 17}, {"hash": "ada87644543d153b0bf07dd260e893614224b0825d99f1740b0bafde6e3c996f", "model": "default", "page": 18}]}, "main-text": [{"prov": [{"bbox": [287.82000732421875, 741.251953125, 418.83355712890625, 763.4519653320312], "page": 1, "span": [0, 11], "__ref_s3_data": null}], "text": "Front cover", "type": "paragraph", "name": "Text", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/0"}, {"prov": [{"bbox": [35.68840408325195, 625.594482421875, 584.6428833007812, 709.605712890625], "page": 1, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [35.0073127746582, 466.4394226074219, 216.00064086914062, 497.2061767578125], "page": 1, "span": [0, 40], "__ref_s3_data": null}], "text": "Implement roles and separation of duties", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [34.56448745727539, 412.4388732910156, 202.45404052734375, 443.0459289550781], "page": 1, "span": [0, 40], "__ref_s3_data": null}], "text": "Leverage row permissions on the database", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [35.171409606933594, 358.4383239746094, 195.27529907226562, 389.3459167480469], "page": 1, "span": [0, 40], "__ref_s3_data": null}], "text": "Protect columns by defining column masks", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [36.894657135009766, 26.895000457763672, 164.45849609375, 42.1337890625], "page": 1, "span": [0, 17], "__ref_s3_data": null}], "text": "ibm.com /redbooks", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [497.0279846191406, 92.828369140625, 581.8246459960938, 218.1163330078125], "page": 1, "span": [0, 115], "__ref_s3_data": null}], "text": "Jim Bainbridge Hernando Bedoya Rob Bestgen Mike Cain Dan Cruikshank Jim Denton Doug Mack Tom McKinley Kent Milligan", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [314.70001220703125, 18.227041244506836, 580.52001953125, 80.49143981933594], "page": 1, "span": [0, 8], "__ref_s3_data": null}], "text": "Redpaper", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.6857681274414, 695.9519653320312, 168.73440551757812, 718.98193359375], "page": 2, "span": [0, 8], "__ref_s3_data": null}], "text": "Contents", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"name": "Table", "type": "table", "$ref": "#/tables/0"}, {"prov": [{"bbox": [63.751060485839844, 27.8984375, 257.24334716796875, 37.30303955078125], "page": 2, "span": [0, 48], "__ref_s3_data": null}], "text": "' Copyright IBM Corp. 2014. All rights reserved.", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [538.3257446289062, 27.93828010559082, 547.25927734375, 37.91693115234375], "page": 2, "span": [0, 3], "__ref_s3_data": null}], "text": "iii", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.80000305175781, 706.416015625, 235.86239624023438, 717.5160522460938], "page": 3, "span": [0, 30], "__ref_s3_data": null}], "text": "DB2 for i Center of Excellence", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [93.67039489746094, 636.66357421875, 233.99972534179688, 654.3631591796875], "page": 3, "span": [0, 52], "__ref_s3_data": null}], "text": "Solution Brief IBM Systems Lab Services and Training", "type": "paragraph", "name": "Text", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/1"}, {"prov": [{"bbox": [144.19781494140625, 454.64495849609375, 188.74681091308594, 464.93798828125], "page": 3, "span": [0, 10], "__ref_s3_data": null}], "text": "Highlights", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [144.4553985595703, 433.3105773925781, 242.87388610839844, 447.962890625], "page": 3, "span": [0, 532], "__ref_s3_data": null}], "text": "- GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [144.40879821777344, 402.7626953125, 259.22869873046875, 425.3538513183594], "page": 3, "span": [0, 876], "__ref_s3_data": null}], "text": "- GLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [144.23313903808594, 379.6138916015625, 249.8356170654297, 394.8355407714844], "page": 3, "span": [0, 672], "__ref_s3_data": null}], "text": "- GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [144.35208129882812, 357.3323669433594, 234.2516326904297, 371.82550048828125], "page": 3, "span": [0, 613], "__ref_s3_data": null}], "text": "- GLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "type": "paragraph", "name": "List-item", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/2"}, {"prov": [{"bbox": [460.8193359375, 646.5781860351562, 506.26177978515625, 653.661376953125], "page": 3, "span": [0, 14], "__ref_s3_data": null}], "text": "Power Services", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [280.07391357421875, 515.3794555664062, 463.8094177246094, 554.2871704101562], "page": 3, "span": [0, 30], "__ref_s3_data": null}], "text": "DB2 for i Center of Excellence", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [279.51953125, 503.36505126953125, 483.7276916503906, 514.842529296875], "page": 3, "span": [0, 49], "__ref_s3_data": null}], "text": "Expert help to achieve your business requirements", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [279.468994140625, 467.1043395996094, 443.375732421875, 476.9213562011719], "page": 3, "span": [0, 37], "__ref_s3_data": null}], "text": "We build confident, satisfied clients", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [279.530517578125, 446.4922790527344, 488.1546630859375, 464.73529052734375], "page": 3, "span": [0, 122], "__ref_s3_data": null}], "text": "No one else has the vast consulting experiences, skills sharing and renown service offerings to do what we can do for you.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [280.0453186035156, 427.2699890136719, 367.8602294921875, 435.4290466308594], "page": 3, "span": [0, 27], "__ref_s3_data": null}], "text": "Because no one else is IBM.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [279.70794677734375, 366.6907958984375, 500.321044921875, 415.73895263671875], "page": 3, "span": [0, 318], "__ref_s3_data": null}], "text": "With combined experiences and direct access to development groups, we're the experts in IBM DB2\u00ae for i. The DB2 for i Center of Excellence (CoE) can help you achieve-perhaps reexamine and exceed-your business requirements and gain more confidence and satisfaction in IBM product data management products and solutions.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [279.6336669921875, 345.1319274902344, 435.1236572265625, 354.8772277832031], "page": 3, "span": [0, 30], "__ref_s3_data": null}], "text": "Who we are, some of what we do", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [279.4736328125, 334.5338134765625, 434.56317138671875, 342.7397766113281], "page": 3, "span": [0, 46], "__ref_s3_data": null}], "text": "Global CoE engagements cover topics including:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [279.74200439453125, 315.4241027832031, 402.1675109863281, 323.6339416503906], "page": 3, "span": [0, 38], "__ref_s3_data": null}], "text": "- r Database performance and scalability", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [279.7657165527344, 305.21771240234375, 424.9964599609375, 313.35101318359375], "page": 3, "span": [0, 44], "__ref_s3_data": null}], "text": "- r Advanced SQL knowledge and skills transfer", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [279.9660339355469, 294.8087158203125, 392.2996520996094, 302.5164489746094], "page": 3, "span": [0, 37], "__ref_s3_data": null}], "text": "- r Business intelligence and analytics", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [279.9432067871094, 284.7392272949219, 339.94354248046875, 292.4297180175781], "page": 3, "span": [0, 15], "__ref_s3_data": null}], "text": "- r DB2 Web Query", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [279.68328857421875, 274.50201416015625, 504.21795654296875, 282.5703125], "page": 3, "span": [0, 72], "__ref_s3_data": null}], "text": "- r Query/400 modernization for better reporting and analysis capabilities", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [279.66998291015625, 263.96942138671875, 423.002197265625, 271.96844482421875], "page": 3, "span": [0, 43], "__ref_s3_data": null}], "text": "- r Database modernization and re-engineering", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [279.7203674316406, 254.12164306640625, 400.07391357421875, 262.03643798828125], "page": 3, "span": [0, 38], "__ref_s3_data": null}], "text": "- r Data-centric architecture and design", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [279.7815856933594, 244.1992645263672, 467.2125549316406, 252.1336669921875], "page": 3, "span": [0, 58], "__ref_s3_data": null}], "text": "- r Extremely large database and overcoming limits to growth", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [279.89080810546875, 234.0165557861328, 382.3631591796875, 241.97698974609375], "page": 3, "span": [0, 30], "__ref_s3_data": null}], "text": "- r ISV education and enablement", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.80000305175781, 695.9519653320312, 151.46160888671875, 718.8968505859375], "page": 4, "span": [0, 7], "__ref_s3_data": null}], "text": "Preface", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.75503540039062, 590.1392822265625, 547.3082275390625, 660.085693359375], "page": 4, "span": [0, 469], "__ref_s3_data": null}], "text": "This IBMfi Redpaper\u2122 publication provides information about the IBM i 7.2 feature of IBM DB2fi for i Row and Column Access Control (RCAC). It offers a broad description of the function and advantages of controlling access to data in a comprehensive and transparent way. This publication helps you understand the capabilities of RCAC and provides examples of defining, creating, and implementing the row permissions and column masks in a relational database environment.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.94647216796875, 531.8143310546875, 546.4656982421875, 577.9362182617188], "page": 4, "span": [0, 309], "__ref_s3_data": null}], "text": "This paper is intended for database engineers, data-centric application developers, and security officers who want to design and implement RCAC as a part of their data control and governance policy. A solid background in IBM i object level security, DB2 for i relational database concepts, and SQL is assumed.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.71319580078125, 449.8482971191406, 547.2366943359375, 472.1881408691406], "page": 4, "span": [0, 172], "__ref_s3_data": null}], "text": "This paper was produced by the IBM DB2 for i Center of Excellence team in partnership with the International Technical Support Organization (ITSO), Rochester, Minnesota US.", "type": "paragraph", "name": "Text", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/3"}, {"name": "Picture", "type": "figure", "$ref": "#/figures/4"}, {"prov": [{"bbox": [63.724002838134766, 27.89178466796875, 257.24334716796875, 37.29620361328125], "page": 4, "span": [0, 48], "__ref_s3_data": null}], "text": "' Copyright IBM Corp. 2014. All rights reserved.", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [538.058349609375, 27.93828010559082, 547.2503051757812, 37.60198974609375], "page": 4, "span": [0, 2], "__ref_s3_data": null}], "text": "xi", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [262.6522521972656, 275.06854248046875, 541.2507934570312, 417.312744140625], "page": 4, "span": [0, 684], "__ref_s3_data": null}], "text": "Jim Bainbridge is a senior DB2 consultant on the DB2 for i Center of Excellence team in the IBM Lab Services and Training organization. His primary role is training and implementation services for IBM DB2 Web Query for i and business analytics. Jim began his career with IBM 30 years ago in the IBM Rochester Development Lab, where he developed cooperative processing products that paired IBM PCs with IBM S/36 and AS/.400 systems. In the years since, Jim has held numerous technical roles, including independent software vendors technical support on a broad range of IBM technologies and products, and supporting customers in the IBM Executive Briefing Center and IBM Project Office.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [262.4736328125, 111.162841796875, 541.2737426757812, 265.49169921875], "page": 4, "span": [0, 726], "__ref_s3_data": null}], "text": "Hernando Bedoya is a Senior IT Specialist at STG Lab Services and Training in Rochester, Minnesota. He writes extensively and teaches IBM classes worldwide in all areas of DB2 for i. Before joining STG Lab Services, he worked in the ITSO for nine years writing multiple IBM Redbooksfi publications. He also worked for IBM Colombia as an IBM AS/400fi IT Specialist doing presales support for the Andean countries. He has 28 years of experience in the computing field and has taught database classes in Colombian universities. He holds a Master's degree in Computer Science from EAFIT, Colombia. His areas of expertise are database technology, performance, and data warehousing. Hernando can be contacted at hbedoya@us.ibm.com .", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.22550201416016, 488.9364013671875, 125.36660766601562, 504.8105773925781], "page": 4, "span": [0, 7], "__ref_s3_data": null}], "text": "Authors", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/5"}, {"prov": [{"bbox": [81.0, 517.019287109375, 115.13253021240234, 523.457275390625], "page": 5, "span": [0, 10], "__ref_s3_data": null}], "text": "Chapter 1.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [500.3999938964844, 661.8682861328125, 522.6177368164062, 699.3392333984375], "page": 5, "span": [0, 1], "__ref_s3_data": null}], "text": "1", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.68006896972656, 482.1217956542969, 547.3047485351562, 538.7101440429688], "page": 5, "span": [0, 36], "__ref_s3_data": null}], "text": "Securing and protecting IBM DB2 data", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.15219116210938, 361.62640380859375, 547.2540283203125, 444.024658203125], "page": 5, "span": [0, 648], "__ref_s3_data": null}], "text": "Recent news headlines are filled with reports of data breaches and cyber-attacks impacting global businesses of all sizes. The Identity Theft Resource Center$^{1}$ reports that almost 5000 data breaches have occurred since 2005, exposing over 600 million records of data. The financial cost of these data breaches is skyrocketing. Studies from the Ponemon Institute$^{2}$ revealed that the average cost of a data breach increased in 2013 by 15% globally and resulted in a brand equity loss of $9.4 million per attack. The average cost that is incurred for each lost record containing sensitive information increased more than 9% to $145 per record.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.05917358398438, 303.55853271484375, 527.206298828125, 349.8846435546875], "page": 5, "span": [0, 304], "__ref_s3_data": null}], "text": "Businesses must make a serious effort to secure their data and recognize that securing information assets is a cost of doing business. In many parts of the world and in many industries, securing the data is required by law and subject to audits. Data security is no longer an option; it is a requirement.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.5961456298828, 270.1002197265625, 547.1551513671875, 291.9596862792969], "page": 5, "span": [0, 122], "__ref_s3_data": null}], "text": "This chapter describes how you can secure and protect data in DB2 for i. The following topics are covered in this chapter:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.86915588378906, 252.9566650390625, 250.23167419433594, 263.29638671875], "page": 5, "span": [0, 37], "__ref_s3_data": null}], "text": "- GLYPH Security fundamentals", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.742431640625, 240.626708984375, 282.98114013671875, 251.2857666015625], "page": 5, "span": [0, 47], "__ref_s3_data": null}], "text": "- GLYPH Current state of IBM i security", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.86570739746094, 229.06103515625, 264.8818664550781, 239.55108642578125], "page": 5, "span": [0, 43], "__ref_s3_data": null}], "text": "- GLYPH DB2 for i security controls", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.7418975830078, 66.45916748046875, 258.362548828125, 75.71832275390625], "page": 5, "span": [0, 35], "__ref_s3_data": null}], "text": "$^{1 }$http://www.idtheftcenter.org", "type": "footnote", "name": "Footnote", "font": null}, {"prov": [{"bbox": [136.19522094726562, 56.73187255859375, 234.42526245117188, 66.703857421875], "page": 5, "span": [0, 31], "__ref_s3_data": null}], "text": "$^{2 }$http://www.ponemon.org /", "type": "footnote", "name": "Footnote", "font": null}, {"prov": [{"bbox": [63.68400573730469, 27.85699462890625, 257.24334716796875, 37.3408203125], "page": 5, "span": [0, 48], "__ref_s3_data": null}], "text": "' Copyright IBM Corp. 2014. All rights reserved.", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [541.2396240234375, 27.93828010559082, 547.2176513671875, 37.7130126953125], "page": 5, "span": [0, 1], "__ref_s3_data": null}], "text": "1", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.33735656738281, 702.3842163085938, 267.40582275390625, 718.60302734375], "page": 6, "span": [0, 25], "__ref_s3_data": null}], "text": "1.1 Security fundamentals", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.23556518554688, 664.178466796875, 545.0048217773438, 685.97265625], "page": 6, "span": [0, 133], "__ref_s3_data": null}], "text": "Before reviewing database security techniques, there are two fundamental steps in securing information assets that must be described:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.66490173339844, 610.8453369140625, 547.1642456054688, 657.3309326171875], "page": 6, "span": [0, 361], "__ref_s3_data": null}], "text": "- GLYPH First, and most important, is the definition of a company's security policy . Without a security policy, there is no definition of what are acceptable practices for using, accessing, and storing information by who, what, when, where, and how. A security policy should minimally address three things: confidentiality, integrity, and availability.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.2132110595703, 521.4625244140625, 547.2608642578125, 604.0206298828125], "page": 6, "span": [0, 587], "__ref_s3_data": null}], "text": "- The monitoring and assessment of adherence to the security policy determines whether your security strategy is working. Often, IBM security consultants are asked to perform security assessments for companies without regard to the security policy. Although these assessments can be useful for observing how the system is defined and how data is being accessed, they cannot determine the level of security without a security policy. Without a security policy, it really is not an assessment as much as it is a baseline for monitoring the changes in the security settings that are captured.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.1995086669922, 504.9290466308594, 541.9920043945312, 515.2373657226562], "page": 6, "span": [0, 90], "__ref_s3_data": null}], "text": "A security policy is what defines whether the system and its settings are secure (or not).", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.4777374267578, 415.4546203613281, 547.1582641601562, 498.18560791015625], "page": 6, "span": [0, 573], "__ref_s3_data": null}], "text": "- GLYPH The second fundamental in securing data assets is the use of resource security . If implemented properly, resource security prevents data breaches from both internal and external intrusions. Resource security controls are closely tied to the part of the security policy that defines who should have access to what information resources. A hacker might be good enough to get through your company firewalls and sift his way through to your system, but if they do not have explicit access to your database, the hacker cannot compromise your information assets.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.90879821777344, 381.6918640136719, 535.3616943359375, 403.87713623046875], "page": 6, "span": [0, 179], "__ref_s3_data": null}], "text": "With your eyes now open to the importance of securing information assets, the rest of this chapter reviews the methods that are available for securing database resources on IBM i.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.44733428955078, 338.3087158203125, 323.3839111328125, 354.5881042480469], "page": 6, "span": [0, 35], "__ref_s3_data": null}], "text": "1.2 Current state of IBM i security", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.1368408203125, 275.52197265625, 547.3182373046875, 322.23028564453125], "page": 6, "span": [0, 306], "__ref_s3_data": null}], "text": "Because of the inherently secure nature of IBM i, many clients rely on the default system settings to protect their business data that is stored in DB2 for i. In most cases, this means no data protection because the default setting for the Create default public authority (QCRTAUT) system value is *CHANGE.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.79974365234375, 206.1400604248047, 547.284423828125, 264.12274169921875], "page": 6, "span": [0, 405], "__ref_s3_data": null}], "text": "Even more disturbing is that many IBM i clients remain in this state, despite the news headlines and the significant costs that are involved with databases being compromised. This default security configuration makes it quite challenging to implement basic security policies. A tighter implementation is required if you really want to protect one of your company's most valuable assets, which is the data.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.8997802734375, 111.57879638671875, 547.2832641601562, 193.8753662109375], "page": 6, "span": [0, 640], "__ref_s3_data": null}], "text": "Traditionally, IBM i applications have employed menu-based security to counteract this default configuration that gives all users access to the data. The theory is that data is protected by the menu options controlling what database operations that the user can perform. This approach is ineffective, even if the user profile is restricted from running interactive commands. The reason is that in today's connected world there are a multitude of interfaces into the system, from web browsers to PC clients, that bypass application menus. If there are no object-level controls, users of these newer interfaces have an open door to your data.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [63.92394256591797, 27.93828010559082, 72.8219985961914, 37.713134765625], "page": 6, "span": [0, 1], "__ref_s3_data": null}], "text": "2", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [87.81553649902344, 28.03179931640625, 328.7253723144531, 37.31463623046875], "page": 6, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.09014129638672, 27.93828010559082, 72.8219985961914, 37.92034912109375], "page": 7, "span": [0, 1], "__ref_s3_data": null}], "text": "4", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [87.84030151367188, 28.01824951171875, 328.7253723144531, 37.3697509765625], "page": 7, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [135.9996337890625, 638.906982421875, 544.3033447265625, 721.3639526367188], "page": 7, "span": [0, 589], "__ref_s3_data": null}], "text": "Many businesses are trying to limit data access to a need-to-know basis. This security goal means that users should be given access only to the minimum set of data that is required to perform their job. Often, users with object-level access are given access to row and column values that are beyond what their business task requires because that object-level security provides an all-or-nothing solution. For example, object-level controls allow a manager to access data about all employees. Most security policies limit a manager to accessing data only for the employees that they manage.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.4480209350586, 606.2725830078125, 301.4690246582031, 619.7714233398438], "page": 7, "span": [0, 37], "__ref_s3_data": null}], "text": "1.3.1 Existing row and column control", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.77957153320312, 534.8919677734375, 541.5673828125, 593.479248046875], "page": 7, "span": [0, 377], "__ref_s3_data": null}], "text": "Some IBM i clients have tried augmenting the all-or-nothing object-level security with SQL views (or logical files) and application logic, as shown in Figure 1-2. However, application-based logic is easy to bypass with all of the different data access interfaces that are provided by the IBM i operating system, such as Open Database Connectivity (ODBC) and System i Navigator.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.9119110107422, 477.10101318359375, 547.4407958984375, 523.368896484375], "page": 7, "span": [0, 340], "__ref_s3_data": null}], "text": "Using SQL views to limit access to a subset of the data in a table also has its own set of challenges. First, there is the complexity of managing all of the SQL view objects that are used for securing data access. Second, scaling a view-based security solution can be difficult as the amount of data grows and the number of users increases.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.0379638671875, 430.80120849609375, 547.232666015625, 465.39056396484375], "page": 7, "span": [0, 247], "__ref_s3_data": null}], "text": "Even if you are willing to live with these performance and management issues, a user with *ALLOBJ access still can directly access all of the data in the underlying DB2 table and easily bypass the security controls that are built into an SQL view.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.23910522460938, 91.83807373046875, 317.073486328125, 101.11260986328125], "page": 7, "span": [0, 43], "__ref_s3_data": null}], "text": "Figure 1-2 Existing row and column controls", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/6"}, {"prov": [{"bbox": [64.09011840820312, 708.0057373046875, 335.4955139160156, 721.8206787109375], "page": 8, "span": [0, 38], "__ref_s3_data": null}], "text": "2.1.6 Change Function Usage CL command", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.83584594726562, 684.7753295898438, 547.284423828125, 695.3712768554688], "page": 8, "span": [0, 90], "__ref_s3_data": null}], "text": "The following CL commands can be used to work with, display, or change function usage IDs:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.6907196044922, 667.4461669921875, 301.5174865722656, 678.259765625], "page": 8, "span": [0, 49], "__ref_s3_data": null}], "text": "- GLYPH Work Function Usage ( WRKFCNUSG )", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.7242889404297, 655.3120727539062, 313.39776611328125, 666.0692138671875], "page": 8, "span": [0, 51], "__ref_s3_data": null}], "text": "- GLYPH Change Function Usage ( CHGFCNUSG )", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.71124267578125, 643.400390625, 310.8171081542969, 654.0370483398438], "page": 8, "span": [0, 52], "__ref_s3_data": null}], "text": "- GLYPH Display Function Usage ( DSPFCNUSG )", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.30247497558594, 610.2994995117188, 512.5380249023438, 632.781494140625], "page": 8, "span": [0, 126], "__ref_s3_data": null}], "text": "For example, the following CHGFCNUSG command shows granting authorization to user HBEDOYA to administer and manage RCAC rules:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.3306427001953, 593.1199951171875, 441.59686279296875, 604.0092163085938], "page": 8, "span": [0, 61], "__ref_s3_data": null}], "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED)", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [63.9356689453125, 559.875732421875, 544.4754638671875, 573.8617553710938], "page": 8, "span": [0, 72], "__ref_s3_data": null}], "text": "2.1.7 Verifying function usage IDs for RCAC with the FUNCTION_USAGE view", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.84828186035156, 525.2785034179688, 519.5179443359375, 547.4229736328125], "page": 8, "span": [0, 130], "__ref_s3_data": null}], "text": "The FUNCTION_USAGE view contains function usage configuration details. Table 2-1 describes the columns in the FUNCTION_USAGE view.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.8000030517578, 504.11700439453125, 284.9328308105469, 513.490478515625], "page": 8, "span": [0, 29], "__ref_s3_data": null}], "text": "Table 2-1 FUNCTION_USAGE view", "type": "caption", "name": "Caption", "font": null}, {"name": "Table", "type": "table", "$ref": "#/tables/1"}, {"prov": [{"bbox": [135.81077575683594, 318.2784729003906, 547.2803955078125, 340.671142578125], "page": 8, "span": [0, 112], "__ref_s3_data": null}], "text": "To discover who has authorization to define and manage RCAC, you can use the query that is shown in Example 2-1.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.28225708007812, 296.11798095703125, 462.98095703125, 306.23565673828125], "page": 8, "span": [0, 74], "__ref_s3_data": null}], "text": "Example 2-1 Query to determine who has authority to define and manage RCAC", "type": "paragraph", "name": "paragraph", "font": null}, {"prov": [{"bbox": [136.8000030517578, 207.56837463378906, 331.67730712890625, 288.34197998046875], "page": 8, "span": [0, 122], "__ref_s3_data": null}], "text": "SELECT function_id, user_name, usage, user_type FROM function_usage WHERE function_id='QIBM_DB_SECADM' ORDER BY user_name;", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.18024444580078, 156.3486328125, 249.59605407714844, 172.6075439453125], "page": 8, "span": [0, 24], "__ref_s3_data": null}], "text": "2.2 Separation of duties", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.1588592529297, 81.817626953125, 547.2234497070312, 140.1129150390625], "page": 8, "span": [0, 463], "__ref_s3_data": null}], "text": "Separation of duties helps businesses comply with industry regulations or organizational requirements and simplifies the management of authorities. Separation of duties is commonly used to prevent fraudulent activities or errors by a single person. It provides the ability for administrative functions to be divided across individuals without overlapping responsibilities, so that one user does not possess unlimited authority, such as with the *ALLOBJ authority.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.4488525390625, 27.93828010559082, 78.4020004272461, 37.581298828125], "page": 8, "span": [0, 2], "__ref_s3_data": null}], "text": "10", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.35774993896484, 28.04144287109375, 334.4214172363281, 37.31072998046875], "page": 8, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [135.92747497558594, 650.9638671875, 542.6943359375, 721.3446044921875], "page": 9, "span": [0, 516], "__ref_s3_data": null}], "text": "For example, assume that a business has assigned the duty to manage security on IBM i to Theresa. Before release IBM i 7.2, to grant privileges, Theresa had to have the same privileges Theresa was granting to others. Therefore, to grant *USE privileges to the PAYROLL table, Theresa had to have *OBJMGT and *USE authority (or a higher level of authority, such as *ALLOBJ). This requirement allowed Theresa to access the data in the PAYROLL table even though Theresa's job description was only to manage its security.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.04833984375, 593.2598266601562, 547.303955078125, 639.4869384765625], "page": 9, "span": [0, 285], "__ref_s3_data": null}], "text": "In IBM i 7.2, the QIBM_DB_SECADM function usage grants authorities, revokes authorities, changes ownership, or changes the primary group without giving access to the object or, in the case of a database table, to the data that is in the table or allowing other operations on the table.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.00685119628906, 558.9195556640625, 538.6507568359375, 581.5885009765625], "page": 9, "span": [0, 129], "__ref_s3_data": null}], "text": "QIBM_DB_SECADM function usage can be granted only by a user with *SECADM special authority and can be given to a user or a group.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.68702697753906, 513.281005859375, 545.7960205078125, 547.4618530273438], "page": 9, "span": [0, 204], "__ref_s3_data": null}], "text": "QIBM_DB_SECADM also is responsible for administering RCAC, which restricts which rows a user is allowed to access in a table and whether a user is allowed to see information in certain columns of a table.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.86065673828125, 455.2619934082031, 539.80712890625, 501.3948669433594], "page": 9, "span": [0, 285], "__ref_s3_data": null}], "text": "A preferred practice is that the RCAC administrator has the QIBM_DB_SECADM function usage ID, but absolutely no other data privileges. The result is that the RCAC administrator can deploy and maintain the RCAC constructs, but cannot grant themselves unauthorized access to data itself.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.7205352783203, 421.3023681640625, 543.067138671875, 443.39068603515625], "page": 9, "span": [0, 136], "__ref_s3_data": null}], "text": "Table 2-2 shows a comparison of the different function usage IDs and *JOBCTL authority to the different CL commands and DB2 for i tools.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.80000305175781, 399.74505615234375, 392.4624328613281, 409.4712829589844], "page": 9, "span": [0, 78], "__ref_s3_data": null}], "text": "Table 2-2 Comparison of the different function usage IDs and *JOBCTL authority", "type": "caption", "name": "Caption", "font": null}, {"name": "Table", "type": "table", "$ref": "#/tables/2"}, {"prov": [{"bbox": [354.4815673828125, 27.89447021484375, 523.5407104492188, 37.05841064453125], "page": 9, "span": [0, 41], "__ref_s3_data": null}], "text": "Chapter 2. Roles and separation of duties", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [536.0808715820312, 27.93828010559082, 547.2591552734375, 37.7674560546875], "page": 9, "span": [0, 2], "__ref_s3_data": null}], "text": "11", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [135.73501586914062, 699.0009765625, 528.7305908203125, 721.5136108398438], "page": 10, "span": [0, 135], "__ref_s3_data": null}], "text": "The SQL CREATE PERMISSION statement that is shown in Figure 3-1 is used to define and initially enable or disable the row access rules.", "type": "caption", "name": "Caption", "font": null}, {"prov": [{"bbox": [136.3166961669922, 369.1156921386719, 342.55548095703125, 378.73248291015625], "page": 10, "span": [0, 42], "__ref_s3_data": null}], "text": "Figure 3-1 CREATE PERMISSION SQL statement", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/7"}, {"prov": [{"bbox": [136.24984741210938, 340.95599365234375, 215.88082885742188, 353.2656555175781], "page": 10, "span": [0, 11], "__ref_s3_data": null}], "text": "Column mask", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.803466796875, 291.6988525390625, 542.7664794921875, 338.0789489746094], "page": 10, "span": [0, 297], "__ref_s3_data": null}], "text": "A column mask is a database object that manifests a column value access control rule for a specific column in a specific table. It uses a CASE expression that describes what you see when you access the column. For example, a teller can see only the last four digits of a tax identification number.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [344.5666809082031, 27.9176025390625, 523.6016235351562, 37.281982421875], "page": 10, "span": [0, 40], "__ref_s3_data": null}], "text": "Chapter 3. Row and Column Access Control", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [536.0999755859375, 27.93828010559082, 547.2591552734375, 37.689697265625], "page": 10, "span": [0, 2], "__ref_s3_data": null}], "text": "15", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [135.82176208496094, 711.1845703125, 412.20758056640625, 721.317138671875], "page": 11, "span": [0, 62], "__ref_s3_data": null}], "text": "Table 3-1 summarizes these special registers and their values.", "type": "paragraph", "name": "paragraph", "font": null}, {"prov": [{"bbox": [136.8000030517578, 690.0601806640625, 372.7710876464844, 699.2779541015625], "page": 11, "span": [0, 58], "__ref_s3_data": null}], "text": "Table 3-1 Special registers and their corresponding values", "type": "caption", "name": "Caption", "font": null}, {"name": "Table", "type": "table", "$ref": "#/tables/3"}, {"prov": [{"bbox": [136.3730926513672, 556.2984619140625, 538.493896484375, 578.6343383789062], "page": 11, "span": [0, 97], "__ref_s3_data": null}], "text": "Figure 3-5 shows the difference in the special register values when an adopted authority is used:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.5663299560547, 539.2213134765625, 411.36138916015625, 549.454345703125], "page": 11, "span": [0, 75], "__ref_s3_data": null}], "text": "- GLYPH A user connects to the server using the user profile ALICE.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.5452880859375, 522.2791137695312, 453.2580871582031, 532.7073974609375], "page": 11, "span": [0, 77], "__ref_s3_data": null}], "text": "- GLYPH USER and CURRENT USER initially have the same value of ALICE.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.3970947265625, 493.01019287109375, 541.4498291015625, 515.4821166992188], "page": 11, "span": [0, 160], "__ref_s3_data": null}], "text": "- GLYPH ALICE calls an SQL procedure that is named proc1, which is owned by user profile JOE and was created to adopt JOE's authority when it is called.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.5677947998047, 451.4921875, 547.2167358398438, 486.18145751953125], "page": 11, "span": [0, 253], "__ref_s3_data": null}], "text": "- GLYPH While the procedure is running, the special register USER still contains the value of ALICE because it excludes any adopted authority. The special register CURRENT USER contains the value of JOE because it includes any adopted authority.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.56973266601562, 423.0643615722656, 547.3540649414062, 445.5053405761719], "page": 11, "span": [0, 133], "__ref_s3_data": null}], "text": "- GLYPH When proc1 ends, the session reverts to its original state with both USER and CURRENT USER having the value of ALICE.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.22442626953125, 186.25537109375, 342.349853515625, 195.81939697265625], "page": 11, "span": [0, 50], "__ref_s3_data": null}], "text": "Figure 3-5 Special registers and adopted authority", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/8"}, {"prov": [{"bbox": [64.079833984375, 154.15521240234375, 247.02536010742188, 167.67864990234375], "page": 11, "span": [0, 31], "__ref_s3_data": null}], "text": "3.2.2 Built-in global variables", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.3346710205078, 119.0784683227539, 518.0011596679688, 141.24090576171875], "page": 11, "span": [0, 161], "__ref_s3_data": null}], "text": "Built-in global variables are provided with the database manager and are used in SQL statements to retrieve scalar values that are associated with the variables.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.17970275878906, 72.93243408203125, 532.3385009765625, 107.37139892578125], "page": 11, "span": [0, 233], "__ref_s3_data": null}], "text": "IBM DB2 for i supports nine different built-in global variables that are read only and maintained by the system. These global variables can be used to identify attributes of the database connection and used as part of the RCAC logic.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [344.5751037597656, 27.93109130859375, 523.6016235351562, 37.29559326171875], "page": 11, "span": [0, 40], "__ref_s3_data": null}], "text": "Chapter 3. Row and Column Access Control", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [536.0416870117188, 27.93828010559082, 547.2591552734375, 37.7122802734375], "page": 11, "span": [0, 2], "__ref_s3_data": null}], "text": "19", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [63.85088348388672, 27.93828010559082, 78.4020004272461, 37.62542724609375], "page": 12, "span": [0, 2], "__ref_s3_data": null}], "text": "20", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.31550598144531, 28.02935791015625, 334.4214172363281, 37.3028564453125], "page": 12, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [135.74647521972656, 711.1533813476562, 342.5477294921875, 721.3251953125], "page": 12, "span": [0, 51], "__ref_s3_data": null}], "text": "Table 3-2 lists the nine built-in global variables.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.80000305175781, 690.177001953125, 201.82247924804688, 699.1653442382812], "page": 12, "span": [0, 35], "__ref_s3_data": null}], "text": "Table 3-2 Built-in global variables", "type": "caption", "name": "Caption", "font": null}, {"name": "Table", "type": "table", "$ref": "#/tables/4"}, {"prov": [{"bbox": [64.34713745117188, 455.0362854003906, 384.3638916015625, 471.380859375], "page": 12, "span": [0, 34], "__ref_s3_data": null}], "text": "3.3 VERIFY_GROUP_FOR_USER function", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.8567352294922, 355.704833984375, 547.2347412109375, 438.1376037597656], "page": 12, "span": [0, 576], "__ref_s3_data": null}], "text": "The VERIFY_GROUP_FOR_USER function was added in IBM i 7.2. Although it is primarily intended for use with RCAC permissions and masks, it can be used in other SQL statements. The first parameter must be one of these three special registers: SESSION_USER, USER, or CURRENT_USER. The second and subsequent parameters are a list of user or group profiles. Each of these values must be 1 - 10 characters in length. These values are not validated for their existence, which means that you can specify the names of user profiles that do not exist without receiving any kind of error.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.01950073242188, 310.2999572753906, 547.2573852539062, 344.5970458984375], "page": 12, "span": [0, 235], "__ref_s3_data": null}], "text": "If a special register value is in the list of user profiles or it is a member of a group profile included in the list, the function returns a long integer value of 1. Otherwise, it returns a value of 0. It never returns the null value.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.42428588867188, 288.2803955078125, 458.44525146484375, 298.8746337890625], "page": 12, "span": [0, 63], "__ref_s3_data": null}], "text": "Here is an example of using the VERIFY_GROUP_FOR_USER function:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.80001831054688, 271.2408142089844, 406.0775146484375, 281.4947204589844], "page": 12, "span": [0, 57], "__ref_s3_data": null}], "text": "- 1. There are user profiles for MGR, JANE, JUDY, and TONY.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.8521728515625, 253.80572509765625, 396.9881591796875, 264.1617431640625], "page": 12, "span": [0, 58], "__ref_s3_data": null}], "text": "- 2. The user profile JANE specifies a group profile of MGR.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.08595275878906, 225.28138732910156, 536.568603515625, 247.357666015625], "page": 12, "span": [0, 127], "__ref_s3_data": null}], "text": "- 3. If a user is connected to the server using user profile JANE, all of the following function invocations return a value of 1:", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [149.8811798095703, 150.09063720703125, 451.01605224609375, 217.68408203125], "page": 12, "span": [0, 265], "__ref_s3_data": null}], "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'MGR') VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR') VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR', 'STEVE') The following function invocation returns a value of 0: VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JUDY', 'TONY')", "type": "paragraph", "name": "Code", "font": null}, {"prov": [{"bbox": [136.79959106445312, 699.5669555664062, 166.73934936523438, 720.341552734375], "page": 13, "span": [0, 11], "__ref_s3_data": null}], "text": "RETURN CASE", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.79959106445312, 530.429443359375, 521.5742797851562, 700.2308349609375], "page": 13, "span": [0, 437], "__ref_s3_data": null}], "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR', 'EMP' ) = 1 THEN EMPLOYEES . DATE_OF_BIRTH WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER = EMPLOYEES . USER_ID THEN EMPLOYEES . DATE_OF_BIRTH WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER <> EMPLOYEES . USER_ID THEN ( 9999 || '-' || MONTH ( EMPLOYEES . DATE_OF_BIRTH ) || '-' || DAY (EMPLOYEES.DATE_OF_BIRTH )) ELSE NULL END ENABLE ;", "type": "paragraph", "name": "Code", "font": null}, {"prov": [{"bbox": [135.86044311523438, 495.22808837890625, 547.2122192382812, 517.5462646484375], "page": 13, "span": [0, 136], "__ref_s3_data": null}], "text": "- 2. The other column to mask in this example is the TAX_ID information. In this example, the rules to enforce include the following ones:", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.1599578857422, 478.3014831542969, 469.1528015136719, 488.6722717285156], "page": 13, "span": [0, 62], "__ref_s3_data": null}], "text": "- -Human Resources can see the unmasked TAX_ID of the employees.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.2740936279297, 461.1424560546875, 403.95953369140625, 471.45074462890625], "page": 13, "span": [0, 50], "__ref_s3_data": null}], "text": "- -Employees can see only their own unmasked TAX_ID.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.4427947998047, 432.28228759765625, 545.16845703125, 454.6841735839844], "page": 13, "span": [0, 129], "__ref_s3_data": null}], "text": "- -Managers see a masked version of TAX_ID with the first five characters replaced with the X character (for example, XXX-XX-1234).", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.51747131347656, 414.8310852050781, 529.463623046875, 425.3660888671875], "page": 13, "span": [0, 77], "__ref_s3_data": null}], "text": "- -Any other person sees the entire TAX_ID as masked, for example, XXX-XX-XXXX.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.69093322753906, 397.82440185546875, 530.060302734375, 408.19866943359375], "page": 13, "span": [0, 82], "__ref_s3_data": null}], "text": "- To implement this column mask, run the SQL statement that is shown in Example 3-9.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.25662231445312, 376.9618835449219, 352.31475830078125, 386.553955078125], "page": 13, "span": [0, 48], "__ref_s3_data": null}], "text": "Example 3-9 Creating a mask on the TAX_ID column", "type": "paragraph", "name": "paragraph", "font": null}, {"prov": [{"bbox": [135.95343017578125, 103.45672607421875, 535.87548828125, 373.4818115234375], "page": 13, "span": [0, 590], "__ref_s3_data": null}], "text": "CREATE MASK HR_SCHEMA.MASK_TAX_ID_ON_EMPLOYEES ON HR_SCHEMA.EMPLOYEES AS EMPLOYEES FOR COLUMN TAX_ID RETURN CASE WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1 THEN EMPLOYEES . TAX_ID WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER = EMPLOYEES . USER_ID THEN EMPLOYEES . TAX_ID WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER <> EMPLOYEES . USER_ID THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( EMPLOYEES . TAX_ID , 8 , 4 ) ) WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1 THEN EMPLOYEES . TAX_ID ELSE 'XXX-XX-XXXX' END ENABLE ;", "type": "paragraph", "name": "Code", "font": null}, {"prov": [{"bbox": [344.5617370605469, 27.86419677734375, 523.6016235351562, 37.32916259765625], "page": 13, "span": [0, 40], "__ref_s3_data": null}], "text": "Chapter 3. Row and Column Access Control", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [535.6422729492188, 27.93828010559082, 547.2591552734375, 37.82464599609375], "page": 13, "span": [0, 2], "__ref_s3_data": null}], "text": "27", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [136.14459228515625, 710.7732543945312, 449.952392578125, 721.3890380859375], "page": 14, "span": [0, 65], "__ref_s3_data": null}], "text": "- 3. Figure 3-10 shows the masks that are created in the HR_SCHEMA.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.17350769042969, 610.1016235351562, 294.42578125, 619.2543334960938], "page": 14, "span": [0, 52], "__ref_s3_data": null}], "text": "Figure 3-10 Column masks shown in System i Navigator", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/9"}, {"prov": [{"bbox": [64.29059600830078, 577.004638671875, 203.98521423339844, 590.3381958007812], "page": 14, "span": [0, 21], "__ref_s3_data": null}], "text": "3.6.6 Activating RCAC", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.1686553955078, 529.5360107421875, 547.2256469726562, 563.902587890625], "page": 14, "span": [0, 265], "__ref_s3_data": null}], "text": "Now that you have created the row permission and the two column masks, RCAC must be activated. The row permission and the two column masks are enabled (last clause in the scripts), but now you must activate RCAC on the table. To do so, complete the following steps:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.5933074951172, 513.1278076171875, 409.4788818359375, 523.4700317382812], "page": 14, "span": [0, 57], "__ref_s3_data": null}], "text": "- 1. Run the SQL statements that are shown in Example 3-10.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.31597900390625, 491.5029296875, 375.2909851074219, 501.5721435546875], "page": 14, "span": [0, 51], "__ref_s3_data": null}], "text": "Example 3-10 Activating RCAC on the EMPLOYEES table", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.7803192138672, 473.9972839355469, 376.6766052246094, 484.90777587890625], "page": 14, "span": [0, 45], "__ref_s3_data": null}], "text": "- /* Active Row Access Control (permissions) */", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.8000030517578, 426.5678405761719, 354.86962890625, 471.3420715332031], "page": 14, "span": [0, 131], "__ref_s3_data": null}], "text": "/* Active Column Access Control (masks) ALTER TABLE HR_SCHEMA.EMPLOYEES ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL;", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [365.77313232421875, 462.5672912597656, 376.6766052246094, 471.3420715332031], "page": 14, "span": [0, 2], "__ref_s3_data": null}], "text": "*/", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.87640380859375, 378.27978515625, 540.8014526367188, 412.6735534667969], "page": 14, "span": [0, 231], "__ref_s3_data": null}], "text": "- 2. Look at the definition of the EMPLOYEE table, as shown in Figure 3-11. To do this, from the main navigation pane of System i Navigator, click Schemas \uf0ae HR_SCHEMA \uf0ae Tables , right-click the EMPLOYEES table, and click Definition .", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.33819580078125, 134.59954833984375, 348.354736328125, 143.758056640625], "page": 14, "span": [0, 65], "__ref_s3_data": null}], "text": "Figure 3-11 Selecting the EMPLOYEES table from System i Navigator", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/10"}, {"prov": [{"bbox": [63.84088897705078, 27.93828010559082, 78.4020004272461, 37.61041259765625], "page": 14, "span": [0, 2], "__ref_s3_data": null}], "text": "28", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.28304290771484, 28.056396484375, 334.4214172363281, 37.27587890625], "page": 14, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [136.00341796875, 687.1716918945312, 514.048583984375, 721.5369873046875], "page": 15, "span": [0, 228], "__ref_s3_data": null}], "text": "- 2. Figure 4-68 shows the Visual Explain of the same SQL statement, but with RCAC enabled. It is clear that the implementation of the SQL statement is more complex because the row permission rule becomes part of the WHERE clause.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.9990692138672, 302.78125, 327.9913635253906, 311.7919921875], "page": 15, "span": [0, 44], "__ref_s3_data": null}], "text": "Figure 4-68 Visual Explain with RCAC enabled", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/11"}, {"prov": [{"bbox": [136.2928924560547, 251.98651123046875, 547.2394409179688, 286.0349426269531], "page": 15, "span": [0, 232], "__ref_s3_data": null}], "text": "- 3. Compare the advised indexes that are provided by the Optimizer without RCAC and with RCAC enabled. Figure 4-69 shows the index advice for the SQL statement without RCAC enabled. The index being advised is for the ORDER BY clause.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.35660552978516, 116.0611572265625, 227.347412109375, 125.32025146484375], "page": 15, "span": [0, 37], "__ref_s3_data": null}], "text": "Figure 4-69 Index advice with no RCAC", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/12"}, {"prov": [{"bbox": [214.30316162109375, 27.9913330078125, 523.5935668945312, 37.2801513671875], "page": 15, "span": [0, 70], "__ref_s3_data": null}], "text": "Chapter 4. Implementing Row and Column Access Control: Banking example", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [535.3654174804688, 27.93828010559082, 547.2591552734375, 37.719970703125], "page": 15, "span": [0, 2], "__ref_s3_data": null}], "text": "77", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [62.60613250732422, 84.2364501953125, 500.697265625, 722.6401977539062], "page": 16, "span": [0, 1998], "__ref_s3_data": null}], "text": "THEN C . CUSTOMER_TAX_ID WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( C . CUSTOMER_TAX_ID , 8 , 4 ) ) WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_TAX_ID ELSE 'XXX-XX-XXXX' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_DRIVERS_LICENSE_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_DRIVERS_LICENSE_NUMBER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ELSE '*************' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_LOGIN_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_LOGIN_ID RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_LOGIN_ID WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_LOGIN_ID ELSE '*****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_SECURITY_QUESTION RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION ELSE '*****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_SECURITY_QUESTION_ANSWER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ELSE '*****' END ENABLE ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL ;", "type": "paragraph", "name": "Code", "font": null}, {"prov": [{"bbox": [64.50080871582031, 27.93828010559082, 83.98200225830078, 37.46612548828125], "page": 16, "span": [0, 3], "__ref_s3_data": null}], "text": "124", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [98.63966369628906, 27.98992919921875, 339.882080078125, 37.28564453125], "page": 16, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [287.2200012207031, 741.251953125, 414.24481201171875, 763.4519653320312], "page": 18, "span": [0, 10], "__ref_s3_data": null}], "text": "Back cover", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [26.454715728759766, 650.9618530273438, 447.3600158691406, 720.362060546875], "page": 18, "span": [0, 54], "__ref_s3_data": null}], "text": "Row and Column Access Control Support in IBM DB2 for i", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [26.35322380065918, 524.7881469726562, 127.443603515625, 551.0213623046875], "page": 18, "span": [0, 40], "__ref_s3_data": null}], "text": "Implement roles and separation of duties", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [26.22105598449707, 469.1280212402344, 120.283203125, 508.2904052734375], "page": 18, "span": [0, 40], "__ref_s3_data": null}], "text": "Leverage row permissions on the database", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [26.226221084594727, 413.14801025390625, 121.44960021972656, 452.88134765625], "page": 18, "span": [0, 40], "__ref_s3_data": null}], "text": "Protect columns by defining column masks", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [152.25205993652344, 468.4081115722656, 414.084228515625, 550.1506958007812], "page": 18, "span": [0, 464], "__ref_s3_data": null}], "text": "This IBM Redpaper publication provides information about the IBM i 7.2 feature of IBM DB2 for i Row and Column Access Control (RCAC). It offers a broad description of the function and advantages of controlling access to data in a comprehensive and transparent way. This publication helps you understand the capabilities of RCAC and provides examples of defining, creating, and implementing the row permissions and column masks in a relational database environment.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [152.3572540283203, 403.090087890625, 414.173828125, 461.4716796875], "page": 18, "span": [0, 309], "__ref_s3_data": null}], "text": "This paper is intended for database engineers, data-centric application developers, and security officers who want to design and implement RCAC as a part of their data control and governance policy. A solid background in IBM i object level security, DB2 for i relational database concepts, and SQL is assumed.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [170.78512573242188, 152.3369903564453, 232.11270141601562, 161.494140625], "page": 18, "span": [0, 12], "__ref_s3_data": null}], "text": "REDP-5110-00", "type": "page-footer", "name": "Page-footer", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/13"}, {"name": "Picture", "type": "figure", "$ref": "#/figures/14"}, {"prov": [{"bbox": [466.3692626953125, 489.8393859863281, 559.809326171875, 544.606201171875], "page": 18, "span": [0, 44], "__ref_s3_data": null}], "text": "INTERNATIONAL TECHNICAL SUPPORT ORGANIZATION", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [466.3262939453125, 405.52801513671875, 587.38916015625, 440.5700988769531], "page": 18, "span": [0, 60], "__ref_s3_data": null}], "text": "BUILDING TECHNICAL INFORMATION BASED ON PRACTICAL EXPERIENCE", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [466.1037292480469, 250.36593627929688, 587.5205078125, 393.18768310546875], "page": 18, "span": [0, 323], "__ref_s3_data": null}], "text": "IBM Redbooks are developed by the IBM International Technical Support Organization. Experts from IBM, Customers and Partners from around the world create timely technical information based on realistic scenarios. Specific recommendations are provided to help you implement IT solutions more effectively in your environment.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [466.66748046875, 190.48809814453125, 571.0052490234375, 214.11181640625], "page": 18, "span": [0, 39], "__ref_s3_data": null}], "text": "For more information: ibm.com /redbooks", "type": "paragraph", "name": "Text", "font": null}], "figures": [{"prov": [{"bbox": [513.4560546875, 737.1808471679688, 586.1583251953125, 765.9149169921875], "page": 1, "span": [0, 0], "__ref_s3_data": null}], "text": "", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [143.39866638183594, 506.378662109375, 179.56256103515625, 521.7388916015625], "page": 3, "span": [0, 0], "__ref_s3_data": null}], "text": "", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [64.16704559326172, 103.87176513671875, 258.77435302734375, 188.49365234375], "page": 3, "span": [0, 0], "__ref_s3_data": null}], "text": "", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [142.52883911132812, 288.79351806640625, 251.47850036621094, 416.9550476074219], "page": 4, "span": [0, 0], "__ref_s3_data": null}], "text": "", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [145.41448974609375, 156.616943359375, 252.08840942382812, 264.7552490234375], "page": 4, "span": [0, 0], "__ref_s3_data": null}], "text": "", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [32.05508804321289, 553.958984375, 239.62692260742188, 721.5736083984375], "page": 5, "span": [0, 0], "__ref_s3_data": null}], "text": "", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [135.92466735839844, 103.39019775390625, 546.4456176757812, 416.0727844238281], "page": 7, "span": [0, 43], "__ref_s3_data": null}], "text": "Figure 1-2 Existing row and column controls", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [135.9717559814453, 381.39068603515625, 545.4180908203125, 684.5892944335938], "page": 10, "span": [0, 177], "__ref_s3_data": null}], "text": "The SQL CREATE PERMISSION statement that is shown in Figure 3-1 is used to define and initially enable or disable the row access rules.Figure 3-1 CREATE PERMISSION SQL statement", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [135.64837646484375, 197.24334716796875, 301.2367248535156, 407.8262939453125], "page": 11, "span": [0, 50], "__ref_s3_data": null}], "text": "Figure 3-5 Special registers and adopted authority", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [63.801902770996094, 621.9678955078125, 547.11474609375, 696.6175537109375], "page": 14, "span": [0, 52], "__ref_s3_data": null}], "text": "Figure 3-10 Column masks shown in System i Navigator", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [63.98516845703125, 145.86041259765625, 530.0479125976562, 364.0950012207031], "page": 14, "span": [0, 65], "__ref_s3_data": null}], "text": "Figure 3-11 Selecting the EMPLOYEES table from System i Navigator", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [136.5016632080078, 314.4587707519531, 545.4508666992188, 672.7508544921875], "page": 15, "span": [0, 44], "__ref_s3_data": null}], "text": "Figure 4-68 Visual Explain with RCAC enabled", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [64.27847290039062, 127.9129638671875, 506.39263916015625, 238.41864013671875], "page": 15, "span": [0, 37], "__ref_s3_data": null}], "text": "Figure 4-69 Index advice with no RCAC", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [485.1698303222656, 737.3182983398438, 566.2962036132812, 766.7407836914062], "page": 18, "span": [0, 0], "__ref_s3_data": null}], "text": "", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [474.35540771484375, 602.1873779296875, 592.2726440429688, 711.9486694335938], "page": 18, "span": [0, 0], "__ref_s3_data": null}], "text": "", "type": "figure", "bounding-box": null}], "tables": [{"prov": [{"bbox": [136.15103149414062, 76.34722900390625, 549.8472290039062, 659.9697265625], "page": 2, "span": [0, 0], "__ref_s3_data": null}], "text": "", "type": "table", "#-cols": 2, "#-rows": 43, "data": [[{"bbox": [136.8000030517578, 650.1383666992188, 172.89404296875, 659.3513793945312], "spans": [[0, 0]], "text": "Notices", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 0, "row-header": false, "row-span": [0, 1]}, {"bbox": [175.01951599121094, 650.1383666992188, 547.1898193359375, 659.3513793945312], "spans": [[0, 1]], "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 0, "row-header": false, "row-span": [0, 1]}], [{"bbox": [136.79901123046875, 637.6585083007812, 189.86537170410156, 646.8715209960938], "spans": [[1, 0]], "text": "Trademarks", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 1, "row-header": false, "row-span": [1, 2]}, {"bbox": [195.3968505859375, 637.6585083007812, 547.182861328125, 646.8715209960938], "spans": [[1, 1]], "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 1, "row-header": false, "row-span": [1, 2]}], [{"bbox": [136.79901123046875, 615.1588745117188, 279.3973083496094, 624.3718872070312], "spans": [[2, 0]], "text": "DB2 for i Center of Excellence", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 2, "row-header": false, "row-span": [2, 3]}, {"bbox": [280.6194152832031, 615.1588745117188, 547.1907958984375, 624.3718872070312], "spans": [[2, 1]], "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 2, "row-header": false, "row-span": [2, 3]}], [{"bbox": [136.79901123046875, 592.6592407226562, 172.84423828125, 601.8722534179688], "spans": [[3, 0]], "text": "Preface", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 3, "row-header": false, "row-span": [3, 4]}, {"bbox": [175.01852416992188, 592.6592407226562, 547.182861328125, 601.8722534179688], "spans": [[3, 1]], "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 3, "row-header": false, "row-span": [3, 4]}], [{"bbox": [136.79803466796875, 580.1793823242188, 547.1808471679688, 589.3923950195312], "spans": [[4, 0]], "text": "Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 4, "row-header": false, "row-span": [4, 5]}, {"bbox": null, "spans": [[4, 1]], "text": "", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 4, "row-header": false, "row-span": [4, 5]}], [{"bbox": [136.79803466796875, 567.6397705078125, 339.18292236328125, 576.852783203125], "spans": [[5, 0]], "text": "Now you can become a published author, too!", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 5, "row-header": false, "row-span": [5, 6]}, {"bbox": [344.714111328125, 567.6397705078125, 547.1387939453125, 576.852783203125], "spans": [[5, 1]], "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 5, "row-header": false, "row-span": [5, 6]}], [{"bbox": [136.79803466796875, 555.159912109375, 529.9950561523438, 564.3729248046875], "spans": [[6, 0]], "text": "Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 6, "row-header": false, "row-span": [6, 7]}, {"bbox": [535.5494995117188, 555.159912109375, 547.1978759765625, 564.3729248046875], "spans": [[6, 1]], "text": "xiii", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 6, "row-header": false, "row-span": [6, 7]}], [{"bbox": [136.79806518554688, 542.6800537109375, 284.0286560058594, 551.89306640625], "spans": [[7, 0]], "text": "Stay connected to IBM Redbooks", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 7, "row-header": false, "row-span": [7, 8]}, {"bbox": [289.54449462890625, 542.6800537109375, 547.1211547851562, 551.89306640625], "spans": [[7, 1]], "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 7, "row-header": false, "row-span": [7, 8]}], [{"bbox": [136.79806518554688, 520.180419921875, 536.0958862304688, 529.3934326171875], "spans": [[8, 0]], "text": "Chapter 1. Securing and protecting IBM DB2 data . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 8, "row-header": false, "row-span": [8, 9]}, {"bbox": [541.6468505859375, 520.180419921875, 547.1978149414062, 529.3934326171875], "spans": [[8, 1]], "text": "1", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 8, "row-header": false, "row-span": [8, 9]}], [{"bbox": [136.79808044433594, 508.18060302734375, 549.8472290039062, 517.3936157226562], "spans": [[9, 0]], "text": "1.1 Security fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 9, "row-header": false, "row-span": [9, 10]}, {"bbox": null, "spans": [[9, 1]], "text": "", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 9, "row-header": false, "row-span": [9, 10]}], [{"bbox": [136.79806518554688, 495.6409606933594, 536.1293334960938, 504.85394287109375], "spans": [[10, 0]], "text": "1.2 Current state of IBM i security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 10, "row-header": false, "row-span": [10, 11]}, {"bbox": [541.6611328125, 495.6409606933594, 547.19287109375, 504.85394287109375], "spans": [[10, 1]], "text": "2", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 10, "row-header": false, "row-span": [10, 11]}], [{"bbox": [136.79806518554688, 483.16107177734375, 549.8472290039062, 492.3740539550781], "spans": [[11, 0]], "text": "1.3 DB2 for i security controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 11, "row-header": false, "row-span": [11, 12]}, {"bbox": null, "spans": [[11, 1]], "text": "", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 11, "row-header": false, "row-span": [11, 12]}], [{"bbox": [151.19720458984375, 470.6811828613281, 536.0551147460938, 479.8941650390625], "spans": [[12, 0]], "text": "1.3.1 Existing row and column control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 12, "row-header": false, "row-span": [12, 13]}, {"bbox": [541.6015014648438, 470.6811828613281, 547.14794921875, 479.8941650390625], "spans": [[12, 1]], "text": "4", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 12, "row-header": false, "row-span": [12, 13]}], [{"bbox": [151.19720458984375, 458.14154052734375, 536.080078125, 467.3545227050781], "spans": [[13, 0]], "text": "1.3.2 New controls: Row and Column Access Control. . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 13, "row-header": false, "row-span": [13, 14]}, {"bbox": [541.635498046875, 458.14154052734375, 547.19091796875, 467.3545227050781], "spans": [[13, 1]], "text": "5", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 13, "row-header": false, "row-span": [13, 14]}], [{"bbox": [136.7970428466797, 435.64190673828125, 536.0908813476562, 444.8548889160156], "spans": [[14, 0]], "text": "Chapter 2. Roles and separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 14, "row-header": false, "row-span": [14, 15]}, {"bbox": [541.642822265625, 435.64190673828125, 547.1947631835938, 444.8548889160156], "spans": [[14, 1]], "text": "7", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 14, "row-header": false, "row-span": [14, 15]}], [{"bbox": [136.7970428466797, 423.64208984375, 536.1271362304688, 432.8550720214844], "spans": [[15, 0]], "text": "2.1 Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 15, "row-header": false, "row-span": [15, 16]}, {"bbox": [541.6658935546875, 423.64208984375, 547.2047119140625, 432.8550720214844], "spans": [[15, 1]], "text": "8", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 15, "row-header": false, "row-span": [15, 16]}], [{"bbox": [151.19720458984375, 411.1622009277344, 535.9526977539062, 420.37518310546875], "spans": [[16, 0]], "text": "2.1.1 DDM and DRDA application server access: QIBM_DB_DDMDRDA . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 16, "row-header": false, "row-span": [16, 17]}, {"bbox": [541.5558471679688, 411.1622009277344, 547.1590576171875, 420.37518310546875], "spans": [[16, 1]], "text": "8", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 16, "row-header": false, "row-span": [16, 17]}], [{"bbox": [151.19720458984375, 398.68231201171875, 536.0410766601562, 407.8952941894531], "spans": [[17, 0]], "text": "2.1.2 Toolbox application server access: QIBM_DB_ZDA. . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 17, "row-header": false, "row-span": [17, 18]}, {"bbox": [541.595947265625, 398.68231201171875, 547.1508178710938, 407.8952941894531], "spans": [[17, 1]], "text": "8", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 17, "row-header": false, "row-span": [17, 18]}], [{"bbox": [151.19720458984375, 386.1426696777344, 536.0748901367188, 395.35565185546875], "spans": [[18, 0]], "text": "2.1.3 Database Administrator function: QIBM_DB_SQLADM . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 18, "row-header": false, "row-span": [18, 19]}, {"bbox": [541.6302490234375, 386.1426696777344, 547.1856079101562, 395.35565185546875], "spans": [[18, 1]], "text": "9", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 18, "row-header": false, "row-span": [18, 19]}], [{"bbox": [151.19720458984375, 373.66278076171875, 411.2704772949219, 382.8757629394531], "spans": [[19, 0]], "text": "2.1.4 Database Information function: QIBM_DB_SYSMON", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 19, "row-header": false, "row-span": [19, 20]}, {"bbox": [416.8177490234375, 373.66278076171875, 547.1786499023438, 382.8757629394531], "spans": [[19, 1]], "text": ". . . . . . . . . . . . . . . . . . . . . . 9", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 19, "row-header": false, "row-span": [19, 20]}], [{"bbox": [151.19720458984375, 361.1828918457031, 536.035888671875, 370.3958740234375], "spans": [[20, 0]], "text": "2.1.5 Security Administrator function: QIBM_DB_SECADM . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 20, "row-header": false, "row-span": [20, 21]}, {"bbox": [541.5989379882812, 361.1828918457031, 547.1619262695312, 370.3958740234375], "spans": [[20, 1]], "text": "9", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 20, "row-header": false, "row-span": [20, 21]}], [{"bbox": [151.19720458984375, 348.64324951171875, 530.5731811523438, 357.8562316894531], "spans": [[21, 0]], "text": "2.1.6 Change Function Usage CL command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 21, "row-header": false, "row-span": [21, 22]}, {"bbox": [536.1044311523438, 348.64324951171875, 547.1668701171875, 357.8562316894531], "spans": [[21, 1]], "text": "10", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 21, "row-header": false, "row-span": [21, 22]}], [{"bbox": [151.19720458984375, 336.1633605957031, 530.5352172851562, 345.3763427734375], "spans": [[22, 0]], "text": "2.1.7 Verifying function usage IDs for RCAC with the FUNCTION_USAGE view . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 22, "row-header": false, "row-span": [22, 23]}, {"bbox": [536.0755004882812, 336.1633605957031, 547.156005859375, 345.3763427734375], "spans": [[22, 1]], "text": "10", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 22, "row-header": false, "row-span": [22, 23]}], [{"bbox": [136.7970428466797, 323.6834716796875, 547.256591796875, 332.8964538574219], "spans": [[23, 0]], "text": "2.2 Separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 23, "row-header": false, "row-span": [23, 24]}, {"bbox": null, "spans": [[23, 1]], "text": "", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 23, "row-header": false, "row-span": [23, 24]}], [{"bbox": [136.79702758789062, 301.183837890625, 530.5396118164062, 310.3968200683594], "spans": [[24, 0]], "text": "Chapter 3. Row and Column Access Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 24, "row-header": false, "row-span": [24, 25]}, {"bbox": [536.0916748046875, 301.183837890625, 547.19580078125, 310.3968200683594], "spans": [[24, 1]], "text": "13", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 24, "row-header": false, "row-span": [24, 25]}], [{"bbox": [136.79702758789062, 289.18402099609375, 530.4808959960938, 298.3970031738281], "spans": [[25, 0]], "text": "3.1 Explanation of RCAC and the concept of access control . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 25, "row-header": false, "row-span": [25, 26]}, {"bbox": [536.04248046875, 289.18402099609375, 547.1657104492188, 298.3970031738281], "spans": [[25, 1]], "text": "14", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 25, "row-header": false, "row-span": [25, 26]}], [{"bbox": [151.1971893310547, 276.6443786621094, 378.2078552246094, 285.85736083984375], "spans": [[26, 0]], "text": "3.1.1 Row permission and column mask definitions", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 26, "row-header": false, "row-span": [26, 27]}, {"bbox": [383.74713134765625, 276.6443786621094, 547.15576171875, 285.85736083984375], "spans": [[26, 1]], "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . 14", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 26, "row-header": false, "row-span": [26, 27]}], [{"bbox": [151.1971893310547, 264.16448974609375, 530.4347534179688, 273.3774719238281], "spans": [[27, 0]], "text": "3.1.2 Enabling and activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 27, "row-header": false, "row-span": [27, 28]}, {"bbox": [535.9962158203125, 264.16448974609375, 547.1190795898438, 273.3774719238281], "spans": [[27, 1]], "text": "16", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 27, "row-header": false, "row-span": [27, 28]}], [{"bbox": [136.79702758789062, 251.6248321533203, 530.528076171875, 260.83782958984375], "spans": [[28, 0]], "text": "3.2 Special registers and built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 28, "row-header": false, "row-span": [28, 29]}, {"bbox": [536.0670166015625, 251.6248321533203, 547.1448364257812, 260.83782958984375], "spans": [[28, 1]], "text": "18", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 28, "row-header": false, "row-span": [28, 29]}], [{"bbox": [151.1971893310547, 239.14495849609375, 530.4978637695312, 248.3579559326172], "spans": [[29, 0]], "text": "3.2.1 Special registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 29, "row-header": false, "row-span": [29, 30]}, {"bbox": [536.0518798828125, 239.14495849609375, 547.159912109375, 248.3579559326172], "spans": [[29, 1]], "text": "18", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 29, "row-header": false, "row-span": [29, 30]}], [{"bbox": [151.1971893310547, 226.6650848388672, 530.5602416992188, 235.87808227539062], "spans": [[30, 0]], "text": "3.2.2 Built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 30, "row-header": false, "row-span": [30, 31]}, {"bbox": [536.09912109375, 226.6650848388672, 547.1768798828125, 235.87808227539062], "spans": [[30, 1]], "text": "19", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 30, "row-header": false, "row-span": [30, 31]}], [{"bbox": [136.79702758789062, 214.1254425048828, 530.5302734375, 223.33843994140625], "spans": [[31, 0]], "text": "3.3 VERIFY_GROUP_FOR_USER function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 31, "row-header": false, "row-span": [31, 32]}, {"bbox": [536.0615234375, 214.1254425048828, 547.1240234375, 223.33843994140625], "spans": [[31, 1]], "text": "20", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 31, "row-header": false, "row-span": [31, 32]}], [{"bbox": [136.79702758789062, 201.64556884765625, 530.6299438476562, 210.8585662841797], "spans": [[32, 0]], "text": "3.4 Establishing and controlling accessibility by using the RCAC rule text . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 32, "row-header": false, "row-span": [32, 33]}, {"bbox": [536.1631469726562, 201.64556884765625, 547.2295532226562, 210.8585662841797], "spans": [[32, 1]], "text": "21", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 32, "row-header": false, "row-span": [32, 33]}], [{"bbox": null, "spans": [[33, 0]], "text": "", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 33, "row-header": false, "row-span": [33, 34]}, {"bbox": [400.3206481933594, 189.1656951904297, 547.10009765625, 198.37869262695312], "spans": [[33, 1]], "text": ". . . . . . . . . . . . . . . . . . . . . . . . 22", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 33, "row-header": false, "row-span": [33, 34]}], [{"bbox": [136.79701232910156, 189.1656951904297, 394.78179931640625, 198.37869262695312], "spans": [[34, 0]], "text": "3.5 SELECT, INSERT, and UPDATE behavior with RCAC", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 34, "row-header": false, "row-span": [34, 35]}, {"bbox": null, "spans": [[34, 1]], "text": "", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 34, "row-header": false, "row-span": [34, 35]}], [{"bbox": [151.19717407226562, 164.14617919921875, 530.4913940429688, 173.3591766357422], "spans": [[35, 0]], "text": "3.6.1 Assigning the QIBM_DB_SECADM function ID to the consultants. . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 35, "row-header": false, "row-span": [35, 36]}, {"bbox": [536.0463256835938, 164.14617919921875, 547.1561889648438, 173.3591766357422], "spans": [[35, 1]], "text": "23", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 35, "row-header": false, "row-span": [35, 36]}], [{"bbox": [151.19717407226562, 151.6663055419922, 530.5645751953125, 160.87930297851562], "spans": [[36, 0]], "text": "3.6.2 Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 36, "row-header": false, "row-span": [36, 37]}, {"bbox": [536.0960083007812, 151.6663055419922, 547.1587524414062, 160.87930297851562], "spans": [[36, 1]], "text": "23", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 36, "row-header": false, "row-span": [36, 37]}], [{"bbox": [151.19717407226562, 139.1266632080078, 530.5569458007812, 148.33966064453125], "spans": [[37, 0]], "text": "3.6.3 Demonstrating data access without RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 37, "row-header": false, "row-span": [37, 38]}, {"bbox": [536.0881958007812, 139.1266632080078, 547.1507568359375, 148.33966064453125], "spans": [[37, 1]], "text": "24", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 37, "row-header": false, "row-span": [37, 38]}], [{"bbox": [151.19717407226562, 126.64678955078125, 530.5341186523438, 135.8597869873047], "spans": [[38, 0]], "text": "3.6.4 Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 38, "row-header": false, "row-span": [38, 39]}, {"bbox": [536.072998046875, 126.64678955078125, 547.15087890625, 135.8597869873047], "spans": [[38, 1]], "text": "25", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 38, "row-header": false, "row-span": [38, 39]}], [{"bbox": [151.19717407226562, 114.16690826416016, 339.4510498046875, 123.37991333007812], "spans": [[39, 0]], "text": "3.6.5 Defining and creating column masks", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 39, "row-header": false, "row-span": [39, 40]}, {"bbox": [344.9899597167969, 114.16690826416016, 547.160888671875, 123.37991333007812], "spans": [[39, 1]], "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 39, "row-header": false, "row-span": [39, 40]}], [{"bbox": [151.19717407226562, 101.62727355957031, 530.541015625, 110.84027099609375], "spans": [[40, 0]], "text": "3.6.6 Activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 40, "row-header": false, "row-span": [40, 41]}, {"bbox": [536.087646484375, 101.62727355957031, 547.1808471679688, 110.84027099609375], "spans": [[40, 1]], "text": "28", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 40, "row-header": false, "row-span": [40, 41]}], [{"bbox": [151.19717407226562, 89.14738464355469, 530.5750732421875, 98.36038970947266], "spans": [[41, 0]], "text": "3.6.7 Demonstrating data access with RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 41, "row-header": false, "row-span": [41, 42]}, {"bbox": [536.1066284179688, 89.14738464355469, 547.169677734375, 98.36038970947266], "spans": [[41, 1]], "text": "29", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 41, "row-header": false, "row-span": [41, 42]}], [{"bbox": [151.19717407226562, 76.6675033569336, 530.436279296875, 85.88050842285156], "spans": [[42, 0]], "text": "3.6.8 Demonstrating data access with a view and RCAC . . . . . . . . . . . . . . . . . . . . . . .", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 42, "row-header": false, "row-span": [42, 43]}, {"bbox": [535.9984741210938, 76.6675033569336, 547.1228637695312, 85.88050842285156], "spans": [[42, 1]], "text": "32", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 42, "row-header": false, "row-span": [42, 43]}]], "model": null, "bounding-box": null}, {"prov": [{"bbox": [135.52508544921875, 349.9494934082031, 545.87060546875, 502.2750244140625], "page": 8, "span": [0, 0], "__ref_s3_data": null}], "text": "Table 2-1 FUNCTION_USAGE view", "type": "table", "#-cols": 3, "#-rows": 5, "data": [[{"bbox": [142.8000030517578, 487.1369934082031, 202.2449951171875, 495.4620056152344], "spans": [[0, 0]], "text": "Column name", "type": "col_header", "col": 0, "col-header": true, "col-span": [0, 1], "row": 0, "row-header": false, "row-span": [0, 1]}, {"bbox": [216.8087921142578, 487.1369934082031, 257.210693359375, 495.4620056152344], "spans": [[0, 1]], "text": "Data type", "type": "col_header", "col": 1, "col-header": true, "col-span": [1, 2], "row": 0, "row-header": false, "row-span": [0, 1]}, {"bbox": [289.47479248046875, 487.1369934082031, 338.8946838378906, 495.4620056152344], "spans": [[0, 2]], "text": "Description", "type": "col_header", "col": 2, "col-header": true, "col-span": [2, 3], "row": 0, "row-header": false, "row-span": [0, 1]}], [{"bbox": [142.8000030517578, 468.1172790527344, 203.2322998046875, 476.4422912597656], "spans": [[1, 0]], "text": "FUNCTION_ID", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 1, "row-header": false, "row-span": [1, 2]}, {"bbox": [216.785400390625, 468.1172790527344, 276.00360107421875, 476.4422912597656], "spans": [[1, 1]], "text": "VARCHAR(30)", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 1, "row-header": false, "row-span": [1, 2]}, {"bbox": [289.45770263671875, 468.1172790527344, 359.85394287109375, 476.4422912597656], "spans": [[1, 2]], "text": "ID of the function.", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 1, "row-header": false, "row-span": [1, 2]}], [{"bbox": [142.8000030517578, 449.156982421875, 198.66929626464844, 457.48199462890625], "spans": [[2, 0]], "text": "USER_NAME", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 2, "row-header": false, "row-span": [2, 3]}, {"bbox": [216.74130249023438, 449.156982421875, 275.9234924316406, 457.48199462890625], "spans": [[2, 1]], "text": "VARCHAR(10)", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 2, "row-header": false, "row-span": [2, 3]}, {"bbox": [289.382080078125, 438.1166687011719, 515.0535888671875, 457.48199462890625], "spans": [[2, 2]], "text": "Name of the user profile that has a usage setting for this function.", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 2, "row-header": false, "row-span": [2, 3]}], [{"bbox": [142.79998779296875, 419.1563720703125, 173.98318481445312, 427.48138427734375], "spans": [[3, 0]], "text": "USAGE", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 3, "row-header": false, "row-span": [3, 4]}, {"bbox": [216.773681640625, 419.1563720703125, 270.9797668457031, 427.48138427734375], "spans": [[3, 1]], "text": "VARCHAR(7)", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 3, "row-header": false, "row-span": [3, 4]}, {"bbox": [289.416259765625, 397.13604736328125, 539.1071166992188, 427.48138427734375], "spans": [[3, 2]], "text": "Usage setting: GLYPH ALLOWED: The user profile is allowed to use the function. GLYPH DENIED: The user profile is not allowed to use the function.", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 3, "row-header": false, "row-span": [3, 4]}], [{"bbox": [142.8000030517578, 378.1163330078125, 196.2248992919922, 386.44134521484375], "spans": [[4, 0]], "text": "USER_TYPE", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 4, "row-header": false, "row-span": [4, 5]}, {"bbox": [216.75210571289062, 378.1163330078125, 270.99871826171875, 386.44134521484375], "spans": [[4, 1]], "text": "VARCHAR(5)", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 4, "row-header": false, "row-span": [4, 5]}, {"bbox": [289.4316101074219, 356.15631103515625, 448.11962890625, 386.44134521484375], "spans": [[4, 2]], "text": "Type of user profile: GLYPH USER: The user profile is a user. GLYPH GROUP: The user profile is a group.", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 4, "row-header": false, "row-span": [4, 5]}]], "model": null, "bounding-box": null}, {"prov": [{"bbox": [64.41139221191406, 70.39208984375, 547.3950805664062, 398.3863525390625], "page": 9, "span": [0, 0], "__ref_s3_data": null}], "text": "Table 2-2 Comparison of the different function usage IDs and *JOBCTL authority", "type": "table", "#-cols": 6, "#-rows": 13, "data": [[{"bbox": [70.80030059814453, 383.1567077636719, 119.78550720214844, 391.4817199707031], "spans": [[0, 0]], "text": "User action", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 1], "row": 0, "row-header": true, "row-span": [0, 1]}, {"bbox": [424.93804931640625, 304.9800109863281, 433.2629699707031, 344.4774475097656], "spans": [[0, 1]], "text": "*JOBCTL", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 0, "row-header": false, "row-span": [0, 1]}, {"bbox": [450.1380615234375, 304.9800109863281, 458.4629821777344, 390.3999328613281], "spans": [[0, 2]], "text": "QIBM_DB_SECADM", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 0, "row-header": false, "row-span": [0, 1]}, {"bbox": [475.9383544921875, 304.9800109863281, 484.2632751464844, 390.465576171875], "spans": [[0, 3]], "text": "QIBM_DB_SQLADM", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 0, "row-header": false, "row-span": [0, 1]}, {"bbox": [501.13836669921875, 304.9800109863281, 509.4632873535156, 390.385498046875], "spans": [[0, 4]], "text": "QIBM_DB_SYSMON", "type": "body", "col": 4, "col-header": false, "col-span": [4, 5], "row": 0, "row-header": false, "row-span": [0, 1]}, {"bbox": [526.3986206054688, 304.9799499511719, 534.7235717773438, 359.2005615234375], "spans": [[0, 5]], "text": "No Authority", "type": "body", "col": 5, "col-header": false, "col-span": [5, 6], "row": 0, "row-header": false, "row-span": [0, 1]}], [{"bbox": [70.80000305175781, 285.11700439453125, 220.1568145751953, 293.4420166015625], "spans": [[1, 0]], "text": "SET CURRENT DEGREE (SQL statement)", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 1], "row": 1, "row-header": true, "row-span": [1, 2]}, {"bbox": [429.0, 285.11700439453125, 435.00299072265625, 293.4420166015625], "spans": [[1, 1]], "text": "X", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 1, "row-header": false, "row-span": [1, 2]}, {"bbox": null, "spans": [[1, 2]], "text": "", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 1, "row-header": false, "row-span": [1, 2]}, {"bbox": [480.00030517578125, 285.11700439453125, 486.0032958984375, 293.4420166015625], "spans": [[1, 3]], "text": "X", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 1, "row-header": false, "row-span": [1, 2]}, {"bbox": null, "spans": [[1, 4]], "text": "", "type": "body", "col": 4, "col-header": false, "col-span": [4, 5], "row": 1, "row-header": false, "row-span": [1, 2]}, {"bbox": null, "spans": [[1, 5]], "text": "", "type": "body", "col": 5, "col-header": false, "col-span": [5, 6], "row": 1, "row-header": false, "row-span": [1, 2]}], [{"bbox": [70.80001831054688, 266.1567077636719, 264.5538024902344, 274.4817199707031], "spans": [[2, 0]], "text": "CHGQRYA command targeting a different user's job", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 1], "row": 2, "row-header": true, "row-span": [2, 3]}, {"bbox": [429.0000305175781, 266.1567077636719, 435.0030212402344, 274.4817199707031], "spans": [[2, 1]], "text": "X", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 2, "row-header": false, "row-span": [2, 3]}, {"bbox": null, "spans": [[2, 2]], "text": "", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 2, "row-header": false, "row-span": [2, 3]}, {"bbox": [480.0003356933594, 266.1567077636719, 486.0033264160156, 274.4817199707031], "spans": [[2, 3]], "text": "X", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 2, "row-header": false, "row-span": [2, 3]}, {"bbox": null, "spans": [[2, 4]], "text": "", "type": "body", "col": 4, "col-header": false, "col-span": [4, 5], "row": 2, "row-header": false, "row-span": [2, 3]}, {"bbox": null, "spans": [[2, 5]], "text": "", "type": "body", "col": 5, "col-header": false, "col-span": [5, 6], "row": 2, "row-header": false, "row-span": [2, 3]}], [{"bbox": [70.800048828125, 247.1370086669922, 322.5057373046875, 255.46202087402344], "spans": [[3, 0]], "text": "STRDBMON or ENDDBMON commands targeting a different user's job", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 1], "row": 3, "row-header": true, "row-span": [3, 4]}, {"bbox": [429.0000305175781, 247.1370086669922, 435.0030212402344, 255.46202087402344], "spans": [[3, 1]], "text": "X", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 3, "row-header": false, "row-span": [3, 4]}, {"bbox": null, "spans": [[3, 2]], "text": "", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 3, "row-header": false, "row-span": [3, 4]}, {"bbox": [480.0003356933594, 247.1370086669922, 486.0033264160156, 255.46202087402344], "spans": [[3, 3]], "text": "X", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 3, "row-header": false, "row-span": [3, 4]}, {"bbox": null, "spans": [[3, 4]], "text": "", "type": "body", "col": 4, "col-header": false, "col-span": [4, 5], "row": 3, "row-header": false, "row-span": [3, 4]}, {"bbox": null, "spans": [[3, 5]], "text": "", "type": "body", "col": 5, "col-header": false, "col-span": [5, 6], "row": 3, "row-header": false, "row-span": [3, 4]}], [{"bbox": [70.800048828125, 228.1173095703125, 381.0218505859375, 236.44232177734375], "spans": [[4, 0]], "text": "STRDBMON or ENDDBMON commands targeting a job that matches the current user", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 1], "row": 4, "row-header": true, "row-span": [4, 5]}, {"bbox": [429.0000305175781, 228.1173095703125, 435.0030212402344, 236.44232177734375], "spans": [[4, 1]], "text": "X", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 4, "row-header": false, "row-span": [4, 5]}, {"bbox": null, "spans": [[4, 2]], "text": "", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 4, "row-header": false, "row-span": [4, 5]}, {"bbox": [480.0003356933594, 228.1173095703125, 486.0033264160156, 236.44232177734375], "spans": [[4, 3]], "text": "X", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 4, "row-header": false, "row-span": [4, 5]}, {"bbox": [505.2606201171875, 228.1173095703125, 511.26361083984375, 236.44232177734375], "spans": [[4, 4]], "text": "X", "type": "body", "col": 4, "col-header": false, "col-span": [4, 5], "row": 4, "row-header": false, "row-span": [4, 5]}, {"bbox": [530.7603149414062, 228.1173095703125, 536.7633056640625, 236.44232177734375], "spans": [[4, 5]], "text": "X", "type": "body", "col": 5, "col-header": false, "col-span": [5, 6], "row": 4, "row-header": false, "row-span": [4, 5]}], [{"bbox": [70.800048828125, 209.15701293945312, 359.5173645019531, 217.48202514648438], "spans": [[5, 0]], "text": "QUSRJOBI() API format 900 or System i Navigator's SQL Details for Job", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 1], "row": 5, "row-header": true, "row-span": [5, 6]}, {"bbox": [429.00006103515625, 209.15701293945312, 435.0030517578125, 217.48202514648438], "spans": [[5, 1]], "text": "X", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 5, "row-header": false, "row-span": [5, 6]}, {"bbox": null, "spans": [[5, 2]], "text": "", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 5, "row-header": false, "row-span": [5, 6]}, {"bbox": [480.0003662109375, 209.15701293945312, 486.00335693359375, 217.48202514648438], "spans": [[5, 3]], "text": "X", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 5, "row-header": false, "row-span": [5, 6]}, {"bbox": [505.26068115234375, 209.15701293945312, 511.263671875, 217.48202514648438], "spans": [[5, 4]], "text": "X", "type": "body", "col": 4, "col-header": false, "col-span": [4, 5], "row": 5, "row-header": false, "row-span": [5, 6]}, {"bbox": null, "spans": [[5, 5]], "text": "", "type": "body", "col": 5, "col-header": false, "col-span": [5, 6], "row": 5, "row-header": false, "row-span": [5, 6]}], [{"bbox": [70.80007934570312, 190.13731384277344, 220.7517852783203, 198.4623260498047], "spans": [[6, 0]], "text": "Visual Explain within Run SQL scripts", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 1], "row": 6, "row-header": true, "row-span": [6, 7]}, {"bbox": [429.00006103515625, 190.13731384277344, 435.0030517578125, 198.4623260498047], "spans": [[6, 1]], "text": "X", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 6, "row-header": false, "row-span": [6, 7]}, {"bbox": null, "spans": [[6, 2]], "text": "", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 6, "row-header": false, "row-span": [6, 7]}, {"bbox": [480.0003662109375, 190.13731384277344, 486.00335693359375, 198.4623260498047], "spans": [[6, 3]], "text": "X", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 6, "row-header": false, "row-span": [6, 7]}, {"bbox": [505.26068115234375, 190.13731384277344, 511.263671875, 198.4623260498047], "spans": [[6, 4]], "text": "X", "type": "body", "col": 4, "col-header": false, "col-span": [4, 5], "row": 6, "row-header": false, "row-span": [6, 7]}, {"bbox": [530.7603759765625, 190.13731384277344, 536.7633666992188, 198.4623260498047], "spans": [[6, 5]], "text": "X", "type": "body", "col": 5, "col-header": false, "col-span": [5, 6], "row": 6, "row-header": false, "row-span": [6, 7]}], [{"bbox": [70.80007934570312, 171.11761474609375, 236.65480041503906, 179.442626953125], "spans": [[7, 0]], "text": "Visual Explain outside of Run SQL scripts", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 1], "row": 7, "row-header": true, "row-span": [7, 8]}, {"bbox": [429.00006103515625, 171.11761474609375, 435.0030517578125, 179.442626953125], "spans": [[7, 1]], "text": "X", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 7, "row-header": false, "row-span": [7, 8]}, {"bbox": null, "spans": [[7, 2]], "text": "", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 7, "row-header": false, "row-span": [7, 8]}, {"bbox": [480.0003662109375, 171.11761474609375, 486.00335693359375, 179.442626953125], "spans": [[7, 3]], "text": "X", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 7, "row-header": false, "row-span": [7, 8]}, {"bbox": null, "spans": [[7, 4]], "text": "", "type": "body", "col": 4, "col-header": false, "col-span": [4, 5], "row": 7, "row-header": false, "row-span": [7, 8]}, {"bbox": null, "spans": [[7, 5]], "text": "", "type": "body", "col": 5, "col-header": false, "col-span": [5, 6], "row": 7, "row-header": false, "row-span": [7, 8]}], [{"bbox": [70.80007934570312, 152.15731811523438, 213.1296844482422, 160.48233032226562], "spans": [[8, 0]], "text": "ANALYZE PLAN CACHE procedure", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 1], "row": 8, "row-header": true, "row-span": [8, 9]}, {"bbox": [429.00006103515625, 152.15731811523438, 435.0030517578125, 160.48233032226562], "spans": [[8, 1]], "text": "X", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 8, "row-header": false, "row-span": [8, 9]}, {"bbox": null, "spans": [[8, 2]], "text": "", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 8, "row-header": false, "row-span": [8, 9]}, {"bbox": [480.0003662109375, 152.15731811523438, 486.00335693359375, 160.48233032226562], "spans": [[8, 3]], "text": "X", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 8, "row-header": false, "row-span": [8, 9]}, {"bbox": null, "spans": [[8, 4]], "text": "", "type": "body", "col": 4, "col-header": false, "col-span": [4, 5], "row": 8, "row-header": false, "row-span": [8, 9]}, {"bbox": null, "spans": [[8, 5]], "text": "", "type": "body", "col": 5, "col-header": false, "col-span": [5, 6], "row": 8, "row-header": false, "row-span": [8, 9]}], [{"bbox": [70.80007934570312, 133.1376190185547, 199.87808227539062, 141.46263122558594], "spans": [[9, 0]], "text": "DUMP PLAN CACHE procedure", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 1], "row": 9, "row-header": true, "row-span": [9, 10]}, {"bbox": [429.00006103515625, 133.1376190185547, 435.0030517578125, 141.46263122558594], "spans": [[9, 1]], "text": "X", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 9, "row-header": false, "row-span": [9, 10]}, {"bbox": null, "spans": [[9, 2]], "text": "", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 9, "row-header": false, "row-span": [9, 10]}, {"bbox": [480.0003662109375, 133.1376190185547, 486.00335693359375, 141.46263122558594], "spans": [[9, 3]], "text": "X", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 9, "row-header": false, "row-span": [9, 10]}, {"bbox": null, "spans": [[9, 4]], "text": "", "type": "body", "col": 4, "col-header": false, "col-span": [4, 5], "row": 9, "row-header": false, "row-span": [9, 10]}, {"bbox": null, "spans": [[9, 5]], "text": "", "type": "body", "col": 5, "col-header": false, "col-span": [5, 6], "row": 9, "row-header": false, "row-span": [9, 10]}], [{"bbox": [70.80007934570312, 114.11792755126953, 208.36776733398438, 122.44291687011719], "spans": [[10, 0]], "text": "MODIFY PLAN CACHE procedure", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 1], "row": 10, "row-header": true, "row-span": [10, 11]}, {"bbox": [429.00006103515625, 114.11792755126953, 435.0030517578125, 122.44291687011719], "spans": [[10, 1]], "text": "X", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 10, "row-header": false, "row-span": [10, 11]}, {"bbox": null, "spans": [[10, 2]], "text": "", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 10, "row-header": false, "row-span": [10, 11]}, {"bbox": [480.0003662109375, 114.11792755126953, 486.00335693359375, 122.44291687011719], "spans": [[10, 3]], "text": "X", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 10, "row-header": false, "row-span": [10, 11]}, {"bbox": null, "spans": [[10, 4]], "text": "", "type": "body", "col": 4, "col-header": false, "col-span": [4, 5], "row": 10, "row-header": false, "row-span": [10, 11]}, {"bbox": null, "spans": [[10, 5]], "text": "", "type": "body", "col": 5, "col-header": false, "col-span": [5, 6], "row": 10, "row-header": false, "row-span": [10, 11]}], [{"bbox": [70.80007934570312, 95.09822845458984, 411.20263671875, 103.42323303222656], "spans": [[11, 0]], "text": "MODIFY PLAN CACHE PROPERTIES procedure (currently does not check authority)", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 1], "row": 11, "row-header": true, "row-span": [11, 12]}, {"bbox": [429.00006103515625, 95.09822845458984, 435.0030517578125, 103.42323303222656], "spans": [[11, 1]], "text": "X", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 11, "row-header": false, "row-span": [11, 12]}, {"bbox": null, "spans": [[11, 2]], "text": "", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 11, "row-header": false, "row-span": [11, 12]}, {"bbox": [480.0003662109375, 95.09822845458984, 486.00335693359375, 103.42323303222656], "spans": [[11, 3]], "text": "X", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 11, "row-header": false, "row-span": [11, 12]}, {"bbox": null, "spans": [[11, 4]], "text": "", "type": "body", "col": 4, "col-header": false, "col-span": [4, 5], "row": 11, "row-header": false, "row-span": [11, 12]}, {"bbox": null, "spans": [[11, 5]], "text": "", "type": "body", "col": 5, "col-header": false, "col-span": [5, 6], "row": 11, "row-header": false, "row-span": [11, 12]}], [{"bbox": [70.80007934570312, 76.13793182373047, 377.1258544921875, 84.46292877197266], "spans": [[12, 0]], "text": "CHANGE PLAN CACHE SIZE procedure (currently does not check authority)", "type": "row_header", "col": 0, "col-header": false, "col-span": [0, 1], "row": 12, "row-header": true, "row-span": [12, 13]}, {"bbox": [429.00006103515625, 76.13793182373047, 435.0030517578125, 84.46292877197266], "spans": [[12, 1]], "text": "X", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 12, "row-header": false, "row-span": [12, 13]}, {"bbox": null, "spans": [[12, 2]], "text": "", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 12, "row-header": false, "row-span": [12, 13]}, {"bbox": [480.0003662109375, 76.13793182373047, 486.00335693359375, 84.46292877197266], "spans": [[12, 3]], "text": "X", "type": "body", "col": 3, "col-header": false, "col-span": [3, 4], "row": 12, "row-header": false, "row-span": [12, 13]}, {"bbox": null, "spans": [[12, 4]], "text": "", "type": "body", "col": 4, "col-header": false, "col-span": [4, 5], "row": 12, "row-header": false, "row-span": [12, 13]}, {"bbox": null, "spans": [[12, 5]], "text": "", "type": "body", "col": 5, "col-header": false, "col-span": [5, 6], "row": 12, "row-header": false, "row-span": [12, 13]}]], "model": null, "bounding-box": null}, {"prov": [{"bbox": [134.54624938964844, 587.7283935546875, 542.0460815429688, 688.5811157226562], "page": 11, "span": [0, 0], "__ref_s3_data": null}], "text": "Table 3-1 Special registers and their corresponding values", "type": "table", "#-cols": 2, "#-rows": 4, "data": [[{"bbox": [142.8000030517578, 673.1370239257812, 209.67091369628906, 681.4619750976562], "spans": [[0, 0]], "text": "Special register", "type": "col_header", "col": 0, "col-header": true, "col-span": [0, 1], "row": 0, "row-header": false, "row-span": [0, 1]}, {"bbox": [230.18911743164062, 673.1370239257812, 319.9352722167969, 681.4619750976562], "spans": [[0, 1]], "text": "Corresponding value", "type": "col_header", "col": 1, "col-header": true, "col-span": [1, 2], "row": 0, "row-header": false, "row-span": [0, 1]}], [{"bbox": [142.80001831054688, 643.1364135742188, 212.7012176513672, 662.5016479492188], "spans": [[1, 0]], "text": "USER or SESSION_USER", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 1, "row-header": false, "row-span": [1, 2]}, {"bbox": [230.2197265625, 654.1766967773438, 467.9906921386719, 662.5016479492188], "spans": [[1, 1]], "text": "The effective user of the thread excluding adopted authority.", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 1, "row-header": false, "row-span": [1, 2]}], [{"bbox": [142.80003356933594, 624.11669921875, 216.63963317871094, 632.441650390625], "spans": [[2, 0]], "text": "CURRENT_USER", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 2, "row-header": false, "row-span": [2, 3]}, {"bbox": [230.19813537597656, 613.13671875, 535.6508178710938, 632.441650390625], "spans": [[2, 1]], "text": "The effective user of the thread including adopted authority. When no adopted authority is present, this has the same value as USER.", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 2, "row-header": false, "row-span": [2, 3]}], [{"bbox": [142.8009033203125, 594.1170043945312, 209.73570251464844, 602.4419555664062], "spans": [[3, 0]], "text": "SYSTEM_USER", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 3, "row-header": false, "row-span": [3, 4]}, {"bbox": [230.24490356445312, 594.1170043945312, 425.64569091796875, 602.4419555664062], "spans": [[3, 1]], "text": "The authorization ID that initiated the connection.", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 3, "row-header": false, "row-span": [3, 4]}]], "model": null, "bounding-box": null}, {"prov": [{"bbox": [63.556331634521484, 495.7753601074219, 548.5687255859375, 687.76611328125], "page": 12, "span": [0, 0], "__ref_s3_data": null}], "text": "Table 3-2 Built-in global variables", "type": "table", "#-cols": 3, "#-rows": 10, "data": [[{"bbox": [70.80000305175781, 673.1370239257812, 134.99070739746094, 681.4619750976562], "spans": [[0, 0]], "text": "Global variable", "type": "col_header", "col": 0, "col-header": true, "col-span": [0, 1], "row": 0, "row-header": false, "row-span": [0, 1]}, {"bbox": [202.889404296875, 673.1370239257812, 223.34640502929688, 681.4619750976562], "spans": [[0, 1]], "text": "Type", "type": "col_header", "col": 1, "col-header": true, "col-span": [1, 2], "row": 0, "row-header": false, "row-span": [0, 1]}, {"bbox": [281.8247985839844, 673.1370239257812, 331.3428039550781, 681.4619750976562], "spans": [[0, 2]], "text": "Description", "type": "col_header", "col": 2, "col-header": true, "col-span": [2, 3], "row": 0, "row-header": false, "row-span": [0, 1]}], [{"bbox": [70.80000305175781, 654.1766967773438, 132.7209014892578, 662.5016479492188], "spans": [[1, 0]], "text": "CLIENT_HOST", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 1, "row-header": false, "row-span": [1, 2]}, {"bbox": [202.89028930664062, 654.1766967773438, 267.0765075683594, 662.5016479492188], "spans": [[1, 1]], "text": "VARCHAR(255)", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 1, "row-header": false, "row-span": [1, 2]}, {"bbox": [281.8473205566406, 654.1766967773438, 510.17547607421875, 662.5016479492188], "spans": [[1, 2]], "text": "Host name of the current client as returned by the system", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 1, "row-header": false, "row-span": [1, 2]}], [{"bbox": [70.80001831054688, 635.156982421875, 140.66522216796875, 643.48193359375], "spans": [[2, 0]], "text": "CLIENT_IPADDR", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 2, "row-header": false, "row-span": [2, 3]}, {"bbox": [202.872314453125, 635.156982421875, 267.077392578125, 643.48193359375], "spans": [[2, 1]], "text": "VARCHAR(128)", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 2, "row-header": false, "row-span": [2, 3]}, {"bbox": [281.8454895019531, 635.156982421875, 509.6058349609375, 643.48193359375], "spans": [[2, 2]], "text": "IP address of the current client as returned by the system", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 2, "row-header": false, "row-span": [2, 3]}], [{"bbox": [70.80001831054688, 616.1372680664062, 134.98263549804688, 624.4622192382812], "spans": [[3, 0]], "text": "CLIENT_PORT", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 3, "row-header": false, "row-span": [3, 4]}, {"bbox": [202.90293884277344, 616.1372680664062, 242.80084228515625, 624.4622192382812], "spans": [[3, 1]], "text": "INTEGER", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 3, "row-header": false, "row-span": [3, 4]}, {"bbox": [281.7978515625, 616.1372680664062, 527.5922241210938, 624.4622192382812], "spans": [[3, 2]], "text": "Port used by the current client to communicate with the server", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 3, "row-header": false, "row-span": [3, 4]}], [{"bbox": [70.80001831054688, 597.1175537109375, 143.50924682617188, 605.4425048828125], "spans": [[4, 0]], "text": "PACKAGE_NAME", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 4, "row-header": false, "row-span": [4, 5]}, {"bbox": [202.80575561523438, 597.1175537109375, 267.0693664550781, 605.4425048828125], "spans": [[4, 1]], "text": "VARCHAR(128)", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 4, "row-header": false, "row-span": [4, 5]}, {"bbox": [281.85186767578125, 597.1175537109375, 436.5726013183594, 605.4425048828125], "spans": [[4, 2]], "text": "Name of the currently running package", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 4, "row-header": false, "row-span": [4, 5]}], [{"bbox": [70.80001831054688, 578.1572265625, 156.01654052734375, 586.482177734375], "spans": [[5, 0]], "text": "PACKAGE_SCHEMA", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 5, "row-header": false, "row-span": [5, 6]}, {"bbox": [202.83544921875, 578.1572265625, 267.0864562988281, 586.482177734375], "spans": [[5, 1]], "text": "VARCHAR(128)", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 5, "row-header": false, "row-span": [5, 6]}, {"bbox": [281.8707580566406, 578.1572265625, 470.44677734375, 586.482177734375], "spans": [[5, 2]], "text": "Schema name of the currently running package", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 5, "row-header": false, "row-span": [5, 6]}], [{"bbox": [70.80001831054688, 559.1375122070312, 157.89932250976562, 567.4624633789062], "spans": [[6, 0]], "text": "PACKAGE_VERSION", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 6, "row-header": false, "row-span": [6, 7]}, {"bbox": [202.72471618652344, 559.1375122070312, 261.9825439453125, 567.4624633789062], "spans": [[6, 1]], "text": "VARCHAR(64)", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 6, "row-header": false, "row-span": [6, 7]}, {"bbox": [281.7492370605469, 559.1375122070312, 478.84381103515625, 567.4624633789062], "spans": [[6, 2]], "text": "Version identifier of the currently running package", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 6, "row-header": false, "row-span": [6, 7]}], [{"bbox": [70.80001831054688, 540.1177978515625, 154.419921875, 548.4427490234375], "spans": [[7, 0]], "text": "ROUTINE_SCHEMA", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 7, "row-header": false, "row-span": [7, 8]}, {"bbox": [202.79312133789062, 540.1177978515625, 267.0927429199219, 548.4427490234375], "spans": [[7, 1]], "text": "VARCHAR(128)", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 7, "row-header": false, "row-span": [7, 8]}, {"bbox": [281.87164306640625, 540.1177978515625, 464.2602233886719, 548.4427490234375], "spans": [[7, 2]], "text": "Schema name of the currently running routine", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 7, "row-header": false, "row-span": [7, 8]}], [{"bbox": [70.80001831054688, 521.157470703125, 188.43991088867188, 529.482421875], "spans": [[8, 0]], "text": "ROUTINE_SPECIFIC_NAME", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 8, "row-header": false, "row-span": [8, 9]}, {"bbox": [202.8444061279297, 521.157470703125, 267.03692626953125, 529.482421875], "spans": [[8, 1]], "text": "VARCHAR(128)", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 8, "row-header": false, "row-span": [8, 9]}, {"bbox": [281.80682373046875, 521.157470703125, 430.40045166015625, 529.482421875], "spans": [[8, 2]], "text": "Name of the currently running routine", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 8, "row-header": false, "row-span": [8, 9]}], [{"bbox": [70.80003356933594, 502.1377258300781, 139.4313507080078, 510.4627380371094], "spans": [[9, 0]], "text": "ROUTINE_TYPE", "type": "body", "col": 0, "col-header": false, "col-span": [0, 1], "row": 9, "row-header": false, "row-span": [9, 10]}, {"bbox": [202.74635314941406, 502.1377258300781, 239.2899627685547, 510.4627380371094], "spans": [[9, 1]], "text": "CHAR(1)", "type": "body", "col": 1, "col-header": false, "col-span": [1, 2], "row": 9, "row-header": false, "row-span": [9, 10]}, {"bbox": [281.7906494140625, 502.1377258300781, 425.09130859375, 510.4627380371094], "spans": [[9, 2]], "text": "Type of the currently running routine", "type": "body", "col": 2, "col-header": false, "col-span": [2, 3], "row": 9, "row-header": false, "row-span": [9, 10]}]], "model": null, "bounding-box": null}], "bitmaps": null, "equations": [], "footnotes": [], "page-dimensions": [{"height": 792.0, "page": 1, "width": 612.0}, {"height": 792.0, "page": 2, "width": 612.0}, {"height": 792.0, "page": 3, "width": 612.0}, {"height": 792.0, "page": 4, "width": 612.0}, {"height": 792.0, "page": 5, "width": 612.0}, {"height": 792.0, "page": 6, "width": 612.0}, {"height": 792.0, "page": 7, "width": 612.0}, {"height": 792.0, "page": 8, "width": 612.0}, {"height": 792.0, "page": 9, "width": 612.0}, {"height": 792.0, "page": 10, "width": 612.0}, {"height": 792.0, "page": 11, "width": 612.0}, {"height": 792.0, "page": 12, "width": 612.0}, {"height": 792.0, "page": 13, "width": 612.0}, {"height": 792.0, "page": 14, "width": 612.0}, {"height": 792.0, "page": 15, "width": 612.0}, {"height": 792.0, "page": 16, "width": 612.0}, {"height": 792.0, "page": 17, "width": 612.0}, {"height": 792.0, "page": 18, "width": 612.0}], "page-footers": [], "page-headers": [], "_s3_data": null, "identifiers": null} \ No newline at end of file diff --git a/tests/data/groundtruth/docling_v1/redp5110_sampled.md b/tests/data/groundtruth/docling_v1/redp5110_sampled.md new file mode 100644 index 00000000..19736443 --- /dev/null +++ b/tests/data/groundtruth/docling_v1/redp5110_sampled.md @@ -0,0 +1,421 @@ +Front cover + + + + +## Row and Column Access Control Support in IBM DB2 for i + +Implement roles and separation of duties + +Leverage row permissions on the database + +Protect columns by defining column masks + +Jim Bainbridge Hernando Bedoya Rob Bestgen Mike Cain Dan Cruikshank Jim Denton Doug Mack Tom McKinley Kent Milligan + +Redpaper + +## Contents + + + +| Notices | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii | +|------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------| +| Trademarks | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii | +| DB2 for i Center of Excellence | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix | +| Preface | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi | +| Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi | | +| Now you can become a published author, too! | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii | +| Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | xiii | +| Stay connected to IBM Redbooks | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv | +| Chapter 1. Securing and protecting IBM DB2 data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 1 | +| 1.1 Security fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 | | +| 1.2 Current state of IBM i security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 2 | +| 1.3 DB2 for i security controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | | +| 1.3.1 Existing row and column control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 4 | +| 1.3.2 New controls: Row and Column Access Control. . . . . . . . . . . . . . . . . . . . . . . . . . . | 5 | +| Chapter 2. Roles and separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 7 | +| 2.1 Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 8 | +| 2.1.1 DDM and DRDA application server access: QIBM_DB_DDMDRDA . . . . . . . . . . . | 8 | +| 2.1.2 Toolbox application server access: QIBM_DB_ZDA. . . . . . . . . . . . . . . . . . . . . . . . | 8 | +| 2.1.3 Database Administrator function: QIBM_DB_SQLADM . . . . . . . . . . . . . . . . . . . . . | 9 | +| 2.1.4 Database Information function: QIBM_DB_SYSMON | . . . . . . . . . . . . . . . . . . . . . . 9 | +| 2.1.5 Security Administrator function: QIBM_DB_SECADM . . . . . . . . . . . . . . . . . . . . . . | 9 | +| 2.1.6 Change Function Usage CL command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 10 | +| 2.1.7 Verifying function usage IDs for RCAC with the FUNCTION_USAGE view . . . . . | 10 | +| 2.2 Separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 | | +| Chapter 3. Row and Column Access Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 13 | +| 3.1 Explanation of RCAC and the concept of access control . . . . . . . . . . . . . . . . . . . . . . . | 14 | +| 3.1.1 Row permission and column mask definitions | . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 | +| 3.1.2 Enabling and activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 16 | +| 3.2 Special registers and built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 18 | +| 3.2.1 Special registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 18 | +| 3.2.2 Built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 19 | +| 3.3 VERIFY_GROUP_FOR_USER function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 20 | +| 3.4 Establishing and controlling accessibility by using the RCAC rule text . . . . . . . . . . . . . | 21 | +| | . . . . . . . . . . . . . . . . . . . . . . . . 22 | +| 3.5 SELECT, INSERT, and UPDATE behavior with RCAC | | +| 3.6.1 Assigning the QIBM_DB_SECADM function ID to the consultants. . . . . . . . . . . . | 23 | +| 3.6.2 Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . . | 23 | +| 3.6.3 Demonstrating data access without RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 24 | +| 3.6.4 Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 25 | +| 3.6.5 Defining and creating column masks | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 | +| 3.6.6 Activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 28 | +| 3.6.7 Demonstrating data access with RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 29 | +| 3.6.8 Demonstrating data access with a view and RCAC . . . . . . . . . . . . . . . . . . . . . . . | 32 | + +DB2 for i Center of Excellence + +Solution Brief IBM Systems Lab Services and Training + + + + +## Highlights + +- GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH + +- GLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH + +- GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH + +- GLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH + + + + +Power Services + +## DB2 for i Center of Excellence + +Expert help to achieve your business requirements + +## We build confident, satisfied clients + +No one else has the vast consulting experiences, skills sharing and renown service offerings to do what we can do for you. + +Because no one else is IBM. + +With combined experiences and direct access to development groups, we're the experts in IBM DB2® for i. The DB2 for i Center of Excellence (CoE) can help you achieve-perhaps reexamine and exceed-your business requirements and gain more confidence and satisfaction in IBM product data management products and solutions. + +## Who we are, some of what we do + +Global CoE engagements cover topics including: + +- r Database performance and scalability + +- r Advanced SQL knowledge and skills transfer + +- r Business intelligence and analytics + +- r DB2 Web Query + +- r Query/400 modernization for better reporting and analysis capabilities + +- r Database modernization and re-engineering + +- r Data-centric architecture and design + +- r Extremely large database and overcoming limits to growth + +- r ISV education and enablement + +## Preface + +This IBMfi Redpaper™ publication provides information about the IBM i 7.2 feature of IBM DB2fi for i Row and Column Access Control (RCAC). It offers a broad description of the function and advantages of controlling access to data in a comprehensive and transparent way. This publication helps you understand the capabilities of RCAC and provides examples of defining, creating, and implementing the row permissions and column masks in a relational database environment. + +This paper is intended for database engineers, data-centric application developers, and security officers who want to design and implement RCAC as a part of their data control and governance policy. A solid background in IBM i object level security, DB2 for i relational database concepts, and SQL is assumed. + +This paper was produced by the IBM DB2 for i Center of Excellence team in partnership with the International Technical Support Organization (ITSO), Rochester, Minnesota US. + + + + + + + +Jim Bainbridge is a senior DB2 consultant on the DB2 for i Center of Excellence team in the IBM Lab Services and Training organization. His primary role is training and implementation services for IBM DB2 Web Query for i and business analytics. Jim began his career with IBM 30 years ago in the IBM Rochester Development Lab, where he developed cooperative processing products that paired IBM PCs with IBM S/36 and AS/.400 systems. In the years since, Jim has held numerous technical roles, including independent software vendors technical support on a broad range of IBM technologies and products, and supporting customers in the IBM Executive Briefing Center and IBM Project Office. + +Hernando Bedoya is a Senior IT Specialist at STG Lab Services and Training in Rochester, Minnesota. He writes extensively and teaches IBM classes worldwide in all areas of DB2 for i. Before joining STG Lab Services, he worked in the ITSO for nine years writing multiple IBM Redbooksfi publications. He also worked for IBM Colombia as an IBM AS/400fi IT Specialist doing presales support for the Andean countries. He has 28 years of experience in the computing field and has taught database classes in Colombian universities. He holds a Master's degree in Computer Science from EAFIT, Colombia. His areas of expertise are database technology, performance, and data warehousing. Hernando can be contacted at hbedoya@us.ibm.com . + +## Authors + + + + +Chapter 1. + +1 + +## Securing and protecting IBM DB2 data + +Recent news headlines are filled with reports of data breaches and cyber-attacks impacting global businesses of all sizes. The Identity Theft Resource Center$^{1}$ reports that almost 5000 data breaches have occurred since 2005, exposing over 600 million records of data. The financial cost of these data breaches is skyrocketing. Studies from the Ponemon Institute$^{2}$ revealed that the average cost of a data breach increased in 2013 by 15% globally and resulted in a brand equity loss of $9.4 million per attack. The average cost that is incurred for each lost record containing sensitive information increased more than 9% to $145 per record. + +Businesses must make a serious effort to secure their data and recognize that securing information assets is a cost of doing business. In many parts of the world and in many industries, securing the data is required by law and subject to audits. Data security is no longer an option; it is a requirement. + +This chapter describes how you can secure and protect data in DB2 for i. The following topics are covered in this chapter: + +- GLYPH Security fundamentals + +- GLYPH Current state of IBM i security + +- GLYPH DB2 for i security controls + +## 1.1 Security fundamentals + +Before reviewing database security techniques, there are two fundamental steps in securing information assets that must be described: + +- GLYPH First, and most important, is the definition of a company's security policy . Without a security policy, there is no definition of what are acceptable practices for using, accessing, and storing information by who, what, when, where, and how. A security policy should minimally address three things: confidentiality, integrity, and availability. + +- The monitoring and assessment of adherence to the security policy determines whether your security strategy is working. Often, IBM security consultants are asked to perform security assessments for companies without regard to the security policy. Although these assessments can be useful for observing how the system is defined and how data is being accessed, they cannot determine the level of security without a security policy. Without a security policy, it really is not an assessment as much as it is a baseline for monitoring the changes in the security settings that are captured. + +A security policy is what defines whether the system and its settings are secure (or not). + +- GLYPH The second fundamental in securing data assets is the use of resource security . If implemented properly, resource security prevents data breaches from both internal and external intrusions. Resource security controls are closely tied to the part of the security policy that defines who should have access to what information resources. A hacker might be good enough to get through your company firewalls and sift his way through to your system, but if they do not have explicit access to your database, the hacker cannot compromise your information assets. + +With your eyes now open to the importance of securing information assets, the rest of this chapter reviews the methods that are available for securing database resources on IBM i. + +## 1.2 Current state of IBM i security + +Because of the inherently secure nature of IBM i, many clients rely on the default system settings to protect their business data that is stored in DB2 for i. In most cases, this means no data protection because the default setting for the Create default public authority (QCRTAUT) system value is *CHANGE. + +Even more disturbing is that many IBM i clients remain in this state, despite the news headlines and the significant costs that are involved with databases being compromised. This default security configuration makes it quite challenging to implement basic security policies. A tighter implementation is required if you really want to protect one of your company's most valuable assets, which is the data. + +Traditionally, IBM i applications have employed menu-based security to counteract this default configuration that gives all users access to the data. The theory is that data is protected by the menu options controlling what database operations that the user can perform. This approach is ineffective, even if the user profile is restricted from running interactive commands. The reason is that in today's connected world there are a multitude of interfaces into the system, from web browsers to PC clients, that bypass application menus. If there are no object-level controls, users of these newer interfaces have an open door to your data. + +Many businesses are trying to limit data access to a need-to-know basis. This security goal means that users should be given access only to the minimum set of data that is required to perform their job. Often, users with object-level access are given access to row and column values that are beyond what their business task requires because that object-level security provides an all-or-nothing solution. For example, object-level controls allow a manager to access data about all employees. Most security policies limit a manager to accessing data only for the employees that they manage. + +## 1.3.1 Existing row and column control + +Some IBM i clients have tried augmenting the all-or-nothing object-level security with SQL views (or logical files) and application logic, as shown in Figure 1-2. However, application-based logic is easy to bypass with all of the different data access interfaces that are provided by the IBM i operating system, such as Open Database Connectivity (ODBC) and System i Navigator. + +Using SQL views to limit access to a subset of the data in a table also has its own set of challenges. First, there is the complexity of managing all of the SQL view objects that are used for securing data access. Second, scaling a view-based security solution can be difficult as the amount of data grows and the number of users increases. + +Even if you are willing to live with these performance and management issues, a user with *ALLOBJ access still can directly access all of the data in the underlying DB2 table and easily bypass the security controls that are built into an SQL view. + +Figure 1-2 Existing row and column controls + + +## 2.1.6 Change Function Usage CL command + +The following CL commands can be used to work with, display, or change function usage IDs: + +- GLYPH Work Function Usage ( WRKFCNUSG ) + +- GLYPH Change Function Usage ( CHGFCNUSG ) + +- GLYPH Display Function Usage ( DSPFCNUSG ) + +For example, the following CHGFCNUSG command shows granting authorization to user HBEDOYA to administer and manage RCAC rules: + +CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED) + +## 2.1.7 Verifying function usage IDs for RCAC with the FUNCTION_USAGE view + +The FUNCTION_USAGE view contains function usage configuration details. Table 2-1 describes the columns in the FUNCTION_USAGE view. + +Table 2-1 FUNCTION_USAGE view + +| Column name | Data type | Description | +|---------------|-------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| FUNCTION_ID | VARCHAR(30) | ID of the function. | +| USER_NAME | VARCHAR(10) | Name of the user profile that has a usage setting for this function. | +| USAGE | VARCHAR(7) | Usage setting: GLYPH ALLOWED: The user profile is allowed to use the function. GLYPH DENIED: The user profile is not allowed to use the function. | +| USER_TYPE | VARCHAR(5) | Type of user profile: GLYPH USER: The user profile is a user. GLYPH GROUP: The user profile is a group. | + +To discover who has authorization to define and manage RCAC, you can use the query that is shown in Example 2-1. + +Example 2-1 Query to determine who has authority to define and manage RCAC + +SELECT function_id, user_name, usage, user_type FROM function_usage WHERE function_id='QIBM_DB_SECADM' ORDER BY user_name; + +## 2.2 Separation of duties + +Separation of duties helps businesses comply with industry regulations or organizational requirements and simplifies the management of authorities. Separation of duties is commonly used to prevent fraudulent activities or errors by a single person. It provides the ability for administrative functions to be divided across individuals without overlapping responsibilities, so that one user does not possess unlimited authority, such as with the *ALLOBJ authority. + +For example, assume that a business has assigned the duty to manage security on IBM i to Theresa. Before release IBM i 7.2, to grant privileges, Theresa had to have the same privileges Theresa was granting to others. Therefore, to grant *USE privileges to the PAYROLL table, Theresa had to have *OBJMGT and *USE authority (or a higher level of authority, such as *ALLOBJ). This requirement allowed Theresa to access the data in the PAYROLL table even though Theresa's job description was only to manage its security. + +In IBM i 7.2, the QIBM_DB_SECADM function usage grants authorities, revokes authorities, changes ownership, or changes the primary group without giving access to the object or, in the case of a database table, to the data that is in the table or allowing other operations on the table. + +QIBM_DB_SECADM function usage can be granted only by a user with *SECADM special authority and can be given to a user or a group. + +QIBM_DB_SECADM also is responsible for administering RCAC, which restricts which rows a user is allowed to access in a table and whether a user is allowed to see information in certain columns of a table. + +A preferred practice is that the RCAC administrator has the QIBM_DB_SECADM function usage ID, but absolutely no other data privileges. The result is that the RCAC administrator can deploy and maintain the RCAC constructs, but cannot grant themselves unauthorized access to data itself. + +Table 2-2 shows a comparison of the different function usage IDs and *JOBCTL authority to the different CL commands and DB2 for i tools. + +Table 2-2 Comparison of the different function usage IDs and *JOBCTL authority + +| User action | *JOBCTL | QIBM_DB_SECADM | QIBM_DB_SQLADM | QIBM_DB_SYSMON | No Authority | +|--------------------------------------------------------------------------------|-----------|------------------|------------------|------------------|----------------| +| SET CURRENT DEGREE (SQL statement) | X | | X | | | +| CHGQRYA command targeting a different user's job | X | | X | | | +| STRDBMON or ENDDBMON commands targeting a different user's job | X | | X | | | +| STRDBMON or ENDDBMON commands targeting a job that matches the current user | X | | X | X | X | +| QUSRJOBI() API format 900 or System i Navigator's SQL Details for Job | X | | X | X | | +| Visual Explain within Run SQL scripts | X | | X | X | X | +| Visual Explain outside of Run SQL scripts | X | | X | | | +| ANALYZE PLAN CACHE procedure | X | | X | | | +| DUMP PLAN CACHE procedure | X | | X | | | +| MODIFY PLAN CACHE procedure | X | | X | | | +| MODIFY PLAN CACHE PROPERTIES procedure (currently does not check authority) | X | | X | | | +| CHANGE PLAN CACHE SIZE procedure (currently does not check authority) | X | | X | | | + +The SQL CREATE PERMISSION statement that is shown in Figure 3-1 is used to define and initially enable or disable the row access rules. + +Figure 3-1 CREATE PERMISSION SQL statement + +The SQL CREATE PERMISSION statement that is shown in Figure 3-1 is used to define and initially enable or disable the row access rules.Figure 3-1 CREATE PERMISSION SQL statement + + +## Column mask + +A column mask is a database object that manifests a column value access control rule for a specific column in a specific table. It uses a CASE expression that describes what you see when you access the column. For example, a teller can see only the last four digits of a tax identification number. + +Table 3-1 summarizes these special registers and their values. + +Table 3-1 Special registers and their corresponding values + +| Special register | Corresponding value | +|----------------------|---------------------------------------------------------------------------------------------------------------------------------------| +| USER or SESSION_USER | The effective user of the thread excluding adopted authority. | +| CURRENT_USER | The effective user of the thread including adopted authority. When no adopted authority is present, this has the same value as USER. | +| SYSTEM_USER | The authorization ID that initiated the connection. | + +Figure 3-5 shows the difference in the special register values when an adopted authority is used: + +- GLYPH A user connects to the server using the user profile ALICE. + +- GLYPH USER and CURRENT USER initially have the same value of ALICE. + +- GLYPH ALICE calls an SQL procedure that is named proc1, which is owned by user profile JOE and was created to adopt JOE's authority when it is called. + +- GLYPH While the procedure is running, the special register USER still contains the value of ALICE because it excludes any adopted authority. The special register CURRENT USER contains the value of JOE because it includes any adopted authority. + +- GLYPH When proc1 ends, the session reverts to its original state with both USER and CURRENT USER having the value of ALICE. + +Figure 3-5 Special registers and adopted authority + + +## 3.2.2 Built-in global variables + +Built-in global variables are provided with the database manager and are used in SQL statements to retrieve scalar values that are associated with the variables. + +IBM DB2 for i supports nine different built-in global variables that are read only and maintained by the system. These global variables can be used to identify attributes of the database connection and used as part of the RCAC logic. + +Table 3-2 lists the nine built-in global variables. + +Table 3-2 Built-in global variables + +| Global variable | Type | Description | +|-----------------------|--------------|----------------------------------------------------------------| +| CLIENT_HOST | VARCHAR(255) | Host name of the current client as returned by the system | +| CLIENT_IPADDR | VARCHAR(128) | IP address of the current client as returned by the system | +| CLIENT_PORT | INTEGER | Port used by the current client to communicate with the server | +| PACKAGE_NAME | VARCHAR(128) | Name of the currently running package | +| PACKAGE_SCHEMA | VARCHAR(128) | Schema name of the currently running package | +| PACKAGE_VERSION | VARCHAR(64) | Version identifier of the currently running package | +| ROUTINE_SCHEMA | VARCHAR(128) | Schema name of the currently running routine | +| ROUTINE_SPECIFIC_NAME | VARCHAR(128) | Name of the currently running routine | +| ROUTINE_TYPE | CHAR(1) | Type of the currently running routine | + +## 3.3 VERIFY_GROUP_FOR_USER function + +The VERIFY_GROUP_FOR_USER function was added in IBM i 7.2. Although it is primarily intended for use with RCAC permissions and masks, it can be used in other SQL statements. The first parameter must be one of these three special registers: SESSION_USER, USER, or CURRENT_USER. The second and subsequent parameters are a list of user or group profiles. Each of these values must be 1 - 10 characters in length. These values are not validated for their existence, which means that you can specify the names of user profiles that do not exist without receiving any kind of error. + +If a special register value is in the list of user profiles or it is a member of a group profile included in the list, the function returns a long integer value of 1. Otherwise, it returns a value of 0. It never returns the null value. + +Here is an example of using the VERIFY_GROUP_FOR_USER function: + +- 1. There are user profiles for MGR, JANE, JUDY, and TONY. + +- 2. The user profile JANE specifies a group profile of MGR. + +- 3. If a user is connected to the server using user profile JANE, all of the following function invocations return a value of 1: + +VERIFY_GROUP_FOR_USER (CURRENT_USER, 'MGR') VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR') VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR', 'STEVE') The following function invocation returns a value of 0: VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JUDY', 'TONY') + +RETURN CASE + +WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR', 'EMP' ) = 1 THEN EMPLOYEES . DATE_OF_BIRTH WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER = EMPLOYEES . USER_ID THEN EMPLOYEES . DATE_OF_BIRTH WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER <> EMPLOYEES . USER_ID THEN ( 9999 || '-' || MONTH ( EMPLOYEES . DATE_OF_BIRTH ) || '-' || DAY (EMPLOYEES.DATE_OF_BIRTH )) ELSE NULL END ENABLE ; + +- 2. The other column to mask in this example is the TAX_ID information. In this example, the rules to enforce include the following ones: + +- -Human Resources can see the unmasked TAX_ID of the employees. + +- -Employees can see only their own unmasked TAX_ID. + +- -Managers see a masked version of TAX_ID with the first five characters replaced with the X character (for example, XXX-XX-1234). + +- -Any other person sees the entire TAX_ID as masked, for example, XXX-XX-XXXX. + +- To implement this column mask, run the SQL statement that is shown in Example 3-9. + +Example 3-9 Creating a mask on the TAX_ID column + +CREATE MASK HR_SCHEMA.MASK_TAX_ID_ON_EMPLOYEES ON HR_SCHEMA.EMPLOYEES AS EMPLOYEES FOR COLUMN TAX_ID RETURN CASE WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1 THEN EMPLOYEES . TAX_ID WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER = EMPLOYEES . USER_ID THEN EMPLOYEES . TAX_ID WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER <> EMPLOYEES . USER_ID THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( EMPLOYEES . TAX_ID , 8 , 4 ) ) WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1 THEN EMPLOYEES . TAX_ID ELSE 'XXX-XX-XXXX' END ENABLE ; + +- 3. Figure 3-10 shows the masks that are created in the HR_SCHEMA. + +Figure 3-10 Column masks shown in System i Navigator + + +## 3.6.6 Activating RCAC + +Now that you have created the row permission and the two column masks, RCAC must be activated. The row permission and the two column masks are enabled (last clause in the scripts), but now you must activate RCAC on the table. To do so, complete the following steps: + +- 1. Run the SQL statements that are shown in Example 3-10. + +## Example 3-10 Activating RCAC on the EMPLOYEES table + +- /* Active Row Access Control (permissions) */ + +/* Active Column Access Control (masks) ALTER TABLE HR_SCHEMA.EMPLOYEES ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL; + +*/ + +- 2. Look at the definition of the EMPLOYEE table, as shown in Figure 3-11. To do this, from the main navigation pane of System i Navigator, click Schemas  HR_SCHEMA  Tables , right-click the EMPLOYEES table, and click Definition . + +Figure 3-11 Selecting the EMPLOYEES table from System i Navigator + + +- 2. Figure 4-68 shows the Visual Explain of the same SQL statement, but with RCAC enabled. It is clear that the implementation of the SQL statement is more complex because the row permission rule becomes part of the WHERE clause. + +Figure 4-68 Visual Explain with RCAC enabled + + +- 3. Compare the advised indexes that are provided by the Optimizer without RCAC and with RCAC enabled. Figure 4-69 shows the index advice for the SQL statement without RCAC enabled. The index being advised is for the ORDER BY clause. + +Figure 4-69 Index advice with no RCAC + + +THEN C . CUSTOMER_TAX_ID WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( C . CUSTOMER_TAX_ID , 8 , 4 ) ) WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_TAX_ID ELSE 'XXX-XX-XXXX' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_DRIVERS_LICENSE_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_DRIVERS_LICENSE_NUMBER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ELSE '*************' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_LOGIN_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_LOGIN_ID RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_LOGIN_ID WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_LOGIN_ID ELSE '*****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_SECURITY_QUESTION RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION ELSE '*****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_SECURITY_QUESTION_ANSWER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ELSE '*****' END ENABLE ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL ; + +Back cover + +## Row and Column Access Control Support in IBM DB2 for i + +Implement roles and separation of duties + +Leverage row permissions on the database + +Protect columns by defining column masks + +This IBM Redpaper publication provides information about the IBM i 7.2 feature of IBM DB2 for i Row and Column Access Control (RCAC). It offers a broad description of the function and advantages of controlling access to data in a comprehensive and transparent way. This publication helps you understand the capabilities of RCAC and provides examples of defining, creating, and implementing the row permissions and column masks in a relational database environment. + +This paper is intended for database engineers, data-centric application developers, and security officers who want to design and implement RCAC as a part of their data control and governance policy. A solid background in IBM i object level security, DB2 for i relational database concepts, and SQL is assumed. + + + + + + + +INTERNATIONAL TECHNICAL SUPPORT ORGANIZATION + +BUILDING TECHNICAL INFORMATION BASED ON PRACTICAL EXPERIENCE + +IBM Redbooks are developed by the IBM International Technical Support Organization. Experts from IBM, Customers and Partners from around the world create timely technical information based on realistic scenarios. Specific recommendations are provided to help you implement IT solutions more effectively in your environment. + +For more information: ibm.com /redbooks \ No newline at end of file diff --git a/tests/data/groundtruth/docling_v1/redp5110_sampled.pages.json b/tests/data/groundtruth/docling_v1/redp5110_sampled.pages.json new file mode 100644 index 00000000..5765cb25 --- /dev/null +++ b/tests/data/groundtruth/docling_v1/redp5110_sampled.pages.json @@ -0,0 +1 @@ +[{"page_no": 0, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "ibm.com", "bbox": {"l": 36.900002, "t": 751.23, "r": 98.600998, "b": 765.105, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "/redbooks", "bbox": {"l": 98.580002, "t": 751.23, "r": 164.4585, "b": 765.105, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Redpaper", "bbox": {"l": 314.70001, "t": 711.50856, "r": 580.52002, "b": 773.772959, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Front cover", "bbox": {"l": 287.82001, "t": 28.54803000000004, "r": 418.83356, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Row and Column Access Control ", "bbox": {"l": 35.700001, "t": 84.58654999999987, "r": 584.64288, "b": 122.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Support in IBM DB2 for i", "bbox": {"l": 35.700001, "t": 127.60668999999996, "r": 447.66919000000007, "b": 165.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Jim Bainbridge", "bbox": {"l": 509.22, "t": 575.71201, "r": 581.34119, "b": 586.392, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Hernando Bedoya", "bbox": {"l": 497.70001, "t": 589.752, "r": 581.3736, "b": 600.43199, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Rob Bestgen", "bbox": {"l": 521.40002, "t": 603.73199, "r": 581.34003, "b": 614.4119900000001, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Mike Cain", "bbox": {"l": 534.12, "t": 617.71199, "r": 581.31598, "b": 628.39198, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Dan Cruikshank", "bbox": {"l": 505.43999999999994, "t": 631.75198, "r": 581.29077, "b": 642.4319800000001, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Jim Denton", "bbox": {"l": 527.22003, "t": 645.73198, "r": 581.29926, "b": 656.41197, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Doug Mack", "bbox": {"l": 527.64001, "t": 659.71198, "r": 581.30884, "b": 670.39197, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Tom McKinley", "bbox": {"l": 514.38, "t": 673.75197, "r": 581.38678, "b": 684.43197, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Kent Milligan", "bbox": {"l": 518.82001, "t": 687.73197, "r": 581.33759, "b": 698.411972, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Implement roles and separation ", "bbox": {"l": 36.119999, "t": 296.13828, "r": 216.00064, "b": 308.58047, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "of duties", "bbox": {"l": 36.119999, "t": 313.11838000000006, "r": 84.527145, "b": 325.56058, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Leverage", "bbox": {"l": 35.759315, "t": 350.13881999999995, "r": 80.409691, "b": 362.58102, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "row permissions on ", "bbox": {"l": 151.8503, "t": 350.13881999999995, "r": 202.45404, "b": 362.58102, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "the", "bbox": {"l": 35.759315, "t": 367.11893, "r": 50.758106, "b": 379.56112999999993, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "database", "bbox": {"l": 86.755211, "t": 367.11893, "r": 107.75352000000001, "b": 379.56112999999993, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Protect", "bbox": {"l": 36.059887, "t": 404.13937, "r": 73.020607, "b": 416.58157, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "columns by defining ", "bbox": {"l": 152.62831, "t": 404.13937, "r": 195.2753, "b": 416.58157, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "column", "bbox": {"l": 36.059887, "t": 421.11948, "r": 73.311806, "b": 433.56167999999997, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "masks", "bbox": {"l": 73.311806, "t": 421.11948, "r": 117.33681, "b": 433.56167999999997, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 36.894657135009766, "t": 749.8662109375, "r": 164.4585, "b": 765.105, "coord_origin": "TOPLEFT"}, "confidence": 0.7180292010307312, "cells": [{"id": 0, "text": "ibm.com", "bbox": {"l": 36.900002, "t": 751.23, "r": 98.600998, "b": 765.105, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "/redbooks", "bbox": {"l": 98.580002, "t": 751.23, "r": 164.4585, "b": 765.105, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "text", "bbox": {"l": 314.70001, "t": 711.50856, "r": 580.52002, "b": 773.772959, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Redpaper", "bbox": {"l": 314.70001, "t": 711.50856, "r": 580.52002, "b": 773.772959, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 287.82001, "t": 28.54803000000004, "r": 418.83356, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 3, "text": "Front cover", "bbox": {"l": 287.82001, "t": 28.54803000000004, "r": 418.83356, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "section_header", "bbox": {"l": 35.68840408325195, "t": 82.3943099975586, "r": 584.64288, "b": 166.40553283691406, "coord_origin": "TOPLEFT"}, "confidence": 0.8281131386756897, "cells": [{"id": 4, "text": "Row and Column Access Control ", "bbox": {"l": 35.700001, "t": 84.58654999999987, "r": 584.64288, "b": 122.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Support in IBM DB2 for i", "bbox": {"l": 35.700001, "t": 127.60668999999996, "r": 447.66919000000007, "b": 165.84113000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 497.0279846191406, "t": 573.8836669921875, "r": 581.8246459960938, "b": 699.171630859375, "coord_origin": "TOPLEFT"}, "confidence": 0.7621812224388123, "cells": [{"id": 6, "text": "Jim Bainbridge", "bbox": {"l": 509.22, "t": 575.71201, "r": 581.34119, "b": 586.392, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Hernando Bedoya", "bbox": {"l": 497.70001, "t": 589.752, "r": 581.3736, "b": 600.43199, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Rob Bestgen", "bbox": {"l": 521.40002, "t": 603.73199, "r": 581.34003, "b": 614.4119900000001, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Mike Cain", "bbox": {"l": 534.12, "t": 617.71199, "r": 581.31598, "b": 628.39198, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Dan Cruikshank", "bbox": {"l": 505.43999999999994, "t": 631.75198, "r": 581.29077, "b": 642.4319800000001, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Jim Denton", "bbox": {"l": 527.22003, "t": 645.73198, "r": 581.29926, "b": 656.41197, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Doug Mack", "bbox": {"l": 527.64001, "t": 659.71198, "r": 581.30884, "b": 670.39197, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Tom McKinley", "bbox": {"l": 514.38, "t": 673.75197, "r": 581.38678, "b": 684.43197, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Kent Milligan", "bbox": {"l": 518.82001, "t": 687.73197, "r": 581.33759, "b": 698.411972, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 35.0073127746582, "t": 294.7938232421875, "r": 216.00064, "b": 325.56058, "coord_origin": "TOPLEFT"}, "confidence": 0.8502883315086365, "cells": [{"id": 15, "text": "Implement roles and separation ", "bbox": {"l": 36.119999, "t": 296.13828, "r": 216.00064, "b": 308.58047, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "of duties", "bbox": {"l": 36.119999, "t": 313.11838000000006, "r": 84.527145, "b": 325.56058, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 34.56448745727539, "t": 348.9540710449219, "r": 202.45404, "b": 379.56112999999993, "coord_origin": "TOPLEFT"}, "confidence": 0.8639552593231201, "cells": [{"id": 17, "text": "Leverage", "bbox": {"l": 35.759315, "t": 350.13881999999995, "r": 80.409691, "b": 362.58102, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "row permissions on ", "bbox": {"l": 151.8503, "t": 350.13881999999995, "r": 202.45404, "b": 362.58102, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "the", "bbox": {"l": 35.759315, "t": 367.11893, "r": 50.758106, "b": 379.56112999999993, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "database", "bbox": {"l": 86.755211, "t": 367.11893, "r": 107.75352000000001, "b": 379.56112999999993, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 35.171409606933594, "t": 402.6540832519531, "r": 195.2753, "b": 433.56167999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.842113196849823, "cells": [{"id": 21, "text": "Protect", "bbox": {"l": 36.059887, "t": 404.13937, "r": 73.020607, "b": 416.58157, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "columns by defining ", "bbox": {"l": 152.62831, "t": 404.13937, "r": 195.2753, "b": 416.58157, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "column", "bbox": {"l": 36.059887, "t": 421.11948, "r": 73.311806, "b": 433.56167999999997, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "masks", "bbox": {"l": 73.311806, "t": 421.11948, "r": 117.33681, "b": 433.56167999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 513.4560546875, "t": 26.085098266601562, "r": 586.1583251953125, "b": 54.81915283203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9272357225418091, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 0, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 36.894657135009766, "t": 749.8662109375, "r": 164.4585, "b": 765.105, "coord_origin": "TOPLEFT"}, "confidence": 0.7180292010307312, "cells": [{"id": 0, "text": "ibm.com", "bbox": {"l": 36.900002, "t": 751.23, "r": 98.600998, "b": 765.105, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "/redbooks", "bbox": {"l": 98.580002, "t": 751.23, "r": 164.4585, "b": 765.105, "coord_origin": "TOPLEFT"}}]}, "text": "ibm.com /redbooks"}, {"label": "text", "id": 1, "page_no": 0, "cluster": {"id": 1, "label": "text", "bbox": {"l": 314.70001, "t": 711.50856, "r": 580.52002, "b": 773.772959, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Redpaper", "bbox": {"l": 314.70001, "t": 711.50856, "r": 580.52002, "b": 773.772959, "coord_origin": "TOPLEFT"}}]}, "text": "Redpaper"}, {"label": "text", "id": 2, "page_no": 0, "cluster": {"id": 2, "label": "text", "bbox": {"l": 287.82001, "t": 28.54803000000004, "r": 418.83356, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 3, "text": "Front cover", "bbox": {"l": 287.82001, "t": 28.54803000000004, "r": 418.83356, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}}]}, "text": "Front cover"}, {"label": "section_header", "id": 3, "page_no": 0, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 35.68840408325195, "t": 82.3943099975586, "r": 584.64288, "b": 166.40553283691406, "coord_origin": "TOPLEFT"}, "confidence": 0.8281131386756897, "cells": [{"id": 4, "text": "Row and Column Access Control ", "bbox": {"l": 35.700001, "t": 84.58654999999987, "r": 584.64288, "b": 122.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Support in IBM DB2 for i", "bbox": {"l": 35.700001, "t": 127.60668999999996, "r": 447.66919000000007, "b": 165.84113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 4, "page_no": 0, "cluster": {"id": 4, "label": "text", "bbox": {"l": 497.0279846191406, "t": 573.8836669921875, "r": 581.8246459960938, "b": 699.171630859375, "coord_origin": "TOPLEFT"}, "confidence": 0.7621812224388123, "cells": [{"id": 6, "text": "Jim Bainbridge", "bbox": {"l": 509.22, "t": 575.71201, "r": 581.34119, "b": 586.392, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Hernando Bedoya", "bbox": {"l": 497.70001, "t": 589.752, "r": 581.3736, "b": 600.43199, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Rob Bestgen", "bbox": {"l": 521.40002, "t": 603.73199, "r": 581.34003, "b": 614.4119900000001, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Mike Cain", "bbox": {"l": 534.12, "t": 617.71199, "r": 581.31598, "b": 628.39198, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Dan Cruikshank", "bbox": {"l": 505.43999999999994, "t": 631.75198, "r": 581.29077, "b": 642.4319800000001, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Jim Denton", "bbox": {"l": 527.22003, "t": 645.73198, "r": 581.29926, "b": 656.41197, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Doug Mack", "bbox": {"l": 527.64001, "t": 659.71198, "r": 581.30884, "b": 670.39197, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Tom McKinley", "bbox": {"l": 514.38, "t": 673.75197, "r": 581.38678, "b": 684.43197, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Kent Milligan", "bbox": {"l": 518.82001, "t": 687.73197, "r": 581.33759, "b": 698.411972, "coord_origin": "TOPLEFT"}}]}, "text": "Jim Bainbridge Hernando Bedoya Rob Bestgen Mike Cain Dan Cruikshank Jim Denton Doug Mack Tom McKinley Kent Milligan"}, {"label": "text", "id": 5, "page_no": 0, "cluster": {"id": 5, "label": "text", "bbox": {"l": 35.0073127746582, "t": 294.7938232421875, "r": 216.00064, "b": 325.56058, "coord_origin": "TOPLEFT"}, "confidence": 0.8502883315086365, "cells": [{"id": 15, "text": "Implement roles and separation ", "bbox": {"l": 36.119999, "t": 296.13828, "r": 216.00064, "b": 308.58047, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "of duties", "bbox": {"l": 36.119999, "t": 313.11838000000006, "r": 84.527145, "b": 325.56058, "coord_origin": "TOPLEFT"}}]}, "text": "Implement roles and separation of duties"}, {"label": "text", "id": 6, "page_no": 0, "cluster": {"id": 6, "label": "text", "bbox": {"l": 34.56448745727539, "t": 348.9540710449219, "r": 202.45404, "b": 379.56112999999993, "coord_origin": "TOPLEFT"}, "confidence": 0.8639552593231201, "cells": [{"id": 17, "text": "Leverage", "bbox": {"l": 35.759315, "t": 350.13881999999995, "r": 80.409691, "b": 362.58102, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "row permissions on ", "bbox": {"l": 151.8503, "t": 350.13881999999995, "r": 202.45404, "b": 362.58102, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "the", "bbox": {"l": 35.759315, "t": 367.11893, "r": 50.758106, "b": 379.56112999999993, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "database", "bbox": {"l": 86.755211, "t": 367.11893, "r": 107.75352000000001, "b": 379.56112999999993, "coord_origin": "TOPLEFT"}}]}, "text": "Leverage row permissions on the database"}, {"label": "text", "id": 7, "page_no": 0, "cluster": {"id": 7, "label": "text", "bbox": {"l": 35.171409606933594, "t": 402.6540832519531, "r": 195.2753, "b": 433.56167999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.842113196849823, "cells": [{"id": 21, "text": "Protect", "bbox": {"l": 36.059887, "t": 404.13937, "r": 73.020607, "b": 416.58157, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "columns by defining ", "bbox": {"l": 152.62831, "t": 404.13937, "r": 195.2753, "b": 416.58157, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "column", "bbox": {"l": 36.059887, "t": 421.11948, "r": 73.311806, "b": 433.56167999999997, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "masks", "bbox": {"l": 73.311806, "t": 421.11948, "r": 117.33681, "b": 433.56167999999997, "coord_origin": "TOPLEFT"}}]}, "text": "Protect columns by defining column masks"}, {"label": "picture", "id": 8, "page_no": 0, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 513.4560546875, "t": 26.085098266601562, "r": 586.1583251953125, "b": 54.81915283203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9272357225418091, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 1, "page_no": 0, "cluster": {"id": 1, "label": "text", "bbox": {"l": 314.70001, "t": 711.50856, "r": 580.52002, "b": 773.772959, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Redpaper", "bbox": {"l": 314.70001, "t": 711.50856, "r": 580.52002, "b": 773.772959, "coord_origin": "TOPLEFT"}}]}, "text": "Redpaper"}, {"label": "text", "id": 2, "page_no": 0, "cluster": {"id": 2, "label": "text", "bbox": {"l": 287.82001, "t": 28.54803000000004, "r": 418.83356, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 3, "text": "Front cover", "bbox": {"l": 287.82001, "t": 28.54803000000004, "r": 418.83356, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}}]}, "text": "Front cover"}, {"label": "section_header", "id": 3, "page_no": 0, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 35.68840408325195, "t": 82.3943099975586, "r": 584.64288, "b": 166.40553283691406, "coord_origin": "TOPLEFT"}, "confidence": 0.8281131386756897, "cells": [{"id": 4, "text": "Row and Column Access Control ", "bbox": {"l": 35.700001, "t": 84.58654999999987, "r": 584.64288, "b": 122.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Support in IBM DB2 for i", "bbox": {"l": 35.700001, "t": 127.60668999999996, "r": 447.66919000000007, "b": 165.84113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 4, "page_no": 0, "cluster": {"id": 4, "label": "text", "bbox": {"l": 497.0279846191406, "t": 573.8836669921875, "r": 581.8246459960938, "b": 699.171630859375, "coord_origin": "TOPLEFT"}, "confidence": 0.7621812224388123, "cells": [{"id": 6, "text": "Jim Bainbridge", "bbox": {"l": 509.22, "t": 575.71201, "r": 581.34119, "b": 586.392, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Hernando Bedoya", "bbox": {"l": 497.70001, "t": 589.752, "r": 581.3736, "b": 600.43199, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Rob Bestgen", "bbox": {"l": 521.40002, "t": 603.73199, "r": 581.34003, "b": 614.4119900000001, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Mike Cain", "bbox": {"l": 534.12, "t": 617.71199, "r": 581.31598, "b": 628.39198, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Dan Cruikshank", "bbox": {"l": 505.43999999999994, "t": 631.75198, "r": 581.29077, "b": 642.4319800000001, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Jim Denton", "bbox": {"l": 527.22003, "t": 645.73198, "r": 581.29926, "b": 656.41197, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Doug Mack", "bbox": {"l": 527.64001, "t": 659.71198, "r": 581.30884, "b": 670.39197, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Tom McKinley", "bbox": {"l": 514.38, "t": 673.75197, "r": 581.38678, "b": 684.43197, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Kent Milligan", "bbox": {"l": 518.82001, "t": 687.73197, "r": 581.33759, "b": 698.411972, "coord_origin": "TOPLEFT"}}]}, "text": "Jim Bainbridge Hernando Bedoya Rob Bestgen Mike Cain Dan Cruikshank Jim Denton Doug Mack Tom McKinley Kent Milligan"}, {"label": "text", "id": 5, "page_no": 0, "cluster": {"id": 5, "label": "text", "bbox": {"l": 35.0073127746582, "t": 294.7938232421875, "r": 216.00064, "b": 325.56058, "coord_origin": "TOPLEFT"}, "confidence": 0.8502883315086365, "cells": [{"id": 15, "text": "Implement roles and separation ", "bbox": {"l": 36.119999, "t": 296.13828, "r": 216.00064, "b": 308.58047, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "of duties", "bbox": {"l": 36.119999, "t": 313.11838000000006, "r": 84.527145, "b": 325.56058, "coord_origin": "TOPLEFT"}}]}, "text": "Implement roles and separation of duties"}, {"label": "text", "id": 6, "page_no": 0, "cluster": {"id": 6, "label": "text", "bbox": {"l": 34.56448745727539, "t": 348.9540710449219, "r": 202.45404, "b": 379.56112999999993, "coord_origin": "TOPLEFT"}, "confidence": 0.8639552593231201, "cells": [{"id": 17, "text": "Leverage", "bbox": {"l": 35.759315, "t": 350.13881999999995, "r": 80.409691, "b": 362.58102, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "row permissions on ", "bbox": {"l": 151.8503, "t": 350.13881999999995, "r": 202.45404, "b": 362.58102, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "the", "bbox": {"l": 35.759315, "t": 367.11893, "r": 50.758106, "b": 379.56112999999993, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "database", "bbox": {"l": 86.755211, "t": 367.11893, "r": 107.75352000000001, "b": 379.56112999999993, "coord_origin": "TOPLEFT"}}]}, "text": "Leverage row permissions on the database"}, {"label": "text", "id": 7, "page_no": 0, "cluster": {"id": 7, "label": "text", "bbox": {"l": 35.171409606933594, "t": 402.6540832519531, "r": 195.2753, "b": 433.56167999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.842113196849823, "cells": [{"id": 21, "text": "Protect", "bbox": {"l": 36.059887, "t": 404.13937, "r": 73.020607, "b": 416.58157, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "columns by defining ", "bbox": {"l": 152.62831, "t": 404.13937, "r": 195.2753, "b": 416.58157, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "column", "bbox": {"l": 36.059887, "t": 421.11948, "r": 73.311806, "b": 433.56167999999997, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "masks", "bbox": {"l": 73.311806, "t": 421.11948, "r": 117.33681, "b": 433.56167999999997, "coord_origin": "TOPLEFT"}}]}, "text": "Protect columns by defining column masks"}, {"label": "picture", "id": 8, "page_no": 0, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 513.4560546875, "t": 26.085098266601562, "r": 586.1583251953125, "b": 54.81915283203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9272357225418091, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 0, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 36.894657135009766, "t": 749.8662109375, "r": 164.4585, "b": 765.105, "coord_origin": "TOPLEFT"}, "confidence": 0.7180292010307312, "cells": [{"id": 0, "text": "ibm.com", "bbox": {"l": 36.900002, "t": 751.23, "r": 98.600998, "b": 765.105, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "/redbooks", "bbox": {"l": 98.580002, "t": 751.23, "r": 164.4585, "b": 765.105, "coord_origin": "TOPLEFT"}}]}, "text": "ibm.com /redbooks"}]}}, {"page_no": 1, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "iii", "bbox": {"l": 538.85999, "t": 754.848721, "r": 547.25928, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Contents", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 168.73441, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Notices", "bbox": {"l": 136.8, "t": 132.64862000000005, "r": 172.89404, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii", "bbox": {"l": 175.01952, "t": 132.64862000000005, "r": 547.18982, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Trademarks", "bbox": {"l": 136.79901, "t": 145.12847999999997, "r": 189.86537, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 195.39685, "t": 145.12847999999997, "r": 530.05121, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "viii", "bbox": {"l": 535.5827, "t": 145.12847999999997, "r": 547.18286, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "DB2 for i Center of Excellence", "bbox": {"l": 136.79901, "t": 167.62811, "r": 279.39731, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix", "bbox": {"l": 280.61942, "t": 167.62811, "r": 547.1908, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Preface", "bbox": {"l": 136.79901, "t": 190.12775, "r": 172.84424, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "bbox": {"l": 175.01852, "t": 190.12775, "r": 547.18286, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "bbox": {"l": 136.79803, "t": 202.60760000000005, "r": 547.18085, "b": 211.82061999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Now you can become a published author, too!", "bbox": {"l": 136.79803, "t": 215.14721999999995, "r": 339.18292, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.71411, "t": 215.14721999999995, "r": 530.00812, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "xiii", "bbox": {"l": 535.53925, "t": 215.14721999999995, "r": 547.13879, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 136.79803, "t": 227.62707999999998, "r": 529.99506, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "xiii", "bbox": {"l": 535.5495, "t": 227.62707999999998, "r": 547.19788, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Stay connected to IBM Redbooks", "bbox": {"l": 136.79807, "t": 240.10693000000003, "r": 284.02866, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 289.54449, "t": 240.10693000000003, "r": 529.48242, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "xiv", "bbox": {"l": 534.99829, "t": 240.10693000000003, "r": 547.12115, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Chapter 1. Securing and protecting IBM DB2 data", "bbox": {"l": 136.79807, "t": 262.60657000000003, "r": 373.17566, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 375.11798, "t": 262.60657000000003, "r": 536.09589, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "1", "bbox": {"l": 541.64685, "t": 262.60657000000003, "r": 547.19781, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "1.1", "bbox": {"l": 136.79808, "t": 274.60637999999994, "r": 150.88702, "b": 283.8194, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Security fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2", "bbox": {"l": 156.5226, "t": 274.60637999999994, "r": 549.84723, "b": 283.8194, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "1.2", "bbox": {"l": 136.79807, "t": 287.14606000000003, "r": 150.62746, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Current state of IBM i security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.15923, "t": 287.14606000000003, "r": 536.12933, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "2", "bbox": {"l": 541.66113, "t": 287.14606000000003, "r": 547.19287, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "1.3", "bbox": {"l": 136.79807, "t": 299.62595, "r": 150.84943, "b": 308.83893, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "DB2 for i security controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3", "bbox": {"l": 156.46996, "t": 299.62595, "r": 549.84723, "b": 308.83893, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "1.3.1", "bbox": {"l": 151.1972, "t": 312.1058300000001, "r": 173.38289, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Existing row and column control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.92932, "t": 312.1058300000001, "r": 536.05511, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "4", "bbox": {"l": 541.6015, "t": 312.1058300000001, "r": 547.14795, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "1.3.2", "bbox": {"l": 151.1972, "t": 324.64548, "r": 173.4189, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "New controls: Row and Column Access Control. . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97432, "t": 324.64548, "r": 536.08008, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "5", "bbox": {"l": 541.6355, "t": 324.64548, "r": 547.19092, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Chapter 2. Roles and separation of duties", "bbox": {"l": 136.79704, "t": 347.14511, "r": 336.82071, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 338.99701, "t": 347.14511, "r": 536.09088, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "7", "bbox": {"l": 541.64282, "t": 347.14511, "r": 547.19476, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "2.1", "bbox": {"l": 136.79704, "t": 359.14493, "r": 150.644, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18277, "t": 359.14493, "r": 536.12714, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "8", "bbox": {"l": 541.66589, "t": 359.14493, "r": 547.20471, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "2.1.1", "bbox": {"l": 151.1972, "t": 371.62482, "r": 173.60995, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "DDM and DRDA application server access: QIBM_DB_DDMDRDA . . . . . . . . . . .", "bbox": {"l": 176.41154, "t": 371.62482, "r": 535.9527, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "8", "bbox": {"l": 541.55585, "t": 371.62482, "r": 547.15906, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "2.1.2", "bbox": {"l": 151.1972, "t": 384.10470999999995, "r": 173.41664, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Toolbox application server access: QIBM_DB_ZDA. . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97151, "t": 384.10470999999995, "r": 536.04108, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "8", "bbox": {"l": 541.59595, "t": 384.10470999999995, "r": 547.15082, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "2.1.3", "bbox": {"l": 151.1972, "t": 396.64435, "r": 173.41859, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Database Administrator function: QIBM_DB_SQLADM . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97394, "t": 396.64435, "r": 536.07489, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "9", "bbox": {"l": 541.63025, "t": 396.64435, "r": 547.18561, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "2.1.4", "bbox": {"l": 151.1972, "t": 409.12424000000004, "r": 173.38629, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "Database Information function: QIBM_DB_SYSMON", "bbox": {"l": 178.93356, "t": 409.12424000000004, "r": 411.27048, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": ". . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 416.81775, "t": 409.12424000000004, "r": 536.08411, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "9", "bbox": {"l": 541.63135, "t": 409.12424000000004, "r": 547.17865, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "2.1.5", "bbox": {"l": 151.1972, "t": 421.60413, "r": 173.44926, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "Security Administrator function: QIBM_DB_SECADM . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01228, "t": 421.60413, "r": 536.03589, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "9", "bbox": {"l": 541.59894, "t": 421.60413, "r": 547.16193, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "2.1.6", "bbox": {"l": 151.1972, "t": 434.1437700000001, "r": 173.32208, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Change Function Usage CL command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8533, "t": 434.1437700000001, "r": 530.57318, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "10", "bbox": {"l": 536.10443, "t": 434.1437700000001, "r": 547.16687, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "2.1.7", "bbox": {"l": 151.1972, "t": 446.62366, "r": 173.35822, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "Verifying function usage IDs for RCAC with the FUNCTION_USAGE view . . . . .", "bbox": {"l": 178.89848, "t": 446.62366, "r": 530.53522, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "10", "bbox": {"l": 536.0755, "t": 446.62366, "r": 547.15601, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "2.2", "bbox": {"l": 136.79704, "t": 459.10355, "r": 150.85457, "b": 468.31653, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "Separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10", "bbox": {"l": 156.47758, "t": 459.10355, "r": 547.25659, "b": 468.31653, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Chapter 3. Row and Column Access Control", "bbox": {"l": 136.79703, "t": 481.60318, "r": 348.68503, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 350.09741, "t": 481.60318, "r": 530.53961, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "13", "bbox": {"l": 536.09167, "t": 481.60318, "r": 547.1958, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "3.1", "bbox": {"l": 136.79703, "t": 493.603, "r": 150.70105, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "Explanation of RCAC and the concept of access control . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26266, "t": 493.603, "r": 530.4809, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "14", "bbox": {"l": 536.04248, "t": 493.603, "r": 547.16571, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "3.1.1", "bbox": {"l": 151.19719, "t": 506.14264, "r": 173.35429, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "Row permission and column mask definitions", "bbox": {"l": 178.89357, "t": 506.14264, "r": 378.20786, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 383.74713, "t": 506.14264, "r": 530.5379, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "14", "bbox": {"l": 536.07721, "t": 506.14264, "r": 547.15576, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "3.1.2", "bbox": {"l": 151.19719, "t": 518.62253, "r": 173.44292, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "Enabling and activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00435, "t": 518.62253, "r": 530.43475, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "16", "bbox": {"l": 535.99622, "t": 518.62253, "r": 547.11908, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "3.2", "bbox": {"l": 136.79703, "t": 531.1621700000001, "r": 150.64432, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "Special registers and built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18323, "t": 531.1621700000001, "r": 530.52808, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "18", "bbox": {"l": 536.06702, "t": 531.1621700000001, "r": 547.14484, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "3.2.1", "bbox": {"l": 151.19719, "t": 543.64204, "r": 173.41321, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "Special registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.96722, "t": 543.64204, "r": 530.49786, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "18", "bbox": {"l": 536.05188, "t": 543.64204, "r": 547.15991, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 86, "text": "3.2.2", "bbox": {"l": 151.19719, "t": 556.12192, "r": 173.35269, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 87, "text": "Built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89156, "t": 556.12192, "r": 530.56024, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 88, "text": "19", "bbox": {"l": 536.09912, "t": 556.12192, "r": 547.17688, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 89, "text": "3.3", "bbox": {"l": 136.79703, "t": 568.66156, "r": 150.62514, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 90, "text": "VERIFY_GROUP_FOR_USER function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.15639, "t": 568.66156, "r": 530.53027, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 91, "text": "20", "bbox": {"l": 536.06152, "t": 568.66156, "r": 547.12402, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 92, "text": "3.4", "bbox": {"l": 136.79703, "t": 581.14143, "r": 150.63004, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 93, "text": "Establishing and controlling accessibility by using the RCAC rule text . . . . . . . . . . . . .", "bbox": {"l": 156.16325, "t": 581.14143, "r": 530.62994, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 94, "text": "21", "bbox": {"l": 536.16315, "t": 581.14143, "r": 547.22955, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 95, "text": "3.5", "bbox": {"l": 136.79701, "t": 593.62131, "r": 150.64413, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 96, "text": "SELECT, INSERT, and UPDATE behavior with RCAC", "bbox": {"l": 156.18298, "t": 593.62131, "r": 394.7818, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 97, "text": ". . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 400.32065, "t": 593.62131, "r": 530.48358, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 98, "text": "22", "bbox": {"l": 536.0224, "t": 593.62131, "r": 547.1001, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 99, "text": "3.6", "bbox": {"l": 136.79701, "t": 606.16095, "r": 150.6642, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 100, "text": "Human resources example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.21107, "t": 606.16095, "r": 530.56512, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 101, "text": "22", "bbox": {"l": 536.112, "t": 606.16095, "r": 547.20575, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 102, "text": "3.6.1", "bbox": {"l": 151.19717, "t": 618.64082, "r": 173.41692, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 103, "text": "Assigning the QIBM_DB_SECADM function ID to the consultants. . . . . . . . . . . .", "bbox": {"l": 178.97185, "t": 618.64082, "r": 530.49139, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 104, "text": "23", "bbox": {"l": 536.04633, "t": 618.64082, "r": 547.15619, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 105, "text": "3.6.2", "bbox": {"l": 151.19717, "t": 631.1206999999999, "r": 173.32271, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 106, "text": "Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8541, "t": 631.1206999999999, "r": 530.56458, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 107, "text": "23", "bbox": {"l": 536.09601, "t": 631.1206999999999, "r": 547.15875, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 108, "text": "3.6.3", "bbox": {"l": 151.19717, "t": 643.66034, "r": 173.32227, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 109, "text": "Demonstrating data access without RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85353, "t": 643.66034, "r": 530.55695, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 110, "text": "24", "bbox": {"l": 536.0882, "t": 643.66034, "r": 547.15076, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 111, "text": "3.6.4", "bbox": {"l": 151.19717, "t": 656.14021, "r": 173.35289, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 112, "text": "Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89182, "t": 656.14021, "r": 530.53412, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 113, "text": "25", "bbox": {"l": 536.073, "t": 656.14021, "r": 547.15088, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 114, "text": "3.6.5", "bbox": {"l": 151.19717, "t": 668.62009, "r": 173.35289, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 115, "text": "Defining and creating column masks", "bbox": {"l": 178.89182, "t": 668.62009, "r": 339.45105, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 116, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.98996, "t": 668.62009, "r": 530.54413, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 117, "text": "26", "bbox": {"l": 536.08301, "t": 668.62009, "r": 547.16089, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 118, "text": "3.6.6", "bbox": {"l": 151.19717, "t": 681.15973, "r": 173.38359, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 119, "text": "Activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.93019, "t": 681.15973, "r": 530.54102, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 120, "text": "28", "bbox": {"l": 536.08765, "t": 681.15973, "r": 547.18085, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 121, "text": "3.6.7", "bbox": {"l": 151.19717, "t": 693.63961, "r": 173.32332, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 122, "text": "Demonstrating data access with RCAC", "bbox": {"l": 178.85486, "t": 693.63961, "r": 350.80011, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 123, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 356.33163, "t": 693.63961, "r": 530.57507, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 124, "text": "29", "bbox": {"l": 536.10663, "t": 693.63961, "r": 547.16968, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 125, "text": "3.6.8", "bbox": {"l": 151.19717, "t": 706.119492, "r": 173.44592, "b": 715.332497, "coord_origin": "TOPLEFT"}}, {"id": 126, "text": "Demonstrating data access with a view and RCAC . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00812, "t": 706.119492, "r": 530.43628, "b": 715.332497, "coord_origin": "TOPLEFT"}}, {"id": 127, "text": "32", "bbox": {"l": 535.99847, "t": 706.119492, "r": 547.12286, "b": 715.332497, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.751060485839844, "t": 754.6969604492188, "r": 257.24335, "b": 764.1015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9473134875297546, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 538.3257446289062, "t": 754.0830688476562, "r": 547.25928, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.892595112323761, "cells": [{"id": 1, "text": "iii", "bbox": {"l": 538.85999, "t": 754.848721, "r": 547.25928, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.6857681274414, "t": 73.01808166503906, "r": 168.73441, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9508246779441833, "cells": [{"id": 2, "text": "Contents", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 168.73441, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "table", "bbox": {"l": 136.15103149414062, "t": 132.03030395507812, "r": 549.84723, "b": 715.6527709960938, "coord_origin": "TOPLEFT"}, "confidence": 0.9803490042686462, "cells": [{"id": 3, "text": "Notices", "bbox": {"l": 136.8, "t": 132.64862000000005, "r": 172.89404, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii", "bbox": {"l": 175.01952, "t": 132.64862000000005, "r": 547.18982, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Trademarks", "bbox": {"l": 136.79901, "t": 145.12847999999997, "r": 189.86537, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 195.39685, "t": 145.12847999999997, "r": 530.05121, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "viii", "bbox": {"l": 535.5827, "t": 145.12847999999997, "r": 547.18286, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "DB2 for i Center of Excellence", "bbox": {"l": 136.79901, "t": 167.62811, "r": 279.39731, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix", "bbox": {"l": 280.61942, "t": 167.62811, "r": 547.1908, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Preface", "bbox": {"l": 136.79901, "t": 190.12775, "r": 172.84424, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "bbox": {"l": 175.01852, "t": 190.12775, "r": 547.18286, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "bbox": {"l": 136.79803, "t": 202.60760000000005, "r": 547.18085, "b": 211.82061999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Now you can become a published author, too!", "bbox": {"l": 136.79803, "t": 215.14721999999995, "r": 339.18292, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.71411, "t": 215.14721999999995, "r": 530.00812, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "xiii", "bbox": {"l": 535.53925, "t": 215.14721999999995, "r": 547.13879, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 136.79803, "t": 227.62707999999998, "r": 529.99506, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "xiii", "bbox": {"l": 535.5495, "t": 227.62707999999998, "r": 547.19788, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Stay connected to IBM Redbooks", "bbox": {"l": 136.79807, "t": 240.10693000000003, "r": 284.02866, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 289.54449, "t": 240.10693000000003, "r": 529.48242, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "xiv", "bbox": {"l": 534.99829, "t": 240.10693000000003, "r": 547.12115, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Chapter 1. Securing and protecting IBM DB2 data", "bbox": {"l": 136.79807, "t": 262.60657000000003, "r": 373.17566, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 375.11798, "t": 262.60657000000003, "r": 536.09589, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "1", "bbox": {"l": 541.64685, "t": 262.60657000000003, "r": 547.19781, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "1.1", "bbox": {"l": 136.79808, "t": 274.60637999999994, "r": 150.88702, "b": 283.8194, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Security fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2", "bbox": {"l": 156.5226, "t": 274.60637999999994, "r": 549.84723, "b": 283.8194, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "1.2", "bbox": {"l": 136.79807, "t": 287.14606000000003, "r": 150.62746, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Current state of IBM i security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.15923, "t": 287.14606000000003, "r": 536.12933, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "2", "bbox": {"l": 541.66113, "t": 287.14606000000003, "r": 547.19287, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "1.3", "bbox": {"l": 136.79807, "t": 299.62595, "r": 150.84943, "b": 308.83893, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "DB2 for i security controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3", "bbox": {"l": 156.46996, "t": 299.62595, "r": 549.84723, "b": 308.83893, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "1.3.1", "bbox": {"l": 151.1972, "t": 312.1058300000001, "r": 173.38289, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Existing row and column control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.92932, "t": 312.1058300000001, "r": 536.05511, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "4", "bbox": {"l": 541.6015, "t": 312.1058300000001, "r": 547.14795, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "1.3.2", "bbox": {"l": 151.1972, "t": 324.64548, "r": 173.4189, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "New controls: Row and Column Access Control. . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97432, "t": 324.64548, "r": 536.08008, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "5", "bbox": {"l": 541.6355, "t": 324.64548, "r": 547.19092, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Chapter 2. Roles and separation of duties", "bbox": {"l": 136.79704, "t": 347.14511, "r": 336.82071, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 338.99701, "t": 347.14511, "r": 536.09088, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "7", "bbox": {"l": 541.64282, "t": 347.14511, "r": 547.19476, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "2.1", "bbox": {"l": 136.79704, "t": 359.14493, "r": 150.644, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18277, "t": 359.14493, "r": 536.12714, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "8", "bbox": {"l": 541.66589, "t": 359.14493, "r": 547.20471, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "2.1.1", "bbox": {"l": 151.1972, "t": 371.62482, "r": 173.60995, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "DDM and DRDA application server access: QIBM_DB_DDMDRDA . . . . . . . . . . .", "bbox": {"l": 176.41154, "t": 371.62482, "r": 535.9527, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "8", "bbox": {"l": 541.55585, "t": 371.62482, "r": 547.15906, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "2.1.2", "bbox": {"l": 151.1972, "t": 384.10470999999995, "r": 173.41664, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Toolbox application server access: QIBM_DB_ZDA. . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97151, "t": 384.10470999999995, "r": 536.04108, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "8", "bbox": {"l": 541.59595, "t": 384.10470999999995, "r": 547.15082, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "2.1.3", "bbox": {"l": 151.1972, "t": 396.64435, "r": 173.41859, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Database Administrator function: QIBM_DB_SQLADM . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97394, "t": 396.64435, "r": 536.07489, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "9", "bbox": {"l": 541.63025, "t": 396.64435, "r": 547.18561, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "2.1.4", "bbox": {"l": 151.1972, "t": 409.12424000000004, "r": 173.38629, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "Database Information function: QIBM_DB_SYSMON", "bbox": {"l": 178.93356, "t": 409.12424000000004, "r": 411.27048, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": ". . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 416.81775, "t": 409.12424000000004, "r": 536.08411, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "9", "bbox": {"l": 541.63135, "t": 409.12424000000004, "r": 547.17865, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "2.1.5", "bbox": {"l": 151.1972, "t": 421.60413, "r": 173.44926, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "Security Administrator function: QIBM_DB_SECADM . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01228, "t": 421.60413, "r": 536.03589, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "9", "bbox": {"l": 541.59894, "t": 421.60413, "r": 547.16193, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "2.1.6", "bbox": {"l": 151.1972, "t": 434.1437700000001, "r": 173.32208, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Change Function Usage CL command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8533, "t": 434.1437700000001, "r": 530.57318, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "10", "bbox": {"l": 536.10443, "t": 434.1437700000001, "r": 547.16687, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "2.1.7", "bbox": {"l": 151.1972, "t": 446.62366, "r": 173.35822, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "Verifying function usage IDs for RCAC with the FUNCTION_USAGE view . . . . .", "bbox": {"l": 178.89848, "t": 446.62366, "r": 530.53522, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "10", "bbox": {"l": 536.0755, "t": 446.62366, "r": 547.15601, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "2.2", "bbox": {"l": 136.79704, "t": 459.10355, "r": 150.85457, "b": 468.31653, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "Separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10", "bbox": {"l": 156.47758, "t": 459.10355, "r": 547.25659, "b": 468.31653, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Chapter 3. Row and Column Access Control", "bbox": {"l": 136.79703, "t": 481.60318, "r": 348.68503, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 350.09741, "t": 481.60318, "r": 530.53961, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "13", "bbox": {"l": 536.09167, "t": 481.60318, "r": 547.1958, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "3.1", "bbox": {"l": 136.79703, "t": 493.603, "r": 150.70105, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "Explanation of RCAC and the concept of access control . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26266, "t": 493.603, "r": 530.4809, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "14", "bbox": {"l": 536.04248, "t": 493.603, "r": 547.16571, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "3.1.1", "bbox": {"l": 151.19719, "t": 506.14264, "r": 173.35429, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "Row permission and column mask definitions", "bbox": {"l": 178.89357, "t": 506.14264, "r": 378.20786, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 383.74713, "t": 506.14264, "r": 530.5379, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "14", "bbox": {"l": 536.07721, "t": 506.14264, "r": 547.15576, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "3.1.2", "bbox": {"l": 151.19719, "t": 518.62253, "r": 173.44292, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "Enabling and activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00435, "t": 518.62253, "r": 530.43475, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "16", "bbox": {"l": 535.99622, "t": 518.62253, "r": 547.11908, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "3.2", "bbox": {"l": 136.79703, "t": 531.1621700000001, "r": 150.64432, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "Special registers and built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18323, "t": 531.1621700000001, "r": 530.52808, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "18", "bbox": {"l": 536.06702, "t": 531.1621700000001, "r": 547.14484, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "3.2.1", "bbox": {"l": 151.19719, "t": 543.64204, "r": 173.41321, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "Special registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.96722, "t": 543.64204, "r": 530.49786, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "18", "bbox": {"l": 536.05188, "t": 543.64204, "r": 547.15991, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 86, "text": "3.2.2", "bbox": {"l": 151.19719, "t": 556.12192, "r": 173.35269, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 87, "text": "Built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89156, "t": 556.12192, "r": 530.56024, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 88, "text": "19", "bbox": {"l": 536.09912, "t": 556.12192, "r": 547.17688, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 89, "text": "3.3", "bbox": {"l": 136.79703, "t": 568.66156, "r": 150.62514, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 90, "text": "VERIFY_GROUP_FOR_USER function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.15639, "t": 568.66156, "r": 530.53027, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 91, "text": "20", "bbox": {"l": 536.06152, "t": 568.66156, "r": 547.12402, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 92, "text": "3.4", "bbox": {"l": 136.79703, "t": 581.14143, "r": 150.63004, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 93, "text": "Establishing and controlling accessibility by using the RCAC rule text . . . . . . . . . . . . .", "bbox": {"l": 156.16325, "t": 581.14143, "r": 530.62994, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 94, "text": "21", "bbox": {"l": 536.16315, "t": 581.14143, "r": 547.22955, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 95, "text": "3.5", "bbox": {"l": 136.79701, "t": 593.62131, "r": 150.64413, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 96, "text": "SELECT, INSERT, and UPDATE behavior with RCAC", "bbox": {"l": 156.18298, "t": 593.62131, "r": 394.7818, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 97, "text": ". . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 400.32065, "t": 593.62131, "r": 530.48358, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 98, "text": "22", "bbox": {"l": 536.0224, "t": 593.62131, "r": 547.1001, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 99, "text": "3.6", "bbox": {"l": 136.79701, "t": 606.16095, "r": 150.6642, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 100, "text": "Human resources example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.21107, "t": 606.16095, "r": 530.56512, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 101, "text": "22", "bbox": {"l": 536.112, "t": 606.16095, "r": 547.20575, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 102, "text": "3.6.1", "bbox": {"l": 151.19717, "t": 618.64082, "r": 173.41692, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 103, "text": "Assigning the QIBM_DB_SECADM function ID to the consultants. . . . . . . . . . . .", "bbox": {"l": 178.97185, "t": 618.64082, "r": 530.49139, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 104, "text": "23", "bbox": {"l": 536.04633, "t": 618.64082, "r": 547.15619, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 105, "text": "3.6.2", "bbox": {"l": 151.19717, "t": 631.1206999999999, "r": 173.32271, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 106, "text": "Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8541, "t": 631.1206999999999, "r": 530.56458, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 107, "text": "23", "bbox": {"l": 536.09601, "t": 631.1206999999999, "r": 547.15875, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 108, "text": "3.6.3", "bbox": {"l": 151.19717, "t": 643.66034, "r": 173.32227, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 109, "text": "Demonstrating data access without RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85353, "t": 643.66034, "r": 530.55695, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 110, "text": "24", "bbox": {"l": 536.0882, "t": 643.66034, "r": 547.15076, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 111, "text": "3.6.4", "bbox": {"l": 151.19717, "t": 656.14021, "r": 173.35289, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 112, "text": "Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89182, "t": 656.14021, "r": 530.53412, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 113, "text": "25", "bbox": {"l": 536.073, "t": 656.14021, "r": 547.15088, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 114, "text": "3.6.5", "bbox": {"l": 151.19717, "t": 668.62009, "r": 173.35289, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 115, "text": "Defining and creating column masks", "bbox": {"l": 178.89182, "t": 668.62009, "r": 339.45105, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 116, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.98996, "t": 668.62009, "r": 530.54413, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 117, "text": "26", "bbox": {"l": 536.08301, "t": 668.62009, "r": 547.16089, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 118, "text": "3.6.6", "bbox": {"l": 151.19717, "t": 681.15973, "r": 173.38359, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 119, "text": "Activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.93019, "t": 681.15973, "r": 530.54102, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 120, "text": "28", "bbox": {"l": 536.08765, "t": 681.15973, "r": 547.18085, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 121, "text": "3.6.7", "bbox": {"l": 151.19717, "t": 693.63961, "r": 173.32332, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 122, "text": "Demonstrating data access with RCAC", "bbox": {"l": 178.85486, "t": 693.63961, "r": 350.80011, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 123, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 356.33163, "t": 693.63961, "r": 530.57507, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 124, "text": "29", "bbox": {"l": 536.10663, "t": 693.63961, "r": 547.16968, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 125, "text": "3.6.8", "bbox": {"l": 151.19717, "t": 706.119492, "r": 173.44592, "b": 715.332497, "coord_origin": "TOPLEFT"}}, {"id": 126, "text": "Demonstrating data access with a view and RCAC . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00812, "t": 706.119492, "r": 530.43628, "b": 715.332497, "coord_origin": "TOPLEFT"}}, {"id": 127, "text": "32", "bbox": {"l": 535.99847, "t": 706.119492, "r": 547.12286, "b": 715.332497, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {"3": {"label": "table", "id": 3, "page_no": 1, "cluster": {"id": 3, "label": "table", "bbox": {"l": 136.15103149414062, "t": 132.03030395507812, "r": 549.84723, "b": 715.6527709960938, "coord_origin": "TOPLEFT"}, "confidence": 0.9803490042686462, "cells": [{"id": 3, "text": "Notices", "bbox": {"l": 136.8, "t": 132.64862000000005, "r": 172.89404, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii", "bbox": {"l": 175.01952, "t": 132.64862000000005, "r": 547.18982, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Trademarks", "bbox": {"l": 136.79901, "t": 145.12847999999997, "r": 189.86537, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 195.39685, "t": 145.12847999999997, "r": 530.05121, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "viii", "bbox": {"l": 535.5827, "t": 145.12847999999997, "r": 547.18286, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "DB2 for i Center of Excellence", "bbox": {"l": 136.79901, "t": 167.62811, "r": 279.39731, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix", "bbox": {"l": 280.61942, "t": 167.62811, "r": 547.1908, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Preface", "bbox": {"l": 136.79901, "t": 190.12775, "r": 172.84424, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "bbox": {"l": 175.01852, "t": 190.12775, "r": 547.18286, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "bbox": {"l": 136.79803, "t": 202.60760000000005, "r": 547.18085, "b": 211.82061999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Now you can become a published author, too!", "bbox": {"l": 136.79803, "t": 215.14721999999995, "r": 339.18292, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.71411, "t": 215.14721999999995, "r": 530.00812, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "xiii", "bbox": {"l": 535.53925, "t": 215.14721999999995, "r": 547.13879, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 136.79803, "t": 227.62707999999998, "r": 529.99506, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "xiii", "bbox": {"l": 535.5495, "t": 227.62707999999998, "r": 547.19788, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Stay connected to IBM Redbooks", "bbox": {"l": 136.79807, "t": 240.10693000000003, "r": 284.02866, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 289.54449, "t": 240.10693000000003, "r": 529.48242, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "xiv", "bbox": {"l": 534.99829, "t": 240.10693000000003, "r": 547.12115, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Chapter 1. Securing and protecting IBM DB2 data", "bbox": {"l": 136.79807, "t": 262.60657000000003, "r": 373.17566, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 375.11798, "t": 262.60657000000003, "r": 536.09589, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "1", "bbox": {"l": 541.64685, "t": 262.60657000000003, "r": 547.19781, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "1.1", "bbox": {"l": 136.79808, "t": 274.60637999999994, "r": 150.88702, "b": 283.8194, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Security fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2", "bbox": {"l": 156.5226, "t": 274.60637999999994, "r": 549.84723, "b": 283.8194, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "1.2", "bbox": {"l": 136.79807, "t": 287.14606000000003, "r": 150.62746, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Current state of IBM i security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.15923, "t": 287.14606000000003, "r": 536.12933, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "2", "bbox": {"l": 541.66113, "t": 287.14606000000003, "r": 547.19287, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "1.3", "bbox": {"l": 136.79807, "t": 299.62595, "r": 150.84943, "b": 308.83893, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "DB2 for i security controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3", "bbox": {"l": 156.46996, "t": 299.62595, "r": 549.84723, "b": 308.83893, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "1.3.1", "bbox": {"l": 151.1972, "t": 312.1058300000001, "r": 173.38289, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Existing row and column control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.92932, "t": 312.1058300000001, "r": 536.05511, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "4", "bbox": {"l": 541.6015, "t": 312.1058300000001, "r": 547.14795, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "1.3.2", "bbox": {"l": 151.1972, "t": 324.64548, "r": 173.4189, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "New controls: Row and Column Access Control. . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97432, "t": 324.64548, "r": 536.08008, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "5", "bbox": {"l": 541.6355, "t": 324.64548, "r": 547.19092, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Chapter 2. Roles and separation of duties", "bbox": {"l": 136.79704, "t": 347.14511, "r": 336.82071, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 338.99701, "t": 347.14511, "r": 536.09088, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "7", "bbox": {"l": 541.64282, "t": 347.14511, "r": 547.19476, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "2.1", "bbox": {"l": 136.79704, "t": 359.14493, "r": 150.644, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18277, "t": 359.14493, "r": 536.12714, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "8", "bbox": {"l": 541.66589, "t": 359.14493, "r": 547.20471, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "2.1.1", "bbox": {"l": 151.1972, "t": 371.62482, "r": 173.60995, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "DDM and DRDA application server access: QIBM_DB_DDMDRDA . . . . . . . . . . .", "bbox": {"l": 176.41154, "t": 371.62482, "r": 535.9527, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "8", "bbox": {"l": 541.55585, "t": 371.62482, "r": 547.15906, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "2.1.2", "bbox": {"l": 151.1972, "t": 384.10470999999995, "r": 173.41664, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Toolbox application server access: QIBM_DB_ZDA. . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97151, "t": 384.10470999999995, "r": 536.04108, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "8", "bbox": {"l": 541.59595, "t": 384.10470999999995, "r": 547.15082, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "2.1.3", "bbox": {"l": 151.1972, "t": 396.64435, "r": 173.41859, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Database Administrator function: QIBM_DB_SQLADM . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97394, "t": 396.64435, "r": 536.07489, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "9", "bbox": {"l": 541.63025, "t": 396.64435, "r": 547.18561, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "2.1.4", "bbox": {"l": 151.1972, "t": 409.12424000000004, "r": 173.38629, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "Database Information function: QIBM_DB_SYSMON", "bbox": {"l": 178.93356, "t": 409.12424000000004, "r": 411.27048, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": ". . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 416.81775, "t": 409.12424000000004, "r": 536.08411, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "9", "bbox": {"l": 541.63135, "t": 409.12424000000004, "r": 547.17865, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "2.1.5", "bbox": {"l": 151.1972, "t": 421.60413, "r": 173.44926, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "Security Administrator function: QIBM_DB_SECADM . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01228, "t": 421.60413, "r": 536.03589, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "9", "bbox": {"l": 541.59894, "t": 421.60413, "r": 547.16193, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "2.1.6", "bbox": {"l": 151.1972, "t": 434.1437700000001, "r": 173.32208, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Change Function Usage CL command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8533, "t": 434.1437700000001, "r": 530.57318, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "10", "bbox": {"l": 536.10443, "t": 434.1437700000001, "r": 547.16687, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "2.1.7", "bbox": {"l": 151.1972, "t": 446.62366, "r": 173.35822, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "Verifying function usage IDs for RCAC with the FUNCTION_USAGE view . . . . .", "bbox": {"l": 178.89848, "t": 446.62366, "r": 530.53522, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "10", "bbox": {"l": 536.0755, "t": 446.62366, "r": 547.15601, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "2.2", "bbox": {"l": 136.79704, "t": 459.10355, "r": 150.85457, "b": 468.31653, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "Separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10", "bbox": {"l": 156.47758, "t": 459.10355, "r": 547.25659, "b": 468.31653, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Chapter 3. Row and Column Access Control", "bbox": {"l": 136.79703, "t": 481.60318, "r": 348.68503, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 350.09741, "t": 481.60318, "r": 530.53961, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "13", "bbox": {"l": 536.09167, "t": 481.60318, "r": 547.1958, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "3.1", "bbox": {"l": 136.79703, "t": 493.603, "r": 150.70105, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "Explanation of RCAC and the concept of access control . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26266, "t": 493.603, "r": 530.4809, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "14", "bbox": {"l": 536.04248, "t": 493.603, "r": 547.16571, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "3.1.1", "bbox": {"l": 151.19719, "t": 506.14264, "r": 173.35429, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "Row permission and column mask definitions", "bbox": {"l": 178.89357, "t": 506.14264, "r": 378.20786, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 383.74713, "t": 506.14264, "r": 530.5379, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "14", "bbox": {"l": 536.07721, "t": 506.14264, "r": 547.15576, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "3.1.2", "bbox": {"l": 151.19719, "t": 518.62253, "r": 173.44292, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "Enabling and activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00435, "t": 518.62253, "r": 530.43475, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "16", "bbox": {"l": 535.99622, "t": 518.62253, "r": 547.11908, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "3.2", "bbox": {"l": 136.79703, "t": 531.1621700000001, "r": 150.64432, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "Special registers and built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18323, "t": 531.1621700000001, "r": 530.52808, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "18", "bbox": {"l": 536.06702, "t": 531.1621700000001, "r": 547.14484, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "3.2.1", "bbox": {"l": 151.19719, "t": 543.64204, "r": 173.41321, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "Special registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.96722, "t": 543.64204, "r": 530.49786, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "18", "bbox": {"l": 536.05188, "t": 543.64204, "r": 547.15991, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 86, "text": "3.2.2", "bbox": {"l": 151.19719, "t": 556.12192, "r": 173.35269, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 87, "text": "Built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89156, "t": 556.12192, "r": 530.56024, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 88, "text": "19", "bbox": {"l": 536.09912, "t": 556.12192, "r": 547.17688, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 89, "text": "3.3", "bbox": {"l": 136.79703, "t": 568.66156, "r": 150.62514, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 90, "text": "VERIFY_GROUP_FOR_USER function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.15639, "t": 568.66156, "r": 530.53027, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 91, "text": "20", "bbox": {"l": 536.06152, "t": 568.66156, "r": 547.12402, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 92, "text": "3.4", "bbox": {"l": 136.79703, "t": 581.14143, "r": 150.63004, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 93, "text": "Establishing and controlling accessibility by using the RCAC rule text . . . . . . . . . . . . .", "bbox": {"l": 156.16325, "t": 581.14143, "r": 530.62994, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 94, "text": "21", "bbox": {"l": 536.16315, "t": 581.14143, "r": 547.22955, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 95, "text": "3.5", "bbox": {"l": 136.79701, "t": 593.62131, "r": 150.64413, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 96, "text": "SELECT, INSERT, and UPDATE behavior with RCAC", "bbox": {"l": 156.18298, "t": 593.62131, "r": 394.7818, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 97, "text": ". . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 400.32065, "t": 593.62131, "r": 530.48358, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 98, "text": "22", "bbox": {"l": 536.0224, "t": 593.62131, "r": 547.1001, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 99, "text": "3.6", "bbox": {"l": 136.79701, "t": 606.16095, "r": 150.6642, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 100, "text": "Human resources example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.21107, "t": 606.16095, "r": 530.56512, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 101, "text": "22", "bbox": {"l": 536.112, "t": 606.16095, "r": 547.20575, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 102, "text": "3.6.1", "bbox": {"l": 151.19717, "t": 618.64082, "r": 173.41692, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 103, "text": "Assigning the QIBM_DB_SECADM function ID to the consultants. . . . . . . . . . . .", "bbox": {"l": 178.97185, "t": 618.64082, "r": 530.49139, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 104, "text": "23", "bbox": {"l": 536.04633, "t": 618.64082, "r": 547.15619, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 105, "text": "3.6.2", "bbox": {"l": 151.19717, "t": 631.1206999999999, "r": 173.32271, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 106, "text": "Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8541, "t": 631.1206999999999, "r": 530.56458, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 107, "text": "23", "bbox": {"l": 536.09601, "t": 631.1206999999999, "r": 547.15875, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 108, "text": "3.6.3", "bbox": {"l": 151.19717, "t": 643.66034, "r": 173.32227, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 109, "text": "Demonstrating data access without RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85353, "t": 643.66034, "r": 530.55695, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 110, "text": "24", "bbox": {"l": 536.0882, "t": 643.66034, "r": 547.15076, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 111, "text": "3.6.4", "bbox": {"l": 151.19717, "t": 656.14021, "r": 173.35289, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 112, "text": "Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89182, "t": 656.14021, "r": 530.53412, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 113, "text": "25", "bbox": {"l": 536.073, "t": 656.14021, "r": 547.15088, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 114, "text": "3.6.5", "bbox": {"l": 151.19717, "t": 668.62009, "r": 173.35289, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 115, "text": "Defining and creating column masks", "bbox": {"l": 178.89182, "t": 668.62009, "r": 339.45105, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 116, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.98996, "t": 668.62009, "r": 530.54413, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 117, "text": "26", "bbox": {"l": 536.08301, "t": 668.62009, "r": 547.16089, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 118, "text": "3.6.6", "bbox": {"l": 151.19717, "t": 681.15973, "r": 173.38359, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 119, "text": "Activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.93019, "t": 681.15973, "r": 530.54102, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 120, "text": "28", "bbox": {"l": 536.08765, "t": 681.15973, "r": 547.18085, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 121, "text": "3.6.7", "bbox": {"l": 151.19717, "t": 693.63961, "r": 173.32332, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 122, "text": "Demonstrating data access with RCAC", "bbox": {"l": 178.85486, "t": 693.63961, "r": 350.80011, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 123, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 356.33163, "t": 693.63961, "r": 530.57507, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 124, "text": "29", "bbox": {"l": 536.10663, "t": 693.63961, "r": 547.16968, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 125, "text": "3.6.8", "bbox": {"l": 151.19717, "t": 706.119492, "r": 173.44592, "b": 715.332497, "coord_origin": "TOPLEFT"}}, {"id": 126, "text": "Demonstrating data access with a view and RCAC . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00812, "t": 706.119492, "r": 530.43628, "b": 715.332497, "coord_origin": "TOPLEFT"}}, {"id": 127, "text": "32", "bbox": {"l": 535.99847, "t": 706.119492, "r": 547.12286, "b": 715.332497, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl"], "num_rows": 43, "num_cols": 2, "table_cells": [{"bbox": {"l": 136.8, "t": 132.64862000000005, "r": 172.89404, "b": 141.86163, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Notices", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 175.01952, "t": 132.64862000000005, "r": 547.18982, "b": 141.86163, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79901, "t": 145.12847999999997, "r": 189.86537, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Trademarks", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 195.39685, "t": 145.12847999999997, "r": 547.18286, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79901, "t": 167.62811, "r": 279.39731, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "DB2 for i Center of Excellence", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 280.61942, "t": 167.62811, "r": 547.1908, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79901, "t": 190.12775, "r": 172.84424, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Preface", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 175.01852, "t": 190.12775, "r": 547.18286, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79803, "t": 202.60760000000005, "r": 547.18085, "b": 211.82061999999996, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79803, "t": 215.14721999999995, "r": 339.18292, "b": 224.36023, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Now you can become a published author, too!", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 344.71411, "t": 215.14721999999995, "r": 547.13879, "b": 224.36023, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79803, "t": 227.62707999999998, "r": 529.99506, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 535.5495, "t": 227.62707999999998, "r": 547.19788, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "xiii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79807, "t": 240.10693000000003, "r": 284.02866, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Stay connected to IBM Redbooks", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.54449, "t": 240.10693000000003, "r": 547.12115, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79807, "t": 262.60657000000003, "r": 536.09589, "b": 271.81958, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 1. Securing and protecting IBM DB2 data . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.64685, "t": 262.60657000000003, "r": 547.19781, "b": 271.81958, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "1", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79808, "t": 274.60637999999994, "r": 549.84723, "b": 283.8194, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.1 Security fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79807, "t": 287.14606000000003, "r": 536.12933, "b": 296.35904, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.2 Current state of IBM i security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.66113, "t": 287.14606000000003, "r": 547.19287, "b": 296.35904, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "2", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79807, "t": 299.62595, "r": 549.84723, "b": 308.83893, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.3 DB2 for i security controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 312.1058300000001, "r": 536.05511, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.3.1 Existing row and column control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.6015, "t": 312.1058300000001, "r": 547.14795, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "4", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 324.64548, "r": 536.08008, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.3.2 New controls: Row and Column Access Control. . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.6355, "t": 324.64548, "r": 547.19092, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "5", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79704, "t": 347.14511, "r": 536.09088, "b": 356.35809, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 2. Roles and separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.64282, "t": 347.14511, "r": 547.19476, "b": 356.35809, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "7", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79704, "t": 359.14493, "r": 536.12714, "b": 368.35791, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1 Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.66589, "t": 359.14493, "r": 547.20471, "b": 368.35791, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "8", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 371.62482, "r": 535.9527, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.1 DDM and DRDA application server access: QIBM_DB_DDMDRDA . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.55585, "t": 371.62482, "r": 547.15906, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "8", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 384.10470999999995, "r": 536.04108, "b": 393.31769, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.2 Toolbox application server access: QIBM_DB_ZDA. . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.59595, "t": 384.10470999999995, "r": 547.15082, "b": 393.31769, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "8", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 396.64435, "r": 536.07489, "b": 405.85733, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.3 Database Administrator function: QIBM_DB_SQLADM . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.63025, "t": 396.64435, "r": 547.18561, "b": 405.85733, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "9", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 409.12424000000004, "r": 411.27048, "b": 418.33722, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.4 Database Information function: QIBM_DB_SYSMON", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 416.81775, "t": 409.12424000000004, "r": 547.17865, "b": 418.33722, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . 9", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 421.60413, "r": 536.03589, "b": 430.81711, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.5 Security Administrator function: QIBM_DB_SECADM . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.59894, "t": 421.60413, "r": 547.16193, "b": 430.81711, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "9", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 434.1437700000001, "r": 530.57318, "b": 443.35675, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.6 Change Function Usage CL command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.10443, "t": 434.1437700000001, "r": 547.16687, "b": 443.35675, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 446.62366, "r": 530.53522, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 22, "end_row_offset_idx": 23, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.7 Verifying function usage IDs for RCAC with the FUNCTION_USAGE view . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0755, "t": 446.62366, "r": 547.15601, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 22, "end_row_offset_idx": 23, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79704, "t": 459.10355, "r": 547.25659, "b": 468.31653, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 23, "end_row_offset_idx": 24, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.2 Separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 481.60318, "r": 530.53961, "b": 490.81616, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 24, "end_row_offset_idx": 25, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 3. Row and Column Access Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.09167, "t": 481.60318, "r": 547.1958, "b": 490.81616, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 24, "end_row_offset_idx": 25, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "13", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 493.603, "r": 530.4809, "b": 502.81598, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 25, "end_row_offset_idx": 26, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.1 Explanation of RCAC and the concept of access control . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.04248, "t": 493.603, "r": 547.16571, "b": 502.81598, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 25, "end_row_offset_idx": 26, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "14", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19719, "t": 506.14264, "r": 378.20786, "b": 515.35562, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 26, "end_row_offset_idx": 27, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.1.1 Row permission and column mask definitions", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 383.74713, "t": 506.14264, "r": 547.15576, "b": 515.35562, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 26, "end_row_offset_idx": 27, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . 14", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19719, "t": 518.62253, "r": 530.43475, "b": 527.83551, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 27, "end_row_offset_idx": 28, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.1.2 Enabling and activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 535.99622, "t": 518.62253, "r": 547.11908, "b": 527.83551, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 27, "end_row_offset_idx": 28, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "16", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 531.1621700000001, "r": 530.52808, "b": 540.37517, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 28, "end_row_offset_idx": 29, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.2 Special registers and built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.06702, "t": 531.1621700000001, "r": 547.14484, "b": 540.37517, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 28, "end_row_offset_idx": 29, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "18", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19719, "t": 543.64204, "r": 530.49786, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 29, "end_row_offset_idx": 30, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.2.1 Special registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.05188, "t": 543.64204, "r": 547.15991, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 29, "end_row_offset_idx": 30, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "18", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19719, "t": 556.12192, "r": 530.56024, "b": 565.33492, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 30, "end_row_offset_idx": 31, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.2.2 Built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.09912, "t": 556.12192, "r": 547.17688, "b": 565.33492, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 30, "end_row_offset_idx": 31, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "19", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 568.66156, "r": 530.53027, "b": 577.87456, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 31, "end_row_offset_idx": 32, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.3 VERIFY_GROUP_FOR_USER function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.06152, "t": 568.66156, "r": 547.12402, "b": 577.87456, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 31, "end_row_offset_idx": 32, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "20", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 581.14143, "r": 530.62994, "b": 590.35443, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 32, "end_row_offset_idx": 33, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.4 Establishing and controlling accessibility by using the RCAC rule text . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.16315, "t": 581.14143, "r": 547.22955, "b": 590.35443, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 32, "end_row_offset_idx": 33, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "21", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79701, "t": 593.62131, "r": 394.7818, "b": 602.8343, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 34, "end_row_offset_idx": 35, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.5 SELECT, INSERT, and UPDATE behavior with RCAC", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 400.32065, "t": 593.62131, "r": 547.1001, "b": 602.8343, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 33, "end_row_offset_idx": 34, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . 22", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 618.64082, "r": 530.49139, "b": 627.85382, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 35, "end_row_offset_idx": 36, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.1 Assigning the QIBM_DB_SECADM function ID to the consultants. . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.04633, "t": 618.64082, "r": 547.15619, "b": 627.85382, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 35, "end_row_offset_idx": 36, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "23", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 631.1206999999999, "r": 530.56458, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 36, "end_row_offset_idx": 37, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.2 Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.09601, "t": 631.1206999999999, "r": 547.15875, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 36, "end_row_offset_idx": 37, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "23", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 643.66034, "r": 530.55695, "b": 652.87334, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 37, "end_row_offset_idx": 38, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.3 Demonstrating data access without RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0882, "t": 643.66034, "r": 547.15076, "b": 652.87334, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 37, "end_row_offset_idx": 38, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "24", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 656.14021, "r": 530.53412, "b": 665.35321, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 38, "end_row_offset_idx": 39, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.4 Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.073, "t": 656.14021, "r": 547.15088, "b": 665.35321, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 38, "end_row_offset_idx": 39, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "25", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 668.62009, "r": 339.45105, "b": 677.83309, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 39, "end_row_offset_idx": 40, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.5 Defining and creating column masks", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 344.98996, "t": 668.62009, "r": 547.16089, "b": 677.83309, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 39, "end_row_offset_idx": 40, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 681.15973, "r": 530.54102, "b": 690.37273, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 40, "end_row_offset_idx": 41, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.6 Activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.08765, "t": 681.15973, "r": 547.18085, "b": 690.37273, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 40, "end_row_offset_idx": 41, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "28", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 693.63961, "r": 530.57507, "b": 702.852615, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 41, "end_row_offset_idx": 42, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.7 Demonstrating data access with RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.10663, "t": 693.63961, "r": 547.16968, "b": 702.852615, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 41, "end_row_offset_idx": 42, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "29", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 706.119492, "r": 530.43628, "b": 715.332497, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 42, "end_row_offset_idx": 43, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.8 Demonstrating data access with a view and RCAC . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 535.99847, "t": 706.119492, "r": 547.12286, "b": 715.332497, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 42, "end_row_offset_idx": 43, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "32", "column_header": false, "row_header": false, "row_section": false}]}}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 1, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.751060485839844, "t": 754.6969604492188, "r": 257.24335, "b": 764.1015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9473134875297546, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 1, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 538.3257446289062, "t": 754.0830688476562, "r": 547.25928, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.892595112323761, "cells": [{"id": 1, "text": "iii", "bbox": {"l": 538.85999, "t": 754.848721, "r": 547.25928, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "iii"}, {"label": "section_header", "id": 2, "page_no": 1, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.6857681274414, "t": 73.01808166503906, "r": 168.73441, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9508246779441833, "cells": [{"id": 2, "text": "Contents", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 168.73441, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Contents"}, {"label": "table", "id": 3, "page_no": 1, "cluster": {"id": 3, "label": "table", "bbox": {"l": 136.15103149414062, "t": 132.03030395507812, "r": 549.84723, "b": 715.6527709960938, "coord_origin": "TOPLEFT"}, "confidence": 0.9803490042686462, "cells": [{"id": 3, "text": "Notices", "bbox": {"l": 136.8, "t": 132.64862000000005, "r": 172.89404, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii", "bbox": {"l": 175.01952, "t": 132.64862000000005, "r": 547.18982, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Trademarks", "bbox": {"l": 136.79901, "t": 145.12847999999997, "r": 189.86537, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 195.39685, "t": 145.12847999999997, "r": 530.05121, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "viii", "bbox": {"l": 535.5827, "t": 145.12847999999997, "r": 547.18286, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "DB2 for i Center of Excellence", "bbox": {"l": 136.79901, "t": 167.62811, "r": 279.39731, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix", "bbox": {"l": 280.61942, "t": 167.62811, "r": 547.1908, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Preface", "bbox": {"l": 136.79901, "t": 190.12775, "r": 172.84424, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "bbox": {"l": 175.01852, "t": 190.12775, "r": 547.18286, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "bbox": {"l": 136.79803, "t": 202.60760000000005, "r": 547.18085, "b": 211.82061999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Now you can become a published author, too!", "bbox": {"l": 136.79803, "t": 215.14721999999995, "r": 339.18292, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.71411, "t": 215.14721999999995, "r": 530.00812, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "xiii", "bbox": {"l": 535.53925, "t": 215.14721999999995, "r": 547.13879, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 136.79803, "t": 227.62707999999998, "r": 529.99506, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "xiii", "bbox": {"l": 535.5495, "t": 227.62707999999998, "r": 547.19788, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Stay connected to IBM Redbooks", "bbox": {"l": 136.79807, "t": 240.10693000000003, "r": 284.02866, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 289.54449, "t": 240.10693000000003, "r": 529.48242, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "xiv", "bbox": {"l": 534.99829, "t": 240.10693000000003, "r": 547.12115, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Chapter 1. Securing and protecting IBM DB2 data", "bbox": {"l": 136.79807, "t": 262.60657000000003, "r": 373.17566, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 375.11798, "t": 262.60657000000003, "r": 536.09589, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "1", "bbox": {"l": 541.64685, "t": 262.60657000000003, "r": 547.19781, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "1.1", "bbox": {"l": 136.79808, "t": 274.60637999999994, "r": 150.88702, "b": 283.8194, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Security fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2", "bbox": {"l": 156.5226, "t": 274.60637999999994, "r": 549.84723, "b": 283.8194, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "1.2", "bbox": {"l": 136.79807, "t": 287.14606000000003, "r": 150.62746, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Current state of IBM i security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.15923, "t": 287.14606000000003, "r": 536.12933, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "2", "bbox": {"l": 541.66113, "t": 287.14606000000003, "r": 547.19287, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "1.3", "bbox": {"l": 136.79807, "t": 299.62595, "r": 150.84943, "b": 308.83893, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "DB2 for i security controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3", "bbox": {"l": 156.46996, "t": 299.62595, "r": 549.84723, "b": 308.83893, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "1.3.1", "bbox": {"l": 151.1972, "t": 312.1058300000001, "r": 173.38289, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Existing row and column control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.92932, "t": 312.1058300000001, "r": 536.05511, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "4", "bbox": {"l": 541.6015, "t": 312.1058300000001, "r": 547.14795, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "1.3.2", "bbox": {"l": 151.1972, "t": 324.64548, "r": 173.4189, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "New controls: Row and Column Access Control. . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97432, "t": 324.64548, "r": 536.08008, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "5", "bbox": {"l": 541.6355, "t": 324.64548, "r": 547.19092, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Chapter 2. Roles and separation of duties", "bbox": {"l": 136.79704, "t": 347.14511, "r": 336.82071, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 338.99701, "t": 347.14511, "r": 536.09088, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "7", "bbox": {"l": 541.64282, "t": 347.14511, "r": 547.19476, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "2.1", "bbox": {"l": 136.79704, "t": 359.14493, "r": 150.644, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18277, "t": 359.14493, "r": 536.12714, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "8", "bbox": {"l": 541.66589, "t": 359.14493, "r": 547.20471, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "2.1.1", "bbox": {"l": 151.1972, "t": 371.62482, "r": 173.60995, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "DDM and DRDA application server access: QIBM_DB_DDMDRDA . . . . . . . . . . .", "bbox": {"l": 176.41154, "t": 371.62482, "r": 535.9527, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "8", "bbox": {"l": 541.55585, "t": 371.62482, "r": 547.15906, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "2.1.2", "bbox": {"l": 151.1972, "t": 384.10470999999995, "r": 173.41664, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Toolbox application server access: QIBM_DB_ZDA. . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97151, "t": 384.10470999999995, "r": 536.04108, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "8", "bbox": {"l": 541.59595, "t": 384.10470999999995, "r": 547.15082, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "2.1.3", "bbox": {"l": 151.1972, "t": 396.64435, "r": 173.41859, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Database Administrator function: QIBM_DB_SQLADM . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97394, "t": 396.64435, "r": 536.07489, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "9", "bbox": {"l": 541.63025, "t": 396.64435, "r": 547.18561, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "2.1.4", "bbox": {"l": 151.1972, "t": 409.12424000000004, "r": 173.38629, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "Database Information function: QIBM_DB_SYSMON", "bbox": {"l": 178.93356, "t": 409.12424000000004, "r": 411.27048, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": ". . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 416.81775, "t": 409.12424000000004, "r": 536.08411, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "9", "bbox": {"l": 541.63135, "t": 409.12424000000004, "r": 547.17865, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "2.1.5", "bbox": {"l": 151.1972, "t": 421.60413, "r": 173.44926, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "Security Administrator function: QIBM_DB_SECADM . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01228, "t": 421.60413, "r": 536.03589, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "9", "bbox": {"l": 541.59894, "t": 421.60413, "r": 547.16193, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "2.1.6", "bbox": {"l": 151.1972, "t": 434.1437700000001, "r": 173.32208, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Change Function Usage CL command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8533, "t": 434.1437700000001, "r": 530.57318, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "10", "bbox": {"l": 536.10443, "t": 434.1437700000001, "r": 547.16687, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "2.1.7", "bbox": {"l": 151.1972, "t": 446.62366, "r": 173.35822, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "Verifying function usage IDs for RCAC with the FUNCTION_USAGE view . . . . .", "bbox": {"l": 178.89848, "t": 446.62366, "r": 530.53522, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "10", "bbox": {"l": 536.0755, "t": 446.62366, "r": 547.15601, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "2.2", "bbox": {"l": 136.79704, "t": 459.10355, "r": 150.85457, "b": 468.31653, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "Separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10", "bbox": {"l": 156.47758, "t": 459.10355, "r": 547.25659, "b": 468.31653, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Chapter 3. Row and Column Access Control", "bbox": {"l": 136.79703, "t": 481.60318, "r": 348.68503, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 350.09741, "t": 481.60318, "r": 530.53961, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "13", "bbox": {"l": 536.09167, "t": 481.60318, "r": 547.1958, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "3.1", "bbox": {"l": 136.79703, "t": 493.603, "r": 150.70105, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "Explanation of RCAC and the concept of access control . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26266, "t": 493.603, "r": 530.4809, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "14", "bbox": {"l": 536.04248, "t": 493.603, "r": 547.16571, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "3.1.1", "bbox": {"l": 151.19719, "t": 506.14264, "r": 173.35429, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "Row permission and column mask definitions", "bbox": {"l": 178.89357, "t": 506.14264, "r": 378.20786, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 383.74713, "t": 506.14264, "r": 530.5379, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "14", "bbox": {"l": 536.07721, "t": 506.14264, "r": 547.15576, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "3.1.2", "bbox": {"l": 151.19719, "t": 518.62253, "r": 173.44292, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "Enabling and activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00435, "t": 518.62253, "r": 530.43475, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "16", "bbox": {"l": 535.99622, "t": 518.62253, "r": 547.11908, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "3.2", "bbox": {"l": 136.79703, "t": 531.1621700000001, "r": 150.64432, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "Special registers and built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18323, "t": 531.1621700000001, "r": 530.52808, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "18", "bbox": {"l": 536.06702, "t": 531.1621700000001, "r": 547.14484, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "3.2.1", "bbox": {"l": 151.19719, "t": 543.64204, "r": 173.41321, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "Special registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.96722, "t": 543.64204, "r": 530.49786, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "18", "bbox": {"l": 536.05188, "t": 543.64204, "r": 547.15991, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 86, "text": "3.2.2", "bbox": {"l": 151.19719, "t": 556.12192, "r": 173.35269, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 87, "text": "Built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89156, "t": 556.12192, "r": 530.56024, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 88, "text": "19", "bbox": {"l": 536.09912, "t": 556.12192, "r": 547.17688, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 89, "text": "3.3", "bbox": {"l": 136.79703, "t": 568.66156, "r": 150.62514, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 90, "text": "VERIFY_GROUP_FOR_USER function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.15639, "t": 568.66156, "r": 530.53027, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 91, "text": "20", "bbox": {"l": 536.06152, "t": 568.66156, "r": 547.12402, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 92, "text": "3.4", "bbox": {"l": 136.79703, "t": 581.14143, "r": 150.63004, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 93, "text": "Establishing and controlling accessibility by using the RCAC rule text . . . . . . . . . . . . .", "bbox": {"l": 156.16325, "t": 581.14143, "r": 530.62994, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 94, "text": "21", "bbox": {"l": 536.16315, "t": 581.14143, "r": 547.22955, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 95, "text": "3.5", "bbox": {"l": 136.79701, "t": 593.62131, "r": 150.64413, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 96, "text": "SELECT, INSERT, and UPDATE behavior with RCAC", "bbox": {"l": 156.18298, "t": 593.62131, "r": 394.7818, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 97, "text": ". . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 400.32065, "t": 593.62131, "r": 530.48358, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 98, "text": "22", "bbox": {"l": 536.0224, "t": 593.62131, "r": 547.1001, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 99, "text": "3.6", "bbox": {"l": 136.79701, "t": 606.16095, "r": 150.6642, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 100, "text": "Human resources example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.21107, "t": 606.16095, "r": 530.56512, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 101, "text": "22", "bbox": {"l": 536.112, "t": 606.16095, "r": 547.20575, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 102, "text": "3.6.1", "bbox": {"l": 151.19717, "t": 618.64082, "r": 173.41692, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 103, "text": "Assigning the QIBM_DB_SECADM function ID to the consultants. . . . . . . . . . . .", "bbox": {"l": 178.97185, "t": 618.64082, "r": 530.49139, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 104, "text": "23", "bbox": {"l": 536.04633, "t": 618.64082, "r": 547.15619, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 105, "text": "3.6.2", "bbox": {"l": 151.19717, "t": 631.1206999999999, "r": 173.32271, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 106, "text": "Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8541, "t": 631.1206999999999, "r": 530.56458, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 107, "text": "23", "bbox": {"l": 536.09601, "t": 631.1206999999999, "r": 547.15875, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 108, "text": "3.6.3", "bbox": {"l": 151.19717, "t": 643.66034, "r": 173.32227, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 109, "text": "Demonstrating data access without RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85353, "t": 643.66034, "r": 530.55695, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 110, "text": "24", "bbox": {"l": 536.0882, "t": 643.66034, "r": 547.15076, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 111, "text": "3.6.4", "bbox": {"l": 151.19717, "t": 656.14021, "r": 173.35289, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 112, "text": "Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89182, "t": 656.14021, "r": 530.53412, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 113, "text": "25", "bbox": {"l": 536.073, "t": 656.14021, "r": 547.15088, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 114, "text": "3.6.5", "bbox": {"l": 151.19717, "t": 668.62009, "r": 173.35289, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 115, "text": "Defining and creating column masks", "bbox": {"l": 178.89182, "t": 668.62009, "r": 339.45105, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 116, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.98996, "t": 668.62009, "r": 530.54413, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 117, "text": "26", "bbox": {"l": 536.08301, "t": 668.62009, "r": 547.16089, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 118, "text": "3.6.6", "bbox": {"l": 151.19717, "t": 681.15973, "r": 173.38359, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 119, "text": "Activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.93019, "t": 681.15973, "r": 530.54102, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 120, "text": "28", "bbox": {"l": 536.08765, "t": 681.15973, "r": 547.18085, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 121, "text": "3.6.7", "bbox": {"l": 151.19717, "t": 693.63961, "r": 173.32332, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 122, "text": "Demonstrating data access with RCAC", "bbox": {"l": 178.85486, "t": 693.63961, "r": 350.80011, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 123, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 356.33163, "t": 693.63961, "r": 530.57507, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 124, "text": "29", "bbox": {"l": 536.10663, "t": 693.63961, "r": 547.16968, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 125, "text": "3.6.8", "bbox": {"l": 151.19717, "t": 706.119492, "r": 173.44592, "b": 715.332497, "coord_origin": "TOPLEFT"}}, {"id": 126, "text": "Demonstrating data access with a view and RCAC . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00812, "t": 706.119492, "r": 530.43628, "b": 715.332497, "coord_origin": "TOPLEFT"}}, {"id": 127, "text": "32", "bbox": {"l": 535.99847, "t": 706.119492, "r": 547.12286, "b": 715.332497, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl"], "num_rows": 43, "num_cols": 2, "table_cells": [{"bbox": {"l": 136.8, "t": 132.64862000000005, "r": 172.89404, "b": 141.86163, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Notices", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 175.01952, "t": 132.64862000000005, "r": 547.18982, "b": 141.86163, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79901, "t": 145.12847999999997, "r": 189.86537, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Trademarks", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 195.39685, "t": 145.12847999999997, "r": 547.18286, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79901, "t": 167.62811, "r": 279.39731, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "DB2 for i Center of Excellence", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 280.61942, "t": 167.62811, "r": 547.1908, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79901, "t": 190.12775, "r": 172.84424, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Preface", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 175.01852, "t": 190.12775, "r": 547.18286, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79803, "t": 202.60760000000005, "r": 547.18085, "b": 211.82061999999996, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79803, "t": 215.14721999999995, "r": 339.18292, "b": 224.36023, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Now you can become a published author, too!", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 344.71411, "t": 215.14721999999995, "r": 547.13879, "b": 224.36023, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79803, "t": 227.62707999999998, "r": 529.99506, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 535.5495, "t": 227.62707999999998, "r": 547.19788, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "xiii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79807, "t": 240.10693000000003, "r": 284.02866, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Stay connected to IBM Redbooks", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.54449, "t": 240.10693000000003, "r": 547.12115, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79807, "t": 262.60657000000003, "r": 536.09589, "b": 271.81958, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 1. Securing and protecting IBM DB2 data . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.64685, "t": 262.60657000000003, "r": 547.19781, "b": 271.81958, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "1", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79808, "t": 274.60637999999994, "r": 549.84723, "b": 283.8194, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.1 Security fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79807, "t": 287.14606000000003, "r": 536.12933, "b": 296.35904, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.2 Current state of IBM i security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.66113, "t": 287.14606000000003, "r": 547.19287, "b": 296.35904, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "2", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79807, "t": 299.62595, "r": 549.84723, "b": 308.83893, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.3 DB2 for i security controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 312.1058300000001, "r": 536.05511, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.3.1 Existing row and column control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.6015, "t": 312.1058300000001, "r": 547.14795, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "4", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 324.64548, "r": 536.08008, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.3.2 New controls: Row and Column Access Control. . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.6355, "t": 324.64548, "r": 547.19092, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "5", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79704, "t": 347.14511, "r": 536.09088, "b": 356.35809, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 2. Roles and separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.64282, "t": 347.14511, "r": 547.19476, "b": 356.35809, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "7", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79704, "t": 359.14493, "r": 536.12714, "b": 368.35791, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1 Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.66589, "t": 359.14493, "r": 547.20471, "b": 368.35791, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "8", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 371.62482, "r": 535.9527, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.1 DDM and DRDA application server access: QIBM_DB_DDMDRDA . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.55585, "t": 371.62482, "r": 547.15906, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "8", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 384.10470999999995, "r": 536.04108, "b": 393.31769, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.2 Toolbox application server access: QIBM_DB_ZDA. . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.59595, "t": 384.10470999999995, "r": 547.15082, "b": 393.31769, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "8", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 396.64435, "r": 536.07489, "b": 405.85733, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.3 Database Administrator function: QIBM_DB_SQLADM . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.63025, "t": 396.64435, "r": 547.18561, "b": 405.85733, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "9", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 409.12424000000004, "r": 411.27048, "b": 418.33722, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.4 Database Information function: QIBM_DB_SYSMON", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 416.81775, "t": 409.12424000000004, "r": 547.17865, "b": 418.33722, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . 9", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 421.60413, "r": 536.03589, "b": 430.81711, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.5 Security Administrator function: QIBM_DB_SECADM . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.59894, "t": 421.60413, "r": 547.16193, "b": 430.81711, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "9", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 434.1437700000001, "r": 530.57318, "b": 443.35675, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.6 Change Function Usage CL command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.10443, "t": 434.1437700000001, "r": 547.16687, "b": 443.35675, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 446.62366, "r": 530.53522, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 22, "end_row_offset_idx": 23, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.7 Verifying function usage IDs for RCAC with the FUNCTION_USAGE view . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0755, "t": 446.62366, "r": 547.15601, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 22, "end_row_offset_idx": 23, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79704, "t": 459.10355, "r": 547.25659, "b": 468.31653, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 23, "end_row_offset_idx": 24, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.2 Separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 481.60318, "r": 530.53961, "b": 490.81616, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 24, "end_row_offset_idx": 25, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 3. Row and Column Access Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.09167, "t": 481.60318, "r": 547.1958, "b": 490.81616, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 24, "end_row_offset_idx": 25, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "13", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 493.603, "r": 530.4809, "b": 502.81598, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 25, "end_row_offset_idx": 26, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.1 Explanation of RCAC and the concept of access control . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.04248, "t": 493.603, "r": 547.16571, "b": 502.81598, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 25, "end_row_offset_idx": 26, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "14", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19719, "t": 506.14264, "r": 378.20786, "b": 515.35562, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 26, "end_row_offset_idx": 27, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.1.1 Row permission and column mask definitions", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 383.74713, "t": 506.14264, "r": 547.15576, "b": 515.35562, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 26, "end_row_offset_idx": 27, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . 14", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19719, "t": 518.62253, "r": 530.43475, "b": 527.83551, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 27, "end_row_offset_idx": 28, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.1.2 Enabling and activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 535.99622, "t": 518.62253, "r": 547.11908, "b": 527.83551, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 27, "end_row_offset_idx": 28, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "16", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 531.1621700000001, "r": 530.52808, "b": 540.37517, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 28, "end_row_offset_idx": 29, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.2 Special registers and built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.06702, "t": 531.1621700000001, "r": 547.14484, "b": 540.37517, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 28, "end_row_offset_idx": 29, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "18", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19719, "t": 543.64204, "r": 530.49786, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 29, "end_row_offset_idx": 30, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.2.1 Special registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.05188, "t": 543.64204, "r": 547.15991, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 29, "end_row_offset_idx": 30, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "18", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19719, "t": 556.12192, "r": 530.56024, "b": 565.33492, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 30, "end_row_offset_idx": 31, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.2.2 Built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.09912, "t": 556.12192, "r": 547.17688, "b": 565.33492, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 30, "end_row_offset_idx": 31, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "19", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 568.66156, "r": 530.53027, "b": 577.87456, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 31, "end_row_offset_idx": 32, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.3 VERIFY_GROUP_FOR_USER function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.06152, "t": 568.66156, "r": 547.12402, "b": 577.87456, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 31, "end_row_offset_idx": 32, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "20", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 581.14143, "r": 530.62994, "b": 590.35443, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 32, "end_row_offset_idx": 33, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.4 Establishing and controlling accessibility by using the RCAC rule text . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.16315, "t": 581.14143, "r": 547.22955, "b": 590.35443, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 32, "end_row_offset_idx": 33, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "21", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79701, "t": 593.62131, "r": 394.7818, "b": 602.8343, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 34, "end_row_offset_idx": 35, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.5 SELECT, INSERT, and UPDATE behavior with RCAC", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 400.32065, "t": 593.62131, "r": 547.1001, "b": 602.8343, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 33, "end_row_offset_idx": 34, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . 22", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 618.64082, "r": 530.49139, "b": 627.85382, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 35, "end_row_offset_idx": 36, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.1 Assigning the QIBM_DB_SECADM function ID to the consultants. . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.04633, "t": 618.64082, "r": 547.15619, "b": 627.85382, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 35, "end_row_offset_idx": 36, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "23", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 631.1206999999999, "r": 530.56458, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 36, "end_row_offset_idx": 37, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.2 Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.09601, "t": 631.1206999999999, "r": 547.15875, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 36, "end_row_offset_idx": 37, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "23", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 643.66034, "r": 530.55695, "b": 652.87334, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 37, "end_row_offset_idx": 38, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.3 Demonstrating data access without RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0882, "t": 643.66034, "r": 547.15076, "b": 652.87334, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 37, "end_row_offset_idx": 38, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "24", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 656.14021, "r": 530.53412, "b": 665.35321, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 38, "end_row_offset_idx": 39, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.4 Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.073, "t": 656.14021, "r": 547.15088, "b": 665.35321, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 38, "end_row_offset_idx": 39, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "25", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 668.62009, "r": 339.45105, "b": 677.83309, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 39, "end_row_offset_idx": 40, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.5 Defining and creating column masks", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 344.98996, "t": 668.62009, "r": 547.16089, "b": 677.83309, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 39, "end_row_offset_idx": 40, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 681.15973, "r": 530.54102, "b": 690.37273, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 40, "end_row_offset_idx": 41, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.6 Activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.08765, "t": 681.15973, "r": 547.18085, "b": 690.37273, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 40, "end_row_offset_idx": 41, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "28", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 693.63961, "r": 530.57507, "b": 702.852615, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 41, "end_row_offset_idx": 42, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.7 Demonstrating data access with RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.10663, "t": 693.63961, "r": 547.16968, "b": 702.852615, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 41, "end_row_offset_idx": 42, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "29", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 706.119492, "r": 530.43628, "b": 715.332497, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 42, "end_row_offset_idx": 43, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.8 Demonstrating data access with a view and RCAC . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 535.99847, "t": 706.119492, "r": 547.12286, "b": 715.332497, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 42, "end_row_offset_idx": 43, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "32", "column_header": false, "row_header": false, "row_section": false}]}], "body": [{"label": "section_header", "id": 2, "page_no": 1, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.6857681274414, "t": 73.01808166503906, "r": 168.73441, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9508246779441833, "cells": [{"id": 2, "text": "Contents", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 168.73441, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Contents"}, {"label": "table", "id": 3, "page_no": 1, "cluster": {"id": 3, "label": "table", "bbox": {"l": 136.15103149414062, "t": 132.03030395507812, "r": 549.84723, "b": 715.6527709960938, "coord_origin": "TOPLEFT"}, "confidence": 0.9803490042686462, "cells": [{"id": 3, "text": "Notices", "bbox": {"l": 136.8, "t": 132.64862000000005, "r": 172.89404, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii", "bbox": {"l": 175.01952, "t": 132.64862000000005, "r": 547.18982, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Trademarks", "bbox": {"l": 136.79901, "t": 145.12847999999997, "r": 189.86537, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 195.39685, "t": 145.12847999999997, "r": 530.05121, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "viii", "bbox": {"l": 535.5827, "t": 145.12847999999997, "r": 547.18286, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "DB2 for i Center of Excellence", "bbox": {"l": 136.79901, "t": 167.62811, "r": 279.39731, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix", "bbox": {"l": 280.61942, "t": 167.62811, "r": 547.1908, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Preface", "bbox": {"l": 136.79901, "t": 190.12775, "r": 172.84424, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "bbox": {"l": 175.01852, "t": 190.12775, "r": 547.18286, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "bbox": {"l": 136.79803, "t": 202.60760000000005, "r": 547.18085, "b": 211.82061999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Now you can become a published author, too!", "bbox": {"l": 136.79803, "t": 215.14721999999995, "r": 339.18292, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.71411, "t": 215.14721999999995, "r": 530.00812, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "xiii", "bbox": {"l": 535.53925, "t": 215.14721999999995, "r": 547.13879, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 136.79803, "t": 227.62707999999998, "r": 529.99506, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "xiii", "bbox": {"l": 535.5495, "t": 227.62707999999998, "r": 547.19788, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Stay connected to IBM Redbooks", "bbox": {"l": 136.79807, "t": 240.10693000000003, "r": 284.02866, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 289.54449, "t": 240.10693000000003, "r": 529.48242, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "xiv", "bbox": {"l": 534.99829, "t": 240.10693000000003, "r": 547.12115, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Chapter 1. Securing and protecting IBM DB2 data", "bbox": {"l": 136.79807, "t": 262.60657000000003, "r": 373.17566, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 375.11798, "t": 262.60657000000003, "r": 536.09589, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "1", "bbox": {"l": 541.64685, "t": 262.60657000000003, "r": 547.19781, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "1.1", "bbox": {"l": 136.79808, "t": 274.60637999999994, "r": 150.88702, "b": 283.8194, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Security fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2", "bbox": {"l": 156.5226, "t": 274.60637999999994, "r": 549.84723, "b": 283.8194, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "1.2", "bbox": {"l": 136.79807, "t": 287.14606000000003, "r": 150.62746, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Current state of IBM i security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.15923, "t": 287.14606000000003, "r": 536.12933, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "2", "bbox": {"l": 541.66113, "t": 287.14606000000003, "r": 547.19287, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "1.3", "bbox": {"l": 136.79807, "t": 299.62595, "r": 150.84943, "b": 308.83893, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "DB2 for i security controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3", "bbox": {"l": 156.46996, "t": 299.62595, "r": 549.84723, "b": 308.83893, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "1.3.1", "bbox": {"l": 151.1972, "t": 312.1058300000001, "r": 173.38289, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Existing row and column control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.92932, "t": 312.1058300000001, "r": 536.05511, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "4", "bbox": {"l": 541.6015, "t": 312.1058300000001, "r": 547.14795, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "1.3.2", "bbox": {"l": 151.1972, "t": 324.64548, "r": 173.4189, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "New controls: Row and Column Access Control. . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97432, "t": 324.64548, "r": 536.08008, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "5", "bbox": {"l": 541.6355, "t": 324.64548, "r": 547.19092, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Chapter 2. Roles and separation of duties", "bbox": {"l": 136.79704, "t": 347.14511, "r": 336.82071, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 338.99701, "t": 347.14511, "r": 536.09088, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "7", "bbox": {"l": 541.64282, "t": 347.14511, "r": 547.19476, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "2.1", "bbox": {"l": 136.79704, "t": 359.14493, "r": 150.644, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18277, "t": 359.14493, "r": 536.12714, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "8", "bbox": {"l": 541.66589, "t": 359.14493, "r": 547.20471, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "2.1.1", "bbox": {"l": 151.1972, "t": 371.62482, "r": 173.60995, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "DDM and DRDA application server access: QIBM_DB_DDMDRDA . . . . . . . . . . .", "bbox": {"l": 176.41154, "t": 371.62482, "r": 535.9527, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "8", "bbox": {"l": 541.55585, "t": 371.62482, "r": 547.15906, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "2.1.2", "bbox": {"l": 151.1972, "t": 384.10470999999995, "r": 173.41664, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Toolbox application server access: QIBM_DB_ZDA. . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97151, "t": 384.10470999999995, "r": 536.04108, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "8", "bbox": {"l": 541.59595, "t": 384.10470999999995, "r": 547.15082, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "2.1.3", "bbox": {"l": 151.1972, "t": 396.64435, "r": 173.41859, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Database Administrator function: QIBM_DB_SQLADM . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97394, "t": 396.64435, "r": 536.07489, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "9", "bbox": {"l": 541.63025, "t": 396.64435, "r": 547.18561, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "2.1.4", "bbox": {"l": 151.1972, "t": 409.12424000000004, "r": 173.38629, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "Database Information function: QIBM_DB_SYSMON", "bbox": {"l": 178.93356, "t": 409.12424000000004, "r": 411.27048, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": ". . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 416.81775, "t": 409.12424000000004, "r": 536.08411, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "9", "bbox": {"l": 541.63135, "t": 409.12424000000004, "r": 547.17865, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "2.1.5", "bbox": {"l": 151.1972, "t": 421.60413, "r": 173.44926, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "Security Administrator function: QIBM_DB_SECADM . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01228, "t": 421.60413, "r": 536.03589, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "9", "bbox": {"l": 541.59894, "t": 421.60413, "r": 547.16193, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "2.1.6", "bbox": {"l": 151.1972, "t": 434.1437700000001, "r": 173.32208, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Change Function Usage CL command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8533, "t": 434.1437700000001, "r": 530.57318, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "10", "bbox": {"l": 536.10443, "t": 434.1437700000001, "r": 547.16687, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "2.1.7", "bbox": {"l": 151.1972, "t": 446.62366, "r": 173.35822, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "Verifying function usage IDs for RCAC with the FUNCTION_USAGE view . . . . .", "bbox": {"l": 178.89848, "t": 446.62366, "r": 530.53522, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "10", "bbox": {"l": 536.0755, "t": 446.62366, "r": 547.15601, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "2.2", "bbox": {"l": 136.79704, "t": 459.10355, "r": 150.85457, "b": 468.31653, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "Separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10", "bbox": {"l": 156.47758, "t": 459.10355, "r": 547.25659, "b": 468.31653, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Chapter 3. Row and Column Access Control", "bbox": {"l": 136.79703, "t": 481.60318, "r": 348.68503, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 350.09741, "t": 481.60318, "r": 530.53961, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "13", "bbox": {"l": 536.09167, "t": 481.60318, "r": 547.1958, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "3.1", "bbox": {"l": 136.79703, "t": 493.603, "r": 150.70105, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "Explanation of RCAC and the concept of access control . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26266, "t": 493.603, "r": 530.4809, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "14", "bbox": {"l": 536.04248, "t": 493.603, "r": 547.16571, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "3.1.1", "bbox": {"l": 151.19719, "t": 506.14264, "r": 173.35429, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "Row permission and column mask definitions", "bbox": {"l": 178.89357, "t": 506.14264, "r": 378.20786, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 383.74713, "t": 506.14264, "r": 530.5379, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "14", "bbox": {"l": 536.07721, "t": 506.14264, "r": 547.15576, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "3.1.2", "bbox": {"l": 151.19719, "t": 518.62253, "r": 173.44292, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "Enabling and activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00435, "t": 518.62253, "r": 530.43475, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "16", "bbox": {"l": 535.99622, "t": 518.62253, "r": 547.11908, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "3.2", "bbox": {"l": 136.79703, "t": 531.1621700000001, "r": 150.64432, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "Special registers and built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18323, "t": 531.1621700000001, "r": 530.52808, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "18", "bbox": {"l": 536.06702, "t": 531.1621700000001, "r": 547.14484, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "3.2.1", "bbox": {"l": 151.19719, "t": 543.64204, "r": 173.41321, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "Special registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.96722, "t": 543.64204, "r": 530.49786, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "18", "bbox": {"l": 536.05188, "t": 543.64204, "r": 547.15991, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 86, "text": "3.2.2", "bbox": {"l": 151.19719, "t": 556.12192, "r": 173.35269, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 87, "text": "Built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89156, "t": 556.12192, "r": 530.56024, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 88, "text": "19", "bbox": {"l": 536.09912, "t": 556.12192, "r": 547.17688, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 89, "text": "3.3", "bbox": {"l": 136.79703, "t": 568.66156, "r": 150.62514, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 90, "text": "VERIFY_GROUP_FOR_USER function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.15639, "t": 568.66156, "r": 530.53027, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 91, "text": "20", "bbox": {"l": 536.06152, "t": 568.66156, "r": 547.12402, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 92, "text": "3.4", "bbox": {"l": 136.79703, "t": 581.14143, "r": 150.63004, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 93, "text": "Establishing and controlling accessibility by using the RCAC rule text . . . . . . . . . . . . .", "bbox": {"l": 156.16325, "t": 581.14143, "r": 530.62994, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 94, "text": "21", "bbox": {"l": 536.16315, "t": 581.14143, "r": 547.22955, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 95, "text": "3.5", "bbox": {"l": 136.79701, "t": 593.62131, "r": 150.64413, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 96, "text": "SELECT, INSERT, and UPDATE behavior with RCAC", "bbox": {"l": 156.18298, "t": 593.62131, "r": 394.7818, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 97, "text": ". . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 400.32065, "t": 593.62131, "r": 530.48358, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 98, "text": "22", "bbox": {"l": 536.0224, "t": 593.62131, "r": 547.1001, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 99, "text": "3.6", "bbox": {"l": 136.79701, "t": 606.16095, "r": 150.6642, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 100, "text": "Human resources example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.21107, "t": 606.16095, "r": 530.56512, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 101, "text": "22", "bbox": {"l": 536.112, "t": 606.16095, "r": 547.20575, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 102, "text": "3.6.1", "bbox": {"l": 151.19717, "t": 618.64082, "r": 173.41692, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 103, "text": "Assigning the QIBM_DB_SECADM function ID to the consultants. . . . . . . . . . . .", "bbox": {"l": 178.97185, "t": 618.64082, "r": 530.49139, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 104, "text": "23", "bbox": {"l": 536.04633, "t": 618.64082, "r": 547.15619, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 105, "text": "3.6.2", "bbox": {"l": 151.19717, "t": 631.1206999999999, "r": 173.32271, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 106, "text": "Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8541, "t": 631.1206999999999, "r": 530.56458, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 107, "text": "23", "bbox": {"l": 536.09601, "t": 631.1206999999999, "r": 547.15875, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 108, "text": "3.6.3", "bbox": {"l": 151.19717, "t": 643.66034, "r": 173.32227, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 109, "text": "Demonstrating data access without RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85353, "t": 643.66034, "r": 530.55695, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 110, "text": "24", "bbox": {"l": 536.0882, "t": 643.66034, "r": 547.15076, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 111, "text": "3.6.4", "bbox": {"l": 151.19717, "t": 656.14021, "r": 173.35289, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 112, "text": "Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89182, "t": 656.14021, "r": 530.53412, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 113, "text": "25", "bbox": {"l": 536.073, "t": 656.14021, "r": 547.15088, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 114, "text": "3.6.5", "bbox": {"l": 151.19717, "t": 668.62009, "r": 173.35289, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 115, "text": "Defining and creating column masks", "bbox": {"l": 178.89182, "t": 668.62009, "r": 339.45105, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 116, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.98996, "t": 668.62009, "r": 530.54413, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 117, "text": "26", "bbox": {"l": 536.08301, "t": 668.62009, "r": 547.16089, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 118, "text": "3.6.6", "bbox": {"l": 151.19717, "t": 681.15973, "r": 173.38359, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 119, "text": "Activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.93019, "t": 681.15973, "r": 530.54102, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 120, "text": "28", "bbox": {"l": 536.08765, "t": 681.15973, "r": 547.18085, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 121, "text": "3.6.7", "bbox": {"l": 151.19717, "t": 693.63961, "r": 173.32332, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 122, "text": "Demonstrating data access with RCAC", "bbox": {"l": 178.85486, "t": 693.63961, "r": 350.80011, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 123, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 356.33163, "t": 693.63961, "r": 530.57507, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 124, "text": "29", "bbox": {"l": 536.10663, "t": 693.63961, "r": 547.16968, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 125, "text": "3.6.8", "bbox": {"l": 151.19717, "t": 706.119492, "r": 173.44592, "b": 715.332497, "coord_origin": "TOPLEFT"}}, {"id": 126, "text": "Demonstrating data access with a view and RCAC . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00812, "t": 706.119492, "r": 530.43628, "b": 715.332497, "coord_origin": "TOPLEFT"}}, {"id": 127, "text": "32", "bbox": {"l": 535.99847, "t": 706.119492, "r": 547.12286, "b": 715.332497, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl"], "num_rows": 43, "num_cols": 2, "table_cells": [{"bbox": {"l": 136.8, "t": 132.64862000000005, "r": 172.89404, "b": 141.86163, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Notices", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 175.01952, "t": 132.64862000000005, "r": 547.18982, "b": 141.86163, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79901, "t": 145.12847999999997, "r": 189.86537, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Trademarks", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 195.39685, "t": 145.12847999999997, "r": 547.18286, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79901, "t": 167.62811, "r": 279.39731, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "DB2 for i Center of Excellence", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 280.61942, "t": 167.62811, "r": 547.1908, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79901, "t": 190.12775, "r": 172.84424, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Preface", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 175.01852, "t": 190.12775, "r": 547.18286, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79803, "t": 202.60760000000005, "r": 547.18085, "b": 211.82061999999996, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79803, "t": 215.14721999999995, "r": 339.18292, "b": 224.36023, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Now you can become a published author, too!", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 344.71411, "t": 215.14721999999995, "r": 547.13879, "b": 224.36023, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79803, "t": 227.62707999999998, "r": 529.99506, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 535.5495, "t": 227.62707999999998, "r": 547.19788, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "xiii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79807, "t": 240.10693000000003, "r": 284.02866, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Stay connected to IBM Redbooks", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.54449, "t": 240.10693000000003, "r": 547.12115, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79807, "t": 262.60657000000003, "r": 536.09589, "b": 271.81958, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 1. Securing and protecting IBM DB2 data . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.64685, "t": 262.60657000000003, "r": 547.19781, "b": 271.81958, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "1", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79808, "t": 274.60637999999994, "r": 549.84723, "b": 283.8194, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.1 Security fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79807, "t": 287.14606000000003, "r": 536.12933, "b": 296.35904, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.2 Current state of IBM i security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.66113, "t": 287.14606000000003, "r": 547.19287, "b": 296.35904, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "2", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79807, "t": 299.62595, "r": 549.84723, "b": 308.83893, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.3 DB2 for i security controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 312.1058300000001, "r": 536.05511, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.3.1 Existing row and column control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.6015, "t": 312.1058300000001, "r": 547.14795, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "4", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 324.64548, "r": 536.08008, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.3.2 New controls: Row and Column Access Control. . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.6355, "t": 324.64548, "r": 547.19092, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "5", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79704, "t": 347.14511, "r": 536.09088, "b": 356.35809, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 2. Roles and separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.64282, "t": 347.14511, "r": 547.19476, "b": 356.35809, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "7", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79704, "t": 359.14493, "r": 536.12714, "b": 368.35791, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1 Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.66589, "t": 359.14493, "r": 547.20471, "b": 368.35791, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "8", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 371.62482, "r": 535.9527, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.1 DDM and DRDA application server access: QIBM_DB_DDMDRDA . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.55585, "t": 371.62482, "r": 547.15906, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "8", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 384.10470999999995, "r": 536.04108, "b": 393.31769, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.2 Toolbox application server access: QIBM_DB_ZDA. . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.59595, "t": 384.10470999999995, "r": 547.15082, "b": 393.31769, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "8", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 396.64435, "r": 536.07489, "b": 405.85733, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.3 Database Administrator function: QIBM_DB_SQLADM . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.63025, "t": 396.64435, "r": 547.18561, "b": 405.85733, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "9", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 409.12424000000004, "r": 411.27048, "b": 418.33722, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.4 Database Information function: QIBM_DB_SYSMON", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 416.81775, "t": 409.12424000000004, "r": 547.17865, "b": 418.33722, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . 9", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 421.60413, "r": 536.03589, "b": 430.81711, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.5 Security Administrator function: QIBM_DB_SECADM . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.59894, "t": 421.60413, "r": 547.16193, "b": 430.81711, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "9", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 434.1437700000001, "r": 530.57318, "b": 443.35675, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.6 Change Function Usage CL command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.10443, "t": 434.1437700000001, "r": 547.16687, "b": 443.35675, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 446.62366, "r": 530.53522, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 22, "end_row_offset_idx": 23, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.7 Verifying function usage IDs for RCAC with the FUNCTION_USAGE view . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0755, "t": 446.62366, "r": 547.15601, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 22, "end_row_offset_idx": 23, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79704, "t": 459.10355, "r": 547.25659, "b": 468.31653, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 23, "end_row_offset_idx": 24, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.2 Separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 481.60318, "r": 530.53961, "b": 490.81616, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 24, "end_row_offset_idx": 25, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 3. Row and Column Access Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.09167, "t": 481.60318, "r": 547.1958, "b": 490.81616, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 24, "end_row_offset_idx": 25, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "13", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 493.603, "r": 530.4809, "b": 502.81598, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 25, "end_row_offset_idx": 26, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.1 Explanation of RCAC and the concept of access control . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.04248, "t": 493.603, "r": 547.16571, "b": 502.81598, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 25, "end_row_offset_idx": 26, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "14", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19719, "t": 506.14264, "r": 378.20786, "b": 515.35562, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 26, "end_row_offset_idx": 27, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.1.1 Row permission and column mask definitions", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 383.74713, "t": 506.14264, "r": 547.15576, "b": 515.35562, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 26, "end_row_offset_idx": 27, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . 14", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19719, "t": 518.62253, "r": 530.43475, "b": 527.83551, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 27, "end_row_offset_idx": 28, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.1.2 Enabling and activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 535.99622, "t": 518.62253, "r": 547.11908, "b": 527.83551, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 27, "end_row_offset_idx": 28, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "16", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 531.1621700000001, "r": 530.52808, "b": 540.37517, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 28, "end_row_offset_idx": 29, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.2 Special registers and built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.06702, "t": 531.1621700000001, "r": 547.14484, "b": 540.37517, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 28, "end_row_offset_idx": 29, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "18", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19719, "t": 543.64204, "r": 530.49786, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 29, "end_row_offset_idx": 30, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.2.1 Special registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.05188, "t": 543.64204, "r": 547.15991, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 29, "end_row_offset_idx": 30, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "18", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19719, "t": 556.12192, "r": 530.56024, "b": 565.33492, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 30, "end_row_offset_idx": 31, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.2.2 Built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.09912, "t": 556.12192, "r": 547.17688, "b": 565.33492, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 30, "end_row_offset_idx": 31, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "19", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 568.66156, "r": 530.53027, "b": 577.87456, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 31, "end_row_offset_idx": 32, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.3 VERIFY_GROUP_FOR_USER function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.06152, "t": 568.66156, "r": 547.12402, "b": 577.87456, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 31, "end_row_offset_idx": 32, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "20", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 581.14143, "r": 530.62994, "b": 590.35443, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 32, "end_row_offset_idx": 33, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.4 Establishing and controlling accessibility by using the RCAC rule text . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.16315, "t": 581.14143, "r": 547.22955, "b": 590.35443, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 32, "end_row_offset_idx": 33, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "21", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79701, "t": 593.62131, "r": 394.7818, "b": 602.8343, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 34, "end_row_offset_idx": 35, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.5 SELECT, INSERT, and UPDATE behavior with RCAC", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 400.32065, "t": 593.62131, "r": 547.1001, "b": 602.8343, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 33, "end_row_offset_idx": 34, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . 22", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 618.64082, "r": 530.49139, "b": 627.85382, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 35, "end_row_offset_idx": 36, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.1 Assigning the QIBM_DB_SECADM function ID to the consultants. . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.04633, "t": 618.64082, "r": 547.15619, "b": 627.85382, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 35, "end_row_offset_idx": 36, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "23", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 631.1206999999999, "r": 530.56458, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 36, "end_row_offset_idx": 37, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.2 Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.09601, "t": 631.1206999999999, "r": 547.15875, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 36, "end_row_offset_idx": 37, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "23", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 643.66034, "r": 530.55695, "b": 652.87334, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 37, "end_row_offset_idx": 38, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.3 Demonstrating data access without RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0882, "t": 643.66034, "r": 547.15076, "b": 652.87334, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 37, "end_row_offset_idx": 38, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "24", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 656.14021, "r": 530.53412, "b": 665.35321, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 38, "end_row_offset_idx": 39, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.4 Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.073, "t": 656.14021, "r": 547.15088, "b": 665.35321, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 38, "end_row_offset_idx": 39, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "25", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 668.62009, "r": 339.45105, "b": 677.83309, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 39, "end_row_offset_idx": 40, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.5 Defining and creating column masks", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 344.98996, "t": 668.62009, "r": 547.16089, "b": 677.83309, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 39, "end_row_offset_idx": 40, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 681.15973, "r": 530.54102, "b": 690.37273, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 40, "end_row_offset_idx": 41, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.6 Activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.08765, "t": 681.15973, "r": 547.18085, "b": 690.37273, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 40, "end_row_offset_idx": 41, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "28", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 693.63961, "r": 530.57507, "b": 702.852615, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 41, "end_row_offset_idx": 42, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.7 Demonstrating data access with RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.10663, "t": 693.63961, "r": 547.16968, "b": 702.852615, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 41, "end_row_offset_idx": 42, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "29", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 706.119492, "r": 530.43628, "b": 715.332497, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 42, "end_row_offset_idx": 43, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.8 Demonstrating data access with a view and RCAC . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 535.99847, "t": 706.119492, "r": 547.12286, "b": 715.332497, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 42, "end_row_offset_idx": 43, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "32", "column_header": false, "row_header": false, "row_section": false}]}], "headers": [{"label": "page_footer", "id": 0, "page_no": 1, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.751060485839844, "t": 754.6969604492188, "r": 257.24335, "b": 764.1015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9473134875297546, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 1, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 538.3257446289062, "t": 754.0830688476562, "r": 547.25928, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.892595112323761, "cells": [{"id": 1, "text": "iii", "bbox": {"l": 538.85999, "t": 754.848721, "r": 547.25928, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "iii"}]}}, {"page_no": 2, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "DB2 for i Center of Excellence", "bbox": {"l": 64.800003, "t": 74.48395000000005, "r": 235.8624, "b": 85.58398, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Solution Brief", "bbox": {"l": 94.132698, "t": 148.63933999999995, "r": 139.54634, "b": 155.33642999999995, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "IBM Systems Lab Services and Training", "bbox": {"l": 94.134933, "t": 138.45012999999994, "r": 233.99973, "b": 145.22162000000003, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Power Services", "bbox": {"l": 461.08859000000007, "t": 138.40752999999995, "r": 506.26178, "b": 145.42181000000005, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "DB2 for i", "bbox": {"l": 280.24011, "t": 239.34265000000005, "r": 354.57022, "b": 256.26153999999997, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Center of Excellence ", "bbox": {"l": 280.24011, "t": 259.70165999999995, "r": 463.80942, "b": 276.62054, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Expert help to achieve your business requirements", "bbox": {"l": 280.24011, "t": 277.59027000000003, "r": 483.29572, "b": 287.45959, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "We build confident, satisfied clients", "bbox": {"l": 280.24011, "t": 315.88161999999994, "r": 443.28210000000007, "b": 324.89566, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "No one else has the vast consulting experiences, skills sharing and ", "bbox": {"l": 280.24011, "t": 327.37595, "r": 488.15466, "b": 334.77994, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "renown service offerings to do what we can do for you.", "bbox": {"l": 280.24011, "t": 337.55551, "r": 452.34018, "b": 344.9595, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Because no one else is IBM.", "bbox": {"l": 280.24011, "t": 357.3260200000001, "r": 367.86023, "b": 364.73001, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "With combined experiences and direct access to development groups, ", "bbox": {"l": 280.24011, "t": 377.09801999999996, "r": 500.32104000000004, "b": 384.50201, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "we\u2019re the experts in IBM DB2\u00ae for i. The DB2 for i Center of ", "bbox": {"l": 280.24011, "t": 387.27759, "r": 479.25497, "b": 394.68158, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Excellence (CoE) can help you achieve-perhaps reexamine and ", "bbox": {"l": 280.24011, "t": 397.45715, "r": 483.4667400000001, "b": 404.86115, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "exceed-your business requirements and gain more confidence and ", "bbox": {"l": 280.24011, "t": 407.63672, "r": 492.97656, "b": 415.04071000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "satisfaction in IBM product data management products and solutions.", "bbox": {"l": 280.24011, "t": 417.81628, "r": 498.87, "b": 425.22027999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Who we are, some of what we do", "bbox": {"l": 280.24011, "t": 437.85403, "r": 434.83205999999996, "b": 446.86807, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Global CoE engagements cover topics including:", "bbox": {"l": 280.24011, "t": 449.34824000000003, "r": 434.56316999999996, "b": 456.75223, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "r ", "bbox": {"l": 280.24011, "t": 470.95236, "r": 284.0993, "b": 476.16074, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Database performance and scalability", "bbox": {"l": 287.28961, "t": 469.11826, "r": 401.56412, "b": 476.52225, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "r ", "bbox": {"l": 280.24011, "t": 481.13507, "r": 284.0993, "b": 486.34344, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Advanced SQL knowledge and skills transfer", "bbox": {"l": 287.28961, "t": 479.30096, "r": 424.99646, "b": 486.70496, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "r ", "bbox": {"l": 280.24011, "t": 491.31766, "r": 284.0993, "b": 496.52603, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Business intelligence and analytics", "bbox": {"l": 287.28961, "t": 489.48355, "r": 392.15845, "b": 496.88754, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "r ", "bbox": {"l": 280.24011, "t": 501.50037, "r": 284.0993, "b": 506.70874, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "DB2 Web Query", "bbox": {"l": 287.28961, "t": 499.66626, "r": 339.94354, "b": 507.07025, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "r ", "bbox": {"l": 280.24011, "t": 511.68295, "r": 284.0993, "b": 516.8913299999999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Query/400 modernization for better reporting and analysis capabilities", "bbox": {"l": 287.28961, "t": 509.84885, "r": 504.19314999999995, "b": 517.25284, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "r ", "bbox": {"l": 280.24011, "t": 521.8656599999999, "r": 284.0993, "b": 527.07404, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Database modernization and re-engineering", "bbox": {"l": 287.28961, "t": 520.03156, "r": 423.0022, "b": 527.4355499999999, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "r ", "bbox": {"l": 280.24011, "t": 532.04825, "r": 284.0993, "b": 537.2566400000001, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Data-centric architecture and design", "bbox": {"l": 287.28961, "t": 530.21414, "r": 399.65173, "b": 537.61813, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "r ", "bbox": {"l": 280.24011, "t": 542.23083, "r": 284.0993, "b": 547.43924, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Extremely large database and overcoming limits to growth", "bbox": {"l": 287.28961, "t": 540.39674, "r": 466.77881, "b": 547.80074, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "r ", "bbox": {"l": 280.24011, "t": 552.41354, "r": 284.0993, "b": 557.62195, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "ISV education and enablement", "bbox": {"l": 287.28961, "t": 550.5794500000001, "r": 382.20956, "b": 557.98344, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Highlights ", "bbox": {"l": 144.88921, "t": 327.46163999999993, "r": 188.74681, "b": 336.81406, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 346.01953, "r": 148.68732, "b": 350.60168, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.9388, "t": 345.21707, "r": 177.25424, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 176.9472, "t": 345.21707, "r": 187.11098, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 186.7914, "t": 345.21707, "r": 222.95989999999998, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 222.65912, "t": 345.21707, "r": 229.55193999999997, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "GLYPHGLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 229.2261, "t": 345.21707, "r": 242.87389000000002, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 353.04984, "r": 178.77066, "b": 358.68942, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 178.46362, "t": 353.04984, "r": 207.16908, "b": 358.68942, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 368.73465, "r": 148.68732, "b": 373.3168, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "GLYPHGLYPHGLYPH GLYPHGLYPH", "bbox": {"l": 151.9388, "t": 367.93219, "r": 166.05655, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 165.73697, "t": 367.93219, "r": 186.40289, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPH", "bbox": {"l": 186.09586, "t": 367.93219, "r": 203.61617, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 203.30286, "t": 367.93219, "r": 211.82489, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 211.49905, "t": 367.93219, "r": 218.16002, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 217.83418, "t": 367.93219, "r": 241.30737, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 375.76495, "r": 174.46577, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 174.15874, "t": 375.76495, "r": 214.4128, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 214.11829, "t": 375.76495, "r": 221.01110999999997, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 220.68527, "t": 375.76495, "r": 247.52341000000004, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "GLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 247.21637, "t": 375.76495, "r": 259.2287, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 383.59772, "r": 184.61703, "b": 389.2373, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 399.28265, "r": 148.68732, "b": 403.86481000000003, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "GLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.9388, "t": 398.48019, "r": 165.36099, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 165.04141, "t": 398.48019, "r": 173.56345, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 173.23761, "t": 398.48019, "r": 185.95174, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 185.63216, "t": 398.48019, "r": 204.42448, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 204.11118, "t": 398.48019, "r": 235.29178, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 234.99099999999999, "t": 398.48019, "r": 249.83562, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 406.31296, "r": 173.41306, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 173.10602, "t": 406.31296, "r": 185.0118, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 184.69221, "t": 406.31296, "r": 206.3858, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 206.07249, "t": 406.31296, "r": 228.24231000000003, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 421.99773999999996, "r": 148.68732, "b": 426.5799, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "GLYPH", "bbox": {"l": 151.9388, "t": 421.1952800000001, "r": 155.43533, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 154.73979, "t": 421.1952800000001, "r": 166.06282, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 165.74324, "t": 421.1952800000001, "r": 195.84607, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 195.53903, "t": 421.1952800000001, "r": 202.43185, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 202.10602, "t": 421.1952800000001, "r": 222.87220999999997, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 222.55890000000002, "t": 421.1952800000001, "r": 229.57077, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "GLYPH GLYPH", "bbox": {"l": 229.24492999999998, "t": 421.1952800000001, "r": 234.25163000000003, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.92627, "t": 429.02805, "r": 181.42754, "b": 434.66763, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 181.1205, "t": 429.02805, "r": 201.07835, "b": 434.66763, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 200.76505, "t": 429.02805, "r": 207.65787, "b": 434.66763, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 207.33203, "t": 429.02805, "r": 232.07098000000002, "b": 434.66763, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "text", "bbox": {"l": 64.800003, "t": 74.48395000000005, "r": 235.8624, "b": 85.58398, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 0, "text": "DB2 for i Center of Excellence", "bbox": {"l": 64.800003, "t": 74.48395000000005, "r": 235.8624, "b": 85.58398, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "text", "bbox": {"l": 93.67039489746094, "t": 137.6368408203125, "r": 233.99973, "b": 155.33642999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.7431555986404419, "cells": [{"id": 1, "text": "Solution Brief", "bbox": {"l": 94.132698, "t": 148.63933999999995, "r": 139.54634, "b": 155.33642999999995, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "IBM Systems Lab Services and Training", "bbox": {"l": 94.134933, "t": 138.45012999999994, "r": 233.99973, "b": 145.22162000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 460.8193359375, "t": 138.33865356445312, "r": 506.26178, "b": 145.42181000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.7798991203308105, "cells": [{"id": 3, "text": "Power Services", "bbox": {"l": 461.08859000000007, "t": 138.40752999999995, "r": 506.26178, "b": 145.42181000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "section_header", "bbox": {"l": 280.07391357421875, "t": 237.7128143310547, "r": 463.80942, "b": 276.62054, "coord_origin": "TOPLEFT"}, "confidence": 0.7587877511978149, "cells": [{"id": 4, "text": "DB2 for i", "bbox": {"l": 280.24011, "t": 239.34265000000005, "r": 354.57022, "b": 256.26153999999997, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Center of Excellence ", "bbox": {"l": 280.24011, "t": 259.70165999999995, "r": 463.80942, "b": 276.62054, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 279.51953125, "t": 277.1574401855469, "r": 483.7276916503906, "b": 288.63494873046875, "coord_origin": "TOPLEFT"}, "confidence": 0.7965629696846008, "cells": [{"id": 6, "text": "Expert help to achieve your business requirements", "bbox": {"l": 280.24011, "t": 277.59027000000003, "r": 483.29572, "b": 287.45959, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "section_header", "bbox": {"l": 279.468994140625, "t": 315.0786437988281, "r": 443.375732421875, "b": 324.89566, "coord_origin": "TOPLEFT"}, "confidence": 0.891353964805603, "cells": [{"id": 7, "text": "We build confident, satisfied clients", "bbox": {"l": 280.24011, "t": 315.88161999999994, "r": 443.28210000000007, "b": 324.89566, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 279.530517578125, "t": 327.26470947265625, "r": 488.15466, "b": 345.5077209472656, "coord_origin": "TOPLEFT"}, "confidence": 0.9560743570327759, "cells": [{"id": 8, "text": "No one else has the vast consulting experiences, skills sharing and ", "bbox": {"l": 280.24011, "t": 327.37595, "r": 488.15466, "b": 334.77994, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "renown service offerings to do what we can do for you.", "bbox": {"l": 280.24011, "t": 337.55551, "r": 452.34018, "b": 344.9595, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 280.0453186035156, "t": 356.5709533691406, "r": 367.86023, "b": 364.73001, "coord_origin": "TOPLEFT"}, "confidence": 0.8260757923126221, "cells": [{"id": 10, "text": "Because no one else is IBM.", "bbox": {"l": 280.24011, "t": 357.3260200000001, "r": 367.86023, "b": 364.73001, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 279.70794677734375, "t": 376.26104736328125, "r": 500.32104000000004, "b": 425.3092041015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9764720797538757, "cells": [{"id": 11, "text": "With combined experiences and direct access to development groups, ", "bbox": {"l": 280.24011, "t": 377.09801999999996, "r": 500.32104000000004, "b": 384.50201, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "we\u2019re the experts in IBM DB2\u00ae for i. The DB2 for i Center of ", "bbox": {"l": 280.24011, "t": 387.27759, "r": 479.25497, "b": 394.68158, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Excellence (CoE) can help you achieve-perhaps reexamine and ", "bbox": {"l": 280.24011, "t": 397.45715, "r": 483.4667400000001, "b": 404.86115, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "exceed-your business requirements and gain more confidence and ", "bbox": {"l": 280.24011, "t": 407.63672, "r": 492.97656, "b": 415.04071000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "satisfaction in IBM product data management products and solutions.", "bbox": {"l": 280.24011, "t": 417.81628, "r": 498.87, "b": 425.22027999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "section_header", "bbox": {"l": 279.6336669921875, "t": 437.1227722167969, "r": 435.1236572265625, "b": 446.86807, "coord_origin": "TOPLEFT"}, "confidence": 0.8492124676704407, "cells": [{"id": 16, "text": "Who we are, some of what we do", "bbox": {"l": 280.24011, "t": 437.85403, "r": 434.83205999999996, "b": 446.86807, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 279.4736328125, "t": 449.2602233886719, "r": 434.56316999999996, "b": 457.4661865234375, "coord_origin": "TOPLEFT"}, "confidence": 0.8440341353416443, "cells": [{"id": 17, "text": "Global CoE engagements cover topics including:", "bbox": {"l": 280.24011, "t": 449.34824000000003, "r": 434.56316999999996, "b": 456.75223, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 279.74200439453125, "t": 468.3660583496094, "r": 402.1675109863281, "b": 476.5758972167969, "coord_origin": "TOPLEFT"}, "confidence": 0.9239599108695984, "cells": [{"id": 18, "text": "r ", "bbox": {"l": 280.24011, "t": 470.95236, "r": 284.0993, "b": 476.16074, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Database performance and scalability", "bbox": {"l": 287.28961, "t": 469.11826, "r": 401.56412, "b": 476.52225, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "list_item", "bbox": {"l": 279.7657165527344, "t": 478.64898681640625, "r": 424.99646, "b": 486.78228759765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9239722490310669, "cells": [{"id": 20, "text": "r ", "bbox": {"l": 280.24011, "t": 481.13507, "r": 284.0993, "b": 486.34344, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Advanced SQL knowledge and skills transfer", "bbox": {"l": 287.28961, "t": 479.30096, "r": 424.99646, "b": 486.70496, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "list_item", "bbox": {"l": 279.9660339355469, "t": 489.48355, "r": 392.2996520996094, "b": 497.1912841796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9157897233963013, "cells": [{"id": 22, "text": "r ", "bbox": {"l": 280.24011, "t": 491.31766, "r": 284.0993, "b": 496.52603, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Business intelligence and analytics", "bbox": {"l": 287.28961, "t": 489.48355, "r": 392.15845, "b": 496.88754, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "list_item", "bbox": {"l": 279.9432067871094, "t": 499.5702819824219, "r": 339.94354, "b": 507.2607727050781, "coord_origin": "TOPLEFT"}, "confidence": 0.8733457922935486, "cells": [{"id": 24, "text": "r ", "bbox": {"l": 280.24011, "t": 501.50037, "r": 284.0993, "b": 506.70874, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "DB2 Web Query", "bbox": {"l": 287.28961, "t": 499.66626, "r": 339.94354, "b": 507.07025, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "list_item", "bbox": {"l": 279.68328857421875, "t": 509.4296875, "r": 504.21795654296875, "b": 517.4979858398438, "coord_origin": "TOPLEFT"}, "confidence": 0.924924373626709, "cells": [{"id": 26, "text": "r ", "bbox": {"l": 280.24011, "t": 511.68295, "r": 284.0993, "b": 516.8913299999999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Query/400 modernization for better reporting and analysis capabilities", "bbox": {"l": 287.28961, "t": 509.84885, "r": 504.19314999999995, "b": 517.25284, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "list_item", "bbox": {"l": 279.66998291015625, "t": 520.03156, "r": 423.0022, "b": 528.0305786132812, "coord_origin": "TOPLEFT"}, "confidence": 0.9109311103820801, "cells": [{"id": 28, "text": "r ", "bbox": {"l": 280.24011, "t": 521.8656599999999, "r": 284.0993, "b": 527.07404, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Database modernization and re-engineering", "bbox": {"l": 287.28961, "t": 520.03156, "r": 423.0022, "b": 527.4355499999999, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "list_item", "bbox": {"l": 279.7203674316406, "t": 529.9635620117188, "r": 400.07391357421875, "b": 537.8783569335938, "coord_origin": "TOPLEFT"}, "confidence": 0.8977466225624084, "cells": [{"id": 30, "text": "r ", "bbox": {"l": 280.24011, "t": 532.04825, "r": 284.0993, "b": 537.2566400000001, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Data-centric architecture and design", "bbox": {"l": 287.28961, "t": 530.21414, "r": 399.65173, "b": 537.61813, "coord_origin": "TOPLEFT"}}]}, {"id": 18, "label": "list_item", "bbox": {"l": 279.7815856933594, "t": 539.8663330078125, "r": 467.2125549316406, "b": 547.80074, "coord_origin": "TOPLEFT"}, "confidence": 0.9218330383300781, "cells": [{"id": 32, "text": "r ", "bbox": {"l": 280.24011, "t": 542.23083, "r": 284.0993, "b": 547.43924, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Extremely large database and overcoming limits to growth", "bbox": {"l": 287.28961, "t": 540.39674, "r": 466.77881, "b": 547.80074, "coord_origin": "TOPLEFT"}}]}, {"id": 19, "label": "list_item", "bbox": {"l": 279.89080810546875, "t": 550.0230102539062, "r": 382.3631591796875, "b": 557.98344, "coord_origin": "TOPLEFT"}, "confidence": 0.9075438976287842, "cells": [{"id": 34, "text": "r ", "bbox": {"l": 280.24011, "t": 552.41354, "r": 284.0993, "b": 557.62195, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "ISV education and enablement", "bbox": {"l": 287.28961, "t": 550.5794500000001, "r": 382.20956, "b": 557.98344, "coord_origin": "TOPLEFT"}}]}, {"id": 20, "label": "section_header", "bbox": {"l": 144.19781494140625, "t": 327.06201171875, "r": 188.74681, "b": 337.35504150390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9098501205444336, "cells": [{"id": 36, "text": "Highlights ", "bbox": {"l": 144.88921, "t": 327.46163999999993, "r": 188.74681, "b": 336.81406, "coord_origin": "TOPLEFT"}}]}, {"id": 21, "label": "list_item", "bbox": {"l": 144.4553985595703, "t": 344.037109375, "r": 242.87389000000002, "b": 358.68942, "coord_origin": "TOPLEFT"}, "confidence": 0.9571698904037476, "cells": [{"id": 37, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 346.01953, "r": 148.68732, "b": 350.60168, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.9388, "t": 345.21707, "r": 177.25424, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 176.9472, "t": 345.21707, "r": 187.11098, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 186.7914, "t": 345.21707, "r": 222.95989999999998, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 222.65912, "t": 345.21707, "r": 229.55193999999997, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "GLYPHGLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 229.2261, "t": 345.21707, "r": 242.87389000000002, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 353.04984, "r": 178.77066, "b": 358.68942, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 178.46362, "t": 353.04984, "r": 207.16908, "b": 358.68942, "coord_origin": "TOPLEFT"}}]}, {"id": 22, "label": "list_item", "bbox": {"l": 144.40879821777344, "t": 366.6461486816406, "r": 259.2287, "b": 389.2373, "coord_origin": "TOPLEFT"}, "confidence": 0.9634581804275513, "cells": [{"id": 45, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 368.73465, "r": 148.68732, "b": 373.3168, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "GLYPHGLYPHGLYPH GLYPHGLYPH", "bbox": {"l": 151.9388, "t": 367.93219, "r": 166.05655, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 165.73697, "t": 367.93219, "r": 186.40289, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPH", "bbox": {"l": 186.09586, "t": 367.93219, "r": 203.61617, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 203.30286, "t": 367.93219, "r": 211.82489, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 211.49905, "t": 367.93219, "r": 218.16002, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 217.83418, "t": 367.93219, "r": 241.30737, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 375.76495, "r": 174.46577, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 174.15874, "t": 375.76495, "r": 214.4128, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 214.11829, "t": 375.76495, "r": 221.01110999999997, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 220.68527, "t": 375.76495, "r": 247.52341000000004, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "GLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 247.21637, "t": 375.76495, "r": 259.2287, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 383.59772, "r": 184.61703, "b": 389.2373, "coord_origin": "TOPLEFT"}}]}, {"id": 23, "label": "list_item", "bbox": {"l": 144.23313903808594, "t": 397.1644592285156, "r": 249.83562, "b": 412.3861083984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9541196823120117, "cells": [{"id": 58, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 399.28265, "r": 148.68732, "b": 403.86481000000003, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "GLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.9388, "t": 398.48019, "r": 165.36099, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 165.04141, "t": 398.48019, "r": 173.56345, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 173.23761, "t": 398.48019, "r": 185.95174, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 185.63216, "t": 398.48019, "r": 204.42448, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 204.11118, "t": 398.48019, "r": 235.29178, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 234.99099999999999, "t": 398.48019, "r": 249.83562, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 406.31296, "r": 173.41306, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 173.10602, "t": 406.31296, "r": 185.0118, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 184.69221, "t": 406.31296, "r": 206.3858, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 206.07249, "t": 406.31296, "r": 228.24231000000003, "b": 411.95255, "coord_origin": "TOPLEFT"}}]}, {"id": 24, "label": "list_item", "bbox": {"l": 144.35208129882812, "t": 420.17449951171875, "r": 234.25163000000003, "b": 434.66763, "coord_origin": "TOPLEFT"}, "confidence": 0.9440370798110962, "cells": [{"id": 69, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 421.99773999999996, "r": 148.68732, "b": 426.5799, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "GLYPH", "bbox": {"l": 151.9388, "t": 421.1952800000001, "r": 155.43533, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 154.73979, "t": 421.1952800000001, "r": 166.06282, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 165.74324, "t": 421.1952800000001, "r": 195.84607, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 195.53903, "t": 421.1952800000001, "r": 202.43185, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 202.10602, "t": 421.1952800000001, "r": 222.87220999999997, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 222.55890000000002, "t": 421.1952800000001, "r": 229.57077, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "GLYPH GLYPH", "bbox": {"l": 229.24492999999998, "t": 421.1952800000001, "r": 234.25163000000003, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.92627, "t": 429.02805, "r": 181.42754, "b": 434.66763, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 181.1205, "t": 429.02805, "r": 201.07835, "b": 434.66763, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 200.76505, "t": 429.02805, "r": 207.65787, "b": 434.66763, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 207.33203, "t": 429.02805, "r": 232.07098000000002, "b": 434.66763, "coord_origin": "TOPLEFT"}}]}, {"id": 25, "label": "picture", "bbox": {"l": 64.16704559326172, "t": 603.50634765625, "r": 258.77435302734375, "b": 688.1282348632812, "coord_origin": "TOPLEFT"}, "confidence": 0.8925828337669373, "cells": []}, {"id": 26, "label": "picture", "bbox": {"l": 143.39866638183594, "t": 270.2610778808594, "r": 179.56256103515625, "b": 285.621337890625, "coord_origin": "TOPLEFT"}, "confidence": 0.7491760849952698, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "text", "id": 0, "page_no": 2, "cluster": {"id": 0, "label": "text", "bbox": {"l": 64.800003, "t": 74.48395000000005, "r": 235.8624, "b": 85.58398, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 0, "text": "DB2 for i Center of Excellence", "bbox": {"l": 64.800003, "t": 74.48395000000005, "r": 235.8624, "b": 85.58398, "coord_origin": "TOPLEFT"}}]}, "text": "DB2 for i Center of Excellence"}, {"label": "text", "id": 1, "page_no": 2, "cluster": {"id": 1, "label": "text", "bbox": {"l": 93.67039489746094, "t": 137.6368408203125, "r": 233.99973, "b": 155.33642999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.7431555986404419, "cells": [{"id": 1, "text": "Solution Brief", "bbox": {"l": 94.132698, "t": 148.63933999999995, "r": 139.54634, "b": 155.33642999999995, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "IBM Systems Lab Services and Training", "bbox": {"l": 94.134933, "t": 138.45012999999994, "r": 233.99973, "b": 145.22162000000003, "coord_origin": "TOPLEFT"}}]}, "text": "Solution Brief IBM Systems Lab Services and Training"}, {"label": "text", "id": 2, "page_no": 2, "cluster": {"id": 2, "label": "text", "bbox": {"l": 460.8193359375, "t": 138.33865356445312, "r": 506.26178, "b": 145.42181000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.7798991203308105, "cells": [{"id": 3, "text": "Power Services", "bbox": {"l": 461.08859000000007, "t": 138.40752999999995, "r": 506.26178, "b": 145.42181000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Power Services"}, {"label": "section_header", "id": 3, "page_no": 2, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 280.07391357421875, "t": 237.7128143310547, "r": 463.80942, "b": 276.62054, "coord_origin": "TOPLEFT"}, "confidence": 0.7587877511978149, "cells": [{"id": 4, "text": "DB2 for i", "bbox": {"l": 280.24011, "t": 239.34265000000005, "r": 354.57022, "b": 256.26153999999997, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Center of Excellence ", "bbox": {"l": 280.24011, "t": 259.70165999999995, "r": 463.80942, "b": 276.62054, "coord_origin": "TOPLEFT"}}]}, "text": "DB2 for i Center of Excellence"}, {"label": "text", "id": 4, "page_no": 2, "cluster": {"id": 4, "label": "text", "bbox": {"l": 279.51953125, "t": 277.1574401855469, "r": 483.7276916503906, "b": 288.63494873046875, "coord_origin": "TOPLEFT"}, "confidence": 0.7965629696846008, "cells": [{"id": 6, "text": "Expert help to achieve your business requirements", "bbox": {"l": 280.24011, "t": 277.59027000000003, "r": 483.29572, "b": 287.45959, "coord_origin": "TOPLEFT"}}]}, "text": "Expert help to achieve your business requirements"}, {"label": "section_header", "id": 5, "page_no": 2, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 279.468994140625, "t": 315.0786437988281, "r": 443.375732421875, "b": 324.89566, "coord_origin": "TOPLEFT"}, "confidence": 0.891353964805603, "cells": [{"id": 7, "text": "We build confident, satisfied clients", "bbox": {"l": 280.24011, "t": 315.88161999999994, "r": 443.28210000000007, "b": 324.89566, "coord_origin": "TOPLEFT"}}]}, "text": "We build confident, satisfied clients"}, {"label": "text", "id": 6, "page_no": 2, "cluster": {"id": 6, "label": "text", "bbox": {"l": 279.530517578125, "t": 327.26470947265625, "r": 488.15466, "b": 345.5077209472656, "coord_origin": "TOPLEFT"}, "confidence": 0.9560743570327759, "cells": [{"id": 8, "text": "No one else has the vast consulting experiences, skills sharing and ", "bbox": {"l": 280.24011, "t": 327.37595, "r": 488.15466, "b": 334.77994, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "renown service offerings to do what we can do for you.", "bbox": {"l": 280.24011, "t": 337.55551, "r": 452.34018, "b": 344.9595, "coord_origin": "TOPLEFT"}}]}, "text": "No one else has the vast consulting experiences, skills sharing and renown service offerings to do what we can do for you."}, {"label": "text", "id": 7, "page_no": 2, "cluster": {"id": 7, "label": "text", "bbox": {"l": 280.0453186035156, "t": 356.5709533691406, "r": 367.86023, "b": 364.73001, "coord_origin": "TOPLEFT"}, "confidence": 0.8260757923126221, "cells": [{"id": 10, "text": "Because no one else is IBM.", "bbox": {"l": 280.24011, "t": 357.3260200000001, "r": 367.86023, "b": 364.73001, "coord_origin": "TOPLEFT"}}]}, "text": "Because no one else is IBM."}, {"label": "text", "id": 8, "page_no": 2, "cluster": {"id": 8, "label": "text", "bbox": {"l": 279.70794677734375, "t": 376.26104736328125, "r": 500.32104000000004, "b": 425.3092041015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9764720797538757, "cells": [{"id": 11, "text": "With combined experiences and direct access to development groups, ", "bbox": {"l": 280.24011, "t": 377.09801999999996, "r": 500.32104000000004, "b": 384.50201, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "we\u2019re the experts in IBM DB2\u00ae for i. The DB2 for i Center of ", "bbox": {"l": 280.24011, "t": 387.27759, "r": 479.25497, "b": 394.68158, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Excellence (CoE) can help you achieve-perhaps reexamine and ", "bbox": {"l": 280.24011, "t": 397.45715, "r": 483.4667400000001, "b": 404.86115, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "exceed-your business requirements and gain more confidence and ", "bbox": {"l": 280.24011, "t": 407.63672, "r": 492.97656, "b": 415.04071000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "satisfaction in IBM product data management products and solutions.", "bbox": {"l": 280.24011, "t": 417.81628, "r": 498.87, "b": 425.22027999999995, "coord_origin": "TOPLEFT"}}]}, "text": "With combined experiences and direct access to development groups, we\u2019re the experts in IBM DB2\u00ae for i. The DB2 for i Center of Excellence (CoE) can help you achieve-perhaps reexamine and exceed-your business requirements and gain more confidence and satisfaction in IBM product data management products and solutions."}, {"label": "section_header", "id": 9, "page_no": 2, "cluster": {"id": 9, "label": "section_header", "bbox": {"l": 279.6336669921875, "t": 437.1227722167969, "r": 435.1236572265625, "b": 446.86807, "coord_origin": "TOPLEFT"}, "confidence": 0.8492124676704407, "cells": [{"id": 16, "text": "Who we are, some of what we do", "bbox": {"l": 280.24011, "t": 437.85403, "r": 434.83205999999996, "b": 446.86807, "coord_origin": "TOPLEFT"}}]}, "text": "Who we are, some of what we do"}, {"label": "text", "id": 10, "page_no": 2, "cluster": {"id": 10, "label": "text", "bbox": {"l": 279.4736328125, "t": 449.2602233886719, "r": 434.56316999999996, "b": 457.4661865234375, "coord_origin": "TOPLEFT"}, "confidence": 0.8440341353416443, "cells": [{"id": 17, "text": "Global CoE engagements cover topics including:", "bbox": {"l": 280.24011, "t": 449.34824000000003, "r": 434.56316999999996, "b": 456.75223, "coord_origin": "TOPLEFT"}}]}, "text": "Global CoE engagements cover topics including:"}, {"label": "list_item", "id": 11, "page_no": 2, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 279.74200439453125, "t": 468.3660583496094, "r": 402.1675109863281, "b": 476.5758972167969, "coord_origin": "TOPLEFT"}, "confidence": 0.9239599108695984, "cells": [{"id": 18, "text": "r ", "bbox": {"l": 280.24011, "t": 470.95236, "r": 284.0993, "b": 476.16074, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Database performance and scalability", "bbox": {"l": 287.28961, "t": 469.11826, "r": 401.56412, "b": 476.52225, "coord_origin": "TOPLEFT"}}]}, "text": "r Database performance and scalability"}, {"label": "list_item", "id": 12, "page_no": 2, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 279.7657165527344, "t": 478.64898681640625, "r": 424.99646, "b": 486.78228759765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9239722490310669, "cells": [{"id": 20, "text": "r ", "bbox": {"l": 280.24011, "t": 481.13507, "r": 284.0993, "b": 486.34344, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Advanced SQL knowledge and skills transfer", "bbox": {"l": 287.28961, "t": 479.30096, "r": 424.99646, "b": 486.70496, "coord_origin": "TOPLEFT"}}]}, "text": "r Advanced SQL knowledge and skills transfer"}, {"label": "list_item", "id": 13, "page_no": 2, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 279.9660339355469, "t": 489.48355, "r": 392.2996520996094, "b": 497.1912841796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9157897233963013, "cells": [{"id": 22, "text": "r ", "bbox": {"l": 280.24011, "t": 491.31766, "r": 284.0993, "b": 496.52603, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Business intelligence and analytics", "bbox": {"l": 287.28961, "t": 489.48355, "r": 392.15845, "b": 496.88754, "coord_origin": "TOPLEFT"}}]}, "text": "r Business intelligence and analytics"}, {"label": "list_item", "id": 14, "page_no": 2, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 279.9432067871094, "t": 499.5702819824219, "r": 339.94354, "b": 507.2607727050781, "coord_origin": "TOPLEFT"}, "confidence": 0.8733457922935486, "cells": [{"id": 24, "text": "r ", "bbox": {"l": 280.24011, "t": 501.50037, "r": 284.0993, "b": 506.70874, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "DB2 Web Query", "bbox": {"l": 287.28961, "t": 499.66626, "r": 339.94354, "b": 507.07025, "coord_origin": "TOPLEFT"}}]}, "text": "r DB2 Web Query"}, {"label": "list_item", "id": 15, "page_no": 2, "cluster": {"id": 15, "label": "list_item", "bbox": {"l": 279.68328857421875, "t": 509.4296875, "r": 504.21795654296875, "b": 517.4979858398438, "coord_origin": "TOPLEFT"}, "confidence": 0.924924373626709, "cells": [{"id": 26, "text": "r ", "bbox": {"l": 280.24011, "t": 511.68295, "r": 284.0993, "b": 516.8913299999999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Query/400 modernization for better reporting and analysis capabilities", "bbox": {"l": 287.28961, "t": 509.84885, "r": 504.19314999999995, "b": 517.25284, "coord_origin": "TOPLEFT"}}]}, "text": "r Query/400 modernization for better reporting and analysis capabilities"}, {"label": "list_item", "id": 16, "page_no": 2, "cluster": {"id": 16, "label": "list_item", "bbox": {"l": 279.66998291015625, "t": 520.03156, "r": 423.0022, "b": 528.0305786132812, "coord_origin": "TOPLEFT"}, "confidence": 0.9109311103820801, "cells": [{"id": 28, "text": "r ", "bbox": {"l": 280.24011, "t": 521.8656599999999, "r": 284.0993, "b": 527.07404, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Database modernization and re-engineering", "bbox": {"l": 287.28961, "t": 520.03156, "r": 423.0022, "b": 527.4355499999999, "coord_origin": "TOPLEFT"}}]}, "text": "r Database modernization and re-engineering"}, {"label": "list_item", "id": 17, "page_no": 2, "cluster": {"id": 17, "label": "list_item", "bbox": {"l": 279.7203674316406, "t": 529.9635620117188, "r": 400.07391357421875, "b": 537.8783569335938, "coord_origin": "TOPLEFT"}, "confidence": 0.8977466225624084, "cells": [{"id": 30, "text": "r ", "bbox": {"l": 280.24011, "t": 532.04825, "r": 284.0993, "b": 537.2566400000001, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Data-centric architecture and design", "bbox": {"l": 287.28961, "t": 530.21414, "r": 399.65173, "b": 537.61813, "coord_origin": "TOPLEFT"}}]}, "text": "r Data-centric architecture and design"}, {"label": "list_item", "id": 18, "page_no": 2, "cluster": {"id": 18, "label": "list_item", "bbox": {"l": 279.7815856933594, "t": 539.8663330078125, "r": 467.2125549316406, "b": 547.80074, "coord_origin": "TOPLEFT"}, "confidence": 0.9218330383300781, "cells": [{"id": 32, "text": "r ", "bbox": {"l": 280.24011, "t": 542.23083, "r": 284.0993, "b": 547.43924, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Extremely large database and overcoming limits to growth", "bbox": {"l": 287.28961, "t": 540.39674, "r": 466.77881, "b": 547.80074, "coord_origin": "TOPLEFT"}}]}, "text": "r Extremely large database and overcoming limits to growth"}, {"label": "list_item", "id": 19, "page_no": 2, "cluster": {"id": 19, "label": "list_item", "bbox": {"l": 279.89080810546875, "t": 550.0230102539062, "r": 382.3631591796875, "b": 557.98344, "coord_origin": "TOPLEFT"}, "confidence": 0.9075438976287842, "cells": [{"id": 34, "text": "r ", "bbox": {"l": 280.24011, "t": 552.41354, "r": 284.0993, "b": 557.62195, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "ISV education and enablement", "bbox": {"l": 287.28961, "t": 550.5794500000001, "r": 382.20956, "b": 557.98344, "coord_origin": "TOPLEFT"}}]}, "text": "r ISV education and enablement"}, {"label": "section_header", "id": 20, "page_no": 2, "cluster": {"id": 20, "label": "section_header", "bbox": {"l": 144.19781494140625, "t": 327.06201171875, "r": 188.74681, "b": 337.35504150390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9098501205444336, "cells": [{"id": 36, "text": "Highlights ", "bbox": {"l": 144.88921, "t": 327.46163999999993, "r": 188.74681, "b": 336.81406, "coord_origin": "TOPLEFT"}}]}, "text": "Highlights"}, {"label": "list_item", "id": 21, "page_no": 2, "cluster": {"id": 21, "label": "list_item", "bbox": {"l": 144.4553985595703, "t": 344.037109375, "r": 242.87389000000002, "b": 358.68942, "coord_origin": "TOPLEFT"}, "confidence": 0.9571698904037476, "cells": [{"id": 37, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 346.01953, "r": 148.68732, "b": 350.60168, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.9388, "t": 345.21707, "r": 177.25424, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 176.9472, "t": 345.21707, "r": 187.11098, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 186.7914, "t": 345.21707, "r": 222.95989999999998, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 222.65912, "t": 345.21707, "r": 229.55193999999997, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "GLYPHGLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 229.2261, "t": 345.21707, "r": 242.87389000000002, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 353.04984, "r": 178.77066, "b": 358.68942, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 178.46362, "t": 353.04984, "r": 207.16908, "b": 358.68942, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH"}, {"label": "list_item", "id": 22, "page_no": 2, "cluster": {"id": 22, "label": "list_item", "bbox": {"l": 144.40879821777344, "t": 366.6461486816406, "r": 259.2287, "b": 389.2373, "coord_origin": "TOPLEFT"}, "confidence": 0.9634581804275513, "cells": [{"id": 45, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 368.73465, "r": 148.68732, "b": 373.3168, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "GLYPHGLYPHGLYPH GLYPHGLYPH", "bbox": {"l": 151.9388, "t": 367.93219, "r": 166.05655, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 165.73697, "t": 367.93219, "r": 186.40289, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPH", "bbox": {"l": 186.09586, "t": 367.93219, "r": 203.61617, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 203.30286, "t": 367.93219, "r": 211.82489, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 211.49905, "t": 367.93219, "r": 218.16002, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 217.83418, "t": 367.93219, "r": 241.30737, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 375.76495, "r": 174.46577, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 174.15874, "t": 375.76495, "r": 214.4128, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 214.11829, "t": 375.76495, "r": 221.01110999999997, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 220.68527, "t": 375.76495, "r": 247.52341000000004, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "GLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 247.21637, "t": 375.76495, "r": 259.2287, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 383.59772, "r": 184.61703, "b": 389.2373, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH"}, {"label": "list_item", "id": 23, "page_no": 2, "cluster": {"id": 23, "label": "list_item", "bbox": {"l": 144.23313903808594, "t": 397.1644592285156, "r": 249.83562, "b": 412.3861083984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9541196823120117, "cells": [{"id": 58, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 399.28265, "r": 148.68732, "b": 403.86481000000003, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "GLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.9388, "t": 398.48019, "r": 165.36099, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 165.04141, "t": 398.48019, "r": 173.56345, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 173.23761, "t": 398.48019, "r": 185.95174, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 185.63216, "t": 398.48019, "r": 204.42448, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 204.11118, "t": 398.48019, "r": 235.29178, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 234.99099999999999, "t": 398.48019, "r": 249.83562, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 406.31296, "r": 173.41306, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 173.10602, "t": 406.31296, "r": 185.0118, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 184.69221, "t": 406.31296, "r": 206.3858, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 206.07249, "t": 406.31296, "r": 228.24231000000003, "b": 411.95255, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH"}, {"label": "list_item", "id": 24, "page_no": 2, "cluster": {"id": 24, "label": "list_item", "bbox": {"l": 144.35208129882812, "t": 420.17449951171875, "r": 234.25163000000003, "b": 434.66763, "coord_origin": "TOPLEFT"}, "confidence": 0.9440370798110962, "cells": [{"id": 69, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 421.99773999999996, "r": 148.68732, "b": 426.5799, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "GLYPH", "bbox": {"l": 151.9388, "t": 421.1952800000001, "r": 155.43533, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 154.73979, "t": 421.1952800000001, "r": 166.06282, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 165.74324, "t": 421.1952800000001, "r": 195.84607, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 195.53903, "t": 421.1952800000001, "r": 202.43185, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 202.10602, "t": 421.1952800000001, "r": 222.87220999999997, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 222.55890000000002, "t": 421.1952800000001, "r": 229.57077, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "GLYPH GLYPH", "bbox": {"l": 229.24492999999998, "t": 421.1952800000001, "r": 234.25163000000003, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.92627, "t": 429.02805, "r": 181.42754, "b": 434.66763, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 181.1205, "t": 429.02805, "r": 201.07835, "b": 434.66763, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 200.76505, "t": 429.02805, "r": 207.65787, "b": 434.66763, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 207.33203, "t": 429.02805, "r": 232.07098000000002, "b": 434.66763, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH"}, {"label": "picture", "id": 25, "page_no": 2, "cluster": {"id": 25, "label": "picture", "bbox": {"l": 64.16704559326172, "t": 603.50634765625, "r": 258.77435302734375, "b": 688.1282348632812, "coord_origin": "TOPLEFT"}, "confidence": 0.8925828337669373, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 26, "page_no": 2, "cluster": {"id": 26, "label": "picture", "bbox": {"l": 143.39866638183594, "t": 270.2610778808594, "r": 179.56256103515625, "b": 285.621337890625, "coord_origin": "TOPLEFT"}, "confidence": 0.7491760849952698, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 0, "page_no": 2, "cluster": {"id": 0, "label": "text", "bbox": {"l": 64.800003, "t": 74.48395000000005, "r": 235.8624, "b": 85.58398, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 0, "text": "DB2 for i Center of Excellence", "bbox": {"l": 64.800003, "t": 74.48395000000005, "r": 235.8624, "b": 85.58398, "coord_origin": "TOPLEFT"}}]}, "text": "DB2 for i Center of Excellence"}, {"label": "text", "id": 1, "page_no": 2, "cluster": {"id": 1, "label": "text", "bbox": {"l": 93.67039489746094, "t": 137.6368408203125, "r": 233.99973, "b": 155.33642999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.7431555986404419, "cells": [{"id": 1, "text": "Solution Brief", "bbox": {"l": 94.132698, "t": 148.63933999999995, "r": 139.54634, "b": 155.33642999999995, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "IBM Systems Lab Services and Training", "bbox": {"l": 94.134933, "t": 138.45012999999994, "r": 233.99973, "b": 145.22162000000003, "coord_origin": "TOPLEFT"}}]}, "text": "Solution Brief IBM Systems Lab Services and Training"}, {"label": "text", "id": 2, "page_no": 2, "cluster": {"id": 2, "label": "text", "bbox": {"l": 460.8193359375, "t": 138.33865356445312, "r": 506.26178, "b": 145.42181000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.7798991203308105, "cells": [{"id": 3, "text": "Power Services", "bbox": {"l": 461.08859000000007, "t": 138.40752999999995, "r": 506.26178, "b": 145.42181000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Power Services"}, {"label": "section_header", "id": 3, "page_no": 2, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 280.07391357421875, "t": 237.7128143310547, "r": 463.80942, "b": 276.62054, "coord_origin": "TOPLEFT"}, "confidence": 0.7587877511978149, "cells": [{"id": 4, "text": "DB2 for i", "bbox": {"l": 280.24011, "t": 239.34265000000005, "r": 354.57022, "b": 256.26153999999997, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Center of Excellence ", "bbox": {"l": 280.24011, "t": 259.70165999999995, "r": 463.80942, "b": 276.62054, "coord_origin": "TOPLEFT"}}]}, "text": "DB2 for i Center of Excellence"}, {"label": "text", "id": 4, "page_no": 2, "cluster": {"id": 4, "label": "text", "bbox": {"l": 279.51953125, "t": 277.1574401855469, "r": 483.7276916503906, "b": 288.63494873046875, "coord_origin": "TOPLEFT"}, "confidence": 0.7965629696846008, "cells": [{"id": 6, "text": "Expert help to achieve your business requirements", "bbox": {"l": 280.24011, "t": 277.59027000000003, "r": 483.29572, "b": 287.45959, "coord_origin": "TOPLEFT"}}]}, "text": "Expert help to achieve your business requirements"}, {"label": "section_header", "id": 5, "page_no": 2, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 279.468994140625, "t": 315.0786437988281, "r": 443.375732421875, "b": 324.89566, "coord_origin": "TOPLEFT"}, "confidence": 0.891353964805603, "cells": [{"id": 7, "text": "We build confident, satisfied clients", "bbox": {"l": 280.24011, "t": 315.88161999999994, "r": 443.28210000000007, "b": 324.89566, "coord_origin": "TOPLEFT"}}]}, "text": "We build confident, satisfied clients"}, {"label": "text", "id": 6, "page_no": 2, "cluster": {"id": 6, "label": "text", "bbox": {"l": 279.530517578125, "t": 327.26470947265625, "r": 488.15466, "b": 345.5077209472656, "coord_origin": "TOPLEFT"}, "confidence": 0.9560743570327759, "cells": [{"id": 8, "text": "No one else has the vast consulting experiences, skills sharing and ", "bbox": {"l": 280.24011, "t": 327.37595, "r": 488.15466, "b": 334.77994, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "renown service offerings to do what we can do for you.", "bbox": {"l": 280.24011, "t": 337.55551, "r": 452.34018, "b": 344.9595, "coord_origin": "TOPLEFT"}}]}, "text": "No one else has the vast consulting experiences, skills sharing and renown service offerings to do what we can do for you."}, {"label": "text", "id": 7, "page_no": 2, "cluster": {"id": 7, "label": "text", "bbox": {"l": 280.0453186035156, "t": 356.5709533691406, "r": 367.86023, "b": 364.73001, "coord_origin": "TOPLEFT"}, "confidence": 0.8260757923126221, "cells": [{"id": 10, "text": "Because no one else is IBM.", "bbox": {"l": 280.24011, "t": 357.3260200000001, "r": 367.86023, "b": 364.73001, "coord_origin": "TOPLEFT"}}]}, "text": "Because no one else is IBM."}, {"label": "text", "id": 8, "page_no": 2, "cluster": {"id": 8, "label": "text", "bbox": {"l": 279.70794677734375, "t": 376.26104736328125, "r": 500.32104000000004, "b": 425.3092041015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9764720797538757, "cells": [{"id": 11, "text": "With combined experiences and direct access to development groups, ", "bbox": {"l": 280.24011, "t": 377.09801999999996, "r": 500.32104000000004, "b": 384.50201, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "we\u2019re the experts in IBM DB2\u00ae for i. The DB2 for i Center of ", "bbox": {"l": 280.24011, "t": 387.27759, "r": 479.25497, "b": 394.68158, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Excellence (CoE) can help you achieve-perhaps reexamine and ", "bbox": {"l": 280.24011, "t": 397.45715, "r": 483.4667400000001, "b": 404.86115, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "exceed-your business requirements and gain more confidence and ", "bbox": {"l": 280.24011, "t": 407.63672, "r": 492.97656, "b": 415.04071000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "satisfaction in IBM product data management products and solutions.", "bbox": {"l": 280.24011, "t": 417.81628, "r": 498.87, "b": 425.22027999999995, "coord_origin": "TOPLEFT"}}]}, "text": "With combined experiences and direct access to development groups, we\u2019re the experts in IBM DB2\u00ae for i. The DB2 for i Center of Excellence (CoE) can help you achieve-perhaps reexamine and exceed-your business requirements and gain more confidence and satisfaction in IBM product data management products and solutions."}, {"label": "section_header", "id": 9, "page_no": 2, "cluster": {"id": 9, "label": "section_header", "bbox": {"l": 279.6336669921875, "t": 437.1227722167969, "r": 435.1236572265625, "b": 446.86807, "coord_origin": "TOPLEFT"}, "confidence": 0.8492124676704407, "cells": [{"id": 16, "text": "Who we are, some of what we do", "bbox": {"l": 280.24011, "t": 437.85403, "r": 434.83205999999996, "b": 446.86807, "coord_origin": "TOPLEFT"}}]}, "text": "Who we are, some of what we do"}, {"label": "text", "id": 10, "page_no": 2, "cluster": {"id": 10, "label": "text", "bbox": {"l": 279.4736328125, "t": 449.2602233886719, "r": 434.56316999999996, "b": 457.4661865234375, "coord_origin": "TOPLEFT"}, "confidence": 0.8440341353416443, "cells": [{"id": 17, "text": "Global CoE engagements cover topics including:", "bbox": {"l": 280.24011, "t": 449.34824000000003, "r": 434.56316999999996, "b": 456.75223, "coord_origin": "TOPLEFT"}}]}, "text": "Global CoE engagements cover topics including:"}, {"label": "list_item", "id": 11, "page_no": 2, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 279.74200439453125, "t": 468.3660583496094, "r": 402.1675109863281, "b": 476.5758972167969, "coord_origin": "TOPLEFT"}, "confidence": 0.9239599108695984, "cells": [{"id": 18, "text": "r ", "bbox": {"l": 280.24011, "t": 470.95236, "r": 284.0993, "b": 476.16074, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Database performance and scalability", "bbox": {"l": 287.28961, "t": 469.11826, "r": 401.56412, "b": 476.52225, "coord_origin": "TOPLEFT"}}]}, "text": "r Database performance and scalability"}, {"label": "list_item", "id": 12, "page_no": 2, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 279.7657165527344, "t": 478.64898681640625, "r": 424.99646, "b": 486.78228759765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9239722490310669, "cells": [{"id": 20, "text": "r ", "bbox": {"l": 280.24011, "t": 481.13507, "r": 284.0993, "b": 486.34344, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Advanced SQL knowledge and skills transfer", "bbox": {"l": 287.28961, "t": 479.30096, "r": 424.99646, "b": 486.70496, "coord_origin": "TOPLEFT"}}]}, "text": "r Advanced SQL knowledge and skills transfer"}, {"label": "list_item", "id": 13, "page_no": 2, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 279.9660339355469, "t": 489.48355, "r": 392.2996520996094, "b": 497.1912841796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9157897233963013, "cells": [{"id": 22, "text": "r ", "bbox": {"l": 280.24011, "t": 491.31766, "r": 284.0993, "b": 496.52603, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Business intelligence and analytics", "bbox": {"l": 287.28961, "t": 489.48355, "r": 392.15845, "b": 496.88754, "coord_origin": "TOPLEFT"}}]}, "text": "r Business intelligence and analytics"}, {"label": "list_item", "id": 14, "page_no": 2, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 279.9432067871094, "t": 499.5702819824219, "r": 339.94354, "b": 507.2607727050781, "coord_origin": "TOPLEFT"}, "confidence": 0.8733457922935486, "cells": [{"id": 24, "text": "r ", "bbox": {"l": 280.24011, "t": 501.50037, "r": 284.0993, "b": 506.70874, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "DB2 Web Query", "bbox": {"l": 287.28961, "t": 499.66626, "r": 339.94354, "b": 507.07025, "coord_origin": "TOPLEFT"}}]}, "text": "r DB2 Web Query"}, {"label": "list_item", "id": 15, "page_no": 2, "cluster": {"id": 15, "label": "list_item", "bbox": {"l": 279.68328857421875, "t": 509.4296875, "r": 504.21795654296875, "b": 517.4979858398438, "coord_origin": "TOPLEFT"}, "confidence": 0.924924373626709, "cells": [{"id": 26, "text": "r ", "bbox": {"l": 280.24011, "t": 511.68295, "r": 284.0993, "b": 516.8913299999999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Query/400 modernization for better reporting and analysis capabilities", "bbox": {"l": 287.28961, "t": 509.84885, "r": 504.19314999999995, "b": 517.25284, "coord_origin": "TOPLEFT"}}]}, "text": "r Query/400 modernization for better reporting and analysis capabilities"}, {"label": "list_item", "id": 16, "page_no": 2, "cluster": {"id": 16, "label": "list_item", "bbox": {"l": 279.66998291015625, "t": 520.03156, "r": 423.0022, "b": 528.0305786132812, "coord_origin": "TOPLEFT"}, "confidence": 0.9109311103820801, "cells": [{"id": 28, "text": "r ", "bbox": {"l": 280.24011, "t": 521.8656599999999, "r": 284.0993, "b": 527.07404, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Database modernization and re-engineering", "bbox": {"l": 287.28961, "t": 520.03156, "r": 423.0022, "b": 527.4355499999999, "coord_origin": "TOPLEFT"}}]}, "text": "r Database modernization and re-engineering"}, {"label": "list_item", "id": 17, "page_no": 2, "cluster": {"id": 17, "label": "list_item", "bbox": {"l": 279.7203674316406, "t": 529.9635620117188, "r": 400.07391357421875, "b": 537.8783569335938, "coord_origin": "TOPLEFT"}, "confidence": 0.8977466225624084, "cells": [{"id": 30, "text": "r ", "bbox": {"l": 280.24011, "t": 532.04825, "r": 284.0993, "b": 537.2566400000001, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Data-centric architecture and design", "bbox": {"l": 287.28961, "t": 530.21414, "r": 399.65173, "b": 537.61813, "coord_origin": "TOPLEFT"}}]}, "text": "r Data-centric architecture and design"}, {"label": "list_item", "id": 18, "page_no": 2, "cluster": {"id": 18, "label": "list_item", "bbox": {"l": 279.7815856933594, "t": 539.8663330078125, "r": 467.2125549316406, "b": 547.80074, "coord_origin": "TOPLEFT"}, "confidence": 0.9218330383300781, "cells": [{"id": 32, "text": "r ", "bbox": {"l": 280.24011, "t": 542.23083, "r": 284.0993, "b": 547.43924, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Extremely large database and overcoming limits to growth", "bbox": {"l": 287.28961, "t": 540.39674, "r": 466.77881, "b": 547.80074, "coord_origin": "TOPLEFT"}}]}, "text": "r Extremely large database and overcoming limits to growth"}, {"label": "list_item", "id": 19, "page_no": 2, "cluster": {"id": 19, "label": "list_item", "bbox": {"l": 279.89080810546875, "t": 550.0230102539062, "r": 382.3631591796875, "b": 557.98344, "coord_origin": "TOPLEFT"}, "confidence": 0.9075438976287842, "cells": [{"id": 34, "text": "r ", "bbox": {"l": 280.24011, "t": 552.41354, "r": 284.0993, "b": 557.62195, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "ISV education and enablement", "bbox": {"l": 287.28961, "t": 550.5794500000001, "r": 382.20956, "b": 557.98344, "coord_origin": "TOPLEFT"}}]}, "text": "r ISV education and enablement"}, {"label": "section_header", "id": 20, "page_no": 2, "cluster": {"id": 20, "label": "section_header", "bbox": {"l": 144.19781494140625, "t": 327.06201171875, "r": 188.74681, "b": 337.35504150390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9098501205444336, "cells": [{"id": 36, "text": "Highlights ", "bbox": {"l": 144.88921, "t": 327.46163999999993, "r": 188.74681, "b": 336.81406, "coord_origin": "TOPLEFT"}}]}, "text": "Highlights"}, {"label": "list_item", "id": 21, "page_no": 2, "cluster": {"id": 21, "label": "list_item", "bbox": {"l": 144.4553985595703, "t": 344.037109375, "r": 242.87389000000002, "b": 358.68942, "coord_origin": "TOPLEFT"}, "confidence": 0.9571698904037476, "cells": [{"id": 37, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 346.01953, "r": 148.68732, "b": 350.60168, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.9388, "t": 345.21707, "r": 177.25424, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 176.9472, "t": 345.21707, "r": 187.11098, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 186.7914, "t": 345.21707, "r": 222.95989999999998, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 222.65912, "t": 345.21707, "r": 229.55193999999997, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "GLYPHGLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 229.2261, "t": 345.21707, "r": 242.87389000000002, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 353.04984, "r": 178.77066, "b": 358.68942, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 178.46362, "t": 353.04984, "r": 207.16908, "b": 358.68942, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH"}, {"label": "list_item", "id": 22, "page_no": 2, "cluster": {"id": 22, "label": "list_item", "bbox": {"l": 144.40879821777344, "t": 366.6461486816406, "r": 259.2287, "b": 389.2373, "coord_origin": "TOPLEFT"}, "confidence": 0.9634581804275513, "cells": [{"id": 45, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 368.73465, "r": 148.68732, "b": 373.3168, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "GLYPHGLYPHGLYPH GLYPHGLYPH", "bbox": {"l": 151.9388, "t": 367.93219, "r": 166.05655, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 165.73697, "t": 367.93219, "r": 186.40289, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPH", "bbox": {"l": 186.09586, "t": 367.93219, "r": 203.61617, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 203.30286, "t": 367.93219, "r": 211.82489, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 211.49905, "t": 367.93219, "r": 218.16002, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 217.83418, "t": 367.93219, "r": 241.30737, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 375.76495, "r": 174.46577, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 174.15874, "t": 375.76495, "r": 214.4128, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 214.11829, "t": 375.76495, "r": 221.01110999999997, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 220.68527, "t": 375.76495, "r": 247.52341000000004, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "GLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 247.21637, "t": 375.76495, "r": 259.2287, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 383.59772, "r": 184.61703, "b": 389.2373, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH"}, {"label": "list_item", "id": 23, "page_no": 2, "cluster": {"id": 23, "label": "list_item", "bbox": {"l": 144.23313903808594, "t": 397.1644592285156, "r": 249.83562, "b": 412.3861083984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9541196823120117, "cells": [{"id": 58, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 399.28265, "r": 148.68732, "b": 403.86481000000003, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "GLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.9388, "t": 398.48019, "r": 165.36099, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 165.04141, "t": 398.48019, "r": 173.56345, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 173.23761, "t": 398.48019, "r": 185.95174, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 185.63216, "t": 398.48019, "r": 204.42448, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 204.11118, "t": 398.48019, "r": 235.29178, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 234.99099999999999, "t": 398.48019, "r": 249.83562, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 406.31296, "r": 173.41306, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 173.10602, "t": 406.31296, "r": 185.0118, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 184.69221, "t": 406.31296, "r": 206.3858, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 206.07249, "t": 406.31296, "r": 228.24231000000003, "b": 411.95255, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH"}, {"label": "list_item", "id": 24, "page_no": 2, "cluster": {"id": 24, "label": "list_item", "bbox": {"l": 144.35208129882812, "t": 420.17449951171875, "r": 234.25163000000003, "b": 434.66763, "coord_origin": "TOPLEFT"}, "confidence": 0.9440370798110962, "cells": [{"id": 69, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 421.99773999999996, "r": 148.68732, "b": 426.5799, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "GLYPH", "bbox": {"l": 151.9388, "t": 421.1952800000001, "r": 155.43533, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 154.73979, "t": 421.1952800000001, "r": 166.06282, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 165.74324, "t": 421.1952800000001, "r": 195.84607, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 195.53903, "t": 421.1952800000001, "r": 202.43185, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 202.10602, "t": 421.1952800000001, "r": 222.87220999999997, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 222.55890000000002, "t": 421.1952800000001, "r": 229.57077, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "GLYPH GLYPH", "bbox": {"l": 229.24492999999998, "t": 421.1952800000001, "r": 234.25163000000003, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.92627, "t": 429.02805, "r": 181.42754, "b": 434.66763, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 181.1205, "t": 429.02805, "r": 201.07835, "b": 434.66763, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 200.76505, "t": 429.02805, "r": 207.65787, "b": 434.66763, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 207.33203, "t": 429.02805, "r": 232.07098000000002, "b": 434.66763, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH"}, {"label": "picture", "id": 25, "page_no": 2, "cluster": {"id": 25, "label": "picture", "bbox": {"l": 64.16704559326172, "t": 603.50634765625, "r": 258.77435302734375, "b": 688.1282348632812, "coord_origin": "TOPLEFT"}, "confidence": 0.8925828337669373, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 26, "page_no": 2, "cluster": {"id": 26, "label": "picture", "bbox": {"l": 143.39866638183594, "t": 270.2610778808594, "r": 179.56256103515625, "b": 285.621337890625, "coord_origin": "TOPLEFT"}, "confidence": 0.7491760849952698, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": []}}, {"page_no": 3, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "xi", "bbox": {"l": 538.85999, "t": 754.848721, "r": 547.25031, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Preface", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 151.46161, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "This IBMfi Redpaper\u2122 publication provides information about the IBM i 7.2 feature of IBM ", "bbox": {"l": 136.8, "t": 132.64862000000005, "r": 542.91888, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "DB2fi for i Row and Column Access Control (RCAC). It offers a broad description of the ", "bbox": {"l": 136.79984, "t": 144.64844000000005, "r": 526.65509, "b": 153.86145, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "function and advantages of controlling access to data in a comprehensive and transparent ", "bbox": {"l": 136.79984, "t": 156.64824999999996, "r": 536.82135, "b": 165.86127, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "way. This publication helps you understand the capabilities of RCAC and provides examples ", "bbox": {"l": 136.79987, "t": 168.64806999999996, "r": 544.67975, "b": 177.86108000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "of defining, creating, and implementing the row permissions and column masks in a relational ", "bbox": {"l": 136.79987, "t": 180.64788999999996, "r": 547.30823, "b": 189.86090000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "database environment.", "bbox": {"l": 136.79987, "t": 192.64770999999996, "r": 238.32117, "b": 201.86072000000001, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "This paper is intended for database engineers, data-centric application developers, and ", "bbox": {"l": 136.79987, "t": 214.60748, "r": 524.18518, "b": 223.82050000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "security officers who want to design and implement RCAC as a part of their data control and ", "bbox": {"l": 136.79987, "t": 226.6073, "r": 546.4657, "b": 235.82030999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "governance policy. A solid background in IBM i object level security, DB2 for i relational ", "bbox": {"l": 136.79987, "t": 238.60712, "r": 521.25488, "b": 247.82012999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "database concepts, and SQL is assumed.", "bbox": {"l": 136.79987, "t": 250.60693000000003, "r": 321.69434, "b": 259.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Authors", "bbox": {"l": 64.800003, "t": 288.3006, "r": 125.36661, "b": 303.0636, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "This paper was produced by the IBM DB2 for i Center of Excellence team in partnership with ", "bbox": {"l": 136.8, "t": 320.62871999999993, "r": 547.23669, "b": 329.8417099999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "the International Technical Support Organization (ITSO), Rochester, Minnesota US.", "bbox": {"l": 136.8, "t": 332.62854, "r": 505.05518, "b": 341.84152, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Jim Bainbridge", "bbox": {"l": 263.39957, "t": 375.64877, "r": 335.7251, "b": 384.86176, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": " is a senior DB2 consultant on the DB2 for i ", "bbox": {"l": 335.69922, "t": 375.64877, "r": 529.34259, "b": 384.86176, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Center of Excellence team in the IBM Lab Services and ", "bbox": {"l": 263.3996, "t": 387.64859, "r": 511.50717, "b": 396.86157, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Training organization. His primary role is training and ", "bbox": {"l": 263.3996, "t": 399.64841, "r": 499.077, "b": 408.86139, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "implementation services for IBM DB2 Web Query for i and ", "bbox": {"l": 263.3996, "t": 411.64822, "r": 522.51996, "b": 420.86121, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "business analytics. Jim began his career with IBM 30 years ago ", "bbox": {"l": 263.3996, "t": 423.64804, "r": 541.25079, "b": 432.86102, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "in the IBM Rochester Development Lab, where he developed ", "bbox": {"l": 263.3996, "t": 435.64786, "r": 534.71411, "b": 444.86084, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "cooperative processing products that paired IBM PCs with IBM ", "bbox": {"l": 263.3996, "t": 447.64767, "r": 541.22375, "b": 456.86066, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "S/36 and AS/.400 systems. In the years since, Jim has held ", "bbox": {"l": 263.3996, "t": 459.64749, "r": 528.91016, "b": 468.86047, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "numerous technical roles, including independent software ", "bbox": {"l": 263.3996, "t": 471.64731, "r": 520.24207, "b": 480.86029, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "vendors technical support on a broad range of IBM ", "bbox": {"l": 263.3996, "t": 483.64713, "r": 490.6967200000001, "b": 492.86011, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "technologies and products, and supporting customers in the ", "bbox": {"l": 263.3996, "t": 495.64694, "r": 530.95514, "b": 504.85992, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IBM Executive Briefing Center and IBM Project Office.", "bbox": {"l": 263.3996, "t": 507.64676, "r": 501.62973, "b": 516.85974, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Hernando Bedoya", "bbox": {"l": 263.3996, "t": 527.62653, "r": 348.38229, "b": 536.83952, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": " is a Senior IT Specialist at STG Lab ", "bbox": {"l": 348.41916, "t": 527.62653, "r": 512.3429, "b": 536.83952, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Services and Training in Rochester, Minnesota. He writes ", "bbox": {"l": 263.3996, "t": 539.62633, "r": 519.26306, "b": 548.83932, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "extensively and teaches IBM classes worldwide in all areas of ", "bbox": {"l": 263.3996, "t": 551.62613, "r": 538.40308, "b": 560.8391300000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "DB2 for i. Before joining STG Lab Services, he worked in the ", "bbox": {"l": 263.3996, "t": 563.62593, "r": 533.95715, "b": 572.83893, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "ITSO for nine years writing multiple IBM Redbooksfi ", "bbox": {"l": 263.3996, "t": 575.62573, "r": 496.94464, "b": 584.8387299999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "publications. He also worked for IBM Colombia as an IBM ", "bbox": {"l": 263.3996, "t": 587.62553, "r": 520.38562, "b": 596.83853, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "AS/400fi IT Specialist doing presales support for the Andean ", "bbox": {"l": 263.3996, "t": 599.62534, "r": 535.99078, "b": 608.83833, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "countries. He has 28 years of experience in the computing field ", "bbox": {"l": 263.3996, "t": 611.62514, "r": 541.27374, "b": 620.83813, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "and has taught database classes in Colombian universities. He ", "bbox": {"l": 263.3996, "t": 623.62494, "r": 541.26465, "b": 632.83794, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "holds a Master\u2019s degree in Computer Science from EAFIT, ", "bbox": {"l": 263.3996, "t": 635.62474, "r": 523.22211, "b": 644.8377399999999, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Colombia. His areas of expertise are database technology, ", "bbox": {"l": 263.3996, "t": 647.62454, "r": 524.77386, "b": 656.83754, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "performance, and data warehousing. Hernando can be ", "bbox": {"l": 263.3996, "t": 659.62434, "r": 508.27124, "b": 668.83735, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "contacted at ", "bbox": {"l": 263.3996, "t": 671.62415, "r": 320.63568, "b": 680.83716, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "hbedoya@us.ibm.com", "bbox": {"l": 320.63971, "t": 671.77356, "r": 410.57852, "b": 680.54832, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": ".", "bbox": {"l": 410.5795, "t": 671.62415, "r": 413.34839, "b": 680.83716, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.724002838134766, "t": 754.7037963867188, "r": 257.24335, "b": 764.1082153320312, "coord_origin": "TOPLEFT"}, "confidence": 0.9469243884086609, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 538.058349609375, "t": 754.3980102539062, "r": 547.25031, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9040942788124084, "cells": [{"id": 1, "text": "xi", "bbox": {"l": 538.85999, "t": 754.848721, "r": 547.25031, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.800003, "t": 73.10313415527344, "r": 151.46161, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9174708724021912, "cells": [{"id": 2, "text": "Preface", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 151.46161, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.75503540039062, "t": 131.914306640625, "r": 547.30823, "b": 201.86072000000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9869155883789062, "cells": [{"id": 3, "text": "This IBMfi Redpaper\u2122 publication provides information about the IBM i 7.2 feature of IBM ", "bbox": {"l": 136.8, "t": 132.64862000000005, "r": 542.91888, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "DB2fi for i Row and Column Access Control (RCAC). It offers a broad description of the ", "bbox": {"l": 136.79984, "t": 144.64844000000005, "r": 526.65509, "b": 153.86145, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "function and advantages of controlling access to data in a comprehensive and transparent ", "bbox": {"l": 136.79984, "t": 156.64824999999996, "r": 536.82135, "b": 165.86127, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "way. This publication helps you understand the capabilities of RCAC and provides examples ", "bbox": {"l": 136.79987, "t": 168.64806999999996, "r": 544.67975, "b": 177.86108000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "of defining, creating, and implementing the row permissions and column masks in a relational ", "bbox": {"l": 136.79987, "t": 180.64788999999996, "r": 547.30823, "b": 189.86090000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "database environment.", "bbox": {"l": 136.79987, "t": 192.64770999999996, "r": 238.32117, "b": 201.86072000000001, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.94647216796875, "t": 214.0637664794922, "r": 546.4657, "b": 260.1856384277344, "coord_origin": "TOPLEFT"}, "confidence": 0.987220287322998, "cells": [{"id": 9, "text": "This paper is intended for database engineers, data-centric application developers, and ", "bbox": {"l": 136.79987, "t": 214.60748, "r": 524.18518, "b": 223.82050000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "security officers who want to design and implement RCAC as a part of their data control and ", "bbox": {"l": 136.79987, "t": 226.6073, "r": 546.4657, "b": 235.82030999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "governance policy. A solid background in IBM i object level security, DB2 for i relational ", "bbox": {"l": 136.79987, "t": 238.60712, "r": 521.25488, "b": 247.82012999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "database concepts, and SQL is assumed.", "bbox": {"l": 136.79987, "t": 250.60693000000003, "r": 321.69434, "b": 259.81994999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "section_header", "bbox": {"l": 64.22550201416016, "t": 287.1894226074219, "r": 125.36661, "b": 303.0636, "coord_origin": "TOPLEFT"}, "confidence": 0.9255504608154297, "cells": [{"id": 13, "text": "Authors", "bbox": {"l": 64.800003, "t": 288.3006, "r": 125.36661, "b": 303.0636, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 135.71319580078125, "t": 319.8118591308594, "r": 547.23669, "b": 342.1517028808594, "coord_origin": "TOPLEFT"}, "confidence": 0.9713318347930908, "cells": [{"id": 14, "text": "This paper was produced by the IBM DB2 for i Center of Excellence team in partnership with ", "bbox": {"l": 136.8, "t": 320.62871999999993, "r": 547.23669, "b": 329.8417099999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "the International Technical Support Organization (ITSO), Rochester, Minnesota US.", "bbox": {"l": 136.8, "t": 332.62854, "r": 505.05518, "b": 341.84152, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 262.6522521972656, "t": 374.687255859375, "r": 541.25079, "b": 516.9314575195312, "coord_origin": "TOPLEFT"}, "confidence": 0.9842760562896729, "cells": [{"id": 16, "text": "Jim Bainbridge", "bbox": {"l": 263.39957, "t": 375.64877, "r": 335.7251, "b": 384.86176, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": " is a senior DB2 consultant on the DB2 for i ", "bbox": {"l": 335.69922, "t": 375.64877, "r": 529.34259, "b": 384.86176, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Center of Excellence team in the IBM Lab Services and ", "bbox": {"l": 263.3996, "t": 387.64859, "r": 511.50717, "b": 396.86157, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Training organization. His primary role is training and ", "bbox": {"l": 263.3996, "t": 399.64841, "r": 499.077, "b": 408.86139, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "implementation services for IBM DB2 Web Query for i and ", "bbox": {"l": 263.3996, "t": 411.64822, "r": 522.51996, "b": 420.86121, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "business analytics. Jim began his career with IBM 30 years ago ", "bbox": {"l": 263.3996, "t": 423.64804, "r": 541.25079, "b": 432.86102, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "in the IBM Rochester Development Lab, where he developed ", "bbox": {"l": 263.3996, "t": 435.64786, "r": 534.71411, "b": 444.86084, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "cooperative processing products that paired IBM PCs with IBM ", "bbox": {"l": 263.3996, "t": 447.64767, "r": 541.22375, "b": 456.86066, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "S/36 and AS/.400 systems. In the years since, Jim has held ", "bbox": {"l": 263.3996, "t": 459.64749, "r": 528.91016, "b": 468.86047, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "numerous technical roles, including independent software ", "bbox": {"l": 263.3996, "t": 471.64731, "r": 520.24207, "b": 480.86029, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "vendors technical support on a broad range of IBM ", "bbox": {"l": 263.3996, "t": 483.64713, "r": 490.6967200000001, "b": 492.86011, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "technologies and products, and supporting customers in the ", "bbox": {"l": 263.3996, "t": 495.64694, "r": 530.95514, "b": 504.85992, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IBM Executive Briefing Center and IBM Project Office.", "bbox": {"l": 263.3996, "t": 507.64676, "r": 501.62973, "b": 516.85974, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 262.4736328125, "t": 526.50830078125, "r": 541.27374, "b": 680.83716, "coord_origin": "TOPLEFT"}, "confidence": 0.9823779463768005, "cells": [{"id": 29, "text": "Hernando Bedoya", "bbox": {"l": 263.3996, "t": 527.62653, "r": 348.38229, "b": 536.83952, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": " is a Senior IT Specialist at STG Lab ", "bbox": {"l": 348.41916, "t": 527.62653, "r": 512.3429, "b": 536.83952, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Services and Training in Rochester, Minnesota. He writes ", "bbox": {"l": 263.3996, "t": 539.62633, "r": 519.26306, "b": 548.83932, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "extensively and teaches IBM classes worldwide in all areas of ", "bbox": {"l": 263.3996, "t": 551.62613, "r": 538.40308, "b": 560.8391300000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "DB2 for i. Before joining STG Lab Services, he worked in the ", "bbox": {"l": 263.3996, "t": 563.62593, "r": 533.95715, "b": 572.83893, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "ITSO for nine years writing multiple IBM Redbooksfi ", "bbox": {"l": 263.3996, "t": 575.62573, "r": 496.94464, "b": 584.8387299999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "publications. He also worked for IBM Colombia as an IBM ", "bbox": {"l": 263.3996, "t": 587.62553, "r": 520.38562, "b": 596.83853, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "AS/400fi IT Specialist doing presales support for the Andean ", "bbox": {"l": 263.3996, "t": 599.62534, "r": 535.99078, "b": 608.83833, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "countries. He has 28 years of experience in the computing field ", "bbox": {"l": 263.3996, "t": 611.62514, "r": 541.27374, "b": 620.83813, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "and has taught database classes in Colombian universities. He ", "bbox": {"l": 263.3996, "t": 623.62494, "r": 541.26465, "b": 632.83794, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "holds a Master\u2019s degree in Computer Science from EAFIT, ", "bbox": {"l": 263.3996, "t": 635.62474, "r": 523.22211, "b": 644.8377399999999, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Colombia. His areas of expertise are database technology, ", "bbox": {"l": 263.3996, "t": 647.62454, "r": 524.77386, "b": 656.83754, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "performance, and data warehousing. Hernando can be ", "bbox": {"l": 263.3996, "t": 659.62434, "r": 508.27124, "b": 668.83735, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "contacted at ", "bbox": {"l": 263.3996, "t": 671.62415, "r": 320.63568, "b": 680.83716, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "hbedoya@us.ibm.com", "bbox": {"l": 320.63971, "t": 671.77356, "r": 410.57852, "b": 680.54832, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": ".", "bbox": {"l": 410.5795, "t": 671.62415, "r": 413.34839, "b": 680.83716, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "picture", "bbox": {"l": 145.41448974609375, "t": 527.2447509765625, "r": 252.08840942382812, "b": 635.383056640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9871657490730286, "cells": []}, {"id": 10, "label": "picture", "bbox": {"l": 142.52883911132812, "t": 375.0449523925781, "r": 251.47850036621094, "b": 503.20648193359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9862572550773621, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 3, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.724002838134766, "t": 754.7037963867188, "r": 257.24335, "b": 764.1082153320312, "coord_origin": "TOPLEFT"}, "confidence": 0.9469243884086609, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 3, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 538.058349609375, "t": 754.3980102539062, "r": 547.25031, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9040942788124084, "cells": [{"id": 1, "text": "xi", "bbox": {"l": 538.85999, "t": 754.848721, "r": 547.25031, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "xi"}, {"label": "section_header", "id": 2, "page_no": 3, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.800003, "t": 73.10313415527344, "r": 151.46161, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9174708724021912, "cells": [{"id": 2, "text": "Preface", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 151.46161, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Preface"}, {"label": "text", "id": 3, "page_no": 3, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.75503540039062, "t": 131.914306640625, "r": 547.30823, "b": 201.86072000000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9869155883789062, "cells": [{"id": 3, "text": "This IBMfi Redpaper\u2122 publication provides information about the IBM i 7.2 feature of IBM ", "bbox": {"l": 136.8, "t": 132.64862000000005, "r": 542.91888, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "DB2fi for i Row and Column Access Control (RCAC). It offers a broad description of the ", "bbox": {"l": 136.79984, "t": 144.64844000000005, "r": 526.65509, "b": 153.86145, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "function and advantages of controlling access to data in a comprehensive and transparent ", "bbox": {"l": 136.79984, "t": 156.64824999999996, "r": 536.82135, "b": 165.86127, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "way. This publication helps you understand the capabilities of RCAC and provides examples ", "bbox": {"l": 136.79987, "t": 168.64806999999996, "r": 544.67975, "b": 177.86108000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "of defining, creating, and implementing the row permissions and column masks in a relational ", "bbox": {"l": 136.79987, "t": 180.64788999999996, "r": 547.30823, "b": 189.86090000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "database environment.", "bbox": {"l": 136.79987, "t": 192.64770999999996, "r": 238.32117, "b": 201.86072000000001, "coord_origin": "TOPLEFT"}}]}, "text": "This IBMfi Redpaper\u2122 publication provides information about the IBM i 7.2 feature of IBM DB2fi for i Row and Column Access Control (RCAC). It offers a broad description of the function and advantages of controlling access to data in a comprehensive and transparent way. This publication helps you understand the capabilities of RCAC and provides examples of defining, creating, and implementing the row permissions and column masks in a relational database environment."}, {"label": "text", "id": 4, "page_no": 3, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.94647216796875, "t": 214.0637664794922, "r": 546.4657, "b": 260.1856384277344, "coord_origin": "TOPLEFT"}, "confidence": 0.987220287322998, "cells": [{"id": 9, "text": "This paper is intended for database engineers, data-centric application developers, and ", "bbox": {"l": 136.79987, "t": 214.60748, "r": 524.18518, "b": 223.82050000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "security officers who want to design and implement RCAC as a part of their data control and ", "bbox": {"l": 136.79987, "t": 226.6073, "r": 546.4657, "b": 235.82030999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "governance policy. A solid background in IBM i object level security, DB2 for i relational ", "bbox": {"l": 136.79987, "t": 238.60712, "r": 521.25488, "b": 247.82012999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "database concepts, and SQL is assumed.", "bbox": {"l": 136.79987, "t": 250.60693000000003, "r": 321.69434, "b": 259.81994999999995, "coord_origin": "TOPLEFT"}}]}, "text": "This paper is intended for database engineers, data-centric application developers, and security officers who want to design and implement RCAC as a part of their data control and governance policy. A solid background in IBM i object level security, DB2 for i relational database concepts, and SQL is assumed."}, {"label": "section_header", "id": 5, "page_no": 3, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 64.22550201416016, "t": 287.1894226074219, "r": 125.36661, "b": 303.0636, "coord_origin": "TOPLEFT"}, "confidence": 0.9255504608154297, "cells": [{"id": 13, "text": "Authors", "bbox": {"l": 64.800003, "t": 288.3006, "r": 125.36661, "b": 303.0636, "coord_origin": "TOPLEFT"}}]}, "text": "Authors"}, {"label": "text", "id": 6, "page_no": 3, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.71319580078125, "t": 319.8118591308594, "r": 547.23669, "b": 342.1517028808594, "coord_origin": "TOPLEFT"}, "confidence": 0.9713318347930908, "cells": [{"id": 14, "text": "This paper was produced by the IBM DB2 for i Center of Excellence team in partnership with ", "bbox": {"l": 136.8, "t": 320.62871999999993, "r": 547.23669, "b": 329.8417099999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "the International Technical Support Organization (ITSO), Rochester, Minnesota US.", "bbox": {"l": 136.8, "t": 332.62854, "r": 505.05518, "b": 341.84152, "coord_origin": "TOPLEFT"}}]}, "text": "This paper was produced by the IBM DB2 for i Center of Excellence team in partnership with the International Technical Support Organization (ITSO), Rochester, Minnesota US."}, {"label": "text", "id": 7, "page_no": 3, "cluster": {"id": 7, "label": "text", "bbox": {"l": 262.6522521972656, "t": 374.687255859375, "r": 541.25079, "b": 516.9314575195312, "coord_origin": "TOPLEFT"}, "confidence": 0.9842760562896729, "cells": [{"id": 16, "text": "Jim Bainbridge", "bbox": {"l": 263.39957, "t": 375.64877, "r": 335.7251, "b": 384.86176, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": " is a senior DB2 consultant on the DB2 for i ", "bbox": {"l": 335.69922, "t": 375.64877, "r": 529.34259, "b": 384.86176, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Center of Excellence team in the IBM Lab Services and ", "bbox": {"l": 263.3996, "t": 387.64859, "r": 511.50717, "b": 396.86157, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Training organization. His primary role is training and ", "bbox": {"l": 263.3996, "t": 399.64841, "r": 499.077, "b": 408.86139, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "implementation services for IBM DB2 Web Query for i and ", "bbox": {"l": 263.3996, "t": 411.64822, "r": 522.51996, "b": 420.86121, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "business analytics. Jim began his career with IBM 30 years ago ", "bbox": {"l": 263.3996, "t": 423.64804, "r": 541.25079, "b": 432.86102, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "in the IBM Rochester Development Lab, where he developed ", "bbox": {"l": 263.3996, "t": 435.64786, "r": 534.71411, "b": 444.86084, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "cooperative processing products that paired IBM PCs with IBM ", "bbox": {"l": 263.3996, "t": 447.64767, "r": 541.22375, "b": 456.86066, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "S/36 and AS/.400 systems. In the years since, Jim has held ", "bbox": {"l": 263.3996, "t": 459.64749, "r": 528.91016, "b": 468.86047, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "numerous technical roles, including independent software ", "bbox": {"l": 263.3996, "t": 471.64731, "r": 520.24207, "b": 480.86029, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "vendors technical support on a broad range of IBM ", "bbox": {"l": 263.3996, "t": 483.64713, "r": 490.6967200000001, "b": 492.86011, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "technologies and products, and supporting customers in the ", "bbox": {"l": 263.3996, "t": 495.64694, "r": 530.95514, "b": 504.85992, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IBM Executive Briefing Center and IBM Project Office.", "bbox": {"l": 263.3996, "t": 507.64676, "r": 501.62973, "b": 516.85974, "coord_origin": "TOPLEFT"}}]}, "text": "Jim Bainbridge is a senior DB2 consultant on the DB2 for i Center of Excellence team in the IBM Lab Services and Training organization. His primary role is training and implementation services for IBM DB2 Web Query for i and business analytics. Jim began his career with IBM 30 years ago in the IBM Rochester Development Lab, where he developed cooperative processing products that paired IBM PCs with IBM S/36 and AS/.400 systems. In the years since, Jim has held numerous technical roles, including independent software vendors technical support on a broad range of IBM technologies and products, and supporting customers in the IBM Executive Briefing Center and IBM Project Office."}, {"label": "text", "id": 8, "page_no": 3, "cluster": {"id": 8, "label": "text", "bbox": {"l": 262.4736328125, "t": 526.50830078125, "r": 541.27374, "b": 680.83716, "coord_origin": "TOPLEFT"}, "confidence": 0.9823779463768005, "cells": [{"id": 29, "text": "Hernando Bedoya", "bbox": {"l": 263.3996, "t": 527.62653, "r": 348.38229, "b": 536.83952, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": " is a Senior IT Specialist at STG Lab ", "bbox": {"l": 348.41916, "t": 527.62653, "r": 512.3429, "b": 536.83952, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Services and Training in Rochester, Minnesota. He writes ", "bbox": {"l": 263.3996, "t": 539.62633, "r": 519.26306, "b": 548.83932, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "extensively and teaches IBM classes worldwide in all areas of ", "bbox": {"l": 263.3996, "t": 551.62613, "r": 538.40308, "b": 560.8391300000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "DB2 for i. Before joining STG Lab Services, he worked in the ", "bbox": {"l": 263.3996, "t": 563.62593, "r": 533.95715, "b": 572.83893, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "ITSO for nine years writing multiple IBM Redbooksfi ", "bbox": {"l": 263.3996, "t": 575.62573, "r": 496.94464, "b": 584.8387299999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "publications. He also worked for IBM Colombia as an IBM ", "bbox": {"l": 263.3996, "t": 587.62553, "r": 520.38562, "b": 596.83853, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "AS/400fi IT Specialist doing presales support for the Andean ", "bbox": {"l": 263.3996, "t": 599.62534, "r": 535.99078, "b": 608.83833, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "countries. He has 28 years of experience in the computing field ", "bbox": {"l": 263.3996, "t": 611.62514, "r": 541.27374, "b": 620.83813, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "and has taught database classes in Colombian universities. He ", "bbox": {"l": 263.3996, "t": 623.62494, "r": 541.26465, "b": 632.83794, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "holds a Master\u2019s degree in Computer Science from EAFIT, ", "bbox": {"l": 263.3996, "t": 635.62474, "r": 523.22211, "b": 644.8377399999999, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Colombia. His areas of expertise are database technology, ", "bbox": {"l": 263.3996, "t": 647.62454, "r": 524.77386, "b": 656.83754, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "performance, and data warehousing. Hernando can be ", "bbox": {"l": 263.3996, "t": 659.62434, "r": 508.27124, "b": 668.83735, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "contacted at ", "bbox": {"l": 263.3996, "t": 671.62415, "r": 320.63568, "b": 680.83716, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "hbedoya@us.ibm.com", "bbox": {"l": 320.63971, "t": 671.77356, "r": 410.57852, "b": 680.54832, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": ".", "bbox": {"l": 410.5795, "t": 671.62415, "r": 413.34839, "b": 680.83716, "coord_origin": "TOPLEFT"}}]}, "text": "Hernando Bedoya is a Senior IT Specialist at STG Lab Services and Training in Rochester, Minnesota. He writes extensively and teaches IBM classes worldwide in all areas of DB2 for i. Before joining STG Lab Services, he worked in the ITSO for nine years writing multiple IBM Redbooksfi publications. He also worked for IBM Colombia as an IBM AS/400fi IT Specialist doing presales support for the Andean countries. He has 28 years of experience in the computing field and has taught database classes in Colombian universities. He holds a Master\u2019s degree in Computer Science from EAFIT, Colombia. His areas of expertise are database technology, performance, and data warehousing. Hernando can be contacted at hbedoya@us.ibm.com ."}, {"label": "picture", "id": 9, "page_no": 3, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 145.41448974609375, "t": 527.2447509765625, "r": 252.08840942382812, "b": 635.383056640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9871657490730286, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 10, "page_no": 3, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 142.52883911132812, "t": 375.0449523925781, "r": 251.47850036621094, "b": 503.20648193359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9862572550773621, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "section_header", "id": 2, "page_no": 3, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.800003, "t": 73.10313415527344, "r": 151.46161, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9174708724021912, "cells": [{"id": 2, "text": "Preface", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 151.46161, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Preface"}, {"label": "text", "id": 3, "page_no": 3, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.75503540039062, "t": 131.914306640625, "r": 547.30823, "b": 201.86072000000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9869155883789062, "cells": [{"id": 3, "text": "This IBMfi Redpaper\u2122 publication provides information about the IBM i 7.2 feature of IBM ", "bbox": {"l": 136.8, "t": 132.64862000000005, "r": 542.91888, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "DB2fi for i Row and Column Access Control (RCAC). It offers a broad description of the ", "bbox": {"l": 136.79984, "t": 144.64844000000005, "r": 526.65509, "b": 153.86145, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "function and advantages of controlling access to data in a comprehensive and transparent ", "bbox": {"l": 136.79984, "t": 156.64824999999996, "r": 536.82135, "b": 165.86127, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "way. This publication helps you understand the capabilities of RCAC and provides examples ", "bbox": {"l": 136.79987, "t": 168.64806999999996, "r": 544.67975, "b": 177.86108000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "of defining, creating, and implementing the row permissions and column masks in a relational ", "bbox": {"l": 136.79987, "t": 180.64788999999996, "r": 547.30823, "b": 189.86090000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "database environment.", "bbox": {"l": 136.79987, "t": 192.64770999999996, "r": 238.32117, "b": 201.86072000000001, "coord_origin": "TOPLEFT"}}]}, "text": "This IBMfi Redpaper\u2122 publication provides information about the IBM i 7.2 feature of IBM DB2fi for i Row and Column Access Control (RCAC). It offers a broad description of the function and advantages of controlling access to data in a comprehensive and transparent way. This publication helps you understand the capabilities of RCAC and provides examples of defining, creating, and implementing the row permissions and column masks in a relational database environment."}, {"label": "text", "id": 4, "page_no": 3, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.94647216796875, "t": 214.0637664794922, "r": 546.4657, "b": 260.1856384277344, "coord_origin": "TOPLEFT"}, "confidence": 0.987220287322998, "cells": [{"id": 9, "text": "This paper is intended for database engineers, data-centric application developers, and ", "bbox": {"l": 136.79987, "t": 214.60748, "r": 524.18518, "b": 223.82050000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "security officers who want to design and implement RCAC as a part of their data control and ", "bbox": {"l": 136.79987, "t": 226.6073, "r": 546.4657, "b": 235.82030999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "governance policy. A solid background in IBM i object level security, DB2 for i relational ", "bbox": {"l": 136.79987, "t": 238.60712, "r": 521.25488, "b": 247.82012999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "database concepts, and SQL is assumed.", "bbox": {"l": 136.79987, "t": 250.60693000000003, "r": 321.69434, "b": 259.81994999999995, "coord_origin": "TOPLEFT"}}]}, "text": "This paper is intended for database engineers, data-centric application developers, and security officers who want to design and implement RCAC as a part of their data control and governance policy. A solid background in IBM i object level security, DB2 for i relational database concepts, and SQL is assumed."}, {"label": "section_header", "id": 5, "page_no": 3, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 64.22550201416016, "t": 287.1894226074219, "r": 125.36661, "b": 303.0636, "coord_origin": "TOPLEFT"}, "confidence": 0.9255504608154297, "cells": [{"id": 13, "text": "Authors", "bbox": {"l": 64.800003, "t": 288.3006, "r": 125.36661, "b": 303.0636, "coord_origin": "TOPLEFT"}}]}, "text": "Authors"}, {"label": "text", "id": 6, "page_no": 3, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.71319580078125, "t": 319.8118591308594, "r": 547.23669, "b": 342.1517028808594, "coord_origin": "TOPLEFT"}, "confidence": 0.9713318347930908, "cells": [{"id": 14, "text": "This paper was produced by the IBM DB2 for i Center of Excellence team in partnership with ", "bbox": {"l": 136.8, "t": 320.62871999999993, "r": 547.23669, "b": 329.8417099999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "the International Technical Support Organization (ITSO), Rochester, Minnesota US.", "bbox": {"l": 136.8, "t": 332.62854, "r": 505.05518, "b": 341.84152, "coord_origin": "TOPLEFT"}}]}, "text": "This paper was produced by the IBM DB2 for i Center of Excellence team in partnership with the International Technical Support Organization (ITSO), Rochester, Minnesota US."}, {"label": "text", "id": 7, "page_no": 3, "cluster": {"id": 7, "label": "text", "bbox": {"l": 262.6522521972656, "t": 374.687255859375, "r": 541.25079, "b": 516.9314575195312, "coord_origin": "TOPLEFT"}, "confidence": 0.9842760562896729, "cells": [{"id": 16, "text": "Jim Bainbridge", "bbox": {"l": 263.39957, "t": 375.64877, "r": 335.7251, "b": 384.86176, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": " is a senior DB2 consultant on the DB2 for i ", "bbox": {"l": 335.69922, "t": 375.64877, "r": 529.34259, "b": 384.86176, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Center of Excellence team in the IBM Lab Services and ", "bbox": {"l": 263.3996, "t": 387.64859, "r": 511.50717, "b": 396.86157, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Training organization. His primary role is training and ", "bbox": {"l": 263.3996, "t": 399.64841, "r": 499.077, "b": 408.86139, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "implementation services for IBM DB2 Web Query for i and ", "bbox": {"l": 263.3996, "t": 411.64822, "r": 522.51996, "b": 420.86121, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "business analytics. Jim began his career with IBM 30 years ago ", "bbox": {"l": 263.3996, "t": 423.64804, "r": 541.25079, "b": 432.86102, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "in the IBM Rochester Development Lab, where he developed ", "bbox": {"l": 263.3996, "t": 435.64786, "r": 534.71411, "b": 444.86084, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "cooperative processing products that paired IBM PCs with IBM ", "bbox": {"l": 263.3996, "t": 447.64767, "r": 541.22375, "b": 456.86066, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "S/36 and AS/.400 systems. In the years since, Jim has held ", "bbox": {"l": 263.3996, "t": 459.64749, "r": 528.91016, "b": 468.86047, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "numerous technical roles, including independent software ", "bbox": {"l": 263.3996, "t": 471.64731, "r": 520.24207, "b": 480.86029, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "vendors technical support on a broad range of IBM ", "bbox": {"l": 263.3996, "t": 483.64713, "r": 490.6967200000001, "b": 492.86011, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "technologies and products, and supporting customers in the ", "bbox": {"l": 263.3996, "t": 495.64694, "r": 530.95514, "b": 504.85992, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IBM Executive Briefing Center and IBM Project Office.", "bbox": {"l": 263.3996, "t": 507.64676, "r": 501.62973, "b": 516.85974, "coord_origin": "TOPLEFT"}}]}, "text": "Jim Bainbridge is a senior DB2 consultant on the DB2 for i Center of Excellence team in the IBM Lab Services and Training organization. His primary role is training and implementation services for IBM DB2 Web Query for i and business analytics. Jim began his career with IBM 30 years ago in the IBM Rochester Development Lab, where he developed cooperative processing products that paired IBM PCs with IBM S/36 and AS/.400 systems. In the years since, Jim has held numerous technical roles, including independent software vendors technical support on a broad range of IBM technologies and products, and supporting customers in the IBM Executive Briefing Center and IBM Project Office."}, {"label": "text", "id": 8, "page_no": 3, "cluster": {"id": 8, "label": "text", "bbox": {"l": 262.4736328125, "t": 526.50830078125, "r": 541.27374, "b": 680.83716, "coord_origin": "TOPLEFT"}, "confidence": 0.9823779463768005, "cells": [{"id": 29, "text": "Hernando Bedoya", "bbox": {"l": 263.3996, "t": 527.62653, "r": 348.38229, "b": 536.83952, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": " is a Senior IT Specialist at STG Lab ", "bbox": {"l": 348.41916, "t": 527.62653, "r": 512.3429, "b": 536.83952, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Services and Training in Rochester, Minnesota. He writes ", "bbox": {"l": 263.3996, "t": 539.62633, "r": 519.26306, "b": 548.83932, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "extensively and teaches IBM classes worldwide in all areas of ", "bbox": {"l": 263.3996, "t": 551.62613, "r": 538.40308, "b": 560.8391300000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "DB2 for i. Before joining STG Lab Services, he worked in the ", "bbox": {"l": 263.3996, "t": 563.62593, "r": 533.95715, "b": 572.83893, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "ITSO for nine years writing multiple IBM Redbooksfi ", "bbox": {"l": 263.3996, "t": 575.62573, "r": 496.94464, "b": 584.8387299999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "publications. He also worked for IBM Colombia as an IBM ", "bbox": {"l": 263.3996, "t": 587.62553, "r": 520.38562, "b": 596.83853, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "AS/400fi IT Specialist doing presales support for the Andean ", "bbox": {"l": 263.3996, "t": 599.62534, "r": 535.99078, "b": 608.83833, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "countries. He has 28 years of experience in the computing field ", "bbox": {"l": 263.3996, "t": 611.62514, "r": 541.27374, "b": 620.83813, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "and has taught database classes in Colombian universities. He ", "bbox": {"l": 263.3996, "t": 623.62494, "r": 541.26465, "b": 632.83794, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "holds a Master\u2019s degree in Computer Science from EAFIT, ", "bbox": {"l": 263.3996, "t": 635.62474, "r": 523.22211, "b": 644.8377399999999, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Colombia. His areas of expertise are database technology, ", "bbox": {"l": 263.3996, "t": 647.62454, "r": 524.77386, "b": 656.83754, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "performance, and data warehousing. Hernando can be ", "bbox": {"l": 263.3996, "t": 659.62434, "r": 508.27124, "b": 668.83735, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "contacted at ", "bbox": {"l": 263.3996, "t": 671.62415, "r": 320.63568, "b": 680.83716, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "hbedoya@us.ibm.com", "bbox": {"l": 320.63971, "t": 671.77356, "r": 410.57852, "b": 680.54832, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": ".", "bbox": {"l": 410.5795, "t": 671.62415, "r": 413.34839, "b": 680.83716, "coord_origin": "TOPLEFT"}}]}, "text": "Hernando Bedoya is a Senior IT Specialist at STG Lab Services and Training in Rochester, Minnesota. He writes extensively and teaches IBM classes worldwide in all areas of DB2 for i. Before joining STG Lab Services, he worked in the ITSO for nine years writing multiple IBM Redbooksfi publications. He also worked for IBM Colombia as an IBM AS/400fi IT Specialist doing presales support for the Andean countries. He has 28 years of experience in the computing field and has taught database classes in Colombian universities. He holds a Master\u2019s degree in Computer Science from EAFIT, Colombia. His areas of expertise are database technology, performance, and data warehousing. Hernando can be contacted at hbedoya@us.ibm.com ."}, {"label": "picture", "id": 9, "page_no": 3, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 145.41448974609375, "t": 527.2447509765625, "r": 252.08840942382812, "b": 635.383056640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9871657490730286, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 10, "page_no": 3, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 142.52883911132812, "t": 375.0449523925781, "r": 251.47850036621094, "b": 503.20648193359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9862572550773621, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 3, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.724002838134766, "t": 754.7037963867188, "r": 257.24335, "b": 764.1082153320312, "coord_origin": "TOPLEFT"}, "confidence": 0.9469243884086609, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 3, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 538.058349609375, "t": 754.3980102539062, "r": 547.25031, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9040942788124084, "cells": [{"id": 1, "text": "xi", "bbox": {"l": 538.85999, "t": 754.848721, "r": 547.25031, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "xi"}]}}, {"page_no": 4, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "1", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Chapter 1.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Securing and protecting IBM DB2 ", "bbox": {"l": 136.8, "t": 254.88635, "r": 547.30475, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "data", "bbox": {"l": 136.8, "t": 285.84671, "r": 190.29802, "b": 309.8782, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Recent news headlines are filled with reports of data breaches and cyber-attacks impacting ", "bbox": {"l": 136.8, "t": 348.70871, "r": 542.25665, "b": 357.92169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "global businesses of all sizes. The Identity Theft Resource Center$^{1}$ reports that almost 5000 ", "bbox": {"l": 136.80096, "t": 360.70853, "r": 544.96643, "b": 369.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "data breaches have occurred since 2005, exposing over 600 million records of data. The ", "bbox": {"l": 136.79965, "t": 372.70853, "r": 529.53839, "b": 381.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "financial cost of these data breaches is skyrocketing. Studies from the Ponemon Institute$^{2}$ ", "bbox": {"l": 136.79965, "t": 384.7083400000001, "r": 535.32874, "b": 393.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "revealed that the average cost of a data breach increased in 2013 by 15% globally and ", "bbox": {"l": 136.80026, "t": 396.70853, "r": 521.64374, "b": 405.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "resulted in a brand equity loss of $9.4 million per attack. The average cost that is incurred for ", "bbox": {"l": 136.80026, "t": 408.7083400000001, "r": 547.13135, "b": 417.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "each lost record containing sensitive information increased more than 9% to $145 per record. ", "bbox": {"l": 136.80023, "t": 420.70816, "r": 547.25403, "b": 429.92114, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Businesses must make a serious effort to secure their data and recognize that securing ", "bbox": {"l": 136.80023, "t": 442.7277199999999, "r": 525.06482, "b": 451.9407, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "information assets is a cost of doing business. In many parts of the world and in many ", "bbox": {"l": 136.80025, "t": 454.72754000000003, "r": 518.26825, "b": 463.94052, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "industries, securing the data is required by law and subject to audits. Data security is no ", "bbox": {"l": 136.80025, "t": 466.72736, "r": 527.2063, "b": 475.94034, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "longer an option; it is a requirement.", "bbox": {"l": 136.80025, "t": 478.72717, "r": 296.31067, "b": 487.94016, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "This chapter describes how you can secure and protect data in DB2 for i. The following topics ", "bbox": {"l": 136.80025, "t": 500.68698, "r": 547.15515, "b": 509.89996, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "are covered in this chapter:", "bbox": {"l": 136.80025, "t": 512.6868, "r": 257.28036, "b": 521.89978, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "GLYPH", "bbox": {"l": 136.80025, "t": 529.87576, "r": 141.78024, "b": 538.6505099999999, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Security fundamentals", "bbox": {"l": 151.20041, "t": 529.72635, "r": 250.23166999999998, "b": 538.93936, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "GLYPH", "bbox": {"l": 136.80025, "t": 541.87556, "r": 141.78024, "b": 550.65031, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Current state of IBM i security", "bbox": {"l": 151.20041, "t": 541.72617, "r": 282.98114, "b": 550.93916, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "GLYPH", "bbox": {"l": 136.80025, "t": 553.87537, "r": 141.78024, "b": 562.65012, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "DB2 for i security controls", "bbox": {"l": 151.20041, "t": 553.72597, "r": 264.88187, "b": 562.93896, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "1", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "$^{1 }$http://www.idtheftcenter.org", "bbox": {"l": 136.8, "t": 717.750061, "r": 258.36255, "b": 724.780441, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "$^{2 }$http://www.ponemon.org", "bbox": {"l": 136.8, "t": 727.709961, "r": 231.90257, "b": 734.740341, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "/", "bbox": {"l": 231.84036, "t": 727.590263, "r": 234.05881, "b": 734.97176, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.68400573730469, "t": 754.6591796875, "r": 257.24335, "b": 764.1430053710938, "coord_origin": "TOPLEFT"}, "confidence": 0.9370514154434204, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 541.2396240234375, "t": 754.2869873046875, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8513588309288025, "cells": [{"id": 1, "text": "1", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 1.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "section_header", "bbox": {"l": 136.68006896972656, "t": 253.28985595703125, "r": 547.30475, "b": 309.8782, "coord_origin": "TOPLEFT"}, "confidence": 0.9377049207687378, "cells": [{"id": 3, "text": "Securing and protecting IBM DB2 ", "bbox": {"l": 136.8, "t": 254.88635, "r": 547.30475, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "data", "bbox": {"l": 136.8, "t": 285.84671, "r": 190.29802, "b": 309.8782, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 136.15219116210938, "t": 347.975341796875, "r": 547.25403, "b": 430.37359619140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9868757724761963, "cells": [{"id": 5, "text": "Recent news headlines are filled with reports of data breaches and cyber-attacks impacting ", "bbox": {"l": 136.8, "t": 348.70871, "r": 542.25665, "b": 357.92169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "global businesses of all sizes. The Identity Theft Resource Center$^{1}$ reports that almost 5000 ", "bbox": {"l": 136.80096, "t": 360.70853, "r": 544.96643, "b": 369.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "data breaches have occurred since 2005, exposing over 600 million records of data. The ", "bbox": {"l": 136.79965, "t": 372.70853, "r": 529.53839, "b": 381.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "financial cost of these data breaches is skyrocketing. Studies from the Ponemon Institute$^{2}$ ", "bbox": {"l": 136.79965, "t": 384.7083400000001, "r": 535.32874, "b": 393.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "revealed that the average cost of a data breach increased in 2013 by 15% globally and ", "bbox": {"l": 136.80026, "t": 396.70853, "r": 521.64374, "b": 405.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "resulted in a brand equity loss of $9.4 million per attack. The average cost that is incurred for ", "bbox": {"l": 136.80026, "t": 408.7083400000001, "r": 547.13135, "b": 417.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "each lost record containing sensitive information increased more than 9% to $145 per record. ", "bbox": {"l": 136.80023, "t": 420.70816, "r": 547.25403, "b": 429.92114, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.05917358398438, "t": 442.1153564453125, "r": 527.2063, "b": 488.44146728515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9865864515304565, "cells": [{"id": 12, "text": "Businesses must make a serious effort to secure their data and recognize that securing ", "bbox": {"l": 136.80023, "t": 442.7277199999999, "r": 525.06482, "b": 451.9407, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "information assets is a cost of doing business. In many parts of the world and in many ", "bbox": {"l": 136.80025, "t": 454.72754000000003, "r": 518.26825, "b": 463.94052, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "industries, securing the data is required by law and subject to audits. Data security is no ", "bbox": {"l": 136.80025, "t": 466.72736, "r": 527.2063, "b": 475.94034, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "longer an option; it is a requirement.", "bbox": {"l": 136.80025, "t": 478.72717, "r": 296.31067, "b": 487.94016, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 135.5961456298828, "t": 500.0403137207031, "r": 547.15515, "b": 521.89978, "coord_origin": "TOPLEFT"}, "confidence": 0.9734498858451843, "cells": [{"id": 16, "text": "This chapter describes how you can secure and protect data in DB2 for i. The following topics ", "bbox": {"l": 136.80025, "t": 500.68698, "r": 547.15515, "b": 509.89996, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "are covered in this chapter:", "bbox": {"l": 136.80025, "t": 512.6868, "r": 257.28036, "b": 521.89978, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.86915588378906, "t": 528.70361328125, "r": 250.23166999999998, "b": 539.0433349609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9374465346336365, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.80025, "t": 529.87576, "r": 141.78024, "b": 538.6505099999999, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Security fundamentals", "bbox": {"l": 151.20041, "t": 529.72635, "r": 250.23166999999998, "b": 538.93936, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.742431640625, "t": 540.7142333984375, "r": 282.98114, "b": 551.373291015625, "coord_origin": "TOPLEFT"}, "confidence": 0.933772087097168, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.80025, "t": 541.87556, "r": 141.78024, "b": 550.65031, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Current state of IBM i security", "bbox": {"l": 151.20041, "t": 541.72617, "r": 282.98114, "b": 550.93916, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.86570739746094, "t": 552.4489135742188, "r": 264.88187, "b": 562.93896, "coord_origin": "TOPLEFT"}, "confidence": 0.946319043636322, "cells": [{"id": 22, "text": "GLYPH", "bbox": {"l": 136.80025, "t": 553.87537, "r": 141.78024, "b": 562.65012, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "DB2 for i security controls", "bbox": {"l": 151.20041, "t": 553.72597, "r": 264.88187, "b": 562.93896, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 500.39999, "t": 92.66075897216797, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.7054197788238525, "cells": [{"id": 24, "text": "1", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "footnote", "bbox": {"l": 135.7418975830078, "t": 716.2816772460938, "r": 258.36255, "b": 725.5408325195312, "coord_origin": "TOPLEFT"}, "confidence": 0.7673327326774597, "cells": [{"id": 25, "text": "$^{1 }$http://www.idtheftcenter.org", "bbox": {"l": 136.8, "t": 717.750061, "r": 258.36255, "b": 724.780441, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "footnote", "bbox": {"l": 136.19522094726562, "t": 725.296142578125, "r": 234.42526245117188, "b": 735.2681274414062, "coord_origin": "TOPLEFT"}, "confidence": 0.7980051636695862, "cells": [{"id": 26, "text": "$^{2 }$http://www.ponemon.org", "bbox": {"l": 136.8, "t": 727.709961, "r": 231.90257, "b": 734.740341, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "/", "bbox": {"l": 231.84036, "t": 727.590263, "r": 234.05881, "b": 734.97176, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "picture", "bbox": {"l": 32.05508804321289, "t": 70.42637634277344, "r": 239.62692260742188, "b": 238.041015625, "coord_origin": "TOPLEFT"}, "confidence": 0.7604197263717651, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 4, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.68400573730469, "t": 754.6591796875, "r": 257.24335, "b": 764.1430053710938, "coord_origin": "TOPLEFT"}, "confidence": 0.9370514154434204, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 4, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 541.2396240234375, "t": 754.2869873046875, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8513588309288025, "cells": [{"id": 1, "text": "1", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "1"}, {"label": "text", "id": 2, "page_no": 4, "cluster": {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 1.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 1."}, {"label": "section_header", "id": 3, "page_no": 4, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 136.68006896972656, "t": 253.28985595703125, "r": 547.30475, "b": 309.8782, "coord_origin": "TOPLEFT"}, "confidence": 0.9377049207687378, "cells": [{"id": 3, "text": "Securing and protecting IBM DB2 ", "bbox": {"l": 136.8, "t": 254.88635, "r": 547.30475, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "data", "bbox": {"l": 136.8, "t": 285.84671, "r": 190.29802, "b": 309.8782, "coord_origin": "TOPLEFT"}}]}, "text": "Securing and protecting IBM DB2 data"}, {"label": "text", "id": 4, "page_no": 4, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.15219116210938, "t": 347.975341796875, "r": 547.25403, "b": 430.37359619140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9868757724761963, "cells": [{"id": 5, "text": "Recent news headlines are filled with reports of data breaches and cyber-attacks impacting ", "bbox": {"l": 136.8, "t": 348.70871, "r": 542.25665, "b": 357.92169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "global businesses of all sizes. The Identity Theft Resource Center$^{1}$ reports that almost 5000 ", "bbox": {"l": 136.80096, "t": 360.70853, "r": 544.96643, "b": 369.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "data breaches have occurred since 2005, exposing over 600 million records of data. The ", "bbox": {"l": 136.79965, "t": 372.70853, "r": 529.53839, "b": 381.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "financial cost of these data breaches is skyrocketing. Studies from the Ponemon Institute$^{2}$ ", "bbox": {"l": 136.79965, "t": 384.7083400000001, "r": 535.32874, "b": 393.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "revealed that the average cost of a data breach increased in 2013 by 15% globally and ", "bbox": {"l": 136.80026, "t": 396.70853, "r": 521.64374, "b": 405.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "resulted in a brand equity loss of $9.4 million per attack. The average cost that is incurred for ", "bbox": {"l": 136.80026, "t": 408.7083400000001, "r": 547.13135, "b": 417.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "each lost record containing sensitive information increased more than 9% to $145 per record. ", "bbox": {"l": 136.80023, "t": 420.70816, "r": 547.25403, "b": 429.92114, "coord_origin": "TOPLEFT"}}]}, "text": "Recent news headlines are filled with reports of data breaches and cyber-attacks impacting global businesses of all sizes. The Identity Theft Resource Center$^{1}$ reports that almost 5000 data breaches have occurred since 2005, exposing over 600 million records of data. The financial cost of these data breaches is skyrocketing. Studies from the Ponemon Institute$^{2}$ revealed that the average cost of a data breach increased in 2013 by 15% globally and resulted in a brand equity loss of $9.4 million per attack. The average cost that is incurred for each lost record containing sensitive information increased more than 9% to $145 per record."}, {"label": "text", "id": 5, "page_no": 4, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.05917358398438, "t": 442.1153564453125, "r": 527.2063, "b": 488.44146728515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9865864515304565, "cells": [{"id": 12, "text": "Businesses must make a serious effort to secure their data and recognize that securing ", "bbox": {"l": 136.80023, "t": 442.7277199999999, "r": 525.06482, "b": 451.9407, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "information assets is a cost of doing business. In many parts of the world and in many ", "bbox": {"l": 136.80025, "t": 454.72754000000003, "r": 518.26825, "b": 463.94052, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "industries, securing the data is required by law and subject to audits. Data security is no ", "bbox": {"l": 136.80025, "t": 466.72736, "r": 527.2063, "b": 475.94034, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "longer an option; it is a requirement.", "bbox": {"l": 136.80025, "t": 478.72717, "r": 296.31067, "b": 487.94016, "coord_origin": "TOPLEFT"}}]}, "text": "Businesses must make a serious effort to secure their data and recognize that securing information assets is a cost of doing business. In many parts of the world and in many industries, securing the data is required by law and subject to audits. Data security is no longer an option; it is a requirement."}, {"label": "text", "id": 6, "page_no": 4, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.5961456298828, "t": 500.0403137207031, "r": 547.15515, "b": 521.89978, "coord_origin": "TOPLEFT"}, "confidence": 0.9734498858451843, "cells": [{"id": 16, "text": "This chapter describes how you can secure and protect data in DB2 for i. The following topics ", "bbox": {"l": 136.80025, "t": 500.68698, "r": 547.15515, "b": 509.89996, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "are covered in this chapter:", "bbox": {"l": 136.80025, "t": 512.6868, "r": 257.28036, "b": 521.89978, "coord_origin": "TOPLEFT"}}]}, "text": "This chapter describes how you can secure and protect data in DB2 for i. The following topics are covered in this chapter:"}, {"label": "list_item", "id": 7, "page_no": 4, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.86915588378906, "t": 528.70361328125, "r": 250.23166999999998, "b": 539.0433349609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9374465346336365, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.80025, "t": 529.87576, "r": 141.78024, "b": 538.6505099999999, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Security fundamentals", "bbox": {"l": 151.20041, "t": 529.72635, "r": 250.23166999999998, "b": 538.93936, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Security fundamentals"}, {"label": "list_item", "id": 8, "page_no": 4, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.742431640625, "t": 540.7142333984375, "r": 282.98114, "b": 551.373291015625, "coord_origin": "TOPLEFT"}, "confidence": 0.933772087097168, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.80025, "t": 541.87556, "r": 141.78024, "b": 550.65031, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Current state of IBM i security", "bbox": {"l": 151.20041, "t": 541.72617, "r": 282.98114, "b": 550.93916, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Current state of IBM i security"}, {"label": "list_item", "id": 9, "page_no": 4, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.86570739746094, "t": 552.4489135742188, "r": 264.88187, "b": 562.93896, "coord_origin": "TOPLEFT"}, "confidence": 0.946319043636322, "cells": [{"id": 22, "text": "GLYPH", "bbox": {"l": 136.80025, "t": 553.87537, "r": 141.78024, "b": 562.65012, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "DB2 for i security controls", "bbox": {"l": 151.20041, "t": 553.72597, "r": 264.88187, "b": 562.93896, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH DB2 for i security controls"}, {"label": "text", "id": 10, "page_no": 4, "cluster": {"id": 10, "label": "text", "bbox": {"l": 500.39999, "t": 92.66075897216797, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.7054197788238525, "cells": [{"id": 24, "text": "1", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, "text": "1"}, {"label": "footnote", "id": 11, "page_no": 4, "cluster": {"id": 11, "label": "footnote", "bbox": {"l": 135.7418975830078, "t": 716.2816772460938, "r": 258.36255, "b": 725.5408325195312, "coord_origin": "TOPLEFT"}, "confidence": 0.7673327326774597, "cells": [{"id": 25, "text": "$^{1 }$http://www.idtheftcenter.org", "bbox": {"l": 136.8, "t": 717.750061, "r": 258.36255, "b": 724.780441, "coord_origin": "TOPLEFT"}}]}, "text": "$^{1 }$http://www.idtheftcenter.org"}, {"label": "footnote", "id": 12, "page_no": 4, "cluster": {"id": 12, "label": "footnote", "bbox": {"l": 136.19522094726562, "t": 725.296142578125, "r": 234.42526245117188, "b": 735.2681274414062, "coord_origin": "TOPLEFT"}, "confidence": 0.7980051636695862, "cells": [{"id": 26, "text": "$^{2 }$http://www.ponemon.org", "bbox": {"l": 136.8, "t": 727.709961, "r": 231.90257, "b": 734.740341, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "/", "bbox": {"l": 231.84036, "t": 727.590263, "r": 234.05881, "b": 734.97176, "coord_origin": "TOPLEFT"}}]}, "text": "$^{2 }$http://www.ponemon.org /"}, {"label": "picture", "id": 13, "page_no": 4, "cluster": {"id": 13, "label": "picture", "bbox": {"l": 32.05508804321289, "t": 70.42637634277344, "r": 239.62692260742188, "b": 238.041015625, "coord_origin": "TOPLEFT"}, "confidence": 0.7604197263717651, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 4, "cluster": {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 1.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 1."}, {"label": "section_header", "id": 3, "page_no": 4, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 136.68006896972656, "t": 253.28985595703125, "r": 547.30475, "b": 309.8782, "coord_origin": "TOPLEFT"}, "confidence": 0.9377049207687378, "cells": [{"id": 3, "text": "Securing and protecting IBM DB2 ", "bbox": {"l": 136.8, "t": 254.88635, "r": 547.30475, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "data", "bbox": {"l": 136.8, "t": 285.84671, "r": 190.29802, "b": 309.8782, "coord_origin": "TOPLEFT"}}]}, "text": "Securing and protecting IBM DB2 data"}, {"label": "text", "id": 4, "page_no": 4, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.15219116210938, "t": 347.975341796875, "r": 547.25403, "b": 430.37359619140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9868757724761963, "cells": [{"id": 5, "text": "Recent news headlines are filled with reports of data breaches and cyber-attacks impacting ", "bbox": {"l": 136.8, "t": 348.70871, "r": 542.25665, "b": 357.92169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "global businesses of all sizes. The Identity Theft Resource Center$^{1}$ reports that almost 5000 ", "bbox": {"l": 136.80096, "t": 360.70853, "r": 544.96643, "b": 369.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "data breaches have occurred since 2005, exposing over 600 million records of data. The ", "bbox": {"l": 136.79965, "t": 372.70853, "r": 529.53839, "b": 381.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "financial cost of these data breaches is skyrocketing. Studies from the Ponemon Institute$^{2}$ ", "bbox": {"l": 136.79965, "t": 384.7083400000001, "r": 535.32874, "b": 393.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "revealed that the average cost of a data breach increased in 2013 by 15% globally and ", "bbox": {"l": 136.80026, "t": 396.70853, "r": 521.64374, "b": 405.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "resulted in a brand equity loss of $9.4 million per attack. The average cost that is incurred for ", "bbox": {"l": 136.80026, "t": 408.7083400000001, "r": 547.13135, "b": 417.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "each lost record containing sensitive information increased more than 9% to $145 per record. ", "bbox": {"l": 136.80023, "t": 420.70816, "r": 547.25403, "b": 429.92114, "coord_origin": "TOPLEFT"}}]}, "text": "Recent news headlines are filled with reports of data breaches and cyber-attacks impacting global businesses of all sizes. The Identity Theft Resource Center$^{1}$ reports that almost 5000 data breaches have occurred since 2005, exposing over 600 million records of data. The financial cost of these data breaches is skyrocketing. Studies from the Ponemon Institute$^{2}$ revealed that the average cost of a data breach increased in 2013 by 15% globally and resulted in a brand equity loss of $9.4 million per attack. The average cost that is incurred for each lost record containing sensitive information increased more than 9% to $145 per record."}, {"label": "text", "id": 5, "page_no": 4, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.05917358398438, "t": 442.1153564453125, "r": 527.2063, "b": 488.44146728515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9865864515304565, "cells": [{"id": 12, "text": "Businesses must make a serious effort to secure their data and recognize that securing ", "bbox": {"l": 136.80023, "t": 442.7277199999999, "r": 525.06482, "b": 451.9407, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "information assets is a cost of doing business. In many parts of the world and in many ", "bbox": {"l": 136.80025, "t": 454.72754000000003, "r": 518.26825, "b": 463.94052, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "industries, securing the data is required by law and subject to audits. Data security is no ", "bbox": {"l": 136.80025, "t": 466.72736, "r": 527.2063, "b": 475.94034, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "longer an option; it is a requirement.", "bbox": {"l": 136.80025, "t": 478.72717, "r": 296.31067, "b": 487.94016, "coord_origin": "TOPLEFT"}}]}, "text": "Businesses must make a serious effort to secure their data and recognize that securing information assets is a cost of doing business. In many parts of the world and in many industries, securing the data is required by law and subject to audits. Data security is no longer an option; it is a requirement."}, {"label": "text", "id": 6, "page_no": 4, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.5961456298828, "t": 500.0403137207031, "r": 547.15515, "b": 521.89978, "coord_origin": "TOPLEFT"}, "confidence": 0.9734498858451843, "cells": [{"id": 16, "text": "This chapter describes how you can secure and protect data in DB2 for i. The following topics ", "bbox": {"l": 136.80025, "t": 500.68698, "r": 547.15515, "b": 509.89996, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "are covered in this chapter:", "bbox": {"l": 136.80025, "t": 512.6868, "r": 257.28036, "b": 521.89978, "coord_origin": "TOPLEFT"}}]}, "text": "This chapter describes how you can secure and protect data in DB2 for i. The following topics are covered in this chapter:"}, {"label": "list_item", "id": 7, "page_no": 4, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.86915588378906, "t": 528.70361328125, "r": 250.23166999999998, "b": 539.0433349609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9374465346336365, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.80025, "t": 529.87576, "r": 141.78024, "b": 538.6505099999999, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Security fundamentals", "bbox": {"l": 151.20041, "t": 529.72635, "r": 250.23166999999998, "b": 538.93936, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Security fundamentals"}, {"label": "list_item", "id": 8, "page_no": 4, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.742431640625, "t": 540.7142333984375, "r": 282.98114, "b": 551.373291015625, "coord_origin": "TOPLEFT"}, "confidence": 0.933772087097168, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.80025, "t": 541.87556, "r": 141.78024, "b": 550.65031, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Current state of IBM i security", "bbox": {"l": 151.20041, "t": 541.72617, "r": 282.98114, "b": 550.93916, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Current state of IBM i security"}, {"label": "list_item", "id": 9, "page_no": 4, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.86570739746094, "t": 552.4489135742188, "r": 264.88187, "b": 562.93896, "coord_origin": "TOPLEFT"}, "confidence": 0.946319043636322, "cells": [{"id": 22, "text": "GLYPH", "bbox": {"l": 136.80025, "t": 553.87537, "r": 141.78024, "b": 562.65012, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "DB2 for i security controls", "bbox": {"l": 151.20041, "t": 553.72597, "r": 264.88187, "b": 562.93896, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH DB2 for i security controls"}, {"label": "text", "id": 10, "page_no": 4, "cluster": {"id": 10, "label": "text", "bbox": {"l": 500.39999, "t": 92.66075897216797, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.7054197788238525, "cells": [{"id": 24, "text": "1", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, "text": "1"}, {"label": "footnote", "id": 11, "page_no": 4, "cluster": {"id": 11, "label": "footnote", "bbox": {"l": 135.7418975830078, "t": 716.2816772460938, "r": 258.36255, "b": 725.5408325195312, "coord_origin": "TOPLEFT"}, "confidence": 0.7673327326774597, "cells": [{"id": 25, "text": "$^{1 }$http://www.idtheftcenter.org", "bbox": {"l": 136.8, "t": 717.750061, "r": 258.36255, "b": 724.780441, "coord_origin": "TOPLEFT"}}]}, "text": "$^{1 }$http://www.idtheftcenter.org"}, {"label": "footnote", "id": 12, "page_no": 4, "cluster": {"id": 12, "label": "footnote", "bbox": {"l": 136.19522094726562, "t": 725.296142578125, "r": 234.42526245117188, "b": 735.2681274414062, "coord_origin": "TOPLEFT"}, "confidence": 0.7980051636695862, "cells": [{"id": 26, "text": "$^{2 }$http://www.ponemon.org", "bbox": {"l": 136.8, "t": 727.709961, "r": 231.90257, "b": 734.740341, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "/", "bbox": {"l": 231.84036, "t": 727.590263, "r": 234.05881, "b": 734.97176, "coord_origin": "TOPLEFT"}}]}, "text": "$^{2 }$http://www.ponemon.org /"}, {"label": "picture", "id": 13, "page_no": 4, "cluster": {"id": 13, "label": "picture", "bbox": {"l": 32.05508804321289, "t": 70.42637634277344, "r": 239.62692260742188, "b": 238.041015625, "coord_origin": "TOPLEFT"}, "confidence": 0.7604197263717651, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 4, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.68400573730469, "t": 754.6591796875, "r": 257.24335, "b": 764.1430053710938, "coord_origin": "TOPLEFT"}, "confidence": 0.9370514154434204, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 4, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 541.2396240234375, "t": 754.2869873046875, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8513588309288025, "cells": [{"id": 1, "text": "1", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "1"}]}}, {"page_no": 5, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "2 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 87.840302, "t": 755.538002, "r": 328.72537, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "1.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.524292, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Security fundamentals", "bbox": {"l": 92.069145, "t": 74.34069999999997, "r": 267.40582, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Before reviewing database security techniques, there are two fundamental steps in securing ", "bbox": {"l": 136.8, "t": 106.6087, "r": 545.00482, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "information assets that must be described:", "bbox": {"l": 136.8, "t": 118.60852, "r": 324.47229, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 135.79749000000004, "r": 141.78, "b": 144.57227, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "First, and most important, is the definition of a company\u2019s ", "bbox": {"l": 151.20016, "t": 135.64806999999996, "r": 406.67715, "b": 144.86108000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "security policy", "bbox": {"l": 406.67999, "t": 135.12487999999996, "r": 471.03815, "b": 145.18262000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": ". Without a ", "bbox": {"l": 470.04001000000005, "t": 135.64862000000005, "r": 520.59796, "b": 144.86163, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "security policy, there is no definition of what are acceptable practices for using, accessing, ", "bbox": {"l": 151.19949, "t": 147.64844000000005, "r": 547.16425, "b": 156.86145, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "and storing information by who, what, when, where, and how. A security policy should ", "bbox": {"l": 151.19948, "t": 159.64824999999996, "r": 531.02008, "b": 168.86127, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "minimally address three things: confidentiality, integrity, and availability.", "bbox": {"l": 151.19948, "t": 171.64806999999996, "r": 463.3578499999999, "b": 180.86108000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "The monitoring and assessment of adherence to the security policy determines whether ", "bbox": {"l": 151.19948, "t": 188.62787000000003, "r": 541.70514, "b": 197.84087999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "your security strategy is working. Often, IBM security consultants are asked to perform ", "bbox": {"l": 151.19948, "t": 200.62769000000003, "r": 534.83002, "b": 209.84069999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "security assessments for companies without regard to the security policy. Although these ", "bbox": {"l": 151.19948, "t": 212.62750000000005, "r": 545.79773, "b": 221.84051999999997, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "assessments can be useful for observing how the system is defined and how data is being ", "bbox": {"l": 151.19948, "t": 224.62732000000005, "r": 547.26086, "b": 233.84033, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "accessed, they cannot determine the level of security without a security policy. Without a ", "bbox": {"l": 151.19948, "t": 236.62714000000005, "r": 543.91528, "b": 245.84015, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "security policy, it really is not an assessment as much as it is a baseline for monitoring the ", "bbox": {"l": 151.19948, "t": 248.62694999999997, "r": 547.25989, "b": 257.83997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "changes in the security settings that are captured.", "bbox": {"l": 151.19946, "t": 260.62676999999996, "r": 371.8692, "b": 269.83978, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "A security policy is what defines whether the system and its settings are secure (or not). ", "bbox": {"l": 151.19946, "t": 277.60657000000003, "r": 541.992, "b": 286.81958, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "GLYPH", "bbox": {"l": 136.7993, "t": 294.7955600000001, "r": 141.7793, "b": 303.57034, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "The second fundamental in securing data assets is the use of ", "bbox": {"l": 151.19946, "t": 294.64618, "r": 425.86029, "b": 303.85916, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "resource security", "bbox": {"l": 425.82001, "t": 294.12496999999996, "r": 501.60065, "b": 304.18265, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": ". If ", "bbox": {"l": 500.64001, "t": 294.64871, "r": 514.49933, "b": 303.86169, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "implemented properly, resource security prevents data breaches from both internal and ", "bbox": {"l": 151.20038, "t": 306.64853, "r": 537.87421, "b": 315.86151, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "external intrusions. Resource security controls are closely tied to the part of the security ", "bbox": {"l": 151.20038, "t": 318.64834999999994, "r": 541.33636, "b": 327.86133, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "policy that defines who should have access to what information resources. A hacker might ", "bbox": {"l": 151.20038, "t": 330.64816, "r": 547.15826, "b": 339.86115, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "be good enough to get through your company firewalls and sift his way through to your ", "bbox": {"l": 151.20038, "t": 342.64798, "r": 534.86066, "b": 351.86096, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "system, but if they do not have explicit access to your database, the hacker cannot ", "bbox": {"l": 151.20038, "t": 354.6478, "r": 517.00739, "b": 363.86078, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "compromise your information assets.", "bbox": {"l": 151.20038, "t": 366.64761, "r": 314.03534, "b": 375.8606, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "With your eyes now open to the importance of securing information assets, the rest of this ", "bbox": {"l": 136.80022, "t": 388.60742, "r": 535.36169, "b": 397.82040000000006, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "chapter reviews the methods that are available for securing database resources on IBM i. ", "bbox": {"l": 136.80022, "t": 400.60724, "r": 532.755, "b": 409.82022, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "1.2", "bbox": {"l": 64.800003, "t": 438.30072, "r": 87.415726, "b": 453.06372, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Current state of IBM i security", "bbox": {"l": 91.93885, "t": 438.30072, "r": 323.38391, "b": 453.06372, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Because of the inherently secure nature of IBM i, many clients rely on the default system ", "bbox": {"l": 136.8, "t": 470.62872, "r": 530.30463, "b": 479.84171, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "settings to protect their business data that is stored in DB2 for i. In most cases, this means no ", "bbox": {"l": 136.8, "t": 482.62854, "r": 547.31824, "b": 491.84152, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "data protection because the default setting for the Create default public authority (QCRTAUT) ", "bbox": {"l": 136.8, "t": 494.62836, "r": 547.19586, "b": 503.84134, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "system value is *CHANGE.", "bbox": {"l": 136.8, "t": 506.62817, "r": 257.04709, "b": 515.84116, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Even more disturbing is that many IBM i clients remain in this state, despite the news ", "bbox": {"l": 136.8, "t": 528.64774, "r": 513.90448, "b": 537.86073, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "headlines and the significant costs that are involved with databases being compromised. This ", "bbox": {"l": 136.8, "t": 540.6475399999999, "r": 547.28442, "b": 549.86053, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "default security configuration makes it quite challenging to implement basic security policies. ", "bbox": {"l": 136.8, "t": 552.64734, "r": 546.27533, "b": 561.86034, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "A tighter implementation is required if you really want to protect one of your company\u2019s most ", "bbox": {"l": 136.8, "t": 564.64714, "r": 545.08014, "b": 573.86014, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "valuable assets, which is the data.", "bbox": {"l": 136.8, "t": 576.64694, "r": 287.80057, "b": 585.85994, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Traditionally, IBM i applications have employed menu-based security to counteract this default ", "bbox": {"l": 136.8, "t": 598.6665, "r": 547.28326, "b": 607.8795, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "configuration that gives all users access to the data. The theory is that data is protected by ", "bbox": {"l": 136.8, "t": 610.6663100000001, "r": 538.6767, "b": 619.8793000000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "the menu options controlling what database operations that the user can perform. This ", "bbox": {"l": 136.8, "t": 622.66611, "r": 520.35364, "b": 631.8791, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "approach is ineffective, even if the user profile is restricted from running interactive ", "bbox": {"l": 136.80002, "t": 634.6659099999999, "r": 502.77115000000003, "b": 643.87891, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "commands. The reason is that in today\u2019s connected world there are a multitude of interfaces ", "bbox": {"l": 136.80002, "t": 646.66571, "r": 545.16492, "b": 655.87871, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "into the system, from web browsers to PC clients, that bypass application menus. If there are ", "bbox": {"l": 136.80002, "t": 658.66551, "r": 547.23376, "b": 667.87852, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "no object-level controls, users of these newer interfaces have an open door to your data.", "bbox": {"l": 136.80002, "t": 670.66532, "r": 526.04187, "b": 679.87833, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.92394256591797, "t": 754.286865234375, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8889444470405579, "cells": [{"id": 0, "text": "2 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 87.81553649902344, "t": 754.6853637695312, "r": 328.72537, "b": 763.9682006835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9476423859596252, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 87.840302, "t": 755.538002, "r": 328.72537, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.33735656738281, "t": 73.39700317382812, "r": 267.40582, "b": 89.61579895019531, "coord_origin": "TOPLEFT"}, "confidence": 0.9651358127593994, "cells": [{"id": 2, "text": "1.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.524292, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Security fundamentals", "bbox": {"l": 92.069145, "t": 74.34069999999997, "r": 267.40582, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 136.23556518554688, "t": 106.02731323242188, "r": 545.00482, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9663435220718384, "cells": [{"id": 4, "text": "Before reviewing database security techniques, there are two fundamental steps in securing ", "bbox": {"l": 136.8, "t": 106.6087, "r": 545.00482, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "information assets that must be described:", "bbox": {"l": 136.8, "t": 118.60852, "r": 324.47229, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 135.66490173339844, "t": 134.66909790039062, "r": 547.16425, "b": 181.15467834472656, "coord_origin": "TOPLEFT"}, "confidence": 0.9835494756698608, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 135.79749000000004, "r": 141.78, "b": 144.57227, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "First, and most important, is the definition of a company\u2019s ", "bbox": {"l": 151.20016, "t": 135.64806999999996, "r": 406.67715, "b": 144.86108000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "security policy", "bbox": {"l": 406.67999, "t": 135.12487999999996, "r": 471.03815, "b": 145.18262000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": ". Without a ", "bbox": {"l": 470.04001000000005, "t": 135.64862000000005, "r": 520.59796, "b": 144.86163, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "security policy, there is no definition of what are acceptable practices for using, accessing, ", "bbox": {"l": 151.19949, "t": 147.64844000000005, "r": 547.16425, "b": 156.86145, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "and storing information by who, what, when, where, and how. A security policy should ", "bbox": {"l": 151.19948, "t": 159.64824999999996, "r": 531.02008, "b": 168.86127, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "minimally address three things: confidentiality, integrity, and availability.", "bbox": {"l": 151.19948, "t": 171.64806999999996, "r": 463.3578499999999, "b": 180.86108000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 150.2132110595703, "t": 187.9793701171875, "r": 547.26086, "b": 270.5374450683594, "coord_origin": "TOPLEFT"}, "confidence": 0.8077321648597717, "cells": [{"id": 13, "text": "The monitoring and assessment of adherence to the security policy determines whether ", "bbox": {"l": 151.19948, "t": 188.62787000000003, "r": 541.70514, "b": 197.84087999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "your security strategy is working. Often, IBM security consultants are asked to perform ", "bbox": {"l": 151.19948, "t": 200.62769000000003, "r": 534.83002, "b": 209.84069999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "security assessments for companies without regard to the security policy. Although these ", "bbox": {"l": 151.19948, "t": 212.62750000000005, "r": 545.79773, "b": 221.84051999999997, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "assessments can be useful for observing how the system is defined and how data is being ", "bbox": {"l": 151.19948, "t": 224.62732000000005, "r": 547.26086, "b": 233.84033, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "accessed, they cannot determine the level of security without a security policy. Without a ", "bbox": {"l": 151.19948, "t": 236.62714000000005, "r": 543.91528, "b": 245.84015, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "security policy, it really is not an assessment as much as it is a baseline for monitoring the ", "bbox": {"l": 151.19948, "t": 248.62694999999997, "r": 547.25989, "b": 257.83997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "changes in the security settings that are captured.", "bbox": {"l": 151.19946, "t": 260.62676999999996, "r": 371.8692, "b": 269.83978, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 150.1995086669922, "t": 276.76263427734375, "r": 541.992, "b": 287.0709533691406, "coord_origin": "TOPLEFT"}, "confidence": 0.7967227697372437, "cells": [{"id": 20, "text": "A security policy is what defines whether the system and its settings are secure (or not). ", "bbox": {"l": 151.19946, "t": 277.60657000000003, "r": 541.992, "b": 286.81958, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.4777374267578, "t": 293.81439208984375, "r": 547.15826, "b": 376.5453796386719, "coord_origin": "TOPLEFT"}, "confidence": 0.9837487936019897, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.7993, "t": 294.7955600000001, "r": 141.7793, "b": 303.57034, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "The second fundamental in securing data assets is the use of ", "bbox": {"l": 151.19946, "t": 294.64618, "r": 425.86029, "b": 303.85916, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "resource security", "bbox": {"l": 425.82001, "t": 294.12496999999996, "r": 501.60065, "b": 304.18265, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": ". If ", "bbox": {"l": 500.64001, "t": 294.64871, "r": 514.49933, "b": 303.86169, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "implemented properly, resource security prevents data breaches from both internal and ", "bbox": {"l": 151.20038, "t": 306.64853, "r": 537.87421, "b": 315.86151, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "external intrusions. Resource security controls are closely tied to the part of the security ", "bbox": {"l": 151.20038, "t": 318.64834999999994, "r": 541.33636, "b": 327.86133, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "policy that defines who should have access to what information resources. A hacker might ", "bbox": {"l": 151.20038, "t": 330.64816, "r": 547.15826, "b": 339.86115, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "be good enough to get through your company firewalls and sift his way through to your ", "bbox": {"l": 151.20038, "t": 342.64798, "r": 534.86066, "b": 351.86096, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "system, but if they do not have explicit access to your database, the hacker cannot ", "bbox": {"l": 151.20038, "t": 354.6478, "r": 517.00739, "b": 363.86078, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "compromise your information assets.", "bbox": {"l": 151.20038, "t": 366.64761, "r": 314.03534, "b": 375.8606, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 135.90879821777344, "t": 388.12286376953125, "r": 535.36169, "b": 410.3081359863281, "coord_origin": "TOPLEFT"}, "confidence": 0.9622000455856323, "cells": [{"id": 31, "text": "With your eyes now open to the importance of securing information assets, the rest of this ", "bbox": {"l": 136.80022, "t": 388.60742, "r": 535.36169, "b": 397.82040000000006, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "chapter reviews the methods that are available for securing database resources on IBM i. ", "bbox": {"l": 136.80022, "t": 400.60724, "r": 532.755, "b": 409.82022, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "section_header", "bbox": {"l": 64.44733428955078, "t": 437.4118957519531, "r": 323.38391, "b": 453.6912841796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9650285243988037, "cells": [{"id": 33, "text": "1.2", "bbox": {"l": 64.800003, "t": 438.30072, "r": 87.415726, "b": 453.06372, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Current state of IBM i security", "bbox": {"l": 91.93885, "t": 438.30072, "r": 323.38391, "b": 453.06372, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 136.1368408203125, "t": 469.76971435546875, "r": 547.31824, "b": 516.47802734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9848750233650208, "cells": [{"id": 35, "text": "Because of the inherently secure nature of IBM i, many clients rely on the default system ", "bbox": {"l": 136.8, "t": 470.62872, "r": 530.30463, "b": 479.84171, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "settings to protect their business data that is stored in DB2 for i. In most cases, this means no ", "bbox": {"l": 136.8, "t": 482.62854, "r": 547.31824, "b": 491.84152, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "data protection because the default setting for the Create default public authority (QCRTAUT) ", "bbox": {"l": 136.8, "t": 494.62836, "r": 547.19586, "b": 503.84134, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "system value is *CHANGE.", "bbox": {"l": 136.8, "t": 506.62817, "r": 257.04709, "b": 515.84116, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 135.79974365234375, "t": 527.8772583007812, "r": 547.28442, "b": 585.85994, "coord_origin": "TOPLEFT"}, "confidence": 0.9848474860191345, "cells": [{"id": 39, "text": "Even more disturbing is that many IBM i clients remain in this state, despite the news ", "bbox": {"l": 136.8, "t": 528.64774, "r": 513.90448, "b": 537.86073, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "headlines and the significant costs that are involved with databases being compromised. This ", "bbox": {"l": 136.8, "t": 540.6475399999999, "r": 547.28442, "b": 549.86053, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "default security configuration makes it quite challenging to implement basic security policies. ", "bbox": {"l": 136.8, "t": 552.64734, "r": 546.27533, "b": 561.86034, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "A tighter implementation is required if you really want to protect one of your company\u2019s most ", "bbox": {"l": 136.8, "t": 564.64714, "r": 545.08014, "b": 573.86014, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "valuable assets, which is the data.", "bbox": {"l": 136.8, "t": 576.64694, "r": 287.80057, "b": 585.85994, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 135.8997802734375, "t": 598.1246337890625, "r": 547.28326, "b": 680.4212036132812, "coord_origin": "TOPLEFT"}, "confidence": 0.9870820045471191, "cells": [{"id": 44, "text": "Traditionally, IBM i applications have employed menu-based security to counteract this default ", "bbox": {"l": 136.8, "t": 598.6665, "r": 547.28326, "b": 607.8795, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "configuration that gives all users access to the data. The theory is that data is protected by ", "bbox": {"l": 136.8, "t": 610.6663100000001, "r": 538.6767, "b": 619.8793000000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "the menu options controlling what database operations that the user can perform. This ", "bbox": {"l": 136.8, "t": 622.66611, "r": 520.35364, "b": 631.8791, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "approach is ineffective, even if the user profile is restricted from running interactive ", "bbox": {"l": 136.80002, "t": 634.6659099999999, "r": 502.77115000000003, "b": 643.87891, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "commands. The reason is that in today\u2019s connected world there are a multitude of interfaces ", "bbox": {"l": 136.80002, "t": 646.66571, "r": 545.16492, "b": 655.87871, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "into the system, from web browsers to PC clients, that bypass application menus. If there are ", "bbox": {"l": 136.80002, "t": 658.66551, "r": 547.23376, "b": 667.87852, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "no object-level controls, users of these newer interfaces have an open door to your data.", "bbox": {"l": 136.80002, "t": 670.66532, "r": 526.04187, "b": 679.87833, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 5, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.92394256591797, "t": 754.286865234375, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8889444470405579, "cells": [{"id": 0, "text": "2 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "2"}, {"label": "page_footer", "id": 1, "page_no": 5, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 87.81553649902344, "t": 754.6853637695312, "r": 328.72537, "b": 763.9682006835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9476423859596252, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 87.840302, "t": 755.538002, "r": 328.72537, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "section_header", "id": 2, "page_no": 5, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.33735656738281, "t": 73.39700317382812, "r": 267.40582, "b": 89.61579895019531, "coord_origin": "TOPLEFT"}, "confidence": 0.9651358127593994, "cells": [{"id": 2, "text": "1.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.524292, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Security fundamentals", "bbox": {"l": 92.069145, "t": 74.34069999999997, "r": 267.40582, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, "text": "1.1 Security fundamentals"}, {"label": "text", "id": 3, "page_no": 5, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.23556518554688, "t": 106.02731323242188, "r": 545.00482, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9663435220718384, "cells": [{"id": 4, "text": "Before reviewing database security techniques, there are two fundamental steps in securing ", "bbox": {"l": 136.8, "t": 106.6087, "r": 545.00482, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "information assets that must be described:", "bbox": {"l": 136.8, "t": 118.60852, "r": 324.47229, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Before reviewing database security techniques, there are two fundamental steps in securing information assets that must be described:"}, {"label": "list_item", "id": 4, "page_no": 5, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.66490173339844, "t": 134.66909790039062, "r": 547.16425, "b": 181.15467834472656, "coord_origin": "TOPLEFT"}, "confidence": 0.9835494756698608, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 135.79749000000004, "r": 141.78, "b": 144.57227, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "First, and most important, is the definition of a company\u2019s ", "bbox": {"l": 151.20016, "t": 135.64806999999996, "r": 406.67715, "b": 144.86108000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "security policy", "bbox": {"l": 406.67999, "t": 135.12487999999996, "r": 471.03815, "b": 145.18262000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": ". Without a ", "bbox": {"l": 470.04001000000005, "t": 135.64862000000005, "r": 520.59796, "b": 144.86163, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "security policy, there is no definition of what are acceptable practices for using, accessing, ", "bbox": {"l": 151.19949, "t": 147.64844000000005, "r": 547.16425, "b": 156.86145, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "and storing information by who, what, when, where, and how. A security policy should ", "bbox": {"l": 151.19948, "t": 159.64824999999996, "r": 531.02008, "b": 168.86127, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "minimally address three things: confidentiality, integrity, and availability.", "bbox": {"l": 151.19948, "t": 171.64806999999996, "r": 463.3578499999999, "b": 180.86108000000002, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH First, and most important, is the definition of a company\u2019s security policy . Without a security policy, there is no definition of what are acceptable practices for using, accessing, and storing information by who, what, when, where, and how. A security policy should minimally address three things: confidentiality, integrity, and availability."}, {"label": "list_item", "id": 5, "page_no": 5, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 150.2132110595703, "t": 187.9793701171875, "r": 547.26086, "b": 270.5374450683594, "coord_origin": "TOPLEFT"}, "confidence": 0.8077321648597717, "cells": [{"id": 13, "text": "The monitoring and assessment of adherence to the security policy determines whether ", "bbox": {"l": 151.19948, "t": 188.62787000000003, "r": 541.70514, "b": 197.84087999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "your security strategy is working. Often, IBM security consultants are asked to perform ", "bbox": {"l": 151.19948, "t": 200.62769000000003, "r": 534.83002, "b": 209.84069999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "security assessments for companies without regard to the security policy. Although these ", "bbox": {"l": 151.19948, "t": 212.62750000000005, "r": 545.79773, "b": 221.84051999999997, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "assessments can be useful for observing how the system is defined and how data is being ", "bbox": {"l": 151.19948, "t": 224.62732000000005, "r": 547.26086, "b": 233.84033, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "accessed, they cannot determine the level of security without a security policy. Without a ", "bbox": {"l": 151.19948, "t": 236.62714000000005, "r": 543.91528, "b": 245.84015, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "security policy, it really is not an assessment as much as it is a baseline for monitoring the ", "bbox": {"l": 151.19948, "t": 248.62694999999997, "r": 547.25989, "b": 257.83997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "changes in the security settings that are captured.", "bbox": {"l": 151.19946, "t": 260.62676999999996, "r": 371.8692, "b": 269.83978, "coord_origin": "TOPLEFT"}}]}, "text": "The monitoring and assessment of adherence to the security policy determines whether your security strategy is working. Often, IBM security consultants are asked to perform security assessments for companies without regard to the security policy. Although these assessments can be useful for observing how the system is defined and how data is being accessed, they cannot determine the level of security without a security policy. Without a security policy, it really is not an assessment as much as it is a baseline for monitoring the changes in the security settings that are captured."}, {"label": "text", "id": 6, "page_no": 5, "cluster": {"id": 6, "label": "text", "bbox": {"l": 150.1995086669922, "t": 276.76263427734375, "r": 541.992, "b": 287.0709533691406, "coord_origin": "TOPLEFT"}, "confidence": 0.7967227697372437, "cells": [{"id": 20, "text": "A security policy is what defines whether the system and its settings are secure (or not). ", "bbox": {"l": 151.19946, "t": 277.60657000000003, "r": 541.992, "b": 286.81958, "coord_origin": "TOPLEFT"}}]}, "text": "A security policy is what defines whether the system and its settings are secure (or not)."}, {"label": "list_item", "id": 7, "page_no": 5, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.4777374267578, "t": 293.81439208984375, "r": 547.15826, "b": 376.5453796386719, "coord_origin": "TOPLEFT"}, "confidence": 0.9837487936019897, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.7993, "t": 294.7955600000001, "r": 141.7793, "b": 303.57034, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "The second fundamental in securing data assets is the use of ", "bbox": {"l": 151.19946, "t": 294.64618, "r": 425.86029, "b": 303.85916, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "resource security", "bbox": {"l": 425.82001, "t": 294.12496999999996, "r": 501.60065, "b": 304.18265, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": ". If ", "bbox": {"l": 500.64001, "t": 294.64871, "r": 514.49933, "b": 303.86169, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "implemented properly, resource security prevents data breaches from both internal and ", "bbox": {"l": 151.20038, "t": 306.64853, "r": 537.87421, "b": 315.86151, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "external intrusions. Resource security controls are closely tied to the part of the security ", "bbox": {"l": 151.20038, "t": 318.64834999999994, "r": 541.33636, "b": 327.86133, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "policy that defines who should have access to what information resources. A hacker might ", "bbox": {"l": 151.20038, "t": 330.64816, "r": 547.15826, "b": 339.86115, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "be good enough to get through your company firewalls and sift his way through to your ", "bbox": {"l": 151.20038, "t": 342.64798, "r": 534.86066, "b": 351.86096, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "system, but if they do not have explicit access to your database, the hacker cannot ", "bbox": {"l": 151.20038, "t": 354.6478, "r": 517.00739, "b": 363.86078, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "compromise your information assets.", "bbox": {"l": 151.20038, "t": 366.64761, "r": 314.03534, "b": 375.8606, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The second fundamental in securing data assets is the use of resource security . If implemented properly, resource security prevents data breaches from both internal and external intrusions. Resource security controls are closely tied to the part of the security policy that defines who should have access to what information resources. A hacker might be good enough to get through your company firewalls and sift his way through to your system, but if they do not have explicit access to your database, the hacker cannot compromise your information assets."}, {"label": "text", "id": 8, "page_no": 5, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.90879821777344, "t": 388.12286376953125, "r": 535.36169, "b": 410.3081359863281, "coord_origin": "TOPLEFT"}, "confidence": 0.9622000455856323, "cells": [{"id": 31, "text": "With your eyes now open to the importance of securing information assets, the rest of this ", "bbox": {"l": 136.80022, "t": 388.60742, "r": 535.36169, "b": 397.82040000000006, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "chapter reviews the methods that are available for securing database resources on IBM i. ", "bbox": {"l": 136.80022, "t": 400.60724, "r": 532.755, "b": 409.82022, "coord_origin": "TOPLEFT"}}]}, "text": "With your eyes now open to the importance of securing information assets, the rest of this chapter reviews the methods that are available for securing database resources on IBM i."}, {"label": "section_header", "id": 9, "page_no": 5, "cluster": {"id": 9, "label": "section_header", "bbox": {"l": 64.44733428955078, "t": 437.4118957519531, "r": 323.38391, "b": 453.6912841796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9650285243988037, "cells": [{"id": 33, "text": "1.2", "bbox": {"l": 64.800003, "t": 438.30072, "r": 87.415726, "b": 453.06372, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Current state of IBM i security", "bbox": {"l": 91.93885, "t": 438.30072, "r": 323.38391, "b": 453.06372, "coord_origin": "TOPLEFT"}}]}, "text": "1.2 Current state of IBM i security"}, {"label": "text", "id": 10, "page_no": 5, "cluster": {"id": 10, "label": "text", "bbox": {"l": 136.1368408203125, "t": 469.76971435546875, "r": 547.31824, "b": 516.47802734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9848750233650208, "cells": [{"id": 35, "text": "Because of the inherently secure nature of IBM i, many clients rely on the default system ", "bbox": {"l": 136.8, "t": 470.62872, "r": 530.30463, "b": 479.84171, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "settings to protect their business data that is stored in DB2 for i. In most cases, this means no ", "bbox": {"l": 136.8, "t": 482.62854, "r": 547.31824, "b": 491.84152, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "data protection because the default setting for the Create default public authority (QCRTAUT) ", "bbox": {"l": 136.8, "t": 494.62836, "r": 547.19586, "b": 503.84134, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "system value is *CHANGE.", "bbox": {"l": 136.8, "t": 506.62817, "r": 257.04709, "b": 515.84116, "coord_origin": "TOPLEFT"}}]}, "text": "Because of the inherently secure nature of IBM i, many clients rely on the default system settings to protect their business data that is stored in DB2 for i. In most cases, this means no data protection because the default setting for the Create default public authority (QCRTAUT) system value is *CHANGE."}, {"label": "text", "id": 11, "page_no": 5, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.79974365234375, "t": 527.8772583007812, "r": 547.28442, "b": 585.85994, "coord_origin": "TOPLEFT"}, "confidence": 0.9848474860191345, "cells": [{"id": 39, "text": "Even more disturbing is that many IBM i clients remain in this state, despite the news ", "bbox": {"l": 136.8, "t": 528.64774, "r": 513.90448, "b": 537.86073, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "headlines and the significant costs that are involved with databases being compromised. This ", "bbox": {"l": 136.8, "t": 540.6475399999999, "r": 547.28442, "b": 549.86053, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "default security configuration makes it quite challenging to implement basic security policies. ", "bbox": {"l": 136.8, "t": 552.64734, "r": 546.27533, "b": 561.86034, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "A tighter implementation is required if you really want to protect one of your company\u2019s most ", "bbox": {"l": 136.8, "t": 564.64714, "r": 545.08014, "b": 573.86014, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "valuable assets, which is the data.", "bbox": {"l": 136.8, "t": 576.64694, "r": 287.80057, "b": 585.85994, "coord_origin": "TOPLEFT"}}]}, "text": "Even more disturbing is that many IBM i clients remain in this state, despite the news headlines and the significant costs that are involved with databases being compromised. This default security configuration makes it quite challenging to implement basic security policies. A tighter implementation is required if you really want to protect one of your company\u2019s most valuable assets, which is the data."}, {"label": "text", "id": 12, "page_no": 5, "cluster": {"id": 12, "label": "text", "bbox": {"l": 135.8997802734375, "t": 598.1246337890625, "r": 547.28326, "b": 680.4212036132812, "coord_origin": "TOPLEFT"}, "confidence": 0.9870820045471191, "cells": [{"id": 44, "text": "Traditionally, IBM i applications have employed menu-based security to counteract this default ", "bbox": {"l": 136.8, "t": 598.6665, "r": 547.28326, "b": 607.8795, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "configuration that gives all users access to the data. The theory is that data is protected by ", "bbox": {"l": 136.8, "t": 610.6663100000001, "r": 538.6767, "b": 619.8793000000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "the menu options controlling what database operations that the user can perform. This ", "bbox": {"l": 136.8, "t": 622.66611, "r": 520.35364, "b": 631.8791, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "approach is ineffective, even if the user profile is restricted from running interactive ", "bbox": {"l": 136.80002, "t": 634.6659099999999, "r": 502.77115000000003, "b": 643.87891, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "commands. The reason is that in today\u2019s connected world there are a multitude of interfaces ", "bbox": {"l": 136.80002, "t": 646.66571, "r": 545.16492, "b": 655.87871, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "into the system, from web browsers to PC clients, that bypass application menus. If there are ", "bbox": {"l": 136.80002, "t": 658.66551, "r": 547.23376, "b": 667.87852, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "no object-level controls, users of these newer interfaces have an open door to your data.", "bbox": {"l": 136.80002, "t": 670.66532, "r": 526.04187, "b": 679.87833, "coord_origin": "TOPLEFT"}}]}, "text": "Traditionally, IBM i applications have employed menu-based security to counteract this default configuration that gives all users access to the data. The theory is that data is protected by the menu options controlling what database operations that the user can perform. This approach is ineffective, even if the user profile is restricted from running interactive commands. The reason is that in today\u2019s connected world there are a multitude of interfaces into the system, from web browsers to PC clients, that bypass application menus. If there are no object-level controls, users of these newer interfaces have an open door to your data."}], "body": [{"label": "section_header", "id": 2, "page_no": 5, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.33735656738281, "t": 73.39700317382812, "r": 267.40582, "b": 89.61579895019531, "coord_origin": "TOPLEFT"}, "confidence": 0.9651358127593994, "cells": [{"id": 2, "text": "1.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.524292, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Security fundamentals", "bbox": {"l": 92.069145, "t": 74.34069999999997, "r": 267.40582, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, "text": "1.1 Security fundamentals"}, {"label": "text", "id": 3, "page_no": 5, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.23556518554688, "t": 106.02731323242188, "r": 545.00482, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9663435220718384, "cells": [{"id": 4, "text": "Before reviewing database security techniques, there are two fundamental steps in securing ", "bbox": {"l": 136.8, "t": 106.6087, "r": 545.00482, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "information assets that must be described:", "bbox": {"l": 136.8, "t": 118.60852, "r": 324.47229, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Before reviewing database security techniques, there are two fundamental steps in securing information assets that must be described:"}, {"label": "list_item", "id": 4, "page_no": 5, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.66490173339844, "t": 134.66909790039062, "r": 547.16425, "b": 181.15467834472656, "coord_origin": "TOPLEFT"}, "confidence": 0.9835494756698608, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 135.79749000000004, "r": 141.78, "b": 144.57227, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "First, and most important, is the definition of a company\u2019s ", "bbox": {"l": 151.20016, "t": 135.64806999999996, "r": 406.67715, "b": 144.86108000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "security policy", "bbox": {"l": 406.67999, "t": 135.12487999999996, "r": 471.03815, "b": 145.18262000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": ". Without a ", "bbox": {"l": 470.04001000000005, "t": 135.64862000000005, "r": 520.59796, "b": 144.86163, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "security policy, there is no definition of what are acceptable practices for using, accessing, ", "bbox": {"l": 151.19949, "t": 147.64844000000005, "r": 547.16425, "b": 156.86145, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "and storing information by who, what, when, where, and how. A security policy should ", "bbox": {"l": 151.19948, "t": 159.64824999999996, "r": 531.02008, "b": 168.86127, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "minimally address three things: confidentiality, integrity, and availability.", "bbox": {"l": 151.19948, "t": 171.64806999999996, "r": 463.3578499999999, "b": 180.86108000000002, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH First, and most important, is the definition of a company\u2019s security policy . Without a security policy, there is no definition of what are acceptable practices for using, accessing, and storing information by who, what, when, where, and how. A security policy should minimally address three things: confidentiality, integrity, and availability."}, {"label": "list_item", "id": 5, "page_no": 5, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 150.2132110595703, "t": 187.9793701171875, "r": 547.26086, "b": 270.5374450683594, "coord_origin": "TOPLEFT"}, "confidence": 0.8077321648597717, "cells": [{"id": 13, "text": "The monitoring and assessment of adherence to the security policy determines whether ", "bbox": {"l": 151.19948, "t": 188.62787000000003, "r": 541.70514, "b": 197.84087999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "your security strategy is working. Often, IBM security consultants are asked to perform ", "bbox": {"l": 151.19948, "t": 200.62769000000003, "r": 534.83002, "b": 209.84069999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "security assessments for companies without regard to the security policy. Although these ", "bbox": {"l": 151.19948, "t": 212.62750000000005, "r": 545.79773, "b": 221.84051999999997, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "assessments can be useful for observing how the system is defined and how data is being ", "bbox": {"l": 151.19948, "t": 224.62732000000005, "r": 547.26086, "b": 233.84033, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "accessed, they cannot determine the level of security without a security policy. Without a ", "bbox": {"l": 151.19948, "t": 236.62714000000005, "r": 543.91528, "b": 245.84015, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "security policy, it really is not an assessment as much as it is a baseline for monitoring the ", "bbox": {"l": 151.19948, "t": 248.62694999999997, "r": 547.25989, "b": 257.83997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "changes in the security settings that are captured.", "bbox": {"l": 151.19946, "t": 260.62676999999996, "r": 371.8692, "b": 269.83978, "coord_origin": "TOPLEFT"}}]}, "text": "The monitoring and assessment of adherence to the security policy determines whether your security strategy is working. Often, IBM security consultants are asked to perform security assessments for companies without regard to the security policy. Although these assessments can be useful for observing how the system is defined and how data is being accessed, they cannot determine the level of security without a security policy. Without a security policy, it really is not an assessment as much as it is a baseline for monitoring the changes in the security settings that are captured."}, {"label": "text", "id": 6, "page_no": 5, "cluster": {"id": 6, "label": "text", "bbox": {"l": 150.1995086669922, "t": 276.76263427734375, "r": 541.992, "b": 287.0709533691406, "coord_origin": "TOPLEFT"}, "confidence": 0.7967227697372437, "cells": [{"id": 20, "text": "A security policy is what defines whether the system and its settings are secure (or not). ", "bbox": {"l": 151.19946, "t": 277.60657000000003, "r": 541.992, "b": 286.81958, "coord_origin": "TOPLEFT"}}]}, "text": "A security policy is what defines whether the system and its settings are secure (or not)."}, {"label": "list_item", "id": 7, "page_no": 5, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.4777374267578, "t": 293.81439208984375, "r": 547.15826, "b": 376.5453796386719, "coord_origin": "TOPLEFT"}, "confidence": 0.9837487936019897, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.7993, "t": 294.7955600000001, "r": 141.7793, "b": 303.57034, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "The second fundamental in securing data assets is the use of ", "bbox": {"l": 151.19946, "t": 294.64618, "r": 425.86029, "b": 303.85916, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "resource security", "bbox": {"l": 425.82001, "t": 294.12496999999996, "r": 501.60065, "b": 304.18265, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": ". If ", "bbox": {"l": 500.64001, "t": 294.64871, "r": 514.49933, "b": 303.86169, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "implemented properly, resource security prevents data breaches from both internal and ", "bbox": {"l": 151.20038, "t": 306.64853, "r": 537.87421, "b": 315.86151, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "external intrusions. Resource security controls are closely tied to the part of the security ", "bbox": {"l": 151.20038, "t": 318.64834999999994, "r": 541.33636, "b": 327.86133, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "policy that defines who should have access to what information resources. A hacker might ", "bbox": {"l": 151.20038, "t": 330.64816, "r": 547.15826, "b": 339.86115, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "be good enough to get through your company firewalls and sift his way through to your ", "bbox": {"l": 151.20038, "t": 342.64798, "r": 534.86066, "b": 351.86096, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "system, but if they do not have explicit access to your database, the hacker cannot ", "bbox": {"l": 151.20038, "t": 354.6478, "r": 517.00739, "b": 363.86078, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "compromise your information assets.", "bbox": {"l": 151.20038, "t": 366.64761, "r": 314.03534, "b": 375.8606, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The second fundamental in securing data assets is the use of resource security . If implemented properly, resource security prevents data breaches from both internal and external intrusions. Resource security controls are closely tied to the part of the security policy that defines who should have access to what information resources. A hacker might be good enough to get through your company firewalls and sift his way through to your system, but if they do not have explicit access to your database, the hacker cannot compromise your information assets."}, {"label": "text", "id": 8, "page_no": 5, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.90879821777344, "t": 388.12286376953125, "r": 535.36169, "b": 410.3081359863281, "coord_origin": "TOPLEFT"}, "confidence": 0.9622000455856323, "cells": [{"id": 31, "text": "With your eyes now open to the importance of securing information assets, the rest of this ", "bbox": {"l": 136.80022, "t": 388.60742, "r": 535.36169, "b": 397.82040000000006, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "chapter reviews the methods that are available for securing database resources on IBM i. ", "bbox": {"l": 136.80022, "t": 400.60724, "r": 532.755, "b": 409.82022, "coord_origin": "TOPLEFT"}}]}, "text": "With your eyes now open to the importance of securing information assets, the rest of this chapter reviews the methods that are available for securing database resources on IBM i."}, {"label": "section_header", "id": 9, "page_no": 5, "cluster": {"id": 9, "label": "section_header", "bbox": {"l": 64.44733428955078, "t": 437.4118957519531, "r": 323.38391, "b": 453.6912841796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9650285243988037, "cells": [{"id": 33, "text": "1.2", "bbox": {"l": 64.800003, "t": 438.30072, "r": 87.415726, "b": 453.06372, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Current state of IBM i security", "bbox": {"l": 91.93885, "t": 438.30072, "r": 323.38391, "b": 453.06372, "coord_origin": "TOPLEFT"}}]}, "text": "1.2 Current state of IBM i security"}, {"label": "text", "id": 10, "page_no": 5, "cluster": {"id": 10, "label": "text", "bbox": {"l": 136.1368408203125, "t": 469.76971435546875, "r": 547.31824, "b": 516.47802734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9848750233650208, "cells": [{"id": 35, "text": "Because of the inherently secure nature of IBM i, many clients rely on the default system ", "bbox": {"l": 136.8, "t": 470.62872, "r": 530.30463, "b": 479.84171, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "settings to protect their business data that is stored in DB2 for i. In most cases, this means no ", "bbox": {"l": 136.8, "t": 482.62854, "r": 547.31824, "b": 491.84152, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "data protection because the default setting for the Create default public authority (QCRTAUT) ", "bbox": {"l": 136.8, "t": 494.62836, "r": 547.19586, "b": 503.84134, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "system value is *CHANGE.", "bbox": {"l": 136.8, "t": 506.62817, "r": 257.04709, "b": 515.84116, "coord_origin": "TOPLEFT"}}]}, "text": "Because of the inherently secure nature of IBM i, many clients rely on the default system settings to protect their business data that is stored in DB2 for i. In most cases, this means no data protection because the default setting for the Create default public authority (QCRTAUT) system value is *CHANGE."}, {"label": "text", "id": 11, "page_no": 5, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.79974365234375, "t": 527.8772583007812, "r": 547.28442, "b": 585.85994, "coord_origin": "TOPLEFT"}, "confidence": 0.9848474860191345, "cells": [{"id": 39, "text": "Even more disturbing is that many IBM i clients remain in this state, despite the news ", "bbox": {"l": 136.8, "t": 528.64774, "r": 513.90448, "b": 537.86073, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "headlines and the significant costs that are involved with databases being compromised. This ", "bbox": {"l": 136.8, "t": 540.6475399999999, "r": 547.28442, "b": 549.86053, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "default security configuration makes it quite challenging to implement basic security policies. ", "bbox": {"l": 136.8, "t": 552.64734, "r": 546.27533, "b": 561.86034, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "A tighter implementation is required if you really want to protect one of your company\u2019s most ", "bbox": {"l": 136.8, "t": 564.64714, "r": 545.08014, "b": 573.86014, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "valuable assets, which is the data.", "bbox": {"l": 136.8, "t": 576.64694, "r": 287.80057, "b": 585.85994, "coord_origin": "TOPLEFT"}}]}, "text": "Even more disturbing is that many IBM i clients remain in this state, despite the news headlines and the significant costs that are involved with databases being compromised. This default security configuration makes it quite challenging to implement basic security policies. A tighter implementation is required if you really want to protect one of your company\u2019s most valuable assets, which is the data."}, {"label": "text", "id": 12, "page_no": 5, "cluster": {"id": 12, "label": "text", "bbox": {"l": 135.8997802734375, "t": 598.1246337890625, "r": 547.28326, "b": 680.4212036132812, "coord_origin": "TOPLEFT"}, "confidence": 0.9870820045471191, "cells": [{"id": 44, "text": "Traditionally, IBM i applications have employed menu-based security to counteract this default ", "bbox": {"l": 136.8, "t": 598.6665, "r": 547.28326, "b": 607.8795, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "configuration that gives all users access to the data. The theory is that data is protected by ", "bbox": {"l": 136.8, "t": 610.6663100000001, "r": 538.6767, "b": 619.8793000000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "the menu options controlling what database operations that the user can perform. This ", "bbox": {"l": 136.8, "t": 622.66611, "r": 520.35364, "b": 631.8791, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "approach is ineffective, even if the user profile is restricted from running interactive ", "bbox": {"l": 136.80002, "t": 634.6659099999999, "r": 502.77115000000003, "b": 643.87891, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "commands. The reason is that in today\u2019s connected world there are a multitude of interfaces ", "bbox": {"l": 136.80002, "t": 646.66571, "r": 545.16492, "b": 655.87871, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "into the system, from web browsers to PC clients, that bypass application menus. If there are ", "bbox": {"l": 136.80002, "t": 658.66551, "r": 547.23376, "b": 667.87852, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "no object-level controls, users of these newer interfaces have an open door to your data.", "bbox": {"l": 136.80002, "t": 670.66532, "r": 526.04187, "b": 679.87833, "coord_origin": "TOPLEFT"}}]}, "text": "Traditionally, IBM i applications have employed menu-based security to counteract this default configuration that gives all users access to the data. The theory is that data is protected by the menu options controlling what database operations that the user can perform. This approach is ineffective, even if the user profile is restricted from running interactive commands. The reason is that in today\u2019s connected world there are a multitude of interfaces into the system, from web browsers to PC clients, that bypass application menus. If there are no object-level controls, users of these newer interfaces have an open door to your data."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 5, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.92394256591797, "t": 754.286865234375, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8889444470405579, "cells": [{"id": 0, "text": "2 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "2"}, {"label": "page_footer", "id": 1, "page_no": 5, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 87.81553649902344, "t": 754.6853637695312, "r": 328.72537, "b": 763.9682006835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9476423859596252, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 87.840302, "t": 755.538002, "r": 328.72537, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 6, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "4 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 87.840302, "t": 755.538002, "r": 328.72537, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Many businesses are trying to limit data access to a need-to-know basis. This security goal ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 541.19006, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "means that users should be given access only to the minimum set of data that is required to ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 544.30334, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "perform their job. Often, users with object-level access are given access to row and column ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 540.94299, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "values that are beyond what their business task requires because that object-level security ", "bbox": {"l": 136.80002, "t": 107.50811999999996, "r": 538.27454, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "provides an all-or-nothing solution. For example, object-level controls allow a manager to ", "bbox": {"l": 136.80002, "t": 119.50792999999999, "r": 530.23004, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "access data about all employees. Most security policies limit a manager to accessing data ", "bbox": {"l": 136.80002, "t": 131.50775, "r": 536.26263, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "only for the employees that they manage.", "bbox": {"l": 136.80002, "t": 143.50757, "r": 319.04318, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "1.3.1", "bbox": {"l": 64.800003, "t": 173.33471999999995, "r": 94.033653, "b": 185.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Existing row and column control", "bbox": {"l": 97.687859, "t": 173.33471999999995, "r": 301.46902, "b": 185.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Some IBM i clients have tried augmenting the all-or-nothing object-level security with SQL ", "bbox": {"l": 136.8, "t": 199.48870999999997, "r": 534.90112, "b": 208.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "views (or logical files) and application logic, as shown in Figure 1-2. However, ", "bbox": {"l": 136.8, "t": 211.48852999999997, "r": 480.47281000000004, "b": 220.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "application-based logic is easy to bypass with all of the different data access interfaces that ", "bbox": {"l": 136.8, "t": 223.48834, "r": 541.56738, "b": 232.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "are provided by the IBM i operating system, such as Open Database Connectivity (ODBC) ", "bbox": {"l": 136.8, "t": 235.48816, "r": 537.39423, "b": 244.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "and System i Navigator.", "bbox": {"l": 136.79999, "t": 247.48798, "r": 242.24352000000002, "b": 256.70099000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Using SQL views to limit access to a subset of the data in a table also has its own set of ", "bbox": {"l": 136.79999, "t": 269.50757, "r": 526.88428, "b": 278.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "challenges. First, there is the complexity of managing all of the SQL view objects that are ", "bbox": {"l": 136.79999, "t": 281.50742, "r": 531.77087, "b": 290.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "used for securing data access. Second, scaling a view-based security solution can be difficult ", "bbox": {"l": 136.79999, "t": 293.50723000000005, "r": 547.4408, "b": 302.72021, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "as the amount of data grows and the number of users increases.", "bbox": {"l": 136.79999, "t": 305.50705, "r": 421.86725, "b": 314.72003, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Even if you are willing to live with these performance and management issues, a user with ", "bbox": {"l": 136.79999, "t": 327.52661, "r": 536.46692, "b": 336.7395900000001, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "*ALLOBJ access still can directly access all of the data in the underlying DB2 table and easily ", "bbox": {"l": 136.79999, "t": 339.52643, "r": 547.23267, "b": 348.73941, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "bypass the security controls that are built into an SQL view.", "bbox": {"l": 136.79999, "t": 351.52624999999995, "r": 397.88553, "b": 360.73923, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Figure 1-2 Existing row and column controls", "bbox": {"l": 136.8, "t": 691.818, "r": 316.44727, "b": 700.142998, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "User with", "bbox": {"l": 180.95911, "t": 383.45612, "r": 209.08017, "b": 389.0784, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "*ALLOBJ access", "bbox": {"l": 170.00624, "t": 390.95251, "r": 220.10355, "b": 396.57480000000004, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.09014129638672, "t": 754.0796508789062, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8578534126281738, "cells": [{"id": 0, "text": "4 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 87.840302, "t": 754.6302490234375, "r": 328.72537, "b": 763.9817504882812, "coord_origin": "TOPLEFT"}, "confidence": 0.9491621851921082, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 87.840302, "t": 755.538002, "r": 328.72537, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.9996337890625, "t": 70.63605499267578, "r": 544.30334, "b": 153.09298706054688, "coord_origin": "TOPLEFT"}, "confidence": 0.9872740507125854, "cells": [{"id": 2, "text": "Many businesses are trying to limit data access to a need-to-know basis. This security goal ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 541.19006, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "means that users should be given access only to the minimum set of data that is required to ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 544.30334, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "perform their job. Often, users with object-level access are given access to row and column ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 540.94299, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "values that are beyond what their business task requires because that object-level security ", "bbox": {"l": 136.80002, "t": 107.50811999999996, "r": 538.27454, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "provides an all-or-nothing solution. For example, object-level controls allow a manager to ", "bbox": {"l": 136.80002, "t": 119.50792999999999, "r": 530.23004, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "access data about all employees. Most security policies limit a manager to accessing data ", "bbox": {"l": 136.80002, "t": 131.50775, "r": 536.26263, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "only for the employees that they manage.", "bbox": {"l": 136.80002, "t": 143.50757, "r": 319.04318, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "section_header", "bbox": {"l": 64.4480209350586, "t": 172.2285919189453, "r": 301.46902, "b": 185.72744750976562, "coord_origin": "TOPLEFT"}, "confidence": 0.9626136422157288, "cells": [{"id": 9, "text": "1.3.1", "bbox": {"l": 64.800003, "t": 173.33471999999995, "r": 94.033653, "b": 185.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Existing row and column control", "bbox": {"l": 97.687859, "t": 173.33471999999995, "r": 301.46902, "b": 185.32275000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.77957153320312, "t": 198.52076721191406, "r": 541.56738, "b": 257.1080322265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9858148097991943, "cells": [{"id": 11, "text": "Some IBM i clients have tried augmenting the all-or-nothing object-level security with SQL ", "bbox": {"l": 136.8, "t": 199.48870999999997, "r": 534.90112, "b": 208.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "views (or logical files) and application logic, as shown in Figure 1-2. However, ", "bbox": {"l": 136.8, "t": 211.48852999999997, "r": 480.47281000000004, "b": 220.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "application-based logic is easy to bypass with all of the different data access interfaces that ", "bbox": {"l": 136.8, "t": 223.48834, "r": 541.56738, "b": 232.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "are provided by the IBM i operating system, such as Open Database Connectivity (ODBC) ", "bbox": {"l": 136.8, "t": 235.48816, "r": 537.39423, "b": 244.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "and System i Navigator.", "bbox": {"l": 136.79999, "t": 247.48798, "r": 242.24352000000002, "b": 256.70099000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.9119110107422, "t": 268.6311340332031, "r": 547.4408, "b": 314.89898681640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9875384569168091, "cells": [{"id": 16, "text": "Using SQL views to limit access to a subset of the data in a table also has its own set of ", "bbox": {"l": 136.79999, "t": 269.50757, "r": 526.88428, "b": 278.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "challenges. First, there is the complexity of managing all of the SQL view objects that are ", "bbox": {"l": 136.79999, "t": 281.50742, "r": 531.77087, "b": 290.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "used for securing data access. Second, scaling a view-based security solution can be difficult ", "bbox": {"l": 136.79999, "t": 293.50723000000005, "r": 547.4408, "b": 302.72021, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "as the amount of data grows and the number of users increases.", "bbox": {"l": 136.79999, "t": 305.50705, "r": 421.86725, "b": 314.72003, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 136.0379638671875, "t": 326.60943603515625, "r": 547.23267, "b": 361.19879150390625, "coord_origin": "TOPLEFT"}, "confidence": 0.975760281085968, "cells": [{"id": 20, "text": "Even if you are willing to live with these performance and management issues, a user with ", "bbox": {"l": 136.79999, "t": 327.52661, "r": 536.46692, "b": 336.7395900000001, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "*ALLOBJ access still can directly access all of the data in the underlying DB2 table and easily ", "bbox": {"l": 136.79999, "t": 339.52643, "r": 547.23267, "b": 348.73941, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "bypass the security controls that are built into an SQL view.", "bbox": {"l": 136.79999, "t": 351.52624999999995, "r": 397.88553, "b": 360.73923, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "caption", "bbox": {"l": 136.23910522460938, "t": 690.8873901367188, "r": 317.073486328125, "b": 700.1619262695312, "coord_origin": "TOPLEFT"}, "confidence": 0.9457826614379883, "cells": [{"id": 23, "text": "Figure 1-2 Existing row and column controls", "bbox": {"l": 136.8, "t": 691.818, "r": 316.44727, "b": 700.142998, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 135.92466735839844, "t": 375.9272155761719, "r": 546.4456176757812, "b": 688.6098022460938, "coord_origin": "TOPLEFT"}, "confidence": 0.9838992357254028, "cells": [{"id": 24, "text": "User with", "bbox": {"l": 180.95911, "t": 383.45612, "r": 209.08017, "b": 389.0784, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "*ALLOBJ access", "bbox": {"l": 170.00624, "t": 390.95251, "r": 220.10355, "b": 396.57480000000004, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 6, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.09014129638672, "t": 754.0796508789062, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8578534126281738, "cells": [{"id": 0, "text": "4 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "4"}, {"label": "page_footer", "id": 1, "page_no": 6, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 87.840302, "t": 754.6302490234375, "r": 328.72537, "b": 763.9817504882812, "coord_origin": "TOPLEFT"}, "confidence": 0.9491621851921082, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 87.840302, "t": 755.538002, "r": 328.72537, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 2, "page_no": 6, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.9996337890625, "t": 70.63605499267578, "r": 544.30334, "b": 153.09298706054688, "coord_origin": "TOPLEFT"}, "confidence": 0.9872740507125854, "cells": [{"id": 2, "text": "Many businesses are trying to limit data access to a need-to-know basis. This security goal ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 541.19006, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "means that users should be given access only to the minimum set of data that is required to ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 544.30334, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "perform their job. Often, users with object-level access are given access to row and column ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 540.94299, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "values that are beyond what their business task requires because that object-level security ", "bbox": {"l": 136.80002, "t": 107.50811999999996, "r": 538.27454, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "provides an all-or-nothing solution. For example, object-level controls allow a manager to ", "bbox": {"l": 136.80002, "t": 119.50792999999999, "r": 530.23004, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "access data about all employees. Most security policies limit a manager to accessing data ", "bbox": {"l": 136.80002, "t": 131.50775, "r": 536.26263, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "only for the employees that they manage.", "bbox": {"l": 136.80002, "t": 143.50757, "r": 319.04318, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Many businesses are trying to limit data access to a need-to-know basis. This security goal means that users should be given access only to the minimum set of data that is required to perform their job. Often, users with object-level access are given access to row and column values that are beyond what their business task requires because that object-level security provides an all-or-nothing solution. For example, object-level controls allow a manager to access data about all employees. Most security policies limit a manager to accessing data only for the employees that they manage."}, {"label": "section_header", "id": 3, "page_no": 6, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 64.4480209350586, "t": 172.2285919189453, "r": 301.46902, "b": 185.72744750976562, "coord_origin": "TOPLEFT"}, "confidence": 0.9626136422157288, "cells": [{"id": 9, "text": "1.3.1", "bbox": {"l": 64.800003, "t": 173.33471999999995, "r": 94.033653, "b": 185.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Existing row and column control", "bbox": {"l": 97.687859, "t": 173.33471999999995, "r": 301.46902, "b": 185.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "1.3.1 Existing row and column control"}, {"label": "text", "id": 4, "page_no": 6, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.77957153320312, "t": 198.52076721191406, "r": 541.56738, "b": 257.1080322265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9858148097991943, "cells": [{"id": 11, "text": "Some IBM i clients have tried augmenting the all-or-nothing object-level security with SQL ", "bbox": {"l": 136.8, "t": 199.48870999999997, "r": 534.90112, "b": 208.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "views (or logical files) and application logic, as shown in Figure 1-2. However, ", "bbox": {"l": 136.8, "t": 211.48852999999997, "r": 480.47281000000004, "b": 220.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "application-based logic is easy to bypass with all of the different data access interfaces that ", "bbox": {"l": 136.8, "t": 223.48834, "r": 541.56738, "b": 232.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "are provided by the IBM i operating system, such as Open Database Connectivity (ODBC) ", "bbox": {"l": 136.8, "t": 235.48816, "r": 537.39423, "b": 244.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "and System i Navigator.", "bbox": {"l": 136.79999, "t": 247.48798, "r": 242.24352000000002, "b": 256.70099000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Some IBM i clients have tried augmenting the all-or-nothing object-level security with SQL views (or logical files) and application logic, as shown in Figure 1-2. However, application-based logic is easy to bypass with all of the different data access interfaces that are provided by the IBM i operating system, such as Open Database Connectivity (ODBC) and System i Navigator."}, {"label": "text", "id": 5, "page_no": 6, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.9119110107422, "t": 268.6311340332031, "r": 547.4408, "b": 314.89898681640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9875384569168091, "cells": [{"id": 16, "text": "Using SQL views to limit access to a subset of the data in a table also has its own set of ", "bbox": {"l": 136.79999, "t": 269.50757, "r": 526.88428, "b": 278.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "challenges. First, there is the complexity of managing all of the SQL view objects that are ", "bbox": {"l": 136.79999, "t": 281.50742, "r": 531.77087, "b": 290.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "used for securing data access. Second, scaling a view-based security solution can be difficult ", "bbox": {"l": 136.79999, "t": 293.50723000000005, "r": 547.4408, "b": 302.72021, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "as the amount of data grows and the number of users increases.", "bbox": {"l": 136.79999, "t": 305.50705, "r": 421.86725, "b": 314.72003, "coord_origin": "TOPLEFT"}}]}, "text": "Using SQL views to limit access to a subset of the data in a table also has its own set of challenges. First, there is the complexity of managing all of the SQL view objects that are used for securing data access. Second, scaling a view-based security solution can be difficult as the amount of data grows and the number of users increases."}, {"label": "text", "id": 6, "page_no": 6, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.0379638671875, "t": 326.60943603515625, "r": 547.23267, "b": 361.19879150390625, "coord_origin": "TOPLEFT"}, "confidence": 0.975760281085968, "cells": [{"id": 20, "text": "Even if you are willing to live with these performance and management issues, a user with ", "bbox": {"l": 136.79999, "t": 327.52661, "r": 536.46692, "b": 336.7395900000001, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "*ALLOBJ access still can directly access all of the data in the underlying DB2 table and easily ", "bbox": {"l": 136.79999, "t": 339.52643, "r": 547.23267, "b": 348.73941, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "bypass the security controls that are built into an SQL view.", "bbox": {"l": 136.79999, "t": 351.52624999999995, "r": 397.88553, "b": 360.73923, "coord_origin": "TOPLEFT"}}]}, "text": "Even if you are willing to live with these performance and management issues, a user with *ALLOBJ access still can directly access all of the data in the underlying DB2 table and easily bypass the security controls that are built into an SQL view."}, {"label": "caption", "id": 7, "page_no": 6, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 136.23910522460938, "t": 690.8873901367188, "r": 317.073486328125, "b": 700.1619262695312, "coord_origin": "TOPLEFT"}, "confidence": 0.9457826614379883, "cells": [{"id": 23, "text": "Figure 1-2 Existing row and column controls", "bbox": {"l": 136.8, "t": 691.818, "r": 316.44727, "b": 700.142998, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 1-2 Existing row and column controls"}, {"label": "picture", "id": 8, "page_no": 6, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 135.92466735839844, "t": 375.9272155761719, "r": 546.4456176757812, "b": 688.6098022460938, "coord_origin": "TOPLEFT"}, "confidence": 0.9838992357254028, "cells": [{"id": 24, "text": "User with", "bbox": {"l": 180.95911, "t": 383.45612, "r": 209.08017, "b": 389.0784, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "*ALLOBJ access", "bbox": {"l": 170.00624, "t": 390.95251, "r": 220.10355, "b": 396.57480000000004, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 6, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.9996337890625, "t": 70.63605499267578, "r": 544.30334, "b": 153.09298706054688, "coord_origin": "TOPLEFT"}, "confidence": 0.9872740507125854, "cells": [{"id": 2, "text": "Many businesses are trying to limit data access to a need-to-know basis. This security goal ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 541.19006, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "means that users should be given access only to the minimum set of data that is required to ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 544.30334, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "perform their job. Often, users with object-level access are given access to row and column ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 540.94299, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "values that are beyond what their business task requires because that object-level security ", "bbox": {"l": 136.80002, "t": 107.50811999999996, "r": 538.27454, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "provides an all-or-nothing solution. For example, object-level controls allow a manager to ", "bbox": {"l": 136.80002, "t": 119.50792999999999, "r": 530.23004, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "access data about all employees. Most security policies limit a manager to accessing data ", "bbox": {"l": 136.80002, "t": 131.50775, "r": 536.26263, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "only for the employees that they manage.", "bbox": {"l": 136.80002, "t": 143.50757, "r": 319.04318, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Many businesses are trying to limit data access to a need-to-know basis. This security goal means that users should be given access only to the minimum set of data that is required to perform their job. Often, users with object-level access are given access to row and column values that are beyond what their business task requires because that object-level security provides an all-or-nothing solution. For example, object-level controls allow a manager to access data about all employees. Most security policies limit a manager to accessing data only for the employees that they manage."}, {"label": "section_header", "id": 3, "page_no": 6, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 64.4480209350586, "t": 172.2285919189453, "r": 301.46902, "b": 185.72744750976562, "coord_origin": "TOPLEFT"}, "confidence": 0.9626136422157288, "cells": [{"id": 9, "text": "1.3.1", "bbox": {"l": 64.800003, "t": 173.33471999999995, "r": 94.033653, "b": 185.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Existing row and column control", "bbox": {"l": 97.687859, "t": 173.33471999999995, "r": 301.46902, "b": 185.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "1.3.1 Existing row and column control"}, {"label": "text", "id": 4, "page_no": 6, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.77957153320312, "t": 198.52076721191406, "r": 541.56738, "b": 257.1080322265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9858148097991943, "cells": [{"id": 11, "text": "Some IBM i clients have tried augmenting the all-or-nothing object-level security with SQL ", "bbox": {"l": 136.8, "t": 199.48870999999997, "r": 534.90112, "b": 208.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "views (or logical files) and application logic, as shown in Figure 1-2. However, ", "bbox": {"l": 136.8, "t": 211.48852999999997, "r": 480.47281000000004, "b": 220.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "application-based logic is easy to bypass with all of the different data access interfaces that ", "bbox": {"l": 136.8, "t": 223.48834, "r": 541.56738, "b": 232.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "are provided by the IBM i operating system, such as Open Database Connectivity (ODBC) ", "bbox": {"l": 136.8, "t": 235.48816, "r": 537.39423, "b": 244.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "and System i Navigator.", "bbox": {"l": 136.79999, "t": 247.48798, "r": 242.24352000000002, "b": 256.70099000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Some IBM i clients have tried augmenting the all-or-nothing object-level security with SQL views (or logical files) and application logic, as shown in Figure 1-2. However, application-based logic is easy to bypass with all of the different data access interfaces that are provided by the IBM i operating system, such as Open Database Connectivity (ODBC) and System i Navigator."}, {"label": "text", "id": 5, "page_no": 6, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.9119110107422, "t": 268.6311340332031, "r": 547.4408, "b": 314.89898681640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9875384569168091, "cells": [{"id": 16, "text": "Using SQL views to limit access to a subset of the data in a table also has its own set of ", "bbox": {"l": 136.79999, "t": 269.50757, "r": 526.88428, "b": 278.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "challenges. First, there is the complexity of managing all of the SQL view objects that are ", "bbox": {"l": 136.79999, "t": 281.50742, "r": 531.77087, "b": 290.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "used for securing data access. Second, scaling a view-based security solution can be difficult ", "bbox": {"l": 136.79999, "t": 293.50723000000005, "r": 547.4408, "b": 302.72021, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "as the amount of data grows and the number of users increases.", "bbox": {"l": 136.79999, "t": 305.50705, "r": 421.86725, "b": 314.72003, "coord_origin": "TOPLEFT"}}]}, "text": "Using SQL views to limit access to a subset of the data in a table also has its own set of challenges. First, there is the complexity of managing all of the SQL view objects that are used for securing data access. Second, scaling a view-based security solution can be difficult as the amount of data grows and the number of users increases."}, {"label": "text", "id": 6, "page_no": 6, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.0379638671875, "t": 326.60943603515625, "r": 547.23267, "b": 361.19879150390625, "coord_origin": "TOPLEFT"}, "confidence": 0.975760281085968, "cells": [{"id": 20, "text": "Even if you are willing to live with these performance and management issues, a user with ", "bbox": {"l": 136.79999, "t": 327.52661, "r": 536.46692, "b": 336.7395900000001, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "*ALLOBJ access still can directly access all of the data in the underlying DB2 table and easily ", "bbox": {"l": 136.79999, "t": 339.52643, "r": 547.23267, "b": 348.73941, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "bypass the security controls that are built into an SQL view.", "bbox": {"l": 136.79999, "t": 351.52624999999995, "r": 397.88553, "b": 360.73923, "coord_origin": "TOPLEFT"}}]}, "text": "Even if you are willing to live with these performance and management issues, a user with *ALLOBJ access still can directly access all of the data in the underlying DB2 table and easily bypass the security controls that are built into an SQL view."}, {"label": "caption", "id": 7, "page_no": 6, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 136.23910522460938, "t": 690.8873901367188, "r": 317.073486328125, "b": 700.1619262695312, "coord_origin": "TOPLEFT"}, "confidence": 0.9457826614379883, "cells": [{"id": 23, "text": "Figure 1-2 Existing row and column controls", "bbox": {"l": 136.8, "t": 691.818, "r": 316.44727, "b": 700.142998, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 1-2 Existing row and column controls"}, {"label": "picture", "id": 8, "page_no": 6, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 135.92466735839844, "t": 375.9272155761719, "r": 546.4456176757812, "b": 688.6098022460938, "coord_origin": "TOPLEFT"}, "confidence": 0.9838992357254028, "cells": [{"id": 24, "text": "User with", "bbox": {"l": 180.95911, "t": 383.45612, "r": 209.08017, "b": 389.0784, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "*ALLOBJ access", "bbox": {"l": 170.00624, "t": 390.95251, "r": 220.10355, "b": 396.57480000000004, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 6, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.09014129638672, "t": 754.0796508789062, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8578534126281738, "cells": [{"id": 0, "text": "4 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "4"}, {"label": "page_footer", "id": 1, "page_no": 6, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 87.840302, "t": 754.6302490234375, "r": 328.72537, "b": 763.9817504882812, "coord_origin": "TOPLEFT"}, "confidence": 0.9491621851921082, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 87.840302, "t": 755.538002, "r": 328.72537, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 7, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "10 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "2.1.6", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 94.081459, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Change Function Usage CL command", "bbox": {"l": 97.741661, "t": 71.33471999999995, "r": 335.49551, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "The following CL commands can be used to work with, display, or change function usage IDs:", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 547.28442, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 114.67767000000003, "r": 141.78, "b": 123.45245, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Work Function Usage (", "bbox": {"l": 151.20016, "t": 114.52826000000005, "r": 253.26227000000003, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "WRKFCNUSG", "bbox": {"l": 253.26028, "t": 114.67767000000003, "r": 298.1998, "b": 123.50225999999998, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": ")", "bbox": {"l": 298.20081, "t": 114.52826000000005, "r": 301.51749, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 126.67749000000003, "r": 141.78099, "b": 135.45227, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Change Function Usage (", "bbox": {"l": 151.20116, "t": 126.52808000000005, "r": 265.13354, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "CHGFCNUSG", "bbox": {"l": 265.08081, "t": 126.67749000000003, "r": 310.02032, "b": 135.50207999999998, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": ")", "bbox": {"l": 310.08109, "t": 126.52808000000005, "r": 313.39777, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "GLYPH", "bbox": {"l": 136.80098, "t": 138.67731000000003, "r": 141.78098, "b": 147.45209, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Display Function Usage (", "bbox": {"l": 151.20114, "t": 138.52788999999996, "r": 262.5639, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "DSPFCNUSG", "bbox": {"l": 262.56091, "t": 138.67731000000003, "r": 307.50043, "b": 147.50189, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ")", "bbox": {"l": 307.50043, "t": 138.52788999999996, "r": 310.81711, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "For example, the following ", "bbox": {"l": 136.79997, "t": 160.48766999999998, "r": 255.09984000000003, "b": 169.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "CHGFCNUSG", "bbox": {"l": 255.00027, "t": 160.63707999999997, "r": 299.99957, "b": 169.46167000000003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": " command shows granting authorization to user ", "bbox": {"l": 300.00055, "t": 160.48766999999998, "r": 512.53802, "b": 169.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "HBEDOYA to administer and manage RCAC rules:", "bbox": {"l": 136.80096, "t": 172.48748999999998, "r": 360.41989, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED)", "bbox": {"l": 136.80096, "t": 189.67645000000005, "r": 441.59686, "b": 198.45123, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "2.1.7", "bbox": {"l": 64.800003, "t": 219.35468000000003, "r": 93.757614, "b": 231.34271, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Verifying function usage IDs for RCAC with the FUNCTION_USAGE view", "bbox": {"l": 97.377296, "t": 219.35468000000003, "r": 544.47546, "b": 231.34271, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "The FUNCTION_USAGE view contains function usage configuration details. Table 2-1 ", "bbox": {"l": 136.8, "t": 245.50867000000005, "r": 519.51794, "b": 254.72168, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "describes the columns in the FUNCTION_USAGE view.", "bbox": {"l": 136.8, "t": 257.50847999999996, "r": 382.94443, "b": 266.7215, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Table 2-1 FUNCTION_USAGE view", "bbox": {"l": 136.8, "t": 279.55798000000004, "r": 283.96805, "b": 287.88300000000004, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "To discover who has authorization to define and manage RCAC, you can use the query that is ", "bbox": {"l": 136.8, "t": 452.50872999999996, "r": 547.2804, "b": 461.72171, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "shown in Example 2-1.", "bbox": {"l": 136.8, "t": 464.50854, "r": 237.76951999999997, "b": 473.72153, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Example 2-1 Query to determine who has authority to define and manage RCAC", "bbox": {"l": 136.8, "t": 486.55798, "r": 462.35419, "b": 494.883, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "SELECT", "bbox": {"l": 136.8, "t": 503.65802, "r": 171.26956, "b": 512.4328, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "function_id,", "bbox": {"l": 182.75941, "t": 503.65802, "r": 251.69853, "b": 512.4328, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "user_name,", "bbox": {"l": 166.78244, "t": 515.6578400000001, "r": 241.73852999999997, "b": 524.43262, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "usage,", "bbox": {"l": 170.75961, "t": 527.65765, "r": 221.69901999999996, "b": 536.43242, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "user_type", "bbox": {"l": 167.53809, "t": 539.65747, "r": 236.69878, "b": 548.43222, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "FROM", "bbox": {"l": 136.8, "t": 551.65727, "r": 160.59396, "b": 560.43202, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "function_usage", "bbox": {"l": 178.43944, "t": 551.65727, "r": 261.71829, "b": 560.43202, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "WHERE", "bbox": {"l": 136.8, "t": 563.65707, "r": 162.44176, "b": 572.43182, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "function_id=\u2019QIBM_DB_SECADM\u2019", "bbox": {"l": 177.8268, "t": 563.65707, "r": 331.67731, "b": 572.43182, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ORDER BY", "bbox": {"l": 136.8, "t": 575.65688, "r": 178.77542, "b": 584.43163, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "user_name;", "bbox": {"l": 189.26929, "t": 575.65688, "r": 241.73856, "b": 584.43163, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "2.2", "bbox": {"l": 64.800003, "t": 620.22063, "r": 87.569839, "b": 634.98363, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Separation of duties", "bbox": {"l": 92.123802, "t": 620.22063, "r": 249.59605000000002, "b": 634.98363, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Separation of duties helps businesses comply with industry regulations or organizational ", "bbox": {"l": 136.8, "t": 652.54872, "r": 529.09357, "b": 661.76172, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "requirements and simplifies the management of authorities. Separation of duties is commonly ", "bbox": {"l": 136.8, "t": 664.54852, "r": 547.22345, "b": 673.76153, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "used to prevent fraudulent activities or errors by a single person. It provides the ability for ", "bbox": {"l": 136.8, "t": 676.54833, "r": 530.89716, "b": 685.76134, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "administrative functions to be divided across individuals without overlapping responsibilities, ", "bbox": {"l": 136.80002, "t": 688.54814, "r": 544.33832, "b": 697.7611469999999, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "so that one user does not possess unlimited authority, such as with the *ALLOBJ authority.", "bbox": {"l": 136.80002, "t": 700.547951, "r": 536.28363, "b": 709.760956, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "Column name", "bbox": {"l": 142.8, "t": 296.5379899999999, "r": 202.245, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Data type", "bbox": {"l": 216.80878999999996, "t": 296.5379899999999, "r": 257.21069, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Description", "bbox": {"l": 289.47479, "t": 296.5379899999999, "r": 338.89468, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "FUNCTION_ID", "bbox": {"l": 142.8, "t": 315.55771, "r": 203.2323, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "VARCHAR(30)", "bbox": {"l": 216.7854, "t": 315.55771, "r": 276.0036, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ID of the function.", "bbox": {"l": 289.4577, "t": 315.55771, "r": 359.85394, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "USER_NAME", "bbox": {"l": 142.8, "t": 334.51801, "r": 198.6693, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "VARCHAR(10)", "bbox": {"l": 216.74129999999997, "t": 334.51801, "r": 275.92349, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "Name of the user profile that has a usage setting for this ", "bbox": {"l": 289.38208, "t": 334.51801, "r": 515.05359, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "function.", "bbox": {"l": 289.4397, "t": 345.55832, "r": 323.43362, "b": 353.88333, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "USAGE", "bbox": {"l": 142.79999, "t": 364.51862, "r": 173.98318, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "VARCHAR(7)", "bbox": {"l": 216.77367999999998, "t": 364.51862, "r": 270.97977, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Usage setting:", "bbox": {"l": 289.41626, "t": 364.51862, "r": 346.88757, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 375.69394000000005, "r": 293.9397, "b": 383.62292, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "ALLOWED: The user profile is allowed to use the function.", "bbox": {"l": 303.83969, "t": 375.55893, "r": 535.16766, "b": 383.88394, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 386.67395, "r": 293.9397, "b": 394.60294, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "DENIED: The user profile is not allowed to use the function.", "bbox": {"l": 303.83969, "t": 386.53894, "r": 539.10712, "b": 394.86395, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "USER_TYPE", "bbox": {"l": 142.8, "t": 405.55865, "r": 196.2249, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "VARCHAR(5)", "bbox": {"l": 216.75211, "t": 405.55865, "r": 270.99872, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Type of user profile:", "bbox": {"l": 289.43161, "t": 405.55865, "r": 367.8009, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 416.67368000000005, "r": 293.9397, "b": 424.60266, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "USER: The user profile is a user.", "bbox": {"l": 303.83969, "t": 416.53867, "r": 434.78159, "b": 424.86368, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 427.65369, "r": 293.9397, "b": 435.58267000000006, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "GROUP: The user profile is a group.", "bbox": {"l": 303.83969, "t": 427.51868, "r": 448.11963000000003, "b": 435.84369, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.4488525390625, "t": 754.418701171875, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9166076183319092, "cells": [{"id": 0, "text": "10 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.35774993896484, "t": 754.6892700195312, "r": 334.42142, "b": 763.9585571289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9529878497123718, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.09011840820312, "t": 70.1792984008789, "r": 335.49551, "b": 83.9942626953125, "coord_origin": "TOPLEFT"}, "confidence": 0.969738245010376, "cells": [{"id": 2, "text": "2.1.6", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 94.081459, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Change Function Usage CL command", "bbox": {"l": 97.741661, "t": 71.33471999999995, "r": 335.49551, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.83584594726562, "t": 96.62870788574219, "r": 547.28442, "b": 107.22466278076172, "coord_origin": "TOPLEFT"}, "confidence": 0.9551490545272827, "cells": [{"id": 4, "text": "The following CL commands can be used to work with, display, or change function usage IDs:", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 547.28442, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 135.6907196044922, "t": 113.74026489257812, "r": 301.51749, "b": 124.55382537841797, "coord_origin": "TOPLEFT"}, "confidence": 0.9410473704338074, "cells": [{"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 114.67767000000003, "r": 141.78, "b": 123.45245, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Work Function Usage (", "bbox": {"l": 151.20016, "t": 114.52826000000005, "r": 253.26227000000003, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "WRKFCNUSG", "bbox": {"l": 253.26028, "t": 114.67767000000003, "r": 298.1998, "b": 123.50225999999998, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": ")", "bbox": {"l": 298.20081, "t": 114.52826000000005, "r": 301.51749, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 135.7242889404297, "t": 125.93077850341797, "r": 313.39777, "b": 136.68792724609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9417493939399719, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 126.67749000000003, "r": 141.78099, "b": 135.45227, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Change Function Usage (", "bbox": {"l": 151.20116, "t": 126.52808000000005, "r": 265.13354, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "CHGFCNUSG", "bbox": {"l": 265.08081, "t": 126.67749000000003, "r": 310.02032, "b": 135.50207999999998, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": ")", "bbox": {"l": 310.08109, "t": 126.52808000000005, "r": 313.39777, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.71124267578125, "t": 137.9629364013672, "r": 310.81711, "b": 148.59957885742188, "coord_origin": "TOPLEFT"}, "confidence": 0.9562166929244995, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.80098, "t": 138.67731000000003, "r": 141.78098, "b": 147.45209, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Display Function Usage (", "bbox": {"l": 151.20114, "t": 138.52788999999996, "r": 262.5639, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "DSPFCNUSG", "bbox": {"l": 262.56091, "t": 138.67731000000003, "r": 307.50043, "b": 147.50189, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ")", "bbox": {"l": 307.50043, "t": 138.52788999999996, "r": 310.81711, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 136.30247497558594, "t": 159.218505859375, "r": 512.53802, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9682289958000183, "cells": [{"id": 17, "text": "For example, the following ", "bbox": {"l": 136.79997, "t": 160.48766999999998, "r": 255.09984000000003, "b": 169.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "CHGFCNUSG", "bbox": {"l": 255.00027, "t": 160.63707999999997, "r": 299.99957, "b": 169.46167000000003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": " command shows granting authorization to user ", "bbox": {"l": 300.00055, "t": 160.48766999999998, "r": 512.53802, "b": 169.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "HBEDOYA to administer and manage RCAC rules:", "bbox": {"l": 136.80096, "t": 172.48748999999998, "r": 360.41989, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 136.3306427001953, "t": 187.99078369140625, "r": 441.59686, "b": 198.88003540039062, "coord_origin": "TOPLEFT"}, "confidence": 0.9056942462921143, "cells": [{"id": 21, "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED)", "bbox": {"l": 136.80096, "t": 189.67645000000005, "r": 441.59686, "b": 198.45123, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "section_header", "bbox": {"l": 63.9356689453125, "t": 218.1382598876953, "r": 544.47546, "b": 232.12425231933594, "coord_origin": "TOPLEFT"}, "confidence": 0.9636377096176147, "cells": [{"id": 22, "text": "2.1.7", "bbox": {"l": 64.800003, "t": 219.35468000000003, "r": 93.757614, "b": 231.34271, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Verifying function usage IDs for RCAC with the FUNCTION_USAGE view", "bbox": {"l": 97.377296, "t": 219.35468000000003, "r": 544.47546, "b": 231.34271, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 135.84828186035156, "t": 244.5770263671875, "r": 519.51794, "b": 266.7215, "coord_origin": "TOPLEFT"}, "confidence": 0.9737265110015869, "cells": [{"id": 24, "text": "The FUNCTION_USAGE view contains function usage configuration details. Table 2-1 ", "bbox": {"l": 136.8, "t": 245.50867000000005, "r": 519.51794, "b": 254.72168, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "describes the columns in the FUNCTION_USAGE view.", "bbox": {"l": 136.8, "t": 257.50847999999996, "r": 382.94443, "b": 266.7215, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "caption", "bbox": {"l": 136.8, "t": 278.509521484375, "r": 284.9328308105469, "b": 287.88300000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.919783353805542, "cells": [{"id": 26, "text": "Table 2-1 FUNCTION_USAGE view", "bbox": {"l": 136.8, "t": 279.55798000000004, "r": 283.96805, "b": 287.88300000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 135.81077575683594, "t": 451.328857421875, "r": 547.2804, "b": 473.72153, "coord_origin": "TOPLEFT"}, "confidence": 0.9647641777992249, "cells": [{"id": 27, "text": "To discover who has authorization to define and manage RCAC, you can use the query that is ", "bbox": {"l": 136.8, "t": 452.50872999999996, "r": 547.2804, "b": 461.72171, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "shown in Example 2-1.", "bbox": {"l": 136.8, "t": 464.50854, "r": 237.76951999999997, "b": 473.72153, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "caption", "bbox": {"l": 136.28225708007812, "t": 485.76434326171875, "r": 462.98095703125, "b": 495.88201904296875, "coord_origin": "TOPLEFT"}, "confidence": 0.8165032267570496, "cells": [{"id": 29, "text": "Example 2-1 Query to determine who has authority to define and manage RCAC", "bbox": {"l": 136.8, "t": 486.55798, "r": 462.35419, "b": 494.883, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "text", "bbox": {"l": 136.8, "t": 503.65802, "r": 331.67731, "b": 584.43163, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 30, "text": "SELECT", "bbox": {"l": 136.8, "t": 503.65802, "r": 171.26956, "b": 512.4328, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "function_id,", "bbox": {"l": 182.75941, "t": 503.65802, "r": 251.69853, "b": 512.4328, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "user_name,", "bbox": {"l": 166.78244, "t": 515.6578400000001, "r": 241.73852999999997, "b": 524.43262, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "usage,", "bbox": {"l": 170.75961, "t": 527.65765, "r": 221.69901999999996, "b": 536.43242, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "user_type", "bbox": {"l": 167.53809, "t": 539.65747, "r": 236.69878, "b": 548.43222, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "FROM", "bbox": {"l": 136.8, "t": 551.65727, "r": 160.59396, "b": 560.43202, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "function_usage", "bbox": {"l": 178.43944, "t": 551.65727, "r": 261.71829, "b": 560.43202, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "WHERE", "bbox": {"l": 136.8, "t": 563.65707, "r": 162.44176, "b": 572.43182, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "function_id=\u2019QIBM_DB_SECADM\u2019", "bbox": {"l": 177.8268, "t": 563.65707, "r": 331.67731, "b": 572.43182, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ORDER BY", "bbox": {"l": 136.8, "t": 575.65688, "r": 178.77542, "b": 584.43163, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "user_name;", "bbox": {"l": 189.26929, "t": 575.65688, "r": 241.73856, "b": 584.43163, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "section_header", "bbox": {"l": 64.18024444580078, "t": 619.3924560546875, "r": 249.59605000000002, "b": 635.6513671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9656643271446228, "cells": [{"id": 41, "text": "2.2", "bbox": {"l": 64.800003, "t": 620.22063, "r": 87.569839, "b": 634.98363, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Separation of duties", "bbox": {"l": 92.123802, "t": 620.22063, "r": 249.59605000000002, "b": 634.98363, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "text", "bbox": {"l": 136.1588592529297, "t": 651.8870849609375, "r": 547.22345, "b": 710.182373046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9853105545043945, "cells": [{"id": 43, "text": "Separation of duties helps businesses comply with industry regulations or organizational ", "bbox": {"l": 136.8, "t": 652.54872, "r": 529.09357, "b": 661.76172, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "requirements and simplifies the management of authorities. Separation of duties is commonly ", "bbox": {"l": 136.8, "t": 664.54852, "r": 547.22345, "b": 673.76153, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "used to prevent fraudulent activities or errors by a single person. It provides the ability for ", "bbox": {"l": 136.8, "t": 676.54833, "r": 530.89716, "b": 685.76134, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "administrative functions to be divided across individuals without overlapping responsibilities, ", "bbox": {"l": 136.80002, "t": 688.54814, "r": 544.33832, "b": 697.7611469999999, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "so that one user does not possess unlimited authority, such as with the *ALLOBJ authority.", "bbox": {"l": 136.80002, "t": 700.547951, "r": 536.28363, "b": 709.760956, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "table", "bbox": {"l": 135.52508544921875, "t": 289.7249755859375, "r": 545.87060546875, "b": 442.0505065917969, "coord_origin": "TOPLEFT"}, "confidence": 0.985169529914856, "cells": [{"id": 48, "text": "Column name", "bbox": {"l": 142.8, "t": 296.5379899999999, "r": 202.245, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Data type", "bbox": {"l": 216.80878999999996, "t": 296.5379899999999, "r": 257.21069, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Description", "bbox": {"l": 289.47479, "t": 296.5379899999999, "r": 338.89468, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "FUNCTION_ID", "bbox": {"l": 142.8, "t": 315.55771, "r": 203.2323, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "VARCHAR(30)", "bbox": {"l": 216.7854, "t": 315.55771, "r": 276.0036, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ID of the function.", "bbox": {"l": 289.4577, "t": 315.55771, "r": 359.85394, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "USER_NAME", "bbox": {"l": 142.8, "t": 334.51801, "r": 198.6693, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "VARCHAR(10)", "bbox": {"l": 216.74129999999997, "t": 334.51801, "r": 275.92349, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "Name of the user profile that has a usage setting for this ", "bbox": {"l": 289.38208, "t": 334.51801, "r": 515.05359, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "function.", "bbox": {"l": 289.4397, "t": 345.55832, "r": 323.43362, "b": 353.88333, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "USAGE", "bbox": {"l": 142.79999, "t": 364.51862, "r": 173.98318, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "VARCHAR(7)", "bbox": {"l": 216.77367999999998, "t": 364.51862, "r": 270.97977, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Usage setting:", "bbox": {"l": 289.41626, "t": 364.51862, "r": 346.88757, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 375.69394000000005, "r": 293.9397, "b": 383.62292, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "ALLOWED: The user profile is allowed to use the function.", "bbox": {"l": 303.83969, "t": 375.55893, "r": 535.16766, "b": 383.88394, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 386.67395, "r": 293.9397, "b": 394.60294, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "DENIED: The user profile is not allowed to use the function.", "bbox": {"l": 303.83969, "t": 386.53894, "r": 539.10712, "b": 394.86395, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "USER_TYPE", "bbox": {"l": 142.8, "t": 405.55865, "r": 196.2249, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "VARCHAR(5)", "bbox": {"l": 216.75211, "t": 405.55865, "r": 270.99872, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Type of user profile:", "bbox": {"l": 289.43161, "t": 405.55865, "r": 367.8009, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 416.67368000000005, "r": 293.9397, "b": 424.60266, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "USER: The user profile is a user.", "bbox": {"l": 303.83969, "t": 416.53867, "r": 434.78159, "b": 424.86368, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 427.65369, "r": 293.9397, "b": 435.58267000000006, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "GROUP: The user profile is a group.", "bbox": {"l": 303.83969, "t": 427.51868, "r": 448.11963000000003, "b": 435.84369, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {"17": {"label": "table", "id": 17, "page_no": 7, "cluster": {"id": 17, "label": "table", "bbox": {"l": 135.52508544921875, "t": 289.7249755859375, "r": 545.87060546875, "b": 442.0505065917969, "coord_origin": "TOPLEFT"}, "confidence": 0.985169529914856, "cells": [{"id": 48, "text": "Column name", "bbox": {"l": 142.8, "t": 296.5379899999999, "r": 202.245, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Data type", "bbox": {"l": 216.80878999999996, "t": 296.5379899999999, "r": 257.21069, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Description", "bbox": {"l": 289.47479, "t": 296.5379899999999, "r": 338.89468, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "FUNCTION_ID", "bbox": {"l": 142.8, "t": 315.55771, "r": 203.2323, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "VARCHAR(30)", "bbox": {"l": 216.7854, "t": 315.55771, "r": 276.0036, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ID of the function.", "bbox": {"l": 289.4577, "t": 315.55771, "r": 359.85394, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "USER_NAME", "bbox": {"l": 142.8, "t": 334.51801, "r": 198.6693, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "VARCHAR(10)", "bbox": {"l": 216.74129999999997, "t": 334.51801, "r": 275.92349, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "Name of the user profile that has a usage setting for this ", "bbox": {"l": 289.38208, "t": 334.51801, "r": 515.05359, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "function.", "bbox": {"l": 289.4397, "t": 345.55832, "r": 323.43362, "b": 353.88333, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "USAGE", "bbox": {"l": 142.79999, "t": 364.51862, "r": 173.98318, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "VARCHAR(7)", "bbox": {"l": 216.77367999999998, "t": 364.51862, "r": 270.97977, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Usage setting:", "bbox": {"l": 289.41626, "t": 364.51862, "r": 346.88757, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 375.69394000000005, "r": 293.9397, "b": 383.62292, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "ALLOWED: The user profile is allowed to use the function.", "bbox": {"l": 303.83969, "t": 375.55893, "r": 535.16766, "b": 383.88394, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 386.67395, "r": 293.9397, "b": 394.60294, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "DENIED: The user profile is not allowed to use the function.", "bbox": {"l": 303.83969, "t": 386.53894, "r": 539.10712, "b": 394.86395, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "USER_TYPE", "bbox": {"l": 142.8, "t": 405.55865, "r": 196.2249, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "VARCHAR(5)", "bbox": {"l": 216.75211, "t": 405.55865, "r": 270.99872, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Type of user profile:", "bbox": {"l": 289.43161, "t": 405.55865, "r": 367.8009, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 416.67368000000005, "r": 293.9397, "b": 424.60266, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "USER: The user profile is a user.", "bbox": {"l": 303.83969, "t": 416.53867, "r": 434.78159, "b": 424.86368, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 427.65369, "r": 293.9397, "b": 435.58267000000006, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "GROUP: The user profile is a group.", "bbox": {"l": 303.83969, "t": 427.51868, "r": 448.11963000000003, "b": 435.84369, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "ched", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl"], "num_rows": 5, "num_cols": 3, "table_cells": [{"bbox": {"l": 142.8, "t": 296.5379899999999, "r": 202.245, "b": 304.86301, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Column name", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 216.80878999999996, "t": 296.5379899999999, "r": 257.21069, "b": 304.86301, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Data type", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 289.47479, "t": 296.5379899999999, "r": 338.89468, "b": 304.86301, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Description", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8, "t": 315.55771, "r": 203.2323, "b": 323.88272, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "FUNCTION_ID", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.7854, "t": 315.55771, "r": 276.0036, "b": 323.88272, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(30)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.4577, "t": 315.55771, "r": 359.85394, "b": 323.88272, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "ID of the function.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8, "t": 334.51801, "r": 198.6693, "b": 342.84302, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USER_NAME", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.74129999999997, "t": 334.51801, "r": 275.92349, "b": 342.84302, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(10)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.38208, "t": 334.51801, "r": 515.05359, "b": 353.88333, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Name of the user profile that has a usage setting for this function.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.79999, "t": 364.51862, "r": 173.98318, "b": 372.84363, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USAGE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.77367999999998, "t": 364.51862, "r": 270.97977, "b": 372.84363, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(7)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.41626, "t": 364.51862, "r": 539.10712, "b": 394.86395, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Usage setting: GLYPH ALLOWED: The user profile is allowed to use the function. GLYPH DENIED: The user profile is not allowed to use the function.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8, "t": 405.55865, "r": 196.2249, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USER_TYPE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.75211, "t": 405.55865, "r": 270.99872, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(5)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.43161, "t": 405.55865, "r": 448.11963000000003, "b": 435.84369, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Type of user profile: GLYPH USER: The user profile is a user. GLYPH GROUP: The user profile is a group.", "column_header": false, "row_header": false, "row_section": false}]}}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 7, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.4488525390625, "t": 754.418701171875, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9166076183319092, "cells": [{"id": 0, "text": "10 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "10"}, {"label": "page_footer", "id": 1, "page_no": 7, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.35774993896484, "t": 754.6892700195312, "r": 334.42142, "b": 763.9585571289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9529878497123718, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "section_header", "id": 2, "page_no": 7, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.09011840820312, "t": 70.1792984008789, "r": 335.49551, "b": 83.9942626953125, "coord_origin": "TOPLEFT"}, "confidence": 0.969738245010376, "cells": [{"id": 2, "text": "2.1.6", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 94.081459, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Change Function Usage CL command", "bbox": {"l": 97.741661, "t": 71.33471999999995, "r": 335.49551, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "2.1.6 Change Function Usage CL command"}, {"label": "text", "id": 3, "page_no": 7, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.83584594726562, "t": 96.62870788574219, "r": 547.28442, "b": 107.22466278076172, "coord_origin": "TOPLEFT"}, "confidence": 0.9551490545272827, "cells": [{"id": 4, "text": "The following CL commands can be used to work with, display, or change function usage IDs:", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 547.28442, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}]}, "text": "The following CL commands can be used to work with, display, or change function usage IDs:"}, {"label": "list_item", "id": 4, "page_no": 7, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.6907196044922, "t": 113.74026489257812, "r": 301.51749, "b": 124.55382537841797, "coord_origin": "TOPLEFT"}, "confidence": 0.9410473704338074, "cells": [{"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 114.67767000000003, "r": 141.78, "b": 123.45245, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Work Function Usage (", "bbox": {"l": 151.20016, "t": 114.52826000000005, "r": 253.26227000000003, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "WRKFCNUSG", "bbox": {"l": 253.26028, "t": 114.67767000000003, "r": 298.1998, "b": 123.50225999999998, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": ")", "bbox": {"l": 298.20081, "t": 114.52826000000005, "r": 301.51749, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Work Function Usage ( WRKFCNUSG )"}, {"label": "list_item", "id": 5, "page_no": 7, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.7242889404297, "t": 125.93077850341797, "r": 313.39777, "b": 136.68792724609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9417493939399719, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 126.67749000000003, "r": 141.78099, "b": 135.45227, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Change Function Usage (", "bbox": {"l": 151.20116, "t": 126.52808000000005, "r": 265.13354, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "CHGFCNUSG", "bbox": {"l": 265.08081, "t": 126.67749000000003, "r": 310.02032, "b": 135.50207999999998, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": ")", "bbox": {"l": 310.08109, "t": 126.52808000000005, "r": 313.39777, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Change Function Usage ( CHGFCNUSG )"}, {"label": "list_item", "id": 6, "page_no": 7, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.71124267578125, "t": 137.9629364013672, "r": 310.81711, "b": 148.59957885742188, "coord_origin": "TOPLEFT"}, "confidence": 0.9562166929244995, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.80098, "t": 138.67731000000003, "r": 141.78098, "b": 147.45209, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Display Function Usage (", "bbox": {"l": 151.20114, "t": 138.52788999999996, "r": 262.5639, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "DSPFCNUSG", "bbox": {"l": 262.56091, "t": 138.67731000000003, "r": 307.50043, "b": 147.50189, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ")", "bbox": {"l": 307.50043, "t": 138.52788999999996, "r": 310.81711, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Display Function Usage ( DSPFCNUSG )"}, {"label": "text", "id": 7, "page_no": 7, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.30247497558594, "t": 159.218505859375, "r": 512.53802, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9682289958000183, "cells": [{"id": 17, "text": "For example, the following ", "bbox": {"l": 136.79997, "t": 160.48766999999998, "r": 255.09984000000003, "b": 169.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "CHGFCNUSG", "bbox": {"l": 255.00027, "t": 160.63707999999997, "r": 299.99957, "b": 169.46167000000003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": " command shows granting authorization to user ", "bbox": {"l": 300.00055, "t": 160.48766999999998, "r": 512.53802, "b": 169.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "HBEDOYA to administer and manage RCAC rules:", "bbox": {"l": 136.80096, "t": 172.48748999999998, "r": 360.41989, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}}]}, "text": "For example, the following CHGFCNUSG command shows granting authorization to user HBEDOYA to administer and manage RCAC rules:"}, {"label": "text", "id": 8, "page_no": 7, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.3306427001953, "t": 187.99078369140625, "r": 441.59686, "b": 198.88003540039062, "coord_origin": "TOPLEFT"}, "confidence": 0.9056942462921143, "cells": [{"id": 21, "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED)", "bbox": {"l": 136.80096, "t": 189.67645000000005, "r": 441.59686, "b": 198.45123, "coord_origin": "TOPLEFT"}}]}, "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED)"}, {"label": "section_header", "id": 9, "page_no": 7, "cluster": {"id": 9, "label": "section_header", "bbox": {"l": 63.9356689453125, "t": 218.1382598876953, "r": 544.47546, "b": 232.12425231933594, "coord_origin": "TOPLEFT"}, "confidence": 0.9636377096176147, "cells": [{"id": 22, "text": "2.1.7", "bbox": {"l": 64.800003, "t": 219.35468000000003, "r": 93.757614, "b": 231.34271, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Verifying function usage IDs for RCAC with the FUNCTION_USAGE view", "bbox": {"l": 97.377296, "t": 219.35468000000003, "r": 544.47546, "b": 231.34271, "coord_origin": "TOPLEFT"}}]}, "text": "2.1.7 Verifying function usage IDs for RCAC with the FUNCTION_USAGE view"}, {"label": "text", "id": 10, "page_no": 7, "cluster": {"id": 10, "label": "text", "bbox": {"l": 135.84828186035156, "t": 244.5770263671875, "r": 519.51794, "b": 266.7215, "coord_origin": "TOPLEFT"}, "confidence": 0.9737265110015869, "cells": [{"id": 24, "text": "The FUNCTION_USAGE view contains function usage configuration details. Table 2-1 ", "bbox": {"l": 136.8, "t": 245.50867000000005, "r": 519.51794, "b": 254.72168, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "describes the columns in the FUNCTION_USAGE view.", "bbox": {"l": 136.8, "t": 257.50847999999996, "r": 382.94443, "b": 266.7215, "coord_origin": "TOPLEFT"}}]}, "text": "The FUNCTION_USAGE view contains function usage configuration details. Table 2-1 describes the columns in the FUNCTION_USAGE view."}, {"label": "caption", "id": 11, "page_no": 7, "cluster": {"id": 11, "label": "caption", "bbox": {"l": 136.8, "t": 278.509521484375, "r": 284.9328308105469, "b": 287.88300000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.919783353805542, "cells": [{"id": 26, "text": "Table 2-1 FUNCTION_USAGE view", "bbox": {"l": 136.8, "t": 279.55798000000004, "r": 283.96805, "b": 287.88300000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Table 2-1 FUNCTION_USAGE view"}, {"label": "text", "id": 12, "page_no": 7, "cluster": {"id": 12, "label": "text", "bbox": {"l": 135.81077575683594, "t": 451.328857421875, "r": 547.2804, "b": 473.72153, "coord_origin": "TOPLEFT"}, "confidence": 0.9647641777992249, "cells": [{"id": 27, "text": "To discover who has authorization to define and manage RCAC, you can use the query that is ", "bbox": {"l": 136.8, "t": 452.50872999999996, "r": 547.2804, "b": 461.72171, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "shown in Example 2-1.", "bbox": {"l": 136.8, "t": 464.50854, "r": 237.76951999999997, "b": 473.72153, "coord_origin": "TOPLEFT"}}]}, "text": "To discover who has authorization to define and manage RCAC, you can use the query that is shown in Example 2-1."}, {"label": "caption", "id": 13, "page_no": 7, "cluster": {"id": 13, "label": "caption", "bbox": {"l": 136.28225708007812, "t": 485.76434326171875, "r": 462.98095703125, "b": 495.88201904296875, "coord_origin": "TOPLEFT"}, "confidence": 0.8165032267570496, "cells": [{"id": 29, "text": "Example 2-1 Query to determine who has authority to define and manage RCAC", "bbox": {"l": 136.8, "t": 486.55798, "r": 462.35419, "b": 494.883, "coord_origin": "TOPLEFT"}}]}, "text": "Example 2-1 Query to determine who has authority to define and manage RCAC"}, {"label": "text", "id": 14, "page_no": 7, "cluster": {"id": 14, "label": "text", "bbox": {"l": 136.8, "t": 503.65802, "r": 331.67731, "b": 584.43163, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 30, "text": "SELECT", "bbox": {"l": 136.8, "t": 503.65802, "r": 171.26956, "b": 512.4328, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "function_id,", "bbox": {"l": 182.75941, "t": 503.65802, "r": 251.69853, "b": 512.4328, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "user_name,", "bbox": {"l": 166.78244, "t": 515.6578400000001, "r": 241.73852999999997, "b": 524.43262, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "usage,", "bbox": {"l": 170.75961, "t": 527.65765, "r": 221.69901999999996, "b": 536.43242, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "user_type", "bbox": {"l": 167.53809, "t": 539.65747, "r": 236.69878, "b": 548.43222, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "FROM", "bbox": {"l": 136.8, "t": 551.65727, "r": 160.59396, "b": 560.43202, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "function_usage", "bbox": {"l": 178.43944, "t": 551.65727, "r": 261.71829, "b": 560.43202, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "WHERE", "bbox": {"l": 136.8, "t": 563.65707, "r": 162.44176, "b": 572.43182, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "function_id=\u2019QIBM_DB_SECADM\u2019", "bbox": {"l": 177.8268, "t": 563.65707, "r": 331.67731, "b": 572.43182, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ORDER BY", "bbox": {"l": 136.8, "t": 575.65688, "r": 178.77542, "b": 584.43163, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "user_name;", "bbox": {"l": 189.26929, "t": 575.65688, "r": 241.73856, "b": 584.43163, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT function_id, user_name, usage, user_type FROM function_usage WHERE function_id=\u2019QIBM_DB_SECADM\u2019 ORDER BY user_name;"}, {"label": "section_header", "id": 15, "page_no": 7, "cluster": {"id": 15, "label": "section_header", "bbox": {"l": 64.18024444580078, "t": 619.3924560546875, "r": 249.59605000000002, "b": 635.6513671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9656643271446228, "cells": [{"id": 41, "text": "2.2", "bbox": {"l": 64.800003, "t": 620.22063, "r": 87.569839, "b": 634.98363, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Separation of duties", "bbox": {"l": 92.123802, "t": 620.22063, "r": 249.59605000000002, "b": 634.98363, "coord_origin": "TOPLEFT"}}]}, "text": "2.2 Separation of duties"}, {"label": "text", "id": 16, "page_no": 7, "cluster": {"id": 16, "label": "text", "bbox": {"l": 136.1588592529297, "t": 651.8870849609375, "r": 547.22345, "b": 710.182373046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9853105545043945, "cells": [{"id": 43, "text": "Separation of duties helps businesses comply with industry regulations or organizational ", "bbox": {"l": 136.8, "t": 652.54872, "r": 529.09357, "b": 661.76172, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "requirements and simplifies the management of authorities. Separation of duties is commonly ", "bbox": {"l": 136.8, "t": 664.54852, "r": 547.22345, "b": 673.76153, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "used to prevent fraudulent activities or errors by a single person. It provides the ability for ", "bbox": {"l": 136.8, "t": 676.54833, "r": 530.89716, "b": 685.76134, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "administrative functions to be divided across individuals without overlapping responsibilities, ", "bbox": {"l": 136.80002, "t": 688.54814, "r": 544.33832, "b": 697.7611469999999, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "so that one user does not possess unlimited authority, such as with the *ALLOBJ authority.", "bbox": {"l": 136.80002, "t": 700.547951, "r": 536.28363, "b": 709.760956, "coord_origin": "TOPLEFT"}}]}, "text": "Separation of duties helps businesses comply with industry regulations or organizational requirements and simplifies the management of authorities. Separation of duties is commonly used to prevent fraudulent activities or errors by a single person. It provides the ability for administrative functions to be divided across individuals without overlapping responsibilities, so that one user does not possess unlimited authority, such as with the *ALLOBJ authority."}, {"label": "table", "id": 17, "page_no": 7, "cluster": {"id": 17, "label": "table", "bbox": {"l": 135.52508544921875, "t": 289.7249755859375, "r": 545.87060546875, "b": 442.0505065917969, "coord_origin": "TOPLEFT"}, "confidence": 0.985169529914856, "cells": [{"id": 48, "text": "Column name", "bbox": {"l": 142.8, "t": 296.5379899999999, "r": 202.245, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Data type", "bbox": {"l": 216.80878999999996, "t": 296.5379899999999, "r": 257.21069, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Description", "bbox": {"l": 289.47479, "t": 296.5379899999999, "r": 338.89468, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "FUNCTION_ID", "bbox": {"l": 142.8, "t": 315.55771, "r": 203.2323, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "VARCHAR(30)", "bbox": {"l": 216.7854, "t": 315.55771, "r": 276.0036, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ID of the function.", "bbox": {"l": 289.4577, "t": 315.55771, "r": 359.85394, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "USER_NAME", "bbox": {"l": 142.8, "t": 334.51801, "r": 198.6693, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "VARCHAR(10)", "bbox": {"l": 216.74129999999997, "t": 334.51801, "r": 275.92349, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "Name of the user profile that has a usage setting for this ", "bbox": {"l": 289.38208, "t": 334.51801, "r": 515.05359, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "function.", "bbox": {"l": 289.4397, "t": 345.55832, "r": 323.43362, "b": 353.88333, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "USAGE", "bbox": {"l": 142.79999, "t": 364.51862, "r": 173.98318, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "VARCHAR(7)", "bbox": {"l": 216.77367999999998, "t": 364.51862, "r": 270.97977, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Usage setting:", "bbox": {"l": 289.41626, "t": 364.51862, "r": 346.88757, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 375.69394000000005, "r": 293.9397, "b": 383.62292, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "ALLOWED: The user profile is allowed to use the function.", "bbox": {"l": 303.83969, "t": 375.55893, "r": 535.16766, "b": 383.88394, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 386.67395, "r": 293.9397, "b": 394.60294, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "DENIED: The user profile is not allowed to use the function.", "bbox": {"l": 303.83969, "t": 386.53894, "r": 539.10712, "b": 394.86395, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "USER_TYPE", "bbox": {"l": 142.8, "t": 405.55865, "r": 196.2249, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "VARCHAR(5)", "bbox": {"l": 216.75211, "t": 405.55865, "r": 270.99872, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Type of user profile:", "bbox": {"l": 289.43161, "t": 405.55865, "r": 367.8009, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 416.67368000000005, "r": 293.9397, "b": 424.60266, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "USER: The user profile is a user.", "bbox": {"l": 303.83969, "t": 416.53867, "r": 434.78159, "b": 424.86368, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 427.65369, "r": 293.9397, "b": 435.58267000000006, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "GROUP: The user profile is a group.", "bbox": {"l": 303.83969, "t": 427.51868, "r": 448.11963000000003, "b": 435.84369, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "ched", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl"], "num_rows": 5, "num_cols": 3, "table_cells": [{"bbox": {"l": 142.8, "t": 296.5379899999999, "r": 202.245, "b": 304.86301, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Column name", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 216.80878999999996, "t": 296.5379899999999, "r": 257.21069, "b": 304.86301, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Data type", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 289.47479, "t": 296.5379899999999, "r": 338.89468, "b": 304.86301, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Description", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8, "t": 315.55771, "r": 203.2323, "b": 323.88272, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "FUNCTION_ID", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.7854, "t": 315.55771, "r": 276.0036, "b": 323.88272, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(30)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.4577, "t": 315.55771, "r": 359.85394, "b": 323.88272, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "ID of the function.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8, "t": 334.51801, "r": 198.6693, "b": 342.84302, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USER_NAME", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.74129999999997, "t": 334.51801, "r": 275.92349, "b": 342.84302, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(10)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.38208, "t": 334.51801, "r": 515.05359, "b": 353.88333, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Name of the user profile that has a usage setting for this function.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.79999, "t": 364.51862, "r": 173.98318, "b": 372.84363, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USAGE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.77367999999998, "t": 364.51862, "r": 270.97977, "b": 372.84363, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(7)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.41626, "t": 364.51862, "r": 539.10712, "b": 394.86395, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Usage setting: GLYPH ALLOWED: The user profile is allowed to use the function. GLYPH DENIED: The user profile is not allowed to use the function.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8, "t": 405.55865, "r": 196.2249, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USER_TYPE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.75211, "t": 405.55865, "r": 270.99872, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(5)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.43161, "t": 405.55865, "r": 448.11963000000003, "b": 435.84369, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Type of user profile: GLYPH USER: The user profile is a user. GLYPH GROUP: The user profile is a group.", "column_header": false, "row_header": false, "row_section": false}]}], "body": [{"label": "section_header", "id": 2, "page_no": 7, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.09011840820312, "t": 70.1792984008789, "r": 335.49551, "b": 83.9942626953125, "coord_origin": "TOPLEFT"}, "confidence": 0.969738245010376, "cells": [{"id": 2, "text": "2.1.6", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 94.081459, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Change Function Usage CL command", "bbox": {"l": 97.741661, "t": 71.33471999999995, "r": 335.49551, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "2.1.6 Change Function Usage CL command"}, {"label": "text", "id": 3, "page_no": 7, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.83584594726562, "t": 96.62870788574219, "r": 547.28442, "b": 107.22466278076172, "coord_origin": "TOPLEFT"}, "confidence": 0.9551490545272827, "cells": [{"id": 4, "text": "The following CL commands can be used to work with, display, or change function usage IDs:", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 547.28442, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}]}, "text": "The following CL commands can be used to work with, display, or change function usage IDs:"}, {"label": "list_item", "id": 4, "page_no": 7, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.6907196044922, "t": 113.74026489257812, "r": 301.51749, "b": 124.55382537841797, "coord_origin": "TOPLEFT"}, "confidence": 0.9410473704338074, "cells": [{"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 114.67767000000003, "r": 141.78, "b": 123.45245, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Work Function Usage (", "bbox": {"l": 151.20016, "t": 114.52826000000005, "r": 253.26227000000003, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "WRKFCNUSG", "bbox": {"l": 253.26028, "t": 114.67767000000003, "r": 298.1998, "b": 123.50225999999998, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": ")", "bbox": {"l": 298.20081, "t": 114.52826000000005, "r": 301.51749, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Work Function Usage ( WRKFCNUSG )"}, {"label": "list_item", "id": 5, "page_no": 7, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.7242889404297, "t": 125.93077850341797, "r": 313.39777, "b": 136.68792724609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9417493939399719, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 126.67749000000003, "r": 141.78099, "b": 135.45227, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Change Function Usage (", "bbox": {"l": 151.20116, "t": 126.52808000000005, "r": 265.13354, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "CHGFCNUSG", "bbox": {"l": 265.08081, "t": 126.67749000000003, "r": 310.02032, "b": 135.50207999999998, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": ")", "bbox": {"l": 310.08109, "t": 126.52808000000005, "r": 313.39777, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Change Function Usage ( CHGFCNUSG )"}, {"label": "list_item", "id": 6, "page_no": 7, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.71124267578125, "t": 137.9629364013672, "r": 310.81711, "b": 148.59957885742188, "coord_origin": "TOPLEFT"}, "confidence": 0.9562166929244995, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.80098, "t": 138.67731000000003, "r": 141.78098, "b": 147.45209, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Display Function Usage (", "bbox": {"l": 151.20114, "t": 138.52788999999996, "r": 262.5639, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "DSPFCNUSG", "bbox": {"l": 262.56091, "t": 138.67731000000003, "r": 307.50043, "b": 147.50189, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ")", "bbox": {"l": 307.50043, "t": 138.52788999999996, "r": 310.81711, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Display Function Usage ( DSPFCNUSG )"}, {"label": "text", "id": 7, "page_no": 7, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.30247497558594, "t": 159.218505859375, "r": 512.53802, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9682289958000183, "cells": [{"id": 17, "text": "For example, the following ", "bbox": {"l": 136.79997, "t": 160.48766999999998, "r": 255.09984000000003, "b": 169.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "CHGFCNUSG", "bbox": {"l": 255.00027, "t": 160.63707999999997, "r": 299.99957, "b": 169.46167000000003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": " command shows granting authorization to user ", "bbox": {"l": 300.00055, "t": 160.48766999999998, "r": 512.53802, "b": 169.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "HBEDOYA to administer and manage RCAC rules:", "bbox": {"l": 136.80096, "t": 172.48748999999998, "r": 360.41989, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}}]}, "text": "For example, the following CHGFCNUSG command shows granting authorization to user HBEDOYA to administer and manage RCAC rules:"}, {"label": "text", "id": 8, "page_no": 7, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.3306427001953, "t": 187.99078369140625, "r": 441.59686, "b": 198.88003540039062, "coord_origin": "TOPLEFT"}, "confidence": 0.9056942462921143, "cells": [{"id": 21, "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED)", "bbox": {"l": 136.80096, "t": 189.67645000000005, "r": 441.59686, "b": 198.45123, "coord_origin": "TOPLEFT"}}]}, "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED)"}, {"label": "section_header", "id": 9, "page_no": 7, "cluster": {"id": 9, "label": "section_header", "bbox": {"l": 63.9356689453125, "t": 218.1382598876953, "r": 544.47546, "b": 232.12425231933594, "coord_origin": "TOPLEFT"}, "confidence": 0.9636377096176147, "cells": [{"id": 22, "text": "2.1.7", "bbox": {"l": 64.800003, "t": 219.35468000000003, "r": 93.757614, "b": 231.34271, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Verifying function usage IDs for RCAC with the FUNCTION_USAGE view", "bbox": {"l": 97.377296, "t": 219.35468000000003, "r": 544.47546, "b": 231.34271, "coord_origin": "TOPLEFT"}}]}, "text": "2.1.7 Verifying function usage IDs for RCAC with the FUNCTION_USAGE view"}, {"label": "text", "id": 10, "page_no": 7, "cluster": {"id": 10, "label": "text", "bbox": {"l": 135.84828186035156, "t": 244.5770263671875, "r": 519.51794, "b": 266.7215, "coord_origin": "TOPLEFT"}, "confidence": 0.9737265110015869, "cells": [{"id": 24, "text": "The FUNCTION_USAGE view contains function usage configuration details. Table 2-1 ", "bbox": {"l": 136.8, "t": 245.50867000000005, "r": 519.51794, "b": 254.72168, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "describes the columns in the FUNCTION_USAGE view.", "bbox": {"l": 136.8, "t": 257.50847999999996, "r": 382.94443, "b": 266.7215, "coord_origin": "TOPLEFT"}}]}, "text": "The FUNCTION_USAGE view contains function usage configuration details. Table 2-1 describes the columns in the FUNCTION_USAGE view."}, {"label": "caption", "id": 11, "page_no": 7, "cluster": {"id": 11, "label": "caption", "bbox": {"l": 136.8, "t": 278.509521484375, "r": 284.9328308105469, "b": 287.88300000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.919783353805542, "cells": [{"id": 26, "text": "Table 2-1 FUNCTION_USAGE view", "bbox": {"l": 136.8, "t": 279.55798000000004, "r": 283.96805, "b": 287.88300000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Table 2-1 FUNCTION_USAGE view"}, {"label": "text", "id": 12, "page_no": 7, "cluster": {"id": 12, "label": "text", "bbox": {"l": 135.81077575683594, "t": 451.328857421875, "r": 547.2804, "b": 473.72153, "coord_origin": "TOPLEFT"}, "confidence": 0.9647641777992249, "cells": [{"id": 27, "text": "To discover who has authorization to define and manage RCAC, you can use the query that is ", "bbox": {"l": 136.8, "t": 452.50872999999996, "r": 547.2804, "b": 461.72171, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "shown in Example 2-1.", "bbox": {"l": 136.8, "t": 464.50854, "r": 237.76951999999997, "b": 473.72153, "coord_origin": "TOPLEFT"}}]}, "text": "To discover who has authorization to define and manage RCAC, you can use the query that is shown in Example 2-1."}, {"label": "caption", "id": 13, "page_no": 7, "cluster": {"id": 13, "label": "caption", "bbox": {"l": 136.28225708007812, "t": 485.76434326171875, "r": 462.98095703125, "b": 495.88201904296875, "coord_origin": "TOPLEFT"}, "confidence": 0.8165032267570496, "cells": [{"id": 29, "text": "Example 2-1 Query to determine who has authority to define and manage RCAC", "bbox": {"l": 136.8, "t": 486.55798, "r": 462.35419, "b": 494.883, "coord_origin": "TOPLEFT"}}]}, "text": "Example 2-1 Query to determine who has authority to define and manage RCAC"}, {"label": "text", "id": 14, "page_no": 7, "cluster": {"id": 14, "label": "text", "bbox": {"l": 136.8, "t": 503.65802, "r": 331.67731, "b": 584.43163, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 30, "text": "SELECT", "bbox": {"l": 136.8, "t": 503.65802, "r": 171.26956, "b": 512.4328, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "function_id,", "bbox": {"l": 182.75941, "t": 503.65802, "r": 251.69853, "b": 512.4328, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "user_name,", "bbox": {"l": 166.78244, "t": 515.6578400000001, "r": 241.73852999999997, "b": 524.43262, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "usage,", "bbox": {"l": 170.75961, "t": 527.65765, "r": 221.69901999999996, "b": 536.43242, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "user_type", "bbox": {"l": 167.53809, "t": 539.65747, "r": 236.69878, "b": 548.43222, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "FROM", "bbox": {"l": 136.8, "t": 551.65727, "r": 160.59396, "b": 560.43202, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "function_usage", "bbox": {"l": 178.43944, "t": 551.65727, "r": 261.71829, "b": 560.43202, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "WHERE", "bbox": {"l": 136.8, "t": 563.65707, "r": 162.44176, "b": 572.43182, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "function_id=\u2019QIBM_DB_SECADM\u2019", "bbox": {"l": 177.8268, "t": 563.65707, "r": 331.67731, "b": 572.43182, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ORDER BY", "bbox": {"l": 136.8, "t": 575.65688, "r": 178.77542, "b": 584.43163, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "user_name;", "bbox": {"l": 189.26929, "t": 575.65688, "r": 241.73856, "b": 584.43163, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT function_id, user_name, usage, user_type FROM function_usage WHERE function_id=\u2019QIBM_DB_SECADM\u2019 ORDER BY user_name;"}, {"label": "section_header", "id": 15, "page_no": 7, "cluster": {"id": 15, "label": "section_header", "bbox": {"l": 64.18024444580078, "t": 619.3924560546875, "r": 249.59605000000002, "b": 635.6513671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9656643271446228, "cells": [{"id": 41, "text": "2.2", "bbox": {"l": 64.800003, "t": 620.22063, "r": 87.569839, "b": 634.98363, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Separation of duties", "bbox": {"l": 92.123802, "t": 620.22063, "r": 249.59605000000002, "b": 634.98363, "coord_origin": "TOPLEFT"}}]}, "text": "2.2 Separation of duties"}, {"label": "text", "id": 16, "page_no": 7, "cluster": {"id": 16, "label": "text", "bbox": {"l": 136.1588592529297, "t": 651.8870849609375, "r": 547.22345, "b": 710.182373046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9853105545043945, "cells": [{"id": 43, "text": "Separation of duties helps businesses comply with industry regulations or organizational ", "bbox": {"l": 136.8, "t": 652.54872, "r": 529.09357, "b": 661.76172, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "requirements and simplifies the management of authorities. Separation of duties is commonly ", "bbox": {"l": 136.8, "t": 664.54852, "r": 547.22345, "b": 673.76153, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "used to prevent fraudulent activities or errors by a single person. It provides the ability for ", "bbox": {"l": 136.8, "t": 676.54833, "r": 530.89716, "b": 685.76134, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "administrative functions to be divided across individuals without overlapping responsibilities, ", "bbox": {"l": 136.80002, "t": 688.54814, "r": 544.33832, "b": 697.7611469999999, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "so that one user does not possess unlimited authority, such as with the *ALLOBJ authority.", "bbox": {"l": 136.80002, "t": 700.547951, "r": 536.28363, "b": 709.760956, "coord_origin": "TOPLEFT"}}]}, "text": "Separation of duties helps businesses comply with industry regulations or organizational requirements and simplifies the management of authorities. Separation of duties is commonly used to prevent fraudulent activities or errors by a single person. It provides the ability for administrative functions to be divided across individuals without overlapping responsibilities, so that one user does not possess unlimited authority, such as with the *ALLOBJ authority."}, {"label": "table", "id": 17, "page_no": 7, "cluster": {"id": 17, "label": "table", "bbox": {"l": 135.52508544921875, "t": 289.7249755859375, "r": 545.87060546875, "b": 442.0505065917969, "coord_origin": "TOPLEFT"}, "confidence": 0.985169529914856, "cells": [{"id": 48, "text": "Column name", "bbox": {"l": 142.8, "t": 296.5379899999999, "r": 202.245, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Data type", "bbox": {"l": 216.80878999999996, "t": 296.5379899999999, "r": 257.21069, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Description", "bbox": {"l": 289.47479, "t": 296.5379899999999, "r": 338.89468, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "FUNCTION_ID", "bbox": {"l": 142.8, "t": 315.55771, "r": 203.2323, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "VARCHAR(30)", "bbox": {"l": 216.7854, "t": 315.55771, "r": 276.0036, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ID of the function.", "bbox": {"l": 289.4577, "t": 315.55771, "r": 359.85394, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "USER_NAME", "bbox": {"l": 142.8, "t": 334.51801, "r": 198.6693, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "VARCHAR(10)", "bbox": {"l": 216.74129999999997, "t": 334.51801, "r": 275.92349, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "Name of the user profile that has a usage setting for this ", "bbox": {"l": 289.38208, "t": 334.51801, "r": 515.05359, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "function.", "bbox": {"l": 289.4397, "t": 345.55832, "r": 323.43362, "b": 353.88333, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "USAGE", "bbox": {"l": 142.79999, "t": 364.51862, "r": 173.98318, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "VARCHAR(7)", "bbox": {"l": 216.77367999999998, "t": 364.51862, "r": 270.97977, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Usage setting:", "bbox": {"l": 289.41626, "t": 364.51862, "r": 346.88757, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 375.69394000000005, "r": 293.9397, "b": 383.62292, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "ALLOWED: The user profile is allowed to use the function.", "bbox": {"l": 303.83969, "t": 375.55893, "r": 535.16766, "b": 383.88394, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 386.67395, "r": 293.9397, "b": 394.60294, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "DENIED: The user profile is not allowed to use the function.", "bbox": {"l": 303.83969, "t": 386.53894, "r": 539.10712, "b": 394.86395, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "USER_TYPE", "bbox": {"l": 142.8, "t": 405.55865, "r": 196.2249, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "VARCHAR(5)", "bbox": {"l": 216.75211, "t": 405.55865, "r": 270.99872, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Type of user profile:", "bbox": {"l": 289.43161, "t": 405.55865, "r": 367.8009, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 416.67368000000005, "r": 293.9397, "b": 424.60266, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "USER: The user profile is a user.", "bbox": {"l": 303.83969, "t": 416.53867, "r": 434.78159, "b": 424.86368, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 427.65369, "r": 293.9397, "b": 435.58267000000006, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "GROUP: The user profile is a group.", "bbox": {"l": 303.83969, "t": 427.51868, "r": 448.11963000000003, "b": 435.84369, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "ched", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl"], "num_rows": 5, "num_cols": 3, "table_cells": [{"bbox": {"l": 142.8, "t": 296.5379899999999, "r": 202.245, "b": 304.86301, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Column name", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 216.80878999999996, "t": 296.5379899999999, "r": 257.21069, "b": 304.86301, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Data type", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 289.47479, "t": 296.5379899999999, "r": 338.89468, "b": 304.86301, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Description", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8, "t": 315.55771, "r": 203.2323, "b": 323.88272, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "FUNCTION_ID", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.7854, "t": 315.55771, "r": 276.0036, "b": 323.88272, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(30)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.4577, "t": 315.55771, "r": 359.85394, "b": 323.88272, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "ID of the function.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8, "t": 334.51801, "r": 198.6693, "b": 342.84302, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USER_NAME", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.74129999999997, "t": 334.51801, "r": 275.92349, "b": 342.84302, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(10)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.38208, "t": 334.51801, "r": 515.05359, "b": 353.88333, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Name of the user profile that has a usage setting for this function.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.79999, "t": 364.51862, "r": 173.98318, "b": 372.84363, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USAGE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.77367999999998, "t": 364.51862, "r": 270.97977, "b": 372.84363, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(7)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.41626, "t": 364.51862, "r": 539.10712, "b": 394.86395, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Usage setting: GLYPH ALLOWED: The user profile is allowed to use the function. GLYPH DENIED: The user profile is not allowed to use the function.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8, "t": 405.55865, "r": 196.2249, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USER_TYPE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.75211, "t": 405.55865, "r": 270.99872, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(5)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.43161, "t": 405.55865, "r": 448.11963000000003, "b": 435.84369, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Type of user profile: GLYPH USER: The user profile is a user. GLYPH GROUP: The user profile is a group.", "column_header": false, "row_header": false, "row_section": false}]}], "headers": [{"label": "page_footer", "id": 0, "page_no": 7, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.4488525390625, "t": 754.418701171875, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9166076183319092, "cells": [{"id": 0, "text": "10 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "10"}, {"label": "page_footer", "id": 1, "page_no": 7, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.35774993896484, "t": 754.6892700195312, "r": 334.42142, "b": 763.9585571289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9529878497123718, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 8, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 2. Roles and separation of duties ", "bbox": {"l": 355.32001, "t": 755.538002, "r": 523.54071, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "11", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "For example, assume that a business has assigned the duty to manage security on IBM i to ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 542.69434, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Theresa. Before release IBM i 7.2, to grant privileges, Theresa had to have the same ", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 513.67804, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "privileges Theresa was granting to others. Therefore, to grant *USE privileges to the ", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 509.71902, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "PAYROLL table, Theresa had to have *OBJMGT and *USE authority (or a higher level of ", "bbox": {"l": 136.79959, "t": 107.50847999999996, "r": 528.20184, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "authority, such as *ALLOBJ). This requirement allowed Theresa to access the data in the ", "bbox": {"l": 136.79959, "t": 119.50829999999996, "r": 531.84015, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "PAYROLL table even though Theresa\u2019s job description was only to manage its security.", "bbox": {"l": 136.79959, "t": 131.50811999999996, "r": 519.24982, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "In IBM i 7.2, the QIBM_DB_SECADM function usage grants authorities, revokes authorities, ", "bbox": {"l": 136.79959, "t": 153.52770999999996, "r": 544.16064, "b": 162.74072, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "changes ownership, or changes the primary group without giving access to the object or, in ", "bbox": {"l": 136.79959, "t": 165.52752999999996, "r": 540.66156, "b": 174.74054, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "the case of a database table, to the data that is in the table or allowing other operations on the ", "bbox": {"l": 136.79959, "t": 177.52733999999998, "r": 547.30396, "b": 186.74036, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "table. ", "bbox": {"l": 136.79959, "t": 189.52715999999998, "r": 163.6189, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "QIBM_DB_SECADM function usage can be granted only by a user with *SECADM special ", "bbox": {"l": 136.79959, "t": 211.48694, "r": 538.65076, "b": 220.69994999999994, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "authority and can be given to a user or a group.", "bbox": {"l": 136.79959, "t": 223.48676, "r": 346.34808, "b": 232.69976999999994, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "QIBM_DB_SECADM also is responsible for administering RCAC, which restricts which rows ", "bbox": {"l": 136.79959, "t": 245.50635, "r": 545.79602, "b": 254.71936000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "a user is allowed to access in a table and whether a user is allowed to see information in ", "bbox": {"l": 136.79959, "t": 257.50616, "r": 529.46149, "b": 266.71918000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "certain columns of a table.", "bbox": {"l": 136.79959, "t": 269.50598, "r": 253.47696999999997, "b": 278.71898999999996, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "A preferred practice is that the RCAC administrator has the QIBM_DB_SECADM function ", "bbox": {"l": 136.79959, "t": 291.52557, "r": 533.78137, "b": 300.73856, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "usage ID, but absolutely no other data privileges. The result is that the RCAC administrator ", "bbox": {"l": 136.79959, "t": 303.52539, "r": 539.80713, "b": 312.73837000000003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "can deploy and maintain the RCAC constructs, but cannot grant themselves unauthorized ", "bbox": {"l": 136.79959, "t": 315.52521, "r": 534.5741, "b": 324.73819, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "access to data itself.", "bbox": {"l": 136.79959, "t": 327.52502, "r": 227.02324, "b": 336.73801, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Table 2-2 shows a comparison of the different function usage IDs and *JOBCTL authority to ", "bbox": {"l": 136.79959, "t": 349.48483, "r": 543.06714, "b": 358.69780999999995, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "the different CL commands and DB2 for i tools.", "bbox": {"l": 136.79959, "t": 361.48465, "r": 343.79236, "b": 370.69763000000006, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Table 2-2 Comparison of the different function usage IDs and *JOBCTL authority", "bbox": {"l": 64.800003, "t": 383.5379899999999, "r": 391.75464, "b": 391.86301, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "User action", "bbox": {"l": 70.800301, "t": 400.51827999999995, "r": 119.78551, "b": 408.84329, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "*JOBCTL", "bbox": {"l": 424.93805, "t": 447.52255, "r": 433.26297000000005, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "QIBM_DB_SECADM", "bbox": {"l": 450.13806, "t": 401.6000700000001, "r": 458.46298, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "QIBM_DB_SQLADM", "bbox": {"l": 475.93835000000007, "t": 401.53442, "r": 484.26327999999995, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "QIBM_DB_SYSMON", "bbox": {"l": 501.13837, "t": 401.6145, "r": 509.46329, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "No Authority", "bbox": {"l": 526.39862, "t": 432.79944, "r": 534.72357, "b": 487.02005, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "SET CURRENT DEGREE", "bbox": {"l": 70.800003, "t": 498.69299, "r": 151.6794, "b": 506.66699, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " (SQL statement)", "bbox": {"l": 151.6803, "t": 498.55798, "r": 220.15681000000004, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "X", "bbox": {"l": 429.0, "t": 498.55798, "r": 435.00299000000007, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "X", "bbox": {"l": 480.00031, "t": 498.55798, "r": 486.0033, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "CHGQRYA", "bbox": {"l": 70.800018, "t": 517.65329, "r": 102.23972, "b": 525.62729, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": " command targeting a different user\u2019s job", "bbox": {"l": 102.23972, "t": 517.51828, "r": 264.5538, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "X", "bbox": {"l": 429.00003, "t": 517.51828, "r": 435.00302000000005, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "X", "bbox": {"l": 480.00034, "t": 517.51828, "r": 486.00333, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "STRDBMON", "bbox": {"l": 70.800049, "t": 536.67299, "r": 106.73975, "b": 544.64699, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": " or ", "bbox": {"l": 106.73975, "t": 536.5379800000001, "r": 119.77895, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ENDDBMON", "bbox": {"l": 119.69975000000001, "t": 536.67299, "r": 155.69974, "b": 544.64699, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": " commands targeting a different user\u2019s job", "bbox": {"l": 155.69974, "t": 536.5379800000001, "r": 322.50574, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "X", "bbox": {"l": 429.00003, "t": 536.5379800000001, "r": 435.00302000000005, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "X", "bbox": {"l": 480.00034, "t": 536.5379800000001, "r": 486.00333, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "STRDBMON", "bbox": {"l": 70.800049, "t": 555.69269, "r": 106.73975, "b": 563.66669, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": " or ", "bbox": {"l": 106.73975, "t": 555.55768, "r": 119.77895, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "ENDDBMON", "bbox": {"l": 119.69975000000001, "t": 555.69269, "r": 155.69974, "b": 563.66669, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": " commands targeting a job that matches the current user", "bbox": {"l": 155.69974, "t": 555.55768, "r": 381.02185, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "X", "bbox": {"l": 429.00003, "t": 555.55768, "r": 435.00302000000005, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "X", "bbox": {"l": 480.00034, "t": 555.55768, "r": 486.00333, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "X", "bbox": {"l": 505.26061999999996, "t": 555.55768, "r": 511.26361, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "X", "bbox": {"l": 530.76031, "t": 555.55768, "r": 536.76331, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "QUSRJOBI() API format 900 or System i Navigator\u2019s SQL Details for Job", "bbox": {"l": 70.800049, "t": 574.51797, "r": 359.51736, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "X", "bbox": {"l": 429.0000600000001, "t": 574.51797, "r": 435.00305000000003, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "X", "bbox": {"l": 480.00037, "t": 574.51797, "r": 486.00335999999993, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "X", "bbox": {"l": 505.2606799999999, "t": 574.51797, "r": 511.26367, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "Visual Explain within Run SQL scripts", "bbox": {"l": 70.800079, "t": 593.5376699999999, "r": 220.75178999999997, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "X", "bbox": {"l": 429.0000600000001, "t": 593.5376699999999, "r": 435.00305000000003, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "X", "bbox": {"l": 480.00037, "t": 593.5376699999999, "r": 486.00335999999993, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "X", "bbox": {"l": 505.2606799999999, "t": 593.5376699999999, "r": 511.26367, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "X", "bbox": {"l": 530.76038, "t": 593.5376699999999, "r": 536.76337, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Visual Explain outside of Run SQL scripts", "bbox": {"l": 70.800079, "t": 612.55737, "r": 236.6548, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "X", "bbox": {"l": 429.0000600000001, "t": 612.55737, "r": 435.00305000000003, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "X", "bbox": {"l": 480.00037, "t": 612.55737, "r": 486.00335999999993, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "ANALYZE PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 631.51767, "r": 213.12968, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "X", "bbox": {"l": 429.0000600000001, "t": 631.51767, "r": 435.00305000000003, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "X", "bbox": {"l": 480.00037, "t": 631.51767, "r": 486.00335999999993, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "DUMP PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 650.53737, "r": 199.87808, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "X", "bbox": {"l": 429.0000600000001, "t": 650.53737, "r": 435.00305000000003, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "X", "bbox": {"l": 480.00037, "t": 650.53737, "r": 486.00335999999993, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "MODIFY PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 669.55708, "r": 208.36777, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "X", "bbox": {"l": 429.0000600000001, "t": 669.55708, "r": 435.00305000000003, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "X", "bbox": {"l": 480.00037, "t": 669.55708, "r": 486.00335999999993, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "MODIFY PLAN CACHE PROPERTIES procedure (currently does not check authority)", "bbox": {"l": 70.800079, "t": 688.57677, "r": 411.20264, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "X", "bbox": {"l": 429.0000600000001, "t": 688.57677, "r": 435.00305000000003, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "X", "bbox": {"l": 480.00037, "t": 688.57677, "r": 486.00335999999993, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "CHANGE PLAN CACHE SIZE procedure (currently does not check authority)", "bbox": {"l": 70.800079, "t": 707.537071, "r": 377.12585, "b": 715.862068, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "X", "bbox": {"l": 429.0000600000001, "t": 707.537071, "r": 435.00305000000003, "b": 715.862068, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "X", "bbox": {"l": 480.00037, "t": 707.537071, "r": 486.00335999999993, "b": 715.862068, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 354.4815673828125, "t": 754.9415893554688, "r": 523.54071, "b": 764.1055297851562, "coord_origin": "TOPLEFT"}, "confidence": 0.9508126378059387, "cells": [{"id": 0, "text": "Chapter 2. Roles and separation of duties ", "bbox": {"l": 355.32001, "t": 755.538002, "r": 523.54071, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 536.0808715820312, "t": 754.2325439453125, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8987302780151367, "cells": [{"id": 1, "text": "11", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.92747497558594, "t": 70.65541076660156, "r": 542.69434, "b": 141.03610229492188, "coord_origin": "TOPLEFT"}, "confidence": 0.9789126515388489, "cells": [{"id": 2, "text": "For example, assume that a business has assigned the duty to manage security on IBM i to ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 542.69434, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Theresa. Before release IBM i 7.2, to grant privileges, Theresa had to have the same ", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 513.67804, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "privileges Theresa was granting to others. Therefore, to grant *USE privileges to the ", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 509.71902, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "PAYROLL table, Theresa had to have *OBJMGT and *USE authority (or a higher level of ", "bbox": {"l": 136.79959, "t": 107.50847999999996, "r": 528.20184, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "authority, such as *ALLOBJ). This requirement allowed Theresa to access the data in the ", "bbox": {"l": 136.79959, "t": 119.50829999999996, "r": 531.84015, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "PAYROLL table even though Theresa\u2019s job description was only to manage its security.", "bbox": {"l": 136.79959, "t": 131.50811999999996, "r": 519.24982, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 136.04833984375, "t": 152.51307678222656, "r": 547.30396, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9665539860725403, "cells": [{"id": 8, "text": "In IBM i 7.2, the QIBM_DB_SECADM function usage grants authorities, revokes authorities, ", "bbox": {"l": 136.79959, "t": 153.52770999999996, "r": 544.16064, "b": 162.74072, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "changes ownership, or changes the primary group without giving access to the object or, in ", "bbox": {"l": 136.79959, "t": 165.52752999999996, "r": 540.66156, "b": 174.74054, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "the case of a database table, to the data that is in the table or allowing other operations on the ", "bbox": {"l": 136.79959, "t": 177.52733999999998, "r": 547.30396, "b": 186.74036, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "table. ", "bbox": {"l": 136.79959, "t": 189.52715999999998, "r": 163.6189, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 136.00685119628906, "t": 210.41148376464844, "r": 538.65076, "b": 233.08047485351562, "coord_origin": "TOPLEFT"}, "confidence": 0.9691813588142395, "cells": [{"id": 12, "text": "QIBM_DB_SECADM function usage can be granted only by a user with *SECADM special ", "bbox": {"l": 136.79959, "t": 211.48694, "r": 538.65076, "b": 220.69994999999994, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "authority and can be given to a user or a group.", "bbox": {"l": 136.79959, "t": 223.48676, "r": 346.34808, "b": 232.69976999999994, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.68702697753906, "t": 244.5381622314453, "r": 545.79602, "b": 278.71898999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.9729602932929993, "cells": [{"id": 14, "text": "QIBM_DB_SECADM also is responsible for administering RCAC, which restricts which rows ", "bbox": {"l": 136.79959, "t": 245.50635, "r": 545.79602, "b": 254.71936000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "a user is allowed to access in a table and whether a user is allowed to see information in ", "bbox": {"l": 136.79959, "t": 257.50616, "r": 529.46149, "b": 266.71918000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "certain columns of a table.", "bbox": {"l": 136.79959, "t": 269.50598, "r": 253.47696999999997, "b": 278.71898999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 135.86065673828125, "t": 290.6051330566406, "r": 539.80713, "b": 336.73801, "coord_origin": "TOPLEFT"}, "confidence": 0.9815152883529663, "cells": [{"id": 17, "text": "A preferred practice is that the RCAC administrator has the QIBM_DB_SECADM function ", "bbox": {"l": 136.79959, "t": 291.52557, "r": 533.78137, "b": 300.73856, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "usage ID, but absolutely no other data privileges. The result is that the RCAC administrator ", "bbox": {"l": 136.79959, "t": 303.52539, "r": 539.80713, "b": 312.73837000000003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "can deploy and maintain the RCAC constructs, but cannot grant themselves unauthorized ", "bbox": {"l": 136.79959, "t": 315.52521, "r": 534.5741, "b": 324.73819, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "access to data itself.", "bbox": {"l": 136.79959, "t": 327.52502, "r": 227.02324, "b": 336.73801, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 135.7205352783203, "t": 348.60931396484375, "r": 543.06714, "b": 370.69763000000006, "coord_origin": "TOPLEFT"}, "confidence": 0.9672255516052246, "cells": [{"id": 21, "text": "Table 2-2 shows a comparison of the different function usage IDs and *JOBCTL authority to ", "bbox": {"l": 136.79959, "t": 349.48483, "r": 543.06714, "b": 358.69780999999995, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "the different CL commands and DB2 for i tools.", "bbox": {"l": 136.79959, "t": 361.48465, "r": 343.79236, "b": 370.69763000000006, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "caption", "bbox": {"l": 64.800003, "t": 382.5287170410156, "r": 392.4624328613281, "b": 392.25494384765625, "coord_origin": "TOPLEFT"}, "confidence": 0.933719277381897, "cells": [{"id": 23, "text": "Table 2-2 Comparison of the different function usage IDs and *JOBCTL authority", "bbox": {"l": 64.800003, "t": 383.5379899999999, "r": 391.75464, "b": 391.86301, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "table", "bbox": {"l": 64.41139221191406, "t": 393.6136474609375, "r": 547.3950805664062, "b": 721.60791015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9899571537971497, "cells": [{"id": 24, "text": "User action", "bbox": {"l": 70.800301, "t": 400.51827999999995, "r": 119.78551, "b": 408.84329, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "*JOBCTL", "bbox": {"l": 424.93805, "t": 447.52255, "r": 433.26297000000005, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "QIBM_DB_SECADM", "bbox": {"l": 450.13806, "t": 401.6000700000001, "r": 458.46298, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "QIBM_DB_SQLADM", "bbox": {"l": 475.93835000000007, "t": 401.53442, "r": 484.26327999999995, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "QIBM_DB_SYSMON", "bbox": {"l": 501.13837, "t": 401.6145, "r": 509.46329, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "No Authority", "bbox": {"l": 526.39862, "t": 432.79944, "r": 534.72357, "b": 487.02005, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "SET CURRENT DEGREE", "bbox": {"l": 70.800003, "t": 498.69299, "r": 151.6794, "b": 506.66699, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " (SQL statement)", "bbox": {"l": 151.6803, "t": 498.55798, "r": 220.15681000000004, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "X", "bbox": {"l": 429.0, "t": 498.55798, "r": 435.00299000000007, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "X", "bbox": {"l": 480.00031, "t": 498.55798, "r": 486.0033, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "CHGQRYA", "bbox": {"l": 70.800018, "t": 517.65329, "r": 102.23972, "b": 525.62729, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": " command targeting a different user\u2019s job", "bbox": {"l": 102.23972, "t": 517.51828, "r": 264.5538, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "X", "bbox": {"l": 429.00003, "t": 517.51828, "r": 435.00302000000005, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "X", "bbox": {"l": 480.00034, "t": 517.51828, "r": 486.00333, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "STRDBMON", "bbox": {"l": 70.800049, "t": 536.67299, "r": 106.73975, "b": 544.64699, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": " or ", "bbox": {"l": 106.73975, "t": 536.5379800000001, "r": 119.77895, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ENDDBMON", "bbox": {"l": 119.69975000000001, "t": 536.67299, "r": 155.69974, "b": 544.64699, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": " commands targeting a different user\u2019s job", "bbox": {"l": 155.69974, "t": 536.5379800000001, "r": 322.50574, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "X", "bbox": {"l": 429.00003, "t": 536.5379800000001, "r": 435.00302000000005, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "X", "bbox": {"l": 480.00034, "t": 536.5379800000001, "r": 486.00333, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "STRDBMON", "bbox": {"l": 70.800049, "t": 555.69269, "r": 106.73975, "b": 563.66669, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": " or ", "bbox": {"l": 106.73975, "t": 555.55768, "r": 119.77895, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "ENDDBMON", "bbox": {"l": 119.69975000000001, "t": 555.69269, "r": 155.69974, "b": 563.66669, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": " commands targeting a job that matches the current user", "bbox": {"l": 155.69974, "t": 555.55768, "r": 381.02185, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "X", "bbox": {"l": 429.00003, "t": 555.55768, "r": 435.00302000000005, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "X", "bbox": {"l": 480.00034, "t": 555.55768, "r": 486.00333, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "X", "bbox": {"l": 505.26061999999996, "t": 555.55768, "r": 511.26361, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "X", "bbox": {"l": 530.76031, "t": 555.55768, "r": 536.76331, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "QUSRJOBI() API format 900 or System i Navigator\u2019s SQL Details for Job", "bbox": {"l": 70.800049, "t": 574.51797, "r": 359.51736, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "X", "bbox": {"l": 429.0000600000001, "t": 574.51797, "r": 435.00305000000003, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "X", "bbox": {"l": 480.00037, "t": 574.51797, "r": 486.00335999999993, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "X", "bbox": {"l": 505.2606799999999, "t": 574.51797, "r": 511.26367, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "Visual Explain within Run SQL scripts", "bbox": {"l": 70.800079, "t": 593.5376699999999, "r": 220.75178999999997, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "X", "bbox": {"l": 429.0000600000001, "t": 593.5376699999999, "r": 435.00305000000003, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "X", "bbox": {"l": 480.00037, "t": 593.5376699999999, "r": 486.00335999999993, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "X", "bbox": {"l": 505.2606799999999, "t": 593.5376699999999, "r": 511.26367, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "X", "bbox": {"l": 530.76038, "t": 593.5376699999999, "r": 536.76337, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Visual Explain outside of Run SQL scripts", "bbox": {"l": 70.800079, "t": 612.55737, "r": 236.6548, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "X", "bbox": {"l": 429.0000600000001, "t": 612.55737, "r": 435.00305000000003, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "X", "bbox": {"l": 480.00037, "t": 612.55737, "r": 486.00335999999993, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "ANALYZE PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 631.51767, "r": 213.12968, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "X", "bbox": {"l": 429.0000600000001, "t": 631.51767, "r": 435.00305000000003, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "X", "bbox": {"l": 480.00037, "t": 631.51767, "r": 486.00335999999993, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "DUMP PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 650.53737, "r": 199.87808, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "X", "bbox": {"l": 429.0000600000001, "t": 650.53737, "r": 435.00305000000003, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "X", "bbox": {"l": 480.00037, "t": 650.53737, "r": 486.00335999999993, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "MODIFY PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 669.55708, "r": 208.36777, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "X", "bbox": {"l": 429.0000600000001, "t": 669.55708, "r": 435.00305000000003, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "X", "bbox": {"l": 480.00037, "t": 669.55708, "r": 486.00335999999993, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "MODIFY PLAN CACHE PROPERTIES procedure (currently does not check authority)", "bbox": {"l": 70.800079, "t": 688.57677, "r": 411.20264, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "X", "bbox": {"l": 429.0000600000001, "t": 688.57677, "r": 435.00305000000003, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "X", "bbox": {"l": 480.00037, "t": 688.57677, "r": 486.00335999999993, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "CHANGE PLAN CACHE SIZE procedure (currently does not check authority)", "bbox": {"l": 70.800079, "t": 707.537071, "r": 377.12585, "b": 715.862068, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "X", "bbox": {"l": 429.0000600000001, "t": 707.537071, "r": 435.00305000000003, "b": 715.862068, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "X", "bbox": {"l": 480.00037, "t": 707.537071, "r": 486.00335999999993, "b": 715.862068, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {"9": {"label": "table", "id": 9, "page_no": 8, "cluster": {"id": 9, "label": "table", "bbox": {"l": 64.41139221191406, "t": 393.6136474609375, "r": 547.3950805664062, "b": 721.60791015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9899571537971497, "cells": [{"id": 24, "text": "User action", "bbox": {"l": 70.800301, "t": 400.51827999999995, "r": 119.78551, "b": 408.84329, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "*JOBCTL", "bbox": {"l": 424.93805, "t": 447.52255, "r": 433.26297000000005, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "QIBM_DB_SECADM", "bbox": {"l": 450.13806, "t": 401.6000700000001, "r": 458.46298, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "QIBM_DB_SQLADM", "bbox": {"l": 475.93835000000007, "t": 401.53442, "r": 484.26327999999995, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "QIBM_DB_SYSMON", "bbox": {"l": 501.13837, "t": 401.6145, "r": 509.46329, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "No Authority", "bbox": {"l": 526.39862, "t": 432.79944, "r": 534.72357, "b": 487.02005, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "SET CURRENT DEGREE", "bbox": {"l": 70.800003, "t": 498.69299, "r": 151.6794, "b": 506.66699, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " (SQL statement)", "bbox": {"l": 151.6803, "t": 498.55798, "r": 220.15681000000004, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "X", "bbox": {"l": 429.0, "t": 498.55798, "r": 435.00299000000007, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "X", "bbox": {"l": 480.00031, "t": 498.55798, "r": 486.0033, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "CHGQRYA", "bbox": {"l": 70.800018, "t": 517.65329, "r": 102.23972, "b": 525.62729, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": " command targeting a different user\u2019s job", "bbox": {"l": 102.23972, "t": 517.51828, "r": 264.5538, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "X", "bbox": {"l": 429.00003, "t": 517.51828, "r": 435.00302000000005, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "X", "bbox": {"l": 480.00034, "t": 517.51828, "r": 486.00333, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "STRDBMON", "bbox": {"l": 70.800049, "t": 536.67299, "r": 106.73975, "b": 544.64699, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": " or ", "bbox": {"l": 106.73975, "t": 536.5379800000001, "r": 119.77895, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ENDDBMON", "bbox": {"l": 119.69975000000001, "t": 536.67299, "r": 155.69974, "b": 544.64699, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": " commands targeting a different user\u2019s job", "bbox": {"l": 155.69974, "t": 536.5379800000001, "r": 322.50574, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "X", "bbox": {"l": 429.00003, "t": 536.5379800000001, "r": 435.00302000000005, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "X", "bbox": {"l": 480.00034, "t": 536.5379800000001, "r": 486.00333, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "STRDBMON", "bbox": {"l": 70.800049, "t": 555.69269, "r": 106.73975, "b": 563.66669, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": " or ", "bbox": {"l": 106.73975, "t": 555.55768, "r": 119.77895, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "ENDDBMON", "bbox": {"l": 119.69975000000001, "t": 555.69269, "r": 155.69974, "b": 563.66669, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": " commands targeting a job that matches the current user", "bbox": {"l": 155.69974, "t": 555.55768, "r": 381.02185, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "X", "bbox": {"l": 429.00003, "t": 555.55768, "r": 435.00302000000005, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "X", "bbox": {"l": 480.00034, "t": 555.55768, "r": 486.00333, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "X", "bbox": {"l": 505.26061999999996, "t": 555.55768, "r": 511.26361, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "X", "bbox": {"l": 530.76031, "t": 555.55768, "r": 536.76331, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "QUSRJOBI() API format 900 or System i Navigator\u2019s SQL Details for Job", "bbox": {"l": 70.800049, "t": 574.51797, "r": 359.51736, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "X", "bbox": {"l": 429.0000600000001, "t": 574.51797, "r": 435.00305000000003, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "X", "bbox": {"l": 480.00037, "t": 574.51797, "r": 486.00335999999993, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "X", "bbox": {"l": 505.2606799999999, "t": 574.51797, "r": 511.26367, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "Visual Explain within Run SQL scripts", "bbox": {"l": 70.800079, "t": 593.5376699999999, "r": 220.75178999999997, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "X", "bbox": {"l": 429.0000600000001, "t": 593.5376699999999, "r": 435.00305000000003, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "X", "bbox": {"l": 480.00037, "t": 593.5376699999999, "r": 486.00335999999993, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "X", "bbox": {"l": 505.2606799999999, "t": 593.5376699999999, "r": 511.26367, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "X", "bbox": {"l": 530.76038, "t": 593.5376699999999, "r": 536.76337, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Visual Explain outside of Run SQL scripts", "bbox": {"l": 70.800079, "t": 612.55737, "r": 236.6548, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "X", "bbox": {"l": 429.0000600000001, "t": 612.55737, "r": 435.00305000000003, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "X", "bbox": {"l": 480.00037, "t": 612.55737, "r": 486.00335999999993, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "ANALYZE PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 631.51767, "r": 213.12968, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "X", "bbox": {"l": 429.0000600000001, "t": 631.51767, "r": 435.00305000000003, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "X", "bbox": {"l": 480.00037, "t": 631.51767, "r": 486.00335999999993, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "DUMP PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 650.53737, "r": 199.87808, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "X", "bbox": {"l": 429.0000600000001, "t": 650.53737, "r": 435.00305000000003, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "X", "bbox": {"l": 480.00037, "t": 650.53737, "r": 486.00335999999993, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "MODIFY PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 669.55708, "r": 208.36777, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "X", "bbox": {"l": 429.0000600000001, "t": 669.55708, "r": 435.00305000000003, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "X", "bbox": {"l": 480.00037, "t": 669.55708, "r": 486.00335999999993, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "MODIFY PLAN CACHE PROPERTIES procedure (currently does not check authority)", "bbox": {"l": 70.800079, "t": 688.57677, "r": 411.20264, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "X", "bbox": {"l": 429.0000600000001, "t": 688.57677, "r": 435.00305000000003, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "X", "bbox": {"l": 480.00037, "t": 688.57677, "r": 486.00335999999993, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "CHANGE PLAN CACHE SIZE procedure (currently does not check authority)", "bbox": {"l": 70.800079, "t": 707.537071, "r": 377.12585, "b": 715.862068, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "X", "bbox": {"l": 429.0000600000001, "t": 707.537071, "r": 435.00305000000003, "b": 715.862068, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "X", "bbox": {"l": 480.00037, "t": 707.537071, "r": 486.00335999999993, "b": 715.862068, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["rhed", "fcel", "fcel", "fcel", "fcel", "fcel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "fcel", "fcel", "nl", "rhed", "fcel", "ecel", "fcel", "fcel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "fcel", "fcel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl"], "num_rows": 13, "num_cols": 6, "table_cells": [{"bbox": {"l": 70.800301, "t": 400.51827999999995, "r": 119.78551, "b": 408.84329, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "User action", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 424.93805, "t": 447.52255, "r": 433.26297000000005, "b": 487.01999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "*JOBCTL", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 450.13806, "t": 401.6000700000001, "r": 458.46298, "b": 487.01999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "QIBM_DB_SECADM", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 475.93835000000007, "t": 401.53442, "r": 484.26327999999995, "b": 487.01999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "QIBM_DB_SQLADM", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 501.13837, "t": 401.6145, "r": 509.46329, "b": 487.01999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "QIBM_DB_SYSMON", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 526.39862, "t": 432.79944, "r": 534.72357, "b": 487.02005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "No Authority", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800003, "t": 498.55798, "r": 220.15681000000004, "b": 506.883, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "SET CURRENT DEGREE (SQL statement)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0, "t": 498.55798, "r": 435.00299000000007, "b": 506.883, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00031, "t": 498.55798, "r": 486.0033, "b": 506.883, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 517.51828, "r": 264.5538, "b": 525.84329, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CHGQRYA command targeting a different user\u2019s job", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00003, "t": 517.51828, "r": 435.00302000000005, "b": 525.84329, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00034, "t": 517.51828, "r": 486.00333, "b": 525.84329, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800049, "t": 536.5379800000001, "r": 322.50574, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "STRDBMON or ENDDBMON commands targeting a different user\u2019s job", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00003, "t": 536.5379800000001, "r": 435.00302000000005, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00034, "t": 536.5379800000001, "r": 486.00333, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800049, "t": 555.55768, "r": 381.02185, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "STRDBMON or ENDDBMON commands targeting a job that matches the current user", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00003, "t": 555.55768, "r": 435.00302000000005, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00034, "t": 555.55768, "r": 486.00333, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 505.26061999999996, "t": 555.55768, "r": 511.26361, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.76031, "t": 555.55768, "r": 536.76331, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800049, "t": 574.51797, "r": 359.51736, "b": 582.84299, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "QUSRJOBI() API format 900 or System i Navigator\u2019s SQL Details for Job", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 574.51797, "r": 435.00305000000003, "b": 582.84299, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 574.51797, "r": 486.00335999999993, "b": 582.84299, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 505.2606799999999, "t": 574.51797, "r": 511.26367, "b": 582.84299, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 593.5376699999999, "r": 220.75178999999997, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Visual Explain within Run SQL scripts", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 593.5376699999999, "r": 435.00305000000003, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 593.5376699999999, "r": 486.00335999999993, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 505.2606799999999, "t": 593.5376699999999, "r": 511.26367, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.76038, "t": 593.5376699999999, "r": 536.76337, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 612.55737, "r": 236.6548, "b": 620.88239, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Visual Explain outside of Run SQL scripts", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 612.55737, "r": 435.00305000000003, "b": 620.88239, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 612.55737, "r": 486.00335999999993, "b": 620.88239, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 631.51767, "r": 213.12968, "b": 639.84268, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ANALYZE PLAN CACHE procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 631.51767, "r": 435.00305000000003, "b": 639.84268, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 631.51767, "r": 486.00335999999993, "b": 639.84268, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 650.53737, "r": 199.87808, "b": 658.86238, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "DUMP PLAN CACHE procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 650.53737, "r": 435.00305000000003, "b": 658.86238, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 650.53737, "r": 486.00335999999993, "b": 658.86238, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 669.55708, "r": 208.36777, "b": 677.88207, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "MODIFY PLAN CACHE procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 669.55708, "r": 435.00305000000003, "b": 677.88207, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 669.55708, "r": 486.00335999999993, "b": 677.88207, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 688.57677, "r": 411.20264, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "MODIFY PLAN CACHE PROPERTIES procedure (currently does not check authority)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 688.57677, "r": 435.00305000000003, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 688.57677, "r": 486.00335999999993, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 707.537071, "r": 377.12585, "b": 715.862068, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CHANGE PLAN CACHE SIZE procedure (currently does not check authority)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 707.537071, "r": 435.00305000000003, "b": 715.862068, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 707.537071, "r": 486.00335999999993, "b": 715.862068, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}]}}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 8, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 354.4815673828125, "t": 754.9415893554688, "r": 523.54071, "b": 764.1055297851562, "coord_origin": "TOPLEFT"}, "confidence": 0.9508126378059387, "cells": [{"id": 0, "text": "Chapter 2. Roles and separation of duties ", "bbox": {"l": 355.32001, "t": 755.538002, "r": 523.54071, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 2. Roles and separation of duties"}, {"label": "page_footer", "id": 1, "page_no": 8, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 536.0808715820312, "t": 754.2325439453125, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8987302780151367, "cells": [{"id": 1, "text": "11", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "11"}, {"label": "text", "id": 2, "page_no": 8, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.92747497558594, "t": 70.65541076660156, "r": 542.69434, "b": 141.03610229492188, "coord_origin": "TOPLEFT"}, "confidence": 0.9789126515388489, "cells": [{"id": 2, "text": "For example, assume that a business has assigned the duty to manage security on IBM i to ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 542.69434, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Theresa. Before release IBM i 7.2, to grant privileges, Theresa had to have the same ", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 513.67804, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "privileges Theresa was granting to others. Therefore, to grant *USE privileges to the ", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 509.71902, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "PAYROLL table, Theresa had to have *OBJMGT and *USE authority (or a higher level of ", "bbox": {"l": 136.79959, "t": 107.50847999999996, "r": 528.20184, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "authority, such as *ALLOBJ). This requirement allowed Theresa to access the data in the ", "bbox": {"l": 136.79959, "t": 119.50829999999996, "r": 531.84015, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "PAYROLL table even though Theresa\u2019s job description was only to manage its security.", "bbox": {"l": 136.79959, "t": 131.50811999999996, "r": 519.24982, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "For example, assume that a business has assigned the duty to manage security on IBM i to Theresa. Before release IBM i 7.2, to grant privileges, Theresa had to have the same privileges Theresa was granting to others. Therefore, to grant *USE privileges to the PAYROLL table, Theresa had to have *OBJMGT and *USE authority (or a higher level of authority, such as *ALLOBJ). This requirement allowed Theresa to access the data in the PAYROLL table even though Theresa\u2019s job description was only to manage its security."}, {"label": "text", "id": 3, "page_no": 8, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.04833984375, "t": 152.51307678222656, "r": 547.30396, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9665539860725403, "cells": [{"id": 8, "text": "In IBM i 7.2, the QIBM_DB_SECADM function usage grants authorities, revokes authorities, ", "bbox": {"l": 136.79959, "t": 153.52770999999996, "r": 544.16064, "b": 162.74072, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "changes ownership, or changes the primary group without giving access to the object or, in ", "bbox": {"l": 136.79959, "t": 165.52752999999996, "r": 540.66156, "b": 174.74054, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "the case of a database table, to the data that is in the table or allowing other operations on the ", "bbox": {"l": 136.79959, "t": 177.52733999999998, "r": 547.30396, "b": 186.74036, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "table. ", "bbox": {"l": 136.79959, "t": 189.52715999999998, "r": 163.6189, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}}]}, "text": "In IBM i 7.2, the QIBM_DB_SECADM function usage grants authorities, revokes authorities, changes ownership, or changes the primary group without giving access to the object or, in the case of a database table, to the data that is in the table or allowing other operations on the table."}, {"label": "text", "id": 4, "page_no": 8, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.00685119628906, "t": 210.41148376464844, "r": 538.65076, "b": 233.08047485351562, "coord_origin": "TOPLEFT"}, "confidence": 0.9691813588142395, "cells": [{"id": 12, "text": "QIBM_DB_SECADM function usage can be granted only by a user with *SECADM special ", "bbox": {"l": 136.79959, "t": 211.48694, "r": 538.65076, "b": 220.69994999999994, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "authority and can be given to a user or a group.", "bbox": {"l": 136.79959, "t": 223.48676, "r": 346.34808, "b": 232.69976999999994, "coord_origin": "TOPLEFT"}}]}, "text": "QIBM_DB_SECADM function usage can be granted only by a user with *SECADM special authority and can be given to a user or a group."}, {"label": "text", "id": 5, "page_no": 8, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.68702697753906, "t": 244.5381622314453, "r": 545.79602, "b": 278.71898999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.9729602932929993, "cells": [{"id": 14, "text": "QIBM_DB_SECADM also is responsible for administering RCAC, which restricts which rows ", "bbox": {"l": 136.79959, "t": 245.50635, "r": 545.79602, "b": 254.71936000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "a user is allowed to access in a table and whether a user is allowed to see information in ", "bbox": {"l": 136.79959, "t": 257.50616, "r": 529.46149, "b": 266.71918000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "certain columns of a table.", "bbox": {"l": 136.79959, "t": 269.50598, "r": 253.47696999999997, "b": 278.71898999999996, "coord_origin": "TOPLEFT"}}]}, "text": "QIBM_DB_SECADM also is responsible for administering RCAC, which restricts which rows a user is allowed to access in a table and whether a user is allowed to see information in certain columns of a table."}, {"label": "text", "id": 6, "page_no": 8, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.86065673828125, "t": 290.6051330566406, "r": 539.80713, "b": 336.73801, "coord_origin": "TOPLEFT"}, "confidence": 0.9815152883529663, "cells": [{"id": 17, "text": "A preferred practice is that the RCAC administrator has the QIBM_DB_SECADM function ", "bbox": {"l": 136.79959, "t": 291.52557, "r": 533.78137, "b": 300.73856, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "usage ID, but absolutely no other data privileges. The result is that the RCAC administrator ", "bbox": {"l": 136.79959, "t": 303.52539, "r": 539.80713, "b": 312.73837000000003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "can deploy and maintain the RCAC constructs, but cannot grant themselves unauthorized ", "bbox": {"l": 136.79959, "t": 315.52521, "r": 534.5741, "b": 324.73819, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "access to data itself.", "bbox": {"l": 136.79959, "t": 327.52502, "r": 227.02324, "b": 336.73801, "coord_origin": "TOPLEFT"}}]}, "text": "A preferred practice is that the RCAC administrator has the QIBM_DB_SECADM function usage ID, but absolutely no other data privileges. The result is that the RCAC administrator can deploy and maintain the RCAC constructs, but cannot grant themselves unauthorized access to data itself."}, {"label": "text", "id": 7, "page_no": 8, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.7205352783203, "t": 348.60931396484375, "r": 543.06714, "b": 370.69763000000006, "coord_origin": "TOPLEFT"}, "confidence": 0.9672255516052246, "cells": [{"id": 21, "text": "Table 2-2 shows a comparison of the different function usage IDs and *JOBCTL authority to ", "bbox": {"l": 136.79959, "t": 349.48483, "r": 543.06714, "b": 358.69780999999995, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "the different CL commands and DB2 for i tools.", "bbox": {"l": 136.79959, "t": 361.48465, "r": 343.79236, "b": 370.69763000000006, "coord_origin": "TOPLEFT"}}]}, "text": "Table 2-2 shows a comparison of the different function usage IDs and *JOBCTL authority to the different CL commands and DB2 for i tools."}, {"label": "caption", "id": 8, "page_no": 8, "cluster": {"id": 8, "label": "caption", "bbox": {"l": 64.800003, "t": 382.5287170410156, "r": 392.4624328613281, "b": 392.25494384765625, "coord_origin": "TOPLEFT"}, "confidence": 0.933719277381897, "cells": [{"id": 23, "text": "Table 2-2 Comparison of the different function usage IDs and *JOBCTL authority", "bbox": {"l": 64.800003, "t": 383.5379899999999, "r": 391.75464, "b": 391.86301, "coord_origin": "TOPLEFT"}}]}, "text": "Table 2-2 Comparison of the different function usage IDs and *JOBCTL authority"}, {"label": "table", "id": 9, "page_no": 8, "cluster": {"id": 9, "label": "table", "bbox": {"l": 64.41139221191406, "t": 393.6136474609375, "r": 547.3950805664062, "b": 721.60791015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9899571537971497, "cells": [{"id": 24, "text": "User action", "bbox": {"l": 70.800301, "t": 400.51827999999995, "r": 119.78551, "b": 408.84329, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "*JOBCTL", "bbox": {"l": 424.93805, "t": 447.52255, "r": 433.26297000000005, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "QIBM_DB_SECADM", "bbox": {"l": 450.13806, "t": 401.6000700000001, "r": 458.46298, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "QIBM_DB_SQLADM", "bbox": {"l": 475.93835000000007, "t": 401.53442, "r": 484.26327999999995, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "QIBM_DB_SYSMON", "bbox": {"l": 501.13837, "t": 401.6145, "r": 509.46329, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "No Authority", "bbox": {"l": 526.39862, "t": 432.79944, "r": 534.72357, "b": 487.02005, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "SET CURRENT DEGREE", "bbox": {"l": 70.800003, "t": 498.69299, "r": 151.6794, "b": 506.66699, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " (SQL statement)", "bbox": {"l": 151.6803, "t": 498.55798, "r": 220.15681000000004, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "X", "bbox": {"l": 429.0, "t": 498.55798, "r": 435.00299000000007, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "X", "bbox": {"l": 480.00031, "t": 498.55798, "r": 486.0033, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "CHGQRYA", "bbox": {"l": 70.800018, "t": 517.65329, "r": 102.23972, "b": 525.62729, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": " command targeting a different user\u2019s job", "bbox": {"l": 102.23972, "t": 517.51828, "r": 264.5538, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "X", "bbox": {"l": 429.00003, "t": 517.51828, "r": 435.00302000000005, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "X", "bbox": {"l": 480.00034, "t": 517.51828, "r": 486.00333, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "STRDBMON", "bbox": {"l": 70.800049, "t": 536.67299, "r": 106.73975, "b": 544.64699, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": " or ", "bbox": {"l": 106.73975, "t": 536.5379800000001, "r": 119.77895, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ENDDBMON", "bbox": {"l": 119.69975000000001, "t": 536.67299, "r": 155.69974, "b": 544.64699, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": " commands targeting a different user\u2019s job", "bbox": {"l": 155.69974, "t": 536.5379800000001, "r": 322.50574, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "X", "bbox": {"l": 429.00003, "t": 536.5379800000001, "r": 435.00302000000005, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "X", "bbox": {"l": 480.00034, "t": 536.5379800000001, "r": 486.00333, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "STRDBMON", "bbox": {"l": 70.800049, "t": 555.69269, "r": 106.73975, "b": 563.66669, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": " or ", "bbox": {"l": 106.73975, "t": 555.55768, "r": 119.77895, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "ENDDBMON", "bbox": {"l": 119.69975000000001, "t": 555.69269, "r": 155.69974, "b": 563.66669, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": " commands targeting a job that matches the current user", "bbox": {"l": 155.69974, "t": 555.55768, "r": 381.02185, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "X", "bbox": {"l": 429.00003, "t": 555.55768, "r": 435.00302000000005, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "X", "bbox": {"l": 480.00034, "t": 555.55768, "r": 486.00333, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "X", "bbox": {"l": 505.26061999999996, "t": 555.55768, "r": 511.26361, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "X", "bbox": {"l": 530.76031, "t": 555.55768, "r": 536.76331, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "QUSRJOBI() API format 900 or System i Navigator\u2019s SQL Details for Job", "bbox": {"l": 70.800049, "t": 574.51797, "r": 359.51736, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "X", "bbox": {"l": 429.0000600000001, "t": 574.51797, "r": 435.00305000000003, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "X", "bbox": {"l": 480.00037, "t": 574.51797, "r": 486.00335999999993, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "X", "bbox": {"l": 505.2606799999999, "t": 574.51797, "r": 511.26367, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "Visual Explain within Run SQL scripts", "bbox": {"l": 70.800079, "t": 593.5376699999999, "r": 220.75178999999997, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "X", "bbox": {"l": 429.0000600000001, "t": 593.5376699999999, "r": 435.00305000000003, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "X", "bbox": {"l": 480.00037, "t": 593.5376699999999, "r": 486.00335999999993, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "X", "bbox": {"l": 505.2606799999999, "t": 593.5376699999999, "r": 511.26367, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "X", "bbox": {"l": 530.76038, "t": 593.5376699999999, "r": 536.76337, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Visual Explain outside of Run SQL scripts", "bbox": {"l": 70.800079, "t": 612.55737, "r": 236.6548, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "X", "bbox": {"l": 429.0000600000001, "t": 612.55737, "r": 435.00305000000003, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "X", "bbox": {"l": 480.00037, "t": 612.55737, "r": 486.00335999999993, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "ANALYZE PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 631.51767, "r": 213.12968, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "X", "bbox": {"l": 429.0000600000001, "t": 631.51767, "r": 435.00305000000003, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "X", "bbox": {"l": 480.00037, "t": 631.51767, "r": 486.00335999999993, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "DUMP PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 650.53737, "r": 199.87808, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "X", "bbox": {"l": 429.0000600000001, "t": 650.53737, "r": 435.00305000000003, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "X", "bbox": {"l": 480.00037, "t": 650.53737, "r": 486.00335999999993, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "MODIFY PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 669.55708, "r": 208.36777, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "X", "bbox": {"l": 429.0000600000001, "t": 669.55708, "r": 435.00305000000003, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "X", "bbox": {"l": 480.00037, "t": 669.55708, "r": 486.00335999999993, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "MODIFY PLAN CACHE PROPERTIES procedure (currently does not check authority)", "bbox": {"l": 70.800079, "t": 688.57677, "r": 411.20264, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "X", "bbox": {"l": 429.0000600000001, "t": 688.57677, "r": 435.00305000000003, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "X", "bbox": {"l": 480.00037, "t": 688.57677, "r": 486.00335999999993, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "CHANGE PLAN CACHE SIZE procedure (currently does not check authority)", "bbox": {"l": 70.800079, "t": 707.537071, "r": 377.12585, "b": 715.862068, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "X", "bbox": {"l": 429.0000600000001, "t": 707.537071, "r": 435.00305000000003, "b": 715.862068, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "X", "bbox": {"l": 480.00037, "t": 707.537071, "r": 486.00335999999993, "b": 715.862068, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["rhed", "fcel", "fcel", "fcel", "fcel", "fcel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "fcel", "fcel", "nl", "rhed", "fcel", "ecel", "fcel", "fcel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "fcel", "fcel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl"], "num_rows": 13, "num_cols": 6, "table_cells": [{"bbox": {"l": 70.800301, "t": 400.51827999999995, "r": 119.78551, "b": 408.84329, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "User action", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 424.93805, "t": 447.52255, "r": 433.26297000000005, "b": 487.01999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "*JOBCTL", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 450.13806, "t": 401.6000700000001, "r": 458.46298, "b": 487.01999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "QIBM_DB_SECADM", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 475.93835000000007, "t": 401.53442, "r": 484.26327999999995, "b": 487.01999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "QIBM_DB_SQLADM", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 501.13837, "t": 401.6145, "r": 509.46329, "b": 487.01999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "QIBM_DB_SYSMON", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 526.39862, "t": 432.79944, "r": 534.72357, "b": 487.02005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "No Authority", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800003, "t": 498.55798, "r": 220.15681000000004, "b": 506.883, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "SET CURRENT DEGREE (SQL statement)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0, "t": 498.55798, "r": 435.00299000000007, "b": 506.883, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00031, "t": 498.55798, "r": 486.0033, "b": 506.883, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 517.51828, "r": 264.5538, "b": 525.84329, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CHGQRYA command targeting a different user\u2019s job", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00003, "t": 517.51828, "r": 435.00302000000005, "b": 525.84329, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00034, "t": 517.51828, "r": 486.00333, "b": 525.84329, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800049, "t": 536.5379800000001, "r": 322.50574, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "STRDBMON or ENDDBMON commands targeting a different user\u2019s job", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00003, "t": 536.5379800000001, "r": 435.00302000000005, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00034, "t": 536.5379800000001, "r": 486.00333, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800049, "t": 555.55768, "r": 381.02185, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "STRDBMON or ENDDBMON commands targeting a job that matches the current user", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00003, "t": 555.55768, "r": 435.00302000000005, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00034, "t": 555.55768, "r": 486.00333, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 505.26061999999996, "t": 555.55768, "r": 511.26361, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.76031, "t": 555.55768, "r": 536.76331, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800049, "t": 574.51797, "r": 359.51736, "b": 582.84299, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "QUSRJOBI() API format 900 or System i Navigator\u2019s SQL Details for Job", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 574.51797, "r": 435.00305000000003, "b": 582.84299, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 574.51797, "r": 486.00335999999993, "b": 582.84299, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 505.2606799999999, "t": 574.51797, "r": 511.26367, "b": 582.84299, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 593.5376699999999, "r": 220.75178999999997, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Visual Explain within Run SQL scripts", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 593.5376699999999, "r": 435.00305000000003, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 593.5376699999999, "r": 486.00335999999993, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 505.2606799999999, "t": 593.5376699999999, "r": 511.26367, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.76038, "t": 593.5376699999999, "r": 536.76337, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 612.55737, "r": 236.6548, "b": 620.88239, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Visual Explain outside of Run SQL scripts", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 612.55737, "r": 435.00305000000003, "b": 620.88239, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 612.55737, "r": 486.00335999999993, "b": 620.88239, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 631.51767, "r": 213.12968, "b": 639.84268, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ANALYZE PLAN CACHE procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 631.51767, "r": 435.00305000000003, "b": 639.84268, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 631.51767, "r": 486.00335999999993, "b": 639.84268, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 650.53737, "r": 199.87808, "b": 658.86238, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "DUMP PLAN CACHE procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 650.53737, "r": 435.00305000000003, "b": 658.86238, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 650.53737, "r": 486.00335999999993, "b": 658.86238, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 669.55708, "r": 208.36777, "b": 677.88207, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "MODIFY PLAN CACHE procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 669.55708, "r": 435.00305000000003, "b": 677.88207, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 669.55708, "r": 486.00335999999993, "b": 677.88207, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 688.57677, "r": 411.20264, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "MODIFY PLAN CACHE PROPERTIES procedure (currently does not check authority)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 688.57677, "r": 435.00305000000003, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 688.57677, "r": 486.00335999999993, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 707.537071, "r": 377.12585, "b": 715.862068, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CHANGE PLAN CACHE SIZE procedure (currently does not check authority)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 707.537071, "r": 435.00305000000003, "b": 715.862068, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 707.537071, "r": 486.00335999999993, "b": 715.862068, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}]}], "body": [{"label": "text", "id": 2, "page_no": 8, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.92747497558594, "t": 70.65541076660156, "r": 542.69434, "b": 141.03610229492188, "coord_origin": "TOPLEFT"}, "confidence": 0.9789126515388489, "cells": [{"id": 2, "text": "For example, assume that a business has assigned the duty to manage security on IBM i to ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 542.69434, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Theresa. Before release IBM i 7.2, to grant privileges, Theresa had to have the same ", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 513.67804, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "privileges Theresa was granting to others. Therefore, to grant *USE privileges to the ", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 509.71902, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "PAYROLL table, Theresa had to have *OBJMGT and *USE authority (or a higher level of ", "bbox": {"l": 136.79959, "t": 107.50847999999996, "r": 528.20184, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "authority, such as *ALLOBJ). This requirement allowed Theresa to access the data in the ", "bbox": {"l": 136.79959, "t": 119.50829999999996, "r": 531.84015, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "PAYROLL table even though Theresa\u2019s job description was only to manage its security.", "bbox": {"l": 136.79959, "t": 131.50811999999996, "r": 519.24982, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "For example, assume that a business has assigned the duty to manage security on IBM i to Theresa. Before release IBM i 7.2, to grant privileges, Theresa had to have the same privileges Theresa was granting to others. Therefore, to grant *USE privileges to the PAYROLL table, Theresa had to have *OBJMGT and *USE authority (or a higher level of authority, such as *ALLOBJ). This requirement allowed Theresa to access the data in the PAYROLL table even though Theresa\u2019s job description was only to manage its security."}, {"label": "text", "id": 3, "page_no": 8, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.04833984375, "t": 152.51307678222656, "r": 547.30396, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9665539860725403, "cells": [{"id": 8, "text": "In IBM i 7.2, the QIBM_DB_SECADM function usage grants authorities, revokes authorities, ", "bbox": {"l": 136.79959, "t": 153.52770999999996, "r": 544.16064, "b": 162.74072, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "changes ownership, or changes the primary group without giving access to the object or, in ", "bbox": {"l": 136.79959, "t": 165.52752999999996, "r": 540.66156, "b": 174.74054, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "the case of a database table, to the data that is in the table or allowing other operations on the ", "bbox": {"l": 136.79959, "t": 177.52733999999998, "r": 547.30396, "b": 186.74036, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "table. ", "bbox": {"l": 136.79959, "t": 189.52715999999998, "r": 163.6189, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}}]}, "text": "In IBM i 7.2, the QIBM_DB_SECADM function usage grants authorities, revokes authorities, changes ownership, or changes the primary group without giving access to the object or, in the case of a database table, to the data that is in the table or allowing other operations on the table."}, {"label": "text", "id": 4, "page_no": 8, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.00685119628906, "t": 210.41148376464844, "r": 538.65076, "b": 233.08047485351562, "coord_origin": "TOPLEFT"}, "confidence": 0.9691813588142395, "cells": [{"id": 12, "text": "QIBM_DB_SECADM function usage can be granted only by a user with *SECADM special ", "bbox": {"l": 136.79959, "t": 211.48694, "r": 538.65076, "b": 220.69994999999994, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "authority and can be given to a user or a group.", "bbox": {"l": 136.79959, "t": 223.48676, "r": 346.34808, "b": 232.69976999999994, "coord_origin": "TOPLEFT"}}]}, "text": "QIBM_DB_SECADM function usage can be granted only by a user with *SECADM special authority and can be given to a user or a group."}, {"label": "text", "id": 5, "page_no": 8, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.68702697753906, "t": 244.5381622314453, "r": 545.79602, "b": 278.71898999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.9729602932929993, "cells": [{"id": 14, "text": "QIBM_DB_SECADM also is responsible for administering RCAC, which restricts which rows ", "bbox": {"l": 136.79959, "t": 245.50635, "r": 545.79602, "b": 254.71936000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "a user is allowed to access in a table and whether a user is allowed to see information in ", "bbox": {"l": 136.79959, "t": 257.50616, "r": 529.46149, "b": 266.71918000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "certain columns of a table.", "bbox": {"l": 136.79959, "t": 269.50598, "r": 253.47696999999997, "b": 278.71898999999996, "coord_origin": "TOPLEFT"}}]}, "text": "QIBM_DB_SECADM also is responsible for administering RCAC, which restricts which rows a user is allowed to access in a table and whether a user is allowed to see information in certain columns of a table."}, {"label": "text", "id": 6, "page_no": 8, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.86065673828125, "t": 290.6051330566406, "r": 539.80713, "b": 336.73801, "coord_origin": "TOPLEFT"}, "confidence": 0.9815152883529663, "cells": [{"id": 17, "text": "A preferred practice is that the RCAC administrator has the QIBM_DB_SECADM function ", "bbox": {"l": 136.79959, "t": 291.52557, "r": 533.78137, "b": 300.73856, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "usage ID, but absolutely no other data privileges. The result is that the RCAC administrator ", "bbox": {"l": 136.79959, "t": 303.52539, "r": 539.80713, "b": 312.73837000000003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "can deploy and maintain the RCAC constructs, but cannot grant themselves unauthorized ", "bbox": {"l": 136.79959, "t": 315.52521, "r": 534.5741, "b": 324.73819, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "access to data itself.", "bbox": {"l": 136.79959, "t": 327.52502, "r": 227.02324, "b": 336.73801, "coord_origin": "TOPLEFT"}}]}, "text": "A preferred practice is that the RCAC administrator has the QIBM_DB_SECADM function usage ID, but absolutely no other data privileges. The result is that the RCAC administrator can deploy and maintain the RCAC constructs, but cannot grant themselves unauthorized access to data itself."}, {"label": "text", "id": 7, "page_no": 8, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.7205352783203, "t": 348.60931396484375, "r": 543.06714, "b": 370.69763000000006, "coord_origin": "TOPLEFT"}, "confidence": 0.9672255516052246, "cells": [{"id": 21, "text": "Table 2-2 shows a comparison of the different function usage IDs and *JOBCTL authority to ", "bbox": {"l": 136.79959, "t": 349.48483, "r": 543.06714, "b": 358.69780999999995, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "the different CL commands and DB2 for i tools.", "bbox": {"l": 136.79959, "t": 361.48465, "r": 343.79236, "b": 370.69763000000006, "coord_origin": "TOPLEFT"}}]}, "text": "Table 2-2 shows a comparison of the different function usage IDs and *JOBCTL authority to the different CL commands and DB2 for i tools."}, {"label": "caption", "id": 8, "page_no": 8, "cluster": {"id": 8, "label": "caption", "bbox": {"l": 64.800003, "t": 382.5287170410156, "r": 392.4624328613281, "b": 392.25494384765625, "coord_origin": "TOPLEFT"}, "confidence": 0.933719277381897, "cells": [{"id": 23, "text": "Table 2-2 Comparison of the different function usage IDs and *JOBCTL authority", "bbox": {"l": 64.800003, "t": 383.5379899999999, "r": 391.75464, "b": 391.86301, "coord_origin": "TOPLEFT"}}]}, "text": "Table 2-2 Comparison of the different function usage IDs and *JOBCTL authority"}, {"label": "table", "id": 9, "page_no": 8, "cluster": {"id": 9, "label": "table", "bbox": {"l": 64.41139221191406, "t": 393.6136474609375, "r": 547.3950805664062, "b": 721.60791015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9899571537971497, "cells": [{"id": 24, "text": "User action", "bbox": {"l": 70.800301, "t": 400.51827999999995, "r": 119.78551, "b": 408.84329, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "*JOBCTL", "bbox": {"l": 424.93805, "t": 447.52255, "r": 433.26297000000005, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "QIBM_DB_SECADM", "bbox": {"l": 450.13806, "t": 401.6000700000001, "r": 458.46298, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "QIBM_DB_SQLADM", "bbox": {"l": 475.93835000000007, "t": 401.53442, "r": 484.26327999999995, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "QIBM_DB_SYSMON", "bbox": {"l": 501.13837, "t": 401.6145, "r": 509.46329, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "No Authority", "bbox": {"l": 526.39862, "t": 432.79944, "r": 534.72357, "b": 487.02005, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "SET CURRENT DEGREE", "bbox": {"l": 70.800003, "t": 498.69299, "r": 151.6794, "b": 506.66699, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " (SQL statement)", "bbox": {"l": 151.6803, "t": 498.55798, "r": 220.15681000000004, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "X", "bbox": {"l": 429.0, "t": 498.55798, "r": 435.00299000000007, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "X", "bbox": {"l": 480.00031, "t": 498.55798, "r": 486.0033, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "CHGQRYA", "bbox": {"l": 70.800018, "t": 517.65329, "r": 102.23972, "b": 525.62729, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": " command targeting a different user\u2019s job", "bbox": {"l": 102.23972, "t": 517.51828, "r": 264.5538, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "X", "bbox": {"l": 429.00003, "t": 517.51828, "r": 435.00302000000005, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "X", "bbox": {"l": 480.00034, "t": 517.51828, "r": 486.00333, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "STRDBMON", "bbox": {"l": 70.800049, "t": 536.67299, "r": 106.73975, "b": 544.64699, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": " or ", "bbox": {"l": 106.73975, "t": 536.5379800000001, "r": 119.77895, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ENDDBMON", "bbox": {"l": 119.69975000000001, "t": 536.67299, "r": 155.69974, "b": 544.64699, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": " commands targeting a different user\u2019s job", "bbox": {"l": 155.69974, "t": 536.5379800000001, "r": 322.50574, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "X", "bbox": {"l": 429.00003, "t": 536.5379800000001, "r": 435.00302000000005, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "X", "bbox": {"l": 480.00034, "t": 536.5379800000001, "r": 486.00333, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "STRDBMON", "bbox": {"l": 70.800049, "t": 555.69269, "r": 106.73975, "b": 563.66669, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": " or ", "bbox": {"l": 106.73975, "t": 555.55768, "r": 119.77895, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "ENDDBMON", "bbox": {"l": 119.69975000000001, "t": 555.69269, "r": 155.69974, "b": 563.66669, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": " commands targeting a job that matches the current user", "bbox": {"l": 155.69974, "t": 555.55768, "r": 381.02185, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "X", "bbox": {"l": 429.00003, "t": 555.55768, "r": 435.00302000000005, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "X", "bbox": {"l": 480.00034, "t": 555.55768, "r": 486.00333, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "X", "bbox": {"l": 505.26061999999996, "t": 555.55768, "r": 511.26361, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "X", "bbox": {"l": 530.76031, "t": 555.55768, "r": 536.76331, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "QUSRJOBI() API format 900 or System i Navigator\u2019s SQL Details for Job", "bbox": {"l": 70.800049, "t": 574.51797, "r": 359.51736, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "X", "bbox": {"l": 429.0000600000001, "t": 574.51797, "r": 435.00305000000003, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "X", "bbox": {"l": 480.00037, "t": 574.51797, "r": 486.00335999999993, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "X", "bbox": {"l": 505.2606799999999, "t": 574.51797, "r": 511.26367, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "Visual Explain within Run SQL scripts", "bbox": {"l": 70.800079, "t": 593.5376699999999, "r": 220.75178999999997, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "X", "bbox": {"l": 429.0000600000001, "t": 593.5376699999999, "r": 435.00305000000003, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "X", "bbox": {"l": 480.00037, "t": 593.5376699999999, "r": 486.00335999999993, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "X", "bbox": {"l": 505.2606799999999, "t": 593.5376699999999, "r": 511.26367, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "X", "bbox": {"l": 530.76038, "t": 593.5376699999999, "r": 536.76337, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Visual Explain outside of Run SQL scripts", "bbox": {"l": 70.800079, "t": 612.55737, "r": 236.6548, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "X", "bbox": {"l": 429.0000600000001, "t": 612.55737, "r": 435.00305000000003, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "X", "bbox": {"l": 480.00037, "t": 612.55737, "r": 486.00335999999993, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "ANALYZE PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 631.51767, "r": 213.12968, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "X", "bbox": {"l": 429.0000600000001, "t": 631.51767, "r": 435.00305000000003, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "X", "bbox": {"l": 480.00037, "t": 631.51767, "r": 486.00335999999993, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "DUMP PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 650.53737, "r": 199.87808, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "X", "bbox": {"l": 429.0000600000001, "t": 650.53737, "r": 435.00305000000003, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "X", "bbox": {"l": 480.00037, "t": 650.53737, "r": 486.00335999999993, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "MODIFY PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 669.55708, "r": 208.36777, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "X", "bbox": {"l": 429.0000600000001, "t": 669.55708, "r": 435.00305000000003, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "X", "bbox": {"l": 480.00037, "t": 669.55708, "r": 486.00335999999993, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "MODIFY PLAN CACHE PROPERTIES procedure (currently does not check authority)", "bbox": {"l": 70.800079, "t": 688.57677, "r": 411.20264, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "X", "bbox": {"l": 429.0000600000001, "t": 688.57677, "r": 435.00305000000003, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "X", "bbox": {"l": 480.00037, "t": 688.57677, "r": 486.00335999999993, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "CHANGE PLAN CACHE SIZE procedure (currently does not check authority)", "bbox": {"l": 70.800079, "t": 707.537071, "r": 377.12585, "b": 715.862068, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "X", "bbox": {"l": 429.0000600000001, "t": 707.537071, "r": 435.00305000000003, "b": 715.862068, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "X", "bbox": {"l": 480.00037, "t": 707.537071, "r": 486.00335999999993, "b": 715.862068, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["rhed", "fcel", "fcel", "fcel", "fcel", "fcel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "fcel", "fcel", "nl", "rhed", "fcel", "ecel", "fcel", "fcel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "fcel", "fcel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl"], "num_rows": 13, "num_cols": 6, "table_cells": [{"bbox": {"l": 70.800301, "t": 400.51827999999995, "r": 119.78551, "b": 408.84329, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "User action", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 424.93805, "t": 447.52255, "r": 433.26297000000005, "b": 487.01999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "*JOBCTL", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 450.13806, "t": 401.6000700000001, "r": 458.46298, "b": 487.01999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "QIBM_DB_SECADM", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 475.93835000000007, "t": 401.53442, "r": 484.26327999999995, "b": 487.01999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "QIBM_DB_SQLADM", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 501.13837, "t": 401.6145, "r": 509.46329, "b": 487.01999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "QIBM_DB_SYSMON", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 526.39862, "t": 432.79944, "r": 534.72357, "b": 487.02005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "No Authority", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800003, "t": 498.55798, "r": 220.15681000000004, "b": 506.883, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "SET CURRENT DEGREE (SQL statement)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0, "t": 498.55798, "r": 435.00299000000007, "b": 506.883, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00031, "t": 498.55798, "r": 486.0033, "b": 506.883, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 517.51828, "r": 264.5538, "b": 525.84329, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CHGQRYA command targeting a different user\u2019s job", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00003, "t": 517.51828, "r": 435.00302000000005, "b": 525.84329, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00034, "t": 517.51828, "r": 486.00333, "b": 525.84329, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800049, "t": 536.5379800000001, "r": 322.50574, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "STRDBMON or ENDDBMON commands targeting a different user\u2019s job", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00003, "t": 536.5379800000001, "r": 435.00302000000005, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00034, "t": 536.5379800000001, "r": 486.00333, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800049, "t": 555.55768, "r": 381.02185, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "STRDBMON or ENDDBMON commands targeting a job that matches the current user", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00003, "t": 555.55768, "r": 435.00302000000005, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00034, "t": 555.55768, "r": 486.00333, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 505.26061999999996, "t": 555.55768, "r": 511.26361, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.76031, "t": 555.55768, "r": 536.76331, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800049, "t": 574.51797, "r": 359.51736, "b": 582.84299, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "QUSRJOBI() API format 900 or System i Navigator\u2019s SQL Details for Job", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 574.51797, "r": 435.00305000000003, "b": 582.84299, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 574.51797, "r": 486.00335999999993, "b": 582.84299, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 505.2606799999999, "t": 574.51797, "r": 511.26367, "b": 582.84299, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 593.5376699999999, "r": 220.75178999999997, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Visual Explain within Run SQL scripts", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 593.5376699999999, "r": 435.00305000000003, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 593.5376699999999, "r": 486.00335999999993, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 505.2606799999999, "t": 593.5376699999999, "r": 511.26367, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.76038, "t": 593.5376699999999, "r": 536.76337, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 612.55737, "r": 236.6548, "b": 620.88239, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Visual Explain outside of Run SQL scripts", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 612.55737, "r": 435.00305000000003, "b": 620.88239, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 612.55737, "r": 486.00335999999993, "b": 620.88239, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 631.51767, "r": 213.12968, "b": 639.84268, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ANALYZE PLAN CACHE procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 631.51767, "r": 435.00305000000003, "b": 639.84268, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 631.51767, "r": 486.00335999999993, "b": 639.84268, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 650.53737, "r": 199.87808, "b": 658.86238, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "DUMP PLAN CACHE procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 650.53737, "r": 435.00305000000003, "b": 658.86238, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 650.53737, "r": 486.00335999999993, "b": 658.86238, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 669.55708, "r": 208.36777, "b": 677.88207, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "MODIFY PLAN CACHE procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 669.55708, "r": 435.00305000000003, "b": 677.88207, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 669.55708, "r": 486.00335999999993, "b": 677.88207, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 688.57677, "r": 411.20264, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "MODIFY PLAN CACHE PROPERTIES procedure (currently does not check authority)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 688.57677, "r": 435.00305000000003, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 688.57677, "r": 486.00335999999993, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 707.537071, "r": 377.12585, "b": 715.862068, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CHANGE PLAN CACHE SIZE procedure (currently does not check authority)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 707.537071, "r": 435.00305000000003, "b": 715.862068, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 707.537071, "r": 486.00335999999993, "b": 715.862068, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}]}], "headers": [{"label": "page_footer", "id": 0, "page_no": 8, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 354.4815673828125, "t": 754.9415893554688, "r": 523.54071, "b": 764.1055297851562, "coord_origin": "TOPLEFT"}, "confidence": 0.9508126378059387, "cells": [{"id": 0, "text": "Chapter 2. Roles and separation of duties ", "bbox": {"l": 355.32001, "t": 755.538002, "r": 523.54071, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 2. Roles and separation of duties"}, {"label": "page_footer", "id": 1, "page_no": 8, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 536.0808715820312, "t": 754.2325439453125, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8987302780151367, "cells": [{"id": 1, "text": "11", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "11"}]}}, {"page_no": 9, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "15", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "The SQL ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 179.58179, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "CREATE PERMISSION", "bbox": {"l": 179.57977, "t": 71.65845000000002, "r": 264.47879, "b": 80.48302999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " statement that is shown in Figure 3-1 is used to define and ", "bbox": {"l": 264.53955, "t": 71.50903000000005, "r": 528.73059, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "initially enable or disable the row access rules.", "bbox": {"l": 136.79956, "t": 83.50885000000017, "r": 341.71762, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Figure 3-1 CREATE PERMISSION SQL statement", "bbox": {"l": 136.8, "t": 414.138, "r": 341.97659, "b": 422.46301, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Column mask", "bbox": {"l": 136.8, "t": 439.94399999999996, "r": 215.37601, "b": 451.04401, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "A column mask is a database object that manifests a column value access control rule for a ", "bbox": {"l": 136.8, "t": 455.08871000000005, "r": 542.76648, "b": 464.3017, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "specific column in a specific table. It uses a CASE expression that describes what you see ", "bbox": {"l": 136.8, "t": 467.08853, "r": 537.84125, "b": 476.30151, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "when you access the column. For example, a teller can see only the last four digits of a tax ", "bbox": {"l": 136.8, "t": 479.08835, "r": 538.80927, "b": 488.30133, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "identification number.", "bbox": {"l": 136.8, "t": 491.08817, "r": 231.20888, "b": 500.30115, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CREATE PERMISSION", "bbox": {"l": 148.1337, "t": 139.67969000000005, "r": 246.7961, "b": 149.50982999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "<", "bbox": {"l": 251.86685, "t": 139.67969000000005, "r": 257.58578, "b": 149.49834999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "permission name", "bbox": {"l": 257.59152, "t": 139.67969000000005, "r": 336.99741, "b": 149.50982999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": ">", "bbox": {"l": 337.01233, "t": 139.67969000000005, "r": 342.73126, "b": 149.49834999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Names the row permission for row access control", "bbox": {"l": 346.56491, "t": 121.46252000000004, "r": 530.74371, "b": 129.33507999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "ON", "bbox": {"l": 148.1337, "t": 181.06255999999996, "r": 163.45079, "b": 190.8927, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "<", "bbox": {"l": 168.58405, "t": 181.06255999999996, "r": 174.30298, "b": 190.88122999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "table name", "bbox": {"l": 174.30872, "t": 181.06255999999996, "r": 226.86777, "b": 190.8927, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": ">", "bbox": {"l": 226.86548000000002, "t": 181.06255999999996, "r": 232.58441, "b": 190.88122999999996, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Identifies the table on which the row ", "bbox": {"l": 311.3204, "t": 166.29413, "r": 450.77191000000005, "b": 174.16669000000002, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "permission is created", "bbox": {"l": 450.86123999999995, "t": 166.29413, "r": 529.93134, "b": 174.16669000000002, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "AS ", "bbox": {"l": 148.1337, "t": 222.44550000000004, "r": 163.10973, "b": 232.27562999999998, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "<", "bbox": {"l": 165.68669, "t": 222.44550000000004, "r": 171.40562, "b": 232.26415999999995, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "correlation name", "bbox": {"l": 171.41136, "t": 222.44550000000004, "r": 251.20424000000003, "b": 232.27562999999998, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": ">", "bbox": {"l": 251.21115, "t": 222.44550000000004, "r": 256.93008, "b": 232.26415999999995, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Specifies an optional correlation name that ca", "bbox": {"l": 235.79649, "t": 204.22839, "r": 406.62051, "b": 212.10095, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "be used within search-condition", "bbox": {"l": 480.53094, "t": 204.22839, "r": 532.89496, "b": 212.10095, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "FOR ROWS", "bbox": {"l": 148.1337, "t": 263.82836999999995, "r": 199.72467, "b": 273.65851, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Indicates that a row permission is cr", "bbox": {"l": 321.56271, "t": 246.09411999999998, "r": 455.3432, "b": 253.96667000000002, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "eated", "bbox": {"l": 455.20786000000004, "t": 246.09411999999998, "r": 476.48404, "b": 253.96667000000002, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Specifies a condition that can be ", "bbox": {"l": 321.5972, "t": 266.30267000000003, "r": 444.0292400000001, "b": 274.17523000000006, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "true,", "bbox": {"l": 444.07986, "t": 266.30267000000003, "r": 459.08678999999995, "b": 274.17523000000006, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "false, or unknown", "bbox": {"l": 464.2088, "t": 266.30267000000003, "r": 530.94897, "b": 274.17523000000006, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "WHERE", "bbox": {"l": 148.1337, "t": 291.41708, "r": 183.42342, "b": 301.24722, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "<", "bbox": {"l": 188.61984, "t": 291.41708, "r": 194.33878, "b": 301.23572, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "logic to test: user and/or group and/or column value", "bbox": {"l": 194.34451, "t": 291.41708, "r": 437.04659999999996, "b": 301.24722, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": ">", "bbox": {"l": 437.09020999999996, "t": 291.41708, "r": 442.80914000000007, "b": 301.23572, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ENFORCED FOR ALL ACCESS", "bbox": {"l": 148.1337, "t": 332.79999, "r": 278.77805, "b": 342.63013, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Specifies that the row permission applies to all ref", "bbox": {"l": 271.55829, "t": 314.58276, "r": 457.4451, "b": 322.45535, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "erences of the table", "bbox": {"l": 457.19281, "t": 314.58276, "r": 531.74939, "b": 322.45535, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "ENABLE", "bbox": {"l": 148.1337, "t": 374.18289, "r": 185.17584, "b": 384.01302999999996, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Specifies that the row permission is to", "bbox": {"l": 312.28601, "t": 355.96576000000005, "r": 454.33505, "b": 363.83835, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": " be initially enabled", "bbox": {"l": 454.3461, "t": 355.96576000000005, "r": 527.05286, "b": 363.83835, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "S", "bbox": {"l": 311.73431, "t": 376.65717, "r": 315.94684, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "ifith t th", "bbox": {"l": 329.28326, "t": 376.65717, "r": 371.71786, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "i", "bbox": {"l": 415.0014, "t": 376.65717, "r": 417.09616, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "i", "bbox": {"l": 424.27356, "t": 376.65717, "r": 426.36832, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "i", "bbox": {"l": 438.13208, "t": 376.65717, "r": 440.2268399999999, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "t", "bbox": {"l": 445.88681, "t": 376.65717, "r": 448.95757999999995, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "b", "bbox": {"l": 455.8532400000001, "t": 376.65717, "r": 460.67346000000003, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "i", "bbox": {"l": 467.36746, "t": 376.65717, "r": 470.06998000000004, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "iti ll", "bbox": {"l": 472.73705999999993, "t": 376.65717, "r": 490.1676, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "di", "bbox": {"l": 496.33661, "t": 376.65717, "r": 503.2608, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "bl d", "bbox": {"l": 511.26138, "t": 376.65717, "r": 527.59674, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "DISABLE", "bbox": {"l": 148.1337, "t": 387.9772, "r": 187.6265, "b": 397.80734000000007, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": ";", "bbox": {"l": 187.58514, "t": 387.9772, "r": 190.6628, "b": 397.79583999999994, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Specifies that the row permission is to ", "bbox": {"l": 311.73431, "t": 376.65717, "r": 455.83047000000005, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "be initially disabled", "bbox": {"l": 455.8848, "t": 376.65717, "r": 527.62122, "b": 384.52975, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 344.5666809082031, "t": 754.718017578125, "r": 523.60162, "b": 764.0823974609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9526246786117554, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 536.09998, "t": 754.310302734375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.907107949256897, "cells": [{"id": 1, "text": "15", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "caption", "bbox": {"l": 135.73501586914062, "t": 70.48638153076172, "r": 528.73059, "b": 92.9990234375, "coord_origin": "TOPLEFT"}, "confidence": 0.872844934463501, "cells": [{"id": 2, "text": "The SQL ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 179.58179, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "CREATE PERMISSION", "bbox": {"l": 179.57977, "t": 71.65845000000002, "r": 264.47879, "b": 80.48302999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " statement that is shown in Figure 3-1 is used to define and ", "bbox": {"l": 264.53955, "t": 71.50903000000005, "r": 528.73059, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "initially enable or disable the row access rules.", "bbox": {"l": 136.79956, "t": 83.50885000000017, "r": 341.71762, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.3166961669922, "t": 413.26751708984375, "r": 342.55548095703125, "b": 422.8843078613281, "coord_origin": "TOPLEFT"}, "confidence": 0.9387834072113037, "cells": [{"id": 6, "text": "Figure 3-1 CREATE PERMISSION SQL statement", "bbox": {"l": 136.8, "t": 414.138, "r": 341.97659, "b": 422.46301, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 136.24984741210938, "t": 438.7343444824219, "r": 215.88082885742188, "b": 451.04401, "coord_origin": "TOPLEFT"}, "confidence": 0.9477567076683044, "cells": [{"id": 7, "text": "Column mask", "bbox": {"l": 136.8, "t": 439.94399999999996, "r": 215.37601, "b": 451.04401, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.803466796875, "t": 453.9210510253906, "r": 542.76648, "b": 500.30115, "coord_origin": "TOPLEFT"}, "confidence": 0.9843975901603699, "cells": [{"id": 8, "text": "A column mask is a database object that manifests a column value access control rule for a ", "bbox": {"l": 136.8, "t": 455.08871000000005, "r": 542.76648, "b": 464.3017, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "specific column in a specific table. It uses a CASE expression that describes what you see ", "bbox": {"l": 136.8, "t": 467.08853, "r": 537.84125, "b": 476.30151, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "when you access the column. For example, a teller can see only the last four digits of a tax ", "bbox": {"l": 136.8, "t": 479.08835, "r": 538.80927, "b": 488.30133, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "identification number.", "bbox": {"l": 136.8, "t": 491.08817, "r": 231.20888, "b": 500.30115, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "picture", "bbox": {"l": 135.9717559814453, "t": 107.41072845458984, "r": 545.4180908203125, "b": 410.60931396484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9788318872451782, "cells": [{"id": 12, "text": "CREATE PERMISSION", "bbox": {"l": 148.1337, "t": 139.67969000000005, "r": 246.7961, "b": 149.50982999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "<", "bbox": {"l": 251.86685, "t": 139.67969000000005, "r": 257.58578, "b": 149.49834999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "permission name", "bbox": {"l": 257.59152, "t": 139.67969000000005, "r": 336.99741, "b": 149.50982999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": ">", "bbox": {"l": 337.01233, "t": 139.67969000000005, "r": 342.73126, "b": 149.49834999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Names the row permission for row access control", "bbox": {"l": 346.56491, "t": 121.46252000000004, "r": 530.74371, "b": 129.33507999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "ON", "bbox": {"l": 148.1337, "t": 181.06255999999996, "r": 163.45079, "b": 190.8927, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "<", "bbox": {"l": 168.58405, "t": 181.06255999999996, "r": 174.30298, "b": 190.88122999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "table name", "bbox": {"l": 174.30872, "t": 181.06255999999996, "r": 226.86777, "b": 190.8927, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": ">", "bbox": {"l": 226.86548000000002, "t": 181.06255999999996, "r": 232.58441, "b": 190.88122999999996, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Identifies the table on which the row ", "bbox": {"l": 311.3204, "t": 166.29413, "r": 450.77191000000005, "b": 174.16669000000002, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "permission is created", "bbox": {"l": 450.86123999999995, "t": 166.29413, "r": 529.93134, "b": 174.16669000000002, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "AS ", "bbox": {"l": 148.1337, "t": 222.44550000000004, "r": 163.10973, "b": 232.27562999999998, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "<", "bbox": {"l": 165.68669, "t": 222.44550000000004, "r": 171.40562, "b": 232.26415999999995, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "correlation name", "bbox": {"l": 171.41136, "t": 222.44550000000004, "r": 251.20424000000003, "b": 232.27562999999998, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": ">", "bbox": {"l": 251.21115, "t": 222.44550000000004, "r": 256.93008, "b": 232.26415999999995, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Specifies an optional correlation name that ca", "bbox": {"l": 235.79649, "t": 204.22839, "r": 406.62051, "b": 212.10095, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "be used within search-condition", "bbox": {"l": 480.53094, "t": 204.22839, "r": 532.89496, "b": 212.10095, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "FOR ROWS", "bbox": {"l": 148.1337, "t": 263.82836999999995, "r": 199.72467, "b": 273.65851, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Indicates that a row permission is cr", "bbox": {"l": 321.56271, "t": 246.09411999999998, "r": 455.3432, "b": 253.96667000000002, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "eated", "bbox": {"l": 455.20786000000004, "t": 246.09411999999998, "r": 476.48404, "b": 253.96667000000002, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Specifies a condition that can be ", "bbox": {"l": 321.5972, "t": 266.30267000000003, "r": 444.0292400000001, "b": 274.17523000000006, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "true,", "bbox": {"l": 444.07986, "t": 266.30267000000003, "r": 459.08678999999995, "b": 274.17523000000006, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "false, or unknown", "bbox": {"l": 464.2088, "t": 266.30267000000003, "r": 530.94897, "b": 274.17523000000006, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "WHERE", "bbox": {"l": 148.1337, "t": 291.41708, "r": 183.42342, "b": 301.24722, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "<", "bbox": {"l": 188.61984, "t": 291.41708, "r": 194.33878, "b": 301.23572, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "logic to test: user and/or group and/or column value", "bbox": {"l": 194.34451, "t": 291.41708, "r": 437.04659999999996, "b": 301.24722, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": ">", "bbox": {"l": 437.09020999999996, "t": 291.41708, "r": 442.80914000000007, "b": 301.23572, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ENFORCED FOR ALL ACCESS", "bbox": {"l": 148.1337, "t": 332.79999, "r": 278.77805, "b": 342.63013, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Specifies that the row permission applies to all ref", "bbox": {"l": 271.55829, "t": 314.58276, "r": 457.4451, "b": 322.45535, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "erences of the table", "bbox": {"l": 457.19281, "t": 314.58276, "r": 531.74939, "b": 322.45535, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "ENABLE", "bbox": {"l": 148.1337, "t": 374.18289, "r": 185.17584, "b": 384.01302999999996, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Specifies that the row permission is to", "bbox": {"l": 312.28601, "t": 355.96576000000005, "r": 454.33505, "b": 363.83835, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": " be initially enabled", "bbox": {"l": 454.3461, "t": 355.96576000000005, "r": 527.05286, "b": 363.83835, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "S", "bbox": {"l": 311.73431, "t": 376.65717, "r": 315.94684, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "ifith t th", "bbox": {"l": 329.28326, "t": 376.65717, "r": 371.71786, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "i", "bbox": {"l": 415.0014, "t": 376.65717, "r": 417.09616, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "i", "bbox": {"l": 424.27356, "t": 376.65717, "r": 426.36832, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "i", "bbox": {"l": 438.13208, "t": 376.65717, "r": 440.2268399999999, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "t", "bbox": {"l": 445.88681, "t": 376.65717, "r": 448.95757999999995, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "b", "bbox": {"l": 455.8532400000001, "t": 376.65717, "r": 460.67346000000003, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "i", "bbox": {"l": 467.36746, "t": 376.65717, "r": 470.06998000000004, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "iti ll", "bbox": {"l": 472.73705999999993, "t": 376.65717, "r": 490.1676, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "di", "bbox": {"l": 496.33661, "t": 376.65717, "r": 503.2608, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "bl d", "bbox": {"l": 511.26138, "t": 376.65717, "r": 527.59674, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "DISABLE", "bbox": {"l": 148.1337, "t": 387.9772, "r": 187.6265, "b": 397.80734000000007, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": ";", "bbox": {"l": 187.58514, "t": 387.9772, "r": 190.6628, "b": 397.79583999999994, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Specifies that the row permission is to ", "bbox": {"l": 311.73431, "t": 376.65717, "r": 455.83047000000005, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "be initially disabled", "bbox": {"l": 455.8848, "t": 376.65717, "r": 527.62122, "b": 384.52975, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 9, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.5666809082031, "t": 754.718017578125, "r": 523.60162, "b": 764.0823974609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9526246786117554, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 9, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 536.09998, "t": 754.310302734375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.907107949256897, "cells": [{"id": 1, "text": "15", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "15"}, {"label": "caption", "id": 2, "page_no": 9, "cluster": {"id": 2, "label": "caption", "bbox": {"l": 135.73501586914062, "t": 70.48638153076172, "r": 528.73059, "b": 92.9990234375, "coord_origin": "TOPLEFT"}, "confidence": 0.872844934463501, "cells": [{"id": 2, "text": "The SQL ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 179.58179, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "CREATE PERMISSION", "bbox": {"l": 179.57977, "t": 71.65845000000002, "r": 264.47879, "b": 80.48302999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " statement that is shown in Figure 3-1 is used to define and ", "bbox": {"l": 264.53955, "t": 71.50903000000005, "r": 528.73059, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "initially enable or disable the row access rules.", "bbox": {"l": 136.79956, "t": 83.50885000000017, "r": 341.71762, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "The SQL CREATE PERMISSION statement that is shown in Figure 3-1 is used to define and initially enable or disable the row access rules."}, {"label": "caption", "id": 3, "page_no": 9, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.3166961669922, "t": 413.26751708984375, "r": 342.55548095703125, "b": 422.8843078613281, "coord_origin": "TOPLEFT"}, "confidence": 0.9387834072113037, "cells": [{"id": 6, "text": "Figure 3-1 CREATE PERMISSION SQL statement", "bbox": {"l": 136.8, "t": 414.138, "r": 341.97659, "b": 422.46301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-1 CREATE PERMISSION SQL statement"}, {"label": "section_header", "id": 4, "page_no": 9, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 136.24984741210938, "t": 438.7343444824219, "r": 215.88082885742188, "b": 451.04401, "coord_origin": "TOPLEFT"}, "confidence": 0.9477567076683044, "cells": [{"id": 7, "text": "Column mask", "bbox": {"l": 136.8, "t": 439.94399999999996, "r": 215.37601, "b": 451.04401, "coord_origin": "TOPLEFT"}}]}, "text": "Column mask"}, {"label": "text", "id": 5, "page_no": 9, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.803466796875, "t": 453.9210510253906, "r": 542.76648, "b": 500.30115, "coord_origin": "TOPLEFT"}, "confidence": 0.9843975901603699, "cells": [{"id": 8, "text": "A column mask is a database object that manifests a column value access control rule for a ", "bbox": {"l": 136.8, "t": 455.08871000000005, "r": 542.76648, "b": 464.3017, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "specific column in a specific table. It uses a CASE expression that describes what you see ", "bbox": {"l": 136.8, "t": 467.08853, "r": 537.84125, "b": 476.30151, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "when you access the column. For example, a teller can see only the last four digits of a tax ", "bbox": {"l": 136.8, "t": 479.08835, "r": 538.80927, "b": 488.30133, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "identification number.", "bbox": {"l": 136.8, "t": 491.08817, "r": 231.20888, "b": 500.30115, "coord_origin": "TOPLEFT"}}]}, "text": "A column mask is a database object that manifests a column value access control rule for a specific column in a specific table. It uses a CASE expression that describes what you see when you access the column. For example, a teller can see only the last four digits of a tax identification number."}, {"label": "picture", "id": 6, "page_no": 9, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 135.9717559814453, "t": 107.41072845458984, "r": 545.4180908203125, "b": 410.60931396484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9788318872451782, "cells": [{"id": 12, "text": "CREATE PERMISSION", "bbox": {"l": 148.1337, "t": 139.67969000000005, "r": 246.7961, "b": 149.50982999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "<", "bbox": {"l": 251.86685, "t": 139.67969000000005, "r": 257.58578, "b": 149.49834999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "permission name", "bbox": {"l": 257.59152, "t": 139.67969000000005, "r": 336.99741, "b": 149.50982999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": ">", "bbox": {"l": 337.01233, "t": 139.67969000000005, "r": 342.73126, "b": 149.49834999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Names the row permission for row access control", "bbox": {"l": 346.56491, "t": 121.46252000000004, "r": 530.74371, "b": 129.33507999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "ON", "bbox": {"l": 148.1337, "t": 181.06255999999996, "r": 163.45079, "b": 190.8927, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "<", "bbox": {"l": 168.58405, "t": 181.06255999999996, "r": 174.30298, "b": 190.88122999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "table name", "bbox": {"l": 174.30872, "t": 181.06255999999996, "r": 226.86777, "b": 190.8927, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": ">", "bbox": {"l": 226.86548000000002, "t": 181.06255999999996, "r": 232.58441, "b": 190.88122999999996, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Identifies the table on which the row ", "bbox": {"l": 311.3204, "t": 166.29413, "r": 450.77191000000005, "b": 174.16669000000002, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "permission is created", "bbox": {"l": 450.86123999999995, "t": 166.29413, "r": 529.93134, "b": 174.16669000000002, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "AS ", "bbox": {"l": 148.1337, "t": 222.44550000000004, "r": 163.10973, "b": 232.27562999999998, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "<", "bbox": {"l": 165.68669, "t": 222.44550000000004, "r": 171.40562, "b": 232.26415999999995, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "correlation name", "bbox": {"l": 171.41136, "t": 222.44550000000004, "r": 251.20424000000003, "b": 232.27562999999998, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": ">", "bbox": {"l": 251.21115, "t": 222.44550000000004, "r": 256.93008, "b": 232.26415999999995, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Specifies an optional correlation name that ca", "bbox": {"l": 235.79649, "t": 204.22839, "r": 406.62051, "b": 212.10095, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "be used within search-condition", "bbox": {"l": 480.53094, "t": 204.22839, "r": 532.89496, "b": 212.10095, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "FOR ROWS", "bbox": {"l": 148.1337, "t": 263.82836999999995, "r": 199.72467, "b": 273.65851, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Indicates that a row permission is cr", "bbox": {"l": 321.56271, "t": 246.09411999999998, "r": 455.3432, "b": 253.96667000000002, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "eated", "bbox": {"l": 455.20786000000004, "t": 246.09411999999998, "r": 476.48404, "b": 253.96667000000002, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Specifies a condition that can be ", "bbox": {"l": 321.5972, "t": 266.30267000000003, "r": 444.0292400000001, "b": 274.17523000000006, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "true,", "bbox": {"l": 444.07986, "t": 266.30267000000003, "r": 459.08678999999995, "b": 274.17523000000006, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "false, or unknown", "bbox": {"l": 464.2088, "t": 266.30267000000003, "r": 530.94897, "b": 274.17523000000006, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "WHERE", "bbox": {"l": 148.1337, "t": 291.41708, "r": 183.42342, "b": 301.24722, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "<", "bbox": {"l": 188.61984, "t": 291.41708, "r": 194.33878, "b": 301.23572, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "logic to test: user and/or group and/or column value", "bbox": {"l": 194.34451, "t": 291.41708, "r": 437.04659999999996, "b": 301.24722, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": ">", "bbox": {"l": 437.09020999999996, "t": 291.41708, "r": 442.80914000000007, "b": 301.23572, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ENFORCED FOR ALL ACCESS", "bbox": {"l": 148.1337, "t": 332.79999, "r": 278.77805, "b": 342.63013, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Specifies that the row permission applies to all ref", "bbox": {"l": 271.55829, "t": 314.58276, "r": 457.4451, "b": 322.45535, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "erences of the table", "bbox": {"l": 457.19281, "t": 314.58276, "r": 531.74939, "b": 322.45535, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "ENABLE", "bbox": {"l": 148.1337, "t": 374.18289, "r": 185.17584, "b": 384.01302999999996, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Specifies that the row permission is to", "bbox": {"l": 312.28601, "t": 355.96576000000005, "r": 454.33505, "b": 363.83835, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": " be initially enabled", "bbox": {"l": 454.3461, "t": 355.96576000000005, "r": 527.05286, "b": 363.83835, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "S", "bbox": {"l": 311.73431, "t": 376.65717, "r": 315.94684, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "ifith t th", "bbox": {"l": 329.28326, "t": 376.65717, "r": 371.71786, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "i", "bbox": {"l": 415.0014, "t": 376.65717, "r": 417.09616, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "i", "bbox": {"l": 424.27356, "t": 376.65717, "r": 426.36832, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "i", "bbox": {"l": 438.13208, "t": 376.65717, "r": 440.2268399999999, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "t", "bbox": {"l": 445.88681, "t": 376.65717, "r": 448.95757999999995, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "b", "bbox": {"l": 455.8532400000001, "t": 376.65717, "r": 460.67346000000003, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "i", "bbox": {"l": 467.36746, "t": 376.65717, "r": 470.06998000000004, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "iti ll", "bbox": {"l": 472.73705999999993, "t": 376.65717, "r": 490.1676, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "di", "bbox": {"l": 496.33661, "t": 376.65717, "r": 503.2608, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "bl d", "bbox": {"l": 511.26138, "t": 376.65717, "r": 527.59674, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "DISABLE", "bbox": {"l": 148.1337, "t": 387.9772, "r": 187.6265, "b": 397.80734000000007, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": ";", "bbox": {"l": 187.58514, "t": 387.9772, "r": 190.6628, "b": 397.79583999999994, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Specifies that the row permission is to ", "bbox": {"l": 311.73431, "t": 376.65717, "r": 455.83047000000005, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "be initially disabled", "bbox": {"l": 455.8848, "t": 376.65717, "r": 527.62122, "b": 384.52975, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "caption", "id": 2, "page_no": 9, "cluster": {"id": 2, "label": "caption", "bbox": {"l": 135.73501586914062, "t": 70.48638153076172, "r": 528.73059, "b": 92.9990234375, "coord_origin": "TOPLEFT"}, "confidence": 0.872844934463501, "cells": [{"id": 2, "text": "The SQL ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 179.58179, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "CREATE PERMISSION", "bbox": {"l": 179.57977, "t": 71.65845000000002, "r": 264.47879, "b": 80.48302999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " statement that is shown in Figure 3-1 is used to define and ", "bbox": {"l": 264.53955, "t": 71.50903000000005, "r": 528.73059, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "initially enable or disable the row access rules.", "bbox": {"l": 136.79956, "t": 83.50885000000017, "r": 341.71762, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "The SQL CREATE PERMISSION statement that is shown in Figure 3-1 is used to define and initially enable or disable the row access rules."}, {"label": "caption", "id": 3, "page_no": 9, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.3166961669922, "t": 413.26751708984375, "r": 342.55548095703125, "b": 422.8843078613281, "coord_origin": "TOPLEFT"}, "confidence": 0.9387834072113037, "cells": [{"id": 6, "text": "Figure 3-1 CREATE PERMISSION SQL statement", "bbox": {"l": 136.8, "t": 414.138, "r": 341.97659, "b": 422.46301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-1 CREATE PERMISSION SQL statement"}, {"label": "section_header", "id": 4, "page_no": 9, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 136.24984741210938, "t": 438.7343444824219, "r": 215.88082885742188, "b": 451.04401, "coord_origin": "TOPLEFT"}, "confidence": 0.9477567076683044, "cells": [{"id": 7, "text": "Column mask", "bbox": {"l": 136.8, "t": 439.94399999999996, "r": 215.37601, "b": 451.04401, "coord_origin": "TOPLEFT"}}]}, "text": "Column mask"}, {"label": "text", "id": 5, "page_no": 9, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.803466796875, "t": 453.9210510253906, "r": 542.76648, "b": 500.30115, "coord_origin": "TOPLEFT"}, "confidence": 0.9843975901603699, "cells": [{"id": 8, "text": "A column mask is a database object that manifests a column value access control rule for a ", "bbox": {"l": 136.8, "t": 455.08871000000005, "r": 542.76648, "b": 464.3017, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "specific column in a specific table. It uses a CASE expression that describes what you see ", "bbox": {"l": 136.8, "t": 467.08853, "r": 537.84125, "b": 476.30151, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "when you access the column. For example, a teller can see only the last four digits of a tax ", "bbox": {"l": 136.8, "t": 479.08835, "r": 538.80927, "b": 488.30133, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "identification number.", "bbox": {"l": 136.8, "t": 491.08817, "r": 231.20888, "b": 500.30115, "coord_origin": "TOPLEFT"}}]}, "text": "A column mask is a database object that manifests a column value access control rule for a specific column in a specific table. It uses a CASE expression that describes what you see when you access the column. For example, a teller can see only the last four digits of a tax identification number."}, {"label": "picture", "id": 6, "page_no": 9, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 135.9717559814453, "t": 107.41072845458984, "r": 545.4180908203125, "b": 410.60931396484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9788318872451782, "cells": [{"id": 12, "text": "CREATE PERMISSION", "bbox": {"l": 148.1337, "t": 139.67969000000005, "r": 246.7961, "b": 149.50982999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "<", "bbox": {"l": 251.86685, "t": 139.67969000000005, "r": 257.58578, "b": 149.49834999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "permission name", "bbox": {"l": 257.59152, "t": 139.67969000000005, "r": 336.99741, "b": 149.50982999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": ">", "bbox": {"l": 337.01233, "t": 139.67969000000005, "r": 342.73126, "b": 149.49834999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Names the row permission for row access control", "bbox": {"l": 346.56491, "t": 121.46252000000004, "r": 530.74371, "b": 129.33507999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "ON", "bbox": {"l": 148.1337, "t": 181.06255999999996, "r": 163.45079, "b": 190.8927, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "<", "bbox": {"l": 168.58405, "t": 181.06255999999996, "r": 174.30298, "b": 190.88122999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "table name", "bbox": {"l": 174.30872, "t": 181.06255999999996, "r": 226.86777, "b": 190.8927, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": ">", "bbox": {"l": 226.86548000000002, "t": 181.06255999999996, "r": 232.58441, "b": 190.88122999999996, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Identifies the table on which the row ", "bbox": {"l": 311.3204, "t": 166.29413, "r": 450.77191000000005, "b": 174.16669000000002, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "permission is created", "bbox": {"l": 450.86123999999995, "t": 166.29413, "r": 529.93134, "b": 174.16669000000002, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "AS ", "bbox": {"l": 148.1337, "t": 222.44550000000004, "r": 163.10973, "b": 232.27562999999998, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "<", "bbox": {"l": 165.68669, "t": 222.44550000000004, "r": 171.40562, "b": 232.26415999999995, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "correlation name", "bbox": {"l": 171.41136, "t": 222.44550000000004, "r": 251.20424000000003, "b": 232.27562999999998, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": ">", "bbox": {"l": 251.21115, "t": 222.44550000000004, "r": 256.93008, "b": 232.26415999999995, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Specifies an optional correlation name that ca", "bbox": {"l": 235.79649, "t": 204.22839, "r": 406.62051, "b": 212.10095, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "be used within search-condition", "bbox": {"l": 480.53094, "t": 204.22839, "r": 532.89496, "b": 212.10095, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "FOR ROWS", "bbox": {"l": 148.1337, "t": 263.82836999999995, "r": 199.72467, "b": 273.65851, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Indicates that a row permission is cr", "bbox": {"l": 321.56271, "t": 246.09411999999998, "r": 455.3432, "b": 253.96667000000002, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "eated", "bbox": {"l": 455.20786000000004, "t": 246.09411999999998, "r": 476.48404, "b": 253.96667000000002, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Specifies a condition that can be ", "bbox": {"l": 321.5972, "t": 266.30267000000003, "r": 444.0292400000001, "b": 274.17523000000006, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "true,", "bbox": {"l": 444.07986, "t": 266.30267000000003, "r": 459.08678999999995, "b": 274.17523000000006, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "false, or unknown", "bbox": {"l": 464.2088, "t": 266.30267000000003, "r": 530.94897, "b": 274.17523000000006, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "WHERE", "bbox": {"l": 148.1337, "t": 291.41708, "r": 183.42342, "b": 301.24722, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "<", "bbox": {"l": 188.61984, "t": 291.41708, "r": 194.33878, "b": 301.23572, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "logic to test: user and/or group and/or column value", "bbox": {"l": 194.34451, "t": 291.41708, "r": 437.04659999999996, "b": 301.24722, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": ">", "bbox": {"l": 437.09020999999996, "t": 291.41708, "r": 442.80914000000007, "b": 301.23572, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ENFORCED FOR ALL ACCESS", "bbox": {"l": 148.1337, "t": 332.79999, "r": 278.77805, "b": 342.63013, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Specifies that the row permission applies to all ref", "bbox": {"l": 271.55829, "t": 314.58276, "r": 457.4451, "b": 322.45535, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "erences of the table", "bbox": {"l": 457.19281, "t": 314.58276, "r": 531.74939, "b": 322.45535, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "ENABLE", "bbox": {"l": 148.1337, "t": 374.18289, "r": 185.17584, "b": 384.01302999999996, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Specifies that the row permission is to", "bbox": {"l": 312.28601, "t": 355.96576000000005, "r": 454.33505, "b": 363.83835, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": " be initially enabled", "bbox": {"l": 454.3461, "t": 355.96576000000005, "r": 527.05286, "b": 363.83835, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "S", "bbox": {"l": 311.73431, "t": 376.65717, "r": 315.94684, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "ifith t th", "bbox": {"l": 329.28326, "t": 376.65717, "r": 371.71786, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "i", "bbox": {"l": 415.0014, "t": 376.65717, "r": 417.09616, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "i", "bbox": {"l": 424.27356, "t": 376.65717, "r": 426.36832, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "i", "bbox": {"l": 438.13208, "t": 376.65717, "r": 440.2268399999999, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "t", "bbox": {"l": 445.88681, "t": 376.65717, "r": 448.95757999999995, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "b", "bbox": {"l": 455.8532400000001, "t": 376.65717, "r": 460.67346000000003, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "i", "bbox": {"l": 467.36746, "t": 376.65717, "r": 470.06998000000004, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "iti ll", "bbox": {"l": 472.73705999999993, "t": 376.65717, "r": 490.1676, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "di", "bbox": {"l": 496.33661, "t": 376.65717, "r": 503.2608, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "bl d", "bbox": {"l": 511.26138, "t": 376.65717, "r": 527.59674, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "DISABLE", "bbox": {"l": 148.1337, "t": 387.9772, "r": 187.6265, "b": 397.80734000000007, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": ";", "bbox": {"l": 187.58514, "t": 387.9772, "r": 190.6628, "b": 397.79583999999994, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Specifies that the row permission is to ", "bbox": {"l": 311.73431, "t": 376.65717, "r": 455.83047000000005, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "be initially disabled", "bbox": {"l": 455.8848, "t": 376.65717, "r": 527.62122, "b": 384.52975, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 9, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.5666809082031, "t": 754.718017578125, "r": 523.60162, "b": 764.0823974609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9526246786117554, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 9, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 536.09998, "t": 754.310302734375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.907107949256897, "cells": [{"id": 1, "text": "15", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "15"}]}}, {"page_no": 10, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "19", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Table 3-1 summarizes these special registers and their values.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 412.20758, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Table 3-1 Special registers and their corresponding values", "bbox": {"l": 136.8, "t": 93.49805000000003, "r": 372.60364, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 3-5 shows the difference in the special register values when an adopted authority is ", "bbox": {"l": 136.8, "t": 214.48870999999997, "r": 538.4939, "b": 223.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "used:", "bbox": {"l": 136.8, "t": 226.48852999999997, "r": 161.20995, "b": 235.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 243.67749000000003, "r": 141.78, "b": 252.45227, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "A user connects to the server using the user profile ALICE.", "bbox": {"l": 151.20016, "t": 243.52808000000005, "r": 411.36139, "b": 252.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "GLYPH", "bbox": {"l": 136.8, "t": 260.65729, "r": 141.78, "b": 269.43206999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "USER and CURRENT USER initially have the same value of ALICE.", "bbox": {"l": 151.20016, "t": 260.50787, "r": 453.2580899999999, "b": 269.72089000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "GLYPH", "bbox": {"l": 136.8, "t": 277.63707999999997, "r": 141.78, "b": 286.41187, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ALICE calls an SQL procedure that is named proc1, which is owned by user profile JOE ", "bbox": {"l": 151.20016, "t": 277.48767, "r": 541.44983, "b": 286.70068, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "and was created to adopt JOE\u2019s authority when it is called.", "bbox": {"l": 151.20016, "t": 289.4875200000001, "r": 409.82953, "b": 298.7005, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 306.67647999999997, "r": 141.78, "b": 315.45126000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "While the procedure is running, the special register USER still contains the value of ALICE ", "bbox": {"l": 151.20016, "t": 306.5271, "r": 547.21674, "b": 315.74008, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "because it excludes any adopted authority. The special register CURRENT USER ", "bbox": {"l": 151.20117, "t": 318.52691999999996, "r": 514.32971, "b": 327.7399, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "contains the value of JOE because it includes any adopted authority.", "bbox": {"l": 151.20117, "t": 330.52673, "r": 453.3249200000001, "b": 339.73972, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "GLYPH", "bbox": {"l": 136.80101, "t": 347.65591, "r": 141.78101, "b": 356.43069, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "When proc1 ends, the session reverts to its original state with both USER and CURRENT ", "bbox": {"l": 151.20117, "t": 347.50653, "r": 547.35406, "b": 356.71950999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "USER having the value of ALICE.", "bbox": {"l": 151.20117, "t": 359.50635, "r": 299.57532, "b": 368.71933000000007, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Figure 3-5 Special registers and adopted authority", "bbox": {"l": 136.8, "t": 596.7179, "r": 341.25662, "b": 605.04291, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "3.2.2", "bbox": {"l": 64.800003, "t": 625.55472, "r": 94.20356, "b": 637.54272, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Built-in global variables", "bbox": {"l": 97.879005, "t": 625.55472, "r": 247.02536, "b": 637.54272, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Built-in global variables are provided with the database manager and are used in SQL ", "bbox": {"l": 136.8, "t": 651.70872, "r": 518.00116, "b": 660.92172, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "statements to retrieve scalar values that are associated with the variables.", "bbox": {"l": 136.8, "t": 663.70853, "r": 462.81759999999997, "b": 672.92153, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "IBM DB2 for i supports nine different built-in global variables that are read only and ", "bbox": {"l": 136.8, "t": 685.7281, "r": 504.44669, "b": 694.941101, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "maintained by the system. These global variables can be used to identify attributes of the ", "bbox": {"l": 136.8, "t": 697.727905, "r": 532.3385, "b": 706.94091, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "database connection and used as part of the RCAC logic.", "bbox": {"l": 136.8, "t": 709.727715, "r": 391.38257, "b": 718.94072, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Special register", "bbox": {"l": 142.8, "t": 110.53801999999985, "r": 209.67091, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Corresponding value", "bbox": {"l": 230.18912000000003, "t": 110.53801999999985, "r": 319.93527, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "USER or", "bbox": {"l": 142.80002, "t": 129.49834999999996, "r": 178.26361, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "SESSION_USER", "bbox": {"l": 142.80002, "t": 140.53864, "r": 212.70122, "b": 148.86359000000004, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "The effective user of the thread excluding adopted authority.", "bbox": {"l": 230.21973000000003, "t": 129.49834999999996, "r": 467.99069000000003, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "CURRENT_USER", "bbox": {"l": 142.80003, "t": 159.55835000000002, "r": 216.63962999999998, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "The effective user of the thread including adopted authority. When no adopted ", "bbox": {"l": 230.19814, "t": 159.55835000000002, "r": 535.65082, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "authority is present, this has the same value as USER.", "bbox": {"l": 230.22061, "t": 170.53832999999997, "r": 447.36533, "b": 178.86328000000003, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "SYSTEM_USER", "bbox": {"l": 142.8009, "t": 189.55804, "r": 209.7357, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "The authorization ID that initiated the connection.", "bbox": {"l": 230.2449, "t": 189.55804, "r": 425.64569, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "SignedonasALICE", "bbox": {"l": 140.7323, "t": 386.98453, "r": 218.71170000000004, "b": 395.49527, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Signed on as ALICE", "bbox": {"l": 140.7323, "t": 386.98453, "r": 216.40009, "b": 395.49527, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "USER = ALICE", "bbox": {"l": 138.476, "t": 410.87441999999993, "r": 191.70256, "b": 419.38516, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "CURRENT USER = ALICE", "bbox": {"l": 138.476, "t": 422.81934, "r": 232.56117, "b": 431.33008, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CALL proc1", "bbox": {"l": 138.476, "t": 446.70923000000005, "r": 183.26944, "b": 455.21997, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "P1", "bbox": {"l": 148.4301, "t": 473.58524, "r": 184.17328, "b": 482.09598, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Proc1:", "bbox": {"l": 148.4301, "t": 473.58524, "r": 174.05859, "b": 482.09598, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Owner = JOE", "bbox": {"l": 157.52185, "t": 485.53015, "r": 209.103, "b": 494.04089, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "SET OPTION USRPRF=*OWNER", "bbox": {"l": 157.52185, "t": 497.47507, "r": 281.68927, "b": 505.98581, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "USER = ALICE", "bbox": {"l": 148.4301, "t": 521.36493, "r": 201.65666, "b": 529.87567, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "CURRENT USER = JOE", "bbox": {"l": 148.4301, "t": 533.30984, "r": 234.57686999999999, "b": 541.82059, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "USER = ALICE", "bbox": {"l": 138.476, "t": 566.15842, "r": 191.70256, "b": 574.66917, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "CURRENT USER = ALICE", "bbox": {"l": 138.476, "t": 578.10333, "r": 232.56117, "b": 586.61409, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 344.5751037597656, "t": 754.7044067382812, "r": 523.60162, "b": 764.0689086914062, "coord_origin": "TOPLEFT"}, "confidence": 0.9557498693466187, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 536.0416870117188, "t": 754.2877197265625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9130511283874512, "cells": [{"id": 1, "text": "19", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "caption", "bbox": {"l": 135.82176208496094, "t": 70.68284606933594, "r": 412.20758, "b": 80.81541442871094, "coord_origin": "TOPLEFT"}, "confidence": 0.7875164747238159, "cells": [{"id": 2, "text": "Table 3-1 summarizes these special registers and their values.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 412.20758, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.8, "t": 92.7220458984375, "r": 372.7710876464844, "b": 101.9398422241211, "coord_origin": "TOPLEFT"}, "confidence": 0.9253708720207214, "cells": [{"id": 3, "text": "Table 3-1 Special registers and their corresponding values", "bbox": {"l": 136.8, "t": 93.49805000000003, "r": 372.60364, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 136.3730926513672, "t": 213.3656463623047, "r": 538.4939, "b": 235.70154000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9466656446456909, "cells": [{"id": 4, "text": "Figure 3-5 shows the difference in the special register values when an adopted authority is ", "bbox": {"l": 136.8, "t": 214.48870999999997, "r": 538.4939, "b": 223.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "used:", "bbox": {"l": 136.8, "t": 226.48852999999997, "r": 161.20995, "b": 235.70154000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 135.5663299560547, "t": 242.545654296875, "r": 411.36139, "b": 252.77870178222656, "coord_origin": "TOPLEFT"}, "confidence": 0.9504424333572388, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 243.67749000000003, "r": 141.78, "b": 252.45227, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "A user connects to the server using the user profile ALICE.", "bbox": {"l": 151.20016, "t": 243.52808000000005, "r": 411.36139, "b": 252.74108999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.5452880859375, "t": 259.2925720214844, "r": 453.2580899999999, "b": 269.72089000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9445974230766296, "cells": [{"id": 8, "text": "GLYPH", "bbox": {"l": 136.8, "t": 260.65729, "r": 141.78, "b": 269.43206999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "USER and CURRENT USER initially have the same value of ALICE.", "bbox": {"l": 151.20016, "t": 260.50787, "r": 453.2580899999999, "b": 269.72089000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.3970947265625, "t": 276.51788330078125, "r": 541.44983, "b": 298.98980712890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9742953777313232, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.8, "t": 277.63707999999997, "r": 141.78, "b": 286.41187, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ALICE calls an SQL procedure that is named proc1, which is owned by user profile JOE ", "bbox": {"l": 151.20016, "t": 277.48767, "r": 541.44983, "b": 286.70068, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "and was created to adopt JOE\u2019s authority when it is called.", "bbox": {"l": 151.20016, "t": 289.4875200000001, "r": 409.82953, "b": 298.7005, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.5677947998047, "t": 305.81854248046875, "r": 547.21674, "b": 340.5078125, "coord_origin": "TOPLEFT"}, "confidence": 0.981132447719574, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 306.67647999999997, "r": 141.78, "b": 315.45126000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "While the procedure is running, the special register USER still contains the value of ALICE ", "bbox": {"l": 151.20016, "t": 306.5271, "r": 547.21674, "b": 315.74008, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "because it excludes any adopted authority. The special register CURRENT USER ", "bbox": {"l": 151.20117, "t": 318.52691999999996, "r": 514.32971, "b": 327.7399, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "contains the value of JOE because it includes any adopted authority.", "bbox": {"l": 151.20117, "t": 330.52673, "r": 453.3249200000001, "b": 339.73972, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.56973266601562, "t": 346.4946594238281, "r": 547.35406, "b": 368.9356384277344, "coord_origin": "TOPLEFT"}, "confidence": 0.9748278260231018, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.80101, "t": 347.65591, "r": 141.78101, "b": 356.43069, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "When proc1 ends, the session reverts to its original state with both USER and CURRENT ", "bbox": {"l": 151.20117, "t": 347.50653, "r": 547.35406, "b": 356.71950999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "USER having the value of ALICE.", "bbox": {"l": 151.20117, "t": 359.50635, "r": 299.57532, "b": 368.71933000000007, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "caption", "bbox": {"l": 136.22442626953125, "t": 596.1806030273438, "r": 342.349853515625, "b": 605.74462890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9274528622627258, "cells": [{"id": 20, "text": "Figure 3-5 Special registers and adopted authority", "bbox": {"l": 136.8, "t": 596.7179, "r": 341.25662, "b": 605.04291, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "section_header", "bbox": {"l": 64.079833984375, "t": 624.3213500976562, "r": 247.02536, "b": 637.8447875976562, "coord_origin": "TOPLEFT"}, "confidence": 0.9659212827682495, "cells": [{"id": 21, "text": "3.2.2", "bbox": {"l": 64.800003, "t": 625.55472, "r": 94.20356, "b": 637.54272, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Built-in global variables", "bbox": {"l": 97.879005, "t": 625.55472, "r": 247.02536, "b": 637.54272, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 136.3346710205078, "t": 650.7590942382812, "r": 518.00116, "b": 672.92153, "coord_origin": "TOPLEFT"}, "confidence": 0.9696776866912842, "cells": [{"id": 23, "text": "Built-in global variables are provided with the database manager and are used in SQL ", "bbox": {"l": 136.8, "t": 651.70872, "r": 518.00116, "b": 660.92172, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "statements to retrieve scalar values that are associated with the variables.", "bbox": {"l": 136.8, "t": 663.70853, "r": 462.81759999999997, "b": 672.92153, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 136.17970275878906, "t": 684.6286010742188, "r": 532.3385, "b": 719.0675659179688, "coord_origin": "TOPLEFT"}, "confidence": 0.9783982038497925, "cells": [{"id": 25, "text": "IBM DB2 for i supports nine different built-in global variables that are read only and ", "bbox": {"l": 136.8, "t": 685.7281, "r": 504.44669, "b": 694.941101, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "maintained by the system. These global variables can be used to identify attributes of the ", "bbox": {"l": 136.8, "t": 697.727905, "r": 532.3385, "b": 706.94091, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "database connection and used as part of the RCAC logic.", "bbox": {"l": 136.8, "t": 709.727715, "r": 391.38257, "b": 718.94072, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "table", "bbox": {"l": 134.54624938964844, "t": 103.41889190673828, "r": 542.0460815429688, "b": 204.2716064453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9731298685073853, "cells": [{"id": 28, "text": "Special register", "bbox": {"l": 142.8, "t": 110.53801999999985, "r": 209.67091, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Corresponding value", "bbox": {"l": 230.18912000000003, "t": 110.53801999999985, "r": 319.93527, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "USER or", "bbox": {"l": 142.80002, "t": 129.49834999999996, "r": 178.26361, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "SESSION_USER", "bbox": {"l": 142.80002, "t": 140.53864, "r": 212.70122, "b": 148.86359000000004, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "The effective user of the thread excluding adopted authority.", "bbox": {"l": 230.21973000000003, "t": 129.49834999999996, "r": 467.99069000000003, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "CURRENT_USER", "bbox": {"l": 142.80003, "t": 159.55835000000002, "r": 216.63962999999998, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "The effective user of the thread including adopted authority. When no adopted ", "bbox": {"l": 230.19814, "t": 159.55835000000002, "r": 535.65082, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "authority is present, this has the same value as USER.", "bbox": {"l": 230.22061, "t": 170.53832999999997, "r": 447.36533, "b": 178.86328000000003, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "SYSTEM_USER", "bbox": {"l": 142.8009, "t": 189.55804, "r": 209.7357, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "The authorization ID that initiated the connection.", "bbox": {"l": 230.2449, "t": 189.55804, "r": 425.64569, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "picture", "bbox": {"l": 135.64837646484375, "t": 384.1737060546875, "r": 301.2367248535156, "b": 594.7566528320312, "coord_origin": "TOPLEFT"}, "confidence": 0.7221464514732361, "cells": [{"id": 39, "text": "Signed on as ALICE", "bbox": {"l": 140.7323, "t": 386.98453, "r": 216.40009, "b": 395.49527, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "USER = ALICE", "bbox": {"l": 138.476, "t": 410.87441999999993, "r": 191.70256, "b": 419.38516, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "CURRENT USER = ALICE", "bbox": {"l": 138.476, "t": 422.81934, "r": 232.56117, "b": 431.33008, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CALL proc1", "bbox": {"l": 138.476, "t": 446.70923000000005, "r": 183.26944, "b": 455.21997, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "P1", "bbox": {"l": 148.4301, "t": 473.58524, "r": 184.17328, "b": 482.09598, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Proc1:", "bbox": {"l": 148.4301, "t": 473.58524, "r": 174.05859, "b": 482.09598, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Owner = JOE", "bbox": {"l": 157.52185, "t": 485.53015, "r": 209.103, "b": 494.04089, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "SET OPTION USRPRF=*OWNER", "bbox": {"l": 157.52185, "t": 497.47507, "r": 281.68927, "b": 505.98581, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "USER = ALICE", "bbox": {"l": 148.4301, "t": 521.36493, "r": 201.65666, "b": 529.87567, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "CURRENT USER = JOE", "bbox": {"l": 148.4301, "t": 533.30984, "r": 234.57686999999999, "b": 541.82059, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "USER = ALICE", "bbox": {"l": 138.476, "t": 566.15842, "r": 191.70256, "b": 574.66917, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "CURRENT USER = ALICE", "bbox": {"l": 138.476, "t": 578.10333, "r": 232.56117, "b": 586.61409, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {"14": {"label": "table", "id": 14, "page_no": 10, "cluster": {"id": 14, "label": "table", "bbox": {"l": 134.54624938964844, "t": 103.41889190673828, "r": 542.0460815429688, "b": 204.2716064453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9731298685073853, "cells": [{"id": 28, "text": "Special register", "bbox": {"l": 142.8, "t": 110.53801999999985, "r": 209.67091, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Corresponding value", "bbox": {"l": 230.18912000000003, "t": 110.53801999999985, "r": 319.93527, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "USER or", "bbox": {"l": 142.80002, "t": 129.49834999999996, "r": 178.26361, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "SESSION_USER", "bbox": {"l": 142.80002, "t": 140.53864, "r": 212.70122, "b": 148.86359000000004, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "The effective user of the thread excluding adopted authority.", "bbox": {"l": 230.21973000000003, "t": 129.49834999999996, "r": 467.99069000000003, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "CURRENT_USER", "bbox": {"l": 142.80003, "t": 159.55835000000002, "r": 216.63962999999998, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "The effective user of the thread including adopted authority. When no adopted ", "bbox": {"l": 230.19814, "t": 159.55835000000002, "r": 535.65082, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "authority is present, this has the same value as USER.", "bbox": {"l": 230.22061, "t": 170.53832999999997, "r": 447.36533, "b": 178.86328000000003, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "SYSTEM_USER", "bbox": {"l": 142.8009, "t": 189.55804, "r": 209.7357, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "The authorization ID that initiated the connection.", "bbox": {"l": 230.2449, "t": 189.55804, "r": 425.64569, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl"], "num_rows": 4, "num_cols": 2, "table_cells": [{"bbox": {"l": 142.8, "t": 110.53801999999985, "r": 209.67091, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Special register", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 230.18912000000003, "t": 110.53801999999985, "r": 319.93527, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Corresponding value", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 142.80002, "t": 129.49834999999996, "r": 212.70122, "b": 148.86359000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USER or SESSION_USER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 230.21973000000003, "t": 129.49834999999996, "r": 467.99069000000003, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "The effective user of the thread excluding adopted authority.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.80003, "t": 159.55835000000002, "r": 216.63962999999998, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CURRENT_USER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 230.19814, "t": 159.55835000000002, "r": 535.65082, "b": 178.86328000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "The effective user of the thread including adopted authority. When no adopted authority is present, this has the same value as USER.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8009, "t": 189.55804, "r": 209.7357, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "SYSTEM_USER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 230.2449, "t": 189.55804, "r": 425.64569, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "The authorization ID that initiated the connection.", "column_header": false, "row_header": false, "row_section": false}]}}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 10, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.5751037597656, "t": 754.7044067382812, "r": 523.60162, "b": 764.0689086914062, "coord_origin": "TOPLEFT"}, "confidence": 0.9557498693466187, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 10, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 536.0416870117188, "t": 754.2877197265625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9130511283874512, "cells": [{"id": 1, "text": "19", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "19"}, {"label": "caption", "id": 2, "page_no": 10, "cluster": {"id": 2, "label": "caption", "bbox": {"l": 135.82176208496094, "t": 70.68284606933594, "r": 412.20758, "b": 80.81541442871094, "coord_origin": "TOPLEFT"}, "confidence": 0.7875164747238159, "cells": [{"id": 2, "text": "Table 3-1 summarizes these special registers and their values.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 412.20758, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}]}, "text": "Table 3-1 summarizes these special registers and their values."}, {"label": "caption", "id": 3, "page_no": 10, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.8, "t": 92.7220458984375, "r": 372.7710876464844, "b": 101.9398422241211, "coord_origin": "TOPLEFT"}, "confidence": 0.9253708720207214, "cells": [{"id": 3, "text": "Table 3-1 Special registers and their corresponding values", "bbox": {"l": 136.8, "t": 93.49805000000003, "r": 372.60364, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}}]}, "text": "Table 3-1 Special registers and their corresponding values"}, {"label": "text", "id": 4, "page_no": 10, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.3730926513672, "t": 213.3656463623047, "r": 538.4939, "b": 235.70154000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9466656446456909, "cells": [{"id": 4, "text": "Figure 3-5 shows the difference in the special register values when an adopted authority is ", "bbox": {"l": 136.8, "t": 214.48870999999997, "r": 538.4939, "b": 223.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "used:", "bbox": {"l": 136.8, "t": 226.48852999999997, "r": 161.20995, "b": 235.70154000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-5 shows the difference in the special register values when an adopted authority is used:"}, {"label": "list_item", "id": 5, "page_no": 10, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.5663299560547, "t": 242.545654296875, "r": 411.36139, "b": 252.77870178222656, "coord_origin": "TOPLEFT"}, "confidence": 0.9504424333572388, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 243.67749000000003, "r": 141.78, "b": 252.45227, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "A user connects to the server using the user profile ALICE.", "bbox": {"l": 151.20016, "t": 243.52808000000005, "r": 411.36139, "b": 252.74108999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH A user connects to the server using the user profile ALICE."}, {"label": "list_item", "id": 6, "page_no": 10, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.5452880859375, "t": 259.2925720214844, "r": 453.2580899999999, "b": 269.72089000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9445974230766296, "cells": [{"id": 8, "text": "GLYPH", "bbox": {"l": 136.8, "t": 260.65729, "r": 141.78, "b": 269.43206999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "USER and CURRENT USER initially have the same value of ALICE.", "bbox": {"l": 151.20016, "t": 260.50787, "r": 453.2580899999999, "b": 269.72089000000005, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH USER and CURRENT USER initially have the same value of ALICE."}, {"label": "list_item", "id": 7, "page_no": 10, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.3970947265625, "t": 276.51788330078125, "r": 541.44983, "b": 298.98980712890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9742953777313232, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.8, "t": 277.63707999999997, "r": 141.78, "b": 286.41187, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ALICE calls an SQL procedure that is named proc1, which is owned by user profile JOE ", "bbox": {"l": 151.20016, "t": 277.48767, "r": 541.44983, "b": 286.70068, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "and was created to adopt JOE\u2019s authority when it is called.", "bbox": {"l": 151.20016, "t": 289.4875200000001, "r": 409.82953, "b": 298.7005, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH ALICE calls an SQL procedure that is named proc1, which is owned by user profile JOE and was created to adopt JOE\u2019s authority when it is called."}, {"label": "list_item", "id": 8, "page_no": 10, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.5677947998047, "t": 305.81854248046875, "r": 547.21674, "b": 340.5078125, "coord_origin": "TOPLEFT"}, "confidence": 0.981132447719574, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 306.67647999999997, "r": 141.78, "b": 315.45126000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "While the procedure is running, the special register USER still contains the value of ALICE ", "bbox": {"l": 151.20016, "t": 306.5271, "r": 547.21674, "b": 315.74008, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "because it excludes any adopted authority. The special register CURRENT USER ", "bbox": {"l": 151.20117, "t": 318.52691999999996, "r": 514.32971, "b": 327.7399, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "contains the value of JOE because it includes any adopted authority.", "bbox": {"l": 151.20117, "t": 330.52673, "r": 453.3249200000001, "b": 339.73972, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH While the procedure is running, the special register USER still contains the value of ALICE because it excludes any adopted authority. The special register CURRENT USER contains the value of JOE because it includes any adopted authority."}, {"label": "list_item", "id": 9, "page_no": 10, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.56973266601562, "t": 346.4946594238281, "r": 547.35406, "b": 368.9356384277344, "coord_origin": "TOPLEFT"}, "confidence": 0.9748278260231018, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.80101, "t": 347.65591, "r": 141.78101, "b": 356.43069, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "When proc1 ends, the session reverts to its original state with both USER and CURRENT ", "bbox": {"l": 151.20117, "t": 347.50653, "r": 547.35406, "b": 356.71950999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "USER having the value of ALICE.", "bbox": {"l": 151.20117, "t": 359.50635, "r": 299.57532, "b": 368.71933000000007, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH When proc1 ends, the session reverts to its original state with both USER and CURRENT USER having the value of ALICE."}, {"label": "caption", "id": 10, "page_no": 10, "cluster": {"id": 10, "label": "caption", "bbox": {"l": 136.22442626953125, "t": 596.1806030273438, "r": 342.349853515625, "b": 605.74462890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9274528622627258, "cells": [{"id": 20, "text": "Figure 3-5 Special registers and adopted authority", "bbox": {"l": 136.8, "t": 596.7179, "r": 341.25662, "b": 605.04291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-5 Special registers and adopted authority"}, {"label": "section_header", "id": 11, "page_no": 10, "cluster": {"id": 11, "label": "section_header", "bbox": {"l": 64.079833984375, "t": 624.3213500976562, "r": 247.02536, "b": 637.8447875976562, "coord_origin": "TOPLEFT"}, "confidence": 0.9659212827682495, "cells": [{"id": 21, "text": "3.2.2", "bbox": {"l": 64.800003, "t": 625.55472, "r": 94.20356, "b": 637.54272, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Built-in global variables", "bbox": {"l": 97.879005, "t": 625.55472, "r": 247.02536, "b": 637.54272, "coord_origin": "TOPLEFT"}}]}, "text": "3.2.2 Built-in global variables"}, {"label": "text", "id": 12, "page_no": 10, "cluster": {"id": 12, "label": "text", "bbox": {"l": 136.3346710205078, "t": 650.7590942382812, "r": 518.00116, "b": 672.92153, "coord_origin": "TOPLEFT"}, "confidence": 0.9696776866912842, "cells": [{"id": 23, "text": "Built-in global variables are provided with the database manager and are used in SQL ", "bbox": {"l": 136.8, "t": 651.70872, "r": 518.00116, "b": 660.92172, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "statements to retrieve scalar values that are associated with the variables.", "bbox": {"l": 136.8, "t": 663.70853, "r": 462.81759999999997, "b": 672.92153, "coord_origin": "TOPLEFT"}}]}, "text": "Built-in global variables are provided with the database manager and are used in SQL statements to retrieve scalar values that are associated with the variables."}, {"label": "text", "id": 13, "page_no": 10, "cluster": {"id": 13, "label": "text", "bbox": {"l": 136.17970275878906, "t": 684.6286010742188, "r": 532.3385, "b": 719.0675659179688, "coord_origin": "TOPLEFT"}, "confidence": 0.9783982038497925, "cells": [{"id": 25, "text": "IBM DB2 for i supports nine different built-in global variables that are read only and ", "bbox": {"l": 136.8, "t": 685.7281, "r": 504.44669, "b": 694.941101, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "maintained by the system. These global variables can be used to identify attributes of the ", "bbox": {"l": 136.8, "t": 697.727905, "r": 532.3385, "b": 706.94091, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "database connection and used as part of the RCAC logic.", "bbox": {"l": 136.8, "t": 709.727715, "r": 391.38257, "b": 718.94072, "coord_origin": "TOPLEFT"}}]}, "text": "IBM DB2 for i supports nine different built-in global variables that are read only and maintained by the system. These global variables can be used to identify attributes of the database connection and used as part of the RCAC logic."}, {"label": "table", "id": 14, "page_no": 10, "cluster": {"id": 14, "label": "table", "bbox": {"l": 134.54624938964844, "t": 103.41889190673828, "r": 542.0460815429688, "b": 204.2716064453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9731298685073853, "cells": [{"id": 28, "text": "Special register", "bbox": {"l": 142.8, "t": 110.53801999999985, "r": 209.67091, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Corresponding value", "bbox": {"l": 230.18912000000003, "t": 110.53801999999985, "r": 319.93527, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "USER or", "bbox": {"l": 142.80002, "t": 129.49834999999996, "r": 178.26361, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "SESSION_USER", "bbox": {"l": 142.80002, "t": 140.53864, "r": 212.70122, "b": 148.86359000000004, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "The effective user of the thread excluding adopted authority.", "bbox": {"l": 230.21973000000003, "t": 129.49834999999996, "r": 467.99069000000003, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "CURRENT_USER", "bbox": {"l": 142.80003, "t": 159.55835000000002, "r": 216.63962999999998, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "The effective user of the thread including adopted authority. When no adopted ", "bbox": {"l": 230.19814, "t": 159.55835000000002, "r": 535.65082, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "authority is present, this has the same value as USER.", "bbox": {"l": 230.22061, "t": 170.53832999999997, "r": 447.36533, "b": 178.86328000000003, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "SYSTEM_USER", "bbox": {"l": 142.8009, "t": 189.55804, "r": 209.7357, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "The authorization ID that initiated the connection.", "bbox": {"l": 230.2449, "t": 189.55804, "r": 425.64569, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl"], "num_rows": 4, "num_cols": 2, "table_cells": [{"bbox": {"l": 142.8, "t": 110.53801999999985, "r": 209.67091, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Special register", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 230.18912000000003, "t": 110.53801999999985, "r": 319.93527, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Corresponding value", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 142.80002, "t": 129.49834999999996, "r": 212.70122, "b": 148.86359000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USER or SESSION_USER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 230.21973000000003, "t": 129.49834999999996, "r": 467.99069000000003, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "The effective user of the thread excluding adopted authority.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.80003, "t": 159.55835000000002, "r": 216.63962999999998, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CURRENT_USER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 230.19814, "t": 159.55835000000002, "r": 535.65082, "b": 178.86328000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "The effective user of the thread including adopted authority. When no adopted authority is present, this has the same value as USER.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8009, "t": 189.55804, "r": 209.7357, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "SYSTEM_USER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 230.2449, "t": 189.55804, "r": 425.64569, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "The authorization ID that initiated the connection.", "column_header": false, "row_header": false, "row_section": false}]}, {"label": "picture", "id": 15, "page_no": 10, "cluster": {"id": 15, "label": "picture", "bbox": {"l": 135.64837646484375, "t": 384.1737060546875, "r": 301.2367248535156, "b": 594.7566528320312, "coord_origin": "TOPLEFT"}, "confidence": 0.7221464514732361, "cells": [{"id": 39, "text": "Signed on as ALICE", "bbox": {"l": 140.7323, "t": 386.98453, "r": 216.40009, "b": 395.49527, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "USER = ALICE", "bbox": {"l": 138.476, "t": 410.87441999999993, "r": 191.70256, "b": 419.38516, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "CURRENT USER = ALICE", "bbox": {"l": 138.476, "t": 422.81934, "r": 232.56117, "b": 431.33008, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CALL proc1", "bbox": {"l": 138.476, "t": 446.70923000000005, "r": 183.26944, "b": 455.21997, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "P1", "bbox": {"l": 148.4301, "t": 473.58524, "r": 184.17328, "b": 482.09598, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Proc1:", "bbox": {"l": 148.4301, "t": 473.58524, "r": 174.05859, "b": 482.09598, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Owner = JOE", "bbox": {"l": 157.52185, "t": 485.53015, "r": 209.103, "b": 494.04089, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "SET OPTION USRPRF=*OWNER", "bbox": {"l": 157.52185, "t": 497.47507, "r": 281.68927, "b": 505.98581, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "USER = ALICE", "bbox": {"l": 148.4301, "t": 521.36493, "r": 201.65666, "b": 529.87567, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "CURRENT USER = JOE", "bbox": {"l": 148.4301, "t": 533.30984, "r": 234.57686999999999, "b": 541.82059, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "USER = ALICE", "bbox": {"l": 138.476, "t": 566.15842, "r": 191.70256, "b": 574.66917, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "CURRENT USER = ALICE", "bbox": {"l": 138.476, "t": 578.10333, "r": 232.56117, "b": 586.61409, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "caption", "id": 2, "page_no": 10, "cluster": {"id": 2, "label": "caption", "bbox": {"l": 135.82176208496094, "t": 70.68284606933594, "r": 412.20758, "b": 80.81541442871094, "coord_origin": "TOPLEFT"}, "confidence": 0.7875164747238159, "cells": [{"id": 2, "text": "Table 3-1 summarizes these special registers and their values.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 412.20758, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}]}, "text": "Table 3-1 summarizes these special registers and their values."}, {"label": "caption", "id": 3, "page_no": 10, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.8, "t": 92.7220458984375, "r": 372.7710876464844, "b": 101.9398422241211, "coord_origin": "TOPLEFT"}, "confidence": 0.9253708720207214, "cells": [{"id": 3, "text": "Table 3-1 Special registers and their corresponding values", "bbox": {"l": 136.8, "t": 93.49805000000003, "r": 372.60364, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}}]}, "text": "Table 3-1 Special registers and their corresponding values"}, {"label": "text", "id": 4, "page_no": 10, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.3730926513672, "t": 213.3656463623047, "r": 538.4939, "b": 235.70154000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9466656446456909, "cells": [{"id": 4, "text": "Figure 3-5 shows the difference in the special register values when an adopted authority is ", "bbox": {"l": 136.8, "t": 214.48870999999997, "r": 538.4939, "b": 223.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "used:", "bbox": {"l": 136.8, "t": 226.48852999999997, "r": 161.20995, "b": 235.70154000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-5 shows the difference in the special register values when an adopted authority is used:"}, {"label": "list_item", "id": 5, "page_no": 10, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.5663299560547, "t": 242.545654296875, "r": 411.36139, "b": 252.77870178222656, "coord_origin": "TOPLEFT"}, "confidence": 0.9504424333572388, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 243.67749000000003, "r": 141.78, "b": 252.45227, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "A user connects to the server using the user profile ALICE.", "bbox": {"l": 151.20016, "t": 243.52808000000005, "r": 411.36139, "b": 252.74108999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH A user connects to the server using the user profile ALICE."}, {"label": "list_item", "id": 6, "page_no": 10, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.5452880859375, "t": 259.2925720214844, "r": 453.2580899999999, "b": 269.72089000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9445974230766296, "cells": [{"id": 8, "text": "GLYPH", "bbox": {"l": 136.8, "t": 260.65729, "r": 141.78, "b": 269.43206999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "USER and CURRENT USER initially have the same value of ALICE.", "bbox": {"l": 151.20016, "t": 260.50787, "r": 453.2580899999999, "b": 269.72089000000005, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH USER and CURRENT USER initially have the same value of ALICE."}, {"label": "list_item", "id": 7, "page_no": 10, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.3970947265625, "t": 276.51788330078125, "r": 541.44983, "b": 298.98980712890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9742953777313232, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.8, "t": 277.63707999999997, "r": 141.78, "b": 286.41187, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ALICE calls an SQL procedure that is named proc1, which is owned by user profile JOE ", "bbox": {"l": 151.20016, "t": 277.48767, "r": 541.44983, "b": 286.70068, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "and was created to adopt JOE\u2019s authority when it is called.", "bbox": {"l": 151.20016, "t": 289.4875200000001, "r": 409.82953, "b": 298.7005, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH ALICE calls an SQL procedure that is named proc1, which is owned by user profile JOE and was created to adopt JOE\u2019s authority when it is called."}, {"label": "list_item", "id": 8, "page_no": 10, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.5677947998047, "t": 305.81854248046875, "r": 547.21674, "b": 340.5078125, "coord_origin": "TOPLEFT"}, "confidence": 0.981132447719574, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 306.67647999999997, "r": 141.78, "b": 315.45126000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "While the procedure is running, the special register USER still contains the value of ALICE ", "bbox": {"l": 151.20016, "t": 306.5271, "r": 547.21674, "b": 315.74008, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "because it excludes any adopted authority. The special register CURRENT USER ", "bbox": {"l": 151.20117, "t": 318.52691999999996, "r": 514.32971, "b": 327.7399, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "contains the value of JOE because it includes any adopted authority.", "bbox": {"l": 151.20117, "t": 330.52673, "r": 453.3249200000001, "b": 339.73972, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH While the procedure is running, the special register USER still contains the value of ALICE because it excludes any adopted authority. The special register CURRENT USER contains the value of JOE because it includes any adopted authority."}, {"label": "list_item", "id": 9, "page_no": 10, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.56973266601562, "t": 346.4946594238281, "r": 547.35406, "b": 368.9356384277344, "coord_origin": "TOPLEFT"}, "confidence": 0.9748278260231018, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.80101, "t": 347.65591, "r": 141.78101, "b": 356.43069, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "When proc1 ends, the session reverts to its original state with both USER and CURRENT ", "bbox": {"l": 151.20117, "t": 347.50653, "r": 547.35406, "b": 356.71950999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "USER having the value of ALICE.", "bbox": {"l": 151.20117, "t": 359.50635, "r": 299.57532, "b": 368.71933000000007, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH When proc1 ends, the session reverts to its original state with both USER and CURRENT USER having the value of ALICE."}, {"label": "caption", "id": 10, "page_no": 10, "cluster": {"id": 10, "label": "caption", "bbox": {"l": 136.22442626953125, "t": 596.1806030273438, "r": 342.349853515625, "b": 605.74462890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9274528622627258, "cells": [{"id": 20, "text": "Figure 3-5 Special registers and adopted authority", "bbox": {"l": 136.8, "t": 596.7179, "r": 341.25662, "b": 605.04291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-5 Special registers and adopted authority"}, {"label": "section_header", "id": 11, "page_no": 10, "cluster": {"id": 11, "label": "section_header", "bbox": {"l": 64.079833984375, "t": 624.3213500976562, "r": 247.02536, "b": 637.8447875976562, "coord_origin": "TOPLEFT"}, "confidence": 0.9659212827682495, "cells": [{"id": 21, "text": "3.2.2", "bbox": {"l": 64.800003, "t": 625.55472, "r": 94.20356, "b": 637.54272, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Built-in global variables", "bbox": {"l": 97.879005, "t": 625.55472, "r": 247.02536, "b": 637.54272, "coord_origin": "TOPLEFT"}}]}, "text": "3.2.2 Built-in global variables"}, {"label": "text", "id": 12, "page_no": 10, "cluster": {"id": 12, "label": "text", "bbox": {"l": 136.3346710205078, "t": 650.7590942382812, "r": 518.00116, "b": 672.92153, "coord_origin": "TOPLEFT"}, "confidence": 0.9696776866912842, "cells": [{"id": 23, "text": "Built-in global variables are provided with the database manager and are used in SQL ", "bbox": {"l": 136.8, "t": 651.70872, "r": 518.00116, "b": 660.92172, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "statements to retrieve scalar values that are associated with the variables.", "bbox": {"l": 136.8, "t": 663.70853, "r": 462.81759999999997, "b": 672.92153, "coord_origin": "TOPLEFT"}}]}, "text": "Built-in global variables are provided with the database manager and are used in SQL statements to retrieve scalar values that are associated with the variables."}, {"label": "text", "id": 13, "page_no": 10, "cluster": {"id": 13, "label": "text", "bbox": {"l": 136.17970275878906, "t": 684.6286010742188, "r": 532.3385, "b": 719.0675659179688, "coord_origin": "TOPLEFT"}, "confidence": 0.9783982038497925, "cells": [{"id": 25, "text": "IBM DB2 for i supports nine different built-in global variables that are read only and ", "bbox": {"l": 136.8, "t": 685.7281, "r": 504.44669, "b": 694.941101, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "maintained by the system. These global variables can be used to identify attributes of the ", "bbox": {"l": 136.8, "t": 697.727905, "r": 532.3385, "b": 706.94091, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "database connection and used as part of the RCAC logic.", "bbox": {"l": 136.8, "t": 709.727715, "r": 391.38257, "b": 718.94072, "coord_origin": "TOPLEFT"}}]}, "text": "IBM DB2 for i supports nine different built-in global variables that are read only and maintained by the system. These global variables can be used to identify attributes of the database connection and used as part of the RCAC logic."}, {"label": "table", "id": 14, "page_no": 10, "cluster": {"id": 14, "label": "table", "bbox": {"l": 134.54624938964844, "t": 103.41889190673828, "r": 542.0460815429688, "b": 204.2716064453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9731298685073853, "cells": [{"id": 28, "text": "Special register", "bbox": {"l": 142.8, "t": 110.53801999999985, "r": 209.67091, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Corresponding value", "bbox": {"l": 230.18912000000003, "t": 110.53801999999985, "r": 319.93527, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "USER or", "bbox": {"l": 142.80002, "t": 129.49834999999996, "r": 178.26361, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "SESSION_USER", "bbox": {"l": 142.80002, "t": 140.53864, "r": 212.70122, "b": 148.86359000000004, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "The effective user of the thread excluding adopted authority.", "bbox": {"l": 230.21973000000003, "t": 129.49834999999996, "r": 467.99069000000003, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "CURRENT_USER", "bbox": {"l": 142.80003, "t": 159.55835000000002, "r": 216.63962999999998, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "The effective user of the thread including adopted authority. When no adopted ", "bbox": {"l": 230.19814, "t": 159.55835000000002, "r": 535.65082, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "authority is present, this has the same value as USER.", "bbox": {"l": 230.22061, "t": 170.53832999999997, "r": 447.36533, "b": 178.86328000000003, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "SYSTEM_USER", "bbox": {"l": 142.8009, "t": 189.55804, "r": 209.7357, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "The authorization ID that initiated the connection.", "bbox": {"l": 230.2449, "t": 189.55804, "r": 425.64569, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl"], "num_rows": 4, "num_cols": 2, "table_cells": [{"bbox": {"l": 142.8, "t": 110.53801999999985, "r": 209.67091, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Special register", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 230.18912000000003, "t": 110.53801999999985, "r": 319.93527, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Corresponding value", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 142.80002, "t": 129.49834999999996, "r": 212.70122, "b": 148.86359000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USER or SESSION_USER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 230.21973000000003, "t": 129.49834999999996, "r": 467.99069000000003, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "The effective user of the thread excluding adopted authority.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.80003, "t": 159.55835000000002, "r": 216.63962999999998, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CURRENT_USER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 230.19814, "t": 159.55835000000002, "r": 535.65082, "b": 178.86328000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "The effective user of the thread including adopted authority. When no adopted authority is present, this has the same value as USER.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8009, "t": 189.55804, "r": 209.7357, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "SYSTEM_USER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 230.2449, "t": 189.55804, "r": 425.64569, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "The authorization ID that initiated the connection.", "column_header": false, "row_header": false, "row_section": false}]}, {"label": "picture", "id": 15, "page_no": 10, "cluster": {"id": 15, "label": "picture", "bbox": {"l": 135.64837646484375, "t": 384.1737060546875, "r": 301.2367248535156, "b": 594.7566528320312, "coord_origin": "TOPLEFT"}, "confidence": 0.7221464514732361, "cells": [{"id": 39, "text": "Signed on as ALICE", "bbox": {"l": 140.7323, "t": 386.98453, "r": 216.40009, "b": 395.49527, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "USER = ALICE", "bbox": {"l": 138.476, "t": 410.87441999999993, "r": 191.70256, "b": 419.38516, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "CURRENT USER = ALICE", "bbox": {"l": 138.476, "t": 422.81934, "r": 232.56117, "b": 431.33008, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CALL proc1", "bbox": {"l": 138.476, "t": 446.70923000000005, "r": 183.26944, "b": 455.21997, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "P1", "bbox": {"l": 148.4301, "t": 473.58524, "r": 184.17328, "b": 482.09598, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Proc1:", "bbox": {"l": 148.4301, "t": 473.58524, "r": 174.05859, "b": 482.09598, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Owner = JOE", "bbox": {"l": 157.52185, "t": 485.53015, "r": 209.103, "b": 494.04089, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "SET OPTION USRPRF=*OWNER", "bbox": {"l": 157.52185, "t": 497.47507, "r": 281.68927, "b": 505.98581, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "USER = ALICE", "bbox": {"l": 148.4301, "t": 521.36493, "r": 201.65666, "b": 529.87567, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "CURRENT USER = JOE", "bbox": {"l": 148.4301, "t": 533.30984, "r": 234.57686999999999, "b": 541.82059, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "USER = ALICE", "bbox": {"l": 138.476, "t": 566.15842, "r": 191.70256, "b": 574.66917, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "CURRENT USER = ALICE", "bbox": {"l": 138.476, "t": 578.10333, "r": 232.56117, "b": 586.61409, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 10, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.5751037597656, "t": 754.7044067382812, "r": 523.60162, "b": 764.0689086914062, "coord_origin": "TOPLEFT"}, "confidence": 0.9557498693466187, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 10, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 536.0416870117188, "t": 754.2877197265625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9130511283874512, "cells": [{"id": 1, "text": "19", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "19"}]}}, {"page_no": 11, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "20 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Table 3-2 lists the nine built-in global variables.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 342.54773, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Table 3-2 Built-in global variables", "bbox": {"l": 64.800003, "t": 93.49805000000003, "r": 201.18147, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "3.3", "bbox": {"l": 64.800003, "t": 322.20071, "r": 87.318192, "b": 336.96371000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "VERIFY_GROUP_FOR_USER function", "bbox": {"l": 91.821815, "t": 322.20071, "r": 384.36389, "b": 336.96371000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "The VERIFY_GROUP_FOR_USER function was added in IBM i 7.2. Although it is primarily ", "bbox": {"l": 136.8, "t": 354.52872, "r": 542.83539, "b": 363.7417, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "intended for use with RCAC permissions and masks, it can be used in other SQL statements. ", "bbox": {"l": 136.8, "t": 366.52853, "r": 547.14783, "b": 375.74152, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "The first parameter must be one of these three special registers: SESSION_USER, USER, or ", "bbox": {"l": 136.8, "t": 378.52835, "r": 547.15106, "b": 387.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CURRENT_USER. The second and subsequent parameters are a list of user or group ", "bbox": {"l": 136.80002, "t": 390.52817, "r": 520.62958, "b": 399.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "profiles. Each of these values must be 1 - 10 characters in length. These values are not ", "bbox": {"l": 136.80002, "t": 402.52798, "r": 524.88824, "b": 411.74097, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "validated for their existence, which means that you can specify the names of user profiles that ", "bbox": {"l": 136.80002, "t": 414.5278, "r": 547.23474, "b": 423.7407799999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "do not exist without receiving any kind of error.", "bbox": {"l": 136.80002, "t": 426.52762, "r": 342.04672, "b": 435.74060000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "If a special register value is in the list of user profiles or it is a member of a group profile ", "bbox": {"l": 136.80002, "t": 448.48743, "r": 525.1474, "b": 457.70041, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "included in the list, the function returns a long integer value of 1. Otherwise, it returns a value ", "bbox": {"l": 136.80002, "t": 460.48724, "r": 547.25739, "b": 469.70023, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "of 0. It never returns the null value.", "bbox": {"l": 136.80002, "t": 472.48706, "r": 289.84335, "b": 481.70004, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Here is an example of using the VERIFY_GROUP_FOR_USER function:", "bbox": {"l": 136.80002, "t": 494.50662, "r": 458.44525000000004, "b": 503.7196, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "1.", "bbox": {"l": 136.80002, "t": 511.5462, "r": 145.09804, "b": 520.75919, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "There are user profiles for MGR, JANE, JUDY, and TONY.", "bbox": {"l": 147.86403, "t": 511.5462, "r": 406.07751, "b": 520.75919, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "2.", "bbox": {"l": 136.80002, "t": 528.5260000000001, "r": 145.23297, "b": 537.739, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "The user profile JANE specifies a group profile of MGR.", "bbox": {"l": 148.04396, "t": 528.5260000000001, "r": 396.98816, "b": 537.739, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "3.", "bbox": {"l": 136.80002, "t": 545.50581, "r": 145.18951, "b": 554.71881, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "If a user is connected to the server using user profile JANE, all of the following function ", "bbox": {"l": 147.98601, "t": 545.50581, "r": 536.5686, "b": 554.71881, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "invocations return a value of 1:", "bbox": {"l": 151.20018, "t": 557.50562, "r": 286.84641, "b": 566.71861, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'MGR')", "bbox": {"l": 151.20018, "t": 574.69458, "r": 366.05725, "b": 583.46933, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR')", "bbox": {"l": 151.20018, "t": 586.69438, "r": 406.01678, "b": 595.46913, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR', 'STEVE')", "bbox": {"l": 151.20018, "t": 598.69418, "r": 451.01605, "b": 607.46893, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "The following function invocation returns a value of 0:", "bbox": {"l": 151.20018, "t": 615.5246, "r": 385.87271, "b": 624.73759, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JUDY', 'TONY')", "bbox": {"l": 151.20018, "t": 632.65381, "r": 411.05655, "b": 641.4285600000001, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Global variable", "bbox": {"l": 70.800003, "t": 110.53801999999985, "r": 134.99071, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Type", "bbox": {"l": 202.8894, "t": 110.53801999999985, "r": 223.34641, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Description", "bbox": {"l": 281.8248, "t": 110.53801999999985, "r": 331.3428, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CLIENT_HOST", "bbox": {"l": 70.800003, "t": 129.49834999999996, "r": 132.7209, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "VARCHAR(255)", "bbox": {"l": 202.89029, "t": 129.49834999999996, "r": 267.07651, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Host name of the current client as returned by the system", "bbox": {"l": 281.84732, "t": 129.49834999999996, "r": 510.17548, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "CLIENT_IPADDR", "bbox": {"l": 70.800018, "t": 148.51806999999997, "r": 140.66522, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "VARCHAR(128)", "bbox": {"l": 202.87231, "t": 148.51806999999997, "r": 267.07739, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "IP address of the current client as returned by the system", "bbox": {"l": 281.84549, "t": 148.51806999999997, "r": 509.60583, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "CLIENT_PORT ", "bbox": {"l": 70.800018, "t": 167.53778, "r": 134.98264, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "INTEGER", "bbox": {"l": 202.90294, "t": 167.53778, "r": 242.80084, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Port used by the current client to communicate with the server", "bbox": {"l": 281.79785, "t": 167.53778, "r": 527.59222, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "PACKAGE_NAME", "bbox": {"l": 70.800018, "t": 186.5575, "r": 143.50925, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "VARCHAR(128)", "bbox": {"l": 202.80576, "t": 186.5575, "r": 267.06937, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Name of the currently running package", "bbox": {"l": 281.85187, "t": 186.5575, "r": 436.57259999999997, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "PACKAGE_SCHEMA", "bbox": {"l": 70.800018, "t": 205.51782000000003, "r": 156.01654, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "VARCHAR(128)", "bbox": {"l": 202.83545, "t": 205.51782000000003, "r": 267.08646, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Schema name of the currently running package", "bbox": {"l": 281.87076, "t": 205.51782000000003, "r": 470.44678, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "PACKAGE_VERSION", "bbox": {"l": 70.800018, "t": 224.53754000000004, "r": 157.89932, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "VARCHAR(64)", "bbox": {"l": 202.72472, "t": 224.53754000000004, "r": 261.98254, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Version identifier of the currently running package", "bbox": {"l": 281.74924, "t": 224.53754000000004, "r": 478.8438100000001, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ROUTINE_SCHEMA", "bbox": {"l": 70.800018, "t": 243.55724999999995, "r": 154.41992, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "VARCHAR(128)", "bbox": {"l": 202.79312, "t": 243.55724999999995, "r": 267.09274, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Schema name of the currently running routine", "bbox": {"l": 281.87164, "t": 243.55724999999995, "r": 464.26022, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ROUTINE_SPECIFIC_NAME", "bbox": {"l": 70.800018, "t": 262.51757999999995, "r": 188.43991, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "VARCHAR(128)", "bbox": {"l": 202.84441, "t": 262.51757999999995, "r": 267.03693, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Name of the currently running routine", "bbox": {"l": 281.80682, "t": 262.51757999999995, "r": 430.40045, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "ROUTINE_TYPE", "bbox": {"l": 70.800034, "t": 281.53726, "r": 139.43135, "b": 289.86227, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "CHAR(1)", "bbox": {"l": 202.74635, "t": 281.53726, "r": 239.28996000000004, "b": 289.86227, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Type of the currently running routine", "bbox": {"l": 281.79065, "t": 281.53726, "r": 425.09131, "b": 289.86227, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.85088348388672, "t": 754.3745727539062, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9187920093536377, "cells": [{"id": 0, "text": "20 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.31550598144531, "t": 754.6971435546875, "r": 334.42142, "b": 763.9706420898438, "coord_origin": "TOPLEFT"}, "confidence": 0.9505078196525574, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.74647521972656, "t": 70.67481994628906, "r": 342.54773, "b": 80.84661102294922, "coord_origin": "TOPLEFT"}, "confidence": 0.8370974659919739, "cells": [{"id": 2, "text": "Table 3-2 lists the nine built-in global variables.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 342.54773, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.800003, "t": 92.83466339111328, "r": 201.82247924804688, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}, "confidence": 0.913235604763031, "cells": [{"id": 3, "text": "Table 3-2 Built-in global variables", "bbox": {"l": 64.800003, "t": 93.49805000000003, "r": 201.18147, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 64.34713745117188, "t": 320.619140625, "r": 384.36389, "b": 336.96371000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9645339846611023, "cells": [{"id": 4, "text": "3.3", "bbox": {"l": 64.800003, "t": 322.20071, "r": 87.318192, "b": 336.96371000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "VERIFY_GROUP_FOR_USER function", "bbox": {"l": 91.821815, "t": 322.20071, "r": 384.36389, "b": 336.96371000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.8567352294922, "t": 353.8623962402344, "r": 547.23474, "b": 436.295166015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9864333868026733, "cells": [{"id": 6, "text": "The VERIFY_GROUP_FOR_USER function was added in IBM i 7.2. Although it is primarily ", "bbox": {"l": 136.8, "t": 354.52872, "r": 542.83539, "b": 363.7417, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "intended for use with RCAC permissions and masks, it can be used in other SQL statements. ", "bbox": {"l": 136.8, "t": 366.52853, "r": 547.14783, "b": 375.74152, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "The first parameter must be one of these three special registers: SESSION_USER, USER, or ", "bbox": {"l": 136.8, "t": 378.52835, "r": 547.15106, "b": 387.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CURRENT_USER. The second and subsequent parameters are a list of user or group ", "bbox": {"l": 136.80002, "t": 390.52817, "r": 520.62958, "b": 399.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "profiles. Each of these values must be 1 - 10 characters in length. These values are not ", "bbox": {"l": 136.80002, "t": 402.52798, "r": 524.88824, "b": 411.74097, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "validated for their existence, which means that you can specify the names of user profiles that ", "bbox": {"l": 136.80002, "t": 414.5278, "r": 547.23474, "b": 423.7407799999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "do not exist without receiving any kind of error.", "bbox": {"l": 136.80002, "t": 426.52762, "r": 342.04672, "b": 435.74060000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 136.01950073242188, "t": 447.4029541015625, "r": 547.25739, "b": 481.70004, "coord_origin": "TOPLEFT"}, "confidence": 0.9807308912277222, "cells": [{"id": 13, "text": "If a special register value is in the list of user profiles or it is a member of a group profile ", "bbox": {"l": 136.80002, "t": 448.48743, "r": 525.1474, "b": 457.70041, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "included in the list, the function returns a long integer value of 1. Otherwise, it returns a value ", "bbox": {"l": 136.80002, "t": 460.48724, "r": 547.25739, "b": 469.70023, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "of 0. It never returns the null value.", "bbox": {"l": 136.80002, "t": 472.48706, "r": 289.84335, "b": 481.70004, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 136.42428588867188, "t": 493.1253662109375, "r": 458.44525000000004, "b": 503.7196, "coord_origin": "TOPLEFT"}, "confidence": 0.9237534403800964, "cells": [{"id": 16, "text": "Here is an example of using the VERIFY_GROUP_FOR_USER function:", "bbox": {"l": 136.80002, "t": 494.50662, "r": 458.44525000000004, "b": 503.7196, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 136.80002, "t": 510.5052795410156, "r": 406.07751, "b": 520.75919, "coord_origin": "TOPLEFT"}, "confidence": 0.9338629841804504, "cells": [{"id": 17, "text": "1.", "bbox": {"l": 136.80002, "t": 511.5462, "r": 145.09804, "b": 520.75919, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "There are user profiles for MGR, JANE, JUDY, and TONY.", "bbox": {"l": 147.86403, "t": 511.5462, "r": 406.07751, "b": 520.75919, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.8521728515625, "t": 527.8382568359375, "r": 396.98816, "b": 538.1942749023438, "coord_origin": "TOPLEFT"}, "confidence": 0.9514460563659668, "cells": [{"id": 19, "text": "2.", "bbox": {"l": 136.80002, "t": 528.5260000000001, "r": 145.23297, "b": 537.739, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "The user profile JANE specifies a group profile of MGR.", "bbox": {"l": 148.04396, "t": 528.5260000000001, "r": 396.98816, "b": 537.739, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 136.08595275878906, "t": 544.642333984375, "r": 536.5686, "b": 566.71861, "coord_origin": "TOPLEFT"}, "confidence": 0.951230525970459, "cells": [{"id": 21, "text": "3.", "bbox": {"l": 136.80002, "t": 545.50581, "r": 145.18951, "b": 554.71881, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "If a user is connected to the server using user profile JANE, all of the following function ", "bbox": {"l": 147.98601, "t": 545.50581, "r": 536.5686, "b": 554.71881, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "invocations return a value of 1:", "bbox": {"l": 151.20018, "t": 557.50562, "r": 286.84641, "b": 566.71861, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "code", "bbox": {"l": 149.8811798095703, "t": 574.31591796875, "r": 451.01605, "b": 641.9093627929688, "coord_origin": "TOPLEFT"}, "confidence": 0.7066468000411987, "cells": [{"id": 24, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'MGR')", "bbox": {"l": 151.20018, "t": 574.69458, "r": 366.05725, "b": 583.46933, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR')", "bbox": {"l": 151.20018, "t": 586.69438, "r": 406.01678, "b": 595.46913, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR', 'STEVE')", "bbox": {"l": 151.20018, "t": 598.69418, "r": 451.01605, "b": 607.46893, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "The following function invocation returns a value of 0:", "bbox": {"l": 151.20018, "t": 615.5246, "r": 385.87271, "b": 624.73759, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JUDY', 'TONY')", "bbox": {"l": 151.20018, "t": 632.65381, "r": 411.05655, "b": 641.4285600000001, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "table", "bbox": {"l": 63.556331634521484, "t": 104.23389434814453, "r": 548.5687255859375, "b": 296.2246398925781, "coord_origin": "TOPLEFT"}, "confidence": 0.9868634939193726, "cells": [{"id": 29, "text": "Global variable", "bbox": {"l": 70.800003, "t": 110.53801999999985, "r": 134.99071, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Type", "bbox": {"l": 202.8894, "t": 110.53801999999985, "r": 223.34641, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Description", "bbox": {"l": 281.8248, "t": 110.53801999999985, "r": 331.3428, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CLIENT_HOST", "bbox": {"l": 70.800003, "t": 129.49834999999996, "r": 132.7209, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "VARCHAR(255)", "bbox": {"l": 202.89029, "t": 129.49834999999996, "r": 267.07651, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Host name of the current client as returned by the system", "bbox": {"l": 281.84732, "t": 129.49834999999996, "r": 510.17548, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "CLIENT_IPADDR", "bbox": {"l": 70.800018, "t": 148.51806999999997, "r": 140.66522, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "VARCHAR(128)", "bbox": {"l": 202.87231, "t": 148.51806999999997, "r": 267.07739, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "IP address of the current client as returned by the system", "bbox": {"l": 281.84549, "t": 148.51806999999997, "r": 509.60583, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "CLIENT_PORT ", "bbox": {"l": 70.800018, "t": 167.53778, "r": 134.98264, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "INTEGER", "bbox": {"l": 202.90294, "t": 167.53778, "r": 242.80084, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Port used by the current client to communicate with the server", "bbox": {"l": 281.79785, "t": 167.53778, "r": 527.59222, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "PACKAGE_NAME", "bbox": {"l": 70.800018, "t": 186.5575, "r": 143.50925, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "VARCHAR(128)", "bbox": {"l": 202.80576, "t": 186.5575, "r": 267.06937, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Name of the currently running package", "bbox": {"l": 281.85187, "t": 186.5575, "r": 436.57259999999997, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "PACKAGE_SCHEMA", "bbox": {"l": 70.800018, "t": 205.51782000000003, "r": 156.01654, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "VARCHAR(128)", "bbox": {"l": 202.83545, "t": 205.51782000000003, "r": 267.08646, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Schema name of the currently running package", "bbox": {"l": 281.87076, "t": 205.51782000000003, "r": 470.44678, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "PACKAGE_VERSION", "bbox": {"l": 70.800018, "t": 224.53754000000004, "r": 157.89932, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "VARCHAR(64)", "bbox": {"l": 202.72472, "t": 224.53754000000004, "r": 261.98254, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Version identifier of the currently running package", "bbox": {"l": 281.74924, "t": 224.53754000000004, "r": 478.8438100000001, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ROUTINE_SCHEMA", "bbox": {"l": 70.800018, "t": 243.55724999999995, "r": 154.41992, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "VARCHAR(128)", "bbox": {"l": 202.79312, "t": 243.55724999999995, "r": 267.09274, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Schema name of the currently running routine", "bbox": {"l": 281.87164, "t": 243.55724999999995, "r": 464.26022, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ROUTINE_SPECIFIC_NAME", "bbox": {"l": 70.800018, "t": 262.51757999999995, "r": 188.43991, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "VARCHAR(128)", "bbox": {"l": 202.84441, "t": 262.51757999999995, "r": 267.03693, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Name of the currently running routine", "bbox": {"l": 281.80682, "t": 262.51757999999995, "r": 430.40045, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "ROUTINE_TYPE", "bbox": {"l": 70.800034, "t": 281.53726, "r": 139.43135, "b": 289.86227, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "CHAR(1)", "bbox": {"l": 202.74635, "t": 281.53726, "r": 239.28996000000004, "b": 289.86227, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Type of the currently running routine", "bbox": {"l": 281.79065, "t": 281.53726, "r": 425.09131, "b": 289.86227, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {"12": {"label": "table", "id": 12, "page_no": 11, "cluster": {"id": 12, "label": "table", "bbox": {"l": 63.556331634521484, "t": 104.23389434814453, "r": 548.5687255859375, "b": 296.2246398925781, "coord_origin": "TOPLEFT"}, "confidence": 0.9868634939193726, "cells": [{"id": 29, "text": "Global variable", "bbox": {"l": 70.800003, "t": 110.53801999999985, "r": 134.99071, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Type", "bbox": {"l": 202.8894, "t": 110.53801999999985, "r": 223.34641, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Description", "bbox": {"l": 281.8248, "t": 110.53801999999985, "r": 331.3428, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CLIENT_HOST", "bbox": {"l": 70.800003, "t": 129.49834999999996, "r": 132.7209, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "VARCHAR(255)", "bbox": {"l": 202.89029, "t": 129.49834999999996, "r": 267.07651, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Host name of the current client as returned by the system", "bbox": {"l": 281.84732, "t": 129.49834999999996, "r": 510.17548, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "CLIENT_IPADDR", "bbox": {"l": 70.800018, "t": 148.51806999999997, "r": 140.66522, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "VARCHAR(128)", "bbox": {"l": 202.87231, "t": 148.51806999999997, "r": 267.07739, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "IP address of the current client as returned by the system", "bbox": {"l": 281.84549, "t": 148.51806999999997, "r": 509.60583, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "CLIENT_PORT ", "bbox": {"l": 70.800018, "t": 167.53778, "r": 134.98264, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "INTEGER", "bbox": {"l": 202.90294, "t": 167.53778, "r": 242.80084, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Port used by the current client to communicate with the server", "bbox": {"l": 281.79785, "t": 167.53778, "r": 527.59222, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "PACKAGE_NAME", "bbox": {"l": 70.800018, "t": 186.5575, "r": 143.50925, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "VARCHAR(128)", "bbox": {"l": 202.80576, "t": 186.5575, "r": 267.06937, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Name of the currently running package", "bbox": {"l": 281.85187, "t": 186.5575, "r": 436.57259999999997, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "PACKAGE_SCHEMA", "bbox": {"l": 70.800018, "t": 205.51782000000003, "r": 156.01654, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "VARCHAR(128)", "bbox": {"l": 202.83545, "t": 205.51782000000003, "r": 267.08646, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Schema name of the currently running package", "bbox": {"l": 281.87076, "t": 205.51782000000003, "r": 470.44678, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "PACKAGE_VERSION", "bbox": {"l": 70.800018, "t": 224.53754000000004, "r": 157.89932, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "VARCHAR(64)", "bbox": {"l": 202.72472, "t": 224.53754000000004, "r": 261.98254, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Version identifier of the currently running package", "bbox": {"l": 281.74924, "t": 224.53754000000004, "r": 478.8438100000001, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ROUTINE_SCHEMA", "bbox": {"l": 70.800018, "t": 243.55724999999995, "r": 154.41992, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "VARCHAR(128)", "bbox": {"l": 202.79312, "t": 243.55724999999995, "r": 267.09274, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Schema name of the currently running routine", "bbox": {"l": 281.87164, "t": 243.55724999999995, "r": 464.26022, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ROUTINE_SPECIFIC_NAME", "bbox": {"l": 70.800018, "t": 262.51757999999995, "r": 188.43991, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "VARCHAR(128)", "bbox": {"l": 202.84441, "t": 262.51757999999995, "r": 267.03693, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Name of the currently running routine", "bbox": {"l": 281.80682, "t": 262.51757999999995, "r": 430.40045, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "ROUTINE_TYPE", "bbox": {"l": 70.800034, "t": 281.53726, "r": 139.43135, "b": 289.86227, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "CHAR(1)", "bbox": {"l": 202.74635, "t": 281.53726, "r": 239.28996000000004, "b": 289.86227, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Type of the currently running routine", "bbox": {"l": 281.79065, "t": 281.53726, "r": 425.09131, "b": 289.86227, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "ched", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl"], "num_rows": 10, "num_cols": 3, "table_cells": [{"bbox": {"l": 70.800003, "t": 110.53801999999985, "r": 134.99071, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Global variable", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 202.8894, "t": 110.53801999999985, "r": 223.34641, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Type", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 281.8248, "t": 110.53801999999985, "r": 331.3428, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Description", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800003, "t": 129.49834999999996, "r": 132.7209, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CLIENT_HOST", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.89029, "t": 129.49834999999996, "r": 267.07651, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(255)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.84732, "t": 129.49834999999996, "r": 510.17548, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Host name of the current client as returned by the system", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 148.51806999999997, "r": 140.66522, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CLIENT_IPADDR", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.87231, "t": 148.51806999999997, "r": 267.07739, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.84549, "t": 148.51806999999997, "r": 509.60583, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "IP address of the current client as returned by the system", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 167.53778, "r": 134.98264, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CLIENT_PORT", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.90294, "t": 167.53778, "r": 242.80084, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "INTEGER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.79785, "t": 167.53778, "r": 527.59222, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Port used by the current client to communicate with the server", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 186.5575, "r": 143.50925, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PACKAGE_NAME", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.80576, "t": 186.5575, "r": 267.06937, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.85187, "t": 186.5575, "r": 436.57259999999997, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Name of the currently running package", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 205.51782000000003, "r": 156.01654, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PACKAGE_SCHEMA", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.83545, "t": 205.51782000000003, "r": 267.08646, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.87076, "t": 205.51782000000003, "r": 470.44678, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Schema name of the currently running package", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 224.53754000000004, "r": 157.89932, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PACKAGE_VERSION", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.72472, "t": 224.53754000000004, "r": 261.98254, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(64)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.74924, "t": 224.53754000000004, "r": 478.8438100000001, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Version identifier of the currently running package", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 243.55724999999995, "r": 154.41992, "b": 251.8822, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ROUTINE_SCHEMA", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.79312, "t": 243.55724999999995, "r": 267.09274, "b": 251.8822, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.87164, "t": 243.55724999999995, "r": 464.26022, "b": 251.8822, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Schema name of the currently running routine", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 262.51757999999995, "r": 188.43991, "b": 270.84253, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ROUTINE_SPECIFIC_NAME", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.84441, "t": 262.51757999999995, "r": 267.03693, "b": 270.84253, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.80682, "t": 262.51757999999995, "r": 430.40045, "b": 270.84253, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Name of the currently running routine", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800034, "t": 281.53726, "r": 139.43135, "b": 289.86227, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ROUTINE_TYPE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.74635, "t": 281.53726, "r": 239.28996000000004, "b": 289.86227, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "CHAR(1)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.79065, "t": 281.53726, "r": 425.09131, "b": 289.86227, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Type of the currently running routine", "column_header": false, "row_header": false, "row_section": false}]}}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 11, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.85088348388672, "t": 754.3745727539062, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9187920093536377, "cells": [{"id": 0, "text": "20 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "20"}, {"label": "page_footer", "id": 1, "page_no": 11, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.31550598144531, "t": 754.6971435546875, "r": 334.42142, "b": 763.9706420898438, "coord_origin": "TOPLEFT"}, "confidence": 0.9505078196525574, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 2, "page_no": 11, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.74647521972656, "t": 70.67481994628906, "r": 342.54773, "b": 80.84661102294922, "coord_origin": "TOPLEFT"}, "confidence": 0.8370974659919739, "cells": [{"id": 2, "text": "Table 3-2 lists the nine built-in global variables.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 342.54773, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Table 3-2 lists the nine built-in global variables."}, {"label": "caption", "id": 3, "page_no": 11, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.800003, "t": 92.83466339111328, "r": 201.82247924804688, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}, "confidence": 0.913235604763031, "cells": [{"id": 3, "text": "Table 3-2 Built-in global variables", "bbox": {"l": 64.800003, "t": 93.49805000000003, "r": 201.18147, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}}]}, "text": "Table 3-2 Built-in global variables"}, {"label": "section_header", "id": 4, "page_no": 11, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.34713745117188, "t": 320.619140625, "r": 384.36389, "b": 336.96371000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9645339846611023, "cells": [{"id": 4, "text": "3.3", "bbox": {"l": 64.800003, "t": 322.20071, "r": 87.318192, "b": 336.96371000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "VERIFY_GROUP_FOR_USER function", "bbox": {"l": 91.821815, "t": 322.20071, "r": 384.36389, "b": 336.96371000000005, "coord_origin": "TOPLEFT"}}]}, "text": "3.3 VERIFY_GROUP_FOR_USER function"}, {"label": "text", "id": 5, "page_no": 11, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.8567352294922, "t": 353.8623962402344, "r": 547.23474, "b": 436.295166015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9864333868026733, "cells": [{"id": 6, "text": "The VERIFY_GROUP_FOR_USER function was added in IBM i 7.2. Although it is primarily ", "bbox": {"l": 136.8, "t": 354.52872, "r": 542.83539, "b": 363.7417, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "intended for use with RCAC permissions and masks, it can be used in other SQL statements. ", "bbox": {"l": 136.8, "t": 366.52853, "r": 547.14783, "b": 375.74152, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "The first parameter must be one of these three special registers: SESSION_USER, USER, or ", "bbox": {"l": 136.8, "t": 378.52835, "r": 547.15106, "b": 387.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CURRENT_USER. The second and subsequent parameters are a list of user or group ", "bbox": {"l": 136.80002, "t": 390.52817, "r": 520.62958, "b": 399.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "profiles. Each of these values must be 1 - 10 characters in length. These values are not ", "bbox": {"l": 136.80002, "t": 402.52798, "r": 524.88824, "b": 411.74097, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "validated for their existence, which means that you can specify the names of user profiles that ", "bbox": {"l": 136.80002, "t": 414.5278, "r": 547.23474, "b": 423.7407799999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "do not exist without receiving any kind of error.", "bbox": {"l": 136.80002, "t": 426.52762, "r": 342.04672, "b": 435.74060000000003, "coord_origin": "TOPLEFT"}}]}, "text": "The VERIFY_GROUP_FOR_USER function was added in IBM i 7.2. Although it is primarily intended for use with RCAC permissions and masks, it can be used in other SQL statements. The first parameter must be one of these three special registers: SESSION_USER, USER, or CURRENT_USER. The second and subsequent parameters are a list of user or group profiles. Each of these values must be 1 - 10 characters in length. These values are not validated for their existence, which means that you can specify the names of user profiles that do not exist without receiving any kind of error."}, {"label": "text", "id": 6, "page_no": 11, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.01950073242188, "t": 447.4029541015625, "r": 547.25739, "b": 481.70004, "coord_origin": "TOPLEFT"}, "confidence": 0.9807308912277222, "cells": [{"id": 13, "text": "If a special register value is in the list of user profiles or it is a member of a group profile ", "bbox": {"l": 136.80002, "t": 448.48743, "r": 525.1474, "b": 457.70041, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "included in the list, the function returns a long integer value of 1. Otherwise, it returns a value ", "bbox": {"l": 136.80002, "t": 460.48724, "r": 547.25739, "b": 469.70023, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "of 0. It never returns the null value.", "bbox": {"l": 136.80002, "t": 472.48706, "r": 289.84335, "b": 481.70004, "coord_origin": "TOPLEFT"}}]}, "text": "If a special register value is in the list of user profiles or it is a member of a group profile included in the list, the function returns a long integer value of 1. Otherwise, it returns a value of 0. It never returns the null value."}, {"label": "text", "id": 7, "page_no": 11, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.42428588867188, "t": 493.1253662109375, "r": 458.44525000000004, "b": 503.7196, "coord_origin": "TOPLEFT"}, "confidence": 0.9237534403800964, "cells": [{"id": 16, "text": "Here is an example of using the VERIFY_GROUP_FOR_USER function:", "bbox": {"l": 136.80002, "t": 494.50662, "r": 458.44525000000004, "b": 503.7196, "coord_origin": "TOPLEFT"}}]}, "text": "Here is an example of using the VERIFY_GROUP_FOR_USER function:"}, {"label": "list_item", "id": 8, "page_no": 11, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 136.80002, "t": 510.5052795410156, "r": 406.07751, "b": 520.75919, "coord_origin": "TOPLEFT"}, "confidence": 0.9338629841804504, "cells": [{"id": 17, "text": "1.", "bbox": {"l": 136.80002, "t": 511.5462, "r": 145.09804, "b": 520.75919, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "There are user profiles for MGR, JANE, JUDY, and TONY.", "bbox": {"l": 147.86403, "t": 511.5462, "r": 406.07751, "b": 520.75919, "coord_origin": "TOPLEFT"}}]}, "text": "1. There are user profiles for MGR, JANE, JUDY, and TONY."}, {"label": "list_item", "id": 9, "page_no": 11, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.8521728515625, "t": 527.8382568359375, "r": 396.98816, "b": 538.1942749023438, "coord_origin": "TOPLEFT"}, "confidence": 0.9514460563659668, "cells": [{"id": 19, "text": "2.", "bbox": {"l": 136.80002, "t": 528.5260000000001, "r": 145.23297, "b": 537.739, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "The user profile JANE specifies a group profile of MGR.", "bbox": {"l": 148.04396, "t": 528.5260000000001, "r": 396.98816, "b": 537.739, "coord_origin": "TOPLEFT"}}]}, "text": "2. The user profile JANE specifies a group profile of MGR."}, {"label": "list_item", "id": 10, "page_no": 11, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 136.08595275878906, "t": 544.642333984375, "r": 536.5686, "b": 566.71861, "coord_origin": "TOPLEFT"}, "confidence": 0.951230525970459, "cells": [{"id": 21, "text": "3.", "bbox": {"l": 136.80002, "t": 545.50581, "r": 145.18951, "b": 554.71881, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "If a user is connected to the server using user profile JANE, all of the following function ", "bbox": {"l": 147.98601, "t": 545.50581, "r": 536.5686, "b": 554.71881, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "invocations return a value of 1:", "bbox": {"l": 151.20018, "t": 557.50562, "r": 286.84641, "b": 566.71861, "coord_origin": "TOPLEFT"}}]}, "text": "3. If a user is connected to the server using user profile JANE, all of the following function invocations return a value of 1:"}, {"label": "code", "id": 11, "page_no": 11, "cluster": {"id": 11, "label": "code", "bbox": {"l": 149.8811798095703, "t": 574.31591796875, "r": 451.01605, "b": 641.9093627929688, "coord_origin": "TOPLEFT"}, "confidence": 0.7066468000411987, "cells": [{"id": 24, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'MGR')", "bbox": {"l": 151.20018, "t": 574.69458, "r": 366.05725, "b": 583.46933, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR')", "bbox": {"l": 151.20018, "t": 586.69438, "r": 406.01678, "b": 595.46913, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR', 'STEVE')", "bbox": {"l": 151.20018, "t": 598.69418, "r": 451.01605, "b": 607.46893, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "The following function invocation returns a value of 0:", "bbox": {"l": 151.20018, "t": 615.5246, "r": 385.87271, "b": 624.73759, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JUDY', 'TONY')", "bbox": {"l": 151.20018, "t": 632.65381, "r": 411.05655, "b": 641.4285600000001, "coord_origin": "TOPLEFT"}}]}, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'MGR') VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR') VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR', 'STEVE') The following function invocation returns a value of 0: VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JUDY', 'TONY')"}, {"label": "table", "id": 12, "page_no": 11, "cluster": {"id": 12, "label": "table", "bbox": {"l": 63.556331634521484, "t": 104.23389434814453, "r": 548.5687255859375, "b": 296.2246398925781, "coord_origin": "TOPLEFT"}, "confidence": 0.9868634939193726, "cells": [{"id": 29, "text": "Global variable", "bbox": {"l": 70.800003, "t": 110.53801999999985, "r": 134.99071, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Type", "bbox": {"l": 202.8894, "t": 110.53801999999985, "r": 223.34641, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Description", "bbox": {"l": 281.8248, "t": 110.53801999999985, "r": 331.3428, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CLIENT_HOST", "bbox": {"l": 70.800003, "t": 129.49834999999996, "r": 132.7209, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "VARCHAR(255)", "bbox": {"l": 202.89029, "t": 129.49834999999996, "r": 267.07651, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Host name of the current client as returned by the system", "bbox": {"l": 281.84732, "t": 129.49834999999996, "r": 510.17548, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "CLIENT_IPADDR", "bbox": {"l": 70.800018, "t": 148.51806999999997, "r": 140.66522, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "VARCHAR(128)", "bbox": {"l": 202.87231, "t": 148.51806999999997, "r": 267.07739, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "IP address of the current client as returned by the system", "bbox": {"l": 281.84549, "t": 148.51806999999997, "r": 509.60583, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "CLIENT_PORT ", "bbox": {"l": 70.800018, "t": 167.53778, "r": 134.98264, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "INTEGER", "bbox": {"l": 202.90294, "t": 167.53778, "r": 242.80084, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Port used by the current client to communicate with the server", "bbox": {"l": 281.79785, "t": 167.53778, "r": 527.59222, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "PACKAGE_NAME", "bbox": {"l": 70.800018, "t": 186.5575, "r": 143.50925, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "VARCHAR(128)", "bbox": {"l": 202.80576, "t": 186.5575, "r": 267.06937, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Name of the currently running package", "bbox": {"l": 281.85187, "t": 186.5575, "r": 436.57259999999997, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "PACKAGE_SCHEMA", "bbox": {"l": 70.800018, "t": 205.51782000000003, "r": 156.01654, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "VARCHAR(128)", "bbox": {"l": 202.83545, "t": 205.51782000000003, "r": 267.08646, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Schema name of the currently running package", "bbox": {"l": 281.87076, "t": 205.51782000000003, "r": 470.44678, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "PACKAGE_VERSION", "bbox": {"l": 70.800018, "t": 224.53754000000004, "r": 157.89932, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "VARCHAR(64)", "bbox": {"l": 202.72472, "t": 224.53754000000004, "r": 261.98254, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Version identifier of the currently running package", "bbox": {"l": 281.74924, "t": 224.53754000000004, "r": 478.8438100000001, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ROUTINE_SCHEMA", "bbox": {"l": 70.800018, "t": 243.55724999999995, "r": 154.41992, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "VARCHAR(128)", "bbox": {"l": 202.79312, "t": 243.55724999999995, "r": 267.09274, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Schema name of the currently running routine", "bbox": {"l": 281.87164, "t": 243.55724999999995, "r": 464.26022, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ROUTINE_SPECIFIC_NAME", "bbox": {"l": 70.800018, "t": 262.51757999999995, "r": 188.43991, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "VARCHAR(128)", "bbox": {"l": 202.84441, "t": 262.51757999999995, "r": 267.03693, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Name of the currently running routine", "bbox": {"l": 281.80682, "t": 262.51757999999995, "r": 430.40045, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "ROUTINE_TYPE", "bbox": {"l": 70.800034, "t": 281.53726, "r": 139.43135, "b": 289.86227, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "CHAR(1)", "bbox": {"l": 202.74635, "t": 281.53726, "r": 239.28996000000004, "b": 289.86227, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Type of the currently running routine", "bbox": {"l": 281.79065, "t": 281.53726, "r": 425.09131, "b": 289.86227, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "ched", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl"], "num_rows": 10, "num_cols": 3, "table_cells": [{"bbox": {"l": 70.800003, "t": 110.53801999999985, "r": 134.99071, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Global variable", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 202.8894, "t": 110.53801999999985, "r": 223.34641, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Type", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 281.8248, "t": 110.53801999999985, "r": 331.3428, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Description", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800003, "t": 129.49834999999996, "r": 132.7209, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CLIENT_HOST", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.89029, "t": 129.49834999999996, "r": 267.07651, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(255)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.84732, "t": 129.49834999999996, "r": 510.17548, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Host name of the current client as returned by the system", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 148.51806999999997, "r": 140.66522, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CLIENT_IPADDR", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.87231, "t": 148.51806999999997, "r": 267.07739, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.84549, "t": 148.51806999999997, "r": 509.60583, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "IP address of the current client as returned by the system", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 167.53778, "r": 134.98264, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CLIENT_PORT", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.90294, "t": 167.53778, "r": 242.80084, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "INTEGER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.79785, "t": 167.53778, "r": 527.59222, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Port used by the current client to communicate with the server", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 186.5575, "r": 143.50925, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PACKAGE_NAME", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.80576, "t": 186.5575, "r": 267.06937, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.85187, "t": 186.5575, "r": 436.57259999999997, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Name of the currently running package", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 205.51782000000003, "r": 156.01654, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PACKAGE_SCHEMA", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.83545, "t": 205.51782000000003, "r": 267.08646, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.87076, "t": 205.51782000000003, "r": 470.44678, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Schema name of the currently running package", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 224.53754000000004, "r": 157.89932, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PACKAGE_VERSION", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.72472, "t": 224.53754000000004, "r": 261.98254, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(64)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.74924, "t": 224.53754000000004, "r": 478.8438100000001, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Version identifier of the currently running package", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 243.55724999999995, "r": 154.41992, "b": 251.8822, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ROUTINE_SCHEMA", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.79312, "t": 243.55724999999995, "r": 267.09274, "b": 251.8822, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.87164, "t": 243.55724999999995, "r": 464.26022, "b": 251.8822, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Schema name of the currently running routine", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 262.51757999999995, "r": 188.43991, "b": 270.84253, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ROUTINE_SPECIFIC_NAME", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.84441, "t": 262.51757999999995, "r": 267.03693, "b": 270.84253, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.80682, "t": 262.51757999999995, "r": 430.40045, "b": 270.84253, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Name of the currently running routine", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800034, "t": 281.53726, "r": 139.43135, "b": 289.86227, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ROUTINE_TYPE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.74635, "t": 281.53726, "r": 239.28996000000004, "b": 289.86227, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "CHAR(1)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.79065, "t": 281.53726, "r": 425.09131, "b": 289.86227, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Type of the currently running routine", "column_header": false, "row_header": false, "row_section": false}]}], "body": [{"label": "text", "id": 2, "page_no": 11, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.74647521972656, "t": 70.67481994628906, "r": 342.54773, "b": 80.84661102294922, "coord_origin": "TOPLEFT"}, "confidence": 0.8370974659919739, "cells": [{"id": 2, "text": "Table 3-2 lists the nine built-in global variables.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 342.54773, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Table 3-2 lists the nine built-in global variables."}, {"label": "caption", "id": 3, "page_no": 11, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.800003, "t": 92.83466339111328, "r": 201.82247924804688, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}, "confidence": 0.913235604763031, "cells": [{"id": 3, "text": "Table 3-2 Built-in global variables", "bbox": {"l": 64.800003, "t": 93.49805000000003, "r": 201.18147, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}}]}, "text": "Table 3-2 Built-in global variables"}, {"label": "section_header", "id": 4, "page_no": 11, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.34713745117188, "t": 320.619140625, "r": 384.36389, "b": 336.96371000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9645339846611023, "cells": [{"id": 4, "text": "3.3", "bbox": {"l": 64.800003, "t": 322.20071, "r": 87.318192, "b": 336.96371000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "VERIFY_GROUP_FOR_USER function", "bbox": {"l": 91.821815, "t": 322.20071, "r": 384.36389, "b": 336.96371000000005, "coord_origin": "TOPLEFT"}}]}, "text": "3.3 VERIFY_GROUP_FOR_USER function"}, {"label": "text", "id": 5, "page_no": 11, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.8567352294922, "t": 353.8623962402344, "r": 547.23474, "b": 436.295166015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9864333868026733, "cells": [{"id": 6, "text": "The VERIFY_GROUP_FOR_USER function was added in IBM i 7.2. Although it is primarily ", "bbox": {"l": 136.8, "t": 354.52872, "r": 542.83539, "b": 363.7417, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "intended for use with RCAC permissions and masks, it can be used in other SQL statements. ", "bbox": {"l": 136.8, "t": 366.52853, "r": 547.14783, "b": 375.74152, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "The first parameter must be one of these three special registers: SESSION_USER, USER, or ", "bbox": {"l": 136.8, "t": 378.52835, "r": 547.15106, "b": 387.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CURRENT_USER. The second and subsequent parameters are a list of user or group ", "bbox": {"l": 136.80002, "t": 390.52817, "r": 520.62958, "b": 399.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "profiles. Each of these values must be 1 - 10 characters in length. These values are not ", "bbox": {"l": 136.80002, "t": 402.52798, "r": 524.88824, "b": 411.74097, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "validated for their existence, which means that you can specify the names of user profiles that ", "bbox": {"l": 136.80002, "t": 414.5278, "r": 547.23474, "b": 423.7407799999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "do not exist without receiving any kind of error.", "bbox": {"l": 136.80002, "t": 426.52762, "r": 342.04672, "b": 435.74060000000003, "coord_origin": "TOPLEFT"}}]}, "text": "The VERIFY_GROUP_FOR_USER function was added in IBM i 7.2. Although it is primarily intended for use with RCAC permissions and masks, it can be used in other SQL statements. The first parameter must be one of these three special registers: SESSION_USER, USER, or CURRENT_USER. The second and subsequent parameters are a list of user or group profiles. Each of these values must be 1 - 10 characters in length. These values are not validated for their existence, which means that you can specify the names of user profiles that do not exist without receiving any kind of error."}, {"label": "text", "id": 6, "page_no": 11, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.01950073242188, "t": 447.4029541015625, "r": 547.25739, "b": 481.70004, "coord_origin": "TOPLEFT"}, "confidence": 0.9807308912277222, "cells": [{"id": 13, "text": "If a special register value is in the list of user profiles or it is a member of a group profile ", "bbox": {"l": 136.80002, "t": 448.48743, "r": 525.1474, "b": 457.70041, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "included in the list, the function returns a long integer value of 1. Otherwise, it returns a value ", "bbox": {"l": 136.80002, "t": 460.48724, "r": 547.25739, "b": 469.70023, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "of 0. It never returns the null value.", "bbox": {"l": 136.80002, "t": 472.48706, "r": 289.84335, "b": 481.70004, "coord_origin": "TOPLEFT"}}]}, "text": "If a special register value is in the list of user profiles or it is a member of a group profile included in the list, the function returns a long integer value of 1. Otherwise, it returns a value of 0. It never returns the null value."}, {"label": "text", "id": 7, "page_no": 11, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.42428588867188, "t": 493.1253662109375, "r": 458.44525000000004, "b": 503.7196, "coord_origin": "TOPLEFT"}, "confidence": 0.9237534403800964, "cells": [{"id": 16, "text": "Here is an example of using the VERIFY_GROUP_FOR_USER function:", "bbox": {"l": 136.80002, "t": 494.50662, "r": 458.44525000000004, "b": 503.7196, "coord_origin": "TOPLEFT"}}]}, "text": "Here is an example of using the VERIFY_GROUP_FOR_USER function:"}, {"label": "list_item", "id": 8, "page_no": 11, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 136.80002, "t": 510.5052795410156, "r": 406.07751, "b": 520.75919, "coord_origin": "TOPLEFT"}, "confidence": 0.9338629841804504, "cells": [{"id": 17, "text": "1.", "bbox": {"l": 136.80002, "t": 511.5462, "r": 145.09804, "b": 520.75919, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "There are user profiles for MGR, JANE, JUDY, and TONY.", "bbox": {"l": 147.86403, "t": 511.5462, "r": 406.07751, "b": 520.75919, "coord_origin": "TOPLEFT"}}]}, "text": "1. There are user profiles for MGR, JANE, JUDY, and TONY."}, {"label": "list_item", "id": 9, "page_no": 11, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.8521728515625, "t": 527.8382568359375, "r": 396.98816, "b": 538.1942749023438, "coord_origin": "TOPLEFT"}, "confidence": 0.9514460563659668, "cells": [{"id": 19, "text": "2.", "bbox": {"l": 136.80002, "t": 528.5260000000001, "r": 145.23297, "b": 537.739, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "The user profile JANE specifies a group profile of MGR.", "bbox": {"l": 148.04396, "t": 528.5260000000001, "r": 396.98816, "b": 537.739, "coord_origin": "TOPLEFT"}}]}, "text": "2. The user profile JANE specifies a group profile of MGR."}, {"label": "list_item", "id": 10, "page_no": 11, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 136.08595275878906, "t": 544.642333984375, "r": 536.5686, "b": 566.71861, "coord_origin": "TOPLEFT"}, "confidence": 0.951230525970459, "cells": [{"id": 21, "text": "3.", "bbox": {"l": 136.80002, "t": 545.50581, "r": 145.18951, "b": 554.71881, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "If a user is connected to the server using user profile JANE, all of the following function ", "bbox": {"l": 147.98601, "t": 545.50581, "r": 536.5686, "b": 554.71881, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "invocations return a value of 1:", "bbox": {"l": 151.20018, "t": 557.50562, "r": 286.84641, "b": 566.71861, "coord_origin": "TOPLEFT"}}]}, "text": "3. If a user is connected to the server using user profile JANE, all of the following function invocations return a value of 1:"}, {"label": "code", "id": 11, "page_no": 11, "cluster": {"id": 11, "label": "code", "bbox": {"l": 149.8811798095703, "t": 574.31591796875, "r": 451.01605, "b": 641.9093627929688, "coord_origin": "TOPLEFT"}, "confidence": 0.7066468000411987, "cells": [{"id": 24, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'MGR')", "bbox": {"l": 151.20018, "t": 574.69458, "r": 366.05725, "b": 583.46933, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR')", "bbox": {"l": 151.20018, "t": 586.69438, "r": 406.01678, "b": 595.46913, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR', 'STEVE')", "bbox": {"l": 151.20018, "t": 598.69418, "r": 451.01605, "b": 607.46893, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "The following function invocation returns a value of 0:", "bbox": {"l": 151.20018, "t": 615.5246, "r": 385.87271, "b": 624.73759, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JUDY', 'TONY')", "bbox": {"l": 151.20018, "t": 632.65381, "r": 411.05655, "b": 641.4285600000001, "coord_origin": "TOPLEFT"}}]}, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'MGR') VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR') VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR', 'STEVE') The following function invocation returns a value of 0: VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JUDY', 'TONY')"}, {"label": "table", "id": 12, "page_no": 11, "cluster": {"id": 12, "label": "table", "bbox": {"l": 63.556331634521484, "t": 104.23389434814453, "r": 548.5687255859375, "b": 296.2246398925781, "coord_origin": "TOPLEFT"}, "confidence": 0.9868634939193726, "cells": [{"id": 29, "text": "Global variable", "bbox": {"l": 70.800003, "t": 110.53801999999985, "r": 134.99071, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Type", "bbox": {"l": 202.8894, "t": 110.53801999999985, "r": 223.34641, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Description", "bbox": {"l": 281.8248, "t": 110.53801999999985, "r": 331.3428, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CLIENT_HOST", "bbox": {"l": 70.800003, "t": 129.49834999999996, "r": 132.7209, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "VARCHAR(255)", "bbox": {"l": 202.89029, "t": 129.49834999999996, "r": 267.07651, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Host name of the current client as returned by the system", "bbox": {"l": 281.84732, "t": 129.49834999999996, "r": 510.17548, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "CLIENT_IPADDR", "bbox": {"l": 70.800018, "t": 148.51806999999997, "r": 140.66522, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "VARCHAR(128)", "bbox": {"l": 202.87231, "t": 148.51806999999997, "r": 267.07739, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "IP address of the current client as returned by the system", "bbox": {"l": 281.84549, "t": 148.51806999999997, "r": 509.60583, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "CLIENT_PORT ", "bbox": {"l": 70.800018, "t": 167.53778, "r": 134.98264, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "INTEGER", "bbox": {"l": 202.90294, "t": 167.53778, "r": 242.80084, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Port used by the current client to communicate with the server", "bbox": {"l": 281.79785, "t": 167.53778, "r": 527.59222, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "PACKAGE_NAME", "bbox": {"l": 70.800018, "t": 186.5575, "r": 143.50925, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "VARCHAR(128)", "bbox": {"l": 202.80576, "t": 186.5575, "r": 267.06937, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Name of the currently running package", "bbox": {"l": 281.85187, "t": 186.5575, "r": 436.57259999999997, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "PACKAGE_SCHEMA", "bbox": {"l": 70.800018, "t": 205.51782000000003, "r": 156.01654, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "VARCHAR(128)", "bbox": {"l": 202.83545, "t": 205.51782000000003, "r": 267.08646, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Schema name of the currently running package", "bbox": {"l": 281.87076, "t": 205.51782000000003, "r": 470.44678, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "PACKAGE_VERSION", "bbox": {"l": 70.800018, "t": 224.53754000000004, "r": 157.89932, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "VARCHAR(64)", "bbox": {"l": 202.72472, "t": 224.53754000000004, "r": 261.98254, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Version identifier of the currently running package", "bbox": {"l": 281.74924, "t": 224.53754000000004, "r": 478.8438100000001, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ROUTINE_SCHEMA", "bbox": {"l": 70.800018, "t": 243.55724999999995, "r": 154.41992, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "VARCHAR(128)", "bbox": {"l": 202.79312, "t": 243.55724999999995, "r": 267.09274, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Schema name of the currently running routine", "bbox": {"l": 281.87164, "t": 243.55724999999995, "r": 464.26022, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ROUTINE_SPECIFIC_NAME", "bbox": {"l": 70.800018, "t": 262.51757999999995, "r": 188.43991, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "VARCHAR(128)", "bbox": {"l": 202.84441, "t": 262.51757999999995, "r": 267.03693, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Name of the currently running routine", "bbox": {"l": 281.80682, "t": 262.51757999999995, "r": 430.40045, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "ROUTINE_TYPE", "bbox": {"l": 70.800034, "t": 281.53726, "r": 139.43135, "b": 289.86227, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "CHAR(1)", "bbox": {"l": 202.74635, "t": 281.53726, "r": 239.28996000000004, "b": 289.86227, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Type of the currently running routine", "bbox": {"l": 281.79065, "t": 281.53726, "r": 425.09131, "b": 289.86227, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "ched", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl"], "num_rows": 10, "num_cols": 3, "table_cells": [{"bbox": {"l": 70.800003, "t": 110.53801999999985, "r": 134.99071, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Global variable", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 202.8894, "t": 110.53801999999985, "r": 223.34641, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Type", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 281.8248, "t": 110.53801999999985, "r": 331.3428, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Description", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800003, "t": 129.49834999999996, "r": 132.7209, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CLIENT_HOST", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.89029, "t": 129.49834999999996, "r": 267.07651, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(255)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.84732, "t": 129.49834999999996, "r": 510.17548, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Host name of the current client as returned by the system", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 148.51806999999997, "r": 140.66522, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CLIENT_IPADDR", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.87231, "t": 148.51806999999997, "r": 267.07739, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.84549, "t": 148.51806999999997, "r": 509.60583, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "IP address of the current client as returned by the system", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 167.53778, "r": 134.98264, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CLIENT_PORT", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.90294, "t": 167.53778, "r": 242.80084, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "INTEGER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.79785, "t": 167.53778, "r": 527.59222, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Port used by the current client to communicate with the server", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 186.5575, "r": 143.50925, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PACKAGE_NAME", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.80576, "t": 186.5575, "r": 267.06937, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.85187, "t": 186.5575, "r": 436.57259999999997, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Name of the currently running package", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 205.51782000000003, "r": 156.01654, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PACKAGE_SCHEMA", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.83545, "t": 205.51782000000003, "r": 267.08646, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.87076, "t": 205.51782000000003, "r": 470.44678, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Schema name of the currently running package", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 224.53754000000004, "r": 157.89932, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PACKAGE_VERSION", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.72472, "t": 224.53754000000004, "r": 261.98254, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(64)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.74924, "t": 224.53754000000004, "r": 478.8438100000001, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Version identifier of the currently running package", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 243.55724999999995, "r": 154.41992, "b": 251.8822, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ROUTINE_SCHEMA", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.79312, "t": 243.55724999999995, "r": 267.09274, "b": 251.8822, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.87164, "t": 243.55724999999995, "r": 464.26022, "b": 251.8822, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Schema name of the currently running routine", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 262.51757999999995, "r": 188.43991, "b": 270.84253, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ROUTINE_SPECIFIC_NAME", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.84441, "t": 262.51757999999995, "r": 267.03693, "b": 270.84253, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.80682, "t": 262.51757999999995, "r": 430.40045, "b": 270.84253, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Name of the currently running routine", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800034, "t": 281.53726, "r": 139.43135, "b": 289.86227, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ROUTINE_TYPE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.74635, "t": 281.53726, "r": 239.28996000000004, "b": 289.86227, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "CHAR(1)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.79065, "t": 281.53726, "r": 425.09131, "b": 289.86227, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Type of the currently running routine", "column_header": false, "row_header": false, "row_section": false}]}], "headers": [{"label": "page_footer", "id": 0, "page_no": 11, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.85088348388672, "t": 754.3745727539062, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9187920093536377, "cells": [{"id": 0, "text": "20 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "20"}, {"label": "page_footer", "id": 1, "page_no": 11, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.31550598144531, "t": 754.6971435546875, "r": 334.42142, "b": 763.9706420898438, "coord_origin": "TOPLEFT"}, "confidence": 0.9505078196525574, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 12, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "27", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "RETURN", "bbox": {"l": 136.79959, "t": 71.65845000000002, "r": 166.73935, "b": 80.43322999999998, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "CASE", "bbox": {"l": 136.79959, "t": 83.65826000000004, "r": 156.77934, "b": 92.43304, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR', 'EMP' ) = 1", "bbox": {"l": 147.26993, "t": 95.65808000000015, "r": 466.61502, "b": 104.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "THEN EMPLOYEES . DATE_OF_BIRTH", "bbox": {"l": 147.73068, "t": 107.65790000000004, "r": 311.69717, "b": 116.43268, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 147.31944, "t": 131.65752999999995, "r": 436.61547999999993, "b": 140.43231000000003, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "AND SESSION_USER = EMPLOYEES . USER_ID", "bbox": {"l": 147.54245, "t": 143.65734999999995, "r": 351.65668, "b": 152.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "THEN EMPLOYEES . DATE_OF_BIRTH", "bbox": {"l": 147.73068, "t": 155.65716999999995, "r": 311.69717, "b": 164.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 147.31944, "t": 179.65679999999998, "r": 436.61547999999993, "b": 188.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "AND SESSION_USER <> EMPLOYEES . USER_ID", "bbox": {"l": 147.52335, "t": 191.65661999999998, "r": 356.63669, "b": 200.43140000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "THEN ( 9999 || '-' ||", "bbox": {"l": 147.63832, "t": 203.65643, "r": 261.44492, "b": 212.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "MONTH ( EMPLOYEES . DATE_OF_BIRTH ) || '-'", "bbox": {"l": 272.28363, "t": 203.65643, "r": 499.89682, "b": 212.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "||", "bbox": {"l": 510.73557, "t": 203.65643, "r": 521.57428, "b": 212.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "DAY (EMPLOYEES.DATE_OF_BIRTH ))", "bbox": {"l": 160.78555, "t": 215.65625, "r": 346.6767, "b": 224.43102999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "ELSE NULL", "bbox": {"l": 149.51941, "t": 227.65607, "r": 206.75861, "b": 236.43084999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": " END", "bbox": {"l": 136.79959, "t": 239.65588000000002, "r": 156.77934, "b": 248.43066, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": " ENABLE ;", "bbox": {"l": 136.79959, "t": 251.65570000000002, "r": 186.7191, "b": 260.43048, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "2.", "bbox": {"l": 136.79959, "t": 275.50591999999995, "r": 145.18994, "b": 284.7189, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "The other column to mask in this example is the TAX_ID information. In this example, the ", "bbox": {"l": 147.98672, "t": 275.50591999999995, "r": 547.21222, "b": 284.7189, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "rules to enforce include the following ones:", "bbox": {"l": 151.19977, "t": 287.50574, "r": 339.37903, "b": 296.71871999999996, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "-", "bbox": {"l": 152.0394, "t": 304.48553000000004, "r": 157.61201, "b": 313.69852000000003, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Human Resources can see the unmasked TAX_ID of the employees.", "bbox": {"l": 165.59894, "t": 304.48553000000004, "r": 469.1528, "b": 313.69852000000003, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "-", "bbox": {"l": 152.0394, "t": 321.52512, "r": 157.60504, "b": 330.7381, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Employees can see only their own unmasked TAX_ID.", "bbox": {"l": 165.59894, "t": 321.52512, "r": 403.95953, "b": 330.7381, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "-", "bbox": {"l": 152.0394, "t": 338.50491, "r": 157.57019, "b": 347.7179, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Managers see a masked version of TAX_ID with the first five characters replaced with ", "bbox": {"l": 165.59894, "t": 338.50491, "r": 545.16846, "b": 347.7179, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "the X character (for example, XXX-XX-1234).", "bbox": {"l": 165.59894, "t": 350.50473, "r": 364.67947, "b": 359.71771, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "-", "bbox": {"l": 152.0394, "t": 367.48453, "r": 157.59309, "b": 376.6975100000001, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Any other person sees the entire TAX_ID as masked, for example, XXX-XX-XXXX.", "bbox": {"l": 165.59995, "t": 367.48453, "r": 529.46362, "b": 376.6975100000001, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "To implement this column mask, run the SQL statement that is shown in Example 3-9.", "bbox": {"l": 151.19978, "t": 384.52411, "r": 530.0603, "b": 393.73709, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Example 3-9 Creating a mask on the TAX_ID column", "bbox": {"l": 136.8, "t": 406.51801, "r": 351.9873, "b": 414.84302, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CREATE MASK", "bbox": {"l": 136.8, "t": 423.67810000000003, "r": 192.91296, "b": 432.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "HR_SCHEMA.MASK_TAX_ID_ON_EMPLOYEES ", "bbox": {"l": 203.11533, "t": 423.67810000000003, "r": 381.65659, "b": 432.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "ON", "bbox": {"l": 136.8, "t": 435.67792, "r": 148.54184, "b": 444.45270000000005, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "HR_SCHEMA.EMPLOYEES AS EMPLOYEES ", "bbox": {"l": 177.89645, "t": 435.67792, "r": 371.63684, "b": 444.45270000000005, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "FOR COLUMN", "bbox": {"l": 136.8, "t": 447.67773, "r": 199.25916, "b": 456.45251, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "TAX_ID", "bbox": {"l": 211.75098, "t": 447.67773, "r": 249.22647, "b": 456.45251, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "RETURN ", "bbox": {"l": 136.8, "t": 459.67755, "r": 176.75952, "b": 468.45233, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "CASE ", "bbox": {"l": 136.8, "t": 471.67737, "r": 161.75977, "b": 480.45215, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1", "bbox": {"l": 152.84189, "t": 483.67719, "r": 441.59589, "b": 492.45197, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "THEN EMPLOYEES . TAX_ID ", "bbox": {"l": 154.01309, "t": 495.677, "r": 291.7178, "b": 504.45178, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 ", "bbox": {"l": 152.80757, "t": 519.67661, "r": 451.6156, "b": 528.45139, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "AND SESSION_USER = EMPLOYEES . USER_ID ", "bbox": {"l": 153.21835, "t": 531.67642, "r": 366.65683, "b": 540.45117, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "THEN EMPLOYEES . TAX_ID", "bbox": {"l": 154.09363, "t": 543.6762200000001, "r": 286.67804, "b": 552.45097, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 152.82599, "t": 567.67583, "r": 446.63561999999996, "b": 576.45058, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "AND SESSION_USER <> EMPLOYEES . USER_ID ", "bbox": {"l": 153.18398, "t": 579.67563, "r": 371.63684, "b": 588.45038, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( EMPLOYEES . TAX_ID , 8 , 4 ) )", "bbox": {"l": 152.60088, "t": 591.67543, "r": 526.55469, "b": 600.45018, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1 ", "bbox": {"l": 152.80757, "t": 615.67505, "r": 451.6156, "b": 624.4498, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "THEN EMPLOYEES . TAX_ID ", "bbox": {"l": 154.01309, "t": 627.67485, "r": 291.7178, "b": 636.4496, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ELSE 'XXX-XX-XXXX' ", "bbox": {"l": 154.5134, "t": 651.67447, "r": 266.69827, "b": 660.44922, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "END", "bbox": {"l": 136.8, "t": 663.67427, "r": 157.7877, "b": 672.44904, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "ENABLE ;", "bbox": {"l": 136.8, "t": 675.67409, "r": 181.73952, "b": 684.44884, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 344.5617370605469, "t": 754.6708374023438, "r": 523.60162, "b": 764.1358032226562, "coord_origin": "TOPLEFT"}, "confidence": 0.9556928277015686, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.6422729492188, "t": 754.1753540039062, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9105784296989441, "cells": [{"id": 1, "text": "27", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 136.79959, "t": 71.65845000000002, "r": 166.73935, "b": 92.43304, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "RETURN", "bbox": {"l": 136.79959, "t": 71.65845000000002, "r": 166.73935, "b": 80.43322999999998, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "CASE", "bbox": {"l": 136.79959, "t": 83.65826000000004, "r": 156.77934, "b": 92.43304, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "code", "bbox": {"l": 136.79959, "t": 91.76913452148438, "r": 521.57428, "b": 261.5705871582031, "coord_origin": "TOPLEFT"}, "confidence": 0.778520941734314, "cells": [{"id": 4, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR', 'EMP' ) = 1", "bbox": {"l": 147.26993, "t": 95.65808000000015, "r": 466.61502, "b": 104.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "THEN EMPLOYEES . DATE_OF_BIRTH", "bbox": {"l": 147.73068, "t": 107.65790000000004, "r": 311.69717, "b": 116.43268, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 147.31944, "t": 131.65752999999995, "r": 436.61547999999993, "b": 140.43231000000003, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "AND SESSION_USER = EMPLOYEES . USER_ID", "bbox": {"l": 147.54245, "t": 143.65734999999995, "r": 351.65668, "b": 152.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "THEN EMPLOYEES . DATE_OF_BIRTH", "bbox": {"l": 147.73068, "t": 155.65716999999995, "r": 311.69717, "b": 164.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 147.31944, "t": 179.65679999999998, "r": 436.61547999999993, "b": 188.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "AND SESSION_USER <> EMPLOYEES . USER_ID", "bbox": {"l": 147.52335, "t": 191.65661999999998, "r": 356.63669, "b": 200.43140000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "THEN ( 9999 || '-' ||", "bbox": {"l": 147.63832, "t": 203.65643, "r": 261.44492, "b": 212.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "MONTH ( EMPLOYEES . DATE_OF_BIRTH ) || '-'", "bbox": {"l": 272.28363, "t": 203.65643, "r": 499.89682, "b": 212.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "||", "bbox": {"l": 510.73557, "t": 203.65643, "r": 521.57428, "b": 212.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "DAY (EMPLOYEES.DATE_OF_BIRTH ))", "bbox": {"l": 160.78555, "t": 215.65625, "r": 346.6767, "b": 224.43102999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "ELSE NULL", "bbox": {"l": 149.51941, "t": 227.65607, "r": 206.75861, "b": 236.43084999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": " END", "bbox": {"l": 136.79959, "t": 239.65588000000002, "r": 156.77934, "b": 248.43066, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": " ENABLE ;", "bbox": {"l": 136.79959, "t": 251.65570000000002, "r": 186.7191, "b": 260.43048, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 135.86044311523438, "t": 274.4537353515625, "r": 547.21222, "b": 296.77191162109375, "coord_origin": "TOPLEFT"}, "confidence": 0.8678946495056152, "cells": [{"id": 18, "text": "2.", "bbox": {"l": 136.79959, "t": 275.50591999999995, "r": 145.18994, "b": 284.7189, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "The other column to mask in this example is the TAX_ID information. In this example, the ", "bbox": {"l": 147.98672, "t": 275.50591999999995, "r": 547.21222, "b": 284.7189, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "rules to enforce include the following ones:", "bbox": {"l": 151.19977, "t": 287.50574, "r": 339.37903, "b": 296.71871999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 151.1599578857422, "t": 303.3277282714844, "r": 469.1528, "b": 313.69852000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9461130499839783, "cells": [{"id": 21, "text": "-", "bbox": {"l": 152.0394, "t": 304.48553000000004, "r": 157.61201, "b": 313.69852000000003, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Human Resources can see the unmasked TAX_ID of the employees.", "bbox": {"l": 165.59894, "t": 304.48553000000004, "r": 469.1528, "b": 313.69852000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 151.2740936279297, "t": 320.54925537109375, "r": 403.95953, "b": 330.8575439453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9467734694480896, "cells": [{"id": 23, "text": "-", "bbox": {"l": 152.0394, "t": 321.52512, "r": 157.60504, "b": 330.7381, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Employees can see only their own unmasked TAX_ID.", "bbox": {"l": 165.59894, "t": 321.52512, "r": 403.95953, "b": 330.7381, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 151.4427947998047, "t": 337.3158264160156, "r": 545.16846, "b": 359.71771, "coord_origin": "TOPLEFT"}, "confidence": 0.9705167412757874, "cells": [{"id": 25, "text": "-", "bbox": {"l": 152.0394, "t": 338.50491, "r": 157.57019, "b": 347.7179, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Managers see a masked version of TAX_ID with the first five characters replaced with ", "bbox": {"l": 165.59894, "t": 338.50491, "r": 545.16846, "b": 347.7179, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "the X character (for example, XXX-XX-1234).", "bbox": {"l": 165.59894, "t": 350.50473, "r": 364.67947, "b": 359.71771, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 151.51747131347656, "t": 366.6339111328125, "r": 529.46362, "b": 377.1689147949219, "coord_origin": "TOPLEFT"}, "confidence": 0.9469640254974365, "cells": [{"id": 28, "text": "-", "bbox": {"l": 152.0394, "t": 367.48453, "r": 157.59309, "b": 376.6975100000001, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Any other person sees the entire TAX_ID as masked, for example, XXX-XX-XXXX.", "bbox": {"l": 165.59995, "t": 367.48453, "r": 529.46362, "b": 376.6975100000001, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 150.69093322753906, "t": 383.80133056640625, "r": 530.0603, "b": 394.17559814453125, "coord_origin": "TOPLEFT"}, "confidence": 0.7003507614135742, "cells": [{"id": 30, "text": "To implement this column mask, run the SQL statement that is shown in Example 3-9.", "bbox": {"l": 151.19978, "t": 384.52411, "r": 530.0603, "b": 393.73709, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "caption", "bbox": {"l": 136.25662231445312, "t": 405.446044921875, "r": 352.31475830078125, "b": 415.0381164550781, "coord_origin": "TOPLEFT"}, "confidence": 0.8488205075263977, "cells": [{"id": 31, "text": "Example 3-9 Creating a mask on the TAX_ID column", "bbox": {"l": 136.8, "t": 406.51801, "r": 351.9873, "b": 414.84302, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "code", "bbox": {"l": 135.95343017578125, "t": 418.5181884765625, "r": 535.87548828125, "b": 688.5432739257812, "coord_origin": "TOPLEFT"}, "confidence": 0.8411229848861694, "cells": [{"id": 32, "text": "CREATE MASK", "bbox": {"l": 136.8, "t": 423.67810000000003, "r": 192.91296, "b": 432.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "HR_SCHEMA.MASK_TAX_ID_ON_EMPLOYEES ", "bbox": {"l": 203.11533, "t": 423.67810000000003, "r": 381.65659, "b": 432.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "ON", "bbox": {"l": 136.8, "t": 435.67792, "r": 148.54184, "b": 444.45270000000005, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "HR_SCHEMA.EMPLOYEES AS EMPLOYEES ", "bbox": {"l": 177.89645, "t": 435.67792, "r": 371.63684, "b": 444.45270000000005, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "FOR COLUMN", "bbox": {"l": 136.8, "t": 447.67773, "r": 199.25916, "b": 456.45251, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "TAX_ID", "bbox": {"l": 211.75098, "t": 447.67773, "r": 249.22647, "b": 456.45251, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "RETURN ", "bbox": {"l": 136.8, "t": 459.67755, "r": 176.75952, "b": 468.45233, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "CASE ", "bbox": {"l": 136.8, "t": 471.67737, "r": 161.75977, "b": 480.45215, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1", "bbox": {"l": 152.84189, "t": 483.67719, "r": 441.59589, "b": 492.45197, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "THEN EMPLOYEES . TAX_ID ", "bbox": {"l": 154.01309, "t": 495.677, "r": 291.7178, "b": 504.45178, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 ", "bbox": {"l": 152.80757, "t": 519.67661, "r": 451.6156, "b": 528.45139, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "AND SESSION_USER = EMPLOYEES . USER_ID ", "bbox": {"l": 153.21835, "t": 531.67642, "r": 366.65683, "b": 540.45117, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "THEN EMPLOYEES . TAX_ID", "bbox": {"l": 154.09363, "t": 543.6762200000001, "r": 286.67804, "b": 552.45097, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 152.82599, "t": 567.67583, "r": 446.63561999999996, "b": 576.45058, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "AND SESSION_USER <> EMPLOYEES . USER_ID ", "bbox": {"l": 153.18398, "t": 579.67563, "r": 371.63684, "b": 588.45038, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( EMPLOYEES . TAX_ID , 8 , 4 ) )", "bbox": {"l": 152.60088, "t": 591.67543, "r": 526.55469, "b": 600.45018, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1 ", "bbox": {"l": 152.80757, "t": 615.67505, "r": 451.6156, "b": 624.4498, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "THEN EMPLOYEES . TAX_ID ", "bbox": {"l": 154.01309, "t": 627.67485, "r": 291.7178, "b": 636.4496, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ELSE 'XXX-XX-XXXX' ", "bbox": {"l": 154.5134, "t": 651.67447, "r": 266.69827, "b": 660.44922, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "END", "bbox": {"l": 136.8, "t": 663.67427, "r": 157.7877, "b": 672.44904, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "ENABLE ;", "bbox": {"l": 136.8, "t": 675.67409, "r": 181.73952, "b": 684.44884, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 12, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.5617370605469, "t": 754.6708374023438, "r": 523.60162, "b": 764.1358032226562, "coord_origin": "TOPLEFT"}, "confidence": 0.9556928277015686, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 12, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6422729492188, "t": 754.1753540039062, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9105784296989441, "cells": [{"id": 1, "text": "27", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "27"}, {"label": "text", "id": 2, "page_no": 12, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.79959, "t": 71.65845000000002, "r": 166.73935, "b": 92.43304, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "RETURN", "bbox": {"l": 136.79959, "t": 71.65845000000002, "r": 166.73935, "b": 80.43322999999998, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "CASE", "bbox": {"l": 136.79959, "t": 83.65826000000004, "r": 156.77934, "b": 92.43304, "coord_origin": "TOPLEFT"}}]}, "text": "RETURN CASE"}, {"label": "code", "id": 3, "page_no": 12, "cluster": {"id": 3, "label": "code", "bbox": {"l": 136.79959, "t": 91.76913452148438, "r": 521.57428, "b": 261.5705871582031, "coord_origin": "TOPLEFT"}, "confidence": 0.778520941734314, "cells": [{"id": 4, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR', 'EMP' ) = 1", "bbox": {"l": 147.26993, "t": 95.65808000000015, "r": 466.61502, "b": 104.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "THEN EMPLOYEES . DATE_OF_BIRTH", "bbox": {"l": 147.73068, "t": 107.65790000000004, "r": 311.69717, "b": 116.43268, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 147.31944, "t": 131.65752999999995, "r": 436.61547999999993, "b": 140.43231000000003, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "AND SESSION_USER = EMPLOYEES . USER_ID", "bbox": {"l": 147.54245, "t": 143.65734999999995, "r": 351.65668, "b": 152.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "THEN EMPLOYEES . DATE_OF_BIRTH", "bbox": {"l": 147.73068, "t": 155.65716999999995, "r": 311.69717, "b": 164.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 147.31944, "t": 179.65679999999998, "r": 436.61547999999993, "b": 188.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "AND SESSION_USER <> EMPLOYEES . USER_ID", "bbox": {"l": 147.52335, "t": 191.65661999999998, "r": 356.63669, "b": 200.43140000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "THEN ( 9999 || '-' ||", "bbox": {"l": 147.63832, "t": 203.65643, "r": 261.44492, "b": 212.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "MONTH ( EMPLOYEES . DATE_OF_BIRTH ) || '-'", "bbox": {"l": 272.28363, "t": 203.65643, "r": 499.89682, "b": 212.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "||", "bbox": {"l": 510.73557, "t": 203.65643, "r": 521.57428, "b": 212.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "DAY (EMPLOYEES.DATE_OF_BIRTH ))", "bbox": {"l": 160.78555, "t": 215.65625, "r": 346.6767, "b": 224.43102999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "ELSE NULL", "bbox": {"l": 149.51941, "t": 227.65607, "r": 206.75861, "b": 236.43084999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": " END", "bbox": {"l": 136.79959, "t": 239.65588000000002, "r": 156.77934, "b": 248.43066, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": " ENABLE ;", "bbox": {"l": 136.79959, "t": 251.65570000000002, "r": 186.7191, "b": 260.43048, "coord_origin": "TOPLEFT"}}]}, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR', 'EMP' ) = 1 THEN EMPLOYEES . DATE_OF_BIRTH WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER = EMPLOYEES . USER_ID THEN EMPLOYEES . DATE_OF_BIRTH WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER <> EMPLOYEES . USER_ID THEN ( 9999 || '-' || MONTH ( EMPLOYEES . DATE_OF_BIRTH ) || '-' || DAY (EMPLOYEES.DATE_OF_BIRTH )) ELSE NULL END ENABLE ;"}, {"label": "list_item", "id": 4, "page_no": 12, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.86044311523438, "t": 274.4537353515625, "r": 547.21222, "b": 296.77191162109375, "coord_origin": "TOPLEFT"}, "confidence": 0.8678946495056152, "cells": [{"id": 18, "text": "2.", "bbox": {"l": 136.79959, "t": 275.50591999999995, "r": 145.18994, "b": 284.7189, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "The other column to mask in this example is the TAX_ID information. In this example, the ", "bbox": {"l": 147.98672, "t": 275.50591999999995, "r": 547.21222, "b": 284.7189, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "rules to enforce include the following ones:", "bbox": {"l": 151.19977, "t": 287.50574, "r": 339.37903, "b": 296.71871999999996, "coord_origin": "TOPLEFT"}}]}, "text": "2. The other column to mask in this example is the TAX_ID information. In this example, the rules to enforce include the following ones:"}, {"label": "list_item", "id": 5, "page_no": 12, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 151.1599578857422, "t": 303.3277282714844, "r": 469.1528, "b": 313.69852000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9461130499839783, "cells": [{"id": 21, "text": "-", "bbox": {"l": 152.0394, "t": 304.48553000000004, "r": 157.61201, "b": 313.69852000000003, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Human Resources can see the unmasked TAX_ID of the employees.", "bbox": {"l": 165.59894, "t": 304.48553000000004, "r": 469.1528, "b": 313.69852000000003, "coord_origin": "TOPLEFT"}}]}, "text": "-Human Resources can see the unmasked TAX_ID of the employees."}, {"label": "list_item", "id": 6, "page_no": 12, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 151.2740936279297, "t": 320.54925537109375, "r": 403.95953, "b": 330.8575439453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9467734694480896, "cells": [{"id": 23, "text": "-", "bbox": {"l": 152.0394, "t": 321.52512, "r": 157.60504, "b": 330.7381, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Employees can see only their own unmasked TAX_ID.", "bbox": {"l": 165.59894, "t": 321.52512, "r": 403.95953, "b": 330.7381, "coord_origin": "TOPLEFT"}}]}, "text": "-Employees can see only their own unmasked TAX_ID."}, {"label": "list_item", "id": 7, "page_no": 12, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 151.4427947998047, "t": 337.3158264160156, "r": 545.16846, "b": 359.71771, "coord_origin": "TOPLEFT"}, "confidence": 0.9705167412757874, "cells": [{"id": 25, "text": "-", "bbox": {"l": 152.0394, "t": 338.50491, "r": 157.57019, "b": 347.7179, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Managers see a masked version of TAX_ID with the first five characters replaced with ", "bbox": {"l": 165.59894, "t": 338.50491, "r": 545.16846, "b": 347.7179, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "the X character (for example, XXX-XX-1234).", "bbox": {"l": 165.59894, "t": 350.50473, "r": 364.67947, "b": 359.71771, "coord_origin": "TOPLEFT"}}]}, "text": "-Managers see a masked version of TAX_ID with the first five characters replaced with the X character (for example, XXX-XX-1234)."}, {"label": "list_item", "id": 8, "page_no": 12, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 151.51747131347656, "t": 366.6339111328125, "r": 529.46362, "b": 377.1689147949219, "coord_origin": "TOPLEFT"}, "confidence": 0.9469640254974365, "cells": [{"id": 28, "text": "-", "bbox": {"l": 152.0394, "t": 367.48453, "r": 157.59309, "b": 376.6975100000001, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Any other person sees the entire TAX_ID as masked, for example, XXX-XX-XXXX.", "bbox": {"l": 165.59995, "t": 367.48453, "r": 529.46362, "b": 376.6975100000001, "coord_origin": "TOPLEFT"}}]}, "text": "-Any other person sees the entire TAX_ID as masked, for example, XXX-XX-XXXX."}, {"label": "list_item", "id": 9, "page_no": 12, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 150.69093322753906, "t": 383.80133056640625, "r": 530.0603, "b": 394.17559814453125, "coord_origin": "TOPLEFT"}, "confidence": 0.7003507614135742, "cells": [{"id": 30, "text": "To implement this column mask, run the SQL statement that is shown in Example 3-9.", "bbox": {"l": 151.19978, "t": 384.52411, "r": 530.0603, "b": 393.73709, "coord_origin": "TOPLEFT"}}]}, "text": "To implement this column mask, run the SQL statement that is shown in Example 3-9."}, {"label": "caption", "id": 10, "page_no": 12, "cluster": {"id": 10, "label": "caption", "bbox": {"l": 136.25662231445312, "t": 405.446044921875, "r": 352.31475830078125, "b": 415.0381164550781, "coord_origin": "TOPLEFT"}, "confidence": 0.8488205075263977, "cells": [{"id": 31, "text": "Example 3-9 Creating a mask on the TAX_ID column", "bbox": {"l": 136.8, "t": 406.51801, "r": 351.9873, "b": 414.84302, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-9 Creating a mask on the TAX_ID column"}, {"label": "code", "id": 11, "page_no": 12, "cluster": {"id": 11, "label": "code", "bbox": {"l": 135.95343017578125, "t": 418.5181884765625, "r": 535.87548828125, "b": 688.5432739257812, "coord_origin": "TOPLEFT"}, "confidence": 0.8411229848861694, "cells": [{"id": 32, "text": "CREATE MASK", "bbox": {"l": 136.8, "t": 423.67810000000003, "r": 192.91296, "b": 432.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "HR_SCHEMA.MASK_TAX_ID_ON_EMPLOYEES ", "bbox": {"l": 203.11533, "t": 423.67810000000003, "r": 381.65659, "b": 432.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "ON", "bbox": {"l": 136.8, "t": 435.67792, "r": 148.54184, "b": 444.45270000000005, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "HR_SCHEMA.EMPLOYEES AS EMPLOYEES ", "bbox": {"l": 177.89645, "t": 435.67792, "r": 371.63684, "b": 444.45270000000005, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "FOR COLUMN", "bbox": {"l": 136.8, "t": 447.67773, "r": 199.25916, "b": 456.45251, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "TAX_ID", "bbox": {"l": 211.75098, "t": 447.67773, "r": 249.22647, "b": 456.45251, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "RETURN ", "bbox": {"l": 136.8, "t": 459.67755, "r": 176.75952, "b": 468.45233, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "CASE ", "bbox": {"l": 136.8, "t": 471.67737, "r": 161.75977, "b": 480.45215, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1", "bbox": {"l": 152.84189, "t": 483.67719, "r": 441.59589, "b": 492.45197, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "THEN EMPLOYEES . TAX_ID ", "bbox": {"l": 154.01309, "t": 495.677, "r": 291.7178, "b": 504.45178, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 ", "bbox": {"l": 152.80757, "t": 519.67661, "r": 451.6156, "b": 528.45139, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "AND SESSION_USER = EMPLOYEES . USER_ID ", "bbox": {"l": 153.21835, "t": 531.67642, "r": 366.65683, "b": 540.45117, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "THEN EMPLOYEES . TAX_ID", "bbox": {"l": 154.09363, "t": 543.6762200000001, "r": 286.67804, "b": 552.45097, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 152.82599, "t": 567.67583, "r": 446.63561999999996, "b": 576.45058, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "AND SESSION_USER <> EMPLOYEES . USER_ID ", "bbox": {"l": 153.18398, "t": 579.67563, "r": 371.63684, "b": 588.45038, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( EMPLOYEES . TAX_ID , 8 , 4 ) )", "bbox": {"l": 152.60088, "t": 591.67543, "r": 526.55469, "b": 600.45018, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1 ", "bbox": {"l": 152.80757, "t": 615.67505, "r": 451.6156, "b": 624.4498, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "THEN EMPLOYEES . TAX_ID ", "bbox": {"l": 154.01309, "t": 627.67485, "r": 291.7178, "b": 636.4496, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ELSE 'XXX-XX-XXXX' ", "bbox": {"l": 154.5134, "t": 651.67447, "r": 266.69827, "b": 660.44922, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "END", "bbox": {"l": 136.8, "t": 663.67427, "r": 157.7877, "b": 672.44904, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "ENABLE ;", "bbox": {"l": 136.8, "t": 675.67409, "r": 181.73952, "b": 684.44884, "coord_origin": "TOPLEFT"}}]}, "text": "CREATE MASK HR_SCHEMA.MASK_TAX_ID_ON_EMPLOYEES ON HR_SCHEMA.EMPLOYEES AS EMPLOYEES FOR COLUMN TAX_ID RETURN CASE WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1 THEN EMPLOYEES . TAX_ID WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER = EMPLOYEES . USER_ID THEN EMPLOYEES . TAX_ID WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER <> EMPLOYEES . USER_ID THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( EMPLOYEES . TAX_ID , 8 , 4 ) ) WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1 THEN EMPLOYEES . TAX_ID ELSE 'XXX-XX-XXXX' END ENABLE ;"}], "body": [{"label": "text", "id": 2, "page_no": 12, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.79959, "t": 71.65845000000002, "r": 166.73935, "b": 92.43304, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "RETURN", "bbox": {"l": 136.79959, "t": 71.65845000000002, "r": 166.73935, "b": 80.43322999999998, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "CASE", "bbox": {"l": 136.79959, "t": 83.65826000000004, "r": 156.77934, "b": 92.43304, "coord_origin": "TOPLEFT"}}]}, "text": "RETURN CASE"}, {"label": "code", "id": 3, "page_no": 12, "cluster": {"id": 3, "label": "code", "bbox": {"l": 136.79959, "t": 91.76913452148438, "r": 521.57428, "b": 261.5705871582031, "coord_origin": "TOPLEFT"}, "confidence": 0.778520941734314, "cells": [{"id": 4, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR', 'EMP' ) = 1", "bbox": {"l": 147.26993, "t": 95.65808000000015, "r": 466.61502, "b": 104.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "THEN EMPLOYEES . DATE_OF_BIRTH", "bbox": {"l": 147.73068, "t": 107.65790000000004, "r": 311.69717, "b": 116.43268, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 147.31944, "t": 131.65752999999995, "r": 436.61547999999993, "b": 140.43231000000003, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "AND SESSION_USER = EMPLOYEES . USER_ID", "bbox": {"l": 147.54245, "t": 143.65734999999995, "r": 351.65668, "b": 152.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "THEN EMPLOYEES . DATE_OF_BIRTH", "bbox": {"l": 147.73068, "t": 155.65716999999995, "r": 311.69717, "b": 164.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 147.31944, "t": 179.65679999999998, "r": 436.61547999999993, "b": 188.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "AND SESSION_USER <> EMPLOYEES . USER_ID", "bbox": {"l": 147.52335, "t": 191.65661999999998, "r": 356.63669, "b": 200.43140000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "THEN ( 9999 || '-' ||", "bbox": {"l": 147.63832, "t": 203.65643, "r": 261.44492, "b": 212.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "MONTH ( EMPLOYEES . DATE_OF_BIRTH ) || '-'", "bbox": {"l": 272.28363, "t": 203.65643, "r": 499.89682, "b": 212.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "||", "bbox": {"l": 510.73557, "t": 203.65643, "r": 521.57428, "b": 212.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "DAY (EMPLOYEES.DATE_OF_BIRTH ))", "bbox": {"l": 160.78555, "t": 215.65625, "r": 346.6767, "b": 224.43102999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "ELSE NULL", "bbox": {"l": 149.51941, "t": 227.65607, "r": 206.75861, "b": 236.43084999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": " END", "bbox": {"l": 136.79959, "t": 239.65588000000002, "r": 156.77934, "b": 248.43066, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": " ENABLE ;", "bbox": {"l": 136.79959, "t": 251.65570000000002, "r": 186.7191, "b": 260.43048, "coord_origin": "TOPLEFT"}}]}, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR', 'EMP' ) = 1 THEN EMPLOYEES . DATE_OF_BIRTH WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER = EMPLOYEES . USER_ID THEN EMPLOYEES . DATE_OF_BIRTH WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER <> EMPLOYEES . USER_ID THEN ( 9999 || '-' || MONTH ( EMPLOYEES . DATE_OF_BIRTH ) || '-' || DAY (EMPLOYEES.DATE_OF_BIRTH )) ELSE NULL END ENABLE ;"}, {"label": "list_item", "id": 4, "page_no": 12, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.86044311523438, "t": 274.4537353515625, "r": 547.21222, "b": 296.77191162109375, "coord_origin": "TOPLEFT"}, "confidence": 0.8678946495056152, "cells": [{"id": 18, "text": "2.", "bbox": {"l": 136.79959, "t": 275.50591999999995, "r": 145.18994, "b": 284.7189, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "The other column to mask in this example is the TAX_ID information. In this example, the ", "bbox": {"l": 147.98672, "t": 275.50591999999995, "r": 547.21222, "b": 284.7189, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "rules to enforce include the following ones:", "bbox": {"l": 151.19977, "t": 287.50574, "r": 339.37903, "b": 296.71871999999996, "coord_origin": "TOPLEFT"}}]}, "text": "2. The other column to mask in this example is the TAX_ID information. In this example, the rules to enforce include the following ones:"}, {"label": "list_item", "id": 5, "page_no": 12, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 151.1599578857422, "t": 303.3277282714844, "r": 469.1528, "b": 313.69852000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9461130499839783, "cells": [{"id": 21, "text": "-", "bbox": {"l": 152.0394, "t": 304.48553000000004, "r": 157.61201, "b": 313.69852000000003, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Human Resources can see the unmasked TAX_ID of the employees.", "bbox": {"l": 165.59894, "t": 304.48553000000004, "r": 469.1528, "b": 313.69852000000003, "coord_origin": "TOPLEFT"}}]}, "text": "-Human Resources can see the unmasked TAX_ID of the employees."}, {"label": "list_item", "id": 6, "page_no": 12, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 151.2740936279297, "t": 320.54925537109375, "r": 403.95953, "b": 330.8575439453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9467734694480896, "cells": [{"id": 23, "text": "-", "bbox": {"l": 152.0394, "t": 321.52512, "r": 157.60504, "b": 330.7381, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Employees can see only their own unmasked TAX_ID.", "bbox": {"l": 165.59894, "t": 321.52512, "r": 403.95953, "b": 330.7381, "coord_origin": "TOPLEFT"}}]}, "text": "-Employees can see only their own unmasked TAX_ID."}, {"label": "list_item", "id": 7, "page_no": 12, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 151.4427947998047, "t": 337.3158264160156, "r": 545.16846, "b": 359.71771, "coord_origin": "TOPLEFT"}, "confidence": 0.9705167412757874, "cells": [{"id": 25, "text": "-", "bbox": {"l": 152.0394, "t": 338.50491, "r": 157.57019, "b": 347.7179, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Managers see a masked version of TAX_ID with the first five characters replaced with ", "bbox": {"l": 165.59894, "t": 338.50491, "r": 545.16846, "b": 347.7179, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "the X character (for example, XXX-XX-1234).", "bbox": {"l": 165.59894, "t": 350.50473, "r": 364.67947, "b": 359.71771, "coord_origin": "TOPLEFT"}}]}, "text": "-Managers see a masked version of TAX_ID with the first five characters replaced with the X character (for example, XXX-XX-1234)."}, {"label": "list_item", "id": 8, "page_no": 12, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 151.51747131347656, "t": 366.6339111328125, "r": 529.46362, "b": 377.1689147949219, "coord_origin": "TOPLEFT"}, "confidence": 0.9469640254974365, "cells": [{"id": 28, "text": "-", "bbox": {"l": 152.0394, "t": 367.48453, "r": 157.59309, "b": 376.6975100000001, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Any other person sees the entire TAX_ID as masked, for example, XXX-XX-XXXX.", "bbox": {"l": 165.59995, "t": 367.48453, "r": 529.46362, "b": 376.6975100000001, "coord_origin": "TOPLEFT"}}]}, "text": "-Any other person sees the entire TAX_ID as masked, for example, XXX-XX-XXXX."}, {"label": "list_item", "id": 9, "page_no": 12, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 150.69093322753906, "t": 383.80133056640625, "r": 530.0603, "b": 394.17559814453125, "coord_origin": "TOPLEFT"}, "confidence": 0.7003507614135742, "cells": [{"id": 30, "text": "To implement this column mask, run the SQL statement that is shown in Example 3-9.", "bbox": {"l": 151.19978, "t": 384.52411, "r": 530.0603, "b": 393.73709, "coord_origin": "TOPLEFT"}}]}, "text": "To implement this column mask, run the SQL statement that is shown in Example 3-9."}, {"label": "caption", "id": 10, "page_no": 12, "cluster": {"id": 10, "label": "caption", "bbox": {"l": 136.25662231445312, "t": 405.446044921875, "r": 352.31475830078125, "b": 415.0381164550781, "coord_origin": "TOPLEFT"}, "confidence": 0.8488205075263977, "cells": [{"id": 31, "text": "Example 3-9 Creating a mask on the TAX_ID column", "bbox": {"l": 136.8, "t": 406.51801, "r": 351.9873, "b": 414.84302, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-9 Creating a mask on the TAX_ID column"}, {"label": "code", "id": 11, "page_no": 12, "cluster": {"id": 11, "label": "code", "bbox": {"l": 135.95343017578125, "t": 418.5181884765625, "r": 535.87548828125, "b": 688.5432739257812, "coord_origin": "TOPLEFT"}, "confidence": 0.8411229848861694, "cells": [{"id": 32, "text": "CREATE MASK", "bbox": {"l": 136.8, "t": 423.67810000000003, "r": 192.91296, "b": 432.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "HR_SCHEMA.MASK_TAX_ID_ON_EMPLOYEES ", "bbox": {"l": 203.11533, "t": 423.67810000000003, "r": 381.65659, "b": 432.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "ON", "bbox": {"l": 136.8, "t": 435.67792, "r": 148.54184, "b": 444.45270000000005, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "HR_SCHEMA.EMPLOYEES AS EMPLOYEES ", "bbox": {"l": 177.89645, "t": 435.67792, "r": 371.63684, "b": 444.45270000000005, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "FOR COLUMN", "bbox": {"l": 136.8, "t": 447.67773, "r": 199.25916, "b": 456.45251, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "TAX_ID", "bbox": {"l": 211.75098, "t": 447.67773, "r": 249.22647, "b": 456.45251, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "RETURN ", "bbox": {"l": 136.8, "t": 459.67755, "r": 176.75952, "b": 468.45233, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "CASE ", "bbox": {"l": 136.8, "t": 471.67737, "r": 161.75977, "b": 480.45215, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1", "bbox": {"l": 152.84189, "t": 483.67719, "r": 441.59589, "b": 492.45197, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "THEN EMPLOYEES . TAX_ID ", "bbox": {"l": 154.01309, "t": 495.677, "r": 291.7178, "b": 504.45178, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 ", "bbox": {"l": 152.80757, "t": 519.67661, "r": 451.6156, "b": 528.45139, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "AND SESSION_USER = EMPLOYEES . USER_ID ", "bbox": {"l": 153.21835, "t": 531.67642, "r": 366.65683, "b": 540.45117, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "THEN EMPLOYEES . TAX_ID", "bbox": {"l": 154.09363, "t": 543.6762200000001, "r": 286.67804, "b": 552.45097, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 152.82599, "t": 567.67583, "r": 446.63561999999996, "b": 576.45058, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "AND SESSION_USER <> EMPLOYEES . USER_ID ", "bbox": {"l": 153.18398, "t": 579.67563, "r": 371.63684, "b": 588.45038, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( EMPLOYEES . TAX_ID , 8 , 4 ) )", "bbox": {"l": 152.60088, "t": 591.67543, "r": 526.55469, "b": 600.45018, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1 ", "bbox": {"l": 152.80757, "t": 615.67505, "r": 451.6156, "b": 624.4498, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "THEN EMPLOYEES . TAX_ID ", "bbox": {"l": 154.01309, "t": 627.67485, "r": 291.7178, "b": 636.4496, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ELSE 'XXX-XX-XXXX' ", "bbox": {"l": 154.5134, "t": 651.67447, "r": 266.69827, "b": 660.44922, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "END", "bbox": {"l": 136.8, "t": 663.67427, "r": 157.7877, "b": 672.44904, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "ENABLE ;", "bbox": {"l": 136.8, "t": 675.67409, "r": 181.73952, "b": 684.44884, "coord_origin": "TOPLEFT"}}]}, "text": "CREATE MASK HR_SCHEMA.MASK_TAX_ID_ON_EMPLOYEES ON HR_SCHEMA.EMPLOYEES AS EMPLOYEES FOR COLUMN TAX_ID RETURN CASE WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1 THEN EMPLOYEES . TAX_ID WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER = EMPLOYEES . USER_ID THEN EMPLOYEES . TAX_ID WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER <> EMPLOYEES . USER_ID THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( EMPLOYEES . TAX_ID , 8 , 4 ) ) WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1 THEN EMPLOYEES . TAX_ID ELSE 'XXX-XX-XXXX' END ENABLE ;"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 12, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.5617370605469, "t": 754.6708374023438, "r": 523.60162, "b": 764.1358032226562, "coord_origin": "TOPLEFT"}, "confidence": 0.9556928277015686, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 12, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6422729492188, "t": 754.1753540039062, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9105784296989441, "cells": [{"id": 1, "text": "27", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "27"}]}}, {"page_no": 13, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "28 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "3.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.22156, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 3-10 shows the masks that are created in the HR_SCHEMA.", "bbox": {"l": 148.02872, "t": 71.50867000000005, "r": 449.9523899999999, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 3-10 Column masks shown in System i Navigator", "bbox": {"l": 64.800003, "t": 173.53801999999996, "r": 293.13809, "b": 181.86298, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "3.6.6", "bbox": {"l": 64.800003, "t": 202.37469, "r": 94.275139, "b": 214.36273000000006, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Activating RCAC", "bbox": {"l": 97.959534, "t": 202.37469, "r": 203.98521, "b": 214.36273000000006, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Now that you have created the row permission and the two column masks, RCAC must be ", "bbox": {"l": 136.8, "t": 228.52868999999998, "r": 537.09131, "b": 237.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "activated. The row permission and the two column masks are enabled (last clause in the ", "bbox": {"l": 136.8, "t": 240.5285, "r": 529.20422, "b": 249.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "scripts), but now you must activate RCAC on the table. To do so, complete the following steps:", "bbox": {"l": 136.8, "t": 252.52832, "r": 547.22565, "b": 261.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "1.", "bbox": {"l": 136.8, "t": 269.50811999999996, "r": 145.32378, "b": 278.72113, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Run the SQL statements that are shown in Example 3-10.", "bbox": {"l": 148.16501, "t": 269.50811999999996, "r": 409.47888, "b": 278.72113, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Example 3-10 Activating RCAC on the EMPLOYEES table ", "bbox": {"l": 136.8, "t": 291.55798, "r": 375.29099, "b": 299.88300000000004, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "/*", "bbox": {"l": 136.8, "t": 308.65811, "r": 147.22942, "b": 317.43289, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Active Row Access Control (permissions) */", "bbox": {"l": 157.65884, "t": 308.65811, "r": 376.67661, "b": 317.43289, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "/*", "bbox": {"l": 136.8, "t": 320.65793, "r": 147.70349, "b": 329.43271, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Active Column Access Control (masks)", "bbox": {"l": 158.60696, "t": 320.65793, "r": 354.86963, "b": 329.43271, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "*/", "bbox": {"l": 365.77313, "t": 320.65793, "r": 376.67661, "b": 329.43271, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ALTER TABLE HR_SCHEMA.EMPLOYEES", "bbox": {"l": 136.8, "t": 332.65775, "r": 291.7178, "b": 341.43253, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ACTIVATE ROW ACCESS CONTROL", "bbox": {"l": 136.8, "t": 344.65756, "r": 271.67831, "b": 353.43234000000007, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "ACTIVATE COLUMN ACCESS CONTROL;", "bbox": {"l": 136.8, "t": 356.65738, "r": 291.7178, "b": 365.43216, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "2.", "bbox": {"l": 136.8, "t": 380.5076, "r": 145.14954, "b": 389.72058, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Look at the definition of the EMPLOYEE table, as shown in Figure 3-11. To do this, from ", "bbox": {"l": 147.93271, "t": 380.5076, "r": 540.80145, "b": 389.72058, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "the main navigation pane of System i Navigator, click ", "bbox": {"l": 151.20013, "t": 392.50742, "r": 387.36169, "b": 401.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Schemas", "bbox": {"l": 387.29993, "t": 392.50742, "r": 431.07614, "b": 401.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "\uf0ae", "bbox": {"l": 433.85992000000005, "t": 389.64889999999997, "r": 443.69043, "b": 401.83994, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "HR_SCHEMA", "bbox": {"l": 446.51906999999994, "t": 392.50742, "r": 509.73618000000005, "b": 401.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "\uf0ae", "bbox": {"l": 512.5788, "t": 389.64889999999997, "r": 522.4093, "b": 401.83994, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Tables", "bbox": {"l": 151.19812, "t": 404.50723000000005, "r": 181.12892, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ", right-click the ", "bbox": {"l": 181.79823, "t": 404.50723000000005, "r": 248.99638, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "EMPLOYEES", "bbox": {"l": 248.93860000000004, "t": 404.50723000000005, "r": 310.44357, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " table, and click ", "bbox": {"l": 310.49835, "t": 404.50723000000005, "r": 381.53305, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Definition", "bbox": {"l": 381.59882, "t": 404.50723000000005, "r": 427.68176, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": ".", "bbox": {"l": 427.67877, "t": 404.50723000000005, "r": 430.4476599999999, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Figure 3-11 Selecting the EMPLOYEES table from System i Navigator", "bbox": {"l": 64.800003, "t": 649.0378900000001, "r": 347.43054, "b": 657.3629, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.84088897705078, "t": 754.3895874023438, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9162001013755798, "cells": [{"id": 0, "text": "28 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.28304290771484, "t": 754.72412109375, "r": 334.42142, "b": 763.943603515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9540064334869385, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 136.14459228515625, "t": 70.61093139648438, "r": 449.9523899999999, "b": 81.22673034667969, "coord_origin": "TOPLEFT"}, "confidence": 0.8751051425933838, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.22156, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 3-10 shows the masks that are created in the HR_SCHEMA.", "bbox": {"l": 148.02872, "t": 71.50867000000005, "r": 449.9523899999999, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.17350769042969, "t": 172.7456512451172, "r": 294.42578125, "b": 181.8983612060547, "coord_origin": "TOPLEFT"}, "confidence": 0.944426953792572, "cells": [{"id": 4, "text": "Figure 3-10 Column masks shown in System i Navigator", "bbox": {"l": 64.800003, "t": 173.53801999999996, "r": 293.13809, "b": 181.86298, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 64.29059600830078, "t": 201.6618194580078, "r": 203.98521, "b": 214.99534606933594, "coord_origin": "TOPLEFT"}, "confidence": 0.9645015001296997, "cells": [{"id": 5, "text": "3.6.6", "bbox": {"l": 64.800003, "t": 202.37469, "r": 94.275139, "b": 214.36273000000006, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Activating RCAC", "bbox": {"l": 97.959534, "t": 202.37469, "r": 203.98521, "b": 214.36273000000006, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.1686553955078, "t": 228.097412109375, "r": 547.22565, "b": 262.4639587402344, "coord_origin": "TOPLEFT"}, "confidence": 0.9768573045730591, "cells": [{"id": 7, "text": "Now that you have created the row permission and the two column masks, RCAC must be ", "bbox": {"l": 136.8, "t": 228.52868999999998, "r": 537.09131, "b": 237.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "activated. The row permission and the two column masks are enabled (last clause in the ", "bbox": {"l": 136.8, "t": 240.5285, "r": 529.20422, "b": 249.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "scripts), but now you must activate RCAC on the table. To do so, complete the following steps:", "bbox": {"l": 136.8, "t": 252.52832, "r": 547.22565, "b": 261.74132999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 136.5933074951172, "t": 268.52996826171875, "r": 409.47888, "b": 278.8722229003906, "coord_origin": "TOPLEFT"}, "confidence": 0.9059442281723022, "cells": [{"id": 10, "text": "1.", "bbox": {"l": 136.8, "t": 269.50811999999996, "r": 145.32378, "b": 278.72113, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Run the SQL statements that are shown in Example 3-10.", "bbox": {"l": 148.16501, "t": 269.50811999999996, "r": 409.47888, "b": 278.72113, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "section_header", "bbox": {"l": 136.31597900390625, "t": 290.4278564453125, "r": 375.29099, "b": 300.4970703125, "coord_origin": "TOPLEFT"}, "confidence": 0.6570106148719788, "cells": [{"id": 12, "text": "Example 3-10 Activating RCAC on the EMPLOYEES table ", "bbox": {"l": 136.8, "t": 291.55798, "r": 375.29099, "b": 299.88300000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.7803192138672, "t": 307.09222412109375, "r": 376.67661, "b": 318.0027160644531, "coord_origin": "TOPLEFT"}, "confidence": 0.6002406477928162, "cells": [{"id": 13, "text": "/*", "bbox": {"l": 136.8, "t": 308.65811, "r": 147.22942, "b": 317.43289, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Active Row Access Control (permissions) */", "bbox": {"l": 157.65884, "t": 308.65811, "r": 376.67661, "b": 317.43289, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 136.8, "t": 320.65793, "r": 354.86963, "b": 365.43216, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 15, "text": "/*", "bbox": {"l": 136.8, "t": 320.65793, "r": 147.70349, "b": 329.43271, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Active Column Access Control (masks)", "bbox": {"l": 158.60696, "t": 320.65793, "r": 354.86963, "b": 329.43271, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ALTER TABLE HR_SCHEMA.EMPLOYEES", "bbox": {"l": 136.8, "t": 332.65775, "r": 291.7178, "b": 341.43253, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ACTIVATE ROW ACCESS CONTROL", "bbox": {"l": 136.8, "t": 344.65756, "r": 271.67831, "b": 353.43234000000007, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "ACTIVATE COLUMN ACCESS CONTROL;", "bbox": {"l": 136.8, "t": 356.65738, "r": 291.7178, "b": 365.43216, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 365.77313, "t": 320.65793, "r": 376.67661, "b": 329.43271, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 17, "text": "*/", "bbox": {"l": 365.77313, "t": 320.65793, "r": 376.67661, "b": 329.43271, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 135.87640380859375, "t": 379.3264465332031, "r": 540.80145, "b": 413.72021, "coord_origin": "TOPLEFT"}, "confidence": 0.9449256658554077, "cells": [{"id": 21, "text": "2.", "bbox": {"l": 136.8, "t": 380.5076, "r": 145.14954, "b": 389.72058, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Look at the definition of the EMPLOYEE table, as shown in Figure 3-11. To do this, from ", "bbox": {"l": 147.93271, "t": 380.5076, "r": 540.80145, "b": 389.72058, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "the main navigation pane of System i Navigator, click ", "bbox": {"l": 151.20013, "t": 392.50742, "r": 387.36169, "b": 401.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Schemas", "bbox": {"l": 387.29993, "t": 392.50742, "r": 431.07614, "b": 401.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "\uf0ae", "bbox": {"l": 433.85992000000005, "t": 389.64889999999997, "r": 443.69043, "b": 401.83994, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "HR_SCHEMA", "bbox": {"l": 446.51906999999994, "t": 392.50742, "r": 509.73618000000005, "b": 401.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "\uf0ae", "bbox": {"l": 512.5788, "t": 389.64889999999997, "r": 522.4093, "b": 401.83994, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Tables", "bbox": {"l": 151.19812, "t": 404.50723000000005, "r": 181.12892, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ", right-click the ", "bbox": {"l": 181.79823, "t": 404.50723000000005, "r": 248.99638, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "EMPLOYEES", "bbox": {"l": 248.93860000000004, "t": 404.50723000000005, "r": 310.44357, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " table, and click ", "bbox": {"l": 310.49835, "t": 404.50723000000005, "r": 381.53305, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Definition", "bbox": {"l": 381.59882, "t": 404.50723000000005, "r": 427.68176, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": ".", "bbox": {"l": 427.67877, "t": 404.50723000000005, "r": 430.4476599999999, "b": 413.72021, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "caption", "bbox": {"l": 64.33819580078125, "t": 648.241943359375, "r": 348.354736328125, "b": 657.4004516601562, "coord_origin": "TOPLEFT"}, "confidence": 0.9499983787536621, "cells": [{"id": 34, "text": "Figure 3-11 Selecting the EMPLOYEES table from System i Navigator", "bbox": {"l": 64.800003, "t": 649.0378900000001, "r": 347.43054, "b": 657.3629, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "picture", "bbox": {"l": 63.98516845703125, "t": 427.9049987792969, "r": 530.0479125976562, "b": 646.1395874023438, "coord_origin": "TOPLEFT"}, "confidence": 0.9801459908485413, "cells": []}, {"id": 14, "label": "picture", "bbox": {"l": 63.801902770996094, "t": 95.38243103027344, "r": 547.11474609375, "b": 170.03213500976562, "coord_origin": "TOPLEFT"}, "confidence": 0.9635391235351562, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 13, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.84088897705078, "t": 754.3895874023438, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9162001013755798, "cells": [{"id": 0, "text": "28 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "28"}, {"label": "page_footer", "id": 1, "page_no": 13, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.28304290771484, "t": 754.72412109375, "r": 334.42142, "b": 763.943603515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9540064334869385, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "list_item", "id": 2, "page_no": 13, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.14459228515625, "t": 70.61093139648438, "r": 449.9523899999999, "b": 81.22673034667969, "coord_origin": "TOPLEFT"}, "confidence": 0.8751051425933838, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.22156, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 3-10 shows the masks that are created in the HR_SCHEMA.", "bbox": {"l": 148.02872, "t": 71.50867000000005, "r": 449.9523899999999, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "3. Figure 3-10 shows the masks that are created in the HR_SCHEMA."}, {"label": "caption", "id": 3, "page_no": 13, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.17350769042969, "t": 172.7456512451172, "r": 294.42578125, "b": 181.8983612060547, "coord_origin": "TOPLEFT"}, "confidence": 0.944426953792572, "cells": [{"id": 4, "text": "Figure 3-10 Column masks shown in System i Navigator", "bbox": {"l": 64.800003, "t": 173.53801999999996, "r": 293.13809, "b": 181.86298, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-10 Column masks shown in System i Navigator"}, {"label": "section_header", "id": 4, "page_no": 13, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.29059600830078, "t": 201.6618194580078, "r": 203.98521, "b": 214.99534606933594, "coord_origin": "TOPLEFT"}, "confidence": 0.9645015001296997, "cells": [{"id": 5, "text": "3.6.6", "bbox": {"l": 64.800003, "t": 202.37469, "r": 94.275139, "b": 214.36273000000006, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Activating RCAC", "bbox": {"l": 97.959534, "t": 202.37469, "r": 203.98521, "b": 214.36273000000006, "coord_origin": "TOPLEFT"}}]}, "text": "3.6.6 Activating RCAC"}, {"label": "text", "id": 5, "page_no": 13, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.1686553955078, "t": 228.097412109375, "r": 547.22565, "b": 262.4639587402344, "coord_origin": "TOPLEFT"}, "confidence": 0.9768573045730591, "cells": [{"id": 7, "text": "Now that you have created the row permission and the two column masks, RCAC must be ", "bbox": {"l": 136.8, "t": 228.52868999999998, "r": 537.09131, "b": 237.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "activated. The row permission and the two column masks are enabled (last clause in the ", "bbox": {"l": 136.8, "t": 240.5285, "r": 529.20422, "b": 249.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "scripts), but now you must activate RCAC on the table. To do so, complete the following steps:", "bbox": {"l": 136.8, "t": 252.52832, "r": 547.22565, "b": 261.74132999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Now that you have created the row permission and the two column masks, RCAC must be activated. The row permission and the two column masks are enabled (last clause in the scripts), but now you must activate RCAC on the table. To do so, complete the following steps:"}, {"label": "list_item", "id": 6, "page_no": 13, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.5933074951172, "t": 268.52996826171875, "r": 409.47888, "b": 278.8722229003906, "coord_origin": "TOPLEFT"}, "confidence": 0.9059442281723022, "cells": [{"id": 10, "text": "1.", "bbox": {"l": 136.8, "t": 269.50811999999996, "r": 145.32378, "b": 278.72113, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Run the SQL statements that are shown in Example 3-10.", "bbox": {"l": 148.16501, "t": 269.50811999999996, "r": 409.47888, "b": 278.72113, "coord_origin": "TOPLEFT"}}]}, "text": "1. Run the SQL statements that are shown in Example 3-10."}, {"label": "section_header", "id": 7, "page_no": 13, "cluster": {"id": 7, "label": "section_header", "bbox": {"l": 136.31597900390625, "t": 290.4278564453125, "r": 375.29099, "b": 300.4970703125, "coord_origin": "TOPLEFT"}, "confidence": 0.6570106148719788, "cells": [{"id": 12, "text": "Example 3-10 Activating RCAC on the EMPLOYEES table ", "bbox": {"l": 136.8, "t": 291.55798, "r": 375.29099, "b": 299.88300000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-10 Activating RCAC on the EMPLOYEES table"}, {"label": "list_item", "id": 8, "page_no": 13, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.7803192138672, "t": 307.09222412109375, "r": 376.67661, "b": 318.0027160644531, "coord_origin": "TOPLEFT"}, "confidence": 0.6002406477928162, "cells": [{"id": 13, "text": "/*", "bbox": {"l": 136.8, "t": 308.65811, "r": 147.22942, "b": 317.43289, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Active Row Access Control (permissions) */", "bbox": {"l": 157.65884, "t": 308.65811, "r": 376.67661, "b": 317.43289, "coord_origin": "TOPLEFT"}}]}, "text": "/* Active Row Access Control (permissions) */"}, {"label": "text", "id": 9, "page_no": 13, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.8, "t": 320.65793, "r": 354.86963, "b": 365.43216, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 15, "text": "/*", "bbox": {"l": 136.8, "t": 320.65793, "r": 147.70349, "b": 329.43271, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Active Column Access Control (masks)", "bbox": {"l": 158.60696, "t": 320.65793, "r": 354.86963, "b": 329.43271, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ALTER TABLE HR_SCHEMA.EMPLOYEES", "bbox": {"l": 136.8, "t": 332.65775, "r": 291.7178, "b": 341.43253, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ACTIVATE ROW ACCESS CONTROL", "bbox": {"l": 136.8, "t": 344.65756, "r": 271.67831, "b": 353.43234000000007, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "ACTIVATE COLUMN ACCESS CONTROL;", "bbox": {"l": 136.8, "t": 356.65738, "r": 291.7178, "b": 365.43216, "coord_origin": "TOPLEFT"}}]}, "text": "/* Active Column Access Control (masks) ALTER TABLE HR_SCHEMA.EMPLOYEES ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL;"}, {"label": "text", "id": 10, "page_no": 13, "cluster": {"id": 10, "label": "text", "bbox": {"l": 365.77313, "t": 320.65793, "r": 376.67661, "b": 329.43271, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 17, "text": "*/", "bbox": {"l": 365.77313, "t": 320.65793, "r": 376.67661, "b": 329.43271, "coord_origin": "TOPLEFT"}}]}, "text": "*/"}, {"label": "list_item", "id": 11, "page_no": 13, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.87640380859375, "t": 379.3264465332031, "r": 540.80145, "b": 413.72021, "coord_origin": "TOPLEFT"}, "confidence": 0.9449256658554077, "cells": [{"id": 21, "text": "2.", "bbox": {"l": 136.8, "t": 380.5076, "r": 145.14954, "b": 389.72058, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Look at the definition of the EMPLOYEE table, as shown in Figure 3-11. To do this, from ", "bbox": {"l": 147.93271, "t": 380.5076, "r": 540.80145, "b": 389.72058, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "the main navigation pane of System i Navigator, click ", "bbox": {"l": 151.20013, "t": 392.50742, "r": 387.36169, "b": 401.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Schemas", "bbox": {"l": 387.29993, "t": 392.50742, "r": 431.07614, "b": 401.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "\uf0ae", "bbox": {"l": 433.85992000000005, "t": 389.64889999999997, "r": 443.69043, "b": 401.83994, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "HR_SCHEMA", "bbox": {"l": 446.51906999999994, "t": 392.50742, "r": 509.73618000000005, "b": 401.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "\uf0ae", "bbox": {"l": 512.5788, "t": 389.64889999999997, "r": 522.4093, "b": 401.83994, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Tables", "bbox": {"l": 151.19812, "t": 404.50723000000005, "r": 181.12892, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ", right-click the ", "bbox": {"l": 181.79823, "t": 404.50723000000005, "r": 248.99638, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "EMPLOYEES", "bbox": {"l": 248.93860000000004, "t": 404.50723000000005, "r": 310.44357, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " table, and click ", "bbox": {"l": 310.49835, "t": 404.50723000000005, "r": 381.53305, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Definition", "bbox": {"l": 381.59882, "t": 404.50723000000005, "r": 427.68176, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": ".", "bbox": {"l": 427.67877, "t": 404.50723000000005, "r": 430.4476599999999, "b": 413.72021, "coord_origin": "TOPLEFT"}}]}, "text": "2. Look at the definition of the EMPLOYEE table, as shown in Figure 3-11. To do this, from the main navigation pane of System i Navigator, click Schemas \uf0ae HR_SCHEMA \uf0ae Tables , right-click the EMPLOYEES table, and click Definition ."}, {"label": "caption", "id": 12, "page_no": 13, "cluster": {"id": 12, "label": "caption", "bbox": {"l": 64.33819580078125, "t": 648.241943359375, "r": 348.354736328125, "b": 657.4004516601562, "coord_origin": "TOPLEFT"}, "confidence": 0.9499983787536621, "cells": [{"id": 34, "text": "Figure 3-11 Selecting the EMPLOYEES table from System i Navigator", "bbox": {"l": 64.800003, "t": 649.0378900000001, "r": 347.43054, "b": 657.3629, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-11 Selecting the EMPLOYEES table from System i Navigator"}, {"label": "picture", "id": 13, "page_no": 13, "cluster": {"id": 13, "label": "picture", "bbox": {"l": 63.98516845703125, "t": 427.9049987792969, "r": 530.0479125976562, "b": 646.1395874023438, "coord_origin": "TOPLEFT"}, "confidence": 0.9801459908485413, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 14, "page_no": 13, "cluster": {"id": 14, "label": "picture", "bbox": {"l": 63.801902770996094, "t": 95.38243103027344, "r": 547.11474609375, "b": 170.03213500976562, "coord_origin": "TOPLEFT"}, "confidence": 0.9635391235351562, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 13, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.14459228515625, "t": 70.61093139648438, "r": 449.9523899999999, "b": 81.22673034667969, "coord_origin": "TOPLEFT"}, "confidence": 0.8751051425933838, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.22156, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 3-10 shows the masks that are created in the HR_SCHEMA.", "bbox": {"l": 148.02872, "t": 71.50867000000005, "r": 449.9523899999999, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "3. Figure 3-10 shows the masks that are created in the HR_SCHEMA."}, {"label": "caption", "id": 3, "page_no": 13, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.17350769042969, "t": 172.7456512451172, "r": 294.42578125, "b": 181.8983612060547, "coord_origin": "TOPLEFT"}, "confidence": 0.944426953792572, "cells": [{"id": 4, "text": "Figure 3-10 Column masks shown in System i Navigator", "bbox": {"l": 64.800003, "t": 173.53801999999996, "r": 293.13809, "b": 181.86298, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-10 Column masks shown in System i Navigator"}, {"label": "section_header", "id": 4, "page_no": 13, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.29059600830078, "t": 201.6618194580078, "r": 203.98521, "b": 214.99534606933594, "coord_origin": "TOPLEFT"}, "confidence": 0.9645015001296997, "cells": [{"id": 5, "text": "3.6.6", "bbox": {"l": 64.800003, "t": 202.37469, "r": 94.275139, "b": 214.36273000000006, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Activating RCAC", "bbox": {"l": 97.959534, "t": 202.37469, "r": 203.98521, "b": 214.36273000000006, "coord_origin": "TOPLEFT"}}]}, "text": "3.6.6 Activating RCAC"}, {"label": "text", "id": 5, "page_no": 13, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.1686553955078, "t": 228.097412109375, "r": 547.22565, "b": 262.4639587402344, "coord_origin": "TOPLEFT"}, "confidence": 0.9768573045730591, "cells": [{"id": 7, "text": "Now that you have created the row permission and the two column masks, RCAC must be ", "bbox": {"l": 136.8, "t": 228.52868999999998, "r": 537.09131, "b": 237.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "activated. The row permission and the two column masks are enabled (last clause in the ", "bbox": {"l": 136.8, "t": 240.5285, "r": 529.20422, "b": 249.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "scripts), but now you must activate RCAC on the table. To do so, complete the following steps:", "bbox": {"l": 136.8, "t": 252.52832, "r": 547.22565, "b": 261.74132999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Now that you have created the row permission and the two column masks, RCAC must be activated. The row permission and the two column masks are enabled (last clause in the scripts), but now you must activate RCAC on the table. To do so, complete the following steps:"}, {"label": "list_item", "id": 6, "page_no": 13, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.5933074951172, "t": 268.52996826171875, "r": 409.47888, "b": 278.8722229003906, "coord_origin": "TOPLEFT"}, "confidence": 0.9059442281723022, "cells": [{"id": 10, "text": "1.", "bbox": {"l": 136.8, "t": 269.50811999999996, "r": 145.32378, "b": 278.72113, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Run the SQL statements that are shown in Example 3-10.", "bbox": {"l": 148.16501, "t": 269.50811999999996, "r": 409.47888, "b": 278.72113, "coord_origin": "TOPLEFT"}}]}, "text": "1. Run the SQL statements that are shown in Example 3-10."}, {"label": "section_header", "id": 7, "page_no": 13, "cluster": {"id": 7, "label": "section_header", "bbox": {"l": 136.31597900390625, "t": 290.4278564453125, "r": 375.29099, "b": 300.4970703125, "coord_origin": "TOPLEFT"}, "confidence": 0.6570106148719788, "cells": [{"id": 12, "text": "Example 3-10 Activating RCAC on the EMPLOYEES table ", "bbox": {"l": 136.8, "t": 291.55798, "r": 375.29099, "b": 299.88300000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-10 Activating RCAC on the EMPLOYEES table"}, {"label": "list_item", "id": 8, "page_no": 13, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.7803192138672, "t": 307.09222412109375, "r": 376.67661, "b": 318.0027160644531, "coord_origin": "TOPLEFT"}, "confidence": 0.6002406477928162, "cells": [{"id": 13, "text": "/*", "bbox": {"l": 136.8, "t": 308.65811, "r": 147.22942, "b": 317.43289, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Active Row Access Control (permissions) */", "bbox": {"l": 157.65884, "t": 308.65811, "r": 376.67661, "b": 317.43289, "coord_origin": "TOPLEFT"}}]}, "text": "/* Active Row Access Control (permissions) */"}, {"label": "text", "id": 9, "page_no": 13, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.8, "t": 320.65793, "r": 354.86963, "b": 365.43216, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 15, "text": "/*", "bbox": {"l": 136.8, "t": 320.65793, "r": 147.70349, "b": 329.43271, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Active Column Access Control (masks)", "bbox": {"l": 158.60696, "t": 320.65793, "r": 354.86963, "b": 329.43271, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ALTER TABLE HR_SCHEMA.EMPLOYEES", "bbox": {"l": 136.8, "t": 332.65775, "r": 291.7178, "b": 341.43253, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ACTIVATE ROW ACCESS CONTROL", "bbox": {"l": 136.8, "t": 344.65756, "r": 271.67831, "b": 353.43234000000007, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "ACTIVATE COLUMN ACCESS CONTROL;", "bbox": {"l": 136.8, "t": 356.65738, "r": 291.7178, "b": 365.43216, "coord_origin": "TOPLEFT"}}]}, "text": "/* Active Column Access Control (masks) ALTER TABLE HR_SCHEMA.EMPLOYEES ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL;"}, {"label": "text", "id": 10, "page_no": 13, "cluster": {"id": 10, "label": "text", "bbox": {"l": 365.77313, "t": 320.65793, "r": 376.67661, "b": 329.43271, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 17, "text": "*/", "bbox": {"l": 365.77313, "t": 320.65793, "r": 376.67661, "b": 329.43271, "coord_origin": "TOPLEFT"}}]}, "text": "*/"}, {"label": "list_item", "id": 11, "page_no": 13, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.87640380859375, "t": 379.3264465332031, "r": 540.80145, "b": 413.72021, "coord_origin": "TOPLEFT"}, "confidence": 0.9449256658554077, "cells": [{"id": 21, "text": "2.", "bbox": {"l": 136.8, "t": 380.5076, "r": 145.14954, "b": 389.72058, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Look at the definition of the EMPLOYEE table, as shown in Figure 3-11. To do this, from ", "bbox": {"l": 147.93271, "t": 380.5076, "r": 540.80145, "b": 389.72058, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "the main navigation pane of System i Navigator, click ", "bbox": {"l": 151.20013, "t": 392.50742, "r": 387.36169, "b": 401.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Schemas", "bbox": {"l": 387.29993, "t": 392.50742, "r": 431.07614, "b": 401.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "\uf0ae", "bbox": {"l": 433.85992000000005, "t": 389.64889999999997, "r": 443.69043, "b": 401.83994, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "HR_SCHEMA", "bbox": {"l": 446.51906999999994, "t": 392.50742, "r": 509.73618000000005, "b": 401.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "\uf0ae", "bbox": {"l": 512.5788, "t": 389.64889999999997, "r": 522.4093, "b": 401.83994, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Tables", "bbox": {"l": 151.19812, "t": 404.50723000000005, "r": 181.12892, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ", right-click the ", "bbox": {"l": 181.79823, "t": 404.50723000000005, "r": 248.99638, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "EMPLOYEES", "bbox": {"l": 248.93860000000004, "t": 404.50723000000005, "r": 310.44357, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " table, and click ", "bbox": {"l": 310.49835, "t": 404.50723000000005, "r": 381.53305, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Definition", "bbox": {"l": 381.59882, "t": 404.50723000000005, "r": 427.68176, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": ".", "bbox": {"l": 427.67877, "t": 404.50723000000005, "r": 430.4476599999999, "b": 413.72021, "coord_origin": "TOPLEFT"}}]}, "text": "2. Look at the definition of the EMPLOYEE table, as shown in Figure 3-11. To do this, from the main navigation pane of System i Navigator, click Schemas \uf0ae HR_SCHEMA \uf0ae Tables , right-click the EMPLOYEES table, and click Definition ."}, {"label": "caption", "id": 12, "page_no": 13, "cluster": {"id": 12, "label": "caption", "bbox": {"l": 64.33819580078125, "t": 648.241943359375, "r": 348.354736328125, "b": 657.4004516601562, "coord_origin": "TOPLEFT"}, "confidence": 0.9499983787536621, "cells": [{"id": 34, "text": "Figure 3-11 Selecting the EMPLOYEES table from System i Navigator", "bbox": {"l": 64.800003, "t": 649.0378900000001, "r": 347.43054, "b": 657.3629, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-11 Selecting the EMPLOYEES table from System i Navigator"}, {"label": "picture", "id": 13, "page_no": 13, "cluster": {"id": 13, "label": "picture", "bbox": {"l": 63.98516845703125, "t": 427.9049987792969, "r": 530.0479125976562, "b": 646.1395874023438, "coord_origin": "TOPLEFT"}, "confidence": 0.9801459908485413, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 14, "page_no": 13, "cluster": {"id": 14, "label": "picture", "bbox": {"l": 63.801902770996094, "t": 95.38243103027344, "r": 547.11474609375, "b": 170.03213500976562, "coord_origin": "TOPLEFT"}, "confidence": 0.9635391235351562, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 13, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.84088897705078, "t": 754.3895874023438, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9162001013755798, "cells": [{"id": 0, "text": "28 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "28"}, {"label": "page_footer", "id": 1, "page_no": 13, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.28304290771484, "t": 754.72412109375, "r": 334.42142, "b": 763.943603515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9540064334869385, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 14, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "77", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.19554, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 4-68 shows the Visual Explain of the same SQL statement, but with RCAC ", "bbox": {"l": 147.9942, "t": 71.50903000000005, "r": 513.35919, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "enabled. It is clear that the implementation of the SQL statement is more complex ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 514.04858, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "because the row permission rule becomes part of the ", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 389.64822, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "WHERE", "bbox": {"l": 389.57941, "t": 95.65808000000015, "r": 414.53918, "b": 104.48266999999998, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " clause.", "bbox": {"l": 414.59991, "t": 95.50867000000005, "r": 448.8892200000001, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Figure 4-68 Visual Explain with RCAC enabled", "bbox": {"l": 136.8, "t": 480.55798, "r": 327.09329, "b": 488.883, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "3.", "bbox": {"l": 136.8, "t": 506.56863, "r": 145.17432, "b": 515.78162, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Compare the advised indexes that are provided by the Optimizer without RCAC and with ", "bbox": {"l": 147.96574, "t": 506.56863, "r": 543.63715, "b": 515.78162, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "RCAC enabled. Figure 4-69 shows the index advice for the SQL statement without RCAC ", "bbox": {"l": 151.20016, "t": 518.56845, "r": 547.23944, "b": 527.78143, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "enabled. The index being advised is for the ORDER BY clause.", "bbox": {"l": 151.20016, "t": 530.5682400000001, "r": 430.28333, "b": 539.78125, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Figure 4-69 Index advice with no RCAC", "bbox": {"l": 64.800003, "t": 667.5179, "r": 227.10149, "b": 675.8429, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 214.30316162109375, "t": 754.7198486328125, "r": 523.59357, "b": 764.0086669921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9557602405548096, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.3654174804688, "t": 754.280029296875, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9056527614593506, "cells": [{"id": 1, "text": "77", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 136.00341796875, "t": 70.4630355834961, "r": 514.04858, "b": 104.82832336425781, "coord_origin": "TOPLEFT"}, "confidence": 0.9761855006217957, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.19554, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 4-68 shows the Visual Explain of the same SQL statement, but with RCAC ", "bbox": {"l": 147.9942, "t": 71.50903000000005, "r": 513.35919, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "enabled. It is clear that the implementation of the SQL statement is more complex ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 514.04858, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "because the row permission rule becomes part of the ", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 389.64822, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "WHERE", "bbox": {"l": 389.57941, "t": 95.65808000000015, "r": 414.53918, "b": 104.48266999999998, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " clause.", "bbox": {"l": 414.59991, "t": 95.50867000000005, "r": 448.8892200000001, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 135.9990692138672, "t": 480.2080078125, "r": 327.9913635253906, "b": 489.21875, "coord_origin": "TOPLEFT"}, "confidence": 0.9529653191566467, "cells": [{"id": 8, "text": "Figure 4-68 Visual Explain with RCAC enabled", "bbox": {"l": 136.8, "t": 480.55798, "r": 327.09329, "b": 488.883, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 136.2928924560547, "t": 505.9650573730469, "r": 547.23944, "b": 540.0134887695312, "coord_origin": "TOPLEFT"}, "confidence": 0.9766737818717957, "cells": [{"id": 9, "text": "3.", "bbox": {"l": 136.8, "t": 506.56863, "r": 145.17432, "b": 515.78162, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Compare the advised indexes that are provided by the Optimizer without RCAC and with ", "bbox": {"l": 147.96574, "t": 506.56863, "r": 543.63715, "b": 515.78162, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "RCAC enabled. Figure 4-69 shows the index advice for the SQL statement without RCAC ", "bbox": {"l": 151.20016, "t": 518.56845, "r": 547.23944, "b": 527.78143, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "enabled. The index being advised is for the ORDER BY clause.", "bbox": {"l": 151.20016, "t": 530.5682400000001, "r": 430.28333, "b": 539.78125, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 64.35660552978516, "t": 666.6797485351562, "r": 227.347412109375, "b": 675.9388427734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9514287114143372, "cells": [{"id": 13, "text": "Figure 4-69 Index advice with no RCAC", "bbox": {"l": 64.800003, "t": 667.5179, "r": 227.10149, "b": 675.8429, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "picture", "bbox": {"l": 136.5016632080078, "t": 119.2491226196289, "r": 545.4508666992188, "b": 477.5412292480469, "coord_origin": "TOPLEFT"}, "confidence": 0.9864527583122253, "cells": []}, {"id": 7, "label": "picture", "bbox": {"l": 64.27847290039062, "t": 553.5813598632812, "r": 506.39263916015625, "b": 664.0870361328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9797717928886414, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 14, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.30316162109375, "t": 754.7198486328125, "r": 523.59357, "b": 764.0086669921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9557602405548096, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 14, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.3654174804688, "t": 754.280029296875, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9056527614593506, "cells": [{"id": 1, "text": "77", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "77"}, {"label": "list_item", "id": 2, "page_no": 14, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.00341796875, "t": 70.4630355834961, "r": 514.04858, "b": 104.82832336425781, "coord_origin": "TOPLEFT"}, "confidence": 0.9761855006217957, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.19554, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 4-68 shows the Visual Explain of the same SQL statement, but with RCAC ", "bbox": {"l": 147.9942, "t": 71.50903000000005, "r": 513.35919, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "enabled. It is clear that the implementation of the SQL statement is more complex ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 514.04858, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "because the row permission rule becomes part of the ", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 389.64822, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "WHERE", "bbox": {"l": 389.57941, "t": 95.65808000000015, "r": 414.53918, "b": 104.48266999999998, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " clause.", "bbox": {"l": 414.59991, "t": 95.50867000000005, "r": 448.8892200000001, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "2. Figure 4-68 shows the Visual Explain of the same SQL statement, but with RCAC enabled. It is clear that the implementation of the SQL statement is more complex because the row permission rule becomes part of the WHERE clause."}, {"label": "caption", "id": 3, "page_no": 14, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.9990692138672, "t": 480.2080078125, "r": 327.9913635253906, "b": 489.21875, "coord_origin": "TOPLEFT"}, "confidence": 0.9529653191566467, "cells": [{"id": 8, "text": "Figure 4-68 Visual Explain with RCAC enabled", "bbox": {"l": 136.8, "t": 480.55798, "r": 327.09329, "b": 488.883, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-68 Visual Explain with RCAC enabled"}, {"label": "list_item", "id": 4, "page_no": 14, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.2928924560547, "t": 505.9650573730469, "r": 547.23944, "b": 540.0134887695312, "coord_origin": "TOPLEFT"}, "confidence": 0.9766737818717957, "cells": [{"id": 9, "text": "3.", "bbox": {"l": 136.8, "t": 506.56863, "r": 145.17432, "b": 515.78162, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Compare the advised indexes that are provided by the Optimizer without RCAC and with ", "bbox": {"l": 147.96574, "t": 506.56863, "r": 543.63715, "b": 515.78162, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "RCAC enabled. Figure 4-69 shows the index advice for the SQL statement without RCAC ", "bbox": {"l": 151.20016, "t": 518.56845, "r": 547.23944, "b": 527.78143, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "enabled. The index being advised is for the ORDER BY clause.", "bbox": {"l": 151.20016, "t": 530.5682400000001, "r": 430.28333, "b": 539.78125, "coord_origin": "TOPLEFT"}}]}, "text": "3. Compare the advised indexes that are provided by the Optimizer without RCAC and with RCAC enabled. Figure 4-69 shows the index advice for the SQL statement without RCAC enabled. The index being advised is for the ORDER BY clause."}, {"label": "caption", "id": 5, "page_no": 14, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.35660552978516, "t": 666.6797485351562, "r": 227.347412109375, "b": 675.9388427734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9514287114143372, "cells": [{"id": 13, "text": "Figure 4-69 Index advice with no RCAC", "bbox": {"l": 64.800003, "t": 667.5179, "r": 227.10149, "b": 675.8429, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-69 Index advice with no RCAC"}, {"label": "picture", "id": 6, "page_no": 14, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 136.5016632080078, "t": 119.2491226196289, "r": 545.4508666992188, "b": 477.5412292480469, "coord_origin": "TOPLEFT"}, "confidence": 0.9864527583122253, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 7, "page_no": 14, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 64.27847290039062, "t": 553.5813598632812, "r": 506.39263916015625, "b": 664.0870361328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9797717928886414, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 14, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.00341796875, "t": 70.4630355834961, "r": 514.04858, "b": 104.82832336425781, "coord_origin": "TOPLEFT"}, "confidence": 0.9761855006217957, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.19554, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 4-68 shows the Visual Explain of the same SQL statement, but with RCAC ", "bbox": {"l": 147.9942, "t": 71.50903000000005, "r": 513.35919, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "enabled. It is clear that the implementation of the SQL statement is more complex ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 514.04858, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "because the row permission rule becomes part of the ", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 389.64822, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "WHERE", "bbox": {"l": 389.57941, "t": 95.65808000000015, "r": 414.53918, "b": 104.48266999999998, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " clause.", "bbox": {"l": 414.59991, "t": 95.50867000000005, "r": 448.8892200000001, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "2. Figure 4-68 shows the Visual Explain of the same SQL statement, but with RCAC enabled. It is clear that the implementation of the SQL statement is more complex because the row permission rule becomes part of the WHERE clause."}, {"label": "caption", "id": 3, "page_no": 14, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.9990692138672, "t": 480.2080078125, "r": 327.9913635253906, "b": 489.21875, "coord_origin": "TOPLEFT"}, "confidence": 0.9529653191566467, "cells": [{"id": 8, "text": "Figure 4-68 Visual Explain with RCAC enabled", "bbox": {"l": 136.8, "t": 480.55798, "r": 327.09329, "b": 488.883, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-68 Visual Explain with RCAC enabled"}, {"label": "list_item", "id": 4, "page_no": 14, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.2928924560547, "t": 505.9650573730469, "r": 547.23944, "b": 540.0134887695312, "coord_origin": "TOPLEFT"}, "confidence": 0.9766737818717957, "cells": [{"id": 9, "text": "3.", "bbox": {"l": 136.8, "t": 506.56863, "r": 145.17432, "b": 515.78162, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Compare the advised indexes that are provided by the Optimizer without RCAC and with ", "bbox": {"l": 147.96574, "t": 506.56863, "r": 543.63715, "b": 515.78162, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "RCAC enabled. Figure 4-69 shows the index advice for the SQL statement without RCAC ", "bbox": {"l": 151.20016, "t": 518.56845, "r": 547.23944, "b": 527.78143, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "enabled. The index being advised is for the ORDER BY clause.", "bbox": {"l": 151.20016, "t": 530.5682400000001, "r": 430.28333, "b": 539.78125, "coord_origin": "TOPLEFT"}}]}, "text": "3. Compare the advised indexes that are provided by the Optimizer without RCAC and with RCAC enabled. Figure 4-69 shows the index advice for the SQL statement without RCAC enabled. The index being advised is for the ORDER BY clause."}, {"label": "caption", "id": 5, "page_no": 14, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.35660552978516, "t": 666.6797485351562, "r": 227.347412109375, "b": 675.9388427734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9514287114143372, "cells": [{"id": 13, "text": "Figure 4-69 Index advice with no RCAC", "bbox": {"l": 64.800003, "t": 667.5179, "r": 227.10149, "b": 675.8429, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-69 Index advice with no RCAC"}, {"label": "picture", "id": 6, "page_no": 14, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 136.5016632080078, "t": 119.2491226196289, "r": 545.4508666992188, "b": 477.5412292480469, "coord_origin": "TOPLEFT"}, "confidence": 0.9864527583122253, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 7, "page_no": 14, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 64.27847290039062, "t": 553.5813598632812, "r": 506.39263916015625, "b": 664.0870361328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9797717928886414, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 14, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.30316162109375, "t": 754.7198486328125, "r": 523.59357, "b": 764.0086669921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9557602405548096, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 14, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.3654174804688, "t": 754.280029296875, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9056527614593506, "cells": [{"id": 1, "text": "77", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "77"}]}}, {"page_no": 15, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "124 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "THEN C . CUSTOMER_TAX_ID ", "bbox": {"l": 64.800308, "t": 71.67296999999996, "r": 177.1194, "b": 79.60199, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 ", "bbox": {"l": 64.800308, "t": 82.65295000000015, "r": 365.87817, "b": 90.58196999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( C . CUSTOMER_TAX_ID , 8 , 4 ) ) ", "bbox": {"l": 64.800308, "t": 93.63292999999999, "r": 392.81787, "b": 101.56195000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 104.67322000000001, "r": 374.87817, "b": 112.60222999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "THEN C . CUSTOMER_TAX_ID ", "bbox": {"l": 64.800308, "t": 115.65319999999997, "r": 177.1194, "b": 123.58220999999992, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ELSE 'XXX-XX-XXXX' ", "bbox": {"l": 64.800308, "t": 126.63318000000015, "r": 150.1797, "b": 134.56219, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "END ", "bbox": {"l": 64.800308, "t": 137.67345999999998, "r": 96.240005, "b": 145.60248, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 148.65344000000005, "r": 124.14001, "b": 156.58245999999997, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "CREATE MASK BANK_SCHEMA.MASK_DRIVERS_LICENSE_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 170.67377, "r": 460.25757, "b": 178.60278000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "FOR COLUMN CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 79.20031, "t": 181.65374999999995, "r": 272.45911, "b": 189.58276, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 192.69403, "r": 137.64001, "b": 200.62305000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 203.67400999999995, "r": 361.37817, "b": 211.60303, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 64.800308, "t": 214.65399000000002, "r": 249.0591, "b": 222.58300999999994, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 ", "bbox": {"l": 64.800308, "t": 225.69426999999996, "r": 365.87817, "b": 233.62329, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 64.800308, "t": 236.67426, "r": 249.0591, "b": 244.60326999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 247.65423999999996, "r": 374.87817, "b": 255.58325000000002, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 64.800308, "t": 258.69452, "r": 249.0591, "b": 266.62354000000005, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ELSE '*************' ", "bbox": {"l": 64.800308, "t": 269.67449999999997, "r": 159.1797, "b": 277.60352, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "END ", "bbox": {"l": 64.800308, "t": 280.65454, "r": 96.240005, "b": 288.58353, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 291.69485000000003, "r": 124.14001, "b": 299.62384, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "CREATE MASK BANK_SCHEMA.MASK_LOGIN_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 313.65485, "r": 428.81786999999997, "b": 321.58383, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "FOR COLUMN CUSTOMER_LOGIN_ID ", "bbox": {"l": 79.20031, "t": 324.69516, "r": 209.51941, "b": 332.62415, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 335.67517, "r": 137.64001, "b": 343.6041599999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 346.65518, "r": 361.37817, "b": 354.58417, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "THEN C . CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800308, "t": 357.69550000000004, "r": 186.1194, "b": 365.62448, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 368.67551, "r": 374.87817, "b": 376.60449, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "THEN C . CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800308, "t": 379.65552, "r": 186.1194, "b": 387.5845, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "ELSE '*****' ", "bbox": {"l": 64.800308, "t": 390.69583, "r": 123.24001, "b": 398.62482, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "END ", "bbox": {"l": 64.800308, "t": 401.67584, "r": 96.240005, "b": 409.60482999999994, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 412.65585, "r": 124.14001, "b": 420.58484, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 434.67615, "r": 469.25757, "b": 442.60513, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "FOR COLUMN CUSTOMER_SECURITY_QUESTION ", "bbox": {"l": 79.20031, "t": 445.65616000000006, "r": 249.95911, "b": 453.58514, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 456.6964699999999, "r": 137.64001, "b": 464.62546, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 467.67648, "r": 361.37817, "b": 475.60547, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "THEN C . CUSTOMER_SECURITY_QUESTION ", "bbox": {"l": 64.800308, "t": 478.65649, "r": 226.5591, "b": 486.58548, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 489.69681, "r": 374.87817, "b": 497.62579, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "THEN C . CUSTOMER_SECURITY_QUESTION ", "bbox": {"l": 64.800308, "t": 500.67682, "r": 226.5591, "b": 508.6058, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ELSE '*****' ", "bbox": {"l": 64.800308, "t": 511.65683, "r": 123.24001, "b": 519.58582, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "END ", "bbox": {"l": 64.800308, "t": 522.69714, "r": 96.240005, "b": 530.62613, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 533.6771200000001, "r": 124.14001, "b": 541.60614, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 555.69745, "r": 500.69727, "b": 563.62645, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "FOR COLUMN CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 79.20031, "t": 566.6774399999999, "r": 281.3988, "b": 574.60645, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 577.65744, "r": 137.64001, "b": 585.58644, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 588.6977400000001, "r": 361.37817, "b": 596.62674, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 64.800308, "t": 599.67773, "r": 258.05908, "b": 607.60674, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 610.65773, "r": 374.87817, "b": 618.58673, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 64.800308, "t": 621.69803, "r": 258.05908, "b": 629.62703, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "ELSE '*****' ", "bbox": {"l": 64.800308, "t": 632.6780200000001, "r": 123.24001, "b": 640.60703, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "END ", "bbox": {"l": 64.800308, "t": 643.71832, "r": 96.240005, "b": 651.64732, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 654.69832, "r": 124.14001, "b": 662.62732, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800308, "t": 676.71861, "r": 226.5591, "b": 684.64761, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ACTIVATE ROW ACCESS CONTROL ", "bbox": {"l": 79.20031, "t": 687.69862, "r": 214.01941, "b": 695.627617, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "ACTIVATE COLUMN ACCESS CONTROL ;", "bbox": {"l": 79.20031, "t": 698.678619, "r": 223.01941, "b": 706.60762, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.50080871582031, "t": 754.5338745117188, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8994000554084778, "cells": [{"id": 0, "text": "124 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 98.63966369628906, "t": 754.71435546875, "r": 339.882080078125, "b": 764.0100708007812, "coord_origin": "TOPLEFT"}, "confidence": 0.9430771470069885, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "code", "bbox": {"l": 62.60613250732422, "t": 69.35981750488281, "r": 500.69727, "b": 707.7635498046875, "coord_origin": "TOPLEFT"}, "confidence": 0.763217568397522, "cells": [{"id": 2, "text": "THEN C . CUSTOMER_TAX_ID ", "bbox": {"l": 64.800308, "t": 71.67296999999996, "r": 177.1194, "b": 79.60199, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 ", "bbox": {"l": 64.800308, "t": 82.65295000000015, "r": 365.87817, "b": 90.58196999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( C . CUSTOMER_TAX_ID , 8 , 4 ) ) ", "bbox": {"l": 64.800308, "t": 93.63292999999999, "r": 392.81787, "b": 101.56195000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 104.67322000000001, "r": 374.87817, "b": 112.60222999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "THEN C . CUSTOMER_TAX_ID ", "bbox": {"l": 64.800308, "t": 115.65319999999997, "r": 177.1194, "b": 123.58220999999992, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ELSE 'XXX-XX-XXXX' ", "bbox": {"l": 64.800308, "t": 126.63318000000015, "r": 150.1797, "b": 134.56219, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "END ", "bbox": {"l": 64.800308, "t": 137.67345999999998, "r": 96.240005, "b": 145.60248, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 148.65344000000005, "r": 124.14001, "b": 156.58245999999997, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "CREATE MASK BANK_SCHEMA.MASK_DRIVERS_LICENSE_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 170.67377, "r": 460.25757, "b": 178.60278000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "FOR COLUMN CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 79.20031, "t": 181.65374999999995, "r": 272.45911, "b": 189.58276, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 192.69403, "r": 137.64001, "b": 200.62305000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 203.67400999999995, "r": 361.37817, "b": 211.60303, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 64.800308, "t": 214.65399000000002, "r": 249.0591, "b": 222.58300999999994, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 ", "bbox": {"l": 64.800308, "t": 225.69426999999996, "r": 365.87817, "b": 233.62329, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 64.800308, "t": 236.67426, "r": 249.0591, "b": 244.60326999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 247.65423999999996, "r": 374.87817, "b": 255.58325000000002, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 64.800308, "t": 258.69452, "r": 249.0591, "b": 266.62354000000005, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ELSE '*************' ", "bbox": {"l": 64.800308, "t": 269.67449999999997, "r": 159.1797, "b": 277.60352, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "END ", "bbox": {"l": 64.800308, "t": 280.65454, "r": 96.240005, "b": 288.58353, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 291.69485000000003, "r": 124.14001, "b": 299.62384, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "CREATE MASK BANK_SCHEMA.MASK_LOGIN_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 313.65485, "r": 428.81786999999997, "b": 321.58383, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "FOR COLUMN CUSTOMER_LOGIN_ID ", "bbox": {"l": 79.20031, "t": 324.69516, "r": 209.51941, "b": 332.62415, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 335.67517, "r": 137.64001, "b": 343.6041599999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 346.65518, "r": 361.37817, "b": 354.58417, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "THEN C . CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800308, "t": 357.69550000000004, "r": 186.1194, "b": 365.62448, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 368.67551, "r": 374.87817, "b": 376.60449, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "THEN C . CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800308, "t": 379.65552, "r": 186.1194, "b": 387.5845, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "ELSE '*****' ", "bbox": {"l": 64.800308, "t": 390.69583, "r": 123.24001, "b": 398.62482, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "END ", "bbox": {"l": 64.800308, "t": 401.67584, "r": 96.240005, "b": 409.60482999999994, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 412.65585, "r": 124.14001, "b": 420.58484, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 434.67615, "r": 469.25757, "b": 442.60513, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "FOR COLUMN CUSTOMER_SECURITY_QUESTION ", "bbox": {"l": 79.20031, "t": 445.65616000000006, "r": 249.95911, "b": 453.58514, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 456.6964699999999, "r": 137.64001, "b": 464.62546, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 467.67648, "r": 361.37817, "b": 475.60547, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "THEN C . CUSTOMER_SECURITY_QUESTION ", "bbox": {"l": 64.800308, "t": 478.65649, "r": 226.5591, "b": 486.58548, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 489.69681, "r": 374.87817, "b": 497.62579, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "THEN C . CUSTOMER_SECURITY_QUESTION ", "bbox": {"l": 64.800308, "t": 500.67682, "r": 226.5591, "b": 508.6058, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ELSE '*****' ", "bbox": {"l": 64.800308, "t": 511.65683, "r": 123.24001, "b": 519.58582, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "END ", "bbox": {"l": 64.800308, "t": 522.69714, "r": 96.240005, "b": 530.62613, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 533.6771200000001, "r": 124.14001, "b": 541.60614, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 555.69745, "r": 500.69727, "b": 563.62645, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "FOR COLUMN CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 79.20031, "t": 566.6774399999999, "r": 281.3988, "b": 574.60645, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 577.65744, "r": 137.64001, "b": 585.58644, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 588.6977400000001, "r": 361.37817, "b": 596.62674, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 64.800308, "t": 599.67773, "r": 258.05908, "b": 607.60674, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 610.65773, "r": 374.87817, "b": 618.58673, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 64.800308, "t": 621.69803, "r": 258.05908, "b": 629.62703, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "ELSE '*****' ", "bbox": {"l": 64.800308, "t": 632.6780200000001, "r": 123.24001, "b": 640.60703, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "END ", "bbox": {"l": 64.800308, "t": 643.71832, "r": 96.240005, "b": 651.64732, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 654.69832, "r": 124.14001, "b": 662.62732, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800308, "t": 676.71861, "r": 226.5591, "b": 684.64761, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ACTIVATE ROW ACCESS CONTROL ", "bbox": {"l": 79.20031, "t": 687.69862, "r": 214.01941, "b": 695.627617, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "ACTIVATE COLUMN ACCESS CONTROL ;", "bbox": {"l": 79.20031, "t": 698.678619, "r": 223.01941, "b": 706.60762, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 15, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.50080871582031, "t": 754.5338745117188, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8994000554084778, "cells": [{"id": 0, "text": "124 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "124"}, {"label": "page_footer", "id": 1, "page_no": 15, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.63966369628906, "t": 754.71435546875, "r": 339.882080078125, "b": 764.0100708007812, "coord_origin": "TOPLEFT"}, "confidence": 0.9430771470069885, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "code", "id": 2, "page_no": 15, "cluster": {"id": 2, "label": "code", "bbox": {"l": 62.60613250732422, "t": 69.35981750488281, "r": 500.69727, "b": 707.7635498046875, "coord_origin": "TOPLEFT"}, "confidence": 0.763217568397522, "cells": [{"id": 2, "text": "THEN C . CUSTOMER_TAX_ID ", "bbox": {"l": 64.800308, "t": 71.67296999999996, "r": 177.1194, "b": 79.60199, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 ", "bbox": {"l": 64.800308, "t": 82.65295000000015, "r": 365.87817, "b": 90.58196999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( C . CUSTOMER_TAX_ID , 8 , 4 ) ) ", "bbox": {"l": 64.800308, "t": 93.63292999999999, "r": 392.81787, "b": 101.56195000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 104.67322000000001, "r": 374.87817, "b": 112.60222999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "THEN C . CUSTOMER_TAX_ID ", "bbox": {"l": 64.800308, "t": 115.65319999999997, "r": 177.1194, "b": 123.58220999999992, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ELSE 'XXX-XX-XXXX' ", "bbox": {"l": 64.800308, "t": 126.63318000000015, "r": 150.1797, "b": 134.56219, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "END ", "bbox": {"l": 64.800308, "t": 137.67345999999998, "r": 96.240005, "b": 145.60248, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 148.65344000000005, "r": 124.14001, "b": 156.58245999999997, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "CREATE MASK BANK_SCHEMA.MASK_DRIVERS_LICENSE_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 170.67377, "r": 460.25757, "b": 178.60278000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "FOR COLUMN CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 79.20031, "t": 181.65374999999995, "r": 272.45911, "b": 189.58276, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 192.69403, "r": 137.64001, "b": 200.62305000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 203.67400999999995, "r": 361.37817, "b": 211.60303, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 64.800308, "t": 214.65399000000002, "r": 249.0591, "b": 222.58300999999994, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 ", "bbox": {"l": 64.800308, "t": 225.69426999999996, "r": 365.87817, "b": 233.62329, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 64.800308, "t": 236.67426, "r": 249.0591, "b": 244.60326999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 247.65423999999996, "r": 374.87817, "b": 255.58325000000002, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 64.800308, "t": 258.69452, "r": 249.0591, "b": 266.62354000000005, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ELSE '*************' ", "bbox": {"l": 64.800308, "t": 269.67449999999997, "r": 159.1797, "b": 277.60352, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "END ", "bbox": {"l": 64.800308, "t": 280.65454, "r": 96.240005, "b": 288.58353, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 291.69485000000003, "r": 124.14001, "b": 299.62384, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "CREATE MASK BANK_SCHEMA.MASK_LOGIN_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 313.65485, "r": 428.81786999999997, "b": 321.58383, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "FOR COLUMN CUSTOMER_LOGIN_ID ", "bbox": {"l": 79.20031, "t": 324.69516, "r": 209.51941, "b": 332.62415, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 335.67517, "r": 137.64001, "b": 343.6041599999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 346.65518, "r": 361.37817, "b": 354.58417, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "THEN C . CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800308, "t": 357.69550000000004, "r": 186.1194, "b": 365.62448, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 368.67551, "r": 374.87817, "b": 376.60449, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "THEN C . CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800308, "t": 379.65552, "r": 186.1194, "b": 387.5845, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "ELSE '*****' ", "bbox": {"l": 64.800308, "t": 390.69583, "r": 123.24001, "b": 398.62482, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "END ", "bbox": {"l": 64.800308, "t": 401.67584, "r": 96.240005, "b": 409.60482999999994, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 412.65585, "r": 124.14001, "b": 420.58484, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 434.67615, "r": 469.25757, "b": 442.60513, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "FOR COLUMN CUSTOMER_SECURITY_QUESTION ", "bbox": {"l": 79.20031, "t": 445.65616000000006, "r": 249.95911, "b": 453.58514, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 456.6964699999999, "r": 137.64001, "b": 464.62546, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 467.67648, "r": 361.37817, "b": 475.60547, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "THEN C . CUSTOMER_SECURITY_QUESTION ", "bbox": {"l": 64.800308, "t": 478.65649, "r": 226.5591, "b": 486.58548, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 489.69681, "r": 374.87817, "b": 497.62579, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "THEN C . CUSTOMER_SECURITY_QUESTION ", "bbox": {"l": 64.800308, "t": 500.67682, "r": 226.5591, "b": 508.6058, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ELSE '*****' ", "bbox": {"l": 64.800308, "t": 511.65683, "r": 123.24001, "b": 519.58582, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "END ", "bbox": {"l": 64.800308, "t": 522.69714, "r": 96.240005, "b": 530.62613, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 533.6771200000001, "r": 124.14001, "b": 541.60614, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 555.69745, "r": 500.69727, "b": 563.62645, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "FOR COLUMN CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 79.20031, "t": 566.6774399999999, "r": 281.3988, "b": 574.60645, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 577.65744, "r": 137.64001, "b": 585.58644, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 588.6977400000001, "r": 361.37817, "b": 596.62674, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 64.800308, "t": 599.67773, "r": 258.05908, "b": 607.60674, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 610.65773, "r": 374.87817, "b": 618.58673, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 64.800308, "t": 621.69803, "r": 258.05908, "b": 629.62703, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "ELSE '*****' ", "bbox": {"l": 64.800308, "t": 632.6780200000001, "r": 123.24001, "b": 640.60703, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "END ", "bbox": {"l": 64.800308, "t": 643.71832, "r": 96.240005, "b": 651.64732, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 654.69832, "r": 124.14001, "b": 662.62732, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800308, "t": 676.71861, "r": 226.5591, "b": 684.64761, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ACTIVATE ROW ACCESS CONTROL ", "bbox": {"l": 79.20031, "t": 687.69862, "r": 214.01941, "b": 695.627617, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "ACTIVATE COLUMN ACCESS CONTROL ;", "bbox": {"l": 79.20031, "t": 698.678619, "r": 223.01941, "b": 706.60762, "coord_origin": "TOPLEFT"}}]}, "text": "THEN C . CUSTOMER_TAX_ID WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( C . CUSTOMER_TAX_ID , 8 , 4 ) ) WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_TAX_ID ELSE 'XXX-XX-XXXX' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_DRIVERS_LICENSE_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_DRIVERS_LICENSE_NUMBER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ELSE '*************' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_LOGIN_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_LOGIN_ID RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_LOGIN_ID WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_LOGIN_ID ELSE '*****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_SECURITY_QUESTION RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION ELSE '*****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_SECURITY_QUESTION_ANSWER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ELSE '*****' END ENABLE ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL ;"}], "body": [{"label": "code", "id": 2, "page_no": 15, "cluster": {"id": 2, "label": "code", "bbox": {"l": 62.60613250732422, "t": 69.35981750488281, "r": 500.69727, "b": 707.7635498046875, "coord_origin": "TOPLEFT"}, "confidence": 0.763217568397522, "cells": [{"id": 2, "text": "THEN C . CUSTOMER_TAX_ID ", "bbox": {"l": 64.800308, "t": 71.67296999999996, "r": 177.1194, "b": 79.60199, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 ", "bbox": {"l": 64.800308, "t": 82.65295000000015, "r": 365.87817, "b": 90.58196999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( C . CUSTOMER_TAX_ID , 8 , 4 ) ) ", "bbox": {"l": 64.800308, "t": 93.63292999999999, "r": 392.81787, "b": 101.56195000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 104.67322000000001, "r": 374.87817, "b": 112.60222999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "THEN C . CUSTOMER_TAX_ID ", "bbox": {"l": 64.800308, "t": 115.65319999999997, "r": 177.1194, "b": 123.58220999999992, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ELSE 'XXX-XX-XXXX' ", "bbox": {"l": 64.800308, "t": 126.63318000000015, "r": 150.1797, "b": 134.56219, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "END ", "bbox": {"l": 64.800308, "t": 137.67345999999998, "r": 96.240005, "b": 145.60248, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 148.65344000000005, "r": 124.14001, "b": 156.58245999999997, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "CREATE MASK BANK_SCHEMA.MASK_DRIVERS_LICENSE_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 170.67377, "r": 460.25757, "b": 178.60278000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "FOR COLUMN CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 79.20031, "t": 181.65374999999995, "r": 272.45911, "b": 189.58276, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 192.69403, "r": 137.64001, "b": 200.62305000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 203.67400999999995, "r": 361.37817, "b": 211.60303, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 64.800308, "t": 214.65399000000002, "r": 249.0591, "b": 222.58300999999994, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 ", "bbox": {"l": 64.800308, "t": 225.69426999999996, "r": 365.87817, "b": 233.62329, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 64.800308, "t": 236.67426, "r": 249.0591, "b": 244.60326999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 247.65423999999996, "r": 374.87817, "b": 255.58325000000002, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 64.800308, "t": 258.69452, "r": 249.0591, "b": 266.62354000000005, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ELSE '*************' ", "bbox": {"l": 64.800308, "t": 269.67449999999997, "r": 159.1797, "b": 277.60352, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "END ", "bbox": {"l": 64.800308, "t": 280.65454, "r": 96.240005, "b": 288.58353, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 291.69485000000003, "r": 124.14001, "b": 299.62384, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "CREATE MASK BANK_SCHEMA.MASK_LOGIN_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 313.65485, "r": 428.81786999999997, "b": 321.58383, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "FOR COLUMN CUSTOMER_LOGIN_ID ", "bbox": {"l": 79.20031, "t": 324.69516, "r": 209.51941, "b": 332.62415, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 335.67517, "r": 137.64001, "b": 343.6041599999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 346.65518, "r": 361.37817, "b": 354.58417, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "THEN C . CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800308, "t": 357.69550000000004, "r": 186.1194, "b": 365.62448, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 368.67551, "r": 374.87817, "b": 376.60449, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "THEN C . CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800308, "t": 379.65552, "r": 186.1194, "b": 387.5845, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "ELSE '*****' ", "bbox": {"l": 64.800308, "t": 390.69583, "r": 123.24001, "b": 398.62482, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "END ", "bbox": {"l": 64.800308, "t": 401.67584, "r": 96.240005, "b": 409.60482999999994, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 412.65585, "r": 124.14001, "b": 420.58484, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 434.67615, "r": 469.25757, "b": 442.60513, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "FOR COLUMN CUSTOMER_SECURITY_QUESTION ", "bbox": {"l": 79.20031, "t": 445.65616000000006, "r": 249.95911, "b": 453.58514, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 456.6964699999999, "r": 137.64001, "b": 464.62546, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 467.67648, "r": 361.37817, "b": 475.60547, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "THEN C . CUSTOMER_SECURITY_QUESTION ", "bbox": {"l": 64.800308, "t": 478.65649, "r": 226.5591, "b": 486.58548, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 489.69681, "r": 374.87817, "b": 497.62579, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "THEN C . CUSTOMER_SECURITY_QUESTION ", "bbox": {"l": 64.800308, "t": 500.67682, "r": 226.5591, "b": 508.6058, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ELSE '*****' ", "bbox": {"l": 64.800308, "t": 511.65683, "r": 123.24001, "b": 519.58582, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "END ", "bbox": {"l": 64.800308, "t": 522.69714, "r": 96.240005, "b": 530.62613, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 533.6771200000001, "r": 124.14001, "b": 541.60614, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 555.69745, "r": 500.69727, "b": 563.62645, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "FOR COLUMN CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 79.20031, "t": 566.6774399999999, "r": 281.3988, "b": 574.60645, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 577.65744, "r": 137.64001, "b": 585.58644, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 588.6977400000001, "r": 361.37817, "b": 596.62674, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 64.800308, "t": 599.67773, "r": 258.05908, "b": 607.60674, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 610.65773, "r": 374.87817, "b": 618.58673, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 64.800308, "t": 621.69803, "r": 258.05908, "b": 629.62703, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "ELSE '*****' ", "bbox": {"l": 64.800308, "t": 632.6780200000001, "r": 123.24001, "b": 640.60703, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "END ", "bbox": {"l": 64.800308, "t": 643.71832, "r": 96.240005, "b": 651.64732, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 654.69832, "r": 124.14001, "b": 662.62732, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800308, "t": 676.71861, "r": 226.5591, "b": 684.64761, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ACTIVATE ROW ACCESS CONTROL ", "bbox": {"l": 79.20031, "t": 687.69862, "r": 214.01941, "b": 695.627617, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "ACTIVATE COLUMN ACCESS CONTROL ;", "bbox": {"l": 79.20031, "t": 698.678619, "r": 223.01941, "b": 706.60762, "coord_origin": "TOPLEFT"}}]}, "text": "THEN C . CUSTOMER_TAX_ID WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( C . CUSTOMER_TAX_ID , 8 , 4 ) ) WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_TAX_ID ELSE 'XXX-XX-XXXX' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_DRIVERS_LICENSE_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_DRIVERS_LICENSE_NUMBER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ELSE '*************' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_LOGIN_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_LOGIN_ID RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_LOGIN_ID WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_LOGIN_ID ELSE '*****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_SECURITY_QUESTION RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION ELSE '*****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_SECURITY_QUESTION_ANSWER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ELSE '*****' END ENABLE ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL ;"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 15, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.50080871582031, "t": 754.5338745117188, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8994000554084778, "cells": [{"id": 0, "text": "124 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "124"}, {"label": "page_footer", "id": 1, "page_no": 15, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.63966369628906, "t": 754.71435546875, "r": 339.882080078125, "b": 764.0100708007812, "coord_origin": "TOPLEFT"}, "confidence": 0.9430771470069885, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 16, "size": {"width": 612.0, "height": 792.0}, "cells": [], "predictions": {"layout": {"clusters": []}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [], "body": [], "headers": []}}, {"page_no": 17, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "fi", "bbox": {"l": 558.11987, "t": 45.468689999999924, "r": 565.46039, "b": 54.68169999999998, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "REDP-5110-00", "bbox": {"l": 171.0, "t": 631.338, "r": 231.88769999999997, "b": 639.66301, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "INTERNATIONAL ", "bbox": {"l": 467.3399999999999, "t": 247.71831999999995, "r": 559.80933, "b": 260.16052, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "TECHNICAL", "bbox": {"l": 467.3399999999999, "t": 261.75842, "r": 529.50208, "b": 274.20061999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "SUPPORT", "bbox": {"l": 467.3399999999999, "t": 275.73839999999996, "r": 518.93317, "b": 288.1806, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "ORGANIZATION", "bbox": {"l": 467.3399999999999, "t": 289.71841, "r": 550.7475, "b": 302.16061, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "BUILDING TECHNICAL ", "bbox": {"l": 467.3399999999999, "t": 351.79199, "r": 571.70758, "b": 362.47198, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "INFORMATION BASED ON ", "bbox": {"l": 467.3399999999999, "t": 363.79199, "r": 587.38916, "b": 374.47198, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "PRACTICAL EXPERIENCE", "bbox": {"l": 467.3399999999999, "t": 375.79199, "r": 582.5556, "b": 386.47198, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "IBM Redbooks are developed ", "bbox": {"l": 467.3399999999999, "t": 399.8602900000001, "r": 587.46674, "b": 409.63251, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "by the IBM International ", "bbox": {"l": 467.3399999999999, "t": 410.90067, "r": 566.34229, "b": 420.67285, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Technical Support ", "bbox": {"l": 467.3399999999999, "t": 421.88068, "r": 543.20404, "b": 431.65289, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Organization. Experts from ", "bbox": {"l": 467.3399999999999, "t": 432.8606899999999, "r": 577.76697, "b": 442.63287, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "IBM, Customers and Partners ", "bbox": {"l": 467.3399999999999, "t": 443.90106, "r": 587.40948, "b": 453.67328, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "from around the world create ", "bbox": {"l": 467.3399999999999, "t": 454.88107, "r": 587.52051, "b": 464.65326, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "timely technical information ", "bbox": {"l": 467.3399999999999, "t": 465.86108, "r": 582.67505, "b": 475.6333, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "based on realistic scenarios. ", "bbox": {"l": 467.3399999999999, "t": 476.90146, "r": 585.46722, "b": 486.67365, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Specific recommendations ", "bbox": {"l": 467.3399999999999, "t": 487.88147, "r": 577.70874, "b": 497.65369, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "are provided to help you ", "bbox": {"l": 467.3399999999999, "t": 498.86148, "r": 568.03546, "b": 508.63367, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "implement IT solutions more ", "bbox": {"l": 467.3399999999999, "t": 509.90186, "r": 585.44525, "b": 519.67407, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "effectively in your ", "bbox": {"l": 467.3399999999999, "t": 520.8818699999999, "r": 541.4967, "b": 530.65405, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "environment.", "bbox": {"l": 467.3399999999999, "t": 531.8618799999999, "r": 520.64893, "b": 541.63406, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "For more information:", "bbox": {"l": 467.3399999999999, "t": 578.83191, "r": 570.948, "b": 589.5119, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ibm.com", "bbox": {"l": 467.3399999999999, "t": 590.83191, "r": 508.59961, "b": 601.5119, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "/redbooks", "bbox": {"l": 508.56000000000006, "t": 590.83191, "r": 552.74518, "b": 601.5119, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Redpaper", "bbox": {"l": 474.60001, "t": 164.05658000000005, "r": 580.88989, "b": 188.94097999999997, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "\u2122", "bbox": {"l": 582.53992, "t": 172.32714999999996, "r": 592.13989, "b": 181.20714999999996, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Row and Column Access Control ", "bbox": {"l": 27.0, "t": 73.63799999999992, "r": 447.36002, "b": 103.00800000000004, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Support in IBM DB2 for i", "bbox": {"l": 27.0, "t": 113.76000999999997, "r": 314.43002, "b": 140.46002, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Implement roles and ", "bbox": {"l": 26.700001, "t": 242.17200000000003, "r": 127.4436, "b": 252.85199, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "separation of duties", "bbox": {"l": 26.700001, "t": 256.15198, "r": 121.6608, "b": 266.83196999999996, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Leverage row ", "bbox": {"l": 26.700001, "t": 284.17197, "r": 93.970795, "b": 294.85196, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "permissions on the ", "bbox": {"l": 26.700001, "t": 298.15198000000004, "r": 120.28319999999998, "b": 308.83197, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "database", "bbox": {"l": 26.700001, "t": 312.19199000000003, "r": 70.413605, "b": 322.87198, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Protect columns by ", "bbox": {"l": 26.700001, "t": 340.15198000000004, "r": 121.44960000000002, "b": 350.83197, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "defining column ", "bbox": {"l": 26.700001, "t": 354.19199000000003, "r": 106.5696, "b": 364.87198, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "masks", "bbox": {"l": 26.700001, "t": 368.1720000000001, "r": 58.194, "b": 378.85199, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "This IBM Redpaper publication provides information about the IBM i 7.2 ", "bbox": {"l": 152.94, "t": 242.72857999999997, "r": 413.99057, "b": 251.59295999999995, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "feature of IBM DB2 for i Row and Column Access Control (RCAC). It ", "bbox": {"l": 152.94002, "t": 254.72839, "r": 401.85635, "b": 263.59277, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "offers a broad description of the function and advantages of controlling ", "bbox": {"l": 152.94002, "t": 266.72821, "r": 414.08423, "b": 275.59259, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "access to data in a comprehensive and transparent way. This ", "bbox": {"l": 152.94002, "t": 278.72803, "r": 381.24014, "b": 287.59244, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "publication helps you understand the capabilities of RCAC and provides ", "bbox": {"l": 152.94002, "t": 290.72784, "r": 414.07031, "b": 299.59225, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "examples of defining, creating, and implementing the row permissions ", "bbox": {"l": 152.94002, "t": 302.72766, "r": 414.05447, "b": 311.59207, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "and column masks in a relational database environment.", "bbox": {"l": 152.94002, "t": 314.72747999999996, "r": 362.3291, "b": 323.59189, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "This paper is intended for database engineers, data-centric application ", "bbox": {"l": 152.94002, "t": 331.70728, "r": 414.17383, "b": 340.57169, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "developers, and security officers who want to design and implement ", "bbox": {"l": 152.94002, "t": 343.70709, "r": 407.61029, "b": 352.5715, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "RCAC as a part of their data control and governance policy. A solid ", "bbox": {"l": 152.94002, "t": 355.70691, "r": 399.29565, "b": 364.57132, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "background in IBM i object level security, DB2 for i relational database ", "bbox": {"l": 152.94002, "t": 367.70673, "r": 414.0603, "b": 376.57114, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "concepts, and SQL is assumed.", "bbox": {"l": 152.94002, "t": 379.70654, "r": 268.86945, "b": 388.57095, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Back cover", "bbox": {"l": 287.22, "t": 28.54803000000004, "r": 414.24481, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "picture", "bbox": {"l": 485.1698303222656, "t": 25.259197235107422, "r": 566.2962036132812, "b": 54.68169999999998, "coord_origin": "TOPLEFT"}, "confidence": 0.9404253363609314, "cells": [{"id": 0, "text": "fi", "bbox": {"l": 558.11987, "t": 45.468689999999924, "r": 565.46039, "b": 54.68169999999998, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 170.78512573242188, "t": 630.505859375, "r": 232.11270141601562, "b": 639.66301, "coord_origin": "TOPLEFT"}, "confidence": 0.7700248956680298, "cells": [{"id": 1, "text": "REDP-5110-00", "bbox": {"l": 171.0, "t": 631.338, "r": 231.88769999999997, "b": 639.66301, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 466.3692626953125, "t": 247.39378356933594, "r": 559.80933, "b": 302.16061, "coord_origin": "TOPLEFT"}, "confidence": 0.8532671332359314, "cells": [{"id": 2, "text": "INTERNATIONAL ", "bbox": {"l": 467.3399999999999, "t": 247.71831999999995, "r": 559.80933, "b": 260.16052, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "TECHNICAL", "bbox": {"l": 467.3399999999999, "t": 261.75842, "r": 529.50208, "b": 274.20061999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "SUPPORT", "bbox": {"l": 467.3399999999999, "t": 275.73839999999996, "r": 518.93317, "b": 288.1806, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "ORGANIZATION", "bbox": {"l": 467.3399999999999, "t": 289.71841, "r": 550.7475, "b": 302.16061, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 466.3262939453125, "t": 351.4299011230469, "r": 587.38916, "b": 386.47198, "coord_origin": "TOPLEFT"}, "confidence": 0.7157137989997864, "cells": [{"id": 6, "text": "BUILDING TECHNICAL ", "bbox": {"l": 467.3399999999999, "t": 351.79199, "r": 571.70758, "b": 362.47198, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "INFORMATION BASED ON ", "bbox": {"l": 467.3399999999999, "t": 363.79199, "r": 587.38916, "b": 374.47198, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "PRACTICAL EXPERIENCE", "bbox": {"l": 467.3399999999999, "t": 375.79199, "r": 582.5556, "b": 386.47198, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 466.1037292480469, "t": 398.81231689453125, "r": 587.52051, "b": 541.63406, "coord_origin": "TOPLEFT"}, "confidence": 0.9518945813179016, "cells": [{"id": 9, "text": "IBM Redbooks are developed ", "bbox": {"l": 467.3399999999999, "t": 399.8602900000001, "r": 587.46674, "b": 409.63251, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "by the IBM International ", "bbox": {"l": 467.3399999999999, "t": 410.90067, "r": 566.34229, "b": 420.67285, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Technical Support ", "bbox": {"l": 467.3399999999999, "t": 421.88068, "r": 543.20404, "b": 431.65289, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Organization. Experts from ", "bbox": {"l": 467.3399999999999, "t": 432.8606899999999, "r": 577.76697, "b": 442.63287, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "IBM, Customers and Partners ", "bbox": {"l": 467.3399999999999, "t": 443.90106, "r": 587.40948, "b": 453.67328, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "from around the world create ", "bbox": {"l": 467.3399999999999, "t": 454.88107, "r": 587.52051, "b": 464.65326, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "timely technical information ", "bbox": {"l": 467.3399999999999, "t": 465.86108, "r": 582.67505, "b": 475.6333, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "based on realistic scenarios. ", "bbox": {"l": 467.3399999999999, "t": 476.90146, "r": 585.46722, "b": 486.67365, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Specific recommendations ", "bbox": {"l": 467.3399999999999, "t": 487.88147, "r": 577.70874, "b": 497.65369, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "are provided to help you ", "bbox": {"l": 467.3399999999999, "t": 498.86148, "r": 568.03546, "b": 508.63367, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "implement IT solutions more ", "bbox": {"l": 467.3399999999999, "t": 509.90186, "r": 585.44525, "b": 519.67407, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "effectively in your ", "bbox": {"l": 467.3399999999999, "t": 520.8818699999999, "r": 541.4967, "b": 530.65405, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "environment.", "bbox": {"l": 467.3399999999999, "t": 531.8618799999999, "r": 520.64893, "b": 541.63406, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 466.66748046875, "t": 577.88818359375, "r": 571.0052490234375, "b": 601.5119, "coord_origin": "TOPLEFT"}, "confidence": 0.8230004906654358, "cells": [{"id": 22, "text": "For more information:", "bbox": {"l": 467.3399999999999, "t": 578.83191, "r": 570.948, "b": 589.5119, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ibm.com", "bbox": {"l": 467.3399999999999, "t": 590.83191, "r": 508.59961, "b": 601.5119, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "/redbooks", "bbox": {"l": 508.56000000000006, "t": 590.83191, "r": 552.74518, "b": 601.5119, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "picture", "bbox": {"l": 474.35540771484375, "t": 80.05133819580078, "r": 592.2726440429688, "b": 189.8126220703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9696109890937805, "cells": [{"id": 25, "text": "Redpaper", "bbox": {"l": 474.60001, "t": 164.05658000000005, "r": 580.88989, "b": 188.94097999999997, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "\u2122", "bbox": {"l": 582.53992, "t": 172.32714999999996, "r": 592.13989, "b": 181.20714999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "section_header", "bbox": {"l": 26.454715728759766, "t": 71.63792419433594, "r": 447.36002, "b": 141.0381317138672, "coord_origin": "TOPLEFT"}, "confidence": 0.7128154635429382, "cells": [{"id": 27, "text": "Row and Column Access Control ", "bbox": {"l": 27.0, "t": 73.63799999999992, "r": 447.36002, "b": 103.00800000000004, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Support in IBM DB2 for i", "bbox": {"l": 27.0, "t": 113.76000999999997, "r": 314.43002, "b": 140.46002, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 26.35322380065918, "t": 240.97860717773438, "r": 127.4436, "b": 267.21185302734375, "coord_origin": "TOPLEFT"}, "confidence": 0.8400375843048096, "cells": [{"id": 29, "text": "Implement roles and ", "bbox": {"l": 26.700001, "t": 242.17200000000003, "r": 127.4436, "b": 252.85199, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "separation of duties", "bbox": {"l": 26.700001, "t": 256.15198, "r": 121.6608, "b": 266.83196999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 26.22105598449707, "t": 283.7095947265625, "r": 120.28319999999998, "b": 322.87198, "coord_origin": "TOPLEFT"}, "confidence": 0.8828509449958801, "cells": [{"id": 31, "text": "Leverage row ", "bbox": {"l": 26.700001, "t": 284.17197, "r": 93.970795, "b": 294.85196, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "permissions on the ", "bbox": {"l": 26.700001, "t": 298.15198000000004, "r": 120.28319999999998, "b": 308.83197, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "database", "bbox": {"l": 26.700001, "t": 312.19199000000003, "r": 70.413605, "b": 322.87198, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 26.226221084594727, "t": 339.11865234375, "r": 121.44960000000002, "b": 378.85199, "coord_origin": "TOPLEFT"}, "confidence": 0.9064874649047852, "cells": [{"id": 34, "text": "Protect columns by ", "bbox": {"l": 26.700001, "t": 340.15198000000004, "r": 121.44960000000002, "b": 350.83197, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "defining column ", "bbox": {"l": 26.700001, "t": 354.19199000000003, "r": 106.5696, "b": 364.87198, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "masks", "bbox": {"l": 26.700001, "t": 368.1720000000001, "r": 58.194, "b": 378.85199, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 152.25205993652344, "t": 241.8492889404297, "r": 414.08423, "b": 323.59189, "coord_origin": "TOPLEFT"}, "confidence": 0.9789718389511108, "cells": [{"id": 37, "text": "This IBM Redpaper publication provides information about the IBM i 7.2 ", "bbox": {"l": 152.94, "t": 242.72857999999997, "r": 413.99057, "b": 251.59295999999995, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "feature of IBM DB2 for i Row and Column Access Control (RCAC). It ", "bbox": {"l": 152.94002, "t": 254.72839, "r": 401.85635, "b": 263.59277, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "offers a broad description of the function and advantages of controlling ", "bbox": {"l": 152.94002, "t": 266.72821, "r": 414.08423, "b": 275.59259, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "access to data in a comprehensive and transparent way. This ", "bbox": {"l": 152.94002, "t": 278.72803, "r": 381.24014, "b": 287.59244, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "publication helps you understand the capabilities of RCAC and provides ", "bbox": {"l": 152.94002, "t": 290.72784, "r": 414.07031, "b": 299.59225, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "examples of defining, creating, and implementing the row permissions ", "bbox": {"l": 152.94002, "t": 302.72766, "r": 414.05447, "b": 311.59207, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "and column masks in a relational database environment.", "bbox": {"l": 152.94002, "t": 314.72747999999996, "r": 362.3291, "b": 323.59189, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 152.3572540283203, "t": 330.5283203125, "r": 414.17383, "b": 388.909912109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9799743890762329, "cells": [{"id": 44, "text": "This paper is intended for database engineers, data-centric application ", "bbox": {"l": 152.94002, "t": 331.70728, "r": 414.17383, "b": 340.57169, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "developers, and security officers who want to design and implement ", "bbox": {"l": 152.94002, "t": 343.70709, "r": 407.61029, "b": 352.5715, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "RCAC as a part of their data control and governance policy. A solid ", "bbox": {"l": 152.94002, "t": 355.70691, "r": 399.29565, "b": 364.57132, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "background in IBM i object level security, DB2 for i relational database ", "bbox": {"l": 152.94002, "t": 367.70673, "r": 414.0603, "b": 376.57114, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "concepts, and SQL is assumed.", "bbox": {"l": 152.94002, "t": 379.70654, "r": 268.86945, "b": 388.57095, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 287.22, "t": 28.54803000000004, "r": 414.24481, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 49, "text": "Back cover", "bbox": {"l": 287.22, "t": 28.54803000000004, "r": 414.24481, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "picture", "id": 0, "page_no": 17, "cluster": {"id": 0, "label": "picture", "bbox": {"l": 485.1698303222656, "t": 25.259197235107422, "r": 566.2962036132812, "b": 54.68169999999998, "coord_origin": "TOPLEFT"}, "confidence": 0.9404253363609314, "cells": [{"id": 0, "text": "fi", "bbox": {"l": 558.11987, "t": 45.468689999999924, "r": 565.46039, "b": 54.68169999999998, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "page_footer", "id": 1, "page_no": 17, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 170.78512573242188, "t": 630.505859375, "r": 232.11270141601562, "b": 639.66301, "coord_origin": "TOPLEFT"}, "confidence": 0.7700248956680298, "cells": [{"id": 1, "text": "REDP-5110-00", "bbox": {"l": 171.0, "t": 631.338, "r": 231.88769999999997, "b": 639.66301, "coord_origin": "TOPLEFT"}}]}, "text": "REDP-5110-00"}, {"label": "text", "id": 2, "page_no": 17, "cluster": {"id": 2, "label": "text", "bbox": {"l": 466.3692626953125, "t": 247.39378356933594, "r": 559.80933, "b": 302.16061, "coord_origin": "TOPLEFT"}, "confidence": 0.8532671332359314, "cells": [{"id": 2, "text": "INTERNATIONAL ", "bbox": {"l": 467.3399999999999, "t": 247.71831999999995, "r": 559.80933, "b": 260.16052, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "TECHNICAL", "bbox": {"l": 467.3399999999999, "t": 261.75842, "r": 529.50208, "b": 274.20061999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "SUPPORT", "bbox": {"l": 467.3399999999999, "t": 275.73839999999996, "r": 518.93317, "b": 288.1806, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "ORGANIZATION", "bbox": {"l": 467.3399999999999, "t": 289.71841, "r": 550.7475, "b": 302.16061, "coord_origin": "TOPLEFT"}}]}, "text": "INTERNATIONAL TECHNICAL SUPPORT ORGANIZATION"}, {"label": "text", "id": 3, "page_no": 17, "cluster": {"id": 3, "label": "text", "bbox": {"l": 466.3262939453125, "t": 351.4299011230469, "r": 587.38916, "b": 386.47198, "coord_origin": "TOPLEFT"}, "confidence": 0.7157137989997864, "cells": [{"id": 6, "text": "BUILDING TECHNICAL ", "bbox": {"l": 467.3399999999999, "t": 351.79199, "r": 571.70758, "b": 362.47198, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "INFORMATION BASED ON ", "bbox": {"l": 467.3399999999999, "t": 363.79199, "r": 587.38916, "b": 374.47198, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "PRACTICAL EXPERIENCE", "bbox": {"l": 467.3399999999999, "t": 375.79199, "r": 582.5556, "b": 386.47198, "coord_origin": "TOPLEFT"}}]}, "text": "BUILDING TECHNICAL INFORMATION BASED ON PRACTICAL EXPERIENCE"}, {"label": "text", "id": 4, "page_no": 17, "cluster": {"id": 4, "label": "text", "bbox": {"l": 466.1037292480469, "t": 398.81231689453125, "r": 587.52051, "b": 541.63406, "coord_origin": "TOPLEFT"}, "confidence": 0.9518945813179016, "cells": [{"id": 9, "text": "IBM Redbooks are developed ", "bbox": {"l": 467.3399999999999, "t": 399.8602900000001, "r": 587.46674, "b": 409.63251, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "by the IBM International ", "bbox": {"l": 467.3399999999999, "t": 410.90067, "r": 566.34229, "b": 420.67285, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Technical Support ", "bbox": {"l": 467.3399999999999, "t": 421.88068, "r": 543.20404, "b": 431.65289, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Organization. Experts from ", "bbox": {"l": 467.3399999999999, "t": 432.8606899999999, "r": 577.76697, "b": 442.63287, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "IBM, Customers and Partners ", "bbox": {"l": 467.3399999999999, "t": 443.90106, "r": 587.40948, "b": 453.67328, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "from around the world create ", "bbox": {"l": 467.3399999999999, "t": 454.88107, "r": 587.52051, "b": 464.65326, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "timely technical information ", "bbox": {"l": 467.3399999999999, "t": 465.86108, "r": 582.67505, "b": 475.6333, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "based on realistic scenarios. ", "bbox": {"l": 467.3399999999999, "t": 476.90146, "r": 585.46722, "b": 486.67365, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Specific recommendations ", "bbox": {"l": 467.3399999999999, "t": 487.88147, "r": 577.70874, "b": 497.65369, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "are provided to help you ", "bbox": {"l": 467.3399999999999, "t": 498.86148, "r": 568.03546, "b": 508.63367, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "implement IT solutions more ", "bbox": {"l": 467.3399999999999, "t": 509.90186, "r": 585.44525, "b": 519.67407, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "effectively in your ", "bbox": {"l": 467.3399999999999, "t": 520.8818699999999, "r": 541.4967, "b": 530.65405, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "environment.", "bbox": {"l": 467.3399999999999, "t": 531.8618799999999, "r": 520.64893, "b": 541.63406, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Redbooks are developed by the IBM International Technical Support Organization. Experts from IBM, Customers and Partners from around the world create timely technical information based on realistic scenarios. Specific recommendations are provided to help you implement IT solutions more effectively in your environment."}, {"label": "text", "id": 5, "page_no": 17, "cluster": {"id": 5, "label": "text", "bbox": {"l": 466.66748046875, "t": 577.88818359375, "r": 571.0052490234375, "b": 601.5119, "coord_origin": "TOPLEFT"}, "confidence": 0.8230004906654358, "cells": [{"id": 22, "text": "For more information:", "bbox": {"l": 467.3399999999999, "t": 578.83191, "r": 570.948, "b": 589.5119, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ibm.com", "bbox": {"l": 467.3399999999999, "t": 590.83191, "r": 508.59961, "b": 601.5119, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "/redbooks", "bbox": {"l": 508.56000000000006, "t": 590.83191, "r": 552.74518, "b": 601.5119, "coord_origin": "TOPLEFT"}}]}, "text": "For more information: ibm.com /redbooks"}, {"label": "picture", "id": 6, "page_no": 17, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 474.35540771484375, "t": 80.05133819580078, "r": 592.2726440429688, "b": 189.8126220703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9696109890937805, "cells": [{"id": 25, "text": "Redpaper", "bbox": {"l": 474.60001, "t": 164.05658000000005, "r": 580.88989, "b": 188.94097999999997, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "\u2122", "bbox": {"l": 582.53992, "t": 172.32714999999996, "r": 592.13989, "b": 181.20714999999996, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "section_header", "id": 7, "page_no": 17, "cluster": {"id": 7, "label": "section_header", "bbox": {"l": 26.454715728759766, "t": 71.63792419433594, "r": 447.36002, "b": 141.0381317138672, "coord_origin": "TOPLEFT"}, "confidence": 0.7128154635429382, "cells": [{"id": 27, "text": "Row and Column Access Control ", "bbox": {"l": 27.0, "t": 73.63799999999992, "r": 447.36002, "b": 103.00800000000004, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Support in IBM DB2 for i", "bbox": {"l": 27.0, "t": 113.76000999999997, "r": 314.43002, "b": 140.46002, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 8, "page_no": 17, "cluster": {"id": 8, "label": "text", "bbox": {"l": 26.35322380065918, "t": 240.97860717773438, "r": 127.4436, "b": 267.21185302734375, "coord_origin": "TOPLEFT"}, "confidence": 0.8400375843048096, "cells": [{"id": 29, "text": "Implement roles and ", "bbox": {"l": 26.700001, "t": 242.17200000000003, "r": 127.4436, "b": 252.85199, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "separation of duties", "bbox": {"l": 26.700001, "t": 256.15198, "r": 121.6608, "b": 266.83196999999996, "coord_origin": "TOPLEFT"}}]}, "text": "Implement roles and separation of duties"}, {"label": "text", "id": 9, "page_no": 17, "cluster": {"id": 9, "label": "text", "bbox": {"l": 26.22105598449707, "t": 283.7095947265625, "r": 120.28319999999998, "b": 322.87198, "coord_origin": "TOPLEFT"}, "confidence": 0.8828509449958801, "cells": [{"id": 31, "text": "Leverage row ", "bbox": {"l": 26.700001, "t": 284.17197, "r": 93.970795, "b": 294.85196, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "permissions on the ", "bbox": {"l": 26.700001, "t": 298.15198000000004, "r": 120.28319999999998, "b": 308.83197, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "database", "bbox": {"l": 26.700001, "t": 312.19199000000003, "r": 70.413605, "b": 322.87198, "coord_origin": "TOPLEFT"}}]}, "text": "Leverage row permissions on the database"}, {"label": "text", "id": 10, "page_no": 17, "cluster": {"id": 10, "label": "text", "bbox": {"l": 26.226221084594727, "t": 339.11865234375, "r": 121.44960000000002, "b": 378.85199, "coord_origin": "TOPLEFT"}, "confidence": 0.9064874649047852, "cells": [{"id": 34, "text": "Protect columns by ", "bbox": {"l": 26.700001, "t": 340.15198000000004, "r": 121.44960000000002, "b": 350.83197, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "defining column ", "bbox": {"l": 26.700001, "t": 354.19199000000003, "r": 106.5696, "b": 364.87198, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "masks", "bbox": {"l": 26.700001, "t": 368.1720000000001, "r": 58.194, "b": 378.85199, "coord_origin": "TOPLEFT"}}]}, "text": "Protect columns by defining column masks"}, {"label": "text", "id": 11, "page_no": 17, "cluster": {"id": 11, "label": "text", "bbox": {"l": 152.25205993652344, "t": 241.8492889404297, "r": 414.08423, "b": 323.59189, "coord_origin": "TOPLEFT"}, "confidence": 0.9789718389511108, "cells": [{"id": 37, "text": "This IBM Redpaper publication provides information about the IBM i 7.2 ", "bbox": {"l": 152.94, "t": 242.72857999999997, "r": 413.99057, "b": 251.59295999999995, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "feature of IBM DB2 for i Row and Column Access Control (RCAC). It ", "bbox": {"l": 152.94002, "t": 254.72839, "r": 401.85635, "b": 263.59277, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "offers a broad description of the function and advantages of controlling ", "bbox": {"l": 152.94002, "t": 266.72821, "r": 414.08423, "b": 275.59259, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "access to data in a comprehensive and transparent way. This ", "bbox": {"l": 152.94002, "t": 278.72803, "r": 381.24014, "b": 287.59244, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "publication helps you understand the capabilities of RCAC and provides ", "bbox": {"l": 152.94002, "t": 290.72784, "r": 414.07031, "b": 299.59225, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "examples of defining, creating, and implementing the row permissions ", "bbox": {"l": 152.94002, "t": 302.72766, "r": 414.05447, "b": 311.59207, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "and column masks in a relational database environment.", "bbox": {"l": 152.94002, "t": 314.72747999999996, "r": 362.3291, "b": 323.59189, "coord_origin": "TOPLEFT"}}]}, "text": "This IBM Redpaper publication provides information about the IBM i 7.2 feature of IBM DB2 for i Row and Column Access Control (RCAC). It offers a broad description of the function and advantages of controlling access to data in a comprehensive and transparent way. This publication helps you understand the capabilities of RCAC and provides examples of defining, creating, and implementing the row permissions and column masks in a relational database environment."}, {"label": "text", "id": 12, "page_no": 17, "cluster": {"id": 12, "label": "text", "bbox": {"l": 152.3572540283203, "t": 330.5283203125, "r": 414.17383, "b": 388.909912109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9799743890762329, "cells": [{"id": 44, "text": "This paper is intended for database engineers, data-centric application ", "bbox": {"l": 152.94002, "t": 331.70728, "r": 414.17383, "b": 340.57169, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "developers, and security officers who want to design and implement ", "bbox": {"l": 152.94002, "t": 343.70709, "r": 407.61029, "b": 352.5715, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "RCAC as a part of their data control and governance policy. A solid ", "bbox": {"l": 152.94002, "t": 355.70691, "r": 399.29565, "b": 364.57132, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "background in IBM i object level security, DB2 for i relational database ", "bbox": {"l": 152.94002, "t": 367.70673, "r": 414.0603, "b": 376.57114, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "concepts, and SQL is assumed.", "bbox": {"l": 152.94002, "t": 379.70654, "r": 268.86945, "b": 388.57095, "coord_origin": "TOPLEFT"}}]}, "text": "This paper is intended for database engineers, data-centric application developers, and security officers who want to design and implement RCAC as a part of their data control and governance policy. A solid background in IBM i object level security, DB2 for i relational database concepts, and SQL is assumed."}, {"label": "text", "id": 13, "page_no": 17, "cluster": {"id": 13, "label": "text", "bbox": {"l": 287.22, "t": 28.54803000000004, "r": 414.24481, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 49, "text": "Back cover", "bbox": {"l": 287.22, "t": 28.54803000000004, "r": 414.24481, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}}]}, "text": "Back cover"}], "body": [{"label": "picture", "id": 0, "page_no": 17, "cluster": {"id": 0, "label": "picture", "bbox": {"l": 485.1698303222656, "t": 25.259197235107422, "r": 566.2962036132812, "b": 54.68169999999998, "coord_origin": "TOPLEFT"}, "confidence": 0.9404253363609314, "cells": [{"id": 0, "text": "fi", "bbox": {"l": 558.11987, "t": 45.468689999999924, "r": 565.46039, "b": 54.68169999999998, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "text", "id": 2, "page_no": 17, "cluster": {"id": 2, "label": "text", "bbox": {"l": 466.3692626953125, "t": 247.39378356933594, "r": 559.80933, "b": 302.16061, "coord_origin": "TOPLEFT"}, "confidence": 0.8532671332359314, "cells": [{"id": 2, "text": "INTERNATIONAL ", "bbox": {"l": 467.3399999999999, "t": 247.71831999999995, "r": 559.80933, "b": 260.16052, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "TECHNICAL", "bbox": {"l": 467.3399999999999, "t": 261.75842, "r": 529.50208, "b": 274.20061999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "SUPPORT", "bbox": {"l": 467.3399999999999, "t": 275.73839999999996, "r": 518.93317, "b": 288.1806, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "ORGANIZATION", "bbox": {"l": 467.3399999999999, "t": 289.71841, "r": 550.7475, "b": 302.16061, "coord_origin": "TOPLEFT"}}]}, "text": "INTERNATIONAL TECHNICAL SUPPORT ORGANIZATION"}, {"label": "text", "id": 3, "page_no": 17, "cluster": {"id": 3, "label": "text", "bbox": {"l": 466.3262939453125, "t": 351.4299011230469, "r": 587.38916, "b": 386.47198, "coord_origin": "TOPLEFT"}, "confidence": 0.7157137989997864, "cells": [{"id": 6, "text": "BUILDING TECHNICAL ", "bbox": {"l": 467.3399999999999, "t": 351.79199, "r": 571.70758, "b": 362.47198, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "INFORMATION BASED ON ", "bbox": {"l": 467.3399999999999, "t": 363.79199, "r": 587.38916, "b": 374.47198, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "PRACTICAL EXPERIENCE", "bbox": {"l": 467.3399999999999, "t": 375.79199, "r": 582.5556, "b": 386.47198, "coord_origin": "TOPLEFT"}}]}, "text": "BUILDING TECHNICAL INFORMATION BASED ON PRACTICAL EXPERIENCE"}, {"label": "text", "id": 4, "page_no": 17, "cluster": {"id": 4, "label": "text", "bbox": {"l": 466.1037292480469, "t": 398.81231689453125, "r": 587.52051, "b": 541.63406, "coord_origin": "TOPLEFT"}, "confidence": 0.9518945813179016, "cells": [{"id": 9, "text": "IBM Redbooks are developed ", "bbox": {"l": 467.3399999999999, "t": 399.8602900000001, "r": 587.46674, "b": 409.63251, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "by the IBM International ", "bbox": {"l": 467.3399999999999, "t": 410.90067, "r": 566.34229, "b": 420.67285, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Technical Support ", "bbox": {"l": 467.3399999999999, "t": 421.88068, "r": 543.20404, "b": 431.65289, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Organization. Experts from ", "bbox": {"l": 467.3399999999999, "t": 432.8606899999999, "r": 577.76697, "b": 442.63287, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "IBM, Customers and Partners ", "bbox": {"l": 467.3399999999999, "t": 443.90106, "r": 587.40948, "b": 453.67328, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "from around the world create ", "bbox": {"l": 467.3399999999999, "t": 454.88107, "r": 587.52051, "b": 464.65326, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "timely technical information ", "bbox": {"l": 467.3399999999999, "t": 465.86108, "r": 582.67505, "b": 475.6333, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "based on realistic scenarios. ", "bbox": {"l": 467.3399999999999, "t": 476.90146, "r": 585.46722, "b": 486.67365, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Specific recommendations ", "bbox": {"l": 467.3399999999999, "t": 487.88147, "r": 577.70874, "b": 497.65369, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "are provided to help you ", "bbox": {"l": 467.3399999999999, "t": 498.86148, "r": 568.03546, "b": 508.63367, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "implement IT solutions more ", "bbox": {"l": 467.3399999999999, "t": 509.90186, "r": 585.44525, "b": 519.67407, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "effectively in your ", "bbox": {"l": 467.3399999999999, "t": 520.8818699999999, "r": 541.4967, "b": 530.65405, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "environment.", "bbox": {"l": 467.3399999999999, "t": 531.8618799999999, "r": 520.64893, "b": 541.63406, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Redbooks are developed by the IBM International Technical Support Organization. Experts from IBM, Customers and Partners from around the world create timely technical information based on realistic scenarios. Specific recommendations are provided to help you implement IT solutions more effectively in your environment."}, {"label": "text", "id": 5, "page_no": 17, "cluster": {"id": 5, "label": "text", "bbox": {"l": 466.66748046875, "t": 577.88818359375, "r": 571.0052490234375, "b": 601.5119, "coord_origin": "TOPLEFT"}, "confidence": 0.8230004906654358, "cells": [{"id": 22, "text": "For more information:", "bbox": {"l": 467.3399999999999, "t": 578.83191, "r": 570.948, "b": 589.5119, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ibm.com", "bbox": {"l": 467.3399999999999, "t": 590.83191, "r": 508.59961, "b": 601.5119, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "/redbooks", "bbox": {"l": 508.56000000000006, "t": 590.83191, "r": 552.74518, "b": 601.5119, "coord_origin": "TOPLEFT"}}]}, "text": "For more information: ibm.com /redbooks"}, {"label": "picture", "id": 6, "page_no": 17, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 474.35540771484375, "t": 80.05133819580078, "r": 592.2726440429688, "b": 189.8126220703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9696109890937805, "cells": [{"id": 25, "text": "Redpaper", "bbox": {"l": 474.60001, "t": 164.05658000000005, "r": 580.88989, "b": 188.94097999999997, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "\u2122", "bbox": {"l": 582.53992, "t": 172.32714999999996, "r": 592.13989, "b": 181.20714999999996, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "section_header", "id": 7, "page_no": 17, "cluster": {"id": 7, "label": "section_header", "bbox": {"l": 26.454715728759766, "t": 71.63792419433594, "r": 447.36002, "b": 141.0381317138672, "coord_origin": "TOPLEFT"}, "confidence": 0.7128154635429382, "cells": [{"id": 27, "text": "Row and Column Access Control ", "bbox": {"l": 27.0, "t": 73.63799999999992, "r": 447.36002, "b": 103.00800000000004, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Support in IBM DB2 for i", "bbox": {"l": 27.0, "t": 113.76000999999997, "r": 314.43002, "b": 140.46002, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 8, "page_no": 17, "cluster": {"id": 8, "label": "text", "bbox": {"l": 26.35322380065918, "t": 240.97860717773438, "r": 127.4436, "b": 267.21185302734375, "coord_origin": "TOPLEFT"}, "confidence": 0.8400375843048096, "cells": [{"id": 29, "text": "Implement roles and ", "bbox": {"l": 26.700001, "t": 242.17200000000003, "r": 127.4436, "b": 252.85199, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "separation of duties", "bbox": {"l": 26.700001, "t": 256.15198, "r": 121.6608, "b": 266.83196999999996, "coord_origin": "TOPLEFT"}}]}, "text": "Implement roles and separation of duties"}, {"label": "text", "id": 9, "page_no": 17, "cluster": {"id": 9, "label": "text", "bbox": {"l": 26.22105598449707, "t": 283.7095947265625, "r": 120.28319999999998, "b": 322.87198, "coord_origin": "TOPLEFT"}, "confidence": 0.8828509449958801, "cells": [{"id": 31, "text": "Leverage row ", "bbox": {"l": 26.700001, "t": 284.17197, "r": 93.970795, "b": 294.85196, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "permissions on the ", "bbox": {"l": 26.700001, "t": 298.15198000000004, "r": 120.28319999999998, "b": 308.83197, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "database", "bbox": {"l": 26.700001, "t": 312.19199000000003, "r": 70.413605, "b": 322.87198, "coord_origin": "TOPLEFT"}}]}, "text": "Leverage row permissions on the database"}, {"label": "text", "id": 10, "page_no": 17, "cluster": {"id": 10, "label": "text", "bbox": {"l": 26.226221084594727, "t": 339.11865234375, "r": 121.44960000000002, "b": 378.85199, "coord_origin": "TOPLEFT"}, "confidence": 0.9064874649047852, "cells": [{"id": 34, "text": "Protect columns by ", "bbox": {"l": 26.700001, "t": 340.15198000000004, "r": 121.44960000000002, "b": 350.83197, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "defining column ", "bbox": {"l": 26.700001, "t": 354.19199000000003, "r": 106.5696, "b": 364.87198, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "masks", "bbox": {"l": 26.700001, "t": 368.1720000000001, "r": 58.194, "b": 378.85199, "coord_origin": "TOPLEFT"}}]}, "text": "Protect columns by defining column masks"}, {"label": "text", "id": 11, "page_no": 17, "cluster": {"id": 11, "label": "text", "bbox": {"l": 152.25205993652344, "t": 241.8492889404297, "r": 414.08423, "b": 323.59189, "coord_origin": "TOPLEFT"}, "confidence": 0.9789718389511108, "cells": [{"id": 37, "text": "This IBM Redpaper publication provides information about the IBM i 7.2 ", "bbox": {"l": 152.94, "t": 242.72857999999997, "r": 413.99057, "b": 251.59295999999995, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "feature of IBM DB2 for i Row and Column Access Control (RCAC). It ", "bbox": {"l": 152.94002, "t": 254.72839, "r": 401.85635, "b": 263.59277, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "offers a broad description of the function and advantages of controlling ", "bbox": {"l": 152.94002, "t": 266.72821, "r": 414.08423, "b": 275.59259, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "access to data in a comprehensive and transparent way. This ", "bbox": {"l": 152.94002, "t": 278.72803, "r": 381.24014, "b": 287.59244, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "publication helps you understand the capabilities of RCAC and provides ", "bbox": {"l": 152.94002, "t": 290.72784, "r": 414.07031, "b": 299.59225, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "examples of defining, creating, and implementing the row permissions ", "bbox": {"l": 152.94002, "t": 302.72766, "r": 414.05447, "b": 311.59207, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "and column masks in a relational database environment.", "bbox": {"l": 152.94002, "t": 314.72747999999996, "r": 362.3291, "b": 323.59189, "coord_origin": "TOPLEFT"}}]}, "text": "This IBM Redpaper publication provides information about the IBM i 7.2 feature of IBM DB2 for i Row and Column Access Control (RCAC). It offers a broad description of the function and advantages of controlling access to data in a comprehensive and transparent way. This publication helps you understand the capabilities of RCAC and provides examples of defining, creating, and implementing the row permissions and column masks in a relational database environment."}, {"label": "text", "id": 12, "page_no": 17, "cluster": {"id": 12, "label": "text", "bbox": {"l": 152.3572540283203, "t": 330.5283203125, "r": 414.17383, "b": 388.909912109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9799743890762329, "cells": [{"id": 44, "text": "This paper is intended for database engineers, data-centric application ", "bbox": {"l": 152.94002, "t": 331.70728, "r": 414.17383, "b": 340.57169, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "developers, and security officers who want to design and implement ", "bbox": {"l": 152.94002, "t": 343.70709, "r": 407.61029, "b": 352.5715, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "RCAC as a part of their data control and governance policy. A solid ", "bbox": {"l": 152.94002, "t": 355.70691, "r": 399.29565, "b": 364.57132, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "background in IBM i object level security, DB2 for i relational database ", "bbox": {"l": 152.94002, "t": 367.70673, "r": 414.0603, "b": 376.57114, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "concepts, and SQL is assumed.", "bbox": {"l": 152.94002, "t": 379.70654, "r": 268.86945, "b": 388.57095, "coord_origin": "TOPLEFT"}}]}, "text": "This paper is intended for database engineers, data-centric application developers, and security officers who want to design and implement RCAC as a part of their data control and governance policy. A solid background in IBM i object level security, DB2 for i relational database concepts, and SQL is assumed."}, {"label": "text", "id": 13, "page_no": 17, "cluster": {"id": 13, "label": "text", "bbox": {"l": 287.22, "t": 28.54803000000004, "r": 414.24481, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 49, "text": "Back cover", "bbox": {"l": 287.22, "t": 28.54803000000004, "r": 414.24481, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}}]}, "text": "Back cover"}], "headers": [{"label": "page_footer", "id": 1, "page_no": 17, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 170.78512573242188, "t": 630.505859375, "r": 232.11270141601562, "b": 639.66301, "coord_origin": "TOPLEFT"}, "confidence": 0.7700248956680298, "cells": [{"id": 1, "text": "REDP-5110-00", "bbox": {"l": 171.0, "t": 631.338, "r": 231.88769999999997, "b": 639.66301, "coord_origin": "TOPLEFT"}}]}, "text": "REDP-5110-00"}]}}] diff --git a/tests/data/groundtruth/docling_v1/redp5695.doctags.txt b/tests/data/groundtruth/docling_v1/redp5695.doctags.txt deleted file mode 100644 index ffd5b2fc..00000000 --- a/tests/data/groundtruth/docling_v1/redp5695.doctags.txt +++ /dev/null @@ -1,460 +0,0 @@ - -Front cover -
- -
-IBM Cloud Pak for Data on IBM Z -Jasmeet Bhatia -Ravi Gummadi -Chandra Shekhar Reddy Potula -Srirama Sharma -Data and AI -
- -
-
- -
-
- -
-Executive overview -Most industries are susceptible to fraud, which poses a risk to both businesses and consumers. According to The National Health Care Anti-Fraud Association, health care fraud alone causes the nation around $68 billion annually.$^{1}$ This statistic does not include the numerous other industries where fraudulent activities occur daily. In addition, the growing amount of data that enterprises own makes it difficult for them to detect fraud. Businesses can benefit by using an analytical platform to fully integrate their data with artificial intelligence (AI) technology. -With IBM Cloud Pakfi for Data on IBM Z, enterprises can modernize their data infrastructure, develop, and deploy machine learning (ML) and AI models, and instantiate highly efficient analytics deployment on IBM LinuxONE. Enterprises can create cutting-edge, intelligent, and interactive applications with embedded AI, colocate data with commercial applications, and use AI to make inferences. -This IBM Redguide publication presents a high-level overview of IBM Z. It describes IBM Cloud Pak for Data (CP4D) on IBM Z and IBM LinuxONE, the different features that are supported on the platform, and how the associated features can help enterprise customers in building AI and ML models by using core transactional data, which results in decreased latency and increased throughput. -This publication highlights real-time CP4D on IBM Z use cases. Real-time Clearing and Settlement Transactions, Trustworthy AI and its Role in Day-To-Day Monitoring, and the Prevention of Retail Crimes are use cases that are described in this publication. Using CP4D on IBM Z and LinuxONE, this publication shows how businesses can implement a highly efficient analytics deployment that minimizes latency, cost inefficiencies, and potential security exposures that are connected with data transportation. -IBM Z: An overview -Ever wonder how many transactions a bank processes per day? What about the pace at which these transactions happen? According to an IBMfi report, 44 of 50 of the world's top banks use IBM Z mainframes for these daily transactions.$^{2}$ IBM Z is a platform that is designed for voluminous data, maximum security, real-time transaction analysis, and cost efficiency. -The most recent platform for IBM Z is IBM z16™. The IBM z16 supports the following features: -- GLYPH On-chip AI acceleration -- GLYPH Quantum-safe crypto discovery -- GLYPH Simplified compliance -- GLYPH Flexible capacity -- GLYPH Modernization of applications -- GLYPH Sustainability -With these features, enterprises can upgrade applications while preserving secure and resilient data. -To learn more about these features, see the IBM z16 product page. -Figure 1 on page 3 shows a picture of the IBM z16 mainframe. -Figure 1 IBM z16 -
- -Figure 1 IBM z16 -
-IBM z16 and IBM LinuxONE Emperor 4 features -IBM Z are based on enterprise mainframe technology. Starting with transaction-based workloads and databases, IBM Z has undergone tremendous transformations in its system design for many generations to build servers that cater to Linux-based workloads and security with a cyberresilient system, and support quantum computing and modernization by using a hybrid cloud with a focus on data and AI. -Figure 2 provides a snapshot of the IBM Z processor roadmap, which depicts the journey of transformation and improvement. -Figure 2 IBM Z: Processor roadmap -
- -Figure 2 IBM Z: Processor roadmap -
-The IBM z16 and IBM LinuxONE Emperor 4 are the latest of the IBM Z, and they are developed with a 'built to build' focus to provide a powerful, cyberresilient, open, and secure platform for business with an extra focus on sustainability to help build sustainable data centers. Although the z16 server can host both IBM z/OSfi and Linux workloads, LinuxONE Emperor 4 is built to host Linux only workloads with a focus on consolidation and resiliency. Depending on the workload, consolidation from numerous x86 servers into a LinuxONE Emperor 4 can help reduce energy consumption by 75% and data center floor space by 50%, which helps to achieve the sustainability goals of the organization. -Figure 3 on page 5 shows a summary of the system design of IBM LinuxONE Emperor 4 with the IBM Telum™ processor. The IBM Telum processor chip is designed to run enterprise applications efficiently where their data resides to embed AI with super low latency. The support for higher bandwidth and I/O rates is supported through FCP Express cards with an endpoint security solution. The memory subsystem supports up to 40 TB of memory. -Figure 3 System design of IBM z16 LinuxONE Emperor 4 -
- -Figure 3 System design of IBM z16 LinuxONE Emperor 4 -
-The IBM z16 and IBM LinuxONE Emperor 4 servers are built with 7-nm technology at a 5.2 GHz speed. They consist of four dual-chip modules (DCMs) per central processor complex (CPC) drawer, each of which is built with two 8-core Telum processor chips that has "first in the industry" on-chip acceleration for mid-transaction, real-time AI inferencing, which supports many different use cases, including fraud detection. -Each core has access to a huge private 32 MB L2 cache where up to 16 MB of the L2 cache of an inactive core can be used as virtual cache (L3 / L4) by neighboring active cores on the chip. This cache helps address translation and access checking by prefetching the same virtual cache into the L2 cache. The virtual cache also includes Neural Network Processing Assist instructions and direct memory access with protection, and per chip GZIP compression. -Figure 4 provides more information about the features of AI Accelerator integration with the IBM Z processor cores. -Figure 4 IBM z16 on-chip AI Accelerator integration with IBM Z processor cores -
- -Figure 4 IBM z16 on-chip AI Accelerator integration with IBM Z processor cores -
-The IBM z16 and IBM LinuxONE Emperor 4 server platforms are built with the hardware features that are shown in Figure 4 with addressing data and AI workloads in mind. Regardless of where the ML and deep learning (DL) frameworks are used to build and train data and AI models, the inferencing on existing enterprise application data can happen along currently running enterprise business applications. CP4D 4.6 supports Tensorflow and IBM Snap ML frameworks, which are optimized to use the on-chip AI Accelerator during inferencing. Support for various other frameworks is planned for future releases. -Figure 5 on page 7 shows the seamless integration of AI into existing enterprises workloads on the IBM z16 while leveraging the underlying hardware capabilities. -Figure 5 Seamless integration -
- -Figure 5 Seamless integration -
-What is Cloud Pak for Data on IBM Z -IBM Cloud Pak for Data allows enterprises to simplify, unify, and automate the delivery of data and AI. It categorizes the activities within the journey to AI as four rungs of the AI Ladder: Collect, Organize, Analyze, and Infuse. For more information about each of the AI Ladder rungs, see Become Data Driven with IBM Z Infused Data Fabric , REDP-5680. -CP4D on IBM Z provides enterprises with a resilient and secure private cloud platform. You can use it to create ML and AI models that may be included into modern intelligent applications. You also can use it to use and construct applications for mission-critical data. With CP4D on IBM Z, enterprises can lower data movement latency, cost inefficiencies, and potential security exposures. Enterprises can safely store and access their most important company data, and leverage their current infrastructure by using cutting-edge hybrid cloud applications. Enterprises can combine their current database applications without any rewrites, which results in reduced cost and complexity. Lastly, by using CP4D on IBM Z, enterprises can update their database infrastructure to benefit from easier management, a quicker time to value, and lower operating expenses. -Figure 6 shows a solution overview of CP4D. The infrastructure alternatives are shown at the bottom, and they include IBM Z and LinuxONE. They all leverage Red Hat OpenShift. Common Foundational Services come next, which offer clarity throughout the data and AI lifecycle, that is, from user access management to monitoring and service provisioning. A high-level view of the services is shown in the middle section. The services have several different capabilities that span the AI hierarchy. The platform can be expanded, and it offers a seamless user experience for all distinct personas across the AI lifecycle, from data gathering through AI infusion. -Figure 6 Solution overview of Cloud Pak for Data -
- -Figure 6 Solution overview of Cloud Pak for Data -
-We highlight the four main pillars that make IBM Z the correct infrastructure for CP4D: -- GLYPH Performance and Scale -- GLYPH Embedded Accelerators -- GLYPH Reliability and Availability -- GLYPH Security and Governance. -From a performance perspective, CP4D on IBM Z provides your data and AI with high transaction processing and a powerful infrastructure. From the embedded accelerators perspective, CP4D on IBM Z can investigate each transaction thanks to a cutting-edge DL inference technology even in the most demanding, sensitive, and latency-prone real-time workloads. From a reliability perspective, CP4D on IBM Z provides high availability and resiliency. Lastly from the security perspective, CP4D on IBM Z is suitable for protecting sensitive data and AI models for enterprises in highly regulated industries or those industries that are worried about security. -Cloud Pak for Data capabilities on IBM Z and IBM LinuxONE -With CP4D on IBM Z and IBM LinuxONE, users can develop, train, and deploy AI and ML models. Users can accomplish this task by using the CP4D IBM Watsonfi Studio and IBM Watson Machine Learning (WLM) services. By using these two fundamental services, users can accomplish the following tasks: -- GLYPH Provision various containerized databases. -- GLYPH Explore, clean, shape, and alter data by using Data Refinery. -- GLYPH Use project-specific data that is uploaded, or connect to distant data. -- GLYPH Create Spark run times and applications. -- GLYPH Create, build, evaluate, and deploy analytics and ML models with trust and transparency. -- GLYPH Leverage the AI Integrated Accelerator for TensorFlow 2.7.2 and Snap ML 1.9. -For more information about the specifics of these capabilities, see Capabilities on Linux on IBM Z and IBM LinuxONE. -Open-source ecosystem -These days, innovation and product development are not limited to closed doors within an organization. In any industry sector, the solutions include a mix of proprietary code addressing the core business solution that is supported or integrated into other software components from open source. In some cases, enterprises business solutions also are built from open-source community offerings. Thus, open-source software becomes an important ingredient in modern-day solution building. -IBM actively participates in various open-source communities as part of steering boards defining the roadmap of the community, and also in contributing code to make the community a better place for everyone to participate. Red Hat also actively participates in various open-source communities and makes extensive contributions. In open-source communities, although most open-source development happens on x86 / amd64 or the Intel architecture, the same open-source software is used by other architectures, such as IBM Power (ppc64le), IBM Z and IBM LInuxONE (s390x), ARM, and Sparc. So, the availability of an open-source ecosystem on any architecture is key and critical to business. -On IBM Z and IBM LinuxONE (s390x) architecture, there is a huge open-source support ecosystem that ranges from operating systems such as Linux; application run times; cloud and container services; DevOps and automation; big data; observability; analytics; databases; and storage. The ecosystem on IBM Z and IBM LinuxONE is growing. -IBM Z and IBM LinuxONE include much open-source software in their ecosystem. You can see the growing list of open-source software for IBM Z and LinuxONE at The Growing Ecosystem of Open-Source Software for IBM Z and LinuxONE. -IBM Z and IBM LinuxONE are available to various communities to include support for s390x builds as part of their community's continuous integration and continuous delivery (CI/CD). Also, for open-source community developers, infrastructure resources are available on a no-charge basis through the IBM LinuxONE community cloud. -CP4D includes a mix of open-source and proprietary data and AI runtime databases; open-source run times like Python; open-source data platforms like Anaconda; ML and DL frameworks like Pytorch and Tensorflow; and thousands of reusable Python packages. All of them are available and supported on s390x architecture to provide seamless parity with x86 architecture and a seamless experience for enterprise data scientists, architects, and data and AI solution developers on IBM Z and IBM LinuxONE platforms. -Anaconda is one of the open-source data platforms that provide Python and R based data science ML frameworks; analytics and data visualization tools; and open-source data science tools and libraries like Conda, XGBoost, and SciKit-Learn. Anaconda runs natively on Linux on IBM Z and IBM LinuxONE, and on IBM z/OS Container Extensions (zcX) on z/OS. For more information, see Announcing Anaconda for Linux on IBM Z and LinuxONE. -In addition to strong, open-source ecosystem support for application development on Linux and enterprise operating systems, a new generation of IBM Z and IBM LinuxONE servers (IBM z16™) also have strong platform support, and AI acceleration capabilities that can be leveraged by open-source software to perform better on the server infrastructure. For example, the recently released CP4D 4.6 has Tensorflow and IBM SnapML frameworks that leverage the AI accelerators when running on an IBM z16 server. -So, to summarize, there is a huge, growing data and AI open source ecosystem that is supported and optimized on IBM Z and IBM LinuxONE servers. -Why AI on IBM Z -Data and AI playing a major role in the modernization story to enable the digital transformation journey of every organization. Many organizations recognize the business value of infusing AI into their infrastructure. CP4D provides the cloud-native solution to put your data to work. With CP4D, all your data users can collaborate from a single, unified interface that supports many services that work together, including collecting data, organizing the data, analyzing the data, and infusing AI. -Traditional ML models' power most of today's ML applications in business and among AI practitioners. CP4D supports traditional ML frameworks for training and inferencing, such as Scikit-learn, Snap ML, and XGBoost. Snap ML is a library that provides high-speed training and inferencing of ML models that leverage the AI accelerator while running on an IBM z16 (Linux on IBM Z). CP4D supports DL frameworks such as TensorFlow and PyTorch. TensorFlow is a DL framework that leverages the AI accelerator while running on an IBM z16 (Linux on IBM Z). -Figure 7 on page 11 provides an overview of the components that are supported on CP4D on IBM Z. You can leverage Watson Studio for model building, training, and validation, and WML for deployment of the model. Eventually, applications can use the AI inference endpoint to score the model. -Figure 7 Developing, training, and deploying an AI model on Cloud Pak for Data on IBM Z and IBM LinuxONE -
- -Figure 7 Developing, training, and deploying an AI model on Cloud Pak for Data on IBM Z and IBM LinuxONE -
-In summary, here are some of the reasons why you should choose AI on IBM Z: -- GLYPH World-class AI inference platform for enterprise workloads: -- -Embedded accelerators: A centralized on-chip AI accelerator that is shared by all cores. -- -Industry standard AI ecosystem: Many industry open-source data science frameworks are available on the platform. -- -Seamlessly integrate AI into existing enterprise workload stacks: Train anywhere, and then deploy on IBM Z. -- GLYPH Security: Encrypted memory, and improved trusted execution environments. -- GLYPH Sustainability: Reduce your energy consumption with real-time monitoring tools about the energy consumption of the system. -AI use cases -With billions of transactions per day in many of today's industries, it is key to get real-time insights about what is happening in your data. AI on the IBM Z stack understands these situations, and it delivers in-transaction inference in real time and at scale. -Core banking solutions running on IBM Z that are involved in processing inbound transactions need real-time fraud detection to prevent fraud. Other types of possible use cases might be credit risk analysis, anti-money laundering, loan approval, fraud detection in payments, and instant payments. -For insurance companies, a pressing use case would be claims processing. For markets and trading, clearing and settlement use cases are paramount. -For the health care industry, medical image processing (such as MRIs and x-rays), skin cancer detection, and patient monitoring activities such as infant motion analysis, is important. -For the airline industry, processes such as air traffic management, flight management systems, and flight maintenance predictions are use cases that are ideal candidates for using AI on IBM Z. -In the following sections, we describe the following use cases: -- GLYPH "Use case 1: Responsible AI augmented with risk and regulatory compliance" on page 12 AI model lifecycle governance, risk management, and regulatory compliance are key to the success of the enterprises. It is imperative to adopt a typical AI model lifecycle to protect new end-to-end risks. -- GLYPH "Use case 2: Credit default risk assessment" on page 22 -- Core banking solutions running on IBM Z that are involved in processing inbound transactions need real-time fraud detection to prevent fraud. Other types of possible use cases might be credit risk analysis, anti-money laundering, loan approval, fraud detection in payments, and instant payments. -- GLYPH "Use case 3: Clearing and settlement" on page 25 -- The use of AI can help to predict which trades or transactions have high risk exposures, and propose solutions for a more efficient settlement process. -- GLYPH "Use case 4: Remaining Useful Life of an aircraft engine" on page 27 -- We describe how AI can help to avoid unplanned aircraft downtime by determining the remaining time or cycles that an aircraft engine is likely to operate before failure. -- GLYPH "Use case 5: AI-powered video analytics on an infant's motions for health prediction" on page 30 -- In this section, we describe how AI can predict an infant's health conditions by monitoring real-time body movements. -Use case 1: Responsible AI augmented with risk and regulatory compliance -Advancement in AI is changing the world, and organizations must adopt AI to embrace new challenges daily. Many enterprises see tremendous value in adopting AI and ML technologies while establishing organization trust in the models, underlying data, and the process to be followed. An AI model lifecycle can be a daunting task. -How mature is your AI governance? In this section, we provide a use case demonstrating the trustworthiness of AI and its importance in daily monitoring. -Industry challenges -Here are the three main reasons why organizations struggle with the adoption of AI: -- GLYPH Scaling with growing regulations -- GLYPH Lack of confidence in operationalized AI (making responsible AI) -- GLYPH Challenges around managing the risk throughout the entire AI workflow -Scaling with growing regulations -Laws and regulations in the data and AI space are accelerating, and many countries are proposing strict AI policies. Countries are monitoring adherence of these policies by the enterprises and imposing fines for any violations. Responding to these regulations are challenging global organizations where multiple regulations apply. For enterprises, it is important to adopt AI policies when there is change, and to validate explainable models to protect against discrimination. -Responsible AI -Responsible AI protects against loss of data privacy, and reduced customer loyalty and trust. A data scientist cannot maximize accuracy and model performance above all other concerns. Practicing responsible AI is a best practice, and you must establish protection and validation to ensure that any models that are placed into production are fair and explainable. -Risks throughout the entire AI workflow -Organizations need to mitigate risk of the following items: -- GLYPH Deciding not to use certain technologies or practices -- GLYPH Using personal information when needed and with a user's consent -- GLYPH Ensuring automated decisions are free from bias -- GLYPH Customer confidence by providing explanations for business decisions -- GLYPH Fraud to the organization and to customer's accounts -- GLYPH Delays in putting models into production -In fact, in a recent survey, these concerns were echoed by real AI adopters when asked what aspects of trust are most important to them. Although explaining how AI decides is the primary concern, all of these concerns are important. -The key point here is that risk exists throughout the entire AI lifecycle starting with the underlying data and the business justification behind the "why" of the project and continuing into production. Without a formalized process, there is no way to mitigate these risks to unlock the scale that is required to make automated decisions profitable. With these decisions, the business can operate proactively instead of reactively. -For example, a business can start testing a model before production for fairness metrics. For this task, enterprises need an end-to-end workflow with approvals to mitigate these risks and increase the scale of AI investments, as shown in Figure 8, which presents a typical AI model lifecycle in an enterprise. -Figure 8 Typical AI model lifecycle -
- -Figure 8 Typical AI model lifecycle -
-Due to regulations, more stakeholders adopt the typical AI model lifecycle to protect their brand from new end-to-end risks. To ensure various aspects of both regulatory compliance and security, the personas that must be involved include the chief financial officer (CFO), chief marketing officer (CMO), chief data officer (CDO), HR, and chief regulatory officer (CRO), along with the data engineers, data scientists, and business analysts, who build AI workflows. -IBM governance solution for IBM Z -AI model lifecycle governance, risk management, and regulatory compliance are key to the success of enterprises. -AI governance is a comprehensive framework that uses a set of automated processes, methodologies, and tools to manage an organization's use of AI. Consistent principles guiding the design, development, deployment, and monitoring of models are critical in driving responsible and trustworthy AI. AI governance includes processes that trace and record the origin of data, models (including associated metadata), and pipelines for audits. The details of entry should include the techniques that trained each model, the hyperparameters that were used, and the metrics from testing phases. These details provide increased transparency into the model's behavior throughout the lifecycle, the data that was influential in its development, and the possible risks. -In a world where trust, transparency and explainable AI matters, every organization wants compliance along with the comfort of understanding how analytic insights and decisions are made. The following sections describe some of the principles and organizational requirements for AI governance. -Lifecycle governance -Lifecycle governance helps you manage your business information throughout its lifecycle, that is, from creation to deletion. IBM AI governance addresses the problems that challenge records managements: -- GLYPH Monitor, catalog, and govern AI models from anywhere throughout the AI lifecycle. -- GLYPH Automate the capture of model metadata for report generation. -- GLYPH Drive transparent and explainable AI at scale. -- GLYPH Increase accuracy of predictions by identifying how AI is used and where it is lagging. -Risk management -Risk management is used in IBM AI governance to identify, manage, monitor, and report on risk and compliance initiatives at scale: -- GLYPH Automate facts and workflow management to comply with business standards. -- GLYPH Use dynamic dashboards for clear and concise customizable results. -- GLYPH Enhanced collaboration across multiple regions and geographies. -Regulatory compliance -Regulatory compliance is a set of rules that organizations must follow to protect sensitive information and ensure human safety. Any business that works with digital assets, consumer data, health regulations, employee safety, and private communications is subject to regulatory compliance.$^{3}$ The IBM AI governance solution for IBM Z includes the following tasks: -- GLYPH Help adhere to external AI regulations for audit and compliance. -- GLYPH Convert external AI regulations into policies for automatic enforcement. -- GLYPH Use dynamic dashboards for compliance status across policies and regulations. -Enterprises can develop AI models and deploy them by using IBM Watson Studio or WML on CP4D on Red Hat OpenShift on a virtual machine that is based on IBM z/VM or Red Hat Enterprise Linux KVM on IBM Z. AI governance on IBM LinuxONE is supported in the following two ways: -- GLYPH Monitor the AI models with Watson OpenScale on CP4D on Red Hat OpenShift on a virtual machine on IBM Z. -- GLYPH Enterprises can develop AI models by creating and training models by using Watson Studio and development tools such as Jupyter Notebook or JupyterLab, and then deploying the model onto WML on CP4D on Red Hat OpenShift on a virtual machine on IBM Z. Then, these enterprises can achieve end-end AI governance by running AI Factsheets, IBM Watson OpenScale, and IBM Watson OpenPagesfi on CP4D on x86. -Figure 9 on page 16 shows the end-to-end flow for a remote AI governance solution. -Figure 9 Remote AI governance solution end-to-end flow -
- -Figure 9 Remote AI governance solution end-to-end flow -
-To achieve end-to-end AI governance, complete the following steps: -- 1. Create a model entry in IBM OpenPages by using CP4D on a x86 platform, as shown in Figure 10. -Figure 10 Creating a model entry in IBM OpenPages -
- -Figure 10 Creating a model entry in IBM OpenPages -
-- 2. Train a model by using Watson Studio and by using development tools such as Jupyter Notebook or JupyterLab on CP4D on Red Hat OpenShift on a virtual machine on IBM Z, as shown in Figure 11. -Figure 11 Training an AI model by using Watson Studio -
- -Figure 11 Training an AI model by using Watson Studio -
-- 3. Deploy the model by using WML on CP4D on Red Hat OpenShift on a virtual machine on IBM Z, as shown in Figure 12. -Figure 12 Deploying an AI model by using WML on Cloud Pak for Data -
- -Figure 12 Deploying an AI model by using WML on Cloud Pak for Data -
-- 4. Track the external model lifecycle by browsing through the Catalogs/Platform assets catalog by using AI Factsheets and OpenPages while using CP4D on an x86 platform, as shown in Figure 13. The external model (deployed on CP4D on Red Hat OpenShift on a virtual machine on IBM Z) is saved as a platform asset catalog on the x86 platform. -Figure 13 External model -
- -Figure 13 External model -
-You can track the model through each stage of the model lifecycle, as shown in Figure 14, by using AI Factsheets and OpenPages. -Figure 14 Tracking the model -
- -Figure 14 Tracking the model -
-You can see that the model facts are tracked and synchronized to IBM OpenPages for risk management, as shown in Figure 15. -Figure 15 Model facts that are tracked and synchronized to IBM OpenPages on an x86 platform -
- -Figure 15 Model facts that are tracked and synchronized to IBM OpenPages on an x86 platform -
-- 5. Create an external model by using IBM OpenScale on the x86 platform, as shown in Figure 16. -Figure 16 Creating an external model on an x86 platform -
- -Figure 16 Creating an external model on an x86 platform -
-IBM OpenScale provides a comprehensive dashboard that tracks fairness, quality monitoring, drift, and explainability of a model. Fairness determines whether your model produces biased outcomes. Quality determines how well your model predicts outcomes. Drift is the degradation of predictive performance over time. A sample is shown in Figure 17 on page 21. -Figure 17 IBM OpenScale dashboard that is used to monitor the external model -
- -Figure 17 IBM OpenScale dashboard that is used to monitor the external model -
-You developed and deployed the AI model by using Watson Studio, WML on CP4D on Red Hat OpenShift on a virtual machine on IBM Z, and end-to-end AI model governance by leveraging AI Factsheets, OpenScale, and OpenPages on CP4D on a x86 platform. Figure 18 shows end-to-end AI governance when using IBM OpenPages, AI Factsheets, and OpenScale. -Figure 18 Final result: End-to-end AI governance when using IBM OpenPages, AI Factsheets, and OpenScale -
- -Figure 18 Final result: End-to-end AI governance when using IBM OpenPages, AI Factsheets, and OpenScale -
-Use case 2: Credit default risk assessment -In today's world, many individuals or businesses seeking loans to meet their growing business needs often look to financial institutions. Financial institutions can offer loans to individuals or businesses and charge interest based on the current market situations. -Industry challenges -Financial institutions must make an accurate decision about whether to sanction a loan or not, and judging the likelihood of default is the difference between a successful and unsuccessful loan portfolio. In a traditional scenario, an experienced banker can judge someone's likelihood of default, but that is not an efficient method for judgment as a business grows. -Predictions of credit default risk assessment -In the modern world, growing business institutions can no longer rely on only experienced bankers to decide whether to sanction a loan knowing that there is a probability that the borrower might default on their loans. A better choice is to rely on technological advancements that can help with reasoning based on facts, such as leveraging credit risk modeling techniques to process the historical data of past borrowers to understand their credit behavior and make a more informed decision about whether to lend money, how much money, and decide on the tenure to close the loan. -Financial institutions can leverage AI solutions by using ML techniques to predict the credit risk. Applying AI to credit risk modeling techniques can benefit institutions in decision-making, and thus can help better manage the exposure to credit risk. -Figure 19 on page 23 shows a sample architecture about how to design and develop an AI model for credit risk assessment on IBM Z. An IBM WebSpherefi Application Server is used for handling in-bound transactions, and CP4D is used for AI model lifecycle management that includes building, training, and deploying the model. -Figure 19 Architecture for credit risk prediction by using an ML AI model on IBM Z -
- -Figure 19 Architecture for credit risk prediction by using an ML AI model on IBM Z -
-A data scientist can leverage Watson Studio to develop and train an AI model and WML to deploy and score the model. In this sample architecture, the WML Python run time leverages the ML framework, IBM Snap Machine Learning (Snap ML), for scoring, can leverage an integrated AI accelerator at the time of model import. -Then, the banking loan approval team can send a loan applicant request to the IBM WebSphere Application Server, which can make a request to the AI inference endpoint. The AI inference engine scores the transaction and sends the result back to the loan approval team. Based on the results, the approval team can decide on whether to approve a loan or not, and also decide how much they can lend, timelines, and other factors. -The transaction system that is shown in Figure 19 uses IBM WebSphere Liberty as an application server, but you also can use an IBM Open Libertyfi application server or any application server that can send RESTful API communications. -Models are frequently developed and tested in many platforms and languages, such as Python, Scala, R, and Go. Models can leverage ML frameworks like scikit-learn, Snap ML, or XGBoost, or DL frameworks like TensorFlow or PyTorch. Training a model can be done on any platform if you have enough computing power for complex models, but moving that model into production requires careful testing to ensure that transactions are not delayed, especially if you plan to run the model within a transaction. -We showed how IBM Z enable customers to use AI frameworks to detect credit risk. Now, we look at how you can leverage CP4D and TensorFlow on IBM Z to detect the credit risk. -Figure 20 shows an architecture for predicting credit risk by using DL on IBM Z. -Figure 20 Architecture for credit risk prediction by using DL on IBM Z -
- -Figure 20 Architecture for credit risk prediction by using DL on IBM Z -
-Data scientists can start creating and training a DL AI model by using a Jupyter Notebook instance and Watson Studio. Then, they can deploy the model by using WML on CP4D running on IBM Z, which provides an endpoint. Other applications, including the IBM WebSphere server, can produce credit risk results by using the model's endpoint. -In summary, here are some considerations for developing real-time AI models, such as credit risk assessment: -- GLYPH A preference for in-platform run times of the model, such as faster execution results. -- GLYPH Less overhead in the end-to-end flows might improve scoring time. -- GLYPH If you are using models that are not deployable, CP4D offers a custom Python run time to build your own stack if they are not available on the platform. -- GLYPH AI inferencing based on ML or DL models can increase the accuracy of better credit risk assessment. -- GLYPH Using IBM z16 and on-chip AI acceleration with the Telum chip that is embedded with regular Integrated Facility for Linux (IFLs) provides an execution speed for your transactions that cannot be achieved by other means. -Use case 3: Clearing and settlement -Clearing and settlements involve banks or financial institutions sending and receiving wire transfers by using secure interbank payments networks that can clear or settle numerous transactions. When an individual or business entity initiates a wire transfer, clearing begins the fund delivery process. Banks can begin the settlement phase either immediately after clearing takes place or later, mostly at the end of the business day. -Industry challenge -Banks and financial institutions must deal with high-risk transactions that can lead to loss. Moreover, these transactions can lead to regulatory violations and extra compliance costs. -Clearing and settlement solution -Use AI to predict which trades or transactions have high risk exposures, and propose solutions for a more efficient settlement process. The expedited remediation of questionable transactions can prevent costly consequences, regulatory violations, and negative business impacts. -In financial institutions, finding which financial transactions are legitimate and which transactions are fraudulent is of paramount importance. In this section, we go through a use case where we use AI to predict which trades or transactions have high risk exposures, and propose solutions for a more efficient settlement process. The expedited remediation of questionable transactions can prevent costly consequences, regulatory violations, and negative business impacts to financial institutions. -The goal is to predict in real time whether the transaction being processed might be a fraudulent transaction or not. To achieve this goal, we build an ML model that can do this prediction for the financial institution. Because there would be many transactions being processed at any point by the financial institution, it is important to perform this prediction of fraudulent transactions in near-real time in a few milliseconds. -One possible solution is to build and train a TensorFlow based DL model that learns from the historical data and predicts the fraudulent transactions. CP4D on IBM Z and IBM LinuxONE is a suitable product where this task can be achieved and the model deployed, and coming up with a serving endpoint. -Figure 21 provides a high-level diagram of a clearing and settlement use case for financial transactions that uses CP4D on IBM Z and IBM LinuxONE. -Figure 21 Clearing and settlement use case for financial transactions by using Cloud Pak for Data -
- -Figure 21 Clearing and settlement use case for financial transactions by using Cloud Pak for Data -
-Here are the steps of the high-level process flow: -- 1. Create a connection to a database (for example, an IBM Db2fi database) where the historical data will be used for ML model building. -- 2. Read the data from the database and prepare the data for AI by using the Data Refinery tool in CP4D. -- 3. A Jupyter Notebook or JupyterLab IDE that is provided by the Watson Studio component in CP4D helps us build and train the AI model. The trained model can be saved into a WML repository. -- 4. Deploy the saved model into a deployment space for batch deployment. -- 5. Create a batch deployment by using any of these interfaces: -- a. Watson Studio user interface from an Analytics deployment space. -- b. WML Python client. -- c. WML REST APIs. -- 6. A hardware configuration can be chosen for the deployment. -- 7. A batch deployment processes input data from a file, data connection, or connected data in a storage bucket, and writes the output to a selected destination. -- 8. One way to run batch deployment to predict or score is to create and run a batch deployment job. -- 9. Provide an input data type: -- a. Inline data for entering a JSON format payload. -- b. Select Data asset , click Select data source , and then specify your asset. -- 10.The output data type can be a new output file or a connected data asset. -- 11.A Kubernetes admin can change the maximum number of concurrent batch jobs that can be run. -- 12.Get the deployment endpoint URL. For more information, see Getting the deployment endpoint URL. -Summary -With this use case, we attempted to demonstrate how to predict, in real time, whether the transaction that is being processed might be a fraudulent transaction or not. By using the method, you have the following advantages: -- GLYPH No Impact to SLAs and the batch process window. -- GLYPH Proactively stop losses, and lower operational, regulatory, and compliance costs. -- GLYPH The solution is using a DL framework like TensorFlow for high-performing, low latency scoring. -Use case 4: Remaining Useful Life of an aircraft engine -In this use case, we describe how an airline can deploy an AI model for inferencing by using IBMfi zSystems. -Remaining Useful Life (RUL) is the remaining time or cycles that an aircraft engine is likely to operate without any failure. In this case, it is the equivalent of the number of flights remaining for the engine after the last flight. By estimating RUL, the operator can decide on the next maintenance schedule and avoid unplanned downtime. -Figure 22 provides an overview of the inferencing architecture for the RUL of an aircraft engine when using IBM Z. -Figure 22 Inferencing architecture on IBM Z -
- -Figure 22 Inferencing architecture on IBM Z -
-Because we are looking into data-driven model development, the data set of our target is the run-to-failure data of the engine. We are looking into a supervised learning problem, and we use regression techniques to learn from the data. DL techniques such as Long Short-Term Memory (LSTM) or Gated Recurrent Units (GRU) are our choice because we are looking into a time series data set. TensorFlow or PyTorch frameworks are leveraged to create models. AI governance monitors the data and model drift to maintain the model quality throughout the model's life. -Open-source data from NASA was used to build the AI model, which then was deployed on CP4D. CP4D enables the data-scientist's journey from modeling to deployment in a seamless process. Data engineers leverage Db2 to host the data set, which includes the training, testing, and validation of a data set. Since data is hosted on Db2, you can expect low latency while retrieving the data and serve data security needs because Db2 is hosted on the IBM Z platform. Data is fetched by the data refinery to do the necessary pre-processing and data imputations. You can use the programming languages Golang or C++ for real-time predictions, depending on customer needs. For more information about this topic, see "Use case 3: Clearing and settlement" on page 25. -Model building is done on Watson Studio, leveraging the high-performance computing hardware on IBM Z. You can train the model anywhere (on your own hardware or the cloud) and bring the model directly into CP4D, which provides data scientists with the flexibility of implementation choices. -We used LSTM to build the AI model and used the training data. The model was continuously evaluated to model convergence. The final model is tested with the test data, which is never exposed at the time of training to make sure that the model works. -This model is deployed on WML on CP4D and runs on IBM Z. If required, the trained model can be converted to the Open Neural Network Exchange (ONNX) format before deployment. Based on project requirements, IBM Z supports high-throughput, low latency inference requirements by leveraging an AI accelerator. -For decision-making about an aircraft engine's life, it is important to be able to explain the model predictions from end to end. This explainability may be global or local. Global explainability enables decision-makers to evaluate the trained model in general from the subject matter expert (SME) point of view. Local explainability enables the operator to validate the reasons behind the present inference and relate it to the past data points, which are an indicative cause of the prediction. -The AI governance components such as IBM OpenScale on CP4D support explainability and manages the drifts in data and concept. OpenPages and AI FactSheet together can alert the stakeholders about important events through a dashboard and allow course correction at any point. -Client-side applications can invoke a REST apiserver that handles some preprocessing of an incoming request before initiating the inference pipeline. Efficiencies might be needed in real-time applications, and inference response time can be reduced by adopting low-level programming while components are communicating. -Figure 23 on page 29 provides a more in-depth view of the architecture of an AI-based predictive maintenance application. -Figure 23 In-depth architectural view -
- -Figure 23 In-depth architectural view -
-In summary, consider the following points while developing an AI-based predictive maintenance application: -- GLYPH CP4D offers a Python run time to build a custom solution stack, but also supports different components like Watson Studio, WML, Db2, Data Refinery, OpenScale, AI Factsheets, and OpenPages. -- GLYPH The trustworthiness of the predicted output is important for critical use cases. -- GLYPH IBM Z provides high data security and low latency requirements at scale for the critical applications. -- GLYPH A data scientist can choose to train the model and deploy it on CP4D seamlessly with the latest tech stack that is available. -- GLYPH The AIOps and MLOps supported by CP4D to track AI model and data lifecycle throughout the application lifecycle. -Use case 5: AI-powered video analytics on an infant's motions for health prediction -Each year, approximately 5 million newborns worldwide are suffering from a neuro-developmental disorder. Due to the lack of early diagnoses and intervention, many infants are disabled and abandoned, especially in countries with limited numbers of pediatricians with extensive experience in neuro-developmental disorders. This situation is a conundrum that plagues many families around the world. -Infant motion analysis plays critical importance to understanding and comprehending healthy childhood development. In infants, monitoring their poses provides information about their health that can lead to a better prediction of early developmental risk assessment and diagnosis. -Adults use different techniques and methods to express their feelings (like sick, happy, stressed, or hungry), but this case is usually different for infants who cannot express their feelings. Based on the baby movements, AI can predict their expression or health. -In this use case, we examine how AI-powered video analytics can assist new parents and hospitals by addressing pose-based real-time body movements of the infants (such as arching back, head banging, kicking legs, rubbing eyes, stretching, and sucking fingers). During the initial months of a baby's life, spontaneous movements might indicate later developmental disorders, such as cerebral palsy, Rett syndrome, and autism spectrum disorders. -Industry challenges -There are video surveillance systems that are installed for monitoring an infant's movement in many hospitals or homes so that any problem can be witnessed and potentially even stopped before they take place. These systems require much manual work to monitor the real-stream videos and intervene when a problem is detected. -There is a certain amount of trust that you must place on the person who monitors a surveillance system to ensure that the job is being done effectively and efficiently, and that the surveillance system is being vigilantly watched. Because of the dependency on these manual efforts, you need something "smart" that monitors constantly the surveillance system and detect problems effectively. -AI is shaping the controls of surveillance that can map and track occurrences with self-learning abilities, AI can improve on human operations and analyze video footage in real time to alert the hospitals or parents if any anomalies are identified. -Video processing a stream of data from surveillance systems and then performing advance analytics and detecting anomalies quickly is a significant challenge in the industry. -Infant motion analytics in real time -AI is the current "market trend evolution" in video analytics and advancing the decision-making capabilities of the human mind. DL-based computer vision AI techniques are being widely adopted by various industries to solve real-time problems. These techniques improve the detection and prediction accuracy without increasing the hardware cost exponentially. For users, AI greatly reduces the workload of the monitoring staff and provides benefits by detecting unusual incidents and solving many video forensic problems. -CP4D was used to build and deploy the AI-powered video analytics on infant's motion for health prediction use case on IBM Z. IBM Z with AI accelerator enables faster inference for detecting face and body movements and performing angle analytics in real time. -Figure 24 shows an architectural diagram about how to design and develop an AI model for real-time body pose detection on IBM Z. A deep convolutional neural network architecture was trained on the task of infant pose estimation on the custom data set by leveraging IBM Cloud Pak for Data. -Figure 24 Architecture for AI-powered video analytics -
- -Figure 24 Architecture for AI-powered video analytics -
-Live camera feeds or recorded videos of an infant's movement are the inputs for a pose detection model. This video streaming data was stored in IBM Cloudfi Object Storage for image processing. Video data must be transformed into frames so that the infant's body poses can be detected. These post-estimation components of the pipeline predict the location of all 17-person key points with 3 degrees of freedom each (x, y location and visibility) plus two virtual alignment key points. This approach also embraces a compute-intensive heat map prediction of infant body posture. -When changes in body posture or movement happen, analytics can be performed, and a threshold can be set for the angle of the body and posture movements. An analysis can be performed on movement that is based on that threshold to help to predict an infant's health index in the output video stream by leveraging the IBM z16 on-chip AI acceleration, which provides an execution speed in real time on an edge device, which cannot be achieved by other means. -We can leverage the following AI technology stack for this use case: -- GLYPH Convolutional neural network: Build an artificial neural network model on video streaming and images. -- GLYPH TensorFlow: A DL back-end framework that is based on TensorFlow. -- GLYPH Mediapipe: A library that helps with video streaming processing and prediction of human pose estimation. -- GLYPH OpenCV: A real-time computer vision library that helps perform image processing. -WML was used for deployment of the pose detection model and generated notifications to users with web and mobile applications, and it integrates with Fitbit for push notifications so that hospitals and parents can take preventive actions. -Additional resources -- GLYPH The Cloud Pak for Data 4.5 on IBM Z Overview Demo video provides an overview of some of the more important features of CP4D on IBM Z. -- GLYPH IBM Cloud Pak for Data Tutorials. -- GLYPH Here are some additional use cases that use the data science frameworks that are available as part of CP4D on IBM Z and IBM LinuxONE: -- -Payment Card Fraud Detection by using TensorFlow on CP4D on IBM Z and IBM LinuxONE is a payment card fraud detection use case. -- -Fashion-MNIST clothing classification with PyTorch on Cloud Pak for Data on IBM Z and IBM LinuxONE is a Fashion-MNIST clothing classification use case. -- -Payment Card Fraud Prevention by using Snap ML on IBM Cloud Pak for Data on Red Hat OpenShift on a virtual machine on IBM Z and IBM LinuxONE, which leverage the z16 integrated AI accelerator describes a use case that uses Snap Machine Learning in Cloud Pak for Data on IBM Z and IBM LinuxONE. It is a Snap ML use case. -A companion video can be found at Credit Card Fraud Detection by using Snap ML on IBM Cloud Pak for Data on IBM Z and IBM LinuxONE. -Summary -This IBM Redbooksfi publication presented an overview of how IBM Cloud Pak for Data on IBM Z can modernize your data infrastructure; develop and deploy ML and AI models; and instantiate highly efficient analytics deployment on IBM LinuxONE. This publication demonstrated these tasks by guiding the reader through five common use cases where CP4D on IBM Z and IBM LinuxONE uses the different features that are supported on the platform, and showing how the associated features can help an enterprise to build AI and ML models with core transactional data, which results in a highly efficient analytics deployment that minimizes latency, cost inefficiencies, and potential security exposures that are connected with data transportation. -Authors -This publication was produced by a team of specialists from around the world working with the IBM Redbooks team: -Jasmeet Bhatia is an AI on IBM Z Product Manager who supports CP4D on IBM Z. She has 2.5 years of combined experience as a data scientist and a product manager. Jasmeet lives in San Francisco, California and holds a Bachelor of Arts degree in Data Science. She is working on her Master of Science degree in Data Science. Her area of expertise includes AI, data science, and product management. -Ravi Gummadi is a Technical Leader for CP4D on Linux on IBM Z and IBM LinuxONE in India. He has 18+ years of experience in the design and development of enterprise software for various platforms, including IBM Z and IBM LinuxONE. He holds a master's degree in computer science and engineering from the Indian Institute of Technology Madras (IIT Madras). His areas of expertise include compilers, virtualization, big data analytics, containers, data, and AI, with a special focus on open-source ecosystems. -Chandra Shekhar Reddy Potula is a Lead AI on zSystems team Architect for Linux on IBM Z and LinuxONE in India. He has 18+ years of experience in the design and development of enterprise software and firmware for various platforms, including IBM Z and LinuxONE. He holds a degree in computer science of engineering from Jawaharlal Nehru Technological University (JNTU). His areas of expertise include networking, virtualization, containers, data, and AI, with a special focus on open-source ecosystems. -Srirama Sharma is a Lead Technical Architect for IBM Cloud Pak, IBM Instanafi, IBM Turbonomicfi, and Red Hat Advanced Cluster Management for Kubernetes (RHACM) on IBM Z and LinuxONE. He has 18+ years of experience in UNIX and Linux application and device driver development. He designs ISV solutions on IBM Systems and IBM Blockchainfi. He also works on cloud-native adoption of enterprise solutions on IBM Z and LinuxONE. Srirama holds a Bachelor of Engineering degree in computer science from Visvesvaraya Technological University (VTU). He lives in Bangalore, Karnataka. His areas of expertise include UNIX and Linux systems programming, virtualization, performance benchmarking of Financial Services Sector (FSS) industry solutions, open-source ecosystems, server infrastructure, and cloud-native adoption and modernization. -Thanks to the following people for their contributions to this project: -Lydia Parziale, Project Manager IBM Redbooks, Poughkeepsie Center -Shin Kelly Yang, AI on IBM Z Product Management IBM US -Tom Ramey, Anna Shugol, Andrew Sica, Jonathan Sloan, Elpida Tzortzatos, Meeta Vouk, IBM -Now you can become a published author, too! -Here's an opportunity to spotlight your skills, grow your career, and become a published author-all at the same time! Join an IBM Redbooks residency project and help write a book in your area of expertise, while honing your experience using leading-edge technologies. Your efforts will help to increase product acceptance and customer satisfaction, as you expand your network of technical contacts and relationships. Residencies run from two to six weeks in length, and you can participate either in person or as a remote resident working from your home base. -Find out more about the residency program, browse the residency index, and apply online at: -ibm.com /redbooks/residencies.html -Stay connected to IBM Redbooks -- GLYPH Find us on LinkedIn: -http://www.linkedin.com/groups?home=&gid=2130806 -- GLYPH Explore new Redbooks publications, residencies, and workshops with the IBM Redbooks weekly newsletter: -- https://www.redbooks.ibm.com/Redbooks.nsf/subscribe?OpenForm -- GLYPH Stay current on recent Redbooks publications with RSS Feeds: -http://www.redbooks.ibm.com/rss.html -Notices -This information was developed for products and services offered in the US. This material might be available from IBM in other languages. However, you may be required to own a copy of the product or product version in that language in order to access it. -IBM may not offer the products, services, or features discussed in this document in other countries. Consult your local IBM representative for information on the products and services currently available in your area. Any reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, program, or service may be used. Any functionally equivalent product, program, or service that does not infringe any IBM intellectual property right may be used instead. However, it is the user's responsibility to evaluate and verify the operation of any non-IBM product, program, or service. -IBM may have patents or pending patent applications covering subject matter described in this document. The furnishing of this document does not grant you any license to these patents. You can send license inquiries, in writing, to: -IBM Director of Licensing, IBM Corporation, North Castle Drive, MD-NC119, Armonk, NY 10504-1785, US -INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some jurisdictions do not allow disclaimer of express or implied warranties in certain transactions, therefore, this statement may not apply to you. -This information could include technical inaccuracies or typographical errors. Changes are periodically made to the information herein; these changes will be incorporated in new editions of the publication. IBM may make improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time without notice. -Any references in this information to non-IBM websites are provided for convenience only and do not in any manner serve as an endorsement of those websites. The materials at those websites are not part of the materials for this IBM product and use of those websites is at your own risk. -IBM may use or distribute any of the information you provide in any way it believes appropriate without incurring any obligation to you. -The performance data and client examples cited are presented for illustrative purposes only. Actual performance results may vary depending on specific configurations and operating conditions. -Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly available sources. IBM has not tested those products and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products. -Statements regarding IBM's future direction or intent are subject to change or withdrawal without notice, and represent goals and objectives only. -This information contains examples of data and reports used in daily business operations. To illustrate them as completely as possible, the examples include the names of individuals, companies, brands, and products. All of these names are fictitious and any similarity to actual people or business enterprises is entirely coincidental. -COPYRIGHT LICENSE: -This information contains sample application programs in source language, which illustrate programming techniques on various operating platforms. You may copy, modify, and distribute these sample programs in any form without payment to IBM, for the purposes of developing, using, marketing or distributing application programs conforming to the application programming interface for the operating platform for which the sample programs are written. These examples have not been thoroughly tested under all conditions. IBM, therefore, cannot guarantee or imply reliability, serviceability, or function of these programs. The sample programs are provided "AS IS", without warranty of any kind. IBM shall not be liable for any damages arising out of your use of the sample programs. -Trademarks -IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines Corporation, registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the web at "Copyright and trademark information" at http://www.ibm.com/legal/copytrade.shtml -The following terms are trademarks or registered trademarks of International Business Machines Corporation, and might also be trademarks or registered trademarks in other countries. -Db2fi IBMfi -IBM Blockchainfi -IBM Cloudfi IBM Clou -d Pakfi -IBM Telum™ -IBM Watsonfi -IBM z16™ -Instanafi -Open Libertyfi -OpenPagesfi -Redbooksfi -The following terms are trademarks of other companies: -Intel, Intel logo, Intel Inside logo, and Intel Centrino logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries. -The registered trademark Linuxfi is used pursuant to a sublicense from the Linux Foundation, the exclusive licensee of Linus Torvalds, owner of the mark on a worldwide basis. -Red Hat and OpenShift are trademarks or registered trademarks of Red Hat, Inc. or its subsidiaries in the United States and other countries. -UNIX is a registered trademark of The Open Group in the United States and other countries. -Other company, product, or service names may be trademarks or service marks of others. -Redbooks (log o) fi Turbon -omicfi -WebSpherefi -z/OSfi -z16™ -
- -
-Back cover -
- -
-REDP-5695-00 -ISBN 0738461067 -
- -
-
\ No newline at end of file diff --git a/tests/data/groundtruth/docling_v1/redp5695.json b/tests/data/groundtruth/docling_v1/redp5695.json deleted file mode 100644 index 6bb1108d..00000000 --- a/tests/data/groundtruth/docling_v1/redp5695.json +++ /dev/null @@ -1 +0,0 @@ -{"_name": "", "type": "pdf-document", "description": {"title": null, "abstract": null, "authors": null, "affiliations": null, "subjects": null, "keywords": null, "publication_date": null, "languages": null, "license": null, "publishers": null, "url_refs": null, "references": null, "publication": null, "reference_count": null, "citation_count": null, "citation_date": null, "advanced": null, "analytics": null, "logs": [], "collection": null, "acquisition": null}, "file-info": {"filename": "redp5695.pdf", "filename-prov": null, "document-hash": "a03aa4721c6532a8bab8a84cd8fdf579b5d91b92e5e5bbf63552b451c1b1ad7e", "#-pages": 40, "collection-name": null, "description": null, "page-hashes": [{"hash": "2c6aa6caf31aededa105d495c308dfbbb82f36e74a5c918aef77cb55e270512c", "model": "default", "page": 1}, {"hash": "4c44677e63816427d586e3351fca1f60791742ff03d4e4fbd9e20049f0df1e7c", "model": "default", "page": 2}, {"hash": "9b14b4b39f406833be1be7b8a4267fbc0c9e3fb38d9c0d6be9233aaa7b34a290", "model": "default", "page": 3}, {"hash": "b393eac931d491dfb5754007d81c5eb852837b767e6bbf97532fdd9797089c84", "model": "default", "page": 4}, {"hash": "069d8724992bd8bcf023444a735733831db317258922be9bf9e68b6cb71592b3", "model": "default", "page": 5}, {"hash": "50142dc112c6479b6aa9b337444bf76fab1788845c852372d680663fac7bb708", "model": "default", "page": 6}, {"hash": "dd036a3882859d0dca411354baf6f8d89fecaa39938e0336366cdb0e70aea878", "model": "default", "page": 7}, {"hash": "b6ff3d96c10d8bb147a1678f23b1b3dc0a57314ac67de6dc51c7fed42235b8fb", "model": "default", "page": 8}, {"hash": "a9f5f13f5b38d6e5f144870e072b9b5dcda3e9efb2612d12f2f78844a2af5faf", "model": "default", "page": 9}, {"hash": "2ee65c9e3ecaf2ee28d154184562131c2c0d46fde9536daf2bf63f27cd1593fb", "model": "default", "page": 10}, {"hash": "7c3211d92edf78fb8fc2a25419e905c54df6cf08e46a6ba3af97c6ecb6f42976", "model": "default", "page": 11}, {"hash": "e9d2d2c16961c78c4252759f518e49d67e42323770ea954f0fdb5845060255b4", "model": "default", "page": 12}, {"hash": "96ec46a4b8a06f1e4a0b8ab372f0fa2eb9fa3651d598777108e2c8d841504c01", "model": "default", "page": 13}, {"hash": "85666d6d7492d1aa5e2d680aad82b243f74ac9a88d12a822f1e23a4015653280", "model": "default", "page": 14}, {"hash": "996b6243f71e4b579c257f5a8c13120d756c35db892bb3978a030b3c0244b332", "model": "default", "page": 15}, {"hash": "8d3962d8d62baba81d7c1f9136148614f19ce3e67856165e11746a4eea0ba0e2", "model": "default", "page": 16}, {"hash": "c97edc5fbc0c2ebe67d17aaa3a35994c946e63370e43599ff1a53a43cb015f4b", "model": "default", "page": 17}, {"hash": "027b2018dd204fdcfde1f23714efb239c7b0ddec82e6dcb261917047112c59c1", "model": "default", "page": 18}, {"hash": "bfd48e4d4c91d25d1ce8b96cb8b893121083e34366f2336ec2297ad429aefba5", "model": "default", "page": 19}, {"hash": "369aa7281999b4927d03fc80d04f64c4c466672e988a345b8e38b0b413d8b061", "model": "default", "page": 20}, {"hash": "07156cdcdb8bed82cd7def82ae50e3696797733c1af054e52e085d6dc4f158f3", "model": "default", "page": 21}, {"hash": "6868b382cf5f556a700cbfbd3b5019d1874f4d0b539322cf2d66d3ae91750021", "model": "default", "page": 22}, {"hash": "d18c7c0751a2b21cd90b28db97f792b76d800ef27df66b3b7551f30ae8f3c135", "model": "default", "page": 23}, {"hash": "f6bafed831071a1e8cc789bd6dc193c05982a2d11675458e0e470c69e09c39eb", "model": "default", "page": 24}, {"hash": "acd7cf74cdc0fb0f0fa69c5f5d5882fae44ead0f3e98317d0f1ca28a8bbfa0e5", "model": "default", "page": 25}, {"hash": "8618c32aa8f279cc7cfa3df0ffd5eb3f3f54d7216ae3c1af792a4cb778067f0e", "model": "default", "page": 26}, {"hash": "a158cfc6005ac6ec5857112db18ccbab469a42558439bf7c3e2ff5d63894cab4", "model": "default", "page": 27}, {"hash": "d93efe59e4c22d9f511c0df70a9ec01f5a030934af7b9e6f5232db806b143152", "model": "default", "page": 28}, {"hash": "27d5b0915a207c64ea3dfb11866a19a1ef42e54840493113126c243c4be9bd89", "model": "default", "page": 29}, {"hash": "dfd1705fa6a5b13fef569bb8a9dd567ed3950bb91004431c85bd6499135e0d98", "model": "default", "page": 30}, {"hash": "74a78ed4bb5999301ec12e980789a33cabea9131a0a8f03899a49655b7196ea4", "model": "default", "page": 31}, {"hash": "f38e9710dee1ada6c040bdf1d6b33373780790d53391dde1bdf13ba3a24237cc", "model": "default", "page": 32}, {"hash": "4c45d9a942e9431722d4e657e1772e30ed322e4c48aa8fa8e0f582cab686694f", "model": "default", "page": 33}, {"hash": "d5d0bd616da3d60f4162c3bf0c136e6fb6a3776a09daac01676eaf4f194ddbc8", "model": "default", "page": 34}, {"hash": "e68ecc6baff9b98afcefa647a55aa34f9a9fe9f507a393177097d89c5faf1901", "model": "default", "page": 35}, {"hash": "806561bd028d61b13a1d840ef5aa6bc29f596670f6a755cdff7f5ca16156bc6c", "model": "default", "page": 36}, {"hash": "d3b094a0a238bbd0866053a416a69e04d4d8efb937be01a022db3ccb24808e29", "model": "default", "page": 37}, {"hash": "af95f582613321de443a381441d8c361f4ff94fc0f777736e939927cc7d9963f", "model": "default", "page": 38}, {"hash": "28b15af143c0cf1810e8552ebaf1c58b1597cd4bb772e981b5979d0e83c98d0e", "model": "default", "page": 39}, {"hash": "b98218d5619db175ad1a9a2424365094f52356cbefadce85e557ebb182151d82", "model": "default", "page": 40}]}, "main-text": [{"prov": [{"bbox": [285.9599914550781, 760.5719604492188, 417.8999938964844, 782.77197265625], "page": 1, "span": [0, 11], "__ref_s3_data": null}], "text": "Front cover", "type": "paragraph", "name": "Text", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/0"}, {"prov": [{"bbox": [44.81999969482422, 595.87158203125, 535.7647094726562, 683.473876953125], "page": 1, "span": [0, 31], "__ref_s3_data": null}], "text": "IBM Cloud Pak for Data on IBM Z", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [43.98441696166992, 477.7195129394531, 124.95372772216797, 491.095947265625], "page": 1, "span": [0, 14], "__ref_s3_data": null}], "text": "Jasmeet Bhatia", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [44.41876983642578, 452.2200012207031, 119.91647338867188, 465.8930969238281], "page": 1, "span": [0, 12], "__ref_s3_data": null}], "text": "Ravi Gummadi", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [44.286624908447266, 426.2153015136719, 204.99734497070312, 440.6647644042969], "page": 1, "span": [0, 28], "__ref_s3_data": null}], "text": "Chandra Shekhar Reddy Potula", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [44.1224250793457, 401.2209777832031, 128.9265899658203, 415.3961181640625], "page": 1, "span": [0, 14], "__ref_s3_data": null}], "text": "Srirama Sharma", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [41.496700286865234, 139.77430725097656, 138.0545654296875, 163.001953125], "page": 1, "span": [0, 11], "__ref_s3_data": null}], "text": "Data and AI", "type": "paragraph", "name": "Text", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/1"}, {"name": "Picture", "type": "figure", "$ref": "#/figures/2"}, {"name": "Picture", "type": "figure", "$ref": "#/figures/3"}, {"prov": [{"bbox": [64.80000305175781, 511.6919860839844, 292.852783203125, 535.0673217773438], "page": 3, "span": [0, 18], "__ref_s3_data": null}], "text": "Executive overview", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.93707275390625, 393.32940673828125, 547.2804565429688, 476.0090637207031], "page": 3, "span": [0, 573], "__ref_s3_data": null}], "text": "Most industries are susceptible to fraud, which poses a risk to both businesses and consumers. According to The National Health Care Anti-Fraud Association, health care fraud alone causes the nation around $68 billion annually.$^{1}$ This statistic does not include the numerous other industries where fraudulent activities occur daily. In addition, the growing amount of data that enterprises own makes it difficult for them to detect fraud. Businesses can benefit by using an analytical platform to fully integrate their data with artificial intelligence (AI) technology.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.84193420410156, 323.9799499511719, 547.349853515625, 381.958984375], "page": 3, "span": [0, 392], "__ref_s3_data": null}], "text": "With IBM Cloud Pakfi for Data on IBM Z, enterprises can modernize their data infrastructure, develop, and deploy machine learning (ML) and AI models, and instantiate highly efficient analytics deployment on IBM LinuxONE. Enterprises can create cutting-edge, intelligent, and interactive applications with embedded AI, colocate data with commercial applications, and use AI to make inferences.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.86183166503906, 253.34674072265625, 547.2882690429688, 312.0947265625], "page": 3, "span": [0, 385], "__ref_s3_data": null}], "text": "This IBM Redguide publication presents a high-level overview of IBM Z. It describes IBM Cloud Pak for Data (CP4D) on IBM Z and IBM LinuxONE, the different features that are supported on the platform, and how the associated features can help enterprise customers in building AI and ML models by using core transactional data, which results in decreased latency and increased throughput.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.76502990722656, 171.91412353515625, 547.2760009765625, 242.08624267578125], "page": 3, "span": [0, 503], "__ref_s3_data": null}], "text": "This publication highlights real-time CP4D on IBM Z use cases. Real-time Clearing and Settlement Transactions, Trustworthy AI and its Role in Day-To-Day Monitoring, and the Prevention of Retail Crimes are use cases that are described in this publication. Using CP4D on IBM Z and LinuxONE, this publication shows how businesses can implement a highly efficient analytics deployment that minimizes latency, cost inefficiencies, and potential security exposures that are connected with data transportation.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.8000030517578, 57.0750732421875, 387.7856140136719, 66.7349853515625], "page": 3, "span": [0, 68], "__ref_s3_data": null}], "text": "$^{1 }$https://www.bcbsm.com/health-care-fraud/fraud-statistics.html", "type": "footnote", "name": "Footnote", "font": null}, {"prov": [{"bbox": [63.59157943725586, 27.9246826171875, 180.34423828125, 37.41259765625], "page": 3, "span": [0, 27], "__ref_s3_data": null}], "text": "' Copyright IBM Corp. 2023.", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [541.2573852539062, 27.93828010559082, 547.2176513671875, 37.69696044921875], "page": 3, "span": [0, 1], "__ref_s3_data": null}], "text": "1", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.69976043701172, 706.0162963867188, 212.3214874267578, 721.8857421875], "page": 4, "span": [0, 18], "__ref_s3_data": null}], "text": "IBM Z: An overview", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.16062927246094, 630.7666015625, 539.5514526367188, 689.2479858398438], "page": 4, "span": [0, 365], "__ref_s3_data": null}], "text": "Ever wonder how many transactions a bank processes per day? What about the pace at which these transactions happen? According to an IBMfi report, 44 of 50 of the world's top banks use IBM Z mainframes for these daily transactions.$^{2}$ IBM Z is a platform that is designed for voluminous data, maximum security, real-time transaction analysis, and cost efficiency.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.83799743652344, 597.2792358398438, 515.6898803710938, 619.38916015625], "page": 4, "span": [0, 92], "__ref_s3_data": null}], "text": "The most recent platform for IBM Z is IBM z16\u2122. The IBM z16 supports the following features:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.797607421875, 580.2049560546875, 255.07154846191406, 590.7014770507812], "page": 4, "span": [0, 39], "__ref_s3_data": null}], "text": "- GLYPH On-chip AI acceleration", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.7379150390625, 562.7115478515625, 289.6485290527344, 573.1817626953125], "page": 4, "span": [0, 45], "__ref_s3_data": null}], "text": "- GLYPH Quantum-safe crypto discovery", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.6077423095703, 546.2800903320312, 247.8863983154297, 556.6842041015625], "page": 4, "span": [0, 37], "__ref_s3_data": null}], "text": "- GLYPH Simplified compliance", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.57025146484375, 528.6082763671875, 225.32553100585938, 539.3775634765625], "page": 4, "span": [0, 33], "__ref_s3_data": null}], "text": "- GLYPH Flexible capacity", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.6380615234375, 511.7322692871094, 280.60699462890625, 522.0386962890625], "page": 4, "span": [0, 45], "__ref_s3_data": null}], "text": "- GLYPH Modernization of applications", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.63339233398438, 494.9269104003906, 210.07028198242188, 505.2599792480469], "page": 4, "span": [0, 30], "__ref_s3_data": null}], "text": "- GLYPH Sustainability", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.1382598876953, 461.2615661621094, 521.9436645507812, 483.1922607421875], "page": 4, "span": [0, 101], "__ref_s3_data": null}], "text": "With these features, enterprises can upgrade applications while preserving secure and resilient data.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.73519897460938, 438.9506530761719, 434.5896301269531, 449.32598876953125], "page": 4, "span": [0, 65], "__ref_s3_data": null}], "text": "To learn more about these features, see the IBM z16 product page.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.62892150878906, 417.04669189453125, 415.693603515625, 427.2217712402344], "page": 4, "span": [0, 60], "__ref_s3_data": null}], "text": "Figure 1 on page 3 shows a picture of the IBM z16 mainframe.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.5249786376953, 57.0806884765625, 311.82391357421875, 66.81658935546875], "page": 4, "span": [0, 49], "__ref_s3_data": null}], "text": "$^{2 }$https://www.ibm.com/case-studies/bankwest/", "type": "footnote", "name": "Footnote", "font": null}, {"prov": [{"bbox": [63.95490646362305, 27.93828010559082, 72.8219985961914, 37.72607421875], "page": 4, "span": [0, 1], "__ref_s3_data": null}], "text": "2", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [87.65045166015625, 28.08099365234375, 261.53851318359375, 37.3072509765625], "page": 4, "span": [0, 38], "__ref_s3_data": null}], "text": "IBM Cloud Pak for Data on IBM zSystems", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [135.89208984375, 333.9317321777344, 211.0067596435547, 343.65899658203125], "page": 5, "span": [0, 16], "__ref_s3_data": null}], "text": "Figure 1 IBM z16", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/4"}, {"prov": [{"bbox": [64.32122039794922, 301.7572937011719, 355.6016540527344, 314.8720397949219], "page": 5, "span": [0, 43], "__ref_s3_data": null}], "text": "IBM z16 and IBM LinuxONE Emperor 4 features", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.82815551757812, 230.37913513183594, 547.1771240234375, 288.6673583984375], "page": 5, "span": [0, 394], "__ref_s3_data": null}], "text": "IBM Z are based on enterprise mainframe technology. Starting with transaction-based workloads and databases, IBM Z has undergone tremendous transformations in its system design for many generations to build servers that cater to Linux-based workloads and security with a cyberresilient system, and support quantum computing and modernization by using a hybrid cloud with a focus on data and AI.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [541.0438232421875, 27.93828010559082, 547.2176513671875, 37.53704833984375], "page": 5, "span": [0, 1], "__ref_s3_data": null}], "text": "3", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.14278411865234, 27.93828010559082, 72.8219985961914, 37.86651611328125], "page": 6, "span": [0, 1], "__ref_s3_data": null}], "text": "4", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [87.67771911621094, 28.11907958984375, 261.53851318359375, 37.247314453125], "page": 6, "span": [0, 38], "__ref_s3_data": null}], "text": "IBM Cloud Pak for Data on IBM zSystems", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [136.2760009765625, 699.1505126953125, 543.5195922851562, 721.6217041015625], "page": 6, "span": [0, 121], "__ref_s3_data": null}], "text": "Figure 2 provides a snapshot of the IBM Z processor roadmap, which depicts the journey of transformation and improvement.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.39653778076172, 403.9766540527344, 213.14488220214844, 413.2160949707031], "page": 6, "span": [0, 33], "__ref_s3_data": null}], "text": "Figure 2 IBM Z: Processor roadmap", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/5"}, {"prov": [{"bbox": [136.178955078125, 297.0632019042969, 547.256591796875, 391.21533203125], "page": 6, "span": [0, 689], "__ref_s3_data": null}], "text": "The IBM z16 and IBM LinuxONE Emperor 4 are the latest of the IBM Z, and they are developed with a 'built to build' focus to provide a powerful, cyberresilient, open, and secure platform for business with an extra focus on sustainability to help build sustainable data centers. Although the z16 server can host both IBM z/OSfi and Linux workloads, LinuxONE Emperor 4 is built to host Linux only workloads with a focus on consolidation and resiliency. Depending on the workload, consolidation from numerous x86 servers into a LinuxONE Emperor 4 can help reduce energy consumption by 75% and data center floor space by 50%, which helps to achieve the sustainability goals of the organization.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.1420135498047, 226.8505859375, 547.257568359375, 285.2823181152344], "page": 6, "span": [0, 432], "__ref_s3_data": null}], "text": "Figure 3 on page 5 shows a summary of the system design of IBM LinuxONE Emperor 4 with the IBM Telum\u2122 processor. The IBM Telum processor chip is designed to run enterprise applications efficiently where their data resides to embed AI with super low latency. The support for higher bandwidth and I/O rates is supported through FCP Express cards with an endpoint security solution. The memory subsystem supports up to 40 TB of memory.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.30784606933594, 430.6064758300781, 297.72265625, 439.85430908203125], "page": 7, "span": [0, 52], "__ref_s3_data": null}], "text": "Figure 3 System design of IBM z16 LinuxONE Emperor 4", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/6"}, {"prov": [{"bbox": [135.62088012695312, 359.75799560546875, 547.2974243164062, 417.83917236328125], "page": 7, "span": [0, 417], "__ref_s3_data": null}], "text": "The IBM z16 and IBM LinuxONE Emperor 4 servers are built with 7-nm technology at a 5.2 GHz speed. They consist of four dual-chip modules (DCMs) per central processor complex (CPC) drawer, each of which is built with two 8-core Telum processor chips that has \"first in the industry\" on-chip acceleration for mid-transaction, real-time AI inferencing, which supports many different use cases, including fraud detection.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.72621154785156, 277.82769775390625, 547.322265625, 347.9376525878906], "page": 7, "span": [0, 452], "__ref_s3_data": null}], "text": "Each core has access to a huge private 32 MB L2 cache where up to 16 MB of the L2 cache of an inactive core can be used as virtual cache (L3 / L4) by neighboring active cores on the chip. This cache helps address translation and access checking by prefetching the same virtual cache into the L2 cache. The virtual cache also includes Neural Network Processing Assist instructions and direct memory access with protection, and per chip GZIP compression.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [541.200439453125, 27.93828010559082, 547.2176513671875, 37.50384521484375], "page": 7, "span": [0, 1], "__ref_s3_data": null}], "text": "5", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.22818756103516, 27.93828010559082, 72.8219985961914, 37.7176513671875], "page": 8, "span": [0, 1], "__ref_s3_data": null}], "text": "6", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [87.59947204589844, 28.08074951171875, 261.53851318359375, 37.28045654296875], "page": 8, "span": [0, 38], "__ref_s3_data": null}], "text": "IBM Cloud Pak for Data on IBM zSystems", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [136.43333435058594, 698.982421875, 541.310546875, 721.4392700195312], "page": 8, "span": [0, 115], "__ref_s3_data": null}], "text": "Figure 4 provides more information about the features of AI Accelerator integration with the IBM Z processor cores.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.16301727294922, 418.5439453125, 387.3546142578125, 427.9372253417969], "page": 8, "span": [0, 78], "__ref_s3_data": null}], "text": "Figure 4 IBM z16 on-chip AI Accelerator integration with IBM Z processor cores", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/7"}, {"prov": [{"bbox": [135.82852172851562, 323.50567626953125, 547.2345581054688, 406.03216552734375], "page": 8, "span": [0, 600], "__ref_s3_data": null}], "text": "The IBM z16 and IBM LinuxONE Emperor 4 server platforms are built with the hardware features that are shown in Figure 4 with addressing data and AI workloads in mind. Regardless of where the ML and deep learning (DL) frameworks are used to build and train data and AI models, the inferencing on existing enterprise application data can happen along currently running enterprise business applications. CP4D 4.6 supports Tensorflow and IBM Snap ML frameworks, which are optimized to use the on-chip AI Accelerator during inferencing. Support for various other frameworks is planned for future releases.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.02378845214844, 289.4884948730469, 544.6222534179688, 312.1341857910156], "page": 8, "span": [0, 161], "__ref_s3_data": null}], "text": "Figure 5 on page 7 shows the seamless integration of AI into existing enterprises workloads on the IBM z16 while leveraging the underlying hardware capabilities.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.26493072509766, 481.2569885253906, 189.6370086669922, 490.24163818359375], "page": 9, "span": [0, 29], "__ref_s3_data": null}], "text": "Figure 5 Seamless integration", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/8"}, {"prov": [{"bbox": [64.28071594238281, 438.1763000488281, 341.6769714355469, 453.8793029785156], "page": 9, "span": [0, 35], "__ref_s3_data": null}], "text": "What is Cloud Pak for Data on IBM Z", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.9339141845703, 375.2855224609375, 547.132080078125, 421.42291259765625], "page": 9, "span": [0, 353], "__ref_s3_data": null}], "text": "IBM Cloud Pak for Data allows enterprises to simplify, unify, and automate the delivery of data and AI. It categorizes the activities within the journey to AI as four rungs of the AI Ladder: Collect, Organize, Analyze, and Infuse. For more information about each of the AI Ladder rungs, see Become Data Driven with IBM Z Infused Data Fabric , REDP-5680.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.8167266845703, 245.02374267578125, 545.086181640625, 363.46099853515625], "page": 9, "span": [0, 857], "__ref_s3_data": null}], "text": "CP4D on IBM Z provides enterprises with a resilient and secure private cloud platform. You can use it to create ML and AI models that may be included into modern intelligent applications. You also can use it to use and construct applications for mission-critical data. With CP4D on IBM Z, enterprises can lower data movement latency, cost inefficiencies, and potential security exposures. Enterprises can safely store and access their most important company data, and leverage their current infrastructure by using cutting-edge hybrid cloud applications. Enterprises can combine their current database applications without any rewrites, which results in reduced cost and complexity. Lastly, by using CP4D on IBM Z, enterprises can update their database infrastructure to benefit from easier management, a quicker time to value, and lower operating expenses.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [540.8759155273438, 27.93828010559082, 547.2176513671875, 37.7607421875], "page": 9, "span": [0, 1], "__ref_s3_data": null}], "text": "7", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.2588882446289, 27.93828010559082, 72.8219985961914, 37.802001953125], "page": 10, "span": [0, 1], "__ref_s3_data": null}], "text": "8", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [87.62134552001953, 28.1259765625, 261.53851318359375, 37.26226806640625], "page": 10, "span": [0, 38], "__ref_s3_data": null}], "text": "IBM Cloud Pak for Data on IBM zSystems", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [136.00271606445312, 627.116455078125, 547.2805786132812, 721.300537109375], "page": 10, "span": [0, 655], "__ref_s3_data": null}], "text": "Figure 6 shows a solution overview of CP4D. The infrastructure alternatives are shown at the bottom, and they include IBM Z and LinuxONE. They all leverage Red Hat OpenShift. Common Foundational Services come next, which offer clarity throughout the data and AI lifecycle, that is, from user access management to monitoring and service provisioning. A high-level view of the services is shown in the middle section. The services have several different capabilities that span the AI hierarchy. The platform can be expanded, and it offers a seamless user experience for all distinct personas across the AI lifecycle, from data gathering through AI infusion.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.43482208251953, 299.04669189453125, 264.0491943359375, 308.513671875], "page": 10, "span": [0, 48], "__ref_s3_data": null}], "text": "Figure 6 Solution overview of Cloud Pak for Data", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/9"}, {"prov": [{"bbox": [135.67288208007812, 276.31103515625, 518.3954467773438, 286.730712890625], "page": 10, "span": [0, 87], "__ref_s3_data": null}], "text": "We highlight the four main pillars that make IBM Z the correct infrastructure for CP4D:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.7481231689453, 259.4186096191406, 255.66061401367188, 269.4034423828125], "page": 10, "span": [0, 37], "__ref_s3_data": null}], "text": "- GLYPH Performance and Scale", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.7166748046875, 242.43878173828125, 257.89263916015625, 252.60040283203125], "page": 10, "span": [0, 37], "__ref_s3_data": null}], "text": "- GLYPH Embedded Accelerators", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.57183837890625, 224.7489013671875, 263.64544677734375, 235.25732421875], "page": 10, "span": [0, 44], "__ref_s3_data": null}], "text": "- GLYPH Reliability and Availability", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.74082946777344, 208.41940307617188, 269.5468444824219, 218.43896484375], "page": 10, "span": [0, 40], "__ref_s3_data": null}], "text": "- GLYPH Security and Governance.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.00941467285156, 102.2265625, 547.2814331054688, 196.88873291015625], "page": 10, "span": [0, 650], "__ref_s3_data": null}], "text": "From a performance perspective, CP4D on IBM Z provides your data and AI with high transaction processing and a powerful infrastructure. From the embedded accelerators perspective, CP4D on IBM Z can investigate each transaction thanks to a cutting-edge DL inference technology even in the most demanding, sensitive, and latency-prone real-time workloads. From a reliability perspective, CP4D on IBM Z provides high availability and resiliency. Lastly from the security perspective, CP4D on IBM Z is suitable for protecting sensitive data and AI models for enterprises in highly regulated industries or those industries that are worried about security.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.78146362304688, 705.7388916015625, 519.7557983398438, 721.9649047851562], "page": 11, "span": [0, 57], "__ref_s3_data": null}], "text": "Cloud Pak for Data capabilities on IBM Z and IBM LinuxONE", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.4989776611328, 643.1683959960938, 544.5404052734375, 689.4481201171875], "page": 11, "span": [0, 291], "__ref_s3_data": null}], "text": "With CP4D on IBM Z and IBM LinuxONE, users can develop, train, and deploy AI and ML models. Users can accomplish this task by using the CP4D IBM Watsonfi Studio and IBM Watson Machine Learning (WLM) services. By using these two fundamental services, users can accomplish the following tasks:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.4654083251953, 626.25927734375, 341.2695007324219, 636.006103515625], "page": 11, "span": [0, 58], "__ref_s3_data": null}], "text": "- GLYPH Provision various containerized databases.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.58457946777344, 609.0025024414062, 423.5125427246094, 619.3070068359375], "page": 11, "span": [0, 77], "__ref_s3_data": null}], "text": "- GLYPH Explore, clean, shape, and alter data by using Data Refinery.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.65841674804688, 592.2996826171875, 454.5639343261719, 602.6298828125], "page": 11, "span": [0, 87], "__ref_s3_data": null}], "text": "- GLYPH Use project-specific data that is uploaded, or connect to distant data.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.5748748779297, 575.02197265625, 331.7221984863281, 585.3611450195312], "page": 11, "span": [0, 56], "__ref_s3_data": null}], "text": "- GLYPH Create Spark run times and applications.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.54833984375, 558.2803344726562, 544.107177734375, 568.562255859375], "page": 11, "span": [0, 104], "__ref_s3_data": null}], "text": "- GLYPH Create, build, evaluate, and deploy analytics and ML models with trust and transparency.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.70672607421875, 540.80126953125, 499.1278381347656, 551.1715087890625], "page": 11, "span": [0, 92], "__ref_s3_data": null}], "text": "- GLYPH Leverage the AI Integrated Accelerator for TensorFlow 2.7.2 and Snap ML 1.9.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.2892303466797, 507.2811279296875, 538.98681640625, 529.4622802734375], "page": 11, "span": [0, 116], "__ref_s3_data": null}], "text": "For more information about the specifics of these capabilities, see Capabilities on Linux on IBM Z and IBM LinuxONE.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.76227569580078, 463.779541015625, 250.52972412109375, 479.44775390625], "page": 11, "span": [0, 21], "__ref_s3_data": null}], "text": "Open-source ecosystem", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.97999572753906, 376.9634094238281, 543.4259643554688, 447.332275390625], "page": 11, "span": [0, 484], "__ref_s3_data": null}], "text": "These days, innovation and product development are not limited to closed doors within an organization. In any industry sector, the solutions include a mix of proprietary code addressing the core business solution that is supported or integrated into other software components from open source. In some cases, enterprises business solutions also are built from open-source community offerings. Thus, open-source software becomes an important ingredient in modern-day solution building.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.85617065429688, 271.137939453125, 547.2396850585938, 365.35247802734375], "page": 11, "span": [0, 684], "__ref_s3_data": null}], "text": "IBM actively participates in various open-source communities as part of steering boards defining the roadmap of the community, and also in contributing code to make the community a better place for everyone to participate. Red Hat also actively participates in various open-source communities and makes extensive contributions. In open-source communities, although most open-source development happens on x86 / amd64 or the Intel architecture, the same open-source software is used by other architectures, such as IBM Power (ppc64le), IBM Z and IBM LInuxONE (s390x), ARM, and Sparc. So, the availability of an open-source ecosystem on any architecture is key and critical to business.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.98208618164062, 213.03485107421875, 537.3534545898438, 259.3095703125], "page": 11, "span": [0, 331], "__ref_s3_data": null}], "text": "On IBM Z and IBM LinuxONE (s390x) architecture, there is a huge open-source support ecosystem that ranges from operating systems such as Linux; application run times; cloud and container services; DevOps and automation; big data; observability; analytics; databases; and storage. The ecosystem on IBM Z and IBM LinuxONE is growing.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.20474243164062, 167.01544189453125, 540.7626342773438, 201.47296142578125], "page": 11, "span": [0, 225], "__ref_s3_data": null}], "text": "IBM Z and IBM LinuxONE include much open-source software in their ecosystem. You can see the growing list of open-source software for IBM Z and LinuxONE at The Growing Ecosystem of Open-Source Software for IBM Z and LinuxONE.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.00357055664062, 108.96240234375, 544.6069946289062, 155.3272705078125], "page": 11, "span": [0, 326], "__ref_s3_data": null}], "text": "IBM Z and IBM LinuxONE are available to various communities to include support for s390x builds as part of their community's continuous integration and continuous delivery (CI/CD). Also, for open-source community developers, infrastructure resources are available on a no-charge basis through the IBM LinuxONE community cloud.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [540.9940795898438, 27.93828010559082, 547.2176513671875, 37.6314697265625], "page": 11, "span": [0, 1], "__ref_s3_data": null}], "text": "9", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.45117950439453, 27.93828010559082, 78.4020004272461, 37.56591796875], "page": 12, "span": [0, 2], "__ref_s3_data": null}], "text": "10", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.23697662353516, 27.87896728515625, 267.07440185546875, 37.23699951171875], "page": 12, "span": [0, 38], "__ref_s3_data": null}], "text": "IBM Cloud Pak for Data on IBM zSystems", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [136.01052856445312, 651.1951904296875, 547.312255859375, 721.534912109375], "page": 12, "span": [0, 505], "__ref_s3_data": null}], "text": "CP4D includes a mix of open-source and proprietary data and AI runtime databases; open-source run times like Python; open-source data platforms like Anaconda; ML and DL frameworks like Pytorch and Tensorflow; and thousands of reusable Python packages. All of them are available and supported on s390x architecture to provide seamless parity with x86 architecture and a seamless experience for enterprise data scientists, architects, and data and AI solution developers on IBM Z and IBM LinuxONE platforms.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.78475952148438, 581.2603759765625, 547.3501586914062, 639.2750244140625], "page": 12, "span": [0, 427], "__ref_s3_data": null}], "text": "Anaconda is one of the open-source data platforms that provide Python and R based data science ML frameworks; analytics and data visualization tools; and open-source data science tools and libraries like Conda, XGBoost, and SciKit-Learn. Anaconda runs natively on Linux on IBM Z and IBM LinuxONE, and on IBM z/OS Container Extensions (zcX) on z/OS. For more information, see Announcing Anaconda for Linux on IBM Z and LinuxONE.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.8437957763672, 499.2002258300781, 546.230712890625, 569.2590942382812], "page": 12, "span": [0, 501], "__ref_s3_data": null}], "text": "In addition to strong, open-source ecosystem support for application development on Linux and enterprise operating systems, a new generation of IBM Z and IBM LinuxONE servers (IBM z16\u2122) also have strong platform support, and AI acceleration capabilities that can be leveraged by open-source software to perform better on the server infrastructure. For example, the recently released CP4D 4.6 has Tensorflow and IBM SnapML frameworks that leverage the AI accelerators when running on an IBM z16 server.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.206298828125, 464.8299255371094, 521.3436889648438, 487.1847839355469], "page": 12, "span": [0, 143], "__ref_s3_data": null}], "text": "So, to summarize, there is a huge, growing data and AI open source ecosystem that is supported and optimized on IBM Z and IBM LinuxONE servers.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.09524536132812, 421.95269775390625, 191.27430725097656, 437.7701110839844], "page": 12, "span": [0, 15], "__ref_s3_data": null}], "text": "Why AI on IBM Z", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.68882751464844, 334.8733825683594, 547.2586059570312, 405.32257080078125], "page": 12, "span": [0, 496], "__ref_s3_data": null}], "text": "Data and AI playing a major role in the modernization story to enable the digital transformation journey of every organization. Many organizations recognize the business value of infusing AI into their infrastructure. CP4D provides the cloud-native solution to put your data to work. With CP4D, all your data users can collaborate from a single, unified interface that supports many services that work together, including collecting data, organizing the data, analyzing the data, and infusing AI.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.5255584716797, 240.78839111328125, 547.2825317382812, 323.26287841796875], "page": 12, "span": [0, 546], "__ref_s3_data": null}], "text": "Traditional ML models' power most of today's ML applications in business and among AI practitioners. CP4D supports traditional ML frameworks for training and inferencing, such as Scikit-learn, Snap ML, and XGBoost. Snap ML is a library that provides high-speed training and inferencing of ML models that leverage the AI accelerator while running on an IBM z16 (Linux on IBM Z). CP4D supports DL frameworks such as TensorFlow and PyTorch. TensorFlow is a DL framework that leverages the AI accelerator while running on an IBM z16 (Linux on IBM Z).", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.04042053222656, 183.20733642578125, 547.3233032226562, 229.3817138671875], "page": 12, "span": [0, 288], "__ref_s3_data": null}], "text": "Figure 7 on page 11 provides an overview of the components that are supported on CP4D on IBM Z. You can leverage Watson Studio for model building, training, and validation, and WML for deployment of the model. Eventually, applications can use the AI inference endpoint to score the model.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.15190887451172, 429.0500793457031, 506.3805236816406, 438.59246826171875], "page": 13, "span": [0, 104], "__ref_s3_data": null}], "text": "Figure 7 Developing, training, and deploying an AI model on Cloud Pak for Data on IBM Z and IBM LinuxONE", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/10"}, {"prov": [{"bbox": [136.55064392089844, 406.53900146484375, 492.9408264160156, 416.5304260253906], "page": 13, "span": [0, 75], "__ref_s3_data": null}], "text": "In summary, here are some of the reasons why you should choose AI on IBM Z:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.7388458251953, 389.7225341796875, 413.4001770019531, 399.8339538574219], "page": 13, "span": [0, 75], "__ref_s3_data": null}], "text": "- GLYPH World-class AI inference platform for enterprise workloads:", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.22914123535156, 360.75909423828125, 526.1881103515625, 382.5239562988281], "page": 13, "span": [0, 89], "__ref_s3_data": null}], "text": "- -Embedded accelerators: A centralized on-chip AI accelerator that is shared by all cores.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.42306518554688, 331.77947998046875, 547.2465209960938, 353.90643310546875], "page": 13, "span": [0, 113], "__ref_s3_data": null}], "text": "- -Industry standard AI ecosystem: Many industry open-source data science frameworks are available on the platform.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.33360290527344, 302.7483825683594, 546.7576904296875, 324.48516845703125], "page": 13, "span": [0, 108], "__ref_s3_data": null}], "text": "- -Seamlessly integrate AI into existing enterprise workload stacks: Train anywhere, and then deploy on IBM Z.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.7086639404297, 285.60894775390625, 490.0331726074219, 295.7892761230469], "page": 13, "span": [0, 88], "__ref_s3_data": null}], "text": "- GLYPH Security: Encrypted memory, and improved trusted execution environments.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.6390838623047, 256.23675537109375, 547.2705078125, 278.46600341796875], "page": 13, "span": [0, 138], "__ref_s3_data": null}], "text": "- GLYPH Sustainability: Reduce your energy consumption with real-time monitoring tools about the energy consumption of the system.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.31088256835938, 213.536376953125, 161.7474365234375, 229.1109619140625], "page": 13, "span": [0, 12], "__ref_s3_data": null}], "text": "AI use cases", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.98568725585938, 162.75877380371094, 533.9012451171875, 196.73095703125], "page": 13, "span": [0, 262], "__ref_s3_data": null}], "text": "With billions of transactions per day in many of today's industries, it is key to get real-time insights about what is happening in your data. AI on the IBM Z stack understands these situations, and it delivers in-transaction inference in real time and at scale.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.95875549316406, 104.7108154296875, 547.2466430664062, 150.69287109375], "page": 13, "span": [0, 295], "__ref_s3_data": null}], "text": "Core banking solutions running on IBM Z that are involved in processing inbound transactions need real-time fraud detection to prevent fraud. Other types of possible use cases might be credit risk analysis, anti-money laundering, loan approval, fraud detection in payments, and instant payments.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.34823608398438, 70.34014892578125, 547.311279296875, 92.72308349609375], "page": 13, "span": [0, 146], "__ref_s3_data": null}], "text": "For insurance companies, a pressing use case would be claims processing. For markets and trading, clearing and settlement use cases are paramount.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [535.8191528320312, 27.93828010559082, 547.2591552734375, 37.69769287109375], "page": 13, "span": [0, 2], "__ref_s3_data": null}], "text": "11", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.53218078613281, 27.93828010559082, 78.4020004272461, 37.490966796875], "page": 14, "span": [0, 2], "__ref_s3_data": null}], "text": "12", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.2241439819336, 27.8603515625, 267.07440185546875, 37.23846435546875], "page": 14, "span": [0, 38], "__ref_s3_data": null}], "text": "IBM Cloud Pak for Data on IBM zSystems", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [136.15476989746094, 687.272216796875, 525.1851196289062, 721.3535766601562], "page": 14, "span": [0, 184], "__ref_s3_data": null}], "text": "For the health care industry, medical image processing (such as MRIs and x-rays), skin cancer detection, and patient monitoring activities such as infant motion analysis, is important.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.8750762939453, 641.2594604492188, 547.3113403320312, 675.216796875], "page": 14, "span": [0, 192], "__ref_s3_data": null}], "text": "For the airline industry, processes such as air traffic management, flight management systems, and flight maintenance predictions are use cases that are ideal candidates for using AI on IBM Z.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.158935546875, 619.072021484375, 413.4231262207031, 629.2716674804688], "page": 14, "span": [0, 63], "__ref_s3_data": null}], "text": "In the following sections, we describe the following use cases:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.51185607910156, 561.1438598632812, 545.1838989257812, 611.6864624023438], "page": 14, "span": [0, 306], "__ref_s3_data": null}], "text": "- GLYPH \"Use case 1: Responsible AI augmented with risk and regulatory compliance\" on page 12 AI model lifecycle governance, risk management, and regulatory compliance are key to the success of the enterprises. It is imperative to adopt a typical AI model lifecycle to protect new end-to-end risks.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.6671600341797, 544.2023315429688, 402.90234375, 554.774658203125], "page": 14, "span": [0, 71], "__ref_s3_data": null}], "text": "- GLYPH \"Use case 2: Credit default risk assessment\" on page 22", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.19342041015625, 490.9925842285156, 547.2406005859375, 537.3115234375], "page": 14, "span": [0, 295], "__ref_s3_data": null}], "text": "- Core banking solutions running on IBM Z that are involved in processing inbound transactions need real-time fraud detection to prevent fraud. Other types of possible use cases might be credit risk analysis, anti-money laundering, loan approval, fraud detection in payments, and instant payments.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.68087768554688, 474.0491638183594, 371.79620361328125, 484.5167236328125], "page": 14, "span": [0, 64], "__ref_s3_data": null}], "text": "- GLYPH \"Use case 3: Clearing and settlement\" on page 25", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.48846435546875, 445.0339660644531, 541.1401977539062, 467.4772033691406], "page": 14, "span": [0, 151], "__ref_s3_data": null}], "text": "- The use of AI can help to predict which trades or transactions have high risk exposures, and propose solutions for a more efficient settlement process.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.71913146972656, 427.7883605957031, 455.3772277832031, 438.1060485839844], "page": 14, "span": [0, 84], "__ref_s3_data": null}], "text": "- GLYPH \"Use case 4: Remaining Useful Life of an aircraft engine\" on page 27", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.2084197998047, 399.0348205566406, 534.64013671875, 421.3099365234375], "page": 14, "span": [0, 169], "__ref_s3_data": null}], "text": "- We describe how AI can help to avoid unplanned aircraft downtime by determining the remaining time or cycles that an aircraft engine is likely to operate before failure.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.66246032714844, 370.3010559082031, 539.6531372070312, 392.64227294921875], "page": 14, "span": [0, 112], "__ref_s3_data": null}], "text": "- GLYPH \"Use case 5: AI-powered video analytics on an infant's motions for health prediction\" on page 30", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.8683624267578, 340.944091796875, 547.24267578125, 363.34478759765625], "page": 14, "span": [0, 117], "__ref_s3_data": null}], "text": "- In this section, we describe how AI can predict an infant's health conditions by monitoring real-time body movements.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.4876708984375, 278.525634765625, 547.2564697265625, 313.88934326171875], "page": 14, "span": [0, 72], "__ref_s3_data": null}], "text": "Use case 1: Responsible AI augmented with risk and regulatory compliance", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.6639404296875, 216.21588134765625, 547.1787719726562, 262.65277099609375], "page": 14, "span": [0, 326], "__ref_s3_data": null}], "text": "Advancement in AI is changing the world, and organizations must adopt AI to embrace new challenges daily. Many enterprises see tremendous value in adopting AI and ML technologies while establishing organization trust in the models, underlying data, and the process to be followed. An AI model lifecycle can be a daunting task.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.313232421875, 181.63140869140625, 547.2424926757812, 203.98114013671875], "page": 14, "span": [0, 152], "__ref_s3_data": null}], "text": "How mature is your AI governance? In this section, we provide a use case demonstrating the trustworthiness of AI and its importance in daily monitoring.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.53734588623047, 149.578857421875, 186.71859741210938, 162.76495361328125], "page": 14, "span": [0, 19], "__ref_s3_data": null}], "text": "Industry challenges", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.22996520996094, 126.27838134765625, 508.98724365234375, 136.4630126953125], "page": 14, "span": [0, 83], "__ref_s3_data": null}], "text": "Here are the three main reasons why organizations struggle with the adoption of AI:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.8061065673828, 109.0609130859375, 293.9800720214844, 119.39752197265625], "page": 14, "span": [0, 48], "__ref_s3_data": null}], "text": "- GLYPH Scaling with growing regulations", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.63792419433594, 91.513916015625, 435.7274475097656, 102.025390625], "page": 14, "span": [0, 80], "__ref_s3_data": null}], "text": "- GLYPH Lack of confidence in operationalized AI (making responsible AI)", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.60543823242188, 74.8839111328125, 466.06842041015625, 85.32098388671875], "page": 14, "span": [0, 85], "__ref_s3_data": null}], "text": "- GLYPH Challenges around managing the risk throughout the entire AI workflow", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.29180908203125, 709.186767578125, 324.71160888671875, 721.60595703125], "page": 15, "span": [0, 32], "__ref_s3_data": null}], "text": "Scaling with growing regulations", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.92501831054688, 636.2792358398438, 536.3155517578125, 706.7998046875], "page": 15, "span": [0, 476], "__ref_s3_data": null}], "text": "Laws and regulations in the data and AI space are accelerating, and many countries are proposing strict AI policies. Countries are monitoring adherence of these policies by the enterprises and imposing fines for any violations. Responding to these regulations are challenging global organizations where multiple regulations apply. For enterprises, it is important to adopt AI policies when there is change, and to validate explainable models to protect against discrimination.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.52218627929688, 608.3349609375, 223.41616821289062, 620.21044921875], "page": 15, "span": [0, 14], "__ref_s3_data": null}], "text": "Responsible AI", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.9759521484375, 558.9086303710938, 547.3283081054688, 605.3233642578125], "page": 15, "span": [0, 362], "__ref_s3_data": null}], "text": "Responsible AI protects against loss of data privacy, and reduced customer loyalty and trust. A data scientist cannot maximize accuracy and model performance above all other concerns. Practicing responsible AI is a best practice, and you must establish protection and validation to ensure that any models that are placed into production are fair and explainable.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.5354461669922, 531.4407348632812, 364.06561279296875, 543.5475463867188], "page": 15, "span": [0, 39], "__ref_s3_data": null}], "text": "Risks throughout the entire AI workflow", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.28106689453125, 517.4302978515625, 389.47918701171875, 528.0078735351562], "page": 15, "span": [0, 59], "__ref_s3_data": null}], "text": "Organizations need to mitigate risk of the following items:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.77525329589844, 501.0934753417969, 382.91455078125, 511.2773742675781], "page": 15, "span": [0, 69], "__ref_s3_data": null}], "text": "- GLYPH Deciding not to use certain technologies or practices", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.74273681640625, 483.94232177734375, 450.990234375, 494.5668640136719], "page": 15, "span": [0, 80], "__ref_s3_data": null}], "text": "- GLYPH Using personal information when needed and with a user's consent", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.5438995361328, 467.1396484375, 366.2126770019531, 477.4102478027344], "page": 15, "span": [0, 63], "__ref_s3_data": null}], "text": "- GLYPH Ensuring automated decisions are free from bias", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.47459411621094, 450.2794494628906, 462.3146057128906, 460.52044677734375], "page": 15, "span": [0, 84], "__ref_s3_data": null}], "text": "- GLYPH Customer confidence by providing explanations for business decisions", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.48123168945312, 433.125, 386.45635986328125, 443.2645263671875], "page": 15, "span": [0, 68], "__ref_s3_data": null}], "text": "- GLYPH Fraud to the organization and to customer's accounts", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.62051391601562, 415.7923278808594, 331.2491149902344, 425.9614562988281], "page": 15, "span": [0, 56], "__ref_s3_data": null}], "text": "- GLYPH Delays in putting models into production", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.05039978027344, 370.3006286621094, 547.186767578125, 404.44390869140625], "page": 15, "span": [0, 232], "__ref_s3_data": null}], "text": "In fact, in a recent survey, these concerns were echoed by real AI adopters when asked what aspects of trust are most important to them. Although explaining how AI decides is the primary concern, all of these concerns are important.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.85047912597656, 300.28179931640625, 547.24658203125, 358.5035705566406], "page": 15, "span": [0, 431], "__ref_s3_data": null}], "text": "The key point here is that risk exists throughout the entire AI lifecycle starting with the underlying data and the business justification behind the \"why\" of the project and continuing into production. Without a formalized process, there is no way to mitigate these risks to unlock the scale that is required to make automated decisions profitable. With these decisions, the business can operate proactively instead of reactively.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [535.9011840820312, 27.93828010559082, 547.2591552734375, 37.63787841796875], "page": 15, "span": [0, 2], "__ref_s3_data": null}], "text": "13", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.407470703125, 27.93828010559082, 78.4020004272461, 37.68829345703125], "page": 16, "span": [0, 2], "__ref_s3_data": null}], "text": "14", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.1883316040039, 27.84478759765625, 267.07440185546875, 37.2742919921875], "page": 16, "span": [0, 38], "__ref_s3_data": null}], "text": "IBM Cloud Pak for Data on IBM zSystems", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [136.13604736328125, 674.9320678710938, 547.3073120117188, 721.3720703125], "page": 16, "span": [0, 309], "__ref_s3_data": null}], "text": "For example, a business can start testing a model before production for fairness metrics. For this task, enterprises need an end-to-end workflow with approvals to mitigate these risks and increase the scale of AI investments, as shown in Figure 8, which presents a typical AI model lifecycle in an enterprise.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.17765808105469, 450.5130310058594, 206.827880859375, 459.9346618652344], "page": 16, "span": [0, 35], "__ref_s3_data": null}], "text": "Figure 8 Typical AI model lifecycle", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/11"}, {"prov": [{"bbox": [135.79885864257812, 367.7792053222656, 540.1202392578125, 437.8577880859375], "page": 16, "span": [0, 464], "__ref_s3_data": null}], "text": "Due to regulations, more stakeholders adopt the typical AI model lifecycle to protect their brand from new end-to-end risks. To ensure various aspects of both regulatory compliance and security, the personas that must be involved include the chief financial officer (CFO), chief marketing officer (CMO), chief data officer (CDO), HR, and chief regulatory officer (CRO), along with the data engineers, data scientists, and business analysts, who build AI workflows.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.70143127441406, 335.1172790527344, 279.45147705078125, 348.428955078125], "page": 16, "span": [0, 33], "__ref_s3_data": null}], "text": "IBM governance solution for IBM Z", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.8342742919922, 299.73846435546875, 540.66015625, 322.05352783203125], "page": 16, "span": [0, 112], "__ref_s3_data": null}], "text": "AI model lifecycle governance, risk management, and regulatory compliance are key to the success of enterprises.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.8035888671875, 181.78021240234375, 547.3551025390625, 288.0574645996094], "page": 16, "span": [0, 755], "__ref_s3_data": null}], "text": "AI governance is a comprehensive framework that uses a set of automated processes, methodologies, and tools to manage an organization's use of AI. Consistent principles guiding the design, development, deployment, and monitoring of models are critical in driving responsible and trustworthy AI. AI governance includes processes that trace and record the origin of data, models (including associated metadata), and pipelines for audits. The details of entry should include the techniques that trained each model, the hyperparameters that were used, and the metrics from testing phases. These details provide increased transparency into the model's behavior throughout the lifecycle, the data that was influential in its development, and the possible risks.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.9875030517578, 123.76123809814453, 543.354248046875, 170.0089111328125], "page": 16, "span": [0, 292], "__ref_s3_data": null}], "text": "In a world where trust, transparency and explainable AI matters, every organization wants compliance along with the comfort of understanding how analytic insights and decisions are made. The following sections describe some of the principles and organizational requirements for AI governance.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.3389434814453, 710.2207641601562, 249.09483337402344, 721.6488037109375], "page": 17, "span": [0, 20], "__ref_s3_data": null}], "text": "Lifecycle governance", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.980224609375, 672.2786865234375, 544.0435791015625, 706.5272827148438], "page": 17, "span": [0, 202], "__ref_s3_data": null}], "text": "Lifecycle governance helps you manage your business information throughout its lifecycle, that is, from creation to deletion. IBM AI governance addresses the problems that challenge records managements:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.69290161132812, 654.88720703125, 517.3616333007812, 665.34814453125], "page": 17, "span": [0, 97], "__ref_s3_data": null}], "text": "- GLYPH Monitor, catalog, and govern AI models from anywhere throughout the AI lifecycle.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.61203002929688, 637.7196655273438, 428.482666015625, 647.9351806640625], "page": 17, "span": [0, 77], "__ref_s3_data": null}], "text": "- GLYPH Automate the capture of model metadata for report generation.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.6266632080078, 621.0405883789062, 352.8333740234375, 631.390380859375], "page": 17, "span": [0, 62], "__ref_s3_data": null}], "text": "- GLYPH Drive transparent and explainable AI at scale.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.69007873535156, 604.1846923828125, 531.1472778320312, 614.5416259765625], "page": 17, "span": [0, 103], "__ref_s3_data": null}], "text": "- GLYPH Increase accuracy of predictions by identifying how AI is used and where it is lagging.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.56716918945312, 580.2343139648438, 231.8074951171875, 591.5065307617188], "page": 17, "span": [0, 15], "__ref_s3_data": null}], "text": "Risk management", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.1630859375, 554.0730590820312, 544.0723266601562, 575.9500122070312], "page": 17, "span": [0, 130], "__ref_s3_data": null}], "text": "Risk management is used in IBM AI governance to identify, manage, monitor, and report on risk and compliance initiatives at scale:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.6591033935547, 537.1072998046875, 497.7820739746094, 547.224853515625], "page": 17, "span": [0, 89], "__ref_s3_data": null}], "text": "- GLYPH Automate facts and workflow management to comply with business standards.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.6646270751953, 520.2988891601562, 455.0130310058594, 530.64794921875], "page": 17, "span": [0, 82], "__ref_s3_data": null}], "text": "- GLYPH Use dynamic dashboards for clear and concise customizable results.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.5814971923828, 503.1455383300781, 440.54815673828125, 513.4422607421875], "page": 17, "span": [0, 79], "__ref_s3_data": null}], "text": "- GLYPH Enhanced collaboration across multiple regions and geographies.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.37454223632812, 479.4071350097656, 258.3398742675781, 490.6622314453125], "page": 17, "span": [0, 21], "__ref_s3_data": null}], "text": "Regulatory compliance", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.9670867919922, 428.6660461425781, 547.2466430664062, 475.1661071777344], "page": 17, "span": [0, 366], "__ref_s3_data": null}], "text": "Regulatory compliance is a set of rules that organizations must follow to protect sensitive information and ensure human safety. Any business that works with digital assets, consumer data, health regulations, employee safety, and private communications is subject to regulatory compliance.$^{3}$ The IBM AI governance solution for IBM Z includes the following tasks:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.71563720703125, 412.0512390136719, 433.3389892578125, 422.6202392578125], "page": 17, "span": [0, 80], "__ref_s3_data": null}], "text": "- GLYPH Help adhere to external AI regulations for audit and compliance.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.65516662597656, 394.9600830078125, 465.02978515625, 405.3585205078125], "page": 17, "span": [0, 88], "__ref_s3_data": null}], "text": "- GLYPH Convert external AI regulations into policies for automatic enforcement.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.6472930908203, 378.27911376953125, 503.326171875, 388.6190490722656], "page": 17, "span": [0, 93], "__ref_s3_data": null}], "text": "- GLYPH Use dynamic dashboards for compliance status across policies and regulations.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.04916381835938, 319.36859130859375, 547.2515869140625, 366.0682067871094], "page": 17, "span": [0, 271], "__ref_s3_data": null}], "text": "Enterprises can develop AI models and deploy them by using IBM Watson Studio or WML on CP4D on Red Hat OpenShift on a virtual machine that is based on IBM z/VM or Red Hat Enterprise Linux KVM on IBM Z. AI governance on IBM LinuxONE is supported in the following two ways:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.6191864013672, 291.2804870605469, 526.8416137695312, 313.45947265625], "page": 17, "span": [0, 119], "__ref_s3_data": null}], "text": "- GLYPH Monitor the AI models with Watson OpenScale on CP4D on Red Hat OpenShift on a virtual machine on IBM Z.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.48377990722656, 225.61773681640625, 541.8055419921875, 284.0699462890625], "page": 17, "span": [0, 413], "__ref_s3_data": null}], "text": "- GLYPH Enterprises can develop AI models by creating and training models by using Watson Studio and development tools such as Jupyter Notebook or JupyterLab, and then deploying the model onto WML on CP4D on Red Hat OpenShift on a virtual machine on IBM Z. Then, these enterprises can achieve end-end AI governance by running AI Factsheets, IBM Watson OpenScale, and IBM Watson OpenPagesfi on CP4D on x86.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.42056274414062, 204.2818603515625, 512.4911499023438, 214.4039306640625], "page": 17, "span": [0, 82], "__ref_s3_data": null}], "text": "Figure 9 on page 16 shows the end-to-end flow for a remote AI governance solution.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.24427795410156, 56.91937255859375, 418.4429931640625, 66.9732666015625], "page": 17, "span": [0, 75], "__ref_s3_data": null}], "text": "$^{3 }$https://www.proofpoint.com/us/threat-reference/regulatory-compliance", "type": "footnote", "name": "Footnote", "font": null}, {"prov": [{"bbox": [535.963623046875, 27.93828010559082, 547.2591552734375, 37.68475341796875], "page": 17, "span": [0, 2], "__ref_s3_data": null}], "text": "15", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.34585571289062, 489.1927490234375, 295.9040222167969, 498.58984375], "page": 18, "span": [0, 54], "__ref_s3_data": null}], "text": "Figure 9 Remote AI governance solution end-to-end flow", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/12"}, {"prov": [{"bbox": [136.1533203125, 466.38671875, 438.0164794921875, 476.65362548828125], "page": 18, "span": [0, 66], "__ref_s3_data": null}], "text": "To achieve end-to-end AI governance, complete the following steps:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.8000030517578, 437.72967529296875, 541.7039184570312, 460.077880859375], "page": 18, "span": [0, 96], "__ref_s3_data": null}], "text": "- 1. Create a model entry in IBM OpenPages by using CP4D on a x86 platform, as shown in Figure 10.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.25994873046875, 113.96868896484375, 279.38360595703125, 123.18603515625], "page": 18, "span": [0, 49], "__ref_s3_data": null}], "text": "Figure 10 Creating a model entry in IBM OpenPages", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/13"}, {"prov": [{"bbox": [64.45965576171875, 27.93828010559082, 78.4020004272461, 37.55645751953125], "page": 18, "span": [0, 2], "__ref_s3_data": null}], "text": "16", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.34640502929688, 27.83563232421875, 267.07440185546875, 37.273681640625], "page": 18, "span": [0, 38], "__ref_s3_data": null}], "text": "IBM Cloud Pak for Data on IBM zSystems", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [135.98834228515625, 686.9762573242188, 542.9114379882812, 721.23388671875], "page": 19, "span": [0, 192], "__ref_s3_data": null}], "text": "- 2. Train a model by using Watson Studio and by using development tools such as Jupyter Notebook or JupyterLab on CP4D on Red Hat OpenShift on a virtual machine on IBM Z, as shown in Figure 11.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.27749633789062, 366.48577880859375, 290.4153137207031, 375.8592834472656], "page": 19, "span": [0, 53], "__ref_s3_data": null}], "text": "Figure 11 Training an AI model by using Watson Studio", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/14"}, {"prov": [{"bbox": [136.21717834472656, 331.84283447265625, 547.2686767578125, 353.99700927734375], "page": 19, "span": [0, 115], "__ref_s3_data": null}], "text": "- 3. Deploy the model by using WML on CP4D on Red Hat OpenShift on a virtual machine on IBM Z, as shown in Figure 12.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.3975601196289, 56.48388671875, 351.1659851074219, 65.911376953125], "page": 19, "span": [0, 66], "__ref_s3_data": null}], "text": "Figure 12 Deploying an AI model by using WML on Cloud Pak for Data", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/15"}, {"prov": [{"bbox": [535.8695068359375, 27.93828010559082, 547.2591552734375, 37.5572509765625], "page": 19, "span": [0, 2], "__ref_s3_data": null}], "text": "17", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [135.78439331054688, 674.989501953125, 547.24560546875, 721.399658203125], "page": 20, "span": [0, 338], "__ref_s3_data": null}], "text": "- 4. Track the external model lifecycle by browsing through the Catalogs/Platform assets catalog by using AI Factsheets and OpenPages while using CP4D on an x86 platform, as shown in Figure 13. The external model (deployed on CP4D on Red Hat OpenShift on a virtual machine on IBM Z) is saved as a platform asset catalog on the x86 platform.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.2765350341797, 394.5011291503906, 242.76724243164062, 403.81927490234375], "page": 20, "span": [0, 24], "__ref_s3_data": null}], "text": "Figure 13 External model", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/16"}, {"prov": [{"bbox": [150.45053100585938, 359.73297119140625, 547.290283203125, 382.123291015625], "page": 20, "span": [0, 127], "__ref_s3_data": null}], "text": "You can track the model through each stage of the model lifecycle, as shown in Figure 14, by using AI Factsheets and OpenPages.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.26177978515625, 72.2799072265625, 187.44825744628906, 81.8817138671875], "page": 20, "span": [0, 28], "__ref_s3_data": null}], "text": "Figure 14 Tracking the model", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/17"}, {"prov": [{"bbox": [64.46235656738281, 27.93828010559082, 78.4020004272461, 37.5947265625], "page": 20, "span": [0, 2], "__ref_s3_data": null}], "text": "18", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.31233978271484, 27.7569580078125, 267.07440185546875, 37.3203125], "page": 20, "span": [0, 38], "__ref_s3_data": null}], "text": "IBM Cloud Pak for Data on IBM zSystems", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [150.36676025390625, 699.0984497070312, 547.2222290039062, 721.2769165039062], "page": 21, "span": [0, 122], "__ref_s3_data": null}], "text": "You can see that the model facts are tracked and synchronized to IBM OpenPages for risk management, as shown in Figure 15.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.23995208740234, 368.12579345703125, 450.36871337890625, 377.292236328125], "page": 21, "span": [0, 91], "__ref_s3_data": null}], "text": "Figure 15 Model facts that are tracked and synchronized to IBM OpenPages on an x86 platform", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/18"}, {"prov": [{"bbox": [535.8822631835938, 27.93828010559082, 547.2591552734375, 37.6324462890625], "page": 21, "span": [0, 2], "__ref_s3_data": null}], "text": "19", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [136.09112548828125, 698.8700561523438, 525.693115234375, 721.4546508789062], "page": 22, "span": [0, 94], "__ref_s3_data": null}], "text": "- 5. Create an external model by using IBM OpenScale on the x86 platform, as shown in Figure 16.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.40975189208984, 398.55523681640625, 295.9855651855469, 407.9462585449219], "page": 22, "span": [0, 55], "__ref_s3_data": null}], "text": "Figure 16 Creating an external model on an x86 platform", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/19"}, {"prov": [{"bbox": [135.78622436523438, 339.69549560546875, 547.329345703125, 386.0187683105469], "page": 22, "span": [0, 356], "__ref_s3_data": null}], "text": "IBM OpenScale provides a comprehensive dashboard that tracks fairness, quality monitoring, drift, and explainability of a model. Fairness determines whether your model produces biased outcomes. Quality determines how well your model predicts outcomes. Drift is the degradation of predictive performance over time. A sample is shown in Figure 17 on page 21.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [63.867469787597656, 27.93828010559082, 78.4020004272461, 37.66998291015625], "page": 22, "span": [0, 2], "__ref_s3_data": null}], "text": "20", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.32005310058594, 27.82635498046875, 267.07440185546875, 37.29931640625], "page": 22, "span": [0, 38], "__ref_s3_data": null}], "text": "IBM Cloud Pak for Data on IBM zSystems", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.26493835449219, 429.2548522949219, 386.60101318359375, 438.6904602050781], "page": 23, "span": [0, 76], "__ref_s3_data": null}], "text": "Figure 17 IBM OpenScale dashboard that is used to monitor the external model", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/20"}, {"prov": [{"bbox": [135.85134887695312, 358.6399230957031, 547.2167358398438, 416.78009033203125], "page": 23, "span": [0, 340], "__ref_s3_data": null}], "text": "You developed and deployed the AI model by using Watson Studio, WML on CP4D on Red Hat OpenShift on a virtual machine on IBM Z, and end-to-end AI model governance by leveraging AI Factsheets, OpenScale, and OpenPages on CP4D on a x86 platform. Figure 18 shows end-to-end AI governance when using IBM OpenPages, AI Factsheets, and OpenScale.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.34110260009766, 57.9146728515625, 507.7935485839844, 67.2464599609375], "page": 23, "span": [0, 103], "__ref_s3_data": null}], "text": "Figure 18 Final result: End-to-end AI governance when using IBM OpenPages, AI Factsheets, and OpenScale", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/21"}, {"prov": [{"bbox": [535.4277954101562, 27.93828010559082, 547.2591552734375, 37.76495361328125], "page": 23, "span": [0, 2], "__ref_s3_data": null}], "text": "21", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.80000305175781, 706.0162963867188, 389.5157470703125, 721.75732421875], "page": 24, "span": [0, 42], "__ref_s3_data": null}], "text": "Use case 2: Credit default risk assessment", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.07400512695312, 655.279296875, 547.2247314453125, 689.2387084960938], "page": 24, "span": [0, 265], "__ref_s3_data": null}], "text": "In today's world, many individuals or businesses seeking loans to meet their growing business needs often look to financial institutions. Financial institutions can offer loans to individuals or businesses and charge interest based on the current market situations.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.54896545410156, 622.16162109375, 186.71859741210938, 635.5101318359375], "page": 24, "span": [0, 19], "__ref_s3_data": null}], "text": "Industry challenges", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.15374755859375, 563.0860595703125, 547.2955322265625, 609.3872680664062], "page": 24, "span": [0, 366], "__ref_s3_data": null}], "text": "Financial institutions must make an accurate decision about whether to sanction a loan or not, and judging the likelihood of default is the difference between a successful and unsuccessful loan portfolio. In a traditional scenario, an experienced banker can judge someone's likelihood of default, but that is not an efficient method for judgment as a business grows.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.6235122680664, 530.6572875976562, 341.16033935546875, 543.4171142578125], "page": 24, "span": [0, 45], "__ref_s3_data": null}], "text": "Predictions of credit default risk assessment", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.9077606201172, 435.2793884277344, 547.2635498046875, 517.2838745117188], "page": 24, "span": [0, 579], "__ref_s3_data": null}], "text": "In the modern world, growing business institutions can no longer rely on only experienced bankers to decide whether to sanction a loan knowing that there is a probability that the borrower might default on their loans. A better choice is to rely on technological advancements that can help with reasoning based on facts, such as leveraging credit risk modeling techniques to process the historical data of past borrowers to understand their credit behavior and make a more informed decision about whether to lend money, how much money, and decide on the tenure to close the loan.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.04486083984375, 389.1506042480469, 547.1471557617188, 423.1811218261719], "page": 24, "span": [0, 252], "__ref_s3_data": null}], "text": "Financial institutions can leverage AI solutions by using ML techniques to predict the credit risk. Applying AI to credit risk modeling techniques can benefit institutions in decision-making, and thus can help better manage the exposure to credit risk.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.09634399414062, 330.975341796875, 547.2008666992188, 377.2167663574219], "page": 24, "span": [0, 321], "__ref_s3_data": null}], "text": "Figure 19 on page 23 shows a sample architecture about how to design and develop an AI model for credit risk assessment on IBM Z. An IBM WebSpherefi Application Server is used for handling in-bound transactions, and CP4D is used for AI model lifecycle management that includes building, training, and deploying the model.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [63.85818862915039, 27.93828010559082, 78.4020004272461, 37.5885009765625], "page": 24, "span": [0, 2], "__ref_s3_data": null}], "text": "22", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.21298217773438, 27.90716552734375, 267.07440185546875, 37.21533203125], "page": 24, "span": [0, 38], "__ref_s3_data": null}], "text": "IBM Cloud Pak for Data on IBM zSystems", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.25103759765625, 439.3569641113281, 395.7005615234375, 448.5760498046875], "page": 25, "span": [0, 82], "__ref_s3_data": null}], "text": "Figure 19 Architecture for credit risk prediction by using an ML AI model on IBM Z", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/22"}, {"prov": [{"bbox": [135.72901916503906, 380.574951171875, 547.34521484375, 426.48486328125], "page": 25, "span": [0, 317], "__ref_s3_data": null}], "text": "A data scientist can leverage Watson Studio to develop and train an AI model and WML to deploy and score the model. In this sample architecture, the WML Python run time leverages the ML framework, IBM Snap Machine Learning (Snap ML), for scoring, can leverage an integrated AI accelerator at the time of model import.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.47738647460938, 310.60186767578125, 545.5831909179688, 368.5098876953125], "page": 25, "span": [0, 424], "__ref_s3_data": null}], "text": "Then, the banking loan approval team can send a loan applicant request to the IBM WebSphere Application Server, which can make a request to the AI inference endpoint. The AI inference engine scores the transaction and sends the result back to the loan approval team. Based on the results, the approval team can decide on whether to approve a loan or not, and also decide how much they can lend, timelines, and other factors.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.9343719482422, 264.64080810546875, 528.6572875976562, 298.35601806640625], "page": 25, "span": [0, 232], "__ref_s3_data": null}], "text": "The transaction system that is shown in Figure 19 uses IBM WebSphere Liberty as an application server, but you also can use an IBM Open Libertyfi application server or any application server that can send RESTful API communications.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.85601806640625, 182.3758544921875, 547.310546875, 252.58935546875], "page": 25, "span": [0, 498], "__ref_s3_data": null}], "text": "Models are frequently developed and tested in many platforms and languages, such as Python, Scala, R, and Go. Models can leverage ML frameworks like scikit-learn, Snap ML, or XGBoost, or DL frameworks like TensorFlow or PyTorch. Training a model can be done on any platform if you have enough computing power for complex models, but moving that model into production requires careful testing to ensure that transactions are not delayed, especially if you plan to run the model within a transaction.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.7754364013672, 148.32958984375, 547.2376708984375, 170.63201904296875], "page": 25, "span": [0, 173], "__ref_s3_data": null}], "text": "We showed how IBM Z enable customers to use AI frameworks to detect credit risk. Now, we look at how you can leverage CP4D and TensorFlow on IBM Z to detect the credit risk.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [535.4268188476562, 27.93828010559082, 547.2591552734375, 37.6199951171875], "page": 25, "span": [0, 2], "__ref_s3_data": null}], "text": "23", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [63.90467071533203, 27.93828010559082, 78.4020004272461, 37.68109130859375], "page": 26, "span": [0, 2], "__ref_s3_data": null}], "text": "24", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.28766632080078, 27.8919677734375, 267.07440185546875, 37.2451171875], "page": 26, "span": [0, 38], "__ref_s3_data": null}], "text": "IBM Cloud Pak for Data on IBM zSystems", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [136.43939208984375, 710.9625244140625, 489.5701599121094, 721.3068237304688], "page": 26, "span": [0, 80], "__ref_s3_data": null}], "text": "Figure 20 shows an architecture for predicting credit risk by using DL on IBM Z.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.37335968017578, 421.3126220703125, 344.09613037109375, 430.6827697753906], "page": 26, "span": [0, 70], "__ref_s3_data": null}], "text": "Figure 20 Architecture for credit risk prediction by using DL on IBM Z", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/23"}, {"prov": [{"bbox": [136.12535095214844, 362.44940185546875, 534.5686645507812, 408.48529052734375], "page": 26, "span": [0, 335], "__ref_s3_data": null}], "text": "Data scientists can start creating and training a DL AI model by using a Jupyter Notebook instance and Watson Studio. Then, they can deploy the model by using WML on CP4D running on IBM Z, which provides an endpoint. Other applications, including the IBM WebSphere server, can produce credit risk results by using the model's endpoint.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.19705200195312, 328.7194519042969, 547.2158813476562, 350.4607849121094], "page": 26, "span": [0, 108], "__ref_s3_data": null}], "text": "In summary, here are some considerations for developing real-time AI models, such as credit risk assessment:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.6735076904297, 311.7396545410156, 522.9054565429688, 322.04962158203125], "page": 26, "span": [0, 102], "__ref_s3_data": null}], "text": "- GLYPH A preference for in-platform run times of the model, such as faster execution results.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.52078247070312, 294.32757568359375, 445.5369873046875, 304.5061340332031], "page": 26, "span": [0, 81], "__ref_s3_data": null}], "text": "- GLYPH Less overhead in the end-to-end flows might improve scoring time.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.63246154785156, 265.68341064453125, 547.3232421875, 287.9996643066406], "page": 26, "span": [0, 168], "__ref_s3_data": null}], "text": "- GLYPH If you are using models that are not deployable, CP4D offers a custom Python run time to build your own stack if they are not available on the platform.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.62271118164062, 236.74082946777344, 541.7804565429688, 258.63983154296875], "page": 26, "span": [0, 115], "__ref_s3_data": null}], "text": "- GLYPH AI inferencing based on ML or DL models can increase the accuracy of better credit risk assessment.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.50205993652344, 195.76141357421875, 531.8067626953125, 230.15380859375], "page": 26, "span": [0, 234], "__ref_s3_data": null}], "text": "- GLYPH Using IBM z16 and on-chip AI acceleration with the Telum chip that is embedded with regular Integrated Facility for Linux (IFLs) provides an execution speed for your transactions that cannot be achieved by other means.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.79078674316406, 705.6964721679688, 338.5379638671875, 721.92333984375], "page": 27, "span": [0, 35], "__ref_s3_data": null}], "text": "Use case 3: Clearing and settlement", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.91648864746094, 630.9378051757812, 539.5654907226562, 689.2892456054688], "page": 27, "span": [0, 433], "__ref_s3_data": null}], "text": "Clearing and settlements involve banks or financial institutions sending and receiving wire transfers by using secure interbank payments networks that can clear or settle numerous transactions. When an individual or business entity initiates a wire transfer, clearing begins the fund delivery process. Banks can begin the settlement phase either immediately after clearing takes place or later, mostly at the end of the business day.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.3849868774414, 598.3488159179688, 179.53228759765625, 611.3507690429688], "page": 27, "span": [0, 18], "__ref_s3_data": null}], "text": "Industry challenge", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.17025756835938, 563.2137451171875, 538.4359130859375, 585.2027587890625], "page": 27, "span": [0, 184], "__ref_s3_data": null}], "text": "Banks and financial institutions must deal with high-risk transactions that can lead to loss. Moreover, these transactions can lead to regulatory violations and extra compliance costs.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.63189697265625, 530.2203369140625, 266.077880859375, 543.4601440429688], "page": 27, "span": [0, 32], "__ref_s3_data": null}], "text": "Clearing and settlement solution", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.968505859375, 470.9981994628906, 545.6968383789062, 517.2374267578125], "page": 27, "span": [0, 277], "__ref_s3_data": null}], "text": "Use AI to predict which trades or transactions have high risk exposures, and propose solutions for a more efficient settlement process. The expedited remediation of questionable transactions can prevent costly consequences, regulatory violations, and negative business impacts.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.97213745117188, 389.1208190917969, 544.662109375, 459.1885681152344], "page": 27, "span": [0, 499], "__ref_s3_data": null}], "text": "In financial institutions, finding which financial transactions are legitimate and which transactions are fraudulent is of paramount importance. In this section, we go through a use case where we use AI to predict which trades or transactions have high risk exposures, and propose solutions for a more efficient settlement process. The expedited remediation of questionable transactions can prevent costly consequences, regulatory violations, and negative business impacts to financial institutions.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.8656463623047, 319.3011169433594, 543.3472900390625, 377.083740234375], "page": 27, "span": [0, 430], "__ref_s3_data": null}], "text": "The goal is to predict in real time whether the transaction being processed might be a fraudulent transaction or not. To achieve this goal, we build an ML model that can do this prediction for the financial institution. Because there would be many transactions being processed at any point by the financial institution, it is important to perform this prediction of fraudulent transactions in near-real time in a few milliseconds.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.92105102539062, 261.00042724609375, 547.2335815429688, 307.17913818359375], "page": 27, "span": [0, 298], "__ref_s3_data": null}], "text": "One possible solution is to build and train a TensorFlow based DL model that learns from the historical data and predicts the fraudulent transactions. CP4D on IBM Z and IBM LinuxONE is a suitable product where this task can be achieved and the model deployed, and coming up with a serving endpoint.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [535.565673828125, 27.93828010559082, 547.2591552734375, 37.67999267578125], "page": 27, "span": [0, 2], "__ref_s3_data": null}], "text": "25", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [63.89773941040039, 27.93828010559082, 78.4020004272461, 37.6005859375], "page": 28, "span": [0, 2], "__ref_s3_data": null}], "text": "26", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.21942138671875, 27.8814697265625, 267.07440185546875, 37.2734375], "page": 28, "span": [0, 38], "__ref_s3_data": null}], "text": "IBM Cloud Pak for Data on IBM zSystems", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [136.25498962402344, 699.2785034179688, 537.352294921875, 721.3104858398438], "page": 28, "span": [0, 146], "__ref_s3_data": null}], "text": "Figure 21 provides a high-level diagram of a clearing and settlement use case for financial transactions that uses CP4D on IBM Z and IBM LinuxONE.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.17871856689453, 467.9989013671875, 459.98809814453125, 477.33721923828125], "page": 28, "span": [0, 97], "__ref_s3_data": null}], "text": "Figure 21 Clearing and settlement use case for financial transactions by using Cloud Pak for Data", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/24"}, {"prov": [{"bbox": [136.43458557128906, 445.08782958984375, 353.37115478515625, 455.203369140625], "page": 28, "span": [0, 50], "__ref_s3_data": null}], "text": "Here are the steps of the high-level process flow:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.8000030517578, 415.95501708984375, 524.740966796875, 437.9080505371094], "page": 28, "span": [0, 135], "__ref_s3_data": null}], "text": "- 1. Create a connection to a database (for example, an IBM Db2fi database) where the historical data will be used for ML model building.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.05679321289062, 387.2192687988281, 542.9837646484375, 409.4246826171875], "page": 28, "span": [0, 103], "__ref_s3_data": null}], "text": "- 2. Read the data from the database and prepare the data for AI by using the Data Refinery tool in CP4D.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.27484130859375, 345.4718933105469, 545.7424926757812, 380.01947021484375], "page": 28, "span": [0, 188], "__ref_s3_data": null}], "text": "- 3. A Jupyter Notebook or JupyterLab IDE that is provided by the Watson Studio component in CP4D helps us build and train the AI model. The trained model can be saved into a WML repository.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.03822326660156, 328.7619323730469, 468.5547790527344, 339.3093566894531], "page": 28, "span": [0, 71], "__ref_s3_data": null}], "text": "- 4. Deploy the saved model into a deployment space for batch deployment.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.39476013183594, 311.90350341796875, 417.2825622558594, 321.93609619140625], "page": 28, "span": [0, 62], "__ref_s3_data": null}], "text": "- 5. Create a batch deployment by using any of these interfaces:", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.49728393554688, 295.11468505859375, 460.12939453125, 305.3652038574219], "page": 28, "span": [0, 67], "__ref_s3_data": null}], "text": "- a. Watson Studio user interface from an Analytics deployment space.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.5271759033203, 277.79693603515625, 251.6896209716797, 288.0757751464844], "page": 28, "span": [0, 21], "__ref_s3_data": null}], "text": "- b. WML Python client.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.59584045410156, 261.2212829589844, 244.95565795898438, 271.8419189453125], "page": 28, "span": [0, 17], "__ref_s3_data": null}], "text": "- c. WML REST APIs.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.3202667236328, 243.8004150390625, 418.506591796875, 254.1214599609375], "page": 28, "span": [0, 61], "__ref_s3_data": null}], "text": "- 6. A hardware configuration can be chosen for the deployment.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.2103271484375, 214.9263916015625, 545.685791015625, 237.25958251953125], "page": 28, "span": [0, 160], "__ref_s3_data": null}], "text": "- 7. A batch deployment processes input data from a file, data connection, or connected data in a storage bucket, and writes the output to a selected destination.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.31875610351562, 185.52032470703125, 510.0397033691406, 208.01806640625], "page": 28, "span": [0, 99], "__ref_s3_data": null}], "text": "- 8. One way to run batch deployment to predict or score is to create and run a batch deployment job.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.13897705078125, 168.968994140625, 270.1285705566406, 179.425048828125], "page": 28, "span": [0, 30], "__ref_s3_data": null}], "text": "- 9. Provide an input data type:", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.43360900878906, 151.4150390625, 374.55621337890625, 161.90948486328125], "page": 28, "span": [0, 50], "__ref_s3_data": null}], "text": "- a. Inline data for entering a JSON format payload.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.56649780273438, 135.2022705078125, 492.3292236328125, 145.2796630859375], "page": 28, "span": [0, 78], "__ref_s3_data": null}], "text": "- b. Select Data asset , click Select data source , and then specify your asset.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.80201721191406, 117.6864013671875, 471.90997314453125, 127.86083984375], "page": 28, "span": [0, 75], "__ref_s3_data": null}], "text": "- 10.The output data type can be a new output file or a connected data asset.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.80201721191406, 89.26384735107422, 546.2705688476562, 111.1422119140625], "page": 28, "span": [0, 93], "__ref_s3_data": null}], "text": "- 11.A Kubernetes admin can change the maximum number of concurrent batch jobs that can be run.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [136.71322631835938, 59.8948974609375, 531.2200927734375, 82.11285400390625], "page": 28, "span": [0, 98], "__ref_s3_data": null}], "text": "- 12.Get the deployment endpoint URL. For more information, see Getting the deployment endpoint URL.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.4560546875, 708.4141845703125, 124.18352508544922, 721.5007934570312], "page": 29, "span": [0, 7], "__ref_s3_data": null}], "text": "Summary", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.6417999267578, 660.84716796875, 532.9658813476562, 695.3091430664062], "page": 29, "span": [0, 223], "__ref_s3_data": null}], "text": "With this use case, we attempted to demonstrate how to predict, in real time, whether the transaction that is being processed might be a fraudulent transaction or not. By using the method, you have the following advantages:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.6079559326172, 643.5902099609375, 374.5103454589844, 654.12255859375], "page": 29, "span": [0, 63], "__ref_s3_data": null}], "text": "- GLYPH No Impact to SLAs and the batch process window.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.4309844970703, 626.9100952148438, 508.5062255859375, 637.3343505859375], "page": 29, "span": [0, 97], "__ref_s3_data": null}], "text": "- GLYPH Proactively stop losses, and lower operational, regulatory, and compliance costs.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.6011199951172, 598.2996826171875, 533.5338134765625, 620.6939697265625], "page": 29, "span": [0, 110], "__ref_s3_data": null}], "text": "- GLYPH The solution is using a DL framework like TensorFlow for high-performing, low latency scoring.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [64.69216918945312, 554.8306884765625, 482.53704833984375, 571.3740844726562], "page": 29, "span": [0, 55], "__ref_s3_data": null}], "text": "Use case 4: Remaining Useful Life of an aircraft engine", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.27346801757812, 516.2785034179688, 545.7247314453125, 538.683349609375], "page": 29, "span": [0, 108], "__ref_s3_data": null}], "text": "In this use case, we describe how an airline can deploy an AI model for inferencing by using IBMfi zSystems.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.0217742919922, 458.0208740234375, 547.2705688476562, 504.0582580566406], "page": 29, "span": [0, 339], "__ref_s3_data": null}], "text": "Remaining Useful Life (RUL) is the remaining time or cycles that an aircraft engine is likely to operate without any failure. In this case, it is the equivalent of the number of flights remaining for the engine after the last flight. By estimating RUL, the operator can decide on the next maintenance schedule and avoid unplanned downtime.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.3080596923828, 424.2519226074219, 525.1622924804688, 446.7120056152344], "page": 29, "span": [0, 114], "__ref_s3_data": null}], "text": "Figure 22 provides an overview of the inferencing architecture for the RUL of an aircraft engine when using IBM Z.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.39527893066406, 161.38043212890625, 244.8438262939453, 170.691650390625], "page": 29, "span": [0, 43], "__ref_s3_data": null}], "text": "Figure 22 Inferencing architecture on IBM Z", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/25"}, {"prov": [{"bbox": [136.10833740234375, 66.6394271850586, 547.2557373046875, 148.54931640625], "page": 29, "span": [0, 557], "__ref_s3_data": null}], "text": "Because we are looking into data-driven model development, the data set of our target is the run-to-failure data of the engine. We are looking into a supervised learning problem, and we use regression techniques to learn from the data. DL techniques such as Long Short-Term Memory (LSTM) or Gated Recurrent Units (GRU) are our choice because we are looking into a time series data set. TensorFlow or PyTorch frameworks are leveraged to create models. AI governance monitors the data and model drift to maintain the model quality throughout the model's life.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [535.5003051757812, 27.93828010559082, 547.2591552734375, 37.801513671875], "page": 29, "span": [0, 2], "__ref_s3_data": null}], "text": "27", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [63.85002517700195, 27.93828010559082, 78.4020004272461, 37.60455322265625], "page": 30, "span": [0, 2], "__ref_s3_data": null}], "text": "28", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.15624237060547, 27.85723876953125, 267.07440185546875, 37.27899169921875], "page": 30, "span": [0, 38], "__ref_s3_data": null}], "text": "IBM Cloud Pak for Data on IBM zSystems", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [135.91494750976562, 615.0191040039062, 547.2824096679688, 721.306396484375], "page": 30, "span": [0, 754], "__ref_s3_data": null}], "text": "Open-source data from NASA was used to build the AI model, which then was deployed on CP4D. CP4D enables the data-scientist's journey from modeling to deployment in a seamless process. Data engineers leverage Db2 to host the data set, which includes the training, testing, and validation of a data set. Since data is hosted on Db2, you can expect low latency while retrieving the data and serve data security needs because Db2 is hosted on the IBM Z platform. Data is fetched by the data refinery to do the necessary pre-processing and data imputations. You can use the programming languages Golang or C++ for real-time predictions, depending on customer needs. For more information about this topic, see \"Use case 3: Clearing and settlement\" on page 25.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.84686279296875, 557.2607421875, 545.1770629882812, 603.3901977539062], "page": 30, "span": [0, 289], "__ref_s3_data": null}], "text": "Model building is done on Watson Studio, leveraging the high-performance computing hardware on IBM Z. You can train the model anywhere (on your own hardware or the cloud) and bring the model directly into CP4D, which provides data scientists with the flexibility of implementation choices.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.91741943359375, 510.9693298339844, 547.212890625, 545.34765625], "page": 30, "span": [0, 249], "__ref_s3_data": null}], "text": "We used LSTM to build the AI model and used the training data. The model was continuously evaluated to model convergence. The final model is tested with the test data, which is never exposed at the time of training to make sure that the model works.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.88528442382812, 452.83648681640625, 547.3082885742188, 499.3803405761719], "page": 30, "span": [0, 304], "__ref_s3_data": null}], "text": "This model is deployed on WML on CP4D and runs on IBM Z. If required, the trained model can be converted to the Open Neural Network Exchange (ONNX) format before deployment. Based on project requirements, IBM Z supports high-throughput, low latency inference requirements by leveraging an AI accelerator.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.9976348876953, 371.1309814453125, 547.282470703125, 441.36517333984375], "page": 30, "span": [0, 495], "__ref_s3_data": null}], "text": "For decision-making about an aircraft engine's life, it is important to be able to explain the model predictions from end to end. This explainability may be global or local. Global explainability enables decision-makers to evaluate the trained model in general from the subject matter expert (SME) point of view. Local explainability enables the operator to validate the reasons behind the present inference and relate it to the past data points, which are an indicative cause of the prediction.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.7574462890625, 313.1587829589844, 547.32421875, 359.3186950683594], "page": 30, "span": [0, 273], "__ref_s3_data": null}], "text": "The AI governance components such as IBM OpenScale on CP4D support explainability and manages the drifts in data and concept. OpenPages and AI FactSheet together can alert the stakeholders about important events through a dashboard and allow course correction at any point.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.12620544433594, 254.95623779296875, 547.2745361328125, 301.5126953125], "page": 30, "span": [0, 318], "__ref_s3_data": null}], "text": "Client-side applications can invoke a REST apiserver that handles some preprocessing of an incoming request before initiating the inference pipeline. Efficiencies might be needed in real-time applications, and inference response time can be reduced by adopting low-level programming while components are communicating.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.40904235839844, 221.0084228515625, 521.204345703125, 243.3863525390625], "page": 30, "span": [0, 121], "__ref_s3_data": null}], "text": "Figure 23 on page 29 provides a more in-depth view of the architecture of an AI-based predictive maintenance application.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.29751586914062, 340.3518371582031, 216.1868438720703, 349.6379699707031], "page": 31, "span": [0, 37], "__ref_s3_data": null}], "text": "Figure 23 In-depth architectural view", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/26"}, {"prov": [{"bbox": [136.26695251464844, 306.0186462402344, 501.76422119140625, 327.9122314453125], "page": 31, "span": [0, 106], "__ref_s3_data": null}], "text": "In summary, consider the following points while developing an AI-based predictive maintenance application:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.49343872070312, 265.08624267578125, 547.3203125, 299.4659423828125], "page": 31, "span": [0, 204], "__ref_s3_data": null}], "text": "- GLYPH CP4D offers a Python run time to build a custom solution stack, but also supports different components like Watson Studio, WML, Db2, Data Refinery, OpenScale, AI Factsheets, and OpenPages.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.57691955566406, 247.70538330078125, 491.34027099609375, 257.9407958984375], "page": 31, "span": [0, 96], "__ref_s3_data": null}], "text": "- GLYPH The trustworthiness of the predicted output is important for critical use cases.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.67471313476562, 219.09210205078125, 534.4998779296875, 241.30987548828125], "page": 31, "span": [0, 118], "__ref_s3_data": null}], "text": "- GLYPH IBM Z provides high data security and low latency requirements at scale for the critical applications.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.61285400390625, 190.240234375, 547.2156982421875, 212.05743408203125], "page": 31, "span": [0, 141], "__ref_s3_data": null}], "text": "- GLYPH A data scientist can choose to train the model and deploy it on CP4D seamlessly with the latest tech stack that is available.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.52349853515625, 160.86175537109375, 504.0291748046875, 183.47650146484375], "page": 31, "span": [0, 128], "__ref_s3_data": null}], "text": "- GLYPH The AIOps and MLOps supported by CP4D to track AI model and data lifecycle throughout the application lifecycle.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [535.4804077148438, 27.93828010559082, 547.2591552734375, 37.7464599609375], "page": 31, "span": [0, 2], "__ref_s3_data": null}], "text": "29", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.292236328125, 686.99609375, 542.2593994140625, 721.9068603515625], "page": 32, "span": [0, 83], "__ref_s3_data": null}], "text": "Use case 5: AI-powered video analytics on an infant's motions for health prediction", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [136.04208374023438, 612.2630004882812, 546.6989135742188, 670.8692016601562], "page": 32, "span": [0, 395], "__ref_s3_data": null}], "text": "Each year, approximately 5 million newborns worldwide are suffering from a neuro-developmental disorder. Due to the lack of early diagnoses and intervention, many infants are disabled and abandoned, especially in countries with limited numbers of pediatricians with extensive experience in neuro-developmental disorders. This situation is a conundrum that plagues many families around the world.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.93234252929688, 553.6912231445312, 547.3121948242188, 600.051025390625], "page": 32, "span": [0, 280], "__ref_s3_data": null}], "text": "Infant motion analysis plays critical importance to understanding and comprehending healthy childhood development. In infants, monitoring their poses provides information about their health that can lead to a better prediction of early developmental risk assessment and diagnosis.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.01303100585938, 508.30059814453125, 533.3443603515625, 542.4129638671875], "page": 32, "span": [0, 264], "__ref_s3_data": null}], "text": "Adults use different techniques and methods to express their feelings (like sick, happy, stressed, or hungry), but this case is usually different for infants who cannot express their feelings. Based on the baby movements, AI can predict their expression or health.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.85812377929688, 426.2819519042969, 535.1302490234375, 496.4077453613281], "page": 32, "span": [0, 442], "__ref_s3_data": null}], "text": "In this use case, we examine how AI-powered video analytics can assist new parents and hospitals by addressing pose-based real-time body movements of the infants (such as arching back, head banging, kicking legs, rubbing eyes, stretching, and sucking fingers). During the initial months of a baby's life, spontaneous movements might indicate later developmental disorders, such as cerebral palsy, Rett syndrome, and autism spectrum disorders.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.58500671386719, 393.4929504394531, 186.71859741210938, 406.79620361328125], "page": 32, "span": [0, 19], "__ref_s3_data": null}], "text": "Industry challenges", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.78916931152344, 334.298828125, 547.2576293945312, 380.6932067871094], "page": 32, "span": [0, 323], "__ref_s3_data": null}], "text": "There are video surveillance systems that are installed for monitoring an infant's movement in many hospitals or homes so that any problem can be witnessed and potentially even stopped before they take place. These systems require much manual work to monitor the real-stream videos and intervene when a problem is detected.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.95849609375, 264.06689453125, 547.2775268554688, 322.5081787109375], "page": 32, "span": [0, 391], "__ref_s3_data": null}], "text": "There is a certain amount of trust that you must place on the person who monitors a surveillance system to ensure that the job is being done effectively and efficiently, and that the surveillance system is being vigilantly watched. Because of the dependency on these manual efforts, you need something \"smart\" that monitors constantly the surveillance system and detect problems effectively.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.81661987304688, 218.02496337890625, 547.2385864257812, 251.96868896484375], "page": 32, "span": [0, 248], "__ref_s3_data": null}], "text": "AI is shaping the controls of surveillance that can map and track occurrences with self-learning abilities, AI can improve on human operations and analyze video footage in real time to alert the hospitals or parents if any anomalies are identified.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.16104125976562, 183.468017578125, 541.7665405273438, 205.88714599609375], "page": 32, "span": [0, 173], "__ref_s3_data": null}], "text": "Video processing a stream of data from surveillance systems and then performing advance analytics and detecting anomalies quickly is a significant challenge in the industry.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.49705505371094, 150.97406005859375, 278.4443054199219, 164.32861328125], "page": 32, "span": [0, 36], "__ref_s3_data": null}], "text": "Infant motion analytics in real time", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.9631805419922, 67.82470703125, 547.2257080078125, 137.95867919921875], "page": 32, "span": [0, 519], "__ref_s3_data": null}], "text": "AI is the current \"market trend evolution\" in video analytics and advancing the decision-making capabilities of the human mind. DL-based computer vision AI techniques are being widely adopted by various industries to solve real-time problems. These techniques improve the detection and prediction accuracy without increasing the hardware cost exponentially. For users, AI greatly reduces the workload of the monitoring staff and provides benefits by detecting unusual incidents and solving many video forensic problems.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.11967468261719, 27.93828010559082, 78.4020004272461, 37.5791015625], "page": 32, "span": [0, 2], "__ref_s3_data": null}], "text": "30", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.19580841064453, 27.85504150390625, 267.07440185546875, 37.26409912109375], "page": 32, "span": [0, 38], "__ref_s3_data": null}], "text": "IBM Cloud Pak for Data on IBM zSystems", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [135.8349609375, 687.23095703125, 540.1576538085938, 721.387451171875], "page": 33, "span": [0, 258], "__ref_s3_data": null}], "text": "CP4D was used to build and deploy the AI-powered video analytics on infant's motion for health prediction use case on IBM Z. IBM Z with AI accelerator enables faster inference for detecting face and body movements and performing angle analytics in real time.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.0093536376953, 629.25927734375, 542.9444580078125, 675.2120971679688], "page": 33, "span": [0, 288], "__ref_s3_data": null}], "text": "Figure 24 shows an architectural diagram about how to design and develop an AI model for real-time body pose detection on IBM Z. A deep convolutional neural network architecture was trained on the task of infant pose estimation on the custom data set by leveraging IBM Cloud Pak for Data.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.36393737792969, 369.383544921875, 281.63330078125, 378.4368591308594], "page": 33, "span": [0, 53], "__ref_s3_data": null}], "text": "Figure 24 Architecture for AI-powered video analytics", "type": "caption", "name": "Caption", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/27"}, {"prov": [{"bbox": [135.9974822998047, 274.28826904296875, 547.311279296875, 356.6090087890625], "page": 33, "span": [0, 575], "__ref_s3_data": null}], "text": "Live camera feeds or recorded videos of an infant's movement are the inputs for a pose detection model. This video streaming data was stored in IBM Cloudfi Object Storage for image processing. Video data must be transformed into frames so that the infant's body poses can be detected. These post-estimation components of the pipeline predict the location of all 17-person key points with 3 degrees of freedom each (x, y location and visibility) plus two virtual alignment key points. This approach also embraces a compute-intensive heat map prediction of infant body posture.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.75706481933594, 192.76055908203125, 539.9171752929688, 262.49298095703125], "page": 33, "span": [0, 454], "__ref_s3_data": null}], "text": "When changes in body posture or movement happen, analytics can be performed, and a threshold can be set for the angle of the body and posture movements. An analysis can be performed on movement that is based on that threshold to help to predict an infant's health index in the output video stream by leveraging the IBM z16 on-chip AI acceleration, which provides an execution speed in real time on an edge device, which cannot be achieved by other means.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.83775329589844, 170.34564208984375, 437.95953369140625, 180.63201904296875], "page": 33, "span": [0, 68], "__ref_s3_data": null}], "text": "We can leverage the following AI technology stack for this use case:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.53660583496094, 141.7152099609375, 546.6869506835938, 164.04058837890625], "page": 33, "span": [0, 117], "__ref_s3_data": null}], "text": "- GLYPH Convolutional neural network: Build an artificial neural network model on video streaming and images.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.43955993652344, 124.72181701660156, 455.69329833984375, 134.6781005859375], "page": 33, "span": [0, 80], "__ref_s3_data": null}], "text": "- GLYPH TensorFlow: A DL back-end framework that is based on TensorFlow.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.51890563964844, 95.74219512939453, 543.4529418945312, 118.01629638671875], "page": 33, "span": [0, 120], "__ref_s3_data": null}], "text": "- GLYPH Mediapipe: A library that helps with video streaming processing and prediction of human pose estimation.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.43861389160156, 78.37835693359375, 516.3308715820312, 88.65191650390625], "page": 33, "span": [0, 96], "__ref_s3_data": null}], "text": "- GLYPH OpenCV: A real-time computer vision library that helps perform image processing.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [535.5228881835938, 27.93828010559082, 547.2591552734375, 37.67767333984375], "page": 33, "span": [0, 2], "__ref_s3_data": null}], "text": "31", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [135.99948120117188, 687.2371826171875, 542.3601684570312, 721.2702026367188], "page": 34, "span": [0, 238], "__ref_s3_data": null}], "text": "WML was used for deployment of the pose detection model and generated notifications to users with web and mobile applications, and it integrates with Fitbit for push notifications so that hospitals and parents can take preventive actions.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.3565673828125, 644.0363159179688, 223.8605499267578, 659.8582763671875], "page": 34, "span": [0, 20], "__ref_s3_data": null}], "text": "Additional resources", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.6084747314453, 605.2584838867188, 547.2325439453125, 627.3983154296875], "page": 34, "span": [0, 149], "__ref_s3_data": null}], "text": "- GLYPH The Cloud Pak for Data 4.5 on IBM Z Overview Demo video provides an overview of some of the more important features of CP4D on IBM Z.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.61322021484375, 588.2786865234375, 300.0693054199219, 598.4909057617188], "page": 34, "span": [0, 49], "__ref_s3_data": null}], "text": "- GLYPH IBM Cloud Pak for Data Tutorials.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.7628173828125, 559.299072265625, 518.558837890625, 581.2073974609375], "page": 34, "span": [0, 149], "__ref_s3_data": null}], "text": "- GLYPH Here are some additional use cases that use the data science frameworks that are available as part of CP4D on IBM Z and IBM LinuxONE:", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.3540802001953, 530.036376953125, 527.840576171875, 551.8923950195312], "page": 34, "span": [0, 127], "__ref_s3_data": null}], "text": "- -Payment Card Fraud Detection by using TensorFlow on CP4D on IBM Z and IBM LinuxONE is a payment card fraud detection use case.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.2523193359375, 501.28009033203125, 539.9617919921875, 523.225341796875], "page": 34, "span": [0, 152], "__ref_s3_data": null}], "text": "- -Fashion-MNIST clothing classification with PyTorch on Cloud Pak for Data on IBM Z and IBM LinuxONE is a Fashion-MNIST clothing classification use case.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [151.19593811035156, 448.30084228515625, 547.2676391601562, 494.5711669921875], "page": 34, "span": [0, 319], "__ref_s3_data": null}], "text": "- -Payment Card Fraud Prevention by using Snap ML on IBM Cloud Pak for Data on Red Hat OpenShift on a virtual machine on IBM Z and IBM LinuxONE, which leverage the z16 integrated AI accelerator describes a use case that uses Snap Machine Learning in Cloud Pak for Data on IBM Z and IBM LinuxONE. It is a Snap ML use case.", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [165.18856811523438, 419.2614440917969, 547.1928100585938, 441.26715087890625], "page": 34, "span": [0, 131], "__ref_s3_data": null}], "text": "A companion video can be found at Credit Card Fraud Detection by using Snap ML on IBM Cloud Pak for Data on IBM Z and IBM LinuxONE.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.41288757324219, 375.7332763671875, 137.74366760253906, 391.7469787597656], "page": 34, "span": [0, 7], "__ref_s3_data": null}], "text": "Summary", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.86285400390625, 253.18939208984375, 547.1648559570312, 359.3092956542969], "page": 34, "span": [0, 734], "__ref_s3_data": null}], "text": "This IBM Redbooksfi publication presented an overview of how IBM Cloud Pak for Data on IBM Z can modernize your data infrastructure; develop and deploy ML and AI models; and instantiate highly efficient analytics deployment on IBM LinuxONE. This publication demonstrated these tasks by guiding the reader through five common use cases where CP4D on IBM Z and IBM LinuxONE uses the different features that are supported on the platform, and showing how the associated features can help an enterprise to build AI and ML models with core transactional data, which results in a highly efficient analytics deployment that minimizes latency, cost inefficiencies, and potential security exposures that are connected with data transportation.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.06120300292969, 220.6373748779297, 114.58550262451172, 233.67156982421875], "page": 34, "span": [0, 7], "__ref_s3_data": null}], "text": "Authors", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [64.16203308105469, 27.93828010559082, 78.4020004272461, 37.50299072265625], "page": 34, "span": [0, 2], "__ref_s3_data": null}], "text": "32", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.21607208251953, 27.91644287109375, 267.07440185546875, 37.19580078125], "page": 34, "span": [0, 38], "__ref_s3_data": null}], "text": "IBM Cloud Pak for Data on IBM zSystems", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [135.81004333496094, 185.25857543945312, 538.573486328125, 207.376953125], "page": 34, "span": [0, 112], "__ref_s3_data": null}], "text": "This publication was produced by a team of specialists from around the world working with the IBM Redbooks team:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.75830078125, 115.14935302734375, 547.2435913085938, 173.5089111328125], "page": 34, "span": [0, 393], "__ref_s3_data": null}], "text": "Jasmeet Bhatia is an AI on IBM Z Product Manager who supports CP4D on IBM Z. She has 2.5 years of combined experience as a data scientist and a product manager. Jasmeet lives in San Francisco, California and holds a Bachelor of Arts degree in Data Science. She is working on her Master of Science degree in Data Science. Her area of expertise includes AI, data science, and product management.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.0478515625, 651.166748046875, 546.0402221679688, 721.465576171875], "page": 35, "span": [0, 505], "__ref_s3_data": null}], "text": "Ravi Gummadi is a Technical Leader for CP4D on Linux on IBM Z and IBM LinuxONE in India. He has 18+ years of experience in the design and development of enterprise software for various platforms, including IBM Z and IBM LinuxONE. He holds a master's degree in computer science and engineering from the Indian Institute of Technology Madras (IIT Madras). His areas of expertise include compilers, virtualization, big data analytics, containers, data, and AI, with a special focus on open-source ecosystems.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.68675231933594, 569.0224609375, 546.8887329101562, 639.4677734375], "page": 35, "span": [0, 501], "__ref_s3_data": null}], "text": "Chandra Shekhar Reddy Potula is a Lead AI on zSystems team Architect for Linux on IBM Z and LinuxONE in India. He has 18+ years of experience in the design and development of enterprise software and firmware for various platforms, including IBM Z and LinuxONE. He holds a degree in computer science of engineering from Jawaharlal Nehru Technological University (JNTU). His areas of expertise include networking, virtualization, containers, data, and AI, with a special focus on open-source ecosystems.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.7921600341797, 438.8973693847656, 547.256103515625, 557.3799438476562], "page": 35, "span": [0, 828], "__ref_s3_data": null}], "text": "Srirama Sharma is a Lead Technical Architect for IBM Cloud Pak, IBM Instanafi, IBM Turbonomicfi, and Red Hat Advanced Cluster Management for Kubernetes (RHACM) on IBM Z and LinuxONE. He has 18+ years of experience in UNIX and Linux application and device driver development. He designs ISV solutions on IBM Systems and IBM Blockchainfi. He also works on cloud-native adoption of enterprise solutions on IBM Z and LinuxONE. Srirama holds a Bachelor of Engineering degree in computer science from Visvesvaraya Technological University (VTU). He lives in Bangalore, Karnataka. His areas of expertise include UNIX and Linux systems programming, virtualization, performance benchmarking of Financial Services Sector (FSS) industry solutions, open-source ecosystems, server infrastructure, and cloud-native adoption and modernization.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.95065307617188, 417.0667419433594, 432.8396301269531, 427.2441711425781], "page": 35, "span": [0, 71], "__ref_s3_data": null}], "text": "Thanks to the following people for their contributions to this project:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.16671752929688, 383.0773620605469, 314.3034973144531, 405.195556640625], "page": 35, "span": [0, 65], "__ref_s3_data": null}], "text": "Lydia Parziale, Project Manager IBM Redbooks, Poughkeepsie Center", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.28025817871094, 349.3034973144531, 364.17230224609375, 371.7374572753906], "page": 35, "span": [0, 54], "__ref_s3_data": null}], "text": "Shin Kelly Yang, AI on IBM Z Product Management IBM US", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.87332153320312, 315.28411865234375, 537.7623291015625, 337.4849853515625], "page": 35, "span": [0, 87], "__ref_s3_data": null}], "text": "Tom Ramey, Anna Shugol, Andrew Sica, Jonathan Sloan, Elpida Tzortzatos, Meeta Vouk, IBM", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.67491912841797, 282.3042297363281, 349.12164306640625, 295.62060546875], "page": 35, "span": [0, 43], "__ref_s3_data": null}], "text": "Now you can become a published author, too!", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.876953125, 187.2394561767578, 547.3480224609375, 269.32843017578125], "page": 35, "span": [0, 559], "__ref_s3_data": null}], "text": "Here's an opportunity to spotlight your skills, grow your career, and become a published author-all at the same time! Join an IBM Redbooks residency project and help write a book in your area of expertise, while honing your experience using leading-edge technologies. Your efforts will help to increase product acceptance and customer satisfaction, as you expand your network of technical contacts and relationships. Residencies run from two to six weeks in length, and you can participate either in person or as a remote resident working from your home base.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.39222717285156, 165.0889892578125, 547.3431396484375, 175.36004638671875], "page": 35, "span": [0, 91], "__ref_s3_data": null}], "text": "Find out more about the residency program, browse the residency index, and apply online at:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [136.80099487304688, 148.4791259765625, 301.6788024902344, 157.7542724609375], "page": 35, "span": [0, 34], "__ref_s3_data": null}], "text": "ibm.com /redbooks/residencies.html", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [535.5333251953125, 27.93828010559082, 547.2591552734375, 37.59283447265625], "page": 35, "span": [0, 2], "__ref_s3_data": null}], "text": "33", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.4889907836914, 708.357421875, 270.4855651855469, 721.6314086914062], "page": 36, "span": [0, 30], "__ref_s3_data": null}], "text": "Stay connected to IBM Redbooks", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [135.56192016601562, 685.2982788085938, 241.2664794921875, 695.48486328125], "page": 36, "span": [0, 36], "__ref_s3_data": null}], "text": "- GLYPH Find us on LinkedIn:", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.71234130859375, 668.0650024414062, 391.0767822265625, 677.8062744140625], "page": 36, "span": [0, 48], "__ref_s3_data": null}], "text": "http://www.linkedin.com/groups?home=&gid=2130806", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [135.51414489746094, 639.2791137695312, 546.8383178710938, 661.1776733398438], "page": 36, "span": [0, 118], "__ref_s3_data": null}], "text": "- GLYPH Explore new Redbooks publications, residencies, and workshops with the IBM Redbooks weekly newsletter:", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.69110107421875, 622.588134765625, 451.35418701171875, 632.6083984375], "page": 36, "span": [0, 60], "__ref_s3_data": null}], "text": "- https://www.redbooks.ibm.com/Redbooks.nsf/subscribe?OpenForm", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [135.90457153320312, 604.872802734375, 430.1478271484375, 615.35009765625], "page": 36, "span": [0, 76], "__ref_s3_data": null}], "text": "- GLYPH Stay current on recent Redbooks publications with RSS Feeds:", "type": "paragraph", "name": "List-item", "font": null}, {"prov": [{"bbox": [150.6310272216797, 588.5687866210938, 331.0777282714844, 598.2605590820312], "page": 36, "span": [0, 36], "__ref_s3_data": null}], "text": "http://www.redbooks.ibm.com/rss.html", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.23326110839844, 27.93828010559082, 78.4020004272461, 37.54473876953125], "page": 36, "span": [0, 2], "__ref_s3_data": null}], "text": "34", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.27912139892578, 27.87841796875, 267.07440185546875, 37.2301025390625], "page": 36, "span": [0, 38], "__ref_s3_data": null}], "text": "IBM Cloud Pak for Data on IBM zSystems", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.80000305175781, 695.9519653320312, 151.5048065185547, 719.029296875], "page": 37, "span": [0, 7], "__ref_s3_data": null}], "text": "Notices", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [64.05133819580078, 629.731201171875, 547.2454833984375, 659.9757080078125], "page": 37, "span": [0, 254], "__ref_s3_data": null}], "text": "This information was developed for products and services offered in the US. This material might be available from IBM in other languages. However, you may be required to own a copy of the product or product version in that language in order to access it.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.02767944335938, 559.5601196289062, 547.1796875, 619.982666015625], "page": 37, "span": [0, 625], "__ref_s3_data": null}], "text": "IBM may not offer the products, services, or features discussed in this document in other countries. Consult your local IBM representative for information on the products and services currently available in your area. Any reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, program, or service may be used. Any functionally equivalent product, program, or service that does not infringe any IBM intellectual property right may be used instead. However, it is the user's responsibility to evaluate and verify the operation of any non-IBM product, program, or service.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.14295196533203, 520.18017578125, 547.3560180664062, 550.154052734375], "page": 37, "span": [0, 232], "__ref_s3_data": null}], "text": "IBM may have patents or pending patent applications covering subject matter described in this document. The furnishing of this document does not grant you any license to these patents. You can send license inquiries, in writing, to:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.09358215332031, 509.72900390625, 535.3104248046875, 520.0274658203125], "page": 37, "span": [0, 99], "__ref_s3_data": null}], "text": "IBM Director of Licensing, IBM Corporation, North Castle Drive, MD-NC119, Armonk, NY 10504-1785, US", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [63.77083969116211, 449.74090576171875, 545.7673950195312, 500.6291198730469], "page": 37, "span": [0, 411], "__ref_s3_data": null}], "text": "INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some jurisdictions do not allow disclaimer of express or implied warranties in certain transactions, therefore, this statement may not apply to you.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [63.76580810546875, 400.1820983886719, 547.2484130859375, 439.9736022949219], "page": 37, "span": [0, 345], "__ref_s3_data": null}], "text": "This information could include technical inaccuracies or typographical errors. Changes are periodically made to the information herein; these changes will be incorporated in new editions of the publication. IBM may make improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time without notice.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [63.99868392944336, 360.0369567871094, 541.5413208007812, 390.02362060546875], "page": 37, "span": [0, 286], "__ref_s3_data": null}], "text": "Any references in this information to non-IBM websites are provided for convenience only and do not in any manner serve as an endorsement of those websites. The materials at those websites are not part of the materials for this IBM product and use of those websites is at your own risk.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.16744995117188, 329.5712890625, 519.2667846679688, 349.7569580078125], "page": 37, "span": [0, 136], "__ref_s3_data": null}], "text": "IBM may use or distribute any of the information you provide in any way it believes appropriate without incurring any obligation to you.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [63.904296875, 299.6888427734375, 505.2710266113281, 319.8106994628906], "page": 37, "span": [0, 191], "__ref_s3_data": null}], "text": "The performance data and client examples cited are presented for illustrative purposes only. Actual performance results may vary depending on specific configurations and operating conditions.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.10684204101562, 249.8016357421875, 547.2424926757812, 289.8807373046875], "page": 37, "span": [0, 408], "__ref_s3_data": null}], "text": "Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly available sources. IBM has not tested those products and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.23661041259766, 219.7401123046875, 544.685791015625, 239.82928466796875], "page": 37, "span": [0, 146], "__ref_s3_data": null}], "text": "Statements regarding IBM's future direction or intent are subject to change or withdrawal without notice, and represent goals and objectives only.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [63.82798385620117, 170.14593505859375, 547.016357421875, 209.76708984375], "page": 37, "span": [0, 335], "__ref_s3_data": null}], "text": "This information contains examples of data and reports used in daily business operations. To illustrate them as completely as possible, the examples include the names of individuals, companies, brands, and products. All of these names are fictitious and any similarity to actual people or business enterprises is entirely coincidental.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.29706573486328, 150.16616821289062, 172.50048828125, 160.24713134765625], "page": 37, "span": [0, 18], "__ref_s3_data": null}], "text": "COPYRIGHT LICENSE:", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [63.95261001586914, 59.9888916015625, 547.3580932617188, 140.04864501953125], "page": 37, "span": [0, 779], "__ref_s3_data": null}], "text": "This information contains sample application programs in source language, which illustrate programming techniques on various operating platforms. You may copy, modify, and distribute these sample programs in any form without payment to IBM, for the purposes of developing, using, marketing or distributing application programs conforming to the application programming interface for the operating platform for which the sample programs are written. These examples have not been thoroughly tested under all conditions. IBM, therefore, cannot guarantee or imply reliability, serviceability, or function of these programs. The sample programs are provided \"AS IS\", without warranty of any kind. IBM shall not be liable for any damages arising out of your use of the sample programs.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [63.60262680053711, 27.9490966796875, 180.32760620117188, 37.3072509765625], "page": 37, "span": [0, 27], "__ref_s3_data": null}], "text": "' Copyright IBM Corp. 2023.", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [535.6251220703125, 27.93828010559082, 547.2591552734375, 37.6282958984375], "page": 37, "span": [0, 2], "__ref_s3_data": null}], "text": "35", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [64.03144836425781, 706.0162963867188, 155.489501953125, 721.8876953125], "page": 38, "span": [0, 10], "__ref_s3_data": null}], "text": "Trademarks", "type": "subtitle-level-1", "name": "Section-header", "font": null}, {"prov": [{"bbox": [64.0931396484375, 649.2987060546875, 547.2343139648438, 689.2715454101562], "page": 38, "span": [0, 383], "__ref_s3_data": null}], "text": "IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines Corporation, registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the web at \"Copyright and trademark information\" at http://www.ibm.com/legal/copytrade.shtml", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [63.78811264038086, 619.1767578125, 547.241455078125, 639.4071044921875], "page": 38, "span": [0, 181], "__ref_s3_data": null}], "text": "The following terms are trademarks or registered trademarks of International Business Machines Corporation, and might also be trademarks or registered trademarks in other countries.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [75.5999984741211, 601.1370239257812, 99.15697479248047, 610.3914184570312], "page": 38, "span": [0, 11], "__ref_s3_data": null}], "text": "Db2fi IBMfi", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [75.5999984741211, 579.1167602539062, 144.71075439453125, 588.5880737304688], "page": 38, "span": [0, 16], "__ref_s3_data": null}], "text": "IBM Blockchainfi", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [75.5999984741211, 568.1367797851562, 124.25857543945312, 577.4935302734375], "page": 38, "span": [0, 20], "__ref_s3_data": null}], "text": "IBM Cloudfi IBM Clou", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [75.47257232666016, 557.1567993164062, 142.73785400390625, 567.2310791015625], "page": 38, "span": [0, 7], "__ref_s3_data": null}], "text": "d Pakfi", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [75.5999984741211, 546.1165161132812, 128.0511016845703, 556.1326904296875], "page": 38, "span": [0, 10], "__ref_s3_data": null}], "text": "IBM Telum\u2122", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [235.9648895263672, 601.13623046875, 292.5691833496094, 610.4598388671875], "page": 38, "span": [0, 12], "__ref_s3_data": null}], "text": "IBM Watsonfi", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [235.9771270751953, 590.15625, 278.3294982910156, 600.0650634765625], "page": 38, "span": [0, 8], "__ref_s3_data": null}], "text": "IBM z16\u2122", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [235.92138671875, 579.115966796875, 272.8687744140625, 588.3995361328125], "page": 38, "span": [0, 9], "__ref_s3_data": null}], "text": "Instanafi", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [235.9377899169922, 567.6576538085938, 294.80047607421875, 577.7839965820312], "page": 38, "span": [0, 14], "__ref_s3_data": null}], "text": "Open Libertyfi", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [235.86184692382812, 557.100341796875, 290.5615539550781, 566.484619140625], "page": 38, "span": [0, 11], "__ref_s3_data": null}], "text": "OpenPagesfi", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [236.06265258789062, 546.11572265625, 283.79803466796875, 555.6954345703125], "page": 38, "span": [0, 10], "__ref_s3_data": null}], "text": "Redbooksfi", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.08106994628906, 523.8305053710938, 312.0052490234375, 533.9868774414062], "page": 38, "span": [0, 54], "__ref_s3_data": null}], "text": "The following terms are trademarks of other companies:", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.17213439941406, 493.8155212402344, 528.6849365234375, 514.7268676757812], "page": 38, "span": [0, 184], "__ref_s3_data": null}], "text": "Intel, Intel logo, Intel Inside logo, and Intel Centrino logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [63.988487243652344, 464.2257080078125, 541.6887817382812, 484.4936828613281], "page": 38, "span": [0, 174], "__ref_s3_data": null}], "text": "The registered trademark Linuxfi is used pursuant to a sublicense from the Linux Foundation, the exclusive licensee of Linus Torvalds, owner of the mark on a worldwide basis.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.36927795410156, 434.2598876953125, 531.9806518554688, 454.6313781738281], "page": 38, "span": [0, 140], "__ref_s3_data": null}], "text": "Red Hat and OpenShift are trademarks or registered trademarks of Red Hat, Inc. or its subsidiaries in the United States and other countries.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.39899444580078, 414.2801208496094, 472.0943908691406, 424.5513916015625], "page": 38, "span": [0, 90], "__ref_s3_data": null}], "text": "UNIX is a registered trademark of The Open Group in the United States and other countries.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.1666259765625, 394.30035400390625, 465.3721618652344, 404.60601806640625], "page": 38, "span": [0, 86], "__ref_s3_data": null}], "text": "Other company, product, or service names may be trademarks or service marks of others.", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [64.26212310791016, 26.91827964782715, 78.4020004272461, 36.5125732421875], "page": 38, "span": [0, 2], "__ref_s3_data": null}], "text": "36", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [93.35021209716797, 26.59393310546875, 267.07440185546875, 36.15057373046875], "page": 38, "span": [0, 38], "__ref_s3_data": null}], "text": "IBM Cloud Pak for Data on IBM zSystems", "type": "page-footer", "name": "Page-footer", "font": null}, {"prov": [{"bbox": [396.7199401855469, 600.8096313476562, 464.44384765625, 610.1947631835938], "page": 38, "span": [0, 26], "__ref_s3_data": null}], "text": "Redbooks (log o) fi Turbon", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [396.71099853515625, 590.1554565429688, 452.03265380859375, 599.5802001953125], "page": 38, "span": [0, 6], "__ref_s3_data": null}], "text": "omicfi", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [396.258544921875, 579.1151733398438, 451.70428466796875, 588.4796142578125], "page": 38, "span": [0, 11], "__ref_s3_data": null}], "text": "WebSpherefi", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [396.62286376953125, 568.1351928710938, 424.4446716308594, 577.8291015625], "page": 38, "span": [0, 6], "__ref_s3_data": null}], "text": "z/OSfi", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [396.6561584472656, 557.1552124023438, 420.6365966796875, 566.7672119140625], "page": 38, "span": [0, 4], "__ref_s3_data": null}], "text": "z16\u2122", "type": "paragraph", "name": "Text", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/28"}, {"prov": [{"bbox": [287.2200012207031, 741.251953125, 415.20721435546875, 763.4519653320312], "page": 40, "span": [0, 10], "__ref_s3_data": null}], "text": "Back cover", "type": "paragraph", "name": "Text", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/29"}, {"prov": [{"bbox": [495.9403076171875, 670.4779663085938, 564.1664428710938, 680.78173828125], "page": 40, "span": [0, 12], "__ref_s3_data": null}], "text": "REDP-5695-00", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [482.8758239746094, 649.478271484375, 564.6472778320312, 659.2940063476562], "page": 40, "span": [0, 15], "__ref_s3_data": null}], "text": "ISBN 0738461067", "type": "paragraph", "name": "Text", "font": null}, {"prov": [{"bbox": [497.23223876953125, 89.81710052490234, 564.1887817382812, 99.3863525390625], "page": 40, "span": [0, 17], "__ref_s3_data": null}], "text": "Printed in U.S.A.", "type": "page-footer", "name": "Page-footer", "font": null}, {"name": "Picture", "type": "figure", "$ref": "#/figures/30"}], "figures": [{"prov": [{"bbox": [408.87640380859375, 713.802490234375, 569.0722045898438, 757.6637573242188], "page": 1, "span": [0, 0], "__ref_s3_data": null}], "text": "", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [46.60354995727539, 26.44677734375, 127.91421508789062, 59.40655517578125], "page": 1, "span": [0, 0], "__ref_s3_data": null}], "text": "", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [467.1597595214844, 23.5855712890625, 571.5428466796875, 51.5799560546875], "page": 1, "span": [0, 0], "__ref_s3_data": null}], "text": "", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [32.92374801635742, 555.397705078125, 239.95321655273438, 721.5759887695312], "page": 3, "span": [0, 0], "__ref_s3_data": null}], "text": "", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [136.13192749023438, 345.68524169921875, 435.85162353515625, 714.4678955078125], "page": 5, "span": [0, 16], "__ref_s3_data": null}], "text": "Figure 1 IBM z16", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [63.98974609375, 416.2847595214844, 547.5855102539062, 685.0554809570312], "page": 6, "span": [0, 33], "__ref_s3_data": null}], "text": "Figure 2 IBM Z: Processor roadmap", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [65.5059585571289, 441.6483154296875, 547.4702758789062, 712.4261474609375], "page": 7, "span": [0, 52], "__ref_s3_data": null}], "text": "Figure 3 System design of IBM z16 LinuxONE Emperor 4", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [65.81348419189453, 430.7156677246094, 547.791259765625, 683.7611694335938], "page": 8, "span": [0, 78], "__ref_s3_data": null}], "text": "Figure 4 IBM z16 on-chip AI Accelerator integration with IBM Z processor cores", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [63.88162612915039, 492.099609375, 547.2862548828125, 714.5304565429688], "page": 9, "span": [0, 29], "__ref_s3_data": null}], "text": "Figure 5 Seamless integration", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [63.72787094116211, 311.20458984375, 547.3121948242188, 612.8547973632812], "page": 10, "span": [0, 48], "__ref_s3_data": null}], "text": "Figure 6 Solution overview of Cloud Pak for Data", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [63.857383728027344, 441.6200256347656, 547.4847412109375, 714.5877685546875], "page": 13, "span": [0, 104], "__ref_s3_data": null}], "text": "Figure 7 Developing, training, and deploying an AI model on Cloud Pak for Data on IBM Z and IBM LinuxONE", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [63.77848434448242, 462.53985595703125, 546.8060302734375, 660.74267578125], "page": 16, "span": [0, 35], "__ref_s3_data": null}], "text": "Figure 8 Typical AI model lifecycle", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [64.32939147949219, 501.2001647949219, 547.455810546875, 714.298583984375], "page": 18, "span": [0, 54], "__ref_s3_data": null}], "text": "Figure 9 Remote AI governance solution end-to-end flow", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [63.88758850097656, 125.8853759765625, 547.6134033203125, 423.3321228027344], "page": 18, "span": [0, 49], "__ref_s3_data": null}], "text": "Figure 10 Creating a model entry in IBM OpenPages", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [63.96794891357422, 379.33050537109375, 547.4464111328125, 672.72021484375], "page": 19, "span": [0, 53], "__ref_s3_data": null}], "text": "Figure 11 Training an AI model by using Watson Studio", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [64.33274841308594, 68.50238037109375, 547.9761962890625, 318.6211242675781], "page": 19, "span": [0, 66], "__ref_s3_data": null}], "text": "Figure 12 Deploying an AI model by using WML on Cloud Pak for Data", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [136.07406616210938, 407.510986328125, 533.5489501953125, 661.1522216796875], "page": 20, "span": [0, 24], "__ref_s3_data": null}], "text": "Figure 13 External model", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [64.0412368774414, 84.3487548828125, 547.8551635742188, 346.5400390625], "page": 20, "span": [0, 28], "__ref_s3_data": null}], "text": "Figure 14 Tracking the model", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [64.23773956298828, 380.84503173828125, 547.417236328125, 684.8828125], "page": 21, "span": [0, 91], "__ref_s3_data": null}], "text": "Figure 15 Model facts that are tracked and synchronized to IBM OpenPages on an x86 platform", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [63.799659729003906, 410.76275634765625, 547.7122192382812, 684.6780395507812], "page": 22, "span": [0, 55], "__ref_s3_data": null}], "text": "Figure 16 Creating an external model on an x86 platform", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [63.62750244140625, 441.46466064453125, 547.6529541015625, 714.3441772460938], "page": 23, "span": [0, 76], "__ref_s3_data": null}], "text": "Figure 17 IBM OpenScale dashboard that is used to monitor the external model", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [64.15648651123047, 70.03009033203125, 547.9522705078125, 344.8665466308594], "page": 23, "span": [0, 103], "__ref_s3_data": null}], "text": "Figure 18 Final result: End-to-end AI governance when using IBM OpenPages, AI Factsheets, and OpenScale", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [64.85054016113281, 451.7115173339844, 545.2755126953125, 714.330810546875], "page": 25, "span": [0, 82], "__ref_s3_data": null}], "text": "Figure 19 Architecture for credit risk prediction by using an ML AI model on IBM Z", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [65.03783416748047, 432.6387634277344, 547.6334838867188, 697.0615234375], "page": 26, "span": [0, 70], "__ref_s3_data": null}], "text": "Figure 20 Architecture for credit risk prediction by using DL on IBM Z", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [64.01190948486328, 480.45562744140625, 542.310546875, 684.6367797851562], "page": 28, "span": [0, 97], "__ref_s3_data": null}], "text": "Figure 21 Clearing and settlement use case for financial transactions by using Cloud Pak for Data", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [63.826560974121094, 173.48193359375, 539.9069213867188, 410.2887268066406], "page": 29, "span": [0, 43], "__ref_s3_data": null}], "text": "Figure 22 Inferencing architecture on IBM Z", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [63.6925048828125, 352.7718200683594, 547.7992553710938, 714.6727294921875], "page": 31, "span": [0, 37], "__ref_s3_data": null}], "text": "Figure 23 In-depth architectural view", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [64.15681457519531, 381.83746337890625, 542.2742309570312, 623.4725341796875], "page": 33, "span": [0, 53], "__ref_s3_data": null}], "text": "Figure 24 Architecture for AI-powered video analytics", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [42.63053512573242, 15.95574951171875, 68.95333862304688, 42.7210693359375], "page": 40, "span": [0, 0], "__ref_s3_data": null}], "text": "", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [475.4501647949219, 712.610595703125, 565.7938232421875, 747.644287109375], "page": 40, "span": [0, 0], "__ref_s3_data": null}], "text": "", "type": "figure", "bounding-box": null}, {"prov": [{"bbox": [433.6951904296875, 19.161434173583984, 572.0396728515625, 55.36602783203125], "page": 40, "span": [0, 0], "__ref_s3_data": null}], "text": "", "type": "figure", "bounding-box": null}], "tables": [], "bitmaps": null, "equations": [], "footnotes": [], "page-dimensions": [{"height": 792.0, "page": 1, "width": 612.0}, {"height": 792.0, "page": 2, "width": 612.0}, {"height": 792.0, "page": 3, "width": 612.0}, {"height": 792.0, "page": 4, "width": 612.0}, {"height": 792.0, "page": 5, "width": 612.0}, {"height": 792.0, "page": 6, "width": 612.0}, {"height": 792.0, "page": 7, "width": 612.0}, {"height": 792.0, "page": 8, "width": 612.0}, {"height": 792.0, "page": 9, "width": 612.0}, {"height": 792.0, "page": 10, "width": 612.0}, {"height": 792.0, "page": 11, "width": 612.0}, {"height": 792.0, "page": 12, "width": 612.0}, {"height": 792.0, "page": 13, "width": 612.0}, {"height": 792.0, "page": 14, "width": 612.0}, {"height": 792.0, "page": 15, "width": 612.0}, {"height": 792.0, "page": 16, "width": 612.0}, {"height": 792.0, "page": 17, "width": 612.0}, {"height": 792.0, "page": 18, "width": 612.0}, {"height": 792.0, "page": 19, "width": 612.0}, {"height": 792.0, "page": 20, "width": 612.0}, {"height": 792.0, "page": 21, "width": 612.0}, {"height": 792.0, "page": 22, "width": 612.0}, {"height": 792.0, "page": 23, "width": 612.0}, {"height": 792.0, "page": 24, "width": 612.0}, {"height": 792.0, "page": 25, "width": 612.0}, {"height": 792.0, "page": 26, "width": 612.0}, {"height": 792.0, "page": 27, "width": 612.0}, {"height": 792.0, "page": 28, "width": 612.0}, {"height": 792.0, "page": 29, "width": 612.0}, {"height": 792.0, "page": 30, "width": 612.0}, {"height": 792.0, "page": 31, "width": 612.0}, {"height": 792.0, "page": 32, "width": 612.0}, {"height": 792.0, "page": 33, "width": 612.0}, {"height": 792.0, "page": 34, "width": 612.0}, {"height": 792.0, "page": 35, "width": 612.0}, {"height": 792.0, "page": 36, "width": 612.0}, {"height": 792.0, "page": 37, "width": 612.0}, {"height": 792.0, "page": 38, "width": 612.0}, {"height": 792.0, "page": 39, "width": 612.0}, {"height": 792.0, "page": 40, "width": 612.0}], "page-footers": [], "page-headers": [], "_s3_data": null, "identifiers": null} \ No newline at end of file diff --git a/tests/data/groundtruth/docling_v1/redp5695.md b/tests/data/groundtruth/docling_v1/redp5695.md deleted file mode 100644 index d08cae10..00000000 --- a/tests/data/groundtruth/docling_v1/redp5695.md +++ /dev/null @@ -1,726 +0,0 @@ -Front cover - - - - -## IBM Cloud Pak for Data on IBM Z - -Jasmeet Bhatia - -Ravi Gummadi - -Chandra Shekhar Reddy Potula - -Srirama Sharma - -Data and AI - - - - - - - - - - -## Executive overview - -Most industries are susceptible to fraud, which poses a risk to both businesses and consumers. According to The National Health Care Anti-Fraud Association, health care fraud alone causes the nation around $68 billion annually.$^{1}$ This statistic does not include the numerous other industries where fraudulent activities occur daily. In addition, the growing amount of data that enterprises own makes it difficult for them to detect fraud. Businesses can benefit by using an analytical platform to fully integrate their data with artificial intelligence (AI) technology. - -With IBM Cloud Pakfi for Data on IBM Z, enterprises can modernize their data infrastructure, develop, and deploy machine learning (ML) and AI models, and instantiate highly efficient analytics deployment on IBM LinuxONE. Enterprises can create cutting-edge, intelligent, and interactive applications with embedded AI, colocate data with commercial applications, and use AI to make inferences. - -This IBM Redguide publication presents a high-level overview of IBM Z. It describes IBM Cloud Pak for Data (CP4D) on IBM Z and IBM LinuxONE, the different features that are supported on the platform, and how the associated features can help enterprise customers in building AI and ML models by using core transactional data, which results in decreased latency and increased throughput. - -This publication highlights real-time CP4D on IBM Z use cases. Real-time Clearing and Settlement Transactions, Trustworthy AI and its Role in Day-To-Day Monitoring, and the Prevention of Retail Crimes are use cases that are described in this publication. Using CP4D on IBM Z and LinuxONE, this publication shows how businesses can implement a highly efficient analytics deployment that minimizes latency, cost inefficiencies, and potential security exposures that are connected with data transportation. - -## IBM Z: An overview - -Ever wonder how many transactions a bank processes per day? What about the pace at which these transactions happen? According to an IBMfi report, 44 of 50 of the world's top banks use IBM Z mainframes for these daily transactions.$^{2}$ IBM Z is a platform that is designed for voluminous data, maximum security, real-time transaction analysis, and cost efficiency. - -The most recent platform for IBM Z is IBM z16™. The IBM z16 supports the following features: - -- GLYPH On-chip AI acceleration - -- GLYPH Quantum-safe crypto discovery - -- GLYPH Simplified compliance - -- GLYPH Flexible capacity - -- GLYPH Modernization of applications - -- GLYPH Sustainability - -With these features, enterprises can upgrade applications while preserving secure and resilient data. - -To learn more about these features, see the IBM z16 product page. - -Figure 1 on page 3 shows a picture of the IBM z16 mainframe. - -Figure 1 IBM z16 - - -## IBM z16 and IBM LinuxONE Emperor 4 features - -IBM Z are based on enterprise mainframe technology. Starting with transaction-based workloads and databases, IBM Z has undergone tremendous transformations in its system design for many generations to build servers that cater to Linux-based workloads and security with a cyberresilient system, and support quantum computing and modernization by using a hybrid cloud with a focus on data and AI. - -Figure 2 provides a snapshot of the IBM Z processor roadmap, which depicts the journey of transformation and improvement. - -Figure 2 IBM Z: Processor roadmap - - -The IBM z16 and IBM LinuxONE Emperor 4 are the latest of the IBM Z, and they are developed with a 'built to build' focus to provide a powerful, cyberresilient, open, and secure platform for business with an extra focus on sustainability to help build sustainable data centers. Although the z16 server can host both IBM z/OSfi and Linux workloads, LinuxONE Emperor 4 is built to host Linux only workloads with a focus on consolidation and resiliency. Depending on the workload, consolidation from numerous x86 servers into a LinuxONE Emperor 4 can help reduce energy consumption by 75% and data center floor space by 50%, which helps to achieve the sustainability goals of the organization. - -Figure 3 on page 5 shows a summary of the system design of IBM LinuxONE Emperor 4 with the IBM Telum™ processor. The IBM Telum processor chip is designed to run enterprise applications efficiently where their data resides to embed AI with super low latency. The support for higher bandwidth and I/O rates is supported through FCP Express cards with an endpoint security solution. The memory subsystem supports up to 40 TB of memory. - -Figure 3 System design of IBM z16 LinuxONE Emperor 4 - - -The IBM z16 and IBM LinuxONE Emperor 4 servers are built with 7-nm technology at a 5.2 GHz speed. They consist of four dual-chip modules (DCMs) per central processor complex (CPC) drawer, each of which is built with two 8-core Telum processor chips that has "first in the industry" on-chip acceleration for mid-transaction, real-time AI inferencing, which supports many different use cases, including fraud detection. - -Each core has access to a huge private 32 MB L2 cache where up to 16 MB of the L2 cache of an inactive core can be used as virtual cache (L3 / L4) by neighboring active cores on the chip. This cache helps address translation and access checking by prefetching the same virtual cache into the L2 cache. The virtual cache also includes Neural Network Processing Assist instructions and direct memory access with protection, and per chip GZIP compression. - -Figure 4 provides more information about the features of AI Accelerator integration with the IBM Z processor cores. - -Figure 4 IBM z16 on-chip AI Accelerator integration with IBM Z processor cores - - -The IBM z16 and IBM LinuxONE Emperor 4 server platforms are built with the hardware features that are shown in Figure 4 with addressing data and AI workloads in mind. Regardless of where the ML and deep learning (DL) frameworks are used to build and train data and AI models, the inferencing on existing enterprise application data can happen along currently running enterprise business applications. CP4D 4.6 supports Tensorflow and IBM Snap ML frameworks, which are optimized to use the on-chip AI Accelerator during inferencing. Support for various other frameworks is planned for future releases. - -Figure 5 on page 7 shows the seamless integration of AI into existing enterprises workloads on the IBM z16 while leveraging the underlying hardware capabilities. - -Figure 5 Seamless integration - - -## What is Cloud Pak for Data on IBM Z - -IBM Cloud Pak for Data allows enterprises to simplify, unify, and automate the delivery of data and AI. It categorizes the activities within the journey to AI as four rungs of the AI Ladder: Collect, Organize, Analyze, and Infuse. For more information about each of the AI Ladder rungs, see Become Data Driven with IBM Z Infused Data Fabric , REDP-5680. - -CP4D on IBM Z provides enterprises with a resilient and secure private cloud platform. You can use it to create ML and AI models that may be included into modern intelligent applications. You also can use it to use and construct applications for mission-critical data. With CP4D on IBM Z, enterprises can lower data movement latency, cost inefficiencies, and potential security exposures. Enterprises can safely store and access their most important company data, and leverage their current infrastructure by using cutting-edge hybrid cloud applications. Enterprises can combine their current database applications without any rewrites, which results in reduced cost and complexity. Lastly, by using CP4D on IBM Z, enterprises can update their database infrastructure to benefit from easier management, a quicker time to value, and lower operating expenses. - -Figure 6 shows a solution overview of CP4D. The infrastructure alternatives are shown at the bottom, and they include IBM Z and LinuxONE. They all leverage Red Hat OpenShift. Common Foundational Services come next, which offer clarity throughout the data and AI lifecycle, that is, from user access management to monitoring and service provisioning. A high-level view of the services is shown in the middle section. The services have several different capabilities that span the AI hierarchy. The platform can be expanded, and it offers a seamless user experience for all distinct personas across the AI lifecycle, from data gathering through AI infusion. - -Figure 6 Solution overview of Cloud Pak for Data - - -We highlight the four main pillars that make IBM Z the correct infrastructure for CP4D: - -- GLYPH Performance and Scale - -- GLYPH Embedded Accelerators - -- GLYPH Reliability and Availability - -- GLYPH Security and Governance. - -From a performance perspective, CP4D on IBM Z provides your data and AI with high transaction processing and a powerful infrastructure. From the embedded accelerators perspective, CP4D on IBM Z can investigate each transaction thanks to a cutting-edge DL inference technology even in the most demanding, sensitive, and latency-prone real-time workloads. From a reliability perspective, CP4D on IBM Z provides high availability and resiliency. Lastly from the security perspective, CP4D on IBM Z is suitable for protecting sensitive data and AI models for enterprises in highly regulated industries or those industries that are worried about security. - -## Cloud Pak for Data capabilities on IBM Z and IBM LinuxONE - -With CP4D on IBM Z and IBM LinuxONE, users can develop, train, and deploy AI and ML models. Users can accomplish this task by using the CP4D IBM Watsonfi Studio and IBM Watson Machine Learning (WLM) services. By using these two fundamental services, users can accomplish the following tasks: - -- GLYPH Provision various containerized databases. - -- GLYPH Explore, clean, shape, and alter data by using Data Refinery. - -- GLYPH Use project-specific data that is uploaded, or connect to distant data. - -- GLYPH Create Spark run times and applications. - -- GLYPH Create, build, evaluate, and deploy analytics and ML models with trust and transparency. - -- GLYPH Leverage the AI Integrated Accelerator for TensorFlow 2.7.2 and Snap ML 1.9. - -For more information about the specifics of these capabilities, see Capabilities on Linux on IBM Z and IBM LinuxONE. - -## Open-source ecosystem - -These days, innovation and product development are not limited to closed doors within an organization. In any industry sector, the solutions include a mix of proprietary code addressing the core business solution that is supported or integrated into other software components from open source. In some cases, enterprises business solutions also are built from open-source community offerings. Thus, open-source software becomes an important ingredient in modern-day solution building. - -IBM actively participates in various open-source communities as part of steering boards defining the roadmap of the community, and also in contributing code to make the community a better place for everyone to participate. Red Hat also actively participates in various open-source communities and makes extensive contributions. In open-source communities, although most open-source development happens on x86 / amd64 or the Intel architecture, the same open-source software is used by other architectures, such as IBM Power (ppc64le), IBM Z and IBM LInuxONE (s390x), ARM, and Sparc. So, the availability of an open-source ecosystem on any architecture is key and critical to business. - -On IBM Z and IBM LinuxONE (s390x) architecture, there is a huge open-source support ecosystem that ranges from operating systems such as Linux; application run times; cloud and container services; DevOps and automation; big data; observability; analytics; databases; and storage. The ecosystem on IBM Z and IBM LinuxONE is growing. - -IBM Z and IBM LinuxONE include much open-source software in their ecosystem. You can see the growing list of open-source software for IBM Z and LinuxONE at The Growing Ecosystem of Open-Source Software for IBM Z and LinuxONE. - -IBM Z and IBM LinuxONE are available to various communities to include support for s390x builds as part of their community's continuous integration and continuous delivery (CI/CD). Also, for open-source community developers, infrastructure resources are available on a no-charge basis through the IBM LinuxONE community cloud. - -CP4D includes a mix of open-source and proprietary data and AI runtime databases; open-source run times like Python; open-source data platforms like Anaconda; ML and DL frameworks like Pytorch and Tensorflow; and thousands of reusable Python packages. All of them are available and supported on s390x architecture to provide seamless parity with x86 architecture and a seamless experience for enterprise data scientists, architects, and data and AI solution developers on IBM Z and IBM LinuxONE platforms. - -Anaconda is one of the open-source data platforms that provide Python and R based data science ML frameworks; analytics and data visualization tools; and open-source data science tools and libraries like Conda, XGBoost, and SciKit-Learn. Anaconda runs natively on Linux on IBM Z and IBM LinuxONE, and on IBM z/OS Container Extensions (zcX) on z/OS. For more information, see Announcing Anaconda for Linux on IBM Z and LinuxONE. - -In addition to strong, open-source ecosystem support for application development on Linux and enterprise operating systems, a new generation of IBM Z and IBM LinuxONE servers (IBM z16™) also have strong platform support, and AI acceleration capabilities that can be leveraged by open-source software to perform better on the server infrastructure. For example, the recently released CP4D 4.6 has Tensorflow and IBM SnapML frameworks that leverage the AI accelerators when running on an IBM z16 server. - -So, to summarize, there is a huge, growing data and AI open source ecosystem that is supported and optimized on IBM Z and IBM LinuxONE servers. - -## Why AI on IBM Z - -Data and AI playing a major role in the modernization story to enable the digital transformation journey of every organization. Many organizations recognize the business value of infusing AI into their infrastructure. CP4D provides the cloud-native solution to put your data to work. With CP4D, all your data users can collaborate from a single, unified interface that supports many services that work together, including collecting data, organizing the data, analyzing the data, and infusing AI. - -Traditional ML models' power most of today's ML applications in business and among AI practitioners. CP4D supports traditional ML frameworks for training and inferencing, such as Scikit-learn, Snap ML, and XGBoost. Snap ML is a library that provides high-speed training and inferencing of ML models that leverage the AI accelerator while running on an IBM z16 (Linux on IBM Z). CP4D supports DL frameworks such as TensorFlow and PyTorch. TensorFlow is a DL framework that leverages the AI accelerator while running on an IBM z16 (Linux on IBM Z). - -Figure 7 on page 11 provides an overview of the components that are supported on CP4D on IBM Z. You can leverage Watson Studio for model building, training, and validation, and WML for deployment of the model. Eventually, applications can use the AI inference endpoint to score the model. - -Figure 7 Developing, training, and deploying an AI model on Cloud Pak for Data on IBM Z and IBM LinuxONE - - -In summary, here are some of the reasons why you should choose AI on IBM Z: - -- GLYPH World-class AI inference platform for enterprise workloads: - -- -Embedded accelerators: A centralized on-chip AI accelerator that is shared by all cores. - -- -Industry standard AI ecosystem: Many industry open-source data science frameworks are available on the platform. - -- -Seamlessly integrate AI into existing enterprise workload stacks: Train anywhere, and then deploy on IBM Z. - -- GLYPH Security: Encrypted memory, and improved trusted execution environments. - -- GLYPH Sustainability: Reduce your energy consumption with real-time monitoring tools about the energy consumption of the system. - -## AI use cases - -With billions of transactions per day in many of today's industries, it is key to get real-time insights about what is happening in your data. AI on the IBM Z stack understands these situations, and it delivers in-transaction inference in real time and at scale. - -Core banking solutions running on IBM Z that are involved in processing inbound transactions need real-time fraud detection to prevent fraud. Other types of possible use cases might be credit risk analysis, anti-money laundering, loan approval, fraud detection in payments, and instant payments. - -For insurance companies, a pressing use case would be claims processing. For markets and trading, clearing and settlement use cases are paramount. - -For the health care industry, medical image processing (such as MRIs and x-rays), skin cancer detection, and patient monitoring activities such as infant motion analysis, is important. - -For the airline industry, processes such as air traffic management, flight management systems, and flight maintenance predictions are use cases that are ideal candidates for using AI on IBM Z. - -In the following sections, we describe the following use cases: - -- GLYPH "Use case 1: Responsible AI augmented with risk and regulatory compliance" on page 12 AI model lifecycle governance, risk management, and regulatory compliance are key to the success of the enterprises. It is imperative to adopt a typical AI model lifecycle to protect new end-to-end risks. - -- GLYPH "Use case 2: Credit default risk assessment" on page 22 - -- Core banking solutions running on IBM Z that are involved in processing inbound transactions need real-time fraud detection to prevent fraud. Other types of possible use cases might be credit risk analysis, anti-money laundering, loan approval, fraud detection in payments, and instant payments. - -- GLYPH "Use case 3: Clearing and settlement" on page 25 - -- The use of AI can help to predict which trades or transactions have high risk exposures, and propose solutions for a more efficient settlement process. - -- GLYPH "Use case 4: Remaining Useful Life of an aircraft engine" on page 27 - -- We describe how AI can help to avoid unplanned aircraft downtime by determining the remaining time or cycles that an aircraft engine is likely to operate before failure. - -- GLYPH "Use case 5: AI-powered video analytics on an infant's motions for health prediction" on page 30 - -- In this section, we describe how AI can predict an infant's health conditions by monitoring real-time body movements. - -## Use case 1: Responsible AI augmented with risk and regulatory compliance - -Advancement in AI is changing the world, and organizations must adopt AI to embrace new challenges daily. Many enterprises see tremendous value in adopting AI and ML technologies while establishing organization trust in the models, underlying data, and the process to be followed. An AI model lifecycle can be a daunting task. - -How mature is your AI governance? In this section, we provide a use case demonstrating the trustworthiness of AI and its importance in daily monitoring. - -## Industry challenges - -Here are the three main reasons why organizations struggle with the adoption of AI: - -- GLYPH Scaling with growing regulations - -- GLYPH Lack of confidence in operationalized AI (making responsible AI) - -- GLYPH Challenges around managing the risk throughout the entire AI workflow - -## Scaling with growing regulations - -Laws and regulations in the data and AI space are accelerating, and many countries are proposing strict AI policies. Countries are monitoring adherence of these policies by the enterprises and imposing fines for any violations. Responding to these regulations are challenging global organizations where multiple regulations apply. For enterprises, it is important to adopt AI policies when there is change, and to validate explainable models to protect against discrimination. - -## Responsible AI - -Responsible AI protects against loss of data privacy, and reduced customer loyalty and trust. A data scientist cannot maximize accuracy and model performance above all other concerns. Practicing responsible AI is a best practice, and you must establish protection and validation to ensure that any models that are placed into production are fair and explainable. - -## Risks throughout the entire AI workflow - -Organizations need to mitigate risk of the following items: - -- GLYPH Deciding not to use certain technologies or practices - -- GLYPH Using personal information when needed and with a user's consent - -- GLYPH Ensuring automated decisions are free from bias - -- GLYPH Customer confidence by providing explanations for business decisions - -- GLYPH Fraud to the organization and to customer's accounts - -- GLYPH Delays in putting models into production - -In fact, in a recent survey, these concerns were echoed by real AI adopters when asked what aspects of trust are most important to them. Although explaining how AI decides is the primary concern, all of these concerns are important. - -The key point here is that risk exists throughout the entire AI lifecycle starting with the underlying data and the business justification behind the "why" of the project and continuing into production. Without a formalized process, there is no way to mitigate these risks to unlock the scale that is required to make automated decisions profitable. With these decisions, the business can operate proactively instead of reactively. - -For example, a business can start testing a model before production for fairness metrics. For this task, enterprises need an end-to-end workflow with approvals to mitigate these risks and increase the scale of AI investments, as shown in Figure 8, which presents a typical AI model lifecycle in an enterprise. - -Figure 8 Typical AI model lifecycle - - -Due to regulations, more stakeholders adopt the typical AI model lifecycle to protect their brand from new end-to-end risks. To ensure various aspects of both regulatory compliance and security, the personas that must be involved include the chief financial officer (CFO), chief marketing officer (CMO), chief data officer (CDO), HR, and chief regulatory officer (CRO), along with the data engineers, data scientists, and business analysts, who build AI workflows. - -## IBM governance solution for IBM Z - -AI model lifecycle governance, risk management, and regulatory compliance are key to the success of enterprises. - -AI governance is a comprehensive framework that uses a set of automated processes, methodologies, and tools to manage an organization's use of AI. Consistent principles guiding the design, development, deployment, and monitoring of models are critical in driving responsible and trustworthy AI. AI governance includes processes that trace and record the origin of data, models (including associated metadata), and pipelines for audits. The details of entry should include the techniques that trained each model, the hyperparameters that were used, and the metrics from testing phases. These details provide increased transparency into the model's behavior throughout the lifecycle, the data that was influential in its development, and the possible risks. - -In a world where trust, transparency and explainable AI matters, every organization wants compliance along with the comfort of understanding how analytic insights and decisions are made. The following sections describe some of the principles and organizational requirements for AI governance. - -## Lifecycle governance - -Lifecycle governance helps you manage your business information throughout its lifecycle, that is, from creation to deletion. IBM AI governance addresses the problems that challenge records managements: - -- GLYPH Monitor, catalog, and govern AI models from anywhere throughout the AI lifecycle. - -- GLYPH Automate the capture of model metadata for report generation. - -- GLYPH Drive transparent and explainable AI at scale. - -- GLYPH Increase accuracy of predictions by identifying how AI is used and where it is lagging. - -## Risk management - -Risk management is used in IBM AI governance to identify, manage, monitor, and report on risk and compliance initiatives at scale: - -- GLYPH Automate facts and workflow management to comply with business standards. - -- GLYPH Use dynamic dashboards for clear and concise customizable results. - -- GLYPH Enhanced collaboration across multiple regions and geographies. - -## Regulatory compliance - -Regulatory compliance is a set of rules that organizations must follow to protect sensitive information and ensure human safety. Any business that works with digital assets, consumer data, health regulations, employee safety, and private communications is subject to regulatory compliance.$^{3}$ The IBM AI governance solution for IBM Z includes the following tasks: - -- GLYPH Help adhere to external AI regulations for audit and compliance. - -- GLYPH Convert external AI regulations into policies for automatic enforcement. - -- GLYPH Use dynamic dashboards for compliance status across policies and regulations. - -Enterprises can develop AI models and deploy them by using IBM Watson Studio or WML on CP4D on Red Hat OpenShift on a virtual machine that is based on IBM z/VM or Red Hat Enterprise Linux KVM on IBM Z. AI governance on IBM LinuxONE is supported in the following two ways: - -- GLYPH Monitor the AI models with Watson OpenScale on CP4D on Red Hat OpenShift on a virtual machine on IBM Z. - -- GLYPH Enterprises can develop AI models by creating and training models by using Watson Studio and development tools such as Jupyter Notebook or JupyterLab, and then deploying the model onto WML on CP4D on Red Hat OpenShift on a virtual machine on IBM Z. Then, these enterprises can achieve end-end AI governance by running AI Factsheets, IBM Watson OpenScale, and IBM Watson OpenPagesfi on CP4D on x86. - -Figure 9 on page 16 shows the end-to-end flow for a remote AI governance solution. - -Figure 9 Remote AI governance solution end-to-end flow - - -To achieve end-to-end AI governance, complete the following steps: - -- 1. Create a model entry in IBM OpenPages by using CP4D on a x86 platform, as shown in Figure 10. - -Figure 10 Creating a model entry in IBM OpenPages - - -- 2. Train a model by using Watson Studio and by using development tools such as Jupyter Notebook or JupyterLab on CP4D on Red Hat OpenShift on a virtual machine on IBM Z, as shown in Figure 11. - -Figure 11 Training an AI model by using Watson Studio - - -- 3. Deploy the model by using WML on CP4D on Red Hat OpenShift on a virtual machine on IBM Z, as shown in Figure 12. - -Figure 12 Deploying an AI model by using WML on Cloud Pak for Data - - -- 4. Track the external model lifecycle by browsing through the Catalogs/Platform assets catalog by using AI Factsheets and OpenPages while using CP4D on an x86 platform, as shown in Figure 13. The external model (deployed on CP4D on Red Hat OpenShift on a virtual machine on IBM Z) is saved as a platform asset catalog on the x86 platform. - -Figure 13 External model - - -You can track the model through each stage of the model lifecycle, as shown in Figure 14, by using AI Factsheets and OpenPages. - -Figure 14 Tracking the model - - -You can see that the model facts are tracked and synchronized to IBM OpenPages for risk management, as shown in Figure 15. - -Figure 15 Model facts that are tracked and synchronized to IBM OpenPages on an x86 platform - - -- 5. Create an external model by using IBM OpenScale on the x86 platform, as shown in Figure 16. - -Figure 16 Creating an external model on an x86 platform - - -IBM OpenScale provides a comprehensive dashboard that tracks fairness, quality monitoring, drift, and explainability of a model. Fairness determines whether your model produces biased outcomes. Quality determines how well your model predicts outcomes. Drift is the degradation of predictive performance over time. A sample is shown in Figure 17 on page 21. - -Figure 17 IBM OpenScale dashboard that is used to monitor the external model - - -You developed and deployed the AI model by using Watson Studio, WML on CP4D on Red Hat OpenShift on a virtual machine on IBM Z, and end-to-end AI model governance by leveraging AI Factsheets, OpenScale, and OpenPages on CP4D on a x86 platform. Figure 18 shows end-to-end AI governance when using IBM OpenPages, AI Factsheets, and OpenScale. - -Figure 18 Final result: End-to-end AI governance when using IBM OpenPages, AI Factsheets, and OpenScale - - -## Use case 2: Credit default risk assessment - -In today's world, many individuals or businesses seeking loans to meet their growing business needs often look to financial institutions. Financial institutions can offer loans to individuals or businesses and charge interest based on the current market situations. - -## Industry challenges - -Financial institutions must make an accurate decision about whether to sanction a loan or not, and judging the likelihood of default is the difference between a successful and unsuccessful loan portfolio. In a traditional scenario, an experienced banker can judge someone's likelihood of default, but that is not an efficient method for judgment as a business grows. - -## Predictions of credit default risk assessment - -In the modern world, growing business institutions can no longer rely on only experienced bankers to decide whether to sanction a loan knowing that there is a probability that the borrower might default on their loans. A better choice is to rely on technological advancements that can help with reasoning based on facts, such as leveraging credit risk modeling techniques to process the historical data of past borrowers to understand their credit behavior and make a more informed decision about whether to lend money, how much money, and decide on the tenure to close the loan. - -Financial institutions can leverage AI solutions by using ML techniques to predict the credit risk. Applying AI to credit risk modeling techniques can benefit institutions in decision-making, and thus can help better manage the exposure to credit risk. - -Figure 19 on page 23 shows a sample architecture about how to design and develop an AI model for credit risk assessment on IBM Z. An IBM WebSpherefi Application Server is used for handling in-bound transactions, and CP4D is used for AI model lifecycle management that includes building, training, and deploying the model. - -Figure 19 Architecture for credit risk prediction by using an ML AI model on IBM Z - - -A data scientist can leverage Watson Studio to develop and train an AI model and WML to deploy and score the model. In this sample architecture, the WML Python run time leverages the ML framework, IBM Snap Machine Learning (Snap ML), for scoring, can leverage an integrated AI accelerator at the time of model import. - -Then, the banking loan approval team can send a loan applicant request to the IBM WebSphere Application Server, which can make a request to the AI inference endpoint. The AI inference engine scores the transaction and sends the result back to the loan approval team. Based on the results, the approval team can decide on whether to approve a loan or not, and also decide how much they can lend, timelines, and other factors. - -The transaction system that is shown in Figure 19 uses IBM WebSphere Liberty as an application server, but you also can use an IBM Open Libertyfi application server or any application server that can send RESTful API communications. - -Models are frequently developed and tested in many platforms and languages, such as Python, Scala, R, and Go. Models can leverage ML frameworks like scikit-learn, Snap ML, or XGBoost, or DL frameworks like TensorFlow or PyTorch. Training a model can be done on any platform if you have enough computing power for complex models, but moving that model into production requires careful testing to ensure that transactions are not delayed, especially if you plan to run the model within a transaction. - -We showed how IBM Z enable customers to use AI frameworks to detect credit risk. Now, we look at how you can leverage CP4D and TensorFlow on IBM Z to detect the credit risk. - -Figure 20 shows an architecture for predicting credit risk by using DL on IBM Z. - -Figure 20 Architecture for credit risk prediction by using DL on IBM Z - - -Data scientists can start creating and training a DL AI model by using a Jupyter Notebook instance and Watson Studio. Then, they can deploy the model by using WML on CP4D running on IBM Z, which provides an endpoint. Other applications, including the IBM WebSphere server, can produce credit risk results by using the model's endpoint. - -In summary, here are some considerations for developing real-time AI models, such as credit risk assessment: - -- GLYPH A preference for in-platform run times of the model, such as faster execution results. - -- GLYPH Less overhead in the end-to-end flows might improve scoring time. - -- GLYPH If you are using models that are not deployable, CP4D offers a custom Python run time to build your own stack if they are not available on the platform. - -- GLYPH AI inferencing based on ML or DL models can increase the accuracy of better credit risk assessment. - -- GLYPH Using IBM z16 and on-chip AI acceleration with the Telum chip that is embedded with regular Integrated Facility for Linux (IFLs) provides an execution speed for your transactions that cannot be achieved by other means. - -## Use case 3: Clearing and settlement - -Clearing and settlements involve banks or financial institutions sending and receiving wire transfers by using secure interbank payments networks that can clear or settle numerous transactions. When an individual or business entity initiates a wire transfer, clearing begins the fund delivery process. Banks can begin the settlement phase either immediately after clearing takes place or later, mostly at the end of the business day. - -## Industry challenge - -Banks and financial institutions must deal with high-risk transactions that can lead to loss. Moreover, these transactions can lead to regulatory violations and extra compliance costs. - -## Clearing and settlement solution - -Use AI to predict which trades or transactions have high risk exposures, and propose solutions for a more efficient settlement process. The expedited remediation of questionable transactions can prevent costly consequences, regulatory violations, and negative business impacts. - -In financial institutions, finding which financial transactions are legitimate and which transactions are fraudulent is of paramount importance. In this section, we go through a use case where we use AI to predict which trades or transactions have high risk exposures, and propose solutions for a more efficient settlement process. The expedited remediation of questionable transactions can prevent costly consequences, regulatory violations, and negative business impacts to financial institutions. - -The goal is to predict in real time whether the transaction being processed might be a fraudulent transaction or not. To achieve this goal, we build an ML model that can do this prediction for the financial institution. Because there would be many transactions being processed at any point by the financial institution, it is important to perform this prediction of fraudulent transactions in near-real time in a few milliseconds. - -One possible solution is to build and train a TensorFlow based DL model that learns from the historical data and predicts the fraudulent transactions. CP4D on IBM Z and IBM LinuxONE is a suitable product where this task can be achieved and the model deployed, and coming up with a serving endpoint. - -Figure 21 provides a high-level diagram of a clearing and settlement use case for financial transactions that uses CP4D on IBM Z and IBM LinuxONE. - -Figure 21 Clearing and settlement use case for financial transactions by using Cloud Pak for Data - - -Here are the steps of the high-level process flow: - -- 1. Create a connection to a database (for example, an IBM Db2fi database) where the historical data will be used for ML model building. - -- 2. Read the data from the database and prepare the data for AI by using the Data Refinery tool in CP4D. - -- 3. A Jupyter Notebook or JupyterLab IDE that is provided by the Watson Studio component in CP4D helps us build and train the AI model. The trained model can be saved into a WML repository. - -- 4. Deploy the saved model into a deployment space for batch deployment. - -- 5. Create a batch deployment by using any of these interfaces: - -- a. Watson Studio user interface from an Analytics deployment space. - -- b. WML Python client. - -- c. WML REST APIs. - -- 6. A hardware configuration can be chosen for the deployment. - -- 7. A batch deployment processes input data from a file, data connection, or connected data in a storage bucket, and writes the output to a selected destination. - -- 8. One way to run batch deployment to predict or score is to create and run a batch deployment job. - -- 9. Provide an input data type: - -- a. Inline data for entering a JSON format payload. - -- b. Select Data asset , click Select data source , and then specify your asset. - -- 10.The output data type can be a new output file or a connected data asset. - -- 11.A Kubernetes admin can change the maximum number of concurrent batch jobs that can be run. - -- 12.Get the deployment endpoint URL. For more information, see Getting the deployment endpoint URL. - -## Summary - -With this use case, we attempted to demonstrate how to predict, in real time, whether the transaction that is being processed might be a fraudulent transaction or not. By using the method, you have the following advantages: - -- GLYPH No Impact to SLAs and the batch process window. - -- GLYPH Proactively stop losses, and lower operational, regulatory, and compliance costs. - -- GLYPH The solution is using a DL framework like TensorFlow for high-performing, low latency scoring. - -## Use case 4: Remaining Useful Life of an aircraft engine - -In this use case, we describe how an airline can deploy an AI model for inferencing by using IBMfi zSystems. - -Remaining Useful Life (RUL) is the remaining time or cycles that an aircraft engine is likely to operate without any failure. In this case, it is the equivalent of the number of flights remaining for the engine after the last flight. By estimating RUL, the operator can decide on the next maintenance schedule and avoid unplanned downtime. - -Figure 22 provides an overview of the inferencing architecture for the RUL of an aircraft engine when using IBM Z. - -Figure 22 Inferencing architecture on IBM Z - - -Because we are looking into data-driven model development, the data set of our target is the run-to-failure data of the engine. We are looking into a supervised learning problem, and we use regression techniques to learn from the data. DL techniques such as Long Short-Term Memory (LSTM) or Gated Recurrent Units (GRU) are our choice because we are looking into a time series data set. TensorFlow or PyTorch frameworks are leveraged to create models. AI governance monitors the data and model drift to maintain the model quality throughout the model's life. - -Open-source data from NASA was used to build the AI model, which then was deployed on CP4D. CP4D enables the data-scientist's journey from modeling to deployment in a seamless process. Data engineers leverage Db2 to host the data set, which includes the training, testing, and validation of a data set. Since data is hosted on Db2, you can expect low latency while retrieving the data and serve data security needs because Db2 is hosted on the IBM Z platform. Data is fetched by the data refinery to do the necessary pre-processing and data imputations. You can use the programming languages Golang or C++ for real-time predictions, depending on customer needs. For more information about this topic, see "Use case 3: Clearing and settlement" on page 25. - -Model building is done on Watson Studio, leveraging the high-performance computing hardware on IBM Z. You can train the model anywhere (on your own hardware or the cloud) and bring the model directly into CP4D, which provides data scientists with the flexibility of implementation choices. - -We used LSTM to build the AI model and used the training data. The model was continuously evaluated to model convergence. The final model is tested with the test data, which is never exposed at the time of training to make sure that the model works. - -This model is deployed on WML on CP4D and runs on IBM Z. If required, the trained model can be converted to the Open Neural Network Exchange (ONNX) format before deployment. Based on project requirements, IBM Z supports high-throughput, low latency inference requirements by leveraging an AI accelerator. - -For decision-making about an aircraft engine's life, it is important to be able to explain the model predictions from end to end. This explainability may be global or local. Global explainability enables decision-makers to evaluate the trained model in general from the subject matter expert (SME) point of view. Local explainability enables the operator to validate the reasons behind the present inference and relate it to the past data points, which are an indicative cause of the prediction. - -The AI governance components such as IBM OpenScale on CP4D support explainability and manages the drifts in data and concept. OpenPages and AI FactSheet together can alert the stakeholders about important events through a dashboard and allow course correction at any point. - -Client-side applications can invoke a REST apiserver that handles some preprocessing of an incoming request before initiating the inference pipeline. Efficiencies might be needed in real-time applications, and inference response time can be reduced by adopting low-level programming while components are communicating. - -Figure 23 on page 29 provides a more in-depth view of the architecture of an AI-based predictive maintenance application. - -Figure 23 In-depth architectural view - - -In summary, consider the following points while developing an AI-based predictive maintenance application: - -- GLYPH CP4D offers a Python run time to build a custom solution stack, but also supports different components like Watson Studio, WML, Db2, Data Refinery, OpenScale, AI Factsheets, and OpenPages. - -- GLYPH The trustworthiness of the predicted output is important for critical use cases. - -- GLYPH IBM Z provides high data security and low latency requirements at scale for the critical applications. - -- GLYPH A data scientist can choose to train the model and deploy it on CP4D seamlessly with the latest tech stack that is available. - -- GLYPH The AIOps and MLOps supported by CP4D to track AI model and data lifecycle throughout the application lifecycle. - -## Use case 5: AI-powered video analytics on an infant's motions for health prediction - -Each year, approximately 5 million newborns worldwide are suffering from a neuro-developmental disorder. Due to the lack of early diagnoses and intervention, many infants are disabled and abandoned, especially in countries with limited numbers of pediatricians with extensive experience in neuro-developmental disorders. This situation is a conundrum that plagues many families around the world. - -Infant motion analysis plays critical importance to understanding and comprehending healthy childhood development. In infants, monitoring their poses provides information about their health that can lead to a better prediction of early developmental risk assessment and diagnosis. - -Adults use different techniques and methods to express their feelings (like sick, happy, stressed, or hungry), but this case is usually different for infants who cannot express their feelings. Based on the baby movements, AI can predict their expression or health. - -In this use case, we examine how AI-powered video analytics can assist new parents and hospitals by addressing pose-based real-time body movements of the infants (such as arching back, head banging, kicking legs, rubbing eyes, stretching, and sucking fingers). During the initial months of a baby's life, spontaneous movements might indicate later developmental disorders, such as cerebral palsy, Rett syndrome, and autism spectrum disorders. - -## Industry challenges - -There are video surveillance systems that are installed for monitoring an infant's movement in many hospitals or homes so that any problem can be witnessed and potentially even stopped before they take place. These systems require much manual work to monitor the real-stream videos and intervene when a problem is detected. - -There is a certain amount of trust that you must place on the person who monitors a surveillance system to ensure that the job is being done effectively and efficiently, and that the surveillance system is being vigilantly watched. Because of the dependency on these manual efforts, you need something "smart" that monitors constantly the surveillance system and detect problems effectively. - -AI is shaping the controls of surveillance that can map and track occurrences with self-learning abilities, AI can improve on human operations and analyze video footage in real time to alert the hospitals or parents if any anomalies are identified. - -Video processing a stream of data from surveillance systems and then performing advance analytics and detecting anomalies quickly is a significant challenge in the industry. - -## Infant motion analytics in real time - -AI is the current "market trend evolution" in video analytics and advancing the decision-making capabilities of the human mind. DL-based computer vision AI techniques are being widely adopted by various industries to solve real-time problems. These techniques improve the detection and prediction accuracy without increasing the hardware cost exponentially. For users, AI greatly reduces the workload of the monitoring staff and provides benefits by detecting unusual incidents and solving many video forensic problems. - -CP4D was used to build and deploy the AI-powered video analytics on infant's motion for health prediction use case on IBM Z. IBM Z with AI accelerator enables faster inference for detecting face and body movements and performing angle analytics in real time. - -Figure 24 shows an architectural diagram about how to design and develop an AI model for real-time body pose detection on IBM Z. A deep convolutional neural network architecture was trained on the task of infant pose estimation on the custom data set by leveraging IBM Cloud Pak for Data. - -Figure 24 Architecture for AI-powered video analytics - - -Live camera feeds or recorded videos of an infant's movement are the inputs for a pose detection model. This video streaming data was stored in IBM Cloudfi Object Storage for image processing. Video data must be transformed into frames so that the infant's body poses can be detected. These post-estimation components of the pipeline predict the location of all 17-person key points with 3 degrees of freedom each (x, y location and visibility) plus two virtual alignment key points. This approach also embraces a compute-intensive heat map prediction of infant body posture. - -When changes in body posture or movement happen, analytics can be performed, and a threshold can be set for the angle of the body and posture movements. An analysis can be performed on movement that is based on that threshold to help to predict an infant's health index in the output video stream by leveraging the IBM z16 on-chip AI acceleration, which provides an execution speed in real time on an edge device, which cannot be achieved by other means. - -We can leverage the following AI technology stack for this use case: - -- GLYPH Convolutional neural network: Build an artificial neural network model on video streaming and images. - -- GLYPH TensorFlow: A DL back-end framework that is based on TensorFlow. - -- GLYPH Mediapipe: A library that helps with video streaming processing and prediction of human pose estimation. - -- GLYPH OpenCV: A real-time computer vision library that helps perform image processing. - -WML was used for deployment of the pose detection model and generated notifications to users with web and mobile applications, and it integrates with Fitbit for push notifications so that hospitals and parents can take preventive actions. - -## Additional resources - -- GLYPH The Cloud Pak for Data 4.5 on IBM Z Overview Demo video provides an overview of some of the more important features of CP4D on IBM Z. - -- GLYPH IBM Cloud Pak for Data Tutorials. - -- GLYPH Here are some additional use cases that use the data science frameworks that are available as part of CP4D on IBM Z and IBM LinuxONE: - -- -Payment Card Fraud Detection by using TensorFlow on CP4D on IBM Z and IBM LinuxONE is a payment card fraud detection use case. - -- -Fashion-MNIST clothing classification with PyTorch on Cloud Pak for Data on IBM Z and IBM LinuxONE is a Fashion-MNIST clothing classification use case. - -- -Payment Card Fraud Prevention by using Snap ML on IBM Cloud Pak for Data on Red Hat OpenShift on a virtual machine on IBM Z and IBM LinuxONE, which leverage the z16 integrated AI accelerator describes a use case that uses Snap Machine Learning in Cloud Pak for Data on IBM Z and IBM LinuxONE. It is a Snap ML use case. - -A companion video can be found at Credit Card Fraud Detection by using Snap ML on IBM Cloud Pak for Data on IBM Z and IBM LinuxONE. - -## Summary - -This IBM Redbooksfi publication presented an overview of how IBM Cloud Pak for Data on IBM Z can modernize your data infrastructure; develop and deploy ML and AI models; and instantiate highly efficient analytics deployment on IBM LinuxONE. This publication demonstrated these tasks by guiding the reader through five common use cases where CP4D on IBM Z and IBM LinuxONE uses the different features that are supported on the platform, and showing how the associated features can help an enterprise to build AI and ML models with core transactional data, which results in a highly efficient analytics deployment that minimizes latency, cost inefficiencies, and potential security exposures that are connected with data transportation. - -## Authors - -This publication was produced by a team of specialists from around the world working with the IBM Redbooks team: - -Jasmeet Bhatia is an AI on IBM Z Product Manager who supports CP4D on IBM Z. She has 2.5 years of combined experience as a data scientist and a product manager. Jasmeet lives in San Francisco, California and holds a Bachelor of Arts degree in Data Science. She is working on her Master of Science degree in Data Science. Her area of expertise includes AI, data science, and product management. - -Ravi Gummadi is a Technical Leader for CP4D on Linux on IBM Z and IBM LinuxONE in India. He has 18+ years of experience in the design and development of enterprise software for various platforms, including IBM Z and IBM LinuxONE. He holds a master's degree in computer science and engineering from the Indian Institute of Technology Madras (IIT Madras). His areas of expertise include compilers, virtualization, big data analytics, containers, data, and AI, with a special focus on open-source ecosystems. - -Chandra Shekhar Reddy Potula is a Lead AI on zSystems team Architect for Linux on IBM Z and LinuxONE in India. He has 18+ years of experience in the design and development of enterprise software and firmware for various platforms, including IBM Z and LinuxONE. He holds a degree in computer science of engineering from Jawaharlal Nehru Technological University (JNTU). His areas of expertise include networking, virtualization, containers, data, and AI, with a special focus on open-source ecosystems. - -Srirama Sharma is a Lead Technical Architect for IBM Cloud Pak, IBM Instanafi, IBM Turbonomicfi, and Red Hat Advanced Cluster Management for Kubernetes (RHACM) on IBM Z and LinuxONE. He has 18+ years of experience in UNIX and Linux application and device driver development. He designs ISV solutions on IBM Systems and IBM Blockchainfi. He also works on cloud-native adoption of enterprise solutions on IBM Z and LinuxONE. Srirama holds a Bachelor of Engineering degree in computer science from Visvesvaraya Technological University (VTU). He lives in Bangalore, Karnataka. His areas of expertise include UNIX and Linux systems programming, virtualization, performance benchmarking of Financial Services Sector (FSS) industry solutions, open-source ecosystems, server infrastructure, and cloud-native adoption and modernization. - -Thanks to the following people for their contributions to this project: - -Lydia Parziale, Project Manager IBM Redbooks, Poughkeepsie Center - -Shin Kelly Yang, AI on IBM Z Product Management IBM US - -Tom Ramey, Anna Shugol, Andrew Sica, Jonathan Sloan, Elpida Tzortzatos, Meeta Vouk, IBM - -## Now you can become a published author, too! - -Here's an opportunity to spotlight your skills, grow your career, and become a published author-all at the same time! Join an IBM Redbooks residency project and help write a book in your area of expertise, while honing your experience using leading-edge technologies. Your efforts will help to increase product acceptance and customer satisfaction, as you expand your network of technical contacts and relationships. Residencies run from two to six weeks in length, and you can participate either in person or as a remote resident working from your home base. - -Find out more about the residency program, browse the residency index, and apply online at: - -ibm.com /redbooks/residencies.html - -## Stay connected to IBM Redbooks - -- GLYPH Find us on LinkedIn: - -http://www.linkedin.com/groups?home=&gid=2130806 - -- GLYPH Explore new Redbooks publications, residencies, and workshops with the IBM Redbooks weekly newsletter: - -- https://www.redbooks.ibm.com/Redbooks.nsf/subscribe?OpenForm - -- GLYPH Stay current on recent Redbooks publications with RSS Feeds: - -http://www.redbooks.ibm.com/rss.html - -## Notices - -This information was developed for products and services offered in the US. This material might be available from IBM in other languages. However, you may be required to own a copy of the product or product version in that language in order to access it. - -IBM may not offer the products, services, or features discussed in this document in other countries. Consult your local IBM representative for information on the products and services currently available in your area. Any reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, program, or service may be used. Any functionally equivalent product, program, or service that does not infringe any IBM intellectual property right may be used instead. However, it is the user's responsibility to evaluate and verify the operation of any non-IBM product, program, or service. - -IBM may have patents or pending patent applications covering subject matter described in this document. The furnishing of this document does not grant you any license to these patents. You can send license inquiries, in writing, to: - -IBM Director of Licensing, IBM Corporation, North Castle Drive, MD-NC119, Armonk, NY 10504-1785, US - -INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some jurisdictions do not allow disclaimer of express or implied warranties in certain transactions, therefore, this statement may not apply to you. - -This information could include technical inaccuracies or typographical errors. Changes are periodically made to the information herein; these changes will be incorporated in new editions of the publication. IBM may make improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time without notice. - -Any references in this information to non-IBM websites are provided for convenience only and do not in any manner serve as an endorsement of those websites. The materials at those websites are not part of the materials for this IBM product and use of those websites is at your own risk. - -IBM may use or distribute any of the information you provide in any way it believes appropriate without incurring any obligation to you. - -The performance data and client examples cited are presented for illustrative purposes only. Actual performance results may vary depending on specific configurations and operating conditions. - -Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly available sources. IBM has not tested those products and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products. - -Statements regarding IBM's future direction or intent are subject to change or withdrawal without notice, and represent goals and objectives only. - -This information contains examples of data and reports used in daily business operations. To illustrate them as completely as possible, the examples include the names of individuals, companies, brands, and products. All of these names are fictitious and any similarity to actual people or business enterprises is entirely coincidental. - -## COPYRIGHT LICENSE: - -This information contains sample application programs in source language, which illustrate programming techniques on various operating platforms. You may copy, modify, and distribute these sample programs in any form without payment to IBM, for the purposes of developing, using, marketing or distributing application programs conforming to the application programming interface for the operating platform for which the sample programs are written. These examples have not been thoroughly tested under all conditions. IBM, therefore, cannot guarantee or imply reliability, serviceability, or function of these programs. The sample programs are provided "AS IS", without warranty of any kind. IBM shall not be liable for any damages arising out of your use of the sample programs. - -## Trademarks - -IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines Corporation, registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the web at "Copyright and trademark information" at http://www.ibm.com/legal/copytrade.shtml - -The following terms are trademarks or registered trademarks of International Business Machines Corporation, and might also be trademarks or registered trademarks in other countries. - -Db2fi IBMfi - -IBM Blockchainfi - -IBM Cloudfi IBM Clou - -d Pakfi - -IBM Telum™ - -IBM Watsonfi - -IBM z16™ - -Instanafi - -Open Libertyfi - -OpenPagesfi - -Redbooksfi - -The following terms are trademarks of other companies: - -Intel, Intel logo, Intel Inside logo, and Intel Centrino logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries. - -The registered trademark Linuxfi is used pursuant to a sublicense from the Linux Foundation, the exclusive licensee of Linus Torvalds, owner of the mark on a worldwide basis. - -Red Hat and OpenShift are trademarks or registered trademarks of Red Hat, Inc. or its subsidiaries in the United States and other countries. - -UNIX is a registered trademark of The Open Group in the United States and other countries. - -Other company, product, or service names may be trademarks or service marks of others. - -Redbooks (log o) fi Turbon - -omicfi - -WebSpherefi - -z/OSfi - -z16™ - - - - -Back cover - - - - -REDP-5695-00 - -ISBN 0738461067 - - - \ No newline at end of file diff --git a/tests/data/groundtruth/docling_v1/redp5695.pages.json b/tests/data/groundtruth/docling_v1/redp5695.pages.json deleted file mode 100644 index 9c82cd2d..00000000 --- a/tests/data/groundtruth/docling_v1/redp5695.pages.json +++ /dev/null @@ -1 +0,0 @@ -[{"page_no": 0, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Redguide", "bbox": {"l": 467.28, "t": 742.816563, "r": 571.54285, "b": 767.70096, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Data and AI", "bbox": {"l": 41.4967, "t": 630.4333300000001, "r": 138.05457, "b": 652.22569, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Front cover", "bbox": {"l": 285.95999, "t": 9.22802999999999, "r": 417.89999, "b": 31.42804000000001, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "IBM Cloud Pak for Data on ", "bbox": {"l": 44.82, "t": 110.22455000000002, "r": 535.76471, "b": 151.12896999999998, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "IBM Z", "bbox": {"l": 44.82, "t": 155.22400000000005, "r": 149.55365, "b": 196.12842, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Jasmeet Bhatia", "bbox": {"l": 44.759998, "t": 301.83829, "r": 124.83324, "b": 314.28049000000004, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Ravi Gummadi", "bbox": {"l": 44.759998, "t": 327.3378000000001, "r": 119.91647, "b": 339.7799999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Chandra Shekhar Reddy Potula", "bbox": {"l": 44.759998, "t": 352.83730999999995, "r": 204.99734, "b": 365.27951, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Srirama Sharma", "bbox": {"l": 44.759998, "t": 378.33682, "r": 128.92659, "b": 390.77902, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "picture", "bbox": {"l": 467.1597595214844, "t": 740.4200439453125, "r": 571.54285, "b": 768.4144287109375, "coord_origin": "TOPLEFT"}, "confidence": 0.779976487159729, "cells": [{"id": 0, "text": "Redguide", "bbox": {"l": 467.28, "t": 742.816563, "r": 571.54285, "b": 767.70096, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "text", "bbox": {"l": 41.4967, "t": 628.998046875, "r": 138.05457, "b": 652.22569, "coord_origin": "TOPLEFT"}, "confidence": 0.7684483528137207, "cells": [{"id": 1, "text": "Data and AI", "bbox": {"l": 41.4967, "t": 630.4333300000001, "r": 138.05457, "b": 652.22569, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 285.95999, "t": 9.22802999999999, "r": 417.89999, "b": 31.42804000000001, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Front cover", "bbox": {"l": 285.95999, "t": 9.22802999999999, "r": 417.89999, "b": 31.42804000000001, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "section_header", "bbox": {"l": 44.82, "t": 108.52611541748047, "r": 535.76471, "b": 196.12842, "coord_origin": "TOPLEFT"}, "confidence": 0.722160816192627, "cells": [{"id": 3, "text": "IBM Cloud Pak for Data on ", "bbox": {"l": 44.82, "t": 110.22455000000002, "r": 535.76471, "b": 151.12896999999998, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "IBM Z", "bbox": {"l": 44.82, "t": 155.22400000000005, "r": 149.55365, "b": 196.12842, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 43.98441696166992, "t": 300.904052734375, "r": 124.95372772216797, "b": 314.28049000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.8301644325256348, "cells": [{"id": 5, "text": "Jasmeet Bhatia", "bbox": {"l": 44.759998, "t": 301.83829, "r": 124.83324, "b": 314.28049000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 44.41876983642578, "t": 326.1069030761719, "r": 119.91647, "b": 339.7799999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.8449194431304932, "cells": [{"id": 6, "text": "Ravi Gummadi", "bbox": {"l": 44.759998, "t": 327.3378000000001, "r": 119.91647, "b": 339.7799999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 44.286624908447266, "t": 351.3352355957031, "r": 204.99734, "b": 365.7846984863281, "coord_origin": "TOPLEFT"}, "confidence": 0.7996292114257812, "cells": [{"id": 7, "text": "Chandra Shekhar Reddy Potula", "bbox": {"l": 44.759998, "t": 352.83730999999995, "r": 204.99734, "b": 365.27951, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 44.1224250793457, "t": 376.6038818359375, "r": 128.92659, "b": 390.77902, "coord_origin": "TOPLEFT"}, "confidence": 0.8224513530731201, "cells": [{"id": 8, "text": "Srirama Sharma", "bbox": {"l": 44.759998, "t": 378.33682, "r": 128.92659, "b": 390.77902, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 408.87640380859375, "t": 34.33623504638672, "r": 569.0722045898438, "b": 78.19747924804688, "coord_origin": "TOPLEFT"}, "confidence": 0.9278379678726196, "cells": []}, {"id": 9, "label": "picture", "bbox": {"l": 46.60354995727539, "t": 732.5934448242188, "r": 127.91421508789062, "b": 765.55322265625, "coord_origin": "TOPLEFT"}, "confidence": 0.8796597719192505, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "picture", "id": 0, "page_no": 0, "cluster": {"id": 0, "label": "picture", "bbox": {"l": 467.1597595214844, "t": 740.4200439453125, "r": 571.54285, "b": 768.4144287109375, "coord_origin": "TOPLEFT"}, "confidence": 0.779976487159729, "cells": [{"id": 0, "text": "Redguide", "bbox": {"l": 467.28, "t": 742.816563, "r": 571.54285, "b": 767.70096, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "text", "id": 1, "page_no": 0, "cluster": {"id": 1, "label": "text", "bbox": {"l": 41.4967, "t": 628.998046875, "r": 138.05457, "b": 652.22569, "coord_origin": "TOPLEFT"}, "confidence": 0.7684483528137207, "cells": [{"id": 1, "text": "Data and AI", "bbox": {"l": 41.4967, "t": 630.4333300000001, "r": 138.05457, "b": 652.22569, "coord_origin": "TOPLEFT"}}]}, "text": "Data and AI"}, {"label": "text", "id": 2, "page_no": 0, "cluster": {"id": 2, "label": "text", "bbox": {"l": 285.95999, "t": 9.22802999999999, "r": 417.89999, "b": 31.42804000000001, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Front cover", "bbox": {"l": 285.95999, "t": 9.22802999999999, "r": 417.89999, "b": 31.42804000000001, "coord_origin": "TOPLEFT"}}]}, "text": "Front cover"}, {"label": "section_header", "id": 3, "page_no": 0, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 44.82, "t": 108.52611541748047, "r": 535.76471, "b": 196.12842, "coord_origin": "TOPLEFT"}, "confidence": 0.722160816192627, "cells": [{"id": 3, "text": "IBM Cloud Pak for Data on ", "bbox": {"l": 44.82, "t": 110.22455000000002, "r": 535.76471, "b": 151.12896999999998, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "IBM Z", "bbox": {"l": 44.82, "t": 155.22400000000005, "r": 149.55365, "b": 196.12842, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM Z"}, {"label": "text", "id": 4, "page_no": 0, "cluster": {"id": 4, "label": "text", "bbox": {"l": 43.98441696166992, "t": 300.904052734375, "r": 124.95372772216797, "b": 314.28049000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.8301644325256348, "cells": [{"id": 5, "text": "Jasmeet Bhatia", "bbox": {"l": 44.759998, "t": 301.83829, "r": 124.83324, "b": 314.28049000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Jasmeet Bhatia"}, {"label": "text", "id": 5, "page_no": 0, "cluster": {"id": 5, "label": "text", "bbox": {"l": 44.41876983642578, "t": 326.1069030761719, "r": 119.91647, "b": 339.7799999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.8449194431304932, "cells": [{"id": 6, "text": "Ravi Gummadi", "bbox": {"l": 44.759998, "t": 327.3378000000001, "r": 119.91647, "b": 339.7799999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Ravi Gummadi"}, {"label": "text", "id": 6, "page_no": 0, "cluster": {"id": 6, "label": "text", "bbox": {"l": 44.286624908447266, "t": 351.3352355957031, "r": 204.99734, "b": 365.7846984863281, "coord_origin": "TOPLEFT"}, "confidence": 0.7996292114257812, "cells": [{"id": 7, "text": "Chandra Shekhar Reddy Potula", "bbox": {"l": 44.759998, "t": 352.83730999999995, "r": 204.99734, "b": 365.27951, "coord_origin": "TOPLEFT"}}]}, "text": "Chandra Shekhar Reddy Potula"}, {"label": "text", "id": 7, "page_no": 0, "cluster": {"id": 7, "label": "text", "bbox": {"l": 44.1224250793457, "t": 376.6038818359375, "r": 128.92659, "b": 390.77902, "coord_origin": "TOPLEFT"}, "confidence": 0.8224513530731201, "cells": [{"id": 8, "text": "Srirama Sharma", "bbox": {"l": 44.759998, "t": 378.33682, "r": 128.92659, "b": 390.77902, "coord_origin": "TOPLEFT"}}]}, "text": "Srirama Sharma"}, {"label": "picture", "id": 8, "page_no": 0, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 408.87640380859375, "t": 34.33623504638672, "r": 569.0722045898438, "b": 78.19747924804688, "coord_origin": "TOPLEFT"}, "confidence": 0.9278379678726196, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 9, "page_no": 0, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 46.60354995727539, "t": 732.5934448242188, "r": 127.91421508789062, "b": 765.55322265625, "coord_origin": "TOPLEFT"}, "confidence": 0.8796597719192505, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "picture", "id": 0, "page_no": 0, "cluster": {"id": 0, "label": "picture", "bbox": {"l": 467.1597595214844, "t": 740.4200439453125, "r": 571.54285, "b": 768.4144287109375, "coord_origin": "TOPLEFT"}, "confidence": 0.779976487159729, "cells": [{"id": 0, "text": "Redguide", "bbox": {"l": 467.28, "t": 742.816563, "r": 571.54285, "b": 767.70096, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "text", "id": 1, "page_no": 0, "cluster": {"id": 1, "label": "text", "bbox": {"l": 41.4967, "t": 628.998046875, "r": 138.05457, "b": 652.22569, "coord_origin": "TOPLEFT"}, "confidence": 0.7684483528137207, "cells": [{"id": 1, "text": "Data and AI", "bbox": {"l": 41.4967, "t": 630.4333300000001, "r": 138.05457, "b": 652.22569, "coord_origin": "TOPLEFT"}}]}, "text": "Data and AI"}, {"label": "text", "id": 2, "page_no": 0, "cluster": {"id": 2, "label": "text", "bbox": {"l": 285.95999, "t": 9.22802999999999, "r": 417.89999, "b": 31.42804000000001, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Front cover", "bbox": {"l": 285.95999, "t": 9.22802999999999, "r": 417.89999, "b": 31.42804000000001, "coord_origin": "TOPLEFT"}}]}, "text": "Front cover"}, {"label": "section_header", "id": 3, "page_no": 0, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 44.82, "t": 108.52611541748047, "r": 535.76471, "b": 196.12842, "coord_origin": "TOPLEFT"}, "confidence": 0.722160816192627, "cells": [{"id": 3, "text": "IBM Cloud Pak for Data on ", "bbox": {"l": 44.82, "t": 110.22455000000002, "r": 535.76471, "b": 151.12896999999998, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "IBM Z", "bbox": {"l": 44.82, "t": 155.22400000000005, "r": 149.55365, "b": 196.12842, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM Z"}, {"label": "text", "id": 4, "page_no": 0, "cluster": {"id": 4, "label": "text", "bbox": {"l": 43.98441696166992, "t": 300.904052734375, "r": 124.95372772216797, "b": 314.28049000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.8301644325256348, "cells": [{"id": 5, "text": "Jasmeet Bhatia", "bbox": {"l": 44.759998, "t": 301.83829, "r": 124.83324, "b": 314.28049000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Jasmeet Bhatia"}, {"label": "text", "id": 5, "page_no": 0, "cluster": {"id": 5, "label": "text", "bbox": {"l": 44.41876983642578, "t": 326.1069030761719, "r": 119.91647, "b": 339.7799999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.8449194431304932, "cells": [{"id": 6, "text": "Ravi Gummadi", "bbox": {"l": 44.759998, "t": 327.3378000000001, "r": 119.91647, "b": 339.7799999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Ravi Gummadi"}, {"label": "text", "id": 6, "page_no": 0, "cluster": {"id": 6, "label": "text", "bbox": {"l": 44.286624908447266, "t": 351.3352355957031, "r": 204.99734, "b": 365.7846984863281, "coord_origin": "TOPLEFT"}, "confidence": 0.7996292114257812, "cells": [{"id": 7, "text": "Chandra Shekhar Reddy Potula", "bbox": {"l": 44.759998, "t": 352.83730999999995, "r": 204.99734, "b": 365.27951, "coord_origin": "TOPLEFT"}}]}, "text": "Chandra Shekhar Reddy Potula"}, {"label": "text", "id": 7, "page_no": 0, "cluster": {"id": 7, "label": "text", "bbox": {"l": 44.1224250793457, "t": 376.6038818359375, "r": 128.92659, "b": 390.77902, "coord_origin": "TOPLEFT"}, "confidence": 0.8224513530731201, "cells": [{"id": 8, "text": "Srirama Sharma", "bbox": {"l": 44.759998, "t": 378.33682, "r": 128.92659, "b": 390.77902, "coord_origin": "TOPLEFT"}}]}, "text": "Srirama Sharma"}, {"label": "picture", "id": 8, "page_no": 0, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 408.87640380859375, "t": 34.33623504638672, "r": 569.0722045898438, "b": 78.19747924804688, "coord_origin": "TOPLEFT"}, "confidence": 0.9278379678726196, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 9, "page_no": 0, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 46.60354995727539, "t": 732.5934448242188, "r": 127.91421508789062, "b": 765.55322265625, "coord_origin": "TOPLEFT"}, "confidence": 0.8796597719192505, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": []}}, {"page_no": 1, "size": {"width": 612.0, "height": 792.0}, "cells": [], "predictions": {"layout": {"clusters": []}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [], "body": [], "headers": []}}, {"page_no": 2, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2023.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 180.32761, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "1", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Executive overview ", "bbox": {"l": 64.800003, "t": 258.10803, "r": 292.85278, "b": 280.30800999999997, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Most industries are susceptible to fraud, which poses a risk to both businesses and ", "bbox": {"l": 136.8, "t": 316.84872, "r": 506.27911, "b": 326.06171, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "consumers. According to The National Health Care Anti-Fraud Association, health care fraud ", "bbox": {"l": 136.8, "t": 328.84854, "r": 547.28046, "b": 338.06152, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "alone causes the nation around $68 billion annually.$^{1}$ This statistic does not include the ", "bbox": {"l": 136.8, "t": 340.84836, "r": 524.11841, "b": 350.06134, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "numerous other industries where fraudulent activities occur daily. In addition, the growing ", "bbox": {"l": 136.79968, "t": 352.84854, "r": 532.83832, "b": 362.06152, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "amount of data that enterprises own makes it difficult for them to detect fraud. Businesses ", "bbox": {"l": 136.79968, "t": 364.84836, "r": 535.57996, "b": 374.06134, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "can benefit by using an analytical platform to fully integrate their data with artificial intelligence ", "bbox": {"l": 136.79968, "t": 376.84817999999996, "r": 547.19049, "b": 386.06116, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "(AI) technology. ", "bbox": {"l": 136.80066, "t": 388.84799, "r": 209.60324, "b": 398.06097000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "With IBM Cloud Pakfi for Data on IBM Z, enterprises can modernize their data infrastructure, ", "bbox": {"l": 136.80066, "t": 410.8078, "r": 547.34985, "b": 420.02078, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "develop, and deploy machine learning (ML) and AI models, and instantiate highly efficient ", "bbox": {"l": 136.80066, "t": 422.80761999999993, "r": 534.58722, "b": 432.0206, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "analytics deployment on IBM LinuxONE. Enterprises can create cutting-edge, intelligent, and ", "bbox": {"l": 136.80066, "t": 434.80743, "r": 547.26221, "b": 444.02042, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "interactive applications with embedded AI, colocate data with commercial applications, and ", "bbox": {"l": 136.80167, "t": 446.80725, "r": 540.7652, "b": 456.02022999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "use AI to make inferences. ", "bbox": {"l": 136.80167, "t": 458.80707, "r": 257.92322, "b": 468.02005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "This IBM Redguide publication presents a high-level overview of IBM Z. It describes IBM ", "bbox": {"l": 136.80167, "t": 480.82663, "r": 529.99939, "b": 490.03961, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Cloud Pak for Data (CP4D) on IBM Z and IBM LinuxONE, the different features that are ", "bbox": {"l": 136.80165, "t": 492.82645, "r": 525.74866, "b": 502.03943, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "supported on the platform, and how the associated features can help enterprise customers in ", "bbox": {"l": 136.80165, "t": 504.82626, "r": 547.28827, "b": 514.03925, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "building AI and ML models by using core transactional data, which results in decreased ", "bbox": {"l": 136.80165, "t": 516.82608, "r": 524.57123, "b": 526.0390600000001, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "latency and increased throughput. ", "bbox": {"l": 136.80165, "t": 528.8259, "r": 290.11591, "b": 538.03889, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "This publication highlights real-time CP4D on IBM Z use cases. Real-time Clearing and ", "bbox": {"l": 136.80165, "t": 550.84546, "r": 523.98566, "b": 560.05846, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Settlement Transactions, Trustworthy AI and its Role in Day-To-Day Monitoring, and the ", "bbox": {"l": 136.80165, "t": 562.84526, "r": 528.39105, "b": 572.05826, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Prevention of Retail Crimes are use cases that are described in this publication. Using CP4D ", "bbox": {"l": 136.80165, "t": 574.84506, "r": 547.276, "b": 584.0580600000001, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "on IBM Z and LinuxONE, this publication shows how businesses can implement a highly ", "bbox": {"l": 136.80165, "t": 586.84486, "r": 529.57623, "b": 596.05786, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "efficient analytics deployment that minimizes latency, cost inefficiencies, and potential ", "bbox": {"l": 136.80164, "t": 598.84467, "r": 517.91602, "b": 608.0576599999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "security exposures that are connected with data transportation.", "bbox": {"l": 136.80164, "t": 610.84447, "r": 415.15964, "b": 620.05746, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "$^{1 }$https://www.bcbsm.com/health-care-fraud/fraud-statistics.html", "bbox": {"l": 136.8, "t": 727.709961, "r": 387.78561, "b": 734.740341, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.59157943725586, "t": 754.58740234375, "r": 180.34423828125, "b": 764.0753173828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9356479644775391, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2023.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 180.32761, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 541.2573852539062, "t": 754.3030395507812, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8480042219161987, "cells": [{"id": 1, "text": "1", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.800003, "t": 256.93267822265625, "r": 292.85278, "b": 280.30800999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.939366340637207, "cells": [{"id": 2, "text": "Executive overview ", "bbox": {"l": 64.800003, "t": 258.10803, "r": 292.85278, "b": 280.30800999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.93707275390625, "t": 315.9909362792969, "r": 547.28046, "b": 398.67059326171875, "coord_origin": "TOPLEFT"}, "confidence": 0.9878793358802795, "cells": [{"id": 3, "text": "Most industries are susceptible to fraud, which poses a risk to both businesses and ", "bbox": {"l": 136.8, "t": 316.84872, "r": 506.27911, "b": 326.06171, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "consumers. According to The National Health Care Anti-Fraud Association, health care fraud ", "bbox": {"l": 136.8, "t": 328.84854, "r": 547.28046, "b": 338.06152, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "alone causes the nation around $68 billion annually.$^{1}$ This statistic does not include the ", "bbox": {"l": 136.8, "t": 340.84836, "r": 524.11841, "b": 350.06134, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "numerous other industries where fraudulent activities occur daily. In addition, the growing ", "bbox": {"l": 136.79968, "t": 352.84854, "r": 532.83832, "b": 362.06152, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "amount of data that enterprises own makes it difficult for them to detect fraud. Businesses ", "bbox": {"l": 136.79968, "t": 364.84836, "r": 535.57996, "b": 374.06134, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "can benefit by using an analytical platform to fully integrate their data with artificial intelligence ", "bbox": {"l": 136.79968, "t": 376.84817999999996, "r": 547.19049, "b": 386.06116, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "(AI) technology. ", "bbox": {"l": 136.80066, "t": 388.84799, "r": 209.60324, "b": 398.06097000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.84193420410156, "t": 410.041015625, "r": 547.34985, "b": 468.02005, "coord_origin": "TOPLEFT"}, "confidence": 0.9871250987052917, "cells": [{"id": 10, "text": "With IBM Cloud Pakfi for Data on IBM Z, enterprises can modernize their data infrastructure, ", "bbox": {"l": 136.80066, "t": 410.8078, "r": 547.34985, "b": 420.02078, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "develop, and deploy machine learning (ML) and AI models, and instantiate highly efficient ", "bbox": {"l": 136.80066, "t": 422.80761999999993, "r": 534.58722, "b": 432.0206, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "analytics deployment on IBM LinuxONE. Enterprises can create cutting-edge, intelligent, and ", "bbox": {"l": 136.80066, "t": 434.80743, "r": 547.26221, "b": 444.02042, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "interactive applications with embedded AI, colocate data with commercial applications, and ", "bbox": {"l": 136.80167, "t": 446.80725, "r": 540.7652, "b": 456.02022999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "use AI to make inferences. ", "bbox": {"l": 136.80167, "t": 458.80707, "r": 257.92322, "b": 468.02005, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.86183166503906, "t": 479.9052734375, "r": 547.28827, "b": 538.6532592773438, "coord_origin": "TOPLEFT"}, "confidence": 0.9879317879676819, "cells": [{"id": 15, "text": "This IBM Redguide publication presents a high-level overview of IBM Z. It describes IBM ", "bbox": {"l": 136.80167, "t": 480.82663, "r": 529.99939, "b": 490.03961, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Cloud Pak for Data (CP4D) on IBM Z and IBM LinuxONE, the different features that are ", "bbox": {"l": 136.80165, "t": 492.82645, "r": 525.74866, "b": 502.03943, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "supported on the platform, and how the associated features can help enterprise customers in ", "bbox": {"l": 136.80165, "t": 504.82626, "r": 547.28827, "b": 514.03925, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "building AI and ML models by using core transactional data, which results in decreased ", "bbox": {"l": 136.80165, "t": 516.82608, "r": 524.57123, "b": 526.0390600000001, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "latency and increased throughput. ", "bbox": {"l": 136.80165, "t": 528.8259, "r": 290.11591, "b": 538.03889, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 135.76502990722656, "t": 549.9137573242188, "r": 547.276, "b": 620.0858764648438, "coord_origin": "TOPLEFT"}, "confidence": 0.9879330992698669, "cells": [{"id": 20, "text": "This publication highlights real-time CP4D on IBM Z use cases. Real-time Clearing and ", "bbox": {"l": 136.80165, "t": 550.84546, "r": 523.98566, "b": 560.05846, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Settlement Transactions, Trustworthy AI and its Role in Day-To-Day Monitoring, and the ", "bbox": {"l": 136.80165, "t": 562.84526, "r": 528.39105, "b": 572.05826, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Prevention of Retail Crimes are use cases that are described in this publication. Using CP4D ", "bbox": {"l": 136.80165, "t": 574.84506, "r": 547.276, "b": 584.0580600000001, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "on IBM Z and LinuxONE, this publication shows how businesses can implement a highly ", "bbox": {"l": 136.80165, "t": 586.84486, "r": 529.57623, "b": 596.05786, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "efficient analytics deployment that minimizes latency, cost inefficiencies, and potential ", "bbox": {"l": 136.80164, "t": 598.84467, "r": 517.91602, "b": 608.0576599999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "security exposures that are connected with data transportation.", "bbox": {"l": 136.80164, "t": 610.84447, "r": 415.15964, "b": 620.05746, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "footnote", "bbox": {"l": 136.8, "t": 725.2650146484375, "r": 387.78561, "b": 734.9249267578125, "coord_origin": "TOPLEFT"}, "confidence": 0.8821995854377747, "cells": [{"id": 26, "text": "$^{1 }$https://www.bcbsm.com/health-care-fraud/fraud-statistics.html", "bbox": {"l": 136.8, "t": 727.709961, "r": 387.78561, "b": 734.740341, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 32.92374801635742, "t": 70.42400360107422, "r": 239.95321655273438, "b": 236.60231018066406, "coord_origin": "TOPLEFT"}, "confidence": 0.8423530459403992, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 2, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.59157943725586, "t": 754.58740234375, "r": 180.34423828125, "b": 764.0753173828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9356479644775391, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2023.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 180.32761, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2023."}, {"label": "page_footer", "id": 1, "page_no": 2, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 541.2573852539062, "t": 754.3030395507812, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8480042219161987, "cells": [{"id": 1, "text": "1", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "1"}, {"label": "section_header", "id": 2, "page_no": 2, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.800003, "t": 256.93267822265625, "r": 292.85278, "b": 280.30800999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.939366340637207, "cells": [{"id": 2, "text": "Executive overview ", "bbox": {"l": 64.800003, "t": 258.10803, "r": 292.85278, "b": 280.30800999999997, "coord_origin": "TOPLEFT"}}]}, "text": "Executive overview"}, {"label": "text", "id": 3, "page_no": 2, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.93707275390625, "t": 315.9909362792969, "r": 547.28046, "b": 398.67059326171875, "coord_origin": "TOPLEFT"}, "confidence": 0.9878793358802795, "cells": [{"id": 3, "text": "Most industries are susceptible to fraud, which poses a risk to both businesses and ", "bbox": {"l": 136.8, "t": 316.84872, "r": 506.27911, "b": 326.06171, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "consumers. According to The National Health Care Anti-Fraud Association, health care fraud ", "bbox": {"l": 136.8, "t": 328.84854, "r": 547.28046, "b": 338.06152, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "alone causes the nation around $68 billion annually.$^{1}$ This statistic does not include the ", "bbox": {"l": 136.8, "t": 340.84836, "r": 524.11841, "b": 350.06134, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "numerous other industries where fraudulent activities occur daily. In addition, the growing ", "bbox": {"l": 136.79968, "t": 352.84854, "r": 532.83832, "b": 362.06152, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "amount of data that enterprises own makes it difficult for them to detect fraud. Businesses ", "bbox": {"l": 136.79968, "t": 364.84836, "r": 535.57996, "b": 374.06134, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "can benefit by using an analytical platform to fully integrate their data with artificial intelligence ", "bbox": {"l": 136.79968, "t": 376.84817999999996, "r": 547.19049, "b": 386.06116, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "(AI) technology. ", "bbox": {"l": 136.80066, "t": 388.84799, "r": 209.60324, "b": 398.06097000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Most industries are susceptible to fraud, which poses a risk to both businesses and consumers. According to The National Health Care Anti-Fraud Association, health care fraud alone causes the nation around $68 billion annually.$^{1}$ This statistic does not include the numerous other industries where fraudulent activities occur daily. In addition, the growing amount of data that enterprises own makes it difficult for them to detect fraud. Businesses can benefit by using an analytical platform to fully integrate their data with artificial intelligence (AI) technology."}, {"label": "text", "id": 4, "page_no": 2, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.84193420410156, "t": 410.041015625, "r": 547.34985, "b": 468.02005, "coord_origin": "TOPLEFT"}, "confidence": 0.9871250987052917, "cells": [{"id": 10, "text": "With IBM Cloud Pakfi for Data on IBM Z, enterprises can modernize their data infrastructure, ", "bbox": {"l": 136.80066, "t": 410.8078, "r": 547.34985, "b": 420.02078, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "develop, and deploy machine learning (ML) and AI models, and instantiate highly efficient ", "bbox": {"l": 136.80066, "t": 422.80761999999993, "r": 534.58722, "b": 432.0206, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "analytics deployment on IBM LinuxONE. Enterprises can create cutting-edge, intelligent, and ", "bbox": {"l": 136.80066, "t": 434.80743, "r": 547.26221, "b": 444.02042, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "interactive applications with embedded AI, colocate data with commercial applications, and ", "bbox": {"l": 136.80167, "t": 446.80725, "r": 540.7652, "b": 456.02022999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "use AI to make inferences. ", "bbox": {"l": 136.80167, "t": 458.80707, "r": 257.92322, "b": 468.02005, "coord_origin": "TOPLEFT"}}]}, "text": "With IBM Cloud Pakfi for Data on IBM Z, enterprises can modernize their data infrastructure, develop, and deploy machine learning (ML) and AI models, and instantiate highly efficient analytics deployment on IBM LinuxONE. Enterprises can create cutting-edge, intelligent, and interactive applications with embedded AI, colocate data with commercial applications, and use AI to make inferences."}, {"label": "text", "id": 5, "page_no": 2, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.86183166503906, "t": 479.9052734375, "r": 547.28827, "b": 538.6532592773438, "coord_origin": "TOPLEFT"}, "confidence": 0.9879317879676819, "cells": [{"id": 15, "text": "This IBM Redguide publication presents a high-level overview of IBM Z. It describes IBM ", "bbox": {"l": 136.80167, "t": 480.82663, "r": 529.99939, "b": 490.03961, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Cloud Pak for Data (CP4D) on IBM Z and IBM LinuxONE, the different features that are ", "bbox": {"l": 136.80165, "t": 492.82645, "r": 525.74866, "b": 502.03943, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "supported on the platform, and how the associated features can help enterprise customers in ", "bbox": {"l": 136.80165, "t": 504.82626, "r": 547.28827, "b": 514.03925, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "building AI and ML models by using core transactional data, which results in decreased ", "bbox": {"l": 136.80165, "t": 516.82608, "r": 524.57123, "b": 526.0390600000001, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "latency and increased throughput. ", "bbox": {"l": 136.80165, "t": 528.8259, "r": 290.11591, "b": 538.03889, "coord_origin": "TOPLEFT"}}]}, "text": "This IBM Redguide publication presents a high-level overview of IBM Z. It describes IBM Cloud Pak for Data (CP4D) on IBM Z and IBM LinuxONE, the different features that are supported on the platform, and how the associated features can help enterprise customers in building AI and ML models by using core transactional data, which results in decreased latency and increased throughput."}, {"label": "text", "id": 6, "page_no": 2, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.76502990722656, "t": 549.9137573242188, "r": 547.276, "b": 620.0858764648438, "coord_origin": "TOPLEFT"}, "confidence": 0.9879330992698669, "cells": [{"id": 20, "text": "This publication highlights real-time CP4D on IBM Z use cases. Real-time Clearing and ", "bbox": {"l": 136.80165, "t": 550.84546, "r": 523.98566, "b": 560.05846, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Settlement Transactions, Trustworthy AI and its Role in Day-To-Day Monitoring, and the ", "bbox": {"l": 136.80165, "t": 562.84526, "r": 528.39105, "b": 572.05826, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Prevention of Retail Crimes are use cases that are described in this publication. Using CP4D ", "bbox": {"l": 136.80165, "t": 574.84506, "r": 547.276, "b": 584.0580600000001, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "on IBM Z and LinuxONE, this publication shows how businesses can implement a highly ", "bbox": {"l": 136.80165, "t": 586.84486, "r": 529.57623, "b": 596.05786, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "efficient analytics deployment that minimizes latency, cost inefficiencies, and potential ", "bbox": {"l": 136.80164, "t": 598.84467, "r": 517.91602, "b": 608.0576599999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "security exposures that are connected with data transportation.", "bbox": {"l": 136.80164, "t": 610.84447, "r": 415.15964, "b": 620.05746, "coord_origin": "TOPLEFT"}}]}, "text": "This publication highlights real-time CP4D on IBM Z use cases. Real-time Clearing and Settlement Transactions, Trustworthy AI and its Role in Day-To-Day Monitoring, and the Prevention of Retail Crimes are use cases that are described in this publication. Using CP4D on IBM Z and LinuxONE, this publication shows how businesses can implement a highly efficient analytics deployment that minimizes latency, cost inefficiencies, and potential security exposures that are connected with data transportation."}, {"label": "footnote", "id": 7, "page_no": 2, "cluster": {"id": 7, "label": "footnote", "bbox": {"l": 136.8, "t": 725.2650146484375, "r": 387.78561, "b": 734.9249267578125, "coord_origin": "TOPLEFT"}, "confidence": 0.8821995854377747, "cells": [{"id": 26, "text": "$^{1 }$https://www.bcbsm.com/health-care-fraud/fraud-statistics.html", "bbox": {"l": 136.8, "t": 727.709961, "r": 387.78561, "b": 734.740341, "coord_origin": "TOPLEFT"}}]}, "text": "$^{1 }$https://www.bcbsm.com/health-care-fraud/fraud-statistics.html"}, {"label": "picture", "id": 8, "page_no": 2, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 32.92374801635742, "t": 70.42400360107422, "r": 239.95321655273438, "b": 236.60231018066406, "coord_origin": "TOPLEFT"}, "confidence": 0.8423530459403992, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "section_header", "id": 2, "page_no": 2, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.800003, "t": 256.93267822265625, "r": 292.85278, "b": 280.30800999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.939366340637207, "cells": [{"id": 2, "text": "Executive overview ", "bbox": {"l": 64.800003, "t": 258.10803, "r": 292.85278, "b": 280.30800999999997, "coord_origin": "TOPLEFT"}}]}, "text": "Executive overview"}, {"label": "text", "id": 3, "page_no": 2, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.93707275390625, "t": 315.9909362792969, "r": 547.28046, "b": 398.67059326171875, "coord_origin": "TOPLEFT"}, "confidence": 0.9878793358802795, "cells": [{"id": 3, "text": "Most industries are susceptible to fraud, which poses a risk to both businesses and ", "bbox": {"l": 136.8, "t": 316.84872, "r": 506.27911, "b": 326.06171, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "consumers. According to The National Health Care Anti-Fraud Association, health care fraud ", "bbox": {"l": 136.8, "t": 328.84854, "r": 547.28046, "b": 338.06152, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "alone causes the nation around $68 billion annually.$^{1}$ This statistic does not include the ", "bbox": {"l": 136.8, "t": 340.84836, "r": 524.11841, "b": 350.06134, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "numerous other industries where fraudulent activities occur daily. In addition, the growing ", "bbox": {"l": 136.79968, "t": 352.84854, "r": 532.83832, "b": 362.06152, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "amount of data that enterprises own makes it difficult for them to detect fraud. Businesses ", "bbox": {"l": 136.79968, "t": 364.84836, "r": 535.57996, "b": 374.06134, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "can benefit by using an analytical platform to fully integrate their data with artificial intelligence ", "bbox": {"l": 136.79968, "t": 376.84817999999996, "r": 547.19049, "b": 386.06116, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "(AI) technology. ", "bbox": {"l": 136.80066, "t": 388.84799, "r": 209.60324, "b": 398.06097000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Most industries are susceptible to fraud, which poses a risk to both businesses and consumers. According to The National Health Care Anti-Fraud Association, health care fraud alone causes the nation around $68 billion annually.$^{1}$ This statistic does not include the numerous other industries where fraudulent activities occur daily. In addition, the growing amount of data that enterprises own makes it difficult for them to detect fraud. Businesses can benefit by using an analytical platform to fully integrate their data with artificial intelligence (AI) technology."}, {"label": "text", "id": 4, "page_no": 2, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.84193420410156, "t": 410.041015625, "r": 547.34985, "b": 468.02005, "coord_origin": "TOPLEFT"}, "confidence": 0.9871250987052917, "cells": [{"id": 10, "text": "With IBM Cloud Pakfi for Data on IBM Z, enterprises can modernize their data infrastructure, ", "bbox": {"l": 136.80066, "t": 410.8078, "r": 547.34985, "b": 420.02078, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "develop, and deploy machine learning (ML) and AI models, and instantiate highly efficient ", "bbox": {"l": 136.80066, "t": 422.80761999999993, "r": 534.58722, "b": 432.0206, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "analytics deployment on IBM LinuxONE. Enterprises can create cutting-edge, intelligent, and ", "bbox": {"l": 136.80066, "t": 434.80743, "r": 547.26221, "b": 444.02042, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "interactive applications with embedded AI, colocate data with commercial applications, and ", "bbox": {"l": 136.80167, "t": 446.80725, "r": 540.7652, "b": 456.02022999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "use AI to make inferences. ", "bbox": {"l": 136.80167, "t": 458.80707, "r": 257.92322, "b": 468.02005, "coord_origin": "TOPLEFT"}}]}, "text": "With IBM Cloud Pakfi for Data on IBM Z, enterprises can modernize their data infrastructure, develop, and deploy machine learning (ML) and AI models, and instantiate highly efficient analytics deployment on IBM LinuxONE. Enterprises can create cutting-edge, intelligent, and interactive applications with embedded AI, colocate data with commercial applications, and use AI to make inferences."}, {"label": "text", "id": 5, "page_no": 2, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.86183166503906, "t": 479.9052734375, "r": 547.28827, "b": 538.6532592773438, "coord_origin": "TOPLEFT"}, "confidence": 0.9879317879676819, "cells": [{"id": 15, "text": "This IBM Redguide publication presents a high-level overview of IBM Z. It describes IBM ", "bbox": {"l": 136.80167, "t": 480.82663, "r": 529.99939, "b": 490.03961, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Cloud Pak for Data (CP4D) on IBM Z and IBM LinuxONE, the different features that are ", "bbox": {"l": 136.80165, "t": 492.82645, "r": 525.74866, "b": 502.03943, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "supported on the platform, and how the associated features can help enterprise customers in ", "bbox": {"l": 136.80165, "t": 504.82626, "r": 547.28827, "b": 514.03925, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "building AI and ML models by using core transactional data, which results in decreased ", "bbox": {"l": 136.80165, "t": 516.82608, "r": 524.57123, "b": 526.0390600000001, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "latency and increased throughput. ", "bbox": {"l": 136.80165, "t": 528.8259, "r": 290.11591, "b": 538.03889, "coord_origin": "TOPLEFT"}}]}, "text": "This IBM Redguide publication presents a high-level overview of IBM Z. It describes IBM Cloud Pak for Data (CP4D) on IBM Z and IBM LinuxONE, the different features that are supported on the platform, and how the associated features can help enterprise customers in building AI and ML models by using core transactional data, which results in decreased latency and increased throughput."}, {"label": "text", "id": 6, "page_no": 2, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.76502990722656, "t": 549.9137573242188, "r": 547.276, "b": 620.0858764648438, "coord_origin": "TOPLEFT"}, "confidence": 0.9879330992698669, "cells": [{"id": 20, "text": "This publication highlights real-time CP4D on IBM Z use cases. Real-time Clearing and ", "bbox": {"l": 136.80165, "t": 550.84546, "r": 523.98566, "b": 560.05846, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Settlement Transactions, Trustworthy AI and its Role in Day-To-Day Monitoring, and the ", "bbox": {"l": 136.80165, "t": 562.84526, "r": 528.39105, "b": 572.05826, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Prevention of Retail Crimes are use cases that are described in this publication. Using CP4D ", "bbox": {"l": 136.80165, "t": 574.84506, "r": 547.276, "b": 584.0580600000001, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "on IBM Z and LinuxONE, this publication shows how businesses can implement a highly ", "bbox": {"l": 136.80165, "t": 586.84486, "r": 529.57623, "b": 596.05786, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "efficient analytics deployment that minimizes latency, cost inefficiencies, and potential ", "bbox": {"l": 136.80164, "t": 598.84467, "r": 517.91602, "b": 608.0576599999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "security exposures that are connected with data transportation.", "bbox": {"l": 136.80164, "t": 610.84447, "r": 415.15964, "b": 620.05746, "coord_origin": "TOPLEFT"}}]}, "text": "This publication highlights real-time CP4D on IBM Z use cases. Real-time Clearing and Settlement Transactions, Trustworthy AI and its Role in Day-To-Day Monitoring, and the Prevention of Retail Crimes are use cases that are described in this publication. Using CP4D on IBM Z and LinuxONE, this publication shows how businesses can implement a highly efficient analytics deployment that minimizes latency, cost inefficiencies, and potential security exposures that are connected with data transportation."}, {"label": "footnote", "id": 7, "page_no": 2, "cluster": {"id": 7, "label": "footnote", "bbox": {"l": 136.8, "t": 725.2650146484375, "r": 387.78561, "b": 734.9249267578125, "coord_origin": "TOPLEFT"}, "confidence": 0.8821995854377747, "cells": [{"id": 26, "text": "$^{1 }$https://www.bcbsm.com/health-care-fraud/fraud-statistics.html", "bbox": {"l": 136.8, "t": 727.709961, "r": 387.78561, "b": 734.740341, "coord_origin": "TOPLEFT"}}]}, "text": "$^{1 }$https://www.bcbsm.com/health-care-fraud/fraud-statistics.html"}, {"label": "picture", "id": 8, "page_no": 2, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 32.92374801635742, "t": 70.42400360107422, "r": 239.95321655273438, "b": 236.60231018066406, "coord_origin": "TOPLEFT"}, "confidence": 0.8423530459403992, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 2, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.59157943725586, "t": 754.58740234375, "r": 180.34423828125, "b": 764.0753173828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9356479644775391, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2023.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 180.32761, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2023."}, {"label": "page_footer", "id": 1, "page_no": 2, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 541.2573852539062, "t": 754.3030395507812, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8480042219161987, "cells": [{"id": 1, "text": "1", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "1"}]}}, {"page_no": 3, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "2 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 87.840302, "t": 755.538002, "r": 261.53851, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "IBM Z: An overview", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 212.32149, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Ever wonder how many transactions a bank processes per day? What about the pace at ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 529.59741, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "which these transactions happen? According to an IBMfi report, 44 of 50 of the world\u2019s top ", "bbox": {"l": 136.8, "t": 115.48852999999997, "r": 539.55145, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "banks use IBM Z mainframes for these daily transactions.$^{2}$ IBM Z is a platform that is ", "bbox": {"l": 136.8, "t": 127.48834000000011, "r": 514.55249, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "designed for voluminous data, maximum security, real-time transaction analysis, and cost ", "bbox": {"l": 136.79953, "t": 139.48852999999997, "r": 534.53912, "b": 148.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "efficiency. ", "bbox": {"l": 136.79955, "t": 151.48834, "r": 183.94521, "b": 160.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "The most recent platform for IBM Z is IBM z16\u2122. The IBM z16 supports the following ", "bbox": {"l": 136.79955, "t": 173.50793, "r": 515.68988, "b": 182.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "features: ", "bbox": {"l": 136.79955, "t": 185.50775, "r": 178.43532, "b": 194.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "GLYPH", "bbox": {"l": 136.79955, "t": 202.63696000000004, "r": 141.77954, "b": 211.41174, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "On-chip AI acceleration", "bbox": {"l": 151.19971, "t": 202.48755000000006, "r": 255.07155, "b": 211.70056, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "GLYPH", "bbox": {"l": 136.79955, "t": 219.67651, "r": 141.77954, "b": 228.45128999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Quantum-safe crypto discovery", "bbox": {"l": 151.19971, "t": 219.52710000000002, "r": 289.5531, "b": 228.74010999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "GLYPH", "bbox": {"l": 136.79955, "t": 236.65630999999996, "r": 141.77954, "b": 245.43109000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Simplified compliance", "bbox": {"l": 151.19971, "t": 236.50689999999997, "r": 247.85254, "b": 245.71991000000003, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "GLYPH", "bbox": {"l": 136.79955, "t": 253.63611000000003, "r": 141.77954, "b": 262.41089, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Flexible capacity", "bbox": {"l": 151.19971, "t": 253.48668999999995, "r": 225.05908, "b": 262.69971, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "GLYPH", "bbox": {"l": 136.79955, "t": 270.67566, "r": 141.77954, "b": 279.45043999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Modernization of applications", "bbox": {"l": 151.19971, "t": 270.52625, "r": 280.60699, "b": 279.73925999999994, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "GLYPH", "bbox": {"l": 136.80054, "t": 287.65546, "r": 141.78053, "b": 296.43024, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Sustainability", "bbox": {"l": 151.2007, "t": 287.50607, "r": 210.07028, "b": 296.71906, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "With these features, enterprises can upgrade applications while preserving secure and ", "bbox": {"l": 136.80054, "t": 309.52563, "r": 521.94366, "b": 318.73862, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "resilient data.", "bbox": {"l": 136.80054, "t": 321.52545, "r": 196.20497, "b": 330.73842999999994, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "To learn more about these features, see the IBM z16 product page.", "bbox": {"l": 136.80054, "t": 343.48526, "r": 434.58963000000006, "b": 352.69824, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Figure 1 on page 3 shows a picture of the IBM z16 mainframe. ", "bbox": {"l": 136.80057, "t": 365.50482, "r": 415.6936, "b": 374.7178, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "$^{2 }$https://www.ibm.com/case-studies/bankwest/", "bbox": {"l": 136.8, "t": 727.709961, "r": 311.82391, "b": 734.740341, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.95490646362305, "t": 754.27392578125, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8809324502944946, "cells": [{"id": 0, "text": "2 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 87.65045166015625, "t": 754.6927490234375, "r": 261.53851, "b": 763.9190063476562, "coord_origin": "TOPLEFT"}, "confidence": 0.9455875754356384, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 87.840302, "t": 755.538002, "r": 261.53851, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.69976043701172, "t": 70.11424255371094, "r": 212.32149, "b": 85.9837, "coord_origin": "TOPLEFT"}, "confidence": 0.96026211977005, "cells": [{"id": 2, "text": "IBM Z: An overview", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 212.32149, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 136.16062927246094, "t": 102.75202941894531, "r": 539.55145, "b": 161.23336791992188, "coord_origin": "TOPLEFT"}, "confidence": 0.9878602623939514, "cells": [{"id": 3, "text": "Ever wonder how many transactions a bank processes per day? What about the pace at ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 529.59741, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "which these transactions happen? According to an IBMfi report, 44 of 50 of the world\u2019s top ", "bbox": {"l": 136.8, "t": 115.48852999999997, "r": 539.55145, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "banks use IBM Z mainframes for these daily transactions.$^{2}$ IBM Z is a platform that is ", "bbox": {"l": 136.8, "t": 127.48834000000011, "r": 514.55249, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "designed for voluminous data, maximum security, real-time transaction analysis, and cost ", "bbox": {"l": 136.79953, "t": 139.48852999999997, "r": 534.53912, "b": 148.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "efficiency. ", "bbox": {"l": 136.79955, "t": 151.48834, "r": 183.94521, "b": 160.70135000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.83799743652344, "t": 172.61083984375, "r": 515.68988, "b": 194.72076000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9694333076477051, "cells": [{"id": 8, "text": "The most recent platform for IBM Z is IBM z16\u2122. The IBM z16 supports the following ", "bbox": {"l": 136.79955, "t": 173.50793, "r": 515.68988, "b": 182.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "features: ", "bbox": {"l": 136.79955, "t": 185.50775, "r": 178.43532, "b": 194.72076000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 135.797607421875, "t": 201.2985076904297, "r": 255.07155, "b": 211.79501342773438, "coord_origin": "TOPLEFT"}, "confidence": 0.9466004967689514, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.79955, "t": 202.63696000000004, "r": 141.77954, "b": 211.41174, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "On-chip AI acceleration", "bbox": {"l": 151.19971, "t": 202.48755000000006, "r": 255.07155, "b": 211.70056, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.7379150390625, "t": 218.8182373046875, "r": 289.6485290527344, "b": 229.28843688964844, "coord_origin": "TOPLEFT"}, "confidence": 0.951557457447052, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.79955, "t": 219.67651, "r": 141.77954, "b": 228.45128999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Quantum-safe crypto discovery", "bbox": {"l": 151.19971, "t": 219.52710000000002, "r": 289.5531, "b": 228.74010999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.6077423095703, "t": 235.31582641601562, "r": 247.8863983154297, "b": 245.71991000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9488750696182251, "cells": [{"id": 14, "text": "GLYPH", "bbox": {"l": 136.79955, "t": 236.65630999999996, "r": 141.77954, "b": 245.43109000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Simplified compliance", "bbox": {"l": 151.19971, "t": 236.50689999999997, "r": 247.85254, "b": 245.71991000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.57025146484375, "t": 252.62242126464844, "r": 225.32553100585938, "b": 263.3917236328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9447478652000427, "cells": [{"id": 16, "text": "GLYPH", "bbox": {"l": 136.79955, "t": 253.63611000000003, "r": 141.77954, "b": 262.41089, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Flexible capacity", "bbox": {"l": 151.19971, "t": 253.48668999999995, "r": 225.05908, "b": 262.69971, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.6380615234375, "t": 269.9613342285156, "r": 280.60699, "b": 280.2677307128906, "coord_origin": "TOPLEFT"}, "confidence": 0.9515380263328552, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.79955, "t": 270.67566, "r": 141.77954, "b": 279.45043999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Modernization of applications", "bbox": {"l": 151.19971, "t": 270.52625, "r": 280.60699, "b": 279.73925999999994, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 135.63339233398438, "t": 286.7400207519531, "r": 210.07028, "b": 297.0730895996094, "coord_origin": "TOPLEFT"}, "confidence": 0.9383591413497925, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.80054, "t": 287.65546, "r": 141.78053, "b": 296.43024, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Sustainability", "bbox": {"l": 151.2007, "t": 287.50607, "r": 210.07028, "b": 296.71906, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 136.1382598876953, "t": 308.8077392578125, "r": 521.94366, "b": 330.73842999999994, "coord_origin": "TOPLEFT"}, "confidence": 0.972258448600769, "cells": [{"id": 22, "text": "With these features, enterprises can upgrade applications while preserving secure and ", "bbox": {"l": 136.80054, "t": 309.52563, "r": 521.94366, "b": 318.73862, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "resilient data.", "bbox": {"l": 136.80054, "t": 321.52545, "r": 196.20497, "b": 330.73842999999994, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 135.73519897460938, "t": 342.67401123046875, "r": 434.58963000000006, "b": 353.0493469238281, "coord_origin": "TOPLEFT"}, "confidence": 0.9527294039726257, "cells": [{"id": 24, "text": "To learn more about these features, see the IBM z16 product page.", "bbox": {"l": 136.80054, "t": 343.48526, "r": 434.58963000000006, "b": 352.69824, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 136.62892150878906, "t": 364.7782287597656, "r": 415.6936, "b": 374.95330810546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9560132622718811, "cells": [{"id": 25, "text": "Figure 1 on page 3 shows a picture of the IBM z16 mainframe. ", "bbox": {"l": 136.80057, "t": 365.50482, "r": 415.6936, "b": 374.7178, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "footnote", "bbox": {"l": 136.5249786376953, "t": 725.1834106445312, "r": 311.82391, "b": 734.9193115234375, "coord_origin": "TOPLEFT"}, "confidence": 0.8997626900672913, "cells": [{"id": 26, "text": "$^{2 }$https://www.ibm.com/case-studies/bankwest/", "bbox": {"l": 136.8, "t": 727.709961, "r": 311.82391, "b": 734.740341, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 3, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.95490646362305, "t": 754.27392578125, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8809324502944946, "cells": [{"id": 0, "text": "2 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "2"}, {"label": "page_footer", "id": 1, "page_no": 3, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 87.65045166015625, "t": 754.6927490234375, "r": 261.53851, "b": 763.9190063476562, "coord_origin": "TOPLEFT"}, "confidence": 0.9455875754356384, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 87.840302, "t": 755.538002, "r": 261.53851, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"label": "section_header", "id": 2, "page_no": 3, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.69976043701172, "t": 70.11424255371094, "r": 212.32149, "b": 85.9837, "coord_origin": "TOPLEFT"}, "confidence": 0.96026211977005, "cells": [{"id": 2, "text": "IBM Z: An overview", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 212.32149, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Z: An overview"}, {"label": "text", "id": 3, "page_no": 3, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.16062927246094, "t": 102.75202941894531, "r": 539.55145, "b": 161.23336791992188, "coord_origin": "TOPLEFT"}, "confidence": 0.9878602623939514, "cells": [{"id": 3, "text": "Ever wonder how many transactions a bank processes per day? What about the pace at ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 529.59741, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "which these transactions happen? According to an IBMfi report, 44 of 50 of the world\u2019s top ", "bbox": {"l": 136.8, "t": 115.48852999999997, "r": 539.55145, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "banks use IBM Z mainframes for these daily transactions.$^{2}$ IBM Z is a platform that is ", "bbox": {"l": 136.8, "t": 127.48834000000011, "r": 514.55249, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "designed for voluminous data, maximum security, real-time transaction analysis, and cost ", "bbox": {"l": 136.79953, "t": 139.48852999999997, "r": 534.53912, "b": 148.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "efficiency. ", "bbox": {"l": 136.79955, "t": 151.48834, "r": 183.94521, "b": 160.70135000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Ever wonder how many transactions a bank processes per day? What about the pace at which these transactions happen? According to an IBMfi report, 44 of 50 of the world\u2019s top banks use IBM Z mainframes for these daily transactions.$^{2}$ IBM Z is a platform that is designed for voluminous data, maximum security, real-time transaction analysis, and cost efficiency."}, {"label": "text", "id": 4, "page_no": 3, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.83799743652344, "t": 172.61083984375, "r": 515.68988, "b": 194.72076000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9694333076477051, "cells": [{"id": 8, "text": "The most recent platform for IBM Z is IBM z16\u2122. The IBM z16 supports the following ", "bbox": {"l": 136.79955, "t": 173.50793, "r": 515.68988, "b": 182.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "features: ", "bbox": {"l": 136.79955, "t": 185.50775, "r": 178.43532, "b": 194.72076000000004, "coord_origin": "TOPLEFT"}}]}, "text": "The most recent platform for IBM Z is IBM z16\u2122. The IBM z16 supports the following features:"}, {"label": "list_item", "id": 5, "page_no": 3, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.797607421875, "t": 201.2985076904297, "r": 255.07155, "b": 211.79501342773438, "coord_origin": "TOPLEFT"}, "confidence": 0.9466004967689514, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.79955, "t": 202.63696000000004, "r": 141.77954, "b": 211.41174, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "On-chip AI acceleration", "bbox": {"l": 151.19971, "t": 202.48755000000006, "r": 255.07155, "b": 211.70056, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH On-chip AI acceleration"}, {"label": "list_item", "id": 6, "page_no": 3, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.7379150390625, "t": 218.8182373046875, "r": 289.6485290527344, "b": 229.28843688964844, "coord_origin": "TOPLEFT"}, "confidence": 0.951557457447052, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.79955, "t": 219.67651, "r": 141.77954, "b": 228.45128999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Quantum-safe crypto discovery", "bbox": {"l": 151.19971, "t": 219.52710000000002, "r": 289.5531, "b": 228.74010999999996, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Quantum-safe crypto discovery"}, {"label": "list_item", "id": 7, "page_no": 3, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.6077423095703, "t": 235.31582641601562, "r": 247.8863983154297, "b": 245.71991000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9488750696182251, "cells": [{"id": 14, "text": "GLYPH", "bbox": {"l": 136.79955, "t": 236.65630999999996, "r": 141.77954, "b": 245.43109000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Simplified compliance", "bbox": {"l": 151.19971, "t": 236.50689999999997, "r": 247.85254, "b": 245.71991000000003, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Simplified compliance"}, {"label": "list_item", "id": 8, "page_no": 3, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.57025146484375, "t": 252.62242126464844, "r": 225.32553100585938, "b": 263.3917236328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9447478652000427, "cells": [{"id": 16, "text": "GLYPH", "bbox": {"l": 136.79955, "t": 253.63611000000003, "r": 141.77954, "b": 262.41089, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Flexible capacity", "bbox": {"l": 151.19971, "t": 253.48668999999995, "r": 225.05908, "b": 262.69971, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Flexible capacity"}, {"label": "list_item", "id": 9, "page_no": 3, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.6380615234375, "t": 269.9613342285156, "r": 280.60699, "b": 280.2677307128906, "coord_origin": "TOPLEFT"}, "confidence": 0.9515380263328552, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.79955, "t": 270.67566, "r": 141.77954, "b": 279.45043999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Modernization of applications", "bbox": {"l": 151.19971, "t": 270.52625, "r": 280.60699, "b": 279.73925999999994, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Modernization of applications"}, {"label": "list_item", "id": 10, "page_no": 3, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.63339233398438, "t": 286.7400207519531, "r": 210.07028, "b": 297.0730895996094, "coord_origin": "TOPLEFT"}, "confidence": 0.9383591413497925, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.80054, "t": 287.65546, "r": 141.78053, "b": 296.43024, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Sustainability", "bbox": {"l": 151.2007, "t": 287.50607, "r": 210.07028, "b": 296.71906, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Sustainability"}, {"label": "text", "id": 11, "page_no": 3, "cluster": {"id": 11, "label": "text", "bbox": {"l": 136.1382598876953, "t": 308.8077392578125, "r": 521.94366, "b": 330.73842999999994, "coord_origin": "TOPLEFT"}, "confidence": 0.972258448600769, "cells": [{"id": 22, "text": "With these features, enterprises can upgrade applications while preserving secure and ", "bbox": {"l": 136.80054, "t": 309.52563, "r": 521.94366, "b": 318.73862, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "resilient data.", "bbox": {"l": 136.80054, "t": 321.52545, "r": 196.20497, "b": 330.73842999999994, "coord_origin": "TOPLEFT"}}]}, "text": "With these features, enterprises can upgrade applications while preserving secure and resilient data."}, {"label": "text", "id": 12, "page_no": 3, "cluster": {"id": 12, "label": "text", "bbox": {"l": 135.73519897460938, "t": 342.67401123046875, "r": 434.58963000000006, "b": 353.0493469238281, "coord_origin": "TOPLEFT"}, "confidence": 0.9527294039726257, "cells": [{"id": 24, "text": "To learn more about these features, see the IBM z16 product page.", "bbox": {"l": 136.80054, "t": 343.48526, "r": 434.58963000000006, "b": 352.69824, "coord_origin": "TOPLEFT"}}]}, "text": "To learn more about these features, see the IBM z16 product page."}, {"label": "text", "id": 13, "page_no": 3, "cluster": {"id": 13, "label": "text", "bbox": {"l": 136.62892150878906, "t": 364.7782287597656, "r": 415.6936, "b": 374.95330810546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9560132622718811, "cells": [{"id": 25, "text": "Figure 1 on page 3 shows a picture of the IBM z16 mainframe. ", "bbox": {"l": 136.80057, "t": 365.50482, "r": 415.6936, "b": 374.7178, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 1 on page 3 shows a picture of the IBM z16 mainframe."}, {"label": "footnote", "id": 14, "page_no": 3, "cluster": {"id": 14, "label": "footnote", "bbox": {"l": 136.5249786376953, "t": 725.1834106445312, "r": 311.82391, "b": 734.9193115234375, "coord_origin": "TOPLEFT"}, "confidence": 0.8997626900672913, "cells": [{"id": 26, "text": "$^{2 }$https://www.ibm.com/case-studies/bankwest/", "bbox": {"l": 136.8, "t": 727.709961, "r": 311.82391, "b": 734.740341, "coord_origin": "TOPLEFT"}}]}, "text": "$^{2 }$https://www.ibm.com/case-studies/bankwest/"}], "body": [{"label": "section_header", "id": 2, "page_no": 3, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.69976043701172, "t": 70.11424255371094, "r": 212.32149, "b": 85.9837, "coord_origin": "TOPLEFT"}, "confidence": 0.96026211977005, "cells": [{"id": 2, "text": "IBM Z: An overview", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 212.32149, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Z: An overview"}, {"label": "text", "id": 3, "page_no": 3, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.16062927246094, "t": 102.75202941894531, "r": 539.55145, "b": 161.23336791992188, "coord_origin": "TOPLEFT"}, "confidence": 0.9878602623939514, "cells": [{"id": 3, "text": "Ever wonder how many transactions a bank processes per day? What about the pace at ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 529.59741, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "which these transactions happen? According to an IBMfi report, 44 of 50 of the world\u2019s top ", "bbox": {"l": 136.8, "t": 115.48852999999997, "r": 539.55145, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "banks use IBM Z mainframes for these daily transactions.$^{2}$ IBM Z is a platform that is ", "bbox": {"l": 136.8, "t": 127.48834000000011, "r": 514.55249, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "designed for voluminous data, maximum security, real-time transaction analysis, and cost ", "bbox": {"l": 136.79953, "t": 139.48852999999997, "r": 534.53912, "b": 148.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "efficiency. ", "bbox": {"l": 136.79955, "t": 151.48834, "r": 183.94521, "b": 160.70135000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Ever wonder how many transactions a bank processes per day? What about the pace at which these transactions happen? According to an IBMfi report, 44 of 50 of the world\u2019s top banks use IBM Z mainframes for these daily transactions.$^{2}$ IBM Z is a platform that is designed for voluminous data, maximum security, real-time transaction analysis, and cost efficiency."}, {"label": "text", "id": 4, "page_no": 3, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.83799743652344, "t": 172.61083984375, "r": 515.68988, "b": 194.72076000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9694333076477051, "cells": [{"id": 8, "text": "The most recent platform for IBM Z is IBM z16\u2122. The IBM z16 supports the following ", "bbox": {"l": 136.79955, "t": 173.50793, "r": 515.68988, "b": 182.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "features: ", "bbox": {"l": 136.79955, "t": 185.50775, "r": 178.43532, "b": 194.72076000000004, "coord_origin": "TOPLEFT"}}]}, "text": "The most recent platform for IBM Z is IBM z16\u2122. The IBM z16 supports the following features:"}, {"label": "list_item", "id": 5, "page_no": 3, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.797607421875, "t": 201.2985076904297, "r": 255.07155, "b": 211.79501342773438, "coord_origin": "TOPLEFT"}, "confidence": 0.9466004967689514, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.79955, "t": 202.63696000000004, "r": 141.77954, "b": 211.41174, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "On-chip AI acceleration", "bbox": {"l": 151.19971, "t": 202.48755000000006, "r": 255.07155, "b": 211.70056, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH On-chip AI acceleration"}, {"label": "list_item", "id": 6, "page_no": 3, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.7379150390625, "t": 218.8182373046875, "r": 289.6485290527344, "b": 229.28843688964844, "coord_origin": "TOPLEFT"}, "confidence": 0.951557457447052, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.79955, "t": 219.67651, "r": 141.77954, "b": 228.45128999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Quantum-safe crypto discovery", "bbox": {"l": 151.19971, "t": 219.52710000000002, "r": 289.5531, "b": 228.74010999999996, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Quantum-safe crypto discovery"}, {"label": "list_item", "id": 7, "page_no": 3, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.6077423095703, "t": 235.31582641601562, "r": 247.8863983154297, "b": 245.71991000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9488750696182251, "cells": [{"id": 14, "text": "GLYPH", "bbox": {"l": 136.79955, "t": 236.65630999999996, "r": 141.77954, "b": 245.43109000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Simplified compliance", "bbox": {"l": 151.19971, "t": 236.50689999999997, "r": 247.85254, "b": 245.71991000000003, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Simplified compliance"}, {"label": "list_item", "id": 8, "page_no": 3, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.57025146484375, "t": 252.62242126464844, "r": 225.32553100585938, "b": 263.3917236328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9447478652000427, "cells": [{"id": 16, "text": "GLYPH", "bbox": {"l": 136.79955, "t": 253.63611000000003, "r": 141.77954, "b": 262.41089, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Flexible capacity", "bbox": {"l": 151.19971, "t": 253.48668999999995, "r": 225.05908, "b": 262.69971, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Flexible capacity"}, {"label": "list_item", "id": 9, "page_no": 3, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.6380615234375, "t": 269.9613342285156, "r": 280.60699, "b": 280.2677307128906, "coord_origin": "TOPLEFT"}, "confidence": 0.9515380263328552, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.79955, "t": 270.67566, "r": 141.77954, "b": 279.45043999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Modernization of applications", "bbox": {"l": 151.19971, "t": 270.52625, "r": 280.60699, "b": 279.73925999999994, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Modernization of applications"}, {"label": "list_item", "id": 10, "page_no": 3, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.63339233398438, "t": 286.7400207519531, "r": 210.07028, "b": 297.0730895996094, "coord_origin": "TOPLEFT"}, "confidence": 0.9383591413497925, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.80054, "t": 287.65546, "r": 141.78053, "b": 296.43024, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Sustainability", "bbox": {"l": 151.2007, "t": 287.50607, "r": 210.07028, "b": 296.71906, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Sustainability"}, {"label": "text", "id": 11, "page_no": 3, "cluster": {"id": 11, "label": "text", "bbox": {"l": 136.1382598876953, "t": 308.8077392578125, "r": 521.94366, "b": 330.73842999999994, "coord_origin": "TOPLEFT"}, "confidence": 0.972258448600769, "cells": [{"id": 22, "text": "With these features, enterprises can upgrade applications while preserving secure and ", "bbox": {"l": 136.80054, "t": 309.52563, "r": 521.94366, "b": 318.73862, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "resilient data.", "bbox": {"l": 136.80054, "t": 321.52545, "r": 196.20497, "b": 330.73842999999994, "coord_origin": "TOPLEFT"}}]}, "text": "With these features, enterprises can upgrade applications while preserving secure and resilient data."}, {"label": "text", "id": 12, "page_no": 3, "cluster": {"id": 12, "label": "text", "bbox": {"l": 135.73519897460938, "t": 342.67401123046875, "r": 434.58963000000006, "b": 353.0493469238281, "coord_origin": "TOPLEFT"}, "confidence": 0.9527294039726257, "cells": [{"id": 24, "text": "To learn more about these features, see the IBM z16 product page.", "bbox": {"l": 136.80054, "t": 343.48526, "r": 434.58963000000006, "b": 352.69824, "coord_origin": "TOPLEFT"}}]}, "text": "To learn more about these features, see the IBM z16 product page."}, {"label": "text", "id": 13, "page_no": 3, "cluster": {"id": 13, "label": "text", "bbox": {"l": 136.62892150878906, "t": 364.7782287597656, "r": 415.6936, "b": 374.95330810546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9560132622718811, "cells": [{"id": 25, "text": "Figure 1 on page 3 shows a picture of the IBM z16 mainframe. ", "bbox": {"l": 136.80057, "t": 365.50482, "r": 415.6936, "b": 374.7178, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 1 on page 3 shows a picture of the IBM z16 mainframe."}, {"label": "footnote", "id": 14, "page_no": 3, "cluster": {"id": 14, "label": "footnote", "bbox": {"l": 136.5249786376953, "t": 725.1834106445312, "r": 311.82391, "b": 734.9193115234375, "coord_origin": "TOPLEFT"}, "confidence": 0.8997626900672913, "cells": [{"id": 26, "text": "$^{2 }$https://www.ibm.com/case-studies/bankwest/", "bbox": {"l": 136.8, "t": 727.709961, "r": 311.82391, "b": 734.740341, "coord_origin": "TOPLEFT"}}]}, "text": "$^{2 }$https://www.ibm.com/case-studies/bankwest/"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 3, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.95490646362305, "t": 754.27392578125, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8809324502944946, "cells": [{"id": 0, "text": "2 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "2"}, {"label": "page_footer", "id": 1, "page_no": 3, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 87.65045166015625, "t": 754.6927490234375, "r": 261.53851, "b": 763.9190063476562, "coord_origin": "TOPLEFT"}, "confidence": 0.9455875754356384, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 87.840302, "t": 755.538002, "r": 261.53851, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}]}}, {"page_no": 4, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "3", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Figure 1 IBM z16", "bbox": {"l": 136.8, "t": 449.41799999999995, "r": 210.1689, "b": 457.74301, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "IBM z16 and IBM LinuxONE Emperor 4 features", "bbox": {"l": 64.800003, "t": 478.25473, "r": 355.60165, "b": 490.24271, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "IBM Z are based on enterprise mainframe technology. Starting with transaction-based ", "bbox": {"l": 136.8, "t": 504.40863, "r": 518.50519, "b": 513.6216099999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "workloads and databases, IBM Z has undergone tremendous transformations in its system ", "bbox": {"l": 136.8, "t": 516.40845, "r": 539.5545, "b": 525.6214299999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "design for many generations to build servers that cater to Linux-based workloads and security ", "bbox": {"l": 136.8, "t": 528.4082599999999, "r": 547.17712, "b": 537.62126, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "with a cyberresilient system, and support quantum computing and modernization by using a ", "bbox": {"l": 136.8, "t": 540.40807, "r": 543.91998, "b": 549.6210599999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "hybrid cloud with a focus on data and AI. ", "bbox": {"l": 136.8, "t": 552.40787, "r": 319.59286, "b": 561.62086, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 541.0438232421875, "t": 754.4629516601562, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8937394618988037, "cells": [{"id": 0, "text": "3", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "caption", "bbox": {"l": 135.89208984375, "t": 448.34100341796875, "r": 211.0067596435547, "b": 458.0682678222656, "coord_origin": "TOPLEFT"}, "confidence": 0.9125407934188843, "cells": [{"id": 1, "text": "Figure 1 IBM z16", "bbox": {"l": 136.8, "t": 449.41799999999995, "r": 210.1689, "b": 457.74301, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.32122039794922, "t": 477.1279602050781, "r": 355.60165, "b": 490.24271, "coord_origin": "TOPLEFT"}, "confidence": 0.9492653012275696, "cells": [{"id": 2, "text": "IBM z16 and IBM LinuxONE Emperor 4 features", "bbox": {"l": 64.800003, "t": 478.25473, "r": 355.60165, "b": 490.24271, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.82815551757812, "t": 503.3326416015625, "r": 547.17712, "b": 561.62086, "coord_origin": "TOPLEFT"}, "confidence": 0.977308452129364, "cells": [{"id": 3, "text": "IBM Z are based on enterprise mainframe technology. Starting with transaction-based ", "bbox": {"l": 136.8, "t": 504.40863, "r": 518.50519, "b": 513.6216099999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "workloads and databases, IBM Z has undergone tremendous transformations in its system ", "bbox": {"l": 136.8, "t": 516.40845, "r": 539.5545, "b": 525.6214299999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "design for many generations to build servers that cater to Linux-based workloads and security ", "bbox": {"l": 136.8, "t": 528.4082599999999, "r": 547.17712, "b": 537.62126, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "with a cyberresilient system, and support quantum computing and modernization by using a ", "bbox": {"l": 136.8, "t": 540.40807, "r": 543.91998, "b": 549.6210599999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "hybrid cloud with a focus on data and AI. ", "bbox": {"l": 136.8, "t": 552.40787, "r": 319.59286, "b": 561.62086, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "picture", "bbox": {"l": 136.13192749023438, "t": 77.53209686279297, "r": 435.85162353515625, "b": 446.31475830078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9853245615959167, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 4, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 541.0438232421875, "t": 754.4629516601562, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8937394618988037, "cells": [{"id": 0, "text": "3", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "3"}, {"label": "caption", "id": 1, "page_no": 4, "cluster": {"id": 1, "label": "caption", "bbox": {"l": 135.89208984375, "t": 448.34100341796875, "r": 211.0067596435547, "b": 458.0682678222656, "coord_origin": "TOPLEFT"}, "confidence": 0.9125407934188843, "cells": [{"id": 1, "text": "Figure 1 IBM z16", "bbox": {"l": 136.8, "t": 449.41799999999995, "r": 210.1689, "b": 457.74301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 1 IBM z16"}, {"label": "section_header", "id": 2, "page_no": 4, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.32122039794922, "t": 477.1279602050781, "r": 355.60165, "b": 490.24271, "coord_origin": "TOPLEFT"}, "confidence": 0.9492653012275696, "cells": [{"id": 2, "text": "IBM z16 and IBM LinuxONE Emperor 4 features", "bbox": {"l": 64.800003, "t": 478.25473, "r": 355.60165, "b": 490.24271, "coord_origin": "TOPLEFT"}}]}, "text": "IBM z16 and IBM LinuxONE Emperor 4 features"}, {"label": "text", "id": 3, "page_no": 4, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.82815551757812, "t": 503.3326416015625, "r": 547.17712, "b": 561.62086, "coord_origin": "TOPLEFT"}, "confidence": 0.977308452129364, "cells": [{"id": 3, "text": "IBM Z are based on enterprise mainframe technology. Starting with transaction-based ", "bbox": {"l": 136.8, "t": 504.40863, "r": 518.50519, "b": 513.6216099999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "workloads and databases, IBM Z has undergone tremendous transformations in its system ", "bbox": {"l": 136.8, "t": 516.40845, "r": 539.5545, "b": 525.6214299999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "design for many generations to build servers that cater to Linux-based workloads and security ", "bbox": {"l": 136.8, "t": 528.4082599999999, "r": 547.17712, "b": 537.62126, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "with a cyberresilient system, and support quantum computing and modernization by using a ", "bbox": {"l": 136.8, "t": 540.40807, "r": 543.91998, "b": 549.6210599999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "hybrid cloud with a focus on data and AI. ", "bbox": {"l": 136.8, "t": 552.40787, "r": 319.59286, "b": 561.62086, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Z are based on enterprise mainframe technology. Starting with transaction-based workloads and databases, IBM Z has undergone tremendous transformations in its system design for many generations to build servers that cater to Linux-based workloads and security with a cyberresilient system, and support quantum computing and modernization by using a hybrid cloud with a focus on data and AI."}, {"label": "picture", "id": 4, "page_no": 4, "cluster": {"id": 4, "label": "picture", "bbox": {"l": 136.13192749023438, "t": 77.53209686279297, "r": 435.85162353515625, "b": 446.31475830078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9853245615959167, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "caption", "id": 1, "page_no": 4, "cluster": {"id": 1, "label": "caption", "bbox": {"l": 135.89208984375, "t": 448.34100341796875, "r": 211.0067596435547, "b": 458.0682678222656, "coord_origin": "TOPLEFT"}, "confidence": 0.9125407934188843, "cells": [{"id": 1, "text": "Figure 1 IBM z16", "bbox": {"l": 136.8, "t": 449.41799999999995, "r": 210.1689, "b": 457.74301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 1 IBM z16"}, {"label": "section_header", "id": 2, "page_no": 4, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.32122039794922, "t": 477.1279602050781, "r": 355.60165, "b": 490.24271, "coord_origin": "TOPLEFT"}, "confidence": 0.9492653012275696, "cells": [{"id": 2, "text": "IBM z16 and IBM LinuxONE Emperor 4 features", "bbox": {"l": 64.800003, "t": 478.25473, "r": 355.60165, "b": 490.24271, "coord_origin": "TOPLEFT"}}]}, "text": "IBM z16 and IBM LinuxONE Emperor 4 features"}, {"label": "text", "id": 3, "page_no": 4, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.82815551757812, "t": 503.3326416015625, "r": 547.17712, "b": 561.62086, "coord_origin": "TOPLEFT"}, "confidence": 0.977308452129364, "cells": [{"id": 3, "text": "IBM Z are based on enterprise mainframe technology. Starting with transaction-based ", "bbox": {"l": 136.8, "t": 504.40863, "r": 518.50519, "b": 513.6216099999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "workloads and databases, IBM Z has undergone tremendous transformations in its system ", "bbox": {"l": 136.8, "t": 516.40845, "r": 539.5545, "b": 525.6214299999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "design for many generations to build servers that cater to Linux-based workloads and security ", "bbox": {"l": 136.8, "t": 528.4082599999999, "r": 547.17712, "b": 537.62126, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "with a cyberresilient system, and support quantum computing and modernization by using a ", "bbox": {"l": 136.8, "t": 540.40807, "r": 543.91998, "b": 549.6210599999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "hybrid cloud with a focus on data and AI. ", "bbox": {"l": 136.8, "t": 552.40787, "r": 319.59286, "b": 561.62086, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Z are based on enterprise mainframe technology. Starting with transaction-based workloads and databases, IBM Z has undergone tremendous transformations in its system design for many generations to build servers that cater to Linux-based workloads and security with a cyberresilient system, and support quantum computing and modernization by using a hybrid cloud with a focus on data and AI."}, {"label": "picture", "id": 4, "page_no": 4, "cluster": {"id": 4, "label": "picture", "bbox": {"l": 136.13192749023438, "t": 77.53209686279297, "r": 435.85162353515625, "b": 446.31475830078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9853245615959167, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 4, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 541.0438232421875, "t": 754.4629516601562, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8937394618988037, "cells": [{"id": 0, "text": "3", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "3"}]}}, {"page_no": 5, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "4 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 87.840302, "t": 755.538002, "r": 261.53851, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Figure 2 provides a snapshot of the IBM Z processor roadmap, which depicts the journey of ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 543.51959, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "transformation and improvement. ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 286.23691, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 2 IBM Z: Processor roadmap", "bbox": {"l": 64.800003, "t": 379.45801, "r": 212.60968, "b": 387.78302, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "The IBM z16 and IBM LinuxONE Emperor 4 are the latest of the IBM Z, and they are ", "bbox": {"l": 136.8, "t": 401.38873, "r": 512.94336, "b": 410.60172, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "developed with a \u2018built to build\u2019 focus to provide a powerful, cyberresilient, open, and secure ", "bbox": {"l": 136.8, "t": 413.38855, "r": 544.58929, "b": 422.6015300000001, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "platform for business with an extra focus on sustainability to help build sustainable data ", "bbox": {"l": 136.8, "t": 425.38837, "r": 524.4342, "b": 434.60135, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "centers. Although the z16 server can host both IBM z/OSfi and Linux workloads, LinuxONE ", "bbox": {"l": 136.80002, "t": 437.38818, "r": 544.23865, "b": 446.60117, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Emperor 4 is built to host Linux only workloads with a focus on consolidation and resiliency. ", "bbox": {"l": 136.80002, "t": 449.388, "r": 542.95471, "b": 458.60098000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Depending on the workload, consolidation from numerous x86 servers into a LinuxONE ", "bbox": {"l": 136.80002, "t": 461.38782, "r": 525.11334, "b": 470.6008, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Emperor 4 can help reduce energy consumption by 75% and data center floor space by 50%, ", "bbox": {"l": 136.80002, "t": 473.38763, "r": 547.25659, "b": 482.60062, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "which helps to achieve the sustainability goals of the organization.", "bbox": {"l": 136.80002, "t": 485.38745, "r": 428.53240999999997, "b": 494.60043, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Figure 3 on page 5 shows a summary of the system design of IBM LinuxONE Emperor 4 with ", "bbox": {"l": 136.80101, "t": 507.40701, "r": 547.25757, "b": 516.62, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "the IBM Telum\u2122 processor. The IBM Telum processor chip is designed to run enterprise ", "bbox": {"l": 136.80101, "t": 519.40683, "r": 531.66705, "b": 528.6198099999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "applications efficiently where their data resides to embed AI with super low latency. The ", "bbox": {"l": 136.80101, "t": 531.40662, "r": 526.3158, "b": 540.61963, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "support for higher bandwidth and I/O rates is supported through FCP Express cards with an ", "bbox": {"l": 136.80101, "t": 543.40643, "r": 544.12909, "b": 552.61943, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "endpoint security solution. The memory subsystem supports up to 40 TB of memory.", "bbox": {"l": 136.80101, "t": 555.40623, "r": 510.1834999999999, "b": 564.61923, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.14278411865234, "t": 754.1334838867188, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8598024249076843, "cells": [{"id": 0, "text": "4 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 87.67771911621094, "t": 754.752685546875, "r": 261.53851, "b": 763.8809204101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9530899524688721, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 87.840302, "t": 755.538002, "r": 261.53851, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 136.2760009765625, "t": 70.37826538085938, "r": 543.51959, "b": 92.84950256347656, "coord_origin": "TOPLEFT"}, "confidence": 0.8470332026481628, "cells": [{"id": 2, "text": "Figure 2 provides a snapshot of the IBM Z processor roadmap, which depicts the journey of ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 543.51959, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "transformation and improvement. ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 286.23691, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.39653778076172, "t": 378.7839050292969, "r": 213.14488220214844, "b": 388.0233459472656, "coord_origin": "TOPLEFT"}, "confidence": 0.9416331648826599, "cells": [{"id": 4, "text": "Figure 2 IBM Z: Processor roadmap", "bbox": {"l": 64.800003, "t": 379.45801, "r": 212.60968, "b": 387.78302, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 136.178955078125, "t": 400.78466796875, "r": 547.25659, "b": 494.9367980957031, "coord_origin": "TOPLEFT"}, "confidence": 0.9834467768669128, "cells": [{"id": 5, "text": "The IBM z16 and IBM LinuxONE Emperor 4 are the latest of the IBM Z, and they are ", "bbox": {"l": 136.8, "t": 401.38873, "r": 512.94336, "b": 410.60172, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "developed with a \u2018built to build\u2019 focus to provide a powerful, cyberresilient, open, and secure ", "bbox": {"l": 136.8, "t": 413.38855, "r": 544.58929, "b": 422.6015300000001, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "platform for business with an extra focus on sustainability to help build sustainable data ", "bbox": {"l": 136.8, "t": 425.38837, "r": 524.4342, "b": 434.60135, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "centers. Although the z16 server can host both IBM z/OSfi and Linux workloads, LinuxONE ", "bbox": {"l": 136.80002, "t": 437.38818, "r": 544.23865, "b": 446.60117, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Emperor 4 is built to host Linux only workloads with a focus on consolidation and resiliency. ", "bbox": {"l": 136.80002, "t": 449.388, "r": 542.95471, "b": 458.60098000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Depending on the workload, consolidation from numerous x86 servers into a LinuxONE ", "bbox": {"l": 136.80002, "t": 461.38782, "r": 525.11334, "b": 470.6008, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Emperor 4 can help reduce energy consumption by 75% and data center floor space by 50%, ", "bbox": {"l": 136.80002, "t": 473.38763, "r": 547.25659, "b": 482.60062, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "which helps to achieve the sustainability goals of the organization.", "bbox": {"l": 136.80002, "t": 485.38745, "r": 428.53240999999997, "b": 494.60043, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.1420135498047, "t": 506.7176818847656, "r": 547.25757, "b": 565.1494140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9871375560760498, "cells": [{"id": 13, "text": "Figure 3 on page 5 shows a summary of the system design of IBM LinuxONE Emperor 4 with ", "bbox": {"l": 136.80101, "t": 507.40701, "r": 547.25757, "b": 516.62, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "the IBM Telum\u2122 processor. The IBM Telum processor chip is designed to run enterprise ", "bbox": {"l": 136.80101, "t": 519.40683, "r": 531.66705, "b": 528.6198099999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "applications efficiently where their data resides to embed AI with super low latency. The ", "bbox": {"l": 136.80101, "t": 531.40662, "r": 526.3158, "b": 540.61963, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "support for higher bandwidth and I/O rates is supported through FCP Express cards with an ", "bbox": {"l": 136.80101, "t": 543.40643, "r": 544.12909, "b": 552.61943, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "endpoint security solution. The memory subsystem supports up to 40 TB of memory.", "bbox": {"l": 136.80101, "t": 555.40623, "r": 510.1834999999999, "b": 564.61923, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "picture", "bbox": {"l": 63.98974609375, "t": 106.94452667236328, "r": 547.5855102539062, "b": 375.7152404785156, "coord_origin": "TOPLEFT"}, "confidence": 0.9836835265159607, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 5, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.14278411865234, "t": 754.1334838867188, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8598024249076843, "cells": [{"id": 0, "text": "4 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "4"}, {"label": "page_footer", "id": 1, "page_no": 5, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 87.67771911621094, "t": 754.752685546875, "r": 261.53851, "b": 763.8809204101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9530899524688721, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 87.840302, "t": 755.538002, "r": 261.53851, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"label": "text", "id": 2, "page_no": 5, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.2760009765625, "t": 70.37826538085938, "r": 543.51959, "b": 92.84950256347656, "coord_origin": "TOPLEFT"}, "confidence": 0.8470332026481628, "cells": [{"id": 2, "text": "Figure 2 provides a snapshot of the IBM Z processor roadmap, which depicts the journey of ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 543.51959, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "transformation and improvement. ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 286.23691, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 2 provides a snapshot of the IBM Z processor roadmap, which depicts the journey of transformation and improvement."}, {"label": "caption", "id": 3, "page_no": 5, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.39653778076172, "t": 378.7839050292969, "r": 213.14488220214844, "b": 388.0233459472656, "coord_origin": "TOPLEFT"}, "confidence": 0.9416331648826599, "cells": [{"id": 4, "text": "Figure 2 IBM Z: Processor roadmap", "bbox": {"l": 64.800003, "t": 379.45801, "r": 212.60968, "b": 387.78302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 2 IBM Z: Processor roadmap"}, {"label": "text", "id": 4, "page_no": 5, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.178955078125, "t": 400.78466796875, "r": 547.25659, "b": 494.9367980957031, "coord_origin": "TOPLEFT"}, "confidence": 0.9834467768669128, "cells": [{"id": 5, "text": "The IBM z16 and IBM LinuxONE Emperor 4 are the latest of the IBM Z, and they are ", "bbox": {"l": 136.8, "t": 401.38873, "r": 512.94336, "b": 410.60172, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "developed with a \u2018built to build\u2019 focus to provide a powerful, cyberresilient, open, and secure ", "bbox": {"l": 136.8, "t": 413.38855, "r": 544.58929, "b": 422.6015300000001, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "platform for business with an extra focus on sustainability to help build sustainable data ", "bbox": {"l": 136.8, "t": 425.38837, "r": 524.4342, "b": 434.60135, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "centers. Although the z16 server can host both IBM z/OSfi and Linux workloads, LinuxONE ", "bbox": {"l": 136.80002, "t": 437.38818, "r": 544.23865, "b": 446.60117, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Emperor 4 is built to host Linux only workloads with a focus on consolidation and resiliency. ", "bbox": {"l": 136.80002, "t": 449.388, "r": 542.95471, "b": 458.60098000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Depending on the workload, consolidation from numerous x86 servers into a LinuxONE ", "bbox": {"l": 136.80002, "t": 461.38782, "r": 525.11334, "b": 470.6008, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Emperor 4 can help reduce energy consumption by 75% and data center floor space by 50%, ", "bbox": {"l": 136.80002, "t": 473.38763, "r": 547.25659, "b": 482.60062, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "which helps to achieve the sustainability goals of the organization.", "bbox": {"l": 136.80002, "t": 485.38745, "r": 428.53240999999997, "b": 494.60043, "coord_origin": "TOPLEFT"}}]}, "text": "The IBM z16 and IBM LinuxONE Emperor 4 are the latest of the IBM Z, and they are developed with a \u2018built to build\u2019 focus to provide a powerful, cyberresilient, open, and secure platform for business with an extra focus on sustainability to help build sustainable data centers. Although the z16 server can host both IBM z/OSfi and Linux workloads, LinuxONE Emperor 4 is built to host Linux only workloads with a focus on consolidation and resiliency. Depending on the workload, consolidation from numerous x86 servers into a LinuxONE Emperor 4 can help reduce energy consumption by 75% and data center floor space by 50%, which helps to achieve the sustainability goals of the organization."}, {"label": "text", "id": 5, "page_no": 5, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.1420135498047, "t": 506.7176818847656, "r": 547.25757, "b": 565.1494140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9871375560760498, "cells": [{"id": 13, "text": "Figure 3 on page 5 shows a summary of the system design of IBM LinuxONE Emperor 4 with ", "bbox": {"l": 136.80101, "t": 507.40701, "r": 547.25757, "b": 516.62, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "the IBM Telum\u2122 processor. The IBM Telum processor chip is designed to run enterprise ", "bbox": {"l": 136.80101, "t": 519.40683, "r": 531.66705, "b": 528.6198099999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "applications efficiently where their data resides to embed AI with super low latency. The ", "bbox": {"l": 136.80101, "t": 531.40662, "r": 526.3158, "b": 540.61963, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "support for higher bandwidth and I/O rates is supported through FCP Express cards with an ", "bbox": {"l": 136.80101, "t": 543.40643, "r": 544.12909, "b": 552.61943, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "endpoint security solution. The memory subsystem supports up to 40 TB of memory.", "bbox": {"l": 136.80101, "t": 555.40623, "r": 510.1834999999999, "b": 564.61923, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3 on page 5 shows a summary of the system design of IBM LinuxONE Emperor 4 with the IBM Telum\u2122 processor. The IBM Telum processor chip is designed to run enterprise applications efficiently where their data resides to embed AI with super low latency. The support for higher bandwidth and I/O rates is supported through FCP Express cards with an endpoint security solution. The memory subsystem supports up to 40 TB of memory."}, {"label": "picture", "id": 6, "page_no": 5, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 63.98974609375, "t": 106.94452667236328, "r": 547.5855102539062, "b": 375.7152404785156, "coord_origin": "TOPLEFT"}, "confidence": 0.9836835265159607, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 5, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.2760009765625, "t": 70.37826538085938, "r": 543.51959, "b": 92.84950256347656, "coord_origin": "TOPLEFT"}, "confidence": 0.8470332026481628, "cells": [{"id": 2, "text": "Figure 2 provides a snapshot of the IBM Z processor roadmap, which depicts the journey of ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 543.51959, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "transformation and improvement. ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 286.23691, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 2 provides a snapshot of the IBM Z processor roadmap, which depicts the journey of transformation and improvement."}, {"label": "caption", "id": 3, "page_no": 5, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.39653778076172, "t": 378.7839050292969, "r": 213.14488220214844, "b": 388.0233459472656, "coord_origin": "TOPLEFT"}, "confidence": 0.9416331648826599, "cells": [{"id": 4, "text": "Figure 2 IBM Z: Processor roadmap", "bbox": {"l": 64.800003, "t": 379.45801, "r": 212.60968, "b": 387.78302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 2 IBM Z: Processor roadmap"}, {"label": "text", "id": 4, "page_no": 5, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.178955078125, "t": 400.78466796875, "r": 547.25659, "b": 494.9367980957031, "coord_origin": "TOPLEFT"}, "confidence": 0.9834467768669128, "cells": [{"id": 5, "text": "The IBM z16 and IBM LinuxONE Emperor 4 are the latest of the IBM Z, and they are ", "bbox": {"l": 136.8, "t": 401.38873, "r": 512.94336, "b": 410.60172, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "developed with a \u2018built to build\u2019 focus to provide a powerful, cyberresilient, open, and secure ", "bbox": {"l": 136.8, "t": 413.38855, "r": 544.58929, "b": 422.6015300000001, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "platform for business with an extra focus on sustainability to help build sustainable data ", "bbox": {"l": 136.8, "t": 425.38837, "r": 524.4342, "b": 434.60135, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "centers. Although the z16 server can host both IBM z/OSfi and Linux workloads, LinuxONE ", "bbox": {"l": 136.80002, "t": 437.38818, "r": 544.23865, "b": 446.60117, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Emperor 4 is built to host Linux only workloads with a focus on consolidation and resiliency. ", "bbox": {"l": 136.80002, "t": 449.388, "r": 542.95471, "b": 458.60098000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Depending on the workload, consolidation from numerous x86 servers into a LinuxONE ", "bbox": {"l": 136.80002, "t": 461.38782, "r": 525.11334, "b": 470.6008, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Emperor 4 can help reduce energy consumption by 75% and data center floor space by 50%, ", "bbox": {"l": 136.80002, "t": 473.38763, "r": 547.25659, "b": 482.60062, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "which helps to achieve the sustainability goals of the organization.", "bbox": {"l": 136.80002, "t": 485.38745, "r": 428.53240999999997, "b": 494.60043, "coord_origin": "TOPLEFT"}}]}, "text": "The IBM z16 and IBM LinuxONE Emperor 4 are the latest of the IBM Z, and they are developed with a \u2018built to build\u2019 focus to provide a powerful, cyberresilient, open, and secure platform for business with an extra focus on sustainability to help build sustainable data centers. Although the z16 server can host both IBM z/OSfi and Linux workloads, LinuxONE Emperor 4 is built to host Linux only workloads with a focus on consolidation and resiliency. Depending on the workload, consolidation from numerous x86 servers into a LinuxONE Emperor 4 can help reduce energy consumption by 75% and data center floor space by 50%, which helps to achieve the sustainability goals of the organization."}, {"label": "text", "id": 5, "page_no": 5, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.1420135498047, "t": 506.7176818847656, "r": 547.25757, "b": 565.1494140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9871375560760498, "cells": [{"id": 13, "text": "Figure 3 on page 5 shows a summary of the system design of IBM LinuxONE Emperor 4 with ", "bbox": {"l": 136.80101, "t": 507.40701, "r": 547.25757, "b": 516.62, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "the IBM Telum\u2122 processor. The IBM Telum processor chip is designed to run enterprise ", "bbox": {"l": 136.80101, "t": 519.40683, "r": 531.66705, "b": 528.6198099999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "applications efficiently where their data resides to embed AI with super low latency. The ", "bbox": {"l": 136.80101, "t": 531.40662, "r": 526.3158, "b": 540.61963, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "support for higher bandwidth and I/O rates is supported through FCP Express cards with an ", "bbox": {"l": 136.80101, "t": 543.40643, "r": 544.12909, "b": 552.61943, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "endpoint security solution. The memory subsystem supports up to 40 TB of memory.", "bbox": {"l": 136.80101, "t": 555.40623, "r": 510.1834999999999, "b": 564.61923, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3 on page 5 shows a summary of the system design of IBM LinuxONE Emperor 4 with the IBM Telum\u2122 processor. The IBM Telum processor chip is designed to run enterprise applications efficiently where their data resides to embed AI with super low latency. The support for higher bandwidth and I/O rates is supported through FCP Express cards with an endpoint security solution. The memory subsystem supports up to 40 TB of memory."}, {"label": "picture", "id": 6, "page_no": 5, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 63.98974609375, "t": 106.94452667236328, "r": 547.5855102539062, "b": 375.7152404785156, "coord_origin": "TOPLEFT"}, "confidence": 0.9836835265159607, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 5, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.14278411865234, "t": 754.1334838867188, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8598024249076843, "cells": [{"id": 0, "text": "4 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "4"}, {"label": "page_footer", "id": 1, "page_no": 5, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 87.67771911621094, "t": 754.752685546875, "r": 261.53851, "b": 763.8809204101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9530899524688721, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 87.840302, "t": 755.538002, "r": 261.53851, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}]}}, {"page_no": 6, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "5", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Figure 3 System design of IBM z16 LinuxONE Emperor 4", "bbox": {"l": 64.800003, "t": 352.81799, "r": 297.52286, "b": 361.14301, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "The IBM z16 and IBM LinuxONE Emperor 4 servers are built with 7-nm technology at a ", "bbox": {"l": 136.8, "t": 374.80872, "r": 524.61151, "b": 384.0217, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "5.2", "bbox": {"l": 136.8, "t": 386.80853, "r": 150.69597, "b": 396.02151, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "GHz speed. They consist of four dual-chip modules (DCMs) per central processor ", "bbox": {"l": 153.47516, "t": 386.80853, "r": 516.81982, "b": 396.02151, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "complex (CPC) drawer, each of which is built with two 8-core Telum processor chips that has ", "bbox": {"l": 136.8, "t": 398.80835, "r": 547.29742, "b": 408.02133, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "\u201cfirst in the industry\u201d on-chip acceleration for mid-transaction, real-time AI inferencing, which ", "bbox": {"l": 136.8, "t": 410.80816999999996, "r": 544.5694, "b": 420.02115, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "supports many different use cases, including fraud detection. ", "bbox": {"l": 136.80103, "t": 422.80798, "r": 408.50385, "b": 432.02097, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Each core has access to a huge private 32 MB L2 cache where up to 16 MB of the L2 cache ", "bbox": {"l": 136.80103, "t": 444.82755, "r": 547.32227, "b": 454.04053, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "of an inactive core can be used as virtual cache (L3 / L4) by neighboring active cores on the ", "bbox": {"l": 136.80103, "t": 456.82736, "r": 545.1839, "b": 466.04034, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "chip. This cache helps address translation and access checking by prefetching the same ", "bbox": {"l": 136.80103, "t": 468.82718, "r": 530.6084, "b": 478.04016, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "virtual cache into the L2 cache. The virtual cache also includes Neural Network Processing ", "bbox": {"l": 136.80104, "t": 480.827, "r": 540.67108, "b": 490.03998, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Assist instructions and direct memory access with protection, and per chip GZIP ", "bbox": {"l": 136.80104, "t": 492.82681, "r": 492.88702, "b": 502.03979, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "compression.", "bbox": {"l": 136.80103, "t": 504.82663, "r": 196.24731, "b": 514.03961, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 541.200439453125, "t": 754.4961547851562, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8813691735267639, "cells": [{"id": 0, "text": "5", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "caption", "bbox": {"l": 64.30784606933594, "t": 352.14569091796875, "r": 297.72265625, "b": 361.3935241699219, "coord_origin": "TOPLEFT"}, "confidence": 0.9315948486328125, "cells": [{"id": 1, "text": "Figure 3 System design of IBM z16 LinuxONE Emperor 4", "bbox": {"l": 64.800003, "t": 352.81799, "r": 297.52286, "b": 361.14301, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.62088012695312, "t": 374.16082763671875, "r": 547.29742, "b": 432.24200439453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9837573170661926, "cells": [{"id": 2, "text": "The IBM z16 and IBM LinuxONE Emperor 4 servers are built with 7-nm technology at a ", "bbox": {"l": 136.8, "t": 374.80872, "r": 524.61151, "b": 384.0217, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "5.2", "bbox": {"l": 136.8, "t": 386.80853, "r": 150.69597, "b": 396.02151, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "GHz speed. They consist of four dual-chip modules (DCMs) per central processor ", "bbox": {"l": 153.47516, "t": 386.80853, "r": 516.81982, "b": 396.02151, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "complex (CPC) drawer, each of which is built with two 8-core Telum processor chips that has ", "bbox": {"l": 136.8, "t": 398.80835, "r": 547.29742, "b": 408.02133, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "\u201cfirst in the industry\u201d on-chip acceleration for mid-transaction, real-time AI inferencing, which ", "bbox": {"l": 136.8, "t": 410.80816999999996, "r": 544.5694, "b": 420.02115, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "supports many different use cases, including fraud detection. ", "bbox": {"l": 136.80103, "t": 422.80798, "r": 408.50385, "b": 432.02097, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.72621154785156, "t": 444.0623474121094, "r": 547.32227, "b": 514.1723022460938, "coord_origin": "TOPLEFT"}, "confidence": 0.9840249419212341, "cells": [{"id": 8, "text": "Each core has access to a huge private 32 MB L2 cache where up to 16 MB of the L2 cache ", "bbox": {"l": 136.80103, "t": 444.82755, "r": 547.32227, "b": 454.04053, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "of an inactive core can be used as virtual cache (L3 / L4) by neighboring active cores on the ", "bbox": {"l": 136.80103, "t": 456.82736, "r": 545.1839, "b": 466.04034, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "chip. This cache helps address translation and access checking by prefetching the same ", "bbox": {"l": 136.80103, "t": 468.82718, "r": 530.6084, "b": 478.04016, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "virtual cache into the L2 cache. The virtual cache also includes Neural Network Processing ", "bbox": {"l": 136.80104, "t": 480.827, "r": 540.67108, "b": 490.03998, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Assist instructions and direct memory access with protection, and per chip GZIP ", "bbox": {"l": 136.80104, "t": 492.82681, "r": 492.88702, "b": 502.03979, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "compression.", "bbox": {"l": 136.80103, "t": 504.82663, "r": 196.24731, "b": 514.03961, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "picture", "bbox": {"l": 65.5059585571289, "t": 79.5738296508789, "r": 547.4702758789062, "b": 350.3516845703125, "coord_origin": "TOPLEFT"}, "confidence": 0.6088427901268005, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 6, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 541.200439453125, "t": 754.4961547851562, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8813691735267639, "cells": [{"id": 0, "text": "5", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "5"}, {"label": "caption", "id": 1, "page_no": 6, "cluster": {"id": 1, "label": "caption", "bbox": {"l": 64.30784606933594, "t": 352.14569091796875, "r": 297.72265625, "b": 361.3935241699219, "coord_origin": "TOPLEFT"}, "confidence": 0.9315948486328125, "cells": [{"id": 1, "text": "Figure 3 System design of IBM z16 LinuxONE Emperor 4", "bbox": {"l": 64.800003, "t": 352.81799, "r": 297.52286, "b": 361.14301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3 System design of IBM z16 LinuxONE Emperor 4"}, {"label": "text", "id": 2, "page_no": 6, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.62088012695312, "t": 374.16082763671875, "r": 547.29742, "b": 432.24200439453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9837573170661926, "cells": [{"id": 2, "text": "The IBM z16 and IBM LinuxONE Emperor 4 servers are built with 7-nm technology at a ", "bbox": {"l": 136.8, "t": 374.80872, "r": 524.61151, "b": 384.0217, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "5.2", "bbox": {"l": 136.8, "t": 386.80853, "r": 150.69597, "b": 396.02151, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "GHz speed. They consist of four dual-chip modules (DCMs) per central processor ", "bbox": {"l": 153.47516, "t": 386.80853, "r": 516.81982, "b": 396.02151, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "complex (CPC) drawer, each of which is built with two 8-core Telum processor chips that has ", "bbox": {"l": 136.8, "t": 398.80835, "r": 547.29742, "b": 408.02133, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "\u201cfirst in the industry\u201d on-chip acceleration for mid-transaction, real-time AI inferencing, which ", "bbox": {"l": 136.8, "t": 410.80816999999996, "r": 544.5694, "b": 420.02115, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "supports many different use cases, including fraud detection. ", "bbox": {"l": 136.80103, "t": 422.80798, "r": 408.50385, "b": 432.02097, "coord_origin": "TOPLEFT"}}]}, "text": "The IBM z16 and IBM LinuxONE Emperor 4 servers are built with 7-nm technology at a 5.2 GHz speed. They consist of four dual-chip modules (DCMs) per central processor complex (CPC) drawer, each of which is built with two 8-core Telum processor chips that has \u201cfirst in the industry\u201d on-chip acceleration for mid-transaction, real-time AI inferencing, which supports many different use cases, including fraud detection."}, {"label": "text", "id": 3, "page_no": 6, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.72621154785156, "t": 444.0623474121094, "r": 547.32227, "b": 514.1723022460938, "coord_origin": "TOPLEFT"}, "confidence": 0.9840249419212341, "cells": [{"id": 8, "text": "Each core has access to a huge private 32 MB L2 cache where up to 16 MB of the L2 cache ", "bbox": {"l": 136.80103, "t": 444.82755, "r": 547.32227, "b": 454.04053, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "of an inactive core can be used as virtual cache (L3 / L4) by neighboring active cores on the ", "bbox": {"l": 136.80103, "t": 456.82736, "r": 545.1839, "b": 466.04034, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "chip. This cache helps address translation and access checking by prefetching the same ", "bbox": {"l": 136.80103, "t": 468.82718, "r": 530.6084, "b": 478.04016, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "virtual cache into the L2 cache. The virtual cache also includes Neural Network Processing ", "bbox": {"l": 136.80104, "t": 480.827, "r": 540.67108, "b": 490.03998, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Assist instructions and direct memory access with protection, and per chip GZIP ", "bbox": {"l": 136.80104, "t": 492.82681, "r": 492.88702, "b": 502.03979, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "compression.", "bbox": {"l": 136.80103, "t": 504.82663, "r": 196.24731, "b": 514.03961, "coord_origin": "TOPLEFT"}}]}, "text": "Each core has access to a huge private 32 MB L2 cache where up to 16 MB of the L2 cache of an inactive core can be used as virtual cache (L3 / L4) by neighboring active cores on the chip. This cache helps address translation and access checking by prefetching the same virtual cache into the L2 cache. The virtual cache also includes Neural Network Processing Assist instructions and direct memory access with protection, and per chip GZIP compression."}, {"label": "picture", "id": 4, "page_no": 6, "cluster": {"id": 4, "label": "picture", "bbox": {"l": 65.5059585571289, "t": 79.5738296508789, "r": 547.4702758789062, "b": 350.3516845703125, "coord_origin": "TOPLEFT"}, "confidence": 0.6088427901268005, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "caption", "id": 1, "page_no": 6, "cluster": {"id": 1, "label": "caption", "bbox": {"l": 64.30784606933594, "t": 352.14569091796875, "r": 297.72265625, "b": 361.3935241699219, "coord_origin": "TOPLEFT"}, "confidence": 0.9315948486328125, "cells": [{"id": 1, "text": "Figure 3 System design of IBM z16 LinuxONE Emperor 4", "bbox": {"l": 64.800003, "t": 352.81799, "r": 297.52286, "b": 361.14301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3 System design of IBM z16 LinuxONE Emperor 4"}, {"label": "text", "id": 2, "page_no": 6, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.62088012695312, "t": 374.16082763671875, "r": 547.29742, "b": 432.24200439453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9837573170661926, "cells": [{"id": 2, "text": "The IBM z16 and IBM LinuxONE Emperor 4 servers are built with 7-nm technology at a ", "bbox": {"l": 136.8, "t": 374.80872, "r": 524.61151, "b": 384.0217, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "5.2", "bbox": {"l": 136.8, "t": 386.80853, "r": 150.69597, "b": 396.02151, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "GHz speed. They consist of four dual-chip modules (DCMs) per central processor ", "bbox": {"l": 153.47516, "t": 386.80853, "r": 516.81982, "b": 396.02151, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "complex (CPC) drawer, each of which is built with two 8-core Telum processor chips that has ", "bbox": {"l": 136.8, "t": 398.80835, "r": 547.29742, "b": 408.02133, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "\u201cfirst in the industry\u201d on-chip acceleration for mid-transaction, real-time AI inferencing, which ", "bbox": {"l": 136.8, "t": 410.80816999999996, "r": 544.5694, "b": 420.02115, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "supports many different use cases, including fraud detection. ", "bbox": {"l": 136.80103, "t": 422.80798, "r": 408.50385, "b": 432.02097, "coord_origin": "TOPLEFT"}}]}, "text": "The IBM z16 and IBM LinuxONE Emperor 4 servers are built with 7-nm technology at a 5.2 GHz speed. They consist of four dual-chip modules (DCMs) per central processor complex (CPC) drawer, each of which is built with two 8-core Telum processor chips that has \u201cfirst in the industry\u201d on-chip acceleration for mid-transaction, real-time AI inferencing, which supports many different use cases, including fraud detection."}, {"label": "text", "id": 3, "page_no": 6, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.72621154785156, "t": 444.0623474121094, "r": 547.32227, "b": 514.1723022460938, "coord_origin": "TOPLEFT"}, "confidence": 0.9840249419212341, "cells": [{"id": 8, "text": "Each core has access to a huge private 32 MB L2 cache where up to 16 MB of the L2 cache ", "bbox": {"l": 136.80103, "t": 444.82755, "r": 547.32227, "b": 454.04053, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "of an inactive core can be used as virtual cache (L3 / L4) by neighboring active cores on the ", "bbox": {"l": 136.80103, "t": 456.82736, "r": 545.1839, "b": 466.04034, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "chip. This cache helps address translation and access checking by prefetching the same ", "bbox": {"l": 136.80103, "t": 468.82718, "r": 530.6084, "b": 478.04016, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "virtual cache into the L2 cache. The virtual cache also includes Neural Network Processing ", "bbox": {"l": 136.80104, "t": 480.827, "r": 540.67108, "b": 490.03998, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Assist instructions and direct memory access with protection, and per chip GZIP ", "bbox": {"l": 136.80104, "t": 492.82681, "r": 492.88702, "b": 502.03979, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "compression.", "bbox": {"l": 136.80103, "t": 504.82663, "r": 196.24731, "b": 514.03961, "coord_origin": "TOPLEFT"}}]}, "text": "Each core has access to a huge private 32 MB L2 cache where up to 16 MB of the L2 cache of an inactive core can be used as virtual cache (L3 / L4) by neighboring active cores on the chip. This cache helps address translation and access checking by prefetching the same virtual cache into the L2 cache. The virtual cache also includes Neural Network Processing Assist instructions and direct memory access with protection, and per chip GZIP compression."}, {"label": "picture", "id": 4, "page_no": 6, "cluster": {"id": 4, "label": "picture", "bbox": {"l": 65.5059585571289, "t": 79.5738296508789, "r": 547.4702758789062, "b": 350.3516845703125, "coord_origin": "TOPLEFT"}, "confidence": 0.6088427901268005, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 6, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 541.200439453125, "t": 754.4961547851562, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8813691735267639, "cells": [{"id": 0, "text": "5", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "5"}]}}, {"page_no": 7, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "6 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 87.840302, "t": 755.538002, "r": 261.53851, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Figure 4 provides more information about the features of AI Accelerator integration with the ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 541.31055, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "IBM Z processor cores. ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 242.90685999999997, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 4", "bbox": {"l": 64.800003, "t": 365.05798, "r": 97.754448, "b": 373.38300000000004, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "IBM z16 on-chip AI Accelerator integration with IBM Z processor cores ", "bbox": {"l": 105.24736, "t": 365.05798, "r": 387.35461, "b": 373.38300000000004, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "The IBM z16 and IBM LinuxONE Emperor 4 server platforms are built with the hardware ", "bbox": {"l": 136.8, "t": 387.04873999999995, "r": 528.51288, "b": 396.26172, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "features that are shown in Figure 4 with addressing data and AI workloads in mind. ", "bbox": {"l": 136.8, "t": 399.04855, "r": 505.67551, "b": 408.26154, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Regardless of where the ML and deep learning (DL) frameworks are used to build and train ", "bbox": {"l": 136.8, "t": 411.04837, "r": 542.40015, "b": 420.26135, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "data and AI models, the inferencing on existing enterprise application data can happen along ", "bbox": {"l": 136.8, "t": 423.0481899999999, "r": 547.23456, "b": 432.26117, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "currently running enterprise business applications. CP4D 4.6 supports Tensorflow and IBM ", "bbox": {"l": 136.8, "t": 435.048, "r": 540.64105, "b": 444.26099, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Snap ML frameworks, which are optimized to use the on-chip AI Accelerator during ", "bbox": {"l": 136.8, "t": 447.04782, "r": 506.2542700000001, "b": 456.26079999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "inferencing. Support for various other frameworks is planned for future releases.", "bbox": {"l": 136.8, "t": 459.04764, "r": 490.18079000000006, "b": 468.26062, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Figure 5 on page 7 shows the seamless integration of AI into existing enterprises workloads ", "bbox": {"l": 136.8, "t": 481.00745, "r": 544.62225, "b": 490.22043, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "on the IBM z16 while leveraging the underlying hardware capabilities. ", "bbox": {"l": 136.8, "t": 493.00726, "r": 446.24227999999994, "b": 502.22025, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.22818756103516, "t": 754.2823486328125, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8751445412635803, "cells": [{"id": 0, "text": "6 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 87.59947204589844, "t": 754.7195434570312, "r": 261.53851, "b": 763.9192504882812, "coord_origin": "TOPLEFT"}, "confidence": 0.9498522877693176, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 87.840302, "t": 755.538002, "r": 261.53851, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 136.43333435058594, "t": 70.56073760986328, "r": 541.31055, "b": 93.01757049560547, "coord_origin": "TOPLEFT"}, "confidence": 0.90760338306427, "cells": [{"id": 2, "text": "Figure 4 provides more information about the features of AI Accelerator integration with the ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 541.31055, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "IBM Z processor cores. ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 242.90685999999997, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.16301727294922, "t": 364.0627746582031, "r": 387.35461, "b": 373.4560546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9267767071723938, "cells": [{"id": 4, "text": "Figure 4", "bbox": {"l": 64.800003, "t": 365.05798, "r": 97.754448, "b": 373.38300000000004, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "IBM z16 on-chip AI Accelerator integration with IBM Z processor cores ", "bbox": {"l": 105.24736, "t": 365.05798, "r": 387.35461, "b": 373.38300000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.82852172851562, "t": 385.96783447265625, "r": 547.23456, "b": 468.49432373046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9764872193336487, "cells": [{"id": 6, "text": "The IBM z16 and IBM LinuxONE Emperor 4 server platforms are built with the hardware ", "bbox": {"l": 136.8, "t": 387.04873999999995, "r": 528.51288, "b": 396.26172, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "features that are shown in Figure 4 with addressing data and AI workloads in mind. ", "bbox": {"l": 136.8, "t": 399.04855, "r": 505.67551, "b": 408.26154, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Regardless of where the ML and deep learning (DL) frameworks are used to build and train ", "bbox": {"l": 136.8, "t": 411.04837, "r": 542.40015, "b": 420.26135, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "data and AI models, the inferencing on existing enterprise application data can happen along ", "bbox": {"l": 136.8, "t": 423.0481899999999, "r": 547.23456, "b": 432.26117, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "currently running enterprise business applications. CP4D 4.6 supports Tensorflow and IBM ", "bbox": {"l": 136.8, "t": 435.048, "r": 540.64105, "b": 444.26099, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Snap ML frameworks, which are optimized to use the on-chip AI Accelerator during ", "bbox": {"l": 136.8, "t": 447.04782, "r": 506.2542700000001, "b": 456.26079999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "inferencing. Support for various other frameworks is planned for future releases.", "bbox": {"l": 136.8, "t": 459.04764, "r": 490.18079000000006, "b": 468.26062, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.02378845214844, "t": 479.8658142089844, "r": 544.62225, "b": 502.5115051269531, "coord_origin": "TOPLEFT"}, "confidence": 0.9691742062568665, "cells": [{"id": 13, "text": "Figure 5 on page 7 shows the seamless integration of AI into existing enterprises workloads ", "bbox": {"l": 136.8, "t": 481.00745, "r": 544.62225, "b": 490.22043, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "on the IBM z16 while leveraging the underlying hardware capabilities. ", "bbox": {"l": 136.8, "t": 493.00726, "r": 446.24227999999994, "b": 502.22025, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "picture", "bbox": {"l": 65.81348419189453, "t": 108.23880767822266, "r": 547.791259765625, "b": 361.2843322753906, "coord_origin": "TOPLEFT"}, "confidence": 0.668588399887085, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 7, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.22818756103516, "t": 754.2823486328125, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8751445412635803, "cells": [{"id": 0, "text": "6 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "6"}, {"label": "page_footer", "id": 1, "page_no": 7, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 87.59947204589844, "t": 754.7195434570312, "r": 261.53851, "b": 763.9192504882812, "coord_origin": "TOPLEFT"}, "confidence": 0.9498522877693176, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 87.840302, "t": 755.538002, "r": 261.53851, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"label": "text", "id": 2, "page_no": 7, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.43333435058594, "t": 70.56073760986328, "r": 541.31055, "b": 93.01757049560547, "coord_origin": "TOPLEFT"}, "confidence": 0.90760338306427, "cells": [{"id": 2, "text": "Figure 4 provides more information about the features of AI Accelerator integration with the ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 541.31055, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "IBM Z processor cores. ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 242.90685999999997, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4 provides more information about the features of AI Accelerator integration with the IBM Z processor cores."}, {"label": "caption", "id": 3, "page_no": 7, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.16301727294922, "t": 364.0627746582031, "r": 387.35461, "b": 373.4560546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9267767071723938, "cells": [{"id": 4, "text": "Figure 4", "bbox": {"l": 64.800003, "t": 365.05798, "r": 97.754448, "b": 373.38300000000004, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "IBM z16 on-chip AI Accelerator integration with IBM Z processor cores ", "bbox": {"l": 105.24736, "t": 365.05798, "r": 387.35461, "b": 373.38300000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4 IBM z16 on-chip AI Accelerator integration with IBM Z processor cores"}, {"label": "text", "id": 4, "page_no": 7, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.82852172851562, "t": 385.96783447265625, "r": 547.23456, "b": 468.49432373046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9764872193336487, "cells": [{"id": 6, "text": "The IBM z16 and IBM LinuxONE Emperor 4 server platforms are built with the hardware ", "bbox": {"l": 136.8, "t": 387.04873999999995, "r": 528.51288, "b": 396.26172, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "features that are shown in Figure 4 with addressing data and AI workloads in mind. ", "bbox": {"l": 136.8, "t": 399.04855, "r": 505.67551, "b": 408.26154, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Regardless of where the ML and deep learning (DL) frameworks are used to build and train ", "bbox": {"l": 136.8, "t": 411.04837, "r": 542.40015, "b": 420.26135, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "data and AI models, the inferencing on existing enterprise application data can happen along ", "bbox": {"l": 136.8, "t": 423.0481899999999, "r": 547.23456, "b": 432.26117, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "currently running enterprise business applications. CP4D 4.6 supports Tensorflow and IBM ", "bbox": {"l": 136.8, "t": 435.048, "r": 540.64105, "b": 444.26099, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Snap ML frameworks, which are optimized to use the on-chip AI Accelerator during ", "bbox": {"l": 136.8, "t": 447.04782, "r": 506.2542700000001, "b": 456.26079999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "inferencing. Support for various other frameworks is planned for future releases.", "bbox": {"l": 136.8, "t": 459.04764, "r": 490.18079000000006, "b": 468.26062, "coord_origin": "TOPLEFT"}}]}, "text": "The IBM z16 and IBM LinuxONE Emperor 4 server platforms are built with the hardware features that are shown in Figure 4 with addressing data and AI workloads in mind. Regardless of where the ML and deep learning (DL) frameworks are used to build and train data and AI models, the inferencing on existing enterprise application data can happen along currently running enterprise business applications. CP4D 4.6 supports Tensorflow and IBM Snap ML frameworks, which are optimized to use the on-chip AI Accelerator during inferencing. Support for various other frameworks is planned for future releases."}, {"label": "text", "id": 5, "page_no": 7, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.02378845214844, "t": 479.8658142089844, "r": 544.62225, "b": 502.5115051269531, "coord_origin": "TOPLEFT"}, "confidence": 0.9691742062568665, "cells": [{"id": 13, "text": "Figure 5 on page 7 shows the seamless integration of AI into existing enterprises workloads ", "bbox": {"l": 136.8, "t": 481.00745, "r": 544.62225, "b": 490.22043, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "on the IBM z16 while leveraging the underlying hardware capabilities. ", "bbox": {"l": 136.8, "t": 493.00726, "r": 446.24227999999994, "b": 502.22025, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 5 on page 7 shows the seamless integration of AI into existing enterprises workloads on the IBM z16 while leveraging the underlying hardware capabilities."}, {"label": "picture", "id": 6, "page_no": 7, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 65.81348419189453, "t": 108.23880767822266, "r": 547.791259765625, "b": 361.2843322753906, "coord_origin": "TOPLEFT"}, "confidence": 0.668588399887085, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 7, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.43333435058594, "t": 70.56073760986328, "r": 541.31055, "b": 93.01757049560547, "coord_origin": "TOPLEFT"}, "confidence": 0.90760338306427, "cells": [{"id": 2, "text": "Figure 4 provides more information about the features of AI Accelerator integration with the ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 541.31055, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "IBM Z processor cores. ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 242.90685999999997, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4 provides more information about the features of AI Accelerator integration with the IBM Z processor cores."}, {"label": "caption", "id": 3, "page_no": 7, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.16301727294922, "t": 364.0627746582031, "r": 387.35461, "b": 373.4560546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9267767071723938, "cells": [{"id": 4, "text": "Figure 4", "bbox": {"l": 64.800003, "t": 365.05798, "r": 97.754448, "b": 373.38300000000004, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "IBM z16 on-chip AI Accelerator integration with IBM Z processor cores ", "bbox": {"l": 105.24736, "t": 365.05798, "r": 387.35461, "b": 373.38300000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4 IBM z16 on-chip AI Accelerator integration with IBM Z processor cores"}, {"label": "text", "id": 4, "page_no": 7, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.82852172851562, "t": 385.96783447265625, "r": 547.23456, "b": 468.49432373046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9764872193336487, "cells": [{"id": 6, "text": "The IBM z16 and IBM LinuxONE Emperor 4 server platforms are built with the hardware ", "bbox": {"l": 136.8, "t": 387.04873999999995, "r": 528.51288, "b": 396.26172, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "features that are shown in Figure 4 with addressing data and AI workloads in mind. ", "bbox": {"l": 136.8, "t": 399.04855, "r": 505.67551, "b": 408.26154, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Regardless of where the ML and deep learning (DL) frameworks are used to build and train ", "bbox": {"l": 136.8, "t": 411.04837, "r": 542.40015, "b": 420.26135, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "data and AI models, the inferencing on existing enterprise application data can happen along ", "bbox": {"l": 136.8, "t": 423.0481899999999, "r": 547.23456, "b": 432.26117, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "currently running enterprise business applications. CP4D 4.6 supports Tensorflow and IBM ", "bbox": {"l": 136.8, "t": 435.048, "r": 540.64105, "b": 444.26099, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Snap ML frameworks, which are optimized to use the on-chip AI Accelerator during ", "bbox": {"l": 136.8, "t": 447.04782, "r": 506.2542700000001, "b": 456.26079999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "inferencing. Support for various other frameworks is planned for future releases.", "bbox": {"l": 136.8, "t": 459.04764, "r": 490.18079000000006, "b": 468.26062, "coord_origin": "TOPLEFT"}}]}, "text": "The IBM z16 and IBM LinuxONE Emperor 4 server platforms are built with the hardware features that are shown in Figure 4 with addressing data and AI workloads in mind. Regardless of where the ML and deep learning (DL) frameworks are used to build and train data and AI models, the inferencing on existing enterprise application data can happen along currently running enterprise business applications. CP4D 4.6 supports Tensorflow and IBM Snap ML frameworks, which are optimized to use the on-chip AI Accelerator during inferencing. Support for various other frameworks is planned for future releases."}, {"label": "text", "id": 5, "page_no": 7, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.02378845214844, "t": 479.8658142089844, "r": 544.62225, "b": 502.5115051269531, "coord_origin": "TOPLEFT"}, "confidence": 0.9691742062568665, "cells": [{"id": 13, "text": "Figure 5 on page 7 shows the seamless integration of AI into existing enterprises workloads ", "bbox": {"l": 136.8, "t": 481.00745, "r": 544.62225, "b": 490.22043, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "on the IBM z16 while leveraging the underlying hardware capabilities. ", "bbox": {"l": 136.8, "t": 493.00726, "r": 446.24227999999994, "b": 502.22025, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 5 on page 7 shows the seamless integration of AI into existing enterprises workloads on the IBM z16 while leveraging the underlying hardware capabilities."}, {"label": "picture", "id": 6, "page_no": 7, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 65.81348419189453, "t": 108.23880767822266, "r": 547.791259765625, "b": 361.2843322753906, "coord_origin": "TOPLEFT"}, "confidence": 0.668588399887085, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 7, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.22818756103516, "t": 754.2823486328125, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8751445412635803, "cells": [{"id": 0, "text": "6 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "6"}, {"label": "page_footer", "id": 1, "page_no": 7, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 87.59947204589844, "t": 754.7195434570312, "r": 261.53851, "b": 763.9192504882812, "coord_origin": "TOPLEFT"}, "confidence": 0.9498522877693176, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 87.840302, "t": 755.538002, "r": 261.53851, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}]}}, {"page_no": 8, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "7", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Figure 5 Seamless integration", "bbox": {"l": 64.800003, "t": 302.41799999999995, "r": 189.15477, "b": 310.74301, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "What is Cloud Pak for Data on IBM Z", "bbox": {"l": 64.800003, "t": 339.0607, "r": 341.13141, "b": 353.8236999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "IBM Cloud Pak for Data allows enterprises to simplify, unify, and automate the delivery of data ", "bbox": {"l": 136.8, "t": 371.38873, "r": 547.13208, "b": 380.60172, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "and AI. It categorizes the activities within the journey to AI as four rungs of the AI Ladder: ", "bbox": {"l": 136.8, "t": 383.38855, "r": 532.961, "b": 392.6015300000001, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Collect, Organize, Analyze, and Infuse. For more information about each of the AI Ladder ", "bbox": {"l": 136.8, "t": 395.38837, "r": 534.08069, "b": 404.60135, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "rungs, see ", "bbox": {"l": 136.8, "t": 407.38818, "r": 186.25638, "b": 416.60117, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Become Data Driven with IBM Z Infused Data Fabric", "bbox": {"l": 186.24045, "t": 407.38818, "r": 418.34933, "b": 416.60117, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": ", REDP-5680. ", "bbox": {"l": 418.44092, "t": 407.38818, "r": 482.83331, "b": 416.60117, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CP4D on IBM Z provides enterprises with a resilient and secure private cloud platform. You ", "bbox": {"l": 136.80099, "t": 429.40775, "r": 542.388, "b": 438.62073000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "can use it to create ML and AI models that may be included into modern intelligent ", "bbox": {"l": 136.80099, "t": 441.40756, "r": 502.96643, "b": 450.62054, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "applications. You also can use it to use and construct applications for mission-critical data. ", "bbox": {"l": 136.79999, "t": 453.40738, "r": 538.49261, "b": 462.62036, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "With CP4D on IBM Z, enterprises can lower data movement latency, cost inefficiencies, and ", "bbox": {"l": 136.79997, "t": 465.4072, "r": 545.08618, "b": 474.62018, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "potential security exposures. Enterprises can safely store and access their most important ", "bbox": {"l": 136.79997, "t": 477.40701, "r": 536.80255, "b": 486.62, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "company data, and leverage their current infrastructure by using cutting-edge hybrid cloud ", "bbox": {"l": 136.79997, "t": 489.40683, "r": 537.39636, "b": 498.61981, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "applications. Enterprises can combine their current database applications without any ", "bbox": {"l": 136.79997, "t": 501.40665, "r": 516.77905, "b": 510.61963, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "rewrites, which results in reduced cost and complexity. Lastly, by using CP4D on IBM Z, ", "bbox": {"l": 136.79997, "t": 513.4064599999999, "r": 527.8623, "b": 522.6194499999999, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "enterprises can update their database infrastructure to benefit from easier management, a ", "bbox": {"l": 136.79997, "t": 525.4062799999999, "r": 537.32935, "b": 534.6192599999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "quicker time to value, and lower operating expenses.", "bbox": {"l": 136.79997, "t": 537.40608, "r": 370.20856, "b": 546.6190799999999, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 540.8759155273438, "t": 754.2392578125, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8702407479286194, "cells": [{"id": 0, "text": "7", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "caption", "bbox": {"l": 64.26493072509766, "t": 301.75836181640625, "r": 189.6370086669922, "b": 310.74301, "coord_origin": "TOPLEFT"}, "confidence": 0.9447076320648193, "cells": [{"id": 1, "text": "Figure 5 Seamless integration", "bbox": {"l": 64.800003, "t": 302.41799999999995, "r": 189.15477, "b": 310.74301, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.28071594238281, "t": 338.1206970214844, "r": 341.6769714355469, "b": 353.8236999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9576840996742249, "cells": [{"id": 2, "text": "What is Cloud Pak for Data on IBM Z", "bbox": {"l": 64.800003, "t": 339.0607, "r": 341.13141, "b": 353.8236999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.9339141845703, "t": 370.57708740234375, "r": 547.13208, "b": 416.7144775390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9846300482749939, "cells": [{"id": 3, "text": "IBM Cloud Pak for Data allows enterprises to simplify, unify, and automate the delivery of data ", "bbox": {"l": 136.8, "t": 371.38873, "r": 547.13208, "b": 380.60172, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "and AI. It categorizes the activities within the journey to AI as four rungs of the AI Ladder: ", "bbox": {"l": 136.8, "t": 383.38855, "r": 532.961, "b": 392.6015300000001, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Collect, Organize, Analyze, and Infuse. For more information about each of the AI Ladder ", "bbox": {"l": 136.8, "t": 395.38837, "r": 534.08069, "b": 404.60135, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "rungs, see ", "bbox": {"l": 136.8, "t": 407.38818, "r": 186.25638, "b": 416.60117, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Become Data Driven with IBM Z Infused Data Fabric", "bbox": {"l": 186.24045, "t": 407.38818, "r": 418.34933, "b": 416.60117, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": ", REDP-5680. ", "bbox": {"l": 418.44092, "t": 407.38818, "r": 482.83331, "b": 416.60117, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.8167266845703, "t": 428.53900146484375, "r": 545.08618, "b": 546.9762573242188, "coord_origin": "TOPLEFT"}, "confidence": 0.9876003265380859, "cells": [{"id": 9, "text": "CP4D on IBM Z provides enterprises with a resilient and secure private cloud platform. You ", "bbox": {"l": 136.80099, "t": 429.40775, "r": 542.388, "b": 438.62073000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "can use it to create ML and AI models that may be included into modern intelligent ", "bbox": {"l": 136.80099, "t": 441.40756, "r": 502.96643, "b": 450.62054, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "applications. You also can use it to use and construct applications for mission-critical data. ", "bbox": {"l": 136.79999, "t": 453.40738, "r": 538.49261, "b": 462.62036, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "With CP4D on IBM Z, enterprises can lower data movement latency, cost inefficiencies, and ", "bbox": {"l": 136.79997, "t": 465.4072, "r": 545.08618, "b": 474.62018, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "potential security exposures. Enterprises can safely store and access their most important ", "bbox": {"l": 136.79997, "t": 477.40701, "r": 536.80255, "b": 486.62, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "company data, and leverage their current infrastructure by using cutting-edge hybrid cloud ", "bbox": {"l": 136.79997, "t": 489.40683, "r": 537.39636, "b": 498.61981, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "applications. Enterprises can combine their current database applications without any ", "bbox": {"l": 136.79997, "t": 501.40665, "r": 516.77905, "b": 510.61963, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "rewrites, which results in reduced cost and complexity. Lastly, by using CP4D on IBM Z, ", "bbox": {"l": 136.79997, "t": 513.4064599999999, "r": 527.8623, "b": 522.6194499999999, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "enterprises can update their database infrastructure to benefit from easier management, a ", "bbox": {"l": 136.79997, "t": 525.4062799999999, "r": 537.32935, "b": 534.6192599999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "quicker time to value, and lower operating expenses.", "bbox": {"l": 136.79997, "t": 537.40608, "r": 370.20856, "b": 546.6190799999999, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "picture", "bbox": {"l": 63.88162612915039, "t": 77.46954345703125, "r": 547.2862548828125, "b": 299.900390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9817203283309937, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 8, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 540.8759155273438, "t": 754.2392578125, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8702407479286194, "cells": [{"id": 0, "text": "7", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "7"}, {"label": "caption", "id": 1, "page_no": 8, "cluster": {"id": 1, "label": "caption", "bbox": {"l": 64.26493072509766, "t": 301.75836181640625, "r": 189.6370086669922, "b": 310.74301, "coord_origin": "TOPLEFT"}, "confidence": 0.9447076320648193, "cells": [{"id": 1, "text": "Figure 5 Seamless integration", "bbox": {"l": 64.800003, "t": 302.41799999999995, "r": 189.15477, "b": 310.74301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 5 Seamless integration"}, {"label": "section_header", "id": 2, "page_no": 8, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.28071594238281, "t": 338.1206970214844, "r": 341.6769714355469, "b": 353.8236999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9576840996742249, "cells": [{"id": 2, "text": "What is Cloud Pak for Data on IBM Z", "bbox": {"l": 64.800003, "t": 339.0607, "r": 341.13141, "b": 353.8236999999999, "coord_origin": "TOPLEFT"}}]}, "text": "What is Cloud Pak for Data on IBM Z"}, {"label": "text", "id": 3, "page_no": 8, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.9339141845703, "t": 370.57708740234375, "r": 547.13208, "b": 416.7144775390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9846300482749939, "cells": [{"id": 3, "text": "IBM Cloud Pak for Data allows enterprises to simplify, unify, and automate the delivery of data ", "bbox": {"l": 136.8, "t": 371.38873, "r": 547.13208, "b": 380.60172, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "and AI. It categorizes the activities within the journey to AI as four rungs of the AI Ladder: ", "bbox": {"l": 136.8, "t": 383.38855, "r": 532.961, "b": 392.6015300000001, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Collect, Organize, Analyze, and Infuse. For more information about each of the AI Ladder ", "bbox": {"l": 136.8, "t": 395.38837, "r": 534.08069, "b": 404.60135, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "rungs, see ", "bbox": {"l": 136.8, "t": 407.38818, "r": 186.25638, "b": 416.60117, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Become Data Driven with IBM Z Infused Data Fabric", "bbox": {"l": 186.24045, "t": 407.38818, "r": 418.34933, "b": 416.60117, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": ", REDP-5680. ", "bbox": {"l": 418.44092, "t": 407.38818, "r": 482.83331, "b": 416.60117, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data allows enterprises to simplify, unify, and automate the delivery of data and AI. It categorizes the activities within the journey to AI as four rungs of the AI Ladder: Collect, Organize, Analyze, and Infuse. For more information about each of the AI Ladder rungs, see Become Data Driven with IBM Z Infused Data Fabric , REDP-5680."}, {"label": "text", "id": 4, "page_no": 8, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.8167266845703, "t": 428.53900146484375, "r": 545.08618, "b": 546.9762573242188, "coord_origin": "TOPLEFT"}, "confidence": 0.9876003265380859, "cells": [{"id": 9, "text": "CP4D on IBM Z provides enterprises with a resilient and secure private cloud platform. You ", "bbox": {"l": 136.80099, "t": 429.40775, "r": 542.388, "b": 438.62073000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "can use it to create ML and AI models that may be included into modern intelligent ", "bbox": {"l": 136.80099, "t": 441.40756, "r": 502.96643, "b": 450.62054, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "applications. You also can use it to use and construct applications for mission-critical data. ", "bbox": {"l": 136.79999, "t": 453.40738, "r": 538.49261, "b": 462.62036, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "With CP4D on IBM Z, enterprises can lower data movement latency, cost inefficiencies, and ", "bbox": {"l": 136.79997, "t": 465.4072, "r": 545.08618, "b": 474.62018, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "potential security exposures. Enterprises can safely store and access their most important ", "bbox": {"l": 136.79997, "t": 477.40701, "r": 536.80255, "b": 486.62, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "company data, and leverage their current infrastructure by using cutting-edge hybrid cloud ", "bbox": {"l": 136.79997, "t": 489.40683, "r": 537.39636, "b": 498.61981, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "applications. Enterprises can combine their current database applications without any ", "bbox": {"l": 136.79997, "t": 501.40665, "r": 516.77905, "b": 510.61963, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "rewrites, which results in reduced cost and complexity. Lastly, by using CP4D on IBM Z, ", "bbox": {"l": 136.79997, "t": 513.4064599999999, "r": 527.8623, "b": 522.6194499999999, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "enterprises can update their database infrastructure to benefit from easier management, a ", "bbox": {"l": 136.79997, "t": 525.4062799999999, "r": 537.32935, "b": 534.6192599999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "quicker time to value, and lower operating expenses.", "bbox": {"l": 136.79997, "t": 537.40608, "r": 370.20856, "b": 546.6190799999999, "coord_origin": "TOPLEFT"}}]}, "text": "CP4D on IBM Z provides enterprises with a resilient and secure private cloud platform. You can use it to create ML and AI models that may be included into modern intelligent applications. You also can use it to use and construct applications for mission-critical data. With CP4D on IBM Z, enterprises can lower data movement latency, cost inefficiencies, and potential security exposures. Enterprises can safely store and access their most important company data, and leverage their current infrastructure by using cutting-edge hybrid cloud applications. Enterprises can combine their current database applications without any rewrites, which results in reduced cost and complexity. Lastly, by using CP4D on IBM Z, enterprises can update their database infrastructure to benefit from easier management, a quicker time to value, and lower operating expenses."}, {"label": "picture", "id": 5, "page_no": 8, "cluster": {"id": 5, "label": "picture", "bbox": {"l": 63.88162612915039, "t": 77.46954345703125, "r": 547.2862548828125, "b": 299.900390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9817203283309937, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "caption", "id": 1, "page_no": 8, "cluster": {"id": 1, "label": "caption", "bbox": {"l": 64.26493072509766, "t": 301.75836181640625, "r": 189.6370086669922, "b": 310.74301, "coord_origin": "TOPLEFT"}, "confidence": 0.9447076320648193, "cells": [{"id": 1, "text": "Figure 5 Seamless integration", "bbox": {"l": 64.800003, "t": 302.41799999999995, "r": 189.15477, "b": 310.74301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 5 Seamless integration"}, {"label": "section_header", "id": 2, "page_no": 8, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.28071594238281, "t": 338.1206970214844, "r": 341.6769714355469, "b": 353.8236999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9576840996742249, "cells": [{"id": 2, "text": "What is Cloud Pak for Data on IBM Z", "bbox": {"l": 64.800003, "t": 339.0607, "r": 341.13141, "b": 353.8236999999999, "coord_origin": "TOPLEFT"}}]}, "text": "What is Cloud Pak for Data on IBM Z"}, {"label": "text", "id": 3, "page_no": 8, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.9339141845703, "t": 370.57708740234375, "r": 547.13208, "b": 416.7144775390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9846300482749939, "cells": [{"id": 3, "text": "IBM Cloud Pak for Data allows enterprises to simplify, unify, and automate the delivery of data ", "bbox": {"l": 136.8, "t": 371.38873, "r": 547.13208, "b": 380.60172, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "and AI. It categorizes the activities within the journey to AI as four rungs of the AI Ladder: ", "bbox": {"l": 136.8, "t": 383.38855, "r": 532.961, "b": 392.6015300000001, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Collect, Organize, Analyze, and Infuse. For more information about each of the AI Ladder ", "bbox": {"l": 136.8, "t": 395.38837, "r": 534.08069, "b": 404.60135, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "rungs, see ", "bbox": {"l": 136.8, "t": 407.38818, "r": 186.25638, "b": 416.60117, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Become Data Driven with IBM Z Infused Data Fabric", "bbox": {"l": 186.24045, "t": 407.38818, "r": 418.34933, "b": 416.60117, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": ", REDP-5680. ", "bbox": {"l": 418.44092, "t": 407.38818, "r": 482.83331, "b": 416.60117, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data allows enterprises to simplify, unify, and automate the delivery of data and AI. It categorizes the activities within the journey to AI as four rungs of the AI Ladder: Collect, Organize, Analyze, and Infuse. For more information about each of the AI Ladder rungs, see Become Data Driven with IBM Z Infused Data Fabric , REDP-5680."}, {"label": "text", "id": 4, "page_no": 8, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.8167266845703, "t": 428.53900146484375, "r": 545.08618, "b": 546.9762573242188, "coord_origin": "TOPLEFT"}, "confidence": 0.9876003265380859, "cells": [{"id": 9, "text": "CP4D on IBM Z provides enterprises with a resilient and secure private cloud platform. You ", "bbox": {"l": 136.80099, "t": 429.40775, "r": 542.388, "b": 438.62073000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "can use it to create ML and AI models that may be included into modern intelligent ", "bbox": {"l": 136.80099, "t": 441.40756, "r": 502.96643, "b": 450.62054, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "applications. You also can use it to use and construct applications for mission-critical data. ", "bbox": {"l": 136.79999, "t": 453.40738, "r": 538.49261, "b": 462.62036, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "With CP4D on IBM Z, enterprises can lower data movement latency, cost inefficiencies, and ", "bbox": {"l": 136.79997, "t": 465.4072, "r": 545.08618, "b": 474.62018, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "potential security exposures. Enterprises can safely store and access their most important ", "bbox": {"l": 136.79997, "t": 477.40701, "r": 536.80255, "b": 486.62, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "company data, and leverage their current infrastructure by using cutting-edge hybrid cloud ", "bbox": {"l": 136.79997, "t": 489.40683, "r": 537.39636, "b": 498.61981, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "applications. Enterprises can combine their current database applications without any ", "bbox": {"l": 136.79997, "t": 501.40665, "r": 516.77905, "b": 510.61963, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "rewrites, which results in reduced cost and complexity. Lastly, by using CP4D on IBM Z, ", "bbox": {"l": 136.79997, "t": 513.4064599999999, "r": 527.8623, "b": 522.6194499999999, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "enterprises can update their database infrastructure to benefit from easier management, a ", "bbox": {"l": 136.79997, "t": 525.4062799999999, "r": 537.32935, "b": 534.6192599999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "quicker time to value, and lower operating expenses.", "bbox": {"l": 136.79997, "t": 537.40608, "r": 370.20856, "b": 546.6190799999999, "coord_origin": "TOPLEFT"}}]}, "text": "CP4D on IBM Z provides enterprises with a resilient and secure private cloud platform. You can use it to create ML and AI models that may be included into modern intelligent applications. You also can use it to use and construct applications for mission-critical data. With CP4D on IBM Z, enterprises can lower data movement latency, cost inefficiencies, and potential security exposures. Enterprises can safely store and access their most important company data, and leverage their current infrastructure by using cutting-edge hybrid cloud applications. Enterprises can combine their current database applications without any rewrites, which results in reduced cost and complexity. Lastly, by using CP4D on IBM Z, enterprises can update their database infrastructure to benefit from easier management, a quicker time to value, and lower operating expenses."}, {"label": "picture", "id": 5, "page_no": 8, "cluster": {"id": 5, "label": "picture", "bbox": {"l": 63.88162612915039, "t": 77.46954345703125, "r": 547.2862548828125, "b": 299.900390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9817203283309937, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 8, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 540.8759155273438, "t": 754.2392578125, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8702407479286194, "cells": [{"id": 0, "text": "7", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "7"}]}}, {"page_no": 9, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "8 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 87.840302, "t": 755.538002, "r": 261.53851, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Figure 6 shows a solution overview of CP4D. The infrastructure alternatives are shown at the ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 547.24561, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "bottom, and they include IBM Z and LinuxONE. They all leverage Red Hat OpenShift. ", "bbox": {"l": 136.80002, "t": 83.50847999999996, "r": 516.8139, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Common Foundational Services come next, which offer clarity throughout the data and AI ", "bbox": {"l": 136.80002, "t": 95.50829999999996, "r": 534.69507, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "lifecycle, that is, from user access management to monitoring and service provisioning. A ", "bbox": {"l": 136.80002, "t": 107.50811999999996, "r": 532.9491, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "high-level view of the services is shown in the middle section. The services have several ", "bbox": {"l": 136.80003, "t": 119.50792999999999, "r": 529.53284, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "different capabilities that span the AI hierarchy. The platform can be expanded, and it offers a ", "bbox": {"l": 136.80005, "t": 131.50775, "r": 547.28058, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "seamless user experience for all distinct personas across the AI lifecycle, from data gathering ", "bbox": {"l": 136.80005, "t": 143.50757, "r": 547.19391, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "through AI infusion. ", "bbox": {"l": 136.80008, "t": 155.50739, "r": 225.63828, "b": 164.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Figure 6 Solution overview of Cloud Pak for Data", "bbox": {"l": 64.800003, "t": 484.39798, "r": 264.04919, "b": 492.72299, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "We highlight the four main pillars that make IBM Z the correct infrastructure for CP4D: ", "bbox": {"l": 136.8, "t": 506.38861, "r": 518.39545, "b": 515.60159, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 523.51779, "r": 141.78096, "b": 532.2925700000001, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Performance and Scale", "bbox": {"l": 151.20113, "t": 523.36841, "r": 255.66061, "b": 532.58139, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 540.49762, "r": 141.78096, "b": 549.27237, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Embedded Accelerators", "bbox": {"l": 151.20113, "t": 540.34822, "r": 257.89264, "b": 549.56122, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 557.53719, "r": 141.78096, "b": 566.31194, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Reliability and Availability", "bbox": {"l": 151.20113, "t": 557.38779, "r": 263.38062, "b": 566.60078, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 574.517, "r": 141.78096, "b": 583.29175, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Security and Governance. ", "bbox": {"l": 151.20113, "t": 574.3676, "r": 269.54684, "b": 583.5806, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "From a performance perspective, CP4D on IBM Z provides your data and AI with high ", "bbox": {"l": 136.80096, "t": 596.38716, "r": 518.51489, "b": 605.60016, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "transaction processing and a powerful infrastructure. From the embedded accelerators ", "bbox": {"l": 136.80096, "t": 608.38696, "r": 521.82758, "b": 617.59996, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "perspective, CP4D on IBM Z can investigate each transaction thanks to a cutting-edge DL ", "bbox": {"l": 136.80096, "t": 620.38676, "r": 536.88837, "b": 629.5997600000001, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "inference technology even in the most demanding, sensitive, and latency-prone real-time ", "bbox": {"l": 136.80096, "t": 632.38657, "r": 531.82153, "b": 641.59956, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "workloads. From a reliability perspective, CP4D on IBM Z provides high availability and ", "bbox": {"l": 136.80095, "t": 644.3863699999999, "r": 523.38043, "b": 653.59937, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "resiliency. Lastly from the security perspective, CP4D on IBM Z is suitable for protecting ", "bbox": {"l": 136.80096, "t": 656.38617, "r": 527.28973, "b": 665.59917, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "sensitive data and AI models for enterprises in highly regulated industries or those industries ", "bbox": {"l": 136.80098, "t": 668.38597, "r": 547.28143, "b": 677.59898, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "that are worried about security.", "bbox": {"l": 136.80098, "t": 680.38578, "r": 274.02484, "b": 689.59879, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.2588882446289, "t": 754.197998046875, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8762364983558655, "cells": [{"id": 0, "text": "8 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 87.62134552001953, "t": 754.7377319335938, "r": 261.53851, "b": 763.8740234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9511485695838928, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 87.840302, "t": 755.538002, "r": 261.53851, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 136.00271606445312, "t": 70.69949340820312, "r": 547.28058, "b": 164.883544921875, "coord_origin": "TOPLEFT"}, "confidence": 0.984743595123291, "cells": [{"id": 2, "text": "Figure 6 shows a solution overview of CP4D. The infrastructure alternatives are shown at the ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 547.24561, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "bottom, and they include IBM Z and LinuxONE. They all leverage Red Hat OpenShift. ", "bbox": {"l": 136.80002, "t": 83.50847999999996, "r": 516.8139, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Common Foundational Services come next, which offer clarity throughout the data and AI ", "bbox": {"l": 136.80002, "t": 95.50829999999996, "r": 534.69507, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "lifecycle, that is, from user access management to monitoring and service provisioning. A ", "bbox": {"l": 136.80002, "t": 107.50811999999996, "r": 532.9491, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "high-level view of the services is shown in the middle section. The services have several ", "bbox": {"l": 136.80003, "t": 119.50792999999999, "r": 529.53284, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "different capabilities that span the AI hierarchy. The platform can be expanded, and it offers a ", "bbox": {"l": 136.80005, "t": 131.50775, "r": 547.28058, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "seamless user experience for all distinct personas across the AI lifecycle, from data gathering ", "bbox": {"l": 136.80005, "t": 143.50757, "r": 547.19391, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "through AI infusion. ", "bbox": {"l": 136.80008, "t": 155.50739, "r": 225.63828, "b": 164.72040000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.43482208251953, "t": 483.486328125, "r": 264.04919, "b": 492.95330810546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9446989297866821, "cells": [{"id": 10, "text": "Figure 6 Solution overview of Cloud Pak for Data", "bbox": {"l": 64.800003, "t": 484.39798, "r": 264.04919, "b": 492.72299, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.67288208007812, "t": 505.269287109375, "r": 518.39545, "b": 515.68896484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9399420619010925, "cells": [{"id": 11, "text": "We highlight the four main pillars that make IBM Z the correct infrastructure for CP4D: ", "bbox": {"l": 136.8, "t": 506.38861, "r": 518.39545, "b": 515.60159, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 135.7481231689453, "t": 522.5965576171875, "r": 255.66061, "b": 532.58139, "coord_origin": "TOPLEFT"}, "confidence": 0.9303468465805054, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 523.51779, "r": 141.78096, "b": 532.2925700000001, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Performance and Scale", "bbox": {"l": 151.20113, "t": 523.36841, "r": 255.66061, "b": 532.58139, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.7166748046875, "t": 539.3995971679688, "r": 257.89264, "b": 549.56122, "coord_origin": "TOPLEFT"}, "confidence": 0.923041820526123, "cells": [{"id": 14, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 540.49762, "r": 141.78096, "b": 549.27237, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Embedded Accelerators", "bbox": {"l": 151.20113, "t": 540.34822, "r": 257.89264, "b": 549.56122, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.57183837890625, "t": 556.74267578125, "r": 263.64544677734375, "b": 567.2510986328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9483156800270081, "cells": [{"id": 16, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 557.53719, "r": 141.78096, "b": 566.31194, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Reliability and Availability", "bbox": {"l": 151.20113, "t": 557.38779, "r": 263.38062, "b": 566.60078, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.74082946777344, "t": 573.56103515625, "r": 269.54684, "b": 583.5806, "coord_origin": "TOPLEFT"}, "confidence": 0.9437612891197205, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 574.517, "r": 141.78096, "b": 583.29175, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Security and Governance. ", "bbox": {"l": 151.20113, "t": 574.3676, "r": 269.54684, "b": 583.5806, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 136.00941467285156, "t": 595.1112670898438, "r": 547.28143, "b": 689.7734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9868659377098083, "cells": [{"id": 20, "text": "From a performance perspective, CP4D on IBM Z provides your data and AI with high ", "bbox": {"l": 136.80096, "t": 596.38716, "r": 518.51489, "b": 605.60016, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "transaction processing and a powerful infrastructure. From the embedded accelerators ", "bbox": {"l": 136.80096, "t": 608.38696, "r": 521.82758, "b": 617.59996, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "perspective, CP4D on IBM Z can investigate each transaction thanks to a cutting-edge DL ", "bbox": {"l": 136.80096, "t": 620.38676, "r": 536.88837, "b": 629.5997600000001, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "inference technology even in the most demanding, sensitive, and latency-prone real-time ", "bbox": {"l": 136.80096, "t": 632.38657, "r": 531.82153, "b": 641.59956, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "workloads. From a reliability perspective, CP4D on IBM Z provides high availability and ", "bbox": {"l": 136.80095, "t": 644.3863699999999, "r": 523.38043, "b": 653.59937, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "resiliency. Lastly from the security perspective, CP4D on IBM Z is suitable for protecting ", "bbox": {"l": 136.80096, "t": 656.38617, "r": 527.28973, "b": 665.59917, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "sensitive data and AI models for enterprises in highly regulated industries or those industries ", "bbox": {"l": 136.80098, "t": 668.38597, "r": 547.28143, "b": 677.59898, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "that are worried about security.", "bbox": {"l": 136.80098, "t": 680.38578, "r": 274.02484, "b": 689.59879, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "picture", "bbox": {"l": 63.72787094116211, "t": 179.1451873779297, "r": 547.3121948242188, "b": 480.79541015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9759865999221802, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 9, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.2588882446289, "t": 754.197998046875, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8762364983558655, "cells": [{"id": 0, "text": "8 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "8"}, {"label": "page_footer", "id": 1, "page_no": 9, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 87.62134552001953, "t": 754.7377319335938, "r": 261.53851, "b": 763.8740234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9511485695838928, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 87.840302, "t": 755.538002, "r": 261.53851, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"label": "text", "id": 2, "page_no": 9, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.00271606445312, "t": 70.69949340820312, "r": 547.28058, "b": 164.883544921875, "coord_origin": "TOPLEFT"}, "confidence": 0.984743595123291, "cells": [{"id": 2, "text": "Figure 6 shows a solution overview of CP4D. The infrastructure alternatives are shown at the ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 547.24561, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "bottom, and they include IBM Z and LinuxONE. They all leverage Red Hat OpenShift. ", "bbox": {"l": 136.80002, "t": 83.50847999999996, "r": 516.8139, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Common Foundational Services come next, which offer clarity throughout the data and AI ", "bbox": {"l": 136.80002, "t": 95.50829999999996, "r": 534.69507, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "lifecycle, that is, from user access management to monitoring and service provisioning. A ", "bbox": {"l": 136.80002, "t": 107.50811999999996, "r": 532.9491, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "high-level view of the services is shown in the middle section. The services have several ", "bbox": {"l": 136.80003, "t": 119.50792999999999, "r": 529.53284, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "different capabilities that span the AI hierarchy. The platform can be expanded, and it offers a ", "bbox": {"l": 136.80005, "t": 131.50775, "r": 547.28058, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "seamless user experience for all distinct personas across the AI lifecycle, from data gathering ", "bbox": {"l": 136.80005, "t": 143.50757, "r": 547.19391, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "through AI infusion. ", "bbox": {"l": 136.80008, "t": 155.50739, "r": 225.63828, "b": 164.72040000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6 shows a solution overview of CP4D. The infrastructure alternatives are shown at the bottom, and they include IBM Z and LinuxONE. They all leverage Red Hat OpenShift. Common Foundational Services come next, which offer clarity throughout the data and AI lifecycle, that is, from user access management to monitoring and service provisioning. A high-level view of the services is shown in the middle section. The services have several different capabilities that span the AI hierarchy. The platform can be expanded, and it offers a seamless user experience for all distinct personas across the AI lifecycle, from data gathering through AI infusion."}, {"label": "caption", "id": 3, "page_no": 9, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.43482208251953, "t": 483.486328125, "r": 264.04919, "b": 492.95330810546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9446989297866821, "cells": [{"id": 10, "text": "Figure 6 Solution overview of Cloud Pak for Data", "bbox": {"l": 64.800003, "t": 484.39798, "r": 264.04919, "b": 492.72299, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6 Solution overview of Cloud Pak for Data"}, {"label": "text", "id": 4, "page_no": 9, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.67288208007812, "t": 505.269287109375, "r": 518.39545, "b": 515.68896484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9399420619010925, "cells": [{"id": 11, "text": "We highlight the four main pillars that make IBM Z the correct infrastructure for CP4D: ", "bbox": {"l": 136.8, "t": 506.38861, "r": 518.39545, "b": 515.60159, "coord_origin": "TOPLEFT"}}]}, "text": "We highlight the four main pillars that make IBM Z the correct infrastructure for CP4D:"}, {"label": "list_item", "id": 5, "page_no": 9, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.7481231689453, "t": 522.5965576171875, "r": 255.66061, "b": 532.58139, "coord_origin": "TOPLEFT"}, "confidence": 0.9303468465805054, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 523.51779, "r": 141.78096, "b": 532.2925700000001, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Performance and Scale", "bbox": {"l": 151.20113, "t": 523.36841, "r": 255.66061, "b": 532.58139, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Performance and Scale"}, {"label": "list_item", "id": 6, "page_no": 9, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.7166748046875, "t": 539.3995971679688, "r": 257.89264, "b": 549.56122, "coord_origin": "TOPLEFT"}, "confidence": 0.923041820526123, "cells": [{"id": 14, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 540.49762, "r": 141.78096, "b": 549.27237, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Embedded Accelerators", "bbox": {"l": 151.20113, "t": 540.34822, "r": 257.89264, "b": 549.56122, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Embedded Accelerators"}, {"label": "list_item", "id": 7, "page_no": 9, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.57183837890625, "t": 556.74267578125, "r": 263.64544677734375, "b": 567.2510986328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9483156800270081, "cells": [{"id": 16, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 557.53719, "r": 141.78096, "b": 566.31194, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Reliability and Availability", "bbox": {"l": 151.20113, "t": 557.38779, "r": 263.38062, "b": 566.60078, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Reliability and Availability"}, {"label": "list_item", "id": 8, "page_no": 9, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.74082946777344, "t": 573.56103515625, "r": 269.54684, "b": 583.5806, "coord_origin": "TOPLEFT"}, "confidence": 0.9437612891197205, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 574.517, "r": 141.78096, "b": 583.29175, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Security and Governance. ", "bbox": {"l": 151.20113, "t": 574.3676, "r": 269.54684, "b": 583.5806, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Security and Governance."}, {"label": "text", "id": 9, "page_no": 9, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.00941467285156, "t": 595.1112670898438, "r": 547.28143, "b": 689.7734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9868659377098083, "cells": [{"id": 20, "text": "From a performance perspective, CP4D on IBM Z provides your data and AI with high ", "bbox": {"l": 136.80096, "t": 596.38716, "r": 518.51489, "b": 605.60016, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "transaction processing and a powerful infrastructure. From the embedded accelerators ", "bbox": {"l": 136.80096, "t": 608.38696, "r": 521.82758, "b": 617.59996, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "perspective, CP4D on IBM Z can investigate each transaction thanks to a cutting-edge DL ", "bbox": {"l": 136.80096, "t": 620.38676, "r": 536.88837, "b": 629.5997600000001, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "inference technology even in the most demanding, sensitive, and latency-prone real-time ", "bbox": {"l": 136.80096, "t": 632.38657, "r": 531.82153, "b": 641.59956, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "workloads. From a reliability perspective, CP4D on IBM Z provides high availability and ", "bbox": {"l": 136.80095, "t": 644.3863699999999, "r": 523.38043, "b": 653.59937, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "resiliency. Lastly from the security perspective, CP4D on IBM Z is suitable for protecting ", "bbox": {"l": 136.80096, "t": 656.38617, "r": 527.28973, "b": 665.59917, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "sensitive data and AI models for enterprises in highly regulated industries or those industries ", "bbox": {"l": 136.80098, "t": 668.38597, "r": 547.28143, "b": 677.59898, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "that are worried about security.", "bbox": {"l": 136.80098, "t": 680.38578, "r": 274.02484, "b": 689.59879, "coord_origin": "TOPLEFT"}}]}, "text": "From a performance perspective, CP4D on IBM Z provides your data and AI with high transaction processing and a powerful infrastructure. From the embedded accelerators perspective, CP4D on IBM Z can investigate each transaction thanks to a cutting-edge DL inference technology even in the most demanding, sensitive, and latency-prone real-time workloads. From a reliability perspective, CP4D on IBM Z provides high availability and resiliency. Lastly from the security perspective, CP4D on IBM Z is suitable for protecting sensitive data and AI models for enterprises in highly regulated industries or those industries that are worried about security."}, {"label": "picture", "id": 10, "page_no": 9, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 63.72787094116211, "t": 179.1451873779297, "r": 547.3121948242188, "b": 480.79541015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9759865999221802, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 9, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.00271606445312, "t": 70.69949340820312, "r": 547.28058, "b": 164.883544921875, "coord_origin": "TOPLEFT"}, "confidence": 0.984743595123291, "cells": [{"id": 2, "text": "Figure 6 shows a solution overview of CP4D. The infrastructure alternatives are shown at the ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 547.24561, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "bottom, and they include IBM Z and LinuxONE. They all leverage Red Hat OpenShift. ", "bbox": {"l": 136.80002, "t": 83.50847999999996, "r": 516.8139, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Common Foundational Services come next, which offer clarity throughout the data and AI ", "bbox": {"l": 136.80002, "t": 95.50829999999996, "r": 534.69507, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "lifecycle, that is, from user access management to monitoring and service provisioning. A ", "bbox": {"l": 136.80002, "t": 107.50811999999996, "r": 532.9491, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "high-level view of the services is shown in the middle section. The services have several ", "bbox": {"l": 136.80003, "t": 119.50792999999999, "r": 529.53284, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "different capabilities that span the AI hierarchy. The platform can be expanded, and it offers a ", "bbox": {"l": 136.80005, "t": 131.50775, "r": 547.28058, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "seamless user experience for all distinct personas across the AI lifecycle, from data gathering ", "bbox": {"l": 136.80005, "t": 143.50757, "r": 547.19391, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "through AI infusion. ", "bbox": {"l": 136.80008, "t": 155.50739, "r": 225.63828, "b": 164.72040000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6 shows a solution overview of CP4D. The infrastructure alternatives are shown at the bottom, and they include IBM Z and LinuxONE. They all leverage Red Hat OpenShift. Common Foundational Services come next, which offer clarity throughout the data and AI lifecycle, that is, from user access management to monitoring and service provisioning. A high-level view of the services is shown in the middle section. The services have several different capabilities that span the AI hierarchy. The platform can be expanded, and it offers a seamless user experience for all distinct personas across the AI lifecycle, from data gathering through AI infusion."}, {"label": "caption", "id": 3, "page_no": 9, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.43482208251953, "t": 483.486328125, "r": 264.04919, "b": 492.95330810546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9446989297866821, "cells": [{"id": 10, "text": "Figure 6 Solution overview of Cloud Pak for Data", "bbox": {"l": 64.800003, "t": 484.39798, "r": 264.04919, "b": 492.72299, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6 Solution overview of Cloud Pak for Data"}, {"label": "text", "id": 4, "page_no": 9, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.67288208007812, "t": 505.269287109375, "r": 518.39545, "b": 515.68896484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9399420619010925, "cells": [{"id": 11, "text": "We highlight the four main pillars that make IBM Z the correct infrastructure for CP4D: ", "bbox": {"l": 136.8, "t": 506.38861, "r": 518.39545, "b": 515.60159, "coord_origin": "TOPLEFT"}}]}, "text": "We highlight the four main pillars that make IBM Z the correct infrastructure for CP4D:"}, {"label": "list_item", "id": 5, "page_no": 9, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.7481231689453, "t": 522.5965576171875, "r": 255.66061, "b": 532.58139, "coord_origin": "TOPLEFT"}, "confidence": 0.9303468465805054, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 523.51779, "r": 141.78096, "b": 532.2925700000001, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Performance and Scale", "bbox": {"l": 151.20113, "t": 523.36841, "r": 255.66061, "b": 532.58139, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Performance and Scale"}, {"label": "list_item", "id": 6, "page_no": 9, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.7166748046875, "t": 539.3995971679688, "r": 257.89264, "b": 549.56122, "coord_origin": "TOPLEFT"}, "confidence": 0.923041820526123, "cells": [{"id": 14, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 540.49762, "r": 141.78096, "b": 549.27237, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Embedded Accelerators", "bbox": {"l": 151.20113, "t": 540.34822, "r": 257.89264, "b": 549.56122, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Embedded Accelerators"}, {"label": "list_item", "id": 7, "page_no": 9, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.57183837890625, "t": 556.74267578125, "r": 263.64544677734375, "b": 567.2510986328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9483156800270081, "cells": [{"id": 16, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 557.53719, "r": 141.78096, "b": 566.31194, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Reliability and Availability", "bbox": {"l": 151.20113, "t": 557.38779, "r": 263.38062, "b": 566.60078, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Reliability and Availability"}, {"label": "list_item", "id": 8, "page_no": 9, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.74082946777344, "t": 573.56103515625, "r": 269.54684, "b": 583.5806, "coord_origin": "TOPLEFT"}, "confidence": 0.9437612891197205, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 574.517, "r": 141.78096, "b": 583.29175, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Security and Governance. ", "bbox": {"l": 151.20113, "t": 574.3676, "r": 269.54684, "b": 583.5806, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Security and Governance."}, {"label": "text", "id": 9, "page_no": 9, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.00941467285156, "t": 595.1112670898438, "r": 547.28143, "b": 689.7734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9868659377098083, "cells": [{"id": 20, "text": "From a performance perspective, CP4D on IBM Z provides your data and AI with high ", "bbox": {"l": 136.80096, "t": 596.38716, "r": 518.51489, "b": 605.60016, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "transaction processing and a powerful infrastructure. From the embedded accelerators ", "bbox": {"l": 136.80096, "t": 608.38696, "r": 521.82758, "b": 617.59996, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "perspective, CP4D on IBM Z can investigate each transaction thanks to a cutting-edge DL ", "bbox": {"l": 136.80096, "t": 620.38676, "r": 536.88837, "b": 629.5997600000001, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "inference technology even in the most demanding, sensitive, and latency-prone real-time ", "bbox": {"l": 136.80096, "t": 632.38657, "r": 531.82153, "b": 641.59956, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "workloads. From a reliability perspective, CP4D on IBM Z provides high availability and ", "bbox": {"l": 136.80095, "t": 644.3863699999999, "r": 523.38043, "b": 653.59937, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "resiliency. Lastly from the security perspective, CP4D on IBM Z is suitable for protecting ", "bbox": {"l": 136.80096, "t": 656.38617, "r": 527.28973, "b": 665.59917, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "sensitive data and AI models for enterprises in highly regulated industries or those industries ", "bbox": {"l": 136.80098, "t": 668.38597, "r": 547.28143, "b": 677.59898, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "that are worried about security.", "bbox": {"l": 136.80098, "t": 680.38578, "r": 274.02484, "b": 689.59879, "coord_origin": "TOPLEFT"}}]}, "text": "From a performance perspective, CP4D on IBM Z provides your data and AI with high transaction processing and a powerful infrastructure. From the embedded accelerators perspective, CP4D on IBM Z can investigate each transaction thanks to a cutting-edge DL inference technology even in the most demanding, sensitive, and latency-prone real-time workloads. From a reliability perspective, CP4D on IBM Z provides high availability and resiliency. Lastly from the security perspective, CP4D on IBM Z is suitable for protecting sensitive data and AI models for enterprises in highly regulated industries or those industries that are worried about security."}, {"label": "picture", "id": 10, "page_no": 9, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 63.72787094116211, "t": 179.1451873779297, "r": 547.3121948242188, "b": 480.79541015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9759865999221802, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 9, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.2588882446289, "t": 754.197998046875, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8762364983558655, "cells": [{"id": 0, "text": "8 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "8"}, {"label": "page_footer", "id": 1, "page_no": 9, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 87.62134552001953, "t": 754.7377319335938, "r": 261.53851, "b": 763.8740234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9511485695838928, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 87.840302, "t": 755.538002, "r": 261.53851, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}]}}, {"page_no": 10, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "9", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Cloud Pak for Data capabilities on IBM Z and IBM LinuxONE", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 519.7558, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "With CP4D on IBM Z and IBM LinuxONE, users can develop, train, and deploy AI and ML ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 535.20593, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "models. Users can accomplish this task by using the CP4D IBM Watsonfi Studio and IBM ", "bbox": {"l": 136.79999, "t": 115.48852999999997, "r": 536.32245, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Watson Machine Learning (WLM) services. By using these two fundamental services, users ", "bbox": {"l": 136.8, "t": 127.48834000000011, "r": 544.54041, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "can accomplish the following tasks:", "bbox": {"l": 136.80002, "t": 139.48816, "r": 292.84833, "b": 148.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 156.67711999999995, "r": 141.78001, "b": 165.45190000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Provision various containerized databases.", "bbox": {"l": 151.20018, "t": 156.52770999999996, "r": 341.24393, "b": 165.74072, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 173.65692, "r": 141.78001, "b": 182.43169999999998, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Explore, clean, shape, and alter data by using Data Refinery. ", "bbox": {"l": 151.20018, "t": 173.50751000000002, "r": 423.51254, "b": 182.72051999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 190.63671999999997, "r": 141.78001, "b": 199.41150000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Use project-specific data that is uploaded, or connect to distant data.", "bbox": {"l": 151.20018, "t": 190.4873, "r": 454.56392999999997, "b": 199.70032000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "GLYPH", "bbox": {"l": 136.8, "t": 207.67627000000005, "r": 141.78, "b": 216.45105, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Create Spark run times and applications.", "bbox": {"l": 151.20016, "t": 207.52686000000006, "r": 331.7222, "b": 216.73987, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "GLYPH", "bbox": {"l": 136.8, "t": 224.65607, "r": 141.78, "b": 233.43084999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Create, build, evaluate, and deploy analytics and ML models with trust and transparency.", "bbox": {"l": 151.20016, "t": 224.50665000000004, "r": 544.10718, "b": 233.71966999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "GLYPH", "bbox": {"l": 136.8, "t": 241.63585999999998, "r": 141.78, "b": 250.41063999999994, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Leverage the AI Integrated Accelerator for TensorFlow 2.7.2 and Snap ML 1.9.", "bbox": {"l": 151.20016, "t": 241.48645, "r": 499.12784, "b": 250.69946000000004, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "For more information about the specifics of these capabilities, see Capabilities on Linux on ", "bbox": {"l": 136.8, "t": 263.50604, "r": 538.98682, "b": 272.71906, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "IBM Z and IBM LinuxONE.", "bbox": {"l": 136.79999, "t": 275.50586, "r": 254.52917, "b": 284.71887, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Open-source ecosystem", "bbox": {"l": 64.800003, "t": 313.20071, "r": 250.52972000000003, "b": 327.96371000000005, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "These days, innovation and product development are not limited to closed doors within an ", "bbox": {"l": 136.8, "t": 345.52872, "r": 536.28241, "b": 354.7417, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "organization. In any industry sector, the solutions include a mix of proprietary code ", "bbox": {"l": 136.79999, "t": 357.52853, "r": 503.47137, "b": 366.74152, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "addressing the core business solution that is supported or integrated into other software ", "bbox": {"l": 136.79999, "t": 369.52835, "r": 527.47821, "b": 378.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "components from open source. In some cases, enterprises business solutions also are built ", "bbox": {"l": 136.79999, "t": 381.52817, "r": 543.42596, "b": 390.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "from open-source community offerings. Thus, open-source software becomes an important ", "bbox": {"l": 136.79999, "t": 393.52798, "r": 541.23053, "b": 402.74097, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ingredient in modern-day solution building. ", "bbox": {"l": 136.79999, "t": 405.5278, "r": 327.38654, "b": 414.7407799999999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "IBM actively participates in various open-source communities as part of steering boards ", "bbox": {"l": 136.79999, "t": 427.48761, "r": 526.17334, "b": 436.70059000000003, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "defining the roadmap of the community, and also in contributing code to make the community ", "bbox": {"l": 136.8, "t": 439.48743, "r": 547.23969, "b": 448.70041, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "a better place for everyone to participate. Red Hat also actively participates in various ", "bbox": {"l": 136.8, "t": 451.48724, "r": 517.25299, "b": 460.70023, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "open-source communities and makes extensive contributions. In open-source communities, ", "bbox": {"l": 136.8, "t": 463.48706, "r": 544.01959, "b": 472.70004, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "although most open-source development happens on x86 / amd64 or the Intel architecture, ", "bbox": {"l": 136.8, "t": 475.48688, "r": 541.23773, "b": 484.69986, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "the same open-source software is used by other architectures, such as IBM Power (ppc64le), ", "bbox": {"l": 136.8, "t": 487.54645, "r": 547.14795, "b": 496.75943, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "IBM Z and IBM LInuxONE (s390x), ARM, and Sparc. So, the availability of an open-source ", "bbox": {"l": 136.8, "t": 499.54626, "r": 539.51367, "b": 508.75925, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "ecosystem on any architecture is key and critical to business.", "bbox": {"l": 136.79901, "t": 511.54608, "r": 407.2449, "b": 520.75906, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "On IBM Z and IBM LinuxONE (s390x) architecture, there is a huge open-source support ", "bbox": {"l": 136.79901, "t": 533.50589, "r": 527.90936, "b": 542.71889, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "ecosystem that ranges from operating systems such as Linux; application run times; cloud ", "bbox": {"l": 136.79901, "t": 545.50569, "r": 537.35345, "b": 554.71869, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "and container services; DevOps and automation; big data; observability; analytics; ", "bbox": {"l": 136.79901, "t": 557.50549, "r": 502.30115, "b": 566.71849, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "databases; and storage. The ecosystem on IBM Z and IBM LinuxONE is growing.", "bbox": {"l": 136.79803, "t": 569.5052900000001, "r": 496.86108, "b": 578.71829, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "IBM Z and IBM LinuxONE include much open-source software in their ecosystem. You can ", "bbox": {"l": 136.79803, "t": 591.52486, "r": 540.76263, "b": 600.73785, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "see the growing list of open-source software for IBM Z and LinuxONE at The Growing ", "bbox": {"l": 136.79803, "t": 603.52466, "r": 517.90955, "b": 612.73766, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Ecosystem of Open-Source Software for IBM Z and LinuxONE.", "bbox": {"l": 136.79803, "t": 615.52446, "r": 415.62726, "b": 624.73746, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "IBM Z and IBM LinuxONE are available to various communities to include support for s390x ", "bbox": {"l": 136.79803, "t": 637.54402, "r": 544.60699, "b": 646.75702, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "builds as part of their community\u2019s continuous integration and continuous delivery (CI/CD). ", "bbox": {"l": 136.79803, "t": 649.54382, "r": 538.40308, "b": 658.7568200000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Also, for open-source community developers, infrastructure resources are available on a ", "bbox": {"l": 136.79802, "t": 661.54362, "r": 529.5954, "b": 670.75663, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "no-charge basis through the IBM LinuxONE community cloud. ", "bbox": {"l": 136.79802, "t": 673.54343, "r": 413.47775, "b": 682.75644, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 540.9940795898438, "t": 754.3685302734375, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8976032733917236, "cells": [{"id": 0, "text": "9", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "section_header", "bbox": {"l": 64.78146362304688, "t": 70.03508758544922, "r": 519.7558, "b": 86.2610855102539, "coord_origin": "TOPLEFT"}, "confidence": 0.9496250748634338, "cells": [{"id": 1, "text": "Cloud Pak for Data capabilities on IBM Z and IBM LinuxONE", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 519.7558, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.4989776611328, "t": 102.55187225341797, "r": 544.54041, "b": 148.83160400390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9850783348083496, "cells": [{"id": 2, "text": "With CP4D on IBM Z and IBM LinuxONE, users can develop, train, and deploy AI and ML ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 535.20593, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "models. Users can accomplish this task by using the CP4D IBM Watsonfi Studio and IBM ", "bbox": {"l": 136.79999, "t": 115.48852999999997, "r": 536.32245, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Watson Machine Learning (WLM) services. By using these two fundamental services, users ", "bbox": {"l": 136.8, "t": 127.48834000000011, "r": 544.54041, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "can accomplish the following tasks:", "bbox": {"l": 136.80002, "t": 139.48816, "r": 292.84833, "b": 148.70117000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "list_item", "bbox": {"l": 135.4654083251953, "t": 155.99386596679688, "r": 341.2695007324219, "b": 165.74072, "coord_origin": "TOPLEFT"}, "confidence": 0.9414460062980652, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 156.67711999999995, "r": 141.78001, "b": 165.45190000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Provision various containerized databases.", "bbox": {"l": 151.20018, "t": 156.52770999999996, "r": 341.24393, "b": 165.74072, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 135.58457946777344, "t": 172.69300842285156, "r": 423.51254, "b": 182.9974822998047, "coord_origin": "TOPLEFT"}, "confidence": 0.9599420428276062, "cells": [{"id": 8, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 173.65692, "r": 141.78001, "b": 182.43169999999998, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Explore, clean, shape, and alter data by using Data Refinery. ", "bbox": {"l": 151.20018, "t": 173.50751000000002, "r": 423.51254, "b": 182.72051999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 135.65841674804688, "t": 189.37014770507812, "r": 454.56392999999997, "b": 199.70032000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9574293494224548, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 190.63671999999997, "r": 141.78001, "b": 199.41150000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Use project-specific data that is uploaded, or connect to distant data.", "bbox": {"l": 151.20018, "t": 190.4873, "r": 454.56392999999997, "b": 199.70032000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.5748748779297, "t": 206.63885498046875, "r": 331.7222, "b": 216.97801208496094, "coord_origin": "TOPLEFT"}, "confidence": 0.9566726684570312, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.8, "t": 207.67627000000005, "r": 141.78, "b": 216.45105, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Create Spark run times and applications.", "bbox": {"l": 151.20016, "t": 207.52686000000006, "r": 331.7222, "b": 216.73987, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.54833984375, "t": 223.43775939941406, "r": 544.10718, "b": 233.71966999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9559329748153687, "cells": [{"id": 14, "text": "GLYPH", "bbox": {"l": 136.8, "t": 224.65607, "r": 141.78, "b": 233.43084999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Create, build, evaluate, and deploy analytics and ML models with trust and transparency.", "bbox": {"l": 151.20016, "t": 224.50665000000004, "r": 544.10718, "b": 233.71966999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.70672607421875, "t": 240.82850646972656, "r": 499.12784, "b": 251.19873046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9593135714530945, "cells": [{"id": 16, "text": "GLYPH", "bbox": {"l": 136.8, "t": 241.63585999999998, "r": 141.78, "b": 250.41063999999994, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Leverage the AI Integrated Accelerator for TensorFlow 2.7.2 and Snap ML 1.9.", "bbox": {"l": 151.20016, "t": 241.48645, "r": 499.12784, "b": 250.69946000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 136.2892303466797, "t": 262.5376892089844, "r": 538.98682, "b": 284.71887, "coord_origin": "TOPLEFT"}, "confidence": 0.9708739519119263, "cells": [{"id": 18, "text": "For more information about the specifics of these capabilities, see Capabilities on Linux on ", "bbox": {"l": 136.8, "t": 263.50604, "r": 538.98682, "b": 272.71906, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "IBM Z and IBM LinuxONE.", "bbox": {"l": 136.79999, "t": 275.50586, "r": 254.52917, "b": 284.71887, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "section_header", "bbox": {"l": 64.76227569580078, "t": 312.55224609375, "r": 250.52972000000003, "b": 328.220458984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9684263467788696, "cells": [{"id": 20, "text": "Open-source ecosystem", "bbox": {"l": 64.800003, "t": 313.20071, "r": 250.52972000000003, "b": 327.96371000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 135.97999572753906, "t": 344.667724609375, "r": 543.42596, "b": 415.0365905761719, "coord_origin": "TOPLEFT"}, "confidence": 0.988315224647522, "cells": [{"id": 21, "text": "These days, innovation and product development are not limited to closed doors within an ", "bbox": {"l": 136.8, "t": 345.52872, "r": 536.28241, "b": 354.7417, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "organization. In any industry sector, the solutions include a mix of proprietary code ", "bbox": {"l": 136.79999, "t": 357.52853, "r": 503.47137, "b": 366.74152, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "addressing the core business solution that is supported or integrated into other software ", "bbox": {"l": 136.79999, "t": 369.52835, "r": 527.47821, "b": 378.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "components from open source. In some cases, enterprises business solutions also are built ", "bbox": {"l": 136.79999, "t": 381.52817, "r": 543.42596, "b": 390.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "from open-source community offerings. Thus, open-source software becomes an important ", "bbox": {"l": 136.79999, "t": 393.52798, "r": 541.23053, "b": 402.74097, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ingredient in modern-day solution building. ", "bbox": {"l": 136.79999, "t": 405.5278, "r": 327.38654, "b": 414.7407799999999, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 135.85617065429688, "t": 426.64752197265625, "r": 547.23969, "b": 520.862060546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9870705008506775, "cells": [{"id": 27, "text": "IBM actively participates in various open-source communities as part of steering boards ", "bbox": {"l": 136.79999, "t": 427.48761, "r": 526.17334, "b": 436.70059000000003, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "defining the roadmap of the community, and also in contributing code to make the community ", "bbox": {"l": 136.8, "t": 439.48743, "r": 547.23969, "b": 448.70041, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "a better place for everyone to participate. Red Hat also actively participates in various ", "bbox": {"l": 136.8, "t": 451.48724, "r": 517.25299, "b": 460.70023, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "open-source communities and makes extensive contributions. In open-source communities, ", "bbox": {"l": 136.8, "t": 463.48706, "r": 544.01959, "b": 472.70004, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "although most open-source development happens on x86 / amd64 or the Intel architecture, ", "bbox": {"l": 136.8, "t": 475.48688, "r": 541.23773, "b": 484.69986, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "the same open-source software is used by other architectures, such as IBM Power (ppc64le), ", "bbox": {"l": 136.8, "t": 487.54645, "r": 547.14795, "b": 496.75943, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "IBM Z and IBM LInuxONE (s390x), ARM, and Sparc. So, the availability of an open-source ", "bbox": {"l": 136.8, "t": 499.54626, "r": 539.51367, "b": 508.75925, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "ecosystem on any architecture is key and critical to business.", "bbox": {"l": 136.79901, "t": 511.54608, "r": 407.2449, "b": 520.75906, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 135.98208618164062, "t": 532.6904296875, "r": 537.35345, "b": 578.9651489257812, "coord_origin": "TOPLEFT"}, "confidence": 0.9855135083198547, "cells": [{"id": 35, "text": "On IBM Z and IBM LinuxONE (s390x) architecture, there is a huge open-source support ", "bbox": {"l": 136.79901, "t": 533.50589, "r": 527.90936, "b": 542.71889, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "ecosystem that ranges from operating systems such as Linux; application run times; cloud ", "bbox": {"l": 136.79901, "t": 545.50569, "r": 537.35345, "b": 554.71869, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "and container services; DevOps and automation; big data; observability; analytics; ", "bbox": {"l": 136.79901, "t": 557.50549, "r": 502.30115, "b": 566.71849, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "databases; and storage. The ecosystem on IBM Z and IBM LinuxONE is growing.", "bbox": {"l": 136.79803, "t": 569.5052900000001, "r": 496.86108, "b": 578.71829, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "text", "bbox": {"l": 136.20474243164062, "t": 590.5270385742188, "r": 540.76263, "b": 624.9845581054688, "coord_origin": "TOPLEFT"}, "confidence": 0.9835407137870789, "cells": [{"id": 39, "text": "IBM Z and IBM LinuxONE include much open-source software in their ecosystem. You can ", "bbox": {"l": 136.79803, "t": 591.52486, "r": 540.76263, "b": 600.73785, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "see the growing list of open-source software for IBM Z and LinuxONE at The Growing ", "bbox": {"l": 136.79803, "t": 603.52466, "r": 517.90955, "b": 612.73766, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Ecosystem of Open-Source Software for IBM Z and LinuxONE.", "bbox": {"l": 136.79803, "t": 615.52446, "r": 415.62726, "b": 624.73746, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "text", "bbox": {"l": 136.00357055664062, "t": 636.6727294921875, "r": 544.60699, "b": 683.03759765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9842023849487305, "cells": [{"id": 42, "text": "IBM Z and IBM LinuxONE are available to various communities to include support for s390x ", "bbox": {"l": 136.79803, "t": 637.54402, "r": 544.60699, "b": 646.75702, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "builds as part of their community\u2019s continuous integration and continuous delivery (CI/CD). ", "bbox": {"l": 136.79803, "t": 649.54382, "r": 538.40308, "b": 658.7568200000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Also, for open-source community developers, infrastructure resources are available on a ", "bbox": {"l": 136.79802, "t": 661.54362, "r": 529.5954, "b": 670.75663, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "no-charge basis through the IBM LinuxONE community cloud. ", "bbox": {"l": 136.79802, "t": 673.54343, "r": 413.47775, "b": 682.75644, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 10, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 540.9940795898438, "t": 754.3685302734375, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8976032733917236, "cells": [{"id": 0, "text": "9", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "9"}, {"label": "section_header", "id": 1, "page_no": 10, "cluster": {"id": 1, "label": "section_header", "bbox": {"l": 64.78146362304688, "t": 70.03508758544922, "r": 519.7558, "b": 86.2610855102539, "coord_origin": "TOPLEFT"}, "confidence": 0.9496250748634338, "cells": [{"id": 1, "text": "Cloud Pak for Data capabilities on IBM Z and IBM LinuxONE", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 519.7558, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, "text": "Cloud Pak for Data capabilities on IBM Z and IBM LinuxONE"}, {"label": "text", "id": 2, "page_no": 10, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.4989776611328, "t": 102.55187225341797, "r": 544.54041, "b": 148.83160400390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9850783348083496, "cells": [{"id": 2, "text": "With CP4D on IBM Z and IBM LinuxONE, users can develop, train, and deploy AI and ML ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 535.20593, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "models. Users can accomplish this task by using the CP4D IBM Watsonfi Studio and IBM ", "bbox": {"l": 136.79999, "t": 115.48852999999997, "r": 536.32245, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Watson Machine Learning (WLM) services. By using these two fundamental services, users ", "bbox": {"l": 136.8, "t": 127.48834000000011, "r": 544.54041, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "can accomplish the following tasks:", "bbox": {"l": 136.80002, "t": 139.48816, "r": 292.84833, "b": 148.70117000000005, "coord_origin": "TOPLEFT"}}]}, "text": "With CP4D on IBM Z and IBM LinuxONE, users can develop, train, and deploy AI and ML models. Users can accomplish this task by using the CP4D IBM Watsonfi Studio and IBM Watson Machine Learning (WLM) services. By using these two fundamental services, users can accomplish the following tasks:"}, {"label": "list_item", "id": 3, "page_no": 10, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 135.4654083251953, "t": 155.99386596679688, "r": 341.2695007324219, "b": 165.74072, "coord_origin": "TOPLEFT"}, "confidence": 0.9414460062980652, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 156.67711999999995, "r": 141.78001, "b": 165.45190000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Provision various containerized databases.", "bbox": {"l": 151.20018, "t": 156.52770999999996, "r": 341.24393, "b": 165.74072, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Provision various containerized databases."}, {"label": "list_item", "id": 4, "page_no": 10, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.58457946777344, "t": 172.69300842285156, "r": 423.51254, "b": 182.9974822998047, "coord_origin": "TOPLEFT"}, "confidence": 0.9599420428276062, "cells": [{"id": 8, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 173.65692, "r": 141.78001, "b": 182.43169999999998, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Explore, clean, shape, and alter data by using Data Refinery. ", "bbox": {"l": 151.20018, "t": 173.50751000000002, "r": 423.51254, "b": 182.72051999999996, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Explore, clean, shape, and alter data by using Data Refinery."}, {"label": "list_item", "id": 5, "page_no": 10, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.65841674804688, "t": 189.37014770507812, "r": 454.56392999999997, "b": 199.70032000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9574293494224548, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 190.63671999999997, "r": 141.78001, "b": 199.41150000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Use project-specific data that is uploaded, or connect to distant data.", "bbox": {"l": 151.20018, "t": 190.4873, "r": 454.56392999999997, "b": 199.70032000000003, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Use project-specific data that is uploaded, or connect to distant data."}, {"label": "list_item", "id": 6, "page_no": 10, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.5748748779297, "t": 206.63885498046875, "r": 331.7222, "b": 216.97801208496094, "coord_origin": "TOPLEFT"}, "confidence": 0.9566726684570312, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.8, "t": 207.67627000000005, "r": 141.78, "b": 216.45105, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Create Spark run times and applications.", "bbox": {"l": 151.20016, "t": 207.52686000000006, "r": 331.7222, "b": 216.73987, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Create Spark run times and applications."}, {"label": "list_item", "id": 7, "page_no": 10, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.54833984375, "t": 223.43775939941406, "r": 544.10718, "b": 233.71966999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9559329748153687, "cells": [{"id": 14, "text": "GLYPH", "bbox": {"l": 136.8, "t": 224.65607, "r": 141.78, "b": 233.43084999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Create, build, evaluate, and deploy analytics and ML models with trust and transparency.", "bbox": {"l": 151.20016, "t": 224.50665000000004, "r": 544.10718, "b": 233.71966999999995, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Create, build, evaluate, and deploy analytics and ML models with trust and transparency."}, {"label": "list_item", "id": 8, "page_no": 10, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.70672607421875, "t": 240.82850646972656, "r": 499.12784, "b": 251.19873046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9593135714530945, "cells": [{"id": 16, "text": "GLYPH", "bbox": {"l": 136.8, "t": 241.63585999999998, "r": 141.78, "b": 250.41063999999994, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Leverage the AI Integrated Accelerator for TensorFlow 2.7.2 and Snap ML 1.9.", "bbox": {"l": 151.20016, "t": 241.48645, "r": 499.12784, "b": 250.69946000000004, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Leverage the AI Integrated Accelerator for TensorFlow 2.7.2 and Snap ML 1.9."}, {"label": "text", "id": 9, "page_no": 10, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.2892303466797, "t": 262.5376892089844, "r": 538.98682, "b": 284.71887, "coord_origin": "TOPLEFT"}, "confidence": 0.9708739519119263, "cells": [{"id": 18, "text": "For more information about the specifics of these capabilities, see Capabilities on Linux on ", "bbox": {"l": 136.8, "t": 263.50604, "r": 538.98682, "b": 272.71906, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "IBM Z and IBM LinuxONE.", "bbox": {"l": 136.79999, "t": 275.50586, "r": 254.52917, "b": 284.71887, "coord_origin": "TOPLEFT"}}]}, "text": "For more information about the specifics of these capabilities, see Capabilities on Linux on IBM Z and IBM LinuxONE."}, {"label": "section_header", "id": 10, "page_no": 10, "cluster": {"id": 10, "label": "section_header", "bbox": {"l": 64.76227569580078, "t": 312.55224609375, "r": 250.52972000000003, "b": 328.220458984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9684263467788696, "cells": [{"id": 20, "text": "Open-source ecosystem", "bbox": {"l": 64.800003, "t": 313.20071, "r": 250.52972000000003, "b": 327.96371000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Open-source ecosystem"}, {"label": "text", "id": 11, "page_no": 10, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.97999572753906, "t": 344.667724609375, "r": 543.42596, "b": 415.0365905761719, "coord_origin": "TOPLEFT"}, "confidence": 0.988315224647522, "cells": [{"id": 21, "text": "These days, innovation and product development are not limited to closed doors within an ", "bbox": {"l": 136.8, "t": 345.52872, "r": 536.28241, "b": 354.7417, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "organization. In any industry sector, the solutions include a mix of proprietary code ", "bbox": {"l": 136.79999, "t": 357.52853, "r": 503.47137, "b": 366.74152, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "addressing the core business solution that is supported or integrated into other software ", "bbox": {"l": 136.79999, "t": 369.52835, "r": 527.47821, "b": 378.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "components from open source. In some cases, enterprises business solutions also are built ", "bbox": {"l": 136.79999, "t": 381.52817, "r": 543.42596, "b": 390.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "from open-source community offerings. Thus, open-source software becomes an important ", "bbox": {"l": 136.79999, "t": 393.52798, "r": 541.23053, "b": 402.74097, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ingredient in modern-day solution building. ", "bbox": {"l": 136.79999, "t": 405.5278, "r": 327.38654, "b": 414.7407799999999, "coord_origin": "TOPLEFT"}}]}, "text": "These days, innovation and product development are not limited to closed doors within an organization. In any industry sector, the solutions include a mix of proprietary code addressing the core business solution that is supported or integrated into other software components from open source. In some cases, enterprises business solutions also are built from open-source community offerings. Thus, open-source software becomes an important ingredient in modern-day solution building."}, {"label": "text", "id": 12, "page_no": 10, "cluster": {"id": 12, "label": "text", "bbox": {"l": 135.85617065429688, "t": 426.64752197265625, "r": 547.23969, "b": 520.862060546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9870705008506775, "cells": [{"id": 27, "text": "IBM actively participates in various open-source communities as part of steering boards ", "bbox": {"l": 136.79999, "t": 427.48761, "r": 526.17334, "b": 436.70059000000003, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "defining the roadmap of the community, and also in contributing code to make the community ", "bbox": {"l": 136.8, "t": 439.48743, "r": 547.23969, "b": 448.70041, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "a better place for everyone to participate. Red Hat also actively participates in various ", "bbox": {"l": 136.8, "t": 451.48724, "r": 517.25299, "b": 460.70023, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "open-source communities and makes extensive contributions. In open-source communities, ", "bbox": {"l": 136.8, "t": 463.48706, "r": 544.01959, "b": 472.70004, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "although most open-source development happens on x86 / amd64 or the Intel architecture, ", "bbox": {"l": 136.8, "t": 475.48688, "r": 541.23773, "b": 484.69986, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "the same open-source software is used by other architectures, such as IBM Power (ppc64le), ", "bbox": {"l": 136.8, "t": 487.54645, "r": 547.14795, "b": 496.75943, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "IBM Z and IBM LInuxONE (s390x), ARM, and Sparc. So, the availability of an open-source ", "bbox": {"l": 136.8, "t": 499.54626, "r": 539.51367, "b": 508.75925, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "ecosystem on any architecture is key and critical to business.", "bbox": {"l": 136.79901, "t": 511.54608, "r": 407.2449, "b": 520.75906, "coord_origin": "TOPLEFT"}}]}, "text": "IBM actively participates in various open-source communities as part of steering boards defining the roadmap of the community, and also in contributing code to make the community a better place for everyone to participate. Red Hat also actively participates in various open-source communities and makes extensive contributions. In open-source communities, although most open-source development happens on x86 / amd64 or the Intel architecture, the same open-source software is used by other architectures, such as IBM Power (ppc64le), IBM Z and IBM LInuxONE (s390x), ARM, and Sparc. So, the availability of an open-source ecosystem on any architecture is key and critical to business."}, {"label": "text", "id": 13, "page_no": 10, "cluster": {"id": 13, "label": "text", "bbox": {"l": 135.98208618164062, "t": 532.6904296875, "r": 537.35345, "b": 578.9651489257812, "coord_origin": "TOPLEFT"}, "confidence": 0.9855135083198547, "cells": [{"id": 35, "text": "On IBM Z and IBM LinuxONE (s390x) architecture, there is a huge open-source support ", "bbox": {"l": 136.79901, "t": 533.50589, "r": 527.90936, "b": 542.71889, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "ecosystem that ranges from operating systems such as Linux; application run times; cloud ", "bbox": {"l": 136.79901, "t": 545.50569, "r": 537.35345, "b": 554.71869, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "and container services; DevOps and automation; big data; observability; analytics; ", "bbox": {"l": 136.79901, "t": 557.50549, "r": 502.30115, "b": 566.71849, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "databases; and storage. The ecosystem on IBM Z and IBM LinuxONE is growing.", "bbox": {"l": 136.79803, "t": 569.5052900000001, "r": 496.86108, "b": 578.71829, "coord_origin": "TOPLEFT"}}]}, "text": "On IBM Z and IBM LinuxONE (s390x) architecture, there is a huge open-source support ecosystem that ranges from operating systems such as Linux; application run times; cloud and container services; DevOps and automation; big data; observability; analytics; databases; and storage. The ecosystem on IBM Z and IBM LinuxONE is growing."}, {"label": "text", "id": 14, "page_no": 10, "cluster": {"id": 14, "label": "text", "bbox": {"l": 136.20474243164062, "t": 590.5270385742188, "r": 540.76263, "b": 624.9845581054688, "coord_origin": "TOPLEFT"}, "confidence": 0.9835407137870789, "cells": [{"id": 39, "text": "IBM Z and IBM LinuxONE include much open-source software in their ecosystem. You can ", "bbox": {"l": 136.79803, "t": 591.52486, "r": 540.76263, "b": 600.73785, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "see the growing list of open-source software for IBM Z and LinuxONE at The Growing ", "bbox": {"l": 136.79803, "t": 603.52466, "r": 517.90955, "b": 612.73766, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Ecosystem of Open-Source Software for IBM Z and LinuxONE.", "bbox": {"l": 136.79803, "t": 615.52446, "r": 415.62726, "b": 624.73746, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Z and IBM LinuxONE include much open-source software in their ecosystem. You can see the growing list of open-source software for IBM Z and LinuxONE at The Growing Ecosystem of Open-Source Software for IBM Z and LinuxONE."}, {"label": "text", "id": 15, "page_no": 10, "cluster": {"id": 15, "label": "text", "bbox": {"l": 136.00357055664062, "t": 636.6727294921875, "r": 544.60699, "b": 683.03759765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9842023849487305, "cells": [{"id": 42, "text": "IBM Z and IBM LinuxONE are available to various communities to include support for s390x ", "bbox": {"l": 136.79803, "t": 637.54402, "r": 544.60699, "b": 646.75702, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "builds as part of their community\u2019s continuous integration and continuous delivery (CI/CD). ", "bbox": {"l": 136.79803, "t": 649.54382, "r": 538.40308, "b": 658.7568200000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Also, for open-source community developers, infrastructure resources are available on a ", "bbox": {"l": 136.79802, "t": 661.54362, "r": 529.5954, "b": 670.75663, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "no-charge basis through the IBM LinuxONE community cloud. ", "bbox": {"l": 136.79802, "t": 673.54343, "r": 413.47775, "b": 682.75644, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Z and IBM LinuxONE are available to various communities to include support for s390x builds as part of their community\u2019s continuous integration and continuous delivery (CI/CD). Also, for open-source community developers, infrastructure resources are available on a no-charge basis through the IBM LinuxONE community cloud."}], "body": [{"label": "section_header", "id": 1, "page_no": 10, "cluster": {"id": 1, "label": "section_header", "bbox": {"l": 64.78146362304688, "t": 70.03508758544922, "r": 519.7558, "b": 86.2610855102539, "coord_origin": "TOPLEFT"}, "confidence": 0.9496250748634338, "cells": [{"id": 1, "text": "Cloud Pak for Data capabilities on IBM Z and IBM LinuxONE", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 519.7558, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, "text": "Cloud Pak for Data capabilities on IBM Z and IBM LinuxONE"}, {"label": "text", "id": 2, "page_no": 10, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.4989776611328, "t": 102.55187225341797, "r": 544.54041, "b": 148.83160400390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9850783348083496, "cells": [{"id": 2, "text": "With CP4D on IBM Z and IBM LinuxONE, users can develop, train, and deploy AI and ML ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 535.20593, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "models. Users can accomplish this task by using the CP4D IBM Watsonfi Studio and IBM ", "bbox": {"l": 136.79999, "t": 115.48852999999997, "r": 536.32245, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Watson Machine Learning (WLM) services. By using these two fundamental services, users ", "bbox": {"l": 136.8, "t": 127.48834000000011, "r": 544.54041, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "can accomplish the following tasks:", "bbox": {"l": 136.80002, "t": 139.48816, "r": 292.84833, "b": 148.70117000000005, "coord_origin": "TOPLEFT"}}]}, "text": "With CP4D on IBM Z and IBM LinuxONE, users can develop, train, and deploy AI and ML models. Users can accomplish this task by using the CP4D IBM Watsonfi Studio and IBM Watson Machine Learning (WLM) services. By using these two fundamental services, users can accomplish the following tasks:"}, {"label": "list_item", "id": 3, "page_no": 10, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 135.4654083251953, "t": 155.99386596679688, "r": 341.2695007324219, "b": 165.74072, "coord_origin": "TOPLEFT"}, "confidence": 0.9414460062980652, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 156.67711999999995, "r": 141.78001, "b": 165.45190000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Provision various containerized databases.", "bbox": {"l": 151.20018, "t": 156.52770999999996, "r": 341.24393, "b": 165.74072, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Provision various containerized databases."}, {"label": "list_item", "id": 4, "page_no": 10, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.58457946777344, "t": 172.69300842285156, "r": 423.51254, "b": 182.9974822998047, "coord_origin": "TOPLEFT"}, "confidence": 0.9599420428276062, "cells": [{"id": 8, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 173.65692, "r": 141.78001, "b": 182.43169999999998, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Explore, clean, shape, and alter data by using Data Refinery. ", "bbox": {"l": 151.20018, "t": 173.50751000000002, "r": 423.51254, "b": 182.72051999999996, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Explore, clean, shape, and alter data by using Data Refinery."}, {"label": "list_item", "id": 5, "page_no": 10, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.65841674804688, "t": 189.37014770507812, "r": 454.56392999999997, "b": 199.70032000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9574293494224548, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 190.63671999999997, "r": 141.78001, "b": 199.41150000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Use project-specific data that is uploaded, or connect to distant data.", "bbox": {"l": 151.20018, "t": 190.4873, "r": 454.56392999999997, "b": 199.70032000000003, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Use project-specific data that is uploaded, or connect to distant data."}, {"label": "list_item", "id": 6, "page_no": 10, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.5748748779297, "t": 206.63885498046875, "r": 331.7222, "b": 216.97801208496094, "coord_origin": "TOPLEFT"}, "confidence": 0.9566726684570312, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.8, "t": 207.67627000000005, "r": 141.78, "b": 216.45105, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Create Spark run times and applications.", "bbox": {"l": 151.20016, "t": 207.52686000000006, "r": 331.7222, "b": 216.73987, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Create Spark run times and applications."}, {"label": "list_item", "id": 7, "page_no": 10, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.54833984375, "t": 223.43775939941406, "r": 544.10718, "b": 233.71966999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9559329748153687, "cells": [{"id": 14, "text": "GLYPH", "bbox": {"l": 136.8, "t": 224.65607, "r": 141.78, "b": 233.43084999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Create, build, evaluate, and deploy analytics and ML models with trust and transparency.", "bbox": {"l": 151.20016, "t": 224.50665000000004, "r": 544.10718, "b": 233.71966999999995, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Create, build, evaluate, and deploy analytics and ML models with trust and transparency."}, {"label": "list_item", "id": 8, "page_no": 10, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.70672607421875, "t": 240.82850646972656, "r": 499.12784, "b": 251.19873046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9593135714530945, "cells": [{"id": 16, "text": "GLYPH", "bbox": {"l": 136.8, "t": 241.63585999999998, "r": 141.78, "b": 250.41063999999994, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Leverage the AI Integrated Accelerator for TensorFlow 2.7.2 and Snap ML 1.9.", "bbox": {"l": 151.20016, "t": 241.48645, "r": 499.12784, "b": 250.69946000000004, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Leverage the AI Integrated Accelerator for TensorFlow 2.7.2 and Snap ML 1.9."}, {"label": "text", "id": 9, "page_no": 10, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.2892303466797, "t": 262.5376892089844, "r": 538.98682, "b": 284.71887, "coord_origin": "TOPLEFT"}, "confidence": 0.9708739519119263, "cells": [{"id": 18, "text": "For more information about the specifics of these capabilities, see Capabilities on Linux on ", "bbox": {"l": 136.8, "t": 263.50604, "r": 538.98682, "b": 272.71906, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "IBM Z and IBM LinuxONE.", "bbox": {"l": 136.79999, "t": 275.50586, "r": 254.52917, "b": 284.71887, "coord_origin": "TOPLEFT"}}]}, "text": "For more information about the specifics of these capabilities, see Capabilities on Linux on IBM Z and IBM LinuxONE."}, {"label": "section_header", "id": 10, "page_no": 10, "cluster": {"id": 10, "label": "section_header", "bbox": {"l": 64.76227569580078, "t": 312.55224609375, "r": 250.52972000000003, "b": 328.220458984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9684263467788696, "cells": [{"id": 20, "text": "Open-source ecosystem", "bbox": {"l": 64.800003, "t": 313.20071, "r": 250.52972000000003, "b": 327.96371000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Open-source ecosystem"}, {"label": "text", "id": 11, "page_no": 10, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.97999572753906, "t": 344.667724609375, "r": 543.42596, "b": 415.0365905761719, "coord_origin": "TOPLEFT"}, "confidence": 0.988315224647522, "cells": [{"id": 21, "text": "These days, innovation and product development are not limited to closed doors within an ", "bbox": {"l": 136.8, "t": 345.52872, "r": 536.28241, "b": 354.7417, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "organization. In any industry sector, the solutions include a mix of proprietary code ", "bbox": {"l": 136.79999, "t": 357.52853, "r": 503.47137, "b": 366.74152, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "addressing the core business solution that is supported or integrated into other software ", "bbox": {"l": 136.79999, "t": 369.52835, "r": 527.47821, "b": 378.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "components from open source. In some cases, enterprises business solutions also are built ", "bbox": {"l": 136.79999, "t": 381.52817, "r": 543.42596, "b": 390.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "from open-source community offerings. Thus, open-source software becomes an important ", "bbox": {"l": 136.79999, "t": 393.52798, "r": 541.23053, "b": 402.74097, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ingredient in modern-day solution building. ", "bbox": {"l": 136.79999, "t": 405.5278, "r": 327.38654, "b": 414.7407799999999, "coord_origin": "TOPLEFT"}}]}, "text": "These days, innovation and product development are not limited to closed doors within an organization. In any industry sector, the solutions include a mix of proprietary code addressing the core business solution that is supported or integrated into other software components from open source. In some cases, enterprises business solutions also are built from open-source community offerings. Thus, open-source software becomes an important ingredient in modern-day solution building."}, {"label": "text", "id": 12, "page_no": 10, "cluster": {"id": 12, "label": "text", "bbox": {"l": 135.85617065429688, "t": 426.64752197265625, "r": 547.23969, "b": 520.862060546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9870705008506775, "cells": [{"id": 27, "text": "IBM actively participates in various open-source communities as part of steering boards ", "bbox": {"l": 136.79999, "t": 427.48761, "r": 526.17334, "b": 436.70059000000003, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "defining the roadmap of the community, and also in contributing code to make the community ", "bbox": {"l": 136.8, "t": 439.48743, "r": 547.23969, "b": 448.70041, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "a better place for everyone to participate. Red Hat also actively participates in various ", "bbox": {"l": 136.8, "t": 451.48724, "r": 517.25299, "b": 460.70023, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "open-source communities and makes extensive contributions. In open-source communities, ", "bbox": {"l": 136.8, "t": 463.48706, "r": 544.01959, "b": 472.70004, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "although most open-source development happens on x86 / amd64 or the Intel architecture, ", "bbox": {"l": 136.8, "t": 475.48688, "r": 541.23773, "b": 484.69986, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "the same open-source software is used by other architectures, such as IBM Power (ppc64le), ", "bbox": {"l": 136.8, "t": 487.54645, "r": 547.14795, "b": 496.75943, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "IBM Z and IBM LInuxONE (s390x), ARM, and Sparc. So, the availability of an open-source ", "bbox": {"l": 136.8, "t": 499.54626, "r": 539.51367, "b": 508.75925, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "ecosystem on any architecture is key and critical to business.", "bbox": {"l": 136.79901, "t": 511.54608, "r": 407.2449, "b": 520.75906, "coord_origin": "TOPLEFT"}}]}, "text": "IBM actively participates in various open-source communities as part of steering boards defining the roadmap of the community, and also in contributing code to make the community a better place for everyone to participate. Red Hat also actively participates in various open-source communities and makes extensive contributions. In open-source communities, although most open-source development happens on x86 / amd64 or the Intel architecture, the same open-source software is used by other architectures, such as IBM Power (ppc64le), IBM Z and IBM LInuxONE (s390x), ARM, and Sparc. So, the availability of an open-source ecosystem on any architecture is key and critical to business."}, {"label": "text", "id": 13, "page_no": 10, "cluster": {"id": 13, "label": "text", "bbox": {"l": 135.98208618164062, "t": 532.6904296875, "r": 537.35345, "b": 578.9651489257812, "coord_origin": "TOPLEFT"}, "confidence": 0.9855135083198547, "cells": [{"id": 35, "text": "On IBM Z and IBM LinuxONE (s390x) architecture, there is a huge open-source support ", "bbox": {"l": 136.79901, "t": 533.50589, "r": 527.90936, "b": 542.71889, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "ecosystem that ranges from operating systems such as Linux; application run times; cloud ", "bbox": {"l": 136.79901, "t": 545.50569, "r": 537.35345, "b": 554.71869, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "and container services; DevOps and automation; big data; observability; analytics; ", "bbox": {"l": 136.79901, "t": 557.50549, "r": 502.30115, "b": 566.71849, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "databases; and storage. The ecosystem on IBM Z and IBM LinuxONE is growing.", "bbox": {"l": 136.79803, "t": 569.5052900000001, "r": 496.86108, "b": 578.71829, "coord_origin": "TOPLEFT"}}]}, "text": "On IBM Z and IBM LinuxONE (s390x) architecture, there is a huge open-source support ecosystem that ranges from operating systems such as Linux; application run times; cloud and container services; DevOps and automation; big data; observability; analytics; databases; and storage. The ecosystem on IBM Z and IBM LinuxONE is growing."}, {"label": "text", "id": 14, "page_no": 10, "cluster": {"id": 14, "label": "text", "bbox": {"l": 136.20474243164062, "t": 590.5270385742188, "r": 540.76263, "b": 624.9845581054688, "coord_origin": "TOPLEFT"}, "confidence": 0.9835407137870789, "cells": [{"id": 39, "text": "IBM Z and IBM LinuxONE include much open-source software in their ecosystem. You can ", "bbox": {"l": 136.79803, "t": 591.52486, "r": 540.76263, "b": 600.73785, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "see the growing list of open-source software for IBM Z and LinuxONE at The Growing ", "bbox": {"l": 136.79803, "t": 603.52466, "r": 517.90955, "b": 612.73766, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Ecosystem of Open-Source Software for IBM Z and LinuxONE.", "bbox": {"l": 136.79803, "t": 615.52446, "r": 415.62726, "b": 624.73746, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Z and IBM LinuxONE include much open-source software in their ecosystem. You can see the growing list of open-source software for IBM Z and LinuxONE at The Growing Ecosystem of Open-Source Software for IBM Z and LinuxONE."}, {"label": "text", "id": 15, "page_no": 10, "cluster": {"id": 15, "label": "text", "bbox": {"l": 136.00357055664062, "t": 636.6727294921875, "r": 544.60699, "b": 683.03759765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9842023849487305, "cells": [{"id": 42, "text": "IBM Z and IBM LinuxONE are available to various communities to include support for s390x ", "bbox": {"l": 136.79803, "t": 637.54402, "r": 544.60699, "b": 646.75702, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "builds as part of their community\u2019s continuous integration and continuous delivery (CI/CD). ", "bbox": {"l": 136.79803, "t": 649.54382, "r": 538.40308, "b": 658.7568200000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Also, for open-source community developers, infrastructure resources are available on a ", "bbox": {"l": 136.79802, "t": 661.54362, "r": 529.5954, "b": 670.75663, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "no-charge basis through the IBM LinuxONE community cloud. ", "bbox": {"l": 136.79802, "t": 673.54343, "r": 413.47775, "b": 682.75644, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Z and IBM LinuxONE are available to various communities to include support for s390x builds as part of their community\u2019s continuous integration and continuous delivery (CI/CD). Also, for open-source community developers, infrastructure resources are available on a no-charge basis through the IBM LinuxONE community cloud."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 10, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 540.9940795898438, "t": 754.3685302734375, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8976032733917236, "cells": [{"id": 0, "text": "9", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "9"}]}}, {"page_no": 11, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "10 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "CP4D includes a mix of open-source and proprietary data and AI runtime databases; ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 513.53369, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "open-source run times like Python; open-source data platforms like Anaconda; ML and DL ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 537.95197, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "frameworks like Pytorch and Tensorflow; and thousands of reusable Python packages. All of ", "bbox": {"l": 136.79999, "t": 95.50829999999996, "r": 547.31226, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "them are available and supported on s390x architecture to provide seamless parity with x86 ", "bbox": {"l": 136.79999, "t": 107.50811999999996, "r": 544.53857, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "architecture and a seamless experience for enterprise data scientists, architects, and data ", "bbox": {"l": 136.79999, "t": 119.50792999999999, "r": 536.82458, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "and AI solution developers on IBM Z and IBM LinuxONE platforms.", "bbox": {"l": 136.79999, "t": 131.50775, "r": 432.89679, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Anaconda is one of the open-source data platforms that provide Python and R based data ", "bbox": {"l": 136.79999, "t": 153.52733999999998, "r": 536.9231, "b": 162.74036, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "science ML frameworks; analytics and data visualization tools; and open-source data science ", "bbox": {"l": 136.79999, "t": 165.52715999999998, "r": 547.35016, "b": 174.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "tools and libraries like Conda, XGBoost, and SciKit-Learn. Anaconda runs natively on Linux ", "bbox": {"l": 136.79999, "t": 177.52697999999998, "r": 542.97577, "b": 186.73999000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "on IBM Z and IBM LinuxONE, and on IBM z/OS Container Extensions (zcX) on z/OS. For ", "bbox": {"l": 136.79999, "t": 189.52679, "r": 533.46613, "b": 198.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "more information, see Announcing Anaconda for Linux on IBM Z and LinuxONE.", "bbox": {"l": 136.8, "t": 201.52661, "r": 491.7684300000001, "b": 210.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "In addition to strong, open-source ecosystem support for application development on Linux ", "bbox": {"l": 136.79901, "t": 223.48639000000003, "r": 540.69092, "b": 232.69939999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "and enterprise operating systems, a new generation of IBM Z and IBM LinuxONE servers ", "bbox": {"l": 136.79901, "t": 235.48621000000003, "r": 534.01886, "b": 244.69921999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "(IBM z16\u2122) also have strong platform support, and AI acceleration capabilities that can be ", "bbox": {"l": 136.79901, "t": 247.48602000000005, "r": 539.51672, "b": 256.69903999999997, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "leveraged by open-source software to perform better on the server infrastructure. For ", "bbox": {"l": 136.80002, "t": 259.48584000000005, "r": 515.11157, "b": 268.69885, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "example, the recently released CP4D 4.6 has Tensorflow and IBM SnapML frameworks that ", "bbox": {"l": 136.80002, "t": 271.48566000000005, "r": 546.23071, "b": 280.69867, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "leverage the AI accelerators when running on an IBM z16 server.", "bbox": {"l": 136.80003, "t": 283.4855, "r": 424.7088, "b": 292.69849, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "So, to summarize, there is a huge, growing data and AI open source ecosystem that is ", "bbox": {"l": 136.80003, "t": 305.50507, "r": 521.34369, "b": 314.71804999999995, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "supported and optimized on IBM Z and IBM LinuxONE servers.", "bbox": {"l": 136.80003, "t": 317.50488000000007, "r": 416.28656, "b": 326.71786, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Why AI on IBM Z", "bbox": {"l": 64.800003, "t": 355.20071, "r": 191.0069, "b": 369.96371000000005, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Data and AI playing a major role in the modernization story to enable the digital ", "bbox": {"l": 136.8, "t": 387.52872, "r": 489.0134, "b": 396.7417, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "transformation journey of every organization. Many organizations recognize the business ", "bbox": {"l": 136.8, "t": 399.52853, "r": 531.73199, "b": 408.74152, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "value of infusing AI into their infrastructure. CP4D provides the cloud-native solution to put ", "bbox": {"l": 136.8, "t": 411.52835, "r": 537.43396, "b": 420.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "your data to work. With CP4D, all your data users can collaborate from a single, unified ", "bbox": {"l": 136.8, "t": 423.52817, "r": 524.1084, "b": 432.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "interface that supports many services that work together, including collecting data, organizing ", "bbox": {"l": 136.8, "t": 435.52798, "r": 547.25861, "b": 444.74097, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "the data, analyzing the data, and infusing AI.", "bbox": {"l": 136.8, "t": 447.5278, "r": 334.1156, "b": 456.7407799999999, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Traditional ML models\u2019 power most of today\u2019s ML applications in business and among AI ", "bbox": {"l": 136.8, "t": 469.48761, "r": 529.47882, "b": 478.70059, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "practitioners. CP4D supports traditional ML frameworks for training and inferencing, such as ", "bbox": {"l": 136.8, "t": 481.48743, "r": 545.62219, "b": 490.70041, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Scikit-learn, Snap ML, and XGBoost. Snap ML is a library that provides high-speed training ", "bbox": {"l": 136.80002, "t": 493.547, "r": 541.26062, "b": 502.75998, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "and inferencing of ML models that leverage the AI accelerator while running on an IBM z16 ", "bbox": {"l": 136.80002, "t": 505.54681, "r": 541.28766, "b": 514.7598, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "(Linux on IBM Z). CP4D supports DL frameworks such as TensorFlow and PyTorch. ", "bbox": {"l": 136.80002, "t": 517.54663, "r": 511.26416, "b": 526.7596100000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "TensorFlow is a DL framework that leverages the AI accelerator while running on an IBM z16 ", "bbox": {"l": 136.80002, "t": 529.54642, "r": 547.28253, "b": 538.7594300000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "(Linux on IBM Z).", "bbox": {"l": 136.80002, "t": 541.54623, "r": 213.4173, "b": 550.75923, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Figure 7 on page 11 provides an overview of the components that are supported on ", "bbox": {"l": 136.80002, "t": 563.50604, "r": 508.50827000000004, "b": 572.7190400000001, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "CP4D on IBM Z. You can leverage Watson Studio for model building, training, and validation, ", "bbox": {"l": 136.80002, "t": 575.50584, "r": 547.3233, "b": 584.71884, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "and WML for deployment of the model. Eventually, applications can use the AI inference ", "bbox": {"l": 136.80002, "t": 587.5056500000001, "r": 529.62152, "b": 596.71864, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "endpoint to score the model. ", "bbox": {"l": 136.80002, "t": 599.50545, "r": 265.69339, "b": 608.71844, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.45117950439453, "t": 754.43408203125, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9155402183532715, "cells": [{"id": 0, "text": "10 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.23697662353516, "t": 754.7630004882812, "r": 267.0744, "b": 764.1210327148438, "coord_origin": "TOPLEFT"}, "confidence": 0.9532065987586975, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 136.01052856445312, "t": 70.46507263183594, "r": 547.31226, "b": 140.8048095703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9860562086105347, "cells": [{"id": 2, "text": "CP4D includes a mix of open-source and proprietary data and AI runtime databases; ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 513.53369, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "open-source run times like Python; open-source data platforms like Anaconda; ML and DL ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 537.95197, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "frameworks like Pytorch and Tensorflow; and thousands of reusable Python packages. All of ", "bbox": {"l": 136.79999, "t": 95.50829999999996, "r": 547.31226, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "them are available and supported on s390x architecture to provide seamless parity with x86 ", "bbox": {"l": 136.79999, "t": 107.50811999999996, "r": 544.53857, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "architecture and a seamless experience for enterprise data scientists, architects, and data ", "bbox": {"l": 136.79999, "t": 119.50792999999999, "r": 536.82458, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "and AI solution developers on IBM Z and IBM LinuxONE platforms.", "bbox": {"l": 136.79999, "t": 131.50775, "r": 432.89679, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.78475952148438, "t": 152.72494506835938, "r": 547.35016, "b": 210.73961999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9879527688026428, "cells": [{"id": 8, "text": "Anaconda is one of the open-source data platforms that provide Python and R based data ", "bbox": {"l": 136.79999, "t": 153.52733999999998, "r": 536.9231, "b": 162.74036, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "science ML frameworks; analytics and data visualization tools; and open-source data science ", "bbox": {"l": 136.79999, "t": 165.52715999999998, "r": 547.35016, "b": 174.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "tools and libraries like Conda, XGBoost, and SciKit-Learn. Anaconda runs natively on Linux ", "bbox": {"l": 136.79999, "t": 177.52697999999998, "r": 542.97577, "b": 186.73999000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "on IBM Z and IBM LinuxONE, and on IBM z/OS Container Extensions (zcX) on z/OS. For ", "bbox": {"l": 136.79999, "t": 189.52679, "r": 533.46613, "b": 198.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "more information, see Announcing Anaconda for Linux on IBM Z and LinuxONE.", "bbox": {"l": 136.8, "t": 201.52661, "r": 491.7684300000001, "b": 210.73961999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.8437957763672, "t": 222.7408905029297, "r": 546.23071, "b": 292.7997741699219, "coord_origin": "TOPLEFT"}, "confidence": 0.988102376461029, "cells": [{"id": 13, "text": "In addition to strong, open-source ecosystem support for application development on Linux ", "bbox": {"l": 136.79901, "t": 223.48639000000003, "r": 540.69092, "b": 232.69939999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "and enterprise operating systems, a new generation of IBM Z and IBM LinuxONE servers ", "bbox": {"l": 136.79901, "t": 235.48621000000003, "r": 534.01886, "b": 244.69921999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "(IBM z16\u2122) also have strong platform support, and AI acceleration capabilities that can be ", "bbox": {"l": 136.79901, "t": 247.48602000000005, "r": 539.51672, "b": 256.69903999999997, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "leveraged by open-source software to perform better on the server infrastructure. For ", "bbox": {"l": 136.80002, "t": 259.48584000000005, "r": 515.11157, "b": 268.69885, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "example, the recently released CP4D 4.6 has Tensorflow and IBM SnapML frameworks that ", "bbox": {"l": 136.80002, "t": 271.48566000000005, "r": 546.23071, "b": 280.69867, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "leverage the AI accelerators when running on an IBM z16 server.", "bbox": {"l": 136.80003, "t": 283.4855, "r": 424.7088, "b": 292.69849, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.206298828125, "t": 304.8152160644531, "r": 521.34369, "b": 327.1700744628906, "coord_origin": "TOPLEFT"}, "confidence": 0.9795346260070801, "cells": [{"id": 19, "text": "So, to summarize, there is a huge, growing data and AI open source ecosystem that is ", "bbox": {"l": 136.80003, "t": 305.50507, "r": 521.34369, "b": 314.71804999999995, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "supported and optimized on IBM Z and IBM LinuxONE servers.", "bbox": {"l": 136.80003, "t": 317.50488000000007, "r": 416.28656, "b": 326.71786, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "section_header", "bbox": {"l": 64.09524536132812, "t": 354.2298889160156, "r": 191.27430725097656, "b": 370.04730224609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9598572254180908, "cells": [{"id": 21, "text": "Why AI on IBM Z", "bbox": {"l": 64.800003, "t": 355.20071, "r": 191.0069, "b": 369.96371000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 135.68882751464844, "t": 386.67742919921875, "r": 547.25861, "b": 457.1266174316406, "coord_origin": "TOPLEFT"}, "confidence": 0.9882671236991882, "cells": [{"id": 22, "text": "Data and AI playing a major role in the modernization story to enable the digital ", "bbox": {"l": 136.8, "t": 387.52872, "r": 489.0134, "b": 396.7417, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "transformation journey of every organization. Many organizations recognize the business ", "bbox": {"l": 136.8, "t": 399.52853, "r": 531.73199, "b": 408.74152, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "value of infusing AI into their infrastructure. CP4D provides the cloud-native solution to put ", "bbox": {"l": 136.8, "t": 411.52835, "r": 537.43396, "b": 420.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "your data to work. With CP4D, all your data users can collaborate from a single, unified ", "bbox": {"l": 136.8, "t": 423.52817, "r": 524.1084, "b": 432.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "interface that supports many services that work together, including collecting data, organizing ", "bbox": {"l": 136.8, "t": 435.52798, "r": 547.25861, "b": 444.74097, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "the data, analyzing the data, and infusing AI.", "bbox": {"l": 136.8, "t": 447.5278, "r": 334.1156, "b": 456.7407799999999, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 135.5255584716797, "t": 468.73712158203125, "r": 547.28253, "b": 551.2116088867188, "coord_origin": "TOPLEFT"}, "confidence": 0.9885222911834717, "cells": [{"id": 28, "text": "Traditional ML models\u2019 power most of today\u2019s ML applications in business and among AI ", "bbox": {"l": 136.8, "t": 469.48761, "r": 529.47882, "b": 478.70059, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "practitioners. CP4D supports traditional ML frameworks for training and inferencing, such as ", "bbox": {"l": 136.8, "t": 481.48743, "r": 545.62219, "b": 490.70041, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Scikit-learn, Snap ML, and XGBoost. Snap ML is a library that provides high-speed training ", "bbox": {"l": 136.80002, "t": 493.547, "r": 541.26062, "b": 502.75998, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "and inferencing of ML models that leverage the AI accelerator while running on an IBM z16 ", "bbox": {"l": 136.80002, "t": 505.54681, "r": 541.28766, "b": 514.7598, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "(Linux on IBM Z). CP4D supports DL frameworks such as TensorFlow and PyTorch. ", "bbox": {"l": 136.80002, "t": 517.54663, "r": 511.26416, "b": 526.7596100000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "TensorFlow is a DL framework that leverages the AI accelerator while running on an IBM z16 ", "bbox": {"l": 136.80002, "t": 529.54642, "r": 547.28253, "b": 538.7594300000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "(Linux on IBM Z).", "bbox": {"l": 136.80002, "t": 541.54623, "r": 213.4173, "b": 550.75923, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 136.04042053222656, "t": 562.6182861328125, "r": 547.3233, "b": 608.7926635742188, "coord_origin": "TOPLEFT"}, "confidence": 0.9859467148780823, "cells": [{"id": 35, "text": "Figure 7 on page 11 provides an overview of the components that are supported on ", "bbox": {"l": 136.80002, "t": 563.50604, "r": 508.50827000000004, "b": 572.7190400000001, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "CP4D on IBM Z. You can leverage Watson Studio for model building, training, and validation, ", "bbox": {"l": 136.80002, "t": 575.50584, "r": 547.3233, "b": 584.71884, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "and WML for deployment of the model. Eventually, applications can use the AI inference ", "bbox": {"l": 136.80002, "t": 587.5056500000001, "r": 529.62152, "b": 596.71864, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "endpoint to score the model. ", "bbox": {"l": 136.80002, "t": 599.50545, "r": 265.69339, "b": 608.71844, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 11, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.45117950439453, "t": 754.43408203125, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9155402183532715, "cells": [{"id": 0, "text": "10 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "10"}, {"label": "page_footer", "id": 1, "page_no": 11, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.23697662353516, "t": 754.7630004882812, "r": 267.0744, "b": 764.1210327148438, "coord_origin": "TOPLEFT"}, "confidence": 0.9532065987586975, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"label": "text", "id": 2, "page_no": 11, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.01052856445312, "t": 70.46507263183594, "r": 547.31226, "b": 140.8048095703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9860562086105347, "cells": [{"id": 2, "text": "CP4D includes a mix of open-source and proprietary data and AI runtime databases; ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 513.53369, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "open-source run times like Python; open-source data platforms like Anaconda; ML and DL ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 537.95197, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "frameworks like Pytorch and Tensorflow; and thousands of reusable Python packages. All of ", "bbox": {"l": 136.79999, "t": 95.50829999999996, "r": 547.31226, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "them are available and supported on s390x architecture to provide seamless parity with x86 ", "bbox": {"l": 136.79999, "t": 107.50811999999996, "r": 544.53857, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "architecture and a seamless experience for enterprise data scientists, architects, and data ", "bbox": {"l": 136.79999, "t": 119.50792999999999, "r": 536.82458, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "and AI solution developers on IBM Z and IBM LinuxONE platforms.", "bbox": {"l": 136.79999, "t": 131.50775, "r": 432.89679, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}]}, "text": "CP4D includes a mix of open-source and proprietary data and AI runtime databases; open-source run times like Python; open-source data platforms like Anaconda; ML and DL frameworks like Pytorch and Tensorflow; and thousands of reusable Python packages. All of them are available and supported on s390x architecture to provide seamless parity with x86 architecture and a seamless experience for enterprise data scientists, architects, and data and AI solution developers on IBM Z and IBM LinuxONE platforms."}, {"label": "text", "id": 3, "page_no": 11, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.78475952148438, "t": 152.72494506835938, "r": 547.35016, "b": 210.73961999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9879527688026428, "cells": [{"id": 8, "text": "Anaconda is one of the open-source data platforms that provide Python and R based data ", "bbox": {"l": 136.79999, "t": 153.52733999999998, "r": 536.9231, "b": 162.74036, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "science ML frameworks; analytics and data visualization tools; and open-source data science ", "bbox": {"l": 136.79999, "t": 165.52715999999998, "r": 547.35016, "b": 174.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "tools and libraries like Conda, XGBoost, and SciKit-Learn. Anaconda runs natively on Linux ", "bbox": {"l": 136.79999, "t": 177.52697999999998, "r": 542.97577, "b": 186.73999000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "on IBM Z and IBM LinuxONE, and on IBM z/OS Container Extensions (zcX) on z/OS. For ", "bbox": {"l": 136.79999, "t": 189.52679, "r": 533.46613, "b": 198.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "more information, see Announcing Anaconda for Linux on IBM Z and LinuxONE.", "bbox": {"l": 136.8, "t": 201.52661, "r": 491.7684300000001, "b": 210.73961999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Anaconda is one of the open-source data platforms that provide Python and R based data science ML frameworks; analytics and data visualization tools; and open-source data science tools and libraries like Conda, XGBoost, and SciKit-Learn. Anaconda runs natively on Linux on IBM Z and IBM LinuxONE, and on IBM z/OS Container Extensions (zcX) on z/OS. For more information, see Announcing Anaconda for Linux on IBM Z and LinuxONE."}, {"label": "text", "id": 4, "page_no": 11, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.8437957763672, "t": 222.7408905029297, "r": 546.23071, "b": 292.7997741699219, "coord_origin": "TOPLEFT"}, "confidence": 0.988102376461029, "cells": [{"id": 13, "text": "In addition to strong, open-source ecosystem support for application development on Linux ", "bbox": {"l": 136.79901, "t": 223.48639000000003, "r": 540.69092, "b": 232.69939999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "and enterprise operating systems, a new generation of IBM Z and IBM LinuxONE servers ", "bbox": {"l": 136.79901, "t": 235.48621000000003, "r": 534.01886, "b": 244.69921999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "(IBM z16\u2122) also have strong platform support, and AI acceleration capabilities that can be ", "bbox": {"l": 136.79901, "t": 247.48602000000005, "r": 539.51672, "b": 256.69903999999997, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "leveraged by open-source software to perform better on the server infrastructure. For ", "bbox": {"l": 136.80002, "t": 259.48584000000005, "r": 515.11157, "b": 268.69885, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "example, the recently released CP4D 4.6 has Tensorflow and IBM SnapML frameworks that ", "bbox": {"l": 136.80002, "t": 271.48566000000005, "r": 546.23071, "b": 280.69867, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "leverage the AI accelerators when running on an IBM z16 server.", "bbox": {"l": 136.80003, "t": 283.4855, "r": 424.7088, "b": 292.69849, "coord_origin": "TOPLEFT"}}]}, "text": "In addition to strong, open-source ecosystem support for application development on Linux and enterprise operating systems, a new generation of IBM Z and IBM LinuxONE servers (IBM z16\u2122) also have strong platform support, and AI acceleration capabilities that can be leveraged by open-source software to perform better on the server infrastructure. For example, the recently released CP4D 4.6 has Tensorflow and IBM SnapML frameworks that leverage the AI accelerators when running on an IBM z16 server."}, {"label": "text", "id": 5, "page_no": 11, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.206298828125, "t": 304.8152160644531, "r": 521.34369, "b": 327.1700744628906, "coord_origin": "TOPLEFT"}, "confidence": 0.9795346260070801, "cells": [{"id": 19, "text": "So, to summarize, there is a huge, growing data and AI open source ecosystem that is ", "bbox": {"l": 136.80003, "t": 305.50507, "r": 521.34369, "b": 314.71804999999995, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "supported and optimized on IBM Z and IBM LinuxONE servers.", "bbox": {"l": 136.80003, "t": 317.50488000000007, "r": 416.28656, "b": 326.71786, "coord_origin": "TOPLEFT"}}]}, "text": "So, to summarize, there is a huge, growing data and AI open source ecosystem that is supported and optimized on IBM Z and IBM LinuxONE servers."}, {"label": "section_header", "id": 6, "page_no": 11, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 64.09524536132812, "t": 354.2298889160156, "r": 191.27430725097656, "b": 370.04730224609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9598572254180908, "cells": [{"id": 21, "text": "Why AI on IBM Z", "bbox": {"l": 64.800003, "t": 355.20071, "r": 191.0069, "b": 369.96371000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Why AI on IBM Z"}, {"label": "text", "id": 7, "page_no": 11, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.68882751464844, "t": 386.67742919921875, "r": 547.25861, "b": 457.1266174316406, "coord_origin": "TOPLEFT"}, "confidence": 0.9882671236991882, "cells": [{"id": 22, "text": "Data and AI playing a major role in the modernization story to enable the digital ", "bbox": {"l": 136.8, "t": 387.52872, "r": 489.0134, "b": 396.7417, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "transformation journey of every organization. Many organizations recognize the business ", "bbox": {"l": 136.8, "t": 399.52853, "r": 531.73199, "b": 408.74152, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "value of infusing AI into their infrastructure. CP4D provides the cloud-native solution to put ", "bbox": {"l": 136.8, "t": 411.52835, "r": 537.43396, "b": 420.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "your data to work. With CP4D, all your data users can collaborate from a single, unified ", "bbox": {"l": 136.8, "t": 423.52817, "r": 524.1084, "b": 432.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "interface that supports many services that work together, including collecting data, organizing ", "bbox": {"l": 136.8, "t": 435.52798, "r": 547.25861, "b": 444.74097, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "the data, analyzing the data, and infusing AI.", "bbox": {"l": 136.8, "t": 447.5278, "r": 334.1156, "b": 456.7407799999999, "coord_origin": "TOPLEFT"}}]}, "text": "Data and AI playing a major role in the modernization story to enable the digital transformation journey of every organization. Many organizations recognize the business value of infusing AI into their infrastructure. CP4D provides the cloud-native solution to put your data to work. With CP4D, all your data users can collaborate from a single, unified interface that supports many services that work together, including collecting data, organizing the data, analyzing the data, and infusing AI."}, {"label": "text", "id": 8, "page_no": 11, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.5255584716797, "t": 468.73712158203125, "r": 547.28253, "b": 551.2116088867188, "coord_origin": "TOPLEFT"}, "confidence": 0.9885222911834717, "cells": [{"id": 28, "text": "Traditional ML models\u2019 power most of today\u2019s ML applications in business and among AI ", "bbox": {"l": 136.8, "t": 469.48761, "r": 529.47882, "b": 478.70059, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "practitioners. CP4D supports traditional ML frameworks for training and inferencing, such as ", "bbox": {"l": 136.8, "t": 481.48743, "r": 545.62219, "b": 490.70041, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Scikit-learn, Snap ML, and XGBoost. Snap ML is a library that provides high-speed training ", "bbox": {"l": 136.80002, "t": 493.547, "r": 541.26062, "b": 502.75998, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "and inferencing of ML models that leverage the AI accelerator while running on an IBM z16 ", "bbox": {"l": 136.80002, "t": 505.54681, "r": 541.28766, "b": 514.7598, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "(Linux on IBM Z). CP4D supports DL frameworks such as TensorFlow and PyTorch. ", "bbox": {"l": 136.80002, "t": 517.54663, "r": 511.26416, "b": 526.7596100000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "TensorFlow is a DL framework that leverages the AI accelerator while running on an IBM z16 ", "bbox": {"l": 136.80002, "t": 529.54642, "r": 547.28253, "b": 538.7594300000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "(Linux on IBM Z).", "bbox": {"l": 136.80002, "t": 541.54623, "r": 213.4173, "b": 550.75923, "coord_origin": "TOPLEFT"}}]}, "text": "Traditional ML models\u2019 power most of today\u2019s ML applications in business and among AI practitioners. CP4D supports traditional ML frameworks for training and inferencing, such as Scikit-learn, Snap ML, and XGBoost. Snap ML is a library that provides high-speed training and inferencing of ML models that leverage the AI accelerator while running on an IBM z16 (Linux on IBM Z). CP4D supports DL frameworks such as TensorFlow and PyTorch. TensorFlow is a DL framework that leverages the AI accelerator while running on an IBM z16 (Linux on IBM Z)."}, {"label": "text", "id": 9, "page_no": 11, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.04042053222656, "t": 562.6182861328125, "r": 547.3233, "b": 608.7926635742188, "coord_origin": "TOPLEFT"}, "confidence": 0.9859467148780823, "cells": [{"id": 35, "text": "Figure 7 on page 11 provides an overview of the components that are supported on ", "bbox": {"l": 136.80002, "t": 563.50604, "r": 508.50827000000004, "b": 572.7190400000001, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "CP4D on IBM Z. You can leverage Watson Studio for model building, training, and validation, ", "bbox": {"l": 136.80002, "t": 575.50584, "r": 547.3233, "b": 584.71884, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "and WML for deployment of the model. Eventually, applications can use the AI inference ", "bbox": {"l": 136.80002, "t": 587.5056500000001, "r": 529.62152, "b": 596.71864, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "endpoint to score the model. ", "bbox": {"l": 136.80002, "t": 599.50545, "r": 265.69339, "b": 608.71844, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 7 on page 11 provides an overview of the components that are supported on CP4D on IBM Z. You can leverage Watson Studio for model building, training, and validation, and WML for deployment of the model. Eventually, applications can use the AI inference endpoint to score the model."}], "body": [{"label": "text", "id": 2, "page_no": 11, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.01052856445312, "t": 70.46507263183594, "r": 547.31226, "b": 140.8048095703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9860562086105347, "cells": [{"id": 2, "text": "CP4D includes a mix of open-source and proprietary data and AI runtime databases; ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 513.53369, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "open-source run times like Python; open-source data platforms like Anaconda; ML and DL ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 537.95197, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "frameworks like Pytorch and Tensorflow; and thousands of reusable Python packages. All of ", "bbox": {"l": 136.79999, "t": 95.50829999999996, "r": 547.31226, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "them are available and supported on s390x architecture to provide seamless parity with x86 ", "bbox": {"l": 136.79999, "t": 107.50811999999996, "r": 544.53857, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "architecture and a seamless experience for enterprise data scientists, architects, and data ", "bbox": {"l": 136.79999, "t": 119.50792999999999, "r": 536.82458, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "and AI solution developers on IBM Z and IBM LinuxONE platforms.", "bbox": {"l": 136.79999, "t": 131.50775, "r": 432.89679, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}]}, "text": "CP4D includes a mix of open-source and proprietary data and AI runtime databases; open-source run times like Python; open-source data platforms like Anaconda; ML and DL frameworks like Pytorch and Tensorflow; and thousands of reusable Python packages. All of them are available and supported on s390x architecture to provide seamless parity with x86 architecture and a seamless experience for enterprise data scientists, architects, and data and AI solution developers on IBM Z and IBM LinuxONE platforms."}, {"label": "text", "id": 3, "page_no": 11, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.78475952148438, "t": 152.72494506835938, "r": 547.35016, "b": 210.73961999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9879527688026428, "cells": [{"id": 8, "text": "Anaconda is one of the open-source data platforms that provide Python and R based data ", "bbox": {"l": 136.79999, "t": 153.52733999999998, "r": 536.9231, "b": 162.74036, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "science ML frameworks; analytics and data visualization tools; and open-source data science ", "bbox": {"l": 136.79999, "t": 165.52715999999998, "r": 547.35016, "b": 174.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "tools and libraries like Conda, XGBoost, and SciKit-Learn. Anaconda runs natively on Linux ", "bbox": {"l": 136.79999, "t": 177.52697999999998, "r": 542.97577, "b": 186.73999000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "on IBM Z and IBM LinuxONE, and on IBM z/OS Container Extensions (zcX) on z/OS. For ", "bbox": {"l": 136.79999, "t": 189.52679, "r": 533.46613, "b": 198.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "more information, see Announcing Anaconda for Linux on IBM Z and LinuxONE.", "bbox": {"l": 136.8, "t": 201.52661, "r": 491.7684300000001, "b": 210.73961999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Anaconda is one of the open-source data platforms that provide Python and R based data science ML frameworks; analytics and data visualization tools; and open-source data science tools and libraries like Conda, XGBoost, and SciKit-Learn. Anaconda runs natively on Linux on IBM Z and IBM LinuxONE, and on IBM z/OS Container Extensions (zcX) on z/OS. For more information, see Announcing Anaconda for Linux on IBM Z and LinuxONE."}, {"label": "text", "id": 4, "page_no": 11, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.8437957763672, "t": 222.7408905029297, "r": 546.23071, "b": 292.7997741699219, "coord_origin": "TOPLEFT"}, "confidence": 0.988102376461029, "cells": [{"id": 13, "text": "In addition to strong, open-source ecosystem support for application development on Linux ", "bbox": {"l": 136.79901, "t": 223.48639000000003, "r": 540.69092, "b": 232.69939999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "and enterprise operating systems, a new generation of IBM Z and IBM LinuxONE servers ", "bbox": {"l": 136.79901, "t": 235.48621000000003, "r": 534.01886, "b": 244.69921999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "(IBM z16\u2122) also have strong platform support, and AI acceleration capabilities that can be ", "bbox": {"l": 136.79901, "t": 247.48602000000005, "r": 539.51672, "b": 256.69903999999997, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "leveraged by open-source software to perform better on the server infrastructure. For ", "bbox": {"l": 136.80002, "t": 259.48584000000005, "r": 515.11157, "b": 268.69885, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "example, the recently released CP4D 4.6 has Tensorflow and IBM SnapML frameworks that ", "bbox": {"l": 136.80002, "t": 271.48566000000005, "r": 546.23071, "b": 280.69867, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "leverage the AI accelerators when running on an IBM z16 server.", "bbox": {"l": 136.80003, "t": 283.4855, "r": 424.7088, "b": 292.69849, "coord_origin": "TOPLEFT"}}]}, "text": "In addition to strong, open-source ecosystem support for application development on Linux and enterprise operating systems, a new generation of IBM Z and IBM LinuxONE servers (IBM z16\u2122) also have strong platform support, and AI acceleration capabilities that can be leveraged by open-source software to perform better on the server infrastructure. For example, the recently released CP4D 4.6 has Tensorflow and IBM SnapML frameworks that leverage the AI accelerators when running on an IBM z16 server."}, {"label": "text", "id": 5, "page_no": 11, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.206298828125, "t": 304.8152160644531, "r": 521.34369, "b": 327.1700744628906, "coord_origin": "TOPLEFT"}, "confidence": 0.9795346260070801, "cells": [{"id": 19, "text": "So, to summarize, there is a huge, growing data and AI open source ecosystem that is ", "bbox": {"l": 136.80003, "t": 305.50507, "r": 521.34369, "b": 314.71804999999995, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "supported and optimized on IBM Z and IBM LinuxONE servers.", "bbox": {"l": 136.80003, "t": 317.50488000000007, "r": 416.28656, "b": 326.71786, "coord_origin": "TOPLEFT"}}]}, "text": "So, to summarize, there is a huge, growing data and AI open source ecosystem that is supported and optimized on IBM Z and IBM LinuxONE servers."}, {"label": "section_header", "id": 6, "page_no": 11, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 64.09524536132812, "t": 354.2298889160156, "r": 191.27430725097656, "b": 370.04730224609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9598572254180908, "cells": [{"id": 21, "text": "Why AI on IBM Z", "bbox": {"l": 64.800003, "t": 355.20071, "r": 191.0069, "b": 369.96371000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Why AI on IBM Z"}, {"label": "text", "id": 7, "page_no": 11, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.68882751464844, "t": 386.67742919921875, "r": 547.25861, "b": 457.1266174316406, "coord_origin": "TOPLEFT"}, "confidence": 0.9882671236991882, "cells": [{"id": 22, "text": "Data and AI playing a major role in the modernization story to enable the digital ", "bbox": {"l": 136.8, "t": 387.52872, "r": 489.0134, "b": 396.7417, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "transformation journey of every organization. Many organizations recognize the business ", "bbox": {"l": 136.8, "t": 399.52853, "r": 531.73199, "b": 408.74152, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "value of infusing AI into their infrastructure. CP4D provides the cloud-native solution to put ", "bbox": {"l": 136.8, "t": 411.52835, "r": 537.43396, "b": 420.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "your data to work. With CP4D, all your data users can collaborate from a single, unified ", "bbox": {"l": 136.8, "t": 423.52817, "r": 524.1084, "b": 432.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "interface that supports many services that work together, including collecting data, organizing ", "bbox": {"l": 136.8, "t": 435.52798, "r": 547.25861, "b": 444.74097, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "the data, analyzing the data, and infusing AI.", "bbox": {"l": 136.8, "t": 447.5278, "r": 334.1156, "b": 456.7407799999999, "coord_origin": "TOPLEFT"}}]}, "text": "Data and AI playing a major role in the modernization story to enable the digital transformation journey of every organization. Many organizations recognize the business value of infusing AI into their infrastructure. CP4D provides the cloud-native solution to put your data to work. With CP4D, all your data users can collaborate from a single, unified interface that supports many services that work together, including collecting data, organizing the data, analyzing the data, and infusing AI."}, {"label": "text", "id": 8, "page_no": 11, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.5255584716797, "t": 468.73712158203125, "r": 547.28253, "b": 551.2116088867188, "coord_origin": "TOPLEFT"}, "confidence": 0.9885222911834717, "cells": [{"id": 28, "text": "Traditional ML models\u2019 power most of today\u2019s ML applications in business and among AI ", "bbox": {"l": 136.8, "t": 469.48761, "r": 529.47882, "b": 478.70059, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "practitioners. CP4D supports traditional ML frameworks for training and inferencing, such as ", "bbox": {"l": 136.8, "t": 481.48743, "r": 545.62219, "b": 490.70041, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Scikit-learn, Snap ML, and XGBoost. Snap ML is a library that provides high-speed training ", "bbox": {"l": 136.80002, "t": 493.547, "r": 541.26062, "b": 502.75998, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "and inferencing of ML models that leverage the AI accelerator while running on an IBM z16 ", "bbox": {"l": 136.80002, "t": 505.54681, "r": 541.28766, "b": 514.7598, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "(Linux on IBM Z). CP4D supports DL frameworks such as TensorFlow and PyTorch. ", "bbox": {"l": 136.80002, "t": 517.54663, "r": 511.26416, "b": 526.7596100000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "TensorFlow is a DL framework that leverages the AI accelerator while running on an IBM z16 ", "bbox": {"l": 136.80002, "t": 529.54642, "r": 547.28253, "b": 538.7594300000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "(Linux on IBM Z).", "bbox": {"l": 136.80002, "t": 541.54623, "r": 213.4173, "b": 550.75923, "coord_origin": "TOPLEFT"}}]}, "text": "Traditional ML models\u2019 power most of today\u2019s ML applications in business and among AI practitioners. CP4D supports traditional ML frameworks for training and inferencing, such as Scikit-learn, Snap ML, and XGBoost. Snap ML is a library that provides high-speed training and inferencing of ML models that leverage the AI accelerator while running on an IBM z16 (Linux on IBM Z). CP4D supports DL frameworks such as TensorFlow and PyTorch. TensorFlow is a DL framework that leverages the AI accelerator while running on an IBM z16 (Linux on IBM Z)."}, {"label": "text", "id": 9, "page_no": 11, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.04042053222656, "t": 562.6182861328125, "r": 547.3233, "b": 608.7926635742188, "coord_origin": "TOPLEFT"}, "confidence": 0.9859467148780823, "cells": [{"id": 35, "text": "Figure 7 on page 11 provides an overview of the components that are supported on ", "bbox": {"l": 136.80002, "t": 563.50604, "r": 508.50827000000004, "b": 572.7190400000001, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "CP4D on IBM Z. You can leverage Watson Studio for model building, training, and validation, ", "bbox": {"l": 136.80002, "t": 575.50584, "r": 547.3233, "b": 584.71884, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "and WML for deployment of the model. Eventually, applications can use the AI inference ", "bbox": {"l": 136.80002, "t": 587.5056500000001, "r": 529.62152, "b": 596.71864, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "endpoint to score the model. ", "bbox": {"l": 136.80002, "t": 599.50545, "r": 265.69339, "b": 608.71844, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 7 on page 11 provides an overview of the components that are supported on CP4D on IBM Z. You can leverage Watson Studio for model building, training, and validation, and WML for deployment of the model. Eventually, applications can use the AI inference endpoint to score the model."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 11, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.45117950439453, "t": 754.43408203125, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9155402183532715, "cells": [{"id": 0, "text": "10 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "10"}, {"label": "page_footer", "id": 1, "page_no": 11, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.23697662353516, "t": 754.7630004882812, "r": 267.0744, "b": 764.1210327148438, "coord_origin": "TOPLEFT"}, "confidence": 0.9532065987586975, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}]}}, {"page_no": 12, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "11", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Figure 7 Developing, training, and deploying an AI model on Cloud Pak for Data on IBM Z and IBM LinuxONE", "bbox": {"l": 64.800003, "t": 354.01801, "r": 505.42822, "b": 362.34302, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "In summary, here are some of the reasons why you should choose AI on IBM Z: ", "bbox": {"l": 136.8, "t": 376.00872999999996, "r": 492.94083, "b": 385.22171, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "GLYPH", "bbox": {"l": 136.8, "t": 393.13791, "r": 141.78, "b": 401.91269000000005, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "World-class AI inference platform for enterprise workloads: ", "bbox": {"l": 151.20016, "t": 392.98853, "r": 413.40018, "b": 402.20151, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "-", "bbox": {"l": 152.03979, "t": 410.02811, "r": 157.60942, "b": 419.24109, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Embedded accelerators: A centralized on-chip AI accelerator that is shared by all ", "bbox": {"l": 165.59933, "t": 410.02811, "r": 526.18811, "b": 419.24109, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "cores.", "bbox": {"l": 165.59933, "t": 422.02792, "r": 192.78615, "b": 431.24091, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "-", "bbox": {"l": 152.03979, "t": 439.00772, "r": 157.61043, "b": 448.2207, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Industry standard AI ecosystem: Many industry open-source data science frameworks ", "bbox": {"l": 165.59935, "t": 439.00772, "r": 547.24652, "b": 448.2207, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "are available on the platform.", "bbox": {"l": 165.59933, "t": 451.00754, "r": 294.55841, "b": 460.22052, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "-", "bbox": {"l": 152.03979, "t": 467.98734, "r": 157.60843, "b": 477.20032, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Seamlessly integrate AI into existing enterprise workload stacks: Train anywhere, and ", "bbox": {"l": 165.59933, "t": 467.98734, "r": 546.75769, "b": 477.20032, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "then deploy on IBM Z.", "bbox": {"l": 165.59933, "t": 479.98715, "r": 263.37762, "b": 489.20013, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "GLYPH", "bbox": {"l": 136.799, "t": 497.17612, "r": 141.77899, "b": 505.9509, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Security: Encrypted memory, and improved trusted execution environments. ", "bbox": {"l": 151.19916, "t": 497.02673, "r": 490.03317, "b": 506.23972, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "GLYPH", "bbox": {"l": 136.799, "t": 514.15591, "r": 141.77899, "b": 522.93069, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Sustainability: Reduce your energy consumption with real-time monitoring tools about the ", "bbox": {"l": 151.19916, "t": 514.00653, "r": 547.27051, "b": 523.21951, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "energy consumption of the system.", "bbox": {"l": 151.19916, "t": 526.00635, "r": 306.23645, "b": 535.21933, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "AI use cases", "bbox": {"l": 64.800003, "t": 563.70062, "r": 161.74744, "b": 578.46362, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "With billions of transactions per day in many of today\u2019s industries, it is key to get real-time ", "bbox": {"l": 136.8, "t": 596.02863, "r": 533.90125, "b": 605.24162, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "insights about what is happening in your data. AI on the IBM Z stack understands these ", "bbox": {"l": 136.79999, "t": 608.02843, "r": 525.72296, "b": 617.2414200000001, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "situations, and it delivers in-transaction inference in real time and at scale.", "bbox": {"l": 136.79999, "t": 620.02823, "r": 463.9240699999999, "b": 629.24123, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Core banking solutions running on IBM Z that are involved in processing inbound transactions ", "bbox": {"l": 136.79999, "t": 641.98804, "r": 547.24664, "b": 651.20103, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "need real-time fraud detection to prevent fraud. Other types of possible use cases might be ", "bbox": {"l": 136.79999, "t": 653.98784, "r": 541.79242, "b": 663.20084, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "credit risk analysis, anti-money laundering, loan approval, fraud detection in payments, and ", "bbox": {"l": 136.79999, "t": 665.98764, "r": 541.78253, "b": 675.20065, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "instant payments. ", "bbox": {"l": 136.79999, "t": 677.98745, "r": 217.88634, "b": 687.20045, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "For insurance companies, a pressing use case would be claims processing. For markets and ", "bbox": {"l": 136.79999, "t": 700.007019, "r": 547.31128, "b": 709.220024, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "trading, clearing and settlement use cases are paramount. ", "bbox": {"l": 136.79999, "t": 712.006828, "r": 397.38748, "b": 721.219833, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 535.8191528320312, "t": 754.3023071289062, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9041211009025574, "cells": [{"id": 0, "text": "11", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "caption", "bbox": {"l": 64.15190887451172, "t": 353.40753173828125, "r": 506.3805236816406, "b": 362.9499206542969, "coord_origin": "TOPLEFT"}, "confidence": 0.9419980049133301, "cells": [{"id": 1, "text": "Figure 7 Developing, training, and deploying an AI model on Cloud Pak for Data on IBM Z and IBM LinuxONE", "bbox": {"l": 64.800003, "t": 354.01801, "r": 505.42822, "b": 362.34302, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 136.55064392089844, "t": 375.4695739746094, "r": 492.94083, "b": 385.46099853515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9363874197006226, "cells": [{"id": 2, "text": "In summary, here are some of the reasons why you should choose AI on IBM Z: ", "bbox": {"l": 136.8, "t": 376.00872999999996, "r": 492.94083, "b": 385.22171, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "list_item", "bbox": {"l": 135.7388458251953, "t": 392.1660461425781, "r": 413.40018, "b": 402.2774658203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9464669823646545, "cells": [{"id": 3, "text": "GLYPH", "bbox": {"l": 136.8, "t": 393.13791, "r": 141.78, "b": 401.91269000000005, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "World-class AI inference platform for enterprise workloads: ", "bbox": {"l": 151.20016, "t": 392.98853, "r": 413.40018, "b": 402.20151, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 151.22914123535156, "t": 409.4760437011719, "r": 526.18811, "b": 431.24091, "coord_origin": "TOPLEFT"}, "confidence": 0.9700906872749329, "cells": [{"id": 5, "text": "-", "bbox": {"l": 152.03979, "t": 410.02811, "r": 157.60942, "b": 419.24109, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Embedded accelerators: A centralized on-chip AI accelerator that is shared by all ", "bbox": {"l": 165.59933, "t": 410.02811, "r": 526.18811, "b": 419.24109, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "cores.", "bbox": {"l": 165.59933, "t": 422.02792, "r": 192.78615, "b": 431.24091, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 151.42306518554688, "t": 438.09356689453125, "r": 547.24652, "b": 460.22052, "coord_origin": "TOPLEFT"}, "confidence": 0.9732586741447449, "cells": [{"id": 8, "text": "-", "bbox": {"l": 152.03979, "t": 439.00772, "r": 157.61043, "b": 448.2207, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Industry standard AI ecosystem: Many industry open-source data science frameworks ", "bbox": {"l": 165.59935, "t": 439.00772, "r": 547.24652, "b": 448.2207, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "are available on the platform.", "bbox": {"l": 165.59933, "t": 451.00754, "r": 294.55841, "b": 460.22052, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 151.33360290527344, "t": 467.51483154296875, "r": 546.75769, "b": 489.2516174316406, "coord_origin": "TOPLEFT"}, "confidence": 0.9748732447624207, "cells": [{"id": 11, "text": "-", "bbox": {"l": 152.03979, "t": 467.98734, "r": 157.60843, "b": 477.20032, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Seamlessly integrate AI into existing enterprise workload stacks: Train anywhere, and ", "bbox": {"l": 165.59933, "t": 467.98734, "r": 546.75769, "b": 477.20032, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "then deploy on IBM Z.", "bbox": {"l": 165.59933, "t": 479.98715, "r": 263.37762, "b": 489.20013, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.7086639404297, "t": 496.2107238769531, "r": 490.03317, "b": 506.39105224609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9550834894180298, "cells": [{"id": 14, "text": "GLYPH", "bbox": {"l": 136.799, "t": 497.17612, "r": 141.77899, "b": 505.9509, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Security: Encrypted memory, and improved trusted execution environments. ", "bbox": {"l": 151.19916, "t": 497.02673, "r": 490.03317, "b": 506.23972, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.6390838623047, "t": 513.5339965820312, "r": 547.27051, "b": 535.7632446289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9789533019065857, "cells": [{"id": 16, "text": "GLYPH", "bbox": {"l": 136.799, "t": 514.15591, "r": 141.77899, "b": 522.93069, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Sustainability: Reduce your energy consumption with real-time monitoring tools about the ", "bbox": {"l": 151.19916, "t": 514.00653, "r": 547.27051, "b": 523.21951, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "energy consumption of the system.", "bbox": {"l": 151.19916, "t": 526.00635, "r": 306.23645, "b": 535.21933, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "section_header", "bbox": {"l": 64.31088256835938, "t": 562.8890380859375, "r": 161.74744, "b": 578.46362, "coord_origin": "TOPLEFT"}, "confidence": 0.9544580578804016, "cells": [{"id": 19, "text": "AI use cases", "bbox": {"l": 64.800003, "t": 563.70062, "r": 161.74744, "b": 578.46362, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 135.98568725585938, "t": 595.26904296875, "r": 533.90125, "b": 629.24123, "coord_origin": "TOPLEFT"}, "confidence": 0.9852948188781738, "cells": [{"id": 20, "text": "With billions of transactions per day in many of today\u2019s industries, it is key to get real-time ", "bbox": {"l": 136.8, "t": 596.02863, "r": 533.90125, "b": 605.24162, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "insights about what is happening in your data. AI on the IBM Z stack understands these ", "bbox": {"l": 136.79999, "t": 608.02843, "r": 525.72296, "b": 617.2414200000001, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "situations, and it delivers in-transaction inference in real time and at scale.", "bbox": {"l": 136.79999, "t": 620.02823, "r": 463.9240699999999, "b": 629.24123, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 135.95875549316406, "t": 641.30712890625, "r": 547.24664, "b": 687.2891845703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9874392151832581, "cells": [{"id": 23, "text": "Core banking solutions running on IBM Z that are involved in processing inbound transactions ", "bbox": {"l": 136.79999, "t": 641.98804, "r": 547.24664, "b": 651.20103, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "need real-time fraud detection to prevent fraud. Other types of possible use cases might be ", "bbox": {"l": 136.79999, "t": 653.98784, "r": 541.79242, "b": 663.20084, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "credit risk analysis, anti-money laundering, loan approval, fraud detection in payments, and ", "bbox": {"l": 136.79999, "t": 665.98764, "r": 541.78253, "b": 675.20065, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "instant payments. ", "bbox": {"l": 136.79999, "t": 677.98745, "r": 217.88634, "b": 687.20045, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 136.34823608398438, "t": 699.2769165039062, "r": 547.31128, "b": 721.6598510742188, "coord_origin": "TOPLEFT"}, "confidence": 0.9817102551460266, "cells": [{"id": 27, "text": "For insurance companies, a pressing use case would be claims processing. For markets and ", "bbox": {"l": 136.79999, "t": 700.007019, "r": 547.31128, "b": 709.220024, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "trading, clearing and settlement use cases are paramount. ", "bbox": {"l": 136.79999, "t": 712.006828, "r": 397.38748, "b": 721.219833, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "picture", "bbox": {"l": 63.857383728027344, "t": 77.41220092773438, "r": 547.4847412109375, "b": 350.3799743652344, "coord_origin": "TOPLEFT"}, "confidence": 0.9851271510124207, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 12, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 535.8191528320312, "t": 754.3023071289062, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9041211009025574, "cells": [{"id": 0, "text": "11", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "11"}, {"label": "caption", "id": 1, "page_no": 12, "cluster": {"id": 1, "label": "caption", "bbox": {"l": 64.15190887451172, "t": 353.40753173828125, "r": 506.3805236816406, "b": 362.9499206542969, "coord_origin": "TOPLEFT"}, "confidence": 0.9419980049133301, "cells": [{"id": 1, "text": "Figure 7 Developing, training, and deploying an AI model on Cloud Pak for Data on IBM Z and IBM LinuxONE", "bbox": {"l": 64.800003, "t": 354.01801, "r": 505.42822, "b": 362.34302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 7 Developing, training, and deploying an AI model on Cloud Pak for Data on IBM Z and IBM LinuxONE"}, {"label": "text", "id": 2, "page_no": 12, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.55064392089844, "t": 375.4695739746094, "r": 492.94083, "b": 385.46099853515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9363874197006226, "cells": [{"id": 2, "text": "In summary, here are some of the reasons why you should choose AI on IBM Z: ", "bbox": {"l": 136.8, "t": 376.00872999999996, "r": 492.94083, "b": 385.22171, "coord_origin": "TOPLEFT"}}]}, "text": "In summary, here are some of the reasons why you should choose AI on IBM Z:"}, {"label": "list_item", "id": 3, "page_no": 12, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 135.7388458251953, "t": 392.1660461425781, "r": 413.40018, "b": 402.2774658203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9464669823646545, "cells": [{"id": 3, "text": "GLYPH", "bbox": {"l": 136.8, "t": 393.13791, "r": 141.78, "b": 401.91269000000005, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "World-class AI inference platform for enterprise workloads: ", "bbox": {"l": 151.20016, "t": 392.98853, "r": 413.40018, "b": 402.20151, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH World-class AI inference platform for enterprise workloads:"}, {"label": "list_item", "id": 4, "page_no": 12, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 151.22914123535156, "t": 409.4760437011719, "r": 526.18811, "b": 431.24091, "coord_origin": "TOPLEFT"}, "confidence": 0.9700906872749329, "cells": [{"id": 5, "text": "-", "bbox": {"l": 152.03979, "t": 410.02811, "r": 157.60942, "b": 419.24109, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Embedded accelerators: A centralized on-chip AI accelerator that is shared by all ", "bbox": {"l": 165.59933, "t": 410.02811, "r": 526.18811, "b": 419.24109, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "cores.", "bbox": {"l": 165.59933, "t": 422.02792, "r": 192.78615, "b": 431.24091, "coord_origin": "TOPLEFT"}}]}, "text": "-Embedded accelerators: A centralized on-chip AI accelerator that is shared by all cores."}, {"label": "list_item", "id": 5, "page_no": 12, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 151.42306518554688, "t": 438.09356689453125, "r": 547.24652, "b": 460.22052, "coord_origin": "TOPLEFT"}, "confidence": 0.9732586741447449, "cells": [{"id": 8, "text": "-", "bbox": {"l": 152.03979, "t": 439.00772, "r": 157.61043, "b": 448.2207, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Industry standard AI ecosystem: Many industry open-source data science frameworks ", "bbox": {"l": 165.59935, "t": 439.00772, "r": 547.24652, "b": 448.2207, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "are available on the platform.", "bbox": {"l": 165.59933, "t": 451.00754, "r": 294.55841, "b": 460.22052, "coord_origin": "TOPLEFT"}}]}, "text": "-Industry standard AI ecosystem: Many industry open-source data science frameworks are available on the platform."}, {"label": "list_item", "id": 6, "page_no": 12, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 151.33360290527344, "t": 467.51483154296875, "r": 546.75769, "b": 489.2516174316406, "coord_origin": "TOPLEFT"}, "confidence": 0.9748732447624207, "cells": [{"id": 11, "text": "-", "bbox": {"l": 152.03979, "t": 467.98734, "r": 157.60843, "b": 477.20032, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Seamlessly integrate AI into existing enterprise workload stacks: Train anywhere, and ", "bbox": {"l": 165.59933, "t": 467.98734, "r": 546.75769, "b": 477.20032, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "then deploy on IBM Z.", "bbox": {"l": 165.59933, "t": 479.98715, "r": 263.37762, "b": 489.20013, "coord_origin": "TOPLEFT"}}]}, "text": "-Seamlessly integrate AI into existing enterprise workload stacks: Train anywhere, and then deploy on IBM Z."}, {"label": "list_item", "id": 7, "page_no": 12, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.7086639404297, "t": 496.2107238769531, "r": 490.03317, "b": 506.39105224609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9550834894180298, "cells": [{"id": 14, "text": "GLYPH", "bbox": {"l": 136.799, "t": 497.17612, "r": 141.77899, "b": 505.9509, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Security: Encrypted memory, and improved trusted execution environments. ", "bbox": {"l": 151.19916, "t": 497.02673, "r": 490.03317, "b": 506.23972, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Security: Encrypted memory, and improved trusted execution environments."}, {"label": "list_item", "id": 8, "page_no": 12, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.6390838623047, "t": 513.5339965820312, "r": 547.27051, "b": 535.7632446289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9789533019065857, "cells": [{"id": 16, "text": "GLYPH", "bbox": {"l": 136.799, "t": 514.15591, "r": 141.77899, "b": 522.93069, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Sustainability: Reduce your energy consumption with real-time monitoring tools about the ", "bbox": {"l": 151.19916, "t": 514.00653, "r": 547.27051, "b": 523.21951, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "energy consumption of the system.", "bbox": {"l": 151.19916, "t": 526.00635, "r": 306.23645, "b": 535.21933, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Sustainability: Reduce your energy consumption with real-time monitoring tools about the energy consumption of the system."}, {"label": "section_header", "id": 9, "page_no": 12, "cluster": {"id": 9, "label": "section_header", "bbox": {"l": 64.31088256835938, "t": 562.8890380859375, "r": 161.74744, "b": 578.46362, "coord_origin": "TOPLEFT"}, "confidence": 0.9544580578804016, "cells": [{"id": 19, "text": "AI use cases", "bbox": {"l": 64.800003, "t": 563.70062, "r": 161.74744, "b": 578.46362, "coord_origin": "TOPLEFT"}}]}, "text": "AI use cases"}, {"label": "text", "id": 10, "page_no": 12, "cluster": {"id": 10, "label": "text", "bbox": {"l": 135.98568725585938, "t": 595.26904296875, "r": 533.90125, "b": 629.24123, "coord_origin": "TOPLEFT"}, "confidence": 0.9852948188781738, "cells": [{"id": 20, "text": "With billions of transactions per day in many of today\u2019s industries, it is key to get real-time ", "bbox": {"l": 136.8, "t": 596.02863, "r": 533.90125, "b": 605.24162, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "insights about what is happening in your data. AI on the IBM Z stack understands these ", "bbox": {"l": 136.79999, "t": 608.02843, "r": 525.72296, "b": 617.2414200000001, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "situations, and it delivers in-transaction inference in real time and at scale.", "bbox": {"l": 136.79999, "t": 620.02823, "r": 463.9240699999999, "b": 629.24123, "coord_origin": "TOPLEFT"}}]}, "text": "With billions of transactions per day in many of today\u2019s industries, it is key to get real-time insights about what is happening in your data. AI on the IBM Z stack understands these situations, and it delivers in-transaction inference in real time and at scale."}, {"label": "text", "id": 11, "page_no": 12, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.95875549316406, "t": 641.30712890625, "r": 547.24664, "b": 687.2891845703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9874392151832581, "cells": [{"id": 23, "text": "Core banking solutions running on IBM Z that are involved in processing inbound transactions ", "bbox": {"l": 136.79999, "t": 641.98804, "r": 547.24664, "b": 651.20103, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "need real-time fraud detection to prevent fraud. Other types of possible use cases might be ", "bbox": {"l": 136.79999, "t": 653.98784, "r": 541.79242, "b": 663.20084, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "credit risk analysis, anti-money laundering, loan approval, fraud detection in payments, and ", "bbox": {"l": 136.79999, "t": 665.98764, "r": 541.78253, "b": 675.20065, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "instant payments. ", "bbox": {"l": 136.79999, "t": 677.98745, "r": 217.88634, "b": 687.20045, "coord_origin": "TOPLEFT"}}]}, "text": "Core banking solutions running on IBM Z that are involved in processing inbound transactions need real-time fraud detection to prevent fraud. Other types of possible use cases might be credit risk analysis, anti-money laundering, loan approval, fraud detection in payments, and instant payments."}, {"label": "text", "id": 12, "page_no": 12, "cluster": {"id": 12, "label": "text", "bbox": {"l": 136.34823608398438, "t": 699.2769165039062, "r": 547.31128, "b": 721.6598510742188, "coord_origin": "TOPLEFT"}, "confidence": 0.9817102551460266, "cells": [{"id": 27, "text": "For insurance companies, a pressing use case would be claims processing. For markets and ", "bbox": {"l": 136.79999, "t": 700.007019, "r": 547.31128, "b": 709.220024, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "trading, clearing and settlement use cases are paramount. ", "bbox": {"l": 136.79999, "t": 712.006828, "r": 397.38748, "b": 721.219833, "coord_origin": "TOPLEFT"}}]}, "text": "For insurance companies, a pressing use case would be claims processing. For markets and trading, clearing and settlement use cases are paramount."}, {"label": "picture", "id": 13, "page_no": 12, "cluster": {"id": 13, "label": "picture", "bbox": {"l": 63.857383728027344, "t": 77.41220092773438, "r": 547.4847412109375, "b": 350.3799743652344, "coord_origin": "TOPLEFT"}, "confidence": 0.9851271510124207, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "caption", "id": 1, "page_no": 12, "cluster": {"id": 1, "label": "caption", "bbox": {"l": 64.15190887451172, "t": 353.40753173828125, "r": 506.3805236816406, "b": 362.9499206542969, "coord_origin": "TOPLEFT"}, "confidence": 0.9419980049133301, "cells": [{"id": 1, "text": "Figure 7 Developing, training, and deploying an AI model on Cloud Pak for Data on IBM Z and IBM LinuxONE", "bbox": {"l": 64.800003, "t": 354.01801, "r": 505.42822, "b": 362.34302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 7 Developing, training, and deploying an AI model on Cloud Pak for Data on IBM Z and IBM LinuxONE"}, {"label": "text", "id": 2, "page_no": 12, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.55064392089844, "t": 375.4695739746094, "r": 492.94083, "b": 385.46099853515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9363874197006226, "cells": [{"id": 2, "text": "In summary, here are some of the reasons why you should choose AI on IBM Z: ", "bbox": {"l": 136.8, "t": 376.00872999999996, "r": 492.94083, "b": 385.22171, "coord_origin": "TOPLEFT"}}]}, "text": "In summary, here are some of the reasons why you should choose AI on IBM Z:"}, {"label": "list_item", "id": 3, "page_no": 12, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 135.7388458251953, "t": 392.1660461425781, "r": 413.40018, "b": 402.2774658203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9464669823646545, "cells": [{"id": 3, "text": "GLYPH", "bbox": {"l": 136.8, "t": 393.13791, "r": 141.78, "b": 401.91269000000005, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "World-class AI inference platform for enterprise workloads: ", "bbox": {"l": 151.20016, "t": 392.98853, "r": 413.40018, "b": 402.20151, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH World-class AI inference platform for enterprise workloads:"}, {"label": "list_item", "id": 4, "page_no": 12, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 151.22914123535156, "t": 409.4760437011719, "r": 526.18811, "b": 431.24091, "coord_origin": "TOPLEFT"}, "confidence": 0.9700906872749329, "cells": [{"id": 5, "text": "-", "bbox": {"l": 152.03979, "t": 410.02811, "r": 157.60942, "b": 419.24109, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Embedded accelerators: A centralized on-chip AI accelerator that is shared by all ", "bbox": {"l": 165.59933, "t": 410.02811, "r": 526.18811, "b": 419.24109, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "cores.", "bbox": {"l": 165.59933, "t": 422.02792, "r": 192.78615, "b": 431.24091, "coord_origin": "TOPLEFT"}}]}, "text": "-Embedded accelerators: A centralized on-chip AI accelerator that is shared by all cores."}, {"label": "list_item", "id": 5, "page_no": 12, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 151.42306518554688, "t": 438.09356689453125, "r": 547.24652, "b": 460.22052, "coord_origin": "TOPLEFT"}, "confidence": 0.9732586741447449, "cells": [{"id": 8, "text": "-", "bbox": {"l": 152.03979, "t": 439.00772, "r": 157.61043, "b": 448.2207, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Industry standard AI ecosystem: Many industry open-source data science frameworks ", "bbox": {"l": 165.59935, "t": 439.00772, "r": 547.24652, "b": 448.2207, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "are available on the platform.", "bbox": {"l": 165.59933, "t": 451.00754, "r": 294.55841, "b": 460.22052, "coord_origin": "TOPLEFT"}}]}, "text": "-Industry standard AI ecosystem: Many industry open-source data science frameworks are available on the platform."}, {"label": "list_item", "id": 6, "page_no": 12, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 151.33360290527344, "t": 467.51483154296875, "r": 546.75769, "b": 489.2516174316406, "coord_origin": "TOPLEFT"}, "confidence": 0.9748732447624207, "cells": [{"id": 11, "text": "-", "bbox": {"l": 152.03979, "t": 467.98734, "r": 157.60843, "b": 477.20032, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Seamlessly integrate AI into existing enterprise workload stacks: Train anywhere, and ", "bbox": {"l": 165.59933, "t": 467.98734, "r": 546.75769, "b": 477.20032, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "then deploy on IBM Z.", "bbox": {"l": 165.59933, "t": 479.98715, "r": 263.37762, "b": 489.20013, "coord_origin": "TOPLEFT"}}]}, "text": "-Seamlessly integrate AI into existing enterprise workload stacks: Train anywhere, and then deploy on IBM Z."}, {"label": "list_item", "id": 7, "page_no": 12, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.7086639404297, "t": 496.2107238769531, "r": 490.03317, "b": 506.39105224609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9550834894180298, "cells": [{"id": 14, "text": "GLYPH", "bbox": {"l": 136.799, "t": 497.17612, "r": 141.77899, "b": 505.9509, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Security: Encrypted memory, and improved trusted execution environments. ", "bbox": {"l": 151.19916, "t": 497.02673, "r": 490.03317, "b": 506.23972, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Security: Encrypted memory, and improved trusted execution environments."}, {"label": "list_item", "id": 8, "page_no": 12, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.6390838623047, "t": 513.5339965820312, "r": 547.27051, "b": 535.7632446289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9789533019065857, "cells": [{"id": 16, "text": "GLYPH", "bbox": {"l": 136.799, "t": 514.15591, "r": 141.77899, "b": 522.93069, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Sustainability: Reduce your energy consumption with real-time monitoring tools about the ", "bbox": {"l": 151.19916, "t": 514.00653, "r": 547.27051, "b": 523.21951, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "energy consumption of the system.", "bbox": {"l": 151.19916, "t": 526.00635, "r": 306.23645, "b": 535.21933, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Sustainability: Reduce your energy consumption with real-time monitoring tools about the energy consumption of the system."}, {"label": "section_header", "id": 9, "page_no": 12, "cluster": {"id": 9, "label": "section_header", "bbox": {"l": 64.31088256835938, "t": 562.8890380859375, "r": 161.74744, "b": 578.46362, "coord_origin": "TOPLEFT"}, "confidence": 0.9544580578804016, "cells": [{"id": 19, "text": "AI use cases", "bbox": {"l": 64.800003, "t": 563.70062, "r": 161.74744, "b": 578.46362, "coord_origin": "TOPLEFT"}}]}, "text": "AI use cases"}, {"label": "text", "id": 10, "page_no": 12, "cluster": {"id": 10, "label": "text", "bbox": {"l": 135.98568725585938, "t": 595.26904296875, "r": 533.90125, "b": 629.24123, "coord_origin": "TOPLEFT"}, "confidence": 0.9852948188781738, "cells": [{"id": 20, "text": "With billions of transactions per day in many of today\u2019s industries, it is key to get real-time ", "bbox": {"l": 136.8, "t": 596.02863, "r": 533.90125, "b": 605.24162, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "insights about what is happening in your data. AI on the IBM Z stack understands these ", "bbox": {"l": 136.79999, "t": 608.02843, "r": 525.72296, "b": 617.2414200000001, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "situations, and it delivers in-transaction inference in real time and at scale.", "bbox": {"l": 136.79999, "t": 620.02823, "r": 463.9240699999999, "b": 629.24123, "coord_origin": "TOPLEFT"}}]}, "text": "With billions of transactions per day in many of today\u2019s industries, it is key to get real-time insights about what is happening in your data. AI on the IBM Z stack understands these situations, and it delivers in-transaction inference in real time and at scale."}, {"label": "text", "id": 11, "page_no": 12, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.95875549316406, "t": 641.30712890625, "r": 547.24664, "b": 687.2891845703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9874392151832581, "cells": [{"id": 23, "text": "Core banking solutions running on IBM Z that are involved in processing inbound transactions ", "bbox": {"l": 136.79999, "t": 641.98804, "r": 547.24664, "b": 651.20103, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "need real-time fraud detection to prevent fraud. Other types of possible use cases might be ", "bbox": {"l": 136.79999, "t": 653.98784, "r": 541.79242, "b": 663.20084, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "credit risk analysis, anti-money laundering, loan approval, fraud detection in payments, and ", "bbox": {"l": 136.79999, "t": 665.98764, "r": 541.78253, "b": 675.20065, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "instant payments. ", "bbox": {"l": 136.79999, "t": 677.98745, "r": 217.88634, "b": 687.20045, "coord_origin": "TOPLEFT"}}]}, "text": "Core banking solutions running on IBM Z that are involved in processing inbound transactions need real-time fraud detection to prevent fraud. Other types of possible use cases might be credit risk analysis, anti-money laundering, loan approval, fraud detection in payments, and instant payments."}, {"label": "text", "id": 12, "page_no": 12, "cluster": {"id": 12, "label": "text", "bbox": {"l": 136.34823608398438, "t": 699.2769165039062, "r": 547.31128, "b": 721.6598510742188, "coord_origin": "TOPLEFT"}, "confidence": 0.9817102551460266, "cells": [{"id": 27, "text": "For insurance companies, a pressing use case would be claims processing. For markets and ", "bbox": {"l": 136.79999, "t": 700.007019, "r": 547.31128, "b": 709.220024, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "trading, clearing and settlement use cases are paramount. ", "bbox": {"l": 136.79999, "t": 712.006828, "r": 397.38748, "b": 721.219833, "coord_origin": "TOPLEFT"}}]}, "text": "For insurance companies, a pressing use case would be claims processing. For markets and trading, clearing and settlement use cases are paramount."}, {"label": "picture", "id": 13, "page_no": 12, "cluster": {"id": 13, "label": "picture", "bbox": {"l": 63.857383728027344, "t": 77.41220092773438, "r": 547.4847412109375, "b": 350.3799743652344, "coord_origin": "TOPLEFT"}, "confidence": 0.9851271510124207, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 12, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 535.8191528320312, "t": 754.3023071289062, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9041211009025574, "cells": [{"id": 0, "text": "11", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "11"}]}}, {"page_no": 13, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "12 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "For the health care industry, medical image processing (such as MRIs and x-rays), skin ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 525.18512, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "cancer detection, and patient monitoring activities such as infant motion analysis, is ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 507.30304, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "important. ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 183.95863, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "For the airline industry, processes such as air traffic management, flight management ", "bbox": {"l": 136.8, "t": 117.52788999999996, "r": 516.80676, "b": 126.74090999999987, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "systems, and flight maintenance predictions are use cases that are ideal candidates for using ", "bbox": {"l": 136.8, "t": 129.52770999999996, "r": 547.31134, "b": 138.74072, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "AI on IBM Z. ", "bbox": {"l": 136.8, "t": 141.52752999999996, "r": 195.16162, "b": 150.74054, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "In the following sections, we describe the following use cases: ", "bbox": {"l": 136.8, "t": 163.4873, "r": 413.42313, "b": 172.70032000000003, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 180.67627000000005, "r": 141.78, "b": 189.45105, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "\u201cUse case 1: Responsible AI augmented with risk and regulatory compliance\u201d on page 12", "bbox": {"l": 151.20016, "t": 180.52686000000006, "r": 545.1839, "b": 189.73987, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "AI model lifecycle governance, risk management, and regulatory compliance are key to ", "bbox": {"l": 151.20016, "t": 197.50665000000004, "r": 538.44098, "b": 206.71966999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "the success of the enterprises. It is imperative to adopt a typical AI model lifecycle to ", "bbox": {"l": 151.20016, "t": 209.50647000000004, "r": 526.64929, "b": 218.71947999999998, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "protect new end-to-end risks. ", "bbox": {"l": 151.20016, "t": 221.50629000000004, "r": 282.7309, "b": 230.71929999999998, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "GLYPH", "bbox": {"l": 136.8, "t": 238.63549999999998, "r": 141.78, "b": 247.41027999999994, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "\u201cUse case 2: Credit default risk assessment\u201d on page 22 ", "bbox": {"l": 151.20016, "t": 238.48608000000002, "r": 402.90234, "b": 247.69910000000004, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Core banking solutions running on IBM Z that are involved in processing inbound ", "bbox": {"l": 151.20016, "t": 255.52562999999998, "r": 511.25512999999995, "b": 264.73865, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "transactions need real-time fraud detection to prevent fraud. Other types of possible use ", "bbox": {"l": 151.20016, "t": 267.52545, "r": 542.90094, "b": 276.73846000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "cases might be credit risk analysis, anti-money laundering, loan approval, fraud detection ", "bbox": {"l": 151.20016, "t": 279.52527, "r": 547.2406, "b": 288.73828, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "in payments, and instant payments.", "bbox": {"l": 151.20016, "t": 291.52512, "r": 308.37991, "b": 300.7381, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "GLYPH", "bbox": {"l": 136.8, "t": 308.6543, "r": 141.78, "b": 317.42908, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "\u201cUse case 3: Clearing and settlement\u201d on page 25", "bbox": {"l": 151.20016, "t": 308.50491, "r": 371.7962, "b": 317.7179, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "The use of AI can help to predict which trades or transactions have high risk exposures, ", "bbox": {"l": 151.20016, "t": 325.48471, "r": 541.1402, "b": 334.69768999999997, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "and propose solutions for a more efficient settlement process.", "bbox": {"l": 151.20018, "t": 337.48453, "r": 424.07242, "b": 346.6975100000001, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 354.67349, "r": 141.78001, "b": 363.44827, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "\u201cUse case 4: Remaining Useful Life of an aircraft engine\u201d on page 27", "bbox": {"l": 151.20018, "t": 354.52411, "r": 455.18243, "b": 363.73709, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "We describe how AI can help to avoid unplanned aircraft downtime by determining the ", "bbox": {"l": 151.20018, "t": 371.50391, "r": 534.64014, "b": 380.71689, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "remaining time or cycles that an aircraft engine is likely to operate before failure.", "bbox": {"l": 151.20018, "t": 383.50371999999993, "r": 505.18069, "b": 392.7167099999999, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 400.63290000000006, "r": 141.78001, "b": 409.40767999999997, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "\u201cUse case 5: AI-powered video analytics on an infant\u2019s motions for health prediction\u201d on ", "bbox": {"l": 151.20018, "t": 400.48352, "r": 539.65314, "b": 409.6965, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "page 30", "bbox": {"l": 151.20018, "t": 412.48333999999994, "r": 187.31914, "b": 421.69632, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "In this section, we describe how AI can predict an infant\u2019s health conditions by monitoring ", "bbox": {"l": 151.20018, "t": 429.52292, "r": 547.24268, "b": 438.7359, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "real-time body movements.", "bbox": {"l": 151.20018, "t": 441.52274, "r": 271.72714, "b": 450.73572, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Use case 1: Responsible AI augmented with risk and regulatory ", "bbox": {"l": 64.800003, "t": 479.2207, "r": 547.25647, "b": 493.9837, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "compliance", "bbox": {"l": 64.800003, "t": 498.24023, "r": 152.77151, "b": 513.00323, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Advancement in AI is changing the world, and organizations must adopt AI to embrace new ", "bbox": {"l": 136.8, "t": 530.50861, "r": 542.87628, "b": 539.72162, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "challenges daily. Many enterprises see tremendous value in adopting AI and ML technologies ", "bbox": {"l": 136.8, "t": 542.50842, "r": 547.17877, "b": 551.72142, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "while establishing organization trust in the models, underlying data, and the process to be ", "bbox": {"l": 136.79999, "t": 554.5082199999999, "r": 535.17603, "b": 563.72122, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "followed. An AI model lifecycle can be a daunting task.", "bbox": {"l": 136.79999, "t": 566.50803, "r": 377.95047, "b": 575.72102, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "How mature is your AI governance? In this section, we provide a use case demonstrating the ", "bbox": {"l": 136.79999, "t": 588.52759, "r": 547.24249, "b": 597.74059, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "trustworthiness of AI and its importance in daily monitoring. ", "bbox": {"l": 136.79999, "t": 600.52739, "r": 400.68033, "b": 609.7403899999999, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Industry challenges", "bbox": {"l": 64.800003, "t": 630.35472, "r": 186.7186, "b": 642.34273, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Here are the three main reasons why organizations struggle with the adoption of AI: ", "bbox": {"l": 136.8, "t": 656.5086200000001, "r": 508.98724000000004, "b": 665.72162, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "GLYPH", "bbox": {"l": 136.8, "t": 673.69759, "r": 141.78, "b": 682.47234, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Scaling with growing regulations", "bbox": {"l": 151.20016, "t": 673.54818, "r": 293.96283, "b": 682.76118, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "GLYPH", "bbox": {"l": 136.8, "t": 690.6774, "r": 141.78, "b": 699.4521560000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Lack of confidence in operationalized AI (making responsible AI)", "bbox": {"l": 151.20016, "t": 690.52799, "r": 435.72745, "b": 699.740997, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "GLYPH", "bbox": {"l": 136.8, "t": 707.657211, "r": 141.78, "b": 716.431969, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "Challenges around managing the risk throughout the entire AI workflow", "bbox": {"l": 151.20016, "t": 707.507805, "r": 465.6782799999999, "b": 716.72081, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.53218078613281, "t": 754.509033203125, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9160951375961304, "cells": [{"id": 0, "text": "12 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.2241439819336, "t": 754.7615356445312, "r": 267.0744, "b": 764.1396484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9570255279541016, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 136.15476989746094, "t": 70.64640045166016, "r": 525.18512, "b": 104.7277603149414, "coord_origin": "TOPLEFT"}, "confidence": 0.9839752912521362, "cells": [{"id": 2, "text": "For the health care industry, medical image processing (such as MRIs and x-rays), skin ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 525.18512, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "cancer detection, and patient monitoring activities such as infant motion analysis, is ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 507.30304, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "important. ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 183.95863, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.8750762939453, "t": 116.78321838378906, "r": 547.31134, "b": 150.74054, "coord_origin": "TOPLEFT"}, "confidence": 0.9775494337081909, "cells": [{"id": 5, "text": "For the airline industry, processes such as air traffic management, flight management ", "bbox": {"l": 136.8, "t": 117.52788999999996, "r": 516.80676, "b": 126.74090999999987, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "systems, and flight maintenance predictions are use cases that are ideal candidates for using ", "bbox": {"l": 136.8, "t": 129.52770999999996, "r": 547.31134, "b": 138.74072, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "AI on IBM Z. ", "bbox": {"l": 136.8, "t": 141.52752999999996, "r": 195.16162, "b": 150.74054, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 136.158935546875, "t": 162.72833251953125, "r": 413.42313, "b": 172.92796325683594, "coord_origin": "TOPLEFT"}, "confidence": 0.9381385445594788, "cells": [{"id": 8, "text": "In the following sections, we describe the following use cases: ", "bbox": {"l": 136.8, "t": 163.4873, "r": 413.42313, "b": 172.70032000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 135.51185607910156, "t": 180.31353759765625, "r": 545.1839, "b": 230.8561553955078, "coord_origin": "TOPLEFT"}, "confidence": 0.700736403465271, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 180.67627000000005, "r": 141.78, "b": 189.45105, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "\u201cUse case 1: Responsible AI augmented with risk and regulatory compliance\u201d on page 12", "bbox": {"l": 151.20016, "t": 180.52686000000006, "r": 545.1839, "b": 189.73987, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "AI model lifecycle governance, risk management, and regulatory compliance are key to ", "bbox": {"l": 151.20016, "t": 197.50665000000004, "r": 538.44098, "b": 206.71966999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "the success of the enterprises. It is imperative to adopt a typical AI model lifecycle to ", "bbox": {"l": 151.20016, "t": 209.50647000000004, "r": 526.64929, "b": 218.71947999999998, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "protect new end-to-end risks. ", "bbox": {"l": 151.20016, "t": 221.50629000000004, "r": 282.7309, "b": 230.71929999999998, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.6671600341797, "t": 237.22537231445312, "r": 402.90234, "b": 247.7976837158203, "coord_origin": "TOPLEFT"}, "confidence": 0.927428662776947, "cells": [{"id": 14, "text": "GLYPH", "bbox": {"l": 136.8, "t": 238.63549999999998, "r": 141.78, "b": 247.41027999999994, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "\u201cUse case 2: Credit default risk assessment\u201d on page 22 ", "bbox": {"l": 151.20016, "t": 238.48608000000002, "r": 402.90234, "b": 247.69910000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 150.19342041015625, "t": 254.68844604492188, "r": 547.2406, "b": 301.0074157714844, "coord_origin": "TOPLEFT"}, "confidence": 0.817919135093689, "cells": [{"id": 16, "text": "Core banking solutions running on IBM Z that are involved in processing inbound ", "bbox": {"l": 151.20016, "t": 255.52562999999998, "r": 511.25512999999995, "b": 264.73865, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "transactions need real-time fraud detection to prevent fraud. Other types of possible use ", "bbox": {"l": 151.20016, "t": 267.52545, "r": 542.90094, "b": 276.73846000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "cases might be credit risk analysis, anti-money laundering, loan approval, fraud detection ", "bbox": {"l": 151.20016, "t": 279.52527, "r": 547.2406, "b": 288.73828, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "in payments, and instant payments.", "bbox": {"l": 151.20016, "t": 291.52512, "r": 308.37991, "b": 300.7381, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.68087768554688, "t": 307.4832763671875, "r": 371.7962, "b": 317.9508361816406, "coord_origin": "TOPLEFT"}, "confidence": 0.9381933212280273, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.8, "t": 308.6543, "r": 141.78, "b": 317.42908, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "\u201cUse case 3: Clearing and settlement\u201d on page 25", "bbox": {"l": 151.20016, "t": 308.50491, "r": 371.7962, "b": 317.7179, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 150.48846435546875, "t": 324.5227966308594, "r": 541.1402, "b": 346.9660339355469, "coord_origin": "TOPLEFT"}, "confidence": 0.7946481108665466, "cells": [{"id": 22, "text": "The use of AI can help to predict which trades or transactions have high risk exposures, ", "bbox": {"l": 151.20016, "t": 325.48471, "r": 541.1402, "b": 334.69768999999997, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "and propose solutions for a more efficient settlement process.", "bbox": {"l": 151.20018, "t": 337.48453, "r": 424.07242, "b": 346.6975100000001, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 135.71913146972656, "t": 353.8939514160156, "r": 455.3772277832031, "b": 364.2116394042969, "coord_origin": "TOPLEFT"}, "confidence": 0.896625280380249, "cells": [{"id": 24, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 354.67349, "r": 141.78001, "b": 363.44827, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "\u201cUse case 4: Remaining Useful Life of an aircraft engine\u201d on page 27", "bbox": {"l": 151.20018, "t": 354.52411, "r": 455.18243, "b": 363.73709, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 150.2084197998047, "t": 370.6900634765625, "r": 534.64014, "b": 392.9651794433594, "coord_origin": "TOPLEFT"}, "confidence": 0.7541017532348633, "cells": [{"id": 26, "text": "We describe how AI can help to avoid unplanned aircraft downtime by determining the ", "bbox": {"l": 151.20018, "t": 371.50391, "r": 534.64014, "b": 380.71689, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "remaining time or cycles that an aircraft engine is likely to operate before failure.", "bbox": {"l": 151.20018, "t": 383.50371999999993, "r": 505.18069, "b": 392.7167099999999, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "list_item", "bbox": {"l": 135.66246032714844, "t": 399.35772705078125, "r": 539.65314, "b": 421.6989440917969, "coord_origin": "TOPLEFT"}, "confidence": 0.9588227868080139, "cells": [{"id": 28, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 400.63290000000006, "r": 141.78001, "b": 409.40767999999997, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "\u201cUse case 5: AI-powered video analytics on an infant\u2019s motions for health prediction\u201d on ", "bbox": {"l": 151.20018, "t": 400.48352, "r": 539.65314, "b": 409.6965, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "page 30", "bbox": {"l": 151.20018, "t": 412.48333999999994, "r": 187.31914, "b": 421.69632, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "list_item", "bbox": {"l": 150.8683624267578, "t": 428.65521240234375, "r": 547.24268, "b": 451.055908203125, "coord_origin": "TOPLEFT"}, "confidence": 0.7970486879348755, "cells": [{"id": 31, "text": "In this section, we describe how AI can predict an infant\u2019s health conditions by monitoring ", "bbox": {"l": 151.20018, "t": 429.52292, "r": 547.24268, "b": 438.7359, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "real-time body movements.", "bbox": {"l": 151.20018, "t": 441.52274, "r": 271.72714, "b": 450.73572, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "section_header", "bbox": {"l": 64.4876708984375, "t": 478.11065673828125, "r": 547.25647, "b": 513.474365234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9484166502952576, "cells": [{"id": 33, "text": "Use case 1: Responsible AI augmented with risk and regulatory ", "bbox": {"l": 64.800003, "t": 479.2207, "r": 547.25647, "b": 493.9837, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "compliance", "bbox": {"l": 64.800003, "t": 498.24023, "r": 152.77151, "b": 513.00323, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "text", "bbox": {"l": 135.6639404296875, "t": 529.3472290039062, "r": 547.17877, "b": 575.7841186523438, "coord_origin": "TOPLEFT"}, "confidence": 0.9858030080795288, "cells": [{"id": 35, "text": "Advancement in AI is changing the world, and organizations must adopt AI to embrace new ", "bbox": {"l": 136.8, "t": 530.50861, "r": 542.87628, "b": 539.72162, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "challenges daily. Many enterprises see tremendous value in adopting AI and ML technologies ", "bbox": {"l": 136.8, "t": 542.50842, "r": 547.17877, "b": 551.72142, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "while establishing organization trust in the models, underlying data, and the process to be ", "bbox": {"l": 136.79999, "t": 554.5082199999999, "r": 535.17603, "b": 563.72122, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "followed. An AI model lifecycle can be a daunting task.", "bbox": {"l": 136.79999, "t": 566.50803, "r": 377.95047, "b": 575.72102, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "text", "bbox": {"l": 136.313232421875, "t": 588.0188598632812, "r": 547.24249, "b": 610.3685913085938, "coord_origin": "TOPLEFT"}, "confidence": 0.9748781323432922, "cells": [{"id": 39, "text": "How mature is your AI governance? In this section, we provide a use case demonstrating the ", "bbox": {"l": 136.79999, "t": 588.52759, "r": 547.24249, "b": 597.74059, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "trustworthiness of AI and its importance in daily monitoring. ", "bbox": {"l": 136.79999, "t": 600.52739, "r": 400.68033, "b": 609.7403899999999, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "section_header", "bbox": {"l": 64.53734588623047, "t": 629.2350463867188, "r": 186.7186, "b": 642.421142578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9630159139633179, "cells": [{"id": 41, "text": "Industry challenges", "bbox": {"l": 64.800003, "t": 630.35472, "r": 186.7186, "b": 642.34273, "coord_origin": "TOPLEFT"}}]}, {"id": 18, "label": "text", "bbox": {"l": 136.22996520996094, "t": 655.5369873046875, "r": 508.98724000000004, "b": 665.72162, "coord_origin": "TOPLEFT"}, "confidence": 0.9516966938972473, "cells": [{"id": 42, "text": "Here are the three main reasons why organizations struggle with the adoption of AI: ", "bbox": {"l": 136.8, "t": 656.5086200000001, "r": 508.98724000000004, "b": 665.72162, "coord_origin": "TOPLEFT"}}]}, {"id": 19, "label": "list_item", "bbox": {"l": 135.8061065673828, "t": 672.6024780273438, "r": 293.9800720214844, "b": 682.9390869140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9561625123023987, "cells": [{"id": 43, "text": "GLYPH", "bbox": {"l": 136.8, "t": 673.69759, "r": 141.78, "b": 682.47234, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Scaling with growing regulations", "bbox": {"l": 151.20016, "t": 673.54818, "r": 293.96283, "b": 682.76118, "coord_origin": "TOPLEFT"}}]}, {"id": 20, "label": "list_item", "bbox": {"l": 135.63792419433594, "t": 689.974609375, "r": 435.72745, "b": 700.486083984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9557024240493774, "cells": [{"id": 45, "text": "GLYPH", "bbox": {"l": 136.8, "t": 690.6774, "r": 141.78, "b": 699.4521560000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Lack of confidence in operationalized AI (making responsible AI)", "bbox": {"l": 151.20016, "t": 690.52799, "r": 435.72745, "b": 699.740997, "coord_origin": "TOPLEFT"}}]}, {"id": 21, "label": "list_item", "bbox": {"l": 135.60543823242188, "t": 706.6790161132812, "r": 466.06842041015625, "b": 717.1160888671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9607930183410645, "cells": [{"id": 47, "text": "GLYPH", "bbox": {"l": 136.8, "t": 707.657211, "r": 141.78, "b": 716.431969, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "Challenges around managing the risk throughout the entire AI workflow", "bbox": {"l": 151.20016, "t": 707.507805, "r": 465.6782799999999, "b": 716.72081, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 13, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.53218078613281, "t": 754.509033203125, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9160951375961304, "cells": [{"id": 0, "text": "12 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "12"}, {"label": "page_footer", "id": 1, "page_no": 13, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.2241439819336, "t": 754.7615356445312, "r": 267.0744, "b": 764.1396484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9570255279541016, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"label": "text", "id": 2, "page_no": 13, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.15476989746094, "t": 70.64640045166016, "r": 525.18512, "b": 104.7277603149414, "coord_origin": "TOPLEFT"}, "confidence": 0.9839752912521362, "cells": [{"id": 2, "text": "For the health care industry, medical image processing (such as MRIs and x-rays), skin ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 525.18512, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "cancer detection, and patient monitoring activities such as infant motion analysis, is ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 507.30304, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "important. ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 183.95863, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}]}, "text": "For the health care industry, medical image processing (such as MRIs and x-rays), skin cancer detection, and patient monitoring activities such as infant motion analysis, is important."}, {"label": "text", "id": 3, "page_no": 13, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.8750762939453, "t": 116.78321838378906, "r": 547.31134, "b": 150.74054, "coord_origin": "TOPLEFT"}, "confidence": 0.9775494337081909, "cells": [{"id": 5, "text": "For the airline industry, processes such as air traffic management, flight management ", "bbox": {"l": 136.8, "t": 117.52788999999996, "r": 516.80676, "b": 126.74090999999987, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "systems, and flight maintenance predictions are use cases that are ideal candidates for using ", "bbox": {"l": 136.8, "t": 129.52770999999996, "r": 547.31134, "b": 138.74072, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "AI on IBM Z. ", "bbox": {"l": 136.8, "t": 141.52752999999996, "r": 195.16162, "b": 150.74054, "coord_origin": "TOPLEFT"}}]}, "text": "For the airline industry, processes such as air traffic management, flight management systems, and flight maintenance predictions are use cases that are ideal candidates for using AI on IBM Z."}, {"label": "text", "id": 4, "page_no": 13, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.158935546875, "t": 162.72833251953125, "r": 413.42313, "b": 172.92796325683594, "coord_origin": "TOPLEFT"}, "confidence": 0.9381385445594788, "cells": [{"id": 8, "text": "In the following sections, we describe the following use cases: ", "bbox": {"l": 136.8, "t": 163.4873, "r": 413.42313, "b": 172.70032000000003, "coord_origin": "TOPLEFT"}}]}, "text": "In the following sections, we describe the following use cases:"}, {"label": "list_item", "id": 5, "page_no": 13, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.51185607910156, "t": 180.31353759765625, "r": 545.1839, "b": 230.8561553955078, "coord_origin": "TOPLEFT"}, "confidence": 0.700736403465271, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 180.67627000000005, "r": 141.78, "b": 189.45105, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "\u201cUse case 1: Responsible AI augmented with risk and regulatory compliance\u201d on page 12", "bbox": {"l": 151.20016, "t": 180.52686000000006, "r": 545.1839, "b": 189.73987, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "AI model lifecycle governance, risk management, and regulatory compliance are key to ", "bbox": {"l": 151.20016, "t": 197.50665000000004, "r": 538.44098, "b": 206.71966999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "the success of the enterprises. It is imperative to adopt a typical AI model lifecycle to ", "bbox": {"l": 151.20016, "t": 209.50647000000004, "r": 526.64929, "b": 218.71947999999998, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "protect new end-to-end risks. ", "bbox": {"l": 151.20016, "t": 221.50629000000004, "r": 282.7309, "b": 230.71929999999998, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH \u201cUse case 1: Responsible AI augmented with risk and regulatory compliance\u201d on page 12 AI model lifecycle governance, risk management, and regulatory compliance are key to the success of the enterprises. It is imperative to adopt a typical AI model lifecycle to protect new end-to-end risks."}, {"label": "list_item", "id": 6, "page_no": 13, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.6671600341797, "t": 237.22537231445312, "r": 402.90234, "b": 247.7976837158203, "coord_origin": "TOPLEFT"}, "confidence": 0.927428662776947, "cells": [{"id": 14, "text": "GLYPH", "bbox": {"l": 136.8, "t": 238.63549999999998, "r": 141.78, "b": 247.41027999999994, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "\u201cUse case 2: Credit default risk assessment\u201d on page 22 ", "bbox": {"l": 151.20016, "t": 238.48608000000002, "r": 402.90234, "b": 247.69910000000004, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH \u201cUse case 2: Credit default risk assessment\u201d on page 22"}, {"label": "list_item", "id": 7, "page_no": 13, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 150.19342041015625, "t": 254.68844604492188, "r": 547.2406, "b": 301.0074157714844, "coord_origin": "TOPLEFT"}, "confidence": 0.817919135093689, "cells": [{"id": 16, "text": "Core banking solutions running on IBM Z that are involved in processing inbound ", "bbox": {"l": 151.20016, "t": 255.52562999999998, "r": 511.25512999999995, "b": 264.73865, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "transactions need real-time fraud detection to prevent fraud. Other types of possible use ", "bbox": {"l": 151.20016, "t": 267.52545, "r": 542.90094, "b": 276.73846000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "cases might be credit risk analysis, anti-money laundering, loan approval, fraud detection ", "bbox": {"l": 151.20016, "t": 279.52527, "r": 547.2406, "b": 288.73828, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "in payments, and instant payments.", "bbox": {"l": 151.20016, "t": 291.52512, "r": 308.37991, "b": 300.7381, "coord_origin": "TOPLEFT"}}]}, "text": "Core banking solutions running on IBM Z that are involved in processing inbound transactions need real-time fraud detection to prevent fraud. Other types of possible use cases might be credit risk analysis, anti-money laundering, loan approval, fraud detection in payments, and instant payments."}, {"label": "list_item", "id": 8, "page_no": 13, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.68087768554688, "t": 307.4832763671875, "r": 371.7962, "b": 317.9508361816406, "coord_origin": "TOPLEFT"}, "confidence": 0.9381933212280273, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.8, "t": 308.6543, "r": 141.78, "b": 317.42908, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "\u201cUse case 3: Clearing and settlement\u201d on page 25", "bbox": {"l": 151.20016, "t": 308.50491, "r": 371.7962, "b": 317.7179, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH \u201cUse case 3: Clearing and settlement\u201d on page 25"}, {"label": "list_item", "id": 9, "page_no": 13, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 150.48846435546875, "t": 324.5227966308594, "r": 541.1402, "b": 346.9660339355469, "coord_origin": "TOPLEFT"}, "confidence": 0.7946481108665466, "cells": [{"id": 22, "text": "The use of AI can help to predict which trades or transactions have high risk exposures, ", "bbox": {"l": 151.20016, "t": 325.48471, "r": 541.1402, "b": 334.69768999999997, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "and propose solutions for a more efficient settlement process.", "bbox": {"l": 151.20018, "t": 337.48453, "r": 424.07242, "b": 346.6975100000001, "coord_origin": "TOPLEFT"}}]}, "text": "The use of AI can help to predict which trades or transactions have high risk exposures, and propose solutions for a more efficient settlement process."}, {"label": "list_item", "id": 10, "page_no": 13, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.71913146972656, "t": 353.8939514160156, "r": 455.3772277832031, "b": 364.2116394042969, "coord_origin": "TOPLEFT"}, "confidence": 0.896625280380249, "cells": [{"id": 24, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 354.67349, "r": 141.78001, "b": 363.44827, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "\u201cUse case 4: Remaining Useful Life of an aircraft engine\u201d on page 27", "bbox": {"l": 151.20018, "t": 354.52411, "r": 455.18243, "b": 363.73709, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH \u201cUse case 4: Remaining Useful Life of an aircraft engine\u201d on page 27"}, {"label": "list_item", "id": 11, "page_no": 13, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 150.2084197998047, "t": 370.6900634765625, "r": 534.64014, "b": 392.9651794433594, "coord_origin": "TOPLEFT"}, "confidence": 0.7541017532348633, "cells": [{"id": 26, "text": "We describe how AI can help to avoid unplanned aircraft downtime by determining the ", "bbox": {"l": 151.20018, "t": 371.50391, "r": 534.64014, "b": 380.71689, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "remaining time or cycles that an aircraft engine is likely to operate before failure.", "bbox": {"l": 151.20018, "t": 383.50371999999993, "r": 505.18069, "b": 392.7167099999999, "coord_origin": "TOPLEFT"}}]}, "text": "We describe how AI can help to avoid unplanned aircraft downtime by determining the remaining time or cycles that an aircraft engine is likely to operate before failure."}, {"label": "list_item", "id": 12, "page_no": 13, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 135.66246032714844, "t": 399.35772705078125, "r": 539.65314, "b": 421.6989440917969, "coord_origin": "TOPLEFT"}, "confidence": 0.9588227868080139, "cells": [{"id": 28, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 400.63290000000006, "r": 141.78001, "b": 409.40767999999997, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "\u201cUse case 5: AI-powered video analytics on an infant\u2019s motions for health prediction\u201d on ", "bbox": {"l": 151.20018, "t": 400.48352, "r": 539.65314, "b": 409.6965, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "page 30", "bbox": {"l": 151.20018, "t": 412.48333999999994, "r": 187.31914, "b": 421.69632, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH \u201cUse case 5: AI-powered video analytics on an infant\u2019s motions for health prediction\u201d on page 30"}, {"label": "list_item", "id": 13, "page_no": 13, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 150.8683624267578, "t": 428.65521240234375, "r": 547.24268, "b": 451.055908203125, "coord_origin": "TOPLEFT"}, "confidence": 0.7970486879348755, "cells": [{"id": 31, "text": "In this section, we describe how AI can predict an infant\u2019s health conditions by monitoring ", "bbox": {"l": 151.20018, "t": 429.52292, "r": 547.24268, "b": 438.7359, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "real-time body movements.", "bbox": {"l": 151.20018, "t": 441.52274, "r": 271.72714, "b": 450.73572, "coord_origin": "TOPLEFT"}}]}, "text": "In this section, we describe how AI can predict an infant\u2019s health conditions by monitoring real-time body movements."}, {"label": "section_header", "id": 14, "page_no": 13, "cluster": {"id": 14, "label": "section_header", "bbox": {"l": 64.4876708984375, "t": 478.11065673828125, "r": 547.25647, "b": 513.474365234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9484166502952576, "cells": [{"id": 33, "text": "Use case 1: Responsible AI augmented with risk and regulatory ", "bbox": {"l": 64.800003, "t": 479.2207, "r": 547.25647, "b": 493.9837, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "compliance", "bbox": {"l": 64.800003, "t": 498.24023, "r": 152.77151, "b": 513.00323, "coord_origin": "TOPLEFT"}}]}, "text": "Use case 1: Responsible AI augmented with risk and regulatory compliance"}, {"label": "text", "id": 15, "page_no": 13, "cluster": {"id": 15, "label": "text", "bbox": {"l": 135.6639404296875, "t": 529.3472290039062, "r": 547.17877, "b": 575.7841186523438, "coord_origin": "TOPLEFT"}, "confidence": 0.9858030080795288, "cells": [{"id": 35, "text": "Advancement in AI is changing the world, and organizations must adopt AI to embrace new ", "bbox": {"l": 136.8, "t": 530.50861, "r": 542.87628, "b": 539.72162, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "challenges daily. Many enterprises see tremendous value in adopting AI and ML technologies ", "bbox": {"l": 136.8, "t": 542.50842, "r": 547.17877, "b": 551.72142, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "while establishing organization trust in the models, underlying data, and the process to be ", "bbox": {"l": 136.79999, "t": 554.5082199999999, "r": 535.17603, "b": 563.72122, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "followed. An AI model lifecycle can be a daunting task.", "bbox": {"l": 136.79999, "t": 566.50803, "r": 377.95047, "b": 575.72102, "coord_origin": "TOPLEFT"}}]}, "text": "Advancement in AI is changing the world, and organizations must adopt AI to embrace new challenges daily. Many enterprises see tremendous value in adopting AI and ML technologies while establishing organization trust in the models, underlying data, and the process to be followed. An AI model lifecycle can be a daunting task."}, {"label": "text", "id": 16, "page_no": 13, "cluster": {"id": 16, "label": "text", "bbox": {"l": 136.313232421875, "t": 588.0188598632812, "r": 547.24249, "b": 610.3685913085938, "coord_origin": "TOPLEFT"}, "confidence": 0.9748781323432922, "cells": [{"id": 39, "text": "How mature is your AI governance? In this section, we provide a use case demonstrating the ", "bbox": {"l": 136.79999, "t": 588.52759, "r": 547.24249, "b": 597.74059, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "trustworthiness of AI and its importance in daily monitoring. ", "bbox": {"l": 136.79999, "t": 600.52739, "r": 400.68033, "b": 609.7403899999999, "coord_origin": "TOPLEFT"}}]}, "text": "How mature is your AI governance? In this section, we provide a use case demonstrating the trustworthiness of AI and its importance in daily monitoring."}, {"label": "section_header", "id": 17, "page_no": 13, "cluster": {"id": 17, "label": "section_header", "bbox": {"l": 64.53734588623047, "t": 629.2350463867188, "r": 186.7186, "b": 642.421142578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9630159139633179, "cells": [{"id": 41, "text": "Industry challenges", "bbox": {"l": 64.800003, "t": 630.35472, "r": 186.7186, "b": 642.34273, "coord_origin": "TOPLEFT"}}]}, "text": "Industry challenges"}, {"label": "text", "id": 18, "page_no": 13, "cluster": {"id": 18, "label": "text", "bbox": {"l": 136.22996520996094, "t": 655.5369873046875, "r": 508.98724000000004, "b": 665.72162, "coord_origin": "TOPLEFT"}, "confidence": 0.9516966938972473, "cells": [{"id": 42, "text": "Here are the three main reasons why organizations struggle with the adoption of AI: ", "bbox": {"l": 136.8, "t": 656.5086200000001, "r": 508.98724000000004, "b": 665.72162, "coord_origin": "TOPLEFT"}}]}, "text": "Here are the three main reasons why organizations struggle with the adoption of AI:"}, {"label": "list_item", "id": 19, "page_no": 13, "cluster": {"id": 19, "label": "list_item", "bbox": {"l": 135.8061065673828, "t": 672.6024780273438, "r": 293.9800720214844, "b": 682.9390869140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9561625123023987, "cells": [{"id": 43, "text": "GLYPH", "bbox": {"l": 136.8, "t": 673.69759, "r": 141.78, "b": 682.47234, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Scaling with growing regulations", "bbox": {"l": 151.20016, "t": 673.54818, "r": 293.96283, "b": 682.76118, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Scaling with growing regulations"}, {"label": "list_item", "id": 20, "page_no": 13, "cluster": {"id": 20, "label": "list_item", "bbox": {"l": 135.63792419433594, "t": 689.974609375, "r": 435.72745, "b": 700.486083984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9557024240493774, "cells": [{"id": 45, "text": "GLYPH", "bbox": {"l": 136.8, "t": 690.6774, "r": 141.78, "b": 699.4521560000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Lack of confidence in operationalized AI (making responsible AI)", "bbox": {"l": 151.20016, "t": 690.52799, "r": 435.72745, "b": 699.740997, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Lack of confidence in operationalized AI (making responsible AI)"}, {"label": "list_item", "id": 21, "page_no": 13, "cluster": {"id": 21, "label": "list_item", "bbox": {"l": 135.60543823242188, "t": 706.6790161132812, "r": 466.06842041015625, "b": 717.1160888671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9607930183410645, "cells": [{"id": 47, "text": "GLYPH", "bbox": {"l": 136.8, "t": 707.657211, "r": 141.78, "b": 716.431969, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "Challenges around managing the risk throughout the entire AI workflow", "bbox": {"l": 151.20016, "t": 707.507805, "r": 465.6782799999999, "b": 716.72081, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Challenges around managing the risk throughout the entire AI workflow"}], "body": [{"label": "text", "id": 2, "page_no": 13, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.15476989746094, "t": 70.64640045166016, "r": 525.18512, "b": 104.7277603149414, "coord_origin": "TOPLEFT"}, "confidence": 0.9839752912521362, "cells": [{"id": 2, "text": "For the health care industry, medical image processing (such as MRIs and x-rays), skin ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 525.18512, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "cancer detection, and patient monitoring activities such as infant motion analysis, is ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 507.30304, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "important. ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 183.95863, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}]}, "text": "For the health care industry, medical image processing (such as MRIs and x-rays), skin cancer detection, and patient monitoring activities such as infant motion analysis, is important."}, {"label": "text", "id": 3, "page_no": 13, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.8750762939453, "t": 116.78321838378906, "r": 547.31134, "b": 150.74054, "coord_origin": "TOPLEFT"}, "confidence": 0.9775494337081909, "cells": [{"id": 5, "text": "For the airline industry, processes such as air traffic management, flight management ", "bbox": {"l": 136.8, "t": 117.52788999999996, "r": 516.80676, "b": 126.74090999999987, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "systems, and flight maintenance predictions are use cases that are ideal candidates for using ", "bbox": {"l": 136.8, "t": 129.52770999999996, "r": 547.31134, "b": 138.74072, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "AI on IBM Z. ", "bbox": {"l": 136.8, "t": 141.52752999999996, "r": 195.16162, "b": 150.74054, "coord_origin": "TOPLEFT"}}]}, "text": "For the airline industry, processes such as air traffic management, flight management systems, and flight maintenance predictions are use cases that are ideal candidates for using AI on IBM Z."}, {"label": "text", "id": 4, "page_no": 13, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.158935546875, "t": 162.72833251953125, "r": 413.42313, "b": 172.92796325683594, "coord_origin": "TOPLEFT"}, "confidence": 0.9381385445594788, "cells": [{"id": 8, "text": "In the following sections, we describe the following use cases: ", "bbox": {"l": 136.8, "t": 163.4873, "r": 413.42313, "b": 172.70032000000003, "coord_origin": "TOPLEFT"}}]}, "text": "In the following sections, we describe the following use cases:"}, {"label": "list_item", "id": 5, "page_no": 13, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.51185607910156, "t": 180.31353759765625, "r": 545.1839, "b": 230.8561553955078, "coord_origin": "TOPLEFT"}, "confidence": 0.700736403465271, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 180.67627000000005, "r": 141.78, "b": 189.45105, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "\u201cUse case 1: Responsible AI augmented with risk and regulatory compliance\u201d on page 12", "bbox": {"l": 151.20016, "t": 180.52686000000006, "r": 545.1839, "b": 189.73987, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "AI model lifecycle governance, risk management, and regulatory compliance are key to ", "bbox": {"l": 151.20016, "t": 197.50665000000004, "r": 538.44098, "b": 206.71966999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "the success of the enterprises. It is imperative to adopt a typical AI model lifecycle to ", "bbox": {"l": 151.20016, "t": 209.50647000000004, "r": 526.64929, "b": 218.71947999999998, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "protect new end-to-end risks. ", "bbox": {"l": 151.20016, "t": 221.50629000000004, "r": 282.7309, "b": 230.71929999999998, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH \u201cUse case 1: Responsible AI augmented with risk and regulatory compliance\u201d on page 12 AI model lifecycle governance, risk management, and regulatory compliance are key to the success of the enterprises. It is imperative to adopt a typical AI model lifecycle to protect new end-to-end risks."}, {"label": "list_item", "id": 6, "page_no": 13, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.6671600341797, "t": 237.22537231445312, "r": 402.90234, "b": 247.7976837158203, "coord_origin": "TOPLEFT"}, "confidence": 0.927428662776947, "cells": [{"id": 14, "text": "GLYPH", "bbox": {"l": 136.8, "t": 238.63549999999998, "r": 141.78, "b": 247.41027999999994, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "\u201cUse case 2: Credit default risk assessment\u201d on page 22 ", "bbox": {"l": 151.20016, "t": 238.48608000000002, "r": 402.90234, "b": 247.69910000000004, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH \u201cUse case 2: Credit default risk assessment\u201d on page 22"}, {"label": "list_item", "id": 7, "page_no": 13, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 150.19342041015625, "t": 254.68844604492188, "r": 547.2406, "b": 301.0074157714844, "coord_origin": "TOPLEFT"}, "confidence": 0.817919135093689, "cells": [{"id": 16, "text": "Core banking solutions running on IBM Z that are involved in processing inbound ", "bbox": {"l": 151.20016, "t": 255.52562999999998, "r": 511.25512999999995, "b": 264.73865, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "transactions need real-time fraud detection to prevent fraud. Other types of possible use ", "bbox": {"l": 151.20016, "t": 267.52545, "r": 542.90094, "b": 276.73846000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "cases might be credit risk analysis, anti-money laundering, loan approval, fraud detection ", "bbox": {"l": 151.20016, "t": 279.52527, "r": 547.2406, "b": 288.73828, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "in payments, and instant payments.", "bbox": {"l": 151.20016, "t": 291.52512, "r": 308.37991, "b": 300.7381, "coord_origin": "TOPLEFT"}}]}, "text": "Core banking solutions running on IBM Z that are involved in processing inbound transactions need real-time fraud detection to prevent fraud. Other types of possible use cases might be credit risk analysis, anti-money laundering, loan approval, fraud detection in payments, and instant payments."}, {"label": "list_item", "id": 8, "page_no": 13, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.68087768554688, "t": 307.4832763671875, "r": 371.7962, "b": 317.9508361816406, "coord_origin": "TOPLEFT"}, "confidence": 0.9381933212280273, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.8, "t": 308.6543, "r": 141.78, "b": 317.42908, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "\u201cUse case 3: Clearing and settlement\u201d on page 25", "bbox": {"l": 151.20016, "t": 308.50491, "r": 371.7962, "b": 317.7179, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH \u201cUse case 3: Clearing and settlement\u201d on page 25"}, {"label": "list_item", "id": 9, "page_no": 13, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 150.48846435546875, "t": 324.5227966308594, "r": 541.1402, "b": 346.9660339355469, "coord_origin": "TOPLEFT"}, "confidence": 0.7946481108665466, "cells": [{"id": 22, "text": "The use of AI can help to predict which trades or transactions have high risk exposures, ", "bbox": {"l": 151.20016, "t": 325.48471, "r": 541.1402, "b": 334.69768999999997, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "and propose solutions for a more efficient settlement process.", "bbox": {"l": 151.20018, "t": 337.48453, "r": 424.07242, "b": 346.6975100000001, "coord_origin": "TOPLEFT"}}]}, "text": "The use of AI can help to predict which trades or transactions have high risk exposures, and propose solutions for a more efficient settlement process."}, {"label": "list_item", "id": 10, "page_no": 13, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.71913146972656, "t": 353.8939514160156, "r": 455.3772277832031, "b": 364.2116394042969, "coord_origin": "TOPLEFT"}, "confidence": 0.896625280380249, "cells": [{"id": 24, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 354.67349, "r": 141.78001, "b": 363.44827, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "\u201cUse case 4: Remaining Useful Life of an aircraft engine\u201d on page 27", "bbox": {"l": 151.20018, "t": 354.52411, "r": 455.18243, "b": 363.73709, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH \u201cUse case 4: Remaining Useful Life of an aircraft engine\u201d on page 27"}, {"label": "list_item", "id": 11, "page_no": 13, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 150.2084197998047, "t": 370.6900634765625, "r": 534.64014, "b": 392.9651794433594, "coord_origin": "TOPLEFT"}, "confidence": 0.7541017532348633, "cells": [{"id": 26, "text": "We describe how AI can help to avoid unplanned aircraft downtime by determining the ", "bbox": {"l": 151.20018, "t": 371.50391, "r": 534.64014, "b": 380.71689, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "remaining time or cycles that an aircraft engine is likely to operate before failure.", "bbox": {"l": 151.20018, "t": 383.50371999999993, "r": 505.18069, "b": 392.7167099999999, "coord_origin": "TOPLEFT"}}]}, "text": "We describe how AI can help to avoid unplanned aircraft downtime by determining the remaining time or cycles that an aircraft engine is likely to operate before failure."}, {"label": "list_item", "id": 12, "page_no": 13, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 135.66246032714844, "t": 399.35772705078125, "r": 539.65314, "b": 421.6989440917969, "coord_origin": "TOPLEFT"}, "confidence": 0.9588227868080139, "cells": [{"id": 28, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 400.63290000000006, "r": 141.78001, "b": 409.40767999999997, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "\u201cUse case 5: AI-powered video analytics on an infant\u2019s motions for health prediction\u201d on ", "bbox": {"l": 151.20018, "t": 400.48352, "r": 539.65314, "b": 409.6965, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "page 30", "bbox": {"l": 151.20018, "t": 412.48333999999994, "r": 187.31914, "b": 421.69632, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH \u201cUse case 5: AI-powered video analytics on an infant\u2019s motions for health prediction\u201d on page 30"}, {"label": "list_item", "id": 13, "page_no": 13, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 150.8683624267578, "t": 428.65521240234375, "r": 547.24268, "b": 451.055908203125, "coord_origin": "TOPLEFT"}, "confidence": 0.7970486879348755, "cells": [{"id": 31, "text": "In this section, we describe how AI can predict an infant\u2019s health conditions by monitoring ", "bbox": {"l": 151.20018, "t": 429.52292, "r": 547.24268, "b": 438.7359, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "real-time body movements.", "bbox": {"l": 151.20018, "t": 441.52274, "r": 271.72714, "b": 450.73572, "coord_origin": "TOPLEFT"}}]}, "text": "In this section, we describe how AI can predict an infant\u2019s health conditions by monitoring real-time body movements."}, {"label": "section_header", "id": 14, "page_no": 13, "cluster": {"id": 14, "label": "section_header", "bbox": {"l": 64.4876708984375, "t": 478.11065673828125, "r": 547.25647, "b": 513.474365234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9484166502952576, "cells": [{"id": 33, "text": "Use case 1: Responsible AI augmented with risk and regulatory ", "bbox": {"l": 64.800003, "t": 479.2207, "r": 547.25647, "b": 493.9837, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "compliance", "bbox": {"l": 64.800003, "t": 498.24023, "r": 152.77151, "b": 513.00323, "coord_origin": "TOPLEFT"}}]}, "text": "Use case 1: Responsible AI augmented with risk and regulatory compliance"}, {"label": "text", "id": 15, "page_no": 13, "cluster": {"id": 15, "label": "text", "bbox": {"l": 135.6639404296875, "t": 529.3472290039062, "r": 547.17877, "b": 575.7841186523438, "coord_origin": "TOPLEFT"}, "confidence": 0.9858030080795288, "cells": [{"id": 35, "text": "Advancement in AI is changing the world, and organizations must adopt AI to embrace new ", "bbox": {"l": 136.8, "t": 530.50861, "r": 542.87628, "b": 539.72162, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "challenges daily. Many enterprises see tremendous value in adopting AI and ML technologies ", "bbox": {"l": 136.8, "t": 542.50842, "r": 547.17877, "b": 551.72142, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "while establishing organization trust in the models, underlying data, and the process to be ", "bbox": {"l": 136.79999, "t": 554.5082199999999, "r": 535.17603, "b": 563.72122, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "followed. An AI model lifecycle can be a daunting task.", "bbox": {"l": 136.79999, "t": 566.50803, "r": 377.95047, "b": 575.72102, "coord_origin": "TOPLEFT"}}]}, "text": "Advancement in AI is changing the world, and organizations must adopt AI to embrace new challenges daily. Many enterprises see tremendous value in adopting AI and ML technologies while establishing organization trust in the models, underlying data, and the process to be followed. An AI model lifecycle can be a daunting task."}, {"label": "text", "id": 16, "page_no": 13, "cluster": {"id": 16, "label": "text", "bbox": {"l": 136.313232421875, "t": 588.0188598632812, "r": 547.24249, "b": 610.3685913085938, "coord_origin": "TOPLEFT"}, "confidence": 0.9748781323432922, "cells": [{"id": 39, "text": "How mature is your AI governance? In this section, we provide a use case demonstrating the ", "bbox": {"l": 136.79999, "t": 588.52759, "r": 547.24249, "b": 597.74059, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "trustworthiness of AI and its importance in daily monitoring. ", "bbox": {"l": 136.79999, "t": 600.52739, "r": 400.68033, "b": 609.7403899999999, "coord_origin": "TOPLEFT"}}]}, "text": "How mature is your AI governance? In this section, we provide a use case demonstrating the trustworthiness of AI and its importance in daily monitoring."}, {"label": "section_header", "id": 17, "page_no": 13, "cluster": {"id": 17, "label": "section_header", "bbox": {"l": 64.53734588623047, "t": 629.2350463867188, "r": 186.7186, "b": 642.421142578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9630159139633179, "cells": [{"id": 41, "text": "Industry challenges", "bbox": {"l": 64.800003, "t": 630.35472, "r": 186.7186, "b": 642.34273, "coord_origin": "TOPLEFT"}}]}, "text": "Industry challenges"}, {"label": "text", "id": 18, "page_no": 13, "cluster": {"id": 18, "label": "text", "bbox": {"l": 136.22996520996094, "t": 655.5369873046875, "r": 508.98724000000004, "b": 665.72162, "coord_origin": "TOPLEFT"}, "confidence": 0.9516966938972473, "cells": [{"id": 42, "text": "Here are the three main reasons why organizations struggle with the adoption of AI: ", "bbox": {"l": 136.8, "t": 656.5086200000001, "r": 508.98724000000004, "b": 665.72162, "coord_origin": "TOPLEFT"}}]}, "text": "Here are the three main reasons why organizations struggle with the adoption of AI:"}, {"label": "list_item", "id": 19, "page_no": 13, "cluster": {"id": 19, "label": "list_item", "bbox": {"l": 135.8061065673828, "t": 672.6024780273438, "r": 293.9800720214844, "b": 682.9390869140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9561625123023987, "cells": [{"id": 43, "text": "GLYPH", "bbox": {"l": 136.8, "t": 673.69759, "r": 141.78, "b": 682.47234, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Scaling with growing regulations", "bbox": {"l": 151.20016, "t": 673.54818, "r": 293.96283, "b": 682.76118, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Scaling with growing regulations"}, {"label": "list_item", "id": 20, "page_no": 13, "cluster": {"id": 20, "label": "list_item", "bbox": {"l": 135.63792419433594, "t": 689.974609375, "r": 435.72745, "b": 700.486083984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9557024240493774, "cells": [{"id": 45, "text": "GLYPH", "bbox": {"l": 136.8, "t": 690.6774, "r": 141.78, "b": 699.4521560000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Lack of confidence in operationalized AI (making responsible AI)", "bbox": {"l": 151.20016, "t": 690.52799, "r": 435.72745, "b": 699.740997, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Lack of confidence in operationalized AI (making responsible AI)"}, {"label": "list_item", "id": 21, "page_no": 13, "cluster": {"id": 21, "label": "list_item", "bbox": {"l": 135.60543823242188, "t": 706.6790161132812, "r": 466.06842041015625, "b": 717.1160888671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9607930183410645, "cells": [{"id": 47, "text": "GLYPH", "bbox": {"l": 136.8, "t": 707.657211, "r": 141.78, "b": 716.431969, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "Challenges around managing the risk throughout the entire AI workflow", "bbox": {"l": 151.20016, "t": 707.507805, "r": 465.6782799999999, "b": 716.72081, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Challenges around managing the risk throughout the entire AI workflow"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 13, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.53218078613281, "t": 754.509033203125, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9160951375961304, "cells": [{"id": 0, "text": "12 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "12"}, {"label": "page_footer", "id": 1, "page_no": 13, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.2241439819336, "t": 754.7615356445312, "r": 267.0744, "b": 764.1396484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9570255279541016, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}]}}, {"page_no": 14, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "13", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Scaling with growing regulations", "bbox": {"l": 136.8, "t": 71.36395000000005, "r": 324.71161, "b": 82.46398999999997, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Laws and regulations in the data and AI space are accelerating, and many countries are ", "bbox": {"l": 136.8, "t": 86.50867000000005, "r": 528.54681, "b": 95.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "proposing strict AI policies. Countries are monitoring adherence of these policies by the ", "bbox": {"l": 136.8, "t": 98.50847999999996, "r": 525.13123, "b": 107.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "enterprises and imposing fines for any violations. Responding to these regulations are ", "bbox": {"l": 136.8, "t": 110.50829999999996, "r": 519.0838, "b": 119.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "challenging global organizations where multiple regulations apply. For enterprises, it is ", "bbox": {"l": 136.8, "t": 122.50811999999996, "r": 520.57288, "b": 131.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "important to adopt AI policies when there is change, and to validate explainable models to ", "bbox": {"l": 136.8, "t": 134.50793, "r": 536.31555, "b": 143.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "protect against discrimination.", "bbox": {"l": 136.8, "t": 146.50775, "r": 269.03491, "b": 155.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Responsible AI", "bbox": {"l": 136.8, "t": 172.40399000000002, "r": 223.38721, "b": 183.50402999999994, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Responsible AI protects against loss of data privacy, and reduced customer loyalty and trust. ", "bbox": {"l": 136.8, "t": 187.48870999999997, "r": 547.32831, "b": 196.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "A data scientist cannot maximize accuracy and model performance above all other concerns. ", "bbox": {"l": 136.8, "t": 199.48852999999997, "r": 547.25458, "b": 208.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Practicing responsible AI is a best practice, and you must establish protection and validation ", "bbox": {"l": 136.79999, "t": 211.48834, "r": 546.10297, "b": 220.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "to ensure that any models that are placed into production are fair and explainable.", "bbox": {"l": 136.79999, "t": 223.48816, "r": 498.54129, "b": 232.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Risks throughout the entire AI workflow", "bbox": {"l": 136.8, "t": 249.38396999999998, "r": 364.06561, "b": 260.48401, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Organizations need to mitigate risk of the following items:", "bbox": {"l": 136.8, "t": 264.52855999999997, "r": 389.47919, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 281.65777999999995, "r": 141.78, "b": 290.43256, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Deciding not to use certain technologies or practices", "bbox": {"l": 151.20016, "t": 281.50839, "r": 382.91455, "b": 290.72137, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "GLYPH", "bbox": {"l": 136.8, "t": 298.63757, "r": 141.78, "b": 307.41235, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Using personal information when needed and with a user\u2019s consent ", "bbox": {"l": 151.20016, "t": 298.48819, "r": 450.99023, "b": 307.70117, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "GLYPH", "bbox": {"l": 136.8, "t": 315.67715, "r": 141.78, "b": 324.45193000000006, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Ensuring automated decisions are free from bias", "bbox": {"l": 151.20016, "t": 315.5277699999999, "r": 366.21268, "b": 324.74075, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "GLYPH", "bbox": {"l": 136.8, "t": 332.65695000000005, "r": 141.78, "b": 341.43172999999996, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Customer confidence by providing explanations for business decisions", "bbox": {"l": 151.20016, "t": 332.50757, "r": 462.31461, "b": 341.72055, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 349.63674999999995, "r": 141.77998, "b": 358.41153, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Fraud to the organization and to customer\u2019s accounts", "bbox": {"l": 151.20015, "t": 349.48737, "r": 386.45636, "b": 358.70035000000007, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 366.67633, "r": 141.77998, "b": 375.45111, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Delays in putting models into production ", "bbox": {"l": 151.20015, "t": 366.52695, "r": 331.24911, "b": 375.73993, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "In fact, in a recent survey, these concerns were echoed by real AI adopters when asked what ", "bbox": {"l": 136.79999, "t": 388.48676, "r": 547.18677, "b": 397.6997400000001, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "aspects of trust are most important to them. Although explaining how AI decides is the ", "bbox": {"l": 136.79999, "t": 400.48657, "r": 519.48199, "b": 409.69955, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "primary concern, all of these concerns are important. ", "bbox": {"l": 136.79999, "t": 412.48639, "r": 372.96661, "b": 421.69937, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "The key point here is that risk exists throughout the entire AI lifecycle starting with the ", "bbox": {"l": 136.79999, "t": 434.5059499999999, "r": 516.63068, "b": 443.71893, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "underlying data and the business justification behind the \u201cwhy\u201d of the project and continuing ", "bbox": {"l": 136.79999, "t": 446.50577000000004, "r": 543.4837, "b": 455.71875, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "into production. Without a formalized process, there is no way to mitigate these risks to unlock ", "bbox": {"l": 136.79999, "t": 458.50558, "r": 547.24658, "b": 467.71857, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "the scale that is required to make automated decisions profitable. With these decisions, the ", "bbox": {"l": 136.79999, "t": 470.5054, "r": 541.69409, "b": 479.71838, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "business can operate proactively instead of reactively. ", "bbox": {"l": 136.79999, "t": 482.50522, "r": 378.89471, "b": 491.7182, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 535.9011840820312, "t": 754.3621215820312, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.915951669216156, "cells": [{"id": 0, "text": "13", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "section_header", "bbox": {"l": 136.29180908203125, "t": 70.39407348632812, "r": 324.71161, "b": 82.81320190429688, "coord_origin": "TOPLEFT"}, "confidence": 0.9631897211074829, "cells": [{"id": 1, "text": "Scaling with growing regulations", "bbox": {"l": 136.8, "t": 71.36395000000005, "r": 324.71161, "b": 82.46398999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.92501831054688, "t": 85.20021057128906, "r": 536.31555, "b": 155.72076000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.988149106502533, "cells": [{"id": 2, "text": "Laws and regulations in the data and AI space are accelerating, and many countries are ", "bbox": {"l": 136.8, "t": 86.50867000000005, "r": 528.54681, "b": 95.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "proposing strict AI policies. Countries are monitoring adherence of these policies by the ", "bbox": {"l": 136.8, "t": 98.50847999999996, "r": 525.13123, "b": 107.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "enterprises and imposing fines for any violations. Responding to these regulations are ", "bbox": {"l": 136.8, "t": 110.50829999999996, "r": 519.0838, "b": 119.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "challenging global organizations where multiple regulations apply. For enterprises, it is ", "bbox": {"l": 136.8, "t": 122.50811999999996, "r": 520.57288, "b": 131.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "important to adopt AI policies when there is change, and to validate explainable models to ", "bbox": {"l": 136.8, "t": 134.50793, "r": 536.31555, "b": 143.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "protect against discrimination.", "bbox": {"l": 136.8, "t": 146.50775, "r": 269.03491, "b": 155.72076000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "section_header", "bbox": {"l": 136.52218627929688, "t": 171.78952026367188, "r": 223.41616821289062, "b": 183.66505432128906, "coord_origin": "TOPLEFT"}, "confidence": 0.9572980999946594, "cells": [{"id": 8, "text": "Responsible AI", "bbox": {"l": 136.8, "t": 172.40399000000002, "r": 223.38721, "b": 183.50402999999994, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.9759521484375, "t": 186.67660522460938, "r": 547.32831, "b": 233.0913543701172, "coord_origin": "TOPLEFT"}, "confidence": 0.9755564332008362, "cells": [{"id": 9, "text": "Responsible AI protects against loss of data privacy, and reduced customer loyalty and trust. ", "bbox": {"l": 136.8, "t": 187.48870999999997, "r": 547.32831, "b": 196.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "A data scientist cannot maximize accuracy and model performance above all other concerns. ", "bbox": {"l": 136.8, "t": 199.48852999999997, "r": 547.25458, "b": 208.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Practicing responsible AI is a best practice, and you must establish protection and validation ", "bbox": {"l": 136.79999, "t": 211.48834, "r": 546.10297, "b": 220.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "to ensure that any models that are placed into production are fair and explainable.", "bbox": {"l": 136.79999, "t": 223.48816, "r": 498.54129, "b": 232.70117000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "section_header", "bbox": {"l": 136.5354461669922, "t": 248.45245361328125, "r": 364.06561, "b": 260.55926513671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9580543637275696, "cells": [{"id": 13, "text": "Risks throughout the entire AI workflow", "bbox": {"l": 136.8, "t": 249.38396999999998, "r": 364.06561, "b": 260.48401, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 136.28106689453125, "t": 263.99212646484375, "r": 389.47919, "b": 274.5697326660156, "coord_origin": "TOPLEFT"}, "confidence": 0.9462679028511047, "cells": [{"id": 14, "text": "Organizations need to mitigate risk of the following items:", "bbox": {"l": 136.8, "t": 264.52855999999997, "r": 389.47919, "b": 273.74158, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.77525329589844, "t": 280.7226257324219, "r": 382.91455, "b": 290.9065246582031, "coord_origin": "TOPLEFT"}, "confidence": 0.9557760953903198, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 281.65777999999995, "r": 141.78, "b": 290.43256, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Deciding not to use certain technologies or practices", "bbox": {"l": 151.20016, "t": 281.50839, "r": 382.91455, "b": 290.72137, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.74273681640625, "t": 297.4331359863281, "r": 450.99023, "b": 308.05767822265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9605316519737244, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.8, "t": 298.63757, "r": 141.78, "b": 307.41235, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Using personal information when needed and with a user\u2019s consent ", "bbox": {"l": 151.20016, "t": 298.48819, "r": 450.99023, "b": 307.70117, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.5438995361328, "t": 314.5897521972656, "r": 366.21268, "b": 324.8603515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9523881077766418, "cells": [{"id": 19, "text": "GLYPH", "bbox": {"l": 136.8, "t": 315.67715, "r": 141.78, "b": 324.45193000000006, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Ensuring automated decisions are free from bias", "bbox": {"l": 151.20016, "t": 315.5277699999999, "r": 366.21268, "b": 324.74075, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 135.47459411621094, "t": 331.47955322265625, "r": 462.31461, "b": 341.72055, "coord_origin": "TOPLEFT"}, "confidence": 0.9583740830421448, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.8, "t": 332.65695000000005, "r": 141.78, "b": 341.43172999999996, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Customer confidence by providing explanations for business decisions", "bbox": {"l": 151.20016, "t": 332.50757, "r": 462.31461, "b": 341.72055, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 135.48123168945312, "t": 348.7354736328125, "r": 386.45636, "b": 358.875, "coord_origin": "TOPLEFT"}, "confidence": 0.9537600874900818, "cells": [{"id": 23, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 349.63674999999995, "r": 141.77998, "b": 358.41153, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Fraud to the organization and to customer\u2019s accounts", "bbox": {"l": 151.20015, "t": 349.48737, "r": 386.45636, "b": 358.70035000000007, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "list_item", "bbox": {"l": 135.62051391601562, "t": 366.0385437011719, "r": 331.24911, "b": 376.2076721191406, "coord_origin": "TOPLEFT"}, "confidence": 0.9608153700828552, "cells": [{"id": 25, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 366.67633, "r": 141.77998, "b": 375.45111, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Delays in putting models into production ", "bbox": {"l": 151.20015, "t": 366.52695, "r": 331.24911, "b": 375.73993, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 136.05039978027344, "t": 387.55609130859375, "r": 547.18677, "b": 421.69937, "coord_origin": "TOPLEFT"}, "confidence": 0.9833502769470215, "cells": [{"id": 27, "text": "In fact, in a recent survey, these concerns were echoed by real AI adopters when asked what ", "bbox": {"l": 136.79999, "t": 388.48676, "r": 547.18677, "b": 397.6997400000001, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "aspects of trust are most important to them. Although explaining how AI decides is the ", "bbox": {"l": 136.79999, "t": 400.48657, "r": 519.48199, "b": 409.69955, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "primary concern, all of these concerns are important. ", "bbox": {"l": 136.79999, "t": 412.48639, "r": 372.96661, "b": 421.69937, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "text", "bbox": {"l": 135.85047912597656, "t": 433.4964294433594, "r": 547.24658, "b": 491.7182, "coord_origin": "TOPLEFT"}, "confidence": 0.9875410199165344, "cells": [{"id": 30, "text": "The key point here is that risk exists throughout the entire AI lifecycle starting with the ", "bbox": {"l": 136.79999, "t": 434.5059499999999, "r": 516.63068, "b": 443.71893, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "underlying data and the business justification behind the \u201cwhy\u201d of the project and continuing ", "bbox": {"l": 136.79999, "t": 446.50577000000004, "r": 543.4837, "b": 455.71875, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "into production. Without a formalized process, there is no way to mitigate these risks to unlock ", "bbox": {"l": 136.79999, "t": 458.50558, "r": 547.24658, "b": 467.71857, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "the scale that is required to make automated decisions profitable. With these decisions, the ", "bbox": {"l": 136.79999, "t": 470.5054, "r": 541.69409, "b": 479.71838, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "business can operate proactively instead of reactively. ", "bbox": {"l": 136.79999, "t": 482.50522, "r": 378.89471, "b": 491.7182, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 14, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 535.9011840820312, "t": 754.3621215820312, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.915951669216156, "cells": [{"id": 0, "text": "13", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "13"}, {"label": "section_header", "id": 1, "page_no": 14, "cluster": {"id": 1, "label": "section_header", "bbox": {"l": 136.29180908203125, "t": 70.39407348632812, "r": 324.71161, "b": 82.81320190429688, "coord_origin": "TOPLEFT"}, "confidence": 0.9631897211074829, "cells": [{"id": 1, "text": "Scaling with growing regulations", "bbox": {"l": 136.8, "t": 71.36395000000005, "r": 324.71161, "b": 82.46398999999997, "coord_origin": "TOPLEFT"}}]}, "text": "Scaling with growing regulations"}, {"label": "text", "id": 2, "page_no": 14, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.92501831054688, "t": 85.20021057128906, "r": 536.31555, "b": 155.72076000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.988149106502533, "cells": [{"id": 2, "text": "Laws and regulations in the data and AI space are accelerating, and many countries are ", "bbox": {"l": 136.8, "t": 86.50867000000005, "r": 528.54681, "b": 95.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "proposing strict AI policies. Countries are monitoring adherence of these policies by the ", "bbox": {"l": 136.8, "t": 98.50847999999996, "r": 525.13123, "b": 107.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "enterprises and imposing fines for any violations. Responding to these regulations are ", "bbox": {"l": 136.8, "t": 110.50829999999996, "r": 519.0838, "b": 119.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "challenging global organizations where multiple regulations apply. For enterprises, it is ", "bbox": {"l": 136.8, "t": 122.50811999999996, "r": 520.57288, "b": 131.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "important to adopt AI policies when there is change, and to validate explainable models to ", "bbox": {"l": 136.8, "t": 134.50793, "r": 536.31555, "b": 143.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "protect against discrimination.", "bbox": {"l": 136.8, "t": 146.50775, "r": 269.03491, "b": 155.72076000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Laws and regulations in the data and AI space are accelerating, and many countries are proposing strict AI policies. Countries are monitoring adherence of these policies by the enterprises and imposing fines for any violations. Responding to these regulations are challenging global organizations where multiple regulations apply. For enterprises, it is important to adopt AI policies when there is change, and to validate explainable models to protect against discrimination."}, {"label": "section_header", "id": 3, "page_no": 14, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 136.52218627929688, "t": 171.78952026367188, "r": 223.41616821289062, "b": 183.66505432128906, "coord_origin": "TOPLEFT"}, "confidence": 0.9572980999946594, "cells": [{"id": 8, "text": "Responsible AI", "bbox": {"l": 136.8, "t": 172.40399000000002, "r": 223.38721, "b": 183.50402999999994, "coord_origin": "TOPLEFT"}}]}, "text": "Responsible AI"}, {"label": "text", "id": 4, "page_no": 14, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.9759521484375, "t": 186.67660522460938, "r": 547.32831, "b": 233.0913543701172, "coord_origin": "TOPLEFT"}, "confidence": 0.9755564332008362, "cells": [{"id": 9, "text": "Responsible AI protects against loss of data privacy, and reduced customer loyalty and trust. ", "bbox": {"l": 136.8, "t": 187.48870999999997, "r": 547.32831, "b": 196.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "A data scientist cannot maximize accuracy and model performance above all other concerns. ", "bbox": {"l": 136.8, "t": 199.48852999999997, "r": 547.25458, "b": 208.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Practicing responsible AI is a best practice, and you must establish protection and validation ", "bbox": {"l": 136.79999, "t": 211.48834, "r": 546.10297, "b": 220.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "to ensure that any models that are placed into production are fair and explainable.", "bbox": {"l": 136.79999, "t": 223.48816, "r": 498.54129, "b": 232.70117000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Responsible AI protects against loss of data privacy, and reduced customer loyalty and trust. A data scientist cannot maximize accuracy and model performance above all other concerns. Practicing responsible AI is a best practice, and you must establish protection and validation to ensure that any models that are placed into production are fair and explainable."}, {"label": "section_header", "id": 5, "page_no": 14, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 136.5354461669922, "t": 248.45245361328125, "r": 364.06561, "b": 260.55926513671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9580543637275696, "cells": [{"id": 13, "text": "Risks throughout the entire AI workflow", "bbox": {"l": 136.8, "t": 249.38396999999998, "r": 364.06561, "b": 260.48401, "coord_origin": "TOPLEFT"}}]}, "text": "Risks throughout the entire AI workflow"}, {"label": "text", "id": 6, "page_no": 14, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.28106689453125, "t": 263.99212646484375, "r": 389.47919, "b": 274.5697326660156, "coord_origin": "TOPLEFT"}, "confidence": 0.9462679028511047, "cells": [{"id": 14, "text": "Organizations need to mitigate risk of the following items:", "bbox": {"l": 136.8, "t": 264.52855999999997, "r": 389.47919, "b": 273.74158, "coord_origin": "TOPLEFT"}}]}, "text": "Organizations need to mitigate risk of the following items:"}, {"label": "list_item", "id": 7, "page_no": 14, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.77525329589844, "t": 280.7226257324219, "r": 382.91455, "b": 290.9065246582031, "coord_origin": "TOPLEFT"}, "confidence": 0.9557760953903198, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 281.65777999999995, "r": 141.78, "b": 290.43256, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Deciding not to use certain technologies or practices", "bbox": {"l": 151.20016, "t": 281.50839, "r": 382.91455, "b": 290.72137, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Deciding not to use certain technologies or practices"}, {"label": "list_item", "id": 8, "page_no": 14, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.74273681640625, "t": 297.4331359863281, "r": 450.99023, "b": 308.05767822265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9605316519737244, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.8, "t": 298.63757, "r": 141.78, "b": 307.41235, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Using personal information when needed and with a user\u2019s consent ", "bbox": {"l": 151.20016, "t": 298.48819, "r": 450.99023, "b": 307.70117, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Using personal information when needed and with a user\u2019s consent"}, {"label": "list_item", "id": 9, "page_no": 14, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.5438995361328, "t": 314.5897521972656, "r": 366.21268, "b": 324.8603515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9523881077766418, "cells": [{"id": 19, "text": "GLYPH", "bbox": {"l": 136.8, "t": 315.67715, "r": 141.78, "b": 324.45193000000006, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Ensuring automated decisions are free from bias", "bbox": {"l": 151.20016, "t": 315.5277699999999, "r": 366.21268, "b": 324.74075, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Ensuring automated decisions are free from bias"}, {"label": "list_item", "id": 10, "page_no": 14, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.47459411621094, "t": 331.47955322265625, "r": 462.31461, "b": 341.72055, "coord_origin": "TOPLEFT"}, "confidence": 0.9583740830421448, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.8, "t": 332.65695000000005, "r": 141.78, "b": 341.43172999999996, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Customer confidence by providing explanations for business decisions", "bbox": {"l": 151.20016, "t": 332.50757, "r": 462.31461, "b": 341.72055, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Customer confidence by providing explanations for business decisions"}, {"label": "list_item", "id": 11, "page_no": 14, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.48123168945312, "t": 348.7354736328125, "r": 386.45636, "b": 358.875, "coord_origin": "TOPLEFT"}, "confidence": 0.9537600874900818, "cells": [{"id": 23, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 349.63674999999995, "r": 141.77998, "b": 358.41153, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Fraud to the organization and to customer\u2019s accounts", "bbox": {"l": 151.20015, "t": 349.48737, "r": 386.45636, "b": 358.70035000000007, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Fraud to the organization and to customer\u2019s accounts"}, {"label": "list_item", "id": 12, "page_no": 14, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 135.62051391601562, "t": 366.0385437011719, "r": 331.24911, "b": 376.2076721191406, "coord_origin": "TOPLEFT"}, "confidence": 0.9608153700828552, "cells": [{"id": 25, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 366.67633, "r": 141.77998, "b": 375.45111, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Delays in putting models into production ", "bbox": {"l": 151.20015, "t": 366.52695, "r": 331.24911, "b": 375.73993, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Delays in putting models into production"}, {"label": "text", "id": 13, "page_no": 14, "cluster": {"id": 13, "label": "text", "bbox": {"l": 136.05039978027344, "t": 387.55609130859375, "r": 547.18677, "b": 421.69937, "coord_origin": "TOPLEFT"}, "confidence": 0.9833502769470215, "cells": [{"id": 27, "text": "In fact, in a recent survey, these concerns were echoed by real AI adopters when asked what ", "bbox": {"l": 136.79999, "t": 388.48676, "r": 547.18677, "b": 397.6997400000001, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "aspects of trust are most important to them. Although explaining how AI decides is the ", "bbox": {"l": 136.79999, "t": 400.48657, "r": 519.48199, "b": 409.69955, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "primary concern, all of these concerns are important. ", "bbox": {"l": 136.79999, "t": 412.48639, "r": 372.96661, "b": 421.69937, "coord_origin": "TOPLEFT"}}]}, "text": "In fact, in a recent survey, these concerns were echoed by real AI adopters when asked what aspects of trust are most important to them. Although explaining how AI decides is the primary concern, all of these concerns are important."}, {"label": "text", "id": 14, "page_no": 14, "cluster": {"id": 14, "label": "text", "bbox": {"l": 135.85047912597656, "t": 433.4964294433594, "r": 547.24658, "b": 491.7182, "coord_origin": "TOPLEFT"}, "confidence": 0.9875410199165344, "cells": [{"id": 30, "text": "The key point here is that risk exists throughout the entire AI lifecycle starting with the ", "bbox": {"l": 136.79999, "t": 434.5059499999999, "r": 516.63068, "b": 443.71893, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "underlying data and the business justification behind the \u201cwhy\u201d of the project and continuing ", "bbox": {"l": 136.79999, "t": 446.50577000000004, "r": 543.4837, "b": 455.71875, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "into production. Without a formalized process, there is no way to mitigate these risks to unlock ", "bbox": {"l": 136.79999, "t": 458.50558, "r": 547.24658, "b": 467.71857, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "the scale that is required to make automated decisions profitable. With these decisions, the ", "bbox": {"l": 136.79999, "t": 470.5054, "r": 541.69409, "b": 479.71838, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "business can operate proactively instead of reactively. ", "bbox": {"l": 136.79999, "t": 482.50522, "r": 378.89471, "b": 491.7182, "coord_origin": "TOPLEFT"}}]}, "text": "The key point here is that risk exists throughout the entire AI lifecycle starting with the underlying data and the business justification behind the \u201cwhy\u201d of the project and continuing into production. Without a formalized process, there is no way to mitigate these risks to unlock the scale that is required to make automated decisions profitable. With these decisions, the business can operate proactively instead of reactively."}], "body": [{"label": "section_header", "id": 1, "page_no": 14, "cluster": {"id": 1, "label": "section_header", "bbox": {"l": 136.29180908203125, "t": 70.39407348632812, "r": 324.71161, "b": 82.81320190429688, "coord_origin": "TOPLEFT"}, "confidence": 0.9631897211074829, "cells": [{"id": 1, "text": "Scaling with growing regulations", "bbox": {"l": 136.8, "t": 71.36395000000005, "r": 324.71161, "b": 82.46398999999997, "coord_origin": "TOPLEFT"}}]}, "text": "Scaling with growing regulations"}, {"label": "text", "id": 2, "page_no": 14, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.92501831054688, "t": 85.20021057128906, "r": 536.31555, "b": 155.72076000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.988149106502533, "cells": [{"id": 2, "text": "Laws and regulations in the data and AI space are accelerating, and many countries are ", "bbox": {"l": 136.8, "t": 86.50867000000005, "r": 528.54681, "b": 95.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "proposing strict AI policies. Countries are monitoring adherence of these policies by the ", "bbox": {"l": 136.8, "t": 98.50847999999996, "r": 525.13123, "b": 107.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "enterprises and imposing fines for any violations. Responding to these regulations are ", "bbox": {"l": 136.8, "t": 110.50829999999996, "r": 519.0838, "b": 119.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "challenging global organizations where multiple regulations apply. For enterprises, it is ", "bbox": {"l": 136.8, "t": 122.50811999999996, "r": 520.57288, "b": 131.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "important to adopt AI policies when there is change, and to validate explainable models to ", "bbox": {"l": 136.8, "t": 134.50793, "r": 536.31555, "b": 143.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "protect against discrimination.", "bbox": {"l": 136.8, "t": 146.50775, "r": 269.03491, "b": 155.72076000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Laws and regulations in the data and AI space are accelerating, and many countries are proposing strict AI policies. Countries are monitoring adherence of these policies by the enterprises and imposing fines for any violations. Responding to these regulations are challenging global organizations where multiple regulations apply. For enterprises, it is important to adopt AI policies when there is change, and to validate explainable models to protect against discrimination."}, {"label": "section_header", "id": 3, "page_no": 14, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 136.52218627929688, "t": 171.78952026367188, "r": 223.41616821289062, "b": 183.66505432128906, "coord_origin": "TOPLEFT"}, "confidence": 0.9572980999946594, "cells": [{"id": 8, "text": "Responsible AI", "bbox": {"l": 136.8, "t": 172.40399000000002, "r": 223.38721, "b": 183.50402999999994, "coord_origin": "TOPLEFT"}}]}, "text": "Responsible AI"}, {"label": "text", "id": 4, "page_no": 14, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.9759521484375, "t": 186.67660522460938, "r": 547.32831, "b": 233.0913543701172, "coord_origin": "TOPLEFT"}, "confidence": 0.9755564332008362, "cells": [{"id": 9, "text": "Responsible AI protects against loss of data privacy, and reduced customer loyalty and trust. ", "bbox": {"l": 136.8, "t": 187.48870999999997, "r": 547.32831, "b": 196.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "A data scientist cannot maximize accuracy and model performance above all other concerns. ", "bbox": {"l": 136.8, "t": 199.48852999999997, "r": 547.25458, "b": 208.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Practicing responsible AI is a best practice, and you must establish protection and validation ", "bbox": {"l": 136.79999, "t": 211.48834, "r": 546.10297, "b": 220.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "to ensure that any models that are placed into production are fair and explainable.", "bbox": {"l": 136.79999, "t": 223.48816, "r": 498.54129, "b": 232.70117000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Responsible AI protects against loss of data privacy, and reduced customer loyalty and trust. A data scientist cannot maximize accuracy and model performance above all other concerns. Practicing responsible AI is a best practice, and you must establish protection and validation to ensure that any models that are placed into production are fair and explainable."}, {"label": "section_header", "id": 5, "page_no": 14, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 136.5354461669922, "t": 248.45245361328125, "r": 364.06561, "b": 260.55926513671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9580543637275696, "cells": [{"id": 13, "text": "Risks throughout the entire AI workflow", "bbox": {"l": 136.8, "t": 249.38396999999998, "r": 364.06561, "b": 260.48401, "coord_origin": "TOPLEFT"}}]}, "text": "Risks throughout the entire AI workflow"}, {"label": "text", "id": 6, "page_no": 14, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.28106689453125, "t": 263.99212646484375, "r": 389.47919, "b": 274.5697326660156, "coord_origin": "TOPLEFT"}, "confidence": 0.9462679028511047, "cells": [{"id": 14, "text": "Organizations need to mitigate risk of the following items:", "bbox": {"l": 136.8, "t": 264.52855999999997, "r": 389.47919, "b": 273.74158, "coord_origin": "TOPLEFT"}}]}, "text": "Organizations need to mitigate risk of the following items:"}, {"label": "list_item", "id": 7, "page_no": 14, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.77525329589844, "t": 280.7226257324219, "r": 382.91455, "b": 290.9065246582031, "coord_origin": "TOPLEFT"}, "confidence": 0.9557760953903198, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 281.65777999999995, "r": 141.78, "b": 290.43256, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Deciding not to use certain technologies or practices", "bbox": {"l": 151.20016, "t": 281.50839, "r": 382.91455, "b": 290.72137, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Deciding not to use certain technologies or practices"}, {"label": "list_item", "id": 8, "page_no": 14, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.74273681640625, "t": 297.4331359863281, "r": 450.99023, "b": 308.05767822265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9605316519737244, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.8, "t": 298.63757, "r": 141.78, "b": 307.41235, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Using personal information when needed and with a user\u2019s consent ", "bbox": {"l": 151.20016, "t": 298.48819, "r": 450.99023, "b": 307.70117, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Using personal information when needed and with a user\u2019s consent"}, {"label": "list_item", "id": 9, "page_no": 14, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.5438995361328, "t": 314.5897521972656, "r": 366.21268, "b": 324.8603515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9523881077766418, "cells": [{"id": 19, "text": "GLYPH", "bbox": {"l": 136.8, "t": 315.67715, "r": 141.78, "b": 324.45193000000006, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Ensuring automated decisions are free from bias", "bbox": {"l": 151.20016, "t": 315.5277699999999, "r": 366.21268, "b": 324.74075, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Ensuring automated decisions are free from bias"}, {"label": "list_item", "id": 10, "page_no": 14, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.47459411621094, "t": 331.47955322265625, "r": 462.31461, "b": 341.72055, "coord_origin": "TOPLEFT"}, "confidence": 0.9583740830421448, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.8, "t": 332.65695000000005, "r": 141.78, "b": 341.43172999999996, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Customer confidence by providing explanations for business decisions", "bbox": {"l": 151.20016, "t": 332.50757, "r": 462.31461, "b": 341.72055, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Customer confidence by providing explanations for business decisions"}, {"label": "list_item", "id": 11, "page_no": 14, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.48123168945312, "t": 348.7354736328125, "r": 386.45636, "b": 358.875, "coord_origin": "TOPLEFT"}, "confidence": 0.9537600874900818, "cells": [{"id": 23, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 349.63674999999995, "r": 141.77998, "b": 358.41153, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Fraud to the organization and to customer\u2019s accounts", "bbox": {"l": 151.20015, "t": 349.48737, "r": 386.45636, "b": 358.70035000000007, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Fraud to the organization and to customer\u2019s accounts"}, {"label": "list_item", "id": 12, "page_no": 14, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 135.62051391601562, "t": 366.0385437011719, "r": 331.24911, "b": 376.2076721191406, "coord_origin": "TOPLEFT"}, "confidence": 0.9608153700828552, "cells": [{"id": 25, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 366.67633, "r": 141.77998, "b": 375.45111, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Delays in putting models into production ", "bbox": {"l": 151.20015, "t": 366.52695, "r": 331.24911, "b": 375.73993, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Delays in putting models into production"}, {"label": "text", "id": 13, "page_no": 14, "cluster": {"id": 13, "label": "text", "bbox": {"l": 136.05039978027344, "t": 387.55609130859375, "r": 547.18677, "b": 421.69937, "coord_origin": "TOPLEFT"}, "confidence": 0.9833502769470215, "cells": [{"id": 27, "text": "In fact, in a recent survey, these concerns were echoed by real AI adopters when asked what ", "bbox": {"l": 136.79999, "t": 388.48676, "r": 547.18677, "b": 397.6997400000001, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "aspects of trust are most important to them. Although explaining how AI decides is the ", "bbox": {"l": 136.79999, "t": 400.48657, "r": 519.48199, "b": 409.69955, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "primary concern, all of these concerns are important. ", "bbox": {"l": 136.79999, "t": 412.48639, "r": 372.96661, "b": 421.69937, "coord_origin": "TOPLEFT"}}]}, "text": "In fact, in a recent survey, these concerns were echoed by real AI adopters when asked what aspects of trust are most important to them. Although explaining how AI decides is the primary concern, all of these concerns are important."}, {"label": "text", "id": 14, "page_no": 14, "cluster": {"id": 14, "label": "text", "bbox": {"l": 135.85047912597656, "t": 433.4964294433594, "r": 547.24658, "b": 491.7182, "coord_origin": "TOPLEFT"}, "confidence": 0.9875410199165344, "cells": [{"id": 30, "text": "The key point here is that risk exists throughout the entire AI lifecycle starting with the ", "bbox": {"l": 136.79999, "t": 434.5059499999999, "r": 516.63068, "b": 443.71893, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "underlying data and the business justification behind the \u201cwhy\u201d of the project and continuing ", "bbox": {"l": 136.79999, "t": 446.50577000000004, "r": 543.4837, "b": 455.71875, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "into production. Without a formalized process, there is no way to mitigate these risks to unlock ", "bbox": {"l": 136.79999, "t": 458.50558, "r": 547.24658, "b": 467.71857, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "the scale that is required to make automated decisions profitable. With these decisions, the ", "bbox": {"l": 136.79999, "t": 470.5054, "r": 541.69409, "b": 479.71838, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "business can operate proactively instead of reactively. ", "bbox": {"l": 136.79999, "t": 482.50522, "r": 378.89471, "b": 491.7182, "coord_origin": "TOPLEFT"}}]}, "text": "The key point here is that risk exists throughout the entire AI lifecycle starting with the underlying data and the business justification behind the \u201cwhy\u201d of the project and continuing into production. Without a formalized process, there is no way to mitigate these risks to unlock the scale that is required to make automated decisions profitable. With these decisions, the business can operate proactively instead of reactively."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 14, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 535.9011840820312, "t": 754.3621215820312, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.915951669216156, "cells": [{"id": 0, "text": "13", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "13"}]}}, {"page_no": 15, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "14 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "For example, a business can start testing a model before production for fairness metrics. For ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 547.12024, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "this task, enterprises need an end-to-end workflow with approvals to mitigate these risks and ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 547.30731, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "increase the scale of AI investments, as shown in Figure 8, which presents a typical AI model ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 547.28247, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "lifecycle in an enterprise. ", "bbox": {"l": 136.8, "t": 107.50811999999996, "r": 249.57208, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Figure 8 Typical AI model lifecycle", "bbox": {"l": 64.800003, "t": 333.0779999999999, "r": 206.07208, "b": 341.40302, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Due to regulations, more stakeholders adopt the typical AI model lifecycle to protect their ", "bbox": {"l": 136.8, "t": 355.00872999999996, "r": 531.15924, "b": 364.22171, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "brand from new end-to-end risks. To ensure various aspects of both regulatory compliance ", "bbox": {"l": 136.80002, "t": 367.00854, "r": 540.12024, "b": 376.22153, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "and security, the personas that must be involved include the chief financial officer (CFO), ", "bbox": {"l": 136.80002, "t": 379.00836, "r": 531.84265, "b": 388.22134, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "chief marketing officer (CMO), chief data officer (CDO), HR, and chief regulatory officer ", "bbox": {"l": 136.80002, "t": 391.0081799999999, "r": 523.93213, "b": 400.22116, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "(CRO), along with the data engineers, data scientists, and business analysts, who build AI ", "bbox": {"l": 136.80002, "t": 403.00800000000004, "r": 537.40796, "b": 412.22098, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "workflows. ", "bbox": {"l": 136.80002, "t": 415.00781, "r": 186.17273, "b": 424.2207900000001, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "IBM governance solution for IBM Z", "bbox": {"l": 64.800003, "t": 444.89474, "r": 279.09619, "b": 456.88272, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "AI model lifecycle governance, risk management, and regulatory compliance are key to the ", "bbox": {"l": 136.8, "t": 471.04874, "r": 540.66016, "b": 480.26172, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "success of enterprises.", "bbox": {"l": 136.8, "t": 483.04855, "r": 238.91193000000004, "b": 492.26154, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "AI governance is a comprehensive framework that uses a set of automated processes, ", "bbox": {"l": 136.8, "t": 505.00836, "r": 522.28375, "b": 514.22134, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "methodologies, and tools to manage an organization\u2019s use of AI. Consistent principles ", "bbox": {"l": 136.8, "t": 517.00818, "r": 518.83173, "b": 526.22116, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "guiding the design, development, deployment, and monitoring of models are critical in driving ", "bbox": {"l": 136.8, "t": 529.00797, "r": 547.24677, "b": 538.22098, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "responsible and trustworthy AI. AI governance includes processes that trace and record the ", "bbox": {"l": 136.8, "t": 541.00778, "r": 543.55243, "b": 550.22078, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "origin of data, models (including associated metadata), and pipelines for audits. The details of ", "bbox": {"l": 136.8, "t": 553.00758, "r": 547.3551, "b": 562.22058, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "entry should include the techniques that trained each model, the hyperparameters that were ", "bbox": {"l": 136.8, "t": 565.00739, "r": 545.16895, "b": 574.22038, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "used, and the metrics from testing phases. These details provide increased transparency into ", "bbox": {"l": 136.8, "t": 577.00719, "r": 547.3075, "b": 586.22018, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "the model\u2019s behavior throughout the lifecycle, the data that was influential in its development, ", "bbox": {"l": 136.8, "t": 589.00699, "r": 547.27661, "b": 598.21999, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "and the possible risks.", "bbox": {"l": 136.8, "t": 601.00679, "r": 235.71976, "b": 610.21979, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "In a world where trust, transparency and explainable AI matters, every organization wants ", "bbox": {"l": 136.8, "t": 623.02635, "r": 535.70215, "b": 632.2393500000001, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "compliance along with the comfort of understanding how analytic insights and decisions are ", "bbox": {"l": 136.8, "t": 635.02615, "r": 543.35425, "b": 644.23915, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "made. The following sections describe some of the principles and organizational ", "bbox": {"l": 136.8, "t": 647.0259599999999, "r": 493.54346000000004, "b": 656.2389499999999, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "requirements for AI governance. ", "bbox": {"l": 136.8, "t": 659.02576, "r": 282.2887, "b": 668.23876, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.407470703125, "t": 754.3117065429688, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9113772511482239, "cells": [{"id": 0, "text": "14 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.1883316040039, "t": 754.7257080078125, "r": 267.0744, "b": 764.1552124023438, "coord_origin": "TOPLEFT"}, "confidence": 0.9578691720962524, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 136.13604736328125, "t": 70.62796020507812, "r": 547.30731, "b": 117.06792449951172, "coord_origin": "TOPLEFT"}, "confidence": 0.9846124053001404, "cells": [{"id": 2, "text": "For example, a business can start testing a model before production for fairness metrics. For ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 547.12024, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "this task, enterprises need an end-to-end workflow with approvals to mitigate these risks and ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 547.30731, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "increase the scale of AI investments, as shown in Figure 8, which presents a typical AI model ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 547.28247, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "lifecycle in an enterprise. ", "bbox": {"l": 136.8, "t": 107.50811999999996, "r": 249.57208, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.17765808105469, "t": 332.0653381347656, "r": 206.827880859375, "b": 341.4869689941406, "coord_origin": "TOPLEFT"}, "confidence": 0.952994704246521, "cells": [{"id": 6, "text": "Figure 8 Typical AI model lifecycle", "bbox": {"l": 64.800003, "t": 333.0779999999999, "r": 206.07208, "b": 341.40302, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.79885864257812, "t": 354.1422119140625, "r": 540.12024, "b": 424.2207900000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9863293766975403, "cells": [{"id": 7, "text": "Due to regulations, more stakeholders adopt the typical AI model lifecycle to protect their ", "bbox": {"l": 136.8, "t": 355.00872999999996, "r": 531.15924, "b": 364.22171, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "brand from new end-to-end risks. To ensure various aspects of both regulatory compliance ", "bbox": {"l": 136.80002, "t": 367.00854, "r": 540.12024, "b": 376.22153, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "and security, the personas that must be involved include the chief financial officer (CFO), ", "bbox": {"l": 136.80002, "t": 379.00836, "r": 531.84265, "b": 388.22134, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "chief marketing officer (CMO), chief data officer (CDO), HR, and chief regulatory officer ", "bbox": {"l": 136.80002, "t": 391.0081799999999, "r": 523.93213, "b": 400.22116, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "(CRO), along with the data engineers, data scientists, and business analysts, who build AI ", "bbox": {"l": 136.80002, "t": 403.00800000000004, "r": 537.40796, "b": 412.22098, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "workflows. ", "bbox": {"l": 136.80002, "t": 415.00781, "r": 186.17273, "b": 424.2207900000001, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "section_header", "bbox": {"l": 64.70143127441406, "t": 443.571044921875, "r": 279.45147705078125, "b": 456.88272, "coord_origin": "TOPLEFT"}, "confidence": 0.9659296274185181, "cells": [{"id": 13, "text": "IBM governance solution for IBM Z", "bbox": {"l": 64.800003, "t": 444.89474, "r": 279.09619, "b": 456.88272, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 135.8342742919922, "t": 469.94647216796875, "r": 540.66016, "b": 492.26154, "coord_origin": "TOPLEFT"}, "confidence": 0.9788194298744202, "cells": [{"id": 14, "text": "AI model lifecycle governance, risk management, and regulatory compliance are key to the ", "bbox": {"l": 136.8, "t": 471.04874, "r": 540.66016, "b": 480.26172, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "success of enterprises.", "bbox": {"l": 136.8, "t": 483.04855, "r": 238.91193000000004, "b": 492.26154, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 135.8035888671875, "t": 503.9425354003906, "r": 547.3551, "b": 610.21979, "coord_origin": "TOPLEFT"}, "confidence": 0.9855291247367859, "cells": [{"id": 16, "text": "AI governance is a comprehensive framework that uses a set of automated processes, ", "bbox": {"l": 136.8, "t": 505.00836, "r": 522.28375, "b": 514.22134, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "methodologies, and tools to manage an organization\u2019s use of AI. Consistent principles ", "bbox": {"l": 136.8, "t": 517.00818, "r": 518.83173, "b": 526.22116, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "guiding the design, development, deployment, and monitoring of models are critical in driving ", "bbox": {"l": 136.8, "t": 529.00797, "r": 547.24677, "b": 538.22098, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "responsible and trustworthy AI. AI governance includes processes that trace and record the ", "bbox": {"l": 136.8, "t": 541.00778, "r": 543.55243, "b": 550.22078, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "origin of data, models (including associated metadata), and pipelines for audits. The details of ", "bbox": {"l": 136.8, "t": 553.00758, "r": 547.3551, "b": 562.22058, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "entry should include the techniques that trained each model, the hyperparameters that were ", "bbox": {"l": 136.8, "t": 565.00739, "r": 545.16895, "b": 574.22038, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "used, and the metrics from testing phases. These details provide increased transparency into ", "bbox": {"l": 136.8, "t": 577.00719, "r": 547.3075, "b": 586.22018, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "the model\u2019s behavior throughout the lifecycle, the data that was influential in its development, ", "bbox": {"l": 136.8, "t": 589.00699, "r": 547.27661, "b": 598.21999, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "and the possible risks.", "bbox": {"l": 136.8, "t": 601.00679, "r": 235.71976, "b": 610.21979, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 135.9875030517578, "t": 621.9910888671875, "r": 543.35425, "b": 668.23876, "coord_origin": "TOPLEFT"}, "confidence": 0.9869634509086609, "cells": [{"id": 25, "text": "In a world where trust, transparency and explainable AI matters, every organization wants ", "bbox": {"l": 136.8, "t": 623.02635, "r": 535.70215, "b": 632.2393500000001, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "compliance along with the comfort of understanding how analytic insights and decisions are ", "bbox": {"l": 136.8, "t": 635.02615, "r": 543.35425, "b": 644.23915, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "made. The following sections describe some of the principles and organizational ", "bbox": {"l": 136.8, "t": 647.0259599999999, "r": 493.54346000000004, "b": 656.2389499999999, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "requirements for AI governance. ", "bbox": {"l": 136.8, "t": 659.02576, "r": 282.2887, "b": 668.23876, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "picture", "bbox": {"l": 63.77848434448242, "t": 131.25733947753906, "r": 546.8060302734375, "b": 329.46014404296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9830358028411865, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 15, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.407470703125, "t": 754.3117065429688, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9113772511482239, "cells": [{"id": 0, "text": "14 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "14"}, {"label": "page_footer", "id": 1, "page_no": 15, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.1883316040039, "t": 754.7257080078125, "r": 267.0744, "b": 764.1552124023438, "coord_origin": "TOPLEFT"}, "confidence": 0.9578691720962524, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"label": "text", "id": 2, "page_no": 15, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.13604736328125, "t": 70.62796020507812, "r": 547.30731, "b": 117.06792449951172, "coord_origin": "TOPLEFT"}, "confidence": 0.9846124053001404, "cells": [{"id": 2, "text": "For example, a business can start testing a model before production for fairness metrics. For ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 547.12024, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "this task, enterprises need an end-to-end workflow with approvals to mitigate these risks and ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 547.30731, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "increase the scale of AI investments, as shown in Figure 8, which presents a typical AI model ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 547.28247, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "lifecycle in an enterprise. ", "bbox": {"l": 136.8, "t": 107.50811999999996, "r": 249.57208, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "For example, a business can start testing a model before production for fairness metrics. For this task, enterprises need an end-to-end workflow with approvals to mitigate these risks and increase the scale of AI investments, as shown in Figure 8, which presents a typical AI model lifecycle in an enterprise."}, {"label": "caption", "id": 3, "page_no": 15, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.17765808105469, "t": 332.0653381347656, "r": 206.827880859375, "b": 341.4869689941406, "coord_origin": "TOPLEFT"}, "confidence": 0.952994704246521, "cells": [{"id": 6, "text": "Figure 8 Typical AI model lifecycle", "bbox": {"l": 64.800003, "t": 333.0779999999999, "r": 206.07208, "b": 341.40302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 8 Typical AI model lifecycle"}, {"label": "text", "id": 4, "page_no": 15, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.79885864257812, "t": 354.1422119140625, "r": 540.12024, "b": 424.2207900000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9863293766975403, "cells": [{"id": 7, "text": "Due to regulations, more stakeholders adopt the typical AI model lifecycle to protect their ", "bbox": {"l": 136.8, "t": 355.00872999999996, "r": 531.15924, "b": 364.22171, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "brand from new end-to-end risks. To ensure various aspects of both regulatory compliance ", "bbox": {"l": 136.80002, "t": 367.00854, "r": 540.12024, "b": 376.22153, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "and security, the personas that must be involved include the chief financial officer (CFO), ", "bbox": {"l": 136.80002, "t": 379.00836, "r": 531.84265, "b": 388.22134, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "chief marketing officer (CMO), chief data officer (CDO), HR, and chief regulatory officer ", "bbox": {"l": 136.80002, "t": 391.0081799999999, "r": 523.93213, "b": 400.22116, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "(CRO), along with the data engineers, data scientists, and business analysts, who build AI ", "bbox": {"l": 136.80002, "t": 403.00800000000004, "r": 537.40796, "b": 412.22098, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "workflows. ", "bbox": {"l": 136.80002, "t": 415.00781, "r": 186.17273, "b": 424.2207900000001, "coord_origin": "TOPLEFT"}}]}, "text": "Due to regulations, more stakeholders adopt the typical AI model lifecycle to protect their brand from new end-to-end risks. To ensure various aspects of both regulatory compliance and security, the personas that must be involved include the chief financial officer (CFO), chief marketing officer (CMO), chief data officer (CDO), HR, and chief regulatory officer (CRO), along with the data engineers, data scientists, and business analysts, who build AI workflows."}, {"label": "section_header", "id": 5, "page_no": 15, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 64.70143127441406, "t": 443.571044921875, "r": 279.45147705078125, "b": 456.88272, "coord_origin": "TOPLEFT"}, "confidence": 0.9659296274185181, "cells": [{"id": 13, "text": "IBM governance solution for IBM Z", "bbox": {"l": 64.800003, "t": 444.89474, "r": 279.09619, "b": 456.88272, "coord_origin": "TOPLEFT"}}]}, "text": "IBM governance solution for IBM Z"}, {"label": "text", "id": 6, "page_no": 15, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.8342742919922, "t": 469.94647216796875, "r": 540.66016, "b": 492.26154, "coord_origin": "TOPLEFT"}, "confidence": 0.9788194298744202, "cells": [{"id": 14, "text": "AI model lifecycle governance, risk management, and regulatory compliance are key to the ", "bbox": {"l": 136.8, "t": 471.04874, "r": 540.66016, "b": 480.26172, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "success of enterprises.", "bbox": {"l": 136.8, "t": 483.04855, "r": 238.91193000000004, "b": 492.26154, "coord_origin": "TOPLEFT"}}]}, "text": "AI model lifecycle governance, risk management, and regulatory compliance are key to the success of enterprises."}, {"label": "text", "id": 7, "page_no": 15, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.8035888671875, "t": 503.9425354003906, "r": 547.3551, "b": 610.21979, "coord_origin": "TOPLEFT"}, "confidence": 0.9855291247367859, "cells": [{"id": 16, "text": "AI governance is a comprehensive framework that uses a set of automated processes, ", "bbox": {"l": 136.8, "t": 505.00836, "r": 522.28375, "b": 514.22134, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "methodologies, and tools to manage an organization\u2019s use of AI. Consistent principles ", "bbox": {"l": 136.8, "t": 517.00818, "r": 518.83173, "b": 526.22116, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "guiding the design, development, deployment, and monitoring of models are critical in driving ", "bbox": {"l": 136.8, "t": 529.00797, "r": 547.24677, "b": 538.22098, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "responsible and trustworthy AI. AI governance includes processes that trace and record the ", "bbox": {"l": 136.8, "t": 541.00778, "r": 543.55243, "b": 550.22078, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "origin of data, models (including associated metadata), and pipelines for audits. The details of ", "bbox": {"l": 136.8, "t": 553.00758, "r": 547.3551, "b": 562.22058, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "entry should include the techniques that trained each model, the hyperparameters that were ", "bbox": {"l": 136.8, "t": 565.00739, "r": 545.16895, "b": 574.22038, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "used, and the metrics from testing phases. These details provide increased transparency into ", "bbox": {"l": 136.8, "t": 577.00719, "r": 547.3075, "b": 586.22018, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "the model\u2019s behavior throughout the lifecycle, the data that was influential in its development, ", "bbox": {"l": 136.8, "t": 589.00699, "r": 547.27661, "b": 598.21999, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "and the possible risks.", "bbox": {"l": 136.8, "t": 601.00679, "r": 235.71976, "b": 610.21979, "coord_origin": "TOPLEFT"}}]}, "text": "AI governance is a comprehensive framework that uses a set of automated processes, methodologies, and tools to manage an organization\u2019s use of AI. Consistent principles guiding the design, development, deployment, and monitoring of models are critical in driving responsible and trustworthy AI. AI governance includes processes that trace and record the origin of data, models (including associated metadata), and pipelines for audits. The details of entry should include the techniques that trained each model, the hyperparameters that were used, and the metrics from testing phases. These details provide increased transparency into the model\u2019s behavior throughout the lifecycle, the data that was influential in its development, and the possible risks."}, {"label": "text", "id": 8, "page_no": 15, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.9875030517578, "t": 621.9910888671875, "r": 543.35425, "b": 668.23876, "coord_origin": "TOPLEFT"}, "confidence": 0.9869634509086609, "cells": [{"id": 25, "text": "In a world where trust, transparency and explainable AI matters, every organization wants ", "bbox": {"l": 136.8, "t": 623.02635, "r": 535.70215, "b": 632.2393500000001, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "compliance along with the comfort of understanding how analytic insights and decisions are ", "bbox": {"l": 136.8, "t": 635.02615, "r": 543.35425, "b": 644.23915, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "made. The following sections describe some of the principles and organizational ", "bbox": {"l": 136.8, "t": 647.0259599999999, "r": 493.54346000000004, "b": 656.2389499999999, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "requirements for AI governance. ", "bbox": {"l": 136.8, "t": 659.02576, "r": 282.2887, "b": 668.23876, "coord_origin": "TOPLEFT"}}]}, "text": "In a world where trust, transparency and explainable AI matters, every organization wants compliance along with the comfort of understanding how analytic insights and decisions are made. The following sections describe some of the principles and organizational requirements for AI governance."}, {"label": "picture", "id": 9, "page_no": 15, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 63.77848434448242, "t": 131.25733947753906, "r": 546.8060302734375, "b": 329.46014404296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9830358028411865, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 15, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.13604736328125, "t": 70.62796020507812, "r": 547.30731, "b": 117.06792449951172, "coord_origin": "TOPLEFT"}, "confidence": 0.9846124053001404, "cells": [{"id": 2, "text": "For example, a business can start testing a model before production for fairness metrics. For ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 547.12024, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "this task, enterprises need an end-to-end workflow with approvals to mitigate these risks and ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 547.30731, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "increase the scale of AI investments, as shown in Figure 8, which presents a typical AI model ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 547.28247, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "lifecycle in an enterprise. ", "bbox": {"l": 136.8, "t": 107.50811999999996, "r": 249.57208, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "For example, a business can start testing a model before production for fairness metrics. For this task, enterprises need an end-to-end workflow with approvals to mitigate these risks and increase the scale of AI investments, as shown in Figure 8, which presents a typical AI model lifecycle in an enterprise."}, {"label": "caption", "id": 3, "page_no": 15, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.17765808105469, "t": 332.0653381347656, "r": 206.827880859375, "b": 341.4869689941406, "coord_origin": "TOPLEFT"}, "confidence": 0.952994704246521, "cells": [{"id": 6, "text": "Figure 8 Typical AI model lifecycle", "bbox": {"l": 64.800003, "t": 333.0779999999999, "r": 206.07208, "b": 341.40302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 8 Typical AI model lifecycle"}, {"label": "text", "id": 4, "page_no": 15, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.79885864257812, "t": 354.1422119140625, "r": 540.12024, "b": 424.2207900000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9863293766975403, "cells": [{"id": 7, "text": "Due to regulations, more stakeholders adopt the typical AI model lifecycle to protect their ", "bbox": {"l": 136.8, "t": 355.00872999999996, "r": 531.15924, "b": 364.22171, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "brand from new end-to-end risks. To ensure various aspects of both regulatory compliance ", "bbox": {"l": 136.80002, "t": 367.00854, "r": 540.12024, "b": 376.22153, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "and security, the personas that must be involved include the chief financial officer (CFO), ", "bbox": {"l": 136.80002, "t": 379.00836, "r": 531.84265, "b": 388.22134, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "chief marketing officer (CMO), chief data officer (CDO), HR, and chief regulatory officer ", "bbox": {"l": 136.80002, "t": 391.0081799999999, "r": 523.93213, "b": 400.22116, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "(CRO), along with the data engineers, data scientists, and business analysts, who build AI ", "bbox": {"l": 136.80002, "t": 403.00800000000004, "r": 537.40796, "b": 412.22098, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "workflows. ", "bbox": {"l": 136.80002, "t": 415.00781, "r": 186.17273, "b": 424.2207900000001, "coord_origin": "TOPLEFT"}}]}, "text": "Due to regulations, more stakeholders adopt the typical AI model lifecycle to protect their brand from new end-to-end risks. To ensure various aspects of both regulatory compliance and security, the personas that must be involved include the chief financial officer (CFO), chief marketing officer (CMO), chief data officer (CDO), HR, and chief regulatory officer (CRO), along with the data engineers, data scientists, and business analysts, who build AI workflows."}, {"label": "section_header", "id": 5, "page_no": 15, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 64.70143127441406, "t": 443.571044921875, "r": 279.45147705078125, "b": 456.88272, "coord_origin": "TOPLEFT"}, "confidence": 0.9659296274185181, "cells": [{"id": 13, "text": "IBM governance solution for IBM Z", "bbox": {"l": 64.800003, "t": 444.89474, "r": 279.09619, "b": 456.88272, "coord_origin": "TOPLEFT"}}]}, "text": "IBM governance solution for IBM Z"}, {"label": "text", "id": 6, "page_no": 15, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.8342742919922, "t": 469.94647216796875, "r": 540.66016, "b": 492.26154, "coord_origin": "TOPLEFT"}, "confidence": 0.9788194298744202, "cells": [{"id": 14, "text": "AI model lifecycle governance, risk management, and regulatory compliance are key to the ", "bbox": {"l": 136.8, "t": 471.04874, "r": 540.66016, "b": 480.26172, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "success of enterprises.", "bbox": {"l": 136.8, "t": 483.04855, "r": 238.91193000000004, "b": 492.26154, "coord_origin": "TOPLEFT"}}]}, "text": "AI model lifecycle governance, risk management, and regulatory compliance are key to the success of enterprises."}, {"label": "text", "id": 7, "page_no": 15, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.8035888671875, "t": 503.9425354003906, "r": 547.3551, "b": 610.21979, "coord_origin": "TOPLEFT"}, "confidence": 0.9855291247367859, "cells": [{"id": 16, "text": "AI governance is a comprehensive framework that uses a set of automated processes, ", "bbox": {"l": 136.8, "t": 505.00836, "r": 522.28375, "b": 514.22134, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "methodologies, and tools to manage an organization\u2019s use of AI. Consistent principles ", "bbox": {"l": 136.8, "t": 517.00818, "r": 518.83173, "b": 526.22116, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "guiding the design, development, deployment, and monitoring of models are critical in driving ", "bbox": {"l": 136.8, "t": 529.00797, "r": 547.24677, "b": 538.22098, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "responsible and trustworthy AI. AI governance includes processes that trace and record the ", "bbox": {"l": 136.8, "t": 541.00778, "r": 543.55243, "b": 550.22078, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "origin of data, models (including associated metadata), and pipelines for audits. The details of ", "bbox": {"l": 136.8, "t": 553.00758, "r": 547.3551, "b": 562.22058, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "entry should include the techniques that trained each model, the hyperparameters that were ", "bbox": {"l": 136.8, "t": 565.00739, "r": 545.16895, "b": 574.22038, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "used, and the metrics from testing phases. These details provide increased transparency into ", "bbox": {"l": 136.8, "t": 577.00719, "r": 547.3075, "b": 586.22018, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "the model\u2019s behavior throughout the lifecycle, the data that was influential in its development, ", "bbox": {"l": 136.8, "t": 589.00699, "r": 547.27661, "b": 598.21999, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "and the possible risks.", "bbox": {"l": 136.8, "t": 601.00679, "r": 235.71976, "b": 610.21979, "coord_origin": "TOPLEFT"}}]}, "text": "AI governance is a comprehensive framework that uses a set of automated processes, methodologies, and tools to manage an organization\u2019s use of AI. Consistent principles guiding the design, development, deployment, and monitoring of models are critical in driving responsible and trustworthy AI. AI governance includes processes that trace and record the origin of data, models (including associated metadata), and pipelines for audits. The details of entry should include the techniques that trained each model, the hyperparameters that were used, and the metrics from testing phases. These details provide increased transparency into the model\u2019s behavior throughout the lifecycle, the data that was influential in its development, and the possible risks."}, {"label": "text", "id": 8, "page_no": 15, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.9875030517578, "t": 621.9910888671875, "r": 543.35425, "b": 668.23876, "coord_origin": "TOPLEFT"}, "confidence": 0.9869634509086609, "cells": [{"id": 25, "text": "In a world where trust, transparency and explainable AI matters, every organization wants ", "bbox": {"l": 136.8, "t": 623.02635, "r": 535.70215, "b": 632.2393500000001, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "compliance along with the comfort of understanding how analytic insights and decisions are ", "bbox": {"l": 136.8, "t": 635.02615, "r": 543.35425, "b": 644.23915, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "made. The following sections describe some of the principles and organizational ", "bbox": {"l": 136.8, "t": 647.0259599999999, "r": 493.54346000000004, "b": 656.2389499999999, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "requirements for AI governance. ", "bbox": {"l": 136.8, "t": 659.02576, "r": 282.2887, "b": 668.23876, "coord_origin": "TOPLEFT"}}]}, "text": "In a world where trust, transparency and explainable AI matters, every organization wants compliance along with the comfort of understanding how analytic insights and decisions are made. The following sections describe some of the principles and organizational requirements for AI governance."}, {"label": "picture", "id": 9, "page_no": 15, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 63.77848434448242, "t": 131.25733947753906, "r": 546.8060302734375, "b": 329.46014404296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9830358028411865, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 15, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.407470703125, "t": 754.3117065429688, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9113772511482239, "cells": [{"id": 0, "text": "14 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "14"}, {"label": "page_footer", "id": 1, "page_no": 15, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.1883316040039, "t": 754.7257080078125, "r": 267.0744, "b": 764.1552124023438, "coord_origin": "TOPLEFT"}, "confidence": 0.9578691720962524, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}]}}, {"page_no": 16, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "15", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Lifecycle governance", "bbox": {"l": 136.8, "t": 71.43622000000005, "r": 248.5215, "b": 81.59276999999997, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Lifecycle governance helps you manage your business information throughout its lifecycle, ", "bbox": {"l": 136.8, "t": 86.50867000000005, "r": 539.15723, "b": 95.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "that is, from creation to deletion. IBM AI governance addresses the problems that challenge ", "bbox": {"l": 136.8, "t": 98.50847999999996, "r": 544.04358, "b": 107.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "records managements: ", "bbox": {"l": 136.8, "t": 110.50829999999996, "r": 241.75150000000002, "b": 119.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 127.63751000000002, "r": 141.78, "b": 136.41228999999998, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Monitor, catalog, and govern AI models from anywhere throughout the AI lifecycle. ", "bbox": {"l": 151.20016, "t": 127.48810000000014, "r": 517.36163, "b": 136.70110999999997, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "GLYPH", "bbox": {"l": 136.8, "t": 144.67705999999998, "r": 141.78, "b": 153.45183999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Automate the capture of model metadata for report generation.", "bbox": {"l": 151.20016, "t": 144.52765, "r": 428.48267, "b": 153.74066000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 161.65686000000005, "r": 141.78, "b": 170.43164000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Drive transparent and explainable AI at scale.", "bbox": {"l": 151.20016, "t": 161.50744999999995, "r": 352.83337, "b": 170.72046, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "GLYPH", "bbox": {"l": 136.8, "t": 178.63666, "r": 141.78, "b": 187.41143999999997, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Increase accuracy of predictions by identifying how AI is used and where it is lagging. ", "bbox": {"l": 151.20016, "t": 178.48724000000004, "r": 531.14728, "b": 187.70025999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Risk management", "bbox": {"l": 136.8, "t": 201.45636000000002, "r": 230.82613, "b": 211.61292000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Risk management is used in IBM AI governance to identify, manage, monitor, and report on ", "bbox": {"l": 136.8, "t": 216.52868999999998, "r": 544.07233, "b": 225.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "risk and compliance initiatives at scale: ", "bbox": {"l": 136.8, "t": 228.5285, "r": 311.84103, "b": 237.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "GLYPH", "bbox": {"l": 136.8, "t": 245.65770999999995, "r": 141.78, "b": 254.4325, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Automate facts and workflow management to comply with business standards.", "bbox": {"l": 151.20016, "t": 245.50829999999996, "r": 497.78207, "b": 254.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "GLYPH", "bbox": {"l": 136.8, "t": 262.63751, "r": 141.78, "b": 271.41229, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Use dynamic dashboards for clear and concise customizable results.", "bbox": {"l": 151.20016, "t": 262.48810000000003, "r": 455.01303, "b": 271.70110999999997, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "GLYPH", "bbox": {"l": 136.8, "t": 279.67711999999995, "r": 141.78, "b": 288.45187, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Enhanced collaboration across multiple regions and geographies.", "bbox": {"l": 151.20016, "t": 279.52770999999996, "r": 440.54816000000005, "b": 288.74069, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Regulatory compliance", "bbox": {"l": 136.8, "t": 302.43637, "r": 257.70956, "b": 312.59286, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Regulatory compliance is a set of rules that organizations must follow to protect sensitive ", "bbox": {"l": 136.8, "t": 317.50872999999996, "r": 531.79254, "b": 326.72171, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "information and ensure human safety. Any business that works with digital assets, consumer ", "bbox": {"l": 136.8, "t": 329.50854, "r": 547.24664, "b": 338.72153, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "data, health regulations, employee safety, and private communications is subject to regulatory ", "bbox": {"l": 136.8, "t": 341.50836, "r": 547.24664, "b": 350.72134, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "compliance.$^{3}$ The IBM AI governance solution for IBM Z includes the following tasks:", "bbox": {"l": 136.80002, "t": 353.5081799999999, "r": 510.17843999999997, "b": 362.72116, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "GLYPH", "bbox": {"l": 136.80005, "t": 370.63791, "r": 141.78004, "b": 379.41269000000005, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Help adhere to external AI regulations for audit and compliance.", "bbox": {"l": 151.20021, "t": 370.48853, "r": 433.33899, "b": 379.70151, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "GLYPH", "bbox": {"l": 136.80005, "t": 387.6774899999999, "r": 141.78004, "b": 396.45227, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Convert external AI regulations into policies for automatic enforcement.", "bbox": {"l": 151.20021, "t": 387.52811, "r": 465.02979000000005, "b": 396.74109, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "GLYPH", "bbox": {"l": 136.80005, "t": 404.65729, "r": 141.78004, "b": 413.43207, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Use dynamic dashboards for compliance status across policies and regulations.", "bbox": {"l": 151.20021, "t": 404.50790000000006, "r": 503.32617, "b": 413.72089000000005, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Enterprises can develop AI models and deploy them by using IBM Watson Studio or WML on ", "bbox": {"l": 136.80003, "t": 426.52747, "r": 547.25159, "b": 435.74045, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "CP4D on Red Hat OpenShift on a virtual machine that is based on IBM z/VM or Red Hat ", "bbox": {"l": 136.80003, "t": 438.52728, "r": 529.5835, "b": 447.74026, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Enterprise Linux KVM on IBM Z. AI governance on IBM LinuxONE is supported in the ", "bbox": {"l": 136.80003, "t": 450.5271, "r": 516.83972, "b": 459.74008, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "following two ways: ", "bbox": {"l": 136.80003, "t": 462.52692, "r": 225.04564000000002, "b": 471.7399, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "GLYPH", "bbox": {"l": 136.80003, "t": 479.6561, "r": 141.78003, "b": 488.43088, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Monitor the AI models with Watson OpenScale on CP4D on Red Hat OpenShift on a ", "bbox": {"l": 151.2002, "t": 479.50671, "r": 526.84161, "b": 488.7197, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "virtual machine on IBM Z.", "bbox": {"l": 151.2002, "t": 491.50653, "r": 264.54898, "b": 500.71951, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "GLYPH", "bbox": {"l": 136.80003, "t": 508.6955, "r": 141.78003, "b": 517.47028, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Enterprises can develop AI models by creating and training models by using Watson ", "bbox": {"l": 151.2002, "t": 508.54611, "r": 526.73706, "b": 517.75909, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Studio and development tools such as Jupyter Notebook or JupyterLab, and then ", "bbox": {"l": 151.2002, "t": 520.54593, "r": 512.31305, "b": 529.75891, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "deploying the model onto WML on CP4D on Red Hat OpenShift on a virtual machine on ", "bbox": {"l": 151.2002, "t": 532.5457200000001, "r": 541.80554, "b": 541.75873, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "IBM Z. Then, these enterprises can achieve end-end AI governance by running AI ", "bbox": {"l": 151.2002, "t": 544.54553, "r": 515.66156, "b": 553.7585300000001, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Factsheets, IBM Watson OpenScale, and IBM Watson OpenPagesfi on CP4D on x86.", "bbox": {"l": 151.2002, "t": 556.54533, "r": 533.65723, "b": 565.75833, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Figure 9 on page 16 shows the end-to-end flow for a remote AI governance solution. ", "bbox": {"l": 136.80003, "t": 578.50514, "r": 512.49115, "b": 587.71814, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "$^{3 }$https://www.proofpoint.com/us/threat-reference/regulatory-compliance", "bbox": {"l": 136.8, "t": 727.709961, "r": 418.26596, "b": 734.740341, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 535.963623046875, "t": 754.3152465820312, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9105063676834106, "cells": [{"id": 0, "text": "15", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "section_header", "bbox": {"l": 136.3389434814453, "t": 70.3511962890625, "r": 249.09483337402344, "b": 81.77921295166016, "coord_origin": "TOPLEFT"}, "confidence": 0.9597545266151428, "cells": [{"id": 1, "text": "Lifecycle governance", "bbox": {"l": 136.8, "t": 71.43622000000005, "r": 248.5215, "b": 81.59276999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.980224609375, "t": 85.47271728515625, "r": 544.04358, "b": 119.72131000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9820835590362549, "cells": [{"id": 2, "text": "Lifecycle governance helps you manage your business information throughout its lifecycle, ", "bbox": {"l": 136.8, "t": 86.50867000000005, "r": 539.15723, "b": 95.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "that is, from creation to deletion. IBM AI governance addresses the problems that challenge ", "bbox": {"l": 136.8, "t": 98.50847999999996, "r": 544.04358, "b": 107.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "records managements: ", "bbox": {"l": 136.8, "t": 110.50829999999996, "r": 241.75150000000002, "b": 119.72131000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "list_item", "bbox": {"l": 135.69290161132812, "t": 126.65188598632812, "r": 517.36163, "b": 137.11279296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9599407315254211, "cells": [{"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 127.63751000000002, "r": 141.78, "b": 136.41228999999998, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Monitor, catalog, and govern AI models from anywhere throughout the AI lifecycle. ", "bbox": {"l": 151.20016, "t": 127.48810000000014, "r": 517.36163, "b": 136.70110999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 135.61203002929688, "t": 144.06478881835938, "r": 428.48267, "b": 154.2803192138672, "coord_origin": "TOPLEFT"}, "confidence": 0.9574074745178223, "cells": [{"id": 7, "text": "GLYPH", "bbox": {"l": 136.8, "t": 144.67705999999998, "r": 141.78, "b": 153.45183999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Automate the capture of model metadata for report generation.", "bbox": {"l": 151.20016, "t": 144.52765, "r": 428.48267, "b": 153.74066000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 135.6266632080078, "t": 160.60958862304688, "r": 352.83337, "b": 170.9593963623047, "coord_origin": "TOPLEFT"}, "confidence": 0.9567543864250183, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 161.65686000000005, "r": 141.78, "b": 170.43164000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Drive transparent and explainable AI at scale.", "bbox": {"l": 151.20016, "t": 161.50744999999995, "r": 352.83337, "b": 170.72046, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.69007873535156, "t": 177.45838928222656, "r": 531.14728, "b": 187.81533813476562, "coord_origin": "TOPLEFT"}, "confidence": 0.9560735821723938, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.8, "t": 178.63666, "r": 141.78, "b": 187.41143999999997, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Increase accuracy of predictions by identifying how AI is used and where it is lagging. ", "bbox": {"l": 151.20016, "t": 178.48724000000004, "r": 531.14728, "b": 187.70025999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "section_header", "bbox": {"l": 136.56716918945312, "t": 200.49346923828125, "r": 231.8074951171875, "b": 211.7656707763672, "coord_origin": "TOPLEFT"}, "confidence": 0.9554390907287598, "cells": [{"id": 13, "text": "Risk management", "bbox": {"l": 136.8, "t": 201.45636000000002, "r": 230.82613, "b": 211.61292000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 136.1630859375, "t": 216.0500030517578, "r": 544.07233, "b": 237.92694091796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9777550101280212, "cells": [{"id": 14, "text": "Risk management is used in IBM AI governance to identify, manage, monitor, and report on ", "bbox": {"l": 136.8, "t": 216.52868999999998, "r": 544.07233, "b": 225.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "risk and compliance initiatives at scale: ", "bbox": {"l": 136.8, "t": 228.5285, "r": 311.84103, "b": 237.74152000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.6591033935547, "t": 244.775146484375, "r": 497.78207, "b": 254.89271545410156, "coord_origin": "TOPLEFT"}, "confidence": 0.9544404745101929, "cells": [{"id": 16, "text": "GLYPH", "bbox": {"l": 136.8, "t": 245.65770999999995, "r": 141.78, "b": 254.4325, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Automate facts and workflow management to comply with business standards.", "bbox": {"l": 151.20016, "t": 245.50829999999996, "r": 497.78207, "b": 254.72131000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 135.6646270751953, "t": 261.35205078125, "r": 455.01303, "b": 271.70110999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9548507332801819, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.8, "t": 262.63751, "r": 141.78, "b": 271.41229, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Use dynamic dashboards for clear and concise customizable results.", "bbox": {"l": 151.20016, "t": 262.48810000000003, "r": 455.01303, "b": 271.70110999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 135.5814971923828, "t": 278.5577087402344, "r": 440.54816000000005, "b": 288.8544616699219, "coord_origin": "TOPLEFT"}, "confidence": 0.9628311991691589, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.8, "t": 279.67711999999995, "r": 141.78, "b": 288.45187, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Enhanced collaboration across multiple regions and geographies.", "bbox": {"l": 151.20016, "t": 279.52770999999996, "r": 440.54816000000005, "b": 288.74069, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "section_header", "bbox": {"l": 136.37454223632812, "t": 301.3377685546875, "r": 258.3398742675781, "b": 312.59286, "coord_origin": "TOPLEFT"}, "confidence": 0.9562974572181702, "cells": [{"id": 22, "text": "Regulatory compliance", "bbox": {"l": 136.8, "t": 302.43637, "r": 257.70956, "b": 312.59286, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 135.9670867919922, "t": 316.8338928222656, "r": 547.24664, "b": 363.3339538574219, "coord_origin": "TOPLEFT"}, "confidence": 0.9852515459060669, "cells": [{"id": 23, "text": "Regulatory compliance is a set of rules that organizations must follow to protect sensitive ", "bbox": {"l": 136.8, "t": 317.50872999999996, "r": 531.79254, "b": 326.72171, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "information and ensure human safety. Any business that works with digital assets, consumer ", "bbox": {"l": 136.8, "t": 329.50854, "r": 547.24664, "b": 338.72153, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "data, health regulations, employee safety, and private communications is subject to regulatory ", "bbox": {"l": 136.8, "t": 341.50836, "r": 547.24664, "b": 350.72134, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "compliance.$^{3}$ The IBM AI governance solution for IBM Z includes the following tasks:", "bbox": {"l": 136.80002, "t": 353.5081799999999, "r": 510.17843999999997, "b": 362.72116, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "list_item", "bbox": {"l": 135.71563720703125, "t": 369.3797607421875, "r": 433.33899, "b": 379.9487609863281, "coord_origin": "TOPLEFT"}, "confidence": 0.9577170014381409, "cells": [{"id": 27, "text": "GLYPH", "bbox": {"l": 136.80005, "t": 370.63791, "r": 141.78004, "b": 379.41269000000005, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Help adhere to external AI regulations for audit and compliance.", "bbox": {"l": 151.20021, "t": 370.48853, "r": 433.33899, "b": 379.70151, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "list_item", "bbox": {"l": 135.65516662597656, "t": 386.6414794921875, "r": 465.02979000000005, "b": 397.0399169921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9534773826599121, "cells": [{"id": 29, "text": "GLYPH", "bbox": {"l": 136.80005, "t": 387.6774899999999, "r": 141.78004, "b": 396.45227, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Convert external AI regulations into policies for automatic enforcement.", "bbox": {"l": 151.20021, "t": 387.52811, "r": 465.02979000000005, "b": 396.74109, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "list_item", "bbox": {"l": 135.6472930908203, "t": 403.3809509277344, "r": 503.32617, "b": 413.72089000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9609959721565247, "cells": [{"id": 31, "text": "GLYPH", "bbox": {"l": 136.80005, "t": 404.65729, "r": 141.78004, "b": 413.43207, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Use dynamic dashboards for compliance status across policies and regulations.", "bbox": {"l": 151.20021, "t": 404.50790000000006, "r": 503.32617, "b": 413.72089000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "text", "bbox": {"l": 136.04916381835938, "t": 425.9317932128906, "r": 547.25159, "b": 472.63140869140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9851271510124207, "cells": [{"id": 33, "text": "Enterprises can develop AI models and deploy them by using IBM Watson Studio or WML on ", "bbox": {"l": 136.80003, "t": 426.52747, "r": 547.25159, "b": 435.74045, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "CP4D on Red Hat OpenShift on a virtual machine that is based on IBM z/VM or Red Hat ", "bbox": {"l": 136.80003, "t": 438.52728, "r": 529.5835, "b": 447.74026, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Enterprise Linux KVM on IBM Z. AI governance on IBM LinuxONE is supported in the ", "bbox": {"l": 136.80003, "t": 450.5271, "r": 516.83972, "b": 459.74008, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "following two ways: ", "bbox": {"l": 136.80003, "t": 462.52692, "r": 225.04564000000002, "b": 471.7399, "coord_origin": "TOPLEFT"}}]}, {"id": 18, "label": "list_item", "bbox": {"l": 135.6191864013672, "t": 478.54052734375, "r": 526.84161, "b": 500.71951, "coord_origin": "TOPLEFT"}, "confidence": 0.9704018831253052, "cells": [{"id": 37, "text": "GLYPH", "bbox": {"l": 136.80003, "t": 479.6561, "r": 141.78003, "b": 488.43088, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Monitor the AI models with Watson OpenScale on CP4D on Red Hat OpenShift on a ", "bbox": {"l": 151.2002, "t": 479.50671, "r": 526.84161, "b": 488.7197, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "virtual machine on IBM Z.", "bbox": {"l": 151.2002, "t": 491.50653, "r": 264.54898, "b": 500.71951, "coord_origin": "TOPLEFT"}}]}, {"id": 19, "label": "list_item", "bbox": {"l": 135.48377990722656, "t": 507.9300537109375, "r": 541.80554, "b": 566.3822631835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9851728677749634, "cells": [{"id": 40, "text": "GLYPH", "bbox": {"l": 136.80003, "t": 508.6955, "r": 141.78003, "b": 517.47028, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Enterprises can develop AI models by creating and training models by using Watson ", "bbox": {"l": 151.2002, "t": 508.54611, "r": 526.73706, "b": 517.75909, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Studio and development tools such as Jupyter Notebook or JupyterLab, and then ", "bbox": {"l": 151.2002, "t": 520.54593, "r": 512.31305, "b": 529.75891, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "deploying the model onto WML on CP4D on Red Hat OpenShift on a virtual machine on ", "bbox": {"l": 151.2002, "t": 532.5457200000001, "r": 541.80554, "b": 541.75873, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "IBM Z. Then, these enterprises can achieve end-end AI governance by running AI ", "bbox": {"l": 151.2002, "t": 544.54553, "r": 515.66156, "b": 553.7585300000001, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Factsheets, IBM Watson OpenScale, and IBM Watson OpenPagesfi on CP4D on x86.", "bbox": {"l": 151.2002, "t": 556.54533, "r": 533.65723, "b": 565.75833, "coord_origin": "TOPLEFT"}}]}, {"id": 20, "label": "text", "bbox": {"l": 136.42056274414062, "t": 577.5960693359375, "r": 512.49115, "b": 587.71814, "coord_origin": "TOPLEFT"}, "confidence": 0.9513794779777527, "cells": [{"id": 46, "text": "Figure 9 on page 16 shows the end-to-end flow for a remote AI governance solution. ", "bbox": {"l": 136.80003, "t": 578.50514, "r": 512.49115, "b": 587.71814, "coord_origin": "TOPLEFT"}}]}, {"id": 21, "label": "footnote", "bbox": {"l": 136.24427795410156, "t": 725.0267333984375, "r": 418.4429931640625, "b": 735.0806274414062, "coord_origin": "TOPLEFT"}, "confidence": 0.9410406947135925, "cells": [{"id": 47, "text": "$^{3 }$https://www.proofpoint.com/us/threat-reference/regulatory-compliance", "bbox": {"l": 136.8, "t": 727.709961, "r": 418.26596, "b": 734.740341, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 16, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 535.963623046875, "t": 754.3152465820312, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9105063676834106, "cells": [{"id": 0, "text": "15", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "15"}, {"label": "section_header", "id": 1, "page_no": 16, "cluster": {"id": 1, "label": "section_header", "bbox": {"l": 136.3389434814453, "t": 70.3511962890625, "r": 249.09483337402344, "b": 81.77921295166016, "coord_origin": "TOPLEFT"}, "confidence": 0.9597545266151428, "cells": [{"id": 1, "text": "Lifecycle governance", "bbox": {"l": 136.8, "t": 71.43622000000005, "r": 248.5215, "b": 81.59276999999997, "coord_origin": "TOPLEFT"}}]}, "text": "Lifecycle governance"}, {"label": "text", "id": 2, "page_no": 16, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.980224609375, "t": 85.47271728515625, "r": 544.04358, "b": 119.72131000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9820835590362549, "cells": [{"id": 2, "text": "Lifecycle governance helps you manage your business information throughout its lifecycle, ", "bbox": {"l": 136.8, "t": 86.50867000000005, "r": 539.15723, "b": 95.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "that is, from creation to deletion. IBM AI governance addresses the problems that challenge ", "bbox": {"l": 136.8, "t": 98.50847999999996, "r": 544.04358, "b": 107.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "records managements: ", "bbox": {"l": 136.8, "t": 110.50829999999996, "r": 241.75150000000002, "b": 119.72131000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Lifecycle governance helps you manage your business information throughout its lifecycle, that is, from creation to deletion. IBM AI governance addresses the problems that challenge records managements:"}, {"label": "list_item", "id": 3, "page_no": 16, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 135.69290161132812, "t": 126.65188598632812, "r": 517.36163, "b": 137.11279296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9599407315254211, "cells": [{"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 127.63751000000002, "r": 141.78, "b": 136.41228999999998, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Monitor, catalog, and govern AI models from anywhere throughout the AI lifecycle. ", "bbox": {"l": 151.20016, "t": 127.48810000000014, "r": 517.36163, "b": 136.70110999999997, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Monitor, catalog, and govern AI models from anywhere throughout the AI lifecycle."}, {"label": "list_item", "id": 4, "page_no": 16, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.61203002929688, "t": 144.06478881835938, "r": 428.48267, "b": 154.2803192138672, "coord_origin": "TOPLEFT"}, "confidence": 0.9574074745178223, "cells": [{"id": 7, "text": "GLYPH", "bbox": {"l": 136.8, "t": 144.67705999999998, "r": 141.78, "b": 153.45183999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Automate the capture of model metadata for report generation.", "bbox": {"l": 151.20016, "t": 144.52765, "r": 428.48267, "b": 153.74066000000005, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Automate the capture of model metadata for report generation."}, {"label": "list_item", "id": 5, "page_no": 16, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.6266632080078, "t": 160.60958862304688, "r": 352.83337, "b": 170.9593963623047, "coord_origin": "TOPLEFT"}, "confidence": 0.9567543864250183, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 161.65686000000005, "r": 141.78, "b": 170.43164000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Drive transparent and explainable AI at scale.", "bbox": {"l": 151.20016, "t": 161.50744999999995, "r": 352.83337, "b": 170.72046, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Drive transparent and explainable AI at scale."}, {"label": "list_item", "id": 6, "page_no": 16, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.69007873535156, "t": 177.45838928222656, "r": 531.14728, "b": 187.81533813476562, "coord_origin": "TOPLEFT"}, "confidence": 0.9560735821723938, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.8, "t": 178.63666, "r": 141.78, "b": 187.41143999999997, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Increase accuracy of predictions by identifying how AI is used and where it is lagging. ", "bbox": {"l": 151.20016, "t": 178.48724000000004, "r": 531.14728, "b": 187.70025999999996, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Increase accuracy of predictions by identifying how AI is used and where it is lagging."}, {"label": "section_header", "id": 7, "page_no": 16, "cluster": {"id": 7, "label": "section_header", "bbox": {"l": 136.56716918945312, "t": 200.49346923828125, "r": 231.8074951171875, "b": 211.7656707763672, "coord_origin": "TOPLEFT"}, "confidence": 0.9554390907287598, "cells": [{"id": 13, "text": "Risk management", "bbox": {"l": 136.8, "t": 201.45636000000002, "r": 230.82613, "b": 211.61292000000003, "coord_origin": "TOPLEFT"}}]}, "text": "Risk management"}, {"label": "text", "id": 8, "page_no": 16, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.1630859375, "t": 216.0500030517578, "r": 544.07233, "b": 237.92694091796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9777550101280212, "cells": [{"id": 14, "text": "Risk management is used in IBM AI governance to identify, manage, monitor, and report on ", "bbox": {"l": 136.8, "t": 216.52868999999998, "r": 544.07233, "b": 225.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "risk and compliance initiatives at scale: ", "bbox": {"l": 136.8, "t": 228.5285, "r": 311.84103, "b": 237.74152000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Risk management is used in IBM AI governance to identify, manage, monitor, and report on risk and compliance initiatives at scale:"}, {"label": "list_item", "id": 9, "page_no": 16, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.6591033935547, "t": 244.775146484375, "r": 497.78207, "b": 254.89271545410156, "coord_origin": "TOPLEFT"}, "confidence": 0.9544404745101929, "cells": [{"id": 16, "text": "GLYPH", "bbox": {"l": 136.8, "t": 245.65770999999995, "r": 141.78, "b": 254.4325, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Automate facts and workflow management to comply with business standards.", "bbox": {"l": 151.20016, "t": 245.50829999999996, "r": 497.78207, "b": 254.72131000000002, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Automate facts and workflow management to comply with business standards."}, {"label": "list_item", "id": 10, "page_no": 16, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.6646270751953, "t": 261.35205078125, "r": 455.01303, "b": 271.70110999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9548507332801819, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.8, "t": 262.63751, "r": 141.78, "b": 271.41229, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Use dynamic dashboards for clear and concise customizable results.", "bbox": {"l": 151.20016, "t": 262.48810000000003, "r": 455.01303, "b": 271.70110999999997, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Use dynamic dashboards for clear and concise customizable results."}, {"label": "list_item", "id": 11, "page_no": 16, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.5814971923828, "t": 278.5577087402344, "r": 440.54816000000005, "b": 288.8544616699219, "coord_origin": "TOPLEFT"}, "confidence": 0.9628311991691589, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.8, "t": 279.67711999999995, "r": 141.78, "b": 288.45187, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Enhanced collaboration across multiple regions and geographies.", "bbox": {"l": 151.20016, "t": 279.52770999999996, "r": 440.54816000000005, "b": 288.74069, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Enhanced collaboration across multiple regions and geographies."}, {"label": "section_header", "id": 12, "page_no": 16, "cluster": {"id": 12, "label": "section_header", "bbox": {"l": 136.37454223632812, "t": 301.3377685546875, "r": 258.3398742675781, "b": 312.59286, "coord_origin": "TOPLEFT"}, "confidence": 0.9562974572181702, "cells": [{"id": 22, "text": "Regulatory compliance", "bbox": {"l": 136.8, "t": 302.43637, "r": 257.70956, "b": 312.59286, "coord_origin": "TOPLEFT"}}]}, "text": "Regulatory compliance"}, {"label": "text", "id": 13, "page_no": 16, "cluster": {"id": 13, "label": "text", "bbox": {"l": 135.9670867919922, "t": 316.8338928222656, "r": 547.24664, "b": 363.3339538574219, "coord_origin": "TOPLEFT"}, "confidence": 0.9852515459060669, "cells": [{"id": 23, "text": "Regulatory compliance is a set of rules that organizations must follow to protect sensitive ", "bbox": {"l": 136.8, "t": 317.50872999999996, "r": 531.79254, "b": 326.72171, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "information and ensure human safety. Any business that works with digital assets, consumer ", "bbox": {"l": 136.8, "t": 329.50854, "r": 547.24664, "b": 338.72153, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "data, health regulations, employee safety, and private communications is subject to regulatory ", "bbox": {"l": 136.8, "t": 341.50836, "r": 547.24664, "b": 350.72134, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "compliance.$^{3}$ The IBM AI governance solution for IBM Z includes the following tasks:", "bbox": {"l": 136.80002, "t": 353.5081799999999, "r": 510.17843999999997, "b": 362.72116, "coord_origin": "TOPLEFT"}}]}, "text": "Regulatory compliance is a set of rules that organizations must follow to protect sensitive information and ensure human safety. Any business that works with digital assets, consumer data, health regulations, employee safety, and private communications is subject to regulatory compliance.$^{3}$ The IBM AI governance solution for IBM Z includes the following tasks:"}, {"label": "list_item", "id": 14, "page_no": 16, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 135.71563720703125, "t": 369.3797607421875, "r": 433.33899, "b": 379.9487609863281, "coord_origin": "TOPLEFT"}, "confidence": 0.9577170014381409, "cells": [{"id": 27, "text": "GLYPH", "bbox": {"l": 136.80005, "t": 370.63791, "r": 141.78004, "b": 379.41269000000005, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Help adhere to external AI regulations for audit and compliance.", "bbox": {"l": 151.20021, "t": 370.48853, "r": 433.33899, "b": 379.70151, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Help adhere to external AI regulations for audit and compliance."}, {"label": "list_item", "id": 15, "page_no": 16, "cluster": {"id": 15, "label": "list_item", "bbox": {"l": 135.65516662597656, "t": 386.6414794921875, "r": 465.02979000000005, "b": 397.0399169921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9534773826599121, "cells": [{"id": 29, "text": "GLYPH", "bbox": {"l": 136.80005, "t": 387.6774899999999, "r": 141.78004, "b": 396.45227, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Convert external AI regulations into policies for automatic enforcement.", "bbox": {"l": 151.20021, "t": 387.52811, "r": 465.02979000000005, "b": 396.74109, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Convert external AI regulations into policies for automatic enforcement."}, {"label": "list_item", "id": 16, "page_no": 16, "cluster": {"id": 16, "label": "list_item", "bbox": {"l": 135.6472930908203, "t": 403.3809509277344, "r": 503.32617, "b": 413.72089000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9609959721565247, "cells": [{"id": 31, "text": "GLYPH", "bbox": {"l": 136.80005, "t": 404.65729, "r": 141.78004, "b": 413.43207, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Use dynamic dashboards for compliance status across policies and regulations.", "bbox": {"l": 151.20021, "t": 404.50790000000006, "r": 503.32617, "b": 413.72089000000005, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Use dynamic dashboards for compliance status across policies and regulations."}, {"label": "text", "id": 17, "page_no": 16, "cluster": {"id": 17, "label": "text", "bbox": {"l": 136.04916381835938, "t": 425.9317932128906, "r": 547.25159, "b": 472.63140869140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9851271510124207, "cells": [{"id": 33, "text": "Enterprises can develop AI models and deploy them by using IBM Watson Studio or WML on ", "bbox": {"l": 136.80003, "t": 426.52747, "r": 547.25159, "b": 435.74045, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "CP4D on Red Hat OpenShift on a virtual machine that is based on IBM z/VM or Red Hat ", "bbox": {"l": 136.80003, "t": 438.52728, "r": 529.5835, "b": 447.74026, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Enterprise Linux KVM on IBM Z. AI governance on IBM LinuxONE is supported in the ", "bbox": {"l": 136.80003, "t": 450.5271, "r": 516.83972, "b": 459.74008, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "following two ways: ", "bbox": {"l": 136.80003, "t": 462.52692, "r": 225.04564000000002, "b": 471.7399, "coord_origin": "TOPLEFT"}}]}, "text": "Enterprises can develop AI models and deploy them by using IBM Watson Studio or WML on CP4D on Red Hat OpenShift on a virtual machine that is based on IBM z/VM or Red Hat Enterprise Linux KVM on IBM Z. AI governance on IBM LinuxONE is supported in the following two ways:"}, {"label": "list_item", "id": 18, "page_no": 16, "cluster": {"id": 18, "label": "list_item", "bbox": {"l": 135.6191864013672, "t": 478.54052734375, "r": 526.84161, "b": 500.71951, "coord_origin": "TOPLEFT"}, "confidence": 0.9704018831253052, "cells": [{"id": 37, "text": "GLYPH", "bbox": {"l": 136.80003, "t": 479.6561, "r": 141.78003, "b": 488.43088, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Monitor the AI models with Watson OpenScale on CP4D on Red Hat OpenShift on a ", "bbox": {"l": 151.2002, "t": 479.50671, "r": 526.84161, "b": 488.7197, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "virtual machine on IBM Z.", "bbox": {"l": 151.2002, "t": 491.50653, "r": 264.54898, "b": 500.71951, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Monitor the AI models with Watson OpenScale on CP4D on Red Hat OpenShift on a virtual machine on IBM Z."}, {"label": "list_item", "id": 19, "page_no": 16, "cluster": {"id": 19, "label": "list_item", "bbox": {"l": 135.48377990722656, "t": 507.9300537109375, "r": 541.80554, "b": 566.3822631835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9851728677749634, "cells": [{"id": 40, "text": "GLYPH", "bbox": {"l": 136.80003, "t": 508.6955, "r": 141.78003, "b": 517.47028, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Enterprises can develop AI models by creating and training models by using Watson ", "bbox": {"l": 151.2002, "t": 508.54611, "r": 526.73706, "b": 517.75909, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Studio and development tools such as Jupyter Notebook or JupyterLab, and then ", "bbox": {"l": 151.2002, "t": 520.54593, "r": 512.31305, "b": 529.75891, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "deploying the model onto WML on CP4D on Red Hat OpenShift on a virtual machine on ", "bbox": {"l": 151.2002, "t": 532.5457200000001, "r": 541.80554, "b": 541.75873, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "IBM Z. Then, these enterprises can achieve end-end AI governance by running AI ", "bbox": {"l": 151.2002, "t": 544.54553, "r": 515.66156, "b": 553.7585300000001, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Factsheets, IBM Watson OpenScale, and IBM Watson OpenPagesfi on CP4D on x86.", "bbox": {"l": 151.2002, "t": 556.54533, "r": 533.65723, "b": 565.75833, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Enterprises can develop AI models by creating and training models by using Watson Studio and development tools such as Jupyter Notebook or JupyterLab, and then deploying the model onto WML on CP4D on Red Hat OpenShift on a virtual machine on IBM Z. Then, these enterprises can achieve end-end AI governance by running AI Factsheets, IBM Watson OpenScale, and IBM Watson OpenPagesfi on CP4D on x86."}, {"label": "text", "id": 20, "page_no": 16, "cluster": {"id": 20, "label": "text", "bbox": {"l": 136.42056274414062, "t": 577.5960693359375, "r": 512.49115, "b": 587.71814, "coord_origin": "TOPLEFT"}, "confidence": 0.9513794779777527, "cells": [{"id": 46, "text": "Figure 9 on page 16 shows the end-to-end flow for a remote AI governance solution. ", "bbox": {"l": 136.80003, "t": 578.50514, "r": 512.49115, "b": 587.71814, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 9 on page 16 shows the end-to-end flow for a remote AI governance solution."}, {"label": "footnote", "id": 21, "page_no": 16, "cluster": {"id": 21, "label": "footnote", "bbox": {"l": 136.24427795410156, "t": 725.0267333984375, "r": 418.4429931640625, "b": 735.0806274414062, "coord_origin": "TOPLEFT"}, "confidence": 0.9410406947135925, "cells": [{"id": 47, "text": "$^{3 }$https://www.proofpoint.com/us/threat-reference/regulatory-compliance", "bbox": {"l": 136.8, "t": 727.709961, "r": 418.26596, "b": 734.740341, "coord_origin": "TOPLEFT"}}]}, "text": "$^{3 }$https://www.proofpoint.com/us/threat-reference/regulatory-compliance"}], "body": [{"label": "section_header", "id": 1, "page_no": 16, "cluster": {"id": 1, "label": "section_header", "bbox": {"l": 136.3389434814453, "t": 70.3511962890625, "r": 249.09483337402344, "b": 81.77921295166016, "coord_origin": "TOPLEFT"}, "confidence": 0.9597545266151428, "cells": [{"id": 1, "text": "Lifecycle governance", "bbox": {"l": 136.8, "t": 71.43622000000005, "r": 248.5215, "b": 81.59276999999997, "coord_origin": "TOPLEFT"}}]}, "text": "Lifecycle governance"}, {"label": "text", "id": 2, "page_no": 16, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.980224609375, "t": 85.47271728515625, "r": 544.04358, "b": 119.72131000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9820835590362549, "cells": [{"id": 2, "text": "Lifecycle governance helps you manage your business information throughout its lifecycle, ", "bbox": {"l": 136.8, "t": 86.50867000000005, "r": 539.15723, "b": 95.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "that is, from creation to deletion. IBM AI governance addresses the problems that challenge ", "bbox": {"l": 136.8, "t": 98.50847999999996, "r": 544.04358, "b": 107.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "records managements: ", "bbox": {"l": 136.8, "t": 110.50829999999996, "r": 241.75150000000002, "b": 119.72131000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Lifecycle governance helps you manage your business information throughout its lifecycle, that is, from creation to deletion. IBM AI governance addresses the problems that challenge records managements:"}, {"label": "list_item", "id": 3, "page_no": 16, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 135.69290161132812, "t": 126.65188598632812, "r": 517.36163, "b": 137.11279296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9599407315254211, "cells": [{"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 127.63751000000002, "r": 141.78, "b": 136.41228999999998, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Monitor, catalog, and govern AI models from anywhere throughout the AI lifecycle. ", "bbox": {"l": 151.20016, "t": 127.48810000000014, "r": 517.36163, "b": 136.70110999999997, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Monitor, catalog, and govern AI models from anywhere throughout the AI lifecycle."}, {"label": "list_item", "id": 4, "page_no": 16, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.61203002929688, "t": 144.06478881835938, "r": 428.48267, "b": 154.2803192138672, "coord_origin": "TOPLEFT"}, "confidence": 0.9574074745178223, "cells": [{"id": 7, "text": "GLYPH", "bbox": {"l": 136.8, "t": 144.67705999999998, "r": 141.78, "b": 153.45183999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Automate the capture of model metadata for report generation.", "bbox": {"l": 151.20016, "t": 144.52765, "r": 428.48267, "b": 153.74066000000005, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Automate the capture of model metadata for report generation."}, {"label": "list_item", "id": 5, "page_no": 16, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.6266632080078, "t": 160.60958862304688, "r": 352.83337, "b": 170.9593963623047, "coord_origin": "TOPLEFT"}, "confidence": 0.9567543864250183, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 161.65686000000005, "r": 141.78, "b": 170.43164000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Drive transparent and explainable AI at scale.", "bbox": {"l": 151.20016, "t": 161.50744999999995, "r": 352.83337, "b": 170.72046, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Drive transparent and explainable AI at scale."}, {"label": "list_item", "id": 6, "page_no": 16, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.69007873535156, "t": 177.45838928222656, "r": 531.14728, "b": 187.81533813476562, "coord_origin": "TOPLEFT"}, "confidence": 0.9560735821723938, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.8, "t": 178.63666, "r": 141.78, "b": 187.41143999999997, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Increase accuracy of predictions by identifying how AI is used and where it is lagging. ", "bbox": {"l": 151.20016, "t": 178.48724000000004, "r": 531.14728, "b": 187.70025999999996, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Increase accuracy of predictions by identifying how AI is used and where it is lagging."}, {"label": "section_header", "id": 7, "page_no": 16, "cluster": {"id": 7, "label": "section_header", "bbox": {"l": 136.56716918945312, "t": 200.49346923828125, "r": 231.8074951171875, "b": 211.7656707763672, "coord_origin": "TOPLEFT"}, "confidence": 0.9554390907287598, "cells": [{"id": 13, "text": "Risk management", "bbox": {"l": 136.8, "t": 201.45636000000002, "r": 230.82613, "b": 211.61292000000003, "coord_origin": "TOPLEFT"}}]}, "text": "Risk management"}, {"label": "text", "id": 8, "page_no": 16, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.1630859375, "t": 216.0500030517578, "r": 544.07233, "b": 237.92694091796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9777550101280212, "cells": [{"id": 14, "text": "Risk management is used in IBM AI governance to identify, manage, monitor, and report on ", "bbox": {"l": 136.8, "t": 216.52868999999998, "r": 544.07233, "b": 225.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "risk and compliance initiatives at scale: ", "bbox": {"l": 136.8, "t": 228.5285, "r": 311.84103, "b": 237.74152000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Risk management is used in IBM AI governance to identify, manage, monitor, and report on risk and compliance initiatives at scale:"}, {"label": "list_item", "id": 9, "page_no": 16, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.6591033935547, "t": 244.775146484375, "r": 497.78207, "b": 254.89271545410156, "coord_origin": "TOPLEFT"}, "confidence": 0.9544404745101929, "cells": [{"id": 16, "text": "GLYPH", "bbox": {"l": 136.8, "t": 245.65770999999995, "r": 141.78, "b": 254.4325, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Automate facts and workflow management to comply with business standards.", "bbox": {"l": 151.20016, "t": 245.50829999999996, "r": 497.78207, "b": 254.72131000000002, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Automate facts and workflow management to comply with business standards."}, {"label": "list_item", "id": 10, "page_no": 16, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.6646270751953, "t": 261.35205078125, "r": 455.01303, "b": 271.70110999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9548507332801819, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.8, "t": 262.63751, "r": 141.78, "b": 271.41229, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Use dynamic dashboards for clear and concise customizable results.", "bbox": {"l": 151.20016, "t": 262.48810000000003, "r": 455.01303, "b": 271.70110999999997, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Use dynamic dashboards for clear and concise customizable results."}, {"label": "list_item", "id": 11, "page_no": 16, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.5814971923828, "t": 278.5577087402344, "r": 440.54816000000005, "b": 288.8544616699219, "coord_origin": "TOPLEFT"}, "confidence": 0.9628311991691589, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.8, "t": 279.67711999999995, "r": 141.78, "b": 288.45187, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Enhanced collaboration across multiple regions and geographies.", "bbox": {"l": 151.20016, "t": 279.52770999999996, "r": 440.54816000000005, "b": 288.74069, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Enhanced collaboration across multiple regions and geographies."}, {"label": "section_header", "id": 12, "page_no": 16, "cluster": {"id": 12, "label": "section_header", "bbox": {"l": 136.37454223632812, "t": 301.3377685546875, "r": 258.3398742675781, "b": 312.59286, "coord_origin": "TOPLEFT"}, "confidence": 0.9562974572181702, "cells": [{"id": 22, "text": "Regulatory compliance", "bbox": {"l": 136.8, "t": 302.43637, "r": 257.70956, "b": 312.59286, "coord_origin": "TOPLEFT"}}]}, "text": "Regulatory compliance"}, {"label": "text", "id": 13, "page_no": 16, "cluster": {"id": 13, "label": "text", "bbox": {"l": 135.9670867919922, "t": 316.8338928222656, "r": 547.24664, "b": 363.3339538574219, "coord_origin": "TOPLEFT"}, "confidence": 0.9852515459060669, "cells": [{"id": 23, "text": "Regulatory compliance is a set of rules that organizations must follow to protect sensitive ", "bbox": {"l": 136.8, "t": 317.50872999999996, "r": 531.79254, "b": 326.72171, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "information and ensure human safety. Any business that works with digital assets, consumer ", "bbox": {"l": 136.8, "t": 329.50854, "r": 547.24664, "b": 338.72153, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "data, health regulations, employee safety, and private communications is subject to regulatory ", "bbox": {"l": 136.8, "t": 341.50836, "r": 547.24664, "b": 350.72134, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "compliance.$^{3}$ The IBM AI governance solution for IBM Z includes the following tasks:", "bbox": {"l": 136.80002, "t": 353.5081799999999, "r": 510.17843999999997, "b": 362.72116, "coord_origin": "TOPLEFT"}}]}, "text": "Regulatory compliance is a set of rules that organizations must follow to protect sensitive information and ensure human safety. Any business that works with digital assets, consumer data, health regulations, employee safety, and private communications is subject to regulatory compliance.$^{3}$ The IBM AI governance solution for IBM Z includes the following tasks:"}, {"label": "list_item", "id": 14, "page_no": 16, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 135.71563720703125, "t": 369.3797607421875, "r": 433.33899, "b": 379.9487609863281, "coord_origin": "TOPLEFT"}, "confidence": 0.9577170014381409, "cells": [{"id": 27, "text": "GLYPH", "bbox": {"l": 136.80005, "t": 370.63791, "r": 141.78004, "b": 379.41269000000005, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Help adhere to external AI regulations for audit and compliance.", "bbox": {"l": 151.20021, "t": 370.48853, "r": 433.33899, "b": 379.70151, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Help adhere to external AI regulations for audit and compliance."}, {"label": "list_item", "id": 15, "page_no": 16, "cluster": {"id": 15, "label": "list_item", "bbox": {"l": 135.65516662597656, "t": 386.6414794921875, "r": 465.02979000000005, "b": 397.0399169921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9534773826599121, "cells": [{"id": 29, "text": "GLYPH", "bbox": {"l": 136.80005, "t": 387.6774899999999, "r": 141.78004, "b": 396.45227, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Convert external AI regulations into policies for automatic enforcement.", "bbox": {"l": 151.20021, "t": 387.52811, "r": 465.02979000000005, "b": 396.74109, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Convert external AI regulations into policies for automatic enforcement."}, {"label": "list_item", "id": 16, "page_no": 16, "cluster": {"id": 16, "label": "list_item", "bbox": {"l": 135.6472930908203, "t": 403.3809509277344, "r": 503.32617, "b": 413.72089000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9609959721565247, "cells": [{"id": 31, "text": "GLYPH", "bbox": {"l": 136.80005, "t": 404.65729, "r": 141.78004, "b": 413.43207, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Use dynamic dashboards for compliance status across policies and regulations.", "bbox": {"l": 151.20021, "t": 404.50790000000006, "r": 503.32617, "b": 413.72089000000005, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Use dynamic dashboards for compliance status across policies and regulations."}, {"label": "text", "id": 17, "page_no": 16, "cluster": {"id": 17, "label": "text", "bbox": {"l": 136.04916381835938, "t": 425.9317932128906, "r": 547.25159, "b": 472.63140869140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9851271510124207, "cells": [{"id": 33, "text": "Enterprises can develop AI models and deploy them by using IBM Watson Studio or WML on ", "bbox": {"l": 136.80003, "t": 426.52747, "r": 547.25159, "b": 435.74045, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "CP4D on Red Hat OpenShift on a virtual machine that is based on IBM z/VM or Red Hat ", "bbox": {"l": 136.80003, "t": 438.52728, "r": 529.5835, "b": 447.74026, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Enterprise Linux KVM on IBM Z. AI governance on IBM LinuxONE is supported in the ", "bbox": {"l": 136.80003, "t": 450.5271, "r": 516.83972, "b": 459.74008, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "following two ways: ", "bbox": {"l": 136.80003, "t": 462.52692, "r": 225.04564000000002, "b": 471.7399, "coord_origin": "TOPLEFT"}}]}, "text": "Enterprises can develop AI models and deploy them by using IBM Watson Studio or WML on CP4D on Red Hat OpenShift on a virtual machine that is based on IBM z/VM or Red Hat Enterprise Linux KVM on IBM Z. AI governance on IBM LinuxONE is supported in the following two ways:"}, {"label": "list_item", "id": 18, "page_no": 16, "cluster": {"id": 18, "label": "list_item", "bbox": {"l": 135.6191864013672, "t": 478.54052734375, "r": 526.84161, "b": 500.71951, "coord_origin": "TOPLEFT"}, "confidence": 0.9704018831253052, "cells": [{"id": 37, "text": "GLYPH", "bbox": {"l": 136.80003, "t": 479.6561, "r": 141.78003, "b": 488.43088, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Monitor the AI models with Watson OpenScale on CP4D on Red Hat OpenShift on a ", "bbox": {"l": 151.2002, "t": 479.50671, "r": 526.84161, "b": 488.7197, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "virtual machine on IBM Z.", "bbox": {"l": 151.2002, "t": 491.50653, "r": 264.54898, "b": 500.71951, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Monitor the AI models with Watson OpenScale on CP4D on Red Hat OpenShift on a virtual machine on IBM Z."}, {"label": "list_item", "id": 19, "page_no": 16, "cluster": {"id": 19, "label": "list_item", "bbox": {"l": 135.48377990722656, "t": 507.9300537109375, "r": 541.80554, "b": 566.3822631835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9851728677749634, "cells": [{"id": 40, "text": "GLYPH", "bbox": {"l": 136.80003, "t": 508.6955, "r": 141.78003, "b": 517.47028, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Enterprises can develop AI models by creating and training models by using Watson ", "bbox": {"l": 151.2002, "t": 508.54611, "r": 526.73706, "b": 517.75909, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Studio and development tools such as Jupyter Notebook or JupyterLab, and then ", "bbox": {"l": 151.2002, "t": 520.54593, "r": 512.31305, "b": 529.75891, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "deploying the model onto WML on CP4D on Red Hat OpenShift on a virtual machine on ", "bbox": {"l": 151.2002, "t": 532.5457200000001, "r": 541.80554, "b": 541.75873, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "IBM Z. Then, these enterprises can achieve end-end AI governance by running AI ", "bbox": {"l": 151.2002, "t": 544.54553, "r": 515.66156, "b": 553.7585300000001, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Factsheets, IBM Watson OpenScale, and IBM Watson OpenPagesfi on CP4D on x86.", "bbox": {"l": 151.2002, "t": 556.54533, "r": 533.65723, "b": 565.75833, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Enterprises can develop AI models by creating and training models by using Watson Studio and development tools such as Jupyter Notebook or JupyterLab, and then deploying the model onto WML on CP4D on Red Hat OpenShift on a virtual machine on IBM Z. Then, these enterprises can achieve end-end AI governance by running AI Factsheets, IBM Watson OpenScale, and IBM Watson OpenPagesfi on CP4D on x86."}, {"label": "text", "id": 20, "page_no": 16, "cluster": {"id": 20, "label": "text", "bbox": {"l": 136.42056274414062, "t": 577.5960693359375, "r": 512.49115, "b": 587.71814, "coord_origin": "TOPLEFT"}, "confidence": 0.9513794779777527, "cells": [{"id": 46, "text": "Figure 9 on page 16 shows the end-to-end flow for a remote AI governance solution. ", "bbox": {"l": 136.80003, "t": 578.50514, "r": 512.49115, "b": 587.71814, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 9 on page 16 shows the end-to-end flow for a remote AI governance solution."}, {"label": "footnote", "id": 21, "page_no": 16, "cluster": {"id": 21, "label": "footnote", "bbox": {"l": 136.24427795410156, "t": 725.0267333984375, "r": 418.4429931640625, "b": 735.0806274414062, "coord_origin": "TOPLEFT"}, "confidence": 0.9410406947135925, "cells": [{"id": 47, "text": "$^{3 }$https://www.proofpoint.com/us/threat-reference/regulatory-compliance", "bbox": {"l": 136.8, "t": 727.709961, "r": 418.26596, "b": 734.740341, "coord_origin": "TOPLEFT"}}]}, "text": "$^{3 }$https://www.proofpoint.com/us/threat-reference/regulatory-compliance"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 16, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 535.963623046875, "t": 754.3152465820312, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9105063676834106, "cells": [{"id": 0, "text": "15", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "15"}]}}, {"page_no": 17, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "16 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Figure 9 Remote AI governance solution end-to-end flow", "bbox": {"l": 64.800301, "t": 294.07828, "r": 295.07071, "b": 302.40329, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "To achieve end-to-end AI governance, complete the following steps:", "bbox": {"l": 136.8, "t": 316.00872999999996, "r": 438.01648, "b": 325.22171, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "1.", "bbox": {"l": 136.8, "t": 333.04831, "r": 145.20338, "b": 342.26129, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Create a model entry in IBM OpenPages by using CP4D on a x86 platform, as shown in ", "bbox": {"l": 148.0045, "t": 333.04831, "r": 541.70392, "b": 342.26129, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Figure 10.", "bbox": {"l": 151.20015, "t": 345.04813, "r": 196.25023, "b": 354.26111, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Figure 10 Creating a model entry in IBM OpenPages", "bbox": {"l": 64.800003, "t": 669.3179, "r": 279.02966, "b": 677.6429, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.45965576171875, "t": 754.4435424804688, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9134598970413208, "cells": [{"id": 0, "text": "16 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.34640502929688, "t": 754.726318359375, "r": 267.0744, "b": 764.1643676757812, "coord_origin": "TOPLEFT"}, "confidence": 0.9585385322570801, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "caption", "bbox": {"l": 64.34585571289062, "t": 293.41015625, "r": 295.9040222167969, "b": 302.8072509765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9478130340576172, "cells": [{"id": 2, "text": "Figure 9 Remote AI governance solution end-to-end flow", "bbox": {"l": 64.800301, "t": 294.07828, "r": 295.07071, "b": 302.40329, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 136.1533203125, "t": 315.34637451171875, "r": 438.01648, "b": 325.61328125, "coord_origin": "TOPLEFT"}, "confidence": 0.8973822593688965, "cells": [{"id": 3, "text": "To achieve end-to-end AI governance, complete the following steps:", "bbox": {"l": 136.8, "t": 316.00872999999996, "r": 438.01648, "b": 325.22171, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 136.8, "t": 331.922119140625, "r": 541.70392, "b": 354.27032470703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9647595286369324, "cells": [{"id": 4, "text": "1.", "bbox": {"l": 136.8, "t": 333.04831, "r": 145.20338, "b": 342.26129, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Create a model entry in IBM OpenPages by using CP4D on a x86 platform, as shown in ", "bbox": {"l": 148.0045, "t": 333.04831, "r": 541.70392, "b": 342.26129, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Figure 10.", "bbox": {"l": 151.20015, "t": 345.04813, "r": 196.25023, "b": 354.26111, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 64.25994873046875, "t": 668.81396484375, "r": 279.38360595703125, "b": 678.0313110351562, "coord_origin": "TOPLEFT"}, "confidence": 0.9575855135917664, "cells": [{"id": 7, "text": "Figure 10 Creating a model entry in IBM OpenPages", "bbox": {"l": 64.800003, "t": 669.3179, "r": 279.02966, "b": 677.6429, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "picture", "bbox": {"l": 63.88758850097656, "t": 368.6678771972656, "r": 547.6134033203125, "b": 666.1146240234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9861761927604675, "cells": []}, {"id": 7, "label": "picture", "bbox": {"l": 64.32939147949219, "t": 77.701416015625, "r": 547.455810546875, "b": 290.7998352050781, "coord_origin": "TOPLEFT"}, "confidence": 0.9852413535118103, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 17, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.45965576171875, "t": 754.4435424804688, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9134598970413208, "cells": [{"id": 0, "text": "16 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "16"}, {"label": "page_footer", "id": 1, "page_no": 17, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.34640502929688, "t": 754.726318359375, "r": 267.0744, "b": 764.1643676757812, "coord_origin": "TOPLEFT"}, "confidence": 0.9585385322570801, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"label": "caption", "id": 2, "page_no": 17, "cluster": {"id": 2, "label": "caption", "bbox": {"l": 64.34585571289062, "t": 293.41015625, "r": 295.9040222167969, "b": 302.8072509765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9478130340576172, "cells": [{"id": 2, "text": "Figure 9 Remote AI governance solution end-to-end flow", "bbox": {"l": 64.800301, "t": 294.07828, "r": 295.07071, "b": 302.40329, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 9 Remote AI governance solution end-to-end flow"}, {"label": "text", "id": 3, "page_no": 17, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.1533203125, "t": 315.34637451171875, "r": 438.01648, "b": 325.61328125, "coord_origin": "TOPLEFT"}, "confidence": 0.8973822593688965, "cells": [{"id": 3, "text": "To achieve end-to-end AI governance, complete the following steps:", "bbox": {"l": 136.8, "t": 316.00872999999996, "r": 438.01648, "b": 325.22171, "coord_origin": "TOPLEFT"}}]}, "text": "To achieve end-to-end AI governance, complete the following steps:"}, {"label": "list_item", "id": 4, "page_no": 17, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.8, "t": 331.922119140625, "r": 541.70392, "b": 354.27032470703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9647595286369324, "cells": [{"id": 4, "text": "1.", "bbox": {"l": 136.8, "t": 333.04831, "r": 145.20338, "b": 342.26129, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Create a model entry in IBM OpenPages by using CP4D on a x86 platform, as shown in ", "bbox": {"l": 148.0045, "t": 333.04831, "r": 541.70392, "b": 342.26129, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Figure 10.", "bbox": {"l": 151.20015, "t": 345.04813, "r": 196.25023, "b": 354.26111, "coord_origin": "TOPLEFT"}}]}, "text": "1. Create a model entry in IBM OpenPages by using CP4D on a x86 platform, as shown in Figure 10."}, {"label": "caption", "id": 5, "page_no": 17, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.25994873046875, "t": 668.81396484375, "r": 279.38360595703125, "b": 678.0313110351562, "coord_origin": "TOPLEFT"}, "confidence": 0.9575855135917664, "cells": [{"id": 7, "text": "Figure 10 Creating a model entry in IBM OpenPages", "bbox": {"l": 64.800003, "t": 669.3179, "r": 279.02966, "b": 677.6429, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 10 Creating a model entry in IBM OpenPages"}, {"label": "picture", "id": 6, "page_no": 17, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 63.88758850097656, "t": 368.6678771972656, "r": 547.6134033203125, "b": 666.1146240234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9861761927604675, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 7, "page_no": 17, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 64.32939147949219, "t": 77.701416015625, "r": 547.455810546875, "b": 290.7998352050781, "coord_origin": "TOPLEFT"}, "confidence": 0.9852413535118103, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "caption", "id": 2, "page_no": 17, "cluster": {"id": 2, "label": "caption", "bbox": {"l": 64.34585571289062, "t": 293.41015625, "r": 295.9040222167969, "b": 302.8072509765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9478130340576172, "cells": [{"id": 2, "text": "Figure 9 Remote AI governance solution end-to-end flow", "bbox": {"l": 64.800301, "t": 294.07828, "r": 295.07071, "b": 302.40329, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 9 Remote AI governance solution end-to-end flow"}, {"label": "text", "id": 3, "page_no": 17, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.1533203125, "t": 315.34637451171875, "r": 438.01648, "b": 325.61328125, "coord_origin": "TOPLEFT"}, "confidence": 0.8973822593688965, "cells": [{"id": 3, "text": "To achieve end-to-end AI governance, complete the following steps:", "bbox": {"l": 136.8, "t": 316.00872999999996, "r": 438.01648, "b": 325.22171, "coord_origin": "TOPLEFT"}}]}, "text": "To achieve end-to-end AI governance, complete the following steps:"}, {"label": "list_item", "id": 4, "page_no": 17, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.8, "t": 331.922119140625, "r": 541.70392, "b": 354.27032470703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9647595286369324, "cells": [{"id": 4, "text": "1.", "bbox": {"l": 136.8, "t": 333.04831, "r": 145.20338, "b": 342.26129, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Create a model entry in IBM OpenPages by using CP4D on a x86 platform, as shown in ", "bbox": {"l": 148.0045, "t": 333.04831, "r": 541.70392, "b": 342.26129, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Figure 10.", "bbox": {"l": 151.20015, "t": 345.04813, "r": 196.25023, "b": 354.26111, "coord_origin": "TOPLEFT"}}]}, "text": "1. Create a model entry in IBM OpenPages by using CP4D on a x86 platform, as shown in Figure 10."}, {"label": "caption", "id": 5, "page_no": 17, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.25994873046875, "t": 668.81396484375, "r": 279.38360595703125, "b": 678.0313110351562, "coord_origin": "TOPLEFT"}, "confidence": 0.9575855135917664, "cells": [{"id": 7, "text": "Figure 10 Creating a model entry in IBM OpenPages", "bbox": {"l": 64.800003, "t": 669.3179, "r": 279.02966, "b": 677.6429, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 10 Creating a model entry in IBM OpenPages"}, {"label": "picture", "id": 6, "page_no": 17, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 63.88758850097656, "t": 368.6678771972656, "r": 547.6134033203125, "b": 666.1146240234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9861761927604675, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 7, "page_no": 17, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 64.32939147949219, "t": 77.701416015625, "r": 547.455810546875, "b": 290.7998352050781, "coord_origin": "TOPLEFT"}, "confidence": 0.9852413535118103, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 17, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.45965576171875, "t": 754.4435424804688, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9134598970413208, "cells": [{"id": 0, "text": "16 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "16"}, {"label": "page_footer", "id": 1, "page_no": 17, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.34640502929688, "t": 754.726318359375, "r": 267.0744, "b": 764.1643676757812, "coord_origin": "TOPLEFT"}, "confidence": 0.9585385322570801, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}]}}, {"page_no": 18, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "17", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.20468, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Train a model by using Watson Studio and by using development tools such as Jupyter ", "bbox": {"l": 148.00638, "t": 71.50903000000005, "r": 538.99438, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Notebook or JupyterLab on CP4D on Red Hat OpenShift on a virtual machine on IBM Z, ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 542.91144, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "as shown in Figure 11.", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 251.74993999999998, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Figure 11 Training an AI model by using Watson Studio", "bbox": {"l": 64.800003, "t": 416.59799, "r": 290.02679, "b": 424.923, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "3.", "bbox": {"l": 136.8, "t": 438.58871000000005, "r": 145.19128, "b": 447.80170000000004, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Deploy the model by using WML on CP4D on Red Hat OpenShift on a virtual machine on ", "bbox": {"l": 147.98837, "t": 438.58871000000005, "r": 547.26868, "b": 447.80170000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "IBM Z, as shown in Figure 12.", "bbox": {"l": 151.20016, "t": 450.58853, "r": 283.89426, "b": 459.80151, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Figure 12 Deploying an AI model by using WML on Cloud Pak for Data", "bbox": {"l": 64.800003, "t": 726.618004, "r": 351.0603, "b": 734.943001, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 535.8695068359375, "t": 754.4427490234375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9015737175941467, "cells": [{"id": 0, "text": "17", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "list_item", "bbox": {"l": 135.98834228515625, "t": 70.76612854003906, "r": 542.91144, "b": 105.02376556396484, "coord_origin": "TOPLEFT"}, "confidence": 0.9786083102226257, "cells": [{"id": 1, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.20468, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Train a model by using Watson Studio and by using development tools such as Jupyter ", "bbox": {"l": 148.00638, "t": 71.50903000000005, "r": 538.99438, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Notebook or JupyterLab on CP4D on Red Hat OpenShift on a virtual machine on IBM Z, ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 542.91144, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "as shown in Figure 11.", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 251.74993999999998, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "caption", "bbox": {"l": 64.27749633789062, "t": 416.1407165527344, "r": 290.4153137207031, "b": 425.51422119140625, "coord_origin": "TOPLEFT"}, "confidence": 0.956462562084198, "cells": [{"id": 5, "text": "Figure 11 Training an AI model by using Watson Studio", "bbox": {"l": 64.800003, "t": 416.59799, "r": 290.02679, "b": 424.923, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "list_item", "bbox": {"l": 136.21717834472656, "t": 438.00299072265625, "r": 547.26868, "b": 460.15716552734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9648804664611816, "cells": [{"id": 6, "text": "3.", "bbox": {"l": 136.8, "t": 438.58871000000005, "r": 145.19128, "b": 447.80170000000004, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Deploy the model by using WML on CP4D on Red Hat OpenShift on a virtual machine on ", "bbox": {"l": 147.98837, "t": 438.58871000000005, "r": 547.26868, "b": 447.80170000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "IBM Z, as shown in Figure 12.", "bbox": {"l": 151.20016, "t": 450.58853, "r": 283.89426, "b": 459.80151, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "caption", "bbox": {"l": 64.3975601196289, "t": 726.088623046875, "r": 351.1659851074219, "b": 735.51611328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9549134373664856, "cells": [{"id": 9, "text": "Figure 12 Deploying an AI model by using WML on Cloud Pak for Data", "bbox": {"l": 64.800003, "t": 726.618004, "r": 351.0603, "b": 734.943001, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "picture", "bbox": {"l": 63.96794891357422, "t": 119.27977752685547, "r": 547.4464111328125, "b": 412.66949462890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9853487610816956, "cells": []}, {"id": 6, "label": "picture", "bbox": {"l": 64.33274841308594, "t": 473.3788757324219, "r": 547.9761962890625, "b": 723.4976196289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9851948618888855, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 18, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 535.8695068359375, "t": 754.4427490234375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9015737175941467, "cells": [{"id": 0, "text": "17", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "17"}, {"label": "list_item", "id": 1, "page_no": 18, "cluster": {"id": 1, "label": "list_item", "bbox": {"l": 135.98834228515625, "t": 70.76612854003906, "r": 542.91144, "b": 105.02376556396484, "coord_origin": "TOPLEFT"}, "confidence": 0.9786083102226257, "cells": [{"id": 1, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.20468, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Train a model by using Watson Studio and by using development tools such as Jupyter ", "bbox": {"l": 148.00638, "t": 71.50903000000005, "r": 538.99438, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Notebook or JupyterLab on CP4D on Red Hat OpenShift on a virtual machine on IBM Z, ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 542.91144, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "as shown in Figure 11.", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 251.74993999999998, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "2. Train a model by using Watson Studio and by using development tools such as Jupyter Notebook or JupyterLab on CP4D on Red Hat OpenShift on a virtual machine on IBM Z, as shown in Figure 11."}, {"label": "caption", "id": 2, "page_no": 18, "cluster": {"id": 2, "label": "caption", "bbox": {"l": 64.27749633789062, "t": 416.1407165527344, "r": 290.4153137207031, "b": 425.51422119140625, "coord_origin": "TOPLEFT"}, "confidence": 0.956462562084198, "cells": [{"id": 5, "text": "Figure 11 Training an AI model by using Watson Studio", "bbox": {"l": 64.800003, "t": 416.59799, "r": 290.02679, "b": 424.923, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 11 Training an AI model by using Watson Studio"}, {"label": "list_item", "id": 3, "page_no": 18, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 136.21717834472656, "t": 438.00299072265625, "r": 547.26868, "b": 460.15716552734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9648804664611816, "cells": [{"id": 6, "text": "3.", "bbox": {"l": 136.8, "t": 438.58871000000005, "r": 145.19128, "b": 447.80170000000004, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Deploy the model by using WML on CP4D on Red Hat OpenShift on a virtual machine on ", "bbox": {"l": 147.98837, "t": 438.58871000000005, "r": 547.26868, "b": 447.80170000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "IBM Z, as shown in Figure 12.", "bbox": {"l": 151.20016, "t": 450.58853, "r": 283.89426, "b": 459.80151, "coord_origin": "TOPLEFT"}}]}, "text": "3. Deploy the model by using WML on CP4D on Red Hat OpenShift on a virtual machine on IBM Z, as shown in Figure 12."}, {"label": "caption", "id": 4, "page_no": 18, "cluster": {"id": 4, "label": "caption", "bbox": {"l": 64.3975601196289, "t": 726.088623046875, "r": 351.1659851074219, "b": 735.51611328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9549134373664856, "cells": [{"id": 9, "text": "Figure 12 Deploying an AI model by using WML on Cloud Pak for Data", "bbox": {"l": 64.800003, "t": 726.618004, "r": 351.0603, "b": 734.943001, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 12 Deploying an AI model by using WML on Cloud Pak for Data"}, {"label": "picture", "id": 5, "page_no": 18, "cluster": {"id": 5, "label": "picture", "bbox": {"l": 63.96794891357422, "t": 119.27977752685547, "r": 547.4464111328125, "b": 412.66949462890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9853487610816956, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 6, "page_no": 18, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 64.33274841308594, "t": 473.3788757324219, "r": 547.9761962890625, "b": 723.4976196289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9851948618888855, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 1, "page_no": 18, "cluster": {"id": 1, "label": "list_item", "bbox": {"l": 135.98834228515625, "t": 70.76612854003906, "r": 542.91144, "b": 105.02376556396484, "coord_origin": "TOPLEFT"}, "confidence": 0.9786083102226257, "cells": [{"id": 1, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.20468, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Train a model by using Watson Studio and by using development tools such as Jupyter ", "bbox": {"l": 148.00638, "t": 71.50903000000005, "r": 538.99438, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Notebook or JupyterLab on CP4D on Red Hat OpenShift on a virtual machine on IBM Z, ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 542.91144, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "as shown in Figure 11.", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 251.74993999999998, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "2. Train a model by using Watson Studio and by using development tools such as Jupyter Notebook or JupyterLab on CP4D on Red Hat OpenShift on a virtual machine on IBM Z, as shown in Figure 11."}, {"label": "caption", "id": 2, "page_no": 18, "cluster": {"id": 2, "label": "caption", "bbox": {"l": 64.27749633789062, "t": 416.1407165527344, "r": 290.4153137207031, "b": 425.51422119140625, "coord_origin": "TOPLEFT"}, "confidence": 0.956462562084198, "cells": [{"id": 5, "text": "Figure 11 Training an AI model by using Watson Studio", "bbox": {"l": 64.800003, "t": 416.59799, "r": 290.02679, "b": 424.923, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 11 Training an AI model by using Watson Studio"}, {"label": "list_item", "id": 3, "page_no": 18, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 136.21717834472656, "t": 438.00299072265625, "r": 547.26868, "b": 460.15716552734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9648804664611816, "cells": [{"id": 6, "text": "3.", "bbox": {"l": 136.8, "t": 438.58871000000005, "r": 145.19128, "b": 447.80170000000004, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Deploy the model by using WML on CP4D on Red Hat OpenShift on a virtual machine on ", "bbox": {"l": 147.98837, "t": 438.58871000000005, "r": 547.26868, "b": 447.80170000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "IBM Z, as shown in Figure 12.", "bbox": {"l": 151.20016, "t": 450.58853, "r": 283.89426, "b": 459.80151, "coord_origin": "TOPLEFT"}}]}, "text": "3. Deploy the model by using WML on CP4D on Red Hat OpenShift on a virtual machine on IBM Z, as shown in Figure 12."}, {"label": "caption", "id": 4, "page_no": 18, "cluster": {"id": 4, "label": "caption", "bbox": {"l": 64.3975601196289, "t": 726.088623046875, "r": 351.1659851074219, "b": 735.51611328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9549134373664856, "cells": [{"id": 9, "text": "Figure 12 Deploying an AI model by using WML on Cloud Pak for Data", "bbox": {"l": 64.800003, "t": 726.618004, "r": 351.0603, "b": 734.943001, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 12 Deploying an AI model by using WML on Cloud Pak for Data"}, {"label": "picture", "id": 5, "page_no": 18, "cluster": {"id": 5, "label": "picture", "bbox": {"l": 63.96794891357422, "t": 119.27977752685547, "r": 547.4464111328125, "b": 412.66949462890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9853487610816956, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 6, "page_no": 18, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 64.33274841308594, "t": 473.3788757324219, "r": 547.9761962890625, "b": 723.4976196289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9851948618888855, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 18, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 535.8695068359375, "t": 754.4427490234375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9015737175941467, "cells": [{"id": 0, "text": "17", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "17"}]}}, {"page_no": 19, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "18 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "4.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.20747, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Track the external model lifecycle by browsing through the Catalogs/Platform assets ", "bbox": {"l": 148.00995, "t": 71.50867000000005, "r": 525.63037, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "catalog by using AI Factsheets and OpenPages while using CP4D on an x86 platform, as ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 547.24561, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "shown in Figure 13. The external model (deployed on CP4D on Red Hat OpenShift on a ", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 542.44379, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "virtual machine on IBM Z) is saved as a platform asset catalog on the x86 platform.", "bbox": {"l": 151.20016, "t": 107.50811999999996, "r": 517.94836, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Figure 13 External model", "bbox": {"l": 136.8, "t": 388.698, "r": 242.17379999999997, "b": 397.02301, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "You can track the model through each stage of the model lifecycle, as shown in Figure 14, ", "bbox": {"l": 151.2, "t": 410.68872, "r": 547.29028, "b": 419.90170000000006, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "by using AI Factsheets and OpenPages.", "bbox": {"l": 151.2, "t": 422.68854, "r": 330.03784, "b": 431.90152, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Figure 14 Tracking the model", "bbox": {"l": 64.800003, "t": 711.197899, "r": 186.63029, "b": 719.522896, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.46235656738281, "t": 754.4052734375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9125085473060608, "cells": [{"id": 0, "text": "18 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.31233978271484, "t": 754.6796875, "r": 267.0744, "b": 764.2430419921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9569898843765259, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 135.78439331054688, "t": 70.60037231445312, "r": 547.24561, "b": 117.01048278808594, "coord_origin": "TOPLEFT"}, "confidence": 0.9820504188537598, "cells": [{"id": 2, "text": "4.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.20747, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Track the external model lifecycle by browsing through the Catalogs/Platform assets ", "bbox": {"l": 148.00995, "t": 71.50867000000005, "r": 525.63037, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "catalog by using AI Factsheets and OpenPages while using CP4D on an x86 platform, as ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 547.24561, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "shown in Figure 13. The external model (deployed on CP4D on Red Hat OpenShift on a ", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 542.44379, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "virtual machine on IBM Z) is saved as a platform asset catalog on the x86 platform.", "bbox": {"l": 151.20016, "t": 107.50811999999996, "r": 517.94836, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.2765350341797, "t": 388.18072509765625, "r": 242.76724243164062, "b": 397.4988708496094, "coord_origin": "TOPLEFT"}, "confidence": 0.9542616605758667, "cells": [{"id": 7, "text": "Figure 13 External model", "bbox": {"l": 136.8, "t": 388.698, "r": 242.17379999999997, "b": 397.02301, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 150.45053100585938, "t": 409.876708984375, "r": 547.29028, "b": 432.26702880859375, "coord_origin": "TOPLEFT"}, "confidence": 0.9414600729942322, "cells": [{"id": 8, "text": "You can track the model through each stage of the model lifecycle, as shown in Figure 14, ", "bbox": {"l": 151.2, "t": 410.68872, "r": 547.29028, "b": 419.90170000000006, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "by using AI Factsheets and OpenPages.", "bbox": {"l": 151.2, "t": 422.68854, "r": 330.03784, "b": 431.90152, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 64.26177978515625, "t": 710.1182861328125, "r": 187.44825744628906, "b": 719.7200927734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9529473781585693, "cells": [{"id": 10, "text": "Figure 14 Tracking the model", "bbox": {"l": 64.800003, "t": 711.197899, "r": 186.63029, "b": 719.522896, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "picture", "bbox": {"l": 136.07406616210938, "t": 130.84774780273438, "r": 533.5489501953125, "b": 384.489013671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9865854978561401, "cells": []}, {"id": 7, "label": "picture", "bbox": {"l": 64.0412368774414, "t": 445.4599609375, "r": 547.8551635742188, "b": 707.6512451171875, "coord_origin": "TOPLEFT"}, "confidence": 0.9851176738739014, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 19, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.46235656738281, "t": 754.4052734375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9125085473060608, "cells": [{"id": 0, "text": "18 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "18"}, {"label": "page_footer", "id": 1, "page_no": 19, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.31233978271484, "t": 754.6796875, "r": 267.0744, "b": 764.2430419921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9569898843765259, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"label": "list_item", "id": 2, "page_no": 19, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.78439331054688, "t": 70.60037231445312, "r": 547.24561, "b": 117.01048278808594, "coord_origin": "TOPLEFT"}, "confidence": 0.9820504188537598, "cells": [{"id": 2, "text": "4.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.20747, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Track the external model lifecycle by browsing through the Catalogs/Platform assets ", "bbox": {"l": 148.00995, "t": 71.50867000000005, "r": 525.63037, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "catalog by using AI Factsheets and OpenPages while using CP4D on an x86 platform, as ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 547.24561, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "shown in Figure 13. The external model (deployed on CP4D on Red Hat OpenShift on a ", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 542.44379, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "virtual machine on IBM Z) is saved as a platform asset catalog on the x86 platform.", "bbox": {"l": 151.20016, "t": 107.50811999999996, "r": 517.94836, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "4. Track the external model lifecycle by browsing through the Catalogs/Platform assets catalog by using AI Factsheets and OpenPages while using CP4D on an x86 platform, as shown in Figure 13. The external model (deployed on CP4D on Red Hat OpenShift on a virtual machine on IBM Z) is saved as a platform asset catalog on the x86 platform."}, {"label": "caption", "id": 3, "page_no": 19, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.2765350341797, "t": 388.18072509765625, "r": 242.76724243164062, "b": 397.4988708496094, "coord_origin": "TOPLEFT"}, "confidence": 0.9542616605758667, "cells": [{"id": 7, "text": "Figure 13 External model", "bbox": {"l": 136.8, "t": 388.698, "r": 242.17379999999997, "b": 397.02301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 13 External model"}, {"label": "text", "id": 4, "page_no": 19, "cluster": {"id": 4, "label": "text", "bbox": {"l": 150.45053100585938, "t": 409.876708984375, "r": 547.29028, "b": 432.26702880859375, "coord_origin": "TOPLEFT"}, "confidence": 0.9414600729942322, "cells": [{"id": 8, "text": "You can track the model through each stage of the model lifecycle, as shown in Figure 14, ", "bbox": {"l": 151.2, "t": 410.68872, "r": 547.29028, "b": 419.90170000000006, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "by using AI Factsheets and OpenPages.", "bbox": {"l": 151.2, "t": 422.68854, "r": 330.03784, "b": 431.90152, "coord_origin": "TOPLEFT"}}]}, "text": "You can track the model through each stage of the model lifecycle, as shown in Figure 14, by using AI Factsheets and OpenPages."}, {"label": "caption", "id": 5, "page_no": 19, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.26177978515625, "t": 710.1182861328125, "r": 187.44825744628906, "b": 719.7200927734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9529473781585693, "cells": [{"id": 10, "text": "Figure 14 Tracking the model", "bbox": {"l": 64.800003, "t": 711.197899, "r": 186.63029, "b": 719.522896, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 14 Tracking the model"}, {"label": "picture", "id": 6, "page_no": 19, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 136.07406616210938, "t": 130.84774780273438, "r": 533.5489501953125, "b": 384.489013671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9865854978561401, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 7, "page_no": 19, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 64.0412368774414, "t": 445.4599609375, "r": 547.8551635742188, "b": 707.6512451171875, "coord_origin": "TOPLEFT"}, "confidence": 0.9851176738739014, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 19, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.78439331054688, "t": 70.60037231445312, "r": 547.24561, "b": 117.01048278808594, "coord_origin": "TOPLEFT"}, "confidence": 0.9820504188537598, "cells": [{"id": 2, "text": "4.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.20747, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Track the external model lifecycle by browsing through the Catalogs/Platform assets ", "bbox": {"l": 148.00995, "t": 71.50867000000005, "r": 525.63037, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "catalog by using AI Factsheets and OpenPages while using CP4D on an x86 platform, as ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 547.24561, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "shown in Figure 13. The external model (deployed on CP4D on Red Hat OpenShift on a ", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 542.44379, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "virtual machine on IBM Z) is saved as a platform asset catalog on the x86 platform.", "bbox": {"l": 151.20016, "t": 107.50811999999996, "r": 517.94836, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "4. Track the external model lifecycle by browsing through the Catalogs/Platform assets catalog by using AI Factsheets and OpenPages while using CP4D on an x86 platform, as shown in Figure 13. The external model (deployed on CP4D on Red Hat OpenShift on a virtual machine on IBM Z) is saved as a platform asset catalog on the x86 platform."}, {"label": "caption", "id": 3, "page_no": 19, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.2765350341797, "t": 388.18072509765625, "r": 242.76724243164062, "b": 397.4988708496094, "coord_origin": "TOPLEFT"}, "confidence": 0.9542616605758667, "cells": [{"id": 7, "text": "Figure 13 External model", "bbox": {"l": 136.8, "t": 388.698, "r": 242.17379999999997, "b": 397.02301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 13 External model"}, {"label": "text", "id": 4, "page_no": 19, "cluster": {"id": 4, "label": "text", "bbox": {"l": 150.45053100585938, "t": 409.876708984375, "r": 547.29028, "b": 432.26702880859375, "coord_origin": "TOPLEFT"}, "confidence": 0.9414600729942322, "cells": [{"id": 8, "text": "You can track the model through each stage of the model lifecycle, as shown in Figure 14, ", "bbox": {"l": 151.2, "t": 410.68872, "r": 547.29028, "b": 419.90170000000006, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "by using AI Factsheets and OpenPages.", "bbox": {"l": 151.2, "t": 422.68854, "r": 330.03784, "b": 431.90152, "coord_origin": "TOPLEFT"}}]}, "text": "You can track the model through each stage of the model lifecycle, as shown in Figure 14, by using AI Factsheets and OpenPages."}, {"label": "caption", "id": 5, "page_no": 19, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.26177978515625, "t": 710.1182861328125, "r": 187.44825744628906, "b": 719.7200927734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9529473781585693, "cells": [{"id": 10, "text": "Figure 14 Tracking the model", "bbox": {"l": 64.800003, "t": 711.197899, "r": 186.63029, "b": 719.522896, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 14 Tracking the model"}, {"label": "picture", "id": 6, "page_no": 19, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 136.07406616210938, "t": 130.84774780273438, "r": 533.5489501953125, "b": 384.489013671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9865854978561401, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 7, "page_no": 19, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 64.0412368774414, "t": 445.4599609375, "r": 547.8551635742188, "b": 707.6512451171875, "coord_origin": "TOPLEFT"}, "confidence": 0.9851176738739014, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 19, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.46235656738281, "t": 754.4052734375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9125085473060608, "cells": [{"id": 0, "text": "18 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "18"}, {"label": "page_footer", "id": 1, "page_no": 19, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.31233978271484, "t": 754.6796875, "r": 267.0744, "b": 764.2430419921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9569898843765259, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}]}}, {"page_no": 20, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "19", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "You can see that the model facts are tracked and synchronized to IBM OpenPages for risk ", "bbox": {"l": 151.19977, "t": 71.50903000000005, "r": 547.22223, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "management, as shown in Figure 15. ", "bbox": {"l": 151.19977, "t": 83.50885000000017, "r": 318.41922, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 15 Model facts that are tracked and synchronized to IBM OpenPages on an x86 platform", "bbox": {"l": 64.800003, "t": 415.33797999999996, "r": 449.53204, "b": 423.6629899999999, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 535.8822631835938, "t": 754.3675537109375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9091770052909851, "cells": [{"id": 0, "text": "19", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "text", "bbox": {"l": 150.36676025390625, "t": 70.72309875488281, "r": 547.22223, "b": 92.90152740478516, "coord_origin": "TOPLEFT"}, "confidence": 0.8821508288383484, "cells": [{"id": 1, "text": "You can see that the model facts are tracked and synchronized to IBM OpenPages for risk ", "bbox": {"l": 151.19977, "t": 71.50903000000005, "r": 547.22223, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "management, as shown in Figure 15. ", "bbox": {"l": 151.19977, "t": 83.50885000000017, "r": 318.41922, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "caption", "bbox": {"l": 64.23995208740234, "t": 414.707763671875, "r": 450.36871337890625, "b": 423.87420654296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9387805461883545, "cells": [{"id": 3, "text": "Figure 15 Model facts that are tracked and synchronized to IBM OpenPages on an x86 platform", "bbox": {"l": 64.800003, "t": 415.33797999999996, "r": 449.53204, "b": 423.6629899999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "picture", "bbox": {"l": 64.23773956298828, "t": 107.1172103881836, "r": 547.417236328125, "b": 411.15496826171875, "coord_origin": "TOPLEFT"}, "confidence": 0.9859113693237305, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 20, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 535.8822631835938, "t": 754.3675537109375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9091770052909851, "cells": [{"id": 0, "text": "19", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "19"}, {"label": "text", "id": 1, "page_no": 20, "cluster": {"id": 1, "label": "text", "bbox": {"l": 150.36676025390625, "t": 70.72309875488281, "r": 547.22223, "b": 92.90152740478516, "coord_origin": "TOPLEFT"}, "confidence": 0.8821508288383484, "cells": [{"id": 1, "text": "You can see that the model facts are tracked and synchronized to IBM OpenPages for risk ", "bbox": {"l": 151.19977, "t": 71.50903000000005, "r": 547.22223, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "management, as shown in Figure 15. ", "bbox": {"l": 151.19977, "t": 83.50885000000017, "r": 318.41922, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "You can see that the model facts are tracked and synchronized to IBM OpenPages for risk management, as shown in Figure 15."}, {"label": "caption", "id": 2, "page_no": 20, "cluster": {"id": 2, "label": "caption", "bbox": {"l": 64.23995208740234, "t": 414.707763671875, "r": 450.36871337890625, "b": 423.87420654296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9387805461883545, "cells": [{"id": 3, "text": "Figure 15 Model facts that are tracked and synchronized to IBM OpenPages on an x86 platform", "bbox": {"l": 64.800003, "t": 415.33797999999996, "r": 449.53204, "b": 423.6629899999999, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 15 Model facts that are tracked and synchronized to IBM OpenPages on an x86 platform"}, {"label": "picture", "id": 3, "page_no": 20, "cluster": {"id": 3, "label": "picture", "bbox": {"l": 64.23773956298828, "t": 107.1172103881836, "r": 547.417236328125, "b": 411.15496826171875, "coord_origin": "TOPLEFT"}, "confidence": 0.9859113693237305, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 1, "page_no": 20, "cluster": {"id": 1, "label": "text", "bbox": {"l": 150.36676025390625, "t": 70.72309875488281, "r": 547.22223, "b": 92.90152740478516, "coord_origin": "TOPLEFT"}, "confidence": 0.8821508288383484, "cells": [{"id": 1, "text": "You can see that the model facts are tracked and synchronized to IBM OpenPages for risk ", "bbox": {"l": 151.19977, "t": 71.50903000000005, "r": 547.22223, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "management, as shown in Figure 15. ", "bbox": {"l": 151.19977, "t": 83.50885000000017, "r": 318.41922, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "You can see that the model facts are tracked and synchronized to IBM OpenPages for risk management, as shown in Figure 15."}, {"label": "caption", "id": 2, "page_no": 20, "cluster": {"id": 2, "label": "caption", "bbox": {"l": 64.23995208740234, "t": 414.707763671875, "r": 450.36871337890625, "b": 423.87420654296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9387805461883545, "cells": [{"id": 3, "text": "Figure 15 Model facts that are tracked and synchronized to IBM OpenPages on an x86 platform", "bbox": {"l": 64.800003, "t": 415.33797999999996, "r": 449.53204, "b": 423.6629899999999, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 15 Model facts that are tracked and synchronized to IBM OpenPages on an x86 platform"}, {"label": "picture", "id": 3, "page_no": 20, "cluster": {"id": 3, "label": "picture", "bbox": {"l": 64.23773956298828, "t": 107.1172103881836, "r": 547.417236328125, "b": 411.15496826171875, "coord_origin": "TOPLEFT"}, "confidence": 0.9859113693237305, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 20, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 535.8822631835938, "t": 754.3675537109375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9091770052909851, "cells": [{"id": 0, "text": "19", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "19"}]}}, {"page_no": 21, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "20 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "5.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.20818, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Create an external model by using IBM OpenScale on the x86 platform, as shown in ", "bbox": {"l": 148.01088, "t": 71.50867000000005, "r": 525.69312, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 16.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 196.25024, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Figure 16 Creating an external model on an x86 platform", "bbox": {"l": 64.800003, "t": 384.798, "r": 295.03442, "b": 393.12302, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "IBM OpenScale provides a comprehensive dashboard that tracks fairness, quality monitoring, ", "bbox": {"l": 136.8, "t": 406.78873, "r": 547.29736, "b": 416.00171, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "drift, and explainability of a model. Fairness determines whether your model produces biased ", "bbox": {"l": 136.8, "t": 418.78853999999995, "r": 547.13806, "b": 428.00152999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "outcomes. Quality determines how well your model predicts outcomes. Drift is the ", "bbox": {"l": 136.79999, "t": 430.78836000000007, "r": 499.57693, "b": 440.00134, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "degradation of predictive performance over time. A sample is shown in Figure 17 on page 21.", "bbox": {"l": 136.8, "t": 442.78818, "r": 547.32935, "b": 452.00116, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.867469787597656, "t": 754.3300170898438, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9187637567520142, "cells": [{"id": 0, "text": "20 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.32005310058594, "t": 754.70068359375, "r": 267.0744, "b": 764.1736450195312, "coord_origin": "TOPLEFT"}, "confidence": 0.957935094833374, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 136.09112548828125, "t": 70.54534149169922, "r": 525.69312, "b": 93.12995147705078, "coord_origin": "TOPLEFT"}, "confidence": 0.9633587598800659, "cells": [{"id": 2, "text": "5.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.20818, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Create an external model by using IBM OpenScale on the x86 platform, as shown in ", "bbox": {"l": 148.01088, "t": 71.50867000000005, "r": 525.69312, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 16.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 196.25024, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.40975189208984, "t": 384.0537414550781, "r": 295.9855651855469, "b": 393.44476318359375, "coord_origin": "TOPLEFT"}, "confidence": 0.950371503829956, "cells": [{"id": 5, "text": "Figure 16 Creating an external model on an x86 platform", "bbox": {"l": 64.800003, "t": 384.798, "r": 295.03442, "b": 393.12302, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.78622436523438, "t": 405.9812316894531, "r": 547.32935, "b": 452.30450439453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9535754323005676, "cells": [{"id": 6, "text": "IBM OpenScale provides a comprehensive dashboard that tracks fairness, quality monitoring, ", "bbox": {"l": 136.8, "t": 406.78873, "r": 547.29736, "b": 416.00171, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "drift, and explainability of a model. Fairness determines whether your model produces biased ", "bbox": {"l": 136.8, "t": 418.78853999999995, "r": 547.13806, "b": 428.00152999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "outcomes. Quality determines how well your model predicts outcomes. Drift is the ", "bbox": {"l": 136.79999, "t": 430.78836000000007, "r": 499.57693, "b": 440.00134, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "degradation of predictive performance over time. A sample is shown in Figure 17 on page 21.", "bbox": {"l": 136.8, "t": 442.78818, "r": 547.32935, "b": 452.00116, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "picture", "bbox": {"l": 63.799659729003906, "t": 107.32193756103516, "r": 547.7122192382812, "b": 381.23724365234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9833127856254578, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 21, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.867469787597656, "t": 754.3300170898438, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9187637567520142, "cells": [{"id": 0, "text": "20 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "20"}, {"label": "page_footer", "id": 1, "page_no": 21, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.32005310058594, "t": 754.70068359375, "r": 267.0744, "b": 764.1736450195312, "coord_origin": "TOPLEFT"}, "confidence": 0.957935094833374, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"label": "list_item", "id": 2, "page_no": 21, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.09112548828125, "t": 70.54534149169922, "r": 525.69312, "b": 93.12995147705078, "coord_origin": "TOPLEFT"}, "confidence": 0.9633587598800659, "cells": [{"id": 2, "text": "5.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.20818, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Create an external model by using IBM OpenScale on the x86 platform, as shown in ", "bbox": {"l": 148.01088, "t": 71.50867000000005, "r": 525.69312, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 16.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 196.25024, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "5. Create an external model by using IBM OpenScale on the x86 platform, as shown in Figure 16."}, {"label": "caption", "id": 3, "page_no": 21, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.40975189208984, "t": 384.0537414550781, "r": 295.9855651855469, "b": 393.44476318359375, "coord_origin": "TOPLEFT"}, "confidence": 0.950371503829956, "cells": [{"id": 5, "text": "Figure 16 Creating an external model on an x86 platform", "bbox": {"l": 64.800003, "t": 384.798, "r": 295.03442, "b": 393.12302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 16 Creating an external model on an x86 platform"}, {"label": "text", "id": 4, "page_no": 21, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.78622436523438, "t": 405.9812316894531, "r": 547.32935, "b": 452.30450439453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9535754323005676, "cells": [{"id": 6, "text": "IBM OpenScale provides a comprehensive dashboard that tracks fairness, quality monitoring, ", "bbox": {"l": 136.8, "t": 406.78873, "r": 547.29736, "b": 416.00171, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "drift, and explainability of a model. Fairness determines whether your model produces biased ", "bbox": {"l": 136.8, "t": 418.78853999999995, "r": 547.13806, "b": 428.00152999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "outcomes. Quality determines how well your model predicts outcomes. Drift is the ", "bbox": {"l": 136.79999, "t": 430.78836000000007, "r": 499.57693, "b": 440.00134, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "degradation of predictive performance over time. A sample is shown in Figure 17 on page 21.", "bbox": {"l": 136.8, "t": 442.78818, "r": 547.32935, "b": 452.00116, "coord_origin": "TOPLEFT"}}]}, "text": "IBM OpenScale provides a comprehensive dashboard that tracks fairness, quality monitoring, drift, and explainability of a model. Fairness determines whether your model produces biased outcomes. Quality determines how well your model predicts outcomes. Drift is the degradation of predictive performance over time. A sample is shown in Figure 17 on page 21."}, {"label": "picture", "id": 5, "page_no": 21, "cluster": {"id": 5, "label": "picture", "bbox": {"l": 63.799659729003906, "t": 107.32193756103516, "r": 547.7122192382812, "b": 381.23724365234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9833127856254578, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 21, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.09112548828125, "t": 70.54534149169922, "r": 525.69312, "b": 93.12995147705078, "coord_origin": "TOPLEFT"}, "confidence": 0.9633587598800659, "cells": [{"id": 2, "text": "5.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.20818, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Create an external model by using IBM OpenScale on the x86 platform, as shown in ", "bbox": {"l": 148.01088, "t": 71.50867000000005, "r": 525.69312, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 16.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 196.25024, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "5. Create an external model by using IBM OpenScale on the x86 platform, as shown in Figure 16."}, {"label": "caption", "id": 3, "page_no": 21, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.40975189208984, "t": 384.0537414550781, "r": 295.9855651855469, "b": 393.44476318359375, "coord_origin": "TOPLEFT"}, "confidence": 0.950371503829956, "cells": [{"id": 5, "text": "Figure 16 Creating an external model on an x86 platform", "bbox": {"l": 64.800003, "t": 384.798, "r": 295.03442, "b": 393.12302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 16 Creating an external model on an x86 platform"}, {"label": "text", "id": 4, "page_no": 21, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.78622436523438, "t": 405.9812316894531, "r": 547.32935, "b": 452.30450439453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9535754323005676, "cells": [{"id": 6, "text": "IBM OpenScale provides a comprehensive dashboard that tracks fairness, quality monitoring, ", "bbox": {"l": 136.8, "t": 406.78873, "r": 547.29736, "b": 416.00171, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "drift, and explainability of a model. Fairness determines whether your model produces biased ", "bbox": {"l": 136.8, "t": 418.78853999999995, "r": 547.13806, "b": 428.00152999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "outcomes. Quality determines how well your model predicts outcomes. Drift is the ", "bbox": {"l": 136.79999, "t": 430.78836000000007, "r": 499.57693, "b": 440.00134, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "degradation of predictive performance over time. A sample is shown in Figure 17 on page 21.", "bbox": {"l": 136.8, "t": 442.78818, "r": 547.32935, "b": 452.00116, "coord_origin": "TOPLEFT"}}]}, "text": "IBM OpenScale provides a comprehensive dashboard that tracks fairness, quality monitoring, drift, and explainability of a model. Fairness determines whether your model produces biased outcomes. Quality determines how well your model predicts outcomes. Drift is the degradation of predictive performance over time. A sample is shown in Figure 17 on page 21."}, {"label": "picture", "id": 5, "page_no": 21, "cluster": {"id": 5, "label": "picture", "bbox": {"l": 63.799659729003906, "t": 107.32193756103516, "r": 547.7122192382812, "b": 381.23724365234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9833127856254578, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 21, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.867469787597656, "t": 754.3300170898438, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9187637567520142, "cells": [{"id": 0, "text": "20 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "20"}, {"label": "page_footer", "id": 1, "page_no": 21, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.32005310058594, "t": 754.70068359375, "r": 267.0744, "b": 764.1736450195312, "coord_origin": "TOPLEFT"}, "confidence": 0.957935094833374, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}]}}, {"page_no": 22, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "21", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Figure 17 IBM OpenScale dashboard that is used to monitor the external model", "bbox": {"l": 64.800003, "t": 354.01801, "r": 385.45013, "b": 362.34302, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "You developed and deployed the AI model by using Watson Studio, WML on CP4D on Red ", "bbox": {"l": 136.8, "t": 376.00872999999996, "r": 542.91388, "b": 385.22171, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Hat OpenShift on a virtual machine on IBM Z, and end-to-end AI model governance by ", "bbox": {"l": 136.8, "t": 388.00854, "r": 521.86963, "b": 397.22153, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "leveraging AI Factsheets, OpenScale, and OpenPages on CP4D on a x86 platform. Figure 18 ", "bbox": {"l": 136.8, "t": 400.00836, "r": 547.21674, "b": 409.22134, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "shows end-to-end AI governance when using IBM OpenPages, AI Factsheets, and ", "bbox": {"l": 136.8, "t": 412.0081799999999, "r": 504.60781999999995, "b": 421.22116, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "OpenScale. ", "bbox": {"l": 136.8, "t": 424.00800000000004, "r": 191.81007, "b": 433.22098, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Figure 18 Final result: End-to-end AI governance when using IBM OpenPages, AI Factsheets, and OpenScale", "bbox": {"l": 64.800003, "t": 725.297897, "r": 507.3417400000001, "b": 733.622898, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 535.4277954101562, "t": 754.2350463867188, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9060306549072266, "cells": [{"id": 0, "text": "21", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "caption", "bbox": {"l": 64.26493835449219, "t": 353.3095397949219, "r": 386.60101318359375, "b": 362.7451477050781, "coord_origin": "TOPLEFT"}, "confidence": 0.9381591081619263, "cells": [{"id": 1, "text": "Figure 17 IBM OpenScale dashboard that is used to monitor the external model", "bbox": {"l": 64.800003, "t": 354.01801, "r": 385.45013, "b": 362.34302, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.85134887695312, "t": 375.21990966796875, "r": 547.21674, "b": 433.3600769042969, "coord_origin": "TOPLEFT"}, "confidence": 0.9801287055015564, "cells": [{"id": 2, "text": "You developed and deployed the AI model by using Watson Studio, WML on CP4D on Red ", "bbox": {"l": 136.8, "t": 376.00872999999996, "r": 542.91388, "b": 385.22171, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Hat OpenShift on a virtual machine on IBM Z, and end-to-end AI model governance by ", "bbox": {"l": 136.8, "t": 388.00854, "r": 521.86963, "b": 397.22153, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "leveraging AI Factsheets, OpenScale, and OpenPages on CP4D on a x86 platform. Figure 18 ", "bbox": {"l": 136.8, "t": 400.00836, "r": 547.21674, "b": 409.22134, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "shows end-to-end AI governance when using IBM OpenPages, AI Factsheets, and ", "bbox": {"l": 136.8, "t": 412.0081799999999, "r": 504.60781999999995, "b": 421.22116, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "OpenScale. ", "bbox": {"l": 136.8, "t": 424.00800000000004, "r": 191.81007, "b": 433.22098, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.34110260009766, "t": 724.7535400390625, "r": 507.7935485839844, "b": 734.0853271484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9460791945457458, "cells": [{"id": 7, "text": "Figure 18 Final result: End-to-end AI governance when using IBM OpenPages, AI Factsheets, and OpenScale", "bbox": {"l": 64.800003, "t": 725.297897, "r": 507.3417400000001, "b": 733.622898, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "picture", "bbox": {"l": 64.15648651123047, "t": 447.1334533691406, "r": 547.9522705078125, "b": 721.9699096679688, "coord_origin": "TOPLEFT"}, "confidence": 0.9854127764701843, "cells": []}, {"id": 5, "label": "picture", "bbox": {"l": 63.62750244140625, "t": 77.65582275390625, "r": 547.6529541015625, "b": 350.53533935546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9835888147354126, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 22, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 535.4277954101562, "t": 754.2350463867188, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9060306549072266, "cells": [{"id": 0, "text": "21", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "21"}, {"label": "caption", "id": 1, "page_no": 22, "cluster": {"id": 1, "label": "caption", "bbox": {"l": 64.26493835449219, "t": 353.3095397949219, "r": 386.60101318359375, "b": 362.7451477050781, "coord_origin": "TOPLEFT"}, "confidence": 0.9381591081619263, "cells": [{"id": 1, "text": "Figure 17 IBM OpenScale dashboard that is used to monitor the external model", "bbox": {"l": 64.800003, "t": 354.01801, "r": 385.45013, "b": 362.34302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 17 IBM OpenScale dashboard that is used to monitor the external model"}, {"label": "text", "id": 2, "page_no": 22, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.85134887695312, "t": 375.21990966796875, "r": 547.21674, "b": 433.3600769042969, "coord_origin": "TOPLEFT"}, "confidence": 0.9801287055015564, "cells": [{"id": 2, "text": "You developed and deployed the AI model by using Watson Studio, WML on CP4D on Red ", "bbox": {"l": 136.8, "t": 376.00872999999996, "r": 542.91388, "b": 385.22171, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Hat OpenShift on a virtual machine on IBM Z, and end-to-end AI model governance by ", "bbox": {"l": 136.8, "t": 388.00854, "r": 521.86963, "b": 397.22153, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "leveraging AI Factsheets, OpenScale, and OpenPages on CP4D on a x86 platform. Figure 18 ", "bbox": {"l": 136.8, "t": 400.00836, "r": 547.21674, "b": 409.22134, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "shows end-to-end AI governance when using IBM OpenPages, AI Factsheets, and ", "bbox": {"l": 136.8, "t": 412.0081799999999, "r": 504.60781999999995, "b": 421.22116, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "OpenScale. ", "bbox": {"l": 136.8, "t": 424.00800000000004, "r": 191.81007, "b": 433.22098, "coord_origin": "TOPLEFT"}}]}, "text": "You developed and deployed the AI model by using Watson Studio, WML on CP4D on Red Hat OpenShift on a virtual machine on IBM Z, and end-to-end AI model governance by leveraging AI Factsheets, OpenScale, and OpenPages on CP4D on a x86 platform. Figure 18 shows end-to-end AI governance when using IBM OpenPages, AI Factsheets, and OpenScale."}, {"label": "caption", "id": 3, "page_no": 22, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.34110260009766, "t": 724.7535400390625, "r": 507.7935485839844, "b": 734.0853271484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9460791945457458, "cells": [{"id": 7, "text": "Figure 18 Final result: End-to-end AI governance when using IBM OpenPages, AI Factsheets, and OpenScale", "bbox": {"l": 64.800003, "t": 725.297897, "r": 507.3417400000001, "b": 733.622898, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 18 Final result: End-to-end AI governance when using IBM OpenPages, AI Factsheets, and OpenScale"}, {"label": "picture", "id": 4, "page_no": 22, "cluster": {"id": 4, "label": "picture", "bbox": {"l": 64.15648651123047, "t": 447.1334533691406, "r": 547.9522705078125, "b": 721.9699096679688, "coord_origin": "TOPLEFT"}, "confidence": 0.9854127764701843, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 5, "page_no": 22, "cluster": {"id": 5, "label": "picture", "bbox": {"l": 63.62750244140625, "t": 77.65582275390625, "r": 547.6529541015625, "b": 350.53533935546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9835888147354126, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "caption", "id": 1, "page_no": 22, "cluster": {"id": 1, "label": "caption", "bbox": {"l": 64.26493835449219, "t": 353.3095397949219, "r": 386.60101318359375, "b": 362.7451477050781, "coord_origin": "TOPLEFT"}, "confidence": 0.9381591081619263, "cells": [{"id": 1, "text": "Figure 17 IBM OpenScale dashboard that is used to monitor the external model", "bbox": {"l": 64.800003, "t": 354.01801, "r": 385.45013, "b": 362.34302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 17 IBM OpenScale dashboard that is used to monitor the external model"}, {"label": "text", "id": 2, "page_no": 22, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.85134887695312, "t": 375.21990966796875, "r": 547.21674, "b": 433.3600769042969, "coord_origin": "TOPLEFT"}, "confidence": 0.9801287055015564, "cells": [{"id": 2, "text": "You developed and deployed the AI model by using Watson Studio, WML on CP4D on Red ", "bbox": {"l": 136.8, "t": 376.00872999999996, "r": 542.91388, "b": 385.22171, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Hat OpenShift on a virtual machine on IBM Z, and end-to-end AI model governance by ", "bbox": {"l": 136.8, "t": 388.00854, "r": 521.86963, "b": 397.22153, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "leveraging AI Factsheets, OpenScale, and OpenPages on CP4D on a x86 platform. Figure 18 ", "bbox": {"l": 136.8, "t": 400.00836, "r": 547.21674, "b": 409.22134, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "shows end-to-end AI governance when using IBM OpenPages, AI Factsheets, and ", "bbox": {"l": 136.8, "t": 412.0081799999999, "r": 504.60781999999995, "b": 421.22116, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "OpenScale. ", "bbox": {"l": 136.8, "t": 424.00800000000004, "r": 191.81007, "b": 433.22098, "coord_origin": "TOPLEFT"}}]}, "text": "You developed and deployed the AI model by using Watson Studio, WML on CP4D on Red Hat OpenShift on a virtual machine on IBM Z, and end-to-end AI model governance by leveraging AI Factsheets, OpenScale, and OpenPages on CP4D on a x86 platform. Figure 18 shows end-to-end AI governance when using IBM OpenPages, AI Factsheets, and OpenScale."}, {"label": "caption", "id": 3, "page_no": 22, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.34110260009766, "t": 724.7535400390625, "r": 507.7935485839844, "b": 734.0853271484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9460791945457458, "cells": [{"id": 7, "text": "Figure 18 Final result: End-to-end AI governance when using IBM OpenPages, AI Factsheets, and OpenScale", "bbox": {"l": 64.800003, "t": 725.297897, "r": 507.3417400000001, "b": 733.622898, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 18 Final result: End-to-end AI governance when using IBM OpenPages, AI Factsheets, and OpenScale"}, {"label": "picture", "id": 4, "page_no": 22, "cluster": {"id": 4, "label": "picture", "bbox": {"l": 64.15648651123047, "t": 447.1334533691406, "r": 547.9522705078125, "b": 721.9699096679688, "coord_origin": "TOPLEFT"}, "confidence": 0.9854127764701843, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 5, "page_no": 22, "cluster": {"id": 5, "label": "picture", "bbox": {"l": 63.62750244140625, "t": 77.65582275390625, "r": 547.6529541015625, "b": 350.53533935546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9835888147354126, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 22, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 535.4277954101562, "t": 754.2350463867188, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9060306549072266, "cells": [{"id": 0, "text": "21", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "21"}]}}, {"page_no": 23, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "22 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Use case 2: Credit default risk assessment", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 389.15826, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "In today\u2019s world, many individuals or businesses seeking loans to meet their growing business ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 547.22473, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "needs often look to financial institutions. Financial institutions can offer loans to individuals or ", "bbox": {"l": 136.80002, "t": 115.48852999999997, "r": 547.20685, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "businesses and charge interest based on the current market situations.", "bbox": {"l": 136.80002, "t": 127.48834000000011, "r": 450.76300000000003, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Industry challenges", "bbox": {"l": 64.800003, "t": 157.37469, "r": 186.7186, "b": 169.36273000000006, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Financial institutions must make an accurate decision about whether to sanction a loan or not, ", "bbox": {"l": 136.8, "t": 183.52868999999998, "r": 547.15698, "b": 192.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "and judging the likelihood of default is the difference between a successful and unsuccessful ", "bbox": {"l": 136.8, "t": 195.5285, "r": 547.27142, "b": 204.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "loan portfolio. In a traditional scenario, an experienced banker can judge someone\u2019s likelihood ", "bbox": {"l": 136.8, "t": 207.52832, "r": 547.29553, "b": 216.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "of default, but that is not an efficient method for judgment as a business grows. ", "bbox": {"l": 136.8, "t": 219.52814, "r": 487.93381, "b": 228.74114999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Predictions of credit default risk assessment", "bbox": {"l": 64.800003, "t": 249.35468000000003, "r": 341.16034, "b": 261.34271, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "In the modern world, growing business institutions can no longer rely on only experienced ", "bbox": {"l": 136.8, "t": 275.50873, "r": 535.18909, "b": 284.72171, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "bankers to decide whether to sanction a loan knowing that there is a probability that the ", "bbox": {"l": 136.8, "t": 287.50854, "r": 525.13245, "b": 296.72153, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "borrower might default on their loans. A better choice is to rely on technological ", "bbox": {"l": 136.80002, "t": 299.50836, "r": 489.06039, "b": 308.72134, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "advancements that can help with reasoning based on facts, such as leveraging credit risk ", "bbox": {"l": 136.80002, "t": 311.5081799999999, "r": 534.11041, "b": 320.72116, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "modeling techniques to process the historical data of past borrowers to understand their ", "bbox": {"l": 136.80002, "t": 323.50800000000004, "r": 527.39343, "b": 332.72098, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "credit behavior and make a more informed decision about whether to lend money, how much ", "bbox": {"l": 136.80002, "t": 335.50781, "r": 547.26355, "b": 344.7207900000001, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "money, and decide on the tenure to close the loan. ", "bbox": {"l": 136.80002, "t": 347.50763, "r": 364.10812, "b": 356.72061, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Financial institutions can leverage AI solutions by using ML techniques to predict the credit ", "bbox": {"l": 136.80002, "t": 369.52719, "r": 539.61719, "b": 378.74017, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "risk. Applying AI to credit risk modeling techniques can benefit institutions in decision-making, ", "bbox": {"l": 136.80002, "t": 381.52701, "r": 547.14716, "b": 390.7399899999999, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "and thus can help better manage the exposure to credit risk.", "bbox": {"l": 136.80002, "t": 393.52682000000004, "r": 403.00879, "b": 402.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Figure 19 on page 23 shows a sample architecture about how to design and develop an AI ", "bbox": {"l": 136.80002, "t": 415.48663, "r": 539.76471, "b": 424.69962, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "model for credit risk assessment on IBM Z. An IBM WebSpherefi Application Server is used ", "bbox": {"l": 136.80002, "t": 427.48645, "r": 545.84222, "b": 436.69943, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "for handling in-bound transactions, and CP4D is used for AI model lifecycle management that ", "bbox": {"l": 136.80002, "t": 439.48627, "r": 547.20087, "b": 448.69924999999995, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "includes building, training, and deploying the model. ", "bbox": {"l": 136.80002, "t": 451.4860800000001, "r": 369.01248, "b": 460.69907000000006, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.85818862915039, "t": 754.4114990234375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9204315543174744, "cells": [{"id": 0, "text": "22 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.21298217773438, "t": 754.78466796875, "r": 267.0744, "b": 764.0928344726562, "coord_origin": "TOPLEFT"}, "confidence": 0.9566571712493896, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.800003, "t": 70.24270629882812, "r": 389.5157470703125, "b": 85.9837, "coord_origin": "TOPLEFT"}, "confidence": 0.9576336145401001, "cells": [{"id": 2, "text": "Use case 2: Credit default risk assessment", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 389.15826, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 136.07400512695312, "t": 102.76129150390625, "r": 547.22473, "b": 136.72068786621094, "coord_origin": "TOPLEFT"}, "confidence": 0.985734224319458, "cells": [{"id": 3, "text": "In today\u2019s world, many individuals or businesses seeking loans to meet their growing business ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 547.22473, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "needs often look to financial institutions. Financial institutions can offer loans to individuals or ", "bbox": {"l": 136.80002, "t": 115.48852999999997, "r": 547.20685, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "businesses and charge interest based on the current market situations.", "bbox": {"l": 136.80002, "t": 127.48834000000011, "r": 450.76300000000003, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 64.54896545410156, "t": 156.48988342285156, "r": 186.7186, "b": 169.83836364746094, "coord_origin": "TOPLEFT"}, "confidence": 0.964301347732544, "cells": [{"id": 6, "text": "Industry challenges", "bbox": {"l": 64.800003, "t": 157.37469, "r": 186.7186, "b": 169.36273000000006, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.15374755859375, "t": 182.6127166748047, "r": 547.29553, "b": 228.91392517089844, "coord_origin": "TOPLEFT"}, "confidence": 0.9875076413154602, "cells": [{"id": 7, "text": "Financial institutions must make an accurate decision about whether to sanction a loan or not, ", "bbox": {"l": 136.8, "t": 183.52868999999998, "r": 547.15698, "b": 192.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "and judging the likelihood of default is the difference between a successful and unsuccessful ", "bbox": {"l": 136.8, "t": 195.5285, "r": 547.27142, "b": 204.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "loan portfolio. In a traditional scenario, an experienced banker can judge someone\u2019s likelihood ", "bbox": {"l": 136.8, "t": 207.52832, "r": 547.29553, "b": 216.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "of default, but that is not an efficient method for judgment as a business grows. ", "bbox": {"l": 136.8, "t": 219.52814, "r": 487.93381, "b": 228.74114999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "section_header", "bbox": {"l": 64.6235122680664, "t": 248.58290100097656, "r": 341.16034, "b": 261.34271, "coord_origin": "TOPLEFT"}, "confidence": 0.9595711827278137, "cells": [{"id": 11, "text": "Predictions of credit default risk assessment", "bbox": {"l": 64.800003, "t": 249.35468000000003, "r": 341.16034, "b": 261.34271, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 135.9077606201172, "t": 274.71612548828125, "r": 547.26355, "b": 356.72061, "coord_origin": "TOPLEFT"}, "confidence": 0.9880195260047913, "cells": [{"id": 12, "text": "In the modern world, growing business institutions can no longer rely on only experienced ", "bbox": {"l": 136.8, "t": 275.50873, "r": 535.18909, "b": 284.72171, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "bankers to decide whether to sanction a loan knowing that there is a probability that the ", "bbox": {"l": 136.8, "t": 287.50854, "r": 525.13245, "b": 296.72153, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "borrower might default on their loans. A better choice is to rely on technological ", "bbox": {"l": 136.80002, "t": 299.50836, "r": 489.06039, "b": 308.72134, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "advancements that can help with reasoning based on facts, such as leveraging credit risk ", "bbox": {"l": 136.80002, "t": 311.5081799999999, "r": 534.11041, "b": 320.72116, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "modeling techniques to process the historical data of past borrowers to understand their ", "bbox": {"l": 136.80002, "t": 323.50800000000004, "r": 527.39343, "b": 332.72098, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "credit behavior and make a more informed decision about whether to lend money, how much ", "bbox": {"l": 136.80002, "t": 335.50781, "r": 547.26355, "b": 344.7207900000001, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "money, and decide on the tenure to close the loan. ", "bbox": {"l": 136.80002, "t": 347.50763, "r": 364.10812, "b": 356.72061, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 136.04486083984375, "t": 368.8188781738281, "r": 547.14716, "b": 402.8493957519531, "coord_origin": "TOPLEFT"}, "confidence": 0.9847903847694397, "cells": [{"id": 19, "text": "Financial institutions can leverage AI solutions by using ML techniques to predict the credit ", "bbox": {"l": 136.80002, "t": 369.52719, "r": 539.61719, "b": 378.74017, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "risk. Applying AI to credit risk modeling techniques can benefit institutions in decision-making, ", "bbox": {"l": 136.80002, "t": 381.52701, "r": 547.14716, "b": 390.7399899999999, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "and thus can help better manage the exposure to credit risk.", "bbox": {"l": 136.80002, "t": 393.52682000000004, "r": 403.00879, "b": 402.73981000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 136.09634399414062, "t": 414.7832336425781, "r": 547.20087, "b": 461.024658203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9877332448959351, "cells": [{"id": 22, "text": "Figure 19 on page 23 shows a sample architecture about how to design and develop an AI ", "bbox": {"l": 136.80002, "t": 415.48663, "r": 539.76471, "b": 424.69962, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "model for credit risk assessment on IBM Z. An IBM WebSpherefi Application Server is used ", "bbox": {"l": 136.80002, "t": 427.48645, "r": 545.84222, "b": 436.69943, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "for handling in-bound transactions, and CP4D is used for AI model lifecycle management that ", "bbox": {"l": 136.80002, "t": 439.48627, "r": 547.20087, "b": 448.69924999999995, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "includes building, training, and deploying the model. ", "bbox": {"l": 136.80002, "t": 451.4860800000001, "r": 369.01248, "b": 460.69907000000006, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 23, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.85818862915039, "t": 754.4114990234375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9204315543174744, "cells": [{"id": 0, "text": "22 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "22"}, {"label": "page_footer", "id": 1, "page_no": 23, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.21298217773438, "t": 754.78466796875, "r": 267.0744, "b": 764.0928344726562, "coord_origin": "TOPLEFT"}, "confidence": 0.9566571712493896, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"label": "section_header", "id": 2, "page_no": 23, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.800003, "t": 70.24270629882812, "r": 389.5157470703125, "b": 85.9837, "coord_origin": "TOPLEFT"}, "confidence": 0.9576336145401001, "cells": [{"id": 2, "text": "Use case 2: Credit default risk assessment", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 389.15826, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, "text": "Use case 2: Credit default risk assessment"}, {"label": "text", "id": 3, "page_no": 23, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.07400512695312, "t": 102.76129150390625, "r": 547.22473, "b": 136.72068786621094, "coord_origin": "TOPLEFT"}, "confidence": 0.985734224319458, "cells": [{"id": 3, "text": "In today\u2019s world, many individuals or businesses seeking loans to meet their growing business ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 547.22473, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "needs often look to financial institutions. Financial institutions can offer loans to individuals or ", "bbox": {"l": 136.80002, "t": 115.48852999999997, "r": 547.20685, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "businesses and charge interest based on the current market situations.", "bbox": {"l": 136.80002, "t": 127.48834000000011, "r": 450.76300000000003, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}]}, "text": "In today\u2019s world, many individuals or businesses seeking loans to meet their growing business needs often look to financial institutions. Financial institutions can offer loans to individuals or businesses and charge interest based on the current market situations."}, {"label": "section_header", "id": 4, "page_no": 23, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.54896545410156, "t": 156.48988342285156, "r": 186.7186, "b": 169.83836364746094, "coord_origin": "TOPLEFT"}, "confidence": 0.964301347732544, "cells": [{"id": 6, "text": "Industry challenges", "bbox": {"l": 64.800003, "t": 157.37469, "r": 186.7186, "b": 169.36273000000006, "coord_origin": "TOPLEFT"}}]}, "text": "Industry challenges"}, {"label": "text", "id": 5, "page_no": 23, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.15374755859375, "t": 182.6127166748047, "r": 547.29553, "b": 228.91392517089844, "coord_origin": "TOPLEFT"}, "confidence": 0.9875076413154602, "cells": [{"id": 7, "text": "Financial institutions must make an accurate decision about whether to sanction a loan or not, ", "bbox": {"l": 136.8, "t": 183.52868999999998, "r": 547.15698, "b": 192.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "and judging the likelihood of default is the difference between a successful and unsuccessful ", "bbox": {"l": 136.8, "t": 195.5285, "r": 547.27142, "b": 204.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "loan portfolio. In a traditional scenario, an experienced banker can judge someone\u2019s likelihood ", "bbox": {"l": 136.8, "t": 207.52832, "r": 547.29553, "b": 216.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "of default, but that is not an efficient method for judgment as a business grows. ", "bbox": {"l": 136.8, "t": 219.52814, "r": 487.93381, "b": 228.74114999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Financial institutions must make an accurate decision about whether to sanction a loan or not, and judging the likelihood of default is the difference between a successful and unsuccessful loan portfolio. In a traditional scenario, an experienced banker can judge someone\u2019s likelihood of default, but that is not an efficient method for judgment as a business grows."}, {"label": "section_header", "id": 6, "page_no": 23, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 64.6235122680664, "t": 248.58290100097656, "r": 341.16034, "b": 261.34271, "coord_origin": "TOPLEFT"}, "confidence": 0.9595711827278137, "cells": [{"id": 11, "text": "Predictions of credit default risk assessment", "bbox": {"l": 64.800003, "t": 249.35468000000003, "r": 341.16034, "b": 261.34271, "coord_origin": "TOPLEFT"}}]}, "text": "Predictions of credit default risk assessment"}, {"label": "text", "id": 7, "page_no": 23, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.9077606201172, "t": 274.71612548828125, "r": 547.26355, "b": 356.72061, "coord_origin": "TOPLEFT"}, "confidence": 0.9880195260047913, "cells": [{"id": 12, "text": "In the modern world, growing business institutions can no longer rely on only experienced ", "bbox": {"l": 136.8, "t": 275.50873, "r": 535.18909, "b": 284.72171, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "bankers to decide whether to sanction a loan knowing that there is a probability that the ", "bbox": {"l": 136.8, "t": 287.50854, "r": 525.13245, "b": 296.72153, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "borrower might default on their loans. A better choice is to rely on technological ", "bbox": {"l": 136.80002, "t": 299.50836, "r": 489.06039, "b": 308.72134, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "advancements that can help with reasoning based on facts, such as leveraging credit risk ", "bbox": {"l": 136.80002, "t": 311.5081799999999, "r": 534.11041, "b": 320.72116, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "modeling techniques to process the historical data of past borrowers to understand their ", "bbox": {"l": 136.80002, "t": 323.50800000000004, "r": 527.39343, "b": 332.72098, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "credit behavior and make a more informed decision about whether to lend money, how much ", "bbox": {"l": 136.80002, "t": 335.50781, "r": 547.26355, "b": 344.7207900000001, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "money, and decide on the tenure to close the loan. ", "bbox": {"l": 136.80002, "t": 347.50763, "r": 364.10812, "b": 356.72061, "coord_origin": "TOPLEFT"}}]}, "text": "In the modern world, growing business institutions can no longer rely on only experienced bankers to decide whether to sanction a loan knowing that there is a probability that the borrower might default on their loans. A better choice is to rely on technological advancements that can help with reasoning based on facts, such as leveraging credit risk modeling techniques to process the historical data of past borrowers to understand their credit behavior and make a more informed decision about whether to lend money, how much money, and decide on the tenure to close the loan."}, {"label": "text", "id": 8, "page_no": 23, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.04486083984375, "t": 368.8188781738281, "r": 547.14716, "b": 402.8493957519531, "coord_origin": "TOPLEFT"}, "confidence": 0.9847903847694397, "cells": [{"id": 19, "text": "Financial institutions can leverage AI solutions by using ML techniques to predict the credit ", "bbox": {"l": 136.80002, "t": 369.52719, "r": 539.61719, "b": 378.74017, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "risk. Applying AI to credit risk modeling techniques can benefit institutions in decision-making, ", "bbox": {"l": 136.80002, "t": 381.52701, "r": 547.14716, "b": 390.7399899999999, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "and thus can help better manage the exposure to credit risk.", "bbox": {"l": 136.80002, "t": 393.52682000000004, "r": 403.00879, "b": 402.73981000000003, "coord_origin": "TOPLEFT"}}]}, "text": "Financial institutions can leverage AI solutions by using ML techniques to predict the credit risk. Applying AI to credit risk modeling techniques can benefit institutions in decision-making, and thus can help better manage the exposure to credit risk."}, {"label": "text", "id": 9, "page_no": 23, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.09634399414062, "t": 414.7832336425781, "r": 547.20087, "b": 461.024658203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9877332448959351, "cells": [{"id": 22, "text": "Figure 19 on page 23 shows a sample architecture about how to design and develop an AI ", "bbox": {"l": 136.80002, "t": 415.48663, "r": 539.76471, "b": 424.69962, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "model for credit risk assessment on IBM Z. An IBM WebSpherefi Application Server is used ", "bbox": {"l": 136.80002, "t": 427.48645, "r": 545.84222, "b": 436.69943, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "for handling in-bound transactions, and CP4D is used for AI model lifecycle management that ", "bbox": {"l": 136.80002, "t": 439.48627, "r": 547.20087, "b": 448.69924999999995, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "includes building, training, and deploying the model. ", "bbox": {"l": 136.80002, "t": 451.4860800000001, "r": 369.01248, "b": 460.69907000000006, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 19 on page 23 shows a sample architecture about how to design and develop an AI model for credit risk assessment on IBM Z. An IBM WebSpherefi Application Server is used for handling in-bound transactions, and CP4D is used for AI model lifecycle management that includes building, training, and deploying the model."}], "body": [{"label": "section_header", "id": 2, "page_no": 23, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.800003, "t": 70.24270629882812, "r": 389.5157470703125, "b": 85.9837, "coord_origin": "TOPLEFT"}, "confidence": 0.9576336145401001, "cells": [{"id": 2, "text": "Use case 2: Credit default risk assessment", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 389.15826, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, "text": "Use case 2: Credit default risk assessment"}, {"label": "text", "id": 3, "page_no": 23, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.07400512695312, "t": 102.76129150390625, "r": 547.22473, "b": 136.72068786621094, "coord_origin": "TOPLEFT"}, "confidence": 0.985734224319458, "cells": [{"id": 3, "text": "In today\u2019s world, many individuals or businesses seeking loans to meet their growing business ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 547.22473, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "needs often look to financial institutions. Financial institutions can offer loans to individuals or ", "bbox": {"l": 136.80002, "t": 115.48852999999997, "r": 547.20685, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "businesses and charge interest based on the current market situations.", "bbox": {"l": 136.80002, "t": 127.48834000000011, "r": 450.76300000000003, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}]}, "text": "In today\u2019s world, many individuals or businesses seeking loans to meet their growing business needs often look to financial institutions. Financial institutions can offer loans to individuals or businesses and charge interest based on the current market situations."}, {"label": "section_header", "id": 4, "page_no": 23, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.54896545410156, "t": 156.48988342285156, "r": 186.7186, "b": 169.83836364746094, "coord_origin": "TOPLEFT"}, "confidence": 0.964301347732544, "cells": [{"id": 6, "text": "Industry challenges", "bbox": {"l": 64.800003, "t": 157.37469, "r": 186.7186, "b": 169.36273000000006, "coord_origin": "TOPLEFT"}}]}, "text": "Industry challenges"}, {"label": "text", "id": 5, "page_no": 23, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.15374755859375, "t": 182.6127166748047, "r": 547.29553, "b": 228.91392517089844, "coord_origin": "TOPLEFT"}, "confidence": 0.9875076413154602, "cells": [{"id": 7, "text": "Financial institutions must make an accurate decision about whether to sanction a loan or not, ", "bbox": {"l": 136.8, "t": 183.52868999999998, "r": 547.15698, "b": 192.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "and judging the likelihood of default is the difference between a successful and unsuccessful ", "bbox": {"l": 136.8, "t": 195.5285, "r": 547.27142, "b": 204.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "loan portfolio. In a traditional scenario, an experienced banker can judge someone\u2019s likelihood ", "bbox": {"l": 136.8, "t": 207.52832, "r": 547.29553, "b": 216.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "of default, but that is not an efficient method for judgment as a business grows. ", "bbox": {"l": 136.8, "t": 219.52814, "r": 487.93381, "b": 228.74114999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Financial institutions must make an accurate decision about whether to sanction a loan or not, and judging the likelihood of default is the difference between a successful and unsuccessful loan portfolio. In a traditional scenario, an experienced banker can judge someone\u2019s likelihood of default, but that is not an efficient method for judgment as a business grows."}, {"label": "section_header", "id": 6, "page_no": 23, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 64.6235122680664, "t": 248.58290100097656, "r": 341.16034, "b": 261.34271, "coord_origin": "TOPLEFT"}, "confidence": 0.9595711827278137, "cells": [{"id": 11, "text": "Predictions of credit default risk assessment", "bbox": {"l": 64.800003, "t": 249.35468000000003, "r": 341.16034, "b": 261.34271, "coord_origin": "TOPLEFT"}}]}, "text": "Predictions of credit default risk assessment"}, {"label": "text", "id": 7, "page_no": 23, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.9077606201172, "t": 274.71612548828125, "r": 547.26355, "b": 356.72061, "coord_origin": "TOPLEFT"}, "confidence": 0.9880195260047913, "cells": [{"id": 12, "text": "In the modern world, growing business institutions can no longer rely on only experienced ", "bbox": {"l": 136.8, "t": 275.50873, "r": 535.18909, "b": 284.72171, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "bankers to decide whether to sanction a loan knowing that there is a probability that the ", "bbox": {"l": 136.8, "t": 287.50854, "r": 525.13245, "b": 296.72153, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "borrower might default on their loans. A better choice is to rely on technological ", "bbox": {"l": 136.80002, "t": 299.50836, "r": 489.06039, "b": 308.72134, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "advancements that can help with reasoning based on facts, such as leveraging credit risk ", "bbox": {"l": 136.80002, "t": 311.5081799999999, "r": 534.11041, "b": 320.72116, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "modeling techniques to process the historical data of past borrowers to understand their ", "bbox": {"l": 136.80002, "t": 323.50800000000004, "r": 527.39343, "b": 332.72098, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "credit behavior and make a more informed decision about whether to lend money, how much ", "bbox": {"l": 136.80002, "t": 335.50781, "r": 547.26355, "b": 344.7207900000001, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "money, and decide on the tenure to close the loan. ", "bbox": {"l": 136.80002, "t": 347.50763, "r": 364.10812, "b": 356.72061, "coord_origin": "TOPLEFT"}}]}, "text": "In the modern world, growing business institutions can no longer rely on only experienced bankers to decide whether to sanction a loan knowing that there is a probability that the borrower might default on their loans. A better choice is to rely on technological advancements that can help with reasoning based on facts, such as leveraging credit risk modeling techniques to process the historical data of past borrowers to understand their credit behavior and make a more informed decision about whether to lend money, how much money, and decide on the tenure to close the loan."}, {"label": "text", "id": 8, "page_no": 23, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.04486083984375, "t": 368.8188781738281, "r": 547.14716, "b": 402.8493957519531, "coord_origin": "TOPLEFT"}, "confidence": 0.9847903847694397, "cells": [{"id": 19, "text": "Financial institutions can leverage AI solutions by using ML techniques to predict the credit ", "bbox": {"l": 136.80002, "t": 369.52719, "r": 539.61719, "b": 378.74017, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "risk. Applying AI to credit risk modeling techniques can benefit institutions in decision-making, ", "bbox": {"l": 136.80002, "t": 381.52701, "r": 547.14716, "b": 390.7399899999999, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "and thus can help better manage the exposure to credit risk.", "bbox": {"l": 136.80002, "t": 393.52682000000004, "r": 403.00879, "b": 402.73981000000003, "coord_origin": "TOPLEFT"}}]}, "text": "Financial institutions can leverage AI solutions by using ML techniques to predict the credit risk. Applying AI to credit risk modeling techniques can benefit institutions in decision-making, and thus can help better manage the exposure to credit risk."}, {"label": "text", "id": 9, "page_no": 23, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.09634399414062, "t": 414.7832336425781, "r": 547.20087, "b": 461.024658203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9877332448959351, "cells": [{"id": 22, "text": "Figure 19 on page 23 shows a sample architecture about how to design and develop an AI ", "bbox": {"l": 136.80002, "t": 415.48663, "r": 539.76471, "b": 424.69962, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "model for credit risk assessment on IBM Z. An IBM WebSpherefi Application Server is used ", "bbox": {"l": 136.80002, "t": 427.48645, "r": 545.84222, "b": 436.69943, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "for handling in-bound transactions, and CP4D is used for AI model lifecycle management that ", "bbox": {"l": 136.80002, "t": 439.48627, "r": 547.20087, "b": 448.69924999999995, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "includes building, training, and deploying the model. ", "bbox": {"l": 136.80002, "t": 451.4860800000001, "r": 369.01248, "b": 460.69907000000006, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 19 on page 23 shows a sample architecture about how to design and develop an AI model for credit risk assessment on IBM Z. An IBM WebSpherefi Application Server is used for handling in-bound transactions, and CP4D is used for AI model lifecycle management that includes building, training, and deploying the model."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 23, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.85818862915039, "t": 754.4114990234375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9204315543174744, "cells": [{"id": 0, "text": "22 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "22"}, {"label": "page_footer", "id": 1, "page_no": 23, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.21298217773438, "t": 754.78466796875, "r": 267.0744, "b": 764.0928344726562, "coord_origin": "TOPLEFT"}, "confidence": 0.9566571712493896, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}]}}, {"page_no": 24, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "23", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Figure 19 Architecture for credit risk prediction by using an ML AI model on IBM Z", "bbox": {"l": 64.800003, "t": 344.11798, "r": 394.03705, "b": 352.44299, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "A data scientist can leverage Watson Studio to develop and train an AI model and WML to ", "bbox": {"l": 136.8, "t": 366.10873, "r": 538.54846, "b": 375.3217200000001, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "deploy and score the model. In this sample architecture, the WML Python run time leverages ", "bbox": {"l": 136.8, "t": 378.10855, "r": 547.34521, "b": 387.32153, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "the ML framework, IBM Snap Machine Learning (Snap ML), for scoring, can leverage an ", "bbox": {"l": 136.8, "t": 390.10837, "r": 529.53766, "b": 399.32134999999994, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "integrated AI accelerator at the time of model import. ", "bbox": {"l": 136.8, "t": 402.10818000000006, "r": 372.28036, "b": 411.32117000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Then, the banking loan approval team can send a loan applicant request to the IBM ", "bbox": {"l": 136.8, "t": 424.12775, "r": 507.99618999999996, "b": 433.34073, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "WebSphere Application Server, which can make a request to the AI inference endpoint. The ", "bbox": {"l": 136.8, "t": 436.12756, "r": 545.58319, "b": 445.34055, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "AI inference engine scores the transaction and sends the result back to the loan approval ", "bbox": {"l": 136.8, "t": 448.12738, "r": 533.52386, "b": 457.34036, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "team. Based on the results, the approval team can decide on whether to approve a loan or ", "bbox": {"l": 136.8, "t": 460.12719999999996, "r": 539.06445, "b": 469.34018, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "not, and also decide how much they can lend, timelines, and other factors. ", "bbox": {"l": 136.8, "t": 472.12701, "r": 467.96204000000006, "b": 481.34, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "The transaction system that is shown in Figure 19 uses IBM WebSphere Liberty as an ", "bbox": {"l": 136.8, "t": 494.14658, "r": 519.58179, "b": 503.35956, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "application server, but you also can use an IBM Open Libertyfi application server or any ", "bbox": {"l": 136.8, "t": 506.14639, "r": 528.65729, "b": 515.35938, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "application server that can send RESTful API communications. ", "bbox": {"l": 136.80002, "t": 518.14621, "r": 417.46875, "b": 527.35919, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Models are frequently developed and tested in many platforms and languages, such as ", "bbox": {"l": 136.80002, "t": 540.10602, "r": 524.06476, "b": 549.31902, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Python, Scala, R, and Go. Models can leverage ML frameworks like scikit-learn, Snap ML, or ", "bbox": {"l": 136.80002, "t": 552.10582, "r": 547.19678, "b": 561.31882, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "XGBoost, or DL frameworks like TensorFlow or PyTorch. Training a model can be done on ", "bbox": {"l": 136.80002, "t": 564.10562, "r": 540.16803, "b": 573.31862, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "any platform if you have enough computing power for complex models, but moving that model ", "bbox": {"l": 136.80002, "t": 576.10542, "r": 547.23364, "b": 585.3184200000001, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "into production requires careful testing to ensure that transactions are not delayed, especially ", "bbox": {"l": 136.80002, "t": 588.10522, "r": 547.31055, "b": 597.31822, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "if you plan to run the model within a transaction.", "bbox": {"l": 136.80002, "t": 600.1050299999999, "r": 348.49084, "b": 609.3180199999999, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "We showed how IBM Z enable customers to use AI frameworks to detect credit risk. Now, we ", "bbox": {"l": 136.80002, "t": 622.12459, "r": 547.23767, "b": 631.33759, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "look at how you can leverage CP4D and TensorFlow on IBM Z to detect the credit risk. ", "bbox": {"l": 136.80002, "t": 634.12439, "r": 522.35748, "b": 643.33739, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 535.4268188476562, "t": 754.3800048828125, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9180097579956055, "cells": [{"id": 0, "text": "23", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "caption", "bbox": {"l": 64.25103759765625, "t": 343.4239501953125, "r": 395.7005615234375, "b": 352.6430358886719, "coord_origin": "TOPLEFT"}, "confidence": 0.945114016532898, "cells": [{"id": 1, "text": "Figure 19 Architecture for credit risk prediction by using an ML AI model on IBM Z", "bbox": {"l": 64.800003, "t": 344.11798, "r": 394.03705, "b": 352.44299, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.72901916503906, "t": 365.51513671875, "r": 547.34521, "b": 411.425048828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9854235053062439, "cells": [{"id": 2, "text": "A data scientist can leverage Watson Studio to develop and train an AI model and WML to ", "bbox": {"l": 136.8, "t": 366.10873, "r": 538.54846, "b": 375.3217200000001, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "deploy and score the model. In this sample architecture, the WML Python run time leverages ", "bbox": {"l": 136.8, "t": 378.10855, "r": 547.34521, "b": 387.32153, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "the ML framework, IBM Snap Machine Learning (Snap ML), for scoring, can leverage an ", "bbox": {"l": 136.8, "t": 390.10837, "r": 529.53766, "b": 399.32134999999994, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "integrated AI accelerator at the time of model import. ", "bbox": {"l": 136.8, "t": 402.10818000000006, "r": 372.28036, "b": 411.32117000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.47738647460938, "t": 423.4901123046875, "r": 545.58319, "b": 481.39813232421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9868801832199097, "cells": [{"id": 6, "text": "Then, the banking loan approval team can send a loan applicant request to the IBM ", "bbox": {"l": 136.8, "t": 424.12775, "r": 507.99618999999996, "b": 433.34073, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "WebSphere Application Server, which can make a request to the AI inference endpoint. The ", "bbox": {"l": 136.8, "t": 436.12756, "r": 545.58319, "b": 445.34055, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "AI inference engine scores the transaction and sends the result back to the loan approval ", "bbox": {"l": 136.8, "t": 448.12738, "r": 533.52386, "b": 457.34036, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "team. Based on the results, the approval team can decide on whether to approve a loan or ", "bbox": {"l": 136.8, "t": 460.12719999999996, "r": 539.06445, "b": 469.34018, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "not, and also decide how much they can lend, timelines, and other factors. ", "bbox": {"l": 136.8, "t": 472.12701, "r": 467.96204000000006, "b": 481.34, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.9343719482422, "t": 493.64398193359375, "r": 528.65729, "b": 527.35919, "coord_origin": "TOPLEFT"}, "confidence": 0.9839997887611389, "cells": [{"id": 11, "text": "The transaction system that is shown in Figure 19 uses IBM WebSphere Liberty as an ", "bbox": {"l": 136.8, "t": 494.14658, "r": 519.58179, "b": 503.35956, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "application server, but you also can use an IBM Open Libertyfi application server or any ", "bbox": {"l": 136.8, "t": 506.14639, "r": 528.65729, "b": 515.35938, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "application server that can send RESTful API communications. ", "bbox": {"l": 136.80002, "t": 518.14621, "r": 417.46875, "b": 527.35919, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.85601806640625, "t": 539.41064453125, "r": 547.31055, "b": 609.6241455078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9883375763893127, "cells": [{"id": 14, "text": "Models are frequently developed and tested in many platforms and languages, such as ", "bbox": {"l": 136.80002, "t": 540.10602, "r": 524.06476, "b": 549.31902, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Python, Scala, R, and Go. Models can leverage ML frameworks like scikit-learn, Snap ML, or ", "bbox": {"l": 136.80002, "t": 552.10582, "r": 547.19678, "b": 561.31882, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "XGBoost, or DL frameworks like TensorFlow or PyTorch. Training a model can be done on ", "bbox": {"l": 136.80002, "t": 564.10562, "r": 540.16803, "b": 573.31862, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "any platform if you have enough computing power for complex models, but moving that model ", "bbox": {"l": 136.80002, "t": 576.10542, "r": 547.23364, "b": 585.3184200000001, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "into production requires careful testing to ensure that transactions are not delayed, especially ", "bbox": {"l": 136.80002, "t": 588.10522, "r": 547.31055, "b": 597.31822, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "if you plan to run the model within a transaction.", "bbox": {"l": 136.80002, "t": 600.1050299999999, "r": 348.49084, "b": 609.3180199999999, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 135.7754364013672, "t": 621.3679809570312, "r": 547.23767, "b": 643.67041015625, "coord_origin": "TOPLEFT"}, "confidence": 0.981151282787323, "cells": [{"id": 20, "text": "We showed how IBM Z enable customers to use AI frameworks to detect credit risk. Now, we ", "bbox": {"l": 136.80002, "t": 622.12459, "r": 547.23767, "b": 631.33759, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "look at how you can leverage CP4D and TensorFlow on IBM Z to detect the credit risk. ", "bbox": {"l": 136.80002, "t": 634.12439, "r": 522.35748, "b": 643.33739, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "picture", "bbox": {"l": 64.85054016113281, "t": 77.66917419433594, "r": 545.2755126953125, "b": 340.2884826660156, "coord_origin": "TOPLEFT"}, "confidence": 0.9836614727973938, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 24, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 535.4268188476562, "t": 754.3800048828125, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9180097579956055, "cells": [{"id": 0, "text": "23", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "23"}, {"label": "caption", "id": 1, "page_no": 24, "cluster": {"id": 1, "label": "caption", "bbox": {"l": 64.25103759765625, "t": 343.4239501953125, "r": 395.7005615234375, "b": 352.6430358886719, "coord_origin": "TOPLEFT"}, "confidence": 0.945114016532898, "cells": [{"id": 1, "text": "Figure 19 Architecture for credit risk prediction by using an ML AI model on IBM Z", "bbox": {"l": 64.800003, "t": 344.11798, "r": 394.03705, "b": 352.44299, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 19 Architecture for credit risk prediction by using an ML AI model on IBM Z"}, {"label": "text", "id": 2, "page_no": 24, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.72901916503906, "t": 365.51513671875, "r": 547.34521, "b": 411.425048828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9854235053062439, "cells": [{"id": 2, "text": "A data scientist can leverage Watson Studio to develop and train an AI model and WML to ", "bbox": {"l": 136.8, "t": 366.10873, "r": 538.54846, "b": 375.3217200000001, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "deploy and score the model. In this sample architecture, the WML Python run time leverages ", "bbox": {"l": 136.8, "t": 378.10855, "r": 547.34521, "b": 387.32153, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "the ML framework, IBM Snap Machine Learning (Snap ML), for scoring, can leverage an ", "bbox": {"l": 136.8, "t": 390.10837, "r": 529.53766, "b": 399.32134999999994, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "integrated AI accelerator at the time of model import. ", "bbox": {"l": 136.8, "t": 402.10818000000006, "r": 372.28036, "b": 411.32117000000005, "coord_origin": "TOPLEFT"}}]}, "text": "A data scientist can leverage Watson Studio to develop and train an AI model and WML to deploy and score the model. In this sample architecture, the WML Python run time leverages the ML framework, IBM Snap Machine Learning (Snap ML), for scoring, can leverage an integrated AI accelerator at the time of model import."}, {"label": "text", "id": 3, "page_no": 24, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.47738647460938, "t": 423.4901123046875, "r": 545.58319, "b": 481.39813232421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9868801832199097, "cells": [{"id": 6, "text": "Then, the banking loan approval team can send a loan applicant request to the IBM ", "bbox": {"l": 136.8, "t": 424.12775, "r": 507.99618999999996, "b": 433.34073, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "WebSphere Application Server, which can make a request to the AI inference endpoint. The ", "bbox": {"l": 136.8, "t": 436.12756, "r": 545.58319, "b": 445.34055, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "AI inference engine scores the transaction and sends the result back to the loan approval ", "bbox": {"l": 136.8, "t": 448.12738, "r": 533.52386, "b": 457.34036, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "team. Based on the results, the approval team can decide on whether to approve a loan or ", "bbox": {"l": 136.8, "t": 460.12719999999996, "r": 539.06445, "b": 469.34018, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "not, and also decide how much they can lend, timelines, and other factors. ", "bbox": {"l": 136.8, "t": 472.12701, "r": 467.96204000000006, "b": 481.34, "coord_origin": "TOPLEFT"}}]}, "text": "Then, the banking loan approval team can send a loan applicant request to the IBM WebSphere Application Server, which can make a request to the AI inference endpoint. The AI inference engine scores the transaction and sends the result back to the loan approval team. Based on the results, the approval team can decide on whether to approve a loan or not, and also decide how much they can lend, timelines, and other factors."}, {"label": "text", "id": 4, "page_no": 24, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.9343719482422, "t": 493.64398193359375, "r": 528.65729, "b": 527.35919, "coord_origin": "TOPLEFT"}, "confidence": 0.9839997887611389, "cells": [{"id": 11, "text": "The transaction system that is shown in Figure 19 uses IBM WebSphere Liberty as an ", "bbox": {"l": 136.8, "t": 494.14658, "r": 519.58179, "b": 503.35956, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "application server, but you also can use an IBM Open Libertyfi application server or any ", "bbox": {"l": 136.8, "t": 506.14639, "r": 528.65729, "b": 515.35938, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "application server that can send RESTful API communications. ", "bbox": {"l": 136.80002, "t": 518.14621, "r": 417.46875, "b": 527.35919, "coord_origin": "TOPLEFT"}}]}, "text": "The transaction system that is shown in Figure 19 uses IBM WebSphere Liberty as an application server, but you also can use an IBM Open Libertyfi application server or any application server that can send RESTful API communications."}, {"label": "text", "id": 5, "page_no": 24, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.85601806640625, "t": 539.41064453125, "r": 547.31055, "b": 609.6241455078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9883375763893127, "cells": [{"id": 14, "text": "Models are frequently developed and tested in many platforms and languages, such as ", "bbox": {"l": 136.80002, "t": 540.10602, "r": 524.06476, "b": 549.31902, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Python, Scala, R, and Go. Models can leverage ML frameworks like scikit-learn, Snap ML, or ", "bbox": {"l": 136.80002, "t": 552.10582, "r": 547.19678, "b": 561.31882, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "XGBoost, or DL frameworks like TensorFlow or PyTorch. Training a model can be done on ", "bbox": {"l": 136.80002, "t": 564.10562, "r": 540.16803, "b": 573.31862, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "any platform if you have enough computing power for complex models, but moving that model ", "bbox": {"l": 136.80002, "t": 576.10542, "r": 547.23364, "b": 585.3184200000001, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "into production requires careful testing to ensure that transactions are not delayed, especially ", "bbox": {"l": 136.80002, "t": 588.10522, "r": 547.31055, "b": 597.31822, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "if you plan to run the model within a transaction.", "bbox": {"l": 136.80002, "t": 600.1050299999999, "r": 348.49084, "b": 609.3180199999999, "coord_origin": "TOPLEFT"}}]}, "text": "Models are frequently developed and tested in many platforms and languages, such as Python, Scala, R, and Go. Models can leverage ML frameworks like scikit-learn, Snap ML, or XGBoost, or DL frameworks like TensorFlow or PyTorch. Training a model can be done on any platform if you have enough computing power for complex models, but moving that model into production requires careful testing to ensure that transactions are not delayed, especially if you plan to run the model within a transaction."}, {"label": "text", "id": 6, "page_no": 24, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.7754364013672, "t": 621.3679809570312, "r": 547.23767, "b": 643.67041015625, "coord_origin": "TOPLEFT"}, "confidence": 0.981151282787323, "cells": [{"id": 20, "text": "We showed how IBM Z enable customers to use AI frameworks to detect credit risk. Now, we ", "bbox": {"l": 136.80002, "t": 622.12459, "r": 547.23767, "b": 631.33759, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "look at how you can leverage CP4D and TensorFlow on IBM Z to detect the credit risk. ", "bbox": {"l": 136.80002, "t": 634.12439, "r": 522.35748, "b": 643.33739, "coord_origin": "TOPLEFT"}}]}, "text": "We showed how IBM Z enable customers to use AI frameworks to detect credit risk. Now, we look at how you can leverage CP4D and TensorFlow on IBM Z to detect the credit risk."}, {"label": "picture", "id": 7, "page_no": 24, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 64.85054016113281, "t": 77.66917419433594, "r": 545.2755126953125, "b": 340.2884826660156, "coord_origin": "TOPLEFT"}, "confidence": 0.9836614727973938, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "caption", "id": 1, "page_no": 24, "cluster": {"id": 1, "label": "caption", "bbox": {"l": 64.25103759765625, "t": 343.4239501953125, "r": 395.7005615234375, "b": 352.6430358886719, "coord_origin": "TOPLEFT"}, "confidence": 0.945114016532898, "cells": [{"id": 1, "text": "Figure 19 Architecture for credit risk prediction by using an ML AI model on IBM Z", "bbox": {"l": 64.800003, "t": 344.11798, "r": 394.03705, "b": 352.44299, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 19 Architecture for credit risk prediction by using an ML AI model on IBM Z"}, {"label": "text", "id": 2, "page_no": 24, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.72901916503906, "t": 365.51513671875, "r": 547.34521, "b": 411.425048828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9854235053062439, "cells": [{"id": 2, "text": "A data scientist can leverage Watson Studio to develop and train an AI model and WML to ", "bbox": {"l": 136.8, "t": 366.10873, "r": 538.54846, "b": 375.3217200000001, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "deploy and score the model. In this sample architecture, the WML Python run time leverages ", "bbox": {"l": 136.8, "t": 378.10855, "r": 547.34521, "b": 387.32153, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "the ML framework, IBM Snap Machine Learning (Snap ML), for scoring, can leverage an ", "bbox": {"l": 136.8, "t": 390.10837, "r": 529.53766, "b": 399.32134999999994, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "integrated AI accelerator at the time of model import. ", "bbox": {"l": 136.8, "t": 402.10818000000006, "r": 372.28036, "b": 411.32117000000005, "coord_origin": "TOPLEFT"}}]}, "text": "A data scientist can leverage Watson Studio to develop and train an AI model and WML to deploy and score the model. In this sample architecture, the WML Python run time leverages the ML framework, IBM Snap Machine Learning (Snap ML), for scoring, can leverage an integrated AI accelerator at the time of model import."}, {"label": "text", "id": 3, "page_no": 24, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.47738647460938, "t": 423.4901123046875, "r": 545.58319, "b": 481.39813232421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9868801832199097, "cells": [{"id": 6, "text": "Then, the banking loan approval team can send a loan applicant request to the IBM ", "bbox": {"l": 136.8, "t": 424.12775, "r": 507.99618999999996, "b": 433.34073, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "WebSphere Application Server, which can make a request to the AI inference endpoint. The ", "bbox": {"l": 136.8, "t": 436.12756, "r": 545.58319, "b": 445.34055, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "AI inference engine scores the transaction and sends the result back to the loan approval ", "bbox": {"l": 136.8, "t": 448.12738, "r": 533.52386, "b": 457.34036, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "team. Based on the results, the approval team can decide on whether to approve a loan or ", "bbox": {"l": 136.8, "t": 460.12719999999996, "r": 539.06445, "b": 469.34018, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "not, and also decide how much they can lend, timelines, and other factors. ", "bbox": {"l": 136.8, "t": 472.12701, "r": 467.96204000000006, "b": 481.34, "coord_origin": "TOPLEFT"}}]}, "text": "Then, the banking loan approval team can send a loan applicant request to the IBM WebSphere Application Server, which can make a request to the AI inference endpoint. The AI inference engine scores the transaction and sends the result back to the loan approval team. Based on the results, the approval team can decide on whether to approve a loan or not, and also decide how much they can lend, timelines, and other factors."}, {"label": "text", "id": 4, "page_no": 24, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.9343719482422, "t": 493.64398193359375, "r": 528.65729, "b": 527.35919, "coord_origin": "TOPLEFT"}, "confidence": 0.9839997887611389, "cells": [{"id": 11, "text": "The transaction system that is shown in Figure 19 uses IBM WebSphere Liberty as an ", "bbox": {"l": 136.8, "t": 494.14658, "r": 519.58179, "b": 503.35956, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "application server, but you also can use an IBM Open Libertyfi application server or any ", "bbox": {"l": 136.8, "t": 506.14639, "r": 528.65729, "b": 515.35938, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "application server that can send RESTful API communications. ", "bbox": {"l": 136.80002, "t": 518.14621, "r": 417.46875, "b": 527.35919, "coord_origin": "TOPLEFT"}}]}, "text": "The transaction system that is shown in Figure 19 uses IBM WebSphere Liberty as an application server, but you also can use an IBM Open Libertyfi application server or any application server that can send RESTful API communications."}, {"label": "text", "id": 5, "page_no": 24, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.85601806640625, "t": 539.41064453125, "r": 547.31055, "b": 609.6241455078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9883375763893127, "cells": [{"id": 14, "text": "Models are frequently developed and tested in many platforms and languages, such as ", "bbox": {"l": 136.80002, "t": 540.10602, "r": 524.06476, "b": 549.31902, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Python, Scala, R, and Go. Models can leverage ML frameworks like scikit-learn, Snap ML, or ", "bbox": {"l": 136.80002, "t": 552.10582, "r": 547.19678, "b": 561.31882, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "XGBoost, or DL frameworks like TensorFlow or PyTorch. Training a model can be done on ", "bbox": {"l": 136.80002, "t": 564.10562, "r": 540.16803, "b": 573.31862, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "any platform if you have enough computing power for complex models, but moving that model ", "bbox": {"l": 136.80002, "t": 576.10542, "r": 547.23364, "b": 585.3184200000001, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "into production requires careful testing to ensure that transactions are not delayed, especially ", "bbox": {"l": 136.80002, "t": 588.10522, "r": 547.31055, "b": 597.31822, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "if you plan to run the model within a transaction.", "bbox": {"l": 136.80002, "t": 600.1050299999999, "r": 348.49084, "b": 609.3180199999999, "coord_origin": "TOPLEFT"}}]}, "text": "Models are frequently developed and tested in many platforms and languages, such as Python, Scala, R, and Go. Models can leverage ML frameworks like scikit-learn, Snap ML, or XGBoost, or DL frameworks like TensorFlow or PyTorch. Training a model can be done on any platform if you have enough computing power for complex models, but moving that model into production requires careful testing to ensure that transactions are not delayed, especially if you plan to run the model within a transaction."}, {"label": "text", "id": 6, "page_no": 24, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.7754364013672, "t": 621.3679809570312, "r": 547.23767, "b": 643.67041015625, "coord_origin": "TOPLEFT"}, "confidence": 0.981151282787323, "cells": [{"id": 20, "text": "We showed how IBM Z enable customers to use AI frameworks to detect credit risk. Now, we ", "bbox": {"l": 136.80002, "t": 622.12459, "r": 547.23767, "b": 631.33759, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "look at how you can leverage CP4D and TensorFlow on IBM Z to detect the credit risk. ", "bbox": {"l": 136.80002, "t": 634.12439, "r": 522.35748, "b": 643.33739, "coord_origin": "TOPLEFT"}}]}, "text": "We showed how IBM Z enable customers to use AI frameworks to detect credit risk. Now, we look at how you can leverage CP4D and TensorFlow on IBM Z to detect the credit risk."}, {"label": "picture", "id": 7, "page_no": 24, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 64.85054016113281, "t": 77.66917419433594, "r": 545.2755126953125, "b": 340.2884826660156, "coord_origin": "TOPLEFT"}, "confidence": 0.9836614727973938, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 24, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 535.4268188476562, "t": 754.3800048828125, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9180097579956055, "cells": [{"id": 0, "text": "23", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "23"}]}}, {"page_no": 25, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "24 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Figure 20 shows an architecture for predicting credit risk by using DL on IBM Z. ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 489.57016, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 20 Architecture for credit risk prediction by using DL on IBM Z", "bbox": {"l": 64.800003, "t": 362.05798, "r": 342.49408, "b": 370.38300000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Data scientists can start creating and training a DL AI model by using a Jupyter Notebook ", "bbox": {"l": 136.8, "t": 384.04873999999995, "r": 534.56866, "b": 393.26172, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "instance and Watson Studio. Then, they can deploy the model by using WML on CP4D ", "bbox": {"l": 136.8, "t": 396.04855, "r": 524.06879, "b": 405.26154, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "running on IBM Z, which provides an endpoint. Other applications, including the ", "bbox": {"l": 136.8, "t": 408.04837, "r": 490.8303199999999, "b": 417.26135, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "IBM WebSphere server, can produce credit risk results by using the model\u2019s endpoint.", "bbox": {"l": 136.8, "t": 420.0481899999999, "r": 516.49701, "b": 429.26117, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "In summary, here are some considerations for developing real-time AI models, such as credit ", "bbox": {"l": 136.8, "t": 442.06775, "r": 547.21588, "b": 451.28073, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "risk assessment:", "bbox": {"l": 136.80002, "t": 454.06757, "r": 211.19226, "b": 463.28055, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 471.19675, "r": 141.78001, "b": 479.97153, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "A preference for in-platform run times of the model, such as faster execution results.", "bbox": {"l": 151.20018, "t": 471.04736, "r": 522.90546, "b": 480.26035, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 488.17654, "r": 141.78001, "b": 496.95132, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Less overhead in the end-to-end flows might improve scoring time.", "bbox": {"l": 151.20018, "t": 488.02716, "r": 445.53699, "b": 497.24014, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 505.21613, "r": 141.78001, "b": 513.99091, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "If you are using models that are not deployable, CP4D offers a custom Python run time to ", "bbox": {"l": 151.20018, "t": 505.06674, "r": 547.32324, "b": 514.27972, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "build your own stack if they are not available on the platform.", "bbox": {"l": 151.2002, "t": 517.06656, "r": 419.67203, "b": 526.27954, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "GLYPH", "bbox": {"l": 136.80003, "t": 534.19577, "r": 141.78003, "b": 542.97052, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "AI inferencing based on ML or DL models can increase the accuracy of better credit risk ", "bbox": {"l": 151.2002, "t": 534.04636, "r": 541.78046, "b": 543.25937, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "assessment.", "bbox": {"l": 151.2002, "t": 546.0461700000001, "r": 207.28795, "b": 555.25917, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "GLYPH", "bbox": {"l": 136.80003, "t": 563.17538, "r": 141.78003, "b": 571.9501300000001, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Using IBM z16 and on-chip AI acceleration with the Telum chip that is embedded with ", "bbox": {"l": 151.2002, "t": 563.02599, "r": 531.80676, "b": 572.23898, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "regular Integrated Facility for Linux (IFLs) provides an execution speed for your ", "bbox": {"l": 151.2002, "t": 575.02579, "r": 503.30713000000003, "b": 584.23878, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "transactions that cannot be achieved by other means.", "bbox": {"l": 151.1992, "t": 587.02559, "r": 388.4444, "b": 596.2385899999999, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.90467071533203, "t": 754.3189086914062, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9163190722465515, "cells": [{"id": 0, "text": "24 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.28766632080078, "t": 754.7548828125, "r": 267.0744, "b": 764.1080322265625, "coord_origin": "TOPLEFT"}, "confidence": 0.95806485414505, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 136.43939208984375, "t": 70.69316101074219, "r": 489.57016, "b": 81.03749084472656, "coord_origin": "TOPLEFT"}, "confidence": 0.7741285562515259, "cells": [{"id": 2, "text": "Figure 20 shows an architecture for predicting credit risk by using DL on IBM Z. ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 489.57016, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.37335968017578, "t": 361.3172302246094, "r": 344.09613037109375, "b": 370.6873779296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9477778077125549, "cells": [{"id": 3, "text": "Figure 20 Architecture for credit risk prediction by using DL on IBM Z", "bbox": {"l": 64.800003, "t": 362.05798, "r": 342.49408, "b": 370.38300000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 136.12535095214844, "t": 383.51470947265625, "r": 534.56866, "b": 429.55059814453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9804685115814209, "cells": [{"id": 4, "text": "Data scientists can start creating and training a DL AI model by using a Jupyter Notebook ", "bbox": {"l": 136.8, "t": 384.04873999999995, "r": 534.56866, "b": 393.26172, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "instance and Watson Studio. Then, they can deploy the model by using WML on CP4D ", "bbox": {"l": 136.8, "t": 396.04855, "r": 524.06879, "b": 405.26154, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "running on IBM Z, which provides an endpoint. Other applications, including the ", "bbox": {"l": 136.8, "t": 408.04837, "r": 490.8303199999999, "b": 417.26135, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "IBM WebSphere server, can produce credit risk results by using the model\u2019s endpoint.", "bbox": {"l": 136.8, "t": 420.0481899999999, "r": 516.49701, "b": 429.26117, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.19705200195312, "t": 441.5392150878906, "r": 547.21588, "b": 463.28055, "coord_origin": "TOPLEFT"}, "confidence": 0.9671667814254761, "cells": [{"id": 8, "text": "In summary, here are some considerations for developing real-time AI models, such as credit ", "bbox": {"l": 136.8, "t": 442.06775, "r": 547.21588, "b": 451.28073, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "risk assessment:", "bbox": {"l": 136.80002, "t": 454.06757, "r": 211.19226, "b": 463.28055, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.6735076904297, "t": 469.95037841796875, "r": 522.90546, "b": 480.26035, "coord_origin": "TOPLEFT"}, "confidence": 0.955508291721344, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 471.19675, "r": 141.78001, "b": 479.97153, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "A preference for in-platform run times of the model, such as faster execution results.", "bbox": {"l": 151.20018, "t": 471.04736, "r": 522.90546, "b": 480.26035, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.52078247070312, "t": 487.4938659667969, "r": 445.53699, "b": 497.67242431640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9564528465270996, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 488.17654, "r": 141.78001, "b": 496.95132, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Less overhead in the end-to-end flows might improve scoring time.", "bbox": {"l": 151.20018, "t": 488.02716, "r": 445.53699, "b": 497.24014, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.63246154785156, "t": 504.0003356933594, "r": 547.32324, "b": 526.3165893554688, "coord_origin": "TOPLEFT"}, "confidence": 0.9790537357330322, "cells": [{"id": 14, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 505.21613, "r": 141.78001, "b": 513.99091, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "If you are using models that are not deployable, CP4D offers a custom Python run time to ", "bbox": {"l": 151.20018, "t": 505.06674, "r": 547.32324, "b": 514.27972, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "build your own stack if they are not available on the platform.", "bbox": {"l": 151.2002, "t": 517.06656, "r": 419.67203, "b": 526.27954, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.62271118164062, "t": 533.3601684570312, "r": 541.78046, "b": 555.25917, "coord_origin": "TOPLEFT"}, "confidence": 0.970277726650238, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.80003, "t": 534.19577, "r": 141.78003, "b": 542.97052, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "AI inferencing based on ML or DL models can increase the accuracy of better credit risk ", "bbox": {"l": 151.2002, "t": 534.04636, "r": 541.78046, "b": 543.25937, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "assessment.", "bbox": {"l": 151.2002, "t": 546.0461700000001, "r": 207.28795, "b": 555.25917, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 135.50205993652344, "t": 561.84619140625, "r": 531.80676, "b": 596.2385899999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9821013808250427, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.80003, "t": 563.17538, "r": 141.78003, "b": 571.9501300000001, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Using IBM z16 and on-chip AI acceleration with the Telum chip that is embedded with ", "bbox": {"l": 151.2002, "t": 563.02599, "r": 531.80676, "b": 572.23898, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "regular Integrated Facility for Linux (IFLs) provides an execution speed for your ", "bbox": {"l": 151.2002, "t": 575.02579, "r": 503.30713000000003, "b": 584.23878, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "transactions that cannot be achieved by other means.", "bbox": {"l": 151.1992, "t": 587.02559, "r": 388.4444, "b": 596.2385899999999, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "picture", "bbox": {"l": 65.03783416748047, "t": 94.93846130371094, "r": 547.6334838867188, "b": 359.3612365722656, "coord_origin": "TOPLEFT"}, "confidence": 0.984186589717865, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 25, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.90467071533203, "t": 754.3189086914062, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9163190722465515, "cells": [{"id": 0, "text": "24 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "24"}, {"label": "page_footer", "id": 1, "page_no": 25, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.28766632080078, "t": 754.7548828125, "r": 267.0744, "b": 764.1080322265625, "coord_origin": "TOPLEFT"}, "confidence": 0.95806485414505, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"label": "text", "id": 2, "page_no": 25, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.43939208984375, "t": 70.69316101074219, "r": 489.57016, "b": 81.03749084472656, "coord_origin": "TOPLEFT"}, "confidence": 0.7741285562515259, "cells": [{"id": 2, "text": "Figure 20 shows an architecture for predicting credit risk by using DL on IBM Z. ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 489.57016, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 20 shows an architecture for predicting credit risk by using DL on IBM Z."}, {"label": "caption", "id": 3, "page_no": 25, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.37335968017578, "t": 361.3172302246094, "r": 344.09613037109375, "b": 370.6873779296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9477778077125549, "cells": [{"id": 3, "text": "Figure 20 Architecture for credit risk prediction by using DL on IBM Z", "bbox": {"l": 64.800003, "t": 362.05798, "r": 342.49408, "b": 370.38300000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 20 Architecture for credit risk prediction by using DL on IBM Z"}, {"label": "text", "id": 4, "page_no": 25, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.12535095214844, "t": 383.51470947265625, "r": 534.56866, "b": 429.55059814453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9804685115814209, "cells": [{"id": 4, "text": "Data scientists can start creating and training a DL AI model by using a Jupyter Notebook ", "bbox": {"l": 136.8, "t": 384.04873999999995, "r": 534.56866, "b": 393.26172, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "instance and Watson Studio. Then, they can deploy the model by using WML on CP4D ", "bbox": {"l": 136.8, "t": 396.04855, "r": 524.06879, "b": 405.26154, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "running on IBM Z, which provides an endpoint. Other applications, including the ", "bbox": {"l": 136.8, "t": 408.04837, "r": 490.8303199999999, "b": 417.26135, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "IBM WebSphere server, can produce credit risk results by using the model\u2019s endpoint.", "bbox": {"l": 136.8, "t": 420.0481899999999, "r": 516.49701, "b": 429.26117, "coord_origin": "TOPLEFT"}}]}, "text": "Data scientists can start creating and training a DL AI model by using a Jupyter Notebook instance and Watson Studio. Then, they can deploy the model by using WML on CP4D running on IBM Z, which provides an endpoint. Other applications, including the IBM WebSphere server, can produce credit risk results by using the model\u2019s endpoint."}, {"label": "text", "id": 5, "page_no": 25, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.19705200195312, "t": 441.5392150878906, "r": 547.21588, "b": 463.28055, "coord_origin": "TOPLEFT"}, "confidence": 0.9671667814254761, "cells": [{"id": 8, "text": "In summary, here are some considerations for developing real-time AI models, such as credit ", "bbox": {"l": 136.8, "t": 442.06775, "r": 547.21588, "b": 451.28073, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "risk assessment:", "bbox": {"l": 136.80002, "t": 454.06757, "r": 211.19226, "b": 463.28055, "coord_origin": "TOPLEFT"}}]}, "text": "In summary, here are some considerations for developing real-time AI models, such as credit risk assessment:"}, {"label": "list_item", "id": 6, "page_no": 25, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.6735076904297, "t": 469.95037841796875, "r": 522.90546, "b": 480.26035, "coord_origin": "TOPLEFT"}, "confidence": 0.955508291721344, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 471.19675, "r": 141.78001, "b": 479.97153, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "A preference for in-platform run times of the model, such as faster execution results.", "bbox": {"l": 151.20018, "t": 471.04736, "r": 522.90546, "b": 480.26035, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH A preference for in-platform run times of the model, such as faster execution results."}, {"label": "list_item", "id": 7, "page_no": 25, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.52078247070312, "t": 487.4938659667969, "r": 445.53699, "b": 497.67242431640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9564528465270996, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 488.17654, "r": 141.78001, "b": 496.95132, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Less overhead in the end-to-end flows might improve scoring time.", "bbox": {"l": 151.20018, "t": 488.02716, "r": 445.53699, "b": 497.24014, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Less overhead in the end-to-end flows might improve scoring time."}, {"label": "list_item", "id": 8, "page_no": 25, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.63246154785156, "t": 504.0003356933594, "r": 547.32324, "b": 526.3165893554688, "coord_origin": "TOPLEFT"}, "confidence": 0.9790537357330322, "cells": [{"id": 14, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 505.21613, "r": 141.78001, "b": 513.99091, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "If you are using models that are not deployable, CP4D offers a custom Python run time to ", "bbox": {"l": 151.20018, "t": 505.06674, "r": 547.32324, "b": 514.27972, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "build your own stack if they are not available on the platform.", "bbox": {"l": 151.2002, "t": 517.06656, "r": 419.67203, "b": 526.27954, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH If you are using models that are not deployable, CP4D offers a custom Python run time to build your own stack if they are not available on the platform."}, {"label": "list_item", "id": 9, "page_no": 25, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.62271118164062, "t": 533.3601684570312, "r": 541.78046, "b": 555.25917, "coord_origin": "TOPLEFT"}, "confidence": 0.970277726650238, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.80003, "t": 534.19577, "r": 141.78003, "b": 542.97052, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "AI inferencing based on ML or DL models can increase the accuracy of better credit risk ", "bbox": {"l": 151.2002, "t": 534.04636, "r": 541.78046, "b": 543.25937, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "assessment.", "bbox": {"l": 151.2002, "t": 546.0461700000001, "r": 207.28795, "b": 555.25917, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH AI inferencing based on ML or DL models can increase the accuracy of better credit risk assessment."}, {"label": "list_item", "id": 10, "page_no": 25, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.50205993652344, "t": 561.84619140625, "r": 531.80676, "b": 596.2385899999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9821013808250427, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.80003, "t": 563.17538, "r": 141.78003, "b": 571.9501300000001, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Using IBM z16 and on-chip AI acceleration with the Telum chip that is embedded with ", "bbox": {"l": 151.2002, "t": 563.02599, "r": 531.80676, "b": 572.23898, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "regular Integrated Facility for Linux (IFLs) provides an execution speed for your ", "bbox": {"l": 151.2002, "t": 575.02579, "r": 503.30713000000003, "b": 584.23878, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "transactions that cannot be achieved by other means.", "bbox": {"l": 151.1992, "t": 587.02559, "r": 388.4444, "b": 596.2385899999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Using IBM z16 and on-chip AI acceleration with the Telum chip that is embedded with regular Integrated Facility for Linux (IFLs) provides an execution speed for your transactions that cannot be achieved by other means."}, {"label": "picture", "id": 11, "page_no": 25, "cluster": {"id": 11, "label": "picture", "bbox": {"l": 65.03783416748047, "t": 94.93846130371094, "r": 547.6334838867188, "b": 359.3612365722656, "coord_origin": "TOPLEFT"}, "confidence": 0.984186589717865, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 25, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.43939208984375, "t": 70.69316101074219, "r": 489.57016, "b": 81.03749084472656, "coord_origin": "TOPLEFT"}, "confidence": 0.7741285562515259, "cells": [{"id": 2, "text": "Figure 20 shows an architecture for predicting credit risk by using DL on IBM Z. ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 489.57016, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 20 shows an architecture for predicting credit risk by using DL on IBM Z."}, {"label": "caption", "id": 3, "page_no": 25, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.37335968017578, "t": 361.3172302246094, "r": 344.09613037109375, "b": 370.6873779296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9477778077125549, "cells": [{"id": 3, "text": "Figure 20 Architecture for credit risk prediction by using DL on IBM Z", "bbox": {"l": 64.800003, "t": 362.05798, "r": 342.49408, "b": 370.38300000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 20 Architecture for credit risk prediction by using DL on IBM Z"}, {"label": "text", "id": 4, "page_no": 25, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.12535095214844, "t": 383.51470947265625, "r": 534.56866, "b": 429.55059814453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9804685115814209, "cells": [{"id": 4, "text": "Data scientists can start creating and training a DL AI model by using a Jupyter Notebook ", "bbox": {"l": 136.8, "t": 384.04873999999995, "r": 534.56866, "b": 393.26172, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "instance and Watson Studio. Then, they can deploy the model by using WML on CP4D ", "bbox": {"l": 136.8, "t": 396.04855, "r": 524.06879, "b": 405.26154, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "running on IBM Z, which provides an endpoint. Other applications, including the ", "bbox": {"l": 136.8, "t": 408.04837, "r": 490.8303199999999, "b": 417.26135, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "IBM WebSphere server, can produce credit risk results by using the model\u2019s endpoint.", "bbox": {"l": 136.8, "t": 420.0481899999999, "r": 516.49701, "b": 429.26117, "coord_origin": "TOPLEFT"}}]}, "text": "Data scientists can start creating and training a DL AI model by using a Jupyter Notebook instance and Watson Studio. Then, they can deploy the model by using WML on CP4D running on IBM Z, which provides an endpoint. Other applications, including the IBM WebSphere server, can produce credit risk results by using the model\u2019s endpoint."}, {"label": "text", "id": 5, "page_no": 25, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.19705200195312, "t": 441.5392150878906, "r": 547.21588, "b": 463.28055, "coord_origin": "TOPLEFT"}, "confidence": 0.9671667814254761, "cells": [{"id": 8, "text": "In summary, here are some considerations for developing real-time AI models, such as credit ", "bbox": {"l": 136.8, "t": 442.06775, "r": 547.21588, "b": 451.28073, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "risk assessment:", "bbox": {"l": 136.80002, "t": 454.06757, "r": 211.19226, "b": 463.28055, "coord_origin": "TOPLEFT"}}]}, "text": "In summary, here are some considerations for developing real-time AI models, such as credit risk assessment:"}, {"label": "list_item", "id": 6, "page_no": 25, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.6735076904297, "t": 469.95037841796875, "r": 522.90546, "b": 480.26035, "coord_origin": "TOPLEFT"}, "confidence": 0.955508291721344, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 471.19675, "r": 141.78001, "b": 479.97153, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "A preference for in-platform run times of the model, such as faster execution results.", "bbox": {"l": 151.20018, "t": 471.04736, "r": 522.90546, "b": 480.26035, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH A preference for in-platform run times of the model, such as faster execution results."}, {"label": "list_item", "id": 7, "page_no": 25, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.52078247070312, "t": 487.4938659667969, "r": 445.53699, "b": 497.67242431640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9564528465270996, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 488.17654, "r": 141.78001, "b": 496.95132, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Less overhead in the end-to-end flows might improve scoring time.", "bbox": {"l": 151.20018, "t": 488.02716, "r": 445.53699, "b": 497.24014, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Less overhead in the end-to-end flows might improve scoring time."}, {"label": "list_item", "id": 8, "page_no": 25, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.63246154785156, "t": 504.0003356933594, "r": 547.32324, "b": 526.3165893554688, "coord_origin": "TOPLEFT"}, "confidence": 0.9790537357330322, "cells": [{"id": 14, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 505.21613, "r": 141.78001, "b": 513.99091, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "If you are using models that are not deployable, CP4D offers a custom Python run time to ", "bbox": {"l": 151.20018, "t": 505.06674, "r": 547.32324, "b": 514.27972, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "build your own stack if they are not available on the platform.", "bbox": {"l": 151.2002, "t": 517.06656, "r": 419.67203, "b": 526.27954, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH If you are using models that are not deployable, CP4D offers a custom Python run time to build your own stack if they are not available on the platform."}, {"label": "list_item", "id": 9, "page_no": 25, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.62271118164062, "t": 533.3601684570312, "r": 541.78046, "b": 555.25917, "coord_origin": "TOPLEFT"}, "confidence": 0.970277726650238, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.80003, "t": 534.19577, "r": 141.78003, "b": 542.97052, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "AI inferencing based on ML or DL models can increase the accuracy of better credit risk ", "bbox": {"l": 151.2002, "t": 534.04636, "r": 541.78046, "b": 543.25937, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "assessment.", "bbox": {"l": 151.2002, "t": 546.0461700000001, "r": 207.28795, "b": 555.25917, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH AI inferencing based on ML or DL models can increase the accuracy of better credit risk assessment."}, {"label": "list_item", "id": 10, "page_no": 25, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.50205993652344, "t": 561.84619140625, "r": 531.80676, "b": 596.2385899999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9821013808250427, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.80003, "t": 563.17538, "r": 141.78003, "b": 571.9501300000001, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Using IBM z16 and on-chip AI acceleration with the Telum chip that is embedded with ", "bbox": {"l": 151.2002, "t": 563.02599, "r": 531.80676, "b": 572.23898, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "regular Integrated Facility for Linux (IFLs) provides an execution speed for your ", "bbox": {"l": 151.2002, "t": 575.02579, "r": 503.30713000000003, "b": 584.23878, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "transactions that cannot be achieved by other means.", "bbox": {"l": 151.1992, "t": 587.02559, "r": 388.4444, "b": 596.2385899999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Using IBM z16 and on-chip AI acceleration with the Telum chip that is embedded with regular Integrated Facility for Linux (IFLs) provides an execution speed for your transactions that cannot be achieved by other means."}, {"label": "picture", "id": 11, "page_no": 25, "cluster": {"id": 11, "label": "picture", "bbox": {"l": 65.03783416748047, "t": 94.93846130371094, "r": 547.6334838867188, "b": 359.3612365722656, "coord_origin": "TOPLEFT"}, "confidence": 0.984186589717865, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 25, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.90467071533203, "t": 754.3189086914062, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9163190722465515, "cells": [{"id": 0, "text": "24 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "24"}, {"label": "page_footer", "id": 1, "page_no": 25, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.28766632080078, "t": 754.7548828125, "r": 267.0744, "b": 764.1080322265625, "coord_origin": "TOPLEFT"}, "confidence": 0.95806485414505, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}]}}, {"page_no": 26, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "25", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Use case 3: Clearing and settlement", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 338.53796, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Clearing and settlements involve banks or financial institutions sending and receiving wire ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 535.67212, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "transfers by using secure interbank payments networks that can clear or settle numerous ", "bbox": {"l": 136.80099, "t": 115.48852999999997, "r": 532.35547, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "transactions. When an individual or business entity initiates a wire transfer, clearing begins ", "bbox": {"l": 136.80099, "t": 127.48834000000011, "r": 539.56549, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "the fund delivery process. Banks can begin the settlement phase either immediately after ", "bbox": {"l": 136.80099, "t": 139.48816, "r": 532.37543, "b": 148.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "clearing takes place or later, mostly at the end of the business day.", "bbox": {"l": 136.80099, "t": 151.48798, "r": 432.38098, "b": 160.70099000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Industry challenge", "bbox": {"l": 64.800003, "t": 181.37469, "r": 179.53229, "b": 193.36273000000006, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Banks and financial institutions must deal with high-risk transactions that can lead to loss. ", "bbox": {"l": 136.8, "t": 207.52868999999998, "r": 534.60443, "b": 216.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Moreover, these transactions can lead to regulatory violations and extra compliance costs. ", "bbox": {"l": 136.8, "t": 219.5285, "r": 538.43591, "b": 228.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Clearing and settlement solution", "bbox": {"l": 64.800003, "t": 249.35468000000003, "r": 266.07788, "b": 261.34271, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Use AI to predict which trades or transactions have high risk exposures, and propose ", "bbox": {"l": 136.8, "t": 275.50873, "r": 515.18536, "b": 284.72171, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "solutions for a more efficient settlement process. The expedited remediation of questionable ", "bbox": {"l": 136.8, "t": 287.50854, "r": 545.69684, "b": 296.72153, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "transactions can prevent costly consequences, regulatory violations, and negative business ", "bbox": {"l": 136.8, "t": 299.50836, "r": 543.44592, "b": 308.72134, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "impacts.", "bbox": {"l": 136.8, "t": 311.5081799999999, "r": 174.01752, "b": 320.72116, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "In financial institutions, finding which financial transactions are legitimate and which ", "bbox": {"l": 136.8, "t": 333.52774, "r": 507.3628499999999, "b": 342.74072, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "transactions are fraudulent is of paramount importance. In this section, we go through a use ", "bbox": {"l": 136.80002, "t": 345.52756, "r": 544.66211, "b": 354.74053999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "case where we use AI to predict which trades or transactions have high risk exposures, and ", "bbox": {"l": 136.80002, "t": 357.5273700000001, "r": 544.02649, "b": 366.74036000000007, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "propose solutions for a more efficient settlement process. The expedited remediation of ", "bbox": {"l": 136.80003, "t": 369.52719, "r": 525.13257, "b": 378.74017, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "questionable transactions can prevent costly consequences, regulatory violations, and ", "bbox": {"l": 136.80003, "t": 381.52701, "r": 520.08868, "b": 390.7399899999999, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "negative business impacts to financial institutions.", "bbox": {"l": 136.80002, "t": 393.52682000000004, "r": 357.32925, "b": 402.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "The goal is to predict in real time whether the transaction being processed might be a ", "bbox": {"l": 136.80002, "t": 415.48663, "r": 516.24792, "b": 424.69962, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "fraudulent transaction or not. To achieve this goal, we build an ML model that can do this ", "bbox": {"l": 136.80002, "t": 427.48645, "r": 531.83636, "b": 436.69943, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "prediction for the financial institution. Because there would be many transactions being ", "bbox": {"l": 136.80002, "t": 439.48627, "r": 522.39142, "b": 448.69924999999995, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "processed at any point by the financial institution, it is important to perform this prediction of ", "bbox": {"l": 136.80002, "t": 451.4860800000001, "r": 543.34729, "b": 460.69907000000006, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "fraudulent transactions in near-real time in a few milliseconds.", "bbox": {"l": 136.80002, "t": 463.4859, "r": 410.05762, "b": 472.69888, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "One possible solution is to build and train a TensorFlow based DL model that learns from the ", "bbox": {"l": 136.79903, "t": 485.50546, "r": 547.16302, "b": 494.71844, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "historical data and predicts the fraudulent transactions. CP4D on IBM Z and ", "bbox": {"l": 136.79903, "t": 497.50528, "r": 474.12341, "b": 506.71826, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IBM LinuxONE is a suitable product where this task can be achieved and the model deployed, ", "bbox": {"l": 136.79903, "t": 509.5051, "r": 547.23358, "b": 518.71808, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "and coming up with a serving endpoint.", "bbox": {"l": 136.79903, "t": 521.50491, "r": 310.2305, "b": 530.7179, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 535.565673828125, "t": 754.3200073242188, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9160840511322021, "cells": [{"id": 0, "text": "25", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "section_header", "bbox": {"l": 64.79078674316406, "t": 70.07665252685547, "r": 338.53796, "b": 86.30354309082031, "coord_origin": "TOPLEFT"}, "confidence": 0.9623725414276123, "cells": [{"id": 1, "text": "Use case 3: Clearing and settlement", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 338.53796, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.91648864746094, "t": 102.71073150634766, "r": 539.56549, "b": 161.0622100830078, "coord_origin": "TOPLEFT"}, "confidence": 0.9869711399078369, "cells": [{"id": 2, "text": "Clearing and settlements involve banks or financial institutions sending and receiving wire ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 535.67212, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "transfers by using secure interbank payments networks that can clear or settle numerous ", "bbox": {"l": 136.80099, "t": 115.48852999999997, "r": 532.35547, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "transactions. When an individual or business entity initiates a wire transfer, clearing begins ", "bbox": {"l": 136.80099, "t": 127.48834000000011, "r": 539.56549, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "the fund delivery process. Banks can begin the settlement phase either immediately after ", "bbox": {"l": 136.80099, "t": 139.48816, "r": 532.37543, "b": 148.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "clearing takes place or later, mostly at the end of the business day.", "bbox": {"l": 136.80099, "t": 151.48798, "r": 432.38098, "b": 160.70099000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "section_header", "bbox": {"l": 64.3849868774414, "t": 180.6492462158203, "r": 179.53229, "b": 193.6511993408203, "coord_origin": "TOPLEFT"}, "confidence": 0.9618170857429504, "cells": [{"id": 7, "text": "Industry challenge", "bbox": {"l": 64.800003, "t": 181.37469, "r": 179.53229, "b": 193.36273000000006, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 136.17025756835938, "t": 206.79721069335938, "r": 538.43591, "b": 228.78622436523438, "coord_origin": "TOPLEFT"}, "confidence": 0.963640034198761, "cells": [{"id": 8, "text": "Banks and financial institutions must deal with high-risk transactions that can lead to loss. ", "bbox": {"l": 136.8, "t": 207.52868999999998, "r": 534.60443, "b": 216.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Moreover, these transactions can lead to regulatory violations and extra compliance costs. ", "bbox": {"l": 136.8, "t": 219.5285, "r": 538.43591, "b": 228.74152000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "section_header", "bbox": {"l": 64.63189697265625, "t": 248.53985595703125, "r": 266.07788, "b": 261.7796936035156, "coord_origin": "TOPLEFT"}, "confidence": 0.9650317430496216, "cells": [{"id": 10, "text": "Clearing and settlement solution", "bbox": {"l": 64.800003, "t": 249.35468000000003, "r": 266.07788, "b": 261.34271, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 135.968505859375, "t": 274.7626037597656, "r": 545.69684, "b": 321.0018005371094, "coord_origin": "TOPLEFT"}, "confidence": 0.9876250624656677, "cells": [{"id": 11, "text": "Use AI to predict which trades or transactions have high risk exposures, and propose ", "bbox": {"l": 136.8, "t": 275.50873, "r": 515.18536, "b": 284.72171, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "solutions for a more efficient settlement process. The expedited remediation of questionable ", "bbox": {"l": 136.8, "t": 287.50854, "r": 545.69684, "b": 296.72153, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "transactions can prevent costly consequences, regulatory violations, and negative business ", "bbox": {"l": 136.8, "t": 299.50836, "r": 543.44592, "b": 308.72134, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "impacts.", "bbox": {"l": 136.8, "t": 311.5081799999999, "r": 174.01752, "b": 320.72116, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 135.97213745117188, "t": 332.8114318847656, "r": 544.66211, "b": 402.8791809082031, "coord_origin": "TOPLEFT"}, "confidence": 0.9885076284408569, "cells": [{"id": 15, "text": "In financial institutions, finding which financial transactions are legitimate and which ", "bbox": {"l": 136.8, "t": 333.52774, "r": 507.3628499999999, "b": 342.74072, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "transactions are fraudulent is of paramount importance. In this section, we go through a use ", "bbox": {"l": 136.80002, "t": 345.52756, "r": 544.66211, "b": 354.74053999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "case where we use AI to predict which trades or transactions have high risk exposures, and ", "bbox": {"l": 136.80002, "t": 357.5273700000001, "r": 544.02649, "b": 366.74036000000007, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "propose solutions for a more efficient settlement process. The expedited remediation of ", "bbox": {"l": 136.80003, "t": 369.52719, "r": 525.13257, "b": 378.74017, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "questionable transactions can prevent costly consequences, regulatory violations, and ", "bbox": {"l": 136.80003, "t": 381.52701, "r": 520.08868, "b": 390.7399899999999, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "negative business impacts to financial institutions.", "bbox": {"l": 136.80002, "t": 393.52682000000004, "r": 357.32925, "b": 402.73981000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 135.8656463623047, "t": 414.916259765625, "r": 543.34729, "b": 472.69888, "coord_origin": "TOPLEFT"}, "confidence": 0.9878571033477783, "cells": [{"id": 21, "text": "The goal is to predict in real time whether the transaction being processed might be a ", "bbox": {"l": 136.80002, "t": 415.48663, "r": 516.24792, "b": 424.69962, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "fraudulent transaction or not. To achieve this goal, we build an ML model that can do this ", "bbox": {"l": 136.80002, "t": 427.48645, "r": 531.83636, "b": 436.69943, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "prediction for the financial institution. Because there would be many transactions being ", "bbox": {"l": 136.80002, "t": 439.48627, "r": 522.39142, "b": 448.69924999999995, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "processed at any point by the financial institution, it is important to perform this prediction of ", "bbox": {"l": 136.80002, "t": 451.4860800000001, "r": 543.34729, "b": 460.69907000000006, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "fraudulent transactions in near-real time in a few milliseconds.", "bbox": {"l": 136.80002, "t": 463.4859, "r": 410.05762, "b": 472.69888, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 135.92105102539062, "t": 484.82086181640625, "r": 547.23358, "b": 530.9995727539062, "coord_origin": "TOPLEFT"}, "confidence": 0.9847769737243652, "cells": [{"id": 26, "text": "One possible solution is to build and train a TensorFlow based DL model that learns from the ", "bbox": {"l": 136.79903, "t": 485.50546, "r": 547.16302, "b": 494.71844, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "historical data and predicts the fraudulent transactions. CP4D on IBM Z and ", "bbox": {"l": 136.79903, "t": 497.50528, "r": 474.12341, "b": 506.71826, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IBM LinuxONE is a suitable product where this task can be achieved and the model deployed, ", "bbox": {"l": 136.79903, "t": 509.5051, "r": 547.23358, "b": 518.71808, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "and coming up with a serving endpoint.", "bbox": {"l": 136.79903, "t": 521.50491, "r": 310.2305, "b": 530.7179, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 26, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 535.565673828125, "t": 754.3200073242188, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9160840511322021, "cells": [{"id": 0, "text": "25", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "25"}, {"label": "section_header", "id": 1, "page_no": 26, "cluster": {"id": 1, "label": "section_header", "bbox": {"l": 64.79078674316406, "t": 70.07665252685547, "r": 338.53796, "b": 86.30354309082031, "coord_origin": "TOPLEFT"}, "confidence": 0.9623725414276123, "cells": [{"id": 1, "text": "Use case 3: Clearing and settlement", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 338.53796, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, "text": "Use case 3: Clearing and settlement"}, {"label": "text", "id": 2, "page_no": 26, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.91648864746094, "t": 102.71073150634766, "r": 539.56549, "b": 161.0622100830078, "coord_origin": "TOPLEFT"}, "confidence": 0.9869711399078369, "cells": [{"id": 2, "text": "Clearing and settlements involve banks or financial institutions sending and receiving wire ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 535.67212, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "transfers by using secure interbank payments networks that can clear or settle numerous ", "bbox": {"l": 136.80099, "t": 115.48852999999997, "r": 532.35547, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "transactions. When an individual or business entity initiates a wire transfer, clearing begins ", "bbox": {"l": 136.80099, "t": 127.48834000000011, "r": 539.56549, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "the fund delivery process. Banks can begin the settlement phase either immediately after ", "bbox": {"l": 136.80099, "t": 139.48816, "r": 532.37543, "b": 148.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "clearing takes place or later, mostly at the end of the business day.", "bbox": {"l": 136.80099, "t": 151.48798, "r": 432.38098, "b": 160.70099000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Clearing and settlements involve banks or financial institutions sending and receiving wire transfers by using secure interbank payments networks that can clear or settle numerous transactions. When an individual or business entity initiates a wire transfer, clearing begins the fund delivery process. Banks can begin the settlement phase either immediately after clearing takes place or later, mostly at the end of the business day."}, {"label": "section_header", "id": 3, "page_no": 26, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 64.3849868774414, "t": 180.6492462158203, "r": 179.53229, "b": 193.6511993408203, "coord_origin": "TOPLEFT"}, "confidence": 0.9618170857429504, "cells": [{"id": 7, "text": "Industry challenge", "bbox": {"l": 64.800003, "t": 181.37469, "r": 179.53229, "b": 193.36273000000006, "coord_origin": "TOPLEFT"}}]}, "text": "Industry challenge"}, {"label": "text", "id": 4, "page_no": 26, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.17025756835938, "t": 206.79721069335938, "r": 538.43591, "b": 228.78622436523438, "coord_origin": "TOPLEFT"}, "confidence": 0.963640034198761, "cells": [{"id": 8, "text": "Banks and financial institutions must deal with high-risk transactions that can lead to loss. ", "bbox": {"l": 136.8, "t": 207.52868999999998, "r": 534.60443, "b": 216.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Moreover, these transactions can lead to regulatory violations and extra compliance costs. ", "bbox": {"l": 136.8, "t": 219.5285, "r": 538.43591, "b": 228.74152000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Banks and financial institutions must deal with high-risk transactions that can lead to loss. Moreover, these transactions can lead to regulatory violations and extra compliance costs."}, {"label": "section_header", "id": 5, "page_no": 26, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 64.63189697265625, "t": 248.53985595703125, "r": 266.07788, "b": 261.7796936035156, "coord_origin": "TOPLEFT"}, "confidence": 0.9650317430496216, "cells": [{"id": 10, "text": "Clearing and settlement solution", "bbox": {"l": 64.800003, "t": 249.35468000000003, "r": 266.07788, "b": 261.34271, "coord_origin": "TOPLEFT"}}]}, "text": "Clearing and settlement solution"}, {"label": "text", "id": 6, "page_no": 26, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.968505859375, "t": 274.7626037597656, "r": 545.69684, "b": 321.0018005371094, "coord_origin": "TOPLEFT"}, "confidence": 0.9876250624656677, "cells": [{"id": 11, "text": "Use AI to predict which trades or transactions have high risk exposures, and propose ", "bbox": {"l": 136.8, "t": 275.50873, "r": 515.18536, "b": 284.72171, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "solutions for a more efficient settlement process. The expedited remediation of questionable ", "bbox": {"l": 136.8, "t": 287.50854, "r": 545.69684, "b": 296.72153, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "transactions can prevent costly consequences, regulatory violations, and negative business ", "bbox": {"l": 136.8, "t": 299.50836, "r": 543.44592, "b": 308.72134, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "impacts.", "bbox": {"l": 136.8, "t": 311.5081799999999, "r": 174.01752, "b": 320.72116, "coord_origin": "TOPLEFT"}}]}, "text": "Use AI to predict which trades or transactions have high risk exposures, and propose solutions for a more efficient settlement process. The expedited remediation of questionable transactions can prevent costly consequences, regulatory violations, and negative business impacts."}, {"label": "text", "id": 7, "page_no": 26, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.97213745117188, "t": 332.8114318847656, "r": 544.66211, "b": 402.8791809082031, "coord_origin": "TOPLEFT"}, "confidence": 0.9885076284408569, "cells": [{"id": 15, "text": "In financial institutions, finding which financial transactions are legitimate and which ", "bbox": {"l": 136.8, "t": 333.52774, "r": 507.3628499999999, "b": 342.74072, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "transactions are fraudulent is of paramount importance. In this section, we go through a use ", "bbox": {"l": 136.80002, "t": 345.52756, "r": 544.66211, "b": 354.74053999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "case where we use AI to predict which trades or transactions have high risk exposures, and ", "bbox": {"l": 136.80002, "t": 357.5273700000001, "r": 544.02649, "b": 366.74036000000007, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "propose solutions for a more efficient settlement process. The expedited remediation of ", "bbox": {"l": 136.80003, "t": 369.52719, "r": 525.13257, "b": 378.74017, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "questionable transactions can prevent costly consequences, regulatory violations, and ", "bbox": {"l": 136.80003, "t": 381.52701, "r": 520.08868, "b": 390.7399899999999, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "negative business impacts to financial institutions.", "bbox": {"l": 136.80002, "t": 393.52682000000004, "r": 357.32925, "b": 402.73981000000003, "coord_origin": "TOPLEFT"}}]}, "text": "In financial institutions, finding which financial transactions are legitimate and which transactions are fraudulent is of paramount importance. In this section, we go through a use case where we use AI to predict which trades or transactions have high risk exposures, and propose solutions for a more efficient settlement process. The expedited remediation of questionable transactions can prevent costly consequences, regulatory violations, and negative business impacts to financial institutions."}, {"label": "text", "id": 8, "page_no": 26, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.8656463623047, "t": 414.916259765625, "r": 543.34729, "b": 472.69888, "coord_origin": "TOPLEFT"}, "confidence": 0.9878571033477783, "cells": [{"id": 21, "text": "The goal is to predict in real time whether the transaction being processed might be a ", "bbox": {"l": 136.80002, "t": 415.48663, "r": 516.24792, "b": 424.69962, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "fraudulent transaction or not. To achieve this goal, we build an ML model that can do this ", "bbox": {"l": 136.80002, "t": 427.48645, "r": 531.83636, "b": 436.69943, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "prediction for the financial institution. Because there would be many transactions being ", "bbox": {"l": 136.80002, "t": 439.48627, "r": 522.39142, "b": 448.69924999999995, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "processed at any point by the financial institution, it is important to perform this prediction of ", "bbox": {"l": 136.80002, "t": 451.4860800000001, "r": 543.34729, "b": 460.69907000000006, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "fraudulent transactions in near-real time in a few milliseconds.", "bbox": {"l": 136.80002, "t": 463.4859, "r": 410.05762, "b": 472.69888, "coord_origin": "TOPLEFT"}}]}, "text": "The goal is to predict in real time whether the transaction being processed might be a fraudulent transaction or not. To achieve this goal, we build an ML model that can do this prediction for the financial institution. Because there would be many transactions being processed at any point by the financial institution, it is important to perform this prediction of fraudulent transactions in near-real time in a few milliseconds."}, {"label": "text", "id": 9, "page_no": 26, "cluster": {"id": 9, "label": "text", "bbox": {"l": 135.92105102539062, "t": 484.82086181640625, "r": 547.23358, "b": 530.9995727539062, "coord_origin": "TOPLEFT"}, "confidence": 0.9847769737243652, "cells": [{"id": 26, "text": "One possible solution is to build and train a TensorFlow based DL model that learns from the ", "bbox": {"l": 136.79903, "t": 485.50546, "r": 547.16302, "b": 494.71844, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "historical data and predicts the fraudulent transactions. CP4D on IBM Z and ", "bbox": {"l": 136.79903, "t": 497.50528, "r": 474.12341, "b": 506.71826, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IBM LinuxONE is a suitable product where this task can be achieved and the model deployed, ", "bbox": {"l": 136.79903, "t": 509.5051, "r": 547.23358, "b": 518.71808, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "and coming up with a serving endpoint.", "bbox": {"l": 136.79903, "t": 521.50491, "r": 310.2305, "b": 530.7179, "coord_origin": "TOPLEFT"}}]}, "text": "One possible solution is to build and train a TensorFlow based DL model that learns from the historical data and predicts the fraudulent transactions. CP4D on IBM Z and IBM LinuxONE is a suitable product where this task can be achieved and the model deployed, and coming up with a serving endpoint."}], "body": [{"label": "section_header", "id": 1, "page_no": 26, "cluster": {"id": 1, "label": "section_header", "bbox": {"l": 64.79078674316406, "t": 70.07665252685547, "r": 338.53796, "b": 86.30354309082031, "coord_origin": "TOPLEFT"}, "confidence": 0.9623725414276123, "cells": [{"id": 1, "text": "Use case 3: Clearing and settlement", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 338.53796, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, "text": "Use case 3: Clearing and settlement"}, {"label": "text", "id": 2, "page_no": 26, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.91648864746094, "t": 102.71073150634766, "r": 539.56549, "b": 161.0622100830078, "coord_origin": "TOPLEFT"}, "confidence": 0.9869711399078369, "cells": [{"id": 2, "text": "Clearing and settlements involve banks or financial institutions sending and receiving wire ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 535.67212, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "transfers by using secure interbank payments networks that can clear or settle numerous ", "bbox": {"l": 136.80099, "t": 115.48852999999997, "r": 532.35547, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "transactions. When an individual or business entity initiates a wire transfer, clearing begins ", "bbox": {"l": 136.80099, "t": 127.48834000000011, "r": 539.56549, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "the fund delivery process. Banks can begin the settlement phase either immediately after ", "bbox": {"l": 136.80099, "t": 139.48816, "r": 532.37543, "b": 148.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "clearing takes place or later, mostly at the end of the business day.", "bbox": {"l": 136.80099, "t": 151.48798, "r": 432.38098, "b": 160.70099000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Clearing and settlements involve banks or financial institutions sending and receiving wire transfers by using secure interbank payments networks that can clear or settle numerous transactions. When an individual or business entity initiates a wire transfer, clearing begins the fund delivery process. Banks can begin the settlement phase either immediately after clearing takes place or later, mostly at the end of the business day."}, {"label": "section_header", "id": 3, "page_no": 26, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 64.3849868774414, "t": 180.6492462158203, "r": 179.53229, "b": 193.6511993408203, "coord_origin": "TOPLEFT"}, "confidence": 0.9618170857429504, "cells": [{"id": 7, "text": "Industry challenge", "bbox": {"l": 64.800003, "t": 181.37469, "r": 179.53229, "b": 193.36273000000006, "coord_origin": "TOPLEFT"}}]}, "text": "Industry challenge"}, {"label": "text", "id": 4, "page_no": 26, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.17025756835938, "t": 206.79721069335938, "r": 538.43591, "b": 228.78622436523438, "coord_origin": "TOPLEFT"}, "confidence": 0.963640034198761, "cells": [{"id": 8, "text": "Banks and financial institutions must deal with high-risk transactions that can lead to loss. ", "bbox": {"l": 136.8, "t": 207.52868999999998, "r": 534.60443, "b": 216.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Moreover, these transactions can lead to regulatory violations and extra compliance costs. ", "bbox": {"l": 136.8, "t": 219.5285, "r": 538.43591, "b": 228.74152000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Banks and financial institutions must deal with high-risk transactions that can lead to loss. Moreover, these transactions can lead to regulatory violations and extra compliance costs."}, {"label": "section_header", "id": 5, "page_no": 26, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 64.63189697265625, "t": 248.53985595703125, "r": 266.07788, "b": 261.7796936035156, "coord_origin": "TOPLEFT"}, "confidence": 0.9650317430496216, "cells": [{"id": 10, "text": "Clearing and settlement solution", "bbox": {"l": 64.800003, "t": 249.35468000000003, "r": 266.07788, "b": 261.34271, "coord_origin": "TOPLEFT"}}]}, "text": "Clearing and settlement solution"}, {"label": "text", "id": 6, "page_no": 26, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.968505859375, "t": 274.7626037597656, "r": 545.69684, "b": 321.0018005371094, "coord_origin": "TOPLEFT"}, "confidence": 0.9876250624656677, "cells": [{"id": 11, "text": "Use AI to predict which trades or transactions have high risk exposures, and propose ", "bbox": {"l": 136.8, "t": 275.50873, "r": 515.18536, "b": 284.72171, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "solutions for a more efficient settlement process. The expedited remediation of questionable ", "bbox": {"l": 136.8, "t": 287.50854, "r": 545.69684, "b": 296.72153, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "transactions can prevent costly consequences, regulatory violations, and negative business ", "bbox": {"l": 136.8, "t": 299.50836, "r": 543.44592, "b": 308.72134, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "impacts.", "bbox": {"l": 136.8, "t": 311.5081799999999, "r": 174.01752, "b": 320.72116, "coord_origin": "TOPLEFT"}}]}, "text": "Use AI to predict which trades or transactions have high risk exposures, and propose solutions for a more efficient settlement process. The expedited remediation of questionable transactions can prevent costly consequences, regulatory violations, and negative business impacts."}, {"label": "text", "id": 7, "page_no": 26, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.97213745117188, "t": 332.8114318847656, "r": 544.66211, "b": 402.8791809082031, "coord_origin": "TOPLEFT"}, "confidence": 0.9885076284408569, "cells": [{"id": 15, "text": "In financial institutions, finding which financial transactions are legitimate and which ", "bbox": {"l": 136.8, "t": 333.52774, "r": 507.3628499999999, "b": 342.74072, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "transactions are fraudulent is of paramount importance. In this section, we go through a use ", "bbox": {"l": 136.80002, "t": 345.52756, "r": 544.66211, "b": 354.74053999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "case where we use AI to predict which trades or transactions have high risk exposures, and ", "bbox": {"l": 136.80002, "t": 357.5273700000001, "r": 544.02649, "b": 366.74036000000007, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "propose solutions for a more efficient settlement process. The expedited remediation of ", "bbox": {"l": 136.80003, "t": 369.52719, "r": 525.13257, "b": 378.74017, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "questionable transactions can prevent costly consequences, regulatory violations, and ", "bbox": {"l": 136.80003, "t": 381.52701, "r": 520.08868, "b": 390.7399899999999, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "negative business impacts to financial institutions.", "bbox": {"l": 136.80002, "t": 393.52682000000004, "r": 357.32925, "b": 402.73981000000003, "coord_origin": "TOPLEFT"}}]}, "text": "In financial institutions, finding which financial transactions are legitimate and which transactions are fraudulent is of paramount importance. In this section, we go through a use case where we use AI to predict which trades or transactions have high risk exposures, and propose solutions for a more efficient settlement process. The expedited remediation of questionable transactions can prevent costly consequences, regulatory violations, and negative business impacts to financial institutions."}, {"label": "text", "id": 8, "page_no": 26, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.8656463623047, "t": 414.916259765625, "r": 543.34729, "b": 472.69888, "coord_origin": "TOPLEFT"}, "confidence": 0.9878571033477783, "cells": [{"id": 21, "text": "The goal is to predict in real time whether the transaction being processed might be a ", "bbox": {"l": 136.80002, "t": 415.48663, "r": 516.24792, "b": 424.69962, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "fraudulent transaction or not. To achieve this goal, we build an ML model that can do this ", "bbox": {"l": 136.80002, "t": 427.48645, "r": 531.83636, "b": 436.69943, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "prediction for the financial institution. Because there would be many transactions being ", "bbox": {"l": 136.80002, "t": 439.48627, "r": 522.39142, "b": 448.69924999999995, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "processed at any point by the financial institution, it is important to perform this prediction of ", "bbox": {"l": 136.80002, "t": 451.4860800000001, "r": 543.34729, "b": 460.69907000000006, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "fraudulent transactions in near-real time in a few milliseconds.", "bbox": {"l": 136.80002, "t": 463.4859, "r": 410.05762, "b": 472.69888, "coord_origin": "TOPLEFT"}}]}, "text": "The goal is to predict in real time whether the transaction being processed might be a fraudulent transaction or not. To achieve this goal, we build an ML model that can do this prediction for the financial institution. Because there would be many transactions being processed at any point by the financial institution, it is important to perform this prediction of fraudulent transactions in near-real time in a few milliseconds."}, {"label": "text", "id": 9, "page_no": 26, "cluster": {"id": 9, "label": "text", "bbox": {"l": 135.92105102539062, "t": 484.82086181640625, "r": 547.23358, "b": 530.9995727539062, "coord_origin": "TOPLEFT"}, "confidence": 0.9847769737243652, "cells": [{"id": 26, "text": "One possible solution is to build and train a TensorFlow based DL model that learns from the ", "bbox": {"l": 136.79903, "t": 485.50546, "r": 547.16302, "b": 494.71844, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "historical data and predicts the fraudulent transactions. CP4D on IBM Z and ", "bbox": {"l": 136.79903, "t": 497.50528, "r": 474.12341, "b": 506.71826, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IBM LinuxONE is a suitable product where this task can be achieved and the model deployed, ", "bbox": {"l": 136.79903, "t": 509.5051, "r": 547.23358, "b": 518.71808, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "and coming up with a serving endpoint.", "bbox": {"l": 136.79903, "t": 521.50491, "r": 310.2305, "b": 530.7179, "coord_origin": "TOPLEFT"}}]}, "text": "One possible solution is to build and train a TensorFlow based DL model that learns from the historical data and predicts the fraudulent transactions. CP4D on IBM Z and IBM LinuxONE is a suitable product where this task can be achieved and the model deployed, and coming up with a serving endpoint."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 26, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 535.565673828125, "t": 754.3200073242188, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9160840511322021, "cells": [{"id": 0, "text": "25", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "25"}]}}, {"page_no": 27, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "26 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Figure 21 provides a high-level diagram of a clearing and settlement use case for financial ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 537.35229, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "transactions that uses CP4D on IBM Z and IBM LinuxONE. ", "bbox": {"l": 136.80002, "t": 83.50847999999996, "r": 400.63745, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 21 Clearing and settlement use case for financial transactions by using Cloud Pak for Data ", "bbox": {"l": 64.800003, "t": 315.55798, "r": 459.9880999999999, "b": 323.88300000000004, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Here are the steps of the high-level process flow:", "bbox": {"l": 136.8, "t": 337.54873999999995, "r": 353.37115, "b": 346.76172, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "1.", "bbox": {"l": 136.8, "t": 354.52853, "r": 145.26041, "b": 363.74152, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Create a connection to a database (for example, an IBM Db2fi database) where the ", "bbox": {"l": 148.08052, "t": 354.52853, "r": 524.74097, "b": 363.74152, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "historical data will be used for ML model building.", "bbox": {"l": 151.20016, "t": 366.52835, "r": 369.07016, "b": 375.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "2.", "bbox": {"l": 136.80099, "t": 383.56793, "r": 145.20665, "b": 392.78091, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Read the data from the database and prepare the data for AI by using the Data Refinery ", "bbox": {"l": 148.00854, "t": 383.56793, "r": 542.98376, "b": 392.78091, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "tool in CP4D.", "bbox": {"l": 151.20116, "t": 395.56775, "r": 210.1524, "b": 404.78073, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "3.", "bbox": {"l": 136.80099, "t": 412.54755, "r": 145.20639, "b": 421.76053, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "A Jupyter Notebook or JupyterLab IDE that is provided by the Watson Studio component ", "bbox": {"l": 148.00818, "t": 412.54755, "r": 545.74249, "b": 421.76053, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "in CP4D helps us build and train the AI model. The trained model can be saved into a ", "bbox": {"l": 151.20116, "t": 424.54736, "r": 531.24298, "b": 433.76035, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "WML repository.", "bbox": {"l": 151.20116, "t": 436.54717999999997, "r": 223.98885, "b": 445.76016, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "4.", "bbox": {"l": 136.80099, "t": 453.52698000000004, "r": 145.2236, "b": 462.73996, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Deploy the saved model into a deployment space for batch deployment.", "bbox": {"l": 148.03114, "t": 453.52698000000004, "r": 468.55477999999994, "b": 462.73996, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "5.", "bbox": {"l": 136.80099, "t": 470.56656, "r": 145.23456, "b": 479.77954, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Create a batch deployment by using any of these interfaces:", "bbox": {"l": 148.04575, "t": 470.56656, "r": 417.28256, "b": 479.77954, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "a.", "bbox": {"l": 151.20116, "t": 487.54636, "r": 159.6295, "b": 496.75934, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Watson Studio user interface from an Analytics deployment space.", "bbox": {"l": 162.43896, "t": 487.54636, "r": 460.12939, "b": 496.75934, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "b.", "bbox": {"l": 151.20116, "t": 504.52615, "r": 159.81799, "b": 513.73914, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "WML Python client.", "bbox": {"l": 162.69028, "t": 504.52615, "r": 251.68962, "b": 513.73914, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "c.", "bbox": {"l": 151.20116, "t": 521.56573, "r": 159.30391, "b": 530.77872, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "WML REST APIs.", "bbox": {"l": 162.19923, "t": 521.56573, "r": 244.95566, "b": 530.77872, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "6.", "bbox": {"l": 136.80099, "t": 538.5455499999999, "r": 145.23759, "b": 547.75854, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "A hardware configuration can be chosen for the deployment.", "bbox": {"l": 148.04979, "t": 538.5455499999999, "r": 418.50659, "b": 547.75854, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "7.", "bbox": {"l": 136.80099, "t": 555.52536, "r": 145.2048, "b": 564.7383600000001, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "A batch deployment processes input data from a file, data connection, or connected data ", "bbox": {"l": 148.00607, "t": 555.52536, "r": 545.68579, "b": 564.7383600000001, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "in a storage bucket, and writes the output to a selected destination.", "bbox": {"l": 151.20117, "t": 567.52516, "r": 447.42055999999997, "b": 576.73816, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "8.", "bbox": {"l": 136.80101, "t": 584.56473, "r": 145.2097, "b": 593.77773, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "One way to run batch deployment to predict or score is to create and run a batch ", "bbox": {"l": 148.01257, "t": 584.56473, "r": 510.0397, "b": 593.77773, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "deployment job.", "bbox": {"l": 151.20117, "t": 596.56453, "r": 221.75086999999996, "b": 605.7775300000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "9.", "bbox": {"l": 136.80101, "t": 613.54434, "r": 145.34923, "b": 622.75734, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Provide an input data type:", "bbox": {"l": 148.19862, "t": 613.54434, "r": 270.12857, "b": 622.75734, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "a.", "bbox": {"l": 151.20117, "t": 630.52415, "r": 159.66412, "b": 639.73715, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Inline data for entering a JSON format payload.", "bbox": {"l": 162.48511, "t": 630.52415, "r": 374.55621, "b": 639.73715, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "b.", "bbox": {"l": 151.20117, "t": 647.56372, "r": 160.18944, "b": 656.7767200000001, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Select ", "bbox": {"l": 163.18553, "t": 647.56372, "r": 196.13173, "b": 656.7767200000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Data asset", "bbox": {"l": 196.14069, "t": 647.56372, "r": 246.17972, "b": 656.7767200000001, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": ", click ", "bbox": {"l": 246.12096, "t": 647.56372, "r": 273.91135, "b": 656.7767200000001, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Select data source", "bbox": {"l": 273.9014, "t": 647.56372, "r": 362.20071, "b": 656.7767200000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": ", and then specify your asset.", "bbox": {"l": 362.22171, "t": 647.56372, "r": 492.32922, "b": 656.7767200000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "10.The output data type can be a new output file or a connected data asset.", "bbox": {"l": 136.80202, "t": 664.54353, "r": 471.90997, "b": 673.75653, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "11.A Kubernetes admin can change the maximum number of concurrent batch jobs that can ", "bbox": {"l": 136.80202, "t": 681.52334, "r": 546.27057, "b": 690.73634, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "be run.", "bbox": {"l": 151.20218, "t": 693.523148, "r": 182.2774, "b": 702.7361530000001, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "12.Get the deployment endpoint URL. For more information, see Getting the deployment ", "bbox": {"l": 136.80202, "t": 710.562714, "r": 531.22009, "b": 719.775719, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "endpoint URL.", "bbox": {"l": 151.20218, "t": 722.562523, "r": 215.05075000000002, "b": 731.775528, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.89773941040039, "t": 754.3994140625, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9172815680503845, "cells": [{"id": 0, "text": "26 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.21942138671875, "t": 754.7265625, "r": 267.0744, "b": 764.1185302734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9594259858131409, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 136.25498962402344, "t": 70.68953704833984, "r": 537.35229, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.8348162174224854, "cells": [{"id": 2, "text": "Figure 21 provides a high-level diagram of a clearing and settlement use case for financial ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 537.35229, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "transactions that uses CP4D on IBM Z and IBM LinuxONE. ", "bbox": {"l": 136.80002, "t": 83.50847999999996, "r": 400.63745, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.17871856689453, "t": 314.66278076171875, "r": 459.9880999999999, "b": 324.0010986328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9384534955024719, "cells": [{"id": 4, "text": "Figure 21 Clearing and settlement use case for financial transactions by using Cloud Pak for Data ", "bbox": {"l": 64.800003, "t": 315.55798, "r": 459.9880999999999, "b": 323.88300000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 136.43458557128906, "t": 336.796630859375, "r": 353.37115, "b": 346.91217041015625, "coord_origin": "TOPLEFT"}, "confidence": 0.8770962953567505, "cells": [{"id": 5, "text": "Here are the steps of the high-level process flow:", "bbox": {"l": 136.8, "t": 337.54873999999995, "r": 353.37115, "b": 346.76172, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 136.8, "t": 354.0919494628906, "r": 524.74097, "b": 376.04498291015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9748183488845825, "cells": [{"id": 6, "text": "1.", "bbox": {"l": 136.8, "t": 354.52853, "r": 145.26041, "b": 363.74152, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Create a connection to a database (for example, an IBM Db2fi database) where the ", "bbox": {"l": 148.08052, "t": 354.52853, "r": 524.74097, "b": 363.74152, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "historical data will be used for ML model building.", "bbox": {"l": 151.20016, "t": 366.52835, "r": 369.07016, "b": 375.74132999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 136.05679321289062, "t": 382.5753173828125, "r": 542.98376, "b": 404.78073, "coord_origin": "TOPLEFT"}, "confidence": 0.9745410680770874, "cells": [{"id": 9, "text": "2.", "bbox": {"l": 136.80099, "t": 383.56793, "r": 145.20665, "b": 392.78091, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Read the data from the database and prepare the data for AI by using the Data Refinery ", "bbox": {"l": 148.00854, "t": 383.56793, "r": 542.98376, "b": 392.78091, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "tool in CP4D.", "bbox": {"l": 151.20116, "t": 395.56775, "r": 210.1524, "b": 404.78073, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 136.27484130859375, "t": 411.98052978515625, "r": 545.74249, "b": 446.5281066894531, "coord_origin": "TOPLEFT"}, "confidence": 0.9805867671966553, "cells": [{"id": 12, "text": "3.", "bbox": {"l": 136.80099, "t": 412.54755, "r": 145.20639, "b": 421.76053, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "A Jupyter Notebook or JupyterLab IDE that is provided by the Watson Studio component ", "bbox": {"l": 148.00818, "t": 412.54755, "r": 545.74249, "b": 421.76053, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "in CP4D helps us build and train the AI model. The trained model can be saved into a ", "bbox": {"l": 151.20116, "t": 424.54736, "r": 531.24298, "b": 433.76035, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "WML repository.", "bbox": {"l": 151.20116, "t": 436.54717999999997, "r": 223.98885, "b": 445.76016, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 136.03822326660156, "t": 452.6906433105469, "r": 468.55477999999994, "b": 463.2380676269531, "coord_origin": "TOPLEFT"}, "confidence": 0.9558380842208862, "cells": [{"id": 16, "text": "4.", "bbox": {"l": 136.80099, "t": 453.52698000000004, "r": 145.2236, "b": 462.73996, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Deploy the saved model into a deployment space for batch deployment.", "bbox": {"l": 148.03114, "t": 453.52698000000004, "r": 468.55477999999994, "b": 462.73996, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 136.39476013183594, "t": 470.06390380859375, "r": 417.28256, "b": 480.09649658203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9519129395484924, "cells": [{"id": 18, "text": "5.", "bbox": {"l": 136.80099, "t": 470.56656, "r": 145.23456, "b": 479.77954, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Create a batch deployment by using any of these interfaces:", "bbox": {"l": 148.04575, "t": 470.56656, "r": 417.28256, "b": 479.77954, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 150.49728393554688, "t": 486.6347961425781, "r": 460.12939, "b": 496.88531494140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9560188055038452, "cells": [{"id": 20, "text": "a.", "bbox": {"l": 151.20116, "t": 487.54636, "r": 159.6295, "b": 496.75934, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Watson Studio user interface from an Analytics deployment space.", "bbox": {"l": 162.43896, "t": 487.54636, "r": 460.12939, "b": 496.75934, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 150.5271759033203, "t": 503.9242248535156, "r": 251.68962, "b": 514.2030639648438, "coord_origin": "TOPLEFT"}, "confidence": 0.9418551921844482, "cells": [{"id": 22, "text": "b.", "bbox": {"l": 151.20116, "t": 504.52615, "r": 159.81799, "b": 513.73914, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "WML Python client.", "bbox": {"l": 162.69028, "t": 504.52615, "r": 251.68962, "b": 513.73914, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "list_item", "bbox": {"l": 150.59584045410156, "t": 520.1580810546875, "r": 244.95566, "b": 530.77872, "coord_origin": "TOPLEFT"}, "confidence": 0.9270838499069214, "cells": [{"id": 24, "text": "c.", "bbox": {"l": 151.20116, "t": 521.56573, "r": 159.30391, "b": 530.77872, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "WML REST APIs.", "bbox": {"l": 162.19923, "t": 521.56573, "r": 244.95566, "b": 530.77872, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "list_item", "bbox": {"l": 136.3202667236328, "t": 537.8785400390625, "r": 418.50659, "b": 548.1995849609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9545198678970337, "cells": [{"id": 26, "text": "6.", "bbox": {"l": 136.80099, "t": 538.5455499999999, "r": 145.23759, "b": 547.75854, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "A hardware configuration can be chosen for the deployment.", "bbox": {"l": 148.04979, "t": 538.5455499999999, "r": 418.50659, "b": 547.75854, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "list_item", "bbox": {"l": 136.2103271484375, "t": 554.7404174804688, "r": 545.68579, "b": 577.0736083984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9779444336891174, "cells": [{"id": 28, "text": "7.", "bbox": {"l": 136.80099, "t": 555.52536, "r": 145.2048, "b": 564.7383600000001, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "A batch deployment processes input data from a file, data connection, or connected data ", "bbox": {"l": 148.00607, "t": 555.52536, "r": 545.68579, "b": 564.7383600000001, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "in a storage bucket, and writes the output to a selected destination.", "bbox": {"l": 151.20117, "t": 567.52516, "r": 447.42055999999997, "b": 576.73816, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "list_item", "bbox": {"l": 136.31875610351562, "t": 583.98193359375, "r": 510.0397, "b": 606.4796752929688, "coord_origin": "TOPLEFT"}, "confidence": 0.9764688014984131, "cells": [{"id": 31, "text": "8.", "bbox": {"l": 136.80101, "t": 584.56473, "r": 145.2097, "b": 593.77773, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "One way to run batch deployment to predict or score is to create and run a batch ", "bbox": {"l": 148.01257, "t": 584.56473, "r": 510.0397, "b": 593.77773, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "deployment job.", "bbox": {"l": 151.20117, "t": 596.56453, "r": 221.75086999999996, "b": 605.7775300000001, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "list_item", "bbox": {"l": 136.13897705078125, "t": 612.574951171875, "r": 270.12857, "b": 623.031005859375, "coord_origin": "TOPLEFT"}, "confidence": 0.946601152420044, "cells": [{"id": 34, "text": "9.", "bbox": {"l": 136.80101, "t": 613.54434, "r": 145.34923, "b": 622.75734, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Provide an input data type:", "bbox": {"l": 148.19862, "t": 613.54434, "r": 270.12857, "b": 622.75734, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "list_item", "bbox": {"l": 150.43360900878906, "t": 630.0905151367188, "r": 374.55621, "b": 640.5849609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9528450965881348, "cells": [{"id": 36, "text": "a.", "bbox": {"l": 151.20117, "t": 630.52415, "r": 159.66412, "b": 639.73715, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Inline data for entering a JSON format payload.", "bbox": {"l": 162.48511, "t": 630.52415, "r": 374.55621, "b": 639.73715, "coord_origin": "TOPLEFT"}}]}, {"id": 18, "label": "list_item", "bbox": {"l": 150.56649780273438, "t": 646.7203369140625, "r": 492.32922, "b": 656.7977294921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9529765248298645, "cells": [{"id": 38, "text": "b.", "bbox": {"l": 151.20117, "t": 647.56372, "r": 160.18944, "b": 656.7767200000001, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Select ", "bbox": {"l": 163.18553, "t": 647.56372, "r": 196.13173, "b": 656.7767200000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Data asset", "bbox": {"l": 196.14069, "t": 647.56372, "r": 246.17972, "b": 656.7767200000001, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": ", click ", "bbox": {"l": 246.12096, "t": 647.56372, "r": 273.91135, "b": 656.7767200000001, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Select data source", "bbox": {"l": 273.9014, "t": 647.56372, "r": 362.20071, "b": 656.7767200000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": ", and then specify your asset.", "bbox": {"l": 362.22171, "t": 647.56372, "r": 492.32922, "b": 656.7767200000001, "coord_origin": "TOPLEFT"}}]}, {"id": 19, "label": "list_item", "bbox": {"l": 136.80202, "t": 664.13916015625, "r": 471.90997, "b": 674.3135986328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9405826330184937, "cells": [{"id": 44, "text": "10.The output data type can be a new output file or a connected data asset.", "bbox": {"l": 136.80202, "t": 664.54353, "r": 471.90997, "b": 673.75653, "coord_origin": "TOPLEFT"}}]}, {"id": 20, "label": "list_item", "bbox": {"l": 136.80202, "t": 680.8577880859375, "r": 546.27057, "b": 702.7361530000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9651632308959961, "cells": [{"id": 45, "text": "11.A Kubernetes admin can change the maximum number of concurrent batch jobs that can ", "bbox": {"l": 136.80202, "t": 681.52334, "r": 546.27057, "b": 690.73634, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "be run.", "bbox": {"l": 151.20218, "t": 693.523148, "r": 182.2774, "b": 702.7361530000001, "coord_origin": "TOPLEFT"}}]}, {"id": 21, "label": "list_item", "bbox": {"l": 136.71322631835938, "t": 709.8871459960938, "r": 531.22009, "b": 732.1051025390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9538568258285522, "cells": [{"id": 47, "text": "12.Get the deployment endpoint URL. For more information, see Getting the deployment ", "bbox": {"l": 136.80202, "t": 710.562714, "r": 531.22009, "b": 719.775719, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "endpoint URL.", "bbox": {"l": 151.20218, "t": 722.562523, "r": 215.05075000000002, "b": 731.775528, "coord_origin": "TOPLEFT"}}]}, {"id": 22, "label": "picture", "bbox": {"l": 64.01190948486328, "t": 107.36324310302734, "r": 542.310546875, "b": 311.54437255859375, "coord_origin": "TOPLEFT"}, "confidence": 0.9792013168334961, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 27, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.89773941040039, "t": 754.3994140625, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9172815680503845, "cells": [{"id": 0, "text": "26 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "26"}, {"label": "page_footer", "id": 1, "page_no": 27, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.21942138671875, "t": 754.7265625, "r": 267.0744, "b": 764.1185302734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9594259858131409, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"label": "text", "id": 2, "page_no": 27, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.25498962402344, "t": 70.68953704833984, "r": 537.35229, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.8348162174224854, "cells": [{"id": 2, "text": "Figure 21 provides a high-level diagram of a clearing and settlement use case for financial ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 537.35229, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "transactions that uses CP4D on IBM Z and IBM LinuxONE. ", "bbox": {"l": 136.80002, "t": 83.50847999999996, "r": 400.63745, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 21 provides a high-level diagram of a clearing and settlement use case for financial transactions that uses CP4D on IBM Z and IBM LinuxONE."}, {"label": "caption", "id": 3, "page_no": 27, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.17871856689453, "t": 314.66278076171875, "r": 459.9880999999999, "b": 324.0010986328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9384534955024719, "cells": [{"id": 4, "text": "Figure 21 Clearing and settlement use case for financial transactions by using Cloud Pak for Data ", "bbox": {"l": 64.800003, "t": 315.55798, "r": 459.9880999999999, "b": 323.88300000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 21 Clearing and settlement use case for financial transactions by using Cloud Pak for Data"}, {"label": "text", "id": 4, "page_no": 27, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.43458557128906, "t": 336.796630859375, "r": 353.37115, "b": 346.91217041015625, "coord_origin": "TOPLEFT"}, "confidence": 0.8770962953567505, "cells": [{"id": 5, "text": "Here are the steps of the high-level process flow:", "bbox": {"l": 136.8, "t": 337.54873999999995, "r": 353.37115, "b": 346.76172, "coord_origin": "TOPLEFT"}}]}, "text": "Here are the steps of the high-level process flow:"}, {"label": "list_item", "id": 5, "page_no": 27, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 136.8, "t": 354.0919494628906, "r": 524.74097, "b": 376.04498291015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9748183488845825, "cells": [{"id": 6, "text": "1.", "bbox": {"l": 136.8, "t": 354.52853, "r": 145.26041, "b": 363.74152, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Create a connection to a database (for example, an IBM Db2fi database) where the ", "bbox": {"l": 148.08052, "t": 354.52853, "r": 524.74097, "b": 363.74152, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "historical data will be used for ML model building.", "bbox": {"l": 151.20016, "t": 366.52835, "r": 369.07016, "b": 375.74132999999995, "coord_origin": "TOPLEFT"}}]}, "text": "1. Create a connection to a database (for example, an IBM Db2fi database) where the historical data will be used for ML model building."}, {"label": "list_item", "id": 6, "page_no": 27, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.05679321289062, "t": 382.5753173828125, "r": 542.98376, "b": 404.78073, "coord_origin": "TOPLEFT"}, "confidence": 0.9745410680770874, "cells": [{"id": 9, "text": "2.", "bbox": {"l": 136.80099, "t": 383.56793, "r": 145.20665, "b": 392.78091, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Read the data from the database and prepare the data for AI by using the Data Refinery ", "bbox": {"l": 148.00854, "t": 383.56793, "r": 542.98376, "b": 392.78091, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "tool in CP4D.", "bbox": {"l": 151.20116, "t": 395.56775, "r": 210.1524, "b": 404.78073, "coord_origin": "TOPLEFT"}}]}, "text": "2. Read the data from the database and prepare the data for AI by using the Data Refinery tool in CP4D."}, {"label": "list_item", "id": 7, "page_no": 27, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 136.27484130859375, "t": 411.98052978515625, "r": 545.74249, "b": 446.5281066894531, "coord_origin": "TOPLEFT"}, "confidence": 0.9805867671966553, "cells": [{"id": 12, "text": "3.", "bbox": {"l": 136.80099, "t": 412.54755, "r": 145.20639, "b": 421.76053, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "A Jupyter Notebook or JupyterLab IDE that is provided by the Watson Studio component ", "bbox": {"l": 148.00818, "t": 412.54755, "r": 545.74249, "b": 421.76053, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "in CP4D helps us build and train the AI model. The trained model can be saved into a ", "bbox": {"l": 151.20116, "t": 424.54736, "r": 531.24298, "b": 433.76035, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "WML repository.", "bbox": {"l": 151.20116, "t": 436.54717999999997, "r": 223.98885, "b": 445.76016, "coord_origin": "TOPLEFT"}}]}, "text": "3. A Jupyter Notebook or JupyterLab IDE that is provided by the Watson Studio component in CP4D helps us build and train the AI model. The trained model can be saved into a WML repository."}, {"label": "list_item", "id": 8, "page_no": 27, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 136.03822326660156, "t": 452.6906433105469, "r": 468.55477999999994, "b": 463.2380676269531, "coord_origin": "TOPLEFT"}, "confidence": 0.9558380842208862, "cells": [{"id": 16, "text": "4.", "bbox": {"l": 136.80099, "t": 453.52698000000004, "r": 145.2236, "b": 462.73996, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Deploy the saved model into a deployment space for batch deployment.", "bbox": {"l": 148.03114, "t": 453.52698000000004, "r": 468.55477999999994, "b": 462.73996, "coord_origin": "TOPLEFT"}}]}, "text": "4. Deploy the saved model into a deployment space for batch deployment."}, {"label": "list_item", "id": 9, "page_no": 27, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 136.39476013183594, "t": 470.06390380859375, "r": 417.28256, "b": 480.09649658203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9519129395484924, "cells": [{"id": 18, "text": "5.", "bbox": {"l": 136.80099, "t": 470.56656, "r": 145.23456, "b": 479.77954, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Create a batch deployment by using any of these interfaces:", "bbox": {"l": 148.04575, "t": 470.56656, "r": 417.28256, "b": 479.77954, "coord_origin": "TOPLEFT"}}]}, "text": "5. Create a batch deployment by using any of these interfaces:"}, {"label": "list_item", "id": 10, "page_no": 27, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 150.49728393554688, "t": 486.6347961425781, "r": 460.12939, "b": 496.88531494140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9560188055038452, "cells": [{"id": 20, "text": "a.", "bbox": {"l": 151.20116, "t": 487.54636, "r": 159.6295, "b": 496.75934, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Watson Studio user interface from an Analytics deployment space.", "bbox": {"l": 162.43896, "t": 487.54636, "r": 460.12939, "b": 496.75934, "coord_origin": "TOPLEFT"}}]}, "text": "a. Watson Studio user interface from an Analytics deployment space."}, {"label": "list_item", "id": 11, "page_no": 27, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 150.5271759033203, "t": 503.9242248535156, "r": 251.68962, "b": 514.2030639648438, "coord_origin": "TOPLEFT"}, "confidence": 0.9418551921844482, "cells": [{"id": 22, "text": "b.", "bbox": {"l": 151.20116, "t": 504.52615, "r": 159.81799, "b": 513.73914, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "WML Python client.", "bbox": {"l": 162.69028, "t": 504.52615, "r": 251.68962, "b": 513.73914, "coord_origin": "TOPLEFT"}}]}, "text": "b. WML Python client."}, {"label": "list_item", "id": 12, "page_no": 27, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 150.59584045410156, "t": 520.1580810546875, "r": 244.95566, "b": 530.77872, "coord_origin": "TOPLEFT"}, "confidence": 0.9270838499069214, "cells": [{"id": 24, "text": "c.", "bbox": {"l": 151.20116, "t": 521.56573, "r": 159.30391, "b": 530.77872, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "WML REST APIs.", "bbox": {"l": 162.19923, "t": 521.56573, "r": 244.95566, "b": 530.77872, "coord_origin": "TOPLEFT"}}]}, "text": "c. WML REST APIs."}, {"label": "list_item", "id": 13, "page_no": 27, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 136.3202667236328, "t": 537.8785400390625, "r": 418.50659, "b": 548.1995849609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9545198678970337, "cells": [{"id": 26, "text": "6.", "bbox": {"l": 136.80099, "t": 538.5455499999999, "r": 145.23759, "b": 547.75854, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "A hardware configuration can be chosen for the deployment.", "bbox": {"l": 148.04979, "t": 538.5455499999999, "r": 418.50659, "b": 547.75854, "coord_origin": "TOPLEFT"}}]}, "text": "6. A hardware configuration can be chosen for the deployment."}, {"label": "list_item", "id": 14, "page_no": 27, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 136.2103271484375, "t": 554.7404174804688, "r": 545.68579, "b": 577.0736083984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9779444336891174, "cells": [{"id": 28, "text": "7.", "bbox": {"l": 136.80099, "t": 555.52536, "r": 145.2048, "b": 564.7383600000001, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "A batch deployment processes input data from a file, data connection, or connected data ", "bbox": {"l": 148.00607, "t": 555.52536, "r": 545.68579, "b": 564.7383600000001, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "in a storage bucket, and writes the output to a selected destination.", "bbox": {"l": 151.20117, "t": 567.52516, "r": 447.42055999999997, "b": 576.73816, "coord_origin": "TOPLEFT"}}]}, "text": "7. A batch deployment processes input data from a file, data connection, or connected data in a storage bucket, and writes the output to a selected destination."}, {"label": "list_item", "id": 15, "page_no": 27, "cluster": {"id": 15, "label": "list_item", "bbox": {"l": 136.31875610351562, "t": 583.98193359375, "r": 510.0397, "b": 606.4796752929688, "coord_origin": "TOPLEFT"}, "confidence": 0.9764688014984131, "cells": [{"id": 31, "text": "8.", "bbox": {"l": 136.80101, "t": 584.56473, "r": 145.2097, "b": 593.77773, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "One way to run batch deployment to predict or score is to create and run a batch ", "bbox": {"l": 148.01257, "t": 584.56473, "r": 510.0397, "b": 593.77773, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "deployment job.", "bbox": {"l": 151.20117, "t": 596.56453, "r": 221.75086999999996, "b": 605.7775300000001, "coord_origin": "TOPLEFT"}}]}, "text": "8. One way to run batch deployment to predict or score is to create and run a batch deployment job."}, {"label": "list_item", "id": 16, "page_no": 27, "cluster": {"id": 16, "label": "list_item", "bbox": {"l": 136.13897705078125, "t": 612.574951171875, "r": 270.12857, "b": 623.031005859375, "coord_origin": "TOPLEFT"}, "confidence": 0.946601152420044, "cells": [{"id": 34, "text": "9.", "bbox": {"l": 136.80101, "t": 613.54434, "r": 145.34923, "b": 622.75734, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Provide an input data type:", "bbox": {"l": 148.19862, "t": 613.54434, "r": 270.12857, "b": 622.75734, "coord_origin": "TOPLEFT"}}]}, "text": "9. Provide an input data type:"}, {"label": "list_item", "id": 17, "page_no": 27, "cluster": {"id": 17, "label": "list_item", "bbox": {"l": 150.43360900878906, "t": 630.0905151367188, "r": 374.55621, "b": 640.5849609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9528450965881348, "cells": [{"id": 36, "text": "a.", "bbox": {"l": 151.20117, "t": 630.52415, "r": 159.66412, "b": 639.73715, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Inline data for entering a JSON format payload.", "bbox": {"l": 162.48511, "t": 630.52415, "r": 374.55621, "b": 639.73715, "coord_origin": "TOPLEFT"}}]}, "text": "a. Inline data for entering a JSON format payload."}, {"label": "list_item", "id": 18, "page_no": 27, "cluster": {"id": 18, "label": "list_item", "bbox": {"l": 150.56649780273438, "t": 646.7203369140625, "r": 492.32922, "b": 656.7977294921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9529765248298645, "cells": [{"id": 38, "text": "b.", "bbox": {"l": 151.20117, "t": 647.56372, "r": 160.18944, "b": 656.7767200000001, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Select ", "bbox": {"l": 163.18553, "t": 647.56372, "r": 196.13173, "b": 656.7767200000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Data asset", "bbox": {"l": 196.14069, "t": 647.56372, "r": 246.17972, "b": 656.7767200000001, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": ", click ", "bbox": {"l": 246.12096, "t": 647.56372, "r": 273.91135, "b": 656.7767200000001, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Select data source", "bbox": {"l": 273.9014, "t": 647.56372, "r": 362.20071, "b": 656.7767200000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": ", and then specify your asset.", "bbox": {"l": 362.22171, "t": 647.56372, "r": 492.32922, "b": 656.7767200000001, "coord_origin": "TOPLEFT"}}]}, "text": "b. Select Data asset , click Select data source , and then specify your asset."}, {"label": "list_item", "id": 19, "page_no": 27, "cluster": {"id": 19, "label": "list_item", "bbox": {"l": 136.80202, "t": 664.13916015625, "r": 471.90997, "b": 674.3135986328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9405826330184937, "cells": [{"id": 44, "text": "10.The output data type can be a new output file or a connected data asset.", "bbox": {"l": 136.80202, "t": 664.54353, "r": 471.90997, "b": 673.75653, "coord_origin": "TOPLEFT"}}]}, "text": "10.The output data type can be a new output file or a connected data asset."}, {"label": "list_item", "id": 20, "page_no": 27, "cluster": {"id": 20, "label": "list_item", "bbox": {"l": 136.80202, "t": 680.8577880859375, "r": 546.27057, "b": 702.7361530000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9651632308959961, "cells": [{"id": 45, "text": "11.A Kubernetes admin can change the maximum number of concurrent batch jobs that can ", "bbox": {"l": 136.80202, "t": 681.52334, "r": 546.27057, "b": 690.73634, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "be run.", "bbox": {"l": 151.20218, "t": 693.523148, "r": 182.2774, "b": 702.7361530000001, "coord_origin": "TOPLEFT"}}]}, "text": "11.A Kubernetes admin can change the maximum number of concurrent batch jobs that can be run."}, {"label": "list_item", "id": 21, "page_no": 27, "cluster": {"id": 21, "label": "list_item", "bbox": {"l": 136.71322631835938, "t": 709.8871459960938, "r": 531.22009, "b": 732.1051025390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9538568258285522, "cells": [{"id": 47, "text": "12.Get the deployment endpoint URL. For more information, see Getting the deployment ", "bbox": {"l": 136.80202, "t": 710.562714, "r": 531.22009, "b": 719.775719, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "endpoint URL.", "bbox": {"l": 151.20218, "t": 722.562523, "r": 215.05075000000002, "b": 731.775528, "coord_origin": "TOPLEFT"}}]}, "text": "12.Get the deployment endpoint URL. For more information, see Getting the deployment endpoint URL."}, {"label": "picture", "id": 22, "page_no": 27, "cluster": {"id": 22, "label": "picture", "bbox": {"l": 64.01190948486328, "t": 107.36324310302734, "r": 542.310546875, "b": 311.54437255859375, "coord_origin": "TOPLEFT"}, "confidence": 0.9792013168334961, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 27, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.25498962402344, "t": 70.68953704833984, "r": 537.35229, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.8348162174224854, "cells": [{"id": 2, "text": "Figure 21 provides a high-level diagram of a clearing and settlement use case for financial ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 537.35229, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "transactions that uses CP4D on IBM Z and IBM LinuxONE. ", "bbox": {"l": 136.80002, "t": 83.50847999999996, "r": 400.63745, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 21 provides a high-level diagram of a clearing and settlement use case for financial transactions that uses CP4D on IBM Z and IBM LinuxONE."}, {"label": "caption", "id": 3, "page_no": 27, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.17871856689453, "t": 314.66278076171875, "r": 459.9880999999999, "b": 324.0010986328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9384534955024719, "cells": [{"id": 4, "text": "Figure 21 Clearing and settlement use case for financial transactions by using Cloud Pak for Data ", "bbox": {"l": 64.800003, "t": 315.55798, "r": 459.9880999999999, "b": 323.88300000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 21 Clearing and settlement use case for financial transactions by using Cloud Pak for Data"}, {"label": "text", "id": 4, "page_no": 27, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.43458557128906, "t": 336.796630859375, "r": 353.37115, "b": 346.91217041015625, "coord_origin": "TOPLEFT"}, "confidence": 0.8770962953567505, "cells": [{"id": 5, "text": "Here are the steps of the high-level process flow:", "bbox": {"l": 136.8, "t": 337.54873999999995, "r": 353.37115, "b": 346.76172, "coord_origin": "TOPLEFT"}}]}, "text": "Here are the steps of the high-level process flow:"}, {"label": "list_item", "id": 5, "page_no": 27, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 136.8, "t": 354.0919494628906, "r": 524.74097, "b": 376.04498291015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9748183488845825, "cells": [{"id": 6, "text": "1.", "bbox": {"l": 136.8, "t": 354.52853, "r": 145.26041, "b": 363.74152, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Create a connection to a database (for example, an IBM Db2fi database) where the ", "bbox": {"l": 148.08052, "t": 354.52853, "r": 524.74097, "b": 363.74152, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "historical data will be used for ML model building.", "bbox": {"l": 151.20016, "t": 366.52835, "r": 369.07016, "b": 375.74132999999995, "coord_origin": "TOPLEFT"}}]}, "text": "1. Create a connection to a database (for example, an IBM Db2fi database) where the historical data will be used for ML model building."}, {"label": "list_item", "id": 6, "page_no": 27, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.05679321289062, "t": 382.5753173828125, "r": 542.98376, "b": 404.78073, "coord_origin": "TOPLEFT"}, "confidence": 0.9745410680770874, "cells": [{"id": 9, "text": "2.", "bbox": {"l": 136.80099, "t": 383.56793, "r": 145.20665, "b": 392.78091, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Read the data from the database and prepare the data for AI by using the Data Refinery ", "bbox": {"l": 148.00854, "t": 383.56793, "r": 542.98376, "b": 392.78091, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "tool in CP4D.", "bbox": {"l": 151.20116, "t": 395.56775, "r": 210.1524, "b": 404.78073, "coord_origin": "TOPLEFT"}}]}, "text": "2. Read the data from the database and prepare the data for AI by using the Data Refinery tool in CP4D."}, {"label": "list_item", "id": 7, "page_no": 27, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 136.27484130859375, "t": 411.98052978515625, "r": 545.74249, "b": 446.5281066894531, "coord_origin": "TOPLEFT"}, "confidence": 0.9805867671966553, "cells": [{"id": 12, "text": "3.", "bbox": {"l": 136.80099, "t": 412.54755, "r": 145.20639, "b": 421.76053, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "A Jupyter Notebook or JupyterLab IDE that is provided by the Watson Studio component ", "bbox": {"l": 148.00818, "t": 412.54755, "r": 545.74249, "b": 421.76053, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "in CP4D helps us build and train the AI model. The trained model can be saved into a ", "bbox": {"l": 151.20116, "t": 424.54736, "r": 531.24298, "b": 433.76035, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "WML repository.", "bbox": {"l": 151.20116, "t": 436.54717999999997, "r": 223.98885, "b": 445.76016, "coord_origin": "TOPLEFT"}}]}, "text": "3. A Jupyter Notebook or JupyterLab IDE that is provided by the Watson Studio component in CP4D helps us build and train the AI model. The trained model can be saved into a WML repository."}, {"label": "list_item", "id": 8, "page_no": 27, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 136.03822326660156, "t": 452.6906433105469, "r": 468.55477999999994, "b": 463.2380676269531, "coord_origin": "TOPLEFT"}, "confidence": 0.9558380842208862, "cells": [{"id": 16, "text": "4.", "bbox": {"l": 136.80099, "t": 453.52698000000004, "r": 145.2236, "b": 462.73996, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Deploy the saved model into a deployment space for batch deployment.", "bbox": {"l": 148.03114, "t": 453.52698000000004, "r": 468.55477999999994, "b": 462.73996, "coord_origin": "TOPLEFT"}}]}, "text": "4. Deploy the saved model into a deployment space for batch deployment."}, {"label": "list_item", "id": 9, "page_no": 27, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 136.39476013183594, "t": 470.06390380859375, "r": 417.28256, "b": 480.09649658203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9519129395484924, "cells": [{"id": 18, "text": "5.", "bbox": {"l": 136.80099, "t": 470.56656, "r": 145.23456, "b": 479.77954, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Create a batch deployment by using any of these interfaces:", "bbox": {"l": 148.04575, "t": 470.56656, "r": 417.28256, "b": 479.77954, "coord_origin": "TOPLEFT"}}]}, "text": "5. Create a batch deployment by using any of these interfaces:"}, {"label": "list_item", "id": 10, "page_no": 27, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 150.49728393554688, "t": 486.6347961425781, "r": 460.12939, "b": 496.88531494140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9560188055038452, "cells": [{"id": 20, "text": "a.", "bbox": {"l": 151.20116, "t": 487.54636, "r": 159.6295, "b": 496.75934, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Watson Studio user interface from an Analytics deployment space.", "bbox": {"l": 162.43896, "t": 487.54636, "r": 460.12939, "b": 496.75934, "coord_origin": "TOPLEFT"}}]}, "text": "a. Watson Studio user interface from an Analytics deployment space."}, {"label": "list_item", "id": 11, "page_no": 27, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 150.5271759033203, "t": 503.9242248535156, "r": 251.68962, "b": 514.2030639648438, "coord_origin": "TOPLEFT"}, "confidence": 0.9418551921844482, "cells": [{"id": 22, "text": "b.", "bbox": {"l": 151.20116, "t": 504.52615, "r": 159.81799, "b": 513.73914, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "WML Python client.", "bbox": {"l": 162.69028, "t": 504.52615, "r": 251.68962, "b": 513.73914, "coord_origin": "TOPLEFT"}}]}, "text": "b. WML Python client."}, {"label": "list_item", "id": 12, "page_no": 27, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 150.59584045410156, "t": 520.1580810546875, "r": 244.95566, "b": 530.77872, "coord_origin": "TOPLEFT"}, "confidence": 0.9270838499069214, "cells": [{"id": 24, "text": "c.", "bbox": {"l": 151.20116, "t": 521.56573, "r": 159.30391, "b": 530.77872, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "WML REST APIs.", "bbox": {"l": 162.19923, "t": 521.56573, "r": 244.95566, "b": 530.77872, "coord_origin": "TOPLEFT"}}]}, "text": "c. WML REST APIs."}, {"label": "list_item", "id": 13, "page_no": 27, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 136.3202667236328, "t": 537.8785400390625, "r": 418.50659, "b": 548.1995849609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9545198678970337, "cells": [{"id": 26, "text": "6.", "bbox": {"l": 136.80099, "t": 538.5455499999999, "r": 145.23759, "b": 547.75854, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "A hardware configuration can be chosen for the deployment.", "bbox": {"l": 148.04979, "t": 538.5455499999999, "r": 418.50659, "b": 547.75854, "coord_origin": "TOPLEFT"}}]}, "text": "6. A hardware configuration can be chosen for the deployment."}, {"label": "list_item", "id": 14, "page_no": 27, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 136.2103271484375, "t": 554.7404174804688, "r": 545.68579, "b": 577.0736083984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9779444336891174, "cells": [{"id": 28, "text": "7.", "bbox": {"l": 136.80099, "t": 555.52536, "r": 145.2048, "b": 564.7383600000001, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "A batch deployment processes input data from a file, data connection, or connected data ", "bbox": {"l": 148.00607, "t": 555.52536, "r": 545.68579, "b": 564.7383600000001, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "in a storage bucket, and writes the output to a selected destination.", "bbox": {"l": 151.20117, "t": 567.52516, "r": 447.42055999999997, "b": 576.73816, "coord_origin": "TOPLEFT"}}]}, "text": "7. A batch deployment processes input data from a file, data connection, or connected data in a storage bucket, and writes the output to a selected destination."}, {"label": "list_item", "id": 15, "page_no": 27, "cluster": {"id": 15, "label": "list_item", "bbox": {"l": 136.31875610351562, "t": 583.98193359375, "r": 510.0397, "b": 606.4796752929688, "coord_origin": "TOPLEFT"}, "confidence": 0.9764688014984131, "cells": [{"id": 31, "text": "8.", "bbox": {"l": 136.80101, "t": 584.56473, "r": 145.2097, "b": 593.77773, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "One way to run batch deployment to predict or score is to create and run a batch ", "bbox": {"l": 148.01257, "t": 584.56473, "r": 510.0397, "b": 593.77773, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "deployment job.", "bbox": {"l": 151.20117, "t": 596.56453, "r": 221.75086999999996, "b": 605.7775300000001, "coord_origin": "TOPLEFT"}}]}, "text": "8. One way to run batch deployment to predict or score is to create and run a batch deployment job."}, {"label": "list_item", "id": 16, "page_no": 27, "cluster": {"id": 16, "label": "list_item", "bbox": {"l": 136.13897705078125, "t": 612.574951171875, "r": 270.12857, "b": 623.031005859375, "coord_origin": "TOPLEFT"}, "confidence": 0.946601152420044, "cells": [{"id": 34, "text": "9.", "bbox": {"l": 136.80101, "t": 613.54434, "r": 145.34923, "b": 622.75734, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Provide an input data type:", "bbox": {"l": 148.19862, "t": 613.54434, "r": 270.12857, "b": 622.75734, "coord_origin": "TOPLEFT"}}]}, "text": "9. Provide an input data type:"}, {"label": "list_item", "id": 17, "page_no": 27, "cluster": {"id": 17, "label": "list_item", "bbox": {"l": 150.43360900878906, "t": 630.0905151367188, "r": 374.55621, "b": 640.5849609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9528450965881348, "cells": [{"id": 36, "text": "a.", "bbox": {"l": 151.20117, "t": 630.52415, "r": 159.66412, "b": 639.73715, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Inline data for entering a JSON format payload.", "bbox": {"l": 162.48511, "t": 630.52415, "r": 374.55621, "b": 639.73715, "coord_origin": "TOPLEFT"}}]}, "text": "a. Inline data for entering a JSON format payload."}, {"label": "list_item", "id": 18, "page_no": 27, "cluster": {"id": 18, "label": "list_item", "bbox": {"l": 150.56649780273438, "t": 646.7203369140625, "r": 492.32922, "b": 656.7977294921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9529765248298645, "cells": [{"id": 38, "text": "b.", "bbox": {"l": 151.20117, "t": 647.56372, "r": 160.18944, "b": 656.7767200000001, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Select ", "bbox": {"l": 163.18553, "t": 647.56372, "r": 196.13173, "b": 656.7767200000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Data asset", "bbox": {"l": 196.14069, "t": 647.56372, "r": 246.17972, "b": 656.7767200000001, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": ", click ", "bbox": {"l": 246.12096, "t": 647.56372, "r": 273.91135, "b": 656.7767200000001, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Select data source", "bbox": {"l": 273.9014, "t": 647.56372, "r": 362.20071, "b": 656.7767200000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": ", and then specify your asset.", "bbox": {"l": 362.22171, "t": 647.56372, "r": 492.32922, "b": 656.7767200000001, "coord_origin": "TOPLEFT"}}]}, "text": "b. Select Data asset , click Select data source , and then specify your asset."}, {"label": "list_item", "id": 19, "page_no": 27, "cluster": {"id": 19, "label": "list_item", "bbox": {"l": 136.80202, "t": 664.13916015625, "r": 471.90997, "b": 674.3135986328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9405826330184937, "cells": [{"id": 44, "text": "10.The output data type can be a new output file or a connected data asset.", "bbox": {"l": 136.80202, "t": 664.54353, "r": 471.90997, "b": 673.75653, "coord_origin": "TOPLEFT"}}]}, "text": "10.The output data type can be a new output file or a connected data asset."}, {"label": "list_item", "id": 20, "page_no": 27, "cluster": {"id": 20, "label": "list_item", "bbox": {"l": 136.80202, "t": 680.8577880859375, "r": 546.27057, "b": 702.7361530000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9651632308959961, "cells": [{"id": 45, "text": "11.A Kubernetes admin can change the maximum number of concurrent batch jobs that can ", "bbox": {"l": 136.80202, "t": 681.52334, "r": 546.27057, "b": 690.73634, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "be run.", "bbox": {"l": 151.20218, "t": 693.523148, "r": 182.2774, "b": 702.7361530000001, "coord_origin": "TOPLEFT"}}]}, "text": "11.A Kubernetes admin can change the maximum number of concurrent batch jobs that can be run."}, {"label": "list_item", "id": 21, "page_no": 27, "cluster": {"id": 21, "label": "list_item", "bbox": {"l": 136.71322631835938, "t": 709.8871459960938, "r": 531.22009, "b": 732.1051025390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9538568258285522, "cells": [{"id": 47, "text": "12.Get the deployment endpoint URL. For more information, see Getting the deployment ", "bbox": {"l": 136.80202, "t": 710.562714, "r": 531.22009, "b": 719.775719, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "endpoint URL.", "bbox": {"l": 151.20218, "t": 722.562523, "r": 215.05075000000002, "b": 731.775528, "coord_origin": "TOPLEFT"}}]}, "text": "12.Get the deployment endpoint URL. For more information, see Getting the deployment endpoint URL."}, {"label": "picture", "id": 22, "page_no": 27, "cluster": {"id": 22, "label": "picture", "bbox": {"l": 64.01190948486328, "t": 107.36324310302734, "r": 542.310546875, "b": 311.54437255859375, "coord_origin": "TOPLEFT"}, "confidence": 0.9792013168334961, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 27, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.89773941040039, "t": 754.3994140625, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9172815680503845, "cells": [{"id": 0, "text": "26 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "26"}, {"label": "page_footer", "id": 1, "page_no": 27, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.21942138671875, "t": 754.7265625, "r": 267.0744, "b": 764.1185302734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9594259858131409, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}]}}, {"page_no": 28, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "27", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Summary", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 123.98573, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "With this use case, we attempted to demonstrate how to predict, in real time, whether the ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 532.96588, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "transaction that is being processed might be a fraudulent transaction or not. By using the ", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 531.263, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "method, you have the following advantages:", "bbox": {"l": 136.8, "t": 121.48834000000011, "r": 331.94427, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 138.67731000000003, "r": 141.78, "b": 147.45209, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "No Impact to SLAs and the batch process window.", "bbox": {"l": 151.20016, "t": 138.52788999999996, "r": 374.51035, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "GLYPH", "bbox": {"l": 136.8, "t": 155.6571, "r": 141.78, "b": 164.43187999999998, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Proactively stop losses, and lower operational, regulatory, and compliance costs.", "bbox": {"l": 151.20016, "t": 155.50769000000003, "r": 508.50623, "b": 164.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 172.63689999999997, "r": 141.78, "b": 181.41168000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "The solution is using a DL framework like TensorFlow for high-performing, low latency ", "bbox": {"l": 151.20016, "t": 172.48748999999998, "r": 533.53381, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "scoring.", "bbox": {"l": 151.20016, "t": 184.4873, "r": 186.20558, "b": 193.70032000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Use case 4: Remaining Useful Life of an aircraft engine", "bbox": {"l": 64.800003, "t": 222.18073000000004, "r": 482.53705, "b": 236.94372999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "In this use case, we describe how an airline can deploy an AI model for inferencing by using ", "bbox": {"l": 136.8, "t": 254.50867000000005, "r": 545.72473, "b": 263.72168, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "IBMfi zSystems. ", "bbox": {"l": 136.8, "t": 266.50847999999996, "r": 213.51291, "b": 275.7215, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Remaining Useful Life (RUL) is the remaining time or cycles that an aircraft engine is likely to ", "bbox": {"l": 136.8, "t": 288.52808, "r": 547.26855, "b": 297.74106, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "operate without any failure. In this case, it is the equivalent of the number of flights remaining ", "bbox": {"l": 136.79999, "t": 300.52789, "r": 547.27057, "b": 309.74088, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "for the engine after the last flight. By estimating RUL, the operator can decide on the next ", "bbox": {"l": 136.79999, "t": 312.52771, "r": 533.55945, "b": 321.74069, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "maintenance schedule and avoid unplanned downtime.", "bbox": {"l": 136.79999, "t": 324.52753000000007, "r": 380.77405, "b": 333.74051, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Figure 22 provides an overview of the inferencing architecture for the RUL of an aircraft ", "bbox": {"l": 136.79999, "t": 346.48734, "r": 525.16229, "b": 355.70032, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "engine when using IBM Z. ", "bbox": {"l": 136.79999, "t": 358.48714999999993, "r": 255.13271, "b": 367.70013, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Figure 22 Inferencing architecture on IBM Z", "bbox": {"l": 64.800003, "t": 622.2179, "r": 243.1971, "b": 630.54291, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Because we are looking into data-driven model development, the data set of our target is the ", "bbox": {"l": 136.8, "t": 644.14873, "r": 547.25574, "b": 653.36172, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "run-to-failure data of the engine. We are looking into a supervised learning problem, and we ", "bbox": {"l": 136.8, "t": 656.1485299999999, "r": 544.6261, "b": 665.36153, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "use regression techniques to learn from the data. DL techniques such as Long Short-Term ", "bbox": {"l": 136.8, "t": 668.14833, "r": 539.12225, "b": 677.36134, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Memory (LSTM) or Gated Recurrent Units (GRU) are our choice because we are looking into ", "bbox": {"l": 136.8, "t": 680.14814, "r": 547.20392, "b": 689.36115, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "a time series data set. TensorFlow or PyTorch frameworks are leveraged to create models. AI ", "bbox": {"l": 136.8, "t": 692.1479489999999, "r": 547.14288, "b": 701.360954, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "governance monitors the data and model drift to maintain the model quality throughout the ", "bbox": {"l": 136.8, "t": 704.147758, "r": 537.91998, "b": 713.360764, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "model\u2019s life. ", "bbox": {"l": 136.8, "t": 716.147568, "r": 192.27719, "b": 725.360573, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 535.5003051757812, "t": 754.198486328125, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9135285019874573, "cells": [{"id": 0, "text": "27", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "section_header", "bbox": {"l": 64.4560546875, "t": 70.49922180175781, "r": 124.18352508544922, "b": 83.58580017089844, "coord_origin": "TOPLEFT"}, "confidence": 0.9539816975593567, "cells": [{"id": 1, "text": "Summary", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 123.98573, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.6417999267578, "t": 96.69087219238281, "r": 532.96588, "b": 131.15280151367188, "coord_origin": "TOPLEFT"}, "confidence": 0.9826104044914246, "cells": [{"id": 2, "text": "With this use case, we attempted to demonstrate how to predict, in real time, whether the ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 532.96588, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "transaction that is being processed might be a fraudulent transaction or not. By using the ", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 531.263, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "method, you have the following advantages:", "bbox": {"l": 136.8, "t": 121.48834000000011, "r": 331.94427, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "list_item", "bbox": {"l": 135.6079559326172, "t": 137.87742614746094, "r": 374.51035, "b": 148.40980529785156, "coord_origin": "TOPLEFT"}, "confidence": 0.9520530700683594, "cells": [{"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 138.67731000000003, "r": 141.78, "b": 147.45209, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "No Impact to SLAs and the batch process window.", "bbox": {"l": 151.20016, "t": 138.52788999999996, "r": 374.51035, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 135.4309844970703, "t": 154.66566467285156, "r": 508.50623, "b": 165.0898895263672, "coord_origin": "TOPLEFT"}, "confidence": 0.9581583142280579, "cells": [{"id": 7, "text": "GLYPH", "bbox": {"l": 136.8, "t": 155.6571, "r": 141.78, "b": 164.43187999999998, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Proactively stop losses, and lower operational, regulatory, and compliance costs.", "bbox": {"l": 151.20016, "t": 155.50769000000003, "r": 508.50623, "b": 164.72069999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 135.6011199951172, "t": 171.30601501464844, "r": 533.53381, "b": 193.70032000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9762634634971619, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 172.63689999999997, "r": 141.78, "b": 181.41168000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "The solution is using a DL framework like TensorFlow for high-performing, low latency ", "bbox": {"l": 151.20016, "t": 172.48748999999998, "r": 533.53381, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "scoring.", "bbox": {"l": 151.20016, "t": 184.4873, "r": 186.20558, "b": 193.70032000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "section_header", "bbox": {"l": 64.69216918945312, "t": 220.6259307861328, "r": 482.53705, "b": 237.16929626464844, "coord_origin": "TOPLEFT"}, "confidence": 0.9682862162590027, "cells": [{"id": 12, "text": "Use case 4: Remaining Useful Life of an aircraft engine", "bbox": {"l": 64.800003, "t": 222.18073000000004, "r": 482.53705, "b": 236.94372999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 136.27346801757812, "t": 253.316650390625, "r": 545.72473, "b": 275.7215, "coord_origin": "TOPLEFT"}, "confidence": 0.9791228771209717, "cells": [{"id": 13, "text": "In this use case, we describe how an airline can deploy an AI model for inferencing by using ", "bbox": {"l": 136.8, "t": 254.50867000000005, "r": 545.72473, "b": 263.72168, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "IBMfi zSystems. ", "bbox": {"l": 136.8, "t": 266.50847999999996, "r": 213.51291, "b": 275.7215, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 136.0217742919922, "t": 287.9417419433594, "r": 547.27057, "b": 333.9791259765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9871094226837158, "cells": [{"id": 15, "text": "Remaining Useful Life (RUL) is the remaining time or cycles that an aircraft engine is likely to ", "bbox": {"l": 136.8, "t": 288.52808, "r": 547.26855, "b": 297.74106, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "operate without any failure. In this case, it is the equivalent of the number of flights remaining ", "bbox": {"l": 136.79999, "t": 300.52789, "r": 547.27057, "b": 309.74088, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "for the engine after the last flight. By estimating RUL, the operator can decide on the next ", "bbox": {"l": 136.79999, "t": 312.52771, "r": 533.55945, "b": 321.74069, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "maintenance schedule and avoid unplanned downtime.", "bbox": {"l": 136.79999, "t": 324.52753000000007, "r": 380.77405, "b": 333.74051, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 136.3080596923828, "t": 345.2879943847656, "r": 525.16229, "b": 367.7480773925781, "coord_origin": "TOPLEFT"}, "confidence": 0.9762709140777588, "cells": [{"id": 19, "text": "Figure 22 provides an overview of the inferencing architecture for the RUL of an aircraft ", "bbox": {"l": 136.79999, "t": 346.48734, "r": 525.16229, "b": 355.70032, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "engine when using IBM Z. ", "bbox": {"l": 136.79999, "t": 358.48714999999993, "r": 255.13271, "b": 367.70013, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "caption", "bbox": {"l": 64.39527893066406, "t": 621.308349609375, "r": 244.8438262939453, "b": 630.6195678710938, "coord_origin": "TOPLEFT"}, "confidence": 0.9493957161903381, "cells": [{"id": 21, "text": "Figure 22 Inferencing architecture on IBM Z", "bbox": {"l": 64.800003, "t": 622.2179, "r": 243.1971, "b": 630.54291, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 136.10833740234375, "t": 643.45068359375, "r": 547.25574, "b": 725.360573, "coord_origin": "TOPLEFT"}, "confidence": 0.9856446981430054, "cells": [{"id": 22, "text": "Because we are looking into data-driven model development, the data set of our target is the ", "bbox": {"l": 136.8, "t": 644.14873, "r": 547.25574, "b": 653.36172, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "run-to-failure data of the engine. We are looking into a supervised learning problem, and we ", "bbox": {"l": 136.8, "t": 656.1485299999999, "r": 544.6261, "b": 665.36153, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "use regression techniques to learn from the data. DL techniques such as Long Short-Term ", "bbox": {"l": 136.8, "t": 668.14833, "r": 539.12225, "b": 677.36134, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Memory (LSTM) or Gated Recurrent Units (GRU) are our choice because we are looking into ", "bbox": {"l": 136.8, "t": 680.14814, "r": 547.20392, "b": 689.36115, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "a time series data set. TensorFlow or PyTorch frameworks are leveraged to create models. AI ", "bbox": {"l": 136.8, "t": 692.1479489999999, "r": 547.14288, "b": 701.360954, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "governance monitors the data and model drift to maintain the model quality throughout the ", "bbox": {"l": 136.8, "t": 704.147758, "r": 537.91998, "b": 713.360764, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "model\u2019s life. ", "bbox": {"l": 136.8, "t": 716.147568, "r": 192.27719, "b": 725.360573, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "picture", "bbox": {"l": 63.826560974121094, "t": 381.7112731933594, "r": 539.9069213867188, "b": 618.51806640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9848758578300476, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 28, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 535.5003051757812, "t": 754.198486328125, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9135285019874573, "cells": [{"id": 0, "text": "27", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "27"}, {"label": "section_header", "id": 1, "page_no": 28, "cluster": {"id": 1, "label": "section_header", "bbox": {"l": 64.4560546875, "t": 70.49922180175781, "r": 124.18352508544922, "b": 83.58580017089844, "coord_origin": "TOPLEFT"}, "confidence": 0.9539816975593567, "cells": [{"id": 1, "text": "Summary", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 123.98573, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Summary"}, {"label": "text", "id": 2, "page_no": 28, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.6417999267578, "t": 96.69087219238281, "r": 532.96588, "b": 131.15280151367188, "coord_origin": "TOPLEFT"}, "confidence": 0.9826104044914246, "cells": [{"id": 2, "text": "With this use case, we attempted to demonstrate how to predict, in real time, whether the ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 532.96588, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "transaction that is being processed might be a fraudulent transaction or not. By using the ", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 531.263, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "method, you have the following advantages:", "bbox": {"l": 136.8, "t": 121.48834000000011, "r": 331.94427, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}]}, "text": "With this use case, we attempted to demonstrate how to predict, in real time, whether the transaction that is being processed might be a fraudulent transaction or not. By using the method, you have the following advantages:"}, {"label": "list_item", "id": 3, "page_no": 28, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 135.6079559326172, "t": 137.87742614746094, "r": 374.51035, "b": 148.40980529785156, "coord_origin": "TOPLEFT"}, "confidence": 0.9520530700683594, "cells": [{"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 138.67731000000003, "r": 141.78, "b": 147.45209, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "No Impact to SLAs and the batch process window.", "bbox": {"l": 151.20016, "t": 138.52788999999996, "r": 374.51035, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH No Impact to SLAs and the batch process window."}, {"label": "list_item", "id": 4, "page_no": 28, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.4309844970703, "t": 154.66566467285156, "r": 508.50623, "b": 165.0898895263672, "coord_origin": "TOPLEFT"}, "confidence": 0.9581583142280579, "cells": [{"id": 7, "text": "GLYPH", "bbox": {"l": 136.8, "t": 155.6571, "r": 141.78, "b": 164.43187999999998, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Proactively stop losses, and lower operational, regulatory, and compliance costs.", "bbox": {"l": 151.20016, "t": 155.50769000000003, "r": 508.50623, "b": 164.72069999999997, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Proactively stop losses, and lower operational, regulatory, and compliance costs."}, {"label": "list_item", "id": 5, "page_no": 28, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.6011199951172, "t": 171.30601501464844, "r": 533.53381, "b": 193.70032000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9762634634971619, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 172.63689999999997, "r": 141.78, "b": 181.41168000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "The solution is using a DL framework like TensorFlow for high-performing, low latency ", "bbox": {"l": 151.20016, "t": 172.48748999999998, "r": 533.53381, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "scoring.", "bbox": {"l": 151.20016, "t": 184.4873, "r": 186.20558, "b": 193.70032000000003, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The solution is using a DL framework like TensorFlow for high-performing, low latency scoring."}, {"label": "section_header", "id": 6, "page_no": 28, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 64.69216918945312, "t": 220.6259307861328, "r": 482.53705, "b": 237.16929626464844, "coord_origin": "TOPLEFT"}, "confidence": 0.9682862162590027, "cells": [{"id": 12, "text": "Use case 4: Remaining Useful Life of an aircraft engine", "bbox": {"l": 64.800003, "t": 222.18073000000004, "r": 482.53705, "b": 236.94372999999996, "coord_origin": "TOPLEFT"}}]}, "text": "Use case 4: Remaining Useful Life of an aircraft engine"}, {"label": "text", "id": 7, "page_no": 28, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.27346801757812, "t": 253.316650390625, "r": 545.72473, "b": 275.7215, "coord_origin": "TOPLEFT"}, "confidence": 0.9791228771209717, "cells": [{"id": 13, "text": "In this use case, we describe how an airline can deploy an AI model for inferencing by using ", "bbox": {"l": 136.8, "t": 254.50867000000005, "r": 545.72473, "b": 263.72168, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "IBMfi zSystems. ", "bbox": {"l": 136.8, "t": 266.50847999999996, "r": 213.51291, "b": 275.7215, "coord_origin": "TOPLEFT"}}]}, "text": "In this use case, we describe how an airline can deploy an AI model for inferencing by using IBMfi zSystems."}, {"label": "text", "id": 8, "page_no": 28, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.0217742919922, "t": 287.9417419433594, "r": 547.27057, "b": 333.9791259765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9871094226837158, "cells": [{"id": 15, "text": "Remaining Useful Life (RUL) is the remaining time or cycles that an aircraft engine is likely to ", "bbox": {"l": 136.8, "t": 288.52808, "r": 547.26855, "b": 297.74106, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "operate without any failure. In this case, it is the equivalent of the number of flights remaining ", "bbox": {"l": 136.79999, "t": 300.52789, "r": 547.27057, "b": 309.74088, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "for the engine after the last flight. By estimating RUL, the operator can decide on the next ", "bbox": {"l": 136.79999, "t": 312.52771, "r": 533.55945, "b": 321.74069, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "maintenance schedule and avoid unplanned downtime.", "bbox": {"l": 136.79999, "t": 324.52753000000007, "r": 380.77405, "b": 333.74051, "coord_origin": "TOPLEFT"}}]}, "text": "Remaining Useful Life (RUL) is the remaining time or cycles that an aircraft engine is likely to operate without any failure. In this case, it is the equivalent of the number of flights remaining for the engine after the last flight. By estimating RUL, the operator can decide on the next maintenance schedule and avoid unplanned downtime."}, {"label": "text", "id": 9, "page_no": 28, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.3080596923828, "t": 345.2879943847656, "r": 525.16229, "b": 367.7480773925781, "coord_origin": "TOPLEFT"}, "confidence": 0.9762709140777588, "cells": [{"id": 19, "text": "Figure 22 provides an overview of the inferencing architecture for the RUL of an aircraft ", "bbox": {"l": 136.79999, "t": 346.48734, "r": 525.16229, "b": 355.70032, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "engine when using IBM Z. ", "bbox": {"l": 136.79999, "t": 358.48714999999993, "r": 255.13271, "b": 367.70013, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 22 provides an overview of the inferencing architecture for the RUL of an aircraft engine when using IBM Z."}, {"label": "caption", "id": 10, "page_no": 28, "cluster": {"id": 10, "label": "caption", "bbox": {"l": 64.39527893066406, "t": 621.308349609375, "r": 244.8438262939453, "b": 630.6195678710938, "coord_origin": "TOPLEFT"}, "confidence": 0.9493957161903381, "cells": [{"id": 21, "text": "Figure 22 Inferencing architecture on IBM Z", "bbox": {"l": 64.800003, "t": 622.2179, "r": 243.1971, "b": 630.54291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 22 Inferencing architecture on IBM Z"}, {"label": "text", "id": 11, "page_no": 28, "cluster": {"id": 11, "label": "text", "bbox": {"l": 136.10833740234375, "t": 643.45068359375, "r": 547.25574, "b": 725.360573, "coord_origin": "TOPLEFT"}, "confidence": 0.9856446981430054, "cells": [{"id": 22, "text": "Because we are looking into data-driven model development, the data set of our target is the ", "bbox": {"l": 136.8, "t": 644.14873, "r": 547.25574, "b": 653.36172, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "run-to-failure data of the engine. We are looking into a supervised learning problem, and we ", "bbox": {"l": 136.8, "t": 656.1485299999999, "r": 544.6261, "b": 665.36153, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "use regression techniques to learn from the data. DL techniques such as Long Short-Term ", "bbox": {"l": 136.8, "t": 668.14833, "r": 539.12225, "b": 677.36134, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Memory (LSTM) or Gated Recurrent Units (GRU) are our choice because we are looking into ", "bbox": {"l": 136.8, "t": 680.14814, "r": 547.20392, "b": 689.36115, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "a time series data set. TensorFlow or PyTorch frameworks are leveraged to create models. AI ", "bbox": {"l": 136.8, "t": 692.1479489999999, "r": 547.14288, "b": 701.360954, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "governance monitors the data and model drift to maintain the model quality throughout the ", "bbox": {"l": 136.8, "t": 704.147758, "r": 537.91998, "b": 713.360764, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "model\u2019s life. ", "bbox": {"l": 136.8, "t": 716.147568, "r": 192.27719, "b": 725.360573, "coord_origin": "TOPLEFT"}}]}, "text": "Because we are looking into data-driven model development, the data set of our target is the run-to-failure data of the engine. We are looking into a supervised learning problem, and we use regression techniques to learn from the data. DL techniques such as Long Short-Term Memory (LSTM) or Gated Recurrent Units (GRU) are our choice because we are looking into a time series data set. TensorFlow or PyTorch frameworks are leveraged to create models. AI governance monitors the data and model drift to maintain the model quality throughout the model\u2019s life."}, {"label": "picture", "id": 12, "page_no": 28, "cluster": {"id": 12, "label": "picture", "bbox": {"l": 63.826560974121094, "t": 381.7112731933594, "r": 539.9069213867188, "b": 618.51806640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9848758578300476, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "section_header", "id": 1, "page_no": 28, "cluster": {"id": 1, "label": "section_header", "bbox": {"l": 64.4560546875, "t": 70.49922180175781, "r": 124.18352508544922, "b": 83.58580017089844, "coord_origin": "TOPLEFT"}, "confidence": 0.9539816975593567, "cells": [{"id": 1, "text": "Summary", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 123.98573, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Summary"}, {"label": "text", "id": 2, "page_no": 28, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.6417999267578, "t": 96.69087219238281, "r": 532.96588, "b": 131.15280151367188, "coord_origin": "TOPLEFT"}, "confidence": 0.9826104044914246, "cells": [{"id": 2, "text": "With this use case, we attempted to demonstrate how to predict, in real time, whether the ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 532.96588, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "transaction that is being processed might be a fraudulent transaction or not. By using the ", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 531.263, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "method, you have the following advantages:", "bbox": {"l": 136.8, "t": 121.48834000000011, "r": 331.94427, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}]}, "text": "With this use case, we attempted to demonstrate how to predict, in real time, whether the transaction that is being processed might be a fraudulent transaction or not. By using the method, you have the following advantages:"}, {"label": "list_item", "id": 3, "page_no": 28, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 135.6079559326172, "t": 137.87742614746094, "r": 374.51035, "b": 148.40980529785156, "coord_origin": "TOPLEFT"}, "confidence": 0.9520530700683594, "cells": [{"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 138.67731000000003, "r": 141.78, "b": 147.45209, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "No Impact to SLAs and the batch process window.", "bbox": {"l": 151.20016, "t": 138.52788999999996, "r": 374.51035, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH No Impact to SLAs and the batch process window."}, {"label": "list_item", "id": 4, "page_no": 28, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.4309844970703, "t": 154.66566467285156, "r": 508.50623, "b": 165.0898895263672, "coord_origin": "TOPLEFT"}, "confidence": 0.9581583142280579, "cells": [{"id": 7, "text": "GLYPH", "bbox": {"l": 136.8, "t": 155.6571, "r": 141.78, "b": 164.43187999999998, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Proactively stop losses, and lower operational, regulatory, and compliance costs.", "bbox": {"l": 151.20016, "t": 155.50769000000003, "r": 508.50623, "b": 164.72069999999997, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Proactively stop losses, and lower operational, regulatory, and compliance costs."}, {"label": "list_item", "id": 5, "page_no": 28, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.6011199951172, "t": 171.30601501464844, "r": 533.53381, "b": 193.70032000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9762634634971619, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 172.63689999999997, "r": 141.78, "b": 181.41168000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "The solution is using a DL framework like TensorFlow for high-performing, low latency ", "bbox": {"l": 151.20016, "t": 172.48748999999998, "r": 533.53381, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "scoring.", "bbox": {"l": 151.20016, "t": 184.4873, "r": 186.20558, "b": 193.70032000000003, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The solution is using a DL framework like TensorFlow for high-performing, low latency scoring."}, {"label": "section_header", "id": 6, "page_no": 28, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 64.69216918945312, "t": 220.6259307861328, "r": 482.53705, "b": 237.16929626464844, "coord_origin": "TOPLEFT"}, "confidence": 0.9682862162590027, "cells": [{"id": 12, "text": "Use case 4: Remaining Useful Life of an aircraft engine", "bbox": {"l": 64.800003, "t": 222.18073000000004, "r": 482.53705, "b": 236.94372999999996, "coord_origin": "TOPLEFT"}}]}, "text": "Use case 4: Remaining Useful Life of an aircraft engine"}, {"label": "text", "id": 7, "page_no": 28, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.27346801757812, "t": 253.316650390625, "r": 545.72473, "b": 275.7215, "coord_origin": "TOPLEFT"}, "confidence": 0.9791228771209717, "cells": [{"id": 13, "text": "In this use case, we describe how an airline can deploy an AI model for inferencing by using ", "bbox": {"l": 136.8, "t": 254.50867000000005, "r": 545.72473, "b": 263.72168, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "IBMfi zSystems. ", "bbox": {"l": 136.8, "t": 266.50847999999996, "r": 213.51291, "b": 275.7215, "coord_origin": "TOPLEFT"}}]}, "text": "In this use case, we describe how an airline can deploy an AI model for inferencing by using IBMfi zSystems."}, {"label": "text", "id": 8, "page_no": 28, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.0217742919922, "t": 287.9417419433594, "r": 547.27057, "b": 333.9791259765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9871094226837158, "cells": [{"id": 15, "text": "Remaining Useful Life (RUL) is the remaining time or cycles that an aircraft engine is likely to ", "bbox": {"l": 136.8, "t": 288.52808, "r": 547.26855, "b": 297.74106, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "operate without any failure. In this case, it is the equivalent of the number of flights remaining ", "bbox": {"l": 136.79999, "t": 300.52789, "r": 547.27057, "b": 309.74088, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "for the engine after the last flight. By estimating RUL, the operator can decide on the next ", "bbox": {"l": 136.79999, "t": 312.52771, "r": 533.55945, "b": 321.74069, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "maintenance schedule and avoid unplanned downtime.", "bbox": {"l": 136.79999, "t": 324.52753000000007, "r": 380.77405, "b": 333.74051, "coord_origin": "TOPLEFT"}}]}, "text": "Remaining Useful Life (RUL) is the remaining time or cycles that an aircraft engine is likely to operate without any failure. In this case, it is the equivalent of the number of flights remaining for the engine after the last flight. By estimating RUL, the operator can decide on the next maintenance schedule and avoid unplanned downtime."}, {"label": "text", "id": 9, "page_no": 28, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.3080596923828, "t": 345.2879943847656, "r": 525.16229, "b": 367.7480773925781, "coord_origin": "TOPLEFT"}, "confidence": 0.9762709140777588, "cells": [{"id": 19, "text": "Figure 22 provides an overview of the inferencing architecture for the RUL of an aircraft ", "bbox": {"l": 136.79999, "t": 346.48734, "r": 525.16229, "b": 355.70032, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "engine when using IBM Z. ", "bbox": {"l": 136.79999, "t": 358.48714999999993, "r": 255.13271, "b": 367.70013, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 22 provides an overview of the inferencing architecture for the RUL of an aircraft engine when using IBM Z."}, {"label": "caption", "id": 10, "page_no": 28, "cluster": {"id": 10, "label": "caption", "bbox": {"l": 64.39527893066406, "t": 621.308349609375, "r": 244.8438262939453, "b": 630.6195678710938, "coord_origin": "TOPLEFT"}, "confidence": 0.9493957161903381, "cells": [{"id": 21, "text": "Figure 22 Inferencing architecture on IBM Z", "bbox": {"l": 64.800003, "t": 622.2179, "r": 243.1971, "b": 630.54291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 22 Inferencing architecture on IBM Z"}, {"label": "text", "id": 11, "page_no": 28, "cluster": {"id": 11, "label": "text", "bbox": {"l": 136.10833740234375, "t": 643.45068359375, "r": 547.25574, "b": 725.360573, "coord_origin": "TOPLEFT"}, "confidence": 0.9856446981430054, "cells": [{"id": 22, "text": "Because we are looking into data-driven model development, the data set of our target is the ", "bbox": {"l": 136.8, "t": 644.14873, "r": 547.25574, "b": 653.36172, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "run-to-failure data of the engine. We are looking into a supervised learning problem, and we ", "bbox": {"l": 136.8, "t": 656.1485299999999, "r": 544.6261, "b": 665.36153, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "use regression techniques to learn from the data. DL techniques such as Long Short-Term ", "bbox": {"l": 136.8, "t": 668.14833, "r": 539.12225, "b": 677.36134, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Memory (LSTM) or Gated Recurrent Units (GRU) are our choice because we are looking into ", "bbox": {"l": 136.8, "t": 680.14814, "r": 547.20392, "b": 689.36115, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "a time series data set. TensorFlow or PyTorch frameworks are leveraged to create models. AI ", "bbox": {"l": 136.8, "t": 692.1479489999999, "r": 547.14288, "b": 701.360954, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "governance monitors the data and model drift to maintain the model quality throughout the ", "bbox": {"l": 136.8, "t": 704.147758, "r": 537.91998, "b": 713.360764, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "model\u2019s life. ", "bbox": {"l": 136.8, "t": 716.147568, "r": 192.27719, "b": 725.360573, "coord_origin": "TOPLEFT"}}]}, "text": "Because we are looking into data-driven model development, the data set of our target is the run-to-failure data of the engine. We are looking into a supervised learning problem, and we use regression techniques to learn from the data. DL techniques such as Long Short-Term Memory (LSTM) or Gated Recurrent Units (GRU) are our choice because we are looking into a time series data set. TensorFlow or PyTorch frameworks are leveraged to create models. AI governance monitors the data and model drift to maintain the model quality throughout the model\u2019s life."}, {"label": "picture", "id": 12, "page_no": 28, "cluster": {"id": 12, "label": "picture", "bbox": {"l": 63.826560974121094, "t": 381.7112731933594, "r": 539.9069213867188, "b": 618.51806640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9848758578300476, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 28, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 535.5003051757812, "t": 754.198486328125, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9135285019874573, "cells": [{"id": 0, "text": "27", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "27"}]}}, {"page_no": 29, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "28 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Open-source data from NASA was used to build the AI model, which then was deployed on ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 542.39313, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "CP4D. CP4D enables the data-scientist\u2019s journey from modeling to deployment in a seamless ", "bbox": {"l": 136.80002, "t": 83.50847999999996, "r": 547.27655, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "process. Data engineers leverage Db2 to host the data set, which includes the training, ", "bbox": {"l": 136.80003, "t": 95.50829999999996, "r": 523.61969, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "testing, and validation of a data set. Since data is hosted on Db2, you can expect low latency ", "bbox": {"l": 136.80003, "t": 107.50811999999996, "r": 547.28241, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "while retrieving the data and serve data security needs because Db2 is hosted on the ", "bbox": {"l": 136.80003, "t": 119.50792999999999, "r": 516.43262, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "IBM Z platform. Data is fetched by the data refinery to do the necessary pre-processing and ", "bbox": {"l": 136.80003, "t": 131.50775, "r": 544.06757, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "data imputations. You can use the programming languages Golang or C++ for real-time ", "bbox": {"l": 136.80003, "t": 143.50757, "r": 525.77576, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "predictions, depending on customer needs. For more information about this topic, see \u201cUse ", "bbox": {"l": 136.80003, "t": 155.50739, "r": 541.80939, "b": 164.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "case 3: Clearing and settlement\u201d on page 25.", "bbox": {"l": 136.80003, "t": 167.5072, "r": 336.3446, "b": 176.72020999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Model building is done on Watson Studio, leveraging the high-performance computing ", "bbox": {"l": 136.80003, "t": 189.52679, "r": 519.02582, "b": 198.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "hardware on IBM Z. You can train the model anywhere (on your own hardware or the cloud) ", "bbox": {"l": 136.80003, "t": 201.52661, "r": 545.17706, "b": 210.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "and bring the model directly into CP4D, which provides data scientists with the flexibility of ", "bbox": {"l": 136.80003, "t": 213.52643, "r": 537.34039, "b": 222.73943999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "implementation choices. ", "bbox": {"l": 136.80005, "t": 225.52625, "r": 246.82417, "b": 234.73925999999994, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "We used LSTM to build the AI model and used the training data. The model was continuously ", "bbox": {"l": 136.80005, "t": 247.48602000000005, "r": 547.21289, "b": 256.69903999999997, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "evaluated to model convergence. The final model is tested with the test data, which is never ", "bbox": {"l": 136.80005, "t": 259.48584000000005, "r": 545.17395, "b": 268.69885, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "exposed at the time of training to make sure that the model works. ", "bbox": {"l": 136.80005, "t": 271.48566000000005, "r": 431.79333, "b": 280.69867, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "This model is deployed on WML on CP4D and runs on IBM Z. If required, the trained model ", "bbox": {"l": 136.80005, "t": 293.50525, "r": 543.47888, "b": 302.71823, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "can be converted to the Open Neural Network Exchange (ONNX) format before deployment. ", "bbox": {"l": 136.80005, "t": 305.50507, "r": 547.30829, "b": 314.71804999999995, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Based on project requirements, IBM Z supports high-throughput, low latency inference ", "bbox": {"l": 136.80005, "t": 317.50488000000007, "r": 520.6048, "b": 326.71786, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "requirements by leveraging an AI accelerator.", "bbox": {"l": 136.80005, "t": 329.5047, "r": 338.49896, "b": 338.71768, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "For decision-making about an aircraft engine\u2019s life, it is important to be able to explain the ", "bbox": {"l": 136.80005, "t": 351.52426, "r": 533.88434, "b": 360.73724, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "model predictions from end to end. This explainability may be global or local. Global ", "bbox": {"l": 136.80005, "t": 363.52408, "r": 509.4176, "b": 372.73706, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "explainability enables decision-makers to evaluate the trained model in general from the ", "bbox": {"l": 136.80005, "t": 375.52389999999997, "r": 527.95715, "b": 384.73688, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "subject matter expert (SME) point of view. Local explainability enables the operator to validate ", "bbox": {"l": 136.80005, "t": 387.52371, "r": 547.28247, "b": 396.73669, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "the reasons behind the present inference and relate it to the past data points, which are an ", "bbox": {"l": 136.80005, "t": 399.52353, "r": 539.53656, "b": 408.73651, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "indicative cause of the prediction. ", "bbox": {"l": 136.80005, "t": 411.52334999999994, "r": 287.38629, "b": 420.73633, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "The AI governance components such as IBM OpenScale on CP4D support explainability and ", "bbox": {"l": 136.80005, "t": 433.48315, "r": 547.27649, "b": 442.69614, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "manages the drifts in data and concept. OpenPages and AI FactSheet together can alert the ", "bbox": {"l": 136.80005, "t": 445.48297, "r": 547.26263, "b": 454.69595, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "stakeholders about important events through a dashboard and allow course correction at any ", "bbox": {"l": 136.80005, "t": 457.48279, "r": 547.32422, "b": 466.69577, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "point. ", "bbox": {"l": 136.80005, "t": 469.4826, "r": 163.98486, "b": 478.69559, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Client-side applications can invoke a REST apiserver that handles some preprocessing of an ", "bbox": {"l": 136.80005, "t": 491.50217, "r": 547.27454, "b": 500.71515, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "incoming request before initiating the inference pipeline. Efficiencies might be needed in ", "bbox": {"l": 136.80005, "t": 503.50198, "r": 527.93903, "b": 512.71497, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "real-time applications, and inference response time can be reduced by adopting low-level ", "bbox": {"l": 136.80005, "t": 515.5018, "r": 533.50079, "b": 524.71478, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "programming while components are communicating.", "bbox": {"l": 136.80005, "t": 527.50162, "r": 368.46075, "b": 536.71461, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Figure 23 on page 29 provides a more in-depth view of the architecture of an AI-based ", "bbox": {"l": 136.80005, "t": 549.52118, "r": 521.20435, "b": 558.73418, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "predictive maintenance application. ", "bbox": {"l": 136.80005, "t": 561.52098, "r": 295.74277, "b": 570.73398, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.85002517700195, "t": 754.3954467773438, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9155879020690918, "cells": [{"id": 0, "text": "28 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.15624237060547, "t": 754.7210083007812, "r": 267.0744, "b": 764.1427612304688, "coord_origin": "TOPLEFT"}, "confidence": 0.9536111354827881, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.91494750976562, "t": 70.69358825683594, "r": 547.28241, "b": 176.9809112548828, "coord_origin": "TOPLEFT"}, "confidence": 0.9882624745368958, "cells": [{"id": 2, "text": "Open-source data from NASA was used to build the AI model, which then was deployed on ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 542.39313, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "CP4D. CP4D enables the data-scientist\u2019s journey from modeling to deployment in a seamless ", "bbox": {"l": 136.80002, "t": 83.50847999999996, "r": 547.27655, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "process. Data engineers leverage Db2 to host the data set, which includes the training, ", "bbox": {"l": 136.80003, "t": 95.50829999999996, "r": 523.61969, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "testing, and validation of a data set. Since data is hosted on Db2, you can expect low latency ", "bbox": {"l": 136.80003, "t": 107.50811999999996, "r": 547.28241, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "while retrieving the data and serve data security needs because Db2 is hosted on the ", "bbox": {"l": 136.80003, "t": 119.50792999999999, "r": 516.43262, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "IBM Z platform. Data is fetched by the data refinery to do the necessary pre-processing and ", "bbox": {"l": 136.80003, "t": 131.50775, "r": 544.06757, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "data imputations. You can use the programming languages Golang or C++ for real-time ", "bbox": {"l": 136.80003, "t": 143.50757, "r": 525.77576, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "predictions, depending on customer needs. For more information about this topic, see \u201cUse ", "bbox": {"l": 136.80003, "t": 155.50739, "r": 541.80939, "b": 164.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "case 3: Clearing and settlement\u201d on page 25.", "bbox": {"l": 136.80003, "t": 167.5072, "r": 336.3446, "b": 176.72020999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.84686279296875, "t": 188.6097869873047, "r": 545.17706, "b": 234.73925999999994, "coord_origin": "TOPLEFT"}, "confidence": 0.9868529438972473, "cells": [{"id": 11, "text": "Model building is done on Watson Studio, leveraging the high-performance computing ", "bbox": {"l": 136.80003, "t": 189.52679, "r": 519.02582, "b": 198.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "hardware on IBM Z. You can train the model anywhere (on your own hardware or the cloud) ", "bbox": {"l": 136.80003, "t": 201.52661, "r": 545.17706, "b": 210.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "and bring the model directly into CP4D, which provides data scientists with the flexibility of ", "bbox": {"l": 136.80003, "t": 213.52643, "r": 537.34039, "b": 222.73943999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "implementation choices. ", "bbox": {"l": 136.80005, "t": 225.52625, "r": 246.82417, "b": 234.73925999999994, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.91741943359375, "t": 246.65235900878906, "r": 547.21289, "b": 281.0306701660156, "coord_origin": "TOPLEFT"}, "confidence": 0.9854286313056946, "cells": [{"id": 15, "text": "We used LSTM to build the AI model and used the training data. The model was continuously ", "bbox": {"l": 136.80005, "t": 247.48602000000005, "r": 547.21289, "b": 256.69903999999997, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "evaluated to model convergence. The final model is tested with the test data, which is never ", "bbox": {"l": 136.80005, "t": 259.48584000000005, "r": 545.17395, "b": 268.69885, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "exposed at the time of training to make sure that the model works. ", "bbox": {"l": 136.80005, "t": 271.48566000000005, "r": 431.79333, "b": 280.69867, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.88528442382812, "t": 292.6196594238281, "r": 547.30829, "b": 339.16351318359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9867450594902039, "cells": [{"id": 18, "text": "This model is deployed on WML on CP4D and runs on IBM Z. If required, the trained model ", "bbox": {"l": 136.80005, "t": 293.50525, "r": 543.47888, "b": 302.71823, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "can be converted to the Open Neural Network Exchange (ONNX) format before deployment. ", "bbox": {"l": 136.80005, "t": 305.50507, "r": 547.30829, "b": 314.71804999999995, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Based on project requirements, IBM Z supports high-throughput, low latency inference ", "bbox": {"l": 136.80005, "t": 317.50488000000007, "r": 520.6048, "b": 326.71786, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "requirements by leveraging an AI accelerator.", "bbox": {"l": 136.80005, "t": 329.5047, "r": 338.49896, "b": 338.71768, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 135.9976348876953, "t": 350.63482666015625, "r": 547.28247, "b": 420.8690185546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9884775280952454, "cells": [{"id": 22, "text": "For decision-making about an aircraft engine\u2019s life, it is important to be able to explain the ", "bbox": {"l": 136.80005, "t": 351.52426, "r": 533.88434, "b": 360.73724, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "model predictions from end to end. This explainability may be global or local. Global ", "bbox": {"l": 136.80005, "t": 363.52408, "r": 509.4176, "b": 372.73706, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "explainability enables decision-makers to evaluate the trained model in general from the ", "bbox": {"l": 136.80005, "t": 375.52389999999997, "r": 527.95715, "b": 384.73688, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "subject matter expert (SME) point of view. Local explainability enables the operator to validate ", "bbox": {"l": 136.80005, "t": 387.52371, "r": 547.28247, "b": 396.73669, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "the reasons behind the present inference and relate it to the past data points, which are an ", "bbox": {"l": 136.80005, "t": 399.52353, "r": 539.53656, "b": 408.73651, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "indicative cause of the prediction. ", "bbox": {"l": 136.80005, "t": 411.52334999999994, "r": 287.38629, "b": 420.73633, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 135.7574462890625, "t": 432.6813049316406, "r": 547.32422, "b": 478.8412170410156, "coord_origin": "TOPLEFT"}, "confidence": 0.9873866438865662, "cells": [{"id": 28, "text": "The AI governance components such as IBM OpenScale on CP4D support explainability and ", "bbox": {"l": 136.80005, "t": 433.48315, "r": 547.27649, "b": 442.69614, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "manages the drifts in data and concept. OpenPages and AI FactSheet together can alert the ", "bbox": {"l": 136.80005, "t": 445.48297, "r": 547.26263, "b": 454.69595, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "stakeholders about important events through a dashboard and allow course correction at any ", "bbox": {"l": 136.80005, "t": 457.48279, "r": 547.32422, "b": 466.69577, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "point. ", "bbox": {"l": 136.80005, "t": 469.4826, "r": 163.98486, "b": 478.69559, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 136.12620544433594, "t": 490.4873046875, "r": 547.27454, "b": 537.0437622070312, "coord_origin": "TOPLEFT"}, "confidence": 0.9881239533424377, "cells": [{"id": 32, "text": "Client-side applications can invoke a REST apiserver that handles some preprocessing of an ", "bbox": {"l": 136.80005, "t": 491.50217, "r": 547.27454, "b": 500.71515, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "incoming request before initiating the inference pipeline. Efficiencies might be needed in ", "bbox": {"l": 136.80005, "t": 503.50198, "r": 527.93903, "b": 512.71497, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "real-time applications, and inference response time can be reduced by adopting low-level ", "bbox": {"l": 136.80005, "t": 515.5018, "r": 533.50079, "b": 524.71478, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "programming while components are communicating.", "bbox": {"l": 136.80005, "t": 527.50162, "r": 368.46075, "b": 536.71461, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 136.40904235839844, "t": 548.6136474609375, "r": 521.20435, "b": 570.9915771484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9769964814186096, "cells": [{"id": 36, "text": "Figure 23 on page 29 provides a more in-depth view of the architecture of an AI-based ", "bbox": {"l": 136.80005, "t": 549.52118, "r": 521.20435, "b": 558.73418, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "predictive maintenance application. ", "bbox": {"l": 136.80005, "t": 561.52098, "r": 295.74277, "b": 570.73398, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 29, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.85002517700195, "t": 754.3954467773438, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9155879020690918, "cells": [{"id": 0, "text": "28 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "28"}, {"label": "page_footer", "id": 1, "page_no": 29, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.15624237060547, "t": 754.7210083007812, "r": 267.0744, "b": 764.1427612304688, "coord_origin": "TOPLEFT"}, "confidence": 0.9536111354827881, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"label": "text", "id": 2, "page_no": 29, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.91494750976562, "t": 70.69358825683594, "r": 547.28241, "b": 176.9809112548828, "coord_origin": "TOPLEFT"}, "confidence": 0.9882624745368958, "cells": [{"id": 2, "text": "Open-source data from NASA was used to build the AI model, which then was deployed on ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 542.39313, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "CP4D. CP4D enables the data-scientist\u2019s journey from modeling to deployment in a seamless ", "bbox": {"l": 136.80002, "t": 83.50847999999996, "r": 547.27655, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "process. Data engineers leverage Db2 to host the data set, which includes the training, ", "bbox": {"l": 136.80003, "t": 95.50829999999996, "r": 523.61969, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "testing, and validation of a data set. Since data is hosted on Db2, you can expect low latency ", "bbox": {"l": 136.80003, "t": 107.50811999999996, "r": 547.28241, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "while retrieving the data and serve data security needs because Db2 is hosted on the ", "bbox": {"l": 136.80003, "t": 119.50792999999999, "r": 516.43262, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "IBM Z platform. Data is fetched by the data refinery to do the necessary pre-processing and ", "bbox": {"l": 136.80003, "t": 131.50775, "r": 544.06757, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "data imputations. You can use the programming languages Golang or C++ for real-time ", "bbox": {"l": 136.80003, "t": 143.50757, "r": 525.77576, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "predictions, depending on customer needs. For more information about this topic, see \u201cUse ", "bbox": {"l": 136.80003, "t": 155.50739, "r": 541.80939, "b": 164.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "case 3: Clearing and settlement\u201d on page 25.", "bbox": {"l": 136.80003, "t": 167.5072, "r": 336.3446, "b": 176.72020999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Open-source data from NASA was used to build the AI model, which then was deployed on CP4D. CP4D enables the data-scientist\u2019s journey from modeling to deployment in a seamless process. Data engineers leverage Db2 to host the data set, which includes the training, testing, and validation of a data set. Since data is hosted on Db2, you can expect low latency while retrieving the data and serve data security needs because Db2 is hosted on the IBM Z platform. Data is fetched by the data refinery to do the necessary pre-processing and data imputations. You can use the programming languages Golang or C++ for real-time predictions, depending on customer needs. For more information about this topic, see \u201cUse case 3: Clearing and settlement\u201d on page 25."}, {"label": "text", "id": 3, "page_no": 29, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.84686279296875, "t": 188.6097869873047, "r": 545.17706, "b": 234.73925999999994, "coord_origin": "TOPLEFT"}, "confidence": 0.9868529438972473, "cells": [{"id": 11, "text": "Model building is done on Watson Studio, leveraging the high-performance computing ", "bbox": {"l": 136.80003, "t": 189.52679, "r": 519.02582, "b": 198.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "hardware on IBM Z. You can train the model anywhere (on your own hardware or the cloud) ", "bbox": {"l": 136.80003, "t": 201.52661, "r": 545.17706, "b": 210.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "and bring the model directly into CP4D, which provides data scientists with the flexibility of ", "bbox": {"l": 136.80003, "t": 213.52643, "r": 537.34039, "b": 222.73943999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "implementation choices. ", "bbox": {"l": 136.80005, "t": 225.52625, "r": 246.82417, "b": 234.73925999999994, "coord_origin": "TOPLEFT"}}]}, "text": "Model building is done on Watson Studio, leveraging the high-performance computing hardware on IBM Z. You can train the model anywhere (on your own hardware or the cloud) and bring the model directly into CP4D, which provides data scientists with the flexibility of implementation choices."}, {"label": "text", "id": 4, "page_no": 29, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.91741943359375, "t": 246.65235900878906, "r": 547.21289, "b": 281.0306701660156, "coord_origin": "TOPLEFT"}, "confidence": 0.9854286313056946, "cells": [{"id": 15, "text": "We used LSTM to build the AI model and used the training data. The model was continuously ", "bbox": {"l": 136.80005, "t": 247.48602000000005, "r": 547.21289, "b": 256.69903999999997, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "evaluated to model convergence. The final model is tested with the test data, which is never ", "bbox": {"l": 136.80005, "t": 259.48584000000005, "r": 545.17395, "b": 268.69885, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "exposed at the time of training to make sure that the model works. ", "bbox": {"l": 136.80005, "t": 271.48566000000005, "r": 431.79333, "b": 280.69867, "coord_origin": "TOPLEFT"}}]}, "text": "We used LSTM to build the AI model and used the training data. The model was continuously evaluated to model convergence. The final model is tested with the test data, which is never exposed at the time of training to make sure that the model works."}, {"label": "text", "id": 5, "page_no": 29, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.88528442382812, "t": 292.6196594238281, "r": 547.30829, "b": 339.16351318359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9867450594902039, "cells": [{"id": 18, "text": "This model is deployed on WML on CP4D and runs on IBM Z. If required, the trained model ", "bbox": {"l": 136.80005, "t": 293.50525, "r": 543.47888, "b": 302.71823, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "can be converted to the Open Neural Network Exchange (ONNX) format before deployment. ", "bbox": {"l": 136.80005, "t": 305.50507, "r": 547.30829, "b": 314.71804999999995, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Based on project requirements, IBM Z supports high-throughput, low latency inference ", "bbox": {"l": 136.80005, "t": 317.50488000000007, "r": 520.6048, "b": 326.71786, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "requirements by leveraging an AI accelerator.", "bbox": {"l": 136.80005, "t": 329.5047, "r": 338.49896, "b": 338.71768, "coord_origin": "TOPLEFT"}}]}, "text": "This model is deployed on WML on CP4D and runs on IBM Z. If required, the trained model can be converted to the Open Neural Network Exchange (ONNX) format before deployment. Based on project requirements, IBM Z supports high-throughput, low latency inference requirements by leveraging an AI accelerator."}, {"label": "text", "id": 6, "page_no": 29, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.9976348876953, "t": 350.63482666015625, "r": 547.28247, "b": 420.8690185546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9884775280952454, "cells": [{"id": 22, "text": "For decision-making about an aircraft engine\u2019s life, it is important to be able to explain the ", "bbox": {"l": 136.80005, "t": 351.52426, "r": 533.88434, "b": 360.73724, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "model predictions from end to end. This explainability may be global or local. Global ", "bbox": {"l": 136.80005, "t": 363.52408, "r": 509.4176, "b": 372.73706, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "explainability enables decision-makers to evaluate the trained model in general from the ", "bbox": {"l": 136.80005, "t": 375.52389999999997, "r": 527.95715, "b": 384.73688, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "subject matter expert (SME) point of view. Local explainability enables the operator to validate ", "bbox": {"l": 136.80005, "t": 387.52371, "r": 547.28247, "b": 396.73669, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "the reasons behind the present inference and relate it to the past data points, which are an ", "bbox": {"l": 136.80005, "t": 399.52353, "r": 539.53656, "b": 408.73651, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "indicative cause of the prediction. ", "bbox": {"l": 136.80005, "t": 411.52334999999994, "r": 287.38629, "b": 420.73633, "coord_origin": "TOPLEFT"}}]}, "text": "For decision-making about an aircraft engine\u2019s life, it is important to be able to explain the model predictions from end to end. This explainability may be global or local. Global explainability enables decision-makers to evaluate the trained model in general from the subject matter expert (SME) point of view. Local explainability enables the operator to validate the reasons behind the present inference and relate it to the past data points, which are an indicative cause of the prediction."}, {"label": "text", "id": 7, "page_no": 29, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.7574462890625, "t": 432.6813049316406, "r": 547.32422, "b": 478.8412170410156, "coord_origin": "TOPLEFT"}, "confidence": 0.9873866438865662, "cells": [{"id": 28, "text": "The AI governance components such as IBM OpenScale on CP4D support explainability and ", "bbox": {"l": 136.80005, "t": 433.48315, "r": 547.27649, "b": 442.69614, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "manages the drifts in data and concept. OpenPages and AI FactSheet together can alert the ", "bbox": {"l": 136.80005, "t": 445.48297, "r": 547.26263, "b": 454.69595, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "stakeholders about important events through a dashboard and allow course correction at any ", "bbox": {"l": 136.80005, "t": 457.48279, "r": 547.32422, "b": 466.69577, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "point. ", "bbox": {"l": 136.80005, "t": 469.4826, "r": 163.98486, "b": 478.69559, "coord_origin": "TOPLEFT"}}]}, "text": "The AI governance components such as IBM OpenScale on CP4D support explainability and manages the drifts in data and concept. OpenPages and AI FactSheet together can alert the stakeholders about important events through a dashboard and allow course correction at any point."}, {"label": "text", "id": 8, "page_no": 29, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.12620544433594, "t": 490.4873046875, "r": 547.27454, "b": 537.0437622070312, "coord_origin": "TOPLEFT"}, "confidence": 0.9881239533424377, "cells": [{"id": 32, "text": "Client-side applications can invoke a REST apiserver that handles some preprocessing of an ", "bbox": {"l": 136.80005, "t": 491.50217, "r": 547.27454, "b": 500.71515, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "incoming request before initiating the inference pipeline. Efficiencies might be needed in ", "bbox": {"l": 136.80005, "t": 503.50198, "r": 527.93903, "b": 512.71497, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "real-time applications, and inference response time can be reduced by adopting low-level ", "bbox": {"l": 136.80005, "t": 515.5018, "r": 533.50079, "b": 524.71478, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "programming while components are communicating.", "bbox": {"l": 136.80005, "t": 527.50162, "r": 368.46075, "b": 536.71461, "coord_origin": "TOPLEFT"}}]}, "text": "Client-side applications can invoke a REST apiserver that handles some preprocessing of an incoming request before initiating the inference pipeline. Efficiencies might be needed in real-time applications, and inference response time can be reduced by adopting low-level programming while components are communicating."}, {"label": "text", "id": 9, "page_no": 29, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.40904235839844, "t": 548.6136474609375, "r": 521.20435, "b": 570.9915771484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9769964814186096, "cells": [{"id": 36, "text": "Figure 23 on page 29 provides a more in-depth view of the architecture of an AI-based ", "bbox": {"l": 136.80005, "t": 549.52118, "r": 521.20435, "b": 558.73418, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "predictive maintenance application. ", "bbox": {"l": 136.80005, "t": 561.52098, "r": 295.74277, "b": 570.73398, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 23 on page 29 provides a more in-depth view of the architecture of an AI-based predictive maintenance application."}], "body": [{"label": "text", "id": 2, "page_no": 29, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.91494750976562, "t": 70.69358825683594, "r": 547.28241, "b": 176.9809112548828, "coord_origin": "TOPLEFT"}, "confidence": 0.9882624745368958, "cells": [{"id": 2, "text": "Open-source data from NASA was used to build the AI model, which then was deployed on ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 542.39313, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "CP4D. CP4D enables the data-scientist\u2019s journey from modeling to deployment in a seamless ", "bbox": {"l": 136.80002, "t": 83.50847999999996, "r": 547.27655, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "process. Data engineers leverage Db2 to host the data set, which includes the training, ", "bbox": {"l": 136.80003, "t": 95.50829999999996, "r": 523.61969, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "testing, and validation of a data set. Since data is hosted on Db2, you can expect low latency ", "bbox": {"l": 136.80003, "t": 107.50811999999996, "r": 547.28241, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "while retrieving the data and serve data security needs because Db2 is hosted on the ", "bbox": {"l": 136.80003, "t": 119.50792999999999, "r": 516.43262, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "IBM Z platform. Data is fetched by the data refinery to do the necessary pre-processing and ", "bbox": {"l": 136.80003, "t": 131.50775, "r": 544.06757, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "data imputations. You can use the programming languages Golang or C++ for real-time ", "bbox": {"l": 136.80003, "t": 143.50757, "r": 525.77576, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "predictions, depending on customer needs. For more information about this topic, see \u201cUse ", "bbox": {"l": 136.80003, "t": 155.50739, "r": 541.80939, "b": 164.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "case 3: Clearing and settlement\u201d on page 25.", "bbox": {"l": 136.80003, "t": 167.5072, "r": 336.3446, "b": 176.72020999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Open-source data from NASA was used to build the AI model, which then was deployed on CP4D. CP4D enables the data-scientist\u2019s journey from modeling to deployment in a seamless process. Data engineers leverage Db2 to host the data set, which includes the training, testing, and validation of a data set. Since data is hosted on Db2, you can expect low latency while retrieving the data and serve data security needs because Db2 is hosted on the IBM Z platform. Data is fetched by the data refinery to do the necessary pre-processing and data imputations. You can use the programming languages Golang or C++ for real-time predictions, depending on customer needs. For more information about this topic, see \u201cUse case 3: Clearing and settlement\u201d on page 25."}, {"label": "text", "id": 3, "page_no": 29, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.84686279296875, "t": 188.6097869873047, "r": 545.17706, "b": 234.73925999999994, "coord_origin": "TOPLEFT"}, "confidence": 0.9868529438972473, "cells": [{"id": 11, "text": "Model building is done on Watson Studio, leveraging the high-performance computing ", "bbox": {"l": 136.80003, "t": 189.52679, "r": 519.02582, "b": 198.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "hardware on IBM Z. You can train the model anywhere (on your own hardware or the cloud) ", "bbox": {"l": 136.80003, "t": 201.52661, "r": 545.17706, "b": 210.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "and bring the model directly into CP4D, which provides data scientists with the flexibility of ", "bbox": {"l": 136.80003, "t": 213.52643, "r": 537.34039, "b": 222.73943999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "implementation choices. ", "bbox": {"l": 136.80005, "t": 225.52625, "r": 246.82417, "b": 234.73925999999994, "coord_origin": "TOPLEFT"}}]}, "text": "Model building is done on Watson Studio, leveraging the high-performance computing hardware on IBM Z. You can train the model anywhere (on your own hardware or the cloud) and bring the model directly into CP4D, which provides data scientists with the flexibility of implementation choices."}, {"label": "text", "id": 4, "page_no": 29, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.91741943359375, "t": 246.65235900878906, "r": 547.21289, "b": 281.0306701660156, "coord_origin": "TOPLEFT"}, "confidence": 0.9854286313056946, "cells": [{"id": 15, "text": "We used LSTM to build the AI model and used the training data. The model was continuously ", "bbox": {"l": 136.80005, "t": 247.48602000000005, "r": 547.21289, "b": 256.69903999999997, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "evaluated to model convergence. The final model is tested with the test data, which is never ", "bbox": {"l": 136.80005, "t": 259.48584000000005, "r": 545.17395, "b": 268.69885, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "exposed at the time of training to make sure that the model works. ", "bbox": {"l": 136.80005, "t": 271.48566000000005, "r": 431.79333, "b": 280.69867, "coord_origin": "TOPLEFT"}}]}, "text": "We used LSTM to build the AI model and used the training data. The model was continuously evaluated to model convergence. The final model is tested with the test data, which is never exposed at the time of training to make sure that the model works."}, {"label": "text", "id": 5, "page_no": 29, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.88528442382812, "t": 292.6196594238281, "r": 547.30829, "b": 339.16351318359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9867450594902039, "cells": [{"id": 18, "text": "This model is deployed on WML on CP4D and runs on IBM Z. If required, the trained model ", "bbox": {"l": 136.80005, "t": 293.50525, "r": 543.47888, "b": 302.71823, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "can be converted to the Open Neural Network Exchange (ONNX) format before deployment. ", "bbox": {"l": 136.80005, "t": 305.50507, "r": 547.30829, "b": 314.71804999999995, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Based on project requirements, IBM Z supports high-throughput, low latency inference ", "bbox": {"l": 136.80005, "t": 317.50488000000007, "r": 520.6048, "b": 326.71786, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "requirements by leveraging an AI accelerator.", "bbox": {"l": 136.80005, "t": 329.5047, "r": 338.49896, "b": 338.71768, "coord_origin": "TOPLEFT"}}]}, "text": "This model is deployed on WML on CP4D and runs on IBM Z. If required, the trained model can be converted to the Open Neural Network Exchange (ONNX) format before deployment. Based on project requirements, IBM Z supports high-throughput, low latency inference requirements by leveraging an AI accelerator."}, {"label": "text", "id": 6, "page_no": 29, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.9976348876953, "t": 350.63482666015625, "r": 547.28247, "b": 420.8690185546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9884775280952454, "cells": [{"id": 22, "text": "For decision-making about an aircraft engine\u2019s life, it is important to be able to explain the ", "bbox": {"l": 136.80005, "t": 351.52426, "r": 533.88434, "b": 360.73724, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "model predictions from end to end. This explainability may be global or local. Global ", "bbox": {"l": 136.80005, "t": 363.52408, "r": 509.4176, "b": 372.73706, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "explainability enables decision-makers to evaluate the trained model in general from the ", "bbox": {"l": 136.80005, "t": 375.52389999999997, "r": 527.95715, "b": 384.73688, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "subject matter expert (SME) point of view. Local explainability enables the operator to validate ", "bbox": {"l": 136.80005, "t": 387.52371, "r": 547.28247, "b": 396.73669, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "the reasons behind the present inference and relate it to the past data points, which are an ", "bbox": {"l": 136.80005, "t": 399.52353, "r": 539.53656, "b": 408.73651, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "indicative cause of the prediction. ", "bbox": {"l": 136.80005, "t": 411.52334999999994, "r": 287.38629, "b": 420.73633, "coord_origin": "TOPLEFT"}}]}, "text": "For decision-making about an aircraft engine\u2019s life, it is important to be able to explain the model predictions from end to end. This explainability may be global or local. Global explainability enables decision-makers to evaluate the trained model in general from the subject matter expert (SME) point of view. Local explainability enables the operator to validate the reasons behind the present inference and relate it to the past data points, which are an indicative cause of the prediction."}, {"label": "text", "id": 7, "page_no": 29, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.7574462890625, "t": 432.6813049316406, "r": 547.32422, "b": 478.8412170410156, "coord_origin": "TOPLEFT"}, "confidence": 0.9873866438865662, "cells": [{"id": 28, "text": "The AI governance components such as IBM OpenScale on CP4D support explainability and ", "bbox": {"l": 136.80005, "t": 433.48315, "r": 547.27649, "b": 442.69614, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "manages the drifts in data and concept. OpenPages and AI FactSheet together can alert the ", "bbox": {"l": 136.80005, "t": 445.48297, "r": 547.26263, "b": 454.69595, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "stakeholders about important events through a dashboard and allow course correction at any ", "bbox": {"l": 136.80005, "t": 457.48279, "r": 547.32422, "b": 466.69577, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "point. ", "bbox": {"l": 136.80005, "t": 469.4826, "r": 163.98486, "b": 478.69559, "coord_origin": "TOPLEFT"}}]}, "text": "The AI governance components such as IBM OpenScale on CP4D support explainability and manages the drifts in data and concept. OpenPages and AI FactSheet together can alert the stakeholders about important events through a dashboard and allow course correction at any point."}, {"label": "text", "id": 8, "page_no": 29, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.12620544433594, "t": 490.4873046875, "r": 547.27454, "b": 537.0437622070312, "coord_origin": "TOPLEFT"}, "confidence": 0.9881239533424377, "cells": [{"id": 32, "text": "Client-side applications can invoke a REST apiserver that handles some preprocessing of an ", "bbox": {"l": 136.80005, "t": 491.50217, "r": 547.27454, "b": 500.71515, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "incoming request before initiating the inference pipeline. Efficiencies might be needed in ", "bbox": {"l": 136.80005, "t": 503.50198, "r": 527.93903, "b": 512.71497, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "real-time applications, and inference response time can be reduced by adopting low-level ", "bbox": {"l": 136.80005, "t": 515.5018, "r": 533.50079, "b": 524.71478, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "programming while components are communicating.", "bbox": {"l": 136.80005, "t": 527.50162, "r": 368.46075, "b": 536.71461, "coord_origin": "TOPLEFT"}}]}, "text": "Client-side applications can invoke a REST apiserver that handles some preprocessing of an incoming request before initiating the inference pipeline. Efficiencies might be needed in real-time applications, and inference response time can be reduced by adopting low-level programming while components are communicating."}, {"label": "text", "id": 9, "page_no": 29, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.40904235839844, "t": 548.6136474609375, "r": 521.20435, "b": 570.9915771484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9769964814186096, "cells": [{"id": 36, "text": "Figure 23 on page 29 provides a more in-depth view of the architecture of an AI-based ", "bbox": {"l": 136.80005, "t": 549.52118, "r": 521.20435, "b": 558.73418, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "predictive maintenance application. ", "bbox": {"l": 136.80005, "t": 561.52098, "r": 295.74277, "b": 570.73398, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 23 on page 29 provides a more in-depth view of the architecture of an AI-based predictive maintenance application."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 29, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.85002517700195, "t": 754.3954467773438, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9155879020690918, "cells": [{"id": 0, "text": "28 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "28"}, {"label": "page_footer", "id": 1, "page_no": 29, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.15624237060547, "t": 754.7210083007812, "r": 267.0744, "b": 764.1427612304688, "coord_origin": "TOPLEFT"}, "confidence": 0.9536111354827881, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}]}}, {"page_no": 30, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "29", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Figure 23 In-depth architectural view", "bbox": {"l": 64.800003, "t": 442.5779999999999, "r": 215.16300999999999, "b": 450.90302, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "In summary, consider the following points while developing an AI-based predictive ", "bbox": {"l": 136.8, "t": 464.56873, "r": 501.7642200000001, "b": 473.78171, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "maintenance application:", "bbox": {"l": 136.8, "t": 476.56854, "r": 247.38886999999997, "b": 485.78152, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "GLYPH", "bbox": {"l": 136.8, "t": 493.69772, "r": 141.78, "b": 502.4725, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "CP4D offers a Python run time to build a custom solution stack, but also supports different ", "bbox": {"l": 151.20016, "t": 493.54834, "r": 547.32031, "b": 502.76132, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "components like Watson Studio, WML, Db2, Data Refinery, OpenScale, AI Factsheets, ", "bbox": {"l": 151.20016, "t": 505.54816, "r": 537.88837, "b": 514.7611400000001, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "and OpenPages.", "bbox": {"l": 151.20016, "t": 517.5479700000001, "r": 226.26571999999996, "b": 526.7609600000001, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "GLYPH", "bbox": {"l": 136.8, "t": 534.67719, "r": 141.78, "b": 543.45193, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "The trustworthiness of the predicted output is important for critical use cases.", "bbox": {"l": 151.20016, "t": 534.5277699999999, "r": 491.3402699999999, "b": 543.74078, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "GLYPH", "bbox": {"l": 136.8, "t": 551.71675, "r": 141.78, "b": 560.4915, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "IBM Z provides high data security and low latency requirements at scale for the critical ", "bbox": {"l": 151.20016, "t": 551.56735, "r": 534.49988, "b": 560.78035, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "applications.", "bbox": {"l": 151.20016, "t": 563.56715, "r": 206.73216, "b": 572.78015, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 580.69637, "r": 141.78, "b": 589.47112, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "A data scientist can choose to train the model and deploy it on CP4D seamlessly with the ", "bbox": {"l": 151.20016, "t": 580.54697, "r": 547.2157, "b": 589.75996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "latest tech stack that is available.", "bbox": {"l": 151.20016, "t": 592.54677, "r": 297.4169, "b": 601.75977, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "GLYPH", "bbox": {"l": 136.8, "t": 609.67598, "r": 141.78, "b": 618.45073, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "The AIOps and MLOps supported by CP4D to track AI model and data lifecycle ", "bbox": {"l": 151.20016, "t": 609.52658, "r": 504.02917, "b": 618.7395799999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "throughout the application lifecycle.", "bbox": {"l": 151.20016, "t": 621.52638, "r": 307.32214, "b": 630.73938, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 535.4804077148438, "t": 754.2535400390625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9163533449172974, "cells": [{"id": 0, "text": "29", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "caption", "bbox": {"l": 64.29751586914062, "t": 442.3620300292969, "r": 216.1868438720703, "b": 451.6481628417969, "coord_origin": "TOPLEFT"}, "confidence": 0.9474461078643799, "cells": [{"id": 1, "text": "Figure 23 In-depth architectural view", "bbox": {"l": 64.800003, "t": 442.5779999999999, "r": 215.16300999999999, "b": 450.90302, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 136.26695251464844, "t": 464.0877685546875, "r": 501.7642200000001, "b": 485.9813537597656, "coord_origin": "TOPLEFT"}, "confidence": 0.9469272494316101, "cells": [{"id": 2, "text": "In summary, consider the following points while developing an AI-based predictive ", "bbox": {"l": 136.8, "t": 464.56873, "r": 501.7642200000001, "b": 473.78171, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "maintenance application:", "bbox": {"l": 136.8, "t": 476.56854, "r": 247.38886999999997, "b": 485.78152, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "list_item", "bbox": {"l": 135.49343872070312, "t": 492.5340576171875, "r": 547.32031, "b": 526.9137573242188, "coord_origin": "TOPLEFT"}, "confidence": 0.9813073873519897, "cells": [{"id": 4, "text": "GLYPH", "bbox": {"l": 136.8, "t": 493.69772, "r": 141.78, "b": 502.4725, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "CP4D offers a Python run time to build a custom solution stack, but also supports different ", "bbox": {"l": 151.20016, "t": 493.54834, "r": 547.32031, "b": 502.76132, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "components like Watson Studio, WML, Db2, Data Refinery, OpenScale, AI Factsheets, ", "bbox": {"l": 151.20016, "t": 505.54816, "r": 537.88837, "b": 514.7611400000001, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "and OpenPages.", "bbox": {"l": 151.20016, "t": 517.5479700000001, "r": 226.26571999999996, "b": 526.7609600000001, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 135.57691955566406, "t": 534.0592041015625, "r": 491.3402699999999, "b": 544.2946166992188, "coord_origin": "TOPLEFT"}, "confidence": 0.9524359107017517, "cells": [{"id": 8, "text": "GLYPH", "bbox": {"l": 136.8, "t": 534.67719, "r": 141.78, "b": 543.45193, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "The trustworthiness of the predicted output is important for critical use cases.", "bbox": {"l": 151.20016, "t": 534.5277699999999, "r": 491.3402699999999, "b": 543.74078, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 135.67471313476562, "t": 550.6901245117188, "r": 534.49988, "b": 572.9078979492188, "coord_origin": "TOPLEFT"}, "confidence": 0.9742523431777954, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.8, "t": 551.71675, "r": 141.78, "b": 560.4915, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "IBM Z provides high data security and low latency requirements at scale for the critical ", "bbox": {"l": 151.20016, "t": 551.56735, "r": 534.49988, "b": 560.78035, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "applications.", "bbox": {"l": 151.20016, "t": 563.56715, "r": 206.73216, "b": 572.78015, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.61285400390625, "t": 579.9425659179688, "r": 547.2157, "b": 601.75977, "coord_origin": "TOPLEFT"}, "confidence": 0.9732432961463928, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 580.69637, "r": 141.78, "b": 589.47112, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "A data scientist can choose to train the model and deploy it on CP4D seamlessly with the ", "bbox": {"l": 151.20016, "t": 580.54697, "r": 547.2157, "b": 589.75996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "latest tech stack that is available.", "bbox": {"l": 151.20016, "t": 592.54677, "r": 297.4169, "b": 601.75977, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.52349853515625, "t": 608.5234985351562, "r": 504.02917, "b": 631.1382446289062, "coord_origin": "TOPLEFT"}, "confidence": 0.976965069770813, "cells": [{"id": 16, "text": "GLYPH", "bbox": {"l": 136.8, "t": 609.67598, "r": 141.78, "b": 618.45073, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "The AIOps and MLOps supported by CP4D to track AI model and data lifecycle ", "bbox": {"l": 151.20016, "t": 609.52658, "r": 504.02917, "b": 618.7395799999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "throughout the application lifecycle.", "bbox": {"l": 151.20016, "t": 621.52638, "r": 307.32214, "b": 630.73938, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 63.6925048828125, "t": 77.32726287841797, "r": 547.7992553710938, "b": 439.2281799316406, "coord_origin": "TOPLEFT"}, "confidence": 0.9841210246086121, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 30, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 535.4804077148438, "t": 754.2535400390625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9163533449172974, "cells": [{"id": 0, "text": "29", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "29"}, {"label": "caption", "id": 1, "page_no": 30, "cluster": {"id": 1, "label": "caption", "bbox": {"l": 64.29751586914062, "t": 442.3620300292969, "r": 216.1868438720703, "b": 451.6481628417969, "coord_origin": "TOPLEFT"}, "confidence": 0.9474461078643799, "cells": [{"id": 1, "text": "Figure 23 In-depth architectural view", "bbox": {"l": 64.800003, "t": 442.5779999999999, "r": 215.16300999999999, "b": 450.90302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 23 In-depth architectural view"}, {"label": "text", "id": 2, "page_no": 30, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.26695251464844, "t": 464.0877685546875, "r": 501.7642200000001, "b": 485.9813537597656, "coord_origin": "TOPLEFT"}, "confidence": 0.9469272494316101, "cells": [{"id": 2, "text": "In summary, consider the following points while developing an AI-based predictive ", "bbox": {"l": 136.8, "t": 464.56873, "r": 501.7642200000001, "b": 473.78171, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "maintenance application:", "bbox": {"l": 136.8, "t": 476.56854, "r": 247.38886999999997, "b": 485.78152, "coord_origin": "TOPLEFT"}}]}, "text": "In summary, consider the following points while developing an AI-based predictive maintenance application:"}, {"label": "list_item", "id": 3, "page_no": 30, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 135.49343872070312, "t": 492.5340576171875, "r": 547.32031, "b": 526.9137573242188, "coord_origin": "TOPLEFT"}, "confidence": 0.9813073873519897, "cells": [{"id": 4, "text": "GLYPH", "bbox": {"l": 136.8, "t": 493.69772, "r": 141.78, "b": 502.4725, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "CP4D offers a Python run time to build a custom solution stack, but also supports different ", "bbox": {"l": 151.20016, "t": 493.54834, "r": 547.32031, "b": 502.76132, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "components like Watson Studio, WML, Db2, Data Refinery, OpenScale, AI Factsheets, ", "bbox": {"l": 151.20016, "t": 505.54816, "r": 537.88837, "b": 514.7611400000001, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "and OpenPages.", "bbox": {"l": 151.20016, "t": 517.5479700000001, "r": 226.26571999999996, "b": 526.7609600000001, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH CP4D offers a Python run time to build a custom solution stack, but also supports different components like Watson Studio, WML, Db2, Data Refinery, OpenScale, AI Factsheets, and OpenPages."}, {"label": "list_item", "id": 4, "page_no": 30, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.57691955566406, "t": 534.0592041015625, "r": 491.3402699999999, "b": 544.2946166992188, "coord_origin": "TOPLEFT"}, "confidence": 0.9524359107017517, "cells": [{"id": 8, "text": "GLYPH", "bbox": {"l": 136.8, "t": 534.67719, "r": 141.78, "b": 543.45193, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "The trustworthiness of the predicted output is important for critical use cases.", "bbox": {"l": 151.20016, "t": 534.5277699999999, "r": 491.3402699999999, "b": 543.74078, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The trustworthiness of the predicted output is important for critical use cases."}, {"label": "list_item", "id": 5, "page_no": 30, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.67471313476562, "t": 550.6901245117188, "r": 534.49988, "b": 572.9078979492188, "coord_origin": "TOPLEFT"}, "confidence": 0.9742523431777954, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.8, "t": 551.71675, "r": 141.78, "b": 560.4915, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "IBM Z provides high data security and low latency requirements at scale for the critical ", "bbox": {"l": 151.20016, "t": 551.56735, "r": 534.49988, "b": 560.78035, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "applications.", "bbox": {"l": 151.20016, "t": 563.56715, "r": 206.73216, "b": 572.78015, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH IBM Z provides high data security and low latency requirements at scale for the critical applications."}, {"label": "list_item", "id": 6, "page_no": 30, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.61285400390625, "t": 579.9425659179688, "r": 547.2157, "b": 601.75977, "coord_origin": "TOPLEFT"}, "confidence": 0.9732432961463928, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 580.69637, "r": 141.78, "b": 589.47112, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "A data scientist can choose to train the model and deploy it on CP4D seamlessly with the ", "bbox": {"l": 151.20016, "t": 580.54697, "r": 547.2157, "b": 589.75996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "latest tech stack that is available.", "bbox": {"l": 151.20016, "t": 592.54677, "r": 297.4169, "b": 601.75977, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH A data scientist can choose to train the model and deploy it on CP4D seamlessly with the latest tech stack that is available."}, {"label": "list_item", "id": 7, "page_no": 30, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.52349853515625, "t": 608.5234985351562, "r": 504.02917, "b": 631.1382446289062, "coord_origin": "TOPLEFT"}, "confidence": 0.976965069770813, "cells": [{"id": 16, "text": "GLYPH", "bbox": {"l": 136.8, "t": 609.67598, "r": 141.78, "b": 618.45073, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "The AIOps and MLOps supported by CP4D to track AI model and data lifecycle ", "bbox": {"l": 151.20016, "t": 609.52658, "r": 504.02917, "b": 618.7395799999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "throughout the application lifecycle.", "bbox": {"l": 151.20016, "t": 621.52638, "r": 307.32214, "b": 630.73938, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The AIOps and MLOps supported by CP4D to track AI model and data lifecycle throughout the application lifecycle."}, {"label": "picture", "id": 8, "page_no": 30, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 63.6925048828125, "t": 77.32726287841797, "r": 547.7992553710938, "b": 439.2281799316406, "coord_origin": "TOPLEFT"}, "confidence": 0.9841210246086121, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "caption", "id": 1, "page_no": 30, "cluster": {"id": 1, "label": "caption", "bbox": {"l": 64.29751586914062, "t": 442.3620300292969, "r": 216.1868438720703, "b": 451.6481628417969, "coord_origin": "TOPLEFT"}, "confidence": 0.9474461078643799, "cells": [{"id": 1, "text": "Figure 23 In-depth architectural view", "bbox": {"l": 64.800003, "t": 442.5779999999999, "r": 215.16300999999999, "b": 450.90302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 23 In-depth architectural view"}, {"label": "text", "id": 2, "page_no": 30, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.26695251464844, "t": 464.0877685546875, "r": 501.7642200000001, "b": 485.9813537597656, "coord_origin": "TOPLEFT"}, "confidence": 0.9469272494316101, "cells": [{"id": 2, "text": "In summary, consider the following points while developing an AI-based predictive ", "bbox": {"l": 136.8, "t": 464.56873, "r": 501.7642200000001, "b": 473.78171, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "maintenance application:", "bbox": {"l": 136.8, "t": 476.56854, "r": 247.38886999999997, "b": 485.78152, "coord_origin": "TOPLEFT"}}]}, "text": "In summary, consider the following points while developing an AI-based predictive maintenance application:"}, {"label": "list_item", "id": 3, "page_no": 30, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 135.49343872070312, "t": 492.5340576171875, "r": 547.32031, "b": 526.9137573242188, "coord_origin": "TOPLEFT"}, "confidence": 0.9813073873519897, "cells": [{"id": 4, "text": "GLYPH", "bbox": {"l": 136.8, "t": 493.69772, "r": 141.78, "b": 502.4725, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "CP4D offers a Python run time to build a custom solution stack, but also supports different ", "bbox": {"l": 151.20016, "t": 493.54834, "r": 547.32031, "b": 502.76132, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "components like Watson Studio, WML, Db2, Data Refinery, OpenScale, AI Factsheets, ", "bbox": {"l": 151.20016, "t": 505.54816, "r": 537.88837, "b": 514.7611400000001, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "and OpenPages.", "bbox": {"l": 151.20016, "t": 517.5479700000001, "r": 226.26571999999996, "b": 526.7609600000001, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH CP4D offers a Python run time to build a custom solution stack, but also supports different components like Watson Studio, WML, Db2, Data Refinery, OpenScale, AI Factsheets, and OpenPages."}, {"label": "list_item", "id": 4, "page_no": 30, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.57691955566406, "t": 534.0592041015625, "r": 491.3402699999999, "b": 544.2946166992188, "coord_origin": "TOPLEFT"}, "confidence": 0.9524359107017517, "cells": [{"id": 8, "text": "GLYPH", "bbox": {"l": 136.8, "t": 534.67719, "r": 141.78, "b": 543.45193, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "The trustworthiness of the predicted output is important for critical use cases.", "bbox": {"l": 151.20016, "t": 534.5277699999999, "r": 491.3402699999999, "b": 543.74078, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The trustworthiness of the predicted output is important for critical use cases."}, {"label": "list_item", "id": 5, "page_no": 30, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.67471313476562, "t": 550.6901245117188, "r": 534.49988, "b": 572.9078979492188, "coord_origin": "TOPLEFT"}, "confidence": 0.9742523431777954, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.8, "t": 551.71675, "r": 141.78, "b": 560.4915, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "IBM Z provides high data security and low latency requirements at scale for the critical ", "bbox": {"l": 151.20016, "t": 551.56735, "r": 534.49988, "b": 560.78035, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "applications.", "bbox": {"l": 151.20016, "t": 563.56715, "r": 206.73216, "b": 572.78015, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH IBM Z provides high data security and low latency requirements at scale for the critical applications."}, {"label": "list_item", "id": 6, "page_no": 30, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.61285400390625, "t": 579.9425659179688, "r": 547.2157, "b": 601.75977, "coord_origin": "TOPLEFT"}, "confidence": 0.9732432961463928, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 580.69637, "r": 141.78, "b": 589.47112, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "A data scientist can choose to train the model and deploy it on CP4D seamlessly with the ", "bbox": {"l": 151.20016, "t": 580.54697, "r": 547.2157, "b": 589.75996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "latest tech stack that is available.", "bbox": {"l": 151.20016, "t": 592.54677, "r": 297.4169, "b": 601.75977, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH A data scientist can choose to train the model and deploy it on CP4D seamlessly with the latest tech stack that is available."}, {"label": "list_item", "id": 7, "page_no": 30, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.52349853515625, "t": 608.5234985351562, "r": 504.02917, "b": 631.1382446289062, "coord_origin": "TOPLEFT"}, "confidence": 0.976965069770813, "cells": [{"id": 16, "text": "GLYPH", "bbox": {"l": 136.8, "t": 609.67598, "r": 141.78, "b": 618.45073, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "The AIOps and MLOps supported by CP4D to track AI model and data lifecycle ", "bbox": {"l": 151.20016, "t": 609.52658, "r": 504.02917, "b": 618.7395799999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "throughout the application lifecycle.", "bbox": {"l": 151.20016, "t": 621.52638, "r": 307.32214, "b": 630.73938, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The AIOps and MLOps supported by CP4D to track AI model and data lifecycle throughout the application lifecycle."}, {"label": "picture", "id": 8, "page_no": 30, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 63.6925048828125, "t": 77.32726287841797, "r": 547.7992553710938, "b": 439.2281799316406, "coord_origin": "TOPLEFT"}, "confidence": 0.9841210246086121, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 30, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 535.4804077148438, "t": 754.2535400390625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9163533449172974, "cells": [{"id": 0, "text": "29", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "29"}]}}, {"page_no": 31, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "30 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Use case 5: AI-powered video analytics on an infant\u2019s motions ", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 542.2594, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "for health prediction", "bbox": {"l": 64.800003, "t": 90.18120999999985, "r": 219.41090000000003, "b": 104.94421, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Each year, approximately 5 million newborns worldwide are suffering from a ", "bbox": {"l": 136.8, "t": 122.50867000000005, "r": 474.4818399999999, "b": 131.72168, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "neuro-developmental disorder. Due to the lack of early diagnoses and intervention, many ", "bbox": {"l": 136.79999, "t": 134.50847999999996, "r": 532.30072, "b": 143.7215, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "infants are disabled and abandoned, especially in countries with limited numbers of ", "bbox": {"l": 136.8, "t": 146.50829999999996, "r": 506.92267000000004, "b": 155.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "pediatricians with extensive experience in neuro-developmental disorders. This situation is a ", "bbox": {"l": 136.8, "t": 158.50811999999996, "r": 546.69891, "b": 167.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "conundrum that plagues many families around the world.", "bbox": {"l": 136.8, "t": 170.50793, "r": 387.98224, "b": 179.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Infant motion analysis plays critical importance to understanding and comprehending healthy ", "bbox": {"l": 136.8, "t": 192.52752999999996, "r": 547.31219, "b": 201.74054, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "childhood development. In infants, monitoring their poses provides information about their ", "bbox": {"l": 136.8, "t": 204.52733999999998, "r": 535.15521, "b": 213.74036, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "health that can lead to a better prediction of early developmental risk assessment and ", "bbox": {"l": 136.8, "t": 216.52715999999998, "r": 517.90442, "b": 225.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "diagnosis. ", "bbox": {"l": 136.79999, "t": 228.52697999999998, "r": 184.63986, "b": 237.73999000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Adults use different techniques and methods to express their feelings (like sick, happy, ", "bbox": {"l": 136.79999, "t": 250.48676, "r": 521.8656, "b": 259.69976999999994, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "stressed, or hungry), but this case is usually different for infants who cannot express their ", "bbox": {"l": 136.79997, "t": 262.48657000000003, "r": 533.34436, "b": 271.69957999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "feelings. Based on the baby movements, AI can predict their expression or health.", "bbox": {"l": 136.79997, "t": 274.48639000000003, "r": 499.15466, "b": 283.6994, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "In this use case, we examine how AI-powered video analytics can assist new parents and ", "bbox": {"l": 136.79997, "t": 296.50598, "r": 535.13025, "b": 305.7189599999999, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "hospitals by addressing pose-based real-time body movements of the infants (such as ", "bbox": {"l": 136.79997, "t": 308.5058, "r": 520.1662, "b": 317.71878000000004, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "arching back, head banging, kicking legs, rubbing eyes, stretching, and sucking fingers). ", "bbox": {"l": 136.79997, "t": 320.50562, "r": 529.04352, "b": 329.7186, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "During the initial months of a baby\u2019s life, spontaneous movements might indicate later ", "bbox": {"l": 136.79997, "t": 332.50543, "r": 517.4234, "b": 341.71841, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "developmental disorders, such as cerebral palsy, Rett syndrome, and autism spectrum ", "bbox": {"l": 136.79997, "t": 344.50525, "r": 522.46307, "b": 353.71823, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "disorders.", "bbox": {"l": 136.79997, "t": 356.50507, "r": 180.66779, "b": 365.71804999999995, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Industry challenges", "bbox": {"l": 64.800003, "t": 386.33475, "r": 186.7186, "b": 398.32272, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "There are video surveillance systems that are installed for monitoring an infant\u2019s movement in ", "bbox": {"l": 136.8, "t": 412.48874, "r": 547.20087, "b": 421.70172, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "many hospitals or homes so that any problem can be witnessed and potentially even stopped ", "bbox": {"l": 136.80002, "t": 424.48856, "r": 547.2226, "b": 433.70154, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "before they take place. These systems require much manual work to monitor the real-stream ", "bbox": {"l": 136.80002, "t": 436.48837000000003, "r": 547.25763, "b": 445.70135, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "videos and intervene when a problem is detected. ", "bbox": {"l": 136.80002, "t": 448.48819, "r": 359.689, "b": 457.70117, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "There is a certain amount of trust that you must place on the person who monitors a ", "bbox": {"l": 136.80002, "t": 470.50775, "r": 510.17957, "b": 479.72073, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "surveillance system to ensure that the job is being done effectively and efficiently, and that the ", "bbox": {"l": 136.80002, "t": 482.50757, "r": 547.27753, "b": 491.72055, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "surveillance system is being vigilantly watched. Because of the dependency on these manual ", "bbox": {"l": 136.80002, "t": 494.50739, "r": 547.22272, "b": 503.72037, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "efforts, you need something \u201csmart\u201d that monitors constantly the surveillance system and ", "bbox": {"l": 136.79999, "t": 506.5072, "r": 531.67511, "b": 515.72018, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "detect problems effectively. ", "bbox": {"l": 136.80096, "t": 518.50702, "r": 260.62772, "b": 527.72, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "AI is shaping the controls of surveillance that can map and track occurrences with ", "bbox": {"l": 136.80096, "t": 540.52658, "r": 500.10587, "b": 549.7395799999999, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "self-learning abilities, AI can improve on human operations and analyze video footage in real ", "bbox": {"l": 136.80095, "t": 552.52638, "r": 547.23859, "b": 561.73938, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "time to alert the hospitals or parents if any anomalies are identified.", "bbox": {"l": 136.79994, "t": 564.5261800000001, "r": 433.53322999999995, "b": 573.73918, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Video processing a stream of data from surveillance systems and then performing advance ", "bbox": {"l": 136.79994, "t": 586.54575, "r": 541.76654, "b": 595.75874, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "analytics and detecting anomalies quickly is a significant challenge in the industry.", "bbox": {"l": 136.79993, "t": 598.5455499999999, "r": 499.08203, "b": 607.75854, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Infant motion analytics in real time", "bbox": {"l": 64.800003, "t": 628.37462, "r": 278.44431, "b": 640.36263, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "AI is the current \u201cmarket trend evolution\u201d in video analytics and advancing the ", "bbox": {"l": 136.8, "t": 654.52872, "r": 481.38613999999995, "b": 663.74171, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "decision-making capabilities of the human mind. DL-based computer vision AI techniques are ", "bbox": {"l": 136.8, "t": 666.5285200000001, "r": 547.22571, "b": 675.74152, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "being widely adopted by various industries to solve real-time problems. These techniques ", "bbox": {"l": 136.80002, "t": 678.52833, "r": 534.54663, "b": 687.7413300000001, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "improve the detection and prediction accuracy without increasing the hardware cost ", "bbox": {"l": 136.8, "t": 690.52814, "r": 508.5957599999999, "b": 699.741142, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "exponentially. For users, AI greatly reduces the workload of the monitoring staff and provides ", "bbox": {"l": 136.8, "t": 702.5279459999999, "r": 547.14087, "b": 711.740952, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "benefits by detecting unusual incidents and solving many video forensic problems. ", "bbox": {"l": 136.8, "t": 714.527756, "r": 502.9895, "b": 723.740761, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.11967468261719, "t": 754.4208984375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9230456948280334, "cells": [{"id": 0, "text": "30 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.19580841064453, "t": 754.7359008789062, "r": 267.0744, "b": 764.1449584960938, "coord_origin": "TOPLEFT"}, "confidence": 0.956289529800415, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.292236328125, "t": 70.0931625366211, "r": 542.2594, "b": 105.00391387939453, "coord_origin": "TOPLEFT"}, "confidence": 0.9470060467720032, "cells": [{"id": 2, "text": "Use case 5: AI-powered video analytics on an infant\u2019s motions ", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 542.2594, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "for health prediction", "bbox": {"l": 64.800003, "t": 90.18120999999985, "r": 219.41090000000003, "b": 104.94421, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 136.04208374023438, "t": 121.13082122802734, "r": 546.69891, "b": 179.73699951171875, "coord_origin": "TOPLEFT"}, "confidence": 0.9872261881828308, "cells": [{"id": 4, "text": "Each year, approximately 5 million newborns worldwide are suffering from a ", "bbox": {"l": 136.8, "t": 122.50867000000005, "r": 474.4818399999999, "b": 131.72168, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "neuro-developmental disorder. Due to the lack of early diagnoses and intervention, many ", "bbox": {"l": 136.79999, "t": 134.50847999999996, "r": 532.30072, "b": 143.7215, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "infants are disabled and abandoned, especially in countries with limited numbers of ", "bbox": {"l": 136.8, "t": 146.50829999999996, "r": 506.92267000000004, "b": 155.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "pediatricians with extensive experience in neuro-developmental disorders. This situation is a ", "bbox": {"l": 136.8, "t": 158.50811999999996, "r": 546.69891, "b": 167.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "conundrum that plagues many families around the world.", "bbox": {"l": 136.8, "t": 170.50793, "r": 387.98224, "b": 179.72095000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.93234252929688, "t": 191.948974609375, "r": 547.31219, "b": 238.30877685546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9872615337371826, "cells": [{"id": 9, "text": "Infant motion analysis plays critical importance to understanding and comprehending healthy ", "bbox": {"l": 136.8, "t": 192.52752999999996, "r": 547.31219, "b": 201.74054, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "childhood development. In infants, monitoring their poses provides information about their ", "bbox": {"l": 136.8, "t": 204.52733999999998, "r": 535.15521, "b": 213.74036, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "health that can lead to a better prediction of early developmental risk assessment and ", "bbox": {"l": 136.8, "t": 216.52715999999998, "r": 517.90442, "b": 225.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "diagnosis. ", "bbox": {"l": 136.79999, "t": 228.52697999999998, "r": 184.63986, "b": 237.73999000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.01303100585938, "t": 249.5870361328125, "r": 533.34436, "b": 283.6994, "coord_origin": "TOPLEFT"}, "confidence": 0.9848974347114563, "cells": [{"id": 13, "text": "Adults use different techniques and methods to express their feelings (like sick, happy, ", "bbox": {"l": 136.79999, "t": 250.48676, "r": 521.8656, "b": 259.69976999999994, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "stressed, or hungry), but this case is usually different for infants who cannot express their ", "bbox": {"l": 136.79997, "t": 262.48657000000003, "r": 533.34436, "b": 271.69957999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "feelings. Based on the baby movements, AI can predict their expression or health.", "bbox": {"l": 136.79997, "t": 274.48639000000003, "r": 499.15466, "b": 283.6994, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 135.85812377929688, "t": 295.5922546386719, "r": 535.13025, "b": 365.71804999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9812631607055664, "cells": [{"id": 16, "text": "In this use case, we examine how AI-powered video analytics can assist new parents and ", "bbox": {"l": 136.79997, "t": 296.50598, "r": 535.13025, "b": 305.7189599999999, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "hospitals by addressing pose-based real-time body movements of the infants (such as ", "bbox": {"l": 136.79997, "t": 308.5058, "r": 520.1662, "b": 317.71878000000004, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "arching back, head banging, kicking legs, rubbing eyes, stretching, and sucking fingers). ", "bbox": {"l": 136.79997, "t": 320.50562, "r": 529.04352, "b": 329.7186, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "During the initial months of a baby\u2019s life, spontaneous movements might indicate later ", "bbox": {"l": 136.79997, "t": 332.50543, "r": 517.4234, "b": 341.71841, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "developmental disorders, such as cerebral palsy, Rett syndrome, and autism spectrum ", "bbox": {"l": 136.79997, "t": 344.50525, "r": 522.46307, "b": 353.71823, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "disorders.", "bbox": {"l": 136.79997, "t": 356.50507, "r": 180.66779, "b": 365.71804999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "section_header", "bbox": {"l": 64.58500671386719, "t": 385.20379638671875, "r": 186.7186, "b": 398.5070495605469, "coord_origin": "TOPLEFT"}, "confidence": 0.9640207886695862, "cells": [{"id": 22, "text": "Industry challenges", "bbox": {"l": 64.800003, "t": 386.33475, "r": 186.7186, "b": 398.32272, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 135.78916931152344, "t": 411.3067932128906, "r": 547.25763, "b": 457.70117, "coord_origin": "TOPLEFT"}, "confidence": 0.9876371622085571, "cells": [{"id": 23, "text": "There are video surveillance systems that are installed for monitoring an infant\u2019s movement in ", "bbox": {"l": 136.8, "t": 412.48874, "r": 547.20087, "b": 421.70172, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "many hospitals or homes so that any problem can be witnessed and potentially even stopped ", "bbox": {"l": 136.80002, "t": 424.48856, "r": 547.2226, "b": 433.70154, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "before they take place. These systems require much manual work to monitor the real-stream ", "bbox": {"l": 136.80002, "t": 436.48837000000003, "r": 547.25763, "b": 445.70135, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "videos and intervene when a problem is detected. ", "bbox": {"l": 136.80002, "t": 448.48819, "r": 359.689, "b": 457.70117, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 135.95849609375, "t": 469.4918212890625, "r": 547.27753, "b": 527.93310546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9885361194610596, "cells": [{"id": 27, "text": "There is a certain amount of trust that you must place on the person who monitors a ", "bbox": {"l": 136.80002, "t": 470.50775, "r": 510.17957, "b": 479.72073, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "surveillance system to ensure that the job is being done effectively and efficiently, and that the ", "bbox": {"l": 136.80002, "t": 482.50757, "r": 547.27753, "b": 491.72055, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "surveillance system is being vigilantly watched. Because of the dependency on these manual ", "bbox": {"l": 136.80002, "t": 494.50739, "r": 547.22272, "b": 503.72037, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "efforts, you need something \u201csmart\u201d that monitors constantly the surveillance system and ", "bbox": {"l": 136.79999, "t": 506.5072, "r": 531.67511, "b": 515.72018, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "detect problems effectively. ", "bbox": {"l": 136.80096, "t": 518.50702, "r": 260.62772, "b": 527.72, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 135.81661987304688, "t": 540.0313110351562, "r": 547.23859, "b": 573.9750366210938, "coord_origin": "TOPLEFT"}, "confidence": 0.9842253923416138, "cells": [{"id": 32, "text": "AI is shaping the controls of surveillance that can map and track occurrences with ", "bbox": {"l": 136.80096, "t": 540.52658, "r": 500.10587, "b": 549.7395799999999, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "self-learning abilities, AI can improve on human operations and analyze video footage in real ", "bbox": {"l": 136.80095, "t": 552.52638, "r": 547.23859, "b": 561.73938, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "time to alert the hospitals or parents if any anomalies are identified.", "bbox": {"l": 136.79994, "t": 564.5261800000001, "r": 433.53322999999995, "b": 573.73918, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 136.16104125976562, "t": 586.1128540039062, "r": 541.76654, "b": 608.531982421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9799899458885193, "cells": [{"id": 35, "text": "Video processing a stream of data from surveillance systems and then performing advance ", "bbox": {"l": 136.79994, "t": 586.54575, "r": 541.76654, "b": 595.75874, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "analytics and detecting anomalies quickly is a significant challenge in the industry.", "bbox": {"l": 136.79993, "t": 598.5455499999999, "r": 499.08203, "b": 607.75854, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "section_header", "bbox": {"l": 64.49705505371094, "t": 627.67138671875, "r": 278.44431, "b": 641.0259399414062, "coord_origin": "TOPLEFT"}, "confidence": 0.961360514163971, "cells": [{"id": 37, "text": "Infant motion analytics in real time", "bbox": {"l": 64.800003, "t": 628.37462, "r": 278.44431, "b": 640.36263, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 135.9631805419922, "t": 654.0413208007812, "r": 547.22571, "b": 724.17529296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9874605536460876, "cells": [{"id": 38, "text": "AI is the current \u201cmarket trend evolution\u201d in video analytics and advancing the ", "bbox": {"l": 136.8, "t": 654.52872, "r": 481.38613999999995, "b": 663.74171, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "decision-making capabilities of the human mind. DL-based computer vision AI techniques are ", "bbox": {"l": 136.8, "t": 666.5285200000001, "r": 547.22571, "b": 675.74152, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "being widely adopted by various industries to solve real-time problems. These techniques ", "bbox": {"l": 136.80002, "t": 678.52833, "r": 534.54663, "b": 687.7413300000001, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "improve the detection and prediction accuracy without increasing the hardware cost ", "bbox": {"l": 136.8, "t": 690.52814, "r": 508.5957599999999, "b": 699.741142, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "exponentially. For users, AI greatly reduces the workload of the monitoring staff and provides ", "bbox": {"l": 136.8, "t": 702.5279459999999, "r": 547.14087, "b": 711.740952, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "benefits by detecting unusual incidents and solving many video forensic problems. ", "bbox": {"l": 136.8, "t": 714.527756, "r": 502.9895, "b": 723.740761, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 31, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.11967468261719, "t": 754.4208984375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9230456948280334, "cells": [{"id": 0, "text": "30 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "30"}, {"label": "page_footer", "id": 1, "page_no": 31, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.19580841064453, "t": 754.7359008789062, "r": 267.0744, "b": 764.1449584960938, "coord_origin": "TOPLEFT"}, "confidence": 0.956289529800415, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"label": "section_header", "id": 2, "page_no": 31, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.292236328125, "t": 70.0931625366211, "r": 542.2594, "b": 105.00391387939453, "coord_origin": "TOPLEFT"}, "confidence": 0.9470060467720032, "cells": [{"id": 2, "text": "Use case 5: AI-powered video analytics on an infant\u2019s motions ", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 542.2594, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "for health prediction", "bbox": {"l": 64.800003, "t": 90.18120999999985, "r": 219.41090000000003, "b": 104.94421, "coord_origin": "TOPLEFT"}}]}, "text": "Use case 5: AI-powered video analytics on an infant\u2019s motions for health prediction"}, {"label": "text", "id": 3, "page_no": 31, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.04208374023438, "t": 121.13082122802734, "r": 546.69891, "b": 179.73699951171875, "coord_origin": "TOPLEFT"}, "confidence": 0.9872261881828308, "cells": [{"id": 4, "text": "Each year, approximately 5 million newborns worldwide are suffering from a ", "bbox": {"l": 136.8, "t": 122.50867000000005, "r": 474.4818399999999, "b": 131.72168, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "neuro-developmental disorder. Due to the lack of early diagnoses and intervention, many ", "bbox": {"l": 136.79999, "t": 134.50847999999996, "r": 532.30072, "b": 143.7215, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "infants are disabled and abandoned, especially in countries with limited numbers of ", "bbox": {"l": 136.8, "t": 146.50829999999996, "r": 506.92267000000004, "b": 155.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "pediatricians with extensive experience in neuro-developmental disorders. This situation is a ", "bbox": {"l": 136.8, "t": 158.50811999999996, "r": 546.69891, "b": 167.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "conundrum that plagues many families around the world.", "bbox": {"l": 136.8, "t": 170.50793, "r": 387.98224, "b": 179.72095000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Each year, approximately 5 million newborns worldwide are suffering from a neuro-developmental disorder. Due to the lack of early diagnoses and intervention, many infants are disabled and abandoned, especially in countries with limited numbers of pediatricians with extensive experience in neuro-developmental disorders. This situation is a conundrum that plagues many families around the world."}, {"label": "text", "id": 4, "page_no": 31, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.93234252929688, "t": 191.948974609375, "r": 547.31219, "b": 238.30877685546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9872615337371826, "cells": [{"id": 9, "text": "Infant motion analysis plays critical importance to understanding and comprehending healthy ", "bbox": {"l": 136.8, "t": 192.52752999999996, "r": 547.31219, "b": 201.74054, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "childhood development. In infants, monitoring their poses provides information about their ", "bbox": {"l": 136.8, "t": 204.52733999999998, "r": 535.15521, "b": 213.74036, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "health that can lead to a better prediction of early developmental risk assessment and ", "bbox": {"l": 136.8, "t": 216.52715999999998, "r": 517.90442, "b": 225.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "diagnosis. ", "bbox": {"l": 136.79999, "t": 228.52697999999998, "r": 184.63986, "b": 237.73999000000003, "coord_origin": "TOPLEFT"}}]}, "text": "Infant motion analysis plays critical importance to understanding and comprehending healthy childhood development. In infants, monitoring their poses provides information about their health that can lead to a better prediction of early developmental risk assessment and diagnosis."}, {"label": "text", "id": 5, "page_no": 31, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.01303100585938, "t": 249.5870361328125, "r": 533.34436, "b": 283.6994, "coord_origin": "TOPLEFT"}, "confidence": 0.9848974347114563, "cells": [{"id": 13, "text": "Adults use different techniques and methods to express their feelings (like sick, happy, ", "bbox": {"l": 136.79999, "t": 250.48676, "r": 521.8656, "b": 259.69976999999994, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "stressed, or hungry), but this case is usually different for infants who cannot express their ", "bbox": {"l": 136.79997, "t": 262.48657000000003, "r": 533.34436, "b": 271.69957999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "feelings. Based on the baby movements, AI can predict their expression or health.", "bbox": {"l": 136.79997, "t": 274.48639000000003, "r": 499.15466, "b": 283.6994, "coord_origin": "TOPLEFT"}}]}, "text": "Adults use different techniques and methods to express their feelings (like sick, happy, stressed, or hungry), but this case is usually different for infants who cannot express their feelings. Based on the baby movements, AI can predict their expression or health."}, {"label": "text", "id": 6, "page_no": 31, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.85812377929688, "t": 295.5922546386719, "r": 535.13025, "b": 365.71804999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9812631607055664, "cells": [{"id": 16, "text": "In this use case, we examine how AI-powered video analytics can assist new parents and ", "bbox": {"l": 136.79997, "t": 296.50598, "r": 535.13025, "b": 305.7189599999999, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "hospitals by addressing pose-based real-time body movements of the infants (such as ", "bbox": {"l": 136.79997, "t": 308.5058, "r": 520.1662, "b": 317.71878000000004, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "arching back, head banging, kicking legs, rubbing eyes, stretching, and sucking fingers). ", "bbox": {"l": 136.79997, "t": 320.50562, "r": 529.04352, "b": 329.7186, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "During the initial months of a baby\u2019s life, spontaneous movements might indicate later ", "bbox": {"l": 136.79997, "t": 332.50543, "r": 517.4234, "b": 341.71841, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "developmental disorders, such as cerebral palsy, Rett syndrome, and autism spectrum ", "bbox": {"l": 136.79997, "t": 344.50525, "r": 522.46307, "b": 353.71823, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "disorders.", "bbox": {"l": 136.79997, "t": 356.50507, "r": 180.66779, "b": 365.71804999999995, "coord_origin": "TOPLEFT"}}]}, "text": "In this use case, we examine how AI-powered video analytics can assist new parents and hospitals by addressing pose-based real-time body movements of the infants (such as arching back, head banging, kicking legs, rubbing eyes, stretching, and sucking fingers). During the initial months of a baby\u2019s life, spontaneous movements might indicate later developmental disorders, such as cerebral palsy, Rett syndrome, and autism spectrum disorders."}, {"label": "section_header", "id": 7, "page_no": 31, "cluster": {"id": 7, "label": "section_header", "bbox": {"l": 64.58500671386719, "t": 385.20379638671875, "r": 186.7186, "b": 398.5070495605469, "coord_origin": "TOPLEFT"}, "confidence": 0.9640207886695862, "cells": [{"id": 22, "text": "Industry challenges", "bbox": {"l": 64.800003, "t": 386.33475, "r": 186.7186, "b": 398.32272, "coord_origin": "TOPLEFT"}}]}, "text": "Industry challenges"}, {"label": "text", "id": 8, "page_no": 31, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.78916931152344, "t": 411.3067932128906, "r": 547.25763, "b": 457.70117, "coord_origin": "TOPLEFT"}, "confidence": 0.9876371622085571, "cells": [{"id": 23, "text": "There are video surveillance systems that are installed for monitoring an infant\u2019s movement in ", "bbox": {"l": 136.8, "t": 412.48874, "r": 547.20087, "b": 421.70172, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "many hospitals or homes so that any problem can be witnessed and potentially even stopped ", "bbox": {"l": 136.80002, "t": 424.48856, "r": 547.2226, "b": 433.70154, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "before they take place. These systems require much manual work to monitor the real-stream ", "bbox": {"l": 136.80002, "t": 436.48837000000003, "r": 547.25763, "b": 445.70135, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "videos and intervene when a problem is detected. ", "bbox": {"l": 136.80002, "t": 448.48819, "r": 359.689, "b": 457.70117, "coord_origin": "TOPLEFT"}}]}, "text": "There are video surveillance systems that are installed for monitoring an infant\u2019s movement in many hospitals or homes so that any problem can be witnessed and potentially even stopped before they take place. These systems require much manual work to monitor the real-stream videos and intervene when a problem is detected."}, {"label": "text", "id": 9, "page_no": 31, "cluster": {"id": 9, "label": "text", "bbox": {"l": 135.95849609375, "t": 469.4918212890625, "r": 547.27753, "b": 527.93310546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9885361194610596, "cells": [{"id": 27, "text": "There is a certain amount of trust that you must place on the person who monitors a ", "bbox": {"l": 136.80002, "t": 470.50775, "r": 510.17957, "b": 479.72073, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "surveillance system to ensure that the job is being done effectively and efficiently, and that the ", "bbox": {"l": 136.80002, "t": 482.50757, "r": 547.27753, "b": 491.72055, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "surveillance system is being vigilantly watched. Because of the dependency on these manual ", "bbox": {"l": 136.80002, "t": 494.50739, "r": 547.22272, "b": 503.72037, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "efforts, you need something \u201csmart\u201d that monitors constantly the surveillance system and ", "bbox": {"l": 136.79999, "t": 506.5072, "r": 531.67511, "b": 515.72018, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "detect problems effectively. ", "bbox": {"l": 136.80096, "t": 518.50702, "r": 260.62772, "b": 527.72, "coord_origin": "TOPLEFT"}}]}, "text": "There is a certain amount of trust that you must place on the person who monitors a surveillance system to ensure that the job is being done effectively and efficiently, and that the surveillance system is being vigilantly watched. Because of the dependency on these manual efforts, you need something \u201csmart\u201d that monitors constantly the surveillance system and detect problems effectively."}, {"label": "text", "id": 10, "page_no": 31, "cluster": {"id": 10, "label": "text", "bbox": {"l": 135.81661987304688, "t": 540.0313110351562, "r": 547.23859, "b": 573.9750366210938, "coord_origin": "TOPLEFT"}, "confidence": 0.9842253923416138, "cells": [{"id": 32, "text": "AI is shaping the controls of surveillance that can map and track occurrences with ", "bbox": {"l": 136.80096, "t": 540.52658, "r": 500.10587, "b": 549.7395799999999, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "self-learning abilities, AI can improve on human operations and analyze video footage in real ", "bbox": {"l": 136.80095, "t": 552.52638, "r": 547.23859, "b": 561.73938, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "time to alert the hospitals or parents if any anomalies are identified.", "bbox": {"l": 136.79994, "t": 564.5261800000001, "r": 433.53322999999995, "b": 573.73918, "coord_origin": "TOPLEFT"}}]}, "text": "AI is shaping the controls of surveillance that can map and track occurrences with self-learning abilities, AI can improve on human operations and analyze video footage in real time to alert the hospitals or parents if any anomalies are identified."}, {"label": "text", "id": 11, "page_no": 31, "cluster": {"id": 11, "label": "text", "bbox": {"l": 136.16104125976562, "t": 586.1128540039062, "r": 541.76654, "b": 608.531982421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9799899458885193, "cells": [{"id": 35, "text": "Video processing a stream of data from surveillance systems and then performing advance ", "bbox": {"l": 136.79994, "t": 586.54575, "r": 541.76654, "b": 595.75874, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "analytics and detecting anomalies quickly is a significant challenge in the industry.", "bbox": {"l": 136.79993, "t": 598.5455499999999, "r": 499.08203, "b": 607.75854, "coord_origin": "TOPLEFT"}}]}, "text": "Video processing a stream of data from surveillance systems and then performing advance analytics and detecting anomalies quickly is a significant challenge in the industry."}, {"label": "section_header", "id": 12, "page_no": 31, "cluster": {"id": 12, "label": "section_header", "bbox": {"l": 64.49705505371094, "t": 627.67138671875, "r": 278.44431, "b": 641.0259399414062, "coord_origin": "TOPLEFT"}, "confidence": 0.961360514163971, "cells": [{"id": 37, "text": "Infant motion analytics in real time", "bbox": {"l": 64.800003, "t": 628.37462, "r": 278.44431, "b": 640.36263, "coord_origin": "TOPLEFT"}}]}, "text": "Infant motion analytics in real time"}, {"label": "text", "id": 13, "page_no": 31, "cluster": {"id": 13, "label": "text", "bbox": {"l": 135.9631805419922, "t": 654.0413208007812, "r": 547.22571, "b": 724.17529296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9874605536460876, "cells": [{"id": 38, "text": "AI is the current \u201cmarket trend evolution\u201d in video analytics and advancing the ", "bbox": {"l": 136.8, "t": 654.52872, "r": 481.38613999999995, "b": 663.74171, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "decision-making capabilities of the human mind. DL-based computer vision AI techniques are ", "bbox": {"l": 136.8, "t": 666.5285200000001, "r": 547.22571, "b": 675.74152, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "being widely adopted by various industries to solve real-time problems. These techniques ", "bbox": {"l": 136.80002, "t": 678.52833, "r": 534.54663, "b": 687.7413300000001, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "improve the detection and prediction accuracy without increasing the hardware cost ", "bbox": {"l": 136.8, "t": 690.52814, "r": 508.5957599999999, "b": 699.741142, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "exponentially. For users, AI greatly reduces the workload of the monitoring staff and provides ", "bbox": {"l": 136.8, "t": 702.5279459999999, "r": 547.14087, "b": 711.740952, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "benefits by detecting unusual incidents and solving many video forensic problems. ", "bbox": {"l": 136.8, "t": 714.527756, "r": 502.9895, "b": 723.740761, "coord_origin": "TOPLEFT"}}]}, "text": "AI is the current \u201cmarket trend evolution\u201d in video analytics and advancing the decision-making capabilities of the human mind. DL-based computer vision AI techniques are being widely adopted by various industries to solve real-time problems. These techniques improve the detection and prediction accuracy without increasing the hardware cost exponentially. For users, AI greatly reduces the workload of the monitoring staff and provides benefits by detecting unusual incidents and solving many video forensic problems."}], "body": [{"label": "section_header", "id": 2, "page_no": 31, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.292236328125, "t": 70.0931625366211, "r": 542.2594, "b": 105.00391387939453, "coord_origin": "TOPLEFT"}, "confidence": 0.9470060467720032, "cells": [{"id": 2, "text": "Use case 5: AI-powered video analytics on an infant\u2019s motions ", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 542.2594, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "for health prediction", "bbox": {"l": 64.800003, "t": 90.18120999999985, "r": 219.41090000000003, "b": 104.94421, "coord_origin": "TOPLEFT"}}]}, "text": "Use case 5: AI-powered video analytics on an infant\u2019s motions for health prediction"}, {"label": "text", "id": 3, "page_no": 31, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.04208374023438, "t": 121.13082122802734, "r": 546.69891, "b": 179.73699951171875, "coord_origin": "TOPLEFT"}, "confidence": 0.9872261881828308, "cells": [{"id": 4, "text": "Each year, approximately 5 million newborns worldwide are suffering from a ", "bbox": {"l": 136.8, "t": 122.50867000000005, "r": 474.4818399999999, "b": 131.72168, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "neuro-developmental disorder. Due to the lack of early diagnoses and intervention, many ", "bbox": {"l": 136.79999, "t": 134.50847999999996, "r": 532.30072, "b": 143.7215, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "infants are disabled and abandoned, especially in countries with limited numbers of ", "bbox": {"l": 136.8, "t": 146.50829999999996, "r": 506.92267000000004, "b": 155.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "pediatricians with extensive experience in neuro-developmental disorders. This situation is a ", "bbox": {"l": 136.8, "t": 158.50811999999996, "r": 546.69891, "b": 167.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "conundrum that plagues many families around the world.", "bbox": {"l": 136.8, "t": 170.50793, "r": 387.98224, "b": 179.72095000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Each year, approximately 5 million newborns worldwide are suffering from a neuro-developmental disorder. Due to the lack of early diagnoses and intervention, many infants are disabled and abandoned, especially in countries with limited numbers of pediatricians with extensive experience in neuro-developmental disorders. This situation is a conundrum that plagues many families around the world."}, {"label": "text", "id": 4, "page_no": 31, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.93234252929688, "t": 191.948974609375, "r": 547.31219, "b": 238.30877685546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9872615337371826, "cells": [{"id": 9, "text": "Infant motion analysis plays critical importance to understanding and comprehending healthy ", "bbox": {"l": 136.8, "t": 192.52752999999996, "r": 547.31219, "b": 201.74054, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "childhood development. In infants, monitoring their poses provides information about their ", "bbox": {"l": 136.8, "t": 204.52733999999998, "r": 535.15521, "b": 213.74036, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "health that can lead to a better prediction of early developmental risk assessment and ", "bbox": {"l": 136.8, "t": 216.52715999999998, "r": 517.90442, "b": 225.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "diagnosis. ", "bbox": {"l": 136.79999, "t": 228.52697999999998, "r": 184.63986, "b": 237.73999000000003, "coord_origin": "TOPLEFT"}}]}, "text": "Infant motion analysis plays critical importance to understanding and comprehending healthy childhood development. In infants, monitoring their poses provides information about their health that can lead to a better prediction of early developmental risk assessment and diagnosis."}, {"label": "text", "id": 5, "page_no": 31, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.01303100585938, "t": 249.5870361328125, "r": 533.34436, "b": 283.6994, "coord_origin": "TOPLEFT"}, "confidence": 0.9848974347114563, "cells": [{"id": 13, "text": "Adults use different techniques and methods to express their feelings (like sick, happy, ", "bbox": {"l": 136.79999, "t": 250.48676, "r": 521.8656, "b": 259.69976999999994, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "stressed, or hungry), but this case is usually different for infants who cannot express their ", "bbox": {"l": 136.79997, "t": 262.48657000000003, "r": 533.34436, "b": 271.69957999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "feelings. Based on the baby movements, AI can predict their expression or health.", "bbox": {"l": 136.79997, "t": 274.48639000000003, "r": 499.15466, "b": 283.6994, "coord_origin": "TOPLEFT"}}]}, "text": "Adults use different techniques and methods to express their feelings (like sick, happy, stressed, or hungry), but this case is usually different for infants who cannot express their feelings. Based on the baby movements, AI can predict their expression or health."}, {"label": "text", "id": 6, "page_no": 31, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.85812377929688, "t": 295.5922546386719, "r": 535.13025, "b": 365.71804999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9812631607055664, "cells": [{"id": 16, "text": "In this use case, we examine how AI-powered video analytics can assist new parents and ", "bbox": {"l": 136.79997, "t": 296.50598, "r": 535.13025, "b": 305.7189599999999, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "hospitals by addressing pose-based real-time body movements of the infants (such as ", "bbox": {"l": 136.79997, "t": 308.5058, "r": 520.1662, "b": 317.71878000000004, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "arching back, head banging, kicking legs, rubbing eyes, stretching, and sucking fingers). ", "bbox": {"l": 136.79997, "t": 320.50562, "r": 529.04352, "b": 329.7186, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "During the initial months of a baby\u2019s life, spontaneous movements might indicate later ", "bbox": {"l": 136.79997, "t": 332.50543, "r": 517.4234, "b": 341.71841, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "developmental disorders, such as cerebral palsy, Rett syndrome, and autism spectrum ", "bbox": {"l": 136.79997, "t": 344.50525, "r": 522.46307, "b": 353.71823, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "disorders.", "bbox": {"l": 136.79997, "t": 356.50507, "r": 180.66779, "b": 365.71804999999995, "coord_origin": "TOPLEFT"}}]}, "text": "In this use case, we examine how AI-powered video analytics can assist new parents and hospitals by addressing pose-based real-time body movements of the infants (such as arching back, head banging, kicking legs, rubbing eyes, stretching, and sucking fingers). During the initial months of a baby\u2019s life, spontaneous movements might indicate later developmental disorders, such as cerebral palsy, Rett syndrome, and autism spectrum disorders."}, {"label": "section_header", "id": 7, "page_no": 31, "cluster": {"id": 7, "label": "section_header", "bbox": {"l": 64.58500671386719, "t": 385.20379638671875, "r": 186.7186, "b": 398.5070495605469, "coord_origin": "TOPLEFT"}, "confidence": 0.9640207886695862, "cells": [{"id": 22, "text": "Industry challenges", "bbox": {"l": 64.800003, "t": 386.33475, "r": 186.7186, "b": 398.32272, "coord_origin": "TOPLEFT"}}]}, "text": "Industry challenges"}, {"label": "text", "id": 8, "page_no": 31, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.78916931152344, "t": 411.3067932128906, "r": 547.25763, "b": 457.70117, "coord_origin": "TOPLEFT"}, "confidence": 0.9876371622085571, "cells": [{"id": 23, "text": "There are video surveillance systems that are installed for monitoring an infant\u2019s movement in ", "bbox": {"l": 136.8, "t": 412.48874, "r": 547.20087, "b": 421.70172, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "many hospitals or homes so that any problem can be witnessed and potentially even stopped ", "bbox": {"l": 136.80002, "t": 424.48856, "r": 547.2226, "b": 433.70154, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "before they take place. These systems require much manual work to monitor the real-stream ", "bbox": {"l": 136.80002, "t": 436.48837000000003, "r": 547.25763, "b": 445.70135, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "videos and intervene when a problem is detected. ", "bbox": {"l": 136.80002, "t": 448.48819, "r": 359.689, "b": 457.70117, "coord_origin": "TOPLEFT"}}]}, "text": "There are video surveillance systems that are installed for monitoring an infant\u2019s movement in many hospitals or homes so that any problem can be witnessed and potentially even stopped before they take place. These systems require much manual work to monitor the real-stream videos and intervene when a problem is detected."}, {"label": "text", "id": 9, "page_no": 31, "cluster": {"id": 9, "label": "text", "bbox": {"l": 135.95849609375, "t": 469.4918212890625, "r": 547.27753, "b": 527.93310546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9885361194610596, "cells": [{"id": 27, "text": "There is a certain amount of trust that you must place on the person who monitors a ", "bbox": {"l": 136.80002, "t": 470.50775, "r": 510.17957, "b": 479.72073, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "surveillance system to ensure that the job is being done effectively and efficiently, and that the ", "bbox": {"l": 136.80002, "t": 482.50757, "r": 547.27753, "b": 491.72055, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "surveillance system is being vigilantly watched. Because of the dependency on these manual ", "bbox": {"l": 136.80002, "t": 494.50739, "r": 547.22272, "b": 503.72037, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "efforts, you need something \u201csmart\u201d that monitors constantly the surveillance system and ", "bbox": {"l": 136.79999, "t": 506.5072, "r": 531.67511, "b": 515.72018, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "detect problems effectively. ", "bbox": {"l": 136.80096, "t": 518.50702, "r": 260.62772, "b": 527.72, "coord_origin": "TOPLEFT"}}]}, "text": "There is a certain amount of trust that you must place on the person who monitors a surveillance system to ensure that the job is being done effectively and efficiently, and that the surveillance system is being vigilantly watched. Because of the dependency on these manual efforts, you need something \u201csmart\u201d that monitors constantly the surveillance system and detect problems effectively."}, {"label": "text", "id": 10, "page_no": 31, "cluster": {"id": 10, "label": "text", "bbox": {"l": 135.81661987304688, "t": 540.0313110351562, "r": 547.23859, "b": 573.9750366210938, "coord_origin": "TOPLEFT"}, "confidence": 0.9842253923416138, "cells": [{"id": 32, "text": "AI is shaping the controls of surveillance that can map and track occurrences with ", "bbox": {"l": 136.80096, "t": 540.52658, "r": 500.10587, "b": 549.7395799999999, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "self-learning abilities, AI can improve on human operations and analyze video footage in real ", "bbox": {"l": 136.80095, "t": 552.52638, "r": 547.23859, "b": 561.73938, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "time to alert the hospitals or parents if any anomalies are identified.", "bbox": {"l": 136.79994, "t": 564.5261800000001, "r": 433.53322999999995, "b": 573.73918, "coord_origin": "TOPLEFT"}}]}, "text": "AI is shaping the controls of surveillance that can map and track occurrences with self-learning abilities, AI can improve on human operations and analyze video footage in real time to alert the hospitals or parents if any anomalies are identified."}, {"label": "text", "id": 11, "page_no": 31, "cluster": {"id": 11, "label": "text", "bbox": {"l": 136.16104125976562, "t": 586.1128540039062, "r": 541.76654, "b": 608.531982421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9799899458885193, "cells": [{"id": 35, "text": "Video processing a stream of data from surveillance systems and then performing advance ", "bbox": {"l": 136.79994, "t": 586.54575, "r": 541.76654, "b": 595.75874, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "analytics and detecting anomalies quickly is a significant challenge in the industry.", "bbox": {"l": 136.79993, "t": 598.5455499999999, "r": 499.08203, "b": 607.75854, "coord_origin": "TOPLEFT"}}]}, "text": "Video processing a stream of data from surveillance systems and then performing advance analytics and detecting anomalies quickly is a significant challenge in the industry."}, {"label": "section_header", "id": 12, "page_no": 31, "cluster": {"id": 12, "label": "section_header", "bbox": {"l": 64.49705505371094, "t": 627.67138671875, "r": 278.44431, "b": 641.0259399414062, "coord_origin": "TOPLEFT"}, "confidence": 0.961360514163971, "cells": [{"id": 37, "text": "Infant motion analytics in real time", "bbox": {"l": 64.800003, "t": 628.37462, "r": 278.44431, "b": 640.36263, "coord_origin": "TOPLEFT"}}]}, "text": "Infant motion analytics in real time"}, {"label": "text", "id": 13, "page_no": 31, "cluster": {"id": 13, "label": "text", "bbox": {"l": 135.9631805419922, "t": 654.0413208007812, "r": 547.22571, "b": 724.17529296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9874605536460876, "cells": [{"id": 38, "text": "AI is the current \u201cmarket trend evolution\u201d in video analytics and advancing the ", "bbox": {"l": 136.8, "t": 654.52872, "r": 481.38613999999995, "b": 663.74171, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "decision-making capabilities of the human mind. DL-based computer vision AI techniques are ", "bbox": {"l": 136.8, "t": 666.5285200000001, "r": 547.22571, "b": 675.74152, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "being widely adopted by various industries to solve real-time problems. These techniques ", "bbox": {"l": 136.80002, "t": 678.52833, "r": 534.54663, "b": 687.7413300000001, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "improve the detection and prediction accuracy without increasing the hardware cost ", "bbox": {"l": 136.8, "t": 690.52814, "r": 508.5957599999999, "b": 699.741142, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "exponentially. For users, AI greatly reduces the workload of the monitoring staff and provides ", "bbox": {"l": 136.8, "t": 702.5279459999999, "r": 547.14087, "b": 711.740952, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "benefits by detecting unusual incidents and solving many video forensic problems. ", "bbox": {"l": 136.8, "t": 714.527756, "r": 502.9895, "b": 723.740761, "coord_origin": "TOPLEFT"}}]}, "text": "AI is the current \u201cmarket trend evolution\u201d in video analytics and advancing the decision-making capabilities of the human mind. DL-based computer vision AI techniques are being widely adopted by various industries to solve real-time problems. These techniques improve the detection and prediction accuracy without increasing the hardware cost exponentially. For users, AI greatly reduces the workload of the monitoring staff and provides benefits by detecting unusual incidents and solving many video forensic problems."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 31, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.11967468261719, "t": 754.4208984375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9230456948280334, "cells": [{"id": 0, "text": "30 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "30"}, {"label": "page_footer", "id": 1, "page_no": 31, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.19580841064453, "t": 754.7359008789062, "r": 267.0744, "b": 764.1449584960938, "coord_origin": "TOPLEFT"}, "confidence": 0.956289529800415, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}]}}, {"page_no": 32, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "31", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "CP4D was used to build and deploy the AI-powered video analytics on infant\u2019s motion for ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 532.08209, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "health prediction use case on IBM Z. IBM Z with AI accelerator enables faster inference for ", "bbox": {"l": 136.79961, "t": 83.50885000000017, "r": 540.15765, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "detecting face and body movements and performing angle analytics in real time.", "bbox": {"l": 136.79961, "t": 95.50867000000005, "r": 490.71939, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 24 shows an architectural diagram about how to design and develop an AI model for ", "bbox": {"l": 136.79961, "t": 117.52826000000005, "r": 542.94446, "b": 126.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "real-time body pose detection on IBM Z. A deep convolutional neural network architecture ", "bbox": {"l": 136.79961, "t": 129.52808000000005, "r": 535.71661, "b": 138.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "was trained on the task of infant pose estimation on the custom data set by leveraging IBM ", "bbox": {"l": 136.79961, "t": 141.52788999999996, "r": 540.21545, "b": 150.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Cloud Pak for Data. ", "bbox": {"l": 136.79961, "t": 153.52770999999996, "r": 226.73041, "b": 162.74072, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "S", "bbox": {"l": 64.799759, "t": 168.52747, "r": 71.443077, "b": 177.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Figure 24 Architecture for AI-powered video analytics", "bbox": {"l": 64.800003, "t": 414.0779999999999, "r": 281.03314, "b": 422.40302, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Live camera feeds or recorded videos of an infant\u2019s movement are the inputs for a pose ", "bbox": {"l": 136.8, "t": 436.06873, "r": 526.35754, "b": 445.28171, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "detection model. This video streaming data was stored in IBM Cloudfi Object Storage for ", "bbox": {"l": 136.8, "t": 448.06854, "r": 532.50073, "b": 457.28152, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "image processing. Video data must be transformed into frames so that the infant\u2019s body ", "bbox": {"l": 136.8, "t": 460.06836, "r": 526.34558, "b": 469.28134, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "poses can be detected. These post-estimation components of the pipeline predict the location ", "bbox": {"l": 136.8, "t": 472.06818, "r": 547.29852, "b": 481.28116, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "of all 17-person key points with 3 degrees of freedom each (x, y location and visibility) plus ", "bbox": {"l": 136.8, "t": 484.06799, "r": 538.93793, "b": 493.28098, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "two virtual alignment key points. This approach also embraces a compute-intensive heat map ", "bbox": {"l": 136.8, "t": 496.06781, "r": 547.31128, "b": 505.28079, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "prediction of infant body posture. ", "bbox": {"l": 136.8, "t": 508.06763, "r": 284.59744, "b": 517.28061, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "When changes in body posture or movement happen, analytics can be performed, and a ", "bbox": {"l": 136.8, "t": 530.0274400000001, "r": 530.72687, "b": 539.2404300000001, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "threshold can be set for the angle of the body and posture movements. An analysis can be ", "bbox": {"l": 136.8, "t": 542.02724, "r": 539.72699, "b": 551.24023, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "performed on movement that is based on that threshold to help to predict an infant\u2019s health ", "bbox": {"l": 136.8, "t": 554.0270399999999, "r": 539.91718, "b": 563.24004, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "index in the output video stream by leveraging the IBM z16 on-chip AI acceleration, which ", "bbox": {"l": 136.8, "t": 566.02684, "r": 535.18512, "b": 575.23984, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "provides an execution speed in real time on an edge device, which cannot be achieved by ", "bbox": {"l": 136.8, "t": 578.0266399999999, "r": 536.80255, "b": 587.23964, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "other means.", "bbox": {"l": 136.79901, "t": 590.0264400000001, "r": 195.10583, "b": 599.2394400000001, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "We can leverage the following AI technology stack for this use case:", "bbox": {"l": 136.79901, "t": 612.04601, "r": 437.9595299999999, "b": 621.259, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "GLYPH", "bbox": {"l": 136.79901, "t": 629.17522, "r": 141.77901, "b": 637.94997, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Convolutional neural network: Build an artificial neural network model on video streaming ", "bbox": {"l": 151.19917, "t": 629.0258200000001, "r": 546.68695, "b": 638.23882, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "and images.", "bbox": {"l": 151.19917, "t": 641.02562, "r": 205.66942, "b": 650.23862, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "GLYPH", "bbox": {"l": 136.79901, "t": 658.2145800000001, "r": 141.77901, "b": 666.98934, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "TensorFlow: A DL back-end framework that is based on TensorFlow.", "bbox": {"l": 151.19917, "t": 658.06519, "r": 455.6933, "b": 667.27818, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "GLYPH", "bbox": {"l": 136.79901, "t": 675.1944, "r": 141.77901, "b": 683.96915, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Mediapipe: A library that helps with video streaming processing and prediction of human ", "bbox": {"l": 151.19917, "t": 675.04499, "r": 543.45294, "b": 684.258, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "pose estimation.", "bbox": {"l": 151.19917, "t": 687.0448, "r": 223.97094999999996, "b": 696.257805, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "GLYPH", "bbox": {"l": 136.79901, "t": 704.174011, "r": 141.77901, "b": 712.948769, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "OpenCV: A real-time computer vision library that helps perform image processing. ", "bbox": {"l": 151.19917, "t": 704.024605, "r": 516.33087, "b": 713.23761, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 535.5228881835938, "t": 754.3223266601562, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9154198169708252, "cells": [{"id": 0, "text": "31", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "text", "bbox": {"l": 135.8349609375, "t": 70.61254119873047, "r": 540.15765, "b": 104.76904296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9836795926094055, "cells": [{"id": 1, "text": "CP4D was used to build and deploy the AI-powered video analytics on infant\u2019s motion for ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 532.08209, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "health prediction use case on IBM Z. IBM Z with AI accelerator enables faster inference for ", "bbox": {"l": 136.79961, "t": 83.50885000000017, "r": 540.15765, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "detecting face and body movements and performing angle analytics in real time.", "bbox": {"l": 136.79961, "t": 95.50867000000005, "r": 490.71939, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 136.0093536376953, "t": 116.78787994384766, "r": 542.94446, "b": 162.74072, "coord_origin": "TOPLEFT"}, "confidence": 0.9831726551055908, "cells": [{"id": 4, "text": "Figure 24 shows an architectural diagram about how to design and develop an AI model for ", "bbox": {"l": 136.79961, "t": 117.52826000000005, "r": 542.94446, "b": 126.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "real-time body pose detection on IBM Z. A deep convolutional neural network architecture ", "bbox": {"l": 136.79961, "t": 129.52808000000005, "r": 535.71661, "b": 138.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "was trained on the task of infant pose estimation on the custom data set by leveraging IBM ", "bbox": {"l": 136.79961, "t": 141.52788999999996, "r": 540.21545, "b": 150.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Cloud Pak for Data. ", "bbox": {"l": 136.79961, "t": 153.52770999999996, "r": 226.73041, "b": 162.74072, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "picture", "bbox": {"l": 64.15681457519531, "t": 168.52747, "r": 542.2742309570312, "b": 410.16253662109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9696220755577087, "cells": [{"id": 8, "text": "S", "bbox": {"l": 64.799759, "t": 168.52747, "r": 71.443077, "b": 177.74048000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "caption", "bbox": {"l": 64.36393737792969, "t": 413.5631408691406, "r": 281.63330078125, "b": 422.616455078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9496315121650696, "cells": [{"id": 9, "text": "Figure 24 Architecture for AI-powered video analytics", "bbox": {"l": 64.800003, "t": 414.0779999999999, "r": 281.03314, "b": 422.40302, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.9974822998047, "t": 435.3909912109375, "r": 547.31128, "b": 517.7117309570312, "coord_origin": "TOPLEFT"}, "confidence": 0.9883346557617188, "cells": [{"id": 10, "text": "Live camera feeds or recorded videos of an infant\u2019s movement are the inputs for a pose ", "bbox": {"l": 136.8, "t": 436.06873, "r": 526.35754, "b": 445.28171, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "detection model. This video streaming data was stored in IBM Cloudfi Object Storage for ", "bbox": {"l": 136.8, "t": 448.06854, "r": 532.50073, "b": 457.28152, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "image processing. Video data must be transformed into frames so that the infant\u2019s body ", "bbox": {"l": 136.8, "t": 460.06836, "r": 526.34558, "b": 469.28134, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "poses can be detected. These post-estimation components of the pipeline predict the location ", "bbox": {"l": 136.8, "t": 472.06818, "r": 547.29852, "b": 481.28116, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "of all 17-person key points with 3 degrees of freedom each (x, y location and visibility) plus ", "bbox": {"l": 136.8, "t": 484.06799, "r": 538.93793, "b": 493.28098, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "two virtual alignment key points. This approach also embraces a compute-intensive heat map ", "bbox": {"l": 136.8, "t": 496.06781, "r": 547.31128, "b": 505.28079, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "prediction of infant body posture. ", "bbox": {"l": 136.8, "t": 508.06763, "r": 284.59744, "b": 517.28061, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 135.75706481933594, "t": 529.5070190429688, "r": 539.91718, "b": 599.2394400000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9881454706192017, "cells": [{"id": 17, "text": "When changes in body posture or movement happen, analytics can be performed, and a ", "bbox": {"l": 136.8, "t": 530.0274400000001, "r": 530.72687, "b": 539.2404300000001, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "threshold can be set for the angle of the body and posture movements. An analysis can be ", "bbox": {"l": 136.8, "t": 542.02724, "r": 539.72699, "b": 551.24023, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "performed on movement that is based on that threshold to help to predict an infant\u2019s health ", "bbox": {"l": 136.8, "t": 554.0270399999999, "r": 539.91718, "b": 563.24004, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "index in the output video stream by leveraging the IBM z16 on-chip AI acceleration, which ", "bbox": {"l": 136.8, "t": 566.02684, "r": 535.18512, "b": 575.23984, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "provides an execution speed in real time on an edge device, which cannot be achieved by ", "bbox": {"l": 136.8, "t": 578.0266399999999, "r": 536.80255, "b": 587.23964, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "other means.", "bbox": {"l": 136.79901, "t": 590.0264400000001, "r": 195.10583, "b": 599.2394400000001, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 135.83775329589844, "t": 611.3679809570312, "r": 437.9595299999999, "b": 621.6543579101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9376599788665771, "cells": [{"id": 23, "text": "We can leverage the following AI technology stack for this use case:", "bbox": {"l": 136.79901, "t": 612.04601, "r": 437.9595299999999, "b": 621.259, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.53660583496094, "t": 627.9594116210938, "r": 546.68695, "b": 650.2847900390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9733057618141174, "cells": [{"id": 24, "text": "GLYPH", "bbox": {"l": 136.79901, "t": 629.17522, "r": 141.77901, "b": 637.94997, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Convolutional neural network: Build an artificial neural network model on video streaming ", "bbox": {"l": 151.19917, "t": 629.0258200000001, "r": 546.68695, "b": 638.23882, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "and images.", "bbox": {"l": 151.19917, "t": 641.02562, "r": 205.66942, "b": 650.23862, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.43955993652344, "t": 657.3218994140625, "r": 455.6933, "b": 667.27818, "coord_origin": "TOPLEFT"}, "confidence": 0.9471306204795837, "cells": [{"id": 27, "text": "GLYPH", "bbox": {"l": 136.79901, "t": 658.2145800000001, "r": 141.77901, "b": 666.98934, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "TensorFlow: A DL back-end framework that is based on TensorFlow.", "bbox": {"l": 151.19917, "t": 658.06519, "r": 455.6933, "b": 667.27818, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 135.51890563964844, "t": 673.9837036132812, "r": 543.45294, "b": 696.257805, "coord_origin": "TOPLEFT"}, "confidence": 0.9743932485580444, "cells": [{"id": 29, "text": "GLYPH", "bbox": {"l": 136.79901, "t": 675.1944, "r": 141.77901, "b": 683.96915, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Mediapipe: A library that helps with video streaming processing and prediction of human ", "bbox": {"l": 151.19917, "t": 675.04499, "r": 543.45294, "b": 684.258, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "pose estimation.", "bbox": {"l": 151.19917, "t": 687.0448, "r": 223.97094999999996, "b": 696.257805, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 135.43861389160156, "t": 703.3480834960938, "r": 516.33087, "b": 713.6216430664062, "coord_origin": "TOPLEFT"}, "confidence": 0.9642981290817261, "cells": [{"id": 32, "text": "GLYPH", "bbox": {"l": 136.79901, "t": 704.174011, "r": 141.77901, "b": 712.948769, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "OpenCV: A real-time computer vision library that helps perform image processing. ", "bbox": {"l": 151.19917, "t": 704.024605, "r": 516.33087, "b": 713.23761, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 32, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 535.5228881835938, "t": 754.3223266601562, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9154198169708252, "cells": [{"id": 0, "text": "31", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "31"}, {"label": "text", "id": 1, "page_no": 32, "cluster": {"id": 1, "label": "text", "bbox": {"l": 135.8349609375, "t": 70.61254119873047, "r": 540.15765, "b": 104.76904296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9836795926094055, "cells": [{"id": 1, "text": "CP4D was used to build and deploy the AI-powered video analytics on infant\u2019s motion for ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 532.08209, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "health prediction use case on IBM Z. IBM Z with AI accelerator enables faster inference for ", "bbox": {"l": 136.79961, "t": 83.50885000000017, "r": 540.15765, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "detecting face and body movements and performing angle analytics in real time.", "bbox": {"l": 136.79961, "t": 95.50867000000005, "r": 490.71939, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "CP4D was used to build and deploy the AI-powered video analytics on infant\u2019s motion for health prediction use case on IBM Z. IBM Z with AI accelerator enables faster inference for detecting face and body movements and performing angle analytics in real time."}, {"label": "text", "id": 2, "page_no": 32, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.0093536376953, "t": 116.78787994384766, "r": 542.94446, "b": 162.74072, "coord_origin": "TOPLEFT"}, "confidence": 0.9831726551055908, "cells": [{"id": 4, "text": "Figure 24 shows an architectural diagram about how to design and develop an AI model for ", "bbox": {"l": 136.79961, "t": 117.52826000000005, "r": 542.94446, "b": 126.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "real-time body pose detection on IBM Z. A deep convolutional neural network architecture ", "bbox": {"l": 136.79961, "t": 129.52808000000005, "r": 535.71661, "b": 138.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "was trained on the task of infant pose estimation on the custom data set by leveraging IBM ", "bbox": {"l": 136.79961, "t": 141.52788999999996, "r": 540.21545, "b": 150.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Cloud Pak for Data. ", "bbox": {"l": 136.79961, "t": 153.52770999999996, "r": 226.73041, "b": 162.74072, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 24 shows an architectural diagram about how to design and develop an AI model for real-time body pose detection on IBM Z. A deep convolutional neural network architecture was trained on the task of infant pose estimation on the custom data set by leveraging IBM Cloud Pak for Data."}, {"label": "picture", "id": 3, "page_no": 32, "cluster": {"id": 3, "label": "picture", "bbox": {"l": 64.15681457519531, "t": 168.52747, "r": 542.2742309570312, "b": 410.16253662109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9696220755577087, "cells": [{"id": 8, "text": "S", "bbox": {"l": 64.799759, "t": 168.52747, "r": 71.443077, "b": 177.74048000000005, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "caption", "id": 4, "page_no": 32, "cluster": {"id": 4, "label": "caption", "bbox": {"l": 64.36393737792969, "t": 413.5631408691406, "r": 281.63330078125, "b": 422.616455078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9496315121650696, "cells": [{"id": 9, "text": "Figure 24 Architecture for AI-powered video analytics", "bbox": {"l": 64.800003, "t": 414.0779999999999, "r": 281.03314, "b": 422.40302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 24 Architecture for AI-powered video analytics"}, {"label": "text", "id": 5, "page_no": 32, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.9974822998047, "t": 435.3909912109375, "r": 547.31128, "b": 517.7117309570312, "coord_origin": "TOPLEFT"}, "confidence": 0.9883346557617188, "cells": [{"id": 10, "text": "Live camera feeds or recorded videos of an infant\u2019s movement are the inputs for a pose ", "bbox": {"l": 136.8, "t": 436.06873, "r": 526.35754, "b": 445.28171, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "detection model. This video streaming data was stored in IBM Cloudfi Object Storage for ", "bbox": {"l": 136.8, "t": 448.06854, "r": 532.50073, "b": 457.28152, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "image processing. Video data must be transformed into frames so that the infant\u2019s body ", "bbox": {"l": 136.8, "t": 460.06836, "r": 526.34558, "b": 469.28134, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "poses can be detected. These post-estimation components of the pipeline predict the location ", "bbox": {"l": 136.8, "t": 472.06818, "r": 547.29852, "b": 481.28116, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "of all 17-person key points with 3 degrees of freedom each (x, y location and visibility) plus ", "bbox": {"l": 136.8, "t": 484.06799, "r": 538.93793, "b": 493.28098, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "two virtual alignment key points. This approach also embraces a compute-intensive heat map ", "bbox": {"l": 136.8, "t": 496.06781, "r": 547.31128, "b": 505.28079, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "prediction of infant body posture. ", "bbox": {"l": 136.8, "t": 508.06763, "r": 284.59744, "b": 517.28061, "coord_origin": "TOPLEFT"}}]}, "text": "Live camera feeds or recorded videos of an infant\u2019s movement are the inputs for a pose detection model. This video streaming data was stored in IBM Cloudfi Object Storage for image processing. Video data must be transformed into frames so that the infant\u2019s body poses can be detected. These post-estimation components of the pipeline predict the location of all 17-person key points with 3 degrees of freedom each (x, y location and visibility) plus two virtual alignment key points. This approach also embraces a compute-intensive heat map prediction of infant body posture."}, {"label": "text", "id": 6, "page_no": 32, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.75706481933594, "t": 529.5070190429688, "r": 539.91718, "b": 599.2394400000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9881454706192017, "cells": [{"id": 17, "text": "When changes in body posture or movement happen, analytics can be performed, and a ", "bbox": {"l": 136.8, "t": 530.0274400000001, "r": 530.72687, "b": 539.2404300000001, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "threshold can be set for the angle of the body and posture movements. An analysis can be ", "bbox": {"l": 136.8, "t": 542.02724, "r": 539.72699, "b": 551.24023, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "performed on movement that is based on that threshold to help to predict an infant\u2019s health ", "bbox": {"l": 136.8, "t": 554.0270399999999, "r": 539.91718, "b": 563.24004, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "index in the output video stream by leveraging the IBM z16 on-chip AI acceleration, which ", "bbox": {"l": 136.8, "t": 566.02684, "r": 535.18512, "b": 575.23984, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "provides an execution speed in real time on an edge device, which cannot be achieved by ", "bbox": {"l": 136.8, "t": 578.0266399999999, "r": 536.80255, "b": 587.23964, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "other means.", "bbox": {"l": 136.79901, "t": 590.0264400000001, "r": 195.10583, "b": 599.2394400000001, "coord_origin": "TOPLEFT"}}]}, "text": "When changes in body posture or movement happen, analytics can be performed, and a threshold can be set for the angle of the body and posture movements. An analysis can be performed on movement that is based on that threshold to help to predict an infant\u2019s health index in the output video stream by leveraging the IBM z16 on-chip AI acceleration, which provides an execution speed in real time on an edge device, which cannot be achieved by other means."}, {"label": "text", "id": 7, "page_no": 32, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.83775329589844, "t": 611.3679809570312, "r": 437.9595299999999, "b": 621.6543579101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9376599788665771, "cells": [{"id": 23, "text": "We can leverage the following AI technology stack for this use case:", "bbox": {"l": 136.79901, "t": 612.04601, "r": 437.9595299999999, "b": 621.259, "coord_origin": "TOPLEFT"}}]}, "text": "We can leverage the following AI technology stack for this use case:"}, {"label": "list_item", "id": 8, "page_no": 32, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.53660583496094, "t": 627.9594116210938, "r": 546.68695, "b": 650.2847900390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9733057618141174, "cells": [{"id": 24, "text": "GLYPH", "bbox": {"l": 136.79901, "t": 629.17522, "r": 141.77901, "b": 637.94997, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Convolutional neural network: Build an artificial neural network model on video streaming ", "bbox": {"l": 151.19917, "t": 629.0258200000001, "r": 546.68695, "b": 638.23882, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "and images.", "bbox": {"l": 151.19917, "t": 641.02562, "r": 205.66942, "b": 650.23862, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Convolutional neural network: Build an artificial neural network model on video streaming and images."}, {"label": "list_item", "id": 9, "page_no": 32, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.43955993652344, "t": 657.3218994140625, "r": 455.6933, "b": 667.27818, "coord_origin": "TOPLEFT"}, "confidence": 0.9471306204795837, "cells": [{"id": 27, "text": "GLYPH", "bbox": {"l": 136.79901, "t": 658.2145800000001, "r": 141.77901, "b": 666.98934, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "TensorFlow: A DL back-end framework that is based on TensorFlow.", "bbox": {"l": 151.19917, "t": 658.06519, "r": 455.6933, "b": 667.27818, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH TensorFlow: A DL back-end framework that is based on TensorFlow."}, {"label": "list_item", "id": 10, "page_no": 32, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.51890563964844, "t": 673.9837036132812, "r": 543.45294, "b": 696.257805, "coord_origin": "TOPLEFT"}, "confidence": 0.9743932485580444, "cells": [{"id": 29, "text": "GLYPH", "bbox": {"l": 136.79901, "t": 675.1944, "r": 141.77901, "b": 683.96915, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Mediapipe: A library that helps with video streaming processing and prediction of human ", "bbox": {"l": 151.19917, "t": 675.04499, "r": 543.45294, "b": 684.258, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "pose estimation.", "bbox": {"l": 151.19917, "t": 687.0448, "r": 223.97094999999996, "b": 696.257805, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Mediapipe: A library that helps with video streaming processing and prediction of human pose estimation."}, {"label": "list_item", "id": 11, "page_no": 32, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.43861389160156, "t": 703.3480834960938, "r": 516.33087, "b": 713.6216430664062, "coord_origin": "TOPLEFT"}, "confidence": 0.9642981290817261, "cells": [{"id": 32, "text": "GLYPH", "bbox": {"l": 136.79901, "t": 704.174011, "r": 141.77901, "b": 712.948769, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "OpenCV: A real-time computer vision library that helps perform image processing. ", "bbox": {"l": 151.19917, "t": 704.024605, "r": 516.33087, "b": 713.23761, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH OpenCV: A real-time computer vision library that helps perform image processing."}], "body": [{"label": "text", "id": 1, "page_no": 32, "cluster": {"id": 1, "label": "text", "bbox": {"l": 135.8349609375, "t": 70.61254119873047, "r": 540.15765, "b": 104.76904296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9836795926094055, "cells": [{"id": 1, "text": "CP4D was used to build and deploy the AI-powered video analytics on infant\u2019s motion for ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 532.08209, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "health prediction use case on IBM Z. IBM Z with AI accelerator enables faster inference for ", "bbox": {"l": 136.79961, "t": 83.50885000000017, "r": 540.15765, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "detecting face and body movements and performing angle analytics in real time.", "bbox": {"l": 136.79961, "t": 95.50867000000005, "r": 490.71939, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "CP4D was used to build and deploy the AI-powered video analytics on infant\u2019s motion for health prediction use case on IBM Z. IBM Z with AI accelerator enables faster inference for detecting face and body movements and performing angle analytics in real time."}, {"label": "text", "id": 2, "page_no": 32, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.0093536376953, "t": 116.78787994384766, "r": 542.94446, "b": 162.74072, "coord_origin": "TOPLEFT"}, "confidence": 0.9831726551055908, "cells": [{"id": 4, "text": "Figure 24 shows an architectural diagram about how to design and develop an AI model for ", "bbox": {"l": 136.79961, "t": 117.52826000000005, "r": 542.94446, "b": 126.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "real-time body pose detection on IBM Z. A deep convolutional neural network architecture ", "bbox": {"l": 136.79961, "t": 129.52808000000005, "r": 535.71661, "b": 138.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "was trained on the task of infant pose estimation on the custom data set by leveraging IBM ", "bbox": {"l": 136.79961, "t": 141.52788999999996, "r": 540.21545, "b": 150.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Cloud Pak for Data. ", "bbox": {"l": 136.79961, "t": 153.52770999999996, "r": 226.73041, "b": 162.74072, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 24 shows an architectural diagram about how to design and develop an AI model for real-time body pose detection on IBM Z. A deep convolutional neural network architecture was trained on the task of infant pose estimation on the custom data set by leveraging IBM Cloud Pak for Data."}, {"label": "picture", "id": 3, "page_no": 32, "cluster": {"id": 3, "label": "picture", "bbox": {"l": 64.15681457519531, "t": 168.52747, "r": 542.2742309570312, "b": 410.16253662109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9696220755577087, "cells": [{"id": 8, "text": "S", "bbox": {"l": 64.799759, "t": 168.52747, "r": 71.443077, "b": 177.74048000000005, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "caption", "id": 4, "page_no": 32, "cluster": {"id": 4, "label": "caption", "bbox": {"l": 64.36393737792969, "t": 413.5631408691406, "r": 281.63330078125, "b": 422.616455078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9496315121650696, "cells": [{"id": 9, "text": "Figure 24 Architecture for AI-powered video analytics", "bbox": {"l": 64.800003, "t": 414.0779999999999, "r": 281.03314, "b": 422.40302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 24 Architecture for AI-powered video analytics"}, {"label": "text", "id": 5, "page_no": 32, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.9974822998047, "t": 435.3909912109375, "r": 547.31128, "b": 517.7117309570312, "coord_origin": "TOPLEFT"}, "confidence": 0.9883346557617188, "cells": [{"id": 10, "text": "Live camera feeds or recorded videos of an infant\u2019s movement are the inputs for a pose ", "bbox": {"l": 136.8, "t": 436.06873, "r": 526.35754, "b": 445.28171, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "detection model. This video streaming data was stored in IBM Cloudfi Object Storage for ", "bbox": {"l": 136.8, "t": 448.06854, "r": 532.50073, "b": 457.28152, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "image processing. Video data must be transformed into frames so that the infant\u2019s body ", "bbox": {"l": 136.8, "t": 460.06836, "r": 526.34558, "b": 469.28134, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "poses can be detected. These post-estimation components of the pipeline predict the location ", "bbox": {"l": 136.8, "t": 472.06818, "r": 547.29852, "b": 481.28116, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "of all 17-person key points with 3 degrees of freedom each (x, y location and visibility) plus ", "bbox": {"l": 136.8, "t": 484.06799, "r": 538.93793, "b": 493.28098, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "two virtual alignment key points. This approach also embraces a compute-intensive heat map ", "bbox": {"l": 136.8, "t": 496.06781, "r": 547.31128, "b": 505.28079, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "prediction of infant body posture. ", "bbox": {"l": 136.8, "t": 508.06763, "r": 284.59744, "b": 517.28061, "coord_origin": "TOPLEFT"}}]}, "text": "Live camera feeds or recorded videos of an infant\u2019s movement are the inputs for a pose detection model. This video streaming data was stored in IBM Cloudfi Object Storage for image processing. Video data must be transformed into frames so that the infant\u2019s body poses can be detected. These post-estimation components of the pipeline predict the location of all 17-person key points with 3 degrees of freedom each (x, y location and visibility) plus two virtual alignment key points. This approach also embraces a compute-intensive heat map prediction of infant body posture."}, {"label": "text", "id": 6, "page_no": 32, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.75706481933594, "t": 529.5070190429688, "r": 539.91718, "b": 599.2394400000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9881454706192017, "cells": [{"id": 17, "text": "When changes in body posture or movement happen, analytics can be performed, and a ", "bbox": {"l": 136.8, "t": 530.0274400000001, "r": 530.72687, "b": 539.2404300000001, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "threshold can be set for the angle of the body and posture movements. An analysis can be ", "bbox": {"l": 136.8, "t": 542.02724, "r": 539.72699, "b": 551.24023, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "performed on movement that is based on that threshold to help to predict an infant\u2019s health ", "bbox": {"l": 136.8, "t": 554.0270399999999, "r": 539.91718, "b": 563.24004, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "index in the output video stream by leveraging the IBM z16 on-chip AI acceleration, which ", "bbox": {"l": 136.8, "t": 566.02684, "r": 535.18512, "b": 575.23984, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "provides an execution speed in real time on an edge device, which cannot be achieved by ", "bbox": {"l": 136.8, "t": 578.0266399999999, "r": 536.80255, "b": 587.23964, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "other means.", "bbox": {"l": 136.79901, "t": 590.0264400000001, "r": 195.10583, "b": 599.2394400000001, "coord_origin": "TOPLEFT"}}]}, "text": "When changes in body posture or movement happen, analytics can be performed, and a threshold can be set for the angle of the body and posture movements. An analysis can be performed on movement that is based on that threshold to help to predict an infant\u2019s health index in the output video stream by leveraging the IBM z16 on-chip AI acceleration, which provides an execution speed in real time on an edge device, which cannot be achieved by other means."}, {"label": "text", "id": 7, "page_no": 32, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.83775329589844, "t": 611.3679809570312, "r": 437.9595299999999, "b": 621.6543579101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9376599788665771, "cells": [{"id": 23, "text": "We can leverage the following AI technology stack for this use case:", "bbox": {"l": 136.79901, "t": 612.04601, "r": 437.9595299999999, "b": 621.259, "coord_origin": "TOPLEFT"}}]}, "text": "We can leverage the following AI technology stack for this use case:"}, {"label": "list_item", "id": 8, "page_no": 32, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.53660583496094, "t": 627.9594116210938, "r": 546.68695, "b": 650.2847900390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9733057618141174, "cells": [{"id": 24, "text": "GLYPH", "bbox": {"l": 136.79901, "t": 629.17522, "r": 141.77901, "b": 637.94997, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Convolutional neural network: Build an artificial neural network model on video streaming ", "bbox": {"l": 151.19917, "t": 629.0258200000001, "r": 546.68695, "b": 638.23882, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "and images.", "bbox": {"l": 151.19917, "t": 641.02562, "r": 205.66942, "b": 650.23862, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Convolutional neural network: Build an artificial neural network model on video streaming and images."}, {"label": "list_item", "id": 9, "page_no": 32, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.43955993652344, "t": 657.3218994140625, "r": 455.6933, "b": 667.27818, "coord_origin": "TOPLEFT"}, "confidence": 0.9471306204795837, "cells": [{"id": 27, "text": "GLYPH", "bbox": {"l": 136.79901, "t": 658.2145800000001, "r": 141.77901, "b": 666.98934, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "TensorFlow: A DL back-end framework that is based on TensorFlow.", "bbox": {"l": 151.19917, "t": 658.06519, "r": 455.6933, "b": 667.27818, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH TensorFlow: A DL back-end framework that is based on TensorFlow."}, {"label": "list_item", "id": 10, "page_no": 32, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.51890563964844, "t": 673.9837036132812, "r": 543.45294, "b": 696.257805, "coord_origin": "TOPLEFT"}, "confidence": 0.9743932485580444, "cells": [{"id": 29, "text": "GLYPH", "bbox": {"l": 136.79901, "t": 675.1944, "r": 141.77901, "b": 683.96915, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Mediapipe: A library that helps with video streaming processing and prediction of human ", "bbox": {"l": 151.19917, "t": 675.04499, "r": 543.45294, "b": 684.258, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "pose estimation.", "bbox": {"l": 151.19917, "t": 687.0448, "r": 223.97094999999996, "b": 696.257805, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Mediapipe: A library that helps with video streaming processing and prediction of human pose estimation."}, {"label": "list_item", "id": 11, "page_no": 32, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.43861389160156, "t": 703.3480834960938, "r": 516.33087, "b": 713.6216430664062, "coord_origin": "TOPLEFT"}, "confidence": 0.9642981290817261, "cells": [{"id": 32, "text": "GLYPH", "bbox": {"l": 136.79901, "t": 704.174011, "r": 141.77901, "b": 712.948769, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "OpenCV: A real-time computer vision library that helps perform image processing. ", "bbox": {"l": 151.19917, "t": 704.024605, "r": 516.33087, "b": 713.23761, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH OpenCV: A real-time computer vision library that helps perform image processing."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 32, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 535.5228881835938, "t": 754.3223266601562, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9154198169708252, "cells": [{"id": 0, "text": "31", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "31"}]}}, {"page_no": 33, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "32 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "WML was used for deployment of the pose detection model and generated notifications to ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 536.31464, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "users with web and mobile applications, and it integrates with Fitbit for push notifications so ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 542.36017, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "that hospitals and parents can take preventive actions. ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 380.7294, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Additional resources", "bbox": {"l": 64.800003, "t": 133.20068000000003, "r": 223.86055, "b": 147.96367999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 165.67809999999997, "r": 141.78, "b": 174.45288000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "The Cloud Pak for Data 4.5 on IBM Z Overview Demo video provides an overview of some ", "bbox": {"l": 151.20016, "t": 165.52868999999998, "r": 547.23254, "b": 174.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "of the more important features of CP4D on IBM Z. ", "bbox": {"l": 151.20016, "t": 177.5285, "r": 374.5701, "b": 186.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 194.65770999999995, "r": 141.78, "b": 203.4325, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "IBM Cloud Pak for Data Tutorials.", "bbox": {"l": 151.20016, "t": 194.50829999999996, "r": 300.06931, "b": 203.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 211.63751000000002, "r": 141.77998, "b": 220.41228999999998, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Here are some additional use cases that use the data science frameworks that are ", "bbox": {"l": 151.20015, "t": 211.48810000000003, "r": 518.55884, "b": 220.70110999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "available as part of CP4D on IBM Z and IBM LinuxONE:", "bbox": {"l": 151.20015, "t": 223.48792000000003, "r": 399.04178, "b": 232.70092999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "-", "bbox": {"l": 152.03978, "t": 240.52747, "r": 157.60841, "b": 249.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Payment Card Fraud Detection by using TensorFlow on CP4D on IBM Z and IBM ", "bbox": {"l": 165.59932, "t": 240.52747, "r": 527.84058, "b": 249.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "LinuxONE is a payment card fraud detection use case.", "bbox": {"l": 165.6003, "t": 252.52728000000002, "r": 407.28174, "b": 261.74030000000005, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "-", "bbox": {"l": 152.04077, "t": 269.50708, "r": 157.57953, "b": 278.72009, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Fashion-MNIST clothing classification with PyTorch on Cloud Pak for Data on IBM Z ", "bbox": {"l": 165.60031, "t": 269.50708, "r": 539.96179, "b": 278.72009, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "and IBM LinuxONE is a Fashion-MNIST clothing classification use case.", "bbox": {"l": 165.60031, "t": 281.50693, "r": 484.39898999999997, "b": 290.71991, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "-", "bbox": {"l": 152.03976, "t": 298.48672, "r": 157.57753, "b": 307.69971, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Payment Card Fraud Prevention by using Snap ML on IBM Cloud Pak for Data on Red ", "bbox": {"l": 165.5993, "t": 298.48672, "r": 547.26764, "b": 307.69971, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Hat OpenShift on a virtual machine on IBM Z and IBM LinuxONE, which leverage the ", "bbox": {"l": 165.5993, "t": 310.48654, "r": 543.95587, "b": 319.69952, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "z16", "bbox": {"l": 165.5993, "t": 322.48635999999993, "r": 181.70822, "b": 331.69934, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "integrated AI accelerator describes a use case that uses Snap Machine Learning ", "bbox": {"l": 184.48631, "t": 322.48635999999993, "r": 544.4187, "b": 331.69934, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "in Cloud Pak for Data on IBM Z and IBM LinuxONE. It is a Snap ML use case.", "bbox": {"l": 165.5993, "t": 334.48618000000005, "r": 510.15149, "b": 343.69916, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "A companion video can be found at Credit Card Fraud Detection by using Snap ML on ", "bbox": {"l": 165.5993, "t": 351.52576, "r": 547.19281, "b": 360.73874, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "IBM Cloud Pak for Data on IBM Z and IBM LinuxONE.", "bbox": {"l": 165.59933, "t": 363.52557, "r": 405.00787, "b": 372.73856, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Summary", "bbox": {"l": 64.800003, "t": 401.2207, "r": 137.60794, "b": 415.9837, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "This IBM Redbooksfi publication presented an overview of how IBM Cloud Pak for Data on ", "bbox": {"l": 136.8, "t": 433.48874, "r": 541.99463, "b": 442.70172, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "IBM Z can modernize your data infrastructure; develop and deploy ML and AI models; and ", "bbox": {"l": 136.8, "t": 445.48856, "r": 537.89514, "b": 454.70154, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "instantiate highly efficient analytics deployment on IBM LinuxONE. This publication ", "bbox": {"l": 136.8, "t": 457.48837000000003, "r": 505.11172000000005, "b": 466.70135, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "demonstrated these tasks by guiding the reader through five common use cases where CP4D ", "bbox": {"l": 136.8, "t": 469.48819, "r": 547.16486, "b": 478.70117, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "on IBM Z and IBM LinuxONE uses the different features that are supported on the platform, ", "bbox": {"l": 136.80002, "t": 481.54776, "r": 542.92505, "b": 490.76074, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "and showing how the associated features can help an enterprise to build AI and ML models ", "bbox": {"l": 136.80002, "t": 493.54758, "r": 542.98291, "b": 502.76056, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "with core transactional data, which results in a highly efficient analytics deployment that ", "bbox": {"l": 136.80002, "t": 505.54739, "r": 525.14935, "b": 514.7603799999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "minimizes latency, cost inefficiencies, and potential security exposures that are connected ", "bbox": {"l": 136.8, "t": 517.54721, "r": 536.83246, "b": 526.76019, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "with data transportation.", "bbox": {"l": 136.8, "t": 529.547, "r": 243.47458999999998, "b": 538.76001, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Authors", "bbox": {"l": 64.800003, "t": 559.37462, "r": 114.55733, "b": 571.36263, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "This publication was produced by a team of specialists from around the world working with ", "bbox": {"l": 136.8, "t": 585.52863, "r": 538.57349, "b": 594.74162, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "the IBM Redbooks team:", "bbox": {"l": 136.8, "t": 597.52843, "r": 246.82411, "b": 606.7414200000001, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Jasmeet Bhatia is ", "bbox": {"l": 136.8, "t": 619.54799, "r": 223.98090000000002, "b": 628.76099, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "an AI on IBM Z Product Manager who supports CP4D on ", "bbox": {"l": 223.97989, "t": 619.54799, "r": 478.39406999999994, "b": 628.76099, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "IBM Z. She has 2.5 years of combined experience as a data scientist and a product manager. ", "bbox": {"l": 136.8, "t": 631.54779, "r": 547.24359, "b": 640.76079, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Jasmeet lives in San Francisco, California and holds a Bachelor of Arts degree in Data ", "bbox": {"l": 136.8, "t": 643.54759, "r": 521.87842, "b": 652.76059, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Science. She is working on her Master of Science degree in Data Science. Her area of ", "bbox": {"l": 136.8, "t": 655.54739, "r": 521.88837, "b": 664.76039, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "expertise includes AI, data science, and product management.", "bbox": {"l": 136.8, "t": 667.5472, "r": 413.00677, "b": 676.7601999999999, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.16203308105469, "t": 754.4970092773438, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9191343188285828, "cells": [{"id": 0, "text": "32 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.21607208251953, "t": 754.80419921875, "r": 267.0744, "b": 764.0835571289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9557995200157166, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.99948120117188, "t": 70.72982025146484, "r": 542.36017, "b": 104.7628173828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9821197390556335, "cells": [{"id": 2, "text": "WML was used for deployment of the pose detection model and generated notifications to ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 536.31464, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "users with web and mobile applications, and it integrates with Fitbit for push notifications so ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 542.36017, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "that hospitals and parents can take preventive actions. ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 380.7294, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "section_header", "bbox": {"l": 64.3565673828125, "t": 132.1417236328125, "r": 223.86055, "b": 147.96367999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9596555233001709, "cells": [{"id": 5, "text": "Additional resources", "bbox": {"l": 64.800003, "t": 133.20068000000003, "r": 223.86055, "b": 147.96367999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 135.6084747314453, "t": 164.60169982910156, "r": 547.23254, "b": 186.74152000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9761157631874084, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 165.67809999999997, "r": 141.78, "b": 174.45288000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "The Cloud Pak for Data 4.5 on IBM Z Overview Demo video provides an overview of some ", "bbox": {"l": 151.20016, "t": 165.52868999999998, "r": 547.23254, "b": 174.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "of the more important features of CP4D on IBM Z. ", "bbox": {"l": 151.20016, "t": 177.5285, "r": 374.5701, "b": 186.74152000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 135.61322021484375, "t": 193.5091094970703, "r": 300.06931, "b": 203.72131000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.925189197063446, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 194.65770999999995, "r": 141.78, "b": 203.4325, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "IBM Cloud Pak for Data Tutorials.", "bbox": {"l": 151.20016, "t": 194.50829999999996, "r": 300.06931, "b": 203.72131000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.7628173828125, "t": 210.79263305664062, "r": 518.55884, "b": 232.70092999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.977351188659668, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 211.63751000000002, "r": 141.77998, "b": 220.41228999999998, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Here are some additional use cases that use the data science frameworks that are ", "bbox": {"l": 151.20015, "t": 211.48810000000003, "r": 518.55884, "b": 220.70110999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "available as part of CP4D on IBM Z and IBM LinuxONE:", "bbox": {"l": 151.20015, "t": 223.48792000000003, "r": 399.04178, "b": 232.70092999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 151.3540802001953, "t": 240.1075897216797, "r": 527.84058, "b": 261.9636535644531, "coord_origin": "TOPLEFT"}, "confidence": 0.9783041477203369, "cells": [{"id": 14, "text": "-", "bbox": {"l": 152.03978, "t": 240.52747, "r": 157.60841, "b": 249.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Payment Card Fraud Detection by using TensorFlow on CP4D on IBM Z and IBM ", "bbox": {"l": 165.59932, "t": 240.52747, "r": 527.84058, "b": 249.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "LinuxONE is a payment card fraud detection use case.", "bbox": {"l": 165.6003, "t": 252.52728000000002, "r": 407.28174, "b": 261.74030000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 151.2523193359375, "t": 268.774658203125, "r": 539.96179, "b": 290.71991, "coord_origin": "TOPLEFT"}, "confidence": 0.976689338684082, "cells": [{"id": 17, "text": "-", "bbox": {"l": 152.04077, "t": 269.50708, "r": 157.57953, "b": 278.72009, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Fashion-MNIST clothing classification with PyTorch on Cloud Pak for Data on IBM Z ", "bbox": {"l": 165.60031, "t": 269.50708, "r": 539.96179, "b": 278.72009, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "and IBM LinuxONE is a Fashion-MNIST clothing classification use case.", "bbox": {"l": 165.60031, "t": 281.50693, "r": 484.39898999999997, "b": 290.71991, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 151.19593811035156, "t": 297.4288330078125, "r": 547.26764, "b": 343.69916, "coord_origin": "TOPLEFT"}, "confidence": 0.9813570976257324, "cells": [{"id": 20, "text": "-", "bbox": {"l": 152.03976, "t": 298.48672, "r": 157.57753, "b": 307.69971, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Payment Card Fraud Prevention by using Snap ML on IBM Cloud Pak for Data on Red ", "bbox": {"l": 165.5993, "t": 298.48672, "r": 547.26764, "b": 307.69971, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Hat OpenShift on a virtual machine on IBM Z and IBM LinuxONE, which leverage the ", "bbox": {"l": 165.5993, "t": 310.48654, "r": 543.95587, "b": 319.69952, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "z16", "bbox": {"l": 165.5993, "t": 322.48635999999993, "r": 181.70822, "b": 331.69934, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "integrated AI accelerator describes a use case that uses Snap Machine Learning ", "bbox": {"l": 184.48631, "t": 322.48635999999993, "r": 544.4187, "b": 331.69934, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "in Cloud Pak for Data on IBM Z and IBM LinuxONE. It is a Snap ML use case.", "bbox": {"l": 165.5993, "t": 334.48618000000005, "r": 510.15149, "b": 343.69916, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 165.18856811523438, "t": 350.73284912109375, "r": 547.19281, "b": 372.73856, "coord_origin": "TOPLEFT"}, "confidence": 0.9013206958770752, "cells": [{"id": 26, "text": "A companion video can be found at Credit Card Fraud Detection by using Snap ML on ", "bbox": {"l": 165.5993, "t": 351.52576, "r": 547.19281, "b": 360.73874, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "IBM Cloud Pak for Data on IBM Z and IBM LinuxONE.", "bbox": {"l": 165.59933, "t": 363.52557, "r": 405.00787, "b": 372.73856, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "section_header", "bbox": {"l": 64.41288757324219, "t": 400.2530212402344, "r": 137.74366760253906, "b": 416.2667236328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9588590264320374, "cells": [{"id": 28, "text": "Summary", "bbox": {"l": 64.800003, "t": 401.2207, "r": 137.60794, "b": 415.9837, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 135.86285400390625, "t": 432.6907043457031, "r": 547.16486, "b": 538.8106079101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9881507158279419, "cells": [{"id": 29, "text": "This IBM Redbooksfi publication presented an overview of how IBM Cloud Pak for Data on ", "bbox": {"l": 136.8, "t": 433.48874, "r": 541.99463, "b": 442.70172, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "IBM Z can modernize your data infrastructure; develop and deploy ML and AI models; and ", "bbox": {"l": 136.8, "t": 445.48856, "r": 537.89514, "b": 454.70154, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "instantiate highly efficient analytics deployment on IBM LinuxONE. This publication ", "bbox": {"l": 136.8, "t": 457.48837000000003, "r": 505.11172000000005, "b": 466.70135, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "demonstrated these tasks by guiding the reader through five common use cases where CP4D ", "bbox": {"l": 136.8, "t": 469.48819, "r": 547.16486, "b": 478.70117, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "on IBM Z and IBM LinuxONE uses the different features that are supported on the platform, ", "bbox": {"l": 136.80002, "t": 481.54776, "r": 542.92505, "b": 490.76074, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "and showing how the associated features can help an enterprise to build AI and ML models ", "bbox": {"l": 136.80002, "t": 493.54758, "r": 542.98291, "b": 502.76056, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "with core transactional data, which results in a highly efficient analytics deployment that ", "bbox": {"l": 136.80002, "t": 505.54739, "r": 525.14935, "b": 514.7603799999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "minimizes latency, cost inefficiencies, and potential security exposures that are connected ", "bbox": {"l": 136.8, "t": 517.54721, "r": 536.83246, "b": 526.76019, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "with data transportation.", "bbox": {"l": 136.8, "t": 529.547, "r": 243.47458999999998, "b": 538.76001, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "section_header", "bbox": {"l": 64.06120300292969, "t": 558.3284301757812, "r": 114.58550262451172, "b": 571.36263, "coord_origin": "TOPLEFT"}, "confidence": 0.9354433417320251, "cells": [{"id": 38, "text": "Authors", "bbox": {"l": 64.800003, "t": 559.37462, "r": 114.55733, "b": 571.36263, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "text", "bbox": {"l": 135.81004333496094, "t": 584.623046875, "r": 538.57349, "b": 606.7414200000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9726653099060059, "cells": [{"id": 39, "text": "This publication was produced by a team of specialists from around the world working with ", "bbox": {"l": 136.8, "t": 585.52863, "r": 538.57349, "b": 594.74162, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "the IBM Redbooks team:", "bbox": {"l": 136.8, "t": 597.52843, "r": 246.82411, "b": 606.7414200000001, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "text", "bbox": {"l": 135.75830078125, "t": 618.4910888671875, "r": 547.24359, "b": 676.8506469726562, "coord_origin": "TOPLEFT"}, "confidence": 0.9839816689491272, "cells": [{"id": 41, "text": "Jasmeet Bhatia is ", "bbox": {"l": 136.8, "t": 619.54799, "r": 223.98090000000002, "b": 628.76099, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "an AI on IBM Z Product Manager who supports CP4D on ", "bbox": {"l": 223.97989, "t": 619.54799, "r": 478.39406999999994, "b": 628.76099, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "IBM Z. She has 2.5 years of combined experience as a data scientist and a product manager. ", "bbox": {"l": 136.8, "t": 631.54779, "r": 547.24359, "b": 640.76079, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Jasmeet lives in San Francisco, California and holds a Bachelor of Arts degree in Data ", "bbox": {"l": 136.8, "t": 643.54759, "r": 521.87842, "b": 652.76059, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Science. She is working on her Master of Science degree in Data Science. Her area of ", "bbox": {"l": 136.8, "t": 655.54739, "r": 521.88837, "b": 664.76039, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "expertise includes AI, data science, and product management.", "bbox": {"l": 136.8, "t": 667.5472, "r": 413.00677, "b": 676.7601999999999, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 33, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.16203308105469, "t": 754.4970092773438, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9191343188285828, "cells": [{"id": 0, "text": "32 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "32"}, {"label": "page_footer", "id": 1, "page_no": 33, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.21607208251953, "t": 754.80419921875, "r": 267.0744, "b": 764.0835571289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9557995200157166, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"label": "text", "id": 2, "page_no": 33, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.99948120117188, "t": 70.72982025146484, "r": 542.36017, "b": 104.7628173828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9821197390556335, "cells": [{"id": 2, "text": "WML was used for deployment of the pose detection model and generated notifications to ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 536.31464, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "users with web and mobile applications, and it integrates with Fitbit for push notifications so ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 542.36017, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "that hospitals and parents can take preventive actions. ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 380.7294, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}]}, "text": "WML was used for deployment of the pose detection model and generated notifications to users with web and mobile applications, and it integrates with Fitbit for push notifications so that hospitals and parents can take preventive actions."}, {"label": "section_header", "id": 3, "page_no": 33, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 64.3565673828125, "t": 132.1417236328125, "r": 223.86055, "b": 147.96367999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9596555233001709, "cells": [{"id": 5, "text": "Additional resources", "bbox": {"l": 64.800003, "t": 133.20068000000003, "r": 223.86055, "b": 147.96367999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Additional resources"}, {"label": "list_item", "id": 4, "page_no": 33, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.6084747314453, "t": 164.60169982910156, "r": 547.23254, "b": 186.74152000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9761157631874084, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 165.67809999999997, "r": 141.78, "b": 174.45288000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "The Cloud Pak for Data 4.5 on IBM Z Overview Demo video provides an overview of some ", "bbox": {"l": 151.20016, "t": 165.52868999999998, "r": 547.23254, "b": 174.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "of the more important features of CP4D on IBM Z. ", "bbox": {"l": 151.20016, "t": 177.5285, "r": 374.5701, "b": 186.74152000000004, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The Cloud Pak for Data 4.5 on IBM Z Overview Demo video provides an overview of some of the more important features of CP4D on IBM Z."}, {"label": "list_item", "id": 5, "page_no": 33, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.61322021484375, "t": 193.5091094970703, "r": 300.06931, "b": 203.72131000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.925189197063446, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 194.65770999999995, "r": 141.78, "b": 203.4325, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "IBM Cloud Pak for Data Tutorials.", "bbox": {"l": 151.20016, "t": 194.50829999999996, "r": 300.06931, "b": 203.72131000000002, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH IBM Cloud Pak for Data Tutorials."}, {"label": "list_item", "id": 6, "page_no": 33, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.7628173828125, "t": 210.79263305664062, "r": 518.55884, "b": 232.70092999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.977351188659668, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 211.63751000000002, "r": 141.77998, "b": 220.41228999999998, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Here are some additional use cases that use the data science frameworks that are ", "bbox": {"l": 151.20015, "t": 211.48810000000003, "r": 518.55884, "b": 220.70110999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "available as part of CP4D on IBM Z and IBM LinuxONE:", "bbox": {"l": 151.20015, "t": 223.48792000000003, "r": 399.04178, "b": 232.70092999999997, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Here are some additional use cases that use the data science frameworks that are available as part of CP4D on IBM Z and IBM LinuxONE:"}, {"label": "list_item", "id": 7, "page_no": 33, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 151.3540802001953, "t": 240.1075897216797, "r": 527.84058, "b": 261.9636535644531, "coord_origin": "TOPLEFT"}, "confidence": 0.9783041477203369, "cells": [{"id": 14, "text": "-", "bbox": {"l": 152.03978, "t": 240.52747, "r": 157.60841, "b": 249.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Payment Card Fraud Detection by using TensorFlow on CP4D on IBM Z and IBM ", "bbox": {"l": 165.59932, "t": 240.52747, "r": 527.84058, "b": 249.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "LinuxONE is a payment card fraud detection use case.", "bbox": {"l": 165.6003, "t": 252.52728000000002, "r": 407.28174, "b": 261.74030000000005, "coord_origin": "TOPLEFT"}}]}, "text": "-Payment Card Fraud Detection by using TensorFlow on CP4D on IBM Z and IBM LinuxONE is a payment card fraud detection use case."}, {"label": "list_item", "id": 8, "page_no": 33, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 151.2523193359375, "t": 268.774658203125, "r": 539.96179, "b": 290.71991, "coord_origin": "TOPLEFT"}, "confidence": 0.976689338684082, "cells": [{"id": 17, "text": "-", "bbox": {"l": 152.04077, "t": 269.50708, "r": 157.57953, "b": 278.72009, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Fashion-MNIST clothing classification with PyTorch on Cloud Pak for Data on IBM Z ", "bbox": {"l": 165.60031, "t": 269.50708, "r": 539.96179, "b": 278.72009, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "and IBM LinuxONE is a Fashion-MNIST clothing classification use case.", "bbox": {"l": 165.60031, "t": 281.50693, "r": 484.39898999999997, "b": 290.71991, "coord_origin": "TOPLEFT"}}]}, "text": "-Fashion-MNIST clothing classification with PyTorch on Cloud Pak for Data on IBM Z and IBM LinuxONE is a Fashion-MNIST clothing classification use case."}, {"label": "list_item", "id": 9, "page_no": 33, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 151.19593811035156, "t": 297.4288330078125, "r": 547.26764, "b": 343.69916, "coord_origin": "TOPLEFT"}, "confidence": 0.9813570976257324, "cells": [{"id": 20, "text": "-", "bbox": {"l": 152.03976, "t": 298.48672, "r": 157.57753, "b": 307.69971, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Payment Card Fraud Prevention by using Snap ML on IBM Cloud Pak for Data on Red ", "bbox": {"l": 165.5993, "t": 298.48672, "r": 547.26764, "b": 307.69971, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Hat OpenShift on a virtual machine on IBM Z and IBM LinuxONE, which leverage the ", "bbox": {"l": 165.5993, "t": 310.48654, "r": 543.95587, "b": 319.69952, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "z16", "bbox": {"l": 165.5993, "t": 322.48635999999993, "r": 181.70822, "b": 331.69934, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "integrated AI accelerator describes a use case that uses Snap Machine Learning ", "bbox": {"l": 184.48631, "t": 322.48635999999993, "r": 544.4187, "b": 331.69934, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "in Cloud Pak for Data on IBM Z and IBM LinuxONE. It is a Snap ML use case.", "bbox": {"l": 165.5993, "t": 334.48618000000005, "r": 510.15149, "b": 343.69916, "coord_origin": "TOPLEFT"}}]}, "text": "-Payment Card Fraud Prevention by using Snap ML on IBM Cloud Pak for Data on Red Hat OpenShift on a virtual machine on IBM Z and IBM LinuxONE, which leverage the z16 integrated AI accelerator describes a use case that uses Snap Machine Learning in Cloud Pak for Data on IBM Z and IBM LinuxONE. It is a Snap ML use case."}, {"label": "text", "id": 10, "page_no": 33, "cluster": {"id": 10, "label": "text", "bbox": {"l": 165.18856811523438, "t": 350.73284912109375, "r": 547.19281, "b": 372.73856, "coord_origin": "TOPLEFT"}, "confidence": 0.9013206958770752, "cells": [{"id": 26, "text": "A companion video can be found at Credit Card Fraud Detection by using Snap ML on ", "bbox": {"l": 165.5993, "t": 351.52576, "r": 547.19281, "b": 360.73874, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "IBM Cloud Pak for Data on IBM Z and IBM LinuxONE.", "bbox": {"l": 165.59933, "t": 363.52557, "r": 405.00787, "b": 372.73856, "coord_origin": "TOPLEFT"}}]}, "text": "A companion video can be found at Credit Card Fraud Detection by using Snap ML on IBM Cloud Pak for Data on IBM Z and IBM LinuxONE."}, {"label": "section_header", "id": 11, "page_no": 33, "cluster": {"id": 11, "label": "section_header", "bbox": {"l": 64.41288757324219, "t": 400.2530212402344, "r": 137.74366760253906, "b": 416.2667236328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9588590264320374, "cells": [{"id": 28, "text": "Summary", "bbox": {"l": 64.800003, "t": 401.2207, "r": 137.60794, "b": 415.9837, "coord_origin": "TOPLEFT"}}]}, "text": "Summary"}, {"label": "text", "id": 12, "page_no": 33, "cluster": {"id": 12, "label": "text", "bbox": {"l": 135.86285400390625, "t": 432.6907043457031, "r": 547.16486, "b": 538.8106079101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9881507158279419, "cells": [{"id": 29, "text": "This IBM Redbooksfi publication presented an overview of how IBM Cloud Pak for Data on ", "bbox": {"l": 136.8, "t": 433.48874, "r": 541.99463, "b": 442.70172, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "IBM Z can modernize your data infrastructure; develop and deploy ML and AI models; and ", "bbox": {"l": 136.8, "t": 445.48856, "r": 537.89514, "b": 454.70154, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "instantiate highly efficient analytics deployment on IBM LinuxONE. This publication ", "bbox": {"l": 136.8, "t": 457.48837000000003, "r": 505.11172000000005, "b": 466.70135, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "demonstrated these tasks by guiding the reader through five common use cases where CP4D ", "bbox": {"l": 136.8, "t": 469.48819, "r": 547.16486, "b": 478.70117, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "on IBM Z and IBM LinuxONE uses the different features that are supported on the platform, ", "bbox": {"l": 136.80002, "t": 481.54776, "r": 542.92505, "b": 490.76074, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "and showing how the associated features can help an enterprise to build AI and ML models ", "bbox": {"l": 136.80002, "t": 493.54758, "r": 542.98291, "b": 502.76056, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "with core transactional data, which results in a highly efficient analytics deployment that ", "bbox": {"l": 136.80002, "t": 505.54739, "r": 525.14935, "b": 514.7603799999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "minimizes latency, cost inefficiencies, and potential security exposures that are connected ", "bbox": {"l": 136.8, "t": 517.54721, "r": 536.83246, "b": 526.76019, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "with data transportation.", "bbox": {"l": 136.8, "t": 529.547, "r": 243.47458999999998, "b": 538.76001, "coord_origin": "TOPLEFT"}}]}, "text": "This IBM Redbooksfi publication presented an overview of how IBM Cloud Pak for Data on IBM Z can modernize your data infrastructure; develop and deploy ML and AI models; and instantiate highly efficient analytics deployment on IBM LinuxONE. This publication demonstrated these tasks by guiding the reader through five common use cases where CP4D on IBM Z and IBM LinuxONE uses the different features that are supported on the platform, and showing how the associated features can help an enterprise to build AI and ML models with core transactional data, which results in a highly efficient analytics deployment that minimizes latency, cost inefficiencies, and potential security exposures that are connected with data transportation."}, {"label": "section_header", "id": 13, "page_no": 33, "cluster": {"id": 13, "label": "section_header", "bbox": {"l": 64.06120300292969, "t": 558.3284301757812, "r": 114.58550262451172, "b": 571.36263, "coord_origin": "TOPLEFT"}, "confidence": 0.9354433417320251, "cells": [{"id": 38, "text": "Authors", "bbox": {"l": 64.800003, "t": 559.37462, "r": 114.55733, "b": 571.36263, "coord_origin": "TOPLEFT"}}]}, "text": "Authors"}, {"label": "text", "id": 14, "page_no": 33, "cluster": {"id": 14, "label": "text", "bbox": {"l": 135.81004333496094, "t": 584.623046875, "r": 538.57349, "b": 606.7414200000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9726653099060059, "cells": [{"id": 39, "text": "This publication was produced by a team of specialists from around the world working with ", "bbox": {"l": 136.8, "t": 585.52863, "r": 538.57349, "b": 594.74162, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "the IBM Redbooks team:", "bbox": {"l": 136.8, "t": 597.52843, "r": 246.82411, "b": 606.7414200000001, "coord_origin": "TOPLEFT"}}]}, "text": "This publication was produced by a team of specialists from around the world working with the IBM Redbooks team:"}, {"label": "text", "id": 15, "page_no": 33, "cluster": {"id": 15, "label": "text", "bbox": {"l": 135.75830078125, "t": 618.4910888671875, "r": 547.24359, "b": 676.8506469726562, "coord_origin": "TOPLEFT"}, "confidence": 0.9839816689491272, "cells": [{"id": 41, "text": "Jasmeet Bhatia is ", "bbox": {"l": 136.8, "t": 619.54799, "r": 223.98090000000002, "b": 628.76099, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "an AI on IBM Z Product Manager who supports CP4D on ", "bbox": {"l": 223.97989, "t": 619.54799, "r": 478.39406999999994, "b": 628.76099, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "IBM Z. She has 2.5 years of combined experience as a data scientist and a product manager. ", "bbox": {"l": 136.8, "t": 631.54779, "r": 547.24359, "b": 640.76079, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Jasmeet lives in San Francisco, California and holds a Bachelor of Arts degree in Data ", "bbox": {"l": 136.8, "t": 643.54759, "r": 521.87842, "b": 652.76059, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Science. She is working on her Master of Science degree in Data Science. Her area of ", "bbox": {"l": 136.8, "t": 655.54739, "r": 521.88837, "b": 664.76039, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "expertise includes AI, data science, and product management.", "bbox": {"l": 136.8, "t": 667.5472, "r": 413.00677, "b": 676.7601999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Jasmeet Bhatia is an AI on IBM Z Product Manager who supports CP4D on IBM Z. She has 2.5 years of combined experience as a data scientist and a product manager. Jasmeet lives in San Francisco, California and holds a Bachelor of Arts degree in Data Science. She is working on her Master of Science degree in Data Science. Her area of expertise includes AI, data science, and product management."}], "body": [{"label": "text", "id": 2, "page_no": 33, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.99948120117188, "t": 70.72982025146484, "r": 542.36017, "b": 104.7628173828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9821197390556335, "cells": [{"id": 2, "text": "WML was used for deployment of the pose detection model and generated notifications to ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 536.31464, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "users with web and mobile applications, and it integrates with Fitbit for push notifications so ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 542.36017, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "that hospitals and parents can take preventive actions. ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 380.7294, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}]}, "text": "WML was used for deployment of the pose detection model and generated notifications to users with web and mobile applications, and it integrates with Fitbit for push notifications so that hospitals and parents can take preventive actions."}, {"label": "section_header", "id": 3, "page_no": 33, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 64.3565673828125, "t": 132.1417236328125, "r": 223.86055, "b": 147.96367999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9596555233001709, "cells": [{"id": 5, "text": "Additional resources", "bbox": {"l": 64.800003, "t": 133.20068000000003, "r": 223.86055, "b": 147.96367999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Additional resources"}, {"label": "list_item", "id": 4, "page_no": 33, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.6084747314453, "t": 164.60169982910156, "r": 547.23254, "b": 186.74152000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9761157631874084, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 165.67809999999997, "r": 141.78, "b": 174.45288000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "The Cloud Pak for Data 4.5 on IBM Z Overview Demo video provides an overview of some ", "bbox": {"l": 151.20016, "t": 165.52868999999998, "r": 547.23254, "b": 174.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "of the more important features of CP4D on IBM Z. ", "bbox": {"l": 151.20016, "t": 177.5285, "r": 374.5701, "b": 186.74152000000004, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The Cloud Pak for Data 4.5 on IBM Z Overview Demo video provides an overview of some of the more important features of CP4D on IBM Z."}, {"label": "list_item", "id": 5, "page_no": 33, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.61322021484375, "t": 193.5091094970703, "r": 300.06931, "b": 203.72131000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.925189197063446, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 194.65770999999995, "r": 141.78, "b": 203.4325, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "IBM Cloud Pak for Data Tutorials.", "bbox": {"l": 151.20016, "t": 194.50829999999996, "r": 300.06931, "b": 203.72131000000002, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH IBM Cloud Pak for Data Tutorials."}, {"label": "list_item", "id": 6, "page_no": 33, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.7628173828125, "t": 210.79263305664062, "r": 518.55884, "b": 232.70092999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.977351188659668, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 211.63751000000002, "r": 141.77998, "b": 220.41228999999998, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Here are some additional use cases that use the data science frameworks that are ", "bbox": {"l": 151.20015, "t": 211.48810000000003, "r": 518.55884, "b": 220.70110999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "available as part of CP4D on IBM Z and IBM LinuxONE:", "bbox": {"l": 151.20015, "t": 223.48792000000003, "r": 399.04178, "b": 232.70092999999997, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Here are some additional use cases that use the data science frameworks that are available as part of CP4D on IBM Z and IBM LinuxONE:"}, {"label": "list_item", "id": 7, "page_no": 33, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 151.3540802001953, "t": 240.1075897216797, "r": 527.84058, "b": 261.9636535644531, "coord_origin": "TOPLEFT"}, "confidence": 0.9783041477203369, "cells": [{"id": 14, "text": "-", "bbox": {"l": 152.03978, "t": 240.52747, "r": 157.60841, "b": 249.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Payment Card Fraud Detection by using TensorFlow on CP4D on IBM Z and IBM ", "bbox": {"l": 165.59932, "t": 240.52747, "r": 527.84058, "b": 249.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "LinuxONE is a payment card fraud detection use case.", "bbox": {"l": 165.6003, "t": 252.52728000000002, "r": 407.28174, "b": 261.74030000000005, "coord_origin": "TOPLEFT"}}]}, "text": "-Payment Card Fraud Detection by using TensorFlow on CP4D on IBM Z and IBM LinuxONE is a payment card fraud detection use case."}, {"label": "list_item", "id": 8, "page_no": 33, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 151.2523193359375, "t": 268.774658203125, "r": 539.96179, "b": 290.71991, "coord_origin": "TOPLEFT"}, "confidence": 0.976689338684082, "cells": [{"id": 17, "text": "-", "bbox": {"l": 152.04077, "t": 269.50708, "r": 157.57953, "b": 278.72009, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Fashion-MNIST clothing classification with PyTorch on Cloud Pak for Data on IBM Z ", "bbox": {"l": 165.60031, "t": 269.50708, "r": 539.96179, "b": 278.72009, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "and IBM LinuxONE is a Fashion-MNIST clothing classification use case.", "bbox": {"l": 165.60031, "t": 281.50693, "r": 484.39898999999997, "b": 290.71991, "coord_origin": "TOPLEFT"}}]}, "text": "-Fashion-MNIST clothing classification with PyTorch on Cloud Pak for Data on IBM Z and IBM LinuxONE is a Fashion-MNIST clothing classification use case."}, {"label": "list_item", "id": 9, "page_no": 33, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 151.19593811035156, "t": 297.4288330078125, "r": 547.26764, "b": 343.69916, "coord_origin": "TOPLEFT"}, "confidence": 0.9813570976257324, "cells": [{"id": 20, "text": "-", "bbox": {"l": 152.03976, "t": 298.48672, "r": 157.57753, "b": 307.69971, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Payment Card Fraud Prevention by using Snap ML on IBM Cloud Pak for Data on Red ", "bbox": {"l": 165.5993, "t": 298.48672, "r": 547.26764, "b": 307.69971, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Hat OpenShift on a virtual machine on IBM Z and IBM LinuxONE, which leverage the ", "bbox": {"l": 165.5993, "t": 310.48654, "r": 543.95587, "b": 319.69952, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "z16", "bbox": {"l": 165.5993, "t": 322.48635999999993, "r": 181.70822, "b": 331.69934, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "integrated AI accelerator describes a use case that uses Snap Machine Learning ", "bbox": {"l": 184.48631, "t": 322.48635999999993, "r": 544.4187, "b": 331.69934, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "in Cloud Pak for Data on IBM Z and IBM LinuxONE. It is a Snap ML use case.", "bbox": {"l": 165.5993, "t": 334.48618000000005, "r": 510.15149, "b": 343.69916, "coord_origin": "TOPLEFT"}}]}, "text": "-Payment Card Fraud Prevention by using Snap ML on IBM Cloud Pak for Data on Red Hat OpenShift on a virtual machine on IBM Z and IBM LinuxONE, which leverage the z16 integrated AI accelerator describes a use case that uses Snap Machine Learning in Cloud Pak for Data on IBM Z and IBM LinuxONE. It is a Snap ML use case."}, {"label": "text", "id": 10, "page_no": 33, "cluster": {"id": 10, "label": "text", "bbox": {"l": 165.18856811523438, "t": 350.73284912109375, "r": 547.19281, "b": 372.73856, "coord_origin": "TOPLEFT"}, "confidence": 0.9013206958770752, "cells": [{"id": 26, "text": "A companion video can be found at Credit Card Fraud Detection by using Snap ML on ", "bbox": {"l": 165.5993, "t": 351.52576, "r": 547.19281, "b": 360.73874, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "IBM Cloud Pak for Data on IBM Z and IBM LinuxONE.", "bbox": {"l": 165.59933, "t": 363.52557, "r": 405.00787, "b": 372.73856, "coord_origin": "TOPLEFT"}}]}, "text": "A companion video can be found at Credit Card Fraud Detection by using Snap ML on IBM Cloud Pak for Data on IBM Z and IBM LinuxONE."}, {"label": "section_header", "id": 11, "page_no": 33, "cluster": {"id": 11, "label": "section_header", "bbox": {"l": 64.41288757324219, "t": 400.2530212402344, "r": 137.74366760253906, "b": 416.2667236328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9588590264320374, "cells": [{"id": 28, "text": "Summary", "bbox": {"l": 64.800003, "t": 401.2207, "r": 137.60794, "b": 415.9837, "coord_origin": "TOPLEFT"}}]}, "text": "Summary"}, {"label": "text", "id": 12, "page_no": 33, "cluster": {"id": 12, "label": "text", "bbox": {"l": 135.86285400390625, "t": 432.6907043457031, "r": 547.16486, "b": 538.8106079101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9881507158279419, "cells": [{"id": 29, "text": "This IBM Redbooksfi publication presented an overview of how IBM Cloud Pak for Data on ", "bbox": {"l": 136.8, "t": 433.48874, "r": 541.99463, "b": 442.70172, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "IBM Z can modernize your data infrastructure; develop and deploy ML and AI models; and ", "bbox": {"l": 136.8, "t": 445.48856, "r": 537.89514, "b": 454.70154, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "instantiate highly efficient analytics deployment on IBM LinuxONE. This publication ", "bbox": {"l": 136.8, "t": 457.48837000000003, "r": 505.11172000000005, "b": 466.70135, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "demonstrated these tasks by guiding the reader through five common use cases where CP4D ", "bbox": {"l": 136.8, "t": 469.48819, "r": 547.16486, "b": 478.70117, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "on IBM Z and IBM LinuxONE uses the different features that are supported on the platform, ", "bbox": {"l": 136.80002, "t": 481.54776, "r": 542.92505, "b": 490.76074, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "and showing how the associated features can help an enterprise to build AI and ML models ", "bbox": {"l": 136.80002, "t": 493.54758, "r": 542.98291, "b": 502.76056, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "with core transactional data, which results in a highly efficient analytics deployment that ", "bbox": {"l": 136.80002, "t": 505.54739, "r": 525.14935, "b": 514.7603799999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "minimizes latency, cost inefficiencies, and potential security exposures that are connected ", "bbox": {"l": 136.8, "t": 517.54721, "r": 536.83246, "b": 526.76019, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "with data transportation.", "bbox": {"l": 136.8, "t": 529.547, "r": 243.47458999999998, "b": 538.76001, "coord_origin": "TOPLEFT"}}]}, "text": "This IBM Redbooksfi publication presented an overview of how IBM Cloud Pak for Data on IBM Z can modernize your data infrastructure; develop and deploy ML and AI models; and instantiate highly efficient analytics deployment on IBM LinuxONE. This publication demonstrated these tasks by guiding the reader through five common use cases where CP4D on IBM Z and IBM LinuxONE uses the different features that are supported on the platform, and showing how the associated features can help an enterprise to build AI and ML models with core transactional data, which results in a highly efficient analytics deployment that minimizes latency, cost inefficiencies, and potential security exposures that are connected with data transportation."}, {"label": "section_header", "id": 13, "page_no": 33, "cluster": {"id": 13, "label": "section_header", "bbox": {"l": 64.06120300292969, "t": 558.3284301757812, "r": 114.58550262451172, "b": 571.36263, "coord_origin": "TOPLEFT"}, "confidence": 0.9354433417320251, "cells": [{"id": 38, "text": "Authors", "bbox": {"l": 64.800003, "t": 559.37462, "r": 114.55733, "b": 571.36263, "coord_origin": "TOPLEFT"}}]}, "text": "Authors"}, {"label": "text", "id": 14, "page_no": 33, "cluster": {"id": 14, "label": "text", "bbox": {"l": 135.81004333496094, "t": 584.623046875, "r": 538.57349, "b": 606.7414200000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9726653099060059, "cells": [{"id": 39, "text": "This publication was produced by a team of specialists from around the world working with ", "bbox": {"l": 136.8, "t": 585.52863, "r": 538.57349, "b": 594.74162, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "the IBM Redbooks team:", "bbox": {"l": 136.8, "t": 597.52843, "r": 246.82411, "b": 606.7414200000001, "coord_origin": "TOPLEFT"}}]}, "text": "This publication was produced by a team of specialists from around the world working with the IBM Redbooks team:"}, {"label": "text", "id": 15, "page_no": 33, "cluster": {"id": 15, "label": "text", "bbox": {"l": 135.75830078125, "t": 618.4910888671875, "r": 547.24359, "b": 676.8506469726562, "coord_origin": "TOPLEFT"}, "confidence": 0.9839816689491272, "cells": [{"id": 41, "text": "Jasmeet Bhatia is ", "bbox": {"l": 136.8, "t": 619.54799, "r": 223.98090000000002, "b": 628.76099, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "an AI on IBM Z Product Manager who supports CP4D on ", "bbox": {"l": 223.97989, "t": 619.54799, "r": 478.39406999999994, "b": 628.76099, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "IBM Z. She has 2.5 years of combined experience as a data scientist and a product manager. ", "bbox": {"l": 136.8, "t": 631.54779, "r": 547.24359, "b": 640.76079, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Jasmeet lives in San Francisco, California and holds a Bachelor of Arts degree in Data ", "bbox": {"l": 136.8, "t": 643.54759, "r": 521.87842, "b": 652.76059, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Science. She is working on her Master of Science degree in Data Science. Her area of ", "bbox": {"l": 136.8, "t": 655.54739, "r": 521.88837, "b": 664.76039, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "expertise includes AI, data science, and product management.", "bbox": {"l": 136.8, "t": 667.5472, "r": 413.00677, "b": 676.7601999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Jasmeet Bhatia is an AI on IBM Z Product Manager who supports CP4D on IBM Z. She has 2.5 years of combined experience as a data scientist and a product manager. Jasmeet lives in San Francisco, California and holds a Bachelor of Arts degree in Data Science. She is working on her Master of Science degree in Data Science. Her area of expertise includes AI, data science, and product management."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 33, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.16203308105469, "t": 754.4970092773438, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9191343188285828, "cells": [{"id": 0, "text": "32 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "32"}, {"label": "page_footer", "id": 1, "page_no": 33, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.21607208251953, "t": 754.80419921875, "r": 267.0744, "b": 764.0835571289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9557995200157166, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}]}}, {"page_no": 34, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "33", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Ravi Gummadi ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 209.51355, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "is a Technical Leader for CP4D on Linux on IBM Z and IBM LinuxONE in ", "bbox": {"l": 209.5793, "t": 71.50903000000005, "r": 534.02026, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "India. He has 18+ years of experience in the design and development of enterprise software ", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 546.04022, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "for various platforms, including IBM Z and IBM LinuxONE. He holds a master\u2019s degree in ", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 531.25623, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "computer science and engineering from the Indian Institute of Technology Madras (IIT ", "bbox": {"l": 136.79959, "t": 107.50847999999996, "r": 519.07434, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Madras). His areas of expertise include compilers, virtualization, big data analytics, ", "bbox": {"l": 136.79959, "t": 119.50829999999996, "r": 505.08148, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "containers, data, and AI, with a special focus on open-source ecosystems. ", "bbox": {"l": 136.79855, "t": 131.50811999999996, "r": 467.94659, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Chandra Shekhar Reddy Potula ", "bbox": {"l": 136.79855, "t": 153.52770999999996, "r": 288.96045, "b": 162.74072, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "is a Lead AI on zSystems team Architect for Linux on IBM ", "bbox": {"l": 288.95847, "t": 153.52770999999996, "r": 546.88873, "b": 162.74072, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Z and LinuxONE in India. He has 18+ years of experience in the design and development of ", "bbox": {"l": 136.79855, "t": 165.52752999999996, "r": 545.47125, "b": 174.74054, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "enterprise software and firmware for various platforms, including IBM Z and LinuxONE. He ", "bbox": {"l": 136.79857, "t": 177.52733999999998, "r": 538.87372, "b": 186.74036, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "holds a degree in computer science of engineering from Jawaharlal Nehru Technological ", "bbox": {"l": 136.79857, "t": 189.52715999999998, "r": 531.29541, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "University (JNTU). His areas of expertise include networking, virtualization, containers, data, ", "bbox": {"l": 136.79857, "t": 201.52697999999998, "r": 546.87366, "b": 210.73999000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "and AI, with a special focus on open-source ecosystems.", "bbox": {"l": 136.79857, "t": 213.52679, "r": 388.51468, "b": 222.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Srirama Sharma ", "bbox": {"l": 136.79857, "t": 235.48657000000003, "r": 216.27138, "b": 244.69957999999997, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "is a Lead Technical Architect for IBM Cloud Pak, IBM Instanafi, ", "bbox": {"l": 216.23852999999997, "t": 235.48657000000003, "r": 499.78781, "b": 244.69957999999997, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "IBM Turbonomicfi, and Red Hat Advanced Cluster Management for Kubernetes (RHACM) on ", "bbox": {"l": 136.79855, "t": 247.48639000000003, "r": 547.2561, "b": 256.69939999999997, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "IBM Z and LinuxONE. He has 18+ years of experience in UNIX and Linux application and ", "bbox": {"l": 136.79855, "t": 259.48621, "r": 534.36774, "b": 268.69921999999997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "device driver development. He designs ISV solutions on IBM Systems and IBM Blockchainfi. ", "bbox": {"l": 136.79854, "t": 271.48602000000005, "r": 547.16455, "b": 280.69904, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "He also works on cloud-native adoption of enterprise solutions on IBM Z and LinuxONE. ", "bbox": {"l": 136.79854, "t": 283.48587, "r": 528.54132, "b": 292.69885, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Srirama holds a Bachelor of Engineering degree in computer science from Visvesvaraya ", "bbox": {"l": 136.79854, "t": 295.4856899999999, "r": 529.62482, "b": 304.69867, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Technological University (VTU). He lives in Bangalore, Karnataka. His areas of expertise ", "bbox": {"l": 136.79854, "t": 307.4855, "r": 530.67371, "b": 316.69849, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "include UNIX and Linux systems programming, virtualization, performance benchmarking of ", "bbox": {"l": 136.79854, "t": 319.48532, "r": 544.58588, "b": 328.69829999999996, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Financial Services Sector (FSS) industry solutions, open-source ecosystems, server ", "bbox": {"l": 136.79854, "t": 331.48514, "r": 511.23675999999995, "b": 340.69812, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "infrastructure, and cloud-native adoption and modernization.", "bbox": {"l": 136.79855, "t": 343.48495, "r": 402.9985, "b": 352.69794, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Thanks to the following people for their contributions to this project:", "bbox": {"l": 136.79855, "t": 365.50452, "r": 432.83963000000006, "b": 374.7174999999999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Lydia Parziale, Project Manager", "bbox": {"l": 136.79855, "t": 387.52408, "r": 278.39786, "b": 396.73706, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IBM Redbooks, Poughkeepsie Center", "bbox": {"l": 136.79855, "t": 399.52389999999997, "r": 313.98096, "b": 408.73688, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Shin Kelly Yang, AI on IBM Z Product Management", "bbox": {"l": 136.79855, "t": 421.4837, "r": 364.06973, "b": 430.69669, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "IBM US", "bbox": {"l": 136.79855, "t": 433.48352, "r": 171.76115, "b": 442.6965, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Tom Ramey, Anna Shugol, Andrew Sica, Jonathan Sloan, Elpida Tzortzatos, Meeta Vouk, ", "bbox": {"l": 136.79855, "t": 455.50308, "r": 537.76233, "b": 464.71606, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "IBM", "bbox": {"l": 136.79855, "t": 467.5029, "r": 155.05524, "b": 476.71588, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Now you can become a published author, too!", "bbox": {"l": 64.800003, "t": 497.39474, "r": 349.12164, "b": 509.38272, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Here\u2019s an opportunity to spotlight your skills, grow your career, and become a published ", "bbox": {"l": 136.8, "t": 523.54874, "r": 527.30768, "b": 532.76172, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "author-all at the same time! Join an IBM Redbooks residency project and help write a book ", "bbox": {"l": 136.80099, "t": 535.54852, "r": 546.79138, "b": 544.76154, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "in your area of expertise, while honing your experience using leading-edge technologies. Your ", "bbox": {"l": 136.80099, "t": 547.54834, "r": 547.34802, "b": 556.76134, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "efforts will help to increase product acceptance and customer satisfaction, as you expand ", "bbox": {"l": 136.80099, "t": 559.54814, "r": 533.99384, "b": 568.7611400000001, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "your network of technical contacts and relationships. Residencies run from two to six weeks ", "bbox": {"l": 136.80099, "t": 571.54794, "r": 544.09027, "b": 580.76094, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "in length, and you can participate either in person or as a remote resident working from your ", "bbox": {"l": 136.80099, "t": 583.54774, "r": 545.73767, "b": 592.7607399999999, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "home base. ", "bbox": {"l": 136.80099, "t": 595.54755, "r": 191.81908, "b": 604.76054, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Find out more about the residency program, browse the residency index, and apply online at:", "bbox": {"l": 136.80099, "t": 617.50735, "r": 547.34314, "b": 626.72035, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "ibm.com", "bbox": {"l": 136.80099, "t": 634.69632, "r": 171.7805, "b": 643.5208700000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "/redbooks/residencies.html", "bbox": {"l": 171.78052, "t": 634.69632, "r": 301.6788, "b": 643.47107, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 535.5333251953125, "t": 754.4071655273438, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9167296290397644, "cells": [{"id": 0, "text": "33", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "text", "bbox": {"l": 136.0478515625, "t": 70.53443145751953, "r": 546.04022, "b": 140.83328247070312, "coord_origin": "TOPLEFT"}, "confidence": 0.9852789640426636, "cells": [{"id": 1, "text": "Ravi Gummadi ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 209.51355, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "is a Technical Leader for CP4D on Linux on IBM Z and IBM LinuxONE in ", "bbox": {"l": 209.5793, "t": 71.50903000000005, "r": 534.02026, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "India. He has 18+ years of experience in the design and development of enterprise software ", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 546.04022, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "for various platforms, including IBM Z and IBM LinuxONE. He holds a master\u2019s degree in ", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 531.25623, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "computer science and engineering from the Indian Institute of Technology Madras (IIT ", "bbox": {"l": 136.79959, "t": 107.50847999999996, "r": 519.07434, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Madras). His areas of expertise include compilers, virtualization, big data analytics, ", "bbox": {"l": 136.79959, "t": 119.50829999999996, "r": 505.08148, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "containers, data, and AI, with a special focus on open-source ecosystems. ", "bbox": {"l": 136.79855, "t": 131.50811999999996, "r": 467.94659, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.68675231933594, "t": 152.5322265625, "r": 546.88873, "b": 222.97750854492188, "coord_origin": "TOPLEFT"}, "confidence": 0.9867506623268127, "cells": [{"id": 8, "text": "Chandra Shekhar Reddy Potula ", "bbox": {"l": 136.79855, "t": 153.52770999999996, "r": 288.96045, "b": 162.74072, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "is a Lead AI on zSystems team Architect for Linux on IBM ", "bbox": {"l": 288.95847, "t": 153.52770999999996, "r": 546.88873, "b": 162.74072, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Z and LinuxONE in India. He has 18+ years of experience in the design and development of ", "bbox": {"l": 136.79855, "t": 165.52752999999996, "r": 545.47125, "b": 174.74054, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "enterprise software and firmware for various platforms, including IBM Z and LinuxONE. He ", "bbox": {"l": 136.79857, "t": 177.52733999999998, "r": 538.87372, "b": 186.74036, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "holds a degree in computer science of engineering from Jawaharlal Nehru Technological ", "bbox": {"l": 136.79857, "t": 189.52715999999998, "r": 531.29541, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "University (JNTU). His areas of expertise include networking, virtualization, containers, data, ", "bbox": {"l": 136.79857, "t": 201.52697999999998, "r": 546.87366, "b": 210.73999000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "and AI, with a special focus on open-source ecosystems.", "bbox": {"l": 136.79857, "t": 213.52679, "r": 388.51468, "b": 222.73981000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.7921600341797, "t": 234.6200714111328, "r": 547.2561, "b": 353.1026306152344, "coord_origin": "TOPLEFT"}, "confidence": 0.982275128364563, "cells": [{"id": 15, "text": "Srirama Sharma ", "bbox": {"l": 136.79857, "t": 235.48657000000003, "r": 216.27138, "b": 244.69957999999997, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "is a Lead Technical Architect for IBM Cloud Pak, IBM Instanafi, ", "bbox": {"l": 216.23852999999997, "t": 235.48657000000003, "r": 499.78781, "b": 244.69957999999997, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "IBM Turbonomicfi, and Red Hat Advanced Cluster Management for Kubernetes (RHACM) on ", "bbox": {"l": 136.79855, "t": 247.48639000000003, "r": 547.2561, "b": 256.69939999999997, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "IBM Z and LinuxONE. He has 18+ years of experience in UNIX and Linux application and ", "bbox": {"l": 136.79855, "t": 259.48621, "r": 534.36774, "b": 268.69921999999997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "device driver development. He designs ISV solutions on IBM Systems and IBM Blockchainfi. ", "bbox": {"l": 136.79854, "t": 271.48602000000005, "r": 547.16455, "b": 280.69904, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "He also works on cloud-native adoption of enterprise solutions on IBM Z and LinuxONE. ", "bbox": {"l": 136.79854, "t": 283.48587, "r": 528.54132, "b": 292.69885, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Srirama holds a Bachelor of Engineering degree in computer science from Visvesvaraya ", "bbox": {"l": 136.79854, "t": 295.4856899999999, "r": 529.62482, "b": 304.69867, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Technological University (VTU). He lives in Bangalore, Karnataka. His areas of expertise ", "bbox": {"l": 136.79854, "t": 307.4855, "r": 530.67371, "b": 316.69849, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "include UNIX and Linux systems programming, virtualization, performance benchmarking of ", "bbox": {"l": 136.79854, "t": 319.48532, "r": 544.58588, "b": 328.69829999999996, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Financial Services Sector (FSS) industry solutions, open-source ecosystems, server ", "bbox": {"l": 136.79854, "t": 331.48514, "r": 511.23675999999995, "b": 340.69812, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "infrastructure, and cloud-native adoption and modernization.", "bbox": {"l": 136.79855, "t": 343.48495, "r": 402.9985, "b": 352.69794, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.95065307617188, "t": 364.7558288574219, "r": 432.83963000000006, "b": 374.9332580566406, "coord_origin": "TOPLEFT"}, "confidence": 0.9391803741455078, "cells": [{"id": 26, "text": "Thanks to the following people for their contributions to this project:", "bbox": {"l": 136.79855, "t": 365.50452, "r": 432.83963000000006, "b": 374.7174999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.16671752929688, "t": 386.804443359375, "r": 314.3034973144531, "b": 408.9226379394531, "coord_origin": "TOPLEFT"}, "confidence": 0.6201915740966797, "cells": [{"id": 27, "text": "Lydia Parziale, Project Manager", "bbox": {"l": 136.79855, "t": 387.52408, "r": 278.39786, "b": 396.73706, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IBM Redbooks, Poughkeepsie Center", "bbox": {"l": 136.79855, "t": 399.52389999999997, "r": 313.98096, "b": 408.73688, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 136.28025817871094, "t": 420.2625427246094, "r": 364.17230224609375, "b": 442.6965, "coord_origin": "TOPLEFT"}, "confidence": 0.6776076555252075, "cells": [{"id": 29, "text": "Shin Kelly Yang, AI on IBM Z Product Management", "bbox": {"l": 136.79855, "t": 421.4837, "r": 364.06973, "b": 430.69669, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "IBM US", "bbox": {"l": 136.79855, "t": 433.48352, "r": 171.76115, "b": 442.6965, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 135.87332153320312, "t": 454.5150146484375, "r": 537.76233, "b": 476.71588, "coord_origin": "TOPLEFT"}, "confidence": 0.9579671621322632, "cells": [{"id": 31, "text": "Tom Ramey, Anna Shugol, Andrew Sica, Jonathan Sloan, Elpida Tzortzatos, Meeta Vouk, ", "bbox": {"l": 136.79855, "t": 455.50308, "r": 537.76233, "b": 464.71606, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "IBM", "bbox": {"l": 136.79855, "t": 467.5029, "r": 155.05524, "b": 476.71588, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "section_header", "bbox": {"l": 64.67491912841797, "t": 496.37939453125, "r": 349.12164, "b": 509.6957702636719, "coord_origin": "TOPLEFT"}, "confidence": 0.9542936682701111, "cells": [{"id": 33, "text": "Now you can become a published author, too!", "bbox": {"l": 64.800003, "t": 497.39474, "r": 349.12164, "b": 509.38272, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 135.876953125, "t": 522.6715698242188, "r": 547.34802, "b": 604.76054, "coord_origin": "TOPLEFT"}, "confidence": 0.9869086146354675, "cells": [{"id": 34, "text": "Here\u2019s an opportunity to spotlight your skills, grow your career, and become a published ", "bbox": {"l": 136.8, "t": 523.54874, "r": 527.30768, "b": 532.76172, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "author-all at the same time! Join an IBM Redbooks residency project and help write a book ", "bbox": {"l": 136.80099, "t": 535.54852, "r": 546.79138, "b": 544.76154, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "in your area of expertise, while honing your experience using leading-edge technologies. Your ", "bbox": {"l": 136.80099, "t": 547.54834, "r": 547.34802, "b": 556.76134, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "efforts will help to increase product acceptance and customer satisfaction, as you expand ", "bbox": {"l": 136.80099, "t": 559.54814, "r": 533.99384, "b": 568.7611400000001, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "your network of technical contacts and relationships. Residencies run from two to six weeks ", "bbox": {"l": 136.80099, "t": 571.54794, "r": 544.09027, "b": 580.76094, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "in length, and you can participate either in person or as a remote resident working from your ", "bbox": {"l": 136.80099, "t": 583.54774, "r": 545.73767, "b": 592.7607399999999, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "home base. ", "bbox": {"l": 136.80099, "t": 595.54755, "r": 191.81908, "b": 604.76054, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 136.39222717285156, "t": 616.6399536132812, "r": 547.34314, "b": 626.9110107421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9211773872375488, "cells": [{"id": 41, "text": "Find out more about the residency program, browse the residency index, and apply online at:", "bbox": {"l": 136.80099, "t": 617.50735, "r": 547.34314, "b": 626.72035, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 136.80099, "t": 634.2457275390625, "r": 301.6788, "b": 643.5208700000001, "coord_origin": "TOPLEFT"}, "confidence": 0.8940768241882324, "cells": [{"id": 42, "text": "ibm.com", "bbox": {"l": 136.80099, "t": 634.69632, "r": 171.7805, "b": 643.5208700000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "/redbooks/residencies.html", "bbox": {"l": 171.78052, "t": 634.69632, "r": 301.6788, "b": 643.47107, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 34, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 535.5333251953125, "t": 754.4071655273438, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9167296290397644, "cells": [{"id": 0, "text": "33", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "33"}, {"label": "text", "id": 1, "page_no": 34, "cluster": {"id": 1, "label": "text", "bbox": {"l": 136.0478515625, "t": 70.53443145751953, "r": 546.04022, "b": 140.83328247070312, "coord_origin": "TOPLEFT"}, "confidence": 0.9852789640426636, "cells": [{"id": 1, "text": "Ravi Gummadi ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 209.51355, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "is a Technical Leader for CP4D on Linux on IBM Z and IBM LinuxONE in ", "bbox": {"l": 209.5793, "t": 71.50903000000005, "r": 534.02026, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "India. He has 18+ years of experience in the design and development of enterprise software ", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 546.04022, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "for various platforms, including IBM Z and IBM LinuxONE. He holds a master\u2019s degree in ", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 531.25623, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "computer science and engineering from the Indian Institute of Technology Madras (IIT ", "bbox": {"l": 136.79959, "t": 107.50847999999996, "r": 519.07434, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Madras). His areas of expertise include compilers, virtualization, big data analytics, ", "bbox": {"l": 136.79959, "t": 119.50829999999996, "r": 505.08148, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "containers, data, and AI, with a special focus on open-source ecosystems. ", "bbox": {"l": 136.79855, "t": 131.50811999999996, "r": 467.94659, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Ravi Gummadi is a Technical Leader for CP4D on Linux on IBM Z and IBM LinuxONE in India. He has 18+ years of experience in the design and development of enterprise software for various platforms, including IBM Z and IBM LinuxONE. He holds a master\u2019s degree in computer science and engineering from the Indian Institute of Technology Madras (IIT Madras). His areas of expertise include compilers, virtualization, big data analytics, containers, data, and AI, with a special focus on open-source ecosystems."}, {"label": "text", "id": 2, "page_no": 34, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.68675231933594, "t": 152.5322265625, "r": 546.88873, "b": 222.97750854492188, "coord_origin": "TOPLEFT"}, "confidence": 0.9867506623268127, "cells": [{"id": 8, "text": "Chandra Shekhar Reddy Potula ", "bbox": {"l": 136.79855, "t": 153.52770999999996, "r": 288.96045, "b": 162.74072, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "is a Lead AI on zSystems team Architect for Linux on IBM ", "bbox": {"l": 288.95847, "t": 153.52770999999996, "r": 546.88873, "b": 162.74072, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Z and LinuxONE in India. He has 18+ years of experience in the design and development of ", "bbox": {"l": 136.79855, "t": 165.52752999999996, "r": 545.47125, "b": 174.74054, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "enterprise software and firmware for various platforms, including IBM Z and LinuxONE. He ", "bbox": {"l": 136.79857, "t": 177.52733999999998, "r": 538.87372, "b": 186.74036, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "holds a degree in computer science of engineering from Jawaharlal Nehru Technological ", "bbox": {"l": 136.79857, "t": 189.52715999999998, "r": 531.29541, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "University (JNTU). His areas of expertise include networking, virtualization, containers, data, ", "bbox": {"l": 136.79857, "t": 201.52697999999998, "r": 546.87366, "b": 210.73999000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "and AI, with a special focus on open-source ecosystems.", "bbox": {"l": 136.79857, "t": 213.52679, "r": 388.51468, "b": 222.73981000000003, "coord_origin": "TOPLEFT"}}]}, "text": "Chandra Shekhar Reddy Potula is a Lead AI on zSystems team Architect for Linux on IBM Z and LinuxONE in India. He has 18+ years of experience in the design and development of enterprise software and firmware for various platforms, including IBM Z and LinuxONE. He holds a degree in computer science of engineering from Jawaharlal Nehru Technological University (JNTU). His areas of expertise include networking, virtualization, containers, data, and AI, with a special focus on open-source ecosystems."}, {"label": "text", "id": 3, "page_no": 34, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.7921600341797, "t": 234.6200714111328, "r": 547.2561, "b": 353.1026306152344, "coord_origin": "TOPLEFT"}, "confidence": 0.982275128364563, "cells": [{"id": 15, "text": "Srirama Sharma ", "bbox": {"l": 136.79857, "t": 235.48657000000003, "r": 216.27138, "b": 244.69957999999997, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "is a Lead Technical Architect for IBM Cloud Pak, IBM Instanafi, ", "bbox": {"l": 216.23852999999997, "t": 235.48657000000003, "r": 499.78781, "b": 244.69957999999997, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "IBM Turbonomicfi, and Red Hat Advanced Cluster Management for Kubernetes (RHACM) on ", "bbox": {"l": 136.79855, "t": 247.48639000000003, "r": 547.2561, "b": 256.69939999999997, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "IBM Z and LinuxONE. He has 18+ years of experience in UNIX and Linux application and ", "bbox": {"l": 136.79855, "t": 259.48621, "r": 534.36774, "b": 268.69921999999997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "device driver development. He designs ISV solutions on IBM Systems and IBM Blockchainfi. ", "bbox": {"l": 136.79854, "t": 271.48602000000005, "r": 547.16455, "b": 280.69904, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "He also works on cloud-native adoption of enterprise solutions on IBM Z and LinuxONE. ", "bbox": {"l": 136.79854, "t": 283.48587, "r": 528.54132, "b": 292.69885, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Srirama holds a Bachelor of Engineering degree in computer science from Visvesvaraya ", "bbox": {"l": 136.79854, "t": 295.4856899999999, "r": 529.62482, "b": 304.69867, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Technological University (VTU). He lives in Bangalore, Karnataka. His areas of expertise ", "bbox": {"l": 136.79854, "t": 307.4855, "r": 530.67371, "b": 316.69849, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "include UNIX and Linux systems programming, virtualization, performance benchmarking of ", "bbox": {"l": 136.79854, "t": 319.48532, "r": 544.58588, "b": 328.69829999999996, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Financial Services Sector (FSS) industry solutions, open-source ecosystems, server ", "bbox": {"l": 136.79854, "t": 331.48514, "r": 511.23675999999995, "b": 340.69812, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "infrastructure, and cloud-native adoption and modernization.", "bbox": {"l": 136.79855, "t": 343.48495, "r": 402.9985, "b": 352.69794, "coord_origin": "TOPLEFT"}}]}, "text": "Srirama Sharma is a Lead Technical Architect for IBM Cloud Pak, IBM Instanafi, IBM Turbonomicfi, and Red Hat Advanced Cluster Management for Kubernetes (RHACM) on IBM Z and LinuxONE. He has 18+ years of experience in UNIX and Linux application and device driver development. He designs ISV solutions on IBM Systems and IBM Blockchainfi. He also works on cloud-native adoption of enterprise solutions on IBM Z and LinuxONE. Srirama holds a Bachelor of Engineering degree in computer science from Visvesvaraya Technological University (VTU). He lives in Bangalore, Karnataka. His areas of expertise include UNIX and Linux systems programming, virtualization, performance benchmarking of Financial Services Sector (FSS) industry solutions, open-source ecosystems, server infrastructure, and cloud-native adoption and modernization."}, {"label": "text", "id": 4, "page_no": 34, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.95065307617188, "t": 364.7558288574219, "r": 432.83963000000006, "b": 374.9332580566406, "coord_origin": "TOPLEFT"}, "confidence": 0.9391803741455078, "cells": [{"id": 26, "text": "Thanks to the following people for their contributions to this project:", "bbox": {"l": 136.79855, "t": 365.50452, "r": 432.83963000000006, "b": 374.7174999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Thanks to the following people for their contributions to this project:"}, {"label": "text", "id": 5, "page_no": 34, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.16671752929688, "t": 386.804443359375, "r": 314.3034973144531, "b": 408.9226379394531, "coord_origin": "TOPLEFT"}, "confidence": 0.6201915740966797, "cells": [{"id": 27, "text": "Lydia Parziale, Project Manager", "bbox": {"l": 136.79855, "t": 387.52408, "r": 278.39786, "b": 396.73706, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IBM Redbooks, Poughkeepsie Center", "bbox": {"l": 136.79855, "t": 399.52389999999997, "r": 313.98096, "b": 408.73688, "coord_origin": "TOPLEFT"}}]}, "text": "Lydia Parziale, Project Manager IBM Redbooks, Poughkeepsie Center"}, {"label": "text", "id": 6, "page_no": 34, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.28025817871094, "t": 420.2625427246094, "r": 364.17230224609375, "b": 442.6965, "coord_origin": "TOPLEFT"}, "confidence": 0.6776076555252075, "cells": [{"id": 29, "text": "Shin Kelly Yang, AI on IBM Z Product Management", "bbox": {"l": 136.79855, "t": 421.4837, "r": 364.06973, "b": 430.69669, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "IBM US", "bbox": {"l": 136.79855, "t": 433.48352, "r": 171.76115, "b": 442.6965, "coord_origin": "TOPLEFT"}}]}, "text": "Shin Kelly Yang, AI on IBM Z Product Management IBM US"}, {"label": "text", "id": 7, "page_no": 34, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.87332153320312, "t": 454.5150146484375, "r": 537.76233, "b": 476.71588, "coord_origin": "TOPLEFT"}, "confidence": 0.9579671621322632, "cells": [{"id": 31, "text": "Tom Ramey, Anna Shugol, Andrew Sica, Jonathan Sloan, Elpida Tzortzatos, Meeta Vouk, ", "bbox": {"l": 136.79855, "t": 455.50308, "r": 537.76233, "b": 464.71606, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "IBM", "bbox": {"l": 136.79855, "t": 467.5029, "r": 155.05524, "b": 476.71588, "coord_origin": "TOPLEFT"}}]}, "text": "Tom Ramey, Anna Shugol, Andrew Sica, Jonathan Sloan, Elpida Tzortzatos, Meeta Vouk, IBM"}, {"label": "section_header", "id": 8, "page_no": 34, "cluster": {"id": 8, "label": "section_header", "bbox": {"l": 64.67491912841797, "t": 496.37939453125, "r": 349.12164, "b": 509.6957702636719, "coord_origin": "TOPLEFT"}, "confidence": 0.9542936682701111, "cells": [{"id": 33, "text": "Now you can become a published author, too!", "bbox": {"l": 64.800003, "t": 497.39474, "r": 349.12164, "b": 509.38272, "coord_origin": "TOPLEFT"}}]}, "text": "Now you can become a published author, too!"}, {"label": "text", "id": 9, "page_no": 34, "cluster": {"id": 9, "label": "text", "bbox": {"l": 135.876953125, "t": 522.6715698242188, "r": 547.34802, "b": 604.76054, "coord_origin": "TOPLEFT"}, "confidence": 0.9869086146354675, "cells": [{"id": 34, "text": "Here\u2019s an opportunity to spotlight your skills, grow your career, and become a published ", "bbox": {"l": 136.8, "t": 523.54874, "r": 527.30768, "b": 532.76172, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "author-all at the same time! Join an IBM Redbooks residency project and help write a book ", "bbox": {"l": 136.80099, "t": 535.54852, "r": 546.79138, "b": 544.76154, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "in your area of expertise, while honing your experience using leading-edge technologies. Your ", "bbox": {"l": 136.80099, "t": 547.54834, "r": 547.34802, "b": 556.76134, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "efforts will help to increase product acceptance and customer satisfaction, as you expand ", "bbox": {"l": 136.80099, "t": 559.54814, "r": 533.99384, "b": 568.7611400000001, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "your network of technical contacts and relationships. Residencies run from two to six weeks ", "bbox": {"l": 136.80099, "t": 571.54794, "r": 544.09027, "b": 580.76094, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "in length, and you can participate either in person or as a remote resident working from your ", "bbox": {"l": 136.80099, "t": 583.54774, "r": 545.73767, "b": 592.7607399999999, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "home base. ", "bbox": {"l": 136.80099, "t": 595.54755, "r": 191.81908, "b": 604.76054, "coord_origin": "TOPLEFT"}}]}, "text": "Here\u2019s an opportunity to spotlight your skills, grow your career, and become a published author-all at the same time! Join an IBM Redbooks residency project and help write a book in your area of expertise, while honing your experience using leading-edge technologies. Your efforts will help to increase product acceptance and customer satisfaction, as you expand your network of technical contacts and relationships. Residencies run from two to six weeks in length, and you can participate either in person or as a remote resident working from your home base."}, {"label": "text", "id": 10, "page_no": 34, "cluster": {"id": 10, "label": "text", "bbox": {"l": 136.39222717285156, "t": 616.6399536132812, "r": 547.34314, "b": 626.9110107421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9211773872375488, "cells": [{"id": 41, "text": "Find out more about the residency program, browse the residency index, and apply online at:", "bbox": {"l": 136.80099, "t": 617.50735, "r": 547.34314, "b": 626.72035, "coord_origin": "TOPLEFT"}}]}, "text": "Find out more about the residency program, browse the residency index, and apply online at:"}, {"label": "text", "id": 11, "page_no": 34, "cluster": {"id": 11, "label": "text", "bbox": {"l": 136.80099, "t": 634.2457275390625, "r": 301.6788, "b": 643.5208700000001, "coord_origin": "TOPLEFT"}, "confidence": 0.8940768241882324, "cells": [{"id": 42, "text": "ibm.com", "bbox": {"l": 136.80099, "t": 634.69632, "r": 171.7805, "b": 643.5208700000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "/redbooks/residencies.html", "bbox": {"l": 171.78052, "t": 634.69632, "r": 301.6788, "b": 643.47107, "coord_origin": "TOPLEFT"}}]}, "text": "ibm.com /redbooks/residencies.html"}], "body": [{"label": "text", "id": 1, "page_no": 34, "cluster": {"id": 1, "label": "text", "bbox": {"l": 136.0478515625, "t": 70.53443145751953, "r": 546.04022, "b": 140.83328247070312, "coord_origin": "TOPLEFT"}, "confidence": 0.9852789640426636, "cells": [{"id": 1, "text": "Ravi Gummadi ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 209.51355, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "is a Technical Leader for CP4D on Linux on IBM Z and IBM LinuxONE in ", "bbox": {"l": 209.5793, "t": 71.50903000000005, "r": 534.02026, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "India. He has 18+ years of experience in the design and development of enterprise software ", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 546.04022, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "for various platforms, including IBM Z and IBM LinuxONE. He holds a master\u2019s degree in ", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 531.25623, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "computer science and engineering from the Indian Institute of Technology Madras (IIT ", "bbox": {"l": 136.79959, "t": 107.50847999999996, "r": 519.07434, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Madras). His areas of expertise include compilers, virtualization, big data analytics, ", "bbox": {"l": 136.79959, "t": 119.50829999999996, "r": 505.08148, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "containers, data, and AI, with a special focus on open-source ecosystems. ", "bbox": {"l": 136.79855, "t": 131.50811999999996, "r": 467.94659, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Ravi Gummadi is a Technical Leader for CP4D on Linux on IBM Z and IBM LinuxONE in India. He has 18+ years of experience in the design and development of enterprise software for various platforms, including IBM Z and IBM LinuxONE. He holds a master\u2019s degree in computer science and engineering from the Indian Institute of Technology Madras (IIT Madras). His areas of expertise include compilers, virtualization, big data analytics, containers, data, and AI, with a special focus on open-source ecosystems."}, {"label": "text", "id": 2, "page_no": 34, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.68675231933594, "t": 152.5322265625, "r": 546.88873, "b": 222.97750854492188, "coord_origin": "TOPLEFT"}, "confidence": 0.9867506623268127, "cells": [{"id": 8, "text": "Chandra Shekhar Reddy Potula ", "bbox": {"l": 136.79855, "t": 153.52770999999996, "r": 288.96045, "b": 162.74072, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "is a Lead AI on zSystems team Architect for Linux on IBM ", "bbox": {"l": 288.95847, "t": 153.52770999999996, "r": 546.88873, "b": 162.74072, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Z and LinuxONE in India. He has 18+ years of experience in the design and development of ", "bbox": {"l": 136.79855, "t": 165.52752999999996, "r": 545.47125, "b": 174.74054, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "enterprise software and firmware for various platforms, including IBM Z and LinuxONE. He ", "bbox": {"l": 136.79857, "t": 177.52733999999998, "r": 538.87372, "b": 186.74036, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "holds a degree in computer science of engineering from Jawaharlal Nehru Technological ", "bbox": {"l": 136.79857, "t": 189.52715999999998, "r": 531.29541, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "University (JNTU). His areas of expertise include networking, virtualization, containers, data, ", "bbox": {"l": 136.79857, "t": 201.52697999999998, "r": 546.87366, "b": 210.73999000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "and AI, with a special focus on open-source ecosystems.", "bbox": {"l": 136.79857, "t": 213.52679, "r": 388.51468, "b": 222.73981000000003, "coord_origin": "TOPLEFT"}}]}, "text": "Chandra Shekhar Reddy Potula is a Lead AI on zSystems team Architect for Linux on IBM Z and LinuxONE in India. He has 18+ years of experience in the design and development of enterprise software and firmware for various platforms, including IBM Z and LinuxONE. He holds a degree in computer science of engineering from Jawaharlal Nehru Technological University (JNTU). His areas of expertise include networking, virtualization, containers, data, and AI, with a special focus on open-source ecosystems."}, {"label": "text", "id": 3, "page_no": 34, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.7921600341797, "t": 234.6200714111328, "r": 547.2561, "b": 353.1026306152344, "coord_origin": "TOPLEFT"}, "confidence": 0.982275128364563, "cells": [{"id": 15, "text": "Srirama Sharma ", "bbox": {"l": 136.79857, "t": 235.48657000000003, "r": 216.27138, "b": 244.69957999999997, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "is a Lead Technical Architect for IBM Cloud Pak, IBM Instanafi, ", "bbox": {"l": 216.23852999999997, "t": 235.48657000000003, "r": 499.78781, "b": 244.69957999999997, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "IBM Turbonomicfi, and Red Hat Advanced Cluster Management for Kubernetes (RHACM) on ", "bbox": {"l": 136.79855, "t": 247.48639000000003, "r": 547.2561, "b": 256.69939999999997, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "IBM Z and LinuxONE. He has 18+ years of experience in UNIX and Linux application and ", "bbox": {"l": 136.79855, "t": 259.48621, "r": 534.36774, "b": 268.69921999999997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "device driver development. He designs ISV solutions on IBM Systems and IBM Blockchainfi. ", "bbox": {"l": 136.79854, "t": 271.48602000000005, "r": 547.16455, "b": 280.69904, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "He also works on cloud-native adoption of enterprise solutions on IBM Z and LinuxONE. ", "bbox": {"l": 136.79854, "t": 283.48587, "r": 528.54132, "b": 292.69885, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Srirama holds a Bachelor of Engineering degree in computer science from Visvesvaraya ", "bbox": {"l": 136.79854, "t": 295.4856899999999, "r": 529.62482, "b": 304.69867, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Technological University (VTU). He lives in Bangalore, Karnataka. His areas of expertise ", "bbox": {"l": 136.79854, "t": 307.4855, "r": 530.67371, "b": 316.69849, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "include UNIX and Linux systems programming, virtualization, performance benchmarking of ", "bbox": {"l": 136.79854, "t": 319.48532, "r": 544.58588, "b": 328.69829999999996, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Financial Services Sector (FSS) industry solutions, open-source ecosystems, server ", "bbox": {"l": 136.79854, "t": 331.48514, "r": 511.23675999999995, "b": 340.69812, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "infrastructure, and cloud-native adoption and modernization.", "bbox": {"l": 136.79855, "t": 343.48495, "r": 402.9985, "b": 352.69794, "coord_origin": "TOPLEFT"}}]}, "text": "Srirama Sharma is a Lead Technical Architect for IBM Cloud Pak, IBM Instanafi, IBM Turbonomicfi, and Red Hat Advanced Cluster Management for Kubernetes (RHACM) on IBM Z and LinuxONE. He has 18+ years of experience in UNIX and Linux application and device driver development. He designs ISV solutions on IBM Systems and IBM Blockchainfi. He also works on cloud-native adoption of enterprise solutions on IBM Z and LinuxONE. Srirama holds a Bachelor of Engineering degree in computer science from Visvesvaraya Technological University (VTU). He lives in Bangalore, Karnataka. His areas of expertise include UNIX and Linux systems programming, virtualization, performance benchmarking of Financial Services Sector (FSS) industry solutions, open-source ecosystems, server infrastructure, and cloud-native adoption and modernization."}, {"label": "text", "id": 4, "page_no": 34, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.95065307617188, "t": 364.7558288574219, "r": 432.83963000000006, "b": 374.9332580566406, "coord_origin": "TOPLEFT"}, "confidence": 0.9391803741455078, "cells": [{"id": 26, "text": "Thanks to the following people for their contributions to this project:", "bbox": {"l": 136.79855, "t": 365.50452, "r": 432.83963000000006, "b": 374.7174999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Thanks to the following people for their contributions to this project:"}, {"label": "text", "id": 5, "page_no": 34, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.16671752929688, "t": 386.804443359375, "r": 314.3034973144531, "b": 408.9226379394531, "coord_origin": "TOPLEFT"}, "confidence": 0.6201915740966797, "cells": [{"id": 27, "text": "Lydia Parziale, Project Manager", "bbox": {"l": 136.79855, "t": 387.52408, "r": 278.39786, "b": 396.73706, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IBM Redbooks, Poughkeepsie Center", "bbox": {"l": 136.79855, "t": 399.52389999999997, "r": 313.98096, "b": 408.73688, "coord_origin": "TOPLEFT"}}]}, "text": "Lydia Parziale, Project Manager IBM Redbooks, Poughkeepsie Center"}, {"label": "text", "id": 6, "page_no": 34, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.28025817871094, "t": 420.2625427246094, "r": 364.17230224609375, "b": 442.6965, "coord_origin": "TOPLEFT"}, "confidence": 0.6776076555252075, "cells": [{"id": 29, "text": "Shin Kelly Yang, AI on IBM Z Product Management", "bbox": {"l": 136.79855, "t": 421.4837, "r": 364.06973, "b": 430.69669, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "IBM US", "bbox": {"l": 136.79855, "t": 433.48352, "r": 171.76115, "b": 442.6965, "coord_origin": "TOPLEFT"}}]}, "text": "Shin Kelly Yang, AI on IBM Z Product Management IBM US"}, {"label": "text", "id": 7, "page_no": 34, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.87332153320312, "t": 454.5150146484375, "r": 537.76233, "b": 476.71588, "coord_origin": "TOPLEFT"}, "confidence": 0.9579671621322632, "cells": [{"id": 31, "text": "Tom Ramey, Anna Shugol, Andrew Sica, Jonathan Sloan, Elpida Tzortzatos, Meeta Vouk, ", "bbox": {"l": 136.79855, "t": 455.50308, "r": 537.76233, "b": 464.71606, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "IBM", "bbox": {"l": 136.79855, "t": 467.5029, "r": 155.05524, "b": 476.71588, "coord_origin": "TOPLEFT"}}]}, "text": "Tom Ramey, Anna Shugol, Andrew Sica, Jonathan Sloan, Elpida Tzortzatos, Meeta Vouk, IBM"}, {"label": "section_header", "id": 8, "page_no": 34, "cluster": {"id": 8, "label": "section_header", "bbox": {"l": 64.67491912841797, "t": 496.37939453125, "r": 349.12164, "b": 509.6957702636719, "coord_origin": "TOPLEFT"}, "confidence": 0.9542936682701111, "cells": [{"id": 33, "text": "Now you can become a published author, too!", "bbox": {"l": 64.800003, "t": 497.39474, "r": 349.12164, "b": 509.38272, "coord_origin": "TOPLEFT"}}]}, "text": "Now you can become a published author, too!"}, {"label": "text", "id": 9, "page_no": 34, "cluster": {"id": 9, "label": "text", "bbox": {"l": 135.876953125, "t": 522.6715698242188, "r": 547.34802, "b": 604.76054, "coord_origin": "TOPLEFT"}, "confidence": 0.9869086146354675, "cells": [{"id": 34, "text": "Here\u2019s an opportunity to spotlight your skills, grow your career, and become a published ", "bbox": {"l": 136.8, "t": 523.54874, "r": 527.30768, "b": 532.76172, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "author-all at the same time! Join an IBM Redbooks residency project and help write a book ", "bbox": {"l": 136.80099, "t": 535.54852, "r": 546.79138, "b": 544.76154, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "in your area of expertise, while honing your experience using leading-edge technologies. Your ", "bbox": {"l": 136.80099, "t": 547.54834, "r": 547.34802, "b": 556.76134, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "efforts will help to increase product acceptance and customer satisfaction, as you expand ", "bbox": {"l": 136.80099, "t": 559.54814, "r": 533.99384, "b": 568.7611400000001, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "your network of technical contacts and relationships. Residencies run from two to six weeks ", "bbox": {"l": 136.80099, "t": 571.54794, "r": 544.09027, "b": 580.76094, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "in length, and you can participate either in person or as a remote resident working from your ", "bbox": {"l": 136.80099, "t": 583.54774, "r": 545.73767, "b": 592.7607399999999, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "home base. ", "bbox": {"l": 136.80099, "t": 595.54755, "r": 191.81908, "b": 604.76054, "coord_origin": "TOPLEFT"}}]}, "text": "Here\u2019s an opportunity to spotlight your skills, grow your career, and become a published author-all at the same time! Join an IBM Redbooks residency project and help write a book in your area of expertise, while honing your experience using leading-edge technologies. Your efforts will help to increase product acceptance and customer satisfaction, as you expand your network of technical contacts and relationships. Residencies run from two to six weeks in length, and you can participate either in person or as a remote resident working from your home base."}, {"label": "text", "id": 10, "page_no": 34, "cluster": {"id": 10, "label": "text", "bbox": {"l": 136.39222717285156, "t": 616.6399536132812, "r": 547.34314, "b": 626.9110107421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9211773872375488, "cells": [{"id": 41, "text": "Find out more about the residency program, browse the residency index, and apply online at:", "bbox": {"l": 136.80099, "t": 617.50735, "r": 547.34314, "b": 626.72035, "coord_origin": "TOPLEFT"}}]}, "text": "Find out more about the residency program, browse the residency index, and apply online at:"}, {"label": "text", "id": 11, "page_no": 34, "cluster": {"id": 11, "label": "text", "bbox": {"l": 136.80099, "t": 634.2457275390625, "r": 301.6788, "b": 643.5208700000001, "coord_origin": "TOPLEFT"}, "confidence": 0.8940768241882324, "cells": [{"id": 42, "text": "ibm.com", "bbox": {"l": 136.80099, "t": 634.69632, "r": 171.7805, "b": 643.5208700000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "/redbooks/residencies.html", "bbox": {"l": 171.78052, "t": 634.69632, "r": 301.6788, "b": 643.47107, "coord_origin": "TOPLEFT"}}]}, "text": "ibm.com /redbooks/residencies.html"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 34, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 535.5333251953125, "t": 754.4071655273438, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9167296290397644, "cells": [{"id": 0, "text": "33", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "33"}]}}, {"page_no": 35, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "34 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Stay connected to IBM Redbooks", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 270.48557, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "GLYPH", "bbox": {"l": 136.8, "t": 97.63812000000007, "r": 141.78, "b": 106.41289999999992, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Find us on LinkedIn:", "bbox": {"l": 151.20016, "t": 97.48870999999997, "r": 241.26647999999997, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "http://www.linkedin.com/groups?home=&gid=2130806", "bbox": {"l": 151.20016, "t": 114.67767000000003, "r": 391.07678, "b": 123.45245, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 131.65747, "r": 141.78, "b": 140.43224999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Explore new Redbooks publications, residencies, and workshops with the IBM Redbooks ", "bbox": {"l": 151.20016, "t": 131.50806, "r": 546.83832, "b": 140.72107000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "weekly newsletter:", "bbox": {"l": 151.20016, "t": 143.50787000000003, "r": 232.75266, "b": 152.72089000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "https://www.redbooks.ibm.com/Redbooks.nsf/subscribe?OpenForm", "bbox": {"l": 151.20016, "t": 160.63707999999997, "r": 451.01605, "b": 169.41187000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "GLYPH", "bbox": {"l": 136.8, "t": 177.67664000000002, "r": 141.78, "b": 186.45141999999998, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Stay current on recent Redbooks publications with RSS Feeds:", "bbox": {"l": 151.20016, "t": 177.52722000000006, "r": 430.14783, "b": 186.74023, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "http://www.redbooks.ibm.com/rss.html", "bbox": {"l": 151.20016, "t": 194.65643, "r": 331.07773, "b": 203.43120999999996, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.23326110839844, "t": 754.4552612304688, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9102703928947449, "cells": [{"id": 0, "text": "34 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.27912139892578, "t": 754.7698974609375, "r": 267.0744, "b": 764.12158203125, "coord_origin": "TOPLEFT"}, "confidence": 0.950810968875885, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.4889907836914, "t": 70.36857604980469, "r": 270.48557, "b": 83.64260864257812, "coord_origin": "TOPLEFT"}, "confidence": 0.9555448889732361, "cells": [{"id": 2, "text": "Stay connected to IBM Redbooks", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 270.48557, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "list_item", "bbox": {"l": 135.56192016601562, "t": 96.5151596069336, "r": 241.26647999999997, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}, "confidence": 0.8996357917785645, "cells": [{"id": 3, "text": "GLYPH", "bbox": {"l": 136.8, "t": 97.63812000000007, "r": 141.78, "b": 106.41289999999992, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Find us on LinkedIn:", "bbox": {"l": 151.20016, "t": 97.48870999999997, "r": 241.26647999999997, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 150.71234130859375, "t": 114.1937255859375, "r": 391.07678, "b": 123.93498229980469, "coord_origin": "TOPLEFT"}, "confidence": 0.6805561184883118, "cells": [{"id": 5, "text": "http://www.linkedin.com/groups?home=&gid=2130806", "bbox": {"l": 151.20016, "t": 114.67767000000003, "r": 391.07678, "b": 123.45245, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 135.51414489746094, "t": 130.8223114013672, "r": 546.83832, "b": 152.72089000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9532178640365601, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 131.65747, "r": 141.78, "b": 140.43224999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Explore new Redbooks publications, residencies, and workshops with the IBM Redbooks ", "bbox": {"l": 151.20016, "t": 131.50806, "r": 546.83832, "b": 140.72107000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "weekly newsletter:", "bbox": {"l": 151.20016, "t": 143.50787000000003, "r": 232.75266, "b": 152.72089000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 150.69110107421875, "t": 159.39158630371094, "r": 451.35418701171875, "b": 169.41187000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.676043689250946, "cells": [{"id": 9, "text": "https://www.redbooks.ibm.com/Redbooks.nsf/subscribe?OpenForm", "bbox": {"l": 151.20016, "t": 160.63707999999997, "r": 451.01605, "b": 169.41187000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.90457153320312, "t": 176.64987182617188, "r": 430.14783, "b": 187.12718200683594, "coord_origin": "TOPLEFT"}, "confidence": 0.9175106287002563, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.8, "t": 177.67664000000002, "r": 141.78, "b": 186.45141999999998, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Stay current on recent Redbooks publications with RSS Feeds:", "bbox": {"l": 151.20016, "t": 177.52722000000006, "r": 430.14783, "b": 186.74023, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 150.6310272216797, "t": 193.73944091796875, "r": 331.07773, "b": 203.43120999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.7000716924667358, "cells": [{"id": 12, "text": "http://www.redbooks.ibm.com/rss.html", "bbox": {"l": 151.20016, "t": 194.65643, "r": 331.07773, "b": 203.43120999999996, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 35, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.23326110839844, "t": 754.4552612304688, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9102703928947449, "cells": [{"id": 0, "text": "34 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "34"}, {"label": "page_footer", "id": 1, "page_no": 35, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.27912139892578, "t": 754.7698974609375, "r": 267.0744, "b": 764.12158203125, "coord_origin": "TOPLEFT"}, "confidence": 0.950810968875885, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"label": "section_header", "id": 2, "page_no": 35, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.4889907836914, "t": 70.36857604980469, "r": 270.48557, "b": 83.64260864257812, "coord_origin": "TOPLEFT"}, "confidence": 0.9555448889732361, "cells": [{"id": 2, "text": "Stay connected to IBM Redbooks", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 270.48557, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Stay connected to IBM Redbooks"}, {"label": "list_item", "id": 3, "page_no": 35, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 135.56192016601562, "t": 96.5151596069336, "r": 241.26647999999997, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}, "confidence": 0.8996357917785645, "cells": [{"id": 3, "text": "GLYPH", "bbox": {"l": 136.8, "t": 97.63812000000007, "r": 141.78, "b": 106.41289999999992, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Find us on LinkedIn:", "bbox": {"l": 151.20016, "t": 97.48870999999997, "r": 241.26647999999997, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Find us on LinkedIn:"}, {"label": "text", "id": 4, "page_no": 35, "cluster": {"id": 4, "label": "text", "bbox": {"l": 150.71234130859375, "t": 114.1937255859375, "r": 391.07678, "b": 123.93498229980469, "coord_origin": "TOPLEFT"}, "confidence": 0.6805561184883118, "cells": [{"id": 5, "text": "http://www.linkedin.com/groups?home=&gid=2130806", "bbox": {"l": 151.20016, "t": 114.67767000000003, "r": 391.07678, "b": 123.45245, "coord_origin": "TOPLEFT"}}]}, "text": "http://www.linkedin.com/groups?home=&gid=2130806"}, {"label": "list_item", "id": 5, "page_no": 35, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.51414489746094, "t": 130.8223114013672, "r": 546.83832, "b": 152.72089000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9532178640365601, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 131.65747, "r": 141.78, "b": 140.43224999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Explore new Redbooks publications, residencies, and workshops with the IBM Redbooks ", "bbox": {"l": 151.20016, "t": 131.50806, "r": 546.83832, "b": 140.72107000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "weekly newsletter:", "bbox": {"l": 151.20016, "t": 143.50787000000003, "r": 232.75266, "b": 152.72089000000005, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Explore new Redbooks publications, residencies, and workshops with the IBM Redbooks weekly newsletter:"}, {"label": "list_item", "id": 6, "page_no": 35, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 150.69110107421875, "t": 159.39158630371094, "r": 451.35418701171875, "b": 169.41187000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.676043689250946, "cells": [{"id": 9, "text": "https://www.redbooks.ibm.com/Redbooks.nsf/subscribe?OpenForm", "bbox": {"l": 151.20016, "t": 160.63707999999997, "r": 451.01605, "b": 169.41187000000002, "coord_origin": "TOPLEFT"}}]}, "text": "https://www.redbooks.ibm.com/Redbooks.nsf/subscribe?OpenForm"}, {"label": "list_item", "id": 7, "page_no": 35, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.90457153320312, "t": 176.64987182617188, "r": 430.14783, "b": 187.12718200683594, "coord_origin": "TOPLEFT"}, "confidence": 0.9175106287002563, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.8, "t": 177.67664000000002, "r": 141.78, "b": 186.45141999999998, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Stay current on recent Redbooks publications with RSS Feeds:", "bbox": {"l": 151.20016, "t": 177.52722000000006, "r": 430.14783, "b": 186.74023, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Stay current on recent Redbooks publications with RSS Feeds:"}, {"label": "text", "id": 8, "page_no": 35, "cluster": {"id": 8, "label": "text", "bbox": {"l": 150.6310272216797, "t": 193.73944091796875, "r": 331.07773, "b": 203.43120999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.7000716924667358, "cells": [{"id": 12, "text": "http://www.redbooks.ibm.com/rss.html", "bbox": {"l": 151.20016, "t": 194.65643, "r": 331.07773, "b": 203.43120999999996, "coord_origin": "TOPLEFT"}}]}, "text": "http://www.redbooks.ibm.com/rss.html"}], "body": [{"label": "section_header", "id": 2, "page_no": 35, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.4889907836914, "t": 70.36857604980469, "r": 270.48557, "b": 83.64260864257812, "coord_origin": "TOPLEFT"}, "confidence": 0.9555448889732361, "cells": [{"id": 2, "text": "Stay connected to IBM Redbooks", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 270.48557, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Stay connected to IBM Redbooks"}, {"label": "list_item", "id": 3, "page_no": 35, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 135.56192016601562, "t": 96.5151596069336, "r": 241.26647999999997, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}, "confidence": 0.8996357917785645, "cells": [{"id": 3, "text": "GLYPH", "bbox": {"l": 136.8, "t": 97.63812000000007, "r": 141.78, "b": 106.41289999999992, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Find us on LinkedIn:", "bbox": {"l": 151.20016, "t": 97.48870999999997, "r": 241.26647999999997, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Find us on LinkedIn:"}, {"label": "text", "id": 4, "page_no": 35, "cluster": {"id": 4, "label": "text", "bbox": {"l": 150.71234130859375, "t": 114.1937255859375, "r": 391.07678, "b": 123.93498229980469, "coord_origin": "TOPLEFT"}, "confidence": 0.6805561184883118, "cells": [{"id": 5, "text": "http://www.linkedin.com/groups?home=&gid=2130806", "bbox": {"l": 151.20016, "t": 114.67767000000003, "r": 391.07678, "b": 123.45245, "coord_origin": "TOPLEFT"}}]}, "text": "http://www.linkedin.com/groups?home=&gid=2130806"}, {"label": "list_item", "id": 5, "page_no": 35, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.51414489746094, "t": 130.8223114013672, "r": 546.83832, "b": 152.72089000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9532178640365601, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 131.65747, "r": 141.78, "b": 140.43224999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Explore new Redbooks publications, residencies, and workshops with the IBM Redbooks ", "bbox": {"l": 151.20016, "t": 131.50806, "r": 546.83832, "b": 140.72107000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "weekly newsletter:", "bbox": {"l": 151.20016, "t": 143.50787000000003, "r": 232.75266, "b": 152.72089000000005, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Explore new Redbooks publications, residencies, and workshops with the IBM Redbooks weekly newsletter:"}, {"label": "list_item", "id": 6, "page_no": 35, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 150.69110107421875, "t": 159.39158630371094, "r": 451.35418701171875, "b": 169.41187000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.676043689250946, "cells": [{"id": 9, "text": "https://www.redbooks.ibm.com/Redbooks.nsf/subscribe?OpenForm", "bbox": {"l": 151.20016, "t": 160.63707999999997, "r": 451.01605, "b": 169.41187000000002, "coord_origin": "TOPLEFT"}}]}, "text": "https://www.redbooks.ibm.com/Redbooks.nsf/subscribe?OpenForm"}, {"label": "list_item", "id": 7, "page_no": 35, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.90457153320312, "t": 176.64987182617188, "r": 430.14783, "b": 187.12718200683594, "coord_origin": "TOPLEFT"}, "confidence": 0.9175106287002563, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.8, "t": 177.67664000000002, "r": 141.78, "b": 186.45141999999998, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Stay current on recent Redbooks publications with RSS Feeds:", "bbox": {"l": 151.20016, "t": 177.52722000000006, "r": 430.14783, "b": 186.74023, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Stay current on recent Redbooks publications with RSS Feeds:"}, {"label": "text", "id": 8, "page_no": 35, "cluster": {"id": 8, "label": "text", "bbox": {"l": 150.6310272216797, "t": 193.73944091796875, "r": 331.07773, "b": 203.43120999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.7000716924667358, "cells": [{"id": 12, "text": "http://www.redbooks.ibm.com/rss.html", "bbox": {"l": 151.20016, "t": 194.65643, "r": 331.07773, "b": 203.43120999999996, "coord_origin": "TOPLEFT"}}]}, "text": "http://www.redbooks.ibm.com/rss.html"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 35, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.23326110839844, "t": 754.4552612304688, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9102703928947449, "cells": [{"id": 0, "text": "34 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "34"}, {"label": "page_footer", "id": 1, "page_no": 35, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.27912139892578, "t": 754.7698974609375, "r": 267.0744, "b": 764.12158203125, "coord_origin": "TOPLEFT"}, "confidence": 0.950810968875885, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}]}}, {"page_no": 36, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2023.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 180.32761, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "35", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Notices", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 151.50481, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "This information was developed for products and services offered in the US. This material might be available ", "bbox": {"l": 64.800003, "t": 132.64862000000005, "r": 546.33118, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "from IBM in other languages. However, you may be required to own a copy of the product or product version in ", "bbox": {"l": 64.800995, "t": 142.60864000000004, "r": 547.24548, "b": 151.82165999999995, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "that language in order to access it. ", "bbox": {"l": 64.800995, "t": 152.62842, "r": 220.36324000000002, "b": 161.84142999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "IBM may not offer the products, services, or features discussed in this document in other countries. Consult ", "bbox": {"l": 64.800995, "t": 172.60815000000002, "r": 541.46075, "b": 181.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "your local IBM representative for information on the products and services currently available in your area. Any ", "bbox": {"l": 64.800995, "t": 182.62793, "r": 547.17969, "b": 191.84094000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, ", "bbox": {"l": 64.800995, "t": 192.64770999999996, "r": 543.6261, "b": 201.86072000000001, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "program, or service may be used. Any functionally equivalent product, program, or service that does not ", "bbox": {"l": 64.800995, "t": 202.60772999999995, "r": 525.91608, "b": 211.82074, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "infringe any IBM intellectual property right may be used instead. However, it is the user\u2019s responsibility to ", "bbox": {"l": 64.800995, "t": 212.62750000000005, "r": 529.85132, "b": 221.84051999999997, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "evaluate and verify the operation of any non-IBM product, program, or service. ", "bbox": {"l": 64.801971, "t": 222.64728000000002, "r": 413.73868, "b": 231.86028999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "IBM may have patents or pending patent applications covering subject matter described in this document. The ", "bbox": {"l": 64.801971, "t": 242.62701000000004, "r": 547.30017, "b": 251.84002999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "furnishing of this document does not grant you any license to these patents. You can send license inquiries, in ", "bbox": {"l": 64.801971, "t": 252.64679, "r": 547.35602, "b": 261.85979999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "writing, to:", "bbox": {"l": 64.801971, "t": 262.60681, "r": 110.40483000000002, "b": 271.81982000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "IBM Director of Licensing, IBM Corporation, North Castle Drive, MD-NC119, Armonk, NY 10504-1785, US ", "bbox": {"l": 64.801971, "t": 272.62658999999996, "r": 535.31042, "b": 281.8396, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION \u201cAS IS\u201d ", "bbox": {"l": 64.801971, "t": 292.60638, "r": 518.07764, "b": 301.81937, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED ", "bbox": {"l": 64.801971, "t": 302.62613, "r": 545.7674, "b": 311.83911, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A ", "bbox": {"l": 64.801971, "t": 312.6459, "r": 535.5415, "b": 321.85889, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "PARTICULAR PURPOSE. Some jurisdictions do not allow disclaimer of express or implied warranties in ", "bbox": {"l": 64.801971, "t": 322.6059, "r": 527.50079, "b": 331.81888, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "certain transactions, therefore, this statement may not apply to you. ", "bbox": {"l": 64.801971, "t": 332.62564, "r": 365.39774, "b": 341.83862, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "This information could include technical inaccuracies or typographical errors. Changes are periodically made ", "bbox": {"l": 64.801971, "t": 352.60541, "r": 546.45966, "b": 361.81839, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "to the information herein; these changes will be incorporated in new editions of the publication. IBM may make ", "bbox": {"l": 64.801956, "t": 362.62515, "r": 547.13379, "b": 371.83813, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time ", "bbox": {"l": 64.800964, "t": 372.64493, "r": 547.24841, "b": 381.85791, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "without notice. ", "bbox": {"l": 64.800964, "t": 382.60492, "r": 131.4742, "b": 391.8179, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Any references in this information to non-IBM websites are provided for convenience only and do not in any ", "bbox": {"l": 64.800964, "t": 402.64444, "r": 541.54132, "b": 411.85742, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "manner serve as an endorsement of those websites. The materials at those websites are not part of the ", "bbox": {"l": 64.80098, "t": 412.60443, "r": 524.91406, "b": 421.81741, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "materials for this IBM product and use of those websites is at your own risk. ", "bbox": {"l": 64.80098, "t": 422.62417999999997, "r": 401.4938, "b": 431.83716, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IBM may use or distribute any of the information you provide in any way it believes appropriate without ", "bbox": {"l": 64.80098, "t": 442.60393999999997, "r": 519.26678, "b": 451.81692999999996, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "incurring any obligation to you. ", "bbox": {"l": 64.80098, "t": 452.62369, "r": 203.13445, "b": 461.83667, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "The performance data and client examples cited are presented for illustrative purposes only. Actual ", "bbox": {"l": 64.80098, "t": 472.60345, "r": 505.27103, "b": 481.81644, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "performance results may vary depending on specific configurations and operating conditions. ", "bbox": {"l": 64.800964, "t": 482.6232, "r": 478.22061, "b": 491.83618, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Information concerning non-IBM products was obtained from the suppliers of those products, their published ", "bbox": {"l": 64.800964, "t": 502.60297, "r": 544.94849, "b": 511.81595, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "announcements or other publicly available sources. IBM has not tested those products and cannot confirm the ", "bbox": {"l": 64.800964, "t": 512.62271, "r": 547.24249, "b": 521.83569, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the ", "bbox": {"l": 64.800964, "t": 522.64249, "r": 532.51556, "b": 531.85547, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "capabilities of non-IBM products should be addressed to the suppliers of those products. ", "bbox": {"l": 64.800995, "t": 532.66223, "r": 458.02179, "b": 541.87524, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Statements regarding IBM\u2019s future direction or intent are subject to change or withdrawal without notice, and ", "bbox": {"l": 64.800995, "t": 552.64201, "r": 544.68579, "b": 561.85501, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "represent goals and objectives only. ", "bbox": {"l": 64.800995, "t": 562.6617699999999, "r": 226.96176, "b": 571.87477, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "This information contains examples of data and reports used in daily business operations. To illustrate them ", "bbox": {"l": 64.800995, "t": 582.64154, "r": 543.07227, "b": 591.85454, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "as completely as possible, the examples include the names of individuals, companies, brands, and products. ", "bbox": {"l": 64.800018, "t": 592.6613, "r": 547.01636, "b": 601.8743, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "All of these names are fictitious and any similarity to actual people or business enterprises is entirely ", "bbox": {"l": 64.801025, "t": 602.62131, "r": 510.27209, "b": 611.8343, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "coincidental. ", "bbox": {"l": 64.801025, "t": 612.64107, "r": 123.10986000000001, "b": 621.85406, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "COPYRIGHT LICENSE:", "bbox": {"l": 64.801025, "t": 632.6208300000001, "r": 172.50049, "b": 641.83383, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "This information contains sample application programs in source language, which illustrate programming ", "bbox": {"l": 64.801025, "t": 652.66035, "r": 529.14618, "b": 661.87335, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "techniques on various operating platforms. You may copy, modify, and distribute these sample programs in ", "bbox": {"l": 64.802032, "t": 662.62035, "r": 540.33325, "b": 671.83335, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "any form without payment to IBM, for the purposes of developing, using, marketing or distributing application ", "bbox": {"l": 64.802032, "t": 672.64011, "r": 546.02222, "b": 681.85311, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "programs conforming to the application programming interface for the operating platform for which the sample ", "bbox": {"l": 64.802032, "t": 682.65987, "r": 547.35809, "b": 691.87287, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "programs are written. These examples have not been thoroughly tested under all conditions. IBM, therefore, ", "bbox": {"l": 64.802032, "t": 692.619865, "r": 544.22968, "b": 701.83287, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "cannot guarantee or imply reliability, serviceability, or function of these programs. The sample programs are ", "bbox": {"l": 64.802048, "t": 702.639626, "r": 542.97467, "b": 711.852631, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "provided \u201cAS IS\u201d, without warranty of any kind. IBM shall not be liable for any damages arising out of your use ", "bbox": {"l": 64.802032, "t": 712.659386, "r": 547.25946, "b": 721.872391, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "of the sample programs. ", "bbox": {"l": 64.802032, "t": 722.619385, "r": 175.33412, "b": 731.83239, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.60262680053711, "t": 754.6927490234375, "r": 180.32761, "b": 764.0509033203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9509437084197998, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2023.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 180.32761, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.6251220703125, "t": 754.3717041015625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9176149368286133, "cells": [{"id": 1, "text": "35", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.800003, "t": 72.970703125, "r": 151.50481, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9600573778152466, "cells": [{"id": 2, "text": "Notices", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 151.50481, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 64.05133819580078, "t": 132.02426147460938, "r": 547.24548, "b": 162.26876831054688, "coord_origin": "TOPLEFT"}, "confidence": 0.9850678443908691, "cells": [{"id": 3, "text": "This information was developed for products and services offered in the US. This material might be available ", "bbox": {"l": 64.800003, "t": 132.64862000000005, "r": 546.33118, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "from IBM in other languages. However, you may be required to own a copy of the product or product version in ", "bbox": {"l": 64.800995, "t": 142.60864000000004, "r": 547.24548, "b": 151.82165999999995, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "that language in order to access it. ", "bbox": {"l": 64.800995, "t": 152.62842, "r": 220.36324000000002, "b": 161.84142999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 64.02767944335938, "t": 172.017333984375, "r": 547.17969, "b": 232.43988037109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9878805875778198, "cells": [{"id": 6, "text": "IBM may not offer the products, services, or features discussed in this document in other countries. Consult ", "bbox": {"l": 64.800995, "t": 172.60815000000002, "r": 541.46075, "b": 181.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "your local IBM representative for information on the products and services currently available in your area. Any ", "bbox": {"l": 64.800995, "t": 182.62793, "r": 547.17969, "b": 191.84094000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, ", "bbox": {"l": 64.800995, "t": 192.64770999999996, "r": 543.6261, "b": 201.86072000000001, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "program, or service may be used. Any functionally equivalent product, program, or service that does not ", "bbox": {"l": 64.800995, "t": 202.60772999999995, "r": 525.91608, "b": 211.82074, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "infringe any IBM intellectual property right may be used instead. However, it is the user\u2019s responsibility to ", "bbox": {"l": 64.800995, "t": 212.62750000000005, "r": 529.85132, "b": 221.84051999999997, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "evaluate and verify the operation of any non-IBM product, program, or service. ", "bbox": {"l": 64.801971, "t": 222.64728000000002, "r": 413.73868, "b": 231.86028999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 64.14295196533203, "t": 241.84597778320312, "r": 547.35602, "b": 271.81982000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9708325862884521, "cells": [{"id": 12, "text": "IBM may have patents or pending patent applications covering subject matter described in this document. The ", "bbox": {"l": 64.801971, "t": 242.62701000000004, "r": 547.30017, "b": 251.84002999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "furnishing of this document does not grant you any license to these patents. You can send license inquiries, in ", "bbox": {"l": 64.801971, "t": 252.64679, "r": 547.35602, "b": 261.85979999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "writing, to:", "bbox": {"l": 64.801971, "t": 262.60681, "r": 110.40483000000002, "b": 271.81982000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 64.09358215332031, "t": 271.9725036621094, "r": 535.31042, "b": 282.27099609375, "coord_origin": "TOPLEFT"}, "confidence": 0.90984046459198, "cells": [{"id": 15, "text": "IBM Director of Licensing, IBM Corporation, North Castle Drive, MD-NC119, Armonk, NY 10504-1785, US ", "bbox": {"l": 64.801971, "t": 272.62658999999996, "r": 535.31042, "b": 281.8396, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 63.77083969116211, "t": 291.3708801269531, "r": 545.7674, "b": 342.25909423828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9851772785186768, "cells": [{"id": 16, "text": "INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION \u201cAS IS\u201d ", "bbox": {"l": 64.801971, "t": 292.60638, "r": 518.07764, "b": 301.81937, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED ", "bbox": {"l": 64.801971, "t": 302.62613, "r": 545.7674, "b": 311.83911, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A ", "bbox": {"l": 64.801971, "t": 312.6459, "r": 535.5415, "b": 321.85889, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "PARTICULAR PURPOSE. Some jurisdictions do not allow disclaimer of express or implied warranties in ", "bbox": {"l": 64.801971, "t": 322.6059, "r": 527.50079, "b": 331.81888, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "certain transactions, therefore, this statement may not apply to you. ", "bbox": {"l": 64.801971, "t": 332.62564, "r": 365.39774, "b": 341.83862, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 63.76580810546875, "t": 352.0263977050781, "r": 547.24841, "b": 391.8179, "coord_origin": "TOPLEFT"}, "confidence": 0.9841977953910828, "cells": [{"id": 21, "text": "This information could include technical inaccuracies or typographical errors. Changes are periodically made ", "bbox": {"l": 64.801971, "t": 352.60541, "r": 546.45966, "b": 361.81839, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "to the information herein; these changes will be incorporated in new editions of the publication. IBM may make ", "bbox": {"l": 64.801956, "t": 362.62515, "r": 547.13379, "b": 371.83813, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time ", "bbox": {"l": 64.800964, "t": 372.64493, "r": 547.24841, "b": 381.85791, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "without notice. ", "bbox": {"l": 64.800964, "t": 382.60492, "r": 131.4742, "b": 391.8179, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 63.99868392944336, "t": 401.97637939453125, "r": 541.54132, "b": 431.9630432128906, "coord_origin": "TOPLEFT"}, "confidence": 0.9843890070915222, "cells": [{"id": 25, "text": "Any references in this information to non-IBM websites are provided for convenience only and do not in any ", "bbox": {"l": 64.800964, "t": 402.64444, "r": 541.54132, "b": 411.85742, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "manner serve as an endorsement of those websites. The materials at those websites are not part of the ", "bbox": {"l": 64.80098, "t": 412.60443, "r": 524.91406, "b": 421.81741, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "materials for this IBM product and use of those websites is at your own risk. ", "bbox": {"l": 64.80098, "t": 422.62417999999997, "r": 401.4938, "b": 431.83716, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 64.16744995117188, "t": 442.2430419921875, "r": 519.26678, "b": 462.4287109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9788233637809753, "cells": [{"id": 28, "text": "IBM may use or distribute any of the information you provide in any way it believes appropriate without ", "bbox": {"l": 64.80098, "t": 442.60393999999997, "r": 519.26678, "b": 451.81692999999996, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "incurring any obligation to you. ", "bbox": {"l": 64.80098, "t": 452.62369, "r": 203.13445, "b": 461.83667, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 63.904296875, "t": 472.1893005371094, "r": 505.27103, "b": 492.3111572265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9781931638717651, "cells": [{"id": 30, "text": "The performance data and client examples cited are presented for illustrative purposes only. Actual ", "bbox": {"l": 64.80098, "t": 472.60345, "r": 505.27103, "b": 481.81644, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "performance results may vary depending on specific configurations and operating conditions. ", "bbox": {"l": 64.800964, "t": 482.6232, "r": 478.22061, "b": 491.83618, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 64.10684204101562, "t": 502.1192626953125, "r": 547.24249, "b": 542.1983642578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9864881634712219, "cells": [{"id": 32, "text": "Information concerning non-IBM products was obtained from the suppliers of those products, their published ", "bbox": {"l": 64.800964, "t": 502.60297, "r": 544.94849, "b": 511.81595, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "announcements or other publicly available sources. IBM has not tested those products and cannot confirm the ", "bbox": {"l": 64.800964, "t": 512.62271, "r": 547.24249, "b": 521.83569, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the ", "bbox": {"l": 64.800964, "t": 522.64249, "r": 532.51556, "b": 531.85547, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "capabilities of non-IBM products should be addressed to the suppliers of those products. ", "bbox": {"l": 64.800995, "t": 532.66223, "r": 458.02179, "b": 541.87524, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 64.23661041259766, "t": 552.1707153320312, "r": 544.68579, "b": 572.2598876953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9780008792877197, "cells": [{"id": 36, "text": "Statements regarding IBM\u2019s future direction or intent are subject to change or withdrawal without notice, and ", "bbox": {"l": 64.800995, "t": 552.64201, "r": 544.68579, "b": 561.85501, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "represent goals and objectives only. ", "bbox": {"l": 64.800995, "t": 562.6617699999999, "r": 226.96176, "b": 571.87477, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "text", "bbox": {"l": 63.82798385620117, "t": 582.23291015625, "r": 547.01636, "b": 621.85406, "coord_origin": "TOPLEFT"}, "confidence": 0.981692910194397, "cells": [{"id": 38, "text": "This information contains examples of data and reports used in daily business operations. To illustrate them ", "bbox": {"l": 64.800995, "t": 582.64154, "r": 543.07227, "b": 591.85454, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "as completely as possible, the examples include the names of individuals, companies, brands, and products. ", "bbox": {"l": 64.800018, "t": 592.6613, "r": 547.01636, "b": 601.8743, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "All of these names are fictitious and any similarity to actual people or business enterprises is entirely ", "bbox": {"l": 64.801025, "t": 602.62131, "r": 510.27209, "b": 611.8343, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "coincidental. ", "bbox": {"l": 64.801025, "t": 612.64107, "r": 123.10986000000001, "b": 621.85406, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "section_header", "bbox": {"l": 64.29706573486328, "t": 631.7528686523438, "r": 172.50049, "b": 641.83383, "coord_origin": "TOPLEFT"}, "confidence": 0.8924005627632141, "cells": [{"id": 42, "text": "COPYRIGHT LICENSE:", "bbox": {"l": 64.801025, "t": 632.6208300000001, "r": 172.50049, "b": 641.83383, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "text", "bbox": {"l": 63.95261001586914, "t": 651.9513549804688, "r": 547.35809, "b": 732.0111083984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9879701137542725, "cells": [{"id": 43, "text": "This information contains sample application programs in source language, which illustrate programming ", "bbox": {"l": 64.801025, "t": 652.66035, "r": 529.14618, "b": 661.87335, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "techniques on various operating platforms. You may copy, modify, and distribute these sample programs in ", "bbox": {"l": 64.802032, "t": 662.62035, "r": 540.33325, "b": 671.83335, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "any form without payment to IBM, for the purposes of developing, using, marketing or distributing application ", "bbox": {"l": 64.802032, "t": 672.64011, "r": 546.02222, "b": 681.85311, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "programs conforming to the application programming interface for the operating platform for which the sample ", "bbox": {"l": 64.802032, "t": 682.65987, "r": 547.35809, "b": 691.87287, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "programs are written. These examples have not been thoroughly tested under all conditions. IBM, therefore, ", "bbox": {"l": 64.802032, "t": 692.619865, "r": 544.22968, "b": 701.83287, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "cannot guarantee or imply reliability, serviceability, or function of these programs. The sample programs are ", "bbox": {"l": 64.802048, "t": 702.639626, "r": 542.97467, "b": 711.852631, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "provided \u201cAS IS\u201d, without warranty of any kind. IBM shall not be liable for any damages arising out of your use ", "bbox": {"l": 64.802032, "t": 712.659386, "r": 547.25946, "b": 721.872391, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "of the sample programs. ", "bbox": {"l": 64.802032, "t": 722.619385, "r": 175.33412, "b": 731.83239, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 36, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.60262680053711, "t": 754.6927490234375, "r": 180.32761, "b": 764.0509033203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9509437084197998, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2023.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 180.32761, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2023."}, {"label": "page_footer", "id": 1, "page_no": 36, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6251220703125, "t": 754.3717041015625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9176149368286133, "cells": [{"id": 1, "text": "35", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "35"}, {"label": "section_header", "id": 2, "page_no": 36, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.800003, "t": 72.970703125, "r": 151.50481, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9600573778152466, "cells": [{"id": 2, "text": "Notices", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 151.50481, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Notices"}, {"label": "text", "id": 3, "page_no": 36, "cluster": {"id": 3, "label": "text", "bbox": {"l": 64.05133819580078, "t": 132.02426147460938, "r": 547.24548, "b": 162.26876831054688, "coord_origin": "TOPLEFT"}, "confidence": 0.9850678443908691, "cells": [{"id": 3, "text": "This information was developed for products and services offered in the US. This material might be available ", "bbox": {"l": 64.800003, "t": 132.64862000000005, "r": 546.33118, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "from IBM in other languages. However, you may be required to own a copy of the product or product version in ", "bbox": {"l": 64.800995, "t": 142.60864000000004, "r": 547.24548, "b": 151.82165999999995, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "that language in order to access it. ", "bbox": {"l": 64.800995, "t": 152.62842, "r": 220.36324000000002, "b": 161.84142999999995, "coord_origin": "TOPLEFT"}}]}, "text": "This information was developed for products and services offered in the US. This material might be available from IBM in other languages. However, you may be required to own a copy of the product or product version in that language in order to access it."}, {"label": "text", "id": 4, "page_no": 36, "cluster": {"id": 4, "label": "text", "bbox": {"l": 64.02767944335938, "t": 172.017333984375, "r": 547.17969, "b": 232.43988037109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9878805875778198, "cells": [{"id": 6, "text": "IBM may not offer the products, services, or features discussed in this document in other countries. Consult ", "bbox": {"l": 64.800995, "t": 172.60815000000002, "r": 541.46075, "b": 181.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "your local IBM representative for information on the products and services currently available in your area. Any ", "bbox": {"l": 64.800995, "t": 182.62793, "r": 547.17969, "b": 191.84094000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, ", "bbox": {"l": 64.800995, "t": 192.64770999999996, "r": 543.6261, "b": 201.86072000000001, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "program, or service may be used. Any functionally equivalent product, program, or service that does not ", "bbox": {"l": 64.800995, "t": 202.60772999999995, "r": 525.91608, "b": 211.82074, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "infringe any IBM intellectual property right may be used instead. However, it is the user\u2019s responsibility to ", "bbox": {"l": 64.800995, "t": 212.62750000000005, "r": 529.85132, "b": 221.84051999999997, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "evaluate and verify the operation of any non-IBM product, program, or service. ", "bbox": {"l": 64.801971, "t": 222.64728000000002, "r": 413.73868, "b": 231.86028999999996, "coord_origin": "TOPLEFT"}}]}, "text": "IBM may not offer the products, services, or features discussed in this document in other countries. Consult your local IBM representative for information on the products and services currently available in your area. Any reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, program, or service may be used. Any functionally equivalent product, program, or service that does not infringe any IBM intellectual property right may be used instead. However, it is the user\u2019s responsibility to evaluate and verify the operation of any non-IBM product, program, or service."}, {"label": "text", "id": 5, "page_no": 36, "cluster": {"id": 5, "label": "text", "bbox": {"l": 64.14295196533203, "t": 241.84597778320312, "r": 547.35602, "b": 271.81982000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9708325862884521, "cells": [{"id": 12, "text": "IBM may have patents or pending patent applications covering subject matter described in this document. The ", "bbox": {"l": 64.801971, "t": 242.62701000000004, "r": 547.30017, "b": 251.84002999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "furnishing of this document does not grant you any license to these patents. You can send license inquiries, in ", "bbox": {"l": 64.801971, "t": 252.64679, "r": 547.35602, "b": 261.85979999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "writing, to:", "bbox": {"l": 64.801971, "t": 262.60681, "r": 110.40483000000002, "b": 271.81982000000005, "coord_origin": "TOPLEFT"}}]}, "text": "IBM may have patents or pending patent applications covering subject matter described in this document. The furnishing of this document does not grant you any license to these patents. You can send license inquiries, in writing, to:"}, {"label": "text", "id": 6, "page_no": 36, "cluster": {"id": 6, "label": "text", "bbox": {"l": 64.09358215332031, "t": 271.9725036621094, "r": 535.31042, "b": 282.27099609375, "coord_origin": "TOPLEFT"}, "confidence": 0.90984046459198, "cells": [{"id": 15, "text": "IBM Director of Licensing, IBM Corporation, North Castle Drive, MD-NC119, Armonk, NY 10504-1785, US ", "bbox": {"l": 64.801971, "t": 272.62658999999996, "r": 535.31042, "b": 281.8396, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Director of Licensing, IBM Corporation, North Castle Drive, MD-NC119, Armonk, NY 10504-1785, US"}, {"label": "text", "id": 7, "page_no": 36, "cluster": {"id": 7, "label": "text", "bbox": {"l": 63.77083969116211, "t": 291.3708801269531, "r": 545.7674, "b": 342.25909423828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9851772785186768, "cells": [{"id": 16, "text": "INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION \u201cAS IS\u201d ", "bbox": {"l": 64.801971, "t": 292.60638, "r": 518.07764, "b": 301.81937, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED ", "bbox": {"l": 64.801971, "t": 302.62613, "r": 545.7674, "b": 311.83911, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A ", "bbox": {"l": 64.801971, "t": 312.6459, "r": 535.5415, "b": 321.85889, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "PARTICULAR PURPOSE. Some jurisdictions do not allow disclaimer of express or implied warranties in ", "bbox": {"l": 64.801971, "t": 322.6059, "r": 527.50079, "b": 331.81888, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "certain transactions, therefore, this statement may not apply to you. ", "bbox": {"l": 64.801971, "t": 332.62564, "r": 365.39774, "b": 341.83862, "coord_origin": "TOPLEFT"}}]}, "text": "INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION \u201cAS IS\u201d WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some jurisdictions do not allow disclaimer of express or implied warranties in certain transactions, therefore, this statement may not apply to you."}, {"label": "text", "id": 8, "page_no": 36, "cluster": {"id": 8, "label": "text", "bbox": {"l": 63.76580810546875, "t": 352.0263977050781, "r": 547.24841, "b": 391.8179, "coord_origin": "TOPLEFT"}, "confidence": 0.9841977953910828, "cells": [{"id": 21, "text": "This information could include technical inaccuracies or typographical errors. Changes are periodically made ", "bbox": {"l": 64.801971, "t": 352.60541, "r": 546.45966, "b": 361.81839, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "to the information herein; these changes will be incorporated in new editions of the publication. IBM may make ", "bbox": {"l": 64.801956, "t": 362.62515, "r": 547.13379, "b": 371.83813, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time ", "bbox": {"l": 64.800964, "t": 372.64493, "r": 547.24841, "b": 381.85791, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "without notice. ", "bbox": {"l": 64.800964, "t": 382.60492, "r": 131.4742, "b": 391.8179, "coord_origin": "TOPLEFT"}}]}, "text": "This information could include technical inaccuracies or typographical errors. Changes are periodically made to the information herein; these changes will be incorporated in new editions of the publication. IBM may make improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time without notice."}, {"label": "text", "id": 9, "page_no": 36, "cluster": {"id": 9, "label": "text", "bbox": {"l": 63.99868392944336, "t": 401.97637939453125, "r": 541.54132, "b": 431.9630432128906, "coord_origin": "TOPLEFT"}, "confidence": 0.9843890070915222, "cells": [{"id": 25, "text": "Any references in this information to non-IBM websites are provided for convenience only and do not in any ", "bbox": {"l": 64.800964, "t": 402.64444, "r": 541.54132, "b": 411.85742, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "manner serve as an endorsement of those websites. The materials at those websites are not part of the ", "bbox": {"l": 64.80098, "t": 412.60443, "r": 524.91406, "b": 421.81741, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "materials for this IBM product and use of those websites is at your own risk. ", "bbox": {"l": 64.80098, "t": 422.62417999999997, "r": 401.4938, "b": 431.83716, "coord_origin": "TOPLEFT"}}]}, "text": "Any references in this information to non-IBM websites are provided for convenience only and do not in any manner serve as an endorsement of those websites. The materials at those websites are not part of the materials for this IBM product and use of those websites is at your own risk."}, {"label": "text", "id": 10, "page_no": 36, "cluster": {"id": 10, "label": "text", "bbox": {"l": 64.16744995117188, "t": 442.2430419921875, "r": 519.26678, "b": 462.4287109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9788233637809753, "cells": [{"id": 28, "text": "IBM may use or distribute any of the information you provide in any way it believes appropriate without ", "bbox": {"l": 64.80098, "t": 442.60393999999997, "r": 519.26678, "b": 451.81692999999996, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "incurring any obligation to you. ", "bbox": {"l": 64.80098, "t": 452.62369, "r": 203.13445, "b": 461.83667, "coord_origin": "TOPLEFT"}}]}, "text": "IBM may use or distribute any of the information you provide in any way it believes appropriate without incurring any obligation to you."}, {"label": "text", "id": 11, "page_no": 36, "cluster": {"id": 11, "label": "text", "bbox": {"l": 63.904296875, "t": 472.1893005371094, "r": 505.27103, "b": 492.3111572265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9781931638717651, "cells": [{"id": 30, "text": "The performance data and client examples cited are presented for illustrative purposes only. Actual ", "bbox": {"l": 64.80098, "t": 472.60345, "r": 505.27103, "b": 481.81644, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "performance results may vary depending on specific configurations and operating conditions. ", "bbox": {"l": 64.800964, "t": 482.6232, "r": 478.22061, "b": 491.83618, "coord_origin": "TOPLEFT"}}]}, "text": "The performance data and client examples cited are presented for illustrative purposes only. Actual performance results may vary depending on specific configurations and operating conditions."}, {"label": "text", "id": 12, "page_no": 36, "cluster": {"id": 12, "label": "text", "bbox": {"l": 64.10684204101562, "t": 502.1192626953125, "r": 547.24249, "b": 542.1983642578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9864881634712219, "cells": [{"id": 32, "text": "Information concerning non-IBM products was obtained from the suppliers of those products, their published ", "bbox": {"l": 64.800964, "t": 502.60297, "r": 544.94849, "b": 511.81595, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "announcements or other publicly available sources. IBM has not tested those products and cannot confirm the ", "bbox": {"l": 64.800964, "t": 512.62271, "r": 547.24249, "b": 521.83569, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the ", "bbox": {"l": 64.800964, "t": 522.64249, "r": 532.51556, "b": 531.85547, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "capabilities of non-IBM products should be addressed to the suppliers of those products. ", "bbox": {"l": 64.800995, "t": 532.66223, "r": 458.02179, "b": 541.87524, "coord_origin": "TOPLEFT"}}]}, "text": "Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly available sources. IBM has not tested those products and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products."}, {"label": "text", "id": 13, "page_no": 36, "cluster": {"id": 13, "label": "text", "bbox": {"l": 64.23661041259766, "t": 552.1707153320312, "r": 544.68579, "b": 572.2598876953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9780008792877197, "cells": [{"id": 36, "text": "Statements regarding IBM\u2019s future direction or intent are subject to change or withdrawal without notice, and ", "bbox": {"l": 64.800995, "t": 552.64201, "r": 544.68579, "b": 561.85501, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "represent goals and objectives only. ", "bbox": {"l": 64.800995, "t": 562.6617699999999, "r": 226.96176, "b": 571.87477, "coord_origin": "TOPLEFT"}}]}, "text": "Statements regarding IBM\u2019s future direction or intent are subject to change or withdrawal without notice, and represent goals and objectives only."}, {"label": "text", "id": 14, "page_no": 36, "cluster": {"id": 14, "label": "text", "bbox": {"l": 63.82798385620117, "t": 582.23291015625, "r": 547.01636, "b": 621.85406, "coord_origin": "TOPLEFT"}, "confidence": 0.981692910194397, "cells": [{"id": 38, "text": "This information contains examples of data and reports used in daily business operations. To illustrate them ", "bbox": {"l": 64.800995, "t": 582.64154, "r": 543.07227, "b": 591.85454, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "as completely as possible, the examples include the names of individuals, companies, brands, and products. ", "bbox": {"l": 64.800018, "t": 592.6613, "r": 547.01636, "b": 601.8743, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "All of these names are fictitious and any similarity to actual people or business enterprises is entirely ", "bbox": {"l": 64.801025, "t": 602.62131, "r": 510.27209, "b": 611.8343, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "coincidental. ", "bbox": {"l": 64.801025, "t": 612.64107, "r": 123.10986000000001, "b": 621.85406, "coord_origin": "TOPLEFT"}}]}, "text": "This information contains examples of data and reports used in daily business operations. To illustrate them as completely as possible, the examples include the names of individuals, companies, brands, and products. All of these names are fictitious and any similarity to actual people or business enterprises is entirely coincidental."}, {"label": "section_header", "id": 15, "page_no": 36, "cluster": {"id": 15, "label": "section_header", "bbox": {"l": 64.29706573486328, "t": 631.7528686523438, "r": 172.50049, "b": 641.83383, "coord_origin": "TOPLEFT"}, "confidence": 0.8924005627632141, "cells": [{"id": 42, "text": "COPYRIGHT LICENSE:", "bbox": {"l": 64.801025, "t": 632.6208300000001, "r": 172.50049, "b": 641.83383, "coord_origin": "TOPLEFT"}}]}, "text": "COPYRIGHT LICENSE:"}, {"label": "text", "id": 16, "page_no": 36, "cluster": {"id": 16, "label": "text", "bbox": {"l": 63.95261001586914, "t": 651.9513549804688, "r": 547.35809, "b": 732.0111083984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9879701137542725, "cells": [{"id": 43, "text": "This information contains sample application programs in source language, which illustrate programming ", "bbox": {"l": 64.801025, "t": 652.66035, "r": 529.14618, "b": 661.87335, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "techniques on various operating platforms. You may copy, modify, and distribute these sample programs in ", "bbox": {"l": 64.802032, "t": 662.62035, "r": 540.33325, "b": 671.83335, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "any form without payment to IBM, for the purposes of developing, using, marketing or distributing application ", "bbox": {"l": 64.802032, "t": 672.64011, "r": 546.02222, "b": 681.85311, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "programs conforming to the application programming interface for the operating platform for which the sample ", "bbox": {"l": 64.802032, "t": 682.65987, "r": 547.35809, "b": 691.87287, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "programs are written. These examples have not been thoroughly tested under all conditions. IBM, therefore, ", "bbox": {"l": 64.802032, "t": 692.619865, "r": 544.22968, "b": 701.83287, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "cannot guarantee or imply reliability, serviceability, or function of these programs. The sample programs are ", "bbox": {"l": 64.802048, "t": 702.639626, "r": 542.97467, "b": 711.852631, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "provided \u201cAS IS\u201d, without warranty of any kind. IBM shall not be liable for any damages arising out of your use ", "bbox": {"l": 64.802032, "t": 712.659386, "r": 547.25946, "b": 721.872391, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "of the sample programs. ", "bbox": {"l": 64.802032, "t": 722.619385, "r": 175.33412, "b": 731.83239, "coord_origin": "TOPLEFT"}}]}, "text": "This information contains sample application programs in source language, which illustrate programming techniques on various operating platforms. You may copy, modify, and distribute these sample programs in any form without payment to IBM, for the purposes of developing, using, marketing or distributing application programs conforming to the application programming interface for the operating platform for which the sample programs are written. These examples have not been thoroughly tested under all conditions. IBM, therefore, cannot guarantee or imply reliability, serviceability, or function of these programs. The sample programs are provided \u201cAS IS\u201d, without warranty of any kind. IBM shall not be liable for any damages arising out of your use of the sample programs."}], "body": [{"label": "section_header", "id": 2, "page_no": 36, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.800003, "t": 72.970703125, "r": 151.50481, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9600573778152466, "cells": [{"id": 2, "text": "Notices", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 151.50481, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Notices"}, {"label": "text", "id": 3, "page_no": 36, "cluster": {"id": 3, "label": "text", "bbox": {"l": 64.05133819580078, "t": 132.02426147460938, "r": 547.24548, "b": 162.26876831054688, "coord_origin": "TOPLEFT"}, "confidence": 0.9850678443908691, "cells": [{"id": 3, "text": "This information was developed for products and services offered in the US. This material might be available ", "bbox": {"l": 64.800003, "t": 132.64862000000005, "r": 546.33118, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "from IBM in other languages. However, you may be required to own a copy of the product or product version in ", "bbox": {"l": 64.800995, "t": 142.60864000000004, "r": 547.24548, "b": 151.82165999999995, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "that language in order to access it. ", "bbox": {"l": 64.800995, "t": 152.62842, "r": 220.36324000000002, "b": 161.84142999999995, "coord_origin": "TOPLEFT"}}]}, "text": "This information was developed for products and services offered in the US. This material might be available from IBM in other languages. However, you may be required to own a copy of the product or product version in that language in order to access it."}, {"label": "text", "id": 4, "page_no": 36, "cluster": {"id": 4, "label": "text", "bbox": {"l": 64.02767944335938, "t": 172.017333984375, "r": 547.17969, "b": 232.43988037109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9878805875778198, "cells": [{"id": 6, "text": "IBM may not offer the products, services, or features discussed in this document in other countries. Consult ", "bbox": {"l": 64.800995, "t": 172.60815000000002, "r": 541.46075, "b": 181.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "your local IBM representative for information on the products and services currently available in your area. Any ", "bbox": {"l": 64.800995, "t": 182.62793, "r": 547.17969, "b": 191.84094000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, ", "bbox": {"l": 64.800995, "t": 192.64770999999996, "r": 543.6261, "b": 201.86072000000001, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "program, or service may be used. Any functionally equivalent product, program, or service that does not ", "bbox": {"l": 64.800995, "t": 202.60772999999995, "r": 525.91608, "b": 211.82074, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "infringe any IBM intellectual property right may be used instead. However, it is the user\u2019s responsibility to ", "bbox": {"l": 64.800995, "t": 212.62750000000005, "r": 529.85132, "b": 221.84051999999997, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "evaluate and verify the operation of any non-IBM product, program, or service. ", "bbox": {"l": 64.801971, "t": 222.64728000000002, "r": 413.73868, "b": 231.86028999999996, "coord_origin": "TOPLEFT"}}]}, "text": "IBM may not offer the products, services, or features discussed in this document in other countries. Consult your local IBM representative for information on the products and services currently available in your area. Any reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, program, or service may be used. Any functionally equivalent product, program, or service that does not infringe any IBM intellectual property right may be used instead. However, it is the user\u2019s responsibility to evaluate and verify the operation of any non-IBM product, program, or service."}, {"label": "text", "id": 5, "page_no": 36, "cluster": {"id": 5, "label": "text", "bbox": {"l": 64.14295196533203, "t": 241.84597778320312, "r": 547.35602, "b": 271.81982000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9708325862884521, "cells": [{"id": 12, "text": "IBM may have patents or pending patent applications covering subject matter described in this document. The ", "bbox": {"l": 64.801971, "t": 242.62701000000004, "r": 547.30017, "b": 251.84002999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "furnishing of this document does not grant you any license to these patents. You can send license inquiries, in ", "bbox": {"l": 64.801971, "t": 252.64679, "r": 547.35602, "b": 261.85979999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "writing, to:", "bbox": {"l": 64.801971, "t": 262.60681, "r": 110.40483000000002, "b": 271.81982000000005, "coord_origin": "TOPLEFT"}}]}, "text": "IBM may have patents or pending patent applications covering subject matter described in this document. The furnishing of this document does not grant you any license to these patents. You can send license inquiries, in writing, to:"}, {"label": "text", "id": 6, "page_no": 36, "cluster": {"id": 6, "label": "text", "bbox": {"l": 64.09358215332031, "t": 271.9725036621094, "r": 535.31042, "b": 282.27099609375, "coord_origin": "TOPLEFT"}, "confidence": 0.90984046459198, "cells": [{"id": 15, "text": "IBM Director of Licensing, IBM Corporation, North Castle Drive, MD-NC119, Armonk, NY 10504-1785, US ", "bbox": {"l": 64.801971, "t": 272.62658999999996, "r": 535.31042, "b": 281.8396, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Director of Licensing, IBM Corporation, North Castle Drive, MD-NC119, Armonk, NY 10504-1785, US"}, {"label": "text", "id": 7, "page_no": 36, "cluster": {"id": 7, "label": "text", "bbox": {"l": 63.77083969116211, "t": 291.3708801269531, "r": 545.7674, "b": 342.25909423828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9851772785186768, "cells": [{"id": 16, "text": "INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION \u201cAS IS\u201d ", "bbox": {"l": 64.801971, "t": 292.60638, "r": 518.07764, "b": 301.81937, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED ", "bbox": {"l": 64.801971, "t": 302.62613, "r": 545.7674, "b": 311.83911, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A ", "bbox": {"l": 64.801971, "t": 312.6459, "r": 535.5415, "b": 321.85889, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "PARTICULAR PURPOSE. Some jurisdictions do not allow disclaimer of express or implied warranties in ", "bbox": {"l": 64.801971, "t": 322.6059, "r": 527.50079, "b": 331.81888, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "certain transactions, therefore, this statement may not apply to you. ", "bbox": {"l": 64.801971, "t": 332.62564, "r": 365.39774, "b": 341.83862, "coord_origin": "TOPLEFT"}}]}, "text": "INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION \u201cAS IS\u201d WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some jurisdictions do not allow disclaimer of express or implied warranties in certain transactions, therefore, this statement may not apply to you."}, {"label": "text", "id": 8, "page_no": 36, "cluster": {"id": 8, "label": "text", "bbox": {"l": 63.76580810546875, "t": 352.0263977050781, "r": 547.24841, "b": 391.8179, "coord_origin": "TOPLEFT"}, "confidence": 0.9841977953910828, "cells": [{"id": 21, "text": "This information could include technical inaccuracies or typographical errors. Changes are periodically made ", "bbox": {"l": 64.801971, "t": 352.60541, "r": 546.45966, "b": 361.81839, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "to the information herein; these changes will be incorporated in new editions of the publication. IBM may make ", "bbox": {"l": 64.801956, "t": 362.62515, "r": 547.13379, "b": 371.83813, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time ", "bbox": {"l": 64.800964, "t": 372.64493, "r": 547.24841, "b": 381.85791, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "without notice. ", "bbox": {"l": 64.800964, "t": 382.60492, "r": 131.4742, "b": 391.8179, "coord_origin": "TOPLEFT"}}]}, "text": "This information could include technical inaccuracies or typographical errors. Changes are periodically made to the information herein; these changes will be incorporated in new editions of the publication. IBM may make improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time without notice."}, {"label": "text", "id": 9, "page_no": 36, "cluster": {"id": 9, "label": "text", "bbox": {"l": 63.99868392944336, "t": 401.97637939453125, "r": 541.54132, "b": 431.9630432128906, "coord_origin": "TOPLEFT"}, "confidence": 0.9843890070915222, "cells": [{"id": 25, "text": "Any references in this information to non-IBM websites are provided for convenience only and do not in any ", "bbox": {"l": 64.800964, "t": 402.64444, "r": 541.54132, "b": 411.85742, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "manner serve as an endorsement of those websites. The materials at those websites are not part of the ", "bbox": {"l": 64.80098, "t": 412.60443, "r": 524.91406, "b": 421.81741, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "materials for this IBM product and use of those websites is at your own risk. ", "bbox": {"l": 64.80098, "t": 422.62417999999997, "r": 401.4938, "b": 431.83716, "coord_origin": "TOPLEFT"}}]}, "text": "Any references in this information to non-IBM websites are provided for convenience only and do not in any manner serve as an endorsement of those websites. The materials at those websites are not part of the materials for this IBM product and use of those websites is at your own risk."}, {"label": "text", "id": 10, "page_no": 36, "cluster": {"id": 10, "label": "text", "bbox": {"l": 64.16744995117188, "t": 442.2430419921875, "r": 519.26678, "b": 462.4287109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9788233637809753, "cells": [{"id": 28, "text": "IBM may use or distribute any of the information you provide in any way it believes appropriate without ", "bbox": {"l": 64.80098, "t": 442.60393999999997, "r": 519.26678, "b": 451.81692999999996, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "incurring any obligation to you. ", "bbox": {"l": 64.80098, "t": 452.62369, "r": 203.13445, "b": 461.83667, "coord_origin": "TOPLEFT"}}]}, "text": "IBM may use or distribute any of the information you provide in any way it believes appropriate without incurring any obligation to you."}, {"label": "text", "id": 11, "page_no": 36, "cluster": {"id": 11, "label": "text", "bbox": {"l": 63.904296875, "t": 472.1893005371094, "r": 505.27103, "b": 492.3111572265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9781931638717651, "cells": [{"id": 30, "text": "The performance data and client examples cited are presented for illustrative purposes only. Actual ", "bbox": {"l": 64.80098, "t": 472.60345, "r": 505.27103, "b": 481.81644, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "performance results may vary depending on specific configurations and operating conditions. ", "bbox": {"l": 64.800964, "t": 482.6232, "r": 478.22061, "b": 491.83618, "coord_origin": "TOPLEFT"}}]}, "text": "The performance data and client examples cited are presented for illustrative purposes only. Actual performance results may vary depending on specific configurations and operating conditions."}, {"label": "text", "id": 12, "page_no": 36, "cluster": {"id": 12, "label": "text", "bbox": {"l": 64.10684204101562, "t": 502.1192626953125, "r": 547.24249, "b": 542.1983642578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9864881634712219, "cells": [{"id": 32, "text": "Information concerning non-IBM products was obtained from the suppliers of those products, their published ", "bbox": {"l": 64.800964, "t": 502.60297, "r": 544.94849, "b": 511.81595, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "announcements or other publicly available sources. IBM has not tested those products and cannot confirm the ", "bbox": {"l": 64.800964, "t": 512.62271, "r": 547.24249, "b": 521.83569, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the ", "bbox": {"l": 64.800964, "t": 522.64249, "r": 532.51556, "b": 531.85547, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "capabilities of non-IBM products should be addressed to the suppliers of those products. ", "bbox": {"l": 64.800995, "t": 532.66223, "r": 458.02179, "b": 541.87524, "coord_origin": "TOPLEFT"}}]}, "text": "Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly available sources. IBM has not tested those products and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products."}, {"label": "text", "id": 13, "page_no": 36, "cluster": {"id": 13, "label": "text", "bbox": {"l": 64.23661041259766, "t": 552.1707153320312, "r": 544.68579, "b": 572.2598876953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9780008792877197, "cells": [{"id": 36, "text": "Statements regarding IBM\u2019s future direction or intent are subject to change or withdrawal without notice, and ", "bbox": {"l": 64.800995, "t": 552.64201, "r": 544.68579, "b": 561.85501, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "represent goals and objectives only. ", "bbox": {"l": 64.800995, "t": 562.6617699999999, "r": 226.96176, "b": 571.87477, "coord_origin": "TOPLEFT"}}]}, "text": "Statements regarding IBM\u2019s future direction or intent are subject to change or withdrawal without notice, and represent goals and objectives only."}, {"label": "text", "id": 14, "page_no": 36, "cluster": {"id": 14, "label": "text", "bbox": {"l": 63.82798385620117, "t": 582.23291015625, "r": 547.01636, "b": 621.85406, "coord_origin": "TOPLEFT"}, "confidence": 0.981692910194397, "cells": [{"id": 38, "text": "This information contains examples of data and reports used in daily business operations. To illustrate them ", "bbox": {"l": 64.800995, "t": 582.64154, "r": 543.07227, "b": 591.85454, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "as completely as possible, the examples include the names of individuals, companies, brands, and products. ", "bbox": {"l": 64.800018, "t": 592.6613, "r": 547.01636, "b": 601.8743, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "All of these names are fictitious and any similarity to actual people or business enterprises is entirely ", "bbox": {"l": 64.801025, "t": 602.62131, "r": 510.27209, "b": 611.8343, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "coincidental. ", "bbox": {"l": 64.801025, "t": 612.64107, "r": 123.10986000000001, "b": 621.85406, "coord_origin": "TOPLEFT"}}]}, "text": "This information contains examples of data and reports used in daily business operations. To illustrate them as completely as possible, the examples include the names of individuals, companies, brands, and products. All of these names are fictitious and any similarity to actual people or business enterprises is entirely coincidental."}, {"label": "section_header", "id": 15, "page_no": 36, "cluster": {"id": 15, "label": "section_header", "bbox": {"l": 64.29706573486328, "t": 631.7528686523438, "r": 172.50049, "b": 641.83383, "coord_origin": "TOPLEFT"}, "confidence": 0.8924005627632141, "cells": [{"id": 42, "text": "COPYRIGHT LICENSE:", "bbox": {"l": 64.801025, "t": 632.6208300000001, "r": 172.50049, "b": 641.83383, "coord_origin": "TOPLEFT"}}]}, "text": "COPYRIGHT LICENSE:"}, {"label": "text", "id": 16, "page_no": 36, "cluster": {"id": 16, "label": "text", "bbox": {"l": 63.95261001586914, "t": 651.9513549804688, "r": 547.35809, "b": 732.0111083984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9879701137542725, "cells": [{"id": 43, "text": "This information contains sample application programs in source language, which illustrate programming ", "bbox": {"l": 64.801025, "t": 652.66035, "r": 529.14618, "b": 661.87335, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "techniques on various operating platforms. You may copy, modify, and distribute these sample programs in ", "bbox": {"l": 64.802032, "t": 662.62035, "r": 540.33325, "b": 671.83335, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "any form without payment to IBM, for the purposes of developing, using, marketing or distributing application ", "bbox": {"l": 64.802032, "t": 672.64011, "r": 546.02222, "b": 681.85311, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "programs conforming to the application programming interface for the operating platform for which the sample ", "bbox": {"l": 64.802032, "t": 682.65987, "r": 547.35809, "b": 691.87287, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "programs are written. These examples have not been thoroughly tested under all conditions. IBM, therefore, ", "bbox": {"l": 64.802032, "t": 692.619865, "r": 544.22968, "b": 701.83287, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "cannot guarantee or imply reliability, serviceability, or function of these programs. The sample programs are ", "bbox": {"l": 64.802048, "t": 702.639626, "r": 542.97467, "b": 711.852631, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "provided \u201cAS IS\u201d, without warranty of any kind. IBM shall not be liable for any damages arising out of your use ", "bbox": {"l": 64.802032, "t": 712.659386, "r": 547.25946, "b": 721.872391, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "of the sample programs. ", "bbox": {"l": 64.802032, "t": 722.619385, "r": 175.33412, "b": 731.83239, "coord_origin": "TOPLEFT"}}]}, "text": "This information contains sample application programs in source language, which illustrate programming techniques on various operating platforms. You may copy, modify, and distribute these sample programs in any form without payment to IBM, for the purposes of developing, using, marketing or distributing application programs conforming to the application programming interface for the operating platform for which the sample programs are written. These examples have not been thoroughly tested under all conditions. IBM, therefore, cannot guarantee or imply reliability, serviceability, or function of these programs. The sample programs are provided \u201cAS IS\u201d, without warranty of any kind. IBM shall not be liable for any damages arising out of your use of the sample programs."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 36, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.60262680053711, "t": 754.6927490234375, "r": 180.32761, "b": 764.0509033203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9509437084197998, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2023.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 180.32761, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2023."}, {"label": "page_footer", "id": 1, "page_no": 36, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6251220703125, "t": 754.3717041015625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9176149368286133, "cells": [{"id": 1, "text": "35", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "35"}]}}, {"page_no": 37, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "36 ", "bbox": {"l": 64.800003, "t": 755.868721, "r": 78.402, "b": 765.08172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 756.557999, "r": 267.0744, "b": 764.883001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Trademarks", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 155.4895, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines ", "bbox": {"l": 64.800003, "t": 103.48870999999997, "r": 547.23431, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Corporation, registered in many jurisdictions worldwide. Other product and service names might be ", "bbox": {"l": 64.800018, "t": 113.50847999999996, "r": 504.22832999999997, "b": 122.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "trademarks of IBM or other companies. A current list of IBM trademarks is available on the web at \u201cCopyright ", "bbox": {"l": 64.800018, "t": 123.52826000000005, "r": 546.94568, "b": 132.74127, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "and trademark information\u201d at ", "bbox": {"l": 64.800018, "t": 133.48828000000003, "r": 198.67136, "b": 142.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "http://www.ibm.com/legal/copytrade.shtml", "bbox": {"l": 198.66043, "t": 133.6377, "r": 398.51779, "b": 142.41247999999996, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "The following terms are trademarks or registered trademarks of International Business Machines Corporation, ", "bbox": {"l": 64.800995, "t": 153.52881000000002, "r": 547.24146, "b": 162.74181999999996, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "and might also be trademarks or registered trademarks in other countries. ", "bbox": {"l": 64.800995, "t": 163.48883, "r": 393.13339, "b": 172.70183999999995, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Db2fi IBMfi", "bbox": {"l": 75.599998, "t": 182.53801999999996, "r": 98.195404, "b": 190.86298, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "IBM Blockchainfi", "bbox": {"l": 75.599998, "t": 204.55829000000006, "r": 144.13049, "b": 212.88324, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "IBM Cloudfi IBM Clou", "bbox": {"l": 75.599998, "t": 215.53827, "r": 112.57558999999999, "b": 223.86321999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "d Pakfi", "bbox": {"l": 112.60799, "t": 226.51824999999997, "r": 142.2117, "b": 234.84320000000002, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "IBM Telum\u2122", "bbox": {"l": 75.599998, "t": 237.55853000000002, "r": 128.0511, "b": 245.88347999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "IBM Watsonfi", "bbox": {"l": 236.40029999999996, "t": 182.53882, "r": 292.00497, "b": 190.86377000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "IBM z16\u2122", "bbox": {"l": 236.40029999999996, "t": 193.51880000000006, "r": 278.3295, "b": 201.84375, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Instanafi", "bbox": {"l": 236.40029999999996, "t": 204.55908, "r": 272.4696, "b": 212.88403000000005, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Open Libertyfi", "bbox": {"l": 236.40029999999996, "t": 215.53905999999995, "r": 294.38095, "b": 223.86401, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "OpenPagesfi", "bbox": {"l": 236.40029999999996, "t": 226.51904000000002, "r": 290.44708, "b": 234.84398999999996, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Redbooksfi", "bbox": {"l": 236.40029999999996, "t": 237.55933000000005, "r": 283.47211, "b": 245.88428, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Redbooks (log", "bbox": {"l": 397.20059, "t": 182.53961000000004, "r": 455.12460000000004, "b": 190.86455999999998, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "o)", "bbox": {"l": 450.04388, "t": 182.53961000000004, "r": 455.17949999999996, "b": 190.86455999999998, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "fi Turbon", "bbox": {"l": 425.6424, "t": 182.53961000000004, "r": 448.43789999999996, "b": 190.86455999999998, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "omicfi", "bbox": {"l": 425.69009, "t": 193.51959, "r": 451.26357999999993, "b": 201.84454000000005, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "WebSpherefi", "bbox": {"l": 397.20059, "t": 204.55988000000002, "r": 451.25278000000003, "b": 212.88482999999997, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "z/OSfi", "bbox": {"l": 397.20059, "t": 215.53985999999998, "r": 423.8046, "b": 223.86481000000003, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "z16\u2122", "bbox": {"l": 397.20059, "t": 226.51984000000004, "r": 420.6366, "b": 234.84479, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "The following terms are trademarks of other companies:", "bbox": {"l": 64.800003, "t": 258.52855999999997, "r": 312.00525, "b": 267.74158, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Intel, Intel logo, Intel Inside logo, and Intel Centrino logo are trademarks or registered trademarks of Intel ", "bbox": {"l": 64.800003, "t": 278.50836000000004, "r": 528.68494, "b": 287.72134, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Corporation or its subsidiaries in the United States and other countries.", "bbox": {"l": 64.800003, "t": 288.52811, "r": 378.13461, "b": 297.74109, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "The registered trademark Linuxfi is used pursuant to a sublicense from the Linux Foundation, the exclusive ", "bbox": {"l": 64.800003, "t": 308.50787, "r": 541.68878, "b": 317.72086, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "licensee of Linus Torvalds, owner of the mark on a worldwide basis.", "bbox": {"l": 64.800003, "t": 318.52762, "r": 364.17566, "b": 327.74060000000003, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Red Hat and OpenShift are trademarks or registered trademarks of Red Hat, Inc. or its subsidiaries in the ", "bbox": {"l": 64.800003, "t": 338.50738999999993, "r": 531.98065, "b": 347.72037, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "United States and other countries.", "bbox": {"l": 64.800003, "t": 348.52713, "r": 215.95392, "b": 357.74011, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "UNIX is a registered trademark of The Open Group in the United States and other countries.", "bbox": {"l": 64.800003, "t": 368.5069, "r": 472.09439, "b": 377.71988, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Other company, product, or service names may be trademarks or service marks of others. ", "bbox": {"l": 64.800003, "t": 388.48666, "r": 465.37216, "b": 397.69965, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.26212310791016, "t": 755.4874267578125, "r": 78.402, "b": 765.08172, "coord_origin": "TOPLEFT"}, "confidence": 0.9160765409469604, "cells": [{"id": 0, "text": "36 ", "bbox": {"l": 64.800003, "t": 755.868721, "r": 78.402, "b": 765.08172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.35021209716797, "t": 755.8494262695312, "r": 267.0744, "b": 765.4060668945312, "coord_origin": "TOPLEFT"}, "confidence": 0.9523178339004517, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 756.557999, "r": 267.0744, "b": 764.883001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.03144836425781, "t": 70.1122817993164, "r": 155.4895, "b": 85.9837, "coord_origin": "TOPLEFT"}, "confidence": 0.954963743686676, "cells": [{"id": 2, "text": "Trademarks", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 155.4895, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 64.0931396484375, "t": 102.72844696044922, "r": 547.23431, "b": 142.70128999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9848971366882324, "cells": [{"id": 3, "text": "IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines ", "bbox": {"l": 64.800003, "t": 103.48870999999997, "r": 547.23431, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Corporation, registered in many jurisdictions worldwide. Other product and service names might be ", "bbox": {"l": 64.800018, "t": 113.50847999999996, "r": 504.22832999999997, "b": 122.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "trademarks of IBM or other companies. A current list of IBM trademarks is available on the web at \u201cCopyright ", "bbox": {"l": 64.800018, "t": 123.52826000000005, "r": 546.94568, "b": 132.74127, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "and trademark information\u201d at ", "bbox": {"l": 64.800018, "t": 133.48828000000003, "r": 198.67136, "b": 142.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "http://www.ibm.com/legal/copytrade.shtml", "bbox": {"l": 198.66043, "t": 133.6377, "r": 398.51779, "b": 142.41247999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 63.78811264038086, "t": 152.59286499023438, "r": 547.24146, "b": 172.8232421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9603025913238525, "cells": [{"id": 8, "text": "The following terms are trademarks or registered trademarks of International Business Machines Corporation, ", "bbox": {"l": 64.800995, "t": 153.52881000000002, "r": 547.24146, "b": 162.74181999999996, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "and might also be trademarks or registered trademarks in other countries. ", "bbox": {"l": 64.800995, "t": 163.48883, "r": 393.13339, "b": 172.70183999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 75.599998, "t": 181.60858154296875, "r": 99.15697479248047, "b": 190.86298, "coord_origin": "TOPLEFT"}, "confidence": 0.8173197507858276, "cells": [{"id": 10, "text": "Db2fi IBMfi", "bbox": {"l": 75.599998, "t": 182.53801999999996, "r": 98.195404, "b": 190.86298, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 75.599998, "t": 203.4119110107422, "r": 144.71075439453125, "b": 212.88324, "coord_origin": "TOPLEFT"}, "confidence": 0.8817703127861023, "cells": [{"id": 11, "text": "IBM Blockchainfi", "bbox": {"l": 75.599998, "t": 204.55829000000006, "r": 144.13049, "b": 212.88324, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 75.599998, "t": 214.50650024414062, "r": 124.25857543945312, "b": 223.86321999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.8559992909431458, "cells": [{"id": 12, "text": "IBM Cloudfi IBM Clou", "bbox": {"l": 75.599998, "t": 215.53827, "r": 112.57558999999999, "b": 223.86321999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 75.47257232666016, "t": 224.76895141601562, "r": 142.73785400390625, "b": 234.84320000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.874781608581543, "cells": [{"id": 13, "text": "d Pakfi", "bbox": {"l": 112.60799, "t": 226.51824999999997, "r": 142.2117, "b": 234.84320000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 75.599998, "t": 235.86727905273438, "r": 128.0511, "b": 245.88347999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.8794353008270264, "cells": [{"id": 14, "text": "IBM Telum\u2122", "bbox": {"l": 75.599998, "t": 237.55853000000002, "r": 128.0511, "b": 245.88347999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 235.9648895263672, "t": 181.54017639160156, "r": 292.5691833496094, "b": 190.86377000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.8140993118286133, "cells": [{"id": 15, "text": "IBM Watsonfi", "bbox": {"l": 236.40029999999996, "t": 182.53882, "r": 292.00497, "b": 190.86377000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 235.9771270751953, "t": 191.93496704101562, "r": 278.3295, "b": 201.84375, "coord_origin": "TOPLEFT"}, "confidence": 0.8634824752807617, "cells": [{"id": 16, "text": "IBM z16\u2122", "bbox": {"l": 236.40029999999996, "t": 193.51880000000006, "r": 278.3295, "b": 201.84375, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 235.92138671875, "t": 203.60043334960938, "r": 272.8687744140625, "b": 212.88403000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.8542282581329346, "cells": [{"id": 17, "text": "Instanafi", "bbox": {"l": 236.40029999999996, "t": 204.55908, "r": 272.4696, "b": 212.88403000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 235.9377899169922, "t": 214.2160186767578, "r": 294.80047607421875, "b": 224.3423614501953, "coord_origin": "TOPLEFT"}, "confidence": 0.861255943775177, "cells": [{"id": 18, "text": "Open Libertyfi", "bbox": {"l": 236.40029999999996, "t": 215.53905999999995, "r": 294.38095, "b": 223.86401, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "text", "bbox": {"l": 235.86184692382812, "t": 225.51539611816406, "r": 290.5615539550781, "b": 234.899658203125, "coord_origin": "TOPLEFT"}, "confidence": 0.8668359518051147, "cells": [{"id": 19, "text": "OpenPagesfi", "bbox": {"l": 236.40029999999996, "t": 226.51904000000002, "r": 290.44708, "b": 234.84398999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "text", "bbox": {"l": 236.06265258789062, "t": 236.30458068847656, "r": 283.79803466796875, "b": 245.88428, "coord_origin": "TOPLEFT"}, "confidence": 0.8743909001350403, "cells": [{"id": 20, "text": "Redbooksfi", "bbox": {"l": 236.40029999999996, "t": 237.55933000000005, "r": 283.47211, "b": 245.88428, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "text", "bbox": {"l": 396.7199401855469, "t": 181.80523681640625, "r": 464.44384765625, "b": 191.1903533935547, "coord_origin": "TOPLEFT"}, "confidence": 0.6504887342453003, "cells": [{"id": 21, "text": "Redbooks (log", "bbox": {"l": 397.20059, "t": 182.53961000000004, "r": 455.12460000000004, "b": 190.86455999999998, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "o)", "bbox": {"l": 450.04388, "t": 182.53961000000004, "r": 455.17949999999996, "b": 190.86455999999998, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "fi Turbon", "bbox": {"l": 425.6424, "t": 182.53961000000004, "r": 448.43789999999996, "b": 190.86455999999998, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "text", "bbox": {"l": 396.71099853515625, "t": 192.41983032226562, "r": 452.03265380859375, "b": 201.84454000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.7500287890434265, "cells": [{"id": 24, "text": "omicfi", "bbox": {"l": 425.69009, "t": 193.51959, "r": 451.26357999999993, "b": 201.84454000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 18, "label": "text", "bbox": {"l": 396.258544921875, "t": 203.52040100097656, "r": 451.70428466796875, "b": 212.88482999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.7123883366584778, "cells": [{"id": 25, "text": "WebSpherefi", "bbox": {"l": 397.20059, "t": 204.55988000000002, "r": 451.25278000000003, "b": 212.88482999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 19, "label": "text", "bbox": {"l": 396.62286376953125, "t": 214.1708984375, "r": 424.4446716308594, "b": 223.86481000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.730349063873291, "cells": [{"id": 26, "text": "z/OSfi", "bbox": {"l": 397.20059, "t": 215.53985999999998, "r": 423.8046, "b": 223.86481000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 20, "label": "text", "bbox": {"l": 396.6561584472656, "t": 225.23277282714844, "r": 420.6366, "b": 234.84479, "coord_origin": "TOPLEFT"}, "confidence": 0.7374036312103271, "cells": [{"id": 27, "text": "z16\u2122", "bbox": {"l": 397.20059, "t": 226.51984000000004, "r": 420.6366, "b": 234.84479, "coord_origin": "TOPLEFT"}}]}, {"id": 21, "label": "text", "bbox": {"l": 64.08106994628906, "t": 258.01312255859375, "r": 312.00525, "b": 268.16949462890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9345569014549255, "cells": [{"id": 28, "text": "The following terms are trademarks of other companies:", "bbox": {"l": 64.800003, "t": 258.52855999999997, "r": 312.00525, "b": 267.74158, "coord_origin": "TOPLEFT"}}]}, {"id": 22, "label": "text", "bbox": {"l": 64.17213439941406, "t": 277.27313232421875, "r": 528.68494, "b": 298.1844787597656, "coord_origin": "TOPLEFT"}, "confidence": 0.9759830832481384, "cells": [{"id": 29, "text": "Intel, Intel logo, Intel Inside logo, and Intel Centrino logo are trademarks or registered trademarks of Intel ", "bbox": {"l": 64.800003, "t": 278.50836000000004, "r": 528.68494, "b": 287.72134, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Corporation or its subsidiaries in the United States and other countries.", "bbox": {"l": 64.800003, "t": 288.52811, "r": 378.13461, "b": 297.74109, "coord_origin": "TOPLEFT"}}]}, {"id": 23, "label": "text", "bbox": {"l": 63.988487243652344, "t": 307.5063171386719, "r": 541.68878, "b": 327.7742919921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9722592234611511, "cells": [{"id": 31, "text": "The registered trademark Linuxfi is used pursuant to a sublicense from the Linux Foundation, the exclusive ", "bbox": {"l": 64.800003, "t": 308.50787, "r": 541.68878, "b": 317.72086, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "licensee of Linus Torvalds, owner of the mark on a worldwide basis.", "bbox": {"l": 64.800003, "t": 318.52762, "r": 364.17566, "b": 327.74060000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 24, "label": "text", "bbox": {"l": 64.36927795410156, "t": 337.3686218261719, "r": 531.98065, "b": 357.74011, "coord_origin": "TOPLEFT"}, "confidence": 0.9669205546379089, "cells": [{"id": 33, "text": "Red Hat and OpenShift are trademarks or registered trademarks of Red Hat, Inc. or its subsidiaries in the ", "bbox": {"l": 64.800003, "t": 338.50738999999993, "r": 531.98065, "b": 347.72037, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "United States and other countries.", "bbox": {"l": 64.800003, "t": 348.52713, "r": 215.95392, "b": 357.74011, "coord_origin": "TOPLEFT"}}]}, {"id": 25, "label": "text", "bbox": {"l": 64.39899444580078, "t": 367.4486083984375, "r": 472.09439, "b": 377.71988, "coord_origin": "TOPLEFT"}, "confidence": 0.9511570930480957, "cells": [{"id": 35, "text": "UNIX is a registered trademark of The Open Group in the United States and other countries.", "bbox": {"l": 64.800003, "t": 368.5069, "r": 472.09439, "b": 377.71988, "coord_origin": "TOPLEFT"}}]}, {"id": 26, "label": "text", "bbox": {"l": 64.1666259765625, "t": 387.39398193359375, "r": 465.37216, "b": 397.69965, "coord_origin": "TOPLEFT"}, "confidence": 0.9543401598930359, "cells": [{"id": 36, "text": "Other company, product, or service names may be trademarks or service marks of others. ", "bbox": {"l": 64.800003, "t": 388.48666, "r": 465.37216, "b": 397.69965, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 37, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.26212310791016, "t": 755.4874267578125, "r": 78.402, "b": 765.08172, "coord_origin": "TOPLEFT"}, "confidence": 0.9160765409469604, "cells": [{"id": 0, "text": "36 ", "bbox": {"l": 64.800003, "t": 755.868721, "r": 78.402, "b": 765.08172, "coord_origin": "TOPLEFT"}}]}, "text": "36"}, {"label": "page_footer", "id": 1, "page_no": 37, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.35021209716797, "t": 755.8494262695312, "r": 267.0744, "b": 765.4060668945312, "coord_origin": "TOPLEFT"}, "confidence": 0.9523178339004517, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 756.557999, "r": 267.0744, "b": 764.883001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"label": "section_header", "id": 2, "page_no": 37, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.03144836425781, "t": 70.1122817993164, "r": 155.4895, "b": 85.9837, "coord_origin": "TOPLEFT"}, "confidence": 0.954963743686676, "cells": [{"id": 2, "text": "Trademarks", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 155.4895, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, "text": "Trademarks"}, {"label": "text", "id": 3, "page_no": 37, "cluster": {"id": 3, "label": "text", "bbox": {"l": 64.0931396484375, "t": 102.72844696044922, "r": 547.23431, "b": 142.70128999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9848971366882324, "cells": [{"id": 3, "text": "IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines ", "bbox": {"l": 64.800003, "t": 103.48870999999997, "r": 547.23431, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Corporation, registered in many jurisdictions worldwide. Other product and service names might be ", "bbox": {"l": 64.800018, "t": 113.50847999999996, "r": 504.22832999999997, "b": 122.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "trademarks of IBM or other companies. A current list of IBM trademarks is available on the web at \u201cCopyright ", "bbox": {"l": 64.800018, "t": 123.52826000000005, "r": 546.94568, "b": 132.74127, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "and trademark information\u201d at ", "bbox": {"l": 64.800018, "t": 133.48828000000003, "r": 198.67136, "b": 142.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "http://www.ibm.com/legal/copytrade.shtml", "bbox": {"l": 198.66043, "t": 133.6377, "r": 398.51779, "b": 142.41247999999996, "coord_origin": "TOPLEFT"}}]}, "text": "IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines Corporation, registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the web at \u201cCopyright and trademark information\u201d at http://www.ibm.com/legal/copytrade.shtml"}, {"label": "text", "id": 4, "page_no": 37, "cluster": {"id": 4, "label": "text", "bbox": {"l": 63.78811264038086, "t": 152.59286499023438, "r": 547.24146, "b": 172.8232421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9603025913238525, "cells": [{"id": 8, "text": "The following terms are trademarks or registered trademarks of International Business Machines Corporation, ", "bbox": {"l": 64.800995, "t": 153.52881000000002, "r": 547.24146, "b": 162.74181999999996, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "and might also be trademarks or registered trademarks in other countries. ", "bbox": {"l": 64.800995, "t": 163.48883, "r": 393.13339, "b": 172.70183999999995, "coord_origin": "TOPLEFT"}}]}, "text": "The following terms are trademarks or registered trademarks of International Business Machines Corporation, and might also be trademarks or registered trademarks in other countries."}, {"label": "text", "id": 5, "page_no": 37, "cluster": {"id": 5, "label": "text", "bbox": {"l": 75.599998, "t": 181.60858154296875, "r": 99.15697479248047, "b": 190.86298, "coord_origin": "TOPLEFT"}, "confidence": 0.8173197507858276, "cells": [{"id": 10, "text": "Db2fi IBMfi", "bbox": {"l": 75.599998, "t": 182.53801999999996, "r": 98.195404, "b": 190.86298, "coord_origin": "TOPLEFT"}}]}, "text": "Db2fi IBMfi"}, {"label": "text", "id": 6, "page_no": 37, "cluster": {"id": 6, "label": "text", "bbox": {"l": 75.599998, "t": 203.4119110107422, "r": 144.71075439453125, "b": 212.88324, "coord_origin": "TOPLEFT"}, "confidence": 0.8817703127861023, "cells": [{"id": 11, "text": "IBM Blockchainfi", "bbox": {"l": 75.599998, "t": 204.55829000000006, "r": 144.13049, "b": 212.88324, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Blockchainfi"}, {"label": "text", "id": 7, "page_no": 37, "cluster": {"id": 7, "label": "text", "bbox": {"l": 75.599998, "t": 214.50650024414062, "r": 124.25857543945312, "b": 223.86321999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.8559992909431458, "cells": [{"id": 12, "text": "IBM Cloudfi IBM Clou", "bbox": {"l": 75.599998, "t": 215.53827, "r": 112.57558999999999, "b": 223.86321999999996, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloudfi IBM Clou"}, {"label": "text", "id": 8, "page_no": 37, "cluster": {"id": 8, "label": "text", "bbox": {"l": 75.47257232666016, "t": 224.76895141601562, "r": 142.73785400390625, "b": 234.84320000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.874781608581543, "cells": [{"id": 13, "text": "d Pakfi", "bbox": {"l": 112.60799, "t": 226.51824999999997, "r": 142.2117, "b": 234.84320000000002, "coord_origin": "TOPLEFT"}}]}, "text": "d Pakfi"}, {"label": "text", "id": 9, "page_no": 37, "cluster": {"id": 9, "label": "text", "bbox": {"l": 75.599998, "t": 235.86727905273438, "r": 128.0511, "b": 245.88347999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.8794353008270264, "cells": [{"id": 14, "text": "IBM Telum\u2122", "bbox": {"l": 75.599998, "t": 237.55853000000002, "r": 128.0511, "b": 245.88347999999996, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Telum\u2122"}, {"label": "text", "id": 10, "page_no": 37, "cluster": {"id": 10, "label": "text", "bbox": {"l": 235.9648895263672, "t": 181.54017639160156, "r": 292.5691833496094, "b": 190.86377000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.8140993118286133, "cells": [{"id": 15, "text": "IBM Watsonfi", "bbox": {"l": 236.40029999999996, "t": 182.53882, "r": 292.00497, "b": 190.86377000000005, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Watsonfi"}, {"label": "text", "id": 11, "page_no": 37, "cluster": {"id": 11, "label": "text", "bbox": {"l": 235.9771270751953, "t": 191.93496704101562, "r": 278.3295, "b": 201.84375, "coord_origin": "TOPLEFT"}, "confidence": 0.8634824752807617, "cells": [{"id": 16, "text": "IBM z16\u2122", "bbox": {"l": 236.40029999999996, "t": 193.51880000000006, "r": 278.3295, "b": 201.84375, "coord_origin": "TOPLEFT"}}]}, "text": "IBM z16\u2122"}, {"label": "text", "id": 12, "page_no": 37, "cluster": {"id": 12, "label": "text", "bbox": {"l": 235.92138671875, "t": 203.60043334960938, "r": 272.8687744140625, "b": 212.88403000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.8542282581329346, "cells": [{"id": 17, "text": "Instanafi", "bbox": {"l": 236.40029999999996, "t": 204.55908, "r": 272.4696, "b": 212.88403000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Instanafi"}, {"label": "text", "id": 13, "page_no": 37, "cluster": {"id": 13, "label": "text", "bbox": {"l": 235.9377899169922, "t": 214.2160186767578, "r": 294.80047607421875, "b": 224.3423614501953, "coord_origin": "TOPLEFT"}, "confidence": 0.861255943775177, "cells": [{"id": 18, "text": "Open Libertyfi", "bbox": {"l": 236.40029999999996, "t": 215.53905999999995, "r": 294.38095, "b": 223.86401, "coord_origin": "TOPLEFT"}}]}, "text": "Open Libertyfi"}, {"label": "text", "id": 14, "page_no": 37, "cluster": {"id": 14, "label": "text", "bbox": {"l": 235.86184692382812, "t": 225.51539611816406, "r": 290.5615539550781, "b": 234.899658203125, "coord_origin": "TOPLEFT"}, "confidence": 0.8668359518051147, "cells": [{"id": 19, "text": "OpenPagesfi", "bbox": {"l": 236.40029999999996, "t": 226.51904000000002, "r": 290.44708, "b": 234.84398999999996, "coord_origin": "TOPLEFT"}}]}, "text": "OpenPagesfi"}, {"label": "text", "id": 15, "page_no": 37, "cluster": {"id": 15, "label": "text", "bbox": {"l": 236.06265258789062, "t": 236.30458068847656, "r": 283.79803466796875, "b": 245.88428, "coord_origin": "TOPLEFT"}, "confidence": 0.8743909001350403, "cells": [{"id": 20, "text": "Redbooksfi", "bbox": {"l": 236.40029999999996, "t": 237.55933000000005, "r": 283.47211, "b": 245.88428, "coord_origin": "TOPLEFT"}}]}, "text": "Redbooksfi"}, {"label": "text", "id": 16, "page_no": 37, "cluster": {"id": 16, "label": "text", "bbox": {"l": 396.7199401855469, "t": 181.80523681640625, "r": 464.44384765625, "b": 191.1903533935547, "coord_origin": "TOPLEFT"}, "confidence": 0.6504887342453003, "cells": [{"id": 21, "text": "Redbooks (log", "bbox": {"l": 397.20059, "t": 182.53961000000004, "r": 455.12460000000004, "b": 190.86455999999998, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "o)", "bbox": {"l": 450.04388, "t": 182.53961000000004, "r": 455.17949999999996, "b": 190.86455999999998, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "fi Turbon", "bbox": {"l": 425.6424, "t": 182.53961000000004, "r": 448.43789999999996, "b": 190.86455999999998, "coord_origin": "TOPLEFT"}}]}, "text": "Redbooks (log o) fi Turbon"}, {"label": "text", "id": 17, "page_no": 37, "cluster": {"id": 17, "label": "text", "bbox": {"l": 396.71099853515625, "t": 192.41983032226562, "r": 452.03265380859375, "b": 201.84454000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.7500287890434265, "cells": [{"id": 24, "text": "omicfi", "bbox": {"l": 425.69009, "t": 193.51959, "r": 451.26357999999993, "b": 201.84454000000005, "coord_origin": "TOPLEFT"}}]}, "text": "omicfi"}, {"label": "text", "id": 18, "page_no": 37, "cluster": {"id": 18, "label": "text", "bbox": {"l": 396.258544921875, "t": 203.52040100097656, "r": 451.70428466796875, "b": 212.88482999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.7123883366584778, "cells": [{"id": 25, "text": "WebSpherefi", "bbox": {"l": 397.20059, "t": 204.55988000000002, "r": 451.25278000000003, "b": 212.88482999999997, "coord_origin": "TOPLEFT"}}]}, "text": "WebSpherefi"}, {"label": "text", "id": 19, "page_no": 37, "cluster": {"id": 19, "label": "text", "bbox": {"l": 396.62286376953125, "t": 214.1708984375, "r": 424.4446716308594, "b": 223.86481000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.730349063873291, "cells": [{"id": 26, "text": "z/OSfi", "bbox": {"l": 397.20059, "t": 215.53985999999998, "r": 423.8046, "b": 223.86481000000003, "coord_origin": "TOPLEFT"}}]}, "text": "z/OSfi"}, {"label": "text", "id": 20, "page_no": 37, "cluster": {"id": 20, "label": "text", "bbox": {"l": 396.6561584472656, "t": 225.23277282714844, "r": 420.6366, "b": 234.84479, "coord_origin": "TOPLEFT"}, "confidence": 0.7374036312103271, "cells": [{"id": 27, "text": "z16\u2122", "bbox": {"l": 397.20059, "t": 226.51984000000004, "r": 420.6366, "b": 234.84479, "coord_origin": "TOPLEFT"}}]}, "text": "z16\u2122"}, {"label": "text", "id": 21, "page_no": 37, "cluster": {"id": 21, "label": "text", "bbox": {"l": 64.08106994628906, "t": 258.01312255859375, "r": 312.00525, "b": 268.16949462890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9345569014549255, "cells": [{"id": 28, "text": "The following terms are trademarks of other companies:", "bbox": {"l": 64.800003, "t": 258.52855999999997, "r": 312.00525, "b": 267.74158, "coord_origin": "TOPLEFT"}}]}, "text": "The following terms are trademarks of other companies:"}, {"label": "text", "id": 22, "page_no": 37, "cluster": {"id": 22, "label": "text", "bbox": {"l": 64.17213439941406, "t": 277.27313232421875, "r": 528.68494, "b": 298.1844787597656, "coord_origin": "TOPLEFT"}, "confidence": 0.9759830832481384, "cells": [{"id": 29, "text": "Intel, Intel logo, Intel Inside logo, and Intel Centrino logo are trademarks or registered trademarks of Intel ", "bbox": {"l": 64.800003, "t": 278.50836000000004, "r": 528.68494, "b": 287.72134, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Corporation or its subsidiaries in the United States and other countries.", "bbox": {"l": 64.800003, "t": 288.52811, "r": 378.13461, "b": 297.74109, "coord_origin": "TOPLEFT"}}]}, "text": "Intel, Intel logo, Intel Inside logo, and Intel Centrino logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries."}, {"label": "text", "id": 23, "page_no": 37, "cluster": {"id": 23, "label": "text", "bbox": {"l": 63.988487243652344, "t": 307.5063171386719, "r": 541.68878, "b": 327.7742919921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9722592234611511, "cells": [{"id": 31, "text": "The registered trademark Linuxfi is used pursuant to a sublicense from the Linux Foundation, the exclusive ", "bbox": {"l": 64.800003, "t": 308.50787, "r": 541.68878, "b": 317.72086, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "licensee of Linus Torvalds, owner of the mark on a worldwide basis.", "bbox": {"l": 64.800003, "t": 318.52762, "r": 364.17566, "b": 327.74060000000003, "coord_origin": "TOPLEFT"}}]}, "text": "The registered trademark Linuxfi is used pursuant to a sublicense from the Linux Foundation, the exclusive licensee of Linus Torvalds, owner of the mark on a worldwide basis."}, {"label": "text", "id": 24, "page_no": 37, "cluster": {"id": 24, "label": "text", "bbox": {"l": 64.36927795410156, "t": 337.3686218261719, "r": 531.98065, "b": 357.74011, "coord_origin": "TOPLEFT"}, "confidence": 0.9669205546379089, "cells": [{"id": 33, "text": "Red Hat and OpenShift are trademarks or registered trademarks of Red Hat, Inc. or its subsidiaries in the ", "bbox": {"l": 64.800003, "t": 338.50738999999993, "r": 531.98065, "b": 347.72037, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "United States and other countries.", "bbox": {"l": 64.800003, "t": 348.52713, "r": 215.95392, "b": 357.74011, "coord_origin": "TOPLEFT"}}]}, "text": "Red Hat and OpenShift are trademarks or registered trademarks of Red Hat, Inc. or its subsidiaries in the United States and other countries."}, {"label": "text", "id": 25, "page_no": 37, "cluster": {"id": 25, "label": "text", "bbox": {"l": 64.39899444580078, "t": 367.4486083984375, "r": 472.09439, "b": 377.71988, "coord_origin": "TOPLEFT"}, "confidence": 0.9511570930480957, "cells": [{"id": 35, "text": "UNIX is a registered trademark of The Open Group in the United States and other countries.", "bbox": {"l": 64.800003, "t": 368.5069, "r": 472.09439, "b": 377.71988, "coord_origin": "TOPLEFT"}}]}, "text": "UNIX is a registered trademark of The Open Group in the United States and other countries."}, {"label": "text", "id": 26, "page_no": 37, "cluster": {"id": 26, "label": "text", "bbox": {"l": 64.1666259765625, "t": 387.39398193359375, "r": 465.37216, "b": 397.69965, "coord_origin": "TOPLEFT"}, "confidence": 0.9543401598930359, "cells": [{"id": 36, "text": "Other company, product, or service names may be trademarks or service marks of others. ", "bbox": {"l": 64.800003, "t": 388.48666, "r": 465.37216, "b": 397.69965, "coord_origin": "TOPLEFT"}}]}, "text": "Other company, product, or service names may be trademarks or service marks of others."}], "body": [{"label": "section_header", "id": 2, "page_no": 37, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.03144836425781, "t": 70.1122817993164, "r": 155.4895, "b": 85.9837, "coord_origin": "TOPLEFT"}, "confidence": 0.954963743686676, "cells": [{"id": 2, "text": "Trademarks", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 155.4895, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, "text": "Trademarks"}, {"label": "text", "id": 3, "page_no": 37, "cluster": {"id": 3, "label": "text", "bbox": {"l": 64.0931396484375, "t": 102.72844696044922, "r": 547.23431, "b": 142.70128999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9848971366882324, "cells": [{"id": 3, "text": "IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines ", "bbox": {"l": 64.800003, "t": 103.48870999999997, "r": 547.23431, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Corporation, registered in many jurisdictions worldwide. Other product and service names might be ", "bbox": {"l": 64.800018, "t": 113.50847999999996, "r": 504.22832999999997, "b": 122.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "trademarks of IBM or other companies. A current list of IBM trademarks is available on the web at \u201cCopyright ", "bbox": {"l": 64.800018, "t": 123.52826000000005, "r": 546.94568, "b": 132.74127, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "and trademark information\u201d at ", "bbox": {"l": 64.800018, "t": 133.48828000000003, "r": 198.67136, "b": 142.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "http://www.ibm.com/legal/copytrade.shtml", "bbox": {"l": 198.66043, "t": 133.6377, "r": 398.51779, "b": 142.41247999999996, "coord_origin": "TOPLEFT"}}]}, "text": "IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines Corporation, registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the web at \u201cCopyright and trademark information\u201d at http://www.ibm.com/legal/copytrade.shtml"}, {"label": "text", "id": 4, "page_no": 37, "cluster": {"id": 4, "label": "text", "bbox": {"l": 63.78811264038086, "t": 152.59286499023438, "r": 547.24146, "b": 172.8232421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9603025913238525, "cells": [{"id": 8, "text": "The following terms are trademarks or registered trademarks of International Business Machines Corporation, ", "bbox": {"l": 64.800995, "t": 153.52881000000002, "r": 547.24146, "b": 162.74181999999996, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "and might also be trademarks or registered trademarks in other countries. ", "bbox": {"l": 64.800995, "t": 163.48883, "r": 393.13339, "b": 172.70183999999995, "coord_origin": "TOPLEFT"}}]}, "text": "The following terms are trademarks or registered trademarks of International Business Machines Corporation, and might also be trademarks or registered trademarks in other countries."}, {"label": "text", "id": 5, "page_no": 37, "cluster": {"id": 5, "label": "text", "bbox": {"l": 75.599998, "t": 181.60858154296875, "r": 99.15697479248047, "b": 190.86298, "coord_origin": "TOPLEFT"}, "confidence": 0.8173197507858276, "cells": [{"id": 10, "text": "Db2fi IBMfi", "bbox": {"l": 75.599998, "t": 182.53801999999996, "r": 98.195404, "b": 190.86298, "coord_origin": "TOPLEFT"}}]}, "text": "Db2fi IBMfi"}, {"label": "text", "id": 6, "page_no": 37, "cluster": {"id": 6, "label": "text", "bbox": {"l": 75.599998, "t": 203.4119110107422, "r": 144.71075439453125, "b": 212.88324, "coord_origin": "TOPLEFT"}, "confidence": 0.8817703127861023, "cells": [{"id": 11, "text": "IBM Blockchainfi", "bbox": {"l": 75.599998, "t": 204.55829000000006, "r": 144.13049, "b": 212.88324, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Blockchainfi"}, {"label": "text", "id": 7, "page_no": 37, "cluster": {"id": 7, "label": "text", "bbox": {"l": 75.599998, "t": 214.50650024414062, "r": 124.25857543945312, "b": 223.86321999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.8559992909431458, "cells": [{"id": 12, "text": "IBM Cloudfi IBM Clou", "bbox": {"l": 75.599998, "t": 215.53827, "r": 112.57558999999999, "b": 223.86321999999996, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloudfi IBM Clou"}, {"label": "text", "id": 8, "page_no": 37, "cluster": {"id": 8, "label": "text", "bbox": {"l": 75.47257232666016, "t": 224.76895141601562, "r": 142.73785400390625, "b": 234.84320000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.874781608581543, "cells": [{"id": 13, "text": "d Pakfi", "bbox": {"l": 112.60799, "t": 226.51824999999997, "r": 142.2117, "b": 234.84320000000002, "coord_origin": "TOPLEFT"}}]}, "text": "d Pakfi"}, {"label": "text", "id": 9, "page_no": 37, "cluster": {"id": 9, "label": "text", "bbox": {"l": 75.599998, "t": 235.86727905273438, "r": 128.0511, "b": 245.88347999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.8794353008270264, "cells": [{"id": 14, "text": "IBM Telum\u2122", "bbox": {"l": 75.599998, "t": 237.55853000000002, "r": 128.0511, "b": 245.88347999999996, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Telum\u2122"}, {"label": "text", "id": 10, "page_no": 37, "cluster": {"id": 10, "label": "text", "bbox": {"l": 235.9648895263672, "t": 181.54017639160156, "r": 292.5691833496094, "b": 190.86377000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.8140993118286133, "cells": [{"id": 15, "text": "IBM Watsonfi", "bbox": {"l": 236.40029999999996, "t": 182.53882, "r": 292.00497, "b": 190.86377000000005, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Watsonfi"}, {"label": "text", "id": 11, "page_no": 37, "cluster": {"id": 11, "label": "text", "bbox": {"l": 235.9771270751953, "t": 191.93496704101562, "r": 278.3295, "b": 201.84375, "coord_origin": "TOPLEFT"}, "confidence": 0.8634824752807617, "cells": [{"id": 16, "text": "IBM z16\u2122", "bbox": {"l": 236.40029999999996, "t": 193.51880000000006, "r": 278.3295, "b": 201.84375, "coord_origin": "TOPLEFT"}}]}, "text": "IBM z16\u2122"}, {"label": "text", "id": 12, "page_no": 37, "cluster": {"id": 12, "label": "text", "bbox": {"l": 235.92138671875, "t": 203.60043334960938, "r": 272.8687744140625, "b": 212.88403000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.8542282581329346, "cells": [{"id": 17, "text": "Instanafi", "bbox": {"l": 236.40029999999996, "t": 204.55908, "r": 272.4696, "b": 212.88403000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Instanafi"}, {"label": "text", "id": 13, "page_no": 37, "cluster": {"id": 13, "label": "text", "bbox": {"l": 235.9377899169922, "t": 214.2160186767578, "r": 294.80047607421875, "b": 224.3423614501953, "coord_origin": "TOPLEFT"}, "confidence": 0.861255943775177, "cells": [{"id": 18, "text": "Open Libertyfi", "bbox": {"l": 236.40029999999996, "t": 215.53905999999995, "r": 294.38095, "b": 223.86401, "coord_origin": "TOPLEFT"}}]}, "text": "Open Libertyfi"}, {"label": "text", "id": 14, "page_no": 37, "cluster": {"id": 14, "label": "text", "bbox": {"l": 235.86184692382812, "t": 225.51539611816406, "r": 290.5615539550781, "b": 234.899658203125, "coord_origin": "TOPLEFT"}, "confidence": 0.8668359518051147, "cells": [{"id": 19, "text": "OpenPagesfi", "bbox": {"l": 236.40029999999996, "t": 226.51904000000002, "r": 290.44708, "b": 234.84398999999996, "coord_origin": "TOPLEFT"}}]}, "text": "OpenPagesfi"}, {"label": "text", "id": 15, "page_no": 37, "cluster": {"id": 15, "label": "text", "bbox": {"l": 236.06265258789062, "t": 236.30458068847656, "r": 283.79803466796875, "b": 245.88428, "coord_origin": "TOPLEFT"}, "confidence": 0.8743909001350403, "cells": [{"id": 20, "text": "Redbooksfi", "bbox": {"l": 236.40029999999996, "t": 237.55933000000005, "r": 283.47211, "b": 245.88428, "coord_origin": "TOPLEFT"}}]}, "text": "Redbooksfi"}, {"label": "text", "id": 16, "page_no": 37, "cluster": {"id": 16, "label": "text", "bbox": {"l": 396.7199401855469, "t": 181.80523681640625, "r": 464.44384765625, "b": 191.1903533935547, "coord_origin": "TOPLEFT"}, "confidence": 0.6504887342453003, "cells": [{"id": 21, "text": "Redbooks (log", "bbox": {"l": 397.20059, "t": 182.53961000000004, "r": 455.12460000000004, "b": 190.86455999999998, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "o)", "bbox": {"l": 450.04388, "t": 182.53961000000004, "r": 455.17949999999996, "b": 190.86455999999998, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "fi Turbon", "bbox": {"l": 425.6424, "t": 182.53961000000004, "r": 448.43789999999996, "b": 190.86455999999998, "coord_origin": "TOPLEFT"}}]}, "text": "Redbooks (log o) fi Turbon"}, {"label": "text", "id": 17, "page_no": 37, "cluster": {"id": 17, "label": "text", "bbox": {"l": 396.71099853515625, "t": 192.41983032226562, "r": 452.03265380859375, "b": 201.84454000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.7500287890434265, "cells": [{"id": 24, "text": "omicfi", "bbox": {"l": 425.69009, "t": 193.51959, "r": 451.26357999999993, "b": 201.84454000000005, "coord_origin": "TOPLEFT"}}]}, "text": "omicfi"}, {"label": "text", "id": 18, "page_no": 37, "cluster": {"id": 18, "label": "text", "bbox": {"l": 396.258544921875, "t": 203.52040100097656, "r": 451.70428466796875, "b": 212.88482999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.7123883366584778, "cells": [{"id": 25, "text": "WebSpherefi", "bbox": {"l": 397.20059, "t": 204.55988000000002, "r": 451.25278000000003, "b": 212.88482999999997, "coord_origin": "TOPLEFT"}}]}, "text": "WebSpherefi"}, {"label": "text", "id": 19, "page_no": 37, "cluster": {"id": 19, "label": "text", "bbox": {"l": 396.62286376953125, "t": 214.1708984375, "r": 424.4446716308594, "b": 223.86481000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.730349063873291, "cells": [{"id": 26, "text": "z/OSfi", "bbox": {"l": 397.20059, "t": 215.53985999999998, "r": 423.8046, "b": 223.86481000000003, "coord_origin": "TOPLEFT"}}]}, "text": "z/OSfi"}, {"label": "text", "id": 20, "page_no": 37, "cluster": {"id": 20, "label": "text", "bbox": {"l": 396.6561584472656, "t": 225.23277282714844, "r": 420.6366, "b": 234.84479, "coord_origin": "TOPLEFT"}, "confidence": 0.7374036312103271, "cells": [{"id": 27, "text": "z16\u2122", "bbox": {"l": 397.20059, "t": 226.51984000000004, "r": 420.6366, "b": 234.84479, "coord_origin": "TOPLEFT"}}]}, "text": "z16\u2122"}, {"label": "text", "id": 21, "page_no": 37, "cluster": {"id": 21, "label": "text", "bbox": {"l": 64.08106994628906, "t": 258.01312255859375, "r": 312.00525, "b": 268.16949462890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9345569014549255, "cells": [{"id": 28, "text": "The following terms are trademarks of other companies:", "bbox": {"l": 64.800003, "t": 258.52855999999997, "r": 312.00525, "b": 267.74158, "coord_origin": "TOPLEFT"}}]}, "text": "The following terms are trademarks of other companies:"}, {"label": "text", "id": 22, "page_no": 37, "cluster": {"id": 22, "label": "text", "bbox": {"l": 64.17213439941406, "t": 277.27313232421875, "r": 528.68494, "b": 298.1844787597656, "coord_origin": "TOPLEFT"}, "confidence": 0.9759830832481384, "cells": [{"id": 29, "text": "Intel, Intel logo, Intel Inside logo, and Intel Centrino logo are trademarks or registered trademarks of Intel ", "bbox": {"l": 64.800003, "t": 278.50836000000004, "r": 528.68494, "b": 287.72134, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Corporation or its subsidiaries in the United States and other countries.", "bbox": {"l": 64.800003, "t": 288.52811, "r": 378.13461, "b": 297.74109, "coord_origin": "TOPLEFT"}}]}, "text": "Intel, Intel logo, Intel Inside logo, and Intel Centrino logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries."}, {"label": "text", "id": 23, "page_no": 37, "cluster": {"id": 23, "label": "text", "bbox": {"l": 63.988487243652344, "t": 307.5063171386719, "r": 541.68878, "b": 327.7742919921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9722592234611511, "cells": [{"id": 31, "text": "The registered trademark Linuxfi is used pursuant to a sublicense from the Linux Foundation, the exclusive ", "bbox": {"l": 64.800003, "t": 308.50787, "r": 541.68878, "b": 317.72086, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "licensee of Linus Torvalds, owner of the mark on a worldwide basis.", "bbox": {"l": 64.800003, "t": 318.52762, "r": 364.17566, "b": 327.74060000000003, "coord_origin": "TOPLEFT"}}]}, "text": "The registered trademark Linuxfi is used pursuant to a sublicense from the Linux Foundation, the exclusive licensee of Linus Torvalds, owner of the mark on a worldwide basis."}, {"label": "text", "id": 24, "page_no": 37, "cluster": {"id": 24, "label": "text", "bbox": {"l": 64.36927795410156, "t": 337.3686218261719, "r": 531.98065, "b": 357.74011, "coord_origin": "TOPLEFT"}, "confidence": 0.9669205546379089, "cells": [{"id": 33, "text": "Red Hat and OpenShift are trademarks or registered trademarks of Red Hat, Inc. or its subsidiaries in the ", "bbox": {"l": 64.800003, "t": 338.50738999999993, "r": 531.98065, "b": 347.72037, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "United States and other countries.", "bbox": {"l": 64.800003, "t": 348.52713, "r": 215.95392, "b": 357.74011, "coord_origin": "TOPLEFT"}}]}, "text": "Red Hat and OpenShift are trademarks or registered trademarks of Red Hat, Inc. or its subsidiaries in the United States and other countries."}, {"label": "text", "id": 25, "page_no": 37, "cluster": {"id": 25, "label": "text", "bbox": {"l": 64.39899444580078, "t": 367.4486083984375, "r": 472.09439, "b": 377.71988, "coord_origin": "TOPLEFT"}, "confidence": 0.9511570930480957, "cells": [{"id": 35, "text": "UNIX is a registered trademark of The Open Group in the United States and other countries.", "bbox": {"l": 64.800003, "t": 368.5069, "r": 472.09439, "b": 377.71988, "coord_origin": "TOPLEFT"}}]}, "text": "UNIX is a registered trademark of The Open Group in the United States and other countries."}, {"label": "text", "id": 26, "page_no": 37, "cluster": {"id": 26, "label": "text", "bbox": {"l": 64.1666259765625, "t": 387.39398193359375, "r": 465.37216, "b": 397.69965, "coord_origin": "TOPLEFT"}, "confidence": 0.9543401598930359, "cells": [{"id": 36, "text": "Other company, product, or service names may be trademarks or service marks of others. ", "bbox": {"l": 64.800003, "t": 388.48666, "r": 465.37216, "b": 397.69965, "coord_origin": "TOPLEFT"}}]}, "text": "Other company, product, or service names may be trademarks or service marks of others."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 37, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.26212310791016, "t": 755.4874267578125, "r": 78.402, "b": 765.08172, "coord_origin": "TOPLEFT"}, "confidence": 0.9160765409469604, "cells": [{"id": 0, "text": "36 ", "bbox": {"l": 64.800003, "t": 755.868721, "r": 78.402, "b": 765.08172, "coord_origin": "TOPLEFT"}}]}, "text": "36"}, {"label": "page_footer", "id": 1, "page_no": 37, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.35021209716797, "t": 755.8494262695312, "r": 267.0744, "b": 765.4060668945312, "coord_origin": "TOPLEFT"}, "confidence": 0.9523178339004517, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 756.557999, "r": 267.0744, "b": 764.883001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}]}}, {"page_no": 38, "size": {"width": 612.0, "height": 792.0}, "cells": [], "predictions": {"layout": {"clusters": []}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [], "body": [], "headers": []}}, {"page_no": 39, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "ibm.com", "bbox": {"l": 475.14240000000007, "t": 765.638296, "r": 507.02359, "b": 772.838566, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "/redbooks", "bbox": {"l": 507.02359, "t": 765.374287, "r": 542.70496, "b": 772.838566, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Printed in U.S.A.", "bbox": {"l": 497.45998999999995, "t": 693.857903, "r": 564.18878, "b": 702.182899, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Back cover", "bbox": {"l": 287.22, "t": 28.54803000000004, "r": 415.20721, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "ISBN 0738461067", "bbox": {"l": 482.88, "t": 133.30872, "r": 564.59991, "b": 142.52173000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "REDP-5695-00", "bbox": {"l": 496.13974, "t": 112.30902000000003, "r": 563.94537, "b": 121.52202999999997, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "fi", "bbox": {"l": 564.35974, "t": 757.369411, "r": 571.70026, "b": 766.582411, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "picture", "bbox": {"l": 433.6951904296875, "t": 736.6339721679688, "r": 572.0396728515625, "b": 772.838566, "coord_origin": "TOPLEFT"}, "confidence": 0.9196886420249939, "cells": [{"id": 0, "text": "ibm.com", "bbox": {"l": 475.14240000000007, "t": 765.638296, "r": 507.02359, "b": 772.838566, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "/redbooks", "bbox": {"l": 507.02359, "t": 765.374287, "r": 542.70496, "b": 772.838566, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "fi", "bbox": {"l": 564.35974, "t": 757.369411, "r": 571.70026, "b": 766.582411, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 497.23223876953125, "t": 692.6136474609375, "r": 564.18878, "b": 702.182899, "coord_origin": "TOPLEFT"}, "confidence": 0.7631505131721497, "cells": [{"id": 2, "text": "Printed in U.S.A.", "bbox": {"l": 497.45998999999995, "t": 693.857903, "r": 564.18878, "b": 702.182899, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 287.22, "t": 28.54803000000004, "r": 415.20721, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 3, "text": "Back cover", "bbox": {"l": 287.22, "t": 28.54803000000004, "r": 415.20721, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 482.8758239746094, "t": 132.7060089111328, "r": 564.6472778320312, "b": 142.52173000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.6413159966468811, "cells": [{"id": 4, "text": "ISBN 0738461067", "bbox": {"l": 482.88, "t": 133.30872, "r": 564.59991, "b": 142.52173000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 495.9403076171875, "t": 111.2182388305664, "r": 564.1664428710938, "b": 121.52202999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.7024716138839722, "cells": [{"id": 5, "text": "REDP-5695-00", "bbox": {"l": 496.13974, "t": 112.30902000000003, "r": 563.94537, "b": 121.52202999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "picture", "bbox": {"l": 475.4501647949219, "t": 44.3557243347168, "r": 565.7938232421875, "b": 79.389404296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9275028109550476, "cells": []}, {"id": 6, "label": "picture", "bbox": {"l": 42.63053512573242, "t": 749.2789306640625, "r": 68.95333862304688, "b": 776.0442504882812, "coord_origin": "TOPLEFT"}, "confidence": 0.8069466352462769, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "picture", "id": 0, "page_no": 39, "cluster": {"id": 0, "label": "picture", "bbox": {"l": 433.6951904296875, "t": 736.6339721679688, "r": 572.0396728515625, "b": 772.838566, "coord_origin": "TOPLEFT"}, "confidence": 0.9196886420249939, "cells": [{"id": 0, "text": "ibm.com", "bbox": {"l": 475.14240000000007, "t": 765.638296, "r": 507.02359, "b": 772.838566, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "/redbooks", "bbox": {"l": 507.02359, "t": 765.374287, "r": 542.70496, "b": 772.838566, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "fi", "bbox": {"l": 564.35974, "t": 757.369411, "r": 571.70026, "b": 766.582411, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "page_footer", "id": 1, "page_no": 39, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 497.23223876953125, "t": 692.6136474609375, "r": 564.18878, "b": 702.182899, "coord_origin": "TOPLEFT"}, "confidence": 0.7631505131721497, "cells": [{"id": 2, "text": "Printed in U.S.A.", "bbox": {"l": 497.45998999999995, "t": 693.857903, "r": 564.18878, "b": 702.182899, "coord_origin": "TOPLEFT"}}]}, "text": "Printed in U.S.A."}, {"label": "text", "id": 2, "page_no": 39, "cluster": {"id": 2, "label": "text", "bbox": {"l": 287.22, "t": 28.54803000000004, "r": 415.20721, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 3, "text": "Back cover", "bbox": {"l": 287.22, "t": 28.54803000000004, "r": 415.20721, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}}]}, "text": "Back cover"}, {"label": "text", "id": 3, "page_no": 39, "cluster": {"id": 3, "label": "text", "bbox": {"l": 482.8758239746094, "t": 132.7060089111328, "r": 564.6472778320312, "b": 142.52173000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.6413159966468811, "cells": [{"id": 4, "text": "ISBN 0738461067", "bbox": {"l": 482.88, "t": 133.30872, "r": 564.59991, "b": 142.52173000000005, "coord_origin": "TOPLEFT"}}]}, "text": "ISBN 0738461067"}, {"label": "text", "id": 4, "page_no": 39, "cluster": {"id": 4, "label": "text", "bbox": {"l": 495.9403076171875, "t": 111.2182388305664, "r": 564.1664428710938, "b": 121.52202999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.7024716138839722, "cells": [{"id": 5, "text": "REDP-5695-00", "bbox": {"l": 496.13974, "t": 112.30902000000003, "r": 563.94537, "b": 121.52202999999997, "coord_origin": "TOPLEFT"}}]}, "text": "REDP-5695-00"}, {"label": "picture", "id": 5, "page_no": 39, "cluster": {"id": 5, "label": "picture", "bbox": {"l": 475.4501647949219, "t": 44.3557243347168, "r": 565.7938232421875, "b": 79.389404296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9275028109550476, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 6, "page_no": 39, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 42.63053512573242, "t": 749.2789306640625, "r": 68.95333862304688, "b": 776.0442504882812, "coord_origin": "TOPLEFT"}, "confidence": 0.8069466352462769, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "picture", "id": 0, "page_no": 39, "cluster": {"id": 0, "label": "picture", "bbox": {"l": 433.6951904296875, "t": 736.6339721679688, "r": 572.0396728515625, "b": 772.838566, "coord_origin": "TOPLEFT"}, "confidence": 0.9196886420249939, "cells": [{"id": 0, "text": "ibm.com", "bbox": {"l": 475.14240000000007, "t": 765.638296, "r": 507.02359, "b": 772.838566, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "/redbooks", "bbox": {"l": 507.02359, "t": 765.374287, "r": 542.70496, "b": 772.838566, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "fi", "bbox": {"l": 564.35974, "t": 757.369411, "r": 571.70026, "b": 766.582411, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "text", "id": 2, "page_no": 39, "cluster": {"id": 2, "label": "text", "bbox": {"l": 287.22, "t": 28.54803000000004, "r": 415.20721, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 3, "text": "Back cover", "bbox": {"l": 287.22, "t": 28.54803000000004, "r": 415.20721, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}}]}, "text": "Back cover"}, {"label": "text", "id": 3, "page_no": 39, "cluster": {"id": 3, "label": "text", "bbox": {"l": 482.8758239746094, "t": 132.7060089111328, "r": 564.6472778320312, "b": 142.52173000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.6413159966468811, "cells": [{"id": 4, "text": "ISBN 0738461067", "bbox": {"l": 482.88, "t": 133.30872, "r": 564.59991, "b": 142.52173000000005, "coord_origin": "TOPLEFT"}}]}, "text": "ISBN 0738461067"}, {"label": "text", "id": 4, "page_no": 39, "cluster": {"id": 4, "label": "text", "bbox": {"l": 495.9403076171875, "t": 111.2182388305664, "r": 564.1664428710938, "b": 121.52202999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.7024716138839722, "cells": [{"id": 5, "text": "REDP-5695-00", "bbox": {"l": 496.13974, "t": 112.30902000000003, "r": 563.94537, "b": 121.52202999999997, "coord_origin": "TOPLEFT"}}]}, "text": "REDP-5695-00"}, {"label": "picture", "id": 5, "page_no": 39, "cluster": {"id": 5, "label": "picture", "bbox": {"l": 475.4501647949219, "t": 44.3557243347168, "r": 565.7938232421875, "b": 79.389404296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9275028109550476, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 6, "page_no": 39, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 42.63053512573242, "t": 749.2789306640625, "r": 68.95333862304688, "b": 776.0442504882812, "coord_origin": "TOPLEFT"}, "confidence": 0.8069466352462769, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 1, "page_no": 39, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 497.23223876953125, "t": 692.6136474609375, "r": 564.18878, "b": 702.182899, "coord_origin": "TOPLEFT"}, "confidence": 0.7631505131721497, "cells": [{"id": 2, "text": "Printed in U.S.A.", "bbox": {"l": 497.45998999999995, "t": 693.857903, "r": 564.18878, "b": 702.182899, "coord_origin": "TOPLEFT"}}]}, "text": "Printed in U.S.A."}]}}] \ No newline at end of file diff --git a/tests/data/groundtruth/docling_v2/redp5110.doctags.txt b/tests/data/groundtruth/docling_v2/redp5110.doctags.txt deleted file mode 100644 index 0fb69c7b..00000000 --- a/tests/data/groundtruth/docling_v2/redp5110.doctags.txt +++ /dev/null @@ -1,1883 +0,0 @@ - -Front cover -
- -
-Row and Column Access Control Support in IBM DB2 for i -Implement roles and separation of duties -Leverage row permissions on the database -Protect columns by defining column masks -Jim Bainbridge Hernando Bedoya Rob Bestgen Mike Cain Dan Cruikshank Jim Denton Doug Mack Tom McKinley Kent Milligan -Redpaper -
- -
-International Technical Support Organization -Row and Column Access Control Support in IBM DB2 for i -November 2014 -Note: Before using this information and the product it supports, read the information in "Notices" on page vii. -First Edition (November 2014) -This edition applies to Version 7, Release 2 of IBM i (product number 5770-SS1). -Note to U.S. Government Users Restricted Rights -- Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. -Contents - - -Notices. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii -Trademarks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii -DB2 for i Center of Excellence. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix -Preface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi -Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi -Now you can become a published author, too!. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii -Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xiii -Stay connected to IBM Redbooks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv -Chapter 1. Securing and protecting IBM DB2 data . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 -1.1 Security fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 -1.2 Current state of IBM i security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2 -1.3 DB2 for i security controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 -1.3.1 Existing row and column control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4 -1.3.2 New controls: Row and Column Access Control. . . . . . . . . . . . . . . . . . . . . . . . . . .5 -Chapter 2. Roles and separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7 -2.1 Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8 -2.1.1 DDM and DRDA application server access: QIBM_DB_DDMDRDA . . . . . . . . . . .8 -2.1.2 Toolbox application server access: QIBM_DB_ZDA. . . . . . . . . . . . . . . . . . . . . . . .8 -2.1.3 Database Administrator function: QIBM_DB_SQLADM . . . . . . . . . . . . . . . . . . . . .9 -2.1.4 Database Information function: QIBM_DB_SYSMON. . . . . . . . . . . . . . . . . . . . . . 9 -2.1.5 Security Administrator function: QIBM_DB_SECADM . . . . . . . . . . . . . . . . . . . . . .9 -2.1.6 Change Function Usage CL command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10 -2.1.7 Verifying function usage IDs for RCAC with the FUNCTION_USAGE view . . . . .10 -2.2 Separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 -Chapter 3. Row and Column Access Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13 -3.1 Explanation of RCAC and the concept of access control . . . . . . . . . . . . . . . . . . . . . . .14 -3.1.1 Row permission and column mask definitions. . . . . . . . . . . . . . . . . . . . . . . . . . . 14 -3.1.2 Enabling and activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16 -3.2 Special registers and built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18 -3.2.1 Special registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18 -3.2.2 Built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .19 -3.3 VERIFY_GROUP_FOR_USER function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20 -3.4 Establishing and controlling accessibility by using the RCAC rule text . . . . . . . . . . . . .21 -. . . . . . . . . . . . . . . . . . . . . . . . 22 -3.5 SELECT, INSERT, and UPDATE behavior with RCAC -3.6.1 Assigning the QIBM_DB_SECADM function ID to the consultants. . . . . . . . . . . .23 -3.6.2 Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .23 -3.6.3 Demonstrating data access without RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24 -3.6.4 Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25 -3.6.5 Defining and creating column masks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 -3.6.6 Activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28 -3.6.7 Demonstrating data access with RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29 -3.6.8 Demonstrating data access with a view and RCAC . . . . . . . . . . . . . . . . . . . . . . .32 -
- - -Chapter 4. Implementing Row and Column Access Control: Banking example . . . . .37 -4.1 Business requirements for the RCAC banking scenario . . . . . . . . . . . . . . . . . . . . . . . .38 -4.2 Description of the users roles and responsibilities. . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 -4.3 Implementation of RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .42 -4.3.1 Reviewing the tables that are used in this example. . . . . . . . . . . . . . . . . . . . . . . 42 -4.3.2 Assigning function ID QIBM_DB_SECADM to the Database Engineers group. . 47 -4.3.3 Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .50 -4.3.4 Creating the CUSTOMER_LOGIN_ID global variable. . . . . . . . . . . . . . . . . . . . . 52 -4.3.5 Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .54 -4.3.6 Defining and creating column masks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 -4.3.7 Restricting the inserting and updating of masked data . . . . . . . . . . . . . . . . . . . . .60 -4.3.9 Reviewing row permissions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .64 -4.3.10 Demonstrating data access with RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .66 -4.3.11 Query implementation with RCAC activated . . . . . . . . . . . . . . . . . . . . . . . . . . . .75 -Chapter 5. RCAC and non-SQL interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .79 -Unsupported interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 -5.3 Accidental updates with masked values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .81 -5.4 System CL commands considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .82 -5.4.1 Create Duplicate Object (CRTDUPOBJ) command . . . . . . . . . . . . . . . . . . . . . . .82 -82 -5.4.2 Copy File (CPYF) command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4.3 Copy Library (CPYLIB) command. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .100 -83 -Chapter 6. Additional considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . 89 90 -6.2 RCAC effects on data movement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6.2 RCAC effects on data movement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . -6.2.1 Effects when RCAC is defined on the source table6.2.1 Effects when RCAC is defined on the source table -88 -6.2.3 Effects when RCAC is defined on both source and target tables . . . . . . . . . . . . . 6.3 RCAC effects on joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .91 -6.3.1 Inner joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 926.3.1 Inner joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 -6.3.2 Outer joins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 946.3.2 Outer joins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 -6.3.3 Exception joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .96 -6.4 Monitoring, analyzing, and debugging with RCAC97 -. . . . . . . . . . . . . . . . . . . . . . . . . . . .Query monitoring and analysis tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 -6.4.2 Index advisor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .99 -6.4.3 Metadata using catalogs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6.4.3 Metadata using catalogs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . -6.5 Views, materialized query tables, and query rewrite with RCAC . . . . . . . . . . . . . . . .102 -6.5.2 Materialized query tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .103 -105 -6.5.3 Query rewrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . RCAC effects on performance and scalability. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6.5.3 Query rewrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . RCAC effects on performance and scalability. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . -6.6105 -107 -6.7 Exclusive lock to implement RCAC (availability issues) . . . . . . . . . . . . . . . . . . . . . . . 6.8 Avoiding propagation of masked data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .108 -108 -109 -109 -113 -111 -Chapter 7. Row and Column Access Control management . . . . . . . . . . . . . . . . . . . .Chapter 7. Row and Column Access Control management . . . . . . . . . . . . . . . . . . . . -
- - -7.1 Managing row permissions and column masks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .114 -7.1.1 Source management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .114 -7.1.2 Modifying definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .114 -7.1.3 Turning on and off . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .114 -7.1.4 Regenerating. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 -7.2 Managing tables with row permissions and column masks. . . . . . . . . . . . . . . . . . . . .115 -7.2.1 Save and restore. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .115 -7.2.2 Table migration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .116 -7.3 Monitoring and auditing function usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .117 -Chapter 8. Designing and planning for success. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 -8.1 Implementing RCAC with good design and proper planning. . . . . . . . . . . . . . . . . . . 120 -8.2 DB2 for i Center of Excellence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .120 -Appendix A. Database definitions for the RCAC banking example. . . . . . . . . . . . . . 121 -Related publications. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 -Other publications. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 -Online resources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 -Help from IBM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 -
-Notices -This information was developed for products and services offered in the U.S.A. -IBM may not offer the products, services, or features discussed in this document in other countries. Consult your local IBM representative for information on the products and services currently available in your area. Any reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, program, or service may be used. Any functionally equivalent product, program, or service that does not infringe any IBM intellectual property right may be used instead. However, it is the user's responsibility to evaluate and verify the operation of any non-IBM product, program, or service. -IBM may have patents or pending patent applications covering subject matter described in this document. The furnishing of this document does not grant you any license to these patents. You can send license inquiries, in writing, to: -IBM Director of Licensing, IBM Corporation, North Castle Drive, Armonk, NY 10504-1785 U.S.A. -The following paragraph does not apply to the United Kingdom or any other country where such provisions are inconsistent with local law: INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states do not allow disclaimer of express or implied warranties in certain transactions, therefore, this statement may not apply to you. -This information could include technical inaccuracies or typographical errors. Changes are periodically made to the information herein; these changes will be incorporated in new editions of the publication. IBM may make improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time without notice. -Any references in this information to non-IBM websites are provided for convenience only and do not in any manner serve as an endorsement of those websites. The materials at those websites are not part of the materials for this IBM product and use of those websites is at your own risk. -IBM may use or distribute any of the information you supply in any way it believes appropriate without incurring any obligation to you. -Any performance data contained herein was determined in a controlled environment. Therefore, the results obtained in other operating environments may vary significantly. Some measurements may have been made on development-level systems and there is no guarantee that these measurements will be the same on generally available systems. Furthermore, some measurements may have been estimated through extrapolation. Actual results may vary. Users of this document should verify the applicable data for their specific environment. -Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly available sources. IBM has not tested those products and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products. -This information contains examples of data and reports used in daily business operations. To illustrate them as completely as possible, the examples include the names of individuals, companies, brands, and products. All of these names are fictitious and any similarity to the names and addresses used by an actual business enterprise is entirely coincidental. -COPYRIGHT LICENSE: -This information contains sample application programs in source language, which illustrate programming techniques on various operating platforms. You may copy, modify, and distribute these sample programs in any form without payment to IBM, for the purposes of developing, using, marketing or distributing application programs conforming to the application programming interface for the operating platform for which the sample programs are written. These examples have not been thoroughly tested under all conditions. IBM, therefore, cannot guarantee or imply reliability, serviceability, or function of these programs. -Trademarks -IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines Corporation in the United States, other countries, or both. These and other IBM trademarked terms are marked on their first occurrence in this information with the appropriate symbol (fi or ™), indicating US registered or common law trademarks owned by IBM at the time this information was published. Such trademarks may also be registered or common law trademarks in other countries. A current list of IBM trademarks is available on the Web at http://www.ibm.com/legal/copytrade.shtml -The following terms are trademarks of the International Business Machines Corporation in the United States, other countries, or both: -AS/400fi -DB2fi -DRDAfi -IBMfi -Power Systems™ -Redbooksfi -Redpaper™ -Redbooks (log o) fi System -ifi -The following terms are trademarks of other companies: -Windows, and the Windows logo are trademarks of Microsoft Corporation in the United States, other countries, or both. -Other company, product, or service names may be trademarks or service marks of others. -
- -
-DB2 for i Center of Excellence -Solution Brief IBM Systems Lab Services and Training -
- -
-Highlights -GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH -GLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH -GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH -GLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH -
- -
-Power Services -DB2 for i Center of Excellence -Expert help to achieve your business requirements -We build confident, satisfied clients -No one else has the vast consulting experiences, skills sharing and renown service offerings to do what we can do for you. -Because no one else is IBM. -With combined experiences and direct access to development groups, we're the experts in IBM DB2® for i. The DB2 for i Center of Excellence (CoE) can help you achieve-perhaps reexamine and exceed-your business requirements and gain more confidence and satisfaction in IBM product data management products and solutions. -Who we are, some of what we do -Global CoE engagements cover topics including: -r Database performance and scalability -r Advanced SQL knowledge and skills transfer -r Business intelligence and analytics -r DB2 Web Query -r Query/400 modernization for better reporting and analysis capabilities -r Database modernization and re-engineering -r Data-centric architecture and design -r Extremely large database and overcoming limits to growth -r ISV education and enablement -What you can expect -Depending on the engagement, our team of consultants offer: -r Briefings, consulting and guidance on demand -r Illumination of the DB2 for i capabilities and leadership to exploit them -r Analysis and remediation of performance and scalability issues caused by inefficient database design and implementation -r Configuration of systems, operating system and products to fully leverage database capabilities -Key client benefits -T Gain greater database and application performance within your current environment. Achieve greater productivity in the development and maintenance of database and applications using modern techniques. Architect and design data structures to accommodate and benefit from business analytics (BA) tools and processes. -For more information -Pricing depends on the scope of work. Learn more about the DB2 for i Center of Excellence and other related products and services. Contact stgls@us.ibm.com or visit: -ibm.com GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH -
- -
-© Copyright IBM Corporation 2013 -IBM Corporation Route 100 Somers, NY 10589 -Produced in the United States of America March 2013 -IBM, the IBM logo, ibm.com, DB2 and Power Systems are trademarks of International Business Machines Corp., registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the web at "Copyright and trademark information" at www.ibm.com/legal/ copytrade.shtml . -This document is current as of the initial date of publication and may be changed by IBM at any time. -Not all offerings are available in every country in which IBM operates. -
- -
-Please Recycle -QLS12392-USEN-00 -Preface -This IBMfi Redpaper™ publication provides information about the IBM i 7.2 feature of IBM DB2fi for i Row and Column Access Control (RCAC). It offers a broad description of the function and advantages of controlling access to data in a comprehensive and transparent way. This publication helps you understand the capabilities of RCAC and provides examples of defining, creating, and implementing the row permissions and column masks in a relational database environment. -This paper is intended for database engineers, data-centric application developers, and security officers who want to design and implement RCAC as a part of their data control and governance policy. A solid background in IBM i object level security, DB2 for i relational database concepts, and SQL is assumed. -This paper was produced by the IBM DB2 for i Center of Excellence team in partnership with the International Technical Support Organization (ITSO), Rochester, Minnesota US. -
- -
-
- -
-Jim Bainbridge is a senior DB2 consultant on the DB2 for i Center of Excellence team in the IBM Lab Services and Training organization. His primary role is training and implementation services for IBM DB2 Web Query for i and business analytics. Jim began his career with IBM 30 years ago in the IBM Rochester Development Lab, where he developed cooperative processing products that paired IBM PCs with IBM S/36 and AS/.400 systems. In the years since, Jim has held numerous technical roles, including independent software vendors technical support on a broad range of IBM technologies and products, and supporting customers in the IBM Executive Briefing Center and IBM Project Office. -Hernando Bedoya is a Senior IT Specialist at STG Lab Services and Training in Rochester, Minnesota. He writes extensively and teaches IBM classes worldwide in all areas of DB2 for i. Before joining STG Lab Services, he worked in the ITSO for nine years writing multiple IBM Redbooksfi publications. He also worked for IBM Colombia as an IBM AS/400fi IT Specialist doing presales support for the Andean countries. He has 28 years of experience in the computing field and has taught database classes in Colombian universities. He holds a Master's degree in Computer Science from EAFIT, Colombia. His areas of expertise are database technology, performance, and data warehousing. Hernando can be contacted at hbedoya@us.ibm.com . -Authors -
- -
-
- -
-
- -
-
- -
-
- -
-Rob Bestgen is a member of the DB2 for i Center of Excellence team helping customers use the capabilities of DB2 for i. In addition, Rob is the chief architect of the DB2 SQL Query Engine (SQE) for DB2 for i and is the product development manager for DB2 Web Query for i. -Mike Cain is a Senior Technical Staff Member within the IBM Systems and Technology Group. He is also the founder and team leader of the DB2 for i Center of Excellence in Rochester, Minnesota US. Before his current position, he worked as an IBM AS/400 Systems Engineer and technical consultant. Before joining IBM in 1988, Mike worked as a System/38 programmer and data processing manager for a property and casualty insurance company. Mike has 26 years of experience with IBM, engaging clients and Business Partners around the world. In addition to assisting clients, he uses his knowledge and experience to influence the IBM solution, development, and support processes. -Dan Cruikshank has been an IT Professional since 1972. He has consulted on a number of different project areas since joining IBM Rochester in 1988. Since 1993, Dan was focused primarily on resolving IBM System ifi application and database performance issues at several IBM customer accounts. Since 1998, Dan has been one of the primary instructors for the Database Optimization Workshop. Most recently, Dan is a member of the DB2 for i Center of Excellence team with IBM Rochester Lab Services. -Jim Denton is a senior consultant at the IBM DB2 for i Center of Excellence, where his responsibilities include both teaching courses and hands on consulting. Jim specializes in SQL performance, data-centric programming, and database modernization. Jim started his IBM career in 1981 as an S/38 operating system programmer. Before joining the consulting team, his key assignments included 10 years as a systems performance specialist, five years as the lead "JDE on i" analyst, three years as a consultant at the IBM Benchmark and Briefing Center in Montpellier France, and a total of 11 years as an operating system developer, including five years designing and implementing enhancements to DB2 for i. -Doug Mack is a DB2 for i and Business Intelligence Consultant in the IBM Power Systems™ Lab Services organization. Doug's 30+ year career with IBM spans many roles, including product development, technical sales support, Business Intelligence Sales Specialist, and DB2 for i Product Marketing Manager. Doug is a featured speaker at User Group conferences and meetings, IBM Technical Conferences, and Executive Briefings. -
- -
-
- -
-Tom McKinley is an IBM Lab Services Consultant working on DB2 for IBM i in Rochester MN. His main focus is complex query performance that is associated with Business Intelligence running on Very Large Databases. He worked as a developer or performance analyst in the DB area from 1986 until 2006. Some of his major pieces of work include the Symmetric Multiple processing capabilities of DB2 for IBM i and Large Object Data types. In addition, he was on the original team that designed and built the SQL Query Engine. Before his database work, he worked on Licensed Internal Code for System 34 and System 36. -Kent Milligan is a senior DB2 consultant on the DB2 for i Center of Excellence team within the IBM Lab Services and Training organization. His primary responsibility is helping software developers use the latest DB2 technologies and port applications from other databases to DB2 for i. After graduating from the University of Iowa, Kent spent the first eight years of his IBM career as a member of the DB2 development team in Rochester. -Thanks to the following people for their contributions to this project: -Debra Landon -International Technical Support Organization, Rochester Center -Craig Aldrich, Mark Anderson, Theresa Euler, Scott Forstie, Chad Olstad IBM Rochester Development -Now you can become a published author, too! -Here's an opportunity to spotlight your skills, grow your career, and become a published author-all at the same time! Join an ITSO residency project and help write a book in your area of expertise, while honing your experience using leading-edge technologies. Your efforts will help to increase product acceptance and customer satisfaction, as you expand your network of technical contacts and relationships. Residencies run from two to six weeks in length, and you can participate either in person or as a remote resident working from your home base. -Find out more about the residency program, browse the residency index, and apply online at: -ibm.com /redbooks/residencies.html -Comments welcome -Your comments are important to us! -We want our papers to be as helpful as possible. Send us your comments about this paper or other IBM Redbooks publications in one of the following ways: -GLYPH Use the online Contact us review Redbooks form found at: -ibm.com /redbooks -GLYPH Send your comments in an email to: -redbooks@us.ibm.com -GLYPH Mail your comments to: -IBM Corporation, International Technical Support Organization Dept. HYTD Mail Station P099 2455 South Road Poughkeepsie, NY 12601-5400 -Stay connected to IBM Redbooks -GLYPH Find us on Facebook: -http://www.facebook.com/IBMRedbooks -GLYPH Follow us on Twitter: -http://twitter.com/ibmredbooks -GLYPH Look for us on LinkedIn: -http://www.linkedin.com/groups?home=&gid=2130806 -GLYPH Explore new Redbooks publications, residencies, and workshops with the IBM Redbooks weekly newsletter: -https://www.redbooks.ibm.com/Redbooks.nsf/subscribe?OpenForm -GLYPH Stay current on recent Redbooks publications with RSS Feeds: -http://www.redbooks.ibm.com/rss.html -
- -
-Chapter 1. -1 -Securing and protecting IBM DB2 data -Recent news headlines are filled with reports of data breaches and cyber-attacks impacting global businesses of all sizes. The Identity Theft Resource Center$^{1}$ reports that almost 5000 data breaches have occurred since 2005, exposing over 600 million records of data. The financial cost of these data breaches is skyrocketing. Studies from the Ponemon Institute$^{2}$ revealed that the average cost of a data breach increased in 2013 by 15% globally and resulted in a brand equity loss of $9.4 million per attack. The average cost that is incurred for each lost record containing sensitive information increased more than 9% to $145 per record. -Businesses must make a serious effort to secure their data and recognize that securing information assets is a cost of doing business. In many parts of the world and in many industries, securing the data is required by law and subject to audits. Data security is no longer an option; it is a requirement. -This chapter describes how you can secure and protect data in DB2 for i. The following topics are covered in this chapter: -GLYPH Security fundamentals -GLYPH Current state of IBM i security -GLYPH DB2 for i security controls -1.1 Security fundamentals -Before reviewing database security techniques, there are two fundamental steps in securing information assets that must be described: -GLYPH First, and most important, is the definition of a company's security policy . Without a security policy, there is no definition of what are acceptable practices for using, accessing, and storing information by who, what, when, where, and how. A security policy should minimally address three things: confidentiality, integrity, and availability. -The monitoring and assessment of adherence to the security policy determines whether your security strategy is working. Often, IBM security consultants are asked to perform security assessments for companies without regard to the security policy. Although these assessments can be useful for observing how the system is defined and how data is being accessed, they cannot determine the level of security without a security policy. Without a security policy, it really is not an assessment as much as it is a baseline for monitoring the changes in the security settings that are captured. -A security policy is what defines whether the system and its settings are secure (or not). -GLYPH The second fundamental in securing data assets is the use of resource security . If implemented properly, resource security prevents data breaches from both internal and external intrusions. Resource security controls are closely tied to the part of the security policy that defines who should have access to what information resources. A hacker might be good enough to get through your company firewalls and sift his way through to your system, but if they do not have explicit access to your database, the hacker cannot compromise your information assets. -With your eyes now open to the importance of securing information assets, the rest of this chapter reviews the methods that are available for securing database resources on IBM i. -1.2 Current state of IBM i security -Because of the inherently secure nature of IBM i, many clients rely on the default system settings to protect their business data that is stored in DB2 for i. In most cases, this means no data protection because the default setting for the Create default public authority (QCRTAUT) system value is *CHANGE. -Even more disturbing is that many IBM i clients remain in this state, despite the news headlines and the significant costs that are involved with databases being compromised. This default security configuration makes it quite challenging to implement basic security policies. A tighter implementation is required if you really want to protect one of your company's most valuable assets, which is the data. -Traditionally, IBM i applications have employed menu-based security to counteract this default configuration that gives all users access to the data. The theory is that data is protected by the menu options controlling what database operations that the user can perform. This approach is ineffective, even if the user profile is restricted from running interactive commands. The reason is that in today's connected world there are a multitude of interfaces into the system, from web browsers to PC clients, that bypass application menus. If there are no object-level controls, users of these newer interfaces have an open door to your data. -Some clients using this default configuration have toughened their database security with exit-point solutions from third-party vendors. IBM i exit points allow a user-written program to be called every time that a particular interface (for example, FTP) is used or an event occurs (for example, a profile is created). Security tools that are based on these exit points increase the level of security on a system by locking down interfaces that are not under the control of menu-based or application authority. In addition, exit-point solutions allow clients to implement more granular security controls, such as allowing users access only to the database during certain hours of the day. -Although exit-point solutions can provide great benefits, they are not an alternative to object-level control of your databases. Exit-point solutions help secure interfaces, but they do not completely protect the data that is stored in your DB2 objects. Exit points do not exist for every data access interface on the system. Therefore, if an application starts using an unprotected interface, the only thing protecting your data is object-level access control. When your security implementation totally relies on exit points, then it is also important to track any new data interfaces that appear as IBM delivers new releases and products to ensure that your exit-point solution provides coverage for those new interfaces. -An exit-point solution is a good option for databases with security holes that are caused by a reliance on the default security setup or menu-based control. However, your security work should not stop there. Instead, you must continue to work on a complete database security solution by controlling data access at the object level. -1.3 DB2 for i security controls -As described in 1.2, "Current state of IBM i security" on page 2, object-level controls on your DB2 objects are a critical success factor in securing your business data. Although database object-level security is a strong security feature, some clients have found that object-level security does not have the granularity that is required to adhere to regulatory or compliance policies. A user that is granted object-level access to a DB2 table has the authority to view all of the rows and values in that table. -As shown in Figure 1-1, it is an all-or-nothing access to the rows of a table. -Figure 1-1 All-or-nothing access to the rows of a table -
- -Figure 1-1 All-or-nothing access to the rows of a table -
-Many businesses are trying to limit data access to a need-to-know basis. This security goal means that users should be given access only to the minimum set of data that is required to perform their job. Often, users with object-level access are given access to row and column values that are beyond what their business task requires because that object-level security provides an all-or-nothing solution. For example, object-level controls allow a manager to access data about all employees. Most security policies limit a manager to accessing data only for the employees that they manage. -1.3.1 Existing row and column control -Some IBM i clients have tried augmenting the all-or-nothing object-level security with SQL views (or logical files) and application logic, as shown in Figure 1-2. However, application-based logic is easy to bypass with all of the different data access interfaces that are provided by the IBM i operating system, such as Open Database Connectivity (ODBC) and System i Navigator. -Using SQL views to limit access to a subset of the data in a table also has its own set of challenges. First, there is the complexity of managing all of the SQL view objects that are used for securing data access. Second, scaling a view-based security solution can be difficult as the amount of data grows and the number of users increases. -Even if you are willing to live with these performance and management issues, a user with *ALLOBJ access still can directly access all of the data in the underlying DB2 table and easily bypass the security controls that are built into an SQL view. -Figure 1-2 Existing row and column controls -
- -Figure 1-2 Existing row and column controls -
-1.3.2 New controls: Row and Column Access Control -Based on the challenges that are associated with the existing technology available for controlling row and column access at a more granular level, IBM delivered new security support in the IBM i 7.2 release; this support is known as Row and Column Access Control (RCAC). -The new DB2 RCAC support provides a method for controlling data access across all interfaces and all types of users with a data-centric solution. Moving security processing to the database layer makes it easier to build controls that meet your compliance policies. The RCAC support provides an additional layer of security that complements object-level authorizations to limit data access to a need-to-know basis. Therefore, it is critical that you first have a sound object-level security implementation in place. -
- -
-Chapter 2. -2 -Roles and separation of duties -One of the primary objectives of row and column access control (RCAC) is to create data security policies that control and govern user access to data and limit the data access of DB2 designers and administrators to only the minimum that is required to do their jobs. -To accomplish these tasks, RCAC engineers devised a set of functional roles that, as a group, implement effectively data access requirements and also limit the span of control of each role so that each role is given only the authorities that are needed to perform its specific set of tasks. -This chapter describes the concepts of roles and separation of duties on DB2 for i and covers the following topics: -GLYPH Roles -GLYPH Separation of duties -2.1 Roles -Traditionally, data access roles are defined in a binary way, where access to the data is either not permitted or access to the data is permitted. A full access capability can also be instantiated by the *ALLOBJ special authority, either explicitly or implicitly, for the security officer. If you hold the role of security officer, or have all *ALLOBJ special authority, you have access to all the data, with no exceptions. Unfortunately, this might not meet the organization's requirements for limiting access to data or separation of duties. -To assist with defining roles and the separation of duties with appropriate authority, IBM i provides function usage IDs . A function usage ID implements granular security controls rather than granting users powerful special authorities, such as all object, job control, or service. -Roles are divided among the following DB2 functions and their corresponding function usage IDs: -GLYPH DDM and IBM DRDAfi application server access: QIBM_DB_DDMDRDA -GLYPH Toolbox application server access: QIBM_DB_ZDA -GLYPH Database Administrator function: QIBM_DB_SQLADM -GLYPH Database Information function: QIBM_DB_SYSMON -GLYPH Security Administrator function: QIBM_DB_SECADM -2.1.1 DDM and DRDA application server access: QIBM_DB_DDMDRDA -The QIBM_DB_DDMDRDA function usage ID restricts access to the DDM and DRDA application server (QRWTSRVR). This function usage ID provides an easy alternative (rather than writing an exit program) to control access to DDM and DRDA from the server side. The function usage IDs ship with the default authority of *ALLOWED. The security officer can easily deny access to specific users or groups. -This is an alternative to a User Exit Program approach. No coding is required, it is easy to change, and it is auditable. -2.1.2 Toolbox application server access: QIBM_DB_ZDA -The QIBM_DB_ZDA function usage ID restricts access to the optimized server that handles DB2 requests from clients (QZDASOINIT and QZDASSINIT). Server access is used by the ODBC, OLE DB, and .NET providers that ship with IBM i Access for Windows and JDBC Toolbox, Run SQL scripts, and other parts of System i Navigator and Navigator for i Web console. -This function usage ID provides an easy alternative (rather than writing an exit program) to control access to these functions from the server side. The function usage IDs ship with the default authority of *ALLOWED. The security officer can easily deny access to specific users or groups. -This is an alternative to a User Exit Program approach. No coding is required, it is easy to change, and it is auditable. -2.1.3 Database Administrator function: QIBM_DB_SQLADM -The Database Administrator function (QIBM_DB_SQLADM) is needed whenever a user is analyzing and viewing SQL performance data. Some of the more common database administrator functions include displaying statements from the SQL Plan Cache, analyzing SQL Performance Monitors and SQL Plan Cache Snapshots, and displaying the SQL details of a job other than your own. -The Database Administrator function provides an alternative to granting *JOBCTL, but simply having the Database Administrator authorization does not carry with it all the needed object authorities for every administration task. The default behavior is to deny authorization. -To perform database administrator tasks that are not related to performance analysis, you must refer to the details of the task to determine its specific authorization requirements. For example, to allow a database administrator to reorganize a table, the DBA must have additional object authorities to the table that are not covered by QIBM_DB_SQLADM. -Granting QIBM_DB_SQLADM function usage -Only the security administrator (*SECADM) is allowed to change the list of users that can perform Database Administration functions. -2.1.4 Database Information function: QIBM_DB_SYSMON -The Database Information function (QIBM_DB_SYSMON) provides much less authority than Database Administrator function. Its primary use allows a user to examine high-level database properties. -For example, a user that does not have *JOBCTL or QIBM_DB_SQLADM can still view the SQL Plan Cache properties if granted authority to QIBM_DB_SYSMON. Without granting this authority, the default behavior is to deny authorization. -Granting QIBM_DB_SYSMON function usage -Only the security administrator (*SECADM) is allowed to change the list of users that can perform Database Information functions. -2.1.5 Security Administrator function: QIBM_DB_SECADM -The Security Administrator function (QIBM_DB_SECADM) grants authorities, revokes authorities, changes ownership, or changes the primary group without giving access to the object or, in the case of a database table, to the data that is in the table or allowing other operations on the table. -Only those users with the QIBM_DB_SECADM function can administer and manage RCAC rules. RCAC can be used to prevent even users with *ALLOBJ authority from freely accessing all the data in a protected database. These users are excluded from data access unless they are specifically authorized by RCAC. Without granting this authority, the default behavior is to deny authorization. -Granting QIBM_DB_SECADM function usage -Only QSECOFR or a user with *SECADM special authority can grant the QIBM_DB_SECADM function usage to a user or group. -2.1.6 Change Function Usage CL command -The following CL commands can be used to work with, display, or change function usage IDs: -GLYPH Work Function Usage ( WRKFCNUSG ) -GLYPH Change Function Usage ( CHGFCNUSG ) -GLYPH Display Function Usage ( DSPFCNUSG ) -For example, the following CHGFCNUSG command shows granting authorization to user HBEDOYA to administer and manage RCAC rules: -CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED) -2.1.7 Verifying function usage IDs for RCAC with the FUNCTION_USAGE view -The FUNCTION_USAGE view contains function usage configuration details. Table 2-1 describes the columns in the FUNCTION_USAGE view. -Table 2-1 FUNCTION_USAGE view - - - -Column nameData typeDescription -FUNCTION_IDVARCHAR(30)ID of the function. -USER_NAMEVARCHAR(10)Name of the user profile that has a usage setting for this function. -USAGEVARCHAR(7)Usage setting: GLYPH ALLOWED: The user profile is allowed to use the function. GLYPH DENIED: The user profile is not allowed to use the function. -USER_TYPEVARCHAR(5)Type of user profile: GLYPH USER: The user profile is a user. GLYPH GROUP: The user profile is a group. -
Table 2-1 FUNCTION_USAGE view
-To discover who has authorization to define and manage RCAC, you can use the query that is shown in Example 2-1. -Example 2-1 Query to determine who has authority to define and manage RCAC -SELECT function_id, user_name, usage, user_type FROM function_usage WHERE function_id='QIBM_DB_SECADM' ORDER BY user_name; -2.2 Separation of duties -Separation of duties helps businesses comply with industry regulations or organizational requirements and simplifies the management of authorities. Separation of duties is commonly used to prevent fraudulent activities or errors by a single person. It provides the ability for administrative functions to be divided across individuals without overlapping responsibilities, so that one user does not possess unlimited authority, such as with the *ALLOBJ authority. -For example, assume that a business has assigned the duty to manage security on IBM i to Theresa. Before release IBM i 7.2, to grant privileges, Theresa had to have the same privileges Theresa was granting to others. Therefore, to grant *USE privileges to the PAYROLL table, Theresa had to have *OBJMGT and *USE authority (or a higher level of authority, such as *ALLOBJ). This requirement allowed Theresa to access the data in the PAYROLL table even though Theresa's job description was only to manage its security. -In IBM i 7.2, the QIBM_DB_SECADM function usage grants authorities, revokes authorities, changes ownership, or changes the primary group without giving access to the object or, in the case of a database table, to the data that is in the table or allowing other operations on the table. -QIBM_DB_SECADM function usage can be granted only by a user with *SECADM special authority and can be given to a user or a group. -QIBM_DB_SECADM also is responsible for administering RCAC, which restricts which rows a user is allowed to access in a table and whether a user is allowed to see information in certain columns of a table. -A preferred practice is that the RCAC administrator has the QIBM_DB_SECADM function usage ID, but absolutely no other data privileges. The result is that the RCAC administrator can deploy and maintain the RCAC constructs, but cannot grant themselves unauthorized access to data itself. -Table 2-2 shows a comparison of the different function usage IDs and *JOBCTL authority to the different CL commands and DB2 for i tools. -Table 2-2 Comparison of the different function usage IDs and *JOBCTL authority - - - -User action*JOBCTLQIBM_DB_SECADMQIBM_DB_SQLADMQIBM_DB_SYSMONNo Authority -SET CURRENT DEGREE (SQL statement)XX -CHGQRYA command targeting a different user's jobXX -STRDBMON or ENDDBMON commands targeting a different user's jobXX -STRDBMON or ENDDBMON commands targeting a job that matches the current userXXXX -QUSRJOBI() API format 900 or System i Navigator's SQL Details for JobXXX -Visual Explain within Run SQL scriptsXXXX -Visual Explain outside of Run SQL scriptsXX -ANALYZE PLAN CACHE procedureXX -DUMP PLAN CACHE procedureXX -MODIFY PLAN CACHE procedureXX -MODIFY PLAN CACHE PROPERTIES procedure (currently does not check authority)XX -CHANGE PLAN CACHE SIZE procedure (currently does not check authority)XX -
Table 2-2 Comparison of the different function usage IDs and *JOBCTL authority
- - -User action*JOBCTLQIBM_DB_SECADMQIBM_DB_SQLADMQIBM_DB_SYSMONNo Authority -START PLAN CACHE EVENT MONITOR procedureXX -END PLAN CACHE EVENT MONITOR procedureXX -END ALL PLAN CACHE EVENT MONITORS procedureXX -Work with RCAC row permissions (Create, modify, or delete)X -Work with RCAC column masks (Create, modify, or delete)X -Change Object Owner ( CHGOBJOWN ) CL commandX -Change Object Primary Group ( CHGOBJPGP ) CL commandX -Grant Object Authority ( GRTOBJAUT ) CL commandX -Revoke Object Authority ( RVKOBJAUT ) CL commandX -Edit Object Authority ( EDTOBJAUT ) CL commandX -Display Object Authority ( DSPOBJAUT ) CL commandX -Work with Objects ( WRKOBJ ) CL commandX -Work with Libraries ( WRKLIB ) CL commandX -Add Authorization List Entry ( ADDAUTLE ) CL commandX -Change Authorization List Entry ( CHGAUTLE ) CL commandX -Remove Authorization List Entry ( RMVAUTLE ) CL commandX -Retrieve Authorization List Entry ( RTVAUTLE ) CL commandX -Display Authorization List ( DSPAUTL ) CL commandX -Display Authorization List Objects ( DSPAUTLOBJ ) CL commandX -Edit Authorization List ( EDTAUTL ) CL commandX -Work with Authorization Lists ( WRKAUTL ) CL commandX -
-
- -
-Chapter 3. -3 -Row and Column Access Control -This chapter describes what Row and Column Access Control (RCAC) is, its components, and then illustrates RCAC with a simple example. -The following topics are covered in this chapter: -GLYPH Explanation of RCAC and the concept of access control -GLYPH Special registers and built-in global variables -GLYPH VERIFY_GROUP_FOR_USER function -GLYPH Establishing and controlling accessibility by using the RCAC rule text -GLYPH SELECT, INSERT, and UPDATE behavior with RCAC -GLYPH Human resources example -3.1 Explanation of RCAC and the concept of access control -RCAC limits data access to those users who have a business "need to know". RCAC makes it easy to set up a rich and robust security policy that is based on roles and responsibilities. RCAC functionality is made available through the optional, no charge feature called "IBM Advanced Data Security for i", also known as option 47 of IBM i 7.2. -In DB2 for i, RCAC is implemented using two different approaches that address the shortcomings of traditional control methods and mechanisms: -GLYPH Row permissions -GLYPH Column masks -Another benefit of RCAC is that no database user is automatically exempt from the control. Users with *ALLOBJ authority can no longer freely access all of the data in the database unless they have the appropriate permission to do so. The ability to manage row permissions and column masks rests with the database security administrator. The RCAC definitions, enablement, and activation are controlled by SQL statements. -Row permissions and column masks require virtually no application changes. RCAC is based on specific rules that are transparent to existing applications and SQL interfaces. Enforcement of your security policy does not depend on how applications or tools access the data. -RCAC also facilitates multi-tenancy, which means that several independent customers or business units can share a single database table without being aware of one another. The RCAC row permission ensures each user sees only the rows they are entitled to view because the enforcement is handled by DB2 and not the application logic. -Label-based access control (LBAC): RCAC and LBAC are not the same thing. LBAC is a security model that is primarily intended for government applications. LBAC requires that data and users be classified with a fixed set of rules that are implemented. RCAC is a general-purpose security model that is primarily intended for commercial customers. You can use RCAC to create your own security rules, which in turn allows for more flexibility. -3.1.1 Row permission and column mask definitions -The following sections define row permission and column masks. -Row permission -A row permission is a database object that manifests a row access control rule for a specific table. It is essentially a search condition that describes which rows you can access. For example, a manager can see only the rows that represent his or her employees. -The SQL CREATE PERMISSION statement that is shown in Figure 3-1 is used to define and initially enable or disable the row access rules. -Figure 3-1 CREATE PERMISSION SQL statement -
- -The SQL CREATE PERMISSION statement that is shown in Figure 3-1 is used to define and initially enable or disable the row access rules.Figure 3-1 CREATE PERMISSION SQL statement -
-Column mask -A column mask is a database object that manifests a column value access control rule for a specific column in a specific table. It uses a CASE expression that describes what you see when you access the column. For example, a teller can see only the last four digits of a tax identification number. -Column masks replace the need to create and use views to implement access control. The SQL CREATE MASK statement that is shown in Figure 3-2 is used to define and initially enable or disable the column value access rules. -Figure 3-2 CREATE MASK SQL statement -
- -Figure 3-2 CREATE MASK SQL statement -
-3.1.2 Enabling and activating RCAC -You can enable, disable, or regenerate row permissions and column masks by using the SQL ALTER PERMISSION statement and the SQL ALTER MASK statement, as shown in Figure 3-3 on page 17. -Enabling and disabling effectively turns on or off the logic that is contained in the row permission or column mask. Regenerating causes the row permission or column mask to be regenerated. The row permission definition in the catalog is used and existing dependencies and authorizations, if any, are retained. The row permission definition is reevaluated as though the row permission were being created. Any user-defined functions (UDFs) that are referenced in the row permission must be resolved to the same secure UDFs as were resolved during the original row permission or column mask creation. The regenerate option can be used to ensure that the RCAC logic is intact and still valid before any user attempts to access the table. -Note: An exclusive lock is required on the table object to perform the alter operation. All open cursors must be closed. -Figure 3-3 ALTER PERMISSION and ALTER MASK SQL statements -
- -Figure 3-3 ALTER PERMISSION and ALTER MASK SQL statements -
-You can activate and deactivate RCAC for new or existing tables by using the SQL ALTER TABLE statement (Figure 3-4). The ACTIVATE or DEACTIVATE clause must be the option that is specified in the statement. No other alterations are permitted at the same time. The activating and deactivating effectively turns on or off all RCAC processing for the table. Only enabled row permissions and column masks take effect when activating RCAC. -Note: An exclusive lock is required on the table object to perform the alter operation. All open cursors must be closed. -Figure 3-4 ALTER TABLE SQL statement -
- -Figure 3-4 ALTER TABLE SQL statement -
-When row access control is activated on a table, a default permission is established for that table. The name of this permission is QIBM_DEFAULT_ _. This default permission contains a simple piece of logic (0=1) which is never true. The default permission effectively denies access to every user unless there is a permission defined that allows access explicitly. If row access control is activated on a table, and there is no permission that is defined, no one has permission to any rows. All queries against the table produce an empty set. -It is possible to define, create, and enable multiple permissions on a table. Logically, all of the permissions are ORed together to form a comprehensive test of the user's ability to access the data. A column can have only one mask that is defined over it. From an implementation standpoint, it does not matter if you create the column masks first or the row permissions first. -Note: If a user does not have permission to access the row, the column mask logic is not invoked. -3.2 Special registers and built-in global variables -This section describes how you can use special registers and built-in global variables to implement RCAC. -3.2.1 Special registers -A special register is a storage area that is defined for an application process by DB2 and is used to store information that can be referenced in SQL statements. A reference to a special register is a reference to a value that is provided by the current server. -IBM DB2 for i supports four different special registers that can be used to identify what user profiles are relevant to determining object authorities in the current connection to the server. SQL uses the term runtime authorization ID , which corresponds to a user profile on DB2 for i. Here are the four special registers: -GLYPH USER is the runtime user profile that determines the object authorities for the current connection to the server. It has a data type of VARCHAR(18). This value can be changed by the SQL statement SET SESSION AUTHORIZATION . -GLYPH SESSION_USER is the same as the USER register, except that it has a data type of VARCHAR(128). -GLYPH CURRENT USER was added in IBM i 7.2 and is similar to the USER register, but it has one important difference in that it also reports adopted authority. High-level language programs and SQL routines such as functions, procedures, and triggers can optionally be created to run using either the caller's or the owner's user profile to determine data authorities. For example, an SQL procedure can be created to run under the owner's authority by specifying SET OPTION USRPRF=*OWNER . This special register can also be referenced as CURRENT_USER. It has a data type of VARCHAR(128). -GLYPH SYSTEM_USER is the user profile that initiates the connection to the server. It is not used by RCAC, but is included here for completeness. Many jobs, including the QZDASOINIT prestarted jobs, initially connect to the server with a default user profile and then change to use some other user profile. SYSTEM_USER reports this value, typically QUSER for a QZDASOINIT job. It has a data type of VARCHAR(128). -In addition to these four special registers, any of the DB2 special registers can be referenced as part of the rule text. -Table 3-1 summarizes these special registers and their values. -Table 3-1 Special registers and their corresponding values - - - -Special registerCorresponding value -USER or SESSION_USERThe effective user of the thread excluding adopted authority. -CURRENT_USERThe effective user of the thread including adopted authority. When no adopted authority is present, this has the same value as USER. -SYSTEM_USERThe authorization ID that initiated the connection. -
Table 3-1 Special registers and their corresponding values
-Figure 3-5 shows the difference in the special register values when an adopted authority is used: -GLYPH A user connects to the server using the user profile ALICE. -GLYPH USER and CURRENT USER initially have the same value of ALICE. -GLYPH ALICE calls an SQL procedure that is named proc1, which is owned by user profile JOE and was created to adopt JOE's authority when it is called. -GLYPH While the procedure is running, the special register USER still contains the value of ALICE because it excludes any adopted authority. The special register CURRENT USER contains the value of JOE because it includes any adopted authority. -GLYPH When proc1 ends, the session reverts to its original state with both USER and CURRENT USER having the value of ALICE. -Figure 3-5 Special registers and adopted authority -
- -Figure 3-5 Special registers and adopted authority -
-3.2.2 Built-in global variables -Built-in global variables are provided with the database manager and are used in SQL statements to retrieve scalar values that are associated with the variables. -IBM DB2 for i supports nine different built-in global variables that are read only and maintained by the system. These global variables can be used to identify attributes of the database connection and used as part of the RCAC logic. -Table 3-2 lists the nine built-in global variables. -Table 3-2 Built-in global variables - - - -Global variableTypeDescription -CLIENT_HOSTVARCHAR(255)Host name of the current client as returned by the system -CLIENT_IPADDRVARCHAR(128)IP address of the current client as returned by the system -CLIENT_PORTINTEGERPort used by the current client to communicate with the server -PACKAGE_NAMEVARCHAR(128)Name of the currently running package -PACKAGE_SCHEMAVARCHAR(128)Schema name of the currently running package -PACKAGE_VERSIONVARCHAR(64)Version identifier of the currently running package -ROUTINE_SCHEMAVARCHAR(128)Schema name of the currently running routine -ROUTINE_SPECIFIC_NAMEVARCHAR(128)Name of the currently running routine -ROUTINE_TYPECHAR(1)Type of the currently running routine -
Table 3-2 Built-in global variables
-3.3 VERIFY_GROUP_FOR_USER function -The VERIFY_GROUP_FOR_USER function was added in IBM i 7.2. Although it is primarily intended for use with RCAC permissions and masks, it can be used in other SQL statements. The first parameter must be one of these three special registers: SESSION_USER, USER, or CURRENT_USER. The second and subsequent parameters are a list of user or group profiles. Each of these values must be 1 - 10 characters in length. These values are not validated for their existence, which means that you can specify the names of user profiles that do not exist without receiving any kind of error. -If a special register value is in the list of user profiles or it is a member of a group profile included in the list, the function returns a long integer value of 1. Otherwise, it returns a value of 0. It never returns the null value. -Here is an example of using the VERIFY_GROUP_FOR_USER function: -1. There are user profiles for MGR, JANE, JUDY, and TONY. -2. The user profile JANE specifies a group profile of MGR. -3. If a user is connected to the server using user profile JANE, all of the following function invocations return a value of 1: -VERIFY_GROUP_FOR_USER (CURRENT_USER, 'MGR') VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR') VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR', 'STEVE') The following function invocation returns a value of 0: VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JUDY', 'TONY') -3.4 Establishing and controlling accessibility by using the RCAC rule text -When defining a row permission or column mask, the "magic" of establishing and controlling accessibility comes from the rule text . The rule text represents the search criteria and logic that is implemented by the database engine. -In the case of a row permission, the rule text is the "test" of whether the user can access the row. If the test result is true, the row can be accessed. If the test result is false, the row essentially does not exist for the user. From a set-at-a-time perspective, the permission defines which rows can be part of the query result set, and which rows cannot. -In the case of a column mask, the rule text is both the test of whether the user can see the actual column value, and it is the masking logic if the user cannot have access to actual column value. -For a simple example of implementing row permissions and column masks, see 3.6, "Human resources example" on page 22. -In general, almost any set-based, relational logic is valid. For the row permission, the search condition follows the same rules that are used by the search condition in a WHERE clause. -For the column mask, the logic follows the same rules as the CASE expression. The result data type, length, null attribute, and CCSID of the CASE expression must be compatible with the data type of the column. If the column does not allow the null value, the result of the CASE expression cannot be the NULL value. The application or interface making the data access request is expecting that all of the column attributes and values are consistent with the original definition, regardless of any masking. -For more information about what is permitted, see the "Database programming" topic of the IBM i 7.2 Knowledge Center, found at: -http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgdbp.htm?lang =en -One of the first tasks in either the row permission or the column mask logic is to determine who the user is, and whether they have access to the data. Elegant methods to establish the identity and attributes of the user can be employed by using the special registers, global variables, and the VERIFY function. After the user's identity is established, it is a simple matter of allowing or disallowing access by using true or false testing. The examples that are included in this paper demonstrate some of the more common and obvious techniques. -More sophisticated methods can employ existential, day of year / time of day, and relational comparisons with set operations. For example, you can use a date master or date dimension table to determine whether the current date is a normal business day. If the current date is a valid business day, then access is allowed. If the current date is not a business day (for example a weekend day or holiday), access is denied. This test can be accomplished by performing a lookup using a subquery, such as the one that is shown in Example 3-1. -Example 3-1 Subquery that is used as part of the rule -DATE_MASTER D -D.BUSINESS_DAY = 'Y') -CURRENT_DATE IN (SELECT D.DATE_KEY FROM WHERE -Given that joins and subqueries can be used to perform set-based operations against existing data that is housed in other objects, almost any relational test can be constructed. If the data in the objects is manipulated over time, the RCAC test logic (and user query results) can be changed without modifying the actual row permission or column mask. This includes moving a user from one group to another or changing a column value that is used to allow or disallow access. For example, if Saturday is now a valid business day, only the BUSINESS_DAY value in the DATE_MASTER must be updated, not the permission logic. This technique can potentially avoid downtime because of the exclusive lock that is needed on the table when adding or changing RCAC definitions. -3.5 SELECT, INSERT, and UPDATE behavior with RCAC -RCAC provides a database-centric approach to determining which rows can be accessed and what column values can be seen by a specific user. Given that the control is handled by DB2 internally, every data manipulation statement is under the influence of RCAC, with no exceptions. When accessing the table, the SELECT statements, searched UPDATE statements, and searched DELETE statements implicitly and transparently contain the row permission and the column mask rule text. This means that the data set can be logically restricted and reduced on a user by user basis. -Furthermore, DB2 prevents an INSERT statement from inserting a row or an UPDATE statement from modifying a row such that the current user cannot be permitted to access it. You cannot create a situation in which the data you inserted or changed is no longer accessible to you. -For more information and considerations about data movement in an RCAC environment, see Chapter 6, "Additional considerations" on page 85. -Note: DB2 does not provide any indication back to the user that the data set requested was restricted or reduced by RCAC. This is by design, as it helps minimize any changes to the applications accessing the data. -3.6 Human resources example -This section illustrates with a simple example the usage of RCAC on a typical Human Resources application (schema). In this sample Human Resources schema, there is an important table that is called EMPLOYEES that contains all the information that is related to the employees of the company. Among the information that normally is stored in the EMPLOYEES table, there is some sensitive information that must be hidden from certain users: -GLYPH Tax_Id information -GLYPH YEAR of the birth date of the employee (hiding the age of the employee) -In this example, there are four different types of users: -GLYPH Employees -GLYPH Managers -GLYPH Human Resources Manager -GLYPH Consultant/IT Database Engineer (In this example, this person is an external consultant that is not an employee of the company.) -The following sections describe step-by-step what is needed to be done to implement RCAC in this environment. -3.6.1 Assigning the QIBM_DB_SECADM function ID to the consultants -The consultant must have authority to implement RCAC, so you must use one of the function IDs that are provided in DB2 for i (see 2.1.5, "Security Administrator function: QIBM_DB_SECADM" on page 9). Complete the following steps: -1. Run the Change Functional Usage ( CHGFCNUSG ) CL commands that are shown in Example 3-2. These commands must be run by someone that has the *SECOFR authority. -Example 3-2 Function ID required to implement RCAC -CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED) CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(MCAIN) USAGE(*ALLOWED) -2. There is a way to discover which user profiles have authorization to implement RCAC. This can be done by running the SQL statement that is shown in Example 3-3. -Example 3-3 Verifying what user profiles have authorization to implement RCAC -SELECT function_id, user_name, usage, user_type FROM qsys2.function_usage WHERE function_id ='QIBM_DB_SECADM' ORDER BY user_name; -3. The result of the SQL statement is shown in Figure 3-6. In this example, either MCAIN or HBEDOYA can implement RCAC in the Human Resources database. -Figure 3-6 Result of the function ID query -3.6.2 Creating group profiles for the users and their roles -Assuming that all the employees have a valid user profile, the next step is to create group profiles to group the employees. Complete the following steps: -1. In this example, there are three group profiles: --HR (Human Resource personnel) --MGR (Managers) --EMP (Employees) -These are created by creating user profiles with no password. Example 3-4 shows the Create User Profile ( CRTUSRPRF ) CL commands that you use to create these group profiles. -Example 3-4 Creating group profiles -CRTUSRPRF USRPRF(EMP) PASSWORD() TEXT('Employees Group') CRTUSRPRF USRPRF(MGR) PASSWORD() TEXT('Managers Group') CRTUSRPRF USRPRF(HR) PASSWORD() TEXT('Human Resources Group') -2. You now must assign users to a group profile. Employees go in to the EMP group profile, Managers go into the MGR group profile, and Human Resource employees go into the HR group profile. For simplicity, this example selects one employee (DSSMITH), one manager (TQSPENSER), and one HR analyst (VGLUCCHESS). -Note: Neither of the consultants (MCAIN and HBEDOYA) belong to any group profile. -3.6.3 Demonstrating data access without RCAC -Before implementing RCAC, run some simple SQL statements to demonstrate data access without RCAC. Complete the following steps: -1. The first SQL statement, which is shown in Example 3-5, basically counts the total number of rows in the EMPLOYEES table. -Example 3-5 Counting the number of employees -SELECT COUNT(*) as ROW_COUNT FROM HR_SCHEMA.EMPLOYEES; -The result of this query is shown in Figure 3-7, which is the total number of employees of the company. -Figure 3-7 Number of employees -
- -Figure 3-7 Number of employees -
-2. Run a second SQL statement (shown in Example 3-6) that lists the employees. If you have read access to the table, you see all the rows no matter who you are. -Example 3-6 Displaying the information of the Employees -SELECT EMPLOYEE_ID, LAST_NAME, JOB_DESCRIPTION, DATE_OF_BIRTH, TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE FROM HR_SCHEMA.EMPLOYEES -The result of this query is shown in Figure 3-8. -Figure 3-8 List of employees without RCAC enabled -3.6.4 Defining and creating row permissions -Implement RCAC on the EMPLOYEES table by completing the following steps: -1. Start by defining a row permission. In this example, the rules to enforce include the following ones: --Human Resources employees can see all the rows. --Managers can see only information for the employees that they manage. --Employees can see only their own information. --Consultants are not allowed to see any rows in the table. -To implement this row permission, run the SQL statement that is shown in Example 3-7. -Example 3-7 Creating a permission for the EMPLOYEE table -CREATE PERMISSION HR_SCHEMA.PERMISSION1_ON_EMPLOYEES ON HR_SCHEMA.EMPLOYEES AS EMPLOYEES FOR ROWS WHERE ( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1 ) OR ( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND ( EMPLOYEES . MANAGER_OF_EMPLOYEE = SESSION_USER OR EMPLOYEES . USER_ID = SESSION_USER ) ) OR ( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1 AND EMPLOYEES . USER_ID = SESSION_USER ) ENFORCED FOR ALL ACCESS ENABLE ; -2. Look at the definition of the table and see the permissions, as shown in Figure 3-9. QIBM_DEFAULT_EMPLOYEE_HR_SCHEMA is the default permission, as described in 3.1.2, "Enabling and activating RCAC" on page 16. -Figure 3-9 Row permissions that are shown in System i Navigator -
- -Figure 3-9 Row permissions that are shown in System i Navigator -
-3.6.5 Defining and creating column masks -Define the different masks for the columns that are sensitive by completing the following steps: -1. Start with the DAY_OF_BIRTH column. In this example, the rules to enforce include the following ones: --Human Resources can see the entire date of birth of the employees. --Employees can see only their own date of birth. --Managers can see the date of birth of their employees masked with YEAR being 9999. -To implement this column mask, run the SQL statement that is shown in Example 3-8. -Example 3-8 Creation of a mask on the DATE_OF_BIRTH column -CREATE MASK HR_SCHEMA.MASK_DATE_OF_BIRTH_ON_EMPLOYEES ON HR_SCHEMA.EMPLOYEES AS EMPLOYEES FOR COLUMN DATE_OF_BIRTH -RETURN CASE -WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR', 'EMP' ) = 1 THEN EMPLOYEES . DATE_OF_BIRTH WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER = EMPLOYEES . USER_ID THEN EMPLOYEES . DATE_OF_BIRTH WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER <> EMPLOYEES . USER_ID THEN ( 9999 || '-' || MONTH ( EMPLOYEES . DATE_OF_BIRTH ) || '-' || DAY (EMPLOYEES.DATE_OF_BIRTH )) ELSE NULL END ENABLE ; -2. The other column to mask in this example is the TAX_ID information. In this example, the rules to enforce include the following ones: --Human Resources can see the unmasked TAX_ID of the employees. --Employees can see only their own unmasked TAX_ID. --Managers see a masked version of TAX_ID with the first five characters replaced with the X character (for example, XXX-XX-1234). --Any other person sees the entire TAX_ID as masked, for example, XXX-XX-XXXX. -To implement this column mask, run the SQL statement that is shown in Example 3-9. -Example 3-9 Creating a mask on the TAX_ID column -CREATE MASK HR_SCHEMA.MASK_TAX_ID_ON_EMPLOYEES ON HR_SCHEMA.EMPLOYEES AS EMPLOYEES FOR COLUMN TAX_ID RETURN CASE WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1 THEN EMPLOYEES . TAX_ID WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER = EMPLOYEES . USER_ID THEN EMPLOYEES . TAX_ID WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER <> EMPLOYEES . USER_ID THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( EMPLOYEES . TAX_ID , 8 , 4 ) ) WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1 THEN EMPLOYEES . TAX_ID ELSE 'XXX-XX-XXXX' END ENABLE ; -3. Figure 3-10 shows the masks that are created in the HR_SCHEMA. -Figure 3-10 Column masks shown in System i Navigator -
- -Figure 3-10 Column masks shown in System i Navigator -
-3.6.6 Activating RCAC -Now that you have created the row permission and the two column masks, RCAC must be activated. The row permission and the two column masks are enabled (last clause in the scripts), but now you must activate RCAC on the table. To do so, complete the following steps: -1. Run the SQL statements that are shown in Example 3-10. -Example 3-10 Activating RCAC on the EMPLOYEES table -/* Active Row Access Control (permissions) */ -/* Active Column Access Control (masks) ALTER TABLE HR_SCHEMA.EMPLOYEES ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL; -*/ -2. Look at the definition of the EMPLOYEE table, as shown in Figure 3-11. To do this, from the main navigation pane of System i Navigator, click Schemas  HR_SCHEMA  Tables , right-click the EMPLOYEES table, and click Definition . -Figure 3-11 Selecting the EMPLOYEES table from System i Navigator -
- -Figure 3-11 Selecting the EMPLOYEES table from System i Navigator -
-3. The EMPLOYEES table definition is displayed, as shown in Figure 3-12. Note that the Row access control and Column access control options are checked. -Figure 3-12 RCAC enabled on the EMPLOYEES table -
- -Figure 3-12 RCAC enabled on the EMPLOYEES table -
-3.6.7 Demonstrating data access with RCAC -You are now ready to start testing RCAC with the four different users. Complete the following steps: -1. The first SQL statement that is shown in Example 3-11 illustrates the EMPLOYEE count. You know that there are 42 rows from the query that was run before RCAC was put in place (see 3.6.3, "Demonstrating data access without RCAC" on page 24). -Example 3-11 EMPLOYEES count -SELECT COUNT(*) as ROW_COUNT FROM HR_SCHEMA.EMPLOYEES; -2. The result of the query for a user that belongs to the HR group profile is shown in Figure 3-13. This user can see all the 42 rows (employees). -Figure 3-13 Count of EMPLOYEES by HR -
- -Figure 3-13 Count of EMPLOYEES by HR -
-3. The result of the same query for a user who is logged on as TQSPENSER (Manager) is shown in Figure 3-14. TQSPENSER has five employees in his department and he can also see his own row, which is why the count is 6. -Figure 3-14 Count of EMPLOYEES by a manager -
- -Figure 3-14 Count of EMPLOYEES by a manager -
-4. The result of the same query that is run by an employee (DSSMITH) gives the result that is shown in Figure 3-15. Each employee can see only his or her own data (row). -Figure 3-15 Count of EMPLOYEES by an employee -
- -Figure 3-15 Count of EMPLOYEES by an employee -
-5. The result of the same query that is run by the Consultant/DBE gives the result that is shown in Figure 3-16. The consultants/DBE can manage and implement RCAC, but they do not see any rows at all. -Figure 3-16 Count of EMPLOYEES by a consultant -
- -Figure 3-16 Count of EMPLOYEES by a consultant -
-Does the result make sense? Yes, it does because RCAC is enabled. -6. Run queries against the EMPLOYEES table. The query that is used in this example runs and tests with the four different user profiles and is the same query that was run in 3.6.3, "Demonstrating data access without RCAC" on page 24. It is shown in Example 3-12. -Example 3-12 SELECT statement to test with the different users -SELECT EMPLOYEE_ID, LAST_NAME, JOB_DESCRIPTION, DATE_OF_BIRTH, TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE FROM HR_SCHEMA.EMPLOYEES -7. Figure 3-17 shows the results of the query for a Human Resources (VGLUCCHESS) user profile. The user can see all the rows and all the columns. -Figure 3-17 SQL statement result by Human Resources user profile -8. Figure 3-18 shows the results of the same query for the Manager (TQSPENSER). Notice the masking of the DATE_OF_BIRTH and TAX_ID columns. -Figure 3-18 SQL statement result by Manager profile -9. Figure 3-19 shows the results of the same query for an employee (DSSMITH). The employee can only see only his own data with no masking at all. -Figure 3-19 SQL statement result by an employee profile -10.Figure 3-20 shows the results of the same query for the Consultant/DBE, who is not one of the company's employees. -Figure 3-20 SQL statement result by Consultant/DBE profile -3.6.8 Demonstrating data access with a view and RCAC -This section covers data access with a view and RCAC. Complete the following steps: -1. The EMPLOYEES table has a column that is called On_Leave_Flag (Figure 3-21 on page 33) indicating that the employee is on Leave of Absence. For this purpose, a view is created that lists only the employees that are on leave. -Figure 3-21 Employees on leave -2. Example 3-13 shows the definition of the view. -Example 3-13 VIew of employees on leave -CREATE VIEW HR_SCHEMA.EMPLOYEES_ON_LEAVE (EMPLOYEE_ID, FIRST_NAME, MIDDLE_INITIAL, LAST_NAME, WORK_DEPARTMENT, PHONE_EXTENSION, JOB_DESCRIPTION, DATE_OF_BIRTH, -TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE, ON_LEAVE_FLAG ) -AS -SELECT EMPLOYEE_ID, FIRST_NAME , MIDDLE_INITIAL, LAST_NAME , WORK_DEPARTMENT, PHONE_EXTENSION, JOB_DESCRIPTION, DATE_OF_BIRTH, TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE, -ON_LEAVE_FLAG -FROM -HR_SCHEMA.EMPLOYEES -WHERE -ON_LEAVE_FLAG = 'Y'; -3. Use the view to query the data and see who is on leave. The SQL statement that is used is shown in Example 3-14: -Example 3-14 SQL statement for employees on leave -SELECT EMPLOYEE_ID, LAST_NAME, JOB_DESCRIPTION, DATE_OF_BIRTH, TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE FROM -HR_SCHEMA.EMPLOYEES_ON_LEAVE; -4. Start with the Human Resources person (VGLUCCHESS) and see what is the result of the previous query. He sees the two employees that are on leave and no masking is done over the DATE_OF_BIRTH and TAX_ID columns. The results of the query are shown in Figure 3-22. -Figure 3-22 Employees on leave - Human Resources user -5. Figure 3-23 shows what the Manager (TQSPENSER) gets when he runs the same query over the view. He sees only the employees that are on leave that are managed by him. In this example, it is one employee. The columns are masked, which confirms that RCAC is applied to the view as well. -Figure 3-23 Employee on leave - Manager of Field Reps user -6. Figure 3-24 shows what the employee (DSSMITH) gets when he runs the same query over the view. The employee gets an empty set or he gets only himself if he is on leave. -. -Figure 3-24 Employees on leave - employee user -
- -
-Chapter 4. -4 -Implementing Row and Column Access Control: Banking example -This chapter illustrates the Row and Column Access Control (RCAC) concepts using a banking example. Appendix A, "Database definitions for the RCAC banking example" on page 121 provides a script that you can use to create all the database definitions or DDLs to re-create this RCAC example. -The following topics are covered in this chapter: -GLYPH Business requirements for the RCAC banking scenario -GLYPH Description of the users roles and responsibilities -GLYPH Implementation of RCAC -4.1 Business requirements for the RCAC banking scenario -As part of a new internet banking project, the Bank decides to raise the level of data access control on the following three tables that are involved in the new customer-facing application: -GLYPH CUSTOMERS -GLYPH ACCOUNTS -GLYPH TRANSACTIONS -RCAC will be used to restrict access to the rows in these three tables by using permissions, and to restrict column values by using masks. The default position is that no user can access the rows in the tables. From there, specific bank employees are allowed access only to the rows for their job responsibilities. In addition, columns containing personal or sensitive data are masked appropriately. Bank customers are allowed access to only their rows and column values. -In this example, it is assumed that the Bank employees have access to the tables when working on the premises only. Employee access to data is provided by programs and tools using standard DB2 interfaces, such as embedded SQL, ODBC, JDBC, and CLI. The database connection authentication for these interfaces uses the employee's personal and unique IBM i user profile. Operating in their professional role, employees do not have access to bank data through the Internet. -Bank customers have access to their accounts and transactions by using a new web application. Each customer has unique credentials for logging in to the application. The authentication of the customer is handled by the web server. After the customer is authenticated, the web server establishes a connection to DB2 for data access. This connection uses a common IBM i user profile that is known as WEBUSER. This user profile is secured and is used only by the web application. No Bank employee has access to the WEBUSER profile, and no customer has an IBM i user profile. -The customer's identity is passed to DB2 by using a global variable. The global variable is secured and can be accessed only by the WEBUSER. The web application sets the CUSTOMER_LOGIN_ID variable to the customer's login value. This value is compared to the customer's login value that is found in the CUSTOMER_LOGIN_ID column of the CUSTOMERS table. -Applications that do not use the web interface do not have to be changed because the global variable is NULL by default. -A diagram of the internet banking architecture is shown in Figure 4-1: -GLYPH The row permission and column masks for the CUSTOMERS table are based on the group of which the user profile is part. If the user is a customer, their specific login ID also is tested. -GLYPH The row permission and column mask for the ACCOUNTS table are based on the CUSTOMERS table permission rules. A subquery is used to connect the accounts (child) with the customer (parent). -GLYPH The row permission for the TRANSACTIONS table is based on the ACCOUNTS table permission rules and the CUSTOMERS table permission rules. A subquery is used to connect the transactions (child) with the account (parent) and the account (child) with the customer (parent). -Figure 4-1 Internet banking example -
- -Figure 4-1 Internet banking example -
-4.2 Description of the users roles and responsibilities -During the requirements gathering phase, the following groups of users are identified and codified: -GLYPH SECURITY: Security officer and security administrators -GLYPH DBE: Database engineers -GLYPH ADMIN: Bank business administrators -GLYPH TELLER: Bank tellers -GLYPH CUSTOMER: Bank customers using the internet -GLYPH PUBLIC: Anyone not already in a group -Based on their respective roles and responsibilities, the users (that is, a group) are controlled by row permissions and column masks. The chart that is shown in Figure 4-2 shows the rules for row and column access in this example. -Figure 4-2 Rules for row and column access -
- -Figure 4-2 Rules for row and column access -
-The chart that is shown in Figure 4-3 shows the column access that is allowed by group and lists the column masks by table. -Figure 4-3 Column masks - - - -CUSTOMERSACCOUNTS -SECURITYNo RowsCUSTOMER_DRIVERS_LICENSE_NUMBER CUSTOMER_EMAIL CUSTOMER_LOGIN_ID CUSTOMER_SECURITY_QUESTION CUSTOMER_SECURITY_QUESTION_ANSWER CUSTOMER_TAX_IDACCOUNT_NUMBER -DBEAll RowsCUSTOMER_DRIVERS_LICENSE_NUMBER CUSTOMER_EMAIL CUSTOMER_LOGIN_ID CUSTOMER_SECURITY_QUESTION CUSTOMER_SECURITY_QUESTION_ANSWER CUSTOMER_TAX_IDACCOUNT NUMBER ACCOUNT_NUMBER -ADMINAll RowsNoneNone -TELLERAll RowsCUSTOMER_EMAIL CUSTOMER_LOGIN_ID CUSTOMER_SECURITY_QUESTION CUSTOMER_SECURITY_QUESTION_ANSWER CUSTOMER TAX ID _ _None -CUSTOMEROwn RowsNoneNone -PUBLICNo RowsCUSTOMER_DRIVERS_LICENSE_NUMBER CUSTOMER_EMAIL CUSTOMER LOGIN ID CUSTOMER_LOGIN_ID CUSTOMER_SECURITY_QUESTION CUSTOMER_SECURITY_QUESTION_ANSWER CUSTOMER_TAX_IDACCOUNT_NUMBER -
Figure 4-3 Column masks
-For the demonstration and testing of RCAC in this example, the following users interact with the database. Furthermore, the column masking rules are developed independently of the row permissions. If a person does not have permission to access the row, the column mask processing does not occur. -GLYPH Hernando Bedoya is a DB2 for i database engineer with the user profile of HBEDOYA. He is part of the DBE group. -GLYPH Mike Cain is a DB2 for i database engineer with the user profile of MCAIN. He is part of the DBE group. -GLYPH Veronica G. Lucchess is a bank account administrator with the user profile of VGLUCCHESS. She is part of the ADMIN group. -GLYPH Tom Q. Spenser is a bank teller with the user profile of TQSPENSER. He is part of the TELLER group. -GLYPH The IT security officer has the user profile of SECURITY. She is not part of any group. -GLYPH The online banking web application uses the user profile WEBUSER. This profile is part of the CUSTOMER group. Any future customer-facing applications can also use this group if needed. -GLYPH Adam O. Olsen is a bank customer with a web application login ID of KLD72CQR8JG. -4.3 Implementation of RCAC -Figure 4-4 shows the data model of the banking scenario that is used in this example. -Figure 4-4 Data model of the banking scenario -
- -Figure 4-4 Data model of the banking scenario -
-This section covers the following steps: -GLYPH Reviewing the tables that are used in this example -GLYPH Assigning function ID QIBM_DB_SECADM to the Database Engineers group -GLYPH Creating group profiles for the users and their roles -GLYPH Creating the CUSTOMER_LOGIN_ID global variable -GLYPH Defining and creating row permissions -GLYPH Defining and creating column masks -GLYPH Restricting the inserting and updating of masked data -GLYPH Activating row and column access control -GLYPH Reviewing row permissions -GLYPH Demonstrating data access with RCAC -GLYPH Query implementation with RCAC activated -4.3.1 Reviewing the tables that are used in this example -This section reviews the tables that are used in this example. As shown in Figure 4-5, there are three main tables that are involved in the data model: CUSTOMERS, ACCOUNTS, and TRANSACTIONS. There are 90 customers. -Figure 4-5 Tables that are used in the banking example -
- -Figure 4-5 Tables that are used in the banking example -
-Note: Appendix A, "Database definitions for the RCAC banking example" on page 121 provides a script that you can use to create all the database definitions or DDLs to re-create this RCAC example. -To review the attributes of each table that is used in this banking example, complete the following steps: -1. Review the columns of each the tables through System i Navigator. Expand Database  named Database  Schemas  BANK_SCHEMA  Tables . -2. Right-click the CUSTOMERS table and select Definition . Figure 4-6 shows the attributes for the CUSTOMERS table. The Row access control and Column access control options are not selected, which indicates that the table does not have RCAC implemented. -Figure 4-6 CUSTOMERS table attributes -
- -Figure 4-6 CUSTOMERS table attributes -
-3. Click the Columns tab to see the columns of the CUSTOMERS table, as shown in Figure 4-7. -Figure 4-7 Column definitions of the CUSTOMERS table -4. Click the Key Constraints , Foreign Key Constraints , and Check Constraints tabs to review the key, foreign, and check constraints on the CUSTOMERS table, as shown in Figure 4-8. There are no Foreign Key Constraints or Check Constraints on the CUSTOMERS table. -Figure 4-8 Reviewing the constraints on the CUSTOMERS table -
- -Figure 4-8 Reviewing the constraints on the CUSTOMERS table -
-5. Review the definition of the ACCOUNTS table. The definition of the ACCOUNTS table is shown in Figure 4-9. RCAC has not been defined for this table yet. -Figure 4-9 ACCOUNTS table attributes -
- -Figure 4-9 ACCOUNTS table attributes -
-6. Click the Columns tab to see the columns of the ACCOUNTS table, as shown in Figure 4-10. -Figure 4-10 Column definitions of the ACCOUNTS table -7. Click the Key Constraints , Foreign Key Constraints , and Check Constraints tabs to review the key, foreign, and check constraints on the ACCOUNTS table, as shown in Figure 4-11. There is one Foreign Key Constraint and no Check Constraints on the ACCOUNTS table. -Figure 4-11 Reviewing the constraints on the ACCOUNTS table -
- -Figure 4-11 Reviewing the constraints on the ACCOUNTS table -
-8. Review the definition of the TRANSACTIONS table. The definition of the TRANSACTIONS table is shown in Figure 4-12. RCAC is not defined for this table yet. -Figure 4-12 TRANSACTIONS table attributes -
- -Figure 4-12 TRANSACTIONS table attributes -
-9. Click the Columns tab to see the columns of the TRANSACTIONS table, as shown in Figure 4-13. -Figure 4-13 Column definitions of the TRANSACTIONS table -10.Click the Key Constraints , Foreign Key Constraints , and Check Constraints tabs to review the key, foreign, and check constraints on the TRANSACTIONS table, as shown in Figure 4-14. There is one Foreign Key Constraint and one Check Constraint on the TRANSACTIONS table. -Figure 4-14 Reviewing the constraints on the TRANSACTIONS table -
- -Figure 4-14 Reviewing the constraints on the TRANSACTIONS table -
-Now that you have reviewed the database model for this example, the following sections describe the steps that are required to implement RCAC in this banking scenario. -4.3.2 Assigning function ID QIBM_DB_SECADM to the Database Engineers group -The first step is to assign the appropriate function usage ID to the Database Engineers (DBEs) that will be implementing RCAC. For a description of function usage IDs, see 2.1, "Roles" on page 8. In this example, the DBEs are users MCAIN and HBEDOYA. -Complete the following steps: -1. Right-click the database connection and select Application Administration , as shown in Figure 4-15. -Figure 4-15 Application administration -
- -Figure 4-15 Application administration -
-2. The Application Administration window opens, as shown in Figure 4-16. Click IBM i  Database and select the function usage ID of Database Security Administrator . -Figure 4-16 Application administration for IBM i -
- -Figure 4-16 Application administration for IBM i -
-3. Click Customize for the function usage ID of Database Security Administrator, as shown in Figure 4-17. -Figure 4-17 Customizing the Database Security Administrator function usage ID -
- -Figure 4-17 Customizing the Database Security Administrator function usage ID -
-4. The Customize Access window opens, as shown in Figure 4-18. Click the users that need to implement RCAC. For this example, HBEDOYA and MCAIN are selected. Click Add and then click OK . -Figure 4-18 Customize Access window -
- -Figure 4-18 Customize Access window -
-5. The Application Administrator window opens again. The function usage ID of Database Security Administrator now has an X in the Customized Access column, as shown in Figure 4-19. -Figure 4-19 Function usage ID Database Security Administrator customized -
- -Figure 4-19 Function usage ID Database Security Administrator customized -
-6. Run an SQL query that shows which user profiles are enabled to define RCAC. The SQL query is shown in Figure 4-20. -Figure 4-20 Query to display user profiles with function usage ID for RCAC -
- -Figure 4-20 Query to display user profiles with function usage ID for RCAC -
-4.3.3 Creating group profiles for the users and their roles -The next step is to create the different group profiles (ADMIN, CUSTOMER, TELLER, and DBE) and assign the different user profiles to the different group profiles. For a description of the different groups and users for this example, see 4.2, "Description of the users roles and responsibilities" on page 39. -Complete the following steps: -1. On the main navigation pane of System i Navigator, right-click Groups and select New Group , as shown in Figure 4-21. -Figure 4-21 Creating group profiles -
- -Figure 4-21 Creating group profiles -
-2. The New Group window opens, as shown in Figure 4-22. For each new group, enter the Group name (ADMIN, CUSTOMER, TELLER, and DBE) and add the user profiles that are associated to this group by selecting the user profile and clicking Add . -Figure 4-22 shows adding user TQSPENCER to the TELLER group profile. -Figure 4-22 Creating group profiles and adding users -
- -Figure 4-22 Creating group profiles and adding users -
-3. After you create all the group profiles, you should see them listed in System i Navigator under Users and Groups  Groups , as shown in Figure 4-23. -Figure 4-23 Newly created group profiles -
- -Figure 4-23 Newly created group profiles -
-4.3.4 Creating the CUSTOMER_LOGIN_ID global variable -In this step, you create a global variable that is used to capture the Customer_Login_ID information, which is required to validate the permissions. For more information about global variables, see 3.2.2, "Built-in global variables" on page 19. -Complete the following steps: -1. From System i Navigator, under the schema Bank_Schema, right-click Global Variable and select New  Global Variable , as shown in Figure 4-24. -Figure 4-24 Creating a global variable -
- -Figure 4-24 Creating a global variable -
-2. The New Global Variable window opens, as shown in Figure 4-25. Enter the global variable name of CUSTOMER_LOGIN_ID, select the data type of VARCHAR, and leave the default value of NULL. This default value ensures that users that do not use the web interface do not have permission to access the data. Click OK . -Figure 4-25 Creating a global variable called CUSTOMER_LOGIN_ID -
- -Figure 4-25 Creating a global variable called CUSTOMER_LOGIN_ID -
-3. Now that the global variable is created, assign permissions to the variable so that it can be set by the program. Right-click the CUSTOMER_LOGIN_ID global variable and select Permissions , as shown in Figure 4-26. -Figure 4-26 Setting permissions on the CUSTOMER_LOGIN_ID global variable -
- -Figure 4-26 Setting permissions on the CUSTOMER_LOGIN_ID global variable -
-4. The Permissions window opens, as shown in Figure 4-27. Select Change authority for Webuser so that the application can set this global variable. -Figure 4-27 Setting change permissions for Webuser on the CUSTOMER_LOGIN_ID global variable -
- -Figure 4-27 Setting change permissions for Webuser on the CUSTOMER_LOGIN_ID global variable -
-4.3.5 Defining and creating row permissions -You now ready to define the row permissions of the tables. Complete the following steps: -1. From the navigation pane of System i Navigator, click Schemas  BANK_SCHEMA , right-click Row Permissions , and select New  Row Permission , as shown in Figure 4-28. -Figure 4-28 Selecting new row permissions -
- -Figure 4-28 Selecting new row permissions -
-2. The New Row Permission window opens, as shown in Figure 4-29. Enter the information regarding the row permissions on the CUSTOMERS table. This row permission defines what is established in the following policy: --User profiles that belong to DBE, ADMIN, and TELLER group profiles can see all the rows. --User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER user) can see only the rows that match their customer login ID. The login ID value representing the online banking user is passed from the web application to the database by using the global variable CUSTOMER_LOGIN_ID. The permission rule uses a subquery to check whether the global variable matches the CUSTOMER_LOGIN_ID column value in the CUSTOMERS table. --Any other user profile cannot see any rows at all. -Select the Enabled option. Click OK . -Figure 4-29 New row permissions on the CUSTOMERS table -
- -Figure 4-29 New row permissions on the CUSTOMERS table -
-3. Define the row permissions for the ACCOUNTS table. The New Row Permission window opens, as shown in Figure 4-30. Enter the information regarding the row permissions on the ACCOUNTS table. This row permission defines what is established in the following policy: --User profiles that belong to DBE, ADMIN and TELLER group profiles can see all the rows. --User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER user) can see only the rows that match their customer login ID. The login ID value representing the online banking user is passed from the web application to the database by using the global variable CUSTOMER_LOGIN_ID. The permission rule uses a subquery to check whether the global variable matches the CUSTOMER_LOGIN_ID column value in the CUSTOMERS table. --Any other user profile cannot see any rows at all. -Select the Enabled option. Click OK . -Figure 4-30 New row permissions on the ACCOUNTS table -
- -Figure 4-30 New row permissions on the ACCOUNTS table -
-4. Define the row permissions on the TRANSACTIONS table. The New Row Permission window opens, as shown in Figure 4-31. Enter the information regarding the row permissions on the TRANSACTIONS table. This row permission defines what is established in the following policy: --User profiles that belong to DBE, ADMIN, and TELLER group profiles can see all of the rows. --User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER user) can see only the rows that match their customer login ID. The login ID value representing the online banking user is passed from the web application to the database by using the global variable CUSTOMER_LOGIN_ID. The permission rule uses a subquery to check whether the global variable matches the CUSTOMER_LOGIN_ID column value in the CUSTOMERS table. -Note: You must join back to ACCOUNTS and then to CUSTOMERS by using a subquery to check whether the global variable matches CUSTOMER_LOGIN_ID. Also, if the row permission or column mask rule text references another table with RCAC defined, the RCAC for the referenced table is ignored. --Any other user profile cannot see any rows at all. -Select the Enabled option. Click OK . -Figure 4-31 New row permissions on the TRANSACTIONS table -
- -Figure 4-31 New row permissions on the TRANSACTIONS table -
-5. To verify that the row permissions are enabled, from System i Navigator, click Row Permissions , as shown in Figure 4-32. The three row permissions are created and enabled. -Figure 4-32 List of row permissions on BANK_SCHEMA -
- -Figure 4-32 List of row permissions on BANK_SCHEMA -
-4.3.6 Defining and creating column masks -This section defines the masks on the columns. Complete the following steps: -1. From the main navigation pane of System i Navigator, click Schemas  BANK_SCHEMA , right-click Column Masks , and select New  Column Mask , as shown in Figure 4-33. -Figure 4-33 Creating a column mask -
- -Figure 4-33 Creating a column mask -
-2. In the New Column Mask window, which is shown in Figure 4-34, enter the following information: --Select the CUSTOMERS table on which to create the column mask. --Select the Column to mask; in this example, it is CUSTOMER_EMAIL. --Define the masking logic depending on the rules that you want to enforce. In this example, either the ADMIN or CUSTOMER group profiles can see the entire email address; otherwise, it is masked to ****@****. -Select the Enabled option. Click OK . -Figure 4-34 Defining a column mask on the CUSTOMERS table -
- -Figure 4-34 Defining a column mask on the CUSTOMERS table -
-3. Repeat steps 1 on page 58 and 2 to create column masks for the following columns: --MASK_DRIVERS_LICENSE_ON_CUSTOMERS --MASK_LOGIN_ID_ON_CUSTOMERS --MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS --MASK_ACCOUNT_NUMBER_ON_ACCOUNTS --MASK_SECURITY_QUESTION_ON_CUSTOMERS --MASK_TAX_ID_ON_CUSTOMERS -4. To verify that the column masks are enabled, from System i Navigator, click Column Masks , as shown in Figure 4-35. The seven column masks are created and enabled. -Figure 4-35 List of column masks on BANK_SCHEMA -
- -Figure 4-35 List of column masks on BANK_SCHEMA -
-4.3.7 Restricting the inserting and updating of masked data -This step defines the check constraints that support the column masks to make sure that on INSERTS or UPDATES, data is not written with a masked value. For more information about the propagation of masked data, see 6.8, "Avoiding propagation of masked data" on page 108. -Complete the following steps: -1. Create a check constraint on the column CUSTOMER_EMAIL in the CUSTOMERS table. From the navigation pane of System i Navigator, right-click the CUSTOMERS table and select Definition , as shown Figure 4-36 -Figure 4-36 Definition of the CUSTOMERS table -
- -Figure 4-36 Definition of the CUSTOMERS table -
-2. From the CUSTOMERS definition window, click the Check Constraints tab and click Add , as shown in Figure 4-37. -Figure 4-37 Adding a check constraint -
- -Figure 4-37 Adding a check constraint -
-3. The New Check Constraint window opens, as shown in Figure 4-38. Complete the following steps: -a. Select the CUSTOMER_EMAIL column. -b. Enter the check constraint condition. In this example, specify CUSTOMER_EMAIL to be different from ****@****, which is the mask value. -c. Select the On update violation, preserve column value option and click OK . -Figure 4-38 Specifying a new check constraint on the CUSTOMERS table -
- -Figure 4-38 Specifying a new check constraint on the CUSTOMERS table -
-4. Figure 4-39 shows that there is now a check constraint on the CUSTOMERS table that prevents any masked data from being updated to the CUSTOMER_EMAIL column. -Figure 4-39 Check constraint on the CUSTOMERS table -
- -Figure 4-39 Check constraint on the CUSTOMERS table -
-5. Create all the other check constraints that are associated to each of the masks on the CUSTOMERS table. After this is done, these constraints should look like the ones that are shown in Figure 4-40. -Figure 4-40 List of check constraints on the CUSTOMERS table -
- -Figure 4-40 List of check constraints on the CUSTOMERS table -
-4.3.8 Activating row and column access control -You are now ready to activate RCAC on all three tables in this example. Complete the following steps: -1. Start by enabling RCAC on the CUSTOMERS table. From System i Navigator, right-click the CUSTOMERS table and select Definition . As shown in Figure 4-41, make sure that you select Row access control and Column access control . Click OK . -Figure 4-41 Enabling RCAC on the CUSTOMERS table -
- -Figure 4-41 Enabling RCAC on the CUSTOMERS table -
-2. Enable RCAC on the ACCOUNTS table. Right-click the ACCOUNTS table and select Definition . As shown Figure 4-42, make sure that you select Row access control and Column access control . Click OK . -Figure 4-42 Enabling RCAC on ACCOUNTS -
- -Figure 4-42 Enabling RCAC on ACCOUNTS -
-3. Enable RCAC on the TRANSACTIONS table. Right-click the TRANSACTIONS table and select Definition . As shown in Figure 4-43, make sure that you select Row access control . Click OK . -Figure 4-43 Enabling RCAC on TRANSACTIONS -
- -Figure 4-43 Enabling RCAC on TRANSACTIONS -
-4.3.9 Reviewing row permissions -This section displays all the row permissions after enabling RCAC. Complete the following steps: -1. From System i Navigator, click Row Permissions , as shown in Figure 4-44. Three additional Row Permissions are added (QIBM_DEFAULT*). There is one per each row permission. -Figure 4-44 Row permissions after enabling RCAC -
- -Figure 4-44 Row permissions after enabling RCAC -
-2. Look at one of the row permission definitions by right-clicking it and selecting Definition , as shown in Figure 4-45. -Figure 4-45 Selecting row permission definition -
- -Figure 4-45 Selecting row permission definition -
-3. A window opens, as shown in Figure 4-46. Take note of the nonsensical search condition (0=1) of the QIBM_DEFAULT row permission. This permission is ORed with all of the others and it ensures that if someone does not meet any of the criteria from the row permission then this condition is tested, and because it is false the access is denied. -Figure 4-46 Search condition of the QIBM_DEFAULT row permission -
- -Figure 4-46 Search condition of the QIBM_DEFAULT row permission -
-4.3.10 Demonstrating data access with RCAC -You are now ready to test the RCAC definitions. Run the following SQL statements with each type of user (DBE, SECURITY, TELLER, ADMIN, and WEBUSER): -GLYPH A SELECT statement that returns the SESSION_USER. -GLYPH A SELECT statement that counts the customers from the CUSTOMER table. There are 90 customers in the CUSTOMER table. -GLYPH A simple SELECT statement that returns the following output from the CUSTOMERS table ordered by customer_name: --c u s t o m e r _ i d --customer_name --customer_email --c u s t o m e r _ t a x _ i d --customer_drivers_license_number -Data access for a DBE user with RCAC -To test a DBE (MCAIN) user, complete the following steps: -1. Confirm that the user is the user of the session by running the first SQL statement, as shown in Figure 4-47. In this example, MCAIN is the DBE user. -Figure 4-47 DBE session user -
- -Figure 4-47 DBE session user -
-2. The number of rows that the DBE user MCAIN can see is shown in Figure 4-48. -Figure 4-48 Number of rows that DBE user can see in the CUSTOMERS table -
- -Figure 4-48 Number of rows that DBE user can see in the CUSTOMERS table -
-3. The result of the third SQL statement is shown in Figure 4-49. Note the masked columns. User MCAIN can see all the rows in the CUSTOMERS table, but there are some columns where the result is masked. -Figure 4-49 SQL statement that is run by the DBE user with masked columns -Data access for SECURITY user with RCAC -To test a SECURITY user, complete the following steps: -1. Confirm that the user is the user of the session by running the first SQL statement, as shown in Figure 4-50. In this example, SECURITY is the security officer. -Figure 4-50 SECURITY session user -
- -Figure 4-50 SECURITY session user -
-2. The number of rows in the CUSTOMERS table that the security officer can see is shown in Figure 4-51. The security officer cannot see any data at all. -Figure 4-51 Number of rows that the security officer can see in the CUSTOMERS table -
- -Figure 4-51 Number of rows that the security officer can see in the CUSTOMERS table -
-3. The result of the third SQL statement is shown in Figure 4-52. Note the empty set that is returned to the security officer. -Figure 4-52 SQL statement that is run by the SECURITY user - no results -
- -Figure 4-52 SQL statement that is run by the SECURITY user - no results -
-Data access for TELLER user with RCAC -To test a Teller (TQSPENCER) user, complete the following steps: -1. Confirm that the TELLER user is the user of the session by running the first SQL statement, as shown in Figure 4-53. In this example, TQSPENCER is a TELLER user. -Figure 4-53 TELLER session user -
- -Figure 4-53 TELLER session user -
-2. The number of rows in the CUSTOMERS table that the TELLER user can see is shown in Figure 4-54. The TELLER user can see all the rows. -Figure 4-54 Number of rows that the TELLER user can see in the CUSTOMERS table -
- -Figure 4-54 Number of rows that the TELLER user can see in the CUSTOMERS table -
-3. The result of the third SQL statement is shown in Figure 4-55. Note the masked columns. The TELLER user, TQSPENSER, can see all the rows, but there are some columns where the result is masked. -Figure 4-55 SQL statement that is run by the TELLER user with masked columns -
- -Figure 4-55 SQL statement that is run by the TELLER user with masked columns -
-Data access for ADMIN user with RCAC -To test an ADMIN (VGLUCCHESS) user, complete the following steps: -1. Confirm that the ADMIN user is the user of the session by running the first SQL statement, as shown in Figure 4-56. In this example, VGLUCCHESS is an ADMIN user. -Figure 4-56 ADMIN session user -
- -Figure 4-56 ADMIN session user -
-2. The number of rows that the ADMIN user can see is shown in Figure 4-57. The ADMIN user can see all the rows. -Figure 4-57 Number of rows that the ADMIN can see in the CUSTOMERS table -
- -Figure 4-57 Number of rows that the ADMIN can see in the CUSTOMERS table -
-3. The result of the third SQL statement is shown in Figure 4-58. There are no masked columns. -Figure 4-58 SQL statement that is run by the ADMIN user - no masked columns -Data access for WEBUSER user with RCAC -To test a CUSTOMERS (WEBUSER) user that accesses the database by using the web application, complete the following steps: -1. Confirm that the user is the user of the session by running the first SQL statement, as shown in Figure 4-59. In this example, WEBUSER is a CUSTOMER user. -Figure 4-59 WEBUSER session user -
- -Figure 4-59 WEBUSER session user -
-2. A global variable (CUSTOMER_LOGIN_ID) is set by the web application and then is used to check the row permissions. Figure 4-60 shows setting the global variable by using the customer login ID. -Figure 4-60 Setting the global variable CUSTOMER_LOGIN_ID -
- -Figure 4-60 Setting the global variable CUSTOMER_LOGIN_ID -
-3. Verify that the global variable was set with the correct value by clicking the Global Variable tab, as shown in Figure 4-61. -Figure 4-61 Viewing the global variable value -
- -Figure 4-61 Viewing the global variable value -
-4. The number of rows that the WEBUSER can see is shown in Figure 4-62. This user can see only the one row that belongs to his web-based user ID. -Figure 4-62 Number of rows that the WEBUSER can see in the CUSTOMERS table -
- -Figure 4-62 Number of rows that the WEBUSER can see in the CUSTOMERS table -
-5. The result of the third SQL statement is shown in Figure 4-63. There are no masked columns, and the user can see only one row, which is the user's own row. -Figure 4-63 SQL statement that is run by WEBUSER - no masked columns -
- -Figure 4-63 SQL statement that is run by WEBUSER - no masked columns -
-Other examples of data access with RCAC -To run an SQL statement that lists all the accounts and current balance by customer, complete the following steps: -1. Run the SQL statement that is shown in Figure 4-64 using the WEBUSER user profile. The SQL statement has no WHERE clause, but the WEBUSER can see only his accounts. -Figure 4-64 List of accounts and current balance by customer using the WEBUSER user profile -2. Figure 4-65 shows running a more complex SQL statement that calculates transaction total by account for year and quarter. Run this statement using the WEBUSER profile. The SQL statement has no WHERE clause, but the WEBUSER user can see only his transactions. -Figure 4-65 Calculate transaction total by account for year and quarter using the WEBUSER profile -3. Run the same SQL statement that lists the accounts and current balance by customer, but use a TELLER user profile. The result of this SQL statement is shown in Figure 4-66. The TELLER user can see all the rows in the CUSTOMERS table. -Figure 4-66 List of accounts and current balance by customer using a TELLER user profile -4.3.11 Query implementation with RCAC activated -This section looks at some other interesting information that is related to RCAC by comparing the access plans of the same SQL statement without RCAC and with RCAC. This example uses Visual Explain and runs an SQL statement that lists the accounts and current balance by customer. -Complete the following steps: -1. Figure 4-67 shows the SQL statement in Visual Explain ran with no RCAC. The implementation of the SQL statement is a two-way join, which is exactly what the SQL statement is doing. -Figure 4-67 Visual Explain with no RCAC enabled -
- -Figure 4-67 Visual Explain with no RCAC enabled -
-2. Figure 4-68 shows the Visual Explain of the same SQL statement, but with RCAC enabled. It is clear that the implementation of the SQL statement is more complex because the row permission rule becomes part of the WHERE clause. -Figure 4-68 Visual Explain with RCAC enabled -
- -Figure 4-68 Visual Explain with RCAC enabled -
-3. Compare the advised indexes that are provided by the Optimizer without RCAC and with RCAC enabled. Figure 4-69 shows the index advice for the SQL statement without RCAC enabled. The index being advised is for the ORDER BY clause. -Figure 4-69 Index advice with no RCAC -
- -Figure 4-69 Index advice with no RCAC -
-4. Now, look at the advised indexes with RCAC enabled. As shown in Figure 4-70, there is an additional index being advised, which is basically for the row permission rule. For more information, see 6.4.2, "Index advisor" on page 99. -Figure 4-70 Index advice with RCAC enabled -
- -Figure 4-70 Index advice with RCAC enabled -
-
- -
-Chapter 5. -5 -RCAC and non-SQL interfaces -A benefit of Row and Column Access Control (RCAC) is that its security controls are enforced across all the interfaces that access DB2 for i because the security rules are defined and enforced at the database level. The examples that are shown in this paper focus on SQL-based access, but row permissions and column masks also are enforced for non-SQL interfaces, such as native record-level access in RPG and COBOL programs and CL commands, such as Display Physical File Member ( DSPPFM ) and Copy File ( CPYF ). -This consistent enforcement across all interfaces is a good thing, but there are some nuances and restrictions as a result of applying an SQL-based technology such as RCAC to non-SQL interfaces. These considerations are described in this chapter. -The following topics are covered in this chapter in this chapter: -GLYPH Unsupported interfaces -GLYPH Native query result differences -GLYPH Accidental updates with masked values -GLYPH System CL commands considerations -5.1 Unsupported interfaces -It is not possible to create a row permission or column mask on a distributed table or a program-described file. -After a row permission or column mask is added to a table, there are some data access requests that no longer work. An attempt to open or query a table with activated RCAC controls involving any of the following scenarios is rejected with the CPD43A4 error message: -GLYPH A logical file with multiple formats if the open attempt requests more than one format. -GLYPH A table or query that specifies an ICU 2.6.1 sort sequence. -GLYPH A table with read triggers. -This unsupported interface error occurs when a table with RCAC controls is accessed, not when the RCAC control is created and activated. -For example, assume that there is a physical file, PF1, which is referenced by a single format logical file (LFS) and a multi-format logical file (LFM). A row permission is successfully created and activated for PF1. Any application that accesses PF1 directly or LFS continues to work without any issues. However, any application that opens LFM with multiple formats receives an error on the open attempt after the row permission is activated for PF1. -Important: This potential runtime error places a heavy emphasis on a comprehensive testing plan to ensure that all programs are tested. If testing uncovers an unsupported interface, then you must investigate whether the application can be rewritten to use a data access interface that is supported by RCAC. -5.2 Native query result differences -The SQL Query Engine (SQE) is the only engine that is enhanced by IBM to enforce RCAC controls on query requests. In order for native query requests to work with RCAC, these native query requests are now processed by SQE instead of the Classic Query Engine (CQE). Native query requests can consist of the following items: -GLYPH Query/400 -GLYPH QQQQRY API -GLYPH Open Query File ( OPNQRYF ) command -GLYPH Run Query ( RUNQRY ) command -GLYPH Native open (RPG, COBOL, OPNDBF, and so on) of an SQL view -Legacy queries that have been running without any issues for many years and over many IBM i releases are now processed by a different query engine. As a result, the runtime behavior and results that are returned can be different for native query requests with RCAC enabled. The OPNQRYF command and Query/400 run with SQE by default. -The following list documents some of the query output differences that can occur when native query requests are processed by CQE: -GLYPH Different ordering in the result set -GLYPH Different values for null columns or columns with errors -GLYPH Suppression of some mapping error messages -GLYPH Loss of RRN positioning capabilities -GLYPH Duplicate key processing behavior differences -GLYPH Missing key feedback -For a list of the differences and additional details, see the IBM i Memo to Users Version 7.2 , found at: -http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgmtu.htm -In addition, the performance of a native query with SQE can be different. It is possible that a new index or keyed logical file might need to be created to improve the performance. -Important: Based on the potential impacts of query result set and performance differences, you should perform extensive functional testing and performance benchmarking of applications and reports that use native query interfaces. -5.3 Accidental updates with masked values -The masked values that are returned by a column mask can potentially cause the original data value to be accidentally overwritten, especially with applications using native record-level access. -For example, consider a table containing three columns of first name, last name, and tax ID that is read by an RPG program. The user running the program is not authorized to see the tax ID value, so a masked value (*****3333) is written into the program's record buffer, as shown Figure 5-1. -In this example, the application reads the data for an update to correct the misspelling of the last name. The last name value is changed to Smith in the buffer. Now, a WRITE request is issued by the program, which uses the contents of the record buffer to update the row in the underlying DB2 table. Unfortunately, the record buffer still contains a masked value for the tax ID, so the tax ID value in the table is accidentally set to the masked value. -Figure 5-1 Accidental update with masked values scenario -
- -Figure 5-1 Accidental update with masked values scenario -
-Obviously, careful planning and testing should be exercised to avoid accidental updates with masked values. -DB2 for i also enhanced its check constraint support in the IBM i 7.2 release with a new ON UPDATE clause that allows the existing value to be preserved when a masked value is detected by a check constraint. Details about how to employ this new check constraint support can be found in 6.8.1, "Check constraint solution" on page 108. -5.4 System CL commands considerations -As stated earlier, RCAC controls are enforced on all data access interfaces. This enforcement is not limited to programmatic interfaces; it also includes system CL commands that read and insert data, such as the Create Duplicate Object ( CRTDUPOBJ ) and Start DFU ( STRDFU ) CL commands. This section documents the behavior of the Create Duplicate Object ( CRTDUPOBJ ), Copy File ( CPYF ), and Copy Library ( CPYLIB ) CL commands with RCAC. -5.4.1 Create Duplicate Object (CRTDUPOBJ) command -The CRTDUPOBJ command is enhanced with a new Access Control ( ACCCTL ) parameter in the IBM i 7.2 release to copy RCAC controls to the new object being created. Row permissions and column masks are copied to the new object by default because the default value for the ACCCTL parameter is *ALL . -If the invoker of the CRTDUPOBJ command asks for data to be copied with a value of *YES for the DATA parameter, the value of the ACCCTL parameter must be *ALL . If not, the command invocation receives an error. -When data is copied to the duplicated object with the DATA parameter, all rows and unmasked column values are copied into the new object, even if the command invoker is not authorized to view all rows or certain column values. This behavior occurs because the RCAC controls also are copied to the new object. The copied RCAC controls enforce that only authorized users are allowed to view row and column values in the newly duplicated object. -5.4.2 Copy File (CPYF) command -The CPYF command copies only data, so there is no new parameter to copy RCAC controls to the target table. Therefore, if CPYF is used to create a target table, there are no RCAC controls placed on the target table. -When RCAC controls are in place on the source table, the CPYF command is limited to reading rows and column values that are based on the invoker of the CPYF command. If a user is authorized to see all rows and column values, then all rows and unmasked column values are copied to the target table (assuming no RCAC controls are on the target table). If a user without full access runs the CPYF command, the CPYF command can copy only a subset of the rows into the target table. In addition, if that user can view only masked column values, then masked values are copied into the target table. This also applies to the Copy to Import File ( CPYTOIMPF ) command. -If the target table has RCAC controls defined and activated, then the CPYF command is allowed only to add or replace rows in the target table based on the RCAC controls. If CPYF tries to add a row to the target table that the command invoker is not allowed to view according to the target RCAC controls, then an error is received. -5.4.3 Copy Library (CPYLIB) command -The CPYLIB command is enhanced with the same Access Control ( ACCCTL ) parameter as the CRTDUPOBJ command in the IBM i 7.2 release (see 5.4.1, "Create Duplicate Object (CRTDUPOBJ) command" on page 82). Row permissions and column masks are copied to the new object in the new library by default because the default value for the ACCCTL parameter is *ALL . -
- -
-Chapter 6. -Additional considerations -This chapter covers additional considerations that must be taken into account when implementing Row and Column Access Control (RCAC), including the following functions: -GLYPH Timing of column masking -GLYPH Data movement -GLYPH Joins -GLYPH Views -GLYPH Materialized query tables -GLYPH Index advisor -GLYPH Monitoring, analysis, and debugging -GLYPH Performance and scalability -The following topics are covered in this chapter: -GLYPH Timing of column masking -GLYPH RCAC effects on data movement -GLYPH RCAC effects on joins -GLYPH Monitoring, analyzing, and debugging with RCAC -GLYPH Views, materialized query tables, and query rewrite with RCAC -GLYPH RCAC effects on performance and scalability -GLYPH Exclusive lock to implement RCAC (availability issues) -GLYPH Avoiding propagation of masked data -GLYPH Triggers and functions (SECURED) -GLYPH RCAC is only one part of the solution -6 -6.1 Timing of column masking -An important design and implementation consideration is the fact that RCAC column masking occurs after all of the query processing is complete, which means that the query results are not at all based on the masked values. Any local selection, joining, grouping, or ordering operations are based on the unmasked column values. Only the final result set is the target of the masking. -An example of this situation is shown in Figure 6-1. However, note that aggregate functions (a form of grouping) are based on masked values. -SELECT -CREDIT_CARD_NUMBER, -FROM -GROUP BY -CREDIT_CARD_NUMBER -ORDER BY -CREDIT_CARD_NUMBER; -Without RCAC Masking -With RCAC Masking - - -CREDIT CARD NUMBER _ _TOTAL -3785 0000 0000 1234233.50 -3785 1111 1111 1234105.10 -3785 2222 2222 1234300 00 300.00 -3785 3333 3333 12341,775.00 -5466 4444 4444 1234601.70 -5466 5555 5555 123437.80 -5466 6666 6666 1234490.45 -6011 7777 7777 12341005.00 -6011 8888 8888 1234750.33 -6011 9999 9999 000110.00 -
-Figure 6-1 Timing of column masking - - - -CREDIT CARD NUMBER _ _TOTAL -**** **** **** 1234233.50 -**** **** **** 1234105.10 -**** **** **** 1234300 00 300.00 -**** **** **** 12341,775.00 -**** **** **** 1234601.70 -**** **** **** 123437.80 -**** **** **** 1234490.45 -**** **** **** 1234 12341005.00 -**** **** **** 1234750.33 -**** **** **** 000110.00 -
Figure 6-1 Timing of column masking
-SUM(AMOUNT) AS TOTAL TRANSACTIONS -Conversely, field procedure masking causes the column values to be changed (that is, masked) and stored in the row. When the table is queried and the masked columns are referenced, the masked data is used for any local selection, joining, grouping, or ordering operations. This situation can have a profound effect on the query's final result set and not just on the column values that are returned. Field procedure masking occurs when the column values are read from disk before any query processing. RCAC masking occurs when the column values are returned to the application after query processing. This difference in behavior is shown in Figure 6-2. -Note: Column masks can influence an SQL INSERT or UPDATE . For example, you cannot insert or update a table with column access control activated with masked data generated from an expression within the same statement that is based on a column with a column mask. -Figure 6-2 Masking differences between Fieldproc and RCAC -
- -Figure 6-2 Masking differences between Fieldproc and RCAC -
-6.2 RCAC effects on data movement -As described earlier and shown in Figure 6-3, RCAC is applied pervasively regardless of the data access programming interface, SQL statement, or IBM i command. The effects of RCAC on data movement scenarios can be profound and possibly problematic. It is important to understand these effects and make the appropriate adjustments to avoid incorrect results or data loss. -Figure 6-3 RCAC and data movement -
- -Figure 6-3 RCAC and data movement -
-The "user" that is running the data movement application or process, whether it be a high availability (HA) scenario, an extract, transform, load (ETL) scenario, or just copying data from one file or table to another one, must have permission to all the source rows without masking, and not be restricted from putting rows into the target. Allowing the data movement application or process to bypass the RCAC rules must be based on a clear and concise understanding of the organization's object security and data access policy. Proper design, implementation, and testing are critical success factors when applying RCAC. -Important: RCAC is applied to the table or physical file access. It is not applied to the journal receiver access. Any and all database transactions are represented in the journal regardless of RCAC row permissions and column masks. This makes it essential that IBM i security is used to ensure that only authorized personnel have access to the journaled data. -This section covers in detail the following three examples: -GLYPH Effects when RCAC is defined on the source table -GLYPH Effects when RCAC is defined on the target table -GLYPH Effects when RCAC is defined on both source and target tables -6.2.1 Effects when RCAC is defined on the source table -Example 6-1 shows a simple example that illustrates the effect of RCAC as defined on the source table. -Example 6-1 INSERT INTO TARGET statement -INSERT INTO TARGET (SELECT * FROM SOURCE); -For example, given a "source" table with a row permission defined as NAME <> 'CAIN' and a column mask that is defined to project the value 999.99 for AMOUNT, the SELECT statement produces a result set that has the RCAC rules applied. This reduced and modified result set is inserted into the "target" table even though the query is defined as returning all rows and all columns. Instead of seven rows that are selected from the source, only three rows are returned and placed into the target, as shown in Figure 6-4. -Figure 6-4 RCAC effects on data movement from SOURCE -
- -Figure 6-4 RCAC effects on data movement from SOURCE -
-6.2.2 Effects when RCAC is defined on the target table -Example 6-2 shows a simple example that illustrates the effect of RCAC as defined on the target table. -Example 6-2 INSERT INTO TARGET statement -INSERT INTO TARGET (SELECT * FROM SOURCE); -Given a "target" table with a row permission defined as NAME <> 'CAIN' and a column mask that is defined to project the value 999.99 for AMOUNT, the SELECT statement produces a result set that represents all the rows and columns. The seven row result set is inserted into the "target", and the RCAC row permission causes an error to be returned, as shown in Figure 6-5. The source rows where NAME = 'CAIN' do not satisfy the target table's permission, and therefore cannot be inserted. In other words, you are inserting data that you cannot read. -Figure 6-5 RCAC effects on data movement on TARGET -
- -Figure 6-5 RCAC effects on data movement on TARGET -
-6.2.3 Effects when RCAC is defined on both source and target tables -Example 6-3 shows a simple example that illustrates the effect of RCAC as defined on both the source and the target tables. -Example 6-3 INSERT INTO TARGET statement -INSERT INTO TARGET (SELECT * FROM SOURCE); -Given a "source" table and a "target" table with a row permission defined as NAME <> 'CAIN' and a column mask that is defined to project the value 999.99 for AMOUNT, the SELECT statement produces a result set that has the RCAC rules applied. This reduced and modified result set is inserted into the "target" table even though the query is defined as returning all rows and all columns. Instead of seven rows that are selected from the source, only three rows are returned. -Although the source rows where NAME <> 'CAIN' do satisfy the target table's permission, the AMOUNT column value of 999.99 represents masked data and therefore cannot be inserted. An error is returned indicating the failure, as shown in Figure 6-6. In this scenario, DB2 is protecting against an overt attempt to insert masked data. -Figure 6-6 RCAC effects on data movement on SOURCE and TARGET -
- -Figure 6-6 RCAC effects on data movement on SOURCE and TARGET -
-6.3 RCAC effects on joins -As mentioned previously, a fundamental concept of row permission is that it defines a logical subset of rows that a user or group of users is permitted to access and use. This subset becomes the new basis of any query against the table that has RCAC enabled. -Note: Thinking of the row permission as defining a virtual set of rows that can be operated on is the secret to understanding the effect of RCAC on any join operation. -As shown in Figure 6-7, there are two different sets, set A and set B. However, set B has a row permission that subsets the rows that a user can see. -Figure 6-7 Set A and set B with row permissions -
- -Figure 6-7 Set A and set B with row permissions -
-6.3.1 Inner joins -Inner join defines the intersection of two data sets. For a row to be returned from the inner join query, it must appear in both sets, as shown in Figure 6-8. -Figure 6-8 Inner join without RCAC permission -
- -Figure 6-8 Inner join without RCAC permission -
-Given that row permission serves to eliminate logically rows from one or more sets, the result set from an inner join (and a subquery) can be different when RCAC is applied. RCAC can reduce the number of rows that are permitted to be accessed by the join, as shown in Figure 6-9. -Effect of column masks on inner joins: Because column masks are applied after the query final results are determined, the masked value has no effect on the join processing and corresponding query result set. -Figure 6-9 Inner join with RCAC permission -
- -Figure 6-9 Inner join with RCAC permission -
-6.3.2 Outer joins -Outer joins preserve one or both sides of two data sets. A row can be returned from the outer join query if it appears in the primary set (LEFT, RIGHT, or both in the case of FULL), as shown in Figure 6-10. Column values from the secondary set are returned if the row has a match in the primary set. Otherwise, NULL is returned for the column value by default. -Figure 6-10 Outer join without RCAC permission -
- -Figure 6-10 Outer join without RCAC permission -
-Given that row permission serves to eliminate logically rows from one or more sets, more column values that are returned from the secondary table in outer join can be NULL when RCAC is applied, as shown in Figure 6-11. -Effect of column masks on inner joins: Because column masks are applied after the query final results are determined, the masked value has no effect on the join processing and corresponding query result set. -Figure 6-11 Outer join with RCAC permission -
- -Figure 6-11 Outer join with RCAC permission -
-6.3.3 Exception joins -Exception joins preserve one side of two data sets. A row can be returned from the exception join query if it appears in the primary set (LEFT or RIGHT) and the row does not appear in the secondary set, as shown in Figure 6-12. Column values from the secondary set are returned as NULL by default. -Figure 6-12 Exception join without RCAC permission -
- -Figure 6-12 Exception join without RCAC permission -
-Given that row permission serves to eliminate logically rows from one or more sets, more rows can appear to be exceptions when RCAC is applied, as shown in Figure 6-13. Also, because column masks are applied after the query final results are determined, the masked value has no effect on the join processing and corresponding query result set. -Figure 6-13 Exception join with RCAC permission -
- -Figure 6-13 Exception join with RCAC permission -
-6.4 Monitoring, analyzing, and debugging with RCAC -It is assumed (and it is a critical success factor) that the database engineer or application developer has a thorough understanding of the DB2 for i Query Optimizer, Database Engine, and all the associated tools and techniques. -The monitoring, analyzing, and debugging process basically stays the same when RCAC row permissions or column masks are in place, with a few important differences: -GLYPH The underlying data access plan can be different and more complex based on the rule text. -GLYPH The database results can be reduced or modified based on the rule text and user profile. -GLYPH The run time of the request can be affected either positively or negatively based on the rule text. -GLYPH For high-level language record level access, query plans must be considered, and not just program code. -During analyzing and debugging, it is important to account for all of the RCAC definitions for each table or file to understand the logic and corresponding work that is associated with processing the row permissions and column masks. It is also important to realize that, depending on the user profile in effect at run time, the database actions and query results can be different. -RCAC is designed and implemented to be transparent to the user. It is possible for user "Mike" and user "Hernando" to run the exact same query, against the exact same data on the exact same system, and get different result sets. There is no error, no warning, and no indication that RCAC reduced or modified the respective answers that are returned. Furthermore, it is also likely that user "Mike" and user "Hernando" have different query run times even though it appears that everything is the same for both users. The actual query plan contains the RCAC logic, and this additional code path can alter the amount of work that is needed to produce results, based on the user running the query. -When monitoring, analyzing, and debugging a database process when RCAC is enabled, it is critical to keep as many of the "variables" the same as possible. Use a good scientific process. For example, when re-creating a problem situation running under the same user profile with the same data and under the same conditions, it is almost mandatory. Otherwise, the database behavior and query results can be different. -To successfully perform monitoring, analyzing, and debugging when RCAC is enabled likely involves changes in the security and data access policies of the organization, and require new responsibilities, authority, and oversight within the data-centric application development community. As such, establishing and staffing the position of "database engineer" becomes even more important. -6.4.1 Query monitoring and analysis tools -When monitoring and collecting metrics on database requests, DB2 for i provides additional information that indicates row permissions or column masks are being applied. This information is integrated and part of the standard tools, such as Visual Explain, SQL Plan Cache Snapshot, and SQL Performance Monitor. -Figure 6-14 shows how Visual Explain externalizes RCAC. -Figure 6-14 Visual Explain indicating that RCAC is applied -
- -Figure 6-14 Visual Explain indicating that RCAC is applied -
-Figure 6-15 shows the main dashboard of an SQL Performance Monitor. Click Summary . -Figure 6-15 SQL Performance Monitor -
- -Figure 6-15 SQL Performance Monitor -
-Figure 6-16 shows the summary of an SQL Performance Monitor with an indication that RCAC is applied. -Figure 6-16 SQL Performance Monitor indicating that RCAC is applied -
- -Figure 6-16 SQL Performance Monitor indicating that RCAC is applied -
-Figure 6-17 shows the statements of an SQL Performance Monitor and how RCAC is externalized. -Figure 6-17 SQL Performance Monitor showing statements and RCAC -
- -Figure 6-17 SQL Performance Monitor showing statements and RCAC -
-When implementing RCAC as part of a comprehensive and pervasive data access control initiative, consider that the database monitoring and analysis tools can collect literal values that are passed as part of SQL statements. These literal values can be viewed as part of the information collected. If any of the literals are based on or are used with masked columns, it is important to review the database engineer's policy for viewing these data elements. For example, supposed that column CUSTOMER_TAX_ID is deemed masked for the database engineer and the CUSTOMER_TAX_ID column is used in a predicate as follows: -WHERE CUSTOMER_TAX_ID = '123-45-7890' -The literal value of '123-45-7890' is visible to the analyst, effectively exposing sensitive information. If this is not acceptable, you must implement the SYSPROC.SET_COLUMN_ATTRIBUTE procedure. -The SET_COLUMN_ATTRIBUTE procedure sets the SECURE attribute for a column so that variable values that are used for the column cannot be seen in the SQL Performance Monitor, SQL Plan Cache Snapshot, or Visual Explain. -6.4.2 Index advisor -Because the RCAC rule text can be almost any valid SQL logic, including local selection predicates, join conditions, and subqueries, the standard query tuning techniques still apply. Without a doubt, a proper and adequate indexing strategy is a good starting point. -The index advisor is not specifically enhanced for RCAC, but because the rule text is a fully integrated part of the query plan, any opportunities for indexing is advised based on the current Query Optimizer functionality. If an index is advised because of the RCAC rule text logic, there is no RCAC reason code provided. Analyzing the query plan and the RCAC rule text provides the understanding as to why the index is being advised. -For example, the query that is shown in Figure 6-18 produces index advice for the user's predicate and the RCAC predicate. -Figure 6-18 Index advice and RCAC -
- -Figure 6-18 Index advice and RCAC -
-In Figure 6-19, index advisor is showing an index for the ACCOUNTS and CUSTOMERS tables based on the RCAC rule text. -Figure 6-19 Index advisor based on the RCAC rule -
- -Figure 6-19 Index advisor based on the RCAC rule -
-For more information about creating and using indexes, see IBM DB2 for i indexing methods and strategies , found at: -http://www.ibm.com/partnerworld/wps/servlet/ContentHandler/stg_ast_sys_wp_db2_i_in dexing_methods_strategies -6.4.3 Metadata using catalogs -To make the discovery and identification of RCAC row permissions and column masks programmatically, query the QSYS2.SYSCONTROLS catalog view or the QSYS2.SYSCONTROLSDEP catalog view directly. Otherwise, the System i Navigator Database graphical interface can be used interactively. -Figure 6-20 shows the QSYS2.SYSCONTROLS catalog view. -Figure 6-20 RCAC and catalogs -The SYSCONTROLS catalog view contains the following columns: -GLYPH COLUMN_NAME -GLYPH CONTROL_TYPE -GLYPH CREATE_TIME -GLYPH ENABLE -GLYPH ENFORCED -GLYPH ASP_NUMBER -GLYPH IMPLICIT -GLYPH LABEL -GLYPH LAST_ALTERED -GLYPH LONG_COMMENT -GLYPH RCAC_NAME -GLYPH RCAC_OWNER -GLYPH RCAC_SCHEMA -GLYPH RULETEXT -GLYPH SYSTEM_COLUMN_NAME -GLYPH SYSTEM_TABLE_NAME -GLYPH SYSTEM_TABLE_SCHEMA -GLYPH TABLE_NAME -GLYPH TABLE_SCHEMA -GLYPH TBCORRELATION -The SYSCONTROLSDEP catalog view contains the following columns: -GLYPH COLUMN_NAME -GLYPH CONTROL_TYPE -GLYPH IASP_NUMBER -GLYPH OBJECT_NAME -GLYPH OBJECT_SCHEMA -GLYPH OBJECT_TYPE -GLYPH PARM_SIGNATURE -GLYPH RCAC_NAME -GLYPH RCAC_SCHEMA -GLYPH SYSTEM_TABLE_NAME -GLYPH SYSTEM_TABLE_SCHEMA -For more information, see the IBM i 7.2 DB2 for i SQL Reference Guide , found at: -http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/db2/rbafzintro.htm?lang =en -6.5 Views, materialized query tables, and query rewrite with RCAC -This section covers the implications to views, materialized query tables (MQTs), and query rewrite when RCAC is activated on a table. -6.5.1 Views -Any access to an SQL view that is over one or more tables that have RCAC also have those row permissions and column masking rules applied. If an SQL view has predicates, those are logically ANDed with any search condition that is specified in the permissions that are defined on the underlying tables. The view does not have to project the columns that are referenced by the permissions. Figure 6-21 shows an example of a view definition and user query. -Figure 6-21 View definition and user query -
- -Figure 6-21 View definition and user query -
-What the query optimizer plans for and what the database engine runs is shown in the Figure 6-22. -Figure 6-22 Query rewrite with RCAC -
- -Figure 6-22 Query rewrite with RCAC -
-6.5.2 Materialized query tables -When the query to populate a materialized query table (MQT) is run by the system on either the create table or a refresh table, and one or more source tables have RCAC defined, the row permissions and column masks are ignored. This means that the MQT has all of the data. -Because the MQT is a copy of the base table data, when a permission is created on the base table, all the related MQTs are altered to have a default row permission. This default permission prevents any of the rows from being directly queried. -When a query implicitly uses an MQT, the underlying row permissions and column masks are built into the query that uses the MQT. In order for the MQT to be used for optimization, the MQT must include any columns that are used by the row permissions and column masks. -The following example illustrates this scenario: -1. Create schema and tables: -CREATE SCHEMA Schema1; CREATE TABLE Schema1.employee(userID varchar(128), LocationID integer, Regionid integer); CREATE TABLE Schema1.Sales (INVOICE INTEGER NOT NULL, SALEAMT DECIMAL(5,2), TAXAMT DECIMAL(5,2), LOCATIONID INTEGER, REGIONID INTEGER); -2. Create a row permission that allows the employees to see only rows from the region they work in: -/* Create permission that only allows the employees to see rows from the region they work in */ CREATE PERMISSION Schema1.Sales_PERM1 ON schema1.sales FOR ROWS WHERE CURRENT_USER in (SELECT userId FROM schema1.employee E WHERE e.regionid = regionid) ENFORCED FOR ALL ACCESS ENABLE; -3. Create an MQT to summarize sales by location: --- Create MQT to summarize sales by location -- This has all of the data. The schema1.sales_perm1 predicate was not applied CREATE TABLE Schema1.Location_Sales_MQT as AS (SELECT LocationID, SUM(Saleamt) as Total_Location_Sales FROM SCHEMA1.SALES GROUP BY LOCATIONID) DATA INITIALLY DEFERRED REFRESH DEFERRED MAINTAINED BY USER; -4. Populate the MQT (permission is not applied): -/* Populate the MQT - Permission not applied here */ REFRESH TABLE Schema1.Location_Sales_MQT -The following query matches Location_Sales_MQT, but it cannot be used because it does not have column regionid, which is needed by the schema1.sales_PERM1 permission: -SELECT Locationid, sum(SALEAMT) FROM schema1.sales GROUP BY locationid; -5. Create an MQT to summarize by region and location: --- MQT to summarize by region and location Create table schema1.Region_Location_Sales_MQT as AS (SELECT REGIONID, LocationID, SUM(Saleamt) as Total_Location_Sales FROM SCHEMA1.SALES GROUP BY REGIONID, LOCATIONID) DATA INITIALLY DEFERRED REFRESH DEFERRED MAINTAINED BY USER; -6. Populate the Region_location_Sales_MQT (permission not applied): -/* Populate the Region_location_Sales_MQT - Permission not applied here */ Refresh table schema1.Region_Location_Sales_MQT -The following query can use the Region_location_SALES_MQT because it has REGIONID, which is required for the schema1.sales_PERM1 permission: -SELECT Locationid, sum(SALEAMT) FROM schema1.sales GROUP BY locationid; -This example has the following additional implications: -GLYPH Users must be prevented from explicitly querying the MQT or a view that is created over it. Those two cases bypass the row permission and column mask rules from the underlying tables. -GLYPH If the user writes code to update incrementally an MQT, that code must be run from a user that has permission to view all of the rows and all columns in their unmasked state. Otherwise, the MQT contents are not complete and queries that implicitly use the MQT might get wrong results. -GLYPH To prevent this, a check constraint can be created to cause an error if masked data was inserted into the MQT. -6.5.3 Query rewrite -Query rewrite is a technique that the optimizer can use to change the original request to improve performance. -For example, a query that references Table1 might be rewritten to access an MQT over Table1, or it might also be optimized to access only the fields in an index that is defined over Table1 and avoid touching Table1. With RCAC, defining these rewrites can still occur, but the MQT or index also must include all columns that are needed by the row permissions or column masks that are defined on Table1. -As part of adding RCAC, the impact to these potentially significant performance optimizations must be considered. Usage of MQTs or index-only access might be reduced or eliminated by enabling RCAC. -6.6 RCAC effects on performance and scalability -As with any discussion that is related to performance and scalability, nothing is certain or guaranteed. There are always many variables that are involved. First, a good foundation of knowledge and skill is required to appreciate fully what is occurring when a database request is handled within an RCAC enabled environment. Implementing the row permission or column masks involves the query optimizer and database engine. The process that identifies the rows that you have permission to access is considered a "query", and as such a query plan must be formulated. In the case of SQL requests, the RCAC portion of the query is combined with the user's query, much like a query referencing a view. -For native record level access, this RCAC "query" is also built and used to test the permission. When a file is opened, the RCAC rule text logic is included, optimized, and run as part of the native read, write, update, or delete operation. The amount of work (and time) required to identify the record based on the user's permission is directly related to the complexity and depth of the logic that is needed to identify the records that can be returned. -A simple example to illustrate this concept is a random read using a keyed logical file (that is, an index). In its purest form, a random read uses two data access methods: index probe (find the key and RRN) and table probe (find the record using RRN). If the RCAC rule text specifies five nested subqueries to determine whether the user has access to the record, this logic must be added to the path. The subquery processing now becomes part of the original "random read" request. Instead of two simple I/Os to retrieve the record, there can be a minimum of 12 I/Os to retrieve the same record. These I/Os can be done with a result of "not found" if the user is not entitled to any of the records. -For programs that access records sequentially, in or out of key order, the added RCAC logic can have a profound effect on the performance and scalability. Reading the "next record" in order is no longer a simple matter of positioning to the next available key, as shown in Figure 6-23. -Figure 6-23 Native record access with no RCAC -
- -Figure 6-23 Native record access with no RCAC -
-Before the record, as identified by the key, is considered available, the RCAC logic must be run. If the record is rejected by RCAC, the next record in sequence that is permissible must be identified. This spinning through the records can take a long time and uses many resources, as shown in Figure 6-24. -Figure 6-24 Native record level access with RCAC -
- -Figure 6-24 Native record level access with RCAC -
-After the row permissions and column masks are designed and implemented, adequate performance and scalability testing are recommended. -6.7 Exclusive lock to implement RCAC (availability issues) -When defining permissions or enabling RCAC, an exclusive lock on the base table is obtained. The impact to other applications depends on the order of create permission and the alter table to activate RCAC. -Consider the following scenarios: -GLYPH Scenario 1: Adding permissions and RCAC is not enabled on the table: --Job 1 reading data from the table (open for input) holds a *SHRRD on the member and a *SHRRD on the data. --Job 2 adding, updating, or deleting rows from table (open for output) holds a *SHRRD on the member and a *SHRUPD on the data. --Job 4 allocates the object and gets a *SHRRD on the file and a *EXCLRD on the data. --Job 3 attempts to add a permission to the table. Permission is added and the pseudo-closed cursors for Job1 and Job 2 are closed. Job 4 still holds the *SHRRD on the file and *EXCLRD on the data. -The net result from Scenario 1 is that you can add permissions without having to end the applications that are reading the base table. -GLYPH Scenario 2: Altering a table to activate RCAC requires that all applications using the table be ended. The alter table requires exclusive use of the table. -GLYPH Scenario 3: Altering the table to activate RCAC before the permissions are added. The alter table requires exclusive use of the table, as in scenario 2. All applications must be ended to perform this alter. After the alter is complete, any applications trying to read data do not get any results, and attempts to insert new rows returns the following message: -SQ20471] INSERT or UPDATE does not satisfy row permissions. -To create a permission in this case requires that you end all the applications, unlike scenario 1 where permissions can be added while the applications were active. In this case, the applications must be ended to run the create permission. -6.8 Avoiding propagation of masked data -Operations such as insert or update into a table with active column access control can fail if the input data is masked data. This can happen when data to be inserted or updated contains the masked value as a result of a SELECT from a table with active column access control. -For example, assume TABLE1 and TABLE2 have active column access control and for insert, selecting data from TABLE2 returns the masked data. The following INSERT returns an error: -INSERT INTO TABLE1 SELECT * FROM TABLE2 -The masked data that is returned from the SELECT * FROM TABLE2 might not be valid input data for TABLE1 because of data type or column check constraint. -There are two ways to prevent this situation from happening: Define a check constraint or create a before trigger. -6.8.1 Check constraint solution -One way to prevent this problem is to define a check constraint. -As part of RCAC, new SQL syntax is provided to allow an action to be performed when a violation of the check constraints check condition occurs instead of giving that error. However, if the check condition is still not met after the action, a hard error is returned. A check constraint with the new on-violation-clause is allowed on both the CREATE TABLE and ALTER TABLE statements. -In the Example 6-4, the mask is defined to return a value of 'XXX-XX-nnnn' for any query that is not done by a user profile in the DBMGR group. The constraint checks that the column SSN does not have the masked value. -Example 6-4 Check constraint to avoid masked data -CREATE SCHEMA MY_LIB SET SCHEMA MY_LIB CREATE TABLE MY_LIB.EMP_INFO (COL1_name CHAR(10) WITH DEFAULT 'DEFAULT', COL2_ssn CHAR(11) WITH DEFAULT 'DEFAULT') CREATE MASK MASK_ssn ON MY_LIB.EMP_INFO FOR COLUMN COL2_ssn RETURN CASE WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBMGR' ) = 1 THEN COL2_ssn -ELSE 'XXX-XX-'||SUBSTR(COL2_ssn,8,4) END ENABLE | /* Check constraint for the update and insert.*/ ALTER TABLE MY_LIB.EMP_INFO ADD CONSTRAINT MASK_ssn_preserve CHECK(SUBSTR(COL2_ssn,1,7)<>'XXX-XX-') -- Allow any value other than the mask ON UPDATE VIOLATION PRESERVE COL2_ssn -- Don't update the mask portion of the existing value ON INSERT VIOLATION SET COL2_ssn = DEFAULT -- for insert set this to the default value. -6.8.2 Before trigger solution -The actions that are described in Example 6-4 on page 108 for ON UPDATE VIOLATION and ON INSERT VIOLATION also can be handled by a before trigger, as shown in Example 6-5. -Example 6-5 Before trigger to avoid masked data -CREATE TRIGGER PREVENT_MASK_SSN BEFORE INSERT OR UPDATE ON MY_LIB.EMP_INFO REFERENCING NEW ROW AS N OLD ROW AS O FOR EACH ROW MODE DB2ROW SECURED WHEN(SUBSTR(N.COL2_ssn,1,7) = 'XXX-XX-') BEGIN IF INSERTING THEN SET N.COL2_ssn = DEFAULT; ELSEIF UPDATING THEN SET N.COL2_ssn = O.COL2_ssn; END IF; END -6.9 Triggers and functions (SECURED) -There are some considerations that must be considered when there are triggers and functions on tables that have RCAC enabled. The purpose of SECURE for triggers and functions is so that a user who is allowed to create a trigger or function is not necessarily able to make it SECURE themselves. This prevents the trigger/function developer from adding code that skims off data that they are not allowed to see. -6.9.1 Triggers -Triggers have access to the data in rows outside of the row permission or column masking. An after trigger has access to the new row image after the permission has allowed the update or insert to occur. Therefore, the triggers can potentially change the insert or update image value so that it violates the permission. -Any triggers that are defined on a table must be created with an attribute that designates that it is SECURED when RCAC definitions are created or altered for that table, as shown in Example 6-6. The same applies to a view that has an instead of trigger. That trigger must be secure at the point RCAC is enabled for any of the underlying tables the view is over. -Example 6-6 Trigger SECURED -/* Trigger created with the SECURED attribute */ CREATE TRIGGER PREVENT_MASK_SSN BEFORE INSERT OR UPDATE ON MY_LIB.EMP_INFO REFERENCING NEW ROW AS N OLD ROW AS O FOR EACH ROW MODE DB2ROW SECURED WHEN(SUBSTR(N.COL2_ssn,1,7) = 'XXX-XX-') BEGIN IF INSERTING THEN SET N.COL2_ssn = DEFAULT; ELSEIF UPDATING THEN SET N.COL2_ssn = O.COL2_ssn; END IF; END -6.9.2 Functions -Within a CREATE PERMISSION or CREATE MASK , a function can be called. Because that UDF has access to the data before the RCAC rules are applied, the SECURE attribute is required on that function, as shown in Example 6-7. -Example 6-7 Specifying SECURED on a function CREATE PERMISSION SCHEMA.PERM1 ON SCHEMA.TABLE1 FOR ROWS WHERE MY_UDF(CURRENT_USER,COLUMN1) = 1 ENFORCED FOR ALL ACCESS ENABLE; CREATE FUNCTION MY_UDF (INP1 CHAR(32), INP2 INTEGER) Returns INTEGER LANGUAGE SQL CONTAINS SQL SECURED -The SECURED attribute of MY_UDF signifies that the function is considered secure for RCAC. If a function is called from an SQL statement, and references a column in a table that has RCAC, it must be declared as secure. In that case, if the secure function calls other functions, they are not validated to confirm whether they are secure. -Consider the following examples: -GLYPH Table1 has RCAC defined and enabled. SELECT MY_UDF2(Column2) from schema.table1. -MY_UDF2 must be created with the SECURED attribute. If MY_UDF2 invokes MY_UDF3, there is no checking to ensure that it is also created with SECURED. -NOT SECURED is the default on the create function unless SECURED is explicitly selected. -This same rule applies for any function that might be invoked with a masked column specified as an argument. -GLYPH Table2 column SSN has a column mask that is defined on it. -SELECT MY_UDF4(SSN) from table2. Because SSN has a column mask that is defined, MY_UDF4 must be created with the SECURED attribute. -6.10 RCAC is only one part of the solution -When designing and implementing RCAC row permissions, special attention should be given to the effectiveness and limitations of controlling data access. Data can be housed in objects other than tables or physical files. The role and responsibility of the database user, for example, the database engineer, must be reconciled with their respective authority and access privileges. -Figure 6-25 illustrates that object level security is the first check and that RCAC permissions provide control only on tables and physical files. -Figure 6-25 Object-level security and RCAC permissions -
- -Figure 6-25 Object-level security and RCAC permissions -
-To get access to the table and the rows, the user must pass the object level authority test and the RCAC permission test. -The IBM i journal captures the transactional data and places an image of the row in the journal receiver. If the user has access to the journal receiver, the row image can be viewed if the user has authority to the journal receiver. -Although the SQL Plan Cache data, the SQL Plan Cache Snapshot data, and the SQL Performance Monitor data do not reveal the results of queries, they can show the literal values that are passed along with the SQL statements. -The ability to monitor, analyze, debug, and tune data-centric applications effectively and efficiently requires some understanding of the underlying data, or at least the attributes of the data. The organization must be willing to reconcile the conflicting requirements of "restricting access to data", and "needing access to data". -
- -
-Chapter 7. -7 -Row and Column Access Control management -After Row and Column Access Control (RCAC) definitions are defined and activated in a database, your management processes must be adjusted to accommodate these new security controls. This chapter highlights some of the changes that should be considered. -The following topics are covered in this chapter: -GLYPH Managing row permissions and column masks -GLYPH Managing tables with row permissions and column masks -GLYPH Monitoring and auditing function usage -7.1 Managing row permissions and column masks -This section focuses on the management of the RCAC row permissions and column masks. -7.1.1 Source management -The SQL statements that are used to define row permissions and column masks should be managed with a change management process. Ideally, you already are using a change management process for your database definitions, and that same process can be extended to cover your RCAC definitions. -If you are using SQL DDL to define your DB2 tables, then you have the option of adding the RCAC definitions to the same source file as the table definition. The benefit of this approach is that it keeps all DDL that is related to a table in a single source file. The downside is that if you must re-create only the RCAC definitions and leave the table unchanged, then you must identify and extract only the RCAC definitions from the source file. There are situations where the row permissions and column masks must be changed or re-created without changing the definition of the associated table. -7.1.2 Modifying definitions -After RCAC is activated for a table, the row permission and column mask definitions can be re-created to change the data access behavior for that table. Usage of the OR REPLACE clause on the CREATE MASK and CREATE PERMISSION SQL statements simplifies the re-creation process by folding in the deletion of the existing RCAC definition. -This capability makes it easy to change your RCAC definitions as you test the controls with your applications and identify tweaks that must be made to your RCAC implementation. However, re-creation of RCAC definitions does require an exclusive lock to be acquired on the table during the process. -7.1.3 Turning on and off -As described in 3.1.2, "Enabling and activating RCAC" on page 16, the SQL ALTER statement can turn on and off row permissions and column masks. The ALTER MASK and A LTER PERMISSION statements allow an individual row permission or column mask to be turned off with the DISABLE option and back on with the ENABLE option. The ALTER TABLE statement can deactivate enforcement of all the row permissions and column masks for a single table. -Important: Although these capabilities make it easy to temporarily turn off RCAC security so that you can make environment or application changes, these processes require an exclusive lock to be obtained on a table. Therefore, this activity must be planned carefully to avoid disruptions and outages. -7.1.4 Regenerating -DB2 also can regenerate an existing row permission or column mask. This regenerate option can be useful with more complex RCAC definitions that reference other DB2 objects. -For example, consider a row permission on an ACCOUNTS table (PERMISSION1_ON_ACCOUNTS). The ACCOUNTS table row permission references and compares columns in the CUSTOMERS table. When the definition of the CUSTOMERS table changes, DB2 does not check to determine whether the change to the CUSTOMERS table breaks the ACCOUNTS table row permission. If this table definition change does break the row permission, an error does not surface until an application tries to read rows from the ACCOUNTS table. -Instead of waiting for an application to detect this error, the REGENERATE option can be used on the ACCOUNTS row permission. The REGENERATE option returns an error if the change in the CUSTOMERS table definition causes the row permission to be invalid. In this way, the row permission can be proactively corrected before an application discovers the error. -7.2 Managing tables with row permissions and column masks -This section examines the object management considerations after RCAC is added to a DB2 table. -7.2.1 Save and restore -Row permissions and column masks are stored in the DB2 table object itself, so they are automatically saved and restored when the DB2 table object is saved and restored. Therefore, no adjustments must be made to your database backup process to accommodate RCAC. -Save and restore processing works fine with RCAC if the RCAC definition does not reference other DB2 objects other than the table over which they are defined. When the RCAC definition has dependencies on other DB2 objects, the restore process is much more challenging. -For example, assume that the BANKSCHEMA library (which is the system name or short name for the schema long name of BANK_SCHEMA) is saved and restored into a library named BANK_TEST. Recall from the example in 7.1.4, "Regenerating" on page 114 that the row permission on the ACCOUNTS table references the CUSTOMERS table (… SELECT C.CUSTOMER_ID FROM CUSTOMERS C …). After the restore operation, the ACCOUNTS row permission still references the CUSTOMERS table in BANK_SCHEMA because DB2 explicitly qualifies all object references when the row permission or column mask is created. The restore processing does not change the explicit qualification from BANK_SCHEMA to BANK_TEST. As a result, the restored ACCOUNTS row permission now depends on DB2 objects residing in a different schema, even though it was not created that way originally. For more details, see Figure 7-1. -Figure 7-1 Restoring tables to different schemas -
- -Figure 7-1 Restoring tables to different schemas -
-The only way to fix this issue is to re-create the row permission or column mask after the restore operation. Re-creation of the row permission or column mask is required only for definitions that reference other DB2 objects, but it is simpler to re-create all of the RCAC definitions instead of a subset. For example, generate the SQL using System i Navigator, clear the "Schema qualify names for objects" and select the "OR REPLACE clause", and then run the generated script. -7.2.2 Table migration -There are several IBM i CL commands, such as Move Object ( MOVOBJ ), Create Duplicate Object ( CRTDUPOBJ ), and Copy Library ( CPYLIB ), which are used to migrate a table from one library to another one. Often, this migration is done to create different versions of the table that can be used for development or testing purposes. -The migration of a table with RCAC has the same challenges as restore processing. If the RCAC definition references other DB2 objects, then IBM i CL commands do not change the schema names that are explicitly qualified by the DB2 internal RCAC processing. -Again, re-creating the row permission or column mask is the only way to fix the issue of references to DB2 objects in other schemas. -7.3 Monitoring and auditing function usage -While establishing proper roles for users, separating duties using function usage IDs, and defining RCAC policies allows you to implement an effective and pervasive data access control scheme. How do you monitor and audit everyone who is involved in the implementation of that scheme? The answer is to use IBM i journaling. A special journal that is called QAUDJRN, also known as the audit journal , can provide a record and audit trail of many security relevant events that occur on the system, including RCAC-related events. -The tasks and operations of security administrators and database engineers who are collaborating can (and should) be effectively monitored and audited to ensure that the organization's data access control and governance policies are in place and enabled. For example, the Database Engineers can be involved in designing and developing functions and triggers that must be secured using the SECURE attribute. Otherwise, without properly securing functions and triggers, the RCAC controls can be bypassed. -A new journal entry type of "AX" for journal entry code "T" (audit trail) is now used for RCAC. More information about the journaling of RCAC operations can be found in the following documents: -GLYPH IBM i Version 7.2 Journal Management Guide , found at: -http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzaki/rzakiprintthis .htm?lang=en -GLYPH IBM i Version 7.2 Security Reference Guide , found at: -http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzarl/rzarlkickoff.h tm?lang=en -
- -
-Chapter 8. -Designing and planning for success -Although successfully implementing Row and Column Access Control (RCAC) is based on knowledge and skills, designing and planning are fundamental aspects. This chapter describes the need for a deep understanding of the technology, and good design, proper planning, and adequate testing. -The following topics are covered in this chapter: -GLYPH Implementing RCAC with good design and proper planning -GLYPH DB2 for i Center of Excellence -8 -8.1 Implementing RCAC with good design and proper planning -By using RCAC, the row and column data that is returned to the requester can be controlled and governed by a set of data-centric policies that are defined with SQL and implemented within DB2 for i. -RCAC provides fine-grained access control and is complementary to IBM i object-level security. With the new RCAC feature of DB2 for i, the database engineer, in partnership with the data owner and security officer, can ensure that users have access to the data based on their level of authorization and responsibility. -This situation also can include separation of duties, such as allowing the application developers to design and implement the solutions, but restricting them from accessing the production data based on policy. Just because someone writes and owns the program, it does not mean that they have access to all the sensitive data that their program can potentially read. -This paper has described the following pervasive power and advantages of RCAC: -GLYPH Access can be controlled through simple or sophisticated logic. -GLYPH Virtually no application changes are required. -GLYPH The implementation of the access policy is part of the DB2 data access layer. -GLYPH Table data is protected regardless of the interface that is used. -GLYPH No user is inherently exempted from the access control policies. -GLYPH Groups of users can share policies and permissions. -A deep understanding of the technology, and proper planning, good design, adequate testing, and monitored deployment are critical for success. This includes the usage of quality assurance testing, and realistic performance and scalability exercises that serve to demonstrate that all of your requirements are being met. As part of the verification process, the usage of in-depth proofs of concepts and proofs of technology are recommended, if not essential. When RCAC is activated, the results of queries can change. Anticipating this change and realizing the effects of RCAC before going live are of the utmost importance. -With the ever-growing value of data, and the vast and varied database technology that is available today, it is crucial to have a person or persons on staff who specialize in data-centric design, development, and deployment. This role and responsibility falls on the database engineer. With the availability of DB2 RCAC, the importance of full-time database engineering has grown. -8.2 DB2 for i Center of Excellence -To further assist you with understanding and implementing RCAC, the DB2 for i Center of Excellence team offers an RCAC education and consulting workshop. In addition to knowledge transfer, a working session allows for a review of your data access control requirements, review of the current environment, solution ideation, and high-level solution design. -If you are interested in engaging with the DB2 for i Center of Excellence, contact Mike Cain at mcain@us.ibm.com . -
- -
-Appendix A. -Database definitions for the RCAC banking example -This appendix provides the database definitions or DDLs to re-create the Row and Column Access Control (RCAC) scenario that is described in Chapter 4, "Implementing Row and Column Access Control: Banking example" on page 37. The script that is shown in Example A-1 is the DDL script that is used to implement this example. -Example A-1 DDL script to implement the RCAC banking example -/* Database Definitions for RCAC Bank Scenario */ /* Schema */ CREATE SCHEMA BANK_SCHEMA FOR SCHEMA BANKSCHEMA ; /* Global Variable */ CREATE VARIABLE BANK_SCHEMA.CUSTOMER_LOGIN_ID VARCHAR( 30) ; LABEL ON VARIABLE BANK_SCHEMA.CUSTOMER_LOGIN_ID IS 'Customer''s log in value passed by web application' ; /* Tables */ CREATE TABLE BANK_SCHEMA.CUSTOMERS ( CUSTOMER_ID FOR COLUMN CUSTO00001 INTEGER GENERATED ALWAYS AS IDENTITY ( START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE NO CYCLE NO ORDER CACHE 20 ), CUSTOMER_NAME FOR COLUMN CUSTO00002 VARCHAR(30) CCSID 37 NOT NULL , CUSTOMER_ADDRESS FOR COLUMN CUSTO00003 VARCHAR(30) CCSID 37 NOT NULL , CUSTOMER_CITY FOR COLUMN CUSTO00004 VARCHAR(30) CCSID 37 NOT NULL , CUSTOMER_STATE FOR COLUMN CUSTO00005 CHAR(2) CCSID 37 NOT NULL , CUSTOMER_PHONE FOR COLUMN CUSTO00006 CHAR(10) CCSID 37 NOT NULL , CUSTOMER_EMAIL FOR COLUMN CUSTO00007 VARCHAR(30) CCSID 37 NOT NULL , CUSTOMER_TAX_ID FOR COLUMN CUSTO00008 CHAR(11) CCSID 37 NOT NULL , CUSTOMER_DRIVERS_LICENSE_NUMBER FOR COLUMN CUSTO00012 CHAR(13) CCSID 37 DEFAULT NULL , CUSTOMER_LOGIN_ID FOR COLUMN CUSTO00009 VARCHAR(30) CCSID 37 DEFAULT NULL , CUSTOMER_SECURITY_QUESTION FOR COLUMN CUSTO00010 VARCHAR(100) CCSID 37 DEFAULT NULL , -A -CUSTOMER_SECURITY_QUESTION_ANSWER FOR COLUMN CUSTO00011 VARCHAR(100) CCSID 37 DEFAULT NULL , INSERT_TIMESTAMP FOR COLUMN INSER00001 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , UPDATE_TIMESTAMP FOR COLUMN UPDAT00001 TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , CONSTRAINT BANK_SCHEMA.CUSTOMER_ID_PK PRIMARY KEY( CUSTOMER_ID ) ) ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_LOGIN_ID_UK UNIQUE( CUSTOMER_LOGIN_ID ) ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_DRIVERS_LICENSE_CHECK CHECK( CUSTOMER_DRIVERS_LICENSE_NUMBER <> '*************' ) ON UPDATE VIOLATION PRESERVE CUSTOMER_DRIVERS_LICENSE_NUMBER ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_EMAIL_CHECK CHECK( CUSTOMER_EMAIL <> '****@****' ) ON UPDATE VIOLATION PRESERVE CUSTOMER_EMAIL ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_LOGIN_ID_CHECK CHECK( CUSTOMER_LOGIN_ID <> '*****' ) ON INSERT VIOLATION SET CUSTOMER_LOGIN_ID = DEFAULT ON UPDATE VIOLATION PRESERVE CUSTOMER_LOGIN_ID ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_SECURITY_QUESTION_CHECK CHECK( CUSTOMER_SECURITY_QUESTION_ANSWER <> '*****' ) ON INSERT VIOLATION SET CUSTOMER_SECURITY_QUESTION_ANSWER = DEFAULT ON UPDATE VIOLATION PRESERVE CUSTOMER_SECURITY_QUESTION_ANSWER ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_SECURITY_QUESTION_ANSWER CHECK( CUSTOMER_SECURITY_QUESTION <> '*****' ) ON INSERT VIOLATION SET CUSTOMER_SECURITY_QUESTION = DEFAULT ON UPDATE VIOLATION PRESERVE CUSTOMER_SECURITY_QUESTION ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_TAX_ID_CHECK CHECK( CUSTOMER_TAX_ID <> 'XXX-XX-XXXX' AND SUBSTR ( CUSTOMER_TAX_ID , 1 , 7 ) <> 'XXX-XX-' ) ON UPDATE VIOLATION PRESERVE CUSTOMER_TAX_ID ; CREATE TABLE BANK_SCHEMA.ACCOUNTS ( ACCOUNT_ID INTEGER GENERATED ALWAYS AS IDENTITY ( START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE NO CYCLE NO ORDER CACHE 20 ), CUSTOMER_ID FOR COLUMN CUSTID INTEGER NOT NULL , ACCOUNT_NUMBER FOR COLUMN ACCOUNTNO VARCHAR(50) CCSID 37 NOT NULL , ACCOUNT_NAME FOR COLUMN ACCOUNTNAM CHAR(12) CCSID 37 NOT NULL , ACCOUNT_DATE_OPENED FOR COLUMN OPENDATE DATE DEFAULT CURRENT_DATE , ACCOUNT_DATE_CLOSED FOR COLUMN CLOSEDATE DATE DEFAULT NULL , ACCOUNT_CURRENT_BALANCE FOR COLUMN ACCTBAL DECIMAL(11, 2) NOT NULL DEFAULT 0 , INSERT_TIMESTAMP FOR COLUMN INSDATE TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , UPDATE_TIMESTAMP FOR COLUMN UPDDATE TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , CONSTRAINT BANK_SCHEMA.ACCOUNT_ID_PK PRIMARY KEY( ACCOUNT_ID ) ); -ALTER TABLE BANK_SCHEMA.ACCOUNTS ADD CONSTRAINT BANK_SCHEMA.ACCOUNT_CUSTOMER_ID_FK FOREIGN KEY( CUSTOMER_ID ) REFERENCES BANK_SCHEMA.CUSTOMERS ( CUSTO00001 ) ON DELETE RESTRICT ON UPDATE RESTRICT ; ALTER TABLE BANK_SCHEMA.ACCOUNTS ADD CONSTRAINT BANK_SCHEMA.ACCOUNT_NUMBER_CHECK CHECK( ACCOUNT_NUMBER <> '*****' ) ON UPDATE VIOLATION PRESERVE ACCOUNT_NUMBER ; CREATE TABLE BANK_SCHEMA.TRANSACTIONS FOR SYSTEM NAME TRANS ( TRANSACTION_ID FOR COLUMN TRANS00001 INTEGER GENERATED ALWAYS AS IDENTITY ( START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE NO CYCLE NO ORDER CACHE 20 ), ACCOUNT_ID INTEGER NOT NULL , TRANSACTION_TYPE FOR COLUMN TRANS00002 CHAR(1) CCSID 37 NOT NULL , TRANSACTION_DATE FOR COLUMN TRANS00003 DATE NOT NULL DEFAULT CURRENT_DATE , TRANSACTION_TIME FOR COLUMN TRANS00004 TIME NOT NULL DEFAULT CURRENT_TIME , TRANSACTION_AMOUNT FOR COLUMN TRANS00005 DECIMAL(11, 2) NOT NULL , INSERT_TIMESTAMP FOR COLUMN INSER00001 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , UPDATE_TIMESTAMP FOR COLUMN UPDAT00001 TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , CONSTRAINT BANK_SCHEMA.TRANSACTION_ID_PK PRIMARY KEY( TRANSACTION_ID ) ) ; ALTER TABLE BANK_SCHEMA.TRANSACTIONS ADD CONSTRAINT BANK_SCHEMA.TRANSACTIONS_ACCOUNT_ID_FK FOREIGN KEY( ACCOUNT_ID ) REFERENCES BANK_SCHEMA.ACCOUNTS ( ACCOUNT_ID ) ON DELETE RESTRICT ON UPDATE RESTRICT ; /* Permissions and Masks */ CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) OR ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 AND ( C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ) ) ENFORCED FOR ALL ACCESS ENABLE ; CREATE MASK BANK_SCHEMA.MASK_EMAIL_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_EMAIL RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_EMAIL WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_EMAIL ELSE '****@****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_TAX_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_TAX_ID RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 -THEN C . CUSTOMER_TAX_ID WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( C . CUSTOMER_TAX_ID , 8 , 4 ) ) WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_TAX_ID ELSE 'XXX-XX-XXXX' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_DRIVERS_LICENSE_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_DRIVERS_LICENSE_NUMBER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ELSE '*************' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_LOGIN_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_LOGIN_ID RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_LOGIN_ID WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_LOGIN_ID ELSE '*****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_SECURITY_QUESTION RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION ELSE '*****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_SECURITY_QUESTION_ANSWER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ELSE '*****' END ENABLE ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL ; -CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_ACCOUNTS ON BANK_SCHEMA.ACCOUNTS AS A FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) OR ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 AND ( A . CUSTOMER_ID IN ( SELECT C . CUSTOMER_ID FROM BANK_SCHEMA . CUSTOMERS C WHERE C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ENFORCED FOR ALL ACCESS ENABLE ; CREATE MASK BANK_SCHEMA.MASK_ACCOUNT_NUMBER_ON_ACCOUNTS ON BANK_SCHEMA.ACCOUNTS AS A FOR COLUMN ACCOUNT_NUMBER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN A . ACCOUNT_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN A . ACCOUNT_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN A . ACCOUNT_NUMBER ELSE '*****' END ENABLE ; ALTER TABLE BANK_SCHEMA.ACCOUNTS ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL ; CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_TRANSACTIONS ON BANK_SCHEMA.TRANSACTIONS AS T FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) OR ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 AND ( T . ACCOUNT_ID IN ( SELECT A . ACCOUNT_ID FROM BANK_SCHEMA . ACCOUNTS A WHERE A . CUSTOMER_ID IN ( SELECT C . CUSTOMER_ID FROM BANK_SCHEMA . CUSTOMERS C WHERE C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ENFORCED FOR ALL ACCESS ENABLE ; ALTER TABLE BANK_SCHEMA.TRANSACTIONS ACTIVATE ROW ACCESS CONTROL ; /* END */ -Related publications -The publications that are listed in this section are considered suitable for a more detailed description of the topics that are covered in this paper. -Other publications -These publications are relevant as further information sources: -GLYPH IBM DB2 for i indexing methods and strategies white paper: -http://www.ibm.com/partnerworld/wps/servlet/ContentHandler/stg_ast_sys_wp_db2_i _indexing_methods_strategies -GLYPH IBM i Memo to Users Version 7.2 : -http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgmtu.htm -GLYPH IBM i Version 7.2 DB2 for i SQL Reference Guide : -http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/db2/rbafzintro.htm?l ang=en -GLYPH IBM i Version 7.2 Journal Management Guide : -http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzaki/rzakiprintthis .htm?lang=en -GLYPH IBM i Version 7.2 Security Reference Guide : -http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzarl/rzarlkickoff.h tm?lang=en -Online resources -These websites are relevant as further information sources: -GLYPH Database programming topic of the IBM i 7.2 IBM Knowledge Center: -http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgdbp.htm?l ang=en -GLYPH Identity Theft Resource Center -http://www.idtheftcenter.org -GLYPH Ponemon Institute -http://www.ponemon.org/ -Help from IBM -IBM Support and downloads -ibm.com /support -IBM Global Services -ibm.com /services -Back cover -Row and Column Access Control Support in IBM DB2 for i -Implement roles and separation of duties -Leverage row permissions on the database -Protect columns by defining column masks -This IBM Redpaper publication provides information about the IBM i 7.2 feature of IBM DB2 for i Row and Column Access Control (RCAC). It offers a broad description of the function and advantages of controlling access to data in a comprehensive and transparent way. This publication helps you understand the capabilities of RCAC and provides examples of defining, creating, and implementing the row permissions and column masks in a relational database environment. -This paper is intended for database engineers, data-centric application developers, and security officers who want to design and implement RCAC as a part of their data control and governance policy. A solid background in IBM i object level security, DB2 for i relational database concepts, and SQL is assumed. -
- -
-
- -
-INTERNATIONAL TECHNICAL SUPPORT ORGANIZATION -BUILDING TECHNICAL INFORMATION BASED ON PRACTICAL EXPERIENCE -IBM Redbooks are developed by the IBM International Technical Support Organization. Experts from IBM, Customers and Partners from around the world create timely technical information based on realistic scenarios. Specific recommendations are provided to help you implement IT solutions more effectively in your environment. -For more information: ibm.com /redbooks -
\ No newline at end of file diff --git a/tests/data/groundtruth/docling_v2/redp5110.json b/tests/data/groundtruth/docling_v2/redp5110.json deleted file mode 100644 index 88fb1014..00000000 --- a/tests/data/groundtruth/docling_v2/redp5110.json +++ /dev/null @@ -1 +0,0 @@ -{"schema_name": "DoclingDocument", "version": "1.0.0", "name": "redp5110", "origin": {"mimetype": "application/pdf", "binary_hash": 4337232093025561302, "filename": "redp5110.pdf", "uri": null}, "furniture": {"self_ref": "#/furniture", "parent": null, "children": [], "name": "_root_", "label": "unspecified"}, "body": {"self_ref": "#/body", "parent": null, "children": [{"cref": "#/texts/0"}, {"cref": "#/pictures/0"}, {"cref": "#/texts/1"}, {"cref": "#/texts/2"}, {"cref": "#/texts/3"}, {"cref": "#/texts/4"}, {"cref": "#/texts/5"}, {"cref": "#/texts/6"}, {"cref": "#/texts/7"}, {"cref": "#/pictures/1"}, {"cref": "#/texts/8"}, {"cref": "#/texts/9"}, {"cref": "#/texts/10"}, {"cref": "#/texts/11"}, {"cref": "#/texts/12"}, {"cref": "#/texts/13"}, {"cref": "#/texts/14"}, {"cref": "#/texts/15"}, {"cref": "#/texts/16"}, {"cref": "#/texts/17"}, {"cref": "#/tables/0"}, {"cref": "#/texts/18"}, {"cref": "#/texts/19"}, {"cref": "#/texts/20"}, {"cref": "#/texts/21"}, {"cref": "#/tables/1"}, {"cref": "#/tables/2"}, {"cref": "#/texts/22"}, {"cref": "#/texts/23"}, {"cref": "#/texts/24"}, {"cref": "#/texts/25"}, {"cref": "#/texts/26"}, {"cref": "#/texts/27"}, {"cref": "#/texts/28"}, {"cref": "#/texts/29"}, {"cref": "#/texts/30"}, {"cref": "#/texts/31"}, {"cref": "#/texts/32"}, {"cref": "#/texts/33"}, {"cref": "#/texts/34"}, {"cref": "#/texts/35"}, {"cref": "#/texts/36"}, {"cref": "#/texts/37"}, {"cref": "#/texts/38"}, {"cref": "#/texts/39"}, {"cref": "#/texts/40"}, {"cref": "#/texts/41"}, {"cref": "#/texts/42"}, {"cref": "#/texts/43"}, {"cref": "#/texts/44"}, {"cref": "#/texts/45"}, {"cref": "#/texts/46"}, {"cref": "#/texts/47"}, {"cref": "#/texts/48"}, {"cref": "#/texts/49"}, {"cref": "#/texts/50"}, {"cref": "#/texts/51"}, {"cref": "#/texts/52"}, {"cref": "#/texts/53"}, {"cref": "#/texts/54"}, {"cref": "#/texts/55"}, {"cref": "#/texts/56"}, {"cref": "#/texts/57"}, {"cref": "#/texts/58"}, {"cref": "#/pictures/2"}, {"cref": "#/texts/59"}, {"cref": "#/texts/60"}, {"cref": "#/pictures/3"}, {"cref": "#/texts/61"}, {"cref": "#/groups/0"}, {"cref": "#/pictures/4"}, {"cref": "#/texts/66"}, {"cref": "#/texts/67"}, {"cref": "#/texts/68"}, {"cref": "#/texts/69"}, {"cref": "#/texts/70"}, {"cref": "#/texts/71"}, {"cref": "#/texts/72"}, {"cref": "#/texts/73"}, {"cref": "#/texts/74"}, {"cref": "#/groups/1"}, {"cref": "#/texts/84"}, {"cref": "#/texts/85"}, {"cref": "#/groups/2"}, {"cref": "#/texts/90"}, {"cref": "#/texts/91"}, {"cref": "#/texts/92"}, {"cref": "#/texts/93"}, {"cref": "#/texts/94"}, {"cref": "#/pictures/5"}, {"cref": "#/texts/95"}, {"cref": "#/texts/96"}, {"cref": "#/texts/97"}, {"cref": "#/texts/98"}, {"cref": "#/texts/99"}, {"cref": "#/texts/100"}, {"cref": "#/pictures/6"}, {"cref": "#/texts/101"}, {"cref": "#/texts/102"}, {"cref": "#/texts/103"}, {"cref": "#/texts/104"}, {"cref": "#/texts/105"}, {"cref": "#/texts/106"}, {"cref": "#/pictures/7"}, {"cref": "#/pictures/8"}, {"cref": "#/texts/107"}, {"cref": "#/texts/108"}, {"cref": "#/texts/109"}, {"cref": "#/texts/110"}, {"cref": "#/texts/111"}, {"cref": "#/texts/112"}, {"cref": "#/texts/113"}, {"cref": "#/pictures/9"}, {"cref": "#/pictures/10"}, {"cref": "#/pictures/11"}, {"cref": "#/pictures/12"}, {"cref": "#/pictures/13"}, {"cref": "#/texts/114"}, {"cref": "#/texts/115"}, {"cref": "#/texts/116"}, {"cref": "#/texts/117"}, {"cref": "#/texts/118"}, {"cref": "#/pictures/14"}, {"cref": "#/pictures/15"}, {"cref": "#/texts/119"}, {"cref": "#/texts/120"}, {"cref": "#/texts/121"}, {"cref": "#/texts/122"}, {"cref": "#/texts/123"}, {"cref": "#/texts/124"}, {"cref": "#/texts/125"}, {"cref": "#/texts/126"}, {"cref": "#/texts/127"}, {"cref": "#/texts/128"}, {"cref": "#/texts/129"}, {"cref": "#/texts/130"}, {"cref": "#/texts/131"}, {"cref": "#/groups/3"}, {"cref": "#/texts/133"}, {"cref": "#/texts/134"}, {"cref": "#/texts/135"}, {"cref": "#/texts/136"}, {"cref": "#/texts/137"}, {"cref": "#/groups/4"}, {"cref": "#/texts/139"}, {"cref": "#/groups/5"}, {"cref": "#/texts/141"}, {"cref": "#/texts/142"}, {"cref": "#/groups/6"}, {"cref": "#/texts/144"}, {"cref": "#/groups/7"}, {"cref": "#/texts/146"}, {"cref": "#/groups/8"}, {"cref": "#/texts/148"}, {"cref": "#/groups/9"}, {"cref": "#/texts/150"}, {"cref": "#/groups/10"}, {"cref": "#/texts/152"}, {"cref": "#/pictures/16"}, {"cref": "#/texts/153"}, {"cref": "#/texts/154"}, {"cref": "#/texts/155"}, {"cref": "#/texts/156"}, {"cref": "#/texts/157"}, {"cref": "#/texts/158"}, {"cref": "#/groups/11"}, {"cref": "#/texts/162"}, {"cref": "#/texts/163"}, {"cref": "#/texts/164"}, {"cref": "#/texts/165"}, {"cref": "#/texts/166"}, {"cref": "#/texts/167"}, {"cref": "#/groups/12"}, {"cref": "#/texts/170"}, {"cref": "#/groups/13"}, {"cref": "#/texts/172"}, {"cref": "#/texts/173"}, {"cref": "#/texts/174"}, {"cref": "#/texts/175"}, {"cref": "#/texts/176"}, {"cref": "#/texts/177"}, {"cref": "#/texts/178"}, {"cref": "#/texts/179"}, {"cref": "#/texts/180"}, {"cref": "#/texts/181"}, {"cref": "#/texts/182"}, {"cref": "#/texts/183"}, {"cref": "#/texts/184"}, {"cref": "#/texts/185"}, {"cref": "#/pictures/17"}, {"cref": "#/texts/186"}, {"cref": "#/texts/187"}, {"cref": "#/texts/188"}, {"cref": "#/texts/189"}, {"cref": "#/texts/190"}, {"cref": "#/texts/191"}, {"cref": "#/texts/192"}, {"cref": "#/texts/193"}, {"cref": "#/texts/194"}, {"cref": "#/texts/195"}, {"cref": "#/pictures/18"}, {"cref": "#/texts/196"}, {"cref": "#/texts/197"}, {"cref": "#/texts/198"}, {"cref": "#/texts/199"}, {"cref": "#/texts/200"}, {"cref": "#/texts/201"}, {"cref": "#/texts/202"}, {"cref": "#/pictures/19"}, {"cref": "#/texts/203"}, {"cref": "#/texts/204"}, {"cref": "#/texts/205"}, {"cref": "#/texts/206"}, {"cref": "#/texts/207"}, {"cref": "#/texts/208"}, {"cref": "#/groups/14"}, {"cref": "#/texts/211"}, {"cref": "#/texts/212"}, {"cref": "#/texts/213"}, {"cref": "#/texts/214"}, {"cref": "#/texts/215"}, {"cref": "#/texts/216"}, {"cref": "#/groups/15"}, {"cref": "#/texts/222"}, {"cref": "#/texts/223"}, {"cref": "#/texts/224"}, {"cref": "#/texts/225"}, {"cref": "#/texts/226"}, {"cref": "#/texts/227"}, {"cref": "#/texts/228"}, {"cref": "#/texts/229"}, {"cref": "#/texts/230"}, {"cref": "#/texts/231"}, {"cref": "#/texts/232"}, {"cref": "#/texts/233"}, {"cref": "#/texts/234"}, {"cref": "#/texts/235"}, {"cref": "#/texts/236"}, {"cref": "#/texts/237"}, {"cref": "#/texts/238"}, {"cref": "#/texts/239"}, {"cref": "#/texts/240"}, {"cref": "#/texts/241"}, {"cref": "#/texts/242"}, {"cref": "#/texts/243"}, {"cref": "#/texts/244"}, {"cref": "#/texts/245"}, {"cref": "#/texts/246"}, {"cref": "#/texts/247"}, {"cref": "#/texts/248"}, {"cref": "#/texts/249"}, {"cref": "#/texts/250"}, {"cref": "#/groups/16"}, {"cref": "#/texts/254"}, {"cref": "#/texts/255"}, {"cref": "#/texts/256"}, {"cref": "#/texts/257"}, {"cref": "#/texts/258"}, {"cref": "#/tables/3"}, {"cref": "#/texts/259"}, {"cref": "#/texts/260"}, {"cref": "#/texts/261"}, {"cref": "#/texts/262"}, {"cref": "#/texts/263"}, {"cref": "#/texts/264"}, {"cref": "#/texts/265"}, {"cref": "#/texts/266"}, {"cref": "#/texts/267"}, {"cref": "#/texts/268"}, {"cref": "#/texts/269"}, {"cref": "#/texts/270"}, {"cref": "#/texts/271"}, {"cref": "#/texts/272"}, {"cref": "#/tables/4"}, {"cref": "#/texts/273"}, {"cref": "#/texts/274"}, {"cref": "#/tables/5"}, {"cref": "#/texts/275"}, {"cref": "#/texts/276"}, {"cref": "#/pictures/20"}, {"cref": "#/texts/277"}, {"cref": "#/texts/278"}, {"cref": "#/texts/279"}, {"cref": "#/texts/280"}, {"cref": "#/texts/281"}, {"cref": "#/groups/17"}, {"cref": "#/texts/288"}, {"cref": "#/texts/289"}, {"cref": "#/texts/290"}, {"cref": "#/texts/291"}, {"cref": "#/texts/292"}, {"cref": "#/groups/18"}, {"cref": "#/texts/295"}, {"cref": "#/texts/296"}, {"cref": "#/texts/297"}, {"cref": "#/texts/298"}, {"cref": "#/texts/299"}, {"cref": "#/texts/300"}, {"cref": "#/texts/301"}, {"cref": "#/texts/302"}, {"cref": "#/texts/303"}, {"cref": "#/texts/304"}, {"cref": "#/texts/305"}, {"cref": "#/texts/306"}, {"cref": "#/pictures/21"}, {"cref": "#/texts/307"}, {"cref": "#/texts/308"}, {"cref": "#/texts/309"}, {"cref": "#/texts/310"}, {"cref": "#/texts/311"}, {"cref": "#/texts/312"}, {"cref": "#/texts/313"}, {"cref": "#/texts/314"}, {"cref": "#/pictures/22"}, {"cref": "#/texts/315"}, {"cref": "#/texts/316"}, {"cref": "#/texts/317"}, {"cref": "#/texts/318"}, {"cref": "#/texts/319"}, {"cref": "#/pictures/23"}, {"cref": "#/texts/320"}, {"cref": "#/texts/321"}, {"cref": "#/texts/322"}, {"cref": "#/pictures/24"}, {"cref": "#/texts/323"}, {"cref": "#/texts/324"}, {"cref": "#/texts/325"}, {"cref": "#/texts/326"}, {"cref": "#/texts/327"}, {"cref": "#/texts/328"}, {"cref": "#/texts/329"}, {"cref": "#/texts/330"}, {"cref": "#/texts/331"}, {"cref": "#/texts/332"}, {"cref": "#/texts/333"}, {"cref": "#/texts/334"}, {"cref": "#/groups/19"}, {"cref": "#/texts/339"}, {"cref": "#/texts/340"}, {"cref": "#/texts/341"}, {"cref": "#/tables/6"}, {"cref": "#/texts/342"}, {"cref": "#/groups/20"}, {"cref": "#/texts/348"}, {"cref": "#/pictures/25"}, {"cref": "#/texts/349"}, {"cref": "#/texts/350"}, {"cref": "#/texts/351"}, {"cref": "#/texts/352"}, {"cref": "#/texts/353"}, {"cref": "#/texts/354"}, {"cref": "#/texts/355"}, {"cref": "#/texts/356"}, {"cref": "#/texts/357"}, {"cref": "#/tables/7"}, {"cref": "#/texts/358"}, {"cref": "#/texts/359"}, {"cref": "#/texts/360"}, {"cref": "#/texts/361"}, {"cref": "#/groups/21"}, {"cref": "#/texts/365"}, {"cref": "#/texts/366"}, {"cref": "#/texts/367"}, {"cref": "#/texts/368"}, {"cref": "#/texts/369"}, {"cref": "#/texts/370"}, {"cref": "#/texts/371"}, {"cref": "#/texts/372"}, {"cref": "#/texts/373"}, {"cref": "#/texts/374"}, {"cref": "#/texts/375"}, {"cref": "#/texts/376"}, {"cref": "#/texts/377"}, {"cref": "#/texts/378"}, {"cref": "#/texts/379"}, {"cref": "#/texts/380"}, {"cref": "#/texts/381"}, {"cref": "#/texts/382"}, {"cref": "#/texts/383"}, {"cref": "#/texts/384"}, {"cref": "#/texts/385"}, {"cref": "#/texts/386"}, {"cref": "#/texts/387"}, {"cref": "#/texts/388"}, {"cref": "#/texts/389"}, {"cref": "#/texts/390"}, {"cref": "#/texts/391"}, {"cref": "#/texts/392"}, {"cref": "#/groups/22"}, {"cref": "#/texts/395"}, {"cref": "#/groups/23"}, {"cref": "#/texts/400"}, {"cref": "#/texts/401"}, {"cref": "#/texts/402"}, {"cref": "#/groups/24"}, {"cref": "#/texts/404"}, {"cref": "#/texts/405"}, {"cref": "#/groups/25"}, {"cref": "#/texts/407"}, {"cref": "#/texts/408"}, {"cref": "#/groups/26"}, {"cref": "#/texts/410"}, {"cref": "#/texts/411"}, {"cref": "#/texts/412"}, {"cref": "#/groups/27"}, {"cref": "#/texts/417"}, {"cref": "#/texts/418"}, {"cref": "#/texts/419"}, {"cref": "#/texts/420"}, {"cref": "#/texts/421"}, {"cref": "#/texts/422"}, {"cref": "#/texts/423"}, {"cref": "#/groups/28"}, {"cref": "#/texts/425"}, {"cref": "#/texts/426"}, {"cref": "#/texts/427"}, {"cref": "#/groups/29"}, {"cref": "#/texts/429"}, {"cref": "#/texts/430"}, {"cref": "#/texts/431"}, {"cref": "#/texts/432"}, {"cref": "#/pictures/26"}, {"cref": "#/groups/30"}, {"cref": "#/texts/434"}, {"cref": "#/texts/435"}, {"cref": "#/texts/436"}, {"cref": "#/texts/437"}, {"cref": "#/texts/438"}, {"cref": "#/texts/439"}, {"cref": "#/groups/31"}, {"cref": "#/texts/445"}, {"cref": "#/texts/446"}, {"cref": "#/texts/447"}, {"cref": "#/texts/448"}, {"cref": "#/texts/449"}, {"cref": "#/texts/450"}, {"cref": "#/texts/451"}, {"cref": "#/groups/32"}, {"cref": "#/texts/453"}, {"cref": "#/pictures/27"}, {"cref": "#/texts/454"}, {"cref": "#/texts/455"}, {"cref": "#/groups/33"}, {"cref": "#/texts/460"}, {"cref": "#/texts/461"}, {"cref": "#/texts/462"}, {"cref": "#/texts/463"}, {"cref": "#/texts/464"}, {"cref": "#/groups/34"}, {"cref": "#/texts/471"}, {"cref": "#/texts/472"}, {"cref": "#/texts/473"}, {"cref": "#/texts/474"}, {"cref": "#/groups/35"}, {"cref": "#/texts/476"}, {"cref": "#/pictures/28"}, {"cref": "#/texts/477"}, {"cref": "#/texts/478"}, {"cref": "#/groups/36"}, {"cref": "#/texts/480"}, {"cref": "#/groups/37"}, {"cref": "#/texts/482"}, {"cref": "#/texts/483"}, {"cref": "#/groups/38"}, {"cref": "#/texts/485"}, {"cref": "#/pictures/29"}, {"cref": "#/texts/486"}, {"cref": "#/texts/487"}, {"cref": "#/groups/39"}, {"cref": "#/texts/489"}, {"cref": "#/pictures/30"}, {"cref": "#/texts/490"}, {"cref": "#/texts/491"}, {"cref": "#/groups/40"}, {"cref": "#/texts/493"}, {"cref": "#/texts/494"}, {"cref": "#/groups/41"}, {"cref": "#/texts/496"}, {"cref": "#/pictures/31"}, {"cref": "#/groups/42"}, {"cref": "#/texts/498"}, {"cref": "#/pictures/32"}, {"cref": "#/texts/499"}, {"cref": "#/texts/500"}, {"cref": "#/texts/501"}, {"cref": "#/texts/502"}, {"cref": "#/groups/43"}, {"cref": "#/texts/504"}, {"cref": "#/pictures/33"}, {"cref": "#/groups/44"}, {"cref": "#/texts/506"}, {"cref": "#/pictures/34"}, {"cref": "#/texts/507"}, {"cref": "#/groups/45"}, {"cref": "#/texts/509"}, {"cref": "#/texts/510"}, {"cref": "#/groups/46"}, {"cref": "#/texts/512"}, {"cref": "#/groups/47"}, {"cref": "#/texts/514"}, {"cref": "#/groups/48"}, {"cref": "#/texts/516"}, {"cref": "#/texts/517"}, {"cref": "#/texts/518"}, {"cref": "#/texts/519"}, {"cref": "#/texts/520"}, {"cref": "#/groups/49"}, {"cref": "#/texts/522"}, {"cref": "#/texts/523"}, {"cref": "#/texts/524"}, {"cref": "#/groups/50"}, {"cref": "#/texts/526"}, {"cref": "#/groups/51"}, {"cref": "#/texts/528"}, {"cref": "#/texts/529"}, {"cref": "#/texts/530"}, {"cref": "#/texts/531"}, {"cref": "#/texts/532"}, {"cref": "#/texts/533"}, {"cref": "#/texts/534"}, {"cref": "#/texts/535"}, {"cref": "#/texts/536"}, {"cref": "#/texts/537"}, {"cref": "#/texts/538"}, {"cref": "#/texts/539"}, {"cref": "#/groups/52"}, {"cref": "#/texts/541"}, {"cref": "#/texts/542"}, {"cref": "#/texts/543"}, {"cref": "#/groups/53"}, {"cref": "#/texts/545"}, {"cref": "#/groups/54"}, {"cref": "#/texts/547"}, {"cref": "#/texts/548"}, {"cref": "#/texts/549"}, {"cref": "#/groups/55"}, {"cref": "#/texts/551"}, {"cref": "#/texts/552"}, {"cref": "#/texts/553"}, {"cref": "#/texts/554"}, {"cref": "#/texts/555"}, {"cref": "#/texts/556"}, {"cref": "#/pictures/35"}, {"cref": "#/texts/557"}, {"cref": "#/texts/558"}, {"cref": "#/texts/559"}, {"cref": "#/texts/560"}, {"cref": "#/texts/561"}, {"cref": "#/groups/56"}, {"cref": "#/texts/565"}, {"cref": "#/texts/566"}, {"cref": "#/texts/567"}, {"cref": "#/texts/568"}, {"cref": "#/groups/57"}, {"cref": "#/texts/572"}, {"cref": "#/texts/573"}, {"cref": "#/texts/574"}, {"cref": "#/texts/575"}, {"cref": "#/texts/576"}, {"cref": "#/texts/577"}, {"cref": "#/texts/578"}, {"cref": "#/texts/579"}, {"cref": "#/groups/58"}, {"cref": "#/texts/583"}, {"cref": "#/pictures/36"}, {"cref": "#/texts/584"}, {"cref": "#/texts/585"}, {"cref": "#/groups/59"}, {"cref": "#/texts/592"}, {"cref": "#/texts/593"}, {"cref": "#/texts/594"}, {"cref": "#/texts/595"}, {"cref": "#/texts/596"}, {"cref": "#/texts/597"}, {"cref": "#/pictures/37"}, {"cref": "#/texts/598"}, {"cref": "#/texts/599"}, {"cref": "#/tables/8"}, {"cref": "#/texts/600"}, {"cref": "#/groups/60"}, {"cref": "#/texts/608"}, {"cref": "#/texts/609"}, {"cref": "#/texts/610"}, {"cref": "#/texts/611"}, {"cref": "#/texts/612"}, {"cref": "#/pictures/38"}, {"cref": "#/texts/613"}, {"cref": "#/groups/61"}, {"cref": "#/texts/625"}, {"cref": "#/texts/626"}, {"cref": "#/texts/627"}, {"cref": "#/pictures/39"}, {"cref": "#/texts/628"}, {"cref": "#/texts/629"}, {"cref": "#/texts/630"}, {"cref": "#/texts/631"}, {"cref": "#/groups/62"}, {"cref": "#/texts/634"}, {"cref": "#/pictures/40"}, {"cref": "#/groups/63"}, {"cref": "#/texts/636"}, {"cref": "#/texts/637"}, {"cref": "#/texts/638"}, {"cref": "#/texts/639"}, {"cref": "#/texts/640"}, {"cref": "#/groups/64"}, {"cref": "#/texts/642"}, {"cref": "#/pictures/41"}, {"cref": "#/groups/65"}, {"cref": "#/texts/644"}, {"cref": "#/pictures/42"}, {"cref": "#/groups/66"}, {"cref": "#/texts/646"}, {"cref": "#/groups/67"}, {"cref": "#/texts/648"}, {"cref": "#/pictures/43"}, {"cref": "#/texts/649"}, {"cref": "#/texts/650"}, {"cref": "#/groups/68"}, {"cref": "#/texts/652"}, {"cref": "#/pictures/44"}, {"cref": "#/groups/69"}, {"cref": "#/texts/654"}, {"cref": "#/groups/70"}, {"cref": "#/texts/656"}, {"cref": "#/pictures/45"}, {"cref": "#/texts/657"}, {"cref": "#/texts/658"}, {"cref": "#/texts/659"}, {"cref": "#/texts/660"}, {"cref": "#/texts/661"}, {"cref": "#/texts/662"}, {"cref": "#/groups/71"}, {"cref": "#/texts/664"}, {"cref": "#/pictures/46"}, {"cref": "#/texts/665"}, {"cref": "#/texts/666"}, {"cref": "#/texts/667"}, {"cref": "#/texts/668"}, {"cref": "#/groups/72"}, {"cref": "#/texts/670"}, {"cref": "#/pictures/47"}, {"cref": "#/groups/73"}, {"cref": "#/texts/672"}, {"cref": "#/pictures/48"}, {"cref": "#/groups/74"}, {"cref": "#/texts/674"}, {"cref": "#/pictures/49"}, {"cref": "#/groups/75"}, {"cref": "#/texts/676"}, {"cref": "#/pictures/50"}, {"cref": "#/texts/677"}, {"cref": "#/texts/678"}, {"cref": "#/texts/679"}, {"cref": "#/texts/680"}, {"cref": "#/groups/76"}, {"cref": "#/texts/682"}, {"cref": "#/pictures/51"}, {"cref": "#/texts/683"}, {"cref": "#/texts/684"}, {"cref": "#/texts/685"}, {"cref": "#/groups/77"}, {"cref": "#/texts/687"}, {"cref": "#/pictures/52"}, {"cref": "#/groups/78"}, {"cref": "#/texts/689"}, {"cref": "#/texts/690"}, {"cref": "#/pictures/53"}, {"cref": "#/groups/79"}, {"cref": "#/texts/692"}, {"cref": "#/pictures/54"}, {"cref": "#/texts/693"}, {"cref": "#/texts/694"}, {"cref": "#/texts/695"}, {"cref": "#/texts/696"}, {"cref": "#/texts/697"}, {"cref": "#/groups/80"}, {"cref": "#/texts/699"}, {"cref": "#/pictures/55"}, {"cref": "#/groups/81"}, {"cref": "#/texts/701"}, {"cref": "#/pictures/56"}, {"cref": "#/texts/702"}, {"cref": "#/texts/703"}, {"cref": "#/groups/82"}, {"cref": "#/texts/705"}, {"cref": "#/pictures/57"}, {"cref": "#/groups/83"}, {"cref": "#/texts/707"}, {"cref": "#/pictures/58"}, {"cref": "#/texts/708"}, {"cref": "#/texts/709"}, {"cref": "#/texts/710"}, {"cref": "#/texts/711"}, {"cref": "#/groups/84"}, {"cref": "#/texts/713"}, {"cref": "#/pictures/59"}, {"cref": "#/texts/714"}, {"cref": "#/texts/715"}, {"cref": "#/groups/85"}, {"cref": "#/texts/720"}, {"cref": "#/texts/721"}, {"cref": "#/pictures/60"}, {"cref": "#/texts/722"}, {"cref": "#/texts/723"}, {"cref": "#/groups/86"}, {"cref": "#/texts/728"}, {"cref": "#/texts/729"}, {"cref": "#/pictures/61"}, {"cref": "#/texts/730"}, {"cref": "#/texts/731"}, {"cref": "#/groups/87"}, {"cref": "#/texts/735"}, {"cref": "#/groups/88"}, {"cref": "#/texts/737"}, {"cref": "#/texts/738"}, {"cref": "#/pictures/62"}, {"cref": "#/texts/739"}, {"cref": "#/texts/740"}, {"cref": "#/texts/741"}, {"cref": "#/texts/742"}, {"cref": "#/groups/89"}, {"cref": "#/texts/744"}, {"cref": "#/pictures/63"}, {"cref": "#/texts/745"}, {"cref": "#/texts/746"}, {"cref": "#/groups/90"}, {"cref": "#/texts/748"}, {"cref": "#/pictures/64"}, {"cref": "#/groups/91"}, {"cref": "#/texts/753"}, {"cref": "#/texts/754"}, {"cref": "#/pictures/65"}, {"cref": "#/groups/92"}, {"cref": "#/texts/762"}, {"cref": "#/texts/763"}, {"cref": "#/groups/93"}, {"cref": "#/texts/765"}, {"cref": "#/pictures/66"}, {"cref": "#/texts/766"}, {"cref": "#/texts/767"}, {"cref": "#/texts/768"}, {"cref": "#/groups/94"}, {"cref": "#/texts/770"}, {"cref": "#/pictures/67"}, {"cref": "#/groups/95"}, {"cref": "#/texts/772"}, {"cref": "#/pictures/68"}, {"cref": "#/texts/773"}, {"cref": "#/texts/774"}, {"cref": "#/groups/96"}, {"cref": "#/texts/779"}, {"cref": "#/pictures/69"}, {"cref": "#/texts/780"}, {"cref": "#/texts/781"}, {"cref": "#/groups/97"}, {"cref": "#/texts/783"}, {"cref": "#/pictures/70"}, {"cref": "#/groups/98"}, {"cref": "#/texts/785"}, {"cref": "#/pictures/71"}, {"cref": "#/texts/786"}, {"cref": "#/texts/787"}, {"cref": "#/texts/788"}, {"cref": "#/texts/789"}, {"cref": "#/groups/99"}, {"cref": "#/texts/791"}, {"cref": "#/pictures/72"}, {"cref": "#/groups/100"}, {"cref": "#/texts/793"}, {"cref": "#/pictures/73"}, {"cref": "#/texts/794"}, {"cref": "#/texts/795"}, {"cref": "#/groups/101"}, {"cref": "#/texts/797"}, {"cref": "#/pictures/74"}, {"cref": "#/texts/798"}, {"cref": "#/texts/799"}, {"cref": "#/groups/102"}, {"cref": "#/texts/801"}, {"cref": "#/pictures/75"}, {"cref": "#/texts/802"}, {"cref": "#/texts/803"}, {"cref": "#/groups/103"}, {"cref": "#/texts/805"}, {"cref": "#/pictures/76"}, {"cref": "#/groups/104"}, {"cref": "#/texts/807"}, {"cref": "#/pictures/77"}, {"cref": "#/texts/808"}, {"cref": "#/texts/809"}, {"cref": "#/texts/810"}, {"cref": "#/texts/811"}, {"cref": "#/groups/105"}, {"cref": "#/texts/820"}, {"cref": "#/texts/821"}, {"cref": "#/groups/106"}, {"cref": "#/texts/823"}, {"cref": "#/pictures/78"}, {"cref": "#/groups/107"}, {"cref": "#/texts/825"}, {"cref": "#/pictures/79"}, {"cref": "#/texts/826"}, {"cref": "#/texts/827"}, {"cref": "#/groups/108"}, {"cref": "#/texts/829"}, {"cref": "#/texts/830"}, {"cref": "#/texts/831"}, {"cref": "#/groups/109"}, {"cref": "#/texts/833"}, {"cref": "#/pictures/80"}, {"cref": "#/texts/834"}, {"cref": "#/texts/835"}, {"cref": "#/texts/836"}, {"cref": "#/texts/837"}, {"cref": "#/groups/110"}, {"cref": "#/texts/839"}, {"cref": "#/pictures/81"}, {"cref": "#/groups/111"}, {"cref": "#/texts/841"}, {"cref": "#/pictures/82"}, {"cref": "#/texts/842"}, {"cref": "#/texts/843"}, {"cref": "#/groups/112"}, {"cref": "#/texts/845"}, {"cref": "#/pictures/83"}, {"cref": "#/groups/113"}, {"cref": "#/texts/847"}, {"cref": "#/pictures/84"}, {"cref": "#/groups/114"}, {"cref": "#/texts/849"}, {"cref": "#/pictures/85"}, {"cref": "#/texts/850"}, {"cref": "#/texts/851"}, {"cref": "#/texts/852"}, {"cref": "#/texts/853"}, {"cref": "#/texts/854"}, {"cref": "#/texts/855"}, {"cref": "#/groups/115"}, {"cref": "#/texts/857"}, {"cref": "#/pictures/86"}, {"cref": "#/groups/116"}, {"cref": "#/texts/859"}, {"cref": "#/pictures/87"}, {"cref": "#/groups/117"}, {"cref": "#/texts/861"}, {"cref": "#/texts/862"}, {"cref": "#/texts/863"}, {"cref": "#/groups/118"}, {"cref": "#/texts/865"}, {"cref": "#/pictures/88"}, {"cref": "#/texts/866"}, {"cref": "#/texts/867"}, {"cref": "#/texts/868"}, {"cref": "#/texts/869"}, {"cref": "#/groups/119"}, {"cref": "#/texts/871"}, {"cref": "#/pictures/89"}, {"cref": "#/groups/120"}, {"cref": "#/texts/873"}, {"cref": "#/pictures/90"}, {"cref": "#/groups/121"}, {"cref": "#/texts/875"}, {"cref": "#/pictures/91"}, {"cref": "#/groups/122"}, {"cref": "#/texts/877"}, {"cref": "#/pictures/92"}, {"cref": "#/texts/878"}, {"cref": "#/texts/879"}, {"cref": "#/groups/123"}, {"cref": "#/texts/881"}, {"cref": "#/texts/882"}, {"cref": "#/texts/883"}, {"cref": "#/texts/884"}, {"cref": "#/texts/885"}, {"cref": "#/groups/124"}, {"cref": "#/texts/887"}, {"cref": "#/groups/125"}, {"cref": "#/texts/889"}, {"cref": "#/texts/890"}, {"cref": "#/texts/891"}, {"cref": "#/texts/892"}, {"cref": "#/texts/893"}, {"cref": "#/texts/894"}, {"cref": "#/texts/895"}, {"cref": "#/texts/896"}, {"cref": "#/groups/126"}, {"cref": "#/texts/898"}, {"cref": "#/pictures/93"}, {"cref": "#/groups/127"}, {"cref": "#/texts/900"}, {"cref": "#/pictures/94"}, {"cref": "#/groups/128"}, {"cref": "#/texts/902"}, {"cref": "#/pictures/95"}, {"cref": "#/texts/903"}, {"cref": "#/texts/904"}, {"cref": "#/groups/129"}, {"cref": "#/texts/906"}, {"cref": "#/pictures/96"}, {"cref": "#/texts/907"}, {"cref": "#/texts/908"}, {"cref": "#/pictures/97"}, {"cref": "#/texts/909"}, {"cref": "#/texts/910"}, {"cref": "#/texts/911"}, {"cref": "#/texts/912"}, {"cref": "#/texts/913"}, {"cref": "#/texts/914"}, {"cref": "#/groups/130"}, {"cref": "#/texts/919"}, {"cref": "#/texts/920"}, {"cref": "#/texts/921"}, {"cref": "#/texts/922"}, {"cref": "#/texts/923"}, {"cref": "#/groups/131"}, {"cref": "#/texts/927"}, {"cref": "#/texts/928"}, {"cref": "#/texts/929"}, {"cref": "#/texts/930"}, {"cref": "#/texts/931"}, {"cref": "#/groups/132"}, {"cref": "#/texts/937"}, {"cref": "#/texts/938"}, {"cref": "#/groups/133"}, {"cref": "#/texts/945"}, {"cref": "#/texts/946"}, {"cref": "#/texts/947"}, {"cref": "#/texts/948"}, {"cref": "#/texts/949"}, {"cref": "#/texts/950"}, {"cref": "#/texts/951"}, {"cref": "#/texts/952"}, {"cref": "#/texts/953"}, {"cref": "#/texts/954"}, {"cref": "#/texts/955"}, {"cref": "#/pictures/98"}, {"cref": "#/texts/956"}, {"cref": "#/texts/957"}, {"cref": "#/texts/958"}, {"cref": "#/texts/959"}, {"cref": "#/texts/960"}, {"cref": "#/texts/961"}, {"cref": "#/texts/962"}, {"cref": "#/texts/963"}, {"cref": "#/texts/964"}, {"cref": "#/texts/965"}, {"cref": "#/texts/966"}, {"cref": "#/texts/967"}, {"cref": "#/texts/968"}, {"cref": "#/texts/969"}, {"cref": "#/texts/970"}, {"cref": "#/texts/971"}, {"cref": "#/texts/972"}, {"cref": "#/texts/973"}, {"cref": "#/texts/974"}, {"cref": "#/texts/975"}, {"cref": "#/texts/976"}, {"cref": "#/texts/977"}, {"cref": "#/pictures/99"}, {"cref": "#/texts/978"}, {"cref": "#/texts/979"}, {"cref": "#/texts/980"}, {"cref": "#/groups/134"}, {"cref": "#/texts/989"}, {"cref": "#/groups/135"}, {"cref": "#/texts/1000"}, {"cref": "#/texts/1001"}, {"cref": "#/texts/1002"}, {"cref": "#/texts/1003"}, {"cref": "#/texts/1004"}, {"cref": "#/texts/1005"}, {"cref": "#/texts/1006"}, {"cref": "#/texts/1007"}, {"cref": "#/texts/1008"}, {"cref": "#/texts/1009"}, {"cref": "#/texts/1010"}, {"cref": "#/texts/1011"}, {"cref": "#/texts/1012"}, {"cref": "#/texts/1013"}, {"cref": "#/texts/1014"}, {"cref": "#/tables/9"}, {"cref": "#/texts/1015"}, {"cref": "#/tables/10"}, {"cref": "#/texts/1016"}, {"cref": "#/texts/1017"}, {"cref": "#/texts/1018"}, {"cref": "#/texts/1019"}, {"cref": "#/texts/1020"}, {"cref": "#/texts/1021"}, {"cref": "#/pictures/100"}, {"cref": "#/texts/1022"}, {"cref": "#/texts/1023"}, {"cref": "#/texts/1024"}, {"cref": "#/texts/1025"}, {"cref": "#/texts/1026"}, {"cref": "#/pictures/101"}, {"cref": "#/texts/1027"}, {"cref": "#/texts/1028"}, {"cref": "#/texts/1029"}, {"cref": "#/groups/136"}, {"cref": "#/texts/1033"}, {"cref": "#/texts/1034"}, {"cref": "#/texts/1035"}, {"cref": "#/texts/1036"}, {"cref": "#/texts/1037"}, {"cref": "#/texts/1038"}, {"cref": "#/texts/1039"}, {"cref": "#/texts/1040"}, {"cref": "#/pictures/102"}, {"cref": "#/texts/1041"}, {"cref": "#/texts/1042"}, {"cref": "#/texts/1043"}, {"cref": "#/texts/1044"}, {"cref": "#/texts/1045"}, {"cref": "#/texts/1046"}, {"cref": "#/texts/1047"}, {"cref": "#/texts/1048"}, {"cref": "#/texts/1049"}, {"cref": "#/texts/1050"}, {"cref": "#/pictures/103"}, {"cref": "#/texts/1051"}, {"cref": "#/texts/1052"}, {"cref": "#/texts/1053"}, {"cref": "#/texts/1054"}, {"cref": "#/texts/1055"}, {"cref": "#/texts/1056"}, {"cref": "#/texts/1057"}, {"cref": "#/pictures/104"}, {"cref": "#/texts/1058"}, {"cref": "#/texts/1059"}, {"cref": "#/texts/1060"}, {"cref": "#/texts/1061"}, {"cref": "#/texts/1062"}, {"cref": "#/texts/1063"}, {"cref": "#/texts/1064"}, {"cref": "#/texts/1065"}, {"cref": "#/texts/1066"}, {"cref": "#/pictures/105"}, {"cref": "#/texts/1067"}, {"cref": "#/texts/1068"}, {"cref": "#/texts/1069"}, {"cref": "#/pictures/106"}, {"cref": "#/texts/1070"}, {"cref": "#/texts/1071"}, {"cref": "#/texts/1072"}, {"cref": "#/pictures/107"}, {"cref": "#/texts/1073"}, {"cref": "#/texts/1074"}, {"cref": "#/texts/1075"}, {"cref": "#/texts/1076"}, {"cref": "#/texts/1077"}, {"cref": "#/pictures/108"}, {"cref": "#/texts/1078"}, {"cref": "#/texts/1079"}, {"cref": "#/texts/1080"}, {"cref": "#/texts/1081"}, {"cref": "#/texts/1082"}, {"cref": "#/pictures/109"}, {"cref": "#/texts/1083"}, {"cref": "#/texts/1084"}, {"cref": "#/texts/1085"}, {"cref": "#/texts/1086"}, {"cref": "#/texts/1087"}, {"cref": "#/pictures/110"}, {"cref": "#/texts/1088"}, {"cref": "#/texts/1089"}, {"cref": "#/pictures/111"}, {"cref": "#/texts/1090"}, {"cref": "#/texts/1091"}, {"cref": "#/texts/1092"}, {"cref": "#/texts/1093"}, {"cref": "#/texts/1094"}, {"cref": "#/groups/137"}, {"cref": "#/texts/1099"}, {"cref": "#/texts/1100"}, {"cref": "#/texts/1101"}, {"cref": "#/texts/1102"}, {"cref": "#/texts/1103"}, {"cref": "#/texts/1104"}, {"cref": "#/texts/1105"}, {"cref": "#/texts/1106"}, {"cref": "#/texts/1107"}, {"cref": "#/texts/1108"}, {"cref": "#/pictures/112"}, {"cref": "#/texts/1109"}, {"cref": "#/texts/1110"}, {"cref": "#/pictures/113"}, {"cref": "#/texts/1111"}, {"cref": "#/texts/1112"}, {"cref": "#/pictures/114"}, {"cref": "#/texts/1113"}, {"cref": "#/texts/1114"}, {"cref": "#/texts/1115"}, {"cref": "#/texts/1116"}, {"cref": "#/pictures/115"}, {"cref": "#/texts/1117"}, {"cref": "#/texts/1118"}, {"cref": "#/texts/1119"}, {"cref": "#/texts/1120"}, {"cref": "#/texts/1121"}, {"cref": "#/texts/1122"}, {"cref": "#/texts/1123"}, {"cref": "#/texts/1124"}, {"cref": "#/texts/1125"}, {"cref": "#/texts/1126"}, {"cref": "#/texts/1127"}, {"cref": "#/pictures/116"}, {"cref": "#/texts/1128"}, {"cref": "#/texts/1129"}, {"cref": "#/pictures/117"}, {"cref": "#/texts/1130"}, {"cref": "#/texts/1131"}, {"cref": "#/texts/1132"}, {"cref": "#/texts/1133"}, {"cref": "#/texts/1134"}, {"cref": "#/texts/1135"}, {"cref": "#/texts/1136"}, {"cref": "#/texts/1137"}, {"cref": "#/texts/1138"}, {"cref": "#/groups/138"}, {"cref": "#/texts/1159"}, {"cref": "#/groups/139"}, {"cref": "#/texts/1171"}, {"cref": "#/texts/1172"}, {"cref": "#/texts/1173"}, {"cref": "#/texts/1174"}, {"cref": "#/texts/1175"}, {"cref": "#/texts/1176"}, {"cref": "#/texts/1177"}, {"cref": "#/texts/1178"}, {"cref": "#/texts/1179"}, {"cref": "#/pictures/118"}, {"cref": "#/texts/1180"}, {"cref": "#/texts/1181"}, {"cref": "#/texts/1182"}, {"cref": "#/texts/1183"}, {"cref": "#/pictures/119"}, {"cref": "#/texts/1184"}, {"cref": "#/texts/1185"}, {"cref": "#/texts/1186"}, {"cref": "#/texts/1187"}, {"cref": "#/texts/1188"}, {"cref": "#/groups/140"}, {"cref": "#/texts/1190"}, {"cref": "#/texts/1191"}, {"cref": "#/texts/1192"}, {"cref": "#/texts/1193"}, {"cref": "#/texts/1194"}, {"cref": "#/groups/141"}, {"cref": "#/texts/1196"}, {"cref": "#/groups/142"}, {"cref": "#/texts/1198"}, {"cref": "#/groups/143"}, {"cref": "#/texts/1200"}, {"cref": "#/texts/1201"}, {"cref": "#/texts/1202"}, {"cref": "#/groups/144"}, {"cref": "#/texts/1204"}, {"cref": "#/groups/145"}, {"cref": "#/texts/1206"}, {"cref": "#/texts/1207"}, {"cref": "#/texts/1208"}, {"cref": "#/texts/1209"}, {"cref": "#/groups/146"}, {"cref": "#/texts/1213"}, {"cref": "#/texts/1214"}, {"cref": "#/texts/1215"}, {"cref": "#/texts/1216"}, {"cref": "#/texts/1217"}, {"cref": "#/texts/1218"}, {"cref": "#/texts/1219"}, {"cref": "#/texts/1220"}, {"cref": "#/texts/1221"}, {"cref": "#/texts/1222"}, {"cref": "#/texts/1223"}, {"cref": "#/texts/1224"}, {"cref": "#/texts/1225"}, {"cref": "#/texts/1226"}, {"cref": "#/pictures/120"}, {"cref": "#/texts/1227"}, {"cref": "#/texts/1228"}, {"cref": "#/pictures/121"}, {"cref": "#/texts/1229"}, {"cref": "#/texts/1230"}, {"cref": "#/texts/1231"}, {"cref": "#/texts/1232"}, {"cref": "#/groups/147"}, {"cref": "#/texts/1238"}, {"cref": "#/texts/1239"}, {"cref": "#/texts/1240"}, {"cref": "#/groups/148"}, {"cref": "#/texts/1243"}, {"cref": "#/texts/1244"}, {"cref": "#/texts/1245"}, {"cref": "#/texts/1246"}, {"cref": "#/texts/1247"}, {"cref": "#/texts/1248"}, {"cref": "#/texts/1249"}, {"cref": "#/texts/1250"}, {"cref": "#/texts/1251"}, {"cref": "#/texts/1252"}, {"cref": "#/texts/1253"}, {"cref": "#/texts/1254"}, {"cref": "#/texts/1255"}, {"cref": "#/texts/1256"}, {"cref": "#/texts/1257"}, {"cref": "#/texts/1258"}, {"cref": "#/texts/1259"}, {"cref": "#/texts/1260"}, {"cref": "#/texts/1261"}, {"cref": "#/texts/1262"}, {"cref": "#/texts/1263"}, {"cref": "#/texts/1264"}, {"cref": "#/texts/1265"}, {"cref": "#/texts/1266"}, {"cref": "#/texts/1267"}, {"cref": "#/texts/1268"}, {"cref": "#/texts/1269"}, {"cref": "#/texts/1270"}, {"cref": "#/texts/1271"}, {"cref": "#/texts/1272"}, {"cref": "#/texts/1273"}, {"cref": "#/texts/1274"}, {"cref": "#/texts/1275"}, {"cref": "#/texts/1276"}, {"cref": "#/texts/1277"}, {"cref": "#/texts/1278"}, {"cref": "#/texts/1279"}, {"cref": "#/groups/149"}, {"cref": "#/texts/1283"}, {"cref": "#/groups/150"}, {"cref": "#/texts/1286"}, {"cref": "#/texts/1287"}, {"cref": "#/texts/1288"}, {"cref": "#/texts/1289"}, {"cref": "#/pictures/122"}, {"cref": "#/texts/1290"}, {"cref": "#/texts/1291"}, {"cref": "#/texts/1292"}, {"cref": "#/texts/1293"}, {"cref": "#/texts/1294"}, {"cref": "#/texts/1295"}, {"cref": "#/texts/1296"}, {"cref": "#/texts/1297"}, {"cref": "#/pictures/123"}, {"cref": "#/texts/1298"}, {"cref": "#/texts/1299"}, {"cref": "#/texts/1300"}, {"cref": "#/texts/1301"}, {"cref": "#/texts/1302"}, {"cref": "#/groups/151"}, {"cref": "#/texts/1306"}, {"cref": "#/texts/1307"}, {"cref": "#/texts/1308"}, {"cref": "#/texts/1309"}, {"cref": "#/texts/1310"}, {"cref": "#/texts/1311"}, {"cref": "#/texts/1312"}, {"cref": "#/texts/1313"}, {"cref": "#/texts/1314"}, {"cref": "#/texts/1315"}, {"cref": "#/texts/1316"}, {"cref": "#/texts/1317"}, {"cref": "#/texts/1318"}, {"cref": "#/texts/1319"}, {"cref": "#/texts/1320"}, {"cref": "#/texts/1321"}, {"cref": "#/texts/1322"}, {"cref": "#/texts/1323"}, {"cref": "#/texts/1324"}, {"cref": "#/texts/1325"}, {"cref": "#/texts/1326"}, {"cref": "#/texts/1327"}, {"cref": "#/texts/1328"}, {"cref": "#/texts/1329"}, {"cref": "#/texts/1330"}, {"cref": "#/texts/1331"}, {"cref": "#/texts/1332"}, {"cref": "#/texts/1333"}, {"cref": "#/texts/1334"}, {"cref": "#/texts/1335"}, {"cref": "#/pictures/124"}, {"cref": "#/texts/1336"}, {"cref": "#/texts/1337"}, {"cref": "#/texts/1338"}, {"cref": "#/texts/1339"}, {"cref": "#/texts/1340"}, {"cref": "#/texts/1341"}, {"cref": "#/texts/1342"}, {"cref": "#/texts/1343"}, {"cref": "#/texts/1344"}, {"cref": "#/groups/152"}, {"cref": "#/texts/1349"}, {"cref": "#/texts/1350"}, {"cref": "#/texts/1351"}, {"cref": "#/texts/1352"}, {"cref": "#/pictures/125"}, {"cref": "#/texts/1353"}, {"cref": "#/texts/1354"}, {"cref": "#/texts/1355"}, {"cref": "#/texts/1356"}, {"cref": "#/groups/153"}, {"cref": "#/texts/1359"}, {"cref": "#/texts/1360"}, {"cref": "#/texts/1361"}, {"cref": "#/texts/1362"}, {"cref": "#/texts/1363"}, {"cref": "#/texts/1364"}, {"cref": "#/texts/1365"}, {"cref": "#/texts/1366"}, {"cref": "#/groups/154"}, {"cref": "#/texts/1373"}, {"cref": "#/texts/1374"}, {"cref": "#/texts/1375"}, {"cref": "#/texts/1376"}, {"cref": "#/texts/1377"}, {"cref": "#/texts/1378"}, {"cref": "#/texts/1379"}, {"cref": "#/pictures/126"}, {"cref": "#/texts/1380"}, {"cref": "#/texts/1381"}, {"cref": "#/texts/1382"}, {"cref": "#/texts/1383"}, {"cref": "#/texts/1384"}, {"cref": "#/texts/1385"}, {"cref": "#/texts/1386"}, {"cref": "#/texts/1387"}, {"cref": "#/texts/1388"}, {"cref": "#/texts/1389"}, {"cref": "#/texts/1390"}, {"cref": "#/texts/1391"}, {"cref": "#/texts/1392"}, {"cref": "#/texts/1393"}, {"cref": "#/texts/1394"}, {"cref": "#/texts/1395"}, {"cref": "#/texts/1396"}, {"cref": "#/texts/1397"}, {"cref": "#/texts/1398"}, {"cref": "#/texts/1399"}, {"cref": "#/texts/1400"}, {"cref": "#/texts/1401"}, {"cref": "#/texts/1402"}, {"cref": "#/texts/1403"}, {"cref": "#/texts/1404"}, {"cref": "#/texts/1405"}, {"cref": "#/groups/155"}, {"cref": "#/texts/1416"}, {"cref": "#/texts/1417"}, {"cref": "#/groups/156"}, {"cref": "#/texts/1424"}, {"cref": "#/texts/1425"}, {"cref": "#/texts/1426"}, {"cref": "#/texts/1427"}, {"cref": "#/texts/1428"}, {"cref": "#/texts/1429"}, {"cref": "#/texts/1430"}, {"cref": "#/texts/1431"}, {"cref": "#/texts/1432"}, {"cref": "#/texts/1433"}, {"cref": "#/texts/1434"}, {"cref": "#/texts/1435"}, {"cref": "#/texts/1436"}, {"cref": "#/texts/1437"}, {"cref": "#/texts/1438"}, {"cref": "#/texts/1439"}, {"cref": "#/texts/1440"}, {"cref": "#/pictures/127"}, {"cref": "#/pictures/128"}, {"cref": "#/texts/1441"}, {"cref": "#/texts/1442"}, {"cref": "#/texts/1443"}, {"cref": "#/texts/1444"}], "name": "_root_", "label": "unspecified"}, "groups": [{"self_ref": "#/groups/0", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/62"}, {"cref": "#/texts/63"}, {"cref": "#/texts/64"}, {"cref": "#/texts/65"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/1", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/75"}, {"cref": "#/texts/76"}, {"cref": "#/texts/77"}, {"cref": "#/texts/78"}, {"cref": "#/texts/79"}, {"cref": "#/texts/80"}, {"cref": "#/texts/81"}, {"cref": "#/texts/82"}, {"cref": "#/texts/83"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/2", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/86"}, {"cref": "#/texts/87"}, {"cref": "#/texts/88"}, {"cref": "#/texts/89"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/3", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/132"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/4", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/138"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/5", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/140"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/6", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/143"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/7", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/145"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/8", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/147"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/9", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/149"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/10", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/151"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/11", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/159"}, {"cref": "#/texts/160"}, {"cref": "#/texts/161"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/12", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/168"}, {"cref": "#/texts/169"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/13", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/171"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/14", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/209"}, {"cref": "#/texts/210"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/15", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/217"}, {"cref": "#/texts/218"}, {"cref": "#/texts/219"}, {"cref": "#/texts/220"}, {"cref": "#/texts/221"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/16", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/251"}, {"cref": "#/texts/252"}, {"cref": "#/texts/253"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/17", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/282"}, {"cref": "#/texts/283"}, {"cref": "#/texts/284"}, {"cref": "#/texts/285"}, {"cref": "#/texts/286"}, {"cref": "#/texts/287"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/18", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/293"}, {"cref": "#/texts/294"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/19", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/335"}, {"cref": "#/texts/336"}, {"cref": "#/texts/337"}, {"cref": "#/texts/338"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/20", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/343"}, {"cref": "#/texts/344"}, {"cref": "#/texts/345"}, {"cref": "#/texts/346"}, {"cref": "#/texts/347"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/21", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/362"}, {"cref": "#/texts/363"}, {"cref": "#/texts/364"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/22", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/393"}, {"cref": "#/texts/394"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/23", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/396"}, {"cref": "#/texts/397"}, {"cref": "#/texts/398"}, {"cref": "#/texts/399"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/24", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/403"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/25", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/406"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/26", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/409"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/27", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/413"}, {"cref": "#/texts/414"}, {"cref": "#/texts/415"}, {"cref": "#/texts/416"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/28", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/424"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/29", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/428"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/30", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/433"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/31", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/440"}, {"cref": "#/texts/441"}, {"cref": "#/texts/442"}, {"cref": "#/texts/443"}, {"cref": "#/texts/444"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/32", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/452"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/33", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/456"}, {"cref": "#/texts/457"}, {"cref": "#/texts/458"}, {"cref": "#/texts/459"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/34", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/465"}, {"cref": "#/texts/466"}, {"cref": "#/texts/467"}, {"cref": "#/texts/468"}, {"cref": "#/texts/469"}, {"cref": "#/texts/470"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/35", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/475"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/36", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/479"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/37", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/481"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/38", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/484"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/39", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/488"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/40", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/492"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/41", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/495"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/42", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/497"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/43", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/503"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/44", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/505"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/45", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/508"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/46", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/511"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/47", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/513"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/48", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/515"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/49", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/521"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/50", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/525"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/51", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/527"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/52", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/540"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/53", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/544"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/54", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/546"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/55", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/550"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/56", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/562"}, {"cref": "#/texts/563"}, {"cref": "#/texts/564"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/57", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/569"}, {"cref": "#/texts/570"}, {"cref": "#/texts/571"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/58", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/580"}, {"cref": "#/texts/581"}, {"cref": "#/texts/582"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/59", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/586"}, {"cref": "#/texts/587"}, {"cref": "#/texts/588"}, {"cref": "#/texts/589"}, {"cref": "#/texts/590"}, {"cref": "#/texts/591"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/60", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/601"}, {"cref": "#/texts/602"}, {"cref": "#/texts/603"}, {"cref": "#/texts/604"}, {"cref": "#/texts/605"}, {"cref": "#/texts/606"}, {"cref": "#/texts/607"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/61", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/614"}, {"cref": "#/texts/615"}, {"cref": "#/texts/616"}, {"cref": "#/texts/617"}, {"cref": "#/texts/618"}, {"cref": "#/texts/619"}, {"cref": "#/texts/620"}, {"cref": "#/texts/621"}, {"cref": "#/texts/622"}, {"cref": "#/texts/623"}, {"cref": "#/texts/624"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/62", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/632"}, {"cref": "#/texts/633"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/63", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/635"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/64", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/641"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/65", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/643"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/66", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/645"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/67", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/647"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/68", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/651"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/69", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/653"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/70", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/655"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/71", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/663"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/72", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/669"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/73", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/671"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/74", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/673"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/75", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/675"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/76", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/681"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/77", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/686"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/78", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/688"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/79", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/691"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/80", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/698"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/81", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/700"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/82", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/704"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/83", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/706"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/84", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/712"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/85", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/716"}, {"cref": "#/texts/717"}, {"cref": "#/texts/718"}, {"cref": "#/texts/719"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/86", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/724"}, {"cref": "#/texts/725"}, {"cref": "#/texts/726"}, {"cref": "#/texts/727"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/87", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/732"}, {"cref": "#/texts/733"}, {"cref": "#/texts/734"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/88", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/736"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/89", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/743"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/90", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/747"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/91", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/749"}, {"cref": "#/texts/750"}, {"cref": "#/texts/751"}, {"cref": "#/texts/752"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/92", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/755"}, {"cref": "#/texts/756"}, {"cref": "#/texts/757"}, {"cref": "#/texts/758"}, {"cref": "#/texts/759"}, {"cref": "#/texts/760"}, {"cref": "#/texts/761"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/93", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/764"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/94", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/769"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/95", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/771"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/96", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/775"}, {"cref": "#/texts/776"}, {"cref": "#/texts/777"}, {"cref": "#/texts/778"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/97", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/782"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/98", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/784"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/99", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/790"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/100", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/792"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/101", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/796"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/102", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/800"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/103", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/804"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/104", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/806"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/105", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/812"}, {"cref": "#/texts/813"}, {"cref": "#/texts/814"}, {"cref": "#/texts/815"}, {"cref": "#/texts/816"}, {"cref": "#/texts/817"}, {"cref": "#/texts/818"}, {"cref": "#/texts/819"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/106", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/822"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/107", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/824"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/108", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/828"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/109", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/832"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/110", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/838"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/111", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/840"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/112", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/844"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/113", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/846"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/114", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/848"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/115", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/856"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/116", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/858"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/117", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/860"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/118", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/864"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/119", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/870"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/120", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/872"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/121", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/874"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/122", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/876"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/123", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/880"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/124", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/886"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/125", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/888"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/126", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/897"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/127", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/899"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/128", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/901"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/129", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/905"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/130", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/915"}, {"cref": "#/texts/916"}, {"cref": "#/texts/917"}, {"cref": "#/texts/918"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/131", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/924"}, {"cref": "#/texts/925"}, {"cref": "#/texts/926"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/132", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/932"}, {"cref": "#/texts/933"}, {"cref": "#/texts/934"}, {"cref": "#/texts/935"}, {"cref": "#/texts/936"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/133", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/939"}, {"cref": "#/texts/940"}, {"cref": "#/texts/941"}, {"cref": "#/texts/942"}, {"cref": "#/texts/943"}, {"cref": "#/texts/944"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/134", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/981"}, {"cref": "#/texts/982"}, {"cref": "#/texts/983"}, {"cref": "#/texts/984"}, {"cref": "#/texts/985"}, {"cref": "#/texts/986"}, {"cref": "#/texts/987"}, {"cref": "#/texts/988"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/135", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/990"}, {"cref": "#/texts/991"}, {"cref": "#/texts/992"}, {"cref": "#/texts/993"}, {"cref": "#/texts/994"}, {"cref": "#/texts/995"}, {"cref": "#/texts/996"}, {"cref": "#/texts/997"}, {"cref": "#/texts/998"}, {"cref": "#/texts/999"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/136", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/1030"}, {"cref": "#/texts/1031"}, {"cref": "#/texts/1032"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/137", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/1095"}, {"cref": "#/texts/1096"}, {"cref": "#/texts/1097"}, {"cref": "#/texts/1098"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/138", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/1139"}, {"cref": "#/texts/1140"}, {"cref": "#/texts/1141"}, {"cref": "#/texts/1142"}, {"cref": "#/texts/1143"}, {"cref": "#/texts/1144"}, {"cref": "#/texts/1145"}, {"cref": "#/texts/1146"}, {"cref": "#/texts/1147"}, {"cref": "#/texts/1148"}, {"cref": "#/texts/1149"}, {"cref": "#/texts/1150"}, {"cref": "#/texts/1151"}, {"cref": "#/texts/1152"}, {"cref": "#/texts/1153"}, {"cref": "#/texts/1154"}, {"cref": "#/texts/1155"}, {"cref": "#/texts/1156"}, {"cref": "#/texts/1157"}, {"cref": "#/texts/1158"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/139", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/1160"}, {"cref": "#/texts/1161"}, {"cref": "#/texts/1162"}, {"cref": "#/texts/1163"}, {"cref": "#/texts/1164"}, {"cref": "#/texts/1165"}, {"cref": "#/texts/1166"}, {"cref": "#/texts/1167"}, {"cref": "#/texts/1168"}, {"cref": "#/texts/1169"}, {"cref": "#/texts/1170"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/140", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/1189"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/141", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/1195"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/142", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/1197"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/143", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/1199"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/144", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/1203"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/145", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/1205"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/146", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/1210"}, {"cref": "#/texts/1211"}, {"cref": "#/texts/1212"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/147", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/1233"}, {"cref": "#/texts/1234"}, {"cref": "#/texts/1235"}, {"cref": "#/texts/1236"}, {"cref": "#/texts/1237"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/148", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/1241"}, {"cref": "#/texts/1242"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/149", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/1280"}, {"cref": "#/texts/1281"}, {"cref": "#/texts/1282"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/150", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/1284"}, {"cref": "#/texts/1285"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/151", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/1303"}, {"cref": "#/texts/1304"}, {"cref": "#/texts/1305"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/152", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/1345"}, {"cref": "#/texts/1346"}, {"cref": "#/texts/1347"}, {"cref": "#/texts/1348"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/153", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/1357"}, {"cref": "#/texts/1358"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/154", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/1367"}, {"cref": "#/texts/1368"}, {"cref": "#/texts/1369"}, {"cref": "#/texts/1370"}, {"cref": "#/texts/1371"}, {"cref": "#/texts/1372"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/155", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/1406"}, {"cref": "#/texts/1407"}, {"cref": "#/texts/1408"}, {"cref": "#/texts/1409"}, {"cref": "#/texts/1410"}, {"cref": "#/texts/1411"}, {"cref": "#/texts/1412"}, {"cref": "#/texts/1413"}, {"cref": "#/texts/1414"}, {"cref": "#/texts/1415"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/156", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/1418"}, {"cref": "#/texts/1419"}, {"cref": "#/texts/1420"}, {"cref": "#/texts/1421"}, {"cref": "#/texts/1422"}, {"cref": "#/texts/1423"}], "name": "list", "label": "list"}], "texts": [{"self_ref": "#/texts/0", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 1, "bbox": {"l": 287.82000732421875, "t": 763.4519653320312, "r": 418.83355712890625, "b": 741.251953125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 11]}], "orig": "Front cover", "text": "Front cover"}, {"self_ref": "#/texts/1", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 1, "bbox": {"l": 35.68840408325195, "t": 709.605712890625, "r": 584.6428833007812, "b": 625.594482421875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i", "level": 1}, {"self_ref": "#/texts/2", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 1, "bbox": {"l": 35.0073127746582, "t": 497.2061767578125, "r": 216.00064086914062, "b": 466.4394226074219, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 40]}], "orig": "Implement roles and separation of duties", "text": "Implement roles and separation of duties"}, {"self_ref": "#/texts/3", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 1, "bbox": {"l": 34.56448745727539, "t": 443.0459289550781, "r": 202.45404052734375, "b": 412.4388732910156, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 40]}], "orig": "Leverage row permissions on the database", "text": "Leverage row permissions on the database"}, {"self_ref": "#/texts/4", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 1, "bbox": {"l": 35.171409606933594, "t": 389.3459167480469, "r": 195.27529907226562, "b": 358.4383239746094, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 40]}], "orig": "Protect columns by defining column masks", "text": "Protect columns by defining column masks"}, {"self_ref": "#/texts/5", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 1, "bbox": {"l": 36.894657135009766, "t": 42.1337890625, "r": 164.45849609375, "b": 26.895000457763672, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 17]}], "orig": "ibm.com /redbooks", "text": "ibm.com /redbooks"}, {"self_ref": "#/texts/6", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 1, "bbox": {"l": 497.0279846191406, "t": 218.1163330078125, "r": 581.8246459960938, "b": 92.828369140625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 115]}], "orig": "Jim Bainbridge Hernando Bedoya Rob Bestgen Mike Cain Dan Cruikshank Jim Denton Doug Mack Tom McKinley Kent Milligan", "text": "Jim Bainbridge Hernando Bedoya Rob Bestgen Mike Cain Dan Cruikshank Jim Denton Doug Mack Tom McKinley Kent Milligan"}, {"self_ref": "#/texts/7", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 1, "bbox": {"l": 314.70001220703125, "t": 80.49143981933594, "r": 580.52001953125, "b": 18.227041244506836, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 8]}], "orig": "Redpaper", "text": "Redpaper"}, {"self_ref": "#/texts/8", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 3, "bbox": {"l": 192.0, "t": 721.0047607421875, "r": 468.1595153808594, "b": 706.8116455078125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 44]}], "orig": "International Technical Support Organization", "text": "International Technical Support Organization", "level": 1}, {"self_ref": "#/texts/9", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 3, "bbox": {"l": 191.42994689941406, "t": 688.5792236328125, "r": 551.7711181640625, "b": 659.2655639648438, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i", "level": 1}, {"self_ref": "#/texts/10", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 3, "bbox": {"l": 191.8452911376953, "t": 642.7902221679688, "r": 290.98956298828125, "b": 629.265869140625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 13]}], "orig": "November 2014", "text": "November 2014"}, {"self_ref": "#/texts/11", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 3, "bbox": {"l": 479.1854553222656, "t": 38.04693603515625, "r": 547.263671875, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 12]}], "orig": "REDP-5110-00", "text": "REDP-5110-00"}, {"self_ref": "#/texts/12", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 4, "bbox": {"l": 70.31981658935547, "t": 703.502685546875, "r": 511.2250671386719, "b": 680.7681884765625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 111]}], "orig": "Note: Before using this information and the product it supports, read the information in \"Notices\" on page vii.", "text": "Note: Before using this information and the product it supports, read the information in \"Notices\" on page vii."}, {"self_ref": "#/texts/13", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 4, "bbox": {"l": 64.49017333984375, "t": 106.751953125, "r": 206.09754943847656, "b": 96.25506591796875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 29]}], "orig": "First Edition (November 2014)", "text": "First Edition (November 2014)", "level": 1}, {"self_ref": "#/texts/14", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 4, "bbox": {"l": 63.900901794433594, "t": 84.0731201171875, "r": 422.2424621582031, "b": 73.747314453125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 80]}], "orig": "This edition applies to Version 7, Release 2 of IBM i (product number 5770-SS1).", "text": "This edition applies to Version 7, Release 2 of IBM i (product number 5770-SS1)."}, {"self_ref": "#/texts/15", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 4, "bbox": {"l": 63.55229949951172, "t": 54.7935791015625, "r": 426.39117431640625, "b": 45.16082763671875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 82]}], "orig": "' Copyright International Business Machines Corporation 2014. All rights reserved.", "text": "' Copyright International Business Machines Corporation 2014. All rights reserved."}, {"self_ref": "#/texts/16", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 4, "bbox": {"l": 64.10758972167969, "t": 44.3375244140625, "r": 547.2008666992188, "b": 23.57710075378418, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 136]}], "orig": "Note to U.S. Government Users Restricted Rights -- Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.", "text": "Note to U.S. Government Users Restricted Rights -- Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp."}, {"self_ref": "#/texts/17", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 5, "bbox": {"l": 64.6857681274414, "t": 718.98193359375, "r": 168.73440551757812, "b": 695.9519653320312, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 8]}], "orig": "Contents", "text": "Contents", "level": 1}, {"self_ref": "#/texts/18", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 5, "bbox": {"l": 63.751060485839844, "t": 37.30303955078125, "r": 257.24334716796875, "b": 27.8984375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 48]}], "orig": "' Copyright IBM Corp. 2014. All rights reserved.", "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"self_ref": "#/texts/19", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 5, "bbox": {"l": 538.3257446289062, "t": 37.91693115234375, "r": 547.25927734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 3]}], "orig": "iii", "text": "iii"}, {"self_ref": "#/texts/20", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 6, "bbox": {"l": 64.4805679321289, "t": 37.88385009765625, "r": 75.64199829101562, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "iv", "text": "iv"}, {"self_ref": "#/texts/21", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 6, "bbox": {"l": 90.44805145263672, "t": 37.39471435546875, "r": 331.7034606933594, "b": 28.0523681640625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/22", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 7, "bbox": {"l": 488.2200012207031, "t": 37.1326904296875, "r": 529.1115112304688, "b": 28.136999130249023, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 8]}], "orig": "Contents", "text": "Contents"}, {"self_ref": "#/texts/23", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 7, "bbox": {"l": 540.8323974609375, "t": 37.15127944946289, "r": 547.3976440429688, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 1]}], "orig": "v", "text": "v"}, {"self_ref": "#/texts/24", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 8, "bbox": {"l": 64.35196685791016, "t": 37.79052734375, "r": 75.64199829101562, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "vi", "text": "vi"}, {"self_ref": "#/texts/25", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 8, "bbox": {"l": 90.52510833740234, "t": 37.53863525390625, "r": 331.7355651855469, "b": 27.85345458984375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/26", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 9, "bbox": {"l": 64.80000305175781, "t": 719.0535888671875, "r": 151.5048065185547, "b": 695.9519653320312, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 7]}], "orig": "Notices", "text": "Notices", "level": 1}, {"self_ref": "#/texts/27", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 9, "bbox": {"l": 63.85922622680664, "t": 660.0452880859375, "r": 413.7007141113281, "b": 650.037109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 78]}], "orig": "This information was developed for products and services offered in the U.S.A.", "text": "This information was developed for products and services offered in the U.S.A."}, {"self_ref": "#/texts/28", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 9, "bbox": {"l": 64.08584594726562, "t": 640.2033081054688, "r": 547.235595703125, "b": 579.486572265625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 625]}], "orig": "IBM may not offer the products, services, or features discussed in this document in other countries. Consult your local IBM representative for information on the products and services currently available in your area. Any reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, program, or service may be used. Any functionally equivalent product, program, or service that does not infringe any IBM intellectual property right may be used instead. However, it is the user's responsibility to evaluate and verify the operation of any non-IBM product, program, or service.", "text": "IBM may not offer the products, services, or features discussed in this document in other countries. Consult your local IBM representative for information on the products and services currently available in your area. Any reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, program, or service may be used. Any functionally equivalent product, program, or service that does not infringe any IBM intellectual property right may be used instead. However, it is the user's responsibility to evaluate and verify the operation of any non-IBM product, program, or service."}, {"self_ref": "#/texts/29", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 9, "bbox": {"l": 64.23300170898438, "t": 570.0869140625, "r": 547.2992553710938, "b": 540.159912109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 232]}], "orig": "IBM may have patents or pending patent applications covering subject matter described in this document. The furnishing of this document does not grant you any license to these patents. You can send license inquiries, in writing, to:", "text": "IBM may have patents or pending patent applications covering subject matter described in this document. The furnishing of this document does not grant you any license to these patents. You can send license inquiries, in writing, to:"}, {"self_ref": "#/texts/30", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 9, "bbox": {"l": 64.32848358154297, "t": 540.1092529296875, "r": 489.1996154785156, "b": 529.6168212890625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 92]}], "orig": "IBM Director of Licensing, IBM Corporation, North Castle Drive, Armonk, NY 10504-1785 U.S.A.", "text": "IBM Director of Licensing, IBM Corporation, North Castle Drive, Armonk, NY 10504-1785 U.S.A."}, {"self_ref": "#/texts/31", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 9, "bbox": {"l": 63.91102600097656, "t": 520.1630249023438, "r": 547.1917114257812, "b": 459.743408203125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 541]}], "orig": "The following paragraph does not apply to the United Kingdom or any other country where such provisions are inconsistent with local law: INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states do not allow disclaimer of express or implied warranties in certain transactions, therefore, this statement may not apply to you.", "text": "The following paragraph does not apply to the United Kingdom or any other country where such provisions are inconsistent with local law: INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states do not allow disclaimer of express or implied warranties in certain transactions, therefore, this statement may not apply to you."}, {"self_ref": "#/texts/32", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 9, "bbox": {"l": 63.85258865356445, "t": 449.9327087402344, "r": 547.2783813476562, "b": 410.14208984375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 345]}], "orig": "This information could include technical inaccuracies or typographical errors. Changes are periodically made to the information herein; these changes will be incorporated in new editions of the publication. IBM may make improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time without notice.", "text": "This information could include technical inaccuracies or typographical errors. Changes are periodically made to the information herein; these changes will be incorporated in new editions of the publication. IBM may make improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time without notice."}, {"self_ref": "#/texts/33", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 9, "bbox": {"l": 64.01903533935547, "t": 400.0287780761719, "r": 539.7974243164062, "b": 369.8486633300781, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 286]}], "orig": "Any references in this information to non-IBM websites are provided for convenience only and do not in any manner serve as an endorsement of those websites. The materials at those websites are not part of the materials for this IBM product and use of those websites is at your own risk.", "text": "Any references in this information to non-IBM websites are provided for convenience only and do not in any manner serve as an endorsement of those websites. The materials at those websites are not part of the materials for this IBM product and use of those websites is at your own risk."}, {"self_ref": "#/texts/34", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 9, "bbox": {"l": 64.25189208984375, "t": 359.9352111816406, "r": 547.1986694335938, "b": 339.6141662597656, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 135]}], "orig": "IBM may use or distribute any of the information you supply in any way it believes appropriate without incurring any obligation to you.", "text": "IBM may use or distribute any of the information you supply in any way it believes appropriate without incurring any obligation to you."}, {"self_ref": "#/texts/35", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 9, "bbox": {"l": 64.00050354003906, "t": 329.7486267089844, "r": 544.1587524414062, "b": 270.11480712890625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 526]}], "orig": "Any performance data contained herein was determined in a controlled environment. Therefore, the results obtained in other operating environments may vary significantly. Some measurements may have been made on development-level systems and there is no guarantee that these measurements will be the same on generally available systems. Furthermore, some measurements may have been estimated through extrapolation. Actual results may vary. Users of this document should verify the applicable data for their specific environment.", "text": "Any performance data contained herein was determined in a controlled environment. Therefore, the results obtained in other operating environments may vary significantly. Some measurements may have been made on development-level systems and there is no guarantee that these measurements will be the same on generally available systems. Furthermore, some measurements may have been estimated through extrapolation. Actual results may vary. Users of this document should verify the applicable data for their specific environment."}, {"self_ref": "#/texts/36", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 9, "bbox": {"l": 64.13472747802734, "t": 259.93731689453125, "r": 547.231689453125, "b": 219.73095703125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 408]}], "orig": "Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly available sources. IBM has not tested those products and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products.", "text": "Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly available sources. IBM has not tested those products and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products."}, {"self_ref": "#/texts/37", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 9, "bbox": {"l": 63.89973449707031, "t": 209.7525634765625, "r": 545.7865600585938, "b": 169.85992431640625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 359]}], "orig": "This information contains examples of data and reports used in daily business operations. To illustrate them as completely as possible, the examples include the names of individuals, companies, brands, and products. All of these names are fictitious and any similarity to the names and addresses used by an actual business enterprise is entirely coincidental.", "text": "This information contains examples of data and reports used in daily business operations. To illustrate them as completely as possible, the examples include the names of individuals, companies, brands, and products. All of these names are fictitious and any similarity to the names and addresses used by an actual business enterprise is entirely coincidental."}, {"self_ref": "#/texts/38", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 9, "bbox": {"l": 64.30471801757812, "t": 160.33880615234375, "r": 172.49951171875, "b": 150.16415405273438, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 18]}], "orig": "COPYRIGHT LICENSE:", "text": "COPYRIGHT LICENSE:", "level": 1}, {"self_ref": "#/texts/39", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 9, "bbox": {"l": 63.98580551147461, "t": 140.032958984375, "r": 547.2437744140625, "b": 79.4564208984375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 619]}], "orig": "This information contains sample application programs in source language, which illustrate programming techniques on various operating platforms. You may copy, modify, and distribute these sample programs in any form without payment to IBM, for the purposes of developing, using, marketing or distributing application programs conforming to the application programming interface for the operating platform for which the sample programs are written. These examples have not been thoroughly tested under all conditions. IBM, therefore, cannot guarantee or imply reliability, serviceability, or function of these programs.", "text": "This information contains sample application programs in source language, which illustrate programming techniques on various operating platforms. You may copy, modify, and distribute these sample programs in any form without payment to IBM, for the purposes of developing, using, marketing or distributing application programs conforming to the application programming interface for the operating platform for which the sample programs are written. These examples have not been thoroughly tested under all conditions. IBM, therefore, cannot guarantee or imply reliability, serviceability, or function of these programs."}, {"self_ref": "#/texts/40", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 9, "bbox": {"l": 63.6475715637207, "t": 37.2679443359375, "r": 257.24334716796875, "b": 27.83892822265625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 48]}], "orig": "' Copyright IBM Corp. 2014. All rights reserved.", "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"self_ref": "#/texts/41", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 9, "bbox": {"l": 535.3445434570312, "t": 37.6517333984375, "r": 547.250244140625, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 3]}], "orig": "vii", "text": "vii"}, {"self_ref": "#/texts/42", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 10, "bbox": {"l": 64.09756469726562, "t": 721.870849609375, "r": 154.14569091796875, "b": 706.0162963867188, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 10]}], "orig": "Trademarks", "text": "Trademarks", "level": 1}, {"self_ref": "#/texts/43", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 10, "bbox": {"l": 64.14087677001953, "t": 689.2691040039062, "r": 547.2604370117188, "b": 629.2591552734375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 591]}], "orig": "IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines Corporation in the United States, other countries, or both. These and other IBM trademarked terms are marked on their first occurrence in this information with the appropriate symbol (fi or \u2122), indicating US registered or common law trademarks owned by IBM at the time this information was published. Such trademarks may also be registered or common law trademarks in other countries. A current list of IBM trademarks is available on the Web at http://www.ibm.com/legal/copytrade.shtml", "text": "IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines Corporation in the United States, other countries, or both. These and other IBM trademarked terms are marked on their first occurrence in this information with the appropriate symbol (fi or \u2122), indicating US registered or common law trademarks owned by IBM at the time this information was published. Such trademarks may also be registered or common law trademarks in other countries. A current list of IBM trademarks is available on the Web at http://www.ibm.com/legal/copytrade.shtml"}, {"self_ref": "#/texts/44", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 10, "bbox": {"l": 63.81353759765625, "t": 619.277587890625, "r": 546.6150512695312, "b": 599.2596435546875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 133]}], "orig": "The following terms are trademarks of the International Business Machines Corporation in the United States, other countries, or both:", "text": "The following terms are trademarks of the International Business Machines Corporation in the United States, other countries, or both:"}, {"self_ref": "#/texts/45", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 10, "bbox": {"l": 75.01971435546875, "t": 591.0765380859375, "r": 112.14369201660156, "b": 581.1570434570312, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 8]}], "orig": "AS/400fi", "text": "AS/400fi"}, {"self_ref": "#/texts/46", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 10, "bbox": {"l": 75.20001220703125, "t": 580.0547485351562, "r": 100.03594970703125, "b": 570.1167602539062, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 5]}], "orig": "DB2fi", "text": "DB2fi"}, {"self_ref": "#/texts/47", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 10, "bbox": {"l": 75.27558898925781, "t": 568.40380859375, "r": 107.95845794677734, "b": 559.1367797851562, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 6]}], "orig": "DRDAfi", "text": "DRDAfi"}, {"self_ref": "#/texts/48", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 10, "bbox": {"l": 235.85794067382812, "t": 590.7225341796875, "r": 259.61248779296875, "b": 581.1571044921875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 5]}], "orig": "IBMfi", "text": "IBMfi"}, {"self_ref": "#/texts/49", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 10, "bbox": {"l": 235.99562072753906, "t": 579.8333129882812, "r": 307.14569091796875, "b": 570.1168212890625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 14]}], "orig": "Power Systems\u2122", "text": "Power Systems\u2122"}, {"self_ref": "#/texts/50", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 10, "bbox": {"l": 236.1086883544922, "t": 568.2393798828125, "r": 283.57794189453125, "b": 559.1368408203125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 10]}], "orig": "Redbooksfi", "text": "Redbooksfi"}, {"self_ref": "#/texts/51", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 10, "bbox": {"l": 396.9049377441406, "t": 590.8819580078125, "r": 445.7533874511719, "b": 581.1571655273438, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 9]}], "orig": "Redpaper\u2122", "text": "Redpaper\u2122"}, {"self_ref": "#/texts/52", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 10, "bbox": {"l": 397.0493469238281, "t": 579.3828735351562, "r": 464.00567626953125, "b": 569.7461547851562, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 26]}], "orig": "Redbooks (log o) fi System", "text": "Redbooks (log o) fi System"}, {"self_ref": "#/texts/53", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 10, "bbox": {"l": 396.6751708984375, "t": 568.2816162109375, "r": 438.42291259765625, "b": 558.4414672851562, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 3]}], "orig": "ifi", "text": "ifi"}, {"self_ref": "#/texts/54", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 10, "bbox": {"l": 63.997196197509766, "t": 547.1436157226562, "r": 311.9006652832031, "b": 537.2783203125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "The following terms are trademarks of other companies:", "text": "The following terms are trademarks of other companies:"}, {"self_ref": "#/texts/55", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 10, "bbox": {"l": 63.95560073852539, "t": 527.1810302734375, "r": 509.53704833984375, "b": 507.27880859375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 117]}], "orig": "Windows, and the Windows logo are trademarks of Microsoft Corporation in the United States, other countries, or both.", "text": "Windows, and the Windows logo are trademarks of Microsoft Corporation in the United States, other countries, or both."}, {"self_ref": "#/texts/56", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 10, "bbox": {"l": 64.17562103271484, "t": 497.43646240234375, "r": 464.51568603515625, "b": 486.9937438964844, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 86]}], "orig": "Other company, product, or service names may be trademarks or service marks of others.", "text": "Other company, product, or service names may be trademarks or service marks of others."}, {"self_ref": "#/texts/57", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 10, "bbox": {"l": 63.85106658935547, "t": 36.138671875, "r": 81.16200256347656, "b": 26.91827964782715, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 4]}], "orig": "viii", "text": "viii"}, {"self_ref": "#/texts/58", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 10, "bbox": {"l": 95.8013916015625, "t": 36.20538330078125, "r": 337.0337829589844, "b": 26.6639404296875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/59", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 11, "bbox": {"l": 64.80000305175781, "t": 717.5160522460938, "r": 235.86239624023438, "b": 706.416015625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 30]}], "orig": "DB2 for i Center of Excellence", "text": "DB2 for i Center of Excellence"}, {"self_ref": "#/texts/60", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 11, "bbox": {"l": 93.67039489746094, "t": 654.3631591796875, "r": 233.99972534179688, "b": 636.66357421875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 52]}], "orig": "Solution Brief IBM Systems Lab Services and Training", "text": "Solution Brief IBM Systems Lab Services and Training"}, {"self_ref": "#/texts/61", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 11, "bbox": {"l": 144.19781494140625, "t": 464.93798828125, "r": 188.74681091308594, "b": 454.64495849609375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 10]}], "orig": "Highlights", "text": "Highlights", "level": 1}, {"self_ref": "#/texts/62", "parent": {"cref": "#/groups/0"}, "children": [], "label": "list_item", "prov": [{"page_no": 11, "bbox": {"l": 144.4553985595703, "t": 447.962890625, "r": 242.87388610839844, "b": 433.3105773925781, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 532]}], "orig": "GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "text": "GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/63", "parent": {"cref": "#/groups/0"}, "children": [], "label": "list_item", "prov": [{"page_no": 11, "bbox": {"l": 144.40879821777344, "t": 425.3538513183594, "r": 259.22869873046875, "b": 402.7626953125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 876]}], "orig": "GLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "text": "GLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/64", "parent": {"cref": "#/groups/0"}, "children": [], "label": "list_item", "prov": [{"page_no": 11, "bbox": {"l": 144.23313903808594, "t": 394.8355407714844, "r": 249.8356170654297, "b": 379.6138916015625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 672]}], "orig": "GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "text": "GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/65", "parent": {"cref": "#/groups/0"}, "children": [], "label": "list_item", "prov": [{"page_no": 11, "bbox": {"l": 144.35208129882812, "t": 371.82550048828125, "r": 234.2516326904297, "b": 357.3323669433594, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 613]}], "orig": "GLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "text": "GLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/66", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 11, "bbox": {"l": 460.8193359375, "t": 653.661376953125, "r": 506.26177978515625, "b": 646.5781860351562, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 14]}], "orig": "Power Services", "text": "Power Services"}, {"self_ref": "#/texts/67", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 11, "bbox": {"l": 280.07391357421875, "t": 554.2871704101562, "r": 463.8094177246094, "b": 515.3794555664062, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 30]}], "orig": "DB2 for i Center of Excellence", "text": "DB2 for i Center of Excellence", "level": 1}, {"self_ref": "#/texts/68", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 11, "bbox": {"l": 279.51953125, "t": 514.842529296875, "r": 483.7276916503906, "b": 503.36505126953125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 49]}], "orig": "Expert help to achieve your business requirements", "text": "Expert help to achieve your business requirements"}, {"self_ref": "#/texts/69", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 11, "bbox": {"l": 279.468994140625, "t": 476.9213562011719, "r": 443.375732421875, "b": 467.1043395996094, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 37]}], "orig": "We build confident, satisfied clients", "text": "We build confident, satisfied clients", "level": 1}, {"self_ref": "#/texts/70", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 11, "bbox": {"l": 279.530517578125, "t": 464.73529052734375, "r": 488.1546630859375, "b": 446.4922790527344, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 122]}], "orig": "No one else has the vast consulting experiences, skills sharing and renown service offerings to do what we can do for you.", "text": "No one else has the vast consulting experiences, skills sharing and renown service offerings to do what we can do for you."}, {"self_ref": "#/texts/71", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 11, "bbox": {"l": 280.0453186035156, "t": 435.4290466308594, "r": 367.8602294921875, "b": 427.2699890136719, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 27]}], "orig": "Because no one else is IBM.", "text": "Because no one else is IBM."}, {"self_ref": "#/texts/72", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 11, "bbox": {"l": 279.70794677734375, "t": 415.73895263671875, "r": 500.321044921875, "b": 366.6907958984375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 318]}], "orig": "With combined experiences and direct access to development groups, we're the experts in IBM DB2\u00ae for i. The DB2 for i Center of Excellence (CoE) can help you achieve-perhaps reexamine and exceed-your business requirements and gain more confidence and satisfaction in IBM product data management products and solutions.", "text": "With combined experiences and direct access to development groups, we're the experts in IBM DB2\u00ae for i. The DB2 for i Center of Excellence (CoE) can help you achieve-perhaps reexamine and exceed-your business requirements and gain more confidence and satisfaction in IBM product data management products and solutions."}, {"self_ref": "#/texts/73", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 11, "bbox": {"l": 279.6336669921875, "t": 354.8772277832031, "r": 435.1236572265625, "b": 345.1319274902344, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 30]}], "orig": "Who we are, some of what we do", "text": "Who we are, some of what we do", "level": 1}, {"self_ref": "#/texts/74", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 11, "bbox": {"l": 279.4736328125, "t": 342.7397766113281, "r": 434.56317138671875, "b": 334.5338134765625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 46]}], "orig": "Global CoE engagements cover topics including:", "text": "Global CoE engagements cover topics including:"}, {"self_ref": "#/texts/75", "parent": {"cref": "#/groups/1"}, "children": [], "label": "list_item", "prov": [{"page_no": 11, "bbox": {"l": 279.74200439453125, "t": 323.6339416503906, "r": 402.1675109863281, "b": 315.4241027832031, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 38]}], "orig": "r Database performance and scalability", "text": "r Database performance and scalability", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/76", "parent": {"cref": "#/groups/1"}, "children": [], "label": "list_item", "prov": [{"page_no": 11, "bbox": {"l": 279.7657165527344, "t": 313.35101318359375, "r": 424.9964599609375, "b": 305.21771240234375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 44]}], "orig": "r Advanced SQL knowledge and skills transfer", "text": "r Advanced SQL knowledge and skills transfer", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/77", "parent": {"cref": "#/groups/1"}, "children": [], "label": "list_item", "prov": [{"page_no": 11, "bbox": {"l": 279.9660339355469, "t": 302.5164489746094, "r": 392.2996520996094, "b": 294.8087158203125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 37]}], "orig": "r Business intelligence and analytics", "text": "r Business intelligence and analytics", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/78", "parent": {"cref": "#/groups/1"}, "children": [], "label": "list_item", "prov": [{"page_no": 11, "bbox": {"l": 279.9432067871094, "t": 292.4297180175781, "r": 339.94354248046875, "b": 284.7392272949219, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 15]}], "orig": "r DB2 Web Query", "text": "r DB2 Web Query", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/79", "parent": {"cref": "#/groups/1"}, "children": [], "label": "list_item", "prov": [{"page_no": 11, "bbox": {"l": 279.68328857421875, "t": 282.5703125, "r": 504.21795654296875, "b": 274.50201416015625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 72]}], "orig": "r Query/400 modernization for better reporting and analysis capabilities", "text": "r Query/400 modernization for better reporting and analysis capabilities", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/80", "parent": {"cref": "#/groups/1"}, "children": [], "label": "list_item", "prov": [{"page_no": 11, "bbox": {"l": 279.66998291015625, "t": 271.96844482421875, "r": 423.002197265625, "b": 263.96942138671875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 43]}], "orig": "r Database modernization and re-engineering", "text": "r Database modernization and re-engineering", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/81", "parent": {"cref": "#/groups/1"}, "children": [], "label": "list_item", "prov": [{"page_no": 11, "bbox": {"l": 279.7203674316406, "t": 262.03643798828125, "r": 400.07391357421875, "b": 254.12164306640625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 38]}], "orig": "r Data-centric architecture and design", "text": "r Data-centric architecture and design", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/82", "parent": {"cref": "#/groups/1"}, "children": [], "label": "list_item", "prov": [{"page_no": 11, "bbox": {"l": 279.7815856933594, "t": 252.1336669921875, "r": 467.2125549316406, "b": 244.1992645263672, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 58]}], "orig": "r Extremely large database and overcoming limits to growth", "text": "r Extremely large database and overcoming limits to growth", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/83", "parent": {"cref": "#/groups/1"}, "children": [], "label": "list_item", "prov": [{"page_no": 11, "bbox": {"l": 279.89080810546875, "t": 241.97698974609375, "r": 382.3631591796875, "b": 234.0165557861328, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 30]}], "orig": "r ISV education and enablement", "text": "r ISV education and enablement", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/84", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 12, "bbox": {"l": 93.356689453125, "t": 633.7283935546875, "r": 193.95431518554688, "b": 624.11572265625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 19]}], "orig": "What you can expect", "text": "What you can expect", "level": 1}, {"self_ref": "#/texts/85", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 12, "bbox": {"l": 93.58877563476562, "t": 621.952392578125, "r": 283.61541748046875, "b": 614.1285400390625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 59]}], "orig": "Depending on the engagement, our team of consultants offer:", "text": "Depending on the engagement, our team of consultants offer:"}, {"self_ref": "#/texts/86", "parent": {"cref": "#/groups/2"}, "children": [], "label": "list_item", "prov": [{"page_no": 12, "bbox": {"l": 93.6685562133789, "t": 602.1696166992188, "r": 243.1177520751953, "b": 593.9907836914062, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 46]}], "orig": "r Briefings, consulting and guidance on demand", "text": "r Briefings, consulting and guidance on demand", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/87", "parent": {"cref": "#/groups/2"}, "children": [], "label": "list_item", "prov": [{"page_no": 12, "bbox": {"l": 93.72789001464844, "t": 592.1357421875, "r": 282.7251281738281, "b": 574.0993041992188, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 75]}], "orig": "r Illumination of the DB2 for i capabilities and leadership to exploit them", "text": "r Illumination of the DB2 for i capabilities and leadership to exploit them", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/88", "parent": {"cref": "#/groups/2"}, "children": [], "label": "list_item", "prov": [{"page_no": 12, "bbox": {"l": 93.56942749023438, "t": 571.7151489257812, "r": 274.4058532714844, "b": 543.554443359375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 121]}], "orig": "r Analysis and remediation of performance and scalability issues caused by inefficient database design and implementation", "text": "r Analysis and remediation of performance and scalability issues caused by inefficient database design and implementation", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/89", "parent": {"cref": "#/groups/2"}, "children": [], "label": "list_item", "prov": [{"page_no": 12, "bbox": {"l": 93.60421752929688, "t": 541.5523681640625, "r": 285.813232421875, "b": 522.5653076171875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 97]}], "orig": "r Configuration of systems, operating system and products to fully leverage database capabilities", "text": "r Configuration of systems, operating system and products to fully leverage database capabilities", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/90", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 12, "bbox": {"l": 93.41441345214844, "t": 509.0904541015625, "r": 179.16822814941406, "b": 499.38623046875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 19]}], "orig": "Key client benefits", "text": "Key client benefits", "level": 1}, {"self_ref": "#/texts/91", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 12, "bbox": {"l": 93.23255920410156, "t": 503.74200439453125, "r": 282.49176025390625, "b": 438.4472961425781, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 316]}], "orig": "T Gain greater database and application performance within your current environment. Achieve greater productivity in the development and maintenance of database and applications using modern techniques. Architect and design data structures to accommodate and benefit from business analytics (BA) tools and processes.", "text": "T Gain greater database and application performance within your current environment. Achieve greater productivity in the development and maintenance of database and applications using modern techniques. Architect and design data structures to accommodate and benefit from business analytics (BA) tools and processes."}, {"self_ref": "#/texts/92", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 12, "bbox": {"l": 93.40412902832031, "t": 426.29229736328125, "r": 192.24819946289062, "b": 416.9537353515625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 20]}], "orig": "For more information", "text": "For more information", "level": 1}, {"self_ref": "#/texts/93", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 12, "bbox": {"l": 93.551025390625, "t": 415.04736328125, "r": 274.9092102050781, "b": 386.4068603515625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 165]}], "orig": "Pricing depends on the scope of work. Learn more about the DB2 for i Center of Excellence and other related products and services. Contact stgls@us.ibm.com or visit:", "text": "Pricing depends on the scope of work. Learn more about the DB2 for i Center of Excellence and other related products and services. Contact stgls@us.ibm.com or visit:"}, {"self_ref": "#/texts/94", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 12, "bbox": {"l": 93.61650085449219, "t": 374.6022033691406, "r": 216.61273193359375, "b": 367.145751953125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 298]}], "orig": "ibm.com GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "text": "ibm.com GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH"}, {"self_ref": "#/texts/95", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 12, "bbox": {"l": 309.5291748046875, "t": 583.289794921875, "r": 409.8566589355469, "b": 576.0010375976562, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 32]}], "orig": "\u00a9 Copyright IBM Corporation 2013", "text": "\u00a9 Copyright IBM Corporation 2013"}, {"self_ref": "#/texts/96", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 12, "bbox": {"l": 309.4497985839844, "t": 568.1546020507812, "r": 361.2178039550781, "b": 545.79736328125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 42]}], "orig": "IBM Corporation Route 100 Somers, NY 10589", "text": "IBM Corporation Route 100 Somers, NY 10589"}, {"self_ref": "#/texts/97", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 12, "bbox": {"l": 309.4351501464844, "t": 537.5772094726562, "r": 420.7811584472656, "b": 522.8818969726562, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 51]}], "orig": "Produced in the United States of America March 2013", "text": "Produced in the United States of America March 2013"}, {"self_ref": "#/texts/98", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 12, "bbox": {"l": 309.1927795410156, "t": 516.8470458984375, "r": 505.15802001953125, "b": 471.18280029296875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 367]}], "orig": "IBM, the IBM logo, ibm.com, DB2 and Power Systems are trademarks of International Business Machines Corp., registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the web at \"Copyright and trademark information\" at www.ibm.com/legal/ copytrade.shtml .", "text": "IBM, the IBM logo, ibm.com, DB2 and Power Systems are trademarks of International Business Machines Corp., registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the web at \"Copyright and trademark information\" at www.ibm.com/legal/ copytrade.shtml ."}, {"self_ref": "#/texts/99", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 12, "bbox": {"l": 309.322998046875, "t": 464.77276611328125, "r": 500.2719421386719, "b": 450.140869140625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 101]}], "orig": "This document is current as of the initial date of publication and may be changed by IBM at any time.", "text": "This document is current as of the initial date of publication and may be changed by IBM at any time."}, {"self_ref": "#/texts/100", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 12, "bbox": {"l": 309.2567138671875, "t": 444.02313232421875, "r": 494.2681884765625, "b": 436.7710266113281, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 71]}], "orig": "Not all offerings are available in every country in which IBM operates.", "text": "Not all offerings are available in every country in which IBM operates."}, {"self_ref": "#/texts/101", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 12, "bbox": {"l": 333.32159423828125, "t": 428.4759826660156, "r": 375.9523010253906, "b": 421.76727294921875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 14]}], "orig": "Please Recycle", "text": "Please Recycle"}, {"self_ref": "#/texts/102", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 12, "bbox": {"l": 446.00567626953125, "t": 125.18218994140625, "r": 504.98651123046875, "b": 118.24281311035156, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 16]}], "orig": "QLS12392-USEN-00", "text": "QLS12392-USEN-00"}, {"self_ref": "#/texts/103", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 13, "bbox": {"l": 64.80000305175781, "t": 718.8968505859375, "r": 151.46160888671875, "b": 695.9519653320312, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 7]}], "orig": "Preface", "text": "Preface", "level": 1}, {"self_ref": "#/texts/104", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 13, "bbox": {"l": 135.75503540039062, "t": 660.085693359375, "r": 547.3082275390625, "b": 590.1392822265625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 469]}], "orig": "This IBMfi Redpaper\u2122 publication provides information about the IBM i 7.2 feature of IBM DB2fi for i Row and Column Access Control (RCAC). It offers a broad description of the function and advantages of controlling access to data in a comprehensive and transparent way. This publication helps you understand the capabilities of RCAC and provides examples of defining, creating, and implementing the row permissions and column masks in a relational database environment.", "text": "This IBMfi Redpaper\u2122 publication provides information about the IBM i 7.2 feature of IBM DB2fi for i Row and Column Access Control (RCAC). It offers a broad description of the function and advantages of controlling access to data in a comprehensive and transparent way. This publication helps you understand the capabilities of RCAC and provides examples of defining, creating, and implementing the row permissions and column masks in a relational database environment."}, {"self_ref": "#/texts/105", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 13, "bbox": {"l": 135.94647216796875, "t": 577.9362182617188, "r": 546.4656982421875, "b": 531.8143310546875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 309]}], "orig": "This paper is intended for database engineers, data-centric application developers, and security officers who want to design and implement RCAC as a part of their data control and governance policy. A solid background in IBM i object level security, DB2 for i relational database concepts, and SQL is assumed.", "text": "This paper is intended for database engineers, data-centric application developers, and security officers who want to design and implement RCAC as a part of their data control and governance policy. A solid background in IBM i object level security, DB2 for i relational database concepts, and SQL is assumed."}, {"self_ref": "#/texts/106", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 13, "bbox": {"l": 135.71319580078125, "t": 472.1881408691406, "r": 547.2366943359375, "b": 449.8482971191406, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 172]}], "orig": "This paper was produced by the IBM DB2 for i Center of Excellence team in partnership with the International Technical Support Organization (ITSO), Rochester, Minnesota US.", "text": "This paper was produced by the IBM DB2 for i Center of Excellence team in partnership with the International Technical Support Organization (ITSO), Rochester, Minnesota US."}, {"self_ref": "#/texts/107", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 13, "bbox": {"l": 63.724002838134766, "t": 37.29620361328125, "r": 257.24334716796875, "b": 27.89178466796875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 48]}], "orig": "' Copyright IBM Corp. 2014. All rights reserved.", "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"self_ref": "#/texts/108", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 13, "bbox": {"l": 538.058349609375, "t": 37.60198974609375, "r": 547.2503051757812, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "xi", "text": "xi"}, {"self_ref": "#/texts/109", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 13, "bbox": {"l": 262.6522521972656, "t": 417.312744140625, "r": 541.2507934570312, "b": 275.06854248046875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 684]}], "orig": "Jim Bainbridge is a senior DB2 consultant on the DB2 for i Center of Excellence team in the IBM Lab Services and Training organization. His primary role is training and implementation services for IBM DB2 Web Query for i and business analytics. Jim began his career with IBM 30 years ago in the IBM Rochester Development Lab, where he developed cooperative processing products that paired IBM PCs with IBM S/36 and AS/.400 systems. In the years since, Jim has held numerous technical roles, including independent software vendors technical support on a broad range of IBM technologies and products, and supporting customers in the IBM Executive Briefing Center and IBM Project Office.", "text": "Jim Bainbridge is a senior DB2 consultant on the DB2 for i Center of Excellence team in the IBM Lab Services and Training organization. His primary role is training and implementation services for IBM DB2 Web Query for i and business analytics. Jim began his career with IBM 30 years ago in the IBM Rochester Development Lab, where he developed cooperative processing products that paired IBM PCs with IBM S/36 and AS/.400 systems. In the years since, Jim has held numerous technical roles, including independent software vendors technical support on a broad range of IBM technologies and products, and supporting customers in the IBM Executive Briefing Center and IBM Project Office."}, {"self_ref": "#/texts/110", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 13, "bbox": {"l": 262.4736328125, "t": 265.49169921875, "r": 541.2737426757812, "b": 111.162841796875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 726]}], "orig": "Hernando Bedoya is a Senior IT Specialist at STG Lab Services and Training in Rochester, Minnesota. He writes extensively and teaches IBM classes worldwide in all areas of DB2 for i. Before joining STG Lab Services, he worked in the ITSO for nine years writing multiple IBM Redbooksfi publications. He also worked for IBM Colombia as an IBM AS/400fi IT Specialist doing presales support for the Andean countries. He has 28 years of experience in the computing field and has taught database classes in Colombian universities. He holds a Master's degree in Computer Science from EAFIT, Colombia. His areas of expertise are database technology, performance, and data warehousing. Hernando can be contacted at hbedoya@us.ibm.com .", "text": "Hernando Bedoya is a Senior IT Specialist at STG Lab Services and Training in Rochester, Minnesota. He writes extensively and teaches IBM classes worldwide in all areas of DB2 for i. Before joining STG Lab Services, he worked in the ITSO for nine years writing multiple IBM Redbooksfi publications. He also worked for IBM Colombia as an IBM AS/400fi IT Specialist doing presales support for the Andean countries. He has 28 years of experience in the computing field and has taught database classes in Colombian universities. He holds a Master's degree in Computer Science from EAFIT, Colombia. His areas of expertise are database technology, performance, and data warehousing. Hernando can be contacted at hbedoya@us.ibm.com ."}, {"self_ref": "#/texts/111", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 13, "bbox": {"l": 64.22550201416016, "t": 504.8105773925781, "r": 125.36660766601562, "b": 488.9364013671875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 7]}], "orig": "Authors", "text": "Authors", "level": 1}, {"self_ref": "#/texts/112", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 14, "bbox": {"l": 64.18641662597656, "t": 37.57574462890625, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 3]}], "orig": "xii", "text": "xii"}, {"self_ref": "#/texts/113", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 14, "bbox": {"l": 93.32842254638672, "t": 37.28607177734375, "r": 334.4214172363281, "b": 28.0654296875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/114", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 14, "bbox": {"l": 262.9671630859375, "t": 715.4261474609375, "r": 541.2052612304688, "b": 656.8482666015625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 271]}], "orig": "Rob Bestgen is a member of the DB2 for i Center of Excellence team helping customers use the capabilities of DB2 for i. In addition, Rob is the chief architect of the DB2 SQL Query Engine (SQE) for DB2 for i and is the product development manager for DB2 Web Query for i.", "text": "Rob Bestgen is a member of the DB2 for i Center of Excellence team helping customers use the capabilities of DB2 for i. In addition, Rob is the chief architect of the DB2 SQL Query Engine (SQE) for DB2 for i and is the product development manager for DB2 Web Query for i."}, {"self_ref": "#/texts/115", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 14, "bbox": {"l": 262.94354248046875, "t": 600.0166015625, "r": 541.171630859375, "b": 457.7811279296875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 671]}], "orig": "Mike Cain is a Senior Technical Staff Member within the IBM Systems and Technology Group. He is also the founder and team leader of the DB2 for i Center of Excellence in Rochester, Minnesota US. Before his current position, he worked as an IBM AS/400 Systems Engineer and technical consultant. Before joining IBM in 1988, Mike worked as a System/38 programmer and data processing manager for a property and casualty insurance company. Mike has 26 years of experience with IBM, engaging clients and Business Partners around the world. In addition to assisting clients, he uses his knowledge and experience to influence the IBM solution, development, and support processes.", "text": "Mike Cain is a Senior Technical Staff Member within the IBM Systems and Technology Group. He is also the founder and team leader of the DB2 for i Center of Excellence in Rochester, Minnesota US. Before his current position, he worked as an IBM AS/400 Systems Engineer and technical consultant. Before joining IBM in 1988, Mike worked as a System/38 programmer and data processing manager for a property and casualty insurance company. Mike has 26 years of experience with IBM, engaging clients and Business Partners around the world. In addition to assisting clients, he uses his knowledge and experience to influence the IBM solution, development, and support processes."}, {"self_ref": "#/texts/116", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 14, "bbox": {"l": 262.7120666503906, "t": 447.94219970703125, "r": 541.3219604492188, "b": 341.8028259277344, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 494]}], "orig": "Dan Cruikshank has been an IT Professional since 1972. He has consulted on a number of different project areas since joining IBM Rochester in 1988. Since 1993, Dan was focused primarily on resolving IBM System ifi application and database performance issues at several IBM customer accounts. Since 1998, Dan has been one of the primary instructors for the Database Optimization Workshop. Most recently, Dan is a member of the DB2 for i Center of Excellence team with IBM Rochester Lab Services.", "text": "Dan Cruikshank has been an IT Professional since 1972. He has consulted on a number of different project areas since joining IBM Rochester in 1988. Since 1993, Dan was focused primarily on resolving IBM System ifi application and database performance issues at several IBM customer accounts. Since 1998, Dan has been one of the primary instructors for the Database Optimization Workshop. Most recently, Dan is a member of the DB2 for i Center of Excellence team with IBM Rochester Lab Services."}, {"self_ref": "#/texts/117", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 14, "bbox": {"l": 262.76617431640625, "t": 329.9665832519531, "r": 541.2412719726562, "b": 187.7853546142578, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 702]}], "orig": "Jim Denton is a senior consultant at the IBM DB2 for i Center of Excellence, where his responsibilities include both teaching courses and hands on consulting. Jim specializes in SQL performance, data-centric programming, and database modernization. Jim started his IBM career in 1981 as an S/38 operating system programmer. Before joining the consulting team, his key assignments included 10 years as a systems performance specialist, five years as the lead \"JDE on i\" analyst, three years as a consultant at the IBM Benchmark and Briefing Center in Montpellier France, and a total of 11 years as an operating system developer, including five years designing and implementing enhancements to DB2 for i.", "text": "Jim Denton is a senior consultant at the IBM DB2 for i Center of Excellence, where his responsibilities include both teaching courses and hands on consulting. Jim specializes in SQL performance, data-centric programming, and database modernization. Jim started his IBM career in 1981 as an S/38 operating system programmer. Before joining the consulting team, his key assignments included 10 years as a systems performance specialist, five years as the lead \"JDE on i\" analyst, three years as a consultant at the IBM Benchmark and Briefing Center in Montpellier France, and a total of 11 years as an operating system developer, including five years designing and implementing enhancements to DB2 for i."}, {"self_ref": "#/texts/118", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 14, "bbox": {"l": 262.9361877441406, "t": 177.96636962890625, "r": 541.1943969726562, "b": 83.7471923828125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 420]}], "orig": "Doug Mack is a DB2 for i and Business Intelligence Consultant in the IBM Power Systems\u2122 Lab Services organization. Doug's 30+ year career with IBM spans many roles, including product development, technical sales support, Business Intelligence Sales Specialist, and DB2 for i Product Marketing Manager. Doug is a featured speaker at User Group conferences and meetings, IBM Technical Conferences, and Executive Briefings.", "text": "Doug Mack is a DB2 for i and Business Intelligence Consultant in the IBM Power Systems\u2122 Lab Services organization. Doug's 30+ year career with IBM spans many roles, including product development, technical sales support, Business Intelligence Sales Specialist, and DB2 for i Product Marketing Manager. Doug is a featured speaker at User Group conferences and meetings, IBM Technical Conferences, and Executive Briefings."}, {"self_ref": "#/texts/119", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 15, "bbox": {"l": 262.7662658691406, "t": 715.326416015625, "r": 541.1551513671875, "b": 585.0075073242188, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 608]}], "orig": "Tom McKinley is an IBM Lab Services Consultant working on DB2 for IBM i in Rochester MN. His main focus is complex query performance that is associated with Business Intelligence running on Very Large Databases. He worked as a developer or performance analyst in the DB area from 1986 until 2006. Some of his major pieces of work include the Symmetric Multiple processing capabilities of DB2 for IBM i and Large Object Data types. In addition, he was on the original team that designed and built the SQL Query Engine. Before his database work, he worked on Licensed Internal Code for System 34 and System 36.", "text": "Tom McKinley is an IBM Lab Services Consultant working on DB2 for IBM i in Rochester MN. His main focus is complex query performance that is associated with Business Intelligence running on Very Large Databases. He worked as a developer or performance analyst in the DB area from 1986 until 2006. Some of his major pieces of work include the Symmetric Multiple processing capabilities of DB2 for IBM i and Large Object Data types. In addition, he was on the original team that designed and built the SQL Query Engine. Before his database work, he worked on Licensed Internal Code for System 34 and System 36."}, {"self_ref": "#/texts/120", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 15, "bbox": {"l": 262.6918029785156, "t": 575.589111328125, "r": 541.2665405273438, "b": 481.3031005859375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 436]}], "orig": "Kent Milligan is a senior DB2 consultant on the DB2 for i Center of Excellence team within the IBM Lab Services and Training organization. His primary responsibility is helping software developers use the latest DB2 technologies and port applications from other databases to DB2 for i. After graduating from the University of Iowa, Kent spent the first eight years of his IBM career as a member of the DB2 development team in Rochester.", "text": "Kent Milligan is a senior DB2 consultant on the DB2 for i Center of Excellence team within the IBM Lab Services and Training organization. His primary responsibility is helping software developers use the latest DB2 technologies and port applications from other databases to DB2 for i. After graduating from the University of Iowa, Kent spent the first eight years of his IBM career as a member of the DB2 development team in Rochester."}, {"self_ref": "#/texts/121", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 15, "bbox": {"l": 135.6240234375, "t": 453.2672119140625, "r": 432.1602478027344, "b": 443.1976013183594, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 71]}], "orig": "Thanks to the following people for their contributions to this project:", "text": "Thanks to the following people for their contributions to this project:"}, {"self_ref": "#/texts/122", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 15, "bbox": {"l": 136.3055877685547, "t": 431.54791259765625, "r": 200.390869140625, "b": 421.29852294921875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 12]}], "orig": "Debra Landon", "text": "Debra Landon"}, {"self_ref": "#/texts/123", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 15, "bbox": {"l": 136.32855224609375, "t": 419.5627136230469, "r": 439.0932312011719, "b": 408.6701965332031, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 62]}], "orig": "International Technical Support Organization, Rochester Center", "text": "International Technical Support Organization, Rochester Center"}, {"self_ref": "#/texts/124", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 15, "bbox": {"l": 136.09214782714844, "t": 397.3418884277344, "r": 457.729736328125, "b": 375.0718078613281, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 97]}], "orig": "Craig Aldrich, Mark Anderson, Theresa Euler, Scott Forstie, Chad Olstad IBM Rochester Development", "text": "Craig Aldrich, Mark Anderson, Theresa Euler, Scott Forstie, Chad Olstad IBM Rochester Development"}, {"self_ref": "#/texts/125", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 15, "bbox": {"l": 64.71363067626953, "t": 348.17987060546875, "r": 413.1525573730469, "b": 331.68011474609375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 43]}], "orig": "Now you can become a published author, too!", "text": "Now you can become a published author, too!", "level": 1}, {"self_ref": "#/texts/126", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 15, "bbox": {"l": 135.805419921875, "t": 315.3446960449219, "r": 547.232666015625, "b": 233.25941467285156, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 551]}], "orig": "Here's an opportunity to spotlight your skills, grow your career, and become a published author-all at the same time! Join an ITSO residency project and help write a book in your area of expertise, while honing your experience using leading-edge technologies. Your efforts will help to increase product acceptance and customer satisfaction, as you expand your network of technical contacts and relationships. Residencies run from two to six weeks in length, and you can participate either in person or as a remote resident working from your home base.", "text": "Here's an opportunity to spotlight your skills, grow your career, and become a published author-all at the same time! Join an ITSO residency project and help write a book in your area of expertise, while honing your experience using leading-edge technologies. Your efforts will help to increase product acceptance and customer satisfaction, as you expand your network of technical contacts and relationships. Residencies run from two to six weeks in length, and you can participate either in person or as a remote resident working from your home base."}, {"self_ref": "#/texts/127", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 15, "bbox": {"l": 136.59922790527344, "t": 221.3204345703125, "r": 546.8164672851562, "b": 210.92303466796875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 91]}], "orig": "Find out more about the residency program, browse the residency index, and apply online at:", "text": "Find out more about the residency program, browse the residency index, and apply online at:"}, {"self_ref": "#/texts/128", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 15, "bbox": {"l": 136.80001831054688, "t": 204.01422119140625, "r": 301.6778259277344, "b": 194.49908447265625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 34]}], "orig": "ibm.com /redbooks/residencies.html", "text": "ibm.com /redbooks/residencies.html"}, {"self_ref": "#/texts/129", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 15, "bbox": {"l": 64.52783966064453, "t": 166.65826416015625, "r": 219.43165588378906, "b": 151.01637268066406, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 16]}], "orig": "Comments welcome", "text": "Comments welcome", "level": 1}, {"self_ref": "#/texts/130", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 15, "bbox": {"l": 135.9565887451172, "t": 134.02044677734375, "r": 294.74969482421875, "b": 124.1328125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 34]}], "orig": "Your comments are important to us!", "text": "Your comments are important to us!"}, {"self_ref": "#/texts/131", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 15, "bbox": {"l": 135.8791961669922, "t": 112.6141357421875, "r": 547.25244140625, "b": 90.2786636352539, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 152]}], "orig": "We want our papers to be as helpful as possible. Send us your comments about this paper or other IBM Redbooks publications in one of the following ways:", "text": "We want our papers to be as helpful as possible. Send us your comments about this paper or other IBM Redbooks publications in one of the following ways:"}, {"self_ref": "#/texts/132", "parent": {"cref": "#/groups/3"}, "children": [], "label": "list_item", "prov": [{"page_no": 15, "bbox": {"l": 135.62045288085938, "t": 83.194091796875, "r": 412.55645751953125, "b": 73.23909759521484, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 72]}], "orig": "GLYPH Use the online Contact us review Redbooks form found at:", "text": "GLYPH Use the online Contact us review Redbooks form found at:", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/133", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 15, "bbox": {"l": 151.20013427734375, "t": 65.59039306640625, "r": 231.11917114257812, "b": 56.498329162597656, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 17]}], "orig": "ibm.com /redbooks", "text": "ibm.com /redbooks"}, {"self_ref": "#/texts/134", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 15, "bbox": {"l": 485.1000061035156, "t": 37.24951171875, "r": 520.88134765625, "b": 28.136999130249023, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 7]}], "orig": "Preface", "text": "Preface"}, {"self_ref": "#/texts/135", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 15, "bbox": {"l": 532.5994262695312, "t": 37.7366943359375, "r": 547.1934204101562, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 4]}], "orig": "xiii", "text": "xiii"}, {"self_ref": "#/texts/136", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 16, "bbox": {"l": 64.0907974243164, "t": 37.40447998046875, "r": 81.16200256347656, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 3]}], "orig": "xiv", "text": "xiv"}, {"self_ref": "#/texts/137", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 16, "bbox": {"l": 95.71053314208984, "t": 37.3270263671875, "r": 337.0337829589844, "b": 28.02490234375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/138", "parent": {"cref": "#/groups/4"}, "children": [], "label": "list_item", "prov": [{"page_no": 16, "bbox": {"l": 135.5431365966797, "t": 721.2905883789062, "r": 310.3739318847656, "b": 710.7161254882812, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 50]}], "orig": "GLYPH Send your comments in an email to:", "text": "GLYPH Send your comments in an email to:", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/139", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 16, "bbox": {"l": 150.99362182617188, "t": 704.1723022460938, "r": 246.22007751464844, "b": 694.5873413085938, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 19]}], "orig": "redbooks@us.ibm.com", "text": "redbooks@us.ibm.com"}, {"self_ref": "#/texts/140", "parent": {"cref": "#/groups/5"}, "children": [], "label": "list_item", "prov": [{"page_no": 16, "bbox": {"l": 135.64413452148438, "t": 687.05322265625, "r": 254.27020263671875, "b": 677.0240478515625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 38]}], "orig": "GLYPH Mail your comments to:", "text": "GLYPH Mail your comments to:", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/141", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 16, "bbox": {"l": 150.4449005126953, "t": 671.0802001953125, "r": 426.992431640625, "b": 624.0880126953125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 134]}], "orig": "IBM Corporation, International Technical Support Organization Dept. HYTD Mail Station P099 2455 South Road Poughkeepsie, NY 12601-5400", "text": "IBM Corporation, International Technical Support Organization Dept. HYTD Mail Station P099 2455 South Road Poughkeepsie, NY 12601-5400"}, {"self_ref": "#/texts/142", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 16, "bbox": {"l": 64.44961547851562, "t": 597.390625, "r": 317.6510925292969, "b": 581.0363159179688, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 30]}], "orig": "Stay connected to IBM Redbooks", "text": "Stay connected to IBM Redbooks", "level": 1}, {"self_ref": "#/texts/143", "parent": {"cref": "#/groups/6"}, "children": [], "label": "list_item", "prov": [{"page_no": 16, "bbox": {"l": 135.58946228027344, "t": 564.1651611328125, "r": 246.8371124267578, "b": 554.25830078125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 36]}], "orig": "GLYPH Find us on Facebook:", "text": "GLYPH Find us on Facebook:", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/144", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 16, "bbox": {"l": 150.674072265625, "t": 547.1090087890625, "r": 326.0977478027344, "b": 537.0848388671875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 35]}], "orig": "http://www.facebook.com/IBMRedbooks", "text": "http://www.facebook.com/IBMRedbooks"}, {"self_ref": "#/texts/145", "parent": {"cref": "#/groups/7"}, "children": [], "label": "list_item", "prov": [{"page_no": 16, "bbox": {"l": 135.61866760253906, "t": 530.5045166015625, "r": 241.52239990234375, "b": 520.2987060546875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 37]}], "orig": "GLYPH Follow us on Twitter:", "text": "GLYPH Follow us on Twitter:", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/146", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 16, "bbox": {"l": 150.70498657226562, "t": 513.2252197265625, "r": 301.0782165527344, "b": 503.5311279296875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 30]}], "orig": "http://twitter.com/ibmredbooks", "text": "http://twitter.com/ibmredbooks"}, {"self_ref": "#/texts/147", "parent": {"cref": "#/groups/8"}, "children": [], "label": "list_item", "prov": [{"page_no": 16, "bbox": {"l": 135.6381072998047, "t": 496.593017578125, "r": 257.426513671875, "b": 486.2793273925781, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 40]}], "orig": "GLYPH Look for us on LinkedIn:", "text": "GLYPH Look for us on LinkedIn:", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/148", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 16, "bbox": {"l": 150.5355224609375, "t": 479.2994079589844, "r": 391.0767822265625, "b": 469.3290710449219, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 48]}], "orig": "http://www.linkedin.com/groups?home=&gid=2130806", "text": "http://www.linkedin.com/groups?home=&gid=2130806"}, {"self_ref": "#/texts/149", "parent": {"cref": "#/groups/9"}, "children": [], "label": "list_item", "prov": [{"page_no": 16, "bbox": {"l": 135.53648376464844, "t": 461.9305419921875, "r": 546.2178955078125, "b": 439.63250732421875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 118]}], "orig": "GLYPH Explore new Redbooks publications, residencies, and workshops with the IBM Redbooks weekly newsletter:", "text": "GLYPH Explore new Redbooks publications, residencies, and workshops with the IBM Redbooks weekly newsletter:", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/150", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 16, "bbox": {"l": 150.64300537109375, "t": 433.2305908203125, "r": 451.45623779296875, "b": 423.1323547363281, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 60]}], "orig": "https://www.redbooks.ibm.com/Redbooks.nsf/subscribe?OpenForm", "text": "https://www.redbooks.ibm.com/Redbooks.nsf/subscribe?OpenForm"}, {"self_ref": "#/texts/151", "parent": {"cref": "#/groups/10"}, "children": [], "label": "list_item", "prov": [{"page_no": 16, "bbox": {"l": 135.8739471435547, "t": 416.6739501953125, "r": 429.3480529785156, "b": 406.300537109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 76]}], "orig": "GLYPH Stay current on recent Redbooks publications with RSS Feeds:", "text": "GLYPH Stay current on recent Redbooks publications with RSS Feeds:", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/152", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 16, "bbox": {"l": 150.6341552734375, "t": 399.0984802246094, "r": 331.0777282714844, "b": 389.47064208984375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 36]}], "orig": "http://www.redbooks.ibm.com/rss.html", "text": "http://www.redbooks.ibm.com/rss.html"}, {"self_ref": "#/texts/153", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 17, "bbox": {"l": 81.0, "t": 523.457275390625, "r": 115.13253021240234, "b": 517.019287109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 10]}], "orig": "Chapter 1.", "text": "Chapter 1."}, {"self_ref": "#/texts/154", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 17, "bbox": {"l": 500.3999938964844, "t": 699.3392333984375, "r": 522.6177368164062, "b": 661.8682861328125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 1]}], "orig": "1", "text": "1"}, {"self_ref": "#/texts/155", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 17, "bbox": {"l": 136.68006896972656, "t": 538.7101440429688, "r": 547.3047485351562, "b": 482.1217956542969, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 36]}], "orig": "Securing and protecting IBM DB2 data", "text": "Securing and protecting IBM DB2 data", "level": 1}, {"self_ref": "#/texts/156", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 17, "bbox": {"l": 136.15219116210938, "t": 444.024658203125, "r": 547.2540283203125, "b": 361.62640380859375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 648]}], "orig": "Recent news headlines are filled with reports of data breaches and cyber-attacks impacting global businesses of all sizes. The Identity Theft Resource Center$^{1}$ reports that almost 5000 data breaches have occurred since 2005, exposing over 600 million records of data. The financial cost of these data breaches is skyrocketing. Studies from the Ponemon Institute$^{2}$ revealed that the average cost of a data breach increased in 2013 by 15% globally and resulted in a brand equity loss of $9.4 million per attack. The average cost that is incurred for each lost record containing sensitive information increased more than 9% to $145 per record.", "text": "Recent news headlines are filled with reports of data breaches and cyber-attacks impacting global businesses of all sizes. The Identity Theft Resource Center$^{1}$ reports that almost 5000 data breaches have occurred since 2005, exposing over 600 million records of data. The financial cost of these data breaches is skyrocketing. Studies from the Ponemon Institute$^{2}$ revealed that the average cost of a data breach increased in 2013 by 15% globally and resulted in a brand equity loss of $9.4 million per attack. The average cost that is incurred for each lost record containing sensitive information increased more than 9% to $145 per record."}, {"self_ref": "#/texts/157", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 17, "bbox": {"l": 136.05917358398438, "t": 349.8846435546875, "r": 527.206298828125, "b": 303.55853271484375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 304]}], "orig": "Businesses must make a serious effort to secure their data and recognize that securing information assets is a cost of doing business. In many parts of the world and in many industries, securing the data is required by law and subject to audits. Data security is no longer an option; it is a requirement.", "text": "Businesses must make a serious effort to secure their data and recognize that securing information assets is a cost of doing business. In many parts of the world and in many industries, securing the data is required by law and subject to audits. Data security is no longer an option; it is a requirement."}, {"self_ref": "#/texts/158", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 17, "bbox": {"l": 135.5961456298828, "t": 291.9596862792969, "r": 547.1551513671875, "b": 270.1002197265625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 122]}], "orig": "This chapter describes how you can secure and protect data in DB2 for i. The following topics are covered in this chapter:", "text": "This chapter describes how you can secure and protect data in DB2 for i. The following topics are covered in this chapter:"}, {"self_ref": "#/texts/159", "parent": {"cref": "#/groups/11"}, "children": [], "label": "list_item", "prov": [{"page_no": 17, "bbox": {"l": 135.86915588378906, "t": 263.29638671875, "r": 250.23167419433594, "b": 252.9566650390625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 37]}], "orig": "GLYPH Security fundamentals", "text": "GLYPH Security fundamentals", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/160", "parent": {"cref": "#/groups/11"}, "children": [], "label": "list_item", "prov": [{"page_no": 17, "bbox": {"l": 135.742431640625, "t": 251.2857666015625, "r": 282.98114013671875, "b": 240.626708984375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 47]}], "orig": "GLYPH Current state of IBM i security", "text": "GLYPH Current state of IBM i security", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/161", "parent": {"cref": "#/groups/11"}, "children": [], "label": "list_item", "prov": [{"page_no": 17, "bbox": {"l": 135.86570739746094, "t": 239.55108642578125, "r": 264.8818664550781, "b": 229.06103515625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 43]}], "orig": "GLYPH DB2 for i security controls", "text": "GLYPH DB2 for i security controls", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/162", "parent": {"cref": "#/body"}, "children": [], "label": "footnote", "prov": [{"page_no": 17, "bbox": {"l": 135.7418975830078, "t": 75.71832275390625, "r": 258.362548828125, "b": 66.45916748046875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 35]}], "orig": "$^{1 }$http://www.idtheftcenter.org", "text": "$^{1 }$http://www.idtheftcenter.org"}, {"self_ref": "#/texts/163", "parent": {"cref": "#/body"}, "children": [], "label": "footnote", "prov": [{"page_no": 17, "bbox": {"l": 136.19522094726562, "t": 66.703857421875, "r": 234.42526245117188, "b": 56.73187255859375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 31]}], "orig": "$^{2 }$http://www.ponemon.org /", "text": "$^{2 }$http://www.ponemon.org /"}, {"self_ref": "#/texts/164", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 17, "bbox": {"l": 63.68400573730469, "t": 37.3408203125, "r": 257.24334716796875, "b": 27.85699462890625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 48]}], "orig": "' Copyright IBM Corp. 2014. All rights reserved.", "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"self_ref": "#/texts/165", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 17, "bbox": {"l": 541.2396240234375, "t": 37.7130126953125, "r": 547.2176513671875, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 1]}], "orig": "1", "text": "1"}, {"self_ref": "#/texts/166", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 18, "bbox": {"l": 64.33735656738281, "t": 718.60302734375, "r": 267.40582275390625, "b": 702.3842163085938, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 25]}], "orig": "1.1 Security fundamentals", "text": "1.1 Security fundamentals", "level": 1}, {"self_ref": "#/texts/167", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 18, "bbox": {"l": 136.23556518554688, "t": 685.97265625, "r": 545.0048217773438, "b": 664.178466796875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 133]}], "orig": "Before reviewing database security techniques, there are two fundamental steps in securing information assets that must be described:", "text": "Before reviewing database security techniques, there are two fundamental steps in securing information assets that must be described:"}, {"self_ref": "#/texts/168", "parent": {"cref": "#/groups/12"}, "children": [], "label": "list_item", "prov": [{"page_no": 18, "bbox": {"l": 135.66490173339844, "t": 657.3309326171875, "r": 547.1642456054688, "b": 610.8453369140625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 361]}], "orig": "GLYPH First, and most important, is the definition of a company's security policy . Without a security policy, there is no definition of what are acceptable practices for using, accessing, and storing information by who, what, when, where, and how. A security policy should minimally address three things: confidentiality, integrity, and availability.", "text": "GLYPH First, and most important, is the definition of a company's security policy . Without a security policy, there is no definition of what are acceptable practices for using, accessing, and storing information by who, what, when, where, and how. A security policy should minimally address three things: confidentiality, integrity, and availability.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/169", "parent": {"cref": "#/groups/12"}, "children": [], "label": "list_item", "prov": [{"page_no": 18, "bbox": {"l": 150.2132110595703, "t": 604.0206298828125, "r": 547.2608642578125, "b": 521.4625244140625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 587]}], "orig": "The monitoring and assessment of adherence to the security policy determines whether your security strategy is working. Often, IBM security consultants are asked to perform security assessments for companies without regard to the security policy. Although these assessments can be useful for observing how the system is defined and how data is being accessed, they cannot determine the level of security without a security policy. Without a security policy, it really is not an assessment as much as it is a baseline for monitoring the changes in the security settings that are captured.", "text": "The monitoring and assessment of adherence to the security policy determines whether your security strategy is working. Often, IBM security consultants are asked to perform security assessments for companies without regard to the security policy. Although these assessments can be useful for observing how the system is defined and how data is being accessed, they cannot determine the level of security without a security policy. Without a security policy, it really is not an assessment as much as it is a baseline for monitoring the changes in the security settings that are captured.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/170", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 18, "bbox": {"l": 150.1995086669922, "t": 515.2373657226562, "r": 541.9920043945312, "b": 504.9290466308594, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 90]}], "orig": "A security policy is what defines whether the system and its settings are secure (or not).", "text": "A security policy is what defines whether the system and its settings are secure (or not)."}, {"self_ref": "#/texts/171", "parent": {"cref": "#/groups/13"}, "children": [], "label": "list_item", "prov": [{"page_no": 18, "bbox": {"l": 135.4777374267578, "t": 498.18560791015625, "r": 547.1582641601562, "b": 415.4546203613281, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 573]}], "orig": "GLYPH The second fundamental in securing data assets is the use of resource security . If implemented properly, resource security prevents data breaches from both internal and external intrusions. Resource security controls are closely tied to the part of the security policy that defines who should have access to what information resources. A hacker might be good enough to get through your company firewalls and sift his way through to your system, but if they do not have explicit access to your database, the hacker cannot compromise your information assets.", "text": "GLYPH The second fundamental in securing data assets is the use of resource security . If implemented properly, resource security prevents data breaches from both internal and external intrusions. Resource security controls are closely tied to the part of the security policy that defines who should have access to what information resources. A hacker might be good enough to get through your company firewalls and sift his way through to your system, but if they do not have explicit access to your database, the hacker cannot compromise your information assets.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/172", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 18, "bbox": {"l": 135.90879821777344, "t": 403.87713623046875, "r": 535.3616943359375, "b": 381.6918640136719, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 179]}], "orig": "With your eyes now open to the importance of securing information assets, the rest of this chapter reviews the methods that are available for securing database resources on IBM i.", "text": "With your eyes now open to the importance of securing information assets, the rest of this chapter reviews the methods that are available for securing database resources on IBM i."}, {"self_ref": "#/texts/173", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 18, "bbox": {"l": 64.44733428955078, "t": 354.5881042480469, "r": 323.3839111328125, "b": 338.3087158203125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 35]}], "orig": "1.2 Current state of IBM i security", "text": "1.2 Current state of IBM i security", "level": 1}, {"self_ref": "#/texts/174", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 18, "bbox": {"l": 136.1368408203125, "t": 322.23028564453125, "r": 547.3182373046875, "b": 275.52197265625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 306]}], "orig": "Because of the inherently secure nature of IBM i, many clients rely on the default system settings to protect their business data that is stored in DB2 for i. In most cases, this means no data protection because the default setting for the Create default public authority (QCRTAUT) system value is *CHANGE.", "text": "Because of the inherently secure nature of IBM i, many clients rely on the default system settings to protect their business data that is stored in DB2 for i. In most cases, this means no data protection because the default setting for the Create default public authority (QCRTAUT) system value is *CHANGE."}, {"self_ref": "#/texts/175", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 18, "bbox": {"l": 135.79974365234375, "t": 264.12274169921875, "r": 547.284423828125, "b": 206.1400604248047, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 405]}], "orig": "Even more disturbing is that many IBM i clients remain in this state, despite the news headlines and the significant costs that are involved with databases being compromised. This default security configuration makes it quite challenging to implement basic security policies. A tighter implementation is required if you really want to protect one of your company's most valuable assets, which is the data.", "text": "Even more disturbing is that many IBM i clients remain in this state, despite the news headlines and the significant costs that are involved with databases being compromised. This default security configuration makes it quite challenging to implement basic security policies. A tighter implementation is required if you really want to protect one of your company's most valuable assets, which is the data."}, {"self_ref": "#/texts/176", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 18, "bbox": {"l": 135.8997802734375, "t": 193.8753662109375, "r": 547.2832641601562, "b": 111.57879638671875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 640]}], "orig": "Traditionally, IBM i applications have employed menu-based security to counteract this default configuration that gives all users access to the data. The theory is that data is protected by the menu options controlling what database operations that the user can perform. This approach is ineffective, even if the user profile is restricted from running interactive commands. The reason is that in today's connected world there are a multitude of interfaces into the system, from web browsers to PC clients, that bypass application menus. If there are no object-level controls, users of these newer interfaces have an open door to your data.", "text": "Traditionally, IBM i applications have employed menu-based security to counteract this default configuration that gives all users access to the data. The theory is that data is protected by the menu options controlling what database operations that the user can perform. This approach is ineffective, even if the user profile is restricted from running interactive commands. The reason is that in today's connected world there are a multitude of interfaces into the system, from web browsers to PC clients, that bypass application menus. If there are no object-level controls, users of these newer interfaces have an open door to your data."}, {"self_ref": "#/texts/177", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 18, "bbox": {"l": 63.92394256591797, "t": 37.713134765625, "r": 72.8219985961914, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 1]}], "orig": "2", "text": "2"}, {"self_ref": "#/texts/178", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 18, "bbox": {"l": 87.81553649902344, "t": 37.31463623046875, "r": 328.7253723144531, "b": 28.03179931640625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/179", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 19, "bbox": {"l": 136.11676025390625, "t": 721.186279296875, "r": 546.4398193359375, "b": 626.8720092773438, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 688]}], "orig": "Some clients using this default configuration have toughened their database security with exit-point solutions from third-party vendors. IBM i exit points allow a user-written program to be called every time that a particular interface (for example, FTP) is used or an event occurs (for example, a profile is created). Security tools that are based on these exit points increase the level of security on a system by locking down interfaces that are not under the control of menu-based or application authority. In addition, exit-point solutions allow clients to implement more granular security controls, such as allowing users access only to the database during certain hours of the day.", "text": "Some clients using this default configuration have toughened their database security with exit-point solutions from third-party vendors. IBM i exit points allow a user-written program to be called every time that a particular interface (for example, FTP) is used or an event occurs (for example, a profile is created). Security tools that are based on these exit points increase the level of security on a system by locking down interfaces that are not under the control of menu-based or application authority. In addition, exit-point solutions allow clients to implement more granular security controls, such as allowing users access only to the database during certain hours of the day."}, {"self_ref": "#/texts/180", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 19, "bbox": {"l": 135.7813262939453, "t": 615.1084594726562, "r": 547.2666015625, "b": 520.8560791015625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 723]}], "orig": "Although exit-point solutions can provide great benefits, they are not an alternative to object-level control of your databases. Exit-point solutions help secure interfaces, but they do not completely protect the data that is stored in your DB2 objects. Exit points do not exist for every data access interface on the system. Therefore, if an application starts using an unprotected interface, the only thing protecting your data is object-level access control. When your security implementation totally relies on exit points, then it is also important to track any new data interfaces that appear as IBM delivers new releases and products to ensure that your exit-point solution provides coverage for those new interfaces.", "text": "Although exit-point solutions can provide great benefits, they are not an alternative to object-level control of your databases. Exit-point solutions help secure interfaces, but they do not completely protect the data that is stored in your DB2 objects. Exit points do not exist for every data access interface on the system. Therefore, if an application starts using an unprotected interface, the only thing protecting your data is object-level access control. When your security implementation totally relies on exit points, then it is also important to track any new data interfaces that appear as IBM delivers new releases and products to ensure that your exit-point solution provides coverage for those new interfaces."}, {"self_ref": "#/texts/181", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 19, "bbox": {"l": 135.8739471435547, "t": 509.3145446777344, "r": 546.2266235351562, "b": 462.8641662597656, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 331]}], "orig": "An exit-point solution is a good option for databases with security holes that are caused by a reliance on the default security setup or menu-based control. However, your security work should not stop there. Instead, you must continue to work on a complete database security solution by controlling data access at the object level.", "text": "An exit-point solution is a good option for databases with security holes that are caused by a reliance on the default security setup or menu-based control. However, your security work should not stop there. Instead, you must continue to work on a complete database security solution by controlling data access at the object level."}, {"self_ref": "#/texts/182", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 19, "bbox": {"l": 64.80000305175781, "t": 435.8830261230469, "r": 295.2049255371094, "b": 419.7867126464844, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 31]}], "orig": "1.3 DB2 for i security controls", "text": "1.3 DB2 for i security controls", "level": 1}, {"self_ref": "#/texts/183", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 19, "bbox": {"l": 135.9359893798828, "t": 403.39501953125, "r": 547.1688842773438, "b": 333.2792053222656, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 511]}], "orig": "As described in 1.2, \"Current state of IBM i security\" on page 2, object-level controls on your DB2 objects are a critical success factor in securing your business data. Although database object-level security is a strong security feature, some clients have found that object-level security does not have the granularity that is required to adhere to regulatory or compliance policies. A user that is granted object-level access to a DB2 table has the authority to view all of the rows and values in that table.", "text": "As described in 1.2, \"Current state of IBM i security\" on page 2, object-level controls on your DB2 objects are a critical success factor in securing your business data. Although database object-level security is a strong security feature, some clients have found that object-level security does not have the granularity that is required to adhere to regulatory or compliance policies. A user that is granted object-level access to a DB2 table has the authority to view all of the rows and values in that table."}, {"self_ref": "#/texts/184", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 19, "bbox": {"l": 135.52011108398438, "t": 321.39666748046875, "r": 466.3186340332031, "b": 311.0404052734375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 78]}], "orig": "As shown in Figure 1-1, it is an all-or-nothing access to the rows of a table.", "text": "As shown in Figure 1-1, it is an all-or-nothing access to the rows of a table."}, {"self_ref": "#/texts/185", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 19, "bbox": {"l": 135.93324279785156, "t": 89.82525634765625, "r": 354.8916015625, "b": 80.60284423828125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 55]}], "orig": "Figure 1-1 All-or-nothing access to the rows of a table", "text": "Figure 1-1 All-or-nothing access to the rows of a table"}, {"self_ref": "#/texts/186", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 19, "bbox": {"l": 328.2245788574219, "t": 37.203857421875, "r": 529.1063232421875, "b": 27.9105224609375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 47]}], "orig": "Chapter 1. Securing and protecting IBM DB2 data", "text": "Chapter 1. Securing and protecting IBM DB2 data"}, {"self_ref": "#/texts/187", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 19, "bbox": {"l": 540.928466796875, "t": 37.6522216796875, "r": 547.2176513671875, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 1]}], "orig": "3", "text": "3"}, {"self_ref": "#/texts/188", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 20, "bbox": {"l": 64.09014129638672, "t": 37.92034912109375, "r": 72.8219985961914, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 1]}], "orig": "4", "text": "4"}, {"self_ref": "#/texts/189", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 20, "bbox": {"l": 87.84030151367188, "t": 37.3697509765625, "r": 328.7253723144531, "b": 28.01824951171875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/190", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 20, "bbox": {"l": 135.9996337890625, "t": 721.3639526367188, "r": 544.3033447265625, "b": 638.906982421875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 589]}], "orig": "Many businesses are trying to limit data access to a need-to-know basis. This security goal means that users should be given access only to the minimum set of data that is required to perform their job. Often, users with object-level access are given access to row and column values that are beyond what their business task requires because that object-level security provides an all-or-nothing solution. For example, object-level controls allow a manager to access data about all employees. Most security policies limit a manager to accessing data only for the employees that they manage.", "text": "Many businesses are trying to limit data access to a need-to-know basis. This security goal means that users should be given access only to the minimum set of data that is required to perform their job. Often, users with object-level access are given access to row and column values that are beyond what their business task requires because that object-level security provides an all-or-nothing solution. For example, object-level controls allow a manager to access data about all employees. Most security policies limit a manager to accessing data only for the employees that they manage."}, {"self_ref": "#/texts/191", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 20, "bbox": {"l": 64.4480209350586, "t": 619.7714233398438, "r": 301.4690246582031, "b": 606.2725830078125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 37]}], "orig": "1.3.1 Existing row and column control", "text": "1.3.1 Existing row and column control", "level": 1}, {"self_ref": "#/texts/192", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 20, "bbox": {"l": 135.77957153320312, "t": 593.479248046875, "r": 541.5673828125, "b": 534.8919677734375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 377]}], "orig": "Some IBM i clients have tried augmenting the all-or-nothing object-level security with SQL views (or logical files) and application logic, as shown in Figure 1-2. However, application-based logic is easy to bypass with all of the different data access interfaces that are provided by the IBM i operating system, such as Open Database Connectivity (ODBC) and System i Navigator.", "text": "Some IBM i clients have tried augmenting the all-or-nothing object-level security with SQL views (or logical files) and application logic, as shown in Figure 1-2. However, application-based logic is easy to bypass with all of the different data access interfaces that are provided by the IBM i operating system, such as Open Database Connectivity (ODBC) and System i Navigator."}, {"self_ref": "#/texts/193", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 20, "bbox": {"l": 135.9119110107422, "t": 523.368896484375, "r": 547.4407958984375, "b": 477.10101318359375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 340]}], "orig": "Using SQL views to limit access to a subset of the data in a table also has its own set of challenges. First, there is the complexity of managing all of the SQL view objects that are used for securing data access. Second, scaling a view-based security solution can be difficult as the amount of data grows and the number of users increases.", "text": "Using SQL views to limit access to a subset of the data in a table also has its own set of challenges. First, there is the complexity of managing all of the SQL view objects that are used for securing data access. Second, scaling a view-based security solution can be difficult as the amount of data grows and the number of users increases."}, {"self_ref": "#/texts/194", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 20, "bbox": {"l": 136.0379638671875, "t": 465.39056396484375, "r": 547.232666015625, "b": 430.80120849609375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 247]}], "orig": "Even if you are willing to live with these performance and management issues, a user with *ALLOBJ access still can directly access all of the data in the underlying DB2 table and easily bypass the security controls that are built into an SQL view.", "text": "Even if you are willing to live with these performance and management issues, a user with *ALLOBJ access still can directly access all of the data in the underlying DB2 table and easily bypass the security controls that are built into an SQL view."}, {"self_ref": "#/texts/195", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 20, "bbox": {"l": 136.23910522460938, "t": 101.11260986328125, "r": 317.073486328125, "b": 91.83807373046875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 43]}], "orig": "Figure 1-2 Existing row and column controls", "text": "Figure 1-2 Existing row and column controls"}, {"self_ref": "#/texts/196", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 21, "bbox": {"l": 64.52648162841797, "t": 721.6258544921875, "r": 394.39227294921875, "b": 708.67724609375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 49]}], "orig": "1.3.2 New controls: Row and Column Access Control", "text": "1.3.2 New controls: Row and Column Access Control", "level": 1}, {"self_ref": "#/texts/197", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 21, "bbox": {"l": 136.02708435058594, "t": 695.4644165039062, "r": 539.9359130859375, "b": 648.8173828125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 270]}], "orig": "Based on the challenges that are associated with the existing technology available for controlling row and column access at a more granular level, IBM delivered new security support in the IBM i 7.2 release; this support is known as Row and Column Access Control (RCAC).", "text": "Based on the challenges that are associated with the existing technology available for controlling row and column access at a more granular level, IBM delivered new security support in the IBM i 7.2 release; this support is known as Row and Column Access Control (RCAC)."}, {"self_ref": "#/texts/198", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 21, "bbox": {"l": 135.92579650878906, "t": 637.4297485351562, "r": 542.2587280273438, "b": 566.8125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 514]}], "orig": "The new DB2 RCAC support provides a method for controlling data access across all interfaces and all types of users with a data-centric solution. Moving security processing to the database layer makes it easier to build controls that meet your compliance policies. The RCAC support provides an additional layer of security that complements object-level authorizations to limit data access to a need-to-know basis. Therefore, it is critical that you first have a sound object-level security implementation in place.", "text": "The new DB2 RCAC support provides a method for controlling data access across all interfaces and all types of users with a data-centric solution. Moving security processing to the database layer makes it easier to build controls that meet your compliance policies. The RCAC support provides an additional layer of security that complements object-level authorizations to limit data access to a need-to-know basis. Therefore, it is critical that you first have a sound object-level security implementation in place."}, {"self_ref": "#/texts/199", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 21, "bbox": {"l": 328.2296447753906, "t": 37.23065185546875, "r": 529.1063232421875, "b": 27.9176025390625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 47]}], "orig": "Chapter 1. Securing and protecting IBM DB2 data", "text": "Chapter 1. Securing and protecting IBM DB2 data"}, {"self_ref": "#/texts/200", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 21, "bbox": {"l": 541.1834716796875, "t": 37.7110595703125, "r": 547.2176513671875, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 1]}], "orig": "5", "text": "5"}, {"self_ref": "#/texts/201", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 22, "bbox": {"l": 64.46890258789062, "t": 37.845947265625, "r": 72.8219985961914, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 1]}], "orig": "6", "text": "6"}, {"self_ref": "#/texts/202", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 22, "bbox": {"l": 87.84030151367188, "t": 37.47662353515625, "r": 328.78973388671875, "b": 27.92205810546875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/203", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 23, "bbox": {"l": 81.0, "t": 523.457275390625, "r": 115.13253021240234, "b": 517.019287109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 10]}], "orig": "Chapter 2.", "text": "Chapter 2."}, {"self_ref": "#/texts/204", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 23, "bbox": {"l": 500.3999938964844, "t": 698.85400390625, "r": 522.6177368164062, "b": 661.8682861328125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 1]}], "orig": "2", "text": "2"}, {"self_ref": "#/texts/205", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 23, "bbox": {"l": 136.8000030517578, "t": 538.9207763671875, "r": 515.1311645507812, "b": 512.5958862304688, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 30]}], "orig": "Roles and separation of duties", "text": "Roles and separation of duties", "level": 1}, {"self_ref": "#/texts/206", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 23, "bbox": {"l": 135.93650817871094, "t": 475.45037841796875, "r": 547.3323974609375, "b": 440.9854431152344, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 266]}], "orig": "One of the primary objectives of row and column access control (RCAC) is to create data security policies that control and govern user access to data and limit the data access of DB2 designers and administrators to only the minimum that is required to do their jobs.", "text": "One of the primary objectives of row and column access control (RCAC) is to create data security policies that control and govern user access to data and limit the data access of DB2 designers and administrators to only the minimum that is required to do their jobs."}, {"self_ref": "#/texts/207", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 23, "bbox": {"l": 135.88510131835938, "t": 429.3551330566406, "r": 547.2574462890625, "b": 383.07965087890625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 290]}], "orig": "To accomplish these tasks, RCAC engineers devised a set of functional roles that, as a group, implement effectively data access requirements and also limit the span of control of each role so that each role is given only the authorities that are needed to perform its specific set of tasks.", "text": "To accomplish these tasks, RCAC engineers devised a set of functional roles that, as a group, implement effectively data access requirements and also limit the span of control of each role so that each role is given only the authorities that are needed to perform its specific set of tasks."}, {"self_ref": "#/texts/208", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 23, "bbox": {"l": 135.7690887451172, "t": 371.40936279296875, "r": 547.2655029296875, "b": 349.0602722167969, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 115]}], "orig": "This chapter describes the concepts of roles and separation of duties on DB2 for i and covers the following topics:", "text": "This chapter describes the concepts of roles and separation of duties on DB2 for i and covers the following topics:"}, {"self_ref": "#/texts/209", "parent": {"cref": "#/groups/14"}, "children": [], "label": "list_item", "prov": [{"page_no": 23, "bbox": {"l": 135.8439483642578, "t": 342.1582946777344, "r": 176.71270751953125, "b": 332.0804748535156, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 21]}], "orig": "GLYPH Roles", "text": "GLYPH Roles", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/210", "parent": {"cref": "#/groups/14"}, "children": [], "label": "list_item", "prov": [{"page_no": 23, "bbox": {"l": 135.7147674560547, "t": 329.8328552246094, "r": 239.9706268310547, "b": 319.5862121582031, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 36]}], "orig": "GLYPH Separation of duties", "text": "GLYPH Separation of duties", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/211", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 23, "bbox": {"l": 63.7032470703125, "t": 37.3309326171875, "r": 257.24334716796875, "b": 27.83447265625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 48]}], "orig": "' Copyright IBM Corp. 2014. All rights reserved.", "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"self_ref": "#/texts/212", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 23, "bbox": {"l": 540.8427734375, "t": 37.8079833984375, "r": 547.2176513671875, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 1]}], "orig": "7", "text": "7"}, {"self_ref": "#/texts/213", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 24, "bbox": {"l": 64.00420379638672, "t": 718.5374755859375, "r": 139.42576599121094, "b": 702.8963012695312, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 9]}], "orig": "2.1 Roles", "text": "2.1 Roles", "level": 1}, {"self_ref": "#/texts/214", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 24, "bbox": {"l": 135.84288024902344, "t": 686.0313720703125, "r": 547.2965087890625, "b": 615.6285400390625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 543]}], "orig": "Traditionally, data access roles are defined in a binary way, where access to the data is either not permitted or access to the data is permitted. A full access capability can also be instantiated by the *ALLOBJ special authority, either explicitly or implicitly, for the security officer. If you hold the role of security officer, or have all *ALLOBJ special authority, you have access to all the data, with no exceptions. Unfortunately, this might not meet the organization's requirements for limiting access to data or separation of duties.", "text": "Traditionally, data access roles are defined in a binary way, where access to the data is either not permitted or access to the data is permitted. A full access capability can also be instantiated by the *ALLOBJ special authority, either explicitly or implicitly, for the security officer. If you hold the role of security officer, or have all *ALLOBJ special authority, you have access to all the data, with no exceptions. Unfortunately, this might not meet the organization's requirements for limiting access to data or separation of duties."}, {"self_ref": "#/texts/215", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 24, "bbox": {"l": 135.82821655273438, "t": 604.0189819335938, "r": 547.2587890625, "b": 569.6303100585938, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 282]}], "orig": "To assist with defining roles and the separation of duties with appropriate authority, IBM i provides function usage IDs . A function usage ID implements granular security controls rather than granting users powerful special authorities, such as all object, job control, or service.", "text": "To assist with defining roles and the separation of duties with appropriate authority, IBM i provides function usage IDs . A function usage ID implements granular security controls rather than granting users powerful special authorities, such as all object, job control, or service."}, {"self_ref": "#/texts/216", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 24, "bbox": {"l": 136.2572479248047, "t": 557.9967651367188, "r": 547.3123779296875, "b": 536.1390380859375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 95]}], "orig": "Roles are divided among the following DB2 functions and their corresponding function usage IDs:", "text": "Roles are divided among the following DB2 functions and their corresponding function usage IDs:"}, {"self_ref": "#/texts/217", "parent": {"cref": "#/groups/15"}, "children": [], "label": "list_item", "prov": [{"page_no": 24, "bbox": {"l": 135.83023071289062, "t": 529.70947265625, "r": 474.0260009765625, "b": 519.1592407226562, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 77]}], "orig": "GLYPH DDM and IBM DRDAfi application server access: QIBM_DB_DDMDRDA", "text": "GLYPH DDM and IBM DRDAfi application server access: QIBM_DB_DDMDRDA", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/218", "parent": {"cref": "#/groups/15"}, "children": [], "label": "list_item", "prov": [{"page_no": 24, "bbox": {"l": 135.586669921875, "t": 517.5133056640625, "r": 376.04473876953125, "b": 507.1470642089844, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 62]}], "orig": "GLYPH Toolbox application server access: QIBM_DB_ZDA", "text": "GLYPH Toolbox application server access: QIBM_DB_ZDA", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/219", "parent": {"cref": "#/groups/15"}, "children": [], "label": "list_item", "prov": [{"page_no": 24, "bbox": {"l": 135.70936584472656, "t": 505.62322998046875, "r": 391.5639953613281, "b": 495.15960693359375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 63]}], "orig": "GLYPH Database Administrator function: QIBM_DB_SQLADM", "text": "GLYPH Database Administrator function: QIBM_DB_SQLADM", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/220", "parent": {"cref": "#/groups/15"}, "children": [], "label": "list_item", "prov": [{"page_no": 24, "bbox": {"l": 135.47157287597656, "t": 493.7165832519531, "r": 384.0774841308594, "b": 483.1597900390625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 61]}], "orig": "GLYPH Database Information function: QIBM_DB_SYSMON", "text": "GLYPH Database Information function: QIBM_DB_SYSMON", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/221", "parent": {"cref": "#/groups/15"}, "children": [], "label": "list_item", "prov": [{"page_no": 24, "bbox": {"l": 135.6302947998047, "t": 481.74273681640625, "r": 385.5570983886719, "b": 471.05413818359375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 63]}], "orig": "GLYPH Security Administrator function: QIBM_DB_SECADM", "text": "GLYPH Security Administrator function: QIBM_DB_SECADM", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/222", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 24, "bbox": {"l": 63.82975387573242, "t": 451.798095703125, "r": 501.0556335449219, "b": 438.3501281738281, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 61]}], "orig": "2.1.1 DDM and DRDA application server access: QIBM_DB_DDMDRDA", "text": "2.1.1 DDM and DRDA application server access: QIBM_DB_DDMDRDA", "level": 1}, {"self_ref": "#/texts/223", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 24, "bbox": {"l": 135.88975524902344, "t": 425.7085266113281, "r": 547.2295532226562, "b": 366.8034362792969, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 392]}], "orig": "The QIBM_DB_DDMDRDA function usage ID restricts access to the DDM and DRDA application server (QRWTSRVR). This function usage ID provides an easy alternative (rather than writing an exit program) to control access to DDM and DRDA from the server side. The function usage IDs ship with the default authority of *ALLOWED. The security officer can easily deny access to specific users or groups.", "text": "The QIBM_DB_DDMDRDA function usage ID restricts access to the DDM and DRDA application server (QRWTSRVR). This function usage ID provides an easy alternative (rather than writing an exit program) to control access to DDM and DRDA from the server side. The function usage IDs ship with the default authority of *ALLOWED. The security officer can easily deny access to specific users or groups."}, {"self_ref": "#/texts/224", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 24, "bbox": {"l": 135.7061767578125, "t": 355.357421875, "r": 534.9490356445312, "b": 333.08551025390625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 121]}], "orig": "This is an alternative to a User Exit Program approach. No coding is required, it is easy to change, and it is auditable.", "text": "This is an alternative to a User Exit Program approach. No coding is required, it is easy to change, and it is auditable."}, {"self_ref": "#/texts/225", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 24, "bbox": {"l": 63.88609313964844, "t": 313.75762939453125, "r": 413.2720031738281, "b": 300.5189514160156, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 52]}], "orig": "2.1.2 Toolbox application server access: QIBM_DB_ZDA", "text": "2.1.2 Toolbox application server access: QIBM_DB_ZDA", "level": 1}, {"self_ref": "#/texts/226", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 24, "bbox": {"l": 135.62423706054688, "t": 287.4773864746094, "r": 543.151123046875, "b": 229.11941528320312, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 350]}], "orig": "The QIBM_DB_ZDA function usage ID restricts access to the optimized server that handles DB2 requests from clients (QZDASOINIT and QZDASSINIT). Server access is used by the ODBC, OLE DB, and .NET providers that ship with IBM i Access for Windows and JDBC Toolbox, Run SQL scripts, and other parts of System i Navigator and Navigator for i Web console.", "text": "The QIBM_DB_ZDA function usage ID restricts access to the optimized server that handles DB2 requests from clients (QZDASOINIT and QZDASSINIT). Server access is used by the ODBC, OLE DB, and .NET providers that ship with IBM i Access for Windows and JDBC Toolbox, Run SQL scripts, and other parts of System i Navigator and Navigator for i Web console."}, {"self_ref": "#/texts/227", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 24, "bbox": {"l": 135.72520446777344, "t": 217.471435546875, "r": 546.2078247070312, "b": 170.85626220703125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 289]}], "orig": "This function usage ID provides an easy alternative (rather than writing an exit program) to control access to these functions from the server side. The function usage IDs ship with the default authority of *ALLOWED. The security officer can easily deny access to specific users or groups.", "text": "This function usage ID provides an easy alternative (rather than writing an exit program) to control access to these functions from the server side. The function usage IDs ship with the default authority of *ALLOWED. The security officer can easily deny access to specific users or groups."}, {"self_ref": "#/texts/228", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 24, "bbox": {"l": 135.83445739746094, "t": 159.5340576171875, "r": 534.9490966796875, "b": 137.03271484375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 121]}], "orig": "This is an alternative to a User Exit Program approach. No coding is required, it is easy to change, and it is auditable.", "text": "This is an alternative to a User Exit Program approach. No coding is required, it is easy to change, and it is auditable."}, {"self_ref": "#/texts/229", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 24, "bbox": {"l": 64.24457550048828, "t": 37.793212890625, "r": 72.8219985961914, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 1]}], "orig": "8", "text": "8"}, {"self_ref": "#/texts/230", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 24, "bbox": {"l": 87.8071517944336, "t": 37.302001953125, "r": 328.7253723144531, "b": 28.02972412109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/231", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 25, "bbox": {"l": 64.0216293334961, "t": 721.53125, "r": 433.47052001953125, "b": 708.67724609375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 53]}], "orig": "2.1.3 Database Administrator function: QIBM_DB_SQLADM", "text": "2.1.3 Database Administrator function: QIBM_DB_SQLADM", "level": 1}, {"self_ref": "#/texts/232", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 25, "bbox": {"l": 135.77142333984375, "t": 695.2532958984375, "r": 547.0184326171875, "b": 636.6917114257812, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 363]}], "orig": "The Database Administrator function (QIBM_DB_SQLADM) is needed whenever a user is analyzing and viewing SQL performance data. Some of the more common database administrator functions include displaying statements from the SQL Plan Cache, analyzing SQL Performance Monitors and SQL Plan Cache Snapshots, and displaying the SQL details of a job other than your own.", "text": "The Database Administrator function (QIBM_DB_SQLADM) is needed whenever a user is analyzing and viewing SQL performance data. Some of the more common database administrator functions include displaying statements from the SQL Plan Cache, analyzing SQL Performance Monitors and SQL Plan Cache Snapshots, and displaying the SQL details of a job other than your own."}, {"self_ref": "#/texts/233", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 25, "bbox": {"l": 135.78330993652344, "t": 625.3063354492188, "r": 547.3245239257812, "b": 591.0904541015625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 274]}], "orig": "The Database Administrator function provides an alternative to granting *JOBCTL, but simply having the Database Administrator authorization does not carry with it all the needed object authorities for every administration task. The default behavior is to deny authorization.", "text": "The Database Administrator function provides an alternative to granting *JOBCTL, but simply having the Database Administrator authorization does not carry with it all the needed object authorities for every administration task. The default behavior is to deny authorization."}, {"self_ref": "#/texts/234", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 25, "bbox": {"l": 135.86964416503906, "t": 579.1475830078125, "r": 541.2985229492188, "b": 532.985595703125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 352]}], "orig": "To perform database administrator tasks that are not related to performance analysis, you must refer to the details of the task to determine its specific authorization requirements. For example, to allow a database administrator to reorganize a table, the DBA must have additional object authorities to the table that are not covered by QIBM_DB_SQLADM.", "text": "To perform database administrator tasks that are not related to performance analysis, you must refer to the details of the task to determine its specific authorization requirements. For example, to allow a database administrator to reorganize a table, the DBA must have additional object authorities to the table that are not covered by QIBM_DB_SQLADM."}, {"self_ref": "#/texts/235", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 25, "bbox": {"l": 136.13877868652344, "t": 517.5679931640625, "r": 392.7084045410156, "b": 505.5359802246094, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 38]}], "orig": "Granting QIBM_DB_SQLADM function usage", "text": "Granting QIBM_DB_SQLADM function usage", "level": 1}, {"self_ref": "#/texts/236", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 25, "bbox": {"l": 136.1097412109375, "t": 502.6596374511719, "r": 532.0657348632812, "b": 480.2784729003906, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 132]}], "orig": "Only the security administrator (*SECADM) is allowed to change the list of users that can perform Database Administration functions.", "text": "Only the security administrator (*SECADM) is allowed to change the list of users that can perform Database Administration functions."}, {"self_ref": "#/texts/237", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 25, "bbox": {"l": 64.01083374023438, "t": 460.90020751953125, "r": 419.47637939453125, "b": 447.6772766113281, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 51]}], "orig": "2.1.4 Database Information function: QIBM_DB_SYSMON", "text": "2.1.4 Database Information function: QIBM_DB_SYSMON", "level": 1}, {"self_ref": "#/texts/238", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 25, "bbox": {"l": 135.8494873046875, "t": 434.6439514160156, "r": 547.1928100585938, "b": 400.29864501953125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 190]}], "orig": "The Database Information function (QIBM_DB_SYSMON) provides much less authority than Database Administrator function. Its primary use allows a user to examine high-level database properties.", "text": "The Database Information function (QIBM_DB_SYSMON) provides much less authority than Database Administrator function. Its primary use allows a user to examine high-level database properties."}, {"self_ref": "#/texts/239", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 25, "bbox": {"l": 136.19979858398438, "t": 388.66790771484375, "r": 547.2994384765625, "b": 354.2794494628906, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 229]}], "orig": "For example, a user that does not have *JOBCTL or QIBM_DB_SQLADM can still view the SQL Plan Cache properties if granted authority to QIBM_DB_SYSMON. Without granting this authority, the default behavior is to deny authorization.", "text": "For example, a user that does not have *JOBCTL or QIBM_DB_SQLADM can still view the SQL Plan Cache properties if granted authority to QIBM_DB_SYSMON. Without granting this authority, the default behavior is to deny authorization."}, {"self_ref": "#/texts/240", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 25, "bbox": {"l": 136.31793212890625, "t": 338.39239501953125, "r": 392.7384033203125, "b": 326.24853515625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 38]}], "orig": "Granting QIBM_DB_SYSMON function usage", "text": "Granting QIBM_DB_SYSMON function usage", "level": 1}, {"self_ref": "#/texts/241", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 25, "bbox": {"l": 136.06344604492188, "t": 323.30474853515625, "r": 532.0657348632812, "b": 301.23870849609375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 129]}], "orig": "Only the security administrator (*SECADM) is allowed to change the list of users that can perform Database Information functions.", "text": "Only the security administrator (*SECADM) is allowed to change the list of users that can perform Database Information functions."}, {"self_ref": "#/texts/242", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 25, "bbox": {"l": 64.14019775390625, "t": 281.6142272949219, "r": 427.0501403808594, "b": 268.63739013671875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 53]}], "orig": "2.1.5 Security Administrator function: QIBM_DB_SECADM", "text": "2.1.5 Security Administrator function: QIBM_DB_SECADM", "level": 1}, {"self_ref": "#/texts/243", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 25, "bbox": {"l": 135.73634338378906, "t": 255.36358642578125, "r": 538.3322143554688, "b": 209.25897216796875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 290]}], "orig": "The Security Administrator function (QIBM_DB_SECADM) grants authorities, revokes authorities, changes ownership, or changes the primary group without giving access to the object or, in the case of a database table, to the data that is in the table or allowing other operations on the table.", "text": "The Security Administrator function (QIBM_DB_SECADM) grants authorities, revokes authorities, changes ownership, or changes the primary group without giving access to the object or, in the case of a database table, to the data that is in the table or allowing other operations on the table."}, {"self_ref": "#/texts/244", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 25, "bbox": {"l": 135.88818359375, "t": 197.62176513671875, "r": 547.2896118164062, "b": 139.040283203125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 380]}], "orig": "Only those users with the QIBM_DB_SECADM function can administer and manage RCAC rules. RCAC can be used to prevent even users with *ALLOBJ authority from freely accessing all the data in a protected database. These users are excluded from data access unless they are specifically authorized by RCAC. Without granting this authority, the default behavior is to deny authorization.", "text": "Only those users with the QIBM_DB_SECADM function can administer and manage RCAC rules. RCAC can be used to prevent even users with *ALLOBJ authority from freely accessing all the data in a protected database. These users are excluded from data access unless they are specifically authorized by RCAC. Without granting this authority, the default behavior is to deny authorization."}, {"self_ref": "#/texts/245", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 25, "bbox": {"l": 136.17408752441406, "t": 123.54425048828125, "r": 392.72161865234375, "b": 111.33062744140625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 38]}], "orig": "Granting QIBM_DB_SECADM function usage", "text": "Granting QIBM_DB_SECADM function usage", "level": 1}, {"self_ref": "#/texts/246", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 25, "bbox": {"l": 136.1047821044922, "t": 108.106201171875, "r": 460.46807861328125, "b": 85.6243896484375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 117]}], "orig": "Only QSECOFR or a user with *SECADM special authority can grant the QIBM_DB_SECADM function usage to a user or group.", "text": "Only QSECOFR or a user with *SECADM special authority can grant the QIBM_DB_SECADM function usage to a user or group."}, {"self_ref": "#/texts/247", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 25, "bbox": {"l": 360.4371643066406, "t": 37.116455078125, "r": 529.1567993164062, "b": 27.8848876953125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 41]}], "orig": "Chapter 2. Roles and separation of duties", "text": "Chapter 2. Roles and separation of duties"}, {"self_ref": "#/texts/248", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 25, "bbox": {"l": 540.8857421875, "t": 37.69683837890625, "r": 547.2386474609375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 1]}], "orig": "9", "text": "9"}, {"self_ref": "#/texts/249", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 26, "bbox": {"l": 64.09011840820312, "t": 721.8206787109375, "r": 335.4955139160156, "b": 708.0057373046875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 38]}], "orig": "2.1.6 Change Function Usage CL command", "text": "2.1.6 Change Function Usage CL command", "level": 1}, {"self_ref": "#/texts/250", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 26, "bbox": {"l": 135.83584594726562, "t": 695.3712768554688, "r": 547.284423828125, "b": 684.7753295898438, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 90]}], "orig": "The following CL commands can be used to work with, display, or change function usage IDs:", "text": "The following CL commands can be used to work with, display, or change function usage IDs:"}, {"self_ref": "#/texts/251", "parent": {"cref": "#/groups/16"}, "children": [], "label": "list_item", "prov": [{"page_no": 26, "bbox": {"l": 135.6907196044922, "t": 678.259765625, "r": 301.5174865722656, "b": 667.4461669921875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 49]}], "orig": "GLYPH Work Function Usage ( WRKFCNUSG )", "text": "GLYPH Work Function Usage ( WRKFCNUSG )", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/252", "parent": {"cref": "#/groups/16"}, "children": [], "label": "list_item", "prov": [{"page_no": 26, "bbox": {"l": 135.7242889404297, "t": 666.0692138671875, "r": 313.39776611328125, "b": 655.3120727539062, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 51]}], "orig": "GLYPH Change Function Usage ( CHGFCNUSG )", "text": "GLYPH Change Function Usage ( CHGFCNUSG )", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/253", "parent": {"cref": "#/groups/16"}, "children": [], "label": "list_item", "prov": [{"page_no": 26, "bbox": {"l": 135.71124267578125, "t": 654.0370483398438, "r": 310.8171081542969, "b": 643.400390625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 52]}], "orig": "GLYPH Display Function Usage ( DSPFCNUSG )", "text": "GLYPH Display Function Usage ( DSPFCNUSG )", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/254", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 26, "bbox": {"l": 136.30247497558594, "t": 632.781494140625, "r": 512.5380249023438, "b": 610.2994995117188, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 126]}], "orig": "For example, the following CHGFCNUSG command shows granting authorization to user HBEDOYA to administer and manage RCAC rules:", "text": "For example, the following CHGFCNUSG command shows granting authorization to user HBEDOYA to administer and manage RCAC rules:"}, {"self_ref": "#/texts/255", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 26, "bbox": {"l": 136.3306427001953, "t": 604.0092163085938, "r": 441.59686279296875, "b": 593.1199951171875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 61]}], "orig": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED)", "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED)"}, {"self_ref": "#/texts/256", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 26, "bbox": {"l": 63.9356689453125, "t": 573.8617553710938, "r": 544.4754638671875, "b": 559.875732421875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 72]}], "orig": "2.1.7 Verifying function usage IDs for RCAC with the FUNCTION_USAGE view", "text": "2.1.7 Verifying function usage IDs for RCAC with the FUNCTION_USAGE view", "level": 1}, {"self_ref": "#/texts/257", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 26, "bbox": {"l": 135.84828186035156, "t": 547.4229736328125, "r": 519.5179443359375, "b": 525.2785034179688, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 130]}], "orig": "The FUNCTION_USAGE view contains function usage configuration details. Table 2-1 describes the columns in the FUNCTION_USAGE view.", "text": "The FUNCTION_USAGE view contains function usage configuration details. Table 2-1 describes the columns in the FUNCTION_USAGE view."}, {"self_ref": "#/texts/258", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 26, "bbox": {"l": 136.8000030517578, "t": 513.490478515625, "r": 284.9328308105469, "b": 504.11700439453125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 29]}], "orig": "Table 2-1 FUNCTION_USAGE view", "text": "Table 2-1 FUNCTION_USAGE view"}, {"self_ref": "#/texts/259", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 26, "bbox": {"l": 135.81077575683594, "t": 340.671142578125, "r": 547.2803955078125, "b": 318.2784729003906, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 112]}], "orig": "To discover who has authorization to define and manage RCAC, you can use the query that is shown in Example 2-1.", "text": "To discover who has authorization to define and manage RCAC, you can use the query that is shown in Example 2-1."}, {"self_ref": "#/texts/260", "parent": {"cref": "#/body"}, "children": [], "label": "paragraph", "prov": [{"page_no": 26, "bbox": {"l": 136.28225708007812, "t": 306.23565673828125, "r": 462.98095703125, "b": 296.11798095703125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 74]}], "orig": "Example 2-1 Query to determine who has authority to define and manage RCAC", "text": "Example 2-1 Query to determine who has authority to define and manage RCAC"}, {"self_ref": "#/texts/261", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 26, "bbox": {"l": 136.8000030517578, "t": 288.34197998046875, "r": 331.67730712890625, "b": 207.56837463378906, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 122]}], "orig": "SELECT function_id, user_name, usage, user_type FROM function_usage WHERE function_id='QIBM_DB_SECADM' ORDER BY user_name;", "text": "SELECT function_id, user_name, usage, user_type FROM function_usage WHERE function_id='QIBM_DB_SECADM' ORDER BY user_name;"}, {"self_ref": "#/texts/262", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 26, "bbox": {"l": 64.18024444580078, "t": 172.6075439453125, "r": 249.59605407714844, "b": 156.3486328125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 24]}], "orig": "2.2 Separation of duties", "text": "2.2 Separation of duties", "level": 1}, {"self_ref": "#/texts/263", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 26, "bbox": {"l": 136.1588592529297, "t": 140.1129150390625, "r": 547.2234497070312, "b": 81.817626953125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 463]}], "orig": "Separation of duties helps businesses comply with industry regulations or organizational requirements and simplifies the management of authorities. Separation of duties is commonly used to prevent fraudulent activities or errors by a single person. It provides the ability for administrative functions to be divided across individuals without overlapping responsibilities, so that one user does not possess unlimited authority, such as with the *ALLOBJ authority.", "text": "Separation of duties helps businesses comply with industry regulations or organizational requirements and simplifies the management of authorities. Separation of duties is commonly used to prevent fraudulent activities or errors by a single person. It provides the ability for administrative functions to be divided across individuals without overlapping responsibilities, so that one user does not possess unlimited authority, such as with the *ALLOBJ authority."}, {"self_ref": "#/texts/264", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 26, "bbox": {"l": 64.4488525390625, "t": 37.581298828125, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "10", "text": "10"}, {"self_ref": "#/texts/265", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 26, "bbox": {"l": 93.35774993896484, "t": 37.31072998046875, "r": 334.4214172363281, "b": 28.04144287109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/266", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 27, "bbox": {"l": 135.92747497558594, "t": 721.3446044921875, "r": 542.6943359375, "b": 650.9638671875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 516]}], "orig": "For example, assume that a business has assigned the duty to manage security on IBM i to Theresa. Before release IBM i 7.2, to grant privileges, Theresa had to have the same privileges Theresa was granting to others. Therefore, to grant *USE privileges to the PAYROLL table, Theresa had to have *OBJMGT and *USE authority (or a higher level of authority, such as *ALLOBJ). This requirement allowed Theresa to access the data in the PAYROLL table even though Theresa's job description was only to manage its security.", "text": "For example, assume that a business has assigned the duty to manage security on IBM i to Theresa. Before release IBM i 7.2, to grant privileges, Theresa had to have the same privileges Theresa was granting to others. Therefore, to grant *USE privileges to the PAYROLL table, Theresa had to have *OBJMGT and *USE authority (or a higher level of authority, such as *ALLOBJ). This requirement allowed Theresa to access the data in the PAYROLL table even though Theresa's job description was only to manage its security."}, {"self_ref": "#/texts/267", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 27, "bbox": {"l": 136.04833984375, "t": 639.4869384765625, "r": 547.303955078125, "b": 593.2598266601562, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 285]}], "orig": "In IBM i 7.2, the QIBM_DB_SECADM function usage grants authorities, revokes authorities, changes ownership, or changes the primary group without giving access to the object or, in the case of a database table, to the data that is in the table or allowing other operations on the table.", "text": "In IBM i 7.2, the QIBM_DB_SECADM function usage grants authorities, revokes authorities, changes ownership, or changes the primary group without giving access to the object or, in the case of a database table, to the data that is in the table or allowing other operations on the table."}, {"self_ref": "#/texts/268", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 27, "bbox": {"l": 136.00685119628906, "t": 581.5885009765625, "r": 538.6507568359375, "b": 558.9195556640625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 129]}], "orig": "QIBM_DB_SECADM function usage can be granted only by a user with *SECADM special authority and can be given to a user or a group.", "text": "QIBM_DB_SECADM function usage can be granted only by a user with *SECADM special authority and can be given to a user or a group."}, {"self_ref": "#/texts/269", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 27, "bbox": {"l": 135.68702697753906, "t": 547.4618530273438, "r": 545.7960205078125, "b": 513.281005859375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 204]}], "orig": "QIBM_DB_SECADM also is responsible for administering RCAC, which restricts which rows a user is allowed to access in a table and whether a user is allowed to see information in certain columns of a table.", "text": "QIBM_DB_SECADM also is responsible for administering RCAC, which restricts which rows a user is allowed to access in a table and whether a user is allowed to see information in certain columns of a table."}, {"self_ref": "#/texts/270", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 27, "bbox": {"l": 135.86065673828125, "t": 501.3948669433594, "r": 539.80712890625, "b": 455.2619934082031, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 285]}], "orig": "A preferred practice is that the RCAC administrator has the QIBM_DB_SECADM function usage ID, but absolutely no other data privileges. The result is that the RCAC administrator can deploy and maintain the RCAC constructs, but cannot grant themselves unauthorized access to data itself.", "text": "A preferred practice is that the RCAC administrator has the QIBM_DB_SECADM function usage ID, but absolutely no other data privileges. The result is that the RCAC administrator can deploy and maintain the RCAC constructs, but cannot grant themselves unauthorized access to data itself."}, {"self_ref": "#/texts/271", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 27, "bbox": {"l": 135.7205352783203, "t": 443.39068603515625, "r": 543.067138671875, "b": 421.3023681640625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 136]}], "orig": "Table 2-2 shows a comparison of the different function usage IDs and *JOBCTL authority to the different CL commands and DB2 for i tools.", "text": "Table 2-2 shows a comparison of the different function usage IDs and *JOBCTL authority to the different CL commands and DB2 for i tools."}, {"self_ref": "#/texts/272", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 27, "bbox": {"l": 64.80000305175781, "t": 409.4712829589844, "r": 392.4624328613281, "b": 399.74505615234375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 78]}], "orig": "Table 2-2 Comparison of the different function usage IDs and *JOBCTL authority", "text": "Table 2-2 Comparison of the different function usage IDs and *JOBCTL authority"}, {"self_ref": "#/texts/273", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 27, "bbox": {"l": 354.4815673828125, "t": 37.05841064453125, "r": 523.5407104492188, "b": 27.89447021484375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 41]}], "orig": "Chapter 2. Roles and separation of duties", "text": "Chapter 2. Roles and separation of duties"}, {"self_ref": "#/texts/274", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 27, "bbox": {"l": 536.0808715820312, "t": 37.7674560546875, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "11", "text": "11"}, {"self_ref": "#/texts/275", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 28, "bbox": {"l": 64.58246612548828, "t": 37.58502197265625, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "12", "text": "12"}, {"self_ref": "#/texts/276", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 28, "bbox": {"l": 93.4140625, "t": 37.4124755859375, "r": 334.4214172363281, "b": 27.99273681640625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/277", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 29, "bbox": {"l": 81.0, "t": 523.457275390625, "r": 115.13253021240234, "b": 517.019287109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 10]}], "orig": "Chapter 3.", "text": "Chapter 3."}, {"self_ref": "#/texts/278", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 29, "bbox": {"l": 500.3999938964844, "t": 698.8939819335938, "r": 522.6177368164062, "b": 661.8682861328125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 1]}], "orig": "3", "text": "3"}, {"self_ref": "#/texts/279", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 29, "bbox": {"l": 136.8000030517578, "t": 539.2265014648438, "r": 546.0291748046875, "b": 513.0821533203125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 29]}], "orig": "Row and Column Access Control", "text": "Row and Column Access Control", "level": 1}, {"self_ref": "#/texts/280", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 29, "bbox": {"l": 135.7134552001953, "t": 475.3383483886719, "r": 536.1522827148438, "b": 453.0984802246094, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 133]}], "orig": "This chapter describes what Row and Column Access Control (RCAC) is, its components, and then illustrates RCAC with a simple example.", "text": "This chapter describes what Row and Column Access Control (RCAC) is, its components, and then illustrates RCAC with a simple example."}, {"self_ref": "#/texts/281", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 29, "bbox": {"l": 136.12974548339844, "t": 441.3373107910156, "r": 347.4121398925781, "b": 431.07891845703125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 49]}], "orig": "The following topics are covered in this chapter:", "text": "The following topics are covered in this chapter:"}, {"self_ref": "#/texts/282", "parent": {"cref": "#/groups/17"}, "children": [], "label": "list_item", "prov": [{"page_no": 29, "bbox": {"l": 135.65553283691406, "t": 424.01177978515625, "r": 397.1086730957031, "b": 413.7755432128906, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 69]}], "orig": "GLYPH Explanation of RCAC and the concept of access control", "text": "GLYPH Explanation of RCAC and the concept of access control", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/283", "parent": {"cref": "#/groups/17"}, "children": [], "label": "list_item", "prov": [{"page_no": 29, "bbox": {"l": 135.7020721435547, "t": 411.87139892578125, "r": 348.458984375, "b": 401.86920166015625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 63]}], "orig": "GLYPH Special registers and built-in global variables", "text": "GLYPH Special registers and built-in global variables", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/284", "parent": {"cref": "#/groups/17"}, "children": [], "label": "list_item", "prov": [{"page_no": 29, "bbox": {"l": 135.77047729492188, "t": 400.1288146972656, "r": 327.0360107421875, "b": 389.711669921875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 46]}], "orig": "GLYPH VERIFY_GROUP_FOR_USER function", "text": "GLYPH VERIFY_GROUP_FOR_USER function", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/285", "parent": {"cref": "#/groups/17"}, "children": [], "label": "list_item", "prov": [{"page_no": 29, "bbox": {"l": 135.8464813232422, "t": 387.9523010253906, "r": 454.0877990722656, "b": 377.66046142578125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 86]}], "orig": "GLYPH Establishing and controlling accessibility by using the RCAC rule text", "text": "GLYPH Establishing and controlling accessibility by using the RCAC rule text", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/286", "parent": {"cref": "#/groups/17"}, "children": [], "label": "list_item", "prov": [{"page_no": 29, "bbox": {"l": 135.77333068847656, "t": 376.19525146484375, "r": 385.73236083984375, "b": 365.84466552734375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 61]}], "orig": "GLYPH SELECT, INSERT, and UPDATE behavior with RCAC", "text": "GLYPH SELECT, INSERT, and UPDATE behavior with RCAC", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/287", "parent": {"cref": "#/groups/17"}, "children": [], "label": "list_item", "prov": [{"page_no": 29, "bbox": {"l": 135.60595703125, "t": 363.9985046386719, "r": 270.3636169433594, "b": 354.0252990722656, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 39]}], "orig": "GLYPH Human resources example", "text": "GLYPH Human resources example", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/288", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 29, "bbox": {"l": 63.7396240234375, "t": 37.2548828125, "r": 257.24334716796875, "b": 27.91595458984375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 48]}], "orig": "' Copyright IBM Corp. 2014. All rights reserved.", "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"self_ref": "#/texts/289", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 29, "bbox": {"l": 535.8259887695312, "t": 37.642333984375, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "13", "text": "13"}, {"self_ref": "#/texts/290", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 30, "bbox": {"l": 64.3137435913086, "t": 718.4672241210938, "r": 518.7757568359375, "b": 702.7252807617188, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 57]}], "orig": "3.1 Explanation of RCAC and the concept of access control", "text": "3.1 Explanation of RCAC and the concept of access control", "level": 1}, {"self_ref": "#/texts/291", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 30, "bbox": {"l": 136.03993225097656, "t": 685.975341796875, "r": 547.24267578125, "b": 639.732177734375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 340]}], "orig": "RCAC limits data access to those users who have a business \"need to know\". RCAC makes it easy to set up a rich and robust security policy that is based on roles and responsibilities. RCAC functionality is made available through the optional, no charge feature called \"IBM Advanced Data Security for i\", also known as option 47 of IBM i 7.2.", "text": "RCAC limits data access to those users who have a business \"need to know\". RCAC makes it easy to set up a rich and robust security policy that is based on roles and responsibilities. RCAC functionality is made available through the optional, no charge feature called \"IBM Advanced Data Security for i\", also known as option 47 of IBM i 7.2."}, {"self_ref": "#/texts/292", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 30, "bbox": {"l": 136.07485961914062, "t": 628.0799560546875, "r": 505.92376708984375, "b": 605.9139404296875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 141]}], "orig": "In DB2 for i, RCAC is implemented using two different approaches that address the shortcomings of traditional control methods and mechanisms:", "text": "In DB2 for i, RCAC is implemented using two different approaches that address the shortcomings of traditional control methods and mechanisms:"}, {"self_ref": "#/texts/293", "parent": {"cref": "#/groups/18"}, "children": [], "label": "list_item", "prov": [{"page_no": 30, "bbox": {"l": 135.7504425048828, "t": 599.06494140625, "r": 227.34536743164062, "b": 589.1548461914062, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 31]}], "orig": "GLYPH Row permissions", "text": "GLYPH Row permissions", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/294", "parent": {"cref": "#/groups/18"}, "children": [], "label": "list_item", "prov": [{"page_no": 30, "bbox": {"l": 135.5780487060547, "t": 586.911865234375, "r": 217.25091552734375, "b": 577.1798095703125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 28]}], "orig": "GLYPH Column masks", "text": "GLYPH Column masks", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/295", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 30, "bbox": {"l": 135.8238983154297, "t": 565.3846435546875, "r": 547.2017822265625, "b": 507.16094970703125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 419]}], "orig": "Another benefit of RCAC is that no database user is automatically exempt from the control. Users with *ALLOBJ authority can no longer freely access all of the data in the database unless they have the appropriate permission to do so. The ability to manage row permissions and column masks rests with the database security administrator. The RCAC definitions, enablement, and activation are controlled by SQL statements.", "text": "Another benefit of RCAC is that no database user is automatically exempt from the control. Users with *ALLOBJ authority can no longer freely access all of the data in the database unless they have the appropriate permission to do so. The ability to manage row permissions and column masks rests with the database security administrator. The RCAC definitions, enablement, and activation are controlled by SQL statements."}, {"self_ref": "#/texts/296", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 30, "bbox": {"l": 136.0462646484375, "t": 495.2445983886719, "r": 547.2973022460938, "b": 449.1419372558594, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 270]}], "orig": "Row permissions and column masks require virtually no application changes. RCAC is based on specific rules that are transparent to existing applications and SQL interfaces. Enforcement of your security policy does not depend on how applications or tools access the data.", "text": "Row permissions and column masks require virtually no application changes. RCAC is based on specific rules that are transparent to existing applications and SQL interfaces. Enforcement of your security policy does not depend on how applications or tools access the data."}, {"self_ref": "#/texts/297", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 30, "bbox": {"l": 136.23114013671875, "t": 437.2736511230469, "r": 535.672119140625, "b": 390.89093017578125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 331]}], "orig": "RCAC also facilitates multi-tenancy, which means that several independent customers or business units can share a single database table without being aware of one another. The RCAC row permission ensures each user sees only the rows they are entitled to view because the enforcement is handled by DB2 and not the application logic.", "text": "RCAC also facilitates multi-tenancy, which means that several independent customers or business units can share a single database table without being aware of one another. The RCAC row permission ensures each user sees only the rows they are entitled to view because the enforcement is handled by DB2 and not the application logic."}, {"self_ref": "#/texts/298", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 30, "bbox": {"l": 141.94046020507812, "t": 373.60089111328125, "r": 541.2496337890625, "b": 314.51959228515625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 438]}], "orig": "Label-based access control (LBAC): RCAC and LBAC are not the same thing. LBAC is a security model that is primarily intended for government applications. LBAC requires that data and users be classified with a fixed set of rules that are implemented. RCAC is a general-purpose security model that is primarily intended for commercial customers. You can use RCAC to create your own security rules, which in turn allows for more flexibility.", "text": "Label-based access control (LBAC): RCAC and LBAC are not the same thing. LBAC is a security model that is primarily intended for government applications. LBAC requires that data and users be classified with a fixed set of rules that are implemented. RCAC is a general-purpose security model that is primarily intended for commercial customers. You can use RCAC to create your own security rules, which in turn allows for more flexibility."}, {"self_ref": "#/texts/299", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 30, "bbox": {"l": 64.24093627929688, "t": 290.3779602050781, "r": 383.4799499511719, "b": 277.25274658203125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 48]}], "orig": "3.1.1 Row permission and column mask definitions", "text": "3.1.1 Row permission and column mask definitions", "level": 1}, {"self_ref": "#/texts/300", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 30, "bbox": {"l": 135.77207946777344, "t": 263.9635009765625, "r": 423.5354309082031, "b": 253.60382080078125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 62]}], "orig": "The following sections define row permission and column masks.", "text": "The following sections define row permission and column masks."}, {"self_ref": "#/texts/301", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 30, "bbox": {"l": 136.47561645507812, "t": 238.14508056640625, "r": 229.260009765625, "b": 226.1007080078125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 14]}], "orig": "Row permission", "text": "Row permission", "level": 1}, {"self_ref": "#/texts/302", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 30, "bbox": {"l": 135.9830322265625, "t": 223.29058837890625, "r": 544.5714721679688, "b": 189.069091796875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 261]}], "orig": "A row permission is a database object that manifests a row access control rule for a specific table. It is essentially a search condition that describes which rows you can access. For example, a manager can see only the rows that represent his or her employees.", "text": "A row permission is a database object that manifests a row access control rule for a specific table. It is essentially a search condition that describes which rows you can access. For example, a manager can see only the rows that represent his or her employees."}, {"self_ref": "#/texts/303", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 30, "bbox": {"l": 64.47321319580078, "t": 37.66790771484375, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "14", "text": "14"}, {"self_ref": "#/texts/304", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 30, "bbox": {"l": 93.28377532958984, "t": 37.28033447265625, "r": 334.4214172363281, "b": 28.06536865234375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/305", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 31, "bbox": {"l": 135.73501586914062, "t": 721.5136108398438, "r": 528.7305908203125, "b": 699.0009765625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 135]}], "orig": "The SQL CREATE PERMISSION statement that is shown in Figure 3-1 is used to define and initially enable or disable the row access rules.", "text": "The SQL CREATE PERMISSION statement that is shown in Figure 3-1 is used to define and initially enable or disable the row access rules."}, {"self_ref": "#/texts/306", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 31, "bbox": {"l": 136.3166961669922, "t": 378.73248291015625, "r": 342.55548095703125, "b": 369.1156921386719, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 42]}], "orig": "Figure 3-1 CREATE PERMISSION SQL statement", "text": "Figure 3-1 CREATE PERMISSION SQL statement"}, {"self_ref": "#/texts/307", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 31, "bbox": {"l": 136.24984741210938, "t": 353.2656555175781, "r": 215.88082885742188, "b": 340.95599365234375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 11]}], "orig": "Column mask", "text": "Column mask", "level": 1}, {"self_ref": "#/texts/308", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 31, "bbox": {"l": 135.803466796875, "t": 338.0789489746094, "r": 542.7664794921875, "b": 291.6988525390625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 297]}], "orig": "A column mask is a database object that manifests a column value access control rule for a specific column in a specific table. It uses a CASE expression that describes what you see when you access the column. For example, a teller can see only the last four digits of a tax identification number.", "text": "A column mask is a database object that manifests a column value access control rule for a specific column in a specific table. It uses a CASE expression that describes what you see when you access the column. For example, a teller can see only the last four digits of a tax identification number."}, {"self_ref": "#/texts/309", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 31, "bbox": {"l": 344.5666809082031, "t": 37.281982421875, "r": 523.6016235351562, "b": 27.9176025390625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 40]}], "orig": "Chapter 3. Row and Column Access Control", "text": "Chapter 3. Row and Column Access Control"}, {"self_ref": "#/texts/310", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 31, "bbox": {"l": 536.0999755859375, "t": 37.689697265625, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "15", "text": "15"}, {"self_ref": "#/texts/311", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 32, "bbox": {"l": 64.44506072998047, "t": 37.52349853515625, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "16", "text": "16"}, {"self_ref": "#/texts/312", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 32, "bbox": {"l": 93.31855010986328, "t": 37.286865234375, "r": 334.4214172363281, "b": 28.0611572265625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/313", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 32, "bbox": {"l": 136.0411376953125, "t": 721.397216796875, "r": 546.5693359375, "b": 687.2786865234375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 221]}], "orig": "Column masks replace the need to create and use views to implement access control. The SQL CREATE MASK statement that is shown in Figure 3-2 is used to define and initially enable or disable the column value access rules.", "text": "Column masks replace the need to create and use views to implement access control. The SQL CREATE MASK statement that is shown in Figure 3-2 is used to define and initially enable or disable the column value access rules."}, {"self_ref": "#/texts/314", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 32, "bbox": {"l": 135.94520568847656, "t": 375.34112548828125, "r": 311.8898620605469, "b": 365.6970520019531, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 36]}], "orig": "Figure 3-2 CREATE MASK SQL statement", "text": "Figure 3-2 CREATE MASK SQL statement"}, {"self_ref": "#/texts/315", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 32, "bbox": {"l": 64.21709442138672, "t": 346.41973876953125, "r": 286.7970275878906, "b": 332.696044921875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 34]}], "orig": "3.1.2 Enabling and activating RCAC", "text": "3.1.2 Enabling and activating RCAC", "level": 1}, {"self_ref": "#/texts/316", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 32, "bbox": {"l": 135.47596740722656, "t": 320.0126953125, "r": 547.1828002929688, "b": 285.6659240722656, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 184]}], "orig": "You can enable, disable, or regenerate row permissions and column masks by using the SQL ALTER PERMISSION statement and the SQL ALTER MASK statement, as shown in Figure 3-3 on page 17.", "text": "You can enable, disable, or regenerate row permissions and column masks by using the SQL ALTER PERMISSION statement and the SQL ALTER MASK statement, as shown in Figure 3-3 on page 17."}, {"self_ref": "#/texts/317", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 32, "bbox": {"l": 136.03172302246094, "t": 274.14324951171875, "r": 547.2286376953125, "b": 168.1006622314453, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 734]}], "orig": "Enabling and disabling effectively turns on or off the logic that is contained in the row permission or column mask. Regenerating causes the row permission or column mask to be regenerated. The row permission definition in the catalog is used and existing dependencies and authorizations, if any, are retained. The row permission definition is reevaluated as though the row permission were being created. Any user-defined functions (UDFs) that are referenced in the row permission must be resolved to the same secure UDFs as were resolved during the original row permission or column mask creation. The regenerate option can be used to ensure that the RCAC logic is intact and still valid before any user attempts to access the table.", "text": "Enabling and disabling effectively turns on or off the logic that is contained in the row permission or column mask. Regenerating causes the row permission or column mask to be regenerated. The row permission definition in the catalog is used and existing dependencies and authorizations, if any, are retained. The row permission definition is reevaluated as though the row permission were being created. Any user-defined functions (UDFs) that are referenced in the row permission must be resolved to the same secure UDFs as were resolved during the original row permission or column mask creation. The regenerate option can be used to ensure that the RCAC logic is intact and still valid before any user attempts to access the table."}, {"self_ref": "#/texts/318", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 32, "bbox": {"l": 142.643798828125, "t": 150.07513427734375, "r": 531.8515625, "b": 128.0260009765625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 120]}], "orig": "Note: An exclusive lock is required on the table object to perform the alter operation. All open cursors must be closed.", "text": "Note: An exclusive lock is required on the table object to perform the alter operation. All open cursors must be closed."}, {"self_ref": "#/texts/319", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 33, "bbox": {"l": 135.7609405517578, "t": 442.0717468261719, "r": 415.2347106933594, "b": 432.6983947753906, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 57]}], "orig": "Figure 3-3 ALTER PERMISSION and ALTER MASK SQL statements", "text": "Figure 3-3 ALTER PERMISSION and ALTER MASK SQL statements"}, {"self_ref": "#/texts/320", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 33, "bbox": {"l": 135.8385467529297, "t": 416.132568359375, "r": 547.2994995117188, "b": 357.935546875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 433]}], "orig": "You can activate and deactivate RCAC for new or existing tables by using the SQL ALTER TABLE statement (Figure 3-4). The ACTIVATE or DEACTIVATE clause must be the option that is specified in the statement. No other alterations are permitted at the same time. The activating and deactivating effectively turns on or off all RCAC processing for the table. Only enabled row permissions and column masks take effect when activating RCAC.", "text": "You can activate and deactivate RCAC for new or existing tables by using the SQL ALTER TABLE statement (Figure 3-4). The ACTIVATE or DEACTIVATE clause must be the option that is specified in the statement. No other alterations are permitted at the same time. The activating and deactivating effectively turns on or off all RCAC processing for the table. Only enabled row permissions and column masks take effect when activating RCAC."}, {"self_ref": "#/texts/321", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 33, "bbox": {"l": 142.42935180664062, "t": 339.9495849609375, "r": 531.8515625, "b": 317.7235412597656, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 120]}], "orig": "Note: An exclusive lock is required on the table object to perform the alter operation. All open cursors must be closed.", "text": "Note: An exclusive lock is required on the table object to perform the alter operation. All open cursors must be closed."}, {"self_ref": "#/texts/322", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 33, "bbox": {"l": 136.1680145263672, "t": 67.37353515625, "r": 306.3438720703125, "b": 57.78338623046875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 36]}], "orig": "Figure 3-4 ALTER TABLE SQL statement", "text": "Figure 3-4 ALTER TABLE SQL statement"}, {"self_ref": "#/texts/323", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 33, "bbox": {"l": 344.607666015625, "t": 37.34271240234375, "r": 523.6016235351562, "b": 27.84613037109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 40]}], "orig": "Chapter 3. Row and Column Access Control", "text": "Chapter 3. Row and Column Access Control"}, {"self_ref": "#/texts/324", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 33, "bbox": {"l": 536.0054321289062, "t": 37.726806640625, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "17", "text": "17"}, {"self_ref": "#/texts/325", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 34, "bbox": {"l": 64.41429901123047, "t": 37.559326171875, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "18", "text": "18"}, {"self_ref": "#/texts/326", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 34, "bbox": {"l": 93.24517059326172, "t": 37.31939697265625, "r": 334.4214172363281, "b": 28.119140625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/327", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 34, "bbox": {"l": 135.7600555419922, "t": 721.2564086914062, "r": 547.273681640625, "b": 638.812744140625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 566]}], "orig": "When row access control is activated on a table, a default permission is established for that table. The name of this permission is QIBM_DEFAULT_ _. This default permission contains a simple piece of logic (0=1) which is never true. The default permission effectively denies access to every user unless there is a permission defined that allows access explicitly. If row access control is activated on a table, and there is no permission that is defined, no one has permission to any rows. All queries against the table produce an empty set.", "text": "When row access control is activated on a table, a default permission is established for that table. The name of this permission is QIBM_DEFAULT_ _. This default permission contains a simple piece of logic (0=1) which is never true. The default permission effectively denies access to every user unless there is a permission defined that allows access explicitly. If row access control is activated on a table, and there is no permission that is defined, no one has permission to any rows. All queries against the table produce an empty set."}, {"self_ref": "#/texts/328", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 34, "bbox": {"l": 135.96725463867188, "t": 627.3378295898438, "r": 547.2686157226562, "b": 580.7529296875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 378]}], "orig": "It is possible to define, create, and enable multiple permissions on a table. Logically, all of the permissions are ORed together to form a comprehensive test of the user's ability to access the data. A column can have only one mask that is defined over it. From an implementation standpoint, it does not matter if you create the column masks first or the row permissions first.", "text": "It is possible to define, create, and enable multiple permissions on a table. Logically, all of the permissions are ORed together to form a comprehensive test of the user's ability to access the data. A column can have only one mask that is defined over it. From an implementation standpoint, it does not matter if you create the column masks first or the row permissions first."}, {"self_ref": "#/texts/329", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 34, "bbox": {"l": 142.8000030517578, "t": 563.395263671875, "r": 537.4868774414062, "b": 541.2984619140625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 97]}], "orig": "Note: If a user does not have permission to access the row, the column mask logic is not invoked.", "text": "Note: If a user does not have permission to access the row, the column mask logic is not invoked."}, {"self_ref": "#/texts/330", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 34, "bbox": {"l": 64.29631042480469, "t": 508.64190673828125, "r": 438.7572021484375, "b": 492.2038269042969, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 51]}], "orig": "3.2 Special registers and built-in global variables", "text": "3.2 Special registers and built-in global variables", "level": 1}, {"self_ref": "#/texts/331", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 34, "bbox": {"l": 135.81504821777344, "t": 476.6042175292969, "r": 525.5018920898438, "b": 454.2984619140625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 105]}], "orig": "This section describes how you can use special registers and built-in global variables to implement RCAC.", "text": "This section describes how you can use special registers and built-in global variables to implement RCAC."}, {"self_ref": "#/texts/332", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 34, "bbox": {"l": 64.23223114013672, "t": 434.255126953125, "r": 204.5852813720703, "b": 421.0963134765625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 23]}], "orig": "3.2.1 Special registers", "text": "3.2.1 Special registers", "level": 1}, {"self_ref": "#/texts/333", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 34, "bbox": {"l": 135.89915466308594, "t": 407.9602355957031, "r": 547.1063842773438, "b": 373.8841552734375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 261]}], "orig": "A special register is a storage area that is defined for an application process by DB2 and is used to store information that can be referenced in SQL statements. A reference to a special register is a reference to a value that is provided by the current server.", "text": "A special register is a storage area that is defined for an application process by DB2 and is used to store information that can be referenced in SQL statements. A reference to a special register is a reference to a value that is provided by the current server."}, {"self_ref": "#/texts/334", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 34, "bbox": {"l": 136.08819580078125, "t": 362.5604553222656, "r": 544.5763549804688, "b": 316.2984619140625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 323]}], "orig": "IBM DB2 for i supports four different special registers that can be used to identify what user profiles are relevant to determining object authorities in the current connection to the server. SQL uses the term runtime authorization ID , which corresponds to a user profile on DB2 for i. Here are the four special registers:", "text": "IBM DB2 for i supports four different special registers that can be used to identify what user profiles are relevant to determining object authorities in the current connection to the server. SQL uses the term runtime authorization ID , which corresponds to a user profile on DB2 for i. Here are the four special registers:"}, {"self_ref": "#/texts/335", "parent": {"cref": "#/groups/19"}, "children": [], "label": "list_item", "prov": [{"page_no": 34, "bbox": {"l": 135.6575927734375, "t": 309.4291076660156, "r": 546.981201171875, "b": 274.9290771484375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 239]}], "orig": "GLYPH USER is the runtime user profile that determines the object authorities for the current connection to the server. It has a data type of VARCHAR(18). This value can be changed by the SQL statement SET SESSION AUTHORIZATION .", "text": "GLYPH USER is the runtime user profile that determines the object authorities for the current connection to the server. It has a data type of VARCHAR(18). This value can be changed by the SQL statement SET SESSION AUTHORIZATION .", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/336", "parent": {"cref": "#/groups/19"}, "children": [], "label": "list_item", "prov": [{"page_no": 34, "bbox": {"l": 135.68878173828125, "t": 268.813232421875, "r": 522.5455932617188, "b": 246.278564453125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 110]}], "orig": "GLYPH SESSION_USER is the same as the USER register, except that it has a data type of VARCHAR(128).", "text": "GLYPH SESSION_USER is the same as the USER register, except that it has a data type of VARCHAR(128).", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/337", "parent": {"cref": "#/groups/19"}, "children": [], "label": "list_item", "prov": [{"page_no": 34, "bbox": {"l": 135.3015594482422, "t": 239.44622802734375, "r": 547.2483520507812, "b": 157.072021484375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 594]}], "orig": "GLYPH CURRENT USER was added in IBM i 7.2 and is similar to the USER register, but it has one important difference in that it also reports adopted authority. High-level language programs and SQL routines such as functions, procedures, and triggers can optionally be created to run using either the caller's or the owner's user profile to determine data authorities. For example, an SQL procedure can be created to run under the owner's authority by specifying SET OPTION USRPRF=*OWNER . This special register can also be referenced as CURRENT_USER. It has a data type of VARCHAR(128).", "text": "GLYPH CURRENT USER was added in IBM i 7.2 and is similar to the USER register, but it has one important difference in that it also reports adopted authority. High-level language programs and SQL routines such as functions, procedures, and triggers can optionally be created to run using either the caller's or the owner's user profile to determine data authorities. For example, an SQL procedure can be created to run under the owner's authority by specifying SET OPTION USRPRF=*OWNER . This special register can also be referenced as CURRENT_USER. It has a data type of VARCHAR(128).", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/338", "parent": {"cref": "#/groups/19"}, "children": [], "label": "list_item", "prov": [{"page_no": 34, "bbox": {"l": 135.51412963867188, "t": 150.1607666015625, "r": 547.2650756835938, "b": 91.47637939453125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 422]}], "orig": "GLYPH SYSTEM_USER is the user profile that initiates the connection to the server. It is not used by RCAC, but is included here for completeness. Many jobs, including the QZDASOINIT prestarted jobs, initially connect to the server with a default user profile and then change to use some other user profile. SYSTEM_USER reports this value, typically QUSER for a QZDASOINIT job. It has a data type of VARCHAR(128).", "text": "GLYPH SYSTEM_USER is the user profile that initiates the connection to the server. It is not used by RCAC, but is included here for completeness. Many jobs, including the QZDASOINIT prestarted jobs, initially connect to the server with a default user profile and then change to use some other user profile. SYSTEM_USER reports this value, typically QUSER for a QZDASOINIT job. It has a data type of VARCHAR(128).", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/339", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 34, "bbox": {"l": 136.05694580078125, "t": 79.99713134765625, "r": 547.2014770507812, "b": 57.78228759765625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 121]}], "orig": "In addition to these four special registers, any of the DB2 special registers can be referenced as part of the rule text.", "text": "In addition to these four special registers, any of the DB2 special registers can be referenced as part of the rule text."}, {"self_ref": "#/texts/340", "parent": {"cref": "#/body"}, "children": [], "label": "paragraph", "prov": [{"page_no": 35, "bbox": {"l": 135.82176208496094, "t": 721.317138671875, "r": 412.20758056640625, "b": 711.1845703125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 62]}], "orig": "Table 3-1 summarizes these special registers and their values.", "text": "Table 3-1 summarizes these special registers and their values."}, {"self_ref": "#/texts/341", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 35, "bbox": {"l": 136.8000030517578, "t": 699.2779541015625, "r": 372.7710876464844, "b": 690.0601806640625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 58]}], "orig": "Table 3-1 Special registers and their corresponding values", "text": "Table 3-1 Special registers and their corresponding values"}, {"self_ref": "#/texts/342", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 35, "bbox": {"l": 136.3730926513672, "t": 578.6343383789062, "r": 538.493896484375, "b": 556.2984619140625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 97]}], "orig": "Figure 3-5 shows the difference in the special register values when an adopted authority is used:", "text": "Figure 3-5 shows the difference in the special register values when an adopted authority is used:"}, {"self_ref": "#/texts/343", "parent": {"cref": "#/groups/20"}, "children": [], "label": "list_item", "prov": [{"page_no": 35, "bbox": {"l": 135.5663299560547, "t": 549.454345703125, "r": 411.36138916015625, "b": 539.2213134765625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 75]}], "orig": "GLYPH A user connects to the server using the user profile ALICE.", "text": "GLYPH A user connects to the server using the user profile ALICE.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/344", "parent": {"cref": "#/groups/20"}, "children": [], "label": "list_item", "prov": [{"page_no": 35, "bbox": {"l": 135.5452880859375, "t": 532.7073974609375, "r": 453.2580871582031, "b": 522.2791137695312, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 77]}], "orig": "GLYPH USER and CURRENT USER initially have the same value of ALICE.", "text": "GLYPH USER and CURRENT USER initially have the same value of ALICE.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/345", "parent": {"cref": "#/groups/20"}, "children": [], "label": "list_item", "prov": [{"page_no": 35, "bbox": {"l": 135.3970947265625, "t": 515.4821166992188, "r": 541.4498291015625, "b": 493.01019287109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 160]}], "orig": "GLYPH ALICE calls an SQL procedure that is named proc1, which is owned by user profile JOE and was created to adopt JOE's authority when it is called.", "text": "GLYPH ALICE calls an SQL procedure that is named proc1, which is owned by user profile JOE and was created to adopt JOE's authority when it is called.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/346", "parent": {"cref": "#/groups/20"}, "children": [], "label": "list_item", "prov": [{"page_no": 35, "bbox": {"l": 135.5677947998047, "t": 486.18145751953125, "r": 547.2167358398438, "b": 451.4921875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 253]}], "orig": "GLYPH While the procedure is running, the special register USER still contains the value of ALICE because it excludes any adopted authority. The special register CURRENT USER contains the value of JOE because it includes any adopted authority.", "text": "GLYPH While the procedure is running, the special register USER still contains the value of ALICE because it excludes any adopted authority. The special register CURRENT USER contains the value of JOE because it includes any adopted authority.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/347", "parent": {"cref": "#/groups/20"}, "children": [], "label": "list_item", "prov": [{"page_no": 35, "bbox": {"l": 135.56973266601562, "t": 445.5053405761719, "r": 547.3540649414062, "b": 423.0643615722656, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 133]}], "orig": "GLYPH When proc1 ends, the session reverts to its original state with both USER and CURRENT USER having the value of ALICE.", "text": "GLYPH When proc1 ends, the session reverts to its original state with both USER and CURRENT USER having the value of ALICE.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/348", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 35, "bbox": {"l": 136.22442626953125, "t": 195.81939697265625, "r": 342.349853515625, "b": 186.25537109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 50]}], "orig": "Figure 3-5 Special registers and adopted authority", "text": "Figure 3-5 Special registers and adopted authority"}, {"self_ref": "#/texts/349", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 35, "bbox": {"l": 64.079833984375, "t": 167.67864990234375, "r": 247.02536010742188, "b": 154.15521240234375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 31]}], "orig": "3.2.2 Built-in global variables", "text": "3.2.2 Built-in global variables", "level": 1}, {"self_ref": "#/texts/350", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 35, "bbox": {"l": 136.3346710205078, "t": 141.24090576171875, "r": 518.0011596679688, "b": 119.0784683227539, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 161]}], "orig": "Built-in global variables are provided with the database manager and are used in SQL statements to retrieve scalar values that are associated with the variables.", "text": "Built-in global variables are provided with the database manager and are used in SQL statements to retrieve scalar values that are associated with the variables."}, {"self_ref": "#/texts/351", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 35, "bbox": {"l": 136.17970275878906, "t": 107.37139892578125, "r": 532.3385009765625, "b": 72.93243408203125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 233]}], "orig": "IBM DB2 for i supports nine different built-in global variables that are read only and maintained by the system. These global variables can be used to identify attributes of the database connection and used as part of the RCAC logic.", "text": "IBM DB2 for i supports nine different built-in global variables that are read only and maintained by the system. These global variables can be used to identify attributes of the database connection and used as part of the RCAC logic."}, {"self_ref": "#/texts/352", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 35, "bbox": {"l": 344.5751037597656, "t": 37.29559326171875, "r": 523.6016235351562, "b": 27.93109130859375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 40]}], "orig": "Chapter 3. Row and Column Access Control", "text": "Chapter 3. Row and Column Access Control"}, {"self_ref": "#/texts/353", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 35, "bbox": {"l": 536.0416870117188, "t": 37.7122802734375, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "19", "text": "19"}, {"self_ref": "#/texts/354", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 36, "bbox": {"l": 63.85088348388672, "t": 37.62542724609375, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "20", "text": "20"}, {"self_ref": "#/texts/355", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 36, "bbox": {"l": 93.31550598144531, "t": 37.3028564453125, "r": 334.4214172363281, "b": 28.02935791015625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/356", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 36, "bbox": {"l": 135.74647521972656, "t": 721.3251953125, "r": 342.5477294921875, "b": 711.1533813476562, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 51]}], "orig": "Table 3-2 lists the nine built-in global variables.", "text": "Table 3-2 lists the nine built-in global variables."}, {"self_ref": "#/texts/357", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 36, "bbox": {"l": 64.80000305175781, "t": 699.1653442382812, "r": 201.82247924804688, "b": 690.177001953125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 35]}], "orig": "Table 3-2 Built-in global variables", "text": "Table 3-2 Built-in global variables"}, {"self_ref": "#/texts/358", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 36, "bbox": {"l": 64.34713745117188, "t": 471.380859375, "r": 384.3638916015625, "b": 455.0362854003906, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 34]}], "orig": "3.3 VERIFY_GROUP_FOR_USER function", "text": "3.3 VERIFY_GROUP_FOR_USER function", "level": 1}, {"self_ref": "#/texts/359", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 36, "bbox": {"l": 135.8567352294922, "t": 438.1376037597656, "r": 547.2347412109375, "b": 355.704833984375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 576]}], "orig": "The VERIFY_GROUP_FOR_USER function was added in IBM i 7.2. Although it is primarily intended for use with RCAC permissions and masks, it can be used in other SQL statements. The first parameter must be one of these three special registers: SESSION_USER, USER, or CURRENT_USER. The second and subsequent parameters are a list of user or group profiles. Each of these values must be 1 - 10 characters in length. These values are not validated for their existence, which means that you can specify the names of user profiles that do not exist without receiving any kind of error.", "text": "The VERIFY_GROUP_FOR_USER function was added in IBM i 7.2. Although it is primarily intended for use with RCAC permissions and masks, it can be used in other SQL statements. The first parameter must be one of these three special registers: SESSION_USER, USER, or CURRENT_USER. The second and subsequent parameters are a list of user or group profiles. Each of these values must be 1 - 10 characters in length. These values are not validated for their existence, which means that you can specify the names of user profiles that do not exist without receiving any kind of error."}, {"self_ref": "#/texts/360", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 36, "bbox": {"l": 136.01950073242188, "t": 344.5970458984375, "r": 547.2573852539062, "b": 310.2999572753906, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 235]}], "orig": "If a special register value is in the list of user profiles or it is a member of a group profile included in the list, the function returns a long integer value of 1. Otherwise, it returns a value of 0. It never returns the null value.", "text": "If a special register value is in the list of user profiles or it is a member of a group profile included in the list, the function returns a long integer value of 1. Otherwise, it returns a value of 0. It never returns the null value."}, {"self_ref": "#/texts/361", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 36, "bbox": {"l": 136.42428588867188, "t": 298.8746337890625, "r": 458.44525146484375, "b": 288.2803955078125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 63]}], "orig": "Here is an example of using the VERIFY_GROUP_FOR_USER function:", "text": "Here is an example of using the VERIFY_GROUP_FOR_USER function:"}, {"self_ref": "#/texts/362", "parent": {"cref": "#/groups/21"}, "children": [], "label": "list_item", "prov": [{"page_no": 36, "bbox": {"l": 136.80001831054688, "t": 281.4947204589844, "r": 406.0775146484375, "b": 271.2408142089844, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 57]}], "orig": "1. There are user profiles for MGR, JANE, JUDY, and TONY.", "text": "1. There are user profiles for MGR, JANE, JUDY, and TONY.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/363", "parent": {"cref": "#/groups/21"}, "children": [], "label": "list_item", "prov": [{"page_no": 36, "bbox": {"l": 135.8521728515625, "t": 264.1617431640625, "r": 396.9881591796875, "b": 253.80572509765625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 58]}], "orig": "2. The user profile JANE specifies a group profile of MGR.", "text": "2. The user profile JANE specifies a group profile of MGR.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/364", "parent": {"cref": "#/groups/21"}, "children": [], "label": "list_item", "prov": [{"page_no": 36, "bbox": {"l": 136.08595275878906, "t": 247.357666015625, "r": 536.568603515625, "b": 225.28138732910156, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 127]}], "orig": "3. If a user is connected to the server using user profile JANE, all of the following function invocations return a value of 1:", "text": "3. If a user is connected to the server using user profile JANE, all of the following function invocations return a value of 1:", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/365", "parent": {"cref": "#/body"}, "children": [], "label": "code", "prov": [{"page_no": 36, "bbox": {"l": 149.8811798095703, "t": 217.68408203125, "r": 451.01605224609375, "b": 150.09063720703125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 265]}], "orig": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'MGR') VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR') VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR', 'STEVE') The following function invocation returns a value of 0: VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JUDY', 'TONY')", "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'MGR') VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR') VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR', 'STEVE') The following function invocation returns a value of 0: VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JUDY', 'TONY')"}, {"self_ref": "#/texts/366", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 37, "bbox": {"l": 64.577880859375, "t": 721.906005859375, "r": 512.90087890625, "b": 687.0557861328125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 74]}], "orig": "3.4 Establishing and controlling accessibility by using the RCAC rule text", "text": "3.4 Establishing and controlling accessibility by using the RCAC rule text", "level": 1}, {"self_ref": "#/texts/367", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 37, "bbox": {"l": 135.82391357421875, "t": 670.6641235351562, "r": 544.9019775390625, "b": 636.2785034179688, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 230]}], "orig": "When defining a row permission or column mask, the \"magic\" of establishing and controlling accessibility comes from the rule text . The rule text represents the search criteria and logic that is implemented by the database engine.", "text": "When defining a row permission or column mask, the \"magic\" of establishing and controlling accessibility comes from the rule text . The rule text represents the search criteria and logic that is implemented by the database engine."}, {"self_ref": "#/texts/368", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 37, "bbox": {"l": 135.99398803710938, "t": 623.8250732421875, "r": 545.6567993164062, "b": 577.9219970703125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 359]}], "orig": "In the case of a row permission, the rule text is the \"test\" of whether the user can access the row. If the test result is true, the row can be accessed. If the test result is false, the row essentially does not exist for the user. From a set-at-a-time perspective, the permission defines which rows can be part of the query result set, and which rows cannot.", "text": "In the case of a row permission, the rule text is the \"test\" of whether the user can access the row. If the test result is true, the row can be accessed. If the test result is false, the row essentially does not exist for the user. From a set-at-a-time perspective, the permission defines which rows can be part of the query result set, and which rows cannot."}, {"self_ref": "#/texts/369", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 37, "bbox": {"l": 136.151123046875, "t": 566.5162353515625, "r": 537.8551025390625, "b": 532.300048828125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 196]}], "orig": "In the case of a column mask, the rule text is both the test of whether the user can see the actual column value, and it is the masking logic if the user cannot have access to actual column value.", "text": "In the case of a column mask, the rule text is both the test of whether the user can see the actual column value, and it is the masking logic if the user cannot have access to actual column value."}, {"self_ref": "#/texts/370", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 37, "bbox": {"l": 136.31472778320312, "t": 520.593505859375, "r": 547.2691040039062, "b": 498.2806396484375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 117]}], "orig": "For a simple example of implementing row permissions and column masks, see 3.6, \"Human resources example\" on page 22.", "text": "For a simple example of implementing row permissions and column masks, see 3.6, \"Human resources example\" on page 22."}, {"self_ref": "#/texts/371", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 37, "bbox": {"l": 136.01747131347656, "t": 485.85302734375, "r": 545.9476928710938, "b": 464.0989074707031, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 185]}], "orig": "In general, almost any set-based, relational logic is valid. For the row permission, the search condition follows the same rules that are used by the search condition in a WHERE clause.", "text": "In general, almost any set-based, relational logic is valid. For the row permission, the search condition follows the same rules that are used by the search condition in a WHERE clause."}, {"self_ref": "#/texts/372", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 37, "bbox": {"l": 136.0785675048828, "t": 452.537353515625, "r": 547.2494506835938, "b": 381.9795227050781, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 504]}], "orig": "For the column mask, the logic follows the same rules as the CASE expression. The result data type, length, null attribute, and CCSID of the CASE expression must be compatible with the data type of the column. If the column does not allow the null value, the result of the CASE expression cannot be the NULL value. The application or interface making the data access request is expecting that all of the column attributes and values are consistent with the original definition, regardless of any masking.", "text": "For the column mask, the logic follows the same rules as the CASE expression. The result data type, length, null attribute, and CCSID of the CASE expression must be compatible with the data type of the column. If the column does not allow the null value, the result of the CASE expression cannot be the NULL value. The application or interface making the data access request is expecting that all of the column attributes and values are consistent with the original definition, regardless of any masking."}, {"self_ref": "#/texts/373", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 37, "bbox": {"l": 136.35562133789062, "t": 370.6085205078125, "r": 542.0492553710938, "b": 348.2829895019531, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 127]}], "orig": "For more information about what is permitted, see the \"Database programming\" topic of the IBM i 7.2 Knowledge Center, found at:", "text": "For more information about what is permitted, see the \"Database programming\" topic of the IBM i 7.2 Knowledge Center, found at:"}, {"self_ref": "#/texts/374", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 37, "bbox": {"l": 136.1328582763672, "t": 341.0989990234375, "r": 546.5352172851562, "b": 319.5921936035156, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 86]}], "orig": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgdbp.htm?lang =en", "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgdbp.htm?lang =en"}, {"self_ref": "#/texts/375", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 37, "bbox": {"l": 135.92572021484375, "t": 307.27325439453125, "r": 547.0272216796875, "b": 237.0828857421875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 546]}], "orig": "One of the first tasks in either the row permission or the column mask logic is to determine who the user is, and whether they have access to the data. Elegant methods to establish the identity and attributes of the user can be employed by using the special registers, global variables, and the VERIFY function. After the user's identity is established, it is a simple matter of allowing or disallowing access by using true or false testing. The examples that are included in this paper demonstrate some of the more common and obvious techniques.", "text": "One of the first tasks in either the row permission or the column mask logic is to determine who the user is, and whether they have access to the data. Elegant methods to establish the identity and attributes of the user can be employed by using the special registers, global variables, and the VERIFY function. After the user's identity is established, it is a simple matter of allowing or disallowing access by using true or false testing. The examples that are included in this paper demonstrate some of the more common and obvious techniques."}, {"self_ref": "#/texts/376", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 37, "bbox": {"l": 136.01707458496094, "t": 225.0654296875, "r": 547.3748779296875, "b": 154.92767333984375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 538]}], "orig": "More sophisticated methods can employ existential, day of year / time of day, and relational comparisons with set operations. For example, you can use a date master or date dimension table to determine whether the current date is a normal business day. If the current date is a valid business day, then access is allowed. If the current date is not a business day (for example a weekend day or holiday), access is denied. This test can be accomplished by performing a lookup using a subquery, such as the one that is shown in Example 3-1.", "text": "More sophisticated methods can employ existential, day of year / time of day, and relational comparisons with set operations. For example, you can use a date master or date dimension table to determine whether the current date is a normal business day. If the current date is a valid business day, then access is allowed. If the current date is not a business day (for example a weekend day or holiday), access is denied. This test can be accomplished by performing a lookup using a subquery, such as the one that is shown in Example 3-1."}, {"self_ref": "#/texts/377", "parent": {"cref": "#/body"}, "children": [], "label": "paragraph", "prov": [{"page_no": 37, "bbox": {"l": 136.3708953857422, "t": 143.520263671875, "r": 355.12689208984375, "b": 133.6683349609375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 53]}], "orig": "Example 3-1 Subquery that is used as part of the rule", "text": "Example 3-1 Subquery that is used as part of the rule"}, {"self_ref": "#/texts/378", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 37, "bbox": {"l": 226.1187744140625, "t": 113.84539794921875, "r": 331.77557373046875, "b": 104.54730987548828, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 13]}], "orig": "DATE_MASTER D", "text": "DATE_MASTER D"}, {"self_ref": "#/texts/379", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 37, "bbox": {"l": 222.19522094726562, "t": 102.1473388671875, "r": 371.6368408203125, "b": 91.81817626953125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 21]}], "orig": "D.BUSINESS_DAY = 'Y')", "text": "D.BUSINESS_DAY = 'Y')"}, {"self_ref": "#/texts/380", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 37, "bbox": {"l": 344.57867431640625, "t": 37.25799560546875, "r": 523.6016235351562, "b": 27.9051513671875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 40]}], "orig": "Chapter 3. Row and Column Access Control", "text": "Chapter 3. Row and Column Access Control"}, {"self_ref": "#/texts/381", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 37, "bbox": {"l": 535.7230834960938, "t": 37.71142578125, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "21", "text": "21"}, {"self_ref": "#/texts/382", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 37, "bbox": {"l": 136.8000030517578, "t": 125.3218765258789, "r": 316.67755126953125, "b": 92.54750061035156, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 45]}], "orig": "CURRENT_DATE IN (SELECT D.DATE_KEY FROM WHERE", "text": "CURRENT_DATE IN (SELECT D.DATE_KEY FROM WHERE"}, {"self_ref": "#/texts/383", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 38, "bbox": {"l": 63.83726119995117, "t": 37.62664794921875, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "22", "text": "22"}, {"self_ref": "#/texts/384", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 38, "bbox": {"l": 93.2356185913086, "t": 37.29510498046875, "r": 334.4214172363281, "b": 28.12286376953125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/385", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 38, "bbox": {"l": 135.83892822265625, "t": 721.335693359375, "r": 547.2915649414062, "b": 615.0796508789062, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 763]}], "orig": "Given that joins and subqueries can be used to perform set-based operations against existing data that is housed in other objects, almost any relational test can be constructed. If the data in the objects is manipulated over time, the RCAC test logic (and user query results) can be changed without modifying the actual row permission or column mask. This includes moving a user from one group to another or changing a column value that is used to allow or disallow access. For example, if Saturday is now a valid business day, only the BUSINESS_DAY value in the DATE_MASTER must be updated, not the permission logic. This technique can potentially avoid downtime because of the exclusive lock that is needed on the table when adding or changing RCAC definitions.", "text": "Given that joins and subqueries can be used to perform set-based operations against existing data that is housed in other objects, almost any relational test can be constructed. If the data in the objects is manipulated over time, the RCAC test logic (and user query results) can be changed without modifying the actual row permission or column mask. This includes moving a user from one group to another or changing a column value that is used to allow or disallow access. For example, if Saturday is now a valid business day, only the BUSINESS_DAY value in the DATE_MASTER must be updated, not the permission logic. This technique can potentially avoid downtime because of the exclusive lock that is needed on the table when adding or changing RCAC definitions."}, {"self_ref": "#/texts/386", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 38, "bbox": {"l": 64.40492248535156, "t": 588.2117919921875, "r": 486.3243713378906, "b": 572.0363159179688, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 49]}], "orig": "3.5 SELECT, INSERT, and UPDATE behavior with RCAC", "text": "3.5 SELECT, INSERT, and UPDATE behavior with RCAC", "level": 1}, {"self_ref": "#/texts/387", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 38, "bbox": {"l": 135.95579528808594, "t": 555.3319702148438, "r": 547.2974243164062, "b": 473.1294250488281, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 566]}], "orig": "RCAC provides a database-centric approach to determining which rows can be accessed and what column values can be seen by a specific user. Given that the control is handled by DB2 internally, every data manipulation statement is under the influence of RCAC, with no exceptions. When accessing the table, the SELECT statements, searched UPDATE statements, and searched DELETE statements implicitly and transparently contain the row permission and the column mask rule text. This means that the data set can be logically restricted and reduced on a user by user basis.", "text": "RCAC provides a database-centric approach to determining which rows can be accessed and what column values can be seen by a specific user. Given that the control is handled by DB2 internally, every data manipulation statement is under the influence of RCAC, with no exceptions. When accessing the table, the SELECT statements, searched UPDATE statements, and searched DELETE statements implicitly and transparently contain the row permission and the column mask rule text. This means that the data set can be logically restricted and reduced on a user by user basis."}, {"self_ref": "#/texts/388", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 38, "bbox": {"l": 136.07569885253906, "t": 461.2962341308594, "r": 547.1958618164062, "b": 426.9944763183594, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 275]}], "orig": "Furthermore, DB2 prevents an INSERT statement from inserting a row or an UPDATE statement from modifying a row such that the current user cannot be permitted to access it. You cannot create a situation in which the data you inserted or changed is no longer accessible to you.", "text": "Furthermore, DB2 prevents an INSERT statement from inserting a row or an UPDATE statement from modifying a row such that the current user cannot be permitted to access it. You cannot create a situation in which the data you inserted or changed is no longer accessible to you."}, {"self_ref": "#/texts/389", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 38, "bbox": {"l": 136.00733947753906, "t": 415.3765869140625, "r": 547.2606811523438, "b": 393.1242980957031, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 138]}], "orig": "For more information and considerations about data movement in an RCAC environment, see Chapter 6, \"Additional considerations\" on page 85.", "text": "For more information and considerations about data movement in an RCAC environment, see Chapter 6, \"Additional considerations\" on page 85."}, {"self_ref": "#/texts/390", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 38, "bbox": {"l": 141.89248657226562, "t": 375.4718933105469, "r": 541.2198486328125, "b": 340.8992919921875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 213]}], "orig": "Note: DB2 does not provide any indication back to the user that the data set requested was restricted or reduced by RCAC. This is by design, as it helps minimize any changes to the applications accessing the data.", "text": "Note: DB2 does not provide any indication back to the user that the data set requested was restricted or reduced by RCAC. This is by design, as it helps minimize any changes to the applications accessing the data."}, {"self_ref": "#/texts/391", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 38, "bbox": {"l": 64.5394515991211, "t": 308.8202819824219, "r": 298.8533935546875, "b": 292.92779541015625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 27]}], "orig": "3.6 Human resources example", "text": "3.6 Human resources example", "level": 1}, {"self_ref": "#/texts/392", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 38, "bbox": {"l": 135.87118530273438, "t": 275.9976806640625, "r": 542.829345703125, "b": 206.2593536376953, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 436]}], "orig": "This section illustrates with a simple example the usage of RCAC on a typical Human Resources application (schema). In this sample Human Resources schema, there is an important table that is called EMPLOYEES that contains all the information that is related to the employees of the company. Among the information that normally is stored in the EMPLOYEES table, there is some sensitive information that must be hidden from certain users:", "text": "This section illustrates with a simple example the usage of RCAC on a typical Human Resources application (schema). In this sample Human Resources schema, there is an important table that is called EMPLOYEES that contains all the information that is related to the employees of the company. Among the information that normally is stored in the EMPLOYEES table, there is some sensitive information that must be hidden from certain users:"}, {"self_ref": "#/texts/393", "parent": {"cref": "#/groups/22"}, "children": [], "label": "list_item", "prov": [{"page_no": 38, "bbox": {"l": 135.85508728027344, "t": 199.28631591796875, "r": 235.38601684570312, "b": 189.279541015625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 34]}], "orig": "GLYPH Tax_Id information", "text": "GLYPH Tax_Id information", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/394", "parent": {"cref": "#/groups/22"}, "children": [], "label": "list_item", "prov": [{"page_no": 38, "bbox": {"l": 135.5828094482422, "t": 187.2708740234375, "r": 470.03765869140625, "b": 177.224365234375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 87]}], "orig": "GLYPH YEAR of the birth date of the employee (hiding the age of the employee)", "text": "GLYPH YEAR of the birth date of the employee (hiding the age of the employee)", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/395", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 38, "bbox": {"l": 136.1318817138672, "t": 165.2996826171875, "r": 375.29803466796875, "b": 155.09783935546875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 57]}], "orig": "In this example, there are four different types of users:", "text": "In this example, there are four different types of users:"}, {"self_ref": "#/texts/396", "parent": {"cref": "#/groups/23"}, "children": [], "label": "list_item", "prov": [{"page_no": 38, "bbox": {"l": 135.77261352539062, "t": 148.36187744140625, "r": 200.1146697998047, "b": 138.28036499023438, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 25]}], "orig": "GLYPH Employees", "text": "GLYPH Employees", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/397", "parent": {"cref": "#/groups/23"}, "children": [], "label": "list_item", "prov": [{"page_no": 38, "bbox": {"l": 135.6394805908203, "t": 136.5582275390625, "r": 195.63865661621094, "b": 126.28056335449219, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 24]}], "orig": "GLYPH Managers", "text": "GLYPH Managers", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/398", "parent": {"cref": "#/groups/23"}, "children": [], "label": "list_item", "prov": [{"page_no": 38, "bbox": {"l": 135.6507568359375, "t": 124.7410888671875, "r": 276.5639343261719, "b": 114.28074645996094, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 39]}], "orig": "GLYPH Human Resources Manager", "text": "GLYPH Human Resources Manager", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/399", "parent": {"cref": "#/groups/23"}, "children": [], "label": "list_item", "prov": [{"page_no": 38, "bbox": {"l": 135.71376037597656, "t": 112.5548095703125, "r": 539.58447265625, "b": 90.28113555908203, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 144]}], "orig": "GLYPH Consultant/IT Database Engineer (In this example, this person is an external consultant that is not an employee of the company.)", "text": "GLYPH Consultant/IT Database Engineer (In this example, this person is an external consultant that is not an employee of the company.)", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/400", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 38, "bbox": {"l": 135.66419982910156, "t": 78.08331298828125, "r": 546.5243530273438, "b": 56.261756896972656, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 109]}], "orig": "The following sections describe step-by-step what is needed to be done to implement RCAC in this environment.", "text": "The following sections describe step-by-step what is needed to be done to implement RCAC in this environment."}, {"self_ref": "#/texts/401", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 39, "bbox": {"l": 64.25519561767578, "t": 721.8017578125, "r": 500.5502014160156, "b": 708.3052978515625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 65]}], "orig": "3.6.1 Assigning the QIBM_DB_SECADM function ID to the consultants", "text": "3.6.1 Assigning the QIBM_DB_SECADM function ID to the consultants", "level": 1}, {"self_ref": "#/texts/402", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 39, "bbox": {"l": 135.7902069091797, "t": 695.3858032226562, "r": 547.2426147460938, "b": 661.06640625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 228]}], "orig": "The consultant must have authority to implement RCAC, so you must use one of the function IDs that are provided in DB2 for i (see 2.1.5, \"Security Administrator function: QIBM_DB_SECADM\" on page 9). Complete the following steps:", "text": "The consultant must have authority to implement RCAC, so you must use one of the function IDs that are provided in DB2 for i (see 2.1.5, \"Security Administrator function: QIBM_DB_SECADM\" on page 9). Complete the following steps:"}, {"self_ref": "#/texts/403", "parent": {"cref": "#/groups/24"}, "children": [], "label": "list_item", "prov": [{"page_no": 39, "bbox": {"l": 136.8000030517578, "t": 654.0445556640625, "r": 510.97723388671875, "b": 619.9440307617188, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 161]}], "orig": "1. Run the Change Functional Usage ( CHGFCNUSG ) CL commands that are shown in Example 3-2. These commands must be run by someone that has the *SECOFR authority.", "text": "1. Run the Change Functional Usage ( CHGFCNUSG ) CL commands that are shown in Example 3-2. These commands must be run by someone that has the *SECOFR authority.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/404", "parent": {"cref": "#/body"}, "children": [], "label": "paragraph", "prov": [{"page_no": 39, "bbox": {"l": 136.3125762939453, "t": 608.8530883789062, "r": 358.5176696777344, "b": 598.7147827148438, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 50]}], "orig": "Example 3-2 Function ID required to implement RCAC", "text": "Example 3-2 Function ID required to implement RCAC"}, {"self_ref": "#/texts/405", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 39, "bbox": {"l": 136.8000030517578, "t": 590.3218994140625, "r": 441.59588623046875, "b": 569.5473022460938, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 121]}], "orig": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED) CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(MCAIN) USAGE(*ALLOWED)", "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED) CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(MCAIN) USAGE(*ALLOWED)"}, {"self_ref": "#/texts/406", "parent": {"cref": "#/groups/25"}, "children": [], "label": "list_item", "prov": [{"page_no": 39, "bbox": {"l": 136.02276611328125, "t": 555.4281005859375, "r": 547.2882080078125, "b": 533.1458740234375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 163]}], "orig": "2. There is a way to discover which user profiles have authorization to implement RCAC. This can be done by running the SQL statement that is shown in Example 3-3.", "text": "2. There is a way to discover which user profiles have authorization to implement RCAC. This can be done by running the SQL statement that is shown in Example 3-3.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/407", "parent": {"cref": "#/body"}, "children": [], "label": "paragraph", "prov": [{"page_no": 39, "bbox": {"l": 136.46849060058594, "t": 521.435302734375, "r": 460.0157775878906, "b": 511.7123107910156, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 77]}], "orig": "Example 3-3 Verifying what user profiles have authorization to implement RCAC", "text": "Example 3-3 Verifying what user profiles have authorization to implement RCAC"}, {"self_ref": "#/texts/408", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 39, "bbox": {"l": 136.8000030517578, "t": 503.3218994140625, "r": 346.6770935058594, "b": 422.5482177734375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 129]}], "orig": "SELECT function_id, user_name, usage, user_type FROM qsys2.function_usage WHERE function_id ='QIBM_DB_SECADM' ORDER BY user_name;", "text": "SELECT function_id, user_name, usage, user_type FROM qsys2.function_usage WHERE function_id ='QIBM_DB_SECADM' ORDER BY user_name;"}, {"self_ref": "#/texts/409", "parent": {"cref": "#/groups/26"}, "children": [], "label": "list_item", "prov": [{"page_no": 39, "bbox": {"l": 135.87002563476562, "t": 408.0870361328125, "r": 545.5682983398438, "b": 385.96734619140625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 151]}], "orig": "3. The result of the SQL statement is shown in Figure 3-6. In this example, either MCAIN or HBEDOYA can implement RCAC in the Human Resources database.", "text": "3. The result of the SQL statement is shown in Figure 3-6. In this example, either MCAIN or HBEDOYA can implement RCAC in the Human Resources database.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/410", "parent": {"cref": "#/body"}, "children": [], "label": "paragraph", "prov": [{"page_no": 39, "bbox": {"l": 136.01937866210938, "t": 324.9443054199219, "r": 307.21844482421875, "b": 314.9219970703125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 42]}], "orig": "Figure 3-6 Result of the function ID query", "text": "Figure 3-6 Result of the function ID query"}, {"self_ref": "#/texts/411", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 39, "bbox": {"l": 64.10499572753906, "t": 296.5173034667969, "r": 418.56524658203125, "b": 282.97650146484375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 59]}], "orig": "3.6.2 Creating group profiles for the users and their roles", "text": "3.6.2 Creating group profiles for the users and their roles", "level": 1}, {"self_ref": "#/texts/412", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 39, "bbox": {"l": 135.9925994873047, "t": 270.00384521484375, "r": 532.9351806640625, "b": 247.64495849609375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 154]}], "orig": "Assuming that all the employees have a valid user profile, the next step is to create group profiles to group the employees. Complete the following steps:", "text": "Assuming that all the employees have a valid user profile, the next step is to create group profiles to group the employees. Complete the following steps:"}, {"self_ref": "#/texts/413", "parent": {"cref": "#/groups/27"}, "children": [], "label": "list_item", "prov": [{"page_no": 39, "bbox": {"l": 136.8000030517578, "t": 240.49017333984375, "r": 357.9049987792969, "b": 230.29901123046875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 51]}], "orig": "1. In this example, there are three group profiles:", "text": "1. In this example, there are three group profiles:", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/414", "parent": {"cref": "#/groups/27"}, "children": [], "label": "list_item", "prov": [{"page_no": 39, "bbox": {"l": 151.3660430908203, "t": 224.04693603515625, "r": 313.8529357910156, "b": 213.640380859375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 30]}], "orig": "-HR (Human Resource personnel)", "text": "-HR (Human Resource personnel)", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/415", "parent": {"cref": "#/groups/27"}, "children": [], "label": "list_item", "prov": [{"page_no": 39, "bbox": {"l": 151.38209533691406, "t": 211.79541015625, "r": 242.8311767578125, "b": 201.1751708984375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 15]}], "orig": "-MGR (Managers)", "text": "-MGR (Managers)", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/416", "parent": {"cref": "#/groups/27"}, "children": [], "label": "list_item", "prov": [{"page_no": 39, "bbox": {"l": 151.16091918945312, "t": 199.9373779296875, "r": 245.60702514648438, "b": 189.66497802734375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 16]}], "orig": "-EMP (Employees)", "text": "-EMP (Employees)", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/417", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 39, "bbox": {"l": 150.5602569580078, "t": 182.7015380859375, "r": 547.29541015625, "b": 160.22564697265625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 174]}], "orig": "These are created by creating user profiles with no password. Example 3-4 shows the Create User Profile ( CRTUSRPRF ) CL commands that you use to create these group profiles.", "text": "These are created by creating user profiles with no password. Example 3-4 shows the Create User Profile ( CRTUSRPRF ) CL commands that you use to create these group profiles."}, {"self_ref": "#/texts/418", "parent": {"cref": "#/body"}, "children": [], "label": "paragraph", "prov": [{"page_no": 39, "bbox": {"l": 136.35838317871094, "t": 148.7242431640625, "r": 285.8739318847656, "b": 138.73602294921875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 35]}], "orig": "Example 3-4 Creating group profiles", "text": "Example 3-4 Creating group profiles"}, {"self_ref": "#/texts/419", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 39, "bbox": {"l": 136.8000030517578, "t": 130.84197998046875, "r": 441.59588623046875, "b": 98.0676040649414, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 174]}], "orig": "CRTUSRPRF USRPRF(EMP) PASSWORD() TEXT('Employees Group') CRTUSRPRF USRPRF(MGR) PASSWORD() TEXT('Managers Group') CRTUSRPRF USRPRF(HR) PASSWORD() TEXT('Human Resources Group')", "text": "CRTUSRPRF USRPRF(EMP) PASSWORD() TEXT('Employees Group') CRTUSRPRF USRPRF(MGR) PASSWORD() TEXT('Managers Group') CRTUSRPRF USRPRF(HR) PASSWORD() TEXT('Human Resources Group')"}, {"self_ref": "#/texts/420", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 39, "bbox": {"l": 344.5692443847656, "t": 37.2572021484375, "r": 523.6016235351562, "b": 27.8846435546875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 40]}], "orig": "Chapter 3. Row and Column Access Control", "text": "Chapter 3. Row and Column Access Control"}, {"self_ref": "#/texts/421", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 39, "bbox": {"l": 535.6176147460938, "t": 37.63116455078125, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "23", "text": "23"}, {"self_ref": "#/texts/422", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 40, "bbox": {"l": 63.88653564453125, "t": 37.68133544921875, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "24", "text": "24"}, {"self_ref": "#/texts/423", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 40, "bbox": {"l": 93.27753448486328, "t": 37.33148193359375, "r": 334.4214172363281, "b": 28.0159912109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/424", "parent": {"cref": "#/groups/28"}, "children": [], "label": "list_item", "prov": [{"page_no": 40, "bbox": {"l": 136.0978240966797, "t": 721.5997314453125, "r": 547.2675170898438, "b": 674.9645385742188, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 308]}], "orig": "2. You now must assign users to a group profile. Employees go in to the EMP group profile, Managers go into the MGR group profile, and Human Resource employees go into the HR group profile. For simplicity, this example selects one employee (DSSMITH), one manager (TQSPENSER), and one HR analyst (VGLUCCHESS).", "text": "2. You now must assign users to a group profile. Employees go in to the EMP group profile, Managers go into the MGR group profile, and Human Resource employees go into the HR group profile. For simplicity, this example selects one employee (DSSMITH), one manager (TQSPENSER), and one HR analyst (VGLUCCHESS).", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/425", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 40, "bbox": {"l": 156.851318359375, "t": 657.3757934570312, "r": 533.43896484375, "b": 646.6730346679688, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 81]}], "orig": "Note: Neither of the consultants (MCAIN and HBEDOYA) belong to any group profile.", "text": "Note: Neither of the consultants (MCAIN and HBEDOYA) belong to any group profile."}, {"self_ref": "#/texts/426", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 40, "bbox": {"l": 64.17131805419922, "t": 623.2008056640625, "r": 360.1609802246094, "b": 609.3201293945312, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 44]}], "orig": "3.6.3 Demonstrating data access without RCAC", "text": "3.6.3 Demonstrating data access without RCAC", "level": 1}, {"self_ref": "#/texts/427", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 40, "bbox": {"l": 136.1033477783203, "t": 596.827392578125, "r": 540.3065185546875, "b": 574.2984619140625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 127]}], "orig": "Before implementing RCAC, run some simple SQL statements to demonstrate data access without RCAC. Complete the following steps:", "text": "Before implementing RCAC, run some simple SQL statements to demonstrate data access without RCAC. Complete the following steps:"}, {"self_ref": "#/texts/428", "parent": {"cref": "#/groups/29"}, "children": [], "label": "list_item", "prov": [{"page_no": 40, "bbox": {"l": 136.76841735839844, "t": 567.540771484375, "r": 547.2156982421875, "b": 545.2590942382812, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 124]}], "orig": "1. The first SQL statement, which is shown in Example 3-5, basically counts the total number of rows in the EMPLOYEES table.", "text": "1. The first SQL statement, which is shown in Example 3-5, basically counts the total number of rows in the EMPLOYEES table.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/429", "parent": {"cref": "#/body"}, "children": [], "label": "paragraph", "prov": [{"page_no": 40, "bbox": {"l": 136.413330078125, "t": 533.3753662109375, "r": 334.6294250488281, "b": 523.678955078125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 44]}], "orig": "Example 3-5 Counting the number of employees", "text": "Example 3-5 Counting the number of employees"}, {"self_ref": "#/texts/430", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 40, "bbox": {"l": 136.42640686035156, "t": 516.35400390625, "r": 406.6163635253906, "b": 505.2223815917969, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "SELECT COUNT(*) as ROW_COUNT FROM HR_SCHEMA.EMPLOYEES;", "text": "SELECT COUNT(*) as ROW_COUNT FROM HR_SCHEMA.EMPLOYEES;"}, {"self_ref": "#/texts/431", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 40, "bbox": {"l": 150.4588623046875, "t": 492.0571594238281, "r": 545.1071166992188, "b": 469.52520751953125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 103]}], "orig": "The result of this query is shown in Figure 3-7, which is the total number of employees of the company.", "text": "The result of this query is shown in Figure 3-7, which is the total number of employees of the company."}, {"self_ref": "#/texts/432", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 40, "bbox": {"l": 136.30203247070312, "t": 416.7283630371094, "r": 272.9559326171875, "b": 407.2127990722656, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 30]}], "orig": "Figure 3-7 Number of employees", "text": "Figure 3-7 Number of employees"}, {"self_ref": "#/texts/433", "parent": {"cref": "#/groups/30"}, "children": [], "label": "list_item", "prov": [{"page_no": 40, "bbox": {"l": 136.12722778320312, "t": 390.7404479980469, "r": 547.2517700195312, "b": 368.23193359375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 160]}], "orig": "2. Run a second SQL statement (shown in Example 3-6) that lists the employees. If you have read access to the table, you see all the rows no matter who you are.", "text": "2. Run a second SQL statement (shown in Example 3-6) that lists the employees. If you have read access to the table, you see all the rows no matter who you are.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/434", "parent": {"cref": "#/body"}, "children": [], "label": "paragraph", "prov": [{"page_no": 40, "bbox": {"l": 136.4648895263672, "t": 356.55615234375, "r": 369.71875, "b": 347.0237731933594, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 55]}], "orig": "Example 3-6 Displaying the information of the Employees", "text": "Example 3-6 Displaying the information of the Employees"}, {"self_ref": "#/texts/435", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 40, "bbox": {"l": 136.8000030517578, "t": 338.681884765625, "r": 286.67803955078125, "b": 245.90841674804688, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 124]}], "orig": "SELECT EMPLOYEE_ID, LAST_NAME, JOB_DESCRIPTION, DATE_OF_BIRTH, TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE FROM HR_SCHEMA.EMPLOYEES", "text": "SELECT EMPLOYEE_ID, LAST_NAME, JOB_DESCRIPTION, DATE_OF_BIRTH, TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE FROM HR_SCHEMA.EMPLOYEES"}, {"self_ref": "#/texts/436", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 41, "bbox": {"l": 150.51434326171875, "t": 721.2857666015625, "r": 356.252197265625, "b": 710.7474365234375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 48]}], "orig": "The result of this query is shown in Figure 3-8.", "text": "The result of this query is shown in Figure 3-8.", "level": 1}, {"self_ref": "#/texts/437", "parent": {"cref": "#/body"}, "children": [], "label": "paragraph", "prov": [{"page_no": 41, "bbox": {"l": 64.24310302734375, "t": 321.3759460449219, "r": 276.3370361328125, "b": 312.0570068359375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 49]}], "orig": "Figure 3-8 List of employees without RCAC enabled", "text": "Figure 3-8 List of employees without RCAC enabled"}, {"self_ref": "#/texts/438", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 41, "bbox": {"l": 64.31729888916016, "t": 292.3377685546875, "r": 339.9589538574219, "b": 278.92535400390625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 43]}], "orig": "3.6.4 Defining and creating row permissions", "text": "3.6.4 Defining and creating row permissions", "level": 1}, {"self_ref": "#/texts/439", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 41, "bbox": {"l": 136.47174072265625, "t": 265.88421630859375, "r": 484.33428955078125, "b": 255.93072509765625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 72]}], "orig": "Implement RCAC on the EMPLOYEES table by completing the following steps:", "text": "Implement RCAC on the EMPLOYEES table by completing the following steps:"}, {"self_ref": "#/texts/440", "parent": {"cref": "#/groups/31"}, "children": [], "label": "list_item", "prov": [{"page_no": 41, "bbox": {"l": 136.80001831054688, "t": 249.22784423828125, "r": 519.3287963867188, "b": 226.7816162109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 104]}], "orig": "1. Start by defining a row permission. In this example, the rules to enforce include the following ones:", "text": "1. Start by defining a row permission. In this example, the rules to enforce include the following ones:", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/441", "parent": {"cref": "#/groups/31"}, "children": [], "label": "list_item", "prov": [{"page_no": 41, "bbox": {"l": 151.23526000976562, "t": 219.894287109375, "r": 392.5151062011719, "b": 209.737060546875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 48]}], "orig": "-Human Resources employees can see all the rows.", "text": "-Human Resources employees can see all the rows.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/442", "parent": {"cref": "#/groups/31"}, "children": [], "label": "list_item", "prov": [{"page_no": 41, "bbox": {"l": 151.32948303222656, "t": 207.68096923828125, "r": 484.94476318359375, "b": 197.8070068359375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 70]}], "orig": "-Managers can see only information for the employees that they manage.", "text": "-Managers can see only information for the employees that they manage.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/443", "parent": {"cref": "#/groups/31"}, "children": [], "label": "list_item", "prov": [{"page_no": 41, "bbox": {"l": 151.46128845214844, "t": 195.94891357421875, "r": 371.5732421875, "b": 185.70257568359375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 46]}], "orig": "-Employees can see only their own information.", "text": "-Employees can see only their own information.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/444", "parent": {"cref": "#/groups/31"}, "children": [], "label": "list_item", "prov": [{"page_no": 41, "bbox": {"l": 151.29678344726562, "t": 183.808837890625, "r": 415.18304443359375, "b": 173.96624755859375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 58]}], "orig": "-Consultants are not allowed to see any rows in the table.", "text": "-Consultants are not allowed to see any rows in the table.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/445", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 41, "bbox": {"l": 344.6938781738281, "t": 37.16973876953125, "r": 523.6016235351562, "b": 27.9832763671875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 40]}], "orig": "Chapter 3. Row and Column Access Control", "text": "Chapter 3. Row and Column Access Control"}, {"self_ref": "#/texts/446", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 41, "bbox": {"l": 535.7025146484375, "t": 37.624755859375, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "25", "text": "25"}, {"self_ref": "#/texts/447", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 42, "bbox": {"l": 63.85331726074219, "t": 37.61859130859375, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "26", "text": "26"}, {"self_ref": "#/texts/448", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 42, "bbox": {"l": 93.32594299316406, "t": 37.32861328125, "r": 334.4214172363281, "b": 28.073486328125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/449", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 42, "bbox": {"l": 150.2159423828125, "t": 721.3442993164062, "r": 538.560302734375, "b": 710.8866577148438, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 85]}], "orig": "To implement this row permission, run the SQL statement that is shown in Example 3-7.", "text": "To implement this row permission, run the SQL statement that is shown in Example 3-7."}, {"self_ref": "#/texts/450", "parent": {"cref": "#/body"}, "children": [], "label": "paragraph", "prov": [{"page_no": 42, "bbox": {"l": 136.3914031982422, "t": 699.560791015625, "r": 383.7792053222656, "b": 689.8576049804688, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 56]}], "orig": "Example 3-7 Creating a permission for the EMPLOYEE table", "text": "Example 3-7 Creating a permission for the EMPLOYEE table"}, {"self_ref": "#/texts/451", "parent": {"cref": "#/body"}, "children": [], "label": "code", "prov": [{"page_no": 42, "bbox": {"l": 134.622802734375, "t": 686.9898681640625, "r": 547.7505493164062, "b": 547.480224609375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 438]}], "orig": "CREATE PERMISSION HR_SCHEMA.PERMISSION1_ON_EMPLOYEES ON HR_SCHEMA.EMPLOYEES AS EMPLOYEES FOR ROWS WHERE ( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1 ) OR ( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND ( EMPLOYEES . MANAGER_OF_EMPLOYEE = SESSION_USER OR EMPLOYEES . USER_ID = SESSION_USER ) ) OR ( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1 AND EMPLOYEES . USER_ID = SESSION_USER ) ENFORCED FOR ALL ACCESS ENABLE ;", "text": "CREATE PERMISSION HR_SCHEMA.PERMISSION1_ON_EMPLOYEES ON HR_SCHEMA.EMPLOYEES AS EMPLOYEES FOR ROWS WHERE ( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1 ) OR ( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND ( EMPLOYEES . MANAGER_OF_EMPLOYEE = SESSION_USER OR EMPLOYEES . USER_ID = SESSION_USER ) ) OR ( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1 AND EMPLOYEES . USER_ID = SESSION_USER ) ENFORCED FOR ALL ACCESS ENABLE ;"}, {"self_ref": "#/texts/452", "parent": {"cref": "#/groups/32"}, "children": [], "label": "list_item", "prov": [{"page_no": 42, "bbox": {"l": 135.9988250732422, "t": 538.8099365234375, "r": 539.8582153320312, "b": 504.1722717285156, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 212]}], "orig": "2. Look at the definition of the table and see the permissions, as shown in Figure 3-9. QIBM_DEFAULT_EMPLOYEE_HR_SCHEMA is the default permission, as described in 3.1.2, \"Enabling and activating RCAC\" on page 16.", "text": "2. Look at the definition of the table and see the permissions, as shown in Figure 3-9. QIBM_DEFAULT_EMPLOYEE_HR_SCHEMA is the default permission, as described in 3.1.2, \"Enabling and activating RCAC\" on page 16.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/453", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 42, "bbox": {"l": 64.43289947509766, "t": 300.5486755371094, "r": 331.18115234375, "b": 291.20758056640625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 63]}], "orig": "Figure 3-9 Row permissions that are shown in System i Navigator", "text": "Figure 3-9 Row permissions that are shown in System i Navigator"}, {"self_ref": "#/texts/454", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 42, "bbox": {"l": 64.18317413330078, "t": 271.5654296875, "r": 327.4058837890625, "b": 258.0186767578125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 40]}], "orig": "3.6.5 Defining and creating column masks", "text": "3.6.5 Defining and creating column masks", "level": 1}, {"self_ref": "#/texts/455", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 42, "bbox": {"l": 136.35951232910156, "t": 245.205810546875, "r": 526.414306640625, "b": 223.205078125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 96]}], "orig": "Define the different masks for the columns that are sensitive by completing the following steps:", "text": "Define the different masks for the columns that are sensitive by completing the following steps:"}, {"self_ref": "#/texts/456", "parent": {"cref": "#/groups/33"}, "children": [], "label": "list_item", "prov": [{"page_no": 42, "bbox": {"l": 136.79542541503906, "t": 216.73974609375, "r": 538.78564453125, "b": 194.23492431640625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 104]}], "orig": "1. Start with the DAY_OF_BIRTH column. In this example, the rules to enforce include the following ones:", "text": "1. Start with the DAY_OF_BIRTH column. In this example, the rules to enforce include the following ones:", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/457", "parent": {"cref": "#/groups/33"}, "children": [], "label": "list_item", "prov": [{"page_no": 42, "bbox": {"l": 151.26760864257812, "t": 187.36602783203125, "r": 467.65625, "b": 177.4149169921875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 67]}], "orig": "-Human Resources can see the entire date of birth of the employees.", "text": "-Human Resources can see the entire date of birth of the employees.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/458", "parent": {"cref": "#/groups/33"}, "children": [], "label": "list_item", "prov": [{"page_no": 42, "bbox": {"l": 151.2598114013672, "t": 170.74359130859375, "r": 375.3867492675781, "b": 160.2803955078125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 48]}], "orig": "-Employees can see only their own date of birth.", "text": "-Employees can see only their own date of birth.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/459", "parent": {"cref": "#/groups/33"}, "children": [], "label": "list_item", "prov": [{"page_no": 42, "bbox": {"l": 151.43798828125, "t": 153.414794921875, "r": 547.2565307617188, "b": 143.18109130859375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 83]}], "orig": "-Managers can see the date of birth of their employees masked with YEAR being 9999.", "text": "-Managers can see the date of birth of their employees masked with YEAR being 9999.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/460", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 42, "bbox": {"l": 150.7313232421875, "t": 136.70220947265625, "r": 530.0606689453125, "b": 126.41015625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 82]}], "orig": "To implement this column mask, run the SQL statement that is shown in Example 3-8.", "text": "To implement this column mask, run the SQL statement that is shown in Example 3-8."}, {"self_ref": "#/texts/461", "parent": {"cref": "#/body"}, "children": [], "label": "paragraph", "prov": [{"page_no": 42, "bbox": {"l": 136.27670288085938, "t": 114.8758544921875, "r": 403.9977722167969, "b": 105.1051025390625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 58]}], "orig": "Example 3-8 Creation of a mask on the DATE_OF_BIRTH column", "text": "Example 3-8 Creation of a mask on the DATE_OF_BIRTH column"}, {"self_ref": "#/texts/462", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 42, "bbox": {"l": 136.8000030517578, "t": 96.58187866210938, "r": 416.6361083984375, "b": 63.80750274658203, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 114]}], "orig": "CREATE MASK HR_SCHEMA.MASK_DATE_OF_BIRTH_ON_EMPLOYEES ON HR_SCHEMA.EMPLOYEES AS EMPLOYEES FOR COLUMN DATE_OF_BIRTH", "text": "CREATE MASK HR_SCHEMA.MASK_DATE_OF_BIRTH_ON_EMPLOYEES ON HR_SCHEMA.EMPLOYEES AS EMPLOYEES FOR COLUMN DATE_OF_BIRTH"}, {"self_ref": "#/texts/463", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 43, "bbox": {"l": 136.79959106445312, "t": 720.341552734375, "r": 166.73934936523438, "b": 699.5669555664062, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 11]}], "orig": "RETURN CASE", "text": "RETURN CASE"}, {"self_ref": "#/texts/464", "parent": {"cref": "#/body"}, "children": [], "label": "code", "prov": [{"page_no": 43, "bbox": {"l": 136.79959106445312, "t": 700.2308349609375, "r": 521.5742797851562, "b": 530.429443359375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 437]}], "orig": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR', 'EMP' ) = 1 THEN EMPLOYEES . DATE_OF_BIRTH WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER = EMPLOYEES . USER_ID THEN EMPLOYEES . DATE_OF_BIRTH WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER <> EMPLOYEES . USER_ID THEN ( 9999 || '-' || MONTH ( EMPLOYEES . DATE_OF_BIRTH ) || '-' || DAY (EMPLOYEES.DATE_OF_BIRTH )) ELSE NULL END ENABLE ;", "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR', 'EMP' ) = 1 THEN EMPLOYEES . DATE_OF_BIRTH WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER = EMPLOYEES . USER_ID THEN EMPLOYEES . DATE_OF_BIRTH WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER <> EMPLOYEES . USER_ID THEN ( 9999 || '-' || MONTH ( EMPLOYEES . DATE_OF_BIRTH ) || '-' || DAY (EMPLOYEES.DATE_OF_BIRTH )) ELSE NULL END ENABLE ;"}, {"self_ref": "#/texts/465", "parent": {"cref": "#/groups/34"}, "children": [], "label": "list_item", "prov": [{"page_no": 43, "bbox": {"l": 135.86044311523438, "t": 517.5462646484375, "r": 547.2122192382812, "b": 495.22808837890625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 136]}], "orig": "2. The other column to mask in this example is the TAX_ID information. In this example, the rules to enforce include the following ones:", "text": "2. The other column to mask in this example is the TAX_ID information. In this example, the rules to enforce include the following ones:", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/466", "parent": {"cref": "#/groups/34"}, "children": [], "label": "list_item", "prov": [{"page_no": 43, "bbox": {"l": 151.1599578857422, "t": 488.6722717285156, "r": 469.1528015136719, "b": 478.3014831542969, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 62]}], "orig": "-Human Resources can see the unmasked TAX_ID of the employees.", "text": "-Human Resources can see the unmasked TAX_ID of the employees.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/467", "parent": {"cref": "#/groups/34"}, "children": [], "label": "list_item", "prov": [{"page_no": 43, "bbox": {"l": 151.2740936279297, "t": 471.45074462890625, "r": 403.95953369140625, "b": 461.1424560546875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 50]}], "orig": "-Employees can see only their own unmasked TAX_ID.", "text": "-Employees can see only their own unmasked TAX_ID.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/468", "parent": {"cref": "#/groups/34"}, "children": [], "label": "list_item", "prov": [{"page_no": 43, "bbox": {"l": 151.4427947998047, "t": 454.6841735839844, "r": 545.16845703125, "b": 432.28228759765625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 129]}], "orig": "-Managers see a masked version of TAX_ID with the first five characters replaced with the X character (for example, XXX-XX-1234).", "text": "-Managers see a masked version of TAX_ID with the first five characters replaced with the X character (for example, XXX-XX-1234).", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/469", "parent": {"cref": "#/groups/34"}, "children": [], "label": "list_item", "prov": [{"page_no": 43, "bbox": {"l": 151.51747131347656, "t": 425.3660888671875, "r": 529.463623046875, "b": 414.8310852050781, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 77]}], "orig": "-Any other person sees the entire TAX_ID as masked, for example, XXX-XX-XXXX.", "text": "-Any other person sees the entire TAX_ID as masked, for example, XXX-XX-XXXX.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/470", "parent": {"cref": "#/groups/34"}, "children": [], "label": "list_item", "prov": [{"page_no": 43, "bbox": {"l": 150.69093322753906, "t": 408.19866943359375, "r": 530.060302734375, "b": 397.82440185546875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 82]}], "orig": "To implement this column mask, run the SQL statement that is shown in Example 3-9.", "text": "To implement this column mask, run the SQL statement that is shown in Example 3-9.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/471", "parent": {"cref": "#/body"}, "children": [], "label": "paragraph", "prov": [{"page_no": 43, "bbox": {"l": 136.25662231445312, "t": 386.553955078125, "r": 352.31475830078125, "b": 376.9618835449219, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 48]}], "orig": "Example 3-9 Creating a mask on the TAX_ID column", "text": "Example 3-9 Creating a mask on the TAX_ID column"}, {"self_ref": "#/texts/472", "parent": {"cref": "#/body"}, "children": [], "label": "code", "prov": [{"page_no": 43, "bbox": {"l": 135.95343017578125, "t": 373.4818115234375, "r": 535.87548828125, "b": 103.45672607421875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 590]}], "orig": "CREATE MASK HR_SCHEMA.MASK_TAX_ID_ON_EMPLOYEES ON HR_SCHEMA.EMPLOYEES AS EMPLOYEES FOR COLUMN TAX_ID RETURN CASE WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1 THEN EMPLOYEES . TAX_ID WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER = EMPLOYEES . USER_ID THEN EMPLOYEES . TAX_ID WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER <> EMPLOYEES . USER_ID THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( EMPLOYEES . TAX_ID , 8 , 4 ) ) WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1 THEN EMPLOYEES . TAX_ID ELSE 'XXX-XX-XXXX' END ENABLE ;", "text": "CREATE MASK HR_SCHEMA.MASK_TAX_ID_ON_EMPLOYEES ON HR_SCHEMA.EMPLOYEES AS EMPLOYEES FOR COLUMN TAX_ID RETURN CASE WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1 THEN EMPLOYEES . TAX_ID WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER = EMPLOYEES . USER_ID THEN EMPLOYEES . TAX_ID WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER <> EMPLOYEES . USER_ID THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( EMPLOYEES . TAX_ID , 8 , 4 ) ) WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1 THEN EMPLOYEES . TAX_ID ELSE 'XXX-XX-XXXX' END ENABLE ;"}, {"self_ref": "#/texts/473", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 43, "bbox": {"l": 344.5617370605469, "t": 37.32916259765625, "r": 523.6016235351562, "b": 27.86419677734375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 40]}], "orig": "Chapter 3. Row and Column Access Control", "text": "Chapter 3. Row and Column Access Control"}, {"self_ref": "#/texts/474", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 43, "bbox": {"l": 535.6422729492188, "t": 37.82464599609375, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "27", "text": "27"}, {"self_ref": "#/texts/475", "parent": {"cref": "#/groups/35"}, "children": [], "label": "list_item", "prov": [{"page_no": 44, "bbox": {"l": 136.14459228515625, "t": 721.3890380859375, "r": 449.952392578125, "b": 710.7732543945312, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 65]}], "orig": "3. Figure 3-10 shows the masks that are created in the HR_SCHEMA.", "text": "3. Figure 3-10 shows the masks that are created in the HR_SCHEMA.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/476", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 44, "bbox": {"l": 64.17350769042969, "t": 619.2543334960938, "r": 294.42578125, "b": 610.1016235351562, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 52]}], "orig": "Figure 3-10 Column masks shown in System i Navigator", "text": "Figure 3-10 Column masks shown in System i Navigator"}, {"self_ref": "#/texts/477", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 44, "bbox": {"l": 64.29059600830078, "t": 590.3381958007812, "r": 203.98521423339844, "b": 577.004638671875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 21]}], "orig": "3.6.6 Activating RCAC", "text": "3.6.6 Activating RCAC", "level": 1}, {"self_ref": "#/texts/478", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 44, "bbox": {"l": 136.1686553955078, "t": 563.902587890625, "r": 547.2256469726562, "b": 529.5360107421875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 265]}], "orig": "Now that you have created the row permission and the two column masks, RCAC must be activated. The row permission and the two column masks are enabled (last clause in the scripts), but now you must activate RCAC on the table. To do so, complete the following steps:", "text": "Now that you have created the row permission and the two column masks, RCAC must be activated. The row permission and the two column masks are enabled (last clause in the scripts), but now you must activate RCAC on the table. To do so, complete the following steps:"}, {"self_ref": "#/texts/479", "parent": {"cref": "#/groups/36"}, "children": [], "label": "list_item", "prov": [{"page_no": 44, "bbox": {"l": 136.5933074951172, "t": 523.4700317382812, "r": 409.4788818359375, "b": 513.1278076171875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 57]}], "orig": "1. Run the SQL statements that are shown in Example 3-10.", "text": "1. Run the SQL statements that are shown in Example 3-10.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/480", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 44, "bbox": {"l": 136.31597900390625, "t": 501.5721435546875, "r": 375.2909851074219, "b": 491.5029296875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 51]}], "orig": "Example 3-10 Activating RCAC on the EMPLOYEES table", "text": "Example 3-10 Activating RCAC on the EMPLOYEES table", "level": 1}, {"self_ref": "#/texts/481", "parent": {"cref": "#/groups/37"}, "children": [], "label": "list_item", "prov": [{"page_no": 44, "bbox": {"l": 135.7803192138672, "t": 484.90777587890625, "r": 376.6766052246094, "b": 473.9972839355469, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 45]}], "orig": "/* Active Row Access Control (permissions) */", "text": "/* Active Row Access Control (permissions) */", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/482", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 44, "bbox": {"l": 136.8000030517578, "t": 471.3420715332031, "r": 354.86962890625, "b": 426.5678405761719, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 131]}], "orig": "/* Active Column Access Control (masks) ALTER TABLE HR_SCHEMA.EMPLOYEES ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL;", "text": "/* Active Column Access Control (masks) ALTER TABLE HR_SCHEMA.EMPLOYEES ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL;"}, {"self_ref": "#/texts/483", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 44, "bbox": {"l": 365.77313232421875, "t": 471.3420715332031, "r": 376.6766052246094, "b": 462.5672912597656, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "*/", "text": "*/"}, {"self_ref": "#/texts/484", "parent": {"cref": "#/groups/38"}, "children": [], "label": "list_item", "prov": [{"page_no": 44, "bbox": {"l": 135.87640380859375, "t": 412.6735534667969, "r": 540.8014526367188, "b": 378.27978515625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 231]}], "orig": "2. Look at the definition of the EMPLOYEE table, as shown in Figure 3-11. To do this, from the main navigation pane of System i Navigator, click Schemas \uf0ae HR_SCHEMA \uf0ae Tables , right-click the EMPLOYEES table, and click Definition .", "text": "2. Look at the definition of the EMPLOYEE table, as shown in Figure 3-11. To do this, from the main navigation pane of System i Navigator, click Schemas \uf0ae HR_SCHEMA \uf0ae Tables , right-click the EMPLOYEES table, and click Definition .", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/485", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 44, "bbox": {"l": 64.33819580078125, "t": 143.758056640625, "r": 348.354736328125, "b": 134.59954833984375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 65]}], "orig": "Figure 3-11 Selecting the EMPLOYEES table from System i Navigator", "text": "Figure 3-11 Selecting the EMPLOYEES table from System i Navigator"}, {"self_ref": "#/texts/486", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 44, "bbox": {"l": 63.84088897705078, "t": 37.61041259765625, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "28", "text": "28"}, {"self_ref": "#/texts/487", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 44, "bbox": {"l": 93.28304290771484, "t": 37.27587890625, "r": 334.4214172363281, "b": 28.056396484375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/488", "parent": {"cref": "#/groups/39"}, "children": [], "label": "list_item", "prov": [{"page_no": 45, "bbox": {"l": 135.99427795410156, "t": 721.436767578125, "r": 531.1966552734375, "b": 699.1064453125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 152]}], "orig": "3. The EMPLOYEES table definition is displayed, as shown in Figure 3-12. Note that the Row access control and Column access control options are checked.", "text": "3. The EMPLOYEES table definition is displayed, as shown in Figure 3-12. Note that the Row access control and Column access control options are checked.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/489", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 45, "bbox": {"l": 136.06971740722656, "t": 451.5973205566406, "r": 356.7056579589844, "b": 441.8953857421875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 47]}], "orig": "Figure 3-12 RCAC enabled on the EMPLOYEES table", "text": "Figure 3-12 RCAC enabled on the EMPLOYEES table"}, {"self_ref": "#/texts/490", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 45, "bbox": {"l": 64.2018051147461, "t": 423.00640869140625, "r": 339.8397216796875, "b": 409.5545349121094, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 41]}], "orig": "3.6.7 Demonstrating data access with RCAC", "text": "3.6.7 Demonstrating data access with RCAC", "level": 1}, {"self_ref": "#/texts/491", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 45, "bbox": {"l": 135.7947235107422, "t": 396.53436279296875, "r": 547.259521484375, "b": 374.49847412109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 100]}], "orig": "You are now ready to start testing RCAC with the four different users. Complete the following steps:", "text": "You are now ready to start testing RCAC with the four different users. Complete the following steps:"}, {"self_ref": "#/texts/492", "parent": {"cref": "#/groups/40"}, "children": [], "label": "list_item", "prov": [{"page_no": 45, "bbox": {"l": 136.66810607910156, "t": 367.43341064453125, "r": 544.1072387695312, "b": 332.9556884765625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 243]}], "orig": "1. The first SQL statement that is shown in Example 3-11 illustrates the EMPLOYEE count. You know that there are 42 rows from the query that was run before RCAC was put in place (see 3.6.3, \"Demonstrating data access without RCAC\" on page 24).", "text": "1. The first SQL statement that is shown in Example 3-11 illustrates the EMPLOYEE count. You know that there are 42 rows from the query that was run before RCAC was put in place (see 3.6.3, \"Demonstrating data access without RCAC\" on page 24).", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/493", "parent": {"cref": "#/body"}, "children": [], "label": "paragraph", "prov": [{"page_no": 45, "bbox": {"l": 136.4961700439453, "t": 321.431640625, "r": 279.97296142578125, "b": 312.2276306152344, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 28]}], "orig": "Example 3-11 EMPLOYEES count", "text": "Example 3-11 EMPLOYEES count"}, {"self_ref": "#/texts/494", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 45, "bbox": {"l": 136.306396484375, "t": 304.6670227050781, "r": 406.6163635253906, "b": 293.92047119140625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "SELECT COUNT(*) as ROW_COUNT FROM HR_SCHEMA.EMPLOYEES;", "text": "SELECT COUNT(*) as ROW_COUNT FROM HR_SCHEMA.EMPLOYEES;"}, {"self_ref": "#/texts/495", "parent": {"cref": "#/groups/41"}, "children": [], "label": "list_item", "prov": [{"page_no": 45, "bbox": {"l": 135.95774841308594, "t": 280.7308044433594, "r": 511.5380859375, "b": 258.1456298828125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 146]}], "orig": "2. The result of the query for a user that belongs to the HR group profile is shown in Figure 3-13. This user can see all the 42 rows (employees).", "text": "2. The result of the query for a user that belongs to the HR group profile is shown in Figure 3-13. This user can see all the 42 rows (employees).", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/496", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 45, "bbox": {"l": 136.27264404296875, "t": 206.06488037109375, "r": 309.68194580078125, "b": 196.52191162109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 36]}], "orig": "Figure 3-13 Count of EMPLOYEES by HR", "text": "Figure 3-13 Count of EMPLOYEES by HR"}, {"self_ref": "#/texts/497", "parent": {"cref": "#/groups/42"}, "children": [], "label": "list_item", "prov": [{"page_no": 45, "bbox": {"l": 136.16087341308594, "t": 180.08966064453125, "r": 540.7218627929688, "b": 145.78839111328125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 216]}], "orig": "3. The result of the same query for a user who is logged on as TQSPENSER (Manager) is shown in Figure 3-14. TQSPENSER has five employees in his department and he can also see his own row, which is why the count is 6.", "text": "3. The result of the same query for a user who is logged on as TQSPENSER (Manager) is shown in Figure 3-14. TQSPENSER has five employees in his department and he can also see his own row, which is why the count is 6.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/498", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 45, "bbox": {"l": 136.1033172607422, "t": 94.15911865234375, "r": 340.1351318359375, "b": 84.3720703125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 43]}], "orig": "Figure 3-14 Count of EMPLOYEES by a manager", "text": "Figure 3-14 Count of EMPLOYEES by a manager"}, {"self_ref": "#/texts/499", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 45, "bbox": {"l": 344.54718017578125, "t": 37.26470947265625, "r": 523.6016235351562, "b": 27.9293212890625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 40]}], "orig": "Chapter 3. Row and Column Access Control", "text": "Chapter 3. Row and Column Access Control"}, {"self_ref": "#/texts/500", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 45, "bbox": {"l": 535.6342163085938, "t": 37.72052001953125, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "29", "text": "29"}, {"self_ref": "#/texts/501", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 46, "bbox": {"l": 64.19510650634766, "t": 37.57171630859375, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "30", "text": "30"}, {"self_ref": "#/texts/502", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 46, "bbox": {"l": 93.36414337158203, "t": 37.2904052734375, "r": 334.4214172363281, "b": 28.0338134765625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/503", "parent": {"cref": "#/groups/43"}, "children": [], "label": "list_item", "prov": [{"page_no": 46, "bbox": {"l": 135.79859924316406, "t": 721.3585815429688, "r": 547.213623046875, "b": 698.8319091796875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 169]}], "orig": "4. The result of the same query that is run by an employee (DSSMITH) gives the result that is shown in Figure 3-15. Each employee can see only his or her own data (row).", "text": "4. The result of the same query that is run by an employee (DSSMITH) gives the result that is shown in Figure 3-15. Each employee can see only his or her own data (row).", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/504", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 46, "bbox": {"l": 135.97097778320312, "t": 647.4303588867188, "r": 347.41455078125, "b": 637.8975219726562, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 45]}], "orig": "Figure 3-15 Count of EMPLOYEES by an employee", "text": "Figure 3-15 Count of EMPLOYEES by an employee"}, {"self_ref": "#/texts/505", "parent": {"cref": "#/groups/44"}, "children": [], "label": "list_item", "prov": [{"page_no": 46, "bbox": {"l": 136.351318359375, "t": 621.2763061523438, "r": 543.9885864257812, "b": 587.114501953125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 200]}], "orig": "5. The result of the same query that is run by the Consultant/DBE gives the result that is shown in Figure 3-16. The consultants/DBE can manage and implement RCAC, but they do not see any rows at all.", "text": "5. The result of the same query that is run by the Consultant/DBE gives the result that is shown in Figure 3-16. The consultants/DBE can manage and implement RCAC, but they do not see any rows at all.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/506", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 46, "bbox": {"l": 136.17999267578125, "t": 535.4434814453125, "r": 345.2605285644531, "b": 526.1991577148438, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 46]}], "orig": "Figure 3-16 Count of EMPLOYEES by a consultant", "text": "Figure 3-16 Count of EMPLOYEES by a consultant"}, {"self_ref": "#/texts/507", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 46, "bbox": {"l": 150.62869262695312, "t": 509.34820556640625, "r": 456.2101135253906, "b": 499.5382995605469, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 65]}], "orig": "Does the result make sense? Yes, it does because RCAC is enabled.", "text": "Does the result make sense? Yes, it does because RCAC is enabled."}, {"self_ref": "#/texts/508", "parent": {"cref": "#/groups/45"}, "children": [], "label": "list_item", "prov": [{"page_no": 46, "bbox": {"l": 136.16029357910156, "t": 492.6539306640625, "r": 544.2874145507812, "b": 458.40106201171875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 262]}], "orig": "6. Run queries against the EMPLOYEES table. The query that is used in this example runs and tests with the four different user profiles and is the same query that was run in 3.6.3, \"Demonstrating data access without RCAC\" on page 24. It is shown in Example 3-12.", "text": "6. Run queries against the EMPLOYEES table. The query that is used in this example runs and tests with the four different user profiles and is the same query that was run in 3.6.3, \"Demonstrating data access without RCAC\" on page 24. It is shown in Example 3-12.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/509", "parent": {"cref": "#/body"}, "children": [], "label": "paragraph", "prov": [{"page_no": 46, "bbox": {"l": 136.2924041748047, "t": 446.6560363769531, "r": 396.5692138671875, "b": 437.3970031738281, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 62]}], "orig": "Example 3-12 SELECT statement to test with the different users", "text": "Example 3-12 SELECT statement to test with the different users"}, {"self_ref": "#/texts/510", "parent": {"cref": "#/body"}, "children": [], "label": "code", "prov": [{"page_no": 46, "bbox": {"l": 134.74452209472656, "t": 435.07708740234375, "r": 548.0267333984375, "b": 330.2794189453125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 124]}], "orig": "SELECT EMPLOYEE_ID, LAST_NAME, JOB_DESCRIPTION, DATE_OF_BIRTH, TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE FROM HR_SCHEMA.EMPLOYEES", "text": "SELECT EMPLOYEE_ID, LAST_NAME, JOB_DESCRIPTION, DATE_OF_BIRTH, TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE FROM HR_SCHEMA.EMPLOYEES"}, {"self_ref": "#/texts/511", "parent": {"cref": "#/groups/46"}, "children": [], "label": "list_item", "prov": [{"page_no": 47, "bbox": {"l": 136.29183959960938, "t": 721.4707641601562, "r": 547.152587890625, "b": 699.2781372070312, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 145]}], "orig": "7. Figure 3-17 shows the results of the query for a Human Resources (VGLUCCHESS) user profile. The user can see all the rows and all the columns.", "text": "7. Figure 3-17 shows the results of the query for a Human Resources (VGLUCCHESS) user profile. The user can see all the rows and all the columns.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/512", "parent": {"cref": "#/body"}, "children": [], "label": "paragraph", "prov": [{"page_no": 47, "bbox": {"l": 64.41815185546875, "t": 305.3443908691406, "r": 338.3864440917969, "b": 296.0057373046875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 64]}], "orig": "Figure 3-17 SQL statement result by Human Resources user profile", "text": "Figure 3-17 SQL statement result by Human Resources user profile"}, {"self_ref": "#/texts/513", "parent": {"cref": "#/groups/47"}, "children": [], "label": "list_item", "prov": [{"page_no": 47, "bbox": {"l": 136.21075439453125, "t": 279.45849609375, "r": 546.0484008789062, "b": 256.860107421875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 139]}], "orig": "8. Figure 3-18 shows the results of the same query for the Manager (TQSPENSER). Notice the masking of the DATE_OF_BIRTH and TAX_ID columns.", "text": "8. Figure 3-18 shows the results of the same query for the Manager (TQSPENSER). Notice the masking of the DATE_OF_BIRTH and TAX_ID columns.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/514", "parent": {"cref": "#/body"}, "children": [], "label": "paragraph", "prov": [{"page_no": 47, "bbox": {"l": 64.57685852050781, "t": 174.60491943359375, "r": 279.62469482421875, "b": 165.2398681640625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 51]}], "orig": "Figure 3-18 SQL statement result by Manager profile", "text": "Figure 3-18 SQL statement result by Manager profile"}, {"self_ref": "#/texts/515", "parent": {"cref": "#/groups/48"}, "children": [], "label": "list_item", "prov": [{"page_no": 47, "bbox": {"l": 136.3648223876953, "t": 148.64361572265625, "r": 518.9005737304688, "b": 126.15972900390625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 145]}], "orig": "9. Figure 3-19 shows the results of the same query for an employee (DSSMITH). The employee can only see only his own data with no masking at all.", "text": "9. Figure 3-19 shows the results of the same query for an employee (DSSMITH). The employee can only see only his own data with no masking at all.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/516", "parent": {"cref": "#/body"}, "children": [], "label": "paragraph", "prov": [{"page_no": 47, "bbox": {"l": 64.505126953125, "t": 86.79803466796875, "r": 295.1390380859375, "b": 77.33699798583984, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 55]}], "orig": "Figure 3-19 SQL statement result by an employee profile", "text": "Figure 3-19 SQL statement result by an employee profile"}, {"self_ref": "#/texts/517", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 47, "bbox": {"l": 344.6293640136719, "t": 37.2392578125, "r": 523.6016235351562, "b": 27.898193359375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 40]}], "orig": "Chapter 3. Row and Column Access Control", "text": "Chapter 3. Row and Column Access Control"}, {"self_ref": "#/texts/518", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 47, "bbox": {"l": 535.7171630859375, "t": 37.71160888671875, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "31", "text": "31"}, {"self_ref": "#/texts/519", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 48, "bbox": {"l": 64.27489471435547, "t": 37.553955078125, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "32", "text": "32"}, {"self_ref": "#/texts/520", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 48, "bbox": {"l": 93.40065002441406, "t": 37.27056884765625, "r": 334.4214172363281, "b": 28.07379150390625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/521", "parent": {"cref": "#/groups/49"}, "children": [], "label": "list_item", "prov": [{"page_no": 48, "bbox": {"l": 136.8000030517578, "t": 721.3038330078125, "r": 547.2752685546875, "b": 699.0477294921875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 117]}], "orig": "10.Figure 3-20 shows the results of the same query for the Consultant/DBE, who is not one of the company's employees.", "text": "10.Figure 3-20 shows the results of the same query for the Consultant/DBE, who is not one of the company's employees.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/522", "parent": {"cref": "#/body"}, "children": [], "label": "paragraph", "prov": [{"page_no": 48, "bbox": {"l": 64.38975524902344, "t": 626.5992431640625, "r": 308.0195617675781, "b": 617.4529418945312, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 58]}], "orig": "Figure 3-20 SQL statement result by Consultant/DBE profile", "text": "Figure 3-20 SQL statement result by Consultant/DBE profile"}, {"self_ref": "#/texts/523", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 48, "bbox": {"l": 64.18441009521484, "t": 598.262939453125, "r": 408.9774475097656, "b": 584.9585571289062, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 52]}], "orig": "3.6.8 Demonstrating data access with a view and RCAC", "text": "3.6.8 Demonstrating data access with a view and RCAC", "level": 1}, {"self_ref": "#/texts/524", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 48, "bbox": {"l": 135.6727294921875, "t": 571.9627685546875, "r": 515.0767822265625, "b": 561.6839599609375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 83]}], "orig": "This section covers data access with a view and RCAC. Complete the following steps:", "text": "This section covers data access with a view and RCAC. Complete the following steps:"}, {"self_ref": "#/texts/525", "parent": {"cref": "#/groups/50"}, "children": [], "label": "list_item", "prov": [{"page_no": 48, "bbox": {"l": 136.79998779296875, "t": 554.5849609375, "r": 547.2307739257812, "b": 520.4425048828125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 227]}], "orig": "1. The EMPLOYEES table has a column that is called On_Leave_Flag (Figure 3-21 on page 33) indicating that the employee is on Leave of Absence. For this purpose, a view is created that lists only the employees that are on leave.", "text": "1. The EMPLOYEES table has a column that is called On_Leave_Flag (Figure 3-21 on page 33) indicating that the employee is on Leave of Absence. For this purpose, a view is created that lists only the employees that are on leave.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/526", "parent": {"cref": "#/body"}, "children": [], "label": "paragraph", "prov": [{"page_no": 49, "bbox": {"l": 64.41194152832031, "t": 225.3311767578125, "r": 198.96627807617188, "b": 215.8448486328125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 30]}], "orig": "Figure 3-21 Employees on leave", "text": "Figure 3-21 Employees on leave"}, {"self_ref": "#/texts/527", "parent": {"cref": "#/groups/51"}, "children": [], "label": "list_item", "prov": [{"page_no": 49, "bbox": {"l": 136.17755126953125, "t": 199.36651611328125, "r": 355.6940002441406, "b": 189.02825927734375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 49]}], "orig": "2. Example 3-13 shows the definition of the view.", "text": "2. Example 3-13 shows the definition of the view.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/528", "parent": {"cref": "#/body"}, "children": [], "label": "paragraph", "prov": [{"page_no": 49, "bbox": {"l": 136.4932098388672, "t": 177.39019775390625, "r": 311.614013671875, "b": 167.56768798828125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 39]}], "orig": "Example 3-13 VIew of employees on leave", "text": "Example 3-13 VIew of employees on leave"}, {"self_ref": "#/texts/529", "parent": {"cref": "#/body"}, "children": [], "label": "code", "prov": [{"page_no": 49, "bbox": {"l": 136.7435302734375, "t": 161.1607666015625, "r": 426.59613037109375, "b": 65.85064697265625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 159]}], "orig": "CREATE VIEW HR_SCHEMA.EMPLOYEES_ON_LEAVE (EMPLOYEE_ID, FIRST_NAME, MIDDLE_INITIAL, LAST_NAME, WORK_DEPARTMENT, PHONE_EXTENSION, JOB_DESCRIPTION, DATE_OF_BIRTH,", "text": "CREATE VIEW HR_SCHEMA.EMPLOYEES_ON_LEAVE (EMPLOYEE_ID, FIRST_NAME, MIDDLE_INITIAL, LAST_NAME, WORK_DEPARTMENT, PHONE_EXTENSION, JOB_DESCRIPTION, DATE_OF_BIRTH,"}, {"self_ref": "#/texts/530", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 49, "bbox": {"l": 344.5408020019531, "t": 37.31829833984375, "r": 523.6016235351562, "b": 27.86322021484375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 40]}], "orig": "Chapter 3. Row and Column Access Control", "text": "Chapter 3. Row and Column Access Control"}, {"self_ref": "#/texts/531", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 49, "bbox": {"l": 535.63330078125, "t": 37.6053466796875, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "33", "text": "33"}, {"self_ref": "#/texts/532", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 50, "bbox": {"l": 258.8564758300781, "t": 720.8930053710938, "r": 446.6356201171875, "b": 674.08154296875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 53]}], "orig": "TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE, ON_LEAVE_FLAG )", "text": "TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE, ON_LEAVE_FLAG )"}, {"self_ref": "#/texts/533", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 50, "bbox": {"l": 135.8447265625, "t": 673.0587768554688, "r": 151.74000549316406, "b": 663.56787109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "AS", "text": "AS"}, {"self_ref": "#/texts/534", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 50, "bbox": {"l": 136.8000030517578, "t": 660.3428344726562, "r": 271.67828369140625, "b": 531.5698852539062, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 164]}], "orig": "SELECT EMPLOYEE_ID, FIRST_NAME , MIDDLE_INITIAL, LAST_NAME , WORK_DEPARTMENT, PHONE_EXTENSION, JOB_DESCRIPTION, DATE_OF_BIRTH, TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE,", "text": "SELECT EMPLOYEE_ID, FIRST_NAME , MIDDLE_INITIAL, LAST_NAME , WORK_DEPARTMENT, PHONE_EXTENSION, JOB_DESCRIPTION, DATE_OF_BIRTH, TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE,"}, {"self_ref": "#/texts/535", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 50, "bbox": {"l": 155.53102111816406, "t": 529.690673828125, "r": 236.6987762451172, "b": 519.570068359375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 13]}], "orig": "ON_LEAVE_FLAG", "text": "ON_LEAVE_FLAG"}, {"self_ref": "#/texts/536", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 50, "bbox": {"l": 136.8000030517578, "t": 517.0009765625, "r": 157.71849060058594, "b": 507.57025146484375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 4]}], "orig": "FROM", "text": "FROM"}, {"self_ref": "#/texts/537", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 50, "bbox": {"l": 167.92576599121094, "t": 517.4595947265625, "r": 271.67828369140625, "b": 507.57025146484375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 19]}], "orig": "HR_SCHEMA.EMPLOYEES", "text": "HR_SCHEMA.EMPLOYEES"}, {"self_ref": "#/texts/538", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 50, "bbox": {"l": 136.10264587402344, "t": 505.1119384765625, "r": 161.95062255859375, "b": 495.5704345703125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 5]}], "orig": "WHERE", "text": "WHERE"}, {"self_ref": "#/texts/539", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 50, "bbox": {"l": 171.0566864013672, "t": 505.46636962890625, "r": 271.67828369140625, "b": 494.4849853515625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 20]}], "orig": "ON_LEAVE_FLAG = 'Y';", "text": "ON_LEAVE_FLAG = 'Y';"}, {"self_ref": "#/texts/540", "parent": {"cref": "#/groups/52"}, "children": [], "label": "list_item", "prov": [{"page_no": 50, "bbox": {"l": 136.068359375, "t": 476.58831787109375, "r": 547.3662109375, "b": 454.30218505859375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 115]}], "orig": "3. Use the view to query the data and see who is on leave. The SQL statement that is used is shown in Example 3-14:", "text": "3. Use the view to query the data and see who is on leave. The SQL statement that is used is shown in Example 3-14:", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/541", "parent": {"cref": "#/body"}, "children": [], "label": "paragraph", "prov": [{"page_no": 50, "bbox": {"l": 136.2685546875, "t": 442.06927490234375, "r": 354.4166564941406, "b": 432.4124450683594, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 49]}], "orig": "Example 3-14 SQL statement for employees on leave", "text": "Example 3-14 SQL statement for employees on leave"}, {"self_ref": "#/texts/542", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 50, "bbox": {"l": 136.8000030517578, "t": 424.36187744140625, "r": 266.6982727050781, "b": 331.58837890625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 104]}], "orig": "SELECT EMPLOYEE_ID, LAST_NAME, JOB_DESCRIPTION, DATE_OF_BIRTH, TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE FROM", "text": "SELECT EMPLOYEE_ID, LAST_NAME, JOB_DESCRIPTION, DATE_OF_BIRTH, TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE FROM"}, {"self_ref": "#/texts/543", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 50, "bbox": {"l": 167.6361541748047, "t": 341.4685363769531, "r": 316.67755126953125, "b": 331.1232604980469, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 29]}], "orig": "HR_SCHEMA.EMPLOYEES_ON_LEAVE;", "text": "HR_SCHEMA.EMPLOYEES_ON_LEAVE;"}, {"self_ref": "#/texts/544", "parent": {"cref": "#/groups/53"}, "children": [], "label": "list_item", "prov": [{"page_no": 50, "bbox": {"l": 135.88938903808594, "t": 317.5455322265625, "r": 547.2506713867188, "b": 270.649169921875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 264]}], "orig": "4. Start with the Human Resources person (VGLUCCHESS) and see what is the result of the previous query. He sees the two employees that are on leave and no masking is done over the DATE_OF_BIRTH and TAX_ID columns. The results of the query are shown in Figure 3-22.", "text": "4. Start with the Human Resources person (VGLUCCHESS) and see what is the result of the previous query. He sees the two employees that are on leave and no masking is done over the DATE_OF_BIRTH and TAX_ID columns. The results of the query are shown in Figure 3-22.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/545", "parent": {"cref": "#/body"}, "children": [], "label": "paragraph", "prov": [{"page_no": 50, "bbox": {"l": 64.29961395263672, "t": 222.33502197265625, "r": 301.89312744140625, "b": 212.2880859375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 53]}], "orig": "Figure 3-22 Employees on leave - Human Resources user", "text": "Figure 3-22 Employees on leave - Human Resources user"}, {"self_ref": "#/texts/546", "parent": {"cref": "#/groups/54"}, "children": [], "label": "list_item", "prov": [{"page_no": 50, "bbox": {"l": 136.30172729492188, "t": 196.0367431640625, "r": 546.509521484375, "b": 149.5836181640625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 285]}], "orig": "5. Figure 3-23 shows what the Manager (TQSPENSER) gets when he runs the same query over the view. He sees only the employees that are on leave that are managed by him. In this example, it is one employee. The columns are masked, which confirms that RCAC is applied to the view as well.", "text": "5. Figure 3-23 shows what the Manager (TQSPENSER) gets when he runs the same query over the view. He sees only the employees that are on leave that are managed by him. In this example, it is one employee. The columns are masked, which confirms that RCAC is applied to the view as well.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/547", "parent": {"cref": "#/body"}, "children": [], "label": "paragraph", "prov": [{"page_no": 50, "bbox": {"l": 64.38579559326172, "t": 108.1334228515625, "r": 313.5398254394531, "b": 98.30462646484375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 58]}], "orig": "Figure 3-23 Employee on leave - Manager of Field Reps user", "text": "Figure 3-23 Employee on leave - Manager of Field Reps user"}, {"self_ref": "#/texts/548", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 50, "bbox": {"l": 64.1474609375, "t": 37.6011962890625, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "34", "text": "34"}, {"self_ref": "#/texts/549", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 50, "bbox": {"l": 93.26473999023438, "t": 37.29864501953125, "r": 334.4214172363281, "b": 27.98931884765625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/550", "parent": {"cref": "#/groups/55"}, "children": [], "label": "list_item", "prov": [{"page_no": 51, "bbox": {"l": 136.05897521972656, "t": 721.3394165039062, "r": 536.1886596679688, "b": 699.046630859375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 170]}], "orig": "6. Figure 3-24 shows what the employee (DSSMITH) gets when he runs the same query over the view. The employee gets an empty set or he gets only himself if he is on leave.", "text": "6. Figure 3-24 shows what the employee (DSSMITH) gets when he runs the same query over the view. The employee gets an empty set or he gets only himself if he is on leave.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/551", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 51, "bbox": {"l": 64.79974365234375, "t": 693.4913940429688, "r": 67.5686264038086, "b": 684.2783813476562, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 1]}], "orig": ".", "text": "."}, {"self_ref": "#/texts/552", "parent": {"cref": "#/body"}, "children": [], "label": "paragraph", "prov": [{"page_no": 51, "bbox": {"l": 64.34432983398438, "t": 636.3045043945312, "r": 265.8516540527344, "b": 627.0074462890625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 46]}], "orig": "Figure 3-24 Employees on leave - employee user", "text": "Figure 3-24 Employees on leave - employee user"}, {"self_ref": "#/texts/553", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 51, "bbox": {"l": 344.6600646972656, "t": 37.25311279296875, "r": 523.6016235351562, "b": 27.9105224609375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 40]}], "orig": "Chapter 3. Row and Column Access Control", "text": "Chapter 3. Row and Column Access Control"}, {"self_ref": "#/texts/554", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 51, "bbox": {"l": 535.7924194335938, "t": 37.69573974609375, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "35", "text": "35"}, {"self_ref": "#/texts/555", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 52, "bbox": {"l": 64.35157775878906, "t": 37.707763671875, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "36", "text": "36"}, {"self_ref": "#/texts/556", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 52, "bbox": {"l": 93.37352752685547, "t": 37.489013671875, "r": 334.5318603515625, "b": 27.9476318359375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/557", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 53, "bbox": {"l": 81.0, "t": 523.457275390625, "r": 115.13253021240234, "b": 517.019287109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 10]}], "orig": "Chapter 4.", "text": "Chapter 4."}, {"self_ref": "#/texts/558", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 53, "bbox": {"l": 500.3999938964844, "t": 699.611083984375, "r": 522.6177368164062, "b": 661.8682861328125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 1]}], "orig": "4", "text": "4"}, {"self_ref": "#/texts/559", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 53, "bbox": {"l": 135.96546936035156, "t": 538.5458984375, "r": 532.0337524414062, "b": 451.1016845703125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 59]}], "orig": "Implementing Row and Column Access Control: Banking example", "text": "Implementing Row and Column Access Control: Banking example", "level": 1}, {"self_ref": "#/texts/560", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 53, "bbox": {"l": 135.8340301513672, "t": 413.33544921875, "r": 546.1500854492188, "b": 367.058837890625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 289]}], "orig": "This chapter illustrates the Row and Column Access Control (RCAC) concepts using a banking example. Appendix A, \"Database definitions for the RCAC banking example\" on page 121 provides a script that you can use to create all the database definitions or DDLs to re-create this RCAC example.", "text": "This chapter illustrates the Row and Column Access Control (RCAC) concepts using a banking example. Appendix A, \"Database definitions for the RCAC banking example\" on page 121 provides a script that you can use to create all the database definitions or DDLs to re-create this RCAC example."}, {"self_ref": "#/texts/561", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 53, "bbox": {"l": 135.71417236328125, "t": 355.2895812988281, "r": 347.4121398925781, "b": 344.93609619140625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 49]}], "orig": "The following topics are covered in this chapter:", "text": "The following topics are covered in this chapter:"}, {"self_ref": "#/texts/562", "parent": {"cref": "#/groups/56"}, "children": [], "label": "list_item", "prov": [{"page_no": 53, "bbox": {"l": 135.7564697265625, "t": 338.0458679199219, "r": 392.97119140625, "b": 327.7724304199219, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 67]}], "orig": "GLYPH Business requirements for the RCAC banking scenario", "text": "GLYPH Business requirements for the RCAC banking scenario", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/563", "parent": {"cref": "#/groups/56"}, "children": [], "label": "list_item", "prov": [{"page_no": 53, "bbox": {"l": 135.56719970703125, "t": 326.4755554199219, "r": 368.54632568359375, "b": 315.9309387207031, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 67]}], "orig": "GLYPH Description of the users roles and responsibilities", "text": "GLYPH Description of the users roles and responsibilities", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/564", "parent": {"cref": "#/groups/56"}, "children": [], "label": "list_item", "prov": [{"page_no": 53, "bbox": {"l": 135.7265167236328, "t": 313.9096374511719, "r": 261.45440673828125, "b": 303.9350280761719, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 38]}], "orig": "GLYPH Implementation of RCAC", "text": "GLYPH Implementation of RCAC", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/565", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 53, "bbox": {"l": 63.681270599365234, "t": 37.34552001953125, "r": 257.24334716796875, "b": 27.83880615234375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 48]}], "orig": "' Copyright IBM Corp. 2014. All rights reserved.", "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"self_ref": "#/texts/566", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 53, "bbox": {"l": 535.5507202148438, "t": 37.83416748046875, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "37", "text": "37"}, {"self_ref": "#/texts/567", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 54, "bbox": {"l": 64.15269470214844, "t": 718.7112426757812, "r": 512.5513916015625, "b": 702.2404174804688, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 55]}], "orig": "4.1 Business requirements for the RCAC banking scenario", "text": "4.1 Business requirements for the RCAC banking scenario", "level": 1}, {"self_ref": "#/texts/568", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 54, "bbox": {"l": 135.70774841308594, "t": 686.0623779296875, "r": 543.9003295898438, "b": 663.635009765625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 189]}], "orig": "As part of a new internet banking project, the Bank decides to raise the level of data access control on the following three tables that are involved in the new customer-facing application:", "text": "As part of a new internet banking project, the Bank decides to raise the level of data access control on the following three tables that are involved in the new customer-facing application:"}, {"self_ref": "#/texts/569", "parent": {"cref": "#/groups/57"}, "children": [], "label": "list_item", "prov": [{"page_no": 54, "bbox": {"l": 135.7441864013672, "t": 657.2281494140625, "r": 214.6067352294922, "b": 647.138916015625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 25]}], "orig": "GLYPH CUSTOMERS", "text": "GLYPH CUSTOMERS", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/570", "parent": {"cref": "#/groups/57"}, "children": [], "label": "list_item", "prov": [{"page_no": 54, "bbox": {"l": 135.63128662109375, "t": 645.2169189453125, "r": 206.64071655273438, "b": 635.1390991210938, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 24]}], "orig": "GLYPH ACCOUNTS", "text": "GLYPH ACCOUNTS", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/571", "parent": {"cref": "#/groups/57"}, "children": [], "label": "list_item", "prov": [{"page_no": 54, "bbox": {"l": 135.5100555419922, "t": 633.5086669921875, "r": 229.18223571777344, "b": 623.1392822265625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 28]}], "orig": "GLYPH TRANSACTIONS", "text": "GLYPH TRANSACTIONS", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/572", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 54, "bbox": {"l": 136.0419464111328, "t": 611.2938232421875, "r": 547.2745971679688, "b": 541.180419921875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 471]}], "orig": "RCAC will be used to restrict access to the rows in these three tables by using permissions, and to restrict column values by using masks. The default position is that no user can access the rows in the tables. From there, specific bank employees are allowed access only to the rows for their job responsibilities. In addition, columns containing personal or sensitive data are masked appropriately. Bank customers are allowed access to only their rows and column values.", "text": "RCAC will be used to restrict access to the rows in these three tables by using permissions, and to restrict column values by using masks. The default position is that no user can access the rows in the tables. From there, specific bank employees are allowed access only to the rows for their job responsibilities. In addition, columns containing personal or sensitive data are masked appropriately. Bank customers are allowed access to only their rows and column values."}, {"self_ref": "#/texts/573", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 54, "bbox": {"l": 135.87716674804688, "t": 529.3848266601562, "r": 546.8505859375, "b": 458.8881530761719, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 469]}], "orig": "In this example, it is assumed that the Bank employees have access to the tables when working on the premises only. Employee access to data is provided by programs and tools using standard DB2 interfaces, such as embedded SQL, ODBC, JDBC, and CLI. The database connection authentication for these interfaces uses the employee's personal and unique IBM i user profile. Operating in their professional role, employees do not have access to bank data through the Internet.", "text": "In this example, it is assumed that the Bank employees have access to the tables when working on the premises only. Employee access to data is provided by programs and tools using standard DB2 interfaces, such as embedded SQL, ODBC, JDBC, and CLI. The database connection authentication for these interfaces uses the employee's personal and unique IBM i user profile. Operating in their professional role, employees do not have access to bank data through the Internet."}, {"self_ref": "#/texts/574", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 54, "bbox": {"l": 135.72178649902344, "t": 447.2520446777344, "r": 547.270751953125, "b": 364.9400329589844, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 571]}], "orig": "Bank customers have access to their accounts and transactions by using a new web application. Each customer has unique credentials for logging in to the application. The authentication of the customer is handled by the web server. After the customer is authenticated, the web server establishes a connection to DB2 for data access. This connection uses a common IBM i user profile that is known as WEBUSER. This user profile is secured and is used only by the web application. No Bank employee has access to the WEBUSER profile, and no customer has an IBM i user profile.", "text": "Bank customers have access to their accounts and transactions by using a new web application. Each customer has unique credentials for logging in to the application. The authentication of the customer is handled by the web server. After the customer is authenticated, the web server establishes a connection to DB2 for data access. This connection uses a common IBM i user profile that is known as WEBUSER. This user profile is secured and is used only by the web application. No Bank employee has access to the WEBUSER profile, and no customer has an IBM i user profile."}, {"self_ref": "#/texts/575", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 54, "bbox": {"l": 135.73001098632812, "t": 353.10443115234375, "r": 547.2139892578125, "b": 295.1842041015625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 350]}], "orig": "The customer's identity is passed to DB2 by using a global variable. The global variable is secured and can be accessed only by the WEBUSER. The web application sets the CUSTOMER_LOGIN_ID variable to the customer's login value. This value is compared to the customer's login value that is found in the CUSTOMER_LOGIN_ID column of the CUSTOMERS table.", "text": "The customer's identity is passed to DB2 by using a global variable. The global variable is secured and can be accessed only by the WEBUSER. The web application sets the CUSTOMER_LOGIN_ID variable to the customer's login value. This value is compared to the customer's login value that is found in the CUSTOMER_LOGIN_ID column of the CUSTOMERS table."}, {"self_ref": "#/texts/576", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 54, "bbox": {"l": 135.76414489746094, "t": 283.3126525878906, "r": 547.2429809570312, "b": 261.1648254394531, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 120]}], "orig": "Applications that do not use the web interface do not have to be changed because the global variable is NULL by default.", "text": "Applications that do not use the web interface do not have to be changed because the global variable is NULL by default."}, {"self_ref": "#/texts/577", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 54, "bbox": {"l": 64.15193939208984, "t": 37.517578125, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "38", "text": "38"}, {"self_ref": "#/texts/578", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 54, "bbox": {"l": 93.28313446044922, "t": 37.28369140625, "r": 334.4214172363281, "b": 28.07989501953125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/579", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 55, "bbox": {"l": 135.5806884765625, "t": 721.3082275390625, "r": 442.2786865234375, "b": 710.7797241210938, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 70]}], "orig": "A diagram of the internet banking architecture is shown in Figure 4-1:", "text": "A diagram of the internet banking architecture is shown in Figure 4-1:"}, {"self_ref": "#/texts/580", "parent": {"cref": "#/groups/58"}, "children": [], "label": "list_item", "prov": [{"page_no": 55, "bbox": {"l": 135.6310577392578, "t": 704.576171875, "r": 547.3546142578125, "b": 670.2985229492188, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 200]}], "orig": "GLYPH The row permission and column masks for the CUSTOMERS table are based on the group of which the user profile is part. If the user is a customer, their specific login ID also is tested.", "text": "GLYPH The row permission and column masks for the CUSTOMERS table are based on the group of which the user profile is part. If the user is a customer, their specific login ID also is tested.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/581", "parent": {"cref": "#/groups/58"}, "children": [], "label": "list_item", "prov": [{"page_no": 55, "bbox": {"l": 135.43284606933594, "t": 663.6553955078125, "r": 546.7332153320312, "b": 629.2459716796875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 203]}], "orig": "GLYPH The row permission and column mask for the ACCOUNTS table are based on the CUSTOMERS table permission rules. A subquery is used to connect the accounts (child) with the customer (parent).", "text": "GLYPH The row permission and column mask for the ACCOUNTS table are based on the CUSTOMERS table permission rules. A subquery is used to connect the accounts (child) with the customer (parent).", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/582", "parent": {"cref": "#/groups/58"}, "children": [], "label": "list_item", "prov": [{"page_no": 55, "bbox": {"l": 135.4942169189453, "t": 622.8255615234375, "r": 546.2234497070312, "b": 576.0048828125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 284]}], "orig": "GLYPH The row permission for the TRANSACTIONS table is based on the ACCOUNTS table permission rules and the CUSTOMERS table permission rules. A subquery is used to connect the transactions (child) with the account (parent) and the account (child) with the customer (parent).", "text": "GLYPH The row permission for the TRANSACTIONS table is based on the ACCOUNTS table permission rules and the CUSTOMERS table permission rules. A subquery is used to connect the transactions (child) with the account (parent) and the account (child) with the customer (parent).", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/583", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 55, "bbox": {"l": 136.07473754882812, "t": 302.353271484375, "r": 286.37646484375, "b": 293.3678894042969, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 35]}], "orig": "Figure 4-1 Internet banking example", "text": "Figure 4-1 Internet banking example"}, {"self_ref": "#/texts/584", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 55, "bbox": {"l": 64.41133880615234, "t": 266.62109375, "r": 475.6933898925781, "b": 250.48199462890625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 55]}], "orig": "4.2 Description of the users roles and responsibilities", "text": "4.2 Description of the users roles and responsibilities", "level": 1}, {"self_ref": "#/texts/585", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 55, "bbox": {"l": 135.86761474609375, "t": 234.0225830078125, "r": 533.134521484375, "b": 211.77857971191406, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 99]}], "orig": "During the requirements gathering phase, the following groups of users are identified and codified:", "text": "During the requirements gathering phase, the following groups of users are identified and codified:"}, {"self_ref": "#/texts/586", "parent": {"cref": "#/groups/59"}, "children": [], "label": "list_item", "prov": [{"page_no": 55, "bbox": {"l": 135.75192260742188, "t": 204.55694580078125, "r": 395.1046142578125, "b": 194.41461181640625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 70]}], "orig": "GLYPH SECURITY: Security officer and security administrators", "text": "GLYPH SECURITY: Security officer and security administrators", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/587", "parent": {"cref": "#/groups/59"}, "children": [], "label": "list_item", "prov": [{"page_no": 55, "bbox": {"l": 135.67442321777344, "t": 192.36444091796875, "r": 266.7660217285156, "b": 182.11224365234375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 39]}], "orig": "GLYPH DBE: Database engineers", "text": "GLYPH DBE: Database engineers", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/588", "parent": {"cref": "#/groups/59"}, "children": [], "label": "list_item", "prov": [{"page_no": 55, "bbox": {"l": 135.70191955566406, "t": 180.76068115234375, "r": 319.2432861328125, "b": 170.73941040039062, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 51]}], "orig": "GLYPH ADMIN: Bank business administrators", "text": "GLYPH ADMIN: Bank business administrators", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/589", "parent": {"cref": "#/groups/59"}, "children": [], "label": "list_item", "prov": [{"page_no": 55, "bbox": {"l": 135.53024291992188, "t": 168.793212890625, "r": 246.766357421875, "b": 158.73960876464844, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 36]}], "orig": "GLYPH TELLER: Bank tellers", "text": "GLYPH TELLER: Bank tellers", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/590", "parent": {"cref": "#/groups/59"}, "children": [], "label": "list_item", "prov": [{"page_no": 55, "bbox": {"l": 135.38711547851562, "t": 156.5809326171875, "r": 365.1325378417969, "b": 146.606201171875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 59]}], "orig": "GLYPH CUSTOMER: Bank customers using the internet", "text": "GLYPH CUSTOMER: Bank customers using the internet", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/591", "parent": {"cref": "#/groups/59"}, "children": [], "label": "list_item", "prov": [{"page_no": 55, "bbox": {"l": 135.63414001464844, "t": 144.58380126953125, "r": 325.77801513671875, "b": 134.40423583984375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 53]}], "orig": "GLYPH PUBLIC: Anyone not already in a group", "text": "GLYPH PUBLIC: Anyone not already in a group", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/592", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 55, "bbox": {"l": 214.27481079101562, "t": 37.27288818359375, "r": 523.5935668945312, "b": 28.0194091796875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 70]}], "orig": "Chapter 4. Implementing Row and Column Access Control: Banking example", "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"self_ref": "#/texts/593", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 55, "bbox": {"l": 535.5966186523438, "t": 37.78082275390625, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "39", "text": "39"}, {"self_ref": "#/texts/594", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 56, "bbox": {"l": 64.19805908203125, "t": 37.79486083984375, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "40", "text": "40"}, {"self_ref": "#/texts/595", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 56, "bbox": {"l": 93.33177947998047, "t": 37.26739501953125, "r": 334.4214172363281, "b": 28.06304931640625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/596", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 56, "bbox": {"l": 136.27764892578125, "t": 721.2992553710938, "r": 547.2127075195312, "b": 687.2786865234375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 231]}], "orig": "Based on their respective roles and responsibilities, the users (that is, a group) are controlled by row permissions and column masks. The chart that is shown in Figure 4-2 shows the rules for row and column access in this example.", "text": "Based on their respective roles and responsibilities, the users (that is, a group) are controlled by row permissions and column masks. The chart that is shown in Figure 4-2 shows the rules for row and column access in this example."}, {"self_ref": "#/texts/597", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 56, "bbox": {"l": 136.13352966308594, "t": 383.2444763183594, "r": 317.8505554199219, "b": 373.94036865234375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 42]}], "orig": "Figure 4-2 Rules for row and column access", "text": "Figure 4-2 Rules for row and column access"}, {"self_ref": "#/texts/598", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 57, "bbox": {"l": 135.74815368652344, "t": 721.3952026367188, "r": 545.2960205078125, "b": 699.0175170898438, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 123]}], "orig": "The chart that is shown in Figure 4-3 shows the column access that is allowed by group and lists the column masks by table.", "text": "The chart that is shown in Figure 4-3 shows the column access that is allowed by group and lists the column masks by table."}, {"self_ref": "#/texts/599", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 57, "bbox": {"l": 136.09585571289062, "t": 390.61444091796875, "r": 245.08297729492188, "b": 381.0845947265625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 23]}], "orig": "Figure 4-3 Column masks", "text": "Figure 4-3 Column masks"}, {"self_ref": "#/texts/600", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 57, "bbox": {"l": 136.05606079101562, "t": 364.7004699707031, "r": 543.4578247070312, "b": 318.2683410644531, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 295]}], "orig": "For the demonstration and testing of RCAC in this example, the following users interact with the database. Furthermore, the column masking rules are developed independently of the row permissions. If a person does not have permission to access the row, the column mask processing does not occur.", "text": "For the demonstration and testing of RCAC in this example, the following users interact with the database. Furthermore, the column masking rules are developed independently of the row permissions. If a person does not have permission to access the row, the column mask processing does not occur."}, {"self_ref": "#/texts/601", "parent": {"cref": "#/groups/60"}, "children": [], "label": "list_item", "prov": [{"page_no": 57, "bbox": {"l": 135.7457733154297, "t": 312.15093994140625, "r": 547.2935791015625, "b": 289.4174499511719, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 127]}], "orig": "GLYPH Hernando Bedoya is a DB2 for i database engineer with the user profile of HBEDOYA. He is part of the DBE group.", "text": "GLYPH Hernando Bedoya is a DB2 for i database engineer with the user profile of HBEDOYA. He is part of the DBE group.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/602", "parent": {"cref": "#/groups/60"}, "children": [], "label": "list_item", "prov": [{"page_no": 57, "bbox": {"l": 135.60708618164062, "t": 282.7138671875, "r": 538.9269409179688, "b": 260.16748046875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 119]}], "orig": "GLYPH Mike Cain is a DB2 for i database engineer with the user profile of MCAIN. He is part of the DBE group.", "text": "GLYPH Mike Cain is a DB2 for i database engineer with the user profile of MCAIN. He is part of the DBE group.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/603", "parent": {"cref": "#/groups/60"}, "children": [], "label": "list_item", "prov": [{"page_no": 57, "bbox": {"l": 135.6043701171875, "t": 254.1444091796875, "r": 492.53729248046875, "b": 231.50372314453125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 137]}], "orig": "GLYPH Veronica G. Lucchess is a bank account administrator with the user profile of VGLUCCHESS. She is part of the ADMIN group.", "text": "GLYPH Veronica G. Lucchess is a bank account administrator with the user profile of VGLUCCHESS. She is part of the ADMIN group.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/604", "parent": {"cref": "#/groups/60"}, "children": [], "label": "list_item", "prov": [{"page_no": 57, "bbox": {"l": 135.5557403564453, "t": 224.8624267578125, "r": 534.6511840820312, "b": 202.178955078125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 115]}], "orig": "GLYPH Tom Q. Spenser is a bank teller with the user profile of TQSPENSER. He is part of the TELLER group.", "text": "GLYPH Tom Q. Spenser is a bank teller with the user profile of TQSPENSER. He is part of the TELLER group.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/605", "parent": {"cref": "#/groups/60"}, "children": [], "label": "list_item", "prov": [{"page_no": 57, "bbox": {"l": 135.36813354492188, "t": 196.05841064453125, "r": 529.1213989257812, "b": 185.65155029296875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 103]}], "orig": "GLYPH The IT security officer has the user profile of SECURITY. She is not part of any group.", "text": "GLYPH The IT security officer has the user profile of SECURITY. She is not part of any group.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/606", "parent": {"cref": "#/groups/60"}, "children": [], "label": "list_item", "prov": [{"page_no": 57, "bbox": {"l": 135.52735900878906, "t": 178.78997802734375, "r": 547.3323364257812, "b": 144.6416473388672, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 200]}], "orig": "GLYPH The online banking web application uses the user profile WEBUSER. This profile is part of the CUSTOMER group. Any future customer-facing applications can also use this group if needed.", "text": "GLYPH The online banking web application uses the user profile WEBUSER. This profile is part of the CUSTOMER group. Any future customer-facing applications can also use this group if needed.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/607", "parent": {"cref": "#/groups/60"}, "children": [], "label": "list_item", "prov": [{"page_no": 57, "bbox": {"l": 135.407958984375, "t": 138.128662109375, "r": 530.7957763671875, "b": 127.601318359375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 96]}], "orig": "GLYPH Adam O. Olsen is a bank customer with a web application login ID of KLD72CQR8JG.", "text": "GLYPH Adam O. Olsen is a bank customer with a web application login ID of KLD72CQR8JG.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/608", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 57, "bbox": {"l": 214.2675018310547, "t": 37.2421875, "r": 523.5935668945312, "b": 28.00421142578125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 70]}], "orig": "Chapter 4. Implementing Row and Column Access Control: Banking example", "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"self_ref": "#/texts/609", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 57, "bbox": {"l": 535.689697265625, "t": 37.77044677734375, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "41", "text": "41"}, {"self_ref": "#/texts/610", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 58, "bbox": {"l": 64.2745590209961, "t": 721.9813232421875, "r": 283.6307678222656, "b": 705.79541015625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 26]}], "orig": "4.3 Implementation of RCAC", "text": "4.3 Implementation of RCAC", "level": 1}, {"self_ref": "#/texts/611", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 58, "bbox": {"l": 136.4054412841797, "t": 689.2947998046875, "r": 514.2452392578125, "b": 679.1885986328125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 85]}], "orig": "Figure 4-4 shows the data model of the banking scenario that is used in this example.", "text": "Figure 4-4 shows the data model of the banking scenario that is used in this example."}, {"self_ref": "#/texts/612", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 58, "bbox": {"l": 136.15525817871094, "t": 487.8588562011719, "r": 327.0066223144531, "b": 478.4729309082031, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 45]}], "orig": "Figure 4-4 Data model of the banking scenario", "text": "Figure 4-4 Data model of the banking scenario"}, {"self_ref": "#/texts/613", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 58, "bbox": {"l": 135.9271240234375, "t": 461.9432678222656, "r": 309.19659423828125, "b": 451.85552978515625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 40]}], "orig": "This section covers the following steps:", "text": "This section covers the following steps:"}, {"self_ref": "#/texts/614", "parent": {"cref": "#/groups/61"}, "children": [], "label": "list_item", "prov": [{"page_no": 58, "bbox": {"l": 135.67567443847656, "t": 445.2650146484375, "r": 372.9923095703125, "b": 435.15850830078125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 66]}], "orig": "GLYPH Reviewing the tables that are used in this example", "text": "GLYPH Reviewing the tables that are used in this example", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/615", "parent": {"cref": "#/groups/61"}, "children": [], "label": "list_item", "prov": [{"page_no": 58, "bbox": {"l": 135.61679077148438, "t": 433.0387268066406, "r": 490.73876953125, "b": 422.851806640625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 84]}], "orig": "GLYPH Assigning function ID QIBM_DB_SECADM to the Database Engineers group", "text": "GLYPH Assigning function ID QIBM_DB_SECADM to the Database Engineers group", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/616", "parent": {"cref": "#/groups/61"}, "children": [], "label": "list_item", "prov": [{"page_no": 58, "bbox": {"l": 135.76889038085938, "t": 421.16241455078125, "r": 376.5744934082031, "b": 410.9656066894531, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 69]}], "orig": "GLYPH Creating group profiles for the users and their roles", "text": "GLYPH Creating group profiles for the users and their roles", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/617", "parent": {"cref": "#/groups/61"}, "children": [], "label": "list_item", "prov": [{"page_no": 58, "bbox": {"l": 135.6211395263672, "t": 409.67742919921875, "r": 384.3678283691406, "b": 398.8453369140625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 62]}], "orig": "GLYPH Creating the CUSTOMER_LOGIN_ID global variable", "text": "GLYPH Creating the CUSTOMER_LOGIN_ID global variable", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/618", "parent": {"cref": "#/groups/61"}, "children": [], "label": "list_item", "prov": [{"page_no": 58, "bbox": {"l": 135.83248901367188, "t": 397.2442626953125, "r": 320.7999572753906, "b": 386.8020324707031, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 53]}], "orig": "GLYPH Defining and creating row permissions", "text": "GLYPH Defining and creating row permissions", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/619", "parent": {"cref": "#/groups/61"}, "children": [], "label": "list_item", "prov": [{"page_no": 58, "bbox": {"l": 135.7002716064453, "t": 385.3578186035156, "r": 312.3022155761719, "b": 374.8518371582031, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 50]}], "orig": "GLYPH Defining and creating column masks", "text": "GLYPH Defining and creating column masks", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/620", "parent": {"cref": "#/groups/61"}, "children": [], "label": "list_item", "prov": [{"page_no": 58, "bbox": {"l": 135.64413452148438, "t": 373.26336669921875, "r": 387.6695556640625, "b": 362.9361267089844, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 69]}], "orig": "GLYPH Restricting the inserting and updating of masked data", "text": "GLYPH Restricting the inserting and updating of masked data", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/621", "parent": {"cref": "#/groups/61"}, "children": [], "label": "list_item", "prov": [{"page_no": 58, "bbox": {"l": 135.75306701660156, "t": 361.037109375, "r": 334.1216125488281, "b": 351.1123352050781, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 56]}], "orig": "GLYPH Activating row and column access control", "text": "GLYPH Activating row and column access control", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/622", "parent": {"cref": "#/groups/61"}, "children": [], "label": "list_item", "prov": [{"page_no": 58, "bbox": {"l": 135.65428161621094, "t": 349.3992004394531, "r": 271.91436767578125, "b": 338.8648986816406, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 41]}], "orig": "GLYPH Reviewing row permissions", "text": "GLYPH Reviewing row permissions", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/623", "parent": {"cref": "#/groups/61"}, "children": [], "label": "list_item", "prov": [{"page_no": 58, "bbox": {"l": 135.8694305419922, "t": 337.9486999511719, "r": 323.46331787109375, "b": 327.16015625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 51]}], "orig": "GLYPH Demonstrating data access with RCAC", "text": "GLYPH Demonstrating data access with RCAC", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/624", "parent": {"cref": "#/groups/61"}, "children": [], "label": "list_item", "prov": [{"page_no": 58, "bbox": {"l": 135.73135375976562, "t": 325.26885986328125, "r": 343.2095031738281, "b": 315.1239929199219, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 56]}], "orig": "GLYPH Query implementation with RCAC activated", "text": "GLYPH Query implementation with RCAC activated", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/625", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 58, "bbox": {"l": 64.17279052734375, "t": 295.388916015625, "r": 410.4186096191406, "b": 282.4974060058594, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 56]}], "orig": "4.3.1 Reviewing the tables that are used in this example", "text": "4.3.1 Reviewing the tables that are used in this example", "level": 1}, {"self_ref": "#/texts/626", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 58, "bbox": {"l": 135.51849365234375, "t": 269.2921142578125, "r": 541.1093139648438, "b": 235.11878967285156, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 214]}], "orig": "This section reviews the tables that are used in this example. As shown in Figure 4-5, there are three main tables that are involved in the data model: CUSTOMERS, ACCOUNTS, and TRANSACTIONS. There are 90 customers.", "text": "This section reviews the tables that are used in this example. As shown in Figure 4-5, there are three main tables that are involved in the data model: CUSTOMERS, ACCOUNTS, and TRANSACTIONS. There are 90 customers."}, {"self_ref": "#/texts/627", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 58, "bbox": {"l": 136.22021484375, "t": 160.41815185546875, "r": 361.25982666015625, "b": 151.315673828125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Figure 4-5 Tables that are used in the banking example", "text": "Figure 4-5 Tables that are used in the banking example"}, {"self_ref": "#/texts/628", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 58, "bbox": {"l": 142.3465576171875, "t": 124.18499755859375, "r": 525.7510986328125, "b": 89.73866271972656, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 195]}], "orig": "Note: Appendix A, \"Database definitions for the RCAC banking example\" on page 121 provides a script that you can use to create all the database definitions or DDLs to re-create this RCAC example.", "text": "Note: Appendix A, \"Database definitions for the RCAC banking example\" on page 121 provides a script that you can use to create all the database definitions or DDLs to re-create this RCAC example."}, {"self_ref": "#/texts/629", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 58, "bbox": {"l": 64.21815490722656, "t": 37.66497802734375, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "42", "text": "42"}, {"self_ref": "#/texts/630", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 58, "bbox": {"l": 93.31220245361328, "t": 37.274658203125, "r": 334.4214172363281, "b": 28.0478515625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/631", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 59, "bbox": {"l": 135.93377685546875, "t": 721.3391723632812, "r": 525.0703125, "b": 698.9581298828125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 106]}], "orig": "To review the attributes of each table that is used in this banking example, complete the following steps:", "text": "To review the attributes of each table that is used in this banking example, complete the following steps:"}, {"self_ref": "#/texts/632", "parent": {"cref": "#/groups/62"}, "children": [], "label": "list_item", "prov": [{"page_no": 59, "bbox": {"l": 136.77842712402344, "t": 694.369873046875, "r": 543.2303466796875, "b": 670.1790161132812, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 136]}], "orig": "1. Review the columns of each the tables through System i Navigator. Expand Database \uf0ae named Database \uf0ae Schemas \uf0ae BANK_SCHEMA \uf0ae Tables .", "text": "1. Review the columns of each the tables through System i Navigator. Expand Database \uf0ae named Database \uf0ae Schemas \uf0ae BANK_SCHEMA \uf0ae Tables .", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/633", "parent": {"cref": "#/groups/62"}, "children": [], "label": "list_item", "prov": [{"page_no": 59, "bbox": {"l": 136.044677734375, "t": 663.48486328125, "r": 546.8358764648438, "b": 629.2593383789062, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 253]}], "orig": "2. Right-click the CUSTOMERS table and select Definition . Figure 4-6 shows the attributes for the CUSTOMERS table. The Row access control and Column access control options are not selected, which indicates that the table does not have RCAC implemented.", "text": "2. Right-click the CUSTOMERS table and select Definition . Figure 4-6 shows the attributes for the CUSTOMERS table. The Row access control and Column access control options are not selected, which indicates that the table does not have RCAC implemented.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/634", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 59, "bbox": {"l": 136.25962829589844, "t": 427.2813415527344, "r": 303.7537536621094, "b": 418.0169982910156, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 37]}], "orig": "Figure 4-6 CUSTOMERS table attributes", "text": "Figure 4-6 CUSTOMERS table attributes"}, {"self_ref": "#/texts/635", "parent": {"cref": "#/groups/63"}, "children": [], "label": "list_item", "prov": [{"page_no": 59, "bbox": {"l": 135.99163818359375, "t": 401.4026794433594, "r": 517.3616333007812, "b": 378.7974853515625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 91]}], "orig": "3. Click the Columns tab to see the columns of the CUSTOMERS table, as shown in Figure 4-7.", "text": "3. Click the Columns tab to see the columns of the CUSTOMERS table, as shown in Figure 4-7.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/636", "parent": {"cref": "#/body"}, "children": [], "label": "paragraph", "prov": [{"page_no": 59, "bbox": {"l": 64.40914916992188, "t": 179.63116455078125, "r": 293.8601989746094, "b": 169.933837890625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 52]}], "orig": "Figure 4-7 Column definitions of the CUSTOMERS table", "text": "Figure 4-7 Column definitions of the CUSTOMERS table"}, {"self_ref": "#/texts/637", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 59, "bbox": {"l": 214.2801971435547, "t": 37.2733154296875, "r": 523.5935668945312, "b": 27.97186279296875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 70]}], "orig": "Chapter 4. Implementing Row and Column Access Control: Banking example", "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"self_ref": "#/texts/638", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 59, "bbox": {"l": 535.720947265625, "t": 37.82537841796875, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "43", "text": "43"}, {"self_ref": "#/texts/639", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 60, "bbox": {"l": 64.17613220214844, "t": 37.888427734375, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "44", "text": "44"}, {"self_ref": "#/texts/640", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 60, "bbox": {"l": 93.36976623535156, "t": 37.36669921875, "r": 334.4214172363281, "b": 27.99517822265625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/641", "parent": {"cref": "#/groups/64"}, "children": [], "label": "list_item", "prov": [{"page_no": 60, "bbox": {"l": 135.88308715820312, "t": 721.5631713867188, "r": 538.2010498046875, "b": 675.2788696289062, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 263]}], "orig": "4. Click the Key Constraints , Foreign Key Constraints , and Check Constraints tabs to review the key, foreign, and check constraints on the CUSTOMERS table, as shown in Figure 4-8. There are no Foreign Key Constraints or Check Constraints on the CUSTOMERS table.", "text": "4. Click the Key Constraints , Foreign Key Constraints , and Check Constraints tabs to review the key, foreign, and check constraints on the CUSTOMERS table, as shown in Figure 4-8. There are no Foreign Key Constraints or Check Constraints on the CUSTOMERS table.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/642", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 60, "bbox": {"l": 136.06980895996094, "t": 483.4775695800781, "r": 396.0132141113281, "b": 474.015625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 59]}], "orig": "Figure 4-8 Reviewing the constraints on the CUSTOMERS table", "text": "Figure 4-8 Reviewing the constraints on the CUSTOMERS table"}, {"self_ref": "#/texts/643", "parent": {"cref": "#/groups/65"}, "children": [], "label": "list_item", "prov": [{"page_no": 60, "bbox": {"l": 136.2538299560547, "t": 457.36016845703125, "r": 542.1918334960938, "b": 434.73291015625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 154]}], "orig": "5. Review the definition of the ACCOUNTS table. The definition of the ACCOUNTS table is shown in Figure 4-9. RCAC has not been defined for this table yet.", "text": "5. Review the definition of the ACCOUNTS table. The definition of the ACCOUNTS table is shown in Figure 4-9. RCAC has not been defined for this table yet.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/644", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 60, "bbox": {"l": 136.27098083496094, "t": 228.7257080078125, "r": 297.00921630859375, "b": 219.380615234375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 36]}], "orig": "Figure 4-9 ACCOUNTS table attributes", "text": "Figure 4-9 ACCOUNTS table attributes"}, {"self_ref": "#/texts/645", "parent": {"cref": "#/groups/66"}, "children": [], "label": "list_item", "prov": [{"page_no": 61, "bbox": {"l": 135.9091033935547, "t": 721.5545043945312, "r": 509.6353759765625, "b": 698.7022094726562, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 91]}], "orig": "6. Click the Columns tab to see the columns of the ACCOUNTS table, as shown in Figure 4-10.", "text": "6. Click the Columns tab to see the columns of the ACCOUNTS table, as shown in Figure 4-10.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/646", "parent": {"cref": "#/body"}, "children": [], "label": "paragraph", "prov": [{"page_no": 61, "bbox": {"l": 64.17601013183594, "t": 554.9664916992188, "r": 291.64111328125, "b": 545.1570434570312, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 52]}], "orig": "Figure 4-10 Column definitions of the ACCOUNTS table", "text": "Figure 4-10 Column definitions of the ACCOUNTS table"}, {"self_ref": "#/texts/647", "parent": {"cref": "#/groups/67"}, "children": [], "label": "list_item", "prov": [{"page_no": 61, "bbox": {"l": 136.2264404296875, "t": 528.1681518554688, "r": 538.2010498046875, "b": 482.25897216796875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 265]}], "orig": "7. Click the Key Constraints , Foreign Key Constraints , and Check Constraints tabs to review the key, foreign, and check constraints on the ACCOUNTS table, as shown in Figure 4-11. There is one Foreign Key Constraint and no Check Constraints on the ACCOUNTS table.", "text": "7. Click the Key Constraints , Foreign Key Constraints , and Check Constraints tabs to review the key, foreign, and check constraints on the ACCOUNTS table, as shown in Figure 4-11. There is one Foreign Key Constraint and no Check Constraints on the ACCOUNTS table.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/648", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 61, "bbox": {"l": 64.48716735839844, "t": 304.5341796875, "r": 322.23956298828125, "b": 295.1299133300781, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 59]}], "orig": "Figure 4-11 Reviewing the constraints on the ACCOUNTS table", "text": "Figure 4-11 Reviewing the constraints on the ACCOUNTS table"}, {"self_ref": "#/texts/649", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 61, "bbox": {"l": 214.28741455078125, "t": 37.26190185546875, "r": 523.5935668945312, "b": 27.9407958984375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 70]}], "orig": "Chapter 4. Implementing Row and Column Access Control: Banking example", "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"self_ref": "#/texts/650", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 61, "bbox": {"l": 535.7454833984375, "t": 37.93182373046875, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "45", "text": "45"}, {"self_ref": "#/texts/651", "parent": {"cref": "#/groups/68"}, "children": [], "label": "list_item", "prov": [{"page_no": 62, "bbox": {"l": 136.05352783203125, "t": 721.6047973632812, "r": 547.2595825195312, "b": 698.7333374023438, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 157]}], "orig": "8. Review the definition of the TRANSACTIONS table. The definition of the TRANSACTIONS table is shown in Figure 4-12. RCAC is not defined for this table yet.", "text": "8. Review the definition of the TRANSACTIONS table. The definition of the TRANSACTIONS table is shown in Figure 4-12. RCAC is not defined for this table yet.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/652", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 62, "bbox": {"l": 136.08340454101562, "t": 492.669677734375, "r": 321.95263671875, "b": 483.11859130859375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 41]}], "orig": "Figure 4-12 TRANSACTIONS table attributes", "text": "Figure 4-12 TRANSACTIONS table attributes"}, {"self_ref": "#/texts/653", "parent": {"cref": "#/groups/69"}, "children": [], "label": "list_item", "prov": [{"page_no": 62, "bbox": {"l": 136.10157775878906, "t": 466.7878112792969, "r": 531.8204345703125, "b": 443.9242858886719, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 95]}], "orig": "9. Click the Columns tab to see the columns of the TRANSACTIONS table, as shown in Figure 4-13.", "text": "9. Click the Columns tab to see the columns of the TRANSACTIONS table, as shown in Figure 4-13.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/654", "parent": {"cref": "#/body"}, "children": [], "label": "paragraph", "prov": [{"page_no": 62, "bbox": {"l": 136.23361206054688, "t": 309.7732849121094, "r": 383.6240234375, "b": 299.8185729980469, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 56]}], "orig": "Figure 4-13 Column definitions of the TRANSACTIONS table", "text": "Figure 4-13 Column definitions of the TRANSACTIONS table"}, {"self_ref": "#/texts/655", "parent": {"cref": "#/groups/70"}, "children": [], "label": "list_item", "prov": [{"page_no": 62, "bbox": {"l": 136.8000030517578, "t": 283.541748046875, "r": 547.3941040039062, "b": 237.45896911621094, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 273]}], "orig": "10.Click the Key Constraints , Foreign Key Constraints , and Check Constraints tabs to review the key, foreign, and check constraints on the TRANSACTIONS table, as shown in Figure 4-14. There is one Foreign Key Constraint and one Check Constraint on the TRANSACTIONS table.", "text": "10.Click the Key Constraints , Foreign Key Constraints , and Check Constraints tabs to review the key, foreign, and check constraints on the TRANSACTIONS table, as shown in Figure 4-14. There is one Foreign Key Constraint and one Check Constraint on the TRANSACTIONS table.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/656", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 62, "bbox": {"l": 64.34345245361328, "t": 67.66943359375, "r": 342.0125732421875, "b": 57.83700180053711, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 63]}], "orig": "Figure 4-14 Reviewing the constraints on the TRANSACTIONS table", "text": "Figure 4-14 Reviewing the constraints on the TRANSACTIONS table"}, {"self_ref": "#/texts/657", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 62, "bbox": {"l": 64.11357116699219, "t": 37.95208740234375, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "46", "text": "46"}, {"self_ref": "#/texts/658", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 62, "bbox": {"l": 93.1781997680664, "t": 37.3914794921875, "r": 334.4214172363281, "b": 27.982421875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/659", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 63, "bbox": {"l": 136.23085021972656, "t": 721.2885131835938, "r": 527.005615234375, "b": 699.118408203125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 167]}], "orig": "Now that you have reviewed the database model for this example, the following sections describe the steps that are required to implement RCAC in this banking scenario.", "text": "Now that you have reviewed the database model for this example, the following sections describe the steps that are required to implement RCAC in this banking scenario."}, {"self_ref": "#/texts/660", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 63, "bbox": {"l": 64.15889739990234, "t": 679.7421875, "r": 532.1195068359375, "b": 650.3182983398438, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 74]}], "orig": "4.3.2 Assigning function ID QIBM_DB_SECADM to the Database Engineers group", "text": "4.3.2 Assigning function ID QIBM_DB_SECADM to the Database Engineers group", "level": 1}, {"self_ref": "#/texts/661", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 63, "bbox": {"l": 135.7303466796875, "t": 637.4636840820312, "r": 531.9879150390625, "b": 603.2656860351562, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 250]}], "orig": "The first step is to assign the appropriate function usage ID to the Database Engineers (DBEs) that will be implementing RCAC. For a description of function usage IDs, see 2.1, \"Roles\" on page 8. In this example, the DBEs are users MCAIN and HBEDOYA.", "text": "The first step is to assign the appropriate function usage ID to the Database Engineers (DBEs) that will be implementing RCAC. For a description of function usage IDs, see 2.1, \"Roles\" on page 8. In this example, the DBEs are users MCAIN and HBEDOYA."}, {"self_ref": "#/texts/662", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 63, "bbox": {"l": 136.1609649658203, "t": 591.4937744140625, "r": 266.8606872558594, "b": 580.8624877929688, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 29]}], "orig": "Complete the following steps:", "text": "Complete the following steps:", "level": 1}, {"self_ref": "#/texts/663", "parent": {"cref": "#/groups/71"}, "children": [], "label": "list_item", "prov": [{"page_no": 63, "bbox": {"l": 136.48870849609375, "t": 574.73388671875, "r": 544.5436401367188, "b": 552.2794799804688, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 103]}], "orig": "1. Right-click the database connection and select Application Administration , as shown in Figure 4-15.", "text": "1. Right-click the database connection and select Application Administration , as shown in Figure 4-15.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/664", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 63, "bbox": {"l": 136.063720703125, "t": 298.3213806152344, "r": 292.96966552734375, "b": 289.1767272949219, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 38]}], "orig": "Figure 4-15 Application administration", "text": "Figure 4-15 Application administration"}, {"self_ref": "#/texts/665", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 63, "bbox": {"l": 214.25257873535156, "t": 37.2509765625, "r": 523.5935668945312, "b": 27.9610595703125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 70]}], "orig": "Chapter 4. Implementing Row and Column Access Control: Banking example", "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"self_ref": "#/texts/666", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 63, "bbox": {"l": 535.6387939453125, "t": 37.79241943359375, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "47", "text": "47"}, {"self_ref": "#/texts/667", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 64, "bbox": {"l": 64.1659164428711, "t": 37.85589599609375, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "48", "text": "48"}, {"self_ref": "#/texts/668", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 64, "bbox": {"l": 93.31367492675781, "t": 37.39764404296875, "r": 334.4214172363281, "b": 27.9822998046875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/669", "parent": {"cref": "#/groups/72"}, "children": [], "label": "list_item", "prov": [{"page_no": 64, "bbox": {"l": 135.7973175048828, "t": 723.349853515625, "r": 530.2109985351562, "b": 698.8440551757812, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 165]}], "orig": "2. The Application Administration window opens, as shown in Figure 4-16. Click IBM i \uf0ae Database and select the function usage ID of Database Security Administrator .", "text": "2. The Application Administration window opens, as shown in Figure 4-16. Click IBM i \uf0ae Database and select the function usage ID of Database Security Administrator .", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/670", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 64, "bbox": {"l": 135.85130310058594, "t": 400.15435791015625, "r": 329.4411315917969, "b": 390.5697326660156, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 48]}], "orig": "Figure 4-16 Application administration for IBM i", "text": "Figure 4-16 Application administration for IBM i"}, {"self_ref": "#/texts/671", "parent": {"cref": "#/groups/73"}, "children": [], "label": "list_item", "prov": [{"page_no": 64, "bbox": {"l": 135.79788208007812, "t": 374.33563232421875, "r": 544.5723266601562, "b": 351.3948669433594, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 105]}], "orig": "3. Click Customize for the function usage ID of Database Security Administrator, as shown in Figure 4-17.", "text": "3. Click Customize for the function usage ID of Database Security Administrator, as shown in Figure 4-17.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/672", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 64, "bbox": {"l": 136.05140686035156, "t": 179.530517578125, "r": 459.4308776855469, "b": 169.84881591796875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 77]}], "orig": "Figure 4-17 Customizing the Database Security Administrator function usage ID", "text": "Figure 4-17 Customizing the Database Security Administrator function usage ID"}, {"self_ref": "#/texts/673", "parent": {"cref": "#/groups/74"}, "children": [], "label": "list_item", "prov": [{"page_no": 65, "bbox": {"l": 135.78591918945312, "t": 721.5147094726562, "r": 547.1973876953125, "b": 687.2783203125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 187]}], "orig": "4. The Customize Access window opens, as shown in Figure 4-18. Click the users that need to implement RCAC. For this example, HBEDOYA and MCAIN are selected. Click Add and then click OK .", "text": "4. The Customize Access window opens, as shown in Figure 4-18. Click the users that need to implement RCAC. For this example, HBEDOYA and MCAIN are selected. Click Add and then click OK .", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/674", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 65, "bbox": {"l": 136.0041961669922, "t": 387.30133056640625, "r": 297.5841369628906, "b": 378.0472717285156, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 35]}], "orig": "Figure 4-18 Customize Access window", "text": "Figure 4-18 Customize Access window"}, {"self_ref": "#/texts/675", "parent": {"cref": "#/groups/75"}, "children": [], "label": "list_item", "prov": [{"page_no": 65, "bbox": {"l": 136.253173828125, "t": 361.51788330078125, "r": 537.650146484375, "b": 326.7797546386719, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 180]}], "orig": "5. The Application Administrator window opens again. The function usage ID of Database Security Administrator now has an X in the Customized Access column, as shown in Figure 4-19.", "text": "5. The Application Administrator window opens again. The function usage ID of Database Security Administrator now has an X in the Customized Access column, as shown in Figure 4-19.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/676", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 65, "bbox": {"l": 136.1788787841797, "t": 205.81591796875, "r": 443.8726501464844, "b": 196.3251953125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 72]}], "orig": "Figure 4-19 Function usage ID Database Security Administrator customized", "text": "Figure 4-19 Function usage ID Database Security Administrator customized"}, {"self_ref": "#/texts/677", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 65, "bbox": {"l": 214.2803955078125, "t": 37.261474609375, "r": 523.5935668945312, "b": 27.94500732421875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 70]}], "orig": "Chapter 4. Implementing Row and Column Access Control: Banking example", "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"self_ref": "#/texts/678", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 65, "bbox": {"l": 535.666015625, "t": 37.95111083984375, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "49", "text": "49"}, {"self_ref": "#/texts/679", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 66, "bbox": {"l": 64.19255828857422, "t": 37.62579345703125, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "50", "text": "50"}, {"self_ref": "#/texts/680", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 66, "bbox": {"l": 93.27255249023438, "t": 37.28240966796875, "r": 334.4214172363281, "b": 28.05938720703125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/681", "parent": {"cref": "#/groups/76"}, "children": [], "label": "list_item", "prov": [{"page_no": 66, "bbox": {"l": 135.97772216796875, "t": 721.4182739257812, "r": 545.5703735351562, "b": 698.7117309570312, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 117]}], "orig": "6. Run an SQL query that shows which user profiles are enabled to define RCAC. The SQL query is shown in Figure 4-20.", "text": "6. Run an SQL query that shows which user profiles are enabled to define RCAC. The SQL query is shown in Figure 4-20.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/682", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 66, "bbox": {"l": 136.3402557373047, "t": 517.5281372070312, "r": 438.3047790527344, "b": 507.7417297363281, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 74]}], "orig": "Figure 4-20 Query to display user profiles with function usage ID for RCAC", "text": "Figure 4-20 Query to display user profiles with function usage ID for RCAC"}, {"self_ref": "#/texts/683", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 66, "bbox": {"l": 64.06755065917969, "t": 488.3762512207031, "r": 418.56524658203125, "b": 474.9371337890625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 59]}], "orig": "4.3.3 Creating group profiles for the users and their roles", "text": "4.3.3 Creating group profiles for the users and their roles", "level": 1}, {"self_ref": "#/texts/684", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 66, "bbox": {"l": 135.84303283691406, "t": 462.0940856933594, "r": 547.2724609375, "b": 415.6891174316406, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 307]}], "orig": "The next step is to create the different group profiles (ADMIN, CUSTOMER, TELLER, and DBE) and assign the different user profiles to the different group profiles. For a description of the different groups and users for this example, see 4.2, \"Description of the users roles and responsibilities\" on page 39.", "text": "The next step is to create the different group profiles (ADMIN, CUSTOMER, TELLER, and DBE) and assign the different user profiles to the different group profiles. For a description of the different groups and users for this example, see 4.2, \"Description of the users roles and responsibilities\" on page 39."}, {"self_ref": "#/texts/685", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 66, "bbox": {"l": 136.06056213378906, "t": 404.0556945800781, "r": 266.8606872558594, "b": 393.63714599609375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 29]}], "orig": "Complete the following steps:", "text": "Complete the following steps:", "level": 1}, {"self_ref": "#/texts/686", "parent": {"cref": "#/groups/77"}, "children": [], "label": "list_item", "prov": [{"page_no": 66, "bbox": {"l": 136.78126525878906, "t": 387.283447265625, "r": 535.997802734375, "b": 364.7965393066406, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 120]}], "orig": "1. On the main navigation pane of System i Navigator, right-click Groups and select New Group , as shown in Figure 4-21.", "text": "1. On the main navigation pane of System i Navigator, right-click Groups and select New Group , as shown in Figure 4-21.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/687", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 66, "bbox": {"l": 136.255126953125, "t": 201.13775634765625, "r": 281.4906005859375, "b": 191.8638916015625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 35]}], "orig": "Figure 4-21 Creating group profiles", "text": "Figure 4-21 Creating group profiles"}, {"self_ref": "#/texts/688", "parent": {"cref": "#/groups/78"}, "children": [], "label": "list_item", "prov": [{"page_no": 67, "bbox": {"l": 136.031005859375, "t": 721.4904174804688, "r": 547.2084350585938, "b": 687.0444946289062, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 240]}], "orig": "2. The New Group window opens, as shown in Figure 4-22. For each new group, enter the Group name (ADMIN, CUSTOMER, TELLER, and DBE) and add the user profiles that are associated to this group by selecting the user profile and clicking Add .", "text": "2. The New Group window opens, as shown in Figure 4-22. For each new group, enter the Group name (ADMIN, CUSTOMER, TELLER, and DBE) and add the user profiles that are associated to this group by selecting the user profile and clicking Add .", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/689", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 67, "bbox": {"l": 150.73487854003906, "t": 680.9339599609375, "r": 482.46234130859375, "b": 670.2432250976562, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 68]}], "orig": "Figure 4-22 shows adding user TQSPENCER to the TELLER group profile.", "text": "Figure 4-22 shows adding user TQSPENCER to the TELLER group profile."}, {"self_ref": "#/texts/690", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 67, "bbox": {"l": 136.369873046875, "t": 428.5393981933594, "r": 352.9217834472656, "b": 419.191162109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 52]}], "orig": "Figure 4-22 Creating group profiles and adding users", "text": "Figure 4-22 Creating group profiles and adding users"}, {"self_ref": "#/texts/691", "parent": {"cref": "#/groups/79"}, "children": [], "label": "list_item", "prov": [{"page_no": 67, "bbox": {"l": 136.0438232421875, "t": 402.5482177734375, "r": 537.6182861328125, "b": 380.2133483886719, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 151]}], "orig": "3. After you create all the group profiles, you should see them listed in System i Navigator under Users and Groups \uf0ae Groups , as shown in Figure 4-23.", "text": "3. After you create all the group profiles, you should see them listed in System i Navigator under Users and Groups \uf0ae Groups , as shown in Figure 4-23.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/692", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 67, "bbox": {"l": 136.12078857421875, "t": 238.92657470703125, "r": 303.932373046875, "b": 229.78912353515625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 40]}], "orig": "Figure 4-23 Newly created group profiles", "text": "Figure 4-23 Newly created group profiles"}, {"self_ref": "#/texts/693", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 67, "bbox": {"l": 214.30003356933594, "t": 37.2642822265625, "r": 523.5935668945312, "b": 27.95086669921875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 70]}], "orig": "Chapter 4. Implementing Row and Column Access Control: Banking example", "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"self_ref": "#/texts/694", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 67, "bbox": {"l": 535.7405395507812, "t": 37.67535400390625, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "51", "text": "51"}, {"self_ref": "#/texts/695", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 68, "bbox": {"l": 64.14804077148438, "t": 721.7244873046875, "r": 420.2837219238281, "b": 708.4265747070312, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 52]}], "orig": "4.3.4 Creating the CUSTOMER_LOGIN_ID global variable", "text": "4.3.4 Creating the CUSTOMER_LOGIN_ID global variable", "level": 1}, {"self_ref": "#/texts/696", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 68, "bbox": {"l": 135.99069213867188, "t": 695.1038208007812, "r": 545.7725219726562, "b": 660.9912109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 244]}], "orig": "In this step, you create a global variable that is used to capture the Customer_Login_ID information, which is required to validate the permissions. For more information about global variables, see 3.2.2, \"Built-in global variables\" on page 19.", "text": "In this step, you create a global variable that is used to capture the Customer_Login_ID information, which is required to validate the permissions. For more information about global variables, see 3.2.2, \"Built-in global variables\" on page 19."}, {"self_ref": "#/texts/697", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 68, "bbox": {"l": 136.14224243164062, "t": 649.479248046875, "r": 266.8606872558594, "b": 639.0682373046875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 29]}], "orig": "Complete the following steps:", "text": "Complete the following steps:", "level": 1}, {"self_ref": "#/texts/698", "parent": {"cref": "#/groups/80"}, "children": [], "label": "list_item", "prov": [{"page_no": 68, "bbox": {"l": 136.56494140625, "t": 632.7373657226562, "r": 535.943603515625, "b": 610.179931640625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 145]}], "orig": "1. From System i Navigator, under the schema Bank_Schema, right-click Global Variable and select New \uf0ae Global Variable , as shown in Figure 4-24.", "text": "1. From System i Navigator, under the schema Bank_Schema, right-click Global Variable and select New \uf0ae Global Variable , as shown in Figure 4-24.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/699", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 68, "bbox": {"l": 136.03294372558594, "t": 384.3118591308594, "r": 292.05377197265625, "b": 375.2170715332031, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 38]}], "orig": "Figure 4-24 Creating a global variable", "text": "Figure 4-24 Creating a global variable"}, {"self_ref": "#/texts/700", "parent": {"cref": "#/groups/81"}, "children": [], "label": "list_item", "prov": [{"page_no": 68, "bbox": {"l": 135.92572021484375, "t": 358.4706115722656, "r": 541.1919555664062, "b": 312.5187072753906, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 314]}], "orig": "2. The New Global Variable window opens, as shown in Figure 4-25. Enter the global variable name of CUSTOMER_LOGIN_ID, select the data type of VARCHAR, and leave the default value of NULL. This default value ensures that users that do not use the web interface do not have permission to access the data. Click OK .", "text": "2. The New Global Variable window opens, as shown in Figure 4-25. Enter the global variable name of CUSTOMER_LOGIN_ID, select the data type of VARCHAR, and leave the default value of NULL. This default value ensures that users that do not use the web interface do not have permission to access the data. Click OK .", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/701", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 68, "bbox": {"l": 64.31603240966797, "t": 81.11328125, "r": 347.040283203125, "b": 71.04986572265625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 63]}], "orig": "Figure 4-25 Creating a global variable called CUSTOMER_LOGIN_ID", "text": "Figure 4-25 Creating a global variable called CUSTOMER_LOGIN_ID"}, {"self_ref": "#/texts/702", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 68, "bbox": {"l": 64.1907958984375, "t": 37.67730712890625, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "52", "text": "52"}, {"self_ref": "#/texts/703", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 68, "bbox": {"l": 93.31280517578125, "t": 37.311279296875, "r": 334.4214172363281, "b": 28.101806640625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/704", "parent": {"cref": "#/groups/82"}, "children": [], "label": "list_item", "prov": [{"page_no": 69, "bbox": {"l": 136.12977600097656, "t": 721.2545166015625, "r": 547.2542724609375, "b": 687.2127685546875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 216]}], "orig": "3. Now that the global variable is created, assign permissions to the variable so that it can be set by the program. Right-click the CUSTOMER_LOGIN_ID global variable and select Permissions , as shown in Figure 4-26.", "text": "3. Now that the global variable is created, assign permissions to the variable so that it can be set by the program. Right-click the CUSTOMER_LOGIN_ID global variable and select Permissions , as shown in Figure 4-26.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/705", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 69, "bbox": {"l": 135.95867919921875, "t": 550.0120239257812, "r": 457.0142822265625, "b": 540.6283569335938, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 72]}], "orig": "Figure 4-26 Setting permissions on the CUSTOMER_LOGIN_ID global variable", "text": "Figure 4-26 Setting permissions on the CUSTOMER_LOGIN_ID global variable"}, {"self_ref": "#/texts/706", "parent": {"cref": "#/groups/83"}, "children": [], "label": "list_item", "prov": [{"page_no": 69, "bbox": {"l": 135.82858276367188, "t": 524.1180419921875, "r": 534.23876953125, "b": 501.53948974609375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 147]}], "orig": "4. The Permissions window opens, as shown in Figure 4-27. Select Change authority for Webuser so that the application can set this global variable.", "text": "4. The Permissions window opens, as shown in Figure 4-27. Select Change authority for Webuser so that the application can set this global variable.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/707", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 69, "bbox": {"l": 136.15591430664062, "t": 213.4273681640625, "r": 540.3552856445312, "b": 203.84979248046875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 91]}], "orig": "Figure 4-27 Setting change permissions for Webuser on the CUSTOMER_LOGIN_ID global variable", "text": "Figure 4-27 Setting change permissions for Webuser on the CUSTOMER_LOGIN_ID global variable"}, {"self_ref": "#/texts/708", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 69, "bbox": {"l": 214.31678771972656, "t": 37.26458740234375, "r": 523.5935668945312, "b": 27.9561767578125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 70]}], "orig": "Chapter 4. Implementing Row and Column Access Control: Banking example", "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"self_ref": "#/texts/709", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 69, "bbox": {"l": 535.7046508789062, "t": 37.65869140625, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "53", "text": "53"}, {"self_ref": "#/texts/710", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 70, "bbox": {"l": 64.21206665039062, "t": 721.7990112304688, "r": 339.9589538574219, "b": 708.4077758789062, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 43]}], "orig": "4.3.5 Defining and creating row permissions", "text": "4.3.5 Defining and creating row permissions", "level": 1}, {"self_ref": "#/texts/711", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 70, "bbox": {"l": 135.9742889404297, "t": 695.2660522460938, "r": 527.3794555664062, "b": 685.0367431640625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 88]}], "orig": "You now ready to define the row permissions of the tables. Complete the following steps:", "text": "You now ready to define the row permissions of the tables. Complete the following steps:"}, {"self_ref": "#/texts/712", "parent": {"cref": "#/groups/84"}, "children": [], "label": "list_item", "prov": [{"page_no": 70, "bbox": {"l": 136.758056640625, "t": 680.3302612304688, "r": 530.7598266601562, "b": 643.67529296875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 169]}], "orig": "1. From the navigation pane of System i Navigator, click Schemas \uf0ae BANK_SCHEMA , right-click Row Permissions , and select New \uf0ae Row Permission , as shown in Figure 4-28.", "text": "1. From the navigation pane of System i Navigator, click Schemas \uf0ae BANK_SCHEMA , right-click Row Permissions , and select New \uf0ae Row Permission , as shown in Figure 4-28.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/713", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 70, "bbox": {"l": 136.1620330810547, "t": 369.123046875, "r": 314.04541015625, "b": 359.82366943359375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 41]}], "orig": "Figure 4-28 Selecting new row permissions", "text": "Figure 4-28 Selecting new row permissions"}, {"self_ref": "#/texts/714", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 70, "bbox": {"l": 64.29161071777344, "t": 37.70703125, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "54", "text": "54"}, {"self_ref": "#/texts/715", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 70, "bbox": {"l": 93.33383178710938, "t": 37.33294677734375, "r": 334.4214172363281, "b": 28.05706787109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/716", "parent": {"cref": "#/groups/85"}, "children": [], "label": "list_item", "prov": [{"page_no": 71, "bbox": {"l": 136.03018188476562, "t": 721.490478515625, "r": 544.505126953125, "b": 687.145751953125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 213]}], "orig": "2. The New Row Permission window opens, as shown in Figure 4-29. Enter the information regarding the row permissions on the CUSTOMERS table. This row permission defines what is established in the following policy:", "text": "2. The New Row Permission window opens, as shown in Figure 4-29. Enter the information regarding the row permissions on the CUSTOMERS table. This row permission defines what is established in the following policy:", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/717", "parent": {"cref": "#/groups/85"}, "children": [], "label": "list_item", "prov": [{"page_no": 71, "bbox": {"l": 151.3019256591797, "t": 680.717529296875, "r": 542.1815185546875, "b": 658.2987060546875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 89]}], "orig": "-User profiles that belong to DBE, ADMIN, and TELLER group profiles can see all the rows.", "text": "-User profiles that belong to DBE, ADMIN, and TELLER group profiles can see all the rows.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/718", "parent": {"cref": "#/groups/85"}, "children": [], "label": "list_item", "prov": [{"page_no": 71, "bbox": {"l": 151.4884796142578, "t": 651.5912475585938, "r": 537.7831420898438, "b": 581.2600708007812, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 438]}], "orig": "-User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER user) can see only the rows that match their customer login ID. The login ID value representing the online banking user is passed from the web application to the database by using the global variable CUSTOMER_LOGIN_ID. The permission rule uses a subquery to check whether the global variable matches the CUSTOMER_LOGIN_ID column value in the CUSTOMERS table.", "text": "-User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER user) can see only the rows that match their customer login ID. The login ID value representing the online banking user is passed from the web application to the database by using the global variable CUSTOMER_LOGIN_ID. The permission rule uses a subquery to check whether the global variable matches the CUSTOMER_LOGIN_ID column value in the CUSTOMERS table.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/719", "parent": {"cref": "#/groups/85"}, "children": [], "label": "list_item", "prov": [{"page_no": 71, "bbox": {"l": 151.66030883789062, "t": 574.5264892578125, "r": 381.3265380859375, "b": 564.2066650390625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 51]}], "orig": "-Any other user profile cannot see any rows at all.", "text": "-Any other user profile cannot see any rows at all.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/720", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 71, "bbox": {"l": 151.00958251953125, "t": 557.4721069335938, "r": 314.7688293457031, "b": 546.886474609375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 37]}], "orig": "Select the Enabled option. Click OK .", "text": "Select the Enabled option. Click OK ."}, {"self_ref": "#/texts/721", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 71, "bbox": {"l": 135.95968627929688, "t": 262.62078857421875, "r": 384.6536865234375, "b": 253.26513671875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Figure 4-29 New row permissions on the CUSTOMERS table", "text": "Figure 4-29 New row permissions on the CUSTOMERS table"}, {"self_ref": "#/texts/722", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 71, "bbox": {"l": 214.24986267089844, "t": 37.28692626953125, "r": 523.5935668945312, "b": 27.956787109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 70]}], "orig": "Chapter 4. Implementing Row and Column Access Control: Banking example", "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"self_ref": "#/texts/723", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 71, "bbox": {"l": 535.6702270507812, "t": 37.6822509765625, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "55", "text": "55"}, {"self_ref": "#/texts/724", "parent": {"cref": "#/groups/86"}, "children": [], "label": "list_item", "prov": [{"page_no": 72, "bbox": {"l": 136.20513916015625, "t": 721.404541015625, "r": 543.8363647460938, "b": 674.8102416992188, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 263]}], "orig": "3. Define the row permissions for the ACCOUNTS table. The New Row Permission window opens, as shown in Figure 4-30. Enter the information regarding the row permissions on the ACCOUNTS table. This row permission defines what is established in the following policy:", "text": "3. Define the row permissions for the ACCOUNTS table. The New Row Permission window opens, as shown in Figure 4-30. Enter the information regarding the row permissions on the ACCOUNTS table. This row permission defines what is established in the following policy:", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/725", "parent": {"cref": "#/groups/86"}, "children": [], "label": "list_item", "prov": [{"page_no": 72, "bbox": {"l": 151.44004821777344, "t": 668.675537109375, "r": 539.4539794921875, "b": 646.2992553710938, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 88]}], "orig": "-User profiles that belong to DBE, ADMIN and TELLER group profiles can see all the rows.", "text": "-User profiles that belong to DBE, ADMIN and TELLER group profiles can see all the rows.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/726", "parent": {"cref": "#/groups/86"}, "children": [], "label": "list_item", "prov": [{"page_no": 72, "bbox": {"l": 151.2493438720703, "t": 639.6063232421875, "r": 537.7576904296875, "b": 569.2606201171875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 438]}], "orig": "-User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER user) can see only the rows that match their customer login ID. The login ID value representing the online banking user is passed from the web application to the database by using the global variable CUSTOMER_LOGIN_ID. The permission rule uses a subquery to check whether the global variable matches the CUSTOMER_LOGIN_ID column value in the CUSTOMERS table.", "text": "-User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER user) can see only the rows that match their customer login ID. The login ID value representing the online banking user is passed from the web application to the database by using the global variable CUSTOMER_LOGIN_ID. The permission rule uses a subquery to check whether the global variable matches the CUSTOMER_LOGIN_ID column value in the CUSTOMERS table.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/727", "parent": {"cref": "#/groups/86"}, "children": [], "label": "list_item", "prov": [{"page_no": 72, "bbox": {"l": 151.43359375, "t": 562.5576782226562, "r": 381.32696533203125, "b": 552.2164916992188, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 51]}], "orig": "-Any other user profile cannot see any rows at all.", "text": "-Any other user profile cannot see any rows at all.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/728", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 72, "bbox": {"l": 150.8797149658203, "t": 545.5108032226562, "r": 314.7692565917969, "b": 535.041259765625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 37]}], "orig": "Select the Enabled option. Click OK .", "text": "Select the Enabled option. Click OK ."}, {"self_ref": "#/texts/729", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 72, "bbox": {"l": 64.3364486694336, "t": 207.1900634765625, "r": 305.99822998046875, "b": 197.93699645996094, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 53]}], "orig": "Figure 4-30 New row permissions on the ACCOUNTS table", "text": "Figure 4-30 New row permissions on the ACCOUNTS table"}, {"self_ref": "#/texts/730", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 72, "bbox": {"l": 64.20973205566406, "t": 37.7222900390625, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "56", "text": "56"}, {"self_ref": "#/texts/731", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 72, "bbox": {"l": 93.28527069091797, "t": 37.35791015625, "r": 334.4214172363281, "b": 28.055908203125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/732", "parent": {"cref": "#/groups/87"}, "children": [], "label": "list_item", "prov": [{"page_no": 73, "bbox": {"l": 135.74258422851562, "t": 721.5518798828125, "r": 529.9049072265625, "b": 675.0388793945312, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 270]}], "orig": "4. Define the row permissions on the TRANSACTIONS table. The New Row Permission window opens, as shown in Figure 4-31. Enter the information regarding the row permissions on the TRANSACTIONS table. This row permission defines what is established in the following policy:", "text": "4. Define the row permissions on the TRANSACTIONS table. The New Row Permission window opens, as shown in Figure 4-31. Enter the information regarding the row permissions on the TRANSACTIONS table. This row permission defines what is established in the following policy:", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/733", "parent": {"cref": "#/groups/87"}, "children": [], "label": "list_item", "prov": [{"page_no": 73, "bbox": {"l": 151.45989990234375, "t": 668.7428588867188, "r": 547.229248046875, "b": 646.2988891601562, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 92]}], "orig": "-User profiles that belong to DBE, ADMIN, and TELLER group profiles can see all of the rows.", "text": "-User profiles that belong to DBE, ADMIN, and TELLER group profiles can see all of the rows.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/734", "parent": {"cref": "#/groups/87"}, "children": [], "label": "list_item", "prov": [{"page_no": 73, "bbox": {"l": 151.29940795898438, "t": 639.63330078125, "r": 537.7831420898438, "b": 569.26025390625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 438]}], "orig": "-User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER user) can see only the rows that match their customer login ID. The login ID value representing the online banking user is passed from the web application to the database by using the global variable CUSTOMER_LOGIN_ID. The permission rule uses a subquery to check whether the global variable matches the CUSTOMER_LOGIN_ID column value in the CUSTOMERS table.", "text": "-User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER user) can see only the rows that match their customer login ID. The login ID value representing the online banking user is passed from the web application to the database by using the global variable CUSTOMER_LOGIN_ID. The permission rule uses a subquery to check whether the global variable matches the CUSTOMER_LOGIN_ID column value in the CUSTOMERS table.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/735", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 73, "bbox": {"l": 170.69351196289062, "t": 551.6622314453125, "r": 533.3919677734375, "b": 505.2535095214844, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 285]}], "orig": "Note: You must join back to ACCOUNTS and then to CUSTOMERS by using a subquery to check whether the global variable matches CUSTOMER_LOGIN_ID. Also, if the row permission or column mask rule text references another table with RCAC defined, the RCAC for the referenced table is ignored.", "text": "Note: You must join back to ACCOUNTS and then to CUSTOMERS by using a subquery to check whether the global variable matches CUSTOMER_LOGIN_ID. Also, if the row permission or column mask rule text references another table with RCAC defined, the RCAC for the referenced table is ignored."}, {"self_ref": "#/texts/736", "parent": {"cref": "#/groups/88"}, "children": [], "label": "list_item", "prov": [{"page_no": 73, "bbox": {"l": 151.38229370117188, "t": 485.89093017578125, "r": 381.3265380859375, "b": 475.55084228515625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 51]}], "orig": "-Any other user profile cannot see any rows at all.", "text": "-Any other user profile cannot see any rows at all.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/737", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 73, "bbox": {"l": 150.89027404785156, "t": 469.5093688964844, "r": 314.7688293457031, "b": 458.91302490234375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 37]}], "orig": "Select the Enabled option. Click OK .", "text": "Select the Enabled option. Click OK ."}, {"self_ref": "#/texts/738", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 73, "bbox": {"l": 64.22490692138672, "t": 78.46807861328125, "r": 325.5702819824219, "b": 69.0399169921875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 57]}], "orig": "Figure 4-31 New row permissions on the TRANSACTIONS table", "text": "Figure 4-31 New row permissions on the TRANSACTIONS table"}, {"self_ref": "#/texts/739", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 73, "bbox": {"l": 214.22891235351562, "t": 37.26959228515625, "r": 523.5935668945312, "b": 28.0042724609375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 70]}], "orig": "Chapter 4. Implementing Row and Column Access Control: Banking example", "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"self_ref": "#/texts/740", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 73, "bbox": {"l": 535.5846557617188, "t": 37.75579833984375, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "57", "text": "57"}, {"self_ref": "#/texts/741", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 74, "bbox": {"l": 64.232666015625, "t": 37.613525390625, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "58", "text": "58"}, {"self_ref": "#/texts/742", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 74, "bbox": {"l": 93.35807037353516, "t": 37.2994384765625, "r": 334.4214172363281, "b": 28.0589599609375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/743", "parent": {"cref": "#/groups/89"}, "children": [], "label": "list_item", "prov": [{"page_no": 74, "bbox": {"l": 136.36386108398438, "t": 721.450927734375, "r": 521.1912231445312, "b": 687.2786865234375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 175]}], "orig": "5. To verify that the row permissions are enabled, from System i Navigator, click Row Permissions , as shown in Figure 4-32. The three row permissions are created and enabled.", "text": "5. To verify that the row permissions are enabled, from System i Navigator, click Row Permissions , as shown in Figure 4-32. The three row permissions are created and enabled.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/744", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 74, "bbox": {"l": 64.27239227294922, "t": 517.3701171875, "r": 292.91876220703125, "b": 508.0120849609375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 50]}], "orig": "Figure 4-32 List of row permissions on BANK_SCHEMA", "text": "Figure 4-32 List of row permissions on BANK_SCHEMA"}, {"self_ref": "#/texts/745", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 74, "bbox": {"l": 64.21476745605469, "t": 488.1273193359375, "r": 327.4058837890625, "b": 474.7839660644531, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 40]}], "orig": "4.3.6 Defining and creating column masks", "text": "4.3.6 Defining and creating column masks", "level": 1}, {"self_ref": "#/texts/746", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 74, "bbox": {"l": 136.03562927246094, "t": 462.0003662109375, "r": 479.4200134277344, "b": 451.7078857421875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 76]}], "orig": "This section defines the masks on the columns. Complete the following steps:", "text": "This section defines the masks on the columns. Complete the following steps:"}, {"self_ref": "#/texts/747", "parent": {"cref": "#/groups/90"}, "children": [], "label": "list_item", "prov": [{"page_no": 74, "bbox": {"l": 136.79998779296875, "t": 447.3500061035156, "r": 523.0706787109375, "b": 410.91876220703125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 168]}], "orig": "1. From the main navigation pane of System i Navigator, click Schemas \uf0ae BANK_SCHEMA , right-click Column Masks , and select New \uf0ae Column Mask , as shown in Figure 4-33.", "text": "1. From the main navigation pane of System i Navigator, click Schemas \uf0ae BANK_SCHEMA , right-click Column Masks , and select New \uf0ae Column Mask , as shown in Figure 4-33.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/748", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 74, "bbox": {"l": 136.1403350830078, "t": 220.262939453125, "r": 287.95941162109375, "b": 210.93280029296875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 34]}], "orig": "Figure 4-33 Creating a column mask", "text": "Figure 4-33 Creating a column mask"}, {"self_ref": "#/texts/749", "parent": {"cref": "#/groups/91"}, "children": [], "label": "list_item", "prov": [{"page_no": 75, "bbox": {"l": 136.03579711914062, "t": 721.2332153320312, "r": 524.1021728515625, "b": 699.2781372070312, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 97]}], "orig": "2. In the New Column Mask window, which is shown in Figure 4-34, enter the following information:", "text": "2. In the New Column Mask window, which is shown in Figure 4-34, enter the following information:", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/750", "parent": {"cref": "#/groups/91"}, "children": [], "label": "list_item", "prov": [{"page_no": 75, "bbox": {"l": 151.32827758789062, "t": 692.6640625, "r": 465.4696044921875, "b": 682.29833984375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 63]}], "orig": "-Select the CUSTOMERS table on which to create the column mask.", "text": "-Select the CUSTOMERS table on which to create the column mask.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/751", "parent": {"cref": "#/groups/91"}, "children": [], "label": "list_item", "prov": [{"page_no": 75, "bbox": {"l": 151.2732391357422, "t": 680.8697509765625, "r": 475.1905212402344, "b": 670.2985229492188, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 66]}], "orig": "-Select the Column to mask; in this example, it is CUSTOMER_EMAIL.", "text": "-Select the Column to mask; in this example, it is CUSTOMER_EMAIL.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/752", "parent": {"cref": "#/groups/91"}, "children": [], "label": "list_item", "prov": [{"page_no": 75, "bbox": {"l": 151.39305114746094, "t": 668.3560180664062, "r": 531.3062133789062, "b": 634.299072265625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 207]}], "orig": "-Define the masking logic depending on the rules that you want to enforce. In this example, either the ADMIN or CUSTOMER group profiles can see the entire email address; otherwise, it is masked to ****@****.", "text": "-Define the masking logic depending on the rules that you want to enforce. In this example, either the ADMIN or CUSTOMER group profiles can see the entire email address; otherwise, it is masked to ****@****.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/753", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 75, "bbox": {"l": 150.79855346679688, "t": 627.508056640625, "r": 314.766845703125, "b": 616.8975219726562, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 37]}], "orig": "Select the Enabled option. Click OK .", "text": "Select the Enabled option. Click OK ."}, {"self_ref": "#/texts/754", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 75, "bbox": {"l": 135.8140106201172, "t": 187.234619140625, "r": 395.16131591796875, "b": 177.95709228515625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 57]}], "orig": "Figure 4-34 Defining a column mask on the CUSTOMERS table", "text": "Figure 4-34 Defining a column mask on the CUSTOMERS table"}, {"self_ref": "#/texts/755", "parent": {"cref": "#/groups/92"}, "children": [], "label": "list_item", "prov": [{"page_no": 75, "bbox": {"l": 136.26536560058594, "t": 161.1632080078125, "r": 522.032958984375, "b": 150.96624755859375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 84]}], "orig": "3. Repeat steps 1 on page 58 and 2 to create column masks for the following columns:", "text": "3. Repeat steps 1 on page 58 and 2 to create column masks for the following columns:", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/756", "parent": {"cref": "#/groups/92"}, "children": [], "label": "list_item", "prov": [{"page_no": 75, "bbox": {"l": 151.44378662109375, "t": 144.8258056640625, "r": 381.7741394042969, "b": 134.0785675048828, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 34]}], "orig": "-MASK_DRIVERS_LICENSE_ON_CUSTOMERS", "text": "-MASK_DRIVERS_LICENSE_ON_CUSTOMERS", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/757", "parent": {"cref": "#/groups/92"}, "children": [], "label": "list_item", "prov": [{"page_no": 75, "bbox": {"l": 151.36248779296875, "t": 132.481201171875, "r": 335.7012023925781, "b": 122.0787582397461, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 27]}], "orig": "-MASK_LOGIN_ID_ON_CUSTOMERS", "text": "-MASK_LOGIN_ID_ON_CUSTOMERS", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/758", "parent": {"cref": "#/groups/92"}, "children": [], "label": "list_item", "prov": [{"page_no": 75, "bbox": {"l": 151.4147491455078, "t": 120.55975341796875, "r": 446.63970947265625, "b": 110.07894897460938, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 43]}], "orig": "-MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS", "text": "-MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/759", "parent": {"cref": "#/groups/92"}, "children": [], "label": "list_item", "prov": [{"page_no": 75, "bbox": {"l": 151.27947998046875, "t": 108.9068603515625, "r": 379.591064453125, "b": 98.07913970947266, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 32]}], "orig": "-MASK_ACCOUNT_NUMBER_ON_ACCOUNTS", "text": "-MASK_ACCOUNT_NUMBER_ON_ACCOUNTS", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/760", "parent": {"cref": "#/groups/92"}, "children": [], "label": "list_item", "prov": [{"page_no": 75, "bbox": {"l": 151.41717529296875, "t": 96.97442626953125, "r": 397.17034912109375, "b": 86.07933044433594, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 36]}], "orig": "-MASK_SECURITY_QUESTION_ON_CUSTOMERS", "text": "-MASK_SECURITY_QUESTION_ON_CUSTOMERS", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/761", "parent": {"cref": "#/groups/92"}, "children": [], "label": "list_item", "prov": [{"page_no": 75, "bbox": {"l": 151.33258056640625, "t": 84.5498046875, "r": 322.7781066894531, "b": 74.07952117919922, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 25]}], "orig": "-MASK_TAX_ID_ON_CUSTOMERS", "text": "-MASK_TAX_ID_ON_CUSTOMERS", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/762", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 75, "bbox": {"l": 214.23280334472656, "t": 37.26531982421875, "r": 523.5935668945312, "b": 28.0201416015625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 70]}], "orig": "Chapter 4. Implementing Row and Column Access Control: Banking example", "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"self_ref": "#/texts/763", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 75, "bbox": {"l": 535.6565551757812, "t": 37.8089599609375, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "59", "text": "59"}, {"self_ref": "#/texts/764", "parent": {"cref": "#/groups/93"}, "children": [], "label": "list_item", "prov": [{"page_no": 76, "bbox": {"l": 135.86886596679688, "t": 721.5939331054688, "r": 525.707275390625, "b": 699.1376342773438, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 166]}], "orig": "4. To verify that the column masks are enabled, from System i Navigator, click Column Masks , as shown in Figure 4-35. The seven column masks are created and enabled.", "text": "4. To verify that the column masks are enabled, from System i Navigator, click Column Masks , as shown in Figure 4-35. The seven column masks are created and enabled.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/765", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 76, "bbox": {"l": 64.10326385498047, "t": 608.58935546875, "r": 285.1827087402344, "b": 599.2903442382812, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 47]}], "orig": "Figure 4-35 List of column masks on BANK_SCHEMA", "text": "Figure 4-35 List of column masks on BANK_SCHEMA"}, {"self_ref": "#/texts/766", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 76, "bbox": {"l": 64.0513916015625, "t": 579.4058837890625, "r": 433.7906494140625, "b": 566.2802124023438, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 59]}], "orig": "4.3.7 Restricting the inserting and updating of masked data", "text": "4.3.7 Restricting the inserting and updating of masked data", "level": 1}, {"self_ref": "#/texts/767", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 76, "bbox": {"l": 135.85455322265625, "t": 553.2467651367188, "r": 544.9268798828125, "b": 507.0654602050781, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 270]}], "orig": "This step defines the check constraints that support the column masks to make sure that on INSERTS or UPDATES, data is not written with a masked value. For more information about the propagation of masked data, see 6.8, \"Avoiding propagation of masked data\" on page 108.", "text": "This step defines the check constraints that support the column masks to make sure that on INSERTS or UPDATES, data is not written with a masked value. For more information about the propagation of masked data, see 6.8, \"Avoiding propagation of masked data\" on page 108."}, {"self_ref": "#/texts/768", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 76, "bbox": {"l": 136.1099090576172, "t": 495.5037841796875, "r": 266.8606872558594, "b": 484.9318542480469, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 29]}], "orig": "Complete the following steps:", "text": "Complete the following steps:", "level": 1}, {"self_ref": "#/texts/769", "parent": {"cref": "#/groups/94"}, "children": [], "label": "list_item", "prov": [{"page_no": 76, "bbox": {"l": 136.3522491455078, "t": 478.90118408203125, "r": 547.1956787109375, "b": 444.3074951171875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 206]}], "orig": "1. Create a check constraint on the column CUSTOMER_EMAIL in the CUSTOMERS table. From the navigation pane of System i Navigator, right-click the CUSTOMERS table and select Definition , as shown Figure 4-36", "text": "1. Create a check constraint on the column CUSTOMER_EMAIL in the CUSTOMERS table. From the navigation pane of System i Navigator, right-click the CUSTOMERS table and select Definition , as shown Figure 4-36", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/770", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 76, "bbox": {"l": 135.78135681152344, "t": 320.5633544921875, "r": 334.3720397949219, "b": 311.1509704589844, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 45]}], "orig": "Figure 4-36 Definition of the CUSTOMERS table", "text": "Figure 4-36 Definition of the CUSTOMERS table"}, {"self_ref": "#/texts/771", "parent": {"cref": "#/groups/95"}, "children": [], "label": "list_item", "prov": [{"page_no": 76, "bbox": {"l": 135.75648498535156, "t": 294.6141662597656, "r": 547.7396240234375, "b": 272.3358154296875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 113]}], "orig": "2. From the CUSTOMERS definition window, click the Check Constraints tab and click Add , as shown in Figure 4-37.", "text": "2. From the CUSTOMERS definition window, click the Check Constraints tab and click Add , as shown in Figure 4-37.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/772", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 76, "bbox": {"l": 64.25939178466797, "t": 189.07855224609375, "r": 221.74893188476562, "b": 179.8170928955078, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 37]}], "orig": "Figure 4-37 Adding a check constraint", "text": "Figure 4-37 Adding a check constraint"}, {"self_ref": "#/texts/773", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 76, "bbox": {"l": 64.13931274414062, "t": 37.62353515625, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "60", "text": "60"}, {"self_ref": "#/texts/774", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 76, "bbox": {"l": 93.2583236694336, "t": 37.2972412109375, "r": 334.4214172363281, "b": 28.05963134765625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/775", "parent": {"cref": "#/groups/96"}, "children": [], "label": "list_item", "prov": [{"page_no": 77, "bbox": {"l": 136.19448852539062, "t": 721.3970336914062, "r": 515.8154907226562, "b": 699.0084228515625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 96]}], "orig": "3. The New Check Constraint window opens, as shown in Figure 4-38. Complete the following steps:", "text": "3. The New Check Constraint window opens, as shown in Figure 4-38. Complete the following steps:", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/776", "parent": {"cref": "#/groups/96"}, "children": [], "label": "list_item", "prov": [{"page_no": 77, "bbox": {"l": 150.47923278808594, "t": 692.5963134765625, "r": 344.06817626953125, "b": 682.29833984375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 36]}], "orig": "a. Select the CUSTOMER_EMAIL column.", "text": "a. Select the CUSTOMER_EMAIL column.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/777", "parent": {"cref": "#/groups/96"}, "children": [], "label": "list_item", "prov": [{"page_no": 77, "bbox": {"l": 150.597412109375, "t": 675.5870361328125, "r": 541.599853515625, "b": 653.2589721679688, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 137]}], "orig": "b. Enter the check constraint condition. In this example, specify CUSTOMER_EMAIL to be different from ****@****, which is the mask value.", "text": "b. Enter the check constraint condition. In this example, specify CUSTOMER_EMAIL to be different from ****@****, which is the mask value.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/778", "parent": {"cref": "#/groups/96"}, "children": [], "label": "list_item", "prov": [{"page_no": 77, "bbox": {"l": 150.6071319580078, "t": 646.5643920898438, "r": 511.9270324707031, "b": 636.1400146484375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 78]}], "orig": "c. Select the On update violation, preserve column value option and click OK .", "text": "c. Select the On update violation, preserve column value option and click OK .", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/779", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 77, "bbox": {"l": 64.2974853515625, "t": 138.75482177734375, "r": 362.4355773925781, "b": 129.24169921875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 68]}], "orig": "Figure 4-38 Specifying a new check constraint on the CUSTOMERS table", "text": "Figure 4-38 Specifying a new check constraint on the CUSTOMERS table"}, {"self_ref": "#/texts/780", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 77, "bbox": {"l": 214.33963012695312, "t": 37.3177490234375, "r": 523.5935668945312, "b": 27.99407958984375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 70]}], "orig": "Chapter 4. Implementing Row and Column Access Control: Banking example", "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"self_ref": "#/texts/781", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 77, "bbox": {"l": 535.6194458007812, "t": 37.740478515625, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "61", "text": "61"}, {"self_ref": "#/texts/782", "parent": {"cref": "#/groups/97"}, "children": [], "label": "list_item", "prov": [{"page_no": 78, "bbox": {"l": 135.84481811523438, "t": 721.4361572265625, "r": 535.5555419921875, "b": 699.0802612304688, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 159]}], "orig": "4. Figure 4-39 shows that there is now a check constraint on the CUSTOMERS table that prevents any masked data from being updated to the CUSTOMER_EMAIL column.", "text": "4. Figure 4-39 shows that there is now a check constraint on the CUSTOMERS table that prevents any masked data from being updated to the CUSTOMER_EMAIL column.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/783", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 78, "bbox": {"l": 64.23225402832031, "t": 405.4078674316406, "r": 294.2088317871094, "b": 396.0008544921875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 51]}], "orig": "Figure 4-39 Check constraint on the CUSTOMERS table", "text": "Figure 4-39 Check constraint on the CUSTOMERS table"}, {"self_ref": "#/texts/784", "parent": {"cref": "#/groups/98"}, "children": [], "label": "list_item", "prov": [{"page_no": 78, "bbox": {"l": 136.3284149169922, "t": 379.3380432128906, "r": 547.2733154296875, "b": 344.85784912109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 201]}], "orig": "5. Create all the other check constraints that are associated to each of the masks on the CUSTOMERS table. After this is done, these constraints should look like the ones that are shown in Figure 4-40.", "text": "5. Create all the other check constraints that are associated to each of the masks on the CUSTOMERS table. After this is done, these constraints should look like the ones that are shown in Figure 4-40.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/785", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 78, "bbox": {"l": 64.24510955810547, "t": 189.46038818359375, "r": 323.0049743652344, "b": 180.01788330078125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 60]}], "orig": "Figure 4-40 List of check constraints on the CUSTOMERS table", "text": "Figure 4-40 List of check constraints on the CUSTOMERS table"}, {"self_ref": "#/texts/786", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 78, "bbox": {"l": 64.20623016357422, "t": 37.66107177734375, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "62", "text": "62"}, {"self_ref": "#/texts/787", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 78, "bbox": {"l": 93.26509857177734, "t": 37.33514404296875, "r": 334.4214172363281, "b": 28.060546875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/788", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 79, "bbox": {"l": 64.11198425292969, "t": 721.6455078125, "r": 360.40594482421875, "b": 708.3018798828125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 46]}], "orig": "4.3.8 Activating row and column access control", "text": "4.3.8 Activating row and column access control", "level": 1}, {"self_ref": "#/texts/789", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 79, "bbox": {"l": 136.0153350830078, "t": 695.3901977539062, "r": 516.2232055664062, "b": 673.103271484375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 101]}], "orig": "You are now ready to activate RCAC on all three tables in this example. Complete the following steps:", "text": "You are now ready to activate RCAC on all three tables in this example. Complete the following steps:"}, {"self_ref": "#/texts/790", "parent": {"cref": "#/groups/99"}, "children": [], "label": "list_item", "prov": [{"page_no": 79, "bbox": {"l": 136.8000030517578, "t": 666.022705078125, "r": 542.7099609375, "b": 631.479736328125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 239]}], "orig": "1. Start by enabling RCAC on the CUSTOMERS table. From System i Navigator, right-click the CUSTOMERS table and select Definition . As shown in Figure 4-41, make sure that you select Row access control and Column access control . Click OK .", "text": "1. Start by enabling RCAC on the CUSTOMERS table. From System i Navigator, right-click the CUSTOMERS table and select Definition . As shown in Figure 4-41, make sure that you select Row access control and Column access control . Click OK .", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/791", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 79, "bbox": {"l": 136.109375, "t": 456.8214111328125, "r": 361.76947021484375, "b": 447.28289794921875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 48]}], "orig": "Figure 4-41 Enabling RCAC on the CUSTOMERS table", "text": "Figure 4-41 Enabling RCAC on the CUSTOMERS table"}, {"self_ref": "#/texts/792", "parent": {"cref": "#/groups/100"}, "children": [], "label": "list_item", "prov": [{"page_no": 79, "bbox": {"l": 135.86691284179688, "t": 430.72796630859375, "r": 537.477783203125, "b": 396.5186462402344, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 198]}], "orig": "2. Enable RCAC on the ACCOUNTS table. Right-click the ACCOUNTS table and select Definition . As shown Figure 4-42, make sure that you select Row access control and Column access control . Click OK .", "text": "2. Enable RCAC on the ACCOUNTS table. Right-click the ACCOUNTS table and select Definition . As shown Figure 4-42, make sure that you select Row access control and Column access control . Click OK .", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/793", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 79, "bbox": {"l": 136.17703247070312, "t": 216.01983642578125, "r": 318.5569763183594, "b": 206.22412109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 37]}], "orig": "Figure 4-42 Enabling RCAC on ACCOUNTS", "text": "Figure 4-42 Enabling RCAC on ACCOUNTS"}, {"self_ref": "#/texts/794", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 79, "bbox": {"l": 214.27894592285156, "t": 37.2763671875, "r": 523.5935668945312, "b": 27.94580078125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 70]}], "orig": "Chapter 4. Implementing Row and Column Access Control: Banking example", "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"self_ref": "#/texts/795", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 79, "bbox": {"l": 535.566162109375, "t": 37.69140625, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "63", "text": "63"}, {"self_ref": "#/texts/796", "parent": {"cref": "#/groups/101"}, "children": [], "label": "list_item", "prov": [{"page_no": 80, "bbox": {"l": 136.11422729492188, "t": 721.4954223632812, "r": 544.6798706054688, "b": 687.2786865234375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 183]}], "orig": "3. Enable RCAC on the TRANSACTIONS table. Right-click the TRANSACTIONS table and select Definition . As shown in Figure 4-43, make sure that you select Row access control . Click OK .", "text": "3. Enable RCAC on the TRANSACTIONS table. Right-click the TRANSACTIONS table and select Definition . As shown in Figure 4-43, make sure that you select Row access control . Click OK .", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/797", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 80, "bbox": {"l": 136.18548583984375, "t": 512.703125, "r": 338.2870788574219, "b": 502.91986083984375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 41]}], "orig": "Figure 4-43 Enabling RCAC on TRANSACTIONS", "text": "Figure 4-43 Enabling RCAC on TRANSACTIONS"}, {"self_ref": "#/texts/798", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 80, "bbox": {"l": 64.14816284179688, "t": 484.41094970703125, "r": 271.11932373046875, "b": 471.0173034667969, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 31]}], "orig": "4.3.9 Reviewing row permissions", "text": "4.3.9 Reviewing row permissions", "level": 1}, {"self_ref": "#/texts/799", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 80, "bbox": {"l": 135.9355010986328, "t": 458.0364990234375, "r": 535.83544921875, "b": 435.63848876953125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 96]}], "orig": "This section displays all the row permissions after enabling RCAC. Complete the following steps:", "text": "This section displays all the row permissions after enabling RCAC. Complete the following steps:"}, {"self_ref": "#/texts/800", "parent": {"cref": "#/groups/102"}, "children": [], "label": "list_item", "prov": [{"page_no": 80, "bbox": {"l": 136.80099487304688, "t": 428.6591491699219, "r": 533.23095703125, "b": 394.4778747558594, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 174]}], "orig": "1. From System i Navigator, click Row Permissions , as shown in Figure 4-44. Three additional Row Permissions are added (QIBM_DEFAULT*). There is one per each row permission.", "text": "1. From System i Navigator, click Row Permissions , as shown in Figure 4-44. Three additional Row Permissions are added (QIBM_DEFAULT*). There is one per each row permission.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/801", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 80, "bbox": {"l": 64.30838775634766, "t": 207.906982421875, "r": 271.8835754394531, "b": 198.54144287109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 47]}], "orig": "Figure 4-44 Row permissions after enabling RCAC", "text": "Figure 4-44 Row permissions after enabling RCAC"}, {"self_ref": "#/texts/802", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 80, "bbox": {"l": 64.15714263916016, "t": 37.66644287109375, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "64", "text": "64"}, {"self_ref": "#/texts/803", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 80, "bbox": {"l": 93.25228881835938, "t": 37.32940673828125, "r": 334.4214172363281, "b": 28.04449462890625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/804", "parent": {"cref": "#/groups/103"}, "children": [], "label": "list_item", "prov": [{"page_no": 81, "bbox": {"l": 135.80770874023438, "t": 721.4266357421875, "r": 544.3787231445312, "b": 699.2303466796875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 121]}], "orig": "2. Look at one of the row permission definitions by right-clicking it and selecting Definition , as shown in Figure 4-45.", "text": "2. Look at one of the row permission definitions by right-clicking it and selecting Definition , as shown in Figure 4-45.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/805", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 81, "bbox": {"l": 135.82278442382812, "t": 550.4591064453125, "r": 328.7805480957031, "b": 541.2850341796875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 47]}], "orig": "Figure 4-45 Selecting row permission definition", "text": "Figure 4-45 Selecting row permission definition"}, {"self_ref": "#/texts/806", "parent": {"cref": "#/groups/104"}, "children": [], "label": "list_item", "prov": [{"page_no": 81, "bbox": {"l": 136.20486450195312, "t": 524.6837768554688, "r": 546.0803833007812, "b": 478.66326904296875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 344]}], "orig": "3. A window opens, as shown in Figure 4-46. Take note of the nonsensical search condition (0=1) of the QIBM_DEFAULT row permission. This permission is ORed with all of the others and it ensures that if someone does not meet any of the criteria from the row permission then this condition is tested, and because it is false the access is denied.", "text": "3. A window opens, as shown in Figure 4-46. Take note of the nonsensical search condition (0=1) of the QIBM_DEFAULT row permission. This permission is ORed with all of the others and it ensures that if someone does not meet any of the criteria from the row permission then this condition is tested, and because it is false the access is denied.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/807", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 81, "bbox": {"l": 64.38289642333984, "t": 193.93914794921875, "r": 342.9576110839844, "b": 184.7705078125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 63]}], "orig": "Figure 4-46 Search condition of the QIBM_DEFAULT row permission", "text": "Figure 4-46 Search condition of the QIBM_DEFAULT row permission"}, {"self_ref": "#/texts/808", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 81, "bbox": {"l": 214.26358032226562, "t": 37.2916259765625, "r": 523.5935668945312, "b": 27.94195556640625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 70]}], "orig": "Chapter 4. Implementing Row and Column Access Control: Banking example", "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"self_ref": "#/texts/809", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 81, "bbox": {"l": 535.6220703125, "t": 37.70361328125, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "65", "text": "65"}, {"self_ref": "#/texts/810", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 82, "bbox": {"l": 64.1228256225586, "t": 721.7398071289062, "r": 347.13360595703125, "b": 708.2988891601562, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 42]}], "orig": "4.3.10 Demonstrating data access with RCAC", "text": "4.3.10 Demonstrating data access with RCAC", "level": 1}, {"self_ref": "#/texts/811", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 82, "bbox": {"l": 135.73379516601562, "t": 695.3556518554688, "r": 547.2556762695312, "b": 672.9600830078125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 148]}], "orig": "You are now ready to test the RCAC definitions. Run the following SQL statements with each type of user (DBE, SECURITY, TELLER, ADMIN, and WEBUSER):", "text": "You are now ready to test the RCAC definitions. Run the following SQL statements with each type of user (DBE, SECURITY, TELLER, ADMIN, and WEBUSER):"}, {"self_ref": "#/texts/812", "parent": {"cref": "#/groups/105"}, "children": [], "label": "list_item", "prov": [{"page_no": 82, "bbox": {"l": 135.537353515625, "t": 666.2977294921875, "r": 390.8248596191406, "b": 656.0548095703125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 65]}], "orig": "GLYPH A SELECT statement that returns the SESSION_USER.", "text": "GLYPH A SELECT statement that returns the SESSION_USER.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/813", "parent": {"cref": "#/groups/105"}, "children": [], "label": "list_item", "prov": [{"page_no": 82, "bbox": {"l": 135.6352081298828, "t": 649.3411254882812, "r": 543.1919555664062, "b": 627.279296875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 131]}], "orig": "GLYPH A SELECT statement that counts the customers from the CUSTOMER table. There are 90 customers in the CUSTOMER table.", "text": "GLYPH A SELECT statement that counts the customers from the CUSTOMER table. There are 90 customers in the CUSTOMER table.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/814", "parent": {"cref": "#/groups/105"}, "children": [], "label": "list_item", "prov": [{"page_no": 82, "bbox": {"l": 135.70932006835938, "t": 620.5113525390625, "r": 543.6400756835938, "b": 598.2001953125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 126]}], "orig": "GLYPH A simple SELECT statement that returns the following output from the CUSTOMERS table ordered by customer_name:", "text": "GLYPH A simple SELECT statement that returns the following output from the CUSTOMERS table ordered by customer_name:", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/815", "parent": {"cref": "#/groups/105"}, "children": [], "label": "list_item", "prov": [{"page_no": 82, "bbox": {"l": 151.35504150390625, "t": 591.09033203125, "r": 227.99673461914062, "b": 581.2601318359375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 22]}], "orig": "-c u s t o m e r _ i d", "text": "-c u s t o m e r _ i d", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/816", "parent": {"cref": "#/groups/105"}, "children": [], "label": "list_item", "prov": [{"page_no": 82, "bbox": {"l": 151.4617462158203, "t": 578.634765625, "r": 237.2466278076172, "b": 569.2603149414062, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 14]}], "orig": "-customer_name", "text": "-customer_name", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/817", "parent": {"cref": "#/groups/105"}, "children": [], "label": "list_item", "prov": [{"page_no": 82, "bbox": {"l": 151.39413452148438, "t": 567.0379638671875, "r": 236.13906860351562, "b": 557.260498046875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 15]}], "orig": "-customer_email", "text": "-customer_email", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/818", "parent": {"cref": "#/groups/105"}, "children": [], "label": "list_item", "prov": [{"page_no": 82, "bbox": {"l": 151.38189697265625, "t": 554.8548583984375, "r": 246.89581298828125, "b": 545.2606811523438, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 30]}], "orig": "-c u s t o m e r _ t a x _ i d", "text": "-c u s t o m e r _ t a x _ i d", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/819", "parent": {"cref": "#/groups/105"}, "children": [], "label": "list_item", "prov": [{"page_no": 82, "bbox": {"l": 151.4001007080078, "t": 543.35791015625, "r": 318.3563537597656, "b": 533.2608642578125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 32]}], "orig": "-customer_drivers_license_number", "text": "-customer_drivers_license_number", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/820", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 82, "bbox": {"l": 136.71405029296875, "t": 517.52392578125, "r": 357.2292175292969, "b": 505.5359802246094, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 36]}], "orig": "Data access for a DBE user with RCAC", "text": "Data access for a DBE user with RCAC", "level": 1}, {"self_ref": "#/texts/821", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 82, "bbox": {"l": 136.20758056640625, "t": 502.6961364746094, "r": 394.5498352050781, "b": 492.2782897949219, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 57]}], "orig": "To test a DBE (MCAIN) user, complete the following steps:", "text": "To test a DBE (MCAIN) user, complete the following steps:"}, {"self_ref": "#/texts/822", "parent": {"cref": "#/groups/106"}, "children": [], "label": "list_item", "prov": [{"page_no": 82, "bbox": {"l": 136.73385620117188, "t": 485.1209411621094, "r": 531.4830322265625, "b": 463.1365966796875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 152]}], "orig": "1. Confirm that the user is the user of the session by running the first SQL statement, as shown in Figure 4-47. In this example, MCAIN is the DBE user.", "text": "1. Confirm that the user is the user of the session by running the first SQL statement, as shown in Figure 4-47. In this example, MCAIN is the DBE user.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/823", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 82, "bbox": {"l": 136.308349609375, "t": 351.44464111328125, "r": 262.7190856933594, "b": 341.9928894042969, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 28]}], "orig": "Figure 4-47 DBE session user", "text": "Figure 4-47 DBE session user"}, {"self_ref": "#/texts/824", "parent": {"cref": "#/groups/107"}, "children": [], "label": "list_item", "prov": [{"page_no": 82, "bbox": {"l": 135.81915283203125, "t": 325.3260192871094, "r": 503.1596374511719, "b": 314.73345947265625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 78]}], "orig": "2. The number of rows that the DBE user MCAIN can see is shown in Figure 4-48.", "text": "2. The number of rows that the DBE user MCAIN can see is shown in Figure 4-48.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/825", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 82, "bbox": {"l": 136.09771728515625, "t": 165.4344482421875, "r": 451.9573974609375, "b": 155.87709045410156, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 71]}], "orig": "Figure 4-48 Number of rows that DBE user can see in the CUSTOMERS table", "text": "Figure 4-48 Number of rows that DBE user can see in the CUSTOMERS table"}, {"self_ref": "#/texts/826", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 82, "bbox": {"l": 64.22357940673828, "t": 37.54156494140625, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "66", "text": "66"}, {"self_ref": "#/texts/827", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 82, "bbox": {"l": 93.37715148925781, "t": 37.31842041015625, "r": 334.4214172363281, "b": 28.0130615234375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/828", "parent": {"cref": "#/groups/108"}, "children": [], "label": "list_item", "prov": [{"page_no": 83, "bbox": {"l": 136.20147705078125, "t": 721.3931884765625, "r": 547.291015625, "b": 687.2783203125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 201]}], "orig": "3. The result of the third SQL statement is shown in Figure 4-49. Note the masked columns. User MCAIN can see all the rows in the CUSTOMERS table, but there are some columns where the result is masked.", "text": "3. The result of the third SQL statement is shown in Figure 4-49. Note the masked columns. User MCAIN can see all the rows in the CUSTOMERS table, but there are some columns where the result is masked.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/829", "parent": {"cref": "#/body"}, "children": [], "label": "paragraph", "prov": [{"page_no": 83, "bbox": {"l": 64.37542724609375, "t": 322.11279296875, "r": 376.57159423828125, "b": 312.47698974609375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 73]}], "orig": "Figure 4-49 SQL statement that is run by the DBE user with masked columns", "text": "Figure 4-49 SQL statement that is run by the DBE user with masked columns"}, {"self_ref": "#/texts/830", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 83, "bbox": {"l": 136.4634246826172, "t": 296.45758056640625, "r": 382.60321044921875, "b": 283.8960876464844, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 39]}], "orig": "Data access for SECURITY user with RCAC", "text": "Data access for SECURITY user with RCAC", "level": 1}, {"self_ref": "#/texts/831", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 83, "bbox": {"l": 136.3077392578125, "t": 280.8298645019531, "r": 382.8707580566406, "b": 270.501953125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "To test a SECURITY user, complete the following steps:", "text": "To test a SECURITY user, complete the following steps:"}, {"self_ref": "#/texts/832", "parent": {"cref": "#/groups/109"}, "children": [], "label": "list_item", "prov": [{"page_no": 83, "bbox": {"l": 136.8000030517578, "t": 264.041259765625, "r": 531.4830322265625, "b": 241.58203125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 163]}], "orig": "1. Confirm that the user is the user of the session by running the first SQL statement, as shown in Figure 4-50. In this example, SECURITY is the security officer.", "text": "1. Confirm that the user is the user of the session by running the first SQL statement, as shown in Figure 4-50. In this example, SECURITY is the security officer.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/833", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 83, "bbox": {"l": 136.09732055664062, "t": 104.47393798828125, "r": 289.5880432128906, "b": 95.172119140625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 33]}], "orig": "Figure 4-50 SECURITY session user", "text": "Figure 4-50 SECURITY session user"}, {"self_ref": "#/texts/834", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 83, "bbox": {"l": 214.31561279296875, "t": 37.20220947265625, "r": 523.5935668945312, "b": 27.99371337890625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 70]}], "orig": "Chapter 4. Implementing Row and Column Access Control: Banking example", "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"self_ref": "#/texts/835", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 83, "bbox": {"l": 535.5758666992188, "t": 37.74444580078125, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "67", "text": "67"}, {"self_ref": "#/texts/836", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 84, "bbox": {"l": 64.20339965820312, "t": 37.572021484375, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "68", "text": "68"}, {"self_ref": "#/texts/837", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 84, "bbox": {"l": 93.34625244140625, "t": 37.291259765625, "r": 334.4214172363281, "b": 28.0338134765625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/838", "parent": {"cref": "#/groups/110"}, "children": [], "label": "list_item", "prov": [{"page_no": 84, "bbox": {"l": 135.87147521972656, "t": 721.371826171875, "r": 547.1937866210938, "b": 698.9642944335938, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 152]}], "orig": "2. The number of rows in the CUSTOMERS table that the security officer can see is shown in Figure 4-51. The security officer cannot see any data at all.", "text": "2. The number of rows in the CUSTOMERS table that the security officer can see is shown in Figure 4-51. The security officer cannot see any data at all.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/839", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 84, "bbox": {"l": 136.1445770263672, "t": 563.9288330078125, "r": 486.7213439941406, "b": 554.88623046875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 83]}], "orig": "Figure 4-51 Number of rows that the security officer can see in the CUSTOMERS table", "text": "Figure 4-51 Number of rows that the security officer can see in the CUSTOMERS table"}, {"self_ref": "#/texts/840", "parent": {"cref": "#/groups/111"}, "children": [], "label": "list_item", "prov": [{"page_no": 84, "bbox": {"l": 136.01255798339844, "t": 537.9552001953125, "r": 542.7387084960938, "b": 516.1114501953125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 126]}], "orig": "3. The result of the third SQL statement is shown in Figure 4-52. Note the empty set that is returned to the security officer.", "text": "3. The result of the third SQL statement is shown in Figure 4-52. Note the empty set that is returned to the security officer.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/841", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 84, "bbox": {"l": 64.1894760131836, "t": 351.4267883300781, "r": 362.28131103515625, "b": 341.9969787597656, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 71]}], "orig": "Figure 4-52 SQL statement that is run by the SECURITY user - no results", "text": "Figure 4-52 SQL statement that is run by the SECURITY user - no results"}, {"self_ref": "#/texts/842", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 84, "bbox": {"l": 136.5155792236328, "t": 325.609619140625, "r": 368.6448059082031, "b": 313.4159851074219, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 37]}], "orig": "Data access for TELLER user with RCAC", "text": "Data access for TELLER user with RCAC", "level": 1}, {"self_ref": "#/texts/843", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 84, "bbox": {"l": 136.20401000976562, "t": 310.2610168457031, "r": 427.7564697265625, "b": 299.6714782714844, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 64]}], "orig": "To test a Teller (TQSPENCER) user, complete the following steps:", "text": "To test a Teller (TQSPENCER) user, complete the following steps:"}, {"self_ref": "#/texts/844", "parent": {"cref": "#/groups/112"}, "children": [], "label": "list_item", "prov": [{"page_no": 84, "bbox": {"l": 136.66238403320312, "t": 293.5404052734375, "r": 530.67822265625, "b": 271.08343505859375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 164]}], "orig": "1. Confirm that the TELLER user is the user of the session by running the first SQL statement, as shown in Figure 4-53. In this example, TQSPENCER is a TELLER user.", "text": "1. Confirm that the TELLER user is the user of the session by running the first SQL statement, as shown in Figure 4-53. In this example, TQSPENCER is a TELLER user.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/845", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 84, "bbox": {"l": 136.1230010986328, "t": 119.848388671875, "r": 278.20037841796875, "b": 110.4892578125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 31]}], "orig": "Figure 4-53 TELLER session user", "text": "Figure 4-53 TELLER session user"}, {"self_ref": "#/texts/846", "parent": {"cref": "#/groups/113"}, "children": [], "label": "list_item", "prov": [{"page_no": 85, "bbox": {"l": 135.8011474609375, "t": 721.39990234375, "r": 547.2401733398438, "b": 699.0465087890625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 136]}], "orig": "2. The number of rows in the CUSTOMERS table that the TELLER user can see is shown in Figure 4-54. The TELLER user can see all the rows.", "text": "2. The number of rows in the CUSTOMERS table that the TELLER user can see is shown in Figure 4-54. The TELLER user can see all the rows.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/847", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 85, "bbox": {"l": 135.62548828125, "t": 570.638427734375, "r": 482.5060729980469, "b": 561.177001953125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 78]}], "orig": "Figure 4-54 Number of rows that the TELLER user can see in the CUSTOMERS table", "text": "Figure 4-54 Number of rows that the TELLER user can see in the CUSTOMERS table"}, {"self_ref": "#/texts/848", "parent": {"cref": "#/groups/114"}, "children": [], "label": "list_item", "prov": [{"page_no": 85, "bbox": {"l": 136.01345825195312, "t": 544.7952880859375, "r": 547.2914428710938, "b": 510.33868408203125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 195]}], "orig": "3. The result of the third SQL statement is shown in Figure 4-55. Note the masked columns. The TELLER user, TQSPENSER, can see all the rows, but there are some columns where the result is masked.", "text": "3. The result of the third SQL statement is shown in Figure 4-55. Note the masked columns. The TELLER user, TQSPENSER, can see all the rows, but there are some columns where the result is masked.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/849", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 85, "bbox": {"l": 64.17078399658203, "t": 119.83746337890625, "r": 391.8590393066406, "b": 110.51699829101562, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 76]}], "orig": "Figure 4-55 SQL statement that is run by the TELLER user with masked columns", "text": "Figure 4-55 SQL statement that is run by the TELLER user with masked columns"}, {"self_ref": "#/texts/850", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 85, "bbox": {"l": 214.29336547851562, "t": 37.20977783203125, "r": 523.5935668945312, "b": 28.0645751953125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 70]}], "orig": "Chapter 4. Implementing Row and Column Access Control: Banking example", "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"self_ref": "#/texts/851", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 85, "bbox": {"l": 535.5740966796875, "t": 37.833740234375, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "69", "text": "69"}, {"self_ref": "#/texts/852", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 86, "bbox": {"l": 63.99982833862305, "t": 37.82769775390625, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "70", "text": "70"}, {"self_ref": "#/texts/853", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 86, "bbox": {"l": 93.3930892944336, "t": 37.30694580078125, "r": 334.4214172363281, "b": 28.03778076171875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/854", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 86, "bbox": {"l": 136.52813720703125, "t": 721.5006103515625, "r": 361.28759765625, "b": 709.5360107421875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 36]}], "orig": "Data access for ADMIN user with RCAC", "text": "Data access for ADMIN user with RCAC", "level": 1}, {"self_ref": "#/texts/855", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 86, "bbox": {"l": 136.3176727294922, "t": 706.8600463867188, "r": 448.129638671875, "b": 696.2783203125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 65]}], "orig": "To test an ADMIN (VGLUCCHESS) user, complete the following steps:", "text": "To test an ADMIN (VGLUCCHESS) user, complete the following steps:"}, {"self_ref": "#/texts/856", "parent": {"cref": "#/groups/115"}, "children": [], "label": "list_item", "prov": [{"page_no": 86, "bbox": {"l": 136.8000030517578, "t": 689.4435424804688, "r": 547.238525390625, "b": 666.9929809570312, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 164]}], "orig": "1. Confirm that the ADMIN user is the user of the session by running the first SQL statement, as shown in Figure 4-56. In this example, VGLUCCHESS is an ADMIN user.", "text": "1. Confirm that the ADMIN user is the user of the session by running the first SQL statement, as shown in Figure 4-56. In this example, VGLUCCHESS is an ADMIN user.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/857", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 86, "bbox": {"l": 136.44989013671875, "t": 567.1987915039062, "r": 274.6385803222656, "b": 557.8770141601562, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 30]}], "orig": "Figure 4-56 ADMIN session user", "text": "Figure 4-56 ADMIN session user"}, {"self_ref": "#/texts/858", "parent": {"cref": "#/groups/116"}, "children": [], "label": "list_item", "prov": [{"page_no": 86, "bbox": {"l": 135.9615936279297, "t": 541.28369140625, "r": 537.4520263671875, "b": 519.0384521484375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 111]}], "orig": "2. The number of rows that the ADMIN user can see is shown in Figure 4-57. The ADMIN user can see all the rows.", "text": "2. The number of rows that the ADMIN user can see is shown in Figure 4-57. The ADMIN user can see all the rows.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/859", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 86, "bbox": {"l": 136.13417053222656, "t": 420.7099304199219, "r": 457.3196716308594, "b": 411.4801025390625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 72]}], "orig": "Figure 4-57 Number of rows that the ADMIN can see in the CUSTOMERS table", "text": "Figure 4-57 Number of rows that the ADMIN can see in the CUSTOMERS table"}, {"self_ref": "#/texts/860", "parent": {"cref": "#/groups/117"}, "children": [], "label": "list_item", "prov": [{"page_no": 87, "bbox": {"l": 136.0950164794922, "t": 721.41357421875, "r": 524.1978759765625, "b": 699.2781372070312, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 94]}], "orig": "3. The result of the third SQL statement is shown in Figure 4-58. There are no masked columns.", "text": "3. The result of the third SQL statement is shown in Figure 4-58. There are no masked columns.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/861", "parent": {"cref": "#/body"}, "children": [], "label": "paragraph", "prov": [{"page_no": 87, "bbox": {"l": 64.27821350097656, "t": 313.4559020996094, "r": 386.91961669921875, "b": 303.9661865234375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 75]}], "orig": "Figure 4-58 SQL statement that is run by the ADMIN user - no masked columns", "text": "Figure 4-58 SQL statement that is run by the ADMIN user - no masked columns"}, {"self_ref": "#/texts/862", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 87, "bbox": {"l": 136.49583435058594, "t": 287.5277404785156, "r": 383.07720947265625, "b": 275.79608154296875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 38]}], "orig": "Data access for WEBUSER user with RCAC", "text": "Data access for WEBUSER user with RCAC", "level": 1}, {"self_ref": "#/texts/863", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 87, "bbox": {"l": 136.1496124267578, "t": 272.600830078125, "r": 527.5846557617188, "b": 250.45343017578125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 121]}], "orig": "To test a CUSTOMERS (WEBUSER) user that accesses the database by using the web application, complete the following steps:", "text": "To test a CUSTOMERS (WEBUSER) user that accesses the database by using the web application, complete the following steps:"}, {"self_ref": "#/texts/864", "parent": {"cref": "#/groups/118"}, "children": [], "label": "list_item", "prov": [{"page_no": 87, "bbox": {"l": 136.61180114746094, "t": 243.40185546875, "r": 531.4830322265625, "b": 220.994873046875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 157]}], "orig": "1. Confirm that the user is the user of the session by running the first SQL statement, as shown in Figure 4-59. In this example, WEBUSER is a CUSTOMER user.", "text": "1. Confirm that the user is the user of the session by running the first SQL statement, as shown in Figure 4-59. In this example, WEBUSER is a CUSTOMER user.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/865", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 87, "bbox": {"l": 136.1943817138672, "t": 116.01922607421875, "r": 289.5948791503906, "b": 106.53924560546875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 32]}], "orig": "Figure 4-59 WEBUSER session user", "text": "Figure 4-59 WEBUSER session user"}, {"self_ref": "#/texts/866", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 87, "bbox": {"l": 214.297607421875, "t": 37.20550537109375, "r": 523.5935668945312, "b": 28.0042724609375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 70]}], "orig": "Chapter 4. Implementing Row and Column Access Control: Banking example", "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"self_ref": "#/texts/867", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 87, "bbox": {"l": 535.4384765625, "t": 37.85540771484375, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "71", "text": "71"}, {"self_ref": "#/texts/868", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 88, "bbox": {"l": 63.95808410644531, "t": 37.7515869140625, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "72", "text": "72"}, {"self_ref": "#/texts/869", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 88, "bbox": {"l": 93.32298278808594, "t": 37.32470703125, "r": 334.4214172363281, "b": 27.989990234375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/870", "parent": {"cref": "#/groups/119"}, "children": [], "label": "list_item", "prov": [{"page_no": 88, "bbox": {"l": 135.97177124023438, "t": 721.4656372070312, "r": 547.2925415039062, "b": 686.7930908203125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 195]}], "orig": "2. A global variable (CUSTOMER_LOGIN_ID) is set by the web application and then is used to check the row permissions. Figure 4-60 shows setting the global variable by using the customer login ID.", "text": "2. A global variable (CUSTOMER_LOGIN_ID) is set by the web application and then is used to check the row permissions. Figure 4-60 shows setting the global variable by using the customer login ID.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/871", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 88, "bbox": {"l": 136.13768005371094, "t": 568.9273681640625, "r": 394.4398498535156, "b": 559.078369140625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 57]}], "orig": "Figure 4-60 Setting the global variable CUSTOMER_LOGIN_ID", "text": "Figure 4-60 Setting the global variable CUSTOMER_LOGIN_ID"}, {"self_ref": "#/texts/872", "parent": {"cref": "#/groups/120"}, "children": [], "label": "list_item", "prov": [{"page_no": 88, "bbox": {"l": 135.97732543945312, "t": 542.7027587890625, "r": 514.379638671875, "b": 520.39306640625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 127]}], "orig": "3. Verify that the global variable was set with the correct value by clicking the Global Variable tab, as shown in Figure 4-61.", "text": "3. Verify that the global variable was set with the correct value by clicking the Global Variable tab, as shown in Figure 4-61.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/873", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 88, "bbox": {"l": 136.13868713378906, "t": 270.6387939453125, "r": 320.7819519042969, "b": 261.212158203125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 45]}], "orig": "Figure 4-61 Viewing the global variable value", "text": "Figure 4-61 Viewing the global variable value"}, {"self_ref": "#/texts/874", "parent": {"cref": "#/groups/121"}, "children": [], "label": "list_item", "prov": [{"page_no": 88, "bbox": {"l": 135.78077697753906, "t": 244.6905517578125, "r": 541.2606811523438, "b": 222.26959228515625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 145]}], "orig": "4. The number of rows that the WEBUSER can see is shown in Figure 4-62. This user can see only the one row that belongs to his web-based user ID.", "text": "4. The number of rows that the WEBUSER can see is shown in Figure 4-62. This user can see only the one row that belongs to his web-based user ID.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/875", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 88, "bbox": {"l": 136.2648468017578, "t": 106.13018798828125, "r": 474.20855712890625, "b": 96.59709930419922, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 74]}], "orig": "Figure 4-62 Number of rows that the WEBUSER can see in the CUSTOMERS table", "text": "Figure 4-62 Number of rows that the WEBUSER can see in the CUSTOMERS table"}, {"self_ref": "#/texts/876", "parent": {"cref": "#/groups/122"}, "children": [], "label": "list_item", "prov": [{"page_no": 89, "bbox": {"l": 136.2493438720703, "t": 721.4386596679688, "r": 524.1978759765625, "b": 699.2781372070312, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 158]}], "orig": "5. The result of the third SQL statement is shown in Figure 4-63. There are no masked columns, and the user can see only one row, which is the user's own row.", "text": "5. The result of the third SQL statement is shown in Figure 4-63. There are no masked columns, and the user can see only one row, which is the user's own row.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/877", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 89, "bbox": {"l": 64.18749237060547, "t": 539.26708984375, "r": 368.2061462402344, "b": 529.97705078125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 68]}], "orig": "Figure 4-63 SQL statement that is run by WEBUSER - no masked columns", "text": "Figure 4-63 SQL statement that is run by WEBUSER - no masked columns"}, {"self_ref": "#/texts/878", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 89, "bbox": {"l": 136.10256958007812, "t": 513.8388671875, "r": 377.4743957519531, "b": 501.39599609375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 39]}], "orig": "Other examples of data access with RCAC", "text": "Other examples of data access with RCAC", "level": 1}, {"self_ref": "#/texts/879", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 89, "bbox": {"l": 135.91213989257812, "t": 498.0209655761719, "r": 512.9512939453125, "b": 475.9766540527344, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 114]}], "orig": "To run an SQL statement that lists all the accounts and current balance by customer, complete the following steps:", "text": "To run an SQL statement that lists all the accounts and current balance by customer, complete the following steps:"}, {"self_ref": "#/texts/880", "parent": {"cref": "#/groups/123"}, "children": [], "label": "list_item", "prov": [{"page_no": 89, "bbox": {"l": 136.5059051513672, "t": 469.5335998535156, "r": 535.2608642578125, "b": 435.0992736816406, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 167]}], "orig": "1. Run the SQL statement that is shown in Figure 4-64 using the WEBUSER user profile. The SQL statement has no WHERE clause, but the WEBUSER can see only his accounts.", "text": "1. Run the SQL statement that is shown in Figure 4-64 using the WEBUSER user profile. The SQL statement has no WHERE clause, but the WEBUSER can see only his accounts.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/881", "parent": {"cref": "#/body"}, "children": [], "label": "paragraph", "prov": [{"page_no": 89, "bbox": {"l": 136.13351440429688, "t": 247.94659423828125, "r": 520.2975463867188, "b": 238.66253662109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 91]}], "orig": "Figure 4-64 List of accounts and current balance by customer using the WEBUSER user profile", "text": "Figure 4-64 List of accounts and current balance by customer using the WEBUSER user profile"}, {"self_ref": "#/texts/882", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 89, "bbox": {"l": 214.31243896484375, "t": 37.21197509765625, "r": 523.5935668945312, "b": 27.9693603515625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 70]}], "orig": "Chapter 4. Implementing Row and Column Access Control: Banking example", "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"self_ref": "#/texts/883", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 89, "bbox": {"l": 535.3995361328125, "t": 37.65289306640625, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "73", "text": "73"}, {"self_ref": "#/texts/884", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 90, "bbox": {"l": 63.96171188354492, "t": 37.88232421875, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "74", "text": "74"}, {"self_ref": "#/texts/885", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 90, "bbox": {"l": 93.27671813964844, "t": 37.367431640625, "r": 334.4214172363281, "b": 27.97564697265625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/886", "parent": {"cref": "#/groups/124"}, "children": [], "label": "list_item", "prov": [{"page_no": 90, "bbox": {"l": 135.940185546875, "t": 721.3955078125, "r": 547.2566528320312, "b": 675.2788696289062, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 261]}], "orig": "2. Figure 4-65 shows running a more complex SQL statement that calculates transaction total by account for year and quarter. Run this statement using the WEBUSER profile. The SQL statement has no WHERE clause, but the WEBUSER user can see only his transactions.", "text": "2. Figure 4-65 shows running a more complex SQL statement that calculates transaction total by account for year and quarter. Run this statement using the WEBUSER profile. The SQL statement has no WHERE clause, but the WEBUSER user can see only his transactions.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/887", "parent": {"cref": "#/body"}, "children": [], "label": "paragraph", "prov": [{"page_no": 90, "bbox": {"l": 136.05810546875, "t": 290.78485107421875, "r": 535.08740234375, "b": 281.088623046875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 97]}], "orig": "Figure 4-65 Calculate transaction total by account for year and quarter using the WEBUSER profile", "text": "Figure 4-65 Calculate transaction total by account for year and quarter using the WEBUSER profile"}, {"self_ref": "#/texts/888", "parent": {"cref": "#/groups/125"}, "children": [], "label": "list_item", "prov": [{"page_no": 91, "bbox": {"l": 136.18202209472656, "t": 721.334716796875, "r": 547.2400512695312, "b": 687.2783203125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 236]}], "orig": "3. Run the same SQL statement that lists the accounts and current balance by customer, but use a TELLER user profile. The result of this SQL statement is shown in Figure 4-66. The TELLER user can see all the rows in the CUSTOMERS table.", "text": "3. Run the same SQL statement that lists the accounts and current balance by customer, but use a TELLER user profile. The result of this SQL statement is shown in Figure 4-66. The TELLER user can see all the rows in the CUSTOMERS table.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/889", "parent": {"cref": "#/body"}, "children": [], "label": "paragraph", "prov": [{"page_no": 91, "bbox": {"l": 136.2951202392578, "t": 299.4490966796875, "r": 501.49591064453125, "b": 289.8878173828125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 88]}], "orig": "Figure 4-66 List of accounts and current balance by customer using a TELLER user profile", "text": "Figure 4-66 List of accounts and current balance by customer using a TELLER user profile"}, {"self_ref": "#/texts/890", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 91, "bbox": {"l": 64.09226989746094, "t": 270.94171142578125, "r": 375.0662841796875, "b": 257.6646728515625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 47]}], "orig": "4.3.11 Query implementation with RCAC activated", "text": "4.3.11 Query implementation with RCAC activated", "level": 1}, {"self_ref": "#/texts/891", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 91, "bbox": {"l": 135.77622985839844, "t": 244.79510498046875, "r": 547.1669311523438, "b": 198.13531494140625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 280]}], "orig": "This section looks at some other interesting information that is related to RCAC by comparing the access plans of the same SQL statement without RCAC and with RCAC. This example uses Visual Explain and runs an SQL statement that lists the accounts and current balance by customer.", "text": "This section looks at some other interesting information that is related to RCAC by comparing the access plans of the same SQL statement without RCAC and with RCAC. This example uses Visual Explain and runs an SQL statement that lists the accounts and current balance by customer."}, {"self_ref": "#/texts/892", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 91, "bbox": {"l": 214.29998779296875, "t": 37.236572265625, "r": 523.5935668945312, "b": 27.95953369140625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 70]}], "orig": "Chapter 4. Implementing Row and Column Access Control: Banking example", "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"self_ref": "#/texts/893", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 91, "bbox": {"l": 535.4443969726562, "t": 37.81414794921875, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "75", "text": "75"}, {"self_ref": "#/texts/894", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 92, "bbox": {"l": 63.95058822631836, "t": 37.78094482421875, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "76", "text": "76"}, {"self_ref": "#/texts/895", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 92, "bbox": {"l": 93.32958221435547, "t": 37.35498046875, "r": 334.4214172363281, "b": 28.02093505859375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/896", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 92, "bbox": {"l": 136.1143798828125, "t": 721.446044921875, "r": 266.8606872558594, "b": 710.7125244140625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 29]}], "orig": "Complete the following steps:", "text": "Complete the following steps:", "level": 1}, {"self_ref": "#/texts/897", "parent": {"cref": "#/groups/126"}, "children": [], "label": "list_item", "prov": [{"page_no": 92, "bbox": {"l": 136.79046630859375, "t": 704.571044921875, "r": 532.4749755859375, "b": 670.2988891601562, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 183]}], "orig": "1. Figure 4-67 shows the SQL statement in Visual Explain ran with no RCAC. The implementation of the SQL statement is a two-way join, which is exactly what the SQL statement is doing.", "text": "1. Figure 4-67 shows the SQL statement in Visual Explain ran with no RCAC. The implementation of the SQL statement is a two-way join, which is exactly what the SQL statement is doing.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/898", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 92, "bbox": {"l": 136.02316284179688, "t": 291.3924865722656, "r": 340.572021484375, "b": 281.702880859375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 47]}], "orig": "Figure 4-67 Visual Explain with no RCAC enabled", "text": "Figure 4-67 Visual Explain with no RCAC enabled"}, {"self_ref": "#/texts/899", "parent": {"cref": "#/groups/127"}, "children": [], "label": "list_item", "prov": [{"page_no": 93, "bbox": {"l": 136.00341796875, "t": 721.5369873046875, "r": 514.048583984375, "b": 687.1716918945312, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 228]}], "orig": "2. Figure 4-68 shows the Visual Explain of the same SQL statement, but with RCAC enabled. It is clear that the implementation of the SQL statement is more complex because the row permission rule becomes part of the WHERE clause.", "text": "2. Figure 4-68 shows the Visual Explain of the same SQL statement, but with RCAC enabled. It is clear that the implementation of the SQL statement is more complex because the row permission rule becomes part of the WHERE clause.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/900", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 93, "bbox": {"l": 135.9990692138672, "t": 311.7919921875, "r": 327.9913635253906, "b": 302.78125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 44]}], "orig": "Figure 4-68 Visual Explain with RCAC enabled", "text": "Figure 4-68 Visual Explain with RCAC enabled"}, {"self_ref": "#/texts/901", "parent": {"cref": "#/groups/128"}, "children": [], "label": "list_item", "prov": [{"page_no": 93, "bbox": {"l": 136.2928924560547, "t": 286.0349426269531, "r": 547.2394409179688, "b": 251.98651123046875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 232]}], "orig": "3. Compare the advised indexes that are provided by the Optimizer without RCAC and with RCAC enabled. Figure 4-69 shows the index advice for the SQL statement without RCAC enabled. The index being advised is for the ORDER BY clause.", "text": "3. Compare the advised indexes that are provided by the Optimizer without RCAC and with RCAC enabled. Figure 4-69 shows the index advice for the SQL statement without RCAC enabled. The index being advised is for the ORDER BY clause.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/902", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 93, "bbox": {"l": 64.35660552978516, "t": 125.32025146484375, "r": 227.347412109375, "b": 116.0611572265625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 37]}], "orig": "Figure 4-69 Index advice with no RCAC", "text": "Figure 4-69 Index advice with no RCAC"}, {"self_ref": "#/texts/903", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 93, "bbox": {"l": 214.30316162109375, "t": 37.2801513671875, "r": 523.5935668945312, "b": 27.9913330078125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 70]}], "orig": "Chapter 4. Implementing Row and Column Access Control: Banking example", "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"self_ref": "#/texts/904", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 93, "bbox": {"l": 535.3654174804688, "t": 37.719970703125, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "77", "text": "77"}, {"self_ref": "#/texts/905", "parent": {"cref": "#/groups/129"}, "children": [], "label": "list_item", "prov": [{"page_no": 94, "bbox": {"l": 135.9367218017578, "t": 721.3848266601562, "r": 547.188720703125, "b": 687.2786865234375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 232]}], "orig": "4. Now, look at the advised indexes with RCAC enabled. As shown in Figure 4-70, there is an additional index being advised, which is basically for the row permission rule. For more information, see 6.4.2, \"Index advisor\" on page 99.", "text": "4. Now, look at the advised indexes with RCAC enabled. As shown in Figure 4-70, there is an additional index being advised, which is basically for the row permission rule. For more information, see 6.4.2, \"Index advisor\" on page 99.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/906", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 94, "bbox": {"l": 64.2020263671875, "t": 553.6696166992188, "r": 249.87530517578125, "b": 544.4198608398438, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 42]}], "orig": "Figure 4-70 Index advice with RCAC enabled", "text": "Figure 4-70 Index advice with RCAC enabled"}, {"self_ref": "#/texts/907", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 94, "bbox": {"l": 63.94062805175781, "t": 37.81573486328125, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "78", "text": "78"}, {"self_ref": "#/texts/908", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 94, "bbox": {"l": 93.33392333984375, "t": 37.32916259765625, "r": 334.4214172363281, "b": 28.05181884765625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/909", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 95, "bbox": {"l": 81.0, "t": 523.457275390625, "r": 115.13253021240234, "b": 517.019287109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 10]}], "orig": "Chapter 5.", "text": "Chapter 5."}, {"self_ref": "#/texts/910", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 95, "bbox": {"l": 500.3999938964844, "t": 698.831298828125, "r": 522.6177368164062, "b": 661.8682861328125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 1]}], "orig": "5", "text": "5"}, {"self_ref": "#/texts/911", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 95, "bbox": {"l": 136.8000030517578, "t": 538.669677734375, "r": 511.1795959472656, "b": 513.0821533203125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 27]}], "orig": "RCAC and non-SQL interfaces", "text": "RCAC and non-SQL interfaces", "level": 1}, {"self_ref": "#/texts/912", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 95, "bbox": {"l": 135.93673706054688, "t": 475.41363525390625, "r": 547.181884765625, "b": 405.0663757324219, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 513]}], "orig": "A benefit of Row and Column Access Control (RCAC) is that its security controls are enforced across all the interfaces that access DB2 for i because the security rules are defined and enforced at the database level. The examples that are shown in this paper focus on SQL-based access, but row permissions and column masks also are enforced for non-SQL interfaces, such as native record-level access in RPG and COBOL programs and CL commands, such as Display Physical File Member ( DSPPFM ) and Copy File ( CPYF ).", "text": "A benefit of Row and Column Access Control (RCAC) is that its security controls are enforced across all the interfaces that access DB2 for i because the security rules are defined and enforced at the database level. The examples that are shown in this paper focus on SQL-based access, but row permissions and column masks also are enforced for non-SQL interfaces, such as native record-level access in RPG and COBOL programs and CL commands, such as Display Physical File Member ( DSPPFM ) and Copy File ( CPYF )."}, {"self_ref": "#/texts/913", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 95, "bbox": {"l": 135.76991271972656, "t": 393.2198791503906, "r": 547.2554931640625, "b": 359.08001708984375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 246]}], "orig": "This consistent enforcement across all interfaces is a good thing, but there are some nuances and restrictions as a result of applying an SQL-based technology such as RCAC to non-SQL interfaces. These considerations are described in this chapter.", "text": "This consistent enforcement across all interfaces is a good thing, but there are some nuances and restrictions as a result of applying an SQL-based technology such as RCAC to non-SQL interfaces. These considerations are described in this chapter."}, {"self_ref": "#/texts/914", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 95, "bbox": {"l": 136.10678100585938, "t": 347.1801452636719, "r": 412.4370422363281, "b": 337.0604553222656, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 65]}], "orig": "The following topics are covered in this chapter in this chapter:", "text": "The following topics are covered in this chapter in this chapter:"}, {"self_ref": "#/texts/915", "parent": {"cref": "#/groups/130"}, "children": [], "label": "list_item", "prov": [{"page_no": 95, "bbox": {"l": 135.8011016845703, "t": 329.6640319824219, "r": 254.5669708251953, "b": 319.5867919921875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 38]}], "orig": "GLYPH Unsupported interfaces", "text": "GLYPH Unsupported interfaces", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/916", "parent": {"cref": "#/groups/130"}, "children": [], "label": "list_item", "prov": [{"page_no": 95, "bbox": {"l": 135.7434844970703, "t": 317.3988342285156, "r": 285.9834289550781, "b": 308.0808410644531, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 47]}], "orig": "GLYPH Native query result differences", "text": "GLYPH Native query result differences", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/917", "parent": {"cref": "#/groups/130"}, "children": [], "label": "list_item", "prov": [{"page_no": 95, "bbox": {"l": 135.7656707763672, "t": 306.08868408203125, "r": 325.0879211425781, "b": 296.0810241699219, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 53]}], "orig": "GLYPH Accidental updates with masked values", "text": "GLYPH Accidental updates with masked values", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/918", "parent": {"cref": "#/groups/130"}, "children": [], "label": "list_item", "prov": [{"page_no": 95, "bbox": {"l": 135.72933959960938, "t": 293.7930908203125, "r": 318.95843505859375, "b": 283.6689147949219, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 49]}], "orig": "GLYPH System CL commands considerations", "text": "GLYPH System CL commands considerations", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/919", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 95, "bbox": {"l": 63.744651794433594, "t": 37.23199462890625, "r": 257.24334716796875, "b": 27.908203125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 48]}], "orig": "' Copyright IBM Corp. 2014. All rights reserved.", "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"self_ref": "#/texts/920", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 95, "bbox": {"l": 535.3575439453125, "t": 37.77392578125, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "79", "text": "79"}, {"self_ref": "#/texts/921", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 96, "bbox": {"l": 64.43855285644531, "t": 718.6322021484375, "r": 275.70184326171875, "b": 702.4107666015625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 26]}], "orig": "5.1 Unsupported interfaces", "text": "5.1 Unsupported interfaces", "level": 1}, {"self_ref": "#/texts/922", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 96, "bbox": {"l": 136.1591339111328, "t": 686.068359375, "r": 519.7969970703125, "b": 663.6136474609375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 112]}], "orig": "It is not possible to create a row permission or column mask on a distributed table or a program-described file.", "text": "It is not possible to create a row permission or column mask on a distributed table or a program-described file."}, {"self_ref": "#/texts/923", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 96, "bbox": {"l": 135.89776611328125, "t": 651.9190673828125, "r": 547.2138061523438, "b": 617.4327392578125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 265]}], "orig": "After a row permission or column mask is added to a table, there are some data access requests that no longer work. An attempt to open or query a table with activated RCAC controls involving any of the following scenarios is rejected with the CPD43A4 error message:", "text": "After a row permission or column mask is added to a table, there are some data access requests that no longer work. An attempt to open or query a table with activated RCAC controls involving any of the following scenarios is rejected with the CPD43A4 error message:"}, {"self_ref": "#/texts/924", "parent": {"cref": "#/groups/131"}, "children": [], "label": "list_item", "prov": [{"page_no": 96, "bbox": {"l": 135.5338592529297, "t": 611.342041015625, "r": 526.0348510742188, "b": 600.8960571289062, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 103]}], "orig": "GLYPH A logical file with multiple formats if the open attempt requests more than one format.", "text": "GLYPH A logical file with multiple formats if the open attempt requests more than one format.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/925", "parent": {"cref": "#/groups/131"}, "children": [], "label": "list_item", "prov": [{"page_no": 96, "bbox": {"l": 135.57638549804688, "t": 599.421875, "r": 410.4948425292969, "b": 588.82666015625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 75]}], "orig": "GLYPH A table or query that specifies an ICU 2.6.1 sort sequence.", "text": "GLYPH A table or query that specifies an ICU 2.6.1 sort sequence.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/926", "parent": {"cref": "#/groups/131"}, "children": [], "label": "list_item", "prov": [{"page_no": 96, "bbox": {"l": 135.51390075683594, "t": 586.9641723632812, "r": 264.3358459472656, "b": 576.810302734375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 43]}], "orig": "GLYPH A table with read triggers.", "text": "GLYPH A table with read triggers.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/927", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 96, "bbox": {"l": 135.78880310058594, "t": 565.395263671875, "r": 537.0208129882812, "b": 543.160400390625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 136]}], "orig": "This unsupported interface error occurs when a table with RCAC controls is accessed, not when the RCAC control is created and activated.", "text": "This unsupported interface error occurs when a table with RCAC controls is accessed, not when the RCAC control is created and activated."}, {"self_ref": "#/texts/928", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 96, "bbox": {"l": 136.04721069335938, "t": 531.491455078125, "r": 547.275634765625, "b": 473.14154052734375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 451]}], "orig": "For example, assume that there is a physical file, PF1, which is referenced by a single format logical file (LFS) and a multi-format logical file (LFM). A row permission is successfully created and activated for PF1. Any application that accesses PF1 directly or LFS continues to work without any issues. However, any application that opens LFM with multiple formats receives an error on the open attempt after the row permission is activated for PF1.", "text": "For example, assume that there is a physical file, PF1, which is referenced by a single format logical file (LFS) and a multi-format logical file (LFM). A row permission is successfully created and activated for PF1. Any application that accesses PF1 directly or LFS continues to work without any issues. However, any application that opens LFM with multiple formats receives an error on the open attempt after the row permission is activated for PF1."}, {"self_ref": "#/texts/929", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 96, "bbox": {"l": 141.973876953125, "t": 455.5430603027344, "r": 541.2369995117188, "b": 408.6007080078125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 306]}], "orig": "Important: This potential runtime error places a heavy emphasis on a comprehensive testing plan to ensure that all programs are tested. If testing uncovers an unsupported interface, then you must investigate whether the application can be rewritten to use a data access interface that is supported by RCAC.", "text": "Important: This potential runtime error places a heavy emphasis on a comprehensive testing plan to ensure that all programs are tested. If testing uncovers an unsupported interface, then you must investigate whether the application can be rewritten to use a data access interface that is supported by RCAC."}, {"self_ref": "#/texts/930", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 96, "bbox": {"l": 64.47200012207031, "t": 376.6991882324219, "r": 329.61151123046875, "b": 360.3584289550781, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 35]}], "orig": "5.2 Native query result differences", "text": "5.2 Native query result differences", "level": 1}, {"self_ref": "#/texts/931", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 96, "bbox": {"l": 135.66397094726562, "t": 344.3070373535156, "r": 542.3941650390625, "b": 297.4229736328125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 321]}], "orig": "The SQL Query Engine (SQE) is the only engine that is enhanced by IBM to enforce RCAC controls on query requests. In order for native query requests to work with RCAC, these native query requests are now processed by SQE instead of the Classic Query Engine (CQE). Native query requests can consist of the following items:", "text": "The SQL Query Engine (SQE) is the only engine that is enhanced by IBM to enforce RCAC controls on query requests. In order for native query requests to work with RCAC, these native query requests are now processed by SQE instead of the Classic Query Engine (CQE). Native query requests can consist of the following items:"}, {"self_ref": "#/texts/932", "parent": {"cref": "#/groups/132"}, "children": [], "label": "list_item", "prov": [{"page_no": 96, "bbox": {"l": 135.92169189453125, "t": 291.45050048828125, "r": 198.29859924316406, "b": 281.1392517089844, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 25]}], "orig": "GLYPH Query/400", "text": "GLYPH Query/400", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/933", "parent": {"cref": "#/groups/132"}, "children": [], "label": "list_item", "prov": [{"page_no": 96, "bbox": {"l": 135.69873046875, "t": 279.62432861328125, "r": 214.61248779296875, "b": 269.1394348144531, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 26]}], "orig": "GLYPH QQQQRY API", "text": "GLYPH QQQQRY API", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/934", "parent": {"cref": "#/groups/132"}, "children": [], "label": "list_item", "prov": [{"page_no": 96, "bbox": {"l": 135.62481689453125, "t": 267.34716796875, "r": 315.83990478515625, "b": 257.1396179199219, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 51]}], "orig": "GLYPH Open Query File ( OPNQRYF ) command", "text": "GLYPH Open Query File ( OPNQRYF ) command", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/935", "parent": {"cref": "#/groups/132"}, "children": [], "label": "list_item", "prov": [{"page_no": 96, "bbox": {"l": 135.5345458984375, "t": 255.6026611328125, "r": 285.93896484375, "b": 245.13980102539062, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 44]}], "orig": "GLYPH Run Query ( RUNQRY ) command", "text": "GLYPH Run Query ( RUNQRY ) command", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/936", "parent": {"cref": "#/groups/132"}, "children": [], "label": "list_item", "prov": [{"page_no": 96, "bbox": {"l": 135.56021118164062, "t": 243.46417236328125, "r": 441.7839660644531, "b": 233.13999938964844, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 74]}], "orig": "GLYPH Native open (RPG, COBOL, OPNDBF, and so on) of an SQL view", "text": "GLYPH Native open (RPG, COBOL, OPNDBF, and so on) of an SQL view", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/937", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 96, "bbox": {"l": 135.97003173828125, "t": 221.2158203125, "r": 541.6351928710938, "b": 174.9041748046875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 332]}], "orig": "Legacy queries that have been running without any issues for many years and over many IBM i releases are now processed by a different query engine. As a result, the runtime behavior and results that are returned can be different for native query requests with RCAC enabled. The OPNQRYF command and Query/400 run with SQE by default.", "text": "Legacy queries that have been running without any issues for many years and over many IBM i releases are now processed by a different query engine. As a result, the runtime behavior and results that are returned can be different for native query requests with RCAC enabled. The OPNQRYF command and Query/400 run with SQE by default."}, {"self_ref": "#/texts/938", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 96, "bbox": {"l": 135.73948669433594, "t": 163.37255859375, "r": 547.283447265625, "b": 140.65643310546875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 129]}], "orig": "The following list documents some of the query output differences that can occur when native query requests are processed by CQE:", "text": "The following list documents some of the query output differences that can occur when native query requests are processed by CQE:"}, {"self_ref": "#/texts/939", "parent": {"cref": "#/groups/133"}, "children": [], "label": "list_item", "prov": [{"page_no": 96, "bbox": {"l": 135.9209747314453, "t": 133.8785400390625, "r": 299.18975830078125, "b": 123.5390625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 52]}], "orig": "GLYPH Different ordering in the result set", "text": "GLYPH Different ordering in the result set", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/940", "parent": {"cref": "#/groups/133"}, "children": [], "label": "list_item", "prov": [{"page_no": 96, "bbox": {"l": 135.68008422851562, "t": 121.787109375, "r": 393.4990234375, "b": 111.573486328125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 72]}], "orig": "GLYPH Different values for null columns or columns with errors", "text": "GLYPH Different values for null columns or columns with errors", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/941", "parent": {"cref": "#/groups/133"}, "children": [], "label": "list_item", "prov": [{"page_no": 96, "bbox": {"l": 135.76820373535156, "t": 110.0054931640625, "r": 358.4886169433594, "b": 99.1552734375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 58]}], "orig": "GLYPH Suppression of some mapping error messages", "text": "GLYPH Suppression of some mapping error messages", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/942", "parent": {"cref": "#/groups/133"}, "children": [], "label": "list_item", "prov": [{"page_no": 96, "bbox": {"l": 135.62449645996094, "t": 98.14892578125, "r": 310.7019348144531, "b": 87.7000732421875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 52]}], "orig": "GLYPH Loss of RRN positioning capabilities", "text": "GLYPH Loss of RRN positioning capabilities", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/943", "parent": {"cref": "#/groups/133"}, "children": [], "label": "list_item", "prov": [{"page_no": 96, "bbox": {"l": 135.7325439453125, "t": 86.00927734375, "r": 354.2079162597656, "b": 75.52520751953125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 61]}], "orig": "GLYPH Duplicate key processing behavior differences", "text": "GLYPH Duplicate key processing behavior differences", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/944", "parent": {"cref": "#/groups/133"}, "children": [], "label": "list_item", "prov": [{"page_no": 96, "bbox": {"l": 135.72433471679688, "t": 73.82000732421875, "r": 246.4168701171875, "b": 63.67352294921875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 36]}], "orig": "GLYPH Missing key feedback", "text": "GLYPH Missing key feedback", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/945", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 96, "bbox": {"l": 64.1874008178711, "t": 37.61077880859375, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "80", "text": "80"}, {"self_ref": "#/texts/946", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 96, "bbox": {"l": 93.2634048461914, "t": 37.3101806640625, "r": 334.4214172363281, "b": 28.0943603515625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/947", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 97, "bbox": {"l": 136.42791748046875, "t": 721.3850708007812, "r": 543.0580444335938, "b": 699.2781372070312, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 105]}], "orig": "For a list of the differences and additional details, see the IBM i Memo to Users Version 7.2 , found at:", "text": "For a list of the differences and additional details, see the IBM i Memo to Users Version 7.2 , found at:"}, {"self_ref": "#/texts/948", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 97, "bbox": {"l": 136.22903442382812, "t": 692.5701904296875, "r": 521.8867797851562, "b": 682.218994140625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 77]}], "orig": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgmtu.htm", "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgmtu.htm"}, {"self_ref": "#/texts/949", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 97, "bbox": {"l": 136.18670654296875, "t": 670.4671630859375, "r": 544.6605834960938, "b": 648.2789306640625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 180]}], "orig": "In addition, the performance of a native query with SQE can be different. It is possible that a new index or keyed logical file might need to be created to improve the performance.", "text": "In addition, the performance of a native query with SQE can be different. It is possible that a new index or keyed logical file might need to be created to improve the performance."}, {"self_ref": "#/texts/950", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 97, "bbox": {"l": 141.93385314941406, "t": 630.1156005859375, "r": 495.4548034667969, "b": 595.689208984375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 229]}], "orig": "Important: Based on the potential impacts of query result set and performance differences, you should perform extensive functional testing and performance benchmarking of applications and reports that use native query interfaces.", "text": "Important: Based on the potential impacts of query result set and performance differences, you should perform extensive functional testing and performance benchmarking of applications and reports that use native query interfaces."}, {"self_ref": "#/texts/951", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 97, "bbox": {"l": 64.66980743408203, "t": 563.8651733398438, "r": 396.822265625, "b": 547.7825927734375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 41]}], "orig": "5.3 Accidental updates with masked values", "text": "5.3 Accidental updates with masked values", "level": 1}, {"self_ref": "#/texts/952", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 97, "bbox": {"l": 135.81739807128906, "t": 531.3096923828125, "r": 547.184814453125, "b": 497.2587890625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 193]}], "orig": "The masked values that are returned by a column mask can potentially cause the original data value to be accidentally overwritten, especially with applications using native record-level access.", "text": "The masked values that are returned by a column mask can potentially cause the original data value to be accidentally overwritten, especially with applications using native record-level access."}, {"self_ref": "#/texts/953", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 97, "bbox": {"l": 135.87274169921875, "t": 485.3960876464844, "r": 541.6968994140625, "b": 439.19415283203125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 291]}], "orig": "For example, consider a table containing three columns of first name, last name, and tax ID that is read by an RPG program. The user running the program is not authorized to see the tax ID value, so a masked value (*****3333) is written into the program's record buffer, as shown Figure 5-1.", "text": "For example, consider a table containing three columns of first name, last name, and tax ID that is read by an RPG program. The user running the program is not authorized to see the tax ID value, so a masked value (*****3333) is written into the program's record buffer, as shown Figure 5-1."}, {"self_ref": "#/texts/954", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 97, "bbox": {"l": 136.08998107910156, "t": 427.2828674316406, "r": 547.1439819335938, "b": 369.28070068359375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 453]}], "orig": "In this example, the application reads the data for an update to correct the misspelling of the last name. The last name value is changed to Smith in the buffer. Now, a WRITE request is issued by the program, which uses the contents of the record buffer to update the row in the underlying DB2 table. Unfortunately, the record buffer still contains a masked value for the tax ID, so the tax ID value in the table is accidentally set to the masked value.", "text": "In this example, the application reads the data for an update to correct the misspelling of the last name. The last name value is changed to Smith in the buffer. Now, a WRITE request is issued by the program, which uses the contents of the record buffer to update the row in the underlying DB2 table. Unfortunately, the record buffer still contains a masked value for the tax ID, so the tax ID value in the table is accidentally set to the masked value."}, {"self_ref": "#/texts/955", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 97, "bbox": {"l": 136.07180786132812, "t": 69.81817626953125, "r": 374.3499755859375, "b": 60.53710174560547, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 56]}], "orig": "Figure 5-1 Accidental update with masked values scenario", "text": "Figure 5-1 Accidental update with masked values scenario"}, {"self_ref": "#/texts/956", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 97, "bbox": {"l": 353.64373779296875, "t": 37.12353515625, "r": 523.6332397460938, "b": 27.8997802734375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 38]}], "orig": "Chapter 5. RCAC and non-SQL interfaces", "text": "Chapter 5. RCAC and non-SQL interfaces"}, {"self_ref": "#/texts/957", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 97, "bbox": {"l": 535.66748046875, "t": 37.72357177734375, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "81", "text": "81"}, {"self_ref": "#/texts/958", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 98, "bbox": {"l": 64.22566223144531, "t": 37.58349609375, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "82", "text": "82"}, {"self_ref": "#/texts/959", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 98, "bbox": {"l": 93.18901824951172, "t": 37.28155517578125, "r": 334.4214172363281, "b": 28.08782958984375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/960", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 98, "bbox": {"l": 135.91806030273438, "t": 721.273193359375, "r": 545.1429443359375, "b": 699.2785034179688, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 107]}], "orig": "Obviously, careful planning and testing should be exercised to avoid accidental updates with masked values.", "text": "Obviously, careful planning and testing should be exercised to avoid accidental updates with masked values."}, {"self_ref": "#/texts/961", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 98, "bbox": {"l": 135.93345642089844, "t": 687.3599853515625, "r": 547.2675170898438, "b": 641.2594604492188, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 333]}], "orig": "DB2 for i also enhanced its check constraint support in the IBM i 7.2 release with a new ON UPDATE clause that allows the existing value to be preserved when a masked value is detected by a check constraint. Details about how to employ this new check constraint support can be found in 6.8.1, \"Check constraint solution\" on page 108.", "text": "DB2 for i also enhanced its check constraint support in the IBM i 7.2 release with a new ON UPDATE clause that allows the existing value to be preserved when a masked value is detected by a check constraint. Details about how to employ this new check constraint support can be found in 6.8.1, \"Check constraint solution\" on page 108."}, {"self_ref": "#/texts/962", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 98, "bbox": {"l": 64.44256591796875, "t": 614.06787109375, "r": 385.5848388671875, "b": 597.47412109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 37]}], "orig": "5.4 System CL commands considerations", "text": "5.4 System CL commands considerations", "level": 1}, {"self_ref": "#/texts/963", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 98, "bbox": {"l": 135.84999084472656, "t": 581.5377807617188, "r": 547.4896240234375, "b": 522.8721923828125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 440]}], "orig": "As stated earlier, RCAC controls are enforced on all data access interfaces. This enforcement is not limited to programmatic interfaces; it also includes system CL commands that read and insert data, such as the Create Duplicate Object ( CRTDUPOBJ ) and Start DFU ( STRDFU ) CL commands. This section documents the behavior of the Create Duplicate Object ( CRTDUPOBJ ), Copy File ( CPYF ), and Copy Library ( CPYLIB ) CL commands with RCAC.", "text": "As stated earlier, RCAC controls are enforced on all data access interfaces. This enforcement is not limited to programmatic interfaces; it also includes system CL commands that read and insert data, such as the Create Duplicate Object ( CRTDUPOBJ ) and Start DFU ( STRDFU ) CL commands. This section documents the behavior of the Create Duplicate Object ( CRTDUPOBJ ), Copy File ( CPYF ), and Copy Library ( CPYLIB ) CL commands with RCAC."}, {"self_ref": "#/texts/964", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 98, "bbox": {"l": 64.2880630493164, "t": 503.80047607421875, "r": 405.0467224121094, "b": 490.1130676269531, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 49]}], "orig": "5.4.1 Create Duplicate Object (CRTDUPOBJ) command", "text": "5.4.1 Create Duplicate Object (CRTDUPOBJ) command", "level": 1}, {"self_ref": "#/texts/965", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 98, "bbox": {"l": 135.64491271972656, "t": 477.33099365234375, "r": 542.9708251953125, "b": 431.25885009765625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 294]}], "orig": "The CRTDUPOBJ command is enhanced with a new Access Control ( ACCCTL ) parameter in the IBM i 7.2 release to copy RCAC controls to the new object being created. Row permissions and column masks are copied to the new object by default because the default value for the ACCCTL parameter is *ALL .", "text": "The CRTDUPOBJ command is enhanced with a new Access Control ( ACCCTL ) parameter in the IBM i 7.2 release to copy RCAC controls to the new object being created. Row permissions and column masks are copied to the new object by default because the default value for the ACCCTL parameter is *ALL ."}, {"self_ref": "#/texts/966", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 98, "bbox": {"l": 135.95484924316406, "t": 419.28741455078125, "r": 538.5584716796875, "b": 385.2994079589844, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 210]}], "orig": "If the invoker of the CRTDUPOBJ command asks for data to be copied with a value of *YES for the DATA parameter, the value of the ACCCTL parameter must be *ALL . If not, the command invocation receives an error.", "text": "If the invoker of the CRTDUPOBJ command asks for data to be copied with a value of *YES for the DATA parameter, the value of the ACCCTL parameter must be *ALL . If not, the command invocation receives an error."}, {"self_ref": "#/texts/967", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 98, "bbox": {"l": 135.810791015625, "t": 373.19256591796875, "r": 547.2168579101562, "b": 315.160400390625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 442]}], "orig": "When data is copied to the duplicated object with the DATA parameter, all rows and unmasked column values are copied into the new object, even if the command invoker is not authorized to view all rows or certain column values. This behavior occurs because the RCAC controls also are copied to the new object. The copied RCAC controls enforce that only authorized users are allowed to view row and column values in the newly duplicated object.", "text": "When data is copied to the duplicated object with the DATA parameter, all rows and unmasked column values are copied into the new object, even if the command invoker is not authorized to view all rows or certain column values. This behavior occurs because the RCAC controls also are copied to the new object. The copied RCAC controls enforce that only authorized users are allowed to view row and column values in the newly duplicated object."}, {"self_ref": "#/texts/968", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 98, "bbox": {"l": 64.34564208984375, "t": 296.1662902832031, "r": 270.95599365234375, "b": 282.2169189453125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 30]}], "orig": "5.4.2 Copy File (CPYF) command", "text": "5.4.2 Copy File (CPYF) command", "level": 1}, {"self_ref": "#/texts/969", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 98, "bbox": {"l": 135.7013702392578, "t": 269.44036865234375, "r": 547.2855224609375, "b": 234.65618896484375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 214]}], "orig": "The CPYF command copies only data, so there is no new parameter to copy RCAC controls to the target table. Therefore, if CPYF is used to create a target table, there are no RCAC controls placed on the target table.", "text": "The CPYF command copies only data, so there is no new parameter to copy RCAC controls to the target table. Therefore, if CPYF is used to create a target table, there are no RCAC controls placed on the target table."}, {"self_ref": "#/texts/970", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 98, "bbox": {"l": 135.7746124267578, "t": 223.41302490234375, "r": 547.3273315429688, "b": 129.28024291992188, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 660]}], "orig": "When RCAC controls are in place on the source table, the CPYF command is limited to reading rows and column values that are based on the invoker of the CPYF command. If a user is authorized to see all rows and column values, then all rows and unmasked column values are copied to the target table (assuming no RCAC controls are on the target table). If a user without full access runs the CPYF command, the CPYF command can copy only a subset of the rows into the target table. In addition, if that user can view only masked column values, then masked values are copied into the target table. This also applies to the Copy to Import File ( CPYTOIMPF ) command.", "text": "When RCAC controls are in place on the source table, the CPYF command is limited to reading rows and column values that are based on the invoker of the CPYF command. If a user is authorized to see all rows and column values, then all rows and unmasked column values are copied to the target table (assuming no RCAC controls are on the target table). If a user without full access runs the CPYF command, the CPYF command can copy only a subset of the rows into the target table. In addition, if that user can view only masked column values, then masked values are copied into the target table. This also applies to the Copy to Import File ( CPYTOIMPF ) command."}, {"self_ref": "#/texts/971", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 98, "bbox": {"l": 136.0672149658203, "t": 117.3995361328125, "r": 535.8108520507812, "b": 71.03631591796875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 330]}], "orig": "If the target table has RCAC controls defined and activated, then the CPYF command is allowed only to add or replace rows in the target table based on the RCAC controls. If CPYF tries to add a row to the target table that the command invoker is not allowed to view according to the target RCAC controls, then an error is received.", "text": "If the target table has RCAC controls defined and activated, then the CPYF command is allowed only to add or replace rows in the target table based on the RCAC controls. If CPYF tries to add a row to the target table that the command invoker is not allowed to view according to the target RCAC controls, then an error is received."}, {"self_ref": "#/texts/972", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 99, "bbox": {"l": 64.39531707763672, "t": 721.97216796875, "r": 305.67718505859375, "b": 708.2225341796875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 35]}], "orig": "5.4.3 Copy Library (CPYLIB) command", "text": "5.4.3 Copy Library (CPYLIB) command", "level": 1}, {"self_ref": "#/texts/973", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 99, "bbox": {"l": 135.95230102539062, "t": 695.278076171875, "r": 544.9737548828125, "b": 637.2990112304688, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 354]}], "orig": "The CPYLIB command is enhanced with the same Access Control ( ACCCTL ) parameter as the CRTDUPOBJ command in the IBM i 7.2 release (see 5.4.1, \"Create Duplicate Object (CRTDUPOBJ) command\" on page 82). Row permissions and column masks are copied to the new object in the new library by default because the default value for the ACCCTL parameter is *ALL .", "text": "The CPYLIB command is enhanced with the same Access Control ( ACCCTL ) parameter as the CRTDUPOBJ command in the IBM i 7.2 release (see 5.4.1, \"Create Duplicate Object (CRTDUPOBJ) command\" on page 82). Row permissions and column masks are copied to the new object in the new library by default because the default value for the ACCCTL parameter is *ALL ."}, {"self_ref": "#/texts/974", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 99, "bbox": {"l": 353.7088317871094, "t": 37.14202880859375, "r": 523.6332397460938, "b": 27.8951416015625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 38]}], "orig": "Chapter 5. RCAC and non-SQL interfaces", "text": "Chapter 5. RCAC and non-SQL interfaces"}, {"self_ref": "#/texts/975", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 99, "bbox": {"l": 535.67578125, "t": 37.62774658203125, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "83", "text": "83"}, {"self_ref": "#/texts/976", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 100, "bbox": {"l": 64.472412109375, "t": 37.7430419921875, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "84", "text": "84"}, {"self_ref": "#/texts/977", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 100, "bbox": {"l": 93.35282135009766, "t": 37.45806884765625, "r": 334.50579833984375, "b": 27.94873046875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/978", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 101, "bbox": {"l": 81.0, "t": 523.457275390625, "r": 115.13253021240234, "b": 517.019287109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 10]}], "orig": "Chapter 6.", "text": "Chapter 6."}, {"self_ref": "#/texts/979", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 101, "bbox": {"l": 136.34396362304688, "t": 538.808837890625, "r": 455.59796142578125, "b": 513.0821533203125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 25]}], "orig": "Additional considerations", "text": "Additional considerations", "level": 1}, {"self_ref": "#/texts/980", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 101, "bbox": {"l": 135.87008666992188, "t": 475.2606506347656, "r": 531.345458984375, "b": 452.89501953125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 168]}], "orig": "This chapter covers additional considerations that must be taken into account when implementing Row and Column Access Control (RCAC), including the following functions:", "text": "This chapter covers additional considerations that must be taken into account when implementing Row and Column Access Control (RCAC), including the following functions:"}, {"self_ref": "#/texts/981", "parent": {"cref": "#/groups/134"}, "children": [], "label": "list_item", "prov": [{"page_no": 101, "bbox": {"l": 135.8069610595703, "t": 445.96240234375, "r": 267.31884765625, "b": 435.6946716308594, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 40]}], "orig": "GLYPH Timing of column masking", "text": "GLYPH Timing of column masking", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/982", "parent": {"cref": "#/groups/134"}, "children": [], "label": "list_item", "prov": [{"page_no": 101, "bbox": {"l": 135.6639404296875, "t": 433.942626953125, "r": 221.46388244628906, "b": 424.05908203125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 29]}], "orig": "GLYPH Data movement", "text": "GLYPH Data movement", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/983", "parent": {"cref": "#/groups/134"}, "children": [], "label": "list_item", "prov": [{"page_no": 101, "bbox": {"l": 135.80430603027344, "t": 421.6257629394531, "r": 174.4866485595703, "b": 412.05926513671875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 21]}], "orig": "GLYPH Joins", "text": "GLYPH Joins", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/984", "parent": {"cref": "#/groups/134"}, "children": [], "label": "list_item", "prov": [{"page_no": 101, "bbox": {"l": 135.77816772460938, "t": 409.7166748046875, "r": 177.6728515625, "b": 400.0594482421875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 21]}], "orig": "GLYPH Views", "text": "GLYPH Views", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/985", "parent": {"cref": "#/groups/134"}, "children": [], "label": "list_item", "prov": [{"page_no": 101, "bbox": {"l": 135.9530487060547, "t": 397.8844909667969, "r": 262.4305114746094, "b": 387.8131103515625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 41]}], "orig": "GLYPH Materialized query tables", "text": "GLYPH Materialized query tables", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/986", "parent": {"cref": "#/groups/134"}, "children": [], "label": "list_item", "prov": [{"page_no": 101, "bbox": {"l": 135.72091674804688, "t": 385.6953430175781, "r": 210.3322296142578, "b": 376.059814453125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 29]}], "orig": "GLYPH Index advisor", "text": "GLYPH Index advisor", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/987", "parent": {"cref": "#/groups/134"}, "children": [], "label": "list_item", "prov": [{"page_no": 101, "bbox": {"l": 135.53468322753906, "t": 373.67767333984375, "r": 310.97344970703125, "b": 363.45330810546875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 51]}], "orig": "GLYPH Monitoring, analysis, and debugging", "text": "GLYPH Monitoring, analysis, and debugging", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/988", "parent": {"cref": "#/groups/134"}, "children": [], "label": "list_item", "prov": [{"page_no": 101, "bbox": {"l": 135.64329528808594, "t": 362.1476135253906, "r": 273.3426513671875, "b": 351.6171875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 43]}], "orig": "GLYPH Performance and scalability", "text": "GLYPH Performance and scalability", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/989", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 101, "bbox": {"l": 136.005859375, "t": 340.0391845703125, "r": 347.4121398925781, "b": 329.6795349121094, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 49]}], "orig": "The following topics are covered in this chapter:", "text": "The following topics are covered in this chapter:"}, {"self_ref": "#/texts/990", "parent": {"cref": "#/groups/135"}, "children": [], "label": "list_item", "prov": [{"page_no": 101, "bbox": {"l": 135.94393920898438, "t": 323.3427734375, "r": 267.31884765625, "b": 312.88189697265625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 40]}], "orig": "GLYPH Timing of column masking", "text": "GLYPH Timing of column masking", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/991", "parent": {"cref": "#/groups/135"}, "children": [], "label": "list_item", "prov": [{"page_no": 101, "bbox": {"l": 135.8094024658203, "t": 311.0367431640625, "r": 296.3423156738281, "b": 301.06097412109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 45]}], "orig": "GLYPH RCAC effects on data movement", "text": "GLYPH RCAC effects on data movement", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/992", "parent": {"cref": "#/groups/135"}, "children": [], "label": "list_item", "prov": [{"page_no": 101, "bbox": {"l": 135.80313110351562, "t": 299.19488525390625, "r": 248.5316162109375, "b": 289.03125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 37]}], "orig": "GLYPH RCAC effects on joins", "text": "GLYPH RCAC effects on joins", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/993", "parent": {"cref": "#/groups/135"}, "children": [], "label": "list_item", "prov": [{"page_no": 101, "bbox": {"l": 135.69058227539062, "t": 287.5282287597656, "r": 368.6199951171875, "b": 276.99609375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 62]}], "orig": "GLYPH Monitoring, analyzing, and debugging with RCAC", "text": "GLYPH Monitoring, analyzing, and debugging with RCAC", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/994", "parent": {"cref": "#/groups/135"}, "children": [], "label": "list_item", "prov": [{"page_no": 101, "bbox": {"l": 135.53225708007812, "t": 275.75750732421875, "r": 428.5085754394531, "b": 265.0615234375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 77]}], "orig": "GLYPH Views, materialized query tables, and query rewrite with RCAC", "text": "GLYPH Views, materialized query tables, and query rewrite with RCAC", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/995", "parent": {"cref": "#/groups/135"}, "children": [], "label": "list_item", "prov": [{"page_no": 101, "bbox": {"l": 135.63209533691406, "t": 263.27227783203125, "r": 349.38427734375, "b": 252.91455078125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 59]}], "orig": "GLYPH RCAC effects on performance and scalability", "text": "GLYPH RCAC effects on performance and scalability", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/996", "parent": {"cref": "#/groups/135"}, "children": [], "label": "list_item", "prov": [{"page_no": 101, "bbox": {"l": 135.68804931640625, "t": 251.15997314453125, "r": 390.4403381347656, "b": 240.64111328125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 70]}], "orig": "GLYPH Exclusive lock to implement RCAC (availability issues)", "text": "GLYPH Exclusive lock to implement RCAC (availability issues)", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/997", "parent": {"cref": "#/groups/135"}, "children": [], "label": "list_item", "prov": [{"page_no": 101, "bbox": {"l": 135.8003692626953, "t": 239.31402587890625, "r": 315.37078857421875, "b": 228.98834228515625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 51]}], "orig": "GLYPH Avoiding propagation of masked data", "text": "GLYPH Avoiding propagation of masked data", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/998", "parent": {"cref": "#/groups/135"}, "children": [], "label": "list_item", "prov": [{"page_no": 101, "bbox": {"l": 135.62815856933594, "t": 227.705810546875, "r": 307.3042297363281, "b": 217.0623016357422, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 48]}], "orig": "GLYPH Triggers and functions (SECURED)", "text": "GLYPH Triggers and functions (SECURED)", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/999", "parent": {"cref": "#/groups/135"}, "children": [], "label": "list_item", "prov": [{"page_no": 101, "bbox": {"l": 135.61077880859375, "t": 215.291259765625, "r": 315.1477355957031, "b": 204.86920166015625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 53]}], "orig": "GLYPH RCAC is only one part of the solution", "text": "GLYPH RCAC is only one part of the solution", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1000", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 101, "bbox": {"l": 63.789581298828125, "t": 37.2982177734375, "r": 257.24334716796875, "b": 27.87945556640625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 48]}], "orig": "' Copyright IBM Corp. 2014. All rights reserved.", "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"self_ref": "#/texts/1001", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 101, "bbox": {"l": 535.6629028320312, "t": 37.66424560546875, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "85", "text": "85"}, {"self_ref": "#/texts/1002", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 101, "bbox": {"l": 500.3999938964844, "t": 698.946533203125, "r": 522.6177368164062, "b": 661.8682861328125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 1]}], "orig": "6", "text": "6"}, {"self_ref": "#/texts/1003", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 102, "bbox": {"l": 64.63821411132812, "t": 718.587646484375, "r": 298.45440673828125, "b": 702.0612182617188, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 28]}], "orig": "6.1 Timing of column masking", "text": "6.1 Timing of column masking", "level": 1}, {"self_ref": "#/texts/1004", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 102, "bbox": {"l": 135.9453887939453, "t": 686.14501953125, "r": 547.2496337890625, "b": 627.4352416992188, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 381]}], "orig": "An important design and implementation consideration is the fact that RCAC column masking occurs after all of the query processing is complete, which means that the query results are not at all based on the masked values. Any local selection, joining, grouping, or ordering operations are based on the unmasked column values. Only the final result set is the target of the masking.", "text": "An important design and implementation consideration is the fact that RCAC column masking occurs after all of the query processing is complete, which means that the query results are not at all based on the masked values. Any local selection, joining, grouping, or ordering operations are based on the unmasked column values. Only the final result set is the target of the masking."}, {"self_ref": "#/texts/1005", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 102, "bbox": {"l": 136.015625, "t": 615.9714965820312, "r": 547.2325439453125, "b": 593.7183837890625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 140]}], "orig": "An example of this situation is shown in Figure 6-1. However, note that aggregate functions (a form of grouping) are based on masked values.", "text": "An example of this situation is shown in Figure 6-1. However, note that aggregate functions (a form of grouping) are based on masked values."}, {"self_ref": "#/texts/1006", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 102, "bbox": {"l": 222.81260681152344, "t": 568.2012329101562, "r": 250.3378143310547, "b": 559.6641845703125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 6]}], "orig": "SELECT", "text": "SELECT"}, {"self_ref": "#/texts/1007", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 102, "bbox": {"l": 289.8625183105469, "t": 568.2435302734375, "r": 386.1354675292969, "b": 559.6641845703125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 19]}], "orig": "CREDIT_CARD_NUMBER,", "text": "CREDIT_CARD_NUMBER,"}, {"self_ref": "#/texts/1008", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 102, "bbox": {"l": 223.27870178222656, "t": 546.2095947265625, "r": 247.33633422851562, "b": 537.4301147460938, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 4]}], "orig": "FROM", "text": "FROM"}, {"self_ref": "#/texts/1009", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 102, "bbox": {"l": 223.30404663085938, "t": 535.2268676757812, "r": 264.05712890625, "b": 526.31298828125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 8]}], "orig": "GROUP BY", "text": "GROUP BY"}, {"self_ref": "#/texts/1010", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 102, "bbox": {"l": 289.9476623535156, "t": 535.2972412109375, "r": 384.1680908203125, "b": 526.31298828125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 18]}], "orig": "CREDIT_CARD_NUMBER", "text": "CREDIT_CARD_NUMBER"}, {"self_ref": "#/texts/1011", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 102, "bbox": {"l": 223.270263671875, "t": 523.8567504882812, "r": 262.7109680175781, "b": 515.1958618164062, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 8]}], "orig": "ORDER BY", "text": "ORDER BY"}, {"self_ref": "#/texts/1012", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 102, "bbox": {"l": 290.0070495605469, "t": 524.111083984375, "r": 386.2455749511719, "b": 514.6119384765625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 19]}], "orig": "CREDIT_CARD_NUMBER;", "text": "CREDIT_CARD_NUMBER;"}, {"self_ref": "#/texts/1013", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 102, "bbox": {"l": 160.45700073242188, "t": 494.1083068847656, "r": 285.01361083984375, "b": 481.6206970214844, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 20]}], "orig": "Without RCAC Masking", "text": "Without RCAC Masking", "level": 1}, {"self_ref": "#/texts/1014", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 102, "bbox": {"l": 341.0262451171875, "t": 494.02642822265625, "r": 447.76593017578125, "b": 481.6206970214844, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 17]}], "orig": "With RCAC Masking", "text": "With RCAC Masking", "level": 1}, {"self_ref": "#/texts/1015", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 102, "bbox": {"l": 136.17198181152344, "t": 319.8768310546875, "r": 290.1625061035156, "b": 310.2148132324219, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 35]}], "orig": "Figure 6-1 Timing of column masking", "text": "Figure 6-1 Timing of column masking"}, {"self_ref": "#/texts/1016", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 102, "bbox": {"l": 290.2481994628906, "t": 556.4693603515625, "r": 389.2164001464844, "b": 537.4301147460938, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 33]}], "orig": "SUM(AMOUNT) AS TOTAL TRANSACTIONS", "text": "SUM(AMOUNT) AS TOTAL TRANSACTIONS"}, {"self_ref": "#/texts/1017", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 102, "bbox": {"l": 64.28016662597656, "t": 37.57470703125, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "86", "text": "86"}, {"self_ref": "#/texts/1018", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 102, "bbox": {"l": 93.40719604492188, "t": 37.34661865234375, "r": 334.4214172363281, "b": 28.0390625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/1019", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 103, "bbox": {"l": 135.76144409179688, "t": 721.3262329101562, "r": 547.1474609375, "b": 627.1250610351562, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 652]}], "orig": "Conversely, field procedure masking causes the column values to be changed (that is, masked) and stored in the row. When the table is queried and the masked columns are referenced, the masked data is used for any local selection, joining, grouping, or ordering operations. This situation can have a profound effect on the query's final result set and not just on the column values that are returned. Field procedure masking occurs when the column values are read from disk before any query processing. RCAC masking occurs when the column values are returned to the application after query processing. This difference in behavior is shown in Figure 6-2.", "text": "Conversely, field procedure masking causes the column values to be changed (that is, masked) and stored in the row. When the table is queried and the masked columns are referenced, the masked data is used for any local selection, joining, grouping, or ordering operations. This situation can have a profound effect on the query's final result set and not just on the column values that are returned. Field procedure masking occurs when the column values are read from disk before any query processing. RCAC masking occurs when the column values are returned to the application after query processing. This difference in behavior is shown in Figure 6-2."}, {"self_ref": "#/texts/1020", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 103, "bbox": {"l": 142.0433349609375, "t": 609.5735473632812, "r": 540.7468872070312, "b": 563.2588500976562, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 262]}], "orig": "Note: Column masks can influence an SQL INSERT or UPDATE . For example, you cannot insert or update a table with column access control activated with masked data generated from an expression within the same statement that is based on a column with a column mask.", "text": "Note: Column masks can influence an SQL INSERT or UPDATE . For example, you cannot insert or update a table with column access control activated with masked data generated from an expression within the same statement that is based on a column with a column mask."}, {"self_ref": "#/texts/1021", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 103, "bbox": {"l": 136.22874450683594, "t": 260.0198974609375, "r": 386.6689758300781, "b": 250.298583984375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 57]}], "orig": "Figure 6-2 Masking differences between Fieldproc and RCAC", "text": "Figure 6-2 Masking differences between Fieldproc and RCAC"}, {"self_ref": "#/texts/1022", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 103, "bbox": {"l": 376.0430603027344, "t": 37.10882568359375, "r": 523.6287841796875, "b": 27.89581298828125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 36]}], "orig": "Chapter 6. Additional considerations", "text": "Chapter 6. Additional considerations"}, {"self_ref": "#/texts/1023", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 103, "bbox": {"l": 535.6262817382812, "t": 37.75579833984375, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "87", "text": "87"}, {"self_ref": "#/texts/1024", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 104, "bbox": {"l": 64.4045181274414, "t": 721.7020874023438, "r": 342.9945068359375, "b": 706.0162963867188, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 33]}], "orig": "6.2 RCAC effects on data movement", "text": "6.2 RCAC effects on data movement", "level": 1}, {"self_ref": "#/texts/1025", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 104, "bbox": {"l": 135.77244567871094, "t": 689.32666015625, "r": 547.2276000976562, "b": 631.2990112304688, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 370]}], "orig": "As described earlier and shown in Figure 6-3, RCAC is applied pervasively regardless of the data access programming interface, SQL statement, or IBM i command. The effects of RCAC on data movement scenarios can be profound and possibly problematic. It is important to understand these effects and make the appropriate adjustments to avoid incorrect results or data loss.", "text": "As described earlier and shown in Figure 6-3, RCAC is applied pervasively regardless of the data access programming interface, SQL statement, or IBM i command. The effects of RCAC on data movement scenarios can be profound and possibly problematic. It is important to understand these effects and make the appropriate adjustments to avoid incorrect results or data loss."}, {"self_ref": "#/texts/1026", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 104, "bbox": {"l": 135.88336181640625, "t": 500.34722900390625, "r": 292.6585693359375, "b": 491.0691223144531, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 33]}], "orig": "Figure 6-3 RCAC and data movement", "text": "Figure 6-3 RCAC and data movement"}, {"self_ref": "#/texts/1027", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 104, "bbox": {"l": 135.75350952148438, "t": 474.4322814941406, "r": 547.2745361328125, "b": 392.0856628417969, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 619]}], "orig": "The \"user\" that is running the data movement application or process, whether it be a high availability (HA) scenario, an extract, transform, load (ETL) scenario, or just copying data from one file or table to another one, must have permission to all the source rows without masking, and not be restricted from putting rows into the target. Allowing the data movement application or process to bypass the RCAC rules must be based on a clear and concise understanding of the organization's object security and data access policy. Proper design, implementation, and testing are critical success factors when applying RCAC.", "text": "The \"user\" that is running the data movement application or process, whether it be a high availability (HA) scenario, an extract, transform, load (ETL) scenario, or just copying data from one file or table to another one, must have permission to all the source rows without masking, and not be restricted from putting rows into the target. Allowing the data movement application or process to bypass the RCAC rules must be based on a clear and concise understanding of the organization's object security and data access policy. Proper design, implementation, and testing are critical success factors when applying RCAC."}, {"self_ref": "#/texts/1028", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 104, "bbox": {"l": 141.819091796875, "t": 374.66552734375, "r": 536.527587890625, "b": 316.4790344238281, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 360]}], "orig": "Important: RCAC is applied to the table or physical file access. It is not applied to the journal receiver access. Any and all database transactions are represented in the journal regardless of RCAC row permissions and column masks. This makes it essential that IBM i security is used to ensure that only authorized personnel have access to the journaled data.", "text": "Important: RCAC is applied to the table or physical file access. It is not applied to the journal receiver access. Any and all database transactions are represented in the journal regardless of RCAC row permissions and column masks. This makes it essential that IBM i security is used to ensure that only authorized personnel have access to the journaled data."}, {"self_ref": "#/texts/1029", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 104, "bbox": {"l": 135.97303771972656, "t": 297.2681884765625, "r": 390.6604919433594, "b": 287.01776123046875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 59]}], "orig": "This section covers in detail the following three examples:", "text": "This section covers in detail the following three examples:"}, {"self_ref": "#/texts/1030", "parent": {"cref": "#/groups/136"}, "children": [], "label": "list_item", "prov": [{"page_no": 104, "bbox": {"l": 135.6826171875, "t": 280.8384094238281, "r": 372.0890197753906, "b": 270.45928955078125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 64]}], "orig": "GLYPH Effects when RCAC is defined on the source table", "text": "GLYPH Effects when RCAC is defined on the source table", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1031", "parent": {"cref": "#/groups/136"}, "children": [], "label": "list_item", "prov": [{"page_no": 104, "bbox": {"l": 135.69775390625, "t": 268.9405517578125, "r": 367.6379089355469, "b": 258.45947265625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 64]}], "orig": "GLYPH Effects when RCAC is defined on the target table", "text": "GLYPH Effects when RCAC is defined on the target table", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1032", "parent": {"cref": "#/groups/136"}, "children": [], "label": "list_item", "prov": [{"page_no": 104, "bbox": {"l": 135.60743713378906, "t": 256.6319580078125, "r": 430.467529296875, "b": 246.3919677734375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 77]}], "orig": "GLYPH Effects when RCAC is defined on both source and target tables", "text": "GLYPH Effects when RCAC is defined on both source and target tables", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1033", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 104, "bbox": {"l": 64.18472290039062, "t": 226.94378662109375, "r": 407.9704895019531, "b": 213.8573760986328, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "6.2.1 Effects when RCAC is defined on the source table", "text": "6.2.1 Effects when RCAC is defined on the source table", "level": 1}, {"self_ref": "#/texts/1034", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 104, "bbox": {"l": 136.2682647705078, "t": 200.6033935546875, "r": 536.1681518554688, "b": 178.47857666015625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 102]}], "orig": "Example 6-1 shows a simple example that illustrates the effect of RCAC as defined on the source table.", "text": "Example 6-1 shows a simple example that illustrates the effect of RCAC as defined on the source table."}, {"self_ref": "#/texts/1035", "parent": {"cref": "#/body"}, "children": [], "label": "paragraph", "prov": [{"page_no": 104, "bbox": {"l": 136.156005859375, "t": 166.70245361328125, "r": 331.8805847167969, "b": 157.27630615234375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 40]}], "orig": "Example 6-1 INSERT INTO TARGET statement", "text": "Example 6-1 INSERT INTO TARGET statement"}, {"self_ref": "#/texts/1036", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 104, "bbox": {"l": 136.8000030517578, "t": 149.3502197265625, "r": 346.6770935058594, "b": 139.66534423828125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 42]}], "orig": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);"}, {"self_ref": "#/texts/1037", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 104, "bbox": {"l": 64.2040786743164, "t": 37.48199462890625, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "88", "text": "88"}, {"self_ref": "#/texts/1038", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 104, "bbox": {"l": 93.31021881103516, "t": 37.2696533203125, "r": 334.4214172363281, "b": 28.070068359375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/1039", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 105, "bbox": {"l": 136.09054565429688, "t": 721.3619995117188, "r": 547.2900390625, "b": 650.7742919921875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 516]}], "orig": "For example, given a \"source\" table with a row permission defined as NAME <> 'CAIN' and a column mask that is defined to project the value 999.99 for AMOUNT, the SELECT statement produces a result set that has the RCAC rules applied. This reduced and modified result set is inserted into the \"target\" table even though the query is defined as returning all rows and all columns. Instead of seven rows that are selected from the source, only three rows are returned and placed into the target, as shown in Figure 6-4.", "text": "For example, given a \"source\" table with a row permission defined as NAME <> 'CAIN' and a column mask that is defined to project the value 999.99 for AMOUNT, the SELECT statement produces a result set that has the RCAC rules applied. This reduced and modified result set is inserted into the \"target\" table even though the query is defined as returning all rows and all columns. Instead of seven rows that are selected from the source, only three rows are returned and placed into the target, as shown in Figure 6-4."}, {"self_ref": "#/texts/1040", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 105, "bbox": {"l": 136.06468200683594, "t": 384.626953125, "r": 377.7413635253906, "b": 375.16595458984375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 52]}], "orig": "Figure 6-4 RCAC effects on data movement from SOURCE", "text": "Figure 6-4 RCAC effects on data movement from SOURCE"}, {"self_ref": "#/texts/1041", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 105, "bbox": {"l": 64.16183471679688, "t": 356.17694091796875, "r": 401.6576843261719, "b": 342.9894104003906, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "6.2.2 Effects when RCAC is defined on the target table", "text": "6.2.2 Effects when RCAC is defined on the target table", "level": 1}, {"self_ref": "#/texts/1042", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 105, "bbox": {"l": 136.28038024902344, "t": 329.9527587890625, "r": 536.1681518554688, "b": 307.8984680175781, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 102]}], "orig": "Example 6-2 shows a simple example that illustrates the effect of RCAC as defined on the target table.", "text": "Example 6-2 shows a simple example that illustrates the effect of RCAC as defined on the target table."}, {"self_ref": "#/texts/1043", "parent": {"cref": "#/body"}, "children": [], "label": "paragraph", "prov": [{"page_no": 105, "bbox": {"l": 136.6165771484375, "t": 296.1914367675781, "r": 331.8912658691406, "b": 286.58740234375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 40]}], "orig": "Example 6-2 INSERT INTO TARGET statement", "text": "Example 6-2 INSERT INTO TARGET statement"}, {"self_ref": "#/texts/1044", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 105, "bbox": {"l": 136.8000030517578, "t": 278.66558837890625, "r": 346.6770935058594, "b": 269.07110595703125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 42]}], "orig": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);"}, {"self_ref": "#/texts/1045", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 105, "bbox": {"l": 376.070556640625, "t": 37.0096435546875, "r": 523.6287841796875, "b": 27.95361328125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 36]}], "orig": "Chapter 6. Additional considerations", "text": "Chapter 6. Additional considerations"}, {"self_ref": "#/texts/1046", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 105, "bbox": {"l": 535.6676635742188, "t": 37.6810302734375, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "89", "text": "89"}, {"self_ref": "#/texts/1047", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 106, "bbox": {"l": 64.0672378540039, "t": 37.62274169921875, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "90", "text": "90"}, {"self_ref": "#/texts/1048", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 106, "bbox": {"l": 93.31163787841797, "t": 37.2567138671875, "r": 334.4214172363281, "b": 28.11328125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/1049", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 106, "bbox": {"l": 135.84625244140625, "t": 721.3875122070312, "r": 547.2645874023438, "b": 650.9519653320312, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 546]}], "orig": "Given a \"target\" table with a row permission defined as NAME <> 'CAIN' and a column mask that is defined to project the value 999.99 for AMOUNT, the SELECT statement produces a result set that represents all the rows and columns. The seven row result set is inserted into the \"target\", and the RCAC row permission causes an error to be returned, as shown in Figure 6-5. The source rows where NAME = 'CAIN' do not satisfy the target table's permission, and therefore cannot be inserted. In other words, you are inserting data that you cannot read.", "text": "Given a \"target\" table with a row permission defined as NAME <> 'CAIN' and a column mask that is defined to project the value 999.99 for AMOUNT, the SELECT statement produces a result set that represents all the rows and columns. The seven row result set is inserted into the \"target\", and the RCAC row permission causes an error to be returned, as shown in Figure 6-5. The source rows where NAME = 'CAIN' do not satisfy the target table's permission, and therefore cannot be inserted. In other words, you are inserting data that you cannot read."}, {"self_ref": "#/texts/1050", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 106, "bbox": {"l": 136.212646484375, "t": 377.9114990234375, "r": 367.2479248046875, "b": 368.3596496582031, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 50]}], "orig": "Figure 6-5 RCAC effects on data movement on TARGET", "text": "Figure 6-5 RCAC effects on data movement on TARGET"}, {"self_ref": "#/texts/1051", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 106, "bbox": {"l": 64.19894409179688, "t": 349.5552673339844, "r": 490.12786865234375, "b": 336.4187316894531, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 67]}], "orig": "6.2.3 Effects when RCAC is defined on both source and target tables", "text": "6.2.3 Effects when RCAC is defined on both source and target tables", "level": 1}, {"self_ref": "#/texts/1052", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 106, "bbox": {"l": 136.13351440429688, "t": 323.2520751953125, "r": 541.6332397460938, "b": 301.178466796875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 123]}], "orig": "Example 6-3 shows a simple example that illustrates the effect of RCAC as defined on both the source and the target tables.", "text": "Example 6-3 shows a simple example that illustrates the effect of RCAC as defined on both the source and the target tables."}, {"self_ref": "#/texts/1053", "parent": {"cref": "#/body"}, "children": [], "label": "paragraph", "prov": [{"page_no": 106, "bbox": {"l": 136.3226776123047, "t": 289.47418212890625, "r": 332.0595703125, "b": 279.97625732421875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 40]}], "orig": "Example 6-3 INSERT INTO TARGET statement", "text": "Example 6-3 INSERT INTO TARGET statement"}, {"self_ref": "#/texts/1054", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 106, "bbox": {"l": 136.8000030517578, "t": 271.24200439453125, "r": 346.6770935058594, "b": 262.46722412109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 42]}], "orig": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);"}, {"self_ref": "#/texts/1055", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 106, "bbox": {"l": 135.995849609375, "t": 243.18621826171875, "r": 547.2467041015625, "b": 173.19976806640625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 473]}], "orig": "Given a \"source\" table and a \"target\" table with a row permission defined as NAME <> 'CAIN' and a column mask that is defined to project the value 999.99 for AMOUNT, the SELECT statement produces a result set that has the RCAC rules applied. This reduced and modified result set is inserted into the \"target\" table even though the query is defined as returning all rows and all columns. Instead of seven rows that are selected from the source, only three rows are returned.", "text": "Given a \"source\" table and a \"target\" table with a row permission defined as NAME <> 'CAIN' and a column mask that is defined to project the value 999.99 for AMOUNT, the SELECT statement produces a result set that has the RCAC rules applied. This reduced and modified result set is inserted into the \"target\" table even though the query is defined as returning all rows and all columns. Instead of seven rows that are selected from the source, only three rows are returned."}, {"self_ref": "#/texts/1056", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 107, "bbox": {"l": 135.59042358398438, "t": 721.4307861328125, "r": 547.2501831054688, "b": 675.2281494140625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 331]}], "orig": "Although the source rows where NAME <> 'CAIN' do satisfy the target table's permission, the AMOUNT column value of 999.99 represents masked data and therefore cannot be inserted. An error is returned indicating the failure, as shown in Figure 6-6. In this scenario, DB2 is protecting against an overt attempt to insert masked data.", "text": "Although the source rows where NAME <> 'CAIN' do satisfy the target table's permission, the AMOUNT column value of 999.99 represents masked data and therefore cannot be inserted. An error is returned indicating the failure, as shown in Figure 6-6. In this scenario, DB2 is protecting against an overt attempt to insert masked data."}, {"self_ref": "#/texts/1057", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 107, "bbox": {"l": 135.80810546875, "t": 404.73822021484375, "r": 425.63427734375, "b": 395.1744079589844, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 61]}], "orig": "Figure 6-6 RCAC effects on data movement on SOURCE and TARGET", "text": "Figure 6-6 RCAC effects on data movement on SOURCE and TARGET"}, {"self_ref": "#/texts/1058", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 107, "bbox": {"l": 64.44702911376953, "t": 367.8985595703125, "r": 263.02801513671875, "b": 351.5459899902344, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 25]}], "orig": "6.3 RCAC effects on joins", "text": "6.3 RCAC effects on joins", "level": 1}, {"self_ref": "#/texts/1059", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 107, "bbox": {"l": 135.9691619873047, "t": 335.34326171875, "r": 546.7406005859375, "b": 301.17767333984375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 258]}], "orig": "As mentioned previously, a fundamental concept of row permission is that it defines a logical subset of rows that a user or group of users is permitted to access and use. This subset becomes the new basis of any query against the table that has RCAC enabled.", "text": "As mentioned previously, a fundamental concept of row permission is that it defines a logical subset of rows that a user or group of users is permitted to access and use. This subset becomes the new basis of any query against the table that has RCAC enabled."}, {"self_ref": "#/texts/1060", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 107, "bbox": {"l": 142.4822540283203, "t": 283.4383239746094, "r": 541.3812255859375, "b": 261.12799072265625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 167]}], "orig": "Note: Thinking of the row permission as defining a virtual set of rows that can be operated on is the secret to understanding the effect of RCAC on any join operation.", "text": "Note: Thinking of the row permission as defining a virtual set of rows that can be operated on is the secret to understanding the effect of RCAC on any join operation."}, {"self_ref": "#/texts/1061", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 107, "bbox": {"l": 376.1033630371094, "t": 37.02716064453125, "r": 523.6287841796875, "b": 27.9495849609375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 36]}], "orig": "Chapter 6. Additional considerations", "text": "Chapter 6. Additional considerations"}, {"self_ref": "#/texts/1062", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 107, "bbox": {"l": 535.6055297851562, "t": 37.75299072265625, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "91", "text": "91"}, {"self_ref": "#/texts/1063", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 108, "bbox": {"l": 64.16549682617188, "t": 37.60833740234375, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "92", "text": "92"}, {"self_ref": "#/texts/1064", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 108, "bbox": {"l": 93.34784698486328, "t": 37.32550048828125, "r": 334.4214172363281, "b": 28.07244873046875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/1065", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 108, "bbox": {"l": 136.05355834960938, "t": 721.4932861328125, "r": 537.429931640625, "b": 699.1768188476562, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 149]}], "orig": "As shown in Figure 6-7, there are two different sets, set A and set B. However, set B has a row permission that subsets the rows that a user can see.", "text": "As shown in Figure 6-7, there are two different sets, set A and set B. However, set B has a row permission that subsets the rows that a user can see."}, {"self_ref": "#/texts/1066", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 108, "bbox": {"l": 136.143310546875, "t": 472.460693359375, "r": 334.12286376953125, "b": 463.0318298339844, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 47]}], "orig": "Figure 6-7 Set A and set B with row permissions", "text": "Figure 6-7 Set A and set B with row permissions"}, {"self_ref": "#/texts/1067", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 108, "bbox": {"l": 64.19314575195312, "t": 443.494873046875, "r": 166.59303283691406, "b": 430.45025634765625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 17]}], "orig": "6.3.1 Inner joins", "text": "6.3.1 Inner joins", "level": 1}, {"self_ref": "#/texts/1068", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 108, "bbox": {"l": 136.13674926757812, "t": 417.4061584472656, "r": 547.21875, "b": 394.8365783691406, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 158]}], "orig": "Inner join defines the intersection of two data sets. For a row to be returned from the inner join query, it must appear in both sets, as shown in Figure 6-8.", "text": "Inner join defines the intersection of two data sets. For a row to be returned from the inner join query, it must appear in both sets, as shown in Figure 6-8."}, {"self_ref": "#/texts/1069", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 108, "bbox": {"l": 136.0211181640625, "t": 167.20330810546875, "r": 327.359130859375, "b": 157.64129638671875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 45]}], "orig": "Figure 6-8 Inner join without RCAC permission", "text": "Figure 6-8 Inner join without RCAC permission"}, {"self_ref": "#/texts/1070", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 109, "bbox": {"l": 135.92884826660156, "t": 721.5256958007812, "r": 547.3219604492188, "b": 675.1539306640625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 279]}], "orig": "Given that row permission serves to eliminate logically rows from one or more sets, the result set from an inner join (and a subquery) can be different when RCAC is applied. RCAC can reduce the number of rows that are permitted to be accessed by the join, as shown in Figure 6-9.", "text": "Given that row permission serves to eliminate logically rows from one or more sets, the result set from an inner join (and a subquery) can be different when RCAC is applied. RCAC can reduce the number of rows that are permitted to be accessed by the join, as shown in Figure 6-9."}, {"self_ref": "#/texts/1071", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 109, "bbox": {"l": 142.26942443847656, "t": 657.3994140625, "r": 537.6323852539062, "b": 622.7393798828125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 207]}], "orig": "Effect of column masks on inner joins: Because column masks are applied after the query final results are determined, the masked value has no effect on the join processing and corresponding query result set.", "text": "Effect of column masks on inner joins: Because column masks are applied after the query final results are determined, the masked value has no effect on the join processing and corresponding query result set."}, {"self_ref": "#/texts/1072", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 109, "bbox": {"l": 136.20010375976562, "t": 368.56854248046875, "r": 314.9713439941406, "b": 359.0969543457031, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 42]}], "orig": "Figure 6-9 Inner join with RCAC permission", "text": "Figure 6-9 Inner join with RCAC permission"}, {"self_ref": "#/texts/1073", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 109, "bbox": {"l": 376.04339599609375, "t": 37.1475830078125, "r": 523.6287841796875, "b": 27.87664794921875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 36]}], "orig": "Chapter 6. Additional considerations", "text": "Chapter 6. Additional considerations"}, {"self_ref": "#/texts/1074", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 109, "bbox": {"l": 535.5010375976562, "t": 37.6861572265625, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "93", "text": "93"}, {"self_ref": "#/texts/1075", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 110, "bbox": {"l": 64.229248046875, "t": 721.5722045898438, "r": 169.51583862304688, "b": 708.5062866210938, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 17]}], "orig": "6.3.2 Outer joins", "text": "6.3.2 Outer joins", "level": 1}, {"self_ref": "#/texts/1076", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 110, "bbox": {"l": 135.7491912841797, "t": 695.2848510742188, "r": 547.2286376953125, "b": 649.0192260742188, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 360]}], "orig": "Outer joins preserve one or both sides of two data sets. A row can be returned from the outer join query if it appears in the primary set (LEFT, RIGHT, or both in the case of FULL), as shown in Figure 6-10. Column values from the secondary set are returned if the row has a match in the primary set. Otherwise, NULL is returned for the column value by default.", "text": "Outer joins preserve one or both sides of two data sets. A row can be returned from the outer join query if it appears in the primary set (LEFT, RIGHT, or both in the case of FULL), as shown in Figure 6-10. Column values from the secondary set are returned if the row has a match in the primary set. Otherwise, NULL is returned for the column value by default."}, {"self_ref": "#/texts/1077", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 110, "bbox": {"l": 136.09414672851562, "t": 416.6016845703125, "r": 334.3742370605469, "b": 407.05682373046875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 46]}], "orig": "Figure 6-10 Outer join without RCAC permission", "text": "Figure 6-10 Outer join without RCAC permission"}, {"self_ref": "#/texts/1078", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 110, "bbox": {"l": 64.17929077148438, "t": 37.6510009765625, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "94", "text": "94"}, {"self_ref": "#/texts/1079", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 110, "bbox": {"l": 93.3522720336914, "t": 37.3170166015625, "r": 334.4214172363281, "b": 28.08441162109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/1080", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 111, "bbox": {"l": 135.9468994140625, "t": 721.3490600585938, "r": 535.2982177734375, "b": 687.0872802734375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 218]}], "orig": "Given that row permission serves to eliminate logically rows from one or more sets, more column values that are returned from the secondary table in outer join can be NULL when RCAC is applied, as shown in Figure 6-11.", "text": "Given that row permission serves to eliminate logically rows from one or more sets, more column values that are returned from the secondary table in outer join can be NULL when RCAC is applied, as shown in Figure 6-11."}, {"self_ref": "#/texts/1081", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 111, "bbox": {"l": 142.19854736328125, "t": 669.730712890625, "r": 537.6323852539062, "b": 634.9480590820312, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 207]}], "orig": "Effect of column masks on inner joins: Because column masks are applied after the query final results are determined, the masked value has no effect on the join processing and corresponding query result set.", "text": "Effect of column masks on inner joins: Because column masks are applied after the query final results are determined, the masked value has no effect on the join processing and corresponding query result set."}, {"self_ref": "#/texts/1082", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 111, "bbox": {"l": 135.94920349121094, "t": 367.32806396484375, "r": 321.8890380859375, "b": 357.8431396484375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 43]}], "orig": "Figure 6-11 Outer join with RCAC permission", "text": "Figure 6-11 Outer join with RCAC permission"}, {"self_ref": "#/texts/1083", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 111, "bbox": {"l": 376.03192138671875, "t": 37.10693359375, "r": 523.6287841796875, "b": 27.9044189453125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 36]}], "orig": "Chapter 6. Additional considerations", "text": "Chapter 6. Additional considerations"}, {"self_ref": "#/texts/1084", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 111, "bbox": {"l": 535.5347900390625, "t": 37.7152099609375, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "95", "text": "95"}, {"self_ref": "#/texts/1085", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 112, "bbox": {"l": 64.29151153564453, "t": 721.6157836914062, "r": 196.83258056640625, "b": 708.5499877929688, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 21]}], "orig": "6.3.3 Exception joins", "text": "6.3.3 Exception joins", "level": 1}, {"self_ref": "#/texts/1086", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 112, "bbox": {"l": 135.8982696533203, "t": 695.4368286132812, "r": 547.2914428710938, "b": 648.5689697265625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 297]}], "orig": "Exception joins preserve one side of two data sets. A row can be returned from the exception join query if it appears in the primary set (LEFT or RIGHT) and the row does not appear in the secondary set, as shown in Figure 6-12. Column values from the secondary set are returned as NULL by default.", "text": "Exception joins preserve one side of two data sets. A row can be returned from the exception join query if it appears in the primary set (LEFT or RIGHT) and the row does not appear in the secondary set, as shown in Figure 6-12. Column values from the secondary set are returned as NULL by default."}, {"self_ref": "#/texts/1087", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 112, "bbox": {"l": 135.93870544433594, "t": 394.6268310546875, "r": 351.4439392089844, "b": 385.1077575683594, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 50]}], "orig": "Figure 6-12 Exception join without RCAC permission", "text": "Figure 6-12 Exception join without RCAC permission"}, {"self_ref": "#/texts/1088", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 112, "bbox": {"l": 135.85084533691406, "t": 368.6776123046875, "r": 544.3384399414062, "b": 322.5378723144531, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 343]}], "orig": "Given that row permission serves to eliminate logically rows from one or more sets, more rows can appear to be exceptions when RCAC is applied, as shown in Figure 6-13. Also, because column masks are applied after the query final results are determined, the masked value has no effect on the join processing and corresponding query result set.", "text": "Given that row permission serves to eliminate logically rows from one or more sets, more rows can appear to be exceptions when RCAC is applied, as shown in Figure 6-13. Also, because column masks are applied after the query final results are determined, the masked value has no effect on the join processing and corresponding query result set."}, {"self_ref": "#/texts/1089", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 112, "bbox": {"l": 136.105224609375, "t": 70.03369140625, "r": 339.2431945800781, "b": 60.5418701171875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 47]}], "orig": "Figure 6-13 Exception join with RCAC permission", "text": "Figure 6-13 Exception join with RCAC permission"}, {"self_ref": "#/texts/1090", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 112, "bbox": {"l": 64.0777587890625, "t": 37.68072509765625, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "96", "text": "96"}, {"self_ref": "#/texts/1091", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 112, "bbox": {"l": 93.31871032714844, "t": 37.34893798828125, "r": 334.4214172363281, "b": 28.05419921875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/1092", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 113, "bbox": {"l": 64.39301300048828, "t": 722.0193481445312, "r": 469.4769287109375, "b": 705.6498413085938, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 50]}], "orig": "6.4 Monitoring, analyzing, and debugging with RCAC", "text": "6.4 Monitoring, analyzing, and debugging with RCAC", "level": 1}, {"self_ref": "#/texts/1093", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 113, "bbox": {"l": 135.89646911621094, "t": 689.4528198242188, "r": 547.2247314453125, "b": 655.2986450195312, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 228]}], "orig": "It is assumed (and it is a critical success factor) that the database engineer or application developer has a thorough understanding of the DB2 for i Query Optimizer, Database Engine, and all the associated tools and techniques.", "text": "It is assumed (and it is a critical success factor) that the database engineer or application developer has a thorough understanding of the DB2 for i Query Optimizer, Database Engine, and all the associated tools and techniques."}, {"self_ref": "#/texts/1094", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 113, "bbox": {"l": 135.66171264648438, "t": 643.3212890625, "r": 547.1968383789062, "b": 621.001708984375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 163]}], "orig": "The monitoring, analyzing, and debugging process basically stays the same when RCAC row permissions or column masks are in place, with a few important differences:", "text": "The monitoring, analyzing, and debugging process basically stays the same when RCAC row permissions or column masks are in place, with a few important differences:"}, {"self_ref": "#/texts/1095", "parent": {"cref": "#/groups/137"}, "children": [], "label": "list_item", "prov": [{"page_no": 113, "bbox": {"l": 135.6549530029297, "t": 614.6976928710938, "r": 534.2526245117188, "b": 592.2996215820312, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 105]}], "orig": "GLYPH The underlying data access plan can be different and more complex based on the rule text.", "text": "GLYPH The underlying data access plan can be different and more complex based on the rule text.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1096", "parent": {"cref": "#/groups/137"}, "children": [], "label": "list_item", "prov": [{"page_no": 113, "bbox": {"l": 135.5695037841797, "t": 585.3076171875, "r": 541.5543212890625, "b": 575.2600708007812, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 104]}], "orig": "GLYPH The database results can be reduced or modified based on the rule text and user profile.", "text": "GLYPH The database results can be reduced or modified based on the rule text and user profile.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1097", "parent": {"cref": "#/groups/137"}, "children": [], "label": "list_item", "prov": [{"page_no": 113, "bbox": {"l": 135.70484924316406, "t": 568.443115234375, "r": 536.0465087890625, "b": 546.2804565429688, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 115]}], "orig": "GLYPH The run time of the request can be affected either positively or negatively based on the rule text.", "text": "GLYPH The run time of the request can be affected either positively or negatively based on the rule text.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1098", "parent": {"cref": "#/groups/137"}, "children": [], "label": "list_item", "prov": [{"page_no": 113, "bbox": {"l": 135.6377410888672, "t": 539.3546142578125, "r": 547.224609375, "b": 516.988525390625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 119]}], "orig": "GLYPH For high-level language record level access, query plans must be considered, and not just program code.", "text": "GLYPH For high-level language record level access, query plans must be considered, and not just program code.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1099", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 113, "bbox": {"l": 135.7350311279297, "t": 505.2730712890625, "r": 547.2296752929688, "b": 447.2820129394531, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 381]}], "orig": "During analyzing and debugging, it is important to account for all of the RCAC definitions for each table or file to understand the logic and corresponding work that is associated with processing the row permissions and column masks. It is also important to realize that, depending on the user profile in effect at run time, the database actions and query results can be different.", "text": "During analyzing and debugging, it is important to account for all of the RCAC definitions for each table or file to understand the logic and corresponding work that is associated with processing the row permissions and column masks. It is also important to realize that, depending on the user profile in effect at run time, the database actions and query results can be different."}, {"self_ref": "#/texts/1100", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 113, "bbox": {"l": 136.05958557128906, "t": 435.37286376953125, "r": 547.2786254882812, "b": 340.8155822753906, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 693]}], "orig": "RCAC is designed and implemented to be transparent to the user. It is possible for user \"Mike\" and user \"Hernando\" to run the exact same query, against the exact same data on the exact same system, and get different result sets. There is no error, no warning, and no indication that RCAC reduced or modified the respective answers that are returned. Furthermore, it is also likely that user \"Mike\" and user \"Hernando\" have different query run times even though it appears that everything is the same for both users. The actual query plan contains the RCAC logic, and this additional code path can alter the amount of work that is needed to produce results, based on the user running the query.", "text": "RCAC is designed and implemented to be transparent to the user. It is possible for user \"Mike\" and user \"Hernando\" to run the exact same query, against the exact same data on the exact same system, and get different result sets. There is no error, no warning, and no indication that RCAC reduced or modified the respective answers that are returned. Furthermore, it is also likely that user \"Mike\" and user \"Hernando\" have different query run times even though it appears that everything is the same for both users. The actual query plan contains the RCAC logic, and this additional code path can alter the amount of work that is needed to produce results, based on the user running the query."}, {"self_ref": "#/texts/1101", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 113, "bbox": {"l": 135.9143524169922, "t": 329.0833435058594, "r": 547.328369140625, "b": 271.234130859375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 414]}], "orig": "When monitoring, analyzing, and debugging a database process when RCAC is enabled, it is critical to keep as many of the \"variables\" the same as possible. Use a good scientific process. For example, when re-creating a problem situation running under the same user profile with the same data and under the same conditions, it is almost mandatory. Otherwise, the database behavior and query results can be different.", "text": "When monitoring, analyzing, and debugging a database process when RCAC is enabled, it is critical to keep as many of the \"variables\" the same as possible. Use a good scientific process. For example, when re-creating a problem situation running under the same user profile with the same data and under the same conditions, it is almost mandatory. Otherwise, the database behavior and query results can be different."}, {"self_ref": "#/texts/1102", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 113, "bbox": {"l": 135.94204711914062, "t": 259.26275634765625, "r": 547.2515869140625, "b": 201.28587341308594, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 385]}], "orig": "To successfully perform monitoring, analyzing, and debugging when RCAC is enabled likely involves changes in the security and data access policies of the organization, and require new responsibilities, authority, and oversight within the data-centric application development community. As such, establishing and staffing the position of \"database engineer\" becomes even more important.", "text": "To successfully perform monitoring, analyzing, and debugging when RCAC is enabled likely involves changes in the security and data access policies of the organization, and require new responsibilities, authority, and oversight within the data-centric application development community. As such, establishing and staffing the position of \"database engineer\" becomes even more important."}, {"self_ref": "#/texts/1103", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 113, "bbox": {"l": 64.17730712890625, "t": 181.6142578125, "r": 325.99066162109375, "b": 168.0791015625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 41]}], "orig": "6.4.1 Query monitoring and analysis tools", "text": "6.4.1 Query monitoring and analysis tools", "level": 1}, {"self_ref": "#/texts/1104", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 113, "bbox": {"l": 136.0252227783203, "t": 155.4248046875, "r": 543.2037353515625, "b": 109.23886108398438, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 309]}], "orig": "When monitoring and collecting metrics on database requests, DB2 for i provides additional information that indicates row permissions or column masks are being applied. This information is integrated and part of the standard tools, such as Visual Explain, SQL Plan Cache Snapshot, and SQL Performance Monitor.", "text": "When monitoring and collecting metrics on database requests, DB2 for i provides additional information that indicates row permissions or column masks are being applied. This information is integrated and part of the standard tools, such as Visual Explain, SQL Plan Cache Snapshot, and SQL Performance Monitor."}, {"self_ref": "#/texts/1105", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 113, "bbox": {"l": 376.0887756347656, "t": 37.08258056640625, "r": 523.6287841796875, "b": 27.9049072265625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 36]}], "orig": "Chapter 6. Additional considerations", "text": "Chapter 6. Additional considerations"}, {"self_ref": "#/texts/1106", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 113, "bbox": {"l": 535.5423583984375, "t": 37.82244873046875, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "97", "text": "97"}, {"self_ref": "#/texts/1107", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 114, "bbox": {"l": 136.44447326660156, "t": 721.3892822265625, "r": 394.5509033203125, "b": 710.84912109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 55]}], "orig": "Figure 6-14 shows how Visual Explain externalizes RCAC.", "text": "Figure 6-14 shows how Visual Explain externalizes RCAC."}, {"self_ref": "#/texts/1108", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 114, "bbox": {"l": 64.1352310180664, "t": 440.0090026855469, "r": 301.8788146972656, "b": 430.5013122558594, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 58]}], "orig": "Figure 6-14 Visual Explain indicating that RCAC is applied", "text": "Figure 6-14 Visual Explain indicating that RCAC is applied"}, {"self_ref": "#/texts/1109", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 114, "bbox": {"l": 136.34783935546875, "t": 413.8916320800781, "r": 529.9888916015625, "b": 403.5003662109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 83]}], "orig": "Figure 6-15 shows the main dashboard of an SQL Performance Monitor. Click Summary .", "text": "Figure 6-15 shows the main dashboard of an SQL Performance Monitor. Click Summary ."}, {"self_ref": "#/texts/1110", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 114, "bbox": {"l": 64.04948425292969, "t": 247.37237548828125, "r": 222.99563598632812, "b": 237.9185791015625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 35]}], "orig": "Figure 6-15 SQL Performance Monitor", "text": "Figure 6-15 SQL Performance Monitor"}, {"self_ref": "#/texts/1111", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 114, "bbox": {"l": 136.6471710205078, "t": 221.43133544921875, "r": 524.7570190429688, "b": 198.71783447265625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 100]}], "orig": "Figure 6-16 shows the summary of an SQL Performance Monitor with an indication that RCAC is applied.", "text": "Figure 6-16 shows the summary of an SQL Performance Monitor with an indication that RCAC is applied."}, {"self_ref": "#/texts/1112", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 114, "bbox": {"l": 64.28324127197266, "t": 103.998779296875, "r": 349.08843994140625, "b": 94.337890625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 67]}], "orig": "Figure 6-16 SQL Performance Monitor indicating that RCAC is applied", "text": "Figure 6-16 SQL Performance Monitor indicating that RCAC is applied"}, {"self_ref": "#/texts/1113", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 114, "bbox": {"l": 64.10893249511719, "t": 37.59930419921875, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "98", "text": "98"}, {"self_ref": "#/texts/1114", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 114, "bbox": {"l": 93.39404296875, "t": 37.30413818359375, "r": 334.4214172363281, "b": 28.0323486328125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/1115", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 115, "bbox": {"l": 136.21266174316406, "t": 721.2932739257812, "r": 514.509765625, "b": 699.2781372070312, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 92]}], "orig": "Figure 6-17 shows the statements of an SQL Performance Monitor and how RCAC is externalized.", "text": "Figure 6-17 shows the statements of an SQL Performance Monitor and how RCAC is externalized."}, {"self_ref": "#/texts/1116", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 115, "bbox": {"l": 64.27816772460938, "t": 571.9398193359375, "r": 349.6502685546875, "b": 562.5570068359375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 63]}], "orig": "Figure 6-17 SQL Performance Monitor showing statements and RCAC", "text": "Figure 6-17 SQL Performance Monitor showing statements and RCAC"}, {"self_ref": "#/texts/1117", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 115, "bbox": {"l": 135.8977813720703, "t": 546.065673828125, "r": 547.1959838867188, "b": 463.65936279296875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 613]}], "orig": "When implementing RCAC as part of a comprehensive and pervasive data access control initiative, consider that the database monitoring and analysis tools can collect literal values that are passed as part of SQL statements. These literal values can be viewed as part of the information collected. If any of the literals are based on or are used with masked columns, it is important to review the database engineer's policy for viewing these data elements. For example, supposed that column CUSTOMER_TAX_ID is deemed masked for the database engineer and the CUSTOMER_TAX_ID column is used in a predicate as follows:", "text": "When implementing RCAC as part of a comprehensive and pervasive data access control initiative, consider that the database monitoring and analysis tools can collect literal values that are passed as part of SQL statements. These literal values can be viewed as part of the information collected. If any of the literals are based on or are used with masked columns, it is important to review the database engineer's policy for viewing these data elements. For example, supposed that column CUSTOMER_TAX_ID is deemed masked for the database engineer and the CUSTOMER_TAX_ID column is used in a predicate as follows:"}, {"self_ref": "#/texts/1118", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 115, "bbox": {"l": 136.05642700195312, "t": 456.6171875, "r": 321.6575622558594, "b": 445.9201965332031, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 37]}], "orig": "WHERE CUSTOMER_TAX_ID = '123-45-7890'", "text": "WHERE CUSTOMER_TAX_ID = '123-45-7890'"}, {"self_ref": "#/texts/1119", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 115, "bbox": {"l": 135.81124877929688, "t": 434.6428527832031, "r": 520.1124877929688, "b": 400.6603698730469, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 195]}], "orig": "The literal value of '123-45-7890' is visible to the analyst, effectively exposing sensitive information. If this is not acceptable, you must implement the SYSPROC.SET_COLUMN_ATTRIBUTE procedure.", "text": "The literal value of '123-45-7890' is visible to the analyst, effectively exposing sensitive information. If this is not acceptable, you must implement the SYSPROC.SET_COLUMN_ATTRIBUTE procedure."}, {"self_ref": "#/texts/1120", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 115, "bbox": {"l": 135.4740447998047, "t": 388.69134521484375, "r": 547.264404296875, "b": 354.605712890625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 217]}], "orig": "The SET_COLUMN_ATTRIBUTE procedure sets the SECURE attribute for a column so that variable values that are used for the column cannot be seen in the SQL Performance Monitor, SQL Plan Cache Snapshot, or Visual Explain.", "text": "The SET_COLUMN_ATTRIBUTE procedure sets the SECURE attribute for a column so that variable values that are used for the column cannot be seen in the SQL Performance Monitor, SQL Plan Cache Snapshot, or Visual Explain."}, {"self_ref": "#/texts/1121", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 115, "bbox": {"l": 64.00121307373047, "t": 334.622802734375, "r": 184.5458984375, "b": 322.03729248046875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 19]}], "orig": "6.4.2 Index advisor", "text": "6.4.2 Index advisor", "level": 1}, {"self_ref": "#/texts/1122", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 115, "bbox": {"l": 135.94943237304688, "t": 308.490966796875, "r": 544.1452026367188, "b": 274.29296875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 265]}], "orig": "Because the RCAC rule text can be almost any valid SQL logic, including local selection predicates, join conditions, and subqueries, the standard query tuning techniques still apply. Without a doubt, a proper and adequate indexing strategy is a good starting point.", "text": "Because the RCAC rule text can be almost any valid SQL logic, including local selection predicates, join conditions, and subqueries, the standard query tuning techniques still apply. Without a doubt, a proper and adequate indexing strategy is a good starting point."}, {"self_ref": "#/texts/1123", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 115, "bbox": {"l": 135.8879852294922, "t": 262.5904541015625, "r": 543.59814453125, "b": 204.172119140625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 434]}], "orig": "The index advisor is not specifically enhanced for RCAC, but because the rule text is a fully integrated part of the query plan, any opportunities for indexing is advised based on the current Query Optimizer functionality. If an index is advised because of the RCAC rule text logic, there is no RCAC reason code provided. Analyzing the query plan and the RCAC rule text provides the understanding as to why the index is being advised.", "text": "The index advisor is not specifically enhanced for RCAC, but because the rule text is a fully integrated part of the query plan, any opportunities for indexing is advised based on the current Query Optimizer functionality. If an index is advised because of the RCAC rule text logic, there is no RCAC reason code provided. Analyzing the query plan and the RCAC rule text provides the understanding as to why the index is being advised."}, {"self_ref": "#/texts/1124", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 115, "bbox": {"l": 376.0592956542969, "t": 37.01708984375, "r": 523.6287841796875, "b": 27.951171875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 36]}], "orig": "Chapter 6. Additional considerations", "text": "Chapter 6. Additional considerations"}, {"self_ref": "#/texts/1125", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 115, "bbox": {"l": 535.5274047851562, "t": 37.70538330078125, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "99", "text": "99"}, {"self_ref": "#/texts/1126", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 116, "bbox": {"l": 136.3820037841797, "t": 721.3514404296875, "r": 529.2249145507812, "b": 699.0840454101562, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 122]}], "orig": "For example, the query that is shown in Figure 6-18 produces index advice for the user's predicate and the RCAC predicate.", "text": "For example, the query that is shown in Figure 6-18 produces index advice for the user's predicate and the RCAC predicate."}, {"self_ref": "#/texts/1127", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 116, "bbox": {"l": 136.15460205078125, "t": 410.5371398925781, "r": 286.3040466308594, "b": 401.260009765625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 33]}], "orig": "Figure 6-18 Index advice and RCAC", "text": "Figure 6-18 Index advice and RCAC"}, {"self_ref": "#/texts/1128", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 116, "bbox": {"l": 136.26499938964844, "t": 384.9390869140625, "r": 530.6282958984375, "b": 362.8584899902344, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 116]}], "orig": "In Figure 6-19, index advisor is showing an index for the ACCOUNTS and CUSTOMERS tables based on the RCAC rule text.", "text": "In Figure 6-19, index advisor is showing an index for the ACCOUNTS and CUSTOMERS tables based on the RCAC rule text."}, {"self_ref": "#/texts/1129", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 116, "bbox": {"l": 64.29851531982422, "t": 234.64019775390625, "r": 271.84735107421875, "b": 225.1319580078125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 48]}], "orig": "Figure 6-19 Index advisor based on the RCAC rule", "text": "Figure 6-19 Index advisor based on the RCAC rule"}, {"self_ref": "#/texts/1130", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 116, "bbox": {"l": 136.3258819580078, "t": 208.79052734375, "r": 545.009521484375, "b": 186.391845703125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 116]}], "orig": "For more information about creating and using indexes, see IBM DB2 for i indexing methods and strategies , found at:", "text": "For more information about creating and using indexes, see IBM DB2 for i indexing methods and strategies , found at:"}, {"self_ref": "#/texts/1131", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 116, "bbox": {"l": 136.258544921875, "t": 179.91497802734375, "r": 546.534423828125, "b": 157.24700927734375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 108]}], "orig": "http://www.ibm.com/partnerworld/wps/servlet/ContentHandler/stg_ast_sys_wp_db2_i_in dexing_methods_strategies", "text": "http://www.ibm.com/partnerworld/wps/servlet/ContentHandler/stg_ast_sys_wp_db2_i_in dexing_methods_strategies"}, {"self_ref": "#/texts/1132", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 116, "bbox": {"l": 64.1768798828125, "t": 138.27239990234375, "r": 251.73373413085938, "b": 124.9212646484375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 29]}], "orig": "6.4.3 Metadata using catalogs", "text": "6.4.3 Metadata using catalogs", "level": 1}, {"self_ref": "#/texts/1133", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 116, "bbox": {"l": 135.8922119140625, "t": 112.05975341796875, "r": 519.360595703125, "b": 65.63323974609375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 281]}], "orig": "To make the discovery and identification of RCAC row permissions and column masks programmatically, query the QSYS2.SYSCONTROLS catalog view or the QSYS2.SYSCONTROLSDEP catalog view directly. Otherwise, the System i Navigator Database graphical interface can be used interactively.", "text": "To make the discovery and identification of RCAC row permissions and column masks programmatically, query the QSYS2.SYSCONTROLS catalog view or the QSYS2.SYSCONTROLSDEP catalog view directly. Otherwise, the System i Navigator Database graphical interface can be used interactively."}, {"self_ref": "#/texts/1134", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 116, "bbox": {"l": 64.36641693115234, "t": 37.702392578125, "r": 83.98200225830078, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 3]}], "orig": "100", "text": "100"}, {"self_ref": "#/texts/1135", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 116, "bbox": {"l": 98.54092407226562, "t": 37.3668212890625, "r": 339.8568115234375, "b": 27.9837646484375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/1136", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 117, "bbox": {"l": 136.48927307128906, "t": 721.3510131835938, "r": 409.46722412109375, "b": 710.9666137695312, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 53]}], "orig": "Figure 6-20 shows the QSYS2.SYSCONTROLS catalog view.", "text": "Figure 6-20 shows the QSYS2.SYSCONTROLS catalog view.", "level": 1}, {"self_ref": "#/texts/1137", "parent": {"cref": "#/body"}, "children": [], "label": "paragraph", "prov": [{"page_no": 117, "bbox": {"l": 64.26973724365234, "t": 546.5089111328125, "r": 197.03440856933594, "b": 537.1303100585938, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 29]}], "orig": "Figure 6-20 RCAC and catalogs", "text": "Figure 6-20 RCAC and catalogs"}, {"self_ref": "#/texts/1138", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 117, "bbox": {"l": 136.15829467773438, "t": 520.781005859375, "r": 430.36700439453125, "b": 510.442138671875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 60]}], "orig": "The SYSCONTROLS catalog view contains the following columns:", "text": "The SYSCONTROLS catalog view contains the following columns:"}, {"self_ref": "#/texts/1139", "parent": {"cref": "#/groups/138"}, "children": [], "label": "list_item", "prov": [{"page_no": 117, "bbox": {"l": 135.715576171875, "t": 503.4774169921875, "r": 229.52528381347656, "b": 493.5987243652344, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 27]}], "orig": "GLYPH COLUMN_NAME", "text": "GLYPH COLUMN_NAME", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1140", "parent": {"cref": "#/groups/138"}, "children": [], "label": "list_item", "prov": [{"page_no": 117, "bbox": {"l": 135.78355407714844, "t": 491.41107177734375, "r": 231.54153442382812, "b": 481.5989074707031, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 28]}], "orig": "GLYPH CONTROL_TYPE", "text": "GLYPH CONTROL_TYPE", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1141", "parent": {"cref": "#/groups/138"}, "children": [], "label": "list_item", "prov": [{"page_no": 117, "bbox": {"l": 135.8020477294922, "t": 479.5697326660156, "r": 219.97596740722656, "b": 469.5990905761719, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 27]}], "orig": "GLYPH CREATE_TIME", "text": "GLYPH CREATE_TIME", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1142", "parent": {"cref": "#/groups/138"}, "children": [], "label": "list_item", "prov": [{"page_no": 117, "bbox": {"l": 135.65097045898438, "t": 467.5733947753906, "r": 190.9705047607422, "b": 457.5992736816406, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 22]}], "orig": "GLYPH ENABLE", "text": "GLYPH ENABLE", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1143", "parent": {"cref": "#/groups/138"}, "children": [], "label": "list_item", "prov": [{"page_no": 117, "bbox": {"l": 135.5606231689453, "t": 455.9203186035156, "r": 207.5435791015625, "b": 445.5994567871094, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 24]}], "orig": "GLYPH ENFORCED", "text": "GLYPH ENFORCED", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1144", "parent": {"cref": "#/groups/138"}, "children": [], "label": "list_item", "prov": [{"page_no": 117, "bbox": {"l": 135.4138946533203, "t": 443.9335632324219, "r": 220.03372192382812, "b": 433.5996398925781, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 26]}], "orig": "GLYPH ASP_NUMBER", "text": "GLYPH ASP_NUMBER", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1145", "parent": {"cref": "#/groups/138"}, "children": [], "label": "list_item", "prov": [{"page_no": 117, "bbox": {"l": 135.53013610839844, "t": 431.7314147949219, "r": 193.41262817382812, "b": 421.5998229980469, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 24]}], "orig": "GLYPH IMPLICIT", "text": "GLYPH IMPLICIT", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1146", "parent": {"cref": "#/groups/138"}, "children": [], "label": "list_item", "prov": [{"page_no": 117, "bbox": {"l": 135.5832061767578, "t": 419.8447570800781, "r": 182.29428100585938, "b": 409.6000061035156, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 21]}], "orig": "GLYPH LABEL", "text": "GLYPH LABEL", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1147", "parent": {"cref": "#/groups/138"}, "children": [], "label": "list_item", "prov": [{"page_no": 117, "bbox": {"l": 135.9365997314453, "t": 407.84820556640625, "r": 226.72982788085938, "b": 397.6001892089844, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 28]}], "orig": "GLYPH LAST_ALTERED", "text": "GLYPH LAST_ALTERED", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1148", "parent": {"cref": "#/groups/138"}, "children": [], "label": "list_item", "prov": [{"page_no": 117, "bbox": {"l": 135.55462646484375, "t": 396.1351623535156, "r": 236.96395874023438, "b": 385.6003723144531, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 28]}], "orig": "GLYPH LONG_COMMENT", "text": "GLYPH LONG_COMMENT", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1149", "parent": {"cref": "#/groups/138"}, "children": [], "label": "list_item", "prov": [{"page_no": 117, "bbox": {"l": 135.59799194335938, "t": 383.8674621582031, "r": 213.861328125, "b": 373.6005554199219, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 25]}], "orig": "GLYPH RCAC_NAME", "text": "GLYPH RCAC_NAME", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1150", "parent": {"cref": "#/groups/138"}, "children": [], "label": "list_item", "prov": [{"page_no": 117, "bbox": {"l": 135.62445068359375, "t": 372.0160217285156, "r": 223.28578186035156, "b": 361.6007385253906, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 26]}], "orig": "GLYPH RCAC_OWNER", "text": "GLYPH RCAC_OWNER", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1151", "parent": {"cref": "#/groups/138"}, "children": [], "label": "list_item", "prov": [{"page_no": 117, "bbox": {"l": 135.59918212890625, "t": 360.0481262207031, "r": 227.91741943359375, "b": 349.6009216308594, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 27]}], "orig": "GLYPH RCAC_SCHEMA", "text": "GLYPH RCAC_SCHEMA", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1152", "parent": {"cref": "#/groups/138"}, "children": [], "label": "list_item", "prov": [{"page_no": 117, "bbox": {"l": 135.649658203125, "t": 347.80303955078125, "r": 202.9622802734375, "b": 337.6011047363281, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 24]}], "orig": "GLYPH RULETEXT", "text": "GLYPH RULETEXT", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1153", "parent": {"cref": "#/groups/138"}, "children": [], "label": "list_item", "prov": [{"page_no": 117, "bbox": {"l": 135.53004455566406, "t": 335.63287353515625, "r": 275.5697021484375, "b": 325.6012878417969, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 34]}], "orig": "GLYPH SYSTEM_COLUMN_NAME", "text": "GLYPH SYSTEM_COLUMN_NAME", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1154", "parent": {"cref": "#/groups/138"}, "children": [], "label": "list_item", "prov": [{"page_no": 117, "bbox": {"l": 135.6468963623047, "t": 324.02764892578125, "r": 263.12493896484375, "b": 313.6014709472656, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 33]}], "orig": "GLYPH SYSTEM_TABLE_NAME", "text": "GLYPH SYSTEM_TABLE_NAME", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1155", "parent": {"cref": "#/groups/138"}, "children": [], "label": "list_item", "prov": [{"page_no": 117, "bbox": {"l": 135.67005920410156, "t": 311.7246398925781, "r": 276.916015625, "b": 301.6016540527344, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 35]}], "orig": "GLYPH SYSTEM_TABLE_SCHEMA", "text": "GLYPH SYSTEM_TABLE_SCHEMA", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1156", "parent": {"cref": "#/groups/138"}, "children": [], "label": "list_item", "prov": [{"page_no": 117, "bbox": {"l": 135.68890380859375, "t": 299.7500915527344, "r": 216.28732299804688, "b": 289.6018371582031, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 26]}], "orig": "GLYPH TABLE_NAME", "text": "GLYPH TABLE_NAME", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1157", "parent": {"cref": "#/groups/138"}, "children": [], "label": "list_item", "prov": [{"page_no": 117, "bbox": {"l": 135.64125061035156, "t": 287.85296630859375, "r": 230.32113647460938, "b": 277.6020202636719, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 28]}], "orig": "GLYPH TABLE_SCHEMA", "text": "GLYPH TABLE_SCHEMA", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1158", "parent": {"cref": "#/groups/138"}, "children": [], "label": "list_item", "prov": [{"page_no": 117, "bbox": {"l": 135.58006286621094, "t": 275.72454833984375, "r": 235.0215301513672, "b": 265.6022033691406, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 29]}], "orig": "GLYPH TBCORRELATION", "text": "GLYPH TBCORRELATION", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1159", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 117, "bbox": {"l": 136.2348175048828, "t": 253.50799560546875, "r": 451.0119934082031, "b": 243.0057373046875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 63]}], "orig": "The SYSCONTROLSDEP catalog view contains the following columns:", "text": "The SYSCONTROLSDEP catalog view contains the following columns:"}, {"self_ref": "#/texts/1160", "parent": {"cref": "#/groups/139"}, "children": [], "label": "list_item", "prov": [{"page_no": 117, "bbox": {"l": 135.6955108642578, "t": 237.07763671875, "r": 229.20022583007812, "b": 226.60281372070312, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 27]}], "orig": "GLYPH COLUMN_NAME", "text": "GLYPH COLUMN_NAME", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1161", "parent": {"cref": "#/groups/139"}, "children": [], "label": "list_item", "prov": [{"page_no": 117, "bbox": {"l": 135.7337188720703, "t": 224.7735595703125, "r": 231.54153442382812, "b": 214.60301208496094, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 28]}], "orig": "GLYPH CONTROL_TYPE", "text": "GLYPH CONTROL_TYPE", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1162", "parent": {"cref": "#/groups/139"}, "children": [], "label": "list_item", "prov": [{"page_no": 117, "bbox": {"l": 135.7036590576172, "t": 212.99359130859375, "r": 223.13241577148438, "b": 202.60321044921875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 27]}], "orig": "GLYPH IASP_NUMBER", "text": "GLYPH IASP_NUMBER", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1163", "parent": {"cref": "#/groups/139"}, "children": [], "label": "list_item", "prov": [{"page_no": 117, "bbox": {"l": 135.64175415039062, "t": 201.30029296875, "r": 225.03065490722656, "b": 190.60340881347656, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 27]}], "orig": "GLYPH OBJECT_NAME", "text": "GLYPH OBJECT_NAME", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1164", "parent": {"cref": "#/groups/139"}, "children": [], "label": "list_item", "prov": [{"page_no": 117, "bbox": {"l": 135.65492248535156, "t": 189.1546630859375, "r": 239.2605743408203, "b": 178.60360717773438, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 29]}], "orig": "GLYPH OBJECT_SCHEMA", "text": "GLYPH OBJECT_SCHEMA", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1165", "parent": {"cref": "#/groups/139"}, "children": [], "label": "list_item", "prov": [{"page_no": 117, "bbox": {"l": 135.42955017089844, "t": 177.33233642578125, "r": 222.27175903320312, "b": 166.6038055419922, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 27]}], "orig": "GLYPH OBJECT_TYPE", "text": "GLYPH OBJECT_TYPE", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1166", "parent": {"cref": "#/groups/139"}, "children": [], "label": "list_item", "prov": [{"page_no": 117, "bbox": {"l": 135.63658142089844, "t": 165.0909423828125, "r": 241.48854064941406, "b": 154.60400390625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 30]}], "orig": "GLYPH PARM_SIGNATURE", "text": "GLYPH PARM_SIGNATURE", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1167", "parent": {"cref": "#/groups/139"}, "children": [], "label": "list_item", "prov": [{"page_no": 117, "bbox": {"l": 135.70877075195312, "t": 152.955078125, "r": 213.68124389648438, "b": 142.6042022705078, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 25]}], "orig": "GLYPH RCAC_NAME", "text": "GLYPH RCAC_NAME", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1168", "parent": {"cref": "#/groups/139"}, "children": [], "label": "list_item", "prov": [{"page_no": 117, "bbox": {"l": 135.70849609375, "t": 140.8154296875, "r": 227.56272888183594, "b": 130.60440063476562, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 27]}], "orig": "GLYPH RCAC_SCHEMA", "text": "GLYPH RCAC_SCHEMA", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1169", "parent": {"cref": "#/groups/139"}, "children": [], "label": "list_item", "prov": [{"page_no": 117, "bbox": {"l": 135.59637451171875, "t": 129.17388916015625, "r": 262.728271484375, "b": 118.6045913696289, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 33]}], "orig": "GLYPH SYSTEM_TABLE_NAME", "text": "GLYPH SYSTEM_TABLE_NAME", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1170", "parent": {"cref": "#/groups/139"}, "children": [], "label": "list_item", "prov": [{"page_no": 117, "bbox": {"l": 135.5303497314453, "t": 116.96820068359375, "r": 276.7511291503906, "b": 106.60478210449219, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 35]}], "orig": "GLYPH SYSTEM_TABLE_SCHEMA", "text": "GLYPH SYSTEM_TABLE_SCHEMA", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1171", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 117, "bbox": {"l": 136.2892303466797, "t": 94.78704833984375, "r": 495.9486389160156, "b": 84.58521270751953, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 81]}], "orig": "For more information, see the IBM i 7.2 DB2 for i SQL Reference Guide , found at:", "text": "For more information, see the IBM i 7.2 DB2 for i SQL Reference Guide , found at:"}, {"self_ref": "#/texts/1172", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 117, "bbox": {"l": 136.3297119140625, "t": 78.0645751953125, "r": 546.534423828125, "b": 55.894439697265625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 86]}], "orig": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/db2/rbafzintro.htm?lang =en", "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/db2/rbafzintro.htm?lang =en"}, {"self_ref": "#/texts/1173", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 117, "bbox": {"l": 370.6695251464844, "t": 37.12347412109375, "r": 517.9691772460938, "b": 28.1142578125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 36]}], "orig": "Chapter 6. Additional considerations", "text": "Chapter 6. Additional considerations"}, {"self_ref": "#/texts/1174", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 117, "bbox": {"l": 530.2025146484375, "t": 37.766845703125, "r": 547.2587890625, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 3]}], "orig": "101", "text": "101"}, {"self_ref": "#/texts/1175", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 118, "bbox": {"l": 64.48343658447266, "t": 722.143798828125, "r": 524.18310546875, "b": 687.0557861328125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 65]}], "orig": "6.5 Views, materialized query tables, and query rewrite with RCAC", "text": "6.5 Views, materialized query tables, and query rewrite with RCAC", "level": 1}, {"self_ref": "#/texts/1176", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 118, "bbox": {"l": 135.83413696289062, "t": 670.753173828125, "r": 538.62841796875, "b": 648.2785034179688, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 133]}], "orig": "This section covers the implications to views, materialized query tables (MQTs), and query rewrite when RCAC is activated on a table.", "text": "This section covers the implications to views, materialized query tables (MQTs), and query rewrite when RCAC is activated on a table."}, {"self_ref": "#/texts/1177", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 118, "bbox": {"l": 64.00408935546875, "t": 628.84814453125, "r": 137.59872436523438, "b": 615.67724609375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 11]}], "orig": "6.5.1 Views", "text": "6.5.1 Views", "level": 1}, {"self_ref": "#/texts/1178", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 118, "bbox": {"l": 135.95098876953125, "t": 602.7352294921875, "r": 547.2675170898438, "b": 544.0421142578125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 453]}], "orig": "Any access to an SQL view that is over one or more tables that have RCAC also have those row permissions and column masking rules applied. If an SQL view has predicates, those are logically ANDed with any search condition that is specified in the permissions that are defined on the underlying tables. The view does not have to project the columns that are referenced by the permissions. Figure 6-21 shows an example of a view definition and user query.", "text": "Any access to an SQL view that is over one or more tables that have RCAC also have those row permissions and column masking rules applied. If an SQL view has predicates, those are logically ANDed with any search condition that is specified in the permissions that are defined on the underlying tables. The view does not have to project the columns that are referenced by the permissions. Figure 6-21 shows an example of a view definition and user query."}, {"self_ref": "#/texts/1179", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 118, "bbox": {"l": 136.1767120361328, "t": 259.17498779296875, "r": 311.7160949707031, "b": 249.74176025390625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 42]}], "orig": "Figure 6-21 View definition and user query", "text": "Figure 6-21 View definition and user query"}, {"self_ref": "#/texts/1180", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 118, "bbox": {"l": 64.45819091796875, "t": 37.70367431640625, "r": 83.98200225830078, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 3]}], "orig": "102", "text": "102"}, {"self_ref": "#/texts/1181", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 118, "bbox": {"l": 98.59468078613281, "t": 37.39764404296875, "r": 339.92059326171875, "b": 27.95623779296875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/1182", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 119, "bbox": {"l": 135.9568634033203, "t": 721.3858642578125, "r": 519.4752807617188, "b": 698.8374633789062, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 97]}], "orig": "What the query optimizer plans for and what the database engine runs is shown in the Figure 6-22.", "text": "What the query optimizer plans for and what the database engine runs is shown in the Figure 6-22."}, {"self_ref": "#/texts/1183", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 119, "bbox": {"l": 135.89744567871094, "t": 401.9805908203125, "r": 291.39215087890625, "b": 392.4318542480469, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 35]}], "orig": "Figure 6-22 Query rewrite with RCAC", "text": "Figure 6-22 Query rewrite with RCAC"}, {"self_ref": "#/texts/1184", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 119, "bbox": {"l": 64.23944091796875, "t": 373.4521484375, "r": 255.48699951171875, "b": 360.3772888183594, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 31]}], "orig": "6.5.2 Materialized query tables", "text": "6.5.2 Materialized query tables", "level": 1}, {"self_ref": "#/texts/1185", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 119, "bbox": {"l": 135.8983154296875, "t": 347.2080078125, "r": 547.2784423828125, "b": 312.9986572265625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 271]}], "orig": "When the query to populate a materialized query table (MQT) is run by the system on either the create table or a refresh table, and one or more source tables have RCAC defined, the row permissions and column masks are ignored. This means that the MQT has all of the data.", "text": "When the query to populate a materialized query table (MQT) is run by the system on either the create table or a refresh table, and one or more source tables have RCAC defined, the row permissions and column masks are ignored. This means that the MQT has all of the data."}, {"self_ref": "#/texts/1186", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 119, "bbox": {"l": 136.05838012695312, "t": 301.335205078125, "r": 547.2845458984375, "b": 266.9794616699219, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 242]}], "orig": "Because the MQT is a copy of the base table data, when a permission is created on the base table, all the related MQTs are altered to have a default row permission. This default permission prevents any of the rows from being directly queried.", "text": "Because the MQT is a copy of the base table data, when a permission is created on the base table, all the related MQTs are altered to have a default row permission. This default permission prevents any of the rows from being directly queried."}, {"self_ref": "#/texts/1187", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 119, "bbox": {"l": 135.96612548828125, "t": 255.226806640625, "r": 547.2724609375, "b": 220.9602813720703, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 266]}], "orig": "When a query implicitly uses an MQT, the underlying row permissions and column masks are built into the query that uses the MQT. In order for the MQT to be used for optimization, the MQT must include any columns that are used by the row permissions and column masks.", "text": "When a query implicitly uses an MQT, the underlying row permissions and column masks are built into the query that uses the MQT. In order for the MQT to be used for optimization, the MQT must include any columns that are used by the row permissions and column masks."}, {"self_ref": "#/texts/1188", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 119, "bbox": {"l": 136.03353881835938, "t": 209.17041015625, "r": 342.15032958984375, "b": 199.00047302246094, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 48]}], "orig": "The following example illustrates this scenario:", "text": "The following example illustrates this scenario:"}, {"self_ref": "#/texts/1189", "parent": {"cref": "#/groups/140"}, "children": [], "label": "list_item", "prov": [{"page_no": 119, "bbox": {"l": 136.65509033203125, "t": 191.9061279296875, "r": 270.4134826660156, "b": 181.96090698242188, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 28]}], "orig": "1. Create schema and tables:", "text": "1. Create schema and tables:", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1190", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 119, "bbox": {"l": 151.20018005371094, "t": 174.04469299316406, "r": 547.2555541992188, "b": 117.27072143554688, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 248]}], "orig": "CREATE SCHEMA Schema1; CREATE TABLE Schema1.employee(userID varchar(128), LocationID integer, Regionid integer); CREATE TABLE Schema1.Sales (INVOICE INTEGER NOT NULL, SALEAMT DECIMAL(5,2), TAXAMT DECIMAL(5,2), LOCATIONID INTEGER, REGIONID INTEGER);", "text": "CREATE SCHEMA Schema1; CREATE TABLE Schema1.employee(userID varchar(128), LocationID integer, Regionid integer); CREATE TABLE Schema1.Sales (INVOICE INTEGER NOT NULL, SALEAMT DECIMAL(5,2), TAXAMT DECIMAL(5,2), LOCATIONID INTEGER, REGIONID INTEGER);"}, {"self_ref": "#/texts/1191", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 119, "bbox": {"l": 370.6492004394531, "t": 37.12176513671875, "r": 517.9691772460938, "b": 28.08099365234375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 36]}], "orig": "Chapter 6. Additional considerations", "text": "Chapter 6. Additional considerations"}, {"self_ref": "#/texts/1192", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 119, "bbox": {"l": 530.1799926757812, "t": 37.73895263671875, "r": 547.2587890625, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 3]}], "orig": "103", "text": "103"}, {"self_ref": "#/texts/1193", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 120, "bbox": {"l": 64.42345428466797, "t": 37.64996337890625, "r": 83.98200225830078, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 3]}], "orig": "104", "text": "104"}, {"self_ref": "#/texts/1194", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 120, "bbox": {"l": 98.57719421386719, "t": 37.33319091796875, "r": 339.839599609375, "b": 27.90020751953125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/1195", "parent": {"cref": "#/groups/141"}, "children": [], "label": "list_item", "prov": [{"page_no": 120, "bbox": {"l": 135.87754821777344, "t": 721.4038696289062, "r": 545.8660888671875, "b": 699.2785034179688, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 99]}], "orig": "2. Create a row permission that allows the employees to see only rows from the region they work in:", "text": "2. Create a row permission that allows the employees to see only rows from the region they work in:", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1196", "parent": {"cref": "#/body"}, "children": [], "label": "code", "prov": [{"page_no": 120, "bbox": {"l": 149.48439025878906, "t": 693.0859985351562, "r": 547.1957397460938, "b": 598.5888061523438, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 281]}], "orig": "/* Create permission that only allows the employees to see rows from the region they work in */ CREATE PERMISSION Schema1.Sales_PERM1 ON schema1.sales FOR ROWS WHERE CURRENT_USER in (SELECT userId FROM schema1.employee E WHERE e.regionid = regionid) ENFORCED FOR ALL ACCESS ENABLE;", "text": "/* Create permission that only allows the employees to see rows from the region they work in */ CREATE PERMISSION Schema1.Sales_PERM1 ON schema1.sales FOR ROWS WHERE CURRENT_USER in (SELECT userId FROM schema1.employee E WHERE e.regionid = regionid) ENFORCED FOR ALL ACCESS ENABLE;"}, {"self_ref": "#/texts/1197", "parent": {"cref": "#/groups/142"}, "children": [], "label": "list_item", "prov": [{"page_no": 120, "bbox": {"l": 136.09523010253906, "t": 591.50830078125, "r": 362.0214538574219, "b": 581.0382690429688, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 48]}], "orig": "3. Create an MQT to summarize sales by location:", "text": "3. Create an MQT to summarize sales by location:", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1198", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 120, "bbox": {"l": 149.7567138671875, "t": 574.7091064453125, "r": 545.9945678710938, "b": 468.5709228515625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 327]}], "orig": "-- Create MQT to summarize sales by location -- This has all of the data. The schema1.sales_perm1 predicate was not applied CREATE TABLE Schema1.Location_Sales_MQT as AS (SELECT LocationID, SUM(Saleamt) as Total_Location_Sales FROM SCHEMA1.SALES GROUP BY LOCATIONID) DATA INITIALLY DEFERRED REFRESH DEFERRED MAINTAINED BY USER;", "text": "-- Create MQT to summarize sales by location -- This has all of the data. The schema1.sales_perm1 predicate was not applied CREATE TABLE Schema1.Location_Sales_MQT as AS (SELECT LocationID, SUM(Saleamt) as Total_Location_Sales FROM SCHEMA1.SALES GROUP BY LOCATIONID) DATA INITIALLY DEFERRED REFRESH DEFERRED MAINTAINED BY USER;"}, {"self_ref": "#/texts/1199", "parent": {"cref": "#/groups/143"}, "children": [], "label": "list_item", "prov": [{"page_no": 120, "bbox": {"l": 135.95851135253906, "t": 461.5218505859375, "r": 354.3462829589844, "b": 450.9034118652344, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 48]}], "orig": "4. Populate the MQT (permission is not applied):", "text": "4. Populate the MQT (permission is not applied):", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1200", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 120, "bbox": {"l": 150.7456512451172, "t": 443.83050537109375, "r": 416.03656005859375, "b": 421.72467041015625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 93]}], "orig": "/* Populate the MQT - Permission not applied here */ REFRESH TABLE Schema1.Location_Sales_MQT", "text": "/* Populate the MQT - Permission not applied here */ REFRESH TABLE Schema1.Location_Sales_MQT"}, {"self_ref": "#/texts/1201", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 120, "bbox": {"l": 150.36888122558594, "t": 415.4218444824219, "r": 547.1997680664062, "b": 392.90313720703125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 166]}], "orig": "The following query matches Location_Sales_MQT, but it cannot be used because it does not have column regionid, which is needed by the schema1.sales_PERM1 permission:", "text": "The following query matches Location_Sales_MQT, but it cannot be used because it does not have column regionid, which is needed by the schema1.sales_PERM1 permission:"}, {"self_ref": "#/texts/1202", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 120, "bbox": {"l": 150.5345001220703, "t": 386.6250915527344, "r": 401.0367736816406, "b": 364.5924987792969, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 71]}], "orig": "SELECT Locationid, sum(SALEAMT) FROM schema1.sales GROUP BY locationid;", "text": "SELECT Locationid, sum(SALEAMT) FROM schema1.sales GROUP BY locationid;"}, {"self_ref": "#/texts/1203", "parent": {"cref": "#/groups/144"}, "children": [], "label": "list_item", "prov": [{"page_no": 120, "bbox": {"l": 136.50941467285156, "t": 357.568115234375, "r": 385.903564453125, "b": 347.0646057128906, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 53]}], "orig": "5. Create an MQT to summarize by region and location:", "text": "5. Create an MQT to summarize by region and location:", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1204", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 120, "bbox": {"l": 150.02435302734375, "t": 340.8066711425781, "r": 500.9953308105469, "b": 246.57443237304688, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 273]}], "orig": "-- MQT to summarize by region and location Create table schema1.Region_Location_Sales_MQT as AS (SELECT REGIONID, LocationID, SUM(Saleamt) as Total_Location_Sales FROM SCHEMA1.SALES GROUP BY REGIONID, LOCATIONID) DATA INITIALLY DEFERRED REFRESH DEFERRED MAINTAINED BY USER;", "text": "-- MQT to summarize by region and location Create table schema1.Region_Location_Sales_MQT as AS (SELECT REGIONID, LocationID, SUM(Saleamt) as Total_Location_Sales FROM SCHEMA1.SALES GROUP BY REGIONID, LOCATIONID) DATA INITIALLY DEFERRED REFRESH DEFERRED MAINTAINED BY USER;"}, {"self_ref": "#/texts/1205", "parent": {"cref": "#/groups/145"}, "children": [], "label": "list_item", "prov": [{"page_no": 120, "bbox": {"l": 136.33966064453125, "t": 239.47381591796875, "r": 452.1078186035156, "b": 228.83648681640625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 67]}], "orig": "6. Populate the Region_location_Sales_MQT (permission not applied):", "text": "6. Populate the Region_location_Sales_MQT (permission not applied):", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1206", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 120, "bbox": {"l": 150.35263061523438, "t": 222.1837158203125, "r": 535.9747924804688, "b": 199.35321044921875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 122]}], "orig": "/* Populate the Region_location_Sales_MQT - Permission not applied here */ Refresh table schema1.Region_Location_Sales_MQT", "text": "/* Populate the Region_location_Sales_MQT - Permission not applied here */ Refresh table schema1.Region_Location_Sales_MQT"}, {"self_ref": "#/texts/1207", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 120, "bbox": {"l": 150.33642578125, "t": 193.4903564453125, "r": 502.06903076171875, "b": 171.2867889404297, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 140]}], "orig": "The following query can use the Region_location_SALES_MQT because it has REGIONID, which is required for the schema1.sales_PERM1 permission:", "text": "The following query can use the Region_location_SALES_MQT because it has REGIONID, which is required for the schema1.sales_PERM1 permission:"}, {"self_ref": "#/texts/1208", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 120, "bbox": {"l": 150.63597106933594, "t": 163.86737060546875, "r": 401.0367736816406, "b": 142.13360595703125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 71]}], "orig": "SELECT Locationid, sum(SALEAMT) FROM schema1.sales GROUP BY locationid;", "text": "SELECT Locationid, sum(SALEAMT) FROM schema1.sales GROUP BY locationid;"}, {"self_ref": "#/texts/1209", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 121, "bbox": {"l": 135.60304260253906, "t": 721.2241821289062, "r": 376.0711669921875, "b": 711.0797729492188, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 55]}], "orig": "This example has the following additional implications:", "text": "This example has the following additional implications:"}, {"self_ref": "#/texts/1210", "parent": {"cref": "#/groups/146"}, "children": [], "label": "list_item", "prov": [{"page_no": 121, "bbox": {"l": 135.650634765625, "t": 704.3900756835938, "r": 547.2718505859375, "b": 670.2985229492188, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 199]}], "orig": "GLYPH Users must be prevented from explicitly querying the MQT or a view that is created over it. Those two cases bypass the row permission and column mask rules from the underlying tables.", "text": "GLYPH Users must be prevented from explicitly querying the MQT or a view that is created over it. Those two cases bypass the row permission and column mask rules from the underlying tables.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1211", "parent": {"cref": "#/groups/146"}, "children": [], "label": "list_item", "prov": [{"page_no": 121, "bbox": {"l": 135.53536987304688, "t": 663.3336791992188, "r": 547.3106079101562, "b": 616.5928955078125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 300]}], "orig": "GLYPH If the user writes code to update incrementally an MQT, that code must be run from a user that has permission to view all of the rows and all columns in their unmasked state. Otherwise, the MQT contents are not complete and queries that implicitly use the MQT might get wrong results.", "text": "GLYPH If the user writes code to update incrementally an MQT, that code must be run from a user that has permission to view all of the rows and all columns in their unmasked state. Otherwise, the MQT contents are not complete and queries that implicitly use the MQT might get wrong results.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1212", "parent": {"cref": "#/groups/146"}, "children": [], "label": "list_item", "prov": [{"page_no": 121, "bbox": {"l": 135.59909057617188, "t": 610.4366455078125, "r": 539.1951904296875, "b": 588.2799072265625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 126]}], "orig": "GLYPH To prevent this, a check constraint can be created to cause an error if masked data was inserted into the MQT.", "text": "GLYPH To prevent this, a check constraint can be created to cause an error if masked data was inserted into the MQT.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1213", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 121, "bbox": {"l": 64.1431655883789, "t": 568.83935546875, "r": 184.48561096191406, "b": 555.5803833007812, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 19]}], "orig": "6.5.3 Query rewrite", "text": "6.5.3 Query rewrite", "level": 1}, {"self_ref": "#/texts/1214", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 121, "bbox": {"l": 136.05111694335938, "t": 542.5366821289062, "r": 527.1223754882812, "b": 520.2984619140625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 110]}], "orig": "Query rewrite is a technique that the optimizer can use to change the original request to improve performance.", "text": "Query rewrite is a technique that the optimizer can use to change the original request to improve performance."}, {"self_ref": "#/texts/1215", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 121, "bbox": {"l": 135.7935791015625, "t": 508.524169921875, "r": 547.158935546875, "b": 450.2796325683594, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 401]}], "orig": "For example, a query that references Table1 might be rewritten to access an MQT over Table1, or it might also be optimized to access only the fields in an index that is defined over Table1 and avoid touching Table1. With RCAC, defining these rewrites can still occur, but the MQT or index also must include all columns that are needed by the row permissions or column masks that are defined on Table1.", "text": "For example, a query that references Table1 might be rewritten to access an MQT over Table1, or it might also be optimized to access only the fields in an index that is defined over Table1 and avoid touching Table1. With RCAC, defining these rewrites can still occur, but the MQT or index also must include all columns that are needed by the row permissions or column masks that are defined on Table1."}, {"self_ref": "#/texts/1216", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 121, "bbox": {"l": 135.94505310058594, "t": 437.9142761230469, "r": 547.3839721679688, "b": 403.91461181640625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 197]}], "orig": "As part of adding RCAC, the impact to these potentially significant performance optimizations must be considered. Usage of MQTs or index-only access might be reduced or eliminated by enabling RCAC.", "text": "As part of adding RCAC, the impact to these potentially significant performance optimizations must be considered. Usage of MQTs or index-only access might be reduced or eliminated by enabling RCAC."}, {"self_ref": "#/texts/1217", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 121, "bbox": {"l": 64.35859680175781, "t": 376.3916931152344, "r": 436.9425048828125, "b": 360.5837097167969, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 47]}], "orig": "6.6 RCAC effects on performance and scalability", "text": "6.6 RCAC effects on performance and scalability", "level": 1}, {"self_ref": "#/texts/1218", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 121, "bbox": {"l": 135.86106872558594, "t": 344.4602966308594, "r": 547.3291625976562, "b": 249.62506103515625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 696]}], "orig": "As with any discussion that is related to performance and scalability, nothing is certain or guaranteed. There are always many variables that are involved. First, a good foundation of knowledge and skill is required to appreciate fully what is occurring when a database request is handled within an RCAC enabled environment. Implementing the row permission or column masks involves the query optimizer and database engine. The process that identifies the rows that you have permission to access is considered a \"query\", and as such a query plan must be formulated. In the case of SQL requests, the RCAC portion of the query is combined with the user's query, much like a query referencing a view.", "text": "As with any discussion that is related to performance and scalability, nothing is certain or guaranteed. There are always many variables that are involved. First, a good foundation of knowledge and skill is required to appreciate fully what is occurring when a database request is handled within an RCAC enabled environment. Implementing the row permission or column masks involves the query optimizer and database engine. The process that identifies the rows that you have permission to access is considered a \"query\", and as such a query plan must be formulated. In the case of SQL requests, the RCAC portion of the query is combined with the user's query, much like a query referencing a view."}, {"self_ref": "#/texts/1219", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 121, "bbox": {"l": 135.9717254638672, "t": 238.62030029296875, "r": 547.2525634765625, "b": 180.28079223632812, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 455]}], "orig": "For native record level access, this RCAC \"query\" is also built and used to test the permission. When a file is opened, the RCAC rule text logic is included, optimized, and run as part of the native read, write, update, or delete operation. The amount of work (and time) required to identify the record based on the user's permission is directly related to the complexity and depth of the logic that is needed to identify the records that can be returned.", "text": "For native record level access, this RCAC \"query\" is also built and used to test the permission. When a file is opened, the RCAC rule text logic is included, optimized, and run as part of the native read, write, update, or delete operation. The amount of work (and time) required to identify the record based on the user's permission is directly related to the complexity and depth of the logic that is needed to identify the records that can be returned."}, {"self_ref": "#/texts/1220", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 121, "bbox": {"l": 135.7317657470703, "t": 167.69171142578125, "r": 547.2844848632812, "b": 74.0277099609375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 698]}], "orig": "A simple example to illustrate this concept is a random read using a keyed logical file (that is, an index). In its purest form, a random read uses two data access methods: index probe (find the key and RRN) and table probe (find the record using RRN). If the RCAC rule text specifies five nested subqueries to determine whether the user has access to the record, this logic must be added to the path. The subquery processing now becomes part of the original \"random read\" request. Instead of two simple I/Os to retrieve the record, there can be a minimum of 12 I/Os to retrieve the same record. These I/Os can be done with a result of \"not found\" if the user is not entitled to any of the records.", "text": "A simple example to illustrate this concept is a random read using a keyed logical file (that is, an index). In its purest form, a random read uses two data access methods: index probe (find the key and RRN) and table probe (find the record using RRN). If the RCAC rule text specifies five nested subqueries to determine whether the user has access to the record, this logic must be added to the path. The subquery processing now becomes part of the original \"random read\" request. Instead of two simple I/Os to retrieve the record, there can be a minimum of 12 I/Os to retrieve the same record. These I/Os can be done with a result of \"not found\" if the user is not entitled to any of the records."}, {"self_ref": "#/texts/1221", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 121, "bbox": {"l": 370.60284423828125, "t": 37.1180419921875, "r": 517.9691772460938, "b": 28.1068115234375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 36]}], "orig": "Chapter 6. Additional considerations", "text": "Chapter 6. Additional considerations"}, {"self_ref": "#/texts/1222", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 121, "bbox": {"l": 530.1432495117188, "t": 37.7501220703125, "r": 547.2587890625, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 3]}], "orig": "105", "text": "105"}, {"self_ref": "#/texts/1223", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 122, "bbox": {"l": 64.41461944580078, "t": 37.71966552734375, "r": 83.98200225830078, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 3]}], "orig": "106", "text": "106"}, {"self_ref": "#/texts/1224", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 122, "bbox": {"l": 98.62214660644531, "t": 37.41748046875, "r": 339.8680725097656, "b": 27.96990966796875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/1225", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 122, "bbox": {"l": 135.8849639892578, "t": 721.650146484375, "r": 543.5155029296875, "b": 675.0093994140625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 285]}], "orig": "For programs that access records sequentially, in or out of key order, the added RCAC logic can have a profound effect on the performance and scalability. Reading the \"next record\" in order is no longer a simple matter of positioning to the next available key, as shown in Figure 6-23.", "text": "For programs that access records sequentially, in or out of key order, the added RCAC logic can have a profound effect on the performance and scalability. Reading the \"next record\" in order is no longer a simple matter of positioning to the next available key, as shown in Figure 6-23."}, {"self_ref": "#/texts/1226", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 122, "bbox": {"l": 136.106201171875, "t": 388.0724182128906, "r": 333.33013916015625, "b": 378.3799743652344, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 45]}], "orig": "Figure 6-23 Native record access with no RCAC", "text": "Figure 6-23 Native record access with no RCAC"}, {"self_ref": "#/texts/1227", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 123, "bbox": {"l": 136.06326293945312, "t": 721.341064453125, "r": 547.295654296875, "b": 675.2687377929688, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 305]}], "orig": "Before the record, as identified by the key, is considered available, the RCAC logic must be run. If the record is rejected by RCAC, the next record in sequence that is permissible must be identified. This spinning through the records can take a long time and uses many resources, as shown in Figure 6-24.", "text": "Before the record, as identified by the key, is considered available, the RCAC logic must be run. If the record is rejected by RCAC, the next record in sequence that is permissible must be identified. This spinning through the records can take a long time and uses many resources, as shown in Figure 6-24."}, {"self_ref": "#/texts/1228", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 123, "bbox": {"l": 135.92271423339844, "t": 384.0206298828125, "r": 341.2294616699219, "b": 374.3691101074219, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 48]}], "orig": "Figure 6-24 Native record level access with RCAC", "text": "Figure 6-24 Native record level access with RCAC"}, {"self_ref": "#/texts/1229", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 123, "bbox": {"l": 135.81785583496094, "t": 358.041748046875, "r": 525.8615112304688, "b": 335.78143310546875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 134]}], "orig": "After the row permissions and column masks are designed and implemented, adequate performance and scalability testing are recommended.", "text": "After the row permissions and column masks are designed and implemented, adequate performance and scalability testing are recommended."}, {"self_ref": "#/texts/1230", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 123, "bbox": {"l": 64.4524917602539, "t": 308.724853515625, "r": 510.04888916015625, "b": 291.993896484375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 58]}], "orig": "6.7 Exclusive lock to implement RCAC (availability issues)", "text": "6.7 Exclusive lock to implement RCAC (availability issues)", "level": 1}, {"self_ref": "#/texts/1231", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 123, "bbox": {"l": 135.74249267578125, "t": 275.99029541015625, "r": 547.2496948242188, "b": 242.07867431640625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 205]}], "orig": "When defining permissions or enabling RCAC, an exclusive lock on the base table is obtained. The impact to other applications depends on the order of create permission and the alter table to activate RCAC.", "text": "When defining permissions or enabling RCAC, an exclusive lock on the base table is obtained. The impact to other applications depends on the order of create permission and the alter table to activate RCAC."}, {"self_ref": "#/texts/1232", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 123, "bbox": {"l": 136.18580627441406, "t": 230.0118408203125, "r": 283.20501708984375, "b": 219.714111328125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 33]}], "orig": "Consider the following scenarios:", "text": "Consider the following scenarios:"}, {"self_ref": "#/texts/1233", "parent": {"cref": "#/groups/147"}, "children": [], "label": "list_item", "prov": [{"page_no": 123, "bbox": {"l": 135.5818634033203, "t": 213.38800048828125, "r": 464.85845947265625, "b": 203.0792999267578, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 84]}], "orig": "GLYPH Scenario 1: Adding permissions and RCAC is not enabled on the table:", "text": "GLYPH Scenario 1: Adding permissions and RCAC is not enabled on the table:", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1234", "parent": {"cref": "#/groups/147"}, "children": [], "label": "list_item", "prov": [{"page_no": 123, "bbox": {"l": 151.1683349609375, "t": 196.04046630859375, "r": 547.4009399414062, "b": 174.03993225097656, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 106]}], "orig": "-Job 1 reading data from the table (open for input) holds a *SHRRD on the member and a *SHRRD on the data.", "text": "-Job 1 reading data from the table (open for input) holds a *SHRRD on the member and a *SHRRD on the data.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1235", "parent": {"cref": "#/groups/147"}, "children": [], "label": "list_item", "prov": [{"page_no": 123, "bbox": {"l": 151.33261108398438, "t": 167.51373291015625, "r": 546.0185546875, "b": 145.06031799316406, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 126]}], "orig": "-Job 2 adding, updating, or deleting rows from table (open for output) holds a *SHRRD on the member and a *SHRUPD on the data.", "text": "-Job 2 adding, updating, or deleting rows from table (open for output) holds a *SHRRD on the member and a *SHRUPD on the data.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1236", "parent": {"cref": "#/groups/147"}, "children": [], "label": "list_item", "prov": [{"page_no": 123, "bbox": {"l": 151.21334838867188, "t": 138.00274658203125, "r": 546.8192749023438, "b": 127.65850830078125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 84]}], "orig": "-Job 4 allocates the object and gets a *SHRRD on the file and a *EXCLRD on the data.", "text": "-Job 4 allocates the object and gets a *SHRRD on the file and a *EXCLRD on the data.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1237", "parent": {"cref": "#/groups/147"}, "children": [], "label": "list_item", "prov": [{"page_no": 123, "bbox": {"l": 151.15476989746094, "t": 121.0460205078125, "r": 547.1649169921875, "b": 87.04132080078125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 196]}], "orig": "-Job 3 attempts to add a permission to the table. Permission is added and the pseudo-closed cursors for Job1 and Job 2 are closed. Job 4 still holds the *SHRRD on the file and *EXCLRD on the data.", "text": "-Job 3 attempts to add a permission to the table. Permission is added and the pseudo-closed cursors for Job1 and Job 2 are closed. Job 4 still holds the *SHRRD on the file and *EXCLRD on the data.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1238", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 123, "bbox": {"l": 150.30223083496094, "t": 80.0487060546875, "r": 545.1102905273438, "b": 57.88128662109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 134]}], "orig": "The net result from Scenario 1 is that you can add permissions without having to end the applications that are reading the base table.", "text": "The net result from Scenario 1 is that you can add permissions without having to end the applications that are reading the base table."}, {"self_ref": "#/texts/1239", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 123, "bbox": {"l": 370.56109619140625, "t": 37.179931640625, "r": 517.9691772460938, "b": 28.08575439453125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 36]}], "orig": "Chapter 6. Additional considerations", "text": "Chapter 6. Additional considerations"}, {"self_ref": "#/texts/1240", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 123, "bbox": {"l": 530.158935546875, "t": 37.82098388671875, "r": 547.2587890625, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 3]}], "orig": "107", "text": "107"}, {"self_ref": "#/texts/1241", "parent": {"cref": "#/groups/148"}, "children": [], "label": "list_item", "prov": [{"page_no": 124, "bbox": {"l": 135.47494506835938, "t": 721.363037109375, "r": 547.2257080078125, "b": 699.2672119140625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 171]}], "orig": "GLYPH Scenario 2: Altering a table to activate RCAC requires that all applications using the table be ended. The alter table requires exclusive use of the table.", "text": "GLYPH Scenario 2: Altering a table to activate RCAC requires that all applications using the table be ended. The alter table requires exclusive use of the table.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1242", "parent": {"cref": "#/groups/148"}, "children": [], "label": "list_item", "prov": [{"page_no": 124, "bbox": {"l": 135.47486877441406, "t": 692.6351318359375, "r": 547.350341796875, "b": 646.2472534179688, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 375]}], "orig": "GLYPH Scenario 3: Altering the table to activate RCAC before the permissions are added. The alter table requires exclusive use of the table, as in scenario 2. All applications must be ended to perform this alter. After the alter is complete, any applications trying to read data do not get any results, and attempts to insert new rows returns the following message:", "text": "GLYPH Scenario 3: Altering the table to activate RCAC before the permissions are added. The alter table requires exclusive use of the table, as in scenario 2. All applications must be ended to perform this alter. After the alter is complete, any applications trying to read data do not get any results, and attempts to insert new rows returns the following message:", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1243", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 124, "bbox": {"l": 150.78724670410156, "t": 639.2891845703125, "r": 451.01605224609375, "b": 629.1058959960938, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 59]}], "orig": "SQ20471] INSERT or UPDATE does not satisfy row permissions.", "text": "SQ20471] INSERT or UPDATE does not satisfy row permissions."}, {"self_ref": "#/texts/1244", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 124, "bbox": {"l": 150.4237060546875, "t": 622.5931396484375, "r": 532.7249145507812, "b": 588.2802734375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 239]}], "orig": "To create a permission in this case requires that you end all the applications, unlike scenario 1 where permissions can be added while the applications were active. In this case, the applications must be ended to run the create permission.", "text": "To create a permission in this case requires that you end all the applications, unlike scenario 1 where permissions can be added while the applications were active. In this case, the applications must be ended to run the create permission."}, {"self_ref": "#/texts/1245", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 124, "bbox": {"l": 64.3337173461914, "t": 561.4805908203125, "r": 380.354736328125, "b": 545.0363159179688, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 39]}], "orig": "6.8 Avoiding propagation of masked data", "text": "6.8 Avoiding propagation of masked data", "level": 1}, {"self_ref": "#/texts/1246", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 124, "bbox": {"l": 135.83189392089844, "t": 527.9580078125, "r": 547.30224609375, "b": 494.2587890625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 275]}], "orig": "Operations such as insert or update into a table with active column access control can fail if the input data is masked data. This can happen when data to be inserted or updated contains the masked value as a result of a SELECT from a table with active column access control.", "text": "Operations such as insert or update into a table with active column access control can fail if the input data is masked data. This can happen when data to be inserted or updated contains the masked value as a result of a SELECT from a table with active column access control."}, {"self_ref": "#/texts/1247", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 124, "bbox": {"l": 136.41940307617188, "t": 482.62445068359375, "r": 547.1968383789062, "b": 460.2991638183594, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 178]}], "orig": "For example, assume TABLE1 and TABLE2 have active column access control and for insert, selecting data from TABLE2 returns the masked data. The following INSERT returns an error:", "text": "For example, assume TABLE1 and TABLE2 have active column access control and for insert, selecting data from TABLE2 returns the masked data. The following INSERT returns an error:"}, {"self_ref": "#/texts/1248", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 124, "bbox": {"l": 136.7989959716797, "t": 452.32318115234375, "r": 331.6763000488281, "b": 443.54840087890625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 39]}], "orig": "INSERT INTO TABLE1 SELECT * FROM TABLE2", "text": "INSERT INTO TABLE1 SELECT * FROM TABLE2"}, {"self_ref": "#/texts/1249", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 124, "bbox": {"l": 135.9666290283203, "t": 431.26483154296875, "r": 533.7767333984375, "b": 409.0923767089844, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 152]}], "orig": "The masked data that is returned from the SELECT * FROM TABLE2 might not be valid input data for TABLE1 because of data type or column check constraint.", "text": "The masked data that is returned from the SELECT * FROM TABLE2 might not be valid input data for TABLE1 because of data type or column check constraint."}, {"self_ref": "#/texts/1250", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 124, "bbox": {"l": 135.8269805908203, "t": 397.2376708984375, "r": 532.6522827148438, "b": 374.9996337890625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 114]}], "orig": "There are two ways to prevent this situation from happening: Define a check constraint or create a before trigger.", "text": "There are two ways to prevent this situation from happening: Define a check constraint or create a before trigger."}, {"self_ref": "#/texts/1251", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 124, "bbox": {"l": 64.09215545654297, "t": 355.58514404296875, "r": 260.1020202636719, "b": 342.6772766113281, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 31]}], "orig": "6.8.1 Check constraint solution", "text": "6.8.1 Check constraint solution", "level": 1}, {"self_ref": "#/texts/1252", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 124, "bbox": {"l": 136.16067504882812, "t": 329.11370849609375, "r": 416.498779296875, "b": 319.16241455078125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 64]}], "orig": "One way to prevent this problem is to define a check constraint.", "text": "One way to prevent this problem is to define a check constraint."}, {"self_ref": "#/texts/1253", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 124, "bbox": {"l": 135.7001190185547, "t": 307.400634765625, "r": 547.2566528320312, "b": 249.27944946289062, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 382]}], "orig": "As part of RCAC, new SQL syntax is provided to allow an action to be performed when a violation of the check constraints check condition occurs instead of giving that error. However, if the check condition is still not met after the action, a hard error is returned. A check constraint with the new on-violation-clause is allowed on both the CREATE TABLE and ALTER TABLE statements.", "text": "As part of RCAC, new SQL syntax is provided to allow an action to be performed when a violation of the check constraints check condition occurs instead of giving that error. However, if the check condition is still not met after the action, a hard error is returned. A check constraint with the new on-violation-clause is allowed on both the CREATE TABLE and ALTER TABLE statements."}, {"self_ref": "#/texts/1254", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 124, "bbox": {"l": 136.0422821044922, "t": 237.33502197265625, "r": 547.2803955078125, "b": 203.26028442382812, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 217]}], "orig": "In the Example 6-4, the mask is defined to return a value of 'XXX-XX-nnnn' for any query that is not done by a user profile in the DBMGR group. The constraint checks that the column SSN does not have the masked value.", "text": "In the Example 6-4, the mask is defined to return a value of 'XXX-XX-nnnn' for any query that is not done by a user profile in the DBMGR group. The constraint checks that the column SSN does not have the masked value."}, {"self_ref": "#/texts/1255", "parent": {"cref": "#/body"}, "children": [], "label": "paragraph", "prov": [{"page_no": 124, "bbox": {"l": 64.23851013183594, "t": 191.49853515625, "r": 277.07000732421875, "b": 181.71978759765625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 49]}], "orig": "Example 6-4 Check constraint to avoid masked data", "text": "Example 6-4 Check constraint to avoid masked data"}, {"self_ref": "#/texts/1256", "parent": {"cref": "#/body"}, "children": [], "label": "code", "prov": [{"page_no": 124, "bbox": {"l": 64.16464233398438, "t": 173.89044189453125, "r": 414.59515380859375, "b": 55.4718017578125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 297]}], "orig": "CREATE SCHEMA MY_LIB SET SCHEMA MY_LIB CREATE TABLE MY_LIB.EMP_INFO (COL1_name CHAR(10) WITH DEFAULT 'DEFAULT', COL2_ssn CHAR(11) WITH DEFAULT 'DEFAULT') CREATE MASK MASK_ssn ON MY_LIB.EMP_INFO FOR COLUMN COL2_ssn RETURN CASE WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBMGR' ) = 1 THEN COL2_ssn", "text": "CREATE SCHEMA MY_LIB SET SCHEMA MY_LIB CREATE TABLE MY_LIB.EMP_INFO (COL1_name CHAR(10) WITH DEFAULT 'DEFAULT', COL2_ssn CHAR(11) WITH DEFAULT 'DEFAULT') CREATE MASK MASK_ssn ON MY_LIB.EMP_INFO FOR COLUMN COL2_ssn RETURN CASE WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBMGR' ) = 1 THEN COL2_ssn"}, {"self_ref": "#/texts/1257", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 124, "bbox": {"l": 64.37716674804688, "t": 37.57183837890625, "r": 83.98200225830078, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 3]}], "orig": "108", "text": "108"}, {"self_ref": "#/texts/1258", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 124, "bbox": {"l": 98.70913696289062, "t": 37.4007568359375, "r": 339.819580078125, "b": 27.999267578125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/1259", "parent": {"cref": "#/body"}, "children": [], "label": "code", "prov": [{"page_no": 125, "bbox": {"l": 63.44700622558594, "t": 721.5032958984375, "r": 546.8219604492188, "b": 600.7581176757812, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 418]}], "orig": "ELSE 'XXX-XX-'||SUBSTR(COL2_ssn,8,4) END ENABLE | /* Check constraint for the update and insert.*/ ALTER TABLE MY_LIB.EMP_INFO ADD CONSTRAINT MASK_ssn_preserve CHECK(SUBSTR(COL2_ssn,1,7)<>'XXX-XX-') -- Allow any value other than the mask ON UPDATE VIOLATION PRESERVE COL2_ssn -- Don't update the mask portion of the existing value ON INSERT VIOLATION SET COL2_ssn = DEFAULT -- for insert set this to the default value.", "text": "ELSE 'XXX-XX-'||SUBSTR(COL2_ssn,8,4) END ENABLE | /* Check constraint for the update and insert.*/ ALTER TABLE MY_LIB.EMP_INFO ADD CONSTRAINT MASK_ssn_preserve CHECK(SUBSTR(COL2_ssn,1,7)<>'XXX-XX-') -- Allow any value other than the mask ON UPDATE VIOLATION PRESERVE COL2_ssn -- Don't update the mask portion of the existing value ON INSERT VIOLATION SET COL2_ssn = DEFAULT -- for insert set this to the default value."}, {"self_ref": "#/texts/1260", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 125, "bbox": {"l": 64.23657989501953, "t": 576.9061279296875, "r": 240.5440673828125, "b": 563.4954223632812, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 29]}], "orig": "6.8.2 Before trigger solution", "text": "6.8.2 Before trigger solution", "level": 1}, {"self_ref": "#/texts/1261", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 125, "bbox": {"l": 136.24661254882812, "t": 550.7080688476562, "r": 547.3193359375, "b": 528.2785034179688, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 171]}], "orig": "The actions that are described in Example 6-4 on page 108 for ON UPDATE VIOLATION and ON INSERT VIOLATION also can be handled by a before trigger, as shown in Example 6-5.", "text": "The actions that are described in Example 6-4 on page 108 for ON UPDATE VIOLATION and ON INSERT VIOLATION also can be handled by a before trigger, as shown in Example 6-5."}, {"self_ref": "#/texts/1262", "parent": {"cref": "#/body"}, "children": [], "label": "paragraph", "prov": [{"page_no": 125, "bbox": {"l": 136.40687561035156, "t": 515.987548828125, "r": 336.7406311035156, "b": 506.462158203125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 47]}], "orig": "Example 6-5 Before trigger to avoid masked data", "text": "Example 6-5 Before trigger to avoid masked data"}, {"self_ref": "#/texts/1263", "parent": {"cref": "#/body"}, "children": [], "label": "code", "prov": [{"page_no": 125, "bbox": {"l": 135.9194793701172, "t": 500.95086669921875, "r": 506.87237548828125, "b": 379.7377624511719, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 298]}], "orig": "CREATE TRIGGER PREVENT_MASK_SSN BEFORE INSERT OR UPDATE ON MY_LIB.EMP_INFO REFERENCING NEW ROW AS N OLD ROW AS O FOR EACH ROW MODE DB2ROW SECURED WHEN(SUBSTR(N.COL2_ssn,1,7) = 'XXX-XX-') BEGIN IF INSERTING THEN SET N.COL2_ssn = DEFAULT; ELSEIF UPDATING THEN SET N.COL2_ssn = O.COL2_ssn; END IF; END", "text": "CREATE TRIGGER PREVENT_MASK_SSN BEFORE INSERT OR UPDATE ON MY_LIB.EMP_INFO REFERENCING NEW ROW AS N OLD ROW AS O FOR EACH ROW MODE DB2ROW SECURED WHEN(SUBSTR(N.COL2_ssn,1,7) = 'XXX-XX-') BEGIN IF INSERTING THEN SET N.COL2_ssn = DEFAULT; ELSEIF UPDATING THEN SET N.COL2_ssn = O.COL2_ssn; END IF; END"}, {"self_ref": "#/texts/1264", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 125, "bbox": {"l": 64.4358139038086, "t": 346.6530456542969, "r": 360.91705322265625, "b": 329.9898681640625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 36]}], "orig": "6.9 Triggers and functions (SECURED)", "text": "6.9 Triggers and functions (SECURED)", "level": 1}, {"self_ref": "#/texts/1265", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 125, "bbox": {"l": 135.90432739257812, "t": 314.7923278808594, "r": 547.2467651367188, "b": 255.75531005859375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 409]}], "orig": "There are some considerations that must be considered when there are triggers and functions on tables that have RCAC enabled. The purpose of SECURE for triggers and functions is so that a user who is allowed to create a trigger or function is not necessarily able to make it SECURE themselves. This prevents the trigger/function developer from adding code that skims off data that they are not allowed to see.", "text": "There are some considerations that must be considered when there are triggers and functions on tables that have RCAC enabled. The purpose of SECURE for triggers and functions is so that a user who is allowed to create a trigger or function is not necessarily able to make it SECURE themselves. This prevents the trigger/function developer from adding code that skims off data that they are not allowed to see."}, {"self_ref": "#/texts/1266", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 125, "bbox": {"l": 64.1463851928711, "t": 236.09356689453125, "r": 151.61126708984375, "b": 222.77587890625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 14]}], "orig": "6.9.1 Triggers", "text": "6.9.1 Triggers", "level": 1}, {"self_ref": "#/texts/1267", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 125, "bbox": {"l": 135.57107543945312, "t": 209.91900634765625, "r": 547.2885131835938, "b": 164.00341796875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 318]}], "orig": "Triggers have access to the data in rows outside of the row permission or column masking. An after trigger has access to the new row image after the permission has allowed the update or insert to occur. Therefore, the triggers can potentially change the insert or update image value so that it violates the permission.", "text": "Triggers have access to the data in rows outside of the row permission or column masking. An after trigger has access to the new row image after the permission has allowed the update or insert to occur. Therefore, the triggers can potentially change the insert or update image value so that it violates the permission."}, {"self_ref": "#/texts/1268", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 125, "bbox": {"l": 370.6949157714844, "t": 37.11236572265625, "r": 517.9691772460938, "b": 28.07379150390625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 36]}], "orig": "Chapter 6. Additional considerations", "text": "Chapter 6. Additional considerations"}, {"self_ref": "#/texts/1269", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 125, "bbox": {"l": 530.17626953125, "t": 37.8399658203125, "r": 547.2587890625, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 3]}], "orig": "109", "text": "109"}, {"self_ref": "#/texts/1270", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 126, "bbox": {"l": 64.38241577148438, "t": 37.776123046875, "r": 83.98200225830078, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 3]}], "orig": "110", "text": "110"}, {"self_ref": "#/texts/1271", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 126, "bbox": {"l": 98.55854797363281, "t": 37.32958984375, "r": 339.819580078125, "b": 27.9803466796875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/1272", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 126, "bbox": {"l": 135.9443817138672, "t": 721.4259643554688, "r": 547.1917114257812, "b": 675.0651245117188, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 362]}], "orig": "Any triggers that are defined on a table must be created with an attribute that designates that it is SECURED when RCAC definitions are created or altered for that table, as shown in Example 6-6. The same applies to a view that has an instead of trigger. That trigger must be secure at the point RCAC is enabled for any of the underlying tables the view is over.", "text": "Any triggers that are defined on a table must be created with an attribute that designates that it is SECURED when RCAC definitions are created or altered for that table, as shown in Example 6-6. The same applies to a view that has an instead of trigger. That trigger must be secure at the point RCAC is enabled for any of the underlying tables the view is over."}, {"self_ref": "#/texts/1273", "parent": {"cref": "#/body"}, "children": [], "label": "paragraph", "prov": [{"page_no": 126, "bbox": {"l": 136.2041778564453, "t": 663.527587890625, "r": 269.5399475097656, "b": 653.5504760742188, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 27]}], "orig": "Example 6-6 Trigger SECURED", "text": "Example 6-6 Trigger SECURED"}, {"self_ref": "#/texts/1274", "parent": {"cref": "#/body"}, "children": [], "label": "code", "prov": [{"page_no": 126, "bbox": {"l": 135.4769287109375, "t": 647.4617919921875, "r": 506.97552490234375, "b": 514.72314453125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 347]}], "orig": "/* Trigger created with the SECURED attribute */ CREATE TRIGGER PREVENT_MASK_SSN BEFORE INSERT OR UPDATE ON MY_LIB.EMP_INFO REFERENCING NEW ROW AS N OLD ROW AS O FOR EACH ROW MODE DB2ROW SECURED WHEN(SUBSTR(N.COL2_ssn,1,7) = 'XXX-XX-') BEGIN IF INSERTING THEN SET N.COL2_ssn = DEFAULT; ELSEIF UPDATING THEN SET N.COL2_ssn = O.COL2_ssn; END IF; END", "text": "/* Trigger created with the SECURED attribute */ CREATE TRIGGER PREVENT_MASK_SSN BEFORE INSERT OR UPDATE ON MY_LIB.EMP_INFO REFERENCING NEW ROW AS N OLD ROW AS O FOR EACH ROW MODE DB2ROW SECURED WHEN(SUBSTR(N.COL2_ssn,1,7) = 'XXX-XX-') BEGIN IF INSERTING THEN SET N.COL2_ssn = DEFAULT; ELSEIF UPDATING THEN SET N.COL2_ssn = O.COL2_ssn; END IF; END"}, {"self_ref": "#/texts/1275", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 126, "bbox": {"l": 64.11894226074219, "t": 489.5697021484375, "r": 166.5321044921875, "b": 476.65728759765625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 15]}], "orig": "6.9.2 Functions", "text": "6.9.2 Functions", "level": 1}, {"self_ref": "#/texts/1276", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 126, "bbox": {"l": 135.63002014160156, "t": 463.57928466796875, "r": 547.2664794921875, "b": 429.1574401855469, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 220]}], "orig": "Within a CREATE PERMISSION or CREATE MASK , a function can be called. Because that UDF has access to the data before the RCAC rules are applied, the SECURE attribute is required on that function, as shown in Example 6-7.", "text": "Within a CREATE PERMISSION or CREATE MASK , a function can be called. Because that UDF has access to the data before the RCAC rules are applied, the SECURE attribute is required on that function, as shown in Example 6-7."}, {"self_ref": "#/texts/1277", "parent": {"cref": "#/body"}, "children": [], "label": "code", "prov": [{"page_no": 126, "bbox": {"l": 134.9473114013672, "t": 416.7194519042969, "r": 547.4903564453125, "b": 266.78814697265625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 275]}], "orig": "Example 6-7 Specifying SECURED on a function CREATE PERMISSION SCHEMA.PERM1 ON SCHEMA.TABLE1 FOR ROWS WHERE MY_UDF(CURRENT_USER,COLUMN1) = 1 ENFORCED FOR ALL ACCESS ENABLE; CREATE FUNCTION MY_UDF (INP1 CHAR(32), INP2 INTEGER) Returns INTEGER LANGUAGE SQL CONTAINS SQL SECURED", "text": "Example 6-7 Specifying SECURED on a function CREATE PERMISSION SCHEMA.PERM1 ON SCHEMA.TABLE1 FOR ROWS WHERE MY_UDF(CURRENT_USER,COLUMN1) = 1 ENFORCED FOR ALL ACCESS ENABLE; CREATE FUNCTION MY_UDF (INP1 CHAR(32), INP2 INTEGER) Returns INTEGER LANGUAGE SQL CONTAINS SQL SECURED"}, {"self_ref": "#/texts/1278", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 126, "bbox": {"l": 135.8338165283203, "t": 251.36279296875, "r": 547.2584838867188, "b": 205.03076171875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 337]}], "orig": "The SECURED attribute of MY_UDF signifies that the function is considered secure for RCAC. If a function is called from an SQL statement, and references a column in a table that has RCAC, it must be declared as secure. In that case, if the secure function calls other functions, they are not validated to confirm whether they are secure.", "text": "The SECURED attribute of MY_UDF signifies that the function is considered secure for RCAC. If a function is called from an SQL statement, and references a column in a table that has RCAC, it must be declared as secure. In that case, if the secure function calls other functions, they are not validated to confirm whether they are secure."}, {"self_ref": "#/texts/1279", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 126, "bbox": {"l": 136.09840393066406, "t": 193.3720703125, "r": 282.6751708984375, "b": 183.0419921875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 32]}], "orig": "Consider the following examples:", "text": "Consider the following examples:"}, {"self_ref": "#/texts/1280", "parent": {"cref": "#/groups/149"}, "children": [], "label": "list_item", "prov": [{"page_no": 126, "bbox": {"l": 135.61990356445312, "t": 176.2091064453125, "r": 547.1887817382812, "b": 166.24098205566406, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 96]}], "orig": "GLYPH Table1 has RCAC defined and enabled. SELECT MY_UDF2(Column2) from schema.table1.", "text": "GLYPH Table1 has RCAC defined and enabled. SELECT MY_UDF2(Column2) from schema.table1.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1281", "parent": {"cref": "#/groups/149"}, "children": [], "label": "list_item", "prov": [{"page_no": 126, "bbox": {"l": 150.3736572265625, "t": 159.58026123046875, "r": 547.14794921875, "b": 137.1123046875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 148]}], "orig": "MY_UDF2 must be created with the SECURED attribute. If MY_UDF2 invokes MY_UDF3, there is no checking to ensure that it is also created with SECURED.", "text": "MY_UDF2 must be created with the SECURED attribute. If MY_UDF2 invokes MY_UDF3, there is no checking to ensure that it is also created with SECURED.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1282", "parent": {"cref": "#/groups/149"}, "children": [], "label": "list_item", "prov": [{"page_no": 126, "bbox": {"l": 150.47885131835938, "t": 130.7811279296875, "r": 517.9143676757812, "b": 108.28175354003906, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 88]}], "orig": "NOT SECURED is the default on the create function unless SECURED is explicitly selected.", "text": "NOT SECURED is the default on the create function unless SECURED is explicitly selected.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1283", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 126, "bbox": {"l": 150.35072326660156, "t": 101.58184814453125, "r": 523.39453125, "b": 78.7335205078125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 108]}], "orig": "This same rule applies for any function that might be invoked with a masked column specified as an argument.", "text": "This same rule applies for any function that might be invoked with a masked column specified as an argument."}, {"self_ref": "#/texts/1284", "parent": {"cref": "#/groups/150"}, "children": [], "label": "list_item", "prov": [{"page_no": 127, "bbox": {"l": 135.3511199951172, "t": 721.4021606445312, "r": 419.7916259765625, "b": 711.2779541015625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 74]}], "orig": "GLYPH Table2 column SSN has a column mask that is defined on it.", "text": "GLYPH Table2 column SSN has a column mask that is defined on it.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1285", "parent": {"cref": "#/groups/150"}, "children": [], "label": "list_item", "prov": [{"page_no": 127, "bbox": {"l": 150.33642578125, "t": 704.7354736328125, "r": 537.510986328125, "b": 682.29833984375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 131]}], "orig": "SELECT MY_UDF4(SSN) from table2. Because SSN has a column mask that is defined, MY_UDF4 must be created with the SECURED attribute.", "text": "SELECT MY_UDF4(SSN) from table2. Because SSN has a column mask that is defined, MY_UDF4 must be created with the SECURED attribute.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1286", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 127, "bbox": {"l": 64.35963439941406, "t": 655.222900390625, "r": 387.579833984375, "b": 638.777587890625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 42]}], "orig": "6.10 RCAC is only one part of the solution", "text": "6.10 RCAC is only one part of the solution", "level": 1}, {"self_ref": "#/texts/1287", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 127, "bbox": {"l": 135.8172607421875, "t": 622.630615234375, "r": 547.2545776367188, "b": 564.21142578125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 379]}], "orig": "When designing and implementing RCAC row permissions, special attention should be given to the effectiveness and limitations of controlling data access. Data can be housed in objects other than tables or physical files. The role and responsibility of the database user, for example, the database engineer, must be reconciled with their respective authority and access privileges.", "text": "When designing and implementing RCAC row permissions, special attention should be given to the effectiveness and limitations of controlling data access. Data can be housed in objects other than tables or physical files. The role and responsibility of the database user, for example, the database engineer, must be reconciled with their respective authority and access privileges."}, {"self_ref": "#/texts/1288", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 127, "bbox": {"l": 136.24098205566406, "t": 552.024658203125, "r": 544.8680419921875, "b": 529.3187866210938, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 146]}], "orig": "Figure 6-25 illustrates that object level security is the first check and that RCAC permissions provide control only on tables and physical files.", "text": "Figure 6-25 illustrates that object level security is the first check and that RCAC permissions provide control only on tables and physical files."}, {"self_ref": "#/texts/1289", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 127, "bbox": {"l": 136.0601806640625, "t": 227.9825439453125, "r": 366.7088317871094, "b": 218.522216796875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Figure 6-25 Object-level security and RCAC permissions", "text": "Figure 6-25 Object-level security and RCAC permissions"}, {"self_ref": "#/texts/1290", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 127, "bbox": {"l": 135.88059997558594, "t": 201.9534912109375, "r": 547.2168579101562, "b": 179.97857666015625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 121]}], "orig": "To get access to the table and the rows, the user must pass the object level authority test and the RCAC permission test.", "text": "To get access to the table and the rows, the user must pass the object level authority test and the RCAC permission test."}, {"self_ref": "#/texts/1291", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 127, "bbox": {"l": 135.60548400878906, "t": 167.94500732421875, "r": 547.2177124023438, "b": 133.54364013671875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 232]}], "orig": "The IBM i journal captures the transactional data and places an image of the row in the journal receiver. If the user has access to the journal receiver, the row image can be viewed if the user has authority to the journal receiver.", "text": "The IBM i journal captures the transactional data and places an image of the row in the journal receiver. If the user has access to the journal receiver, the row image can be viewed if the user has authority to the journal receiver."}, {"self_ref": "#/texts/1292", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 127, "bbox": {"l": 136.01368713378906, "t": 122.1590576171875, "r": 547.24267578125, "b": 87.8009033203125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 222]}], "orig": "Although the SQL Plan Cache data, the SQL Plan Cache Snapshot data, and the SQL Performance Monitor data do not reveal the results of queries, they can show the literal values that are passed along with the SQL statements.", "text": "Although the SQL Plan Cache data, the SQL Plan Cache Snapshot data, and the SQL Performance Monitor data do not reveal the results of queries, they can show the literal values that are passed along with the SQL statements."}, {"self_ref": "#/texts/1293", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 127, "bbox": {"l": 370.63580322265625, "t": 37.11981201171875, "r": 517.9691772460938, "b": 28.08636474609375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 36]}], "orig": "Chapter 6. Additional considerations", "text": "Chapter 6. Additional considerations"}, {"self_ref": "#/texts/1294", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 127, "bbox": {"l": 529.969970703125, "t": 37.74169921875, "r": 547.2587890625, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 3]}], "orig": "111", "text": "111"}, {"self_ref": "#/texts/1295", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 128, "bbox": {"l": 64.37667846679688, "t": 37.83319091796875, "r": 83.98200225830078, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 3]}], "orig": "112", "text": "112"}, {"self_ref": "#/texts/1296", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 128, "bbox": {"l": 98.55838012695312, "t": 37.4378662109375, "r": 339.87249755859375, "b": 27.9609375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/1297", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 128, "bbox": {"l": 135.75006103515625, "t": 721.4137573242188, "r": 547.2962646484375, "b": 675.1400146484375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 332]}], "orig": "The ability to monitor, analyze, debug, and tune data-centric applications effectively and efficiently requires some understanding of the underlying data, or at least the attributes of the data. The organization must be willing to reconcile the conflicting requirements of \"restricting access to data\", and \"needing access to data\".", "text": "The ability to monitor, analyze, debug, and tune data-centric applications effectively and efficiently requires some understanding of the underlying data, or at least the attributes of the data. The organization must be willing to reconcile the conflicting requirements of \"restricting access to data\", and \"needing access to data\"."}, {"self_ref": "#/texts/1298", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 129, "bbox": {"l": 81.0, "t": 523.457275390625, "r": 115.13253021240234, "b": 517.019287109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 10]}], "orig": "Chapter 7.", "text": "Chapter 7."}, {"self_ref": "#/texts/1299", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 129, "bbox": {"l": 500.3999938964844, "t": 698.831298828125, "r": 522.6177368164062, "b": 661.8682861328125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 1]}], "orig": "7", "text": "7"}, {"self_ref": "#/texts/1300", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 129, "bbox": {"l": 136.8000030517578, "t": 538.93505859375, "r": 547.2606201171875, "b": 481.8584899902344, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 40]}], "orig": "Row and Column Access Control management", "text": "Row and Column Access Control management", "level": 1}, {"self_ref": "#/texts/1301", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 129, "bbox": {"l": 135.95159912109375, "t": 443.9356689453125, "r": 530.336181640625, "b": 409.8076477050781, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 253]}], "orig": "After Row and Column Access Control (RCAC) definitions are defined and activated in a database, your management processes must be adjusted to accommodate these new security controls. This chapter highlights some of the changes that should be considered.", "text": "After Row and Column Access Control (RCAC) definitions are defined and activated in a database, your management processes must be adjusted to accommodate these new security controls. This chapter highlights some of the changes that should be considered."}, {"self_ref": "#/texts/1302", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 129, "bbox": {"l": 135.9311981201172, "t": 397.9674377441406, "r": 347.4121398925781, "b": 387.68560791015625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 49]}], "orig": "The following topics are covered in this chapter:", "text": "The following topics are covered in this chapter:"}, {"self_ref": "#/texts/1303", "parent": {"cref": "#/groups/151"}, "children": [], "label": "list_item", "prov": [{"page_no": 129, "bbox": {"l": 135.7118682861328, "t": 381.1703796386719, "r": 356.2835388183594, "b": 371.0793151855469, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 57]}], "orig": "GLYPH Managing row permissions and column masks", "text": "GLYPH Managing row permissions and column masks", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1304", "parent": {"cref": "#/groups/151"}, "children": [], "label": "list_item", "prov": [{"page_no": 129, "bbox": {"l": 135.60548400878906, "t": 369.25701904296875, "r": 406.06463623046875, "b": 359.0097351074219, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 69]}], "orig": "GLYPH Managing tables with row permissions and column masks", "text": "GLYPH Managing tables with row permissions and column masks", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1305", "parent": {"cref": "#/groups/151"}, "children": [], "label": "list_item", "prov": [{"page_no": 129, "bbox": {"l": 135.78424072265625, "t": 357.164306640625, "r": 323.0509338378906, "b": 346.86358642578125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "GLYPH Monitoring and auditing function usage", "text": "GLYPH Monitoring and auditing function usage", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1306", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 129, "bbox": {"l": 63.72496032714844, "t": 37.267822265625, "r": 257.24334716796875, "b": 27.93780517578125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 48]}], "orig": "' Copyright IBM Corp. 2014. All rights reserved.", "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"self_ref": "#/texts/1307", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 129, "bbox": {"l": 530.0635986328125, "t": 37.69476318359375, "r": 547.2587890625, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 3]}], "orig": "113", "text": "113"}, {"self_ref": "#/texts/1308", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 130, "bbox": {"l": 64.16378021240234, "t": 718.4564208984375, "r": 449.7918701171875, "b": 702.5186157226562, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 45]}], "orig": "7.1 Managing row permissions and column masks", "text": "7.1 Managing row permissions and column masks", "level": 1}, {"self_ref": "#/texts/1309", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 130, "bbox": {"l": 135.75418090820312, "t": 685.8709106445312, "r": 541.12109375, "b": 675.7001342773438, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 84]}], "orig": "This section focuses on the management of the RCAC row permissions and column masks.", "text": "This section focuses on the management of the RCAC row permissions and column masks."}, {"self_ref": "#/texts/1310", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 130, "bbox": {"l": 63.90059280395508, "t": 656.04248046875, "r": 228.30335998535156, "b": 643.1283569335938, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 23]}], "orig": "7.1.1 Source management", "text": "7.1.1 Source management", "level": 1}, {"self_ref": "#/texts/1311", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 130, "bbox": {"l": 135.94558715820312, "t": 630.015625, "r": 546.4277954101562, "b": 583.6402587890625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 287]}], "orig": "The SQL statements that are used to define row permissions and column masks should be managed with a change management process. Ideally, you already are using a change management process for your database definitions, and that same process can be extended to cover your RCAC definitions.", "text": "The SQL statements that are used to define row permissions and column masks should be managed with a change management process. Ideally, you already are using a change management process for your database definitions, and that same process can be extended to cover your RCAC definitions."}, {"self_ref": "#/texts/1312", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 130, "bbox": {"l": 135.89431762695312, "t": 571.918212890625, "r": 547.2933959960938, "b": 490.18017578125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 596]}], "orig": "If you are using SQL DDL to define your DB2 tables, then you have the option of adding the RCAC definitions to the same source file as the table definition. The benefit of this approach is that it keeps all DDL that is related to a table in a single source file. The downside is that if you must re-create only the RCAC definitions and leave the table unchanged, then you must identify and extract only the RCAC definitions from the source file. There are situations where the row permissions and column masks must be changed or re-created without changing the definition of the associated table.", "text": "If you are using SQL DDL to define your DB2 tables, then you have the option of adding the RCAC definitions to the same source file as the table definition. The benefit of this approach is that it keeps all DDL that is related to a table in a single source file. The downside is that if you must re-create only the RCAC definitions and leave the table unchanged, then you must identify and extract only the RCAC definitions from the source file. There are situations where the row permissions and column masks must be changed or re-created without changing the definition of the associated table."}, {"self_ref": "#/texts/1313", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 130, "bbox": {"l": 63.8327522277832, "t": 470.3725891113281, "r": 231.4643096923828, "b": 457.04302978515625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 27]}], "orig": "7.1.2 Modifying definitions", "text": "7.1.2 Modifying definitions", "level": 1}, {"self_ref": "#/texts/1314", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 130, "bbox": {"l": 135.9163360595703, "t": 443.97235107421875, "r": 547.1988525390625, "b": 397.6696472167969, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 334]}], "orig": "After RCAC is activated for a table, the row permission and column mask definitions can be re-created to change the data access behavior for that table. Usage of the OR REPLACE clause on the CREATE MASK and CREATE PERMISSION SQL statements simplifies the re-creation process by folding in the deletion of the existing RCAC definition.", "text": "After RCAC is activated for a table, the row permission and column mask definitions can be re-created to change the data access behavior for that table. Usage of the OR REPLACE clause on the CREATE MASK and CREATE PERMISSION SQL statements simplifies the re-creation process by folding in the deletion of the existing RCAC definition."}, {"self_ref": "#/texts/1315", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 130, "bbox": {"l": 135.8429718017578, "t": 385.9662170410156, "r": 547.2922973632812, "b": 339.7766418457031, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 296]}], "orig": "This capability makes it easy to change your RCAC definitions as you test the controls with your applications and identify tweaks that must be made to your RCAC implementation. However, re-creation of RCAC definitions does require an exclusive lock to be acquired on the table during the process.", "text": "This capability makes it easy to change your RCAC definitions as you test the controls with your applications and identify tweaks that must be made to your RCAC implementation. However, re-creation of RCAC definitions does require an exclusive lock to be acquired on the table during the process."}, {"self_ref": "#/texts/1316", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 130, "bbox": {"l": 64.0130844116211, "t": 320.2338562011719, "r": 214.6126708984375, "b": 307.0821228027344, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 24]}], "orig": "7.1.3 Turning on and off", "text": "7.1.3 Turning on and off", "level": 1}, {"self_ref": "#/texts/1317", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 130, "bbox": {"l": 136.03684997558594, "t": 293.85089111328125, "r": 547.182861328125, "b": 235.916259765625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 435]}], "orig": "As described in 3.1.2, \"Enabling and activating RCAC\" on page 16, the SQL ALTER statement can turn on and off row permissions and column masks. The ALTER MASK and A LTER PERMISSION statements allow an individual row permission or column mask to be turned off with the DISABLE option and back on with the ENABLE option. The ALTER TABLE statement can deactivate enforcement of all the row permissions and column masks for a single table.", "text": "As described in 3.1.2, \"Enabling and activating RCAC\" on page 16, the SQL ALTER statement can turn on and off row permissions and column masks. The ALTER MASK and A LTER PERMISSION statements allow an individual row permission or column mask to be turned off with the DISABLE option and back on with the ENABLE option. The ALTER TABLE statement can deactivate enforcement of all the row permissions and column masks for a single table."}, {"self_ref": "#/texts/1318", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 130, "bbox": {"l": 142.16134643554688, "t": 218.0211181640625, "r": 541.1311645507812, "b": 171.52093505859375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 300]}], "orig": "Important: Although these capabilities make it easy to temporarily turn off RCAC security so that you can make environment or application changes, these processes require an exclusive lock to be obtained on a table. Therefore, this activity must be planned carefully to avoid disruptions and outages.", "text": "Important: Although these capabilities make it easy to temporarily turn off RCAC security so that you can make environment or application changes, these processes require an exclusive lock to be obtained on a table. Therefore, this activity must be planned carefully to avoid disruptions and outages."}, {"self_ref": "#/texts/1319", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 130, "bbox": {"l": 64.14586639404297, "t": 147.51336669921875, "r": 183.9399871826172, "b": 134.349365234375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 18]}], "orig": "7.1.4 Regenerating", "text": "7.1.4 Regenerating", "level": 1}, {"self_ref": "#/texts/1320", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 130, "bbox": {"l": 136.13162231445312, "t": 121.35113525390625, "r": 547.3272705078125, "b": 99.15777587890625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 172]}], "orig": "DB2 also can regenerate an existing row permission or column mask. This regenerate option can be useful with more complex RCAC definitions that reference other DB2 objects.", "text": "DB2 also can regenerate an existing row permission or column mask. This regenerate option can be useful with more complex RCAC definitions that reference other DB2 objects."}, {"self_ref": "#/texts/1321", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 130, "bbox": {"l": 64.35222625732422, "t": 37.7677001953125, "r": 83.98200225830078, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 3]}], "orig": "114", "text": "114"}, {"self_ref": "#/texts/1322", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 130, "bbox": {"l": 98.60916137695312, "t": 37.29241943359375, "r": 339.819580078125, "b": 28.02947998046875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/1323", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 131, "bbox": {"l": 135.9884796142578, "t": 721.5679931640625, "r": 547.2010498046875, "b": 639.279052734375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 498]}], "orig": "For example, consider a row permission on an ACCOUNTS table (PERMISSION1_ON_ACCOUNTS). The ACCOUNTS table row permission references and compares columns in the CUSTOMERS table. When the definition of the CUSTOMERS table changes, DB2 does not check to determine whether the change to the CUSTOMERS table breaks the ACCOUNTS table row permission. If this table definition change does break the row permission, an error does not surface until an application tries to read rows from the ACCOUNTS table.", "text": "For example, consider a row permission on an ACCOUNTS table (PERMISSION1_ON_ACCOUNTS). The ACCOUNTS table row permission references and compares columns in the CUSTOMERS table. When the definition of the CUSTOMERS table changes, DB2 does not check to determine whether the change to the CUSTOMERS table breaks the ACCOUNTS table row permission. If this table definition change does break the row permission, an error does not surface until an application tries to read rows from the ACCOUNTS table."}, {"self_ref": "#/texts/1324", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 131, "bbox": {"l": 135.99624633789062, "t": 627.4041137695312, "r": 547.1602172851562, "b": 580.9271240234375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 357]}], "orig": "Instead of waiting for an application to detect this error, the REGENERATE option can be used on the ACCOUNTS row permission. The REGENERATE option returns an error if the change in the CUSTOMERS table definition causes the row permission to be invalid. In this way, the row permission can be proactively corrected before an application discovers the error.", "text": "Instead of waiting for an application to detect this error, the REGENERATE option can be used on the ACCOUNTS row permission. The REGENERATE option returns an error if the change in the CUSTOMERS table definition causes the row permission to be invalid. In this way, the row permission can be proactively corrected before an application discovers the error."}, {"self_ref": "#/texts/1325", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 131, "bbox": {"l": 63.91755676269531, "t": 553.80029296875, "r": 536.6239013671875, "b": 537.7216796875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 57]}], "orig": "7.2 Managing tables with row permissions and column masks", "text": "7.2 Managing tables with row permissions and column masks", "level": 1}, {"self_ref": "#/texts/1326", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 131, "bbox": {"l": 135.8260498046875, "t": 521.4241943359375, "r": 547.2647094726562, "b": 499.2984619140625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 94]}], "orig": "This section examines the object management considerations after RCAC is added to a DB2 table.", "text": "This section examines the object management considerations after RCAC is added to a DB2 table."}, {"self_ref": "#/texts/1327", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 131, "bbox": {"l": 63.97272872924805, "t": 479.5977783203125, "r": 205.3369598388672, "b": 466.6372985839844, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 22]}], "orig": "7.2.1 Save and restore", "text": "7.2.1 Save and restore", "level": 1}, {"self_ref": "#/texts/1328", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 131, "bbox": {"l": 135.9362335205078, "t": 453.3270568847656, "r": 547.1621704101562, "b": 407.25885009765625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 261]}], "orig": "Row permissions and column masks are stored in the DB2 table object itself, so they are automatically saved and restored when the DB2 table object is saved and restored. Therefore, no adjustments must be made to your database backup process to accommodate RCAC.", "text": "Row permissions and column masks are stored in the DB2 table object itself, so they are automatically saved and restored when the DB2 table object is saved and restored. Therefore, no adjustments must be made to your database backup process to accommodate RCAC."}, {"self_ref": "#/texts/1329", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 131, "bbox": {"l": 135.97621154785156, "t": 395.47320556640625, "r": 547.2257080078125, "b": 361.052978515625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 268]}], "orig": "Save and restore processing works fine with RCAC if the RCAC definition does not reference other DB2 objects other than the table over which they are defined. When the RCAC definition has dependencies on other DB2 objects, the restore process is much more challenging.", "text": "Save and restore processing works fine with RCAC if the RCAC definition does not reference other DB2 objects other than the table over which they are defined. When the RCAC definition has dependencies on other DB2 objects, the restore process is much more challenging."}, {"self_ref": "#/texts/1330", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 131, "bbox": {"l": 283.8012390136719, "t": 37.15869140625, "r": 518.0120849609375, "b": 27.9959716796875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 51]}], "orig": "Chapter 7. Row and Column Access Control management", "text": "Chapter 7. Row and Column Access Control management"}, {"self_ref": "#/texts/1331", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 131, "bbox": {"l": 530.0354614257812, "t": 37.67431640625, "r": 547.2587890625, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 3]}], "orig": "115", "text": "115"}, {"self_ref": "#/texts/1332", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 132, "bbox": {"l": 64.29827880859375, "t": 37.77142333984375, "r": 83.98200225830078, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 3]}], "orig": "116", "text": "116"}, {"self_ref": "#/texts/1333", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 132, "bbox": {"l": 98.44544219970703, "t": 37.3984375, "r": 339.8977355957031, "b": 28.01568603515625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/1334", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 132, "bbox": {"l": 135.94534301757812, "t": 721.4252319335938, "r": 546.4418334960938, "b": 591.2671508789062, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 872]}], "orig": "For example, assume that the BANKSCHEMA library (which is the system name or short name for the schema long name of BANK_SCHEMA) is saved and restored into a library named BANK_TEST. Recall from the example in 7.1.4, \"Regenerating\" on page 114 that the row permission on the ACCOUNTS table references the CUSTOMERS table (\u2026 SELECT C.CUSTOMER_ID FROM CUSTOMERS C \u2026). After the restore operation, the ACCOUNTS row permission still references the CUSTOMERS table in BANK_SCHEMA because DB2 explicitly qualifies all object references when the row permission or column mask is created. The restore processing does not change the explicit qualification from BANK_SCHEMA to BANK_TEST. As a result, the restored ACCOUNTS row permission now depends on DB2 objects residing in a different schema, even though it was not created that way originally. For more details, see Figure 7-1.", "text": "For example, assume that the BANKSCHEMA library (which is the system name or short name for the schema long name of BANK_SCHEMA) is saved and restored into a library named BANK_TEST. Recall from the example in 7.1.4, \"Regenerating\" on page 114 that the row permission on the ACCOUNTS table references the CUSTOMERS table (\u2026 SELECT C.CUSTOMER_ID FROM CUSTOMERS C \u2026). After the restore operation, the ACCOUNTS row permission still references the CUSTOMERS table in BANK_SCHEMA because DB2 explicitly qualifies all object references when the row permission or column mask is created. The restore processing does not change the explicit qualification from BANK_SCHEMA to BANK_TEST. As a result, the restored ACCOUNTS row permission now depends on DB2 objects residing in a different schema, even though it was not created that way originally. For more details, see Figure 7-1."}, {"self_ref": "#/texts/1335", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 132, "bbox": {"l": 135.7970428466797, "t": 335.1150817871094, "r": 333.88006591796875, "b": 325.72674560546875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 48]}], "orig": "Figure 7-1 Restoring tables to different schemas", "text": "Figure 7-1 Restoring tables to different schemas"}, {"self_ref": "#/texts/1336", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 132, "bbox": {"l": 135.7681427001953, "t": 309.2113342285156, "r": 547.2655639648438, "b": 238.95770263671875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 477]}], "orig": "The only way to fix this issue is to re-create the row permission or column mask after the restore operation. Re-creation of the row permission or column mask is required only for definitions that reference other DB2 objects, but it is simpler to re-create all of the RCAC definitions instead of a subset. For example, generate the SQL using System i Navigator, clear the \"Schema qualify names for objects\" and select the \"OR REPLACE clause\", and then run the generated script.", "text": "The only way to fix this issue is to re-create the row permission or column mask after the restore operation. Re-creation of the row permission or column mask is required only for definitions that reference other DB2 objects, but it is simpler to re-create all of the RCAC definitions instead of a subset. For example, generate the SQL using System i Navigator, clear the \"Schema qualify names for objects\" and select the \"OR REPLACE clause\", and then run the generated script."}, {"self_ref": "#/texts/1337", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 132, "bbox": {"l": 63.921077728271484, "t": 219.65240478515625, "r": 196.41009521484375, "b": 206.39764404296875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 21]}], "orig": "7.2.2 Table migration", "text": "7.2.2 Table migration", "level": 1}, {"self_ref": "#/texts/1338", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 132, "bbox": {"l": 135.8064727783203, "t": 193.502197265625, "r": 538.5225830078125, "b": 146.933837890625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 329]}], "orig": "There are several IBM i CL commands, such as Move Object ( MOVOBJ ), Create Duplicate Object ( CRTDUPOBJ ), and Copy Library ( CPYLIB ), which are used to migrate a table from one library to another one. Often, this migration is done to create different versions of the table that can be used for development or testing purposes.", "text": "There are several IBM i CL commands, such as Move Object ( MOVOBJ ), Create Duplicate Object ( CRTDUPOBJ ), and Copy Library ( CPYLIB ), which are used to migrate a table from one library to another one. Often, this migration is done to create different versions of the table that can be used for development or testing purposes."}, {"self_ref": "#/texts/1339", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 132, "bbox": {"l": 135.9099884033203, "t": 135.37615966796875, "r": 542.6978149414062, "b": 100.94818115234375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 255]}], "orig": "The migration of a table with RCAC has the same challenges as restore processing. If the RCAC definition references other DB2 objects, then IBM i CL commands do not change the schema names that are explicitly qualified by the DB2 internal RCAC processing.", "text": "The migration of a table with RCAC has the same challenges as restore processing. If the RCAC definition references other DB2 objects, then IBM i CL commands do not change the schema names that are explicitly qualified by the DB2 internal RCAC processing."}, {"self_ref": "#/texts/1340", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 132, "bbox": {"l": 135.79965209960938, "t": 89.41839599609375, "r": 524.2598876953125, "b": 67.21551513671875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 132]}], "orig": "Again, re-creating the row permission or column mask is the only way to fix the issue of references to DB2 objects in other schemas.", "text": "Again, re-creating the row permission or column mask is the only way to fix the issue of references to DB2 objects in other schemas."}, {"self_ref": "#/texts/1341", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 133, "bbox": {"l": 64.03428649902344, "t": 721.896728515625, "r": 396.1838684082031, "b": 705.3358154296875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 42]}], "orig": "7.3 Monitoring and auditing function usage", "text": "7.3 Monitoring and auditing function usage", "level": 1}, {"self_ref": "#/texts/1342", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 133, "bbox": {"l": 135.9032745361328, "t": 689.2759399414062, "r": 546.3292236328125, "b": 619.1384887695312, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 526]}], "orig": "While establishing proper roles for users, separating duties using function usage IDs, and defining RCAC policies allows you to implement an effective and pervasive data access control scheme. How do you monitor and audit everyone who is involved in the implementation of that scheme? The answer is to use IBM i journaling. A special journal that is called QAUDJRN, also known as the audit journal , can provide a record and audit trail of many security relevant events that occur on the system, including RCAC-related events.", "text": "While establishing proper roles for users, separating duties using function usage IDs, and defining RCAC policies allows you to implement an effective and pervasive data access control scheme. How do you monitor and audit everyone who is involved in the implementation of that scheme? The answer is to use IBM i journaling. A special journal that is called QAUDJRN, also known as the audit journal , can provide a record and audit trail of many security relevant events that occur on the system, including RCAC-related events."}, {"self_ref": "#/texts/1343", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 133, "bbox": {"l": 135.86427307128906, "t": 607.3901977539062, "r": 547.2933349609375, "b": 536.7468872070312, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 502]}], "orig": "The tasks and operations of security administrators and database engineers who are collaborating can (and should) be effectively monitored and audited to ensure that the organization's data access control and governance policies are in place and enabled. For example, the Database Engineers can be involved in designing and developing functions and triggers that must be secured using the SECURE attribute. Otherwise, without properly securing functions and triggers, the RCAC controls can be bypassed.", "text": "The tasks and operations of security administrators and database engineers who are collaborating can (and should) be effectively monitored and audited to ensure that the organization's data access control and governance policies are in place and enabled. For example, the Database Engineers can be involved in designing and developing functions and triggers that must be secured using the SECURE attribute. Otherwise, without properly securing functions and triggers, the RCAC controls can be bypassed."}, {"self_ref": "#/texts/1344", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 133, "bbox": {"l": 135.72532653808594, "t": 525.425537109375, "r": 546.2147216796875, "b": 491.26055908203125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 193]}], "orig": "A new journal entry type of \"AX\" for journal entry code \"T\" (audit trail) is now used for RCAC. More information about the journaling of RCAC operations can be found in the following documents:", "text": "A new journal entry type of \"AX\" for journal entry code \"T\" (audit trail) is now used for RCAC. More information about the journaling of RCAC operations can be found in the following documents:"}, {"self_ref": "#/texts/1345", "parent": {"cref": "#/groups/152"}, "children": [], "label": "list_item", "prov": [{"page_no": 133, "bbox": {"l": 135.6563262939453, "t": 484.5631408691406, "r": 396.8944396972656, "b": 474.28076171875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 70]}], "orig": "GLYPH IBM i Version 7.2 Journal Management Guide , found at:", "text": "GLYPH IBM i Version 7.2 Journal Management Guide , found at:", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1346", "parent": {"cref": "#/groups/152"}, "children": [], "label": "list_item", "prov": [{"page_no": 133, "bbox": {"l": 150.67897033691406, "t": 467.1967468261719, "r": 545.9945678710938, "b": 445.051025390625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 92]}], "orig": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzaki/rzakiprintthis .htm?lang=en", "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzaki/rzakiprintthis .htm?lang=en", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1347", "parent": {"cref": "#/groups/152"}, "children": [], "label": "list_item", "prov": [{"page_no": 133, "bbox": {"l": 135.60202026367188, "t": 438.09796142578125, "r": 387.5917663574219, "b": 427.25750732421875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 70]}], "orig": "GLYPH IBM i Version 7.2 Security Reference Guide , found at:", "text": "GLYPH IBM i Version 7.2 Security Reference Guide , found at:", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1348", "parent": {"cref": "#/groups/152"}, "children": [], "label": "list_item", "prov": [{"page_no": 133, "bbox": {"l": 150.6260986328125, "t": 421.3846740722656, "r": 546.2595825195312, "b": 399.26019287109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 90]}], "orig": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzarl/rzarlkickoff.h tm?lang=en", "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzarl/rzarlkickoff.h tm?lang=en", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1349", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 133, "bbox": {"l": 283.7824401855469, "t": 37.1876220703125, "r": 518.0120849609375, "b": 27.99267578125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 51]}], "orig": "Chapter 7. Row and Column Access Control management", "text": "Chapter 7. Row and Column Access Control management"}, {"self_ref": "#/texts/1350", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 133, "bbox": {"l": 530.0186157226562, "t": 37.769775390625, "r": 547.265380859375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 3]}], "orig": "117", "text": "117"}, {"self_ref": "#/texts/1351", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 134, "bbox": {"l": 64.53031158447266, "t": 37.923583984375, "r": 83.98200225830078, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 3]}], "orig": "118", "text": "118"}, {"self_ref": "#/texts/1352", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 134, "bbox": {"l": 98.5851821899414, "t": 37.57379150390625, "r": 340.1449890136719, "b": 27.8642578125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/1353", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 135, "bbox": {"l": 81.0, "t": 523.457275390625, "r": 115.13253021240234, "b": 517.019287109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 10]}], "orig": "Chapter 8.", "text": "Chapter 8."}, {"self_ref": "#/texts/1354", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 135, "bbox": {"l": 136.7628173828125, "t": 538.7010498046875, "r": 479.93341064453125, "b": 482.1217956542969, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 34]}], "orig": "Designing and planning for success", "text": "Designing and planning for success", "level": 1}, {"self_ref": "#/texts/1355", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 135, "bbox": {"l": 135.9272003173828, "t": 444.05712890625, "r": 538.4698486328125, "b": 397.414794921875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 285]}], "orig": "Although successfully implementing Row and Column Access Control (RCAC) is based on knowledge and skills, designing and planning are fundamental aspects. This chapter describes the need for a deep understanding of the technology, and good design, proper planning, and adequate testing.", "text": "Although successfully implementing Row and Column Access Control (RCAC) is based on knowledge and skills, designing and planning are fundamental aspects. This chapter describes the need for a deep understanding of the technology, and good design, proper planning, and adequate testing."}, {"self_ref": "#/texts/1356", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 135, "bbox": {"l": 135.9006805419922, "t": 385.872802734375, "r": 347.4120788574219, "b": 375.73284912109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 49]}], "orig": "The following topics are covered in this chapter:", "text": "The following topics are covered in this chapter:"}, {"self_ref": "#/texts/1357", "parent": {"cref": "#/groups/153"}, "children": [], "label": "list_item", "prov": [{"page_no": 135, "bbox": {"l": 135.63284301757812, "t": 369.337890625, "r": 411.53955078125, "b": 359.0141296386719, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 70]}], "orig": "GLYPH Implementing RCAC with good design and proper planning", "text": "GLYPH Implementing RCAC with good design and proper planning", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1358", "parent": {"cref": "#/groups/153"}, "children": [], "label": "list_item", "prov": [{"page_no": 135, "bbox": {"l": 135.8564910888672, "t": 357.5201721191406, "r": 284.81951904296875, "b": 347.0796813964844, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 46]}], "orig": "GLYPH DB2 for i Center of Excellence", "text": "GLYPH DB2 for i Center of Excellence", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1359", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 135, "bbox": {"l": 63.695404052734375, "t": 37.26922607421875, "r": 257.24334716796875, "b": 27.91717529296875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 48]}], "orig": "' Copyright IBM Corp. 2014. All rights reserved.", "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"self_ref": "#/texts/1360", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 135, "bbox": {"l": 530.0399169921875, "t": 37.78558349609375, "r": 547.2623901367188, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 3]}], "orig": "119", "text": "119"}, {"self_ref": "#/texts/1361", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 135, "bbox": {"l": 500.3999938964844, "t": 698.8610229492188, "r": 522.6177368164062, "b": 661.8682861328125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 1]}], "orig": "8", "text": "8"}, {"self_ref": "#/texts/1362", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 136, "bbox": {"l": 64.5673599243164, "t": 718.5274658203125, "r": 544.5512084960938, "b": 701.9832153320312, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 58]}], "orig": "8.1 Implementing RCAC with good design and proper planning", "text": "8.1 Implementing RCAC with good design and proper planning", "level": 1}, {"self_ref": "#/texts/1363", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 136, "bbox": {"l": 135.9280242919922, "t": 686.1177368164062, "r": 544.7098999023438, "b": 652.1786499023438, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 197]}], "orig": "By using RCAC, the row and column data that is returned to the requester can be controlled and governed by a set of data-centric policies that are defined with SQL and implemented within DB2 for i.", "text": "By using RCAC, the row and column data that is returned to the requester can be controlled and governed by a set of data-centric policies that are defined with SQL and implemented within DB2 for i."}, {"self_ref": "#/texts/1364", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 136, "bbox": {"l": 136.055419921875, "t": 640.219482421875, "r": 545.359375, "b": 593.98486328125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 318]}], "orig": "RCAC provides fine-grained access control and is complementary to IBM i object-level security. With the new RCAC feature of DB2 for i, the database engineer, in partnership with the data owner and security officer, can ensure that users have access to the data based on their level of authorization and responsibility.", "text": "RCAC provides fine-grained access control and is complementary to IBM i object-level security. With the new RCAC feature of DB2 for i, the database engineer, in partnership with the data owner and security officer, can ensure that users have access to the data based on their level of authorization and responsibility."}, {"self_ref": "#/texts/1365", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 136, "bbox": {"l": 135.8184356689453, "t": 582.028076171875, "r": 547.2506103515625, "b": 524.1407470703125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 365]}], "orig": "This situation also can include separation of duties, such as allowing the application developers to design and implement the solutions, but restricting them from accessing the production data based on policy. Just because someone writes and owns the program, it does not mean that they have access to all the sensitive data that their program can potentially read.", "text": "This situation also can include separation of duties, such as allowing the application developers to design and implement the solutions, but restricting them from accessing the production data based on policy. Just because someone writes and owns the program, it does not mean that they have access to all the sensitive data that their program can potentially read."}, {"self_ref": "#/texts/1366", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 136, "bbox": {"l": 135.80397033691406, "t": 511.94879150390625, "r": 500.5572509765625, "b": 501.5162048339844, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 78]}], "orig": "This paper has described the following pervasive power and advantages of RCAC:", "text": "This paper has described the following pervasive power and advantages of RCAC:"}, {"self_ref": "#/texts/1367", "parent": {"cref": "#/groups/154"}, "children": [], "label": "list_item", "prov": [{"page_no": 136, "bbox": {"l": 135.56689453125, "t": 495.3780212402344, "r": 429.4506530761719, "b": 484.64202880859375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 79]}], "orig": "GLYPH Access can be controlled through simple or sophisticated logic.", "text": "GLYPH Access can be controlled through simple or sophisticated logic.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1368", "parent": {"cref": "#/groups/154"}, "children": [], "label": "list_item", "prov": [{"page_no": 136, "bbox": {"l": 135.60137939453125, "t": 483.2593688964844, "r": 351.649169921875, "b": 472.8739929199219, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 62]}], "orig": "GLYPH Virtually no application changes are required.", "text": "GLYPH Virtually no application changes are required.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1369", "parent": {"cref": "#/groups/154"}, "children": [], "label": "list_item", "prov": [{"page_no": 136, "bbox": {"l": 135.644775390625, "t": 471.4268798828125, "r": 491.7782287597656, "b": 460.9553527832031, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 93]}], "orig": "GLYPH The implementation of the access policy is part of the DB2 data access layer.", "text": "GLYPH The implementation of the access policy is part of the DB2 data access layer.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1370", "parent": {"cref": "#/groups/154"}, "children": [], "label": "list_item", "prov": [{"page_no": 136, "bbox": {"l": 135.75515747070312, "t": 459.736572265625, "r": 426.24566650390625, "b": 448.82037353515625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 81]}], "orig": "GLYPH Table data is protected regardless of the interface that is used.", "text": "GLYPH Table data is protected regardless of the interface that is used.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1371", "parent": {"cref": "#/groups/154"}, "children": [], "label": "list_item", "prov": [{"page_no": 136, "bbox": {"l": 135.80447387695312, "t": 447.8392333984375, "r": 433.2464599609375, "b": 436.8045959472656, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 80]}], "orig": "GLYPH No user is inherently exempted from the access control policies.", "text": "GLYPH No user is inherently exempted from the access control policies.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1372", "parent": {"cref": "#/groups/154"}, "children": [], "label": "list_item", "prov": [{"page_no": 136, "bbox": {"l": 135.60531616210938, "t": 435.288330078125, "r": 383.5718688964844, "b": 424.9714660644531, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 67]}], "orig": "GLYPH Groups of users can share policies and permissions.", "text": "GLYPH Groups of users can share policies and permissions.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1373", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 136, "bbox": {"l": 135.60353088378906, "t": 413.26202392578125, "r": 547.245361328125, "b": 330.8507385253906, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 623]}], "orig": "A deep understanding of the technology, and proper planning, good design, adequate testing, and monitored deployment are critical for success. This includes the usage of quality assurance testing, and realistic performance and scalability exercises that serve to demonstrate that all of your requirements are being met. As part of the verification process, the usage of in-depth proofs of concepts and proofs of technology are recommended, if not essential. When RCAC is activated, the results of queries can change. Anticipating this change and realizing the effects of RCAC before going live are of the utmost importance.", "text": "A deep understanding of the technology, and proper planning, good design, adequate testing, and monitored deployment are critical for success. This includes the usage of quality assurance testing, and realistic performance and scalability exercises that serve to demonstrate that all of your requirements are being met. As part of the verification process, the usage of in-depth proofs of concepts and proofs of technology are recommended, if not essential. When RCAC is activated, the results of queries can change. Anticipating this change and realizing the effects of RCAC before going live are of the utmost importance."}, {"self_ref": "#/texts/1374", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 136, "bbox": {"l": 135.79904174804688, "t": 319.08209228515625, "r": 547.19580078125, "b": 260.80133056640625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 380]}], "orig": "With the ever-growing value of data, and the vast and varied database technology that is available today, it is crucial to have a person or persons on staff who specialize in data-centric design, development, and deployment. This role and responsibility falls on the database engineer. With the availability of DB2 RCAC, the importance of full-time database engineering has grown.", "text": "With the ever-growing value of data, and the vast and varied database technology that is available today, it is crucial to have a person or persons on staff who specialize in data-centric design, development, and deployment. This role and responsibility falls on the database engineer. With the availability of DB2 RCAC, the importance of full-time database engineering has grown."}, {"self_ref": "#/texts/1375", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 136, "bbox": {"l": 64.42830657958984, "t": 233.9404296875, "r": 324.01275634765625, "b": 217.91627502441406, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 34]}], "orig": "8.2 DB2 for i Center of Excellence", "text": "8.2 DB2 for i Center of Excellence", "level": 1}, {"self_ref": "#/texts/1376", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 136, "bbox": {"l": 135.96109008789062, "t": 201.5556640625, "r": 533.2318115234375, "b": 142.5989990234375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 354]}], "orig": "To further assist you with understanding and implementing RCAC, the DB2 for i Center of Excellence team offers an RCAC education and consulting workshop. In addition to knowledge transfer, a working session allows for a review of your data access control requirements, review of the current environment, solution ideation, and high-level solution design.", "text": "To further assist you with understanding and implementing RCAC, the DB2 for i Center of Excellence team offers an RCAC education and consulting workshop. In addition to knowledge transfer, a working session allows for a review of your data access control requirements, review of the current environment, solution ideation, and high-level solution design."}, {"self_ref": "#/texts/1377", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 136, "bbox": {"l": 136.06277465820312, "t": 131.29010009765625, "r": 547.2406005859375, "b": 109.11979675292969, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 114]}], "orig": "If you are interested in engaging with the DB2 for i Center of Excellence, contact Mike Cain at mcain@us.ibm.com .", "text": "If you are interested in engaging with the DB2 for i Center of Excellence, contact Mike Cain at mcain@us.ibm.com ."}, {"self_ref": "#/texts/1378", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 136, "bbox": {"l": 64.42459869384766, "t": 37.74468994140625, "r": 83.98200225830078, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 3]}], "orig": "120", "text": "120"}, {"self_ref": "#/texts/1379", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 136, "bbox": {"l": 98.57987976074219, "t": 37.353759765625, "r": 339.84716796875, "b": 27.97216796875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/1380", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 137, "bbox": {"l": 74.4000015258789, "t": 523.457275390625, "r": 115.15289306640625, "b": 517.019287109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 11]}], "orig": "Appendix A.", "text": "Appendix A."}, {"self_ref": "#/texts/1381", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 137, "bbox": {"l": 136.8000030517578, "t": 538.7255859375, "r": 485.7971496582031, "b": 481.131103515625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 49]}], "orig": "Database definitions for the RCAC banking example", "text": "Database definitions for the RCAC banking example", "level": 1}, {"self_ref": "#/texts/1382", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 137, "bbox": {"l": 135.599853515625, "t": 444.1184387207031, "r": 539.8473510742188, "b": 397.7381591796875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 322]}], "orig": "This appendix provides the database definitions or DDLs to re-create the Row and Column Access Control (RCAC) scenario that is described in Chapter 4, \"Implementing Row and Column Access Control: Banking example\" on page 37. The script that is shown in Example A-1 is the DDL script that is used to implement this example.", "text": "This appendix provides the database definitions or DDLs to re-create the Row and Column Access Control (RCAC) scenario that is described in Chapter 4, \"Implementing Row and Column Access Control: Banking example\" on page 37. The script that is shown in Example A-1 is the DDL script that is used to implement this example."}, {"self_ref": "#/texts/1383", "parent": {"cref": "#/body"}, "children": [], "label": "paragraph", "prov": [{"page_no": 137, "bbox": {"l": 64.52754211425781, "t": 386.0654602050781, "r": 332.9858703613281, "b": 376.4199523925781, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 60]}], "orig": "Example A-1 DDL script to implement the RCAC banking example", "text": "Example A-1 DDL script to implement the RCAC banking example"}, {"self_ref": "#/texts/1384", "parent": {"cref": "#/body"}, "children": [], "label": "code", "prov": [{"page_no": 137, "bbox": {"l": 62.520992279052734, "t": 371.1180419921875, "r": 541.1366577148438, "b": 61.56207275390625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 1229]}], "orig": "/* Database Definitions for RCAC Bank Scenario */ /* Schema */ CREATE SCHEMA BANK_SCHEMA FOR SCHEMA BANKSCHEMA ; /* Global Variable */ CREATE VARIABLE BANK_SCHEMA.CUSTOMER_LOGIN_ID VARCHAR( 30) ; LABEL ON VARIABLE BANK_SCHEMA.CUSTOMER_LOGIN_ID IS 'Customer''s log in value passed by web application' ; /* Tables */ CREATE TABLE BANK_SCHEMA.CUSTOMERS ( CUSTOMER_ID FOR COLUMN CUSTO00001 INTEGER GENERATED ALWAYS AS IDENTITY ( START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE NO CYCLE NO ORDER CACHE 20 ), CUSTOMER_NAME FOR COLUMN CUSTO00002 VARCHAR(30) CCSID 37 NOT NULL , CUSTOMER_ADDRESS FOR COLUMN CUSTO00003 VARCHAR(30) CCSID 37 NOT NULL , CUSTOMER_CITY FOR COLUMN CUSTO00004 VARCHAR(30) CCSID 37 NOT NULL , CUSTOMER_STATE FOR COLUMN CUSTO00005 CHAR(2) CCSID 37 NOT NULL , CUSTOMER_PHONE FOR COLUMN CUSTO00006 CHAR(10) CCSID 37 NOT NULL , CUSTOMER_EMAIL FOR COLUMN CUSTO00007 VARCHAR(30) CCSID 37 NOT NULL , CUSTOMER_TAX_ID FOR COLUMN CUSTO00008 CHAR(11) CCSID 37 NOT NULL , CUSTOMER_DRIVERS_LICENSE_NUMBER FOR COLUMN CUSTO00012 CHAR(13) CCSID 37 DEFAULT NULL , CUSTOMER_LOGIN_ID FOR COLUMN CUSTO00009 VARCHAR(30) CCSID 37 DEFAULT NULL , CUSTOMER_SECURITY_QUESTION FOR COLUMN CUSTO00010 VARCHAR(100) CCSID 37 DEFAULT NULL ,", "text": "/* Database Definitions for RCAC Bank Scenario */ /* Schema */ CREATE SCHEMA BANK_SCHEMA FOR SCHEMA BANKSCHEMA ; /* Global Variable */ CREATE VARIABLE BANK_SCHEMA.CUSTOMER_LOGIN_ID VARCHAR( 30) ; LABEL ON VARIABLE BANK_SCHEMA.CUSTOMER_LOGIN_ID IS 'Customer''s log in value passed by web application' ; /* Tables */ CREATE TABLE BANK_SCHEMA.CUSTOMERS ( CUSTOMER_ID FOR COLUMN CUSTO00001 INTEGER GENERATED ALWAYS AS IDENTITY ( START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE NO CYCLE NO ORDER CACHE 20 ), CUSTOMER_NAME FOR COLUMN CUSTO00002 VARCHAR(30) CCSID 37 NOT NULL , CUSTOMER_ADDRESS FOR COLUMN CUSTO00003 VARCHAR(30) CCSID 37 NOT NULL , CUSTOMER_CITY FOR COLUMN CUSTO00004 VARCHAR(30) CCSID 37 NOT NULL , CUSTOMER_STATE FOR COLUMN CUSTO00005 CHAR(2) CCSID 37 NOT NULL , CUSTOMER_PHONE FOR COLUMN CUSTO00006 CHAR(10) CCSID 37 NOT NULL , CUSTOMER_EMAIL FOR COLUMN CUSTO00007 VARCHAR(30) CCSID 37 NOT NULL , CUSTOMER_TAX_ID FOR COLUMN CUSTO00008 CHAR(11) CCSID 37 NOT NULL , CUSTOMER_DRIVERS_LICENSE_NUMBER FOR COLUMN CUSTO00012 CHAR(13) CCSID 37 DEFAULT NULL , CUSTOMER_LOGIN_ID FOR COLUMN CUSTO00009 VARCHAR(30) CCSID 37 DEFAULT NULL , CUSTOMER_SECURITY_QUESTION FOR COLUMN CUSTO00010 VARCHAR(100) CCSID 37 DEFAULT NULL ,"}, {"self_ref": "#/texts/1385", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 137, "bbox": {"l": 63.67854309082031, "t": 37.3470458984375, "r": 257.24334716796875, "b": 27.88531494140625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 48]}], "orig": "' Copyright IBM Corp. 2014. All rights reserved.", "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"self_ref": "#/texts/1386", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 137, "bbox": {"l": 530.0882568359375, "t": 37.70806884765625, "r": 547.2587890625, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 3]}], "orig": "121", "text": "121"}, {"self_ref": "#/texts/1387", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 137, "bbox": {"l": 496.9212951660156, "t": 699.434814453125, "r": 526.1300659179688, "b": 661.8682861328125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 1]}], "orig": "A", "text": "A"}, {"self_ref": "#/texts/1388", "parent": {"cref": "#/body"}, "children": [], "label": "code", "prov": [{"page_no": 138, "bbox": {"l": 63.45902633666992, "t": 721.3632202148438, "r": 546.5369873046875, "b": 70.01904296875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2754]}], "orig": "CUSTOMER_SECURITY_QUESTION_ANSWER FOR COLUMN CUSTO00011 VARCHAR(100) CCSID 37 DEFAULT NULL , INSERT_TIMESTAMP FOR COLUMN INSER00001 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , UPDATE_TIMESTAMP FOR COLUMN UPDAT00001 TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , CONSTRAINT BANK_SCHEMA.CUSTOMER_ID_PK PRIMARY KEY( CUSTOMER_ID ) ) ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_LOGIN_ID_UK UNIQUE( CUSTOMER_LOGIN_ID ) ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_DRIVERS_LICENSE_CHECK CHECK( CUSTOMER_DRIVERS_LICENSE_NUMBER <> '*************' ) ON UPDATE VIOLATION PRESERVE CUSTOMER_DRIVERS_LICENSE_NUMBER ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_EMAIL_CHECK CHECK( CUSTOMER_EMAIL <> '****@****' ) ON UPDATE VIOLATION PRESERVE CUSTOMER_EMAIL ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_LOGIN_ID_CHECK CHECK( CUSTOMER_LOGIN_ID <> '*****' ) ON INSERT VIOLATION SET CUSTOMER_LOGIN_ID = DEFAULT ON UPDATE VIOLATION PRESERVE CUSTOMER_LOGIN_ID ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_SECURITY_QUESTION_CHECK CHECK( CUSTOMER_SECURITY_QUESTION_ANSWER <> '*****' ) ON INSERT VIOLATION SET CUSTOMER_SECURITY_QUESTION_ANSWER = DEFAULT ON UPDATE VIOLATION PRESERVE CUSTOMER_SECURITY_QUESTION_ANSWER ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_SECURITY_QUESTION_ANSWER CHECK( CUSTOMER_SECURITY_QUESTION <> '*****' ) ON INSERT VIOLATION SET CUSTOMER_SECURITY_QUESTION = DEFAULT ON UPDATE VIOLATION PRESERVE CUSTOMER_SECURITY_QUESTION ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_TAX_ID_CHECK CHECK( CUSTOMER_TAX_ID <> 'XXX-XX-XXXX' AND SUBSTR ( CUSTOMER_TAX_ID , 1 , 7 ) <> 'XXX-XX-' ) ON UPDATE VIOLATION PRESERVE CUSTOMER_TAX_ID ; CREATE TABLE BANK_SCHEMA.ACCOUNTS ( ACCOUNT_ID INTEGER GENERATED ALWAYS AS IDENTITY ( START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE NO CYCLE NO ORDER CACHE 20 ), CUSTOMER_ID FOR COLUMN CUSTID INTEGER NOT NULL , ACCOUNT_NUMBER FOR COLUMN ACCOUNTNO VARCHAR(50) CCSID 37 NOT NULL , ACCOUNT_NAME FOR COLUMN ACCOUNTNAM CHAR(12) CCSID 37 NOT NULL , ACCOUNT_DATE_OPENED FOR COLUMN OPENDATE DATE DEFAULT CURRENT_DATE , ACCOUNT_DATE_CLOSED FOR COLUMN CLOSEDATE DATE DEFAULT NULL , ACCOUNT_CURRENT_BALANCE FOR COLUMN ACCTBAL DECIMAL(11, 2) NOT NULL DEFAULT 0 , INSERT_TIMESTAMP FOR COLUMN INSDATE TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , UPDATE_TIMESTAMP FOR COLUMN UPDDATE TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , CONSTRAINT BANK_SCHEMA.ACCOUNT_ID_PK PRIMARY KEY( ACCOUNT_ID ) );", "text": "CUSTOMER_SECURITY_QUESTION_ANSWER FOR COLUMN CUSTO00011 VARCHAR(100) CCSID 37 DEFAULT NULL , INSERT_TIMESTAMP FOR COLUMN INSER00001 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , UPDATE_TIMESTAMP FOR COLUMN UPDAT00001 TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , CONSTRAINT BANK_SCHEMA.CUSTOMER_ID_PK PRIMARY KEY( CUSTOMER_ID ) ) ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_LOGIN_ID_UK UNIQUE( CUSTOMER_LOGIN_ID ) ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_DRIVERS_LICENSE_CHECK CHECK( CUSTOMER_DRIVERS_LICENSE_NUMBER <> '*************' ) ON UPDATE VIOLATION PRESERVE CUSTOMER_DRIVERS_LICENSE_NUMBER ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_EMAIL_CHECK CHECK( CUSTOMER_EMAIL <> '****@****' ) ON UPDATE VIOLATION PRESERVE CUSTOMER_EMAIL ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_LOGIN_ID_CHECK CHECK( CUSTOMER_LOGIN_ID <> '*****' ) ON INSERT VIOLATION SET CUSTOMER_LOGIN_ID = DEFAULT ON UPDATE VIOLATION PRESERVE CUSTOMER_LOGIN_ID ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_SECURITY_QUESTION_CHECK CHECK( CUSTOMER_SECURITY_QUESTION_ANSWER <> '*****' ) ON INSERT VIOLATION SET CUSTOMER_SECURITY_QUESTION_ANSWER = DEFAULT ON UPDATE VIOLATION PRESERVE CUSTOMER_SECURITY_QUESTION_ANSWER ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_SECURITY_QUESTION_ANSWER CHECK( CUSTOMER_SECURITY_QUESTION <> '*****' ) ON INSERT VIOLATION SET CUSTOMER_SECURITY_QUESTION = DEFAULT ON UPDATE VIOLATION PRESERVE CUSTOMER_SECURITY_QUESTION ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_TAX_ID_CHECK CHECK( CUSTOMER_TAX_ID <> 'XXX-XX-XXXX' AND SUBSTR ( CUSTOMER_TAX_ID , 1 , 7 ) <> 'XXX-XX-' ) ON UPDATE VIOLATION PRESERVE CUSTOMER_TAX_ID ; CREATE TABLE BANK_SCHEMA.ACCOUNTS ( ACCOUNT_ID INTEGER GENERATED ALWAYS AS IDENTITY ( START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE NO CYCLE NO ORDER CACHE 20 ), CUSTOMER_ID FOR COLUMN CUSTID INTEGER NOT NULL , ACCOUNT_NUMBER FOR COLUMN ACCOUNTNO VARCHAR(50) CCSID 37 NOT NULL , ACCOUNT_NAME FOR COLUMN ACCOUNTNAM CHAR(12) CCSID 37 NOT NULL , ACCOUNT_DATE_OPENED FOR COLUMN OPENDATE DATE DEFAULT CURRENT_DATE , ACCOUNT_DATE_CLOSED FOR COLUMN CLOSEDATE DATE DEFAULT NULL , ACCOUNT_CURRENT_BALANCE FOR COLUMN ACCTBAL DECIMAL(11, 2) NOT NULL DEFAULT 0 , INSERT_TIMESTAMP FOR COLUMN INSDATE TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , UPDATE_TIMESTAMP FOR COLUMN UPDDATE TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , CONSTRAINT BANK_SCHEMA.ACCOUNT_ID_PK PRIMARY KEY( ACCOUNT_ID ) );"}, {"self_ref": "#/texts/1389", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 138, "bbox": {"l": 64.49662017822266, "t": 37.59820556640625, "r": 83.98200225830078, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 3]}], "orig": "122", "text": "122"}, {"self_ref": "#/texts/1390", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 138, "bbox": {"l": 98.57022857666016, "t": 37.3040771484375, "r": 339.9194030761719, "b": 27.99407958984375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/1391", "parent": {"cref": "#/body"}, "children": [], "label": "code", "prov": [{"page_no": 139, "bbox": {"l": 62.7338981628418, "t": 720.3270263671875, "r": 546.5366821289062, "b": 61.7633056640625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2313]}], "orig": "ALTER TABLE BANK_SCHEMA.ACCOUNTS ADD CONSTRAINT BANK_SCHEMA.ACCOUNT_CUSTOMER_ID_FK FOREIGN KEY( CUSTOMER_ID ) REFERENCES BANK_SCHEMA.CUSTOMERS ( CUSTO00001 ) ON DELETE RESTRICT ON UPDATE RESTRICT ; ALTER TABLE BANK_SCHEMA.ACCOUNTS ADD CONSTRAINT BANK_SCHEMA.ACCOUNT_NUMBER_CHECK CHECK( ACCOUNT_NUMBER <> '*****' ) ON UPDATE VIOLATION PRESERVE ACCOUNT_NUMBER ; CREATE TABLE BANK_SCHEMA.TRANSACTIONS FOR SYSTEM NAME TRANS ( TRANSACTION_ID FOR COLUMN TRANS00001 INTEGER GENERATED ALWAYS AS IDENTITY ( START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE NO CYCLE NO ORDER CACHE 20 ), ACCOUNT_ID INTEGER NOT NULL , TRANSACTION_TYPE FOR COLUMN TRANS00002 CHAR(1) CCSID 37 NOT NULL , TRANSACTION_DATE FOR COLUMN TRANS00003 DATE NOT NULL DEFAULT CURRENT_DATE , TRANSACTION_TIME FOR COLUMN TRANS00004 TIME NOT NULL DEFAULT CURRENT_TIME , TRANSACTION_AMOUNT FOR COLUMN TRANS00005 DECIMAL(11, 2) NOT NULL , INSERT_TIMESTAMP FOR COLUMN INSER00001 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , UPDATE_TIMESTAMP FOR COLUMN UPDAT00001 TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , CONSTRAINT BANK_SCHEMA.TRANSACTION_ID_PK PRIMARY KEY( TRANSACTION_ID ) ) ; ALTER TABLE BANK_SCHEMA.TRANSACTIONS ADD CONSTRAINT BANK_SCHEMA.TRANSACTIONS_ACCOUNT_ID_FK FOREIGN KEY( ACCOUNT_ID ) REFERENCES BANK_SCHEMA.ACCOUNTS ( ACCOUNT_ID ) ON DELETE RESTRICT ON UPDATE RESTRICT ; /* Permissions and Masks */ CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) OR ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 AND ( C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ) ) ENFORCED FOR ALL ACCESS ENABLE ; CREATE MASK BANK_SCHEMA.MASK_EMAIL_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_EMAIL RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_EMAIL WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_EMAIL ELSE '****@****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_TAX_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_TAX_ID RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1", "text": "ALTER TABLE BANK_SCHEMA.ACCOUNTS ADD CONSTRAINT BANK_SCHEMA.ACCOUNT_CUSTOMER_ID_FK FOREIGN KEY( CUSTOMER_ID ) REFERENCES BANK_SCHEMA.CUSTOMERS ( CUSTO00001 ) ON DELETE RESTRICT ON UPDATE RESTRICT ; ALTER TABLE BANK_SCHEMA.ACCOUNTS ADD CONSTRAINT BANK_SCHEMA.ACCOUNT_NUMBER_CHECK CHECK( ACCOUNT_NUMBER <> '*****' ) ON UPDATE VIOLATION PRESERVE ACCOUNT_NUMBER ; CREATE TABLE BANK_SCHEMA.TRANSACTIONS FOR SYSTEM NAME TRANS ( TRANSACTION_ID FOR COLUMN TRANS00001 INTEGER GENERATED ALWAYS AS IDENTITY ( START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE NO CYCLE NO ORDER CACHE 20 ), ACCOUNT_ID INTEGER NOT NULL , TRANSACTION_TYPE FOR COLUMN TRANS00002 CHAR(1) CCSID 37 NOT NULL , TRANSACTION_DATE FOR COLUMN TRANS00003 DATE NOT NULL DEFAULT CURRENT_DATE , TRANSACTION_TIME FOR COLUMN TRANS00004 TIME NOT NULL DEFAULT CURRENT_TIME , TRANSACTION_AMOUNT FOR COLUMN TRANS00005 DECIMAL(11, 2) NOT NULL , INSERT_TIMESTAMP FOR COLUMN INSER00001 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , UPDATE_TIMESTAMP FOR COLUMN UPDAT00001 TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , CONSTRAINT BANK_SCHEMA.TRANSACTION_ID_PK PRIMARY KEY( TRANSACTION_ID ) ) ; ALTER TABLE BANK_SCHEMA.TRANSACTIONS ADD CONSTRAINT BANK_SCHEMA.TRANSACTIONS_ACCOUNT_ID_FK FOREIGN KEY( ACCOUNT_ID ) REFERENCES BANK_SCHEMA.ACCOUNTS ( ACCOUNT_ID ) ON DELETE RESTRICT ON UPDATE RESTRICT ; /* Permissions and Masks */ CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) OR ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 AND ( C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ) ) ENFORCED FOR ALL ACCESS ENABLE ; CREATE MASK BANK_SCHEMA.MASK_EMAIL_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_EMAIL RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_EMAIL WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_EMAIL ELSE '****@****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_TAX_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_TAX_ID RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1"}, {"self_ref": "#/texts/1392", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 139, "bbox": {"l": 256.79608154296875, "t": 37.26806640625, "r": 517.9058227539062, "b": 28.0927734375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 61]}], "orig": "Appendix A. Database definitions for the RCAC banking example", "text": "Appendix A. Database definitions for the RCAC banking example"}, {"self_ref": "#/texts/1393", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 139, "bbox": {"l": 530.0982055664062, "t": 37.6234130859375, "r": 547.2587890625, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 3]}], "orig": "123", "text": "123"}, {"self_ref": "#/texts/1394", "parent": {"cref": "#/body"}, "children": [], "label": "code", "prov": [{"page_no": 140, "bbox": {"l": 62.60613250732422, "t": 722.6401977539062, "r": 500.697265625, "b": 84.2364501953125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 1998]}], "orig": "THEN C . CUSTOMER_TAX_ID WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( C . CUSTOMER_TAX_ID , 8 , 4 ) ) WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_TAX_ID ELSE 'XXX-XX-XXXX' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_DRIVERS_LICENSE_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_DRIVERS_LICENSE_NUMBER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ELSE '*************' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_LOGIN_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_LOGIN_ID RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_LOGIN_ID WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_LOGIN_ID ELSE '*****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_SECURITY_QUESTION RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION ELSE '*****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_SECURITY_QUESTION_ANSWER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ELSE '*****' END ENABLE ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL ;", "text": "THEN C . CUSTOMER_TAX_ID WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( C . CUSTOMER_TAX_ID , 8 , 4 ) ) WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_TAX_ID ELSE 'XXX-XX-XXXX' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_DRIVERS_LICENSE_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_DRIVERS_LICENSE_NUMBER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ELSE '*************' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_LOGIN_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_LOGIN_ID RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_LOGIN_ID WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_LOGIN_ID ELSE '*****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_SECURITY_QUESTION RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION ELSE '*****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_SECURITY_QUESTION_ANSWER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ELSE '*****' END ENABLE ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL ;"}, {"self_ref": "#/texts/1395", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 140, "bbox": {"l": 64.50080871582031, "t": 37.46612548828125, "r": 83.98200225830078, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 3]}], "orig": "124", "text": "124"}, {"self_ref": "#/texts/1396", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 140, "bbox": {"l": 98.63966369628906, "t": 37.28564453125, "r": 339.882080078125, "b": 27.98992919921875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/1397", "parent": {"cref": "#/body"}, "children": [], "label": "code", "prov": [{"page_no": 141, "bbox": {"l": 63.12764358520508, "t": 721.9608154296875, "r": 528.5969848632812, "b": 191.19879150390625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 1533]}], "orig": "CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_ACCOUNTS ON BANK_SCHEMA.ACCOUNTS AS A FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) OR ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 AND ( A . CUSTOMER_ID IN ( SELECT C . CUSTOMER_ID FROM BANK_SCHEMA . CUSTOMERS C WHERE C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ENFORCED FOR ALL ACCESS ENABLE ; CREATE MASK BANK_SCHEMA.MASK_ACCOUNT_NUMBER_ON_ACCOUNTS ON BANK_SCHEMA.ACCOUNTS AS A FOR COLUMN ACCOUNT_NUMBER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN A . ACCOUNT_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN A . ACCOUNT_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN A . ACCOUNT_NUMBER ELSE '*****' END ENABLE ; ALTER TABLE BANK_SCHEMA.ACCOUNTS ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL ; CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_TRANSACTIONS ON BANK_SCHEMA.TRANSACTIONS AS T FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) OR ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 AND ( T . ACCOUNT_ID IN ( SELECT A . ACCOUNT_ID FROM BANK_SCHEMA . ACCOUNTS A WHERE A . CUSTOMER_ID IN ( SELECT C . CUSTOMER_ID FROM BANK_SCHEMA . CUSTOMERS C WHERE C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ENFORCED FOR ALL ACCESS ENABLE ; ALTER TABLE BANK_SCHEMA.TRANSACTIONS ACTIVATE ROW ACCESS CONTROL ; /* END */", "text": "CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_ACCOUNTS ON BANK_SCHEMA.ACCOUNTS AS A FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) OR ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 AND ( A . CUSTOMER_ID IN ( SELECT C . CUSTOMER_ID FROM BANK_SCHEMA . CUSTOMERS C WHERE C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ENFORCED FOR ALL ACCESS ENABLE ; CREATE MASK BANK_SCHEMA.MASK_ACCOUNT_NUMBER_ON_ACCOUNTS ON BANK_SCHEMA.ACCOUNTS AS A FOR COLUMN ACCOUNT_NUMBER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN A . ACCOUNT_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN A . ACCOUNT_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN A . ACCOUNT_NUMBER ELSE '*****' END ENABLE ; ALTER TABLE BANK_SCHEMA.ACCOUNTS ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL ; CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_TRANSACTIONS ON BANK_SCHEMA.TRANSACTIONS AS T FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) OR ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 AND ( T . ACCOUNT_ID IN ( SELECT A . ACCOUNT_ID FROM BANK_SCHEMA . ACCOUNTS A WHERE A . CUSTOMER_ID IN ( SELECT C . CUSTOMER_ID FROM BANK_SCHEMA . CUSTOMERS C WHERE C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ENFORCED FOR ALL ACCESS ENABLE ; ALTER TABLE BANK_SCHEMA.TRANSACTIONS ACTIVATE ROW ACCESS CONTROL ; /* END */"}, {"self_ref": "#/texts/1398", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 141, "bbox": {"l": 256.8621520996094, "t": 37.23699951171875, "r": 517.9058227539062, "b": 28.05596923828125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 61]}], "orig": "Appendix A. Database definitions for the RCAC banking example", "text": "Appendix A. Database definitions for the RCAC banking example"}, {"self_ref": "#/texts/1399", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 141, "bbox": {"l": 530.1473999023438, "t": 37.67071533203125, "r": 547.2587890625, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 3]}], "orig": "125", "text": "125"}, {"self_ref": "#/texts/1400", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 142, "bbox": {"l": 64.55541229248047, "t": 37.9239501953125, "r": 83.98200225830078, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 3]}], "orig": "126", "text": "126"}, {"self_ref": "#/texts/1401", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 142, "bbox": {"l": 98.59571838378906, "t": 37.586181640625, "r": 340.1140441894531, "b": 27.87689208984375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/1402", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 143, "bbox": {"l": 64.80000305175781, "t": 719.0851440429688, "r": 299.2008056640625, "b": 695.3945922851562, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 20]}], "orig": "Related publications", "text": "Related publications", "level": 1}, {"self_ref": "#/texts/1403", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 143, "bbox": {"l": 135.75408935546875, "t": 659.93994140625, "r": 530.0675048828125, "b": 637.64208984375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 150]}], "orig": "The publications that are listed in this section are considered suitable for a more detailed description of the topics that are covered in this paper.", "text": "The publications that are listed in this section are considered suitable for a more detailed description of the topics that are covered in this paper."}, {"self_ref": "#/texts/1404", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 143, "bbox": {"l": 64.5552978515625, "t": 610.62353515625, "r": 205.97418212890625, "b": 594.16162109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 18]}], "orig": "Other publications", "text": "Other publications", "level": 1}, {"self_ref": "#/texts/1405", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 143, "bbox": {"l": 135.73150634765625, "t": 578.06201171875, "r": 413.18115234375, "b": 567.8068237304688, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 63]}], "orig": "These publications are relevant as further information sources:", "text": "These publications are relevant as further information sources:"}, {"self_ref": "#/texts/1406", "parent": {"cref": "#/groups/155"}, "children": [], "label": "list_item", "prov": [{"page_no": 143, "bbox": {"l": 135.81341552734375, "t": 561.2576904296875, "r": 414.05657958984375, "b": 551.03466796875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 74]}], "orig": "GLYPH IBM DB2 for i indexing methods and strategies white paper:", "text": "GLYPH IBM DB2 for i indexing methods and strategies white paper:", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1407", "parent": {"cref": "#/groups/155"}, "children": [], "label": "list_item", "prov": [{"page_no": 143, "bbox": {"l": 150.4676513671875, "t": 543.9222412109375, "r": 545.9945678710938, "b": 521.3193359375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 108]}], "orig": "http://www.ibm.com/partnerworld/wps/servlet/ContentHandler/stg_ast_sys_wp_db2_i _indexing_methods_strategies", "text": "http://www.ibm.com/partnerworld/wps/servlet/ContentHandler/stg_ast_sys_wp_db2_i _indexing_methods_strategies", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1408", "parent": {"cref": "#/groups/155"}, "children": [], "label": "list_item", "prov": [{"page_no": 143, "bbox": {"l": 135.8154296875, "t": 515.3950805664062, "r": 299.7695007324219, "b": 505.1793212890625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 49]}], "orig": "GLYPH IBM i Memo to Users Version 7.2 :", "text": "GLYPH IBM i Memo to Users Version 7.2 :", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1409", "parent": {"cref": "#/groups/155"}, "children": [], "label": "list_item", "prov": [{"page_no": 143, "bbox": {"l": 150.4538116455078, "t": 497.8748474121094, "r": 536.3565673828125, "b": 487.5298767089844, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 77]}], "orig": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgmtu.htm", "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgmtu.htm", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1410", "parent": {"cref": "#/groups/155"}, "children": [], "label": "list_item", "prov": [{"page_no": 143, "bbox": {"l": 135.64071655273438, "t": 481.50567626953125, "r": 371.4087829589844, "b": 471.1599426269531, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 65]}], "orig": "GLYPH IBM i Version 7.2 DB2 for i SQL Reference Guide :", "text": "GLYPH IBM i Version 7.2 DB2 for i SQL Reference Guide :", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1411", "parent": {"cref": "#/groups/155"}, "children": [], "label": "list_item", "prov": [{"page_no": 143, "bbox": {"l": 150.3872833251953, "t": 463.9585876464844, "r": 545.9945678710938, "b": 442.33642578125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 86]}], "orig": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/db2/rbafzintro.htm?l ang=en", "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/db2/rbafzintro.htm?l ang=en", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1412", "parent": {"cref": "#/groups/155"}, "children": [], "label": "list_item", "prov": [{"page_no": 143, "bbox": {"l": 135.63323974609375, "t": 435.3125305175781, "r": 355.629150390625, "b": 425.1407470703125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 60]}], "orig": "GLYPH IBM i Version 7.2 Journal Management Guide :", "text": "GLYPH IBM i Version 7.2 Journal Management Guide :", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1413", "parent": {"cref": "#/groups/155"}, "children": [], "label": "list_item", "prov": [{"page_no": 143, "bbox": {"l": 150.4163360595703, "t": 417.87652587890625, "r": 545.9945678710938, "b": 395.97418212890625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 92]}], "orig": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzaki/rzakiprintthis .htm?lang=en", "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzaki/rzakiprintthis .htm?lang=en", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1414", "parent": {"cref": "#/groups/155"}, "children": [], "label": "list_item", "prov": [{"page_no": 143, "bbox": {"l": 135.4580078125, "t": 389.5109558105469, "r": 346.3946838378906, "b": 378.82830810546875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 60]}], "orig": "GLYPH IBM i Version 7.2 Security Reference Guide :", "text": "GLYPH IBM i Version 7.2 Security Reference Guide :", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1415", "parent": {"cref": "#/groups/155"}, "children": [], "label": "list_item", "prov": [{"page_no": 143, "bbox": {"l": 150.8020477294922, "t": 372.0950622558594, "r": 546.1087036132812, "b": 349.88922119140625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 90]}], "orig": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzarl/rzarlkickoff.h tm?lang=en", "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzarl/rzarlkickoff.h tm?lang=en", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1416", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 143, "bbox": {"l": 64.61199188232422, "t": 322.6049499511719, "r": 195.1357421875, "b": 306.89630126953125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 16]}], "orig": "Online resources", "text": "Online resources", "level": 1}, {"self_ref": "#/texts/1417", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 143, "bbox": {"l": 135.812255859375, "t": 290.16766357421875, "r": 399.3615417480469, "b": 280.17840576171875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 59]}], "orig": "These websites are relevant as further information sources:", "text": "These websites are relevant as further information sources:"}, {"self_ref": "#/texts/1418", "parent": {"cref": "#/groups/156"}, "children": [], "label": "list_item", "prov": [{"page_no": 143, "bbox": {"l": 135.69252014160156, "t": 273.29962158203125, "r": 457.8038635253906, "b": 263.091796875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 81]}], "orig": "GLYPH Database programming topic of the IBM i 7.2 IBM Knowledge Center:", "text": "GLYPH Database programming topic of the IBM i 7.2 IBM Knowledge Center:", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1419", "parent": {"cref": "#/groups/156"}, "children": [], "label": "list_item", "prov": [{"page_no": 143, "bbox": {"l": 150.2280731201172, "t": 255.794677734375, "r": 545.9945678710938, "b": 234.15362548828125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 86]}], "orig": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgdbp.htm?l ang=en", "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgdbp.htm?l ang=en", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1420", "parent": {"cref": "#/groups/156"}, "children": [], "label": "list_item", "prov": [{"page_no": 143, "bbox": {"l": 135.60523986816406, "t": 227.4852294921875, "r": 287.6324768066406, "b": 216.62274169921875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 46]}], "orig": "GLYPH Identity Theft Resource Center", "text": "GLYPH Identity Theft Resource Center", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1421", "parent": {"cref": "#/groups/156"}, "children": [], "label": "list_item", "prov": [{"page_no": 143, "bbox": {"l": 150.68099975585938, "t": 209.80865478515625, "r": 291.11822509765625, "b": 199.8922119140625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 28]}], "orig": "http://www.idtheftcenter.org", "text": "http://www.idtheftcenter.org", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1422", "parent": {"cref": "#/groups/156"}, "children": [], "label": "list_item", "prov": [{"page_no": 143, "bbox": {"l": 135.6503448486328, "t": 193.26593017578125, "r": 231.24366760253906, "b": 183.16000366210938, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 33]}], "orig": "GLYPH Ponemon Institute", "text": "GLYPH Ponemon Institute", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1423", "parent": {"cref": "#/groups/156"}, "children": [], "label": "list_item", "prov": [{"page_no": 143, "bbox": {"l": 150.75747680664062, "t": 176.2340087890625, "r": 266.09869384765625, "b": 166.0797119140625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 23]}], "orig": "http://www.ponemon.org/", "text": "http://www.ponemon.org/", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/1424", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 143, "bbox": {"l": 63.680240631103516, "t": 37.23919677734375, "r": 257.24334716796875, "b": 27.890625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 48]}], "orig": "' Copyright IBM Corp. 2014. All rights reserved.", "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"self_ref": "#/texts/1425", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 143, "bbox": {"l": 530.1651000976562, "t": 37.71759033203125, "r": 547.2587890625, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 3]}], "orig": "127", "text": "127"}, {"self_ref": "#/texts/1426", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 144, "bbox": {"l": 64.73175811767578, "t": 721.902587890625, "r": 172.86196899414062, "b": 705.8510131835938, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 13]}], "orig": "Help from IBM", "text": "Help from IBM", "level": 1}, {"self_ref": "#/texts/1427", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 144, "bbox": {"l": 136.51719665527344, "t": 689.291015625, "r": 262.6037292480469, "b": 678.6181030273438, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 25]}], "orig": "IBM Support and downloads", "text": "IBM Support and downloads"}, {"self_ref": "#/texts/1428", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 144, "bbox": {"l": 136.8000030517578, "t": 671.5845336914062, "r": 211.73904418945312, "b": 661.7525634765625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 16]}], "orig": "ibm.com /support", "text": "ibm.com /support"}, {"self_ref": "#/texts/1429", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 144, "bbox": {"l": 136.5938720703125, "t": 650.671142578125, "r": 227.63221740722656, "b": 640.2989501953125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 19]}], "orig": "IBM Global Services", "text": "IBM Global Services"}, {"self_ref": "#/texts/1430", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 144, "bbox": {"l": 136.8000030517578, "t": 632.98974609375, "r": 216.7190399169922, "b": 623.4984130859375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 17]}], "orig": "ibm.com /services", "text": "ibm.com /services"}, {"self_ref": "#/texts/1431", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 144, "bbox": {"l": 64.5219497680664, "t": 37.608154296875, "r": 83.98200225830078, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 3]}], "orig": "128", "text": "128"}, {"self_ref": "#/texts/1432", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 144, "bbox": {"l": 98.66630554199219, "t": 37.40533447265625, "r": 339.9003601074219, "b": 27.9249267578125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/1433", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 146, "bbox": {"l": 287.2200012207031, "t": 763.4519653320312, "r": 414.24481201171875, "b": 741.251953125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 10]}], "orig": "Back cover", "text": "Back cover"}, {"self_ref": "#/texts/1434", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 146, "bbox": {"l": 26.454715728759766, "t": 720.362060546875, "r": 447.3600158691406, "b": 650.9618530273438, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i", "level": 1}, {"self_ref": "#/texts/1435", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 146, "bbox": {"l": 26.35322380065918, "t": 551.0213623046875, "r": 127.443603515625, "b": 524.7881469726562, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 40]}], "orig": "Implement roles and separation of duties", "text": "Implement roles and separation of duties"}, {"self_ref": "#/texts/1436", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 146, "bbox": {"l": 26.22105598449707, "t": 508.2904052734375, "r": 120.283203125, "b": 469.1280212402344, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 40]}], "orig": "Leverage row permissions on the database", "text": "Leverage row permissions on the database"}, {"self_ref": "#/texts/1437", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 146, "bbox": {"l": 26.226221084594727, "t": 452.88134765625, "r": 121.44960021972656, "b": 413.14801025390625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 40]}], "orig": "Protect columns by defining column masks", "text": "Protect columns by defining column masks"}, {"self_ref": "#/texts/1438", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 146, "bbox": {"l": 152.25205993652344, "t": 550.1506958007812, "r": 414.084228515625, "b": 468.4081115722656, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 464]}], "orig": "This IBM Redpaper publication provides information about the IBM i 7.2 feature of IBM DB2 for i Row and Column Access Control (RCAC). It offers a broad description of the function and advantages of controlling access to data in a comprehensive and transparent way. This publication helps you understand the capabilities of RCAC and provides examples of defining, creating, and implementing the row permissions and column masks in a relational database environment.", "text": "This IBM Redpaper publication provides information about the IBM i 7.2 feature of IBM DB2 for i Row and Column Access Control (RCAC). It offers a broad description of the function and advantages of controlling access to data in a comprehensive and transparent way. This publication helps you understand the capabilities of RCAC and provides examples of defining, creating, and implementing the row permissions and column masks in a relational database environment."}, {"self_ref": "#/texts/1439", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 146, "bbox": {"l": 152.3572540283203, "t": 461.4716796875, "r": 414.173828125, "b": 403.090087890625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 309]}], "orig": "This paper is intended for database engineers, data-centric application developers, and security officers who want to design and implement RCAC as a part of their data control and governance policy. A solid background in IBM i object level security, DB2 for i relational database concepts, and SQL is assumed.", "text": "This paper is intended for database engineers, data-centric application developers, and security officers who want to design and implement RCAC as a part of their data control and governance policy. A solid background in IBM i object level security, DB2 for i relational database concepts, and SQL is assumed."}, {"self_ref": "#/texts/1440", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 146, "bbox": {"l": 170.78512573242188, "t": 161.494140625, "r": 232.11270141601562, "b": 152.3369903564453, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 12]}], "orig": "REDP-5110-00", "text": "REDP-5110-00"}, {"self_ref": "#/texts/1441", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 146, "bbox": {"l": 466.3692626953125, "t": 544.606201171875, "r": 559.809326171875, "b": 489.8393859863281, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 44]}], "orig": "INTERNATIONAL TECHNICAL SUPPORT ORGANIZATION", "text": "INTERNATIONAL TECHNICAL SUPPORT ORGANIZATION"}, {"self_ref": "#/texts/1442", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 146, "bbox": {"l": 466.3262939453125, "t": 440.5700988769531, "r": 587.38916015625, "b": 405.52801513671875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 60]}], "orig": "BUILDING TECHNICAL INFORMATION BASED ON PRACTICAL EXPERIENCE", "text": "BUILDING TECHNICAL INFORMATION BASED ON PRACTICAL EXPERIENCE"}, {"self_ref": "#/texts/1443", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 146, "bbox": {"l": 466.1037292480469, "t": 393.18768310546875, "r": 587.5205078125, "b": 250.36593627929688, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 323]}], "orig": "IBM Redbooks are developed by the IBM International Technical Support Organization. Experts from IBM, Customers and Partners from around the world create timely technical information based on realistic scenarios. Specific recommendations are provided to help you implement IT solutions more effectively in your environment.", "text": "IBM Redbooks are developed by the IBM International Technical Support Organization. Experts from IBM, Customers and Partners from around the world create timely technical information based on realistic scenarios. Specific recommendations are provided to help you implement IT solutions more effectively in your environment."}, {"self_ref": "#/texts/1444", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 146, "bbox": {"l": 466.66748046875, "t": 214.11181640625, "r": 571.0052490234375, "b": 190.48809814453125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 39]}], "orig": "For more information: ibm.com /redbooks", "text": "For more information: ibm.com /redbooks"}], "pictures": [{"self_ref": "#/pictures/0", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 1, "bbox": {"l": 513.4560546875, "t": 765.9149169921875, "r": 586.1583251953125, "b": 737.1808471679688, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/1", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 3, "bbox": {"l": 80.21302032470703, "t": 720.9600830078125, "r": 142.7141876220703, "b": 696.1356811523438, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/2", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 10, "bbox": {"l": 465.2912902832031, "t": 581.128173828125, "r": 487.54522705078125, "b": 568.2127075195312, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/3", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 11, "bbox": {"l": 143.39866638183594, "t": 521.7388916015625, "r": 179.56256103515625, "b": 506.378662109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/4", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 11, "bbox": {"l": 64.16704559326172, "t": 188.49365234375, "r": 258.77435302734375, "b": 103.87176513671875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/5", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 12, "bbox": {"l": 309.1715087890625, "t": 634.2903442382812, "r": 372.07818603515625, "b": 608.7066650390625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/6", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 12, "bbox": {"l": 309.91729736328125, "t": 434.16644287109375, "r": 327.7751159667969, "b": 415.996337890625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/7", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 13, "bbox": {"l": 142.52883911132812, "t": 416.9550476074219, "r": 251.47850036621094, "b": 288.79351806640625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/8", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 13, "bbox": {"l": 145.41448974609375, "t": 264.7552490234375, "r": 252.08840942382812, "b": 156.616943359375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/9", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 14, "bbox": {"l": 141.68251037597656, "t": 714.6685791015625, "r": 249.5221405029297, "b": 608.5074462890625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/10", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 14, "bbox": {"l": 141.71910095214844, "t": 599.4354248046875, "r": 251.5185546875, "b": 472.5130920410156, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/11", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 14, "bbox": {"l": 141.89089965820312, "t": 447.3857116699219, "r": 251.38380432128906, "b": 337.8795166015625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/12", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 14, "bbox": {"l": 141.57579040527344, "t": 329.20159912109375, "r": 249.41360473632812, "b": 223.3951416015625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/13", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 14, "bbox": {"l": 141.69131469726562, "t": 177.389892578125, "r": 250.86129760742188, "b": 67.85260009765625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/14", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 15, "bbox": {"l": 142.26431274414062, "t": 714.8782348632812, "r": 251.69140625, "b": 599.3118896484375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/15", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 15, "bbox": {"l": 142.39024353027344, "t": 575.4408569335938, "r": 251.9964141845703, "b": 465.6423034667969, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/16", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 17, "bbox": {"l": 32.05508804321289, "t": 721.5736083984375, "r": 239.62692260742188, "b": 553.958984375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/17", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 19, "bbox": {"l": 136.6387176513672, "t": 296.2513122558594, "r": 491.2538146972656, "b": 92.9403076171875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 55]}], "captions": [{"cref": "#/texts/185"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/18", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 20, "bbox": {"l": 135.92466735839844, "t": 416.0727844238281, "r": 546.4456176757812, "b": 103.39019775390625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 43]}], "captions": [{"cref": "#/texts/195"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/19", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 23, "bbox": {"l": 32.17647933959961, "t": 721.7350463867188, "r": 239.21856689453125, "b": 554.0392456054688, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/20", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 29, "bbox": {"l": 32.1435661315918, "t": 721.603759765625, "r": 239.34097290039062, "b": 553.8724975585938, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/21", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 31, "bbox": {"l": 135.9717559814453, "t": 684.5892944335938, "r": 545.4180908203125, "b": 381.39068603515625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 177]}], "captions": [{"cref": "#/texts/305"}, {"cref": "#/texts/306"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/22", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 32, "bbox": {"l": 135.58670043945312, "t": 672.6809692382812, "r": 545.5314331054688, "b": 377.8745422363281, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 36]}], "captions": [{"cref": "#/texts/314"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/23", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 33, "bbox": {"l": 136.23851013183594, "t": 714.2366943359375, "r": 507.5733642578125, "b": 444.80059814453125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 57]}], "captions": [{"cref": "#/texts/319"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/24", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 33, "bbox": {"l": 135.7325897216797, "t": 291.0432434082031, "r": 514.99365234375, "b": 70.57550048828125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 36]}], "captions": [{"cref": "#/texts/322"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/25", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 35, "bbox": {"l": 135.64837646484375, "t": 407.8262939453125, "r": 301.2367248535156, "b": 197.24334716796875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 50]}], "captions": [{"cref": "#/texts/348"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/26", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 40, "bbox": {"l": 136.4460906982422, "t": 454.37591552734375, "r": 227.48138427734375, "b": 421.7442932128906, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 30]}], "captions": [{"cref": "#/texts/432"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/27", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 42, "bbox": {"l": 64.00577545166016, "t": 489.8777160644531, "r": 547.3966674804688, "b": 302.76678466796875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 63]}], "captions": [{"cref": "#/texts/453"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/28", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 44, "bbox": {"l": 63.801902770996094, "t": 696.6175537109375, "r": 547.11474609375, "b": 621.9678955078125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 52]}], "captions": [{"cref": "#/texts/476"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/29", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 44, "bbox": {"l": 63.98516845703125, "t": 364.0950012207031, "r": 530.0479125976562, "b": 145.86041259765625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 65]}], "captions": [{"cref": "#/texts/485"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/30", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 45, "bbox": {"l": 135.93521118164062, "t": 685.1574096679688, "r": 547.290771484375, "b": 454.1453857421875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 47]}], "captions": [{"cref": "#/texts/489"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/31", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 45, "bbox": {"l": 137.24044799804688, "t": 243.1964111328125, "r": 225.1509246826172, "b": 209.55267333984375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 36]}], "captions": [{"cref": "#/texts/496"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/32", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 45, "bbox": {"l": 137.4537811279297, "t": 130.49932861328125, "r": 220.26930236816406, "b": 98.5223388671875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 43]}], "captions": [{"cref": "#/texts/498"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/33", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 46, "bbox": {"l": 136.77099609375, "t": 684.3360595703125, "r": 225.8523406982422, "b": 651.5640869140625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 45]}], "captions": [{"cref": "#/texts/504"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/34", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 46, "bbox": {"l": 136.36477661132812, "t": 572.2852172851562, "r": 228.86305236816406, "b": 539.6805419921875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 46]}], "captions": [{"cref": "#/texts/506"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/35", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 53, "bbox": {"l": 32.17905807495117, "t": 721.395263671875, "r": 238.82225036621094, "b": 553.8535766601562, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/36", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 55, "bbox": {"l": 136.02655029296875, "t": 562.2583618164062, "r": 494.36669921875, "b": 304.43743896484375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 35]}], "captions": [{"cref": "#/texts/583"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/37", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 56, "bbox": {"l": 136.22354125976562, "t": 672.08544921875, "r": 529.123291015625, "b": 387.0466613769531, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 42]}], "captions": [{"cref": "#/texts/597"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/38", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 58, "bbox": {"l": 136.12950134277344, "t": 664.9310302734375, "r": 451.212158203125, "b": 490.5372619628906, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 45]}], "captions": [{"cref": "#/texts/612"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/39", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 58, "bbox": {"l": 135.7327880859375, "t": 221.14324951171875, "r": 415.3825988769531, "b": 163.08135986328125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "captions": [{"cref": "#/texts/627"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/40", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 59, "bbox": {"l": 135.87620544433594, "t": 614.5701293945312, "r": 417.8246765136719, "b": 430.18212890625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 37]}], "captions": [{"cref": "#/texts/634"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/41", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 60, "bbox": {"l": 135.36148071289062, "t": 660.7388916015625, "r": 533.2239379882812, "b": 486.9355163574219, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 59]}], "captions": [{"cref": "#/texts/642"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/42", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 60, "bbox": {"l": 134.96737670898438, "t": 421.118408203125, "r": 457.1007080078125, "b": 231.27545166015625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 36]}], "captions": [{"cref": "#/texts/644"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/43", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 61, "bbox": {"l": 63.629615783691406, "t": 468.0149230957031, "r": 546.4091796875, "b": 308.1072998046875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 59]}], "captions": [{"cref": "#/texts/648"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/44", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 62, "bbox": {"l": 135.87826538085938, "t": 684.625, "r": 451.5091857910156, "b": 495.53948974609375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 41]}], "captions": [{"cref": "#/texts/652"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/45", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 62, "bbox": {"l": 63.676544189453125, "t": 223.1519775390625, "r": 546.6666870117188, "b": 69.37261962890625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 63]}], "captions": [{"cref": "#/texts/656"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/46", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 63, "bbox": {"l": 135.87820434570312, "t": 537.927490234375, "r": 343.8211669921875, "b": 299.79180908203125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 38]}], "captions": [{"cref": "#/texts/664"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/47", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 64, "bbox": {"l": 136.17874145507812, "t": 684.837646484375, "r": 527.1444702148438, "b": 403.0865173339844, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 48]}], "captions": [{"cref": "#/texts/670"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/48", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 64, "bbox": {"l": 136.42279052734375, "t": 337.58477783203125, "r": 528.0494384765625, "b": 181.008544921875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 77]}], "captions": [{"cref": "#/texts/672"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/49", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 65, "bbox": {"l": 136.3659210205078, "t": 673.2913208007812, "r": 485.6257629394531, "b": 390.21917724609375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 35]}], "captions": [{"cref": "#/texts/674"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/50", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 65, "bbox": {"l": 136.03775024414062, "t": 321.49188232421875, "r": 484.38336181640625, "b": 208.7786865234375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 72]}], "captions": [{"cref": "#/texts/676"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/51", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 66, "bbox": {"l": 134.8684539794922, "t": 684.35791015625, "r": 447.195556640625, "b": 519.525390625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 74]}], "captions": [{"cref": "#/texts/682"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/52", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 66, "bbox": {"l": 135.67332458496094, "t": 350.67633056640625, "r": 358.52606201171875, "b": 204.1165771484375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 35]}], "captions": [{"cref": "#/texts/687"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/53", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 67, "bbox": {"l": 136.2171630859375, "t": 656.6912231445312, "r": 474.1829528808594, "b": 430.8948669433594, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 52]}], "captions": [{"cref": "#/texts/690"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/54", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 67, "bbox": {"l": 136.2489471435547, "t": 366.31561279296875, "r": 269.5424499511719, "b": 241.65252685546875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 40]}], "captions": [{"cref": "#/texts/692"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/55", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 68, "bbox": {"l": 135.9110107421875, "t": 596.0236206054688, "r": 454.9993896484375, "b": 386.7077941894531, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 38]}], "captions": [{"cref": "#/texts/699"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/56", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 68, "bbox": {"l": 64.25324249267578, "t": 298.9075012207031, "r": 546.2809448242188, "b": 83.63250732421875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 63]}], "captions": [{"cref": "#/texts/701"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/57", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 69, "bbox": {"l": 136.07814025878906, "t": 672.6598510742188, "r": 346.28375244140625, "b": 552.4191284179688, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 72]}], "captions": [{"cref": "#/texts/705"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/58", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 69, "bbox": {"l": 136.84584045410156, "t": 488.3529968261719, "r": 547.677978515625, "b": 215.39788818359375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 91]}], "captions": [{"cref": "#/texts/707"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/59", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 70, "bbox": {"l": 136.3912811279297, "t": 630.09716796875, "r": 467.3126220703125, "b": 371.8191833496094, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 41]}], "captions": [{"cref": "#/texts/713"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/60", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 71, "bbox": {"l": 136.22802734375, "t": 533.213134765625, "r": 507.9937438964844, "b": 265.47283935546875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "captions": [{"cref": "#/texts/721"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/61", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 72, "bbox": {"l": 63.957679748535156, "t": 521.5117797851562, "r": 540.6087646484375, "b": 209.08831787109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 53]}], "captions": [{"cref": "#/texts/729"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/62", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 73, "bbox": {"l": 63.73027801513672, "t": 445.1194763183594, "r": 535.9136352539062, "b": 80.55084228515625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 57]}], "captions": [{"cref": "#/texts/738"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/63", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 74, "bbox": {"l": 64.10432434082031, "t": 672.0056762695312, "r": 545.318603515625, "b": 520.585693359375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 50]}], "captions": [{"cref": "#/texts/744"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/64", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 74, "bbox": {"l": 136.1191864013672, "t": 396.8784484863281, "r": 456.9282531738281, "b": 223.3760986328125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 34]}], "captions": [{"cref": "#/texts/748"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/65", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 75, "bbox": {"l": 136.62161254882812, "t": 603.1398315429688, "r": 533.3434448242188, "b": 189.4141845703125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 57]}], "captions": [{"cref": "#/texts/754"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/66", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 76, "bbox": {"l": 64.02095031738281, "t": 684.545166015625, "r": 547.409912109375, "b": 611.1890258789062, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 47]}], "captions": [{"cref": "#/texts/765"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/67", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 76, "bbox": {"l": 136.29519653320312, "t": 429.86224365234375, "r": 545.3217163085938, "b": 323.4537048339844, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 45]}], "captions": [{"cref": "#/texts/770"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/68", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 76, "bbox": {"l": 64.00347900390625, "t": 258.30792236328125, "r": 546.5211181640625, "b": 191.1029052734375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 37]}], "captions": [{"cref": "#/texts/772"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/69", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 77, "bbox": {"l": 63.89818572998047, "t": 622.65625, "r": 543.365966796875, "b": 141.4451904296875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 68]}], "captions": [{"cref": "#/texts/779"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/70", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 78, "bbox": {"l": 63.67375564575195, "t": 684.8529052734375, "r": 546.8531494140625, "b": 408.3074645996094, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 51]}], "captions": [{"cref": "#/texts/783"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/71", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 78, "bbox": {"l": 63.88129806518555, "t": 330.7875061035156, "r": 543.3204956054688, "b": 191.6788330078125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 60]}], "captions": [{"cref": "#/texts/785"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/72", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 79, "bbox": {"l": 135.9375457763672, "t": 618.48974609375, "r": 546.1521606445312, "b": 459.0491638183594, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 48]}], "captions": [{"cref": "#/texts/791"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/73", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 79, "bbox": {"l": 135.82846069335938, "t": 381.9046325683594, "r": 534.9657592773438, "b": 219.2965087890625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 37]}], "captions": [{"cref": "#/texts/793"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/74", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 80, "bbox": {"l": 136.07981872558594, "t": 672.8583984375, "r": 547.2720947265625, "b": 515.8709106445312, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 41]}], "captions": [{"cref": "#/texts/797"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/75", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 80, "bbox": {"l": 63.96348190307617, "t": 379.94091796875, "r": 546.8929443359375, "b": 210.73712158203125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 47]}], "captions": [{"cref": "#/texts/801"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/76", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 81, "bbox": {"l": 136.34481811523438, "t": 684.5108642578125, "r": 467.5279846191406, "b": 553.552001953125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 47]}], "captions": [{"cref": "#/texts/805"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/77", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 81, "bbox": {"l": 63.714664459228516, "t": 464.8936767578125, "r": 502.0154113769531, "b": 196.12652587890625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 63]}], "captions": [{"cref": "#/texts/807"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/78", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 82, "bbox": {"l": 136.04849243164062, "t": 448.3782653808594, "r": 358.4311218261719, "b": 353.65679931640625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 28]}], "captions": [{"cref": "#/texts/823"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/79", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 82, "bbox": {"l": 135.9881591796875, "t": 300.3863525390625, "r": 393.8948669433594, "b": 166.849853515625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 71]}], "captions": [{"cref": "#/texts/825"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/80", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 83, "bbox": {"l": 135.97964477539062, "t": 227.32598876953125, "r": 354.29364013671875, "b": 106.57257080078125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 33]}], "captions": [{"cref": "#/texts/833"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/81", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 84, "bbox": {"l": 136.23712158203125, "t": 684.7537841796875, "r": 385.9791564941406, "b": 566.5540771484375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 83]}], "captions": [{"cref": "#/texts/839"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/82", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 84, "bbox": {"l": 64.11683654785156, "t": 502.3402099609375, "r": 546.5642700195312, "b": 353.8417053222656, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 71]}], "captions": [{"cref": "#/texts/841"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/83", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 84, "bbox": {"l": 135.7608642578125, "t": 256.17401123046875, "r": 362.02239990234375, "b": 122.27850341796875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 31]}], "captions": [{"cref": "#/texts/845"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/84", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 85, "bbox": {"l": 135.92535400390625, "t": 684.47216796875, "r": 388.818115234375, "b": 572.8428344726562, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 78]}], "captions": [{"cref": "#/texts/847"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/85", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 85, "bbox": {"l": 64.41838073730469, "t": 495.8370361328125, "r": 548.2760009765625, "b": 121.37432861328125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 76]}], "captions": [{"cref": "#/texts/849"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/86", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 86, "bbox": {"l": 136.20846557617188, "t": 653.039794921875, "r": 352.89752197265625, "b": 569.3597412109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 30]}], "captions": [{"cref": "#/texts/857"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/87", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 86, "bbox": {"l": 136.3792266845703, "t": 504.6051940917969, "r": 382.5545654296875, "b": 423.29107666015625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 72]}], "captions": [{"cref": "#/texts/859"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/88", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 87, "bbox": {"l": 136.11729431152344, "t": 207.35791015625, "r": 354.23046875, "b": 118.21148681640625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 32]}], "captions": [{"cref": "#/texts/865"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/89", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 88, "bbox": {"l": 135.9663848876953, "t": 672.871826171875, "r": 547.538818359375, "b": 570.4339599609375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 57]}], "captions": [{"cref": "#/texts/871"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/90", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 88, "bbox": {"l": 136.12271118164062, "t": 506.2840881347656, "r": 395.9803466796875, "b": 272.61468505859375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 45]}], "captions": [{"cref": "#/texts/873"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/91", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 88, "bbox": {"l": 136.00576782226562, "t": 207.84942626953125, "r": 382.0115966796875, "b": 107.967529296875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 74]}], "captions": [{"cref": "#/texts/875"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/92", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 89, "bbox": {"l": 64.07161712646484, "t": 684.5228271484375, "r": 546.6607055664062, "b": 541.043212890625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 68]}], "captions": [{"cref": "#/texts/877"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/93", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 92, "bbox": {"l": 136.32431030273438, "t": 656.0142211914062, "r": 399.8092956542969, "b": 293.3769226074219, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 47]}], "captions": [{"cref": "#/texts/898"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/94", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 93, "bbox": {"l": 136.5016632080078, "t": 672.7508544921875, "r": 545.4508666992188, "b": 314.4587707519531, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 44]}], "captions": [{"cref": "#/texts/900"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/95", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 93, "bbox": {"l": 64.27847290039062, "t": 238.41864013671875, "r": 506.39263916015625, "b": 127.9129638671875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 37]}], "captions": [{"cref": "#/texts/902"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/96", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 94, "bbox": {"l": 64.13593292236328, "t": 672.543701171875, "r": 508.70513916015625, "b": 557.0508422851562, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 42]}], "captions": [{"cref": "#/texts/906"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/97", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 95, "bbox": {"l": 32.17748260498047, "t": 721.4505004882812, "r": 239.63507080078125, "b": 553.986572265625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/98", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 97, "bbox": {"l": 135.8197021484375, "t": 354.0295104980469, "r": 527.1633911132812, "b": 72.09771728515625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 56]}], "captions": [{"cref": "#/texts/955"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/99", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 101, "bbox": {"l": 32.03302764892578, "t": 721.64599609375, "r": 238.4545135498047, "b": 553.9920654296875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/100", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 103, "bbox": {"l": 136.07940673828125, "t": 536.4542846679688, "r": 412.541015625, "b": 262.60601806640625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 57]}], "captions": [{"cref": "#/texts/1021"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/101", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 104, "bbox": {"l": 135.86012268066406, "t": 616.7017211914062, "r": 497.2643127441406, "b": 502.79217529296875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 33]}], "captions": [{"cref": "#/texts/1026"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/102", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 105, "bbox": {"l": 135.99375915527344, "t": 636.4747314453125, "r": 491.57470703125, "b": 388.2860107421875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 52]}], "captions": [{"cref": "#/texts/1040"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/103", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 106, "bbox": {"l": 136.0791015625, "t": 636.4277954101562, "r": 499.302978515625, "b": 381.560791015625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 50]}], "captions": [{"cref": "#/texts/1050"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/104", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 107, "bbox": {"l": 136.0598907470703, "t": 660.60791015625, "r": 501.41558837890625, "b": 407.5401916503906, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 61]}], "captions": [{"cref": "#/texts/1057"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/105", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 108, "bbox": {"l": 136.11366271972656, "t": 684.66796875, "r": 502.8105773925781, "b": 475.9753112792969, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 47]}], "captions": [{"cref": "#/texts/1066"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/106", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 108, "bbox": {"l": 135.9275665283203, "t": 381.38775634765625, "r": 464.8796691894531, "b": 169.27420043945312, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 45]}], "captions": [{"cref": "#/texts/1069"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/107", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 109, "bbox": {"l": 136.01123046875, "t": 604.3631591796875, "r": 470.03668212890625, "b": 371.52569580078125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 42]}], "captions": [{"cref": "#/texts/1072"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/108", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 110, "bbox": {"l": 136.0685272216797, "t": 634.4288330078125, "r": 478.2557678222656, "b": 419.78314208984375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 46]}], "captions": [{"cref": "#/texts/1077"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/109", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 111, "bbox": {"l": 136.01914978027344, "t": 608.7029418945312, "r": 483.0831298828125, "b": 370.34381103515625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 43]}], "captions": [{"cref": "#/texts/1082"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/110", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 112, "bbox": {"l": 136.2607879638672, "t": 635.3245239257812, "r": 484.0173034667969, "b": 397.6853332519531, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 50]}], "captions": [{"cref": "#/texts/1087"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/111", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 112, "bbox": {"l": 135.89076232910156, "t": 307.9719543457031, "r": 485.4429931640625, "b": 72.65142822265625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 47]}], "captions": [{"cref": "#/texts/1089"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/112", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 114, "bbox": {"l": 64.05506134033203, "t": 696.6568603515625, "r": 546.421142578125, "b": 442.6709899902344, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 58]}], "captions": [{"cref": "#/texts/1108"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/113", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 114, "bbox": {"l": 64.03382873535156, "t": 389.9870300292969, "r": 546.9832153320312, "b": 249.7725830078125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 35]}], "captions": [{"cref": "#/texts/1110"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/114", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 114, "bbox": {"l": 63.78765869140625, "t": 185.0380859375, "r": 546.1412353515625, "b": 106.41729736328125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 67]}], "captions": [{"cref": "#/texts/1112"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/115", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 115, "bbox": {"l": 63.79280090332031, "t": 684.9020385742188, "r": 547.32080078125, "b": 574.2643432617188, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 63]}], "captions": [{"cref": "#/texts/1116"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/116", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 116, "bbox": {"l": 136.10072326660156, "t": 684.5394897460938, "r": 547.119140625, "b": 413.0294189453125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 33]}], "captions": [{"cref": "#/texts/1127"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/117", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 116, "bbox": {"l": 64.22953796386719, "t": 348.64111328125, "r": 510.0937805175781, "b": 237.27978515625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 48]}], "captions": [{"cref": "#/texts/1129"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/118", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 118, "bbox": {"l": 136.61915588378906, "t": 529.6680908203125, "r": 491.90362548828125, "b": 262.054443359375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 42]}], "captions": [{"cref": "#/texts/1179"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/119", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 119, "bbox": {"l": 136.2811279296875, "t": 685.1424560546875, "r": 508.5420227050781, "b": 403.9203796386719, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 35]}], "captions": [{"cref": "#/texts/1183"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/120", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 122, "bbox": {"l": 136.19158935546875, "t": 660.42138671875, "r": 506.083740234375, "b": 391.0660705566406, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 45]}], "captions": [{"cref": "#/texts/1226"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/121", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 123, "bbox": {"l": 135.89947509765625, "t": 660.6359252929688, "r": 513.2355346679688, "b": 387.1663513183594, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 48]}], "captions": [{"cref": "#/texts/1228"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/122", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 127, "bbox": {"l": 136.06109619140625, "t": 515.9075927734375, "r": 509.6692199707031, "b": 230.63134765625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "captions": [{"cref": "#/texts/1289"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/123", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 129, "bbox": {"l": 32.251461029052734, "t": 721.334716796875, "r": 239.58355712890625, "b": 553.5812377929688, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/124", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 132, "bbox": {"l": 136.1027374267578, "t": 576.7725830078125, "r": 522.8739013671875, "b": 338.3410949707031, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 48]}], "captions": [{"cref": "#/texts/1335"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/125", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 135, "bbox": {"l": 32.17782974243164, "t": 721.4134521484375, "r": 238.9773712158203, "b": 553.691162109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/126", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 137, "bbox": {"l": 31.834123611450195, "t": 721.0397338867188, "r": 238.2196044921875, "b": 553.590576171875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/127", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 146, "bbox": {"l": 485.1698303222656, "t": 766.7407836914062, "r": 566.2962036132812, "b": 737.3182983398438, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/128", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 146, "bbox": {"l": 474.35540771484375, "t": 711.9486694335938, "r": 592.2726440429688, "b": 602.1873779296875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [], "references": [], "footnotes": [], "image": null, "annotations": []}], "tables": [{"self_ref": "#/tables/0", "parent": {"cref": "#/body"}, "children": [], "label": "table", "prov": [{"page_no": 5, "bbox": {"l": 136.15103149414062, "t": 659.9697265625, "r": 549.8472290039062, "b": 76.34722900390625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [], "references": [], "footnotes": [], "image": null, "data": {"table_cells": [{"bbox": {"l": 136.8000030517578, "t": 659.3513793945312, "r": 172.89404296875, "b": 650.1383666992188, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Notices", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 175.01951599121094, "t": 659.3513793945312, "r": 547.1898193359375, "b": 650.1383666992188, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79901123046875, "t": 646.8715209960938, "r": 189.86537170410156, "b": 637.6585083007812, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Trademarks", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 195.3968505859375, "t": 646.8715209960938, "r": 547.182861328125, "b": 637.6585083007812, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79901123046875, "t": 624.3718872070312, "r": 279.3973083496094, "b": 615.1588745117188, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "DB2 for i Center of Excellence", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 280.6194152832031, "t": 624.3718872070312, "r": 547.1907958984375, "b": 615.1588745117188, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79901123046875, "t": 601.8722534179688, "r": 172.84423828125, "b": 592.6592407226562, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Preface", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 175.01852416992188, "t": 601.8722534179688, "r": 547.182861328125, "b": 592.6592407226562, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79803466796875, "t": 589.3923950195312, "r": 547.1808471679688, "b": 580.1793823242188, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79803466796875, "t": 576.852783203125, "r": 339.18292236328125, "b": 567.6397705078125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Now you can become a published author, too!", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 344.714111328125, "t": 576.852783203125, "r": 547.1387939453125, "b": 567.6397705078125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79803466796875, "t": 564.3729248046875, "r": 529.9950561523438, "b": 555.159912109375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 535.5494995117188, "t": 564.3729248046875, "r": 547.1978759765625, "b": 555.159912109375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "xiii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79806518554688, "t": 551.89306640625, "r": 284.0286560058594, "b": 542.6800537109375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Stay connected to IBM Redbooks", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.54449462890625, "t": 551.89306640625, "r": 547.1211547851562, "b": 542.6800537109375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79806518554688, "t": 529.3934326171875, "r": 536.0958862304688, "b": 520.180419921875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 1. Securing and protecting IBM DB2 data . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.6468505859375, "t": 529.3934326171875, "r": 547.1978149414062, "b": 520.180419921875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "1", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79808044433594, "t": 517.3936157226562, "r": 549.8472290039062, "b": 508.18060302734375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.1 Security fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79806518554688, "t": 504.85394287109375, "r": 536.1293334960938, "b": 495.6409606933594, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.2 Current state of IBM i security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.6611328125, "t": 504.85394287109375, "r": 547.19287109375, "b": 495.6409606933594, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "2", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79806518554688, "t": 492.3740539550781, "r": 549.8472290039062, "b": 483.16107177734375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.3 DB2 for i security controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19720458984375, "t": 479.8941650390625, "r": 536.0551147460938, "b": 470.6811828613281, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.3.1 Existing row and column control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.6015014648438, "t": 479.8941650390625, "r": 547.14794921875, "b": 470.6811828613281, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "4", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19720458984375, "t": 467.3545227050781, "r": 536.080078125, "b": 458.14154052734375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.3.2 New controls: Row and Column Access Control. . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.635498046875, "t": 467.3545227050781, "r": 547.19091796875, "b": 458.14154052734375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "5", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.7970428466797, "t": 444.8548889160156, "r": 536.0908813476562, "b": 435.64190673828125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 2. Roles and separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.642822265625, "t": 444.8548889160156, "r": 547.1947631835938, "b": 435.64190673828125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "7", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.7970428466797, "t": 432.8550720214844, "r": 536.1271362304688, "b": 423.64208984375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1 Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.6658935546875, "t": 432.8550720214844, "r": 547.2047119140625, "b": 423.64208984375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "8", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19720458984375, "t": 420.37518310546875, "r": 535.9526977539062, "b": 411.1622009277344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.1 DDM and DRDA application server access: QIBM_DB_DDMDRDA . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.5558471679688, "t": 420.37518310546875, "r": 547.1590576171875, "b": 411.1622009277344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "8", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19720458984375, "t": 407.8952941894531, "r": 536.0410766601562, "b": 398.68231201171875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.2 Toolbox application server access: QIBM_DB_ZDA. . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.595947265625, "t": 407.8952941894531, "r": 547.1508178710938, "b": 398.68231201171875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "8", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19720458984375, "t": 395.35565185546875, "r": 536.0748901367188, "b": 386.1426696777344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.3 Database Administrator function: QIBM_DB_SQLADM . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.6302490234375, "t": 395.35565185546875, "r": 547.1856079101562, "b": 386.1426696777344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "9", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19720458984375, "t": 382.8757629394531, "r": 411.2704772949219, "b": 373.66278076171875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.4 Database Information function: QIBM_DB_SYSMON", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 416.8177490234375, "t": 382.8757629394531, "r": 547.1786499023438, "b": 373.66278076171875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . 9", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19720458984375, "t": 370.3958740234375, "r": 536.035888671875, "b": 361.1828918457031, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.5 Security Administrator function: QIBM_DB_SECADM . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.5989379882812, "t": 370.3958740234375, "r": 547.1619262695312, "b": 361.1828918457031, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "9", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19720458984375, "t": 357.8562316894531, "r": 530.5731811523438, "b": 348.64324951171875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.6 Change Function Usage CL command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.1044311523438, "t": 357.8562316894531, "r": 547.1668701171875, "b": 348.64324951171875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19720458984375, "t": 345.3763427734375, "r": 530.5352172851562, "b": 336.1633605957031, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 22, "end_row_offset_idx": 23, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.7 Verifying function usage IDs for RCAC with the FUNCTION_USAGE view . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0755004882812, "t": 345.3763427734375, "r": 547.156005859375, "b": 336.1633605957031, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 22, "end_row_offset_idx": 23, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.7970428466797, "t": 332.8964538574219, "r": 547.256591796875, "b": 323.6834716796875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 23, "end_row_offset_idx": 24, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.2 Separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 23, "end_row_offset_idx": 24, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79702758789062, "t": 310.3968200683594, "r": 530.5396118164062, "b": 301.183837890625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 24, "end_row_offset_idx": 25, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 3. Row and Column Access Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0916748046875, "t": 310.3968200683594, "r": 547.19580078125, "b": 301.183837890625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 24, "end_row_offset_idx": 25, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "13", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79702758789062, "t": 298.3970031738281, "r": 530.4808959960938, "b": 289.18402099609375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 25, "end_row_offset_idx": 26, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.1 Explanation of RCAC and the concept of access control . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.04248046875, "t": 298.3970031738281, "r": 547.1657104492188, "b": 289.18402099609375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 25, "end_row_offset_idx": 26, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "14", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1971893310547, "t": 285.85736083984375, "r": 378.2078552246094, "b": 276.6443786621094, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 26, "end_row_offset_idx": 27, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.1.1 Row permission and column mask definitions", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 383.74713134765625, "t": 285.85736083984375, "r": 547.15576171875, "b": 276.6443786621094, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 26, "end_row_offset_idx": 27, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . 14", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1971893310547, "t": 273.3774719238281, "r": 530.4347534179688, "b": 264.16448974609375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 27, "end_row_offset_idx": 28, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.1.2 Enabling and activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 535.9962158203125, "t": 273.3774719238281, "r": 547.1190795898438, "b": 264.16448974609375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 27, "end_row_offset_idx": 28, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "16", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79702758789062, "t": 260.83782958984375, "r": 530.528076171875, "b": 251.6248321533203, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 28, "end_row_offset_idx": 29, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.2 Special registers and built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0670166015625, "t": 260.83782958984375, "r": 547.1448364257812, "b": 251.6248321533203, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 28, "end_row_offset_idx": 29, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "18", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1971893310547, "t": 248.3579559326172, "r": 530.4978637695312, "b": 239.14495849609375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 29, "end_row_offset_idx": 30, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.2.1 Special registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0518798828125, "t": 248.3579559326172, "r": 547.159912109375, "b": 239.14495849609375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 29, "end_row_offset_idx": 30, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "18", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1971893310547, "t": 235.87808227539062, "r": 530.5602416992188, "b": 226.6650848388672, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 30, "end_row_offset_idx": 31, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.2.2 Built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.09912109375, "t": 235.87808227539062, "r": 547.1768798828125, "b": 226.6650848388672, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 30, "end_row_offset_idx": 31, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "19", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79702758789062, "t": 223.33843994140625, "r": 530.5302734375, "b": 214.1254425048828, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 31, "end_row_offset_idx": 32, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.3 VERIFY_GROUP_FOR_USER function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0615234375, "t": 223.33843994140625, "r": 547.1240234375, "b": 214.1254425048828, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 31, "end_row_offset_idx": 32, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "20", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79702758789062, "t": 210.8585662841797, "r": 530.6299438476562, "b": 201.64556884765625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 32, "end_row_offset_idx": 33, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.4 Establishing and controlling accessibility by using the RCAC rule text . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.1631469726562, "t": 210.8585662841797, "r": 547.2295532226562, "b": 201.64556884765625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 32, "end_row_offset_idx": 33, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "21", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 33, "end_row_offset_idx": 34, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 400.3206481933594, "t": 198.37869262695312, "r": 547.10009765625, "b": 189.1656951904297, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 33, "end_row_offset_idx": 34, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . 22", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79701232910156, "t": 198.37869262695312, "r": 394.78179931640625, "b": 189.1656951904297, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 34, "end_row_offset_idx": 35, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.5 SELECT, INSERT, and UPDATE behavior with RCAC", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 34, "end_row_offset_idx": 35, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717407226562, "t": 173.3591766357422, "r": 530.4913940429688, "b": 164.14617919921875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 35, "end_row_offset_idx": 36, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.1 Assigning the QIBM_DB_SECADM function ID to the consultants. . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0463256835938, "t": 173.3591766357422, "r": 547.1561889648438, "b": 164.14617919921875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 35, "end_row_offset_idx": 36, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "23", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717407226562, "t": 160.87930297851562, "r": 530.5645751953125, "b": 151.6663055419922, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 36, "end_row_offset_idx": 37, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.2 Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0960083007812, "t": 160.87930297851562, "r": 547.1587524414062, "b": 151.6663055419922, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 36, "end_row_offset_idx": 37, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "23", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717407226562, "t": 148.33966064453125, "r": 530.5569458007812, "b": 139.1266632080078, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 37, "end_row_offset_idx": 38, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.3 Demonstrating data access without RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0881958007812, "t": 148.33966064453125, "r": 547.1507568359375, "b": 139.1266632080078, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 37, "end_row_offset_idx": 38, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "24", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717407226562, "t": 135.8597869873047, "r": 530.5341186523438, "b": 126.64678955078125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 38, "end_row_offset_idx": 39, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.4 Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.072998046875, "t": 135.8597869873047, "r": 547.15087890625, "b": 126.64678955078125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 38, "end_row_offset_idx": 39, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "25", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717407226562, "t": 123.37991333007812, "r": 339.4510498046875, "b": 114.16690826416016, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 39, "end_row_offset_idx": 40, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.5 Defining and creating column masks", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 344.9899597167969, "t": 123.37991333007812, "r": 547.160888671875, "b": 114.16690826416016, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 39, "end_row_offset_idx": 40, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717407226562, "t": 110.84027099609375, "r": 530.541015625, "b": 101.62727355957031, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 40, "end_row_offset_idx": 41, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.6 Activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.087646484375, "t": 110.84027099609375, "r": 547.1808471679688, "b": 101.62727355957031, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 40, "end_row_offset_idx": 41, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "28", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717407226562, "t": 98.36038970947266, "r": 530.5750732421875, "b": 89.14738464355469, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 41, "end_row_offset_idx": 42, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.7 Demonstrating data access with RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.1066284179688, "t": 98.36038970947266, "r": 547.169677734375, "b": 89.14738464355469, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 41, "end_row_offset_idx": 42, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "29", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717407226562, "t": 85.88050842285156, "r": 530.436279296875, "b": 76.6675033569336, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 42, "end_row_offset_idx": 43, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.8 Demonstrating data access with a view and RCAC . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 535.9984741210938, "t": 85.88050842285156, "r": 547.1228637695312, "b": 76.6675033569336, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 42, "end_row_offset_idx": 43, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "32", "column_header": false, "row_header": false, "row_section": false}], "num_rows": 43, "num_cols": 2, "grid": [[{"bbox": {"l": 136.8000030517578, "t": 659.3513793945312, "r": 172.89404296875, "b": 650.1383666992188, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Notices", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 175.01951599121094, "t": 659.3513793945312, "r": 547.1898193359375, "b": 650.1383666992188, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.79901123046875, "t": 646.8715209960938, "r": 189.86537170410156, "b": 637.6585083007812, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Trademarks", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 195.3968505859375, "t": 646.8715209960938, "r": 547.182861328125, "b": 637.6585083007812, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.79901123046875, "t": 624.3718872070312, "r": 279.3973083496094, "b": 615.1588745117188, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "DB2 for i Center of Excellence", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 280.6194152832031, "t": 624.3718872070312, "r": 547.1907958984375, "b": 615.1588745117188, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.79901123046875, "t": 601.8722534179688, "r": 172.84423828125, "b": 592.6592407226562, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Preface", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 175.01852416992188, "t": 601.8722534179688, "r": 547.182861328125, "b": 592.6592407226562, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.79803466796875, "t": 589.3923950195312, "r": 547.1808471679688, "b": 580.1793823242188, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.79803466796875, "t": 576.852783203125, "r": 339.18292236328125, "b": 567.6397705078125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Now you can become a published author, too!", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 344.714111328125, "t": 576.852783203125, "r": 547.1387939453125, "b": 567.6397705078125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.79803466796875, "t": 564.3729248046875, "r": 529.9950561523438, "b": 555.159912109375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 535.5494995117188, "t": 564.3729248046875, "r": 547.1978759765625, "b": 555.159912109375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "xiii", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.79806518554688, "t": 551.89306640625, "r": 284.0286560058594, "b": 542.6800537109375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Stay connected to IBM Redbooks", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.54449462890625, "t": 551.89306640625, "r": 547.1211547851562, "b": 542.6800537109375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.79806518554688, "t": 529.3934326171875, "r": 536.0958862304688, "b": 520.180419921875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 1. Securing and protecting IBM DB2 data . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.6468505859375, "t": 529.3934326171875, "r": 547.1978149414062, "b": 520.180419921875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "1", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.79808044433594, "t": 517.3936157226562, "r": 549.8472290039062, "b": 508.18060302734375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.1 Security fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.79806518554688, "t": 504.85394287109375, "r": 536.1293334960938, "b": 495.6409606933594, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.2 Current state of IBM i security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.6611328125, "t": 504.85394287109375, "r": 547.19287109375, "b": 495.6409606933594, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "2", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.79806518554688, "t": 492.3740539550781, "r": 549.8472290039062, "b": 483.16107177734375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.3 DB2 for i security controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.19720458984375, "t": 479.8941650390625, "r": 536.0551147460938, "b": 470.6811828613281, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.3.1 Existing row and column control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.6015014648438, "t": 479.8941650390625, "r": 547.14794921875, "b": 470.6811828613281, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "4", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.19720458984375, "t": 467.3545227050781, "r": 536.080078125, "b": 458.14154052734375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.3.2 New controls: Row and Column Access Control. . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.635498046875, "t": 467.3545227050781, "r": 547.19091796875, "b": 458.14154052734375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "5", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.7970428466797, "t": 444.8548889160156, "r": 536.0908813476562, "b": 435.64190673828125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 2. Roles and separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.642822265625, "t": 444.8548889160156, "r": 547.1947631835938, "b": 435.64190673828125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "7", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.7970428466797, "t": 432.8550720214844, "r": 536.1271362304688, "b": 423.64208984375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1 Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.6658935546875, "t": 432.8550720214844, "r": 547.2047119140625, "b": 423.64208984375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "8", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.19720458984375, "t": 420.37518310546875, "r": 535.9526977539062, "b": 411.1622009277344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.1 DDM and DRDA application server access: QIBM_DB_DDMDRDA . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.5558471679688, "t": 420.37518310546875, "r": 547.1590576171875, "b": 411.1622009277344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "8", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.19720458984375, "t": 407.8952941894531, "r": 536.0410766601562, "b": 398.68231201171875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.2 Toolbox application server access: QIBM_DB_ZDA. . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.595947265625, "t": 407.8952941894531, "r": 547.1508178710938, "b": 398.68231201171875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "8", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.19720458984375, "t": 395.35565185546875, "r": 536.0748901367188, "b": 386.1426696777344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.3 Database Administrator function: QIBM_DB_SQLADM . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.6302490234375, "t": 395.35565185546875, "r": 547.1856079101562, "b": 386.1426696777344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "9", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.19720458984375, "t": 382.8757629394531, "r": 411.2704772949219, "b": 373.66278076171875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.4 Database Information function: QIBM_DB_SYSMON", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 416.8177490234375, "t": 382.8757629394531, "r": 547.1786499023438, "b": 373.66278076171875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . 9", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.19720458984375, "t": 370.3958740234375, "r": 536.035888671875, "b": 361.1828918457031, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.5 Security Administrator function: QIBM_DB_SECADM . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.5989379882812, "t": 370.3958740234375, "r": 547.1619262695312, "b": 361.1828918457031, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "9", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.19720458984375, "t": 357.8562316894531, "r": 530.5731811523438, "b": 348.64324951171875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.6 Change Function Usage CL command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.1044311523438, "t": 357.8562316894531, "r": 547.1668701171875, "b": 348.64324951171875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "10", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.19720458984375, "t": 345.3763427734375, "r": 530.5352172851562, "b": 336.1633605957031, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 22, "end_row_offset_idx": 23, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.7 Verifying function usage IDs for RCAC with the FUNCTION_USAGE view . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0755004882812, "t": 345.3763427734375, "r": 547.156005859375, "b": 336.1633605957031, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 22, "end_row_offset_idx": 23, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "10", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.7970428466797, "t": 332.8964538574219, "r": 547.256591796875, "b": 323.6834716796875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 23, "end_row_offset_idx": 24, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.2 Separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 23, "end_row_offset_idx": 24, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.79702758789062, "t": 310.3968200683594, "r": 530.5396118164062, "b": 301.183837890625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 24, "end_row_offset_idx": 25, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 3. Row and Column Access Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0916748046875, "t": 310.3968200683594, "r": 547.19580078125, "b": 301.183837890625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 24, "end_row_offset_idx": 25, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "13", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.79702758789062, "t": 298.3970031738281, "r": 530.4808959960938, "b": 289.18402099609375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 25, "end_row_offset_idx": 26, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.1 Explanation of RCAC and the concept of access control . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.04248046875, "t": 298.3970031738281, "r": 547.1657104492188, "b": 289.18402099609375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 25, "end_row_offset_idx": 26, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "14", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.1971893310547, "t": 285.85736083984375, "r": 378.2078552246094, "b": 276.6443786621094, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 26, "end_row_offset_idx": 27, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.1.1 Row permission and column mask definitions", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 383.74713134765625, "t": 285.85736083984375, "r": 547.15576171875, "b": 276.6443786621094, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 26, "end_row_offset_idx": 27, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . 14", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.1971893310547, "t": 273.3774719238281, "r": 530.4347534179688, "b": 264.16448974609375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 27, "end_row_offset_idx": 28, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.1.2 Enabling and activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 535.9962158203125, "t": 273.3774719238281, "r": 547.1190795898438, "b": 264.16448974609375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 27, "end_row_offset_idx": 28, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "16", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.79702758789062, "t": 260.83782958984375, "r": 530.528076171875, "b": 251.6248321533203, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 28, "end_row_offset_idx": 29, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.2 Special registers and built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0670166015625, "t": 260.83782958984375, "r": 547.1448364257812, "b": 251.6248321533203, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 28, "end_row_offset_idx": 29, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "18", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.1971893310547, "t": 248.3579559326172, "r": 530.4978637695312, "b": 239.14495849609375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 29, "end_row_offset_idx": 30, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.2.1 Special registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0518798828125, "t": 248.3579559326172, "r": 547.159912109375, "b": 239.14495849609375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 29, "end_row_offset_idx": 30, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "18", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.1971893310547, "t": 235.87808227539062, "r": 530.5602416992188, "b": 226.6650848388672, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 30, "end_row_offset_idx": 31, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.2.2 Built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.09912109375, "t": 235.87808227539062, "r": 547.1768798828125, "b": 226.6650848388672, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 30, "end_row_offset_idx": 31, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "19", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.79702758789062, "t": 223.33843994140625, "r": 530.5302734375, "b": 214.1254425048828, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 31, "end_row_offset_idx": 32, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.3 VERIFY_GROUP_FOR_USER function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0615234375, "t": 223.33843994140625, "r": 547.1240234375, "b": 214.1254425048828, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 31, "end_row_offset_idx": 32, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "20", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.79702758789062, "t": 210.8585662841797, "r": 530.6299438476562, "b": 201.64556884765625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 32, "end_row_offset_idx": 33, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.4 Establishing and controlling accessibility by using the RCAC rule text . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.1631469726562, "t": 210.8585662841797, "r": 547.2295532226562, "b": 201.64556884765625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 32, "end_row_offset_idx": 33, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "21", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 33, "end_row_offset_idx": 34, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 400.3206481933594, "t": 198.37869262695312, "r": 547.10009765625, "b": 189.1656951904297, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 33, "end_row_offset_idx": 34, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . 22", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.79701232910156, "t": 198.37869262695312, "r": 394.78179931640625, "b": 189.1656951904297, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 34, "end_row_offset_idx": 35, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.5 SELECT, INSERT, and UPDATE behavior with RCAC", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 34, "end_row_offset_idx": 35, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.19717407226562, "t": 173.3591766357422, "r": 530.4913940429688, "b": 164.14617919921875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 35, "end_row_offset_idx": 36, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.1 Assigning the QIBM_DB_SECADM function ID to the consultants. . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0463256835938, "t": 173.3591766357422, "r": 547.1561889648438, "b": 164.14617919921875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 35, "end_row_offset_idx": 36, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "23", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.19717407226562, "t": 160.87930297851562, "r": 530.5645751953125, "b": 151.6663055419922, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 36, "end_row_offset_idx": 37, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.2 Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0960083007812, "t": 160.87930297851562, "r": 547.1587524414062, "b": 151.6663055419922, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 36, "end_row_offset_idx": 37, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "23", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.19717407226562, "t": 148.33966064453125, "r": 530.5569458007812, "b": 139.1266632080078, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 37, "end_row_offset_idx": 38, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.3 Demonstrating data access without RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0881958007812, "t": 148.33966064453125, "r": 547.1507568359375, "b": 139.1266632080078, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 37, "end_row_offset_idx": 38, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "24", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.19717407226562, "t": 135.8597869873047, "r": 530.5341186523438, "b": 126.64678955078125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 38, "end_row_offset_idx": 39, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.4 Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.072998046875, "t": 135.8597869873047, "r": 547.15087890625, "b": 126.64678955078125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 38, "end_row_offset_idx": 39, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "25", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.19717407226562, "t": 123.37991333007812, "r": 339.4510498046875, "b": 114.16690826416016, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 39, "end_row_offset_idx": 40, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.5 Defining and creating column masks", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 344.9899597167969, "t": 123.37991333007812, "r": 547.160888671875, "b": 114.16690826416016, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 39, "end_row_offset_idx": 40, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.19717407226562, "t": 110.84027099609375, "r": 530.541015625, "b": 101.62727355957031, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 40, "end_row_offset_idx": 41, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.6 Activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.087646484375, "t": 110.84027099609375, "r": 547.1808471679688, "b": 101.62727355957031, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 40, "end_row_offset_idx": 41, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "28", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.19717407226562, "t": 98.36038970947266, "r": 530.5750732421875, "b": 89.14738464355469, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 41, "end_row_offset_idx": 42, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.7 Demonstrating data access with RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.1066284179688, "t": 98.36038970947266, "r": 547.169677734375, "b": 89.14738464355469, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 41, "end_row_offset_idx": 42, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "29", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.19717407226562, "t": 85.88050842285156, "r": 530.436279296875, "b": 76.6675033569336, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 42, "end_row_offset_idx": 43, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.8 Demonstrating data access with a view and RCAC . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 535.9984741210938, "t": 85.88050842285156, "r": 547.1228637695312, "b": 76.6675033569336, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 42, "end_row_offset_idx": 43, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "32", "column_header": false, "row_header": false, "row_section": false}]]}}, {"self_ref": "#/tables/1", "parent": {"cref": "#/body"}, "children": [], "label": "table", "prov": [{"page_no": 6, "bbox": {"l": 135.92572021484375, "t": 721.1874389648438, "r": 547.7196044921875, "b": 57.76904296875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [], "references": [], "footnotes": [], "image": null, "data": {"table_cells": [{"bbox": {"l": 136.8000030517578, "t": 720.4913330078125, "r": 530.5958862304688, "b": 711.2783203125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.1328125, "t": 720.4913330078125, "r": 547.2067260742188, "b": 711.2783203125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "37", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80001831054688, "t": 708.4915161132812, "r": 530.5200805664062, "b": 699.2785034179688, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.1 Business requirements for the RCAC banking scenario . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.0591430664062, "t": 708.4915161132812, "r": 547.13720703125, "b": 699.2785034179688, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "38", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80001831054688, "t": 696.0116577148438, "r": 372.6776123046875, "b": 686.7986450195312, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.2 Description of the users roles and responsibilities", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 378.2168884277344, "t": 696.0116577148438, "r": 547.1648559570312, "b": 686.7986450195312, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . 39", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80001831054688, "t": 683.4720458984375, "r": 530.5362548828125, "b": 674.259033203125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3 Implementation of RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.0903930664062, "t": 683.4720458984375, "r": 547.19873046875, "b": 674.259033203125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "42", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018005371094, "t": 670.9921875, "r": 400.5744323730469, "b": 661.7791748046875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.1 Reviewing the tables that are used in this example", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 406.10546875, "t": 670.9921875, "r": 547.14697265625, "b": 661.7791748046875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . 42", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018005371094, "t": 658.5123291015625, "r": 516.9255981445312, "b": 649.29931640625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.2 Assigning function ID QIBM_DB_SECADM to the Database Engineers group", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 522.4603881835938, "t": 658.5123291015625, "r": 547.3670654296875, "b": 649.29931640625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . 47", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018005371094, "t": 645.9727172851562, "r": 530.5675659179688, "b": 636.7597045898438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.3 Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.0989379882812, "t": 645.9727172851562, "r": 547.1617431640625, "b": 636.7597045898438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "50", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018005371094, "t": 633.4928588867188, "r": 411.620849609375, "b": 624.2798461914062, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.4 Creating the CUSTOMER_LOGIN_ID global variable", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 417.15240478515625, "t": 633.4928588867188, "r": 547.1438598632812, "b": 624.2798461914062, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . 52", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018005371094, "t": 621.0130004882812, "r": 530.5370483398438, "b": 611.7999877929688, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.5 Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.0759887695312, "t": 621.0130004882812, "r": 547.1538696289062, "b": 611.7999877929688, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "54", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018005371094, "t": 608.473388671875, "r": 339.45404052734375, "b": 599.2603759765625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.6 Defining and creating column masks", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 344.9929504394531, "t": 608.473388671875, "r": 547.1638793945312, "b": 599.2603759765625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018005371094, "t": 595.9935302734375, "r": 530.539306640625, "b": 586.780517578125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.7 Restricting the inserting and updating of masked data . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.078125, "t": 595.9935302734375, "r": 547.15576171875, "b": 586.780517578125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "60", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018005371094, "t": 570.9740600585938, "r": 530.4820556640625, "b": 561.7610473632812, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.9 Reviewing row permissions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.036376953125, "t": 570.9740600585938, "r": 547.14501953125, "b": 561.7610473632812, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "64", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018005371094, "t": 558.4942016601562, "r": 530.44921875, "b": 549.2811889648438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.10 Demonstrating data access with RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.0194702148438, "t": 558.4942016601562, "r": 547.1600341796875, "b": 549.2811889648438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "66", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018005371094, "t": 546.0143432617188, "r": 530.4335327148438, "b": 536.8013305664062, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.11 Query implementation with RCAC activated . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.0037231445312, "t": 546.0143432617188, "r": 547.1441040039062, "b": 536.8013305664062, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "75", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80001831054688, "t": 523.5147094726562, "r": 530.5385131835938, "b": 514.3016967773438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "Chapter 5. RCAC and non-SQL interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.0916137695312, "t": 523.5147094726562, "r": 547.1978149414062, "b": 514.3016967773438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "79", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 156.18524169921875, "t": 511.5148620605469, "r": 547.1768798828125, "b": 502.3018798828125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Unsupported interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80001831054688, "t": 486.4953308105469, "r": 530.4937744140625, "b": 477.2823486328125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "5.3 Accidental updates with masked values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.0474853515625, "t": 486.4953308105469, "r": 547.1549072265625, "b": 477.2823486328125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "81", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80001831054688, "t": 474.01544189453125, "r": 530.5643310546875, "b": 464.8024597167969, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "5.4 System CL commands considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.0958251953125, "t": 474.01544189453125, "r": 547.158935546875, "b": 464.8024597167969, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "82", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018005371094, "t": 461.4757995605469, "r": 530.4598999023438, "b": 452.2628173828125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "5.4.1 Create Duplicate Object (CRTDUPOBJ) command . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.0228271484375, "t": 461.4757995605469, "r": 547.148681640625, "b": 452.2628173828125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "82", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0770874023438, "t": 448.99591064453125, "r": 547.1549682617188, "b": 439.7829284667969, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "82", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018005371094, "t": 448.99591064453125, "r": 530.5381469726562, "b": 427.30303955078125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "5.4.2 Copy File (CPYF) command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4.3 Copy Library (CPYLIB) command. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.5494384765625, "t": 251.95913696289062, "r": 547.1646118164062, "b": 242.7461395263672, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "100", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0574340820312, "t": 436.5160217285156, "r": 547.182861328125, "b": 427.30303955078125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "83", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80001831054688, "t": 414.0163879394531, "r": 530.5385131835938, "b": 404.80340576171875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 22, "end_row_offset_idx": 23, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "Chapter 6. Additional considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 400.59185791015625, "t": 364.51715087890625, "r": 547.1687622070312, "b": 342.7645263671875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 22, "end_row_offset_idx": 23, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . 89 90", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80003356933594, "t": 389.4769287109375, "r": 530.5139770507812, "b": 367.7840576171875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 23, "end_row_offset_idx": 24, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.2 RCAC effects on data movement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 151.2001953125, "t": 376.9970397949219, "r": 400.1688232421875, "b": 367.7840576171875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 24, "end_row_offset_idx": 25, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.2.1 Effects when RCAC is defined on the source table", "column_header": false, "row_header": true, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 25, "end_row_offset_idx": 26, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0606079101562, "t": 376.9970397949219, "r": 547.15380859375, "b": 367.7840576171875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 25, "end_row_offset_idx": 26, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "88", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80003356933594, "t": 351.9775085449219, "r": 530.5997924804688, "b": 330.2846374511719, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 26, "end_row_offset_idx": 27, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.2.3 Effects when RCAC is defined on both source and target tables . . . . . . . . . . . . . 6.3 RCAC effects on joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.1390991210938, "t": 339.49761962890625, "r": 547.2177734375, "b": 330.2846374511719, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 26, "end_row_offset_idx": 27, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "91", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.2001953125, "t": 327.0177307128906, "r": 547.2595825195312, "b": 317.80474853515625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 27, "end_row_offset_idx": 28, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.3.1 Inner joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 151.20016479492188, "t": 314.47808837890625, "r": 547.2595825195312, "b": 305.2651062011719, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 28, "end_row_offset_idx": 29, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.3.2 Outer joins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 151.20016479492188, "t": 301.9981994628906, "r": 530.481201171875, "b": 292.78521728515625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 29, "end_row_offset_idx": 30, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.3.3 Exception joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.051025390625, "t": 301.9981994628906, "r": 547.1907348632812, "b": 292.78521728515625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 29, "end_row_offset_idx": 30, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "96", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.8000030517578, "t": 289.45855712890625, "r": 372.92724609375, "b": 280.2455749511719, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 30, "end_row_offset_idx": 31, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.4 Monitoring, analyzing, and debugging with RCAC", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.115966796875, "t": 289.45855712890625, "r": 547.1796264648438, "b": 280.2455749511719, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 30, "end_row_offset_idx": 31, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "97", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 378.45904541015625, "t": 289.45855712890625, "r": 530.5841674804688, "b": 280.2455749511719, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 31, "end_row_offset_idx": 32, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 178.8563232421875, "t": 276.9786682128906, "r": 547.1707763671875, "b": 267.76568603515625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 31, "end_row_offset_idx": 32, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Query monitoring and analysis tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20016479492188, "t": 264.498779296875, "r": 530.5306396484375, "b": 255.28578186035156, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 32, "end_row_offset_idx": 33, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.4.2 Index advisor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.093017578125, "t": 264.498779296875, "r": 547.2177124023438, "b": 255.28578186035156, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 32, "end_row_offset_idx": 33, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "99", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20013427734375, "t": 251.95913696289062, "r": 525.0111083984375, "b": 242.7461395263672, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 33, "end_row_offset_idx": 34, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.4.3 Metadata using catalogs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 136.7999725341797, "t": 239.47926330566406, "r": 524.8056640625, "b": 230.26626586914062, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 34, "end_row_offset_idx": 35, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.5 Views, materialized query tables, and query rewrite with RCAC . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.3905029296875, "t": 239.47926330566406, "r": 547.14501953125, "b": 230.26626586914062, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 34, "end_row_offset_idx": 35, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "102", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20013427734375, "t": 214.45974731445312, "r": 524.8568115234375, "b": 205.2467498779297, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 35, "end_row_offset_idx": 36, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.5.2 Materialized query tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.4345092773438, "t": 214.45974731445312, "r": 547.1676635742188, "b": 205.2467498779297, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 35, "end_row_offset_idx": 36, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "103", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 36, "end_row_offset_idx": 37, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.5247192382812, "t": 201.97987365722656, "r": 547.1878051757812, "b": 192.76687622070312, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 36, "end_row_offset_idx": 37, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "105", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20013427734375, "t": 201.97987365722656, "r": 524.9703979492188, "b": 180.28700256347656, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 37, "end_row_offset_idx": 38, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.5.3 Query rewrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . RCAC effects on performance and scalability. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 136.7999725341797, "t": 189.5, "r": 150.70437622070312, "b": 180.28700256347656, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 38, "end_row_offset_idx": 39, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.6", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.4845581054688, "t": 189.5, "r": 547.1698608398438, "b": 180.28700256347656, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 38, "end_row_offset_idx": 39, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "105", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 39, "end_row_offset_idx": 40, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.43701171875, "t": 176.96035766601562, "r": 547.1228637695312, "b": 167.7473602294922, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 39, "end_row_offset_idx": 40, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "107", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.7999725341797, "t": 176.96035766601562, "r": 525.0469970703125, "b": 155.26748657226562, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 40, "end_row_offset_idx": 41, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.7 Exclusive lock to implement RCAC (availability issues) . . . . . . . . . . . . . . . . . . . . . . . 6.8 Avoiding propagation of masked data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.5781860351562, "t": 164.48048400878906, "r": 547.1717529296875, "b": 155.26748657226562, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 40, "end_row_offset_idx": 41, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "108", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 41, "end_row_offset_idx": 42, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.4888916015625, "t": 152.0006103515625, "r": 547.19970703125, "b": 142.78761291503906, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 41, "end_row_offset_idx": 42, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "108", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 42, "end_row_offset_idx": 43, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.43359375, "t": 126.98108673095703, "r": 547.1167602539062, "b": 117.7680892944336, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 42, "end_row_offset_idx": 43, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "109", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 43, "end_row_offset_idx": 44, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.662841796875, "t": 114.50121307373047, "r": 547.258544921875, "b": 105.2882080078125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 43, "end_row_offset_idx": 44, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "109", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 44, "end_row_offset_idx": 45, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.5514526367188, "t": 66.98204803466797, "r": 547.2017211914062, "b": 57.76904296875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 44, "end_row_offset_idx": 45, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "113", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 45, "end_row_offset_idx": 46, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.3995361328125, "t": 89.481689453125, "r": 547.1510009765625, "b": 80.26868438720703, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 45, "end_row_offset_idx": 46, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "111", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79995727539062, "t": 66.98204803466797, "r": 525.0014038085938, "b": 57.76904296875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 46, "end_row_offset_idx": 47, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "Chapter 7. Row and Column Access Control management . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}], "num_rows": 47, "num_cols": 2, "grid": [[{"bbox": {"l": 136.8000030517578, "t": 720.4913330078125, "r": 530.5958862304688, "b": 711.2783203125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.1328125, "t": 720.4913330078125, "r": 547.2067260742188, "b": 711.2783203125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "37", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.80001831054688, "t": 708.4915161132812, "r": 530.5200805664062, "b": 699.2785034179688, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.1 Business requirements for the RCAC banking scenario . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.0591430664062, "t": 708.4915161132812, "r": 547.13720703125, "b": 699.2785034179688, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "38", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.80001831054688, "t": 696.0116577148438, "r": 372.6776123046875, "b": 686.7986450195312, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.2 Description of the users roles and responsibilities", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 378.2168884277344, "t": 696.0116577148438, "r": 547.1648559570312, "b": 686.7986450195312, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . 39", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.80001831054688, "t": 683.4720458984375, "r": 530.5362548828125, "b": 674.259033203125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3 Implementation of RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.0903930664062, "t": 683.4720458984375, "r": 547.19873046875, "b": 674.259033203125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "42", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.20018005371094, "t": 670.9921875, "r": 400.5744323730469, "b": 661.7791748046875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.1 Reviewing the tables that are used in this example", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 406.10546875, "t": 670.9921875, "r": 547.14697265625, "b": 661.7791748046875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . 42", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.20018005371094, "t": 658.5123291015625, "r": 516.9255981445312, "b": 649.29931640625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.2 Assigning function ID QIBM_DB_SECADM to the Database Engineers group", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 522.4603881835938, "t": 658.5123291015625, "r": 547.3670654296875, "b": 649.29931640625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . 47", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.20018005371094, "t": 645.9727172851562, "r": 530.5675659179688, "b": 636.7597045898438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.3 Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.0989379882812, "t": 645.9727172851562, "r": 547.1617431640625, "b": 636.7597045898438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "50", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.20018005371094, "t": 633.4928588867188, "r": 411.620849609375, "b": 624.2798461914062, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.4 Creating the CUSTOMER_LOGIN_ID global variable", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 417.15240478515625, "t": 633.4928588867188, "r": 547.1438598632812, "b": 624.2798461914062, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . 52", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.20018005371094, "t": 621.0130004882812, "r": 530.5370483398438, "b": 611.7999877929688, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.5 Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.0759887695312, "t": 621.0130004882812, "r": 547.1538696289062, "b": 611.7999877929688, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "54", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.20018005371094, "t": 608.473388671875, "r": 339.45404052734375, "b": 599.2603759765625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.6 Defining and creating column masks", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 344.9929504394531, "t": 608.473388671875, "r": 547.1638793945312, "b": 599.2603759765625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.20018005371094, "t": 595.9935302734375, "r": 530.539306640625, "b": 586.780517578125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.7 Restricting the inserting and updating of masked data . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.078125, "t": 595.9935302734375, "r": 547.15576171875, "b": 586.780517578125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "60", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.20018005371094, "t": 570.9740600585938, "r": 530.4820556640625, "b": 561.7610473632812, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.9 Reviewing row permissions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.036376953125, "t": 570.9740600585938, "r": 547.14501953125, "b": 561.7610473632812, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "64", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.20018005371094, "t": 558.4942016601562, "r": 530.44921875, "b": 549.2811889648438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.10 Demonstrating data access with RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.0194702148438, "t": 558.4942016601562, "r": 547.1600341796875, "b": 549.2811889648438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "66", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.20018005371094, "t": 546.0143432617188, "r": 530.4335327148438, "b": 536.8013305664062, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.11 Query implementation with RCAC activated . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.0037231445312, "t": 546.0143432617188, "r": 547.1441040039062, "b": 536.8013305664062, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "75", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.80001831054688, "t": 523.5147094726562, "r": 530.5385131835938, "b": 514.3016967773438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "Chapter 5. RCAC and non-SQL interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.0916137695312, "t": 523.5147094726562, "r": 547.1978149414062, "b": 514.3016967773438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "79", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 156.18524169921875, "t": 511.5148620605469, "r": 547.1768798828125, "b": 502.3018798828125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Unsupported interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.80001831054688, "t": 486.4953308105469, "r": 530.4937744140625, "b": 477.2823486328125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "5.3 Accidental updates with masked values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.0474853515625, "t": 486.4953308105469, "r": 547.1549072265625, "b": 477.2823486328125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "81", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.80001831054688, "t": 474.01544189453125, "r": 530.5643310546875, "b": 464.8024597167969, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "5.4 System CL commands considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.0958251953125, "t": 474.01544189453125, "r": 547.158935546875, "b": 464.8024597167969, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "82", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.20018005371094, "t": 461.4757995605469, "r": 530.4598999023438, "b": 452.2628173828125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "5.4.1 Create Duplicate Object (CRTDUPOBJ) command . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.0228271484375, "t": 461.4757995605469, "r": 547.148681640625, "b": 452.2628173828125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "82", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0770874023438, "t": 448.99591064453125, "r": 547.1549682617188, "b": 439.7829284667969, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "82", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.20018005371094, "t": 448.99591064453125, "r": 530.5381469726562, "b": 427.30303955078125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "5.4.2 Copy File (CPYF) command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4.3 Copy Library (CPYLIB) command. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.5494384765625, "t": 251.95913696289062, "r": 547.1646118164062, "b": 242.7461395263672, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "100", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0574340820312, "t": 436.5160217285156, "r": 547.182861328125, "b": 427.30303955078125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "83", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.80001831054688, "t": 414.0163879394531, "r": 530.5385131835938, "b": 404.80340576171875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 22, "end_row_offset_idx": 23, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "Chapter 6. Additional considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 400.59185791015625, "t": 364.51715087890625, "r": 547.1687622070312, "b": 342.7645263671875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 22, "end_row_offset_idx": 23, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . 89 90", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.80003356933594, "t": 389.4769287109375, "r": 530.5139770507812, "b": 367.7840576171875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 23, "end_row_offset_idx": 24, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.2 RCAC effects on data movement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 136.80003356933594, "t": 389.4769287109375, "r": 530.5139770507812, "b": 367.7840576171875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 23, "end_row_offset_idx": 24, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.2 RCAC effects on data movement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}], [{"bbox": {"l": 151.2001953125, "t": 376.9970397949219, "r": 400.1688232421875, "b": 367.7840576171875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 24, "end_row_offset_idx": 25, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.2.1 Effects when RCAC is defined on the source table", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 151.2001953125, "t": 376.9970397949219, "r": 400.1688232421875, "b": 367.7840576171875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 24, "end_row_offset_idx": 25, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.2.1 Effects when RCAC is defined on the source table", "column_header": false, "row_header": true, "row_section": false}], [{"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 25, "end_row_offset_idx": 26, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0606079101562, "t": 376.9970397949219, "r": 547.15380859375, "b": 367.7840576171875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 25, "end_row_offset_idx": 26, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "88", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.80003356933594, "t": 351.9775085449219, "r": 530.5997924804688, "b": 330.2846374511719, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 26, "end_row_offset_idx": 27, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.2.3 Effects when RCAC is defined on both source and target tables . . . . . . . . . . . . . 6.3 RCAC effects on joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.1390991210938, "t": 339.49761962890625, "r": 547.2177734375, "b": 330.2846374511719, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 26, "end_row_offset_idx": 27, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "91", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.2001953125, "t": 327.0177307128906, "r": 547.2595825195312, "b": 317.80474853515625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 27, "end_row_offset_idx": 28, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.3.1 Inner joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 151.2001953125, "t": 327.0177307128906, "r": 547.2595825195312, "b": 317.80474853515625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 27, "end_row_offset_idx": 28, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.3.1 Inner joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92", "column_header": false, "row_header": true, "row_section": false}], [{"bbox": {"l": 151.20016479492188, "t": 314.47808837890625, "r": 547.2595825195312, "b": 305.2651062011719, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 28, "end_row_offset_idx": 29, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.3.2 Outer joins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 151.20016479492188, "t": 314.47808837890625, "r": 547.2595825195312, "b": 305.2651062011719, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 28, "end_row_offset_idx": 29, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.3.2 Outer joins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94", "column_header": false, "row_header": true, "row_section": false}], [{"bbox": {"l": 151.20016479492188, "t": 301.9981994628906, "r": 530.481201171875, "b": 292.78521728515625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 29, "end_row_offset_idx": 30, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.3.3 Exception joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.051025390625, "t": 301.9981994628906, "r": 547.1907348632812, "b": 292.78521728515625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 29, "end_row_offset_idx": 30, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "96", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.8000030517578, "t": 289.45855712890625, "r": 372.92724609375, "b": 280.2455749511719, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 30, "end_row_offset_idx": 31, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.4 Monitoring, analyzing, and debugging with RCAC", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.115966796875, "t": 289.45855712890625, "r": 547.1796264648438, "b": 280.2455749511719, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 30, "end_row_offset_idx": 31, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "97", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 378.45904541015625, "t": 289.45855712890625, "r": 530.5841674804688, "b": 280.2455749511719, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 31, "end_row_offset_idx": 32, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 178.8563232421875, "t": 276.9786682128906, "r": 547.1707763671875, "b": 267.76568603515625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 31, "end_row_offset_idx": 32, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Query monitoring and analysis tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.20016479492188, "t": 264.498779296875, "r": 530.5306396484375, "b": 255.28578186035156, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 32, "end_row_offset_idx": 33, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.4.2 Index advisor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.093017578125, "t": 264.498779296875, "r": 547.2177124023438, "b": 255.28578186035156, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 32, "end_row_offset_idx": 33, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "99", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.20013427734375, "t": 251.95913696289062, "r": 525.0111083984375, "b": 242.7461395263672, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 33, "end_row_offset_idx": 34, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.4.3 Metadata using catalogs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 151.20013427734375, "t": 251.95913696289062, "r": 525.0111083984375, "b": 242.7461395263672, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 33, "end_row_offset_idx": 34, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.4.3 Metadata using catalogs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}], [{"bbox": {"l": 136.7999725341797, "t": 239.47926330566406, "r": 524.8056640625, "b": 230.26626586914062, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 34, "end_row_offset_idx": 35, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.5 Views, materialized query tables, and query rewrite with RCAC . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.3905029296875, "t": 239.47926330566406, "r": 547.14501953125, "b": 230.26626586914062, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 34, "end_row_offset_idx": 35, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "102", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.20013427734375, "t": 214.45974731445312, "r": 524.8568115234375, "b": 205.2467498779297, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 35, "end_row_offset_idx": 36, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.5.2 Materialized query tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.4345092773438, "t": 214.45974731445312, "r": 547.1676635742188, "b": 205.2467498779297, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 35, "end_row_offset_idx": 36, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "103", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 36, "end_row_offset_idx": 37, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.5247192382812, "t": 201.97987365722656, "r": 547.1878051757812, "b": 192.76687622070312, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 36, "end_row_offset_idx": 37, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "105", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.20013427734375, "t": 201.97987365722656, "r": 524.9703979492188, "b": 180.28700256347656, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 37, "end_row_offset_idx": 38, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.5.3 Query rewrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . RCAC effects on performance and scalability. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 151.20013427734375, "t": 201.97987365722656, "r": 524.9703979492188, "b": 180.28700256347656, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 37, "end_row_offset_idx": 38, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.5.3 Query rewrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . RCAC effects on performance and scalability. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}], [{"bbox": {"l": 136.7999725341797, "t": 189.5, "r": 150.70437622070312, "b": 180.28700256347656, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 38, "end_row_offset_idx": 39, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.6", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.4845581054688, "t": 189.5, "r": 547.1698608398438, "b": 180.28700256347656, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 38, "end_row_offset_idx": 39, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "105", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 39, "end_row_offset_idx": 40, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.43701171875, "t": 176.96035766601562, "r": 547.1228637695312, "b": 167.7473602294922, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 39, "end_row_offset_idx": 40, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "107", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.7999725341797, "t": 176.96035766601562, "r": 525.0469970703125, "b": 155.26748657226562, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 40, "end_row_offset_idx": 41, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.7 Exclusive lock to implement RCAC (availability issues) . . . . . . . . . . . . . . . . . . . . . . . 6.8 Avoiding propagation of masked data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.5781860351562, "t": 164.48048400878906, "r": 547.1717529296875, "b": 155.26748657226562, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 40, "end_row_offset_idx": 41, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "108", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 41, "end_row_offset_idx": 42, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.4888916015625, "t": 152.0006103515625, "r": 547.19970703125, "b": 142.78761291503906, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 41, "end_row_offset_idx": 42, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "108", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 42, "end_row_offset_idx": 43, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.43359375, "t": 126.98108673095703, "r": 547.1167602539062, "b": 117.7680892944336, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 42, "end_row_offset_idx": 43, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "109", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 43, "end_row_offset_idx": 44, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.662841796875, "t": 114.50121307373047, "r": 547.258544921875, "b": 105.2882080078125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 43, "end_row_offset_idx": 44, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "109", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 44, "end_row_offset_idx": 45, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.5514526367188, "t": 66.98204803466797, "r": 547.2017211914062, "b": 57.76904296875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 44, "end_row_offset_idx": 45, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "113", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 45, "end_row_offset_idx": 46, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.3995361328125, "t": 89.481689453125, "r": 547.1510009765625, "b": 80.26868438720703, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 45, "end_row_offset_idx": 46, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "111", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.79995727539062, "t": 66.98204803466797, "r": 525.0014038085938, "b": 57.76904296875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 46, "end_row_offset_idx": 47, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "Chapter 7. Row and Column Access Control management . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 136.79995727539062, "t": 66.98204803466797, "r": 525.0014038085938, "b": 57.76904296875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 46, "end_row_offset_idx": 47, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "Chapter 7. Row and Column Access Control management . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}]]}}, {"self_ref": "#/tables/2", "parent": {"cref": "#/body"}, "children": [], "label": "table", "prov": [{"page_no": 7, "bbox": {"l": 135.83180236816406, "t": 721.3062744140625, "r": 547.9264526367188, "b": 482.2618713378906, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [], "references": [], "footnotes": [], "image": null, "data": {"table_cells": [{"bbox": {"l": 136.79989624023438, "t": 720.490966796875, "r": 524.9435424804688, "b": 711.2779541015625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.1 Managing row permissions and column masks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.4978637695312, "t": 720.490966796875, "r": 547.1608276367188, "b": 711.2779541015625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "114", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20005798339844, "t": 708.0111083984375, "r": 524.9487915039062, "b": 698.798095703125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.1.1 Source management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.510986328125, "t": 708.0111083984375, "r": 547.1976318359375, "b": 698.798095703125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "114", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20005798339844, "t": 695.4714965820312, "r": 524.9796752929688, "b": 686.2584838867188, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.1.2 Modifying definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.5341796875, "t": 695.4714965820312, "r": 547.1976928710938, "b": 686.2584838867188, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "114", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20005798339844, "t": 682.9916381835938, "r": 525.0257568359375, "b": 673.7786254882812, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.1.3 Turning on and off . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.5559692382812, "t": 682.9916381835938, "r": 547.1466064453125, "b": 673.7786254882812, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "114", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20005798339844, "t": 670.5117797851562, "r": 238.93310546875, "b": 661.2987670898438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.1.4 Regenerating", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 244.48696899414062, "t": 670.5117797851562, "r": 547.1724853515625, "b": 661.2987670898438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79989624023438, "t": 657.97216796875, "r": 524.9177856445312, "b": 648.7591552734375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.2 Managing tables with row permissions and column masks. . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.4720458984375, "t": 657.97216796875, "r": 547.134765625, "b": 648.7591552734375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "115", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20005798339844, "t": 645.4923095703125, "r": 524.933349609375, "b": 636.279296875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.2.1 Save and restore. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.4951782226562, "t": 645.4923095703125, "r": 547.1807250976562, "b": 636.279296875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "115", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20005798339844, "t": 633.012451171875, "r": 524.9628295898438, "b": 623.7994384765625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.2.2 Table migration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.5087280273438, "t": 633.012451171875, "r": 547.1466064453125, "b": 623.7994384765625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "116", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79989624023438, "t": 620.4728393554688, "r": 524.9552612304688, "b": 611.2598266601562, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.3 Monitoring and auditing function usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.5089111328125, "t": 620.4728393554688, "r": 547.1697998046875, "b": 611.2598266601562, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "117", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79989624023438, "t": 597.9732055664062, "r": 362.6678466796875, "b": 588.7601928710938, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 8. Designing and planning for success", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 363.9595947265625, "t": 597.9732055664062, "r": 547.1986694335938, "b": 588.7601928710938, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.7998809814453, "t": 585.973388671875, "r": 416.633056640625, "b": 576.7603759765625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "8.1 Implementing RCAC with good design and proper planning", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 422.1871643066406, "t": 585.973388671875, "r": 547.1546020507812, "b": 576.7603759765625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . 120", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.7998809814453, "t": 573.4935302734375, "r": 524.86376953125, "b": 564.280517578125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "8.2 DB2 for i Center of Excellence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.440185546875, "t": 573.4935302734375, "r": 547.1694946289062, "b": 564.280517578125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "120", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.7998809814453, "t": 550.993896484375, "r": 447.0309753417969, "b": 541.7808837890625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Appendix A. Database definitions for the RCAC banking example", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 447.35968017578125, "t": 550.993896484375, "r": 547.2036743164062, "b": 541.7808837890625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . 121", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79989624023438, "t": 528.9743041992188, "r": 234.45175170898438, "b": 519.7612915039062, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Related publications", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 236.15985107421875, "t": 528.9743041992188, "r": 547.1917114257812, "b": 519.7612915039062, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79989624023438, "t": 516.494384765625, "r": 217.75054931640625, "b": 507.2814025878906, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Other publications", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 223.33541870117188, "t": 516.494384765625, "r": 547.258544921875, "b": 507.2814025878906, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.7999267578125, "t": 504.0144958496094, "r": 212.61610412597656, "b": 494.801513671875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Online resources", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 218.1934814453125, "t": 504.0144958496094, "r": 547.258544921875, "b": 494.801513671875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.7999267578125, "t": 491.474853515625, "r": 200.54580688476562, "b": 482.2618713378906, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Help from IBM", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 206.0924072265625, "t": 491.474853515625, "r": 547.2077026367188, "b": 482.2618713378906, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128", "column_header": false, "row_header": false, "row_section": false}], "num_rows": 17, "num_cols": 2, "grid": [[{"bbox": {"l": 136.79989624023438, "t": 720.490966796875, "r": 524.9435424804688, "b": 711.2779541015625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.1 Managing row permissions and column masks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.4978637695312, "t": 720.490966796875, "r": 547.1608276367188, "b": 711.2779541015625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "114", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.20005798339844, "t": 708.0111083984375, "r": 524.9487915039062, "b": 698.798095703125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.1.1 Source management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.510986328125, "t": 708.0111083984375, "r": 547.1976318359375, "b": 698.798095703125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "114", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.20005798339844, "t": 695.4714965820312, "r": 524.9796752929688, "b": 686.2584838867188, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.1.2 Modifying definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.5341796875, "t": 695.4714965820312, "r": 547.1976928710938, "b": 686.2584838867188, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "114", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.20005798339844, "t": 682.9916381835938, "r": 525.0257568359375, "b": 673.7786254882812, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.1.3 Turning on and off . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.5559692382812, "t": 682.9916381835938, "r": 547.1466064453125, "b": 673.7786254882812, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "114", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.20005798339844, "t": 670.5117797851562, "r": 238.93310546875, "b": 661.2987670898438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.1.4 Regenerating", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 244.48696899414062, "t": 670.5117797851562, "r": 547.1724853515625, "b": 661.2987670898438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.79989624023438, "t": 657.97216796875, "r": 524.9177856445312, "b": 648.7591552734375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.2 Managing tables with row permissions and column masks. . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.4720458984375, "t": 657.97216796875, "r": 547.134765625, "b": 648.7591552734375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "115", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.20005798339844, "t": 645.4923095703125, "r": 524.933349609375, "b": 636.279296875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.2.1 Save and restore. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.4951782226562, "t": 645.4923095703125, "r": 547.1807250976562, "b": 636.279296875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "115", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.20005798339844, "t": 633.012451171875, "r": 524.9628295898438, "b": 623.7994384765625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.2.2 Table migration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.5087280273438, "t": 633.012451171875, "r": 547.1466064453125, "b": 623.7994384765625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "116", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.79989624023438, "t": 620.4728393554688, "r": 524.9552612304688, "b": 611.2598266601562, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.3 Monitoring and auditing function usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.5089111328125, "t": 620.4728393554688, "r": 547.1697998046875, "b": 611.2598266601562, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "117", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.79989624023438, "t": 597.9732055664062, "r": 362.6678466796875, "b": 588.7601928710938, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 8. Designing and planning for success", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 363.9595947265625, "t": 597.9732055664062, "r": 547.1986694335938, "b": 588.7601928710938, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.7998809814453, "t": 585.973388671875, "r": 416.633056640625, "b": 576.7603759765625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "8.1 Implementing RCAC with good design and proper planning", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 422.1871643066406, "t": 585.973388671875, "r": 547.1546020507812, "b": 576.7603759765625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . 120", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.7998809814453, "t": 573.4935302734375, "r": 524.86376953125, "b": 564.280517578125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "8.2 DB2 for i Center of Excellence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.440185546875, "t": 573.4935302734375, "r": 547.1694946289062, "b": 564.280517578125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "120", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.7998809814453, "t": 550.993896484375, "r": 447.0309753417969, "b": 541.7808837890625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Appendix A. Database definitions for the RCAC banking example", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 447.35968017578125, "t": 550.993896484375, "r": 547.2036743164062, "b": 541.7808837890625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . 121", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.79989624023438, "t": 528.9743041992188, "r": 234.45175170898438, "b": 519.7612915039062, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Related publications", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 236.15985107421875, "t": 528.9743041992188, "r": 547.1917114257812, "b": 519.7612915039062, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.79989624023438, "t": 516.494384765625, "r": 217.75054931640625, "b": 507.2814025878906, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Other publications", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 223.33541870117188, "t": 516.494384765625, "r": 547.258544921875, "b": 507.2814025878906, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.7999267578125, "t": 504.0144958496094, "r": 212.61610412597656, "b": 494.801513671875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Online resources", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 218.1934814453125, "t": 504.0144958496094, "r": 547.258544921875, "b": 494.801513671875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.7999267578125, "t": 491.474853515625, "r": 200.54580688476562, "b": 482.2618713378906, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Help from IBM", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 206.0924072265625, "t": 491.474853515625, "r": 547.2077026367188, "b": 482.2618713378906, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128", "column_header": false, "row_header": false, "row_section": false}]]}}, {"self_ref": "#/tables/3", "parent": {"cref": "#/body"}, "children": [], "label": "table", "prov": [{"page_no": 26, "bbox": {"l": 135.52508544921875, "t": 502.2750244140625, "r": 545.87060546875, "b": 349.9494934082031, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [{"cref": "#/texts/258"}], "references": [], "footnotes": [], "image": null, "data": {"table_cells": [{"bbox": {"l": 142.8000030517578, "t": 495.4620056152344, "r": 202.2449951171875, "b": 487.1369934082031, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Column name", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 216.8087921142578, "t": 495.4620056152344, "r": 257.210693359375, "b": 487.1369934082031, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Data type", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 289.47479248046875, "t": 495.4620056152344, "r": 338.8946838378906, "b": 487.1369934082031, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Description", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8000030517578, "t": 476.4422912597656, "r": 203.2322998046875, "b": 468.1172790527344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "FUNCTION_ID", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.785400390625, "t": 476.4422912597656, "r": 276.00360107421875, "b": 468.1172790527344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(30)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.45770263671875, "t": 476.4422912597656, "r": 359.85394287109375, "b": 468.1172790527344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "ID of the function.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8000030517578, "t": 457.48199462890625, "r": 198.66929626464844, "b": 449.156982421875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USER_NAME", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.74130249023438, "t": 457.48199462890625, "r": 275.9234924316406, "b": 449.156982421875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(10)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.382080078125, "t": 457.48199462890625, "r": 515.0535888671875, "b": 438.1166687011719, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Name of the user profile that has a usage setting for this function.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.79998779296875, "t": 427.48138427734375, "r": 173.98318481445312, "b": 419.1563720703125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USAGE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.773681640625, "t": 427.48138427734375, "r": 270.9797668457031, "b": 419.1563720703125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(7)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.416259765625, "t": 427.48138427734375, "r": 539.1071166992188, "b": 397.13604736328125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Usage setting: GLYPH ALLOWED: The user profile is allowed to use the function. GLYPH DENIED: The user profile is not allowed to use the function.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8000030517578, "t": 386.44134521484375, "r": 196.2248992919922, "b": 378.1163330078125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USER_TYPE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.75210571289062, "t": 386.44134521484375, "r": 270.99871826171875, "b": 378.1163330078125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(5)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.4316101074219, "t": 386.44134521484375, "r": 448.11962890625, "b": 356.15631103515625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Type of user profile: GLYPH USER: The user profile is a user. GLYPH GROUP: The user profile is a group.", "column_header": false, "row_header": false, "row_section": false}], "num_rows": 5, "num_cols": 3, "grid": [[{"bbox": {"l": 142.8000030517578, "t": 495.4620056152344, "r": 202.2449951171875, "b": 487.1369934082031, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Column name", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 216.8087921142578, "t": 495.4620056152344, "r": 257.210693359375, "b": 487.1369934082031, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Data type", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 289.47479248046875, "t": 495.4620056152344, "r": 338.8946838378906, "b": 487.1369934082031, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Description", "column_header": true, "row_header": false, "row_section": false}], [{"bbox": {"l": 142.8000030517578, "t": 476.4422912597656, "r": 203.2322998046875, "b": 468.1172790527344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "FUNCTION_ID", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.785400390625, "t": 476.4422912597656, "r": 276.00360107421875, "b": 468.1172790527344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(30)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.45770263671875, "t": 476.4422912597656, "r": 359.85394287109375, "b": 468.1172790527344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "ID of the function.", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 142.8000030517578, "t": 457.48199462890625, "r": 198.66929626464844, "b": 449.156982421875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USER_NAME", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.74130249023438, "t": 457.48199462890625, "r": 275.9234924316406, "b": 449.156982421875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(10)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.382080078125, "t": 457.48199462890625, "r": 515.0535888671875, "b": 438.1166687011719, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Name of the user profile that has a usage setting for this function.", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 142.79998779296875, "t": 427.48138427734375, "r": 173.98318481445312, "b": 419.1563720703125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USAGE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.773681640625, "t": 427.48138427734375, "r": 270.9797668457031, "b": 419.1563720703125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(7)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.416259765625, "t": 427.48138427734375, "r": 539.1071166992188, "b": 397.13604736328125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Usage setting: GLYPH ALLOWED: The user profile is allowed to use the function. GLYPH DENIED: The user profile is not allowed to use the function.", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 142.8000030517578, "t": 386.44134521484375, "r": 196.2248992919922, "b": 378.1163330078125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USER_TYPE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.75210571289062, "t": 386.44134521484375, "r": 270.99871826171875, "b": 378.1163330078125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(5)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.4316101074219, "t": 386.44134521484375, "r": 448.11962890625, "b": 356.15631103515625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Type of user profile: GLYPH USER: The user profile is a user. GLYPH GROUP: The user profile is a group.", "column_header": false, "row_header": false, "row_section": false}]]}}, {"self_ref": "#/tables/4", "parent": {"cref": "#/body"}, "children": [], "label": "table", "prov": [{"page_no": 27, "bbox": {"l": 64.41139221191406, "t": 398.3863525390625, "r": 547.3950805664062, "b": 70.39208984375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [{"cref": "#/texts/272"}], "references": [], "footnotes": [], "image": null, "data": {"table_cells": [{"bbox": {"l": 70.80030059814453, "t": 391.4817199707031, "r": 119.78550720214844, "b": 383.1567077636719, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "User action", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 424.93804931640625, "t": 344.4774475097656, "r": 433.2629699707031, "b": 304.9800109863281, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "*JOBCTL", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 450.1380615234375, "t": 390.3999328613281, "r": 458.4629821777344, "b": 304.9800109863281, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "QIBM_DB_SECADM", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 475.9383544921875, "t": 390.465576171875, "r": 484.2632751464844, "b": 304.9800109863281, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "QIBM_DB_SQLADM", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 501.13836669921875, "t": 390.385498046875, "r": 509.4632873535156, "b": 304.9800109863281, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "QIBM_DB_SYSMON", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 526.3986206054688, "t": 359.2005615234375, "r": 534.7235717773438, "b": 304.9799499511719, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "No Authority", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.80000305175781, "t": 293.4420166015625, "r": 220.1568145751953, "b": 285.11700439453125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "SET CURRENT DEGREE (SQL statement)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0, "t": 293.4420166015625, "r": 435.00299072265625, "b": 285.11700439453125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00030517578125, "t": 293.4420166015625, "r": 486.0032958984375, "b": 285.11700439453125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.80001831054688, "t": 274.4817199707031, "r": 264.5538024902344, "b": 266.1567077636719, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CHGQRYA command targeting a different user's job", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000305175781, "t": 274.4817199707031, "r": 435.0030212402344, "b": 266.1567077636719, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0003356933594, "t": 274.4817199707031, "r": 486.0033264160156, "b": 266.1567077636719, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800048828125, "t": 255.46202087402344, "r": 322.5057373046875, "b": 247.1370086669922, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "STRDBMON or ENDDBMON commands targeting a different user's job", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000305175781, "t": 255.46202087402344, "r": 435.0030212402344, "b": 247.1370086669922, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0003356933594, "t": 255.46202087402344, "r": 486.0033264160156, "b": 247.1370086669922, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800048828125, "t": 236.44232177734375, "r": 381.0218505859375, "b": 228.1173095703125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "STRDBMON or ENDDBMON commands targeting a job that matches the current user", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000305175781, "t": 236.44232177734375, "r": 435.0030212402344, "b": 228.1173095703125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0003356933594, "t": 236.44232177734375, "r": 486.0033264160156, "b": 228.1173095703125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 505.2606201171875, "t": 236.44232177734375, "r": 511.26361083984375, "b": 228.1173095703125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.7603149414062, "t": 236.44232177734375, "r": 536.7633056640625, "b": 228.1173095703125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800048828125, "t": 217.48202514648438, "r": 359.5173645019531, "b": 209.15701293945312, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "QUSRJOBI() API format 900 or System i Navigator's SQL Details for Job", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00006103515625, "t": 217.48202514648438, "r": 435.0030517578125, "b": 209.15701293945312, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0003662109375, "t": 217.48202514648438, "r": 486.00335693359375, "b": 209.15701293945312, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 505.26068115234375, "t": 217.48202514648438, "r": 511.263671875, "b": 209.15701293945312, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.80007934570312, "t": 198.4623260498047, "r": 220.7517852783203, "b": 190.13731384277344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Visual Explain within Run SQL scripts", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00006103515625, "t": 198.4623260498047, "r": 435.0030517578125, "b": 190.13731384277344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0003662109375, "t": 198.4623260498047, "r": 486.00335693359375, "b": 190.13731384277344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 505.26068115234375, "t": 198.4623260498047, "r": 511.263671875, "b": 190.13731384277344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.7603759765625, "t": 198.4623260498047, "r": 536.7633666992188, "b": 190.13731384277344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.80007934570312, "t": 179.442626953125, "r": 236.65480041503906, "b": 171.11761474609375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Visual Explain outside of Run SQL scripts", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00006103515625, "t": 179.442626953125, "r": 435.0030517578125, "b": 171.11761474609375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0003662109375, "t": 179.442626953125, "r": 486.00335693359375, "b": 171.11761474609375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.80007934570312, "t": 160.48233032226562, "r": 213.1296844482422, "b": 152.15731811523438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ANALYZE PLAN CACHE procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00006103515625, "t": 160.48233032226562, "r": 435.0030517578125, "b": 152.15731811523438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0003662109375, "t": 160.48233032226562, "r": 486.00335693359375, "b": 152.15731811523438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.80007934570312, "t": 141.46263122558594, "r": 199.87808227539062, "b": 133.1376190185547, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "DUMP PLAN CACHE procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00006103515625, "t": 141.46263122558594, "r": 435.0030517578125, "b": 133.1376190185547, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0003662109375, "t": 141.46263122558594, "r": 486.00335693359375, "b": 133.1376190185547, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.80007934570312, "t": 122.44291687011719, "r": 208.36776733398438, "b": 114.11792755126953, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "MODIFY PLAN CACHE procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00006103515625, "t": 122.44291687011719, "r": 435.0030517578125, "b": 114.11792755126953, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0003662109375, "t": 122.44291687011719, "r": 486.00335693359375, "b": 114.11792755126953, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.80007934570312, "t": 103.42323303222656, "r": 411.20263671875, "b": 95.09822845458984, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "MODIFY PLAN CACHE PROPERTIES procedure (currently does not check authority)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00006103515625, "t": 103.42323303222656, "r": 435.0030517578125, "b": 95.09822845458984, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0003662109375, "t": 103.42323303222656, "r": 486.00335693359375, "b": 95.09822845458984, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.80007934570312, "t": 84.46292877197266, "r": 377.1258544921875, "b": 76.13793182373047, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CHANGE PLAN CACHE SIZE procedure (currently does not check authority)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00006103515625, "t": 84.46292877197266, "r": 435.0030517578125, "b": 76.13793182373047, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0003662109375, "t": 84.46292877197266, "r": 486.00335693359375, "b": 76.13793182373047, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}], "num_rows": 13, "num_cols": 6, "grid": [[{"bbox": {"l": 70.80030059814453, "t": 391.4817199707031, "r": 119.78550720214844, "b": 383.1567077636719, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "User action", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 424.93804931640625, "t": 344.4774475097656, "r": 433.2629699707031, "b": 304.9800109863281, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "*JOBCTL", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 450.1380615234375, "t": 390.3999328613281, "r": 458.4629821777344, "b": 304.9800109863281, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "QIBM_DB_SECADM", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 475.9383544921875, "t": 390.465576171875, "r": 484.2632751464844, "b": 304.9800109863281, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "QIBM_DB_SQLADM", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 501.13836669921875, "t": 390.385498046875, "r": 509.4632873535156, "b": 304.9800109863281, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "QIBM_DB_SYSMON", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 526.3986206054688, "t": 359.2005615234375, "r": 534.7235717773438, "b": 304.9799499511719, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "No Authority", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.80000305175781, "t": 293.4420166015625, "r": 220.1568145751953, "b": 285.11700439453125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "SET CURRENT DEGREE (SQL statement)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0, "t": 293.4420166015625, "r": 435.00299072265625, "b": 285.11700439453125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00030517578125, "t": 293.4420166015625, "r": 486.0032958984375, "b": 285.11700439453125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.80001831054688, "t": 274.4817199707031, "r": 264.5538024902344, "b": 266.1567077636719, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CHGQRYA command targeting a different user's job", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000305175781, "t": 274.4817199707031, "r": 435.0030212402344, "b": 266.1567077636719, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0003356933594, "t": 274.4817199707031, "r": 486.0033264160156, "b": 266.1567077636719, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.800048828125, "t": 255.46202087402344, "r": 322.5057373046875, "b": 247.1370086669922, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "STRDBMON or ENDDBMON commands targeting a different user's job", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000305175781, "t": 255.46202087402344, "r": 435.0030212402344, "b": 247.1370086669922, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0003356933594, "t": 255.46202087402344, "r": 486.0033264160156, "b": 247.1370086669922, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.800048828125, "t": 236.44232177734375, "r": 381.0218505859375, "b": 228.1173095703125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "STRDBMON or ENDDBMON commands targeting a job that matches the current user", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000305175781, "t": 236.44232177734375, "r": 435.0030212402344, "b": 228.1173095703125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0003356933594, "t": 236.44232177734375, "r": 486.0033264160156, "b": 228.1173095703125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 505.2606201171875, "t": 236.44232177734375, "r": 511.26361083984375, "b": 228.1173095703125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.7603149414062, "t": 236.44232177734375, "r": 536.7633056640625, "b": 228.1173095703125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "X", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.800048828125, "t": 217.48202514648438, "r": 359.5173645019531, "b": 209.15701293945312, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "QUSRJOBI() API format 900 or System i Navigator's SQL Details for Job", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00006103515625, "t": 217.48202514648438, "r": 435.0030517578125, "b": 209.15701293945312, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0003662109375, "t": 217.48202514648438, "r": 486.00335693359375, "b": 209.15701293945312, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 505.26068115234375, "t": 217.48202514648438, "r": 511.263671875, "b": 209.15701293945312, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.80007934570312, "t": 198.4623260498047, "r": 220.7517852783203, "b": 190.13731384277344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Visual Explain within Run SQL scripts", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00006103515625, "t": 198.4623260498047, "r": 435.0030517578125, "b": 190.13731384277344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0003662109375, "t": 198.4623260498047, "r": 486.00335693359375, "b": 190.13731384277344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 505.26068115234375, "t": 198.4623260498047, "r": 511.263671875, "b": 190.13731384277344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.7603759765625, "t": 198.4623260498047, "r": 536.7633666992188, "b": 190.13731384277344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "X", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.80007934570312, "t": 179.442626953125, "r": 236.65480041503906, "b": 171.11761474609375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Visual Explain outside of Run SQL scripts", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00006103515625, "t": 179.442626953125, "r": 435.0030517578125, "b": 171.11761474609375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0003662109375, "t": 179.442626953125, "r": 486.00335693359375, "b": 171.11761474609375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.80007934570312, "t": 160.48233032226562, "r": 213.1296844482422, "b": 152.15731811523438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ANALYZE PLAN CACHE procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00006103515625, "t": 160.48233032226562, "r": 435.0030517578125, "b": 152.15731811523438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0003662109375, "t": 160.48233032226562, "r": 486.00335693359375, "b": 152.15731811523438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.80007934570312, "t": 141.46263122558594, "r": 199.87808227539062, "b": 133.1376190185547, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "DUMP PLAN CACHE procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00006103515625, "t": 141.46263122558594, "r": 435.0030517578125, "b": 133.1376190185547, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0003662109375, "t": 141.46263122558594, "r": 486.00335693359375, "b": 133.1376190185547, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.80007934570312, "t": 122.44291687011719, "r": 208.36776733398438, "b": 114.11792755126953, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "MODIFY PLAN CACHE procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00006103515625, "t": 122.44291687011719, "r": 435.0030517578125, "b": 114.11792755126953, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0003662109375, "t": 122.44291687011719, "r": 486.00335693359375, "b": 114.11792755126953, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.80007934570312, "t": 103.42323303222656, "r": 411.20263671875, "b": 95.09822845458984, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "MODIFY PLAN CACHE PROPERTIES procedure (currently does not check authority)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00006103515625, "t": 103.42323303222656, "r": 435.0030517578125, "b": 95.09822845458984, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0003662109375, "t": 103.42323303222656, "r": 486.00335693359375, "b": 95.09822845458984, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.80007934570312, "t": 84.46292877197266, "r": 377.1258544921875, "b": 76.13793182373047, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CHANGE PLAN CACHE SIZE procedure (currently does not check authority)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00006103515625, "t": 84.46292877197266, "r": 435.0030517578125, "b": 76.13793182373047, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0003662109375, "t": 84.46292877197266, "r": 486.00335693359375, "b": 76.13793182373047, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}]]}}, {"self_ref": "#/tables/5", "parent": {"cref": "#/body"}, "children": [], "label": "table", "prov": [{"page_no": 28, "bbox": {"l": 64.12763214111328, "t": 721.4774780273438, "r": 547.230224609375, "b": 222.45916748046875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [], "references": [], "footnotes": [], "image": null, "data": {"table_cells": [{"bbox": {"l": 70.80136108398438, "t": 714.4642333984375, "r": 119.78656768798828, "b": 706.1392822265625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "User action", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 424.93804931640625, "t": 667.4706420898438, "r": 433.262939453125, "b": 628.02001953125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "*JOBCTL", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 450.1380615234375, "t": 713.3759765625, "r": 458.46295166015625, "b": 628.02001953125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "QIBM_DB_SECADM", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 475.9383544921875, "t": 713.3759765625, "r": 484.26324462890625, "b": 628.02001953125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "QIBM_DB_SQLADM", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 501.13836669921875, "t": 713.437255859375, "r": 509.4632568359375, "b": 628.02001953125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "QIBM_DB_SYSMON", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 526.3987426757812, "t": 682.131591796875, "r": 534.7235107421875, "b": 628.02001953125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "No Authority", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 70.80060577392578, "t": 616.4822998046875, "r": 278.5827331542969, "b": 608.1573486328125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "START PLAN CACHE EVENT MONITOR procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0005798339844, "t": 616.4822998046875, "r": 435.0035705566406, "b": 608.1573486328125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0008850097656, "t": 616.4822998046875, "r": 486.0038757324219, "b": 608.1573486328125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.80059814453125, "t": 597.4625854492188, "r": 269.4494934082031, "b": 589.1376342773438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "END PLAN CACHE EVENT MONITOR procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0005798339844, "t": 597.4625854492188, "r": 435.0035705566406, "b": 589.1376342773438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0008850097656, "t": 597.4625854492188, "r": 486.0038757324219, "b": 589.1376342773438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.80059814453125, "t": 578.44287109375, "r": 293.976318359375, "b": 570.117919921875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "END ALL PLAN CACHE EVENT MONITORS procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0005798339844, "t": 578.44287109375, "r": 435.0035705566406, "b": 570.117919921875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0008850097656, "t": 578.44287109375, "r": 486.0038757324219, "b": 570.117919921875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.80059814453125, "t": 559.4825439453125, "r": 311.2257385253906, "b": 551.1575927734375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Work with RCAC row permissions (Create, modify, or delete)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 454.50030517578125, "t": 559.4825439453125, "r": 460.5032958984375, "b": 551.1575927734375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.80059814453125, "t": 540.4628295898438, "r": 303.5882873535156, "b": 532.1378784179688, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Work with RCAC column masks (Create, modify, or delete)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 454.50030517578125, "t": 540.4628295898438, "r": 460.5032958984375, "b": 532.1378784179688, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.80059814453125, "t": 521.443115234375, "r": 264.57958984375, "b": 513.1181640625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Change Object Owner ( CHGOBJOWN ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 454.50030517578125, "t": 521.443115234375, "r": 460.5032958984375, "b": 513.1181640625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.80059814453125, "t": 502.48284912109375, "r": 299.39697265625, "b": 494.1578369140625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Change Object Primary Group ( CHGOBJPGP ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 454.50030517578125, "t": 502.48284912109375, "r": 460.5032958984375, "b": 494.1578369140625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.80059814453125, "t": 483.463134765625, "r": 266.843994140625, "b": 475.13812255859375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Grant Object Authority ( GRTOBJAUT ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 454.5002746582031, "t": 483.463134765625, "r": 460.5032653808594, "b": 475.13812255859375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.80056762695312, "t": 464.44342041015625, "r": 271.78857421875, "b": 456.118408203125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Revoke Object Authority ( RVKOBJAUT ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 454.500244140625, "t": 464.44342041015625, "r": 460.50323486328125, "b": 456.118408203125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800537109375, "t": 445.4831237792969, "r": 257.3543395996094, "b": 437.1581115722656, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Edit Object Authority ( EDTOBJAUT ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 454.500244140625, "t": 445.4831237792969, "r": 460.50323486328125, "b": 437.1581115722656, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800537109375, "t": 426.4634094238281, "r": 271.1882629394531, "b": 418.1383972167969, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Display Object Authority ( DSPOBJAUT ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 454.500244140625, "t": 426.4634094238281, "r": 460.50323486328125, "b": 418.1383972167969, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800537109375, "t": 407.4436950683594, "r": 237.0242462158203, "b": 399.1186828613281, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Work with Objects ( WRKOBJ ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 454.500244140625, "t": 407.4436950683594, "r": 460.50323486328125, "b": 399.1186828613281, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800537109375, "t": 388.4833984375, "r": 238.51824951171875, "b": 380.15838623046875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Work with Libraries ( WRKLIB ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 454.5011291503906, "t": 388.4833984375, "r": 460.5041198730469, "b": 380.15838623046875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.80142211914062, "t": 369.46368408203125, "r": 284.7251281738281, "b": 361.138671875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Add Authorization List Entry ( ADDAUTLE ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 454.5010986328125, "t": 369.46368408203125, "r": 460.50408935546875, "b": 361.138671875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.8013916015625, "t": 350.4439697265625, "r": 297.70037841796875, "b": 342.11895751953125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Change Authorization List Entry ( CHGAUTLE ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 454.5010986328125, "t": 350.4439697265625, "r": 460.50408935546875, "b": 342.11895751953125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.8013916015625, "t": 331.4836730957031, "r": 299.32037353515625, "b": 323.1586608886719, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Remove Authorization List Entry ( RMVAUTLE ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 454.5010986328125, "t": 331.4836730957031, "r": 460.50408935546875, "b": 323.1586608886719, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.8013916015625, "t": 312.4639587402344, "r": 299.32037353515625, "b": 304.1389465332031, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Retrieve Authorization List Entry ( RTVAUTLE ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 454.5010986328125, "t": 312.4639587402344, "r": 460.50408935546875, "b": 304.1389465332031, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.8013916015625, "t": 293.4442443847656, "r": 269.78509521484375, "b": 285.1192321777344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Display Authorization List ( DSPAUTL ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 454.5010986328125, "t": 293.4442443847656, "r": 460.50408935546875, "b": 285.1192321777344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.8013916015625, "t": 274.48394775390625, "r": 313.63848876953125, "b": 266.158935546875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Display Authorization List Objects ( DSPAUTLOBJ ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 454.5010986328125, "t": 274.48394775390625, "r": 460.50408935546875, "b": 266.158935546875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.8013916015625, "t": 255.46424865722656, "r": 253.48878479003906, "b": 247.1392364501953, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Edit Authorization List ( EDTAUTL ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 454.5010681152344, "t": 255.46424865722656, "r": 460.5040588378906, "b": 247.1392364501953, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.80136108398438, "t": 236.44454956054688, "r": 281.80908203125, "b": 228.11953735351562, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Work with Authorization Lists ( WRKAUTL ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 454.5010681152344, "t": 236.44454956054688, "r": 460.5040588378906, "b": 228.11953735351562, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}], "num_rows": 22, "num_cols": 6, "grid": [[{"bbox": {"l": 70.80136108398438, "t": 714.4642333984375, "r": 119.78656768798828, "b": 706.1392822265625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "User action", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 424.93804931640625, "t": 667.4706420898438, "r": 433.262939453125, "b": 628.02001953125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "*JOBCTL", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 450.1380615234375, "t": 713.3759765625, "r": 458.46295166015625, "b": 628.02001953125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "QIBM_DB_SECADM", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 475.9383544921875, "t": 713.3759765625, "r": 484.26324462890625, "b": 628.02001953125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "QIBM_DB_SQLADM", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 501.13836669921875, "t": 713.437255859375, "r": 509.4632568359375, "b": 628.02001953125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "QIBM_DB_SYSMON", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 526.3987426757812, "t": 682.131591796875, "r": 534.7235107421875, "b": 628.02001953125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "No Authority", "column_header": true, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.80060577392578, "t": 616.4822998046875, "r": 278.5827331542969, "b": 608.1573486328125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "START PLAN CACHE EVENT MONITOR procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0005798339844, "t": 616.4822998046875, "r": 435.0035705566406, "b": 608.1573486328125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0008850097656, "t": 616.4822998046875, "r": 486.0038757324219, "b": 608.1573486328125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.80059814453125, "t": 597.4625854492188, "r": 269.4494934082031, "b": 589.1376342773438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "END PLAN CACHE EVENT MONITOR procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0005798339844, "t": 597.4625854492188, "r": 435.0035705566406, "b": 589.1376342773438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0008850097656, "t": 597.4625854492188, "r": 486.0038757324219, "b": 589.1376342773438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.80059814453125, "t": 578.44287109375, "r": 293.976318359375, "b": 570.117919921875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "END ALL PLAN CACHE EVENT MONITORS procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0005798339844, "t": 578.44287109375, "r": 435.0035705566406, "b": 570.117919921875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0008850097656, "t": 578.44287109375, "r": 486.0038757324219, "b": 570.117919921875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.80059814453125, "t": 559.4825439453125, "r": 311.2257385253906, "b": 551.1575927734375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Work with RCAC row permissions (Create, modify, or delete)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 454.50030517578125, "t": 559.4825439453125, "r": 460.5032958984375, "b": 551.1575927734375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.80059814453125, "t": 540.4628295898438, "r": 303.5882873535156, "b": 532.1378784179688, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Work with RCAC column masks (Create, modify, or delete)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 454.50030517578125, "t": 540.4628295898438, "r": 460.5032958984375, "b": 532.1378784179688, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.80059814453125, "t": 521.443115234375, "r": 264.57958984375, "b": 513.1181640625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Change Object Owner ( CHGOBJOWN ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 454.50030517578125, "t": 521.443115234375, "r": 460.5032958984375, "b": 513.1181640625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.80059814453125, "t": 502.48284912109375, "r": 299.39697265625, "b": 494.1578369140625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Change Object Primary Group ( CHGOBJPGP ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 454.50030517578125, "t": 502.48284912109375, "r": 460.5032958984375, "b": 494.1578369140625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.80059814453125, "t": 483.463134765625, "r": 266.843994140625, "b": 475.13812255859375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Grant Object Authority ( GRTOBJAUT ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 454.5002746582031, "t": 483.463134765625, "r": 460.5032653808594, "b": 475.13812255859375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.80056762695312, "t": 464.44342041015625, "r": 271.78857421875, "b": 456.118408203125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Revoke Object Authority ( RVKOBJAUT ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 454.500244140625, "t": 464.44342041015625, "r": 460.50323486328125, "b": 456.118408203125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.800537109375, "t": 445.4831237792969, "r": 257.3543395996094, "b": 437.1581115722656, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Edit Object Authority ( EDTOBJAUT ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 454.500244140625, "t": 445.4831237792969, "r": 460.50323486328125, "b": 437.1581115722656, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.800537109375, "t": 426.4634094238281, "r": 271.1882629394531, "b": 418.1383972167969, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Display Object Authority ( DSPOBJAUT ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 454.500244140625, "t": 426.4634094238281, "r": 460.50323486328125, "b": 418.1383972167969, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.800537109375, "t": 407.4436950683594, "r": 237.0242462158203, "b": 399.1186828613281, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Work with Objects ( WRKOBJ ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 454.500244140625, "t": 407.4436950683594, "r": 460.50323486328125, "b": 399.1186828613281, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.800537109375, "t": 388.4833984375, "r": 238.51824951171875, "b": 380.15838623046875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Work with Libraries ( WRKLIB ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 454.5011291503906, "t": 388.4833984375, "r": 460.5041198730469, "b": 380.15838623046875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.80142211914062, "t": 369.46368408203125, "r": 284.7251281738281, "b": 361.138671875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Add Authorization List Entry ( ADDAUTLE ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 454.5010986328125, "t": 369.46368408203125, "r": 460.50408935546875, "b": 361.138671875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.8013916015625, "t": 350.4439697265625, "r": 297.70037841796875, "b": 342.11895751953125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Change Authorization List Entry ( CHGAUTLE ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 454.5010986328125, "t": 350.4439697265625, "r": 460.50408935546875, "b": 342.11895751953125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.8013916015625, "t": 331.4836730957031, "r": 299.32037353515625, "b": 323.1586608886719, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Remove Authorization List Entry ( RMVAUTLE ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 454.5010986328125, "t": 331.4836730957031, "r": 460.50408935546875, "b": 323.1586608886719, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.8013916015625, "t": 312.4639587402344, "r": 299.32037353515625, "b": 304.1389465332031, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Retrieve Authorization List Entry ( RTVAUTLE ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 454.5010986328125, "t": 312.4639587402344, "r": 460.50408935546875, "b": 304.1389465332031, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.8013916015625, "t": 293.4442443847656, "r": 269.78509521484375, "b": 285.1192321777344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Display Authorization List ( DSPAUTL ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 454.5010986328125, "t": 293.4442443847656, "r": 460.50408935546875, "b": 285.1192321777344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.8013916015625, "t": 274.48394775390625, "r": 313.63848876953125, "b": 266.158935546875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Display Authorization List Objects ( DSPAUTLOBJ ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 454.5010986328125, "t": 274.48394775390625, "r": 460.50408935546875, "b": 266.158935546875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.8013916015625, "t": 255.46424865722656, "r": 253.48878479003906, "b": 247.1392364501953, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Edit Authorization List ( EDTAUTL ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 454.5010681152344, "t": 255.46424865722656, "r": 460.5040588378906, "b": 247.1392364501953, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.80136108398438, "t": 236.44454956054688, "r": 281.80908203125, "b": 228.11953735351562, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Work with Authorization Lists ( WRKAUTL ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 454.5010681152344, "t": 236.44454956054688, "r": 460.5040588378906, "b": 228.11953735351562, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}]]}}, {"self_ref": "#/tables/6", "parent": {"cref": "#/body"}, "children": [], "label": "table", "prov": [{"page_no": 35, "bbox": {"l": 134.54624938964844, "t": 688.5811157226562, "r": 542.0460815429688, "b": 587.7283935546875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [{"cref": "#/texts/341"}], "references": [], "footnotes": [], "image": null, "data": {"table_cells": [{"bbox": {"l": 142.8000030517578, "t": 681.4619750976562, "r": 209.67091369628906, "b": 673.1370239257812, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Special register", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 230.18911743164062, "t": 681.4619750976562, "r": 319.9352722167969, "b": 673.1370239257812, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Corresponding value", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 142.80001831054688, "t": 662.5016479492188, "r": 212.7012176513672, "b": 643.1364135742188, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USER or SESSION_USER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 230.2197265625, "t": 662.5016479492188, "r": 467.9906921386719, "b": 654.1766967773438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "The effective user of the thread excluding adopted authority.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.80003356933594, "t": 632.441650390625, "r": 216.63963317871094, "b": 624.11669921875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CURRENT_USER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 230.19813537597656, "t": 632.441650390625, "r": 535.6508178710938, "b": 613.13671875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "The effective user of the thread including adopted authority. When no adopted authority is present, this has the same value as USER.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8009033203125, "t": 602.4419555664062, "r": 209.73570251464844, "b": 594.1170043945312, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "SYSTEM_USER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 230.24490356445312, "t": 602.4419555664062, "r": 425.64569091796875, "b": 594.1170043945312, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "The authorization ID that initiated the connection.", "column_header": false, "row_header": false, "row_section": false}], "num_rows": 4, "num_cols": 2, "grid": [[{"bbox": {"l": 142.8000030517578, "t": 681.4619750976562, "r": 209.67091369628906, "b": 673.1370239257812, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Special register", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 230.18911743164062, "t": 681.4619750976562, "r": 319.9352722167969, "b": 673.1370239257812, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Corresponding value", "column_header": true, "row_header": false, "row_section": false}], [{"bbox": {"l": 142.80001831054688, "t": 662.5016479492188, "r": 212.7012176513672, "b": 643.1364135742188, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USER or SESSION_USER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 230.2197265625, "t": 662.5016479492188, "r": 467.9906921386719, "b": 654.1766967773438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "The effective user of the thread excluding adopted authority.", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 142.80003356933594, "t": 632.441650390625, "r": 216.63963317871094, "b": 624.11669921875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CURRENT_USER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 230.19813537597656, "t": 632.441650390625, "r": 535.6508178710938, "b": 613.13671875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "The effective user of the thread including adopted authority. When no adopted authority is present, this has the same value as USER.", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 142.8009033203125, "t": 602.4419555664062, "r": 209.73570251464844, "b": 594.1170043945312, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "SYSTEM_USER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 230.24490356445312, "t": 602.4419555664062, "r": 425.64569091796875, "b": 594.1170043945312, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "The authorization ID that initiated the connection.", "column_header": false, "row_header": false, "row_section": false}]]}}, {"self_ref": "#/tables/7", "parent": {"cref": "#/body"}, "children": [], "label": "table", "prov": [{"page_no": 36, "bbox": {"l": 63.556331634521484, "t": 687.76611328125, "r": 548.5687255859375, "b": 495.7753601074219, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [{"cref": "#/texts/357"}], "references": [], "footnotes": [], "image": null, "data": {"table_cells": [{"bbox": {"l": 70.80000305175781, "t": 681.4619750976562, "r": 134.99070739746094, "b": 673.1370239257812, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Global variable", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 202.889404296875, "t": 681.4619750976562, "r": 223.34640502929688, "b": 673.1370239257812, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Type", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 281.8247985839844, "t": 681.4619750976562, "r": 331.3428039550781, "b": 673.1370239257812, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Description", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 70.80000305175781, "t": 662.5016479492188, "r": 132.7209014892578, "b": 654.1766967773438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CLIENT_HOST", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.89028930664062, "t": 662.5016479492188, "r": 267.0765075683594, "b": 654.1766967773438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(255)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.8473205566406, "t": 662.5016479492188, "r": 510.17547607421875, "b": 654.1766967773438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Host name of the current client as returned by the system", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.80001831054688, "t": 643.48193359375, "r": 140.66522216796875, "b": 635.156982421875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CLIENT_IPADDR", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.872314453125, "t": 643.48193359375, "r": 267.077392578125, "b": 635.156982421875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.8454895019531, "t": 643.48193359375, "r": 509.6058349609375, "b": 635.156982421875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "IP address of the current client as returned by the system", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.80001831054688, "t": 624.4622192382812, "r": 134.98263549804688, "b": 616.1372680664062, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CLIENT_PORT", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.90293884277344, "t": 624.4622192382812, "r": 242.80084228515625, "b": 616.1372680664062, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "INTEGER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.7978515625, "t": 624.4622192382812, "r": 527.5922241210938, "b": 616.1372680664062, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Port used by the current client to communicate with the server", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.80001831054688, "t": 605.4425048828125, "r": 143.50924682617188, "b": 597.1175537109375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PACKAGE_NAME", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.80575561523438, "t": 605.4425048828125, "r": 267.0693664550781, "b": 597.1175537109375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.85186767578125, "t": 605.4425048828125, "r": 436.5726013183594, "b": 597.1175537109375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Name of the currently running package", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.80001831054688, "t": 586.482177734375, "r": 156.01654052734375, "b": 578.1572265625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PACKAGE_SCHEMA", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.83544921875, "t": 586.482177734375, "r": 267.0864562988281, "b": 578.1572265625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.8707580566406, "t": 586.482177734375, "r": 470.44677734375, "b": 578.1572265625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Schema name of the currently running package", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.80001831054688, "t": 567.4624633789062, "r": 157.89932250976562, "b": 559.1375122070312, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PACKAGE_VERSION", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.72471618652344, "t": 567.4624633789062, "r": 261.9825439453125, "b": 559.1375122070312, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(64)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.7492370605469, "t": 567.4624633789062, "r": 478.84381103515625, "b": 559.1375122070312, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Version identifier of the currently running package", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.80001831054688, "t": 548.4427490234375, "r": 154.419921875, "b": 540.1177978515625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ROUTINE_SCHEMA", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.79312133789062, "t": 548.4427490234375, "r": 267.0927429199219, "b": 540.1177978515625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.87164306640625, "t": 548.4427490234375, "r": 464.2602233886719, "b": 540.1177978515625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Schema name of the currently running routine", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.80001831054688, "t": 529.482421875, "r": 188.43991088867188, "b": 521.157470703125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ROUTINE_SPECIFIC_NAME", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.8444061279297, "t": 529.482421875, "r": 267.03692626953125, "b": 521.157470703125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.80682373046875, "t": 529.482421875, "r": 430.40045166015625, "b": 521.157470703125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Name of the currently running routine", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.80003356933594, "t": 510.4627380371094, "r": 139.4313507080078, "b": 502.1377258300781, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ROUTINE_TYPE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.74635314941406, "t": 510.4627380371094, "r": 239.2899627685547, "b": 502.1377258300781, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "CHAR(1)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.7906494140625, "t": 510.4627380371094, "r": 425.09130859375, "b": 502.1377258300781, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Type of the currently running routine", "column_header": false, "row_header": false, "row_section": false}], "num_rows": 10, "num_cols": 3, "grid": [[{"bbox": {"l": 70.80000305175781, "t": 681.4619750976562, "r": 134.99070739746094, "b": 673.1370239257812, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Global variable", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 202.889404296875, "t": 681.4619750976562, "r": 223.34640502929688, "b": 673.1370239257812, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Type", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 281.8247985839844, "t": 681.4619750976562, "r": 331.3428039550781, "b": 673.1370239257812, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Description", "column_header": true, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.80000305175781, "t": 662.5016479492188, "r": 132.7209014892578, "b": 654.1766967773438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CLIENT_HOST", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.89028930664062, "t": 662.5016479492188, "r": 267.0765075683594, "b": 654.1766967773438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(255)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.8473205566406, "t": 662.5016479492188, "r": 510.17547607421875, "b": 654.1766967773438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Host name of the current client as returned by the system", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.80001831054688, "t": 643.48193359375, "r": 140.66522216796875, "b": 635.156982421875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CLIENT_IPADDR", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.872314453125, "t": 643.48193359375, "r": 267.077392578125, "b": 635.156982421875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.8454895019531, "t": 643.48193359375, "r": 509.6058349609375, "b": 635.156982421875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "IP address of the current client as returned by the system", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.80001831054688, "t": 624.4622192382812, "r": 134.98263549804688, "b": 616.1372680664062, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CLIENT_PORT", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.90293884277344, "t": 624.4622192382812, "r": 242.80084228515625, "b": 616.1372680664062, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "INTEGER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.7978515625, "t": 624.4622192382812, "r": 527.5922241210938, "b": 616.1372680664062, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Port used by the current client to communicate with the server", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.80001831054688, "t": 605.4425048828125, "r": 143.50924682617188, "b": 597.1175537109375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PACKAGE_NAME", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.80575561523438, "t": 605.4425048828125, "r": 267.0693664550781, "b": 597.1175537109375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.85186767578125, "t": 605.4425048828125, "r": 436.5726013183594, "b": 597.1175537109375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Name of the currently running package", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.80001831054688, "t": 586.482177734375, "r": 156.01654052734375, "b": 578.1572265625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PACKAGE_SCHEMA", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.83544921875, "t": 586.482177734375, "r": 267.0864562988281, "b": 578.1572265625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.8707580566406, "t": 586.482177734375, "r": 470.44677734375, "b": 578.1572265625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Schema name of the currently running package", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.80001831054688, "t": 567.4624633789062, "r": 157.89932250976562, "b": 559.1375122070312, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PACKAGE_VERSION", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.72471618652344, "t": 567.4624633789062, "r": 261.9825439453125, "b": 559.1375122070312, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(64)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.7492370605469, "t": 567.4624633789062, "r": 478.84381103515625, "b": 559.1375122070312, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Version identifier of the currently running package", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.80001831054688, "t": 548.4427490234375, "r": 154.419921875, "b": 540.1177978515625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ROUTINE_SCHEMA", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.79312133789062, "t": 548.4427490234375, "r": 267.0927429199219, "b": 540.1177978515625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.87164306640625, "t": 548.4427490234375, "r": 464.2602233886719, "b": 540.1177978515625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Schema name of the currently running routine", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.80001831054688, "t": 529.482421875, "r": 188.43991088867188, "b": 521.157470703125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ROUTINE_SPECIFIC_NAME", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.8444061279297, "t": 529.482421875, "r": 267.03692626953125, "b": 521.157470703125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.80682373046875, "t": 529.482421875, "r": 430.40045166015625, "b": 521.157470703125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Name of the currently running routine", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.80003356933594, "t": 510.4627380371094, "r": 139.4313507080078, "b": 502.1377258300781, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ROUTINE_TYPE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.74635314941406, "t": 510.4627380371094, "r": 239.2899627685547, "b": 502.1377258300781, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "CHAR(1)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.7906494140625, "t": 510.4627380371094, "r": 425.09130859375, "b": 502.1377258300781, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Type of the currently running routine", "column_header": false, "row_header": false, "row_section": false}]]}}, {"self_ref": "#/tables/8", "parent": {"cref": "#/body"}, "children": [], "label": "table", "prov": [{"page_no": 57, "bbox": {"l": 135.74551391601562, "t": 684.2587280273438, "r": 529.2235107421875, "b": 393.6541442871094, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [{"cref": "#/texts/599"}], "references": [], "footnotes": [], "image": null, "data": {"table_cells": [{"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 287.8096923828125, "t": 680.1975708007812, "r": 355.4244689941406, "b": 668.81640625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "CUSTOMERS", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 428.24420166015625, "t": 680.1975708007812, "r": 488.26617431640625, "b": 668.81640625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "ACCOUNTS", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 150.03750610351562, "t": 618.352294921875, "r": 193.05224609375, "b": 608.87744140625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "SECURITY", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 212.63400268554688, "t": 616.476318359375, "r": 248.9210205078125, "b": 607.9304809570312, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "No Rows", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 263.1838073730469, "t": 635.3184814453125, "r": 382.3654479980469, "b": 589.69384765625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER CUSTOMER_EMAIL CUSTOMER_LOGIN_ID CUSTOMER_SECURITY_QUESTION CUSTOMER_SECURITY_QUESTION_ANSWER CUSTOMER_TAX_ID", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 427.81256103515625, "t": 615.3514404296875, "r": 482.86053466796875, "b": 609.6608276367188, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "ACCOUNT_NUMBER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 174.79660034179688, "t": 565.1068725585938, "r": 193.04815673828125, "b": 555.6320190429688, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "DBE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 213.1331024169922, "t": 564.56201171875, "r": 248.37786865234375, "b": 556.0161743164062, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "All Rows", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 263.1838073730469, "t": 583.404296875, "r": 382.3654479980469, "b": 537.7796020507812, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER CUSTOMER_EMAIL CUSTOMER_LOGIN_ID CUSTOMER_SECURITY_QUESTION CUSTOMER_SECURITY_QUESTION_ANSWER CUSTOMER_TAX_ID", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 427.8116149902344, "t": 563.437255859375, "r": 482.92327880859375, "b": 557.7466430664062, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "ACCOUNT NUMBER ACCOUNT_NUMBER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 160.38710021972656, "t": 530.99658203125, "r": 193.08364868164062, "b": 521.521728515625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ADMIN", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 213.1331024169922, "t": 528.9542236328125, "r": 248.45372009277344, "b": 520.4083862304688, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "All Rows", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 315.5306091308594, "t": 527.829345703125, "r": 330.12255859375, "b": 522.1387329101562, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "None", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 448.0835266113281, "t": 527.829345703125, "r": 462.67547607421875, "b": 522.1387329101562, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "None", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 161.48519897460938, "t": 498.5502014160156, "r": 193.04367065429688, "b": 489.0753479003906, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "TELLER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 213.1331024169922, "t": 497.3398132324219, "r": 248.45372009277344, "b": 488.7939453125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "All Rows", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 263.1838073730469, "t": 512.1885375976562, "r": 382.3654479980469, "b": 474.550537109375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "CUSTOMER_EMAIL CUSTOMER_LOGIN_ID CUSTOMER_SECURITY_QUESTION CUSTOMER_SECURITY_QUESTION_ANSWER CUSTOMER TAX ID _ _", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 448.07916259765625, "t": 496.2148742675781, "r": 462.6711120605469, "b": 490.52423095703125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "None", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 141.65139770507812, "t": 467.2019958496094, "r": 193.06382751464844, "b": 457.7271423339844, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CUSTOMER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 208.84030151367188, "t": 465.7253112792969, "r": 252.7267608642578, "b": 457.179443359375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Own Rows", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 315.5306091308594, "t": 464.6005859375, "r": 330.12255859375, "b": 458.9099426269531, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "None", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 448.0835266113281, "t": 464.6005859375, "r": 462.67547607421875, "b": 458.9099426269531, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "None", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 160.8197021484375, "t": 431.9934997558594, "r": 193.05859375, "b": 422.5186462402344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PUBLIC", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 212.63400268554688, "t": 430.11749267578125, "r": 248.9210205078125, "b": 421.5716247558594, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "No Rows", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 263.18353271484375, "t": 448.9596862792969, "r": 382.3654479980469, "b": 403.33502197265625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER CUSTOMER_EMAIL CUSTOMER LOGIN ID CUSTOMER_LOGIN_ID CUSTOMER_SECURITY_QUESTION CUSTOMER_SECURITY_QUESTION_ANSWER CUSTOMER_TAX_ID", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 427.81256103515625, "t": 428.9927673339844, "r": 482.86053466796875, "b": 423.3021240234375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "ACCOUNT_NUMBER", "column_header": false, "row_header": false, "row_section": false}], "num_rows": 7, "num_cols": 4, "grid": [[{"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 287.8096923828125, "t": 680.1975708007812, "r": 355.4244689941406, "b": 668.81640625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "CUSTOMERS", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 428.24420166015625, "t": 680.1975708007812, "r": 488.26617431640625, "b": 668.81640625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "ACCOUNTS", "column_header": true, "row_header": false, "row_section": false}], [{"bbox": {"l": 150.03750610351562, "t": 618.352294921875, "r": 193.05224609375, "b": 608.87744140625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "SECURITY", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 212.63400268554688, "t": 616.476318359375, "r": 248.9210205078125, "b": 607.9304809570312, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "No Rows", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 263.1838073730469, "t": 635.3184814453125, "r": 382.3654479980469, "b": 589.69384765625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER CUSTOMER_EMAIL CUSTOMER_LOGIN_ID CUSTOMER_SECURITY_QUESTION CUSTOMER_SECURITY_QUESTION_ANSWER CUSTOMER_TAX_ID", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 427.81256103515625, "t": 615.3514404296875, "r": 482.86053466796875, "b": 609.6608276367188, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "ACCOUNT_NUMBER", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 174.79660034179688, "t": 565.1068725585938, "r": 193.04815673828125, "b": 555.6320190429688, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "DBE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 213.1331024169922, "t": 564.56201171875, "r": 248.37786865234375, "b": 556.0161743164062, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "All Rows", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 263.1838073730469, "t": 583.404296875, "r": 382.3654479980469, "b": 537.7796020507812, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER CUSTOMER_EMAIL CUSTOMER_LOGIN_ID CUSTOMER_SECURITY_QUESTION CUSTOMER_SECURITY_QUESTION_ANSWER CUSTOMER_TAX_ID", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 427.8116149902344, "t": 563.437255859375, "r": 482.92327880859375, "b": 557.7466430664062, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "ACCOUNT NUMBER ACCOUNT_NUMBER", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 160.38710021972656, "t": 530.99658203125, "r": 193.08364868164062, "b": 521.521728515625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ADMIN", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 213.1331024169922, "t": 528.9542236328125, "r": 248.45372009277344, "b": 520.4083862304688, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "All Rows", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 315.5306091308594, "t": 527.829345703125, "r": 330.12255859375, "b": 522.1387329101562, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "None", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 448.0835266113281, "t": 527.829345703125, "r": 462.67547607421875, "b": 522.1387329101562, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "None", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 161.48519897460938, "t": 498.5502014160156, "r": 193.04367065429688, "b": 489.0753479003906, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "TELLER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 213.1331024169922, "t": 497.3398132324219, "r": 248.45372009277344, "b": 488.7939453125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "All Rows", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 263.1838073730469, "t": 512.1885375976562, "r": 382.3654479980469, "b": 474.550537109375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "CUSTOMER_EMAIL CUSTOMER_LOGIN_ID CUSTOMER_SECURITY_QUESTION CUSTOMER_SECURITY_QUESTION_ANSWER CUSTOMER TAX ID _ _", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 448.07916259765625, "t": 496.2148742675781, "r": 462.6711120605469, "b": 490.52423095703125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "None", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 141.65139770507812, "t": 467.2019958496094, "r": 193.06382751464844, "b": 457.7271423339844, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CUSTOMER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 208.84030151367188, "t": 465.7253112792969, "r": 252.7267608642578, "b": 457.179443359375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Own Rows", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 315.5306091308594, "t": 464.6005859375, "r": 330.12255859375, "b": 458.9099426269531, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "None", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 448.0835266113281, "t": 464.6005859375, "r": 462.67547607421875, "b": 458.9099426269531, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "None", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 160.8197021484375, "t": 431.9934997558594, "r": 193.05859375, "b": 422.5186462402344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PUBLIC", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 212.63400268554688, "t": 430.11749267578125, "r": 248.9210205078125, "b": 421.5716247558594, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "No Rows", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 263.18353271484375, "t": 448.9596862792969, "r": 382.3654479980469, "b": 403.33502197265625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER CUSTOMER_EMAIL CUSTOMER LOGIN ID CUSTOMER_LOGIN_ID CUSTOMER_SECURITY_QUESTION CUSTOMER_SECURITY_QUESTION_ANSWER CUSTOMER_TAX_ID", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 427.81256103515625, "t": 428.9927673339844, "r": 482.86053466796875, "b": 423.3021240234375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "ACCOUNT_NUMBER", "column_header": false, "row_header": false, "row_section": false}]]}}, {"self_ref": "#/tables/9", "parent": {"cref": "#/body"}, "children": [], "label": "table", "prov": [{"page_no": 102, "bbox": {"l": 143.16891479492188, "t": 479.0935363769531, "r": 300.13482666015625, "b": 327.46435546875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [], "references": [], "footnotes": [], "image": null, "data": {"table_cells": [{"bbox": {"l": 149.45120239257812, "t": 474.97100830078125, "r": 233.62379455566406, "b": 467.8338623046875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CREDIT CARD NUMBER _ _", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 257.74920654296875, "t": 474.97100830078125, "r": 279.168212890625, "b": 467.8338623046875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "TOTAL", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 148.50592041015625, "t": 461.4362487792969, "r": 221.83938598632812, "b": 454.30743408203125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3785 0000 0000 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 272.42230224609375, "t": 461.4362487792969, "r": 295.6497497558594, "b": 454.30743408203125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "233.50", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.50592041015625, "t": 447.92901611328125, "r": 221.83853149414062, "b": 440.8002014160156, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3785 1111 1111 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 272.42144775390625, "t": 447.92901611328125, "r": 295.6488952636719, "b": 440.8002014160156, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "105.10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.50619506835938, "t": 434.3937072753906, "r": 221.84132385253906, "b": 427.264892578125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3785 2222 2222 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 272.4057922363281, "t": 434.3937072753906, "r": 295.6465759277344, "b": 427.264892578125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "300 00 300.00", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.50619506835938, "t": 420.85870361328125, "r": 221.85214233398438, "b": 413.7298889160156, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3785 3333 3333 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 266.1250305175781, "t": 420.85870361328125, "r": 295.6675109863281, "b": 413.7298889160156, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "1,775.00", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.50619506835938, "t": 407.3514709472656, "r": 221.83880615234375, "b": 400.22265625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "5466 4444 4444 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 272.4217529296875, "t": 407.3514709472656, "r": 295.6492004394531, "b": 400.22265625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "601.70", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.50619506835938, "t": 393.8165283203125, "r": 221.83880615234375, "b": 386.6877136230469, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "5466 5555 5555 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 276.646484375, "t": 393.8165283203125, "r": 295.6483154296875, "b": 386.6877136230469, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "37.80", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.50619506835938, "t": 380.2817687988281, "r": 221.83880615234375, "b": 373.1529541015625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "5466 6666 6666 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 272.4217529296875, "t": 380.2817687988281, "r": 295.6492004394531, "b": 373.1529541015625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "490.45", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.50619506835938, "t": 366.7742004394531, "r": 221.84132385253906, "b": 359.6453857421875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "6011 7777 7777 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 268.1813049316406, "t": 366.7742004394531, "r": 295.6460266113281, "b": 359.6453857421875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "1005.00", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.50619506835938, "t": 353.2392272949219, "r": 221.83880615234375, "b": 346.11041259765625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "6011 8888 8888 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 272.4217529296875, "t": 353.2392272949219, "r": 295.6492004394531, "b": 346.11041259765625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "750.33", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.50619506835938, "t": 339.7044677734375, "r": 221.83880615234375, "b": 332.5756530761719, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "6011 9999 9999 0001", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 276.646484375, "t": 339.7044677734375, "r": 295.6483154296875, "b": 332.5756530761719, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "10.00", "column_header": false, "row_header": false, "row_section": false}], "num_rows": 11, "num_cols": 2, "grid": [[{"bbox": {"l": 149.45120239257812, "t": 474.97100830078125, "r": 233.62379455566406, "b": 467.8338623046875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CREDIT CARD NUMBER _ _", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 257.74920654296875, "t": 474.97100830078125, "r": 279.168212890625, "b": 467.8338623046875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "TOTAL", "column_header": true, "row_header": false, "row_section": false}], [{"bbox": {"l": 148.50592041015625, "t": 461.4362487792969, "r": 221.83938598632812, "b": 454.30743408203125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3785 0000 0000 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 272.42230224609375, "t": 461.4362487792969, "r": 295.6497497558594, "b": 454.30743408203125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "233.50", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 148.50592041015625, "t": 447.92901611328125, "r": 221.83853149414062, "b": 440.8002014160156, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3785 1111 1111 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 272.42144775390625, "t": 447.92901611328125, "r": 295.6488952636719, "b": 440.8002014160156, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "105.10", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 148.50619506835938, "t": 434.3937072753906, "r": 221.84132385253906, "b": 427.264892578125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3785 2222 2222 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 272.4057922363281, "t": 434.3937072753906, "r": 295.6465759277344, "b": 427.264892578125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "300 00 300.00", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 148.50619506835938, "t": 420.85870361328125, "r": 221.85214233398438, "b": 413.7298889160156, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3785 3333 3333 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 266.1250305175781, "t": 420.85870361328125, "r": 295.6675109863281, "b": 413.7298889160156, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "1,775.00", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 148.50619506835938, "t": 407.3514709472656, "r": 221.83880615234375, "b": 400.22265625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "5466 4444 4444 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 272.4217529296875, "t": 407.3514709472656, "r": 295.6492004394531, "b": 400.22265625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "601.70", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 148.50619506835938, "t": 393.8165283203125, "r": 221.83880615234375, "b": 386.6877136230469, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "5466 5555 5555 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 276.646484375, "t": 393.8165283203125, "r": 295.6483154296875, "b": 386.6877136230469, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "37.80", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 148.50619506835938, "t": 380.2817687988281, "r": 221.83880615234375, "b": 373.1529541015625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "5466 6666 6666 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 272.4217529296875, "t": 380.2817687988281, "r": 295.6492004394531, "b": 373.1529541015625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "490.45", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 148.50619506835938, "t": 366.7742004394531, "r": 221.84132385253906, "b": 359.6453857421875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "6011 7777 7777 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 268.1813049316406, "t": 366.7742004394531, "r": 295.6460266113281, "b": 359.6453857421875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "1005.00", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 148.50619506835938, "t": 353.2392272949219, "r": 221.83880615234375, "b": 346.11041259765625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "6011 8888 8888 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 272.4217529296875, "t": 353.2392272949219, "r": 295.6492004394531, "b": 346.11041259765625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "750.33", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 148.50619506835938, "t": 339.7044677734375, "r": 221.83880615234375, "b": 332.5756530761719, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "6011 9999 9999 0001", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 276.646484375, "t": 339.7044677734375, "r": 295.6483154296875, "b": 332.5756530761719, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "10.00", "column_header": false, "row_header": false, "row_section": false}]]}}, {"self_ref": "#/tables/10", "parent": {"cref": "#/body"}, "children": [], "label": "table", "prov": [{"page_no": 102, "bbox": {"l": 313.3494567871094, "t": 479.4356994628906, "r": 470.7187805175781, "b": 327.06817626953125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [{"cref": "#/texts/1015"}], "references": [], "footnotes": [], "image": null, "data": {"table_cells": [{"bbox": {"l": 318.9862060546875, "t": 474.97100830078125, "r": 403.1588134765625, "b": 467.8338623046875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CREDIT CARD NUMBER _ _", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 427.28424072265625, "t": 474.97100830078125, "r": 448.7032470703125, "b": 467.8338623046875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "TOTAL", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 318.041015625, "t": 461.4362487792969, "r": 390.6849365234375, "b": 454.30743408203125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 441.9682312011719, "t": 461.4362487792969, "r": 465.16064453125, "b": 454.30743408203125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "233.50", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.041015625, "t": 447.92901611328125, "r": 390.6849365234375, "b": 440.8002014160156, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 441.9682312011719, "t": 447.92901611328125, "r": 465.16064453125, "b": 440.8002014160156, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "105.10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.0412902832031, "t": 434.3937072753906, "r": 390.6543273925781, "b": 427.264892578125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 441.9408874511719, "t": 434.3937072753906, "r": 465.1816711425781, "b": 427.264892578125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "300 00 300.00", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.0412902832031, "t": 420.85870361328125, "r": 390.69854736328125, "b": 413.7298889160156, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 435.6726379394531, "t": 420.85870361328125, "r": 465.1684265136719, "b": 413.7298889160156, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "1,775.00", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.0412902832031, "t": 407.3514709472656, "r": 390.6852111816406, "b": 400.22265625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 441.968505859375, "t": 407.3514709472656, "r": 465.1609191894531, "b": 400.22265625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "601.70", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.0412902832031, "t": 393.8165283203125, "r": 390.6852111816406, "b": 386.6877136230469, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 446.19329833984375, "t": 393.8165283203125, "r": 465.16595458984375, "b": 386.6877136230469, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "37.80", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.0412902832031, "t": 380.2817687988281, "r": 390.6852111816406, "b": 373.1529541015625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 441.968505859375, "t": 380.2817687988281, "r": 465.1609191894531, "b": 373.1529541015625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "490.45", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.0412902832031, "t": 366.7745361328125, "r": 390.6678771972656, "b": 359.6453857421875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 437.7164001464844, "t": 366.7742004394531, "r": 465.1811218261719, "b": 359.6453857421875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "1005.00", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.0412902832031, "t": 353.2392272949219, "r": 390.6852111816406, "b": 346.11041259765625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 441.968505859375, "t": 353.2392272949219, "r": 465.1609191894531, "b": 346.11041259765625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "750.33", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.0412902832031, "t": 339.7044677734375, "r": 390.6852111816406, "b": 332.5756530761719, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 0001", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 446.19329833984375, "t": 339.7044677734375, "r": 465.16595458984375, "b": 332.5756530761719, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "10.00", "column_header": false, "row_header": false, "row_section": false}], "num_rows": 11, "num_cols": 2, "grid": [[{"bbox": {"l": 318.9862060546875, "t": 474.97100830078125, "r": 403.1588134765625, "b": 467.8338623046875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CREDIT CARD NUMBER _ _", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 427.28424072265625, "t": 474.97100830078125, "r": 448.7032470703125, "b": 467.8338623046875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "TOTAL", "column_header": true, "row_header": false, "row_section": false}], [{"bbox": {"l": 318.041015625, "t": 461.4362487792969, "r": 390.6849365234375, "b": 454.30743408203125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 441.9682312011719, "t": 461.4362487792969, "r": 465.16064453125, "b": 454.30743408203125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "233.50", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 318.041015625, "t": 447.92901611328125, "r": 390.6849365234375, "b": 440.8002014160156, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 441.9682312011719, "t": 447.92901611328125, "r": 465.16064453125, "b": 440.8002014160156, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "105.10", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 318.0412902832031, "t": 434.3937072753906, "r": 390.6543273925781, "b": 427.264892578125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 441.9408874511719, "t": 434.3937072753906, "r": 465.1816711425781, "b": 427.264892578125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "300 00 300.00", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 318.0412902832031, "t": 420.85870361328125, "r": 390.69854736328125, "b": 413.7298889160156, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 435.6726379394531, "t": 420.85870361328125, "r": 465.1684265136719, "b": 413.7298889160156, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "1,775.00", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 318.0412902832031, "t": 407.3514709472656, "r": 390.6852111816406, "b": 400.22265625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 441.968505859375, "t": 407.3514709472656, "r": 465.1609191894531, "b": 400.22265625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "601.70", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 318.0412902832031, "t": 393.8165283203125, "r": 390.6852111816406, "b": 386.6877136230469, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 446.19329833984375, "t": 393.8165283203125, "r": 465.16595458984375, "b": 386.6877136230469, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "37.80", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 318.0412902832031, "t": 380.2817687988281, "r": 390.6852111816406, "b": 373.1529541015625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 441.968505859375, "t": 380.2817687988281, "r": 465.1609191894531, "b": 373.1529541015625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "490.45", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 318.0412902832031, "t": 366.7745361328125, "r": 390.6678771972656, "b": 359.6453857421875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 437.7164001464844, "t": 366.7742004394531, "r": 465.1811218261719, "b": 359.6453857421875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "1005.00", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 318.0412902832031, "t": 353.2392272949219, "r": 390.6852111816406, "b": 346.11041259765625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 441.968505859375, "t": 353.2392272949219, "r": 465.1609191894531, "b": 346.11041259765625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "750.33", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 318.0412902832031, "t": 339.7044677734375, "r": 390.6852111816406, "b": 332.5756530761719, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 0001", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 446.19329833984375, "t": 339.7044677734375, "r": 465.16595458984375, "b": 332.5756530761719, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "10.00", "column_header": false, "row_header": false, "row_section": false}]]}}], "key_value_items": [], "pages": {"1": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 1}, "2": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 2}, "3": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 3}, "4": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 4}, "5": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 5}, "6": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 6}, "7": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 7}, "8": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 8}, "9": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 9}, "10": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 10}, "11": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 11}, "12": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 12}, "13": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 13}, "14": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 14}, "15": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 15}, "16": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 16}, "17": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 17}, "18": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 18}, "19": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 19}, "20": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 20}, "21": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 21}, "22": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 22}, "23": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 23}, "24": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 24}, "25": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 25}, "26": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 26}, "27": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 27}, "28": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 28}, "29": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 29}, "30": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 30}, "31": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 31}, "32": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 32}, "33": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 33}, "34": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 34}, "35": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 35}, "36": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 36}, "37": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 37}, "38": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 38}, "39": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 39}, "40": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 40}, "41": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 41}, "42": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 42}, "43": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 43}, "44": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 44}, "45": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 45}, "46": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 46}, "47": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 47}, "48": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 48}, "49": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 49}, "50": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 50}, "51": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 51}, "52": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 52}, "53": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 53}, "54": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 54}, "55": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 55}, "56": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 56}, "57": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 57}, "58": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 58}, "59": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 59}, "60": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 60}, "61": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 61}, "62": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 62}, "63": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 63}, "64": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 64}, "65": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 65}, "66": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 66}, "67": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 67}, "68": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 68}, "69": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 69}, "70": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 70}, "71": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 71}, "72": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 72}, "73": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 73}, "74": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 74}, "75": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 75}, "76": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 76}, "77": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 77}, "78": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 78}, "79": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 79}, "80": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 80}, "81": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 81}, "82": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 82}, "83": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 83}, "84": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 84}, "85": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 85}, "86": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 86}, "87": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 87}, "88": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 88}, "89": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 89}, "90": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 90}, "91": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 91}, "92": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 92}, "93": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 93}, "94": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 94}, "95": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 95}, "96": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 96}, "97": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 97}, "98": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 98}, "99": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 99}, "100": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 100}, "101": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 101}, "102": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 102}, "103": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 103}, "104": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 104}, "105": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 105}, "106": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 106}, "107": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 107}, "108": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 108}, "109": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 109}, "110": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 110}, "111": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 111}, "112": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 112}, "113": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 113}, "114": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 114}, "115": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 115}, "116": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 116}, "117": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 117}, "118": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 118}, "119": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 119}, "120": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 120}, "121": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 121}, "122": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 122}, "123": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 123}, "124": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 124}, "125": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 125}, "126": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 126}, "127": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 127}, "128": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 128}, "129": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 129}, "130": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 130}, "131": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 131}, "132": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 132}, "133": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 133}, "134": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 134}, "135": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 135}, "136": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 136}, "137": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 137}, "138": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 138}, "139": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 139}, "140": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 140}, "141": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 141}, "142": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 142}, "143": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 143}, "144": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 144}, "145": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 145}, "146": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 146}}} \ No newline at end of file diff --git a/tests/data/groundtruth/docling_v2/redp5110.md b/tests/data/groundtruth/docling_v2/redp5110.md deleted file mode 100644 index 961f6af5..00000000 --- a/tests/data/groundtruth/docling_v2/redp5110.md +++ /dev/null @@ -1,2615 +0,0 @@ -Front cover - - - -## Row and Column Access Control Support in IBM DB2 for i - -Implement roles and separation of duties - -Leverage row permissions on the database - -Protect columns by defining column masks - -Jim Bainbridge Hernando Bedoya Rob Bestgen Mike Cain Dan Cruikshank Jim Denton Doug Mack Tom McKinley Kent Milligan - -Redpaper - - - -## International Technical Support Organization - -## Row and Column Access Control Support in IBM DB2 for i - -November 2014 - -Note: Before using this information and the product it supports, read the information in "Notices" on page vii. - -## First Edition (November 2014) - -This edition applies to Version 7, Release 2 of IBM i (product number 5770-SS1). - -Note to U.S. Government Users Restricted Rights -- Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. - -## Contents - -| Notices | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii | -|------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------| -| Trademarks | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii | -| DB2 for i Center of Excellence | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix | -| Preface | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi | -| Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi | | -| Now you can become a published author, too! | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii | -| Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | xiii | -| Stay connected to IBM Redbooks | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv | -| Chapter 1. Securing and protecting IBM DB2 data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 1 | -| 1.1 Security fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 | | -| 1.2 Current state of IBM i security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 2 | -| 1.3 DB2 for i security controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | | -| 1.3.1 Existing row and column control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 4 | -| 1.3.2 New controls: Row and Column Access Control. . . . . . . . . . . . . . . . . . . . . . . . . . . | 5 | -| Chapter 2. Roles and separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 7 | -| 2.1 Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 8 | -| 2.1.1 DDM and DRDA application server access: QIBM\_DB\_DDMDRDA . . . . . . . . . . . | 8 | -| 2.1.2 Toolbox application server access: QIBM\_DB\_ZDA. . . . . . . . . . . . . . . . . . . . . . . . | 8 | -| 2.1.3 Database Administrator function: QIBM\_DB\_SQLADM . . . . . . . . . . . . . . . . . . . . . | 9 | -| 2.1.4 Database Information function: QIBM\_DB\_SYSMON | . . . . . . . . . . . . . . . . . . . . . . 9 | -| 2.1.5 Security Administrator function: QIBM\_DB\_SECADM . . . . . . . . . . . . . . . . . . . . . . | 9 | -| 2.1.6 Change Function Usage CL command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 10 | -| 2.1.7 Verifying function usage IDs for RCAC with the FUNCTION\_USAGE view . . . . . | 10 | -| 2.2 Separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 | | -| Chapter 3. Row and Column Access Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 13 | -| 3.1 Explanation of RCAC and the concept of access control . . . . . . . . . . . . . . . . . . . . . . . | 14 | -| 3.1.1 Row permission and column mask definitions | . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 | -| 3.1.2 Enabling and activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 16 | -| 3.2 Special registers and built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 18 | -| 3.2.1 Special registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 18 | -| 3.2.2 Built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 19 | -| 3.3 VERIFY\_GROUP\_FOR\_USER function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 20 | -| 3.4 Establishing and controlling accessibility by using the RCAC rule text . . . . . . . . . . . . . | 21 | -| | . . . . . . . . . . . . . . . . . . . . . . . . 22 | -| 3.5 SELECT, INSERT, and UPDATE behavior with RCAC | | -| 3.6.1 Assigning the QIBM\_DB\_SECADM function ID to the consultants. . . . . . . . . . . . | 23 | -| 3.6.2 Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . . | 23 | -| 3.6.3 Demonstrating data access without RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 24 | -| 3.6.4 Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 25 | -| 3.6.5 Defining and creating column masks | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 | -| 3.6.6 Activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 28 | -| 3.6.7 Demonstrating data access with RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 29 | -| 3.6.8 Demonstrating data access with a view and RCAC . . . . . . . . . . . . . . . . . . . . . . . | 32 | - -| Chapter 4. Implementing Row and Column Access Control: Banking example . . . . . | 37 | -|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| 4.1 Business requirements for the RCAC banking scenario . . . . . . . . . . . . . . . . . . . . . . . . | 38 | -| 4.2 Description of the users roles and responsibilities | . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 | -| 4.3 Implementation of RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 42 | -| 4.3.1 Reviewing the tables that are used in this example | . . . . . . . . . . . . . . . . . . . . . . . 42 | -| 4.3.2 Assigning function ID QIBM\_DB\_SECADM to the Database Engineers group | . . 47 | -| 4.3.3 Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . . | 50 | -| 4.3.4 Creating the CUSTOMER\_LOGIN\_ID global variable | . . . . . . . . . . . . . . . . . . . . . 52 | -| 4.3.5 Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 54 | -| 4.3.6 Defining and creating column masks | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 | -| 4.3.7 Restricting the inserting and updating of masked data . . . . . . . . . . . . . . . . . . . . . | 60 | -| 4.3.9 Reviewing row permissions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 64 | -| 4.3.10 Demonstrating data access with RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 66 | -| 4.3.11 Query implementation with RCAC activated . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 75 | -| Chapter 5. RCAC and non-SQL interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 79 | -| | Unsupported interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 | -| 5.3 Accidental updates with masked values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 81 | -| 5.4 System CL commands considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 82 | -| 5.4.1 Create Duplicate Object (CRTDUPOBJ) command . . . . . . . . . . . . . . . . . . . . . . . | 82 | -| | 82 | -| 5.4.2 Copy File (CPYF) command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4.3 Copy Library (CPYLIB) command. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 100 | -| | 83 | -| Chapter 6. Additional considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | . . . . . . . . . . . . . . . . . . . . . . . . 89 90 | -| 6.2 RCAC effects on data movement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 6.2 RCAC effects on data movement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | -| 6.2.1 Effects when RCAC is defined on the source table | 6.2.1 Effects when RCAC is defined on the source table | -| | 88 | -| 6.2.3 Effects when RCAC is defined on both source and target tables . . . . . . . . . . . . . 6.3 RCAC effects on joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 91 | -| 6.3.1 Inner joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 | 6.3.1 Inner joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 | -| 6.3.2 Outer joins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 | 6.3.2 Outer joins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 | -| 6.3.3 Exception joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 96 | -| 6.4 Monitoring, analyzing, and debugging with RCAC | 97 | -| . . . . . . . . . . . . . . . . . . . . . . . . . . . . | Query monitoring and analysis tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 | -| 6.4.2 Index advisor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 99 | -| 6.4.3 Metadata using catalogs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 6.4.3 Metadata using catalogs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | -| 6.5 Views, materialized query tables, and query rewrite with RCAC . . . . . . . . . . . . . . . . | 102 | -| 6.5.2 Materialized query tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 103 | -| | 105 | -| 6.5.3 Query rewrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . RCAC effects on performance and scalability. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 6.5.3 Query rewrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . RCAC effects on performance and scalability. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | -| 6.6 | 105 | -| | 107 | -| 6.7 Exclusive lock to implement RCAC (availability issues) . . . . . . . . . . . . . . . . . . . . . . . 6.8 Avoiding propagation of masked data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 108 | -| | 108 | -| | 109 | -| | 109 | -| | 113 | -| | 111 | -| Chapter 7. Row and Column Access Control management . . . . . . . . . . . . . . . . . . . . | Chapter 7. Row and Column Access Control management . . . . . . . . . . . . . . . . . . . . | - -| 7.1 Managing row permissions and column masks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 114 | -|---------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------| -| 7.1.1 Source management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 114 | -| 7.1.2 Modifying definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 114 | -| 7.1.3 Turning on and off . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 114 | -| 7.1.4 Regenerating | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 | -| 7.2 Managing tables with row permissions and column masks. . . . . . . . . . . . . . . . . . . . . | 115 | -| 7.2.1 Save and restore. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 115 | -| 7.2.2 Table migration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 116 | -| 7.3 Monitoring and auditing function usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 117 | -| Chapter 8. Designing and planning for success | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 | -| 8.1 Implementing RCAC with good design and proper planning | . . . . . . . . . . . . . . . . . . . 120 | -| 8.2 DB2 for i Center of Excellence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 120 | -| Appendix A. Database definitions for the RCAC banking example | . . . . . . . . . . . . . . 121 | -| Related publications | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 | -| Other publications | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 | -| Online resources | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 | -| Help from IBM | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 | - -## Notices - -This information was developed for products and services offered in the U.S.A. - -IBM may not offer the products, services, or features discussed in this document in other countries. Consult your local IBM representative for information on the products and services currently available in your area. Any reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, program, or service may be used. Any functionally equivalent product, program, or service that does not infringe any IBM intellectual property right may be used instead. However, it is the user's responsibility to evaluate and verify the operation of any non-IBM product, program, or service. - -IBM may have patents or pending patent applications covering subject matter described in this document. The furnishing of this document does not grant you any license to these patents. You can send license inquiries, in writing, to: - -IBM Director of Licensing, IBM Corporation, North Castle Drive, Armonk, NY 10504-1785 U.S.A. - -The following paragraph does not apply to the United Kingdom or any other country where such provisions are inconsistent with local law: INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states do not allow disclaimer of express or implied warranties in certain transactions, therefore, this statement may not apply to you. - -This information could include technical inaccuracies or typographical errors. Changes are periodically made to the information herein; these changes will be incorporated in new editions of the publication. IBM may make improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time without notice. - -Any references in this information to non-IBM websites are provided for convenience only and do not in any manner serve as an endorsement of those websites. The materials at those websites are not part of the materials for this IBM product and use of those websites is at your own risk. - -IBM may use or distribute any of the information you supply in any way it believes appropriate without incurring any obligation to you. - -Any performance data contained herein was determined in a controlled environment. Therefore, the results obtained in other operating environments may vary significantly. Some measurements may have been made on development-level systems and there is no guarantee that these measurements will be the same on generally available systems. Furthermore, some measurements may have been estimated through extrapolation. Actual results may vary. Users of this document should verify the applicable data for their specific environment. - -Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly available sources. IBM has not tested those products and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products. - -This information contains examples of data and reports used in daily business operations. To illustrate them as completely as possible, the examples include the names of individuals, companies, brands, and products. All of these names are fictitious and any similarity to the names and addresses used by an actual business enterprise is entirely coincidental. - -## COPYRIGHT LICENSE: - -This information contains sample application programs in source language, which illustrate programming techniques on various operating platforms. You may copy, modify, and distribute these sample programs in any form without payment to IBM, for the purposes of developing, using, marketing or distributing application programs conforming to the application programming interface for the operating platform for which the sample programs are written. These examples have not been thoroughly tested under all conditions. IBM, therefore, cannot guarantee or imply reliability, serviceability, or function of these programs. - -## Trademarks - -IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines Corporation in the United States, other countries, or both. These and other IBM trademarked terms are marked on their first occurrence in this information with the appropriate symbol (fi or ™), indicating US registered or common law trademarks owned by IBM at the time this information was published. Such trademarks may also be registered or common law trademarks in other countries. A current list of IBM trademarks is available on the Web at http://www.ibm.com/legal/copytrade.shtml - -The following terms are trademarks of the International Business Machines Corporation in the United States, other countries, or both: - -AS/400fi - -DB2fi - -DRDAfi - -IBMfi - -Power Systems™ - -Redbooksfi - -Redpaper™ - -Redbooks (log o) fi System - -ifi - -The following terms are trademarks of other companies: - -Windows, and the Windows logo are trademarks of Microsoft Corporation in the United States, other countries, or both. - -Other company, product, or service names may be trademarks or service marks of others. - - - -DB2 for i Center of Excellence - -Solution Brief IBM Systems Lab Services and Training - - - -## Highlights - -- GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH -- GLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH -- GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH -- GLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH - - - -Power Services - -## DB2 for i Center of Excellence - -Expert help to achieve your business requirements - -## We build confident, satisfied clients - -No one else has the vast consulting experiences, skills sharing and renown service offerings to do what we can do for you. - -Because no one else is IBM. - -With combined experiences and direct access to development groups, we're the experts in IBM DB2® for i. The DB2 for i Center of Excellence (CoE) can help you achieve-perhaps reexamine and exceed-your business requirements and gain more confidence and satisfaction in IBM product data management products and solutions. - -## Who we are, some of what we do - -Global CoE engagements cover topics including: - -- r Database performance and scalability -- r Advanced SQL knowledge and skills transfer -- r Business intelligence and analytics -- r DB2 Web Query -- r Query/400 modernization for better reporting and analysis capabilities -- r Database modernization and re-engineering -- r Data-centric architecture and design -- r Extremely large database and overcoming limits to growth -- r ISV education and enablement - -## What you can expect - -Depending on the engagement, our team of consultants offer: - -- r Briefings, consulting and guidance on demand -- r Illumination of the DB2 for i capabilities and leadership to exploit them -- r Analysis and remediation of performance and scalability issues caused by inefficient database design and implementation -- r Configuration of systems, operating system and products to fully leverage database capabilities - -## Key client benefits - -T Gain greater database and application performance within your current environment. Achieve greater productivity in the development and maintenance of database and applications using modern techniques. Architect and design data structures to accommodate and benefit from business analytics (BA) tools and processes. - -## For more information - -Pricing depends on the scope of work. Learn more about the DB2 for i Center of Excellence and other related products and services. Contact stgls@us.ibm.com or visit: - -ibm.com GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH - - - -© Copyright IBM Corporation 2013 - -IBM Corporation Route 100 Somers, NY 10589 - -Produced in the United States of America March 2013 - -IBM, the IBM logo, ibm.com, DB2 and Power Systems are trademarks of International Business Machines Corp., registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the web at "Copyright and trademark information" at www.ibm.com/legal/ copytrade.shtml . - -This document is current as of the initial date of publication and may be changed by IBM at any time. - -Not all offerings are available in every country in which IBM operates. - - - -Please Recycle - -QLS12392-USEN-00 - -## Preface - -This IBMfi Redpaper™ publication provides information about the IBM i 7.2 feature of IBM DB2fi for i Row and Column Access Control (RCAC). It offers a broad description of the function and advantages of controlling access to data in a comprehensive and transparent way. This publication helps you understand the capabilities of RCAC and provides examples of defining, creating, and implementing the row permissions and column masks in a relational database environment. - -This paper is intended for database engineers, data-centric application developers, and security officers who want to design and implement RCAC as a part of their data control and governance policy. A solid background in IBM i object level security, DB2 for i relational database concepts, and SQL is assumed. - -This paper was produced by the IBM DB2 for i Center of Excellence team in partnership with the International Technical Support Organization (ITSO), Rochester, Minnesota US. - - - - - -Jim Bainbridge is a senior DB2 consultant on the DB2 for i Center of Excellence team in the IBM Lab Services and Training organization. His primary role is training and implementation services for IBM DB2 Web Query for i and business analytics. Jim began his career with IBM 30 years ago in the IBM Rochester Development Lab, where he developed cooperative processing products that paired IBM PCs with IBM S/36 and AS/.400 systems. In the years since, Jim has held numerous technical roles, including independent software vendors technical support on a broad range of IBM technologies and products, and supporting customers in the IBM Executive Briefing Center and IBM Project Office. - -Hernando Bedoya is a Senior IT Specialist at STG Lab Services and Training in Rochester, Minnesota. He writes extensively and teaches IBM classes worldwide in all areas of DB2 for i. Before joining STG Lab Services, he worked in the ITSO for nine years writing multiple IBM Redbooksfi publications. He also worked for IBM Colombia as an IBM AS/400fi IT Specialist doing presales support for the Andean countries. He has 28 years of experience in the computing field and has taught database classes in Colombian universities. He holds a Master's degree in Computer Science from EAFIT, Colombia. His areas of expertise are database technology, performance, and data warehousing. Hernando can be contacted at hbedoya@us.ibm.com . - -## Authors - - - - - - - - - - - -Rob Bestgen is a member of the DB2 for i Center of Excellence team helping customers use the capabilities of DB2 for i. In addition, Rob is the chief architect of the DB2 SQL Query Engine (SQE) for DB2 for i and is the product development manager for DB2 Web Query for i. - -Mike Cain is a Senior Technical Staff Member within the IBM Systems and Technology Group. He is also the founder and team leader of the DB2 for i Center of Excellence in Rochester, Minnesota US. Before his current position, he worked as an IBM AS/400 Systems Engineer and technical consultant. Before joining IBM in 1988, Mike worked as a System/38 programmer and data processing manager for a property and casualty insurance company. Mike has 26 years of experience with IBM, engaging clients and Business Partners around the world. In addition to assisting clients, he uses his knowledge and experience to influence the IBM solution, development, and support processes. - -Dan Cruikshank has been an IT Professional since 1972. He has consulted on a number of different project areas since joining IBM Rochester in 1988. Since 1993, Dan was focused primarily on resolving IBM System ifi application and database performance issues at several IBM customer accounts. Since 1998, Dan has been one of the primary instructors for the Database Optimization Workshop. Most recently, Dan is a member of the DB2 for i Center of Excellence team with IBM Rochester Lab Services. - -Jim Denton is a senior consultant at the IBM DB2 for i Center of Excellence, where his responsibilities include both teaching courses and hands on consulting. Jim specializes in SQL performance, data-centric programming, and database modernization. Jim started his IBM career in 1981 as an S/38 operating system programmer. Before joining the consulting team, his key assignments included 10 years as a systems performance specialist, five years as the lead "JDE on i" analyst, three years as a consultant at the IBM Benchmark and Briefing Center in Montpellier France, and a total of 11 years as an operating system developer, including five years designing and implementing enhancements to DB2 for i. - -Doug Mack is a DB2 for i and Business Intelligence Consultant in the IBM Power Systems™ Lab Services organization. Doug's 30+ year career with IBM spans many roles, including product development, technical sales support, Business Intelligence Sales Specialist, and DB2 for i Product Marketing Manager. Doug is a featured speaker at User Group conferences and meetings, IBM Technical Conferences, and Executive Briefings. - - - - - -Tom McKinley is an IBM Lab Services Consultant working on DB2 for IBM i in Rochester MN. His main focus is complex query performance that is associated with Business Intelligence running on Very Large Databases. He worked as a developer or performance analyst in the DB area from 1986 until 2006. Some of his major pieces of work include the Symmetric Multiple processing capabilities of DB2 for IBM i and Large Object Data types. In addition, he was on the original team that designed and built the SQL Query Engine. Before his database work, he worked on Licensed Internal Code for System 34 and System 36. - -Kent Milligan is a senior DB2 consultant on the DB2 for i Center of Excellence team within the IBM Lab Services and Training organization. His primary responsibility is helping software developers use the latest DB2 technologies and port applications from other databases to DB2 for i. After graduating from the University of Iowa, Kent spent the first eight years of his IBM career as a member of the DB2 development team in Rochester. - -Thanks to the following people for their contributions to this project: - -Debra Landon - -International Technical Support Organization, Rochester Center - -Craig Aldrich, Mark Anderson, Theresa Euler, Scott Forstie, Chad Olstad IBM Rochester Development - -## Now you can become a published author, too! - -Here's an opportunity to spotlight your skills, grow your career, and become a published author-all at the same time! Join an ITSO residency project and help write a book in your area of expertise, while honing your experience using leading-edge technologies. Your efforts will help to increase product acceptance and customer satisfaction, as you expand your network of technical contacts and relationships. Residencies run from two to six weeks in length, and you can participate either in person or as a remote resident working from your home base. - -Find out more about the residency program, browse the residency index, and apply online at: - -ibm.com /redbooks/residencies.html - -## Comments welcome - -Your comments are important to us! - -We want our papers to be as helpful as possible. Send us your comments about this paper or other IBM Redbooks publications in one of the following ways: - -- GLYPH Use the online Contact us review Redbooks form found at: - -ibm.com /redbooks - -- GLYPH Send your comments in an email to: - -redbooks@us.ibm.com - -- GLYPH Mail your comments to: - -IBM Corporation, International Technical Support Organization Dept. HYTD Mail Station P099 2455 South Road Poughkeepsie, NY 12601-5400 - -## Stay connected to IBM Redbooks - -- GLYPH Find us on Facebook: - -http://www.facebook.com/IBMRedbooks - -- GLYPH Follow us on Twitter: - -http://twitter.com/ibmredbooks - -- GLYPH Look for us on LinkedIn: - -http://www.linkedin.com/groups?home=&gid=2130806 - -- GLYPH Explore new Redbooks publications, residencies, and workshops with the IBM Redbooks weekly newsletter: - -https://www.redbooks.ibm.com/Redbooks.nsf/subscribe?OpenForm - -- GLYPH Stay current on recent Redbooks publications with RSS Feeds: - -http://www.redbooks.ibm.com/rss.html - - - -Chapter 1. - -1 - -## Securing and protecting IBM DB2 data - -Recent news headlines are filled with reports of data breaches and cyber-attacks impacting global businesses of all sizes. The Identity Theft Resource Center$^{1}$ reports that almost 5000 data breaches have occurred since 2005, exposing over 600 million records of data. The financial cost of these data breaches is skyrocketing. Studies from the Ponemon Institute$^{2}$ revealed that the average cost of a data breach increased in 2013 by 15% globally and resulted in a brand equity loss of $9.4 million per attack. The average cost that is incurred for each lost record containing sensitive information increased more than 9% to $145 per record. - -Businesses must make a serious effort to secure their data and recognize that securing information assets is a cost of doing business. In many parts of the world and in many industries, securing the data is required by law and subject to audits. Data security is no longer an option; it is a requirement. - -This chapter describes how you can secure and protect data in DB2 for i. The following topics are covered in this chapter: - -- GLYPH Security fundamentals -- GLYPH Current state of IBM i security -- GLYPH DB2 for i security controls - -## 1.1 Security fundamentals - -Before reviewing database security techniques, there are two fundamental steps in securing information assets that must be described: - -- GLYPH First, and most important, is the definition of a company's security policy . Without a security policy, there is no definition of what are acceptable practices for using, accessing, and storing information by who, what, when, where, and how. A security policy should minimally address three things: confidentiality, integrity, and availability. -- The monitoring and assessment of adherence to the security policy determines whether your security strategy is working. Often, IBM security consultants are asked to perform security assessments for companies without regard to the security policy. Although these assessments can be useful for observing how the system is defined and how data is being accessed, they cannot determine the level of security without a security policy. Without a security policy, it really is not an assessment as much as it is a baseline for monitoring the changes in the security settings that are captured. - -A security policy is what defines whether the system and its settings are secure (or not). - -- GLYPH The second fundamental in securing data assets is the use of resource security . If implemented properly, resource security prevents data breaches from both internal and external intrusions. Resource security controls are closely tied to the part of the security policy that defines who should have access to what information resources. A hacker might be good enough to get through your company firewalls and sift his way through to your system, but if they do not have explicit access to your database, the hacker cannot compromise your information assets. - -With your eyes now open to the importance of securing information assets, the rest of this chapter reviews the methods that are available for securing database resources on IBM i. - -## 1.2 Current state of IBM i security - -Because of the inherently secure nature of IBM i, many clients rely on the default system settings to protect their business data that is stored in DB2 for i. In most cases, this means no data protection because the default setting for the Create default public authority (QCRTAUT) system value is *CHANGE. - -Even more disturbing is that many IBM i clients remain in this state, despite the news headlines and the significant costs that are involved with databases being compromised. This default security configuration makes it quite challenging to implement basic security policies. A tighter implementation is required if you really want to protect one of your company's most valuable assets, which is the data. - -Traditionally, IBM i applications have employed menu-based security to counteract this default configuration that gives all users access to the data. The theory is that data is protected by the menu options controlling what database operations that the user can perform. This approach is ineffective, even if the user profile is restricted from running interactive commands. The reason is that in today's connected world there are a multitude of interfaces into the system, from web browsers to PC clients, that bypass application menus. If there are no object-level controls, users of these newer interfaces have an open door to your data. - -Some clients using this default configuration have toughened their database security with exit-point solutions from third-party vendors. IBM i exit points allow a user-written program to be called every time that a particular interface (for example, FTP) is used or an event occurs (for example, a profile is created). Security tools that are based on these exit points increase the level of security on a system by locking down interfaces that are not under the control of menu-based or application authority. In addition, exit-point solutions allow clients to implement more granular security controls, such as allowing users access only to the database during certain hours of the day. - -Although exit-point solutions can provide great benefits, they are not an alternative to object-level control of your databases. Exit-point solutions help secure interfaces, but they do not completely protect the data that is stored in your DB2 objects. Exit points do not exist for every data access interface on the system. Therefore, if an application starts using an unprotected interface, the only thing protecting your data is object-level access control. When your security implementation totally relies on exit points, then it is also important to track any new data interfaces that appear as IBM delivers new releases and products to ensure that your exit-point solution provides coverage for those new interfaces. - -An exit-point solution is a good option for databases with security holes that are caused by a reliance on the default security setup or menu-based control. However, your security work should not stop there. Instead, you must continue to work on a complete database security solution by controlling data access at the object level. - -## 1.3 DB2 for i security controls - -As described in 1.2, "Current state of IBM i security" on page 2, object-level controls on your DB2 objects are a critical success factor in securing your business data. Although database object-level security is a strong security feature, some clients have found that object-level security does not have the granularity that is required to adhere to regulatory or compliance policies. A user that is granted object-level access to a DB2 table has the authority to view all of the rows and values in that table. - -As shown in Figure 1-1, it is an all-or-nothing access to the rows of a table. - -Figure 1-1 All-or-nothing access to the rows of a table - - - -Many businesses are trying to limit data access to a need-to-know basis. This security goal means that users should be given access only to the minimum set of data that is required to perform their job. Often, users with object-level access are given access to row and column values that are beyond what their business task requires because that object-level security provides an all-or-nothing solution. For example, object-level controls allow a manager to access data about all employees. Most security policies limit a manager to accessing data only for the employees that they manage. - -## 1.3.1 Existing row and column control - -Some IBM i clients have tried augmenting the all-or-nothing object-level security with SQL views (or logical files) and application logic, as shown in Figure 1-2. However, application-based logic is easy to bypass with all of the different data access interfaces that are provided by the IBM i operating system, such as Open Database Connectivity (ODBC) and System i Navigator. - -Using SQL views to limit access to a subset of the data in a table also has its own set of challenges. First, there is the complexity of managing all of the SQL view objects that are used for securing data access. Second, scaling a view-based security solution can be difficult as the amount of data grows and the number of users increases. - -Even if you are willing to live with these performance and management issues, a user with *ALLOBJ access still can directly access all of the data in the underlying DB2 table and easily bypass the security controls that are built into an SQL view. - -Figure 1-2 Existing row and column controls - - - -## 1.3.2 New controls: Row and Column Access Control - -Based on the challenges that are associated with the existing technology available for controlling row and column access at a more granular level, IBM delivered new security support in the IBM i 7.2 release; this support is known as Row and Column Access Control (RCAC). - -The new DB2 RCAC support provides a method for controlling data access across all interfaces and all types of users with a data-centric solution. Moving security processing to the database layer makes it easier to build controls that meet your compliance policies. The RCAC support provides an additional layer of security that complements object-level authorizations to limit data access to a need-to-know basis. Therefore, it is critical that you first have a sound object-level security implementation in place. - - - -Chapter 2. - -2 - -## Roles and separation of duties - -One of the primary objectives of row and column access control (RCAC) is to create data security policies that control and govern user access to data and limit the data access of DB2 designers and administrators to only the minimum that is required to do their jobs. - -To accomplish these tasks, RCAC engineers devised a set of functional roles that, as a group, implement effectively data access requirements and also limit the span of control of each role so that each role is given only the authorities that are needed to perform its specific set of tasks. - -This chapter describes the concepts of roles and separation of duties on DB2 for i and covers the following topics: - -- GLYPH Roles -- GLYPH Separation of duties - -## 2.1 Roles - -Traditionally, data access roles are defined in a binary way, where access to the data is either not permitted or access to the data is permitted. A full access capability can also be instantiated by the *ALLOBJ special authority, either explicitly or implicitly, for the security officer. If you hold the role of security officer, or have all *ALLOBJ special authority, you have access to all the data, with no exceptions. Unfortunately, this might not meet the organization's requirements for limiting access to data or separation of duties. - -To assist with defining roles and the separation of duties with appropriate authority, IBM i provides function usage IDs . A function usage ID implements granular security controls rather than granting users powerful special authorities, such as all object, job control, or service. - -Roles are divided among the following DB2 functions and their corresponding function usage IDs: - -- GLYPH DDM and IBM DRDAfi application server access: QIBM\_DB\_DDMDRDA -- GLYPH Toolbox application server access: QIBM\_DB\_ZDA -- GLYPH Database Administrator function: QIBM\_DB\_SQLADM -- GLYPH Database Information function: QIBM\_DB\_SYSMON -- GLYPH Security Administrator function: QIBM\_DB\_SECADM - -## 2.1.1 DDM and DRDA application server access: QIBM\_DB\_DDMDRDA - -The QIBM\_DB\_DDMDRDA function usage ID restricts access to the DDM and DRDA application server (QRWTSRVR). This function usage ID provides an easy alternative (rather than writing an exit program) to control access to DDM and DRDA from the server side. The function usage IDs ship with the default authority of *ALLOWED. The security officer can easily deny access to specific users or groups. - -This is an alternative to a User Exit Program approach. No coding is required, it is easy to change, and it is auditable. - -## 2.1.2 Toolbox application server access: QIBM\_DB\_ZDA - -The QIBM\_DB\_ZDA function usage ID restricts access to the optimized server that handles DB2 requests from clients (QZDASOINIT and QZDASSINIT). Server access is used by the ODBC, OLE DB, and .NET providers that ship with IBM i Access for Windows and JDBC Toolbox, Run SQL scripts, and other parts of System i Navigator and Navigator for i Web console. - -This function usage ID provides an easy alternative (rather than writing an exit program) to control access to these functions from the server side. The function usage IDs ship with the default authority of *ALLOWED. The security officer can easily deny access to specific users or groups. - -This is an alternative to a User Exit Program approach. No coding is required, it is easy to change, and it is auditable. - -## 2.1.3 Database Administrator function: QIBM\_DB\_SQLADM - -The Database Administrator function (QIBM\_DB\_SQLADM) is needed whenever a user is analyzing and viewing SQL performance data. Some of the more common database administrator functions include displaying statements from the SQL Plan Cache, analyzing SQL Performance Monitors and SQL Plan Cache Snapshots, and displaying the SQL details of a job other than your own. - -The Database Administrator function provides an alternative to granting *JOBCTL, but simply having the Database Administrator authorization does not carry with it all the needed object authorities for every administration task. The default behavior is to deny authorization. - -To perform database administrator tasks that are not related to performance analysis, you must refer to the details of the task to determine its specific authorization requirements. For example, to allow a database administrator to reorganize a table, the DBA must have additional object authorities to the table that are not covered by QIBM\_DB\_SQLADM. - -## Granting QIBM\_DB\_SQLADM function usage - -Only the security administrator (*SECADM) is allowed to change the list of users that can perform Database Administration functions. - -## 2.1.4 Database Information function: QIBM\_DB\_SYSMON - -The Database Information function (QIBM\_DB\_SYSMON) provides much less authority than Database Administrator function. Its primary use allows a user to examine high-level database properties. - -For example, a user that does not have *JOBCTL or QIBM\_DB\_SQLADM can still view the SQL Plan Cache properties if granted authority to QIBM\_DB\_SYSMON. Without granting this authority, the default behavior is to deny authorization. - -## Granting QIBM\_DB\_SYSMON function usage - -Only the security administrator (*SECADM) is allowed to change the list of users that can perform Database Information functions. - -## 2.1.5 Security Administrator function: QIBM\_DB\_SECADM - -The Security Administrator function (QIBM\_DB\_SECADM) grants authorities, revokes authorities, changes ownership, or changes the primary group without giving access to the object or, in the case of a database table, to the data that is in the table or allowing other operations on the table. - -Only those users with the QIBM\_DB\_SECADM function can administer and manage RCAC rules. RCAC can be used to prevent even users with *ALLOBJ authority from freely accessing all the data in a protected database. These users are excluded from data access unless they are specifically authorized by RCAC. Without granting this authority, the default behavior is to deny authorization. - -## Granting QIBM\_DB\_SECADM function usage - -Only QSECOFR or a user with *SECADM special authority can grant the QIBM\_DB\_SECADM function usage to a user or group. - -## 2.1.6 Change Function Usage CL command - -The following CL commands can be used to work with, display, or change function usage IDs: - -- GLYPH Work Function Usage ( WRKFCNUSG ) -- GLYPH Change Function Usage ( CHGFCNUSG ) -- GLYPH Display Function Usage ( DSPFCNUSG ) - -For example, the following CHGFCNUSG command shows granting authorization to user HBEDOYA to administer and manage RCAC rules: - -CHGFCNUSG FCNID(QIBM\_DB\_SECADM) USER(HBEDOYA) USAGE(*ALLOWED) - -## 2.1.7 Verifying function usage IDs for RCAC with the FUNCTION\_USAGE view - -The FUNCTION\_USAGE view contains function usage configuration details. Table 2-1 describes the columns in the FUNCTION\_USAGE view. - -Table 2-1 FUNCTION\_USAGE view - -| Column name | Data type | Description | -|---------------|-------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| FUNCTION\_ID | VARCHAR(30) | ID of the function. | -| USER\_NAME | VARCHAR(10) | Name of the user profile that has a usage setting for this function. | -| USAGE | VARCHAR(7) | Usage setting: GLYPH ALLOWED: The user profile is allowed to use the function. GLYPH DENIED: The user profile is not allowed to use the function. | -| USER\_TYPE | VARCHAR(5) | Type of user profile: GLYPH USER: The user profile is a user. GLYPH GROUP: The user profile is a group. | - -To discover who has authorization to define and manage RCAC, you can use the query that is shown in Example 2-1. - -Example 2-1 Query to determine who has authority to define and manage RCAC - -SELECT function\_id, user\_name, usage, user\_type FROM function\_usage WHERE function\_id='QIBM\_DB\_SECADM' ORDER BY user\_name; - -## 2.2 Separation of duties - -Separation of duties helps businesses comply with industry regulations or organizational requirements and simplifies the management of authorities. Separation of duties is commonly used to prevent fraudulent activities or errors by a single person. It provides the ability for administrative functions to be divided across individuals without overlapping responsibilities, so that one user does not possess unlimited authority, such as with the *ALLOBJ authority. - -For example, assume that a business has assigned the duty to manage security on IBM i to Theresa. Before release IBM i 7.2, to grant privileges, Theresa had to have the same privileges Theresa was granting to others. Therefore, to grant *USE privileges to the PAYROLL table, Theresa had to have *OBJMGT and *USE authority (or a higher level of authority, such as *ALLOBJ). This requirement allowed Theresa to access the data in the PAYROLL table even though Theresa's job description was only to manage its security. - -In IBM i 7.2, the QIBM\_DB\_SECADM function usage grants authorities, revokes authorities, changes ownership, or changes the primary group without giving access to the object or, in the case of a database table, to the data that is in the table or allowing other operations on the table. - -QIBM\_DB\_SECADM function usage can be granted only by a user with *SECADM special authority and can be given to a user or a group. - -QIBM\_DB\_SECADM also is responsible for administering RCAC, which restricts which rows a user is allowed to access in a table and whether a user is allowed to see information in certain columns of a table. - -A preferred practice is that the RCAC administrator has the QIBM\_DB\_SECADM function usage ID, but absolutely no other data privileges. The result is that the RCAC administrator can deploy and maintain the RCAC constructs, but cannot grant themselves unauthorized access to data itself. - -Table 2-2 shows a comparison of the different function usage IDs and *JOBCTL authority to the different CL commands and DB2 for i tools. - -Table 2-2 Comparison of the different function usage IDs and *JOBCTL authority - -| User action | *JOBCTL | QIBM\_DB\_SECADM | QIBM\_DB\_SQLADM | QIBM\_DB\_SYSMON | No Authority | -|--------------------------------------------------------------------------------|-----------|------------------|------------------|------------------|----------------| -| SET CURRENT DEGREE (SQL statement) | X | | X | | | -| CHGQRYA command targeting a different user's job | X | | X | | | -| STRDBMON or ENDDBMON commands targeting a different user's job | X | | X | | | -| STRDBMON or ENDDBMON commands targeting a job that matches the current user | X | | X | X | X | -| QUSRJOBI() API format 900 or System i Navigator's SQL Details for Job | X | | X | X | | -| Visual Explain within Run SQL scripts | X | | X | X | X | -| Visual Explain outside of Run SQL scripts | X | | X | | | -| ANALYZE PLAN CACHE procedure | X | | X | | | -| DUMP PLAN CACHE procedure | X | | X | | | -| MODIFY PLAN CACHE procedure | X | | X | | | -| MODIFY PLAN CACHE PROPERTIES procedure (currently does not check authority) | X | | X | | | -| CHANGE PLAN CACHE SIZE procedure (currently does not check authority) | X | | X | | | - -| User action | *JOBCTL | QIBM\_DB\_SECADM | QIBM\_DB\_SQLADM | QIBM\_DB\_SYSMON | No Authority | -|--------------------------------------------------------------|-----------|------------------|------------------|------------------|----------------| -| START PLAN CACHE EVENT MONITOR procedure | X | | X | | | -| END PLAN CACHE EVENT MONITOR procedure | X | | X | | | -| END ALL PLAN CACHE EVENT MONITORS procedure | X | | X | | | -| Work with RCAC row permissions (Create, modify, or delete) | | X | | | | -| Work with RCAC column masks (Create, modify, or delete) | | X | | | | -| Change Object Owner ( CHGOBJOWN ) CL command | | X | | | | -| Change Object Primary Group ( CHGOBJPGP ) CL command | | X | | | | -| Grant Object Authority ( GRTOBJAUT ) CL command | | X | | | | -| Revoke Object Authority ( RVKOBJAUT ) CL command | | X | | | | -| Edit Object Authority ( EDTOBJAUT ) CL command | | X | | | | -| Display Object Authority ( DSPOBJAUT ) CL command | | X | | | | -| Work with Objects ( WRKOBJ ) CL command | | X | | | | -| Work with Libraries ( WRKLIB ) CL command | | X | | | | -| Add Authorization List Entry ( ADDAUTLE ) CL command | | X | | | | -| Change Authorization List Entry ( CHGAUTLE ) CL command | | X | | | | -| Remove Authorization List Entry ( RMVAUTLE ) CL command | | X | | | | -| Retrieve Authorization List Entry ( RTVAUTLE ) CL command | | X | | | | -| Display Authorization List ( DSPAUTL ) CL command | | X | | | | -| Display Authorization List Objects ( DSPAUTLOBJ ) CL command | | X | | | | -| Edit Authorization List ( EDTAUTL ) CL command | | X | | | | -| Work with Authorization Lists ( WRKAUTL ) CL command | | X | | | | - - - -Chapter 3. - -3 - -## Row and Column Access Control - -This chapter describes what Row and Column Access Control (RCAC) is, its components, and then illustrates RCAC with a simple example. - -The following topics are covered in this chapter: - -- GLYPH Explanation of RCAC and the concept of access control -- GLYPH Special registers and built-in global variables -- GLYPH VERIFY\_GROUP\_FOR\_USER function -- GLYPH Establishing and controlling accessibility by using the RCAC rule text -- GLYPH SELECT, INSERT, and UPDATE behavior with RCAC -- GLYPH Human resources example - -## 3.1 Explanation of RCAC and the concept of access control - -RCAC limits data access to those users who have a business "need to know". RCAC makes it easy to set up a rich and robust security policy that is based on roles and responsibilities. RCAC functionality is made available through the optional, no charge feature called "IBM Advanced Data Security for i", also known as option 47 of IBM i 7.2. - -In DB2 for i, RCAC is implemented using two different approaches that address the shortcomings of traditional control methods and mechanisms: - -- GLYPH Row permissions -- GLYPH Column masks - -Another benefit of RCAC is that no database user is automatically exempt from the control. Users with *ALLOBJ authority can no longer freely access all of the data in the database unless they have the appropriate permission to do so. The ability to manage row permissions and column masks rests with the database security administrator. The RCAC definitions, enablement, and activation are controlled by SQL statements. - -Row permissions and column masks require virtually no application changes. RCAC is based on specific rules that are transparent to existing applications and SQL interfaces. Enforcement of your security policy does not depend on how applications or tools access the data. - -RCAC also facilitates multi-tenancy, which means that several independent customers or business units can share a single database table without being aware of one another. The RCAC row permission ensures each user sees only the rows they are entitled to view because the enforcement is handled by DB2 and not the application logic. - -Label-based access control (LBAC): RCAC and LBAC are not the same thing. LBAC is a security model that is primarily intended for government applications. LBAC requires that data and users be classified with a fixed set of rules that are implemented. RCAC is a general-purpose security model that is primarily intended for commercial customers. You can use RCAC to create your own security rules, which in turn allows for more flexibility. - -## 3.1.1 Row permission and column mask definitions - -The following sections define row permission and column masks. - -## Row permission - -A row permission is a database object that manifests a row access control rule for a specific table. It is essentially a search condition that describes which rows you can access. For example, a manager can see only the rows that represent his or her employees. - -The SQL CREATE PERMISSION statement that is shown in Figure 3-1 is used to define and initially enable or disable the row access rules.Figure 3-1 CREATE PERMISSION SQL statement - - - -## Column mask - -A column mask is a database object that manifests a column value access control rule for a specific column in a specific table. It uses a CASE expression that describes what you see when you access the column. For example, a teller can see only the last four digits of a tax identification number. - -Column masks replace the need to create and use views to implement access control. The SQL CREATE MASK statement that is shown in Figure 3-2 is used to define and initially enable or disable the column value access rules. - -Figure 3-2 CREATE MASK SQL statement - - - -## 3.1.2 Enabling and activating RCAC - -You can enable, disable, or regenerate row permissions and column masks by using the SQL ALTER PERMISSION statement and the SQL ALTER MASK statement, as shown in Figure 3-3 on page 17. - -Enabling and disabling effectively turns on or off the logic that is contained in the row permission or column mask. Regenerating causes the row permission or column mask to be regenerated. The row permission definition in the catalog is used and existing dependencies and authorizations, if any, are retained. The row permission definition is reevaluated as though the row permission were being created. Any user-defined functions (UDFs) that are referenced in the row permission must be resolved to the same secure UDFs as were resolved during the original row permission or column mask creation. The regenerate option can be used to ensure that the RCAC logic is intact and still valid before any user attempts to access the table. - -Note: An exclusive lock is required on the table object to perform the alter operation. All open cursors must be closed. - -Figure 3-3 ALTER PERMISSION and ALTER MASK SQL statements - - - -You can activate and deactivate RCAC for new or existing tables by using the SQL ALTER TABLE statement (Figure 3-4). The ACTIVATE or DEACTIVATE clause must be the option that is specified in the statement. No other alterations are permitted at the same time. The activating and deactivating effectively turns on or off all RCAC processing for the table. Only enabled row permissions and column masks take effect when activating RCAC. - -Note: An exclusive lock is required on the table object to perform the alter operation. All open cursors must be closed. - -Figure 3-4 ALTER TABLE SQL statement - - - -When row access control is activated on a table, a default permission is established for that table. The name of this permission is QIBM\_DEFAULT\_ \_. This default permission contains a simple piece of logic (0=1) which is never true. The default permission effectively denies access to every user unless there is a permission defined that allows access explicitly. If row access control is activated on a table, and there is no permission that is defined, no one has permission to any rows. All queries against the table produce an empty set. - -It is possible to define, create, and enable multiple permissions on a table. Logically, all of the permissions are ORed together to form a comprehensive test of the user's ability to access the data. A column can have only one mask that is defined over it. From an implementation standpoint, it does not matter if you create the column masks first or the row permissions first. - -Note: If a user does not have permission to access the row, the column mask logic is not invoked. - -## 3.2 Special registers and built-in global variables - -This section describes how you can use special registers and built-in global variables to implement RCAC. - -## 3.2.1 Special registers - -A special register is a storage area that is defined for an application process by DB2 and is used to store information that can be referenced in SQL statements. A reference to a special register is a reference to a value that is provided by the current server. - -IBM DB2 for i supports four different special registers that can be used to identify what user profiles are relevant to determining object authorities in the current connection to the server. SQL uses the term runtime authorization ID , which corresponds to a user profile on DB2 for i. Here are the four special registers: - -- GLYPH USER is the runtime user profile that determines the object authorities for the current connection to the server. It has a data type of VARCHAR(18). This value can be changed by the SQL statement SET SESSION AUTHORIZATION . -- GLYPH SESSION\_USER is the same as the USER register, except that it has a data type of VARCHAR(128). -- GLYPH CURRENT USER was added in IBM i 7.2 and is similar to the USER register, but it has one important difference in that it also reports adopted authority. High-level language programs and SQL routines such as functions, procedures, and triggers can optionally be created to run using either the caller's or the owner's user profile to determine data authorities. For example, an SQL procedure can be created to run under the owner's authority by specifying SET OPTION USRPRF=*OWNER . This special register can also be referenced as CURRENT\_USER. It has a data type of VARCHAR(128). -- GLYPH SYSTEM\_USER is the user profile that initiates the connection to the server. It is not used by RCAC, but is included here for completeness. Many jobs, including the QZDASOINIT prestarted jobs, initially connect to the server with a default user profile and then change to use some other user profile. SYSTEM\_USER reports this value, typically QUSER for a QZDASOINIT job. It has a data type of VARCHAR(128). - -In addition to these four special registers, any of the DB2 special registers can be referenced as part of the rule text. - -Table 3-1 summarizes these special registers and their values. - -Table 3-1 Special registers and their corresponding values - -| Special register | Corresponding value | -|----------------------|---------------------------------------------------------------------------------------------------------------------------------------| -| USER or SESSION\_USER | The effective user of the thread excluding adopted authority. | -| CURRENT\_USER | The effective user of the thread including adopted authority. When no adopted authority is present, this has the same value as USER. | -| SYSTEM\_USER | The authorization ID that initiated the connection. | - -Figure 3-5 shows the difference in the special register values when an adopted authority is used: - -- GLYPH A user connects to the server using the user profile ALICE. -- GLYPH USER and CURRENT USER initially have the same value of ALICE. -- GLYPH ALICE calls an SQL procedure that is named proc1, which is owned by user profile JOE and was created to adopt JOE's authority when it is called. -- GLYPH While the procedure is running, the special register USER still contains the value of ALICE because it excludes any adopted authority. The special register CURRENT USER contains the value of JOE because it includes any adopted authority. -- GLYPH When proc1 ends, the session reverts to its original state with both USER and CURRENT USER having the value of ALICE. - -Figure 3-5 Special registers and adopted authority - - - -## 3.2.2 Built-in global variables - -Built-in global variables are provided with the database manager and are used in SQL statements to retrieve scalar values that are associated with the variables. - -IBM DB2 for i supports nine different built-in global variables that are read only and maintained by the system. These global variables can be used to identify attributes of the database connection and used as part of the RCAC logic. - -Table 3-2 lists the nine built-in global variables. - -Table 3-2 Built-in global variables - -| Global variable | Type | Description | -|-----------------------|--------------|----------------------------------------------------------------| -| CLIENT\_HOST | VARCHAR(255) | Host name of the current client as returned by the system | -| CLIENT\_IPADDR | VARCHAR(128) | IP address of the current client as returned by the system | -| CLIENT\_PORT | INTEGER | Port used by the current client to communicate with the server | -| PACKAGE\_NAME | VARCHAR(128) | Name of the currently running package | -| PACKAGE\_SCHEMA | VARCHAR(128) | Schema name of the currently running package | -| PACKAGE\_VERSION | VARCHAR(64) | Version identifier of the currently running package | -| ROUTINE\_SCHEMA | VARCHAR(128) | Schema name of the currently running routine | -| ROUTINE\_SPECIFIC\_NAME | VARCHAR(128) | Name of the currently running routine | -| ROUTINE\_TYPE | CHAR(1) | Type of the currently running routine | - -## 3.3 VERIFY\_GROUP\_FOR\_USER function - -The VERIFY\_GROUP\_FOR\_USER function was added in IBM i 7.2. Although it is primarily intended for use with RCAC permissions and masks, it can be used in other SQL statements. The first parameter must be one of these three special registers: SESSION\_USER, USER, or CURRENT\_USER. The second and subsequent parameters are a list of user or group profiles. Each of these values must be 1 - 10 characters in length. These values are not validated for their existence, which means that you can specify the names of user profiles that do not exist without receiving any kind of error. - -If a special register value is in the list of user profiles or it is a member of a group profile included in the list, the function returns a long integer value of 1. Otherwise, it returns a value of 0. It never returns the null value. - -Here is an example of using the VERIFY\_GROUP\_FOR\_USER function: - -- 1. There are user profiles for MGR, JANE, JUDY, and TONY. -- 2. The user profile JANE specifies a group profile of MGR. -- 3. If a user is connected to the server using user profile JANE, all of the following function invocations return a value of 1: - -``` -VERIFY\_GROUP\_FOR\_USER (CURRENT\_USER, 'MGR') VERIFY\_GROUP\_FOR\_USER (CURRENT\_USER, 'JANE', 'MGR') VERIFY\_GROUP\_FOR\_USER (CURRENT\_USER, 'JANE', 'MGR', 'STEVE') The following function invocation returns a value of 0: VERIFY\_GROUP\_FOR\_USER (CURRENT\_USER, 'JUDY', 'TONY') -``` - -## 3.4 Establishing and controlling accessibility by using the RCAC rule text - -When defining a row permission or column mask, the "magic" of establishing and controlling accessibility comes from the rule text . The rule text represents the search criteria and logic that is implemented by the database engine. - -In the case of a row permission, the rule text is the "test" of whether the user can access the row. If the test result is true, the row can be accessed. If the test result is false, the row essentially does not exist for the user. From a set-at-a-time perspective, the permission defines which rows can be part of the query result set, and which rows cannot. - -In the case of a column mask, the rule text is both the test of whether the user can see the actual column value, and it is the masking logic if the user cannot have access to actual column value. - -For a simple example of implementing row permissions and column masks, see 3.6, "Human resources example" on page 22. - -In general, almost any set-based, relational logic is valid. For the row permission, the search condition follows the same rules that are used by the search condition in a WHERE clause. - -For the column mask, the logic follows the same rules as the CASE expression. The result data type, length, null attribute, and CCSID of the CASE expression must be compatible with the data type of the column. If the column does not allow the null value, the result of the CASE expression cannot be the NULL value. The application or interface making the data access request is expecting that all of the column attributes and values are consistent with the original definition, regardless of any masking. - -For more information about what is permitted, see the "Database programming" topic of the IBM i 7.2 Knowledge Center, found at: - -http://www-01.ibm.com/support/knowledgecenter/ssw\_ibm\_i\_72/rzahg/rzahgdbp.htm?lang =en - -One of the first tasks in either the row permission or the column mask logic is to determine who the user is, and whether they have access to the data. Elegant methods to establish the identity and attributes of the user can be employed by using the special registers, global variables, and the VERIFY function. After the user's identity is established, it is a simple matter of allowing or disallowing access by using true or false testing. The examples that are included in this paper demonstrate some of the more common and obvious techniques. - -More sophisticated methods can employ existential, day of year / time of day, and relational comparisons with set operations. For example, you can use a date master or date dimension table to determine whether the current date is a normal business day. If the current date is a valid business day, then access is allowed. If the current date is not a business day (for example a weekend day or holiday), access is denied. This test can be accomplished by performing a lookup using a subquery, such as the one that is shown in Example 3-1. - -Example 3-1 Subquery that is used as part of the rule - -DATE\_MASTER D - -D.BUSINESS\_DAY = 'Y') - -CURRENT\_DATE IN (SELECT D.DATE\_KEY FROM WHERE - -Given that joins and subqueries can be used to perform set-based operations against existing data that is housed in other objects, almost any relational test can be constructed. If the data in the objects is manipulated over time, the RCAC test logic (and user query results) can be changed without modifying the actual row permission or column mask. This includes moving a user from one group to another or changing a column value that is used to allow or disallow access. For example, if Saturday is now a valid business day, only the BUSINESS\_DAY value in the DATE\_MASTER must be updated, not the permission logic. This technique can potentially avoid downtime because of the exclusive lock that is needed on the table when adding or changing RCAC definitions. - -## 3.5 SELECT, INSERT, and UPDATE behavior with RCAC - -RCAC provides a database-centric approach to determining which rows can be accessed and what column values can be seen by a specific user. Given that the control is handled by DB2 internally, every data manipulation statement is under the influence of RCAC, with no exceptions. When accessing the table, the SELECT statements, searched UPDATE statements, and searched DELETE statements implicitly and transparently contain the row permission and the column mask rule text. This means that the data set can be logically restricted and reduced on a user by user basis. - -Furthermore, DB2 prevents an INSERT statement from inserting a row or an UPDATE statement from modifying a row such that the current user cannot be permitted to access it. You cannot create a situation in which the data you inserted or changed is no longer accessible to you. - -For more information and considerations about data movement in an RCAC environment, see Chapter 6, "Additional considerations" on page 85. - -Note: DB2 does not provide any indication back to the user that the data set requested was restricted or reduced by RCAC. This is by design, as it helps minimize any changes to the applications accessing the data. - -## 3.6 Human resources example - -This section illustrates with a simple example the usage of RCAC on a typical Human Resources application (schema). In this sample Human Resources schema, there is an important table that is called EMPLOYEES that contains all the information that is related to the employees of the company. Among the information that normally is stored in the EMPLOYEES table, there is some sensitive information that must be hidden from certain users: - -- GLYPH Tax\_Id information -- GLYPH YEAR of the birth date of the employee (hiding the age of the employee) - -In this example, there are four different types of users: - -- GLYPH Employees -- GLYPH Managers -- GLYPH Human Resources Manager -- GLYPH Consultant/IT Database Engineer (In this example, this person is an external consultant that is not an employee of the company.) - -The following sections describe step-by-step what is needed to be done to implement RCAC in this environment. - -## 3.6.1 Assigning the QIBM\_DB\_SECADM function ID to the consultants - -The consultant must have authority to implement RCAC, so you must use one of the function IDs that are provided in DB2 for i (see 2.1.5, "Security Administrator function: QIBM\_DB\_SECADM" on page 9). Complete the following steps: - -- 1. Run the Change Functional Usage ( CHGFCNUSG ) CL commands that are shown in Example 3-2. These commands must be run by someone that has the *SECOFR authority. - -Example 3-2 Function ID required to implement RCAC - -CHGFCNUSG FCNID(QIBM\_DB\_SECADM) USER(HBEDOYA) USAGE(*ALLOWED) CHGFCNUSG FCNID(QIBM\_DB\_SECADM) USER(MCAIN) USAGE(*ALLOWED) - -- 2. There is a way to discover which user profiles have authorization to implement RCAC. This can be done by running the SQL statement that is shown in Example 3-3. - -Example 3-3 Verifying what user profiles have authorization to implement RCAC - -SELECT function\_id, user\_name, usage, user\_type FROM qsys2.function\_usage WHERE function\_id ='QIBM\_DB\_SECADM' ORDER BY user\_name; - -- 3. The result of the SQL statement is shown in Figure 3-6. In this example, either MCAIN or HBEDOYA can implement RCAC in the Human Resources database. - -Figure 3-6 Result of the function ID query - -## 3.6.2 Creating group profiles for the users and their roles - -Assuming that all the employees have a valid user profile, the next step is to create group profiles to group the employees. Complete the following steps: - -- 1. In this example, there are three group profiles: -- -HR (Human Resource personnel) -- -MGR (Managers) -- -EMP (Employees) - -These are created by creating user profiles with no password. Example 3-4 shows the Create User Profile ( CRTUSRPRF ) CL commands that you use to create these group profiles. - -Example 3-4 Creating group profiles - -CRTUSRPRF USRPRF(EMP) PASSWORD() TEXT('Employees Group') CRTUSRPRF USRPRF(MGR) PASSWORD() TEXT('Managers Group') CRTUSRPRF USRPRF(HR) PASSWORD() TEXT('Human Resources Group') - -- 2. You now must assign users to a group profile. Employees go in to the EMP group profile, Managers go into the MGR group profile, and Human Resource employees go into the HR group profile. For simplicity, this example selects one employee (DSSMITH), one manager (TQSPENSER), and one HR analyst (VGLUCCHESS). - -Note: Neither of the consultants (MCAIN and HBEDOYA) belong to any group profile. - -## 3.6.3 Demonstrating data access without RCAC - -Before implementing RCAC, run some simple SQL statements to demonstrate data access without RCAC. Complete the following steps: - -- 1. The first SQL statement, which is shown in Example 3-5, basically counts the total number of rows in the EMPLOYEES table. - -Example 3-5 Counting the number of employees - -SELECT COUNT(*) as ROW\_COUNT FROM HR\_SCHEMA.EMPLOYEES; - -The result of this query is shown in Figure 3-7, which is the total number of employees of the company. - -Figure 3-7 Number of employees - - - -- 2. Run a second SQL statement (shown in Example 3-6) that lists the employees. If you have read access to the table, you see all the rows no matter who you are. - -Example 3-6 Displaying the information of the Employees - -SELECT EMPLOYEE\_ID, LAST\_NAME, JOB\_DESCRIPTION, DATE\_OF\_BIRTH, TAX\_ID, USER\_ID, MANAGER\_OF\_EMPLOYEE FROM HR\_SCHEMA.EMPLOYEES - -## The result of this query is shown in Figure 3-8. - -Figure 3-8 List of employees without RCAC enabled - -## 3.6.4 Defining and creating row permissions - -Implement RCAC on the EMPLOYEES table by completing the following steps: - -- 1. Start by defining a row permission. In this example, the rules to enforce include the following ones: -- -Human Resources employees can see all the rows. -- -Managers can see only information for the employees that they manage. -- -Employees can see only their own information. -- -Consultants are not allowed to see any rows in the table. - -To implement this row permission, run the SQL statement that is shown in Example 3-7. - -Example 3-7 Creating a permission for the EMPLOYEE table - -``` -CREATE PERMISSION HR\_SCHEMA.PERMISSION1\_ON\_EMPLOYEES ON HR\_SCHEMA.EMPLOYEES AS EMPLOYEES FOR ROWS WHERE ( VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'HR' ) = 1 ) OR ( VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'MGR' ) = 1 AND ( EMPLOYEES . MANAGER\_OF\_EMPLOYEE = SESSION\_USER OR EMPLOYEES . USER\_ID = SESSION\_USER ) ) OR ( VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'EMP' ) = 1 AND EMPLOYEES . USER\_ID = SESSION\_USER ) ENFORCED FOR ALL ACCESS ENABLE ; -``` - -- 2. Look at the definition of the table and see the permissions, as shown in Figure 3-9. QIBM\_DEFAULT\_EMPLOYEE\_HR\_SCHEMA is the default permission, as described in 3.1.2, "Enabling and activating RCAC" on page 16. - -Figure 3-9 Row permissions that are shown in System i Navigator - - - -## 3.6.5 Defining and creating column masks - -Define the different masks for the columns that are sensitive by completing the following steps: - -- 1. Start with the DAY\_OF\_BIRTH column. In this example, the rules to enforce include the following ones: -- -Human Resources can see the entire date of birth of the employees. -- -Employees can see only their own date of birth. -- -Managers can see the date of birth of their employees masked with YEAR being 9999. - -To implement this column mask, run the SQL statement that is shown in Example 3-8. - -Example 3-8 Creation of a mask on the DATE\_OF\_BIRTH column - -CREATE MASK HR\_SCHEMA.MASK\_DATE\_OF\_BIRTH\_ON\_EMPLOYEES ON HR\_SCHEMA.EMPLOYEES AS EMPLOYEES FOR COLUMN DATE\_OF\_BIRTH - -RETURN CASE - -``` -WHEN VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'HR', 'EMP' ) = 1 THEN EMPLOYEES . DATE\_OF\_BIRTH WHEN VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'MGR' ) = 1 AND SESSION\_USER = EMPLOYEES . USER\_ID THEN EMPLOYEES . DATE\_OF\_BIRTH WHEN VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'MGR' ) = 1 AND SESSION\_USER <> EMPLOYEES . USER\_ID THEN ( 9999 || '-' || MONTH ( EMPLOYEES . DATE\_OF\_BIRTH ) || '-' || DAY (EMPLOYEES.DATE\_OF\_BIRTH )) ELSE NULL END ENABLE ; -``` - -- 2. The other column to mask in this example is the TAX\_ID information. In this example, the rules to enforce include the following ones: -- -Human Resources can see the unmasked TAX\_ID of the employees. -- -Employees can see only their own unmasked TAX\_ID. -- -Managers see a masked version of TAX\_ID with the first five characters replaced with the X character (for example, XXX-XX-1234). -- -Any other person sees the entire TAX\_ID as masked, for example, XXX-XX-XXXX. -- To implement this column mask, run the SQL statement that is shown in Example 3-9. - -Example 3-9 Creating a mask on the TAX\_ID column - -``` -CREATE MASK HR\_SCHEMA.MASK\_TAX\_ID\_ON\_EMPLOYEES ON HR\_SCHEMA.EMPLOYEES AS EMPLOYEES FOR COLUMN TAX\_ID RETURN CASE WHEN VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'HR' ) = 1 THEN EMPLOYEES . TAX\_ID WHEN VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'MGR' ) = 1 AND SESSION\_USER = EMPLOYEES . USER\_ID THEN EMPLOYEES . TAX\_ID WHEN VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'MGR' ) = 1 AND SESSION\_USER <> EMPLOYEES . USER\_ID THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( EMPLOYEES . TAX\_ID , 8 , 4 ) ) WHEN VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'EMP' ) = 1 THEN EMPLOYEES . TAX\_ID ELSE 'XXX-XX-XXXX' END ENABLE ; -``` - -- 3. Figure 3-10 shows the masks that are created in the HR\_SCHEMA. - -Figure 3-10 Column masks shown in System i Navigator - - - -## 3.6.6 Activating RCAC - -Now that you have created the row permission and the two column masks, RCAC must be activated. The row permission and the two column masks are enabled (last clause in the scripts), but now you must activate RCAC on the table. To do so, complete the following steps: - -- 1. Run the SQL statements that are shown in Example 3-10. - -## Example 3-10 Activating RCAC on the EMPLOYEES table - -- /* Active Row Access Control (permissions) */ - -/* Active Column Access Control (masks) ALTER TABLE HR\_SCHEMA.EMPLOYEES ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL; - -*/ - -- 2. Look at the definition of the EMPLOYEE table, as shown in Figure 3-11. To do this, from the main navigation pane of System i Navigator, click Schemas  HR\_SCHEMA  Tables , right-click the EMPLOYEES table, and click Definition . - -Figure 3-11 Selecting the EMPLOYEES table from System i Navigator - - - -- 3. The EMPLOYEES table definition is displayed, as shown in Figure 3-12. Note that the Row access control and Column access control options are checked. - -Figure 3-12 RCAC enabled on the EMPLOYEES table - - - -## 3.6.7 Demonstrating data access with RCAC - -You are now ready to start testing RCAC with the four different users. Complete the following steps: - -- 1. The first SQL statement that is shown in Example 3-11 illustrates the EMPLOYEE count. You know that there are 42 rows from the query that was run before RCAC was put in place (see 3.6.3, "Demonstrating data access without RCAC" on page 24). - -Example 3-11 EMPLOYEES count - -SELECT COUNT(*) as ROW\_COUNT FROM HR\_SCHEMA.EMPLOYEES; - -- 2. The result of the query for a user that belongs to the HR group profile is shown in Figure 3-13. This user can see all the 42 rows (employees). - -Figure 3-13 Count of EMPLOYEES by HR - - - -- 3. The result of the same query for a user who is logged on as TQSPENSER (Manager) is shown in Figure 3-14. TQSPENSER has five employees in his department and he can also see his own row, which is why the count is 6. - -Figure 3-14 Count of EMPLOYEES by a manager - - - -- 4. The result of the same query that is run by an employee (DSSMITH) gives the result that is shown in Figure 3-15. Each employee can see only his or her own data (row). - -Figure 3-15 Count of EMPLOYEES by an employee - - - -- 5. The result of the same query that is run by the Consultant/DBE gives the result that is shown in Figure 3-16. The consultants/DBE can manage and implement RCAC, but they do not see any rows at all. - -Figure 3-16 Count of EMPLOYEES by a consultant - - - -Does the result make sense? Yes, it does because RCAC is enabled. - -- 6. Run queries against the EMPLOYEES table. The query that is used in this example runs and tests with the four different user profiles and is the same query that was run in 3.6.3, "Demonstrating data access without RCAC" on page 24. It is shown in Example 3-12. - -Example 3-12 SELECT statement to test with the different users - -``` -SELECT EMPLOYEE\_ID, LAST\_NAME, JOB\_DESCRIPTION, DATE\_OF\_BIRTH, TAX\_ID, USER\_ID, MANAGER\_OF\_EMPLOYEE FROM HR\_SCHEMA.EMPLOYEES -``` - -- 7. Figure 3-17 shows the results of the query for a Human Resources (VGLUCCHESS) user profile. The user can see all the rows and all the columns. - -Figure 3-17 SQL statement result by Human Resources user profile - -- 8. Figure 3-18 shows the results of the same query for the Manager (TQSPENSER). Notice the masking of the DATE\_OF\_BIRTH and TAX\_ID columns. - -Figure 3-18 SQL statement result by Manager profile - -- 9. Figure 3-19 shows the results of the same query for an employee (DSSMITH). The employee can only see only his own data with no masking at all. - -Figure 3-19 SQL statement result by an employee profile - -- 10.Figure 3-20 shows the results of the same query for the Consultant/DBE, who is not one of the company's employees. - -Figure 3-20 SQL statement result by Consultant/DBE profile - -## 3.6.8 Demonstrating data access with a view and RCAC - -This section covers data access with a view and RCAC. Complete the following steps: - -- 1. The EMPLOYEES table has a column that is called On\_Leave\_Flag (Figure 3-21 on page 33) indicating that the employee is on Leave of Absence. For this purpose, a view is created that lists only the employees that are on leave. - -Figure 3-21 Employees on leave - -- 2. Example 3-13 shows the definition of the view. - -Example 3-13 VIew of employees on leave - -``` -CREATE VIEW HR\_SCHEMA.EMPLOYEES\_ON\_LEAVE (EMPLOYEE\_ID, FIRST\_NAME, MIDDLE\_INITIAL, LAST\_NAME, WORK\_DEPARTMENT, PHONE\_EXTENSION, JOB\_DESCRIPTION, DATE\_OF\_BIRTH, -``` - -TAX\_ID, USER\_ID, MANAGER\_OF\_EMPLOYEE, ON\_LEAVE\_FLAG ) - -AS - -SELECT EMPLOYEE\_ID, FIRST\_NAME , MIDDLE\_INITIAL, LAST\_NAME , WORK\_DEPARTMENT, PHONE\_EXTENSION, JOB\_DESCRIPTION, DATE\_OF\_BIRTH, TAX\_ID, USER\_ID, MANAGER\_OF\_EMPLOYEE, - -ON\_LEAVE\_FLAG - -FROM - -HR\_SCHEMA.EMPLOYEES - -WHERE - -ON\_LEAVE\_FLAG = 'Y'; - -- 3. Use the view to query the data and see who is on leave. The SQL statement that is used is shown in Example 3-14: - -Example 3-14 SQL statement for employees on leave - -SELECT EMPLOYEE\_ID, LAST\_NAME, JOB\_DESCRIPTION, DATE\_OF\_BIRTH, TAX\_ID, USER\_ID, MANAGER\_OF\_EMPLOYEE FROM - -HR\_SCHEMA.EMPLOYEES\_ON\_LEAVE; - -- 4. Start with the Human Resources person (VGLUCCHESS) and see what is the result of the previous query. He sees the two employees that are on leave and no masking is done over the DATE\_OF\_BIRTH and TAX\_ID columns. The results of the query are shown in Figure 3-22. - -Figure 3-22 Employees on leave - Human Resources user - -- 5. Figure 3-23 shows what the Manager (TQSPENSER) gets when he runs the same query over the view. He sees only the employees that are on leave that are managed by him. In this example, it is one employee. The columns are masked, which confirms that RCAC is applied to the view as well. - -Figure 3-23 Employee on leave - Manager of Field Reps user - -- 6. Figure 3-24 shows what the employee (DSSMITH) gets when he runs the same query over the view. The employee gets an empty set or he gets only himself if he is on leave. - -. - -Figure 3-24 Employees on leave - employee user - - - -Chapter 4. - -4 - -## Implementing Row and Column Access Control: Banking example - -This chapter illustrates the Row and Column Access Control (RCAC) concepts using a banking example. Appendix A, "Database definitions for the RCAC banking example" on page 121 provides a script that you can use to create all the database definitions or DDLs to re-create this RCAC example. - -The following topics are covered in this chapter: - -- GLYPH Business requirements for the RCAC banking scenario -- GLYPH Description of the users roles and responsibilities -- GLYPH Implementation of RCAC - -## 4.1 Business requirements for the RCAC banking scenario - -As part of a new internet banking project, the Bank decides to raise the level of data access control on the following three tables that are involved in the new customer-facing application: - -- GLYPH CUSTOMERS -- GLYPH ACCOUNTS -- GLYPH TRANSACTIONS - -RCAC will be used to restrict access to the rows in these three tables by using permissions, and to restrict column values by using masks. The default position is that no user can access the rows in the tables. From there, specific bank employees are allowed access only to the rows for their job responsibilities. In addition, columns containing personal or sensitive data are masked appropriately. Bank customers are allowed access to only their rows and column values. - -In this example, it is assumed that the Bank employees have access to the tables when working on the premises only. Employee access to data is provided by programs and tools using standard DB2 interfaces, such as embedded SQL, ODBC, JDBC, and CLI. The database connection authentication for these interfaces uses the employee's personal and unique IBM i user profile. Operating in their professional role, employees do not have access to bank data through the Internet. - -Bank customers have access to their accounts and transactions by using a new web application. Each customer has unique credentials for logging in to the application. The authentication of the customer is handled by the web server. After the customer is authenticated, the web server establishes a connection to DB2 for data access. This connection uses a common IBM i user profile that is known as WEBUSER. This user profile is secured and is used only by the web application. No Bank employee has access to the WEBUSER profile, and no customer has an IBM i user profile. - -The customer's identity is passed to DB2 by using a global variable. The global variable is secured and can be accessed only by the WEBUSER. The web application sets the CUSTOMER\_LOGIN\_ID variable to the customer's login value. This value is compared to the customer's login value that is found in the CUSTOMER\_LOGIN\_ID column of the CUSTOMERS table. - -Applications that do not use the web interface do not have to be changed because the global variable is NULL by default. - -A diagram of the internet banking architecture is shown in Figure 4-1: - -- GLYPH The row permission and column masks for the CUSTOMERS table are based on the group of which the user profile is part. If the user is a customer, their specific login ID also is tested. -- GLYPH The row permission and column mask for the ACCOUNTS table are based on the CUSTOMERS table permission rules. A subquery is used to connect the accounts (child) with the customer (parent). -- GLYPH The row permission for the TRANSACTIONS table is based on the ACCOUNTS table permission rules and the CUSTOMERS table permission rules. A subquery is used to connect the transactions (child) with the account (parent) and the account (child) with the customer (parent). - -Figure 4-1 Internet banking example - - - -## 4.2 Description of the users roles and responsibilities - -During the requirements gathering phase, the following groups of users are identified and codified: - -- GLYPH SECURITY: Security officer and security administrators -- GLYPH DBE: Database engineers -- GLYPH ADMIN: Bank business administrators -- GLYPH TELLER: Bank tellers -- GLYPH CUSTOMER: Bank customers using the internet -- GLYPH PUBLIC: Anyone not already in a group - -Based on their respective roles and responsibilities, the users (that is, a group) are controlled by row permissions and column masks. The chart that is shown in Figure 4-2 shows the rules for row and column access in this example. - -Figure 4-2 Rules for row and column access - - - -The chart that is shown in Figure 4-3 shows the column access that is allowed by group and lists the column masks by table. - -Figure 4-3 Column masks - -| | | CUSTOMERS | ACCOUNTS | -|----------|----------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------| -| SECURITY | No Rows | CUSTOMER\_DRIVERS\_LICENSE\_NUMBER CUSTOMER\_EMAIL CUSTOMER\_LOGIN\_ID CUSTOMER\_SECURITY\_QUESTION CUSTOMER\_SECURITY\_QUESTION\_ANSWER CUSTOMER\_TAX\_ID | ACCOUNT\_NUMBER | -| DBE | All Rows | CUSTOMER\_DRIVERS\_LICENSE\_NUMBER CUSTOMER\_EMAIL CUSTOMER\_LOGIN\_ID CUSTOMER\_SECURITY\_QUESTION CUSTOMER\_SECURITY\_QUESTION\_ANSWER CUSTOMER\_TAX\_ID | ACCOUNT NUMBER ACCOUNT\_NUMBER | -| ADMIN | All Rows | None | None | -| TELLER | All Rows | CUSTOMER\_EMAIL CUSTOMER\_LOGIN\_ID CUSTOMER\_SECURITY\_QUESTION CUSTOMER\_SECURITY\_QUESTION\_ANSWER CUSTOMER TAX ID \_ \_ | None | -| CUSTOMER | Own Rows | None | None | -| PUBLIC | No Rows | CUSTOMER\_DRIVERS\_LICENSE\_NUMBER CUSTOMER\_EMAIL CUSTOMER LOGIN ID CUSTOMER\_LOGIN\_ID CUSTOMER\_SECURITY\_QUESTION CUSTOMER\_SECURITY\_QUESTION\_ANSWER CUSTOMER\_TAX\_ID | ACCOUNT\_NUMBER | - -For the demonstration and testing of RCAC in this example, the following users interact with the database. Furthermore, the column masking rules are developed independently of the row permissions. If a person does not have permission to access the row, the column mask processing does not occur. - -- GLYPH Hernando Bedoya is a DB2 for i database engineer with the user profile of HBEDOYA. He is part of the DBE group. -- GLYPH Mike Cain is a DB2 for i database engineer with the user profile of MCAIN. He is part of the DBE group. -- GLYPH Veronica G. Lucchess is a bank account administrator with the user profile of VGLUCCHESS. She is part of the ADMIN group. -- GLYPH Tom Q. Spenser is a bank teller with the user profile of TQSPENSER. He is part of the TELLER group. -- GLYPH The IT security officer has the user profile of SECURITY. She is not part of any group. -- GLYPH The online banking web application uses the user profile WEBUSER. This profile is part of the CUSTOMER group. Any future customer-facing applications can also use this group if needed. -- GLYPH Adam O. Olsen is a bank customer with a web application login ID of KLD72CQR8JG. - -## 4.3 Implementation of RCAC - -Figure 4-4 shows the data model of the banking scenario that is used in this example. - -Figure 4-4 Data model of the banking scenario - - - -This section covers the following steps: - -- GLYPH Reviewing the tables that are used in this example -- GLYPH Assigning function ID QIBM\_DB\_SECADM to the Database Engineers group -- GLYPH Creating group profiles for the users and their roles -- GLYPH Creating the CUSTOMER\_LOGIN\_ID global variable -- GLYPH Defining and creating row permissions -- GLYPH Defining and creating column masks -- GLYPH Restricting the inserting and updating of masked data -- GLYPH Activating row and column access control -- GLYPH Reviewing row permissions -- GLYPH Demonstrating data access with RCAC -- GLYPH Query implementation with RCAC activated - -## 4.3.1 Reviewing the tables that are used in this example - -This section reviews the tables that are used in this example. As shown in Figure 4-5, there are three main tables that are involved in the data model: CUSTOMERS, ACCOUNTS, and TRANSACTIONS. There are 90 customers. - -Figure 4-5 Tables that are used in the banking example - - - -Note: Appendix A, "Database definitions for the RCAC banking example" on page 121 provides a script that you can use to create all the database definitions or DDLs to re-create this RCAC example. - -To review the attributes of each table that is used in this banking example, complete the following steps: - -- 1. Review the columns of each the tables through System i Navigator. Expand Database  named Database  Schemas  BANK\_SCHEMA  Tables . -- 2. Right-click the CUSTOMERS table and select Definition . Figure 4-6 shows the attributes for the CUSTOMERS table. The Row access control and Column access control options are not selected, which indicates that the table does not have RCAC implemented. - -Figure 4-6 CUSTOMERS table attributes - - - -- 3. Click the Columns tab to see the columns of the CUSTOMERS table, as shown in Figure 4-7. - -Figure 4-7 Column definitions of the CUSTOMERS table - -- 4. Click the Key Constraints , Foreign Key Constraints , and Check Constraints tabs to review the key, foreign, and check constraints on the CUSTOMERS table, as shown in Figure 4-8. There are no Foreign Key Constraints or Check Constraints on the CUSTOMERS table. - -Figure 4-8 Reviewing the constraints on the CUSTOMERS table - - - -- 5. Review the definition of the ACCOUNTS table. The definition of the ACCOUNTS table is shown in Figure 4-9. RCAC has not been defined for this table yet. - -Figure 4-9 ACCOUNTS table attributes - - - -- 6. Click the Columns tab to see the columns of the ACCOUNTS table, as shown in Figure 4-10. - -Figure 4-10 Column definitions of the ACCOUNTS table - -- 7. Click the Key Constraints , Foreign Key Constraints , and Check Constraints tabs to review the key, foreign, and check constraints on the ACCOUNTS table, as shown in Figure 4-11. There is one Foreign Key Constraint and no Check Constraints on the ACCOUNTS table. - -Figure 4-11 Reviewing the constraints on the ACCOUNTS table - - - -- 8. Review the definition of the TRANSACTIONS table. The definition of the TRANSACTIONS table is shown in Figure 4-12. RCAC is not defined for this table yet. - -Figure 4-12 TRANSACTIONS table attributes - - - -- 9. Click the Columns tab to see the columns of the TRANSACTIONS table, as shown in Figure 4-13. - -Figure 4-13 Column definitions of the TRANSACTIONS table - -- 10.Click the Key Constraints , Foreign Key Constraints , and Check Constraints tabs to review the key, foreign, and check constraints on the TRANSACTIONS table, as shown in Figure 4-14. There is one Foreign Key Constraint and one Check Constraint on the TRANSACTIONS table. - -Figure 4-14 Reviewing the constraints on the TRANSACTIONS table - - - -Now that you have reviewed the database model for this example, the following sections describe the steps that are required to implement RCAC in this banking scenario. - -## 4.3.2 Assigning function ID QIBM\_DB\_SECADM to the Database Engineers group - -The first step is to assign the appropriate function usage ID to the Database Engineers (DBEs) that will be implementing RCAC. For a description of function usage IDs, see 2.1, "Roles" on page 8. In this example, the DBEs are users MCAIN and HBEDOYA. - -## Complete the following steps: - -- 1. Right-click the database connection and select Application Administration , as shown in Figure 4-15. - -Figure 4-15 Application administration - - - -- 2. The Application Administration window opens, as shown in Figure 4-16. Click IBM i  Database and select the function usage ID of Database Security Administrator . - -Figure 4-16 Application administration for IBM i - - - -- 3. Click Customize for the function usage ID of Database Security Administrator, as shown in Figure 4-17. - -Figure 4-17 Customizing the Database Security Administrator function usage ID - - - -- 4. The Customize Access window opens, as shown in Figure 4-18. Click the users that need to implement RCAC. For this example, HBEDOYA and MCAIN are selected. Click Add and then click OK . - -Figure 4-18 Customize Access window - - - -- 5. The Application Administrator window opens again. The function usage ID of Database Security Administrator now has an X in the Customized Access column, as shown in Figure 4-19. - -Figure 4-19 Function usage ID Database Security Administrator customized - - - -- 6. Run an SQL query that shows which user profiles are enabled to define RCAC. The SQL query is shown in Figure 4-20. - -Figure 4-20 Query to display user profiles with function usage ID for RCAC - - - -## 4.3.3 Creating group profiles for the users and their roles - -The next step is to create the different group profiles (ADMIN, CUSTOMER, TELLER, and DBE) and assign the different user profiles to the different group profiles. For a description of the different groups and users for this example, see 4.2, "Description of the users roles and responsibilities" on page 39. - -## Complete the following steps: - -- 1. On the main navigation pane of System i Navigator, right-click Groups and select New Group , as shown in Figure 4-21. - -Figure 4-21 Creating group profiles - - - -- 2. The New Group window opens, as shown in Figure 4-22. For each new group, enter the Group name (ADMIN, CUSTOMER, TELLER, and DBE) and add the user profiles that are associated to this group by selecting the user profile and clicking Add . - -Figure 4-22 shows adding user TQSPENCER to the TELLER group profile. - -Figure 4-22 Creating group profiles and adding users - - - -- 3. After you create all the group profiles, you should see them listed in System i Navigator under Users and Groups  Groups , as shown in Figure 4-23. - -Figure 4-23 Newly created group profiles - - - -## 4.3.4 Creating the CUSTOMER\_LOGIN\_ID global variable - -In this step, you create a global variable that is used to capture the Customer\_Login\_ID information, which is required to validate the permissions. For more information about global variables, see 3.2.2, "Built-in global variables" on page 19. - -## Complete the following steps: - -- 1. From System i Navigator, under the schema Bank\_Schema, right-click Global Variable and select New  Global Variable , as shown in Figure 4-24. - -Figure 4-24 Creating a global variable - - - -- 2. The New Global Variable window opens, as shown in Figure 4-25. Enter the global variable name of CUSTOMER\_LOGIN\_ID, select the data type of VARCHAR, and leave the default value of NULL. This default value ensures that users that do not use the web interface do not have permission to access the data. Click OK . - -Figure 4-25 Creating a global variable called CUSTOMER\_LOGIN\_ID - - - -- 3. Now that the global variable is created, assign permissions to the variable so that it can be set by the program. Right-click the CUSTOMER\_LOGIN\_ID global variable and select Permissions , as shown in Figure 4-26. - -Figure 4-26 Setting permissions on the CUSTOMER\_LOGIN\_ID global variable - - - -- 4. The Permissions window opens, as shown in Figure 4-27. Select Change authority for Webuser so that the application can set this global variable. - -Figure 4-27 Setting change permissions for Webuser on the CUSTOMER\_LOGIN\_ID global variable - - - -## 4.3.5 Defining and creating row permissions - -You now ready to define the row permissions of the tables. Complete the following steps: - -- 1. From the navigation pane of System i Navigator, click Schemas  BANK\_SCHEMA , right-click Row Permissions , and select New  Row Permission , as shown in Figure 4-28. - -Figure 4-28 Selecting new row permissions - - - -- 2. The New Row Permission window opens, as shown in Figure 4-29. Enter the information regarding the row permissions on the CUSTOMERS table. This row permission defines what is established in the following policy: -- -User profiles that belong to DBE, ADMIN, and TELLER group profiles can see all the rows. -- -User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER user) can see only the rows that match their customer login ID. The login ID value representing the online banking user is passed from the web application to the database by using the global variable CUSTOMER\_LOGIN\_ID. The permission rule uses a subquery to check whether the global variable matches the CUSTOMER\_LOGIN\_ID column value in the CUSTOMERS table. -- -Any other user profile cannot see any rows at all. - -Select the Enabled option. Click OK . - -Figure 4-29 New row permissions on the CUSTOMERS table - - - -- 3. Define the row permissions for the ACCOUNTS table. The New Row Permission window opens, as shown in Figure 4-30. Enter the information regarding the row permissions on the ACCOUNTS table. This row permission defines what is established in the following policy: -- -User profiles that belong to DBE, ADMIN and TELLER group profiles can see all the rows. -- -User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER user) can see only the rows that match their customer login ID. The login ID value representing the online banking user is passed from the web application to the database by using the global variable CUSTOMER\_LOGIN\_ID. The permission rule uses a subquery to check whether the global variable matches the CUSTOMER\_LOGIN\_ID column value in the CUSTOMERS table. -- -Any other user profile cannot see any rows at all. - -Select the Enabled option. Click OK . - -Figure 4-30 New row permissions on the ACCOUNTS table - - - -- 4. Define the row permissions on the TRANSACTIONS table. The New Row Permission window opens, as shown in Figure 4-31. Enter the information regarding the row permissions on the TRANSACTIONS table. This row permission defines what is established in the following policy: -- -User profiles that belong to DBE, ADMIN, and TELLER group profiles can see all of the rows. -- -User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER user) can see only the rows that match their customer login ID. The login ID value representing the online banking user is passed from the web application to the database by using the global variable CUSTOMER\_LOGIN\_ID. The permission rule uses a subquery to check whether the global variable matches the CUSTOMER\_LOGIN\_ID column value in the CUSTOMERS table. - -Note: You must join back to ACCOUNTS and then to CUSTOMERS by using a subquery to check whether the global variable matches CUSTOMER\_LOGIN\_ID. Also, if the row permission or column mask rule text references another table with RCAC defined, the RCAC for the referenced table is ignored. - -- -Any other user profile cannot see any rows at all. - -Select the Enabled option. Click OK . - -Figure 4-31 New row permissions on the TRANSACTIONS table - - - -- 5. To verify that the row permissions are enabled, from System i Navigator, click Row Permissions , as shown in Figure 4-32. The three row permissions are created and enabled. - -Figure 4-32 List of row permissions on BANK\_SCHEMA - - - -## 4.3.6 Defining and creating column masks - -This section defines the masks on the columns. Complete the following steps: - -- 1. From the main navigation pane of System i Navigator, click Schemas  BANK\_SCHEMA , right-click Column Masks , and select New  Column Mask , as shown in Figure 4-33. - -Figure 4-33 Creating a column mask - - - -- 2. In the New Column Mask window, which is shown in Figure 4-34, enter the following information: -- -Select the CUSTOMERS table on which to create the column mask. -- -Select the Column to mask; in this example, it is CUSTOMER\_EMAIL. -- -Define the masking logic depending on the rules that you want to enforce. In this example, either the ADMIN or CUSTOMER group profiles can see the entire email address; otherwise, it is masked to ****@****. - -Select the Enabled option. Click OK . - -Figure 4-34 Defining a column mask on the CUSTOMERS table - - - -- 3. Repeat steps 1 on page 58 and 2 to create column masks for the following columns: -- -MASK\_DRIVERS\_LICENSE\_ON\_CUSTOMERS -- -MASK\_LOGIN\_ID\_ON\_CUSTOMERS -- -MASK\_SECURITY\_QUESTION\_ANSWER\_ON\_CUSTOMERS -- -MASK\_ACCOUNT\_NUMBER\_ON\_ACCOUNTS -- -MASK\_SECURITY\_QUESTION\_ON\_CUSTOMERS -- -MASK\_TAX\_ID\_ON\_CUSTOMERS - -- 4. To verify that the column masks are enabled, from System i Navigator, click Column Masks , as shown in Figure 4-35. The seven column masks are created and enabled. - -Figure 4-35 List of column masks on BANK\_SCHEMA - - - -## 4.3.7 Restricting the inserting and updating of masked data - -This step defines the check constraints that support the column masks to make sure that on INSERTS or UPDATES, data is not written with a masked value. For more information about the propagation of masked data, see 6.8, "Avoiding propagation of masked data" on page 108. - -## Complete the following steps: - -- 1. Create a check constraint on the column CUSTOMER\_EMAIL in the CUSTOMERS table. From the navigation pane of System i Navigator, right-click the CUSTOMERS table and select Definition , as shown Figure 4-36 - -Figure 4-36 Definition of the CUSTOMERS table - - - -- 2. From the CUSTOMERS definition window, click the Check Constraints tab and click Add , as shown in Figure 4-37. - -Figure 4-37 Adding a check constraint - - - -- 3. The New Check Constraint window opens, as shown in Figure 4-38. Complete the following steps: -- a. Select the CUSTOMER\_EMAIL column. -- b. Enter the check constraint condition. In this example, specify CUSTOMER\_EMAIL to be different from ****@****, which is the mask value. -- c. Select the On update violation, preserve column value option and click OK . - -Figure 4-38 Specifying a new check constraint on the CUSTOMERS table - - - -- 4. Figure 4-39 shows that there is now a check constraint on the CUSTOMERS table that prevents any masked data from being updated to the CUSTOMER\_EMAIL column. - -Figure 4-39 Check constraint on the CUSTOMERS table - - - -- 5. Create all the other check constraints that are associated to each of the masks on the CUSTOMERS table. After this is done, these constraints should look like the ones that are shown in Figure 4-40. - -Figure 4-40 List of check constraints on the CUSTOMERS table - - - -## 4.3.8 Activating row and column access control - -You are now ready to activate RCAC on all three tables in this example. Complete the following steps: - -- 1. Start by enabling RCAC on the CUSTOMERS table. From System i Navigator, right-click the CUSTOMERS table and select Definition . As shown in Figure 4-41, make sure that you select Row access control and Column access control . Click OK . - -Figure 4-41 Enabling RCAC on the CUSTOMERS table - - - -- 2. Enable RCAC on the ACCOUNTS table. Right-click the ACCOUNTS table and select Definition . As shown Figure 4-42, make sure that you select Row access control and Column access control . Click OK . - -Figure 4-42 Enabling RCAC on ACCOUNTS - - - -- 3. Enable RCAC on the TRANSACTIONS table. Right-click the TRANSACTIONS table and select Definition . As shown in Figure 4-43, make sure that you select Row access control . Click OK . - -Figure 4-43 Enabling RCAC on TRANSACTIONS - - - -## 4.3.9 Reviewing row permissions - -This section displays all the row permissions after enabling RCAC. Complete the following steps: - -- 1. From System i Navigator, click Row Permissions , as shown in Figure 4-44. Three additional Row Permissions are added (QIBM\_DEFAULT*). There is one per each row permission. - -Figure 4-44 Row permissions after enabling RCAC - - - -- 2. Look at one of the row permission definitions by right-clicking it and selecting Definition , as shown in Figure 4-45. - -Figure 4-45 Selecting row permission definition - - - -- 3. A window opens, as shown in Figure 4-46. Take note of the nonsensical search condition (0=1) of the QIBM\_DEFAULT row permission. This permission is ORed with all of the others and it ensures that if someone does not meet any of the criteria from the row permission then this condition is tested, and because it is false the access is denied. - -Figure 4-46 Search condition of the QIBM\_DEFAULT row permission - - - -## 4.3.10 Demonstrating data access with RCAC - -You are now ready to test the RCAC definitions. Run the following SQL statements with each type of user (DBE, SECURITY, TELLER, ADMIN, and WEBUSER): - -- GLYPH A SELECT statement that returns the SESSION\_USER. -- GLYPH A SELECT statement that counts the customers from the CUSTOMER table. There are 90 customers in the CUSTOMER table. -- GLYPH A simple SELECT statement that returns the following output from the CUSTOMERS table ordered by customer\_name: -- -c u s t o m e r \_ i d -- -customer\_name -- -customer\_email -- -c u s t o m e r \_ t a x \_ i d -- -customer\_drivers\_license\_number - -## Data access for a DBE user with RCAC - -To test a DBE (MCAIN) user, complete the following steps: - -- 1. Confirm that the user is the user of the session by running the first SQL statement, as shown in Figure 4-47. In this example, MCAIN is the DBE user. - -Figure 4-47 DBE session user - - - -- 2. The number of rows that the DBE user MCAIN can see is shown in Figure 4-48. - -Figure 4-48 Number of rows that DBE user can see in the CUSTOMERS table - - - -- 3. The result of the third SQL statement is shown in Figure 4-49. Note the masked columns. User MCAIN can see all the rows in the CUSTOMERS table, but there are some columns where the result is masked. - -Figure 4-49 SQL statement that is run by the DBE user with masked columns - -## Data access for SECURITY user with RCAC - -To test a SECURITY user, complete the following steps: - -- 1. Confirm that the user is the user of the session by running the first SQL statement, as shown in Figure 4-50. In this example, SECURITY is the security officer. - -Figure 4-50 SECURITY session user - - - -- 2. The number of rows in the CUSTOMERS table that the security officer can see is shown in Figure 4-51. The security officer cannot see any data at all. - -Figure 4-51 Number of rows that the security officer can see in the CUSTOMERS table - - - -- 3. The result of the third SQL statement is shown in Figure 4-52. Note the empty set that is returned to the security officer. - -Figure 4-52 SQL statement that is run by the SECURITY user - no results - - - -## Data access for TELLER user with RCAC - -To test a Teller (TQSPENCER) user, complete the following steps: - -- 1. Confirm that the TELLER user is the user of the session by running the first SQL statement, as shown in Figure 4-53. In this example, TQSPENCER is a TELLER user. - -Figure 4-53 TELLER session user - - - -- 2. The number of rows in the CUSTOMERS table that the TELLER user can see is shown in Figure 4-54. The TELLER user can see all the rows. - -Figure 4-54 Number of rows that the TELLER user can see in the CUSTOMERS table - - - -- 3. The result of the third SQL statement is shown in Figure 4-55. Note the masked columns. The TELLER user, TQSPENSER, can see all the rows, but there are some columns where the result is masked. - -Figure 4-55 SQL statement that is run by the TELLER user with masked columns - - - -## Data access for ADMIN user with RCAC - -To test an ADMIN (VGLUCCHESS) user, complete the following steps: - -- 1. Confirm that the ADMIN user is the user of the session by running the first SQL statement, as shown in Figure 4-56. In this example, VGLUCCHESS is an ADMIN user. - -Figure 4-56 ADMIN session user - - - -- 2. The number of rows that the ADMIN user can see is shown in Figure 4-57. The ADMIN user can see all the rows. - -Figure 4-57 Number of rows that the ADMIN can see in the CUSTOMERS table - - - -- 3. The result of the third SQL statement is shown in Figure 4-58. There are no masked columns. - -Figure 4-58 SQL statement that is run by the ADMIN user - no masked columns - -## Data access for WEBUSER user with RCAC - -To test a CUSTOMERS (WEBUSER) user that accesses the database by using the web application, complete the following steps: - -- 1. Confirm that the user is the user of the session by running the first SQL statement, as shown in Figure 4-59. In this example, WEBUSER is a CUSTOMER user. - -Figure 4-59 WEBUSER session user - - - -- 2. A global variable (CUSTOMER\_LOGIN\_ID) is set by the web application and then is used to check the row permissions. Figure 4-60 shows setting the global variable by using the customer login ID. - -Figure 4-60 Setting the global variable CUSTOMER\_LOGIN\_ID - - - -- 3. Verify that the global variable was set with the correct value by clicking the Global Variable tab, as shown in Figure 4-61. - -Figure 4-61 Viewing the global variable value - - - -- 4. The number of rows that the WEBUSER can see is shown in Figure 4-62. This user can see only the one row that belongs to his web-based user ID. - -Figure 4-62 Number of rows that the WEBUSER can see in the CUSTOMERS table - - - -- 5. The result of the third SQL statement is shown in Figure 4-63. There are no masked columns, and the user can see only one row, which is the user's own row. - -Figure 4-63 SQL statement that is run by WEBUSER - no masked columns - - - -## Other examples of data access with RCAC - -To run an SQL statement that lists all the accounts and current balance by customer, complete the following steps: - -- 1. Run the SQL statement that is shown in Figure 4-64 using the WEBUSER user profile. The SQL statement has no WHERE clause, but the WEBUSER can see only his accounts. - -Figure 4-64 List of accounts and current balance by customer using the WEBUSER user profile - -- 2. Figure 4-65 shows running a more complex SQL statement that calculates transaction total by account for year and quarter. Run this statement using the WEBUSER profile. The SQL statement has no WHERE clause, but the WEBUSER user can see only his transactions. - -Figure 4-65 Calculate transaction total by account for year and quarter using the WEBUSER profile - -- 3. Run the same SQL statement that lists the accounts and current balance by customer, but use a TELLER user profile. The result of this SQL statement is shown in Figure 4-66. The TELLER user can see all the rows in the CUSTOMERS table. - -Figure 4-66 List of accounts and current balance by customer using a TELLER user profile - -## 4.3.11 Query implementation with RCAC activated - -This section looks at some other interesting information that is related to RCAC by comparing the access plans of the same SQL statement without RCAC and with RCAC. This example uses Visual Explain and runs an SQL statement that lists the accounts and current balance by customer. - -## Complete the following steps: - -- 1. Figure 4-67 shows the SQL statement in Visual Explain ran with no RCAC. The implementation of the SQL statement is a two-way join, which is exactly what the SQL statement is doing. - -Figure 4-67 Visual Explain with no RCAC enabled - - - -- 2. Figure 4-68 shows the Visual Explain of the same SQL statement, but with RCAC enabled. It is clear that the implementation of the SQL statement is more complex because the row permission rule becomes part of the WHERE clause. - -Figure 4-68 Visual Explain with RCAC enabled - - - -- 3. Compare the advised indexes that are provided by the Optimizer without RCAC and with RCAC enabled. Figure 4-69 shows the index advice for the SQL statement without RCAC enabled. The index being advised is for the ORDER BY clause. - -Figure 4-69 Index advice with no RCAC - - - -- 4. Now, look at the advised indexes with RCAC enabled. As shown in Figure 4-70, there is an additional index being advised, which is basically for the row permission rule. For more information, see 6.4.2, "Index advisor" on page 99. - -Figure 4-70 Index advice with RCAC enabled - - - - - -Chapter 5. - -5 - -## RCAC and non-SQL interfaces - -A benefit of Row and Column Access Control (RCAC) is that its security controls are enforced across all the interfaces that access DB2 for i because the security rules are defined and enforced at the database level. The examples that are shown in this paper focus on SQL-based access, but row permissions and column masks also are enforced for non-SQL interfaces, such as native record-level access in RPG and COBOL programs and CL commands, such as Display Physical File Member ( DSPPFM ) and Copy File ( CPYF ). - -This consistent enforcement across all interfaces is a good thing, but there are some nuances and restrictions as a result of applying an SQL-based technology such as RCAC to non-SQL interfaces. These considerations are described in this chapter. - -The following topics are covered in this chapter in this chapter: - -- GLYPH Unsupported interfaces -- GLYPH Native query result differences -- GLYPH Accidental updates with masked values -- GLYPH System CL commands considerations - -## 5.1 Unsupported interfaces - -It is not possible to create a row permission or column mask on a distributed table or a program-described file. - -After a row permission or column mask is added to a table, there are some data access requests that no longer work. An attempt to open or query a table with activated RCAC controls involving any of the following scenarios is rejected with the CPD43A4 error message: - -- GLYPH A logical file with multiple formats if the open attempt requests more than one format. -- GLYPH A table or query that specifies an ICU 2.6.1 sort sequence. -- GLYPH A table with read triggers. - -This unsupported interface error occurs when a table with RCAC controls is accessed, not when the RCAC control is created and activated. - -For example, assume that there is a physical file, PF1, which is referenced by a single format logical file (LFS) and a multi-format logical file (LFM). A row permission is successfully created and activated for PF1. Any application that accesses PF1 directly or LFS continues to work without any issues. However, any application that opens LFM with multiple formats receives an error on the open attempt after the row permission is activated for PF1. - -Important: This potential runtime error places a heavy emphasis on a comprehensive testing plan to ensure that all programs are tested. If testing uncovers an unsupported interface, then you must investigate whether the application can be rewritten to use a data access interface that is supported by RCAC. - -## 5.2 Native query result differences - -The SQL Query Engine (SQE) is the only engine that is enhanced by IBM to enforce RCAC controls on query requests. In order for native query requests to work with RCAC, these native query requests are now processed by SQE instead of the Classic Query Engine (CQE). Native query requests can consist of the following items: - -- GLYPH Query/400 -- GLYPH QQQQRY API -- GLYPH Open Query File ( OPNQRYF ) command -- GLYPH Run Query ( RUNQRY ) command -- GLYPH Native open (RPG, COBOL, OPNDBF, and so on) of an SQL view - -Legacy queries that have been running without any issues for many years and over many IBM i releases are now processed by a different query engine. As a result, the runtime behavior and results that are returned can be different for native query requests with RCAC enabled. The OPNQRYF command and Query/400 run with SQE by default. - -The following list documents some of the query output differences that can occur when native query requests are processed by CQE: - -- GLYPH Different ordering in the result set -- GLYPH Different values for null columns or columns with errors -- GLYPH Suppression of some mapping error messages -- GLYPH Loss of RRN positioning capabilities -- GLYPH Duplicate key processing behavior differences -- GLYPH Missing key feedback - -For a list of the differences and additional details, see the IBM i Memo to Users Version 7.2 , found at: - -http://www-01.ibm.com/support/knowledgecenter/ssw\_ibm\_i\_72/rzahg/rzahgmtu.htm - -In addition, the performance of a native query with SQE can be different. It is possible that a new index or keyed logical file might need to be created to improve the performance. - -Important: Based on the potential impacts of query result set and performance differences, you should perform extensive functional testing and performance benchmarking of applications and reports that use native query interfaces. - -## 5.3 Accidental updates with masked values - -The masked values that are returned by a column mask can potentially cause the original data value to be accidentally overwritten, especially with applications using native record-level access. - -For example, consider a table containing three columns of first name, last name, and tax ID that is read by an RPG program. The user running the program is not authorized to see the tax ID value, so a masked value (*****3333) is written into the program's record buffer, as shown Figure 5-1. - -In this example, the application reads the data for an update to correct the misspelling of the last name. The last name value is changed to Smith in the buffer. Now, a WRITE request is issued by the program, which uses the contents of the record buffer to update the row in the underlying DB2 table. Unfortunately, the record buffer still contains a masked value for the tax ID, so the tax ID value in the table is accidentally set to the masked value. - -Figure 5-1 Accidental update with masked values scenario - - - -Obviously, careful planning and testing should be exercised to avoid accidental updates with masked values. - -DB2 for i also enhanced its check constraint support in the IBM i 7.2 release with a new ON UPDATE clause that allows the existing value to be preserved when a masked value is detected by a check constraint. Details about how to employ this new check constraint support can be found in 6.8.1, "Check constraint solution" on page 108. - -## 5.4 System CL commands considerations - -As stated earlier, RCAC controls are enforced on all data access interfaces. This enforcement is not limited to programmatic interfaces; it also includes system CL commands that read and insert data, such as the Create Duplicate Object ( CRTDUPOBJ ) and Start DFU ( STRDFU ) CL commands. This section documents the behavior of the Create Duplicate Object ( CRTDUPOBJ ), Copy File ( CPYF ), and Copy Library ( CPYLIB ) CL commands with RCAC. - -## 5.4.1 Create Duplicate Object (CRTDUPOBJ) command - -The CRTDUPOBJ command is enhanced with a new Access Control ( ACCCTL ) parameter in the IBM i 7.2 release to copy RCAC controls to the new object being created. Row permissions and column masks are copied to the new object by default because the default value for the ACCCTL parameter is *ALL . - -If the invoker of the CRTDUPOBJ command asks for data to be copied with a value of *YES for the DATA parameter, the value of the ACCCTL parameter must be *ALL . If not, the command invocation receives an error. - -When data is copied to the duplicated object with the DATA parameter, all rows and unmasked column values are copied into the new object, even if the command invoker is not authorized to view all rows or certain column values. This behavior occurs because the RCAC controls also are copied to the new object. The copied RCAC controls enforce that only authorized users are allowed to view row and column values in the newly duplicated object. - -## 5.4.2 Copy File (CPYF) command - -The CPYF command copies only data, so there is no new parameter to copy RCAC controls to the target table. Therefore, if CPYF is used to create a target table, there are no RCAC controls placed on the target table. - -When RCAC controls are in place on the source table, the CPYF command is limited to reading rows and column values that are based on the invoker of the CPYF command. If a user is authorized to see all rows and column values, then all rows and unmasked column values are copied to the target table (assuming no RCAC controls are on the target table). If a user without full access runs the CPYF command, the CPYF command can copy only a subset of the rows into the target table. In addition, if that user can view only masked column values, then masked values are copied into the target table. This also applies to the Copy to Import File ( CPYTOIMPF ) command. - -If the target table has RCAC controls defined and activated, then the CPYF command is allowed only to add or replace rows in the target table based on the RCAC controls. If CPYF tries to add a row to the target table that the command invoker is not allowed to view according to the target RCAC controls, then an error is received. - -## 5.4.3 Copy Library (CPYLIB) command - -The CPYLIB command is enhanced with the same Access Control ( ACCCTL ) parameter as the CRTDUPOBJ command in the IBM i 7.2 release (see 5.4.1, "Create Duplicate Object (CRTDUPOBJ) command" on page 82). Row permissions and column masks are copied to the new object in the new library by default because the default value for the ACCCTL parameter is *ALL . - - - -Chapter 6. - -## Additional considerations - -This chapter covers additional considerations that must be taken into account when implementing Row and Column Access Control (RCAC), including the following functions: - -- GLYPH Timing of column masking -- GLYPH Data movement -- GLYPH Joins -- GLYPH Views -- GLYPH Materialized query tables -- GLYPH Index advisor -- GLYPH Monitoring, analysis, and debugging -- GLYPH Performance and scalability - -The following topics are covered in this chapter: - -- GLYPH Timing of column masking -- GLYPH RCAC effects on data movement -- GLYPH RCAC effects on joins -- GLYPH Monitoring, analyzing, and debugging with RCAC -- GLYPH Views, materialized query tables, and query rewrite with RCAC -- GLYPH RCAC effects on performance and scalability -- GLYPH Exclusive lock to implement RCAC (availability issues) -- GLYPH Avoiding propagation of masked data -- GLYPH Triggers and functions (SECURED) -- GLYPH RCAC is only one part of the solution - -6 - -## 6.1 Timing of column masking - -An important design and implementation consideration is the fact that RCAC column masking occurs after all of the query processing is complete, which means that the query results are not at all based on the masked values. Any local selection, joining, grouping, or ordering operations are based on the unmasked column values. Only the final result set is the target of the masking. - -An example of this situation is shown in Figure 6-1. However, note that aggregate functions (a form of grouping) are based on masked values. - -SELECT - -CREDIT\_CARD\_NUMBER, - -FROM - -GROUP BY - -CREDIT\_CARD\_NUMBER - -ORDER BY - -CREDIT\_CARD\_NUMBER; - -## Without RCAC Masking - -## With RCAC Masking - -| CREDIT CARD NUMBER \_ \_ | TOTAL | -|--------------------------|---------------| -| 3785 0000 0000 1234 | 233.50 | -| 3785 1111 1111 1234 | 105.10 | -| 3785 2222 2222 1234 | 300 00 300.00 | -| 3785 3333 3333 1234 | 1,775.00 | -| 5466 4444 4444 1234 | 601.70 | -| 5466 5555 5555 1234 | 37.80 | -| 5466 6666 6666 1234 | 490.45 | -| 6011 7777 7777 1234 | 1005.00 | -| 6011 8888 8888 1234 | 750.33 | -| 6011 9999 9999 0001 | 10.00 | - -Figure 6-1 Timing of column masking - -| CREDIT CARD NUMBER \_ \_ | TOTAL | -|---------------------------|---------------| -| **** **** **** 1234 | 233.50 | -| **** **** **** 1234 | 105.10 | -| **** **** **** 1234 | 300 00 300.00 | -| **** **** **** 1234 | 1,775.00 | -| **** **** **** 1234 | 601.70 | -| **** **** **** 1234 | 37.80 | -| **** **** **** 1234 | 490.45 | -| **** **** **** 1234 1234 | 1005.00 | -| **** **** **** 1234 | 750.33 | -| **** **** **** 0001 | 10.00 | - -SUM(AMOUNT) AS TOTAL TRANSACTIONS - -Conversely, field procedure masking causes the column values to be changed (that is, masked) and stored in the row. When the table is queried and the masked columns are referenced, the masked data is used for any local selection, joining, grouping, or ordering operations. This situation can have a profound effect on the query's final result set and not just on the column values that are returned. Field procedure masking occurs when the column values are read from disk before any query processing. RCAC masking occurs when the column values are returned to the application after query processing. This difference in behavior is shown in Figure 6-2. - -Note: Column masks can influence an SQL INSERT or UPDATE . For example, you cannot insert or update a table with column access control activated with masked data generated from an expression within the same statement that is based on a column with a column mask. - -Figure 6-2 Masking differences between Fieldproc and RCAC - - - -## 6.2 RCAC effects on data movement - -As described earlier and shown in Figure 6-3, RCAC is applied pervasively regardless of the data access programming interface, SQL statement, or IBM i command. The effects of RCAC on data movement scenarios can be profound and possibly problematic. It is important to understand these effects and make the appropriate adjustments to avoid incorrect results or data loss. - -Figure 6-3 RCAC and data movement - - - -The "user" that is running the data movement application or process, whether it be a high availability (HA) scenario, an extract, transform, load (ETL) scenario, or just copying data from one file or table to another one, must have permission to all the source rows without masking, and not be restricted from putting rows into the target. Allowing the data movement application or process to bypass the RCAC rules must be based on a clear and concise understanding of the organization's object security and data access policy. Proper design, implementation, and testing are critical success factors when applying RCAC. - -Important: RCAC is applied to the table or physical file access. It is not applied to the journal receiver access. Any and all database transactions are represented in the journal regardless of RCAC row permissions and column masks. This makes it essential that IBM i security is used to ensure that only authorized personnel have access to the journaled data. - -This section covers in detail the following three examples: - -- GLYPH Effects when RCAC is defined on the source table -- GLYPH Effects when RCAC is defined on the target table -- GLYPH Effects when RCAC is defined on both source and target tables - -## 6.2.1 Effects when RCAC is defined on the source table - -Example 6-1 shows a simple example that illustrates the effect of RCAC as defined on the source table. - -Example 6-1 INSERT INTO TARGET statement - -INSERT INTO TARGET (SELECT * FROM SOURCE); - -For example, given a "source" table with a row permission defined as NAME <> 'CAIN' and a column mask that is defined to project the value 999.99 for AMOUNT, the SELECT statement produces a result set that has the RCAC rules applied. This reduced and modified result set is inserted into the "target" table even though the query is defined as returning all rows and all columns. Instead of seven rows that are selected from the source, only three rows are returned and placed into the target, as shown in Figure 6-4. - -Figure 6-4 RCAC effects on data movement from SOURCE - - - -## 6.2.2 Effects when RCAC is defined on the target table - -Example 6-2 shows a simple example that illustrates the effect of RCAC as defined on the target table. - -Example 6-2 INSERT INTO TARGET statement - -INSERT INTO TARGET (SELECT * FROM SOURCE); - -Given a "target" table with a row permission defined as NAME <> 'CAIN' and a column mask that is defined to project the value 999.99 for AMOUNT, the SELECT statement produces a result set that represents all the rows and columns. The seven row result set is inserted into the "target", and the RCAC row permission causes an error to be returned, as shown in Figure 6-5. The source rows where NAME = 'CAIN' do not satisfy the target table's permission, and therefore cannot be inserted. In other words, you are inserting data that you cannot read. - -Figure 6-5 RCAC effects on data movement on TARGET - - - -## 6.2.3 Effects when RCAC is defined on both source and target tables - -Example 6-3 shows a simple example that illustrates the effect of RCAC as defined on both the source and the target tables. - -Example 6-3 INSERT INTO TARGET statement - -INSERT INTO TARGET (SELECT * FROM SOURCE); - -Given a "source" table and a "target" table with a row permission defined as NAME <> 'CAIN' and a column mask that is defined to project the value 999.99 for AMOUNT, the SELECT statement produces a result set that has the RCAC rules applied. This reduced and modified result set is inserted into the "target" table even though the query is defined as returning all rows and all columns. Instead of seven rows that are selected from the source, only three rows are returned. - -Although the source rows where NAME <> 'CAIN' do satisfy the target table's permission, the AMOUNT column value of 999.99 represents masked data and therefore cannot be inserted. An error is returned indicating the failure, as shown in Figure 6-6. In this scenario, DB2 is protecting against an overt attempt to insert masked data. - -Figure 6-6 RCAC effects on data movement on SOURCE and TARGET - - - -## 6.3 RCAC effects on joins - -As mentioned previously, a fundamental concept of row permission is that it defines a logical subset of rows that a user or group of users is permitted to access and use. This subset becomes the new basis of any query against the table that has RCAC enabled. - -Note: Thinking of the row permission as defining a virtual set of rows that can be operated on is the secret to understanding the effect of RCAC on any join operation. - -As shown in Figure 6-7, there are two different sets, set A and set B. However, set B has a row permission that subsets the rows that a user can see. - -Figure 6-7 Set A and set B with row permissions - - - -## 6.3.1 Inner joins - -Inner join defines the intersection of two data sets. For a row to be returned from the inner join query, it must appear in both sets, as shown in Figure 6-8. - -Figure 6-8 Inner join without RCAC permission - - - -Given that row permission serves to eliminate logically rows from one or more sets, the result set from an inner join (and a subquery) can be different when RCAC is applied. RCAC can reduce the number of rows that are permitted to be accessed by the join, as shown in Figure 6-9. - -Effect of column masks on inner joins: Because column masks are applied after the query final results are determined, the masked value has no effect on the join processing and corresponding query result set. - -Figure 6-9 Inner join with RCAC permission - - - -## 6.3.2 Outer joins - -Outer joins preserve one or both sides of two data sets. A row can be returned from the outer join query if it appears in the primary set (LEFT, RIGHT, or both in the case of FULL), as shown in Figure 6-10. Column values from the secondary set are returned if the row has a match in the primary set. Otherwise, NULL is returned for the column value by default. - -Figure 6-10 Outer join without RCAC permission - - - -Given that row permission serves to eliminate logically rows from one or more sets, more column values that are returned from the secondary table in outer join can be NULL when RCAC is applied, as shown in Figure 6-11. - -Effect of column masks on inner joins: Because column masks are applied after the query final results are determined, the masked value has no effect on the join processing and corresponding query result set. - -Figure 6-11 Outer join with RCAC permission - - - -## 6.3.3 Exception joins - -Exception joins preserve one side of two data sets. A row can be returned from the exception join query if it appears in the primary set (LEFT or RIGHT) and the row does not appear in the secondary set, as shown in Figure 6-12. Column values from the secondary set are returned as NULL by default. - -Figure 6-12 Exception join without RCAC permission - - - -Given that row permission serves to eliminate logically rows from one or more sets, more rows can appear to be exceptions when RCAC is applied, as shown in Figure 6-13. Also, because column masks are applied after the query final results are determined, the masked value has no effect on the join processing and corresponding query result set. - -Figure 6-13 Exception join with RCAC permission - - - -## 6.4 Monitoring, analyzing, and debugging with RCAC - -It is assumed (and it is a critical success factor) that the database engineer or application developer has a thorough understanding of the DB2 for i Query Optimizer, Database Engine, and all the associated tools and techniques. - -The monitoring, analyzing, and debugging process basically stays the same when RCAC row permissions or column masks are in place, with a few important differences: - -- GLYPH The underlying data access plan can be different and more complex based on the rule text. -- GLYPH The database results can be reduced or modified based on the rule text and user profile. -- GLYPH The run time of the request can be affected either positively or negatively based on the rule text. -- GLYPH For high-level language record level access, query plans must be considered, and not just program code. - -During analyzing and debugging, it is important to account for all of the RCAC definitions for each table or file to understand the logic and corresponding work that is associated with processing the row permissions and column masks. It is also important to realize that, depending on the user profile in effect at run time, the database actions and query results can be different. - -RCAC is designed and implemented to be transparent to the user. It is possible for user "Mike" and user "Hernando" to run the exact same query, against the exact same data on the exact same system, and get different result sets. There is no error, no warning, and no indication that RCAC reduced or modified the respective answers that are returned. Furthermore, it is also likely that user "Mike" and user "Hernando" have different query run times even though it appears that everything is the same for both users. The actual query plan contains the RCAC logic, and this additional code path can alter the amount of work that is needed to produce results, based on the user running the query. - -When monitoring, analyzing, and debugging a database process when RCAC is enabled, it is critical to keep as many of the "variables" the same as possible. Use a good scientific process. For example, when re-creating a problem situation running under the same user profile with the same data and under the same conditions, it is almost mandatory. Otherwise, the database behavior and query results can be different. - -To successfully perform monitoring, analyzing, and debugging when RCAC is enabled likely involves changes in the security and data access policies of the organization, and require new responsibilities, authority, and oversight within the data-centric application development community. As such, establishing and staffing the position of "database engineer" becomes even more important. - -## 6.4.1 Query monitoring and analysis tools - -When monitoring and collecting metrics on database requests, DB2 for i provides additional information that indicates row permissions or column masks are being applied. This information is integrated and part of the standard tools, such as Visual Explain, SQL Plan Cache Snapshot, and SQL Performance Monitor. - -Figure 6-14 shows how Visual Explain externalizes RCAC. - -Figure 6-14 Visual Explain indicating that RCAC is applied - - - -Figure 6-15 shows the main dashboard of an SQL Performance Monitor. Click Summary . - -Figure 6-15 SQL Performance Monitor - - - -Figure 6-16 shows the summary of an SQL Performance Monitor with an indication that RCAC is applied. - -Figure 6-16 SQL Performance Monitor indicating that RCAC is applied - - - -Figure 6-17 shows the statements of an SQL Performance Monitor and how RCAC is externalized. - -Figure 6-17 SQL Performance Monitor showing statements and RCAC - - - -When implementing RCAC as part of a comprehensive and pervasive data access control initiative, consider that the database monitoring and analysis tools can collect literal values that are passed as part of SQL statements. These literal values can be viewed as part of the information collected. If any of the literals are based on or are used with masked columns, it is important to review the database engineer's policy for viewing these data elements. For example, supposed that column CUSTOMER\_TAX\_ID is deemed masked for the database engineer and the CUSTOMER\_TAX\_ID column is used in a predicate as follows: - -WHERE CUSTOMER\_TAX\_ID = '123-45-7890' - -The literal value of '123-45-7890' is visible to the analyst, effectively exposing sensitive information. If this is not acceptable, you must implement the SYSPROC.SET\_COLUMN\_ATTRIBUTE procedure. - -The SET\_COLUMN\_ATTRIBUTE procedure sets the SECURE attribute for a column so that variable values that are used for the column cannot be seen in the SQL Performance Monitor, SQL Plan Cache Snapshot, or Visual Explain. - -## 6.4.2 Index advisor - -Because the RCAC rule text can be almost any valid SQL logic, including local selection predicates, join conditions, and subqueries, the standard query tuning techniques still apply. Without a doubt, a proper and adequate indexing strategy is a good starting point. - -The index advisor is not specifically enhanced for RCAC, but because the rule text is a fully integrated part of the query plan, any opportunities for indexing is advised based on the current Query Optimizer functionality. If an index is advised because of the RCAC rule text logic, there is no RCAC reason code provided. Analyzing the query plan and the RCAC rule text provides the understanding as to why the index is being advised. - -For example, the query that is shown in Figure 6-18 produces index advice for the user's predicate and the RCAC predicate. - -Figure 6-18 Index advice and RCAC - - - -In Figure 6-19, index advisor is showing an index for the ACCOUNTS and CUSTOMERS tables based on the RCAC rule text. - -Figure 6-19 Index advisor based on the RCAC rule - - - -For more information about creating and using indexes, see IBM DB2 for i indexing methods and strategies , found at: - -http://www.ibm.com/partnerworld/wps/servlet/ContentHandler/stg\_ast\_sys\_wp\_db2\_i\_in dexing\_methods\_strategies - -## 6.4.3 Metadata using catalogs - -To make the discovery and identification of RCAC row permissions and column masks programmatically, query the QSYS2.SYSCONTROLS catalog view or the QSYS2.SYSCONTROLSDEP catalog view directly. Otherwise, the System i Navigator Database graphical interface can be used interactively. - -## Figure 6-20 shows the QSYS2.SYSCONTROLS catalog view. - -Figure 6-20 RCAC and catalogs - -The SYSCONTROLS catalog view contains the following columns: - -- GLYPH COLUMN\_NAME -- GLYPH CONTROL\_TYPE -- GLYPH CREATE\_TIME -- GLYPH ENABLE -- GLYPH ENFORCED -- GLYPH ASP\_NUMBER -- GLYPH IMPLICIT -- GLYPH LABEL -- GLYPH LAST\_ALTERED -- GLYPH LONG\_COMMENT -- GLYPH RCAC\_NAME -- GLYPH RCAC\_OWNER -- GLYPH RCAC\_SCHEMA -- GLYPH RULETEXT -- GLYPH SYSTEM\_COLUMN\_NAME -- GLYPH SYSTEM\_TABLE\_NAME -- GLYPH SYSTEM\_TABLE\_SCHEMA -- GLYPH TABLE\_NAME -- GLYPH TABLE\_SCHEMA -- GLYPH TBCORRELATION - -The SYSCONTROLSDEP catalog view contains the following columns: - -- GLYPH COLUMN\_NAME -- GLYPH CONTROL\_TYPE -- GLYPH IASP\_NUMBER -- GLYPH OBJECT\_NAME -- GLYPH OBJECT\_SCHEMA -- GLYPH OBJECT\_TYPE -- GLYPH PARM\_SIGNATURE -- GLYPH RCAC\_NAME -- GLYPH RCAC\_SCHEMA -- GLYPH SYSTEM\_TABLE\_NAME -- GLYPH SYSTEM\_TABLE\_SCHEMA - -For more information, see the IBM i 7.2 DB2 for i SQL Reference Guide , found at: - -http://www-01.ibm.com/support/knowledgecenter/ssw\_ibm\_i\_72/db2/rbafzintro.htm?lang =en - -## 6.5 Views, materialized query tables, and query rewrite with RCAC - -This section covers the implications to views, materialized query tables (MQTs), and query rewrite when RCAC is activated on a table. - -## 6.5.1 Views - -Any access to an SQL view that is over one or more tables that have RCAC also have those row permissions and column masking rules applied. If an SQL view has predicates, those are logically ANDed with any search condition that is specified in the permissions that are defined on the underlying tables. The view does not have to project the columns that are referenced by the permissions. Figure 6-21 shows an example of a view definition and user query. - -Figure 6-21 View definition and user query - - - -What the query optimizer plans for and what the database engine runs is shown in the Figure 6-22. - -Figure 6-22 Query rewrite with RCAC - - - -## 6.5.2 Materialized query tables - -When the query to populate a materialized query table (MQT) is run by the system on either the create table or a refresh table, and one or more source tables have RCAC defined, the row permissions and column masks are ignored. This means that the MQT has all of the data. - -Because the MQT is a copy of the base table data, when a permission is created on the base table, all the related MQTs are altered to have a default row permission. This default permission prevents any of the rows from being directly queried. - -When a query implicitly uses an MQT, the underlying row permissions and column masks are built into the query that uses the MQT. In order for the MQT to be used for optimization, the MQT must include any columns that are used by the row permissions and column masks. - -The following example illustrates this scenario: - -- 1. Create schema and tables: - -CREATE SCHEMA Schema1; CREATE TABLE Schema1.employee(userID varchar(128), LocationID integer, Regionid integer); CREATE TABLE Schema1.Sales (INVOICE INTEGER NOT NULL, SALEAMT DECIMAL(5,2), TAXAMT DECIMAL(5,2), LOCATIONID INTEGER, REGIONID INTEGER); - -- 2. Create a row permission that allows the employees to see only rows from the region they work in: - -``` -/* Create permission that only allows the employees to see rows from the region they work in */ CREATE PERMISSION Schema1.Sales\_PERM1 ON schema1.sales FOR ROWS WHERE CURRENT\_USER in (SELECT userId FROM schema1.employee E WHERE e.regionid = regionid) ENFORCED FOR ALL ACCESS ENABLE; -``` - -- 3. Create an MQT to summarize sales by location: - --- Create MQT to summarize sales by location -- This has all of the data. The schema1.sales\_perm1 predicate was not applied CREATE TABLE Schema1.Location\_Sales\_MQT as AS (SELECT LocationID, SUM(Saleamt) as Total\_Location\_Sales FROM SCHEMA1.SALES GROUP BY LOCATIONID) DATA INITIALLY DEFERRED REFRESH DEFERRED MAINTAINED BY USER; - -- 4. Populate the MQT (permission is not applied): - -/* Populate the MQT - Permission not applied here */ REFRESH TABLE Schema1.Location\_Sales\_MQT - -The following query matches Location\_Sales\_MQT, but it cannot be used because it does not have column regionid, which is needed by the schema1.sales\_PERM1 permission: - -SELECT Locationid, sum(SALEAMT) FROM schema1.sales GROUP BY locationid; - -- 5. Create an MQT to summarize by region and location: - --- MQT to summarize by region and location Create table schema1.Region\_Location\_Sales\_MQT as AS (SELECT REGIONID, LocationID, SUM(Saleamt) as Total\_Location\_Sales FROM SCHEMA1.SALES GROUP BY REGIONID, LOCATIONID) DATA INITIALLY DEFERRED REFRESH DEFERRED MAINTAINED BY USER; - -- 6. Populate the Region\_location\_Sales\_MQT (permission not applied): - -/* Populate the Region\_location\_Sales\_MQT - Permission not applied here */ Refresh table schema1.Region\_Location\_Sales\_MQT - -The following query can use the Region\_location\_SALES\_MQT because it has REGIONID, which is required for the schema1.sales\_PERM1 permission: - -SELECT Locationid, sum(SALEAMT) FROM schema1.sales GROUP BY locationid; - -This example has the following additional implications: - -- GLYPH Users must be prevented from explicitly querying the MQT or a view that is created over it. Those two cases bypass the row permission and column mask rules from the underlying tables. -- GLYPH If the user writes code to update incrementally an MQT, that code must be run from a user that has permission to view all of the rows and all columns in their unmasked state. Otherwise, the MQT contents are not complete and queries that implicitly use the MQT might get wrong results. -- GLYPH To prevent this, a check constraint can be created to cause an error if masked data was inserted into the MQT. - -## 6.5.3 Query rewrite - -Query rewrite is a technique that the optimizer can use to change the original request to improve performance. - -For example, a query that references Table1 might be rewritten to access an MQT over Table1, or it might also be optimized to access only the fields in an index that is defined over Table1 and avoid touching Table1. With RCAC, defining these rewrites can still occur, but the MQT or index also must include all columns that are needed by the row permissions or column masks that are defined on Table1. - -As part of adding RCAC, the impact to these potentially significant performance optimizations must be considered. Usage of MQTs or index-only access might be reduced or eliminated by enabling RCAC. - -## 6.6 RCAC effects on performance and scalability - -As with any discussion that is related to performance and scalability, nothing is certain or guaranteed. There are always many variables that are involved. First, a good foundation of knowledge and skill is required to appreciate fully what is occurring when a database request is handled within an RCAC enabled environment. Implementing the row permission or column masks involves the query optimizer and database engine. The process that identifies the rows that you have permission to access is considered a "query", and as such a query plan must be formulated. In the case of SQL requests, the RCAC portion of the query is combined with the user's query, much like a query referencing a view. - -For native record level access, this RCAC "query" is also built and used to test the permission. When a file is opened, the RCAC rule text logic is included, optimized, and run as part of the native read, write, update, or delete operation. The amount of work (and time) required to identify the record based on the user's permission is directly related to the complexity and depth of the logic that is needed to identify the records that can be returned. - -A simple example to illustrate this concept is a random read using a keyed logical file (that is, an index). In its purest form, a random read uses two data access methods: index probe (find the key and RRN) and table probe (find the record using RRN). If the RCAC rule text specifies five nested subqueries to determine whether the user has access to the record, this logic must be added to the path. The subquery processing now becomes part of the original "random read" request. Instead of two simple I/Os to retrieve the record, there can be a minimum of 12 I/Os to retrieve the same record. These I/Os can be done with a result of "not found" if the user is not entitled to any of the records. - -For programs that access records sequentially, in or out of key order, the added RCAC logic can have a profound effect on the performance and scalability. Reading the "next record" in order is no longer a simple matter of positioning to the next available key, as shown in Figure 6-23. - -Figure 6-23 Native record access with no RCAC - - - -Before the record, as identified by the key, is considered available, the RCAC logic must be run. If the record is rejected by RCAC, the next record in sequence that is permissible must be identified. This spinning through the records can take a long time and uses many resources, as shown in Figure 6-24. - -Figure 6-24 Native record level access with RCAC - - - -After the row permissions and column masks are designed and implemented, adequate performance and scalability testing are recommended. - -## 6.7 Exclusive lock to implement RCAC (availability issues) - -When defining permissions or enabling RCAC, an exclusive lock on the base table is obtained. The impact to other applications depends on the order of create permission and the alter table to activate RCAC. - -Consider the following scenarios: - -- GLYPH Scenario 1: Adding permissions and RCAC is not enabled on the table: -- -Job 1 reading data from the table (open for input) holds a *SHRRD on the member and a *SHRRD on the data. -- -Job 2 adding, updating, or deleting rows from table (open for output) holds a *SHRRD on the member and a *SHRUPD on the data. -- -Job 4 allocates the object and gets a *SHRRD on the file and a *EXCLRD on the data. -- -Job 3 attempts to add a permission to the table. Permission is added and the pseudo-closed cursors for Job1 and Job 2 are closed. Job 4 still holds the *SHRRD on the file and *EXCLRD on the data. - -The net result from Scenario 1 is that you can add permissions without having to end the applications that are reading the base table. - -- GLYPH Scenario 2: Altering a table to activate RCAC requires that all applications using the table be ended. The alter table requires exclusive use of the table. -- GLYPH Scenario 3: Altering the table to activate RCAC before the permissions are added. The alter table requires exclusive use of the table, as in scenario 2. All applications must be ended to perform this alter. After the alter is complete, any applications trying to read data do not get any results, and attempts to insert new rows returns the following message: - -SQ20471] INSERT or UPDATE does not satisfy row permissions. - -To create a permission in this case requires that you end all the applications, unlike scenario 1 where permissions can be added while the applications were active. In this case, the applications must be ended to run the create permission. - -## 6.8 Avoiding propagation of masked data - -Operations such as insert or update into a table with active column access control can fail if the input data is masked data. This can happen when data to be inserted or updated contains the masked value as a result of a SELECT from a table with active column access control. - -For example, assume TABLE1 and TABLE2 have active column access control and for insert, selecting data from TABLE2 returns the masked data. The following INSERT returns an error: - -INSERT INTO TABLE1 SELECT * FROM TABLE2 - -The masked data that is returned from the SELECT * FROM TABLE2 might not be valid input data for TABLE1 because of data type or column check constraint. - -There are two ways to prevent this situation from happening: Define a check constraint or create a before trigger. - -## 6.8.1 Check constraint solution - -One way to prevent this problem is to define a check constraint. - -As part of RCAC, new SQL syntax is provided to allow an action to be performed when a violation of the check constraints check condition occurs instead of giving that error. However, if the check condition is still not met after the action, a hard error is returned. A check constraint with the new on-violation-clause is allowed on both the CREATE TABLE and ALTER TABLE statements. - -In the Example 6-4, the mask is defined to return a value of 'XXX-XX-nnnn' for any query that is not done by a user profile in the DBMGR group. The constraint checks that the column SSN does not have the masked value. - -Example 6-4 Check constraint to avoid masked data - -``` -CREATE SCHEMA MY\_LIB SET SCHEMA MY\_LIB CREATE TABLE MY\_LIB.EMP\_INFO (COL1\_name CHAR(10) WITH DEFAULT 'DEFAULT', COL2\_ssn CHAR(11) WITH DEFAULT 'DEFAULT') CREATE MASK MASK\_ssn ON MY\_LIB.EMP\_INFO FOR COLUMN COL2\_ssn RETURN CASE WHEN VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'DBMGR' ) = 1 THEN COL2\_ssn -``` - -``` -ELSE 'XXX-XX-'||SUBSTR(COL2\_ssn,8,4) END ENABLE | /* Check constraint for the update and insert.*/ ALTER TABLE MY\_LIB.EMP\_INFO ADD CONSTRAINT MASK\_ssn\_preserve CHECK(SUBSTR(COL2\_ssn,1,7)<>'XXX-XX-') -- Allow any value other than the mask ON UPDATE VIOLATION PRESERVE COL2\_ssn -- Don't update the mask portion of the existing value ON INSERT VIOLATION SET COL2\_ssn = DEFAULT -- for insert set this to the default value. -``` - -## 6.8.2 Before trigger solution - -The actions that are described in Example 6-4 on page 108 for ON UPDATE VIOLATION and ON INSERT VIOLATION also can be handled by a before trigger, as shown in Example 6-5. - -Example 6-5 Before trigger to avoid masked data - -``` -CREATE TRIGGER PREVENT\_MASK\_SSN BEFORE INSERT OR UPDATE ON MY\_LIB.EMP\_INFO REFERENCING NEW ROW AS N OLD ROW AS O FOR EACH ROW MODE DB2ROW SECURED WHEN(SUBSTR(N.COL2\_ssn,1,7) = 'XXX-XX-') BEGIN IF INSERTING THEN SET N.COL2\_ssn = DEFAULT; ELSEIF UPDATING THEN SET N.COL2\_ssn = O.COL2\_ssn; END IF; END -``` - -## 6.9 Triggers and functions (SECURED) - -There are some considerations that must be considered when there are triggers and functions on tables that have RCAC enabled. The purpose of SECURE for triggers and functions is so that a user who is allowed to create a trigger or function is not necessarily able to make it SECURE themselves. This prevents the trigger/function developer from adding code that skims off data that they are not allowed to see. - -## 6.9.1 Triggers - -Triggers have access to the data in rows outside of the row permission or column masking. An after trigger has access to the new row image after the permission has allowed the update or insert to occur. Therefore, the triggers can potentially change the insert or update image value so that it violates the permission. - -Any triggers that are defined on a table must be created with an attribute that designates that it is SECURED when RCAC definitions are created or altered for that table, as shown in Example 6-6. The same applies to a view that has an instead of trigger. That trigger must be secure at the point RCAC is enabled for any of the underlying tables the view is over. - -Example 6-6 Trigger SECURED - -``` -/* Trigger created with the SECURED attribute */ CREATE TRIGGER PREVENT\_MASK\_SSN BEFORE INSERT OR UPDATE ON MY\_LIB.EMP\_INFO REFERENCING NEW ROW AS N OLD ROW AS O FOR EACH ROW MODE DB2ROW SECURED WHEN(SUBSTR(N.COL2\_ssn,1,7) = 'XXX-XX-') BEGIN IF INSERTING THEN SET N.COL2\_ssn = DEFAULT; ELSEIF UPDATING THEN SET N.COL2\_ssn = O.COL2\_ssn; END IF; END -``` - -## 6.9.2 Functions - -Within a CREATE PERMISSION or CREATE MASK , a function can be called. Because that UDF has access to the data before the RCAC rules are applied, the SECURE attribute is required on that function, as shown in Example 6-7. - -``` -Example 6-7 Specifying SECURED on a function CREATE PERMISSION SCHEMA.PERM1 ON SCHEMA.TABLE1 FOR ROWS WHERE MY\_UDF(CURRENT\_USER,COLUMN1) = 1 ENFORCED FOR ALL ACCESS ENABLE; CREATE FUNCTION MY\_UDF (INP1 CHAR(32), INP2 INTEGER) Returns INTEGER LANGUAGE SQL CONTAINS SQL SECURED -``` - -The SECURED attribute of MY\_UDF signifies that the function is considered secure for RCAC. If a function is called from an SQL statement, and references a column in a table that has RCAC, it must be declared as secure. In that case, if the secure function calls other functions, they are not validated to confirm whether they are secure. - -Consider the following examples: - -- GLYPH Table1 has RCAC defined and enabled. SELECT MY\_UDF2(Column2) from schema.table1. -- MY\_UDF2 must be created with the SECURED attribute. If MY\_UDF2 invokes MY\_UDF3, there is no checking to ensure that it is also created with SECURED. -- NOT SECURED is the default on the create function unless SECURED is explicitly selected. - -This same rule applies for any function that might be invoked with a masked column specified as an argument. - -- GLYPH Table2 column SSN has a column mask that is defined on it. -- SELECT MY\_UDF4(SSN) from table2. Because SSN has a column mask that is defined, MY\_UDF4 must be created with the SECURED attribute. - -## 6.10 RCAC is only one part of the solution - -When designing and implementing RCAC row permissions, special attention should be given to the effectiveness and limitations of controlling data access. Data can be housed in objects other than tables or physical files. The role and responsibility of the database user, for example, the database engineer, must be reconciled with their respective authority and access privileges. - -Figure 6-25 illustrates that object level security is the first check and that RCAC permissions provide control only on tables and physical files. - -Figure 6-25 Object-level security and RCAC permissions - - - -To get access to the table and the rows, the user must pass the object level authority test and the RCAC permission test. - -The IBM i journal captures the transactional data and places an image of the row in the journal receiver. If the user has access to the journal receiver, the row image can be viewed if the user has authority to the journal receiver. - -Although the SQL Plan Cache data, the SQL Plan Cache Snapshot data, and the SQL Performance Monitor data do not reveal the results of queries, they can show the literal values that are passed along with the SQL statements. - -The ability to monitor, analyze, debug, and tune data-centric applications effectively and efficiently requires some understanding of the underlying data, or at least the attributes of the data. The organization must be willing to reconcile the conflicting requirements of "restricting access to data", and "needing access to data". - - - -Chapter 7. - -7 - -## Row and Column Access Control management - -After Row and Column Access Control (RCAC) definitions are defined and activated in a database, your management processes must be adjusted to accommodate these new security controls. This chapter highlights some of the changes that should be considered. - -The following topics are covered in this chapter: - -- GLYPH Managing row permissions and column masks -- GLYPH Managing tables with row permissions and column masks -- GLYPH Monitoring and auditing function usage - -## 7.1 Managing row permissions and column masks - -This section focuses on the management of the RCAC row permissions and column masks. - -## 7.1.1 Source management - -The SQL statements that are used to define row permissions and column masks should be managed with a change management process. Ideally, you already are using a change management process for your database definitions, and that same process can be extended to cover your RCAC definitions. - -If you are using SQL DDL to define your DB2 tables, then you have the option of adding the RCAC definitions to the same source file as the table definition. The benefit of this approach is that it keeps all DDL that is related to a table in a single source file. The downside is that if you must re-create only the RCAC definitions and leave the table unchanged, then you must identify and extract only the RCAC definitions from the source file. There are situations where the row permissions and column masks must be changed or re-created without changing the definition of the associated table. - -## 7.1.2 Modifying definitions - -After RCAC is activated for a table, the row permission and column mask definitions can be re-created to change the data access behavior for that table. Usage of the OR REPLACE clause on the CREATE MASK and CREATE PERMISSION SQL statements simplifies the re-creation process by folding in the deletion of the existing RCAC definition. - -This capability makes it easy to change your RCAC definitions as you test the controls with your applications and identify tweaks that must be made to your RCAC implementation. However, re-creation of RCAC definitions does require an exclusive lock to be acquired on the table during the process. - -## 7.1.3 Turning on and off - -As described in 3.1.2, "Enabling and activating RCAC" on page 16, the SQL ALTER statement can turn on and off row permissions and column masks. The ALTER MASK and A LTER PERMISSION statements allow an individual row permission or column mask to be turned off with the DISABLE option and back on with the ENABLE option. The ALTER TABLE statement can deactivate enforcement of all the row permissions and column masks for a single table. - -Important: Although these capabilities make it easy to temporarily turn off RCAC security so that you can make environment or application changes, these processes require an exclusive lock to be obtained on a table. Therefore, this activity must be planned carefully to avoid disruptions and outages. - -## 7.1.4 Regenerating - -DB2 also can regenerate an existing row permission or column mask. This regenerate option can be useful with more complex RCAC definitions that reference other DB2 objects. - -For example, consider a row permission on an ACCOUNTS table (PERMISSION1\_ON\_ACCOUNTS). The ACCOUNTS table row permission references and compares columns in the CUSTOMERS table. When the definition of the CUSTOMERS table changes, DB2 does not check to determine whether the change to the CUSTOMERS table breaks the ACCOUNTS table row permission. If this table definition change does break the row permission, an error does not surface until an application tries to read rows from the ACCOUNTS table. - -Instead of waiting for an application to detect this error, the REGENERATE option can be used on the ACCOUNTS row permission. The REGENERATE option returns an error if the change in the CUSTOMERS table definition causes the row permission to be invalid. In this way, the row permission can be proactively corrected before an application discovers the error. - -## 7.2 Managing tables with row permissions and column masks - -This section examines the object management considerations after RCAC is added to a DB2 table. - -## 7.2.1 Save and restore - -Row permissions and column masks are stored in the DB2 table object itself, so they are automatically saved and restored when the DB2 table object is saved and restored. Therefore, no adjustments must be made to your database backup process to accommodate RCAC. - -Save and restore processing works fine with RCAC if the RCAC definition does not reference other DB2 objects other than the table over which they are defined. When the RCAC definition has dependencies on other DB2 objects, the restore process is much more challenging. - -For example, assume that the BANKSCHEMA library (which is the system name or short name for the schema long name of BANK\_SCHEMA) is saved and restored into a library named BANK\_TEST. Recall from the example in 7.1.4, "Regenerating" on page 114 that the row permission on the ACCOUNTS table references the CUSTOMERS table (… SELECT C.CUSTOMER\_ID FROM CUSTOMERS C …). After the restore operation, the ACCOUNTS row permission still references the CUSTOMERS table in BANK\_SCHEMA because DB2 explicitly qualifies all object references when the row permission or column mask is created. The restore processing does not change the explicit qualification from BANK\_SCHEMA to BANK\_TEST. As a result, the restored ACCOUNTS row permission now depends on DB2 objects residing in a different schema, even though it was not created that way originally. For more details, see Figure 7-1. - -Figure 7-1 Restoring tables to different schemas - - - -The only way to fix this issue is to re-create the row permission or column mask after the restore operation. Re-creation of the row permission or column mask is required only for definitions that reference other DB2 objects, but it is simpler to re-create all of the RCAC definitions instead of a subset. For example, generate the SQL using System i Navigator, clear the "Schema qualify names for objects" and select the "OR REPLACE clause", and then run the generated script. - -## 7.2.2 Table migration - -There are several IBM i CL commands, such as Move Object ( MOVOBJ ), Create Duplicate Object ( CRTDUPOBJ ), and Copy Library ( CPYLIB ), which are used to migrate a table from one library to another one. Often, this migration is done to create different versions of the table that can be used for development or testing purposes. - -The migration of a table with RCAC has the same challenges as restore processing. If the RCAC definition references other DB2 objects, then IBM i CL commands do not change the schema names that are explicitly qualified by the DB2 internal RCAC processing. - -Again, re-creating the row permission or column mask is the only way to fix the issue of references to DB2 objects in other schemas. - -## 7.3 Monitoring and auditing function usage - -While establishing proper roles for users, separating duties using function usage IDs, and defining RCAC policies allows you to implement an effective and pervasive data access control scheme. How do you monitor and audit everyone who is involved in the implementation of that scheme? The answer is to use IBM i journaling. A special journal that is called QAUDJRN, also known as the audit journal , can provide a record and audit trail of many security relevant events that occur on the system, including RCAC-related events. - -The tasks and operations of security administrators and database engineers who are collaborating can (and should) be effectively monitored and audited to ensure that the organization's data access control and governance policies are in place and enabled. For example, the Database Engineers can be involved in designing and developing functions and triggers that must be secured using the SECURE attribute. Otherwise, without properly securing functions and triggers, the RCAC controls can be bypassed. - -A new journal entry type of "AX" for journal entry code "T" (audit trail) is now used for RCAC. More information about the journaling of RCAC operations can be found in the following documents: - -- GLYPH IBM i Version 7.2 Journal Management Guide , found at: -- http://www-01.ibm.com/support/knowledgecenter/ssw\_ibm\_i\_72/rzaki/rzakiprintthis .htm?lang=en -- GLYPH IBM i Version 7.2 Security Reference Guide , found at: -- http://www-01.ibm.com/support/knowledgecenter/ssw\_ibm\_i\_72/rzarl/rzarlkickoff.h tm?lang=en - - - -Chapter 8. - -## Designing and planning for success - -Although successfully implementing Row and Column Access Control (RCAC) is based on knowledge and skills, designing and planning are fundamental aspects. This chapter describes the need for a deep understanding of the technology, and good design, proper planning, and adequate testing. - -The following topics are covered in this chapter: - -- GLYPH Implementing RCAC with good design and proper planning -- GLYPH DB2 for i Center of Excellence - -8 - -## 8.1 Implementing RCAC with good design and proper planning - -By using RCAC, the row and column data that is returned to the requester can be controlled and governed by a set of data-centric policies that are defined with SQL and implemented within DB2 for i. - -RCAC provides fine-grained access control and is complementary to IBM i object-level security. With the new RCAC feature of DB2 for i, the database engineer, in partnership with the data owner and security officer, can ensure that users have access to the data based on their level of authorization and responsibility. - -This situation also can include separation of duties, such as allowing the application developers to design and implement the solutions, but restricting them from accessing the production data based on policy. Just because someone writes and owns the program, it does not mean that they have access to all the sensitive data that their program can potentially read. - -This paper has described the following pervasive power and advantages of RCAC: - -- GLYPH Access can be controlled through simple or sophisticated logic. -- GLYPH Virtually no application changes are required. -- GLYPH The implementation of the access policy is part of the DB2 data access layer. -- GLYPH Table data is protected regardless of the interface that is used. -- GLYPH No user is inherently exempted from the access control policies. -- GLYPH Groups of users can share policies and permissions. - -A deep understanding of the technology, and proper planning, good design, adequate testing, and monitored deployment are critical for success. This includes the usage of quality assurance testing, and realistic performance and scalability exercises that serve to demonstrate that all of your requirements are being met. As part of the verification process, the usage of in-depth proofs of concepts and proofs of technology are recommended, if not essential. When RCAC is activated, the results of queries can change. Anticipating this change and realizing the effects of RCAC before going live are of the utmost importance. - -With the ever-growing value of data, and the vast and varied database technology that is available today, it is crucial to have a person or persons on staff who specialize in data-centric design, development, and deployment. This role and responsibility falls on the database engineer. With the availability of DB2 RCAC, the importance of full-time database engineering has grown. - -## 8.2 DB2 for i Center of Excellence - -To further assist you with understanding and implementing RCAC, the DB2 for i Center of Excellence team offers an RCAC education and consulting workshop. In addition to knowledge transfer, a working session allows for a review of your data access control requirements, review of the current environment, solution ideation, and high-level solution design. - -If you are interested in engaging with the DB2 for i Center of Excellence, contact Mike Cain at mcain@us.ibm.com . - - - -Appendix A. - -## Database definitions for the RCAC banking example - -This appendix provides the database definitions or DDLs to re-create the Row and Column Access Control (RCAC) scenario that is described in Chapter 4, "Implementing Row and Column Access Control: Banking example" on page 37. The script that is shown in Example A-1 is the DDL script that is used to implement this example. - -Example A-1 DDL script to implement the RCAC banking example - -``` -/* Database Definitions for RCAC Bank Scenario */ /* Schema */ CREATE SCHEMA BANK\_SCHEMA FOR SCHEMA BANKSCHEMA ; /* Global Variable */ CREATE VARIABLE BANK\_SCHEMA.CUSTOMER\_LOGIN\_ID VARCHAR( 30) ; LABEL ON VARIABLE BANK\_SCHEMA.CUSTOMER\_LOGIN\_ID IS 'Customer''s log in value passed by web application' ; /* Tables */ CREATE TABLE BANK\_SCHEMA.CUSTOMERS ( CUSTOMER\_ID FOR COLUMN CUSTO00001 INTEGER GENERATED ALWAYS AS IDENTITY ( START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE NO CYCLE NO ORDER CACHE 20 ), CUSTOMER\_NAME FOR COLUMN CUSTO00002 VARCHAR(30) CCSID 37 NOT NULL , CUSTOMER\_ADDRESS FOR COLUMN CUSTO00003 VARCHAR(30) CCSID 37 NOT NULL , CUSTOMER\_CITY FOR COLUMN CUSTO00004 VARCHAR(30) CCSID 37 NOT NULL , CUSTOMER\_STATE FOR COLUMN CUSTO00005 CHAR(2) CCSID 37 NOT NULL , CUSTOMER\_PHONE FOR COLUMN CUSTO00006 CHAR(10) CCSID 37 NOT NULL , CUSTOMER\_EMAIL FOR COLUMN CUSTO00007 VARCHAR(30) CCSID 37 NOT NULL , CUSTOMER\_TAX\_ID FOR COLUMN CUSTO00008 CHAR(11) CCSID 37 NOT NULL , CUSTOMER\_DRIVERS\_LICENSE\_NUMBER FOR COLUMN CUSTO00012 CHAR(13) CCSID 37 DEFAULT NULL , CUSTOMER\_LOGIN\_ID FOR COLUMN CUSTO00009 VARCHAR(30) CCSID 37 DEFAULT NULL , CUSTOMER\_SECURITY\_QUESTION FOR COLUMN CUSTO00010 VARCHAR(100) CCSID 37 DEFAULT NULL , -``` - -A - -``` -CUSTOMER\_SECURITY\_QUESTION\_ANSWER FOR COLUMN CUSTO00011 VARCHAR(100) CCSID 37 DEFAULT NULL , INSERT\_TIMESTAMP FOR COLUMN INSER00001 TIMESTAMP NOT NULL DEFAULT CURRENT\_TIMESTAMP IMPLICITLY HIDDEN , UPDATE\_TIMESTAMP FOR COLUMN UPDAT00001 TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , CONSTRAINT BANK\_SCHEMA.CUSTOMER\_ID\_PK PRIMARY KEY( CUSTOMER\_ID ) ) ; ALTER TABLE BANK\_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK\_SCHEMA.CUSTOMER\_LOGIN\_ID\_UK UNIQUE( CUSTOMER\_LOGIN\_ID ) ; ALTER TABLE BANK\_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK\_SCHEMA.CUSTOMER\_DRIVERS\_LICENSE\_CHECK CHECK( CUSTOMER\_DRIVERS\_LICENSE\_NUMBER <> '*************' ) ON UPDATE VIOLATION PRESERVE CUSTOMER\_DRIVERS\_LICENSE\_NUMBER ; ALTER TABLE BANK\_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK\_SCHEMA.CUSTOMER\_EMAIL\_CHECK CHECK( CUSTOMER\_EMAIL <> '****@****' ) ON UPDATE VIOLATION PRESERVE CUSTOMER\_EMAIL ; ALTER TABLE BANK\_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK\_SCHEMA.CUSTOMER\_LOGIN\_ID\_CHECK CHECK( CUSTOMER\_LOGIN\_ID <> '*****' ) ON INSERT VIOLATION SET CUSTOMER\_LOGIN\_ID = DEFAULT ON UPDATE VIOLATION PRESERVE CUSTOMER\_LOGIN\_ID ; ALTER TABLE BANK\_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK\_SCHEMA.CUSTOMER\_SECURITY\_QUESTION\_CHECK CHECK( CUSTOMER\_SECURITY\_QUESTION\_ANSWER <> '*****' ) ON INSERT VIOLATION SET CUSTOMER\_SECURITY\_QUESTION\_ANSWER = DEFAULT ON UPDATE VIOLATION PRESERVE CUSTOMER\_SECURITY\_QUESTION\_ANSWER ; ALTER TABLE BANK\_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK\_SCHEMA.CUSTOMER\_SECURITY\_QUESTION\_ANSWER CHECK( CUSTOMER\_SECURITY\_QUESTION <> '*****' ) ON INSERT VIOLATION SET CUSTOMER\_SECURITY\_QUESTION = DEFAULT ON UPDATE VIOLATION PRESERVE CUSTOMER\_SECURITY\_QUESTION ; ALTER TABLE BANK\_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK\_SCHEMA.CUSTOMER\_TAX\_ID\_CHECK CHECK( CUSTOMER\_TAX\_ID <> 'XXX-XX-XXXX' AND SUBSTR ( CUSTOMER\_TAX\_ID , 1 , 7 ) <> 'XXX-XX-' ) ON UPDATE VIOLATION PRESERVE CUSTOMER\_TAX\_ID ; CREATE TABLE BANK\_SCHEMA.ACCOUNTS ( ACCOUNT\_ID INTEGER GENERATED ALWAYS AS IDENTITY ( START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE NO CYCLE NO ORDER CACHE 20 ), CUSTOMER\_ID FOR COLUMN CUSTID INTEGER NOT NULL , ACCOUNT\_NUMBER FOR COLUMN ACCOUNTNO VARCHAR(50) CCSID 37 NOT NULL , ACCOUNT\_NAME FOR COLUMN ACCOUNTNAM CHAR(12) CCSID 37 NOT NULL , ACCOUNT\_DATE\_OPENED FOR COLUMN OPENDATE DATE DEFAULT CURRENT\_DATE , ACCOUNT\_DATE\_CLOSED FOR COLUMN CLOSEDATE DATE DEFAULT NULL , ACCOUNT\_CURRENT\_BALANCE FOR COLUMN ACCTBAL DECIMAL(11, 2) NOT NULL DEFAULT 0 , INSERT\_TIMESTAMP FOR COLUMN INSDATE TIMESTAMP NOT NULL DEFAULT CURRENT\_TIMESTAMP IMPLICITLY HIDDEN , UPDATE\_TIMESTAMP FOR COLUMN UPDDATE TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , CONSTRAINT BANK\_SCHEMA.ACCOUNT\_ID\_PK PRIMARY KEY( ACCOUNT\_ID ) ); -``` - -``` -ALTER TABLE BANK\_SCHEMA.ACCOUNTS ADD CONSTRAINT BANK\_SCHEMA.ACCOUNT\_CUSTOMER\_ID\_FK FOREIGN KEY( CUSTOMER\_ID ) REFERENCES BANK\_SCHEMA.CUSTOMERS ( CUSTO00001 ) ON DELETE RESTRICT ON UPDATE RESTRICT ; ALTER TABLE BANK\_SCHEMA.ACCOUNTS ADD CONSTRAINT BANK\_SCHEMA.ACCOUNT\_NUMBER\_CHECK CHECK( ACCOUNT\_NUMBER <> '*****' ) ON UPDATE VIOLATION PRESERVE ACCOUNT\_NUMBER ; CREATE TABLE BANK\_SCHEMA.TRANSACTIONS FOR SYSTEM NAME TRANS ( TRANSACTION\_ID FOR COLUMN TRANS00001 INTEGER GENERATED ALWAYS AS IDENTITY ( START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE NO CYCLE NO ORDER CACHE 20 ), ACCOUNT\_ID INTEGER NOT NULL , TRANSACTION\_TYPE FOR COLUMN TRANS00002 CHAR(1) CCSID 37 NOT NULL , TRANSACTION\_DATE FOR COLUMN TRANS00003 DATE NOT NULL DEFAULT CURRENT\_DATE , TRANSACTION\_TIME FOR COLUMN TRANS00004 TIME NOT NULL DEFAULT CURRENT\_TIME , TRANSACTION\_AMOUNT FOR COLUMN TRANS00005 DECIMAL(11, 2) NOT NULL , INSERT\_TIMESTAMP FOR COLUMN INSER00001 TIMESTAMP NOT NULL DEFAULT CURRENT\_TIMESTAMP IMPLICITLY HIDDEN , UPDATE\_TIMESTAMP FOR COLUMN UPDAT00001 TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , CONSTRAINT BANK\_SCHEMA.TRANSACTION\_ID\_PK PRIMARY KEY( TRANSACTION\_ID ) ) ; ALTER TABLE BANK\_SCHEMA.TRANSACTIONS ADD CONSTRAINT BANK\_SCHEMA.TRANSACTIONS\_ACCOUNT\_ID\_FK FOREIGN KEY( ACCOUNT\_ID ) REFERENCES BANK\_SCHEMA.ACCOUNTS ( ACCOUNT\_ID ) ON DELETE RESTRICT ON UPDATE RESTRICT ; /* Permissions and Masks */ CREATE PERMISSION BANK\_SCHEMA.PERMISSION1\_ON\_CUSTOMERS ON BANK\_SCHEMA.CUSTOMERS AS C FOR ROWS WHERE ( QSYS2 . VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) OR ( QSYS2 . VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'CUSTOMER' ) = 1 AND ( C . CUSTOMER\_LOGIN\_ID = BANK\_SCHEMA . CUSTOMER\_LOGIN\_ID ) ) ENFORCED FOR ALL ACCESS ENABLE ; CREATE MASK BANK\_SCHEMA.MASK\_EMAIL\_ON\_CUSTOMERS ON BANK\_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER\_EMAIL RETURN CASE WHEN QSYS2 . VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER\_EMAIL WHEN QSYS2 . VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER\_EMAIL ELSE '****@****' END ENABLE ; CREATE MASK BANK\_SCHEMA.MASK\_TAX\_ID\_ON\_CUSTOMERS ON BANK\_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER\_TAX\_ID RETURN CASE WHEN QSYS2 . VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'ADMIN' ) = 1 -``` - -``` -THEN C . CUSTOMER\_TAX\_ID WHEN QSYS2 . VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'TELLER' ) = 1 THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( C . CUSTOMER\_TAX\_ID , 8 , 4 ) ) WHEN QSYS2 . VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER\_TAX\_ID ELSE 'XXX-XX-XXXX' END ENABLE ; CREATE MASK BANK\_SCHEMA.MASK\_DRIVERS\_LICENSE\_ON\_CUSTOMERS ON BANK\_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER\_DRIVERS\_LICENSE\_NUMBER RETURN CASE WHEN QSYS2 . VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER\_DRIVERS\_LICENSE\_NUMBER WHEN QSYS2 . VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'TELLER' ) = 1 THEN C . CUSTOMER\_DRIVERS\_LICENSE\_NUMBER WHEN QSYS2 . VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER\_DRIVERS\_LICENSE\_NUMBER ELSE '*************' END ENABLE ; CREATE MASK BANK\_SCHEMA.MASK\_LOGIN\_ID\_ON\_CUSTOMERS ON BANK\_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER\_LOGIN\_ID RETURN CASE WHEN QSYS2 . VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER\_LOGIN\_ID WHEN QSYS2 . VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER\_LOGIN\_ID ELSE '*****' END ENABLE ; CREATE MASK BANK\_SCHEMA.MASK\_SECURITY\_QUESTION\_ON\_CUSTOMERS ON BANK\_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER\_SECURITY\_QUESTION RETURN CASE WHEN QSYS2 . VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER\_SECURITY\_QUESTION WHEN QSYS2 . VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER\_SECURITY\_QUESTION ELSE '*****' END ENABLE ; CREATE MASK BANK\_SCHEMA.MASK\_SECURITY\_QUESTION\_ANSWER\_ON\_CUSTOMERS ON BANK\_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER\_SECURITY\_QUESTION\_ANSWER RETURN CASE WHEN QSYS2 . VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER\_SECURITY\_QUESTION\_ANSWER WHEN QSYS2 . VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER\_SECURITY\_QUESTION\_ANSWER ELSE '*****' END ENABLE ; ALTER TABLE BANK\_SCHEMA.CUSTOMERS ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL ; -``` - -``` -CREATE PERMISSION BANK\_SCHEMA.PERMISSION1\_ON\_ACCOUNTS ON BANK\_SCHEMA.ACCOUNTS AS A FOR ROWS WHERE ( QSYS2 . VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) OR ( QSYS2 . VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'CUSTOMER' ) = 1 AND ( A . CUSTOMER\_ID IN ( SELECT C . CUSTOMER\_ID FROM BANK\_SCHEMA . CUSTOMERS C WHERE C . CUSTOMER\_LOGIN\_ID = BANK\_SCHEMA . CUSTOMER\_LOGIN\_ID ENFORCED FOR ALL ACCESS ENABLE ; CREATE MASK BANK\_SCHEMA.MASK\_ACCOUNT\_NUMBER\_ON\_ACCOUNTS ON BANK\_SCHEMA.ACCOUNTS AS A FOR COLUMN ACCOUNT\_NUMBER RETURN CASE WHEN QSYS2 . VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'ADMIN' ) = 1 THEN A . ACCOUNT\_NUMBER WHEN QSYS2 . VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'TELLER' ) = 1 THEN A . ACCOUNT\_NUMBER WHEN QSYS2 . VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'CUSTOMER' ) = 1 THEN A . ACCOUNT\_NUMBER ELSE '*****' END ENABLE ; ALTER TABLE BANK\_SCHEMA.ACCOUNTS ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL ; CREATE PERMISSION BANK\_SCHEMA.PERMISSION1\_ON\_TRANSACTIONS ON BANK\_SCHEMA.TRANSACTIONS AS T FOR ROWS WHERE ( QSYS2 . VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) OR ( QSYS2 . VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'CUSTOMER' ) = 1 AND ( T . ACCOUNT\_ID IN ( SELECT A . ACCOUNT\_ID FROM BANK\_SCHEMA . ACCOUNTS A WHERE A . CUSTOMER\_ID IN ( SELECT C . CUSTOMER\_ID FROM BANK\_SCHEMA . CUSTOMERS C WHERE C . CUSTOMER\_LOGIN\_ID = BANK\_SCHEMA . CUSTOMER\_LOGIN\_ID ENFORCED FOR ALL ACCESS ENABLE ; ALTER TABLE BANK\_SCHEMA.TRANSACTIONS ACTIVATE ROW ACCESS CONTROL ; /* END */ -``` - -## Related publications - -The publications that are listed in this section are considered suitable for a more detailed description of the topics that are covered in this paper. - -## Other publications - -These publications are relevant as further information sources: - -- GLYPH IBM DB2 for i indexing methods and strategies white paper: -- http://www.ibm.com/partnerworld/wps/servlet/ContentHandler/stg\_ast\_sys\_wp\_db2\_i \_indexing\_methods\_strategies -- GLYPH IBM i Memo to Users Version 7.2 : -- http://www-01.ibm.com/support/knowledgecenter/ssw\_ibm\_i\_72/rzahg/rzahgmtu.htm -- GLYPH IBM i Version 7.2 DB2 for i SQL Reference Guide : -- http://www-01.ibm.com/support/knowledgecenter/ssw\_ibm\_i\_72/db2/rbafzintro.htm?l ang=en -- GLYPH IBM i Version 7.2 Journal Management Guide : -- http://www-01.ibm.com/support/knowledgecenter/ssw\_ibm\_i\_72/rzaki/rzakiprintthis .htm?lang=en -- GLYPH IBM i Version 7.2 Security Reference Guide : -- http://www-01.ibm.com/support/knowledgecenter/ssw\_ibm\_i\_72/rzarl/rzarlkickoff.h tm?lang=en - -## Online resources - -These websites are relevant as further information sources: - -- GLYPH Database programming topic of the IBM i 7.2 IBM Knowledge Center: -- http://www-01.ibm.com/support/knowledgecenter/ssw\_ibm\_i\_72/rzahg/rzahgdbp.htm?l ang=en -- GLYPH Identity Theft Resource Center -- http://www.idtheftcenter.org -- GLYPH Ponemon Institute -- http://www.ponemon.org/ - -## Help from IBM - -IBM Support and downloads - -ibm.com /support - -IBM Global Services - -ibm.com /services - -Back cover - -## Row and Column Access Control Support in IBM DB2 for i - -Implement roles and separation of duties - -Leverage row permissions on the database - -Protect columns by defining column masks - -This IBM Redpaper publication provides information about the IBM i 7.2 feature of IBM DB2 for i Row and Column Access Control (RCAC). It offers a broad description of the function and advantages of controlling access to data in a comprehensive and transparent way. This publication helps you understand the capabilities of RCAC and provides examples of defining, creating, and implementing the row permissions and column masks in a relational database environment. - -This paper is intended for database engineers, data-centric application developers, and security officers who want to design and implement RCAC as a part of their data control and governance policy. A solid background in IBM i object level security, DB2 for i relational database concepts, and SQL is assumed. - - - - - -INTERNATIONAL TECHNICAL SUPPORT ORGANIZATION - -BUILDING TECHNICAL INFORMATION BASED ON PRACTICAL EXPERIENCE - -IBM Redbooks are developed by the IBM International Technical Support Organization. Experts from IBM, Customers and Partners from around the world create timely technical information based on realistic scenarios. Specific recommendations are provided to help you implement IT solutions more effectively in your environment. - -For more information: ibm.com /redbooks \ No newline at end of file diff --git a/tests/data/groundtruth/docling_v2/redp5110.pages.json b/tests/data/groundtruth/docling_v2/redp5110.pages.json deleted file mode 100644 index ddd38715..00000000 --- a/tests/data/groundtruth/docling_v2/redp5110.pages.json +++ /dev/null @@ -1 +0,0 @@ -[{"page_no": 0, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "ibm.com", "bbox": {"l": 36.900002, "t": 751.23, "r": 98.600998, "b": 765.105, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "/redbooks", "bbox": {"l": 98.580002, "t": 751.23, "r": 164.4585, "b": 765.105, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Redpaper", "bbox": {"l": 314.70001, "t": 711.50856, "r": 580.52002, "b": 773.772959, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Front cover", "bbox": {"l": 287.82001, "t": 28.54803000000004, "r": 418.83356, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Row and Column Access Control ", "bbox": {"l": 35.700001, "t": 84.58654999999987, "r": 584.64288, "b": 122.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Support in IBM DB2 for i", "bbox": {"l": 35.700001, "t": 127.60668999999996, "r": 447.66919000000007, "b": 165.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Jim Bainbridge", "bbox": {"l": 509.22, "t": 575.71201, "r": 581.34119, "b": 586.392, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Hernando Bedoya", "bbox": {"l": 497.70001, "t": 589.752, "r": 581.3736, "b": 600.43199, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Rob Bestgen", "bbox": {"l": 521.40002, "t": 603.73199, "r": 581.34003, "b": 614.4119900000001, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Mike Cain", "bbox": {"l": 534.12, "t": 617.71199, "r": 581.31598, "b": 628.39198, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Dan Cruikshank", "bbox": {"l": 505.43999999999994, "t": 631.75198, "r": 581.29077, "b": 642.4319800000001, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Jim Denton", "bbox": {"l": 527.22003, "t": 645.73198, "r": 581.29926, "b": 656.41197, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Doug Mack", "bbox": {"l": 527.64001, "t": 659.71198, "r": 581.30884, "b": 670.39197, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Tom McKinley", "bbox": {"l": 514.38, "t": 673.75197, "r": 581.38678, "b": 684.43197, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Kent Milligan", "bbox": {"l": 518.82001, "t": 687.73197, "r": 581.33759, "b": 698.411972, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Implement roles and separation ", "bbox": {"l": 36.119999, "t": 296.13828, "r": 216.00064, "b": 308.58047, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "of duties", "bbox": {"l": 36.119999, "t": 313.11838000000006, "r": 84.527145, "b": 325.56058, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Leverage", "bbox": {"l": 35.759315, "t": 350.13881999999995, "r": 80.409691, "b": 362.58102, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "row permissions on ", "bbox": {"l": 151.8503, "t": 350.13881999999995, "r": 202.45404, "b": 362.58102, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "the", "bbox": {"l": 35.759315, "t": 367.11893, "r": 50.758106, "b": 379.56112999999993, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "database", "bbox": {"l": 86.755211, "t": 367.11893, "r": 107.75352000000001, "b": 379.56112999999993, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Protect", "bbox": {"l": 36.059887, "t": 404.13937, "r": 73.020607, "b": 416.58157, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "columns by defining ", "bbox": {"l": 152.62831, "t": 404.13937, "r": 195.2753, "b": 416.58157, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "column", "bbox": {"l": 36.059887, "t": 421.11948, "r": 73.311806, "b": 433.56167999999997, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "masks", "bbox": {"l": 73.311806, "t": 421.11948, "r": 117.33681, "b": 433.56167999999997, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 36.894657135009766, "t": 749.8662109375, "r": 164.4585, "b": 765.105, "coord_origin": "TOPLEFT"}, "confidence": 0.7180292010307312, "cells": [{"id": 0, "text": "ibm.com", "bbox": {"l": 36.900002, "t": 751.23, "r": 98.600998, "b": 765.105, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "/redbooks", "bbox": {"l": 98.580002, "t": 751.23, "r": 164.4585, "b": 765.105, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "text", "bbox": {"l": 314.70001, "t": 711.50856, "r": 580.52002, "b": 773.772959, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Redpaper", "bbox": {"l": 314.70001, "t": 711.50856, "r": 580.52002, "b": 773.772959, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 287.82001, "t": 28.54803000000004, "r": 418.83356, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 3, "text": "Front cover", "bbox": {"l": 287.82001, "t": 28.54803000000004, "r": 418.83356, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "section_header", "bbox": {"l": 35.68840408325195, "t": 82.3943099975586, "r": 584.64288, "b": 166.40553283691406, "coord_origin": "TOPLEFT"}, "confidence": 0.8281131386756897, "cells": [{"id": 4, "text": "Row and Column Access Control ", "bbox": {"l": 35.700001, "t": 84.58654999999987, "r": 584.64288, "b": 122.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Support in IBM DB2 for i", "bbox": {"l": 35.700001, "t": 127.60668999999996, "r": 447.66919000000007, "b": 165.84113000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 497.0279846191406, "t": 573.8836669921875, "r": 581.8246459960938, "b": 699.171630859375, "coord_origin": "TOPLEFT"}, "confidence": 0.7621812224388123, "cells": [{"id": 6, "text": "Jim Bainbridge", "bbox": {"l": 509.22, "t": 575.71201, "r": 581.34119, "b": 586.392, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Hernando Bedoya", "bbox": {"l": 497.70001, "t": 589.752, "r": 581.3736, "b": 600.43199, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Rob Bestgen", "bbox": {"l": 521.40002, "t": 603.73199, "r": 581.34003, "b": 614.4119900000001, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Mike Cain", "bbox": {"l": 534.12, "t": 617.71199, "r": 581.31598, "b": 628.39198, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Dan Cruikshank", "bbox": {"l": 505.43999999999994, "t": 631.75198, "r": 581.29077, "b": 642.4319800000001, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Jim Denton", "bbox": {"l": 527.22003, "t": 645.73198, "r": 581.29926, "b": 656.41197, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Doug Mack", "bbox": {"l": 527.64001, "t": 659.71198, "r": 581.30884, "b": 670.39197, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Tom McKinley", "bbox": {"l": 514.38, "t": 673.75197, "r": 581.38678, "b": 684.43197, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Kent Milligan", "bbox": {"l": 518.82001, "t": 687.73197, "r": 581.33759, "b": 698.411972, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 35.0073127746582, "t": 294.7938232421875, "r": 216.00064, "b": 325.56058, "coord_origin": "TOPLEFT"}, "confidence": 0.8502883315086365, "cells": [{"id": 15, "text": "Implement roles and separation ", "bbox": {"l": 36.119999, "t": 296.13828, "r": 216.00064, "b": 308.58047, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "of duties", "bbox": {"l": 36.119999, "t": 313.11838000000006, "r": 84.527145, "b": 325.56058, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 34.56448745727539, "t": 348.9540710449219, "r": 202.45404, "b": 379.56112999999993, "coord_origin": "TOPLEFT"}, "confidence": 0.8639552593231201, "cells": [{"id": 17, "text": "Leverage", "bbox": {"l": 35.759315, "t": 350.13881999999995, "r": 80.409691, "b": 362.58102, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "row permissions on ", "bbox": {"l": 151.8503, "t": 350.13881999999995, "r": 202.45404, "b": 362.58102, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "the", "bbox": {"l": 35.759315, "t": 367.11893, "r": 50.758106, "b": 379.56112999999993, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "database", "bbox": {"l": 86.755211, "t": 367.11893, "r": 107.75352000000001, "b": 379.56112999999993, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 35.171409606933594, "t": 402.6540832519531, "r": 195.2753, "b": 433.56167999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.842113196849823, "cells": [{"id": 21, "text": "Protect", "bbox": {"l": 36.059887, "t": 404.13937, "r": 73.020607, "b": 416.58157, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "columns by defining ", "bbox": {"l": 152.62831, "t": 404.13937, "r": 195.2753, "b": 416.58157, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "column", "bbox": {"l": 36.059887, "t": 421.11948, "r": 73.311806, "b": 433.56167999999997, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "masks", "bbox": {"l": 73.311806, "t": 421.11948, "r": 117.33681, "b": 433.56167999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 513.4560546875, "t": 26.085098266601562, "r": 586.1583251953125, "b": 54.81915283203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9272357225418091, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 0, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 36.894657135009766, "t": 749.8662109375, "r": 164.4585, "b": 765.105, "coord_origin": "TOPLEFT"}, "confidence": 0.7180292010307312, "cells": [{"id": 0, "text": "ibm.com", "bbox": {"l": 36.900002, "t": 751.23, "r": 98.600998, "b": 765.105, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "/redbooks", "bbox": {"l": 98.580002, "t": 751.23, "r": 164.4585, "b": 765.105, "coord_origin": "TOPLEFT"}}]}, "text": "ibm.com /redbooks"}, {"label": "text", "id": 1, "page_no": 0, "cluster": {"id": 1, "label": "text", "bbox": {"l": 314.70001, "t": 711.50856, "r": 580.52002, "b": 773.772959, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Redpaper", "bbox": {"l": 314.70001, "t": 711.50856, "r": 580.52002, "b": 773.772959, "coord_origin": "TOPLEFT"}}]}, "text": "Redpaper"}, {"label": "text", "id": 2, "page_no": 0, "cluster": {"id": 2, "label": "text", "bbox": {"l": 287.82001, "t": 28.54803000000004, "r": 418.83356, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 3, "text": "Front cover", "bbox": {"l": 287.82001, "t": 28.54803000000004, "r": 418.83356, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}}]}, "text": "Front cover"}, {"label": "section_header", "id": 3, "page_no": 0, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 35.68840408325195, "t": 82.3943099975586, "r": 584.64288, "b": 166.40553283691406, "coord_origin": "TOPLEFT"}, "confidence": 0.8281131386756897, "cells": [{"id": 4, "text": "Row and Column Access Control ", "bbox": {"l": 35.700001, "t": 84.58654999999987, "r": 584.64288, "b": 122.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Support in IBM DB2 for i", "bbox": {"l": 35.700001, "t": 127.60668999999996, "r": 447.66919000000007, "b": 165.84113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 4, "page_no": 0, "cluster": {"id": 4, "label": "text", "bbox": {"l": 497.0279846191406, "t": 573.8836669921875, "r": 581.8246459960938, "b": 699.171630859375, "coord_origin": "TOPLEFT"}, "confidence": 0.7621812224388123, "cells": [{"id": 6, "text": "Jim Bainbridge", "bbox": {"l": 509.22, "t": 575.71201, "r": 581.34119, "b": 586.392, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Hernando Bedoya", "bbox": {"l": 497.70001, "t": 589.752, "r": 581.3736, "b": 600.43199, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Rob Bestgen", "bbox": {"l": 521.40002, "t": 603.73199, "r": 581.34003, "b": 614.4119900000001, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Mike Cain", "bbox": {"l": 534.12, "t": 617.71199, "r": 581.31598, "b": 628.39198, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Dan Cruikshank", "bbox": {"l": 505.43999999999994, "t": 631.75198, "r": 581.29077, "b": 642.4319800000001, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Jim Denton", "bbox": {"l": 527.22003, "t": 645.73198, "r": 581.29926, "b": 656.41197, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Doug Mack", "bbox": {"l": 527.64001, "t": 659.71198, "r": 581.30884, "b": 670.39197, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Tom McKinley", "bbox": {"l": 514.38, "t": 673.75197, "r": 581.38678, "b": 684.43197, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Kent Milligan", "bbox": {"l": 518.82001, "t": 687.73197, "r": 581.33759, "b": 698.411972, "coord_origin": "TOPLEFT"}}]}, "text": "Jim Bainbridge Hernando Bedoya Rob Bestgen Mike Cain Dan Cruikshank Jim Denton Doug Mack Tom McKinley Kent Milligan"}, {"label": "text", "id": 5, "page_no": 0, "cluster": {"id": 5, "label": "text", "bbox": {"l": 35.0073127746582, "t": 294.7938232421875, "r": 216.00064, "b": 325.56058, "coord_origin": "TOPLEFT"}, "confidence": 0.8502883315086365, "cells": [{"id": 15, "text": "Implement roles and separation ", "bbox": {"l": 36.119999, "t": 296.13828, "r": 216.00064, "b": 308.58047, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "of duties", "bbox": {"l": 36.119999, "t": 313.11838000000006, "r": 84.527145, "b": 325.56058, "coord_origin": "TOPLEFT"}}]}, "text": "Implement roles and separation of duties"}, {"label": "text", "id": 6, "page_no": 0, "cluster": {"id": 6, "label": "text", "bbox": {"l": 34.56448745727539, "t": 348.9540710449219, "r": 202.45404, "b": 379.56112999999993, "coord_origin": "TOPLEFT"}, "confidence": 0.8639552593231201, "cells": [{"id": 17, "text": "Leverage", "bbox": {"l": 35.759315, "t": 350.13881999999995, "r": 80.409691, "b": 362.58102, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "row permissions on ", "bbox": {"l": 151.8503, "t": 350.13881999999995, "r": 202.45404, "b": 362.58102, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "the", "bbox": {"l": 35.759315, "t": 367.11893, "r": 50.758106, "b": 379.56112999999993, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "database", "bbox": {"l": 86.755211, "t": 367.11893, "r": 107.75352000000001, "b": 379.56112999999993, "coord_origin": "TOPLEFT"}}]}, "text": "Leverage row permissions on the database"}, {"label": "text", "id": 7, "page_no": 0, "cluster": {"id": 7, "label": "text", "bbox": {"l": 35.171409606933594, "t": 402.6540832519531, "r": 195.2753, "b": 433.56167999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.842113196849823, "cells": [{"id": 21, "text": "Protect", "bbox": {"l": 36.059887, "t": 404.13937, "r": 73.020607, "b": 416.58157, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "columns by defining ", "bbox": {"l": 152.62831, "t": 404.13937, "r": 195.2753, "b": 416.58157, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "column", "bbox": {"l": 36.059887, "t": 421.11948, "r": 73.311806, "b": 433.56167999999997, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "masks", "bbox": {"l": 73.311806, "t": 421.11948, "r": 117.33681, "b": 433.56167999999997, "coord_origin": "TOPLEFT"}}]}, "text": "Protect columns by defining column masks"}, {"label": "picture", "id": 8, "page_no": 0, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 513.4560546875, "t": 26.085098266601562, "r": 586.1583251953125, "b": 54.81915283203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9272357225418091, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 1, "page_no": 0, "cluster": {"id": 1, "label": "text", "bbox": {"l": 314.70001, "t": 711.50856, "r": 580.52002, "b": 773.772959, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Redpaper", "bbox": {"l": 314.70001, "t": 711.50856, "r": 580.52002, "b": 773.772959, "coord_origin": "TOPLEFT"}}]}, "text": "Redpaper"}, {"label": "text", "id": 2, "page_no": 0, "cluster": {"id": 2, "label": "text", "bbox": {"l": 287.82001, "t": 28.54803000000004, "r": 418.83356, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 3, "text": "Front cover", "bbox": {"l": 287.82001, "t": 28.54803000000004, "r": 418.83356, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}}]}, "text": "Front cover"}, {"label": "section_header", "id": 3, "page_no": 0, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 35.68840408325195, "t": 82.3943099975586, "r": 584.64288, "b": 166.40553283691406, "coord_origin": "TOPLEFT"}, "confidence": 0.8281131386756897, "cells": [{"id": 4, "text": "Row and Column Access Control ", "bbox": {"l": 35.700001, "t": 84.58654999999987, "r": 584.64288, "b": 122.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Support in IBM DB2 for i", "bbox": {"l": 35.700001, "t": 127.60668999999996, "r": 447.66919000000007, "b": 165.84113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 4, "page_no": 0, "cluster": {"id": 4, "label": "text", "bbox": {"l": 497.0279846191406, "t": 573.8836669921875, "r": 581.8246459960938, "b": 699.171630859375, "coord_origin": "TOPLEFT"}, "confidence": 0.7621812224388123, "cells": [{"id": 6, "text": "Jim Bainbridge", "bbox": {"l": 509.22, "t": 575.71201, "r": 581.34119, "b": 586.392, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Hernando Bedoya", "bbox": {"l": 497.70001, "t": 589.752, "r": 581.3736, "b": 600.43199, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Rob Bestgen", "bbox": {"l": 521.40002, "t": 603.73199, "r": 581.34003, "b": 614.4119900000001, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Mike Cain", "bbox": {"l": 534.12, "t": 617.71199, "r": 581.31598, "b": 628.39198, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Dan Cruikshank", "bbox": {"l": 505.43999999999994, "t": 631.75198, "r": 581.29077, "b": 642.4319800000001, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Jim Denton", "bbox": {"l": 527.22003, "t": 645.73198, "r": 581.29926, "b": 656.41197, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Doug Mack", "bbox": {"l": 527.64001, "t": 659.71198, "r": 581.30884, "b": 670.39197, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Tom McKinley", "bbox": {"l": 514.38, "t": 673.75197, "r": 581.38678, "b": 684.43197, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Kent Milligan", "bbox": {"l": 518.82001, "t": 687.73197, "r": 581.33759, "b": 698.411972, "coord_origin": "TOPLEFT"}}]}, "text": "Jim Bainbridge Hernando Bedoya Rob Bestgen Mike Cain Dan Cruikshank Jim Denton Doug Mack Tom McKinley Kent Milligan"}, {"label": "text", "id": 5, "page_no": 0, "cluster": {"id": 5, "label": "text", "bbox": {"l": 35.0073127746582, "t": 294.7938232421875, "r": 216.00064, "b": 325.56058, "coord_origin": "TOPLEFT"}, "confidence": 0.8502883315086365, "cells": [{"id": 15, "text": "Implement roles and separation ", "bbox": {"l": 36.119999, "t": 296.13828, "r": 216.00064, "b": 308.58047, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "of duties", "bbox": {"l": 36.119999, "t": 313.11838000000006, "r": 84.527145, "b": 325.56058, "coord_origin": "TOPLEFT"}}]}, "text": "Implement roles and separation of duties"}, {"label": "text", "id": 6, "page_no": 0, "cluster": {"id": 6, "label": "text", "bbox": {"l": 34.56448745727539, "t": 348.9540710449219, "r": 202.45404, "b": 379.56112999999993, "coord_origin": "TOPLEFT"}, "confidence": 0.8639552593231201, "cells": [{"id": 17, "text": "Leverage", "bbox": {"l": 35.759315, "t": 350.13881999999995, "r": 80.409691, "b": 362.58102, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "row permissions on ", "bbox": {"l": 151.8503, "t": 350.13881999999995, "r": 202.45404, "b": 362.58102, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "the", "bbox": {"l": 35.759315, "t": 367.11893, "r": 50.758106, "b": 379.56112999999993, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "database", "bbox": {"l": 86.755211, "t": 367.11893, "r": 107.75352000000001, "b": 379.56112999999993, "coord_origin": "TOPLEFT"}}]}, "text": "Leverage row permissions on the database"}, {"label": "text", "id": 7, "page_no": 0, "cluster": {"id": 7, "label": "text", "bbox": {"l": 35.171409606933594, "t": 402.6540832519531, "r": 195.2753, "b": 433.56167999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.842113196849823, "cells": [{"id": 21, "text": "Protect", "bbox": {"l": 36.059887, "t": 404.13937, "r": 73.020607, "b": 416.58157, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "columns by defining ", "bbox": {"l": 152.62831, "t": 404.13937, "r": 195.2753, "b": 416.58157, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "column", "bbox": {"l": 36.059887, "t": 421.11948, "r": 73.311806, "b": 433.56167999999997, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "masks", "bbox": {"l": 73.311806, "t": 421.11948, "r": 117.33681, "b": 433.56167999999997, "coord_origin": "TOPLEFT"}}]}, "text": "Protect columns by defining column masks"}, {"label": "picture", "id": 8, "page_no": 0, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 513.4560546875, "t": 26.085098266601562, "r": 586.1583251953125, "b": 54.81915283203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9272357225418091, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 0, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 36.894657135009766, "t": 749.8662109375, "r": 164.4585, "b": 765.105, "coord_origin": "TOPLEFT"}, "confidence": 0.7180292010307312, "cells": [{"id": 0, "text": "ibm.com", "bbox": {"l": 36.900002, "t": 751.23, "r": 98.600998, "b": 765.105, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "/redbooks", "bbox": {"l": 98.580002, "t": 751.23, "r": 164.4585, "b": 765.105, "coord_origin": "TOPLEFT"}}]}, "text": "ibm.com /redbooks"}]}}, {"page_no": 1, "size": {"width": 612.0, "height": 792.0}, "cells": [], "predictions": {"layout": {"clusters": []}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [], "body": [], "headers": []}}, {"page_no": 2, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "International Technical Support Organization", "bbox": {"l": 192.0, "t": 72.16235000000006, "r": 468.15952000000004, "b": 85.09387000000004, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 ", "bbox": {"l": 192.0, "t": 104.80237, "r": 551.77112, "b": 117.73388999999997, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "for i", "bbox": {"l": 192.0, "t": 119.80291999999997, "r": 217.87138, "b": 132.73443999999995, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "November 2014", "bbox": {"l": 192.0, "t": 149.80260999999996, "r": 290.98956, "b": 162.73413000000005, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "REDP-5110-00", "bbox": {"l": 479.45998999999995, "t": 754.848721, "r": 547.26367, "b": 764.06172, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "section_header", "bbox": {"l": 192.0, "t": 70.99520874023438, "r": 468.15952000000004, "b": 85.18834686279297, "coord_origin": "TOPLEFT"}, "confidence": 0.723362147808075, "cells": [{"id": 0, "text": "International Technical Support Organization", "bbox": {"l": 192.0, "t": 72.16235000000006, "r": 468.15952000000004, "b": 85.09387000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "section_header", "bbox": {"l": 191.42994689941406, "t": 103.42080688476562, "r": 551.77112, "b": 132.73443999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.6808906197547913, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 ", "bbox": {"l": 192.0, "t": 104.80237, "r": 551.77112, "b": 117.73388999999997, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "for i", "bbox": {"l": 192.0, "t": 119.80291999999997, "r": 217.87138, "b": 132.73443999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 191.8452911376953, "t": 149.2097625732422, "r": 290.98956, "b": 162.73413000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.7205957770347595, "cells": [{"id": 3, "text": "November 2014", "bbox": {"l": 192.0, "t": 149.80260999999996, "r": 290.98956, "b": 162.73413000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "page_footer", "bbox": {"l": 479.1854553222656, "t": 753.9530639648438, "r": 547.26367, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9155997037887573, "cells": [{"id": 4, "text": "REDP-5110-00", "bbox": {"l": 479.45998999999995, "t": 754.848721, "r": 547.26367, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "picture", "bbox": {"l": 80.21302032470703, "t": 71.03994750976562, "r": 142.7141876220703, "b": 95.86432647705078, "coord_origin": "TOPLEFT"}, "confidence": 0.9511593580245972, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "section_header", "id": 0, "page_no": 2, "cluster": {"id": 0, "label": "section_header", "bbox": {"l": 192.0, "t": 70.99520874023438, "r": 468.15952000000004, "b": 85.18834686279297, "coord_origin": "TOPLEFT"}, "confidence": 0.723362147808075, "cells": [{"id": 0, "text": "International Technical Support Organization", "bbox": {"l": 192.0, "t": 72.16235000000006, "r": 468.15952000000004, "b": 85.09387000000004, "coord_origin": "TOPLEFT"}}]}, "text": "International Technical Support Organization"}, {"label": "section_header", "id": 1, "page_no": 2, "cluster": {"id": 1, "label": "section_header", "bbox": {"l": 191.42994689941406, "t": 103.42080688476562, "r": 551.77112, "b": 132.73443999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.6808906197547913, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 ", "bbox": {"l": 192.0, "t": 104.80237, "r": 551.77112, "b": 117.73388999999997, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "for i", "bbox": {"l": 192.0, "t": 119.80291999999997, "r": 217.87138, "b": 132.73443999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 2, "page_no": 2, "cluster": {"id": 2, "label": "text", "bbox": {"l": 191.8452911376953, "t": 149.2097625732422, "r": 290.98956, "b": 162.73413000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.7205957770347595, "cells": [{"id": 3, "text": "November 2014", "bbox": {"l": 192.0, "t": 149.80260999999996, "r": 290.98956, "b": 162.73413000000005, "coord_origin": "TOPLEFT"}}]}, "text": "November 2014"}, {"label": "page_footer", "id": 3, "page_no": 2, "cluster": {"id": 3, "label": "page_footer", "bbox": {"l": 479.1854553222656, "t": 753.9530639648438, "r": 547.26367, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9155997037887573, "cells": [{"id": 4, "text": "REDP-5110-00", "bbox": {"l": 479.45998999999995, "t": 754.848721, "r": 547.26367, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "REDP-5110-00"}, {"label": "picture", "id": 4, "page_no": 2, "cluster": {"id": 4, "label": "picture", "bbox": {"l": 80.21302032470703, "t": 71.03994750976562, "r": 142.7141876220703, "b": 95.86432647705078, "coord_origin": "TOPLEFT"}, "confidence": 0.9511593580245972, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "section_header", "id": 0, "page_no": 2, "cluster": {"id": 0, "label": "section_header", "bbox": {"l": 192.0, "t": 70.99520874023438, "r": 468.15952000000004, "b": 85.18834686279297, "coord_origin": "TOPLEFT"}, "confidence": 0.723362147808075, "cells": [{"id": 0, "text": "International Technical Support Organization", "bbox": {"l": 192.0, "t": 72.16235000000006, "r": 468.15952000000004, "b": 85.09387000000004, "coord_origin": "TOPLEFT"}}]}, "text": "International Technical Support Organization"}, {"label": "section_header", "id": 1, "page_no": 2, "cluster": {"id": 1, "label": "section_header", "bbox": {"l": 191.42994689941406, "t": 103.42080688476562, "r": 551.77112, "b": 132.73443999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.6808906197547913, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 ", "bbox": {"l": 192.0, "t": 104.80237, "r": 551.77112, "b": 117.73388999999997, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "for i", "bbox": {"l": 192.0, "t": 119.80291999999997, "r": 217.87138, "b": 132.73443999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 2, "page_no": 2, "cluster": {"id": 2, "label": "text", "bbox": {"l": 191.8452911376953, "t": 149.2097625732422, "r": 290.98956, "b": 162.73413000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.7205957770347595, "cells": [{"id": 3, "text": "November 2014", "bbox": {"l": 192.0, "t": 149.80260999999996, "r": 290.98956, "b": 162.73413000000005, "coord_origin": "TOPLEFT"}}]}, "text": "November 2014"}, {"label": "picture", "id": 4, "page_no": 2, "cluster": {"id": 4, "label": "picture", "bbox": {"l": 80.21302032470703, "t": 71.03994750976562, "r": 142.7141876220703, "b": 95.86432647705078, "coord_origin": "TOPLEFT"}, "confidence": 0.9511593580245972, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 3, "page_no": 2, "cluster": {"id": 3, "label": "page_footer", "bbox": {"l": 479.1854553222656, "t": 753.9530639648438, "r": 547.26367, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9155997037887573, "cells": [{"id": 4, "text": "REDP-5110-00", "bbox": {"l": 479.45998999999995, "t": 754.848721, "r": 547.26367, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "REDP-5110-00"}]}}, {"page_no": 3, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "' Copyright International Business Machines Corporation 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 738.137901, "r": 426.39117, "b": 746.462898, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Note to U.S. Government Users Restricted Rights -- Use, duplication or disclosure restricted by GSA ADP Schedule", "bbox": {"l": 64.800011, "t": 749.117897, "r": 547.20087, "b": 757.442898, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Contract with IBM Corp.", "bbox": {"l": 64.800018, "t": 760.097898, "r": 160.03624, "b": 768.422899, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "First Edition (November 2014)", "bbox": {"l": 64.800003, "t": 686.50861, "r": 206.09755, "b": 695.721619, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "This edition applies to Version 7, Release 2 of IBM i (product number 5770-SS1).", "bbox": {"l": 64.800003, "t": 708.528183, "r": 422.24246, "b": 717.741188, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Note: ", "bbox": {"l": 70.800003, "t": 89.50867000000005, "r": 99.061501, "b": 98.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Before using this information and the product it supports, read the information in \u201cNotices\u201d on ", "bbox": {"l": 99.12027, "t": 89.50867000000005, "r": 511.22507, "b": 98.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "page vii.", "bbox": {"l": 70.800003, "t": 101.50847999999996, "r": 107.73766, "b": 110.72149999999999, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.55229949951172, "t": 737.2064208984375, "r": 426.39117, "b": 746.8391723632812, "coord_origin": "TOPLEFT"}, "confidence": 0.6578707098960876, "cells": [{"id": 0, "text": "' Copyright International Business Machines Corporation 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 738.137901, "r": 426.39117, "b": 746.462898, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "text", "bbox": {"l": 64.10758972167969, "t": 747.6624755859375, "r": 547.20087, "b": 768.422899, "coord_origin": "TOPLEFT"}, "confidence": 0.739277184009552, "cells": [{"id": 1, "text": "Note to U.S. Government Users Restricted Rights -- Use, duplication or disclosure restricted by GSA ADP Schedule", "bbox": {"l": 64.800011, "t": 749.117897, "r": 547.20087, "b": 757.442898, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Contract with IBM Corp.", "bbox": {"l": 64.800018, "t": 760.097898, "r": 160.03624, "b": 768.422899, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.49017333984375, "t": 685.248046875, "r": 206.09755, "b": 695.7449340820312, "coord_origin": "TOPLEFT"}, "confidence": 0.7352388501167297, "cells": [{"id": 3, "text": "First Edition (November 2014)", "bbox": {"l": 64.800003, "t": 686.50861, "r": 206.09755, "b": 695.721619, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 63.900901794433594, "t": 707.9268798828125, "r": 422.24246, "b": 718.252685546875, "coord_origin": "TOPLEFT"}, "confidence": 0.8905011415481567, "cells": [{"id": 4, "text": "This edition applies to Version 7, Release 2 of IBM i (product number 5770-SS1).", "bbox": {"l": 64.800003, "t": 708.528183, "r": 422.24246, "b": 717.741188, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 70.31981658935547, "t": 88.49734497070312, "r": 511.22507, "b": 111.23179626464844, "coord_origin": "TOPLEFT"}, "confidence": 0.9383615851402283, "cells": [{"id": 5, "text": "Note: ", "bbox": {"l": 70.800003, "t": 89.50867000000005, "r": 99.061501, "b": 98.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Before using this information and the product it supports, read the information in \u201cNotices\u201d on ", "bbox": {"l": 99.12027, "t": 89.50867000000005, "r": 511.22507, "b": 98.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "page vii.", "bbox": {"l": 70.800003, "t": 101.50847999999996, "r": 107.73766, "b": 110.72149999999999, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 3, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.55229949951172, "t": 737.2064208984375, "r": 426.39117, "b": 746.8391723632812, "coord_origin": "TOPLEFT"}, "confidence": 0.6578707098960876, "cells": [{"id": 0, "text": "' Copyright International Business Machines Corporation 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 738.137901, "r": 426.39117, "b": 746.462898, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright International Business Machines Corporation 2014. All rights reserved."}, {"label": "text", "id": 1, "page_no": 3, "cluster": {"id": 1, "label": "text", "bbox": {"l": 64.10758972167969, "t": 747.6624755859375, "r": 547.20087, "b": 768.422899, "coord_origin": "TOPLEFT"}, "confidence": 0.739277184009552, "cells": [{"id": 1, "text": "Note to U.S. Government Users Restricted Rights -- Use, duplication or disclosure restricted by GSA ADP Schedule", "bbox": {"l": 64.800011, "t": 749.117897, "r": 547.20087, "b": 757.442898, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Contract with IBM Corp.", "bbox": {"l": 64.800018, "t": 760.097898, "r": 160.03624, "b": 768.422899, "coord_origin": "TOPLEFT"}}]}, "text": "Note to U.S. Government Users Restricted Rights -- Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp."}, {"label": "section_header", "id": 2, "page_no": 3, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.49017333984375, "t": 685.248046875, "r": 206.09755, "b": 695.7449340820312, "coord_origin": "TOPLEFT"}, "confidence": 0.7352388501167297, "cells": [{"id": 3, "text": "First Edition (November 2014)", "bbox": {"l": 64.800003, "t": 686.50861, "r": 206.09755, "b": 695.721619, "coord_origin": "TOPLEFT"}}]}, "text": "First Edition (November 2014)"}, {"label": "text", "id": 3, "page_no": 3, "cluster": {"id": 3, "label": "text", "bbox": {"l": 63.900901794433594, "t": 707.9268798828125, "r": 422.24246, "b": 718.252685546875, "coord_origin": "TOPLEFT"}, "confidence": 0.8905011415481567, "cells": [{"id": 4, "text": "This edition applies to Version 7, Release 2 of IBM i (product number 5770-SS1).", "bbox": {"l": 64.800003, "t": 708.528183, "r": 422.24246, "b": 717.741188, "coord_origin": "TOPLEFT"}}]}, "text": "This edition applies to Version 7, Release 2 of IBM i (product number 5770-SS1)."}, {"label": "text", "id": 4, "page_no": 3, "cluster": {"id": 4, "label": "text", "bbox": {"l": 70.31981658935547, "t": 88.49734497070312, "r": 511.22507, "b": 111.23179626464844, "coord_origin": "TOPLEFT"}, "confidence": 0.9383615851402283, "cells": [{"id": 5, "text": "Note: ", "bbox": {"l": 70.800003, "t": 89.50867000000005, "r": 99.061501, "b": 98.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Before using this information and the product it supports, read the information in \u201cNotices\u201d on ", "bbox": {"l": 99.12027, "t": 89.50867000000005, "r": 511.22507, "b": 98.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "page vii.", "bbox": {"l": 70.800003, "t": 101.50847999999996, "r": 107.73766, "b": 110.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Note: Before using this information and the product it supports, read the information in \u201cNotices\u201d on page vii."}], "body": [{"label": "text", "id": 1, "page_no": 3, "cluster": {"id": 1, "label": "text", "bbox": {"l": 64.10758972167969, "t": 747.6624755859375, "r": 547.20087, "b": 768.422899, "coord_origin": "TOPLEFT"}, "confidence": 0.739277184009552, "cells": [{"id": 1, "text": "Note to U.S. Government Users Restricted Rights -- Use, duplication or disclosure restricted by GSA ADP Schedule", "bbox": {"l": 64.800011, "t": 749.117897, "r": 547.20087, "b": 757.442898, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Contract with IBM Corp.", "bbox": {"l": 64.800018, "t": 760.097898, "r": 160.03624, "b": 768.422899, "coord_origin": "TOPLEFT"}}]}, "text": "Note to U.S. Government Users Restricted Rights -- Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp."}, {"label": "section_header", "id": 2, "page_no": 3, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.49017333984375, "t": 685.248046875, "r": 206.09755, "b": 695.7449340820312, "coord_origin": "TOPLEFT"}, "confidence": 0.7352388501167297, "cells": [{"id": 3, "text": "First Edition (November 2014)", "bbox": {"l": 64.800003, "t": 686.50861, "r": 206.09755, "b": 695.721619, "coord_origin": "TOPLEFT"}}]}, "text": "First Edition (November 2014)"}, {"label": "text", "id": 3, "page_no": 3, "cluster": {"id": 3, "label": "text", "bbox": {"l": 63.900901794433594, "t": 707.9268798828125, "r": 422.24246, "b": 718.252685546875, "coord_origin": "TOPLEFT"}, "confidence": 0.8905011415481567, "cells": [{"id": 4, "text": "This edition applies to Version 7, Release 2 of IBM i (product number 5770-SS1).", "bbox": {"l": 64.800003, "t": 708.528183, "r": 422.24246, "b": 717.741188, "coord_origin": "TOPLEFT"}}]}, "text": "This edition applies to Version 7, Release 2 of IBM i (product number 5770-SS1)."}, {"label": "text", "id": 4, "page_no": 3, "cluster": {"id": 4, "label": "text", "bbox": {"l": 70.31981658935547, "t": 88.49734497070312, "r": 511.22507, "b": 111.23179626464844, "coord_origin": "TOPLEFT"}, "confidence": 0.9383615851402283, "cells": [{"id": 5, "text": "Note: ", "bbox": {"l": 70.800003, "t": 89.50867000000005, "r": 99.061501, "b": 98.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Before using this information and the product it supports, read the information in \u201cNotices\u201d on ", "bbox": {"l": 99.12027, "t": 89.50867000000005, "r": 511.22507, "b": 98.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "page vii.", "bbox": {"l": 70.800003, "t": 101.50847999999996, "r": 107.73766, "b": 110.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Note: Before using this information and the product it supports, read the information in \u201cNotices\u201d on page vii."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 3, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.55229949951172, "t": 737.2064208984375, "r": 426.39117, "b": 746.8391723632812, "coord_origin": "TOPLEFT"}, "confidence": 0.6578707098960876, "cells": [{"id": 0, "text": "' Copyright International Business Machines Corporation 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 738.137901, "r": 426.39117, "b": 746.462898, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright International Business Machines Corporation 2014. All rights reserved."}]}}, {"page_no": 4, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "iii", "bbox": {"l": 538.85999, "t": 754.848721, "r": 547.25928, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Contents", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 168.73441, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Notices", "bbox": {"l": 136.8, "t": 132.64862000000005, "r": 172.89404, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii", "bbox": {"l": 175.01952, "t": 132.64862000000005, "r": 547.18982, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Trademarks", "bbox": {"l": 136.79901, "t": 145.12847999999997, "r": 189.86537, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 195.39685, "t": 145.12847999999997, "r": 530.05121, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "viii", "bbox": {"l": 535.5827, "t": 145.12847999999997, "r": 547.18286, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "DB2 for i Center of Excellence", "bbox": {"l": 136.79901, "t": 167.62811, "r": 279.39731, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix", "bbox": {"l": 280.61942, "t": 167.62811, "r": 547.1908, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Preface", "bbox": {"l": 136.79901, "t": 190.12775, "r": 172.84424, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "bbox": {"l": 175.01852, "t": 190.12775, "r": 547.18286, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "bbox": {"l": 136.79803, "t": 202.60760000000005, "r": 547.18085, "b": 211.82061999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Now you can become a published author, too!", "bbox": {"l": 136.79803, "t": 215.14721999999995, "r": 339.18292, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.71411, "t": 215.14721999999995, "r": 530.00812, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "xiii", "bbox": {"l": 535.53925, "t": 215.14721999999995, "r": 547.13879, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 136.79803, "t": 227.62707999999998, "r": 529.99506, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "xiii", "bbox": {"l": 535.5495, "t": 227.62707999999998, "r": 547.19788, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Stay connected to IBM Redbooks", "bbox": {"l": 136.79807, "t": 240.10693000000003, "r": 284.02866, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 289.54449, "t": 240.10693000000003, "r": 529.48242, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "xiv", "bbox": {"l": 534.99829, "t": 240.10693000000003, "r": 547.12115, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Chapter 1. Securing and protecting IBM DB2 data", "bbox": {"l": 136.79807, "t": 262.60657000000003, "r": 373.17566, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 375.11798, "t": 262.60657000000003, "r": 536.09589, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "1", "bbox": {"l": 541.64685, "t": 262.60657000000003, "r": 547.19781, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "1.1", "bbox": {"l": 136.79808, "t": 274.60637999999994, "r": 150.88702, "b": 283.8194, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Security fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2", "bbox": {"l": 156.5226, "t": 274.60637999999994, "r": 549.84723, "b": 283.8194, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "1.2", "bbox": {"l": 136.79807, "t": 287.14606000000003, "r": 150.62746, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Current state of IBM i security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.15923, "t": 287.14606000000003, "r": 536.12933, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "2", "bbox": {"l": 541.66113, "t": 287.14606000000003, "r": 547.19287, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "1.3", "bbox": {"l": 136.79807, "t": 299.62595, "r": 150.84943, "b": 308.83893, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "DB2 for i security controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3", "bbox": {"l": 156.46996, "t": 299.62595, "r": 549.84723, "b": 308.83893, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "1.3.1", "bbox": {"l": 151.1972, "t": 312.1058300000001, "r": 173.38289, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Existing row and column control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.92932, "t": 312.1058300000001, "r": 536.05511, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "4", "bbox": {"l": 541.6015, "t": 312.1058300000001, "r": 547.14795, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "1.3.2", "bbox": {"l": 151.1972, "t": 324.64548, "r": 173.4189, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "New controls: Row and Column Access Control. . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97432, "t": 324.64548, "r": 536.08008, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "5", "bbox": {"l": 541.6355, "t": 324.64548, "r": 547.19092, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Chapter 2. Roles and separation of duties", "bbox": {"l": 136.79704, "t": 347.14511, "r": 336.82071, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 338.99701, "t": 347.14511, "r": 536.09088, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "7", "bbox": {"l": 541.64282, "t": 347.14511, "r": 547.19476, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "2.1", "bbox": {"l": 136.79704, "t": 359.14493, "r": 150.644, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18277, "t": 359.14493, "r": 536.12714, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "8", "bbox": {"l": 541.66589, "t": 359.14493, "r": 547.20471, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "2.1.1", "bbox": {"l": 151.1972, "t": 371.62482, "r": 173.60995, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "DDM and DRDA application server access: QIBM_DB_DDMDRDA . . . . . . . . . . .", "bbox": {"l": 176.41154, "t": 371.62482, "r": 535.9527, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "8", "bbox": {"l": 541.55585, "t": 371.62482, "r": 547.15906, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "2.1.2", "bbox": {"l": 151.1972, "t": 384.10470999999995, "r": 173.41664, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Toolbox application server access: QIBM_DB_ZDA. . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97151, "t": 384.10470999999995, "r": 536.04108, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "8", "bbox": {"l": 541.59595, "t": 384.10470999999995, "r": 547.15082, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "2.1.3", "bbox": {"l": 151.1972, "t": 396.64435, "r": 173.41859, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Database Administrator function: QIBM_DB_SQLADM . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97394, "t": 396.64435, "r": 536.07489, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "9", "bbox": {"l": 541.63025, "t": 396.64435, "r": 547.18561, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "2.1.4", "bbox": {"l": 151.1972, "t": 409.12424000000004, "r": 173.38629, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "Database Information function: QIBM_DB_SYSMON", "bbox": {"l": 178.93356, "t": 409.12424000000004, "r": 411.27048, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": ". . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 416.81775, "t": 409.12424000000004, "r": 536.08411, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "9", "bbox": {"l": 541.63135, "t": 409.12424000000004, "r": 547.17865, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "2.1.5", "bbox": {"l": 151.1972, "t": 421.60413, "r": 173.44926, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "Security Administrator function: QIBM_DB_SECADM . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01228, "t": 421.60413, "r": 536.03589, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "9", "bbox": {"l": 541.59894, "t": 421.60413, "r": 547.16193, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "2.1.6", "bbox": {"l": 151.1972, "t": 434.1437700000001, "r": 173.32208, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Change Function Usage CL command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8533, "t": 434.1437700000001, "r": 530.57318, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "10", "bbox": {"l": 536.10443, "t": 434.1437700000001, "r": 547.16687, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "2.1.7", "bbox": {"l": 151.1972, "t": 446.62366, "r": 173.35822, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "Verifying function usage IDs for RCAC with the FUNCTION_USAGE view . . . . .", "bbox": {"l": 178.89848, "t": 446.62366, "r": 530.53522, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "10", "bbox": {"l": 536.0755, "t": 446.62366, "r": 547.15601, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "2.2", "bbox": {"l": 136.79704, "t": 459.10355, "r": 150.85457, "b": 468.31653, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "Separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10", "bbox": {"l": 156.47758, "t": 459.10355, "r": 547.25659, "b": 468.31653, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Chapter 3. Row and Column Access Control", "bbox": {"l": 136.79703, "t": 481.60318, "r": 348.68503, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 350.09741, "t": 481.60318, "r": 530.53961, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "13", "bbox": {"l": 536.09167, "t": 481.60318, "r": 547.1958, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "3.1", "bbox": {"l": 136.79703, "t": 493.603, "r": 150.70105, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "Explanation of RCAC and the concept of access control . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26266, "t": 493.603, "r": 530.4809, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "14", "bbox": {"l": 536.04248, "t": 493.603, "r": 547.16571, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "3.1.1", "bbox": {"l": 151.19719, "t": 506.14264, "r": 173.35429, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "Row permission and column mask definitions", "bbox": {"l": 178.89357, "t": 506.14264, "r": 378.20786, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 383.74713, "t": 506.14264, "r": 530.5379, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "14", "bbox": {"l": 536.07721, "t": 506.14264, "r": 547.15576, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "3.1.2", "bbox": {"l": 151.19719, "t": 518.62253, "r": 173.44292, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "Enabling and activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00435, "t": 518.62253, "r": 530.43475, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "16", "bbox": {"l": 535.99622, "t": 518.62253, "r": 547.11908, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "3.2", "bbox": {"l": 136.79703, "t": 531.1621700000001, "r": 150.64432, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "Special registers and built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18323, "t": 531.1621700000001, "r": 530.52808, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "18", "bbox": {"l": 536.06702, "t": 531.1621700000001, "r": 547.14484, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "3.2.1", "bbox": {"l": 151.19719, "t": 543.64204, "r": 173.41321, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "Special registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.96722, "t": 543.64204, "r": 530.49786, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "18", "bbox": {"l": 536.05188, "t": 543.64204, "r": 547.15991, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 86, "text": "3.2.2", "bbox": {"l": 151.19719, "t": 556.12192, "r": 173.35269, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 87, "text": "Built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89156, "t": 556.12192, "r": 530.56024, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 88, "text": "19", "bbox": {"l": 536.09912, "t": 556.12192, "r": 547.17688, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 89, "text": "3.3", "bbox": {"l": 136.79703, "t": 568.66156, "r": 150.62514, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 90, "text": "VERIFY_GROUP_FOR_USER function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.15639, "t": 568.66156, "r": 530.53027, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 91, "text": "20", "bbox": {"l": 536.06152, "t": 568.66156, "r": 547.12402, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 92, "text": "3.4", "bbox": {"l": 136.79703, "t": 581.14143, "r": 150.63004, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 93, "text": "Establishing and controlling accessibility by using the RCAC rule text . . . . . . . . . . . . .", "bbox": {"l": 156.16325, "t": 581.14143, "r": 530.62994, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 94, "text": "21", "bbox": {"l": 536.16315, "t": 581.14143, "r": 547.22955, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 95, "text": "3.5", "bbox": {"l": 136.79701, "t": 593.62131, "r": 150.64413, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 96, "text": "SELECT, INSERT, and UPDATE behavior with RCAC", "bbox": {"l": 156.18298, "t": 593.62131, "r": 394.7818, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 97, "text": ". . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 400.32065, "t": 593.62131, "r": 530.48358, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 98, "text": "22", "bbox": {"l": 536.0224, "t": 593.62131, "r": 547.1001, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 99, "text": "3.6", "bbox": {"l": 136.79701, "t": 606.16095, "r": 150.6642, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 100, "text": "Human resources example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.21107, "t": 606.16095, "r": 530.56512, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 101, "text": "22", "bbox": {"l": 536.112, "t": 606.16095, "r": 547.20575, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 102, "text": "3.6.1", "bbox": {"l": 151.19717, "t": 618.64082, "r": 173.41692, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 103, "text": "Assigning the QIBM_DB_SECADM function ID to the consultants. . . . . . . . . . . .", "bbox": {"l": 178.97185, "t": 618.64082, "r": 530.49139, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 104, "text": "23", "bbox": {"l": 536.04633, "t": 618.64082, "r": 547.15619, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 105, "text": "3.6.2", "bbox": {"l": 151.19717, "t": 631.1206999999999, "r": 173.32271, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 106, "text": "Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8541, "t": 631.1206999999999, "r": 530.56458, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 107, "text": "23", "bbox": {"l": 536.09601, "t": 631.1206999999999, "r": 547.15875, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 108, "text": "3.6.3", "bbox": {"l": 151.19717, "t": 643.66034, "r": 173.32227, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 109, "text": "Demonstrating data access without RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85353, "t": 643.66034, "r": 530.55695, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 110, "text": "24", "bbox": {"l": 536.0882, "t": 643.66034, "r": 547.15076, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 111, "text": "3.6.4", "bbox": {"l": 151.19717, "t": 656.14021, "r": 173.35289, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 112, "text": "Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89182, "t": 656.14021, "r": 530.53412, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 113, "text": "25", "bbox": {"l": 536.073, "t": 656.14021, "r": 547.15088, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 114, "text": "3.6.5", "bbox": {"l": 151.19717, "t": 668.62009, "r": 173.35289, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 115, "text": "Defining and creating column masks", "bbox": {"l": 178.89182, "t": 668.62009, "r": 339.45105, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 116, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.98996, "t": 668.62009, "r": 530.54413, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 117, "text": "26", "bbox": {"l": 536.08301, "t": 668.62009, "r": 547.16089, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 118, "text": "3.6.6", "bbox": {"l": 151.19717, "t": 681.15973, "r": 173.38359, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 119, "text": "Activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.93019, "t": 681.15973, "r": 530.54102, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 120, "text": "28", "bbox": {"l": 536.08765, "t": 681.15973, "r": 547.18085, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 121, "text": "3.6.7", "bbox": {"l": 151.19717, "t": 693.63961, "r": 173.32332, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 122, "text": "Demonstrating data access with RCAC", "bbox": {"l": 178.85486, "t": 693.63961, "r": 350.80011, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 123, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 356.33163, "t": 693.63961, "r": 530.57507, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 124, "text": "29", "bbox": {"l": 536.10663, "t": 693.63961, "r": 547.16968, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 125, "text": "3.6.8", "bbox": {"l": 151.19717, "t": 706.119492, "r": 173.44592, "b": 715.332497, "coord_origin": "TOPLEFT"}}, {"id": 126, "text": "Demonstrating data access with a view and RCAC . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00812, "t": 706.119492, "r": 530.43628, "b": 715.332497, "coord_origin": "TOPLEFT"}}, {"id": 127, "text": "32", "bbox": {"l": 535.99847, "t": 706.119492, "r": 547.12286, "b": 715.332497, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.751060485839844, "t": 754.6969604492188, "r": 257.24335, "b": 764.1015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9473134875297546, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 538.3257446289062, "t": 754.0830688476562, "r": 547.25928, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.892595112323761, "cells": [{"id": 1, "text": "iii", "bbox": {"l": 538.85999, "t": 754.848721, "r": 547.25928, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.6857681274414, "t": 73.01808166503906, "r": 168.73441, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9508246779441833, "cells": [{"id": 2, "text": "Contents", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 168.73441, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "table", "bbox": {"l": 136.15103149414062, "t": 132.03030395507812, "r": 549.84723, "b": 715.6527709960938, "coord_origin": "TOPLEFT"}, "confidence": 0.9803490042686462, "cells": [{"id": 3, "text": "Notices", "bbox": {"l": 136.8, "t": 132.64862000000005, "r": 172.89404, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii", "bbox": {"l": 175.01952, "t": 132.64862000000005, "r": 547.18982, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Trademarks", "bbox": {"l": 136.79901, "t": 145.12847999999997, "r": 189.86537, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 195.39685, "t": 145.12847999999997, "r": 530.05121, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "viii", "bbox": {"l": 535.5827, "t": 145.12847999999997, "r": 547.18286, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "DB2 for i Center of Excellence", "bbox": {"l": 136.79901, "t": 167.62811, "r": 279.39731, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix", "bbox": {"l": 280.61942, "t": 167.62811, "r": 547.1908, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Preface", "bbox": {"l": 136.79901, "t": 190.12775, "r": 172.84424, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "bbox": {"l": 175.01852, "t": 190.12775, "r": 547.18286, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "bbox": {"l": 136.79803, "t": 202.60760000000005, "r": 547.18085, "b": 211.82061999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Now you can become a published author, too!", "bbox": {"l": 136.79803, "t": 215.14721999999995, "r": 339.18292, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.71411, "t": 215.14721999999995, "r": 530.00812, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "xiii", "bbox": {"l": 535.53925, "t": 215.14721999999995, "r": 547.13879, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 136.79803, "t": 227.62707999999998, "r": 529.99506, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "xiii", "bbox": {"l": 535.5495, "t": 227.62707999999998, "r": 547.19788, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Stay connected to IBM Redbooks", "bbox": {"l": 136.79807, "t": 240.10693000000003, "r": 284.02866, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 289.54449, "t": 240.10693000000003, "r": 529.48242, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "xiv", "bbox": {"l": 534.99829, "t": 240.10693000000003, "r": 547.12115, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Chapter 1. Securing and protecting IBM DB2 data", "bbox": {"l": 136.79807, "t": 262.60657000000003, "r": 373.17566, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 375.11798, "t": 262.60657000000003, "r": 536.09589, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "1", "bbox": {"l": 541.64685, "t": 262.60657000000003, "r": 547.19781, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "1.1", "bbox": {"l": 136.79808, "t": 274.60637999999994, "r": 150.88702, "b": 283.8194, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Security fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2", "bbox": {"l": 156.5226, "t": 274.60637999999994, "r": 549.84723, "b": 283.8194, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "1.2", "bbox": {"l": 136.79807, "t": 287.14606000000003, "r": 150.62746, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Current state of IBM i security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.15923, "t": 287.14606000000003, "r": 536.12933, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "2", "bbox": {"l": 541.66113, "t": 287.14606000000003, "r": 547.19287, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "1.3", "bbox": {"l": 136.79807, "t": 299.62595, "r": 150.84943, "b": 308.83893, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "DB2 for i security controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3", "bbox": {"l": 156.46996, "t": 299.62595, "r": 549.84723, "b": 308.83893, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "1.3.1", "bbox": {"l": 151.1972, "t": 312.1058300000001, "r": 173.38289, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Existing row and column control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.92932, "t": 312.1058300000001, "r": 536.05511, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "4", "bbox": {"l": 541.6015, "t": 312.1058300000001, "r": 547.14795, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "1.3.2", "bbox": {"l": 151.1972, "t": 324.64548, "r": 173.4189, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "New controls: Row and Column Access Control. . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97432, "t": 324.64548, "r": 536.08008, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "5", "bbox": {"l": 541.6355, "t": 324.64548, "r": 547.19092, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Chapter 2. Roles and separation of duties", "bbox": {"l": 136.79704, "t": 347.14511, "r": 336.82071, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 338.99701, "t": 347.14511, "r": 536.09088, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "7", "bbox": {"l": 541.64282, "t": 347.14511, "r": 547.19476, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "2.1", "bbox": {"l": 136.79704, "t": 359.14493, "r": 150.644, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18277, "t": 359.14493, "r": 536.12714, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "8", "bbox": {"l": 541.66589, "t": 359.14493, "r": 547.20471, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "2.1.1", "bbox": {"l": 151.1972, "t": 371.62482, "r": 173.60995, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "DDM and DRDA application server access: QIBM_DB_DDMDRDA . . . . . . . . . . .", "bbox": {"l": 176.41154, "t": 371.62482, "r": 535.9527, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "8", "bbox": {"l": 541.55585, "t": 371.62482, "r": 547.15906, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "2.1.2", "bbox": {"l": 151.1972, "t": 384.10470999999995, "r": 173.41664, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Toolbox application server access: QIBM_DB_ZDA. . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97151, "t": 384.10470999999995, "r": 536.04108, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "8", "bbox": {"l": 541.59595, "t": 384.10470999999995, "r": 547.15082, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "2.1.3", "bbox": {"l": 151.1972, "t": 396.64435, "r": 173.41859, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Database Administrator function: QIBM_DB_SQLADM . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97394, "t": 396.64435, "r": 536.07489, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "9", "bbox": {"l": 541.63025, "t": 396.64435, "r": 547.18561, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "2.1.4", "bbox": {"l": 151.1972, "t": 409.12424000000004, "r": 173.38629, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "Database Information function: QIBM_DB_SYSMON", "bbox": {"l": 178.93356, "t": 409.12424000000004, "r": 411.27048, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": ". . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 416.81775, "t": 409.12424000000004, "r": 536.08411, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "9", "bbox": {"l": 541.63135, "t": 409.12424000000004, "r": 547.17865, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "2.1.5", "bbox": {"l": 151.1972, "t": 421.60413, "r": 173.44926, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "Security Administrator function: QIBM_DB_SECADM . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01228, "t": 421.60413, "r": 536.03589, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "9", "bbox": {"l": 541.59894, "t": 421.60413, "r": 547.16193, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "2.1.6", "bbox": {"l": 151.1972, "t": 434.1437700000001, "r": 173.32208, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Change Function Usage CL command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8533, "t": 434.1437700000001, "r": 530.57318, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "10", "bbox": {"l": 536.10443, "t": 434.1437700000001, "r": 547.16687, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "2.1.7", "bbox": {"l": 151.1972, "t": 446.62366, "r": 173.35822, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "Verifying function usage IDs for RCAC with the FUNCTION_USAGE view . . . . .", "bbox": {"l": 178.89848, "t": 446.62366, "r": 530.53522, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "10", "bbox": {"l": 536.0755, "t": 446.62366, "r": 547.15601, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "2.2", "bbox": {"l": 136.79704, "t": 459.10355, "r": 150.85457, "b": 468.31653, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "Separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10", "bbox": {"l": 156.47758, "t": 459.10355, "r": 547.25659, "b": 468.31653, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Chapter 3. Row and Column Access Control", "bbox": {"l": 136.79703, "t": 481.60318, "r": 348.68503, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 350.09741, "t": 481.60318, "r": 530.53961, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "13", "bbox": {"l": 536.09167, "t": 481.60318, "r": 547.1958, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "3.1", "bbox": {"l": 136.79703, "t": 493.603, "r": 150.70105, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "Explanation of RCAC and the concept of access control . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26266, "t": 493.603, "r": 530.4809, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "14", "bbox": {"l": 536.04248, "t": 493.603, "r": 547.16571, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "3.1.1", "bbox": {"l": 151.19719, "t": 506.14264, "r": 173.35429, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "Row permission and column mask definitions", "bbox": {"l": 178.89357, "t": 506.14264, "r": 378.20786, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 383.74713, "t": 506.14264, "r": 530.5379, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "14", "bbox": {"l": 536.07721, "t": 506.14264, "r": 547.15576, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "3.1.2", "bbox": {"l": 151.19719, "t": 518.62253, "r": 173.44292, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "Enabling and activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00435, "t": 518.62253, "r": 530.43475, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "16", "bbox": {"l": 535.99622, "t": 518.62253, "r": 547.11908, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "3.2", "bbox": {"l": 136.79703, "t": 531.1621700000001, "r": 150.64432, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "Special registers and built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18323, "t": 531.1621700000001, "r": 530.52808, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "18", "bbox": {"l": 536.06702, "t": 531.1621700000001, "r": 547.14484, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "3.2.1", "bbox": {"l": 151.19719, "t": 543.64204, "r": 173.41321, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "Special registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.96722, "t": 543.64204, "r": 530.49786, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "18", "bbox": {"l": 536.05188, "t": 543.64204, "r": 547.15991, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 86, "text": "3.2.2", "bbox": {"l": 151.19719, "t": 556.12192, "r": 173.35269, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 87, "text": "Built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89156, "t": 556.12192, "r": 530.56024, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 88, "text": "19", "bbox": {"l": 536.09912, "t": 556.12192, "r": 547.17688, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 89, "text": "3.3", "bbox": {"l": 136.79703, "t": 568.66156, "r": 150.62514, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 90, "text": "VERIFY_GROUP_FOR_USER function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.15639, "t": 568.66156, "r": 530.53027, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 91, "text": "20", "bbox": {"l": 536.06152, "t": 568.66156, "r": 547.12402, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 92, "text": "3.4", "bbox": {"l": 136.79703, "t": 581.14143, "r": 150.63004, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 93, "text": "Establishing and controlling accessibility by using the RCAC rule text . . . . . . . . . . . . .", "bbox": {"l": 156.16325, "t": 581.14143, "r": 530.62994, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 94, "text": "21", "bbox": {"l": 536.16315, "t": 581.14143, "r": 547.22955, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 95, "text": "3.5", "bbox": {"l": 136.79701, "t": 593.62131, "r": 150.64413, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 96, "text": "SELECT, INSERT, and UPDATE behavior with RCAC", "bbox": {"l": 156.18298, "t": 593.62131, "r": 394.7818, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 97, "text": ". . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 400.32065, "t": 593.62131, "r": 530.48358, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 98, "text": "22", "bbox": {"l": 536.0224, "t": 593.62131, "r": 547.1001, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 99, "text": "3.6", "bbox": {"l": 136.79701, "t": 606.16095, "r": 150.6642, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 100, "text": "Human resources example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.21107, "t": 606.16095, "r": 530.56512, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 101, "text": "22", "bbox": {"l": 536.112, "t": 606.16095, "r": 547.20575, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 102, "text": "3.6.1", "bbox": {"l": 151.19717, "t": 618.64082, "r": 173.41692, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 103, "text": "Assigning the QIBM_DB_SECADM function ID to the consultants. . . . . . . . . . . .", "bbox": {"l": 178.97185, "t": 618.64082, "r": 530.49139, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 104, "text": "23", "bbox": {"l": 536.04633, "t": 618.64082, "r": 547.15619, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 105, "text": "3.6.2", "bbox": {"l": 151.19717, "t": 631.1206999999999, "r": 173.32271, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 106, "text": "Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8541, "t": 631.1206999999999, "r": 530.56458, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 107, "text": "23", "bbox": {"l": 536.09601, "t": 631.1206999999999, "r": 547.15875, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 108, "text": "3.6.3", "bbox": {"l": 151.19717, "t": 643.66034, "r": 173.32227, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 109, "text": "Demonstrating data access without RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85353, "t": 643.66034, "r": 530.55695, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 110, "text": "24", "bbox": {"l": 536.0882, "t": 643.66034, "r": 547.15076, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 111, "text": "3.6.4", "bbox": {"l": 151.19717, "t": 656.14021, "r": 173.35289, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 112, "text": "Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89182, "t": 656.14021, "r": 530.53412, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 113, "text": "25", "bbox": {"l": 536.073, "t": 656.14021, "r": 547.15088, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 114, "text": "3.6.5", "bbox": {"l": 151.19717, "t": 668.62009, "r": 173.35289, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 115, "text": "Defining and creating column masks", "bbox": {"l": 178.89182, "t": 668.62009, "r": 339.45105, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 116, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.98996, "t": 668.62009, "r": 530.54413, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 117, "text": "26", "bbox": {"l": 536.08301, "t": 668.62009, "r": 547.16089, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 118, "text": "3.6.6", "bbox": {"l": 151.19717, "t": 681.15973, "r": 173.38359, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 119, "text": "Activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.93019, "t": 681.15973, "r": 530.54102, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 120, "text": "28", "bbox": {"l": 536.08765, "t": 681.15973, "r": 547.18085, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 121, "text": "3.6.7", "bbox": {"l": 151.19717, "t": 693.63961, "r": 173.32332, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 122, "text": "Demonstrating data access with RCAC", "bbox": {"l": 178.85486, "t": 693.63961, "r": 350.80011, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 123, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 356.33163, "t": 693.63961, "r": 530.57507, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 124, "text": "29", "bbox": {"l": 536.10663, "t": 693.63961, "r": 547.16968, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 125, "text": "3.6.8", "bbox": {"l": 151.19717, "t": 706.119492, "r": 173.44592, "b": 715.332497, "coord_origin": "TOPLEFT"}}, {"id": 126, "text": "Demonstrating data access with a view and RCAC . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00812, "t": 706.119492, "r": 530.43628, "b": 715.332497, "coord_origin": "TOPLEFT"}}, {"id": 127, "text": "32", "bbox": {"l": 535.99847, "t": 706.119492, "r": 547.12286, "b": 715.332497, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {"3": {"label": "table", "id": 3, "page_no": 4, "cluster": {"id": 3, "label": "table", "bbox": {"l": 136.15103149414062, "t": 132.03030395507812, "r": 549.84723, "b": 715.6527709960938, "coord_origin": "TOPLEFT"}, "confidence": 0.9803490042686462, "cells": [{"id": 3, "text": "Notices", "bbox": {"l": 136.8, "t": 132.64862000000005, "r": 172.89404, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii", "bbox": {"l": 175.01952, "t": 132.64862000000005, "r": 547.18982, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Trademarks", "bbox": {"l": 136.79901, "t": 145.12847999999997, "r": 189.86537, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 195.39685, "t": 145.12847999999997, "r": 530.05121, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "viii", "bbox": {"l": 535.5827, "t": 145.12847999999997, "r": 547.18286, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "DB2 for i Center of Excellence", "bbox": {"l": 136.79901, "t": 167.62811, "r": 279.39731, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix", "bbox": {"l": 280.61942, "t": 167.62811, "r": 547.1908, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Preface", "bbox": {"l": 136.79901, "t": 190.12775, "r": 172.84424, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "bbox": {"l": 175.01852, "t": 190.12775, "r": 547.18286, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "bbox": {"l": 136.79803, "t": 202.60760000000005, "r": 547.18085, "b": 211.82061999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Now you can become a published author, too!", "bbox": {"l": 136.79803, "t": 215.14721999999995, "r": 339.18292, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.71411, "t": 215.14721999999995, "r": 530.00812, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "xiii", "bbox": {"l": 535.53925, "t": 215.14721999999995, "r": 547.13879, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 136.79803, "t": 227.62707999999998, "r": 529.99506, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "xiii", "bbox": {"l": 535.5495, "t": 227.62707999999998, "r": 547.19788, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Stay connected to IBM Redbooks", "bbox": {"l": 136.79807, "t": 240.10693000000003, "r": 284.02866, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 289.54449, "t": 240.10693000000003, "r": 529.48242, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "xiv", "bbox": {"l": 534.99829, "t": 240.10693000000003, "r": 547.12115, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Chapter 1. Securing and protecting IBM DB2 data", "bbox": {"l": 136.79807, "t": 262.60657000000003, "r": 373.17566, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 375.11798, "t": 262.60657000000003, "r": 536.09589, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "1", "bbox": {"l": 541.64685, "t": 262.60657000000003, "r": 547.19781, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "1.1", "bbox": {"l": 136.79808, "t": 274.60637999999994, "r": 150.88702, "b": 283.8194, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Security fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2", "bbox": {"l": 156.5226, "t": 274.60637999999994, "r": 549.84723, "b": 283.8194, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "1.2", "bbox": {"l": 136.79807, "t": 287.14606000000003, "r": 150.62746, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Current state of IBM i security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.15923, "t": 287.14606000000003, "r": 536.12933, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "2", "bbox": {"l": 541.66113, "t": 287.14606000000003, "r": 547.19287, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "1.3", "bbox": {"l": 136.79807, "t": 299.62595, "r": 150.84943, "b": 308.83893, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "DB2 for i security controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3", "bbox": {"l": 156.46996, "t": 299.62595, "r": 549.84723, "b": 308.83893, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "1.3.1", "bbox": {"l": 151.1972, "t": 312.1058300000001, "r": 173.38289, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Existing row and column control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.92932, "t": 312.1058300000001, "r": 536.05511, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "4", "bbox": {"l": 541.6015, "t": 312.1058300000001, "r": 547.14795, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "1.3.2", "bbox": {"l": 151.1972, "t": 324.64548, "r": 173.4189, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "New controls: Row and Column Access Control. . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97432, "t": 324.64548, "r": 536.08008, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "5", "bbox": {"l": 541.6355, "t": 324.64548, "r": 547.19092, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Chapter 2. Roles and separation of duties", "bbox": {"l": 136.79704, "t": 347.14511, "r": 336.82071, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 338.99701, "t": 347.14511, "r": 536.09088, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "7", "bbox": {"l": 541.64282, "t": 347.14511, "r": 547.19476, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "2.1", "bbox": {"l": 136.79704, "t": 359.14493, "r": 150.644, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18277, "t": 359.14493, "r": 536.12714, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "8", "bbox": {"l": 541.66589, "t": 359.14493, "r": 547.20471, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "2.1.1", "bbox": {"l": 151.1972, "t": 371.62482, "r": 173.60995, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "DDM and DRDA application server access: QIBM_DB_DDMDRDA . . . . . . . . . . .", "bbox": {"l": 176.41154, "t": 371.62482, "r": 535.9527, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "8", "bbox": {"l": 541.55585, "t": 371.62482, "r": 547.15906, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "2.1.2", "bbox": {"l": 151.1972, "t": 384.10470999999995, "r": 173.41664, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Toolbox application server access: QIBM_DB_ZDA. . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97151, "t": 384.10470999999995, "r": 536.04108, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "8", "bbox": {"l": 541.59595, "t": 384.10470999999995, "r": 547.15082, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "2.1.3", "bbox": {"l": 151.1972, "t": 396.64435, "r": 173.41859, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Database Administrator function: QIBM_DB_SQLADM . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97394, "t": 396.64435, "r": 536.07489, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "9", "bbox": {"l": 541.63025, "t": 396.64435, "r": 547.18561, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "2.1.4", "bbox": {"l": 151.1972, "t": 409.12424000000004, "r": 173.38629, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "Database Information function: QIBM_DB_SYSMON", "bbox": {"l": 178.93356, "t": 409.12424000000004, "r": 411.27048, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": ". . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 416.81775, "t": 409.12424000000004, "r": 536.08411, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "9", "bbox": {"l": 541.63135, "t": 409.12424000000004, "r": 547.17865, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "2.1.5", "bbox": {"l": 151.1972, "t": 421.60413, "r": 173.44926, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "Security Administrator function: QIBM_DB_SECADM . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01228, "t": 421.60413, "r": 536.03589, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "9", "bbox": {"l": 541.59894, "t": 421.60413, "r": 547.16193, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "2.1.6", "bbox": {"l": 151.1972, "t": 434.1437700000001, "r": 173.32208, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Change Function Usage CL command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8533, "t": 434.1437700000001, "r": 530.57318, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "10", "bbox": {"l": 536.10443, "t": 434.1437700000001, "r": 547.16687, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "2.1.7", "bbox": {"l": 151.1972, "t": 446.62366, "r": 173.35822, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "Verifying function usage IDs for RCAC with the FUNCTION_USAGE view . . . . .", "bbox": {"l": 178.89848, "t": 446.62366, "r": 530.53522, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "10", "bbox": {"l": 536.0755, "t": 446.62366, "r": 547.15601, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "2.2", "bbox": {"l": 136.79704, "t": 459.10355, "r": 150.85457, "b": 468.31653, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "Separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10", "bbox": {"l": 156.47758, "t": 459.10355, "r": 547.25659, "b": 468.31653, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Chapter 3. Row and Column Access Control", "bbox": {"l": 136.79703, "t": 481.60318, "r": 348.68503, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 350.09741, "t": 481.60318, "r": 530.53961, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "13", "bbox": {"l": 536.09167, "t": 481.60318, "r": 547.1958, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "3.1", "bbox": {"l": 136.79703, "t": 493.603, "r": 150.70105, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "Explanation of RCAC and the concept of access control . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26266, "t": 493.603, "r": 530.4809, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "14", "bbox": {"l": 536.04248, "t": 493.603, "r": 547.16571, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "3.1.1", "bbox": {"l": 151.19719, "t": 506.14264, "r": 173.35429, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "Row permission and column mask definitions", "bbox": {"l": 178.89357, "t": 506.14264, "r": 378.20786, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 383.74713, "t": 506.14264, "r": 530.5379, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "14", "bbox": {"l": 536.07721, "t": 506.14264, "r": 547.15576, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "3.1.2", "bbox": {"l": 151.19719, "t": 518.62253, "r": 173.44292, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "Enabling and activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00435, "t": 518.62253, "r": 530.43475, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "16", "bbox": {"l": 535.99622, "t": 518.62253, "r": 547.11908, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "3.2", "bbox": {"l": 136.79703, "t": 531.1621700000001, "r": 150.64432, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "Special registers and built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18323, "t": 531.1621700000001, "r": 530.52808, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "18", "bbox": {"l": 536.06702, "t": 531.1621700000001, "r": 547.14484, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "3.2.1", "bbox": {"l": 151.19719, "t": 543.64204, "r": 173.41321, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "Special registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.96722, "t": 543.64204, "r": 530.49786, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "18", "bbox": {"l": 536.05188, "t": 543.64204, "r": 547.15991, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 86, "text": "3.2.2", "bbox": {"l": 151.19719, "t": 556.12192, "r": 173.35269, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 87, "text": "Built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89156, "t": 556.12192, "r": 530.56024, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 88, "text": "19", "bbox": {"l": 536.09912, "t": 556.12192, "r": 547.17688, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 89, "text": "3.3", "bbox": {"l": 136.79703, "t": 568.66156, "r": 150.62514, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 90, "text": "VERIFY_GROUP_FOR_USER function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.15639, "t": 568.66156, "r": 530.53027, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 91, "text": "20", "bbox": {"l": 536.06152, "t": 568.66156, "r": 547.12402, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 92, "text": "3.4", "bbox": {"l": 136.79703, "t": 581.14143, "r": 150.63004, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 93, "text": "Establishing and controlling accessibility by using the RCAC rule text . . . . . . . . . . . . .", "bbox": {"l": 156.16325, "t": 581.14143, "r": 530.62994, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 94, "text": "21", "bbox": {"l": 536.16315, "t": 581.14143, "r": 547.22955, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 95, "text": "3.5", "bbox": {"l": 136.79701, "t": 593.62131, "r": 150.64413, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 96, "text": "SELECT, INSERT, and UPDATE behavior with RCAC", "bbox": {"l": 156.18298, "t": 593.62131, "r": 394.7818, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 97, "text": ". . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 400.32065, "t": 593.62131, "r": 530.48358, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 98, "text": "22", "bbox": {"l": 536.0224, "t": 593.62131, "r": 547.1001, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 99, "text": "3.6", "bbox": {"l": 136.79701, "t": 606.16095, "r": 150.6642, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 100, "text": "Human resources example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.21107, "t": 606.16095, "r": 530.56512, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 101, "text": "22", "bbox": {"l": 536.112, "t": 606.16095, "r": 547.20575, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 102, "text": "3.6.1", "bbox": {"l": 151.19717, "t": 618.64082, "r": 173.41692, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 103, "text": "Assigning the QIBM_DB_SECADM function ID to the consultants. . . . . . . . . . . .", "bbox": {"l": 178.97185, "t": 618.64082, "r": 530.49139, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 104, "text": "23", "bbox": {"l": 536.04633, "t": 618.64082, "r": 547.15619, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 105, "text": "3.6.2", "bbox": {"l": 151.19717, "t": 631.1206999999999, "r": 173.32271, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 106, "text": "Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8541, "t": 631.1206999999999, "r": 530.56458, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 107, "text": "23", "bbox": {"l": 536.09601, "t": 631.1206999999999, "r": 547.15875, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 108, "text": "3.6.3", "bbox": {"l": 151.19717, "t": 643.66034, "r": 173.32227, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 109, "text": "Demonstrating data access without RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85353, "t": 643.66034, "r": 530.55695, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 110, "text": "24", "bbox": {"l": 536.0882, "t": 643.66034, "r": 547.15076, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 111, "text": "3.6.4", "bbox": {"l": 151.19717, "t": 656.14021, "r": 173.35289, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 112, "text": "Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89182, "t": 656.14021, "r": 530.53412, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 113, "text": "25", "bbox": {"l": 536.073, "t": 656.14021, "r": 547.15088, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 114, "text": "3.6.5", "bbox": {"l": 151.19717, "t": 668.62009, "r": 173.35289, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 115, "text": "Defining and creating column masks", "bbox": {"l": 178.89182, "t": 668.62009, "r": 339.45105, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 116, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.98996, "t": 668.62009, "r": 530.54413, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 117, "text": "26", "bbox": {"l": 536.08301, "t": 668.62009, "r": 547.16089, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 118, "text": "3.6.6", "bbox": {"l": 151.19717, "t": 681.15973, "r": 173.38359, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 119, "text": "Activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.93019, "t": 681.15973, "r": 530.54102, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 120, "text": "28", "bbox": {"l": 536.08765, "t": 681.15973, "r": 547.18085, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 121, "text": "3.6.7", "bbox": {"l": 151.19717, "t": 693.63961, "r": 173.32332, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 122, "text": "Demonstrating data access with RCAC", "bbox": {"l": 178.85486, "t": 693.63961, "r": 350.80011, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 123, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 356.33163, "t": 693.63961, "r": 530.57507, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 124, "text": "29", "bbox": {"l": 536.10663, "t": 693.63961, "r": 547.16968, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 125, "text": "3.6.8", "bbox": {"l": 151.19717, "t": 706.119492, "r": 173.44592, "b": 715.332497, "coord_origin": "TOPLEFT"}}, {"id": 126, "text": "Demonstrating data access with a view and RCAC . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00812, "t": 706.119492, "r": 530.43628, "b": 715.332497, "coord_origin": "TOPLEFT"}}, {"id": 127, "text": "32", "bbox": {"l": 535.99847, "t": 706.119492, "r": 547.12286, "b": 715.332497, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl"], "num_rows": 43, "num_cols": 2, "table_cells": [{"bbox": {"l": 136.8, "t": 132.64862000000005, "r": 172.89404, "b": 141.86163, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Notices", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 175.01952, "t": 132.64862000000005, "r": 547.18982, "b": 141.86163, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79901, "t": 145.12847999999997, "r": 189.86537, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Trademarks", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 195.39685, "t": 145.12847999999997, "r": 547.18286, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79901, "t": 167.62811, "r": 279.39731, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "DB2 for i Center of Excellence", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 280.61942, "t": 167.62811, "r": 547.1908, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79901, "t": 190.12775, "r": 172.84424, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Preface", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 175.01852, "t": 190.12775, "r": 547.18286, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79803, "t": 202.60760000000005, "r": 547.18085, "b": 211.82061999999996, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79803, "t": 215.14721999999995, "r": 339.18292, "b": 224.36023, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Now you can become a published author, too!", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 344.71411, "t": 215.14721999999995, "r": 547.13879, "b": 224.36023, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79803, "t": 227.62707999999998, "r": 529.99506, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 535.5495, "t": 227.62707999999998, "r": 547.19788, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "xiii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79807, "t": 240.10693000000003, "r": 284.02866, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Stay connected to IBM Redbooks", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.54449, "t": 240.10693000000003, "r": 547.12115, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79807, "t": 262.60657000000003, "r": 536.09589, "b": 271.81958, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 1. Securing and protecting IBM DB2 data . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.64685, "t": 262.60657000000003, "r": 547.19781, "b": 271.81958, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "1", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79808, "t": 274.60637999999994, "r": 549.84723, "b": 283.8194, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.1 Security fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79807, "t": 287.14606000000003, "r": 536.12933, "b": 296.35904, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.2 Current state of IBM i security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.66113, "t": 287.14606000000003, "r": 547.19287, "b": 296.35904, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "2", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79807, "t": 299.62595, "r": 549.84723, "b": 308.83893, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.3 DB2 for i security controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 312.1058300000001, "r": 536.05511, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.3.1 Existing row and column control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.6015, "t": 312.1058300000001, "r": 547.14795, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "4", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 324.64548, "r": 536.08008, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.3.2 New controls: Row and Column Access Control. . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.6355, "t": 324.64548, "r": 547.19092, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "5", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79704, "t": 347.14511, "r": 536.09088, "b": 356.35809, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 2. Roles and separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.64282, "t": 347.14511, "r": 547.19476, "b": 356.35809, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "7", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79704, "t": 359.14493, "r": 536.12714, "b": 368.35791, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1 Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.66589, "t": 359.14493, "r": 547.20471, "b": 368.35791, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "8", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 371.62482, "r": 535.9527, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.1 DDM and DRDA application server access: QIBM_DB_DDMDRDA . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.55585, "t": 371.62482, "r": 547.15906, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "8", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 384.10470999999995, "r": 536.04108, "b": 393.31769, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.2 Toolbox application server access: QIBM_DB_ZDA. . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.59595, "t": 384.10470999999995, "r": 547.15082, "b": 393.31769, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "8", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 396.64435, "r": 536.07489, "b": 405.85733, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.3 Database Administrator function: QIBM_DB_SQLADM . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.63025, "t": 396.64435, "r": 547.18561, "b": 405.85733, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "9", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 409.12424000000004, "r": 411.27048, "b": 418.33722, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.4 Database Information function: QIBM_DB_SYSMON", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 416.81775, "t": 409.12424000000004, "r": 547.17865, "b": 418.33722, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . 9", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 421.60413, "r": 536.03589, "b": 430.81711, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.5 Security Administrator function: QIBM_DB_SECADM . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.59894, "t": 421.60413, "r": 547.16193, "b": 430.81711, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "9", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 434.1437700000001, "r": 530.57318, "b": 443.35675, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.6 Change Function Usage CL command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.10443, "t": 434.1437700000001, "r": 547.16687, "b": 443.35675, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 446.62366, "r": 530.53522, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 22, "end_row_offset_idx": 23, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.7 Verifying function usage IDs for RCAC with the FUNCTION_USAGE view . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0755, "t": 446.62366, "r": 547.15601, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 22, "end_row_offset_idx": 23, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79704, "t": 459.10355, "r": 547.25659, "b": 468.31653, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 23, "end_row_offset_idx": 24, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.2 Separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 481.60318, "r": 530.53961, "b": 490.81616, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 24, "end_row_offset_idx": 25, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 3. Row and Column Access Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.09167, "t": 481.60318, "r": 547.1958, "b": 490.81616, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 24, "end_row_offset_idx": 25, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "13", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 493.603, "r": 530.4809, "b": 502.81598, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 25, "end_row_offset_idx": 26, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.1 Explanation of RCAC and the concept of access control . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.04248, "t": 493.603, "r": 547.16571, "b": 502.81598, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 25, "end_row_offset_idx": 26, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "14", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19719, "t": 506.14264, "r": 378.20786, "b": 515.35562, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 26, "end_row_offset_idx": 27, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.1.1 Row permission and column mask definitions", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 383.74713, "t": 506.14264, "r": 547.15576, "b": 515.35562, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 26, "end_row_offset_idx": 27, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . 14", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19719, "t": 518.62253, "r": 530.43475, "b": 527.83551, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 27, "end_row_offset_idx": 28, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.1.2 Enabling and activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 535.99622, "t": 518.62253, "r": 547.11908, "b": 527.83551, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 27, "end_row_offset_idx": 28, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "16", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 531.1621700000001, "r": 530.52808, "b": 540.37517, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 28, "end_row_offset_idx": 29, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.2 Special registers and built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.06702, "t": 531.1621700000001, "r": 547.14484, "b": 540.37517, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 28, "end_row_offset_idx": 29, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "18", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19719, "t": 543.64204, "r": 530.49786, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 29, "end_row_offset_idx": 30, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.2.1 Special registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.05188, "t": 543.64204, "r": 547.15991, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 29, "end_row_offset_idx": 30, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "18", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19719, "t": 556.12192, "r": 530.56024, "b": 565.33492, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 30, "end_row_offset_idx": 31, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.2.2 Built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.09912, "t": 556.12192, "r": 547.17688, "b": 565.33492, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 30, "end_row_offset_idx": 31, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "19", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 568.66156, "r": 530.53027, "b": 577.87456, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 31, "end_row_offset_idx": 32, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.3 VERIFY_GROUP_FOR_USER function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.06152, "t": 568.66156, "r": 547.12402, "b": 577.87456, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 31, "end_row_offset_idx": 32, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "20", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 581.14143, "r": 530.62994, "b": 590.35443, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 32, "end_row_offset_idx": 33, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.4 Establishing and controlling accessibility by using the RCAC rule text . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.16315, "t": 581.14143, "r": 547.22955, "b": 590.35443, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 32, "end_row_offset_idx": 33, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "21", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79701, "t": 593.62131, "r": 394.7818, "b": 602.8343, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 34, "end_row_offset_idx": 35, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.5 SELECT, INSERT, and UPDATE behavior with RCAC", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 400.32065, "t": 593.62131, "r": 547.1001, "b": 602.8343, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 33, "end_row_offset_idx": 34, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . 22", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 618.64082, "r": 530.49139, "b": 627.85382, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 35, "end_row_offset_idx": 36, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.1 Assigning the QIBM_DB_SECADM function ID to the consultants. . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.04633, "t": 618.64082, "r": 547.15619, "b": 627.85382, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 35, "end_row_offset_idx": 36, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "23", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 631.1206999999999, "r": 530.56458, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 36, "end_row_offset_idx": 37, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.2 Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.09601, "t": 631.1206999999999, "r": 547.15875, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 36, "end_row_offset_idx": 37, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "23", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 643.66034, "r": 530.55695, "b": 652.87334, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 37, "end_row_offset_idx": 38, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.3 Demonstrating data access without RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0882, "t": 643.66034, "r": 547.15076, "b": 652.87334, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 37, "end_row_offset_idx": 38, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "24", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 656.14021, "r": 530.53412, "b": 665.35321, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 38, "end_row_offset_idx": 39, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.4 Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.073, "t": 656.14021, "r": 547.15088, "b": 665.35321, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 38, "end_row_offset_idx": 39, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "25", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 668.62009, "r": 339.45105, "b": 677.83309, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 39, "end_row_offset_idx": 40, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.5 Defining and creating column masks", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 344.98996, "t": 668.62009, "r": 547.16089, "b": 677.83309, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 39, "end_row_offset_idx": 40, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 681.15973, "r": 530.54102, "b": 690.37273, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 40, "end_row_offset_idx": 41, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.6 Activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.08765, "t": 681.15973, "r": 547.18085, "b": 690.37273, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 40, "end_row_offset_idx": 41, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "28", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 693.63961, "r": 530.57507, "b": 702.852615, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 41, "end_row_offset_idx": 42, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.7 Demonstrating data access with RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.10663, "t": 693.63961, "r": 547.16968, "b": 702.852615, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 41, "end_row_offset_idx": 42, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "29", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 706.119492, "r": 530.43628, "b": 715.332497, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 42, "end_row_offset_idx": 43, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.8 Demonstrating data access with a view and RCAC . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 535.99847, "t": 706.119492, "r": 547.12286, "b": 715.332497, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 42, "end_row_offset_idx": 43, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "32", "column_header": false, "row_header": false, "row_section": false}]}}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 4, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.751060485839844, "t": 754.6969604492188, "r": 257.24335, "b": 764.1015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9473134875297546, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 4, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 538.3257446289062, "t": 754.0830688476562, "r": 547.25928, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.892595112323761, "cells": [{"id": 1, "text": "iii", "bbox": {"l": 538.85999, "t": 754.848721, "r": 547.25928, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "iii"}, {"label": "section_header", "id": 2, "page_no": 4, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.6857681274414, "t": 73.01808166503906, "r": 168.73441, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9508246779441833, "cells": [{"id": 2, "text": "Contents", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 168.73441, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Contents"}, {"label": "table", "id": 3, "page_no": 4, "cluster": {"id": 3, "label": "table", "bbox": {"l": 136.15103149414062, "t": 132.03030395507812, "r": 549.84723, "b": 715.6527709960938, "coord_origin": "TOPLEFT"}, "confidence": 0.9803490042686462, "cells": [{"id": 3, "text": "Notices", "bbox": {"l": 136.8, "t": 132.64862000000005, "r": 172.89404, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii", "bbox": {"l": 175.01952, "t": 132.64862000000005, "r": 547.18982, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Trademarks", "bbox": {"l": 136.79901, "t": 145.12847999999997, "r": 189.86537, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 195.39685, "t": 145.12847999999997, "r": 530.05121, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "viii", "bbox": {"l": 535.5827, "t": 145.12847999999997, "r": 547.18286, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "DB2 for i Center of Excellence", "bbox": {"l": 136.79901, "t": 167.62811, "r": 279.39731, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix", "bbox": {"l": 280.61942, "t": 167.62811, "r": 547.1908, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Preface", "bbox": {"l": 136.79901, "t": 190.12775, "r": 172.84424, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "bbox": {"l": 175.01852, "t": 190.12775, "r": 547.18286, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "bbox": {"l": 136.79803, "t": 202.60760000000005, "r": 547.18085, "b": 211.82061999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Now you can become a published author, too!", "bbox": {"l": 136.79803, "t": 215.14721999999995, "r": 339.18292, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.71411, "t": 215.14721999999995, "r": 530.00812, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "xiii", "bbox": {"l": 535.53925, "t": 215.14721999999995, "r": 547.13879, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 136.79803, "t": 227.62707999999998, "r": 529.99506, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "xiii", "bbox": {"l": 535.5495, "t": 227.62707999999998, "r": 547.19788, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Stay connected to IBM Redbooks", "bbox": {"l": 136.79807, "t": 240.10693000000003, "r": 284.02866, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 289.54449, "t": 240.10693000000003, "r": 529.48242, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "xiv", "bbox": {"l": 534.99829, "t": 240.10693000000003, "r": 547.12115, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Chapter 1. Securing and protecting IBM DB2 data", "bbox": {"l": 136.79807, "t": 262.60657000000003, "r": 373.17566, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 375.11798, "t": 262.60657000000003, "r": 536.09589, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "1", "bbox": {"l": 541.64685, "t": 262.60657000000003, "r": 547.19781, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "1.1", "bbox": {"l": 136.79808, "t": 274.60637999999994, "r": 150.88702, "b": 283.8194, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Security fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2", "bbox": {"l": 156.5226, "t": 274.60637999999994, "r": 549.84723, "b": 283.8194, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "1.2", "bbox": {"l": 136.79807, "t": 287.14606000000003, "r": 150.62746, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Current state of IBM i security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.15923, "t": 287.14606000000003, "r": 536.12933, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "2", "bbox": {"l": 541.66113, "t": 287.14606000000003, "r": 547.19287, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "1.3", "bbox": {"l": 136.79807, "t": 299.62595, "r": 150.84943, "b": 308.83893, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "DB2 for i security controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3", "bbox": {"l": 156.46996, "t": 299.62595, "r": 549.84723, "b": 308.83893, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "1.3.1", "bbox": {"l": 151.1972, "t": 312.1058300000001, "r": 173.38289, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Existing row and column control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.92932, "t": 312.1058300000001, "r": 536.05511, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "4", "bbox": {"l": 541.6015, "t": 312.1058300000001, "r": 547.14795, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "1.3.2", "bbox": {"l": 151.1972, "t": 324.64548, "r": 173.4189, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "New controls: Row and Column Access Control. . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97432, "t": 324.64548, "r": 536.08008, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "5", "bbox": {"l": 541.6355, "t": 324.64548, "r": 547.19092, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Chapter 2. Roles and separation of duties", "bbox": {"l": 136.79704, "t": 347.14511, "r": 336.82071, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 338.99701, "t": 347.14511, "r": 536.09088, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "7", "bbox": {"l": 541.64282, "t": 347.14511, "r": 547.19476, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "2.1", "bbox": {"l": 136.79704, "t": 359.14493, "r": 150.644, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18277, "t": 359.14493, "r": 536.12714, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "8", "bbox": {"l": 541.66589, "t": 359.14493, "r": 547.20471, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "2.1.1", "bbox": {"l": 151.1972, "t": 371.62482, "r": 173.60995, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "DDM and DRDA application server access: QIBM_DB_DDMDRDA . . . . . . . . . . .", "bbox": {"l": 176.41154, "t": 371.62482, "r": 535.9527, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "8", "bbox": {"l": 541.55585, "t": 371.62482, "r": 547.15906, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "2.1.2", "bbox": {"l": 151.1972, "t": 384.10470999999995, "r": 173.41664, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Toolbox application server access: QIBM_DB_ZDA. . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97151, "t": 384.10470999999995, "r": 536.04108, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "8", "bbox": {"l": 541.59595, "t": 384.10470999999995, "r": 547.15082, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "2.1.3", "bbox": {"l": 151.1972, "t": 396.64435, "r": 173.41859, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Database Administrator function: QIBM_DB_SQLADM . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97394, "t": 396.64435, "r": 536.07489, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "9", "bbox": {"l": 541.63025, "t": 396.64435, "r": 547.18561, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "2.1.4", "bbox": {"l": 151.1972, "t": 409.12424000000004, "r": 173.38629, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "Database Information function: QIBM_DB_SYSMON", "bbox": {"l": 178.93356, "t": 409.12424000000004, "r": 411.27048, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": ". . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 416.81775, "t": 409.12424000000004, "r": 536.08411, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "9", "bbox": {"l": 541.63135, "t": 409.12424000000004, "r": 547.17865, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "2.1.5", "bbox": {"l": 151.1972, "t": 421.60413, "r": 173.44926, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "Security Administrator function: QIBM_DB_SECADM . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01228, "t": 421.60413, "r": 536.03589, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "9", "bbox": {"l": 541.59894, "t": 421.60413, "r": 547.16193, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "2.1.6", "bbox": {"l": 151.1972, "t": 434.1437700000001, "r": 173.32208, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Change Function Usage CL command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8533, "t": 434.1437700000001, "r": 530.57318, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "10", "bbox": {"l": 536.10443, "t": 434.1437700000001, "r": 547.16687, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "2.1.7", "bbox": {"l": 151.1972, "t": 446.62366, "r": 173.35822, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "Verifying function usage IDs for RCAC with the FUNCTION_USAGE view . . . . .", "bbox": {"l": 178.89848, "t": 446.62366, "r": 530.53522, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "10", "bbox": {"l": 536.0755, "t": 446.62366, "r": 547.15601, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "2.2", "bbox": {"l": 136.79704, "t": 459.10355, "r": 150.85457, "b": 468.31653, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "Separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10", "bbox": {"l": 156.47758, "t": 459.10355, "r": 547.25659, "b": 468.31653, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Chapter 3. Row and Column Access Control", "bbox": {"l": 136.79703, "t": 481.60318, "r": 348.68503, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 350.09741, "t": 481.60318, "r": 530.53961, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "13", "bbox": {"l": 536.09167, "t": 481.60318, "r": 547.1958, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "3.1", "bbox": {"l": 136.79703, "t": 493.603, "r": 150.70105, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "Explanation of RCAC and the concept of access control . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26266, "t": 493.603, "r": 530.4809, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "14", "bbox": {"l": 536.04248, "t": 493.603, "r": 547.16571, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "3.1.1", "bbox": {"l": 151.19719, "t": 506.14264, "r": 173.35429, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "Row permission and column mask definitions", "bbox": {"l": 178.89357, "t": 506.14264, "r": 378.20786, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 383.74713, "t": 506.14264, "r": 530.5379, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "14", "bbox": {"l": 536.07721, "t": 506.14264, "r": 547.15576, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "3.1.2", "bbox": {"l": 151.19719, "t": 518.62253, "r": 173.44292, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "Enabling and activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00435, "t": 518.62253, "r": 530.43475, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "16", "bbox": {"l": 535.99622, "t": 518.62253, "r": 547.11908, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "3.2", "bbox": {"l": 136.79703, "t": 531.1621700000001, "r": 150.64432, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "Special registers and built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18323, "t": 531.1621700000001, "r": 530.52808, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "18", "bbox": {"l": 536.06702, "t": 531.1621700000001, "r": 547.14484, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "3.2.1", "bbox": {"l": 151.19719, "t": 543.64204, "r": 173.41321, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "Special registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.96722, "t": 543.64204, "r": 530.49786, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "18", "bbox": {"l": 536.05188, "t": 543.64204, "r": 547.15991, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 86, "text": "3.2.2", "bbox": {"l": 151.19719, "t": 556.12192, "r": 173.35269, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 87, "text": "Built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89156, "t": 556.12192, "r": 530.56024, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 88, "text": "19", "bbox": {"l": 536.09912, "t": 556.12192, "r": 547.17688, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 89, "text": "3.3", "bbox": {"l": 136.79703, "t": 568.66156, "r": 150.62514, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 90, "text": "VERIFY_GROUP_FOR_USER function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.15639, "t": 568.66156, "r": 530.53027, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 91, "text": "20", "bbox": {"l": 536.06152, "t": 568.66156, "r": 547.12402, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 92, "text": "3.4", "bbox": {"l": 136.79703, "t": 581.14143, "r": 150.63004, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 93, "text": "Establishing and controlling accessibility by using the RCAC rule text . . . . . . . . . . . . .", "bbox": {"l": 156.16325, "t": 581.14143, "r": 530.62994, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 94, "text": "21", "bbox": {"l": 536.16315, "t": 581.14143, "r": 547.22955, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 95, "text": "3.5", "bbox": {"l": 136.79701, "t": 593.62131, "r": 150.64413, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 96, "text": "SELECT, INSERT, and UPDATE behavior with RCAC", "bbox": {"l": 156.18298, "t": 593.62131, "r": 394.7818, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 97, "text": ". . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 400.32065, "t": 593.62131, "r": 530.48358, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 98, "text": "22", "bbox": {"l": 536.0224, "t": 593.62131, "r": 547.1001, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 99, "text": "3.6", "bbox": {"l": 136.79701, "t": 606.16095, "r": 150.6642, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 100, "text": "Human resources example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.21107, "t": 606.16095, "r": 530.56512, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 101, "text": "22", "bbox": {"l": 536.112, "t": 606.16095, "r": 547.20575, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 102, "text": "3.6.1", "bbox": {"l": 151.19717, "t": 618.64082, "r": 173.41692, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 103, "text": "Assigning the QIBM_DB_SECADM function ID to the consultants. . . . . . . . . . . .", "bbox": {"l": 178.97185, "t": 618.64082, "r": 530.49139, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 104, "text": "23", "bbox": {"l": 536.04633, "t": 618.64082, "r": 547.15619, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 105, "text": "3.6.2", "bbox": {"l": 151.19717, "t": 631.1206999999999, "r": 173.32271, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 106, "text": "Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8541, "t": 631.1206999999999, "r": 530.56458, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 107, "text": "23", "bbox": {"l": 536.09601, "t": 631.1206999999999, "r": 547.15875, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 108, "text": "3.6.3", "bbox": {"l": 151.19717, "t": 643.66034, "r": 173.32227, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 109, "text": "Demonstrating data access without RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85353, "t": 643.66034, "r": 530.55695, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 110, "text": "24", "bbox": {"l": 536.0882, "t": 643.66034, "r": 547.15076, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 111, "text": "3.6.4", "bbox": {"l": 151.19717, "t": 656.14021, "r": 173.35289, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 112, "text": "Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89182, "t": 656.14021, "r": 530.53412, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 113, "text": "25", "bbox": {"l": 536.073, "t": 656.14021, "r": 547.15088, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 114, "text": "3.6.5", "bbox": {"l": 151.19717, "t": 668.62009, "r": 173.35289, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 115, "text": "Defining and creating column masks", "bbox": {"l": 178.89182, "t": 668.62009, "r": 339.45105, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 116, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.98996, "t": 668.62009, "r": 530.54413, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 117, "text": "26", "bbox": {"l": 536.08301, "t": 668.62009, "r": 547.16089, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 118, "text": "3.6.6", "bbox": {"l": 151.19717, "t": 681.15973, "r": 173.38359, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 119, "text": "Activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.93019, "t": 681.15973, "r": 530.54102, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 120, "text": "28", "bbox": {"l": 536.08765, "t": 681.15973, "r": 547.18085, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 121, "text": "3.6.7", "bbox": {"l": 151.19717, "t": 693.63961, "r": 173.32332, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 122, "text": "Demonstrating data access with RCAC", "bbox": {"l": 178.85486, "t": 693.63961, "r": 350.80011, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 123, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 356.33163, "t": 693.63961, "r": 530.57507, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 124, "text": "29", "bbox": {"l": 536.10663, "t": 693.63961, "r": 547.16968, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 125, "text": "3.6.8", "bbox": {"l": 151.19717, "t": 706.119492, "r": 173.44592, "b": 715.332497, "coord_origin": "TOPLEFT"}}, {"id": 126, "text": "Demonstrating data access with a view and RCAC . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00812, "t": 706.119492, "r": 530.43628, "b": 715.332497, "coord_origin": "TOPLEFT"}}, {"id": 127, "text": "32", "bbox": {"l": 535.99847, "t": 706.119492, "r": 547.12286, "b": 715.332497, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl"], "num_rows": 43, "num_cols": 2, "table_cells": [{"bbox": {"l": 136.8, "t": 132.64862000000005, "r": 172.89404, "b": 141.86163, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Notices", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 175.01952, "t": 132.64862000000005, "r": 547.18982, "b": 141.86163, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79901, "t": 145.12847999999997, "r": 189.86537, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Trademarks", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 195.39685, "t": 145.12847999999997, "r": 547.18286, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79901, "t": 167.62811, "r": 279.39731, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "DB2 for i Center of Excellence", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 280.61942, "t": 167.62811, "r": 547.1908, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79901, "t": 190.12775, "r": 172.84424, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Preface", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 175.01852, "t": 190.12775, "r": 547.18286, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79803, "t": 202.60760000000005, "r": 547.18085, "b": 211.82061999999996, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79803, "t": 215.14721999999995, "r": 339.18292, "b": 224.36023, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Now you can become a published author, too!", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 344.71411, "t": 215.14721999999995, "r": 547.13879, "b": 224.36023, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79803, "t": 227.62707999999998, "r": 529.99506, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 535.5495, "t": 227.62707999999998, "r": 547.19788, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "xiii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79807, "t": 240.10693000000003, "r": 284.02866, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Stay connected to IBM Redbooks", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.54449, "t": 240.10693000000003, "r": 547.12115, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79807, "t": 262.60657000000003, "r": 536.09589, "b": 271.81958, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 1. Securing and protecting IBM DB2 data . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.64685, "t": 262.60657000000003, "r": 547.19781, "b": 271.81958, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "1", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79808, "t": 274.60637999999994, "r": 549.84723, "b": 283.8194, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.1 Security fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79807, "t": 287.14606000000003, "r": 536.12933, "b": 296.35904, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.2 Current state of IBM i security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.66113, "t": 287.14606000000003, "r": 547.19287, "b": 296.35904, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "2", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79807, "t": 299.62595, "r": 549.84723, "b": 308.83893, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.3 DB2 for i security controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 312.1058300000001, "r": 536.05511, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.3.1 Existing row and column control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.6015, "t": 312.1058300000001, "r": 547.14795, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "4", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 324.64548, "r": 536.08008, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.3.2 New controls: Row and Column Access Control. . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.6355, "t": 324.64548, "r": 547.19092, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "5", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79704, "t": 347.14511, "r": 536.09088, "b": 356.35809, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 2. Roles and separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.64282, "t": 347.14511, "r": 547.19476, "b": 356.35809, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "7", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79704, "t": 359.14493, "r": 536.12714, "b": 368.35791, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1 Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.66589, "t": 359.14493, "r": 547.20471, "b": 368.35791, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "8", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 371.62482, "r": 535.9527, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.1 DDM and DRDA application server access: QIBM_DB_DDMDRDA . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.55585, "t": 371.62482, "r": 547.15906, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "8", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 384.10470999999995, "r": 536.04108, "b": 393.31769, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.2 Toolbox application server access: QIBM_DB_ZDA. . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.59595, "t": 384.10470999999995, "r": 547.15082, "b": 393.31769, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "8", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 396.64435, "r": 536.07489, "b": 405.85733, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.3 Database Administrator function: QIBM_DB_SQLADM . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.63025, "t": 396.64435, "r": 547.18561, "b": 405.85733, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "9", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 409.12424000000004, "r": 411.27048, "b": 418.33722, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.4 Database Information function: QIBM_DB_SYSMON", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 416.81775, "t": 409.12424000000004, "r": 547.17865, "b": 418.33722, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . 9", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 421.60413, "r": 536.03589, "b": 430.81711, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.5 Security Administrator function: QIBM_DB_SECADM . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.59894, "t": 421.60413, "r": 547.16193, "b": 430.81711, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "9", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 434.1437700000001, "r": 530.57318, "b": 443.35675, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.6 Change Function Usage CL command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.10443, "t": 434.1437700000001, "r": 547.16687, "b": 443.35675, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 446.62366, "r": 530.53522, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 22, "end_row_offset_idx": 23, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.7 Verifying function usage IDs for RCAC with the FUNCTION_USAGE view . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0755, "t": 446.62366, "r": 547.15601, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 22, "end_row_offset_idx": 23, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79704, "t": 459.10355, "r": 547.25659, "b": 468.31653, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 23, "end_row_offset_idx": 24, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.2 Separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 481.60318, "r": 530.53961, "b": 490.81616, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 24, "end_row_offset_idx": 25, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 3. Row and Column Access Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.09167, "t": 481.60318, "r": 547.1958, "b": 490.81616, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 24, "end_row_offset_idx": 25, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "13", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 493.603, "r": 530.4809, "b": 502.81598, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 25, "end_row_offset_idx": 26, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.1 Explanation of RCAC and the concept of access control . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.04248, "t": 493.603, "r": 547.16571, "b": 502.81598, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 25, "end_row_offset_idx": 26, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "14", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19719, "t": 506.14264, "r": 378.20786, "b": 515.35562, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 26, "end_row_offset_idx": 27, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.1.1 Row permission and column mask definitions", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 383.74713, "t": 506.14264, "r": 547.15576, "b": 515.35562, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 26, "end_row_offset_idx": 27, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . 14", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19719, "t": 518.62253, "r": 530.43475, "b": 527.83551, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 27, "end_row_offset_idx": 28, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.1.2 Enabling and activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 535.99622, "t": 518.62253, "r": 547.11908, "b": 527.83551, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 27, "end_row_offset_idx": 28, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "16", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 531.1621700000001, "r": 530.52808, "b": 540.37517, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 28, "end_row_offset_idx": 29, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.2 Special registers and built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.06702, "t": 531.1621700000001, "r": 547.14484, "b": 540.37517, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 28, "end_row_offset_idx": 29, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "18", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19719, "t": 543.64204, "r": 530.49786, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 29, "end_row_offset_idx": 30, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.2.1 Special registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.05188, "t": 543.64204, "r": 547.15991, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 29, "end_row_offset_idx": 30, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "18", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19719, "t": 556.12192, "r": 530.56024, "b": 565.33492, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 30, "end_row_offset_idx": 31, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.2.2 Built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.09912, "t": 556.12192, "r": 547.17688, "b": 565.33492, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 30, "end_row_offset_idx": 31, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "19", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 568.66156, "r": 530.53027, "b": 577.87456, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 31, "end_row_offset_idx": 32, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.3 VERIFY_GROUP_FOR_USER function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.06152, "t": 568.66156, "r": 547.12402, "b": 577.87456, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 31, "end_row_offset_idx": 32, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "20", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 581.14143, "r": 530.62994, "b": 590.35443, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 32, "end_row_offset_idx": 33, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.4 Establishing and controlling accessibility by using the RCAC rule text . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.16315, "t": 581.14143, "r": 547.22955, "b": 590.35443, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 32, "end_row_offset_idx": 33, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "21", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79701, "t": 593.62131, "r": 394.7818, "b": 602.8343, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 34, "end_row_offset_idx": 35, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.5 SELECT, INSERT, and UPDATE behavior with RCAC", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 400.32065, "t": 593.62131, "r": 547.1001, "b": 602.8343, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 33, "end_row_offset_idx": 34, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . 22", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 618.64082, "r": 530.49139, "b": 627.85382, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 35, "end_row_offset_idx": 36, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.1 Assigning the QIBM_DB_SECADM function ID to the consultants. . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.04633, "t": 618.64082, "r": 547.15619, "b": 627.85382, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 35, "end_row_offset_idx": 36, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "23", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 631.1206999999999, "r": 530.56458, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 36, "end_row_offset_idx": 37, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.2 Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.09601, "t": 631.1206999999999, "r": 547.15875, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 36, "end_row_offset_idx": 37, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "23", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 643.66034, "r": 530.55695, "b": 652.87334, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 37, "end_row_offset_idx": 38, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.3 Demonstrating data access without RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0882, "t": 643.66034, "r": 547.15076, "b": 652.87334, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 37, "end_row_offset_idx": 38, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "24", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 656.14021, "r": 530.53412, "b": 665.35321, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 38, "end_row_offset_idx": 39, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.4 Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.073, "t": 656.14021, "r": 547.15088, "b": 665.35321, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 38, "end_row_offset_idx": 39, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "25", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 668.62009, "r": 339.45105, "b": 677.83309, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 39, "end_row_offset_idx": 40, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.5 Defining and creating column masks", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 344.98996, "t": 668.62009, "r": 547.16089, "b": 677.83309, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 39, "end_row_offset_idx": 40, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 681.15973, "r": 530.54102, "b": 690.37273, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 40, "end_row_offset_idx": 41, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.6 Activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.08765, "t": 681.15973, "r": 547.18085, "b": 690.37273, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 40, "end_row_offset_idx": 41, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "28", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 693.63961, "r": 530.57507, "b": 702.852615, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 41, "end_row_offset_idx": 42, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.7 Demonstrating data access with RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.10663, "t": 693.63961, "r": 547.16968, "b": 702.852615, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 41, "end_row_offset_idx": 42, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "29", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 706.119492, "r": 530.43628, "b": 715.332497, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 42, "end_row_offset_idx": 43, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.8 Demonstrating data access with a view and RCAC . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 535.99847, "t": 706.119492, "r": 547.12286, "b": 715.332497, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 42, "end_row_offset_idx": 43, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "32", "column_header": false, "row_header": false, "row_section": false}]}], "body": [{"label": "section_header", "id": 2, "page_no": 4, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.6857681274414, "t": 73.01808166503906, "r": 168.73441, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9508246779441833, "cells": [{"id": 2, "text": "Contents", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 168.73441, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Contents"}, {"label": "table", "id": 3, "page_no": 4, "cluster": {"id": 3, "label": "table", "bbox": {"l": 136.15103149414062, "t": 132.03030395507812, "r": 549.84723, "b": 715.6527709960938, "coord_origin": "TOPLEFT"}, "confidence": 0.9803490042686462, "cells": [{"id": 3, "text": "Notices", "bbox": {"l": 136.8, "t": 132.64862000000005, "r": 172.89404, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii", "bbox": {"l": 175.01952, "t": 132.64862000000005, "r": 547.18982, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Trademarks", "bbox": {"l": 136.79901, "t": 145.12847999999997, "r": 189.86537, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 195.39685, "t": 145.12847999999997, "r": 530.05121, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "viii", "bbox": {"l": 535.5827, "t": 145.12847999999997, "r": 547.18286, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "DB2 for i Center of Excellence", "bbox": {"l": 136.79901, "t": 167.62811, "r": 279.39731, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix", "bbox": {"l": 280.61942, "t": 167.62811, "r": 547.1908, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Preface", "bbox": {"l": 136.79901, "t": 190.12775, "r": 172.84424, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "bbox": {"l": 175.01852, "t": 190.12775, "r": 547.18286, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "bbox": {"l": 136.79803, "t": 202.60760000000005, "r": 547.18085, "b": 211.82061999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Now you can become a published author, too!", "bbox": {"l": 136.79803, "t": 215.14721999999995, "r": 339.18292, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.71411, "t": 215.14721999999995, "r": 530.00812, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "xiii", "bbox": {"l": 535.53925, "t": 215.14721999999995, "r": 547.13879, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 136.79803, "t": 227.62707999999998, "r": 529.99506, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "xiii", "bbox": {"l": 535.5495, "t": 227.62707999999998, "r": 547.19788, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Stay connected to IBM Redbooks", "bbox": {"l": 136.79807, "t": 240.10693000000003, "r": 284.02866, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 289.54449, "t": 240.10693000000003, "r": 529.48242, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "xiv", "bbox": {"l": 534.99829, "t": 240.10693000000003, "r": 547.12115, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Chapter 1. Securing and protecting IBM DB2 data", "bbox": {"l": 136.79807, "t": 262.60657000000003, "r": 373.17566, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 375.11798, "t": 262.60657000000003, "r": 536.09589, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "1", "bbox": {"l": 541.64685, "t": 262.60657000000003, "r": 547.19781, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "1.1", "bbox": {"l": 136.79808, "t": 274.60637999999994, "r": 150.88702, "b": 283.8194, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Security fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2", "bbox": {"l": 156.5226, "t": 274.60637999999994, "r": 549.84723, "b": 283.8194, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "1.2", "bbox": {"l": 136.79807, "t": 287.14606000000003, "r": 150.62746, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Current state of IBM i security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.15923, "t": 287.14606000000003, "r": 536.12933, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "2", "bbox": {"l": 541.66113, "t": 287.14606000000003, "r": 547.19287, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "1.3", "bbox": {"l": 136.79807, "t": 299.62595, "r": 150.84943, "b": 308.83893, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "DB2 for i security controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3", "bbox": {"l": 156.46996, "t": 299.62595, "r": 549.84723, "b": 308.83893, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "1.3.1", "bbox": {"l": 151.1972, "t": 312.1058300000001, "r": 173.38289, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Existing row and column control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.92932, "t": 312.1058300000001, "r": 536.05511, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "4", "bbox": {"l": 541.6015, "t": 312.1058300000001, "r": 547.14795, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "1.3.2", "bbox": {"l": 151.1972, "t": 324.64548, "r": 173.4189, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "New controls: Row and Column Access Control. . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97432, "t": 324.64548, "r": 536.08008, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "5", "bbox": {"l": 541.6355, "t": 324.64548, "r": 547.19092, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Chapter 2. Roles and separation of duties", "bbox": {"l": 136.79704, "t": 347.14511, "r": 336.82071, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 338.99701, "t": 347.14511, "r": 536.09088, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "7", "bbox": {"l": 541.64282, "t": 347.14511, "r": 547.19476, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "2.1", "bbox": {"l": 136.79704, "t": 359.14493, "r": 150.644, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18277, "t": 359.14493, "r": 536.12714, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "8", "bbox": {"l": 541.66589, "t": 359.14493, "r": 547.20471, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "2.1.1", "bbox": {"l": 151.1972, "t": 371.62482, "r": 173.60995, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "DDM and DRDA application server access: QIBM_DB_DDMDRDA . . . . . . . . . . .", "bbox": {"l": 176.41154, "t": 371.62482, "r": 535.9527, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "8", "bbox": {"l": 541.55585, "t": 371.62482, "r": 547.15906, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "2.1.2", "bbox": {"l": 151.1972, "t": 384.10470999999995, "r": 173.41664, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Toolbox application server access: QIBM_DB_ZDA. . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97151, "t": 384.10470999999995, "r": 536.04108, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "8", "bbox": {"l": 541.59595, "t": 384.10470999999995, "r": 547.15082, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "2.1.3", "bbox": {"l": 151.1972, "t": 396.64435, "r": 173.41859, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Database Administrator function: QIBM_DB_SQLADM . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97394, "t": 396.64435, "r": 536.07489, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "9", "bbox": {"l": 541.63025, "t": 396.64435, "r": 547.18561, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "2.1.4", "bbox": {"l": 151.1972, "t": 409.12424000000004, "r": 173.38629, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "Database Information function: QIBM_DB_SYSMON", "bbox": {"l": 178.93356, "t": 409.12424000000004, "r": 411.27048, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": ". . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 416.81775, "t": 409.12424000000004, "r": 536.08411, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "9", "bbox": {"l": 541.63135, "t": 409.12424000000004, "r": 547.17865, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "2.1.5", "bbox": {"l": 151.1972, "t": 421.60413, "r": 173.44926, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "Security Administrator function: QIBM_DB_SECADM . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01228, "t": 421.60413, "r": 536.03589, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "9", "bbox": {"l": 541.59894, "t": 421.60413, "r": 547.16193, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "2.1.6", "bbox": {"l": 151.1972, "t": 434.1437700000001, "r": 173.32208, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Change Function Usage CL command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8533, "t": 434.1437700000001, "r": 530.57318, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "10", "bbox": {"l": 536.10443, "t": 434.1437700000001, "r": 547.16687, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "2.1.7", "bbox": {"l": 151.1972, "t": 446.62366, "r": 173.35822, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "Verifying function usage IDs for RCAC with the FUNCTION_USAGE view . . . . .", "bbox": {"l": 178.89848, "t": 446.62366, "r": 530.53522, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "10", "bbox": {"l": 536.0755, "t": 446.62366, "r": 547.15601, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "2.2", "bbox": {"l": 136.79704, "t": 459.10355, "r": 150.85457, "b": 468.31653, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "Separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10", "bbox": {"l": 156.47758, "t": 459.10355, "r": 547.25659, "b": 468.31653, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Chapter 3. Row and Column Access Control", "bbox": {"l": 136.79703, "t": 481.60318, "r": 348.68503, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 350.09741, "t": 481.60318, "r": 530.53961, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "13", "bbox": {"l": 536.09167, "t": 481.60318, "r": 547.1958, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "3.1", "bbox": {"l": 136.79703, "t": 493.603, "r": 150.70105, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "Explanation of RCAC and the concept of access control . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26266, "t": 493.603, "r": 530.4809, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "14", "bbox": {"l": 536.04248, "t": 493.603, "r": 547.16571, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "3.1.1", "bbox": {"l": 151.19719, "t": 506.14264, "r": 173.35429, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "Row permission and column mask definitions", "bbox": {"l": 178.89357, "t": 506.14264, "r": 378.20786, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 383.74713, "t": 506.14264, "r": 530.5379, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "14", "bbox": {"l": 536.07721, "t": 506.14264, "r": 547.15576, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "3.1.2", "bbox": {"l": 151.19719, "t": 518.62253, "r": 173.44292, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "Enabling and activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00435, "t": 518.62253, "r": 530.43475, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "16", "bbox": {"l": 535.99622, "t": 518.62253, "r": 547.11908, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "3.2", "bbox": {"l": 136.79703, "t": 531.1621700000001, "r": 150.64432, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "Special registers and built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18323, "t": 531.1621700000001, "r": 530.52808, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "18", "bbox": {"l": 536.06702, "t": 531.1621700000001, "r": 547.14484, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "3.2.1", "bbox": {"l": 151.19719, "t": 543.64204, "r": 173.41321, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "Special registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.96722, "t": 543.64204, "r": 530.49786, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "18", "bbox": {"l": 536.05188, "t": 543.64204, "r": 547.15991, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 86, "text": "3.2.2", "bbox": {"l": 151.19719, "t": 556.12192, "r": 173.35269, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 87, "text": "Built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89156, "t": 556.12192, "r": 530.56024, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 88, "text": "19", "bbox": {"l": 536.09912, "t": 556.12192, "r": 547.17688, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 89, "text": "3.3", "bbox": {"l": 136.79703, "t": 568.66156, "r": 150.62514, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 90, "text": "VERIFY_GROUP_FOR_USER function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.15639, "t": 568.66156, "r": 530.53027, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 91, "text": "20", "bbox": {"l": 536.06152, "t": 568.66156, "r": 547.12402, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 92, "text": "3.4", "bbox": {"l": 136.79703, "t": 581.14143, "r": 150.63004, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 93, "text": "Establishing and controlling accessibility by using the RCAC rule text . . . . . . . . . . . . .", "bbox": {"l": 156.16325, "t": 581.14143, "r": 530.62994, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 94, "text": "21", "bbox": {"l": 536.16315, "t": 581.14143, "r": 547.22955, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 95, "text": "3.5", "bbox": {"l": 136.79701, "t": 593.62131, "r": 150.64413, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 96, "text": "SELECT, INSERT, and UPDATE behavior with RCAC", "bbox": {"l": 156.18298, "t": 593.62131, "r": 394.7818, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 97, "text": ". . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 400.32065, "t": 593.62131, "r": 530.48358, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 98, "text": "22", "bbox": {"l": 536.0224, "t": 593.62131, "r": 547.1001, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 99, "text": "3.6", "bbox": {"l": 136.79701, "t": 606.16095, "r": 150.6642, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 100, "text": "Human resources example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.21107, "t": 606.16095, "r": 530.56512, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 101, "text": "22", "bbox": {"l": 536.112, "t": 606.16095, "r": 547.20575, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 102, "text": "3.6.1", "bbox": {"l": 151.19717, "t": 618.64082, "r": 173.41692, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 103, "text": "Assigning the QIBM_DB_SECADM function ID to the consultants. . . . . . . . . . . .", "bbox": {"l": 178.97185, "t": 618.64082, "r": 530.49139, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 104, "text": "23", "bbox": {"l": 536.04633, "t": 618.64082, "r": 547.15619, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 105, "text": "3.6.2", "bbox": {"l": 151.19717, "t": 631.1206999999999, "r": 173.32271, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 106, "text": "Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8541, "t": 631.1206999999999, "r": 530.56458, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 107, "text": "23", "bbox": {"l": 536.09601, "t": 631.1206999999999, "r": 547.15875, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 108, "text": "3.6.3", "bbox": {"l": 151.19717, "t": 643.66034, "r": 173.32227, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 109, "text": "Demonstrating data access without RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85353, "t": 643.66034, "r": 530.55695, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 110, "text": "24", "bbox": {"l": 536.0882, "t": 643.66034, "r": 547.15076, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 111, "text": "3.6.4", "bbox": {"l": 151.19717, "t": 656.14021, "r": 173.35289, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 112, "text": "Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89182, "t": 656.14021, "r": 530.53412, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 113, "text": "25", "bbox": {"l": 536.073, "t": 656.14021, "r": 547.15088, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 114, "text": "3.6.5", "bbox": {"l": 151.19717, "t": 668.62009, "r": 173.35289, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 115, "text": "Defining and creating column masks", "bbox": {"l": 178.89182, "t": 668.62009, "r": 339.45105, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 116, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.98996, "t": 668.62009, "r": 530.54413, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 117, "text": "26", "bbox": {"l": 536.08301, "t": 668.62009, "r": 547.16089, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 118, "text": "3.6.6", "bbox": {"l": 151.19717, "t": 681.15973, "r": 173.38359, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 119, "text": "Activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.93019, "t": 681.15973, "r": 530.54102, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 120, "text": "28", "bbox": {"l": 536.08765, "t": 681.15973, "r": 547.18085, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 121, "text": "3.6.7", "bbox": {"l": 151.19717, "t": 693.63961, "r": 173.32332, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 122, "text": "Demonstrating data access with RCAC", "bbox": {"l": 178.85486, "t": 693.63961, "r": 350.80011, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 123, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 356.33163, "t": 693.63961, "r": 530.57507, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 124, "text": "29", "bbox": {"l": 536.10663, "t": 693.63961, "r": 547.16968, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 125, "text": "3.6.8", "bbox": {"l": 151.19717, "t": 706.119492, "r": 173.44592, "b": 715.332497, "coord_origin": "TOPLEFT"}}, {"id": 126, "text": "Demonstrating data access with a view and RCAC . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00812, "t": 706.119492, "r": 530.43628, "b": 715.332497, "coord_origin": "TOPLEFT"}}, {"id": 127, "text": "32", "bbox": {"l": 535.99847, "t": 706.119492, "r": 547.12286, "b": 715.332497, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl"], "num_rows": 43, "num_cols": 2, "table_cells": [{"bbox": {"l": 136.8, "t": 132.64862000000005, "r": 172.89404, "b": 141.86163, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Notices", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 175.01952, "t": 132.64862000000005, "r": 547.18982, "b": 141.86163, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79901, "t": 145.12847999999997, "r": 189.86537, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Trademarks", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 195.39685, "t": 145.12847999999997, "r": 547.18286, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79901, "t": 167.62811, "r": 279.39731, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "DB2 for i Center of Excellence", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 280.61942, "t": 167.62811, "r": 547.1908, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79901, "t": 190.12775, "r": 172.84424, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Preface", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 175.01852, "t": 190.12775, "r": 547.18286, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79803, "t": 202.60760000000005, "r": 547.18085, "b": 211.82061999999996, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79803, "t": 215.14721999999995, "r": 339.18292, "b": 224.36023, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Now you can become a published author, too!", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 344.71411, "t": 215.14721999999995, "r": 547.13879, "b": 224.36023, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79803, "t": 227.62707999999998, "r": 529.99506, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 535.5495, "t": 227.62707999999998, "r": 547.19788, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "xiii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79807, "t": 240.10693000000003, "r": 284.02866, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Stay connected to IBM Redbooks", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.54449, "t": 240.10693000000003, "r": 547.12115, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79807, "t": 262.60657000000003, "r": 536.09589, "b": 271.81958, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 1. Securing and protecting IBM DB2 data . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.64685, "t": 262.60657000000003, "r": 547.19781, "b": 271.81958, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "1", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79808, "t": 274.60637999999994, "r": 549.84723, "b": 283.8194, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.1 Security fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79807, "t": 287.14606000000003, "r": 536.12933, "b": 296.35904, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.2 Current state of IBM i security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.66113, "t": 287.14606000000003, "r": 547.19287, "b": 296.35904, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "2", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79807, "t": 299.62595, "r": 549.84723, "b": 308.83893, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.3 DB2 for i security controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 312.1058300000001, "r": 536.05511, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.3.1 Existing row and column control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.6015, "t": 312.1058300000001, "r": 547.14795, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "4", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 324.64548, "r": 536.08008, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.3.2 New controls: Row and Column Access Control. . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.6355, "t": 324.64548, "r": 547.19092, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "5", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79704, "t": 347.14511, "r": 536.09088, "b": 356.35809, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 2. Roles and separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.64282, "t": 347.14511, "r": 547.19476, "b": 356.35809, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "7", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79704, "t": 359.14493, "r": 536.12714, "b": 368.35791, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1 Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.66589, "t": 359.14493, "r": 547.20471, "b": 368.35791, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "8", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 371.62482, "r": 535.9527, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.1 DDM and DRDA application server access: QIBM_DB_DDMDRDA . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.55585, "t": 371.62482, "r": 547.15906, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "8", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 384.10470999999995, "r": 536.04108, "b": 393.31769, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.2 Toolbox application server access: QIBM_DB_ZDA. . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.59595, "t": 384.10470999999995, "r": 547.15082, "b": 393.31769, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "8", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 396.64435, "r": 536.07489, "b": 405.85733, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.3 Database Administrator function: QIBM_DB_SQLADM . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.63025, "t": 396.64435, "r": 547.18561, "b": 405.85733, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "9", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 409.12424000000004, "r": 411.27048, "b": 418.33722, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.4 Database Information function: QIBM_DB_SYSMON", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 416.81775, "t": 409.12424000000004, "r": 547.17865, "b": 418.33722, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . 9", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 421.60413, "r": 536.03589, "b": 430.81711, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.5 Security Administrator function: QIBM_DB_SECADM . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.59894, "t": 421.60413, "r": 547.16193, "b": 430.81711, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "9", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 434.1437700000001, "r": 530.57318, "b": 443.35675, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.6 Change Function Usage CL command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.10443, "t": 434.1437700000001, "r": 547.16687, "b": 443.35675, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 446.62366, "r": 530.53522, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 22, "end_row_offset_idx": 23, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.7 Verifying function usage IDs for RCAC with the FUNCTION_USAGE view . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0755, "t": 446.62366, "r": 547.15601, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 22, "end_row_offset_idx": 23, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79704, "t": 459.10355, "r": 547.25659, "b": 468.31653, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 23, "end_row_offset_idx": 24, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.2 Separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 481.60318, "r": 530.53961, "b": 490.81616, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 24, "end_row_offset_idx": 25, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 3. Row and Column Access Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.09167, "t": 481.60318, "r": 547.1958, "b": 490.81616, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 24, "end_row_offset_idx": 25, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "13", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 493.603, "r": 530.4809, "b": 502.81598, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 25, "end_row_offset_idx": 26, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.1 Explanation of RCAC and the concept of access control . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.04248, "t": 493.603, "r": 547.16571, "b": 502.81598, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 25, "end_row_offset_idx": 26, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "14", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19719, "t": 506.14264, "r": 378.20786, "b": 515.35562, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 26, "end_row_offset_idx": 27, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.1.1 Row permission and column mask definitions", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 383.74713, "t": 506.14264, "r": 547.15576, "b": 515.35562, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 26, "end_row_offset_idx": 27, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . 14", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19719, "t": 518.62253, "r": 530.43475, "b": 527.83551, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 27, "end_row_offset_idx": 28, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.1.2 Enabling and activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 535.99622, "t": 518.62253, "r": 547.11908, "b": 527.83551, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 27, "end_row_offset_idx": 28, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "16", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 531.1621700000001, "r": 530.52808, "b": 540.37517, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 28, "end_row_offset_idx": 29, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.2 Special registers and built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.06702, "t": 531.1621700000001, "r": 547.14484, "b": 540.37517, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 28, "end_row_offset_idx": 29, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "18", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19719, "t": 543.64204, "r": 530.49786, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 29, "end_row_offset_idx": 30, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.2.1 Special registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.05188, "t": 543.64204, "r": 547.15991, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 29, "end_row_offset_idx": 30, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "18", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19719, "t": 556.12192, "r": 530.56024, "b": 565.33492, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 30, "end_row_offset_idx": 31, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.2.2 Built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.09912, "t": 556.12192, "r": 547.17688, "b": 565.33492, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 30, "end_row_offset_idx": 31, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "19", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 568.66156, "r": 530.53027, "b": 577.87456, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 31, "end_row_offset_idx": 32, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.3 VERIFY_GROUP_FOR_USER function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.06152, "t": 568.66156, "r": 547.12402, "b": 577.87456, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 31, "end_row_offset_idx": 32, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "20", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 581.14143, "r": 530.62994, "b": 590.35443, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 32, "end_row_offset_idx": 33, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.4 Establishing and controlling accessibility by using the RCAC rule text . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.16315, "t": 581.14143, "r": 547.22955, "b": 590.35443, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 32, "end_row_offset_idx": 33, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "21", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79701, "t": 593.62131, "r": 394.7818, "b": 602.8343, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 34, "end_row_offset_idx": 35, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.5 SELECT, INSERT, and UPDATE behavior with RCAC", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 400.32065, "t": 593.62131, "r": 547.1001, "b": 602.8343, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 33, "end_row_offset_idx": 34, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . 22", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 618.64082, "r": 530.49139, "b": 627.85382, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 35, "end_row_offset_idx": 36, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.1 Assigning the QIBM_DB_SECADM function ID to the consultants. . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.04633, "t": 618.64082, "r": 547.15619, "b": 627.85382, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 35, "end_row_offset_idx": 36, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "23", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 631.1206999999999, "r": 530.56458, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 36, "end_row_offset_idx": 37, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.2 Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.09601, "t": 631.1206999999999, "r": 547.15875, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 36, "end_row_offset_idx": 37, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "23", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 643.66034, "r": 530.55695, "b": 652.87334, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 37, "end_row_offset_idx": 38, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.3 Demonstrating data access without RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0882, "t": 643.66034, "r": 547.15076, "b": 652.87334, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 37, "end_row_offset_idx": 38, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "24", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 656.14021, "r": 530.53412, "b": 665.35321, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 38, "end_row_offset_idx": 39, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.4 Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.073, "t": 656.14021, "r": 547.15088, "b": 665.35321, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 38, "end_row_offset_idx": 39, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "25", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 668.62009, "r": 339.45105, "b": 677.83309, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 39, "end_row_offset_idx": 40, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.5 Defining and creating column masks", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 344.98996, "t": 668.62009, "r": 547.16089, "b": 677.83309, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 39, "end_row_offset_idx": 40, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 681.15973, "r": 530.54102, "b": 690.37273, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 40, "end_row_offset_idx": 41, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.6 Activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.08765, "t": 681.15973, "r": 547.18085, "b": 690.37273, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 40, "end_row_offset_idx": 41, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "28", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 693.63961, "r": 530.57507, "b": 702.852615, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 41, "end_row_offset_idx": 42, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.7 Demonstrating data access with RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.10663, "t": 693.63961, "r": 547.16968, "b": 702.852615, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 41, "end_row_offset_idx": 42, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "29", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 706.119492, "r": 530.43628, "b": 715.332497, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 42, "end_row_offset_idx": 43, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.8 Demonstrating data access with a view and RCAC . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 535.99847, "t": 706.119492, "r": 547.12286, "b": 715.332497, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 42, "end_row_offset_idx": 43, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "32", "column_header": false, "row_header": false, "row_section": false}]}], "headers": [{"label": "page_footer", "id": 0, "page_no": 4, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.751060485839844, "t": 754.6969604492188, "r": 257.24335, "b": 764.1015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9473134875297546, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 4, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 538.3257446289062, "t": 754.0830688476562, "r": 547.25928, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.892595112323761, "cells": [{"id": 1, "text": "iii", "bbox": {"l": 538.85999, "t": 754.848721, "r": 547.25928, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "iii"}]}}, {"page_no": 5, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "iv ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 75.641998, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 90.599998, "t": 755.538002, "r": 331.55881, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 504.58301, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": ". . . . .", "bbox": {"l": 505.67957, "t": 71.50867000000005, "r": 530.59589, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "37", "bbox": {"l": 536.13281, "t": 71.50867000000005, "r": 547.20673, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "4.1", "bbox": {"l": 136.80002, "t": 83.50847999999996, "r": 150.64761, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Business requirements for the RCAC banking scenario . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18666, "t": 83.50847999999996, "r": 530.52008, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "38", "bbox": {"l": 536.05914, "t": 83.50847999999996, "r": 547.13721, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "4.2", "bbox": {"l": 136.80002, "t": 95.98834000000011, "r": 150.64821, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Description of the users roles and responsibilities", "bbox": {"l": 156.18748, "t": 95.98834000000011, "r": 372.67761, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 378.21689, "t": 95.98834000000011, "r": 530.547, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "39", "bbox": {"l": 536.0863, "t": 95.98834000000011, "r": 547.16486, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "4.3", "bbox": {"l": 136.80002, "t": 108.52795000000015, "r": 150.68542, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Implementation of RCAC", "bbox": {"l": 156.23959, "t": 108.52795000000015, "r": 266.7135, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 272.26767, "t": 108.52795000000015, "r": 530.53625, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "42", "bbox": {"l": 536.09039, "t": 108.52795000000015, "r": 547.19873, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "4.3.1", "bbox": {"l": 151.20018, "t": 121.00780999999995, "r": 173.32434, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Reviewing the tables that are used in this example", "bbox": {"l": 178.85538, "t": 121.00780999999995, "r": 400.57443, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": ". . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 406.10547, "t": 121.00780999999995, "r": 530.55383, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "42", "bbox": {"l": 536.0849, "t": 121.00780999999995, "r": 547.14697, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "4.3.2", "bbox": {"l": 151.20018, "t": 133.48766999999998, "r": 173.33942, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Assigning function ID QIBM_DB_SECADM to the Database Engineers group", "bbox": {"l": 178.87422, "t": 133.48766999999998, "r": 516.9256, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": ". .", "bbox": {"l": 522.46039, "t": 133.48766999999998, "r": 530.76263, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "47", "bbox": {"l": 536.29742, "t": 133.48766999999998, "r": 547.36707, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "4.3.3", "bbox": {"l": 151.20018, "t": 146.02728000000002, "r": 173.32571, "b": 155.24030000000005, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8571, "t": 146.02728000000002, "r": 530.56757, "b": 155.24030000000005, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "50", "bbox": {"l": 536.09894, "t": 146.02728000000002, "r": 547.16174, "b": 155.24030000000005, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "4.3.4", "bbox": {"l": 151.20018, "t": 158.50714000000005, "r": 173.32639, "b": 167.72015, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Creating the CUSTOMER_LOGIN_ID global variable", "bbox": {"l": 178.85794, "t": 158.50714000000005, "r": 411.62085, "b": 167.72015, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ". . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 417.1524, "t": 158.50714000000005, "r": 530.54919, "b": 167.72015, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "52", "bbox": {"l": 536.08075, "t": 158.50714000000005, "r": 547.14386, "b": 167.72015, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "4.3.5", "bbox": {"l": 151.20018, "t": 170.98699999999997, "r": 173.3559, "b": 180.20001000000002, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89482, "t": 170.98699999999997, "r": 530.53705, "b": 180.20001000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "54", "bbox": {"l": 536.07599, "t": 170.98699999999997, "r": 547.15387, "b": 180.20001000000002, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "4.3.6", "bbox": {"l": 151.20018, "t": 183.52661, "r": 173.3559, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Defining and creating column masks", "bbox": {"l": 178.89482, "t": 183.52661, "r": 339.45404, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.99295, "t": 183.52661, "r": 530.54706, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "58", "bbox": {"l": 536.086, "t": 183.52661, "r": 547.16388, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "4.3.7", "bbox": {"l": 151.20018, "t": 196.00647000000004, "r": 173.35544, "b": 205.21947999999998, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Restricting the inserting and updating of masked data . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89426, "t": 196.00647000000004, "r": 530.53931, "b": 205.21947999999998, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "60", "bbox": {"l": 536.07812, "t": 196.00647000000004, "r": 547.15576, "b": 205.21947999999998, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "4.3.8", "bbox": {"l": 151.20018, "t": 208.48632999999995, "r": 173.51157, "b": 217.69934, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Activating row and column access control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.0894, "t": 208.48632999999995, "r": 530.41339, "b": 217.69934, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "63", "bbox": {"l": 535.99127, "t": 208.48632999999995, "r": 547.14697, "b": 217.69934, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "4.3.9", "bbox": {"l": 151.20018, "t": 221.02594, "r": 173.41745, "b": 230.23895000000005, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Reviewing row permissions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97176, "t": 221.02594, "r": 530.48206, "b": 230.23895000000005, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "64", "bbox": {"l": 536.03638, "t": 221.02594, "r": 547.14502, "b": 230.23895000000005, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "4.3.10", "bbox": {"l": 151.20018, "t": 233.50580000000002, "r": 179.05151, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "Demonstrating data access with RCAC", "bbox": {"l": 181.83665, "t": 233.50580000000002, "r": 354.98581, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 360.55606, "t": 233.50580000000002, "r": 530.44922, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "66", "bbox": {"l": 536.01947, "t": 233.50580000000002, "r": 547.16003, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "4.3.11", "bbox": {"l": 151.20018, "t": 245.98566000000005, "r": 179.0511, "b": 255.19867, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Query implementation with RCAC activated . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 181.83621, "t": 245.98566000000005, "r": 530.43353, "b": 255.19867, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "75", "bbox": {"l": 536.00372, "t": 245.98566000000005, "r": 547.1441, "b": 255.19867, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "Chapter 5. RCAC and non-SQL interfaces", "bbox": {"l": 136.80002, "t": 268.48528999999996, "r": 335.23209, "b": 277.6983, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 336.1803, "t": 268.48528999999996, "r": 530.53851, "b": 277.6983, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "79", "bbox": {"l": 536.09161, "t": 268.48528999999996, "r": 547.19781, "b": 277.6983, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "5.1", "bbox": {"l": 136.80002, "t": 280.48514, "r": 150.64661, "b": 289.69812, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Unsupported interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18524, "t": 280.48514, "r": 530.56097, "b": 289.69812, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "80", "bbox": {"l": 536.09961, "t": 280.48514, "r": 547.17688, "b": 289.69812, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "5.2", "bbox": {"l": 136.80002, "t": 293.02478, "r": 150.7034, "b": 302.2377599999999, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Native query result differences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26476, "t": 293.02478, "r": 530.48578, "b": 302.2377599999999, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "80", "bbox": {"l": 536.04718, "t": 293.02478, "r": 547.16986, "b": 302.2377599999999, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "5.3", "bbox": {"l": 136.80002, "t": 305.50467, "r": 150.68428, "b": 314.71765, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "Accidental updates with masked values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.23799, "t": 305.50467, "r": 530.49377, "b": 314.71765, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "81", "bbox": {"l": 536.04749, "t": 305.50467, "r": 547.15491, "b": 314.71765, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "5.4", "bbox": {"l": 136.80002, "t": 317.98456, "r": 150.62888, "b": 327.19754, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "System CL commands considerations", "bbox": {"l": 156.16042, "t": 317.98456, "r": 323.13144, "b": 327.19754, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 328.66299, "t": 317.98456, "r": 530.56433, "b": 327.19754, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "82", "bbox": {"l": 536.09583, "t": 317.98456, "r": 547.15894, "b": 327.19754, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "5.4.1", "bbox": {"l": 151.20018, "t": 330.5242, "r": 173.4519, "b": 339.73718, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "Create Duplicate Object (CRTDUPOBJ) command . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01483, "t": 330.5242, "r": 530.4599, "b": 339.73718, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "82", "bbox": {"l": 536.02283, "t": 330.5242, "r": 547.14868, "b": 339.73718, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "5.4.2", "bbox": {"l": 151.20018, "t": 343.0040900000001, "r": 173.35596, "b": 352.21707, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "Copy File (CPYF) command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8949, "t": 343.0040900000001, "r": 530.53815, "b": 352.21707, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "82", "bbox": {"l": 536.07709, "t": 343.0040900000001, "r": 547.15497, "b": 352.21707, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "5.4.3", "bbox": {"l": 151.20018, "t": 355.48398, "r": 173.451, "b": 364.69696000000005, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "Copy Library (CPYLIB) command. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01372, "t": 355.48398, "r": 530.49475, "b": 364.69696000000005, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "83", "bbox": {"l": 536.05743, "t": 355.48398, "r": 547.18286, "b": 364.69696000000005, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "Chapter 6. Additional considerations", "bbox": {"l": 136.80002, "t": 377.98361, "r": 313.86292, "b": 387.19659, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 313.98047, "t": 377.98361, "r": 530.53851, "b": 387.19659, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "85", "bbox": {"l": 536.09131, "t": 377.98361, "r": 547.19684, "b": 387.19659, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "6.1", "bbox": {"l": 136.80003, "t": 389.98343, "r": 150.68416, "b": 399.19641, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "Timing of column masking", "bbox": {"l": 156.23781, "t": 389.98343, "r": 272.24521, "b": 399.19641, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 277.79886, "t": 389.98343, "r": 530.49005, "b": 399.19641, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "86", "bbox": {"l": 536.0437, "t": 389.98343, "r": 547.151, "b": 399.19641, "coord_origin": "TOPLEFT"}}, {"id": 86, "text": "6.2", "bbox": {"l": 136.80003, "t": 402.5230700000001, "r": 150.70372, "b": 411.73605, "coord_origin": "TOPLEFT"}}, {"id": 87, "text": "RCAC effects on data movement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.2652, "t": 402.5230700000001, "r": 530.49445, "b": 411.73605, "coord_origin": "TOPLEFT"}}, {"id": 88, "text": "88", "bbox": {"l": 536.05591, "t": 402.5230700000001, "r": 547.17889, "b": 411.73605, "coord_origin": "TOPLEFT"}}, {"id": 89, "text": "6.2.1", "bbox": {"l": 151.2002, "t": 415.00296, "r": 173.38661, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}}, {"id": 90, "text": "Effects when RCAC is defined on the source table", "bbox": {"l": 178.93321, "t": 415.00296, "r": 400.16882, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}}, {"id": 91, "text": ". . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 405.71545, "t": 415.00296, "r": 530.51398, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}}, {"id": 92, "text": "88", "bbox": {"l": 536.06061, "t": 415.00296, "r": 547.15381, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}}, {"id": 93, "text": "6.2.2", "bbox": {"l": 151.2002, "t": 427.48285, "r": 173.32501, "b": 436.69583, "coord_origin": "TOPLEFT"}}, {"id": 94, "text": "Effects when RCAC is defined on the target table", "bbox": {"l": 178.85622, "t": 427.48285, "r": 395.06064, "b": 436.69583, "coord_origin": "TOPLEFT"}}, {"id": 95, "text": ". . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 400.59186, "t": 427.48285, "r": 530.57513, "b": 436.69583, "coord_origin": "TOPLEFT"}}, {"id": 96, "text": "89", "bbox": {"l": 536.10632, "t": 427.48285, "r": 547.16876, "b": 436.69583, "coord_origin": "TOPLEFT"}}, {"id": 97, "text": "6.2.3", "bbox": {"l": 151.2002, "t": 440.02249, "r": 173.38657, "b": 449.23546999999996, "coord_origin": "TOPLEFT"}}, {"id": 98, "text": "Effects when RCAC is defined on both source and target tables . . . . . . . . . . . . .", "bbox": {"l": 178.93315, "t": 440.02249, "r": 530.5033, "b": 449.23546999999996, "coord_origin": "TOPLEFT"}}, {"id": 99, "text": "90", "bbox": {"l": 536.04987, "t": 440.02249, "r": 547.14307, "b": 449.23546999999996, "coord_origin": "TOPLEFT"}}, {"id": 100, "text": "6.3", "bbox": {"l": 136.80003, "t": 452.50238, "r": 150.64833, "b": 461.71536, "coord_origin": "TOPLEFT"}}, {"id": 101, "text": "RCAC effects on joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18765, "t": 452.50238, "r": 530.59979, "b": 461.71536, "coord_origin": "TOPLEFT"}}, {"id": 102, "text": "91", "bbox": {"l": 536.1391, "t": 452.50238, "r": 547.21777, "b": 461.71536, "coord_origin": "TOPLEFT"}}, {"id": 103, "text": "6.3.1", "bbox": {"l": 151.2002, "t": 464.98227, "r": 173.57745, "b": 474.19525, "coord_origin": "TOPLEFT"}}, {"id": 104, "text": "Inner joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92", "bbox": {"l": 179.17177, "t": 464.98227, "r": 547.25958, "b": 474.19525, "coord_origin": "TOPLEFT"}}, {"id": 105, "text": "6.3.2", "bbox": {"l": 151.20016, "t": 477.52191, "r": 173.60931, "b": 486.73489, "coord_origin": "TOPLEFT"}}, {"id": 106, "text": "Outer joins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94", "bbox": {"l": 179.21159, "t": 477.52191, "r": 547.25958, "b": 486.73489, "coord_origin": "TOPLEFT"}}, {"id": 107, "text": "6.3.3", "bbox": {"l": 151.20016, "t": 490.0018, "r": 173.47958, "b": 499.21478, "coord_origin": "TOPLEFT"}}, {"id": 108, "text": "Exception joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.04944, "t": 490.0018, "r": 530.4812, "b": 499.21478, "coord_origin": "TOPLEFT"}}, {"id": 109, "text": "96", "bbox": {"l": 536.05103, "t": 490.0018, "r": 547.19073, "b": 499.21478, "coord_origin": "TOPLEFT"}}, {"id": 110, "text": "6.4", "bbox": {"l": 136.8, "t": 502.54144, "r": 150.62956, "b": 511.75443, "coord_origin": "TOPLEFT"}}, {"id": 111, "text": "Monitoring, analyzing, and debugging with RCAC", "bbox": {"l": 156.16138, "t": 502.54144, "r": 372.92725, "b": 511.75443, "coord_origin": "TOPLEFT"}}, {"id": 112, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 378.45905, "t": 502.54144, "r": 530.58417, "b": 511.75443, "coord_origin": "TOPLEFT"}}, {"id": 113, "text": "97", "bbox": {"l": 536.11597, "t": 502.54144, "r": 547.17963, "b": 511.75443, "coord_origin": "TOPLEFT"}}, {"id": 114, "text": "6.4.1", "bbox": {"l": 151.20016, "t": 515.02133, "r": 173.32509, "b": 524.23431, "coord_origin": "TOPLEFT"}}, {"id": 115, "text": "Query monitoring and analysis tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85632, "t": 515.02133, "r": 530.57709, "b": 524.23431, "coord_origin": "TOPLEFT"}}, {"id": 116, "text": "97", "bbox": {"l": 536.10834, "t": 515.02133, "r": 547.17078, "b": 524.23431, "coord_origin": "TOPLEFT"}}, {"id": 117, "text": "6.4.2", "bbox": {"l": 151.20016, "t": 527.50122, "r": 173.44958, "b": 536.7142200000001, "coord_origin": "TOPLEFT"}}, {"id": 118, "text": "Index advisor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01193, "t": 527.50122, "r": 530.53064, "b": 536.7142200000001, "coord_origin": "TOPLEFT"}}, {"id": 119, "text": "99", "bbox": {"l": 536.09302, "t": 527.50122, "r": 547.21771, "b": 536.7142200000001, "coord_origin": "TOPLEFT"}}, {"id": 120, "text": "6.4.3", "bbox": {"l": 151.20013, "t": 540.0408600000001, "r": 173.35367, "b": 549.25386, "coord_origin": "TOPLEFT"}}, {"id": 121, "text": "Metadata using catalogs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89204, "t": 540.0408600000001, "r": 525.01111, "b": 549.25386, "coord_origin": "TOPLEFT"}}, {"id": 122, "text": "100", "bbox": {"l": 530.54944, "t": 540.0408600000001, "r": 547.16461, "b": 549.25386, "coord_origin": "TOPLEFT"}}, {"id": 123, "text": "6.5", "bbox": {"l": 136.79997, "t": 552.52074, "r": 150.76207, "b": 561.73373, "coord_origin": "TOPLEFT"}}, {"id": 124, "text": "Views, materialized query tables, and query rewrite with RCAC . . . . . . . . . . . . . . . .", "bbox": {"l": 156.34691, "t": 552.52074, "r": 524.80566, "b": 561.73373, "coord_origin": "TOPLEFT"}}, {"id": 125, "text": "102", "bbox": {"l": 530.3905, "t": 552.52074, "r": 547.14502, "b": 561.73373, "coord_origin": "TOPLEFT"}}, {"id": 126, "text": "6.5.1", "bbox": {"l": 151.20013, "t": 565.00061, "r": 173.42041, "b": 574.21361, "coord_origin": "TOPLEFT"}}, {"id": 127, "text": "Views", "bbox": {"l": 178.97548, "t": 565.00061, "r": 205.62183, "b": 574.21361, "coord_origin": "TOPLEFT"}}, {"id": 128, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 211.1769, "t": 565.00061, "r": 525.03827, "b": 574.21361, "coord_origin": "TOPLEFT"}}, {"id": 129, "text": "102", "bbox": {"l": 530.59332, "t": 565.00061, "r": 547.25854, "b": 574.21361, "coord_origin": "TOPLEFT"}}, {"id": 130, "text": "6.5.2", "bbox": {"l": 151.20013, "t": 577.54025, "r": 173.51099, "b": 586.75325, "coord_origin": "TOPLEFT"}}, {"id": 131, "text": "Materialized query tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.0887, "t": 577.54025, "r": 524.85681, "b": 586.75325, "coord_origin": "TOPLEFT"}}, {"id": 132, "text": "103", "bbox": {"l": 530.43451, "t": 577.54025, "r": 547.16766, "b": 586.75325, "coord_origin": "TOPLEFT"}}, {"id": 133, "text": "6.5.3", "bbox": {"l": 151.20013, "t": 590.02013, "r": 173.41756, "b": 599.23312, "coord_origin": "TOPLEFT"}}, {"id": 134, "text": "Query rewrite", "bbox": {"l": 178.97192, "t": 590.02013, "r": 238.92101000000002, "b": 599.23312, "coord_origin": "TOPLEFT"}}, {"id": 135, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 244.47537000000003, "t": 590.02013, "r": 524.9704, "b": 599.23312, "coord_origin": "TOPLEFT"}}, {"id": 136, "text": "105", "bbox": {"l": 530.52472, "t": 590.02013, "r": 547.18781, "b": 599.23312, "coord_origin": "TOPLEFT"}}, {"id": 137, "text": "6.6", "bbox": {"l": 136.79997, "t": 602.5, "r": 150.70438, "b": 611.713, "coord_origin": "TOPLEFT"}}, {"id": 138, "text": "RCAC effects on performance and scalability. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26613, "t": 602.5, "r": 524.92279, "b": 611.713, "coord_origin": "TOPLEFT"}}, {"id": 139, "text": "105", "bbox": {"l": 530.48456, "t": 602.5, "r": 547.16986, "b": 611.713, "coord_origin": "TOPLEFT"}}, {"id": 140, "text": "6.7", "bbox": {"l": 136.79997, "t": 615.03964, "r": 150.70482, "b": 624.25264, "coord_origin": "TOPLEFT"}}, {"id": 141, "text": "Exclusive lock to implement RCAC (availability issues) . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26675, "t": 615.03964, "r": 524.87512, "b": 624.25264, "coord_origin": "TOPLEFT"}}, {"id": 142, "text": "107", "bbox": {"l": 530.43701, "t": 615.03964, "r": 547.12286, "b": 624.25264, "coord_origin": "TOPLEFT"}}, {"id": 143, "text": "6.8", "bbox": {"l": 136.79997, "t": 627.51952, "r": 150.62793, "b": 636.73251, "coord_origin": "TOPLEFT"}}, {"id": 144, "text": "Avoiding propagation of masked data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.1591, "t": 627.51952, "r": 525.047, "b": 636.73251, "coord_origin": "TOPLEFT"}}, {"id": 145, "text": "108", "bbox": {"l": 530.57819, "t": 627.51952, "r": 547.17175, "b": 636.73251, "coord_origin": "TOPLEFT"}}, {"id": 146, "text": "6.8.1", "bbox": {"l": 151.20013, "t": 639.99939, "r": 173.48119, "b": 649.21239, "coord_origin": "TOPLEFT"}}, {"id": 147, "text": "Check constraint solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.05145, "t": 639.99939, "r": 524.91864, "b": 649.21239, "coord_origin": "TOPLEFT"}}, {"id": 148, "text": "108", "bbox": {"l": 530.48889, "t": 639.99939, "r": 547.19971, "b": 649.21239, "coord_origin": "TOPLEFT"}}, {"id": 149, "text": "6.8.2", "bbox": {"l": 151.20013, "t": 652.53903, "r": 173.32486, "b": 661.75203, "coord_origin": "TOPLEFT"}}, {"id": 150, "text": "Before trigger solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85603, "t": 652.53903, "r": 525.07208, "b": 661.75203, "coord_origin": "TOPLEFT"}}, {"id": 151, "text": "109", "bbox": {"l": 530.60321, "t": 652.53903, "r": 547.19678, "b": 661.75203, "coord_origin": "TOPLEFT"}}, {"id": 152, "text": "6.9", "bbox": {"l": 136.79997, "t": 665.01891, "r": 150.70258, "b": 674.23191, "coord_origin": "TOPLEFT"}}, {"id": 153, "text": "Triggers and functions (SECURED) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26361, "t": 665.01891, "r": 524.87256, "b": 674.23191, "coord_origin": "TOPLEFT"}}, {"id": 154, "text": "109", "bbox": {"l": 530.43359, "t": 665.01891, "r": 547.11676, "b": 674.23191, "coord_origin": "TOPLEFT"}}, {"id": 155, "text": "6.9.1", "bbox": {"l": 151.20013, "t": 677.49879, "r": 173.32774, "b": 686.71179, "coord_origin": "TOPLEFT"}}, {"id": 156, "text": "Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85965, "t": 677.49879, "r": 525.13092, "b": 686.71179, "coord_origin": "TOPLEFT"}}, {"id": 157, "text": "109", "bbox": {"l": 530.66284, "t": 677.49879, "r": 547.25854, "b": 686.71179, "coord_origin": "TOPLEFT"}}, {"id": 158, "text": "6.9.2", "bbox": {"l": 151.20013, "t": 690.0384300000001, "r": 173.57503, "b": 699.251434, "coord_origin": "TOPLEFT"}}, {"id": 159, "text": "Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.16876, "t": 690.0384300000001, "r": 524.84283, "b": 699.251434, "coord_origin": "TOPLEFT"}}, {"id": 160, "text": "110", "bbox": {"l": 530.43652, "t": 690.0384300000001, "r": 547.21771, "b": 699.251434, "coord_origin": "TOPLEFT"}}, {"id": 161, "text": "6.10", "bbox": {"l": 136.79996, "t": 702.518311, "r": 156.34335, "b": 711.731316, "coord_origin": "TOPLEFT"}}, {"id": 162, "text": "RCAC is only one part of the solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 159.13527, "t": 702.518311, "r": 524.81567, "b": 711.731316, "coord_origin": "TOPLEFT"}}, {"id": 163, "text": "111", "bbox": {"l": 530.39954, "t": 702.518311, "r": 547.151, "b": 711.731316, "coord_origin": "TOPLEFT"}}, {"id": 164, "text": "Chapter 7. Row and Column Access Control management", "bbox": {"l": 136.79996, "t": 725.017952, "r": 413.01562, "b": 734.230957, "coord_origin": "TOPLEFT"}}, {"id": 165, "text": " . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 413.99973, "t": 725.017952, "r": 525.0014, "b": 734.230957, "coord_origin": "TOPLEFT"}}, {"id": 166, "text": "113", "bbox": {"l": 530.55145, "t": 725.017952, "r": 547.20172, "b": 734.230957, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.4805679321289, "t": 754.1161499023438, "r": 75.641998, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8876830339431763, "cells": [{"id": 0, "text": "iv ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 75.641998, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 90.44805145263672, "t": 754.6052856445312, "r": 331.7034606933594, "b": 763.9476318359375, "coord_origin": "TOPLEFT"}, "confidence": 0.936427891254425, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 90.599998, "t": 755.538002, "r": 331.55881, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "table", "bbox": {"l": 135.92572021484375, "t": 70.81258392333984, "r": 547.7196044921875, "b": 734.230957, "coord_origin": "TOPLEFT"}, "confidence": 0.9778977036476135, "cells": [{"id": 2, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 504.58301, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": ". . . . .", "bbox": {"l": 505.67957, "t": 71.50867000000005, "r": 530.59589, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "37", "bbox": {"l": 536.13281, "t": 71.50867000000005, "r": 547.20673, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "4.1", "bbox": {"l": 136.80002, "t": 83.50847999999996, "r": 150.64761, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Business requirements for the RCAC banking scenario . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18666, "t": 83.50847999999996, "r": 530.52008, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "38", "bbox": {"l": 536.05914, "t": 83.50847999999996, "r": 547.13721, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "4.2", "bbox": {"l": 136.80002, "t": 95.98834000000011, "r": 150.64821, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Description of the users roles and responsibilities", "bbox": {"l": 156.18748, "t": 95.98834000000011, "r": 372.67761, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 378.21689, "t": 95.98834000000011, "r": 530.547, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "39", "bbox": {"l": 536.0863, "t": 95.98834000000011, "r": 547.16486, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "4.3", "bbox": {"l": 136.80002, "t": 108.52795000000015, "r": 150.68542, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Implementation of RCAC", "bbox": {"l": 156.23959, "t": 108.52795000000015, "r": 266.7135, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 272.26767, "t": 108.52795000000015, "r": 530.53625, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "42", "bbox": {"l": 536.09039, "t": 108.52795000000015, "r": 547.19873, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "4.3.1", "bbox": {"l": 151.20018, "t": 121.00780999999995, "r": 173.32434, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Reviewing the tables that are used in this example", "bbox": {"l": 178.85538, "t": 121.00780999999995, "r": 400.57443, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": ". . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 406.10547, "t": 121.00780999999995, "r": 530.55383, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "42", "bbox": {"l": 536.0849, "t": 121.00780999999995, "r": 547.14697, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "4.3.2", "bbox": {"l": 151.20018, "t": 133.48766999999998, "r": 173.33942, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Assigning function ID QIBM_DB_SECADM to the Database Engineers group", "bbox": {"l": 178.87422, "t": 133.48766999999998, "r": 516.9256, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": ". .", "bbox": {"l": 522.46039, "t": 133.48766999999998, "r": 530.76263, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "47", "bbox": {"l": 536.29742, "t": 133.48766999999998, "r": 547.36707, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "4.3.3", "bbox": {"l": 151.20018, "t": 146.02728000000002, "r": 173.32571, "b": 155.24030000000005, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8571, "t": 146.02728000000002, "r": 530.56757, "b": 155.24030000000005, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "50", "bbox": {"l": 536.09894, "t": 146.02728000000002, "r": 547.16174, "b": 155.24030000000005, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "4.3.4", "bbox": {"l": 151.20018, "t": 158.50714000000005, "r": 173.32639, "b": 167.72015, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Creating the CUSTOMER_LOGIN_ID global variable", "bbox": {"l": 178.85794, "t": 158.50714000000005, "r": 411.62085, "b": 167.72015, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ". . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 417.1524, "t": 158.50714000000005, "r": 530.54919, "b": 167.72015, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "52", "bbox": {"l": 536.08075, "t": 158.50714000000005, "r": 547.14386, "b": 167.72015, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "4.3.5", "bbox": {"l": 151.20018, "t": 170.98699999999997, "r": 173.3559, "b": 180.20001000000002, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89482, "t": 170.98699999999997, "r": 530.53705, "b": 180.20001000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "54", "bbox": {"l": 536.07599, "t": 170.98699999999997, "r": 547.15387, "b": 180.20001000000002, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "4.3.6", "bbox": {"l": 151.20018, "t": 183.52661, "r": 173.3559, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Defining and creating column masks", "bbox": {"l": 178.89482, "t": 183.52661, "r": 339.45404, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.99295, "t": 183.52661, "r": 530.54706, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "58", "bbox": {"l": 536.086, "t": 183.52661, "r": 547.16388, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "4.3.7", "bbox": {"l": 151.20018, "t": 196.00647000000004, "r": 173.35544, "b": 205.21947999999998, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Restricting the inserting and updating of masked data . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89426, "t": 196.00647000000004, "r": 530.53931, "b": 205.21947999999998, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "60", "bbox": {"l": 536.07812, "t": 196.00647000000004, "r": 547.15576, "b": 205.21947999999998, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "4.3.8", "bbox": {"l": 151.20018, "t": 208.48632999999995, "r": 173.51157, "b": 217.69934, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Activating row and column access control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.0894, "t": 208.48632999999995, "r": 530.41339, "b": 217.69934, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "63", "bbox": {"l": 535.99127, "t": 208.48632999999995, "r": 547.14697, "b": 217.69934, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "4.3.9", "bbox": {"l": 151.20018, "t": 221.02594, "r": 173.41745, "b": 230.23895000000005, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Reviewing row permissions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97176, "t": 221.02594, "r": 530.48206, "b": 230.23895000000005, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "64", "bbox": {"l": 536.03638, "t": 221.02594, "r": 547.14502, "b": 230.23895000000005, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "4.3.10", "bbox": {"l": 151.20018, "t": 233.50580000000002, "r": 179.05151, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "Demonstrating data access with RCAC", "bbox": {"l": 181.83665, "t": 233.50580000000002, "r": 354.98581, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 360.55606, "t": 233.50580000000002, "r": 530.44922, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "66", "bbox": {"l": 536.01947, "t": 233.50580000000002, "r": 547.16003, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "4.3.11", "bbox": {"l": 151.20018, "t": 245.98566000000005, "r": 179.0511, "b": 255.19867, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Query implementation with RCAC activated . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 181.83621, "t": 245.98566000000005, "r": 530.43353, "b": 255.19867, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "75", "bbox": {"l": 536.00372, "t": 245.98566000000005, "r": 547.1441, "b": 255.19867, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "Chapter 5. RCAC and non-SQL interfaces", "bbox": {"l": 136.80002, "t": 268.48528999999996, "r": 335.23209, "b": 277.6983, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 336.1803, "t": 268.48528999999996, "r": 530.53851, "b": 277.6983, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "79", "bbox": {"l": 536.09161, "t": 268.48528999999996, "r": 547.19781, "b": 277.6983, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "5.1", "bbox": {"l": 136.80002, "t": 280.48514, "r": 150.64661, "b": 289.69812, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Unsupported interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18524, "t": 280.48514, "r": 530.56097, "b": 289.69812, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "80", "bbox": {"l": 536.09961, "t": 280.48514, "r": 547.17688, "b": 289.69812, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "5.2", "bbox": {"l": 136.80002, "t": 293.02478, "r": 150.7034, "b": 302.2377599999999, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Native query result differences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26476, "t": 293.02478, "r": 530.48578, "b": 302.2377599999999, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "80", "bbox": {"l": 536.04718, "t": 293.02478, "r": 547.16986, "b": 302.2377599999999, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "5.3", "bbox": {"l": 136.80002, "t": 305.50467, "r": 150.68428, "b": 314.71765, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "Accidental updates with masked values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.23799, "t": 305.50467, "r": 530.49377, "b": 314.71765, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "81", "bbox": {"l": 536.04749, "t": 305.50467, "r": 547.15491, "b": 314.71765, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "5.4", "bbox": {"l": 136.80002, "t": 317.98456, "r": 150.62888, "b": 327.19754, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "System CL commands considerations", "bbox": {"l": 156.16042, "t": 317.98456, "r": 323.13144, "b": 327.19754, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 328.66299, "t": 317.98456, "r": 530.56433, "b": 327.19754, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "82", "bbox": {"l": 536.09583, "t": 317.98456, "r": 547.15894, "b": 327.19754, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "5.4.1", "bbox": {"l": 151.20018, "t": 330.5242, "r": 173.4519, "b": 339.73718, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "Create Duplicate Object (CRTDUPOBJ) command . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01483, "t": 330.5242, "r": 530.4599, "b": 339.73718, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "82", "bbox": {"l": 536.02283, "t": 330.5242, "r": 547.14868, "b": 339.73718, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "5.4.2", "bbox": {"l": 151.20018, "t": 343.0040900000001, "r": 173.35596, "b": 352.21707, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "Copy File (CPYF) command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8949, "t": 343.0040900000001, "r": 530.53815, "b": 352.21707, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "82", "bbox": {"l": 536.07709, "t": 343.0040900000001, "r": 547.15497, "b": 352.21707, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "5.4.3", "bbox": {"l": 151.20018, "t": 355.48398, "r": 173.451, "b": 364.69696000000005, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "Copy Library (CPYLIB) command. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01372, "t": 355.48398, "r": 530.49475, "b": 364.69696000000005, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "83", "bbox": {"l": 536.05743, "t": 355.48398, "r": 547.18286, "b": 364.69696000000005, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "Chapter 6. Additional considerations", "bbox": {"l": 136.80002, "t": 377.98361, "r": 313.86292, "b": 387.19659, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 313.98047, "t": 377.98361, "r": 530.53851, "b": 387.19659, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "85", "bbox": {"l": 536.09131, "t": 377.98361, "r": 547.19684, "b": 387.19659, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "6.1", "bbox": {"l": 136.80003, "t": 389.98343, "r": 150.68416, "b": 399.19641, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "Timing of column masking", "bbox": {"l": 156.23781, "t": 389.98343, "r": 272.24521, "b": 399.19641, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 277.79886, "t": 389.98343, "r": 530.49005, "b": 399.19641, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "86", "bbox": {"l": 536.0437, "t": 389.98343, "r": 547.151, "b": 399.19641, "coord_origin": "TOPLEFT"}}, {"id": 86, "text": "6.2", "bbox": {"l": 136.80003, "t": 402.5230700000001, "r": 150.70372, "b": 411.73605, "coord_origin": "TOPLEFT"}}, {"id": 87, "text": "RCAC effects on data movement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.2652, "t": 402.5230700000001, "r": 530.49445, "b": 411.73605, "coord_origin": "TOPLEFT"}}, {"id": 88, "text": "88", "bbox": {"l": 536.05591, "t": 402.5230700000001, "r": 547.17889, "b": 411.73605, "coord_origin": "TOPLEFT"}}, {"id": 89, "text": "6.2.1", "bbox": {"l": 151.2002, "t": 415.00296, "r": 173.38661, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}}, {"id": 90, "text": "Effects when RCAC is defined on the source table", "bbox": {"l": 178.93321, "t": 415.00296, "r": 400.16882, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}}, {"id": 91, "text": ". . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 405.71545, "t": 415.00296, "r": 530.51398, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}}, {"id": 92, "text": "88", "bbox": {"l": 536.06061, "t": 415.00296, "r": 547.15381, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}}, {"id": 93, "text": "6.2.2", "bbox": {"l": 151.2002, "t": 427.48285, "r": 173.32501, "b": 436.69583, "coord_origin": "TOPLEFT"}}, {"id": 94, "text": "Effects when RCAC is defined on the target table", "bbox": {"l": 178.85622, "t": 427.48285, "r": 395.06064, "b": 436.69583, "coord_origin": "TOPLEFT"}}, {"id": 95, "text": ". . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 400.59186, "t": 427.48285, "r": 530.57513, "b": 436.69583, "coord_origin": "TOPLEFT"}}, {"id": 96, "text": "89", "bbox": {"l": 536.10632, "t": 427.48285, "r": 547.16876, "b": 436.69583, "coord_origin": "TOPLEFT"}}, {"id": 97, "text": "6.2.3", "bbox": {"l": 151.2002, "t": 440.02249, "r": 173.38657, "b": 449.23546999999996, "coord_origin": "TOPLEFT"}}, {"id": 98, "text": "Effects when RCAC is defined on both source and target tables . . . . . . . . . . . . .", "bbox": {"l": 178.93315, "t": 440.02249, "r": 530.5033, "b": 449.23546999999996, "coord_origin": "TOPLEFT"}}, {"id": 99, "text": "90", "bbox": {"l": 536.04987, "t": 440.02249, "r": 547.14307, "b": 449.23546999999996, "coord_origin": "TOPLEFT"}}, {"id": 100, "text": "6.3", "bbox": {"l": 136.80003, "t": 452.50238, "r": 150.64833, "b": 461.71536, "coord_origin": "TOPLEFT"}}, {"id": 101, "text": "RCAC effects on joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18765, "t": 452.50238, "r": 530.59979, "b": 461.71536, "coord_origin": "TOPLEFT"}}, {"id": 102, "text": "91", "bbox": {"l": 536.1391, "t": 452.50238, "r": 547.21777, "b": 461.71536, "coord_origin": "TOPLEFT"}}, {"id": 103, "text": "6.3.1", "bbox": {"l": 151.2002, "t": 464.98227, "r": 173.57745, "b": 474.19525, "coord_origin": "TOPLEFT"}}, {"id": 104, "text": "Inner joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92", "bbox": {"l": 179.17177, "t": 464.98227, "r": 547.25958, "b": 474.19525, "coord_origin": "TOPLEFT"}}, {"id": 105, "text": "6.3.2", "bbox": {"l": 151.20016, "t": 477.52191, "r": 173.60931, "b": 486.73489, "coord_origin": "TOPLEFT"}}, {"id": 106, "text": "Outer joins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94", "bbox": {"l": 179.21159, "t": 477.52191, "r": 547.25958, "b": 486.73489, "coord_origin": "TOPLEFT"}}, {"id": 107, "text": "6.3.3", "bbox": {"l": 151.20016, "t": 490.0018, "r": 173.47958, "b": 499.21478, "coord_origin": "TOPLEFT"}}, {"id": 108, "text": "Exception joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.04944, "t": 490.0018, "r": 530.4812, "b": 499.21478, "coord_origin": "TOPLEFT"}}, {"id": 109, "text": "96", "bbox": {"l": 536.05103, "t": 490.0018, "r": 547.19073, "b": 499.21478, "coord_origin": "TOPLEFT"}}, {"id": 110, "text": "6.4", "bbox": {"l": 136.8, "t": 502.54144, "r": 150.62956, "b": 511.75443, "coord_origin": "TOPLEFT"}}, {"id": 111, "text": "Monitoring, analyzing, and debugging with RCAC", "bbox": {"l": 156.16138, "t": 502.54144, "r": 372.92725, "b": 511.75443, "coord_origin": "TOPLEFT"}}, {"id": 112, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 378.45905, "t": 502.54144, "r": 530.58417, "b": 511.75443, "coord_origin": "TOPLEFT"}}, {"id": 113, "text": "97", "bbox": {"l": 536.11597, "t": 502.54144, "r": 547.17963, "b": 511.75443, "coord_origin": "TOPLEFT"}}, {"id": 114, "text": "6.4.1", "bbox": {"l": 151.20016, "t": 515.02133, "r": 173.32509, "b": 524.23431, "coord_origin": "TOPLEFT"}}, {"id": 115, "text": "Query monitoring and analysis tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85632, "t": 515.02133, "r": 530.57709, "b": 524.23431, "coord_origin": "TOPLEFT"}}, {"id": 116, "text": "97", "bbox": {"l": 536.10834, "t": 515.02133, "r": 547.17078, "b": 524.23431, "coord_origin": "TOPLEFT"}}, {"id": 117, "text": "6.4.2", "bbox": {"l": 151.20016, "t": 527.50122, "r": 173.44958, "b": 536.7142200000001, "coord_origin": "TOPLEFT"}}, {"id": 118, "text": "Index advisor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01193, "t": 527.50122, "r": 530.53064, "b": 536.7142200000001, "coord_origin": "TOPLEFT"}}, {"id": 119, "text": "99", "bbox": {"l": 536.09302, "t": 527.50122, "r": 547.21771, "b": 536.7142200000001, "coord_origin": "TOPLEFT"}}, {"id": 120, "text": "6.4.3", "bbox": {"l": 151.20013, "t": 540.0408600000001, "r": 173.35367, "b": 549.25386, "coord_origin": "TOPLEFT"}}, {"id": 121, "text": "Metadata using catalogs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89204, "t": 540.0408600000001, "r": 525.01111, "b": 549.25386, "coord_origin": "TOPLEFT"}}, {"id": 122, "text": "100", "bbox": {"l": 530.54944, "t": 540.0408600000001, "r": 547.16461, "b": 549.25386, "coord_origin": "TOPLEFT"}}, {"id": 123, "text": "6.5", "bbox": {"l": 136.79997, "t": 552.52074, "r": 150.76207, "b": 561.73373, "coord_origin": "TOPLEFT"}}, {"id": 124, "text": "Views, materialized query tables, and query rewrite with RCAC . . . . . . . . . . . . . . . .", "bbox": {"l": 156.34691, "t": 552.52074, "r": 524.80566, "b": 561.73373, "coord_origin": "TOPLEFT"}}, {"id": 125, "text": "102", "bbox": {"l": 530.3905, "t": 552.52074, "r": 547.14502, "b": 561.73373, "coord_origin": "TOPLEFT"}}, {"id": 126, "text": "6.5.1", "bbox": {"l": 151.20013, "t": 565.00061, "r": 173.42041, "b": 574.21361, "coord_origin": "TOPLEFT"}}, {"id": 127, "text": "Views", "bbox": {"l": 178.97548, "t": 565.00061, "r": 205.62183, "b": 574.21361, "coord_origin": "TOPLEFT"}}, {"id": 128, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 211.1769, "t": 565.00061, "r": 525.03827, "b": 574.21361, "coord_origin": "TOPLEFT"}}, {"id": 129, "text": "102", "bbox": {"l": 530.59332, "t": 565.00061, "r": 547.25854, "b": 574.21361, "coord_origin": "TOPLEFT"}}, {"id": 130, "text": "6.5.2", "bbox": {"l": 151.20013, "t": 577.54025, "r": 173.51099, "b": 586.75325, "coord_origin": "TOPLEFT"}}, {"id": 131, "text": "Materialized query tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.0887, "t": 577.54025, "r": 524.85681, "b": 586.75325, "coord_origin": "TOPLEFT"}}, {"id": 132, "text": "103", "bbox": {"l": 530.43451, "t": 577.54025, "r": 547.16766, "b": 586.75325, "coord_origin": "TOPLEFT"}}, {"id": 133, "text": "6.5.3", "bbox": {"l": 151.20013, "t": 590.02013, "r": 173.41756, "b": 599.23312, "coord_origin": "TOPLEFT"}}, {"id": 134, "text": "Query rewrite", "bbox": {"l": 178.97192, "t": 590.02013, "r": 238.92101000000002, "b": 599.23312, "coord_origin": "TOPLEFT"}}, {"id": 135, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 244.47537000000003, "t": 590.02013, "r": 524.9704, "b": 599.23312, "coord_origin": "TOPLEFT"}}, {"id": 136, "text": "105", "bbox": {"l": 530.52472, "t": 590.02013, "r": 547.18781, "b": 599.23312, "coord_origin": "TOPLEFT"}}, {"id": 137, "text": "6.6", "bbox": {"l": 136.79997, "t": 602.5, "r": 150.70438, "b": 611.713, "coord_origin": "TOPLEFT"}}, {"id": 138, "text": "RCAC effects on performance and scalability. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26613, "t": 602.5, "r": 524.92279, "b": 611.713, "coord_origin": "TOPLEFT"}}, {"id": 139, "text": "105", "bbox": {"l": 530.48456, "t": 602.5, "r": 547.16986, "b": 611.713, "coord_origin": "TOPLEFT"}}, {"id": 140, "text": "6.7", "bbox": {"l": 136.79997, "t": 615.03964, "r": 150.70482, "b": 624.25264, "coord_origin": "TOPLEFT"}}, {"id": 141, "text": "Exclusive lock to implement RCAC (availability issues) . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26675, "t": 615.03964, "r": 524.87512, "b": 624.25264, "coord_origin": "TOPLEFT"}}, {"id": 142, "text": "107", "bbox": {"l": 530.43701, "t": 615.03964, "r": 547.12286, "b": 624.25264, "coord_origin": "TOPLEFT"}}, {"id": 143, "text": "6.8", "bbox": {"l": 136.79997, "t": 627.51952, "r": 150.62793, "b": 636.73251, "coord_origin": "TOPLEFT"}}, {"id": 144, "text": "Avoiding propagation of masked data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.1591, "t": 627.51952, "r": 525.047, "b": 636.73251, "coord_origin": "TOPLEFT"}}, {"id": 145, "text": "108", "bbox": {"l": 530.57819, "t": 627.51952, "r": 547.17175, "b": 636.73251, "coord_origin": "TOPLEFT"}}, {"id": 146, "text": "6.8.1", "bbox": {"l": 151.20013, "t": 639.99939, "r": 173.48119, "b": 649.21239, "coord_origin": "TOPLEFT"}}, {"id": 147, "text": "Check constraint solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.05145, "t": 639.99939, "r": 524.91864, "b": 649.21239, "coord_origin": "TOPLEFT"}}, {"id": 148, "text": "108", "bbox": {"l": 530.48889, "t": 639.99939, "r": 547.19971, "b": 649.21239, "coord_origin": "TOPLEFT"}}, {"id": 149, "text": "6.8.2", "bbox": {"l": 151.20013, "t": 652.53903, "r": 173.32486, "b": 661.75203, "coord_origin": "TOPLEFT"}}, {"id": 150, "text": "Before trigger solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85603, "t": 652.53903, "r": 525.07208, "b": 661.75203, "coord_origin": "TOPLEFT"}}, {"id": 151, "text": "109", "bbox": {"l": 530.60321, "t": 652.53903, "r": 547.19678, "b": 661.75203, "coord_origin": "TOPLEFT"}}, {"id": 152, "text": "6.9", "bbox": {"l": 136.79997, "t": 665.01891, "r": 150.70258, "b": 674.23191, "coord_origin": "TOPLEFT"}}, {"id": 153, "text": "Triggers and functions (SECURED) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26361, "t": 665.01891, "r": 524.87256, "b": 674.23191, "coord_origin": "TOPLEFT"}}, {"id": 154, "text": "109", "bbox": {"l": 530.43359, "t": 665.01891, "r": 547.11676, "b": 674.23191, "coord_origin": "TOPLEFT"}}, {"id": 155, "text": "6.9.1", "bbox": {"l": 151.20013, "t": 677.49879, "r": 173.32774, "b": 686.71179, "coord_origin": "TOPLEFT"}}, {"id": 156, "text": "Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85965, "t": 677.49879, "r": 525.13092, "b": 686.71179, "coord_origin": "TOPLEFT"}}, {"id": 157, "text": "109", "bbox": {"l": 530.66284, "t": 677.49879, "r": 547.25854, "b": 686.71179, "coord_origin": "TOPLEFT"}}, {"id": 158, "text": "6.9.2", "bbox": {"l": 151.20013, "t": 690.0384300000001, "r": 173.57503, "b": 699.251434, "coord_origin": "TOPLEFT"}}, {"id": 159, "text": "Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.16876, "t": 690.0384300000001, "r": 524.84283, "b": 699.251434, "coord_origin": "TOPLEFT"}}, {"id": 160, "text": "110", "bbox": {"l": 530.43652, "t": 690.0384300000001, "r": 547.21771, "b": 699.251434, "coord_origin": "TOPLEFT"}}, {"id": 161, "text": "6.10", "bbox": {"l": 136.79996, "t": 702.518311, "r": 156.34335, "b": 711.731316, "coord_origin": "TOPLEFT"}}, {"id": 162, "text": "RCAC is only one part of the solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 159.13527, "t": 702.518311, "r": 524.81567, "b": 711.731316, "coord_origin": "TOPLEFT"}}, {"id": 163, "text": "111", "bbox": {"l": 530.39954, "t": 702.518311, "r": 547.151, "b": 711.731316, "coord_origin": "TOPLEFT"}}, {"id": 164, "text": "Chapter 7. Row and Column Access Control management", "bbox": {"l": 136.79996, "t": 725.017952, "r": 413.01562, "b": 734.230957, "coord_origin": "TOPLEFT"}}, {"id": 165, "text": " . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 413.99973, "t": 725.017952, "r": 525.0014, "b": 734.230957, "coord_origin": "TOPLEFT"}}, {"id": 166, "text": "113", "bbox": {"l": 530.55145, "t": 725.017952, "r": 547.20172, "b": 734.230957, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {"2": {"label": "table", "id": 2, "page_no": 5, "cluster": {"id": 2, "label": "table", "bbox": {"l": 135.92572021484375, "t": 70.81258392333984, "r": 547.7196044921875, "b": 734.230957, "coord_origin": "TOPLEFT"}, "confidence": 0.9778977036476135, "cells": [{"id": 2, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 504.58301, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": ". . . . .", "bbox": {"l": 505.67957, "t": 71.50867000000005, "r": 530.59589, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "37", "bbox": {"l": 536.13281, "t": 71.50867000000005, "r": 547.20673, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "4.1", "bbox": {"l": 136.80002, "t": 83.50847999999996, "r": 150.64761, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Business requirements for the RCAC banking scenario . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18666, "t": 83.50847999999996, "r": 530.52008, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "38", "bbox": {"l": 536.05914, "t": 83.50847999999996, "r": 547.13721, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "4.2", "bbox": {"l": 136.80002, "t": 95.98834000000011, "r": 150.64821, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Description of the users roles and responsibilities", "bbox": {"l": 156.18748, "t": 95.98834000000011, "r": 372.67761, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 378.21689, "t": 95.98834000000011, "r": 530.547, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "39", "bbox": {"l": 536.0863, "t": 95.98834000000011, "r": 547.16486, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "4.3", "bbox": {"l": 136.80002, "t": 108.52795000000015, "r": 150.68542, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Implementation of RCAC", "bbox": {"l": 156.23959, "t": 108.52795000000015, "r": 266.7135, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 272.26767, "t": 108.52795000000015, "r": 530.53625, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "42", "bbox": {"l": 536.09039, "t": 108.52795000000015, "r": 547.19873, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "4.3.1", "bbox": {"l": 151.20018, "t": 121.00780999999995, "r": 173.32434, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Reviewing the tables that are used in this example", "bbox": {"l": 178.85538, "t": 121.00780999999995, "r": 400.57443, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": ". . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 406.10547, "t": 121.00780999999995, "r": 530.55383, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "42", "bbox": {"l": 536.0849, "t": 121.00780999999995, "r": 547.14697, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "4.3.2", "bbox": {"l": 151.20018, "t": 133.48766999999998, "r": 173.33942, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Assigning function ID QIBM_DB_SECADM to the Database Engineers group", "bbox": {"l": 178.87422, "t": 133.48766999999998, "r": 516.9256, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": ". .", "bbox": {"l": 522.46039, "t": 133.48766999999998, "r": 530.76263, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "47", "bbox": {"l": 536.29742, "t": 133.48766999999998, "r": 547.36707, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "4.3.3", "bbox": {"l": 151.20018, "t": 146.02728000000002, "r": 173.32571, "b": 155.24030000000005, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8571, "t": 146.02728000000002, "r": 530.56757, "b": 155.24030000000005, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "50", "bbox": {"l": 536.09894, "t": 146.02728000000002, "r": 547.16174, "b": 155.24030000000005, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "4.3.4", "bbox": {"l": 151.20018, "t": 158.50714000000005, "r": 173.32639, "b": 167.72015, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Creating the CUSTOMER_LOGIN_ID global variable", "bbox": {"l": 178.85794, "t": 158.50714000000005, "r": 411.62085, "b": 167.72015, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ". . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 417.1524, "t": 158.50714000000005, "r": 530.54919, "b": 167.72015, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "52", "bbox": {"l": 536.08075, "t": 158.50714000000005, "r": 547.14386, "b": 167.72015, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "4.3.5", "bbox": {"l": 151.20018, "t": 170.98699999999997, "r": 173.3559, "b": 180.20001000000002, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89482, "t": 170.98699999999997, "r": 530.53705, "b": 180.20001000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "54", "bbox": {"l": 536.07599, "t": 170.98699999999997, "r": 547.15387, "b": 180.20001000000002, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "4.3.6", "bbox": {"l": 151.20018, "t": 183.52661, "r": 173.3559, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Defining and creating column masks", "bbox": {"l": 178.89482, "t": 183.52661, "r": 339.45404, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.99295, "t": 183.52661, "r": 530.54706, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "58", "bbox": {"l": 536.086, "t": 183.52661, "r": 547.16388, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "4.3.7", "bbox": {"l": 151.20018, "t": 196.00647000000004, "r": 173.35544, "b": 205.21947999999998, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Restricting the inserting and updating of masked data . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89426, "t": 196.00647000000004, "r": 530.53931, "b": 205.21947999999998, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "60", "bbox": {"l": 536.07812, "t": 196.00647000000004, "r": 547.15576, "b": 205.21947999999998, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "4.3.8", "bbox": {"l": 151.20018, "t": 208.48632999999995, "r": 173.51157, "b": 217.69934, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Activating row and column access control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.0894, "t": 208.48632999999995, "r": 530.41339, "b": 217.69934, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "63", "bbox": {"l": 535.99127, "t": 208.48632999999995, "r": 547.14697, "b": 217.69934, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "4.3.9", "bbox": {"l": 151.20018, "t": 221.02594, "r": 173.41745, "b": 230.23895000000005, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Reviewing row permissions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97176, "t": 221.02594, "r": 530.48206, "b": 230.23895000000005, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "64", "bbox": {"l": 536.03638, "t": 221.02594, "r": 547.14502, "b": 230.23895000000005, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "4.3.10", "bbox": {"l": 151.20018, "t": 233.50580000000002, "r": 179.05151, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "Demonstrating data access with RCAC", "bbox": {"l": 181.83665, "t": 233.50580000000002, "r": 354.98581, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 360.55606, "t": 233.50580000000002, "r": 530.44922, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "66", "bbox": {"l": 536.01947, "t": 233.50580000000002, "r": 547.16003, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "4.3.11", "bbox": {"l": 151.20018, "t": 245.98566000000005, "r": 179.0511, "b": 255.19867, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Query implementation with RCAC activated . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 181.83621, "t": 245.98566000000005, "r": 530.43353, "b": 255.19867, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "75", "bbox": {"l": 536.00372, "t": 245.98566000000005, "r": 547.1441, "b": 255.19867, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "Chapter 5. RCAC and non-SQL interfaces", "bbox": {"l": 136.80002, "t": 268.48528999999996, "r": 335.23209, "b": 277.6983, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 336.1803, "t": 268.48528999999996, "r": 530.53851, "b": 277.6983, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "79", "bbox": {"l": 536.09161, "t": 268.48528999999996, "r": 547.19781, "b": 277.6983, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "5.1", "bbox": {"l": 136.80002, "t": 280.48514, "r": 150.64661, "b": 289.69812, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Unsupported interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18524, "t": 280.48514, "r": 530.56097, "b": 289.69812, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "80", "bbox": {"l": 536.09961, "t": 280.48514, "r": 547.17688, "b": 289.69812, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "5.2", "bbox": {"l": 136.80002, "t": 293.02478, "r": 150.7034, "b": 302.2377599999999, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Native query result differences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26476, "t": 293.02478, "r": 530.48578, "b": 302.2377599999999, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "80", "bbox": {"l": 536.04718, "t": 293.02478, "r": 547.16986, "b": 302.2377599999999, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "5.3", "bbox": {"l": 136.80002, "t": 305.50467, "r": 150.68428, "b": 314.71765, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "Accidental updates with masked values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.23799, "t": 305.50467, "r": 530.49377, "b": 314.71765, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "81", "bbox": {"l": 536.04749, "t": 305.50467, "r": 547.15491, "b": 314.71765, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "5.4", "bbox": {"l": 136.80002, "t": 317.98456, "r": 150.62888, "b": 327.19754, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "System CL commands considerations", "bbox": {"l": 156.16042, "t": 317.98456, "r": 323.13144, "b": 327.19754, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 328.66299, "t": 317.98456, "r": 530.56433, "b": 327.19754, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "82", "bbox": {"l": 536.09583, "t": 317.98456, "r": 547.15894, "b": 327.19754, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "5.4.1", "bbox": {"l": 151.20018, "t": 330.5242, "r": 173.4519, "b": 339.73718, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "Create Duplicate Object (CRTDUPOBJ) command . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01483, "t": 330.5242, "r": 530.4599, "b": 339.73718, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "82", "bbox": {"l": 536.02283, "t": 330.5242, "r": 547.14868, "b": 339.73718, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "5.4.2", "bbox": {"l": 151.20018, "t": 343.0040900000001, "r": 173.35596, "b": 352.21707, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "Copy File (CPYF) command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8949, "t": 343.0040900000001, "r": 530.53815, "b": 352.21707, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "82", "bbox": {"l": 536.07709, "t": 343.0040900000001, "r": 547.15497, "b": 352.21707, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "5.4.3", "bbox": {"l": 151.20018, "t": 355.48398, "r": 173.451, "b": 364.69696000000005, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "Copy Library (CPYLIB) command. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01372, "t": 355.48398, "r": 530.49475, "b": 364.69696000000005, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "83", "bbox": {"l": 536.05743, "t": 355.48398, "r": 547.18286, "b": 364.69696000000005, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "Chapter 6. Additional considerations", "bbox": {"l": 136.80002, "t": 377.98361, "r": 313.86292, "b": 387.19659, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 313.98047, "t": 377.98361, "r": 530.53851, "b": 387.19659, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "85", "bbox": {"l": 536.09131, "t": 377.98361, "r": 547.19684, "b": 387.19659, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "6.1", "bbox": {"l": 136.80003, "t": 389.98343, "r": 150.68416, "b": 399.19641, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "Timing of column masking", "bbox": {"l": 156.23781, "t": 389.98343, "r": 272.24521, "b": 399.19641, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 277.79886, "t": 389.98343, "r": 530.49005, "b": 399.19641, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "86", "bbox": {"l": 536.0437, "t": 389.98343, "r": 547.151, "b": 399.19641, "coord_origin": "TOPLEFT"}}, {"id": 86, "text": "6.2", "bbox": {"l": 136.80003, "t": 402.5230700000001, "r": 150.70372, "b": 411.73605, "coord_origin": "TOPLEFT"}}, {"id": 87, "text": "RCAC effects on data movement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.2652, "t": 402.5230700000001, "r": 530.49445, "b": 411.73605, "coord_origin": "TOPLEFT"}}, {"id": 88, "text": "88", "bbox": {"l": 536.05591, "t": 402.5230700000001, "r": 547.17889, "b": 411.73605, "coord_origin": "TOPLEFT"}}, {"id": 89, "text": "6.2.1", "bbox": {"l": 151.2002, "t": 415.00296, "r": 173.38661, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}}, {"id": 90, "text": "Effects when RCAC is defined on the source table", "bbox": {"l": 178.93321, "t": 415.00296, "r": 400.16882, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}}, {"id": 91, "text": ". . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 405.71545, "t": 415.00296, "r": 530.51398, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}}, {"id": 92, "text": "88", "bbox": {"l": 536.06061, "t": 415.00296, "r": 547.15381, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}}, {"id": 93, "text": "6.2.2", "bbox": {"l": 151.2002, "t": 427.48285, "r": 173.32501, "b": 436.69583, "coord_origin": "TOPLEFT"}}, {"id": 94, "text": "Effects when RCAC is defined on the target table", "bbox": {"l": 178.85622, "t": 427.48285, "r": 395.06064, "b": 436.69583, "coord_origin": "TOPLEFT"}}, {"id": 95, "text": ". . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 400.59186, "t": 427.48285, "r": 530.57513, "b": 436.69583, "coord_origin": "TOPLEFT"}}, {"id": 96, "text": "89", "bbox": {"l": 536.10632, "t": 427.48285, "r": 547.16876, "b": 436.69583, "coord_origin": "TOPLEFT"}}, {"id": 97, "text": "6.2.3", "bbox": {"l": 151.2002, "t": 440.02249, "r": 173.38657, "b": 449.23546999999996, "coord_origin": "TOPLEFT"}}, {"id": 98, "text": "Effects when RCAC is defined on both source and target tables . . . . . . . . . . . . .", "bbox": {"l": 178.93315, "t": 440.02249, "r": 530.5033, "b": 449.23546999999996, "coord_origin": "TOPLEFT"}}, {"id": 99, "text": "90", "bbox": {"l": 536.04987, "t": 440.02249, "r": 547.14307, "b": 449.23546999999996, "coord_origin": "TOPLEFT"}}, {"id": 100, "text": "6.3", "bbox": {"l": 136.80003, "t": 452.50238, "r": 150.64833, "b": 461.71536, "coord_origin": "TOPLEFT"}}, {"id": 101, "text": "RCAC effects on joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18765, "t": 452.50238, "r": 530.59979, "b": 461.71536, "coord_origin": "TOPLEFT"}}, {"id": 102, "text": "91", "bbox": {"l": 536.1391, "t": 452.50238, "r": 547.21777, "b": 461.71536, "coord_origin": "TOPLEFT"}}, {"id": 103, "text": "6.3.1", "bbox": {"l": 151.2002, "t": 464.98227, "r": 173.57745, "b": 474.19525, "coord_origin": "TOPLEFT"}}, {"id": 104, "text": "Inner joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92", "bbox": {"l": 179.17177, "t": 464.98227, "r": 547.25958, "b": 474.19525, "coord_origin": "TOPLEFT"}}, {"id": 105, "text": "6.3.2", "bbox": {"l": 151.20016, "t": 477.52191, "r": 173.60931, "b": 486.73489, "coord_origin": "TOPLEFT"}}, {"id": 106, "text": "Outer joins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94", "bbox": {"l": 179.21159, "t": 477.52191, "r": 547.25958, "b": 486.73489, "coord_origin": "TOPLEFT"}}, {"id": 107, "text": "6.3.3", "bbox": {"l": 151.20016, "t": 490.0018, "r": 173.47958, "b": 499.21478, "coord_origin": "TOPLEFT"}}, {"id": 108, "text": "Exception joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.04944, "t": 490.0018, "r": 530.4812, "b": 499.21478, "coord_origin": "TOPLEFT"}}, {"id": 109, "text": "96", "bbox": {"l": 536.05103, "t": 490.0018, "r": 547.19073, "b": 499.21478, "coord_origin": "TOPLEFT"}}, {"id": 110, "text": "6.4", "bbox": {"l": 136.8, "t": 502.54144, "r": 150.62956, "b": 511.75443, "coord_origin": "TOPLEFT"}}, {"id": 111, "text": "Monitoring, analyzing, and debugging with RCAC", "bbox": {"l": 156.16138, "t": 502.54144, "r": 372.92725, "b": 511.75443, "coord_origin": "TOPLEFT"}}, {"id": 112, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 378.45905, "t": 502.54144, "r": 530.58417, "b": 511.75443, "coord_origin": "TOPLEFT"}}, {"id": 113, "text": "97", "bbox": {"l": 536.11597, "t": 502.54144, "r": 547.17963, "b": 511.75443, "coord_origin": "TOPLEFT"}}, {"id": 114, "text": "6.4.1", "bbox": {"l": 151.20016, "t": 515.02133, "r": 173.32509, "b": 524.23431, "coord_origin": "TOPLEFT"}}, {"id": 115, "text": "Query monitoring and analysis tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85632, "t": 515.02133, "r": 530.57709, "b": 524.23431, "coord_origin": "TOPLEFT"}}, {"id": 116, "text": "97", "bbox": {"l": 536.10834, "t": 515.02133, "r": 547.17078, "b": 524.23431, "coord_origin": "TOPLEFT"}}, {"id": 117, "text": "6.4.2", "bbox": {"l": 151.20016, "t": 527.50122, "r": 173.44958, "b": 536.7142200000001, "coord_origin": "TOPLEFT"}}, {"id": 118, "text": "Index advisor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01193, "t": 527.50122, "r": 530.53064, "b": 536.7142200000001, "coord_origin": "TOPLEFT"}}, {"id": 119, "text": "99", "bbox": {"l": 536.09302, "t": 527.50122, "r": 547.21771, "b": 536.7142200000001, "coord_origin": "TOPLEFT"}}, {"id": 120, "text": "6.4.3", "bbox": {"l": 151.20013, "t": 540.0408600000001, "r": 173.35367, "b": 549.25386, "coord_origin": "TOPLEFT"}}, {"id": 121, "text": "Metadata using catalogs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89204, "t": 540.0408600000001, "r": 525.01111, "b": 549.25386, "coord_origin": "TOPLEFT"}}, {"id": 122, "text": "100", "bbox": {"l": 530.54944, "t": 540.0408600000001, "r": 547.16461, "b": 549.25386, "coord_origin": "TOPLEFT"}}, {"id": 123, "text": "6.5", "bbox": {"l": 136.79997, "t": 552.52074, "r": 150.76207, "b": 561.73373, "coord_origin": "TOPLEFT"}}, {"id": 124, "text": "Views, materialized query tables, and query rewrite with RCAC . . . . . . . . . . . . . . . .", "bbox": {"l": 156.34691, "t": 552.52074, "r": 524.80566, "b": 561.73373, "coord_origin": "TOPLEFT"}}, {"id": 125, "text": "102", "bbox": {"l": 530.3905, "t": 552.52074, "r": 547.14502, "b": 561.73373, "coord_origin": "TOPLEFT"}}, {"id": 126, "text": "6.5.1", "bbox": {"l": 151.20013, "t": 565.00061, "r": 173.42041, "b": 574.21361, "coord_origin": "TOPLEFT"}}, {"id": 127, "text": "Views", "bbox": {"l": 178.97548, "t": 565.00061, "r": 205.62183, "b": 574.21361, "coord_origin": "TOPLEFT"}}, {"id": 128, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 211.1769, "t": 565.00061, "r": 525.03827, "b": 574.21361, "coord_origin": "TOPLEFT"}}, {"id": 129, "text": "102", "bbox": {"l": 530.59332, "t": 565.00061, "r": 547.25854, "b": 574.21361, "coord_origin": "TOPLEFT"}}, {"id": 130, "text": "6.5.2", "bbox": {"l": 151.20013, "t": 577.54025, "r": 173.51099, "b": 586.75325, "coord_origin": "TOPLEFT"}}, {"id": 131, "text": "Materialized query tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.0887, "t": 577.54025, "r": 524.85681, "b": 586.75325, "coord_origin": "TOPLEFT"}}, {"id": 132, "text": "103", "bbox": {"l": 530.43451, "t": 577.54025, "r": 547.16766, "b": 586.75325, "coord_origin": "TOPLEFT"}}, {"id": 133, "text": "6.5.3", "bbox": {"l": 151.20013, "t": 590.02013, "r": 173.41756, "b": 599.23312, "coord_origin": "TOPLEFT"}}, {"id": 134, "text": "Query rewrite", "bbox": {"l": 178.97192, "t": 590.02013, "r": 238.92101000000002, "b": 599.23312, "coord_origin": "TOPLEFT"}}, {"id": 135, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 244.47537000000003, "t": 590.02013, "r": 524.9704, "b": 599.23312, "coord_origin": "TOPLEFT"}}, {"id": 136, "text": "105", "bbox": {"l": 530.52472, "t": 590.02013, "r": 547.18781, "b": 599.23312, "coord_origin": "TOPLEFT"}}, {"id": 137, "text": "6.6", "bbox": {"l": 136.79997, "t": 602.5, "r": 150.70438, "b": 611.713, "coord_origin": "TOPLEFT"}}, {"id": 138, "text": "RCAC effects on performance and scalability. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26613, "t": 602.5, "r": 524.92279, "b": 611.713, "coord_origin": "TOPLEFT"}}, {"id": 139, "text": "105", "bbox": {"l": 530.48456, "t": 602.5, "r": 547.16986, "b": 611.713, "coord_origin": "TOPLEFT"}}, {"id": 140, "text": "6.7", "bbox": {"l": 136.79997, "t": 615.03964, "r": 150.70482, "b": 624.25264, "coord_origin": "TOPLEFT"}}, {"id": 141, "text": "Exclusive lock to implement RCAC (availability issues) . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26675, "t": 615.03964, "r": 524.87512, "b": 624.25264, "coord_origin": "TOPLEFT"}}, {"id": 142, "text": "107", "bbox": {"l": 530.43701, "t": 615.03964, "r": 547.12286, "b": 624.25264, "coord_origin": "TOPLEFT"}}, {"id": 143, "text": "6.8", "bbox": {"l": 136.79997, "t": 627.51952, "r": 150.62793, "b": 636.73251, "coord_origin": "TOPLEFT"}}, {"id": 144, "text": "Avoiding propagation of masked data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.1591, "t": 627.51952, "r": 525.047, "b": 636.73251, "coord_origin": "TOPLEFT"}}, {"id": 145, "text": "108", "bbox": {"l": 530.57819, "t": 627.51952, "r": 547.17175, "b": 636.73251, "coord_origin": "TOPLEFT"}}, {"id": 146, "text": "6.8.1", "bbox": {"l": 151.20013, "t": 639.99939, "r": 173.48119, "b": 649.21239, "coord_origin": "TOPLEFT"}}, {"id": 147, "text": "Check constraint solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.05145, "t": 639.99939, "r": 524.91864, "b": 649.21239, "coord_origin": "TOPLEFT"}}, {"id": 148, "text": "108", "bbox": {"l": 530.48889, "t": 639.99939, "r": 547.19971, "b": 649.21239, "coord_origin": "TOPLEFT"}}, {"id": 149, "text": "6.8.2", "bbox": {"l": 151.20013, "t": 652.53903, "r": 173.32486, "b": 661.75203, "coord_origin": "TOPLEFT"}}, {"id": 150, "text": "Before trigger solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85603, "t": 652.53903, "r": 525.07208, "b": 661.75203, "coord_origin": "TOPLEFT"}}, {"id": 151, "text": "109", "bbox": {"l": 530.60321, "t": 652.53903, "r": 547.19678, "b": 661.75203, "coord_origin": "TOPLEFT"}}, {"id": 152, "text": "6.9", "bbox": {"l": 136.79997, "t": 665.01891, "r": 150.70258, "b": 674.23191, "coord_origin": "TOPLEFT"}}, {"id": 153, "text": "Triggers and functions (SECURED) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26361, "t": 665.01891, "r": 524.87256, "b": 674.23191, "coord_origin": "TOPLEFT"}}, {"id": 154, "text": "109", "bbox": {"l": 530.43359, "t": 665.01891, "r": 547.11676, "b": 674.23191, "coord_origin": "TOPLEFT"}}, {"id": 155, "text": "6.9.1", "bbox": {"l": 151.20013, "t": 677.49879, "r": 173.32774, "b": 686.71179, "coord_origin": "TOPLEFT"}}, {"id": 156, "text": "Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85965, "t": 677.49879, "r": 525.13092, "b": 686.71179, "coord_origin": "TOPLEFT"}}, {"id": 157, "text": "109", "bbox": {"l": 530.66284, "t": 677.49879, "r": 547.25854, "b": 686.71179, "coord_origin": "TOPLEFT"}}, {"id": 158, "text": "6.9.2", "bbox": {"l": 151.20013, "t": 690.0384300000001, "r": 173.57503, "b": 699.251434, "coord_origin": "TOPLEFT"}}, {"id": 159, "text": "Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.16876, "t": 690.0384300000001, "r": 524.84283, "b": 699.251434, "coord_origin": "TOPLEFT"}}, {"id": 160, "text": "110", "bbox": {"l": 530.43652, "t": 690.0384300000001, "r": 547.21771, "b": 699.251434, "coord_origin": "TOPLEFT"}}, {"id": 161, "text": "6.10", "bbox": {"l": 136.79996, "t": 702.518311, "r": 156.34335, "b": 711.731316, "coord_origin": "TOPLEFT"}}, {"id": 162, "text": "RCAC is only one part of the solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 159.13527, "t": 702.518311, "r": 524.81567, "b": 711.731316, "coord_origin": "TOPLEFT"}}, {"id": 163, "text": "111", "bbox": {"l": 530.39954, "t": 702.518311, "r": 547.151, "b": 711.731316, "coord_origin": "TOPLEFT"}}, {"id": 164, "text": "Chapter 7. Row and Column Access Control management", "bbox": {"l": 136.79996, "t": 725.017952, "r": 413.01562, "b": 734.230957, "coord_origin": "TOPLEFT"}}, {"id": 165, "text": " . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 413.99973, "t": 725.017952, "r": 525.0014, "b": 734.230957, "coord_origin": "TOPLEFT"}}, {"id": 166, "text": "113", "bbox": {"l": 530.55145, "t": 725.017952, "r": 547.20172, "b": 734.230957, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl"], "num_rows": 47, "num_cols": 2, "table_cells": [{"bbox": {"l": 136.8, "t": 71.50867000000005, "r": 530.59589, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.13281, "t": 71.50867000000005, "r": 547.20673, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "37", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80002, "t": 83.50847999999996, "r": 530.52008, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.1 Business requirements for the RCAC banking scenario . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.05914, "t": 83.50847999999996, "r": 547.13721, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "38", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80002, "t": 95.98834000000011, "r": 372.67761, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.2 Description of the users roles and responsibilities", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 378.21689, "t": 95.98834000000011, "r": 547.16486, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . 39", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80002, "t": 108.52795000000015, "r": 530.53625, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3 Implementation of RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.09039, "t": 108.52795000000015, "r": 547.19873, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "42", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 121.00780999999995, "r": 400.57443, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.1 Reviewing the tables that are used in this example", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 406.10547, "t": 121.00780999999995, "r": 547.14697, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . 42", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 133.48766999999998, "r": 516.9256, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.2 Assigning function ID QIBM_DB_SECADM to the Database Engineers group", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 522.46039, "t": 133.48766999999998, "r": 547.36707, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . 47", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 146.02728000000002, "r": 530.56757, "b": 155.24030000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.3 Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.09894, "t": 146.02728000000002, "r": 547.16174, "b": 155.24030000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "50", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 158.50714000000005, "r": 411.62085, "b": 167.72015, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.4 Creating the CUSTOMER_LOGIN_ID global variable", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 417.1524, "t": 158.50714000000005, "r": 547.14386, "b": 167.72015, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . 52", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 170.98699999999997, "r": 530.53705, "b": 180.20001000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.5 Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.07599, "t": 170.98699999999997, "r": 547.15387, "b": 180.20001000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "54", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 183.52661, "r": 339.45404, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.6 Defining and creating column masks", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 344.99295, "t": 183.52661, "r": 547.16388, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 196.00647000000004, "r": 530.53931, "b": 205.21947999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.7 Restricting the inserting and updating of masked data . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.07812, "t": 196.00647000000004, "r": 547.15576, "b": 205.21947999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "60", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 221.02594, "r": 530.48206, "b": 230.23895000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.9 Reviewing row permissions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.03638, "t": 221.02594, "r": 547.14502, "b": 230.23895000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "64", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 233.50580000000002, "r": 530.44922, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.10 Demonstrating data access with RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.01947, "t": 233.50580000000002, "r": 547.16003, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "66", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 245.98566000000005, "r": 530.43353, "b": 255.19867, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.11 Query implementation with RCAC activated . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.00372, "t": 245.98566000000005, "r": 547.1441, "b": 255.19867, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "75", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80002, "t": 268.48528999999996, "r": 530.53851, "b": 277.6983, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "Chapter 5. RCAC and non-SQL interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.09161, "t": 268.48528999999996, "r": 547.19781, "b": 277.6983, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "79", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 156.18524, "t": 280.48514, "r": 547.17688, "b": 289.69812, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Unsupported interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80002, "t": 305.50467, "r": 530.49377, "b": 314.71765, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "5.3 Accidental updates with masked values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.04749, "t": 305.50467, "r": 547.15491, "b": 314.71765, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "81", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80002, "t": 317.98456, "r": 530.56433, "b": 327.19754, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "5.4 System CL commands considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.09583, "t": 317.98456, "r": 547.15894, "b": 327.19754, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "82", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 330.5242, "r": 530.4599, "b": 339.73718, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "5.4.1 Create Duplicate Object (CRTDUPOBJ) command . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.02283, "t": 330.5242, "r": 547.14868, "b": 339.73718, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "82", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 343.0040900000001, "r": 530.53815, "b": 364.69696000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "5.4.2 Copy File (CPYF) command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4.3 Copy Library (CPYLIB) command. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.07709, "t": 343.0040900000001, "r": 547.15497, "b": 352.21707, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "82", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.05743, "t": 355.48398, "r": 547.18286, "b": 364.69696000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "83", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80002, "t": 377.98361, "r": 530.53851, "b": 387.19659, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 22, "end_row_offset_idx": 23, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "Chapter 6. Additional considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 277.79886, "t": 377.98361, "r": 547.19684, "b": 399.19641, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 23, "end_row_offset_idx": 24, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "85 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80003, "t": 402.5230700000001, "r": 530.51398, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 23, "end_row_offset_idx": 24, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.2 RCAC effects on data movement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 151.2002, "t": 415.00296, "r": 400.16882, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 24, "end_row_offset_idx": 25, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.2.1 Effects when RCAC is defined on the source table", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.06061, "t": 415.00296, "r": 547.15381, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 25, "end_row_offset_idx": 26, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "88", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 400.59186, "t": 427.48285, "r": 547.16876, "b": 449.23546999999996, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 22, "end_row_offset_idx": 23, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . 89 90", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80003, "t": 440.02249, "r": 530.59979, "b": 461.71536, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 26, "end_row_offset_idx": 27, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.2.3 Effects when RCAC is defined on both source and target tables . . . . . . . . . . . . . 6.3 RCAC effects on joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.1391, "t": 452.50238, "r": 547.21777, "b": 461.71536, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 26, "end_row_offset_idx": 27, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "91", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.2002, "t": 464.98227, "r": 547.25958, "b": 474.19525, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 27, "end_row_offset_idx": 28, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.3.1 Inner joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 151.20016, "t": 477.52191, "r": 547.25958, "b": 486.73489, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 28, "end_row_offset_idx": 29, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.3.2 Outer joins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 151.20016, "t": 490.0018, "r": 530.4812, "b": 499.21478, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 29, "end_row_offset_idx": 30, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.3.3 Exception joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.05103, "t": 490.0018, "r": 547.19073, "b": 499.21478, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 29, "end_row_offset_idx": 30, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "96", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.8, "t": 502.54144, "r": 372.92725, "b": 511.75443, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 30, "end_row_offset_idx": 31, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.4 Monitoring, analyzing, and debugging with RCAC", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 378.45905, "t": 502.54144, "r": 530.58417, "b": 511.75443, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 31, "end_row_offset_idx": 32, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.11597, "t": 502.54144, "r": 547.17963, "b": 511.75443, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 30, "end_row_offset_idx": 31, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "97", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 178.85632, "t": 515.02133, "r": 547.17078, "b": 524.23431, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 31, "end_row_offset_idx": 32, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Query monitoring and analysis tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20016, "t": 527.50122, "r": 530.53064, "b": 536.7142200000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 32, "end_row_offset_idx": 33, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.4.2 Index advisor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.09302, "t": 527.50122, "r": 547.21771, "b": 536.7142200000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 32, "end_row_offset_idx": 33, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "99", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20013, "t": 540.0408600000001, "r": 525.01111, "b": 549.25386, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 33, "end_row_offset_idx": 34, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.4.3 Metadata using catalogs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.54944, "t": 540.0408600000001, "r": 547.16461, "b": 549.25386, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "100", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79997, "t": 552.52074, "r": 524.80566, "b": 561.73373, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 34, "end_row_offset_idx": 35, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.5 Views, materialized query tables, and query rewrite with RCAC . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.3905, "t": 552.52074, "r": 547.14502, "b": 561.73373, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 34, "end_row_offset_idx": 35, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "102", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20013, "t": 577.54025, "r": 524.85681, "b": 586.75325, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 35, "end_row_offset_idx": 36, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.5.2 Materialized query tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.43451, "t": 577.54025, "r": 547.16766, "b": 586.75325, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 35, "end_row_offset_idx": 36, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "103", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20013, "t": 590.02013, "r": 524.9704, "b": 611.713, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 37, "end_row_offset_idx": 38, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.5.3 Query rewrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . RCAC effects on performance and scalability. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.52472, "t": 590.02013, "r": 547.18781, "b": 599.23312, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 36, "end_row_offset_idx": 37, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "105", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79997, "t": 602.5, "r": 150.70438, "b": 611.713, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 38, "end_row_offset_idx": 39, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.6", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.48456, "t": 602.5, "r": 547.16986, "b": 611.713, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 38, "end_row_offset_idx": 39, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "105", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79997, "t": 615.03964, "r": 525.047, "b": 636.73251, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 40, "end_row_offset_idx": 41, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.7 Exclusive lock to implement RCAC (availability issues) . . . . . . . . . . . . . . . . . . . . . . . 6.8 Avoiding propagation of masked data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.43701, "t": 615.03964, "r": 547.12286, "b": 624.25264, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 39, "end_row_offset_idx": 40, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "107", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.57819, "t": 627.51952, "r": 547.17175, "b": 636.73251, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 40, "end_row_offset_idx": 41, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "108", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.48889, "t": 639.99939, "r": 547.19971, "b": 649.21239, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 41, "end_row_offset_idx": 42, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "108", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.43359, "t": 665.01891, "r": 547.11676, "b": 674.23191, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 42, "end_row_offset_idx": 43, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "109", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.66284, "t": 677.49879, "r": 547.25854, "b": 686.71179, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 43, "end_row_offset_idx": 44, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "109", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.39954, "t": 702.518311, "r": 547.151, "b": 711.731316, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 45, "end_row_offset_idx": 46, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "111", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79996, "t": 725.017952, "r": 525.0014, "b": 734.230957, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 46, "end_row_offset_idx": 47, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "Chapter 7. Row and Column Access Control management . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.55145, "t": 725.017952, "r": 547.20172, "b": 734.230957, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 44, "end_row_offset_idx": 45, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "113", "column_header": false, "row_header": false, "row_section": false}]}}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 5, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.4805679321289, "t": 754.1161499023438, "r": 75.641998, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8876830339431763, "cells": [{"id": 0, "text": "iv ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 75.641998, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "iv"}, {"label": "page_footer", "id": 1, "page_no": 5, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 90.44805145263672, "t": 754.6052856445312, "r": 331.7034606933594, "b": 763.9476318359375, "coord_origin": "TOPLEFT"}, "confidence": 0.936427891254425, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 90.599998, "t": 755.538002, "r": 331.55881, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "table", "id": 2, "page_no": 5, "cluster": {"id": 2, "label": "table", "bbox": {"l": 135.92572021484375, "t": 70.81258392333984, "r": 547.7196044921875, "b": 734.230957, "coord_origin": "TOPLEFT"}, "confidence": 0.9778977036476135, "cells": [{"id": 2, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 504.58301, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": ". . . . .", "bbox": {"l": 505.67957, "t": 71.50867000000005, "r": 530.59589, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "37", "bbox": {"l": 536.13281, "t": 71.50867000000005, "r": 547.20673, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "4.1", "bbox": {"l": 136.80002, "t": 83.50847999999996, "r": 150.64761, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Business requirements for the RCAC banking scenario . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18666, "t": 83.50847999999996, "r": 530.52008, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "38", "bbox": {"l": 536.05914, "t": 83.50847999999996, "r": 547.13721, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "4.2", "bbox": {"l": 136.80002, "t": 95.98834000000011, "r": 150.64821, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Description of the users roles and responsibilities", "bbox": {"l": 156.18748, "t": 95.98834000000011, "r": 372.67761, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 378.21689, "t": 95.98834000000011, "r": 530.547, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "39", "bbox": {"l": 536.0863, "t": 95.98834000000011, "r": 547.16486, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "4.3", "bbox": {"l": 136.80002, "t": 108.52795000000015, "r": 150.68542, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Implementation of RCAC", "bbox": {"l": 156.23959, "t": 108.52795000000015, "r": 266.7135, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 272.26767, "t": 108.52795000000015, "r": 530.53625, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "42", "bbox": {"l": 536.09039, "t": 108.52795000000015, "r": 547.19873, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "4.3.1", "bbox": {"l": 151.20018, "t": 121.00780999999995, "r": 173.32434, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Reviewing the tables that are used in this example", "bbox": {"l": 178.85538, "t": 121.00780999999995, "r": 400.57443, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": ". . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 406.10547, "t": 121.00780999999995, "r": 530.55383, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "42", "bbox": {"l": 536.0849, "t": 121.00780999999995, "r": 547.14697, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "4.3.2", "bbox": {"l": 151.20018, "t": 133.48766999999998, "r": 173.33942, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Assigning function ID QIBM_DB_SECADM to the Database Engineers group", "bbox": {"l": 178.87422, "t": 133.48766999999998, "r": 516.9256, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": ". .", "bbox": {"l": 522.46039, "t": 133.48766999999998, "r": 530.76263, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "47", "bbox": {"l": 536.29742, "t": 133.48766999999998, "r": 547.36707, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "4.3.3", "bbox": {"l": 151.20018, "t": 146.02728000000002, "r": 173.32571, "b": 155.24030000000005, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8571, "t": 146.02728000000002, "r": 530.56757, "b": 155.24030000000005, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "50", "bbox": {"l": 536.09894, "t": 146.02728000000002, "r": 547.16174, "b": 155.24030000000005, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "4.3.4", "bbox": {"l": 151.20018, "t": 158.50714000000005, "r": 173.32639, "b": 167.72015, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Creating the CUSTOMER_LOGIN_ID global variable", "bbox": {"l": 178.85794, "t": 158.50714000000005, "r": 411.62085, "b": 167.72015, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ". . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 417.1524, "t": 158.50714000000005, "r": 530.54919, "b": 167.72015, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "52", "bbox": {"l": 536.08075, "t": 158.50714000000005, "r": 547.14386, "b": 167.72015, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "4.3.5", "bbox": {"l": 151.20018, "t": 170.98699999999997, "r": 173.3559, "b": 180.20001000000002, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89482, "t": 170.98699999999997, "r": 530.53705, "b": 180.20001000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "54", "bbox": {"l": 536.07599, "t": 170.98699999999997, "r": 547.15387, "b": 180.20001000000002, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "4.3.6", "bbox": {"l": 151.20018, "t": 183.52661, "r": 173.3559, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Defining and creating column masks", "bbox": {"l": 178.89482, "t": 183.52661, "r": 339.45404, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.99295, "t": 183.52661, "r": 530.54706, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "58", "bbox": {"l": 536.086, "t": 183.52661, "r": 547.16388, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "4.3.7", "bbox": {"l": 151.20018, "t": 196.00647000000004, "r": 173.35544, "b": 205.21947999999998, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Restricting the inserting and updating of masked data . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89426, "t": 196.00647000000004, "r": 530.53931, "b": 205.21947999999998, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "60", "bbox": {"l": 536.07812, "t": 196.00647000000004, "r": 547.15576, "b": 205.21947999999998, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "4.3.8", "bbox": {"l": 151.20018, "t": 208.48632999999995, "r": 173.51157, "b": 217.69934, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Activating row and column access control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.0894, "t": 208.48632999999995, "r": 530.41339, "b": 217.69934, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "63", "bbox": {"l": 535.99127, "t": 208.48632999999995, "r": 547.14697, "b": 217.69934, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "4.3.9", "bbox": {"l": 151.20018, "t": 221.02594, "r": 173.41745, "b": 230.23895000000005, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Reviewing row permissions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97176, "t": 221.02594, "r": 530.48206, "b": 230.23895000000005, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "64", "bbox": {"l": 536.03638, "t": 221.02594, "r": 547.14502, "b": 230.23895000000005, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "4.3.10", "bbox": {"l": 151.20018, "t": 233.50580000000002, "r": 179.05151, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "Demonstrating data access with RCAC", "bbox": {"l": 181.83665, "t": 233.50580000000002, "r": 354.98581, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 360.55606, "t": 233.50580000000002, "r": 530.44922, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "66", "bbox": {"l": 536.01947, "t": 233.50580000000002, "r": 547.16003, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "4.3.11", "bbox": {"l": 151.20018, "t": 245.98566000000005, "r": 179.0511, "b": 255.19867, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Query implementation with RCAC activated . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 181.83621, "t": 245.98566000000005, "r": 530.43353, "b": 255.19867, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "75", "bbox": {"l": 536.00372, "t": 245.98566000000005, "r": 547.1441, "b": 255.19867, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "Chapter 5. RCAC and non-SQL interfaces", "bbox": {"l": 136.80002, "t": 268.48528999999996, "r": 335.23209, "b": 277.6983, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 336.1803, "t": 268.48528999999996, "r": 530.53851, "b": 277.6983, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "79", "bbox": {"l": 536.09161, "t": 268.48528999999996, "r": 547.19781, "b": 277.6983, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "5.1", "bbox": {"l": 136.80002, "t": 280.48514, "r": 150.64661, "b": 289.69812, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Unsupported interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18524, "t": 280.48514, "r": 530.56097, "b": 289.69812, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "80", "bbox": {"l": 536.09961, "t": 280.48514, "r": 547.17688, "b": 289.69812, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "5.2", "bbox": {"l": 136.80002, "t": 293.02478, "r": 150.7034, "b": 302.2377599999999, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Native query result differences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26476, "t": 293.02478, "r": 530.48578, "b": 302.2377599999999, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "80", "bbox": {"l": 536.04718, "t": 293.02478, "r": 547.16986, "b": 302.2377599999999, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "5.3", "bbox": {"l": 136.80002, "t": 305.50467, "r": 150.68428, "b": 314.71765, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "Accidental updates with masked values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.23799, "t": 305.50467, "r": 530.49377, "b": 314.71765, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "81", "bbox": {"l": 536.04749, "t": 305.50467, "r": 547.15491, "b": 314.71765, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "5.4", "bbox": {"l": 136.80002, "t": 317.98456, "r": 150.62888, "b": 327.19754, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "System CL commands considerations", "bbox": {"l": 156.16042, "t": 317.98456, "r": 323.13144, "b": 327.19754, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 328.66299, "t": 317.98456, "r": 530.56433, "b": 327.19754, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "82", "bbox": {"l": 536.09583, "t": 317.98456, "r": 547.15894, "b": 327.19754, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "5.4.1", "bbox": {"l": 151.20018, "t": 330.5242, "r": 173.4519, "b": 339.73718, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "Create Duplicate Object (CRTDUPOBJ) command . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01483, "t": 330.5242, "r": 530.4599, "b": 339.73718, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "82", "bbox": {"l": 536.02283, "t": 330.5242, "r": 547.14868, "b": 339.73718, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "5.4.2", "bbox": {"l": 151.20018, "t": 343.0040900000001, "r": 173.35596, "b": 352.21707, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "Copy File (CPYF) command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8949, "t": 343.0040900000001, "r": 530.53815, "b": 352.21707, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "82", "bbox": {"l": 536.07709, "t": 343.0040900000001, "r": 547.15497, "b": 352.21707, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "5.4.3", "bbox": {"l": 151.20018, "t": 355.48398, "r": 173.451, "b": 364.69696000000005, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "Copy Library (CPYLIB) command. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01372, "t": 355.48398, "r": 530.49475, "b": 364.69696000000005, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "83", "bbox": {"l": 536.05743, "t": 355.48398, "r": 547.18286, "b": 364.69696000000005, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "Chapter 6. Additional considerations", "bbox": {"l": 136.80002, "t": 377.98361, "r": 313.86292, "b": 387.19659, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 313.98047, "t": 377.98361, "r": 530.53851, "b": 387.19659, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "85", "bbox": {"l": 536.09131, "t": 377.98361, "r": 547.19684, "b": 387.19659, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "6.1", "bbox": {"l": 136.80003, "t": 389.98343, "r": 150.68416, "b": 399.19641, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "Timing of column masking", "bbox": {"l": 156.23781, "t": 389.98343, "r": 272.24521, "b": 399.19641, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 277.79886, "t": 389.98343, "r": 530.49005, "b": 399.19641, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "86", "bbox": {"l": 536.0437, "t": 389.98343, "r": 547.151, "b": 399.19641, "coord_origin": "TOPLEFT"}}, {"id": 86, "text": "6.2", "bbox": {"l": 136.80003, "t": 402.5230700000001, "r": 150.70372, "b": 411.73605, "coord_origin": "TOPLEFT"}}, {"id": 87, "text": "RCAC effects on data movement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.2652, "t": 402.5230700000001, "r": 530.49445, "b": 411.73605, "coord_origin": "TOPLEFT"}}, {"id": 88, "text": "88", "bbox": {"l": 536.05591, "t": 402.5230700000001, "r": 547.17889, "b": 411.73605, "coord_origin": "TOPLEFT"}}, {"id": 89, "text": "6.2.1", "bbox": {"l": 151.2002, "t": 415.00296, "r": 173.38661, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}}, {"id": 90, "text": "Effects when RCAC is defined on the source table", "bbox": {"l": 178.93321, "t": 415.00296, "r": 400.16882, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}}, {"id": 91, "text": ". . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 405.71545, "t": 415.00296, "r": 530.51398, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}}, {"id": 92, "text": "88", "bbox": {"l": 536.06061, "t": 415.00296, "r": 547.15381, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}}, {"id": 93, "text": "6.2.2", "bbox": {"l": 151.2002, "t": 427.48285, "r": 173.32501, "b": 436.69583, "coord_origin": "TOPLEFT"}}, {"id": 94, "text": "Effects when RCAC is defined on the target table", "bbox": {"l": 178.85622, "t": 427.48285, "r": 395.06064, "b": 436.69583, "coord_origin": "TOPLEFT"}}, {"id": 95, "text": ". . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 400.59186, "t": 427.48285, "r": 530.57513, "b": 436.69583, "coord_origin": "TOPLEFT"}}, {"id": 96, "text": "89", "bbox": {"l": 536.10632, "t": 427.48285, "r": 547.16876, "b": 436.69583, "coord_origin": "TOPLEFT"}}, {"id": 97, "text": "6.2.3", "bbox": {"l": 151.2002, "t": 440.02249, "r": 173.38657, "b": 449.23546999999996, "coord_origin": "TOPLEFT"}}, {"id": 98, "text": "Effects when RCAC is defined on both source and target tables . . . . . . . . . . . . .", "bbox": {"l": 178.93315, "t": 440.02249, "r": 530.5033, "b": 449.23546999999996, "coord_origin": "TOPLEFT"}}, {"id": 99, "text": "90", "bbox": {"l": 536.04987, "t": 440.02249, "r": 547.14307, "b": 449.23546999999996, "coord_origin": "TOPLEFT"}}, {"id": 100, "text": "6.3", "bbox": {"l": 136.80003, "t": 452.50238, "r": 150.64833, "b": 461.71536, "coord_origin": "TOPLEFT"}}, {"id": 101, "text": "RCAC effects on joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18765, "t": 452.50238, "r": 530.59979, "b": 461.71536, "coord_origin": "TOPLEFT"}}, {"id": 102, "text": "91", "bbox": {"l": 536.1391, "t": 452.50238, "r": 547.21777, "b": 461.71536, "coord_origin": "TOPLEFT"}}, {"id": 103, "text": "6.3.1", "bbox": {"l": 151.2002, "t": 464.98227, "r": 173.57745, "b": 474.19525, "coord_origin": "TOPLEFT"}}, {"id": 104, "text": "Inner joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92", "bbox": {"l": 179.17177, "t": 464.98227, "r": 547.25958, "b": 474.19525, "coord_origin": "TOPLEFT"}}, {"id": 105, "text": "6.3.2", "bbox": {"l": 151.20016, "t": 477.52191, "r": 173.60931, "b": 486.73489, "coord_origin": "TOPLEFT"}}, {"id": 106, "text": "Outer joins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94", "bbox": {"l": 179.21159, "t": 477.52191, "r": 547.25958, "b": 486.73489, "coord_origin": "TOPLEFT"}}, {"id": 107, "text": "6.3.3", "bbox": {"l": 151.20016, "t": 490.0018, "r": 173.47958, "b": 499.21478, "coord_origin": "TOPLEFT"}}, {"id": 108, "text": "Exception joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.04944, "t": 490.0018, "r": 530.4812, "b": 499.21478, "coord_origin": "TOPLEFT"}}, {"id": 109, "text": "96", "bbox": {"l": 536.05103, "t": 490.0018, "r": 547.19073, "b": 499.21478, "coord_origin": "TOPLEFT"}}, {"id": 110, "text": "6.4", "bbox": {"l": 136.8, "t": 502.54144, "r": 150.62956, "b": 511.75443, "coord_origin": "TOPLEFT"}}, {"id": 111, "text": "Monitoring, analyzing, and debugging with RCAC", "bbox": {"l": 156.16138, "t": 502.54144, "r": 372.92725, "b": 511.75443, "coord_origin": "TOPLEFT"}}, {"id": 112, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 378.45905, "t": 502.54144, "r": 530.58417, "b": 511.75443, "coord_origin": "TOPLEFT"}}, {"id": 113, "text": "97", "bbox": {"l": 536.11597, "t": 502.54144, "r": 547.17963, "b": 511.75443, "coord_origin": "TOPLEFT"}}, {"id": 114, "text": "6.4.1", "bbox": {"l": 151.20016, "t": 515.02133, "r": 173.32509, "b": 524.23431, "coord_origin": "TOPLEFT"}}, {"id": 115, "text": "Query monitoring and analysis tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85632, "t": 515.02133, "r": 530.57709, "b": 524.23431, "coord_origin": "TOPLEFT"}}, {"id": 116, "text": "97", "bbox": {"l": 536.10834, "t": 515.02133, "r": 547.17078, "b": 524.23431, "coord_origin": "TOPLEFT"}}, {"id": 117, "text": "6.4.2", "bbox": {"l": 151.20016, "t": 527.50122, "r": 173.44958, "b": 536.7142200000001, "coord_origin": "TOPLEFT"}}, {"id": 118, "text": "Index advisor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01193, "t": 527.50122, "r": 530.53064, "b": 536.7142200000001, "coord_origin": "TOPLEFT"}}, {"id": 119, "text": "99", "bbox": {"l": 536.09302, "t": 527.50122, "r": 547.21771, "b": 536.7142200000001, "coord_origin": "TOPLEFT"}}, {"id": 120, "text": "6.4.3", "bbox": {"l": 151.20013, "t": 540.0408600000001, "r": 173.35367, "b": 549.25386, "coord_origin": "TOPLEFT"}}, {"id": 121, "text": "Metadata using catalogs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89204, "t": 540.0408600000001, "r": 525.01111, "b": 549.25386, "coord_origin": "TOPLEFT"}}, {"id": 122, "text": "100", "bbox": {"l": 530.54944, "t": 540.0408600000001, "r": 547.16461, "b": 549.25386, "coord_origin": "TOPLEFT"}}, {"id": 123, "text": "6.5", "bbox": {"l": 136.79997, "t": 552.52074, "r": 150.76207, "b": 561.73373, "coord_origin": "TOPLEFT"}}, {"id": 124, "text": "Views, materialized query tables, and query rewrite with RCAC . . . . . . . . . . . . . . . .", "bbox": {"l": 156.34691, "t": 552.52074, "r": 524.80566, "b": 561.73373, "coord_origin": "TOPLEFT"}}, {"id": 125, "text": "102", "bbox": {"l": 530.3905, "t": 552.52074, "r": 547.14502, "b": 561.73373, "coord_origin": "TOPLEFT"}}, {"id": 126, "text": "6.5.1", "bbox": {"l": 151.20013, "t": 565.00061, "r": 173.42041, "b": 574.21361, "coord_origin": "TOPLEFT"}}, {"id": 127, "text": "Views", "bbox": {"l": 178.97548, "t": 565.00061, "r": 205.62183, "b": 574.21361, "coord_origin": "TOPLEFT"}}, {"id": 128, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 211.1769, "t": 565.00061, "r": 525.03827, "b": 574.21361, "coord_origin": "TOPLEFT"}}, {"id": 129, "text": "102", "bbox": {"l": 530.59332, "t": 565.00061, "r": 547.25854, "b": 574.21361, "coord_origin": "TOPLEFT"}}, {"id": 130, "text": "6.5.2", "bbox": {"l": 151.20013, "t": 577.54025, "r": 173.51099, "b": 586.75325, "coord_origin": "TOPLEFT"}}, {"id": 131, "text": "Materialized query tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.0887, "t": 577.54025, "r": 524.85681, "b": 586.75325, "coord_origin": "TOPLEFT"}}, {"id": 132, "text": "103", "bbox": {"l": 530.43451, "t": 577.54025, "r": 547.16766, "b": 586.75325, "coord_origin": "TOPLEFT"}}, {"id": 133, "text": "6.5.3", "bbox": {"l": 151.20013, "t": 590.02013, "r": 173.41756, "b": 599.23312, "coord_origin": "TOPLEFT"}}, {"id": 134, "text": "Query rewrite", "bbox": {"l": 178.97192, "t": 590.02013, "r": 238.92101000000002, "b": 599.23312, "coord_origin": "TOPLEFT"}}, {"id": 135, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 244.47537000000003, "t": 590.02013, "r": 524.9704, "b": 599.23312, "coord_origin": "TOPLEFT"}}, {"id": 136, "text": "105", "bbox": {"l": 530.52472, "t": 590.02013, "r": 547.18781, "b": 599.23312, "coord_origin": "TOPLEFT"}}, {"id": 137, "text": "6.6", "bbox": {"l": 136.79997, "t": 602.5, "r": 150.70438, "b": 611.713, "coord_origin": "TOPLEFT"}}, {"id": 138, "text": "RCAC effects on performance and scalability. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26613, "t": 602.5, "r": 524.92279, "b": 611.713, "coord_origin": "TOPLEFT"}}, {"id": 139, "text": "105", "bbox": {"l": 530.48456, "t": 602.5, "r": 547.16986, "b": 611.713, "coord_origin": "TOPLEFT"}}, {"id": 140, "text": "6.7", "bbox": {"l": 136.79997, "t": 615.03964, "r": 150.70482, "b": 624.25264, "coord_origin": "TOPLEFT"}}, {"id": 141, "text": "Exclusive lock to implement RCAC (availability issues) . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26675, "t": 615.03964, "r": 524.87512, "b": 624.25264, "coord_origin": "TOPLEFT"}}, {"id": 142, "text": "107", "bbox": {"l": 530.43701, "t": 615.03964, "r": 547.12286, "b": 624.25264, "coord_origin": "TOPLEFT"}}, {"id": 143, "text": "6.8", "bbox": {"l": 136.79997, "t": 627.51952, "r": 150.62793, "b": 636.73251, "coord_origin": "TOPLEFT"}}, {"id": 144, "text": "Avoiding propagation of masked data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.1591, "t": 627.51952, "r": 525.047, "b": 636.73251, "coord_origin": "TOPLEFT"}}, {"id": 145, "text": "108", "bbox": {"l": 530.57819, "t": 627.51952, "r": 547.17175, "b": 636.73251, "coord_origin": "TOPLEFT"}}, {"id": 146, "text": "6.8.1", "bbox": {"l": 151.20013, "t": 639.99939, "r": 173.48119, "b": 649.21239, "coord_origin": "TOPLEFT"}}, {"id": 147, "text": "Check constraint solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.05145, "t": 639.99939, "r": 524.91864, "b": 649.21239, "coord_origin": "TOPLEFT"}}, {"id": 148, "text": "108", "bbox": {"l": 530.48889, "t": 639.99939, "r": 547.19971, "b": 649.21239, "coord_origin": "TOPLEFT"}}, {"id": 149, "text": "6.8.2", "bbox": {"l": 151.20013, "t": 652.53903, "r": 173.32486, "b": 661.75203, "coord_origin": "TOPLEFT"}}, {"id": 150, "text": "Before trigger solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85603, "t": 652.53903, "r": 525.07208, "b": 661.75203, "coord_origin": "TOPLEFT"}}, {"id": 151, "text": "109", "bbox": {"l": 530.60321, "t": 652.53903, "r": 547.19678, "b": 661.75203, "coord_origin": "TOPLEFT"}}, {"id": 152, "text": "6.9", "bbox": {"l": 136.79997, "t": 665.01891, "r": 150.70258, "b": 674.23191, "coord_origin": "TOPLEFT"}}, {"id": 153, "text": "Triggers and functions (SECURED) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26361, "t": 665.01891, "r": 524.87256, "b": 674.23191, "coord_origin": "TOPLEFT"}}, {"id": 154, "text": "109", "bbox": {"l": 530.43359, "t": 665.01891, "r": 547.11676, "b": 674.23191, "coord_origin": "TOPLEFT"}}, {"id": 155, "text": "6.9.1", "bbox": {"l": 151.20013, "t": 677.49879, "r": 173.32774, "b": 686.71179, "coord_origin": "TOPLEFT"}}, {"id": 156, "text": "Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85965, "t": 677.49879, "r": 525.13092, "b": 686.71179, "coord_origin": "TOPLEFT"}}, {"id": 157, "text": "109", "bbox": {"l": 530.66284, "t": 677.49879, "r": 547.25854, "b": 686.71179, "coord_origin": "TOPLEFT"}}, {"id": 158, "text": "6.9.2", "bbox": {"l": 151.20013, "t": 690.0384300000001, "r": 173.57503, "b": 699.251434, "coord_origin": "TOPLEFT"}}, {"id": 159, "text": "Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.16876, "t": 690.0384300000001, "r": 524.84283, "b": 699.251434, "coord_origin": "TOPLEFT"}}, {"id": 160, "text": "110", "bbox": {"l": 530.43652, "t": 690.0384300000001, "r": 547.21771, "b": 699.251434, "coord_origin": "TOPLEFT"}}, {"id": 161, "text": "6.10", "bbox": {"l": 136.79996, "t": 702.518311, "r": 156.34335, "b": 711.731316, "coord_origin": "TOPLEFT"}}, {"id": 162, "text": "RCAC is only one part of the solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 159.13527, "t": 702.518311, "r": 524.81567, "b": 711.731316, "coord_origin": "TOPLEFT"}}, {"id": 163, "text": "111", "bbox": {"l": 530.39954, "t": 702.518311, "r": 547.151, "b": 711.731316, "coord_origin": "TOPLEFT"}}, {"id": 164, "text": "Chapter 7. Row and Column Access Control management", "bbox": {"l": 136.79996, "t": 725.017952, "r": 413.01562, "b": 734.230957, "coord_origin": "TOPLEFT"}}, {"id": 165, "text": " . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 413.99973, "t": 725.017952, "r": 525.0014, "b": 734.230957, "coord_origin": "TOPLEFT"}}, {"id": 166, "text": "113", "bbox": {"l": 530.55145, "t": 725.017952, "r": 547.20172, "b": 734.230957, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl"], "num_rows": 47, "num_cols": 2, "table_cells": [{"bbox": {"l": 136.8, "t": 71.50867000000005, "r": 530.59589, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.13281, "t": 71.50867000000005, "r": 547.20673, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "37", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80002, "t": 83.50847999999996, "r": 530.52008, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.1 Business requirements for the RCAC banking scenario . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.05914, "t": 83.50847999999996, "r": 547.13721, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "38", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80002, "t": 95.98834000000011, "r": 372.67761, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.2 Description of the users roles and responsibilities", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 378.21689, "t": 95.98834000000011, "r": 547.16486, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . 39", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80002, "t": 108.52795000000015, "r": 530.53625, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3 Implementation of RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.09039, "t": 108.52795000000015, "r": 547.19873, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "42", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 121.00780999999995, "r": 400.57443, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.1 Reviewing the tables that are used in this example", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 406.10547, "t": 121.00780999999995, "r": 547.14697, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . 42", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 133.48766999999998, "r": 516.9256, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.2 Assigning function ID QIBM_DB_SECADM to the Database Engineers group", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 522.46039, "t": 133.48766999999998, "r": 547.36707, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . 47", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 146.02728000000002, "r": 530.56757, "b": 155.24030000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.3 Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.09894, "t": 146.02728000000002, "r": 547.16174, "b": 155.24030000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "50", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 158.50714000000005, "r": 411.62085, "b": 167.72015, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.4 Creating the CUSTOMER_LOGIN_ID global variable", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 417.1524, "t": 158.50714000000005, "r": 547.14386, "b": 167.72015, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . 52", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 170.98699999999997, "r": 530.53705, "b": 180.20001000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.5 Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.07599, "t": 170.98699999999997, "r": 547.15387, "b": 180.20001000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "54", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 183.52661, "r": 339.45404, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.6 Defining and creating column masks", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 344.99295, "t": 183.52661, "r": 547.16388, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 196.00647000000004, "r": 530.53931, "b": 205.21947999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.7 Restricting the inserting and updating of masked data . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.07812, "t": 196.00647000000004, "r": 547.15576, "b": 205.21947999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "60", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 221.02594, "r": 530.48206, "b": 230.23895000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.9 Reviewing row permissions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.03638, "t": 221.02594, "r": 547.14502, "b": 230.23895000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "64", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 233.50580000000002, "r": 530.44922, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.10 Demonstrating data access with RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.01947, "t": 233.50580000000002, "r": 547.16003, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "66", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 245.98566000000005, "r": 530.43353, "b": 255.19867, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.11 Query implementation with RCAC activated . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.00372, "t": 245.98566000000005, "r": 547.1441, "b": 255.19867, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "75", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80002, "t": 268.48528999999996, "r": 530.53851, "b": 277.6983, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "Chapter 5. RCAC and non-SQL interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.09161, "t": 268.48528999999996, "r": 547.19781, "b": 277.6983, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "79", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 156.18524, "t": 280.48514, "r": 547.17688, "b": 289.69812, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Unsupported interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80002, "t": 305.50467, "r": 530.49377, "b": 314.71765, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "5.3 Accidental updates with masked values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.04749, "t": 305.50467, "r": 547.15491, "b": 314.71765, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "81", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80002, "t": 317.98456, "r": 530.56433, "b": 327.19754, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "5.4 System CL commands considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.09583, "t": 317.98456, "r": 547.15894, "b": 327.19754, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "82", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 330.5242, "r": 530.4599, "b": 339.73718, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "5.4.1 Create Duplicate Object (CRTDUPOBJ) command . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.02283, "t": 330.5242, "r": 547.14868, "b": 339.73718, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "82", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 343.0040900000001, "r": 530.53815, "b": 364.69696000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "5.4.2 Copy File (CPYF) command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4.3 Copy Library (CPYLIB) command. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.07709, "t": 343.0040900000001, "r": 547.15497, "b": 352.21707, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "82", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.05743, "t": 355.48398, "r": 547.18286, "b": 364.69696000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "83", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80002, "t": 377.98361, "r": 530.53851, "b": 387.19659, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 22, "end_row_offset_idx": 23, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "Chapter 6. Additional considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 277.79886, "t": 377.98361, "r": 547.19684, "b": 399.19641, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 23, "end_row_offset_idx": 24, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "85 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80003, "t": 402.5230700000001, "r": 530.51398, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 23, "end_row_offset_idx": 24, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.2 RCAC effects on data movement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 151.2002, "t": 415.00296, "r": 400.16882, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 24, "end_row_offset_idx": 25, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.2.1 Effects when RCAC is defined on the source table", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.06061, "t": 415.00296, "r": 547.15381, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 25, "end_row_offset_idx": 26, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "88", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 400.59186, "t": 427.48285, "r": 547.16876, "b": 449.23546999999996, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 22, "end_row_offset_idx": 23, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . 89 90", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80003, "t": 440.02249, "r": 530.59979, "b": 461.71536, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 26, "end_row_offset_idx": 27, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.2.3 Effects when RCAC is defined on both source and target tables . . . . . . . . . . . . . 6.3 RCAC effects on joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.1391, "t": 452.50238, "r": 547.21777, "b": 461.71536, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 26, "end_row_offset_idx": 27, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "91", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.2002, "t": 464.98227, "r": 547.25958, "b": 474.19525, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 27, "end_row_offset_idx": 28, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.3.1 Inner joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 151.20016, "t": 477.52191, "r": 547.25958, "b": 486.73489, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 28, "end_row_offset_idx": 29, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.3.2 Outer joins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 151.20016, "t": 490.0018, "r": 530.4812, "b": 499.21478, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 29, "end_row_offset_idx": 30, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.3.3 Exception joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.05103, "t": 490.0018, "r": 547.19073, "b": 499.21478, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 29, "end_row_offset_idx": 30, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "96", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.8, "t": 502.54144, "r": 372.92725, "b": 511.75443, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 30, "end_row_offset_idx": 31, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.4 Monitoring, analyzing, and debugging with RCAC", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 378.45905, "t": 502.54144, "r": 530.58417, "b": 511.75443, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 31, "end_row_offset_idx": 32, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.11597, "t": 502.54144, "r": 547.17963, "b": 511.75443, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 30, "end_row_offset_idx": 31, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "97", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 178.85632, "t": 515.02133, "r": 547.17078, "b": 524.23431, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 31, "end_row_offset_idx": 32, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Query monitoring and analysis tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20016, "t": 527.50122, "r": 530.53064, "b": 536.7142200000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 32, "end_row_offset_idx": 33, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.4.2 Index advisor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.09302, "t": 527.50122, "r": 547.21771, "b": 536.7142200000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 32, "end_row_offset_idx": 33, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "99", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20013, "t": 540.0408600000001, "r": 525.01111, "b": 549.25386, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 33, "end_row_offset_idx": 34, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.4.3 Metadata using catalogs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.54944, "t": 540.0408600000001, "r": 547.16461, "b": 549.25386, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "100", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79997, "t": 552.52074, "r": 524.80566, "b": 561.73373, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 34, "end_row_offset_idx": 35, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.5 Views, materialized query tables, and query rewrite with RCAC . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.3905, "t": 552.52074, "r": 547.14502, "b": 561.73373, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 34, "end_row_offset_idx": 35, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "102", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20013, "t": 577.54025, "r": 524.85681, "b": 586.75325, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 35, "end_row_offset_idx": 36, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.5.2 Materialized query tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.43451, "t": 577.54025, "r": 547.16766, "b": 586.75325, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 35, "end_row_offset_idx": 36, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "103", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20013, "t": 590.02013, "r": 524.9704, "b": 611.713, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 37, "end_row_offset_idx": 38, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.5.3 Query rewrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . RCAC effects on performance and scalability. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.52472, "t": 590.02013, "r": 547.18781, "b": 599.23312, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 36, "end_row_offset_idx": 37, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "105", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79997, "t": 602.5, "r": 150.70438, "b": 611.713, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 38, "end_row_offset_idx": 39, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.6", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.48456, "t": 602.5, "r": 547.16986, "b": 611.713, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 38, "end_row_offset_idx": 39, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "105", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79997, "t": 615.03964, "r": 525.047, "b": 636.73251, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 40, "end_row_offset_idx": 41, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.7 Exclusive lock to implement RCAC (availability issues) . . . . . . . . . . . . . . . . . . . . . . . 6.8 Avoiding propagation of masked data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.43701, "t": 615.03964, "r": 547.12286, "b": 624.25264, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 39, "end_row_offset_idx": 40, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "107", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.57819, "t": 627.51952, "r": 547.17175, "b": 636.73251, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 40, "end_row_offset_idx": 41, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "108", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.48889, "t": 639.99939, "r": 547.19971, "b": 649.21239, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 41, "end_row_offset_idx": 42, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "108", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.43359, "t": 665.01891, "r": 547.11676, "b": 674.23191, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 42, "end_row_offset_idx": 43, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "109", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.66284, "t": 677.49879, "r": 547.25854, "b": 686.71179, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 43, "end_row_offset_idx": 44, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "109", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.39954, "t": 702.518311, "r": 547.151, "b": 711.731316, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 45, "end_row_offset_idx": 46, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "111", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79996, "t": 725.017952, "r": 525.0014, "b": 734.230957, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 46, "end_row_offset_idx": 47, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "Chapter 7. Row and Column Access Control management . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.55145, "t": 725.017952, "r": 547.20172, "b": 734.230957, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 44, "end_row_offset_idx": 45, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "113", "column_header": false, "row_header": false, "row_section": false}]}], "body": [{"label": "table", "id": 2, "page_no": 5, "cluster": {"id": 2, "label": "table", "bbox": {"l": 135.92572021484375, "t": 70.81258392333984, "r": 547.7196044921875, "b": 734.230957, "coord_origin": "TOPLEFT"}, "confidence": 0.9778977036476135, "cells": [{"id": 2, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 504.58301, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": ". . . . .", "bbox": {"l": 505.67957, "t": 71.50867000000005, "r": 530.59589, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "37", "bbox": {"l": 536.13281, "t": 71.50867000000005, "r": 547.20673, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "4.1", "bbox": {"l": 136.80002, "t": 83.50847999999996, "r": 150.64761, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Business requirements for the RCAC banking scenario . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18666, "t": 83.50847999999996, "r": 530.52008, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "38", "bbox": {"l": 536.05914, "t": 83.50847999999996, "r": 547.13721, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "4.2", "bbox": {"l": 136.80002, "t": 95.98834000000011, "r": 150.64821, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Description of the users roles and responsibilities", "bbox": {"l": 156.18748, "t": 95.98834000000011, "r": 372.67761, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 378.21689, "t": 95.98834000000011, "r": 530.547, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "39", "bbox": {"l": 536.0863, "t": 95.98834000000011, "r": 547.16486, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "4.3", "bbox": {"l": 136.80002, "t": 108.52795000000015, "r": 150.68542, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Implementation of RCAC", "bbox": {"l": 156.23959, "t": 108.52795000000015, "r": 266.7135, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 272.26767, "t": 108.52795000000015, "r": 530.53625, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "42", "bbox": {"l": 536.09039, "t": 108.52795000000015, "r": 547.19873, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "4.3.1", "bbox": {"l": 151.20018, "t": 121.00780999999995, "r": 173.32434, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Reviewing the tables that are used in this example", "bbox": {"l": 178.85538, "t": 121.00780999999995, "r": 400.57443, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": ". . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 406.10547, "t": 121.00780999999995, "r": 530.55383, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "42", "bbox": {"l": 536.0849, "t": 121.00780999999995, "r": 547.14697, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "4.3.2", "bbox": {"l": 151.20018, "t": 133.48766999999998, "r": 173.33942, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Assigning function ID QIBM_DB_SECADM to the Database Engineers group", "bbox": {"l": 178.87422, "t": 133.48766999999998, "r": 516.9256, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": ". .", "bbox": {"l": 522.46039, "t": 133.48766999999998, "r": 530.76263, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "47", "bbox": {"l": 536.29742, "t": 133.48766999999998, "r": 547.36707, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "4.3.3", "bbox": {"l": 151.20018, "t": 146.02728000000002, "r": 173.32571, "b": 155.24030000000005, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8571, "t": 146.02728000000002, "r": 530.56757, "b": 155.24030000000005, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "50", "bbox": {"l": 536.09894, "t": 146.02728000000002, "r": 547.16174, "b": 155.24030000000005, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "4.3.4", "bbox": {"l": 151.20018, "t": 158.50714000000005, "r": 173.32639, "b": 167.72015, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Creating the CUSTOMER_LOGIN_ID global variable", "bbox": {"l": 178.85794, "t": 158.50714000000005, "r": 411.62085, "b": 167.72015, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ". . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 417.1524, "t": 158.50714000000005, "r": 530.54919, "b": 167.72015, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "52", "bbox": {"l": 536.08075, "t": 158.50714000000005, "r": 547.14386, "b": 167.72015, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "4.3.5", "bbox": {"l": 151.20018, "t": 170.98699999999997, "r": 173.3559, "b": 180.20001000000002, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89482, "t": 170.98699999999997, "r": 530.53705, "b": 180.20001000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "54", "bbox": {"l": 536.07599, "t": 170.98699999999997, "r": 547.15387, "b": 180.20001000000002, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "4.3.6", "bbox": {"l": 151.20018, "t": 183.52661, "r": 173.3559, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Defining and creating column masks", "bbox": {"l": 178.89482, "t": 183.52661, "r": 339.45404, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.99295, "t": 183.52661, "r": 530.54706, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "58", "bbox": {"l": 536.086, "t": 183.52661, "r": 547.16388, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "4.3.7", "bbox": {"l": 151.20018, "t": 196.00647000000004, "r": 173.35544, "b": 205.21947999999998, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Restricting the inserting and updating of masked data . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89426, "t": 196.00647000000004, "r": 530.53931, "b": 205.21947999999998, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "60", "bbox": {"l": 536.07812, "t": 196.00647000000004, "r": 547.15576, "b": 205.21947999999998, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "4.3.8", "bbox": {"l": 151.20018, "t": 208.48632999999995, "r": 173.51157, "b": 217.69934, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Activating row and column access control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.0894, "t": 208.48632999999995, "r": 530.41339, "b": 217.69934, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "63", "bbox": {"l": 535.99127, "t": 208.48632999999995, "r": 547.14697, "b": 217.69934, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "4.3.9", "bbox": {"l": 151.20018, "t": 221.02594, "r": 173.41745, "b": 230.23895000000005, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Reviewing row permissions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97176, "t": 221.02594, "r": 530.48206, "b": 230.23895000000005, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "64", "bbox": {"l": 536.03638, "t": 221.02594, "r": 547.14502, "b": 230.23895000000005, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "4.3.10", "bbox": {"l": 151.20018, "t": 233.50580000000002, "r": 179.05151, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "Demonstrating data access with RCAC", "bbox": {"l": 181.83665, "t": 233.50580000000002, "r": 354.98581, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 360.55606, "t": 233.50580000000002, "r": 530.44922, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "66", "bbox": {"l": 536.01947, "t": 233.50580000000002, "r": 547.16003, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "4.3.11", "bbox": {"l": 151.20018, "t": 245.98566000000005, "r": 179.0511, "b": 255.19867, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Query implementation with RCAC activated . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 181.83621, "t": 245.98566000000005, "r": 530.43353, "b": 255.19867, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "75", "bbox": {"l": 536.00372, "t": 245.98566000000005, "r": 547.1441, "b": 255.19867, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "Chapter 5. RCAC and non-SQL interfaces", "bbox": {"l": 136.80002, "t": 268.48528999999996, "r": 335.23209, "b": 277.6983, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 336.1803, "t": 268.48528999999996, "r": 530.53851, "b": 277.6983, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "79", "bbox": {"l": 536.09161, "t": 268.48528999999996, "r": 547.19781, "b": 277.6983, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "5.1", "bbox": {"l": 136.80002, "t": 280.48514, "r": 150.64661, "b": 289.69812, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Unsupported interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18524, "t": 280.48514, "r": 530.56097, "b": 289.69812, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "80", "bbox": {"l": 536.09961, "t": 280.48514, "r": 547.17688, "b": 289.69812, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "5.2", "bbox": {"l": 136.80002, "t": 293.02478, "r": 150.7034, "b": 302.2377599999999, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Native query result differences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26476, "t": 293.02478, "r": 530.48578, "b": 302.2377599999999, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "80", "bbox": {"l": 536.04718, "t": 293.02478, "r": 547.16986, "b": 302.2377599999999, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "5.3", "bbox": {"l": 136.80002, "t": 305.50467, "r": 150.68428, "b": 314.71765, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "Accidental updates with masked values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.23799, "t": 305.50467, "r": 530.49377, "b": 314.71765, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "81", "bbox": {"l": 536.04749, "t": 305.50467, "r": 547.15491, "b": 314.71765, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "5.4", "bbox": {"l": 136.80002, "t": 317.98456, "r": 150.62888, "b": 327.19754, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "System CL commands considerations", "bbox": {"l": 156.16042, "t": 317.98456, "r": 323.13144, "b": 327.19754, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 328.66299, "t": 317.98456, "r": 530.56433, "b": 327.19754, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "82", "bbox": {"l": 536.09583, "t": 317.98456, "r": 547.15894, "b": 327.19754, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "5.4.1", "bbox": {"l": 151.20018, "t": 330.5242, "r": 173.4519, "b": 339.73718, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "Create Duplicate Object (CRTDUPOBJ) command . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01483, "t": 330.5242, "r": 530.4599, "b": 339.73718, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "82", "bbox": {"l": 536.02283, "t": 330.5242, "r": 547.14868, "b": 339.73718, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "5.4.2", "bbox": {"l": 151.20018, "t": 343.0040900000001, "r": 173.35596, "b": 352.21707, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "Copy File (CPYF) command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8949, "t": 343.0040900000001, "r": 530.53815, "b": 352.21707, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "82", "bbox": {"l": 536.07709, "t": 343.0040900000001, "r": 547.15497, "b": 352.21707, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "5.4.3", "bbox": {"l": 151.20018, "t": 355.48398, "r": 173.451, "b": 364.69696000000005, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "Copy Library (CPYLIB) command. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01372, "t": 355.48398, "r": 530.49475, "b": 364.69696000000005, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "83", "bbox": {"l": 536.05743, "t": 355.48398, "r": 547.18286, "b": 364.69696000000005, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "Chapter 6. Additional considerations", "bbox": {"l": 136.80002, "t": 377.98361, "r": 313.86292, "b": 387.19659, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 313.98047, "t": 377.98361, "r": 530.53851, "b": 387.19659, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "85", "bbox": {"l": 536.09131, "t": 377.98361, "r": 547.19684, "b": 387.19659, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "6.1", "bbox": {"l": 136.80003, "t": 389.98343, "r": 150.68416, "b": 399.19641, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "Timing of column masking", "bbox": {"l": 156.23781, "t": 389.98343, "r": 272.24521, "b": 399.19641, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 277.79886, "t": 389.98343, "r": 530.49005, "b": 399.19641, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "86", "bbox": {"l": 536.0437, "t": 389.98343, "r": 547.151, "b": 399.19641, "coord_origin": "TOPLEFT"}}, {"id": 86, "text": "6.2", "bbox": {"l": 136.80003, "t": 402.5230700000001, "r": 150.70372, "b": 411.73605, "coord_origin": "TOPLEFT"}}, {"id": 87, "text": "RCAC effects on data movement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.2652, "t": 402.5230700000001, "r": 530.49445, "b": 411.73605, "coord_origin": "TOPLEFT"}}, {"id": 88, "text": "88", "bbox": {"l": 536.05591, "t": 402.5230700000001, "r": 547.17889, "b": 411.73605, "coord_origin": "TOPLEFT"}}, {"id": 89, "text": "6.2.1", "bbox": {"l": 151.2002, "t": 415.00296, "r": 173.38661, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}}, {"id": 90, "text": "Effects when RCAC is defined on the source table", "bbox": {"l": 178.93321, "t": 415.00296, "r": 400.16882, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}}, {"id": 91, "text": ". . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 405.71545, "t": 415.00296, "r": 530.51398, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}}, {"id": 92, "text": "88", "bbox": {"l": 536.06061, "t": 415.00296, "r": 547.15381, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}}, {"id": 93, "text": "6.2.2", "bbox": {"l": 151.2002, "t": 427.48285, "r": 173.32501, "b": 436.69583, "coord_origin": "TOPLEFT"}}, {"id": 94, "text": "Effects when RCAC is defined on the target table", "bbox": {"l": 178.85622, "t": 427.48285, "r": 395.06064, "b": 436.69583, "coord_origin": "TOPLEFT"}}, {"id": 95, "text": ". . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 400.59186, "t": 427.48285, "r": 530.57513, "b": 436.69583, "coord_origin": "TOPLEFT"}}, {"id": 96, "text": "89", "bbox": {"l": 536.10632, "t": 427.48285, "r": 547.16876, "b": 436.69583, "coord_origin": "TOPLEFT"}}, {"id": 97, "text": "6.2.3", "bbox": {"l": 151.2002, "t": 440.02249, "r": 173.38657, "b": 449.23546999999996, "coord_origin": "TOPLEFT"}}, {"id": 98, "text": "Effects when RCAC is defined on both source and target tables . . . . . . . . . . . . .", "bbox": {"l": 178.93315, "t": 440.02249, "r": 530.5033, "b": 449.23546999999996, "coord_origin": "TOPLEFT"}}, {"id": 99, "text": "90", "bbox": {"l": 536.04987, "t": 440.02249, "r": 547.14307, "b": 449.23546999999996, "coord_origin": "TOPLEFT"}}, {"id": 100, "text": "6.3", "bbox": {"l": 136.80003, "t": 452.50238, "r": 150.64833, "b": 461.71536, "coord_origin": "TOPLEFT"}}, {"id": 101, "text": "RCAC effects on joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18765, "t": 452.50238, "r": 530.59979, "b": 461.71536, "coord_origin": "TOPLEFT"}}, {"id": 102, "text": "91", "bbox": {"l": 536.1391, "t": 452.50238, "r": 547.21777, "b": 461.71536, "coord_origin": "TOPLEFT"}}, {"id": 103, "text": "6.3.1", "bbox": {"l": 151.2002, "t": 464.98227, "r": 173.57745, "b": 474.19525, "coord_origin": "TOPLEFT"}}, {"id": 104, "text": "Inner joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92", "bbox": {"l": 179.17177, "t": 464.98227, "r": 547.25958, "b": 474.19525, "coord_origin": "TOPLEFT"}}, {"id": 105, "text": "6.3.2", "bbox": {"l": 151.20016, "t": 477.52191, "r": 173.60931, "b": 486.73489, "coord_origin": "TOPLEFT"}}, {"id": 106, "text": "Outer joins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94", "bbox": {"l": 179.21159, "t": 477.52191, "r": 547.25958, "b": 486.73489, "coord_origin": "TOPLEFT"}}, {"id": 107, "text": "6.3.3", "bbox": {"l": 151.20016, "t": 490.0018, "r": 173.47958, "b": 499.21478, "coord_origin": "TOPLEFT"}}, {"id": 108, "text": "Exception joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.04944, "t": 490.0018, "r": 530.4812, "b": 499.21478, "coord_origin": "TOPLEFT"}}, {"id": 109, "text": "96", "bbox": {"l": 536.05103, "t": 490.0018, "r": 547.19073, "b": 499.21478, "coord_origin": "TOPLEFT"}}, {"id": 110, "text": "6.4", "bbox": {"l": 136.8, "t": 502.54144, "r": 150.62956, "b": 511.75443, "coord_origin": "TOPLEFT"}}, {"id": 111, "text": "Monitoring, analyzing, and debugging with RCAC", "bbox": {"l": 156.16138, "t": 502.54144, "r": 372.92725, "b": 511.75443, "coord_origin": "TOPLEFT"}}, {"id": 112, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 378.45905, "t": 502.54144, "r": 530.58417, "b": 511.75443, "coord_origin": "TOPLEFT"}}, {"id": 113, "text": "97", "bbox": {"l": 536.11597, "t": 502.54144, "r": 547.17963, "b": 511.75443, "coord_origin": "TOPLEFT"}}, {"id": 114, "text": "6.4.1", "bbox": {"l": 151.20016, "t": 515.02133, "r": 173.32509, "b": 524.23431, "coord_origin": "TOPLEFT"}}, {"id": 115, "text": "Query monitoring and analysis tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85632, "t": 515.02133, "r": 530.57709, "b": 524.23431, "coord_origin": "TOPLEFT"}}, {"id": 116, "text": "97", "bbox": {"l": 536.10834, "t": 515.02133, "r": 547.17078, "b": 524.23431, "coord_origin": "TOPLEFT"}}, {"id": 117, "text": "6.4.2", "bbox": {"l": 151.20016, "t": 527.50122, "r": 173.44958, "b": 536.7142200000001, "coord_origin": "TOPLEFT"}}, {"id": 118, "text": "Index advisor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01193, "t": 527.50122, "r": 530.53064, "b": 536.7142200000001, "coord_origin": "TOPLEFT"}}, {"id": 119, "text": "99", "bbox": {"l": 536.09302, "t": 527.50122, "r": 547.21771, "b": 536.7142200000001, "coord_origin": "TOPLEFT"}}, {"id": 120, "text": "6.4.3", "bbox": {"l": 151.20013, "t": 540.0408600000001, "r": 173.35367, "b": 549.25386, "coord_origin": "TOPLEFT"}}, {"id": 121, "text": "Metadata using catalogs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89204, "t": 540.0408600000001, "r": 525.01111, "b": 549.25386, "coord_origin": "TOPLEFT"}}, {"id": 122, "text": "100", "bbox": {"l": 530.54944, "t": 540.0408600000001, "r": 547.16461, "b": 549.25386, "coord_origin": "TOPLEFT"}}, {"id": 123, "text": "6.5", "bbox": {"l": 136.79997, "t": 552.52074, "r": 150.76207, "b": 561.73373, "coord_origin": "TOPLEFT"}}, {"id": 124, "text": "Views, materialized query tables, and query rewrite with RCAC . . . . . . . . . . . . . . . .", "bbox": {"l": 156.34691, "t": 552.52074, "r": 524.80566, "b": 561.73373, "coord_origin": "TOPLEFT"}}, {"id": 125, "text": "102", "bbox": {"l": 530.3905, "t": 552.52074, "r": 547.14502, "b": 561.73373, "coord_origin": "TOPLEFT"}}, {"id": 126, "text": "6.5.1", "bbox": {"l": 151.20013, "t": 565.00061, "r": 173.42041, "b": 574.21361, "coord_origin": "TOPLEFT"}}, {"id": 127, "text": "Views", "bbox": {"l": 178.97548, "t": 565.00061, "r": 205.62183, "b": 574.21361, "coord_origin": "TOPLEFT"}}, {"id": 128, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 211.1769, "t": 565.00061, "r": 525.03827, "b": 574.21361, "coord_origin": "TOPLEFT"}}, {"id": 129, "text": "102", "bbox": {"l": 530.59332, "t": 565.00061, "r": 547.25854, "b": 574.21361, "coord_origin": "TOPLEFT"}}, {"id": 130, "text": "6.5.2", "bbox": {"l": 151.20013, "t": 577.54025, "r": 173.51099, "b": 586.75325, "coord_origin": "TOPLEFT"}}, {"id": 131, "text": "Materialized query tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.0887, "t": 577.54025, "r": 524.85681, "b": 586.75325, "coord_origin": "TOPLEFT"}}, {"id": 132, "text": "103", "bbox": {"l": 530.43451, "t": 577.54025, "r": 547.16766, "b": 586.75325, "coord_origin": "TOPLEFT"}}, {"id": 133, "text": "6.5.3", "bbox": {"l": 151.20013, "t": 590.02013, "r": 173.41756, "b": 599.23312, "coord_origin": "TOPLEFT"}}, {"id": 134, "text": "Query rewrite", "bbox": {"l": 178.97192, "t": 590.02013, "r": 238.92101000000002, "b": 599.23312, "coord_origin": "TOPLEFT"}}, {"id": 135, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 244.47537000000003, "t": 590.02013, "r": 524.9704, "b": 599.23312, "coord_origin": "TOPLEFT"}}, {"id": 136, "text": "105", "bbox": {"l": 530.52472, "t": 590.02013, "r": 547.18781, "b": 599.23312, "coord_origin": "TOPLEFT"}}, {"id": 137, "text": "6.6", "bbox": {"l": 136.79997, "t": 602.5, "r": 150.70438, "b": 611.713, "coord_origin": "TOPLEFT"}}, {"id": 138, "text": "RCAC effects on performance and scalability. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26613, "t": 602.5, "r": 524.92279, "b": 611.713, "coord_origin": "TOPLEFT"}}, {"id": 139, "text": "105", "bbox": {"l": 530.48456, "t": 602.5, "r": 547.16986, "b": 611.713, "coord_origin": "TOPLEFT"}}, {"id": 140, "text": "6.7", "bbox": {"l": 136.79997, "t": 615.03964, "r": 150.70482, "b": 624.25264, "coord_origin": "TOPLEFT"}}, {"id": 141, "text": "Exclusive lock to implement RCAC (availability issues) . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26675, "t": 615.03964, "r": 524.87512, "b": 624.25264, "coord_origin": "TOPLEFT"}}, {"id": 142, "text": "107", "bbox": {"l": 530.43701, "t": 615.03964, "r": 547.12286, "b": 624.25264, "coord_origin": "TOPLEFT"}}, {"id": 143, "text": "6.8", "bbox": {"l": 136.79997, "t": 627.51952, "r": 150.62793, "b": 636.73251, "coord_origin": "TOPLEFT"}}, {"id": 144, "text": "Avoiding propagation of masked data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.1591, "t": 627.51952, "r": 525.047, "b": 636.73251, "coord_origin": "TOPLEFT"}}, {"id": 145, "text": "108", "bbox": {"l": 530.57819, "t": 627.51952, "r": 547.17175, "b": 636.73251, "coord_origin": "TOPLEFT"}}, {"id": 146, "text": "6.8.1", "bbox": {"l": 151.20013, "t": 639.99939, "r": 173.48119, "b": 649.21239, "coord_origin": "TOPLEFT"}}, {"id": 147, "text": "Check constraint solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.05145, "t": 639.99939, "r": 524.91864, "b": 649.21239, "coord_origin": "TOPLEFT"}}, {"id": 148, "text": "108", "bbox": {"l": 530.48889, "t": 639.99939, "r": 547.19971, "b": 649.21239, "coord_origin": "TOPLEFT"}}, {"id": 149, "text": "6.8.2", "bbox": {"l": 151.20013, "t": 652.53903, "r": 173.32486, "b": 661.75203, "coord_origin": "TOPLEFT"}}, {"id": 150, "text": "Before trigger solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85603, "t": 652.53903, "r": 525.07208, "b": 661.75203, "coord_origin": "TOPLEFT"}}, {"id": 151, "text": "109", "bbox": {"l": 530.60321, "t": 652.53903, "r": 547.19678, "b": 661.75203, "coord_origin": "TOPLEFT"}}, {"id": 152, "text": "6.9", "bbox": {"l": 136.79997, "t": 665.01891, "r": 150.70258, "b": 674.23191, "coord_origin": "TOPLEFT"}}, {"id": 153, "text": "Triggers and functions (SECURED) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26361, "t": 665.01891, "r": 524.87256, "b": 674.23191, "coord_origin": "TOPLEFT"}}, {"id": 154, "text": "109", "bbox": {"l": 530.43359, "t": 665.01891, "r": 547.11676, "b": 674.23191, "coord_origin": "TOPLEFT"}}, {"id": 155, "text": "6.9.1", "bbox": {"l": 151.20013, "t": 677.49879, "r": 173.32774, "b": 686.71179, "coord_origin": "TOPLEFT"}}, {"id": 156, "text": "Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85965, "t": 677.49879, "r": 525.13092, "b": 686.71179, "coord_origin": "TOPLEFT"}}, {"id": 157, "text": "109", "bbox": {"l": 530.66284, "t": 677.49879, "r": 547.25854, "b": 686.71179, "coord_origin": "TOPLEFT"}}, {"id": 158, "text": "6.9.2", "bbox": {"l": 151.20013, "t": 690.0384300000001, "r": 173.57503, "b": 699.251434, "coord_origin": "TOPLEFT"}}, {"id": 159, "text": "Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.16876, "t": 690.0384300000001, "r": 524.84283, "b": 699.251434, "coord_origin": "TOPLEFT"}}, {"id": 160, "text": "110", "bbox": {"l": 530.43652, "t": 690.0384300000001, "r": 547.21771, "b": 699.251434, "coord_origin": "TOPLEFT"}}, {"id": 161, "text": "6.10", "bbox": {"l": 136.79996, "t": 702.518311, "r": 156.34335, "b": 711.731316, "coord_origin": "TOPLEFT"}}, {"id": 162, "text": "RCAC is only one part of the solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 159.13527, "t": 702.518311, "r": 524.81567, "b": 711.731316, "coord_origin": "TOPLEFT"}}, {"id": 163, "text": "111", "bbox": {"l": 530.39954, "t": 702.518311, "r": 547.151, "b": 711.731316, "coord_origin": "TOPLEFT"}}, {"id": 164, "text": "Chapter 7. Row and Column Access Control management", "bbox": {"l": 136.79996, "t": 725.017952, "r": 413.01562, "b": 734.230957, "coord_origin": "TOPLEFT"}}, {"id": 165, "text": " . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 413.99973, "t": 725.017952, "r": 525.0014, "b": 734.230957, "coord_origin": "TOPLEFT"}}, {"id": 166, "text": "113", "bbox": {"l": 530.55145, "t": 725.017952, "r": 547.20172, "b": 734.230957, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl", "rhed", "lcel", "fcel", "nl"], "num_rows": 47, "num_cols": 2, "table_cells": [{"bbox": {"l": 136.8, "t": 71.50867000000005, "r": 530.59589, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.13281, "t": 71.50867000000005, "r": 547.20673, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "37", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80002, "t": 83.50847999999996, "r": 530.52008, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.1 Business requirements for the RCAC banking scenario . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.05914, "t": 83.50847999999996, "r": 547.13721, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "38", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80002, "t": 95.98834000000011, "r": 372.67761, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.2 Description of the users roles and responsibilities", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 378.21689, "t": 95.98834000000011, "r": 547.16486, "b": 105.20135000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . 39", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80002, "t": 108.52795000000015, "r": 530.53625, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3 Implementation of RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.09039, "t": 108.52795000000015, "r": 547.19873, "b": 117.74096999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "42", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 121.00780999999995, "r": 400.57443, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.1 Reviewing the tables that are used in this example", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 406.10547, "t": 121.00780999999995, "r": 547.14697, "b": 130.22082999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . 42", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 133.48766999999998, "r": 516.9256, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.2 Assigning function ID QIBM_DB_SECADM to the Database Engineers group", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 522.46039, "t": 133.48766999999998, "r": 547.36707, "b": 142.70068000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . 47", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 146.02728000000002, "r": 530.56757, "b": 155.24030000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.3 Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.09894, "t": 146.02728000000002, "r": 547.16174, "b": 155.24030000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "50", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 158.50714000000005, "r": 411.62085, "b": 167.72015, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.4 Creating the CUSTOMER_LOGIN_ID global variable", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 417.1524, "t": 158.50714000000005, "r": 547.14386, "b": 167.72015, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . 52", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 170.98699999999997, "r": 530.53705, "b": 180.20001000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.5 Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.07599, "t": 170.98699999999997, "r": 547.15387, "b": 180.20001000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "54", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 183.52661, "r": 339.45404, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.6 Defining and creating column masks", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 344.99295, "t": 183.52661, "r": 547.16388, "b": 192.73961999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 196.00647000000004, "r": 530.53931, "b": 205.21947999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.7 Restricting the inserting and updating of masked data . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.07812, "t": 196.00647000000004, "r": 547.15576, "b": 205.21947999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "60", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 221.02594, "r": 530.48206, "b": 230.23895000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.9 Reviewing row permissions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.03638, "t": 221.02594, "r": 547.14502, "b": 230.23895000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "64", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 233.50580000000002, "r": 530.44922, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.10 Demonstrating data access with RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.01947, "t": 233.50580000000002, "r": 547.16003, "b": 242.71880999999996, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "66", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 245.98566000000005, "r": 530.43353, "b": 255.19867, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "4.3.11 Query implementation with RCAC activated . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.00372, "t": 245.98566000000005, "r": 547.1441, "b": 255.19867, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "75", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80002, "t": 268.48528999999996, "r": 530.53851, "b": 277.6983, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "Chapter 5. RCAC and non-SQL interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.09161, "t": 268.48528999999996, "r": 547.19781, "b": 277.6983, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "79", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 156.18524, "t": 280.48514, "r": 547.17688, "b": 289.69812, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Unsupported interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80002, "t": 305.50467, "r": 530.49377, "b": 314.71765, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "5.3 Accidental updates with masked values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.04749, "t": 305.50467, "r": 547.15491, "b": 314.71765, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "81", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80002, "t": 317.98456, "r": 530.56433, "b": 327.19754, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "5.4 System CL commands considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.09583, "t": 317.98456, "r": 547.15894, "b": 327.19754, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "82", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 330.5242, "r": 530.4599, "b": 339.73718, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "5.4.1 Create Duplicate Object (CRTDUPOBJ) command . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.02283, "t": 330.5242, "r": 547.14868, "b": 339.73718, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "82", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20018, "t": 343.0040900000001, "r": 530.53815, "b": 364.69696000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "5.4.2 Copy File (CPYF) command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4.3 Copy Library (CPYLIB) command. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.07709, "t": 343.0040900000001, "r": 547.15497, "b": 352.21707, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "82", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.05743, "t": 355.48398, "r": 547.18286, "b": 364.69696000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "83", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80002, "t": 377.98361, "r": 530.53851, "b": 387.19659, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 22, "end_row_offset_idx": 23, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "Chapter 6. Additional considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 277.79886, "t": 377.98361, "r": 547.19684, "b": 399.19641, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 23, "end_row_offset_idx": 24, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "85 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80003, "t": 402.5230700000001, "r": 530.51398, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 23, "end_row_offset_idx": 24, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.2 RCAC effects on data movement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 151.2002, "t": 415.00296, "r": 400.16882, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 24, "end_row_offset_idx": 25, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.2.1 Effects when RCAC is defined on the source table", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.06061, "t": 415.00296, "r": 547.15381, "b": 424.21593999999993, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 25, "end_row_offset_idx": 26, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "88", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 400.59186, "t": 427.48285, "r": 547.16876, "b": 449.23546999999996, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 22, "end_row_offset_idx": 23, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . 89 90", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.80003, "t": 440.02249, "r": 530.59979, "b": 461.71536, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 26, "end_row_offset_idx": 27, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.2.3 Effects when RCAC is defined on both source and target tables . . . . . . . . . . . . . 6.3 RCAC effects on joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.1391, "t": 452.50238, "r": 547.21777, "b": 461.71536, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 26, "end_row_offset_idx": 27, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "91", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.2002, "t": 464.98227, "r": 547.25958, "b": 474.19525, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 27, "end_row_offset_idx": 28, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.3.1 Inner joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 151.20016, "t": 477.52191, "r": 547.25958, "b": 486.73489, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 28, "end_row_offset_idx": 29, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.3.2 Outer joins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 151.20016, "t": 490.0018, "r": 530.4812, "b": 499.21478, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 29, "end_row_offset_idx": 30, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.3.3 Exception joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.05103, "t": 490.0018, "r": 547.19073, "b": 499.21478, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 29, "end_row_offset_idx": 30, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "96", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.8, "t": 502.54144, "r": 372.92725, "b": 511.75443, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 30, "end_row_offset_idx": 31, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.4 Monitoring, analyzing, and debugging with RCAC", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 378.45905, "t": 502.54144, "r": 530.58417, "b": 511.75443, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 31, "end_row_offset_idx": 32, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.11597, "t": 502.54144, "r": 547.17963, "b": 511.75443, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 30, "end_row_offset_idx": 31, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "97", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 178.85632, "t": 515.02133, "r": 547.17078, "b": 524.23431, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 31, "end_row_offset_idx": 32, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Query monitoring and analysis tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20016, "t": 527.50122, "r": 530.53064, "b": 536.7142200000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 32, "end_row_offset_idx": 33, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.4.2 Index advisor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 536.09302, "t": 527.50122, "r": 547.21771, "b": 536.7142200000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 32, "end_row_offset_idx": 33, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "99", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20013, "t": 540.0408600000001, "r": 525.01111, "b": 549.25386, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 33, "end_row_offset_idx": 34, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.4.3 Metadata using catalogs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.54944, "t": 540.0408600000001, "r": 547.16461, "b": 549.25386, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "100", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79997, "t": 552.52074, "r": 524.80566, "b": 561.73373, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 34, "end_row_offset_idx": 35, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.5 Views, materialized query tables, and query rewrite with RCAC . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.3905, "t": 552.52074, "r": 547.14502, "b": 561.73373, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 34, "end_row_offset_idx": 35, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "102", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20013, "t": 577.54025, "r": 524.85681, "b": 586.75325, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 35, "end_row_offset_idx": 36, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.5.2 Materialized query tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.43451, "t": 577.54025, "r": 547.16766, "b": 586.75325, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 35, "end_row_offset_idx": 36, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "103", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20013, "t": 590.02013, "r": 524.9704, "b": 611.713, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 37, "end_row_offset_idx": 38, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.5.3 Query rewrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . RCAC effects on performance and scalability. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.52472, "t": 590.02013, "r": 547.18781, "b": 599.23312, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 36, "end_row_offset_idx": 37, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "105", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79997, "t": 602.5, "r": 150.70438, "b": 611.713, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 38, "end_row_offset_idx": 39, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.6", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.48456, "t": 602.5, "r": 547.16986, "b": 611.713, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 38, "end_row_offset_idx": 39, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "105", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79997, "t": 615.03964, "r": 525.047, "b": 636.73251, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 40, "end_row_offset_idx": 41, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "6.7 Exclusive lock to implement RCAC (availability issues) . . . . . . . . . . . . . . . . . . . . . . . 6.8 Avoiding propagation of masked data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.43701, "t": 615.03964, "r": 547.12286, "b": 624.25264, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 39, "end_row_offset_idx": 40, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "107", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.57819, "t": 627.51952, "r": 547.17175, "b": 636.73251, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 40, "end_row_offset_idx": 41, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "108", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.48889, "t": 639.99939, "r": 547.19971, "b": 649.21239, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 41, "end_row_offset_idx": 42, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "108", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.43359, "t": 665.01891, "r": 547.11676, "b": 674.23191, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 42, "end_row_offset_idx": 43, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "109", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.66284, "t": 677.49879, "r": 547.25854, "b": 686.71179, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 43, "end_row_offset_idx": 44, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "109", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.39954, "t": 702.518311, "r": 547.151, "b": 711.731316, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 45, "end_row_offset_idx": 46, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "111", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79996, "t": 725.017952, "r": 525.0014, "b": 734.230957, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 2, "start_row_offset_idx": 46, "end_row_offset_idx": 47, "start_col_offset_idx": 0, "end_col_offset_idx": 2, "text": "Chapter 7. Row and Column Access Control management . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 530.55145, "t": 725.017952, "r": 547.20172, "b": 734.230957, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 44, "end_row_offset_idx": 45, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "113", "column_header": false, "row_header": false, "row_section": false}]}], "headers": [{"label": "page_footer", "id": 0, "page_no": 5, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.4805679321289, "t": 754.1161499023438, "r": 75.641998, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8876830339431763, "cells": [{"id": 0, "text": "iv ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 75.641998, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "iv"}, {"label": "page_footer", "id": 1, "page_no": 5, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 90.44805145263672, "t": 754.6052856445312, "r": 331.7034606933594, "b": 763.9476318359375, "coord_origin": "TOPLEFT"}, "confidence": 0.936427891254425, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 90.599998, "t": 755.538002, "r": 331.55881, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 6, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": " Contents ", "bbox": {"l": 488.22, "t": 755.538002, "r": 529.11151, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "v", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "7.1", "bbox": {"l": 136.7999, "t": 71.50903000000005, "r": 150.68571, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Managing row permissions and column masks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.24004, "t": 71.50903000000005, "r": 524.94354, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "114", "bbox": {"l": 530.49786, "t": 71.50903000000005, "r": 547.16083, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "7.1.1", "bbox": {"l": 151.20006, "t": 83.98888999999997, "r": 173.44891, "b": 93.20190000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Source management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01112, "t": 83.98888999999997, "r": 524.94879, "b": 93.20190000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "114", "bbox": {"l": 530.51099, "t": 83.98888999999997, "r": 547.19763, "b": 93.20190000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "7.1.2", "bbox": {"l": 151.20006, "t": 96.52850000000001, "r": 173.41805, "b": 105.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Modifying definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97253, "t": 96.52850000000001, "r": 524.97968, "b": 105.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "114", "bbox": {"l": 530.53418, "t": 96.52850000000001, "r": 547.19769, "b": 105.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "7.1.3", "bbox": {"l": 151.20006, "t": 109.00836000000004, "r": 173.32086, "b": 118.22136999999998, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Turning on and off . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85107, "t": 109.00836000000004, "r": 525.02576, "b": 118.22136999999998, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "114", "bbox": {"l": 530.55597, "t": 109.00836000000004, "r": 547.14661, "b": 118.22136999999998, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "7.1.4", "bbox": {"l": 151.20006, "t": 121.48821999999996, "r": 173.41551, "b": 130.70123, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Regenerating", "bbox": {"l": 178.96938, "t": 121.48821999999996, "r": 238.93310999999997, "b": 130.70123, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 244.48697, "t": 121.48821999999996, "r": 524.95703, "b": 130.70123, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "114", "bbox": {"l": 530.51086, "t": 121.48821999999996, "r": 547.17249, "b": 130.70123, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "7.2", "bbox": {"l": 136.7999, "t": 134.02783, "r": 150.68552, "b": 143.24084000000005, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Managing tables with row permissions and column masks. . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.23976, "t": 134.02783, "r": 524.91779, "b": 143.24084000000005, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "115", "bbox": {"l": 530.47205, "t": 134.02783, "r": 547.13477, "b": 143.24084000000005, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "7.2.1", "bbox": {"l": 151.20006, "t": 146.50769000000003, "r": 173.4474, "b": 155.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Save and restore. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00923, "t": 146.50769000000003, "r": 524.93335, "b": 155.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "115", "bbox": {"l": 530.49518, "t": 146.50769000000003, "r": 547.18073, "b": 155.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "7.2.2", "bbox": {"l": 151.20006, "t": 158.98755000000006, "r": 173.38383, "b": 168.20056, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Table migration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.92978, "t": 158.98755000000006, "r": 524.96283, "b": 168.20056, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "116", "bbox": {"l": 530.50873, "t": 158.98755000000006, "r": 547.14661, "b": 168.20056, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "7.3", "bbox": {"l": 136.7999, "t": 171.52715999999998, "r": 150.68399, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Monitoring and auditing function usage", "bbox": {"l": 156.23763, "t": 171.52715999999998, "r": 327.80109, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 333.35474, "t": 171.52715999999998, "r": 524.95526, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "117", "bbox": {"l": 530.50891, "t": 171.52715999999998, "r": 547.1698, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Chapter 8. Designing and planning for success", "bbox": {"l": 136.7999, "t": 194.02679, "r": 362.66785, "b": 203.23981000000003, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 363.95959, "t": 194.02679, "r": 524.98785, "b": 203.23981000000003, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "119", "bbox": {"l": 530.54059, "t": 194.02679, "r": 547.19867, "b": 203.23981000000003, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "8.1", "bbox": {"l": 136.79988, "t": 206.02661, "r": 150.68515, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Implementing RCAC with good design and proper planning", "bbox": {"l": 156.23926, "t": 206.02661, "r": 416.63306, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": ". . . . . . . . . . . . . . . . . . .", "bbox": {"l": 422.18716, "t": 206.02661, "r": 524.93817, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "120", "bbox": {"l": 530.49231, "t": 206.02661, "r": 547.1546, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "8.2", "bbox": {"l": 136.79988, "t": 218.50647000000004, "r": 150.74098, "b": 227.71947999999998, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "DB2 for i Center of Excellence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.31741, "t": 218.50647000000004, "r": 524.86377, "b": 227.71947999999998, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "120", "bbox": {"l": 530.44019, "t": 218.50647000000004, "r": 547.16949, "b": 227.71947999999998, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Appendix A. Database definitions for the RCAC banking example", "bbox": {"l": 136.79988, "t": 241.00609999999995, "r": 447.03098, "b": 250.21911999999998, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": " . . . . . . . . . . . . . .", "bbox": {"l": 447.35968, "t": 241.00609999999995, "r": 525.01611, "b": 250.21911999999998, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "121", "bbox": {"l": 530.56299, "t": 241.00609999999995, "r": 547.20367, "b": 250.21911999999998, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Related publications", "bbox": {"l": 136.7999, "t": 263.02570000000003, "r": 234.45174999999998, "b": 272.23870999999997, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 236.15984999999998, "t": 263.02570000000003, "r": 524.97516, "b": 272.23870999999997, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "127", "bbox": {"l": 530.5293, "t": 263.02570000000003, "r": 547.19171, "b": 272.23870999999997, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Other publications", "bbox": {"l": 136.7999, "t": 275.50562, "r": 217.75055, "b": 284.7186, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127", "bbox": {"l": 223.33541999999997, "t": 275.50562, "r": 547.25854, "b": 284.7186, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Online resources", "bbox": {"l": 136.79993, "t": 287.9855, "r": 212.6161, "b": 297.19849, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127", "bbox": {"l": 218.19348000000002, "t": 287.9855, "r": 547.25854, "b": 297.19849, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Help from IBM", "bbox": {"l": 136.79993, "t": 300.52515, "r": 200.54581, "b": 309.73813, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 206.09241, "t": 300.52515, "r": 525.02136, "b": 309.73813, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "128", "bbox": {"l": 530.56793, "t": 300.52515, "r": 547.2077, "b": 309.73813, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 488.22, "t": 754.8673095703125, "r": 529.11151, "b": 763.863001, "coord_origin": "TOPLEFT"}, "confidence": 0.9201837182044983, "cells": [{"id": 0, "text": " Contents ", "bbox": {"l": 488.22, "t": 755.538002, "r": 529.11151, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 540.8323974609375, "t": 754.848721, "r": 547.3976440429688, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8568527102470398, "cells": [{"id": 1, "text": "v", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "table", "bbox": {"l": 135.83180236816406, "t": 70.6937026977539, "r": 547.9264526367188, "b": 309.73813, "coord_origin": "TOPLEFT"}, "confidence": 0.978112518787384, "cells": [{"id": 2, "text": "7.1", "bbox": {"l": 136.7999, "t": 71.50903000000005, "r": 150.68571, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Managing row permissions and column masks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.24004, "t": 71.50903000000005, "r": 524.94354, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "114", "bbox": {"l": 530.49786, "t": 71.50903000000005, "r": 547.16083, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "7.1.1", "bbox": {"l": 151.20006, "t": 83.98888999999997, "r": 173.44891, "b": 93.20190000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Source management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01112, "t": 83.98888999999997, "r": 524.94879, "b": 93.20190000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "114", "bbox": {"l": 530.51099, "t": 83.98888999999997, "r": 547.19763, "b": 93.20190000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "7.1.2", "bbox": {"l": 151.20006, "t": 96.52850000000001, "r": 173.41805, "b": 105.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Modifying definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97253, "t": 96.52850000000001, "r": 524.97968, "b": 105.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "114", "bbox": {"l": 530.53418, "t": 96.52850000000001, "r": 547.19769, "b": 105.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "7.1.3", "bbox": {"l": 151.20006, "t": 109.00836000000004, "r": 173.32086, "b": 118.22136999999998, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Turning on and off . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85107, "t": 109.00836000000004, "r": 525.02576, "b": 118.22136999999998, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "114", "bbox": {"l": 530.55597, "t": 109.00836000000004, "r": 547.14661, "b": 118.22136999999998, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "7.1.4", "bbox": {"l": 151.20006, "t": 121.48821999999996, "r": 173.41551, "b": 130.70123, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Regenerating", "bbox": {"l": 178.96938, "t": 121.48821999999996, "r": 238.93310999999997, "b": 130.70123, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 244.48697, "t": 121.48821999999996, "r": 524.95703, "b": 130.70123, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "114", "bbox": {"l": 530.51086, "t": 121.48821999999996, "r": 547.17249, "b": 130.70123, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "7.2", "bbox": {"l": 136.7999, "t": 134.02783, "r": 150.68552, "b": 143.24084000000005, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Managing tables with row permissions and column masks. . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.23976, "t": 134.02783, "r": 524.91779, "b": 143.24084000000005, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "115", "bbox": {"l": 530.47205, "t": 134.02783, "r": 547.13477, "b": 143.24084000000005, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "7.2.1", "bbox": {"l": 151.20006, "t": 146.50769000000003, "r": 173.4474, "b": 155.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Save and restore. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00923, "t": 146.50769000000003, "r": 524.93335, "b": 155.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "115", "bbox": {"l": 530.49518, "t": 146.50769000000003, "r": 547.18073, "b": 155.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "7.2.2", "bbox": {"l": 151.20006, "t": 158.98755000000006, "r": 173.38383, "b": 168.20056, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Table migration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.92978, "t": 158.98755000000006, "r": 524.96283, "b": 168.20056, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "116", "bbox": {"l": 530.50873, "t": 158.98755000000006, "r": 547.14661, "b": 168.20056, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "7.3", "bbox": {"l": 136.7999, "t": 171.52715999999998, "r": 150.68399, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Monitoring and auditing function usage", "bbox": {"l": 156.23763, "t": 171.52715999999998, "r": 327.80109, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 333.35474, "t": 171.52715999999998, "r": 524.95526, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "117", "bbox": {"l": 530.50891, "t": 171.52715999999998, "r": 547.1698, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Chapter 8. Designing and planning for success", "bbox": {"l": 136.7999, "t": 194.02679, "r": 362.66785, "b": 203.23981000000003, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 363.95959, "t": 194.02679, "r": 524.98785, "b": 203.23981000000003, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "119", "bbox": {"l": 530.54059, "t": 194.02679, "r": 547.19867, "b": 203.23981000000003, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "8.1", "bbox": {"l": 136.79988, "t": 206.02661, "r": 150.68515, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Implementing RCAC with good design and proper planning", "bbox": {"l": 156.23926, "t": 206.02661, "r": 416.63306, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": ". . . . . . . . . . . . . . . . . . .", "bbox": {"l": 422.18716, "t": 206.02661, "r": 524.93817, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "120", "bbox": {"l": 530.49231, "t": 206.02661, "r": 547.1546, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "8.2", "bbox": {"l": 136.79988, "t": 218.50647000000004, "r": 150.74098, "b": 227.71947999999998, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "DB2 for i Center of Excellence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.31741, "t": 218.50647000000004, "r": 524.86377, "b": 227.71947999999998, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "120", "bbox": {"l": 530.44019, "t": 218.50647000000004, "r": 547.16949, "b": 227.71947999999998, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Appendix A. Database definitions for the RCAC banking example", "bbox": {"l": 136.79988, "t": 241.00609999999995, "r": 447.03098, "b": 250.21911999999998, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": " . . . . . . . . . . . . . .", "bbox": {"l": 447.35968, "t": 241.00609999999995, "r": 525.01611, "b": 250.21911999999998, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "121", "bbox": {"l": 530.56299, "t": 241.00609999999995, "r": 547.20367, "b": 250.21911999999998, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Related publications", "bbox": {"l": 136.7999, "t": 263.02570000000003, "r": 234.45174999999998, "b": 272.23870999999997, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 236.15984999999998, "t": 263.02570000000003, "r": 524.97516, "b": 272.23870999999997, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "127", "bbox": {"l": 530.5293, "t": 263.02570000000003, "r": 547.19171, "b": 272.23870999999997, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Other publications", "bbox": {"l": 136.7999, "t": 275.50562, "r": 217.75055, "b": 284.7186, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127", "bbox": {"l": 223.33541999999997, "t": 275.50562, "r": 547.25854, "b": 284.7186, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Online resources", "bbox": {"l": 136.79993, "t": 287.9855, "r": 212.6161, "b": 297.19849, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127", "bbox": {"l": 218.19348000000002, "t": 287.9855, "r": 547.25854, "b": 297.19849, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Help from IBM", "bbox": {"l": 136.79993, "t": 300.52515, "r": 200.54581, "b": 309.73813, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 206.09241, "t": 300.52515, "r": 525.02136, "b": 309.73813, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "128", "bbox": {"l": 530.56793, "t": 300.52515, "r": 547.2077, "b": 309.73813, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {"2": {"label": "table", "id": 2, "page_no": 6, "cluster": {"id": 2, "label": "table", "bbox": {"l": 135.83180236816406, "t": 70.6937026977539, "r": 547.9264526367188, "b": 309.73813, "coord_origin": "TOPLEFT"}, "confidence": 0.978112518787384, "cells": [{"id": 2, "text": "7.1", "bbox": {"l": 136.7999, "t": 71.50903000000005, "r": 150.68571, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Managing row permissions and column masks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.24004, "t": 71.50903000000005, "r": 524.94354, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "114", "bbox": {"l": 530.49786, "t": 71.50903000000005, "r": 547.16083, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "7.1.1", "bbox": {"l": 151.20006, "t": 83.98888999999997, "r": 173.44891, "b": 93.20190000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Source management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01112, "t": 83.98888999999997, "r": 524.94879, "b": 93.20190000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "114", "bbox": {"l": 530.51099, "t": 83.98888999999997, "r": 547.19763, "b": 93.20190000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "7.1.2", "bbox": {"l": 151.20006, "t": 96.52850000000001, "r": 173.41805, "b": 105.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Modifying definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97253, "t": 96.52850000000001, "r": 524.97968, "b": 105.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "114", "bbox": {"l": 530.53418, "t": 96.52850000000001, "r": 547.19769, "b": 105.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "7.1.3", "bbox": {"l": 151.20006, "t": 109.00836000000004, "r": 173.32086, "b": 118.22136999999998, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Turning on and off . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85107, "t": 109.00836000000004, "r": 525.02576, "b": 118.22136999999998, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "114", "bbox": {"l": 530.55597, "t": 109.00836000000004, "r": 547.14661, "b": 118.22136999999998, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "7.1.4", "bbox": {"l": 151.20006, "t": 121.48821999999996, "r": 173.41551, "b": 130.70123, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Regenerating", "bbox": {"l": 178.96938, "t": 121.48821999999996, "r": 238.93310999999997, "b": 130.70123, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 244.48697, "t": 121.48821999999996, "r": 524.95703, "b": 130.70123, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "114", "bbox": {"l": 530.51086, "t": 121.48821999999996, "r": 547.17249, "b": 130.70123, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "7.2", "bbox": {"l": 136.7999, "t": 134.02783, "r": 150.68552, "b": 143.24084000000005, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Managing tables with row permissions and column masks. . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.23976, "t": 134.02783, "r": 524.91779, "b": 143.24084000000005, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "115", "bbox": {"l": 530.47205, "t": 134.02783, "r": 547.13477, "b": 143.24084000000005, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "7.2.1", "bbox": {"l": 151.20006, "t": 146.50769000000003, "r": 173.4474, "b": 155.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Save and restore. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00923, "t": 146.50769000000003, "r": 524.93335, "b": 155.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "115", "bbox": {"l": 530.49518, "t": 146.50769000000003, "r": 547.18073, "b": 155.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "7.2.2", "bbox": {"l": 151.20006, "t": 158.98755000000006, "r": 173.38383, "b": 168.20056, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Table migration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.92978, "t": 158.98755000000006, "r": 524.96283, "b": 168.20056, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "116", "bbox": {"l": 530.50873, "t": 158.98755000000006, "r": 547.14661, "b": 168.20056, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "7.3", "bbox": {"l": 136.7999, "t": 171.52715999999998, "r": 150.68399, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Monitoring and auditing function usage", "bbox": {"l": 156.23763, "t": 171.52715999999998, "r": 327.80109, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 333.35474, "t": 171.52715999999998, "r": 524.95526, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "117", "bbox": {"l": 530.50891, "t": 171.52715999999998, "r": 547.1698, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Chapter 8. Designing and planning for success", "bbox": {"l": 136.7999, "t": 194.02679, "r": 362.66785, "b": 203.23981000000003, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 363.95959, "t": 194.02679, "r": 524.98785, "b": 203.23981000000003, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "119", "bbox": {"l": 530.54059, "t": 194.02679, "r": 547.19867, "b": 203.23981000000003, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "8.1", "bbox": {"l": 136.79988, "t": 206.02661, "r": 150.68515, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Implementing RCAC with good design and proper planning", "bbox": {"l": 156.23926, "t": 206.02661, "r": 416.63306, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": ". . . . . . . . . . . . . . . . . . .", "bbox": {"l": 422.18716, "t": 206.02661, "r": 524.93817, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "120", "bbox": {"l": 530.49231, "t": 206.02661, "r": 547.1546, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "8.2", "bbox": {"l": 136.79988, "t": 218.50647000000004, "r": 150.74098, "b": 227.71947999999998, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "DB2 for i Center of Excellence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.31741, "t": 218.50647000000004, "r": 524.86377, "b": 227.71947999999998, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "120", "bbox": {"l": 530.44019, "t": 218.50647000000004, "r": 547.16949, "b": 227.71947999999998, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Appendix A. Database definitions for the RCAC banking example", "bbox": {"l": 136.79988, "t": 241.00609999999995, "r": 447.03098, "b": 250.21911999999998, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": " . . . . . . . . . . . . . .", "bbox": {"l": 447.35968, "t": 241.00609999999995, "r": 525.01611, "b": 250.21911999999998, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "121", "bbox": {"l": 530.56299, "t": 241.00609999999995, "r": 547.20367, "b": 250.21911999999998, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Related publications", "bbox": {"l": 136.7999, "t": 263.02570000000003, "r": 234.45174999999998, "b": 272.23870999999997, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 236.15984999999998, "t": 263.02570000000003, "r": 524.97516, "b": 272.23870999999997, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "127", "bbox": {"l": 530.5293, "t": 263.02570000000003, "r": 547.19171, "b": 272.23870999999997, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Other publications", "bbox": {"l": 136.7999, "t": 275.50562, "r": 217.75055, "b": 284.7186, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127", "bbox": {"l": 223.33541999999997, "t": 275.50562, "r": 547.25854, "b": 284.7186, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Online resources", "bbox": {"l": 136.79993, "t": 287.9855, "r": 212.6161, "b": 297.19849, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127", "bbox": {"l": 218.19348000000002, "t": 287.9855, "r": 547.25854, "b": 297.19849, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Help from IBM", "bbox": {"l": 136.79993, "t": 300.52515, "r": 200.54581, "b": 309.73813, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 206.09241, "t": 300.52515, "r": 525.02136, "b": 309.73813, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "128", "bbox": {"l": 530.56793, "t": 300.52515, "r": 547.2077, "b": 309.73813, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl"], "num_rows": 17, "num_cols": 2, "table_cells": [{"bbox": {"l": 136.7999, "t": 71.50903000000005, "r": 524.94354, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.1 Managing row permissions and column masks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.49786, "t": 71.50903000000005, "r": 547.16083, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "114", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20006, "t": 83.98888999999997, "r": 524.94879, "b": 93.20190000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.1.1 Source management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.51099, "t": 83.98888999999997, "r": 547.19763, "b": 93.20190000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "114", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20006, "t": 96.52850000000001, "r": 524.97968, "b": 105.74152000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.1.2 Modifying definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.53418, "t": 96.52850000000001, "r": 547.19769, "b": 105.74152000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "114", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20006, "t": 109.00836000000004, "r": 525.02576, "b": 118.22136999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.1.3 Turning on and off . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.55597, "t": 109.00836000000004, "r": 547.14661, "b": 118.22136999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "114", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20006, "t": 121.48821999999996, "r": 238.93310999999997, "b": 130.70123, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.1.4 Regenerating", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 244.48697, "t": 121.48821999999996, "r": 547.17249, "b": 130.70123, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.7999, "t": 134.02783, "r": 524.91779, "b": 143.24084000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.2 Managing tables with row permissions and column masks. . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.47205, "t": 134.02783, "r": 547.13477, "b": 143.24084000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "115", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20006, "t": 146.50769000000003, "r": 524.93335, "b": 155.72069999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.2.1 Save and restore. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.49518, "t": 146.50769000000003, "r": 547.18073, "b": 155.72069999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "115", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20006, "t": 158.98755000000006, "r": 524.96283, "b": 168.20056, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.2.2 Table migration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.50873, "t": 158.98755000000006, "r": 547.14661, "b": 168.20056, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "116", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.7999, "t": 171.52715999999998, "r": 524.95526, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.3 Monitoring and auditing function usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.50891, "t": 171.52715999999998, "r": 547.1698, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "117", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.7999, "t": 194.02679, "r": 362.66785, "b": 203.23981000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 8. Designing and planning for success", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 363.95959, "t": 194.02679, "r": 547.19867, "b": 203.23981000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79988, "t": 206.02661, "r": 416.63306, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "8.1 Implementing RCAC with good design and proper planning", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 422.18716, "t": 206.02661, "r": 547.1546, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . 120", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79988, "t": 218.50647000000004, "r": 524.86377, "b": 227.71947999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "8.2 DB2 for i Center of Excellence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.44019, "t": 218.50647000000004, "r": 547.16949, "b": 227.71947999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "120", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79988, "t": 241.00609999999995, "r": 447.03098, "b": 250.21911999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Appendix A. Database definitions for the RCAC banking example", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 447.35968, "t": 241.00609999999995, "r": 547.20367, "b": 250.21911999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . 121", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.7999, "t": 263.02570000000003, "r": 234.45174999999998, "b": 272.23870999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Related publications", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 236.15984999999998, "t": 263.02570000000003, "r": 547.19171, "b": 272.23870999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.7999, "t": 275.50562, "r": 217.75055, "b": 284.7186, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Other publications", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 223.33541999999997, "t": 275.50562, "r": 547.25854, "b": 284.7186, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79993, "t": 287.9855, "r": 212.6161, "b": 297.19849, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Online resources", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 218.19348000000002, "t": 287.9855, "r": 547.25854, "b": 297.19849, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79993, "t": 300.52515, "r": 200.54581, "b": 309.73813, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Help from IBM", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 206.09241, "t": 300.52515, "r": 547.2077, "b": 309.73813, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128", "column_header": false, "row_header": false, "row_section": false}]}}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 6, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 488.22, "t": 754.8673095703125, "r": 529.11151, "b": 763.863001, "coord_origin": "TOPLEFT"}, "confidence": 0.9201837182044983, "cells": [{"id": 0, "text": " Contents ", "bbox": {"l": 488.22, "t": 755.538002, "r": 529.11151, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Contents"}, {"label": "page_footer", "id": 1, "page_no": 6, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 540.8323974609375, "t": 754.848721, "r": 547.3976440429688, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8568527102470398, "cells": [{"id": 1, "text": "v", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "v"}, {"label": "table", "id": 2, "page_no": 6, "cluster": {"id": 2, "label": "table", "bbox": {"l": 135.83180236816406, "t": 70.6937026977539, "r": 547.9264526367188, "b": 309.73813, "coord_origin": "TOPLEFT"}, "confidence": 0.978112518787384, "cells": [{"id": 2, "text": "7.1", "bbox": {"l": 136.7999, "t": 71.50903000000005, "r": 150.68571, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Managing row permissions and column masks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.24004, "t": 71.50903000000005, "r": 524.94354, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "114", "bbox": {"l": 530.49786, "t": 71.50903000000005, "r": 547.16083, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "7.1.1", "bbox": {"l": 151.20006, "t": 83.98888999999997, "r": 173.44891, "b": 93.20190000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Source management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01112, "t": 83.98888999999997, "r": 524.94879, "b": 93.20190000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "114", "bbox": {"l": 530.51099, "t": 83.98888999999997, "r": 547.19763, "b": 93.20190000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "7.1.2", "bbox": {"l": 151.20006, "t": 96.52850000000001, "r": 173.41805, "b": 105.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Modifying definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97253, "t": 96.52850000000001, "r": 524.97968, "b": 105.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "114", "bbox": {"l": 530.53418, "t": 96.52850000000001, "r": 547.19769, "b": 105.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "7.1.3", "bbox": {"l": 151.20006, "t": 109.00836000000004, "r": 173.32086, "b": 118.22136999999998, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Turning on and off . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85107, "t": 109.00836000000004, "r": 525.02576, "b": 118.22136999999998, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "114", "bbox": {"l": 530.55597, "t": 109.00836000000004, "r": 547.14661, "b": 118.22136999999998, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "7.1.4", "bbox": {"l": 151.20006, "t": 121.48821999999996, "r": 173.41551, "b": 130.70123, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Regenerating", "bbox": {"l": 178.96938, "t": 121.48821999999996, "r": 238.93310999999997, "b": 130.70123, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 244.48697, "t": 121.48821999999996, "r": 524.95703, "b": 130.70123, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "114", "bbox": {"l": 530.51086, "t": 121.48821999999996, "r": 547.17249, "b": 130.70123, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "7.2", "bbox": {"l": 136.7999, "t": 134.02783, "r": 150.68552, "b": 143.24084000000005, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Managing tables with row permissions and column masks. . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.23976, "t": 134.02783, "r": 524.91779, "b": 143.24084000000005, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "115", "bbox": {"l": 530.47205, "t": 134.02783, "r": 547.13477, "b": 143.24084000000005, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "7.2.1", "bbox": {"l": 151.20006, "t": 146.50769000000003, "r": 173.4474, "b": 155.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Save and restore. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00923, "t": 146.50769000000003, "r": 524.93335, "b": 155.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "115", "bbox": {"l": 530.49518, "t": 146.50769000000003, "r": 547.18073, "b": 155.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "7.2.2", "bbox": {"l": 151.20006, "t": 158.98755000000006, "r": 173.38383, "b": 168.20056, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Table migration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.92978, "t": 158.98755000000006, "r": 524.96283, "b": 168.20056, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "116", "bbox": {"l": 530.50873, "t": 158.98755000000006, "r": 547.14661, "b": 168.20056, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "7.3", "bbox": {"l": 136.7999, "t": 171.52715999999998, "r": 150.68399, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Monitoring and auditing function usage", "bbox": {"l": 156.23763, "t": 171.52715999999998, "r": 327.80109, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 333.35474, "t": 171.52715999999998, "r": 524.95526, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "117", "bbox": {"l": 530.50891, "t": 171.52715999999998, "r": 547.1698, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Chapter 8. Designing and planning for success", "bbox": {"l": 136.7999, "t": 194.02679, "r": 362.66785, "b": 203.23981000000003, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 363.95959, "t": 194.02679, "r": 524.98785, "b": 203.23981000000003, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "119", "bbox": {"l": 530.54059, "t": 194.02679, "r": 547.19867, "b": 203.23981000000003, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "8.1", "bbox": {"l": 136.79988, "t": 206.02661, "r": 150.68515, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Implementing RCAC with good design and proper planning", "bbox": {"l": 156.23926, "t": 206.02661, "r": 416.63306, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": ". . . . . . . . . . . . . . . . . . .", "bbox": {"l": 422.18716, "t": 206.02661, "r": 524.93817, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "120", "bbox": {"l": 530.49231, "t": 206.02661, "r": 547.1546, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "8.2", "bbox": {"l": 136.79988, "t": 218.50647000000004, "r": 150.74098, "b": 227.71947999999998, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "DB2 for i Center of Excellence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.31741, "t": 218.50647000000004, "r": 524.86377, "b": 227.71947999999998, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "120", "bbox": {"l": 530.44019, "t": 218.50647000000004, "r": 547.16949, "b": 227.71947999999998, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Appendix A. Database definitions for the RCAC banking example", "bbox": {"l": 136.79988, "t": 241.00609999999995, "r": 447.03098, "b": 250.21911999999998, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": " . . . . . . . . . . . . . .", "bbox": {"l": 447.35968, "t": 241.00609999999995, "r": 525.01611, "b": 250.21911999999998, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "121", "bbox": {"l": 530.56299, "t": 241.00609999999995, "r": 547.20367, "b": 250.21911999999998, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Related publications", "bbox": {"l": 136.7999, "t": 263.02570000000003, "r": 234.45174999999998, "b": 272.23870999999997, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 236.15984999999998, "t": 263.02570000000003, "r": 524.97516, "b": 272.23870999999997, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "127", "bbox": {"l": 530.5293, "t": 263.02570000000003, "r": 547.19171, "b": 272.23870999999997, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Other publications", "bbox": {"l": 136.7999, "t": 275.50562, "r": 217.75055, "b": 284.7186, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127", "bbox": {"l": 223.33541999999997, "t": 275.50562, "r": 547.25854, "b": 284.7186, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Online resources", "bbox": {"l": 136.79993, "t": 287.9855, "r": 212.6161, "b": 297.19849, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127", "bbox": {"l": 218.19348000000002, "t": 287.9855, "r": 547.25854, "b": 297.19849, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Help from IBM", "bbox": {"l": 136.79993, "t": 300.52515, "r": 200.54581, "b": 309.73813, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 206.09241, "t": 300.52515, "r": 525.02136, "b": 309.73813, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "128", "bbox": {"l": 530.56793, "t": 300.52515, "r": 547.2077, "b": 309.73813, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl"], "num_rows": 17, "num_cols": 2, "table_cells": [{"bbox": {"l": 136.7999, "t": 71.50903000000005, "r": 524.94354, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.1 Managing row permissions and column masks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.49786, "t": 71.50903000000005, "r": 547.16083, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "114", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20006, "t": 83.98888999999997, "r": 524.94879, "b": 93.20190000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.1.1 Source management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.51099, "t": 83.98888999999997, "r": 547.19763, "b": 93.20190000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "114", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20006, "t": 96.52850000000001, "r": 524.97968, "b": 105.74152000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.1.2 Modifying definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.53418, "t": 96.52850000000001, "r": 547.19769, "b": 105.74152000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "114", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20006, "t": 109.00836000000004, "r": 525.02576, "b": 118.22136999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.1.3 Turning on and off . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.55597, "t": 109.00836000000004, "r": 547.14661, "b": 118.22136999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "114", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20006, "t": 121.48821999999996, "r": 238.93310999999997, "b": 130.70123, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.1.4 Regenerating", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 244.48697, "t": 121.48821999999996, "r": 547.17249, "b": 130.70123, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.7999, "t": 134.02783, "r": 524.91779, "b": 143.24084000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.2 Managing tables with row permissions and column masks. . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.47205, "t": 134.02783, "r": 547.13477, "b": 143.24084000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "115", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20006, "t": 146.50769000000003, "r": 524.93335, "b": 155.72069999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.2.1 Save and restore. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.49518, "t": 146.50769000000003, "r": 547.18073, "b": 155.72069999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "115", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20006, "t": 158.98755000000006, "r": 524.96283, "b": 168.20056, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.2.2 Table migration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.50873, "t": 158.98755000000006, "r": 547.14661, "b": 168.20056, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "116", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.7999, "t": 171.52715999999998, "r": 524.95526, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.3 Monitoring and auditing function usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.50891, "t": 171.52715999999998, "r": 547.1698, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "117", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.7999, "t": 194.02679, "r": 362.66785, "b": 203.23981000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 8. Designing and planning for success", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 363.95959, "t": 194.02679, "r": 547.19867, "b": 203.23981000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79988, "t": 206.02661, "r": 416.63306, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "8.1 Implementing RCAC with good design and proper planning", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 422.18716, "t": 206.02661, "r": 547.1546, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . 120", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79988, "t": 218.50647000000004, "r": 524.86377, "b": 227.71947999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "8.2 DB2 for i Center of Excellence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.44019, "t": 218.50647000000004, "r": 547.16949, "b": 227.71947999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "120", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79988, "t": 241.00609999999995, "r": 447.03098, "b": 250.21911999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Appendix A. Database definitions for the RCAC banking example", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 447.35968, "t": 241.00609999999995, "r": 547.20367, "b": 250.21911999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . 121", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.7999, "t": 263.02570000000003, "r": 234.45174999999998, "b": 272.23870999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Related publications", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 236.15984999999998, "t": 263.02570000000003, "r": 547.19171, "b": 272.23870999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.7999, "t": 275.50562, "r": 217.75055, "b": 284.7186, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Other publications", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 223.33541999999997, "t": 275.50562, "r": 547.25854, "b": 284.7186, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79993, "t": 287.9855, "r": 212.6161, "b": 297.19849, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Online resources", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 218.19348000000002, "t": 287.9855, "r": 547.25854, "b": 297.19849, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79993, "t": 300.52515, "r": 200.54581, "b": 309.73813, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Help from IBM", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 206.09241, "t": 300.52515, "r": 547.2077, "b": 309.73813, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128", "column_header": false, "row_header": false, "row_section": false}]}], "body": [{"label": "table", "id": 2, "page_no": 6, "cluster": {"id": 2, "label": "table", "bbox": {"l": 135.83180236816406, "t": 70.6937026977539, "r": 547.9264526367188, "b": 309.73813, "coord_origin": "TOPLEFT"}, "confidence": 0.978112518787384, "cells": [{"id": 2, "text": "7.1", "bbox": {"l": 136.7999, "t": 71.50903000000005, "r": 150.68571, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Managing row permissions and column masks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.24004, "t": 71.50903000000005, "r": 524.94354, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "114", "bbox": {"l": 530.49786, "t": 71.50903000000005, "r": 547.16083, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "7.1.1", "bbox": {"l": 151.20006, "t": 83.98888999999997, "r": 173.44891, "b": 93.20190000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Source management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01112, "t": 83.98888999999997, "r": 524.94879, "b": 93.20190000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "114", "bbox": {"l": 530.51099, "t": 83.98888999999997, "r": 547.19763, "b": 93.20190000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "7.1.2", "bbox": {"l": 151.20006, "t": 96.52850000000001, "r": 173.41805, "b": 105.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Modifying definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97253, "t": 96.52850000000001, "r": 524.97968, "b": 105.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "114", "bbox": {"l": 530.53418, "t": 96.52850000000001, "r": 547.19769, "b": 105.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "7.1.3", "bbox": {"l": 151.20006, "t": 109.00836000000004, "r": 173.32086, "b": 118.22136999999998, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Turning on and off . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85107, "t": 109.00836000000004, "r": 525.02576, "b": 118.22136999999998, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "114", "bbox": {"l": 530.55597, "t": 109.00836000000004, "r": 547.14661, "b": 118.22136999999998, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "7.1.4", "bbox": {"l": 151.20006, "t": 121.48821999999996, "r": 173.41551, "b": 130.70123, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Regenerating", "bbox": {"l": 178.96938, "t": 121.48821999999996, "r": 238.93310999999997, "b": 130.70123, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 244.48697, "t": 121.48821999999996, "r": 524.95703, "b": 130.70123, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "114", "bbox": {"l": 530.51086, "t": 121.48821999999996, "r": 547.17249, "b": 130.70123, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "7.2", "bbox": {"l": 136.7999, "t": 134.02783, "r": 150.68552, "b": 143.24084000000005, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Managing tables with row permissions and column masks. . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.23976, "t": 134.02783, "r": 524.91779, "b": 143.24084000000005, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "115", "bbox": {"l": 530.47205, "t": 134.02783, "r": 547.13477, "b": 143.24084000000005, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "7.2.1", "bbox": {"l": 151.20006, "t": 146.50769000000003, "r": 173.4474, "b": 155.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Save and restore. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00923, "t": 146.50769000000003, "r": 524.93335, "b": 155.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "115", "bbox": {"l": 530.49518, "t": 146.50769000000003, "r": 547.18073, "b": 155.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "7.2.2", "bbox": {"l": 151.20006, "t": 158.98755000000006, "r": 173.38383, "b": 168.20056, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Table migration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.92978, "t": 158.98755000000006, "r": 524.96283, "b": 168.20056, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "116", "bbox": {"l": 530.50873, "t": 158.98755000000006, "r": 547.14661, "b": 168.20056, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "7.3", "bbox": {"l": 136.7999, "t": 171.52715999999998, "r": 150.68399, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Monitoring and auditing function usage", "bbox": {"l": 156.23763, "t": 171.52715999999998, "r": 327.80109, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 333.35474, "t": 171.52715999999998, "r": 524.95526, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "117", "bbox": {"l": 530.50891, "t": 171.52715999999998, "r": 547.1698, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Chapter 8. Designing and planning for success", "bbox": {"l": 136.7999, "t": 194.02679, "r": 362.66785, "b": 203.23981000000003, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 363.95959, "t": 194.02679, "r": 524.98785, "b": 203.23981000000003, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "119", "bbox": {"l": 530.54059, "t": 194.02679, "r": 547.19867, "b": 203.23981000000003, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "8.1", "bbox": {"l": 136.79988, "t": 206.02661, "r": 150.68515, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Implementing RCAC with good design and proper planning", "bbox": {"l": 156.23926, "t": 206.02661, "r": 416.63306, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": ". . . . . . . . . . . . . . . . . . .", "bbox": {"l": 422.18716, "t": 206.02661, "r": 524.93817, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "120", "bbox": {"l": 530.49231, "t": 206.02661, "r": 547.1546, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "8.2", "bbox": {"l": 136.79988, "t": 218.50647000000004, "r": 150.74098, "b": 227.71947999999998, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "DB2 for i Center of Excellence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.31741, "t": 218.50647000000004, "r": 524.86377, "b": 227.71947999999998, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "120", "bbox": {"l": 530.44019, "t": 218.50647000000004, "r": 547.16949, "b": 227.71947999999998, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Appendix A. Database definitions for the RCAC banking example", "bbox": {"l": 136.79988, "t": 241.00609999999995, "r": 447.03098, "b": 250.21911999999998, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": " . . . . . . . . . . . . . .", "bbox": {"l": 447.35968, "t": 241.00609999999995, "r": 525.01611, "b": 250.21911999999998, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "121", "bbox": {"l": 530.56299, "t": 241.00609999999995, "r": 547.20367, "b": 250.21911999999998, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Related publications", "bbox": {"l": 136.7999, "t": 263.02570000000003, "r": 234.45174999999998, "b": 272.23870999999997, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 236.15984999999998, "t": 263.02570000000003, "r": 524.97516, "b": 272.23870999999997, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "127", "bbox": {"l": 530.5293, "t": 263.02570000000003, "r": 547.19171, "b": 272.23870999999997, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Other publications", "bbox": {"l": 136.7999, "t": 275.50562, "r": 217.75055, "b": 284.7186, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127", "bbox": {"l": 223.33541999999997, "t": 275.50562, "r": 547.25854, "b": 284.7186, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Online resources", "bbox": {"l": 136.79993, "t": 287.9855, "r": 212.6161, "b": 297.19849, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127", "bbox": {"l": 218.19348000000002, "t": 287.9855, "r": 547.25854, "b": 297.19849, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Help from IBM", "bbox": {"l": 136.79993, "t": 300.52515, "r": 200.54581, "b": 309.73813, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 206.09241, "t": 300.52515, "r": 525.02136, "b": 309.73813, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "128", "bbox": {"l": 530.56793, "t": 300.52515, "r": 547.2077, "b": 309.73813, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl"], "num_rows": 17, "num_cols": 2, "table_cells": [{"bbox": {"l": 136.7999, "t": 71.50903000000005, "r": 524.94354, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.1 Managing row permissions and column masks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.49786, "t": 71.50903000000005, "r": 547.16083, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "114", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20006, "t": 83.98888999999997, "r": 524.94879, "b": 93.20190000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.1.1 Source management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.51099, "t": 83.98888999999997, "r": 547.19763, "b": 93.20190000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "114", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20006, "t": 96.52850000000001, "r": 524.97968, "b": 105.74152000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.1.2 Modifying definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.53418, "t": 96.52850000000001, "r": 547.19769, "b": 105.74152000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "114", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20006, "t": 109.00836000000004, "r": 525.02576, "b": 118.22136999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.1.3 Turning on and off . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.55597, "t": 109.00836000000004, "r": 547.14661, "b": 118.22136999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "114", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20006, "t": 121.48821999999996, "r": 238.93310999999997, "b": 130.70123, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.1.4 Regenerating", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 244.48697, "t": 121.48821999999996, "r": 547.17249, "b": 130.70123, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.7999, "t": 134.02783, "r": 524.91779, "b": 143.24084000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.2 Managing tables with row permissions and column masks. . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.47205, "t": 134.02783, "r": 547.13477, "b": 143.24084000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "115", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20006, "t": 146.50769000000003, "r": 524.93335, "b": 155.72069999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.2.1 Save and restore. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.49518, "t": 146.50769000000003, "r": 547.18073, "b": 155.72069999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "115", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.20006, "t": 158.98755000000006, "r": 524.96283, "b": 168.20056, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.2.2 Table migration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.50873, "t": 158.98755000000006, "r": 547.14661, "b": 168.20056, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "116", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.7999, "t": 171.52715999999998, "r": 524.95526, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "7.3 Monitoring and auditing function usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.50891, "t": 171.52715999999998, "r": 547.1698, "b": 180.74017000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "117", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.7999, "t": 194.02679, "r": 362.66785, "b": 203.23981000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 8. Designing and planning for success", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 363.95959, "t": 194.02679, "r": 547.19867, "b": 203.23981000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79988, "t": 206.02661, "r": 416.63306, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "8.1 Implementing RCAC with good design and proper planning", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 422.18716, "t": 206.02661, "r": 547.1546, "b": 215.23961999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . 120", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79988, "t": 218.50647000000004, "r": 524.86377, "b": 227.71947999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "8.2 DB2 for i Center of Excellence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.44019, "t": 218.50647000000004, "r": 547.16949, "b": 227.71947999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "120", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79988, "t": 241.00609999999995, "r": 447.03098, "b": 250.21911999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Appendix A. Database definitions for the RCAC banking example", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 447.35968, "t": 241.00609999999995, "r": 547.20367, "b": 250.21911999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . 121", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.7999, "t": 263.02570000000003, "r": 234.45174999999998, "b": 272.23870999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Related publications", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 236.15984999999998, "t": 263.02570000000003, "r": 547.19171, "b": 272.23870999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.7999, "t": 275.50562, "r": 217.75055, "b": 284.7186, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Other publications", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 223.33541999999997, "t": 275.50562, "r": 547.25854, "b": 284.7186, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79993, "t": 287.9855, "r": 212.6161, "b": 297.19849, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Online resources", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 218.19348000000002, "t": 287.9855, "r": 547.25854, "b": 297.19849, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79993, "t": 300.52515, "r": 200.54581, "b": 309.73813, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Help from IBM", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 206.09241, "t": 300.52515, "r": 547.2077, "b": 309.73813, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128", "column_header": false, "row_header": false, "row_section": false}]}], "headers": [{"label": "page_footer", "id": 0, "page_no": 6, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 488.22, "t": 754.8673095703125, "r": 529.11151, "b": 763.863001, "coord_origin": "TOPLEFT"}, "confidence": 0.9201837182044983, "cells": [{"id": 0, "text": " Contents ", "bbox": {"l": 488.22, "t": 755.538002, "r": 529.11151, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Contents"}, {"label": "page_footer", "id": 1, "page_no": 6, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 540.8323974609375, "t": 754.848721, "r": 547.3976440429688, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8568527102470398, "cells": [{"id": 1, "text": "v", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "v"}]}}, {"page_no": 7, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "vi ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 75.641998, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 90.599998, "t": 755.538002, "r": 331.55881, "b": 763.863001, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.35196685791016, "t": 754.20947265625, "r": 75.641998, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8942763209342957, "cells": [{"id": 0, "text": "vi ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 75.641998, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 90.52510833740234, "t": 754.4613647460938, "r": 331.7355651855469, "b": 764.1465454101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9421936273574829, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 90.599998, "t": 755.538002, "r": 331.55881, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 7, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.35196685791016, "t": 754.20947265625, "r": 75.641998, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8942763209342957, "cells": [{"id": 0, "text": "vi ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 75.641998, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "vi"}, {"label": "page_footer", "id": 1, "page_no": 7, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 90.52510833740234, "t": 754.4613647460938, "r": 331.7355651855469, "b": 764.1465454101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9421936273574829, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 90.599998, "t": 755.538002, "r": 331.55881, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}], "body": [], "headers": [{"label": "page_footer", "id": 0, "page_no": 7, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.35196685791016, "t": 754.20947265625, "r": 75.641998, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8942763209342957, "cells": [{"id": 0, "text": "vi ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 75.641998, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "vi"}, {"label": "page_footer", "id": 1, "page_no": 7, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 90.52510833740234, "t": 754.4613647460938, "r": 331.7355651855469, "b": 764.1465454101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9421936273574829, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 90.599998, "t": 755.538002, "r": 331.55881, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 8, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "vii", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25024, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Notices", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 151.50481, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "This information was developed for products and services offered in the U.S.A. ", "bbox": {"l": 64.800003, "t": 132.64862000000005, "r": 413.70071, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "IBM may not offer the products, services, or features discussed in this document in other countries. Consult ", "bbox": {"l": 64.800003, "t": 152.62836000000004, "r": 540.54333, "b": 161.84136999999998, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "your local IBM representative for information on the products and services currently available in your area. Any ", "bbox": {"l": 64.799988, "t": 162.64813000000004, "r": 547.2356, "b": 171.86114999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, ", "bbox": {"l": 64.799988, "t": 172.60815000000002, "r": 543.57697, "b": 181.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "program, or service may be used. Any functionally equivalent product, program, or service that does not ", "bbox": {"l": 64.799988, "t": 182.62793, "r": 525.50171, "b": 191.84094000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "infringe any IBM intellectual property right may be used instead. However, it is the user\u2019s responsibility to ", "bbox": {"l": 64.799988, "t": 192.64770999999996, "r": 528.32147, "b": 201.86072000000001, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "evaluate and verify the operation of any non-IBM product, program, or service. ", "bbox": {"l": 64.799988, "t": 202.60772999999995, "r": 412.72058, "b": 211.82074, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "IBM may have patents or pending patent applications covering subject matter described in this document. The ", "bbox": {"l": 64.799988, "t": 222.64728000000002, "r": 547.29926, "b": 231.86028999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "furnishing of this document does not grant you any license to these patents. You can send license inquiries, in ", "bbox": {"l": 64.799988, "t": 232.6073, "r": 547.25757, "b": 241.82030999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "writing, to: ", "bbox": {"l": 64.799988, "t": 242.62707999999998, "r": 113.18168000000001, "b": 251.84009000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "IBM Director of Licensing, IBM Corporation, North Castle Drive, Armonk, NY 10504-1785 U.S.A.", "bbox": {"l": 64.799988, "t": 252.64684999999997, "r": 489.19962, "b": 261.85986, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "The following paragraph does not apply to the United Kingdom or any other country where such ", "bbox": {"l": 64.799988, "t": 272.62658999999996, "r": 523.8205, "b": 281.8396, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "provisions are inconsistent with local law:", "bbox": {"l": 64.799988, "t": 282.64639, "r": 264.67526, "b": 291.85938, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": " INTERNATIONAL BUSINESS MACHINES CORPORATION ", "bbox": {"l": 264.77985, "t": 282.64639, "r": 533.51349, "b": 291.85938, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "PROVIDES THIS PUBLICATION \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR ", "bbox": {"l": 64.799973, "t": 292.60638, "r": 532.43884, "b": 301.81937, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, ", "bbox": {"l": 64.799973, "t": 302.62613, "r": 534.26959, "b": 311.83911, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states do not allow disclaimer of ", "bbox": {"l": 64.799973, "t": 312.6459, "r": 547.19171, "b": 321.85889, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "express or implied warranties in certain transactions, therefore, this statement may not apply to you. ", "bbox": {"l": 64.799988, "t": 322.6059, "r": 507.27797999999996, "b": 331.81888, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "This information could include technical inaccuracies or typographical errors. Changes are periodically made ", "bbox": {"l": 64.799988, "t": 342.64542, "r": 545.95361, "b": 351.8584, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "to the information herein; these changes will be incorporated in new editions of the publication. IBM may make ", "bbox": {"l": 64.799988, "t": 352.60541, "r": 547.27533, "b": 361.81839, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time ", "bbox": {"l": 64.799988, "t": 362.62515, "r": 547.27838, "b": 371.83813, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "without notice. ", "bbox": {"l": 64.799988, "t": 372.64493, "r": 131.26108, "b": 381.85791, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Any references in this information to non-IBM websites are provided for convenience only and do not in any ", "bbox": {"l": 64.799988, "t": 392.62469, "r": 539.79742, "b": 401.83768, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "manner serve as an endorsement of those websites. The materials at those websites are not part of the ", "bbox": {"l": 64.799988, "t": 402.64444, "r": 525.03448, "b": 411.85742, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "materials for this IBM product and use of those websites is at your own risk. ", "bbox": {"l": 64.799988, "t": 412.60443, "r": 400.91714, "b": 421.81741, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IBM may use or distribute any of the information you supply in any way it believes appropriate without incurring ", "bbox": {"l": 64.799988, "t": 432.64394999999996, "r": 547.19867, "b": 441.85693, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "any obligation to you.", "bbox": {"l": 64.799988, "t": 442.60393999999997, "r": 158.73772, "b": 451.81692999999996, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Any performance data contained herein was determined in a controlled environment. Therefore, the results ", "bbox": {"l": 64.799988, "t": 462.64447, "r": 538.51471, "b": 471.85745, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "obtained in other operating environments may vary significantly. Some measurements may have been made ", "bbox": {"l": 64.799988, "t": 472.60446, "r": 544.15875, "b": 481.81744, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "on development-level systems and there is no guarantee that these measurements will be the same on ", "bbox": {"l": 64.799988, "t": 482.62424, "r": 521.33148, "b": 491.83722, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "generally available systems. Furthermore, some measurements may have been estimated through ", "bbox": {"l": 64.800018, "t": 492.64401, "r": 501.98029, "b": 501.85699, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "extrapolation. Actual results may vary. Users of this document should verify the applicable data for their ", "bbox": {"l": 64.800018, "t": 502.604, "r": 521.40015, "b": 511.81699, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "specific environment.", "bbox": {"l": 64.800018, "t": 512.62375, "r": 158.48874, "b": 521.83673, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Information concerning non-IBM products was obtained from the suppliers of those products, their published ", "bbox": {"l": 64.800018, "t": 532.66425, "r": 544.53741, "b": 541.87726, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "announcements or other publicly available sources. IBM has not tested those products and cannot confirm the ", "bbox": {"l": 64.800034, "t": 542.62427, "r": 547.23169, "b": 551.83727, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the ", "bbox": {"l": 64.800049, "t": 552.6440299999999, "r": 531.85834, "b": 561.85703, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "capabilities of non-IBM products should be addressed to the suppliers of those products.", "bbox": {"l": 64.800079, "t": 562.6637900000001, "r": 455.11453, "b": 571.87679, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "This information contains examples of data and reports used in daily business operations. To illustrate them ", "bbox": {"l": 64.800079, "t": 582.64355, "r": 541.41901, "b": 591.85655, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "as completely as possible, the examples include the names of individuals, companies, brands, and products. ", "bbox": {"l": 64.800079, "t": 592.66331, "r": 545.78656, "b": 601.87631, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "All of these names are fictitious and any similarity to the names and addresses used by an actual business ", "bbox": {"l": 64.800064, "t": 602.62332, "r": 537.76855, "b": 611.83632, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "enterprise is entirely coincidental. ", "bbox": {"l": 64.800064, "t": 612.64308, "r": 215.72999999999996, "b": 621.85608, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "COPYRIGHT LICENSE:", "bbox": {"l": 64.800064, "t": 632.62285, "r": 172.49951, "b": 641.8358499999999, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "This information contains sample application programs in source language, which illustrate programming ", "bbox": {"l": 64.800064, "t": 652.66237, "r": 528.461, "b": 661.87537, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "techniques on various operating platforms. You may copy, modify, and distribute these sample programs in ", "bbox": {"l": 64.800079, "t": 662.62236, "r": 535.69391, "b": 671.83537, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "any form without payment to IBM, for the purposes of developing, using, marketing or distributing application ", "bbox": {"l": 64.800079, "t": 672.64212, "r": 544.75562, "b": 681.85513, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "programs conforming to the application programming interface for the operating platform for which the sample ", "bbox": {"l": 64.800079, "t": 682.66188, "r": 547.24377, "b": 691.8748899999999, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "programs are written. These examples have not been thoroughly tested under all conditions. IBM, therefore, ", "bbox": {"l": 64.800079, "t": 692.62188, "r": 542.89099, "b": 701.834885, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "cannot guarantee or imply reliability, serviceability, or function of these programs. ", "bbox": {"l": 64.800079, "t": 702.64164, "r": 423.58121, "b": 711.854645, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.6475715637207, "t": 754.7320556640625, "r": 257.24335, "b": 764.1610717773438, "coord_origin": "TOPLEFT"}, "confidence": 0.9500033855438232, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.3445434570312, "t": 754.3482666015625, "r": 547.25024, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9123973846435547, "cells": [{"id": 1, "text": "vii", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25024, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.800003, "t": 72.94640350341797, "r": 151.50481, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9534567594528198, "cells": [{"id": 2, "text": "Notices", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 151.50481, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 63.85922622680664, "t": 131.95469665527344, "r": 413.70071, "b": 141.96286010742188, "coord_origin": "TOPLEFT"}, "confidence": 0.9347162246704102, "cells": [{"id": 3, "text": "This information was developed for products and services offered in the U.S.A. ", "bbox": {"l": 64.800003, "t": 132.64862000000005, "r": 413.70071, "b": 141.86163, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 64.08584594726562, "t": 151.7967071533203, "r": 547.2356, "b": 212.513427734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9879042506217957, "cells": [{"id": 4, "text": "IBM may not offer the products, services, or features discussed in this document in other countries. Consult ", "bbox": {"l": 64.800003, "t": 152.62836000000004, "r": 540.54333, "b": 161.84136999999998, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "your local IBM representative for information on the products and services currently available in your area. Any ", "bbox": {"l": 64.799988, "t": 162.64813000000004, "r": 547.2356, "b": 171.86114999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, ", "bbox": {"l": 64.799988, "t": 172.60815000000002, "r": 543.57697, "b": 181.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "program, or service may be used. Any functionally equivalent product, program, or service that does not ", "bbox": {"l": 64.799988, "t": 182.62793, "r": 525.50171, "b": 191.84094000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "infringe any IBM intellectual property right may be used instead. However, it is the user\u2019s responsibility to ", "bbox": {"l": 64.799988, "t": 192.64770999999996, "r": 528.32147, "b": 201.86072000000001, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "evaluate and verify the operation of any non-IBM product, program, or service. ", "bbox": {"l": 64.799988, "t": 202.60772999999995, "r": 412.72058, "b": 211.82074, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 64.23300170898438, "t": 221.91311645507812, "r": 547.29926, "b": 251.84009000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9709556102752686, "cells": [{"id": 10, "text": "IBM may have patents or pending patent applications covering subject matter described in this document. The ", "bbox": {"l": 64.799988, "t": 222.64728000000002, "r": 547.29926, "b": 231.86028999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "furnishing of this document does not grant you any license to these patents. You can send license inquiries, in ", "bbox": {"l": 64.799988, "t": 232.6073, "r": 547.25757, "b": 241.82030999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "writing, to: ", "bbox": {"l": 64.799988, "t": 242.62707999999998, "r": 113.18168000000001, "b": 251.84009000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 64.32848358154297, "t": 251.89076232910156, "r": 489.19962, "b": 262.3831481933594, "coord_origin": "TOPLEFT"}, "confidence": 0.9133641123771667, "cells": [{"id": 13, "text": "IBM Director of Licensing, IBM Corporation, North Castle Drive, Armonk, NY 10504-1785 U.S.A.", "bbox": {"l": 64.799988, "t": 252.64684999999997, "r": 489.19962, "b": 261.85986, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 63.91102600097656, "t": 271.83697509765625, "r": 547.19171, "b": 332.256591796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9860420823097229, "cells": [{"id": 14, "text": "The following paragraph does not apply to the United Kingdom or any other country where such ", "bbox": {"l": 64.799988, "t": 272.62658999999996, "r": 523.8205, "b": 281.8396, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "provisions are inconsistent with local law:", "bbox": {"l": 64.799988, "t": 282.64639, "r": 264.67526, "b": 291.85938, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": " INTERNATIONAL BUSINESS MACHINES CORPORATION ", "bbox": {"l": 264.77985, "t": 282.64639, "r": 533.51349, "b": 291.85938, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "PROVIDES THIS PUBLICATION \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR ", "bbox": {"l": 64.799973, "t": 292.60638, "r": 532.43884, "b": 301.81937, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, ", "bbox": {"l": 64.799973, "t": 302.62613, "r": 534.26959, "b": 311.83911, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states do not allow disclaimer of ", "bbox": {"l": 64.799973, "t": 312.6459, "r": 547.19171, "b": 321.85889, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "express or implied warranties in certain transactions, therefore, this statement may not apply to you. ", "bbox": {"l": 64.799988, "t": 322.6059, "r": 507.27797999999996, "b": 331.81888, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 63.85258865356445, "t": 342.0672912597656, "r": 547.27838, "b": 381.85791, "coord_origin": "TOPLEFT"}, "confidence": 0.9850608706474304, "cells": [{"id": 21, "text": "This information could include technical inaccuracies or typographical errors. Changes are periodically made ", "bbox": {"l": 64.799988, "t": 342.64542, "r": 545.95361, "b": 351.8584, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "to the information herein; these changes will be incorporated in new editions of the publication. IBM may make ", "bbox": {"l": 64.799988, "t": 352.60541, "r": 547.27533, "b": 361.81839, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time ", "bbox": {"l": 64.799988, "t": 362.62515, "r": 547.27838, "b": 371.83813, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "without notice. ", "bbox": {"l": 64.799988, "t": 372.64493, "r": 131.26108, "b": 381.85791, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 64.01903533935547, "t": 391.9712219238281, "r": 539.79742, "b": 422.1513366699219, "coord_origin": "TOPLEFT"}, "confidence": 0.9852286577224731, "cells": [{"id": 25, "text": "Any references in this information to non-IBM websites are provided for convenience only and do not in any ", "bbox": {"l": 64.799988, "t": 392.62469, "r": 539.79742, "b": 401.83768, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "manner serve as an endorsement of those websites. The materials at those websites are not part of the ", "bbox": {"l": 64.799988, "t": 402.64444, "r": 525.03448, "b": 411.85742, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "materials for this IBM product and use of those websites is at your own risk. ", "bbox": {"l": 64.799988, "t": 412.60443, "r": 400.91714, "b": 421.81741, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 64.25189208984375, "t": 432.0647888183594, "r": 547.19867, "b": 452.3858337402344, "coord_origin": "TOPLEFT"}, "confidence": 0.9783881306648254, "cells": [{"id": 28, "text": "IBM may use or distribute any of the information you supply in any way it believes appropriate without incurring ", "bbox": {"l": 64.799988, "t": 432.64394999999996, "r": 547.19867, "b": 441.85693, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "any obligation to you.", "bbox": {"l": 64.799988, "t": 442.60393999999997, "r": 158.73772, "b": 451.81692999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 64.00050354003906, "t": 462.2513732910156, "r": 544.15875, "b": 521.8851928710938, "coord_origin": "TOPLEFT"}, "confidence": 0.9882644414901733, "cells": [{"id": 30, "text": "Any performance data contained herein was determined in a controlled environment. Therefore, the results ", "bbox": {"l": 64.799988, "t": 462.64447, "r": 538.51471, "b": 471.85745, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "obtained in other operating environments may vary significantly. Some measurements may have been made ", "bbox": {"l": 64.799988, "t": 472.60446, "r": 544.15875, "b": 481.81744, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "on development-level systems and there is no guarantee that these measurements will be the same on ", "bbox": {"l": 64.799988, "t": 482.62424, "r": 521.33148, "b": 491.83722, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "generally available systems. Furthermore, some measurements may have been estimated through ", "bbox": {"l": 64.800018, "t": 492.64401, "r": 501.98029, "b": 501.85699, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "extrapolation. Actual results may vary. Users of this document should verify the applicable data for their ", "bbox": {"l": 64.800018, "t": 502.604, "r": 521.40015, "b": 511.81699, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "specific environment.", "bbox": {"l": 64.800018, "t": 512.62375, "r": 158.48874, "b": 521.83673, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 64.13472747802734, "t": 532.0626831054688, "r": 547.23169, "b": 572.26904296875, "coord_origin": "TOPLEFT"}, "confidence": 0.986961841583252, "cells": [{"id": 36, "text": "Information concerning non-IBM products was obtained from the suppliers of those products, their published ", "bbox": {"l": 64.800018, "t": 532.66425, "r": 544.53741, "b": 541.87726, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "announcements or other publicly available sources. IBM has not tested those products and cannot confirm the ", "bbox": {"l": 64.800034, "t": 542.62427, "r": 547.23169, "b": 551.83727, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the ", "bbox": {"l": 64.800049, "t": 552.6440299999999, "r": 531.85834, "b": 561.85703, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "capabilities of non-IBM products should be addressed to the suppliers of those products.", "bbox": {"l": 64.800079, "t": 562.6637900000001, "r": 455.11453, "b": 571.87679, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 63.89973449707031, "t": 582.2474365234375, "r": 545.78656, "b": 622.1400756835938, "coord_origin": "TOPLEFT"}, "confidence": 0.985973596572876, "cells": [{"id": 40, "text": "This information contains examples of data and reports used in daily business operations. To illustrate them ", "bbox": {"l": 64.800079, "t": 582.64355, "r": 541.41901, "b": 591.85655, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "as completely as possible, the examples include the names of individuals, companies, brands, and products. ", "bbox": {"l": 64.800079, "t": 592.66331, "r": 545.78656, "b": 601.87631, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "All of these names are fictitious and any similarity to the names and addresses used by an actual business ", "bbox": {"l": 64.800064, "t": 602.62332, "r": 537.76855, "b": 611.83632, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "enterprise is entirely coincidental. ", "bbox": {"l": 64.800064, "t": 612.64308, "r": 215.72999999999996, "b": 621.85608, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "section_header", "bbox": {"l": 64.30471801757812, "t": 631.6611938476562, "r": 172.49951, "b": 641.8358499999999, "coord_origin": "TOPLEFT"}, "confidence": 0.879513144493103, "cells": [{"id": 44, "text": "COPYRIGHT LICENSE:", "bbox": {"l": 64.800064, "t": 632.62285, "r": 172.49951, "b": 641.8358499999999, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "text", "bbox": {"l": 63.98580551147461, "t": 651.967041015625, "r": 547.24377, "b": 712.5435791015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9882200956344604, "cells": [{"id": 45, "text": "This information contains sample application programs in source language, which illustrate programming ", "bbox": {"l": 64.800064, "t": 652.66237, "r": 528.461, "b": 661.87537, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "techniques on various operating platforms. You may copy, modify, and distribute these sample programs in ", "bbox": {"l": 64.800079, "t": 662.62236, "r": 535.69391, "b": 671.83537, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "any form without payment to IBM, for the purposes of developing, using, marketing or distributing application ", "bbox": {"l": 64.800079, "t": 672.64212, "r": 544.75562, "b": 681.85513, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "programs conforming to the application programming interface for the operating platform for which the sample ", "bbox": {"l": 64.800079, "t": 682.66188, "r": 547.24377, "b": 691.8748899999999, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "programs are written. These examples have not been thoroughly tested under all conditions. IBM, therefore, ", "bbox": {"l": 64.800079, "t": 692.62188, "r": 542.89099, "b": 701.834885, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "cannot guarantee or imply reliability, serviceability, or function of these programs. ", "bbox": {"l": 64.800079, "t": 702.64164, "r": 423.58121, "b": 711.854645, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 8, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.6475715637207, "t": 754.7320556640625, "r": 257.24335, "b": 764.1610717773438, "coord_origin": "TOPLEFT"}, "confidence": 0.9500033855438232, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 8, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.3445434570312, "t": 754.3482666015625, "r": 547.25024, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9123973846435547, "cells": [{"id": 1, "text": "vii", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25024, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "vii"}, {"label": "section_header", "id": 2, "page_no": 8, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.800003, "t": 72.94640350341797, "r": 151.50481, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9534567594528198, "cells": [{"id": 2, "text": "Notices", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 151.50481, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Notices"}, {"label": "text", "id": 3, "page_no": 8, "cluster": {"id": 3, "label": "text", "bbox": {"l": 63.85922622680664, "t": 131.95469665527344, "r": 413.70071, "b": 141.96286010742188, "coord_origin": "TOPLEFT"}, "confidence": 0.9347162246704102, "cells": [{"id": 3, "text": "This information was developed for products and services offered in the U.S.A. ", "bbox": {"l": 64.800003, "t": 132.64862000000005, "r": 413.70071, "b": 141.86163, "coord_origin": "TOPLEFT"}}]}, "text": "This information was developed for products and services offered in the U.S.A."}, {"label": "text", "id": 4, "page_no": 8, "cluster": {"id": 4, "label": "text", "bbox": {"l": 64.08584594726562, "t": 151.7967071533203, "r": 547.2356, "b": 212.513427734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9879042506217957, "cells": [{"id": 4, "text": "IBM may not offer the products, services, or features discussed in this document in other countries. Consult ", "bbox": {"l": 64.800003, "t": 152.62836000000004, "r": 540.54333, "b": 161.84136999999998, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "your local IBM representative for information on the products and services currently available in your area. Any ", "bbox": {"l": 64.799988, "t": 162.64813000000004, "r": 547.2356, "b": 171.86114999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, ", "bbox": {"l": 64.799988, "t": 172.60815000000002, "r": 543.57697, "b": 181.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "program, or service may be used. Any functionally equivalent product, program, or service that does not ", "bbox": {"l": 64.799988, "t": 182.62793, "r": 525.50171, "b": 191.84094000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "infringe any IBM intellectual property right may be used instead. However, it is the user\u2019s responsibility to ", "bbox": {"l": 64.799988, "t": 192.64770999999996, "r": 528.32147, "b": 201.86072000000001, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "evaluate and verify the operation of any non-IBM product, program, or service. ", "bbox": {"l": 64.799988, "t": 202.60772999999995, "r": 412.72058, "b": 211.82074, "coord_origin": "TOPLEFT"}}]}, "text": "IBM may not offer the products, services, or features discussed in this document in other countries. Consult your local IBM representative for information on the products and services currently available in your area. Any reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, program, or service may be used. Any functionally equivalent product, program, or service that does not infringe any IBM intellectual property right may be used instead. However, it is the user\u2019s responsibility to evaluate and verify the operation of any non-IBM product, program, or service."}, {"label": "text", "id": 5, "page_no": 8, "cluster": {"id": 5, "label": "text", "bbox": {"l": 64.23300170898438, "t": 221.91311645507812, "r": 547.29926, "b": 251.84009000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9709556102752686, "cells": [{"id": 10, "text": "IBM may have patents or pending patent applications covering subject matter described in this document. The ", "bbox": {"l": 64.799988, "t": 222.64728000000002, "r": 547.29926, "b": 231.86028999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "furnishing of this document does not grant you any license to these patents. You can send license inquiries, in ", "bbox": {"l": 64.799988, "t": 232.6073, "r": 547.25757, "b": 241.82030999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "writing, to: ", "bbox": {"l": 64.799988, "t": 242.62707999999998, "r": 113.18168000000001, "b": 251.84009000000003, "coord_origin": "TOPLEFT"}}]}, "text": "IBM may have patents or pending patent applications covering subject matter described in this document. The furnishing of this document does not grant you any license to these patents. You can send license inquiries, in writing, to:"}, {"label": "text", "id": 6, "page_no": 8, "cluster": {"id": 6, "label": "text", "bbox": {"l": 64.32848358154297, "t": 251.89076232910156, "r": 489.19962, "b": 262.3831481933594, "coord_origin": "TOPLEFT"}, "confidence": 0.9133641123771667, "cells": [{"id": 13, "text": "IBM Director of Licensing, IBM Corporation, North Castle Drive, Armonk, NY 10504-1785 U.S.A.", "bbox": {"l": 64.799988, "t": 252.64684999999997, "r": 489.19962, "b": 261.85986, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Director of Licensing, IBM Corporation, North Castle Drive, Armonk, NY 10504-1785 U.S.A."}, {"label": "text", "id": 7, "page_no": 8, "cluster": {"id": 7, "label": "text", "bbox": {"l": 63.91102600097656, "t": 271.83697509765625, "r": 547.19171, "b": 332.256591796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9860420823097229, "cells": [{"id": 14, "text": "The following paragraph does not apply to the United Kingdom or any other country where such ", "bbox": {"l": 64.799988, "t": 272.62658999999996, "r": 523.8205, "b": 281.8396, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "provisions are inconsistent with local law:", "bbox": {"l": 64.799988, "t": 282.64639, "r": 264.67526, "b": 291.85938, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": " INTERNATIONAL BUSINESS MACHINES CORPORATION ", "bbox": {"l": 264.77985, "t": 282.64639, "r": 533.51349, "b": 291.85938, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "PROVIDES THIS PUBLICATION \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR ", "bbox": {"l": 64.799973, "t": 292.60638, "r": 532.43884, "b": 301.81937, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, ", "bbox": {"l": 64.799973, "t": 302.62613, "r": 534.26959, "b": 311.83911, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states do not allow disclaimer of ", "bbox": {"l": 64.799973, "t": 312.6459, "r": 547.19171, "b": 321.85889, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "express or implied warranties in certain transactions, therefore, this statement may not apply to you. ", "bbox": {"l": 64.799988, "t": 322.6059, "r": 507.27797999999996, "b": 331.81888, "coord_origin": "TOPLEFT"}}]}, "text": "The following paragraph does not apply to the United Kingdom or any other country where such provisions are inconsistent with local law: INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states do not allow disclaimer of express or implied warranties in certain transactions, therefore, this statement may not apply to you."}, {"label": "text", "id": 8, "page_no": 8, "cluster": {"id": 8, "label": "text", "bbox": {"l": 63.85258865356445, "t": 342.0672912597656, "r": 547.27838, "b": 381.85791, "coord_origin": "TOPLEFT"}, "confidence": 0.9850608706474304, "cells": [{"id": 21, "text": "This information could include technical inaccuracies or typographical errors. Changes are periodically made ", "bbox": {"l": 64.799988, "t": 342.64542, "r": 545.95361, "b": 351.8584, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "to the information herein; these changes will be incorporated in new editions of the publication. IBM may make ", "bbox": {"l": 64.799988, "t": 352.60541, "r": 547.27533, "b": 361.81839, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time ", "bbox": {"l": 64.799988, "t": 362.62515, "r": 547.27838, "b": 371.83813, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "without notice. ", "bbox": {"l": 64.799988, "t": 372.64493, "r": 131.26108, "b": 381.85791, "coord_origin": "TOPLEFT"}}]}, "text": "This information could include technical inaccuracies or typographical errors. Changes are periodically made to the information herein; these changes will be incorporated in new editions of the publication. IBM may make improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time without notice."}, {"label": "text", "id": 9, "page_no": 8, "cluster": {"id": 9, "label": "text", "bbox": {"l": 64.01903533935547, "t": 391.9712219238281, "r": 539.79742, "b": 422.1513366699219, "coord_origin": "TOPLEFT"}, "confidence": 0.9852286577224731, "cells": [{"id": 25, "text": "Any references in this information to non-IBM websites are provided for convenience only and do not in any ", "bbox": {"l": 64.799988, "t": 392.62469, "r": 539.79742, "b": 401.83768, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "manner serve as an endorsement of those websites. The materials at those websites are not part of the ", "bbox": {"l": 64.799988, "t": 402.64444, "r": 525.03448, "b": 411.85742, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "materials for this IBM product and use of those websites is at your own risk. ", "bbox": {"l": 64.799988, "t": 412.60443, "r": 400.91714, "b": 421.81741, "coord_origin": "TOPLEFT"}}]}, "text": "Any references in this information to non-IBM websites are provided for convenience only and do not in any manner serve as an endorsement of those websites. The materials at those websites are not part of the materials for this IBM product and use of those websites is at your own risk."}, {"label": "text", "id": 10, "page_no": 8, "cluster": {"id": 10, "label": "text", "bbox": {"l": 64.25189208984375, "t": 432.0647888183594, "r": 547.19867, "b": 452.3858337402344, "coord_origin": "TOPLEFT"}, "confidence": 0.9783881306648254, "cells": [{"id": 28, "text": "IBM may use or distribute any of the information you supply in any way it believes appropriate without incurring ", "bbox": {"l": 64.799988, "t": 432.64394999999996, "r": 547.19867, "b": 441.85693, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "any obligation to you.", "bbox": {"l": 64.799988, "t": 442.60393999999997, "r": 158.73772, "b": 451.81692999999996, "coord_origin": "TOPLEFT"}}]}, "text": "IBM may use or distribute any of the information you supply in any way it believes appropriate without incurring any obligation to you."}, {"label": "text", "id": 11, "page_no": 8, "cluster": {"id": 11, "label": "text", "bbox": {"l": 64.00050354003906, "t": 462.2513732910156, "r": 544.15875, "b": 521.8851928710938, "coord_origin": "TOPLEFT"}, "confidence": 0.9882644414901733, "cells": [{"id": 30, "text": "Any performance data contained herein was determined in a controlled environment. Therefore, the results ", "bbox": {"l": 64.799988, "t": 462.64447, "r": 538.51471, "b": 471.85745, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "obtained in other operating environments may vary significantly. Some measurements may have been made ", "bbox": {"l": 64.799988, "t": 472.60446, "r": 544.15875, "b": 481.81744, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "on development-level systems and there is no guarantee that these measurements will be the same on ", "bbox": {"l": 64.799988, "t": 482.62424, "r": 521.33148, "b": 491.83722, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "generally available systems. Furthermore, some measurements may have been estimated through ", "bbox": {"l": 64.800018, "t": 492.64401, "r": 501.98029, "b": 501.85699, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "extrapolation. Actual results may vary. Users of this document should verify the applicable data for their ", "bbox": {"l": 64.800018, "t": 502.604, "r": 521.40015, "b": 511.81699, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "specific environment.", "bbox": {"l": 64.800018, "t": 512.62375, "r": 158.48874, "b": 521.83673, "coord_origin": "TOPLEFT"}}]}, "text": "Any performance data contained herein was determined in a controlled environment. Therefore, the results obtained in other operating environments may vary significantly. Some measurements may have been made on development-level systems and there is no guarantee that these measurements will be the same on generally available systems. Furthermore, some measurements may have been estimated through extrapolation. Actual results may vary. Users of this document should verify the applicable data for their specific environment."}, {"label": "text", "id": 12, "page_no": 8, "cluster": {"id": 12, "label": "text", "bbox": {"l": 64.13472747802734, "t": 532.0626831054688, "r": 547.23169, "b": 572.26904296875, "coord_origin": "TOPLEFT"}, "confidence": 0.986961841583252, "cells": [{"id": 36, "text": "Information concerning non-IBM products was obtained from the suppliers of those products, their published ", "bbox": {"l": 64.800018, "t": 532.66425, "r": 544.53741, "b": 541.87726, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "announcements or other publicly available sources. IBM has not tested those products and cannot confirm the ", "bbox": {"l": 64.800034, "t": 542.62427, "r": 547.23169, "b": 551.83727, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the ", "bbox": {"l": 64.800049, "t": 552.6440299999999, "r": 531.85834, "b": 561.85703, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "capabilities of non-IBM products should be addressed to the suppliers of those products.", "bbox": {"l": 64.800079, "t": 562.6637900000001, "r": 455.11453, "b": 571.87679, "coord_origin": "TOPLEFT"}}]}, "text": "Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly available sources. IBM has not tested those products and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products."}, {"label": "text", "id": 13, "page_no": 8, "cluster": {"id": 13, "label": "text", "bbox": {"l": 63.89973449707031, "t": 582.2474365234375, "r": 545.78656, "b": 622.1400756835938, "coord_origin": "TOPLEFT"}, "confidence": 0.985973596572876, "cells": [{"id": 40, "text": "This information contains examples of data and reports used in daily business operations. To illustrate them ", "bbox": {"l": 64.800079, "t": 582.64355, "r": 541.41901, "b": 591.85655, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "as completely as possible, the examples include the names of individuals, companies, brands, and products. ", "bbox": {"l": 64.800079, "t": 592.66331, "r": 545.78656, "b": 601.87631, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "All of these names are fictitious and any similarity to the names and addresses used by an actual business ", "bbox": {"l": 64.800064, "t": 602.62332, "r": 537.76855, "b": 611.83632, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "enterprise is entirely coincidental. ", "bbox": {"l": 64.800064, "t": 612.64308, "r": 215.72999999999996, "b": 621.85608, "coord_origin": "TOPLEFT"}}]}, "text": "This information contains examples of data and reports used in daily business operations. To illustrate them as completely as possible, the examples include the names of individuals, companies, brands, and products. All of these names are fictitious and any similarity to the names and addresses used by an actual business enterprise is entirely coincidental."}, {"label": "section_header", "id": 14, "page_no": 8, "cluster": {"id": 14, "label": "section_header", "bbox": {"l": 64.30471801757812, "t": 631.6611938476562, "r": 172.49951, "b": 641.8358499999999, "coord_origin": "TOPLEFT"}, "confidence": 0.879513144493103, "cells": [{"id": 44, "text": "COPYRIGHT LICENSE:", "bbox": {"l": 64.800064, "t": 632.62285, "r": 172.49951, "b": 641.8358499999999, "coord_origin": "TOPLEFT"}}]}, "text": "COPYRIGHT LICENSE:"}, {"label": "text", "id": 15, "page_no": 8, "cluster": {"id": 15, "label": "text", "bbox": {"l": 63.98580551147461, "t": 651.967041015625, "r": 547.24377, "b": 712.5435791015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9882200956344604, "cells": [{"id": 45, "text": "This information contains sample application programs in source language, which illustrate programming ", "bbox": {"l": 64.800064, "t": 652.66237, "r": 528.461, "b": 661.87537, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "techniques on various operating platforms. You may copy, modify, and distribute these sample programs in ", "bbox": {"l": 64.800079, "t": 662.62236, "r": 535.69391, "b": 671.83537, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "any form without payment to IBM, for the purposes of developing, using, marketing or distributing application ", "bbox": {"l": 64.800079, "t": 672.64212, "r": 544.75562, "b": 681.85513, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "programs conforming to the application programming interface for the operating platform for which the sample ", "bbox": {"l": 64.800079, "t": 682.66188, "r": 547.24377, "b": 691.8748899999999, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "programs are written. These examples have not been thoroughly tested under all conditions. IBM, therefore, ", "bbox": {"l": 64.800079, "t": 692.62188, "r": 542.89099, "b": 701.834885, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "cannot guarantee or imply reliability, serviceability, or function of these programs. ", "bbox": {"l": 64.800079, "t": 702.64164, "r": 423.58121, "b": 711.854645, "coord_origin": "TOPLEFT"}}]}, "text": "This information contains sample application programs in source language, which illustrate programming techniques on various operating platforms. You may copy, modify, and distribute these sample programs in any form without payment to IBM, for the purposes of developing, using, marketing or distributing application programs conforming to the application programming interface for the operating platform for which the sample programs are written. These examples have not been thoroughly tested under all conditions. IBM, therefore, cannot guarantee or imply reliability, serviceability, or function of these programs."}], "body": [{"label": "section_header", "id": 2, "page_no": 8, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.800003, "t": 72.94640350341797, "r": 151.50481, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9534567594528198, "cells": [{"id": 2, "text": "Notices", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 151.50481, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Notices"}, {"label": "text", "id": 3, "page_no": 8, "cluster": {"id": 3, "label": "text", "bbox": {"l": 63.85922622680664, "t": 131.95469665527344, "r": 413.70071, "b": 141.96286010742188, "coord_origin": "TOPLEFT"}, "confidence": 0.9347162246704102, "cells": [{"id": 3, "text": "This information was developed for products and services offered in the U.S.A. ", "bbox": {"l": 64.800003, "t": 132.64862000000005, "r": 413.70071, "b": 141.86163, "coord_origin": "TOPLEFT"}}]}, "text": "This information was developed for products and services offered in the U.S.A."}, {"label": "text", "id": 4, "page_no": 8, "cluster": {"id": 4, "label": "text", "bbox": {"l": 64.08584594726562, "t": 151.7967071533203, "r": 547.2356, "b": 212.513427734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9879042506217957, "cells": [{"id": 4, "text": "IBM may not offer the products, services, or features discussed in this document in other countries. Consult ", "bbox": {"l": 64.800003, "t": 152.62836000000004, "r": 540.54333, "b": 161.84136999999998, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "your local IBM representative for information on the products and services currently available in your area. Any ", "bbox": {"l": 64.799988, "t": 162.64813000000004, "r": 547.2356, "b": 171.86114999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, ", "bbox": {"l": 64.799988, "t": 172.60815000000002, "r": 543.57697, "b": 181.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "program, or service may be used. Any functionally equivalent product, program, or service that does not ", "bbox": {"l": 64.799988, "t": 182.62793, "r": 525.50171, "b": 191.84094000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "infringe any IBM intellectual property right may be used instead. However, it is the user\u2019s responsibility to ", "bbox": {"l": 64.799988, "t": 192.64770999999996, "r": 528.32147, "b": 201.86072000000001, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "evaluate and verify the operation of any non-IBM product, program, or service. ", "bbox": {"l": 64.799988, "t": 202.60772999999995, "r": 412.72058, "b": 211.82074, "coord_origin": "TOPLEFT"}}]}, "text": "IBM may not offer the products, services, or features discussed in this document in other countries. Consult your local IBM representative for information on the products and services currently available in your area. Any reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, program, or service may be used. Any functionally equivalent product, program, or service that does not infringe any IBM intellectual property right may be used instead. However, it is the user\u2019s responsibility to evaluate and verify the operation of any non-IBM product, program, or service."}, {"label": "text", "id": 5, "page_no": 8, "cluster": {"id": 5, "label": "text", "bbox": {"l": 64.23300170898438, "t": 221.91311645507812, "r": 547.29926, "b": 251.84009000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9709556102752686, "cells": [{"id": 10, "text": "IBM may have patents or pending patent applications covering subject matter described in this document. The ", "bbox": {"l": 64.799988, "t": 222.64728000000002, "r": 547.29926, "b": 231.86028999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "furnishing of this document does not grant you any license to these patents. You can send license inquiries, in ", "bbox": {"l": 64.799988, "t": 232.6073, "r": 547.25757, "b": 241.82030999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "writing, to: ", "bbox": {"l": 64.799988, "t": 242.62707999999998, "r": 113.18168000000001, "b": 251.84009000000003, "coord_origin": "TOPLEFT"}}]}, "text": "IBM may have patents or pending patent applications covering subject matter described in this document. The furnishing of this document does not grant you any license to these patents. You can send license inquiries, in writing, to:"}, {"label": "text", "id": 6, "page_no": 8, "cluster": {"id": 6, "label": "text", "bbox": {"l": 64.32848358154297, "t": 251.89076232910156, "r": 489.19962, "b": 262.3831481933594, "coord_origin": "TOPLEFT"}, "confidence": 0.9133641123771667, "cells": [{"id": 13, "text": "IBM Director of Licensing, IBM Corporation, North Castle Drive, Armonk, NY 10504-1785 U.S.A.", "bbox": {"l": 64.799988, "t": 252.64684999999997, "r": 489.19962, "b": 261.85986, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Director of Licensing, IBM Corporation, North Castle Drive, Armonk, NY 10504-1785 U.S.A."}, {"label": "text", "id": 7, "page_no": 8, "cluster": {"id": 7, "label": "text", "bbox": {"l": 63.91102600097656, "t": 271.83697509765625, "r": 547.19171, "b": 332.256591796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9860420823097229, "cells": [{"id": 14, "text": "The following paragraph does not apply to the United Kingdom or any other country where such ", "bbox": {"l": 64.799988, "t": 272.62658999999996, "r": 523.8205, "b": 281.8396, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "provisions are inconsistent with local law:", "bbox": {"l": 64.799988, "t": 282.64639, "r": 264.67526, "b": 291.85938, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": " INTERNATIONAL BUSINESS MACHINES CORPORATION ", "bbox": {"l": 264.77985, "t": 282.64639, "r": 533.51349, "b": 291.85938, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "PROVIDES THIS PUBLICATION \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR ", "bbox": {"l": 64.799973, "t": 292.60638, "r": 532.43884, "b": 301.81937, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, ", "bbox": {"l": 64.799973, "t": 302.62613, "r": 534.26959, "b": 311.83911, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states do not allow disclaimer of ", "bbox": {"l": 64.799973, "t": 312.6459, "r": 547.19171, "b": 321.85889, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "express or implied warranties in certain transactions, therefore, this statement may not apply to you. ", "bbox": {"l": 64.799988, "t": 322.6059, "r": 507.27797999999996, "b": 331.81888, "coord_origin": "TOPLEFT"}}]}, "text": "The following paragraph does not apply to the United Kingdom or any other country where such provisions are inconsistent with local law: INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states do not allow disclaimer of express or implied warranties in certain transactions, therefore, this statement may not apply to you."}, {"label": "text", "id": 8, "page_no": 8, "cluster": {"id": 8, "label": "text", "bbox": {"l": 63.85258865356445, "t": 342.0672912597656, "r": 547.27838, "b": 381.85791, "coord_origin": "TOPLEFT"}, "confidence": 0.9850608706474304, "cells": [{"id": 21, "text": "This information could include technical inaccuracies or typographical errors. Changes are periodically made ", "bbox": {"l": 64.799988, "t": 342.64542, "r": 545.95361, "b": 351.8584, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "to the information herein; these changes will be incorporated in new editions of the publication. IBM may make ", "bbox": {"l": 64.799988, "t": 352.60541, "r": 547.27533, "b": 361.81839, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time ", "bbox": {"l": 64.799988, "t": 362.62515, "r": 547.27838, "b": 371.83813, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "without notice. ", "bbox": {"l": 64.799988, "t": 372.64493, "r": 131.26108, "b": 381.85791, "coord_origin": "TOPLEFT"}}]}, "text": "This information could include technical inaccuracies or typographical errors. Changes are periodically made to the information herein; these changes will be incorporated in new editions of the publication. IBM may make improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time without notice."}, {"label": "text", "id": 9, "page_no": 8, "cluster": {"id": 9, "label": "text", "bbox": {"l": 64.01903533935547, "t": 391.9712219238281, "r": 539.79742, "b": 422.1513366699219, "coord_origin": "TOPLEFT"}, "confidence": 0.9852286577224731, "cells": [{"id": 25, "text": "Any references in this information to non-IBM websites are provided for convenience only and do not in any ", "bbox": {"l": 64.799988, "t": 392.62469, "r": 539.79742, "b": 401.83768, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "manner serve as an endorsement of those websites. The materials at those websites are not part of the ", "bbox": {"l": 64.799988, "t": 402.64444, "r": 525.03448, "b": 411.85742, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "materials for this IBM product and use of those websites is at your own risk. ", "bbox": {"l": 64.799988, "t": 412.60443, "r": 400.91714, "b": 421.81741, "coord_origin": "TOPLEFT"}}]}, "text": "Any references in this information to non-IBM websites are provided for convenience only and do not in any manner serve as an endorsement of those websites. The materials at those websites are not part of the materials for this IBM product and use of those websites is at your own risk."}, {"label": "text", "id": 10, "page_no": 8, "cluster": {"id": 10, "label": "text", "bbox": {"l": 64.25189208984375, "t": 432.0647888183594, "r": 547.19867, "b": 452.3858337402344, "coord_origin": "TOPLEFT"}, "confidence": 0.9783881306648254, "cells": [{"id": 28, "text": "IBM may use or distribute any of the information you supply in any way it believes appropriate without incurring ", "bbox": {"l": 64.799988, "t": 432.64394999999996, "r": 547.19867, "b": 441.85693, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "any obligation to you.", "bbox": {"l": 64.799988, "t": 442.60393999999997, "r": 158.73772, "b": 451.81692999999996, "coord_origin": "TOPLEFT"}}]}, "text": "IBM may use or distribute any of the information you supply in any way it believes appropriate without incurring any obligation to you."}, {"label": "text", "id": 11, "page_no": 8, "cluster": {"id": 11, "label": "text", "bbox": {"l": 64.00050354003906, "t": 462.2513732910156, "r": 544.15875, "b": 521.8851928710938, "coord_origin": "TOPLEFT"}, "confidence": 0.9882644414901733, "cells": [{"id": 30, "text": "Any performance data contained herein was determined in a controlled environment. Therefore, the results ", "bbox": {"l": 64.799988, "t": 462.64447, "r": 538.51471, "b": 471.85745, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "obtained in other operating environments may vary significantly. Some measurements may have been made ", "bbox": {"l": 64.799988, "t": 472.60446, "r": 544.15875, "b": 481.81744, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "on development-level systems and there is no guarantee that these measurements will be the same on ", "bbox": {"l": 64.799988, "t": 482.62424, "r": 521.33148, "b": 491.83722, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "generally available systems. Furthermore, some measurements may have been estimated through ", "bbox": {"l": 64.800018, "t": 492.64401, "r": 501.98029, "b": 501.85699, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "extrapolation. Actual results may vary. Users of this document should verify the applicable data for their ", "bbox": {"l": 64.800018, "t": 502.604, "r": 521.40015, "b": 511.81699, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "specific environment.", "bbox": {"l": 64.800018, "t": 512.62375, "r": 158.48874, "b": 521.83673, "coord_origin": "TOPLEFT"}}]}, "text": "Any performance data contained herein was determined in a controlled environment. Therefore, the results obtained in other operating environments may vary significantly. Some measurements may have been made on development-level systems and there is no guarantee that these measurements will be the same on generally available systems. Furthermore, some measurements may have been estimated through extrapolation. Actual results may vary. Users of this document should verify the applicable data for their specific environment."}, {"label": "text", "id": 12, "page_no": 8, "cluster": {"id": 12, "label": "text", "bbox": {"l": 64.13472747802734, "t": 532.0626831054688, "r": 547.23169, "b": 572.26904296875, "coord_origin": "TOPLEFT"}, "confidence": 0.986961841583252, "cells": [{"id": 36, "text": "Information concerning non-IBM products was obtained from the suppliers of those products, their published ", "bbox": {"l": 64.800018, "t": 532.66425, "r": 544.53741, "b": 541.87726, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "announcements or other publicly available sources. IBM has not tested those products and cannot confirm the ", "bbox": {"l": 64.800034, "t": 542.62427, "r": 547.23169, "b": 551.83727, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the ", "bbox": {"l": 64.800049, "t": 552.6440299999999, "r": 531.85834, "b": 561.85703, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "capabilities of non-IBM products should be addressed to the suppliers of those products.", "bbox": {"l": 64.800079, "t": 562.6637900000001, "r": 455.11453, "b": 571.87679, "coord_origin": "TOPLEFT"}}]}, "text": "Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly available sources. IBM has not tested those products and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products."}, {"label": "text", "id": 13, "page_no": 8, "cluster": {"id": 13, "label": "text", "bbox": {"l": 63.89973449707031, "t": 582.2474365234375, "r": 545.78656, "b": 622.1400756835938, "coord_origin": "TOPLEFT"}, "confidence": 0.985973596572876, "cells": [{"id": 40, "text": "This information contains examples of data and reports used in daily business operations. To illustrate them ", "bbox": {"l": 64.800079, "t": 582.64355, "r": 541.41901, "b": 591.85655, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "as completely as possible, the examples include the names of individuals, companies, brands, and products. ", "bbox": {"l": 64.800079, "t": 592.66331, "r": 545.78656, "b": 601.87631, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "All of these names are fictitious and any similarity to the names and addresses used by an actual business ", "bbox": {"l": 64.800064, "t": 602.62332, "r": 537.76855, "b": 611.83632, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "enterprise is entirely coincidental. ", "bbox": {"l": 64.800064, "t": 612.64308, "r": 215.72999999999996, "b": 621.85608, "coord_origin": "TOPLEFT"}}]}, "text": "This information contains examples of data and reports used in daily business operations. To illustrate them as completely as possible, the examples include the names of individuals, companies, brands, and products. All of these names are fictitious and any similarity to the names and addresses used by an actual business enterprise is entirely coincidental."}, {"label": "section_header", "id": 14, "page_no": 8, "cluster": {"id": 14, "label": "section_header", "bbox": {"l": 64.30471801757812, "t": 631.6611938476562, "r": 172.49951, "b": 641.8358499999999, "coord_origin": "TOPLEFT"}, "confidence": 0.879513144493103, "cells": [{"id": 44, "text": "COPYRIGHT LICENSE:", "bbox": {"l": 64.800064, "t": 632.62285, "r": 172.49951, "b": 641.8358499999999, "coord_origin": "TOPLEFT"}}]}, "text": "COPYRIGHT LICENSE:"}, {"label": "text", "id": 15, "page_no": 8, "cluster": {"id": 15, "label": "text", "bbox": {"l": 63.98580551147461, "t": 651.967041015625, "r": 547.24377, "b": 712.5435791015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9882200956344604, "cells": [{"id": 45, "text": "This information contains sample application programs in source language, which illustrate programming ", "bbox": {"l": 64.800064, "t": 652.66237, "r": 528.461, "b": 661.87537, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "techniques on various operating platforms. You may copy, modify, and distribute these sample programs in ", "bbox": {"l": 64.800079, "t": 662.62236, "r": 535.69391, "b": 671.83537, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "any form without payment to IBM, for the purposes of developing, using, marketing or distributing application ", "bbox": {"l": 64.800079, "t": 672.64212, "r": 544.75562, "b": 681.85513, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "programs conforming to the application programming interface for the operating platform for which the sample ", "bbox": {"l": 64.800079, "t": 682.66188, "r": 547.24377, "b": 691.8748899999999, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "programs are written. These examples have not been thoroughly tested under all conditions. IBM, therefore, ", "bbox": {"l": 64.800079, "t": 692.62188, "r": 542.89099, "b": 701.834885, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "cannot guarantee or imply reliability, serviceability, or function of these programs. ", "bbox": {"l": 64.800079, "t": 702.64164, "r": 423.58121, "b": 711.854645, "coord_origin": "TOPLEFT"}}]}, "text": "This information contains sample application programs in source language, which illustrate programming techniques on various operating platforms. You may copy, modify, and distribute these sample programs in any form without payment to IBM, for the purposes of developing, using, marketing or distributing application programs conforming to the application programming interface for the operating platform for which the sample programs are written. These examples have not been thoroughly tested under all conditions. IBM, therefore, cannot guarantee or imply reliability, serviceability, or function of these programs."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 8, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.6475715637207, "t": 754.7320556640625, "r": 257.24335, "b": 764.1610717773438, "coord_origin": "TOPLEFT"}, "confidence": 0.9500033855438232, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 8, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.3445434570312, "t": 754.3482666015625, "r": 547.25024, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9123973846435547, "cells": [{"id": 1, "text": "vii", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25024, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "vii"}]}}, {"page_no": 9, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "viii ", "bbox": {"l": 64.800003, "t": 755.868721, "r": 81.162003, "b": 765.08172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 96.180305, "t": 756.557999, "r": 337.03378, "b": 764.883001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Trademarks", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 154.14569, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines ", "bbox": {"l": 64.800003, "t": 103.48870999999997, "r": 547.26044, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Corporation in the United States, other countries, or both. These and other IBM trademarked terms are ", "bbox": {"l": 64.800003, "t": 113.50847999999996, "r": 520.9967, "b": 122.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "marked on their first occurrence in this information with the appropriate symbol (fi or \u2122), indicating US ", "bbox": {"l": 64.800003, "t": 123.52826000000005, "r": 519.97705, "b": 132.74127, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "registered or common law trademarks owned by IBM at the time this information was published. Such ", "bbox": {"l": 64.800003, "t": 133.48828000000003, "r": 515.00299, "b": 142.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "trademarks may also be registered or common law trademarks in other countries. A current list of IBM ", "bbox": {"l": 64.800003, "t": 143.50806, "r": 516.58441, "b": 152.72107000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "trademarks is available on the Web at ", "bbox": {"l": 64.800003, "t": 153.52783, "r": 233.90881000000002, "b": 162.74084000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "http://www.ibm.com/legal/copytrade.shtml", "bbox": {"l": 233.87996999999996, "t": 153.67724999999996, "r": 433.73734, "b": 162.45203000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "The following terms are trademarks of the International Business Machines Corporation in the United States, ", "bbox": {"l": 64.800003, "t": 173.50757, "r": 546.61505, "b": 182.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "other countries, or both: ", "bbox": {"l": 64.800003, "t": 183.52733999999998, "r": 173.15189, "b": 192.74036, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "AS/400fi", "bbox": {"l": 75.599998, "t": 202.51801, "r": 111.6711, "b": 210.84295999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "DB2fi", "bbox": {"l": 75.599998, "t": 213.55829000000006, "r": 99.669601, "b": 221.88324, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "DRDAfi", "bbox": {"l": 75.599998, "t": 224.53827, "r": 107.3052, "b": 232.86321999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "IBMfi", "bbox": {"l": 236.40029999999996, "t": 202.51793999999995, "r": 259.0047, "b": 210.8429, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Power Systems\u2122", "bbox": {"l": 236.40029999999996, "t": 213.55822999999998, "r": 307.14569, "b": 221.88318000000004, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Redbooksfi", "bbox": {"l": 236.40029999999996, "t": 224.53821000000005, "r": 283.47211, "b": 232.86316, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Redpaper\u2122", "bbox": {"l": 397.20059, "t": 202.51788, "r": 445.65295, "b": 210.84283000000005, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Redbooks (log", "bbox": {"l": 397.20059, "t": 213.55817000000002, "r": 455.12460000000004, "b": 221.88311999999996, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "o)", "bbox": {"l": 450.46969999999993, "t": 213.55817000000002, "r": 455.17949999999996, "b": 221.88311999999996, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "fi System", "bbox": {"l": 427.21201, "t": 213.55817000000002, "r": 448.99689, "b": 221.88311999999996, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": " ifi", "bbox": {"l": 427.15442, "t": 224.53814999999997, "r": 438.3072199999999, "b": 232.86310000000003, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "The following terms are trademarks of other companies:", "bbox": {"l": 64.800003, "t": 245.50867000000005, "r": 311.90067, "b": 254.72168, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Windows, and the Windows logo are trademarks of Microsoft Corporation in the United States, other ", "bbox": {"l": 64.800003, "t": 265.48839999999996, "r": 509.53705, "b": 274.70142, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "countries, or both.", "bbox": {"l": 64.800003, "t": 275.50818000000004, "r": 144.77483, "b": 284.7211899999999, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Other company, product, or service names may be trademarks or service marks of others. ", "bbox": {"l": 64.800003, "t": 295.48798, "r": 464.51569, "b": 304.70096, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.85106658935547, "t": 755.861328125, "r": 81.162003, "b": 765.08172, "coord_origin": "TOPLEFT"}, "confidence": 0.9069269299507141, "cells": [{"id": 0, "text": "viii ", "bbox": {"l": 64.800003, "t": 755.868721, "r": 81.162003, "b": 765.08172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 95.8013916015625, "t": 755.7946166992188, "r": 337.03378, "b": 765.3360595703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9419320821762085, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 96.180305, "t": 756.557999, "r": 337.03378, "b": 764.883001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.09756469726562, "t": 70.1291275024414, "r": 154.14569, "b": 85.9837, "coord_origin": "TOPLEFT"}, "confidence": 0.9517050385475159, "cells": [{"id": 2, "text": "Trademarks", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 154.14569, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 64.14087677001953, "t": 102.73088073730469, "r": 547.26044, "b": 162.74084000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9863917827606201, "cells": [{"id": 3, "text": "IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines ", "bbox": {"l": 64.800003, "t": 103.48870999999997, "r": 547.26044, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Corporation in the United States, other countries, or both. These and other IBM trademarked terms are ", "bbox": {"l": 64.800003, "t": 113.50847999999996, "r": 520.9967, "b": 122.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "marked on their first occurrence in this information with the appropriate symbol (fi or \u2122), indicating US ", "bbox": {"l": 64.800003, "t": 123.52826000000005, "r": 519.97705, "b": 132.74127, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "registered or common law trademarks owned by IBM at the time this information was published. Such ", "bbox": {"l": 64.800003, "t": 133.48828000000003, "r": 515.00299, "b": 142.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "trademarks may also be registered or common law trademarks in other countries. A current list of IBM ", "bbox": {"l": 64.800003, "t": 143.50806, "r": 516.58441, "b": 152.72107000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "trademarks is available on the Web at ", "bbox": {"l": 64.800003, "t": 153.52783, "r": 233.90881000000002, "b": 162.74084000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "http://www.ibm.com/legal/copytrade.shtml", "bbox": {"l": 233.87996999999996, "t": 153.67724999999996, "r": 433.73734, "b": 162.45203000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 63.81353759765625, "t": 172.72238159179688, "r": 546.61505, "b": 192.74036, "coord_origin": "TOPLEFT"}, "confidence": 0.9608373641967773, "cells": [{"id": 10, "text": "The following terms are trademarks of the International Business Machines Corporation in the United States, ", "bbox": {"l": 64.800003, "t": 173.50757, "r": 546.61505, "b": 182.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "other countries, or both: ", "bbox": {"l": 64.800003, "t": 183.52733999999998, "r": 173.15189, "b": 192.74036, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 75.01971435546875, "t": 200.92349243164062, "r": 112.14369201660156, "b": 210.84295999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.8121887445449829, "cells": [{"id": 12, "text": "AS/400fi", "bbox": {"l": 75.599998, "t": 202.51801, "r": 111.6711, "b": 210.84295999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 75.20001220703125, "t": 211.9452667236328, "r": 100.03594970703125, "b": 221.88324, "coord_origin": "TOPLEFT"}, "confidence": 0.7914246916770935, "cells": [{"id": 13, "text": "DB2fi", "bbox": {"l": 75.599998, "t": 213.55829000000006, "r": 99.669601, "b": 221.88324, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 75.27558898925781, "t": 223.59620666503906, "r": 107.95845794677734, "b": 232.86321999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.822727382183075, "cells": [{"id": 14, "text": "DRDAfi", "bbox": {"l": 75.599998, "t": 224.53827, "r": 107.3052, "b": 232.86321999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 235.85794067382812, "t": 201.27745056152344, "r": 259.61248779296875, "b": 210.8429, "coord_origin": "TOPLEFT"}, "confidence": 0.837928831577301, "cells": [{"id": 15, "text": "IBMfi", "bbox": {"l": 236.40029999999996, "t": 202.51793999999995, "r": 259.0047, "b": 210.8429, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 235.99562072753906, "t": 212.1666717529297, "r": 307.14569, "b": 221.88318000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.8122887015342712, "cells": [{"id": 16, "text": "Power Systems\u2122", "bbox": {"l": 236.40029999999996, "t": 213.55822999999998, "r": 307.14569, "b": 221.88318000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 236.1086883544922, "t": 223.76063537597656, "r": 283.57794189453125, "b": 232.86316, "coord_origin": "TOPLEFT"}, "confidence": 0.8228758573532104, "cells": [{"id": 17, "text": "Redbooksfi", "bbox": {"l": 236.40029999999996, "t": 224.53821000000005, "r": 283.47211, "b": 232.86316, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 396.9049377441406, "t": 201.1180419921875, "r": 445.7533874511719, "b": 210.84283000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.7675914764404297, "cells": [{"id": 18, "text": "Redpaper\u2122", "bbox": {"l": 397.20059, "t": 202.51788, "r": 445.65295, "b": 210.84283000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 397.0493469238281, "t": 212.6171417236328, "r": 464.00567626953125, "b": 222.2538604736328, "coord_origin": "TOPLEFT"}, "confidence": 0.7420825958251953, "cells": [{"id": 19, "text": "Redbooks (log", "bbox": {"l": 397.20059, "t": 213.55817000000002, "r": 455.12460000000004, "b": 221.88311999999996, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "o)", "bbox": {"l": 450.46969999999993, "t": 213.55817000000002, "r": 455.17949999999996, "b": 221.88311999999996, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "fi System", "bbox": {"l": 427.21201, "t": 213.55817000000002, "r": 448.99689, "b": 221.88311999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 396.6751708984375, "t": 223.71835327148438, "r": 438.42291259765625, "b": 233.55853271484375, "coord_origin": "TOPLEFT"}, "confidence": 0.8272937536239624, "cells": [{"id": 22, "text": " ifi", "bbox": {"l": 427.15442, "t": 224.53814999999997, "r": 438.3072199999999, "b": 232.86310000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "text", "bbox": {"l": 63.997196197509766, "t": 244.85638427734375, "r": 311.90067, "b": 254.72168, "coord_origin": "TOPLEFT"}, "confidence": 0.9434750080108643, "cells": [{"id": 23, "text": "The following terms are trademarks of other companies:", "bbox": {"l": 64.800003, "t": 245.50867000000005, "r": 311.90067, "b": 254.72168, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "text", "bbox": {"l": 63.95560073852539, "t": 264.8189392089844, "r": 509.53705, "b": 284.7211899999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9707977771759033, "cells": [{"id": 24, "text": "Windows, and the Windows logo are trademarks of Microsoft Corporation in the United States, other ", "bbox": {"l": 64.800003, "t": 265.48839999999996, "r": 509.53705, "b": 274.70142, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "countries, or both.", "bbox": {"l": 64.800003, "t": 275.50818000000004, "r": 144.77483, "b": 284.7211899999999, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "text", "bbox": {"l": 64.17562103271484, "t": 294.56353759765625, "r": 464.51569, "b": 305.0062561035156, "coord_origin": "TOPLEFT"}, "confidence": 0.959129810333252, "cells": [{"id": 26, "text": "Other company, product, or service names may be trademarks or service marks of others. ", "bbox": {"l": 64.800003, "t": 295.48798, "r": 464.51569, "b": 304.70096, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "picture", "bbox": {"l": 465.2912902832031, "t": 210.87185668945312, "r": 487.54522705078125, "b": 223.7872772216797, "coord_origin": "TOPLEFT"}, "confidence": 0.6540718078613281, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 9, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.85106658935547, "t": 755.861328125, "r": 81.162003, "b": 765.08172, "coord_origin": "TOPLEFT"}, "confidence": 0.9069269299507141, "cells": [{"id": 0, "text": "viii ", "bbox": {"l": 64.800003, "t": 755.868721, "r": 81.162003, "b": 765.08172, "coord_origin": "TOPLEFT"}}]}, "text": "viii"}, {"label": "page_footer", "id": 1, "page_no": 9, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 95.8013916015625, "t": 755.7946166992188, "r": 337.03378, "b": 765.3360595703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9419320821762085, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 96.180305, "t": 756.557999, "r": 337.03378, "b": 764.883001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "section_header", "id": 2, "page_no": 9, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.09756469726562, "t": 70.1291275024414, "r": 154.14569, "b": 85.9837, "coord_origin": "TOPLEFT"}, "confidence": 0.9517050385475159, "cells": [{"id": 2, "text": "Trademarks", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 154.14569, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, "text": "Trademarks"}, {"label": "text", "id": 3, "page_no": 9, "cluster": {"id": 3, "label": "text", "bbox": {"l": 64.14087677001953, "t": 102.73088073730469, "r": 547.26044, "b": 162.74084000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9863917827606201, "cells": [{"id": 3, "text": "IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines ", "bbox": {"l": 64.800003, "t": 103.48870999999997, "r": 547.26044, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Corporation in the United States, other countries, or both. These and other IBM trademarked terms are ", "bbox": {"l": 64.800003, "t": 113.50847999999996, "r": 520.9967, "b": 122.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "marked on their first occurrence in this information with the appropriate symbol (fi or \u2122), indicating US ", "bbox": {"l": 64.800003, "t": 123.52826000000005, "r": 519.97705, "b": 132.74127, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "registered or common law trademarks owned by IBM at the time this information was published. Such ", "bbox": {"l": 64.800003, "t": 133.48828000000003, "r": 515.00299, "b": 142.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "trademarks may also be registered or common law trademarks in other countries. A current list of IBM ", "bbox": {"l": 64.800003, "t": 143.50806, "r": 516.58441, "b": 152.72107000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "trademarks is available on the Web at ", "bbox": {"l": 64.800003, "t": 153.52783, "r": 233.90881000000002, "b": 162.74084000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "http://www.ibm.com/legal/copytrade.shtml", "bbox": {"l": 233.87996999999996, "t": 153.67724999999996, "r": 433.73734, "b": 162.45203000000004, "coord_origin": "TOPLEFT"}}]}, "text": "IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines Corporation in the United States, other countries, or both. These and other IBM trademarked terms are marked on their first occurrence in this information with the appropriate symbol (fi or \u2122), indicating US registered or common law trademarks owned by IBM at the time this information was published. Such trademarks may also be registered or common law trademarks in other countries. A current list of IBM trademarks is available on the Web at http://www.ibm.com/legal/copytrade.shtml"}, {"label": "text", "id": 4, "page_no": 9, "cluster": {"id": 4, "label": "text", "bbox": {"l": 63.81353759765625, "t": 172.72238159179688, "r": 546.61505, "b": 192.74036, "coord_origin": "TOPLEFT"}, "confidence": 0.9608373641967773, "cells": [{"id": 10, "text": "The following terms are trademarks of the International Business Machines Corporation in the United States, ", "bbox": {"l": 64.800003, "t": 173.50757, "r": 546.61505, "b": 182.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "other countries, or both: ", "bbox": {"l": 64.800003, "t": 183.52733999999998, "r": 173.15189, "b": 192.74036, "coord_origin": "TOPLEFT"}}]}, "text": "The following terms are trademarks of the International Business Machines Corporation in the United States, other countries, or both:"}, {"label": "text", "id": 5, "page_no": 9, "cluster": {"id": 5, "label": "text", "bbox": {"l": 75.01971435546875, "t": 200.92349243164062, "r": 112.14369201660156, "b": 210.84295999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.8121887445449829, "cells": [{"id": 12, "text": "AS/400fi", "bbox": {"l": 75.599998, "t": 202.51801, "r": 111.6711, "b": 210.84295999999995, "coord_origin": "TOPLEFT"}}]}, "text": "AS/400fi"}, {"label": "text", "id": 6, "page_no": 9, "cluster": {"id": 6, "label": "text", "bbox": {"l": 75.20001220703125, "t": 211.9452667236328, "r": 100.03594970703125, "b": 221.88324, "coord_origin": "TOPLEFT"}, "confidence": 0.7914246916770935, "cells": [{"id": 13, "text": "DB2fi", "bbox": {"l": 75.599998, "t": 213.55829000000006, "r": 99.669601, "b": 221.88324, "coord_origin": "TOPLEFT"}}]}, "text": "DB2fi"}, {"label": "text", "id": 7, "page_no": 9, "cluster": {"id": 7, "label": "text", "bbox": {"l": 75.27558898925781, "t": 223.59620666503906, "r": 107.95845794677734, "b": 232.86321999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.822727382183075, "cells": [{"id": 14, "text": "DRDAfi", "bbox": {"l": 75.599998, "t": 224.53827, "r": 107.3052, "b": 232.86321999999996, "coord_origin": "TOPLEFT"}}]}, "text": "DRDAfi"}, {"label": "text", "id": 8, "page_no": 9, "cluster": {"id": 8, "label": "text", "bbox": {"l": 235.85794067382812, "t": 201.27745056152344, "r": 259.61248779296875, "b": 210.8429, "coord_origin": "TOPLEFT"}, "confidence": 0.837928831577301, "cells": [{"id": 15, "text": "IBMfi", "bbox": {"l": 236.40029999999996, "t": 202.51793999999995, "r": 259.0047, "b": 210.8429, "coord_origin": "TOPLEFT"}}]}, "text": "IBMfi"}, {"label": "text", "id": 9, "page_no": 9, "cluster": {"id": 9, "label": "text", "bbox": {"l": 235.99562072753906, "t": 212.1666717529297, "r": 307.14569, "b": 221.88318000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.8122887015342712, "cells": [{"id": 16, "text": "Power Systems\u2122", "bbox": {"l": 236.40029999999996, "t": 213.55822999999998, "r": 307.14569, "b": 221.88318000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Power Systems\u2122"}, {"label": "text", "id": 10, "page_no": 9, "cluster": {"id": 10, "label": "text", "bbox": {"l": 236.1086883544922, "t": 223.76063537597656, "r": 283.57794189453125, "b": 232.86316, "coord_origin": "TOPLEFT"}, "confidence": 0.8228758573532104, "cells": [{"id": 17, "text": "Redbooksfi", "bbox": {"l": 236.40029999999996, "t": 224.53821000000005, "r": 283.47211, "b": 232.86316, "coord_origin": "TOPLEFT"}}]}, "text": "Redbooksfi"}, {"label": "text", "id": 11, "page_no": 9, "cluster": {"id": 11, "label": "text", "bbox": {"l": 396.9049377441406, "t": 201.1180419921875, "r": 445.7533874511719, "b": 210.84283000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.7675914764404297, "cells": [{"id": 18, "text": "Redpaper\u2122", "bbox": {"l": 397.20059, "t": 202.51788, "r": 445.65295, "b": 210.84283000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Redpaper\u2122"}, {"label": "text", "id": 12, "page_no": 9, "cluster": {"id": 12, "label": "text", "bbox": {"l": 397.0493469238281, "t": 212.6171417236328, "r": 464.00567626953125, "b": 222.2538604736328, "coord_origin": "TOPLEFT"}, "confidence": 0.7420825958251953, "cells": [{"id": 19, "text": "Redbooks (log", "bbox": {"l": 397.20059, "t": 213.55817000000002, "r": 455.12460000000004, "b": 221.88311999999996, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "o)", "bbox": {"l": 450.46969999999993, "t": 213.55817000000002, "r": 455.17949999999996, "b": 221.88311999999996, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "fi System", "bbox": {"l": 427.21201, "t": 213.55817000000002, "r": 448.99689, "b": 221.88311999999996, "coord_origin": "TOPLEFT"}}]}, "text": "Redbooks (log o) fi System"}, {"label": "text", "id": 13, "page_no": 9, "cluster": {"id": 13, "label": "text", "bbox": {"l": 396.6751708984375, "t": 223.71835327148438, "r": 438.42291259765625, "b": 233.55853271484375, "coord_origin": "TOPLEFT"}, "confidence": 0.8272937536239624, "cells": [{"id": 22, "text": " ifi", "bbox": {"l": 427.15442, "t": 224.53814999999997, "r": 438.3072199999999, "b": 232.86310000000003, "coord_origin": "TOPLEFT"}}]}, "text": "ifi"}, {"label": "text", "id": 14, "page_no": 9, "cluster": {"id": 14, "label": "text", "bbox": {"l": 63.997196197509766, "t": 244.85638427734375, "r": 311.90067, "b": 254.72168, "coord_origin": "TOPLEFT"}, "confidence": 0.9434750080108643, "cells": [{"id": 23, "text": "The following terms are trademarks of other companies:", "bbox": {"l": 64.800003, "t": 245.50867000000005, "r": 311.90067, "b": 254.72168, "coord_origin": "TOPLEFT"}}]}, "text": "The following terms are trademarks of other companies:"}, {"label": "text", "id": 15, "page_no": 9, "cluster": {"id": 15, "label": "text", "bbox": {"l": 63.95560073852539, "t": 264.8189392089844, "r": 509.53705, "b": 284.7211899999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9707977771759033, "cells": [{"id": 24, "text": "Windows, and the Windows logo are trademarks of Microsoft Corporation in the United States, other ", "bbox": {"l": 64.800003, "t": 265.48839999999996, "r": 509.53705, "b": 274.70142, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "countries, or both.", "bbox": {"l": 64.800003, "t": 275.50818000000004, "r": 144.77483, "b": 284.7211899999999, "coord_origin": "TOPLEFT"}}]}, "text": "Windows, and the Windows logo are trademarks of Microsoft Corporation in the United States, other countries, or both."}, {"label": "text", "id": 16, "page_no": 9, "cluster": {"id": 16, "label": "text", "bbox": {"l": 64.17562103271484, "t": 294.56353759765625, "r": 464.51569, "b": 305.0062561035156, "coord_origin": "TOPLEFT"}, "confidence": 0.959129810333252, "cells": [{"id": 26, "text": "Other company, product, or service names may be trademarks or service marks of others. ", "bbox": {"l": 64.800003, "t": 295.48798, "r": 464.51569, "b": 304.70096, "coord_origin": "TOPLEFT"}}]}, "text": "Other company, product, or service names may be trademarks or service marks of others."}, {"label": "picture", "id": 17, "page_no": 9, "cluster": {"id": 17, "label": "picture", "bbox": {"l": 465.2912902832031, "t": 210.87185668945312, "r": 487.54522705078125, "b": 223.7872772216797, "coord_origin": "TOPLEFT"}, "confidence": 0.6540718078613281, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "section_header", "id": 2, "page_no": 9, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.09756469726562, "t": 70.1291275024414, "r": 154.14569, "b": 85.9837, "coord_origin": "TOPLEFT"}, "confidence": 0.9517050385475159, "cells": [{"id": 2, "text": "Trademarks", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 154.14569, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, "text": "Trademarks"}, {"label": "text", "id": 3, "page_no": 9, "cluster": {"id": 3, "label": "text", "bbox": {"l": 64.14087677001953, "t": 102.73088073730469, "r": 547.26044, "b": 162.74084000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9863917827606201, "cells": [{"id": 3, "text": "IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines ", "bbox": {"l": 64.800003, "t": 103.48870999999997, "r": 547.26044, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Corporation in the United States, other countries, or both. These and other IBM trademarked terms are ", "bbox": {"l": 64.800003, "t": 113.50847999999996, "r": 520.9967, "b": 122.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "marked on their first occurrence in this information with the appropriate symbol (fi or \u2122), indicating US ", "bbox": {"l": 64.800003, "t": 123.52826000000005, "r": 519.97705, "b": 132.74127, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "registered or common law trademarks owned by IBM at the time this information was published. Such ", "bbox": {"l": 64.800003, "t": 133.48828000000003, "r": 515.00299, "b": 142.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "trademarks may also be registered or common law trademarks in other countries. A current list of IBM ", "bbox": {"l": 64.800003, "t": 143.50806, "r": 516.58441, "b": 152.72107000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "trademarks is available on the Web at ", "bbox": {"l": 64.800003, "t": 153.52783, "r": 233.90881000000002, "b": 162.74084000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "http://www.ibm.com/legal/copytrade.shtml", "bbox": {"l": 233.87996999999996, "t": 153.67724999999996, "r": 433.73734, "b": 162.45203000000004, "coord_origin": "TOPLEFT"}}]}, "text": "IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines Corporation in the United States, other countries, or both. These and other IBM trademarked terms are marked on their first occurrence in this information with the appropriate symbol (fi or \u2122), indicating US registered or common law trademarks owned by IBM at the time this information was published. Such trademarks may also be registered or common law trademarks in other countries. A current list of IBM trademarks is available on the Web at http://www.ibm.com/legal/copytrade.shtml"}, {"label": "text", "id": 4, "page_no": 9, "cluster": {"id": 4, "label": "text", "bbox": {"l": 63.81353759765625, "t": 172.72238159179688, "r": 546.61505, "b": 192.74036, "coord_origin": "TOPLEFT"}, "confidence": 0.9608373641967773, "cells": [{"id": 10, "text": "The following terms are trademarks of the International Business Machines Corporation in the United States, ", "bbox": {"l": 64.800003, "t": 173.50757, "r": 546.61505, "b": 182.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "other countries, or both: ", "bbox": {"l": 64.800003, "t": 183.52733999999998, "r": 173.15189, "b": 192.74036, "coord_origin": "TOPLEFT"}}]}, "text": "The following terms are trademarks of the International Business Machines Corporation in the United States, other countries, or both:"}, {"label": "text", "id": 5, "page_no": 9, "cluster": {"id": 5, "label": "text", "bbox": {"l": 75.01971435546875, "t": 200.92349243164062, "r": 112.14369201660156, "b": 210.84295999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.8121887445449829, "cells": [{"id": 12, "text": "AS/400fi", "bbox": {"l": 75.599998, "t": 202.51801, "r": 111.6711, "b": 210.84295999999995, "coord_origin": "TOPLEFT"}}]}, "text": "AS/400fi"}, {"label": "text", "id": 6, "page_no": 9, "cluster": {"id": 6, "label": "text", "bbox": {"l": 75.20001220703125, "t": 211.9452667236328, "r": 100.03594970703125, "b": 221.88324, "coord_origin": "TOPLEFT"}, "confidence": 0.7914246916770935, "cells": [{"id": 13, "text": "DB2fi", "bbox": {"l": 75.599998, "t": 213.55829000000006, "r": 99.669601, "b": 221.88324, "coord_origin": "TOPLEFT"}}]}, "text": "DB2fi"}, {"label": "text", "id": 7, "page_no": 9, "cluster": {"id": 7, "label": "text", "bbox": {"l": 75.27558898925781, "t": 223.59620666503906, "r": 107.95845794677734, "b": 232.86321999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.822727382183075, "cells": [{"id": 14, "text": "DRDAfi", "bbox": {"l": 75.599998, "t": 224.53827, "r": 107.3052, "b": 232.86321999999996, "coord_origin": "TOPLEFT"}}]}, "text": "DRDAfi"}, {"label": "text", "id": 8, "page_no": 9, "cluster": {"id": 8, "label": "text", "bbox": {"l": 235.85794067382812, "t": 201.27745056152344, "r": 259.61248779296875, "b": 210.8429, "coord_origin": "TOPLEFT"}, "confidence": 0.837928831577301, "cells": [{"id": 15, "text": "IBMfi", "bbox": {"l": 236.40029999999996, "t": 202.51793999999995, "r": 259.0047, "b": 210.8429, "coord_origin": "TOPLEFT"}}]}, "text": "IBMfi"}, {"label": "text", "id": 9, "page_no": 9, "cluster": {"id": 9, "label": "text", "bbox": {"l": 235.99562072753906, "t": 212.1666717529297, "r": 307.14569, "b": 221.88318000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.8122887015342712, "cells": [{"id": 16, "text": "Power Systems\u2122", "bbox": {"l": 236.40029999999996, "t": 213.55822999999998, "r": 307.14569, "b": 221.88318000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Power Systems\u2122"}, {"label": "text", "id": 10, "page_no": 9, "cluster": {"id": 10, "label": "text", "bbox": {"l": 236.1086883544922, "t": 223.76063537597656, "r": 283.57794189453125, "b": 232.86316, "coord_origin": "TOPLEFT"}, "confidence": 0.8228758573532104, "cells": [{"id": 17, "text": "Redbooksfi", "bbox": {"l": 236.40029999999996, "t": 224.53821000000005, "r": 283.47211, "b": 232.86316, "coord_origin": "TOPLEFT"}}]}, "text": "Redbooksfi"}, {"label": "text", "id": 11, "page_no": 9, "cluster": {"id": 11, "label": "text", "bbox": {"l": 396.9049377441406, "t": 201.1180419921875, "r": 445.7533874511719, "b": 210.84283000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.7675914764404297, "cells": [{"id": 18, "text": "Redpaper\u2122", "bbox": {"l": 397.20059, "t": 202.51788, "r": 445.65295, "b": 210.84283000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Redpaper\u2122"}, {"label": "text", "id": 12, "page_no": 9, "cluster": {"id": 12, "label": "text", "bbox": {"l": 397.0493469238281, "t": 212.6171417236328, "r": 464.00567626953125, "b": 222.2538604736328, "coord_origin": "TOPLEFT"}, "confidence": 0.7420825958251953, "cells": [{"id": 19, "text": "Redbooks (log", "bbox": {"l": 397.20059, "t": 213.55817000000002, "r": 455.12460000000004, "b": 221.88311999999996, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "o)", "bbox": {"l": 450.46969999999993, "t": 213.55817000000002, "r": 455.17949999999996, "b": 221.88311999999996, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "fi System", "bbox": {"l": 427.21201, "t": 213.55817000000002, "r": 448.99689, "b": 221.88311999999996, "coord_origin": "TOPLEFT"}}]}, "text": "Redbooks (log o) fi System"}, {"label": "text", "id": 13, "page_no": 9, "cluster": {"id": 13, "label": "text", "bbox": {"l": 396.6751708984375, "t": 223.71835327148438, "r": 438.42291259765625, "b": 233.55853271484375, "coord_origin": "TOPLEFT"}, "confidence": 0.8272937536239624, "cells": [{"id": 22, "text": " ifi", "bbox": {"l": 427.15442, "t": 224.53814999999997, "r": 438.3072199999999, "b": 232.86310000000003, "coord_origin": "TOPLEFT"}}]}, "text": "ifi"}, {"label": "text", "id": 14, "page_no": 9, "cluster": {"id": 14, "label": "text", "bbox": {"l": 63.997196197509766, "t": 244.85638427734375, "r": 311.90067, "b": 254.72168, "coord_origin": "TOPLEFT"}, "confidence": 0.9434750080108643, "cells": [{"id": 23, "text": "The following terms are trademarks of other companies:", "bbox": {"l": 64.800003, "t": 245.50867000000005, "r": 311.90067, "b": 254.72168, "coord_origin": "TOPLEFT"}}]}, "text": "The following terms are trademarks of other companies:"}, {"label": "text", "id": 15, "page_no": 9, "cluster": {"id": 15, "label": "text", "bbox": {"l": 63.95560073852539, "t": 264.8189392089844, "r": 509.53705, "b": 284.7211899999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9707977771759033, "cells": [{"id": 24, "text": "Windows, and the Windows logo are trademarks of Microsoft Corporation in the United States, other ", "bbox": {"l": 64.800003, "t": 265.48839999999996, "r": 509.53705, "b": 274.70142, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "countries, or both.", "bbox": {"l": 64.800003, "t": 275.50818000000004, "r": 144.77483, "b": 284.7211899999999, "coord_origin": "TOPLEFT"}}]}, "text": "Windows, and the Windows logo are trademarks of Microsoft Corporation in the United States, other countries, or both."}, {"label": "text", "id": 16, "page_no": 9, "cluster": {"id": 16, "label": "text", "bbox": {"l": 64.17562103271484, "t": 294.56353759765625, "r": 464.51569, "b": 305.0062561035156, "coord_origin": "TOPLEFT"}, "confidence": 0.959129810333252, "cells": [{"id": 26, "text": "Other company, product, or service names may be trademarks or service marks of others. ", "bbox": {"l": 64.800003, "t": 295.48798, "r": 464.51569, "b": 304.70096, "coord_origin": "TOPLEFT"}}]}, "text": "Other company, product, or service names may be trademarks or service marks of others."}, {"label": "picture", "id": 17, "page_no": 9, "cluster": {"id": 17, "label": "picture", "bbox": {"l": 465.2912902832031, "t": 210.87185668945312, "r": 487.54522705078125, "b": 223.7872772216797, "coord_origin": "TOPLEFT"}, "confidence": 0.6540718078613281, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 9, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.85106658935547, "t": 755.861328125, "r": 81.162003, "b": 765.08172, "coord_origin": "TOPLEFT"}, "confidence": 0.9069269299507141, "cells": [{"id": 0, "text": "viii ", "bbox": {"l": 64.800003, "t": 755.868721, "r": 81.162003, "b": 765.08172, "coord_origin": "TOPLEFT"}}]}, "text": "viii"}, {"label": "page_footer", "id": 1, "page_no": 9, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 95.8013916015625, "t": 755.7946166992188, "r": 337.03378, "b": 765.3360595703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9419320821762085, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 96.180305, "t": 756.557999, "r": 337.03378, "b": 764.883001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 10, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "DB2 for i Center of Excellence", "bbox": {"l": 64.800003, "t": 74.48395000000005, "r": 235.8624, "b": 85.58398, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Solution Brief", "bbox": {"l": 94.132698, "t": 148.63933999999995, "r": 139.54634, "b": 155.33642999999995, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "IBM Systems Lab Services and Training", "bbox": {"l": 94.134933, "t": 138.45012999999994, "r": 233.99973, "b": 145.22162000000003, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Power Services", "bbox": {"l": 461.08859000000007, "t": 138.40752999999995, "r": 506.26178, "b": 145.42181000000005, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "DB2 for i", "bbox": {"l": 280.24011, "t": 239.34265000000005, "r": 354.57022, "b": 256.26153999999997, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Center of Excellence ", "bbox": {"l": 280.24011, "t": 259.70165999999995, "r": 463.80942, "b": 276.62054, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Expert help to achieve your business requirements", "bbox": {"l": 280.24011, "t": 277.59027000000003, "r": 483.29572, "b": 287.45959, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "We build confident, satisfied clients", "bbox": {"l": 280.24011, "t": 315.88161999999994, "r": 443.28210000000007, "b": 324.89566, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "No one else has the vast consulting experiences, skills sharing and ", "bbox": {"l": 280.24011, "t": 327.37595, "r": 488.15466, "b": 334.77994, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "renown service offerings to do what we can do for you.", "bbox": {"l": 280.24011, "t": 337.55551, "r": 452.34018, "b": 344.9595, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Because no one else is IBM.", "bbox": {"l": 280.24011, "t": 357.3260200000001, "r": 367.86023, "b": 364.73001, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "With combined experiences and direct access to development groups, ", "bbox": {"l": 280.24011, "t": 377.09801999999996, "r": 500.32104000000004, "b": 384.50201, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "we\u2019re the experts in IBM DB2\u00ae for i. The DB2 for i Center of ", "bbox": {"l": 280.24011, "t": 387.27759, "r": 479.25497, "b": 394.68158, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Excellence (CoE) can help you achieve-perhaps reexamine and ", "bbox": {"l": 280.24011, "t": 397.45715, "r": 483.4667400000001, "b": 404.86115, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "exceed-your business requirements and gain more confidence and ", "bbox": {"l": 280.24011, "t": 407.63672, "r": 492.97656, "b": 415.04071000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "satisfaction in IBM product data management products and solutions.", "bbox": {"l": 280.24011, "t": 417.81628, "r": 498.87, "b": 425.22027999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Who we are, some of what we do", "bbox": {"l": 280.24011, "t": 437.85403, "r": 434.83205999999996, "b": 446.86807, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Global CoE engagements cover topics including:", "bbox": {"l": 280.24011, "t": 449.34824000000003, "r": 434.56316999999996, "b": 456.75223, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "r ", "bbox": {"l": 280.24011, "t": 470.95236, "r": 284.0993, "b": 476.16074, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Database performance and scalability", "bbox": {"l": 287.28961, "t": 469.11826, "r": 401.56412, "b": 476.52225, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "r ", "bbox": {"l": 280.24011, "t": 481.13507, "r": 284.0993, "b": 486.34344, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Advanced SQL knowledge and skills transfer", "bbox": {"l": 287.28961, "t": 479.30096, "r": 424.99646, "b": 486.70496, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "r ", "bbox": {"l": 280.24011, "t": 491.31766, "r": 284.0993, "b": 496.52603, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Business intelligence and analytics", "bbox": {"l": 287.28961, "t": 489.48355, "r": 392.15845, "b": 496.88754, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "r ", "bbox": {"l": 280.24011, "t": 501.50037, "r": 284.0993, "b": 506.70874, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "DB2 Web Query", "bbox": {"l": 287.28961, "t": 499.66626, "r": 339.94354, "b": 507.07025, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "r ", "bbox": {"l": 280.24011, "t": 511.68295, "r": 284.0993, "b": 516.8913299999999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Query/400 modernization for better reporting and analysis capabilities", "bbox": {"l": 287.28961, "t": 509.84885, "r": 504.19314999999995, "b": 517.25284, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "r ", "bbox": {"l": 280.24011, "t": 521.8656599999999, "r": 284.0993, "b": 527.07404, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Database modernization and re-engineering", "bbox": {"l": 287.28961, "t": 520.03156, "r": 423.0022, "b": 527.4355499999999, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "r ", "bbox": {"l": 280.24011, "t": 532.04825, "r": 284.0993, "b": 537.2566400000001, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Data-centric architecture and design", "bbox": {"l": 287.28961, "t": 530.21414, "r": 399.65173, "b": 537.61813, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "r ", "bbox": {"l": 280.24011, "t": 542.23083, "r": 284.0993, "b": 547.43924, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Extremely large database and overcoming limits to growth", "bbox": {"l": 287.28961, "t": 540.39674, "r": 466.77881, "b": 547.80074, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "r ", "bbox": {"l": 280.24011, "t": 552.41354, "r": 284.0993, "b": 557.62195, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "ISV education and enablement", "bbox": {"l": 287.28961, "t": 550.5794500000001, "r": 382.20956, "b": 557.98344, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Highlights ", "bbox": {"l": 144.88921, "t": 327.46163999999993, "r": 188.74681, "b": 336.81406, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 346.01953, "r": 148.68732, "b": 350.60168, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.9388, "t": 345.21707, "r": 177.25424, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 176.9472, "t": 345.21707, "r": 187.11098, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 186.7914, "t": 345.21707, "r": 222.95989999999998, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 222.65912, "t": 345.21707, "r": 229.55193999999997, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "GLYPHGLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 229.2261, "t": 345.21707, "r": 242.87389000000002, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 353.04984, "r": 178.77066, "b": 358.68942, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 178.46362, "t": 353.04984, "r": 207.16908, "b": 358.68942, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 368.73465, "r": 148.68732, "b": 373.3168, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "GLYPHGLYPHGLYPH GLYPHGLYPH", "bbox": {"l": 151.9388, "t": 367.93219, "r": 166.05655, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 165.73697, "t": 367.93219, "r": 186.40289, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPH", "bbox": {"l": 186.09586, "t": 367.93219, "r": 203.61617, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 203.30286, "t": 367.93219, "r": 211.82489, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 211.49905, "t": 367.93219, "r": 218.16002, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 217.83418, "t": 367.93219, "r": 241.30737, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 375.76495, "r": 174.46577, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 174.15874, "t": 375.76495, "r": 214.4128, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 214.11829, "t": 375.76495, "r": 221.01110999999997, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 220.68527, "t": 375.76495, "r": 247.52341000000004, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "GLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 247.21637, "t": 375.76495, "r": 259.2287, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 383.59772, "r": 184.61703, "b": 389.2373, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 399.28265, "r": 148.68732, "b": 403.86481000000003, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "GLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.9388, "t": 398.48019, "r": 165.36099, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 165.04141, "t": 398.48019, "r": 173.56345, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 173.23761, "t": 398.48019, "r": 185.95174, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 185.63216, "t": 398.48019, "r": 204.42448, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 204.11118, "t": 398.48019, "r": 235.29178, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 234.99099999999999, "t": 398.48019, "r": 249.83562, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 406.31296, "r": 173.41306, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 173.10602, "t": 406.31296, "r": 185.0118, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 184.69221, "t": 406.31296, "r": 206.3858, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 206.07249, "t": 406.31296, "r": 228.24231000000003, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 421.99773999999996, "r": 148.68732, "b": 426.5799, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "GLYPH", "bbox": {"l": 151.9388, "t": 421.1952800000001, "r": 155.43533, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 154.73979, "t": 421.1952800000001, "r": 166.06282, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 165.74324, "t": 421.1952800000001, "r": 195.84607, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 195.53903, "t": 421.1952800000001, "r": 202.43185, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 202.10602, "t": 421.1952800000001, "r": 222.87220999999997, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 222.55890000000002, "t": 421.1952800000001, "r": 229.57077, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "GLYPH GLYPH", "bbox": {"l": 229.24492999999998, "t": 421.1952800000001, "r": 234.25163000000003, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.92627, "t": 429.02805, "r": 181.42754, "b": 434.66763, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 181.1205, "t": 429.02805, "r": 201.07835, "b": 434.66763, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 200.76505, "t": 429.02805, "r": 207.65787, "b": 434.66763, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 207.33203, "t": 429.02805, "r": 232.07098000000002, "b": 434.66763, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "text", "bbox": {"l": 64.800003, "t": 74.48395000000005, "r": 235.8624, "b": 85.58398, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 0, "text": "DB2 for i Center of Excellence", "bbox": {"l": 64.800003, "t": 74.48395000000005, "r": 235.8624, "b": 85.58398, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "text", "bbox": {"l": 93.67039489746094, "t": 137.6368408203125, "r": 233.99973, "b": 155.33642999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.7431555986404419, "cells": [{"id": 1, "text": "Solution Brief", "bbox": {"l": 94.132698, "t": 148.63933999999995, "r": 139.54634, "b": 155.33642999999995, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "IBM Systems Lab Services and Training", "bbox": {"l": 94.134933, "t": 138.45012999999994, "r": 233.99973, "b": 145.22162000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 460.8193359375, "t": 138.33865356445312, "r": 506.26178, "b": 145.42181000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.7798991203308105, "cells": [{"id": 3, "text": "Power Services", "bbox": {"l": 461.08859000000007, "t": 138.40752999999995, "r": 506.26178, "b": 145.42181000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "section_header", "bbox": {"l": 280.07391357421875, "t": 237.7128143310547, "r": 463.80942, "b": 276.62054, "coord_origin": "TOPLEFT"}, "confidence": 0.7587877511978149, "cells": [{"id": 4, "text": "DB2 for i", "bbox": {"l": 280.24011, "t": 239.34265000000005, "r": 354.57022, "b": 256.26153999999997, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Center of Excellence ", "bbox": {"l": 280.24011, "t": 259.70165999999995, "r": 463.80942, "b": 276.62054, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 279.51953125, "t": 277.1574401855469, "r": 483.7276916503906, "b": 288.63494873046875, "coord_origin": "TOPLEFT"}, "confidence": 0.7965629696846008, "cells": [{"id": 6, "text": "Expert help to achieve your business requirements", "bbox": {"l": 280.24011, "t": 277.59027000000003, "r": 483.29572, "b": 287.45959, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "section_header", "bbox": {"l": 279.468994140625, "t": 315.0786437988281, "r": 443.375732421875, "b": 324.89566, "coord_origin": "TOPLEFT"}, "confidence": 0.891353964805603, "cells": [{"id": 7, "text": "We build confident, satisfied clients", "bbox": {"l": 280.24011, "t": 315.88161999999994, "r": 443.28210000000007, "b": 324.89566, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 279.530517578125, "t": 327.26470947265625, "r": 488.15466, "b": 345.5077209472656, "coord_origin": "TOPLEFT"}, "confidence": 0.9560743570327759, "cells": [{"id": 8, "text": "No one else has the vast consulting experiences, skills sharing and ", "bbox": {"l": 280.24011, "t": 327.37595, "r": 488.15466, "b": 334.77994, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "renown service offerings to do what we can do for you.", "bbox": {"l": 280.24011, "t": 337.55551, "r": 452.34018, "b": 344.9595, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 280.0453186035156, "t": 356.5709533691406, "r": 367.86023, "b": 364.73001, "coord_origin": "TOPLEFT"}, "confidence": 0.8260757923126221, "cells": [{"id": 10, "text": "Because no one else is IBM.", "bbox": {"l": 280.24011, "t": 357.3260200000001, "r": 367.86023, "b": 364.73001, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 279.70794677734375, "t": 376.26104736328125, "r": 500.32104000000004, "b": 425.3092041015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9764720797538757, "cells": [{"id": 11, "text": "With combined experiences and direct access to development groups, ", "bbox": {"l": 280.24011, "t": 377.09801999999996, "r": 500.32104000000004, "b": 384.50201, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "we\u2019re the experts in IBM DB2\u00ae for i. The DB2 for i Center of ", "bbox": {"l": 280.24011, "t": 387.27759, "r": 479.25497, "b": 394.68158, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Excellence (CoE) can help you achieve-perhaps reexamine and ", "bbox": {"l": 280.24011, "t": 397.45715, "r": 483.4667400000001, "b": 404.86115, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "exceed-your business requirements and gain more confidence and ", "bbox": {"l": 280.24011, "t": 407.63672, "r": 492.97656, "b": 415.04071000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "satisfaction in IBM product data management products and solutions.", "bbox": {"l": 280.24011, "t": 417.81628, "r": 498.87, "b": 425.22027999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "section_header", "bbox": {"l": 279.6336669921875, "t": 437.1227722167969, "r": 435.1236572265625, "b": 446.86807, "coord_origin": "TOPLEFT"}, "confidence": 0.8492124676704407, "cells": [{"id": 16, "text": "Who we are, some of what we do", "bbox": {"l": 280.24011, "t": 437.85403, "r": 434.83205999999996, "b": 446.86807, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 279.4736328125, "t": 449.2602233886719, "r": 434.56316999999996, "b": 457.4661865234375, "coord_origin": "TOPLEFT"}, "confidence": 0.8440341353416443, "cells": [{"id": 17, "text": "Global CoE engagements cover topics including:", "bbox": {"l": 280.24011, "t": 449.34824000000003, "r": 434.56316999999996, "b": 456.75223, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 279.74200439453125, "t": 468.3660583496094, "r": 402.1675109863281, "b": 476.5758972167969, "coord_origin": "TOPLEFT"}, "confidence": 0.9239599108695984, "cells": [{"id": 18, "text": "r ", "bbox": {"l": 280.24011, "t": 470.95236, "r": 284.0993, "b": 476.16074, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Database performance and scalability", "bbox": {"l": 287.28961, "t": 469.11826, "r": 401.56412, "b": 476.52225, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "list_item", "bbox": {"l": 279.7657165527344, "t": 478.64898681640625, "r": 424.99646, "b": 486.78228759765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9239722490310669, "cells": [{"id": 20, "text": "r ", "bbox": {"l": 280.24011, "t": 481.13507, "r": 284.0993, "b": 486.34344, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Advanced SQL knowledge and skills transfer", "bbox": {"l": 287.28961, "t": 479.30096, "r": 424.99646, "b": 486.70496, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "list_item", "bbox": {"l": 279.9660339355469, "t": 489.48355, "r": 392.2996520996094, "b": 497.1912841796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9157897233963013, "cells": [{"id": 22, "text": "r ", "bbox": {"l": 280.24011, "t": 491.31766, "r": 284.0993, "b": 496.52603, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Business intelligence and analytics", "bbox": {"l": 287.28961, "t": 489.48355, "r": 392.15845, "b": 496.88754, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "list_item", "bbox": {"l": 279.9432067871094, "t": 499.5702819824219, "r": 339.94354, "b": 507.2607727050781, "coord_origin": "TOPLEFT"}, "confidence": 0.8733457922935486, "cells": [{"id": 24, "text": "r ", "bbox": {"l": 280.24011, "t": 501.50037, "r": 284.0993, "b": 506.70874, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "DB2 Web Query", "bbox": {"l": 287.28961, "t": 499.66626, "r": 339.94354, "b": 507.07025, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "list_item", "bbox": {"l": 279.68328857421875, "t": 509.4296875, "r": 504.21795654296875, "b": 517.4979858398438, "coord_origin": "TOPLEFT"}, "confidence": 0.924924373626709, "cells": [{"id": 26, "text": "r ", "bbox": {"l": 280.24011, "t": 511.68295, "r": 284.0993, "b": 516.8913299999999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Query/400 modernization for better reporting and analysis capabilities", "bbox": {"l": 287.28961, "t": 509.84885, "r": 504.19314999999995, "b": 517.25284, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "list_item", "bbox": {"l": 279.66998291015625, "t": 520.03156, "r": 423.0022, "b": 528.0305786132812, "coord_origin": "TOPLEFT"}, "confidence": 0.9109311103820801, "cells": [{"id": 28, "text": "r ", "bbox": {"l": 280.24011, "t": 521.8656599999999, "r": 284.0993, "b": 527.07404, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Database modernization and re-engineering", "bbox": {"l": 287.28961, "t": 520.03156, "r": 423.0022, "b": 527.4355499999999, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "list_item", "bbox": {"l": 279.7203674316406, "t": 529.9635620117188, "r": 400.07391357421875, "b": 537.8783569335938, "coord_origin": "TOPLEFT"}, "confidence": 0.8977466225624084, "cells": [{"id": 30, "text": "r ", "bbox": {"l": 280.24011, "t": 532.04825, "r": 284.0993, "b": 537.2566400000001, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Data-centric architecture and design", "bbox": {"l": 287.28961, "t": 530.21414, "r": 399.65173, "b": 537.61813, "coord_origin": "TOPLEFT"}}]}, {"id": 18, "label": "list_item", "bbox": {"l": 279.7815856933594, "t": 539.8663330078125, "r": 467.2125549316406, "b": 547.80074, "coord_origin": "TOPLEFT"}, "confidence": 0.9218330383300781, "cells": [{"id": 32, "text": "r ", "bbox": {"l": 280.24011, "t": 542.23083, "r": 284.0993, "b": 547.43924, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Extremely large database and overcoming limits to growth", "bbox": {"l": 287.28961, "t": 540.39674, "r": 466.77881, "b": 547.80074, "coord_origin": "TOPLEFT"}}]}, {"id": 19, "label": "list_item", "bbox": {"l": 279.89080810546875, "t": 550.0230102539062, "r": 382.3631591796875, "b": 557.98344, "coord_origin": "TOPLEFT"}, "confidence": 0.9075438976287842, "cells": [{"id": 34, "text": "r ", "bbox": {"l": 280.24011, "t": 552.41354, "r": 284.0993, "b": 557.62195, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "ISV education and enablement", "bbox": {"l": 287.28961, "t": 550.5794500000001, "r": 382.20956, "b": 557.98344, "coord_origin": "TOPLEFT"}}]}, {"id": 20, "label": "section_header", "bbox": {"l": 144.19781494140625, "t": 327.06201171875, "r": 188.74681, "b": 337.35504150390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9098501205444336, "cells": [{"id": 36, "text": "Highlights ", "bbox": {"l": 144.88921, "t": 327.46163999999993, "r": 188.74681, "b": 336.81406, "coord_origin": "TOPLEFT"}}]}, {"id": 21, "label": "list_item", "bbox": {"l": 144.4553985595703, "t": 344.037109375, "r": 242.87389000000002, "b": 358.68942, "coord_origin": "TOPLEFT"}, "confidence": 0.9571698904037476, "cells": [{"id": 37, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 346.01953, "r": 148.68732, "b": 350.60168, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.9388, "t": 345.21707, "r": 177.25424, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 176.9472, "t": 345.21707, "r": 187.11098, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 186.7914, "t": 345.21707, "r": 222.95989999999998, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 222.65912, "t": 345.21707, "r": 229.55193999999997, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "GLYPHGLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 229.2261, "t": 345.21707, "r": 242.87389000000002, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 353.04984, "r": 178.77066, "b": 358.68942, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 178.46362, "t": 353.04984, "r": 207.16908, "b": 358.68942, "coord_origin": "TOPLEFT"}}]}, {"id": 22, "label": "list_item", "bbox": {"l": 144.40879821777344, "t": 366.6461486816406, "r": 259.2287, "b": 389.2373, "coord_origin": "TOPLEFT"}, "confidence": 0.9634581804275513, "cells": [{"id": 45, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 368.73465, "r": 148.68732, "b": 373.3168, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "GLYPHGLYPHGLYPH GLYPHGLYPH", "bbox": {"l": 151.9388, "t": 367.93219, "r": 166.05655, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 165.73697, "t": 367.93219, "r": 186.40289, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPH", "bbox": {"l": 186.09586, "t": 367.93219, "r": 203.61617, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 203.30286, "t": 367.93219, "r": 211.82489, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 211.49905, "t": 367.93219, "r": 218.16002, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 217.83418, "t": 367.93219, "r": 241.30737, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 375.76495, "r": 174.46577, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 174.15874, "t": 375.76495, "r": 214.4128, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 214.11829, "t": 375.76495, "r": 221.01110999999997, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 220.68527, "t": 375.76495, "r": 247.52341000000004, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "GLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 247.21637, "t": 375.76495, "r": 259.2287, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 383.59772, "r": 184.61703, "b": 389.2373, "coord_origin": "TOPLEFT"}}]}, {"id": 23, "label": "list_item", "bbox": {"l": 144.23313903808594, "t": 397.1644592285156, "r": 249.83562, "b": 412.3861083984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9541196823120117, "cells": [{"id": 58, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 399.28265, "r": 148.68732, "b": 403.86481000000003, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "GLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.9388, "t": 398.48019, "r": 165.36099, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 165.04141, "t": 398.48019, "r": 173.56345, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 173.23761, "t": 398.48019, "r": 185.95174, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 185.63216, "t": 398.48019, "r": 204.42448, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 204.11118, "t": 398.48019, "r": 235.29178, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 234.99099999999999, "t": 398.48019, "r": 249.83562, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 406.31296, "r": 173.41306, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 173.10602, "t": 406.31296, "r": 185.0118, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 184.69221, "t": 406.31296, "r": 206.3858, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 206.07249, "t": 406.31296, "r": 228.24231000000003, "b": 411.95255, "coord_origin": "TOPLEFT"}}]}, {"id": 24, "label": "list_item", "bbox": {"l": 144.35208129882812, "t": 420.17449951171875, "r": 234.25163000000003, "b": 434.66763, "coord_origin": "TOPLEFT"}, "confidence": 0.9440370798110962, "cells": [{"id": 69, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 421.99773999999996, "r": 148.68732, "b": 426.5799, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "GLYPH", "bbox": {"l": 151.9388, "t": 421.1952800000001, "r": 155.43533, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 154.73979, "t": 421.1952800000001, "r": 166.06282, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 165.74324, "t": 421.1952800000001, "r": 195.84607, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 195.53903, "t": 421.1952800000001, "r": 202.43185, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 202.10602, "t": 421.1952800000001, "r": 222.87220999999997, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 222.55890000000002, "t": 421.1952800000001, "r": 229.57077, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "GLYPH GLYPH", "bbox": {"l": 229.24492999999998, "t": 421.1952800000001, "r": 234.25163000000003, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.92627, "t": 429.02805, "r": 181.42754, "b": 434.66763, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 181.1205, "t": 429.02805, "r": 201.07835, "b": 434.66763, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 200.76505, "t": 429.02805, "r": 207.65787, "b": 434.66763, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 207.33203, "t": 429.02805, "r": 232.07098000000002, "b": 434.66763, "coord_origin": "TOPLEFT"}}]}, {"id": 25, "label": "picture", "bbox": {"l": 64.16704559326172, "t": 603.50634765625, "r": 258.77435302734375, "b": 688.1282348632812, "coord_origin": "TOPLEFT"}, "confidence": 0.8925828337669373, "cells": []}, {"id": 26, "label": "picture", "bbox": {"l": 143.39866638183594, "t": 270.2610778808594, "r": 179.56256103515625, "b": 285.621337890625, "coord_origin": "TOPLEFT"}, "confidence": 0.7491760849952698, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "text", "id": 0, "page_no": 10, "cluster": {"id": 0, "label": "text", "bbox": {"l": 64.800003, "t": 74.48395000000005, "r": 235.8624, "b": 85.58398, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 0, "text": "DB2 for i Center of Excellence", "bbox": {"l": 64.800003, "t": 74.48395000000005, "r": 235.8624, "b": 85.58398, "coord_origin": "TOPLEFT"}}]}, "text": "DB2 for i Center of Excellence"}, {"label": "text", "id": 1, "page_no": 10, "cluster": {"id": 1, "label": "text", "bbox": {"l": 93.67039489746094, "t": 137.6368408203125, "r": 233.99973, "b": 155.33642999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.7431555986404419, "cells": [{"id": 1, "text": "Solution Brief", "bbox": {"l": 94.132698, "t": 148.63933999999995, "r": 139.54634, "b": 155.33642999999995, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "IBM Systems Lab Services and Training", "bbox": {"l": 94.134933, "t": 138.45012999999994, "r": 233.99973, "b": 145.22162000000003, "coord_origin": "TOPLEFT"}}]}, "text": "Solution Brief IBM Systems Lab Services and Training"}, {"label": "text", "id": 2, "page_no": 10, "cluster": {"id": 2, "label": "text", "bbox": {"l": 460.8193359375, "t": 138.33865356445312, "r": 506.26178, "b": 145.42181000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.7798991203308105, "cells": [{"id": 3, "text": "Power Services", "bbox": {"l": 461.08859000000007, "t": 138.40752999999995, "r": 506.26178, "b": 145.42181000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Power Services"}, {"label": "section_header", "id": 3, "page_no": 10, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 280.07391357421875, "t": 237.7128143310547, "r": 463.80942, "b": 276.62054, "coord_origin": "TOPLEFT"}, "confidence": 0.7587877511978149, "cells": [{"id": 4, "text": "DB2 for i", "bbox": {"l": 280.24011, "t": 239.34265000000005, "r": 354.57022, "b": 256.26153999999997, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Center of Excellence ", "bbox": {"l": 280.24011, "t": 259.70165999999995, "r": 463.80942, "b": 276.62054, "coord_origin": "TOPLEFT"}}]}, "text": "DB2 for i Center of Excellence"}, {"label": "text", "id": 4, "page_no": 10, "cluster": {"id": 4, "label": "text", "bbox": {"l": 279.51953125, "t": 277.1574401855469, "r": 483.7276916503906, "b": 288.63494873046875, "coord_origin": "TOPLEFT"}, "confidence": 0.7965629696846008, "cells": [{"id": 6, "text": "Expert help to achieve your business requirements", "bbox": {"l": 280.24011, "t": 277.59027000000003, "r": 483.29572, "b": 287.45959, "coord_origin": "TOPLEFT"}}]}, "text": "Expert help to achieve your business requirements"}, {"label": "section_header", "id": 5, "page_no": 10, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 279.468994140625, "t": 315.0786437988281, "r": 443.375732421875, "b": 324.89566, "coord_origin": "TOPLEFT"}, "confidence": 0.891353964805603, "cells": [{"id": 7, "text": "We build confident, satisfied clients", "bbox": {"l": 280.24011, "t": 315.88161999999994, "r": 443.28210000000007, "b": 324.89566, "coord_origin": "TOPLEFT"}}]}, "text": "We build confident, satisfied clients"}, {"label": "text", "id": 6, "page_no": 10, "cluster": {"id": 6, "label": "text", "bbox": {"l": 279.530517578125, "t": 327.26470947265625, "r": 488.15466, "b": 345.5077209472656, "coord_origin": "TOPLEFT"}, "confidence": 0.9560743570327759, "cells": [{"id": 8, "text": "No one else has the vast consulting experiences, skills sharing and ", "bbox": {"l": 280.24011, "t": 327.37595, "r": 488.15466, "b": 334.77994, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "renown service offerings to do what we can do for you.", "bbox": {"l": 280.24011, "t": 337.55551, "r": 452.34018, "b": 344.9595, "coord_origin": "TOPLEFT"}}]}, "text": "No one else has the vast consulting experiences, skills sharing and renown service offerings to do what we can do for you."}, {"label": "text", "id": 7, "page_no": 10, "cluster": {"id": 7, "label": "text", "bbox": {"l": 280.0453186035156, "t": 356.5709533691406, "r": 367.86023, "b": 364.73001, "coord_origin": "TOPLEFT"}, "confidence": 0.8260757923126221, "cells": [{"id": 10, "text": "Because no one else is IBM.", "bbox": {"l": 280.24011, "t": 357.3260200000001, "r": 367.86023, "b": 364.73001, "coord_origin": "TOPLEFT"}}]}, "text": "Because no one else is IBM."}, {"label": "text", "id": 8, "page_no": 10, "cluster": {"id": 8, "label": "text", "bbox": {"l": 279.70794677734375, "t": 376.26104736328125, "r": 500.32104000000004, "b": 425.3092041015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9764720797538757, "cells": [{"id": 11, "text": "With combined experiences and direct access to development groups, ", "bbox": {"l": 280.24011, "t": 377.09801999999996, "r": 500.32104000000004, "b": 384.50201, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "we\u2019re the experts in IBM DB2\u00ae for i. The DB2 for i Center of ", "bbox": {"l": 280.24011, "t": 387.27759, "r": 479.25497, "b": 394.68158, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Excellence (CoE) can help you achieve-perhaps reexamine and ", "bbox": {"l": 280.24011, "t": 397.45715, "r": 483.4667400000001, "b": 404.86115, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "exceed-your business requirements and gain more confidence and ", "bbox": {"l": 280.24011, "t": 407.63672, "r": 492.97656, "b": 415.04071000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "satisfaction in IBM product data management products and solutions.", "bbox": {"l": 280.24011, "t": 417.81628, "r": 498.87, "b": 425.22027999999995, "coord_origin": "TOPLEFT"}}]}, "text": "With combined experiences and direct access to development groups, we\u2019re the experts in IBM DB2\u00ae for i. The DB2 for i Center of Excellence (CoE) can help you achieve-perhaps reexamine and exceed-your business requirements and gain more confidence and satisfaction in IBM product data management products and solutions."}, {"label": "section_header", "id": 9, "page_no": 10, "cluster": {"id": 9, "label": "section_header", "bbox": {"l": 279.6336669921875, "t": 437.1227722167969, "r": 435.1236572265625, "b": 446.86807, "coord_origin": "TOPLEFT"}, "confidence": 0.8492124676704407, "cells": [{"id": 16, "text": "Who we are, some of what we do", "bbox": {"l": 280.24011, "t": 437.85403, "r": 434.83205999999996, "b": 446.86807, "coord_origin": "TOPLEFT"}}]}, "text": "Who we are, some of what we do"}, {"label": "text", "id": 10, "page_no": 10, "cluster": {"id": 10, "label": "text", "bbox": {"l": 279.4736328125, "t": 449.2602233886719, "r": 434.56316999999996, "b": 457.4661865234375, "coord_origin": "TOPLEFT"}, "confidence": 0.8440341353416443, "cells": [{"id": 17, "text": "Global CoE engagements cover topics including:", "bbox": {"l": 280.24011, "t": 449.34824000000003, "r": 434.56316999999996, "b": 456.75223, "coord_origin": "TOPLEFT"}}]}, "text": "Global CoE engagements cover topics including:"}, {"label": "list_item", "id": 11, "page_no": 10, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 279.74200439453125, "t": 468.3660583496094, "r": 402.1675109863281, "b": 476.5758972167969, "coord_origin": "TOPLEFT"}, "confidence": 0.9239599108695984, "cells": [{"id": 18, "text": "r ", "bbox": {"l": 280.24011, "t": 470.95236, "r": 284.0993, "b": 476.16074, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Database performance and scalability", "bbox": {"l": 287.28961, "t": 469.11826, "r": 401.56412, "b": 476.52225, "coord_origin": "TOPLEFT"}}]}, "text": "r Database performance and scalability"}, {"label": "list_item", "id": 12, "page_no": 10, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 279.7657165527344, "t": 478.64898681640625, "r": 424.99646, "b": 486.78228759765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9239722490310669, "cells": [{"id": 20, "text": "r ", "bbox": {"l": 280.24011, "t": 481.13507, "r": 284.0993, "b": 486.34344, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Advanced SQL knowledge and skills transfer", "bbox": {"l": 287.28961, "t": 479.30096, "r": 424.99646, "b": 486.70496, "coord_origin": "TOPLEFT"}}]}, "text": "r Advanced SQL knowledge and skills transfer"}, {"label": "list_item", "id": 13, "page_no": 10, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 279.9660339355469, "t": 489.48355, "r": 392.2996520996094, "b": 497.1912841796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9157897233963013, "cells": [{"id": 22, "text": "r ", "bbox": {"l": 280.24011, "t": 491.31766, "r": 284.0993, "b": 496.52603, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Business intelligence and analytics", "bbox": {"l": 287.28961, "t": 489.48355, "r": 392.15845, "b": 496.88754, "coord_origin": "TOPLEFT"}}]}, "text": "r Business intelligence and analytics"}, {"label": "list_item", "id": 14, "page_no": 10, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 279.9432067871094, "t": 499.5702819824219, "r": 339.94354, "b": 507.2607727050781, "coord_origin": "TOPLEFT"}, "confidence": 0.8733457922935486, "cells": [{"id": 24, "text": "r ", "bbox": {"l": 280.24011, "t": 501.50037, "r": 284.0993, "b": 506.70874, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "DB2 Web Query", "bbox": {"l": 287.28961, "t": 499.66626, "r": 339.94354, "b": 507.07025, "coord_origin": "TOPLEFT"}}]}, "text": "r DB2 Web Query"}, {"label": "list_item", "id": 15, "page_no": 10, "cluster": {"id": 15, "label": "list_item", "bbox": {"l": 279.68328857421875, "t": 509.4296875, "r": 504.21795654296875, "b": 517.4979858398438, "coord_origin": "TOPLEFT"}, "confidence": 0.924924373626709, "cells": [{"id": 26, "text": "r ", "bbox": {"l": 280.24011, "t": 511.68295, "r": 284.0993, "b": 516.8913299999999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Query/400 modernization for better reporting and analysis capabilities", "bbox": {"l": 287.28961, "t": 509.84885, "r": 504.19314999999995, "b": 517.25284, "coord_origin": "TOPLEFT"}}]}, "text": "r Query/400 modernization for better reporting and analysis capabilities"}, {"label": "list_item", "id": 16, "page_no": 10, "cluster": {"id": 16, "label": "list_item", "bbox": {"l": 279.66998291015625, "t": 520.03156, "r": 423.0022, "b": 528.0305786132812, "coord_origin": "TOPLEFT"}, "confidence": 0.9109311103820801, "cells": [{"id": 28, "text": "r ", "bbox": {"l": 280.24011, "t": 521.8656599999999, "r": 284.0993, "b": 527.07404, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Database modernization and re-engineering", "bbox": {"l": 287.28961, "t": 520.03156, "r": 423.0022, "b": 527.4355499999999, "coord_origin": "TOPLEFT"}}]}, "text": "r Database modernization and re-engineering"}, {"label": "list_item", "id": 17, "page_no": 10, "cluster": {"id": 17, "label": "list_item", "bbox": {"l": 279.7203674316406, "t": 529.9635620117188, "r": 400.07391357421875, "b": 537.8783569335938, "coord_origin": "TOPLEFT"}, "confidence": 0.8977466225624084, "cells": [{"id": 30, "text": "r ", "bbox": {"l": 280.24011, "t": 532.04825, "r": 284.0993, "b": 537.2566400000001, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Data-centric architecture and design", "bbox": {"l": 287.28961, "t": 530.21414, "r": 399.65173, "b": 537.61813, "coord_origin": "TOPLEFT"}}]}, "text": "r Data-centric architecture and design"}, {"label": "list_item", "id": 18, "page_no": 10, "cluster": {"id": 18, "label": "list_item", "bbox": {"l": 279.7815856933594, "t": 539.8663330078125, "r": 467.2125549316406, "b": 547.80074, "coord_origin": "TOPLEFT"}, "confidence": 0.9218330383300781, "cells": [{"id": 32, "text": "r ", "bbox": {"l": 280.24011, "t": 542.23083, "r": 284.0993, "b": 547.43924, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Extremely large database and overcoming limits to growth", "bbox": {"l": 287.28961, "t": 540.39674, "r": 466.77881, "b": 547.80074, "coord_origin": "TOPLEFT"}}]}, "text": "r Extremely large database and overcoming limits to growth"}, {"label": "list_item", "id": 19, "page_no": 10, "cluster": {"id": 19, "label": "list_item", "bbox": {"l": 279.89080810546875, "t": 550.0230102539062, "r": 382.3631591796875, "b": 557.98344, "coord_origin": "TOPLEFT"}, "confidence": 0.9075438976287842, "cells": [{"id": 34, "text": "r ", "bbox": {"l": 280.24011, "t": 552.41354, "r": 284.0993, "b": 557.62195, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "ISV education and enablement", "bbox": {"l": 287.28961, "t": 550.5794500000001, "r": 382.20956, "b": 557.98344, "coord_origin": "TOPLEFT"}}]}, "text": "r ISV education and enablement"}, {"label": "section_header", "id": 20, "page_no": 10, "cluster": {"id": 20, "label": "section_header", "bbox": {"l": 144.19781494140625, "t": 327.06201171875, "r": 188.74681, "b": 337.35504150390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9098501205444336, "cells": [{"id": 36, "text": "Highlights ", "bbox": {"l": 144.88921, "t": 327.46163999999993, "r": 188.74681, "b": 336.81406, "coord_origin": "TOPLEFT"}}]}, "text": "Highlights"}, {"label": "list_item", "id": 21, "page_no": 10, "cluster": {"id": 21, "label": "list_item", "bbox": {"l": 144.4553985595703, "t": 344.037109375, "r": 242.87389000000002, "b": 358.68942, "coord_origin": "TOPLEFT"}, "confidence": 0.9571698904037476, "cells": [{"id": 37, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 346.01953, "r": 148.68732, "b": 350.60168, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.9388, "t": 345.21707, "r": 177.25424, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 176.9472, "t": 345.21707, "r": 187.11098, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 186.7914, "t": 345.21707, "r": 222.95989999999998, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 222.65912, "t": 345.21707, "r": 229.55193999999997, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "GLYPHGLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 229.2261, "t": 345.21707, "r": 242.87389000000002, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 353.04984, "r": 178.77066, "b": 358.68942, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 178.46362, "t": 353.04984, "r": 207.16908, "b": 358.68942, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH"}, {"label": "list_item", "id": 22, "page_no": 10, "cluster": {"id": 22, "label": "list_item", "bbox": {"l": 144.40879821777344, "t": 366.6461486816406, "r": 259.2287, "b": 389.2373, "coord_origin": "TOPLEFT"}, "confidence": 0.9634581804275513, "cells": [{"id": 45, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 368.73465, "r": 148.68732, "b": 373.3168, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "GLYPHGLYPHGLYPH GLYPHGLYPH", "bbox": {"l": 151.9388, "t": 367.93219, "r": 166.05655, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 165.73697, "t": 367.93219, "r": 186.40289, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPH", "bbox": {"l": 186.09586, "t": 367.93219, "r": 203.61617, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 203.30286, "t": 367.93219, "r": 211.82489, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 211.49905, "t": 367.93219, "r": 218.16002, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 217.83418, "t": 367.93219, "r": 241.30737, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 375.76495, "r": 174.46577, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 174.15874, "t": 375.76495, "r": 214.4128, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 214.11829, "t": 375.76495, "r": 221.01110999999997, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 220.68527, "t": 375.76495, "r": 247.52341000000004, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "GLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 247.21637, "t": 375.76495, "r": 259.2287, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 383.59772, "r": 184.61703, "b": 389.2373, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH"}, {"label": "list_item", "id": 23, "page_no": 10, "cluster": {"id": 23, "label": "list_item", "bbox": {"l": 144.23313903808594, "t": 397.1644592285156, "r": 249.83562, "b": 412.3861083984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9541196823120117, "cells": [{"id": 58, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 399.28265, "r": 148.68732, "b": 403.86481000000003, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "GLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.9388, "t": 398.48019, "r": 165.36099, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 165.04141, "t": 398.48019, "r": 173.56345, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 173.23761, "t": 398.48019, "r": 185.95174, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 185.63216, "t": 398.48019, "r": 204.42448, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 204.11118, "t": 398.48019, "r": 235.29178, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 234.99099999999999, "t": 398.48019, "r": 249.83562, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 406.31296, "r": 173.41306, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 173.10602, "t": 406.31296, "r": 185.0118, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 184.69221, "t": 406.31296, "r": 206.3858, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 206.07249, "t": 406.31296, "r": 228.24231000000003, "b": 411.95255, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH"}, {"label": "list_item", "id": 24, "page_no": 10, "cluster": {"id": 24, "label": "list_item", "bbox": {"l": 144.35208129882812, "t": 420.17449951171875, "r": 234.25163000000003, "b": 434.66763, "coord_origin": "TOPLEFT"}, "confidence": 0.9440370798110962, "cells": [{"id": 69, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 421.99773999999996, "r": 148.68732, "b": 426.5799, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "GLYPH", "bbox": {"l": 151.9388, "t": 421.1952800000001, "r": 155.43533, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 154.73979, "t": 421.1952800000001, "r": 166.06282, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 165.74324, "t": 421.1952800000001, "r": 195.84607, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 195.53903, "t": 421.1952800000001, "r": 202.43185, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 202.10602, "t": 421.1952800000001, "r": 222.87220999999997, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 222.55890000000002, "t": 421.1952800000001, "r": 229.57077, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "GLYPH GLYPH", "bbox": {"l": 229.24492999999998, "t": 421.1952800000001, "r": 234.25163000000003, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.92627, "t": 429.02805, "r": 181.42754, "b": 434.66763, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 181.1205, "t": 429.02805, "r": 201.07835, "b": 434.66763, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 200.76505, "t": 429.02805, "r": 207.65787, "b": 434.66763, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 207.33203, "t": 429.02805, "r": 232.07098000000002, "b": 434.66763, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH"}, {"label": "picture", "id": 25, "page_no": 10, "cluster": {"id": 25, "label": "picture", "bbox": {"l": 64.16704559326172, "t": 603.50634765625, "r": 258.77435302734375, "b": 688.1282348632812, "coord_origin": "TOPLEFT"}, "confidence": 0.8925828337669373, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 26, "page_no": 10, "cluster": {"id": 26, "label": "picture", "bbox": {"l": 143.39866638183594, "t": 270.2610778808594, "r": 179.56256103515625, "b": 285.621337890625, "coord_origin": "TOPLEFT"}, "confidence": 0.7491760849952698, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 0, "page_no": 10, "cluster": {"id": 0, "label": "text", "bbox": {"l": 64.800003, "t": 74.48395000000005, "r": 235.8624, "b": 85.58398, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 0, "text": "DB2 for i Center of Excellence", "bbox": {"l": 64.800003, "t": 74.48395000000005, "r": 235.8624, "b": 85.58398, "coord_origin": "TOPLEFT"}}]}, "text": "DB2 for i Center of Excellence"}, {"label": "text", "id": 1, "page_no": 10, "cluster": {"id": 1, "label": "text", "bbox": {"l": 93.67039489746094, "t": 137.6368408203125, "r": 233.99973, "b": 155.33642999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.7431555986404419, "cells": [{"id": 1, "text": "Solution Brief", "bbox": {"l": 94.132698, "t": 148.63933999999995, "r": 139.54634, "b": 155.33642999999995, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "IBM Systems Lab Services and Training", "bbox": {"l": 94.134933, "t": 138.45012999999994, "r": 233.99973, "b": 145.22162000000003, "coord_origin": "TOPLEFT"}}]}, "text": "Solution Brief IBM Systems Lab Services and Training"}, {"label": "text", "id": 2, "page_no": 10, "cluster": {"id": 2, "label": "text", "bbox": {"l": 460.8193359375, "t": 138.33865356445312, "r": 506.26178, "b": 145.42181000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.7798991203308105, "cells": [{"id": 3, "text": "Power Services", "bbox": {"l": 461.08859000000007, "t": 138.40752999999995, "r": 506.26178, "b": 145.42181000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Power Services"}, {"label": "section_header", "id": 3, "page_no": 10, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 280.07391357421875, "t": 237.7128143310547, "r": 463.80942, "b": 276.62054, "coord_origin": "TOPLEFT"}, "confidence": 0.7587877511978149, "cells": [{"id": 4, "text": "DB2 for i", "bbox": {"l": 280.24011, "t": 239.34265000000005, "r": 354.57022, "b": 256.26153999999997, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Center of Excellence ", "bbox": {"l": 280.24011, "t": 259.70165999999995, "r": 463.80942, "b": 276.62054, "coord_origin": "TOPLEFT"}}]}, "text": "DB2 for i Center of Excellence"}, {"label": "text", "id": 4, "page_no": 10, "cluster": {"id": 4, "label": "text", "bbox": {"l": 279.51953125, "t": 277.1574401855469, "r": 483.7276916503906, "b": 288.63494873046875, "coord_origin": "TOPLEFT"}, "confidence": 0.7965629696846008, "cells": [{"id": 6, "text": "Expert help to achieve your business requirements", "bbox": {"l": 280.24011, "t": 277.59027000000003, "r": 483.29572, "b": 287.45959, "coord_origin": "TOPLEFT"}}]}, "text": "Expert help to achieve your business requirements"}, {"label": "section_header", "id": 5, "page_no": 10, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 279.468994140625, "t": 315.0786437988281, "r": 443.375732421875, "b": 324.89566, "coord_origin": "TOPLEFT"}, "confidence": 0.891353964805603, "cells": [{"id": 7, "text": "We build confident, satisfied clients", "bbox": {"l": 280.24011, "t": 315.88161999999994, "r": 443.28210000000007, "b": 324.89566, "coord_origin": "TOPLEFT"}}]}, "text": "We build confident, satisfied clients"}, {"label": "text", "id": 6, "page_no": 10, "cluster": {"id": 6, "label": "text", "bbox": {"l": 279.530517578125, "t": 327.26470947265625, "r": 488.15466, "b": 345.5077209472656, "coord_origin": "TOPLEFT"}, "confidence": 0.9560743570327759, "cells": [{"id": 8, "text": "No one else has the vast consulting experiences, skills sharing and ", "bbox": {"l": 280.24011, "t": 327.37595, "r": 488.15466, "b": 334.77994, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "renown service offerings to do what we can do for you.", "bbox": {"l": 280.24011, "t": 337.55551, "r": 452.34018, "b": 344.9595, "coord_origin": "TOPLEFT"}}]}, "text": "No one else has the vast consulting experiences, skills sharing and renown service offerings to do what we can do for you."}, {"label": "text", "id": 7, "page_no": 10, "cluster": {"id": 7, "label": "text", "bbox": {"l": 280.0453186035156, "t": 356.5709533691406, "r": 367.86023, "b": 364.73001, "coord_origin": "TOPLEFT"}, "confidence": 0.8260757923126221, "cells": [{"id": 10, "text": "Because no one else is IBM.", "bbox": {"l": 280.24011, "t": 357.3260200000001, "r": 367.86023, "b": 364.73001, "coord_origin": "TOPLEFT"}}]}, "text": "Because no one else is IBM."}, {"label": "text", "id": 8, "page_no": 10, "cluster": {"id": 8, "label": "text", "bbox": {"l": 279.70794677734375, "t": 376.26104736328125, "r": 500.32104000000004, "b": 425.3092041015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9764720797538757, "cells": [{"id": 11, "text": "With combined experiences and direct access to development groups, ", "bbox": {"l": 280.24011, "t": 377.09801999999996, "r": 500.32104000000004, "b": 384.50201, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "we\u2019re the experts in IBM DB2\u00ae for i. The DB2 for i Center of ", "bbox": {"l": 280.24011, "t": 387.27759, "r": 479.25497, "b": 394.68158, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Excellence (CoE) can help you achieve-perhaps reexamine and ", "bbox": {"l": 280.24011, "t": 397.45715, "r": 483.4667400000001, "b": 404.86115, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "exceed-your business requirements and gain more confidence and ", "bbox": {"l": 280.24011, "t": 407.63672, "r": 492.97656, "b": 415.04071000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "satisfaction in IBM product data management products and solutions.", "bbox": {"l": 280.24011, "t": 417.81628, "r": 498.87, "b": 425.22027999999995, "coord_origin": "TOPLEFT"}}]}, "text": "With combined experiences and direct access to development groups, we\u2019re the experts in IBM DB2\u00ae for i. The DB2 for i Center of Excellence (CoE) can help you achieve-perhaps reexamine and exceed-your business requirements and gain more confidence and satisfaction in IBM product data management products and solutions."}, {"label": "section_header", "id": 9, "page_no": 10, "cluster": {"id": 9, "label": "section_header", "bbox": {"l": 279.6336669921875, "t": 437.1227722167969, "r": 435.1236572265625, "b": 446.86807, "coord_origin": "TOPLEFT"}, "confidence": 0.8492124676704407, "cells": [{"id": 16, "text": "Who we are, some of what we do", "bbox": {"l": 280.24011, "t": 437.85403, "r": 434.83205999999996, "b": 446.86807, "coord_origin": "TOPLEFT"}}]}, "text": "Who we are, some of what we do"}, {"label": "text", "id": 10, "page_no": 10, "cluster": {"id": 10, "label": "text", "bbox": {"l": 279.4736328125, "t": 449.2602233886719, "r": 434.56316999999996, "b": 457.4661865234375, "coord_origin": "TOPLEFT"}, "confidence": 0.8440341353416443, "cells": [{"id": 17, "text": "Global CoE engagements cover topics including:", "bbox": {"l": 280.24011, "t": 449.34824000000003, "r": 434.56316999999996, "b": 456.75223, "coord_origin": "TOPLEFT"}}]}, "text": "Global CoE engagements cover topics including:"}, {"label": "list_item", "id": 11, "page_no": 10, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 279.74200439453125, "t": 468.3660583496094, "r": 402.1675109863281, "b": 476.5758972167969, "coord_origin": "TOPLEFT"}, "confidence": 0.9239599108695984, "cells": [{"id": 18, "text": "r ", "bbox": {"l": 280.24011, "t": 470.95236, "r": 284.0993, "b": 476.16074, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Database performance and scalability", "bbox": {"l": 287.28961, "t": 469.11826, "r": 401.56412, "b": 476.52225, "coord_origin": "TOPLEFT"}}]}, "text": "r Database performance and scalability"}, {"label": "list_item", "id": 12, "page_no": 10, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 279.7657165527344, "t": 478.64898681640625, "r": 424.99646, "b": 486.78228759765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9239722490310669, "cells": [{"id": 20, "text": "r ", "bbox": {"l": 280.24011, "t": 481.13507, "r": 284.0993, "b": 486.34344, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Advanced SQL knowledge and skills transfer", "bbox": {"l": 287.28961, "t": 479.30096, "r": 424.99646, "b": 486.70496, "coord_origin": "TOPLEFT"}}]}, "text": "r Advanced SQL knowledge and skills transfer"}, {"label": "list_item", "id": 13, "page_no": 10, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 279.9660339355469, "t": 489.48355, "r": 392.2996520996094, "b": 497.1912841796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9157897233963013, "cells": [{"id": 22, "text": "r ", "bbox": {"l": 280.24011, "t": 491.31766, "r": 284.0993, "b": 496.52603, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Business intelligence and analytics", "bbox": {"l": 287.28961, "t": 489.48355, "r": 392.15845, "b": 496.88754, "coord_origin": "TOPLEFT"}}]}, "text": "r Business intelligence and analytics"}, {"label": "list_item", "id": 14, "page_no": 10, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 279.9432067871094, "t": 499.5702819824219, "r": 339.94354, "b": 507.2607727050781, "coord_origin": "TOPLEFT"}, "confidence": 0.8733457922935486, "cells": [{"id": 24, "text": "r ", "bbox": {"l": 280.24011, "t": 501.50037, "r": 284.0993, "b": 506.70874, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "DB2 Web Query", "bbox": {"l": 287.28961, "t": 499.66626, "r": 339.94354, "b": 507.07025, "coord_origin": "TOPLEFT"}}]}, "text": "r DB2 Web Query"}, {"label": "list_item", "id": 15, "page_no": 10, "cluster": {"id": 15, "label": "list_item", "bbox": {"l": 279.68328857421875, "t": 509.4296875, "r": 504.21795654296875, "b": 517.4979858398438, "coord_origin": "TOPLEFT"}, "confidence": 0.924924373626709, "cells": [{"id": 26, "text": "r ", "bbox": {"l": 280.24011, "t": 511.68295, "r": 284.0993, "b": 516.8913299999999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Query/400 modernization for better reporting and analysis capabilities", "bbox": {"l": 287.28961, "t": 509.84885, "r": 504.19314999999995, "b": 517.25284, "coord_origin": "TOPLEFT"}}]}, "text": "r Query/400 modernization for better reporting and analysis capabilities"}, {"label": "list_item", "id": 16, "page_no": 10, "cluster": {"id": 16, "label": "list_item", "bbox": {"l": 279.66998291015625, "t": 520.03156, "r": 423.0022, "b": 528.0305786132812, "coord_origin": "TOPLEFT"}, "confidence": 0.9109311103820801, "cells": [{"id": 28, "text": "r ", "bbox": {"l": 280.24011, "t": 521.8656599999999, "r": 284.0993, "b": 527.07404, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Database modernization and re-engineering", "bbox": {"l": 287.28961, "t": 520.03156, "r": 423.0022, "b": 527.4355499999999, "coord_origin": "TOPLEFT"}}]}, "text": "r Database modernization and re-engineering"}, {"label": "list_item", "id": 17, "page_no": 10, "cluster": {"id": 17, "label": "list_item", "bbox": {"l": 279.7203674316406, "t": 529.9635620117188, "r": 400.07391357421875, "b": 537.8783569335938, "coord_origin": "TOPLEFT"}, "confidence": 0.8977466225624084, "cells": [{"id": 30, "text": "r ", "bbox": {"l": 280.24011, "t": 532.04825, "r": 284.0993, "b": 537.2566400000001, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Data-centric architecture and design", "bbox": {"l": 287.28961, "t": 530.21414, "r": 399.65173, "b": 537.61813, "coord_origin": "TOPLEFT"}}]}, "text": "r Data-centric architecture and design"}, {"label": "list_item", "id": 18, "page_no": 10, "cluster": {"id": 18, "label": "list_item", "bbox": {"l": 279.7815856933594, "t": 539.8663330078125, "r": 467.2125549316406, "b": 547.80074, "coord_origin": "TOPLEFT"}, "confidence": 0.9218330383300781, "cells": [{"id": 32, "text": "r ", "bbox": {"l": 280.24011, "t": 542.23083, "r": 284.0993, "b": 547.43924, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Extremely large database and overcoming limits to growth", "bbox": {"l": 287.28961, "t": 540.39674, "r": 466.77881, "b": 547.80074, "coord_origin": "TOPLEFT"}}]}, "text": "r Extremely large database and overcoming limits to growth"}, {"label": "list_item", "id": 19, "page_no": 10, "cluster": {"id": 19, "label": "list_item", "bbox": {"l": 279.89080810546875, "t": 550.0230102539062, "r": 382.3631591796875, "b": 557.98344, "coord_origin": "TOPLEFT"}, "confidence": 0.9075438976287842, "cells": [{"id": 34, "text": "r ", "bbox": {"l": 280.24011, "t": 552.41354, "r": 284.0993, "b": 557.62195, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "ISV education and enablement", "bbox": {"l": 287.28961, "t": 550.5794500000001, "r": 382.20956, "b": 557.98344, "coord_origin": "TOPLEFT"}}]}, "text": "r ISV education and enablement"}, {"label": "section_header", "id": 20, "page_no": 10, "cluster": {"id": 20, "label": "section_header", "bbox": {"l": 144.19781494140625, "t": 327.06201171875, "r": 188.74681, "b": 337.35504150390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9098501205444336, "cells": [{"id": 36, "text": "Highlights ", "bbox": {"l": 144.88921, "t": 327.46163999999993, "r": 188.74681, "b": 336.81406, "coord_origin": "TOPLEFT"}}]}, "text": "Highlights"}, {"label": "list_item", "id": 21, "page_no": 10, "cluster": {"id": 21, "label": "list_item", "bbox": {"l": 144.4553985595703, "t": 344.037109375, "r": 242.87389000000002, "b": 358.68942, "coord_origin": "TOPLEFT"}, "confidence": 0.9571698904037476, "cells": [{"id": 37, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 346.01953, "r": 148.68732, "b": 350.60168, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.9388, "t": 345.21707, "r": 177.25424, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 176.9472, "t": 345.21707, "r": 187.11098, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 186.7914, "t": 345.21707, "r": 222.95989999999998, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 222.65912, "t": 345.21707, "r": 229.55193999999997, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "GLYPHGLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 229.2261, "t": 345.21707, "r": 242.87389000000002, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 353.04984, "r": 178.77066, "b": 358.68942, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 178.46362, "t": 353.04984, "r": 207.16908, "b": 358.68942, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH"}, {"label": "list_item", "id": 22, "page_no": 10, "cluster": {"id": 22, "label": "list_item", "bbox": {"l": 144.40879821777344, "t": 366.6461486816406, "r": 259.2287, "b": 389.2373, "coord_origin": "TOPLEFT"}, "confidence": 0.9634581804275513, "cells": [{"id": 45, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 368.73465, "r": 148.68732, "b": 373.3168, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "GLYPHGLYPHGLYPH GLYPHGLYPH", "bbox": {"l": 151.9388, "t": 367.93219, "r": 166.05655, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 165.73697, "t": 367.93219, "r": 186.40289, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPH", "bbox": {"l": 186.09586, "t": 367.93219, "r": 203.61617, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 203.30286, "t": 367.93219, "r": 211.82489, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 211.49905, "t": 367.93219, "r": 218.16002, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 217.83418, "t": 367.93219, "r": 241.30737, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 375.76495, "r": 174.46577, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 174.15874, "t": 375.76495, "r": 214.4128, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 214.11829, "t": 375.76495, "r": 221.01110999999997, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 220.68527, "t": 375.76495, "r": 247.52341000000004, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "GLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 247.21637, "t": 375.76495, "r": 259.2287, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 383.59772, "r": 184.61703, "b": 389.2373, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH"}, {"label": "list_item", "id": 23, "page_no": 10, "cluster": {"id": 23, "label": "list_item", "bbox": {"l": 144.23313903808594, "t": 397.1644592285156, "r": 249.83562, "b": 412.3861083984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9541196823120117, "cells": [{"id": 58, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 399.28265, "r": 148.68732, "b": 403.86481000000003, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "GLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.9388, "t": 398.48019, "r": 165.36099, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 165.04141, "t": 398.48019, "r": 173.56345, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 173.23761, "t": 398.48019, "r": 185.95174, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 185.63216, "t": 398.48019, "r": 204.42448, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 204.11118, "t": 398.48019, "r": 235.29178, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 234.99099999999999, "t": 398.48019, "r": 249.83562, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 406.31296, "r": 173.41306, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 173.10602, "t": 406.31296, "r": 185.0118, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 184.69221, "t": 406.31296, "r": 206.3858, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 206.07249, "t": 406.31296, "r": 228.24231000000003, "b": 411.95255, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH"}, {"label": "list_item", "id": 24, "page_no": 10, "cluster": {"id": 24, "label": "list_item", "bbox": {"l": 144.35208129882812, "t": 420.17449951171875, "r": 234.25163000000003, "b": 434.66763, "coord_origin": "TOPLEFT"}, "confidence": 0.9440370798110962, "cells": [{"id": 69, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 421.99773999999996, "r": 148.68732, "b": 426.5799, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "GLYPH", "bbox": {"l": 151.9388, "t": 421.1952800000001, "r": 155.43533, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 154.73979, "t": 421.1952800000001, "r": 166.06282, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 165.74324, "t": 421.1952800000001, "r": 195.84607, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 195.53903, "t": 421.1952800000001, "r": 202.43185, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 202.10602, "t": 421.1952800000001, "r": 222.87220999999997, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 222.55890000000002, "t": 421.1952800000001, "r": 229.57077, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "GLYPH GLYPH", "bbox": {"l": 229.24492999999998, "t": 421.1952800000001, "r": 234.25163000000003, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.92627, "t": 429.02805, "r": 181.42754, "b": 434.66763, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 181.1205, "t": 429.02805, "r": 201.07835, "b": 434.66763, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 200.76505, "t": 429.02805, "r": 207.65787, "b": 434.66763, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 207.33203, "t": 429.02805, "r": 232.07098000000002, "b": 434.66763, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH"}, {"label": "picture", "id": 25, "page_no": 10, "cluster": {"id": 25, "label": "picture", "bbox": {"l": 64.16704559326172, "t": 603.50634765625, "r": 258.77435302734375, "b": 688.1282348632812, "coord_origin": "TOPLEFT"}, "confidence": 0.8925828337669373, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 26, "page_no": 10, "cluster": {"id": 26, "label": "picture", "bbox": {"l": 143.39866638183594, "t": 270.2610778808594, "r": 179.56256103515625, "b": 285.621337890625, "coord_origin": "TOPLEFT"}, "confidence": 0.7491760849952698, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": []}}, {"page_no": 11, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "T", "bbox": {"l": 215.64, "t": 288.25800000000004, "r": 221.13898999999998, "b": 296.58301, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Please Recycle", "bbox": {"l": 334.10629, "t": 364.33957, "r": 375.92691, "b": 369.9791599999999, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "\u00a9 Copyright IBM Corporation 2013 ", "bbox": {"l": 309.84811, "t": 209.41382, "r": 409.85666, "b": 215.64868, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "IBM Corporation ", "bbox": {"l": 309.84811, "t": 224.69079999999997, "r": 358.21817, "b": 230.92566, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Route 100 ", "bbox": {"l": 309.84811, "t": 232.32928000000004, "r": 338.69644, "b": 238.56415000000004, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Somers, NY 10589 ", "bbox": {"l": 309.84811, "t": 239.96776999999997, "r": 361.2178, "b": 246.20263999999997, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Produced in the United States of America ", "bbox": {"l": 309.84811, "t": 255.24474999999995, "r": 420.78116, "b": 261.47961, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "March 2013", "bbox": {"l": 309.84811, "t": 262.88324, "r": 341.69293, "b": 269.1181, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "IBM, the IBM logo, ibm.com, DB2 and Power Systems are trademarks of ", "bbox": {"l": 309.84811, "t": 276.16132000000005, "r": 503.2311700000001, "b": 282.39615, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "International Business Machines Corp., registered in many jurisdictions ", "bbox": {"l": 309.84811, "t": 283.79977, "r": 498.7258, "b": 290.03464, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "worldwide. Other product and service names might be trademarks of IBM ", "bbox": {"l": 309.84811, "t": 291.43825999999996, "r": 505.15802, "b": 297.67313, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "or other companies. A current list of IBM trademarks is available on the ", "bbox": {"l": 309.84811, "t": 299.07675, "r": 498.79224, "b": 305.31161, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "web at \u201cCopyright and trademark information\u201d at ", "bbox": {"l": 309.84811, "t": 306.71524, "r": 441.21148999999997, "b": 312.9501, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "www.ibm.com/legal/", "bbox": {"l": 441.18231, "t": 306.716, "r": 495.3586399999999, "b": 312.95087, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "copytrade.shtml", "bbox": {"l": 309.84903, "t": 314.35449, "r": 351.96103, "b": 320.58936000000006, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": ".", "bbox": {"l": 351.95099, "t": 314.35452, "r": 353.57394, "b": 320.58939, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "This document is current as of the initial date of publication and may be ", "bbox": {"l": 309.84839, "t": 327.6326, "r": 500.27194000000003, "b": 333.86746, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "changed by IBM at any time.", "bbox": {"l": 309.84839, "t": 335.27109, "r": 385.69885, "b": 341.5059499999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Not all offerings are available in every country in which IBM operates.", "bbox": {"l": 309.84839, "t": 348.54916, "r": 494.23822, "b": 354.78403, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "QLS12392-USEN-00", "bbox": {"l": 446.87051, "t": 667.52232, "r": 504.82294, "b": 673.75719, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "What you can expect", "bbox": {"l": 94.132698, "t": 158.87023999999997, "r": 193.95432, "b": 167.88428, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Depending on the engagement, our team of consultants offer:", "bbox": {"l": 94.132698, "t": 170.36443999999995, "r": 283.61542, "b": 177.76842999999997, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "r ", "bbox": {"l": 94.132698, "t": 191.96851000000004, "r": 97.991905, "b": 197.17693999999995, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Briefings, consulting and guidance on demand", "bbox": {"l": 101.1822, "t": 190.13440000000003, "r": 243.08588, "b": 197.53839000000005, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "r ", "bbox": {"l": 94.132698, "t": 202.15125, "r": 97.991905, "b": 207.35968000000003, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Illumination of the DB2 for i capabilities and leadership to ", "bbox": {"l": 101.1822, "t": 200.31714, "r": 282.72513, "b": 207.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "exploit them", "bbox": {"l": 101.1822, "t": 210.49670000000003, "r": 139.83179, "b": 217.90070000000003, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "r ", "bbox": {"l": 94.132698, "t": 222.51653999999996, "r": 97.991905, "b": 227.72497999999996, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Analysis and remediation of performance and scalability ", "bbox": {"l": 101.1822, "t": 220.68242999999995, "r": 274.40585, "b": 228.08642999999995, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "issues caused by inefficient database design and ", "bbox": {"l": 101.1822, "t": 230.86199999999997, "r": 247.29761000000002, "b": 238.26599, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "implementation", "bbox": {"l": 101.1822, "t": 241.04156, "r": 150.16017, "b": 248.44556, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "r ", "bbox": {"l": 94.132698, "t": 253.06444999999997, "r": 97.991905, "b": 258.27288999999996, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Configuration of systems, operating system and products to ", "bbox": {"l": 101.1822, "t": 251.23035000000004, "r": 285.81323, "b": 258.63433999999995, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "fully leverage database capabilities", "bbox": {"l": 101.1822, "t": 261.40990999999997, "r": 205.6864, "b": 268.8139, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Key client benefits", "bbox": {"l": 94.132698, "t": 283.59973, "r": 179.10327, "b": 292.61377, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Gain greater database and application performance within ", "bbox": {"l": 94.132698, "t": 295.09406, "r": 278.48099, "b": 302.49805, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "your current environment. Achieve greater productivity in ", "bbox": {"l": 94.132698, "t": 305.27362, "r": 278.63724, "b": 312.67761, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "the development and maintenance of database and ", "bbox": {"l": 94.132698, "t": 315.45319, "r": 254.08875, "b": 322.85718, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "applications using modern techniques. Architect and design ", "bbox": {"l": 94.132698, "t": 325.63275, "r": 282.49176, "b": 333.03674, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "data structures to accommodate and benefit from business ", "bbox": {"l": 94.132698, "t": 335.81232, "r": 278.16846, "b": 343.2163100000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "analytics (BA) tools and processes.", "bbox": {"l": 94.132698, "t": 345.99188, "r": 201.30829, "b": 353.39587, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "For more information", "bbox": {"l": 94.132698, "t": 366.03223, "r": 192.12144, "b": 375.04626, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Pricing depends on the scope of work. Learn more about ", "bbox": {"l": 94.132698, "t": 377.52646, "r": 274.90921, "b": 384.93045, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "the DB2 for i Center of Excellence and other related ", "bbox": {"l": 94.132698, "t": 387.70602, "r": 261.67877, "b": 395.11002, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "products and services. Contact ", "bbox": {"l": 94.132698, "t": 397.88559, "r": 191.79845, "b": 405.28958, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "stgls@us.ibm.com", "bbox": {"l": 191.79829, "t": 397.88544, "r": 248.03143000000003, "b": 405.2894299999999, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": " or visit:", "bbox": {"l": 248.03080999999997, "t": 397.88544, "r": 273.51691, "b": 405.2894299999999, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "ibm.com", "bbox": {"l": 94.132698, "t": 418.29114, "r": 123.09909000000002, "b": 424.70621, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 123.09909000000002, "t": 418.50967, "r": 216.45563, "b": 424.85425, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "text", "bbox": {"l": 93.23255920410156, "t": 288.25800000000004, "r": 282.49176, "b": 353.5527038574219, "coord_origin": "TOPLEFT"}, "confidence": 0.9835546612739563, "cells": [{"id": 0, "text": "T", "bbox": {"l": 215.64, "t": 288.25800000000004, "r": 221.13898999999998, "b": 296.58301, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Gain greater database and application performance within ", "bbox": {"l": 94.132698, "t": 295.09406, "r": 278.48099, "b": 302.49805, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "your current environment. Achieve greater productivity in ", "bbox": {"l": 94.132698, "t": 305.27362, "r": 278.63724, "b": 312.67761, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "the development and maintenance of database and ", "bbox": {"l": 94.132698, "t": 315.45319, "r": 254.08875, "b": 322.85718, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "applications using modern techniques. Architect and design ", "bbox": {"l": 94.132698, "t": 325.63275, "r": 282.49176, "b": 333.03674, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "data structures to accommodate and benefit from business ", "bbox": {"l": 94.132698, "t": 335.81232, "r": 278.16846, "b": 343.2163100000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "analytics (BA) tools and processes.", "bbox": {"l": 94.132698, "t": 345.99188, "r": 201.30829, "b": 353.39587, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "text", "bbox": {"l": 333.32159423828125, "t": 363.5240173339844, "r": 375.9523010253906, "b": 370.23272705078125, "coord_origin": "TOPLEFT"}, "confidence": 0.7944505214691162, "cells": [{"id": 1, "text": "Please Recycle", "bbox": {"l": 334.10629, "t": 364.33957, "r": 375.92691, "b": 369.9791599999999, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 309.5291748046875, "t": 208.71022033691406, "r": 409.85666, "b": 215.99896240234375, "coord_origin": "TOPLEFT"}, "confidence": 0.8416581153869629, "cells": [{"id": 2, "text": "\u00a9 Copyright IBM Corporation 2013 ", "bbox": {"l": 309.84811, "t": 209.41382, "r": 409.85666, "b": 215.64868, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 309.4497985839844, "t": 223.8454132080078, "r": 361.2178, "b": 246.20263999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.6710495352745056, "cells": [{"id": 3, "text": "IBM Corporation ", "bbox": {"l": 309.84811, "t": 224.69079999999997, "r": 358.21817, "b": 230.92566, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Route 100 ", "bbox": {"l": 309.84811, "t": 232.32928000000004, "r": 338.69644, "b": 238.56415000000004, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Somers, NY 10589 ", "bbox": {"l": 309.84811, "t": 239.96776999999997, "r": 361.2178, "b": 246.20263999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 309.4351501464844, "t": 254.4227752685547, "r": 420.78116, "b": 269.1181, "coord_origin": "TOPLEFT"}, "confidence": 0.7655534744262695, "cells": [{"id": 6, "text": "Produced in the United States of America ", "bbox": {"l": 309.84811, "t": 255.24474999999995, "r": 420.78116, "b": 261.47961, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "March 2013", "bbox": {"l": 309.84811, "t": 262.88324, "r": 341.69293, "b": 269.1181, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 309.1927795410156, "t": 275.1529541015625, "r": 505.15802, "b": 320.81719970703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9793416857719421, "cells": [{"id": 8, "text": "IBM, the IBM logo, ibm.com, DB2 and Power Systems are trademarks of ", "bbox": {"l": 309.84811, "t": 276.16132000000005, "r": 503.2311700000001, "b": 282.39615, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "International Business Machines Corp., registered in many jurisdictions ", "bbox": {"l": 309.84811, "t": 283.79977, "r": 498.7258, "b": 290.03464, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "worldwide. Other product and service names might be trademarks of IBM ", "bbox": {"l": 309.84811, "t": 291.43825999999996, "r": 505.15802, "b": 297.67313, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "or other companies. A current list of IBM trademarks is available on the ", "bbox": {"l": 309.84811, "t": 299.07675, "r": 498.79224, "b": 305.31161, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "web at \u201cCopyright and trademark information\u201d at ", "bbox": {"l": 309.84811, "t": 306.71524, "r": 441.21148999999997, "b": 312.9501, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "www.ibm.com/legal/", "bbox": {"l": 441.18231, "t": 306.716, "r": 495.3586399999999, "b": 312.95087, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "copytrade.shtml", "bbox": {"l": 309.84903, "t": 314.35449, "r": 351.96103, "b": 320.58936000000006, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": ".", "bbox": {"l": 351.95099, "t": 314.35452, "r": 353.57394, "b": 320.58939, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 309.322998046875, "t": 327.22723388671875, "r": 500.27194000000003, "b": 341.859130859375, "coord_origin": "TOPLEFT"}, "confidence": 0.9277064204216003, "cells": [{"id": 16, "text": "This document is current as of the initial date of publication and may be ", "bbox": {"l": 309.84839, "t": 327.6326, "r": 500.27194000000003, "b": 333.86746, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "changed by IBM at any time.", "bbox": {"l": 309.84839, "t": 335.27109, "r": 385.69885, "b": 341.5059499999999, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 309.2567138671875, "t": 347.97686767578125, "r": 494.2681884765625, "b": 355.2289733886719, "coord_origin": "TOPLEFT"}, "confidence": 0.9116950035095215, "cells": [{"id": 18, "text": "Not all offerings are available in every country in which IBM operates.", "bbox": {"l": 309.84839, "t": 348.54916, "r": 494.23822, "b": 354.78403, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 446.00567626953125, "t": 666.8178100585938, "r": 504.98651123046875, "b": 673.75719, "coord_origin": "TOPLEFT"}, "confidence": 0.7542392015457153, "cells": [{"id": 19, "text": "QLS12392-USEN-00", "bbox": {"l": 446.87051, "t": 667.52232, "r": 504.82294, "b": 673.75719, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "section_header", "bbox": {"l": 93.356689453125, "t": 158.2716064453125, "r": 193.95432, "b": 167.88428, "coord_origin": "TOPLEFT"}, "confidence": 0.9251776337623596, "cells": [{"id": 20, "text": "What you can expect", "bbox": {"l": 94.132698, "t": 158.87023999999997, "r": 193.95432, "b": 167.88428, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 93.58877563476562, "t": 170.04763793945312, "r": 283.61542, "b": 177.87142944335938, "coord_origin": "TOPLEFT"}, "confidence": 0.9153581857681274, "cells": [{"id": 21, "text": "Depending on the engagement, our team of consultants offer:", "bbox": {"l": 94.132698, "t": 170.36443999999995, "r": 283.61542, "b": 177.76842999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 93.6685562133789, "t": 189.83038330078125, "r": 243.1177520751953, "b": 198.0092010498047, "coord_origin": "TOPLEFT"}, "confidence": 0.9365891814231873, "cells": [{"id": 22, "text": "r ", "bbox": {"l": 94.132698, "t": 191.96851000000004, "r": 97.991905, "b": 197.17693999999995, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Briefings, consulting and guidance on demand", "bbox": {"l": 101.1822, "t": 190.13440000000003, "r": 243.08588, "b": 197.53839000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "list_item", "bbox": {"l": 93.72789001464844, "t": 199.86427307128906, "r": 282.72513, "b": 217.90070000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9610549211502075, "cells": [{"id": 24, "text": "r ", "bbox": {"l": 94.132698, "t": 202.15125, "r": 97.991905, "b": 207.35968000000003, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Illumination of the DB2 for i capabilities and leadership to ", "bbox": {"l": 101.1822, "t": 200.31714, "r": 282.72513, "b": 207.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "exploit them", "bbox": {"l": 101.1822, "t": 210.49670000000003, "r": 139.83179, "b": 217.90070000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "list_item", "bbox": {"l": 93.56942749023438, "t": 220.2848358154297, "r": 274.40585, "b": 248.44556, "coord_origin": "TOPLEFT"}, "confidence": 0.9730463027954102, "cells": [{"id": 27, "text": "r ", "bbox": {"l": 94.132698, "t": 222.51653999999996, "r": 97.991905, "b": 227.72497999999996, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Analysis and remediation of performance and scalability ", "bbox": {"l": 101.1822, "t": 220.68242999999995, "r": 274.40585, "b": 228.08642999999995, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "issues caused by inefficient database design and ", "bbox": {"l": 101.1822, "t": 230.86199999999997, "r": 247.29761000000002, "b": 238.26599, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "implementation", "bbox": {"l": 101.1822, "t": 241.04156, "r": 150.16017, "b": 248.44556, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "list_item", "bbox": {"l": 93.60421752929688, "t": 250.44761657714844, "r": 285.81323, "b": 269.4346618652344, "coord_origin": "TOPLEFT"}, "confidence": 0.9686199426651001, "cells": [{"id": 31, "text": "r ", "bbox": {"l": 94.132698, "t": 253.06444999999997, "r": 97.991905, "b": 258.27288999999996, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Configuration of systems, operating system and products to ", "bbox": {"l": 101.1822, "t": 251.23035000000004, "r": 285.81323, "b": 258.63433999999995, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "fully leverage database capabilities", "bbox": {"l": 101.1822, "t": 261.40990999999997, "r": 205.6864, "b": 268.8139, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "section_header", "bbox": {"l": 93.41441345214844, "t": 282.9095458984375, "r": 179.16822814941406, "b": 292.61377, "coord_origin": "TOPLEFT"}, "confidence": 0.9390802979469299, "cells": [{"id": 34, "text": "Key client benefits", "bbox": {"l": 94.132698, "t": 283.59973, "r": 179.10327, "b": 292.61377, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "section_header", "bbox": {"l": 93.40412902832031, "t": 365.70770263671875, "r": 192.24819946289062, "b": 375.04626, "coord_origin": "TOPLEFT"}, "confidence": 0.9252138733863831, "cells": [{"id": 41, "text": "For more information", "bbox": {"l": 94.132698, "t": 366.03223, "r": 192.12144, "b": 375.04626, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "text", "bbox": {"l": 93.551025390625, "t": 376.95263671875, "r": 274.90921, "b": 405.5931396484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9603047966957092, "cells": [{"id": 42, "text": "Pricing depends on the scope of work. Learn more about ", "bbox": {"l": 94.132698, "t": 377.52646, "r": 274.90921, "b": 384.93045, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "the DB2 for i Center of Excellence and other related ", "bbox": {"l": 94.132698, "t": 387.70602, "r": 261.67877, "b": 395.11002, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "products and services. Contact ", "bbox": {"l": 94.132698, "t": 397.88559, "r": 191.79845, "b": 405.28958, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "stgls@us.ibm.com", "bbox": {"l": 191.79829, "t": 397.88544, "r": 248.03143000000003, "b": 405.2894299999999, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": " or visit:", "bbox": {"l": 248.03080999999997, "t": 397.88544, "r": 273.51691, "b": 405.2894299999999, "coord_origin": "TOPLEFT"}}]}, {"id": 18, "label": "text", "bbox": {"l": 93.61650085449219, "t": 417.3977966308594, "r": 216.61273193359375, "b": 424.85425, "coord_origin": "TOPLEFT"}, "confidence": 0.8876497745513916, "cells": [{"id": 47, "text": "ibm.com", "bbox": {"l": 94.132698, "t": 418.29114, "r": 123.09909000000002, "b": 424.70621, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 123.09909000000002, "t": 418.50967, "r": 216.45563, "b": 424.85425, "coord_origin": "TOPLEFT"}}]}, {"id": 19, "label": "picture", "bbox": {"l": 309.1715087890625, "t": 157.70965576171875, "r": 372.07818603515625, "b": 183.2933349609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9477246999740601, "cells": []}, {"id": 20, "label": "picture", "bbox": {"l": 309.91729736328125, "t": 357.83355712890625, "r": 327.7751159667969, "b": 376.003662109375, "coord_origin": "TOPLEFT"}, "confidence": 0.907178521156311, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "text", "id": 0, "page_no": 11, "cluster": {"id": 0, "label": "text", "bbox": {"l": 93.23255920410156, "t": 288.25800000000004, "r": 282.49176, "b": 353.5527038574219, "coord_origin": "TOPLEFT"}, "confidence": 0.9835546612739563, "cells": [{"id": 0, "text": "T", "bbox": {"l": 215.64, "t": 288.25800000000004, "r": 221.13898999999998, "b": 296.58301, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Gain greater database and application performance within ", "bbox": {"l": 94.132698, "t": 295.09406, "r": 278.48099, "b": 302.49805, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "your current environment. Achieve greater productivity in ", "bbox": {"l": 94.132698, "t": 305.27362, "r": 278.63724, "b": 312.67761, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "the development and maintenance of database and ", "bbox": {"l": 94.132698, "t": 315.45319, "r": 254.08875, "b": 322.85718, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "applications using modern techniques. Architect and design ", "bbox": {"l": 94.132698, "t": 325.63275, "r": 282.49176, "b": 333.03674, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "data structures to accommodate and benefit from business ", "bbox": {"l": 94.132698, "t": 335.81232, "r": 278.16846, "b": 343.2163100000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "analytics (BA) tools and processes.", "bbox": {"l": 94.132698, "t": 345.99188, "r": 201.30829, "b": 353.39587, "coord_origin": "TOPLEFT"}}]}, "text": "T Gain greater database and application performance within your current environment. Achieve greater productivity in the development and maintenance of database and applications using modern techniques. Architect and design data structures to accommodate and benefit from business analytics (BA) tools and processes."}, {"label": "text", "id": 1, "page_no": 11, "cluster": {"id": 1, "label": "text", "bbox": {"l": 333.32159423828125, "t": 363.5240173339844, "r": 375.9523010253906, "b": 370.23272705078125, "coord_origin": "TOPLEFT"}, "confidence": 0.7944505214691162, "cells": [{"id": 1, "text": "Please Recycle", "bbox": {"l": 334.10629, "t": 364.33957, "r": 375.92691, "b": 369.9791599999999, "coord_origin": "TOPLEFT"}}]}, "text": "Please Recycle"}, {"label": "text", "id": 2, "page_no": 11, "cluster": {"id": 2, "label": "text", "bbox": {"l": 309.5291748046875, "t": 208.71022033691406, "r": 409.85666, "b": 215.99896240234375, "coord_origin": "TOPLEFT"}, "confidence": 0.8416581153869629, "cells": [{"id": 2, "text": "\u00a9 Copyright IBM Corporation 2013 ", "bbox": {"l": 309.84811, "t": 209.41382, "r": 409.85666, "b": 215.64868, "coord_origin": "TOPLEFT"}}]}, "text": "\u00a9 Copyright IBM Corporation 2013"}, {"label": "text", "id": 3, "page_no": 11, "cluster": {"id": 3, "label": "text", "bbox": {"l": 309.4497985839844, "t": 223.8454132080078, "r": 361.2178, "b": 246.20263999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.6710495352745056, "cells": [{"id": 3, "text": "IBM Corporation ", "bbox": {"l": 309.84811, "t": 224.69079999999997, "r": 358.21817, "b": 230.92566, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Route 100 ", "bbox": {"l": 309.84811, "t": 232.32928000000004, "r": 338.69644, "b": 238.56415000000004, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Somers, NY 10589 ", "bbox": {"l": 309.84811, "t": 239.96776999999997, "r": 361.2178, "b": 246.20263999999997, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Corporation Route 100 Somers, NY 10589"}, {"label": "text", "id": 4, "page_no": 11, "cluster": {"id": 4, "label": "text", "bbox": {"l": 309.4351501464844, "t": 254.4227752685547, "r": 420.78116, "b": 269.1181, "coord_origin": "TOPLEFT"}, "confidence": 0.7655534744262695, "cells": [{"id": 6, "text": "Produced in the United States of America ", "bbox": {"l": 309.84811, "t": 255.24474999999995, "r": 420.78116, "b": 261.47961, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "March 2013", "bbox": {"l": 309.84811, "t": 262.88324, "r": 341.69293, "b": 269.1181, "coord_origin": "TOPLEFT"}}]}, "text": "Produced in the United States of America March 2013"}, {"label": "text", "id": 5, "page_no": 11, "cluster": {"id": 5, "label": "text", "bbox": {"l": 309.1927795410156, "t": 275.1529541015625, "r": 505.15802, "b": 320.81719970703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9793416857719421, "cells": [{"id": 8, "text": "IBM, the IBM logo, ibm.com, DB2 and Power Systems are trademarks of ", "bbox": {"l": 309.84811, "t": 276.16132000000005, "r": 503.2311700000001, "b": 282.39615, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "International Business Machines Corp., registered in many jurisdictions ", "bbox": {"l": 309.84811, "t": 283.79977, "r": 498.7258, "b": 290.03464, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "worldwide. Other product and service names might be trademarks of IBM ", "bbox": {"l": 309.84811, "t": 291.43825999999996, "r": 505.15802, "b": 297.67313, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "or other companies. A current list of IBM trademarks is available on the ", "bbox": {"l": 309.84811, "t": 299.07675, "r": 498.79224, "b": 305.31161, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "web at \u201cCopyright and trademark information\u201d at ", "bbox": {"l": 309.84811, "t": 306.71524, "r": 441.21148999999997, "b": 312.9501, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "www.ibm.com/legal/", "bbox": {"l": 441.18231, "t": 306.716, "r": 495.3586399999999, "b": 312.95087, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "copytrade.shtml", "bbox": {"l": 309.84903, "t": 314.35449, "r": 351.96103, "b": 320.58936000000006, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": ".", "bbox": {"l": 351.95099, "t": 314.35452, "r": 353.57394, "b": 320.58939, "coord_origin": "TOPLEFT"}}]}, "text": "IBM, the IBM logo, ibm.com, DB2 and Power Systems are trademarks of International Business Machines Corp., registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the web at \u201cCopyright and trademark information\u201d at www.ibm.com/legal/ copytrade.shtml ."}, {"label": "text", "id": 6, "page_no": 11, "cluster": {"id": 6, "label": "text", "bbox": {"l": 309.322998046875, "t": 327.22723388671875, "r": 500.27194000000003, "b": 341.859130859375, "coord_origin": "TOPLEFT"}, "confidence": 0.9277064204216003, "cells": [{"id": 16, "text": "This document is current as of the initial date of publication and may be ", "bbox": {"l": 309.84839, "t": 327.6326, "r": 500.27194000000003, "b": 333.86746, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "changed by IBM at any time.", "bbox": {"l": 309.84839, "t": 335.27109, "r": 385.69885, "b": 341.5059499999999, "coord_origin": "TOPLEFT"}}]}, "text": "This document is current as of the initial date of publication and may be changed by IBM at any time."}, {"label": "text", "id": 7, "page_no": 11, "cluster": {"id": 7, "label": "text", "bbox": {"l": 309.2567138671875, "t": 347.97686767578125, "r": 494.2681884765625, "b": 355.2289733886719, "coord_origin": "TOPLEFT"}, "confidence": 0.9116950035095215, "cells": [{"id": 18, "text": "Not all offerings are available in every country in which IBM operates.", "bbox": {"l": 309.84839, "t": 348.54916, "r": 494.23822, "b": 354.78403, "coord_origin": "TOPLEFT"}}]}, "text": "Not all offerings are available in every country in which IBM operates."}, {"label": "text", "id": 8, "page_no": 11, "cluster": {"id": 8, "label": "text", "bbox": {"l": 446.00567626953125, "t": 666.8178100585938, "r": 504.98651123046875, "b": 673.75719, "coord_origin": "TOPLEFT"}, "confidence": 0.7542392015457153, "cells": [{"id": 19, "text": "QLS12392-USEN-00", "bbox": {"l": 446.87051, "t": 667.52232, "r": 504.82294, "b": 673.75719, "coord_origin": "TOPLEFT"}}]}, "text": "QLS12392-USEN-00"}, {"label": "section_header", "id": 9, "page_no": 11, "cluster": {"id": 9, "label": "section_header", "bbox": {"l": 93.356689453125, "t": 158.2716064453125, "r": 193.95432, "b": 167.88428, "coord_origin": "TOPLEFT"}, "confidence": 0.9251776337623596, "cells": [{"id": 20, "text": "What you can expect", "bbox": {"l": 94.132698, "t": 158.87023999999997, "r": 193.95432, "b": 167.88428, "coord_origin": "TOPLEFT"}}]}, "text": "What you can expect"}, {"label": "text", "id": 10, "page_no": 11, "cluster": {"id": 10, "label": "text", "bbox": {"l": 93.58877563476562, "t": 170.04763793945312, "r": 283.61542, "b": 177.87142944335938, "coord_origin": "TOPLEFT"}, "confidence": 0.9153581857681274, "cells": [{"id": 21, "text": "Depending on the engagement, our team of consultants offer:", "bbox": {"l": 94.132698, "t": 170.36443999999995, "r": 283.61542, "b": 177.76842999999997, "coord_origin": "TOPLEFT"}}]}, "text": "Depending on the engagement, our team of consultants offer:"}, {"label": "list_item", "id": 11, "page_no": 11, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 93.6685562133789, "t": 189.83038330078125, "r": 243.1177520751953, "b": 198.0092010498047, "coord_origin": "TOPLEFT"}, "confidence": 0.9365891814231873, "cells": [{"id": 22, "text": "r ", "bbox": {"l": 94.132698, "t": 191.96851000000004, "r": 97.991905, "b": 197.17693999999995, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Briefings, consulting and guidance on demand", "bbox": {"l": 101.1822, "t": 190.13440000000003, "r": 243.08588, "b": 197.53839000000005, "coord_origin": "TOPLEFT"}}]}, "text": "r Briefings, consulting and guidance on demand"}, {"label": "list_item", "id": 12, "page_no": 11, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 93.72789001464844, "t": 199.86427307128906, "r": 282.72513, "b": 217.90070000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9610549211502075, "cells": [{"id": 24, "text": "r ", "bbox": {"l": 94.132698, "t": 202.15125, "r": 97.991905, "b": 207.35968000000003, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Illumination of the DB2 for i capabilities and leadership to ", "bbox": {"l": 101.1822, "t": 200.31714, "r": 282.72513, "b": 207.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "exploit them", "bbox": {"l": 101.1822, "t": 210.49670000000003, "r": 139.83179, "b": 217.90070000000003, "coord_origin": "TOPLEFT"}}]}, "text": "r Illumination of the DB2 for i capabilities and leadership to exploit them"}, {"label": "list_item", "id": 13, "page_no": 11, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 93.56942749023438, "t": 220.2848358154297, "r": 274.40585, "b": 248.44556, "coord_origin": "TOPLEFT"}, "confidence": 0.9730463027954102, "cells": [{"id": 27, "text": "r ", "bbox": {"l": 94.132698, "t": 222.51653999999996, "r": 97.991905, "b": 227.72497999999996, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Analysis and remediation of performance and scalability ", "bbox": {"l": 101.1822, "t": 220.68242999999995, "r": 274.40585, "b": 228.08642999999995, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "issues caused by inefficient database design and ", "bbox": {"l": 101.1822, "t": 230.86199999999997, "r": 247.29761000000002, "b": 238.26599, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "implementation", "bbox": {"l": 101.1822, "t": 241.04156, "r": 150.16017, "b": 248.44556, "coord_origin": "TOPLEFT"}}]}, "text": "r Analysis and remediation of performance and scalability issues caused by inefficient database design and implementation"}, {"label": "list_item", "id": 14, "page_no": 11, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 93.60421752929688, "t": 250.44761657714844, "r": 285.81323, "b": 269.4346618652344, "coord_origin": "TOPLEFT"}, "confidence": 0.9686199426651001, "cells": [{"id": 31, "text": "r ", "bbox": {"l": 94.132698, "t": 253.06444999999997, "r": 97.991905, "b": 258.27288999999996, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Configuration of systems, operating system and products to ", "bbox": {"l": 101.1822, "t": 251.23035000000004, "r": 285.81323, "b": 258.63433999999995, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "fully leverage database capabilities", "bbox": {"l": 101.1822, "t": 261.40990999999997, "r": 205.6864, "b": 268.8139, "coord_origin": "TOPLEFT"}}]}, "text": "r Configuration of systems, operating system and products to fully leverage database capabilities"}, {"label": "section_header", "id": 15, "page_no": 11, "cluster": {"id": 15, "label": "section_header", "bbox": {"l": 93.41441345214844, "t": 282.9095458984375, "r": 179.16822814941406, "b": 292.61377, "coord_origin": "TOPLEFT"}, "confidence": 0.9390802979469299, "cells": [{"id": 34, "text": "Key client benefits", "bbox": {"l": 94.132698, "t": 283.59973, "r": 179.10327, "b": 292.61377, "coord_origin": "TOPLEFT"}}]}, "text": "Key client benefits"}, {"label": "section_header", "id": 16, "page_no": 11, "cluster": {"id": 16, "label": "section_header", "bbox": {"l": 93.40412902832031, "t": 365.70770263671875, "r": 192.24819946289062, "b": 375.04626, "coord_origin": "TOPLEFT"}, "confidence": 0.9252138733863831, "cells": [{"id": 41, "text": "For more information", "bbox": {"l": 94.132698, "t": 366.03223, "r": 192.12144, "b": 375.04626, "coord_origin": "TOPLEFT"}}]}, "text": "For more information"}, {"label": "text", "id": 17, "page_no": 11, "cluster": {"id": 17, "label": "text", "bbox": {"l": 93.551025390625, "t": 376.95263671875, "r": 274.90921, "b": 405.5931396484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9603047966957092, "cells": [{"id": 42, "text": "Pricing depends on the scope of work. Learn more about ", "bbox": {"l": 94.132698, "t": 377.52646, "r": 274.90921, "b": 384.93045, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "the DB2 for i Center of Excellence and other related ", "bbox": {"l": 94.132698, "t": 387.70602, "r": 261.67877, "b": 395.11002, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "products and services. Contact ", "bbox": {"l": 94.132698, "t": 397.88559, "r": 191.79845, "b": 405.28958, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "stgls@us.ibm.com", "bbox": {"l": 191.79829, "t": 397.88544, "r": 248.03143000000003, "b": 405.2894299999999, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": " or visit:", "bbox": {"l": 248.03080999999997, "t": 397.88544, "r": 273.51691, "b": 405.2894299999999, "coord_origin": "TOPLEFT"}}]}, "text": "Pricing depends on the scope of work. Learn more about the DB2 for i Center of Excellence and other related products and services. Contact stgls@us.ibm.com or visit:"}, {"label": "text", "id": 18, "page_no": 11, "cluster": {"id": 18, "label": "text", "bbox": {"l": 93.61650085449219, "t": 417.3977966308594, "r": 216.61273193359375, "b": 424.85425, "coord_origin": "TOPLEFT"}, "confidence": 0.8876497745513916, "cells": [{"id": 47, "text": "ibm.com", "bbox": {"l": 94.132698, "t": 418.29114, "r": 123.09909000000002, "b": 424.70621, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 123.09909000000002, "t": 418.50967, "r": 216.45563, "b": 424.85425, "coord_origin": "TOPLEFT"}}]}, "text": "ibm.com GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH"}, {"label": "picture", "id": 19, "page_no": 11, "cluster": {"id": 19, "label": "picture", "bbox": {"l": 309.1715087890625, "t": 157.70965576171875, "r": 372.07818603515625, "b": 183.2933349609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9477246999740601, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 20, "page_no": 11, "cluster": {"id": 20, "label": "picture", "bbox": {"l": 309.91729736328125, "t": 357.83355712890625, "r": 327.7751159667969, "b": 376.003662109375, "coord_origin": "TOPLEFT"}, "confidence": 0.907178521156311, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 0, "page_no": 11, "cluster": {"id": 0, "label": "text", "bbox": {"l": 93.23255920410156, "t": 288.25800000000004, "r": 282.49176, "b": 353.5527038574219, "coord_origin": "TOPLEFT"}, "confidence": 0.9835546612739563, "cells": [{"id": 0, "text": "T", "bbox": {"l": 215.64, "t": 288.25800000000004, "r": 221.13898999999998, "b": 296.58301, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Gain greater database and application performance within ", "bbox": {"l": 94.132698, "t": 295.09406, "r": 278.48099, "b": 302.49805, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "your current environment. Achieve greater productivity in ", "bbox": {"l": 94.132698, "t": 305.27362, "r": 278.63724, "b": 312.67761, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "the development and maintenance of database and ", "bbox": {"l": 94.132698, "t": 315.45319, "r": 254.08875, "b": 322.85718, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "applications using modern techniques. Architect and design ", "bbox": {"l": 94.132698, "t": 325.63275, "r": 282.49176, "b": 333.03674, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "data structures to accommodate and benefit from business ", "bbox": {"l": 94.132698, "t": 335.81232, "r": 278.16846, "b": 343.2163100000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "analytics (BA) tools and processes.", "bbox": {"l": 94.132698, "t": 345.99188, "r": 201.30829, "b": 353.39587, "coord_origin": "TOPLEFT"}}]}, "text": "T Gain greater database and application performance within your current environment. Achieve greater productivity in the development and maintenance of database and applications using modern techniques. Architect and design data structures to accommodate and benefit from business analytics (BA) tools and processes."}, {"label": "text", "id": 1, "page_no": 11, "cluster": {"id": 1, "label": "text", "bbox": {"l": 333.32159423828125, "t": 363.5240173339844, "r": 375.9523010253906, "b": 370.23272705078125, "coord_origin": "TOPLEFT"}, "confidence": 0.7944505214691162, "cells": [{"id": 1, "text": "Please Recycle", "bbox": {"l": 334.10629, "t": 364.33957, "r": 375.92691, "b": 369.9791599999999, "coord_origin": "TOPLEFT"}}]}, "text": "Please Recycle"}, {"label": "text", "id": 2, "page_no": 11, "cluster": {"id": 2, "label": "text", "bbox": {"l": 309.5291748046875, "t": 208.71022033691406, "r": 409.85666, "b": 215.99896240234375, "coord_origin": "TOPLEFT"}, "confidence": 0.8416581153869629, "cells": [{"id": 2, "text": "\u00a9 Copyright IBM Corporation 2013 ", "bbox": {"l": 309.84811, "t": 209.41382, "r": 409.85666, "b": 215.64868, "coord_origin": "TOPLEFT"}}]}, "text": "\u00a9 Copyright IBM Corporation 2013"}, {"label": "text", "id": 3, "page_no": 11, "cluster": {"id": 3, "label": "text", "bbox": {"l": 309.4497985839844, "t": 223.8454132080078, "r": 361.2178, "b": 246.20263999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.6710495352745056, "cells": [{"id": 3, "text": "IBM Corporation ", "bbox": {"l": 309.84811, "t": 224.69079999999997, "r": 358.21817, "b": 230.92566, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Route 100 ", "bbox": {"l": 309.84811, "t": 232.32928000000004, "r": 338.69644, "b": 238.56415000000004, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Somers, NY 10589 ", "bbox": {"l": 309.84811, "t": 239.96776999999997, "r": 361.2178, "b": 246.20263999999997, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Corporation Route 100 Somers, NY 10589"}, {"label": "text", "id": 4, "page_no": 11, "cluster": {"id": 4, "label": "text", "bbox": {"l": 309.4351501464844, "t": 254.4227752685547, "r": 420.78116, "b": 269.1181, "coord_origin": "TOPLEFT"}, "confidence": 0.7655534744262695, "cells": [{"id": 6, "text": "Produced in the United States of America ", "bbox": {"l": 309.84811, "t": 255.24474999999995, "r": 420.78116, "b": 261.47961, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "March 2013", "bbox": {"l": 309.84811, "t": 262.88324, "r": 341.69293, "b": 269.1181, "coord_origin": "TOPLEFT"}}]}, "text": "Produced in the United States of America March 2013"}, {"label": "text", "id": 5, "page_no": 11, "cluster": {"id": 5, "label": "text", "bbox": {"l": 309.1927795410156, "t": 275.1529541015625, "r": 505.15802, "b": 320.81719970703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9793416857719421, "cells": [{"id": 8, "text": "IBM, the IBM logo, ibm.com, DB2 and Power Systems are trademarks of ", "bbox": {"l": 309.84811, "t": 276.16132000000005, "r": 503.2311700000001, "b": 282.39615, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "International Business Machines Corp., registered in many jurisdictions ", "bbox": {"l": 309.84811, "t": 283.79977, "r": 498.7258, "b": 290.03464, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "worldwide. Other product and service names might be trademarks of IBM ", "bbox": {"l": 309.84811, "t": 291.43825999999996, "r": 505.15802, "b": 297.67313, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "or other companies. A current list of IBM trademarks is available on the ", "bbox": {"l": 309.84811, "t": 299.07675, "r": 498.79224, "b": 305.31161, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "web at \u201cCopyright and trademark information\u201d at ", "bbox": {"l": 309.84811, "t": 306.71524, "r": 441.21148999999997, "b": 312.9501, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "www.ibm.com/legal/", "bbox": {"l": 441.18231, "t": 306.716, "r": 495.3586399999999, "b": 312.95087, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "copytrade.shtml", "bbox": {"l": 309.84903, "t": 314.35449, "r": 351.96103, "b": 320.58936000000006, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": ".", "bbox": {"l": 351.95099, "t": 314.35452, "r": 353.57394, "b": 320.58939, "coord_origin": "TOPLEFT"}}]}, "text": "IBM, the IBM logo, ibm.com, DB2 and Power Systems are trademarks of International Business Machines Corp., registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the web at \u201cCopyright and trademark information\u201d at www.ibm.com/legal/ copytrade.shtml ."}, {"label": "text", "id": 6, "page_no": 11, "cluster": {"id": 6, "label": "text", "bbox": {"l": 309.322998046875, "t": 327.22723388671875, "r": 500.27194000000003, "b": 341.859130859375, "coord_origin": "TOPLEFT"}, "confidence": 0.9277064204216003, "cells": [{"id": 16, "text": "This document is current as of the initial date of publication and may be ", "bbox": {"l": 309.84839, "t": 327.6326, "r": 500.27194000000003, "b": 333.86746, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "changed by IBM at any time.", "bbox": {"l": 309.84839, "t": 335.27109, "r": 385.69885, "b": 341.5059499999999, "coord_origin": "TOPLEFT"}}]}, "text": "This document is current as of the initial date of publication and may be changed by IBM at any time."}, {"label": "text", "id": 7, "page_no": 11, "cluster": {"id": 7, "label": "text", "bbox": {"l": 309.2567138671875, "t": 347.97686767578125, "r": 494.2681884765625, "b": 355.2289733886719, "coord_origin": "TOPLEFT"}, "confidence": 0.9116950035095215, "cells": [{"id": 18, "text": "Not all offerings are available in every country in which IBM operates.", "bbox": {"l": 309.84839, "t": 348.54916, "r": 494.23822, "b": 354.78403, "coord_origin": "TOPLEFT"}}]}, "text": "Not all offerings are available in every country in which IBM operates."}, {"label": "text", "id": 8, "page_no": 11, "cluster": {"id": 8, "label": "text", "bbox": {"l": 446.00567626953125, "t": 666.8178100585938, "r": 504.98651123046875, "b": 673.75719, "coord_origin": "TOPLEFT"}, "confidence": 0.7542392015457153, "cells": [{"id": 19, "text": "QLS12392-USEN-00", "bbox": {"l": 446.87051, "t": 667.52232, "r": 504.82294, "b": 673.75719, "coord_origin": "TOPLEFT"}}]}, "text": "QLS12392-USEN-00"}, {"label": "section_header", "id": 9, "page_no": 11, "cluster": {"id": 9, "label": "section_header", "bbox": {"l": 93.356689453125, "t": 158.2716064453125, "r": 193.95432, "b": 167.88428, "coord_origin": "TOPLEFT"}, "confidence": 0.9251776337623596, "cells": [{"id": 20, "text": "What you can expect", "bbox": {"l": 94.132698, "t": 158.87023999999997, "r": 193.95432, "b": 167.88428, "coord_origin": "TOPLEFT"}}]}, "text": "What you can expect"}, {"label": "text", "id": 10, "page_no": 11, "cluster": {"id": 10, "label": "text", "bbox": {"l": 93.58877563476562, "t": 170.04763793945312, "r": 283.61542, "b": 177.87142944335938, "coord_origin": "TOPLEFT"}, "confidence": 0.9153581857681274, "cells": [{"id": 21, "text": "Depending on the engagement, our team of consultants offer:", "bbox": {"l": 94.132698, "t": 170.36443999999995, "r": 283.61542, "b": 177.76842999999997, "coord_origin": "TOPLEFT"}}]}, "text": "Depending on the engagement, our team of consultants offer:"}, {"label": "list_item", "id": 11, "page_no": 11, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 93.6685562133789, "t": 189.83038330078125, "r": 243.1177520751953, "b": 198.0092010498047, "coord_origin": "TOPLEFT"}, "confidence": 0.9365891814231873, "cells": [{"id": 22, "text": "r ", "bbox": {"l": 94.132698, "t": 191.96851000000004, "r": 97.991905, "b": 197.17693999999995, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Briefings, consulting and guidance on demand", "bbox": {"l": 101.1822, "t": 190.13440000000003, "r": 243.08588, "b": 197.53839000000005, "coord_origin": "TOPLEFT"}}]}, "text": "r Briefings, consulting and guidance on demand"}, {"label": "list_item", "id": 12, "page_no": 11, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 93.72789001464844, "t": 199.86427307128906, "r": 282.72513, "b": 217.90070000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9610549211502075, "cells": [{"id": 24, "text": "r ", "bbox": {"l": 94.132698, "t": 202.15125, "r": 97.991905, "b": 207.35968000000003, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Illumination of the DB2 for i capabilities and leadership to ", "bbox": {"l": 101.1822, "t": 200.31714, "r": 282.72513, "b": 207.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "exploit them", "bbox": {"l": 101.1822, "t": 210.49670000000003, "r": 139.83179, "b": 217.90070000000003, "coord_origin": "TOPLEFT"}}]}, "text": "r Illumination of the DB2 for i capabilities and leadership to exploit them"}, {"label": "list_item", "id": 13, "page_no": 11, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 93.56942749023438, "t": 220.2848358154297, "r": 274.40585, "b": 248.44556, "coord_origin": "TOPLEFT"}, "confidence": 0.9730463027954102, "cells": [{"id": 27, "text": "r ", "bbox": {"l": 94.132698, "t": 222.51653999999996, "r": 97.991905, "b": 227.72497999999996, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Analysis and remediation of performance and scalability ", "bbox": {"l": 101.1822, "t": 220.68242999999995, "r": 274.40585, "b": 228.08642999999995, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "issues caused by inefficient database design and ", "bbox": {"l": 101.1822, "t": 230.86199999999997, "r": 247.29761000000002, "b": 238.26599, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "implementation", "bbox": {"l": 101.1822, "t": 241.04156, "r": 150.16017, "b": 248.44556, "coord_origin": "TOPLEFT"}}]}, "text": "r Analysis and remediation of performance and scalability issues caused by inefficient database design and implementation"}, {"label": "list_item", "id": 14, "page_no": 11, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 93.60421752929688, "t": 250.44761657714844, "r": 285.81323, "b": 269.4346618652344, "coord_origin": "TOPLEFT"}, "confidence": 0.9686199426651001, "cells": [{"id": 31, "text": "r ", "bbox": {"l": 94.132698, "t": 253.06444999999997, "r": 97.991905, "b": 258.27288999999996, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Configuration of systems, operating system and products to ", "bbox": {"l": 101.1822, "t": 251.23035000000004, "r": 285.81323, "b": 258.63433999999995, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "fully leverage database capabilities", "bbox": {"l": 101.1822, "t": 261.40990999999997, "r": 205.6864, "b": 268.8139, "coord_origin": "TOPLEFT"}}]}, "text": "r Configuration of systems, operating system and products to fully leverage database capabilities"}, {"label": "section_header", "id": 15, "page_no": 11, "cluster": {"id": 15, "label": "section_header", "bbox": {"l": 93.41441345214844, "t": 282.9095458984375, "r": 179.16822814941406, "b": 292.61377, "coord_origin": "TOPLEFT"}, "confidence": 0.9390802979469299, "cells": [{"id": 34, "text": "Key client benefits", "bbox": {"l": 94.132698, "t": 283.59973, "r": 179.10327, "b": 292.61377, "coord_origin": "TOPLEFT"}}]}, "text": "Key client benefits"}, {"label": "section_header", "id": 16, "page_no": 11, "cluster": {"id": 16, "label": "section_header", "bbox": {"l": 93.40412902832031, "t": 365.70770263671875, "r": 192.24819946289062, "b": 375.04626, "coord_origin": "TOPLEFT"}, "confidence": 0.9252138733863831, "cells": [{"id": 41, "text": "For more information", "bbox": {"l": 94.132698, "t": 366.03223, "r": 192.12144, "b": 375.04626, "coord_origin": "TOPLEFT"}}]}, "text": "For more information"}, {"label": "text", "id": 17, "page_no": 11, "cluster": {"id": 17, "label": "text", "bbox": {"l": 93.551025390625, "t": 376.95263671875, "r": 274.90921, "b": 405.5931396484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9603047966957092, "cells": [{"id": 42, "text": "Pricing depends on the scope of work. Learn more about ", "bbox": {"l": 94.132698, "t": 377.52646, "r": 274.90921, "b": 384.93045, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "the DB2 for i Center of Excellence and other related ", "bbox": {"l": 94.132698, "t": 387.70602, "r": 261.67877, "b": 395.11002, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "products and services. Contact ", "bbox": {"l": 94.132698, "t": 397.88559, "r": 191.79845, "b": 405.28958, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "stgls@us.ibm.com", "bbox": {"l": 191.79829, "t": 397.88544, "r": 248.03143000000003, "b": 405.2894299999999, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": " or visit:", "bbox": {"l": 248.03080999999997, "t": 397.88544, "r": 273.51691, "b": 405.2894299999999, "coord_origin": "TOPLEFT"}}]}, "text": "Pricing depends on the scope of work. Learn more about the DB2 for i Center of Excellence and other related products and services. Contact stgls@us.ibm.com or visit:"}, {"label": "text", "id": 18, "page_no": 11, "cluster": {"id": 18, "label": "text", "bbox": {"l": 93.61650085449219, "t": 417.3977966308594, "r": 216.61273193359375, "b": 424.85425, "coord_origin": "TOPLEFT"}, "confidence": 0.8876497745513916, "cells": [{"id": 47, "text": "ibm.com", "bbox": {"l": 94.132698, "t": 418.29114, "r": 123.09909000000002, "b": 424.70621, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 123.09909000000002, "t": 418.50967, "r": 216.45563, "b": 424.85425, "coord_origin": "TOPLEFT"}}]}, "text": "ibm.com GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH"}, {"label": "picture", "id": 19, "page_no": 11, "cluster": {"id": 19, "label": "picture", "bbox": {"l": 309.1715087890625, "t": 157.70965576171875, "r": 372.07818603515625, "b": 183.2933349609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9477246999740601, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 20, "page_no": 11, "cluster": {"id": 20, "label": "picture", "bbox": {"l": 309.91729736328125, "t": 357.83355712890625, "r": 327.7751159667969, "b": 376.003662109375, "coord_origin": "TOPLEFT"}, "confidence": 0.907178521156311, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": []}}, {"page_no": 12, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "xi", "bbox": {"l": 538.85999, "t": 754.848721, "r": 547.25031, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Preface", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 151.46161, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "This IBMfi Redpaper\u2122 publication provides information about the IBM i 7.2 feature of IBM ", "bbox": {"l": 136.8, "t": 132.64862000000005, "r": 542.91888, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "DB2fi for i Row and Column Access Control (RCAC). It offers a broad description of the ", "bbox": {"l": 136.79984, "t": 144.64844000000005, "r": 526.65509, "b": 153.86145, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "function and advantages of controlling access to data in a comprehensive and transparent ", "bbox": {"l": 136.79984, "t": 156.64824999999996, "r": 536.82135, "b": 165.86127, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "way. This publication helps you understand the capabilities of RCAC and provides examples ", "bbox": {"l": 136.79987, "t": 168.64806999999996, "r": 544.67975, "b": 177.86108000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "of defining, creating, and implementing the row permissions and column masks in a relational ", "bbox": {"l": 136.79987, "t": 180.64788999999996, "r": 547.30823, "b": 189.86090000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "database environment.", "bbox": {"l": 136.79987, "t": 192.64770999999996, "r": 238.32117, "b": 201.86072000000001, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "This paper is intended for database engineers, data-centric application developers, and ", "bbox": {"l": 136.79987, "t": 214.60748, "r": 524.18518, "b": 223.82050000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "security officers who want to design and implement RCAC as a part of their data control and ", "bbox": {"l": 136.79987, "t": 226.6073, "r": 546.4657, "b": 235.82030999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "governance policy. A solid background in IBM i object level security, DB2 for i relational ", "bbox": {"l": 136.79987, "t": 238.60712, "r": 521.25488, "b": 247.82012999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "database concepts, and SQL is assumed.", "bbox": {"l": 136.79987, "t": 250.60693000000003, "r": 321.69434, "b": 259.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Authors", "bbox": {"l": 64.800003, "t": 288.3006, "r": 125.36661, "b": 303.0636, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "This paper was produced by the IBM DB2 for i Center of Excellence team in partnership with ", "bbox": {"l": 136.8, "t": 320.62871999999993, "r": 547.23669, "b": 329.8417099999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "the International Technical Support Organization (ITSO), Rochester, Minnesota US.", "bbox": {"l": 136.8, "t": 332.62854, "r": 505.05518, "b": 341.84152, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Jim Bainbridge", "bbox": {"l": 263.39957, "t": 375.64877, "r": 335.7251, "b": 384.86176, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": " is a senior DB2 consultant on the DB2 for i ", "bbox": {"l": 335.69922, "t": 375.64877, "r": 529.34259, "b": 384.86176, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Center of Excellence team in the IBM Lab Services and ", "bbox": {"l": 263.3996, "t": 387.64859, "r": 511.50717, "b": 396.86157, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Training organization. His primary role is training and ", "bbox": {"l": 263.3996, "t": 399.64841, "r": 499.077, "b": 408.86139, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "implementation services for IBM DB2 Web Query for i and ", "bbox": {"l": 263.3996, "t": 411.64822, "r": 522.51996, "b": 420.86121, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "business analytics. Jim began his career with IBM 30 years ago ", "bbox": {"l": 263.3996, "t": 423.64804, "r": 541.25079, "b": 432.86102, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "in the IBM Rochester Development Lab, where he developed ", "bbox": {"l": 263.3996, "t": 435.64786, "r": 534.71411, "b": 444.86084, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "cooperative processing products that paired IBM PCs with IBM ", "bbox": {"l": 263.3996, "t": 447.64767, "r": 541.22375, "b": 456.86066, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "S/36 and AS/.400 systems. In the years since, Jim has held ", "bbox": {"l": 263.3996, "t": 459.64749, "r": 528.91016, "b": 468.86047, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "numerous technical roles, including independent software ", "bbox": {"l": 263.3996, "t": 471.64731, "r": 520.24207, "b": 480.86029, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "vendors technical support on a broad range of IBM ", "bbox": {"l": 263.3996, "t": 483.64713, "r": 490.6967200000001, "b": 492.86011, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "technologies and products, and supporting customers in the ", "bbox": {"l": 263.3996, "t": 495.64694, "r": 530.95514, "b": 504.85992, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IBM Executive Briefing Center and IBM Project Office.", "bbox": {"l": 263.3996, "t": 507.64676, "r": 501.62973, "b": 516.85974, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Hernando Bedoya", "bbox": {"l": 263.3996, "t": 527.62653, "r": 348.38229, "b": 536.83952, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": " is a Senior IT Specialist at STG Lab ", "bbox": {"l": 348.41916, "t": 527.62653, "r": 512.3429, "b": 536.83952, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Services and Training in Rochester, Minnesota. He writes ", "bbox": {"l": 263.3996, "t": 539.62633, "r": 519.26306, "b": 548.83932, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "extensively and teaches IBM classes worldwide in all areas of ", "bbox": {"l": 263.3996, "t": 551.62613, "r": 538.40308, "b": 560.8391300000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "DB2 for i. Before joining STG Lab Services, he worked in the ", "bbox": {"l": 263.3996, "t": 563.62593, "r": 533.95715, "b": 572.83893, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "ITSO for nine years writing multiple IBM Redbooksfi ", "bbox": {"l": 263.3996, "t": 575.62573, "r": 496.94464, "b": 584.8387299999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "publications. He also worked for IBM Colombia as an IBM ", "bbox": {"l": 263.3996, "t": 587.62553, "r": 520.38562, "b": 596.83853, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "AS/400fi IT Specialist doing presales support for the Andean ", "bbox": {"l": 263.3996, "t": 599.62534, "r": 535.99078, "b": 608.83833, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "countries. He has 28 years of experience in the computing field ", "bbox": {"l": 263.3996, "t": 611.62514, "r": 541.27374, "b": 620.83813, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "and has taught database classes in Colombian universities. He ", "bbox": {"l": 263.3996, "t": 623.62494, "r": 541.26465, "b": 632.83794, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "holds a Master\u2019s degree in Computer Science from EAFIT, ", "bbox": {"l": 263.3996, "t": 635.62474, "r": 523.22211, "b": 644.8377399999999, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Colombia. His areas of expertise are database technology, ", "bbox": {"l": 263.3996, "t": 647.62454, "r": 524.77386, "b": 656.83754, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "performance, and data warehousing. Hernando can be ", "bbox": {"l": 263.3996, "t": 659.62434, "r": 508.27124, "b": 668.83735, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "contacted at ", "bbox": {"l": 263.3996, "t": 671.62415, "r": 320.63568, "b": 680.83716, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "hbedoya@us.ibm.com", "bbox": {"l": 320.63971, "t": 671.77356, "r": 410.57852, "b": 680.54832, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": ".", "bbox": {"l": 410.5795, "t": 671.62415, "r": 413.34839, "b": 680.83716, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.724002838134766, "t": 754.7037963867188, "r": 257.24335, "b": 764.1082153320312, "coord_origin": "TOPLEFT"}, "confidence": 0.9469243884086609, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 538.058349609375, "t": 754.3980102539062, "r": 547.25031, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9040942788124084, "cells": [{"id": 1, "text": "xi", "bbox": {"l": 538.85999, "t": 754.848721, "r": 547.25031, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.800003, "t": 73.10313415527344, "r": 151.46161, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9174708724021912, "cells": [{"id": 2, "text": "Preface", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 151.46161, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.75503540039062, "t": 131.914306640625, "r": 547.30823, "b": 201.86072000000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9869155883789062, "cells": [{"id": 3, "text": "This IBMfi Redpaper\u2122 publication provides information about the IBM i 7.2 feature of IBM ", "bbox": {"l": 136.8, "t": 132.64862000000005, "r": 542.91888, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "DB2fi for i Row and Column Access Control (RCAC). It offers a broad description of the ", "bbox": {"l": 136.79984, "t": 144.64844000000005, "r": 526.65509, "b": 153.86145, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "function and advantages of controlling access to data in a comprehensive and transparent ", "bbox": {"l": 136.79984, "t": 156.64824999999996, "r": 536.82135, "b": 165.86127, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "way. This publication helps you understand the capabilities of RCAC and provides examples ", "bbox": {"l": 136.79987, "t": 168.64806999999996, "r": 544.67975, "b": 177.86108000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "of defining, creating, and implementing the row permissions and column masks in a relational ", "bbox": {"l": 136.79987, "t": 180.64788999999996, "r": 547.30823, "b": 189.86090000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "database environment.", "bbox": {"l": 136.79987, "t": 192.64770999999996, "r": 238.32117, "b": 201.86072000000001, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.94647216796875, "t": 214.0637664794922, "r": 546.4657, "b": 260.1856384277344, "coord_origin": "TOPLEFT"}, "confidence": 0.987220287322998, "cells": [{"id": 9, "text": "This paper is intended for database engineers, data-centric application developers, and ", "bbox": {"l": 136.79987, "t": 214.60748, "r": 524.18518, "b": 223.82050000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "security officers who want to design and implement RCAC as a part of their data control and ", "bbox": {"l": 136.79987, "t": 226.6073, "r": 546.4657, "b": 235.82030999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "governance policy. A solid background in IBM i object level security, DB2 for i relational ", "bbox": {"l": 136.79987, "t": 238.60712, "r": 521.25488, "b": 247.82012999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "database concepts, and SQL is assumed.", "bbox": {"l": 136.79987, "t": 250.60693000000003, "r": 321.69434, "b": 259.81994999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "section_header", "bbox": {"l": 64.22550201416016, "t": 287.1894226074219, "r": 125.36661, "b": 303.0636, "coord_origin": "TOPLEFT"}, "confidence": 0.9255504608154297, "cells": [{"id": 13, "text": "Authors", "bbox": {"l": 64.800003, "t": 288.3006, "r": 125.36661, "b": 303.0636, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 135.71319580078125, "t": 319.8118591308594, "r": 547.23669, "b": 342.1517028808594, "coord_origin": "TOPLEFT"}, "confidence": 0.9713318347930908, "cells": [{"id": 14, "text": "This paper was produced by the IBM DB2 for i Center of Excellence team in partnership with ", "bbox": {"l": 136.8, "t": 320.62871999999993, "r": 547.23669, "b": 329.8417099999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "the International Technical Support Organization (ITSO), Rochester, Minnesota US.", "bbox": {"l": 136.8, "t": 332.62854, "r": 505.05518, "b": 341.84152, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 262.6522521972656, "t": 374.687255859375, "r": 541.25079, "b": 516.9314575195312, "coord_origin": "TOPLEFT"}, "confidence": 0.9842760562896729, "cells": [{"id": 16, "text": "Jim Bainbridge", "bbox": {"l": 263.39957, "t": 375.64877, "r": 335.7251, "b": 384.86176, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": " is a senior DB2 consultant on the DB2 for i ", "bbox": {"l": 335.69922, "t": 375.64877, "r": 529.34259, "b": 384.86176, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Center of Excellence team in the IBM Lab Services and ", "bbox": {"l": 263.3996, "t": 387.64859, "r": 511.50717, "b": 396.86157, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Training organization. His primary role is training and ", "bbox": {"l": 263.3996, "t": 399.64841, "r": 499.077, "b": 408.86139, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "implementation services for IBM DB2 Web Query for i and ", "bbox": {"l": 263.3996, "t": 411.64822, "r": 522.51996, "b": 420.86121, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "business analytics. Jim began his career with IBM 30 years ago ", "bbox": {"l": 263.3996, "t": 423.64804, "r": 541.25079, "b": 432.86102, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "in the IBM Rochester Development Lab, where he developed ", "bbox": {"l": 263.3996, "t": 435.64786, "r": 534.71411, "b": 444.86084, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "cooperative processing products that paired IBM PCs with IBM ", "bbox": {"l": 263.3996, "t": 447.64767, "r": 541.22375, "b": 456.86066, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "S/36 and AS/.400 systems. In the years since, Jim has held ", "bbox": {"l": 263.3996, "t": 459.64749, "r": 528.91016, "b": 468.86047, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "numerous technical roles, including independent software ", "bbox": {"l": 263.3996, "t": 471.64731, "r": 520.24207, "b": 480.86029, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "vendors technical support on a broad range of IBM ", "bbox": {"l": 263.3996, "t": 483.64713, "r": 490.6967200000001, "b": 492.86011, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "technologies and products, and supporting customers in the ", "bbox": {"l": 263.3996, "t": 495.64694, "r": 530.95514, "b": 504.85992, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IBM Executive Briefing Center and IBM Project Office.", "bbox": {"l": 263.3996, "t": 507.64676, "r": 501.62973, "b": 516.85974, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 262.4736328125, "t": 526.50830078125, "r": 541.27374, "b": 680.83716, "coord_origin": "TOPLEFT"}, "confidence": 0.9823779463768005, "cells": [{"id": 29, "text": "Hernando Bedoya", "bbox": {"l": 263.3996, "t": 527.62653, "r": 348.38229, "b": 536.83952, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": " is a Senior IT Specialist at STG Lab ", "bbox": {"l": 348.41916, "t": 527.62653, "r": 512.3429, "b": 536.83952, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Services and Training in Rochester, Minnesota. He writes ", "bbox": {"l": 263.3996, "t": 539.62633, "r": 519.26306, "b": 548.83932, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "extensively and teaches IBM classes worldwide in all areas of ", "bbox": {"l": 263.3996, "t": 551.62613, "r": 538.40308, "b": 560.8391300000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "DB2 for i. Before joining STG Lab Services, he worked in the ", "bbox": {"l": 263.3996, "t": 563.62593, "r": 533.95715, "b": 572.83893, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "ITSO for nine years writing multiple IBM Redbooksfi ", "bbox": {"l": 263.3996, "t": 575.62573, "r": 496.94464, "b": 584.8387299999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "publications. He also worked for IBM Colombia as an IBM ", "bbox": {"l": 263.3996, "t": 587.62553, "r": 520.38562, "b": 596.83853, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "AS/400fi IT Specialist doing presales support for the Andean ", "bbox": {"l": 263.3996, "t": 599.62534, "r": 535.99078, "b": 608.83833, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "countries. He has 28 years of experience in the computing field ", "bbox": {"l": 263.3996, "t": 611.62514, "r": 541.27374, "b": 620.83813, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "and has taught database classes in Colombian universities. He ", "bbox": {"l": 263.3996, "t": 623.62494, "r": 541.26465, "b": 632.83794, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "holds a Master\u2019s degree in Computer Science from EAFIT, ", "bbox": {"l": 263.3996, "t": 635.62474, "r": 523.22211, "b": 644.8377399999999, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Colombia. His areas of expertise are database technology, ", "bbox": {"l": 263.3996, "t": 647.62454, "r": 524.77386, "b": 656.83754, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "performance, and data warehousing. Hernando can be ", "bbox": {"l": 263.3996, "t": 659.62434, "r": 508.27124, "b": 668.83735, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "contacted at ", "bbox": {"l": 263.3996, "t": 671.62415, "r": 320.63568, "b": 680.83716, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "hbedoya@us.ibm.com", "bbox": {"l": 320.63971, "t": 671.77356, "r": 410.57852, "b": 680.54832, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": ".", "bbox": {"l": 410.5795, "t": 671.62415, "r": 413.34839, "b": 680.83716, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "picture", "bbox": {"l": 145.41448974609375, "t": 527.2447509765625, "r": 252.08840942382812, "b": 635.383056640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9871657490730286, "cells": []}, {"id": 10, "label": "picture", "bbox": {"l": 142.52883911132812, "t": 375.0449523925781, "r": 251.47850036621094, "b": 503.20648193359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9862572550773621, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 12, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.724002838134766, "t": 754.7037963867188, "r": 257.24335, "b": 764.1082153320312, "coord_origin": "TOPLEFT"}, "confidence": 0.9469243884086609, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 12, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 538.058349609375, "t": 754.3980102539062, "r": 547.25031, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9040942788124084, "cells": [{"id": 1, "text": "xi", "bbox": {"l": 538.85999, "t": 754.848721, "r": 547.25031, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "xi"}, {"label": "section_header", "id": 2, "page_no": 12, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.800003, "t": 73.10313415527344, "r": 151.46161, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9174708724021912, "cells": [{"id": 2, "text": "Preface", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 151.46161, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Preface"}, {"label": "text", "id": 3, "page_no": 12, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.75503540039062, "t": 131.914306640625, "r": 547.30823, "b": 201.86072000000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9869155883789062, "cells": [{"id": 3, "text": "This IBMfi Redpaper\u2122 publication provides information about the IBM i 7.2 feature of IBM ", "bbox": {"l": 136.8, "t": 132.64862000000005, "r": 542.91888, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "DB2fi for i Row and Column Access Control (RCAC). It offers a broad description of the ", "bbox": {"l": 136.79984, "t": 144.64844000000005, "r": 526.65509, "b": 153.86145, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "function and advantages of controlling access to data in a comprehensive and transparent ", "bbox": {"l": 136.79984, "t": 156.64824999999996, "r": 536.82135, "b": 165.86127, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "way. This publication helps you understand the capabilities of RCAC and provides examples ", "bbox": {"l": 136.79987, "t": 168.64806999999996, "r": 544.67975, "b": 177.86108000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "of defining, creating, and implementing the row permissions and column masks in a relational ", "bbox": {"l": 136.79987, "t": 180.64788999999996, "r": 547.30823, "b": 189.86090000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "database environment.", "bbox": {"l": 136.79987, "t": 192.64770999999996, "r": 238.32117, "b": 201.86072000000001, "coord_origin": "TOPLEFT"}}]}, "text": "This IBMfi Redpaper\u2122 publication provides information about the IBM i 7.2 feature of IBM DB2fi for i Row and Column Access Control (RCAC). It offers a broad description of the function and advantages of controlling access to data in a comprehensive and transparent way. This publication helps you understand the capabilities of RCAC and provides examples of defining, creating, and implementing the row permissions and column masks in a relational database environment."}, {"label": "text", "id": 4, "page_no": 12, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.94647216796875, "t": 214.0637664794922, "r": 546.4657, "b": 260.1856384277344, "coord_origin": "TOPLEFT"}, "confidence": 0.987220287322998, "cells": [{"id": 9, "text": "This paper is intended for database engineers, data-centric application developers, and ", "bbox": {"l": 136.79987, "t": 214.60748, "r": 524.18518, "b": 223.82050000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "security officers who want to design and implement RCAC as a part of their data control and ", "bbox": {"l": 136.79987, "t": 226.6073, "r": 546.4657, "b": 235.82030999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "governance policy. A solid background in IBM i object level security, DB2 for i relational ", "bbox": {"l": 136.79987, "t": 238.60712, "r": 521.25488, "b": 247.82012999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "database concepts, and SQL is assumed.", "bbox": {"l": 136.79987, "t": 250.60693000000003, "r": 321.69434, "b": 259.81994999999995, "coord_origin": "TOPLEFT"}}]}, "text": "This paper is intended for database engineers, data-centric application developers, and security officers who want to design and implement RCAC as a part of their data control and governance policy. A solid background in IBM i object level security, DB2 for i relational database concepts, and SQL is assumed."}, {"label": "section_header", "id": 5, "page_no": 12, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 64.22550201416016, "t": 287.1894226074219, "r": 125.36661, "b": 303.0636, "coord_origin": "TOPLEFT"}, "confidence": 0.9255504608154297, "cells": [{"id": 13, "text": "Authors", "bbox": {"l": 64.800003, "t": 288.3006, "r": 125.36661, "b": 303.0636, "coord_origin": "TOPLEFT"}}]}, "text": "Authors"}, {"label": "text", "id": 6, "page_no": 12, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.71319580078125, "t": 319.8118591308594, "r": 547.23669, "b": 342.1517028808594, "coord_origin": "TOPLEFT"}, "confidence": 0.9713318347930908, "cells": [{"id": 14, "text": "This paper was produced by the IBM DB2 for i Center of Excellence team in partnership with ", "bbox": {"l": 136.8, "t": 320.62871999999993, "r": 547.23669, "b": 329.8417099999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "the International Technical Support Organization (ITSO), Rochester, Minnesota US.", "bbox": {"l": 136.8, "t": 332.62854, "r": 505.05518, "b": 341.84152, "coord_origin": "TOPLEFT"}}]}, "text": "This paper was produced by the IBM DB2 for i Center of Excellence team in partnership with the International Technical Support Organization (ITSO), Rochester, Minnesota US."}, {"label": "text", "id": 7, "page_no": 12, "cluster": {"id": 7, "label": "text", "bbox": {"l": 262.6522521972656, "t": 374.687255859375, "r": 541.25079, "b": 516.9314575195312, "coord_origin": "TOPLEFT"}, "confidence": 0.9842760562896729, "cells": [{"id": 16, "text": "Jim Bainbridge", "bbox": {"l": 263.39957, "t": 375.64877, "r": 335.7251, "b": 384.86176, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": " is a senior DB2 consultant on the DB2 for i ", "bbox": {"l": 335.69922, "t": 375.64877, "r": 529.34259, "b": 384.86176, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Center of Excellence team in the IBM Lab Services and ", "bbox": {"l": 263.3996, "t": 387.64859, "r": 511.50717, "b": 396.86157, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Training organization. His primary role is training and ", "bbox": {"l": 263.3996, "t": 399.64841, "r": 499.077, "b": 408.86139, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "implementation services for IBM DB2 Web Query for i and ", "bbox": {"l": 263.3996, "t": 411.64822, "r": 522.51996, "b": 420.86121, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "business analytics. Jim began his career with IBM 30 years ago ", "bbox": {"l": 263.3996, "t": 423.64804, "r": 541.25079, "b": 432.86102, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "in the IBM Rochester Development Lab, where he developed ", "bbox": {"l": 263.3996, "t": 435.64786, "r": 534.71411, "b": 444.86084, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "cooperative processing products that paired IBM PCs with IBM ", "bbox": {"l": 263.3996, "t": 447.64767, "r": 541.22375, "b": 456.86066, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "S/36 and AS/.400 systems. In the years since, Jim has held ", "bbox": {"l": 263.3996, "t": 459.64749, "r": 528.91016, "b": 468.86047, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "numerous technical roles, including independent software ", "bbox": {"l": 263.3996, "t": 471.64731, "r": 520.24207, "b": 480.86029, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "vendors technical support on a broad range of IBM ", "bbox": {"l": 263.3996, "t": 483.64713, "r": 490.6967200000001, "b": 492.86011, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "technologies and products, and supporting customers in the ", "bbox": {"l": 263.3996, "t": 495.64694, "r": 530.95514, "b": 504.85992, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IBM Executive Briefing Center and IBM Project Office.", "bbox": {"l": 263.3996, "t": 507.64676, "r": 501.62973, "b": 516.85974, "coord_origin": "TOPLEFT"}}]}, "text": "Jim Bainbridge is a senior DB2 consultant on the DB2 for i Center of Excellence team in the IBM Lab Services and Training organization. His primary role is training and implementation services for IBM DB2 Web Query for i and business analytics. Jim began his career with IBM 30 years ago in the IBM Rochester Development Lab, where he developed cooperative processing products that paired IBM PCs with IBM S/36 and AS/.400 systems. In the years since, Jim has held numerous technical roles, including independent software vendors technical support on a broad range of IBM technologies and products, and supporting customers in the IBM Executive Briefing Center and IBM Project Office."}, {"label": "text", "id": 8, "page_no": 12, "cluster": {"id": 8, "label": "text", "bbox": {"l": 262.4736328125, "t": 526.50830078125, "r": 541.27374, "b": 680.83716, "coord_origin": "TOPLEFT"}, "confidence": 0.9823779463768005, "cells": [{"id": 29, "text": "Hernando Bedoya", "bbox": {"l": 263.3996, "t": 527.62653, "r": 348.38229, "b": 536.83952, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": " is a Senior IT Specialist at STG Lab ", "bbox": {"l": 348.41916, "t": 527.62653, "r": 512.3429, "b": 536.83952, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Services and Training in Rochester, Minnesota. He writes ", "bbox": {"l": 263.3996, "t": 539.62633, "r": 519.26306, "b": 548.83932, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "extensively and teaches IBM classes worldwide in all areas of ", "bbox": {"l": 263.3996, "t": 551.62613, "r": 538.40308, "b": 560.8391300000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "DB2 for i. Before joining STG Lab Services, he worked in the ", "bbox": {"l": 263.3996, "t": 563.62593, "r": 533.95715, "b": 572.83893, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "ITSO for nine years writing multiple IBM Redbooksfi ", "bbox": {"l": 263.3996, "t": 575.62573, "r": 496.94464, "b": 584.8387299999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "publications. He also worked for IBM Colombia as an IBM ", "bbox": {"l": 263.3996, "t": 587.62553, "r": 520.38562, "b": 596.83853, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "AS/400fi IT Specialist doing presales support for the Andean ", "bbox": {"l": 263.3996, "t": 599.62534, "r": 535.99078, "b": 608.83833, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "countries. He has 28 years of experience in the computing field ", "bbox": {"l": 263.3996, "t": 611.62514, "r": 541.27374, "b": 620.83813, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "and has taught database classes in Colombian universities. He ", "bbox": {"l": 263.3996, "t": 623.62494, "r": 541.26465, "b": 632.83794, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "holds a Master\u2019s degree in Computer Science from EAFIT, ", "bbox": {"l": 263.3996, "t": 635.62474, "r": 523.22211, "b": 644.8377399999999, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Colombia. His areas of expertise are database technology, ", "bbox": {"l": 263.3996, "t": 647.62454, "r": 524.77386, "b": 656.83754, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "performance, and data warehousing. Hernando can be ", "bbox": {"l": 263.3996, "t": 659.62434, "r": 508.27124, "b": 668.83735, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "contacted at ", "bbox": {"l": 263.3996, "t": 671.62415, "r": 320.63568, "b": 680.83716, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "hbedoya@us.ibm.com", "bbox": {"l": 320.63971, "t": 671.77356, "r": 410.57852, "b": 680.54832, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": ".", "bbox": {"l": 410.5795, "t": 671.62415, "r": 413.34839, "b": 680.83716, "coord_origin": "TOPLEFT"}}]}, "text": "Hernando Bedoya is a Senior IT Specialist at STG Lab Services and Training in Rochester, Minnesota. He writes extensively and teaches IBM classes worldwide in all areas of DB2 for i. Before joining STG Lab Services, he worked in the ITSO for nine years writing multiple IBM Redbooksfi publications. He also worked for IBM Colombia as an IBM AS/400fi IT Specialist doing presales support for the Andean countries. He has 28 years of experience in the computing field and has taught database classes in Colombian universities. He holds a Master\u2019s degree in Computer Science from EAFIT, Colombia. His areas of expertise are database technology, performance, and data warehousing. Hernando can be contacted at hbedoya@us.ibm.com ."}, {"label": "picture", "id": 9, "page_no": 12, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 145.41448974609375, "t": 527.2447509765625, "r": 252.08840942382812, "b": 635.383056640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9871657490730286, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 10, "page_no": 12, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 142.52883911132812, "t": 375.0449523925781, "r": 251.47850036621094, "b": 503.20648193359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9862572550773621, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "section_header", "id": 2, "page_no": 12, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.800003, "t": 73.10313415527344, "r": 151.46161, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9174708724021912, "cells": [{"id": 2, "text": "Preface", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 151.46161, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Preface"}, {"label": "text", "id": 3, "page_no": 12, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.75503540039062, "t": 131.914306640625, "r": 547.30823, "b": 201.86072000000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9869155883789062, "cells": [{"id": 3, "text": "This IBMfi Redpaper\u2122 publication provides information about the IBM i 7.2 feature of IBM ", "bbox": {"l": 136.8, "t": 132.64862000000005, "r": 542.91888, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "DB2fi for i Row and Column Access Control (RCAC). It offers a broad description of the ", "bbox": {"l": 136.79984, "t": 144.64844000000005, "r": 526.65509, "b": 153.86145, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "function and advantages of controlling access to data in a comprehensive and transparent ", "bbox": {"l": 136.79984, "t": 156.64824999999996, "r": 536.82135, "b": 165.86127, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "way. This publication helps you understand the capabilities of RCAC and provides examples ", "bbox": {"l": 136.79987, "t": 168.64806999999996, "r": 544.67975, "b": 177.86108000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "of defining, creating, and implementing the row permissions and column masks in a relational ", "bbox": {"l": 136.79987, "t": 180.64788999999996, "r": 547.30823, "b": 189.86090000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "database environment.", "bbox": {"l": 136.79987, "t": 192.64770999999996, "r": 238.32117, "b": 201.86072000000001, "coord_origin": "TOPLEFT"}}]}, "text": "This IBMfi Redpaper\u2122 publication provides information about the IBM i 7.2 feature of IBM DB2fi for i Row and Column Access Control (RCAC). It offers a broad description of the function and advantages of controlling access to data in a comprehensive and transparent way. This publication helps you understand the capabilities of RCAC and provides examples of defining, creating, and implementing the row permissions and column masks in a relational database environment."}, {"label": "text", "id": 4, "page_no": 12, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.94647216796875, "t": 214.0637664794922, "r": 546.4657, "b": 260.1856384277344, "coord_origin": "TOPLEFT"}, "confidence": 0.987220287322998, "cells": [{"id": 9, "text": "This paper is intended for database engineers, data-centric application developers, and ", "bbox": {"l": 136.79987, "t": 214.60748, "r": 524.18518, "b": 223.82050000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "security officers who want to design and implement RCAC as a part of their data control and ", "bbox": {"l": 136.79987, "t": 226.6073, "r": 546.4657, "b": 235.82030999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "governance policy. A solid background in IBM i object level security, DB2 for i relational ", "bbox": {"l": 136.79987, "t": 238.60712, "r": 521.25488, "b": 247.82012999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "database concepts, and SQL is assumed.", "bbox": {"l": 136.79987, "t": 250.60693000000003, "r": 321.69434, "b": 259.81994999999995, "coord_origin": "TOPLEFT"}}]}, "text": "This paper is intended for database engineers, data-centric application developers, and security officers who want to design and implement RCAC as a part of their data control and governance policy. A solid background in IBM i object level security, DB2 for i relational database concepts, and SQL is assumed."}, {"label": "section_header", "id": 5, "page_no": 12, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 64.22550201416016, "t": 287.1894226074219, "r": 125.36661, "b": 303.0636, "coord_origin": "TOPLEFT"}, "confidence": 0.9255504608154297, "cells": [{"id": 13, "text": "Authors", "bbox": {"l": 64.800003, "t": 288.3006, "r": 125.36661, "b": 303.0636, "coord_origin": "TOPLEFT"}}]}, "text": "Authors"}, {"label": "text", "id": 6, "page_no": 12, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.71319580078125, "t": 319.8118591308594, "r": 547.23669, "b": 342.1517028808594, "coord_origin": "TOPLEFT"}, "confidence": 0.9713318347930908, "cells": [{"id": 14, "text": "This paper was produced by the IBM DB2 for i Center of Excellence team in partnership with ", "bbox": {"l": 136.8, "t": 320.62871999999993, "r": 547.23669, "b": 329.8417099999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "the International Technical Support Organization (ITSO), Rochester, Minnesota US.", "bbox": {"l": 136.8, "t": 332.62854, "r": 505.05518, "b": 341.84152, "coord_origin": "TOPLEFT"}}]}, "text": "This paper was produced by the IBM DB2 for i Center of Excellence team in partnership with the International Technical Support Organization (ITSO), Rochester, Minnesota US."}, {"label": "text", "id": 7, "page_no": 12, "cluster": {"id": 7, "label": "text", "bbox": {"l": 262.6522521972656, "t": 374.687255859375, "r": 541.25079, "b": 516.9314575195312, "coord_origin": "TOPLEFT"}, "confidence": 0.9842760562896729, "cells": [{"id": 16, "text": "Jim Bainbridge", "bbox": {"l": 263.39957, "t": 375.64877, "r": 335.7251, "b": 384.86176, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": " is a senior DB2 consultant on the DB2 for i ", "bbox": {"l": 335.69922, "t": 375.64877, "r": 529.34259, "b": 384.86176, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Center of Excellence team in the IBM Lab Services and ", "bbox": {"l": 263.3996, "t": 387.64859, "r": 511.50717, "b": 396.86157, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Training organization. His primary role is training and ", "bbox": {"l": 263.3996, "t": 399.64841, "r": 499.077, "b": 408.86139, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "implementation services for IBM DB2 Web Query for i and ", "bbox": {"l": 263.3996, "t": 411.64822, "r": 522.51996, "b": 420.86121, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "business analytics. Jim began his career with IBM 30 years ago ", "bbox": {"l": 263.3996, "t": 423.64804, "r": 541.25079, "b": 432.86102, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "in the IBM Rochester Development Lab, where he developed ", "bbox": {"l": 263.3996, "t": 435.64786, "r": 534.71411, "b": 444.86084, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "cooperative processing products that paired IBM PCs with IBM ", "bbox": {"l": 263.3996, "t": 447.64767, "r": 541.22375, "b": 456.86066, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "S/36 and AS/.400 systems. In the years since, Jim has held ", "bbox": {"l": 263.3996, "t": 459.64749, "r": 528.91016, "b": 468.86047, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "numerous technical roles, including independent software ", "bbox": {"l": 263.3996, "t": 471.64731, "r": 520.24207, "b": 480.86029, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "vendors technical support on a broad range of IBM ", "bbox": {"l": 263.3996, "t": 483.64713, "r": 490.6967200000001, "b": 492.86011, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "technologies and products, and supporting customers in the ", "bbox": {"l": 263.3996, "t": 495.64694, "r": 530.95514, "b": 504.85992, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IBM Executive Briefing Center and IBM Project Office.", "bbox": {"l": 263.3996, "t": 507.64676, "r": 501.62973, "b": 516.85974, "coord_origin": "TOPLEFT"}}]}, "text": "Jim Bainbridge is a senior DB2 consultant on the DB2 for i Center of Excellence team in the IBM Lab Services and Training organization. His primary role is training and implementation services for IBM DB2 Web Query for i and business analytics. Jim began his career with IBM 30 years ago in the IBM Rochester Development Lab, where he developed cooperative processing products that paired IBM PCs with IBM S/36 and AS/.400 systems. In the years since, Jim has held numerous technical roles, including independent software vendors technical support on a broad range of IBM technologies and products, and supporting customers in the IBM Executive Briefing Center and IBM Project Office."}, {"label": "text", "id": 8, "page_no": 12, "cluster": {"id": 8, "label": "text", "bbox": {"l": 262.4736328125, "t": 526.50830078125, "r": 541.27374, "b": 680.83716, "coord_origin": "TOPLEFT"}, "confidence": 0.9823779463768005, "cells": [{"id": 29, "text": "Hernando Bedoya", "bbox": {"l": 263.3996, "t": 527.62653, "r": 348.38229, "b": 536.83952, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": " is a Senior IT Specialist at STG Lab ", "bbox": {"l": 348.41916, "t": 527.62653, "r": 512.3429, "b": 536.83952, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Services and Training in Rochester, Minnesota. He writes ", "bbox": {"l": 263.3996, "t": 539.62633, "r": 519.26306, "b": 548.83932, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "extensively and teaches IBM classes worldwide in all areas of ", "bbox": {"l": 263.3996, "t": 551.62613, "r": 538.40308, "b": 560.8391300000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "DB2 for i. Before joining STG Lab Services, he worked in the ", "bbox": {"l": 263.3996, "t": 563.62593, "r": 533.95715, "b": 572.83893, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "ITSO for nine years writing multiple IBM Redbooksfi ", "bbox": {"l": 263.3996, "t": 575.62573, "r": 496.94464, "b": 584.8387299999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "publications. He also worked for IBM Colombia as an IBM ", "bbox": {"l": 263.3996, "t": 587.62553, "r": 520.38562, "b": 596.83853, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "AS/400fi IT Specialist doing presales support for the Andean ", "bbox": {"l": 263.3996, "t": 599.62534, "r": 535.99078, "b": 608.83833, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "countries. He has 28 years of experience in the computing field ", "bbox": {"l": 263.3996, "t": 611.62514, "r": 541.27374, "b": 620.83813, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "and has taught database classes in Colombian universities. He ", "bbox": {"l": 263.3996, "t": 623.62494, "r": 541.26465, "b": 632.83794, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "holds a Master\u2019s degree in Computer Science from EAFIT, ", "bbox": {"l": 263.3996, "t": 635.62474, "r": 523.22211, "b": 644.8377399999999, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Colombia. His areas of expertise are database technology, ", "bbox": {"l": 263.3996, "t": 647.62454, "r": 524.77386, "b": 656.83754, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "performance, and data warehousing. Hernando can be ", "bbox": {"l": 263.3996, "t": 659.62434, "r": 508.27124, "b": 668.83735, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "contacted at ", "bbox": {"l": 263.3996, "t": 671.62415, "r": 320.63568, "b": 680.83716, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "hbedoya@us.ibm.com", "bbox": {"l": 320.63971, "t": 671.77356, "r": 410.57852, "b": 680.54832, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": ".", "bbox": {"l": 410.5795, "t": 671.62415, "r": 413.34839, "b": 680.83716, "coord_origin": "TOPLEFT"}}]}, "text": "Hernando Bedoya is a Senior IT Specialist at STG Lab Services and Training in Rochester, Minnesota. He writes extensively and teaches IBM classes worldwide in all areas of DB2 for i. Before joining STG Lab Services, he worked in the ITSO for nine years writing multiple IBM Redbooksfi publications. He also worked for IBM Colombia as an IBM AS/400fi IT Specialist doing presales support for the Andean countries. He has 28 years of experience in the computing field and has taught database classes in Colombian universities. He holds a Master\u2019s degree in Computer Science from EAFIT, Colombia. His areas of expertise are database technology, performance, and data warehousing. Hernando can be contacted at hbedoya@us.ibm.com ."}, {"label": "picture", "id": 9, "page_no": 12, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 145.41448974609375, "t": 527.2447509765625, "r": 252.08840942382812, "b": 635.383056640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9871657490730286, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 10, "page_no": 12, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 142.52883911132812, "t": 375.0449523925781, "r": 251.47850036621094, "b": 503.20648193359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9862572550773621, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 12, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.724002838134766, "t": 754.7037963867188, "r": 257.24335, "b": 764.1082153320312, "coord_origin": "TOPLEFT"}, "confidence": 0.9469243884086609, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 12, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 538.058349609375, "t": 754.3980102539062, "r": 547.25031, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9040942788124084, "cells": [{"id": 1, "text": "xi", "bbox": {"l": 538.85999, "t": 754.848721, "r": 547.25031, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "xi"}]}}, {"page_no": 13, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "xii ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Rob Bestgen ", "bbox": {"l": 263.39999, "t": 77.50867000000005, "r": 327.9169, "b": 86.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "is a member of the DB2 for i Center of ", "bbox": {"l": 327.89996, "t": 77.50867000000005, "r": 498.72397, "b": 86.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Excellence team helping customers use the capabilities of DB2 ", "bbox": {"l": 263.39999, "t": 89.50847999999996, "r": 541.20526, "b": 98.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "for i. In addition, Rob is the chief architect of the DB2 SQL ", "bbox": {"l": 263.40002, "t": 101.50829999999996, "r": 521.90179, "b": 110.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Query Engine (SQE) for DB2 for i and is the product ", "bbox": {"l": 263.40002, "t": 113.50811999999996, "r": 495.96112, "b": 122.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "development manager for DB2 Web Query for i. ", "bbox": {"l": 263.40002, "t": 125.50792999999999, "r": 476.70428, "b": 134.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Mike Cain ", "bbox": {"l": 263.40002, "t": 193.00787000000003, "r": 312.89825, "b": 202.22089000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "is a Senior Technical Staff Member within the IBM ", "bbox": {"l": 312.84045, "t": 193.00787000000003, "r": 535.45636, "b": 202.22089000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Systems and Technology Group. He is also the founder and ", "bbox": {"l": 263.40002, "t": 205.00769000000003, "r": 529.36505, "b": 214.22069999999997, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "team leader of the DB2 for i Center of Excellence in Rochester, ", "bbox": {"l": 263.40002, "t": 217.00751000000002, "r": 541.17163, "b": 226.22051999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Minnesota US. Before his current position, he worked as an ", "bbox": {"l": 263.40002, "t": 229.00732000000005, "r": 528.82898, "b": 238.22033999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "IBM AS/400 Systems Engineer and technical consultant. ", "bbox": {"l": 263.40002, "t": 241.00714000000005, "r": 516.10809, "b": 250.22015, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Before joining IBM in 1988, Mike worked as a System/38 ", "bbox": {"l": 263.40002, "t": 253.00696000000005, "r": 516.11694, "b": 262.21997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "programmer and data processing manager for a property and ", "bbox": {"l": 263.40002, "t": 265.00676999999996, "r": 537.08087, "b": 274.21979, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "casualty insurance company. Mike has 26 years of experience ", "bbox": {"l": 263.40002, "t": 277.00658999999996, "r": 539.87268, "b": 286.2196, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "with IBM, engaging clients and Business Partners around the ", "bbox": {"l": 263.40002, "t": 289.00644000000005, "r": 536.25336, "b": 298.21942, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "world. In addition to assisting clients, he uses his knowledge ", "bbox": {"l": 263.40002, "t": 301.00626, "r": 532.00836, "b": 310.21924, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "and experience to influence the IBM solution, development, ", "bbox": {"l": 263.40002, "t": 313.00607, "r": 527.71844, "b": 322.21906, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "and support processes.", "bbox": {"l": 263.40002, "t": 325.00589, "r": 367.55078, "b": 334.21887, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Dan Cruikshank ", "bbox": {"l": 263.40002, "t": 344.98566, "r": 342.26331, "b": 354.19864, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "has been an IT Professional since 1972. He ", "bbox": {"l": 342.24039, "t": 344.98566, "r": 538.6994, "b": 354.19864, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "has consulted on a number of different project areas since ", "bbox": {"l": 263.40002, "t": 356.98546999999996, "r": 522.98248, "b": 366.19845999999995, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "joining IBM Rochester in 1988. Since 1993, Dan was focused ", "bbox": {"l": 263.40002, "t": 368.9852900000001, "r": 536.84882, "b": 378.19827, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "primarily on resolving IBM System ifi application and database ", "bbox": {"l": 263.40002, "t": 380.98511, "r": 541.32196, "b": 390.19809, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "performance issues at several IBM customer accounts. Since ", "bbox": {"l": 263.40002, "t": 392.98491999999993, "r": 536.4115, "b": 402.1979099999999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "1998, Dan has been one of the primary instructors for the ", "bbox": {"l": 263.40002, "t": 404.98474000000004, "r": 519.79437, "b": 414.19772, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Database Optimization Workshop. Most recently, Dan is a ", "bbox": {"l": 263.40002, "t": 416.98456, "r": 520.69763, "b": 426.19754, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "member of the DB2 for i Center of Excellence team with IBM ", "bbox": {"l": 263.40002, "t": 428.98438, "r": 532.99817, "b": 438.19736, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Rochester Lab Services. ", "bbox": {"l": 263.40002, "t": 440.98419, "r": 375.21091, "b": 450.19717, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Jim Denton ", "bbox": {"l": 263.40002, "t": 463.00375, "r": 320.5993, "b": 472.21674, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "is a senior consultant at the IBM DB2 for i Center ", "bbox": {"l": 320.58038, "t": 463.00375, "r": 539.80682, "b": 472.21674, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "of Excellence, where his responsibilities include both teaching ", "bbox": {"l": 263.40002, "t": 475.00357, "r": 539.302, "b": 484.21655, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "courses and hands on consulting. Jim specializes in SQL ", "bbox": {"l": 263.40002, "t": 487.00339, "r": 518.37109, "b": 496.21637, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "performance, data-centric programming, and database ", "bbox": {"l": 263.40002, "t": 499.0032, "r": 507.58939, "b": 508.21619, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "modernization. Jim started his IBM career in 1981 as an S/38 ", "bbox": {"l": 263.40002, "t": 511.00302, "r": 537.43854, "b": 520.216, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "operating system programmer. Before joining the consulting ", "bbox": {"l": 263.40002, "t": 523.00284, "r": 529.47443, "b": 532.21582, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "team, his key assignments included 10 years as a systems ", "bbox": {"l": 263.40002, "t": 535.00262, "r": 525.58606, "b": 544.21564, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "performance specialist, five years as the lead \u201cJDE on i\u201d ", "bbox": {"l": 263.40002, "t": 547.00244, "r": 512.86005, "b": 556.2154400000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "analyst, three years as a consultant at the IBM Benchmark and ", "bbox": {"l": 263.40002, "t": 559.00224, "r": 541.24127, "b": 568.21524, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Briefing Center in Montpellier France, and a total of 11 years as ", "bbox": {"l": 263.40002, "t": 571.00204, "r": 541.1795, "b": 580.21504, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "an operating system developer, including five years designing ", "bbox": {"l": 263.40002, "t": 583.00185, "r": 537.2641, "b": 592.21484, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "and implementing enhancements to DB2 for i.", "bbox": {"l": 263.40002, "t": 595.00165, "r": 465.90363, "b": 604.21465, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Doug Mack ", "bbox": {"l": 263.40002, "t": 615.04117, "r": 318.42407, "b": 624.2541699999999, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "is a DB2 for i and Business Intelligence Consultant ", "bbox": {"l": 318.47983, "t": 615.04117, "r": 541.1944, "b": 624.2541699999999, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "in the IBM Power Systems\u2122 Lab Services organization. ", "bbox": {"l": 263.40002, "t": 627.04097, "r": 513.45575, "b": 636.25397, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Doug\u2019s 30+ year career with IBM spans many roles, including ", "bbox": {"l": 263.40002, "t": 639.0407700000001, "r": 536.81903, "b": 648.25377, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "product development, technical sales support, Business ", "bbox": {"l": 263.40002, "t": 651.04057, "r": 512.66986, "b": 660.25357, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Intelligence Sales Specialist, and DB2 for i Product Marketing ", "bbox": {"l": 263.40002, "t": 663.0403699999999, "r": 537.38861, "b": 672.25338, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Manager. Doug is a featured speaker at User Group ", "bbox": {"l": 263.40002, "t": 675.04018, "r": 495.84451, "b": 684.25319, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "conferences and meetings, IBM Technical Conferences, and ", "bbox": {"l": 263.40002, "t": 687.03999, "r": 531.87579, "b": 696.252998, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Executive Briefings.", "bbox": {"l": 263.40002, "t": 699.039803, "r": 350.62271, "b": 708.252808, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.18641662597656, "t": 754.4242553710938, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.91111159324646, "cells": [{"id": 0, "text": "xii ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.32842254638672, "t": 754.7139282226562, "r": 334.42142, "b": 763.9345703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9425985813140869, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 262.9671630859375, "t": 76.57386779785156, "r": 541.20526, "b": 135.15176391601562, "coord_origin": "TOPLEFT"}, "confidence": 0.9491702318191528, "cells": [{"id": 2, "text": "Rob Bestgen ", "bbox": {"l": 263.39999, "t": 77.50867000000005, "r": 327.9169, "b": 86.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "is a member of the DB2 for i Center of ", "bbox": {"l": 327.89996, "t": 77.50867000000005, "r": 498.72397, "b": 86.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Excellence team helping customers use the capabilities of DB2 ", "bbox": {"l": 263.39999, "t": 89.50847999999996, "r": 541.20526, "b": 98.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "for i. In addition, Rob is the chief architect of the DB2 SQL ", "bbox": {"l": 263.40002, "t": 101.50829999999996, "r": 521.90179, "b": 110.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Query Engine (SQE) for DB2 for i and is the product ", "bbox": {"l": 263.40002, "t": 113.50811999999996, "r": 495.96112, "b": 122.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "development manager for DB2 Web Query for i. ", "bbox": {"l": 263.40002, "t": 125.50792999999999, "r": 476.70428, "b": 134.72095000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 262.94354248046875, "t": 191.9833984375, "r": 541.17163, "b": 334.21887, "coord_origin": "TOPLEFT"}, "confidence": 0.9866385459899902, "cells": [{"id": 8, "text": "Mike Cain ", "bbox": {"l": 263.40002, "t": 193.00787000000003, "r": 312.89825, "b": 202.22089000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "is a Senior Technical Staff Member within the IBM ", "bbox": {"l": 312.84045, "t": 193.00787000000003, "r": 535.45636, "b": 202.22089000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Systems and Technology Group. He is also the founder and ", "bbox": {"l": 263.40002, "t": 205.00769000000003, "r": 529.36505, "b": 214.22069999999997, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "team leader of the DB2 for i Center of Excellence in Rochester, ", "bbox": {"l": 263.40002, "t": 217.00751000000002, "r": 541.17163, "b": 226.22051999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Minnesota US. Before his current position, he worked as an ", "bbox": {"l": 263.40002, "t": 229.00732000000005, "r": 528.82898, "b": 238.22033999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "IBM AS/400 Systems Engineer and technical consultant. ", "bbox": {"l": 263.40002, "t": 241.00714000000005, "r": 516.10809, "b": 250.22015, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Before joining IBM in 1988, Mike worked as a System/38 ", "bbox": {"l": 263.40002, "t": 253.00696000000005, "r": 516.11694, "b": 262.21997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "programmer and data processing manager for a property and ", "bbox": {"l": 263.40002, "t": 265.00676999999996, "r": 537.08087, "b": 274.21979, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "casualty insurance company. Mike has 26 years of experience ", "bbox": {"l": 263.40002, "t": 277.00658999999996, "r": 539.87268, "b": 286.2196, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "with IBM, engaging clients and Business Partners around the ", "bbox": {"l": 263.40002, "t": 289.00644000000005, "r": 536.25336, "b": 298.21942, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "world. In addition to assisting clients, he uses his knowledge ", "bbox": {"l": 263.40002, "t": 301.00626, "r": 532.00836, "b": 310.21924, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "and experience to influence the IBM solution, development, ", "bbox": {"l": 263.40002, "t": 313.00607, "r": 527.71844, "b": 322.21906, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "and support processes.", "bbox": {"l": 263.40002, "t": 325.00589, "r": 367.55078, "b": 334.21887, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 262.7120666503906, "t": 344.05780029296875, "r": 541.32196, "b": 450.19717, "coord_origin": "TOPLEFT"}, "confidence": 0.9859716296195984, "cells": [{"id": 21, "text": "Dan Cruikshank ", "bbox": {"l": 263.40002, "t": 344.98566, "r": 342.26331, "b": 354.19864, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "has been an IT Professional since 1972. He ", "bbox": {"l": 342.24039, "t": 344.98566, "r": 538.6994, "b": 354.19864, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "has consulted on a number of different project areas since ", "bbox": {"l": 263.40002, "t": 356.98546999999996, "r": 522.98248, "b": 366.19845999999995, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "joining IBM Rochester in 1988. Since 1993, Dan was focused ", "bbox": {"l": 263.40002, "t": 368.9852900000001, "r": 536.84882, "b": 378.19827, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "primarily on resolving IBM System ifi application and database ", "bbox": {"l": 263.40002, "t": 380.98511, "r": 541.32196, "b": 390.19809, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "performance issues at several IBM customer accounts. Since ", "bbox": {"l": 263.40002, "t": 392.98491999999993, "r": 536.4115, "b": 402.1979099999999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "1998, Dan has been one of the primary instructors for the ", "bbox": {"l": 263.40002, "t": 404.98474000000004, "r": 519.79437, "b": 414.19772, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Database Optimization Workshop. Most recently, Dan is a ", "bbox": {"l": 263.40002, "t": 416.98456, "r": 520.69763, "b": 426.19754, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "member of the DB2 for i Center of Excellence team with IBM ", "bbox": {"l": 263.40002, "t": 428.98438, "r": 532.99817, "b": 438.19736, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Rochester Lab Services. ", "bbox": {"l": 263.40002, "t": 440.98419, "r": 375.21091, "b": 450.19717, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 262.76617431640625, "t": 462.0334167480469, "r": 541.24127, "b": 604.21465, "coord_origin": "TOPLEFT"}, "confidence": 0.9878524541854858, "cells": [{"id": 31, "text": "Jim Denton ", "bbox": {"l": 263.40002, "t": 463.00375, "r": 320.5993, "b": 472.21674, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "is a senior consultant at the IBM DB2 for i Center ", "bbox": {"l": 320.58038, "t": 463.00375, "r": 539.80682, "b": 472.21674, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "of Excellence, where his responsibilities include both teaching ", "bbox": {"l": 263.40002, "t": 475.00357, "r": 539.302, "b": 484.21655, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "courses and hands on consulting. Jim specializes in SQL ", "bbox": {"l": 263.40002, "t": 487.00339, "r": 518.37109, "b": 496.21637, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "performance, data-centric programming, and database ", "bbox": {"l": 263.40002, "t": 499.0032, "r": 507.58939, "b": 508.21619, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "modernization. Jim started his IBM career in 1981 as an S/38 ", "bbox": {"l": 263.40002, "t": 511.00302, "r": 537.43854, "b": 520.216, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "operating system programmer. Before joining the consulting ", "bbox": {"l": 263.40002, "t": 523.00284, "r": 529.47443, "b": 532.21582, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "team, his key assignments included 10 years as a systems ", "bbox": {"l": 263.40002, "t": 535.00262, "r": 525.58606, "b": 544.21564, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "performance specialist, five years as the lead \u201cJDE on i\u201d ", "bbox": {"l": 263.40002, "t": 547.00244, "r": 512.86005, "b": 556.2154400000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "analyst, three years as a consultant at the IBM Benchmark and ", "bbox": {"l": 263.40002, "t": 559.00224, "r": 541.24127, "b": 568.21524, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Briefing Center in Montpellier France, and a total of 11 years as ", "bbox": {"l": 263.40002, "t": 571.00204, "r": 541.1795, "b": 580.21504, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "an operating system developer, including five years designing ", "bbox": {"l": 263.40002, "t": 583.00185, "r": 537.2641, "b": 592.21484, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "and implementing enhancements to DB2 for i.", "bbox": {"l": 263.40002, "t": 595.00165, "r": 465.90363, "b": 604.21465, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 262.9361877441406, "t": 614.0336303710938, "r": 541.1944, "b": 708.252808, "coord_origin": "TOPLEFT"}, "confidence": 0.9843889474868774, "cells": [{"id": 44, "text": "Doug Mack ", "bbox": {"l": 263.40002, "t": 615.04117, "r": 318.42407, "b": 624.2541699999999, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "is a DB2 for i and Business Intelligence Consultant ", "bbox": {"l": 318.47983, "t": 615.04117, "r": 541.1944, "b": 624.2541699999999, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "in the IBM Power Systems\u2122 Lab Services organization. ", "bbox": {"l": 263.40002, "t": 627.04097, "r": 513.45575, "b": 636.25397, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Doug\u2019s 30+ year career with IBM spans many roles, including ", "bbox": {"l": 263.40002, "t": 639.0407700000001, "r": 536.81903, "b": 648.25377, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "product development, technical sales support, Business ", "bbox": {"l": 263.40002, "t": 651.04057, "r": 512.66986, "b": 660.25357, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Intelligence Sales Specialist, and DB2 for i Product Marketing ", "bbox": {"l": 263.40002, "t": 663.0403699999999, "r": 537.38861, "b": 672.25338, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Manager. Doug is a featured speaker at User Group ", "bbox": {"l": 263.40002, "t": 675.04018, "r": 495.84451, "b": 684.25319, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "conferences and meetings, IBM Technical Conferences, and ", "bbox": {"l": 263.40002, "t": 687.03999, "r": 531.87579, "b": 696.252998, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Executive Briefings.", "bbox": {"l": 263.40002, "t": 699.039803, "r": 350.62271, "b": 708.252808, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "picture", "bbox": {"l": 141.68251037597656, "t": 77.3314437866211, "r": 249.5221405029297, "b": 183.49258422851562, "coord_origin": "TOPLEFT"}, "confidence": 0.9875855445861816, "cells": []}, {"id": 8, "label": "picture", "bbox": {"l": 141.71910095214844, "t": 192.56460571289062, "r": 251.5185546875, "b": 319.4869079589844, "coord_origin": "TOPLEFT"}, "confidence": 0.9871560335159302, "cells": []}, {"id": 9, "label": "picture", "bbox": {"l": 141.89089965820312, "t": 344.6142883300781, "r": 251.38380432128906, "b": 454.1204833984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9869871139526367, "cells": []}, {"id": 10, "label": "picture", "bbox": {"l": 141.69131469726562, "t": 614.610107421875, "r": 250.86129760742188, "b": 724.1473999023438, "coord_origin": "TOPLEFT"}, "confidence": 0.9869828224182129, "cells": []}, {"id": 11, "label": "picture", "bbox": {"l": 141.57579040527344, "t": 462.79840087890625, "r": 249.41360473632812, "b": 568.6048583984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9861478805541992, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 13, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.18641662597656, "t": 754.4242553710938, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.91111159324646, "cells": [{"id": 0, "text": "xii ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "xii"}, {"label": "page_footer", "id": 1, "page_no": 13, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.32842254638672, "t": 754.7139282226562, "r": 334.42142, "b": 763.9345703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9425985813140869, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 2, "page_no": 13, "cluster": {"id": 2, "label": "text", "bbox": {"l": 262.9671630859375, "t": 76.57386779785156, "r": 541.20526, "b": 135.15176391601562, "coord_origin": "TOPLEFT"}, "confidence": 0.9491702318191528, "cells": [{"id": 2, "text": "Rob Bestgen ", "bbox": {"l": 263.39999, "t": 77.50867000000005, "r": 327.9169, "b": 86.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "is a member of the DB2 for i Center of ", "bbox": {"l": 327.89996, "t": 77.50867000000005, "r": 498.72397, "b": 86.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Excellence team helping customers use the capabilities of DB2 ", "bbox": {"l": 263.39999, "t": 89.50847999999996, "r": 541.20526, "b": 98.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "for i. In addition, Rob is the chief architect of the DB2 SQL ", "bbox": {"l": 263.40002, "t": 101.50829999999996, "r": 521.90179, "b": 110.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Query Engine (SQE) for DB2 for i and is the product ", "bbox": {"l": 263.40002, "t": 113.50811999999996, "r": 495.96112, "b": 122.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "development manager for DB2 Web Query for i. ", "bbox": {"l": 263.40002, "t": 125.50792999999999, "r": 476.70428, "b": 134.72095000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Rob Bestgen is a member of the DB2 for i Center of Excellence team helping customers use the capabilities of DB2 for i. In addition, Rob is the chief architect of the DB2 SQL Query Engine (SQE) for DB2 for i and is the product development manager for DB2 Web Query for i."}, {"label": "text", "id": 3, "page_no": 13, "cluster": {"id": 3, "label": "text", "bbox": {"l": 262.94354248046875, "t": 191.9833984375, "r": 541.17163, "b": 334.21887, "coord_origin": "TOPLEFT"}, "confidence": 0.9866385459899902, "cells": [{"id": 8, "text": "Mike Cain ", "bbox": {"l": 263.40002, "t": 193.00787000000003, "r": 312.89825, "b": 202.22089000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "is a Senior Technical Staff Member within the IBM ", "bbox": {"l": 312.84045, "t": 193.00787000000003, "r": 535.45636, "b": 202.22089000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Systems and Technology Group. He is also the founder and ", "bbox": {"l": 263.40002, "t": 205.00769000000003, "r": 529.36505, "b": 214.22069999999997, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "team leader of the DB2 for i Center of Excellence in Rochester, ", "bbox": {"l": 263.40002, "t": 217.00751000000002, "r": 541.17163, "b": 226.22051999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Minnesota US. Before his current position, he worked as an ", "bbox": {"l": 263.40002, "t": 229.00732000000005, "r": 528.82898, "b": 238.22033999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "IBM AS/400 Systems Engineer and technical consultant. ", "bbox": {"l": 263.40002, "t": 241.00714000000005, "r": 516.10809, "b": 250.22015, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Before joining IBM in 1988, Mike worked as a System/38 ", "bbox": {"l": 263.40002, "t": 253.00696000000005, "r": 516.11694, "b": 262.21997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "programmer and data processing manager for a property and ", "bbox": {"l": 263.40002, "t": 265.00676999999996, "r": 537.08087, "b": 274.21979, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "casualty insurance company. Mike has 26 years of experience ", "bbox": {"l": 263.40002, "t": 277.00658999999996, "r": 539.87268, "b": 286.2196, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "with IBM, engaging clients and Business Partners around the ", "bbox": {"l": 263.40002, "t": 289.00644000000005, "r": 536.25336, "b": 298.21942, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "world. In addition to assisting clients, he uses his knowledge ", "bbox": {"l": 263.40002, "t": 301.00626, "r": 532.00836, "b": 310.21924, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "and experience to influence the IBM solution, development, ", "bbox": {"l": 263.40002, "t": 313.00607, "r": 527.71844, "b": 322.21906, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "and support processes.", "bbox": {"l": 263.40002, "t": 325.00589, "r": 367.55078, "b": 334.21887, "coord_origin": "TOPLEFT"}}]}, "text": "Mike Cain is a Senior Technical Staff Member within the IBM Systems and Technology Group. He is also the founder and team leader of the DB2 for i Center of Excellence in Rochester, Minnesota US. Before his current position, he worked as an IBM AS/400 Systems Engineer and technical consultant. Before joining IBM in 1988, Mike worked as a System/38 programmer and data processing manager for a property and casualty insurance company. Mike has 26 years of experience with IBM, engaging clients and Business Partners around the world. In addition to assisting clients, he uses his knowledge and experience to influence the IBM solution, development, and support processes."}, {"label": "text", "id": 4, "page_no": 13, "cluster": {"id": 4, "label": "text", "bbox": {"l": 262.7120666503906, "t": 344.05780029296875, "r": 541.32196, "b": 450.19717, "coord_origin": "TOPLEFT"}, "confidence": 0.9859716296195984, "cells": [{"id": 21, "text": "Dan Cruikshank ", "bbox": {"l": 263.40002, "t": 344.98566, "r": 342.26331, "b": 354.19864, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "has been an IT Professional since 1972. He ", "bbox": {"l": 342.24039, "t": 344.98566, "r": 538.6994, "b": 354.19864, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "has consulted on a number of different project areas since ", "bbox": {"l": 263.40002, "t": 356.98546999999996, "r": 522.98248, "b": 366.19845999999995, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "joining IBM Rochester in 1988. Since 1993, Dan was focused ", "bbox": {"l": 263.40002, "t": 368.9852900000001, "r": 536.84882, "b": 378.19827, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "primarily on resolving IBM System ifi application and database ", "bbox": {"l": 263.40002, "t": 380.98511, "r": 541.32196, "b": 390.19809, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "performance issues at several IBM customer accounts. Since ", "bbox": {"l": 263.40002, "t": 392.98491999999993, "r": 536.4115, "b": 402.1979099999999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "1998, Dan has been one of the primary instructors for the ", "bbox": {"l": 263.40002, "t": 404.98474000000004, "r": 519.79437, "b": 414.19772, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Database Optimization Workshop. Most recently, Dan is a ", "bbox": {"l": 263.40002, "t": 416.98456, "r": 520.69763, "b": 426.19754, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "member of the DB2 for i Center of Excellence team with IBM ", "bbox": {"l": 263.40002, "t": 428.98438, "r": 532.99817, "b": 438.19736, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Rochester Lab Services. ", "bbox": {"l": 263.40002, "t": 440.98419, "r": 375.21091, "b": 450.19717, "coord_origin": "TOPLEFT"}}]}, "text": "Dan Cruikshank has been an IT Professional since 1972. He has consulted on a number of different project areas since joining IBM Rochester in 1988. Since 1993, Dan was focused primarily on resolving IBM System ifi application and database performance issues at several IBM customer accounts. Since 1998, Dan has been one of the primary instructors for the Database Optimization Workshop. Most recently, Dan is a member of the DB2 for i Center of Excellence team with IBM Rochester Lab Services."}, {"label": "text", "id": 5, "page_no": 13, "cluster": {"id": 5, "label": "text", "bbox": {"l": 262.76617431640625, "t": 462.0334167480469, "r": 541.24127, "b": 604.21465, "coord_origin": "TOPLEFT"}, "confidence": 0.9878524541854858, "cells": [{"id": 31, "text": "Jim Denton ", "bbox": {"l": 263.40002, "t": 463.00375, "r": 320.5993, "b": 472.21674, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "is a senior consultant at the IBM DB2 for i Center ", "bbox": {"l": 320.58038, "t": 463.00375, "r": 539.80682, "b": 472.21674, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "of Excellence, where his responsibilities include both teaching ", "bbox": {"l": 263.40002, "t": 475.00357, "r": 539.302, "b": 484.21655, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "courses and hands on consulting. Jim specializes in SQL ", "bbox": {"l": 263.40002, "t": 487.00339, "r": 518.37109, "b": 496.21637, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "performance, data-centric programming, and database ", "bbox": {"l": 263.40002, "t": 499.0032, "r": 507.58939, "b": 508.21619, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "modernization. Jim started his IBM career in 1981 as an S/38 ", "bbox": {"l": 263.40002, "t": 511.00302, "r": 537.43854, "b": 520.216, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "operating system programmer. Before joining the consulting ", "bbox": {"l": 263.40002, "t": 523.00284, "r": 529.47443, "b": 532.21582, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "team, his key assignments included 10 years as a systems ", "bbox": {"l": 263.40002, "t": 535.00262, "r": 525.58606, "b": 544.21564, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "performance specialist, five years as the lead \u201cJDE on i\u201d ", "bbox": {"l": 263.40002, "t": 547.00244, "r": 512.86005, "b": 556.2154400000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "analyst, three years as a consultant at the IBM Benchmark and ", "bbox": {"l": 263.40002, "t": 559.00224, "r": 541.24127, "b": 568.21524, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Briefing Center in Montpellier France, and a total of 11 years as ", "bbox": {"l": 263.40002, "t": 571.00204, "r": 541.1795, "b": 580.21504, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "an operating system developer, including five years designing ", "bbox": {"l": 263.40002, "t": 583.00185, "r": 537.2641, "b": 592.21484, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "and implementing enhancements to DB2 for i.", "bbox": {"l": 263.40002, "t": 595.00165, "r": 465.90363, "b": 604.21465, "coord_origin": "TOPLEFT"}}]}, "text": "Jim Denton is a senior consultant at the IBM DB2 for i Center of Excellence, where his responsibilities include both teaching courses and hands on consulting. Jim specializes in SQL performance, data-centric programming, and database modernization. Jim started his IBM career in 1981 as an S/38 operating system programmer. Before joining the consulting team, his key assignments included 10 years as a systems performance specialist, five years as the lead \u201cJDE on i\u201d analyst, three years as a consultant at the IBM Benchmark and Briefing Center in Montpellier France, and a total of 11 years as an operating system developer, including five years designing and implementing enhancements to DB2 for i."}, {"label": "text", "id": 6, "page_no": 13, "cluster": {"id": 6, "label": "text", "bbox": {"l": 262.9361877441406, "t": 614.0336303710938, "r": 541.1944, "b": 708.252808, "coord_origin": "TOPLEFT"}, "confidence": 0.9843889474868774, "cells": [{"id": 44, "text": "Doug Mack ", "bbox": {"l": 263.40002, "t": 615.04117, "r": 318.42407, "b": 624.2541699999999, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "is a DB2 for i and Business Intelligence Consultant ", "bbox": {"l": 318.47983, "t": 615.04117, "r": 541.1944, "b": 624.2541699999999, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "in the IBM Power Systems\u2122 Lab Services organization. ", "bbox": {"l": 263.40002, "t": 627.04097, "r": 513.45575, "b": 636.25397, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Doug\u2019s 30+ year career with IBM spans many roles, including ", "bbox": {"l": 263.40002, "t": 639.0407700000001, "r": 536.81903, "b": 648.25377, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "product development, technical sales support, Business ", "bbox": {"l": 263.40002, "t": 651.04057, "r": 512.66986, "b": 660.25357, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Intelligence Sales Specialist, and DB2 for i Product Marketing ", "bbox": {"l": 263.40002, "t": 663.0403699999999, "r": 537.38861, "b": 672.25338, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Manager. Doug is a featured speaker at User Group ", "bbox": {"l": 263.40002, "t": 675.04018, "r": 495.84451, "b": 684.25319, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "conferences and meetings, IBM Technical Conferences, and ", "bbox": {"l": 263.40002, "t": 687.03999, "r": 531.87579, "b": 696.252998, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Executive Briefings.", "bbox": {"l": 263.40002, "t": 699.039803, "r": 350.62271, "b": 708.252808, "coord_origin": "TOPLEFT"}}]}, "text": "Doug Mack is a DB2 for i and Business Intelligence Consultant in the IBM Power Systems\u2122 Lab Services organization. Doug\u2019s 30+ year career with IBM spans many roles, including product development, technical sales support, Business Intelligence Sales Specialist, and DB2 for i Product Marketing Manager. Doug is a featured speaker at User Group conferences and meetings, IBM Technical Conferences, and Executive Briefings."}, {"label": "picture", "id": 7, "page_no": 13, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 141.68251037597656, "t": 77.3314437866211, "r": 249.5221405029297, "b": 183.49258422851562, "coord_origin": "TOPLEFT"}, "confidence": 0.9875855445861816, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 8, "page_no": 13, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 141.71910095214844, "t": 192.56460571289062, "r": 251.5185546875, "b": 319.4869079589844, "coord_origin": "TOPLEFT"}, "confidence": 0.9871560335159302, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 9, "page_no": 13, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 141.89089965820312, "t": 344.6142883300781, "r": 251.38380432128906, "b": 454.1204833984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9869871139526367, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 10, "page_no": 13, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 141.69131469726562, "t": 614.610107421875, "r": 250.86129760742188, "b": 724.1473999023438, "coord_origin": "TOPLEFT"}, "confidence": 0.9869828224182129, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 11, "page_no": 13, "cluster": {"id": 11, "label": "picture", "bbox": {"l": 141.57579040527344, "t": 462.79840087890625, "r": 249.41360473632812, "b": 568.6048583984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9861478805541992, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 13, "cluster": {"id": 2, "label": "text", "bbox": {"l": 262.9671630859375, "t": 76.57386779785156, "r": 541.20526, "b": 135.15176391601562, "coord_origin": "TOPLEFT"}, "confidence": 0.9491702318191528, "cells": [{"id": 2, "text": "Rob Bestgen ", "bbox": {"l": 263.39999, "t": 77.50867000000005, "r": 327.9169, "b": 86.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "is a member of the DB2 for i Center of ", "bbox": {"l": 327.89996, "t": 77.50867000000005, "r": 498.72397, "b": 86.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Excellence team helping customers use the capabilities of DB2 ", "bbox": {"l": 263.39999, "t": 89.50847999999996, "r": 541.20526, "b": 98.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "for i. In addition, Rob is the chief architect of the DB2 SQL ", "bbox": {"l": 263.40002, "t": 101.50829999999996, "r": 521.90179, "b": 110.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Query Engine (SQE) for DB2 for i and is the product ", "bbox": {"l": 263.40002, "t": 113.50811999999996, "r": 495.96112, "b": 122.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "development manager for DB2 Web Query for i. ", "bbox": {"l": 263.40002, "t": 125.50792999999999, "r": 476.70428, "b": 134.72095000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Rob Bestgen is a member of the DB2 for i Center of Excellence team helping customers use the capabilities of DB2 for i. In addition, Rob is the chief architect of the DB2 SQL Query Engine (SQE) for DB2 for i and is the product development manager for DB2 Web Query for i."}, {"label": "text", "id": 3, "page_no": 13, "cluster": {"id": 3, "label": "text", "bbox": {"l": 262.94354248046875, "t": 191.9833984375, "r": 541.17163, "b": 334.21887, "coord_origin": "TOPLEFT"}, "confidence": 0.9866385459899902, "cells": [{"id": 8, "text": "Mike Cain ", "bbox": {"l": 263.40002, "t": 193.00787000000003, "r": 312.89825, "b": 202.22089000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "is a Senior Technical Staff Member within the IBM ", "bbox": {"l": 312.84045, "t": 193.00787000000003, "r": 535.45636, "b": 202.22089000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Systems and Technology Group. He is also the founder and ", "bbox": {"l": 263.40002, "t": 205.00769000000003, "r": 529.36505, "b": 214.22069999999997, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "team leader of the DB2 for i Center of Excellence in Rochester, ", "bbox": {"l": 263.40002, "t": 217.00751000000002, "r": 541.17163, "b": 226.22051999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Minnesota US. Before his current position, he worked as an ", "bbox": {"l": 263.40002, "t": 229.00732000000005, "r": 528.82898, "b": 238.22033999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "IBM AS/400 Systems Engineer and technical consultant. ", "bbox": {"l": 263.40002, "t": 241.00714000000005, "r": 516.10809, "b": 250.22015, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Before joining IBM in 1988, Mike worked as a System/38 ", "bbox": {"l": 263.40002, "t": 253.00696000000005, "r": 516.11694, "b": 262.21997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "programmer and data processing manager for a property and ", "bbox": {"l": 263.40002, "t": 265.00676999999996, "r": 537.08087, "b": 274.21979, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "casualty insurance company. Mike has 26 years of experience ", "bbox": {"l": 263.40002, "t": 277.00658999999996, "r": 539.87268, "b": 286.2196, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "with IBM, engaging clients and Business Partners around the ", "bbox": {"l": 263.40002, "t": 289.00644000000005, "r": 536.25336, "b": 298.21942, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "world. In addition to assisting clients, he uses his knowledge ", "bbox": {"l": 263.40002, "t": 301.00626, "r": 532.00836, "b": 310.21924, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "and experience to influence the IBM solution, development, ", "bbox": {"l": 263.40002, "t": 313.00607, "r": 527.71844, "b": 322.21906, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "and support processes.", "bbox": {"l": 263.40002, "t": 325.00589, "r": 367.55078, "b": 334.21887, "coord_origin": "TOPLEFT"}}]}, "text": "Mike Cain is a Senior Technical Staff Member within the IBM Systems and Technology Group. He is also the founder and team leader of the DB2 for i Center of Excellence in Rochester, Minnesota US. Before his current position, he worked as an IBM AS/400 Systems Engineer and technical consultant. Before joining IBM in 1988, Mike worked as a System/38 programmer and data processing manager for a property and casualty insurance company. Mike has 26 years of experience with IBM, engaging clients and Business Partners around the world. In addition to assisting clients, he uses his knowledge and experience to influence the IBM solution, development, and support processes."}, {"label": "text", "id": 4, "page_no": 13, "cluster": {"id": 4, "label": "text", "bbox": {"l": 262.7120666503906, "t": 344.05780029296875, "r": 541.32196, "b": 450.19717, "coord_origin": "TOPLEFT"}, "confidence": 0.9859716296195984, "cells": [{"id": 21, "text": "Dan Cruikshank ", "bbox": {"l": 263.40002, "t": 344.98566, "r": 342.26331, "b": 354.19864, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "has been an IT Professional since 1972. He ", "bbox": {"l": 342.24039, "t": 344.98566, "r": 538.6994, "b": 354.19864, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "has consulted on a number of different project areas since ", "bbox": {"l": 263.40002, "t": 356.98546999999996, "r": 522.98248, "b": 366.19845999999995, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "joining IBM Rochester in 1988. Since 1993, Dan was focused ", "bbox": {"l": 263.40002, "t": 368.9852900000001, "r": 536.84882, "b": 378.19827, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "primarily on resolving IBM System ifi application and database ", "bbox": {"l": 263.40002, "t": 380.98511, "r": 541.32196, "b": 390.19809, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "performance issues at several IBM customer accounts. Since ", "bbox": {"l": 263.40002, "t": 392.98491999999993, "r": 536.4115, "b": 402.1979099999999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "1998, Dan has been one of the primary instructors for the ", "bbox": {"l": 263.40002, "t": 404.98474000000004, "r": 519.79437, "b": 414.19772, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Database Optimization Workshop. Most recently, Dan is a ", "bbox": {"l": 263.40002, "t": 416.98456, "r": 520.69763, "b": 426.19754, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "member of the DB2 for i Center of Excellence team with IBM ", "bbox": {"l": 263.40002, "t": 428.98438, "r": 532.99817, "b": 438.19736, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Rochester Lab Services. ", "bbox": {"l": 263.40002, "t": 440.98419, "r": 375.21091, "b": 450.19717, "coord_origin": "TOPLEFT"}}]}, "text": "Dan Cruikshank has been an IT Professional since 1972. He has consulted on a number of different project areas since joining IBM Rochester in 1988. Since 1993, Dan was focused primarily on resolving IBM System ifi application and database performance issues at several IBM customer accounts. Since 1998, Dan has been one of the primary instructors for the Database Optimization Workshop. Most recently, Dan is a member of the DB2 for i Center of Excellence team with IBM Rochester Lab Services."}, {"label": "text", "id": 5, "page_no": 13, "cluster": {"id": 5, "label": "text", "bbox": {"l": 262.76617431640625, "t": 462.0334167480469, "r": 541.24127, "b": 604.21465, "coord_origin": "TOPLEFT"}, "confidence": 0.9878524541854858, "cells": [{"id": 31, "text": "Jim Denton ", "bbox": {"l": 263.40002, "t": 463.00375, "r": 320.5993, "b": 472.21674, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "is a senior consultant at the IBM DB2 for i Center ", "bbox": {"l": 320.58038, "t": 463.00375, "r": 539.80682, "b": 472.21674, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "of Excellence, where his responsibilities include both teaching ", "bbox": {"l": 263.40002, "t": 475.00357, "r": 539.302, "b": 484.21655, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "courses and hands on consulting. Jim specializes in SQL ", "bbox": {"l": 263.40002, "t": 487.00339, "r": 518.37109, "b": 496.21637, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "performance, data-centric programming, and database ", "bbox": {"l": 263.40002, "t": 499.0032, "r": 507.58939, "b": 508.21619, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "modernization. Jim started his IBM career in 1981 as an S/38 ", "bbox": {"l": 263.40002, "t": 511.00302, "r": 537.43854, "b": 520.216, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "operating system programmer. Before joining the consulting ", "bbox": {"l": 263.40002, "t": 523.00284, "r": 529.47443, "b": 532.21582, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "team, his key assignments included 10 years as a systems ", "bbox": {"l": 263.40002, "t": 535.00262, "r": 525.58606, "b": 544.21564, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "performance specialist, five years as the lead \u201cJDE on i\u201d ", "bbox": {"l": 263.40002, "t": 547.00244, "r": 512.86005, "b": 556.2154400000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "analyst, three years as a consultant at the IBM Benchmark and ", "bbox": {"l": 263.40002, "t": 559.00224, "r": 541.24127, "b": 568.21524, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Briefing Center in Montpellier France, and a total of 11 years as ", "bbox": {"l": 263.40002, "t": 571.00204, "r": 541.1795, "b": 580.21504, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "an operating system developer, including five years designing ", "bbox": {"l": 263.40002, "t": 583.00185, "r": 537.2641, "b": 592.21484, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "and implementing enhancements to DB2 for i.", "bbox": {"l": 263.40002, "t": 595.00165, "r": 465.90363, "b": 604.21465, "coord_origin": "TOPLEFT"}}]}, "text": "Jim Denton is a senior consultant at the IBM DB2 for i Center of Excellence, where his responsibilities include both teaching courses and hands on consulting. Jim specializes in SQL performance, data-centric programming, and database modernization. Jim started his IBM career in 1981 as an S/38 operating system programmer. Before joining the consulting team, his key assignments included 10 years as a systems performance specialist, five years as the lead \u201cJDE on i\u201d analyst, three years as a consultant at the IBM Benchmark and Briefing Center in Montpellier France, and a total of 11 years as an operating system developer, including five years designing and implementing enhancements to DB2 for i."}, {"label": "text", "id": 6, "page_no": 13, "cluster": {"id": 6, "label": "text", "bbox": {"l": 262.9361877441406, "t": 614.0336303710938, "r": 541.1944, "b": 708.252808, "coord_origin": "TOPLEFT"}, "confidence": 0.9843889474868774, "cells": [{"id": 44, "text": "Doug Mack ", "bbox": {"l": 263.40002, "t": 615.04117, "r": 318.42407, "b": 624.2541699999999, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "is a DB2 for i and Business Intelligence Consultant ", "bbox": {"l": 318.47983, "t": 615.04117, "r": 541.1944, "b": 624.2541699999999, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "in the IBM Power Systems\u2122 Lab Services organization. ", "bbox": {"l": 263.40002, "t": 627.04097, "r": 513.45575, "b": 636.25397, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Doug\u2019s 30+ year career with IBM spans many roles, including ", "bbox": {"l": 263.40002, "t": 639.0407700000001, "r": 536.81903, "b": 648.25377, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "product development, technical sales support, Business ", "bbox": {"l": 263.40002, "t": 651.04057, "r": 512.66986, "b": 660.25357, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Intelligence Sales Specialist, and DB2 for i Product Marketing ", "bbox": {"l": 263.40002, "t": 663.0403699999999, "r": 537.38861, "b": 672.25338, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Manager. Doug is a featured speaker at User Group ", "bbox": {"l": 263.40002, "t": 675.04018, "r": 495.84451, "b": 684.25319, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "conferences and meetings, IBM Technical Conferences, and ", "bbox": {"l": 263.40002, "t": 687.03999, "r": 531.87579, "b": 696.252998, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Executive Briefings.", "bbox": {"l": 263.40002, "t": 699.039803, "r": 350.62271, "b": 708.252808, "coord_origin": "TOPLEFT"}}]}, "text": "Doug Mack is a DB2 for i and Business Intelligence Consultant in the IBM Power Systems\u2122 Lab Services organization. Doug\u2019s 30+ year career with IBM spans many roles, including product development, technical sales support, Business Intelligence Sales Specialist, and DB2 for i Product Marketing Manager. Doug is a featured speaker at User Group conferences and meetings, IBM Technical Conferences, and Executive Briefings."}, {"label": "picture", "id": 7, "page_no": 13, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 141.68251037597656, "t": 77.3314437866211, "r": 249.5221405029297, "b": 183.49258422851562, "coord_origin": "TOPLEFT"}, "confidence": 0.9875855445861816, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 8, "page_no": 13, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 141.71910095214844, "t": 192.56460571289062, "r": 251.5185546875, "b": 319.4869079589844, "coord_origin": "TOPLEFT"}, "confidence": 0.9871560335159302, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 9, "page_no": 13, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 141.89089965820312, "t": 344.6142883300781, "r": 251.38380432128906, "b": 454.1204833984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9869871139526367, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 10, "page_no": 13, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 141.69131469726562, "t": 614.610107421875, "r": 250.86129760742188, "b": 724.1473999023438, "coord_origin": "TOPLEFT"}, "confidence": 0.9869828224182129, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 11, "page_no": 13, "cluster": {"id": 11, "label": "picture", "bbox": {"l": 141.57579040527344, "t": 462.79840087890625, "r": 249.41360473632812, "b": 568.6048583984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9861478805541992, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 13, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.18641662597656, "t": 754.4242553710938, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.91111159324646, "cells": [{"id": 0, "text": "xii ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "xii"}, {"label": "page_footer", "id": 1, "page_no": 13, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.32842254638672, "t": 754.7139282226562, "r": 334.42142, "b": 763.9345703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9425985813140869, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 14, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": " Preface ", "bbox": {"l": 485.10001, "t": 755.538002, "r": 520.88135, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "xiii", "bbox": {"l": 533.34003, "t": 754.848721, "r": 547.19342, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Thanks to the following people for their contributions to this project:", "bbox": {"l": 136.79956, "t": 339.52869, "r": 432.1602500000001, "b": 348.74167, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Debra Landon", "bbox": {"l": 136.79956, "t": 361.48849, "r": 200.0416, "b": 370.70148, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "International Technical Support Organization, Rochester Center", "bbox": {"l": 136.79956, "t": 373.48830999999996, "r": 438.75391, "b": 382.70129, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Craig Aldrich, Mark Anderson, Theresa Euler, Scott Forstie, Chad Olstad", "bbox": {"l": 136.79955, "t": 395.50787, "r": 457.72974, "b": 404.72086, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "IBM Rochester Development", "bbox": {"l": 136.79955, "t": 407.50769, "r": 272.10016, "b": 416.72067, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Now you can become a published author, too!", "bbox": {"l": 64.800003, "t": 445.20071, "r": 413.15256, "b": 459.96371000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Here\u2019s an opportunity to spotlight your skills, grow your career, and become a published ", "bbox": {"l": 136.8, "t": 477.52872, "r": 525.74896, "b": 486.7417, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "author-all at the same time! Join an ITSO residency project and help write a book in your ", "bbox": {"l": 136.8, "t": 489.52853, "r": 537.30347, "b": 498.74152, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "area of expertise, while honing your experience using leading-edge technologies. Your efforts ", "bbox": {"l": 136.8, "t": 501.52835, "r": 547.23267, "b": 510.74133, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "will help to increase product acceptance and customer satisfaction, as you expand your ", "bbox": {"l": 136.8, "t": 513.52817, "r": 524.59961, "b": 522.7411500000001, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "network of technical contacts and relationships. Residencies run from two to six weeks in ", "bbox": {"l": 136.80002, "t": 525.5279800000001, "r": 532.24384, "b": 534.7409700000001, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "length, and you can participate either in person or as a remote resident working from your ", "bbox": {"l": 136.80002, "t": 537.52779, "r": 535.20209, "b": 546.74078, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "home base.", "bbox": {"l": 136.80002, "t": 549.52759, "r": 188.81511, "b": 558.74059, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Find out more about the residency program, browse the residency index, and apply online at:", "bbox": {"l": 136.80002, "t": 571.54715, "r": 546.81647, "b": 580.7601500000001, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "ibm.com", "bbox": {"l": 136.80002, "t": 588.6763599999999, "r": 171.77953, "b": 597.50092, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "/redbooks/residencies.html", "bbox": {"l": 171.77954, "t": 588.6763599999999, "r": 301.67783, "b": 597.45111, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Comments welcome", "bbox": {"l": 64.800003, "t": 626.22063, "r": 219.43166000000002, "b": 640.98363, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Your comments are important to us!", "bbox": {"l": 136.8, "t": 658.54872, "r": 294.74969, "b": 667.76172, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "We want our papers to be as helpful as possible. Send us your comments about this paper or ", "bbox": {"l": 136.8, "t": 680.50852, "r": 547.25244, "b": 689.72153, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "other IBM Redbooks publications in one of the following ways:", "bbox": {"l": 136.8, "t": 692.508331, "r": 410.18698, "b": 701.721336, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "GLYPH", "bbox": {"l": 136.8, "t": 709.697304, "r": 141.78, "b": 718.4720609999999, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Use the online ", "bbox": {"l": 151.20016, "t": 709.547897, "r": 217.90927, "b": 718.760902, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Contact us", "bbox": {"l": 217.86044, "t": 709.547897, "r": 269.52493, "b": 718.760902, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": " review Redbooks form found at:", "bbox": {"l": 269.51996, "t": 709.547897, "r": 412.55646, "b": 718.760902, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ibm.com", "bbox": {"l": 151.20013, "t": 726.677109, "r": 186.17964, "b": 735.501671, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "/redbooks", "bbox": {"l": 186.17966, "t": 726.677109, "r": 231.11916999999997, "b": 735.45187, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Tom McKinley ", "bbox": {"l": 263.39954, "t": 77.50725999999997, "r": 332.99799, "b": 86.72028, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "is an IBM Lab Services Consultant working on ", "bbox": {"l": 333.0, "t": 77.50725999999997, "r": 540.04248, "b": 86.72028, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "DB2 for IBM i in Rochester MN. His main focus is complex ", "bbox": {"l": 263.39954, "t": 89.50707999999997, "r": 522.99799, "b": 98.72009000000003, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "query performance that is associated with Business ", "bbox": {"l": 263.39954, "t": 101.50689999999997, "r": 494.28336, "b": 110.71991000000014, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Intelligence running on Very Large Databases. He worked as a ", "bbox": {"l": 263.39954, "t": 113.50671, "r": 541.15515, "b": 122.71973000000003, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "developer or performance analyst in the DB area from 1986 ", "bbox": {"l": 263.39954, "t": 125.50653000000011, "r": 528.91815, "b": 134.71954000000005, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "until 2006. Some of his major pieces of work include the ", "bbox": {"l": 263.39954, "t": 137.50635, "r": 513.48511, "b": 146.71936000000005, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Symmetric Multiple processing capabilities of DB2 for IBM i ", "bbox": {"l": 263.39954, "t": 149.50616000000002, "r": 527.07666, "b": 158.71918000000005, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "and Large Object Data types. In addition, he was on the ", "bbox": {"l": 263.39954, "t": 161.50598000000002, "r": 512.53601, "b": 170.71898999999996, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "original team that designed and built the SQL Query Engine. ", "bbox": {"l": 263.39954, "t": 173.50580000000002, "r": 532.94702, "b": 182.71880999999996, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Before his database work, he worked on Licensed Internal ", "bbox": {"l": 263.39954, "t": 185.50562000000002, "r": 523.24597, "b": 194.71862999999996, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Code for System 34 and System 36.", "bbox": {"l": 263.39954, "t": 197.50543000000005, "r": 423.67691, "b": 206.71844, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Kent Milligan ", "bbox": {"l": 263.39954, "t": 217.48517000000004, "r": 328.19531, "b": 226.69817999999998, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "is a senior DB2 consultant on the DB2 for i ", "bbox": {"l": 328.19928, "t": 217.48517000000004, "r": 519.0976, "b": 226.69817999999998, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Center of Excellence team within the IBM Lab Services and ", "bbox": {"l": 263.39954, "t": 229.48499000000004, "r": 529.25977, "b": 238.69799999999998, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Training organization. His primary responsibility is helping ", "bbox": {"l": 263.39954, "t": 241.48479999999995, "r": 520.32373, "b": 250.69781, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "software developers use the latest DB2 technologies and port ", "bbox": {"l": 263.39954, "t": 253.48461999999995, "r": 538.10938, "b": 262.69763, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "applications from other databases to DB2 for i. After graduating ", "bbox": {"l": 263.39954, "t": 265.48443999999995, "r": 541.26654, "b": 274.69745, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "from the University of Iowa, Kent spent the first eight years of ", "bbox": {"l": 263.39954, "t": 277.48425, "r": 534.98981, "b": 286.69727, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "his IBM career as a member of the DB2 development team in ", "bbox": {"l": 263.39954, "t": 289.4841, "r": 536.6889, "b": 298.69708, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "Rochester.", "bbox": {"l": 263.39954, "t": 301.48392, "r": 311.20654, "b": 310.69689999999997, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 485.10001, "t": 754.75048828125, "r": 520.88135, "b": 763.863001, "coord_origin": "TOPLEFT"}, "confidence": 0.914573073387146, "cells": [{"id": 0, "text": " Preface ", "bbox": {"l": 485.10001, "t": 755.538002, "r": 520.88135, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 532.5994262695312, "t": 754.2633056640625, "r": 547.19342, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8934566974639893, "cells": [{"id": 1, "text": "xiii", "bbox": {"l": 533.34003, "t": 754.848721, "r": 547.19342, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.6240234375, "t": 338.7327880859375, "r": 432.1602500000001, "b": 348.8023986816406, "coord_origin": "TOPLEFT"}, "confidence": 0.8790541291236877, "cells": [{"id": 2, "text": "Thanks to the following people for their contributions to this project:", "bbox": {"l": 136.79956, "t": 339.52869, "r": 432.1602500000001, "b": 348.74167, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 136.3055877685547, "t": 360.45208740234375, "r": 200.390869140625, "b": 370.70148, "coord_origin": "TOPLEFT"}, "confidence": 0.7089823484420776, "cells": [{"id": 3, "text": "Debra Landon", "bbox": {"l": 136.79956, "t": 361.48849, "r": 200.0416, "b": 370.70148, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 136.32855224609375, "t": 372.4372863769531, "r": 439.0932312011719, "b": 383.3298034667969, "coord_origin": "TOPLEFT"}, "confidence": 0.7829126119613647, "cells": [{"id": 4, "text": "International Technical Support Organization, Rochester Center", "bbox": {"l": 136.79956, "t": 373.48830999999996, "r": 438.75391, "b": 382.70129, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.09214782714844, "t": 394.6581115722656, "r": 457.72974, "b": 416.9281921386719, "coord_origin": "TOPLEFT"}, "confidence": 0.9423409700393677, "cells": [{"id": 5, "text": "Craig Aldrich, Mark Anderson, Theresa Euler, Scott Forstie, Chad Olstad", "bbox": {"l": 136.79955, "t": 395.50787, "r": 457.72974, "b": 404.72086, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "IBM Rochester Development", "bbox": {"l": 136.79955, "t": 407.50769, "r": 272.10016, "b": 416.72067, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "section_header", "bbox": {"l": 64.71363067626953, "t": 443.82012939453125, "r": 413.15256, "b": 460.31988525390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9612258076667786, "cells": [{"id": 7, "text": "Now you can become a published author, too!", "bbox": {"l": 64.800003, "t": 445.20071, "r": 413.15256, "b": 459.96371000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 135.805419921875, "t": 476.6553039550781, "r": 547.23267, "b": 558.74059, "coord_origin": "TOPLEFT"}, "confidence": 0.9876447319984436, "cells": [{"id": 8, "text": "Here\u2019s an opportunity to spotlight your skills, grow your career, and become a published ", "bbox": {"l": 136.8, "t": 477.52872, "r": 525.74896, "b": 486.7417, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "author-all at the same time! Join an ITSO residency project and help write a book in your ", "bbox": {"l": 136.8, "t": 489.52853, "r": 537.30347, "b": 498.74152, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "area of expertise, while honing your experience using leading-edge technologies. Your efforts ", "bbox": {"l": 136.8, "t": 501.52835, "r": 547.23267, "b": 510.74133, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "will help to increase product acceptance and customer satisfaction, as you expand your ", "bbox": {"l": 136.8, "t": 513.52817, "r": 524.59961, "b": 522.7411500000001, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "network of technical contacts and relationships. Residencies run from two to six weeks in ", "bbox": {"l": 136.80002, "t": 525.5279800000001, "r": 532.24384, "b": 534.7409700000001, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "length, and you can participate either in person or as a remote resident working from your ", "bbox": {"l": 136.80002, "t": 537.52779, "r": 535.20209, "b": 546.74078, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "home base.", "bbox": {"l": 136.80002, "t": 549.52759, "r": 188.81511, "b": 558.74059, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 136.59922790527344, "t": 570.6795654296875, "r": 546.81647, "b": 581.0769653320312, "coord_origin": "TOPLEFT"}, "confidence": 0.9406706094741821, "cells": [{"id": 15, "text": "Find out more about the residency program, browse the residency index, and apply online at:", "bbox": {"l": 136.80002, "t": 571.54715, "r": 546.81647, "b": 580.7601500000001, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 136.80002, "t": 587.9857788085938, "r": 301.67783, "b": 597.50092, "coord_origin": "TOPLEFT"}, "confidence": 0.8938496112823486, "cells": [{"id": 16, "text": "ibm.com", "bbox": {"l": 136.80002, "t": 588.6763599999999, "r": 171.77953, "b": 597.50092, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "/redbooks/residencies.html", "bbox": {"l": 171.77954, "t": 588.6763599999999, "r": 301.67783, "b": 597.45111, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "section_header", "bbox": {"l": 64.52783966064453, "t": 625.3417358398438, "r": 219.43166000000002, "b": 640.98363, "coord_origin": "TOPLEFT"}, "confidence": 0.9593470096588135, "cells": [{"id": 18, "text": "Comments welcome", "bbox": {"l": 64.800003, "t": 626.22063, "r": 219.43166000000002, "b": 640.98363, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 135.9565887451172, "t": 657.9795532226562, "r": 294.74969, "b": 667.8671875, "coord_origin": "TOPLEFT"}, "confidence": 0.926453173160553, "cells": [{"id": 19, "text": "Your comments are important to us!", "bbox": {"l": 136.8, "t": 658.54872, "r": 294.74969, "b": 667.76172, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 135.8791961669922, "t": 679.3858642578125, "r": 547.25244, "b": 701.721336, "coord_origin": "TOPLEFT"}, "confidence": 0.9736941456794739, "cells": [{"id": 20, "text": "We want our papers to be as helpful as possible. Send us your comments about this paper or ", "bbox": {"l": 136.8, "t": 680.50852, "r": 547.25244, "b": 689.72153, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "other IBM Redbooks publications in one of the following ways:", "bbox": {"l": 136.8, "t": 692.508331, "r": 410.18698, "b": 701.721336, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "list_item", "bbox": {"l": 135.62045288085938, "t": 708.805908203125, "r": 412.55646, "b": 718.760902, "coord_origin": "TOPLEFT"}, "confidence": 0.8550623655319214, "cells": [{"id": 22, "text": "GLYPH", "bbox": {"l": 136.8, "t": 709.697304, "r": 141.78, "b": 718.4720609999999, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Use the online ", "bbox": {"l": 151.20016, "t": 709.547897, "r": 217.90927, "b": 718.760902, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Contact us", "bbox": {"l": 217.86044, "t": 709.547897, "r": 269.52493, "b": 718.760902, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": " review Redbooks form found at:", "bbox": {"l": 269.51996, "t": 709.547897, "r": 412.55646, "b": 718.760902, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "text", "bbox": {"l": 151.20013, "t": 726.4096069335938, "r": 231.11916999999997, "b": 735.501671, "coord_origin": "TOPLEFT"}, "confidence": 0.7705531120300293, "cells": [{"id": 26, "text": "ibm.com", "bbox": {"l": 151.20013, "t": 726.677109, "r": 186.17964, "b": 735.501671, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "/redbooks", "bbox": {"l": 186.17966, "t": 726.677109, "r": 231.11916999999997, "b": 735.45187, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "text", "bbox": {"l": 262.7662658691406, "t": 76.673583984375, "r": 541.15515, "b": 206.9925079345703, "coord_origin": "TOPLEFT"}, "confidence": 0.9826179146766663, "cells": [{"id": 28, "text": "Tom McKinley ", "bbox": {"l": 263.39954, "t": 77.50725999999997, "r": 332.99799, "b": 86.72028, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "is an IBM Lab Services Consultant working on ", "bbox": {"l": 333.0, "t": 77.50725999999997, "r": 540.04248, "b": 86.72028, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "DB2 for IBM i in Rochester MN. His main focus is complex ", "bbox": {"l": 263.39954, "t": 89.50707999999997, "r": 522.99799, "b": 98.72009000000003, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "query performance that is associated with Business ", "bbox": {"l": 263.39954, "t": 101.50689999999997, "r": 494.28336, "b": 110.71991000000014, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Intelligence running on Very Large Databases. He worked as a ", "bbox": {"l": 263.39954, "t": 113.50671, "r": 541.15515, "b": 122.71973000000003, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "developer or performance analyst in the DB area from 1986 ", "bbox": {"l": 263.39954, "t": 125.50653000000011, "r": 528.91815, "b": 134.71954000000005, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "until 2006. Some of his major pieces of work include the ", "bbox": {"l": 263.39954, "t": 137.50635, "r": 513.48511, "b": 146.71936000000005, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Symmetric Multiple processing capabilities of DB2 for IBM i ", "bbox": {"l": 263.39954, "t": 149.50616000000002, "r": 527.07666, "b": 158.71918000000005, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "and Large Object Data types. In addition, he was on the ", "bbox": {"l": 263.39954, "t": 161.50598000000002, "r": 512.53601, "b": 170.71898999999996, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "original team that designed and built the SQL Query Engine. ", "bbox": {"l": 263.39954, "t": 173.50580000000002, "r": 532.94702, "b": 182.71880999999996, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Before his database work, he worked on Licensed Internal ", "bbox": {"l": 263.39954, "t": 185.50562000000002, "r": 523.24597, "b": 194.71862999999996, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Code for System 34 and System 36.", "bbox": {"l": 263.39954, "t": 197.50543000000005, "r": 423.67691, "b": 206.71844, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "text", "bbox": {"l": 262.6918029785156, "t": 216.41091918945312, "r": 541.26654, "b": 310.69689999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9823182821273804, "cells": [{"id": 40, "text": "Kent Milligan ", "bbox": {"l": 263.39954, "t": 217.48517000000004, "r": 328.19531, "b": 226.69817999999998, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "is a senior DB2 consultant on the DB2 for i ", "bbox": {"l": 328.19928, "t": 217.48517000000004, "r": 519.0976, "b": 226.69817999999998, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Center of Excellence team within the IBM Lab Services and ", "bbox": {"l": 263.39954, "t": 229.48499000000004, "r": 529.25977, "b": 238.69799999999998, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Training organization. His primary responsibility is helping ", "bbox": {"l": 263.39954, "t": 241.48479999999995, "r": 520.32373, "b": 250.69781, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "software developers use the latest DB2 technologies and port ", "bbox": {"l": 263.39954, "t": 253.48461999999995, "r": 538.10938, "b": 262.69763, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "applications from other databases to DB2 for i. After graduating ", "bbox": {"l": 263.39954, "t": 265.48443999999995, "r": 541.26654, "b": 274.69745, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "from the University of Iowa, Kent spent the first eight years of ", "bbox": {"l": 263.39954, "t": 277.48425, "r": 534.98981, "b": 286.69727, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "his IBM career as a member of the DB2 development team in ", "bbox": {"l": 263.39954, "t": 289.4841, "r": 536.6889, "b": 298.69708, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "Rochester.", "bbox": {"l": 263.39954, "t": 301.48392, "r": 311.20654, "b": 310.69689999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "picture", "bbox": {"l": 142.26431274414062, "t": 77.12178802490234, "r": 251.69140625, "b": 192.6881103515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9871392846107483, "cells": []}, {"id": 18, "label": "picture", "bbox": {"l": 142.39024353027344, "t": 216.5591278076172, "r": 251.9964141845703, "b": 326.3576965332031, "coord_origin": "TOPLEFT"}, "confidence": 0.9861040711402893, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 14, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 485.10001, "t": 754.75048828125, "r": 520.88135, "b": 763.863001, "coord_origin": "TOPLEFT"}, "confidence": 0.914573073387146, "cells": [{"id": 0, "text": " Preface ", "bbox": {"l": 485.10001, "t": 755.538002, "r": 520.88135, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Preface"}, {"label": "page_footer", "id": 1, "page_no": 14, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 532.5994262695312, "t": 754.2633056640625, "r": 547.19342, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8934566974639893, "cells": [{"id": 1, "text": "xiii", "bbox": {"l": 533.34003, "t": 754.848721, "r": 547.19342, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "xiii"}, {"label": "text", "id": 2, "page_no": 14, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.6240234375, "t": 338.7327880859375, "r": 432.1602500000001, "b": 348.8023986816406, "coord_origin": "TOPLEFT"}, "confidence": 0.8790541291236877, "cells": [{"id": 2, "text": "Thanks to the following people for their contributions to this project:", "bbox": {"l": 136.79956, "t": 339.52869, "r": 432.1602500000001, "b": 348.74167, "coord_origin": "TOPLEFT"}}]}, "text": "Thanks to the following people for their contributions to this project:"}, {"label": "text", "id": 3, "page_no": 14, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.3055877685547, "t": 360.45208740234375, "r": 200.390869140625, "b": 370.70148, "coord_origin": "TOPLEFT"}, "confidence": 0.7089823484420776, "cells": [{"id": 3, "text": "Debra Landon", "bbox": {"l": 136.79956, "t": 361.48849, "r": 200.0416, "b": 370.70148, "coord_origin": "TOPLEFT"}}]}, "text": "Debra Landon"}, {"label": "text", "id": 4, "page_no": 14, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.32855224609375, "t": 372.4372863769531, "r": 439.0932312011719, "b": 383.3298034667969, "coord_origin": "TOPLEFT"}, "confidence": 0.7829126119613647, "cells": [{"id": 4, "text": "International Technical Support Organization, Rochester Center", "bbox": {"l": 136.79956, "t": 373.48830999999996, "r": 438.75391, "b": 382.70129, "coord_origin": "TOPLEFT"}}]}, "text": "International Technical Support Organization, Rochester Center"}, {"label": "text", "id": 5, "page_no": 14, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.09214782714844, "t": 394.6581115722656, "r": 457.72974, "b": 416.9281921386719, "coord_origin": "TOPLEFT"}, "confidence": 0.9423409700393677, "cells": [{"id": 5, "text": "Craig Aldrich, Mark Anderson, Theresa Euler, Scott Forstie, Chad Olstad", "bbox": {"l": 136.79955, "t": 395.50787, "r": 457.72974, "b": 404.72086, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "IBM Rochester Development", "bbox": {"l": 136.79955, "t": 407.50769, "r": 272.10016, "b": 416.72067, "coord_origin": "TOPLEFT"}}]}, "text": "Craig Aldrich, Mark Anderson, Theresa Euler, Scott Forstie, Chad Olstad IBM Rochester Development"}, {"label": "section_header", "id": 6, "page_no": 14, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 64.71363067626953, "t": 443.82012939453125, "r": 413.15256, "b": 460.31988525390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9612258076667786, "cells": [{"id": 7, "text": "Now you can become a published author, too!", "bbox": {"l": 64.800003, "t": 445.20071, "r": 413.15256, "b": 459.96371000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Now you can become a published author, too!"}, {"label": "text", "id": 7, "page_no": 14, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.805419921875, "t": 476.6553039550781, "r": 547.23267, "b": 558.74059, "coord_origin": "TOPLEFT"}, "confidence": 0.9876447319984436, "cells": [{"id": 8, "text": "Here\u2019s an opportunity to spotlight your skills, grow your career, and become a published ", "bbox": {"l": 136.8, "t": 477.52872, "r": 525.74896, "b": 486.7417, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "author-all at the same time! Join an ITSO residency project and help write a book in your ", "bbox": {"l": 136.8, "t": 489.52853, "r": 537.30347, "b": 498.74152, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "area of expertise, while honing your experience using leading-edge technologies. Your efforts ", "bbox": {"l": 136.8, "t": 501.52835, "r": 547.23267, "b": 510.74133, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "will help to increase product acceptance and customer satisfaction, as you expand your ", "bbox": {"l": 136.8, "t": 513.52817, "r": 524.59961, "b": 522.7411500000001, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "network of technical contacts and relationships. Residencies run from two to six weeks in ", "bbox": {"l": 136.80002, "t": 525.5279800000001, "r": 532.24384, "b": 534.7409700000001, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "length, and you can participate either in person or as a remote resident working from your ", "bbox": {"l": 136.80002, "t": 537.52779, "r": 535.20209, "b": 546.74078, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "home base.", "bbox": {"l": 136.80002, "t": 549.52759, "r": 188.81511, "b": 558.74059, "coord_origin": "TOPLEFT"}}]}, "text": "Here\u2019s an opportunity to spotlight your skills, grow your career, and become a published author-all at the same time! Join an ITSO residency project and help write a book in your area of expertise, while honing your experience using leading-edge technologies. Your efforts will help to increase product acceptance and customer satisfaction, as you expand your network of technical contacts and relationships. Residencies run from two to six weeks in length, and you can participate either in person or as a remote resident working from your home base."}, {"label": "text", "id": 8, "page_no": 14, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.59922790527344, "t": 570.6795654296875, "r": 546.81647, "b": 581.0769653320312, "coord_origin": "TOPLEFT"}, "confidence": 0.9406706094741821, "cells": [{"id": 15, "text": "Find out more about the residency program, browse the residency index, and apply online at:", "bbox": {"l": 136.80002, "t": 571.54715, "r": 546.81647, "b": 580.7601500000001, "coord_origin": "TOPLEFT"}}]}, "text": "Find out more about the residency program, browse the residency index, and apply online at:"}, {"label": "text", "id": 9, "page_no": 14, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.80002, "t": 587.9857788085938, "r": 301.67783, "b": 597.50092, "coord_origin": "TOPLEFT"}, "confidence": 0.8938496112823486, "cells": [{"id": 16, "text": "ibm.com", "bbox": {"l": 136.80002, "t": 588.6763599999999, "r": 171.77953, "b": 597.50092, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "/redbooks/residencies.html", "bbox": {"l": 171.77954, "t": 588.6763599999999, "r": 301.67783, "b": 597.45111, "coord_origin": "TOPLEFT"}}]}, "text": "ibm.com /redbooks/residencies.html"}, {"label": "section_header", "id": 10, "page_no": 14, "cluster": {"id": 10, "label": "section_header", "bbox": {"l": 64.52783966064453, "t": 625.3417358398438, "r": 219.43166000000002, "b": 640.98363, "coord_origin": "TOPLEFT"}, "confidence": 0.9593470096588135, "cells": [{"id": 18, "text": "Comments welcome", "bbox": {"l": 64.800003, "t": 626.22063, "r": 219.43166000000002, "b": 640.98363, "coord_origin": "TOPLEFT"}}]}, "text": "Comments welcome"}, {"label": "text", "id": 11, "page_no": 14, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.9565887451172, "t": 657.9795532226562, "r": 294.74969, "b": 667.8671875, "coord_origin": "TOPLEFT"}, "confidence": 0.926453173160553, "cells": [{"id": 19, "text": "Your comments are important to us!", "bbox": {"l": 136.8, "t": 658.54872, "r": 294.74969, "b": 667.76172, "coord_origin": "TOPLEFT"}}]}, "text": "Your comments are important to us!"}, {"label": "text", "id": 12, "page_no": 14, "cluster": {"id": 12, "label": "text", "bbox": {"l": 135.8791961669922, "t": 679.3858642578125, "r": 547.25244, "b": 701.721336, "coord_origin": "TOPLEFT"}, "confidence": 0.9736941456794739, "cells": [{"id": 20, "text": "We want our papers to be as helpful as possible. Send us your comments about this paper or ", "bbox": {"l": 136.8, "t": 680.50852, "r": 547.25244, "b": 689.72153, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "other IBM Redbooks publications in one of the following ways:", "bbox": {"l": 136.8, "t": 692.508331, "r": 410.18698, "b": 701.721336, "coord_origin": "TOPLEFT"}}]}, "text": "We want our papers to be as helpful as possible. Send us your comments about this paper or other IBM Redbooks publications in one of the following ways:"}, {"label": "list_item", "id": 13, "page_no": 14, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 135.62045288085938, "t": 708.805908203125, "r": 412.55646, "b": 718.760902, "coord_origin": "TOPLEFT"}, "confidence": 0.8550623655319214, "cells": [{"id": 22, "text": "GLYPH", "bbox": {"l": 136.8, "t": 709.697304, "r": 141.78, "b": 718.4720609999999, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Use the online ", "bbox": {"l": 151.20016, "t": 709.547897, "r": 217.90927, "b": 718.760902, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Contact us", "bbox": {"l": 217.86044, "t": 709.547897, "r": 269.52493, "b": 718.760902, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": " review Redbooks form found at:", "bbox": {"l": 269.51996, "t": 709.547897, "r": 412.55646, "b": 718.760902, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Use the online Contact us review Redbooks form found at:"}, {"label": "text", "id": 14, "page_no": 14, "cluster": {"id": 14, "label": "text", "bbox": {"l": 151.20013, "t": 726.4096069335938, "r": 231.11916999999997, "b": 735.501671, "coord_origin": "TOPLEFT"}, "confidence": 0.7705531120300293, "cells": [{"id": 26, "text": "ibm.com", "bbox": {"l": 151.20013, "t": 726.677109, "r": 186.17964, "b": 735.501671, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "/redbooks", "bbox": {"l": 186.17966, "t": 726.677109, "r": 231.11916999999997, "b": 735.45187, "coord_origin": "TOPLEFT"}}]}, "text": "ibm.com /redbooks"}, {"label": "text", "id": 15, "page_no": 14, "cluster": {"id": 15, "label": "text", "bbox": {"l": 262.7662658691406, "t": 76.673583984375, "r": 541.15515, "b": 206.9925079345703, "coord_origin": "TOPLEFT"}, "confidence": 0.9826179146766663, "cells": [{"id": 28, "text": "Tom McKinley ", "bbox": {"l": 263.39954, "t": 77.50725999999997, "r": 332.99799, "b": 86.72028, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "is an IBM Lab Services Consultant working on ", "bbox": {"l": 333.0, "t": 77.50725999999997, "r": 540.04248, "b": 86.72028, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "DB2 for IBM i in Rochester MN. His main focus is complex ", "bbox": {"l": 263.39954, "t": 89.50707999999997, "r": 522.99799, "b": 98.72009000000003, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "query performance that is associated with Business ", "bbox": {"l": 263.39954, "t": 101.50689999999997, "r": 494.28336, "b": 110.71991000000014, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Intelligence running on Very Large Databases. He worked as a ", "bbox": {"l": 263.39954, "t": 113.50671, "r": 541.15515, "b": 122.71973000000003, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "developer or performance analyst in the DB area from 1986 ", "bbox": {"l": 263.39954, "t": 125.50653000000011, "r": 528.91815, "b": 134.71954000000005, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "until 2006. Some of his major pieces of work include the ", "bbox": {"l": 263.39954, "t": 137.50635, "r": 513.48511, "b": 146.71936000000005, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Symmetric Multiple processing capabilities of DB2 for IBM i ", "bbox": {"l": 263.39954, "t": 149.50616000000002, "r": 527.07666, "b": 158.71918000000005, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "and Large Object Data types. In addition, he was on the ", "bbox": {"l": 263.39954, "t": 161.50598000000002, "r": 512.53601, "b": 170.71898999999996, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "original team that designed and built the SQL Query Engine. ", "bbox": {"l": 263.39954, "t": 173.50580000000002, "r": 532.94702, "b": 182.71880999999996, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Before his database work, he worked on Licensed Internal ", "bbox": {"l": 263.39954, "t": 185.50562000000002, "r": 523.24597, "b": 194.71862999999996, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Code for System 34 and System 36.", "bbox": {"l": 263.39954, "t": 197.50543000000005, "r": 423.67691, "b": 206.71844, "coord_origin": "TOPLEFT"}}]}, "text": "Tom McKinley is an IBM Lab Services Consultant working on DB2 for IBM i in Rochester MN. His main focus is complex query performance that is associated with Business Intelligence running on Very Large Databases. He worked as a developer or performance analyst in the DB area from 1986 until 2006. Some of his major pieces of work include the Symmetric Multiple processing capabilities of DB2 for IBM i and Large Object Data types. In addition, he was on the original team that designed and built the SQL Query Engine. Before his database work, he worked on Licensed Internal Code for System 34 and System 36."}, {"label": "text", "id": 16, "page_no": 14, "cluster": {"id": 16, "label": "text", "bbox": {"l": 262.6918029785156, "t": 216.41091918945312, "r": 541.26654, "b": 310.69689999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9823182821273804, "cells": [{"id": 40, "text": "Kent Milligan ", "bbox": {"l": 263.39954, "t": 217.48517000000004, "r": 328.19531, "b": 226.69817999999998, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "is a senior DB2 consultant on the DB2 for i ", "bbox": {"l": 328.19928, "t": 217.48517000000004, "r": 519.0976, "b": 226.69817999999998, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Center of Excellence team within the IBM Lab Services and ", "bbox": {"l": 263.39954, "t": 229.48499000000004, "r": 529.25977, "b": 238.69799999999998, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Training organization. His primary responsibility is helping ", "bbox": {"l": 263.39954, "t": 241.48479999999995, "r": 520.32373, "b": 250.69781, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "software developers use the latest DB2 technologies and port ", "bbox": {"l": 263.39954, "t": 253.48461999999995, "r": 538.10938, "b": 262.69763, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "applications from other databases to DB2 for i. After graduating ", "bbox": {"l": 263.39954, "t": 265.48443999999995, "r": 541.26654, "b": 274.69745, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "from the University of Iowa, Kent spent the first eight years of ", "bbox": {"l": 263.39954, "t": 277.48425, "r": 534.98981, "b": 286.69727, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "his IBM career as a member of the DB2 development team in ", "bbox": {"l": 263.39954, "t": 289.4841, "r": 536.6889, "b": 298.69708, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "Rochester.", "bbox": {"l": 263.39954, "t": 301.48392, "r": 311.20654, "b": 310.69689999999997, "coord_origin": "TOPLEFT"}}]}, "text": "Kent Milligan is a senior DB2 consultant on the DB2 for i Center of Excellence team within the IBM Lab Services and Training organization. His primary responsibility is helping software developers use the latest DB2 technologies and port applications from other databases to DB2 for i. After graduating from the University of Iowa, Kent spent the first eight years of his IBM career as a member of the DB2 development team in Rochester."}, {"label": "picture", "id": 17, "page_no": 14, "cluster": {"id": 17, "label": "picture", "bbox": {"l": 142.26431274414062, "t": 77.12178802490234, "r": 251.69140625, "b": 192.6881103515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9871392846107483, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 18, "page_no": 14, "cluster": {"id": 18, "label": "picture", "bbox": {"l": 142.39024353027344, "t": 216.5591278076172, "r": 251.9964141845703, "b": 326.3576965332031, "coord_origin": "TOPLEFT"}, "confidence": 0.9861040711402893, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 14, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.6240234375, "t": 338.7327880859375, "r": 432.1602500000001, "b": 348.8023986816406, "coord_origin": "TOPLEFT"}, "confidence": 0.8790541291236877, "cells": [{"id": 2, "text": "Thanks to the following people for their contributions to this project:", "bbox": {"l": 136.79956, "t": 339.52869, "r": 432.1602500000001, "b": 348.74167, "coord_origin": "TOPLEFT"}}]}, "text": "Thanks to the following people for their contributions to this project:"}, {"label": "text", "id": 3, "page_no": 14, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.3055877685547, "t": 360.45208740234375, "r": 200.390869140625, "b": 370.70148, "coord_origin": "TOPLEFT"}, "confidence": 0.7089823484420776, "cells": [{"id": 3, "text": "Debra Landon", "bbox": {"l": 136.79956, "t": 361.48849, "r": 200.0416, "b": 370.70148, "coord_origin": "TOPLEFT"}}]}, "text": "Debra Landon"}, {"label": "text", "id": 4, "page_no": 14, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.32855224609375, "t": 372.4372863769531, "r": 439.0932312011719, "b": 383.3298034667969, "coord_origin": "TOPLEFT"}, "confidence": 0.7829126119613647, "cells": [{"id": 4, "text": "International Technical Support Organization, Rochester Center", "bbox": {"l": 136.79956, "t": 373.48830999999996, "r": 438.75391, "b": 382.70129, "coord_origin": "TOPLEFT"}}]}, "text": "International Technical Support Organization, Rochester Center"}, {"label": "text", "id": 5, "page_no": 14, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.09214782714844, "t": 394.6581115722656, "r": 457.72974, "b": 416.9281921386719, "coord_origin": "TOPLEFT"}, "confidence": 0.9423409700393677, "cells": [{"id": 5, "text": "Craig Aldrich, Mark Anderson, Theresa Euler, Scott Forstie, Chad Olstad", "bbox": {"l": 136.79955, "t": 395.50787, "r": 457.72974, "b": 404.72086, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "IBM Rochester Development", "bbox": {"l": 136.79955, "t": 407.50769, "r": 272.10016, "b": 416.72067, "coord_origin": "TOPLEFT"}}]}, "text": "Craig Aldrich, Mark Anderson, Theresa Euler, Scott Forstie, Chad Olstad IBM Rochester Development"}, {"label": "section_header", "id": 6, "page_no": 14, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 64.71363067626953, "t": 443.82012939453125, "r": 413.15256, "b": 460.31988525390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9612258076667786, "cells": [{"id": 7, "text": "Now you can become a published author, too!", "bbox": {"l": 64.800003, "t": 445.20071, "r": 413.15256, "b": 459.96371000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Now you can become a published author, too!"}, {"label": "text", "id": 7, "page_no": 14, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.805419921875, "t": 476.6553039550781, "r": 547.23267, "b": 558.74059, "coord_origin": "TOPLEFT"}, "confidence": 0.9876447319984436, "cells": [{"id": 8, "text": "Here\u2019s an opportunity to spotlight your skills, grow your career, and become a published ", "bbox": {"l": 136.8, "t": 477.52872, "r": 525.74896, "b": 486.7417, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "author-all at the same time! Join an ITSO residency project and help write a book in your ", "bbox": {"l": 136.8, "t": 489.52853, "r": 537.30347, "b": 498.74152, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "area of expertise, while honing your experience using leading-edge technologies. Your efforts ", "bbox": {"l": 136.8, "t": 501.52835, "r": 547.23267, "b": 510.74133, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "will help to increase product acceptance and customer satisfaction, as you expand your ", "bbox": {"l": 136.8, "t": 513.52817, "r": 524.59961, "b": 522.7411500000001, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "network of technical contacts and relationships. Residencies run from two to six weeks in ", "bbox": {"l": 136.80002, "t": 525.5279800000001, "r": 532.24384, "b": 534.7409700000001, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "length, and you can participate either in person or as a remote resident working from your ", "bbox": {"l": 136.80002, "t": 537.52779, "r": 535.20209, "b": 546.74078, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "home base.", "bbox": {"l": 136.80002, "t": 549.52759, "r": 188.81511, "b": 558.74059, "coord_origin": "TOPLEFT"}}]}, "text": "Here\u2019s an opportunity to spotlight your skills, grow your career, and become a published author-all at the same time! Join an ITSO residency project and help write a book in your area of expertise, while honing your experience using leading-edge technologies. Your efforts will help to increase product acceptance and customer satisfaction, as you expand your network of technical contacts and relationships. Residencies run from two to six weeks in length, and you can participate either in person or as a remote resident working from your home base."}, {"label": "text", "id": 8, "page_no": 14, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.59922790527344, "t": 570.6795654296875, "r": 546.81647, "b": 581.0769653320312, "coord_origin": "TOPLEFT"}, "confidence": 0.9406706094741821, "cells": [{"id": 15, "text": "Find out more about the residency program, browse the residency index, and apply online at:", "bbox": {"l": 136.80002, "t": 571.54715, "r": 546.81647, "b": 580.7601500000001, "coord_origin": "TOPLEFT"}}]}, "text": "Find out more about the residency program, browse the residency index, and apply online at:"}, {"label": "text", "id": 9, "page_no": 14, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.80002, "t": 587.9857788085938, "r": 301.67783, "b": 597.50092, "coord_origin": "TOPLEFT"}, "confidence": 0.8938496112823486, "cells": [{"id": 16, "text": "ibm.com", "bbox": {"l": 136.80002, "t": 588.6763599999999, "r": 171.77953, "b": 597.50092, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "/redbooks/residencies.html", "bbox": {"l": 171.77954, "t": 588.6763599999999, "r": 301.67783, "b": 597.45111, "coord_origin": "TOPLEFT"}}]}, "text": "ibm.com /redbooks/residencies.html"}, {"label": "section_header", "id": 10, "page_no": 14, "cluster": {"id": 10, "label": "section_header", "bbox": {"l": 64.52783966064453, "t": 625.3417358398438, "r": 219.43166000000002, "b": 640.98363, "coord_origin": "TOPLEFT"}, "confidence": 0.9593470096588135, "cells": [{"id": 18, "text": "Comments welcome", "bbox": {"l": 64.800003, "t": 626.22063, "r": 219.43166000000002, "b": 640.98363, "coord_origin": "TOPLEFT"}}]}, "text": "Comments welcome"}, {"label": "text", "id": 11, "page_no": 14, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.9565887451172, "t": 657.9795532226562, "r": 294.74969, "b": 667.8671875, "coord_origin": "TOPLEFT"}, "confidence": 0.926453173160553, "cells": [{"id": 19, "text": "Your comments are important to us!", "bbox": {"l": 136.8, "t": 658.54872, "r": 294.74969, "b": 667.76172, "coord_origin": "TOPLEFT"}}]}, "text": "Your comments are important to us!"}, {"label": "text", "id": 12, "page_no": 14, "cluster": {"id": 12, "label": "text", "bbox": {"l": 135.8791961669922, "t": 679.3858642578125, "r": 547.25244, "b": 701.721336, "coord_origin": "TOPLEFT"}, "confidence": 0.9736941456794739, "cells": [{"id": 20, "text": "We want our papers to be as helpful as possible. Send us your comments about this paper or ", "bbox": {"l": 136.8, "t": 680.50852, "r": 547.25244, "b": 689.72153, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "other IBM Redbooks publications in one of the following ways:", "bbox": {"l": 136.8, "t": 692.508331, "r": 410.18698, "b": 701.721336, "coord_origin": "TOPLEFT"}}]}, "text": "We want our papers to be as helpful as possible. Send us your comments about this paper or other IBM Redbooks publications in one of the following ways:"}, {"label": "list_item", "id": 13, "page_no": 14, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 135.62045288085938, "t": 708.805908203125, "r": 412.55646, "b": 718.760902, "coord_origin": "TOPLEFT"}, "confidence": 0.8550623655319214, "cells": [{"id": 22, "text": "GLYPH", "bbox": {"l": 136.8, "t": 709.697304, "r": 141.78, "b": 718.4720609999999, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Use the online ", "bbox": {"l": 151.20016, "t": 709.547897, "r": 217.90927, "b": 718.760902, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Contact us", "bbox": {"l": 217.86044, "t": 709.547897, "r": 269.52493, "b": 718.760902, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": " review Redbooks form found at:", "bbox": {"l": 269.51996, "t": 709.547897, "r": 412.55646, "b": 718.760902, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Use the online Contact us review Redbooks form found at:"}, {"label": "text", "id": 14, "page_no": 14, "cluster": {"id": 14, "label": "text", "bbox": {"l": 151.20013, "t": 726.4096069335938, "r": 231.11916999999997, "b": 735.501671, "coord_origin": "TOPLEFT"}, "confidence": 0.7705531120300293, "cells": [{"id": 26, "text": "ibm.com", "bbox": {"l": 151.20013, "t": 726.677109, "r": 186.17964, "b": 735.501671, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "/redbooks", "bbox": {"l": 186.17966, "t": 726.677109, "r": 231.11916999999997, "b": 735.45187, "coord_origin": "TOPLEFT"}}]}, "text": "ibm.com /redbooks"}, {"label": "text", "id": 15, "page_no": 14, "cluster": {"id": 15, "label": "text", "bbox": {"l": 262.7662658691406, "t": 76.673583984375, "r": 541.15515, "b": 206.9925079345703, "coord_origin": "TOPLEFT"}, "confidence": 0.9826179146766663, "cells": [{"id": 28, "text": "Tom McKinley ", "bbox": {"l": 263.39954, "t": 77.50725999999997, "r": 332.99799, "b": 86.72028, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "is an IBM Lab Services Consultant working on ", "bbox": {"l": 333.0, "t": 77.50725999999997, "r": 540.04248, "b": 86.72028, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "DB2 for IBM i in Rochester MN. His main focus is complex ", "bbox": {"l": 263.39954, "t": 89.50707999999997, "r": 522.99799, "b": 98.72009000000003, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "query performance that is associated with Business ", "bbox": {"l": 263.39954, "t": 101.50689999999997, "r": 494.28336, "b": 110.71991000000014, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Intelligence running on Very Large Databases. He worked as a ", "bbox": {"l": 263.39954, "t": 113.50671, "r": 541.15515, "b": 122.71973000000003, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "developer or performance analyst in the DB area from 1986 ", "bbox": {"l": 263.39954, "t": 125.50653000000011, "r": 528.91815, "b": 134.71954000000005, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "until 2006. Some of his major pieces of work include the ", "bbox": {"l": 263.39954, "t": 137.50635, "r": 513.48511, "b": 146.71936000000005, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Symmetric Multiple processing capabilities of DB2 for IBM i ", "bbox": {"l": 263.39954, "t": 149.50616000000002, "r": 527.07666, "b": 158.71918000000005, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "and Large Object Data types. In addition, he was on the ", "bbox": {"l": 263.39954, "t": 161.50598000000002, "r": 512.53601, "b": 170.71898999999996, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "original team that designed and built the SQL Query Engine. ", "bbox": {"l": 263.39954, "t": 173.50580000000002, "r": 532.94702, "b": 182.71880999999996, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Before his database work, he worked on Licensed Internal ", "bbox": {"l": 263.39954, "t": 185.50562000000002, "r": 523.24597, "b": 194.71862999999996, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Code for System 34 and System 36.", "bbox": {"l": 263.39954, "t": 197.50543000000005, "r": 423.67691, "b": 206.71844, "coord_origin": "TOPLEFT"}}]}, "text": "Tom McKinley is an IBM Lab Services Consultant working on DB2 for IBM i in Rochester MN. His main focus is complex query performance that is associated with Business Intelligence running on Very Large Databases. He worked as a developer or performance analyst in the DB area from 1986 until 2006. Some of his major pieces of work include the Symmetric Multiple processing capabilities of DB2 for IBM i and Large Object Data types. In addition, he was on the original team that designed and built the SQL Query Engine. Before his database work, he worked on Licensed Internal Code for System 34 and System 36."}, {"label": "text", "id": 16, "page_no": 14, "cluster": {"id": 16, "label": "text", "bbox": {"l": 262.6918029785156, "t": 216.41091918945312, "r": 541.26654, "b": 310.69689999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9823182821273804, "cells": [{"id": 40, "text": "Kent Milligan ", "bbox": {"l": 263.39954, "t": 217.48517000000004, "r": 328.19531, "b": 226.69817999999998, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "is a senior DB2 consultant on the DB2 for i ", "bbox": {"l": 328.19928, "t": 217.48517000000004, "r": 519.0976, "b": 226.69817999999998, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Center of Excellence team within the IBM Lab Services and ", "bbox": {"l": 263.39954, "t": 229.48499000000004, "r": 529.25977, "b": 238.69799999999998, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Training organization. His primary responsibility is helping ", "bbox": {"l": 263.39954, "t": 241.48479999999995, "r": 520.32373, "b": 250.69781, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "software developers use the latest DB2 technologies and port ", "bbox": {"l": 263.39954, "t": 253.48461999999995, "r": 538.10938, "b": 262.69763, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "applications from other databases to DB2 for i. After graduating ", "bbox": {"l": 263.39954, "t": 265.48443999999995, "r": 541.26654, "b": 274.69745, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "from the University of Iowa, Kent spent the first eight years of ", "bbox": {"l": 263.39954, "t": 277.48425, "r": 534.98981, "b": 286.69727, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "his IBM career as a member of the DB2 development team in ", "bbox": {"l": 263.39954, "t": 289.4841, "r": 536.6889, "b": 298.69708, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "Rochester.", "bbox": {"l": 263.39954, "t": 301.48392, "r": 311.20654, "b": 310.69689999999997, "coord_origin": "TOPLEFT"}}]}, "text": "Kent Milligan is a senior DB2 consultant on the DB2 for i Center of Excellence team within the IBM Lab Services and Training organization. His primary responsibility is helping software developers use the latest DB2 technologies and port applications from other databases to DB2 for i. After graduating from the University of Iowa, Kent spent the first eight years of his IBM career as a member of the DB2 development team in Rochester."}, {"label": "picture", "id": 17, "page_no": 14, "cluster": {"id": 17, "label": "picture", "bbox": {"l": 142.26431274414062, "t": 77.12178802490234, "r": 251.69140625, "b": 192.6881103515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9871392846107483, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 18, "page_no": 14, "cluster": {"id": 18, "label": "picture", "bbox": {"l": 142.39024353027344, "t": 216.5591278076172, "r": 251.9964141845703, "b": 326.3576965332031, "coord_origin": "TOPLEFT"}, "confidence": 0.9861040711402893, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 14, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 485.10001, "t": 754.75048828125, "r": 520.88135, "b": 763.863001, "coord_origin": "TOPLEFT"}, "confidence": 0.914573073387146, "cells": [{"id": 0, "text": " Preface ", "bbox": {"l": 485.10001, "t": 755.538002, "r": 520.88135, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Preface"}, {"label": "page_footer", "id": 1, "page_no": 14, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 532.5994262695312, "t": 754.2633056640625, "r": 547.19342, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8934566974639893, "cells": [{"id": 1, "text": "xiii", "bbox": {"l": 533.34003, "t": 754.848721, "r": 547.19342, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "xiii"}]}}, {"page_no": 15, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "xiv ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 81.162003, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 96.180305, "t": 755.538002, "r": 337.03378, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "GLYPH", "bbox": {"l": 136.8, "t": 71.65808000000015, "r": 141.78, "b": 80.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Send your comments in an email to:", "bbox": {"l": 151.20016, "t": 71.50867000000005, "r": 310.37393, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "redbooks@us.ibm.com", "bbox": {"l": 151.20016, "t": 88.63788000000011, "r": 246.11894, "b": 97.41265999999996, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 105.67742999999996, "r": 141.78, "b": 114.45221000000004, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Mail your comments to:", "bbox": {"l": 151.20016, "t": 105.52801999999997, "r": 254.27019999999996, "b": 114.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "IBM Corporation, International Technical Support Organization", "bbox": {"l": 151.20016, "t": 122.50780999999995, "r": 426.99243, "b": 131.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Dept. HYTD Mail Station P099", "bbox": {"l": 151.20016, "t": 134.50762999999995, "r": 286.11533, "b": 143.72064, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "2455 South Road", "bbox": {"l": 151.20016, "t": 146.50744999999995, "r": 229.02261, "b": 155.72046, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Poughkeepsie, NY 12601-5400", "bbox": {"l": 151.20016, "t": 158.50725999999997, "r": 289.45789, "b": 167.72028, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Stay connected to IBM Redbooks", "bbox": {"l": 64.800003, "t": 196.20068000000003, "r": 317.65109, "b": 210.96367999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "GLYPH", "bbox": {"l": 136.8, "t": 228.67809999999997, "r": 141.78, "b": 237.45288000000005, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Find us on Facebook:", "bbox": {"l": 151.20016, "t": 228.52868999999998, "r": 246.83711000000002, "b": 237.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "http://www.facebook.com/IBMRedbooks", "bbox": {"l": 151.20016, "t": 245.65790000000004, "r": 326.09775, "b": 254.43268, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 262.6377, "r": 141.78, "b": 271.41247999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Follow us on Twitter:", "bbox": {"l": 151.20016, "t": 262.48828000000003, "r": 241.52239999999998, "b": 271.70129, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "http://twitter.com/ibmredbooks", "bbox": {"l": 151.20016, "t": 279.67731000000003, "r": 301.07822, "b": 288.45206, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "GLYPH", "bbox": {"l": 136.8, "t": 296.65707000000003, "r": 141.78, "b": 305.43184999999994, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Look for us on LinkedIn:", "bbox": {"l": 151.20016, "t": 296.50769, "r": 257.42651, "b": 305.72067, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "http://www.linkedin.com/groups?home=&gid=2130806", "bbox": {"l": 151.20016, "t": 313.63687, "r": 391.07678, "b": 322.41165, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "GLYPH", "bbox": {"l": 136.8, "t": 330.67645, "r": 141.78, "b": 339.45123, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Explore new Redbooks publications, residencies, and workshops with the IBM Redbooks ", "bbox": {"l": 151.20016, "t": 330.52707, "r": 546.2179, "b": 339.74005, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "weekly newsletter:", "bbox": {"l": 151.20016, "t": 342.52689, "r": 232.82335, "b": 351.73986999999994, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "https://www.redbooks.ibm.com/Redbooks.nsf/subscribe?OpenForm", "bbox": {"l": 151.20016, "t": 359.65607, "r": 451.01605, "b": 368.43085, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "GLYPH", "bbox": {"l": 136.8, "t": 376.63586000000004, "r": 141.78, "b": 385.41063999999994, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Stay current on recent Redbooks publications with RSS Feeds:", "bbox": {"l": 151.20016, "t": 376.4864799999999, "r": 429.34805000000006, "b": 385.69946, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "http://www.redbooks.ibm.com/rss.html", "bbox": {"l": 151.20016, "t": 393.67545, "r": 331.07773, "b": 402.45023, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.0907974243164, "t": 754.5955200195312, "r": 81.162003, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9144188761711121, "cells": [{"id": 0, "text": "xiv ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 81.162003, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 95.71053314208984, "t": 754.6729736328125, "r": 337.03378, "b": 763.97509765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9409525394439697, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 96.180305, "t": 755.538002, "r": 337.03378, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 135.5431365966797, "t": 70.70941925048828, "r": 310.37393, "b": 81.28385162353516, "coord_origin": "TOPLEFT"}, "confidence": 0.8883165717124939, "cells": [{"id": 2, "text": "GLYPH", "bbox": {"l": 136.8, "t": 71.65808000000015, "r": 141.78, "b": 80.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Send your comments in an email to:", "bbox": {"l": 151.20016, "t": 71.50867000000005, "r": 310.37393, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 150.99362182617188, "t": 87.82772064208984, "r": 246.22007751464844, "b": 97.41265999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.6984229683876038, "cells": [{"id": 4, "text": "redbooks@us.ibm.com", "bbox": {"l": 151.20016, "t": 88.63788000000011, "r": 246.11894, "b": 97.41265999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 135.64413452148438, "t": 104.9468002319336, "r": 254.27019999999996, "b": 114.9759292602539, "coord_origin": "TOPLEFT"}, "confidence": 0.8724080324172974, "cells": [{"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 105.67742999999996, "r": 141.78, "b": 114.45221000000004, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Mail your comments to:", "bbox": {"l": 151.20016, "t": 105.52801999999997, "r": 254.27019999999996, "b": 114.74103000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 150.4449005126953, "t": 120.91980743408203, "r": 426.99243, "b": 167.9119873046875, "coord_origin": "TOPLEFT"}, "confidence": 0.8001936674118042, "cells": [{"id": 7, "text": "IBM Corporation, International Technical Support Organization", "bbox": {"l": 151.20016, "t": 122.50780999999995, "r": 426.99243, "b": 131.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Dept. HYTD Mail Station P099", "bbox": {"l": 151.20016, "t": 134.50762999999995, "r": 286.11533, "b": 143.72064, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "2455 South Road", "bbox": {"l": 151.20016, "t": 146.50744999999995, "r": 229.02261, "b": 155.72046, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Poughkeepsie, NY 12601-5400", "bbox": {"l": 151.20016, "t": 158.50725999999997, "r": 289.45789, "b": 167.72028, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "section_header", "bbox": {"l": 64.44961547851562, "t": 194.60934448242188, "r": 317.65109, "b": 210.96367999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9598472118377686, "cells": [{"id": 11, "text": "Stay connected to IBM Redbooks", "bbox": {"l": 64.800003, "t": 196.20068000000003, "r": 317.65109, "b": 210.96367999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.58946228027344, "t": 227.83482360839844, "r": 246.83711000000002, "b": 237.74170000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.8748195767402649, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.8, "t": 228.67809999999997, "r": 141.78, "b": 237.45288000000005, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Find us on Facebook:", "bbox": {"l": 151.20016, "t": 228.52868999999998, "r": 246.83711000000002, "b": 237.74170000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 150.674072265625, "t": 244.8909912109375, "r": 326.09775, "b": 254.91514587402344, "coord_origin": "TOPLEFT"}, "confidence": 0.7252531051635742, "cells": [{"id": 14, "text": "http://www.facebook.com/IBMRedbooks", "bbox": {"l": 151.20016, "t": 245.65790000000004, "r": 326.09775, "b": 254.43268, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.61866760253906, "t": 261.4954833984375, "r": 241.52239999999998, "b": 271.70129, "coord_origin": "TOPLEFT"}, "confidence": 0.8754413723945618, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 262.6377, "r": 141.78, "b": 271.41247999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Follow us on Twitter:", "bbox": {"l": 151.20016, "t": 262.48828000000003, "r": 241.52239999999998, "b": 271.70129, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 150.70498657226562, "t": 278.7747497558594, "r": 301.07822, "b": 288.4688720703125, "coord_origin": "TOPLEFT"}, "confidence": 0.6634963750839233, "cells": [{"id": 17, "text": "http://twitter.com/ibmredbooks", "bbox": {"l": 151.20016, "t": 279.67731000000003, "r": 301.07822, "b": 288.45206, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 135.6381072998047, "t": 295.406982421875, "r": 257.42651, "b": 305.72067, "coord_origin": "TOPLEFT"}, "confidence": 0.8954482078552246, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.8, "t": 296.65707000000003, "r": 141.78, "b": 305.43184999999994, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Look for us on LinkedIn:", "bbox": {"l": 151.20016, "t": 296.50769, "r": 257.42651, "b": 305.72067, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 150.5355224609375, "t": 312.7005920410156, "r": 391.07678, "b": 322.6709289550781, "coord_origin": "TOPLEFT"}, "confidence": 0.7177077531814575, "cells": [{"id": 20, "text": "http://www.linkedin.com/groups?home=&gid=2130806", "bbox": {"l": 151.20016, "t": 313.63687, "r": 391.07678, "b": 322.41165, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "list_item", "bbox": {"l": 135.53648376464844, "t": 330.0694580078125, "r": 546.2179, "b": 352.36749267578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9449265599250793, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.8, "t": 330.67645, "r": 141.78, "b": 339.45123, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Explore new Redbooks publications, residencies, and workshops with the IBM Redbooks ", "bbox": {"l": 151.20016, "t": 330.52707, "r": 546.2179, "b": 339.74005, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "weekly newsletter:", "bbox": {"l": 151.20016, "t": 342.52689, "r": 232.82335, "b": 351.73986999999994, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "text", "bbox": {"l": 150.64300537109375, "t": 358.7694091796875, "r": 451.45623779296875, "b": 368.8676452636719, "coord_origin": "TOPLEFT"}, "confidence": 0.7377406358718872, "cells": [{"id": 24, "text": "https://www.redbooks.ibm.com/Redbooks.nsf/subscribe?OpenForm", "bbox": {"l": 151.20016, "t": 359.65607, "r": 451.01605, "b": 368.43085, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "list_item", "bbox": {"l": 135.8739471435547, "t": 375.3260498046875, "r": 429.34805000000006, "b": 385.69946, "coord_origin": "TOPLEFT"}, "confidence": 0.9105416536331177, "cells": [{"id": 25, "text": "GLYPH", "bbox": {"l": 136.8, "t": 376.63586000000004, "r": 141.78, "b": 385.41063999999994, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Stay current on recent Redbooks publications with RSS Feeds:", "bbox": {"l": 151.20016, "t": 376.4864799999999, "r": 429.34805000000006, "b": 385.69946, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "text", "bbox": {"l": 150.6341552734375, "t": 392.9015197753906, "r": 331.07773, "b": 402.52935791015625, "coord_origin": "TOPLEFT"}, "confidence": 0.766843855381012, "cells": [{"id": 27, "text": "http://www.redbooks.ibm.com/rss.html", "bbox": {"l": 151.20016, "t": 393.67545, "r": 331.07773, "b": 402.45023, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 15, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.0907974243164, "t": 754.5955200195312, "r": 81.162003, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9144188761711121, "cells": [{"id": 0, "text": "xiv ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 81.162003, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "xiv"}, {"label": "page_footer", "id": 1, "page_no": 15, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 95.71053314208984, "t": 754.6729736328125, "r": 337.03378, "b": 763.97509765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9409525394439697, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 96.180305, "t": 755.538002, "r": 337.03378, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "list_item", "id": 2, "page_no": 15, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.5431365966797, "t": 70.70941925048828, "r": 310.37393, "b": 81.28385162353516, "coord_origin": "TOPLEFT"}, "confidence": 0.8883165717124939, "cells": [{"id": 2, "text": "GLYPH", "bbox": {"l": 136.8, "t": 71.65808000000015, "r": 141.78, "b": 80.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Send your comments in an email to:", "bbox": {"l": 151.20016, "t": 71.50867000000005, "r": 310.37393, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Send your comments in an email to:"}, {"label": "text", "id": 3, "page_no": 15, "cluster": {"id": 3, "label": "text", "bbox": {"l": 150.99362182617188, "t": 87.82772064208984, "r": 246.22007751464844, "b": 97.41265999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.6984229683876038, "cells": [{"id": 4, "text": "redbooks@us.ibm.com", "bbox": {"l": 151.20016, "t": 88.63788000000011, "r": 246.11894, "b": 97.41265999999996, "coord_origin": "TOPLEFT"}}]}, "text": "redbooks@us.ibm.com"}, {"label": "list_item", "id": 4, "page_no": 15, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.64413452148438, "t": 104.9468002319336, "r": 254.27019999999996, "b": 114.9759292602539, "coord_origin": "TOPLEFT"}, "confidence": 0.8724080324172974, "cells": [{"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 105.67742999999996, "r": 141.78, "b": 114.45221000000004, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Mail your comments to:", "bbox": {"l": 151.20016, "t": 105.52801999999997, "r": 254.27019999999996, "b": 114.74103000000002, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Mail your comments to:"}, {"label": "text", "id": 5, "page_no": 15, "cluster": {"id": 5, "label": "text", "bbox": {"l": 150.4449005126953, "t": 120.91980743408203, "r": 426.99243, "b": 167.9119873046875, "coord_origin": "TOPLEFT"}, "confidence": 0.8001936674118042, "cells": [{"id": 7, "text": "IBM Corporation, International Technical Support Organization", "bbox": {"l": 151.20016, "t": 122.50780999999995, "r": 426.99243, "b": 131.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Dept. HYTD Mail Station P099", "bbox": {"l": 151.20016, "t": 134.50762999999995, "r": 286.11533, "b": 143.72064, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "2455 South Road", "bbox": {"l": 151.20016, "t": 146.50744999999995, "r": 229.02261, "b": 155.72046, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Poughkeepsie, NY 12601-5400", "bbox": {"l": 151.20016, "t": 158.50725999999997, "r": 289.45789, "b": 167.72028, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Corporation, International Technical Support Organization Dept. HYTD Mail Station P099 2455 South Road Poughkeepsie, NY 12601-5400"}, {"label": "section_header", "id": 6, "page_no": 15, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 64.44961547851562, "t": 194.60934448242188, "r": 317.65109, "b": 210.96367999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9598472118377686, "cells": [{"id": 11, "text": "Stay connected to IBM Redbooks", "bbox": {"l": 64.800003, "t": 196.20068000000003, "r": 317.65109, "b": 210.96367999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Stay connected to IBM Redbooks"}, {"label": "list_item", "id": 7, "page_no": 15, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.58946228027344, "t": 227.83482360839844, "r": 246.83711000000002, "b": 237.74170000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.8748195767402649, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.8, "t": 228.67809999999997, "r": 141.78, "b": 237.45288000000005, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Find us on Facebook:", "bbox": {"l": 151.20016, "t": 228.52868999999998, "r": 246.83711000000002, "b": 237.74170000000004, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Find us on Facebook:"}, {"label": "text", "id": 8, "page_no": 15, "cluster": {"id": 8, "label": "text", "bbox": {"l": 150.674072265625, "t": 244.8909912109375, "r": 326.09775, "b": 254.91514587402344, "coord_origin": "TOPLEFT"}, "confidence": 0.7252531051635742, "cells": [{"id": 14, "text": "http://www.facebook.com/IBMRedbooks", "bbox": {"l": 151.20016, "t": 245.65790000000004, "r": 326.09775, "b": 254.43268, "coord_origin": "TOPLEFT"}}]}, "text": "http://www.facebook.com/IBMRedbooks"}, {"label": "list_item", "id": 9, "page_no": 15, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.61866760253906, "t": 261.4954833984375, "r": 241.52239999999998, "b": 271.70129, "coord_origin": "TOPLEFT"}, "confidence": 0.8754413723945618, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 262.6377, "r": 141.78, "b": 271.41247999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Follow us on Twitter:", "bbox": {"l": 151.20016, "t": 262.48828000000003, "r": 241.52239999999998, "b": 271.70129, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Follow us on Twitter:"}, {"label": "text", "id": 10, "page_no": 15, "cluster": {"id": 10, "label": "text", "bbox": {"l": 150.70498657226562, "t": 278.7747497558594, "r": 301.07822, "b": 288.4688720703125, "coord_origin": "TOPLEFT"}, "confidence": 0.6634963750839233, "cells": [{"id": 17, "text": "http://twitter.com/ibmredbooks", "bbox": {"l": 151.20016, "t": 279.67731000000003, "r": 301.07822, "b": 288.45206, "coord_origin": "TOPLEFT"}}]}, "text": "http://twitter.com/ibmredbooks"}, {"label": "list_item", "id": 11, "page_no": 15, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.6381072998047, "t": 295.406982421875, "r": 257.42651, "b": 305.72067, "coord_origin": "TOPLEFT"}, "confidence": 0.8954482078552246, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.8, "t": 296.65707000000003, "r": 141.78, "b": 305.43184999999994, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Look for us on LinkedIn:", "bbox": {"l": 151.20016, "t": 296.50769, "r": 257.42651, "b": 305.72067, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Look for us on LinkedIn:"}, {"label": "text", "id": 12, "page_no": 15, "cluster": {"id": 12, "label": "text", "bbox": {"l": 150.5355224609375, "t": 312.7005920410156, "r": 391.07678, "b": 322.6709289550781, "coord_origin": "TOPLEFT"}, "confidence": 0.7177077531814575, "cells": [{"id": 20, "text": "http://www.linkedin.com/groups?home=&gid=2130806", "bbox": {"l": 151.20016, "t": 313.63687, "r": 391.07678, "b": 322.41165, "coord_origin": "TOPLEFT"}}]}, "text": "http://www.linkedin.com/groups?home=&gid=2130806"}, {"label": "list_item", "id": 13, "page_no": 15, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 135.53648376464844, "t": 330.0694580078125, "r": 546.2179, "b": 352.36749267578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9449265599250793, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.8, "t": 330.67645, "r": 141.78, "b": 339.45123, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Explore new Redbooks publications, residencies, and workshops with the IBM Redbooks ", "bbox": {"l": 151.20016, "t": 330.52707, "r": 546.2179, "b": 339.74005, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "weekly newsletter:", "bbox": {"l": 151.20016, "t": 342.52689, "r": 232.82335, "b": 351.73986999999994, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Explore new Redbooks publications, residencies, and workshops with the IBM Redbooks weekly newsletter:"}, {"label": "text", "id": 14, "page_no": 15, "cluster": {"id": 14, "label": "text", "bbox": {"l": 150.64300537109375, "t": 358.7694091796875, "r": 451.45623779296875, "b": 368.8676452636719, "coord_origin": "TOPLEFT"}, "confidence": 0.7377406358718872, "cells": [{"id": 24, "text": "https://www.redbooks.ibm.com/Redbooks.nsf/subscribe?OpenForm", "bbox": {"l": 151.20016, "t": 359.65607, "r": 451.01605, "b": 368.43085, "coord_origin": "TOPLEFT"}}]}, "text": "https://www.redbooks.ibm.com/Redbooks.nsf/subscribe?OpenForm"}, {"label": "list_item", "id": 15, "page_no": 15, "cluster": {"id": 15, "label": "list_item", "bbox": {"l": 135.8739471435547, "t": 375.3260498046875, "r": 429.34805000000006, "b": 385.69946, "coord_origin": "TOPLEFT"}, "confidence": 0.9105416536331177, "cells": [{"id": 25, "text": "GLYPH", "bbox": {"l": 136.8, "t": 376.63586000000004, "r": 141.78, "b": 385.41063999999994, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Stay current on recent Redbooks publications with RSS Feeds:", "bbox": {"l": 151.20016, "t": 376.4864799999999, "r": 429.34805000000006, "b": 385.69946, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Stay current on recent Redbooks publications with RSS Feeds:"}, {"label": "text", "id": 16, "page_no": 15, "cluster": {"id": 16, "label": "text", "bbox": {"l": 150.6341552734375, "t": 392.9015197753906, "r": 331.07773, "b": 402.52935791015625, "coord_origin": "TOPLEFT"}, "confidence": 0.766843855381012, "cells": [{"id": 27, "text": "http://www.redbooks.ibm.com/rss.html", "bbox": {"l": 151.20016, "t": 393.67545, "r": 331.07773, "b": 402.45023, "coord_origin": "TOPLEFT"}}]}, "text": "http://www.redbooks.ibm.com/rss.html"}], "body": [{"label": "list_item", "id": 2, "page_no": 15, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.5431365966797, "t": 70.70941925048828, "r": 310.37393, "b": 81.28385162353516, "coord_origin": "TOPLEFT"}, "confidence": 0.8883165717124939, "cells": [{"id": 2, "text": "GLYPH", "bbox": {"l": 136.8, "t": 71.65808000000015, "r": 141.78, "b": 80.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Send your comments in an email to:", "bbox": {"l": 151.20016, "t": 71.50867000000005, "r": 310.37393, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Send your comments in an email to:"}, {"label": "text", "id": 3, "page_no": 15, "cluster": {"id": 3, "label": "text", "bbox": {"l": 150.99362182617188, "t": 87.82772064208984, "r": 246.22007751464844, "b": 97.41265999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.6984229683876038, "cells": [{"id": 4, "text": "redbooks@us.ibm.com", "bbox": {"l": 151.20016, "t": 88.63788000000011, "r": 246.11894, "b": 97.41265999999996, "coord_origin": "TOPLEFT"}}]}, "text": "redbooks@us.ibm.com"}, {"label": "list_item", "id": 4, "page_no": 15, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.64413452148438, "t": 104.9468002319336, "r": 254.27019999999996, "b": 114.9759292602539, "coord_origin": "TOPLEFT"}, "confidence": 0.8724080324172974, "cells": [{"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 105.67742999999996, "r": 141.78, "b": 114.45221000000004, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Mail your comments to:", "bbox": {"l": 151.20016, "t": 105.52801999999997, "r": 254.27019999999996, "b": 114.74103000000002, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Mail your comments to:"}, {"label": "text", "id": 5, "page_no": 15, "cluster": {"id": 5, "label": "text", "bbox": {"l": 150.4449005126953, "t": 120.91980743408203, "r": 426.99243, "b": 167.9119873046875, "coord_origin": "TOPLEFT"}, "confidence": 0.8001936674118042, "cells": [{"id": 7, "text": "IBM Corporation, International Technical Support Organization", "bbox": {"l": 151.20016, "t": 122.50780999999995, "r": 426.99243, "b": 131.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Dept. HYTD Mail Station P099", "bbox": {"l": 151.20016, "t": 134.50762999999995, "r": 286.11533, "b": 143.72064, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "2455 South Road", "bbox": {"l": 151.20016, "t": 146.50744999999995, "r": 229.02261, "b": 155.72046, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Poughkeepsie, NY 12601-5400", "bbox": {"l": 151.20016, "t": 158.50725999999997, "r": 289.45789, "b": 167.72028, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Corporation, International Technical Support Organization Dept. HYTD Mail Station P099 2455 South Road Poughkeepsie, NY 12601-5400"}, {"label": "section_header", "id": 6, "page_no": 15, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 64.44961547851562, "t": 194.60934448242188, "r": 317.65109, "b": 210.96367999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9598472118377686, "cells": [{"id": 11, "text": "Stay connected to IBM Redbooks", "bbox": {"l": 64.800003, "t": 196.20068000000003, "r": 317.65109, "b": 210.96367999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Stay connected to IBM Redbooks"}, {"label": "list_item", "id": 7, "page_no": 15, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.58946228027344, "t": 227.83482360839844, "r": 246.83711000000002, "b": 237.74170000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.8748195767402649, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.8, "t": 228.67809999999997, "r": 141.78, "b": 237.45288000000005, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Find us on Facebook:", "bbox": {"l": 151.20016, "t": 228.52868999999998, "r": 246.83711000000002, "b": 237.74170000000004, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Find us on Facebook:"}, {"label": "text", "id": 8, "page_no": 15, "cluster": {"id": 8, "label": "text", "bbox": {"l": 150.674072265625, "t": 244.8909912109375, "r": 326.09775, "b": 254.91514587402344, "coord_origin": "TOPLEFT"}, "confidence": 0.7252531051635742, "cells": [{"id": 14, "text": "http://www.facebook.com/IBMRedbooks", "bbox": {"l": 151.20016, "t": 245.65790000000004, "r": 326.09775, "b": 254.43268, "coord_origin": "TOPLEFT"}}]}, "text": "http://www.facebook.com/IBMRedbooks"}, {"label": "list_item", "id": 9, "page_no": 15, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.61866760253906, "t": 261.4954833984375, "r": 241.52239999999998, "b": 271.70129, "coord_origin": "TOPLEFT"}, "confidence": 0.8754413723945618, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 262.6377, "r": 141.78, "b": 271.41247999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Follow us on Twitter:", "bbox": {"l": 151.20016, "t": 262.48828000000003, "r": 241.52239999999998, "b": 271.70129, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Follow us on Twitter:"}, {"label": "text", "id": 10, "page_no": 15, "cluster": {"id": 10, "label": "text", "bbox": {"l": 150.70498657226562, "t": 278.7747497558594, "r": 301.07822, "b": 288.4688720703125, "coord_origin": "TOPLEFT"}, "confidence": 0.6634963750839233, "cells": [{"id": 17, "text": "http://twitter.com/ibmredbooks", "bbox": {"l": 151.20016, "t": 279.67731000000003, "r": 301.07822, "b": 288.45206, "coord_origin": "TOPLEFT"}}]}, "text": "http://twitter.com/ibmredbooks"}, {"label": "list_item", "id": 11, "page_no": 15, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.6381072998047, "t": 295.406982421875, "r": 257.42651, "b": 305.72067, "coord_origin": "TOPLEFT"}, "confidence": 0.8954482078552246, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.8, "t": 296.65707000000003, "r": 141.78, "b": 305.43184999999994, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Look for us on LinkedIn:", "bbox": {"l": 151.20016, "t": 296.50769, "r": 257.42651, "b": 305.72067, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Look for us on LinkedIn:"}, {"label": "text", "id": 12, "page_no": 15, "cluster": {"id": 12, "label": "text", "bbox": {"l": 150.5355224609375, "t": 312.7005920410156, "r": 391.07678, "b": 322.6709289550781, "coord_origin": "TOPLEFT"}, "confidence": 0.7177077531814575, "cells": [{"id": 20, "text": "http://www.linkedin.com/groups?home=&gid=2130806", "bbox": {"l": 151.20016, "t": 313.63687, "r": 391.07678, "b": 322.41165, "coord_origin": "TOPLEFT"}}]}, "text": "http://www.linkedin.com/groups?home=&gid=2130806"}, {"label": "list_item", "id": 13, "page_no": 15, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 135.53648376464844, "t": 330.0694580078125, "r": 546.2179, "b": 352.36749267578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9449265599250793, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.8, "t": 330.67645, "r": 141.78, "b": 339.45123, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Explore new Redbooks publications, residencies, and workshops with the IBM Redbooks ", "bbox": {"l": 151.20016, "t": 330.52707, "r": 546.2179, "b": 339.74005, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "weekly newsletter:", "bbox": {"l": 151.20016, "t": 342.52689, "r": 232.82335, "b": 351.73986999999994, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Explore new Redbooks publications, residencies, and workshops with the IBM Redbooks weekly newsletter:"}, {"label": "text", "id": 14, "page_no": 15, "cluster": {"id": 14, "label": "text", "bbox": {"l": 150.64300537109375, "t": 358.7694091796875, "r": 451.45623779296875, "b": 368.8676452636719, "coord_origin": "TOPLEFT"}, "confidence": 0.7377406358718872, "cells": [{"id": 24, "text": "https://www.redbooks.ibm.com/Redbooks.nsf/subscribe?OpenForm", "bbox": {"l": 151.20016, "t": 359.65607, "r": 451.01605, "b": 368.43085, "coord_origin": "TOPLEFT"}}]}, "text": "https://www.redbooks.ibm.com/Redbooks.nsf/subscribe?OpenForm"}, {"label": "list_item", "id": 15, "page_no": 15, "cluster": {"id": 15, "label": "list_item", "bbox": {"l": 135.8739471435547, "t": 375.3260498046875, "r": 429.34805000000006, "b": 385.69946, "coord_origin": "TOPLEFT"}, "confidence": 0.9105416536331177, "cells": [{"id": 25, "text": "GLYPH", "bbox": {"l": 136.8, "t": 376.63586000000004, "r": 141.78, "b": 385.41063999999994, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Stay current on recent Redbooks publications with RSS Feeds:", "bbox": {"l": 151.20016, "t": 376.4864799999999, "r": 429.34805000000006, "b": 385.69946, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Stay current on recent Redbooks publications with RSS Feeds:"}, {"label": "text", "id": 16, "page_no": 15, "cluster": {"id": 16, "label": "text", "bbox": {"l": 150.6341552734375, "t": 392.9015197753906, "r": 331.07773, "b": 402.52935791015625, "coord_origin": "TOPLEFT"}, "confidence": 0.766843855381012, "cells": [{"id": 27, "text": "http://www.redbooks.ibm.com/rss.html", "bbox": {"l": 151.20016, "t": 393.67545, "r": 331.07773, "b": 402.45023, "coord_origin": "TOPLEFT"}}]}, "text": "http://www.redbooks.ibm.com/rss.html"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 15, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.0907974243164, "t": 754.5955200195312, "r": 81.162003, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9144188761711121, "cells": [{"id": 0, "text": "xiv ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 81.162003, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "xiv"}, {"label": "page_footer", "id": 1, "page_no": 15, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 95.71053314208984, "t": 754.6729736328125, "r": 337.03378, "b": 763.97509765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9409525394439697, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 96.180305, "t": 755.538002, "r": 337.03378, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 16, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "1", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Chapter 1.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Securing and protecting IBM DB2 ", "bbox": {"l": 136.8, "t": 254.88635, "r": 547.30475, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "data", "bbox": {"l": 136.8, "t": 285.84671, "r": 190.29802, "b": 309.8782, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Recent news headlines are filled with reports of data breaches and cyber-attacks impacting ", "bbox": {"l": 136.8, "t": 348.70871, "r": 542.25665, "b": 357.92169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "global businesses of all sizes. The Identity Theft Resource Center$^{1}$ reports that almost 5000 ", "bbox": {"l": 136.80096, "t": 360.70853, "r": 544.96643, "b": 369.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "data breaches have occurred since 2005, exposing over 600 million records of data. The ", "bbox": {"l": 136.79965, "t": 372.70853, "r": 529.53839, "b": 381.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "financial cost of these data breaches is skyrocketing. Studies from the Ponemon Institute$^{2}$ ", "bbox": {"l": 136.79965, "t": 384.7083400000001, "r": 535.32874, "b": 393.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "revealed that the average cost of a data breach increased in 2013 by 15% globally and ", "bbox": {"l": 136.80026, "t": 396.70853, "r": 521.64374, "b": 405.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "resulted in a brand equity loss of $9.4 million per attack. The average cost that is incurred for ", "bbox": {"l": 136.80026, "t": 408.7083400000001, "r": 547.13135, "b": 417.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "each lost record containing sensitive information increased more than 9% to $145 per record. ", "bbox": {"l": 136.80023, "t": 420.70816, "r": 547.25403, "b": 429.92114, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Businesses must make a serious effort to secure their data and recognize that securing ", "bbox": {"l": 136.80023, "t": 442.7277199999999, "r": 525.06482, "b": 451.9407, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "information assets is a cost of doing business. In many parts of the world and in many ", "bbox": {"l": 136.80025, "t": 454.72754000000003, "r": 518.26825, "b": 463.94052, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "industries, securing the data is required by law and subject to audits. Data security is no ", "bbox": {"l": 136.80025, "t": 466.72736, "r": 527.2063, "b": 475.94034, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "longer an option; it is a requirement.", "bbox": {"l": 136.80025, "t": 478.72717, "r": 296.31067, "b": 487.94016, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "This chapter describes how you can secure and protect data in DB2 for i. The following topics ", "bbox": {"l": 136.80025, "t": 500.68698, "r": 547.15515, "b": 509.89996, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "are covered in this chapter:", "bbox": {"l": 136.80025, "t": 512.6868, "r": 257.28036, "b": 521.89978, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "GLYPH", "bbox": {"l": 136.80025, "t": 529.87576, "r": 141.78024, "b": 538.6505099999999, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Security fundamentals", "bbox": {"l": 151.20041, "t": 529.72635, "r": 250.23166999999998, "b": 538.93936, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "GLYPH", "bbox": {"l": 136.80025, "t": 541.87556, "r": 141.78024, "b": 550.65031, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Current state of IBM i security", "bbox": {"l": 151.20041, "t": 541.72617, "r": 282.98114, "b": 550.93916, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "GLYPH", "bbox": {"l": 136.80025, "t": 553.87537, "r": 141.78024, "b": 562.65012, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "DB2 for i security controls", "bbox": {"l": 151.20041, "t": 553.72597, "r": 264.88187, "b": 562.93896, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "1", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "$^{1 }$http://www.idtheftcenter.org", "bbox": {"l": 136.8, "t": 717.750061, "r": 258.36255, "b": 724.780441, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "$^{2 }$http://www.ponemon.org", "bbox": {"l": 136.8, "t": 727.709961, "r": 231.90257, "b": 734.740341, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "/", "bbox": {"l": 231.84036, "t": 727.590263, "r": 234.05881, "b": 734.97176, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.68400573730469, "t": 754.6591796875, "r": 257.24335, "b": 764.1430053710938, "coord_origin": "TOPLEFT"}, "confidence": 0.9370514154434204, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 541.2396240234375, "t": 754.2869873046875, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8513588309288025, "cells": [{"id": 1, "text": "1", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 1.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "section_header", "bbox": {"l": 136.68006896972656, "t": 253.28985595703125, "r": 547.30475, "b": 309.8782, "coord_origin": "TOPLEFT"}, "confidence": 0.9377049207687378, "cells": [{"id": 3, "text": "Securing and protecting IBM DB2 ", "bbox": {"l": 136.8, "t": 254.88635, "r": 547.30475, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "data", "bbox": {"l": 136.8, "t": 285.84671, "r": 190.29802, "b": 309.8782, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 136.15219116210938, "t": 347.975341796875, "r": 547.25403, "b": 430.37359619140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9868757724761963, "cells": [{"id": 5, "text": "Recent news headlines are filled with reports of data breaches and cyber-attacks impacting ", "bbox": {"l": 136.8, "t": 348.70871, "r": 542.25665, "b": 357.92169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "global businesses of all sizes. The Identity Theft Resource Center$^{1}$ reports that almost 5000 ", "bbox": {"l": 136.80096, "t": 360.70853, "r": 544.96643, "b": 369.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "data breaches have occurred since 2005, exposing over 600 million records of data. The ", "bbox": {"l": 136.79965, "t": 372.70853, "r": 529.53839, "b": 381.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "financial cost of these data breaches is skyrocketing. Studies from the Ponemon Institute$^{2}$ ", "bbox": {"l": 136.79965, "t": 384.7083400000001, "r": 535.32874, "b": 393.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "revealed that the average cost of a data breach increased in 2013 by 15% globally and ", "bbox": {"l": 136.80026, "t": 396.70853, "r": 521.64374, "b": 405.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "resulted in a brand equity loss of $9.4 million per attack. The average cost that is incurred for ", "bbox": {"l": 136.80026, "t": 408.7083400000001, "r": 547.13135, "b": 417.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "each lost record containing sensitive information increased more than 9% to $145 per record. ", "bbox": {"l": 136.80023, "t": 420.70816, "r": 547.25403, "b": 429.92114, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.05917358398438, "t": 442.1153564453125, "r": 527.2063, "b": 488.44146728515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9865864515304565, "cells": [{"id": 12, "text": "Businesses must make a serious effort to secure their data and recognize that securing ", "bbox": {"l": 136.80023, "t": 442.7277199999999, "r": 525.06482, "b": 451.9407, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "information assets is a cost of doing business. In many parts of the world and in many ", "bbox": {"l": 136.80025, "t": 454.72754000000003, "r": 518.26825, "b": 463.94052, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "industries, securing the data is required by law and subject to audits. Data security is no ", "bbox": {"l": 136.80025, "t": 466.72736, "r": 527.2063, "b": 475.94034, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "longer an option; it is a requirement.", "bbox": {"l": 136.80025, "t": 478.72717, "r": 296.31067, "b": 487.94016, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 135.5961456298828, "t": 500.0403137207031, "r": 547.15515, "b": 521.89978, "coord_origin": "TOPLEFT"}, "confidence": 0.9734498858451843, "cells": [{"id": 16, "text": "This chapter describes how you can secure and protect data in DB2 for i. The following topics ", "bbox": {"l": 136.80025, "t": 500.68698, "r": 547.15515, "b": 509.89996, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "are covered in this chapter:", "bbox": {"l": 136.80025, "t": 512.6868, "r": 257.28036, "b": 521.89978, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.86915588378906, "t": 528.70361328125, "r": 250.23166999999998, "b": 539.0433349609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9374465346336365, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.80025, "t": 529.87576, "r": 141.78024, "b": 538.6505099999999, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Security fundamentals", "bbox": {"l": 151.20041, "t": 529.72635, "r": 250.23166999999998, "b": 538.93936, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.742431640625, "t": 540.7142333984375, "r": 282.98114, "b": 551.373291015625, "coord_origin": "TOPLEFT"}, "confidence": 0.933772087097168, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.80025, "t": 541.87556, "r": 141.78024, "b": 550.65031, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Current state of IBM i security", "bbox": {"l": 151.20041, "t": 541.72617, "r": 282.98114, "b": 550.93916, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.86570739746094, "t": 552.4489135742188, "r": 264.88187, "b": 562.93896, "coord_origin": "TOPLEFT"}, "confidence": 0.946319043636322, "cells": [{"id": 22, "text": "GLYPH", "bbox": {"l": 136.80025, "t": 553.87537, "r": 141.78024, "b": 562.65012, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "DB2 for i security controls", "bbox": {"l": 151.20041, "t": 553.72597, "r": 264.88187, "b": 562.93896, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 500.39999, "t": 92.66075897216797, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.7054197788238525, "cells": [{"id": 24, "text": "1", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "footnote", "bbox": {"l": 135.7418975830078, "t": 716.2816772460938, "r": 258.36255, "b": 725.5408325195312, "coord_origin": "TOPLEFT"}, "confidence": 0.7673327326774597, "cells": [{"id": 25, "text": "$^{1 }$http://www.idtheftcenter.org", "bbox": {"l": 136.8, "t": 717.750061, "r": 258.36255, "b": 724.780441, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "footnote", "bbox": {"l": 136.19522094726562, "t": 725.296142578125, "r": 234.42526245117188, "b": 735.2681274414062, "coord_origin": "TOPLEFT"}, "confidence": 0.7980051636695862, "cells": [{"id": 26, "text": "$^{2 }$http://www.ponemon.org", "bbox": {"l": 136.8, "t": 727.709961, "r": 231.90257, "b": 734.740341, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "/", "bbox": {"l": 231.84036, "t": 727.590263, "r": 234.05881, "b": 734.97176, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "picture", "bbox": {"l": 32.05508804321289, "t": 70.42637634277344, "r": 239.62692260742188, "b": 238.041015625, "coord_origin": "TOPLEFT"}, "confidence": 0.7604197263717651, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 16, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.68400573730469, "t": 754.6591796875, "r": 257.24335, "b": 764.1430053710938, "coord_origin": "TOPLEFT"}, "confidence": 0.9370514154434204, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 16, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 541.2396240234375, "t": 754.2869873046875, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8513588309288025, "cells": [{"id": 1, "text": "1", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "1"}, {"label": "text", "id": 2, "page_no": 16, "cluster": {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 1.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 1."}, {"label": "section_header", "id": 3, "page_no": 16, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 136.68006896972656, "t": 253.28985595703125, "r": 547.30475, "b": 309.8782, "coord_origin": "TOPLEFT"}, "confidence": 0.9377049207687378, "cells": [{"id": 3, "text": "Securing and protecting IBM DB2 ", "bbox": {"l": 136.8, "t": 254.88635, "r": 547.30475, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "data", "bbox": {"l": 136.8, "t": 285.84671, "r": 190.29802, "b": 309.8782, "coord_origin": "TOPLEFT"}}]}, "text": "Securing and protecting IBM DB2 data"}, {"label": "text", "id": 4, "page_no": 16, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.15219116210938, "t": 347.975341796875, "r": 547.25403, "b": 430.37359619140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9868757724761963, "cells": [{"id": 5, "text": "Recent news headlines are filled with reports of data breaches and cyber-attacks impacting ", "bbox": {"l": 136.8, "t": 348.70871, "r": 542.25665, "b": 357.92169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "global businesses of all sizes. The Identity Theft Resource Center$^{1}$ reports that almost 5000 ", "bbox": {"l": 136.80096, "t": 360.70853, "r": 544.96643, "b": 369.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "data breaches have occurred since 2005, exposing over 600 million records of data. The ", "bbox": {"l": 136.79965, "t": 372.70853, "r": 529.53839, "b": 381.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "financial cost of these data breaches is skyrocketing. Studies from the Ponemon Institute$^{2}$ ", "bbox": {"l": 136.79965, "t": 384.7083400000001, "r": 535.32874, "b": 393.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "revealed that the average cost of a data breach increased in 2013 by 15% globally and ", "bbox": {"l": 136.80026, "t": 396.70853, "r": 521.64374, "b": 405.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "resulted in a brand equity loss of $9.4 million per attack. The average cost that is incurred for ", "bbox": {"l": 136.80026, "t": 408.7083400000001, "r": 547.13135, "b": 417.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "each lost record containing sensitive information increased more than 9% to $145 per record. ", "bbox": {"l": 136.80023, "t": 420.70816, "r": 547.25403, "b": 429.92114, "coord_origin": "TOPLEFT"}}]}, "text": "Recent news headlines are filled with reports of data breaches and cyber-attacks impacting global businesses of all sizes. The Identity Theft Resource Center$^{1}$ reports that almost 5000 data breaches have occurred since 2005, exposing over 600 million records of data. The financial cost of these data breaches is skyrocketing. Studies from the Ponemon Institute$^{2}$ revealed that the average cost of a data breach increased in 2013 by 15% globally and resulted in a brand equity loss of $9.4 million per attack. The average cost that is incurred for each lost record containing sensitive information increased more than 9% to $145 per record."}, {"label": "text", "id": 5, "page_no": 16, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.05917358398438, "t": 442.1153564453125, "r": 527.2063, "b": 488.44146728515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9865864515304565, "cells": [{"id": 12, "text": "Businesses must make a serious effort to secure their data and recognize that securing ", "bbox": {"l": 136.80023, "t": 442.7277199999999, "r": 525.06482, "b": 451.9407, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "information assets is a cost of doing business. In many parts of the world and in many ", "bbox": {"l": 136.80025, "t": 454.72754000000003, "r": 518.26825, "b": 463.94052, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "industries, securing the data is required by law and subject to audits. Data security is no ", "bbox": {"l": 136.80025, "t": 466.72736, "r": 527.2063, "b": 475.94034, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "longer an option; it is a requirement.", "bbox": {"l": 136.80025, "t": 478.72717, "r": 296.31067, "b": 487.94016, "coord_origin": "TOPLEFT"}}]}, "text": "Businesses must make a serious effort to secure their data and recognize that securing information assets is a cost of doing business. In many parts of the world and in many industries, securing the data is required by law and subject to audits. Data security is no longer an option; it is a requirement."}, {"label": "text", "id": 6, "page_no": 16, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.5961456298828, "t": 500.0403137207031, "r": 547.15515, "b": 521.89978, "coord_origin": "TOPLEFT"}, "confidence": 0.9734498858451843, "cells": [{"id": 16, "text": "This chapter describes how you can secure and protect data in DB2 for i. The following topics ", "bbox": {"l": 136.80025, "t": 500.68698, "r": 547.15515, "b": 509.89996, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "are covered in this chapter:", "bbox": {"l": 136.80025, "t": 512.6868, "r": 257.28036, "b": 521.89978, "coord_origin": "TOPLEFT"}}]}, "text": "This chapter describes how you can secure and protect data in DB2 for i. The following topics are covered in this chapter:"}, {"label": "list_item", "id": 7, "page_no": 16, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.86915588378906, "t": 528.70361328125, "r": 250.23166999999998, "b": 539.0433349609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9374465346336365, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.80025, "t": 529.87576, "r": 141.78024, "b": 538.6505099999999, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Security fundamentals", "bbox": {"l": 151.20041, "t": 529.72635, "r": 250.23166999999998, "b": 538.93936, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Security fundamentals"}, {"label": "list_item", "id": 8, "page_no": 16, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.742431640625, "t": 540.7142333984375, "r": 282.98114, "b": 551.373291015625, "coord_origin": "TOPLEFT"}, "confidence": 0.933772087097168, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.80025, "t": 541.87556, "r": 141.78024, "b": 550.65031, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Current state of IBM i security", "bbox": {"l": 151.20041, "t": 541.72617, "r": 282.98114, "b": 550.93916, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Current state of IBM i security"}, {"label": "list_item", "id": 9, "page_no": 16, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.86570739746094, "t": 552.4489135742188, "r": 264.88187, "b": 562.93896, "coord_origin": "TOPLEFT"}, "confidence": 0.946319043636322, "cells": [{"id": 22, "text": "GLYPH", "bbox": {"l": 136.80025, "t": 553.87537, "r": 141.78024, "b": 562.65012, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "DB2 for i security controls", "bbox": {"l": 151.20041, "t": 553.72597, "r": 264.88187, "b": 562.93896, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH DB2 for i security controls"}, {"label": "text", "id": 10, "page_no": 16, "cluster": {"id": 10, "label": "text", "bbox": {"l": 500.39999, "t": 92.66075897216797, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.7054197788238525, "cells": [{"id": 24, "text": "1", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, "text": "1"}, {"label": "footnote", "id": 11, "page_no": 16, "cluster": {"id": 11, "label": "footnote", "bbox": {"l": 135.7418975830078, "t": 716.2816772460938, "r": 258.36255, "b": 725.5408325195312, "coord_origin": "TOPLEFT"}, "confidence": 0.7673327326774597, "cells": [{"id": 25, "text": "$^{1 }$http://www.idtheftcenter.org", "bbox": {"l": 136.8, "t": 717.750061, "r": 258.36255, "b": 724.780441, "coord_origin": "TOPLEFT"}}]}, "text": "$^{1 }$http://www.idtheftcenter.org"}, {"label": "footnote", "id": 12, "page_no": 16, "cluster": {"id": 12, "label": "footnote", "bbox": {"l": 136.19522094726562, "t": 725.296142578125, "r": 234.42526245117188, "b": 735.2681274414062, "coord_origin": "TOPLEFT"}, "confidence": 0.7980051636695862, "cells": [{"id": 26, "text": "$^{2 }$http://www.ponemon.org", "bbox": {"l": 136.8, "t": 727.709961, "r": 231.90257, "b": 734.740341, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "/", "bbox": {"l": 231.84036, "t": 727.590263, "r": 234.05881, "b": 734.97176, "coord_origin": "TOPLEFT"}}]}, "text": "$^{2 }$http://www.ponemon.org /"}, {"label": "picture", "id": 13, "page_no": 16, "cluster": {"id": 13, "label": "picture", "bbox": {"l": 32.05508804321289, "t": 70.42637634277344, "r": 239.62692260742188, "b": 238.041015625, "coord_origin": "TOPLEFT"}, "confidence": 0.7604197263717651, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 16, "cluster": {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 1.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 1."}, {"label": "section_header", "id": 3, "page_no": 16, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 136.68006896972656, "t": 253.28985595703125, "r": 547.30475, "b": 309.8782, "coord_origin": "TOPLEFT"}, "confidence": 0.9377049207687378, "cells": [{"id": 3, "text": "Securing and protecting IBM DB2 ", "bbox": {"l": 136.8, "t": 254.88635, "r": 547.30475, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "data", "bbox": {"l": 136.8, "t": 285.84671, "r": 190.29802, "b": 309.8782, "coord_origin": "TOPLEFT"}}]}, "text": "Securing and protecting IBM DB2 data"}, {"label": "text", "id": 4, "page_no": 16, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.15219116210938, "t": 347.975341796875, "r": 547.25403, "b": 430.37359619140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9868757724761963, "cells": [{"id": 5, "text": "Recent news headlines are filled with reports of data breaches and cyber-attacks impacting ", "bbox": {"l": 136.8, "t": 348.70871, "r": 542.25665, "b": 357.92169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "global businesses of all sizes. The Identity Theft Resource Center$^{1}$ reports that almost 5000 ", "bbox": {"l": 136.80096, "t": 360.70853, "r": 544.96643, "b": 369.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "data breaches have occurred since 2005, exposing over 600 million records of data. The ", "bbox": {"l": 136.79965, "t": 372.70853, "r": 529.53839, "b": 381.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "financial cost of these data breaches is skyrocketing. Studies from the Ponemon Institute$^{2}$ ", "bbox": {"l": 136.79965, "t": 384.7083400000001, "r": 535.32874, "b": 393.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "revealed that the average cost of a data breach increased in 2013 by 15% globally and ", "bbox": {"l": 136.80026, "t": 396.70853, "r": 521.64374, "b": 405.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "resulted in a brand equity loss of $9.4 million per attack. The average cost that is incurred for ", "bbox": {"l": 136.80026, "t": 408.7083400000001, "r": 547.13135, "b": 417.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "each lost record containing sensitive information increased more than 9% to $145 per record. ", "bbox": {"l": 136.80023, "t": 420.70816, "r": 547.25403, "b": 429.92114, "coord_origin": "TOPLEFT"}}]}, "text": "Recent news headlines are filled with reports of data breaches and cyber-attacks impacting global businesses of all sizes. The Identity Theft Resource Center$^{1}$ reports that almost 5000 data breaches have occurred since 2005, exposing over 600 million records of data. The financial cost of these data breaches is skyrocketing. Studies from the Ponemon Institute$^{2}$ revealed that the average cost of a data breach increased in 2013 by 15% globally and resulted in a brand equity loss of $9.4 million per attack. The average cost that is incurred for each lost record containing sensitive information increased more than 9% to $145 per record."}, {"label": "text", "id": 5, "page_no": 16, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.05917358398438, "t": 442.1153564453125, "r": 527.2063, "b": 488.44146728515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9865864515304565, "cells": [{"id": 12, "text": "Businesses must make a serious effort to secure their data and recognize that securing ", "bbox": {"l": 136.80023, "t": 442.7277199999999, "r": 525.06482, "b": 451.9407, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "information assets is a cost of doing business. In many parts of the world and in many ", "bbox": {"l": 136.80025, "t": 454.72754000000003, "r": 518.26825, "b": 463.94052, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "industries, securing the data is required by law and subject to audits. Data security is no ", "bbox": {"l": 136.80025, "t": 466.72736, "r": 527.2063, "b": 475.94034, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "longer an option; it is a requirement.", "bbox": {"l": 136.80025, "t": 478.72717, "r": 296.31067, "b": 487.94016, "coord_origin": "TOPLEFT"}}]}, "text": "Businesses must make a serious effort to secure their data and recognize that securing information assets is a cost of doing business. In many parts of the world and in many industries, securing the data is required by law and subject to audits. Data security is no longer an option; it is a requirement."}, {"label": "text", "id": 6, "page_no": 16, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.5961456298828, "t": 500.0403137207031, "r": 547.15515, "b": 521.89978, "coord_origin": "TOPLEFT"}, "confidence": 0.9734498858451843, "cells": [{"id": 16, "text": "This chapter describes how you can secure and protect data in DB2 for i. The following topics ", "bbox": {"l": 136.80025, "t": 500.68698, "r": 547.15515, "b": 509.89996, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "are covered in this chapter:", "bbox": {"l": 136.80025, "t": 512.6868, "r": 257.28036, "b": 521.89978, "coord_origin": "TOPLEFT"}}]}, "text": "This chapter describes how you can secure and protect data in DB2 for i. The following topics are covered in this chapter:"}, {"label": "list_item", "id": 7, "page_no": 16, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.86915588378906, "t": 528.70361328125, "r": 250.23166999999998, "b": 539.0433349609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9374465346336365, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.80025, "t": 529.87576, "r": 141.78024, "b": 538.6505099999999, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Security fundamentals", "bbox": {"l": 151.20041, "t": 529.72635, "r": 250.23166999999998, "b": 538.93936, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Security fundamentals"}, {"label": "list_item", "id": 8, "page_no": 16, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.742431640625, "t": 540.7142333984375, "r": 282.98114, "b": 551.373291015625, "coord_origin": "TOPLEFT"}, "confidence": 0.933772087097168, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.80025, "t": 541.87556, "r": 141.78024, "b": 550.65031, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Current state of IBM i security", "bbox": {"l": 151.20041, "t": 541.72617, "r": 282.98114, "b": 550.93916, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Current state of IBM i security"}, {"label": "list_item", "id": 9, "page_no": 16, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.86570739746094, "t": 552.4489135742188, "r": 264.88187, "b": 562.93896, "coord_origin": "TOPLEFT"}, "confidence": 0.946319043636322, "cells": [{"id": 22, "text": "GLYPH", "bbox": {"l": 136.80025, "t": 553.87537, "r": 141.78024, "b": 562.65012, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "DB2 for i security controls", "bbox": {"l": 151.20041, "t": 553.72597, "r": 264.88187, "b": 562.93896, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH DB2 for i security controls"}, {"label": "text", "id": 10, "page_no": 16, "cluster": {"id": 10, "label": "text", "bbox": {"l": 500.39999, "t": 92.66075897216797, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.7054197788238525, "cells": [{"id": 24, "text": "1", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, "text": "1"}, {"label": "footnote", "id": 11, "page_no": 16, "cluster": {"id": 11, "label": "footnote", "bbox": {"l": 135.7418975830078, "t": 716.2816772460938, "r": 258.36255, "b": 725.5408325195312, "coord_origin": "TOPLEFT"}, "confidence": 0.7673327326774597, "cells": [{"id": 25, "text": "$^{1 }$http://www.idtheftcenter.org", "bbox": {"l": 136.8, "t": 717.750061, "r": 258.36255, "b": 724.780441, "coord_origin": "TOPLEFT"}}]}, "text": "$^{1 }$http://www.idtheftcenter.org"}, {"label": "footnote", "id": 12, "page_no": 16, "cluster": {"id": 12, "label": "footnote", "bbox": {"l": 136.19522094726562, "t": 725.296142578125, "r": 234.42526245117188, "b": 735.2681274414062, "coord_origin": "TOPLEFT"}, "confidence": 0.7980051636695862, "cells": [{"id": 26, "text": "$^{2 }$http://www.ponemon.org", "bbox": {"l": 136.8, "t": 727.709961, "r": 231.90257, "b": 734.740341, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "/", "bbox": {"l": 231.84036, "t": 727.590263, "r": 234.05881, "b": 734.97176, "coord_origin": "TOPLEFT"}}]}, "text": "$^{2 }$http://www.ponemon.org /"}, {"label": "picture", "id": 13, "page_no": 16, "cluster": {"id": 13, "label": "picture", "bbox": {"l": 32.05508804321289, "t": 70.42637634277344, "r": 239.62692260742188, "b": 238.041015625, "coord_origin": "TOPLEFT"}, "confidence": 0.7604197263717651, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 16, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.68400573730469, "t": 754.6591796875, "r": 257.24335, "b": 764.1430053710938, "coord_origin": "TOPLEFT"}, "confidence": 0.9370514154434204, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 16, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 541.2396240234375, "t": 754.2869873046875, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8513588309288025, "cells": [{"id": 1, "text": "1", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "1"}]}}, {"page_no": 17, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "2 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 87.840302, "t": 755.538002, "r": 328.72537, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "1.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.524292, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Security fundamentals", "bbox": {"l": 92.069145, "t": 74.34069999999997, "r": 267.40582, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Before reviewing database security techniques, there are two fundamental steps in securing ", "bbox": {"l": 136.8, "t": 106.6087, "r": 545.00482, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "information assets that must be described:", "bbox": {"l": 136.8, "t": 118.60852, "r": 324.47229, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 135.79749000000004, "r": 141.78, "b": 144.57227, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "First, and most important, is the definition of a company\u2019s ", "bbox": {"l": 151.20016, "t": 135.64806999999996, "r": 406.67715, "b": 144.86108000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "security policy", "bbox": {"l": 406.67999, "t": 135.12487999999996, "r": 471.03815, "b": 145.18262000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": ". Without a ", "bbox": {"l": 470.04001000000005, "t": 135.64862000000005, "r": 520.59796, "b": 144.86163, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "security policy, there is no definition of what are acceptable practices for using, accessing, ", "bbox": {"l": 151.19949, "t": 147.64844000000005, "r": 547.16425, "b": 156.86145, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "and storing information by who, what, when, where, and how. A security policy should ", "bbox": {"l": 151.19948, "t": 159.64824999999996, "r": 531.02008, "b": 168.86127, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "minimally address three things: confidentiality, integrity, and availability.", "bbox": {"l": 151.19948, "t": 171.64806999999996, "r": 463.3578499999999, "b": 180.86108000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "The monitoring and assessment of adherence to the security policy determines whether ", "bbox": {"l": 151.19948, "t": 188.62787000000003, "r": 541.70514, "b": 197.84087999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "your security strategy is working. Often, IBM security consultants are asked to perform ", "bbox": {"l": 151.19948, "t": 200.62769000000003, "r": 534.83002, "b": 209.84069999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "security assessments for companies without regard to the security policy. Although these ", "bbox": {"l": 151.19948, "t": 212.62750000000005, "r": 545.79773, "b": 221.84051999999997, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "assessments can be useful for observing how the system is defined and how data is being ", "bbox": {"l": 151.19948, "t": 224.62732000000005, "r": 547.26086, "b": 233.84033, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "accessed, they cannot determine the level of security without a security policy. Without a ", "bbox": {"l": 151.19948, "t": 236.62714000000005, "r": 543.91528, "b": 245.84015, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "security policy, it really is not an assessment as much as it is a baseline for monitoring the ", "bbox": {"l": 151.19948, "t": 248.62694999999997, "r": 547.25989, "b": 257.83997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "changes in the security settings that are captured.", "bbox": {"l": 151.19946, "t": 260.62676999999996, "r": 371.8692, "b": 269.83978, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "A security policy is what defines whether the system and its settings are secure (or not). ", "bbox": {"l": 151.19946, "t": 277.60657000000003, "r": 541.992, "b": 286.81958, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "GLYPH", "bbox": {"l": 136.7993, "t": 294.7955600000001, "r": 141.7793, "b": 303.57034, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "The second fundamental in securing data assets is the use of ", "bbox": {"l": 151.19946, "t": 294.64618, "r": 425.86029, "b": 303.85916, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "resource security", "bbox": {"l": 425.82001, "t": 294.12496999999996, "r": 501.60065, "b": 304.18265, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": ". If ", "bbox": {"l": 500.64001, "t": 294.64871, "r": 514.49933, "b": 303.86169, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "implemented properly, resource security prevents data breaches from both internal and ", "bbox": {"l": 151.20038, "t": 306.64853, "r": 537.87421, "b": 315.86151, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "external intrusions. Resource security controls are closely tied to the part of the security ", "bbox": {"l": 151.20038, "t": 318.64834999999994, "r": 541.33636, "b": 327.86133, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "policy that defines who should have access to what information resources. A hacker might ", "bbox": {"l": 151.20038, "t": 330.64816, "r": 547.15826, "b": 339.86115, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "be good enough to get through your company firewalls and sift his way through to your ", "bbox": {"l": 151.20038, "t": 342.64798, "r": 534.86066, "b": 351.86096, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "system, but if they do not have explicit access to your database, the hacker cannot ", "bbox": {"l": 151.20038, "t": 354.6478, "r": 517.00739, "b": 363.86078, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "compromise your information assets.", "bbox": {"l": 151.20038, "t": 366.64761, "r": 314.03534, "b": 375.8606, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "With your eyes now open to the importance of securing information assets, the rest of this ", "bbox": {"l": 136.80022, "t": 388.60742, "r": 535.36169, "b": 397.82040000000006, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "chapter reviews the methods that are available for securing database resources on IBM i. ", "bbox": {"l": 136.80022, "t": 400.60724, "r": 532.755, "b": 409.82022, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "1.2", "bbox": {"l": 64.800003, "t": 438.30072, "r": 87.415726, "b": 453.06372, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Current state of IBM i security", "bbox": {"l": 91.93885, "t": 438.30072, "r": 323.38391, "b": 453.06372, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Because of the inherently secure nature of IBM i, many clients rely on the default system ", "bbox": {"l": 136.8, "t": 470.62872, "r": 530.30463, "b": 479.84171, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "settings to protect their business data that is stored in DB2 for i. In most cases, this means no ", "bbox": {"l": 136.8, "t": 482.62854, "r": 547.31824, "b": 491.84152, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "data protection because the default setting for the Create default public authority (QCRTAUT) ", "bbox": {"l": 136.8, "t": 494.62836, "r": 547.19586, "b": 503.84134, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "system value is *CHANGE.", "bbox": {"l": 136.8, "t": 506.62817, "r": 257.04709, "b": 515.84116, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Even more disturbing is that many IBM i clients remain in this state, despite the news ", "bbox": {"l": 136.8, "t": 528.64774, "r": 513.90448, "b": 537.86073, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "headlines and the significant costs that are involved with databases being compromised. This ", "bbox": {"l": 136.8, "t": 540.6475399999999, "r": 547.28442, "b": 549.86053, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "default security configuration makes it quite challenging to implement basic security policies. ", "bbox": {"l": 136.8, "t": 552.64734, "r": 546.27533, "b": 561.86034, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "A tighter implementation is required if you really want to protect one of your company\u2019s most ", "bbox": {"l": 136.8, "t": 564.64714, "r": 545.08014, "b": 573.86014, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "valuable assets, which is the data.", "bbox": {"l": 136.8, "t": 576.64694, "r": 287.80057, "b": 585.85994, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Traditionally, IBM i applications have employed menu-based security to counteract this default ", "bbox": {"l": 136.8, "t": 598.6665, "r": 547.28326, "b": 607.8795, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "configuration that gives all users access to the data. The theory is that data is protected by ", "bbox": {"l": 136.8, "t": 610.6663100000001, "r": 538.6767, "b": 619.8793000000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "the menu options controlling what database operations that the user can perform. This ", "bbox": {"l": 136.8, "t": 622.66611, "r": 520.35364, "b": 631.8791, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "approach is ineffective, even if the user profile is restricted from running interactive ", "bbox": {"l": 136.80002, "t": 634.6659099999999, "r": 502.77115000000003, "b": 643.87891, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "commands. The reason is that in today\u2019s connected world there are a multitude of interfaces ", "bbox": {"l": 136.80002, "t": 646.66571, "r": 545.16492, "b": 655.87871, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "into the system, from web browsers to PC clients, that bypass application menus. If there are ", "bbox": {"l": 136.80002, "t": 658.66551, "r": 547.23376, "b": 667.87852, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "no object-level controls, users of these newer interfaces have an open door to your data.", "bbox": {"l": 136.80002, "t": 670.66532, "r": 526.04187, "b": 679.87833, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.92394256591797, "t": 754.286865234375, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8889444470405579, "cells": [{"id": 0, "text": "2 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 87.81553649902344, "t": 754.6853637695312, "r": 328.72537, "b": 763.9682006835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9476423859596252, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 87.840302, "t": 755.538002, "r": 328.72537, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.33735656738281, "t": 73.39700317382812, "r": 267.40582, "b": 89.61579895019531, "coord_origin": "TOPLEFT"}, "confidence": 0.9651358127593994, "cells": [{"id": 2, "text": "1.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.524292, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Security fundamentals", "bbox": {"l": 92.069145, "t": 74.34069999999997, "r": 267.40582, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 136.23556518554688, "t": 106.02731323242188, "r": 545.00482, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9663435220718384, "cells": [{"id": 4, "text": "Before reviewing database security techniques, there are two fundamental steps in securing ", "bbox": {"l": 136.8, "t": 106.6087, "r": 545.00482, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "information assets that must be described:", "bbox": {"l": 136.8, "t": 118.60852, "r": 324.47229, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 135.66490173339844, "t": 134.66909790039062, "r": 547.16425, "b": 181.15467834472656, "coord_origin": "TOPLEFT"}, "confidence": 0.9835494756698608, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 135.79749000000004, "r": 141.78, "b": 144.57227, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "First, and most important, is the definition of a company\u2019s ", "bbox": {"l": 151.20016, "t": 135.64806999999996, "r": 406.67715, "b": 144.86108000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "security policy", "bbox": {"l": 406.67999, "t": 135.12487999999996, "r": 471.03815, "b": 145.18262000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": ". Without a ", "bbox": {"l": 470.04001000000005, "t": 135.64862000000005, "r": 520.59796, "b": 144.86163, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "security policy, there is no definition of what are acceptable practices for using, accessing, ", "bbox": {"l": 151.19949, "t": 147.64844000000005, "r": 547.16425, "b": 156.86145, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "and storing information by who, what, when, where, and how. A security policy should ", "bbox": {"l": 151.19948, "t": 159.64824999999996, "r": 531.02008, "b": 168.86127, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "minimally address three things: confidentiality, integrity, and availability.", "bbox": {"l": 151.19948, "t": 171.64806999999996, "r": 463.3578499999999, "b": 180.86108000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 150.2132110595703, "t": 187.9793701171875, "r": 547.26086, "b": 270.5374450683594, "coord_origin": "TOPLEFT"}, "confidence": 0.8077321648597717, "cells": [{"id": 13, "text": "The monitoring and assessment of adherence to the security policy determines whether ", "bbox": {"l": 151.19948, "t": 188.62787000000003, "r": 541.70514, "b": 197.84087999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "your security strategy is working. Often, IBM security consultants are asked to perform ", "bbox": {"l": 151.19948, "t": 200.62769000000003, "r": 534.83002, "b": 209.84069999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "security assessments for companies without regard to the security policy. Although these ", "bbox": {"l": 151.19948, "t": 212.62750000000005, "r": 545.79773, "b": 221.84051999999997, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "assessments can be useful for observing how the system is defined and how data is being ", "bbox": {"l": 151.19948, "t": 224.62732000000005, "r": 547.26086, "b": 233.84033, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "accessed, they cannot determine the level of security without a security policy. Without a ", "bbox": {"l": 151.19948, "t": 236.62714000000005, "r": 543.91528, "b": 245.84015, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "security policy, it really is not an assessment as much as it is a baseline for monitoring the ", "bbox": {"l": 151.19948, "t": 248.62694999999997, "r": 547.25989, "b": 257.83997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "changes in the security settings that are captured.", "bbox": {"l": 151.19946, "t": 260.62676999999996, "r": 371.8692, "b": 269.83978, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 150.1995086669922, "t": 276.76263427734375, "r": 541.992, "b": 287.0709533691406, "coord_origin": "TOPLEFT"}, "confidence": 0.7967227697372437, "cells": [{"id": 20, "text": "A security policy is what defines whether the system and its settings are secure (or not). ", "bbox": {"l": 151.19946, "t": 277.60657000000003, "r": 541.992, "b": 286.81958, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.4777374267578, "t": 293.81439208984375, "r": 547.15826, "b": 376.5453796386719, "coord_origin": "TOPLEFT"}, "confidence": 0.9837487936019897, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.7993, "t": 294.7955600000001, "r": 141.7793, "b": 303.57034, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "The second fundamental in securing data assets is the use of ", "bbox": {"l": 151.19946, "t": 294.64618, "r": 425.86029, "b": 303.85916, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "resource security", "bbox": {"l": 425.82001, "t": 294.12496999999996, "r": 501.60065, "b": 304.18265, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": ". If ", "bbox": {"l": 500.64001, "t": 294.64871, "r": 514.49933, "b": 303.86169, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "implemented properly, resource security prevents data breaches from both internal and ", "bbox": {"l": 151.20038, "t": 306.64853, "r": 537.87421, "b": 315.86151, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "external intrusions. Resource security controls are closely tied to the part of the security ", "bbox": {"l": 151.20038, "t": 318.64834999999994, "r": 541.33636, "b": 327.86133, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "policy that defines who should have access to what information resources. A hacker might ", "bbox": {"l": 151.20038, "t": 330.64816, "r": 547.15826, "b": 339.86115, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "be good enough to get through your company firewalls and sift his way through to your ", "bbox": {"l": 151.20038, "t": 342.64798, "r": 534.86066, "b": 351.86096, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "system, but if they do not have explicit access to your database, the hacker cannot ", "bbox": {"l": 151.20038, "t": 354.6478, "r": 517.00739, "b": 363.86078, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "compromise your information assets.", "bbox": {"l": 151.20038, "t": 366.64761, "r": 314.03534, "b": 375.8606, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 135.90879821777344, "t": 388.12286376953125, "r": 535.36169, "b": 410.3081359863281, "coord_origin": "TOPLEFT"}, "confidence": 0.9622000455856323, "cells": [{"id": 31, "text": "With your eyes now open to the importance of securing information assets, the rest of this ", "bbox": {"l": 136.80022, "t": 388.60742, "r": 535.36169, "b": 397.82040000000006, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "chapter reviews the methods that are available for securing database resources on IBM i. ", "bbox": {"l": 136.80022, "t": 400.60724, "r": 532.755, "b": 409.82022, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "section_header", "bbox": {"l": 64.44733428955078, "t": 437.4118957519531, "r": 323.38391, "b": 453.6912841796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9650285243988037, "cells": [{"id": 33, "text": "1.2", "bbox": {"l": 64.800003, "t": 438.30072, "r": 87.415726, "b": 453.06372, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Current state of IBM i security", "bbox": {"l": 91.93885, "t": 438.30072, "r": 323.38391, "b": 453.06372, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 136.1368408203125, "t": 469.76971435546875, "r": 547.31824, "b": 516.47802734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9848750233650208, "cells": [{"id": 35, "text": "Because of the inherently secure nature of IBM i, many clients rely on the default system ", "bbox": {"l": 136.8, "t": 470.62872, "r": 530.30463, "b": 479.84171, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "settings to protect their business data that is stored in DB2 for i. In most cases, this means no ", "bbox": {"l": 136.8, "t": 482.62854, "r": 547.31824, "b": 491.84152, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "data protection because the default setting for the Create default public authority (QCRTAUT) ", "bbox": {"l": 136.8, "t": 494.62836, "r": 547.19586, "b": 503.84134, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "system value is *CHANGE.", "bbox": {"l": 136.8, "t": 506.62817, "r": 257.04709, "b": 515.84116, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 135.79974365234375, "t": 527.8772583007812, "r": 547.28442, "b": 585.85994, "coord_origin": "TOPLEFT"}, "confidence": 0.9848474860191345, "cells": [{"id": 39, "text": "Even more disturbing is that many IBM i clients remain in this state, despite the news ", "bbox": {"l": 136.8, "t": 528.64774, "r": 513.90448, "b": 537.86073, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "headlines and the significant costs that are involved with databases being compromised. This ", "bbox": {"l": 136.8, "t": 540.6475399999999, "r": 547.28442, "b": 549.86053, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "default security configuration makes it quite challenging to implement basic security policies. ", "bbox": {"l": 136.8, "t": 552.64734, "r": 546.27533, "b": 561.86034, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "A tighter implementation is required if you really want to protect one of your company\u2019s most ", "bbox": {"l": 136.8, "t": 564.64714, "r": 545.08014, "b": 573.86014, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "valuable assets, which is the data.", "bbox": {"l": 136.8, "t": 576.64694, "r": 287.80057, "b": 585.85994, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 135.8997802734375, "t": 598.1246337890625, "r": 547.28326, "b": 680.4212036132812, "coord_origin": "TOPLEFT"}, "confidence": 0.9870820045471191, "cells": [{"id": 44, "text": "Traditionally, IBM i applications have employed menu-based security to counteract this default ", "bbox": {"l": 136.8, "t": 598.6665, "r": 547.28326, "b": 607.8795, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "configuration that gives all users access to the data. The theory is that data is protected by ", "bbox": {"l": 136.8, "t": 610.6663100000001, "r": 538.6767, "b": 619.8793000000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "the menu options controlling what database operations that the user can perform. This ", "bbox": {"l": 136.8, "t": 622.66611, "r": 520.35364, "b": 631.8791, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "approach is ineffective, even if the user profile is restricted from running interactive ", "bbox": {"l": 136.80002, "t": 634.6659099999999, "r": 502.77115000000003, "b": 643.87891, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "commands. The reason is that in today\u2019s connected world there are a multitude of interfaces ", "bbox": {"l": 136.80002, "t": 646.66571, "r": 545.16492, "b": 655.87871, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "into the system, from web browsers to PC clients, that bypass application menus. If there are ", "bbox": {"l": 136.80002, "t": 658.66551, "r": 547.23376, "b": 667.87852, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "no object-level controls, users of these newer interfaces have an open door to your data.", "bbox": {"l": 136.80002, "t": 670.66532, "r": 526.04187, "b": 679.87833, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 17, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.92394256591797, "t": 754.286865234375, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8889444470405579, "cells": [{"id": 0, "text": "2 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "2"}, {"label": "page_footer", "id": 1, "page_no": 17, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 87.81553649902344, "t": 754.6853637695312, "r": 328.72537, "b": 763.9682006835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9476423859596252, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 87.840302, "t": 755.538002, "r": 328.72537, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "section_header", "id": 2, "page_no": 17, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.33735656738281, "t": 73.39700317382812, "r": 267.40582, "b": 89.61579895019531, "coord_origin": "TOPLEFT"}, "confidence": 0.9651358127593994, "cells": [{"id": 2, "text": "1.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.524292, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Security fundamentals", "bbox": {"l": 92.069145, "t": 74.34069999999997, "r": 267.40582, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, "text": "1.1 Security fundamentals"}, {"label": "text", "id": 3, "page_no": 17, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.23556518554688, "t": 106.02731323242188, "r": 545.00482, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9663435220718384, "cells": [{"id": 4, "text": "Before reviewing database security techniques, there are two fundamental steps in securing ", "bbox": {"l": 136.8, "t": 106.6087, "r": 545.00482, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "information assets that must be described:", "bbox": {"l": 136.8, "t": 118.60852, "r": 324.47229, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Before reviewing database security techniques, there are two fundamental steps in securing information assets that must be described:"}, {"label": "list_item", "id": 4, "page_no": 17, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.66490173339844, "t": 134.66909790039062, "r": 547.16425, "b": 181.15467834472656, "coord_origin": "TOPLEFT"}, "confidence": 0.9835494756698608, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 135.79749000000004, "r": 141.78, "b": 144.57227, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "First, and most important, is the definition of a company\u2019s ", "bbox": {"l": 151.20016, "t": 135.64806999999996, "r": 406.67715, "b": 144.86108000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "security policy", "bbox": {"l": 406.67999, "t": 135.12487999999996, "r": 471.03815, "b": 145.18262000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": ". Without a ", "bbox": {"l": 470.04001000000005, "t": 135.64862000000005, "r": 520.59796, "b": 144.86163, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "security policy, there is no definition of what are acceptable practices for using, accessing, ", "bbox": {"l": 151.19949, "t": 147.64844000000005, "r": 547.16425, "b": 156.86145, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "and storing information by who, what, when, where, and how. A security policy should ", "bbox": {"l": 151.19948, "t": 159.64824999999996, "r": 531.02008, "b": 168.86127, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "minimally address three things: confidentiality, integrity, and availability.", "bbox": {"l": 151.19948, "t": 171.64806999999996, "r": 463.3578499999999, "b": 180.86108000000002, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH First, and most important, is the definition of a company\u2019s security policy . Without a security policy, there is no definition of what are acceptable practices for using, accessing, and storing information by who, what, when, where, and how. A security policy should minimally address three things: confidentiality, integrity, and availability."}, {"label": "list_item", "id": 5, "page_no": 17, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 150.2132110595703, "t": 187.9793701171875, "r": 547.26086, "b": 270.5374450683594, "coord_origin": "TOPLEFT"}, "confidence": 0.8077321648597717, "cells": [{"id": 13, "text": "The monitoring and assessment of adherence to the security policy determines whether ", "bbox": {"l": 151.19948, "t": 188.62787000000003, "r": 541.70514, "b": 197.84087999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "your security strategy is working. Often, IBM security consultants are asked to perform ", "bbox": {"l": 151.19948, "t": 200.62769000000003, "r": 534.83002, "b": 209.84069999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "security assessments for companies without regard to the security policy. Although these ", "bbox": {"l": 151.19948, "t": 212.62750000000005, "r": 545.79773, "b": 221.84051999999997, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "assessments can be useful for observing how the system is defined and how data is being ", "bbox": {"l": 151.19948, "t": 224.62732000000005, "r": 547.26086, "b": 233.84033, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "accessed, they cannot determine the level of security without a security policy. Without a ", "bbox": {"l": 151.19948, "t": 236.62714000000005, "r": 543.91528, "b": 245.84015, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "security policy, it really is not an assessment as much as it is a baseline for monitoring the ", "bbox": {"l": 151.19948, "t": 248.62694999999997, "r": 547.25989, "b": 257.83997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "changes in the security settings that are captured.", "bbox": {"l": 151.19946, "t": 260.62676999999996, "r": 371.8692, "b": 269.83978, "coord_origin": "TOPLEFT"}}]}, "text": "The monitoring and assessment of adherence to the security policy determines whether your security strategy is working. Often, IBM security consultants are asked to perform security assessments for companies without regard to the security policy. Although these assessments can be useful for observing how the system is defined and how data is being accessed, they cannot determine the level of security without a security policy. Without a security policy, it really is not an assessment as much as it is a baseline for monitoring the changes in the security settings that are captured."}, {"label": "text", "id": 6, "page_no": 17, "cluster": {"id": 6, "label": "text", "bbox": {"l": 150.1995086669922, "t": 276.76263427734375, "r": 541.992, "b": 287.0709533691406, "coord_origin": "TOPLEFT"}, "confidence": 0.7967227697372437, "cells": [{"id": 20, "text": "A security policy is what defines whether the system and its settings are secure (or not). ", "bbox": {"l": 151.19946, "t": 277.60657000000003, "r": 541.992, "b": 286.81958, "coord_origin": "TOPLEFT"}}]}, "text": "A security policy is what defines whether the system and its settings are secure (or not)."}, {"label": "list_item", "id": 7, "page_no": 17, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.4777374267578, "t": 293.81439208984375, "r": 547.15826, "b": 376.5453796386719, "coord_origin": "TOPLEFT"}, "confidence": 0.9837487936019897, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.7993, "t": 294.7955600000001, "r": 141.7793, "b": 303.57034, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "The second fundamental in securing data assets is the use of ", "bbox": {"l": 151.19946, "t": 294.64618, "r": 425.86029, "b": 303.85916, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "resource security", "bbox": {"l": 425.82001, "t": 294.12496999999996, "r": 501.60065, "b": 304.18265, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": ". If ", "bbox": {"l": 500.64001, "t": 294.64871, "r": 514.49933, "b": 303.86169, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "implemented properly, resource security prevents data breaches from both internal and ", "bbox": {"l": 151.20038, "t": 306.64853, "r": 537.87421, "b": 315.86151, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "external intrusions. Resource security controls are closely tied to the part of the security ", "bbox": {"l": 151.20038, "t": 318.64834999999994, "r": 541.33636, "b": 327.86133, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "policy that defines who should have access to what information resources. A hacker might ", "bbox": {"l": 151.20038, "t": 330.64816, "r": 547.15826, "b": 339.86115, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "be good enough to get through your company firewalls and sift his way through to your ", "bbox": {"l": 151.20038, "t": 342.64798, "r": 534.86066, "b": 351.86096, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "system, but if they do not have explicit access to your database, the hacker cannot ", "bbox": {"l": 151.20038, "t": 354.6478, "r": 517.00739, "b": 363.86078, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "compromise your information assets.", "bbox": {"l": 151.20038, "t": 366.64761, "r": 314.03534, "b": 375.8606, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The second fundamental in securing data assets is the use of resource security . If implemented properly, resource security prevents data breaches from both internal and external intrusions. Resource security controls are closely tied to the part of the security policy that defines who should have access to what information resources. A hacker might be good enough to get through your company firewalls and sift his way through to your system, but if they do not have explicit access to your database, the hacker cannot compromise your information assets."}, {"label": "text", "id": 8, "page_no": 17, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.90879821777344, "t": 388.12286376953125, "r": 535.36169, "b": 410.3081359863281, "coord_origin": "TOPLEFT"}, "confidence": 0.9622000455856323, "cells": [{"id": 31, "text": "With your eyes now open to the importance of securing information assets, the rest of this ", "bbox": {"l": 136.80022, "t": 388.60742, "r": 535.36169, "b": 397.82040000000006, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "chapter reviews the methods that are available for securing database resources on IBM i. ", "bbox": {"l": 136.80022, "t": 400.60724, "r": 532.755, "b": 409.82022, "coord_origin": "TOPLEFT"}}]}, "text": "With your eyes now open to the importance of securing information assets, the rest of this chapter reviews the methods that are available for securing database resources on IBM i."}, {"label": "section_header", "id": 9, "page_no": 17, "cluster": {"id": 9, "label": "section_header", "bbox": {"l": 64.44733428955078, "t": 437.4118957519531, "r": 323.38391, "b": 453.6912841796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9650285243988037, "cells": [{"id": 33, "text": "1.2", "bbox": {"l": 64.800003, "t": 438.30072, "r": 87.415726, "b": 453.06372, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Current state of IBM i security", "bbox": {"l": 91.93885, "t": 438.30072, "r": 323.38391, "b": 453.06372, "coord_origin": "TOPLEFT"}}]}, "text": "1.2 Current state of IBM i security"}, {"label": "text", "id": 10, "page_no": 17, "cluster": {"id": 10, "label": "text", "bbox": {"l": 136.1368408203125, "t": 469.76971435546875, "r": 547.31824, "b": 516.47802734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9848750233650208, "cells": [{"id": 35, "text": "Because of the inherently secure nature of IBM i, many clients rely on the default system ", "bbox": {"l": 136.8, "t": 470.62872, "r": 530.30463, "b": 479.84171, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "settings to protect their business data that is stored in DB2 for i. In most cases, this means no ", "bbox": {"l": 136.8, "t": 482.62854, "r": 547.31824, "b": 491.84152, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "data protection because the default setting for the Create default public authority (QCRTAUT) ", "bbox": {"l": 136.8, "t": 494.62836, "r": 547.19586, "b": 503.84134, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "system value is *CHANGE.", "bbox": {"l": 136.8, "t": 506.62817, "r": 257.04709, "b": 515.84116, "coord_origin": "TOPLEFT"}}]}, "text": "Because of the inherently secure nature of IBM i, many clients rely on the default system settings to protect their business data that is stored in DB2 for i. In most cases, this means no data protection because the default setting for the Create default public authority (QCRTAUT) system value is *CHANGE."}, {"label": "text", "id": 11, "page_no": 17, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.79974365234375, "t": 527.8772583007812, "r": 547.28442, "b": 585.85994, "coord_origin": "TOPLEFT"}, "confidence": 0.9848474860191345, "cells": [{"id": 39, "text": "Even more disturbing is that many IBM i clients remain in this state, despite the news ", "bbox": {"l": 136.8, "t": 528.64774, "r": 513.90448, "b": 537.86073, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "headlines and the significant costs that are involved with databases being compromised. This ", "bbox": {"l": 136.8, "t": 540.6475399999999, "r": 547.28442, "b": 549.86053, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "default security configuration makes it quite challenging to implement basic security policies. ", "bbox": {"l": 136.8, "t": 552.64734, "r": 546.27533, "b": 561.86034, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "A tighter implementation is required if you really want to protect one of your company\u2019s most ", "bbox": {"l": 136.8, "t": 564.64714, "r": 545.08014, "b": 573.86014, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "valuable assets, which is the data.", "bbox": {"l": 136.8, "t": 576.64694, "r": 287.80057, "b": 585.85994, "coord_origin": "TOPLEFT"}}]}, "text": "Even more disturbing is that many IBM i clients remain in this state, despite the news headlines and the significant costs that are involved with databases being compromised. This default security configuration makes it quite challenging to implement basic security policies. A tighter implementation is required if you really want to protect one of your company\u2019s most valuable assets, which is the data."}, {"label": "text", "id": 12, "page_no": 17, "cluster": {"id": 12, "label": "text", "bbox": {"l": 135.8997802734375, "t": 598.1246337890625, "r": 547.28326, "b": 680.4212036132812, "coord_origin": "TOPLEFT"}, "confidence": 0.9870820045471191, "cells": [{"id": 44, "text": "Traditionally, IBM i applications have employed menu-based security to counteract this default ", "bbox": {"l": 136.8, "t": 598.6665, "r": 547.28326, "b": 607.8795, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "configuration that gives all users access to the data. The theory is that data is protected by ", "bbox": {"l": 136.8, "t": 610.6663100000001, "r": 538.6767, "b": 619.8793000000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "the menu options controlling what database operations that the user can perform. This ", "bbox": {"l": 136.8, "t": 622.66611, "r": 520.35364, "b": 631.8791, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "approach is ineffective, even if the user profile is restricted from running interactive ", "bbox": {"l": 136.80002, "t": 634.6659099999999, "r": 502.77115000000003, "b": 643.87891, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "commands. The reason is that in today\u2019s connected world there are a multitude of interfaces ", "bbox": {"l": 136.80002, "t": 646.66571, "r": 545.16492, "b": 655.87871, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "into the system, from web browsers to PC clients, that bypass application menus. If there are ", "bbox": {"l": 136.80002, "t": 658.66551, "r": 547.23376, "b": 667.87852, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "no object-level controls, users of these newer interfaces have an open door to your data.", "bbox": {"l": 136.80002, "t": 670.66532, "r": 526.04187, "b": 679.87833, "coord_origin": "TOPLEFT"}}]}, "text": "Traditionally, IBM i applications have employed menu-based security to counteract this default configuration that gives all users access to the data. The theory is that data is protected by the menu options controlling what database operations that the user can perform. This approach is ineffective, even if the user profile is restricted from running interactive commands. The reason is that in today\u2019s connected world there are a multitude of interfaces into the system, from web browsers to PC clients, that bypass application menus. If there are no object-level controls, users of these newer interfaces have an open door to your data."}], "body": [{"label": "section_header", "id": 2, "page_no": 17, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.33735656738281, "t": 73.39700317382812, "r": 267.40582, "b": 89.61579895019531, "coord_origin": "TOPLEFT"}, "confidence": 0.9651358127593994, "cells": [{"id": 2, "text": "1.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.524292, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Security fundamentals", "bbox": {"l": 92.069145, "t": 74.34069999999997, "r": 267.40582, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, "text": "1.1 Security fundamentals"}, {"label": "text", "id": 3, "page_no": 17, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.23556518554688, "t": 106.02731323242188, "r": 545.00482, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9663435220718384, "cells": [{"id": 4, "text": "Before reviewing database security techniques, there are two fundamental steps in securing ", "bbox": {"l": 136.8, "t": 106.6087, "r": 545.00482, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "information assets that must be described:", "bbox": {"l": 136.8, "t": 118.60852, "r": 324.47229, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Before reviewing database security techniques, there are two fundamental steps in securing information assets that must be described:"}, {"label": "list_item", "id": 4, "page_no": 17, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.66490173339844, "t": 134.66909790039062, "r": 547.16425, "b": 181.15467834472656, "coord_origin": "TOPLEFT"}, "confidence": 0.9835494756698608, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 135.79749000000004, "r": 141.78, "b": 144.57227, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "First, and most important, is the definition of a company\u2019s ", "bbox": {"l": 151.20016, "t": 135.64806999999996, "r": 406.67715, "b": 144.86108000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "security policy", "bbox": {"l": 406.67999, "t": 135.12487999999996, "r": 471.03815, "b": 145.18262000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": ". Without a ", "bbox": {"l": 470.04001000000005, "t": 135.64862000000005, "r": 520.59796, "b": 144.86163, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "security policy, there is no definition of what are acceptable practices for using, accessing, ", "bbox": {"l": 151.19949, "t": 147.64844000000005, "r": 547.16425, "b": 156.86145, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "and storing information by who, what, when, where, and how. A security policy should ", "bbox": {"l": 151.19948, "t": 159.64824999999996, "r": 531.02008, "b": 168.86127, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "minimally address three things: confidentiality, integrity, and availability.", "bbox": {"l": 151.19948, "t": 171.64806999999996, "r": 463.3578499999999, "b": 180.86108000000002, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH First, and most important, is the definition of a company\u2019s security policy . Without a security policy, there is no definition of what are acceptable practices for using, accessing, and storing information by who, what, when, where, and how. A security policy should minimally address three things: confidentiality, integrity, and availability."}, {"label": "list_item", "id": 5, "page_no": 17, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 150.2132110595703, "t": 187.9793701171875, "r": 547.26086, "b": 270.5374450683594, "coord_origin": "TOPLEFT"}, "confidence": 0.8077321648597717, "cells": [{"id": 13, "text": "The monitoring and assessment of adherence to the security policy determines whether ", "bbox": {"l": 151.19948, "t": 188.62787000000003, "r": 541.70514, "b": 197.84087999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "your security strategy is working. Often, IBM security consultants are asked to perform ", "bbox": {"l": 151.19948, "t": 200.62769000000003, "r": 534.83002, "b": 209.84069999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "security assessments for companies without regard to the security policy. Although these ", "bbox": {"l": 151.19948, "t": 212.62750000000005, "r": 545.79773, "b": 221.84051999999997, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "assessments can be useful for observing how the system is defined and how data is being ", "bbox": {"l": 151.19948, "t": 224.62732000000005, "r": 547.26086, "b": 233.84033, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "accessed, they cannot determine the level of security without a security policy. Without a ", "bbox": {"l": 151.19948, "t": 236.62714000000005, "r": 543.91528, "b": 245.84015, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "security policy, it really is not an assessment as much as it is a baseline for monitoring the ", "bbox": {"l": 151.19948, "t": 248.62694999999997, "r": 547.25989, "b": 257.83997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "changes in the security settings that are captured.", "bbox": {"l": 151.19946, "t": 260.62676999999996, "r": 371.8692, "b": 269.83978, "coord_origin": "TOPLEFT"}}]}, "text": "The monitoring and assessment of adherence to the security policy determines whether your security strategy is working. Often, IBM security consultants are asked to perform security assessments for companies without regard to the security policy. Although these assessments can be useful for observing how the system is defined and how data is being accessed, they cannot determine the level of security without a security policy. Without a security policy, it really is not an assessment as much as it is a baseline for monitoring the changes in the security settings that are captured."}, {"label": "text", "id": 6, "page_no": 17, "cluster": {"id": 6, "label": "text", "bbox": {"l": 150.1995086669922, "t": 276.76263427734375, "r": 541.992, "b": 287.0709533691406, "coord_origin": "TOPLEFT"}, "confidence": 0.7967227697372437, "cells": [{"id": 20, "text": "A security policy is what defines whether the system and its settings are secure (or not). ", "bbox": {"l": 151.19946, "t": 277.60657000000003, "r": 541.992, "b": 286.81958, "coord_origin": "TOPLEFT"}}]}, "text": "A security policy is what defines whether the system and its settings are secure (or not)."}, {"label": "list_item", "id": 7, "page_no": 17, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.4777374267578, "t": 293.81439208984375, "r": 547.15826, "b": 376.5453796386719, "coord_origin": "TOPLEFT"}, "confidence": 0.9837487936019897, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.7993, "t": 294.7955600000001, "r": 141.7793, "b": 303.57034, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "The second fundamental in securing data assets is the use of ", "bbox": {"l": 151.19946, "t": 294.64618, "r": 425.86029, "b": 303.85916, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "resource security", "bbox": {"l": 425.82001, "t": 294.12496999999996, "r": 501.60065, "b": 304.18265, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": ". If ", "bbox": {"l": 500.64001, "t": 294.64871, "r": 514.49933, "b": 303.86169, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "implemented properly, resource security prevents data breaches from both internal and ", "bbox": {"l": 151.20038, "t": 306.64853, "r": 537.87421, "b": 315.86151, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "external intrusions. Resource security controls are closely tied to the part of the security ", "bbox": {"l": 151.20038, "t": 318.64834999999994, "r": 541.33636, "b": 327.86133, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "policy that defines who should have access to what information resources. A hacker might ", "bbox": {"l": 151.20038, "t": 330.64816, "r": 547.15826, "b": 339.86115, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "be good enough to get through your company firewalls and sift his way through to your ", "bbox": {"l": 151.20038, "t": 342.64798, "r": 534.86066, "b": 351.86096, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "system, but if they do not have explicit access to your database, the hacker cannot ", "bbox": {"l": 151.20038, "t": 354.6478, "r": 517.00739, "b": 363.86078, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "compromise your information assets.", "bbox": {"l": 151.20038, "t": 366.64761, "r": 314.03534, "b": 375.8606, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The second fundamental in securing data assets is the use of resource security . If implemented properly, resource security prevents data breaches from both internal and external intrusions. Resource security controls are closely tied to the part of the security policy that defines who should have access to what information resources. A hacker might be good enough to get through your company firewalls and sift his way through to your system, but if they do not have explicit access to your database, the hacker cannot compromise your information assets."}, {"label": "text", "id": 8, "page_no": 17, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.90879821777344, "t": 388.12286376953125, "r": 535.36169, "b": 410.3081359863281, "coord_origin": "TOPLEFT"}, "confidence": 0.9622000455856323, "cells": [{"id": 31, "text": "With your eyes now open to the importance of securing information assets, the rest of this ", "bbox": {"l": 136.80022, "t": 388.60742, "r": 535.36169, "b": 397.82040000000006, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "chapter reviews the methods that are available for securing database resources on IBM i. ", "bbox": {"l": 136.80022, "t": 400.60724, "r": 532.755, "b": 409.82022, "coord_origin": "TOPLEFT"}}]}, "text": "With your eyes now open to the importance of securing information assets, the rest of this chapter reviews the methods that are available for securing database resources on IBM i."}, {"label": "section_header", "id": 9, "page_no": 17, "cluster": {"id": 9, "label": "section_header", "bbox": {"l": 64.44733428955078, "t": 437.4118957519531, "r": 323.38391, "b": 453.6912841796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9650285243988037, "cells": [{"id": 33, "text": "1.2", "bbox": {"l": 64.800003, "t": 438.30072, "r": 87.415726, "b": 453.06372, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Current state of IBM i security", "bbox": {"l": 91.93885, "t": 438.30072, "r": 323.38391, "b": 453.06372, "coord_origin": "TOPLEFT"}}]}, "text": "1.2 Current state of IBM i security"}, {"label": "text", "id": 10, "page_no": 17, "cluster": {"id": 10, "label": "text", "bbox": {"l": 136.1368408203125, "t": 469.76971435546875, "r": 547.31824, "b": 516.47802734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9848750233650208, "cells": [{"id": 35, "text": "Because of the inherently secure nature of IBM i, many clients rely on the default system ", "bbox": {"l": 136.8, "t": 470.62872, "r": 530.30463, "b": 479.84171, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "settings to protect their business data that is stored in DB2 for i. In most cases, this means no ", "bbox": {"l": 136.8, "t": 482.62854, "r": 547.31824, "b": 491.84152, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "data protection because the default setting for the Create default public authority (QCRTAUT) ", "bbox": {"l": 136.8, "t": 494.62836, "r": 547.19586, "b": 503.84134, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "system value is *CHANGE.", "bbox": {"l": 136.8, "t": 506.62817, "r": 257.04709, "b": 515.84116, "coord_origin": "TOPLEFT"}}]}, "text": "Because of the inherently secure nature of IBM i, many clients rely on the default system settings to protect their business data that is stored in DB2 for i. In most cases, this means no data protection because the default setting for the Create default public authority (QCRTAUT) system value is *CHANGE."}, {"label": "text", "id": 11, "page_no": 17, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.79974365234375, "t": 527.8772583007812, "r": 547.28442, "b": 585.85994, "coord_origin": "TOPLEFT"}, "confidence": 0.9848474860191345, "cells": [{"id": 39, "text": "Even more disturbing is that many IBM i clients remain in this state, despite the news ", "bbox": {"l": 136.8, "t": 528.64774, "r": 513.90448, "b": 537.86073, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "headlines and the significant costs that are involved with databases being compromised. This ", "bbox": {"l": 136.8, "t": 540.6475399999999, "r": 547.28442, "b": 549.86053, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "default security configuration makes it quite challenging to implement basic security policies. ", "bbox": {"l": 136.8, "t": 552.64734, "r": 546.27533, "b": 561.86034, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "A tighter implementation is required if you really want to protect one of your company\u2019s most ", "bbox": {"l": 136.8, "t": 564.64714, "r": 545.08014, "b": 573.86014, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "valuable assets, which is the data.", "bbox": {"l": 136.8, "t": 576.64694, "r": 287.80057, "b": 585.85994, "coord_origin": "TOPLEFT"}}]}, "text": "Even more disturbing is that many IBM i clients remain in this state, despite the news headlines and the significant costs that are involved with databases being compromised. This default security configuration makes it quite challenging to implement basic security policies. A tighter implementation is required if you really want to protect one of your company\u2019s most valuable assets, which is the data."}, {"label": "text", "id": 12, "page_no": 17, "cluster": {"id": 12, "label": "text", "bbox": {"l": 135.8997802734375, "t": 598.1246337890625, "r": 547.28326, "b": 680.4212036132812, "coord_origin": "TOPLEFT"}, "confidence": 0.9870820045471191, "cells": [{"id": 44, "text": "Traditionally, IBM i applications have employed menu-based security to counteract this default ", "bbox": {"l": 136.8, "t": 598.6665, "r": 547.28326, "b": 607.8795, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "configuration that gives all users access to the data. The theory is that data is protected by ", "bbox": {"l": 136.8, "t": 610.6663100000001, "r": 538.6767, "b": 619.8793000000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "the menu options controlling what database operations that the user can perform. This ", "bbox": {"l": 136.8, "t": 622.66611, "r": 520.35364, "b": 631.8791, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "approach is ineffective, even if the user profile is restricted from running interactive ", "bbox": {"l": 136.80002, "t": 634.6659099999999, "r": 502.77115000000003, "b": 643.87891, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "commands. The reason is that in today\u2019s connected world there are a multitude of interfaces ", "bbox": {"l": 136.80002, "t": 646.66571, "r": 545.16492, "b": 655.87871, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "into the system, from web browsers to PC clients, that bypass application menus. If there are ", "bbox": {"l": 136.80002, "t": 658.66551, "r": 547.23376, "b": 667.87852, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "no object-level controls, users of these newer interfaces have an open door to your data.", "bbox": {"l": 136.80002, "t": 670.66532, "r": 526.04187, "b": 679.87833, "coord_origin": "TOPLEFT"}}]}, "text": "Traditionally, IBM i applications have employed menu-based security to counteract this default configuration that gives all users access to the data. The theory is that data is protected by the menu options controlling what database operations that the user can perform. This approach is ineffective, even if the user profile is restricted from running interactive commands. The reason is that in today\u2019s connected world there are a multitude of interfaces into the system, from web browsers to PC clients, that bypass application menus. If there are no object-level controls, users of these newer interfaces have an open door to your data."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 17, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.92394256591797, "t": 754.286865234375, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8889444470405579, "cells": [{"id": 0, "text": "2 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "2"}, {"label": "page_footer", "id": 1, "page_no": 17, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 87.81553649902344, "t": 754.6853637695312, "r": 328.72537, "b": 763.9682006835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9476423859596252, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 87.840302, "t": 755.538002, "r": 328.72537, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 18, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 1. Securing and protecting IBM DB2 data ", "bbox": {"l": 328.67999, "t": 755.538002, "r": 529.10632, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "3", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Some clients using this default configuration have toughened their database security with ", "bbox": {"l": 136.7999, "t": 71.50903000000005, "r": 532.22772, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "exit-point solutions from third-party vendors. IBM i exit points allow a user-written program to ", "bbox": {"l": 136.7999, "t": 83.50885000000017, "r": 546.43982, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "be called every time that a particular interface (for example, FTP) is used or an event occurs ", "bbox": {"l": 136.7999, "t": 95.50867000000005, "r": 545.43481, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "(for example, a profile is created). Security tools that are based on these exit points increase ", "bbox": {"l": 136.7999, "t": 107.50847999999996, "r": 546.36505, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "the level of security on a system by locking down interfaces that are not under the control of ", "bbox": {"l": 136.7999, "t": 119.50829999999996, "r": 542.84106, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "menu-based or application authority. In addition, exit-point solutions allow clients to ", "bbox": {"l": 136.7999, "t": 131.50811999999996, "r": 504.82483, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "implement more granular security controls, such as allowing users access only to the ", "bbox": {"l": 136.7999, "t": 143.50793, "r": 514.11053, "b": 152.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "database during certain hours of the day.", "bbox": {"l": 136.7999, "t": 155.50775, "r": 317.74625, "b": 164.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Although exit-point solutions can provide great benefits, they are not an alternative to ", "bbox": {"l": 136.7999, "t": 177.52733999999998, "r": 513.7002, "b": 186.74036, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "object-level control of your databases. Exit-point solutions help secure interfaces, but they do ", "bbox": {"l": 136.7999, "t": 189.52715999999998, "r": 547.2666, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "not completely protect the data that is stored in your DB2 objects. Exit points do not exist for ", "bbox": {"l": 136.7999, "t": 201.52697999999998, "r": 544.81219, "b": 210.73999000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "every data access interface on the system. Therefore, if an application starts using an ", "bbox": {"l": 136.7999, "t": 213.52679, "r": 517.20105, "b": 222.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "unprotected interface, the only thing protecting your data is object-level access control. When ", "bbox": {"l": 136.7999, "t": 225.52661, "r": 547.23248, "b": 234.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "your security implementation totally relies on exit points, then it is also important to track any ", "bbox": {"l": 136.7999, "t": 237.52643, "r": 546.36804, "b": 246.73943999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "new data interfaces that appear as IBM delivers new releases and products to ensure that ", "bbox": {"l": 136.7999, "t": 249.52625, "r": 535.90399, "b": 258.73925999999994, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "your exit-point solution provides coverage for those new interfaces.", "bbox": {"l": 136.7999, "t": 261.52606000000003, "r": 430.80014, "b": 270.73906999999997, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "An exit-point solution is a good option for databases with security holes that are caused by a ", "bbox": {"l": 136.7999, "t": 283.4859, "r": 546.22662, "b": 292.69888, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "reliance on the default security setup or menu-based control. However, your security work ", "bbox": {"l": 136.7999, "t": 295.48572, "r": 534.57117, "b": 304.6986999999999, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "should not stop there. Instead, you must continue to work on a complete database security ", "bbox": {"l": 136.7999, "t": 307.48553000000004, "r": 539.19958, "b": 316.69852000000003, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "solution by controlling data access at the object level.", "bbox": {"l": 136.7999, "t": 319.48535, "r": 371.62982, "b": 328.69833, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "1.3", "bbox": {"l": 64.800003, "t": 357.18073, "r": 87.399879, "b": 371.94373, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "DB2 for i security controls", "bbox": {"l": 91.919853, "t": 357.18073, "r": 295.20493, "b": 371.94373, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "As described in 1.2, \u201cCurrent state of IBM i security\u201d on page 2, object-level controls on your ", "bbox": {"l": 136.8, "t": 389.50872999999996, "r": 545.23871, "b": 398.72171, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "DB2 objects are a critical success factor in securing your business data. Although database ", "bbox": {"l": 136.8, "t": 401.50854, "r": 543.08527, "b": 410.72153, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "object-level security is a strong security feature, some clients have found that object-level ", "bbox": {"l": 136.8, "t": 413.50836, "r": 531.52155, "b": 422.72134, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "security does not have the granularity that is required to adhere to regulatory or compliance ", "bbox": {"l": 136.8, "t": 425.5081799999999, "r": 542.76959, "b": 434.72116, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "policies. A user that is granted object-level access to a DB2 table has the authority to view all ", "bbox": {"l": 136.8, "t": 437.50800000000004, "r": 547.16888, "b": 446.72098, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "of the rows and values in that table.", "bbox": {"l": 136.8, "t": 449.50781, "r": 293.37024, "b": 458.7207900000001, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "As shown in Figure 1-1, it is an all-or-nothing access to the rows of a table.", "bbox": {"l": 136.8, "t": 471.52737, "r": 466.31863, "b": 480.74036, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Figure 1-1 All-or-nothing access to the rows of a table", "bbox": {"l": 136.8, "t": 702.977905, "r": 354.75031, "b": 711.302902, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "The Business Problem\u0085", "bbox": {"l": 145.2338, "t": 503.53342, "r": 362.0163, "b": 522.87445, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Tb", "bbox": {"l": 409.74301, "t": 595.9722899999999, "r": 459.25156, "b": 616.33128, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "l", "bbox": {"l": 448.32556, "t": 595.9722899999999, "r": 465.547, "b": 616.33128, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Database", "bbox": {"l": 164.4601, "t": 590.54692, "r": 210.09276, "b": 599.79594, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Table", "bbox": {"l": 409.74301, "t": 595.9722899999999, "r": 467.19213999999994, "b": 616.33128, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Access: ALL or NOTHING", "bbox": {"l": 247.7847, "t": 599.80522, "r": 375.65561, "b": 609.0542399999999, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "User", "bbox": {"l": 175.87869, "t": 609.06352, "r": 198.69092, "b": 618.31255, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "No easy way to restrict access to a specific set of rows", "bbox": {"l": 152.39349, "t": 681.3484100000001, "r": 472.28308, "b": 694.232826, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 328.2245788574219, "t": 754.796142578125, "r": 529.10632, "b": 764.0894775390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9508112072944641, "cells": [{"id": 0, "text": "Chapter 1. Securing and protecting IBM DB2 data ", "bbox": {"l": 328.67999, "t": 755.538002, "r": 529.10632, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 540.928466796875, "t": 754.3477783203125, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8825920820236206, "cells": [{"id": 1, "text": "3", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 136.11676025390625, "t": 70.81370544433594, "r": 546.43982, "b": 165.12799072265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9880445599555969, "cells": [{"id": 2, "text": "Some clients using this default configuration have toughened their database security with ", "bbox": {"l": 136.7999, "t": 71.50903000000005, "r": 532.22772, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "exit-point solutions from third-party vendors. IBM i exit points allow a user-written program to ", "bbox": {"l": 136.7999, "t": 83.50885000000017, "r": 546.43982, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "be called every time that a particular interface (for example, FTP) is used or an event occurs ", "bbox": {"l": 136.7999, "t": 95.50867000000005, "r": 545.43481, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "(for example, a profile is created). Security tools that are based on these exit points increase ", "bbox": {"l": 136.7999, "t": 107.50847999999996, "r": 546.36505, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "the level of security on a system by locking down interfaces that are not under the control of ", "bbox": {"l": 136.7999, "t": 119.50829999999996, "r": 542.84106, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "menu-based or application authority. In addition, exit-point solutions allow clients to ", "bbox": {"l": 136.7999, "t": 131.50811999999996, "r": 504.82483, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "implement more granular security controls, such as allowing users access only to the ", "bbox": {"l": 136.7999, "t": 143.50793, "r": 514.11053, "b": 152.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "database during certain hours of the day.", "bbox": {"l": 136.7999, "t": 155.50775, "r": 317.74625, "b": 164.72076000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.7813262939453, "t": 176.89154052734375, "r": 547.2666, "b": 271.1439514160156, "coord_origin": "TOPLEFT"}, "confidence": 0.9884217381477356, "cells": [{"id": 10, "text": "Although exit-point solutions can provide great benefits, they are not an alternative to ", "bbox": {"l": 136.7999, "t": 177.52733999999998, "r": 513.7002, "b": 186.74036, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "object-level control of your databases. Exit-point solutions help secure interfaces, but they do ", "bbox": {"l": 136.7999, "t": 189.52715999999998, "r": 547.2666, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "not completely protect the data that is stored in your DB2 objects. Exit points do not exist for ", "bbox": {"l": 136.7999, "t": 201.52697999999998, "r": 544.81219, "b": 210.73999000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "every data access interface on the system. Therefore, if an application starts using an ", "bbox": {"l": 136.7999, "t": 213.52679, "r": 517.20105, "b": 222.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "unprotected interface, the only thing protecting your data is object-level access control. When ", "bbox": {"l": 136.7999, "t": 225.52661, "r": 547.23248, "b": 234.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "your security implementation totally relies on exit points, then it is also important to track any ", "bbox": {"l": 136.7999, "t": 237.52643, "r": 546.36804, "b": 246.73943999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "new data interfaces that appear as IBM delivers new releases and products to ensure that ", "bbox": {"l": 136.7999, "t": 249.52625, "r": 535.90399, "b": 258.73925999999994, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "your exit-point solution provides coverage for those new interfaces.", "bbox": {"l": 136.7999, "t": 261.52606000000003, "r": 430.80014, "b": 270.73906999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.8739471435547, "t": 282.6854553222656, "r": 546.22662, "b": 329.1358337402344, "coord_origin": "TOPLEFT"}, "confidence": 0.987811267375946, "cells": [{"id": 18, "text": "An exit-point solution is a good option for databases with security holes that are caused by a ", "bbox": {"l": 136.7999, "t": 283.4859, "r": 546.22662, "b": 292.69888, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "reliance on the default security setup or menu-based control. However, your security work ", "bbox": {"l": 136.7999, "t": 295.48572, "r": 534.57117, "b": 304.6986999999999, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "should not stop there. Instead, you must continue to work on a complete database security ", "bbox": {"l": 136.7999, "t": 307.48553000000004, "r": 539.19958, "b": 316.69852000000003, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "solution by controlling data access at the object level.", "bbox": {"l": 136.7999, "t": 319.48535, "r": 371.62982, "b": 328.69833, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "section_header", "bbox": {"l": 64.800003, "t": 356.1169738769531, "r": 295.20493, "b": 372.2132873535156, "coord_origin": "TOPLEFT"}, "confidence": 0.9654257893562317, "cells": [{"id": 22, "text": "1.3", "bbox": {"l": 64.800003, "t": 357.18073, "r": 87.399879, "b": 371.94373, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "DB2 for i security controls", "bbox": {"l": 91.919853, "t": 357.18073, "r": 295.20493, "b": 371.94373, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 135.9359893798828, "t": 388.60498046875, "r": 547.16888, "b": 458.7207900000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9873308539390564, "cells": [{"id": 24, "text": "As described in 1.2, \u201cCurrent state of IBM i security\u201d on page 2, object-level controls on your ", "bbox": {"l": 136.8, "t": 389.50872999999996, "r": 545.23871, "b": 398.72171, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "DB2 objects are a critical success factor in securing your business data. Although database ", "bbox": {"l": 136.8, "t": 401.50854, "r": 543.08527, "b": 410.72153, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "object-level security is a strong security feature, some clients have found that object-level ", "bbox": {"l": 136.8, "t": 413.50836, "r": 531.52155, "b": 422.72134, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "security does not have the granularity that is required to adhere to regulatory or compliance ", "bbox": {"l": 136.8, "t": 425.5081799999999, "r": 542.76959, "b": 434.72116, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "policies. A user that is granted object-level access to a DB2 table has the authority to view all ", "bbox": {"l": 136.8, "t": 437.50800000000004, "r": 547.16888, "b": 446.72098, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "of the rows and values in that table.", "bbox": {"l": 136.8, "t": 449.50781, "r": 293.37024, "b": 458.7207900000001, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 135.52011108398438, "t": 470.60333251953125, "r": 466.31863, "b": 480.9595947265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9494351744651794, "cells": [{"id": 30, "text": "As shown in Figure 1-1, it is an all-or-nothing access to the rows of a table.", "bbox": {"l": 136.8, "t": 471.52737, "r": 466.31863, "b": 480.74036, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "caption", "bbox": {"l": 135.93324279785156, "t": 702.1747436523438, "r": 354.8916015625, "b": 711.3971557617188, "coord_origin": "TOPLEFT"}, "confidence": 0.9390377402305603, "cells": [{"id": 31, "text": "Figure 1-1 All-or-nothing access to the rows of a table", "bbox": {"l": 136.8, "t": 702.977905, "r": 354.75031, "b": 711.302902, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "picture", "bbox": {"l": 136.6387176513672, "t": 495.7486877441406, "r": 491.2538146972656, "b": 699.0596923828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9797728061676025, "cells": [{"id": 32, "text": "The Business Problem\u0085", "bbox": {"l": 145.2338, "t": 503.53342, "r": 362.0163, "b": 522.87445, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Tb", "bbox": {"l": 409.74301, "t": 595.9722899999999, "r": 459.25156, "b": 616.33128, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "l", "bbox": {"l": 448.32556, "t": 595.9722899999999, "r": 465.547, "b": 616.33128, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Database", "bbox": {"l": 164.4601, "t": 590.54692, "r": 210.09276, "b": 599.79594, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Table", "bbox": {"l": 409.74301, "t": 595.9722899999999, "r": 467.19213999999994, "b": 616.33128, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Access: ALL or NOTHING", "bbox": {"l": 247.7847, "t": 599.80522, "r": 375.65561, "b": 609.0542399999999, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "User", "bbox": {"l": 175.87869, "t": 609.06352, "r": 198.69092, "b": 618.31255, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "No easy way to restrict access to a specific set of rows", "bbox": {"l": 152.39349, "t": 681.3484100000001, "r": 472.28308, "b": 694.232826, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 18, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 328.2245788574219, "t": 754.796142578125, "r": 529.10632, "b": 764.0894775390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9508112072944641, "cells": [{"id": 0, "text": "Chapter 1. Securing and protecting IBM DB2 data ", "bbox": {"l": 328.67999, "t": 755.538002, "r": 529.10632, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 1. Securing and protecting IBM DB2 data"}, {"label": "page_footer", "id": 1, "page_no": 18, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 540.928466796875, "t": 754.3477783203125, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8825920820236206, "cells": [{"id": 1, "text": "3", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "3"}, {"label": "text", "id": 2, "page_no": 18, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.11676025390625, "t": 70.81370544433594, "r": 546.43982, "b": 165.12799072265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9880445599555969, "cells": [{"id": 2, "text": "Some clients using this default configuration have toughened their database security with ", "bbox": {"l": 136.7999, "t": 71.50903000000005, "r": 532.22772, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "exit-point solutions from third-party vendors. IBM i exit points allow a user-written program to ", "bbox": {"l": 136.7999, "t": 83.50885000000017, "r": 546.43982, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "be called every time that a particular interface (for example, FTP) is used or an event occurs ", "bbox": {"l": 136.7999, "t": 95.50867000000005, "r": 545.43481, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "(for example, a profile is created). Security tools that are based on these exit points increase ", "bbox": {"l": 136.7999, "t": 107.50847999999996, "r": 546.36505, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "the level of security on a system by locking down interfaces that are not under the control of ", "bbox": {"l": 136.7999, "t": 119.50829999999996, "r": 542.84106, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "menu-based or application authority. In addition, exit-point solutions allow clients to ", "bbox": {"l": 136.7999, "t": 131.50811999999996, "r": 504.82483, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "implement more granular security controls, such as allowing users access only to the ", "bbox": {"l": 136.7999, "t": 143.50793, "r": 514.11053, "b": 152.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "database during certain hours of the day.", "bbox": {"l": 136.7999, "t": 155.50775, "r": 317.74625, "b": 164.72076000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Some clients using this default configuration have toughened their database security with exit-point solutions from third-party vendors. IBM i exit points allow a user-written program to be called every time that a particular interface (for example, FTP) is used or an event occurs (for example, a profile is created). Security tools that are based on these exit points increase the level of security on a system by locking down interfaces that are not under the control of menu-based or application authority. In addition, exit-point solutions allow clients to implement more granular security controls, such as allowing users access only to the database during certain hours of the day."}, {"label": "text", "id": 3, "page_no": 18, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.7813262939453, "t": 176.89154052734375, "r": 547.2666, "b": 271.1439514160156, "coord_origin": "TOPLEFT"}, "confidence": 0.9884217381477356, "cells": [{"id": 10, "text": "Although exit-point solutions can provide great benefits, they are not an alternative to ", "bbox": {"l": 136.7999, "t": 177.52733999999998, "r": 513.7002, "b": 186.74036, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "object-level control of your databases. Exit-point solutions help secure interfaces, but they do ", "bbox": {"l": 136.7999, "t": 189.52715999999998, "r": 547.2666, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "not completely protect the data that is stored in your DB2 objects. Exit points do not exist for ", "bbox": {"l": 136.7999, "t": 201.52697999999998, "r": 544.81219, "b": 210.73999000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "every data access interface on the system. Therefore, if an application starts using an ", "bbox": {"l": 136.7999, "t": 213.52679, "r": 517.20105, "b": 222.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "unprotected interface, the only thing protecting your data is object-level access control. When ", "bbox": {"l": 136.7999, "t": 225.52661, "r": 547.23248, "b": 234.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "your security implementation totally relies on exit points, then it is also important to track any ", "bbox": {"l": 136.7999, "t": 237.52643, "r": 546.36804, "b": 246.73943999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "new data interfaces that appear as IBM delivers new releases and products to ensure that ", "bbox": {"l": 136.7999, "t": 249.52625, "r": 535.90399, "b": 258.73925999999994, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "your exit-point solution provides coverage for those new interfaces.", "bbox": {"l": 136.7999, "t": 261.52606000000003, "r": 430.80014, "b": 270.73906999999997, "coord_origin": "TOPLEFT"}}]}, "text": "Although exit-point solutions can provide great benefits, they are not an alternative to object-level control of your databases. Exit-point solutions help secure interfaces, but they do not completely protect the data that is stored in your DB2 objects. Exit points do not exist for every data access interface on the system. Therefore, if an application starts using an unprotected interface, the only thing protecting your data is object-level access control. When your security implementation totally relies on exit points, then it is also important to track any new data interfaces that appear as IBM delivers new releases and products to ensure that your exit-point solution provides coverage for those new interfaces."}, {"label": "text", "id": 4, "page_no": 18, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.8739471435547, "t": 282.6854553222656, "r": 546.22662, "b": 329.1358337402344, "coord_origin": "TOPLEFT"}, "confidence": 0.987811267375946, "cells": [{"id": 18, "text": "An exit-point solution is a good option for databases with security holes that are caused by a ", "bbox": {"l": 136.7999, "t": 283.4859, "r": 546.22662, "b": 292.69888, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "reliance on the default security setup or menu-based control. However, your security work ", "bbox": {"l": 136.7999, "t": 295.48572, "r": 534.57117, "b": 304.6986999999999, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "should not stop there. Instead, you must continue to work on a complete database security ", "bbox": {"l": 136.7999, "t": 307.48553000000004, "r": 539.19958, "b": 316.69852000000003, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "solution by controlling data access at the object level.", "bbox": {"l": 136.7999, "t": 319.48535, "r": 371.62982, "b": 328.69833, "coord_origin": "TOPLEFT"}}]}, "text": "An exit-point solution is a good option for databases with security holes that are caused by a reliance on the default security setup or menu-based control. However, your security work should not stop there. Instead, you must continue to work on a complete database security solution by controlling data access at the object level."}, {"label": "section_header", "id": 5, "page_no": 18, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 64.800003, "t": 356.1169738769531, "r": 295.20493, "b": 372.2132873535156, "coord_origin": "TOPLEFT"}, "confidence": 0.9654257893562317, "cells": [{"id": 22, "text": "1.3", "bbox": {"l": 64.800003, "t": 357.18073, "r": 87.399879, "b": 371.94373, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "DB2 for i security controls", "bbox": {"l": 91.919853, "t": 357.18073, "r": 295.20493, "b": 371.94373, "coord_origin": "TOPLEFT"}}]}, "text": "1.3 DB2 for i security controls"}, {"label": "text", "id": 6, "page_no": 18, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.9359893798828, "t": 388.60498046875, "r": 547.16888, "b": 458.7207900000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9873308539390564, "cells": [{"id": 24, "text": "As described in 1.2, \u201cCurrent state of IBM i security\u201d on page 2, object-level controls on your ", "bbox": {"l": 136.8, "t": 389.50872999999996, "r": 545.23871, "b": 398.72171, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "DB2 objects are a critical success factor in securing your business data. Although database ", "bbox": {"l": 136.8, "t": 401.50854, "r": 543.08527, "b": 410.72153, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "object-level security is a strong security feature, some clients have found that object-level ", "bbox": {"l": 136.8, "t": 413.50836, "r": 531.52155, "b": 422.72134, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "security does not have the granularity that is required to adhere to regulatory or compliance ", "bbox": {"l": 136.8, "t": 425.5081799999999, "r": 542.76959, "b": 434.72116, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "policies. A user that is granted object-level access to a DB2 table has the authority to view all ", "bbox": {"l": 136.8, "t": 437.50800000000004, "r": 547.16888, "b": 446.72098, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "of the rows and values in that table.", "bbox": {"l": 136.8, "t": 449.50781, "r": 293.37024, "b": 458.7207900000001, "coord_origin": "TOPLEFT"}}]}, "text": "As described in 1.2, \u201cCurrent state of IBM i security\u201d on page 2, object-level controls on your DB2 objects are a critical success factor in securing your business data. Although database object-level security is a strong security feature, some clients have found that object-level security does not have the granularity that is required to adhere to regulatory or compliance policies. A user that is granted object-level access to a DB2 table has the authority to view all of the rows and values in that table."}, {"label": "text", "id": 7, "page_no": 18, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.52011108398438, "t": 470.60333251953125, "r": 466.31863, "b": 480.9595947265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9494351744651794, "cells": [{"id": 30, "text": "As shown in Figure 1-1, it is an all-or-nothing access to the rows of a table.", "bbox": {"l": 136.8, "t": 471.52737, "r": 466.31863, "b": 480.74036, "coord_origin": "TOPLEFT"}}]}, "text": "As shown in Figure 1-1, it is an all-or-nothing access to the rows of a table."}, {"label": "caption", "id": 8, "page_no": 18, "cluster": {"id": 8, "label": "caption", "bbox": {"l": 135.93324279785156, "t": 702.1747436523438, "r": 354.8916015625, "b": 711.3971557617188, "coord_origin": "TOPLEFT"}, "confidence": 0.9390377402305603, "cells": [{"id": 31, "text": "Figure 1-1 All-or-nothing access to the rows of a table", "bbox": {"l": 136.8, "t": 702.977905, "r": 354.75031, "b": 711.302902, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 1-1 All-or-nothing access to the rows of a table"}, {"label": "picture", "id": 9, "page_no": 18, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 136.6387176513672, "t": 495.7486877441406, "r": 491.2538146972656, "b": 699.0596923828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9797728061676025, "cells": [{"id": 32, "text": "The Business Problem\u0085", "bbox": {"l": 145.2338, "t": 503.53342, "r": 362.0163, "b": 522.87445, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Tb", "bbox": {"l": 409.74301, "t": 595.9722899999999, "r": 459.25156, "b": 616.33128, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "l", "bbox": {"l": 448.32556, "t": 595.9722899999999, "r": 465.547, "b": 616.33128, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Database", "bbox": {"l": 164.4601, "t": 590.54692, "r": 210.09276, "b": 599.79594, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Table", "bbox": {"l": 409.74301, "t": 595.9722899999999, "r": 467.19213999999994, "b": 616.33128, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Access: ALL or NOTHING", "bbox": {"l": 247.7847, "t": 599.80522, "r": 375.65561, "b": 609.0542399999999, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "User", "bbox": {"l": 175.87869, "t": 609.06352, "r": 198.69092, "b": 618.31255, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "No easy way to restrict access to a specific set of rows", "bbox": {"l": 152.39349, "t": 681.3484100000001, "r": 472.28308, "b": 694.232826, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 18, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.11676025390625, "t": 70.81370544433594, "r": 546.43982, "b": 165.12799072265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9880445599555969, "cells": [{"id": 2, "text": "Some clients using this default configuration have toughened their database security with ", "bbox": {"l": 136.7999, "t": 71.50903000000005, "r": 532.22772, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "exit-point solutions from third-party vendors. IBM i exit points allow a user-written program to ", "bbox": {"l": 136.7999, "t": 83.50885000000017, "r": 546.43982, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "be called every time that a particular interface (for example, FTP) is used or an event occurs ", "bbox": {"l": 136.7999, "t": 95.50867000000005, "r": 545.43481, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "(for example, a profile is created). Security tools that are based on these exit points increase ", "bbox": {"l": 136.7999, "t": 107.50847999999996, "r": 546.36505, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "the level of security on a system by locking down interfaces that are not under the control of ", "bbox": {"l": 136.7999, "t": 119.50829999999996, "r": 542.84106, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "menu-based or application authority. In addition, exit-point solutions allow clients to ", "bbox": {"l": 136.7999, "t": 131.50811999999996, "r": 504.82483, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "implement more granular security controls, such as allowing users access only to the ", "bbox": {"l": 136.7999, "t": 143.50793, "r": 514.11053, "b": 152.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "database during certain hours of the day.", "bbox": {"l": 136.7999, "t": 155.50775, "r": 317.74625, "b": 164.72076000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Some clients using this default configuration have toughened their database security with exit-point solutions from third-party vendors. IBM i exit points allow a user-written program to be called every time that a particular interface (for example, FTP) is used or an event occurs (for example, a profile is created). Security tools that are based on these exit points increase the level of security on a system by locking down interfaces that are not under the control of menu-based or application authority. In addition, exit-point solutions allow clients to implement more granular security controls, such as allowing users access only to the database during certain hours of the day."}, {"label": "text", "id": 3, "page_no": 18, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.7813262939453, "t": 176.89154052734375, "r": 547.2666, "b": 271.1439514160156, "coord_origin": "TOPLEFT"}, "confidence": 0.9884217381477356, "cells": [{"id": 10, "text": "Although exit-point solutions can provide great benefits, they are not an alternative to ", "bbox": {"l": 136.7999, "t": 177.52733999999998, "r": 513.7002, "b": 186.74036, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "object-level control of your databases. Exit-point solutions help secure interfaces, but they do ", "bbox": {"l": 136.7999, "t": 189.52715999999998, "r": 547.2666, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "not completely protect the data that is stored in your DB2 objects. Exit points do not exist for ", "bbox": {"l": 136.7999, "t": 201.52697999999998, "r": 544.81219, "b": 210.73999000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "every data access interface on the system. Therefore, if an application starts using an ", "bbox": {"l": 136.7999, "t": 213.52679, "r": 517.20105, "b": 222.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "unprotected interface, the only thing protecting your data is object-level access control. When ", "bbox": {"l": 136.7999, "t": 225.52661, "r": 547.23248, "b": 234.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "your security implementation totally relies on exit points, then it is also important to track any ", "bbox": {"l": 136.7999, "t": 237.52643, "r": 546.36804, "b": 246.73943999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "new data interfaces that appear as IBM delivers new releases and products to ensure that ", "bbox": {"l": 136.7999, "t": 249.52625, "r": 535.90399, "b": 258.73925999999994, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "your exit-point solution provides coverage for those new interfaces.", "bbox": {"l": 136.7999, "t": 261.52606000000003, "r": 430.80014, "b": 270.73906999999997, "coord_origin": "TOPLEFT"}}]}, "text": "Although exit-point solutions can provide great benefits, they are not an alternative to object-level control of your databases. Exit-point solutions help secure interfaces, but they do not completely protect the data that is stored in your DB2 objects. Exit points do not exist for every data access interface on the system. Therefore, if an application starts using an unprotected interface, the only thing protecting your data is object-level access control. When your security implementation totally relies on exit points, then it is also important to track any new data interfaces that appear as IBM delivers new releases and products to ensure that your exit-point solution provides coverage for those new interfaces."}, {"label": "text", "id": 4, "page_no": 18, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.8739471435547, "t": 282.6854553222656, "r": 546.22662, "b": 329.1358337402344, "coord_origin": "TOPLEFT"}, "confidence": 0.987811267375946, "cells": [{"id": 18, "text": "An exit-point solution is a good option for databases with security holes that are caused by a ", "bbox": {"l": 136.7999, "t": 283.4859, "r": 546.22662, "b": 292.69888, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "reliance on the default security setup or menu-based control. However, your security work ", "bbox": {"l": 136.7999, "t": 295.48572, "r": 534.57117, "b": 304.6986999999999, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "should not stop there. Instead, you must continue to work on a complete database security ", "bbox": {"l": 136.7999, "t": 307.48553000000004, "r": 539.19958, "b": 316.69852000000003, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "solution by controlling data access at the object level.", "bbox": {"l": 136.7999, "t": 319.48535, "r": 371.62982, "b": 328.69833, "coord_origin": "TOPLEFT"}}]}, "text": "An exit-point solution is a good option for databases with security holes that are caused by a reliance on the default security setup or menu-based control. However, your security work should not stop there. Instead, you must continue to work on a complete database security solution by controlling data access at the object level."}, {"label": "section_header", "id": 5, "page_no": 18, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 64.800003, "t": 356.1169738769531, "r": 295.20493, "b": 372.2132873535156, "coord_origin": "TOPLEFT"}, "confidence": 0.9654257893562317, "cells": [{"id": 22, "text": "1.3", "bbox": {"l": 64.800003, "t": 357.18073, "r": 87.399879, "b": 371.94373, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "DB2 for i security controls", "bbox": {"l": 91.919853, "t": 357.18073, "r": 295.20493, "b": 371.94373, "coord_origin": "TOPLEFT"}}]}, "text": "1.3 DB2 for i security controls"}, {"label": "text", "id": 6, "page_no": 18, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.9359893798828, "t": 388.60498046875, "r": 547.16888, "b": 458.7207900000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9873308539390564, "cells": [{"id": 24, "text": "As described in 1.2, \u201cCurrent state of IBM i security\u201d on page 2, object-level controls on your ", "bbox": {"l": 136.8, "t": 389.50872999999996, "r": 545.23871, "b": 398.72171, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "DB2 objects are a critical success factor in securing your business data. Although database ", "bbox": {"l": 136.8, "t": 401.50854, "r": 543.08527, "b": 410.72153, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "object-level security is a strong security feature, some clients have found that object-level ", "bbox": {"l": 136.8, "t": 413.50836, "r": 531.52155, "b": 422.72134, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "security does not have the granularity that is required to adhere to regulatory or compliance ", "bbox": {"l": 136.8, "t": 425.5081799999999, "r": 542.76959, "b": 434.72116, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "policies. A user that is granted object-level access to a DB2 table has the authority to view all ", "bbox": {"l": 136.8, "t": 437.50800000000004, "r": 547.16888, "b": 446.72098, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "of the rows and values in that table.", "bbox": {"l": 136.8, "t": 449.50781, "r": 293.37024, "b": 458.7207900000001, "coord_origin": "TOPLEFT"}}]}, "text": "As described in 1.2, \u201cCurrent state of IBM i security\u201d on page 2, object-level controls on your DB2 objects are a critical success factor in securing your business data. Although database object-level security is a strong security feature, some clients have found that object-level security does not have the granularity that is required to adhere to regulatory or compliance policies. A user that is granted object-level access to a DB2 table has the authority to view all of the rows and values in that table."}, {"label": "text", "id": 7, "page_no": 18, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.52011108398438, "t": 470.60333251953125, "r": 466.31863, "b": 480.9595947265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9494351744651794, "cells": [{"id": 30, "text": "As shown in Figure 1-1, it is an all-or-nothing access to the rows of a table.", "bbox": {"l": 136.8, "t": 471.52737, "r": 466.31863, "b": 480.74036, "coord_origin": "TOPLEFT"}}]}, "text": "As shown in Figure 1-1, it is an all-or-nothing access to the rows of a table."}, {"label": "caption", "id": 8, "page_no": 18, "cluster": {"id": 8, "label": "caption", "bbox": {"l": 135.93324279785156, "t": 702.1747436523438, "r": 354.8916015625, "b": 711.3971557617188, "coord_origin": "TOPLEFT"}, "confidence": 0.9390377402305603, "cells": [{"id": 31, "text": "Figure 1-1 All-or-nothing access to the rows of a table", "bbox": {"l": 136.8, "t": 702.977905, "r": 354.75031, "b": 711.302902, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 1-1 All-or-nothing access to the rows of a table"}, {"label": "picture", "id": 9, "page_no": 18, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 136.6387176513672, "t": 495.7486877441406, "r": 491.2538146972656, "b": 699.0596923828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9797728061676025, "cells": [{"id": 32, "text": "The Business Problem\u0085", "bbox": {"l": 145.2338, "t": 503.53342, "r": 362.0163, "b": 522.87445, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Tb", "bbox": {"l": 409.74301, "t": 595.9722899999999, "r": 459.25156, "b": 616.33128, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "l", "bbox": {"l": 448.32556, "t": 595.9722899999999, "r": 465.547, "b": 616.33128, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Database", "bbox": {"l": 164.4601, "t": 590.54692, "r": 210.09276, "b": 599.79594, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Table", "bbox": {"l": 409.74301, "t": 595.9722899999999, "r": 467.19213999999994, "b": 616.33128, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Access: ALL or NOTHING", "bbox": {"l": 247.7847, "t": 599.80522, "r": 375.65561, "b": 609.0542399999999, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "User", "bbox": {"l": 175.87869, "t": 609.06352, "r": 198.69092, "b": 618.31255, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "No easy way to restrict access to a specific set of rows", "bbox": {"l": 152.39349, "t": 681.3484100000001, "r": 472.28308, "b": 694.232826, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 18, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 328.2245788574219, "t": 754.796142578125, "r": 529.10632, "b": 764.0894775390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9508112072944641, "cells": [{"id": 0, "text": "Chapter 1. Securing and protecting IBM DB2 data ", "bbox": {"l": 328.67999, "t": 755.538002, "r": 529.10632, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 1. Securing and protecting IBM DB2 data"}, {"label": "page_footer", "id": 1, "page_no": 18, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 540.928466796875, "t": 754.3477783203125, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8825920820236206, "cells": [{"id": 1, "text": "3", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "3"}]}}, {"page_no": 19, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "4 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 87.840302, "t": 755.538002, "r": 328.72537, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Many businesses are trying to limit data access to a need-to-know basis. This security goal ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 541.19006, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "means that users should be given access only to the minimum set of data that is required to ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 544.30334, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "perform their job. Often, users with object-level access are given access to row and column ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 540.94299, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "values that are beyond what their business task requires because that object-level security ", "bbox": {"l": 136.80002, "t": 107.50811999999996, "r": 538.27454, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "provides an all-or-nothing solution. For example, object-level controls allow a manager to ", "bbox": {"l": 136.80002, "t": 119.50792999999999, "r": 530.23004, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "access data about all employees. Most security policies limit a manager to accessing data ", "bbox": {"l": 136.80002, "t": 131.50775, "r": 536.26263, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "only for the employees that they manage.", "bbox": {"l": 136.80002, "t": 143.50757, "r": 319.04318, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "1.3.1", "bbox": {"l": 64.800003, "t": 173.33471999999995, "r": 94.033653, "b": 185.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Existing row and column control", "bbox": {"l": 97.687859, "t": 173.33471999999995, "r": 301.46902, "b": 185.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Some IBM i clients have tried augmenting the all-or-nothing object-level security with SQL ", "bbox": {"l": 136.8, "t": 199.48870999999997, "r": 534.90112, "b": 208.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "views (or logical files) and application logic, as shown in Figure 1-2. However, ", "bbox": {"l": 136.8, "t": 211.48852999999997, "r": 480.47281000000004, "b": 220.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "application-based logic is easy to bypass with all of the different data access interfaces that ", "bbox": {"l": 136.8, "t": 223.48834, "r": 541.56738, "b": 232.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "are provided by the IBM i operating system, such as Open Database Connectivity (ODBC) ", "bbox": {"l": 136.8, "t": 235.48816, "r": 537.39423, "b": 244.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "and System i Navigator.", "bbox": {"l": 136.79999, "t": 247.48798, "r": 242.24352000000002, "b": 256.70099000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Using SQL views to limit access to a subset of the data in a table also has its own set of ", "bbox": {"l": 136.79999, "t": 269.50757, "r": 526.88428, "b": 278.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "challenges. First, there is the complexity of managing all of the SQL view objects that are ", "bbox": {"l": 136.79999, "t": 281.50742, "r": 531.77087, "b": 290.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "used for securing data access. Second, scaling a view-based security solution can be difficult ", "bbox": {"l": 136.79999, "t": 293.50723000000005, "r": 547.4408, "b": 302.72021, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "as the amount of data grows and the number of users increases.", "bbox": {"l": 136.79999, "t": 305.50705, "r": 421.86725, "b": 314.72003, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Even if you are willing to live with these performance and management issues, a user with ", "bbox": {"l": 136.79999, "t": 327.52661, "r": 536.46692, "b": 336.7395900000001, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "*ALLOBJ access still can directly access all of the data in the underlying DB2 table and easily ", "bbox": {"l": 136.79999, "t": 339.52643, "r": 547.23267, "b": 348.73941, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "bypass the security controls that are built into an SQL view.", "bbox": {"l": 136.79999, "t": 351.52624999999995, "r": 397.88553, "b": 360.73923, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Figure 1-2 Existing row and column controls", "bbox": {"l": 136.8, "t": 691.818, "r": 316.44727, "b": 700.142998, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "User with", "bbox": {"l": 180.95911, "t": 383.45612, "r": 209.08017, "b": 389.0784, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "*ALLOBJ access", "bbox": {"l": 170.00624, "t": 390.95251, "r": 220.10355, "b": 396.57480000000004, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.09014129638672, "t": 754.0796508789062, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8578534126281738, "cells": [{"id": 0, "text": "4 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 87.840302, "t": 754.6302490234375, "r": 328.72537, "b": 763.9817504882812, "coord_origin": "TOPLEFT"}, "confidence": 0.9491621851921082, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 87.840302, "t": 755.538002, "r": 328.72537, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.9996337890625, "t": 70.63605499267578, "r": 544.30334, "b": 153.09298706054688, "coord_origin": "TOPLEFT"}, "confidence": 0.9872740507125854, "cells": [{"id": 2, "text": "Many businesses are trying to limit data access to a need-to-know basis. This security goal ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 541.19006, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "means that users should be given access only to the minimum set of data that is required to ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 544.30334, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "perform their job. Often, users with object-level access are given access to row and column ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 540.94299, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "values that are beyond what their business task requires because that object-level security ", "bbox": {"l": 136.80002, "t": 107.50811999999996, "r": 538.27454, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "provides an all-or-nothing solution. For example, object-level controls allow a manager to ", "bbox": {"l": 136.80002, "t": 119.50792999999999, "r": 530.23004, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "access data about all employees. Most security policies limit a manager to accessing data ", "bbox": {"l": 136.80002, "t": 131.50775, "r": 536.26263, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "only for the employees that they manage.", "bbox": {"l": 136.80002, "t": 143.50757, "r": 319.04318, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "section_header", "bbox": {"l": 64.4480209350586, "t": 172.2285919189453, "r": 301.46902, "b": 185.72744750976562, "coord_origin": "TOPLEFT"}, "confidence": 0.9626136422157288, "cells": [{"id": 9, "text": "1.3.1", "bbox": {"l": 64.800003, "t": 173.33471999999995, "r": 94.033653, "b": 185.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Existing row and column control", "bbox": {"l": 97.687859, "t": 173.33471999999995, "r": 301.46902, "b": 185.32275000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.77957153320312, "t": 198.52076721191406, "r": 541.56738, "b": 257.1080322265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9858148097991943, "cells": [{"id": 11, "text": "Some IBM i clients have tried augmenting the all-or-nothing object-level security with SQL ", "bbox": {"l": 136.8, "t": 199.48870999999997, "r": 534.90112, "b": 208.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "views (or logical files) and application logic, as shown in Figure 1-2. However, ", "bbox": {"l": 136.8, "t": 211.48852999999997, "r": 480.47281000000004, "b": 220.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "application-based logic is easy to bypass with all of the different data access interfaces that ", "bbox": {"l": 136.8, "t": 223.48834, "r": 541.56738, "b": 232.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "are provided by the IBM i operating system, such as Open Database Connectivity (ODBC) ", "bbox": {"l": 136.8, "t": 235.48816, "r": 537.39423, "b": 244.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "and System i Navigator.", "bbox": {"l": 136.79999, "t": 247.48798, "r": 242.24352000000002, "b": 256.70099000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.9119110107422, "t": 268.6311340332031, "r": 547.4408, "b": 314.89898681640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9875384569168091, "cells": [{"id": 16, "text": "Using SQL views to limit access to a subset of the data in a table also has its own set of ", "bbox": {"l": 136.79999, "t": 269.50757, "r": 526.88428, "b": 278.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "challenges. First, there is the complexity of managing all of the SQL view objects that are ", "bbox": {"l": 136.79999, "t": 281.50742, "r": 531.77087, "b": 290.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "used for securing data access. Second, scaling a view-based security solution can be difficult ", "bbox": {"l": 136.79999, "t": 293.50723000000005, "r": 547.4408, "b": 302.72021, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "as the amount of data grows and the number of users increases.", "bbox": {"l": 136.79999, "t": 305.50705, "r": 421.86725, "b": 314.72003, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 136.0379638671875, "t": 326.60943603515625, "r": 547.23267, "b": 361.19879150390625, "coord_origin": "TOPLEFT"}, "confidence": 0.975760281085968, "cells": [{"id": 20, "text": "Even if you are willing to live with these performance and management issues, a user with ", "bbox": {"l": 136.79999, "t": 327.52661, "r": 536.46692, "b": 336.7395900000001, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "*ALLOBJ access still can directly access all of the data in the underlying DB2 table and easily ", "bbox": {"l": 136.79999, "t": 339.52643, "r": 547.23267, "b": 348.73941, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "bypass the security controls that are built into an SQL view.", "bbox": {"l": 136.79999, "t": 351.52624999999995, "r": 397.88553, "b": 360.73923, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "caption", "bbox": {"l": 136.23910522460938, "t": 690.8873901367188, "r": 317.073486328125, "b": 700.1619262695312, "coord_origin": "TOPLEFT"}, "confidence": 0.9457826614379883, "cells": [{"id": 23, "text": "Figure 1-2 Existing row and column controls", "bbox": {"l": 136.8, "t": 691.818, "r": 316.44727, "b": 700.142998, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 135.92466735839844, "t": 375.9272155761719, "r": 546.4456176757812, "b": 688.6098022460938, "coord_origin": "TOPLEFT"}, "confidence": 0.9838992357254028, "cells": [{"id": 24, "text": "User with", "bbox": {"l": 180.95911, "t": 383.45612, "r": 209.08017, "b": 389.0784, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "*ALLOBJ access", "bbox": {"l": 170.00624, "t": 390.95251, "r": 220.10355, "b": 396.57480000000004, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 19, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.09014129638672, "t": 754.0796508789062, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8578534126281738, "cells": [{"id": 0, "text": "4 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "4"}, {"label": "page_footer", "id": 1, "page_no": 19, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 87.840302, "t": 754.6302490234375, "r": 328.72537, "b": 763.9817504882812, "coord_origin": "TOPLEFT"}, "confidence": 0.9491621851921082, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 87.840302, "t": 755.538002, "r": 328.72537, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 2, "page_no": 19, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.9996337890625, "t": 70.63605499267578, "r": 544.30334, "b": 153.09298706054688, "coord_origin": "TOPLEFT"}, "confidence": 0.9872740507125854, "cells": [{"id": 2, "text": "Many businesses are trying to limit data access to a need-to-know basis. This security goal ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 541.19006, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "means that users should be given access only to the minimum set of data that is required to ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 544.30334, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "perform their job. Often, users with object-level access are given access to row and column ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 540.94299, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "values that are beyond what their business task requires because that object-level security ", "bbox": {"l": 136.80002, "t": 107.50811999999996, "r": 538.27454, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "provides an all-or-nothing solution. For example, object-level controls allow a manager to ", "bbox": {"l": 136.80002, "t": 119.50792999999999, "r": 530.23004, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "access data about all employees. Most security policies limit a manager to accessing data ", "bbox": {"l": 136.80002, "t": 131.50775, "r": 536.26263, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "only for the employees that they manage.", "bbox": {"l": 136.80002, "t": 143.50757, "r": 319.04318, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Many businesses are trying to limit data access to a need-to-know basis. This security goal means that users should be given access only to the minimum set of data that is required to perform their job. Often, users with object-level access are given access to row and column values that are beyond what their business task requires because that object-level security provides an all-or-nothing solution. For example, object-level controls allow a manager to access data about all employees. Most security policies limit a manager to accessing data only for the employees that they manage."}, {"label": "section_header", "id": 3, "page_no": 19, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 64.4480209350586, "t": 172.2285919189453, "r": 301.46902, "b": 185.72744750976562, "coord_origin": "TOPLEFT"}, "confidence": 0.9626136422157288, "cells": [{"id": 9, "text": "1.3.1", "bbox": {"l": 64.800003, "t": 173.33471999999995, "r": 94.033653, "b": 185.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Existing row and column control", "bbox": {"l": 97.687859, "t": 173.33471999999995, "r": 301.46902, "b": 185.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "1.3.1 Existing row and column control"}, {"label": "text", "id": 4, "page_no": 19, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.77957153320312, "t": 198.52076721191406, "r": 541.56738, "b": 257.1080322265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9858148097991943, "cells": [{"id": 11, "text": "Some IBM i clients have tried augmenting the all-or-nothing object-level security with SQL ", "bbox": {"l": 136.8, "t": 199.48870999999997, "r": 534.90112, "b": 208.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "views (or logical files) and application logic, as shown in Figure 1-2. However, ", "bbox": {"l": 136.8, "t": 211.48852999999997, "r": 480.47281000000004, "b": 220.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "application-based logic is easy to bypass with all of the different data access interfaces that ", "bbox": {"l": 136.8, "t": 223.48834, "r": 541.56738, "b": 232.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "are provided by the IBM i operating system, such as Open Database Connectivity (ODBC) ", "bbox": {"l": 136.8, "t": 235.48816, "r": 537.39423, "b": 244.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "and System i Navigator.", "bbox": {"l": 136.79999, "t": 247.48798, "r": 242.24352000000002, "b": 256.70099000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Some IBM i clients have tried augmenting the all-or-nothing object-level security with SQL views (or logical files) and application logic, as shown in Figure 1-2. However, application-based logic is easy to bypass with all of the different data access interfaces that are provided by the IBM i operating system, such as Open Database Connectivity (ODBC) and System i Navigator."}, {"label": "text", "id": 5, "page_no": 19, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.9119110107422, "t": 268.6311340332031, "r": 547.4408, "b": 314.89898681640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9875384569168091, "cells": [{"id": 16, "text": "Using SQL views to limit access to a subset of the data in a table also has its own set of ", "bbox": {"l": 136.79999, "t": 269.50757, "r": 526.88428, "b": 278.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "challenges. First, there is the complexity of managing all of the SQL view objects that are ", "bbox": {"l": 136.79999, "t": 281.50742, "r": 531.77087, "b": 290.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "used for securing data access. Second, scaling a view-based security solution can be difficult ", "bbox": {"l": 136.79999, "t": 293.50723000000005, "r": 547.4408, "b": 302.72021, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "as the amount of data grows and the number of users increases.", "bbox": {"l": 136.79999, "t": 305.50705, "r": 421.86725, "b": 314.72003, "coord_origin": "TOPLEFT"}}]}, "text": "Using SQL views to limit access to a subset of the data in a table also has its own set of challenges. First, there is the complexity of managing all of the SQL view objects that are used for securing data access. Second, scaling a view-based security solution can be difficult as the amount of data grows and the number of users increases."}, {"label": "text", "id": 6, "page_no": 19, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.0379638671875, "t": 326.60943603515625, "r": 547.23267, "b": 361.19879150390625, "coord_origin": "TOPLEFT"}, "confidence": 0.975760281085968, "cells": [{"id": 20, "text": "Even if you are willing to live with these performance and management issues, a user with ", "bbox": {"l": 136.79999, "t": 327.52661, "r": 536.46692, "b": 336.7395900000001, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "*ALLOBJ access still can directly access all of the data in the underlying DB2 table and easily ", "bbox": {"l": 136.79999, "t": 339.52643, "r": 547.23267, "b": 348.73941, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "bypass the security controls that are built into an SQL view.", "bbox": {"l": 136.79999, "t": 351.52624999999995, "r": 397.88553, "b": 360.73923, "coord_origin": "TOPLEFT"}}]}, "text": "Even if you are willing to live with these performance and management issues, a user with *ALLOBJ access still can directly access all of the data in the underlying DB2 table and easily bypass the security controls that are built into an SQL view."}, {"label": "caption", "id": 7, "page_no": 19, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 136.23910522460938, "t": 690.8873901367188, "r": 317.073486328125, "b": 700.1619262695312, "coord_origin": "TOPLEFT"}, "confidence": 0.9457826614379883, "cells": [{"id": 23, "text": "Figure 1-2 Existing row and column controls", "bbox": {"l": 136.8, "t": 691.818, "r": 316.44727, "b": 700.142998, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 1-2 Existing row and column controls"}, {"label": "picture", "id": 8, "page_no": 19, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 135.92466735839844, "t": 375.9272155761719, "r": 546.4456176757812, "b": 688.6098022460938, "coord_origin": "TOPLEFT"}, "confidence": 0.9838992357254028, "cells": [{"id": 24, "text": "User with", "bbox": {"l": 180.95911, "t": 383.45612, "r": 209.08017, "b": 389.0784, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "*ALLOBJ access", "bbox": {"l": 170.00624, "t": 390.95251, "r": 220.10355, "b": 396.57480000000004, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 19, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.9996337890625, "t": 70.63605499267578, "r": 544.30334, "b": 153.09298706054688, "coord_origin": "TOPLEFT"}, "confidence": 0.9872740507125854, "cells": [{"id": 2, "text": "Many businesses are trying to limit data access to a need-to-know basis. This security goal ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 541.19006, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "means that users should be given access only to the minimum set of data that is required to ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 544.30334, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "perform their job. Often, users with object-level access are given access to row and column ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 540.94299, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "values that are beyond what their business task requires because that object-level security ", "bbox": {"l": 136.80002, "t": 107.50811999999996, "r": 538.27454, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "provides an all-or-nothing solution. For example, object-level controls allow a manager to ", "bbox": {"l": 136.80002, "t": 119.50792999999999, "r": 530.23004, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "access data about all employees. Most security policies limit a manager to accessing data ", "bbox": {"l": 136.80002, "t": 131.50775, "r": 536.26263, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "only for the employees that they manage.", "bbox": {"l": 136.80002, "t": 143.50757, "r": 319.04318, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Many businesses are trying to limit data access to a need-to-know basis. This security goal means that users should be given access only to the minimum set of data that is required to perform their job. Often, users with object-level access are given access to row and column values that are beyond what their business task requires because that object-level security provides an all-or-nothing solution. For example, object-level controls allow a manager to access data about all employees. Most security policies limit a manager to accessing data only for the employees that they manage."}, {"label": "section_header", "id": 3, "page_no": 19, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 64.4480209350586, "t": 172.2285919189453, "r": 301.46902, "b": 185.72744750976562, "coord_origin": "TOPLEFT"}, "confidence": 0.9626136422157288, "cells": [{"id": 9, "text": "1.3.1", "bbox": {"l": 64.800003, "t": 173.33471999999995, "r": 94.033653, "b": 185.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Existing row and column control", "bbox": {"l": 97.687859, "t": 173.33471999999995, "r": 301.46902, "b": 185.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "1.3.1 Existing row and column control"}, {"label": "text", "id": 4, "page_no": 19, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.77957153320312, "t": 198.52076721191406, "r": 541.56738, "b": 257.1080322265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9858148097991943, "cells": [{"id": 11, "text": "Some IBM i clients have tried augmenting the all-or-nothing object-level security with SQL ", "bbox": {"l": 136.8, "t": 199.48870999999997, "r": 534.90112, "b": 208.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "views (or logical files) and application logic, as shown in Figure 1-2. However, ", "bbox": {"l": 136.8, "t": 211.48852999999997, "r": 480.47281000000004, "b": 220.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "application-based logic is easy to bypass with all of the different data access interfaces that ", "bbox": {"l": 136.8, "t": 223.48834, "r": 541.56738, "b": 232.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "are provided by the IBM i operating system, such as Open Database Connectivity (ODBC) ", "bbox": {"l": 136.8, "t": 235.48816, "r": 537.39423, "b": 244.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "and System i Navigator.", "bbox": {"l": 136.79999, "t": 247.48798, "r": 242.24352000000002, "b": 256.70099000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Some IBM i clients have tried augmenting the all-or-nothing object-level security with SQL views (or logical files) and application logic, as shown in Figure 1-2. However, application-based logic is easy to bypass with all of the different data access interfaces that are provided by the IBM i operating system, such as Open Database Connectivity (ODBC) and System i Navigator."}, {"label": "text", "id": 5, "page_no": 19, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.9119110107422, "t": 268.6311340332031, "r": 547.4408, "b": 314.89898681640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9875384569168091, "cells": [{"id": 16, "text": "Using SQL views to limit access to a subset of the data in a table also has its own set of ", "bbox": {"l": 136.79999, "t": 269.50757, "r": 526.88428, "b": 278.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "challenges. First, there is the complexity of managing all of the SQL view objects that are ", "bbox": {"l": 136.79999, "t": 281.50742, "r": 531.77087, "b": 290.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "used for securing data access. Second, scaling a view-based security solution can be difficult ", "bbox": {"l": 136.79999, "t": 293.50723000000005, "r": 547.4408, "b": 302.72021, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "as the amount of data grows and the number of users increases.", "bbox": {"l": 136.79999, "t": 305.50705, "r": 421.86725, "b": 314.72003, "coord_origin": "TOPLEFT"}}]}, "text": "Using SQL views to limit access to a subset of the data in a table also has its own set of challenges. First, there is the complexity of managing all of the SQL view objects that are used for securing data access. Second, scaling a view-based security solution can be difficult as the amount of data grows and the number of users increases."}, {"label": "text", "id": 6, "page_no": 19, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.0379638671875, "t": 326.60943603515625, "r": 547.23267, "b": 361.19879150390625, "coord_origin": "TOPLEFT"}, "confidence": 0.975760281085968, "cells": [{"id": 20, "text": "Even if you are willing to live with these performance and management issues, a user with ", "bbox": {"l": 136.79999, "t": 327.52661, "r": 536.46692, "b": 336.7395900000001, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "*ALLOBJ access still can directly access all of the data in the underlying DB2 table and easily ", "bbox": {"l": 136.79999, "t": 339.52643, "r": 547.23267, "b": 348.73941, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "bypass the security controls that are built into an SQL view.", "bbox": {"l": 136.79999, "t": 351.52624999999995, "r": 397.88553, "b": 360.73923, "coord_origin": "TOPLEFT"}}]}, "text": "Even if you are willing to live with these performance and management issues, a user with *ALLOBJ access still can directly access all of the data in the underlying DB2 table and easily bypass the security controls that are built into an SQL view."}, {"label": "caption", "id": 7, "page_no": 19, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 136.23910522460938, "t": 690.8873901367188, "r": 317.073486328125, "b": 700.1619262695312, "coord_origin": "TOPLEFT"}, "confidence": 0.9457826614379883, "cells": [{"id": 23, "text": "Figure 1-2 Existing row and column controls", "bbox": {"l": 136.8, "t": 691.818, "r": 316.44727, "b": 700.142998, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 1-2 Existing row and column controls"}, {"label": "picture", "id": 8, "page_no": 19, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 135.92466735839844, "t": 375.9272155761719, "r": 546.4456176757812, "b": 688.6098022460938, "coord_origin": "TOPLEFT"}, "confidence": 0.9838992357254028, "cells": [{"id": 24, "text": "User with", "bbox": {"l": 180.95911, "t": 383.45612, "r": 209.08017, "b": 389.0784, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "*ALLOBJ access", "bbox": {"l": 170.00624, "t": 390.95251, "r": 220.10355, "b": 396.57480000000004, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 19, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.09014129638672, "t": 754.0796508789062, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8578534126281738, "cells": [{"id": 0, "text": "4 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "4"}, {"label": "page_footer", "id": 1, "page_no": 19, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 87.840302, "t": 754.6302490234375, "r": 328.72537, "b": 763.9817504882812, "coord_origin": "TOPLEFT"}, "confidence": 0.9491621851921082, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 87.840302, "t": 755.538002, "r": 328.72537, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 20, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 1. Securing and protecting IBM DB2 data ", "bbox": {"l": 328.67999, "t": 755.538002, "r": 529.10632, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "5", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "1.3.2", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 93.920189, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "New controls: Row and Column Access Control", "bbox": {"l": 97.560196, "t": 71.33471999999995, "r": 394.39227, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Based on the challenges that are associated with the existing technology available for ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 516.74811, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "controlling row and column access at a more granular level, IBM delivered new security ", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 523.83459, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "support in the IBM i 7.2 release; this support is known as Row and Column Access Control ", "bbox": {"l": 136.8, "t": 121.48834000000011, "r": 539.93591, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "(RCAC).", "bbox": {"l": 136.80002, "t": 133.48816, "r": 174.23466, "b": 142.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "The new DB2 RCAC support provides a method for controlling data access across all ", "bbox": {"l": 136.80002, "t": 155.50775, "r": 515.71027, "b": 164.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "interfaces and all types of users with a data-centric solution. Moving security processing to ", "bbox": {"l": 136.80002, "t": 167.50757, "r": 538.3653, "b": 176.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "the database layer makes it easier to build controls that meet your compliance policies. The ", "bbox": {"l": 136.8, "t": 179.50739, "r": 542.25873, "b": 188.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "RCAC support provides an additional layer of security that complements object-level ", "bbox": {"l": 136.8, "t": 191.5072, "r": 510.83681999999993, "b": 200.72020999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "authorizations to limit data access to a need-to-know basis. Therefore, it is critical that you ", "bbox": {"l": 136.79999, "t": 203.50702, "r": 536.61536, "b": 212.72002999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "first have a sound object-level security implementation in place.", "bbox": {"l": 136.79999, "t": 215.50684, "r": 415.8204, "b": 224.71984999999995, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 328.2296447753906, "t": 754.7693481445312, "r": 529.10632, "b": 764.0823974609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9491059184074402, "cells": [{"id": 0, "text": "Chapter 1. Securing and protecting IBM DB2 data ", "bbox": {"l": 328.67999, "t": 755.538002, "r": 529.10632, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 541.1834716796875, "t": 754.2889404296875, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8711605668067932, "cells": [{"id": 1, "text": "5", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.52648162841797, "t": 70.3741455078125, "r": 394.39227, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9562826752662659, "cells": [{"id": 2, "text": "1.3.2", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 93.920189, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "New controls: Row and Column Access Control", "bbox": {"l": 97.560196, "t": 71.33471999999995, "r": 394.39227, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 136.02708435058594, "t": 96.53556823730469, "r": 539.93591, "b": 143.18263244628906, "coord_origin": "TOPLEFT"}, "confidence": 0.9866766929626465, "cells": [{"id": 4, "text": "Based on the challenges that are associated with the existing technology available for ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 516.74811, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "controlling row and column access at a more granular level, IBM delivered new security ", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 523.83459, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "support in the IBM i 7.2 release; this support is known as Row and Column Access Control ", "bbox": {"l": 136.8, "t": 121.48834000000011, "r": 539.93591, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "(RCAC).", "bbox": {"l": 136.80002, "t": 133.48816, "r": 174.23466, "b": 142.70117000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.92579650878906, "t": 154.57025146484375, "r": 542.25873, "b": 225.18753051757812, "coord_origin": "TOPLEFT"}, "confidence": 0.9879173636436462, "cells": [{"id": 8, "text": "The new DB2 RCAC support provides a method for controlling data access across all ", "bbox": {"l": 136.80002, "t": 155.50775, "r": 515.71027, "b": 164.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "interfaces and all types of users with a data-centric solution. Moving security processing to ", "bbox": {"l": 136.80002, "t": 167.50757, "r": 538.3653, "b": 176.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "the database layer makes it easier to build controls that meet your compliance policies. The ", "bbox": {"l": 136.8, "t": 179.50739, "r": 542.25873, "b": 188.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "RCAC support provides an additional layer of security that complements object-level ", "bbox": {"l": 136.8, "t": 191.5072, "r": 510.83681999999993, "b": 200.72020999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "authorizations to limit data access to a need-to-know basis. Therefore, it is critical that you ", "bbox": {"l": 136.79999, "t": 203.50702, "r": 536.61536, "b": 212.72002999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "first have a sound object-level security implementation in place.", "bbox": {"l": 136.79999, "t": 215.50684, "r": 415.8204, "b": 224.71984999999995, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 20, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 328.2296447753906, "t": 754.7693481445312, "r": 529.10632, "b": 764.0823974609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9491059184074402, "cells": [{"id": 0, "text": "Chapter 1. Securing and protecting IBM DB2 data ", "bbox": {"l": 328.67999, "t": 755.538002, "r": 529.10632, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 1. Securing and protecting IBM DB2 data"}, {"label": "page_footer", "id": 1, "page_no": 20, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 541.1834716796875, "t": 754.2889404296875, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8711605668067932, "cells": [{"id": 1, "text": "5", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "5"}, {"label": "section_header", "id": 2, "page_no": 20, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.52648162841797, "t": 70.3741455078125, "r": 394.39227, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9562826752662659, "cells": [{"id": 2, "text": "1.3.2", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 93.920189, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "New controls: Row and Column Access Control", "bbox": {"l": 97.560196, "t": 71.33471999999995, "r": 394.39227, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "1.3.2 New controls: Row and Column Access Control"}, {"label": "text", "id": 3, "page_no": 20, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.02708435058594, "t": 96.53556823730469, "r": 539.93591, "b": 143.18263244628906, "coord_origin": "TOPLEFT"}, "confidence": 0.9866766929626465, "cells": [{"id": 4, "text": "Based on the challenges that are associated with the existing technology available for ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 516.74811, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "controlling row and column access at a more granular level, IBM delivered new security ", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 523.83459, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "support in the IBM i 7.2 release; this support is known as Row and Column Access Control ", "bbox": {"l": 136.8, "t": 121.48834000000011, "r": 539.93591, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "(RCAC).", "bbox": {"l": 136.80002, "t": 133.48816, "r": 174.23466, "b": 142.70117000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Based on the challenges that are associated with the existing technology available for controlling row and column access at a more granular level, IBM delivered new security support in the IBM i 7.2 release; this support is known as Row and Column Access Control (RCAC)."}, {"label": "text", "id": 4, "page_no": 20, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.92579650878906, "t": 154.57025146484375, "r": 542.25873, "b": 225.18753051757812, "coord_origin": "TOPLEFT"}, "confidence": 0.9879173636436462, "cells": [{"id": 8, "text": "The new DB2 RCAC support provides a method for controlling data access across all ", "bbox": {"l": 136.80002, "t": 155.50775, "r": 515.71027, "b": 164.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "interfaces and all types of users with a data-centric solution. Moving security processing to ", "bbox": {"l": 136.80002, "t": 167.50757, "r": 538.3653, "b": 176.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "the database layer makes it easier to build controls that meet your compliance policies. The ", "bbox": {"l": 136.8, "t": 179.50739, "r": 542.25873, "b": 188.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "RCAC support provides an additional layer of security that complements object-level ", "bbox": {"l": 136.8, "t": 191.5072, "r": 510.83681999999993, "b": 200.72020999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "authorizations to limit data access to a need-to-know basis. Therefore, it is critical that you ", "bbox": {"l": 136.79999, "t": 203.50702, "r": 536.61536, "b": 212.72002999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "first have a sound object-level security implementation in place.", "bbox": {"l": 136.79999, "t": 215.50684, "r": 415.8204, "b": 224.71984999999995, "coord_origin": "TOPLEFT"}}]}, "text": "The new DB2 RCAC support provides a method for controlling data access across all interfaces and all types of users with a data-centric solution. Moving security processing to the database layer makes it easier to build controls that meet your compliance policies. The RCAC support provides an additional layer of security that complements object-level authorizations to limit data access to a need-to-know basis. Therefore, it is critical that you first have a sound object-level security implementation in place."}], "body": [{"label": "section_header", "id": 2, "page_no": 20, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.52648162841797, "t": 70.3741455078125, "r": 394.39227, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9562826752662659, "cells": [{"id": 2, "text": "1.3.2", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 93.920189, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "New controls: Row and Column Access Control", "bbox": {"l": 97.560196, "t": 71.33471999999995, "r": 394.39227, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "1.3.2 New controls: Row and Column Access Control"}, {"label": "text", "id": 3, "page_no": 20, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.02708435058594, "t": 96.53556823730469, "r": 539.93591, "b": 143.18263244628906, "coord_origin": "TOPLEFT"}, "confidence": 0.9866766929626465, "cells": [{"id": 4, "text": "Based on the challenges that are associated with the existing technology available for ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 516.74811, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "controlling row and column access at a more granular level, IBM delivered new security ", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 523.83459, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "support in the IBM i 7.2 release; this support is known as Row and Column Access Control ", "bbox": {"l": 136.8, "t": 121.48834000000011, "r": 539.93591, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "(RCAC).", "bbox": {"l": 136.80002, "t": 133.48816, "r": 174.23466, "b": 142.70117000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Based on the challenges that are associated with the existing technology available for controlling row and column access at a more granular level, IBM delivered new security support in the IBM i 7.2 release; this support is known as Row and Column Access Control (RCAC)."}, {"label": "text", "id": 4, "page_no": 20, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.92579650878906, "t": 154.57025146484375, "r": 542.25873, "b": 225.18753051757812, "coord_origin": "TOPLEFT"}, "confidence": 0.9879173636436462, "cells": [{"id": 8, "text": "The new DB2 RCAC support provides a method for controlling data access across all ", "bbox": {"l": 136.80002, "t": 155.50775, "r": 515.71027, "b": 164.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "interfaces and all types of users with a data-centric solution. Moving security processing to ", "bbox": {"l": 136.80002, "t": 167.50757, "r": 538.3653, "b": 176.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "the database layer makes it easier to build controls that meet your compliance policies. The ", "bbox": {"l": 136.8, "t": 179.50739, "r": 542.25873, "b": 188.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "RCAC support provides an additional layer of security that complements object-level ", "bbox": {"l": 136.8, "t": 191.5072, "r": 510.83681999999993, "b": 200.72020999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "authorizations to limit data access to a need-to-know basis. Therefore, it is critical that you ", "bbox": {"l": 136.79999, "t": 203.50702, "r": 536.61536, "b": 212.72002999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "first have a sound object-level security implementation in place.", "bbox": {"l": 136.79999, "t": 215.50684, "r": 415.8204, "b": 224.71984999999995, "coord_origin": "TOPLEFT"}}]}, "text": "The new DB2 RCAC support provides a method for controlling data access across all interfaces and all types of users with a data-centric solution. Moving security processing to the database layer makes it easier to build controls that meet your compliance policies. The RCAC support provides an additional layer of security that complements object-level authorizations to limit data access to a need-to-know basis. Therefore, it is critical that you first have a sound object-level security implementation in place."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 20, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 328.2296447753906, "t": 754.7693481445312, "r": 529.10632, "b": 764.0823974609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9491059184074402, "cells": [{"id": 0, "text": "Chapter 1. Securing and protecting IBM DB2 data ", "bbox": {"l": 328.67999, "t": 755.538002, "r": 529.10632, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 1. Securing and protecting IBM DB2 data"}, {"label": "page_footer", "id": 1, "page_no": 20, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 541.1834716796875, "t": 754.2889404296875, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8711605668067932, "cells": [{"id": 1, "text": "5", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "5"}]}}, {"page_no": 21, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "6 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 87.840302, "t": 755.538002, "r": 328.72537, "b": 763.863001, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.46890258789062, "t": 754.154052734375, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8681296110153198, "cells": [{"id": 0, "text": "6 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 87.840302, "t": 754.5233764648438, "r": 328.78973388671875, "b": 764.0779418945312, "coord_origin": "TOPLEFT"}, "confidence": 0.9378317594528198, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 87.840302, "t": 755.538002, "r": 328.72537, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 21, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.46890258789062, "t": 754.154052734375, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8681296110153198, "cells": [{"id": 0, "text": "6 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "6"}, {"label": "page_footer", "id": 1, "page_no": 21, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 87.840302, "t": 754.5233764648438, "r": 328.78973388671875, "b": 764.0779418945312, "coord_origin": "TOPLEFT"}, "confidence": 0.9378317594528198, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 87.840302, "t": 755.538002, "r": 328.72537, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}], "body": [], "headers": [{"label": "page_footer", "id": 0, "page_no": 21, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.46890258789062, "t": 754.154052734375, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8681296110153198, "cells": [{"id": 0, "text": "6 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "6"}, {"label": "page_footer", "id": 1, "page_no": 21, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 87.840302, "t": 754.5233764648438, "r": 328.78973388671875, "b": 764.0779418945312, "coord_origin": "TOPLEFT"}, "confidence": 0.9378317594528198, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 87.840302, "t": 755.538002, "r": 328.72537, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 22, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "7", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Chapter 2.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Roles and separation of duties", "bbox": {"l": 136.8, "t": 254.88635, "r": 515.13116, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "One of the primary objectives of row and column access control (RCAC) is to create data ", "bbox": {"l": 136.8, "t": 317.68872, "r": 532.0885, "b": 326.90170000000006, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "security policies that control and govern user access to data and limit the data access of DB2 ", "bbox": {"l": 136.8, "t": 329.68854, "r": 547.3324, "b": 338.90152, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "designers and administrators to only the minimum that is required to do their jobs.", "bbox": {"l": 136.8, "t": 341.68835, "r": 497.04517, "b": 350.90134, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "To accomplish these tasks, RCAC engineers devised a set of functional roles that, as a group, ", "bbox": {"l": 136.8, "t": 363.70792, "r": 547.15588, "b": 372.9209, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "implement effectively data access requirements and also limit the span of control of each role ", "bbox": {"l": 136.8, "t": 375.70772999999997, "r": 547.25745, "b": 384.92071999999996, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "so that each role is given only the authorities that are needed to perform its specific set of ", "bbox": {"l": 136.8, "t": 387.7075500000001, "r": 533.96405, "b": 396.92053, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "tasks.", "bbox": {"l": 136.8, "t": 399.70737, "r": 162.73087, "b": 408.92035, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "This chapter describes the concepts of roles and separation of duties on DB2 for i and covers ", "bbox": {"l": 136.8, "t": 421.7269299999999, "r": 547.2655, "b": 430.93991, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "the following topics:", "bbox": {"l": 136.8, "t": 433.72675000000004, "r": 223.52769, "b": 442.93973, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 450.85593, "r": 141.78, "b": 459.63070999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Roles", "bbox": {"l": 151.20016, "t": 450.70654, "r": 176.71271, "b": 459.91953, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 462.85574, "r": 141.78, "b": 471.63052, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Separation of duties", "bbox": {"l": 151.20016, "t": 462.70636, "r": 239.97063000000003, "b": 471.91934, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "2", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.7032470703125, "t": 754.6690673828125, "r": 257.24335, "b": 764.16552734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9463762640953064, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 540.8427734375, "t": 754.1920166015625, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.870232343673706, "cells": [{"id": 1, "text": "7", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 2.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "section_header", "bbox": {"l": 136.8, "t": 253.07919311523438, "r": 515.13116, "b": 279.40411376953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9443839192390442, "cells": [{"id": 3, "text": "Roles and separation of duties", "bbox": {"l": 136.8, "t": 254.88635, "r": 515.13116, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.93650817871094, "t": 316.54962158203125, "r": 547.3324, "b": 351.0145568847656, "coord_origin": "TOPLEFT"}, "confidence": 0.9858477115631104, "cells": [{"id": 4, "text": "One of the primary objectives of row and column access control (RCAC) is to create data ", "bbox": {"l": 136.8, "t": 317.68872, "r": 532.0885, "b": 326.90170000000006, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "security policies that control and govern user access to data and limit the data access of DB2 ", "bbox": {"l": 136.8, "t": 329.68854, "r": 547.3324, "b": 338.90152, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "designers and administrators to only the minimum that is required to do their jobs.", "bbox": {"l": 136.8, "t": 341.68835, "r": 497.04517, "b": 350.90134, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.88510131835938, "t": 362.6448669433594, "r": 547.25745, "b": 408.92035, "coord_origin": "TOPLEFT"}, "confidence": 0.9865830540657043, "cells": [{"id": 7, "text": "To accomplish these tasks, RCAC engineers devised a set of functional roles that, as a group, ", "bbox": {"l": 136.8, "t": 363.70792, "r": 547.15588, "b": 372.9209, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "implement effectively data access requirements and also limit the span of control of each role ", "bbox": {"l": 136.8, "t": 375.70772999999997, "r": 547.25745, "b": 384.92071999999996, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "so that each role is given only the authorities that are needed to perform its specific set of ", "bbox": {"l": 136.8, "t": 387.7075500000001, "r": 533.96405, "b": 396.92053, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "tasks.", "bbox": {"l": 136.8, "t": 399.70737, "r": 162.73087, "b": 408.92035, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 135.7690887451172, "t": 420.59063720703125, "r": 547.2655, "b": 442.93973, "coord_origin": "TOPLEFT"}, "confidence": 0.978435754776001, "cells": [{"id": 11, "text": "This chapter describes the concepts of roles and separation of duties on DB2 for i and covers ", "bbox": {"l": 136.8, "t": 421.7269299999999, "r": 547.2655, "b": 430.93991, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "the following topics:", "bbox": {"l": 136.8, "t": 433.72675000000004, "r": 223.52769, "b": 442.93973, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.8439483642578, "t": 449.8417053222656, "r": 176.71271, "b": 459.91953, "coord_origin": "TOPLEFT"}, "confidence": 0.9163564443588257, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 450.85593, "r": 141.78, "b": 459.63070999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Roles", "bbox": {"l": 151.20016, "t": 450.70654, "r": 176.71271, "b": 459.91953, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.7147674560547, "t": 462.1671447753906, "r": 239.97063000000003, "b": 472.4137878417969, "coord_origin": "TOPLEFT"}, "confidence": 0.9477108716964722, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 462.85574, "r": 141.78, "b": 471.63052, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Separation of duties", "bbox": {"l": 151.20016, "t": 462.70636, "r": 239.97063000000003, "b": 471.91934, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 500.39999, "t": 93.14598083496094, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.7584443092346191, "cells": [{"id": 17, "text": "2", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "picture", "bbox": {"l": 32.17647933959961, "t": 70.26495361328125, "r": 239.21856689453125, "b": 237.9607696533203, "coord_origin": "TOPLEFT"}, "confidence": 0.6822353005409241, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 22, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.7032470703125, "t": 754.6690673828125, "r": 257.24335, "b": 764.16552734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9463762640953064, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 22, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 540.8427734375, "t": 754.1920166015625, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.870232343673706, "cells": [{"id": 1, "text": "7", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "7"}, {"label": "text", "id": 2, "page_no": 22, "cluster": {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 2.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 2."}, {"label": "section_header", "id": 3, "page_no": 22, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 136.8, "t": 253.07919311523438, "r": 515.13116, "b": 279.40411376953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9443839192390442, "cells": [{"id": 3, "text": "Roles and separation of duties", "bbox": {"l": 136.8, "t": 254.88635, "r": 515.13116, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Roles and separation of duties"}, {"label": "text", "id": 4, "page_no": 22, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.93650817871094, "t": 316.54962158203125, "r": 547.3324, "b": 351.0145568847656, "coord_origin": "TOPLEFT"}, "confidence": 0.9858477115631104, "cells": [{"id": 4, "text": "One of the primary objectives of row and column access control (RCAC) is to create data ", "bbox": {"l": 136.8, "t": 317.68872, "r": 532.0885, "b": 326.90170000000006, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "security policies that control and govern user access to data and limit the data access of DB2 ", "bbox": {"l": 136.8, "t": 329.68854, "r": 547.3324, "b": 338.90152, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "designers and administrators to only the minimum that is required to do their jobs.", "bbox": {"l": 136.8, "t": 341.68835, "r": 497.04517, "b": 350.90134, "coord_origin": "TOPLEFT"}}]}, "text": "One of the primary objectives of row and column access control (RCAC) is to create data security policies that control and govern user access to data and limit the data access of DB2 designers and administrators to only the minimum that is required to do their jobs."}, {"label": "text", "id": 5, "page_no": 22, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.88510131835938, "t": 362.6448669433594, "r": 547.25745, "b": 408.92035, "coord_origin": "TOPLEFT"}, "confidence": 0.9865830540657043, "cells": [{"id": 7, "text": "To accomplish these tasks, RCAC engineers devised a set of functional roles that, as a group, ", "bbox": {"l": 136.8, "t": 363.70792, "r": 547.15588, "b": 372.9209, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "implement effectively data access requirements and also limit the span of control of each role ", "bbox": {"l": 136.8, "t": 375.70772999999997, "r": 547.25745, "b": 384.92071999999996, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "so that each role is given only the authorities that are needed to perform its specific set of ", "bbox": {"l": 136.8, "t": 387.7075500000001, "r": 533.96405, "b": 396.92053, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "tasks.", "bbox": {"l": 136.8, "t": 399.70737, "r": 162.73087, "b": 408.92035, "coord_origin": "TOPLEFT"}}]}, "text": "To accomplish these tasks, RCAC engineers devised a set of functional roles that, as a group, implement effectively data access requirements and also limit the span of control of each role so that each role is given only the authorities that are needed to perform its specific set of tasks."}, {"label": "text", "id": 6, "page_no": 22, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.7690887451172, "t": 420.59063720703125, "r": 547.2655, "b": 442.93973, "coord_origin": "TOPLEFT"}, "confidence": 0.978435754776001, "cells": [{"id": 11, "text": "This chapter describes the concepts of roles and separation of duties on DB2 for i and covers ", "bbox": {"l": 136.8, "t": 421.7269299999999, "r": 547.2655, "b": 430.93991, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "the following topics:", "bbox": {"l": 136.8, "t": 433.72675000000004, "r": 223.52769, "b": 442.93973, "coord_origin": "TOPLEFT"}}]}, "text": "This chapter describes the concepts of roles and separation of duties on DB2 for i and covers the following topics:"}, {"label": "list_item", "id": 7, "page_no": 22, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.8439483642578, "t": 449.8417053222656, "r": 176.71271, "b": 459.91953, "coord_origin": "TOPLEFT"}, "confidence": 0.9163564443588257, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 450.85593, "r": 141.78, "b": 459.63070999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Roles", "bbox": {"l": 151.20016, "t": 450.70654, "r": 176.71271, "b": 459.91953, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Roles"}, {"label": "list_item", "id": 8, "page_no": 22, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.7147674560547, "t": 462.1671447753906, "r": 239.97063000000003, "b": 472.4137878417969, "coord_origin": "TOPLEFT"}, "confidence": 0.9477108716964722, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 462.85574, "r": 141.78, "b": 471.63052, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Separation of duties", "bbox": {"l": 151.20016, "t": 462.70636, "r": 239.97063000000003, "b": 471.91934, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Separation of duties"}, {"label": "text", "id": 9, "page_no": 22, "cluster": {"id": 9, "label": "text", "bbox": {"l": 500.39999, "t": 93.14598083496094, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.7584443092346191, "cells": [{"id": 17, "text": "2", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, "text": "2"}, {"label": "picture", "id": 10, "page_no": 22, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 32.17647933959961, "t": 70.26495361328125, "r": 239.21856689453125, "b": 237.9607696533203, "coord_origin": "TOPLEFT"}, "confidence": 0.6822353005409241, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 22, "cluster": {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 2.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 2."}, {"label": "section_header", "id": 3, "page_no": 22, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 136.8, "t": 253.07919311523438, "r": 515.13116, "b": 279.40411376953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9443839192390442, "cells": [{"id": 3, "text": "Roles and separation of duties", "bbox": {"l": 136.8, "t": 254.88635, "r": 515.13116, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Roles and separation of duties"}, {"label": "text", "id": 4, "page_no": 22, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.93650817871094, "t": 316.54962158203125, "r": 547.3324, "b": 351.0145568847656, "coord_origin": "TOPLEFT"}, "confidence": 0.9858477115631104, "cells": [{"id": 4, "text": "One of the primary objectives of row and column access control (RCAC) is to create data ", "bbox": {"l": 136.8, "t": 317.68872, "r": 532.0885, "b": 326.90170000000006, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "security policies that control and govern user access to data and limit the data access of DB2 ", "bbox": {"l": 136.8, "t": 329.68854, "r": 547.3324, "b": 338.90152, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "designers and administrators to only the minimum that is required to do their jobs.", "bbox": {"l": 136.8, "t": 341.68835, "r": 497.04517, "b": 350.90134, "coord_origin": "TOPLEFT"}}]}, "text": "One of the primary objectives of row and column access control (RCAC) is to create data security policies that control and govern user access to data and limit the data access of DB2 designers and administrators to only the minimum that is required to do their jobs."}, {"label": "text", "id": 5, "page_no": 22, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.88510131835938, "t": 362.6448669433594, "r": 547.25745, "b": 408.92035, "coord_origin": "TOPLEFT"}, "confidence": 0.9865830540657043, "cells": [{"id": 7, "text": "To accomplish these tasks, RCAC engineers devised a set of functional roles that, as a group, ", "bbox": {"l": 136.8, "t": 363.70792, "r": 547.15588, "b": 372.9209, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "implement effectively data access requirements and also limit the span of control of each role ", "bbox": {"l": 136.8, "t": 375.70772999999997, "r": 547.25745, "b": 384.92071999999996, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "so that each role is given only the authorities that are needed to perform its specific set of ", "bbox": {"l": 136.8, "t": 387.7075500000001, "r": 533.96405, "b": 396.92053, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "tasks.", "bbox": {"l": 136.8, "t": 399.70737, "r": 162.73087, "b": 408.92035, "coord_origin": "TOPLEFT"}}]}, "text": "To accomplish these tasks, RCAC engineers devised a set of functional roles that, as a group, implement effectively data access requirements and also limit the span of control of each role so that each role is given only the authorities that are needed to perform its specific set of tasks."}, {"label": "text", "id": 6, "page_no": 22, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.7690887451172, "t": 420.59063720703125, "r": 547.2655, "b": 442.93973, "coord_origin": "TOPLEFT"}, "confidence": 0.978435754776001, "cells": [{"id": 11, "text": "This chapter describes the concepts of roles and separation of duties on DB2 for i and covers ", "bbox": {"l": 136.8, "t": 421.7269299999999, "r": 547.2655, "b": 430.93991, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "the following topics:", "bbox": {"l": 136.8, "t": 433.72675000000004, "r": 223.52769, "b": 442.93973, "coord_origin": "TOPLEFT"}}]}, "text": "This chapter describes the concepts of roles and separation of duties on DB2 for i and covers the following topics:"}, {"label": "list_item", "id": 7, "page_no": 22, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.8439483642578, "t": 449.8417053222656, "r": 176.71271, "b": 459.91953, "coord_origin": "TOPLEFT"}, "confidence": 0.9163564443588257, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 450.85593, "r": 141.78, "b": 459.63070999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Roles", "bbox": {"l": 151.20016, "t": 450.70654, "r": 176.71271, "b": 459.91953, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Roles"}, {"label": "list_item", "id": 8, "page_no": 22, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.7147674560547, "t": 462.1671447753906, "r": 239.97063000000003, "b": 472.4137878417969, "coord_origin": "TOPLEFT"}, "confidence": 0.9477108716964722, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 462.85574, "r": 141.78, "b": 471.63052, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Separation of duties", "bbox": {"l": 151.20016, "t": 462.70636, "r": 239.97063000000003, "b": 471.91934, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Separation of duties"}, {"label": "text", "id": 9, "page_no": 22, "cluster": {"id": 9, "label": "text", "bbox": {"l": 500.39999, "t": 93.14598083496094, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.7584443092346191, "cells": [{"id": 17, "text": "2", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, "text": "2"}, {"label": "picture", "id": 10, "page_no": 22, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 32.17647933959961, "t": 70.26495361328125, "r": 239.21856689453125, "b": 237.9607696533203, "coord_origin": "TOPLEFT"}, "confidence": 0.6822353005409241, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 22, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.7032470703125, "t": 754.6690673828125, "r": 257.24335, "b": 764.16552734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9463762640953064, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 22, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 540.8427734375, "t": 754.1920166015625, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.870232343673706, "cells": [{"id": 1, "text": "7", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "7"}]}}, {"page_no": 23, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "8 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 87.840302, "t": 755.538002, "r": 328.72537, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "2.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 88.423279, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Roles", "bbox": {"l": 93.147934, "t": 74.34069999999997, "r": 139.42577, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Traditionally, data access roles are defined in a binary way, where access to the data is either ", "bbox": {"l": 136.8, "t": 106.6087, "r": 547.29651, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "not permitted or access to the data is permitted. A full access capability can also be ", "bbox": {"l": 136.8, "t": 118.60852, "r": 508.29009999999994, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "instantiated by the *ALLOBJ special authority, either explicitly or implicitly, for the security ", "bbox": {"l": 136.79999, "t": 130.60834, "r": 531.44403, "b": 139.82135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "officer. If you hold the role of security officer, or have all *ALLOBJ special authority, you have ", "bbox": {"l": 136.79996, "t": 142.60815000000002, "r": 546.6059, "b": 151.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "access to all the data, with no exceptions. Unfortunately, this might not meet the ", "bbox": {"l": 136.79996, "t": 154.60797000000002, "r": 491.55511, "b": 163.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "organization\u2019s requirements for limiting access to data or separation of duties.", "bbox": {"l": 136.79996, "t": 166.60779000000002, "r": 478.54343000000006, "b": 175.82079999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "To assist with defining roles and the separation of duties with appropriate authority, IBM i ", "bbox": {"l": 136.79996, "t": 188.62738000000002, "r": 529.83362, "b": 197.84038999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "provides ", "bbox": {"l": 136.79996, "t": 200.62720000000002, "r": 177.20967, "b": 209.84020999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "function usage IDs", "bbox": {"l": 176.75999, "t": 200.10497999999995, "r": 259.01556, "b": 210.16272000000004, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": ". A function usage ID implements granular security controls rather ", "bbox": {"l": 258.84, "t": 200.62872000000004, "r": 547.25879, "b": 209.84173999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "than granting users powerful special authorities, such as all object, job control, or service.", "bbox": {"l": 136.80011, "t": 212.62854000000004, "r": 531.03082, "b": 221.84154999999998, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Roles are divided among the following DB2 functions and their corresponding function usage ", "bbox": {"l": 136.80011, "t": 234.64813000000004, "r": 547.31238, "b": 243.86114999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "IDs:", "bbox": {"l": 136.80011, "t": 246.64795000000004, "r": 154.56874, "b": 255.86095999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "GLYPH", "bbox": {"l": 136.80011, "t": 263.77716, "r": 141.78011, "b": 272.55193999999995, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "DDM and IBM DRDAfi application server access: QIBM_DB_DDMDRDA", "bbox": {"l": 151.20027, "t": 263.62775, "r": 473.7419100000001, "b": 272.84076000000005, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "GLYPH", "bbox": {"l": 136.80013, "t": 275.77698, "r": 141.78012, "b": 284.55176, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Toolbox application server access: QIBM_DB_ZDA", "bbox": {"l": 151.20029, "t": 275.62756, "r": 375.98358, "b": 284.84058, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "GLYPH", "bbox": {"l": 136.80013, "t": 287.77679, "r": 141.78012, "b": 296.55157, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Database Administrator function: QIBM_DB_SQLADM", "bbox": {"l": 151.20029, "t": 287.62741, "r": 391.564, "b": 296.84039, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "GLYPH", "bbox": {"l": 136.80013, "t": 299.77661, "r": 141.78012, "b": 308.55139, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Database Information function: QIBM_DB_SYSMON", "bbox": {"l": 151.20029, "t": 299.62723, "r": 383.82812, "b": 308.84021, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "GLYPH", "bbox": {"l": 136.80013, "t": 311.77643, "r": 141.78012, "b": 320.55121, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Security Administrator function: QIBM_DB_SECADM", "bbox": {"l": 151.20029, "t": 311.6270400000001, "r": 385.5571, "b": 320.84003000000007, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "2.1.1", "bbox": {"l": 64.800003, "t": 341.45474, "r": 93.853226, "b": 353.44272, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "DDM and DRDA application server access: QIBM_DB_DDMDRDA", "bbox": {"l": 97.484901, "t": 341.45474, "r": 501.05563, "b": 353.44272, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "The QIBM_DB_DDMDRDA function usage ID restricts access to the DDM and DRDA ", "bbox": {"l": 136.8, "t": 367.60873, "r": 516.65253, "b": 376.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "application server (QRWTSRVR). This function usage ID provides an easy alternative (rather ", "bbox": {"l": 136.8, "t": 379.60855, "r": 547.22955, "b": 388.82153, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "than writing an exit program) to control access to DDM and DRDA from the server side. The ", "bbox": {"l": 136.79999, "t": 391.60837, "r": 544.2276, "b": 400.82134999999994, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "function usage IDs ship with the default authority of *ALLOWED. The security officer can ", "bbox": {"l": 136.79999, "t": 403.60818000000006, "r": 529.2121, "b": 412.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "easily deny access to specific users or groups.", "bbox": {"l": 136.79999, "t": 415.608, "r": 342.43817, "b": 424.82098, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "This is an alternative to a User Exit Program approach. No coding is required, it is easy to ", "bbox": {"l": 136.79999, "t": 437.62756, "r": 534.94904, "b": 446.84055, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "change, and it is auditable.", "bbox": {"l": 136.79999, "t": 449.62738, "r": 255.25826, "b": 458.84036, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "2.1.2", "bbox": {"l": 64.800003, "t": 479.45474, "r": 93.831696, "b": 491.44272, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Toolbox application server access: QIBM_DB_ZDA", "bbox": {"l": 97.46067, "t": 479.45474, "r": 413.01059, "b": 491.44272, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "The QIBM_DB_ZDA function usage ID restricts access to the optimized server that handles ", "bbox": {"l": 136.8, "t": 505.60861, "r": 543.15112, "b": 514.82159, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "DB2 requests from clients (QZDASOINIT and QZDASSINIT). Server access is used by the ", "bbox": {"l": 136.8, "t": 517.66818, "r": 539.04858, "b": 526.88116, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ODBC, OLE DB, and .NET providers that ship with IBM i Access for Windows and JDBC ", "bbox": {"l": 136.80005, "t": 529.66797, "r": 529.04962, "b": 538.88098, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Toolbox, Run SQL scripts, and other parts of System i Navigator and Navigator for i Web ", "bbox": {"l": 136.80005, "t": 541.66779, "r": 529.66431, "b": 550.88078, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "console.", "bbox": {"l": 136.80005, "t": 553.66759, "r": 173.81541, "b": 562.88058, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "This function usage ID provides an easy alternative (rather than writing an exit program) to ", "bbox": {"l": 136.80005, "t": 575.6274, "r": 538.42694, "b": 584.8403900000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "control access to these functions from the server side. The function usage IDs ship with the ", "bbox": {"l": 136.80005, "t": 587.6272, "r": 542.29028, "b": 596.84019, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "default authority of *ALLOWED. The security officer can easily deny access to specific users ", "bbox": {"l": 136.80005, "t": 599.627, "r": 546.20782, "b": 608.84, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "or groups.", "bbox": {"l": 136.80005, "t": 611.6268, "r": 181.49457, "b": 620.8398, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "This is an alternative to a User Exit Program approach. No coding is required, it is easy to ", "bbox": {"l": 136.80005, "t": 633.64636, "r": 534.9491, "b": 642.85936, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "change, and it is auditable.", "bbox": {"l": 136.80005, "t": 645.64616, "r": 255.25832000000003, "b": 654.85916, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.24457550048828, "t": 754.206787109375, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8828381299972534, "cells": [{"id": 0, "text": "8 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 87.8071517944336, "t": 754.697998046875, "r": 328.72537, "b": 763.9702758789062, "coord_origin": "TOPLEFT"}, "confidence": 0.9468024373054504, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 87.840302, "t": 755.538002, "r": 328.72537, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.00420379638672, "t": 73.46255493164062, "r": 139.42577, "b": 89.1037, "coord_origin": "TOPLEFT"}, "confidence": 0.9606645107269287, "cells": [{"id": 2, "text": "2.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 88.423279, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Roles", "bbox": {"l": 93.147934, "t": 74.34069999999997, "r": 139.42577, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.84288024902344, "t": 105.96865844726562, "r": 547.29651, "b": 176.3714599609375, "coord_origin": "TOPLEFT"}, "confidence": 0.987520694732666, "cells": [{"id": 4, "text": "Traditionally, data access roles are defined in a binary way, where access to the data is either ", "bbox": {"l": 136.8, "t": 106.6087, "r": 547.29651, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "not permitted or access to the data is permitted. A full access capability can also be ", "bbox": {"l": 136.8, "t": 118.60852, "r": 508.29009999999994, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "instantiated by the *ALLOBJ special authority, either explicitly or implicitly, for the security ", "bbox": {"l": 136.79999, "t": 130.60834, "r": 531.44403, "b": 139.82135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "officer. If you hold the role of security officer, or have all *ALLOBJ special authority, you have ", "bbox": {"l": 136.79996, "t": 142.60815000000002, "r": 546.6059, "b": 151.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "access to all the data, with no exceptions. Unfortunately, this might not meet the ", "bbox": {"l": 136.79996, "t": 154.60797000000002, "r": 491.55511, "b": 163.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "organization\u2019s requirements for limiting access to data or separation of duties.", "bbox": {"l": 136.79996, "t": 166.60779000000002, "r": 478.54343000000006, "b": 175.82079999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.82821655273438, "t": 187.98101806640625, "r": 547.25879, "b": 222.3696746826172, "coord_origin": "TOPLEFT"}, "confidence": 0.9839559197425842, "cells": [{"id": 10, "text": "To assist with defining roles and the separation of duties with appropriate authority, IBM i ", "bbox": {"l": 136.79996, "t": 188.62738000000002, "r": 529.83362, "b": 197.84038999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "provides ", "bbox": {"l": 136.79996, "t": 200.62720000000002, "r": 177.20967, "b": 209.84020999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "function usage IDs", "bbox": {"l": 176.75999, "t": 200.10497999999995, "r": 259.01556, "b": 210.16272000000004, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": ". A function usage ID implements granular security controls rather ", "bbox": {"l": 258.84, "t": 200.62872000000004, "r": 547.25879, "b": 209.84173999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "than granting users powerful special authorities, such as all object, job control, or service.", "bbox": {"l": 136.80011, "t": 212.62854000000004, "r": 531.03082, "b": 221.84154999999998, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.2572479248047, "t": 234.0032501220703, "r": 547.31238, "b": 255.86095999999998, "coord_origin": "TOPLEFT"}, "confidence": 0.9627324938774109, "cells": [{"id": 15, "text": "Roles are divided among the following DB2 functions and their corresponding function usage ", "bbox": {"l": 136.80011, "t": 234.64813000000004, "r": 547.31238, "b": 243.86114999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "IDs:", "bbox": {"l": 136.80011, "t": 246.64795000000004, "r": 154.56874, "b": 255.86095999999998, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.83023071289062, "t": 262.2904968261719, "r": 474.0260009765625, "b": 272.84076000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.941753089427948, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.80011, "t": 263.77716, "r": 141.78011, "b": 272.55193999999995, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "DDM and IBM DRDAfi application server access: QIBM_DB_DDMDRDA", "bbox": {"l": 151.20027, "t": 263.62775, "r": 473.7419100000001, "b": 272.84076000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.586669921875, "t": 274.4866943359375, "r": 376.04473876953125, "b": 284.8529357910156, "coord_origin": "TOPLEFT"}, "confidence": 0.9312568306922913, "cells": [{"id": 19, "text": "GLYPH", "bbox": {"l": 136.80013, "t": 275.77698, "r": 141.78012, "b": 284.55176, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Toolbox application server access: QIBM_DB_ZDA", "bbox": {"l": 151.20029, "t": 275.62756, "r": 375.98358, "b": 284.84058, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.70936584472656, "t": 286.37677001953125, "r": 391.564, "b": 296.84039, "coord_origin": "TOPLEFT"}, "confidence": 0.9296406507492065, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.80013, "t": 287.77679, "r": 141.78012, "b": 296.55157, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Database Administrator function: QIBM_DB_SQLADM", "bbox": {"l": 151.20029, "t": 287.62741, "r": 391.564, "b": 296.84039, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.47157287597656, "t": 298.2834167480469, "r": 384.0774841308594, "b": 308.84021, "coord_origin": "TOPLEFT"}, "confidence": 0.9292329549789429, "cells": [{"id": 23, "text": "GLYPH", "bbox": {"l": 136.80013, "t": 299.77661, "r": 141.78012, "b": 308.55139, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Database Information function: QIBM_DB_SYSMON", "bbox": {"l": 151.20029, "t": 299.62723, "r": 383.82812, "b": 308.84021, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 135.6302947998047, "t": 310.25726318359375, "r": 385.5571, "b": 320.94586181640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9514175057411194, "cells": [{"id": 25, "text": "GLYPH", "bbox": {"l": 136.80013, "t": 311.77643, "r": 141.78012, "b": 320.55121, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Security Administrator function: QIBM_DB_SECADM", "bbox": {"l": 151.20029, "t": 311.6270400000001, "r": 385.5571, "b": 320.84003000000007, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "section_header", "bbox": {"l": 63.82975387573242, "t": 340.201904296875, "r": 501.05563, "b": 353.6498718261719, "coord_origin": "TOPLEFT"}, "confidence": 0.9617684483528137, "cells": [{"id": 27, "text": "2.1.1", "bbox": {"l": 64.800003, "t": 341.45474, "r": 93.853226, "b": 353.44272, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "DDM and DRDA application server access: QIBM_DB_DDMDRDA", "bbox": {"l": 97.484901, "t": 341.45474, "r": 501.05563, "b": 353.44272, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 135.88975524902344, "t": 366.2914733886719, "r": 547.22955, "b": 425.1965637207031, "coord_origin": "TOPLEFT"}, "confidence": 0.9872463941574097, "cells": [{"id": 29, "text": "The QIBM_DB_DDMDRDA function usage ID restricts access to the DDM and DRDA ", "bbox": {"l": 136.8, "t": 367.60873, "r": 516.65253, "b": 376.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "application server (QRWTSRVR). This function usage ID provides an easy alternative (rather ", "bbox": {"l": 136.8, "t": 379.60855, "r": 547.22955, "b": 388.82153, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "than writing an exit program) to control access to DDM and DRDA from the server side. The ", "bbox": {"l": 136.79999, "t": 391.60837, "r": 544.2276, "b": 400.82134999999994, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "function usage IDs ship with the default authority of *ALLOWED. The security officer can ", "bbox": {"l": 136.79999, "t": 403.60818000000006, "r": 529.2121, "b": 412.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "easily deny access to specific users or groups.", "bbox": {"l": 136.79999, "t": 415.608, "r": 342.43817, "b": 424.82098, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 135.7061767578125, "t": 436.642578125, "r": 534.94904, "b": 458.91448974609375, "coord_origin": "TOPLEFT"}, "confidence": 0.97740238904953, "cells": [{"id": 34, "text": "This is an alternative to a User Exit Program approach. No coding is required, it is easy to ", "bbox": {"l": 136.79999, "t": 437.62756, "r": 534.94904, "b": 446.84055, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "change, and it is auditable.", "bbox": {"l": 136.79999, "t": 449.62738, "r": 255.25826, "b": 458.84036, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "section_header", "bbox": {"l": 63.88609313964844, "t": 478.24237060546875, "r": 413.2720031738281, "b": 491.4810485839844, "coord_origin": "TOPLEFT"}, "confidence": 0.9616555571556091, "cells": [{"id": 36, "text": "2.1.2", "bbox": {"l": 64.800003, "t": 479.45474, "r": 93.831696, "b": 491.44272, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Toolbox application server access: QIBM_DB_ZDA", "bbox": {"l": 97.46067, "t": 479.45474, "r": 413.01059, "b": 491.44272, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "text", "bbox": {"l": 135.62423706054688, "t": 504.5226135253906, "r": 543.15112, "b": 562.88058, "coord_origin": "TOPLEFT"}, "confidence": 0.985893726348877, "cells": [{"id": 38, "text": "The QIBM_DB_ZDA function usage ID restricts access to the optimized server that handles ", "bbox": {"l": 136.8, "t": 505.60861, "r": 543.15112, "b": 514.82159, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "DB2 requests from clients (QZDASOINIT and QZDASSINIT). Server access is used by the ", "bbox": {"l": 136.8, "t": 517.66818, "r": 539.04858, "b": 526.88116, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ODBC, OLE DB, and .NET providers that ship with IBM i Access for Windows and JDBC ", "bbox": {"l": 136.80005, "t": 529.66797, "r": 529.04962, "b": 538.88098, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Toolbox, Run SQL scripts, and other parts of System i Navigator and Navigator for i Web ", "bbox": {"l": 136.80005, "t": 541.66779, "r": 529.66431, "b": 550.88078, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "console.", "bbox": {"l": 136.80005, "t": 553.66759, "r": 173.81541, "b": 562.88058, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "text", "bbox": {"l": 135.72520446777344, "t": 574.528564453125, "r": 546.20782, "b": 621.1437377929688, "coord_origin": "TOPLEFT"}, "confidence": 0.9876169562339783, "cells": [{"id": 43, "text": "This function usage ID provides an easy alternative (rather than writing an exit program) to ", "bbox": {"l": 136.80005, "t": 575.6274, "r": 538.42694, "b": 584.8403900000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "control access to these functions from the server side. The function usage IDs ship with the ", "bbox": {"l": 136.80005, "t": 587.6272, "r": 542.29028, "b": 596.84019, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "default authority of *ALLOWED. The security officer can easily deny access to specific users ", "bbox": {"l": 136.80005, "t": 599.627, "r": 546.20782, "b": 608.84, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "or groups.", "bbox": {"l": 136.80005, "t": 611.6268, "r": 181.49457, "b": 620.8398, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "text", "bbox": {"l": 135.83445739746094, "t": 632.4659423828125, "r": 534.9491, "b": 654.96728515625, "coord_origin": "TOPLEFT"}, "confidence": 0.979432225227356, "cells": [{"id": 47, "text": "This is an alternative to a User Exit Program approach. No coding is required, it is easy to ", "bbox": {"l": 136.80005, "t": 633.64636, "r": 534.9491, "b": 642.85936, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "change, and it is auditable.", "bbox": {"l": 136.80005, "t": 645.64616, "r": 255.25832000000003, "b": 654.85916, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 23, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.24457550048828, "t": 754.206787109375, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8828381299972534, "cells": [{"id": 0, "text": "8 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "8"}, {"label": "page_footer", "id": 1, "page_no": 23, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 87.8071517944336, "t": 754.697998046875, "r": 328.72537, "b": 763.9702758789062, "coord_origin": "TOPLEFT"}, "confidence": 0.9468024373054504, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 87.840302, "t": 755.538002, "r": 328.72537, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "section_header", "id": 2, "page_no": 23, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.00420379638672, "t": 73.46255493164062, "r": 139.42577, "b": 89.1037, "coord_origin": "TOPLEFT"}, "confidence": 0.9606645107269287, "cells": [{"id": 2, "text": "2.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 88.423279, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Roles", "bbox": {"l": 93.147934, "t": 74.34069999999997, "r": 139.42577, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, "text": "2.1 Roles"}, {"label": "text", "id": 3, "page_no": 23, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.84288024902344, "t": 105.96865844726562, "r": 547.29651, "b": 176.3714599609375, "coord_origin": "TOPLEFT"}, "confidence": 0.987520694732666, "cells": [{"id": 4, "text": "Traditionally, data access roles are defined in a binary way, where access to the data is either ", "bbox": {"l": 136.8, "t": 106.6087, "r": 547.29651, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "not permitted or access to the data is permitted. A full access capability can also be ", "bbox": {"l": 136.8, "t": 118.60852, "r": 508.29009999999994, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "instantiated by the *ALLOBJ special authority, either explicitly or implicitly, for the security ", "bbox": {"l": 136.79999, "t": 130.60834, "r": 531.44403, "b": 139.82135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "officer. If you hold the role of security officer, or have all *ALLOBJ special authority, you have ", "bbox": {"l": 136.79996, "t": 142.60815000000002, "r": 546.6059, "b": 151.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "access to all the data, with no exceptions. Unfortunately, this might not meet the ", "bbox": {"l": 136.79996, "t": 154.60797000000002, "r": 491.55511, "b": 163.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "organization\u2019s requirements for limiting access to data or separation of duties.", "bbox": {"l": 136.79996, "t": 166.60779000000002, "r": 478.54343000000006, "b": 175.82079999999996, "coord_origin": "TOPLEFT"}}]}, "text": "Traditionally, data access roles are defined in a binary way, where access to the data is either not permitted or access to the data is permitted. A full access capability can also be instantiated by the *ALLOBJ special authority, either explicitly or implicitly, for the security officer. If you hold the role of security officer, or have all *ALLOBJ special authority, you have access to all the data, with no exceptions. Unfortunately, this might not meet the organization\u2019s requirements for limiting access to data or separation of duties."}, {"label": "text", "id": 4, "page_no": 23, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.82821655273438, "t": 187.98101806640625, "r": 547.25879, "b": 222.3696746826172, "coord_origin": "TOPLEFT"}, "confidence": 0.9839559197425842, "cells": [{"id": 10, "text": "To assist with defining roles and the separation of duties with appropriate authority, IBM i ", "bbox": {"l": 136.79996, "t": 188.62738000000002, "r": 529.83362, "b": 197.84038999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "provides ", "bbox": {"l": 136.79996, "t": 200.62720000000002, "r": 177.20967, "b": 209.84020999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "function usage IDs", "bbox": {"l": 176.75999, "t": 200.10497999999995, "r": 259.01556, "b": 210.16272000000004, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": ". A function usage ID implements granular security controls rather ", "bbox": {"l": 258.84, "t": 200.62872000000004, "r": 547.25879, "b": 209.84173999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "than granting users powerful special authorities, such as all object, job control, or service.", "bbox": {"l": 136.80011, "t": 212.62854000000004, "r": 531.03082, "b": 221.84154999999998, "coord_origin": "TOPLEFT"}}]}, "text": "To assist with defining roles and the separation of duties with appropriate authority, IBM i provides function usage IDs . A function usage ID implements granular security controls rather than granting users powerful special authorities, such as all object, job control, or service."}, {"label": "text", "id": 5, "page_no": 23, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.2572479248047, "t": 234.0032501220703, "r": 547.31238, "b": 255.86095999999998, "coord_origin": "TOPLEFT"}, "confidence": 0.9627324938774109, "cells": [{"id": 15, "text": "Roles are divided among the following DB2 functions and their corresponding function usage ", "bbox": {"l": 136.80011, "t": 234.64813000000004, "r": 547.31238, "b": 243.86114999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "IDs:", "bbox": {"l": 136.80011, "t": 246.64795000000004, "r": 154.56874, "b": 255.86095999999998, "coord_origin": "TOPLEFT"}}]}, "text": "Roles are divided among the following DB2 functions and their corresponding function usage IDs:"}, {"label": "list_item", "id": 6, "page_no": 23, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.83023071289062, "t": 262.2904968261719, "r": 474.0260009765625, "b": 272.84076000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.941753089427948, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.80011, "t": 263.77716, "r": 141.78011, "b": 272.55193999999995, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "DDM and IBM DRDAfi application server access: QIBM_DB_DDMDRDA", "bbox": {"l": 151.20027, "t": 263.62775, "r": 473.7419100000001, "b": 272.84076000000005, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH DDM and IBM DRDAfi application server access: QIBM_DB_DDMDRDA"}, {"label": "list_item", "id": 7, "page_no": 23, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.586669921875, "t": 274.4866943359375, "r": 376.04473876953125, "b": 284.8529357910156, "coord_origin": "TOPLEFT"}, "confidence": 0.9312568306922913, "cells": [{"id": 19, "text": "GLYPH", "bbox": {"l": 136.80013, "t": 275.77698, "r": 141.78012, "b": 284.55176, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Toolbox application server access: QIBM_DB_ZDA", "bbox": {"l": 151.20029, "t": 275.62756, "r": 375.98358, "b": 284.84058, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Toolbox application server access: QIBM_DB_ZDA"}, {"label": "list_item", "id": 8, "page_no": 23, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.70936584472656, "t": 286.37677001953125, "r": 391.564, "b": 296.84039, "coord_origin": "TOPLEFT"}, "confidence": 0.9296406507492065, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.80013, "t": 287.77679, "r": 141.78012, "b": 296.55157, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Database Administrator function: QIBM_DB_SQLADM", "bbox": {"l": 151.20029, "t": 287.62741, "r": 391.564, "b": 296.84039, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Database Administrator function: QIBM_DB_SQLADM"}, {"label": "list_item", "id": 9, "page_no": 23, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.47157287597656, "t": 298.2834167480469, "r": 384.0774841308594, "b": 308.84021, "coord_origin": "TOPLEFT"}, "confidence": 0.9292329549789429, "cells": [{"id": 23, "text": "GLYPH", "bbox": {"l": 136.80013, "t": 299.77661, "r": 141.78012, "b": 308.55139, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Database Information function: QIBM_DB_SYSMON", "bbox": {"l": 151.20029, "t": 299.62723, "r": 383.82812, "b": 308.84021, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Database Information function: QIBM_DB_SYSMON"}, {"label": "list_item", "id": 10, "page_no": 23, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.6302947998047, "t": 310.25726318359375, "r": 385.5571, "b": 320.94586181640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9514175057411194, "cells": [{"id": 25, "text": "GLYPH", "bbox": {"l": 136.80013, "t": 311.77643, "r": 141.78012, "b": 320.55121, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Security Administrator function: QIBM_DB_SECADM", "bbox": {"l": 151.20029, "t": 311.6270400000001, "r": 385.5571, "b": 320.84003000000007, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Security Administrator function: QIBM_DB_SECADM"}, {"label": "section_header", "id": 11, "page_no": 23, "cluster": {"id": 11, "label": "section_header", "bbox": {"l": 63.82975387573242, "t": 340.201904296875, "r": 501.05563, "b": 353.6498718261719, "coord_origin": "TOPLEFT"}, "confidence": 0.9617684483528137, "cells": [{"id": 27, "text": "2.1.1", "bbox": {"l": 64.800003, "t": 341.45474, "r": 93.853226, "b": 353.44272, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "DDM and DRDA application server access: QIBM_DB_DDMDRDA", "bbox": {"l": 97.484901, "t": 341.45474, "r": 501.05563, "b": 353.44272, "coord_origin": "TOPLEFT"}}]}, "text": "2.1.1 DDM and DRDA application server access: QIBM_DB_DDMDRDA"}, {"label": "text", "id": 12, "page_no": 23, "cluster": {"id": 12, "label": "text", "bbox": {"l": 135.88975524902344, "t": 366.2914733886719, "r": 547.22955, "b": 425.1965637207031, "coord_origin": "TOPLEFT"}, "confidence": 0.9872463941574097, "cells": [{"id": 29, "text": "The QIBM_DB_DDMDRDA function usage ID restricts access to the DDM and DRDA ", "bbox": {"l": 136.8, "t": 367.60873, "r": 516.65253, "b": 376.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "application server (QRWTSRVR). This function usage ID provides an easy alternative (rather ", "bbox": {"l": 136.8, "t": 379.60855, "r": 547.22955, "b": 388.82153, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "than writing an exit program) to control access to DDM and DRDA from the server side. The ", "bbox": {"l": 136.79999, "t": 391.60837, "r": 544.2276, "b": 400.82134999999994, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "function usage IDs ship with the default authority of *ALLOWED. The security officer can ", "bbox": {"l": 136.79999, "t": 403.60818000000006, "r": 529.2121, "b": 412.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "easily deny access to specific users or groups.", "bbox": {"l": 136.79999, "t": 415.608, "r": 342.43817, "b": 424.82098, "coord_origin": "TOPLEFT"}}]}, "text": "The QIBM_DB_DDMDRDA function usage ID restricts access to the DDM and DRDA application server (QRWTSRVR). This function usage ID provides an easy alternative (rather than writing an exit program) to control access to DDM and DRDA from the server side. The function usage IDs ship with the default authority of *ALLOWED. The security officer can easily deny access to specific users or groups."}, {"label": "text", "id": 13, "page_no": 23, "cluster": {"id": 13, "label": "text", "bbox": {"l": 135.7061767578125, "t": 436.642578125, "r": 534.94904, "b": 458.91448974609375, "coord_origin": "TOPLEFT"}, "confidence": 0.97740238904953, "cells": [{"id": 34, "text": "This is an alternative to a User Exit Program approach. No coding is required, it is easy to ", "bbox": {"l": 136.79999, "t": 437.62756, "r": 534.94904, "b": 446.84055, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "change, and it is auditable.", "bbox": {"l": 136.79999, "t": 449.62738, "r": 255.25826, "b": 458.84036, "coord_origin": "TOPLEFT"}}]}, "text": "This is an alternative to a User Exit Program approach. No coding is required, it is easy to change, and it is auditable."}, {"label": "section_header", "id": 14, "page_no": 23, "cluster": {"id": 14, "label": "section_header", "bbox": {"l": 63.88609313964844, "t": 478.24237060546875, "r": 413.2720031738281, "b": 491.4810485839844, "coord_origin": "TOPLEFT"}, "confidence": 0.9616555571556091, "cells": [{"id": 36, "text": "2.1.2", "bbox": {"l": 64.800003, "t": 479.45474, "r": 93.831696, "b": 491.44272, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Toolbox application server access: QIBM_DB_ZDA", "bbox": {"l": 97.46067, "t": 479.45474, "r": 413.01059, "b": 491.44272, "coord_origin": "TOPLEFT"}}]}, "text": "2.1.2 Toolbox application server access: QIBM_DB_ZDA"}, {"label": "text", "id": 15, "page_no": 23, "cluster": {"id": 15, "label": "text", "bbox": {"l": 135.62423706054688, "t": 504.5226135253906, "r": 543.15112, "b": 562.88058, "coord_origin": "TOPLEFT"}, "confidence": 0.985893726348877, "cells": [{"id": 38, "text": "The QIBM_DB_ZDA function usage ID restricts access to the optimized server that handles ", "bbox": {"l": 136.8, "t": 505.60861, "r": 543.15112, "b": 514.82159, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "DB2 requests from clients (QZDASOINIT and QZDASSINIT). Server access is used by the ", "bbox": {"l": 136.8, "t": 517.66818, "r": 539.04858, "b": 526.88116, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ODBC, OLE DB, and .NET providers that ship with IBM i Access for Windows and JDBC ", "bbox": {"l": 136.80005, "t": 529.66797, "r": 529.04962, "b": 538.88098, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Toolbox, Run SQL scripts, and other parts of System i Navigator and Navigator for i Web ", "bbox": {"l": 136.80005, "t": 541.66779, "r": 529.66431, "b": 550.88078, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "console.", "bbox": {"l": 136.80005, "t": 553.66759, "r": 173.81541, "b": 562.88058, "coord_origin": "TOPLEFT"}}]}, "text": "The QIBM_DB_ZDA function usage ID restricts access to the optimized server that handles DB2 requests from clients (QZDASOINIT and QZDASSINIT). Server access is used by the ODBC, OLE DB, and .NET providers that ship with IBM i Access for Windows and JDBC Toolbox, Run SQL scripts, and other parts of System i Navigator and Navigator for i Web console."}, {"label": "text", "id": 16, "page_no": 23, "cluster": {"id": 16, "label": "text", "bbox": {"l": 135.72520446777344, "t": 574.528564453125, "r": 546.20782, "b": 621.1437377929688, "coord_origin": "TOPLEFT"}, "confidence": 0.9876169562339783, "cells": [{"id": 43, "text": "This function usage ID provides an easy alternative (rather than writing an exit program) to ", "bbox": {"l": 136.80005, "t": 575.6274, "r": 538.42694, "b": 584.8403900000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "control access to these functions from the server side. The function usage IDs ship with the ", "bbox": {"l": 136.80005, "t": 587.6272, "r": 542.29028, "b": 596.84019, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "default authority of *ALLOWED. The security officer can easily deny access to specific users ", "bbox": {"l": 136.80005, "t": 599.627, "r": 546.20782, "b": 608.84, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "or groups.", "bbox": {"l": 136.80005, "t": 611.6268, "r": 181.49457, "b": 620.8398, "coord_origin": "TOPLEFT"}}]}, "text": "This function usage ID provides an easy alternative (rather than writing an exit program) to control access to these functions from the server side. The function usage IDs ship with the default authority of *ALLOWED. The security officer can easily deny access to specific users or groups."}, {"label": "text", "id": 17, "page_no": 23, "cluster": {"id": 17, "label": "text", "bbox": {"l": 135.83445739746094, "t": 632.4659423828125, "r": 534.9491, "b": 654.96728515625, "coord_origin": "TOPLEFT"}, "confidence": 0.979432225227356, "cells": [{"id": 47, "text": "This is an alternative to a User Exit Program approach. No coding is required, it is easy to ", "bbox": {"l": 136.80005, "t": 633.64636, "r": 534.9491, "b": 642.85936, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "change, and it is auditable.", "bbox": {"l": 136.80005, "t": 645.64616, "r": 255.25832000000003, "b": 654.85916, "coord_origin": "TOPLEFT"}}]}, "text": "This is an alternative to a User Exit Program approach. No coding is required, it is easy to change, and it is auditable."}], "body": [{"label": "section_header", "id": 2, "page_no": 23, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.00420379638672, "t": 73.46255493164062, "r": 139.42577, "b": 89.1037, "coord_origin": "TOPLEFT"}, "confidence": 0.9606645107269287, "cells": [{"id": 2, "text": "2.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 88.423279, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Roles", "bbox": {"l": 93.147934, "t": 74.34069999999997, "r": 139.42577, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, "text": "2.1 Roles"}, {"label": "text", "id": 3, "page_no": 23, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.84288024902344, "t": 105.96865844726562, "r": 547.29651, "b": 176.3714599609375, "coord_origin": "TOPLEFT"}, "confidence": 0.987520694732666, "cells": [{"id": 4, "text": "Traditionally, data access roles are defined in a binary way, where access to the data is either ", "bbox": {"l": 136.8, "t": 106.6087, "r": 547.29651, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "not permitted or access to the data is permitted. A full access capability can also be ", "bbox": {"l": 136.8, "t": 118.60852, "r": 508.29009999999994, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "instantiated by the *ALLOBJ special authority, either explicitly or implicitly, for the security ", "bbox": {"l": 136.79999, "t": 130.60834, "r": 531.44403, "b": 139.82135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "officer. If you hold the role of security officer, or have all *ALLOBJ special authority, you have ", "bbox": {"l": 136.79996, "t": 142.60815000000002, "r": 546.6059, "b": 151.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "access to all the data, with no exceptions. Unfortunately, this might not meet the ", "bbox": {"l": 136.79996, "t": 154.60797000000002, "r": 491.55511, "b": 163.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "organization\u2019s requirements for limiting access to data or separation of duties.", "bbox": {"l": 136.79996, "t": 166.60779000000002, "r": 478.54343000000006, "b": 175.82079999999996, "coord_origin": "TOPLEFT"}}]}, "text": "Traditionally, data access roles are defined in a binary way, where access to the data is either not permitted or access to the data is permitted. A full access capability can also be instantiated by the *ALLOBJ special authority, either explicitly or implicitly, for the security officer. If you hold the role of security officer, or have all *ALLOBJ special authority, you have access to all the data, with no exceptions. Unfortunately, this might not meet the organization\u2019s requirements for limiting access to data or separation of duties."}, {"label": "text", "id": 4, "page_no": 23, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.82821655273438, "t": 187.98101806640625, "r": 547.25879, "b": 222.3696746826172, "coord_origin": "TOPLEFT"}, "confidence": 0.9839559197425842, "cells": [{"id": 10, "text": "To assist with defining roles and the separation of duties with appropriate authority, IBM i ", "bbox": {"l": 136.79996, "t": 188.62738000000002, "r": 529.83362, "b": 197.84038999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "provides ", "bbox": {"l": 136.79996, "t": 200.62720000000002, "r": 177.20967, "b": 209.84020999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "function usage IDs", "bbox": {"l": 176.75999, "t": 200.10497999999995, "r": 259.01556, "b": 210.16272000000004, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": ". A function usage ID implements granular security controls rather ", "bbox": {"l": 258.84, "t": 200.62872000000004, "r": 547.25879, "b": 209.84173999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "than granting users powerful special authorities, such as all object, job control, or service.", "bbox": {"l": 136.80011, "t": 212.62854000000004, "r": 531.03082, "b": 221.84154999999998, "coord_origin": "TOPLEFT"}}]}, "text": "To assist with defining roles and the separation of duties with appropriate authority, IBM i provides function usage IDs . A function usage ID implements granular security controls rather than granting users powerful special authorities, such as all object, job control, or service."}, {"label": "text", "id": 5, "page_no": 23, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.2572479248047, "t": 234.0032501220703, "r": 547.31238, "b": 255.86095999999998, "coord_origin": "TOPLEFT"}, "confidence": 0.9627324938774109, "cells": [{"id": 15, "text": "Roles are divided among the following DB2 functions and their corresponding function usage ", "bbox": {"l": 136.80011, "t": 234.64813000000004, "r": 547.31238, "b": 243.86114999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "IDs:", "bbox": {"l": 136.80011, "t": 246.64795000000004, "r": 154.56874, "b": 255.86095999999998, "coord_origin": "TOPLEFT"}}]}, "text": "Roles are divided among the following DB2 functions and their corresponding function usage IDs:"}, {"label": "list_item", "id": 6, "page_no": 23, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.83023071289062, "t": 262.2904968261719, "r": 474.0260009765625, "b": 272.84076000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.941753089427948, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.80011, "t": 263.77716, "r": 141.78011, "b": 272.55193999999995, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "DDM and IBM DRDAfi application server access: QIBM_DB_DDMDRDA", "bbox": {"l": 151.20027, "t": 263.62775, "r": 473.7419100000001, "b": 272.84076000000005, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH DDM and IBM DRDAfi application server access: QIBM_DB_DDMDRDA"}, {"label": "list_item", "id": 7, "page_no": 23, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.586669921875, "t": 274.4866943359375, "r": 376.04473876953125, "b": 284.8529357910156, "coord_origin": "TOPLEFT"}, "confidence": 0.9312568306922913, "cells": [{"id": 19, "text": "GLYPH", "bbox": {"l": 136.80013, "t": 275.77698, "r": 141.78012, "b": 284.55176, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Toolbox application server access: QIBM_DB_ZDA", "bbox": {"l": 151.20029, "t": 275.62756, "r": 375.98358, "b": 284.84058, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Toolbox application server access: QIBM_DB_ZDA"}, {"label": "list_item", "id": 8, "page_no": 23, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.70936584472656, "t": 286.37677001953125, "r": 391.564, "b": 296.84039, "coord_origin": "TOPLEFT"}, "confidence": 0.9296406507492065, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.80013, "t": 287.77679, "r": 141.78012, "b": 296.55157, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Database Administrator function: QIBM_DB_SQLADM", "bbox": {"l": 151.20029, "t": 287.62741, "r": 391.564, "b": 296.84039, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Database Administrator function: QIBM_DB_SQLADM"}, {"label": "list_item", "id": 9, "page_no": 23, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.47157287597656, "t": 298.2834167480469, "r": 384.0774841308594, "b": 308.84021, "coord_origin": "TOPLEFT"}, "confidence": 0.9292329549789429, "cells": [{"id": 23, "text": "GLYPH", "bbox": {"l": 136.80013, "t": 299.77661, "r": 141.78012, "b": 308.55139, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Database Information function: QIBM_DB_SYSMON", "bbox": {"l": 151.20029, "t": 299.62723, "r": 383.82812, "b": 308.84021, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Database Information function: QIBM_DB_SYSMON"}, {"label": "list_item", "id": 10, "page_no": 23, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.6302947998047, "t": 310.25726318359375, "r": 385.5571, "b": 320.94586181640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9514175057411194, "cells": [{"id": 25, "text": "GLYPH", "bbox": {"l": 136.80013, "t": 311.77643, "r": 141.78012, "b": 320.55121, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Security Administrator function: QIBM_DB_SECADM", "bbox": {"l": 151.20029, "t": 311.6270400000001, "r": 385.5571, "b": 320.84003000000007, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Security Administrator function: QIBM_DB_SECADM"}, {"label": "section_header", "id": 11, "page_no": 23, "cluster": {"id": 11, "label": "section_header", "bbox": {"l": 63.82975387573242, "t": 340.201904296875, "r": 501.05563, "b": 353.6498718261719, "coord_origin": "TOPLEFT"}, "confidence": 0.9617684483528137, "cells": [{"id": 27, "text": "2.1.1", "bbox": {"l": 64.800003, "t": 341.45474, "r": 93.853226, "b": 353.44272, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "DDM and DRDA application server access: QIBM_DB_DDMDRDA", "bbox": {"l": 97.484901, "t": 341.45474, "r": 501.05563, "b": 353.44272, "coord_origin": "TOPLEFT"}}]}, "text": "2.1.1 DDM and DRDA application server access: QIBM_DB_DDMDRDA"}, {"label": "text", "id": 12, "page_no": 23, "cluster": {"id": 12, "label": "text", "bbox": {"l": 135.88975524902344, "t": 366.2914733886719, "r": 547.22955, "b": 425.1965637207031, "coord_origin": "TOPLEFT"}, "confidence": 0.9872463941574097, "cells": [{"id": 29, "text": "The QIBM_DB_DDMDRDA function usage ID restricts access to the DDM and DRDA ", "bbox": {"l": 136.8, "t": 367.60873, "r": 516.65253, "b": 376.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "application server (QRWTSRVR). This function usage ID provides an easy alternative (rather ", "bbox": {"l": 136.8, "t": 379.60855, "r": 547.22955, "b": 388.82153, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "than writing an exit program) to control access to DDM and DRDA from the server side. The ", "bbox": {"l": 136.79999, "t": 391.60837, "r": 544.2276, "b": 400.82134999999994, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "function usage IDs ship with the default authority of *ALLOWED. The security officer can ", "bbox": {"l": 136.79999, "t": 403.60818000000006, "r": 529.2121, "b": 412.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "easily deny access to specific users or groups.", "bbox": {"l": 136.79999, "t": 415.608, "r": 342.43817, "b": 424.82098, "coord_origin": "TOPLEFT"}}]}, "text": "The QIBM_DB_DDMDRDA function usage ID restricts access to the DDM and DRDA application server (QRWTSRVR). This function usage ID provides an easy alternative (rather than writing an exit program) to control access to DDM and DRDA from the server side. The function usage IDs ship with the default authority of *ALLOWED. The security officer can easily deny access to specific users or groups."}, {"label": "text", "id": 13, "page_no": 23, "cluster": {"id": 13, "label": "text", "bbox": {"l": 135.7061767578125, "t": 436.642578125, "r": 534.94904, "b": 458.91448974609375, "coord_origin": "TOPLEFT"}, "confidence": 0.97740238904953, "cells": [{"id": 34, "text": "This is an alternative to a User Exit Program approach. No coding is required, it is easy to ", "bbox": {"l": 136.79999, "t": 437.62756, "r": 534.94904, "b": 446.84055, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "change, and it is auditable.", "bbox": {"l": 136.79999, "t": 449.62738, "r": 255.25826, "b": 458.84036, "coord_origin": "TOPLEFT"}}]}, "text": "This is an alternative to a User Exit Program approach. No coding is required, it is easy to change, and it is auditable."}, {"label": "section_header", "id": 14, "page_no": 23, "cluster": {"id": 14, "label": "section_header", "bbox": {"l": 63.88609313964844, "t": 478.24237060546875, "r": 413.2720031738281, "b": 491.4810485839844, "coord_origin": "TOPLEFT"}, "confidence": 0.9616555571556091, "cells": [{"id": 36, "text": "2.1.2", "bbox": {"l": 64.800003, "t": 479.45474, "r": 93.831696, "b": 491.44272, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Toolbox application server access: QIBM_DB_ZDA", "bbox": {"l": 97.46067, "t": 479.45474, "r": 413.01059, "b": 491.44272, "coord_origin": "TOPLEFT"}}]}, "text": "2.1.2 Toolbox application server access: QIBM_DB_ZDA"}, {"label": "text", "id": 15, "page_no": 23, "cluster": {"id": 15, "label": "text", "bbox": {"l": 135.62423706054688, "t": 504.5226135253906, "r": 543.15112, "b": 562.88058, "coord_origin": "TOPLEFT"}, "confidence": 0.985893726348877, "cells": [{"id": 38, "text": "The QIBM_DB_ZDA function usage ID restricts access to the optimized server that handles ", "bbox": {"l": 136.8, "t": 505.60861, "r": 543.15112, "b": 514.82159, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "DB2 requests from clients (QZDASOINIT and QZDASSINIT). Server access is used by the ", "bbox": {"l": 136.8, "t": 517.66818, "r": 539.04858, "b": 526.88116, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ODBC, OLE DB, and .NET providers that ship with IBM i Access for Windows and JDBC ", "bbox": {"l": 136.80005, "t": 529.66797, "r": 529.04962, "b": 538.88098, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Toolbox, Run SQL scripts, and other parts of System i Navigator and Navigator for i Web ", "bbox": {"l": 136.80005, "t": 541.66779, "r": 529.66431, "b": 550.88078, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "console.", "bbox": {"l": 136.80005, "t": 553.66759, "r": 173.81541, "b": 562.88058, "coord_origin": "TOPLEFT"}}]}, "text": "The QIBM_DB_ZDA function usage ID restricts access to the optimized server that handles DB2 requests from clients (QZDASOINIT and QZDASSINIT). Server access is used by the ODBC, OLE DB, and .NET providers that ship with IBM i Access for Windows and JDBC Toolbox, Run SQL scripts, and other parts of System i Navigator and Navigator for i Web console."}, {"label": "text", "id": 16, "page_no": 23, "cluster": {"id": 16, "label": "text", "bbox": {"l": 135.72520446777344, "t": 574.528564453125, "r": 546.20782, "b": 621.1437377929688, "coord_origin": "TOPLEFT"}, "confidence": 0.9876169562339783, "cells": [{"id": 43, "text": "This function usage ID provides an easy alternative (rather than writing an exit program) to ", "bbox": {"l": 136.80005, "t": 575.6274, "r": 538.42694, "b": 584.8403900000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "control access to these functions from the server side. The function usage IDs ship with the ", "bbox": {"l": 136.80005, "t": 587.6272, "r": 542.29028, "b": 596.84019, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "default authority of *ALLOWED. The security officer can easily deny access to specific users ", "bbox": {"l": 136.80005, "t": 599.627, "r": 546.20782, "b": 608.84, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "or groups.", "bbox": {"l": 136.80005, "t": 611.6268, "r": 181.49457, "b": 620.8398, "coord_origin": "TOPLEFT"}}]}, "text": "This function usage ID provides an easy alternative (rather than writing an exit program) to control access to these functions from the server side. The function usage IDs ship with the default authority of *ALLOWED. The security officer can easily deny access to specific users or groups."}, {"label": "text", "id": 17, "page_no": 23, "cluster": {"id": 17, "label": "text", "bbox": {"l": 135.83445739746094, "t": 632.4659423828125, "r": 534.9491, "b": 654.96728515625, "coord_origin": "TOPLEFT"}, "confidence": 0.979432225227356, "cells": [{"id": 47, "text": "This is an alternative to a User Exit Program approach. No coding is required, it is easy to ", "bbox": {"l": 136.80005, "t": 633.64636, "r": 534.9491, "b": 642.85936, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "change, and it is auditable.", "bbox": {"l": 136.80005, "t": 645.64616, "r": 255.25832000000003, "b": 654.85916, "coord_origin": "TOPLEFT"}}]}, "text": "This is an alternative to a User Exit Program approach. No coding is required, it is easy to change, and it is auditable."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 23, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.24457550048828, "t": 754.206787109375, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8828381299972534, "cells": [{"id": 0, "text": "8 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "8"}, {"label": "page_footer", "id": 1, "page_no": 23, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 87.8071517944336, "t": 754.697998046875, "r": 328.72537, "b": 763.9702758789062, "coord_origin": "TOPLEFT"}, "confidence": 0.9468024373054504, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 87.840302, "t": 755.538002, "r": 328.72537, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 24, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 2. Roles and separation of duties ", "bbox": {"l": 360.89999, "t": 755.538002, "r": 529.1568, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "9", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "2.1.3", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 93.963196, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Database Administrator function: QIBM_DB_SQLADM", "bbox": {"l": 97.608582, "t": 71.33471999999995, "r": 433.47052, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "The Database Administrator function (QIBM_DB_SQLADM) is needed whenever a user is ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 536.12036, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "analyzing and viewing SQL performance data. Some of the more common database ", "bbox": {"l": 136.79999, "t": 109.48852999999997, "r": 511.064, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "administrator functions include displaying statements from the SQL Plan Cache, analyzing ", "bbox": {"l": 136.79999, "t": 121.48834000000011, "r": 537.42419, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "SQL Performance Monitors and SQL Plan Cache Snapshots, and displaying the SQL details ", "bbox": {"l": 136.79999, "t": 133.48816, "r": 547.01843, "b": 142.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "of a job other than your own.", "bbox": {"l": 136.79999, "t": 145.48798, "r": 263.15955, "b": 154.70099000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "The Database Administrator function provides an alternative to granting *JOBCTL, but simply ", "bbox": {"l": 136.79999, "t": 167.50757, "r": 547.32452, "b": 176.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "having the Database Administrator authorization does not carry with it all the needed object ", "bbox": {"l": 136.79999, "t": 179.50739, "r": 542.60645, "b": 188.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "authorities for every administration task. The default behavior is to deny authorization.", "bbox": {"l": 136.79999, "t": 191.5072, "r": 514.72595, "b": 200.72020999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "To perform database administrator tasks that are not related to performance analysis, you ", "bbox": {"l": 136.79999, "t": 213.52679, "r": 534.5368, "b": 222.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "must refer to the details of the task to determine its specific authorization requirements. For ", "bbox": {"l": 136.79999, "t": 225.52661, "r": 541.29852, "b": 234.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "example, to allow a database administrator to reorganize a table, the DBA must have ", "bbox": {"l": 136.79999, "t": 237.52643, "r": 513.49414, "b": 246.73943999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "additional object authorities to the table that are not covered by QIBM_DB_SQLADM.", "bbox": {"l": 136.79999, "t": 249.52625, "r": 512.87775, "b": 258.73925999999994, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Granting QIBM_DB_SQLADM function usage", "bbox": {"l": 136.8, "t": 275.36401, "r": 392.7084, "b": 286.46402, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Only the security administrator (*SECADM) is allowed to change the list of users that can ", "bbox": {"l": 136.8, "t": 290.50872999999996, "r": 532.06573, "b": 299.72171, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "perform Database Administration functions.", "bbox": {"l": 136.8, "t": 302.50854, "r": 328.11267, "b": 311.72153, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "2.1.4", "bbox": {"l": 64.800003, "t": 332.33475, "r": 93.95005, "b": 344.32272, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Database Information function: QIBM_DB_SYSMON", "bbox": {"l": 97.593788, "t": 332.33475, "r": 419.47638, "b": 344.32272, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "The Database Information function (QIBM_DB_SYSMON) provides much less authority than ", "bbox": {"l": 136.8, "t": 358.48874, "r": 547.19281, "b": 367.70172, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Database Administrator function. Its primary use allows a user to examine high-level ", "bbox": {"l": 136.8, "t": 370.48856, "r": 510.57599000000005, "b": 379.70154, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "database properties.", "bbox": {"l": 136.8, "t": 382.48837000000003, "r": 228.09435000000002, "b": 391.70135, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "For example, a user that does not have *JOBCTL or QIBM_DB_SQLADM can still view the ", "bbox": {"l": 136.8, "t": 404.50793, "r": 539.83136, "b": 413.72092, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "SQL Plan Cache properties if granted authority to QIBM_DB_SYSMON. Without granting this ", "bbox": {"l": 136.8, "t": 416.50775, "r": 547.29944, "b": 425.72073, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "authority, the default behavior is to deny authorization.", "bbox": {"l": 136.8, "t": 428.50757, "r": 375.51733, "b": 437.72055, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Granting QIBM_DB_SYSMON function usage", "bbox": {"l": 136.8, "t": 454.40398999999996, "r": 392.7384, "b": 465.504, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Only the security administrator (*SECADM) is allowed to change the list of users that can ", "bbox": {"l": 136.8, "t": 469.48874, "r": 532.06573, "b": 478.70172, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "perform Database Information functions.", "bbox": {"l": 136.8, "t": 481.54831, "r": 314.88379, "b": 490.76129, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "2.1.5", "bbox": {"l": 64.800003, "t": 511.37463, "r": 93.974159, "b": 523.36261, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Security Administrator function: QIBM_DB_SECADM", "bbox": {"l": 97.620941, "t": 511.37463, "r": 427.05014, "b": 523.36261, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "The Security Administrator function (QIBM_DB_SECADM) grants authorities, revokes ", "bbox": {"l": 136.8, "t": 537.52863, "r": 516.96027, "b": 546.74162, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "authorities, changes ownership, or changes the primary group without giving access to the ", "bbox": {"l": 136.8, "t": 549.52843, "r": 538.33221, "b": 558.7414200000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "object or, in the case of a database table, to the data that is in the table or allowing other ", "bbox": {"l": 136.8, "t": 561.52823, "r": 528.31073, "b": 570.74123, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "operations on the table. ", "bbox": {"l": 136.8, "t": 573.52803, "r": 243.62096, "b": 582.74103, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Only those users with the QIBM_DB_SECADM function can administer and manage RCAC ", "bbox": {"l": 136.8, "t": 595.54759, "r": 542.62207, "b": 604.76059, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "rules. RCAC can be used to prevent even users with *ALLOBJ authority from freely accessing ", "bbox": {"l": 136.8, "t": 607.54739, "r": 547.22571, "b": 616.76039, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "all the data in a protected database. These users are excluded from data access unless they ", "bbox": {"l": 136.8, "t": 619.5472, "r": 547.27551, "b": 628.76019, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "are specifically authorized by RCAC. Without granting this authority, the default behavior is to ", "bbox": {"l": 136.8, "t": 631.547, "r": 547.28961, "b": 640.75999, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "deny authorization.", "bbox": {"l": 136.8, "t": 643.5468, "r": 221.19012, "b": 652.7598, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Granting QIBM_DB_SECADM function usage", "bbox": {"l": 136.8, "t": 669.3839, "r": 392.72162, "b": 680.4839, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Only QSECOFR or a user with *SECADM special authority can grant the ", "bbox": {"l": 136.8, "t": 684.52872, "r": 460.46808000000004, "b": 693.741722, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "QIBM_DB_SECADM function usage to a user or group.", "bbox": {"l": 136.8, "t": 696.528526, "r": 381.91754, "b": 705.741531, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 360.4371643066406, "t": 754.883544921875, "r": 529.1568, "b": 764.1151123046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9521506428718567, "cells": [{"id": 0, "text": "Chapter 2. Roles and separation of duties ", "bbox": {"l": 360.89999, "t": 755.538002, "r": 529.1568, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 540.8857421875, "t": 754.3031616210938, "r": 547.2386474609375, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8864408731460571, "cells": [{"id": 1, "text": "9", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.0216293334961, "t": 70.4687728881836, "r": 433.47052, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9597232341766357, "cells": [{"id": 2, "text": "2.1.3", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 93.963196, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Database Administrator function: QIBM_DB_SQLADM", "bbox": {"l": 97.608582, "t": 71.33471999999995, "r": 433.47052, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.77142333984375, "t": 96.74668884277344, "r": 547.01843, "b": 155.3083038330078, "coord_origin": "TOPLEFT"}, "confidence": 0.9876309037208557, "cells": [{"id": 4, "text": "The Database Administrator function (QIBM_DB_SQLADM) is needed whenever a user is ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 536.12036, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "analyzing and viewing SQL performance data. Some of the more common database ", "bbox": {"l": 136.79999, "t": 109.48852999999997, "r": 511.064, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "administrator functions include displaying statements from the SQL Plan Cache, analyzing ", "bbox": {"l": 136.79999, "t": 121.48834000000011, "r": 537.42419, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "SQL Performance Monitors and SQL Plan Cache Snapshots, and displaying the SQL details ", "bbox": {"l": 136.79999, "t": 133.48816, "r": 547.01843, "b": 142.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "of a job other than your own.", "bbox": {"l": 136.79999, "t": 145.48798, "r": 263.15955, "b": 154.70099000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.78330993652344, "t": 166.6936798095703, "r": 547.32452, "b": 200.90953063964844, "coord_origin": "TOPLEFT"}, "confidence": 0.9852434396743774, "cells": [{"id": 9, "text": "The Database Administrator function provides an alternative to granting *JOBCTL, but simply ", "bbox": {"l": 136.79999, "t": 167.50757, "r": 547.32452, "b": 176.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "having the Database Administrator authorization does not carry with it all the needed object ", "bbox": {"l": 136.79999, "t": 179.50739, "r": 542.60645, "b": 188.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "authorities for every administration task. The default behavior is to deny authorization.", "bbox": {"l": 136.79999, "t": 191.5072, "r": 514.72595, "b": 200.72020999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.86964416503906, "t": 212.85244750976562, "r": 541.29852, "b": 259.014404296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9871625304222107, "cells": [{"id": 12, "text": "To perform database administrator tasks that are not related to performance analysis, you ", "bbox": {"l": 136.79999, "t": 213.52679, "r": 534.5368, "b": 222.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "must refer to the details of the task to determine its specific authorization requirements. For ", "bbox": {"l": 136.79999, "t": 225.52661, "r": 541.29852, "b": 234.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "example, to allow a database administrator to reorganize a table, the DBA must have ", "bbox": {"l": 136.79999, "t": 237.52643, "r": 513.49414, "b": 246.73943999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "additional object authorities to the table that are not covered by QIBM_DB_SQLADM.", "bbox": {"l": 136.79999, "t": 249.52625, "r": 512.87775, "b": 258.73925999999994, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "section_header", "bbox": {"l": 136.13877868652344, "t": 274.4320068359375, "r": 392.7084, "b": 286.46402, "coord_origin": "TOPLEFT"}, "confidence": 0.9447333812713623, "cells": [{"id": 16, "text": "Granting QIBM_DB_SQLADM function usage", "bbox": {"l": 136.8, "t": 275.36401, "r": 392.7084, "b": 286.46402, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 136.1097412109375, "t": 289.3403625488281, "r": 532.06573, "b": 311.72153, "coord_origin": "TOPLEFT"}, "confidence": 0.9686275124549866, "cells": [{"id": 17, "text": "Only the security administrator (*SECADM) is allowed to change the list of users that can ", "bbox": {"l": 136.8, "t": 290.50872999999996, "r": 532.06573, "b": 299.72171, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "perform Database Administration functions.", "bbox": {"l": 136.8, "t": 302.50854, "r": 328.11267, "b": 311.72153, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "section_header", "bbox": {"l": 64.01083374023438, "t": 331.09979248046875, "r": 419.47638, "b": 344.32272, "coord_origin": "TOPLEFT"}, "confidence": 0.9618946313858032, "cells": [{"id": 19, "text": "2.1.4", "bbox": {"l": 64.800003, "t": 332.33475, "r": 93.95005, "b": 344.32272, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Database Information function: QIBM_DB_SYSMON", "bbox": {"l": 97.593788, "t": 332.33475, "r": 419.47638, "b": 344.32272, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 135.8494873046875, "t": 357.3560485839844, "r": 547.19281, "b": 391.70135, "coord_origin": "TOPLEFT"}, "confidence": 0.9852011203765869, "cells": [{"id": 21, "text": "The Database Information function (QIBM_DB_SYSMON) provides much less authority than ", "bbox": {"l": 136.8, "t": 358.48874, "r": 547.19281, "b": 367.70172, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Database Administrator function. Its primary use allows a user to examine high-level ", "bbox": {"l": 136.8, "t": 370.48856, "r": 510.57599000000005, "b": 379.70154, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "database properties.", "bbox": {"l": 136.8, "t": 382.48837000000003, "r": 228.09435000000002, "b": 391.70135, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 136.19979858398438, "t": 403.33209228515625, "r": 547.29944, "b": 437.72055, "coord_origin": "TOPLEFT"}, "confidence": 0.9853191375732422, "cells": [{"id": 24, "text": "For example, a user that does not have *JOBCTL or QIBM_DB_SQLADM can still view the ", "bbox": {"l": 136.8, "t": 404.50793, "r": 539.83136, "b": 413.72092, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "SQL Plan Cache properties if granted authority to QIBM_DB_SYSMON. Without granting this ", "bbox": {"l": 136.8, "t": 416.50775, "r": 547.29944, "b": 425.72073, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "authority, the default behavior is to deny authorization.", "bbox": {"l": 136.8, "t": 428.50757, "r": 375.51733, "b": 437.72055, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "section_header", "bbox": {"l": 136.31793212890625, "t": 453.60760498046875, "r": 392.7384, "b": 465.75146484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9519172310829163, "cells": [{"id": 27, "text": "Granting QIBM_DB_SYSMON function usage", "bbox": {"l": 136.8, "t": 454.40398999999996, "r": 392.7384, "b": 465.504, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 136.06344604492188, "t": 468.69525146484375, "r": 532.06573, "b": 490.76129, "coord_origin": "TOPLEFT"}, "confidence": 0.9695555567741394, "cells": [{"id": 28, "text": "Only the security administrator (*SECADM) is allowed to change the list of users that can ", "bbox": {"l": 136.8, "t": 469.48874, "r": 532.06573, "b": 478.70172, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "perform Database Information functions.", "bbox": {"l": 136.8, "t": 481.54831, "r": 314.88379, "b": 490.76129, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "section_header", "bbox": {"l": 64.14019775390625, "t": 510.3857727050781, "r": 427.05014, "b": 523.36261, "coord_origin": "TOPLEFT"}, "confidence": 0.960561215877533, "cells": [{"id": 30, "text": "2.1.5", "bbox": {"l": 64.800003, "t": 511.37463, "r": 93.974159, "b": 523.36261, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Security Administrator function: QIBM_DB_SECADM", "bbox": {"l": 97.620941, "t": 511.37463, "r": 427.05014, "b": 523.36261, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "text", "bbox": {"l": 135.73634338378906, "t": 536.6364135742188, "r": 538.33221, "b": 582.74103, "coord_origin": "TOPLEFT"}, "confidence": 0.9864837527275085, "cells": [{"id": 32, "text": "The Security Administrator function (QIBM_DB_SECADM) grants authorities, revokes ", "bbox": {"l": 136.8, "t": 537.52863, "r": 516.96027, "b": 546.74162, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "authorities, changes ownership, or changes the primary group without giving access to the ", "bbox": {"l": 136.8, "t": 549.52843, "r": 538.33221, "b": 558.7414200000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "object or, in the case of a database table, to the data that is in the table or allowing other ", "bbox": {"l": 136.8, "t": 561.52823, "r": 528.31073, "b": 570.74123, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "operations on the table. ", "bbox": {"l": 136.8, "t": 573.52803, "r": 243.62096, "b": 582.74103, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "text", "bbox": {"l": 135.88818359375, "t": 594.3782348632812, "r": 547.28961, "b": 652.959716796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9881628155708313, "cells": [{"id": 36, "text": "Only those users with the QIBM_DB_SECADM function can administer and manage RCAC ", "bbox": {"l": 136.8, "t": 595.54759, "r": 542.62207, "b": 604.76059, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "rules. RCAC can be used to prevent even users with *ALLOBJ authority from freely accessing ", "bbox": {"l": 136.8, "t": 607.54739, "r": 547.22571, "b": 616.76039, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "all the data in a protected database. These users are excluded from data access unless they ", "bbox": {"l": 136.8, "t": 619.5472, "r": 547.27551, "b": 628.76019, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "are specifically authorized by RCAC. Without granting this authority, the default behavior is to ", "bbox": {"l": 136.8, "t": 631.547, "r": 547.28961, "b": 640.75999, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "deny authorization.", "bbox": {"l": 136.8, "t": 643.5468, "r": 221.19012, "b": 652.7598, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "section_header", "bbox": {"l": 136.17408752441406, "t": 668.4557495117188, "r": 392.72162, "b": 680.6693725585938, "coord_origin": "TOPLEFT"}, "confidence": 0.9459793567657471, "cells": [{"id": 41, "text": "Granting QIBM_DB_SECADM function usage", "bbox": {"l": 136.8, "t": 669.3839, "r": 392.72162, "b": 680.4839, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "text", "bbox": {"l": 136.1047821044922, "t": 683.893798828125, "r": 460.46808000000004, "b": 706.3756103515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9628692269325256, "cells": [{"id": 42, "text": "Only QSECOFR or a user with *SECADM special authority can grant the ", "bbox": {"l": 136.8, "t": 684.52872, "r": 460.46808000000004, "b": 693.741722, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "QIBM_DB_SECADM function usage to a user or group.", "bbox": {"l": 136.8, "t": 696.528526, "r": 381.91754, "b": 705.741531, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 24, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 360.4371643066406, "t": 754.883544921875, "r": 529.1568, "b": 764.1151123046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9521506428718567, "cells": [{"id": 0, "text": "Chapter 2. Roles and separation of duties ", "bbox": {"l": 360.89999, "t": 755.538002, "r": 529.1568, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 2. Roles and separation of duties"}, {"label": "page_footer", "id": 1, "page_no": 24, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 540.8857421875, "t": 754.3031616210938, "r": 547.2386474609375, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8864408731460571, "cells": [{"id": 1, "text": "9", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "9"}, {"label": "section_header", "id": 2, "page_no": 24, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.0216293334961, "t": 70.4687728881836, "r": 433.47052, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9597232341766357, "cells": [{"id": 2, "text": "2.1.3", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 93.963196, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Database Administrator function: QIBM_DB_SQLADM", "bbox": {"l": 97.608582, "t": 71.33471999999995, "r": 433.47052, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "2.1.3 Database Administrator function: QIBM_DB_SQLADM"}, {"label": "text", "id": 3, "page_no": 24, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.77142333984375, "t": 96.74668884277344, "r": 547.01843, "b": 155.3083038330078, "coord_origin": "TOPLEFT"}, "confidence": 0.9876309037208557, "cells": [{"id": 4, "text": "The Database Administrator function (QIBM_DB_SQLADM) is needed whenever a user is ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 536.12036, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "analyzing and viewing SQL performance data. Some of the more common database ", "bbox": {"l": 136.79999, "t": 109.48852999999997, "r": 511.064, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "administrator functions include displaying statements from the SQL Plan Cache, analyzing ", "bbox": {"l": 136.79999, "t": 121.48834000000011, "r": 537.42419, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "SQL Performance Monitors and SQL Plan Cache Snapshots, and displaying the SQL details ", "bbox": {"l": 136.79999, "t": 133.48816, "r": 547.01843, "b": 142.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "of a job other than your own.", "bbox": {"l": 136.79999, "t": 145.48798, "r": 263.15955, "b": 154.70099000000005, "coord_origin": "TOPLEFT"}}]}, "text": "The Database Administrator function (QIBM_DB_SQLADM) is needed whenever a user is analyzing and viewing SQL performance data. Some of the more common database administrator functions include displaying statements from the SQL Plan Cache, analyzing SQL Performance Monitors and SQL Plan Cache Snapshots, and displaying the SQL details of a job other than your own."}, {"label": "text", "id": 4, "page_no": 24, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.78330993652344, "t": 166.6936798095703, "r": 547.32452, "b": 200.90953063964844, "coord_origin": "TOPLEFT"}, "confidence": 0.9852434396743774, "cells": [{"id": 9, "text": "The Database Administrator function provides an alternative to granting *JOBCTL, but simply ", "bbox": {"l": 136.79999, "t": 167.50757, "r": 547.32452, "b": 176.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "having the Database Administrator authorization does not carry with it all the needed object ", "bbox": {"l": 136.79999, "t": 179.50739, "r": 542.60645, "b": 188.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "authorities for every administration task. The default behavior is to deny authorization.", "bbox": {"l": 136.79999, "t": 191.5072, "r": 514.72595, "b": 200.72020999999995, "coord_origin": "TOPLEFT"}}]}, "text": "The Database Administrator function provides an alternative to granting *JOBCTL, but simply having the Database Administrator authorization does not carry with it all the needed object authorities for every administration task. The default behavior is to deny authorization."}, {"label": "text", "id": 5, "page_no": 24, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.86964416503906, "t": 212.85244750976562, "r": 541.29852, "b": 259.014404296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9871625304222107, "cells": [{"id": 12, "text": "To perform database administrator tasks that are not related to performance analysis, you ", "bbox": {"l": 136.79999, "t": 213.52679, "r": 534.5368, "b": 222.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "must refer to the details of the task to determine its specific authorization requirements. For ", "bbox": {"l": 136.79999, "t": 225.52661, "r": 541.29852, "b": 234.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "example, to allow a database administrator to reorganize a table, the DBA must have ", "bbox": {"l": 136.79999, "t": 237.52643, "r": 513.49414, "b": 246.73943999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "additional object authorities to the table that are not covered by QIBM_DB_SQLADM.", "bbox": {"l": 136.79999, "t": 249.52625, "r": 512.87775, "b": 258.73925999999994, "coord_origin": "TOPLEFT"}}]}, "text": "To perform database administrator tasks that are not related to performance analysis, you must refer to the details of the task to determine its specific authorization requirements. For example, to allow a database administrator to reorganize a table, the DBA must have additional object authorities to the table that are not covered by QIBM_DB_SQLADM."}, {"label": "section_header", "id": 6, "page_no": 24, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 136.13877868652344, "t": 274.4320068359375, "r": 392.7084, "b": 286.46402, "coord_origin": "TOPLEFT"}, "confidence": 0.9447333812713623, "cells": [{"id": 16, "text": "Granting QIBM_DB_SQLADM function usage", "bbox": {"l": 136.8, "t": 275.36401, "r": 392.7084, "b": 286.46402, "coord_origin": "TOPLEFT"}}]}, "text": "Granting QIBM_DB_SQLADM function usage"}, {"label": "text", "id": 7, "page_no": 24, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.1097412109375, "t": 289.3403625488281, "r": 532.06573, "b": 311.72153, "coord_origin": "TOPLEFT"}, "confidence": 0.9686275124549866, "cells": [{"id": 17, "text": "Only the security administrator (*SECADM) is allowed to change the list of users that can ", "bbox": {"l": 136.8, "t": 290.50872999999996, "r": 532.06573, "b": 299.72171, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "perform Database Administration functions.", "bbox": {"l": 136.8, "t": 302.50854, "r": 328.11267, "b": 311.72153, "coord_origin": "TOPLEFT"}}]}, "text": "Only the security administrator (*SECADM) is allowed to change the list of users that can perform Database Administration functions."}, {"label": "section_header", "id": 8, "page_no": 24, "cluster": {"id": 8, "label": "section_header", "bbox": {"l": 64.01083374023438, "t": 331.09979248046875, "r": 419.47638, "b": 344.32272, "coord_origin": "TOPLEFT"}, "confidence": 0.9618946313858032, "cells": [{"id": 19, "text": "2.1.4", "bbox": {"l": 64.800003, "t": 332.33475, "r": 93.95005, "b": 344.32272, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Database Information function: QIBM_DB_SYSMON", "bbox": {"l": 97.593788, "t": 332.33475, "r": 419.47638, "b": 344.32272, "coord_origin": "TOPLEFT"}}]}, "text": "2.1.4 Database Information function: QIBM_DB_SYSMON"}, {"label": "text", "id": 9, "page_no": 24, "cluster": {"id": 9, "label": "text", "bbox": {"l": 135.8494873046875, "t": 357.3560485839844, "r": 547.19281, "b": 391.70135, "coord_origin": "TOPLEFT"}, "confidence": 0.9852011203765869, "cells": [{"id": 21, "text": "The Database Information function (QIBM_DB_SYSMON) provides much less authority than ", "bbox": {"l": 136.8, "t": 358.48874, "r": 547.19281, "b": 367.70172, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Database Administrator function. Its primary use allows a user to examine high-level ", "bbox": {"l": 136.8, "t": 370.48856, "r": 510.57599000000005, "b": 379.70154, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "database properties.", "bbox": {"l": 136.8, "t": 382.48837000000003, "r": 228.09435000000002, "b": 391.70135, "coord_origin": "TOPLEFT"}}]}, "text": "The Database Information function (QIBM_DB_SYSMON) provides much less authority than Database Administrator function. Its primary use allows a user to examine high-level database properties."}, {"label": "text", "id": 10, "page_no": 24, "cluster": {"id": 10, "label": "text", "bbox": {"l": 136.19979858398438, "t": 403.33209228515625, "r": 547.29944, "b": 437.72055, "coord_origin": "TOPLEFT"}, "confidence": 0.9853191375732422, "cells": [{"id": 24, "text": "For example, a user that does not have *JOBCTL or QIBM_DB_SQLADM can still view the ", "bbox": {"l": 136.8, "t": 404.50793, "r": 539.83136, "b": 413.72092, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "SQL Plan Cache properties if granted authority to QIBM_DB_SYSMON. Without granting this ", "bbox": {"l": 136.8, "t": 416.50775, "r": 547.29944, "b": 425.72073, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "authority, the default behavior is to deny authorization.", "bbox": {"l": 136.8, "t": 428.50757, "r": 375.51733, "b": 437.72055, "coord_origin": "TOPLEFT"}}]}, "text": "For example, a user that does not have *JOBCTL or QIBM_DB_SQLADM can still view the SQL Plan Cache properties if granted authority to QIBM_DB_SYSMON. Without granting this authority, the default behavior is to deny authorization."}, {"label": "section_header", "id": 11, "page_no": 24, "cluster": {"id": 11, "label": "section_header", "bbox": {"l": 136.31793212890625, "t": 453.60760498046875, "r": 392.7384, "b": 465.75146484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9519172310829163, "cells": [{"id": 27, "text": "Granting QIBM_DB_SYSMON function usage", "bbox": {"l": 136.8, "t": 454.40398999999996, "r": 392.7384, "b": 465.504, "coord_origin": "TOPLEFT"}}]}, "text": "Granting QIBM_DB_SYSMON function usage"}, {"label": "text", "id": 12, "page_no": 24, "cluster": {"id": 12, "label": "text", "bbox": {"l": 136.06344604492188, "t": 468.69525146484375, "r": 532.06573, "b": 490.76129, "coord_origin": "TOPLEFT"}, "confidence": 0.9695555567741394, "cells": [{"id": 28, "text": "Only the security administrator (*SECADM) is allowed to change the list of users that can ", "bbox": {"l": 136.8, "t": 469.48874, "r": 532.06573, "b": 478.70172, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "perform Database Information functions.", "bbox": {"l": 136.8, "t": 481.54831, "r": 314.88379, "b": 490.76129, "coord_origin": "TOPLEFT"}}]}, "text": "Only the security administrator (*SECADM) is allowed to change the list of users that can perform Database Information functions."}, {"label": "section_header", "id": 13, "page_no": 24, "cluster": {"id": 13, "label": "section_header", "bbox": {"l": 64.14019775390625, "t": 510.3857727050781, "r": 427.05014, "b": 523.36261, "coord_origin": "TOPLEFT"}, "confidence": 0.960561215877533, "cells": [{"id": 30, "text": "2.1.5", "bbox": {"l": 64.800003, "t": 511.37463, "r": 93.974159, "b": 523.36261, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Security Administrator function: QIBM_DB_SECADM", "bbox": {"l": 97.620941, "t": 511.37463, "r": 427.05014, "b": 523.36261, "coord_origin": "TOPLEFT"}}]}, "text": "2.1.5 Security Administrator function: QIBM_DB_SECADM"}, {"label": "text", "id": 14, "page_no": 24, "cluster": {"id": 14, "label": "text", "bbox": {"l": 135.73634338378906, "t": 536.6364135742188, "r": 538.33221, "b": 582.74103, "coord_origin": "TOPLEFT"}, "confidence": 0.9864837527275085, "cells": [{"id": 32, "text": "The Security Administrator function (QIBM_DB_SECADM) grants authorities, revokes ", "bbox": {"l": 136.8, "t": 537.52863, "r": 516.96027, "b": 546.74162, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "authorities, changes ownership, or changes the primary group without giving access to the ", "bbox": {"l": 136.8, "t": 549.52843, "r": 538.33221, "b": 558.7414200000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "object or, in the case of a database table, to the data that is in the table or allowing other ", "bbox": {"l": 136.8, "t": 561.52823, "r": 528.31073, "b": 570.74123, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "operations on the table. ", "bbox": {"l": 136.8, "t": 573.52803, "r": 243.62096, "b": 582.74103, "coord_origin": "TOPLEFT"}}]}, "text": "The Security Administrator function (QIBM_DB_SECADM) grants authorities, revokes authorities, changes ownership, or changes the primary group without giving access to the object or, in the case of a database table, to the data that is in the table or allowing other operations on the table."}, {"label": "text", "id": 15, "page_no": 24, "cluster": {"id": 15, "label": "text", "bbox": {"l": 135.88818359375, "t": 594.3782348632812, "r": 547.28961, "b": 652.959716796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9881628155708313, "cells": [{"id": 36, "text": "Only those users with the QIBM_DB_SECADM function can administer and manage RCAC ", "bbox": {"l": 136.8, "t": 595.54759, "r": 542.62207, "b": 604.76059, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "rules. RCAC can be used to prevent even users with *ALLOBJ authority from freely accessing ", "bbox": {"l": 136.8, "t": 607.54739, "r": 547.22571, "b": 616.76039, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "all the data in a protected database. These users are excluded from data access unless they ", "bbox": {"l": 136.8, "t": 619.5472, "r": 547.27551, "b": 628.76019, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "are specifically authorized by RCAC. Without granting this authority, the default behavior is to ", "bbox": {"l": 136.8, "t": 631.547, "r": 547.28961, "b": 640.75999, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "deny authorization.", "bbox": {"l": 136.8, "t": 643.5468, "r": 221.19012, "b": 652.7598, "coord_origin": "TOPLEFT"}}]}, "text": "Only those users with the QIBM_DB_SECADM function can administer and manage RCAC rules. RCAC can be used to prevent even users with *ALLOBJ authority from freely accessing all the data in a protected database. These users are excluded from data access unless they are specifically authorized by RCAC. Without granting this authority, the default behavior is to deny authorization."}, {"label": "section_header", "id": 16, "page_no": 24, "cluster": {"id": 16, "label": "section_header", "bbox": {"l": 136.17408752441406, "t": 668.4557495117188, "r": 392.72162, "b": 680.6693725585938, "coord_origin": "TOPLEFT"}, "confidence": 0.9459793567657471, "cells": [{"id": 41, "text": "Granting QIBM_DB_SECADM function usage", "bbox": {"l": 136.8, "t": 669.3839, "r": 392.72162, "b": 680.4839, "coord_origin": "TOPLEFT"}}]}, "text": "Granting QIBM_DB_SECADM function usage"}, {"label": "text", "id": 17, "page_no": 24, "cluster": {"id": 17, "label": "text", "bbox": {"l": 136.1047821044922, "t": 683.893798828125, "r": 460.46808000000004, "b": 706.3756103515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9628692269325256, "cells": [{"id": 42, "text": "Only QSECOFR or a user with *SECADM special authority can grant the ", "bbox": {"l": 136.8, "t": 684.52872, "r": 460.46808000000004, "b": 693.741722, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "QIBM_DB_SECADM function usage to a user or group.", "bbox": {"l": 136.8, "t": 696.528526, "r": 381.91754, "b": 705.741531, "coord_origin": "TOPLEFT"}}]}, "text": "Only QSECOFR or a user with *SECADM special authority can grant the QIBM_DB_SECADM function usage to a user or group."}], "body": [{"label": "section_header", "id": 2, "page_no": 24, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.0216293334961, "t": 70.4687728881836, "r": 433.47052, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9597232341766357, "cells": [{"id": 2, "text": "2.1.3", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 93.963196, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Database Administrator function: QIBM_DB_SQLADM", "bbox": {"l": 97.608582, "t": 71.33471999999995, "r": 433.47052, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "2.1.3 Database Administrator function: QIBM_DB_SQLADM"}, {"label": "text", "id": 3, "page_no": 24, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.77142333984375, "t": 96.74668884277344, "r": 547.01843, "b": 155.3083038330078, "coord_origin": "TOPLEFT"}, "confidence": 0.9876309037208557, "cells": [{"id": 4, "text": "The Database Administrator function (QIBM_DB_SQLADM) is needed whenever a user is ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 536.12036, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "analyzing and viewing SQL performance data. Some of the more common database ", "bbox": {"l": 136.79999, "t": 109.48852999999997, "r": 511.064, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "administrator functions include displaying statements from the SQL Plan Cache, analyzing ", "bbox": {"l": 136.79999, "t": 121.48834000000011, "r": 537.42419, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "SQL Performance Monitors and SQL Plan Cache Snapshots, and displaying the SQL details ", "bbox": {"l": 136.79999, "t": 133.48816, "r": 547.01843, "b": 142.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "of a job other than your own.", "bbox": {"l": 136.79999, "t": 145.48798, "r": 263.15955, "b": 154.70099000000005, "coord_origin": "TOPLEFT"}}]}, "text": "The Database Administrator function (QIBM_DB_SQLADM) is needed whenever a user is analyzing and viewing SQL performance data. Some of the more common database administrator functions include displaying statements from the SQL Plan Cache, analyzing SQL Performance Monitors and SQL Plan Cache Snapshots, and displaying the SQL details of a job other than your own."}, {"label": "text", "id": 4, "page_no": 24, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.78330993652344, "t": 166.6936798095703, "r": 547.32452, "b": 200.90953063964844, "coord_origin": "TOPLEFT"}, "confidence": 0.9852434396743774, "cells": [{"id": 9, "text": "The Database Administrator function provides an alternative to granting *JOBCTL, but simply ", "bbox": {"l": 136.79999, "t": 167.50757, "r": 547.32452, "b": 176.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "having the Database Administrator authorization does not carry with it all the needed object ", "bbox": {"l": 136.79999, "t": 179.50739, "r": 542.60645, "b": 188.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "authorities for every administration task. The default behavior is to deny authorization.", "bbox": {"l": 136.79999, "t": 191.5072, "r": 514.72595, "b": 200.72020999999995, "coord_origin": "TOPLEFT"}}]}, "text": "The Database Administrator function provides an alternative to granting *JOBCTL, but simply having the Database Administrator authorization does not carry with it all the needed object authorities for every administration task. The default behavior is to deny authorization."}, {"label": "text", "id": 5, "page_no": 24, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.86964416503906, "t": 212.85244750976562, "r": 541.29852, "b": 259.014404296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9871625304222107, "cells": [{"id": 12, "text": "To perform database administrator tasks that are not related to performance analysis, you ", "bbox": {"l": 136.79999, "t": 213.52679, "r": 534.5368, "b": 222.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "must refer to the details of the task to determine its specific authorization requirements. For ", "bbox": {"l": 136.79999, "t": 225.52661, "r": 541.29852, "b": 234.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "example, to allow a database administrator to reorganize a table, the DBA must have ", "bbox": {"l": 136.79999, "t": 237.52643, "r": 513.49414, "b": 246.73943999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "additional object authorities to the table that are not covered by QIBM_DB_SQLADM.", "bbox": {"l": 136.79999, "t": 249.52625, "r": 512.87775, "b": 258.73925999999994, "coord_origin": "TOPLEFT"}}]}, "text": "To perform database administrator tasks that are not related to performance analysis, you must refer to the details of the task to determine its specific authorization requirements. For example, to allow a database administrator to reorganize a table, the DBA must have additional object authorities to the table that are not covered by QIBM_DB_SQLADM."}, {"label": "section_header", "id": 6, "page_no": 24, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 136.13877868652344, "t": 274.4320068359375, "r": 392.7084, "b": 286.46402, "coord_origin": "TOPLEFT"}, "confidence": 0.9447333812713623, "cells": [{"id": 16, "text": "Granting QIBM_DB_SQLADM function usage", "bbox": {"l": 136.8, "t": 275.36401, "r": 392.7084, "b": 286.46402, "coord_origin": "TOPLEFT"}}]}, "text": "Granting QIBM_DB_SQLADM function usage"}, {"label": "text", "id": 7, "page_no": 24, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.1097412109375, "t": 289.3403625488281, "r": 532.06573, "b": 311.72153, "coord_origin": "TOPLEFT"}, "confidence": 0.9686275124549866, "cells": [{"id": 17, "text": "Only the security administrator (*SECADM) is allowed to change the list of users that can ", "bbox": {"l": 136.8, "t": 290.50872999999996, "r": 532.06573, "b": 299.72171, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "perform Database Administration functions.", "bbox": {"l": 136.8, "t": 302.50854, "r": 328.11267, "b": 311.72153, "coord_origin": "TOPLEFT"}}]}, "text": "Only the security administrator (*SECADM) is allowed to change the list of users that can perform Database Administration functions."}, {"label": "section_header", "id": 8, "page_no": 24, "cluster": {"id": 8, "label": "section_header", "bbox": {"l": 64.01083374023438, "t": 331.09979248046875, "r": 419.47638, "b": 344.32272, "coord_origin": "TOPLEFT"}, "confidence": 0.9618946313858032, "cells": [{"id": 19, "text": "2.1.4", "bbox": {"l": 64.800003, "t": 332.33475, "r": 93.95005, "b": 344.32272, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Database Information function: QIBM_DB_SYSMON", "bbox": {"l": 97.593788, "t": 332.33475, "r": 419.47638, "b": 344.32272, "coord_origin": "TOPLEFT"}}]}, "text": "2.1.4 Database Information function: QIBM_DB_SYSMON"}, {"label": "text", "id": 9, "page_no": 24, "cluster": {"id": 9, "label": "text", "bbox": {"l": 135.8494873046875, "t": 357.3560485839844, "r": 547.19281, "b": 391.70135, "coord_origin": "TOPLEFT"}, "confidence": 0.9852011203765869, "cells": [{"id": 21, "text": "The Database Information function (QIBM_DB_SYSMON) provides much less authority than ", "bbox": {"l": 136.8, "t": 358.48874, "r": 547.19281, "b": 367.70172, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Database Administrator function. Its primary use allows a user to examine high-level ", "bbox": {"l": 136.8, "t": 370.48856, "r": 510.57599000000005, "b": 379.70154, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "database properties.", "bbox": {"l": 136.8, "t": 382.48837000000003, "r": 228.09435000000002, "b": 391.70135, "coord_origin": "TOPLEFT"}}]}, "text": "The Database Information function (QIBM_DB_SYSMON) provides much less authority than Database Administrator function. Its primary use allows a user to examine high-level database properties."}, {"label": "text", "id": 10, "page_no": 24, "cluster": {"id": 10, "label": "text", "bbox": {"l": 136.19979858398438, "t": 403.33209228515625, "r": 547.29944, "b": 437.72055, "coord_origin": "TOPLEFT"}, "confidence": 0.9853191375732422, "cells": [{"id": 24, "text": "For example, a user that does not have *JOBCTL or QIBM_DB_SQLADM can still view the ", "bbox": {"l": 136.8, "t": 404.50793, "r": 539.83136, "b": 413.72092, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "SQL Plan Cache properties if granted authority to QIBM_DB_SYSMON. Without granting this ", "bbox": {"l": 136.8, "t": 416.50775, "r": 547.29944, "b": 425.72073, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "authority, the default behavior is to deny authorization.", "bbox": {"l": 136.8, "t": 428.50757, "r": 375.51733, "b": 437.72055, "coord_origin": "TOPLEFT"}}]}, "text": "For example, a user that does not have *JOBCTL or QIBM_DB_SQLADM can still view the SQL Plan Cache properties if granted authority to QIBM_DB_SYSMON. Without granting this authority, the default behavior is to deny authorization."}, {"label": "section_header", "id": 11, "page_no": 24, "cluster": {"id": 11, "label": "section_header", "bbox": {"l": 136.31793212890625, "t": 453.60760498046875, "r": 392.7384, "b": 465.75146484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9519172310829163, "cells": [{"id": 27, "text": "Granting QIBM_DB_SYSMON function usage", "bbox": {"l": 136.8, "t": 454.40398999999996, "r": 392.7384, "b": 465.504, "coord_origin": "TOPLEFT"}}]}, "text": "Granting QIBM_DB_SYSMON function usage"}, {"label": "text", "id": 12, "page_no": 24, "cluster": {"id": 12, "label": "text", "bbox": {"l": 136.06344604492188, "t": 468.69525146484375, "r": 532.06573, "b": 490.76129, "coord_origin": "TOPLEFT"}, "confidence": 0.9695555567741394, "cells": [{"id": 28, "text": "Only the security administrator (*SECADM) is allowed to change the list of users that can ", "bbox": {"l": 136.8, "t": 469.48874, "r": 532.06573, "b": 478.70172, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "perform Database Information functions.", "bbox": {"l": 136.8, "t": 481.54831, "r": 314.88379, "b": 490.76129, "coord_origin": "TOPLEFT"}}]}, "text": "Only the security administrator (*SECADM) is allowed to change the list of users that can perform Database Information functions."}, {"label": "section_header", "id": 13, "page_no": 24, "cluster": {"id": 13, "label": "section_header", "bbox": {"l": 64.14019775390625, "t": 510.3857727050781, "r": 427.05014, "b": 523.36261, "coord_origin": "TOPLEFT"}, "confidence": 0.960561215877533, "cells": [{"id": 30, "text": "2.1.5", "bbox": {"l": 64.800003, "t": 511.37463, "r": 93.974159, "b": 523.36261, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Security Administrator function: QIBM_DB_SECADM", "bbox": {"l": 97.620941, "t": 511.37463, "r": 427.05014, "b": 523.36261, "coord_origin": "TOPLEFT"}}]}, "text": "2.1.5 Security Administrator function: QIBM_DB_SECADM"}, {"label": "text", "id": 14, "page_no": 24, "cluster": {"id": 14, "label": "text", "bbox": {"l": 135.73634338378906, "t": 536.6364135742188, "r": 538.33221, "b": 582.74103, "coord_origin": "TOPLEFT"}, "confidence": 0.9864837527275085, "cells": [{"id": 32, "text": "The Security Administrator function (QIBM_DB_SECADM) grants authorities, revokes ", "bbox": {"l": 136.8, "t": 537.52863, "r": 516.96027, "b": 546.74162, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "authorities, changes ownership, or changes the primary group without giving access to the ", "bbox": {"l": 136.8, "t": 549.52843, "r": 538.33221, "b": 558.7414200000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "object or, in the case of a database table, to the data that is in the table or allowing other ", "bbox": {"l": 136.8, "t": 561.52823, "r": 528.31073, "b": 570.74123, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "operations on the table. ", "bbox": {"l": 136.8, "t": 573.52803, "r": 243.62096, "b": 582.74103, "coord_origin": "TOPLEFT"}}]}, "text": "The Security Administrator function (QIBM_DB_SECADM) grants authorities, revokes authorities, changes ownership, or changes the primary group without giving access to the object or, in the case of a database table, to the data that is in the table or allowing other operations on the table."}, {"label": "text", "id": 15, "page_no": 24, "cluster": {"id": 15, "label": "text", "bbox": {"l": 135.88818359375, "t": 594.3782348632812, "r": 547.28961, "b": 652.959716796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9881628155708313, "cells": [{"id": 36, "text": "Only those users with the QIBM_DB_SECADM function can administer and manage RCAC ", "bbox": {"l": 136.8, "t": 595.54759, "r": 542.62207, "b": 604.76059, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "rules. RCAC can be used to prevent even users with *ALLOBJ authority from freely accessing ", "bbox": {"l": 136.8, "t": 607.54739, "r": 547.22571, "b": 616.76039, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "all the data in a protected database. These users are excluded from data access unless they ", "bbox": {"l": 136.8, "t": 619.5472, "r": 547.27551, "b": 628.76019, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "are specifically authorized by RCAC. Without granting this authority, the default behavior is to ", "bbox": {"l": 136.8, "t": 631.547, "r": 547.28961, "b": 640.75999, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "deny authorization.", "bbox": {"l": 136.8, "t": 643.5468, "r": 221.19012, "b": 652.7598, "coord_origin": "TOPLEFT"}}]}, "text": "Only those users with the QIBM_DB_SECADM function can administer and manage RCAC rules. RCAC can be used to prevent even users with *ALLOBJ authority from freely accessing all the data in a protected database. These users are excluded from data access unless they are specifically authorized by RCAC. Without granting this authority, the default behavior is to deny authorization."}, {"label": "section_header", "id": 16, "page_no": 24, "cluster": {"id": 16, "label": "section_header", "bbox": {"l": 136.17408752441406, "t": 668.4557495117188, "r": 392.72162, "b": 680.6693725585938, "coord_origin": "TOPLEFT"}, "confidence": 0.9459793567657471, "cells": [{"id": 41, "text": "Granting QIBM_DB_SECADM function usage", "bbox": {"l": 136.8, "t": 669.3839, "r": 392.72162, "b": 680.4839, "coord_origin": "TOPLEFT"}}]}, "text": "Granting QIBM_DB_SECADM function usage"}, {"label": "text", "id": 17, "page_no": 24, "cluster": {"id": 17, "label": "text", "bbox": {"l": 136.1047821044922, "t": 683.893798828125, "r": 460.46808000000004, "b": 706.3756103515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9628692269325256, "cells": [{"id": 42, "text": "Only QSECOFR or a user with *SECADM special authority can grant the ", "bbox": {"l": 136.8, "t": 684.52872, "r": 460.46808000000004, "b": 693.741722, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "QIBM_DB_SECADM function usage to a user or group.", "bbox": {"l": 136.8, "t": 696.528526, "r": 381.91754, "b": 705.741531, "coord_origin": "TOPLEFT"}}]}, "text": "Only QSECOFR or a user with *SECADM special authority can grant the QIBM_DB_SECADM function usage to a user or group."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 24, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 360.4371643066406, "t": 754.883544921875, "r": 529.1568, "b": 764.1151123046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9521506428718567, "cells": [{"id": 0, "text": "Chapter 2. Roles and separation of duties ", "bbox": {"l": 360.89999, "t": 755.538002, "r": 529.1568, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 2. Roles and separation of duties"}, {"label": "page_footer", "id": 1, "page_no": 24, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 540.8857421875, "t": 754.3031616210938, "r": 547.2386474609375, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8864408731460571, "cells": [{"id": 1, "text": "9", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "9"}]}}, {"page_no": 25, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "10 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "2.1.6", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 94.081459, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Change Function Usage CL command", "bbox": {"l": 97.741661, "t": 71.33471999999995, "r": 335.49551, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "The following CL commands can be used to work with, display, or change function usage IDs:", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 547.28442, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 114.67767000000003, "r": 141.78, "b": 123.45245, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Work Function Usage (", "bbox": {"l": 151.20016, "t": 114.52826000000005, "r": 253.26227000000003, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "WRKFCNUSG", "bbox": {"l": 253.26028, "t": 114.67767000000003, "r": 298.1998, "b": 123.50225999999998, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": ")", "bbox": {"l": 298.20081, "t": 114.52826000000005, "r": 301.51749, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 126.67749000000003, "r": 141.78099, "b": 135.45227, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Change Function Usage (", "bbox": {"l": 151.20116, "t": 126.52808000000005, "r": 265.13354, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "CHGFCNUSG", "bbox": {"l": 265.08081, "t": 126.67749000000003, "r": 310.02032, "b": 135.50207999999998, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": ")", "bbox": {"l": 310.08109, "t": 126.52808000000005, "r": 313.39777, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "GLYPH", "bbox": {"l": 136.80098, "t": 138.67731000000003, "r": 141.78098, "b": 147.45209, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Display Function Usage (", "bbox": {"l": 151.20114, "t": 138.52788999999996, "r": 262.5639, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "DSPFCNUSG", "bbox": {"l": 262.56091, "t": 138.67731000000003, "r": 307.50043, "b": 147.50189, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ")", "bbox": {"l": 307.50043, "t": 138.52788999999996, "r": 310.81711, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "For example, the following ", "bbox": {"l": 136.79997, "t": 160.48766999999998, "r": 255.09984000000003, "b": 169.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "CHGFCNUSG", "bbox": {"l": 255.00027, "t": 160.63707999999997, "r": 299.99957, "b": 169.46167000000003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": " command shows granting authorization to user ", "bbox": {"l": 300.00055, "t": 160.48766999999998, "r": 512.53802, "b": 169.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "HBEDOYA to administer and manage RCAC rules:", "bbox": {"l": 136.80096, "t": 172.48748999999998, "r": 360.41989, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED)", "bbox": {"l": 136.80096, "t": 189.67645000000005, "r": 441.59686, "b": 198.45123, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "2.1.7", "bbox": {"l": 64.800003, "t": 219.35468000000003, "r": 93.757614, "b": 231.34271, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Verifying function usage IDs for RCAC with the FUNCTION_USAGE view", "bbox": {"l": 97.377296, "t": 219.35468000000003, "r": 544.47546, "b": 231.34271, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "The FUNCTION_USAGE view contains function usage configuration details. Table 2-1 ", "bbox": {"l": 136.8, "t": 245.50867000000005, "r": 519.51794, "b": 254.72168, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "describes the columns in the FUNCTION_USAGE view.", "bbox": {"l": 136.8, "t": 257.50847999999996, "r": 382.94443, "b": 266.7215, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Table 2-1 FUNCTION_USAGE view", "bbox": {"l": 136.8, "t": 279.55798000000004, "r": 283.96805, "b": 287.88300000000004, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "To discover who has authorization to define and manage RCAC, you can use the query that is ", "bbox": {"l": 136.8, "t": 452.50872999999996, "r": 547.2804, "b": 461.72171, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "shown in Example 2-1.", "bbox": {"l": 136.8, "t": 464.50854, "r": 237.76951999999997, "b": 473.72153, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Example 2-1 Query to determine who has authority to define and manage RCAC", "bbox": {"l": 136.8, "t": 486.55798, "r": 462.35419, "b": 494.883, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "SELECT", "bbox": {"l": 136.8, "t": 503.65802, "r": 171.26956, "b": 512.4328, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "function_id,", "bbox": {"l": 182.75941, "t": 503.65802, "r": 251.69853, "b": 512.4328, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "user_name,", "bbox": {"l": 166.78244, "t": 515.6578400000001, "r": 241.73852999999997, "b": 524.43262, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "usage,", "bbox": {"l": 170.75961, "t": 527.65765, "r": 221.69901999999996, "b": 536.43242, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "user_type", "bbox": {"l": 167.53809, "t": 539.65747, "r": 236.69878, "b": 548.43222, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "FROM", "bbox": {"l": 136.8, "t": 551.65727, "r": 160.59396, "b": 560.43202, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "function_usage", "bbox": {"l": 178.43944, "t": 551.65727, "r": 261.71829, "b": 560.43202, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "WHERE", "bbox": {"l": 136.8, "t": 563.65707, "r": 162.44176, "b": 572.43182, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "function_id=\u2019QIBM_DB_SECADM\u2019", "bbox": {"l": 177.8268, "t": 563.65707, "r": 331.67731, "b": 572.43182, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ORDER BY", "bbox": {"l": 136.8, "t": 575.65688, "r": 178.77542, "b": 584.43163, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "user_name;", "bbox": {"l": 189.26929, "t": 575.65688, "r": 241.73856, "b": 584.43163, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "2.2", "bbox": {"l": 64.800003, "t": 620.22063, "r": 87.569839, "b": 634.98363, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Separation of duties", "bbox": {"l": 92.123802, "t": 620.22063, "r": 249.59605000000002, "b": 634.98363, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Separation of duties helps businesses comply with industry regulations or organizational ", "bbox": {"l": 136.8, "t": 652.54872, "r": 529.09357, "b": 661.76172, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "requirements and simplifies the management of authorities. Separation of duties is commonly ", "bbox": {"l": 136.8, "t": 664.54852, "r": 547.22345, "b": 673.76153, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "used to prevent fraudulent activities or errors by a single person. It provides the ability for ", "bbox": {"l": 136.8, "t": 676.54833, "r": 530.89716, "b": 685.76134, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "administrative functions to be divided across individuals without overlapping responsibilities, ", "bbox": {"l": 136.80002, "t": 688.54814, "r": 544.33832, "b": 697.7611469999999, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "so that one user does not possess unlimited authority, such as with the *ALLOBJ authority.", "bbox": {"l": 136.80002, "t": 700.547951, "r": 536.28363, "b": 709.760956, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "Column name", "bbox": {"l": 142.8, "t": 296.5379899999999, "r": 202.245, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Data type", "bbox": {"l": 216.80878999999996, "t": 296.5379899999999, "r": 257.21069, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Description", "bbox": {"l": 289.47479, "t": 296.5379899999999, "r": 338.89468, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "FUNCTION_ID", "bbox": {"l": 142.8, "t": 315.55771, "r": 203.2323, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "VARCHAR(30)", "bbox": {"l": 216.7854, "t": 315.55771, "r": 276.0036, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ID of the function.", "bbox": {"l": 289.4577, "t": 315.55771, "r": 359.85394, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "USER_NAME", "bbox": {"l": 142.8, "t": 334.51801, "r": 198.6693, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "VARCHAR(10)", "bbox": {"l": 216.74129999999997, "t": 334.51801, "r": 275.92349, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "Name of the user profile that has a usage setting for this ", "bbox": {"l": 289.38208, "t": 334.51801, "r": 515.05359, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "function.", "bbox": {"l": 289.4397, "t": 345.55832, "r": 323.43362, "b": 353.88333, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "USAGE", "bbox": {"l": 142.79999, "t": 364.51862, "r": 173.98318, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "VARCHAR(7)", "bbox": {"l": 216.77367999999998, "t": 364.51862, "r": 270.97977, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Usage setting:", "bbox": {"l": 289.41626, "t": 364.51862, "r": 346.88757, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 375.69394000000005, "r": 293.9397, "b": 383.62292, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "ALLOWED: The user profile is allowed to use the function.", "bbox": {"l": 303.83969, "t": 375.55893, "r": 535.16766, "b": 383.88394, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 386.67395, "r": 293.9397, "b": 394.60294, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "DENIED: The user profile is not allowed to use the function.", "bbox": {"l": 303.83969, "t": 386.53894, "r": 539.10712, "b": 394.86395, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "USER_TYPE", "bbox": {"l": 142.8, "t": 405.55865, "r": 196.2249, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "VARCHAR(5)", "bbox": {"l": 216.75211, "t": 405.55865, "r": 270.99872, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Type of user profile:", "bbox": {"l": 289.43161, "t": 405.55865, "r": 367.8009, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 416.67368000000005, "r": 293.9397, "b": 424.60266, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "USER: The user profile is a user.", "bbox": {"l": 303.83969, "t": 416.53867, "r": 434.78159, "b": 424.86368, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 427.65369, "r": 293.9397, "b": 435.58267000000006, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "GROUP: The user profile is a group.", "bbox": {"l": 303.83969, "t": 427.51868, "r": 448.11963000000003, "b": 435.84369, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.4488525390625, "t": 754.418701171875, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9166076183319092, "cells": [{"id": 0, "text": "10 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.35774993896484, "t": 754.6892700195312, "r": 334.42142, "b": 763.9585571289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9529878497123718, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.09011840820312, "t": 70.1792984008789, "r": 335.49551, "b": 83.9942626953125, "coord_origin": "TOPLEFT"}, "confidence": 0.969738245010376, "cells": [{"id": 2, "text": "2.1.6", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 94.081459, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Change Function Usage CL command", "bbox": {"l": 97.741661, "t": 71.33471999999995, "r": 335.49551, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.83584594726562, "t": 96.62870788574219, "r": 547.28442, "b": 107.22466278076172, "coord_origin": "TOPLEFT"}, "confidence": 0.9551490545272827, "cells": [{"id": 4, "text": "The following CL commands can be used to work with, display, or change function usage IDs:", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 547.28442, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 135.6907196044922, "t": 113.74026489257812, "r": 301.51749, "b": 124.55382537841797, "coord_origin": "TOPLEFT"}, "confidence": 0.9410473704338074, "cells": [{"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 114.67767000000003, "r": 141.78, "b": 123.45245, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Work Function Usage (", "bbox": {"l": 151.20016, "t": 114.52826000000005, "r": 253.26227000000003, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "WRKFCNUSG", "bbox": {"l": 253.26028, "t": 114.67767000000003, "r": 298.1998, "b": 123.50225999999998, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": ")", "bbox": {"l": 298.20081, "t": 114.52826000000005, "r": 301.51749, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 135.7242889404297, "t": 125.93077850341797, "r": 313.39777, "b": 136.68792724609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9417493939399719, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 126.67749000000003, "r": 141.78099, "b": 135.45227, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Change Function Usage (", "bbox": {"l": 151.20116, "t": 126.52808000000005, "r": 265.13354, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "CHGFCNUSG", "bbox": {"l": 265.08081, "t": 126.67749000000003, "r": 310.02032, "b": 135.50207999999998, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": ")", "bbox": {"l": 310.08109, "t": 126.52808000000005, "r": 313.39777, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.71124267578125, "t": 137.9629364013672, "r": 310.81711, "b": 148.59957885742188, "coord_origin": "TOPLEFT"}, "confidence": 0.9562166929244995, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.80098, "t": 138.67731000000003, "r": 141.78098, "b": 147.45209, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Display Function Usage (", "bbox": {"l": 151.20114, "t": 138.52788999999996, "r": 262.5639, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "DSPFCNUSG", "bbox": {"l": 262.56091, "t": 138.67731000000003, "r": 307.50043, "b": 147.50189, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ")", "bbox": {"l": 307.50043, "t": 138.52788999999996, "r": 310.81711, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 136.30247497558594, "t": 159.218505859375, "r": 512.53802, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9682289958000183, "cells": [{"id": 17, "text": "For example, the following ", "bbox": {"l": 136.79997, "t": 160.48766999999998, "r": 255.09984000000003, "b": 169.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "CHGFCNUSG", "bbox": {"l": 255.00027, "t": 160.63707999999997, "r": 299.99957, "b": 169.46167000000003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": " command shows granting authorization to user ", "bbox": {"l": 300.00055, "t": 160.48766999999998, "r": 512.53802, "b": 169.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "HBEDOYA to administer and manage RCAC rules:", "bbox": {"l": 136.80096, "t": 172.48748999999998, "r": 360.41989, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 136.3306427001953, "t": 187.99078369140625, "r": 441.59686, "b": 198.88003540039062, "coord_origin": "TOPLEFT"}, "confidence": 0.9056942462921143, "cells": [{"id": 21, "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED)", "bbox": {"l": 136.80096, "t": 189.67645000000005, "r": 441.59686, "b": 198.45123, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "section_header", "bbox": {"l": 63.9356689453125, "t": 218.1382598876953, "r": 544.47546, "b": 232.12425231933594, "coord_origin": "TOPLEFT"}, "confidence": 0.9636377096176147, "cells": [{"id": 22, "text": "2.1.7", "bbox": {"l": 64.800003, "t": 219.35468000000003, "r": 93.757614, "b": 231.34271, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Verifying function usage IDs for RCAC with the FUNCTION_USAGE view", "bbox": {"l": 97.377296, "t": 219.35468000000003, "r": 544.47546, "b": 231.34271, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 135.84828186035156, "t": 244.5770263671875, "r": 519.51794, "b": 266.7215, "coord_origin": "TOPLEFT"}, "confidence": 0.9737265110015869, "cells": [{"id": 24, "text": "The FUNCTION_USAGE view contains function usage configuration details. Table 2-1 ", "bbox": {"l": 136.8, "t": 245.50867000000005, "r": 519.51794, "b": 254.72168, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "describes the columns in the FUNCTION_USAGE view.", "bbox": {"l": 136.8, "t": 257.50847999999996, "r": 382.94443, "b": 266.7215, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "caption", "bbox": {"l": 136.8, "t": 278.509521484375, "r": 284.9328308105469, "b": 287.88300000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.919783353805542, "cells": [{"id": 26, "text": "Table 2-1 FUNCTION_USAGE view", "bbox": {"l": 136.8, "t": 279.55798000000004, "r": 283.96805, "b": 287.88300000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 135.81077575683594, "t": 451.328857421875, "r": 547.2804, "b": 473.72153, "coord_origin": "TOPLEFT"}, "confidence": 0.9647641777992249, "cells": [{"id": 27, "text": "To discover who has authorization to define and manage RCAC, you can use the query that is ", "bbox": {"l": 136.8, "t": 452.50872999999996, "r": 547.2804, "b": 461.72171, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "shown in Example 2-1.", "bbox": {"l": 136.8, "t": 464.50854, "r": 237.76951999999997, "b": 473.72153, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "caption", "bbox": {"l": 136.28225708007812, "t": 485.76434326171875, "r": 462.98095703125, "b": 495.88201904296875, "coord_origin": "TOPLEFT"}, "confidence": 0.8165032267570496, "cells": [{"id": 29, "text": "Example 2-1 Query to determine who has authority to define and manage RCAC", "bbox": {"l": 136.8, "t": 486.55798, "r": 462.35419, "b": 494.883, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "text", "bbox": {"l": 136.8, "t": 503.65802, "r": 331.67731, "b": 584.43163, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 30, "text": "SELECT", "bbox": {"l": 136.8, "t": 503.65802, "r": 171.26956, "b": 512.4328, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "function_id,", "bbox": {"l": 182.75941, "t": 503.65802, "r": 251.69853, "b": 512.4328, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "user_name,", "bbox": {"l": 166.78244, "t": 515.6578400000001, "r": 241.73852999999997, "b": 524.43262, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "usage,", "bbox": {"l": 170.75961, "t": 527.65765, "r": 221.69901999999996, "b": 536.43242, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "user_type", "bbox": {"l": 167.53809, "t": 539.65747, "r": 236.69878, "b": 548.43222, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "FROM", "bbox": {"l": 136.8, "t": 551.65727, "r": 160.59396, "b": 560.43202, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "function_usage", "bbox": {"l": 178.43944, "t": 551.65727, "r": 261.71829, "b": 560.43202, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "WHERE", "bbox": {"l": 136.8, "t": 563.65707, "r": 162.44176, "b": 572.43182, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "function_id=\u2019QIBM_DB_SECADM\u2019", "bbox": {"l": 177.8268, "t": 563.65707, "r": 331.67731, "b": 572.43182, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ORDER BY", "bbox": {"l": 136.8, "t": 575.65688, "r": 178.77542, "b": 584.43163, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "user_name;", "bbox": {"l": 189.26929, "t": 575.65688, "r": 241.73856, "b": 584.43163, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "section_header", "bbox": {"l": 64.18024444580078, "t": 619.3924560546875, "r": 249.59605000000002, "b": 635.6513671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9656643271446228, "cells": [{"id": 41, "text": "2.2", "bbox": {"l": 64.800003, "t": 620.22063, "r": 87.569839, "b": 634.98363, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Separation of duties", "bbox": {"l": 92.123802, "t": 620.22063, "r": 249.59605000000002, "b": 634.98363, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "text", "bbox": {"l": 136.1588592529297, "t": 651.8870849609375, "r": 547.22345, "b": 710.182373046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9853105545043945, "cells": [{"id": 43, "text": "Separation of duties helps businesses comply with industry regulations or organizational ", "bbox": {"l": 136.8, "t": 652.54872, "r": 529.09357, "b": 661.76172, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "requirements and simplifies the management of authorities. Separation of duties is commonly ", "bbox": {"l": 136.8, "t": 664.54852, "r": 547.22345, "b": 673.76153, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "used to prevent fraudulent activities or errors by a single person. It provides the ability for ", "bbox": {"l": 136.8, "t": 676.54833, "r": 530.89716, "b": 685.76134, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "administrative functions to be divided across individuals without overlapping responsibilities, ", "bbox": {"l": 136.80002, "t": 688.54814, "r": 544.33832, "b": 697.7611469999999, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "so that one user does not possess unlimited authority, such as with the *ALLOBJ authority.", "bbox": {"l": 136.80002, "t": 700.547951, "r": 536.28363, "b": 709.760956, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "table", "bbox": {"l": 135.52508544921875, "t": 289.7249755859375, "r": 545.87060546875, "b": 442.0505065917969, "coord_origin": "TOPLEFT"}, "confidence": 0.985169529914856, "cells": [{"id": 48, "text": "Column name", "bbox": {"l": 142.8, "t": 296.5379899999999, "r": 202.245, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Data type", "bbox": {"l": 216.80878999999996, "t": 296.5379899999999, "r": 257.21069, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Description", "bbox": {"l": 289.47479, "t": 296.5379899999999, "r": 338.89468, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "FUNCTION_ID", "bbox": {"l": 142.8, "t": 315.55771, "r": 203.2323, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "VARCHAR(30)", "bbox": {"l": 216.7854, "t": 315.55771, "r": 276.0036, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ID of the function.", "bbox": {"l": 289.4577, "t": 315.55771, "r": 359.85394, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "USER_NAME", "bbox": {"l": 142.8, "t": 334.51801, "r": 198.6693, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "VARCHAR(10)", "bbox": {"l": 216.74129999999997, "t": 334.51801, "r": 275.92349, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "Name of the user profile that has a usage setting for this ", "bbox": {"l": 289.38208, "t": 334.51801, "r": 515.05359, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "function.", "bbox": {"l": 289.4397, "t": 345.55832, "r": 323.43362, "b": 353.88333, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "USAGE", "bbox": {"l": 142.79999, "t": 364.51862, "r": 173.98318, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "VARCHAR(7)", "bbox": {"l": 216.77367999999998, "t": 364.51862, "r": 270.97977, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Usage setting:", "bbox": {"l": 289.41626, "t": 364.51862, "r": 346.88757, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 375.69394000000005, "r": 293.9397, "b": 383.62292, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "ALLOWED: The user profile is allowed to use the function.", "bbox": {"l": 303.83969, "t": 375.55893, "r": 535.16766, "b": 383.88394, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 386.67395, "r": 293.9397, "b": 394.60294, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "DENIED: The user profile is not allowed to use the function.", "bbox": {"l": 303.83969, "t": 386.53894, "r": 539.10712, "b": 394.86395, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "USER_TYPE", "bbox": {"l": 142.8, "t": 405.55865, "r": 196.2249, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "VARCHAR(5)", "bbox": {"l": 216.75211, "t": 405.55865, "r": 270.99872, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Type of user profile:", "bbox": {"l": 289.43161, "t": 405.55865, "r": 367.8009, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 416.67368000000005, "r": 293.9397, "b": 424.60266, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "USER: The user profile is a user.", "bbox": {"l": 303.83969, "t": 416.53867, "r": 434.78159, "b": 424.86368, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 427.65369, "r": 293.9397, "b": 435.58267000000006, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "GROUP: The user profile is a group.", "bbox": {"l": 303.83969, "t": 427.51868, "r": 448.11963000000003, "b": 435.84369, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {"17": {"label": "table", "id": 17, "page_no": 25, "cluster": {"id": 17, "label": "table", "bbox": {"l": 135.52508544921875, "t": 289.7249755859375, "r": 545.87060546875, "b": 442.0505065917969, "coord_origin": "TOPLEFT"}, "confidence": 0.985169529914856, "cells": [{"id": 48, "text": "Column name", "bbox": {"l": 142.8, "t": 296.5379899999999, "r": 202.245, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Data type", "bbox": {"l": 216.80878999999996, "t": 296.5379899999999, "r": 257.21069, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Description", "bbox": {"l": 289.47479, "t": 296.5379899999999, "r": 338.89468, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "FUNCTION_ID", "bbox": {"l": 142.8, "t": 315.55771, "r": 203.2323, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "VARCHAR(30)", "bbox": {"l": 216.7854, "t": 315.55771, "r": 276.0036, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ID of the function.", "bbox": {"l": 289.4577, "t": 315.55771, "r": 359.85394, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "USER_NAME", "bbox": {"l": 142.8, "t": 334.51801, "r": 198.6693, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "VARCHAR(10)", "bbox": {"l": 216.74129999999997, "t": 334.51801, "r": 275.92349, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "Name of the user profile that has a usage setting for this ", "bbox": {"l": 289.38208, "t": 334.51801, "r": 515.05359, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "function.", "bbox": {"l": 289.4397, "t": 345.55832, "r": 323.43362, "b": 353.88333, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "USAGE", "bbox": {"l": 142.79999, "t": 364.51862, "r": 173.98318, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "VARCHAR(7)", "bbox": {"l": 216.77367999999998, "t": 364.51862, "r": 270.97977, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Usage setting:", "bbox": {"l": 289.41626, "t": 364.51862, "r": 346.88757, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 375.69394000000005, "r": 293.9397, "b": 383.62292, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "ALLOWED: The user profile is allowed to use the function.", "bbox": {"l": 303.83969, "t": 375.55893, "r": 535.16766, "b": 383.88394, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 386.67395, "r": 293.9397, "b": 394.60294, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "DENIED: The user profile is not allowed to use the function.", "bbox": {"l": 303.83969, "t": 386.53894, "r": 539.10712, "b": 394.86395, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "USER_TYPE", "bbox": {"l": 142.8, "t": 405.55865, "r": 196.2249, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "VARCHAR(5)", "bbox": {"l": 216.75211, "t": 405.55865, "r": 270.99872, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Type of user profile:", "bbox": {"l": 289.43161, "t": 405.55865, "r": 367.8009, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 416.67368000000005, "r": 293.9397, "b": 424.60266, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "USER: The user profile is a user.", "bbox": {"l": 303.83969, "t": 416.53867, "r": 434.78159, "b": 424.86368, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 427.65369, "r": 293.9397, "b": 435.58267000000006, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "GROUP: The user profile is a group.", "bbox": {"l": 303.83969, "t": 427.51868, "r": 448.11963000000003, "b": 435.84369, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "ched", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl"], "num_rows": 5, "num_cols": 3, "table_cells": [{"bbox": {"l": 142.8, "t": 296.5379899999999, "r": 202.245, "b": 304.86301, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Column name", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 216.80878999999996, "t": 296.5379899999999, "r": 257.21069, "b": 304.86301, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Data type", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 289.47479, "t": 296.5379899999999, "r": 338.89468, "b": 304.86301, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Description", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8, "t": 315.55771, "r": 203.2323, "b": 323.88272, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "FUNCTION_ID", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.7854, "t": 315.55771, "r": 276.0036, "b": 323.88272, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(30)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.4577, "t": 315.55771, "r": 359.85394, "b": 323.88272, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "ID of the function.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8, "t": 334.51801, "r": 198.6693, "b": 342.84302, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USER_NAME", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.74129999999997, "t": 334.51801, "r": 275.92349, "b": 342.84302, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(10)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.38208, "t": 334.51801, "r": 515.05359, "b": 353.88333, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Name of the user profile that has a usage setting for this function.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.79999, "t": 364.51862, "r": 173.98318, "b": 372.84363, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USAGE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.77367999999998, "t": 364.51862, "r": 270.97977, "b": 372.84363, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(7)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.41626, "t": 364.51862, "r": 539.10712, "b": 394.86395, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Usage setting: GLYPH ALLOWED: The user profile is allowed to use the function. GLYPH DENIED: The user profile is not allowed to use the function.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8, "t": 405.55865, "r": 196.2249, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USER_TYPE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.75211, "t": 405.55865, "r": 270.99872, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(5)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.43161, "t": 405.55865, "r": 448.11963000000003, "b": 435.84369, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Type of user profile: GLYPH USER: The user profile is a user. GLYPH GROUP: The user profile is a group.", "column_header": false, "row_header": false, "row_section": false}]}}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 25, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.4488525390625, "t": 754.418701171875, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9166076183319092, "cells": [{"id": 0, "text": "10 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "10"}, {"label": "page_footer", "id": 1, "page_no": 25, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.35774993896484, "t": 754.6892700195312, "r": 334.42142, "b": 763.9585571289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9529878497123718, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "section_header", "id": 2, "page_no": 25, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.09011840820312, "t": 70.1792984008789, "r": 335.49551, "b": 83.9942626953125, "coord_origin": "TOPLEFT"}, "confidence": 0.969738245010376, "cells": [{"id": 2, "text": "2.1.6", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 94.081459, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Change Function Usage CL command", "bbox": {"l": 97.741661, "t": 71.33471999999995, "r": 335.49551, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "2.1.6 Change Function Usage CL command"}, {"label": "text", "id": 3, "page_no": 25, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.83584594726562, "t": 96.62870788574219, "r": 547.28442, "b": 107.22466278076172, "coord_origin": "TOPLEFT"}, "confidence": 0.9551490545272827, "cells": [{"id": 4, "text": "The following CL commands can be used to work with, display, or change function usage IDs:", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 547.28442, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}]}, "text": "The following CL commands can be used to work with, display, or change function usage IDs:"}, {"label": "list_item", "id": 4, "page_no": 25, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.6907196044922, "t": 113.74026489257812, "r": 301.51749, "b": 124.55382537841797, "coord_origin": "TOPLEFT"}, "confidence": 0.9410473704338074, "cells": [{"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 114.67767000000003, "r": 141.78, "b": 123.45245, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Work Function Usage (", "bbox": {"l": 151.20016, "t": 114.52826000000005, "r": 253.26227000000003, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "WRKFCNUSG", "bbox": {"l": 253.26028, "t": 114.67767000000003, "r": 298.1998, "b": 123.50225999999998, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": ")", "bbox": {"l": 298.20081, "t": 114.52826000000005, "r": 301.51749, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Work Function Usage ( WRKFCNUSG )"}, {"label": "list_item", "id": 5, "page_no": 25, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.7242889404297, "t": 125.93077850341797, "r": 313.39777, "b": 136.68792724609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9417493939399719, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 126.67749000000003, "r": 141.78099, "b": 135.45227, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Change Function Usage (", "bbox": {"l": 151.20116, "t": 126.52808000000005, "r": 265.13354, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "CHGFCNUSG", "bbox": {"l": 265.08081, "t": 126.67749000000003, "r": 310.02032, "b": 135.50207999999998, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": ")", "bbox": {"l": 310.08109, "t": 126.52808000000005, "r": 313.39777, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Change Function Usage ( CHGFCNUSG )"}, {"label": "list_item", "id": 6, "page_no": 25, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.71124267578125, "t": 137.9629364013672, "r": 310.81711, "b": 148.59957885742188, "coord_origin": "TOPLEFT"}, "confidence": 0.9562166929244995, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.80098, "t": 138.67731000000003, "r": 141.78098, "b": 147.45209, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Display Function Usage (", "bbox": {"l": 151.20114, "t": 138.52788999999996, "r": 262.5639, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "DSPFCNUSG", "bbox": {"l": 262.56091, "t": 138.67731000000003, "r": 307.50043, "b": 147.50189, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ")", "bbox": {"l": 307.50043, "t": 138.52788999999996, "r": 310.81711, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Display Function Usage ( DSPFCNUSG )"}, {"label": "text", "id": 7, "page_no": 25, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.30247497558594, "t": 159.218505859375, "r": 512.53802, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9682289958000183, "cells": [{"id": 17, "text": "For example, the following ", "bbox": {"l": 136.79997, "t": 160.48766999999998, "r": 255.09984000000003, "b": 169.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "CHGFCNUSG", "bbox": {"l": 255.00027, "t": 160.63707999999997, "r": 299.99957, "b": 169.46167000000003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": " command shows granting authorization to user ", "bbox": {"l": 300.00055, "t": 160.48766999999998, "r": 512.53802, "b": 169.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "HBEDOYA to administer and manage RCAC rules:", "bbox": {"l": 136.80096, "t": 172.48748999999998, "r": 360.41989, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}}]}, "text": "For example, the following CHGFCNUSG command shows granting authorization to user HBEDOYA to administer and manage RCAC rules:"}, {"label": "text", "id": 8, "page_no": 25, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.3306427001953, "t": 187.99078369140625, "r": 441.59686, "b": 198.88003540039062, "coord_origin": "TOPLEFT"}, "confidence": 0.9056942462921143, "cells": [{"id": 21, "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED)", "bbox": {"l": 136.80096, "t": 189.67645000000005, "r": 441.59686, "b": 198.45123, "coord_origin": "TOPLEFT"}}]}, "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED)"}, {"label": "section_header", "id": 9, "page_no": 25, "cluster": {"id": 9, "label": "section_header", "bbox": {"l": 63.9356689453125, "t": 218.1382598876953, "r": 544.47546, "b": 232.12425231933594, "coord_origin": "TOPLEFT"}, "confidence": 0.9636377096176147, "cells": [{"id": 22, "text": "2.1.7", "bbox": {"l": 64.800003, "t": 219.35468000000003, "r": 93.757614, "b": 231.34271, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Verifying function usage IDs for RCAC with the FUNCTION_USAGE view", "bbox": {"l": 97.377296, "t": 219.35468000000003, "r": 544.47546, "b": 231.34271, "coord_origin": "TOPLEFT"}}]}, "text": "2.1.7 Verifying function usage IDs for RCAC with the FUNCTION_USAGE view"}, {"label": "text", "id": 10, "page_no": 25, "cluster": {"id": 10, "label": "text", "bbox": {"l": 135.84828186035156, "t": 244.5770263671875, "r": 519.51794, "b": 266.7215, "coord_origin": "TOPLEFT"}, "confidence": 0.9737265110015869, "cells": [{"id": 24, "text": "The FUNCTION_USAGE view contains function usage configuration details. Table 2-1 ", "bbox": {"l": 136.8, "t": 245.50867000000005, "r": 519.51794, "b": 254.72168, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "describes the columns in the FUNCTION_USAGE view.", "bbox": {"l": 136.8, "t": 257.50847999999996, "r": 382.94443, "b": 266.7215, "coord_origin": "TOPLEFT"}}]}, "text": "The FUNCTION_USAGE view contains function usage configuration details. Table 2-1 describes the columns in the FUNCTION_USAGE view."}, {"label": "caption", "id": 11, "page_no": 25, "cluster": {"id": 11, "label": "caption", "bbox": {"l": 136.8, "t": 278.509521484375, "r": 284.9328308105469, "b": 287.88300000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.919783353805542, "cells": [{"id": 26, "text": "Table 2-1 FUNCTION_USAGE view", "bbox": {"l": 136.8, "t": 279.55798000000004, "r": 283.96805, "b": 287.88300000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Table 2-1 FUNCTION_USAGE view"}, {"label": "text", "id": 12, "page_no": 25, "cluster": {"id": 12, "label": "text", "bbox": {"l": 135.81077575683594, "t": 451.328857421875, "r": 547.2804, "b": 473.72153, "coord_origin": "TOPLEFT"}, "confidence": 0.9647641777992249, "cells": [{"id": 27, "text": "To discover who has authorization to define and manage RCAC, you can use the query that is ", "bbox": {"l": 136.8, "t": 452.50872999999996, "r": 547.2804, "b": 461.72171, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "shown in Example 2-1.", "bbox": {"l": 136.8, "t": 464.50854, "r": 237.76951999999997, "b": 473.72153, "coord_origin": "TOPLEFT"}}]}, "text": "To discover who has authorization to define and manage RCAC, you can use the query that is shown in Example 2-1."}, {"label": "caption", "id": 13, "page_no": 25, "cluster": {"id": 13, "label": "caption", "bbox": {"l": 136.28225708007812, "t": 485.76434326171875, "r": 462.98095703125, "b": 495.88201904296875, "coord_origin": "TOPLEFT"}, "confidence": 0.8165032267570496, "cells": [{"id": 29, "text": "Example 2-1 Query to determine who has authority to define and manage RCAC", "bbox": {"l": 136.8, "t": 486.55798, "r": 462.35419, "b": 494.883, "coord_origin": "TOPLEFT"}}]}, "text": "Example 2-1 Query to determine who has authority to define and manage RCAC"}, {"label": "text", "id": 14, "page_no": 25, "cluster": {"id": 14, "label": "text", "bbox": {"l": 136.8, "t": 503.65802, "r": 331.67731, "b": 584.43163, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 30, "text": "SELECT", "bbox": {"l": 136.8, "t": 503.65802, "r": 171.26956, "b": 512.4328, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "function_id,", "bbox": {"l": 182.75941, "t": 503.65802, "r": 251.69853, "b": 512.4328, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "user_name,", "bbox": {"l": 166.78244, "t": 515.6578400000001, "r": 241.73852999999997, "b": 524.43262, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "usage,", "bbox": {"l": 170.75961, "t": 527.65765, "r": 221.69901999999996, "b": 536.43242, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "user_type", "bbox": {"l": 167.53809, "t": 539.65747, "r": 236.69878, "b": 548.43222, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "FROM", "bbox": {"l": 136.8, "t": 551.65727, "r": 160.59396, "b": 560.43202, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "function_usage", "bbox": {"l": 178.43944, "t": 551.65727, "r": 261.71829, "b": 560.43202, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "WHERE", "bbox": {"l": 136.8, "t": 563.65707, "r": 162.44176, "b": 572.43182, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "function_id=\u2019QIBM_DB_SECADM\u2019", "bbox": {"l": 177.8268, "t": 563.65707, "r": 331.67731, "b": 572.43182, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ORDER BY", "bbox": {"l": 136.8, "t": 575.65688, "r": 178.77542, "b": 584.43163, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "user_name;", "bbox": {"l": 189.26929, "t": 575.65688, "r": 241.73856, "b": 584.43163, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT function_id, user_name, usage, user_type FROM function_usage WHERE function_id=\u2019QIBM_DB_SECADM\u2019 ORDER BY user_name;"}, {"label": "section_header", "id": 15, "page_no": 25, "cluster": {"id": 15, "label": "section_header", "bbox": {"l": 64.18024444580078, "t": 619.3924560546875, "r": 249.59605000000002, "b": 635.6513671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9656643271446228, "cells": [{"id": 41, "text": "2.2", "bbox": {"l": 64.800003, "t": 620.22063, "r": 87.569839, "b": 634.98363, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Separation of duties", "bbox": {"l": 92.123802, "t": 620.22063, "r": 249.59605000000002, "b": 634.98363, "coord_origin": "TOPLEFT"}}]}, "text": "2.2 Separation of duties"}, {"label": "text", "id": 16, "page_no": 25, "cluster": {"id": 16, "label": "text", "bbox": {"l": 136.1588592529297, "t": 651.8870849609375, "r": 547.22345, "b": 710.182373046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9853105545043945, "cells": [{"id": 43, "text": "Separation of duties helps businesses comply with industry regulations or organizational ", "bbox": {"l": 136.8, "t": 652.54872, "r": 529.09357, "b": 661.76172, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "requirements and simplifies the management of authorities. Separation of duties is commonly ", "bbox": {"l": 136.8, "t": 664.54852, "r": 547.22345, "b": 673.76153, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "used to prevent fraudulent activities or errors by a single person. It provides the ability for ", "bbox": {"l": 136.8, "t": 676.54833, "r": 530.89716, "b": 685.76134, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "administrative functions to be divided across individuals without overlapping responsibilities, ", "bbox": {"l": 136.80002, "t": 688.54814, "r": 544.33832, "b": 697.7611469999999, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "so that one user does not possess unlimited authority, such as with the *ALLOBJ authority.", "bbox": {"l": 136.80002, "t": 700.547951, "r": 536.28363, "b": 709.760956, "coord_origin": "TOPLEFT"}}]}, "text": "Separation of duties helps businesses comply with industry regulations or organizational requirements and simplifies the management of authorities. Separation of duties is commonly used to prevent fraudulent activities or errors by a single person. It provides the ability for administrative functions to be divided across individuals without overlapping responsibilities, so that one user does not possess unlimited authority, such as with the *ALLOBJ authority."}, {"label": "table", "id": 17, "page_no": 25, "cluster": {"id": 17, "label": "table", "bbox": {"l": 135.52508544921875, "t": 289.7249755859375, "r": 545.87060546875, "b": 442.0505065917969, "coord_origin": "TOPLEFT"}, "confidence": 0.985169529914856, "cells": [{"id": 48, "text": "Column name", "bbox": {"l": 142.8, "t": 296.5379899999999, "r": 202.245, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Data type", "bbox": {"l": 216.80878999999996, "t": 296.5379899999999, "r": 257.21069, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Description", "bbox": {"l": 289.47479, "t": 296.5379899999999, "r": 338.89468, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "FUNCTION_ID", "bbox": {"l": 142.8, "t": 315.55771, "r": 203.2323, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "VARCHAR(30)", "bbox": {"l": 216.7854, "t": 315.55771, "r": 276.0036, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ID of the function.", "bbox": {"l": 289.4577, "t": 315.55771, "r": 359.85394, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "USER_NAME", "bbox": {"l": 142.8, "t": 334.51801, "r": 198.6693, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "VARCHAR(10)", "bbox": {"l": 216.74129999999997, "t": 334.51801, "r": 275.92349, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "Name of the user profile that has a usage setting for this ", "bbox": {"l": 289.38208, "t": 334.51801, "r": 515.05359, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "function.", "bbox": {"l": 289.4397, "t": 345.55832, "r": 323.43362, "b": 353.88333, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "USAGE", "bbox": {"l": 142.79999, "t": 364.51862, "r": 173.98318, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "VARCHAR(7)", "bbox": {"l": 216.77367999999998, "t": 364.51862, "r": 270.97977, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Usage setting:", "bbox": {"l": 289.41626, "t": 364.51862, "r": 346.88757, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 375.69394000000005, "r": 293.9397, "b": 383.62292, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "ALLOWED: The user profile is allowed to use the function.", "bbox": {"l": 303.83969, "t": 375.55893, "r": 535.16766, "b": 383.88394, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 386.67395, "r": 293.9397, "b": 394.60294, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "DENIED: The user profile is not allowed to use the function.", "bbox": {"l": 303.83969, "t": 386.53894, "r": 539.10712, "b": 394.86395, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "USER_TYPE", "bbox": {"l": 142.8, "t": 405.55865, "r": 196.2249, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "VARCHAR(5)", "bbox": {"l": 216.75211, "t": 405.55865, "r": 270.99872, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Type of user profile:", "bbox": {"l": 289.43161, "t": 405.55865, "r": 367.8009, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 416.67368000000005, "r": 293.9397, "b": 424.60266, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "USER: The user profile is a user.", "bbox": {"l": 303.83969, "t": 416.53867, "r": 434.78159, "b": 424.86368, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 427.65369, "r": 293.9397, "b": 435.58267000000006, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "GROUP: The user profile is a group.", "bbox": {"l": 303.83969, "t": 427.51868, "r": 448.11963000000003, "b": 435.84369, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "ched", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl"], "num_rows": 5, "num_cols": 3, "table_cells": [{"bbox": {"l": 142.8, "t": 296.5379899999999, "r": 202.245, "b": 304.86301, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Column name", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 216.80878999999996, "t": 296.5379899999999, "r": 257.21069, "b": 304.86301, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Data type", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 289.47479, "t": 296.5379899999999, "r": 338.89468, "b": 304.86301, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Description", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8, "t": 315.55771, "r": 203.2323, "b": 323.88272, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "FUNCTION_ID", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.7854, "t": 315.55771, "r": 276.0036, "b": 323.88272, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(30)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.4577, "t": 315.55771, "r": 359.85394, "b": 323.88272, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "ID of the function.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8, "t": 334.51801, "r": 198.6693, "b": 342.84302, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USER_NAME", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.74129999999997, "t": 334.51801, "r": 275.92349, "b": 342.84302, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(10)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.38208, "t": 334.51801, "r": 515.05359, "b": 353.88333, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Name of the user profile that has a usage setting for this function.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.79999, "t": 364.51862, "r": 173.98318, "b": 372.84363, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USAGE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.77367999999998, "t": 364.51862, "r": 270.97977, "b": 372.84363, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(7)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.41626, "t": 364.51862, "r": 539.10712, "b": 394.86395, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Usage setting: GLYPH ALLOWED: The user profile is allowed to use the function. GLYPH DENIED: The user profile is not allowed to use the function.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8, "t": 405.55865, "r": 196.2249, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USER_TYPE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.75211, "t": 405.55865, "r": 270.99872, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(5)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.43161, "t": 405.55865, "r": 448.11963000000003, "b": 435.84369, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Type of user profile: GLYPH USER: The user profile is a user. GLYPH GROUP: The user profile is a group.", "column_header": false, "row_header": false, "row_section": false}]}], "body": [{"label": "section_header", "id": 2, "page_no": 25, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.09011840820312, "t": 70.1792984008789, "r": 335.49551, "b": 83.9942626953125, "coord_origin": "TOPLEFT"}, "confidence": 0.969738245010376, "cells": [{"id": 2, "text": "2.1.6", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 94.081459, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Change Function Usage CL command", "bbox": {"l": 97.741661, "t": 71.33471999999995, "r": 335.49551, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "2.1.6 Change Function Usage CL command"}, {"label": "text", "id": 3, "page_no": 25, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.83584594726562, "t": 96.62870788574219, "r": 547.28442, "b": 107.22466278076172, "coord_origin": "TOPLEFT"}, "confidence": 0.9551490545272827, "cells": [{"id": 4, "text": "The following CL commands can be used to work with, display, or change function usage IDs:", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 547.28442, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}]}, "text": "The following CL commands can be used to work with, display, or change function usage IDs:"}, {"label": "list_item", "id": 4, "page_no": 25, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.6907196044922, "t": 113.74026489257812, "r": 301.51749, "b": 124.55382537841797, "coord_origin": "TOPLEFT"}, "confidence": 0.9410473704338074, "cells": [{"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 114.67767000000003, "r": 141.78, "b": 123.45245, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Work Function Usage (", "bbox": {"l": 151.20016, "t": 114.52826000000005, "r": 253.26227000000003, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "WRKFCNUSG", "bbox": {"l": 253.26028, "t": 114.67767000000003, "r": 298.1998, "b": 123.50225999999998, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": ")", "bbox": {"l": 298.20081, "t": 114.52826000000005, "r": 301.51749, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Work Function Usage ( WRKFCNUSG )"}, {"label": "list_item", "id": 5, "page_no": 25, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.7242889404297, "t": 125.93077850341797, "r": 313.39777, "b": 136.68792724609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9417493939399719, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 126.67749000000003, "r": 141.78099, "b": 135.45227, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Change Function Usage (", "bbox": {"l": 151.20116, "t": 126.52808000000005, "r": 265.13354, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "CHGFCNUSG", "bbox": {"l": 265.08081, "t": 126.67749000000003, "r": 310.02032, "b": 135.50207999999998, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": ")", "bbox": {"l": 310.08109, "t": 126.52808000000005, "r": 313.39777, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Change Function Usage ( CHGFCNUSG )"}, {"label": "list_item", "id": 6, "page_no": 25, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.71124267578125, "t": 137.9629364013672, "r": 310.81711, "b": 148.59957885742188, "coord_origin": "TOPLEFT"}, "confidence": 0.9562166929244995, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.80098, "t": 138.67731000000003, "r": 141.78098, "b": 147.45209, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Display Function Usage (", "bbox": {"l": 151.20114, "t": 138.52788999999996, "r": 262.5639, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "DSPFCNUSG", "bbox": {"l": 262.56091, "t": 138.67731000000003, "r": 307.50043, "b": 147.50189, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ")", "bbox": {"l": 307.50043, "t": 138.52788999999996, "r": 310.81711, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Display Function Usage ( DSPFCNUSG )"}, {"label": "text", "id": 7, "page_no": 25, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.30247497558594, "t": 159.218505859375, "r": 512.53802, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9682289958000183, "cells": [{"id": 17, "text": "For example, the following ", "bbox": {"l": 136.79997, "t": 160.48766999999998, "r": 255.09984000000003, "b": 169.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "CHGFCNUSG", "bbox": {"l": 255.00027, "t": 160.63707999999997, "r": 299.99957, "b": 169.46167000000003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": " command shows granting authorization to user ", "bbox": {"l": 300.00055, "t": 160.48766999999998, "r": 512.53802, "b": 169.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "HBEDOYA to administer and manage RCAC rules:", "bbox": {"l": 136.80096, "t": 172.48748999999998, "r": 360.41989, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}}]}, "text": "For example, the following CHGFCNUSG command shows granting authorization to user HBEDOYA to administer and manage RCAC rules:"}, {"label": "text", "id": 8, "page_no": 25, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.3306427001953, "t": 187.99078369140625, "r": 441.59686, "b": 198.88003540039062, "coord_origin": "TOPLEFT"}, "confidence": 0.9056942462921143, "cells": [{"id": 21, "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED)", "bbox": {"l": 136.80096, "t": 189.67645000000005, "r": 441.59686, "b": 198.45123, "coord_origin": "TOPLEFT"}}]}, "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED)"}, {"label": "section_header", "id": 9, "page_no": 25, "cluster": {"id": 9, "label": "section_header", "bbox": {"l": 63.9356689453125, "t": 218.1382598876953, "r": 544.47546, "b": 232.12425231933594, "coord_origin": "TOPLEFT"}, "confidence": 0.9636377096176147, "cells": [{"id": 22, "text": "2.1.7", "bbox": {"l": 64.800003, "t": 219.35468000000003, "r": 93.757614, "b": 231.34271, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Verifying function usage IDs for RCAC with the FUNCTION_USAGE view", "bbox": {"l": 97.377296, "t": 219.35468000000003, "r": 544.47546, "b": 231.34271, "coord_origin": "TOPLEFT"}}]}, "text": "2.1.7 Verifying function usage IDs for RCAC with the FUNCTION_USAGE view"}, {"label": "text", "id": 10, "page_no": 25, "cluster": {"id": 10, "label": "text", "bbox": {"l": 135.84828186035156, "t": 244.5770263671875, "r": 519.51794, "b": 266.7215, "coord_origin": "TOPLEFT"}, "confidence": 0.9737265110015869, "cells": [{"id": 24, "text": "The FUNCTION_USAGE view contains function usage configuration details. Table 2-1 ", "bbox": {"l": 136.8, "t": 245.50867000000005, "r": 519.51794, "b": 254.72168, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "describes the columns in the FUNCTION_USAGE view.", "bbox": {"l": 136.8, "t": 257.50847999999996, "r": 382.94443, "b": 266.7215, "coord_origin": "TOPLEFT"}}]}, "text": "The FUNCTION_USAGE view contains function usage configuration details. Table 2-1 describes the columns in the FUNCTION_USAGE view."}, {"label": "caption", "id": 11, "page_no": 25, "cluster": {"id": 11, "label": "caption", "bbox": {"l": 136.8, "t": 278.509521484375, "r": 284.9328308105469, "b": 287.88300000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.919783353805542, "cells": [{"id": 26, "text": "Table 2-1 FUNCTION_USAGE view", "bbox": {"l": 136.8, "t": 279.55798000000004, "r": 283.96805, "b": 287.88300000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Table 2-1 FUNCTION_USAGE view"}, {"label": "text", "id": 12, "page_no": 25, "cluster": {"id": 12, "label": "text", "bbox": {"l": 135.81077575683594, "t": 451.328857421875, "r": 547.2804, "b": 473.72153, "coord_origin": "TOPLEFT"}, "confidence": 0.9647641777992249, "cells": [{"id": 27, "text": "To discover who has authorization to define and manage RCAC, you can use the query that is ", "bbox": {"l": 136.8, "t": 452.50872999999996, "r": 547.2804, "b": 461.72171, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "shown in Example 2-1.", "bbox": {"l": 136.8, "t": 464.50854, "r": 237.76951999999997, "b": 473.72153, "coord_origin": "TOPLEFT"}}]}, "text": "To discover who has authorization to define and manage RCAC, you can use the query that is shown in Example 2-1."}, {"label": "caption", "id": 13, "page_no": 25, "cluster": {"id": 13, "label": "caption", "bbox": {"l": 136.28225708007812, "t": 485.76434326171875, "r": 462.98095703125, "b": 495.88201904296875, "coord_origin": "TOPLEFT"}, "confidence": 0.8165032267570496, "cells": [{"id": 29, "text": "Example 2-1 Query to determine who has authority to define and manage RCAC", "bbox": {"l": 136.8, "t": 486.55798, "r": 462.35419, "b": 494.883, "coord_origin": "TOPLEFT"}}]}, "text": "Example 2-1 Query to determine who has authority to define and manage RCAC"}, {"label": "text", "id": 14, "page_no": 25, "cluster": {"id": 14, "label": "text", "bbox": {"l": 136.8, "t": 503.65802, "r": 331.67731, "b": 584.43163, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 30, "text": "SELECT", "bbox": {"l": 136.8, "t": 503.65802, "r": 171.26956, "b": 512.4328, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "function_id,", "bbox": {"l": 182.75941, "t": 503.65802, "r": 251.69853, "b": 512.4328, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "user_name,", "bbox": {"l": 166.78244, "t": 515.6578400000001, "r": 241.73852999999997, "b": 524.43262, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "usage,", "bbox": {"l": 170.75961, "t": 527.65765, "r": 221.69901999999996, "b": 536.43242, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "user_type", "bbox": {"l": 167.53809, "t": 539.65747, "r": 236.69878, "b": 548.43222, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "FROM", "bbox": {"l": 136.8, "t": 551.65727, "r": 160.59396, "b": 560.43202, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "function_usage", "bbox": {"l": 178.43944, "t": 551.65727, "r": 261.71829, "b": 560.43202, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "WHERE", "bbox": {"l": 136.8, "t": 563.65707, "r": 162.44176, "b": 572.43182, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "function_id=\u2019QIBM_DB_SECADM\u2019", "bbox": {"l": 177.8268, "t": 563.65707, "r": 331.67731, "b": 572.43182, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ORDER BY", "bbox": {"l": 136.8, "t": 575.65688, "r": 178.77542, "b": 584.43163, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "user_name;", "bbox": {"l": 189.26929, "t": 575.65688, "r": 241.73856, "b": 584.43163, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT function_id, user_name, usage, user_type FROM function_usage WHERE function_id=\u2019QIBM_DB_SECADM\u2019 ORDER BY user_name;"}, {"label": "section_header", "id": 15, "page_no": 25, "cluster": {"id": 15, "label": "section_header", "bbox": {"l": 64.18024444580078, "t": 619.3924560546875, "r": 249.59605000000002, "b": 635.6513671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9656643271446228, "cells": [{"id": 41, "text": "2.2", "bbox": {"l": 64.800003, "t": 620.22063, "r": 87.569839, "b": 634.98363, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Separation of duties", "bbox": {"l": 92.123802, "t": 620.22063, "r": 249.59605000000002, "b": 634.98363, "coord_origin": "TOPLEFT"}}]}, "text": "2.2 Separation of duties"}, {"label": "text", "id": 16, "page_no": 25, "cluster": {"id": 16, "label": "text", "bbox": {"l": 136.1588592529297, "t": 651.8870849609375, "r": 547.22345, "b": 710.182373046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9853105545043945, "cells": [{"id": 43, "text": "Separation of duties helps businesses comply with industry regulations or organizational ", "bbox": {"l": 136.8, "t": 652.54872, "r": 529.09357, "b": 661.76172, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "requirements and simplifies the management of authorities. Separation of duties is commonly ", "bbox": {"l": 136.8, "t": 664.54852, "r": 547.22345, "b": 673.76153, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "used to prevent fraudulent activities or errors by a single person. It provides the ability for ", "bbox": {"l": 136.8, "t": 676.54833, "r": 530.89716, "b": 685.76134, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "administrative functions to be divided across individuals without overlapping responsibilities, ", "bbox": {"l": 136.80002, "t": 688.54814, "r": 544.33832, "b": 697.7611469999999, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "so that one user does not possess unlimited authority, such as with the *ALLOBJ authority.", "bbox": {"l": 136.80002, "t": 700.547951, "r": 536.28363, "b": 709.760956, "coord_origin": "TOPLEFT"}}]}, "text": "Separation of duties helps businesses comply with industry regulations or organizational requirements and simplifies the management of authorities. Separation of duties is commonly used to prevent fraudulent activities or errors by a single person. It provides the ability for administrative functions to be divided across individuals without overlapping responsibilities, so that one user does not possess unlimited authority, such as with the *ALLOBJ authority."}, {"label": "table", "id": 17, "page_no": 25, "cluster": {"id": 17, "label": "table", "bbox": {"l": 135.52508544921875, "t": 289.7249755859375, "r": 545.87060546875, "b": 442.0505065917969, "coord_origin": "TOPLEFT"}, "confidence": 0.985169529914856, "cells": [{"id": 48, "text": "Column name", "bbox": {"l": 142.8, "t": 296.5379899999999, "r": 202.245, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Data type", "bbox": {"l": 216.80878999999996, "t": 296.5379899999999, "r": 257.21069, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Description", "bbox": {"l": 289.47479, "t": 296.5379899999999, "r": 338.89468, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "FUNCTION_ID", "bbox": {"l": 142.8, "t": 315.55771, "r": 203.2323, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "VARCHAR(30)", "bbox": {"l": 216.7854, "t": 315.55771, "r": 276.0036, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ID of the function.", "bbox": {"l": 289.4577, "t": 315.55771, "r": 359.85394, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "USER_NAME", "bbox": {"l": 142.8, "t": 334.51801, "r": 198.6693, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "VARCHAR(10)", "bbox": {"l": 216.74129999999997, "t": 334.51801, "r": 275.92349, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "Name of the user profile that has a usage setting for this ", "bbox": {"l": 289.38208, "t": 334.51801, "r": 515.05359, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "function.", "bbox": {"l": 289.4397, "t": 345.55832, "r": 323.43362, "b": 353.88333, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "USAGE", "bbox": {"l": 142.79999, "t": 364.51862, "r": 173.98318, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "VARCHAR(7)", "bbox": {"l": 216.77367999999998, "t": 364.51862, "r": 270.97977, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Usage setting:", "bbox": {"l": 289.41626, "t": 364.51862, "r": 346.88757, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 375.69394000000005, "r": 293.9397, "b": 383.62292, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "ALLOWED: The user profile is allowed to use the function.", "bbox": {"l": 303.83969, "t": 375.55893, "r": 535.16766, "b": 383.88394, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 386.67395, "r": 293.9397, "b": 394.60294, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "DENIED: The user profile is not allowed to use the function.", "bbox": {"l": 303.83969, "t": 386.53894, "r": 539.10712, "b": 394.86395, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "USER_TYPE", "bbox": {"l": 142.8, "t": 405.55865, "r": 196.2249, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "VARCHAR(5)", "bbox": {"l": 216.75211, "t": 405.55865, "r": 270.99872, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Type of user profile:", "bbox": {"l": 289.43161, "t": 405.55865, "r": 367.8009, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 416.67368000000005, "r": 293.9397, "b": 424.60266, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "USER: The user profile is a user.", "bbox": {"l": 303.83969, "t": 416.53867, "r": 434.78159, "b": 424.86368, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 427.65369, "r": 293.9397, "b": 435.58267000000006, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "GROUP: The user profile is a group.", "bbox": {"l": 303.83969, "t": 427.51868, "r": 448.11963000000003, "b": 435.84369, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "ched", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl"], "num_rows": 5, "num_cols": 3, "table_cells": [{"bbox": {"l": 142.8, "t": 296.5379899999999, "r": 202.245, "b": 304.86301, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Column name", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 216.80878999999996, "t": 296.5379899999999, "r": 257.21069, "b": 304.86301, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Data type", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 289.47479, "t": 296.5379899999999, "r": 338.89468, "b": 304.86301, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Description", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8, "t": 315.55771, "r": 203.2323, "b": 323.88272, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "FUNCTION_ID", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.7854, "t": 315.55771, "r": 276.0036, "b": 323.88272, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(30)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.4577, "t": 315.55771, "r": 359.85394, "b": 323.88272, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "ID of the function.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8, "t": 334.51801, "r": 198.6693, "b": 342.84302, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USER_NAME", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.74129999999997, "t": 334.51801, "r": 275.92349, "b": 342.84302, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(10)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.38208, "t": 334.51801, "r": 515.05359, "b": 353.88333, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Name of the user profile that has a usage setting for this function.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.79999, "t": 364.51862, "r": 173.98318, "b": 372.84363, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USAGE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.77367999999998, "t": 364.51862, "r": 270.97977, "b": 372.84363, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(7)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.41626, "t": 364.51862, "r": 539.10712, "b": 394.86395, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Usage setting: GLYPH ALLOWED: The user profile is allowed to use the function. GLYPH DENIED: The user profile is not allowed to use the function.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8, "t": 405.55865, "r": 196.2249, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USER_TYPE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.75211, "t": 405.55865, "r": 270.99872, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(5)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.43161, "t": 405.55865, "r": 448.11963000000003, "b": 435.84369, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Type of user profile: GLYPH USER: The user profile is a user. GLYPH GROUP: The user profile is a group.", "column_header": false, "row_header": false, "row_section": false}]}], "headers": [{"label": "page_footer", "id": 0, "page_no": 25, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.4488525390625, "t": 754.418701171875, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9166076183319092, "cells": [{"id": 0, "text": "10 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "10"}, {"label": "page_footer", "id": 1, "page_no": 25, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.35774993896484, "t": 754.6892700195312, "r": 334.42142, "b": 763.9585571289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9529878497123718, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 26, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 2. Roles and separation of duties ", "bbox": {"l": 355.32001, "t": 755.538002, "r": 523.54071, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "11", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "For example, assume that a business has assigned the duty to manage security on IBM i to ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 542.69434, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Theresa. Before release IBM i 7.2, to grant privileges, Theresa had to have the same ", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 513.67804, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "privileges Theresa was granting to others. Therefore, to grant *USE privileges to the ", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 509.71902, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "PAYROLL table, Theresa had to have *OBJMGT and *USE authority (or a higher level of ", "bbox": {"l": 136.79959, "t": 107.50847999999996, "r": 528.20184, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "authority, such as *ALLOBJ). This requirement allowed Theresa to access the data in the ", "bbox": {"l": 136.79959, "t": 119.50829999999996, "r": 531.84015, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "PAYROLL table even though Theresa\u2019s job description was only to manage its security.", "bbox": {"l": 136.79959, "t": 131.50811999999996, "r": 519.24982, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "In IBM i 7.2, the QIBM_DB_SECADM function usage grants authorities, revokes authorities, ", "bbox": {"l": 136.79959, "t": 153.52770999999996, "r": 544.16064, "b": 162.74072, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "changes ownership, or changes the primary group without giving access to the object or, in ", "bbox": {"l": 136.79959, "t": 165.52752999999996, "r": 540.66156, "b": 174.74054, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "the case of a database table, to the data that is in the table or allowing other operations on the ", "bbox": {"l": 136.79959, "t": 177.52733999999998, "r": 547.30396, "b": 186.74036, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "table. ", "bbox": {"l": 136.79959, "t": 189.52715999999998, "r": 163.6189, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "QIBM_DB_SECADM function usage can be granted only by a user with *SECADM special ", "bbox": {"l": 136.79959, "t": 211.48694, "r": 538.65076, "b": 220.69994999999994, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "authority and can be given to a user or a group.", "bbox": {"l": 136.79959, "t": 223.48676, "r": 346.34808, "b": 232.69976999999994, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "QIBM_DB_SECADM also is responsible for administering RCAC, which restricts which rows ", "bbox": {"l": 136.79959, "t": 245.50635, "r": 545.79602, "b": 254.71936000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "a user is allowed to access in a table and whether a user is allowed to see information in ", "bbox": {"l": 136.79959, "t": 257.50616, "r": 529.46149, "b": 266.71918000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "certain columns of a table.", "bbox": {"l": 136.79959, "t": 269.50598, "r": 253.47696999999997, "b": 278.71898999999996, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "A preferred practice is that the RCAC administrator has the QIBM_DB_SECADM function ", "bbox": {"l": 136.79959, "t": 291.52557, "r": 533.78137, "b": 300.73856, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "usage ID, but absolutely no other data privileges. The result is that the RCAC administrator ", "bbox": {"l": 136.79959, "t": 303.52539, "r": 539.80713, "b": 312.73837000000003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "can deploy and maintain the RCAC constructs, but cannot grant themselves unauthorized ", "bbox": {"l": 136.79959, "t": 315.52521, "r": 534.5741, "b": 324.73819, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "access to data itself.", "bbox": {"l": 136.79959, "t": 327.52502, "r": 227.02324, "b": 336.73801, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Table 2-2 shows a comparison of the different function usage IDs and *JOBCTL authority to ", "bbox": {"l": 136.79959, "t": 349.48483, "r": 543.06714, "b": 358.69780999999995, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "the different CL commands and DB2 for i tools.", "bbox": {"l": 136.79959, "t": 361.48465, "r": 343.79236, "b": 370.69763000000006, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Table 2-2 Comparison of the different function usage IDs and *JOBCTL authority", "bbox": {"l": 64.800003, "t": 383.5379899999999, "r": 391.75464, "b": 391.86301, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "User action", "bbox": {"l": 70.800301, "t": 400.51827999999995, "r": 119.78551, "b": 408.84329, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "*JOBCTL", "bbox": {"l": 424.93805, "t": 447.52255, "r": 433.26297000000005, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "QIBM_DB_SECADM", "bbox": {"l": 450.13806, "t": 401.6000700000001, "r": 458.46298, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "QIBM_DB_SQLADM", "bbox": {"l": 475.93835000000007, "t": 401.53442, "r": 484.26327999999995, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "QIBM_DB_SYSMON", "bbox": {"l": 501.13837, "t": 401.6145, "r": 509.46329, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "No Authority", "bbox": {"l": 526.39862, "t": 432.79944, "r": 534.72357, "b": 487.02005, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "SET CURRENT DEGREE", "bbox": {"l": 70.800003, "t": 498.69299, "r": 151.6794, "b": 506.66699, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " (SQL statement)", "bbox": {"l": 151.6803, "t": 498.55798, "r": 220.15681000000004, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "X", "bbox": {"l": 429.0, "t": 498.55798, "r": 435.00299000000007, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "X", "bbox": {"l": 480.00031, "t": 498.55798, "r": 486.0033, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "CHGQRYA", "bbox": {"l": 70.800018, "t": 517.65329, "r": 102.23972, "b": 525.62729, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": " command targeting a different user\u2019s job", "bbox": {"l": 102.23972, "t": 517.51828, "r": 264.5538, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "X", "bbox": {"l": 429.00003, "t": 517.51828, "r": 435.00302000000005, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "X", "bbox": {"l": 480.00034, "t": 517.51828, "r": 486.00333, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "STRDBMON", "bbox": {"l": 70.800049, "t": 536.67299, "r": 106.73975, "b": 544.64699, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": " or ", "bbox": {"l": 106.73975, "t": 536.5379800000001, "r": 119.77895, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ENDDBMON", "bbox": {"l": 119.69975000000001, "t": 536.67299, "r": 155.69974, "b": 544.64699, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": " commands targeting a different user\u2019s job", "bbox": {"l": 155.69974, "t": 536.5379800000001, "r": 322.50574, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "X", "bbox": {"l": 429.00003, "t": 536.5379800000001, "r": 435.00302000000005, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "X", "bbox": {"l": 480.00034, "t": 536.5379800000001, "r": 486.00333, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "STRDBMON", "bbox": {"l": 70.800049, "t": 555.69269, "r": 106.73975, "b": 563.66669, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": " or ", "bbox": {"l": 106.73975, "t": 555.55768, "r": 119.77895, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "ENDDBMON", "bbox": {"l": 119.69975000000001, "t": 555.69269, "r": 155.69974, "b": 563.66669, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": " commands targeting a job that matches the current user", "bbox": {"l": 155.69974, "t": 555.55768, "r": 381.02185, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "X", "bbox": {"l": 429.00003, "t": 555.55768, "r": 435.00302000000005, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "X", "bbox": {"l": 480.00034, "t": 555.55768, "r": 486.00333, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "X", "bbox": {"l": 505.26061999999996, "t": 555.55768, "r": 511.26361, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "X", "bbox": {"l": 530.76031, "t": 555.55768, "r": 536.76331, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "QUSRJOBI() API format 900 or System i Navigator\u2019s SQL Details for Job", "bbox": {"l": 70.800049, "t": 574.51797, "r": 359.51736, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "X", "bbox": {"l": 429.0000600000001, "t": 574.51797, "r": 435.00305000000003, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "X", "bbox": {"l": 480.00037, "t": 574.51797, "r": 486.00335999999993, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "X", "bbox": {"l": 505.2606799999999, "t": 574.51797, "r": 511.26367, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "Visual Explain within Run SQL scripts", "bbox": {"l": 70.800079, "t": 593.5376699999999, "r": 220.75178999999997, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "X", "bbox": {"l": 429.0000600000001, "t": 593.5376699999999, "r": 435.00305000000003, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "X", "bbox": {"l": 480.00037, "t": 593.5376699999999, "r": 486.00335999999993, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "X", "bbox": {"l": 505.2606799999999, "t": 593.5376699999999, "r": 511.26367, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "X", "bbox": {"l": 530.76038, "t": 593.5376699999999, "r": 536.76337, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Visual Explain outside of Run SQL scripts", "bbox": {"l": 70.800079, "t": 612.55737, "r": 236.6548, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "X", "bbox": {"l": 429.0000600000001, "t": 612.55737, "r": 435.00305000000003, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "X", "bbox": {"l": 480.00037, "t": 612.55737, "r": 486.00335999999993, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "ANALYZE PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 631.51767, "r": 213.12968, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "X", "bbox": {"l": 429.0000600000001, "t": 631.51767, "r": 435.00305000000003, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "X", "bbox": {"l": 480.00037, "t": 631.51767, "r": 486.00335999999993, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "DUMP PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 650.53737, "r": 199.87808, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "X", "bbox": {"l": 429.0000600000001, "t": 650.53737, "r": 435.00305000000003, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "X", "bbox": {"l": 480.00037, "t": 650.53737, "r": 486.00335999999993, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "MODIFY PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 669.55708, "r": 208.36777, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "X", "bbox": {"l": 429.0000600000001, "t": 669.55708, "r": 435.00305000000003, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "X", "bbox": {"l": 480.00037, "t": 669.55708, "r": 486.00335999999993, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "MODIFY PLAN CACHE PROPERTIES procedure (currently does not check authority)", "bbox": {"l": 70.800079, "t": 688.57677, "r": 411.20264, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "X", "bbox": {"l": 429.0000600000001, "t": 688.57677, "r": 435.00305000000003, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "X", "bbox": {"l": 480.00037, "t": 688.57677, "r": 486.00335999999993, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "CHANGE PLAN CACHE SIZE procedure (currently does not check authority)", "bbox": {"l": 70.800079, "t": 707.537071, "r": 377.12585, "b": 715.862068, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "X", "bbox": {"l": 429.0000600000001, "t": 707.537071, "r": 435.00305000000003, "b": 715.862068, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "X", "bbox": {"l": 480.00037, "t": 707.537071, "r": 486.00335999999993, "b": 715.862068, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 354.4815673828125, "t": 754.9415893554688, "r": 523.54071, "b": 764.1055297851562, "coord_origin": "TOPLEFT"}, "confidence": 0.9508126378059387, "cells": [{"id": 0, "text": "Chapter 2. Roles and separation of duties ", "bbox": {"l": 355.32001, "t": 755.538002, "r": 523.54071, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 536.0808715820312, "t": 754.2325439453125, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8987302780151367, "cells": [{"id": 1, "text": "11", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.92747497558594, "t": 70.65541076660156, "r": 542.69434, "b": 141.03610229492188, "coord_origin": "TOPLEFT"}, "confidence": 0.9789126515388489, "cells": [{"id": 2, "text": "For example, assume that a business has assigned the duty to manage security on IBM i to ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 542.69434, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Theresa. Before release IBM i 7.2, to grant privileges, Theresa had to have the same ", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 513.67804, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "privileges Theresa was granting to others. Therefore, to grant *USE privileges to the ", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 509.71902, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "PAYROLL table, Theresa had to have *OBJMGT and *USE authority (or a higher level of ", "bbox": {"l": 136.79959, "t": 107.50847999999996, "r": 528.20184, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "authority, such as *ALLOBJ). This requirement allowed Theresa to access the data in the ", "bbox": {"l": 136.79959, "t": 119.50829999999996, "r": 531.84015, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "PAYROLL table even though Theresa\u2019s job description was only to manage its security.", "bbox": {"l": 136.79959, "t": 131.50811999999996, "r": 519.24982, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 136.04833984375, "t": 152.51307678222656, "r": 547.30396, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9665539860725403, "cells": [{"id": 8, "text": "In IBM i 7.2, the QIBM_DB_SECADM function usage grants authorities, revokes authorities, ", "bbox": {"l": 136.79959, "t": 153.52770999999996, "r": 544.16064, "b": 162.74072, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "changes ownership, or changes the primary group without giving access to the object or, in ", "bbox": {"l": 136.79959, "t": 165.52752999999996, "r": 540.66156, "b": 174.74054, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "the case of a database table, to the data that is in the table or allowing other operations on the ", "bbox": {"l": 136.79959, "t": 177.52733999999998, "r": 547.30396, "b": 186.74036, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "table. ", "bbox": {"l": 136.79959, "t": 189.52715999999998, "r": 163.6189, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 136.00685119628906, "t": 210.41148376464844, "r": 538.65076, "b": 233.08047485351562, "coord_origin": "TOPLEFT"}, "confidence": 0.9691813588142395, "cells": [{"id": 12, "text": "QIBM_DB_SECADM function usage can be granted only by a user with *SECADM special ", "bbox": {"l": 136.79959, "t": 211.48694, "r": 538.65076, "b": 220.69994999999994, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "authority and can be given to a user or a group.", "bbox": {"l": 136.79959, "t": 223.48676, "r": 346.34808, "b": 232.69976999999994, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.68702697753906, "t": 244.5381622314453, "r": 545.79602, "b": 278.71898999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.9729602932929993, "cells": [{"id": 14, "text": "QIBM_DB_SECADM also is responsible for administering RCAC, which restricts which rows ", "bbox": {"l": 136.79959, "t": 245.50635, "r": 545.79602, "b": 254.71936000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "a user is allowed to access in a table and whether a user is allowed to see information in ", "bbox": {"l": 136.79959, "t": 257.50616, "r": 529.46149, "b": 266.71918000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "certain columns of a table.", "bbox": {"l": 136.79959, "t": 269.50598, "r": 253.47696999999997, "b": 278.71898999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 135.86065673828125, "t": 290.6051330566406, "r": 539.80713, "b": 336.73801, "coord_origin": "TOPLEFT"}, "confidence": 0.9815152883529663, "cells": [{"id": 17, "text": "A preferred practice is that the RCAC administrator has the QIBM_DB_SECADM function ", "bbox": {"l": 136.79959, "t": 291.52557, "r": 533.78137, "b": 300.73856, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "usage ID, but absolutely no other data privileges. The result is that the RCAC administrator ", "bbox": {"l": 136.79959, "t": 303.52539, "r": 539.80713, "b": 312.73837000000003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "can deploy and maintain the RCAC constructs, but cannot grant themselves unauthorized ", "bbox": {"l": 136.79959, "t": 315.52521, "r": 534.5741, "b": 324.73819, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "access to data itself.", "bbox": {"l": 136.79959, "t": 327.52502, "r": 227.02324, "b": 336.73801, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 135.7205352783203, "t": 348.60931396484375, "r": 543.06714, "b": 370.69763000000006, "coord_origin": "TOPLEFT"}, "confidence": 0.9672255516052246, "cells": [{"id": 21, "text": "Table 2-2 shows a comparison of the different function usage IDs and *JOBCTL authority to ", "bbox": {"l": 136.79959, "t": 349.48483, "r": 543.06714, "b": 358.69780999999995, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "the different CL commands and DB2 for i tools.", "bbox": {"l": 136.79959, "t": 361.48465, "r": 343.79236, "b": 370.69763000000006, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "caption", "bbox": {"l": 64.800003, "t": 382.5287170410156, "r": 392.4624328613281, "b": 392.25494384765625, "coord_origin": "TOPLEFT"}, "confidence": 0.933719277381897, "cells": [{"id": 23, "text": "Table 2-2 Comparison of the different function usage IDs and *JOBCTL authority", "bbox": {"l": 64.800003, "t": 383.5379899999999, "r": 391.75464, "b": 391.86301, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "table", "bbox": {"l": 64.41139221191406, "t": 393.6136474609375, "r": 547.3950805664062, "b": 721.60791015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9899571537971497, "cells": [{"id": 24, "text": "User action", "bbox": {"l": 70.800301, "t": 400.51827999999995, "r": 119.78551, "b": 408.84329, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "*JOBCTL", "bbox": {"l": 424.93805, "t": 447.52255, "r": 433.26297000000005, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "QIBM_DB_SECADM", "bbox": {"l": 450.13806, "t": 401.6000700000001, "r": 458.46298, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "QIBM_DB_SQLADM", "bbox": {"l": 475.93835000000007, "t": 401.53442, "r": 484.26327999999995, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "QIBM_DB_SYSMON", "bbox": {"l": 501.13837, "t": 401.6145, "r": 509.46329, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "No Authority", "bbox": {"l": 526.39862, "t": 432.79944, "r": 534.72357, "b": 487.02005, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "SET CURRENT DEGREE", "bbox": {"l": 70.800003, "t": 498.69299, "r": 151.6794, "b": 506.66699, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " (SQL statement)", "bbox": {"l": 151.6803, "t": 498.55798, "r": 220.15681000000004, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "X", "bbox": {"l": 429.0, "t": 498.55798, "r": 435.00299000000007, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "X", "bbox": {"l": 480.00031, "t": 498.55798, "r": 486.0033, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "CHGQRYA", "bbox": {"l": 70.800018, "t": 517.65329, "r": 102.23972, "b": 525.62729, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": " command targeting a different user\u2019s job", "bbox": {"l": 102.23972, "t": 517.51828, "r": 264.5538, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "X", "bbox": {"l": 429.00003, "t": 517.51828, "r": 435.00302000000005, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "X", "bbox": {"l": 480.00034, "t": 517.51828, "r": 486.00333, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "STRDBMON", "bbox": {"l": 70.800049, "t": 536.67299, "r": 106.73975, "b": 544.64699, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": " or ", "bbox": {"l": 106.73975, "t": 536.5379800000001, "r": 119.77895, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ENDDBMON", "bbox": {"l": 119.69975000000001, "t": 536.67299, "r": 155.69974, "b": 544.64699, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": " commands targeting a different user\u2019s job", "bbox": {"l": 155.69974, "t": 536.5379800000001, "r": 322.50574, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "X", "bbox": {"l": 429.00003, "t": 536.5379800000001, "r": 435.00302000000005, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "X", "bbox": {"l": 480.00034, "t": 536.5379800000001, "r": 486.00333, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "STRDBMON", "bbox": {"l": 70.800049, "t": 555.69269, "r": 106.73975, "b": 563.66669, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": " or ", "bbox": {"l": 106.73975, "t": 555.55768, "r": 119.77895, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "ENDDBMON", "bbox": {"l": 119.69975000000001, "t": 555.69269, "r": 155.69974, "b": 563.66669, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": " commands targeting a job that matches the current user", "bbox": {"l": 155.69974, "t": 555.55768, "r": 381.02185, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "X", "bbox": {"l": 429.00003, "t": 555.55768, "r": 435.00302000000005, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "X", "bbox": {"l": 480.00034, "t": 555.55768, "r": 486.00333, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "X", "bbox": {"l": 505.26061999999996, "t": 555.55768, "r": 511.26361, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "X", "bbox": {"l": 530.76031, "t": 555.55768, "r": 536.76331, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "QUSRJOBI() API format 900 or System i Navigator\u2019s SQL Details for Job", "bbox": {"l": 70.800049, "t": 574.51797, "r": 359.51736, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "X", "bbox": {"l": 429.0000600000001, "t": 574.51797, "r": 435.00305000000003, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "X", "bbox": {"l": 480.00037, "t": 574.51797, "r": 486.00335999999993, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "X", "bbox": {"l": 505.2606799999999, "t": 574.51797, "r": 511.26367, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "Visual Explain within Run SQL scripts", "bbox": {"l": 70.800079, "t": 593.5376699999999, "r": 220.75178999999997, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "X", "bbox": {"l": 429.0000600000001, "t": 593.5376699999999, "r": 435.00305000000003, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "X", "bbox": {"l": 480.00037, "t": 593.5376699999999, "r": 486.00335999999993, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "X", "bbox": {"l": 505.2606799999999, "t": 593.5376699999999, "r": 511.26367, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "X", "bbox": {"l": 530.76038, "t": 593.5376699999999, "r": 536.76337, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Visual Explain outside of Run SQL scripts", "bbox": {"l": 70.800079, "t": 612.55737, "r": 236.6548, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "X", "bbox": {"l": 429.0000600000001, "t": 612.55737, "r": 435.00305000000003, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "X", "bbox": {"l": 480.00037, "t": 612.55737, "r": 486.00335999999993, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "ANALYZE PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 631.51767, "r": 213.12968, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "X", "bbox": {"l": 429.0000600000001, "t": 631.51767, "r": 435.00305000000003, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "X", "bbox": {"l": 480.00037, "t": 631.51767, "r": 486.00335999999993, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "DUMP PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 650.53737, "r": 199.87808, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "X", "bbox": {"l": 429.0000600000001, "t": 650.53737, "r": 435.00305000000003, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "X", "bbox": {"l": 480.00037, "t": 650.53737, "r": 486.00335999999993, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "MODIFY PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 669.55708, "r": 208.36777, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "X", "bbox": {"l": 429.0000600000001, "t": 669.55708, "r": 435.00305000000003, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "X", "bbox": {"l": 480.00037, "t": 669.55708, "r": 486.00335999999993, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "MODIFY PLAN CACHE PROPERTIES procedure (currently does not check authority)", "bbox": {"l": 70.800079, "t": 688.57677, "r": 411.20264, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "X", "bbox": {"l": 429.0000600000001, "t": 688.57677, "r": 435.00305000000003, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "X", "bbox": {"l": 480.00037, "t": 688.57677, "r": 486.00335999999993, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "CHANGE PLAN CACHE SIZE procedure (currently does not check authority)", "bbox": {"l": 70.800079, "t": 707.537071, "r": 377.12585, "b": 715.862068, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "X", "bbox": {"l": 429.0000600000001, "t": 707.537071, "r": 435.00305000000003, "b": 715.862068, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "X", "bbox": {"l": 480.00037, "t": 707.537071, "r": 486.00335999999993, "b": 715.862068, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {"9": {"label": "table", "id": 9, "page_no": 26, "cluster": {"id": 9, "label": "table", "bbox": {"l": 64.41139221191406, "t": 393.6136474609375, "r": 547.3950805664062, "b": 721.60791015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9899571537971497, "cells": [{"id": 24, "text": "User action", "bbox": {"l": 70.800301, "t": 400.51827999999995, "r": 119.78551, "b": 408.84329, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "*JOBCTL", "bbox": {"l": 424.93805, "t": 447.52255, "r": 433.26297000000005, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "QIBM_DB_SECADM", "bbox": {"l": 450.13806, "t": 401.6000700000001, "r": 458.46298, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "QIBM_DB_SQLADM", "bbox": {"l": 475.93835000000007, "t": 401.53442, "r": 484.26327999999995, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "QIBM_DB_SYSMON", "bbox": {"l": 501.13837, "t": 401.6145, "r": 509.46329, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "No Authority", "bbox": {"l": 526.39862, "t": 432.79944, "r": 534.72357, "b": 487.02005, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "SET CURRENT DEGREE", "bbox": {"l": 70.800003, "t": 498.69299, "r": 151.6794, "b": 506.66699, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " (SQL statement)", "bbox": {"l": 151.6803, "t": 498.55798, "r": 220.15681000000004, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "X", "bbox": {"l": 429.0, "t": 498.55798, "r": 435.00299000000007, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "X", "bbox": {"l": 480.00031, "t": 498.55798, "r": 486.0033, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "CHGQRYA", "bbox": {"l": 70.800018, "t": 517.65329, "r": 102.23972, "b": 525.62729, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": " command targeting a different user\u2019s job", "bbox": {"l": 102.23972, "t": 517.51828, "r": 264.5538, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "X", "bbox": {"l": 429.00003, "t": 517.51828, "r": 435.00302000000005, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "X", "bbox": {"l": 480.00034, "t": 517.51828, "r": 486.00333, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "STRDBMON", "bbox": {"l": 70.800049, "t": 536.67299, "r": 106.73975, "b": 544.64699, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": " or ", "bbox": {"l": 106.73975, "t": 536.5379800000001, "r": 119.77895, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ENDDBMON", "bbox": {"l": 119.69975000000001, "t": 536.67299, "r": 155.69974, "b": 544.64699, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": " commands targeting a different user\u2019s job", "bbox": {"l": 155.69974, "t": 536.5379800000001, "r": 322.50574, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "X", "bbox": {"l": 429.00003, "t": 536.5379800000001, "r": 435.00302000000005, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "X", "bbox": {"l": 480.00034, "t": 536.5379800000001, "r": 486.00333, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "STRDBMON", "bbox": {"l": 70.800049, "t": 555.69269, "r": 106.73975, "b": 563.66669, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": " or ", "bbox": {"l": 106.73975, "t": 555.55768, "r": 119.77895, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "ENDDBMON", "bbox": {"l": 119.69975000000001, "t": 555.69269, "r": 155.69974, "b": 563.66669, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": " commands targeting a job that matches the current user", "bbox": {"l": 155.69974, "t": 555.55768, "r": 381.02185, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "X", "bbox": {"l": 429.00003, "t": 555.55768, "r": 435.00302000000005, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "X", "bbox": {"l": 480.00034, "t": 555.55768, "r": 486.00333, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "X", "bbox": {"l": 505.26061999999996, "t": 555.55768, "r": 511.26361, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "X", "bbox": {"l": 530.76031, "t": 555.55768, "r": 536.76331, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "QUSRJOBI() API format 900 or System i Navigator\u2019s SQL Details for Job", "bbox": {"l": 70.800049, "t": 574.51797, "r": 359.51736, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "X", "bbox": {"l": 429.0000600000001, "t": 574.51797, "r": 435.00305000000003, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "X", "bbox": {"l": 480.00037, "t": 574.51797, "r": 486.00335999999993, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "X", "bbox": {"l": 505.2606799999999, "t": 574.51797, "r": 511.26367, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "Visual Explain within Run SQL scripts", "bbox": {"l": 70.800079, "t": 593.5376699999999, "r": 220.75178999999997, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "X", "bbox": {"l": 429.0000600000001, "t": 593.5376699999999, "r": 435.00305000000003, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "X", "bbox": {"l": 480.00037, "t": 593.5376699999999, "r": 486.00335999999993, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "X", "bbox": {"l": 505.2606799999999, "t": 593.5376699999999, "r": 511.26367, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "X", "bbox": {"l": 530.76038, "t": 593.5376699999999, "r": 536.76337, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Visual Explain outside of Run SQL scripts", "bbox": {"l": 70.800079, "t": 612.55737, "r": 236.6548, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "X", "bbox": {"l": 429.0000600000001, "t": 612.55737, "r": 435.00305000000003, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "X", "bbox": {"l": 480.00037, "t": 612.55737, "r": 486.00335999999993, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "ANALYZE PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 631.51767, "r": 213.12968, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "X", "bbox": {"l": 429.0000600000001, "t": 631.51767, "r": 435.00305000000003, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "X", "bbox": {"l": 480.00037, "t": 631.51767, "r": 486.00335999999993, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "DUMP PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 650.53737, "r": 199.87808, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "X", "bbox": {"l": 429.0000600000001, "t": 650.53737, "r": 435.00305000000003, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "X", "bbox": {"l": 480.00037, "t": 650.53737, "r": 486.00335999999993, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "MODIFY PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 669.55708, "r": 208.36777, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "X", "bbox": {"l": 429.0000600000001, "t": 669.55708, "r": 435.00305000000003, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "X", "bbox": {"l": 480.00037, "t": 669.55708, "r": 486.00335999999993, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "MODIFY PLAN CACHE PROPERTIES procedure (currently does not check authority)", "bbox": {"l": 70.800079, "t": 688.57677, "r": 411.20264, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "X", "bbox": {"l": 429.0000600000001, "t": 688.57677, "r": 435.00305000000003, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "X", "bbox": {"l": 480.00037, "t": 688.57677, "r": 486.00335999999993, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "CHANGE PLAN CACHE SIZE procedure (currently does not check authority)", "bbox": {"l": 70.800079, "t": 707.537071, "r": 377.12585, "b": 715.862068, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "X", "bbox": {"l": 429.0000600000001, "t": 707.537071, "r": 435.00305000000003, "b": 715.862068, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "X", "bbox": {"l": 480.00037, "t": 707.537071, "r": 486.00335999999993, "b": 715.862068, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["rhed", "fcel", "fcel", "fcel", "fcel", "fcel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "fcel", "fcel", "nl", "rhed", "fcel", "ecel", "fcel", "fcel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "fcel", "fcel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl"], "num_rows": 13, "num_cols": 6, "table_cells": [{"bbox": {"l": 70.800301, "t": 400.51827999999995, "r": 119.78551, "b": 408.84329, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "User action", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 424.93805, "t": 447.52255, "r": 433.26297000000005, "b": 487.01999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "*JOBCTL", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 450.13806, "t": 401.6000700000001, "r": 458.46298, "b": 487.01999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "QIBM_DB_SECADM", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 475.93835000000007, "t": 401.53442, "r": 484.26327999999995, "b": 487.01999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "QIBM_DB_SQLADM", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 501.13837, "t": 401.6145, "r": 509.46329, "b": 487.01999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "QIBM_DB_SYSMON", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 526.39862, "t": 432.79944, "r": 534.72357, "b": 487.02005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "No Authority", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800003, "t": 498.55798, "r": 220.15681000000004, "b": 506.883, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "SET CURRENT DEGREE (SQL statement)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0, "t": 498.55798, "r": 435.00299000000007, "b": 506.883, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00031, "t": 498.55798, "r": 486.0033, "b": 506.883, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 517.51828, "r": 264.5538, "b": 525.84329, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CHGQRYA command targeting a different user\u2019s job", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00003, "t": 517.51828, "r": 435.00302000000005, "b": 525.84329, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00034, "t": 517.51828, "r": 486.00333, "b": 525.84329, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800049, "t": 536.5379800000001, "r": 322.50574, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "STRDBMON or ENDDBMON commands targeting a different user\u2019s job", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00003, "t": 536.5379800000001, "r": 435.00302000000005, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00034, "t": 536.5379800000001, "r": 486.00333, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800049, "t": 555.55768, "r": 381.02185, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "STRDBMON or ENDDBMON commands targeting a job that matches the current user", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00003, "t": 555.55768, "r": 435.00302000000005, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00034, "t": 555.55768, "r": 486.00333, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 505.26061999999996, "t": 555.55768, "r": 511.26361, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.76031, "t": 555.55768, "r": 536.76331, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800049, "t": 574.51797, "r": 359.51736, "b": 582.84299, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "QUSRJOBI() API format 900 or System i Navigator\u2019s SQL Details for Job", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 574.51797, "r": 435.00305000000003, "b": 582.84299, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 574.51797, "r": 486.00335999999993, "b": 582.84299, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 505.2606799999999, "t": 574.51797, "r": 511.26367, "b": 582.84299, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 593.5376699999999, "r": 220.75178999999997, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Visual Explain within Run SQL scripts", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 593.5376699999999, "r": 435.00305000000003, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 593.5376699999999, "r": 486.00335999999993, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 505.2606799999999, "t": 593.5376699999999, "r": 511.26367, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.76038, "t": 593.5376699999999, "r": 536.76337, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 612.55737, "r": 236.6548, "b": 620.88239, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Visual Explain outside of Run SQL scripts", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 612.55737, "r": 435.00305000000003, "b": 620.88239, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 612.55737, "r": 486.00335999999993, "b": 620.88239, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 631.51767, "r": 213.12968, "b": 639.84268, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ANALYZE PLAN CACHE procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 631.51767, "r": 435.00305000000003, "b": 639.84268, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 631.51767, "r": 486.00335999999993, "b": 639.84268, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 650.53737, "r": 199.87808, "b": 658.86238, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "DUMP PLAN CACHE procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 650.53737, "r": 435.00305000000003, "b": 658.86238, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 650.53737, "r": 486.00335999999993, "b": 658.86238, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 669.55708, "r": 208.36777, "b": 677.88207, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "MODIFY PLAN CACHE procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 669.55708, "r": 435.00305000000003, "b": 677.88207, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 669.55708, "r": 486.00335999999993, "b": 677.88207, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 688.57677, "r": 411.20264, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "MODIFY PLAN CACHE PROPERTIES procedure (currently does not check authority)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 688.57677, "r": 435.00305000000003, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 688.57677, "r": 486.00335999999993, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 707.537071, "r": 377.12585, "b": 715.862068, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CHANGE PLAN CACHE SIZE procedure (currently does not check authority)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 707.537071, "r": 435.00305000000003, "b": 715.862068, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 707.537071, "r": 486.00335999999993, "b": 715.862068, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}]}}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 26, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 354.4815673828125, "t": 754.9415893554688, "r": 523.54071, "b": 764.1055297851562, "coord_origin": "TOPLEFT"}, "confidence": 0.9508126378059387, "cells": [{"id": 0, "text": "Chapter 2. Roles and separation of duties ", "bbox": {"l": 355.32001, "t": 755.538002, "r": 523.54071, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 2. Roles and separation of duties"}, {"label": "page_footer", "id": 1, "page_no": 26, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 536.0808715820312, "t": 754.2325439453125, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8987302780151367, "cells": [{"id": 1, "text": "11", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "11"}, {"label": "text", "id": 2, "page_no": 26, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.92747497558594, "t": 70.65541076660156, "r": 542.69434, "b": 141.03610229492188, "coord_origin": "TOPLEFT"}, "confidence": 0.9789126515388489, "cells": [{"id": 2, "text": "For example, assume that a business has assigned the duty to manage security on IBM i to ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 542.69434, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Theresa. Before release IBM i 7.2, to grant privileges, Theresa had to have the same ", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 513.67804, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "privileges Theresa was granting to others. Therefore, to grant *USE privileges to the ", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 509.71902, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "PAYROLL table, Theresa had to have *OBJMGT and *USE authority (or a higher level of ", "bbox": {"l": 136.79959, "t": 107.50847999999996, "r": 528.20184, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "authority, such as *ALLOBJ). This requirement allowed Theresa to access the data in the ", "bbox": {"l": 136.79959, "t": 119.50829999999996, "r": 531.84015, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "PAYROLL table even though Theresa\u2019s job description was only to manage its security.", "bbox": {"l": 136.79959, "t": 131.50811999999996, "r": 519.24982, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "For example, assume that a business has assigned the duty to manage security on IBM i to Theresa. Before release IBM i 7.2, to grant privileges, Theresa had to have the same privileges Theresa was granting to others. Therefore, to grant *USE privileges to the PAYROLL table, Theresa had to have *OBJMGT and *USE authority (or a higher level of authority, such as *ALLOBJ). This requirement allowed Theresa to access the data in the PAYROLL table even though Theresa\u2019s job description was only to manage its security."}, {"label": "text", "id": 3, "page_no": 26, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.04833984375, "t": 152.51307678222656, "r": 547.30396, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9665539860725403, "cells": [{"id": 8, "text": "In IBM i 7.2, the QIBM_DB_SECADM function usage grants authorities, revokes authorities, ", "bbox": {"l": 136.79959, "t": 153.52770999999996, "r": 544.16064, "b": 162.74072, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "changes ownership, or changes the primary group without giving access to the object or, in ", "bbox": {"l": 136.79959, "t": 165.52752999999996, "r": 540.66156, "b": 174.74054, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "the case of a database table, to the data that is in the table or allowing other operations on the ", "bbox": {"l": 136.79959, "t": 177.52733999999998, "r": 547.30396, "b": 186.74036, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "table. ", "bbox": {"l": 136.79959, "t": 189.52715999999998, "r": 163.6189, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}}]}, "text": "In IBM i 7.2, the QIBM_DB_SECADM function usage grants authorities, revokes authorities, changes ownership, or changes the primary group without giving access to the object or, in the case of a database table, to the data that is in the table or allowing other operations on the table."}, {"label": "text", "id": 4, "page_no": 26, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.00685119628906, "t": 210.41148376464844, "r": 538.65076, "b": 233.08047485351562, "coord_origin": "TOPLEFT"}, "confidence": 0.9691813588142395, "cells": [{"id": 12, "text": "QIBM_DB_SECADM function usage can be granted only by a user with *SECADM special ", "bbox": {"l": 136.79959, "t": 211.48694, "r": 538.65076, "b": 220.69994999999994, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "authority and can be given to a user or a group.", "bbox": {"l": 136.79959, "t": 223.48676, "r": 346.34808, "b": 232.69976999999994, "coord_origin": "TOPLEFT"}}]}, "text": "QIBM_DB_SECADM function usage can be granted only by a user with *SECADM special authority and can be given to a user or a group."}, {"label": "text", "id": 5, "page_no": 26, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.68702697753906, "t": 244.5381622314453, "r": 545.79602, "b": 278.71898999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.9729602932929993, "cells": [{"id": 14, "text": "QIBM_DB_SECADM also is responsible for administering RCAC, which restricts which rows ", "bbox": {"l": 136.79959, "t": 245.50635, "r": 545.79602, "b": 254.71936000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "a user is allowed to access in a table and whether a user is allowed to see information in ", "bbox": {"l": 136.79959, "t": 257.50616, "r": 529.46149, "b": 266.71918000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "certain columns of a table.", "bbox": {"l": 136.79959, "t": 269.50598, "r": 253.47696999999997, "b": 278.71898999999996, "coord_origin": "TOPLEFT"}}]}, "text": "QIBM_DB_SECADM also is responsible for administering RCAC, which restricts which rows a user is allowed to access in a table and whether a user is allowed to see information in certain columns of a table."}, {"label": "text", "id": 6, "page_no": 26, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.86065673828125, "t": 290.6051330566406, "r": 539.80713, "b": 336.73801, "coord_origin": "TOPLEFT"}, "confidence": 0.9815152883529663, "cells": [{"id": 17, "text": "A preferred practice is that the RCAC administrator has the QIBM_DB_SECADM function ", "bbox": {"l": 136.79959, "t": 291.52557, "r": 533.78137, "b": 300.73856, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "usage ID, but absolutely no other data privileges. The result is that the RCAC administrator ", "bbox": {"l": 136.79959, "t": 303.52539, "r": 539.80713, "b": 312.73837000000003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "can deploy and maintain the RCAC constructs, but cannot grant themselves unauthorized ", "bbox": {"l": 136.79959, "t": 315.52521, "r": 534.5741, "b": 324.73819, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "access to data itself.", "bbox": {"l": 136.79959, "t": 327.52502, "r": 227.02324, "b": 336.73801, "coord_origin": "TOPLEFT"}}]}, "text": "A preferred practice is that the RCAC administrator has the QIBM_DB_SECADM function usage ID, but absolutely no other data privileges. The result is that the RCAC administrator can deploy and maintain the RCAC constructs, but cannot grant themselves unauthorized access to data itself."}, {"label": "text", "id": 7, "page_no": 26, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.7205352783203, "t": 348.60931396484375, "r": 543.06714, "b": 370.69763000000006, "coord_origin": "TOPLEFT"}, "confidence": 0.9672255516052246, "cells": [{"id": 21, "text": "Table 2-2 shows a comparison of the different function usage IDs and *JOBCTL authority to ", "bbox": {"l": 136.79959, "t": 349.48483, "r": 543.06714, "b": 358.69780999999995, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "the different CL commands and DB2 for i tools.", "bbox": {"l": 136.79959, "t": 361.48465, "r": 343.79236, "b": 370.69763000000006, "coord_origin": "TOPLEFT"}}]}, "text": "Table 2-2 shows a comparison of the different function usage IDs and *JOBCTL authority to the different CL commands and DB2 for i tools."}, {"label": "caption", "id": 8, "page_no": 26, "cluster": {"id": 8, "label": "caption", "bbox": {"l": 64.800003, "t": 382.5287170410156, "r": 392.4624328613281, "b": 392.25494384765625, "coord_origin": "TOPLEFT"}, "confidence": 0.933719277381897, "cells": [{"id": 23, "text": "Table 2-2 Comparison of the different function usage IDs and *JOBCTL authority", "bbox": {"l": 64.800003, "t": 383.5379899999999, "r": 391.75464, "b": 391.86301, "coord_origin": "TOPLEFT"}}]}, "text": "Table 2-2 Comparison of the different function usage IDs and *JOBCTL authority"}, {"label": "table", "id": 9, "page_no": 26, "cluster": {"id": 9, "label": "table", "bbox": {"l": 64.41139221191406, "t": 393.6136474609375, "r": 547.3950805664062, "b": 721.60791015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9899571537971497, "cells": [{"id": 24, "text": "User action", "bbox": {"l": 70.800301, "t": 400.51827999999995, "r": 119.78551, "b": 408.84329, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "*JOBCTL", "bbox": {"l": 424.93805, "t": 447.52255, "r": 433.26297000000005, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "QIBM_DB_SECADM", "bbox": {"l": 450.13806, "t": 401.6000700000001, "r": 458.46298, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "QIBM_DB_SQLADM", "bbox": {"l": 475.93835000000007, "t": 401.53442, "r": 484.26327999999995, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "QIBM_DB_SYSMON", "bbox": {"l": 501.13837, "t": 401.6145, "r": 509.46329, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "No Authority", "bbox": {"l": 526.39862, "t": 432.79944, "r": 534.72357, "b": 487.02005, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "SET CURRENT DEGREE", "bbox": {"l": 70.800003, "t": 498.69299, "r": 151.6794, "b": 506.66699, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " (SQL statement)", "bbox": {"l": 151.6803, "t": 498.55798, "r": 220.15681000000004, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "X", "bbox": {"l": 429.0, "t": 498.55798, "r": 435.00299000000007, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "X", "bbox": {"l": 480.00031, "t": 498.55798, "r": 486.0033, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "CHGQRYA", "bbox": {"l": 70.800018, "t": 517.65329, "r": 102.23972, "b": 525.62729, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": " command targeting a different user\u2019s job", "bbox": {"l": 102.23972, "t": 517.51828, "r": 264.5538, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "X", "bbox": {"l": 429.00003, "t": 517.51828, "r": 435.00302000000005, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "X", "bbox": {"l": 480.00034, "t": 517.51828, "r": 486.00333, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "STRDBMON", "bbox": {"l": 70.800049, "t": 536.67299, "r": 106.73975, "b": 544.64699, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": " or ", "bbox": {"l": 106.73975, "t": 536.5379800000001, "r": 119.77895, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ENDDBMON", "bbox": {"l": 119.69975000000001, "t": 536.67299, "r": 155.69974, "b": 544.64699, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": " commands targeting a different user\u2019s job", "bbox": {"l": 155.69974, "t": 536.5379800000001, "r": 322.50574, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "X", "bbox": {"l": 429.00003, "t": 536.5379800000001, "r": 435.00302000000005, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "X", "bbox": {"l": 480.00034, "t": 536.5379800000001, "r": 486.00333, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "STRDBMON", "bbox": {"l": 70.800049, "t": 555.69269, "r": 106.73975, "b": 563.66669, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": " or ", "bbox": {"l": 106.73975, "t": 555.55768, "r": 119.77895, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "ENDDBMON", "bbox": {"l": 119.69975000000001, "t": 555.69269, "r": 155.69974, "b": 563.66669, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": " commands targeting a job that matches the current user", "bbox": {"l": 155.69974, "t": 555.55768, "r": 381.02185, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "X", "bbox": {"l": 429.00003, "t": 555.55768, "r": 435.00302000000005, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "X", "bbox": {"l": 480.00034, "t": 555.55768, "r": 486.00333, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "X", "bbox": {"l": 505.26061999999996, "t": 555.55768, "r": 511.26361, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "X", "bbox": {"l": 530.76031, "t": 555.55768, "r": 536.76331, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "QUSRJOBI() API format 900 or System i Navigator\u2019s SQL Details for Job", "bbox": {"l": 70.800049, "t": 574.51797, "r": 359.51736, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "X", "bbox": {"l": 429.0000600000001, "t": 574.51797, "r": 435.00305000000003, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "X", "bbox": {"l": 480.00037, "t": 574.51797, "r": 486.00335999999993, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "X", "bbox": {"l": 505.2606799999999, "t": 574.51797, "r": 511.26367, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "Visual Explain within Run SQL scripts", "bbox": {"l": 70.800079, "t": 593.5376699999999, "r": 220.75178999999997, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "X", "bbox": {"l": 429.0000600000001, "t": 593.5376699999999, "r": 435.00305000000003, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "X", "bbox": {"l": 480.00037, "t": 593.5376699999999, "r": 486.00335999999993, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "X", "bbox": {"l": 505.2606799999999, "t": 593.5376699999999, "r": 511.26367, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "X", "bbox": {"l": 530.76038, "t": 593.5376699999999, "r": 536.76337, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Visual Explain outside of Run SQL scripts", "bbox": {"l": 70.800079, "t": 612.55737, "r": 236.6548, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "X", "bbox": {"l": 429.0000600000001, "t": 612.55737, "r": 435.00305000000003, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "X", "bbox": {"l": 480.00037, "t": 612.55737, "r": 486.00335999999993, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "ANALYZE PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 631.51767, "r": 213.12968, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "X", "bbox": {"l": 429.0000600000001, "t": 631.51767, "r": 435.00305000000003, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "X", "bbox": {"l": 480.00037, "t": 631.51767, "r": 486.00335999999993, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "DUMP PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 650.53737, "r": 199.87808, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "X", "bbox": {"l": 429.0000600000001, "t": 650.53737, "r": 435.00305000000003, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "X", "bbox": {"l": 480.00037, "t": 650.53737, "r": 486.00335999999993, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "MODIFY PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 669.55708, "r": 208.36777, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "X", "bbox": {"l": 429.0000600000001, "t": 669.55708, "r": 435.00305000000003, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "X", "bbox": {"l": 480.00037, "t": 669.55708, "r": 486.00335999999993, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "MODIFY PLAN CACHE PROPERTIES procedure (currently does not check authority)", "bbox": {"l": 70.800079, "t": 688.57677, "r": 411.20264, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "X", "bbox": {"l": 429.0000600000001, "t": 688.57677, "r": 435.00305000000003, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "X", "bbox": {"l": 480.00037, "t": 688.57677, "r": 486.00335999999993, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "CHANGE PLAN CACHE SIZE procedure (currently does not check authority)", "bbox": {"l": 70.800079, "t": 707.537071, "r": 377.12585, "b": 715.862068, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "X", "bbox": {"l": 429.0000600000001, "t": 707.537071, "r": 435.00305000000003, "b": 715.862068, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "X", "bbox": {"l": 480.00037, "t": 707.537071, "r": 486.00335999999993, "b": 715.862068, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["rhed", "fcel", "fcel", "fcel", "fcel", "fcel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "fcel", "fcel", "nl", "rhed", "fcel", "ecel", "fcel", "fcel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "fcel", "fcel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl"], "num_rows": 13, "num_cols": 6, "table_cells": [{"bbox": {"l": 70.800301, "t": 400.51827999999995, "r": 119.78551, "b": 408.84329, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "User action", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 424.93805, "t": 447.52255, "r": 433.26297000000005, "b": 487.01999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "*JOBCTL", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 450.13806, "t": 401.6000700000001, "r": 458.46298, "b": 487.01999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "QIBM_DB_SECADM", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 475.93835000000007, "t": 401.53442, "r": 484.26327999999995, "b": 487.01999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "QIBM_DB_SQLADM", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 501.13837, "t": 401.6145, "r": 509.46329, "b": 487.01999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "QIBM_DB_SYSMON", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 526.39862, "t": 432.79944, "r": 534.72357, "b": 487.02005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "No Authority", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800003, "t": 498.55798, "r": 220.15681000000004, "b": 506.883, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "SET CURRENT DEGREE (SQL statement)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0, "t": 498.55798, "r": 435.00299000000007, "b": 506.883, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00031, "t": 498.55798, "r": 486.0033, "b": 506.883, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 517.51828, "r": 264.5538, "b": 525.84329, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CHGQRYA command targeting a different user\u2019s job", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00003, "t": 517.51828, "r": 435.00302000000005, "b": 525.84329, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00034, "t": 517.51828, "r": 486.00333, "b": 525.84329, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800049, "t": 536.5379800000001, "r": 322.50574, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "STRDBMON or ENDDBMON commands targeting a different user\u2019s job", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00003, "t": 536.5379800000001, "r": 435.00302000000005, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00034, "t": 536.5379800000001, "r": 486.00333, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800049, "t": 555.55768, "r": 381.02185, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "STRDBMON or ENDDBMON commands targeting a job that matches the current user", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00003, "t": 555.55768, "r": 435.00302000000005, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00034, "t": 555.55768, "r": 486.00333, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 505.26061999999996, "t": 555.55768, "r": 511.26361, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.76031, "t": 555.55768, "r": 536.76331, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800049, "t": 574.51797, "r": 359.51736, "b": 582.84299, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "QUSRJOBI() API format 900 or System i Navigator\u2019s SQL Details for Job", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 574.51797, "r": 435.00305000000003, "b": 582.84299, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 574.51797, "r": 486.00335999999993, "b": 582.84299, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 505.2606799999999, "t": 574.51797, "r": 511.26367, "b": 582.84299, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 593.5376699999999, "r": 220.75178999999997, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Visual Explain within Run SQL scripts", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 593.5376699999999, "r": 435.00305000000003, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 593.5376699999999, "r": 486.00335999999993, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 505.2606799999999, "t": 593.5376699999999, "r": 511.26367, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.76038, "t": 593.5376699999999, "r": 536.76337, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 612.55737, "r": 236.6548, "b": 620.88239, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Visual Explain outside of Run SQL scripts", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 612.55737, "r": 435.00305000000003, "b": 620.88239, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 612.55737, "r": 486.00335999999993, "b": 620.88239, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 631.51767, "r": 213.12968, "b": 639.84268, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ANALYZE PLAN CACHE procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 631.51767, "r": 435.00305000000003, "b": 639.84268, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 631.51767, "r": 486.00335999999993, "b": 639.84268, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 650.53737, "r": 199.87808, "b": 658.86238, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "DUMP PLAN CACHE procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 650.53737, "r": 435.00305000000003, "b": 658.86238, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 650.53737, "r": 486.00335999999993, "b": 658.86238, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 669.55708, "r": 208.36777, "b": 677.88207, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "MODIFY PLAN CACHE procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 669.55708, "r": 435.00305000000003, "b": 677.88207, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 669.55708, "r": 486.00335999999993, "b": 677.88207, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 688.57677, "r": 411.20264, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "MODIFY PLAN CACHE PROPERTIES procedure (currently does not check authority)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 688.57677, "r": 435.00305000000003, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 688.57677, "r": 486.00335999999993, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 707.537071, "r": 377.12585, "b": 715.862068, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CHANGE PLAN CACHE SIZE procedure (currently does not check authority)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 707.537071, "r": 435.00305000000003, "b": 715.862068, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 707.537071, "r": 486.00335999999993, "b": 715.862068, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}]}], "body": [{"label": "text", "id": 2, "page_no": 26, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.92747497558594, "t": 70.65541076660156, "r": 542.69434, "b": 141.03610229492188, "coord_origin": "TOPLEFT"}, "confidence": 0.9789126515388489, "cells": [{"id": 2, "text": "For example, assume that a business has assigned the duty to manage security on IBM i to ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 542.69434, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Theresa. Before release IBM i 7.2, to grant privileges, Theresa had to have the same ", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 513.67804, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "privileges Theresa was granting to others. Therefore, to grant *USE privileges to the ", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 509.71902, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "PAYROLL table, Theresa had to have *OBJMGT and *USE authority (or a higher level of ", "bbox": {"l": 136.79959, "t": 107.50847999999996, "r": 528.20184, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "authority, such as *ALLOBJ). This requirement allowed Theresa to access the data in the ", "bbox": {"l": 136.79959, "t": 119.50829999999996, "r": 531.84015, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "PAYROLL table even though Theresa\u2019s job description was only to manage its security.", "bbox": {"l": 136.79959, "t": 131.50811999999996, "r": 519.24982, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "For example, assume that a business has assigned the duty to manage security on IBM i to Theresa. Before release IBM i 7.2, to grant privileges, Theresa had to have the same privileges Theresa was granting to others. Therefore, to grant *USE privileges to the PAYROLL table, Theresa had to have *OBJMGT and *USE authority (or a higher level of authority, such as *ALLOBJ). This requirement allowed Theresa to access the data in the PAYROLL table even though Theresa\u2019s job description was only to manage its security."}, {"label": "text", "id": 3, "page_no": 26, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.04833984375, "t": 152.51307678222656, "r": 547.30396, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9665539860725403, "cells": [{"id": 8, "text": "In IBM i 7.2, the QIBM_DB_SECADM function usage grants authorities, revokes authorities, ", "bbox": {"l": 136.79959, "t": 153.52770999999996, "r": 544.16064, "b": 162.74072, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "changes ownership, or changes the primary group without giving access to the object or, in ", "bbox": {"l": 136.79959, "t": 165.52752999999996, "r": 540.66156, "b": 174.74054, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "the case of a database table, to the data that is in the table or allowing other operations on the ", "bbox": {"l": 136.79959, "t": 177.52733999999998, "r": 547.30396, "b": 186.74036, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "table. ", "bbox": {"l": 136.79959, "t": 189.52715999999998, "r": 163.6189, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}}]}, "text": "In IBM i 7.2, the QIBM_DB_SECADM function usage grants authorities, revokes authorities, changes ownership, or changes the primary group without giving access to the object or, in the case of a database table, to the data that is in the table or allowing other operations on the table."}, {"label": "text", "id": 4, "page_no": 26, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.00685119628906, "t": 210.41148376464844, "r": 538.65076, "b": 233.08047485351562, "coord_origin": "TOPLEFT"}, "confidence": 0.9691813588142395, "cells": [{"id": 12, "text": "QIBM_DB_SECADM function usage can be granted only by a user with *SECADM special ", "bbox": {"l": 136.79959, "t": 211.48694, "r": 538.65076, "b": 220.69994999999994, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "authority and can be given to a user or a group.", "bbox": {"l": 136.79959, "t": 223.48676, "r": 346.34808, "b": 232.69976999999994, "coord_origin": "TOPLEFT"}}]}, "text": "QIBM_DB_SECADM function usage can be granted only by a user with *SECADM special authority and can be given to a user or a group."}, {"label": "text", "id": 5, "page_no": 26, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.68702697753906, "t": 244.5381622314453, "r": 545.79602, "b": 278.71898999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.9729602932929993, "cells": [{"id": 14, "text": "QIBM_DB_SECADM also is responsible for administering RCAC, which restricts which rows ", "bbox": {"l": 136.79959, "t": 245.50635, "r": 545.79602, "b": 254.71936000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "a user is allowed to access in a table and whether a user is allowed to see information in ", "bbox": {"l": 136.79959, "t": 257.50616, "r": 529.46149, "b": 266.71918000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "certain columns of a table.", "bbox": {"l": 136.79959, "t": 269.50598, "r": 253.47696999999997, "b": 278.71898999999996, "coord_origin": "TOPLEFT"}}]}, "text": "QIBM_DB_SECADM also is responsible for administering RCAC, which restricts which rows a user is allowed to access in a table and whether a user is allowed to see information in certain columns of a table."}, {"label": "text", "id": 6, "page_no": 26, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.86065673828125, "t": 290.6051330566406, "r": 539.80713, "b": 336.73801, "coord_origin": "TOPLEFT"}, "confidence": 0.9815152883529663, "cells": [{"id": 17, "text": "A preferred practice is that the RCAC administrator has the QIBM_DB_SECADM function ", "bbox": {"l": 136.79959, "t": 291.52557, "r": 533.78137, "b": 300.73856, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "usage ID, but absolutely no other data privileges. The result is that the RCAC administrator ", "bbox": {"l": 136.79959, "t": 303.52539, "r": 539.80713, "b": 312.73837000000003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "can deploy and maintain the RCAC constructs, but cannot grant themselves unauthorized ", "bbox": {"l": 136.79959, "t": 315.52521, "r": 534.5741, "b": 324.73819, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "access to data itself.", "bbox": {"l": 136.79959, "t": 327.52502, "r": 227.02324, "b": 336.73801, "coord_origin": "TOPLEFT"}}]}, "text": "A preferred practice is that the RCAC administrator has the QIBM_DB_SECADM function usage ID, but absolutely no other data privileges. The result is that the RCAC administrator can deploy and maintain the RCAC constructs, but cannot grant themselves unauthorized access to data itself."}, {"label": "text", "id": 7, "page_no": 26, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.7205352783203, "t": 348.60931396484375, "r": 543.06714, "b": 370.69763000000006, "coord_origin": "TOPLEFT"}, "confidence": 0.9672255516052246, "cells": [{"id": 21, "text": "Table 2-2 shows a comparison of the different function usage IDs and *JOBCTL authority to ", "bbox": {"l": 136.79959, "t": 349.48483, "r": 543.06714, "b": 358.69780999999995, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "the different CL commands and DB2 for i tools.", "bbox": {"l": 136.79959, "t": 361.48465, "r": 343.79236, "b": 370.69763000000006, "coord_origin": "TOPLEFT"}}]}, "text": "Table 2-2 shows a comparison of the different function usage IDs and *JOBCTL authority to the different CL commands and DB2 for i tools."}, {"label": "caption", "id": 8, "page_no": 26, "cluster": {"id": 8, "label": "caption", "bbox": {"l": 64.800003, "t": 382.5287170410156, "r": 392.4624328613281, "b": 392.25494384765625, "coord_origin": "TOPLEFT"}, "confidence": 0.933719277381897, "cells": [{"id": 23, "text": "Table 2-2 Comparison of the different function usage IDs and *JOBCTL authority", "bbox": {"l": 64.800003, "t": 383.5379899999999, "r": 391.75464, "b": 391.86301, "coord_origin": "TOPLEFT"}}]}, "text": "Table 2-2 Comparison of the different function usage IDs and *JOBCTL authority"}, {"label": "table", "id": 9, "page_no": 26, "cluster": {"id": 9, "label": "table", "bbox": {"l": 64.41139221191406, "t": 393.6136474609375, "r": 547.3950805664062, "b": 721.60791015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9899571537971497, "cells": [{"id": 24, "text": "User action", "bbox": {"l": 70.800301, "t": 400.51827999999995, "r": 119.78551, "b": 408.84329, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "*JOBCTL", "bbox": {"l": 424.93805, "t": 447.52255, "r": 433.26297000000005, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "QIBM_DB_SECADM", "bbox": {"l": 450.13806, "t": 401.6000700000001, "r": 458.46298, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "QIBM_DB_SQLADM", "bbox": {"l": 475.93835000000007, "t": 401.53442, "r": 484.26327999999995, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "QIBM_DB_SYSMON", "bbox": {"l": 501.13837, "t": 401.6145, "r": 509.46329, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "No Authority", "bbox": {"l": 526.39862, "t": 432.79944, "r": 534.72357, "b": 487.02005, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "SET CURRENT DEGREE", "bbox": {"l": 70.800003, "t": 498.69299, "r": 151.6794, "b": 506.66699, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " (SQL statement)", "bbox": {"l": 151.6803, "t": 498.55798, "r": 220.15681000000004, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "X", "bbox": {"l": 429.0, "t": 498.55798, "r": 435.00299000000007, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "X", "bbox": {"l": 480.00031, "t": 498.55798, "r": 486.0033, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "CHGQRYA", "bbox": {"l": 70.800018, "t": 517.65329, "r": 102.23972, "b": 525.62729, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": " command targeting a different user\u2019s job", "bbox": {"l": 102.23972, "t": 517.51828, "r": 264.5538, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "X", "bbox": {"l": 429.00003, "t": 517.51828, "r": 435.00302000000005, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "X", "bbox": {"l": 480.00034, "t": 517.51828, "r": 486.00333, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "STRDBMON", "bbox": {"l": 70.800049, "t": 536.67299, "r": 106.73975, "b": 544.64699, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": " or ", "bbox": {"l": 106.73975, "t": 536.5379800000001, "r": 119.77895, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ENDDBMON", "bbox": {"l": 119.69975000000001, "t": 536.67299, "r": 155.69974, "b": 544.64699, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": " commands targeting a different user\u2019s job", "bbox": {"l": 155.69974, "t": 536.5379800000001, "r": 322.50574, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "X", "bbox": {"l": 429.00003, "t": 536.5379800000001, "r": 435.00302000000005, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "X", "bbox": {"l": 480.00034, "t": 536.5379800000001, "r": 486.00333, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "STRDBMON", "bbox": {"l": 70.800049, "t": 555.69269, "r": 106.73975, "b": 563.66669, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": " or ", "bbox": {"l": 106.73975, "t": 555.55768, "r": 119.77895, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "ENDDBMON", "bbox": {"l": 119.69975000000001, "t": 555.69269, "r": 155.69974, "b": 563.66669, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": " commands targeting a job that matches the current user", "bbox": {"l": 155.69974, "t": 555.55768, "r": 381.02185, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "X", "bbox": {"l": 429.00003, "t": 555.55768, "r": 435.00302000000005, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "X", "bbox": {"l": 480.00034, "t": 555.55768, "r": 486.00333, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "X", "bbox": {"l": 505.26061999999996, "t": 555.55768, "r": 511.26361, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "X", "bbox": {"l": 530.76031, "t": 555.55768, "r": 536.76331, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "QUSRJOBI() API format 900 or System i Navigator\u2019s SQL Details for Job", "bbox": {"l": 70.800049, "t": 574.51797, "r": 359.51736, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "X", "bbox": {"l": 429.0000600000001, "t": 574.51797, "r": 435.00305000000003, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "X", "bbox": {"l": 480.00037, "t": 574.51797, "r": 486.00335999999993, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "X", "bbox": {"l": 505.2606799999999, "t": 574.51797, "r": 511.26367, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "Visual Explain within Run SQL scripts", "bbox": {"l": 70.800079, "t": 593.5376699999999, "r": 220.75178999999997, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "X", "bbox": {"l": 429.0000600000001, "t": 593.5376699999999, "r": 435.00305000000003, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "X", "bbox": {"l": 480.00037, "t": 593.5376699999999, "r": 486.00335999999993, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "X", "bbox": {"l": 505.2606799999999, "t": 593.5376699999999, "r": 511.26367, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "X", "bbox": {"l": 530.76038, "t": 593.5376699999999, "r": 536.76337, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Visual Explain outside of Run SQL scripts", "bbox": {"l": 70.800079, "t": 612.55737, "r": 236.6548, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "X", "bbox": {"l": 429.0000600000001, "t": 612.55737, "r": 435.00305000000003, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "X", "bbox": {"l": 480.00037, "t": 612.55737, "r": 486.00335999999993, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "ANALYZE PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 631.51767, "r": 213.12968, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "X", "bbox": {"l": 429.0000600000001, "t": 631.51767, "r": 435.00305000000003, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "X", "bbox": {"l": 480.00037, "t": 631.51767, "r": 486.00335999999993, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "DUMP PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 650.53737, "r": 199.87808, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "X", "bbox": {"l": 429.0000600000001, "t": 650.53737, "r": 435.00305000000003, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "X", "bbox": {"l": 480.00037, "t": 650.53737, "r": 486.00335999999993, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "MODIFY PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 669.55708, "r": 208.36777, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "X", "bbox": {"l": 429.0000600000001, "t": 669.55708, "r": 435.00305000000003, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "X", "bbox": {"l": 480.00037, "t": 669.55708, "r": 486.00335999999993, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "MODIFY PLAN CACHE PROPERTIES procedure (currently does not check authority)", "bbox": {"l": 70.800079, "t": 688.57677, "r": 411.20264, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "X", "bbox": {"l": 429.0000600000001, "t": 688.57677, "r": 435.00305000000003, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "X", "bbox": {"l": 480.00037, "t": 688.57677, "r": 486.00335999999993, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "CHANGE PLAN CACHE SIZE procedure (currently does not check authority)", "bbox": {"l": 70.800079, "t": 707.537071, "r": 377.12585, "b": 715.862068, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "X", "bbox": {"l": 429.0000600000001, "t": 707.537071, "r": 435.00305000000003, "b": 715.862068, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "X", "bbox": {"l": 480.00037, "t": 707.537071, "r": 486.00335999999993, "b": 715.862068, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["rhed", "fcel", "fcel", "fcel", "fcel", "fcel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "fcel", "fcel", "nl", "rhed", "fcel", "ecel", "fcel", "fcel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "fcel", "fcel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl"], "num_rows": 13, "num_cols": 6, "table_cells": [{"bbox": {"l": 70.800301, "t": 400.51827999999995, "r": 119.78551, "b": 408.84329, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "User action", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 424.93805, "t": 447.52255, "r": 433.26297000000005, "b": 487.01999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "*JOBCTL", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 450.13806, "t": 401.6000700000001, "r": 458.46298, "b": 487.01999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "QIBM_DB_SECADM", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 475.93835000000007, "t": 401.53442, "r": 484.26327999999995, "b": 487.01999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "QIBM_DB_SQLADM", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 501.13837, "t": 401.6145, "r": 509.46329, "b": 487.01999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "QIBM_DB_SYSMON", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 526.39862, "t": 432.79944, "r": 534.72357, "b": 487.02005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "No Authority", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800003, "t": 498.55798, "r": 220.15681000000004, "b": 506.883, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "SET CURRENT DEGREE (SQL statement)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0, "t": 498.55798, "r": 435.00299000000007, "b": 506.883, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00031, "t": 498.55798, "r": 486.0033, "b": 506.883, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 517.51828, "r": 264.5538, "b": 525.84329, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CHGQRYA command targeting a different user\u2019s job", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00003, "t": 517.51828, "r": 435.00302000000005, "b": 525.84329, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00034, "t": 517.51828, "r": 486.00333, "b": 525.84329, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800049, "t": 536.5379800000001, "r": 322.50574, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "STRDBMON or ENDDBMON commands targeting a different user\u2019s job", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00003, "t": 536.5379800000001, "r": 435.00302000000005, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00034, "t": 536.5379800000001, "r": 486.00333, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800049, "t": 555.55768, "r": 381.02185, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "STRDBMON or ENDDBMON commands targeting a job that matches the current user", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00003, "t": 555.55768, "r": 435.00302000000005, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00034, "t": 555.55768, "r": 486.00333, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 505.26061999999996, "t": 555.55768, "r": 511.26361, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.76031, "t": 555.55768, "r": 536.76331, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800049, "t": 574.51797, "r": 359.51736, "b": 582.84299, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "QUSRJOBI() API format 900 or System i Navigator\u2019s SQL Details for Job", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 574.51797, "r": 435.00305000000003, "b": 582.84299, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 574.51797, "r": 486.00335999999993, "b": 582.84299, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 505.2606799999999, "t": 574.51797, "r": 511.26367, "b": 582.84299, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 593.5376699999999, "r": 220.75178999999997, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Visual Explain within Run SQL scripts", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 593.5376699999999, "r": 435.00305000000003, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 593.5376699999999, "r": 486.00335999999993, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 505.2606799999999, "t": 593.5376699999999, "r": 511.26367, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.76038, "t": 593.5376699999999, "r": 536.76337, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 612.55737, "r": 236.6548, "b": 620.88239, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Visual Explain outside of Run SQL scripts", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 612.55737, "r": 435.00305000000003, "b": 620.88239, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 612.55737, "r": 486.00335999999993, "b": 620.88239, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 631.51767, "r": 213.12968, "b": 639.84268, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ANALYZE PLAN CACHE procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 631.51767, "r": 435.00305000000003, "b": 639.84268, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 631.51767, "r": 486.00335999999993, "b": 639.84268, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 650.53737, "r": 199.87808, "b": 658.86238, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "DUMP PLAN CACHE procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 650.53737, "r": 435.00305000000003, "b": 658.86238, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 650.53737, "r": 486.00335999999993, "b": 658.86238, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 669.55708, "r": 208.36777, "b": 677.88207, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "MODIFY PLAN CACHE procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 669.55708, "r": 435.00305000000003, "b": 677.88207, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 669.55708, "r": 486.00335999999993, "b": 677.88207, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 688.57677, "r": 411.20264, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "MODIFY PLAN CACHE PROPERTIES procedure (currently does not check authority)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 688.57677, "r": 435.00305000000003, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 688.57677, "r": 486.00335999999993, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 707.537071, "r": 377.12585, "b": 715.862068, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CHANGE PLAN CACHE SIZE procedure (currently does not check authority)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 707.537071, "r": 435.00305000000003, "b": 715.862068, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 707.537071, "r": 486.00335999999993, "b": 715.862068, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}]}], "headers": [{"label": "page_footer", "id": 0, "page_no": 26, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 354.4815673828125, "t": 754.9415893554688, "r": 523.54071, "b": 764.1055297851562, "coord_origin": "TOPLEFT"}, "confidence": 0.9508126378059387, "cells": [{"id": 0, "text": "Chapter 2. Roles and separation of duties ", "bbox": {"l": 355.32001, "t": 755.538002, "r": 523.54071, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 2. Roles and separation of duties"}, {"label": "page_footer", "id": 1, "page_no": 26, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 536.0808715820312, "t": 754.2325439453125, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8987302780151367, "cells": [{"id": 1, "text": "11", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "11"}]}}, {"page_no": 27, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "12 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "START PLAN CACHE EVENT MONITOR procedure", "bbox": {"l": 70.800606, "t": 175.5177, "r": 278.58273, "b": 183.84265000000005, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "X", "bbox": {"l": 429.00058000000007, "t": 175.5177, "r": 435.00357, "b": 183.84265000000005, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "X", "bbox": {"l": 480.00088999999997, "t": 175.5177, "r": 486.0038799999999, "b": 183.84265000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "END PLAN CACHE EVENT MONITOR procedure", "bbox": {"l": 70.800598, "t": 194.53741000000002, "r": 269.44949, "b": 202.86237000000006, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "X", "bbox": {"l": 429.00058000000007, "t": 194.53741000000002, "r": 435.00357, "b": 202.86237000000006, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "X", "bbox": {"l": 480.00088999999997, "t": 194.53741000000002, "r": 486.0038799999999, "b": 202.86237000000006, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "END ALL PLAN CACHE EVENT MONITORS procedure", "bbox": {"l": 70.800598, "t": 213.55713000000003, "r": 293.97632, "b": 221.88207999999997, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "X", "bbox": {"l": 429.00058000000007, "t": 213.55713000000003, "r": 435.00357, "b": 221.88207999999997, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "X", "bbox": {"l": 480.00088999999997, "t": 213.55713000000003, "r": 486.0038799999999, "b": 221.88207999999997, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Work with RCAC row permissions (Create, modify, or delete)", "bbox": {"l": 70.800598, "t": 232.51746000000003, "r": 311.22574, "b": 240.84240999999997, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "X", "bbox": {"l": 454.50031, "t": 232.51746000000003, "r": 460.5033, "b": 240.84240999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Work with RCAC column masks (Create, modify, or delete)", "bbox": {"l": 70.800598, "t": 251.53716999999995, "r": 303.58829, "b": 259.86212, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "X", "bbox": {"l": 454.50031, "t": 251.53716999999995, "r": 460.5033, "b": 259.86212, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Change Object Owner (", "bbox": {"l": 70.800598, "t": 270.55688, "r": 165.18898, "b": 278.88184, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "CHGOBJOWN", "bbox": {"l": 165.18091, "t": 270.69183, "r": 205.62061, "b": 278.66583, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ") CL command", "bbox": {"l": 205.62061, "t": 270.55688, "r": 264.57959, "b": 278.88184, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "X", "bbox": {"l": 454.50031, "t": 270.55688, "r": 460.5033, "b": 278.88184, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Change Object Primary Group (", "bbox": {"l": 70.800598, "t": 289.51715, "r": 197.55119, "b": 297.84216, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "CHGOBJPGP", "bbox": {"l": 197.5809, "t": 289.6521599999999, "r": 238.0206, "b": 297.62616, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": ") CL command ", "bbox": {"l": 238.0206, "t": 289.51715, "r": 299.39697, "b": 297.84216, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "X", "bbox": {"l": 454.50031, "t": 289.51715, "r": 460.5033, "b": 297.84216, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Grant Object Authority (", "bbox": {"l": 70.800598, "t": 308.53687, "r": 164.9973, "b": 316.86188, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "GRTOBJAUT", "bbox": {"l": 165.00089, "t": 308.67188, "r": 205.44058, "b": 316.64587, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": ") CL command ", "bbox": {"l": 205.44058, "t": 308.53687, "r": 266.84399, "b": 316.86188, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "X", "bbox": {"l": 454.50027, "t": 308.53687, "r": 460.50327000000004, "b": 316.86188, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Revoke Object Authority (", "bbox": {"l": 70.800568, "t": 327.55658, "r": 172.35025, "b": 335.88159, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "RVKOBJAUT", "bbox": {"l": 172.38086, "t": 327.6915900000001, "r": 212.82056, "b": 335.66559000000007, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ") CL command", "bbox": {"l": 212.82056, "t": 327.55658, "r": 271.78857, "b": 335.88159, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "X", "bbox": {"l": 454.50024, "t": 327.55658, "r": 460.50323, "b": 335.88159, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Edit Object Authority (", "bbox": {"l": 70.800537, "t": 346.51688, "r": 158.12213, "b": 354.84189, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "EDTOBJAUT", "bbox": {"l": 158.10052, "t": 346.65189, "r": 198.60052, "b": 354.62589, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": ") CL command", "bbox": {"l": 198.54022, "t": 346.51688, "r": 257.35434, "b": 354.84189, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "X", "bbox": {"l": 454.50024, "t": 346.51688, "r": 460.50323, "b": 354.84189, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Display Object Authority (", "bbox": {"l": 70.800537, "t": 365.53659, "r": 171.80392, "b": 373.8616, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "DSPOBJAUT", "bbox": {"l": 171.78055, "t": 365.6716, "r": 212.22025, "b": 373.6456, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": ") CL command", "bbox": {"l": 212.22025, "t": 365.53659, "r": 271.18826, "b": 373.8616, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "X", "bbox": {"l": 454.50024, "t": 365.53659, "r": 460.50323, "b": 373.8616, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Work with Objects (", "bbox": {"l": 70.800537, "t": 384.5563, "r": 148.52722, "b": 392.8813200000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "WRKOBJ", "bbox": {"l": 148.56055, "t": 384.69131, "r": 175.50024, "b": 392.66531, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": ") CL command ", "bbox": {"l": 175.50024, "t": 384.5563, "r": 237.02424999999997, "b": 392.8813200000001, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "X", "bbox": {"l": 454.50024, "t": 384.5563, "r": 460.50323, "b": 392.8813200000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Work with Libraries (", "bbox": {"l": 70.800537, "t": 403.5166, "r": 152.58801, "b": 411.84160999999995, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "WRKLIB", "bbox": {"l": 152.58084, "t": 403.65161, "r": 179.58084, "b": 411.62561, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": ") CL command", "bbox": {"l": 179.58084, "t": 403.5166, "r": 238.51825, "b": 411.84160999999995, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "X", "bbox": {"l": 454.50113, "t": 403.5166, "r": 460.50411999999994, "b": 411.84160999999995, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Add Authorization List Entry (", "bbox": {"l": 70.801422, "t": 422.53632, "r": 187.26411, "b": 430.86133, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ADDAUTLE", "bbox": {"l": 187.32172, "t": 422.67133000000007, "r": 223.26141, "b": 430.64532, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": ") CL command ", "bbox": {"l": 223.26141, "t": 422.53632, "r": 284.72513, "b": 430.86133, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "X", "bbox": {"l": 454.5011, "t": 422.53632, "r": 460.50409, "b": 430.86133, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Change Authorization List Entry (", "bbox": {"l": 70.801392, "t": 441.55603, "r": 202.70538, "b": 449.88104, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "CHGAUTLE", "bbox": {"l": 202.8017, "t": 441.69104, "r": 238.74139000000002, "b": 449.66504000000003, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": ") CL command", "bbox": {"l": 238.74139000000002, "t": 441.55603, "r": 297.70038, "b": 449.88104, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "X", "bbox": {"l": 454.5011, "t": 441.55603, "r": 460.50409, "b": 449.88104, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Remove Authorization List Entry (", "bbox": {"l": 70.801392, "t": 460.51633, "r": 204.3821, "b": 468.84134, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "RMVAUTLE", "bbox": {"l": 204.42169, "t": 460.65134, "r": 240.36139000000003, "b": 468.62534, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": ") CL command", "bbox": {"l": 240.36139000000003, "t": 460.51633, "r": 299.32037, "b": 468.84134, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "X", "bbox": {"l": 454.5011, "t": 460.51633, "r": 460.50409, "b": 468.84134, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "Retrieve Authorization List Entry (", "bbox": {"l": 70.801392, "t": 479.53604, "r": 204.3857, "b": 487.86105, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "RTVAUTLE", "bbox": {"l": 204.42169, "t": 479.67105, "r": 240.36139000000003, "b": 487.64505, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": ") CL command", "bbox": {"l": 240.36139000000003, "t": 479.53604, "r": 299.32037, "b": 487.86105, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "X", "bbox": {"l": 454.5011, "t": 479.53604, "r": 460.50409, "b": 487.86105, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "Display Authorization List (", "bbox": {"l": 70.801392, "t": 498.55576, "r": 176.69899, "b": 506.88077, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "DSPAUTL", "bbox": {"l": 176.76109, "t": 498.69077, "r": 208.26109, "b": 506.66476, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": ") CL command ", "bbox": {"l": 208.26109, "t": 498.55576, "r": 269.7851, "b": 506.88077, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "X", "bbox": {"l": 454.5011, "t": 498.55576, "r": 460.50409, "b": 506.88077, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Display Authorization List Objects (", "bbox": {"l": 70.801392, "t": 517.51605, "r": 209.70918, "b": 525.84106, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "DSPAUTLOBJ", "bbox": {"l": 209.76138, "t": 517.6510599999999, "r": 254.70108, "b": 525.6250600000001, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": ") CL command", "bbox": {"l": 254.70108, "t": 517.51605, "r": 313.63849, "b": 525.84106, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "X", "bbox": {"l": 454.5011, "t": 517.51605, "r": 460.50409, "b": 525.84106, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "Edit Authorization List (", "bbox": {"l": 70.801392, "t": 536.53575, "r": 163.09819, "b": 544.86076, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "EDTAUTL", "bbox": {"l": 163.08109, "t": 536.67076, "r": 194.52078, "b": 544.64476, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": ") CL command", "bbox": {"l": 194.52078, "t": 536.53575, "r": 253.48878000000002, "b": 544.86076, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "X", "bbox": {"l": 454.50107, "t": 536.53575, "r": 460.50406000000004, "b": 544.86076, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "Work with Authorization Lists (", "bbox": {"l": 70.801361, "t": 555.5554500000001, "r": 191.40945, "b": 563.88046, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "WRKAUTL", "bbox": {"l": 191.40137, "t": 555.69046, "r": 222.84106000000003, "b": 563.66446, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": ") CL command", "bbox": {"l": 222.84106000000003, "t": 555.5554500000001, "r": 281.80908, "b": 563.88046, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "X", "bbox": {"l": 454.50107, "t": 555.5554500000001, "r": 460.50406000000004, "b": 563.88046, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "User action", "bbox": {"l": 70.801361, "t": 77.53577000000007, "r": 119.78657, "b": 85.86072000000001, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "*JOBCTL", "bbox": {"l": 424.93805, "t": 124.52936, "r": 433.26294000000007, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "QIBM_DB_SECADM", "bbox": {"l": 450.13806, "t": 78.62401999999997, "r": 458.46295, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "QIBM_DB_SQLADM", "bbox": {"l": 475.93835000000007, "t": 78.62401999999997, "r": 484.26324000000005, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "QIBM_DB_SYSMON", "bbox": {"l": 501.13837, "t": 78.56273999999996, "r": 509.46326, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "No Authority", "bbox": {"l": 526.39874, "t": 109.86841000000004, "r": 534.72351, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.58246612548828, "t": 754.4149780273438, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9042928218841553, "cells": [{"id": 0, "text": "12 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.4140625, "t": 754.5875244140625, "r": 334.42142, "b": 764.0072631835938, "coord_origin": "TOPLEFT"}, "confidence": 0.946682333946228, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "table", "bbox": {"l": 64.12763214111328, "t": 70.52249908447266, "r": 547.230224609375, "b": 569.5408325195312, "coord_origin": "TOPLEFT"}, "confidence": 0.9888067245483398, "cells": [{"id": 2, "text": "START PLAN CACHE EVENT MONITOR procedure", "bbox": {"l": 70.800606, "t": 175.5177, "r": 278.58273, "b": 183.84265000000005, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "X", "bbox": {"l": 429.00058000000007, "t": 175.5177, "r": 435.00357, "b": 183.84265000000005, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "X", "bbox": {"l": 480.00088999999997, "t": 175.5177, "r": 486.0038799999999, "b": 183.84265000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "END PLAN CACHE EVENT MONITOR procedure", "bbox": {"l": 70.800598, "t": 194.53741000000002, "r": 269.44949, "b": 202.86237000000006, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "X", "bbox": {"l": 429.00058000000007, "t": 194.53741000000002, "r": 435.00357, "b": 202.86237000000006, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "X", "bbox": {"l": 480.00088999999997, "t": 194.53741000000002, "r": 486.0038799999999, "b": 202.86237000000006, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "END ALL PLAN CACHE EVENT MONITORS procedure", "bbox": {"l": 70.800598, "t": 213.55713000000003, "r": 293.97632, "b": 221.88207999999997, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "X", "bbox": {"l": 429.00058000000007, "t": 213.55713000000003, "r": 435.00357, "b": 221.88207999999997, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "X", "bbox": {"l": 480.00088999999997, "t": 213.55713000000003, "r": 486.0038799999999, "b": 221.88207999999997, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Work with RCAC row permissions (Create, modify, or delete)", "bbox": {"l": 70.800598, "t": 232.51746000000003, "r": 311.22574, "b": 240.84240999999997, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "X", "bbox": {"l": 454.50031, "t": 232.51746000000003, "r": 460.5033, "b": 240.84240999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Work with RCAC column masks (Create, modify, or delete)", "bbox": {"l": 70.800598, "t": 251.53716999999995, "r": 303.58829, "b": 259.86212, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "X", "bbox": {"l": 454.50031, "t": 251.53716999999995, "r": 460.5033, "b": 259.86212, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Change Object Owner (", "bbox": {"l": 70.800598, "t": 270.55688, "r": 165.18898, "b": 278.88184, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "CHGOBJOWN", "bbox": {"l": 165.18091, "t": 270.69183, "r": 205.62061, "b": 278.66583, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ") CL command", "bbox": {"l": 205.62061, "t": 270.55688, "r": 264.57959, "b": 278.88184, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "X", "bbox": {"l": 454.50031, "t": 270.55688, "r": 460.5033, "b": 278.88184, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Change Object Primary Group (", "bbox": {"l": 70.800598, "t": 289.51715, "r": 197.55119, "b": 297.84216, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "CHGOBJPGP", "bbox": {"l": 197.5809, "t": 289.6521599999999, "r": 238.0206, "b": 297.62616, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": ") CL command ", "bbox": {"l": 238.0206, "t": 289.51715, "r": 299.39697, "b": 297.84216, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "X", "bbox": {"l": 454.50031, "t": 289.51715, "r": 460.5033, "b": 297.84216, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Grant Object Authority (", "bbox": {"l": 70.800598, "t": 308.53687, "r": 164.9973, "b": 316.86188, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "GRTOBJAUT", "bbox": {"l": 165.00089, "t": 308.67188, "r": 205.44058, "b": 316.64587, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": ") CL command ", "bbox": {"l": 205.44058, "t": 308.53687, "r": 266.84399, "b": 316.86188, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "X", "bbox": {"l": 454.50027, "t": 308.53687, "r": 460.50327000000004, "b": 316.86188, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Revoke Object Authority (", "bbox": {"l": 70.800568, "t": 327.55658, "r": 172.35025, "b": 335.88159, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "RVKOBJAUT", "bbox": {"l": 172.38086, "t": 327.6915900000001, "r": 212.82056, "b": 335.66559000000007, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ") CL command", "bbox": {"l": 212.82056, "t": 327.55658, "r": 271.78857, "b": 335.88159, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "X", "bbox": {"l": 454.50024, "t": 327.55658, "r": 460.50323, "b": 335.88159, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Edit Object Authority (", "bbox": {"l": 70.800537, "t": 346.51688, "r": 158.12213, "b": 354.84189, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "EDTOBJAUT", "bbox": {"l": 158.10052, "t": 346.65189, "r": 198.60052, "b": 354.62589, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": ") CL command", "bbox": {"l": 198.54022, "t": 346.51688, "r": 257.35434, "b": 354.84189, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "X", "bbox": {"l": 454.50024, "t": 346.51688, "r": 460.50323, "b": 354.84189, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Display Object Authority (", "bbox": {"l": 70.800537, "t": 365.53659, "r": 171.80392, "b": 373.8616, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "DSPOBJAUT", "bbox": {"l": 171.78055, "t": 365.6716, "r": 212.22025, "b": 373.6456, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": ") CL command", "bbox": {"l": 212.22025, "t": 365.53659, "r": 271.18826, "b": 373.8616, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "X", "bbox": {"l": 454.50024, "t": 365.53659, "r": 460.50323, "b": 373.8616, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Work with Objects (", "bbox": {"l": 70.800537, "t": 384.5563, "r": 148.52722, "b": 392.8813200000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "WRKOBJ", "bbox": {"l": 148.56055, "t": 384.69131, "r": 175.50024, "b": 392.66531, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": ") CL command ", "bbox": {"l": 175.50024, "t": 384.5563, "r": 237.02424999999997, "b": 392.8813200000001, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "X", "bbox": {"l": 454.50024, "t": 384.5563, "r": 460.50323, "b": 392.8813200000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Work with Libraries (", "bbox": {"l": 70.800537, "t": 403.5166, "r": 152.58801, "b": 411.84160999999995, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "WRKLIB", "bbox": {"l": 152.58084, "t": 403.65161, "r": 179.58084, "b": 411.62561, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": ") CL command", "bbox": {"l": 179.58084, "t": 403.5166, "r": 238.51825, "b": 411.84160999999995, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "X", "bbox": {"l": 454.50113, "t": 403.5166, "r": 460.50411999999994, "b": 411.84160999999995, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Add Authorization List Entry (", "bbox": {"l": 70.801422, "t": 422.53632, "r": 187.26411, "b": 430.86133, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ADDAUTLE", "bbox": {"l": 187.32172, "t": 422.67133000000007, "r": 223.26141, "b": 430.64532, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": ") CL command ", "bbox": {"l": 223.26141, "t": 422.53632, "r": 284.72513, "b": 430.86133, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "X", "bbox": {"l": 454.5011, "t": 422.53632, "r": 460.50409, "b": 430.86133, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Change Authorization List Entry (", "bbox": {"l": 70.801392, "t": 441.55603, "r": 202.70538, "b": 449.88104, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "CHGAUTLE", "bbox": {"l": 202.8017, "t": 441.69104, "r": 238.74139000000002, "b": 449.66504000000003, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": ") CL command", "bbox": {"l": 238.74139000000002, "t": 441.55603, "r": 297.70038, "b": 449.88104, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "X", "bbox": {"l": 454.5011, "t": 441.55603, "r": 460.50409, "b": 449.88104, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Remove Authorization List Entry (", "bbox": {"l": 70.801392, "t": 460.51633, "r": 204.3821, "b": 468.84134, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "RMVAUTLE", "bbox": {"l": 204.42169, "t": 460.65134, "r": 240.36139000000003, "b": 468.62534, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": ") CL command", "bbox": {"l": 240.36139000000003, "t": 460.51633, "r": 299.32037, "b": 468.84134, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "X", "bbox": {"l": 454.5011, "t": 460.51633, "r": 460.50409, "b": 468.84134, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "Retrieve Authorization List Entry (", "bbox": {"l": 70.801392, "t": 479.53604, "r": 204.3857, "b": 487.86105, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "RTVAUTLE", "bbox": {"l": 204.42169, "t": 479.67105, "r": 240.36139000000003, "b": 487.64505, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": ") CL command", "bbox": {"l": 240.36139000000003, "t": 479.53604, "r": 299.32037, "b": 487.86105, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "X", "bbox": {"l": 454.5011, "t": 479.53604, "r": 460.50409, "b": 487.86105, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "Display Authorization List (", "bbox": {"l": 70.801392, "t": 498.55576, "r": 176.69899, "b": 506.88077, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "DSPAUTL", "bbox": {"l": 176.76109, "t": 498.69077, "r": 208.26109, "b": 506.66476, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": ") CL command ", "bbox": {"l": 208.26109, "t": 498.55576, "r": 269.7851, "b": 506.88077, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "X", "bbox": {"l": 454.5011, "t": 498.55576, "r": 460.50409, "b": 506.88077, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Display Authorization List Objects (", "bbox": {"l": 70.801392, "t": 517.51605, "r": 209.70918, "b": 525.84106, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "DSPAUTLOBJ", "bbox": {"l": 209.76138, "t": 517.6510599999999, "r": 254.70108, "b": 525.6250600000001, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": ") CL command", "bbox": {"l": 254.70108, "t": 517.51605, "r": 313.63849, "b": 525.84106, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "X", "bbox": {"l": 454.5011, "t": 517.51605, "r": 460.50409, "b": 525.84106, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "Edit Authorization List (", "bbox": {"l": 70.801392, "t": 536.53575, "r": 163.09819, "b": 544.86076, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "EDTAUTL", "bbox": {"l": 163.08109, "t": 536.67076, "r": 194.52078, "b": 544.64476, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": ") CL command", "bbox": {"l": 194.52078, "t": 536.53575, "r": 253.48878000000002, "b": 544.86076, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "X", "bbox": {"l": 454.50107, "t": 536.53575, "r": 460.50406000000004, "b": 544.86076, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "Work with Authorization Lists (", "bbox": {"l": 70.801361, "t": 555.5554500000001, "r": 191.40945, "b": 563.88046, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "WRKAUTL", "bbox": {"l": 191.40137, "t": 555.69046, "r": 222.84106000000003, "b": 563.66446, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": ") CL command", "bbox": {"l": 222.84106000000003, "t": 555.5554500000001, "r": 281.80908, "b": 563.88046, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "X", "bbox": {"l": 454.50107, "t": 555.5554500000001, "r": 460.50406000000004, "b": 563.88046, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "User action", "bbox": {"l": 70.801361, "t": 77.53577000000007, "r": 119.78657, "b": 85.86072000000001, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "*JOBCTL", "bbox": {"l": 424.93805, "t": 124.52936, "r": 433.26294000000007, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "QIBM_DB_SECADM", "bbox": {"l": 450.13806, "t": 78.62401999999997, "r": 458.46295, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "QIBM_DB_SQLADM", "bbox": {"l": 475.93835000000007, "t": 78.62401999999997, "r": 484.26324000000005, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "QIBM_DB_SYSMON", "bbox": {"l": 501.13837, "t": 78.56273999999996, "r": 509.46326, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "No Authority", "bbox": {"l": 526.39874, "t": 109.86841000000004, "r": 534.72351, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {"2": {"label": "table", "id": 2, "page_no": 27, "cluster": {"id": 2, "label": "table", "bbox": {"l": 64.12763214111328, "t": 70.52249908447266, "r": 547.230224609375, "b": 569.5408325195312, "coord_origin": "TOPLEFT"}, "confidence": 0.9888067245483398, "cells": [{"id": 2, "text": "START PLAN CACHE EVENT MONITOR procedure", "bbox": {"l": 70.800606, "t": 175.5177, "r": 278.58273, "b": 183.84265000000005, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "X", "bbox": {"l": 429.00058000000007, "t": 175.5177, "r": 435.00357, "b": 183.84265000000005, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "X", "bbox": {"l": 480.00088999999997, "t": 175.5177, "r": 486.0038799999999, "b": 183.84265000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "END PLAN CACHE EVENT MONITOR procedure", "bbox": {"l": 70.800598, "t": 194.53741000000002, "r": 269.44949, "b": 202.86237000000006, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "X", "bbox": {"l": 429.00058000000007, "t": 194.53741000000002, "r": 435.00357, "b": 202.86237000000006, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "X", "bbox": {"l": 480.00088999999997, "t": 194.53741000000002, "r": 486.0038799999999, "b": 202.86237000000006, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "END ALL PLAN CACHE EVENT MONITORS procedure", "bbox": {"l": 70.800598, "t": 213.55713000000003, "r": 293.97632, "b": 221.88207999999997, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "X", "bbox": {"l": 429.00058000000007, "t": 213.55713000000003, "r": 435.00357, "b": 221.88207999999997, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "X", "bbox": {"l": 480.00088999999997, "t": 213.55713000000003, "r": 486.0038799999999, "b": 221.88207999999997, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Work with RCAC row permissions (Create, modify, or delete)", "bbox": {"l": 70.800598, "t": 232.51746000000003, "r": 311.22574, "b": 240.84240999999997, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "X", "bbox": {"l": 454.50031, "t": 232.51746000000003, "r": 460.5033, "b": 240.84240999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Work with RCAC column masks (Create, modify, or delete)", "bbox": {"l": 70.800598, "t": 251.53716999999995, "r": 303.58829, "b": 259.86212, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "X", "bbox": {"l": 454.50031, "t": 251.53716999999995, "r": 460.5033, "b": 259.86212, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Change Object Owner (", "bbox": {"l": 70.800598, "t": 270.55688, "r": 165.18898, "b": 278.88184, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "CHGOBJOWN", "bbox": {"l": 165.18091, "t": 270.69183, "r": 205.62061, "b": 278.66583, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ") CL command", "bbox": {"l": 205.62061, "t": 270.55688, "r": 264.57959, "b": 278.88184, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "X", "bbox": {"l": 454.50031, "t": 270.55688, "r": 460.5033, "b": 278.88184, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Change Object Primary Group (", "bbox": {"l": 70.800598, "t": 289.51715, "r": 197.55119, "b": 297.84216, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "CHGOBJPGP", "bbox": {"l": 197.5809, "t": 289.6521599999999, "r": 238.0206, "b": 297.62616, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": ") CL command ", "bbox": {"l": 238.0206, "t": 289.51715, "r": 299.39697, "b": 297.84216, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "X", "bbox": {"l": 454.50031, "t": 289.51715, "r": 460.5033, "b": 297.84216, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Grant Object Authority (", "bbox": {"l": 70.800598, "t": 308.53687, "r": 164.9973, "b": 316.86188, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "GRTOBJAUT", "bbox": {"l": 165.00089, "t": 308.67188, "r": 205.44058, "b": 316.64587, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": ") CL command ", "bbox": {"l": 205.44058, "t": 308.53687, "r": 266.84399, "b": 316.86188, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "X", "bbox": {"l": 454.50027, "t": 308.53687, "r": 460.50327000000004, "b": 316.86188, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Revoke Object Authority (", "bbox": {"l": 70.800568, "t": 327.55658, "r": 172.35025, "b": 335.88159, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "RVKOBJAUT", "bbox": {"l": 172.38086, "t": 327.6915900000001, "r": 212.82056, "b": 335.66559000000007, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ") CL command", "bbox": {"l": 212.82056, "t": 327.55658, "r": 271.78857, "b": 335.88159, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "X", "bbox": {"l": 454.50024, "t": 327.55658, "r": 460.50323, "b": 335.88159, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Edit Object Authority (", "bbox": {"l": 70.800537, "t": 346.51688, "r": 158.12213, "b": 354.84189, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "EDTOBJAUT", "bbox": {"l": 158.10052, "t": 346.65189, "r": 198.60052, "b": 354.62589, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": ") CL command", "bbox": {"l": 198.54022, "t": 346.51688, "r": 257.35434, "b": 354.84189, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "X", "bbox": {"l": 454.50024, "t": 346.51688, "r": 460.50323, "b": 354.84189, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Display Object Authority (", "bbox": {"l": 70.800537, "t": 365.53659, "r": 171.80392, "b": 373.8616, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "DSPOBJAUT", "bbox": {"l": 171.78055, "t": 365.6716, "r": 212.22025, "b": 373.6456, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": ") CL command", "bbox": {"l": 212.22025, "t": 365.53659, "r": 271.18826, "b": 373.8616, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "X", "bbox": {"l": 454.50024, "t": 365.53659, "r": 460.50323, "b": 373.8616, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Work with Objects (", "bbox": {"l": 70.800537, "t": 384.5563, "r": 148.52722, "b": 392.8813200000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "WRKOBJ", "bbox": {"l": 148.56055, "t": 384.69131, "r": 175.50024, "b": 392.66531, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": ") CL command ", "bbox": {"l": 175.50024, "t": 384.5563, "r": 237.02424999999997, "b": 392.8813200000001, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "X", "bbox": {"l": 454.50024, "t": 384.5563, "r": 460.50323, "b": 392.8813200000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Work with Libraries (", "bbox": {"l": 70.800537, "t": 403.5166, "r": 152.58801, "b": 411.84160999999995, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "WRKLIB", "bbox": {"l": 152.58084, "t": 403.65161, "r": 179.58084, "b": 411.62561, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": ") CL command", "bbox": {"l": 179.58084, "t": 403.5166, "r": 238.51825, "b": 411.84160999999995, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "X", "bbox": {"l": 454.50113, "t": 403.5166, "r": 460.50411999999994, "b": 411.84160999999995, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Add Authorization List Entry (", "bbox": {"l": 70.801422, "t": 422.53632, "r": 187.26411, "b": 430.86133, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ADDAUTLE", "bbox": {"l": 187.32172, "t": 422.67133000000007, "r": 223.26141, "b": 430.64532, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": ") CL command ", "bbox": {"l": 223.26141, "t": 422.53632, "r": 284.72513, "b": 430.86133, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "X", "bbox": {"l": 454.5011, "t": 422.53632, "r": 460.50409, "b": 430.86133, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Change Authorization List Entry (", "bbox": {"l": 70.801392, "t": 441.55603, "r": 202.70538, "b": 449.88104, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "CHGAUTLE", "bbox": {"l": 202.8017, "t": 441.69104, "r": 238.74139000000002, "b": 449.66504000000003, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": ") CL command", "bbox": {"l": 238.74139000000002, "t": 441.55603, "r": 297.70038, "b": 449.88104, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "X", "bbox": {"l": 454.5011, "t": 441.55603, "r": 460.50409, "b": 449.88104, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Remove Authorization List Entry (", "bbox": {"l": 70.801392, "t": 460.51633, "r": 204.3821, "b": 468.84134, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "RMVAUTLE", "bbox": {"l": 204.42169, "t": 460.65134, "r": 240.36139000000003, "b": 468.62534, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": ") CL command", "bbox": {"l": 240.36139000000003, "t": 460.51633, "r": 299.32037, "b": 468.84134, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "X", "bbox": {"l": 454.5011, "t": 460.51633, "r": 460.50409, "b": 468.84134, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "Retrieve Authorization List Entry (", "bbox": {"l": 70.801392, "t": 479.53604, "r": 204.3857, "b": 487.86105, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "RTVAUTLE", "bbox": {"l": 204.42169, "t": 479.67105, "r": 240.36139000000003, "b": 487.64505, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": ") CL command", "bbox": {"l": 240.36139000000003, "t": 479.53604, "r": 299.32037, "b": 487.86105, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "X", "bbox": {"l": 454.5011, "t": 479.53604, "r": 460.50409, "b": 487.86105, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "Display Authorization List (", "bbox": {"l": 70.801392, "t": 498.55576, "r": 176.69899, "b": 506.88077, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "DSPAUTL", "bbox": {"l": 176.76109, "t": 498.69077, "r": 208.26109, "b": 506.66476, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": ") CL command ", "bbox": {"l": 208.26109, "t": 498.55576, "r": 269.7851, "b": 506.88077, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "X", "bbox": {"l": 454.5011, "t": 498.55576, "r": 460.50409, "b": 506.88077, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Display Authorization List Objects (", "bbox": {"l": 70.801392, "t": 517.51605, "r": 209.70918, "b": 525.84106, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "DSPAUTLOBJ", "bbox": {"l": 209.76138, "t": 517.6510599999999, "r": 254.70108, "b": 525.6250600000001, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": ") CL command", "bbox": {"l": 254.70108, "t": 517.51605, "r": 313.63849, "b": 525.84106, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "X", "bbox": {"l": 454.5011, "t": 517.51605, "r": 460.50409, "b": 525.84106, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "Edit Authorization List (", "bbox": {"l": 70.801392, "t": 536.53575, "r": 163.09819, "b": 544.86076, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "EDTAUTL", "bbox": {"l": 163.08109, "t": 536.67076, "r": 194.52078, "b": 544.64476, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": ") CL command", "bbox": {"l": 194.52078, "t": 536.53575, "r": 253.48878000000002, "b": 544.86076, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "X", "bbox": {"l": 454.50107, "t": 536.53575, "r": 460.50406000000004, "b": 544.86076, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "Work with Authorization Lists (", "bbox": {"l": 70.801361, "t": 555.5554500000001, "r": 191.40945, "b": 563.88046, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "WRKAUTL", "bbox": {"l": 191.40137, "t": 555.69046, "r": 222.84106000000003, "b": 563.66446, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": ") CL command", "bbox": {"l": 222.84106000000003, "t": 555.5554500000001, "r": 281.80908, "b": 563.88046, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "X", "bbox": {"l": 454.50107, "t": 555.5554500000001, "r": 460.50406000000004, "b": 563.88046, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "User action", "bbox": {"l": 70.801361, "t": 77.53577000000007, "r": 119.78657, "b": 85.86072000000001, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "*JOBCTL", "bbox": {"l": 424.93805, "t": 124.52936, "r": 433.26294000000007, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "QIBM_DB_SECADM", "bbox": {"l": 450.13806, "t": 78.62401999999997, "r": 458.46295, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "QIBM_DB_SQLADM", "bbox": {"l": 475.93835000000007, "t": 78.62401999999997, "r": 484.26324000000005, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "QIBM_DB_SYSMON", "bbox": {"l": 501.13837, "t": 78.56273999999996, "r": 509.46326, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "No Authority", "bbox": {"l": 526.39874, "t": 109.86841000000004, "r": 534.72351, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["fcel", "ched", "ched", "ched", "ched", "ched", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl"], "num_rows": 22, "num_cols": 6, "table_cells": [{"bbox": {"l": 70.800606, "t": 175.5177, "r": 278.58273, "b": 183.84265000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "START PLAN CACHE EVENT MONITOR procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00058000000007, "t": 175.5177, "r": 435.00357, "b": 183.84265000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00088999999997, "t": 175.5177, "r": 486.0038799999999, "b": 183.84265000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800598, "t": 194.53741000000002, "r": 269.44949, "b": 202.86237000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "END PLAN CACHE EVENT MONITOR procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00058000000007, "t": 194.53741000000002, "r": 435.00357, "b": 202.86237000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00088999999997, "t": 194.53741000000002, "r": 486.0038799999999, "b": 202.86237000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800598, "t": 213.55713000000003, "r": 293.97632, "b": 221.88207999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "END ALL PLAN CACHE EVENT MONITORS procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00058000000007, "t": 213.55713000000003, "r": 435.00357, "b": 221.88207999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00088999999997, "t": 213.55713000000003, "r": 486.0038799999999, "b": 221.88207999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800598, "t": 232.51746000000003, "r": 311.22574, "b": 240.84240999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Work with RCAC row permissions (Create, modify, or delete)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50031, "t": 232.51746000000003, "r": 460.5033, "b": 240.84240999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800598, "t": 251.53716999999995, "r": 303.58829, "b": 259.86212, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Work with RCAC column masks (Create, modify, or delete)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50031, "t": 251.53716999999995, "r": 460.5033, "b": 259.86212, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800598, "t": 270.55688, "r": 264.57959, "b": 278.88184, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Change Object Owner ( CHGOBJOWN ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50031, "t": 270.55688, "r": 460.5033, "b": 278.88184, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800598, "t": 289.51715, "r": 299.39697, "b": 297.84216, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Change Object Primary Group ( CHGOBJPGP ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50031, "t": 289.51715, "r": 460.5033, "b": 297.84216, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800598, "t": 308.53687, "r": 266.84399, "b": 316.86188, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Grant Object Authority ( GRTOBJAUT ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50027, "t": 308.53687, "r": 460.50327000000004, "b": 316.86188, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800568, "t": 327.55658, "r": 271.78857, "b": 335.88159, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Revoke Object Authority ( RVKOBJAUT ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50024, "t": 327.55658, "r": 460.50323, "b": 335.88159, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800537, "t": 346.51688, "r": 257.35434, "b": 354.84189, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Edit Object Authority ( EDTOBJAUT ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50024, "t": 346.51688, "r": 460.50323, "b": 354.84189, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800537, "t": 365.53659, "r": 271.18826, "b": 373.8616, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Display Object Authority ( DSPOBJAUT ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50024, "t": 365.53659, "r": 460.50323, "b": 373.8616, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800537, "t": 384.5563, "r": 237.02424999999997, "b": 392.8813200000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Work with Objects ( WRKOBJ ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50024, "t": 384.5563, "r": 460.50323, "b": 392.8813200000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800537, "t": 403.5166, "r": 238.51825, "b": 411.84160999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Work with Libraries ( WRKLIB ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50113, "t": 403.5166, "r": 460.50411999999994, "b": 411.84160999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801422, "t": 422.53632, "r": 284.72513, "b": 430.86133, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Add Authorization List Entry ( ADDAUTLE ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.5011, "t": 422.53632, "r": 460.50409, "b": 430.86133, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801392, "t": 441.55603, "r": 297.70038, "b": 449.88104, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Change Authorization List Entry ( CHGAUTLE ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.5011, "t": 441.55603, "r": 460.50409, "b": 449.88104, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801392, "t": 460.51633, "r": 299.32037, "b": 468.84134, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Remove Authorization List Entry ( RMVAUTLE ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.5011, "t": 460.51633, "r": 460.50409, "b": 468.84134, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801392, "t": 479.53604, "r": 299.32037, "b": 487.86105, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Retrieve Authorization List Entry ( RTVAUTLE ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.5011, "t": 479.53604, "r": 460.50409, "b": 487.86105, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801392, "t": 498.55576, "r": 269.7851, "b": 506.88077, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Display Authorization List ( DSPAUTL ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.5011, "t": 498.55576, "r": 460.50409, "b": 506.88077, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801392, "t": 517.51605, "r": 313.63849, "b": 525.84106, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Display Authorization List Objects ( DSPAUTLOBJ ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.5011, "t": 517.51605, "r": 460.50409, "b": 525.84106, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801392, "t": 536.53575, "r": 253.48878000000002, "b": 544.86076, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Edit Authorization List ( EDTAUTL ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50107, "t": 536.53575, "r": 460.50406000000004, "b": 544.86076, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801361, "t": 555.5554500000001, "r": 281.80908, "b": 563.88046, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Work with Authorization Lists ( WRKAUTL ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50107, "t": 555.5554500000001, "r": 460.50406000000004, "b": 563.88046, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801361, "t": 77.53577000000007, "r": 119.78657, "b": 85.86072000000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "User action", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 424.93805, "t": 124.52936, "r": 433.26294000000007, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "*JOBCTL", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 450.13806, "t": 78.62401999999997, "r": 458.46295, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "QIBM_DB_SECADM", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 475.93835000000007, "t": 78.62401999999997, "r": 484.26324000000005, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "QIBM_DB_SQLADM", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 501.13837, "t": 78.56273999999996, "r": 509.46326, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "QIBM_DB_SYSMON", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 526.39874, "t": 109.86841000000004, "r": 534.72351, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "No Authority", "column_header": true, "row_header": false, "row_section": false}]}}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 27, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.58246612548828, "t": 754.4149780273438, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9042928218841553, "cells": [{"id": 0, "text": "12 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "12"}, {"label": "page_footer", "id": 1, "page_no": 27, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.4140625, "t": 754.5875244140625, "r": 334.42142, "b": 764.0072631835938, "coord_origin": "TOPLEFT"}, "confidence": 0.946682333946228, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "table", "id": 2, "page_no": 27, "cluster": {"id": 2, "label": "table", "bbox": {"l": 64.12763214111328, "t": 70.52249908447266, "r": 547.230224609375, "b": 569.5408325195312, "coord_origin": "TOPLEFT"}, "confidence": 0.9888067245483398, "cells": [{"id": 2, "text": "START PLAN CACHE EVENT MONITOR procedure", "bbox": {"l": 70.800606, "t": 175.5177, "r": 278.58273, "b": 183.84265000000005, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "X", "bbox": {"l": 429.00058000000007, "t": 175.5177, "r": 435.00357, "b": 183.84265000000005, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "X", "bbox": {"l": 480.00088999999997, "t": 175.5177, "r": 486.0038799999999, "b": 183.84265000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "END PLAN CACHE EVENT MONITOR procedure", "bbox": {"l": 70.800598, "t": 194.53741000000002, "r": 269.44949, "b": 202.86237000000006, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "X", "bbox": {"l": 429.00058000000007, "t": 194.53741000000002, "r": 435.00357, "b": 202.86237000000006, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "X", "bbox": {"l": 480.00088999999997, "t": 194.53741000000002, "r": 486.0038799999999, "b": 202.86237000000006, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "END ALL PLAN CACHE EVENT MONITORS procedure", "bbox": {"l": 70.800598, "t": 213.55713000000003, "r": 293.97632, "b": 221.88207999999997, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "X", "bbox": {"l": 429.00058000000007, "t": 213.55713000000003, "r": 435.00357, "b": 221.88207999999997, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "X", "bbox": {"l": 480.00088999999997, "t": 213.55713000000003, "r": 486.0038799999999, "b": 221.88207999999997, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Work with RCAC row permissions (Create, modify, or delete)", "bbox": {"l": 70.800598, "t": 232.51746000000003, "r": 311.22574, "b": 240.84240999999997, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "X", "bbox": {"l": 454.50031, "t": 232.51746000000003, "r": 460.5033, "b": 240.84240999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Work with RCAC column masks (Create, modify, or delete)", "bbox": {"l": 70.800598, "t": 251.53716999999995, "r": 303.58829, "b": 259.86212, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "X", "bbox": {"l": 454.50031, "t": 251.53716999999995, "r": 460.5033, "b": 259.86212, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Change Object Owner (", "bbox": {"l": 70.800598, "t": 270.55688, "r": 165.18898, "b": 278.88184, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "CHGOBJOWN", "bbox": {"l": 165.18091, "t": 270.69183, "r": 205.62061, "b": 278.66583, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ") CL command", "bbox": {"l": 205.62061, "t": 270.55688, "r": 264.57959, "b": 278.88184, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "X", "bbox": {"l": 454.50031, "t": 270.55688, "r": 460.5033, "b": 278.88184, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Change Object Primary Group (", "bbox": {"l": 70.800598, "t": 289.51715, "r": 197.55119, "b": 297.84216, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "CHGOBJPGP", "bbox": {"l": 197.5809, "t": 289.6521599999999, "r": 238.0206, "b": 297.62616, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": ") CL command ", "bbox": {"l": 238.0206, "t": 289.51715, "r": 299.39697, "b": 297.84216, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "X", "bbox": {"l": 454.50031, "t": 289.51715, "r": 460.5033, "b": 297.84216, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Grant Object Authority (", "bbox": {"l": 70.800598, "t": 308.53687, "r": 164.9973, "b": 316.86188, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "GRTOBJAUT", "bbox": {"l": 165.00089, "t": 308.67188, "r": 205.44058, "b": 316.64587, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": ") CL command ", "bbox": {"l": 205.44058, "t": 308.53687, "r": 266.84399, "b": 316.86188, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "X", "bbox": {"l": 454.50027, "t": 308.53687, "r": 460.50327000000004, "b": 316.86188, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Revoke Object Authority (", "bbox": {"l": 70.800568, "t": 327.55658, "r": 172.35025, "b": 335.88159, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "RVKOBJAUT", "bbox": {"l": 172.38086, "t": 327.6915900000001, "r": 212.82056, "b": 335.66559000000007, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ") CL command", "bbox": {"l": 212.82056, "t": 327.55658, "r": 271.78857, "b": 335.88159, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "X", "bbox": {"l": 454.50024, "t": 327.55658, "r": 460.50323, "b": 335.88159, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Edit Object Authority (", "bbox": {"l": 70.800537, "t": 346.51688, "r": 158.12213, "b": 354.84189, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "EDTOBJAUT", "bbox": {"l": 158.10052, "t": 346.65189, "r": 198.60052, "b": 354.62589, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": ") CL command", "bbox": {"l": 198.54022, "t": 346.51688, "r": 257.35434, "b": 354.84189, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "X", "bbox": {"l": 454.50024, "t": 346.51688, "r": 460.50323, "b": 354.84189, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Display Object Authority (", "bbox": {"l": 70.800537, "t": 365.53659, "r": 171.80392, "b": 373.8616, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "DSPOBJAUT", "bbox": {"l": 171.78055, "t": 365.6716, "r": 212.22025, "b": 373.6456, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": ") CL command", "bbox": {"l": 212.22025, "t": 365.53659, "r": 271.18826, "b": 373.8616, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "X", "bbox": {"l": 454.50024, "t": 365.53659, "r": 460.50323, "b": 373.8616, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Work with Objects (", "bbox": {"l": 70.800537, "t": 384.5563, "r": 148.52722, "b": 392.8813200000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "WRKOBJ", "bbox": {"l": 148.56055, "t": 384.69131, "r": 175.50024, "b": 392.66531, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": ") CL command ", "bbox": {"l": 175.50024, "t": 384.5563, "r": 237.02424999999997, "b": 392.8813200000001, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "X", "bbox": {"l": 454.50024, "t": 384.5563, "r": 460.50323, "b": 392.8813200000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Work with Libraries (", "bbox": {"l": 70.800537, "t": 403.5166, "r": 152.58801, "b": 411.84160999999995, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "WRKLIB", "bbox": {"l": 152.58084, "t": 403.65161, "r": 179.58084, "b": 411.62561, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": ") CL command", "bbox": {"l": 179.58084, "t": 403.5166, "r": 238.51825, "b": 411.84160999999995, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "X", "bbox": {"l": 454.50113, "t": 403.5166, "r": 460.50411999999994, "b": 411.84160999999995, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Add Authorization List Entry (", "bbox": {"l": 70.801422, "t": 422.53632, "r": 187.26411, "b": 430.86133, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ADDAUTLE", "bbox": {"l": 187.32172, "t": 422.67133000000007, "r": 223.26141, "b": 430.64532, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": ") CL command ", "bbox": {"l": 223.26141, "t": 422.53632, "r": 284.72513, "b": 430.86133, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "X", "bbox": {"l": 454.5011, "t": 422.53632, "r": 460.50409, "b": 430.86133, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Change Authorization List Entry (", "bbox": {"l": 70.801392, "t": 441.55603, "r": 202.70538, "b": 449.88104, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "CHGAUTLE", "bbox": {"l": 202.8017, "t": 441.69104, "r": 238.74139000000002, "b": 449.66504000000003, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": ") CL command", "bbox": {"l": 238.74139000000002, "t": 441.55603, "r": 297.70038, "b": 449.88104, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "X", "bbox": {"l": 454.5011, "t": 441.55603, "r": 460.50409, "b": 449.88104, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Remove Authorization List Entry (", "bbox": {"l": 70.801392, "t": 460.51633, "r": 204.3821, "b": 468.84134, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "RMVAUTLE", "bbox": {"l": 204.42169, "t": 460.65134, "r": 240.36139000000003, "b": 468.62534, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": ") CL command", "bbox": {"l": 240.36139000000003, "t": 460.51633, "r": 299.32037, "b": 468.84134, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "X", "bbox": {"l": 454.5011, "t": 460.51633, "r": 460.50409, "b": 468.84134, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "Retrieve Authorization List Entry (", "bbox": {"l": 70.801392, "t": 479.53604, "r": 204.3857, "b": 487.86105, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "RTVAUTLE", "bbox": {"l": 204.42169, "t": 479.67105, "r": 240.36139000000003, "b": 487.64505, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": ") CL command", "bbox": {"l": 240.36139000000003, "t": 479.53604, "r": 299.32037, "b": 487.86105, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "X", "bbox": {"l": 454.5011, "t": 479.53604, "r": 460.50409, "b": 487.86105, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "Display Authorization List (", "bbox": {"l": 70.801392, "t": 498.55576, "r": 176.69899, "b": 506.88077, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "DSPAUTL", "bbox": {"l": 176.76109, "t": 498.69077, "r": 208.26109, "b": 506.66476, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": ") CL command ", "bbox": {"l": 208.26109, "t": 498.55576, "r": 269.7851, "b": 506.88077, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "X", "bbox": {"l": 454.5011, "t": 498.55576, "r": 460.50409, "b": 506.88077, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Display Authorization List Objects (", "bbox": {"l": 70.801392, "t": 517.51605, "r": 209.70918, "b": 525.84106, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "DSPAUTLOBJ", "bbox": {"l": 209.76138, "t": 517.6510599999999, "r": 254.70108, "b": 525.6250600000001, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": ") CL command", "bbox": {"l": 254.70108, "t": 517.51605, "r": 313.63849, "b": 525.84106, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "X", "bbox": {"l": 454.5011, "t": 517.51605, "r": 460.50409, "b": 525.84106, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "Edit Authorization List (", "bbox": {"l": 70.801392, "t": 536.53575, "r": 163.09819, "b": 544.86076, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "EDTAUTL", "bbox": {"l": 163.08109, "t": 536.67076, "r": 194.52078, "b": 544.64476, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": ") CL command", "bbox": {"l": 194.52078, "t": 536.53575, "r": 253.48878000000002, "b": 544.86076, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "X", "bbox": {"l": 454.50107, "t": 536.53575, "r": 460.50406000000004, "b": 544.86076, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "Work with Authorization Lists (", "bbox": {"l": 70.801361, "t": 555.5554500000001, "r": 191.40945, "b": 563.88046, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "WRKAUTL", "bbox": {"l": 191.40137, "t": 555.69046, "r": 222.84106000000003, "b": 563.66446, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": ") CL command", "bbox": {"l": 222.84106000000003, "t": 555.5554500000001, "r": 281.80908, "b": 563.88046, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "X", "bbox": {"l": 454.50107, "t": 555.5554500000001, "r": 460.50406000000004, "b": 563.88046, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "User action", "bbox": {"l": 70.801361, "t": 77.53577000000007, "r": 119.78657, "b": 85.86072000000001, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "*JOBCTL", "bbox": {"l": 424.93805, "t": 124.52936, "r": 433.26294000000007, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "QIBM_DB_SECADM", "bbox": {"l": 450.13806, "t": 78.62401999999997, "r": 458.46295, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "QIBM_DB_SQLADM", "bbox": {"l": 475.93835000000007, "t": 78.62401999999997, "r": 484.26324000000005, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "QIBM_DB_SYSMON", "bbox": {"l": 501.13837, "t": 78.56273999999996, "r": 509.46326, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "No Authority", "bbox": {"l": 526.39874, "t": 109.86841000000004, "r": 534.72351, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["fcel", "ched", "ched", "ched", "ched", "ched", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl"], "num_rows": 22, "num_cols": 6, "table_cells": [{"bbox": {"l": 70.800606, "t": 175.5177, "r": 278.58273, "b": 183.84265000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "START PLAN CACHE EVENT MONITOR procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00058000000007, "t": 175.5177, "r": 435.00357, "b": 183.84265000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00088999999997, "t": 175.5177, "r": 486.0038799999999, "b": 183.84265000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800598, "t": 194.53741000000002, "r": 269.44949, "b": 202.86237000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "END PLAN CACHE EVENT MONITOR procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00058000000007, "t": 194.53741000000002, "r": 435.00357, "b": 202.86237000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00088999999997, "t": 194.53741000000002, "r": 486.0038799999999, "b": 202.86237000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800598, "t": 213.55713000000003, "r": 293.97632, "b": 221.88207999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "END ALL PLAN CACHE EVENT MONITORS procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00058000000007, "t": 213.55713000000003, "r": 435.00357, "b": 221.88207999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00088999999997, "t": 213.55713000000003, "r": 486.0038799999999, "b": 221.88207999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800598, "t": 232.51746000000003, "r": 311.22574, "b": 240.84240999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Work with RCAC row permissions (Create, modify, or delete)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50031, "t": 232.51746000000003, "r": 460.5033, "b": 240.84240999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800598, "t": 251.53716999999995, "r": 303.58829, "b": 259.86212, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Work with RCAC column masks (Create, modify, or delete)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50031, "t": 251.53716999999995, "r": 460.5033, "b": 259.86212, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800598, "t": 270.55688, "r": 264.57959, "b": 278.88184, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Change Object Owner ( CHGOBJOWN ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50031, "t": 270.55688, "r": 460.5033, "b": 278.88184, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800598, "t": 289.51715, "r": 299.39697, "b": 297.84216, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Change Object Primary Group ( CHGOBJPGP ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50031, "t": 289.51715, "r": 460.5033, "b": 297.84216, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800598, "t": 308.53687, "r": 266.84399, "b": 316.86188, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Grant Object Authority ( GRTOBJAUT ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50027, "t": 308.53687, "r": 460.50327000000004, "b": 316.86188, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800568, "t": 327.55658, "r": 271.78857, "b": 335.88159, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Revoke Object Authority ( RVKOBJAUT ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50024, "t": 327.55658, "r": 460.50323, "b": 335.88159, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800537, "t": 346.51688, "r": 257.35434, "b": 354.84189, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Edit Object Authority ( EDTOBJAUT ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50024, "t": 346.51688, "r": 460.50323, "b": 354.84189, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800537, "t": 365.53659, "r": 271.18826, "b": 373.8616, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Display Object Authority ( DSPOBJAUT ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50024, "t": 365.53659, "r": 460.50323, "b": 373.8616, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800537, "t": 384.5563, "r": 237.02424999999997, "b": 392.8813200000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Work with Objects ( WRKOBJ ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50024, "t": 384.5563, "r": 460.50323, "b": 392.8813200000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800537, "t": 403.5166, "r": 238.51825, "b": 411.84160999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Work with Libraries ( WRKLIB ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50113, "t": 403.5166, "r": 460.50411999999994, "b": 411.84160999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801422, "t": 422.53632, "r": 284.72513, "b": 430.86133, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Add Authorization List Entry ( ADDAUTLE ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.5011, "t": 422.53632, "r": 460.50409, "b": 430.86133, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801392, "t": 441.55603, "r": 297.70038, "b": 449.88104, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Change Authorization List Entry ( CHGAUTLE ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.5011, "t": 441.55603, "r": 460.50409, "b": 449.88104, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801392, "t": 460.51633, "r": 299.32037, "b": 468.84134, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Remove Authorization List Entry ( RMVAUTLE ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.5011, "t": 460.51633, "r": 460.50409, "b": 468.84134, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801392, "t": 479.53604, "r": 299.32037, "b": 487.86105, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Retrieve Authorization List Entry ( RTVAUTLE ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.5011, "t": 479.53604, "r": 460.50409, "b": 487.86105, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801392, "t": 498.55576, "r": 269.7851, "b": 506.88077, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Display Authorization List ( DSPAUTL ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.5011, "t": 498.55576, "r": 460.50409, "b": 506.88077, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801392, "t": 517.51605, "r": 313.63849, "b": 525.84106, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Display Authorization List Objects ( DSPAUTLOBJ ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.5011, "t": 517.51605, "r": 460.50409, "b": 525.84106, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801392, "t": 536.53575, "r": 253.48878000000002, "b": 544.86076, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Edit Authorization List ( EDTAUTL ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50107, "t": 536.53575, "r": 460.50406000000004, "b": 544.86076, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801361, "t": 555.5554500000001, "r": 281.80908, "b": 563.88046, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Work with Authorization Lists ( WRKAUTL ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50107, "t": 555.5554500000001, "r": 460.50406000000004, "b": 563.88046, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801361, "t": 77.53577000000007, "r": 119.78657, "b": 85.86072000000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "User action", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 424.93805, "t": 124.52936, "r": 433.26294000000007, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "*JOBCTL", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 450.13806, "t": 78.62401999999997, "r": 458.46295, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "QIBM_DB_SECADM", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 475.93835000000007, "t": 78.62401999999997, "r": 484.26324000000005, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "QIBM_DB_SQLADM", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 501.13837, "t": 78.56273999999996, "r": 509.46326, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "QIBM_DB_SYSMON", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 526.39874, "t": 109.86841000000004, "r": 534.72351, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "No Authority", "column_header": true, "row_header": false, "row_section": false}]}], "body": [{"label": "table", "id": 2, "page_no": 27, "cluster": {"id": 2, "label": "table", "bbox": {"l": 64.12763214111328, "t": 70.52249908447266, "r": 547.230224609375, "b": 569.5408325195312, "coord_origin": "TOPLEFT"}, "confidence": 0.9888067245483398, "cells": [{"id": 2, "text": "START PLAN CACHE EVENT MONITOR procedure", "bbox": {"l": 70.800606, "t": 175.5177, "r": 278.58273, "b": 183.84265000000005, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "X", "bbox": {"l": 429.00058000000007, "t": 175.5177, "r": 435.00357, "b": 183.84265000000005, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "X", "bbox": {"l": 480.00088999999997, "t": 175.5177, "r": 486.0038799999999, "b": 183.84265000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "END PLAN CACHE EVENT MONITOR procedure", "bbox": {"l": 70.800598, "t": 194.53741000000002, "r": 269.44949, "b": 202.86237000000006, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "X", "bbox": {"l": 429.00058000000007, "t": 194.53741000000002, "r": 435.00357, "b": 202.86237000000006, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "X", "bbox": {"l": 480.00088999999997, "t": 194.53741000000002, "r": 486.0038799999999, "b": 202.86237000000006, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "END ALL PLAN CACHE EVENT MONITORS procedure", "bbox": {"l": 70.800598, "t": 213.55713000000003, "r": 293.97632, "b": 221.88207999999997, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "X", "bbox": {"l": 429.00058000000007, "t": 213.55713000000003, "r": 435.00357, "b": 221.88207999999997, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "X", "bbox": {"l": 480.00088999999997, "t": 213.55713000000003, "r": 486.0038799999999, "b": 221.88207999999997, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Work with RCAC row permissions (Create, modify, or delete)", "bbox": {"l": 70.800598, "t": 232.51746000000003, "r": 311.22574, "b": 240.84240999999997, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "X", "bbox": {"l": 454.50031, "t": 232.51746000000003, "r": 460.5033, "b": 240.84240999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Work with RCAC column masks (Create, modify, or delete)", "bbox": {"l": 70.800598, "t": 251.53716999999995, "r": 303.58829, "b": 259.86212, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "X", "bbox": {"l": 454.50031, "t": 251.53716999999995, "r": 460.5033, "b": 259.86212, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Change Object Owner (", "bbox": {"l": 70.800598, "t": 270.55688, "r": 165.18898, "b": 278.88184, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "CHGOBJOWN", "bbox": {"l": 165.18091, "t": 270.69183, "r": 205.62061, "b": 278.66583, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ") CL command", "bbox": {"l": 205.62061, "t": 270.55688, "r": 264.57959, "b": 278.88184, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "X", "bbox": {"l": 454.50031, "t": 270.55688, "r": 460.5033, "b": 278.88184, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Change Object Primary Group (", "bbox": {"l": 70.800598, "t": 289.51715, "r": 197.55119, "b": 297.84216, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "CHGOBJPGP", "bbox": {"l": 197.5809, "t": 289.6521599999999, "r": 238.0206, "b": 297.62616, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": ") CL command ", "bbox": {"l": 238.0206, "t": 289.51715, "r": 299.39697, "b": 297.84216, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "X", "bbox": {"l": 454.50031, "t": 289.51715, "r": 460.5033, "b": 297.84216, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Grant Object Authority (", "bbox": {"l": 70.800598, "t": 308.53687, "r": 164.9973, "b": 316.86188, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "GRTOBJAUT", "bbox": {"l": 165.00089, "t": 308.67188, "r": 205.44058, "b": 316.64587, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": ") CL command ", "bbox": {"l": 205.44058, "t": 308.53687, "r": 266.84399, "b": 316.86188, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "X", "bbox": {"l": 454.50027, "t": 308.53687, "r": 460.50327000000004, "b": 316.86188, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Revoke Object Authority (", "bbox": {"l": 70.800568, "t": 327.55658, "r": 172.35025, "b": 335.88159, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "RVKOBJAUT", "bbox": {"l": 172.38086, "t": 327.6915900000001, "r": 212.82056, "b": 335.66559000000007, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ") CL command", "bbox": {"l": 212.82056, "t": 327.55658, "r": 271.78857, "b": 335.88159, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "X", "bbox": {"l": 454.50024, "t": 327.55658, "r": 460.50323, "b": 335.88159, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Edit Object Authority (", "bbox": {"l": 70.800537, "t": 346.51688, "r": 158.12213, "b": 354.84189, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "EDTOBJAUT", "bbox": {"l": 158.10052, "t": 346.65189, "r": 198.60052, "b": 354.62589, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": ") CL command", "bbox": {"l": 198.54022, "t": 346.51688, "r": 257.35434, "b": 354.84189, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "X", "bbox": {"l": 454.50024, "t": 346.51688, "r": 460.50323, "b": 354.84189, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Display Object Authority (", "bbox": {"l": 70.800537, "t": 365.53659, "r": 171.80392, "b": 373.8616, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "DSPOBJAUT", "bbox": {"l": 171.78055, "t": 365.6716, "r": 212.22025, "b": 373.6456, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": ") CL command", "bbox": {"l": 212.22025, "t": 365.53659, "r": 271.18826, "b": 373.8616, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "X", "bbox": {"l": 454.50024, "t": 365.53659, "r": 460.50323, "b": 373.8616, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Work with Objects (", "bbox": {"l": 70.800537, "t": 384.5563, "r": 148.52722, "b": 392.8813200000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "WRKOBJ", "bbox": {"l": 148.56055, "t": 384.69131, "r": 175.50024, "b": 392.66531, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": ") CL command ", "bbox": {"l": 175.50024, "t": 384.5563, "r": 237.02424999999997, "b": 392.8813200000001, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "X", "bbox": {"l": 454.50024, "t": 384.5563, "r": 460.50323, "b": 392.8813200000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Work with Libraries (", "bbox": {"l": 70.800537, "t": 403.5166, "r": 152.58801, "b": 411.84160999999995, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "WRKLIB", "bbox": {"l": 152.58084, "t": 403.65161, "r": 179.58084, "b": 411.62561, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": ") CL command", "bbox": {"l": 179.58084, "t": 403.5166, "r": 238.51825, "b": 411.84160999999995, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "X", "bbox": {"l": 454.50113, "t": 403.5166, "r": 460.50411999999994, "b": 411.84160999999995, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Add Authorization List Entry (", "bbox": {"l": 70.801422, "t": 422.53632, "r": 187.26411, "b": 430.86133, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ADDAUTLE", "bbox": {"l": 187.32172, "t": 422.67133000000007, "r": 223.26141, "b": 430.64532, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": ") CL command ", "bbox": {"l": 223.26141, "t": 422.53632, "r": 284.72513, "b": 430.86133, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "X", "bbox": {"l": 454.5011, "t": 422.53632, "r": 460.50409, "b": 430.86133, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Change Authorization List Entry (", "bbox": {"l": 70.801392, "t": 441.55603, "r": 202.70538, "b": 449.88104, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "CHGAUTLE", "bbox": {"l": 202.8017, "t": 441.69104, "r": 238.74139000000002, "b": 449.66504000000003, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": ") CL command", "bbox": {"l": 238.74139000000002, "t": 441.55603, "r": 297.70038, "b": 449.88104, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "X", "bbox": {"l": 454.5011, "t": 441.55603, "r": 460.50409, "b": 449.88104, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Remove Authorization List Entry (", "bbox": {"l": 70.801392, "t": 460.51633, "r": 204.3821, "b": 468.84134, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "RMVAUTLE", "bbox": {"l": 204.42169, "t": 460.65134, "r": 240.36139000000003, "b": 468.62534, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": ") CL command", "bbox": {"l": 240.36139000000003, "t": 460.51633, "r": 299.32037, "b": 468.84134, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "X", "bbox": {"l": 454.5011, "t": 460.51633, "r": 460.50409, "b": 468.84134, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "Retrieve Authorization List Entry (", "bbox": {"l": 70.801392, "t": 479.53604, "r": 204.3857, "b": 487.86105, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "RTVAUTLE", "bbox": {"l": 204.42169, "t": 479.67105, "r": 240.36139000000003, "b": 487.64505, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": ") CL command", "bbox": {"l": 240.36139000000003, "t": 479.53604, "r": 299.32037, "b": 487.86105, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "X", "bbox": {"l": 454.5011, "t": 479.53604, "r": 460.50409, "b": 487.86105, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "Display Authorization List (", "bbox": {"l": 70.801392, "t": 498.55576, "r": 176.69899, "b": 506.88077, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "DSPAUTL", "bbox": {"l": 176.76109, "t": 498.69077, "r": 208.26109, "b": 506.66476, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": ") CL command ", "bbox": {"l": 208.26109, "t": 498.55576, "r": 269.7851, "b": 506.88077, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "X", "bbox": {"l": 454.5011, "t": 498.55576, "r": 460.50409, "b": 506.88077, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Display Authorization List Objects (", "bbox": {"l": 70.801392, "t": 517.51605, "r": 209.70918, "b": 525.84106, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "DSPAUTLOBJ", "bbox": {"l": 209.76138, "t": 517.6510599999999, "r": 254.70108, "b": 525.6250600000001, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": ") CL command", "bbox": {"l": 254.70108, "t": 517.51605, "r": 313.63849, "b": 525.84106, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "X", "bbox": {"l": 454.5011, "t": 517.51605, "r": 460.50409, "b": 525.84106, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "Edit Authorization List (", "bbox": {"l": 70.801392, "t": 536.53575, "r": 163.09819, "b": 544.86076, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "EDTAUTL", "bbox": {"l": 163.08109, "t": 536.67076, "r": 194.52078, "b": 544.64476, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": ") CL command", "bbox": {"l": 194.52078, "t": 536.53575, "r": 253.48878000000002, "b": 544.86076, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "X", "bbox": {"l": 454.50107, "t": 536.53575, "r": 460.50406000000004, "b": 544.86076, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "Work with Authorization Lists (", "bbox": {"l": 70.801361, "t": 555.5554500000001, "r": 191.40945, "b": 563.88046, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "WRKAUTL", "bbox": {"l": 191.40137, "t": 555.69046, "r": 222.84106000000003, "b": 563.66446, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": ") CL command", "bbox": {"l": 222.84106000000003, "t": 555.5554500000001, "r": 281.80908, "b": 563.88046, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "X", "bbox": {"l": 454.50107, "t": 555.5554500000001, "r": 460.50406000000004, "b": 563.88046, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "User action", "bbox": {"l": 70.801361, "t": 77.53577000000007, "r": 119.78657, "b": 85.86072000000001, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "*JOBCTL", "bbox": {"l": 424.93805, "t": 124.52936, "r": 433.26294000000007, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "QIBM_DB_SECADM", "bbox": {"l": 450.13806, "t": 78.62401999999997, "r": 458.46295, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "QIBM_DB_SQLADM", "bbox": {"l": 475.93835000000007, "t": 78.62401999999997, "r": 484.26324000000005, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "QIBM_DB_SYSMON", "bbox": {"l": 501.13837, "t": 78.56273999999996, "r": 509.46326, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "No Authority", "bbox": {"l": 526.39874, "t": 109.86841000000004, "r": 534.72351, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["fcel", "ched", "ched", "ched", "ched", "ched", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl", "rhed", "ecel", "fcel", "ecel", "ecel", "ecel", "nl"], "num_rows": 22, "num_cols": 6, "table_cells": [{"bbox": {"l": 70.800606, "t": 175.5177, "r": 278.58273, "b": 183.84265000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "START PLAN CACHE EVENT MONITOR procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00058000000007, "t": 175.5177, "r": 435.00357, "b": 183.84265000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00088999999997, "t": 175.5177, "r": 486.0038799999999, "b": 183.84265000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800598, "t": 194.53741000000002, "r": 269.44949, "b": 202.86237000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "END PLAN CACHE EVENT MONITOR procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00058000000007, "t": 194.53741000000002, "r": 435.00357, "b": 202.86237000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00088999999997, "t": 194.53741000000002, "r": 486.0038799999999, "b": 202.86237000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800598, "t": 213.55713000000003, "r": 293.97632, "b": 221.88207999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "END ALL PLAN CACHE EVENT MONITORS procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00058000000007, "t": 213.55713000000003, "r": 435.00357, "b": 221.88207999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00088999999997, "t": 213.55713000000003, "r": 486.0038799999999, "b": 221.88207999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800598, "t": 232.51746000000003, "r": 311.22574, "b": 240.84240999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Work with RCAC row permissions (Create, modify, or delete)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50031, "t": 232.51746000000003, "r": 460.5033, "b": 240.84240999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800598, "t": 251.53716999999995, "r": 303.58829, "b": 259.86212, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Work with RCAC column masks (Create, modify, or delete)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50031, "t": 251.53716999999995, "r": 460.5033, "b": 259.86212, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800598, "t": 270.55688, "r": 264.57959, "b": 278.88184, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Change Object Owner ( CHGOBJOWN ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50031, "t": 270.55688, "r": 460.5033, "b": 278.88184, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800598, "t": 289.51715, "r": 299.39697, "b": 297.84216, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Change Object Primary Group ( CHGOBJPGP ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50031, "t": 289.51715, "r": 460.5033, "b": 297.84216, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800598, "t": 308.53687, "r": 266.84399, "b": 316.86188, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Grant Object Authority ( GRTOBJAUT ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50027, "t": 308.53687, "r": 460.50327000000004, "b": 316.86188, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800568, "t": 327.55658, "r": 271.78857, "b": 335.88159, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Revoke Object Authority ( RVKOBJAUT ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50024, "t": 327.55658, "r": 460.50323, "b": 335.88159, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800537, "t": 346.51688, "r": 257.35434, "b": 354.84189, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Edit Object Authority ( EDTOBJAUT ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50024, "t": 346.51688, "r": 460.50323, "b": 354.84189, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800537, "t": 365.53659, "r": 271.18826, "b": 373.8616, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Display Object Authority ( DSPOBJAUT ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50024, "t": 365.53659, "r": 460.50323, "b": 373.8616, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800537, "t": 384.5563, "r": 237.02424999999997, "b": 392.8813200000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Work with Objects ( WRKOBJ ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50024, "t": 384.5563, "r": 460.50323, "b": 392.8813200000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800537, "t": 403.5166, "r": 238.51825, "b": 411.84160999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Work with Libraries ( WRKLIB ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50113, "t": 403.5166, "r": 460.50411999999994, "b": 411.84160999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801422, "t": 422.53632, "r": 284.72513, "b": 430.86133, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Add Authorization List Entry ( ADDAUTLE ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.5011, "t": 422.53632, "r": 460.50409, "b": 430.86133, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801392, "t": 441.55603, "r": 297.70038, "b": 449.88104, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Change Authorization List Entry ( CHGAUTLE ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.5011, "t": 441.55603, "r": 460.50409, "b": 449.88104, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801392, "t": 460.51633, "r": 299.32037, "b": 468.84134, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Remove Authorization List Entry ( RMVAUTLE ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.5011, "t": 460.51633, "r": 460.50409, "b": 468.84134, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801392, "t": 479.53604, "r": 299.32037, "b": 487.86105, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Retrieve Authorization List Entry ( RTVAUTLE ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.5011, "t": 479.53604, "r": 460.50409, "b": 487.86105, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801392, "t": 498.55576, "r": 269.7851, "b": 506.88077, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Display Authorization List ( DSPAUTL ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.5011, "t": 498.55576, "r": 460.50409, "b": 506.88077, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801392, "t": 517.51605, "r": 313.63849, "b": 525.84106, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Display Authorization List Objects ( DSPAUTLOBJ ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.5011, "t": 517.51605, "r": 460.50409, "b": 525.84106, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801392, "t": 536.53575, "r": 253.48878000000002, "b": 544.86076, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Edit Authorization List ( EDTAUTL ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50107, "t": 536.53575, "r": 460.50406000000004, "b": 544.86076, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801361, "t": 555.5554500000001, "r": 281.80908, "b": 563.88046, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Work with Authorization Lists ( WRKAUTL ) CL command", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 454.50107, "t": 555.5554500000001, "r": 460.50406000000004, "b": 563.88046, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.801361, "t": 77.53577000000007, "r": 119.78657, "b": 85.86072000000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "User action", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 424.93805, "t": 124.52936, "r": 433.26294000000007, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "*JOBCTL", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 450.13806, "t": 78.62401999999997, "r": 458.46295, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "QIBM_DB_SECADM", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 475.93835000000007, "t": 78.62401999999997, "r": 484.26324000000005, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "QIBM_DB_SQLADM", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 501.13837, "t": 78.56273999999996, "r": 509.46326, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "QIBM_DB_SYSMON", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 526.39874, "t": 109.86841000000004, "r": 534.72351, "b": 163.97997999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "No Authority", "column_header": true, "row_header": false, "row_section": false}]}], "headers": [{"label": "page_footer", "id": 0, "page_no": 27, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.58246612548828, "t": 754.4149780273438, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9042928218841553, "cells": [{"id": 0, "text": "12 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "12"}, {"label": "page_footer", "id": 1, "page_no": 27, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.4140625, "t": 754.5875244140625, "r": 334.42142, "b": 764.0072631835938, "coord_origin": "TOPLEFT"}, "confidence": 0.946682333946228, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 28, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "13", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Chapter 3.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Row and Column Access Control", "bbox": {"l": 136.8, "t": 254.88635, "r": 546.02917, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "This chapter describes what Row and Column Access Control (RCAC) is, its components, ", "bbox": {"l": 136.8, "t": 317.68872, "r": 536.15228, "b": 326.90170000000006, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "and then illustrates RCAC with a simple example.", "bbox": {"l": 136.80002, "t": 329.68854, "r": 354.78754, "b": 338.90152, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "The following topics are covered in this chapter:", "bbox": {"l": 136.80002, "t": 351.7081, "r": 347.41214, "b": 360.92108, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 368.83728, "r": 141.78001, "b": 377.61206, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Explanation of RCAC and the concept of access control", "bbox": {"l": 151.20018, "t": 368.6879, "r": 397.10867, "b": 377.90088, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 380.8371, "r": 141.78001, "b": 389.61188, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Special registers and built-in global variables", "bbox": {"l": 151.20018, "t": 380.6877099999999, "r": 348.45898, "b": 389.9006999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 392.83691, "r": 141.78001, "b": 401.61169, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "VERIFY_GROUP_FOR_USER function", "bbox": {"l": 151.20018, "t": 392.68753000000004, "r": 327.03601, "b": 401.90051, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 404.83673, "r": 141.78001, "b": 413.61151, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Establishing and controlling accessibility by using the RCAC rule text", "bbox": {"l": 151.20018, "t": 404.68735, "r": 454.0878000000001, "b": 413.90033, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 416.83655, "r": 141.78001, "b": 425.61133, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "SELECT, INSERT, and UPDATE behavior with RCAC", "bbox": {"l": 151.20018, "t": 416.68716, "r": 385.73236, "b": 425.90015, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 428.83636000000007, "r": 141.78001, "b": 437.61115, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Human resources example", "bbox": {"l": 151.20018, "t": 428.68698, "r": 270.36362, "b": 437.89996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "3", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.7396240234375, "t": 754.7451171875, "r": 257.24335, "b": 764.0840454101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9487502574920654, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.8259887695312, "t": 754.357666015625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9122608304023743, "cells": [{"id": 1, "text": "13", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 3.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "section_header", "bbox": {"l": 136.8, "t": 252.77349853515625, "r": 546.02917, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9356535077095032, "cells": [{"id": 3, "text": "Row and Column Access Control", "bbox": {"l": 136.8, "t": 254.88635, "r": 546.02917, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.7134552001953, "t": 316.6616516113281, "r": 536.15228, "b": 338.90152, "coord_origin": "TOPLEFT"}, "confidence": 0.9694458246231079, "cells": [{"id": 4, "text": "This chapter describes what Row and Column Access Control (RCAC) is, its components, ", "bbox": {"l": 136.8, "t": 317.68872, "r": 536.15228, "b": 326.90170000000006, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "and then illustrates RCAC with a simple example.", "bbox": {"l": 136.80002, "t": 329.68854, "r": 354.78754, "b": 338.90152, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.12974548339844, "t": 350.6626892089844, "r": 347.41214, "b": 360.92108, "coord_origin": "TOPLEFT"}, "confidence": 0.9007801413536072, "cells": [{"id": 6, "text": "The following topics are covered in this chapter:", "bbox": {"l": 136.80002, "t": 351.7081, "r": 347.41214, "b": 360.92108, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.65553283691406, "t": 367.98822021484375, "r": 397.10867, "b": 378.2244567871094, "coord_origin": "TOPLEFT"}, "confidence": 0.9492710828781128, "cells": [{"id": 7, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 368.83728, "r": 141.78001, "b": 377.61206, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Explanation of RCAC and the concept of access control", "bbox": {"l": 151.20018, "t": 368.6879, "r": 397.10867, "b": 377.90088, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.7020721435547, "t": 380.12860107421875, "r": 348.45898, "b": 390.13079833984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9349842071533203, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 380.8371, "r": 141.78001, "b": 389.61188, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Special registers and built-in global variables", "bbox": {"l": 151.20018, "t": 380.6877099999999, "r": 348.45898, "b": 389.9006999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.77047729492188, "t": 391.8711853027344, "r": 327.03601, "b": 402.288330078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9309741854667664, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 392.83691, "r": 141.78001, "b": 401.61169, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "VERIFY_GROUP_FOR_USER function", "bbox": {"l": 151.20018, "t": 392.68753000000004, "r": 327.03601, "b": 401.90051, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.8464813232422, "t": 404.0476989746094, "r": 454.0878000000001, "b": 414.33953857421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9496814012527466, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 404.83673, "r": 141.78001, "b": 413.61151, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Establishing and controlling accessibility by using the RCAC rule text", "bbox": {"l": 151.20018, "t": 404.68735, "r": 454.0878000000001, "b": 413.90033, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 135.77333068847656, "t": 415.80474853515625, "r": 385.73236, "b": 426.15533447265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9369764924049377, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 416.83655, "r": 141.78001, "b": 425.61133, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "SELECT, INSERT, and UPDATE behavior with RCAC", "bbox": {"l": 151.20018, "t": 416.68716, "r": 385.73236, "b": 425.90015, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 135.60595703125, "t": 428.0014953613281, "r": 270.36362, "b": 437.9747009277344, "coord_origin": "TOPLEFT"}, "confidence": 0.9415654540061951, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 428.83636000000007, "r": 141.78001, "b": 437.61115, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Human resources example", "bbox": {"l": 151.20018, "t": 428.68698, "r": 270.36362, "b": 437.89996, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 500.39999, "t": 93.10602569580078, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.6890690326690674, "cells": [{"id": 19, "text": "3", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "picture", "bbox": {"l": 32.1435661315918, "t": 70.39622497558594, "r": 239.34097290039062, "b": 238.1275177001953, "coord_origin": "TOPLEFT"}, "confidence": 0.6961746215820312, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 28, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.7396240234375, "t": 754.7451171875, "r": 257.24335, "b": 764.0840454101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9487502574920654, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 28, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.8259887695312, "t": 754.357666015625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9122608304023743, "cells": [{"id": 1, "text": "13", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "13"}, {"label": "text", "id": 2, "page_no": 28, "cluster": {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 3.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3."}, {"label": "section_header", "id": 3, "page_no": 28, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 136.8, "t": 252.77349853515625, "r": 546.02917, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9356535077095032, "cells": [{"id": 3, "text": "Row and Column Access Control", "bbox": {"l": 136.8, "t": 254.88635, "r": 546.02917, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control"}, {"label": "text", "id": 4, "page_no": 28, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.7134552001953, "t": 316.6616516113281, "r": 536.15228, "b": 338.90152, "coord_origin": "TOPLEFT"}, "confidence": 0.9694458246231079, "cells": [{"id": 4, "text": "This chapter describes what Row and Column Access Control (RCAC) is, its components, ", "bbox": {"l": 136.8, "t": 317.68872, "r": 536.15228, "b": 326.90170000000006, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "and then illustrates RCAC with a simple example.", "bbox": {"l": 136.80002, "t": 329.68854, "r": 354.78754, "b": 338.90152, "coord_origin": "TOPLEFT"}}]}, "text": "This chapter describes what Row and Column Access Control (RCAC) is, its components, and then illustrates RCAC with a simple example."}, {"label": "text", "id": 5, "page_no": 28, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.12974548339844, "t": 350.6626892089844, "r": 347.41214, "b": 360.92108, "coord_origin": "TOPLEFT"}, "confidence": 0.9007801413536072, "cells": [{"id": 6, "text": "The following topics are covered in this chapter:", "bbox": {"l": 136.80002, "t": 351.7081, "r": 347.41214, "b": 360.92108, "coord_origin": "TOPLEFT"}}]}, "text": "The following topics are covered in this chapter:"}, {"label": "list_item", "id": 6, "page_no": 28, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.65553283691406, "t": 367.98822021484375, "r": 397.10867, "b": 378.2244567871094, "coord_origin": "TOPLEFT"}, "confidence": 0.9492710828781128, "cells": [{"id": 7, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 368.83728, "r": 141.78001, "b": 377.61206, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Explanation of RCAC and the concept of access control", "bbox": {"l": 151.20018, "t": 368.6879, "r": 397.10867, "b": 377.90088, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Explanation of RCAC and the concept of access control"}, {"label": "list_item", "id": 7, "page_no": 28, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.7020721435547, "t": 380.12860107421875, "r": 348.45898, "b": 390.13079833984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9349842071533203, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 380.8371, "r": 141.78001, "b": 389.61188, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Special registers and built-in global variables", "bbox": {"l": 151.20018, "t": 380.6877099999999, "r": 348.45898, "b": 389.9006999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Special registers and built-in global variables"}, {"label": "list_item", "id": 8, "page_no": 28, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.77047729492188, "t": 391.8711853027344, "r": 327.03601, "b": 402.288330078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9309741854667664, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 392.83691, "r": 141.78001, "b": 401.61169, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "VERIFY_GROUP_FOR_USER function", "bbox": {"l": 151.20018, "t": 392.68753000000004, "r": 327.03601, "b": 401.90051, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH VERIFY_GROUP_FOR_USER function"}, {"label": "list_item", "id": 9, "page_no": 28, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.8464813232422, "t": 404.0476989746094, "r": 454.0878000000001, "b": 414.33953857421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9496814012527466, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 404.83673, "r": 141.78001, "b": 413.61151, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Establishing and controlling accessibility by using the RCAC rule text", "bbox": {"l": 151.20018, "t": 404.68735, "r": 454.0878000000001, "b": 413.90033, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Establishing and controlling accessibility by using the RCAC rule text"}, {"label": "list_item", "id": 10, "page_no": 28, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.77333068847656, "t": 415.80474853515625, "r": 385.73236, "b": 426.15533447265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9369764924049377, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 416.83655, "r": 141.78001, "b": 425.61133, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "SELECT, INSERT, and UPDATE behavior with RCAC", "bbox": {"l": 151.20018, "t": 416.68716, "r": 385.73236, "b": 425.90015, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH SELECT, INSERT, and UPDATE behavior with RCAC"}, {"label": "list_item", "id": 11, "page_no": 28, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.60595703125, "t": 428.0014953613281, "r": 270.36362, "b": 437.9747009277344, "coord_origin": "TOPLEFT"}, "confidence": 0.9415654540061951, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 428.83636000000007, "r": 141.78001, "b": 437.61115, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Human resources example", "bbox": {"l": 151.20018, "t": 428.68698, "r": 270.36362, "b": 437.89996, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Human resources example"}, {"label": "text", "id": 12, "page_no": 28, "cluster": {"id": 12, "label": "text", "bbox": {"l": 500.39999, "t": 93.10602569580078, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.6890690326690674, "cells": [{"id": 19, "text": "3", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, "text": "3"}, {"label": "picture", "id": 13, "page_no": 28, "cluster": {"id": 13, "label": "picture", "bbox": {"l": 32.1435661315918, "t": 70.39622497558594, "r": 239.34097290039062, "b": 238.1275177001953, "coord_origin": "TOPLEFT"}, "confidence": 0.6961746215820312, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 28, "cluster": {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 3.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3."}, {"label": "section_header", "id": 3, "page_no": 28, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 136.8, "t": 252.77349853515625, "r": 546.02917, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9356535077095032, "cells": [{"id": 3, "text": "Row and Column Access Control", "bbox": {"l": 136.8, "t": 254.88635, "r": 546.02917, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control"}, {"label": "text", "id": 4, "page_no": 28, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.7134552001953, "t": 316.6616516113281, "r": 536.15228, "b": 338.90152, "coord_origin": "TOPLEFT"}, "confidence": 0.9694458246231079, "cells": [{"id": 4, "text": "This chapter describes what Row and Column Access Control (RCAC) is, its components, ", "bbox": {"l": 136.8, "t": 317.68872, "r": 536.15228, "b": 326.90170000000006, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "and then illustrates RCAC with a simple example.", "bbox": {"l": 136.80002, "t": 329.68854, "r": 354.78754, "b": 338.90152, "coord_origin": "TOPLEFT"}}]}, "text": "This chapter describes what Row and Column Access Control (RCAC) is, its components, and then illustrates RCAC with a simple example."}, {"label": "text", "id": 5, "page_no": 28, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.12974548339844, "t": 350.6626892089844, "r": 347.41214, "b": 360.92108, "coord_origin": "TOPLEFT"}, "confidence": 0.9007801413536072, "cells": [{"id": 6, "text": "The following topics are covered in this chapter:", "bbox": {"l": 136.80002, "t": 351.7081, "r": 347.41214, "b": 360.92108, "coord_origin": "TOPLEFT"}}]}, "text": "The following topics are covered in this chapter:"}, {"label": "list_item", "id": 6, "page_no": 28, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.65553283691406, "t": 367.98822021484375, "r": 397.10867, "b": 378.2244567871094, "coord_origin": "TOPLEFT"}, "confidence": 0.9492710828781128, "cells": [{"id": 7, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 368.83728, "r": 141.78001, "b": 377.61206, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Explanation of RCAC and the concept of access control", "bbox": {"l": 151.20018, "t": 368.6879, "r": 397.10867, "b": 377.90088, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Explanation of RCAC and the concept of access control"}, {"label": "list_item", "id": 7, "page_no": 28, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.7020721435547, "t": 380.12860107421875, "r": 348.45898, "b": 390.13079833984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9349842071533203, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 380.8371, "r": 141.78001, "b": 389.61188, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Special registers and built-in global variables", "bbox": {"l": 151.20018, "t": 380.6877099999999, "r": 348.45898, "b": 389.9006999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Special registers and built-in global variables"}, {"label": "list_item", "id": 8, "page_no": 28, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.77047729492188, "t": 391.8711853027344, "r": 327.03601, "b": 402.288330078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9309741854667664, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 392.83691, "r": 141.78001, "b": 401.61169, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "VERIFY_GROUP_FOR_USER function", "bbox": {"l": 151.20018, "t": 392.68753000000004, "r": 327.03601, "b": 401.90051, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH VERIFY_GROUP_FOR_USER function"}, {"label": "list_item", "id": 9, "page_no": 28, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.8464813232422, "t": 404.0476989746094, "r": 454.0878000000001, "b": 414.33953857421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9496814012527466, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 404.83673, "r": 141.78001, "b": 413.61151, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Establishing and controlling accessibility by using the RCAC rule text", "bbox": {"l": 151.20018, "t": 404.68735, "r": 454.0878000000001, "b": 413.90033, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Establishing and controlling accessibility by using the RCAC rule text"}, {"label": "list_item", "id": 10, "page_no": 28, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.77333068847656, "t": 415.80474853515625, "r": 385.73236, "b": 426.15533447265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9369764924049377, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 416.83655, "r": 141.78001, "b": 425.61133, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "SELECT, INSERT, and UPDATE behavior with RCAC", "bbox": {"l": 151.20018, "t": 416.68716, "r": 385.73236, "b": 425.90015, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH SELECT, INSERT, and UPDATE behavior with RCAC"}, {"label": "list_item", "id": 11, "page_no": 28, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.60595703125, "t": 428.0014953613281, "r": 270.36362, "b": 437.9747009277344, "coord_origin": "TOPLEFT"}, "confidence": 0.9415654540061951, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 428.83636000000007, "r": 141.78001, "b": 437.61115, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Human resources example", "bbox": {"l": 151.20018, "t": 428.68698, "r": 270.36362, "b": 437.89996, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Human resources example"}, {"label": "text", "id": 12, "page_no": 28, "cluster": {"id": 12, "label": "text", "bbox": {"l": 500.39999, "t": 93.10602569580078, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.6890690326690674, "cells": [{"id": 19, "text": "3", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, "text": "3"}, {"label": "picture", "id": 13, "page_no": 28, "cluster": {"id": 13, "label": "picture", "bbox": {"l": 32.1435661315918, "t": 70.39622497558594, "r": 239.34097290039062, "b": 238.1275177001953, "coord_origin": "TOPLEFT"}, "confidence": 0.6961746215820312, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 28, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.7396240234375, "t": 754.7451171875, "r": 257.24335, "b": 764.0840454101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9487502574920654, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 28, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.8259887695312, "t": 754.357666015625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9122608304023743, "cells": [{"id": 1, "text": "13", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "13"}]}}, {"page_no": 29, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "14 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "3.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.198265, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Explanation of RCAC and the concept of access control", "bbox": {"l": 91.677902, "t": 74.34069999999997, "r": 518.77576, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "RCAC limits data access to those users who have a business \u201cneed to know\u201d. RCAC makes it ", "bbox": {"l": 136.8, "t": 106.6087, "r": 547.24268, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "easy to set up a rich and robust security policy that is based on roles and responsibilities. ", "bbox": {"l": 136.8, "t": 118.60852, "r": 532.82855, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "RCAC functionality is made available through the optional, no charge feature called \u201cIBM ", "bbox": {"l": 136.80099, "t": 130.60834, "r": 530.06171, "b": 139.82135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Advanced Data Security for i\u201d, also known as option 47 of IBM i 7.2.", "bbox": {"l": 136.80099, "t": 142.60815000000002, "r": 435.24844, "b": 151.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "In DB2 for i, RCAC is implemented using two different approaches that address the ", "bbox": {"l": 136.80099, "t": 164.62775, "r": 505.92376999999993, "b": 173.84076000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "shortcomings of traditional control methods and mechanisms:", "bbox": {"l": 136.80099, "t": 176.62756000000002, "r": 408.77774, "b": 185.84058000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 193.75676999999996, "r": 141.78099, "b": 202.53156, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Row permissions", "bbox": {"l": 151.20116, "t": 193.60735999999997, "r": 227.34537000000003, "b": 202.82037000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 205.75658999999996, "r": 141.78099, "b": 214.53137000000004, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Column masks", "bbox": {"l": 151.20116, "t": 205.60717999999997, "r": 217.25092, "b": 214.82019000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Another benefit of RCAC is that no database user is automatically exempt from the control. ", "bbox": {"l": 136.80099, "t": 227.62676999999996, "r": 539.90802, "b": 236.83978000000002, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Users with *ALLOBJ authority can no longer freely access all of the data in the database ", "bbox": {"l": 136.80099, "t": 239.62658999999996, "r": 529.76575, "b": 248.83960000000002, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "unless they have the appropriate permission to do so. The ability to manage row permissions ", "bbox": {"l": 136.80099, "t": 251.6264, "r": 547.20178, "b": 260.83942, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "and column masks rests with the database security administrator. The RCAC definitions, ", "bbox": {"l": 136.80099, "t": 263.62622, "r": 529.6911, "b": 272.83923000000004, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "enablement, and activation are controlled by SQL statements.", "bbox": {"l": 136.80099, "t": 275.62604, "r": 409.41107, "b": 284.83905, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Row permissions and column masks require virtually no application changes. RCAC is based ", "bbox": {"l": 136.80099, "t": 297.64563, "r": 547.2973, "b": 306.85861, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "on specific rules that are transparent to existing applications and SQL interfaces. ", "bbox": {"l": 136.80101, "t": 309.64545000000004, "r": 495.0034800000001, "b": 318.85843, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Enforcement of your security policy does not depend on how applications or tools access the ", "bbox": {"l": 136.80101, "t": 321.64526, "r": 547.2865, "b": 330.85825, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "data.", "bbox": {"l": 136.80101, "t": 333.64508, "r": 158.99387, "b": 342.8580600000001, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "RCAC also facilitates multi-tenancy, which means that several independent customers or ", "bbox": {"l": 136.80101, "t": 355.60489, "r": 529.88434, "b": 364.81787, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "business units can share a single database table without being aware of one another. The ", "bbox": {"l": 136.80096, "t": 367.60470999999995, "r": 535.67212, "b": 376.81769, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "RCAC row permission ensures each user sees only the rows they are entitled to view ", "bbox": {"l": 136.80096, "t": 379.60452, "r": 515.33978, "b": 388.81750000000005, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "because the enforcement is handled by DB2 and not the application logic.", "bbox": {"l": 136.80096, "t": 391.60434, "r": 462.38034, "b": 400.81732, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "3.1.1", "bbox": {"l": 64.800003, "t": 502.49472, "r": 93.984444, "b": 514.4827, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Row permission and column mask definitions", "bbox": {"l": 97.632515, "t": 502.49472, "r": 383.47995, "b": 514.4827, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "The following sections define row permission and column masks.", "bbox": {"l": 136.8, "t": 528.6486199999999, "r": 423.53543, "b": 537.86162, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Row permission", "bbox": {"l": 136.8, "t": 554.4839, "r": 229.26001, "b": 565.58389, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "A row permission is a database object that manifests a row access control rule for a specific ", "bbox": {"l": 136.8, "t": 569.6287199999999, "r": 544.57147, "b": 578.84172, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "table. It is essentially a search condition that describes which rows you can access. For ", "bbox": {"l": 136.8, "t": 581.62852, "r": 524.09955, "b": 590.84152, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "example, a manager can see only the rows that represent his or her employees.", "bbox": {"l": 136.8, "t": 593.62833, "r": 488.96762, "b": 602.84132, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Label-based access control (LBAC):", "bbox": {"l": 142.8, "t": 419.62871999999993, "r": 312.3212, "b": 428.8417099999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": " RCAC and LBAC are not the same thing. LBAC is a ", "bbox": {"l": 312.36005, "t": 419.62871999999993, "r": 541.24963, "b": 428.8417099999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "security model that is primarily intended for government applications. LBAC requires that ", "bbox": {"l": 142.80002, "t": 431.62854, "r": 536.27075, "b": 440.84152, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "data and users be classified with a fixed set of rules that are implemented. RCAC is a ", "bbox": {"l": 142.80002, "t": 443.62836, "r": 522.34973, "b": 452.84134, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "general-purpose security model that is primarily intended for commercial customers. You ", "bbox": {"l": 142.80002, "t": 455.62817, "r": 536.03772, "b": 464.84116, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "can use RCAC to create your own security rules, which in turn allows for more flexibility.", "bbox": {"l": 142.80002, "t": 467.62799, "r": 528.96118, "b": 476.84097, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.47321319580078, "t": 754.3320922851562, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9086033701896667, "cells": [{"id": 0, "text": "14 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.28377532958984, "t": 754.7196655273438, "r": 334.42142, "b": 763.9346313476562, "coord_origin": "TOPLEFT"}, "confidence": 0.9480336904525757, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.3137435913086, "t": 73.53276062011719, "r": 518.77576, "b": 89.27471923828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9650559425354004, "cells": [{"id": 2, "text": "3.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.198265, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Explanation of RCAC and the concept of access control", "bbox": {"l": 91.677902, "t": 74.34069999999997, "r": 518.77576, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 136.03993225097656, "t": 106.02466583251953, "r": 547.24268, "b": 152.26783752441406, "coord_origin": "TOPLEFT"}, "confidence": 0.9864612221717834, "cells": [{"id": 4, "text": "RCAC limits data access to those users who have a business \u201cneed to know\u201d. RCAC makes it ", "bbox": {"l": 136.8, "t": 106.6087, "r": 547.24268, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "easy to set up a rich and robust security policy that is based on roles and responsibilities. ", "bbox": {"l": 136.8, "t": 118.60852, "r": 532.82855, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "RCAC functionality is made available through the optional, no charge feature called \u201cIBM ", "bbox": {"l": 136.80099, "t": 130.60834, "r": 530.06171, "b": 139.82135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Advanced Data Security for i\u201d, also known as option 47 of IBM i 7.2.", "bbox": {"l": 136.80099, "t": 142.60815000000002, "r": 435.24844, "b": 151.82117000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 136.07485961914062, "t": 163.92002868652344, "r": 505.92376999999993, "b": 186.08607482910156, "coord_origin": "TOPLEFT"}, "confidence": 0.9790142178535461, "cells": [{"id": 8, "text": "In DB2 for i, RCAC is implemented using two different approaches that address the ", "bbox": {"l": 136.80099, "t": 164.62775, "r": 505.92376999999993, "b": 173.84076000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "shortcomings of traditional control methods and mechanisms:", "bbox": {"l": 136.80099, "t": 176.62756000000002, "r": 408.77774, "b": 185.84058000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 135.7504425048828, "t": 192.93507385253906, "r": 227.34537000000003, "b": 202.84515380859375, "coord_origin": "TOPLEFT"}, "confidence": 0.943821907043457, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 193.75676999999996, "r": 141.78099, "b": 202.53156, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Row permissions", "bbox": {"l": 151.20116, "t": 193.60735999999997, "r": 227.34537000000003, "b": 202.82037000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.5780487060547, "t": 205.08816528320312, "r": 217.25092, "b": 214.82019000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9294455051422119, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 205.75658999999996, "r": 141.78099, "b": 214.53137000000004, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Column masks", "bbox": {"l": 151.20116, "t": 205.60717999999997, "r": 217.25092, "b": 214.82019000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 135.8238983154297, "t": 226.61538696289062, "r": 547.20178, "b": 284.83905, "coord_origin": "TOPLEFT"}, "confidence": 0.9863597750663757, "cells": [{"id": 14, "text": "Another benefit of RCAC is that no database user is automatically exempt from the control. ", "bbox": {"l": 136.80099, "t": 227.62676999999996, "r": 539.90802, "b": 236.83978000000002, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Users with *ALLOBJ authority can no longer freely access all of the data in the database ", "bbox": {"l": 136.80099, "t": 239.62658999999996, "r": 529.76575, "b": 248.83960000000002, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "unless they have the appropriate permission to do so. The ability to manage row permissions ", "bbox": {"l": 136.80099, "t": 251.6264, "r": 547.20178, "b": 260.83942, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "and column masks rests with the database security administrator. The RCAC definitions, ", "bbox": {"l": 136.80099, "t": 263.62622, "r": 529.6911, "b": 272.83923000000004, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "enablement, and activation are controlled by SQL statements.", "bbox": {"l": 136.80099, "t": 275.62604, "r": 409.41107, "b": 284.83905, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 136.0462646484375, "t": 296.7554016113281, "r": 547.2973, "b": 342.8580600000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9848619699478149, "cells": [{"id": 19, "text": "Row permissions and column masks require virtually no application changes. RCAC is based ", "bbox": {"l": 136.80099, "t": 297.64563, "r": 547.2973, "b": 306.85861, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "on specific rules that are transparent to existing applications and SQL interfaces. ", "bbox": {"l": 136.80101, "t": 309.64545000000004, "r": 495.0034800000001, "b": 318.85843, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Enforcement of your security policy does not depend on how applications or tools access the ", "bbox": {"l": 136.80101, "t": 321.64526, "r": 547.2865, "b": 330.85825, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "data.", "bbox": {"l": 136.80101, "t": 333.64508, "r": 158.99387, "b": 342.8580600000001, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 136.23114013671875, "t": 354.7263488769531, "r": 535.67212, "b": 401.10906982421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9870187044143677, "cells": [{"id": 23, "text": "RCAC also facilitates multi-tenancy, which means that several independent customers or ", "bbox": {"l": 136.80101, "t": 355.60489, "r": 529.88434, "b": 364.81787, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "business units can share a single database table without being aware of one another. The ", "bbox": {"l": 136.80096, "t": 367.60470999999995, "r": 535.67212, "b": 376.81769, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "RCAC row permission ensures each user sees only the rows they are entitled to view ", "bbox": {"l": 136.80096, "t": 379.60452, "r": 515.33978, "b": 388.81750000000005, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "because the enforcement is handled by DB2 and not the application logic.", "bbox": {"l": 136.80096, "t": 391.60434, "r": 462.38034, "b": 400.81732, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "section_header", "bbox": {"l": 64.24093627929688, "t": 501.6220397949219, "r": 383.47995, "b": 514.7472534179688, "coord_origin": "TOPLEFT"}, "confidence": 0.9663240909576416, "cells": [{"id": 27, "text": "3.1.1", "bbox": {"l": 64.800003, "t": 502.49472, "r": 93.984444, "b": 514.4827, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Row permission and column mask definitions", "bbox": {"l": 97.632515, "t": 502.49472, "r": 383.47995, "b": 514.4827, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 135.77207946777344, "t": 528.0364990234375, "r": 423.53543, "b": 538.3961791992188, "coord_origin": "TOPLEFT"}, "confidence": 0.9584894776344299, "cells": [{"id": 29, "text": "The following sections define row permission and column masks.", "bbox": {"l": 136.8, "t": 528.6486199999999, "r": 423.53543, "b": 537.86162, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "section_header", "bbox": {"l": 136.47561645507812, "t": 553.8549194335938, "r": 229.26001, "b": 565.8992919921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9526190161705017, "cells": [{"id": 30, "text": "Row permission", "bbox": {"l": 136.8, "t": 554.4839, "r": 229.26001, "b": 565.58389, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 135.9830322265625, "t": 568.7094116210938, "r": 544.57147, "b": 602.930908203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9861118793487549, "cells": [{"id": 31, "text": "A row permission is a database object that manifests a row access control rule for a specific ", "bbox": {"l": 136.8, "t": 569.6287199999999, "r": 544.57147, "b": 578.84172, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "table. It is essentially a search condition that describes which rows you can access. For ", "bbox": {"l": 136.8, "t": 581.62852, "r": 524.09955, "b": 590.84152, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "example, a manager can see only the rows that represent his or her employees.", "bbox": {"l": 136.8, "t": 593.62833, "r": 488.96762, "b": 602.84132, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "text", "bbox": {"l": 141.94046020507812, "t": 418.39910888671875, "r": 541.24963, "b": 477.48040771484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9858124256134033, "cells": [{"id": 34, "text": "Label-based access control (LBAC):", "bbox": {"l": 142.8, "t": 419.62871999999993, "r": 312.3212, "b": 428.8417099999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": " RCAC and LBAC are not the same thing. LBAC is a ", "bbox": {"l": 312.36005, "t": 419.62871999999993, "r": 541.24963, "b": 428.8417099999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "security model that is primarily intended for government applications. LBAC requires that ", "bbox": {"l": 142.80002, "t": 431.62854, "r": 536.27075, "b": 440.84152, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "data and users be classified with a fixed set of rules that are implemented. RCAC is a ", "bbox": {"l": 142.80002, "t": 443.62836, "r": 522.34973, "b": 452.84134, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "general-purpose security model that is primarily intended for commercial customers. You ", "bbox": {"l": 142.80002, "t": 455.62817, "r": 536.03772, "b": 464.84116, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "can use RCAC to create your own security rules, which in turn allows for more flexibility.", "bbox": {"l": 142.80002, "t": 467.62799, "r": 528.96118, "b": 476.84097, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 29, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.47321319580078, "t": 754.3320922851562, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9086033701896667, "cells": [{"id": 0, "text": "14 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "14"}, {"label": "page_footer", "id": 1, "page_no": 29, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.28377532958984, "t": 754.7196655273438, "r": 334.42142, "b": 763.9346313476562, "coord_origin": "TOPLEFT"}, "confidence": 0.9480336904525757, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "section_header", "id": 2, "page_no": 29, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.3137435913086, "t": 73.53276062011719, "r": 518.77576, "b": 89.27471923828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9650559425354004, "cells": [{"id": 2, "text": "3.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.198265, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Explanation of RCAC and the concept of access control", "bbox": {"l": 91.677902, "t": 74.34069999999997, "r": 518.77576, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, "text": "3.1 Explanation of RCAC and the concept of access control"}, {"label": "text", "id": 3, "page_no": 29, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.03993225097656, "t": 106.02466583251953, "r": 547.24268, "b": 152.26783752441406, "coord_origin": "TOPLEFT"}, "confidence": 0.9864612221717834, "cells": [{"id": 4, "text": "RCAC limits data access to those users who have a business \u201cneed to know\u201d. RCAC makes it ", "bbox": {"l": 136.8, "t": 106.6087, "r": 547.24268, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "easy to set up a rich and robust security policy that is based on roles and responsibilities. ", "bbox": {"l": 136.8, "t": 118.60852, "r": 532.82855, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "RCAC functionality is made available through the optional, no charge feature called \u201cIBM ", "bbox": {"l": 136.80099, "t": 130.60834, "r": 530.06171, "b": 139.82135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Advanced Data Security for i\u201d, also known as option 47 of IBM i 7.2.", "bbox": {"l": 136.80099, "t": 142.60815000000002, "r": 435.24844, "b": 151.82117000000005, "coord_origin": "TOPLEFT"}}]}, "text": "RCAC limits data access to those users who have a business \u201cneed to know\u201d. RCAC makes it easy to set up a rich and robust security policy that is based on roles and responsibilities. RCAC functionality is made available through the optional, no charge feature called \u201cIBM Advanced Data Security for i\u201d, also known as option 47 of IBM i 7.2."}, {"label": "text", "id": 4, "page_no": 29, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.07485961914062, "t": 163.92002868652344, "r": 505.92376999999993, "b": 186.08607482910156, "coord_origin": "TOPLEFT"}, "confidence": 0.9790142178535461, "cells": [{"id": 8, "text": "In DB2 for i, RCAC is implemented using two different approaches that address the ", "bbox": {"l": 136.80099, "t": 164.62775, "r": 505.92376999999993, "b": 173.84076000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "shortcomings of traditional control methods and mechanisms:", "bbox": {"l": 136.80099, "t": 176.62756000000002, "r": 408.77774, "b": 185.84058000000005, "coord_origin": "TOPLEFT"}}]}, "text": "In DB2 for i, RCAC is implemented using two different approaches that address the shortcomings of traditional control methods and mechanisms:"}, {"label": "list_item", "id": 5, "page_no": 29, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.7504425048828, "t": 192.93507385253906, "r": 227.34537000000003, "b": 202.84515380859375, "coord_origin": "TOPLEFT"}, "confidence": 0.943821907043457, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 193.75676999999996, "r": 141.78099, "b": 202.53156, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Row permissions", "bbox": {"l": 151.20116, "t": 193.60735999999997, "r": 227.34537000000003, "b": 202.82037000000003, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Row permissions"}, {"label": "list_item", "id": 6, "page_no": 29, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.5780487060547, "t": 205.08816528320312, "r": 217.25092, "b": 214.82019000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9294455051422119, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 205.75658999999996, "r": 141.78099, "b": 214.53137000000004, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Column masks", "bbox": {"l": 151.20116, "t": 205.60717999999997, "r": 217.25092, "b": 214.82019000000003, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Column masks"}, {"label": "text", "id": 7, "page_no": 29, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.8238983154297, "t": 226.61538696289062, "r": 547.20178, "b": 284.83905, "coord_origin": "TOPLEFT"}, "confidence": 0.9863597750663757, "cells": [{"id": 14, "text": "Another benefit of RCAC is that no database user is automatically exempt from the control. ", "bbox": {"l": 136.80099, "t": 227.62676999999996, "r": 539.90802, "b": 236.83978000000002, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Users with *ALLOBJ authority can no longer freely access all of the data in the database ", "bbox": {"l": 136.80099, "t": 239.62658999999996, "r": 529.76575, "b": 248.83960000000002, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "unless they have the appropriate permission to do so. The ability to manage row permissions ", "bbox": {"l": 136.80099, "t": 251.6264, "r": 547.20178, "b": 260.83942, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "and column masks rests with the database security administrator. The RCAC definitions, ", "bbox": {"l": 136.80099, "t": 263.62622, "r": 529.6911, "b": 272.83923000000004, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "enablement, and activation are controlled by SQL statements.", "bbox": {"l": 136.80099, "t": 275.62604, "r": 409.41107, "b": 284.83905, "coord_origin": "TOPLEFT"}}]}, "text": "Another benefit of RCAC is that no database user is automatically exempt from the control. Users with *ALLOBJ authority can no longer freely access all of the data in the database unless they have the appropriate permission to do so. The ability to manage row permissions and column masks rests with the database security administrator. The RCAC definitions, enablement, and activation are controlled by SQL statements."}, {"label": "text", "id": 8, "page_no": 29, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.0462646484375, "t": 296.7554016113281, "r": 547.2973, "b": 342.8580600000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9848619699478149, "cells": [{"id": 19, "text": "Row permissions and column masks require virtually no application changes. RCAC is based ", "bbox": {"l": 136.80099, "t": 297.64563, "r": 547.2973, "b": 306.85861, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "on specific rules that are transparent to existing applications and SQL interfaces. ", "bbox": {"l": 136.80101, "t": 309.64545000000004, "r": 495.0034800000001, "b": 318.85843, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Enforcement of your security policy does not depend on how applications or tools access the ", "bbox": {"l": 136.80101, "t": 321.64526, "r": 547.2865, "b": 330.85825, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "data.", "bbox": {"l": 136.80101, "t": 333.64508, "r": 158.99387, "b": 342.8580600000001, "coord_origin": "TOPLEFT"}}]}, "text": "Row permissions and column masks require virtually no application changes. RCAC is based on specific rules that are transparent to existing applications and SQL interfaces. Enforcement of your security policy does not depend on how applications or tools access the data."}, {"label": "text", "id": 9, "page_no": 29, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.23114013671875, "t": 354.7263488769531, "r": 535.67212, "b": 401.10906982421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9870187044143677, "cells": [{"id": 23, "text": "RCAC also facilitates multi-tenancy, which means that several independent customers or ", "bbox": {"l": 136.80101, "t": 355.60489, "r": 529.88434, "b": 364.81787, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "business units can share a single database table without being aware of one another. The ", "bbox": {"l": 136.80096, "t": 367.60470999999995, "r": 535.67212, "b": 376.81769, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "RCAC row permission ensures each user sees only the rows they are entitled to view ", "bbox": {"l": 136.80096, "t": 379.60452, "r": 515.33978, "b": 388.81750000000005, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "because the enforcement is handled by DB2 and not the application logic.", "bbox": {"l": 136.80096, "t": 391.60434, "r": 462.38034, "b": 400.81732, "coord_origin": "TOPLEFT"}}]}, "text": "RCAC also facilitates multi-tenancy, which means that several independent customers or business units can share a single database table without being aware of one another. The RCAC row permission ensures each user sees only the rows they are entitled to view because the enforcement is handled by DB2 and not the application logic."}, {"label": "section_header", "id": 10, "page_no": 29, "cluster": {"id": 10, "label": "section_header", "bbox": {"l": 64.24093627929688, "t": 501.6220397949219, "r": 383.47995, "b": 514.7472534179688, "coord_origin": "TOPLEFT"}, "confidence": 0.9663240909576416, "cells": [{"id": 27, "text": "3.1.1", "bbox": {"l": 64.800003, "t": 502.49472, "r": 93.984444, "b": 514.4827, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Row permission and column mask definitions", "bbox": {"l": 97.632515, "t": 502.49472, "r": 383.47995, "b": 514.4827, "coord_origin": "TOPLEFT"}}]}, "text": "3.1.1 Row permission and column mask definitions"}, {"label": "text", "id": 11, "page_no": 29, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.77207946777344, "t": 528.0364990234375, "r": 423.53543, "b": 538.3961791992188, "coord_origin": "TOPLEFT"}, "confidence": 0.9584894776344299, "cells": [{"id": 29, "text": "The following sections define row permission and column masks.", "bbox": {"l": 136.8, "t": 528.6486199999999, "r": 423.53543, "b": 537.86162, "coord_origin": "TOPLEFT"}}]}, "text": "The following sections define row permission and column masks."}, {"label": "section_header", "id": 12, "page_no": 29, "cluster": {"id": 12, "label": "section_header", "bbox": {"l": 136.47561645507812, "t": 553.8549194335938, "r": 229.26001, "b": 565.8992919921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9526190161705017, "cells": [{"id": 30, "text": "Row permission", "bbox": {"l": 136.8, "t": 554.4839, "r": 229.26001, "b": 565.58389, "coord_origin": "TOPLEFT"}}]}, "text": "Row permission"}, {"label": "text", "id": 13, "page_no": 29, "cluster": {"id": 13, "label": "text", "bbox": {"l": 135.9830322265625, "t": 568.7094116210938, "r": 544.57147, "b": 602.930908203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9861118793487549, "cells": [{"id": 31, "text": "A row permission is a database object that manifests a row access control rule for a specific ", "bbox": {"l": 136.8, "t": 569.6287199999999, "r": 544.57147, "b": 578.84172, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "table. It is essentially a search condition that describes which rows you can access. For ", "bbox": {"l": 136.8, "t": 581.62852, "r": 524.09955, "b": 590.84152, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "example, a manager can see only the rows that represent his or her employees.", "bbox": {"l": 136.8, "t": 593.62833, "r": 488.96762, "b": 602.84132, "coord_origin": "TOPLEFT"}}]}, "text": "A row permission is a database object that manifests a row access control rule for a specific table. It is essentially a search condition that describes which rows you can access. For example, a manager can see only the rows that represent his or her employees."}, {"label": "text", "id": 14, "page_no": 29, "cluster": {"id": 14, "label": "text", "bbox": {"l": 141.94046020507812, "t": 418.39910888671875, "r": 541.24963, "b": 477.48040771484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9858124256134033, "cells": [{"id": 34, "text": "Label-based access control (LBAC):", "bbox": {"l": 142.8, "t": 419.62871999999993, "r": 312.3212, "b": 428.8417099999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": " RCAC and LBAC are not the same thing. LBAC is a ", "bbox": {"l": 312.36005, "t": 419.62871999999993, "r": 541.24963, "b": 428.8417099999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "security model that is primarily intended for government applications. LBAC requires that ", "bbox": {"l": 142.80002, "t": 431.62854, "r": 536.27075, "b": 440.84152, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "data and users be classified with a fixed set of rules that are implemented. RCAC is a ", "bbox": {"l": 142.80002, "t": 443.62836, "r": 522.34973, "b": 452.84134, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "general-purpose security model that is primarily intended for commercial customers. You ", "bbox": {"l": 142.80002, "t": 455.62817, "r": 536.03772, "b": 464.84116, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "can use RCAC to create your own security rules, which in turn allows for more flexibility.", "bbox": {"l": 142.80002, "t": 467.62799, "r": 528.96118, "b": 476.84097, "coord_origin": "TOPLEFT"}}]}, "text": "Label-based access control (LBAC): RCAC and LBAC are not the same thing. LBAC is a security model that is primarily intended for government applications. LBAC requires that data and users be classified with a fixed set of rules that are implemented. RCAC is a general-purpose security model that is primarily intended for commercial customers. You can use RCAC to create your own security rules, which in turn allows for more flexibility."}], "body": [{"label": "section_header", "id": 2, "page_no": 29, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.3137435913086, "t": 73.53276062011719, "r": 518.77576, "b": 89.27471923828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9650559425354004, "cells": [{"id": 2, "text": "3.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.198265, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Explanation of RCAC and the concept of access control", "bbox": {"l": 91.677902, "t": 74.34069999999997, "r": 518.77576, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, "text": "3.1 Explanation of RCAC and the concept of access control"}, {"label": "text", "id": 3, "page_no": 29, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.03993225097656, "t": 106.02466583251953, "r": 547.24268, "b": 152.26783752441406, "coord_origin": "TOPLEFT"}, "confidence": 0.9864612221717834, "cells": [{"id": 4, "text": "RCAC limits data access to those users who have a business \u201cneed to know\u201d. RCAC makes it ", "bbox": {"l": 136.8, "t": 106.6087, "r": 547.24268, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "easy to set up a rich and robust security policy that is based on roles and responsibilities. ", "bbox": {"l": 136.8, "t": 118.60852, "r": 532.82855, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "RCAC functionality is made available through the optional, no charge feature called \u201cIBM ", "bbox": {"l": 136.80099, "t": 130.60834, "r": 530.06171, "b": 139.82135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Advanced Data Security for i\u201d, also known as option 47 of IBM i 7.2.", "bbox": {"l": 136.80099, "t": 142.60815000000002, "r": 435.24844, "b": 151.82117000000005, "coord_origin": "TOPLEFT"}}]}, "text": "RCAC limits data access to those users who have a business \u201cneed to know\u201d. RCAC makes it easy to set up a rich and robust security policy that is based on roles and responsibilities. RCAC functionality is made available through the optional, no charge feature called \u201cIBM Advanced Data Security for i\u201d, also known as option 47 of IBM i 7.2."}, {"label": "text", "id": 4, "page_no": 29, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.07485961914062, "t": 163.92002868652344, "r": 505.92376999999993, "b": 186.08607482910156, "coord_origin": "TOPLEFT"}, "confidence": 0.9790142178535461, "cells": [{"id": 8, "text": "In DB2 for i, RCAC is implemented using two different approaches that address the ", "bbox": {"l": 136.80099, "t": 164.62775, "r": 505.92376999999993, "b": 173.84076000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "shortcomings of traditional control methods and mechanisms:", "bbox": {"l": 136.80099, "t": 176.62756000000002, "r": 408.77774, "b": 185.84058000000005, "coord_origin": "TOPLEFT"}}]}, "text": "In DB2 for i, RCAC is implemented using two different approaches that address the shortcomings of traditional control methods and mechanisms:"}, {"label": "list_item", "id": 5, "page_no": 29, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.7504425048828, "t": 192.93507385253906, "r": 227.34537000000003, "b": 202.84515380859375, "coord_origin": "TOPLEFT"}, "confidence": 0.943821907043457, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 193.75676999999996, "r": 141.78099, "b": 202.53156, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Row permissions", "bbox": {"l": 151.20116, "t": 193.60735999999997, "r": 227.34537000000003, "b": 202.82037000000003, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Row permissions"}, {"label": "list_item", "id": 6, "page_no": 29, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.5780487060547, "t": 205.08816528320312, "r": 217.25092, "b": 214.82019000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9294455051422119, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 205.75658999999996, "r": 141.78099, "b": 214.53137000000004, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Column masks", "bbox": {"l": 151.20116, "t": 205.60717999999997, "r": 217.25092, "b": 214.82019000000003, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Column masks"}, {"label": "text", "id": 7, "page_no": 29, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.8238983154297, "t": 226.61538696289062, "r": 547.20178, "b": 284.83905, "coord_origin": "TOPLEFT"}, "confidence": 0.9863597750663757, "cells": [{"id": 14, "text": "Another benefit of RCAC is that no database user is automatically exempt from the control. ", "bbox": {"l": 136.80099, "t": 227.62676999999996, "r": 539.90802, "b": 236.83978000000002, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Users with *ALLOBJ authority can no longer freely access all of the data in the database ", "bbox": {"l": 136.80099, "t": 239.62658999999996, "r": 529.76575, "b": 248.83960000000002, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "unless they have the appropriate permission to do so. The ability to manage row permissions ", "bbox": {"l": 136.80099, "t": 251.6264, "r": 547.20178, "b": 260.83942, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "and column masks rests with the database security administrator. The RCAC definitions, ", "bbox": {"l": 136.80099, "t": 263.62622, "r": 529.6911, "b": 272.83923000000004, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "enablement, and activation are controlled by SQL statements.", "bbox": {"l": 136.80099, "t": 275.62604, "r": 409.41107, "b": 284.83905, "coord_origin": "TOPLEFT"}}]}, "text": "Another benefit of RCAC is that no database user is automatically exempt from the control. Users with *ALLOBJ authority can no longer freely access all of the data in the database unless they have the appropriate permission to do so. The ability to manage row permissions and column masks rests with the database security administrator. The RCAC definitions, enablement, and activation are controlled by SQL statements."}, {"label": "text", "id": 8, "page_no": 29, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.0462646484375, "t": 296.7554016113281, "r": 547.2973, "b": 342.8580600000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9848619699478149, "cells": [{"id": 19, "text": "Row permissions and column masks require virtually no application changes. RCAC is based ", "bbox": {"l": 136.80099, "t": 297.64563, "r": 547.2973, "b": 306.85861, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "on specific rules that are transparent to existing applications and SQL interfaces. ", "bbox": {"l": 136.80101, "t": 309.64545000000004, "r": 495.0034800000001, "b": 318.85843, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Enforcement of your security policy does not depend on how applications or tools access the ", "bbox": {"l": 136.80101, "t": 321.64526, "r": 547.2865, "b": 330.85825, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "data.", "bbox": {"l": 136.80101, "t": 333.64508, "r": 158.99387, "b": 342.8580600000001, "coord_origin": "TOPLEFT"}}]}, "text": "Row permissions and column masks require virtually no application changes. RCAC is based on specific rules that are transparent to existing applications and SQL interfaces. Enforcement of your security policy does not depend on how applications or tools access the data."}, {"label": "text", "id": 9, "page_no": 29, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.23114013671875, "t": 354.7263488769531, "r": 535.67212, "b": 401.10906982421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9870187044143677, "cells": [{"id": 23, "text": "RCAC also facilitates multi-tenancy, which means that several independent customers or ", "bbox": {"l": 136.80101, "t": 355.60489, "r": 529.88434, "b": 364.81787, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "business units can share a single database table without being aware of one another. The ", "bbox": {"l": 136.80096, "t": 367.60470999999995, "r": 535.67212, "b": 376.81769, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "RCAC row permission ensures each user sees only the rows they are entitled to view ", "bbox": {"l": 136.80096, "t": 379.60452, "r": 515.33978, "b": 388.81750000000005, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "because the enforcement is handled by DB2 and not the application logic.", "bbox": {"l": 136.80096, "t": 391.60434, "r": 462.38034, "b": 400.81732, "coord_origin": "TOPLEFT"}}]}, "text": "RCAC also facilitates multi-tenancy, which means that several independent customers or business units can share a single database table without being aware of one another. The RCAC row permission ensures each user sees only the rows they are entitled to view because the enforcement is handled by DB2 and not the application logic."}, {"label": "section_header", "id": 10, "page_no": 29, "cluster": {"id": 10, "label": "section_header", "bbox": {"l": 64.24093627929688, "t": 501.6220397949219, "r": 383.47995, "b": 514.7472534179688, "coord_origin": "TOPLEFT"}, "confidence": 0.9663240909576416, "cells": [{"id": 27, "text": "3.1.1", "bbox": {"l": 64.800003, "t": 502.49472, "r": 93.984444, "b": 514.4827, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Row permission and column mask definitions", "bbox": {"l": 97.632515, "t": 502.49472, "r": 383.47995, "b": 514.4827, "coord_origin": "TOPLEFT"}}]}, "text": "3.1.1 Row permission and column mask definitions"}, {"label": "text", "id": 11, "page_no": 29, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.77207946777344, "t": 528.0364990234375, "r": 423.53543, "b": 538.3961791992188, "coord_origin": "TOPLEFT"}, "confidence": 0.9584894776344299, "cells": [{"id": 29, "text": "The following sections define row permission and column masks.", "bbox": {"l": 136.8, "t": 528.6486199999999, "r": 423.53543, "b": 537.86162, "coord_origin": "TOPLEFT"}}]}, "text": "The following sections define row permission and column masks."}, {"label": "section_header", "id": 12, "page_no": 29, "cluster": {"id": 12, "label": "section_header", "bbox": {"l": 136.47561645507812, "t": 553.8549194335938, "r": 229.26001, "b": 565.8992919921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9526190161705017, "cells": [{"id": 30, "text": "Row permission", "bbox": {"l": 136.8, "t": 554.4839, "r": 229.26001, "b": 565.58389, "coord_origin": "TOPLEFT"}}]}, "text": "Row permission"}, {"label": "text", "id": 13, "page_no": 29, "cluster": {"id": 13, "label": "text", "bbox": {"l": 135.9830322265625, "t": 568.7094116210938, "r": 544.57147, "b": 602.930908203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9861118793487549, "cells": [{"id": 31, "text": "A row permission is a database object that manifests a row access control rule for a specific ", "bbox": {"l": 136.8, "t": 569.6287199999999, "r": 544.57147, "b": 578.84172, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "table. It is essentially a search condition that describes which rows you can access. For ", "bbox": {"l": 136.8, "t": 581.62852, "r": 524.09955, "b": 590.84152, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "example, a manager can see only the rows that represent his or her employees.", "bbox": {"l": 136.8, "t": 593.62833, "r": 488.96762, "b": 602.84132, "coord_origin": "TOPLEFT"}}]}, "text": "A row permission is a database object that manifests a row access control rule for a specific table. It is essentially a search condition that describes which rows you can access. For example, a manager can see only the rows that represent his or her employees."}, {"label": "text", "id": 14, "page_no": 29, "cluster": {"id": 14, "label": "text", "bbox": {"l": 141.94046020507812, "t": 418.39910888671875, "r": 541.24963, "b": 477.48040771484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9858124256134033, "cells": [{"id": 34, "text": "Label-based access control (LBAC):", "bbox": {"l": 142.8, "t": 419.62871999999993, "r": 312.3212, "b": 428.8417099999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": " RCAC and LBAC are not the same thing. LBAC is a ", "bbox": {"l": 312.36005, "t": 419.62871999999993, "r": 541.24963, "b": 428.8417099999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "security model that is primarily intended for government applications. LBAC requires that ", "bbox": {"l": 142.80002, "t": 431.62854, "r": 536.27075, "b": 440.84152, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "data and users be classified with a fixed set of rules that are implemented. RCAC is a ", "bbox": {"l": 142.80002, "t": 443.62836, "r": 522.34973, "b": 452.84134, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "general-purpose security model that is primarily intended for commercial customers. You ", "bbox": {"l": 142.80002, "t": 455.62817, "r": 536.03772, "b": 464.84116, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "can use RCAC to create your own security rules, which in turn allows for more flexibility.", "bbox": {"l": 142.80002, "t": 467.62799, "r": 528.96118, "b": 476.84097, "coord_origin": "TOPLEFT"}}]}, "text": "Label-based access control (LBAC): RCAC and LBAC are not the same thing. LBAC is a security model that is primarily intended for government applications. LBAC requires that data and users be classified with a fixed set of rules that are implemented. RCAC is a general-purpose security model that is primarily intended for commercial customers. You can use RCAC to create your own security rules, which in turn allows for more flexibility."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 29, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.47321319580078, "t": 754.3320922851562, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9086033701896667, "cells": [{"id": 0, "text": "14 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "14"}, {"label": "page_footer", "id": 1, "page_no": 29, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.28377532958984, "t": 754.7196655273438, "r": 334.42142, "b": 763.9346313476562, "coord_origin": "TOPLEFT"}, "confidence": 0.9480336904525757, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 30, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "15", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "The SQL ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 179.58179, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "CREATE PERMISSION", "bbox": {"l": 179.57977, "t": 71.65845000000002, "r": 264.47879, "b": 80.48302999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " statement that is shown in Figure 3-1 is used to define and ", "bbox": {"l": 264.53955, "t": 71.50903000000005, "r": 528.73059, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "initially enable or disable the row access rules.", "bbox": {"l": 136.79956, "t": 83.50885000000017, "r": 341.71762, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Figure 3-1 CREATE PERMISSION SQL statement", "bbox": {"l": 136.8, "t": 414.138, "r": 341.97659, "b": 422.46301, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Column mask", "bbox": {"l": 136.8, "t": 439.94399999999996, "r": 215.37601, "b": 451.04401, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "A column mask is a database object that manifests a column value access control rule for a ", "bbox": {"l": 136.8, "t": 455.08871000000005, "r": 542.76648, "b": 464.3017, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "specific column in a specific table. It uses a CASE expression that describes what you see ", "bbox": {"l": 136.8, "t": 467.08853, "r": 537.84125, "b": 476.30151, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "when you access the column. For example, a teller can see only the last four digits of a tax ", "bbox": {"l": 136.8, "t": 479.08835, "r": 538.80927, "b": 488.30133, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "identification number.", "bbox": {"l": 136.8, "t": 491.08817, "r": 231.20888, "b": 500.30115, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CREATE PERMISSION", "bbox": {"l": 148.1337, "t": 139.67969000000005, "r": 246.7961, "b": 149.50982999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "<", "bbox": {"l": 251.86685, "t": 139.67969000000005, "r": 257.58578, "b": 149.49834999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "permission name", "bbox": {"l": 257.59152, "t": 139.67969000000005, "r": 336.99741, "b": 149.50982999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": ">", "bbox": {"l": 337.01233, "t": 139.67969000000005, "r": 342.73126, "b": 149.49834999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Names the row permission for row access control", "bbox": {"l": 346.56491, "t": 121.46252000000004, "r": 530.74371, "b": 129.33507999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "ON", "bbox": {"l": 148.1337, "t": 181.06255999999996, "r": 163.45079, "b": 190.8927, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "<", "bbox": {"l": 168.58405, "t": 181.06255999999996, "r": 174.30298, "b": 190.88122999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "table name", "bbox": {"l": 174.30872, "t": 181.06255999999996, "r": 226.86777, "b": 190.8927, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": ">", "bbox": {"l": 226.86548000000002, "t": 181.06255999999996, "r": 232.58441, "b": 190.88122999999996, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Identifies the table on which the row ", "bbox": {"l": 311.3204, "t": 166.29413, "r": 450.77191000000005, "b": 174.16669000000002, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "permission is created", "bbox": {"l": 450.86123999999995, "t": 166.29413, "r": 529.93134, "b": 174.16669000000002, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "AS ", "bbox": {"l": 148.1337, "t": 222.44550000000004, "r": 163.10973, "b": 232.27562999999998, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "<", "bbox": {"l": 165.68669, "t": 222.44550000000004, "r": 171.40562, "b": 232.26415999999995, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "correlation name", "bbox": {"l": 171.41136, "t": 222.44550000000004, "r": 251.20424000000003, "b": 232.27562999999998, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": ">", "bbox": {"l": 251.21115, "t": 222.44550000000004, "r": 256.93008, "b": 232.26415999999995, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Specifies an optional correlation name that ca", "bbox": {"l": 235.79649, "t": 204.22839, "r": 406.62051, "b": 212.10095, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "be used within search-condition", "bbox": {"l": 480.53094, "t": 204.22839, "r": 532.89496, "b": 212.10095, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "FOR ROWS", "bbox": {"l": 148.1337, "t": 263.82836999999995, "r": 199.72467, "b": 273.65851, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Indicates that a row permission is cr", "bbox": {"l": 321.56271, "t": 246.09411999999998, "r": 455.3432, "b": 253.96667000000002, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "eated", "bbox": {"l": 455.20786000000004, "t": 246.09411999999998, "r": 476.48404, "b": 253.96667000000002, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Specifies a condition that can be ", "bbox": {"l": 321.5972, "t": 266.30267000000003, "r": 444.0292400000001, "b": 274.17523000000006, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "true,", "bbox": {"l": 444.07986, "t": 266.30267000000003, "r": 459.08678999999995, "b": 274.17523000000006, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "false, or unknown", "bbox": {"l": 464.2088, "t": 266.30267000000003, "r": 530.94897, "b": 274.17523000000006, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "WHERE", "bbox": {"l": 148.1337, "t": 291.41708, "r": 183.42342, "b": 301.24722, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "<", "bbox": {"l": 188.61984, "t": 291.41708, "r": 194.33878, "b": 301.23572, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "logic to test: user and/or group and/or column value", "bbox": {"l": 194.34451, "t": 291.41708, "r": 437.04659999999996, "b": 301.24722, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": ">", "bbox": {"l": 437.09020999999996, "t": 291.41708, "r": 442.80914000000007, "b": 301.23572, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ENFORCED FOR ALL ACCESS", "bbox": {"l": 148.1337, "t": 332.79999, "r": 278.77805, "b": 342.63013, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Specifies that the row permission applies to all ref", "bbox": {"l": 271.55829, "t": 314.58276, "r": 457.4451, "b": 322.45535, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "erences of the table", "bbox": {"l": 457.19281, "t": 314.58276, "r": 531.74939, "b": 322.45535, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "ENABLE", "bbox": {"l": 148.1337, "t": 374.18289, "r": 185.17584, "b": 384.01302999999996, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Specifies that the row permission is to", "bbox": {"l": 312.28601, "t": 355.96576000000005, "r": 454.33505, "b": 363.83835, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": " be initially enabled", "bbox": {"l": 454.3461, "t": 355.96576000000005, "r": 527.05286, "b": 363.83835, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "S", "bbox": {"l": 311.73431, "t": 376.65717, "r": 315.94684, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "ifith t th", "bbox": {"l": 329.28326, "t": 376.65717, "r": 371.71786, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "i", "bbox": {"l": 415.0014, "t": 376.65717, "r": 417.09616, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "i", "bbox": {"l": 424.27356, "t": 376.65717, "r": 426.36832, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "i", "bbox": {"l": 438.13208, "t": 376.65717, "r": 440.2268399999999, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "t", "bbox": {"l": 445.88681, "t": 376.65717, "r": 448.95757999999995, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "b", "bbox": {"l": 455.8532400000001, "t": 376.65717, "r": 460.67346000000003, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "i", "bbox": {"l": 467.36746, "t": 376.65717, "r": 470.06998000000004, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "iti ll", "bbox": {"l": 472.73705999999993, "t": 376.65717, "r": 490.1676, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "di", "bbox": {"l": 496.33661, "t": 376.65717, "r": 503.2608, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "bl d", "bbox": {"l": 511.26138, "t": 376.65717, "r": 527.59674, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "DISABLE", "bbox": {"l": 148.1337, "t": 387.9772, "r": 187.6265, "b": 397.80734000000007, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": ";", "bbox": {"l": 187.58514, "t": 387.9772, "r": 190.6628, "b": 397.79583999999994, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Specifies that the row permission is to ", "bbox": {"l": 311.73431, "t": 376.65717, "r": 455.83047000000005, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "be initially disabled", "bbox": {"l": 455.8848, "t": 376.65717, "r": 527.62122, "b": 384.52975, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 344.5666809082031, "t": 754.718017578125, "r": 523.60162, "b": 764.0823974609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9526246786117554, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 536.09998, "t": 754.310302734375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.907107949256897, "cells": [{"id": 1, "text": "15", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "caption", "bbox": {"l": 135.73501586914062, "t": 70.48638153076172, "r": 528.73059, "b": 92.9990234375, "coord_origin": "TOPLEFT"}, "confidence": 0.872844934463501, "cells": [{"id": 2, "text": "The SQL ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 179.58179, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "CREATE PERMISSION", "bbox": {"l": 179.57977, "t": 71.65845000000002, "r": 264.47879, "b": 80.48302999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " statement that is shown in Figure 3-1 is used to define and ", "bbox": {"l": 264.53955, "t": 71.50903000000005, "r": 528.73059, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "initially enable or disable the row access rules.", "bbox": {"l": 136.79956, "t": 83.50885000000017, "r": 341.71762, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.3166961669922, "t": 413.26751708984375, "r": 342.55548095703125, "b": 422.8843078613281, "coord_origin": "TOPLEFT"}, "confidence": 0.9387834072113037, "cells": [{"id": 6, "text": "Figure 3-1 CREATE PERMISSION SQL statement", "bbox": {"l": 136.8, "t": 414.138, "r": 341.97659, "b": 422.46301, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 136.24984741210938, "t": 438.7343444824219, "r": 215.88082885742188, "b": 451.04401, "coord_origin": "TOPLEFT"}, "confidence": 0.9477567076683044, "cells": [{"id": 7, "text": "Column mask", "bbox": {"l": 136.8, "t": 439.94399999999996, "r": 215.37601, "b": 451.04401, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.803466796875, "t": 453.9210510253906, "r": 542.76648, "b": 500.30115, "coord_origin": "TOPLEFT"}, "confidence": 0.9843975901603699, "cells": [{"id": 8, "text": "A column mask is a database object that manifests a column value access control rule for a ", "bbox": {"l": 136.8, "t": 455.08871000000005, "r": 542.76648, "b": 464.3017, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "specific column in a specific table. It uses a CASE expression that describes what you see ", "bbox": {"l": 136.8, "t": 467.08853, "r": 537.84125, "b": 476.30151, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "when you access the column. For example, a teller can see only the last four digits of a tax ", "bbox": {"l": 136.8, "t": 479.08835, "r": 538.80927, "b": 488.30133, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "identification number.", "bbox": {"l": 136.8, "t": 491.08817, "r": 231.20888, "b": 500.30115, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "picture", "bbox": {"l": 135.9717559814453, "t": 107.41072845458984, "r": 545.4180908203125, "b": 410.60931396484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9788318872451782, "cells": [{"id": 12, "text": "CREATE PERMISSION", "bbox": {"l": 148.1337, "t": 139.67969000000005, "r": 246.7961, "b": 149.50982999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "<", "bbox": {"l": 251.86685, "t": 139.67969000000005, "r": 257.58578, "b": 149.49834999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "permission name", "bbox": {"l": 257.59152, "t": 139.67969000000005, "r": 336.99741, "b": 149.50982999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": ">", "bbox": {"l": 337.01233, "t": 139.67969000000005, "r": 342.73126, "b": 149.49834999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Names the row permission for row access control", "bbox": {"l": 346.56491, "t": 121.46252000000004, "r": 530.74371, "b": 129.33507999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "ON", "bbox": {"l": 148.1337, "t": 181.06255999999996, "r": 163.45079, "b": 190.8927, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "<", "bbox": {"l": 168.58405, "t": 181.06255999999996, "r": 174.30298, "b": 190.88122999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "table name", "bbox": {"l": 174.30872, "t": 181.06255999999996, "r": 226.86777, "b": 190.8927, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": ">", "bbox": {"l": 226.86548000000002, "t": 181.06255999999996, "r": 232.58441, "b": 190.88122999999996, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Identifies the table on which the row ", "bbox": {"l": 311.3204, "t": 166.29413, "r": 450.77191000000005, "b": 174.16669000000002, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "permission is created", "bbox": {"l": 450.86123999999995, "t": 166.29413, "r": 529.93134, "b": 174.16669000000002, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "AS ", "bbox": {"l": 148.1337, "t": 222.44550000000004, "r": 163.10973, "b": 232.27562999999998, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "<", "bbox": {"l": 165.68669, "t": 222.44550000000004, "r": 171.40562, "b": 232.26415999999995, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "correlation name", "bbox": {"l": 171.41136, "t": 222.44550000000004, "r": 251.20424000000003, "b": 232.27562999999998, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": ">", "bbox": {"l": 251.21115, "t": 222.44550000000004, "r": 256.93008, "b": 232.26415999999995, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Specifies an optional correlation name that ca", "bbox": {"l": 235.79649, "t": 204.22839, "r": 406.62051, "b": 212.10095, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "be used within search-condition", "bbox": {"l": 480.53094, "t": 204.22839, "r": 532.89496, "b": 212.10095, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "FOR ROWS", "bbox": {"l": 148.1337, "t": 263.82836999999995, "r": 199.72467, "b": 273.65851, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Indicates that a row permission is cr", "bbox": {"l": 321.56271, "t": 246.09411999999998, "r": 455.3432, "b": 253.96667000000002, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "eated", "bbox": {"l": 455.20786000000004, "t": 246.09411999999998, "r": 476.48404, "b": 253.96667000000002, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Specifies a condition that can be ", "bbox": {"l": 321.5972, "t": 266.30267000000003, "r": 444.0292400000001, "b": 274.17523000000006, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "true,", "bbox": {"l": 444.07986, "t": 266.30267000000003, "r": 459.08678999999995, "b": 274.17523000000006, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "false, or unknown", "bbox": {"l": 464.2088, "t": 266.30267000000003, "r": 530.94897, "b": 274.17523000000006, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "WHERE", "bbox": {"l": 148.1337, "t": 291.41708, "r": 183.42342, "b": 301.24722, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "<", "bbox": {"l": 188.61984, "t": 291.41708, "r": 194.33878, "b": 301.23572, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "logic to test: user and/or group and/or column value", "bbox": {"l": 194.34451, "t": 291.41708, "r": 437.04659999999996, "b": 301.24722, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": ">", "bbox": {"l": 437.09020999999996, "t": 291.41708, "r": 442.80914000000007, "b": 301.23572, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ENFORCED FOR ALL ACCESS", "bbox": {"l": 148.1337, "t": 332.79999, "r": 278.77805, "b": 342.63013, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Specifies that the row permission applies to all ref", "bbox": {"l": 271.55829, "t": 314.58276, "r": 457.4451, "b": 322.45535, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "erences of the table", "bbox": {"l": 457.19281, "t": 314.58276, "r": 531.74939, "b": 322.45535, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "ENABLE", "bbox": {"l": 148.1337, "t": 374.18289, "r": 185.17584, "b": 384.01302999999996, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Specifies that the row permission is to", "bbox": {"l": 312.28601, "t": 355.96576000000005, "r": 454.33505, "b": 363.83835, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": " be initially enabled", "bbox": {"l": 454.3461, "t": 355.96576000000005, "r": 527.05286, "b": 363.83835, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "S", "bbox": {"l": 311.73431, "t": 376.65717, "r": 315.94684, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "ifith t th", "bbox": {"l": 329.28326, "t": 376.65717, "r": 371.71786, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "i", "bbox": {"l": 415.0014, "t": 376.65717, "r": 417.09616, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "i", "bbox": {"l": 424.27356, "t": 376.65717, "r": 426.36832, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "i", "bbox": {"l": 438.13208, "t": 376.65717, "r": 440.2268399999999, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "t", "bbox": {"l": 445.88681, "t": 376.65717, "r": 448.95757999999995, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "b", "bbox": {"l": 455.8532400000001, "t": 376.65717, "r": 460.67346000000003, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "i", "bbox": {"l": 467.36746, "t": 376.65717, "r": 470.06998000000004, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "iti ll", "bbox": {"l": 472.73705999999993, "t": 376.65717, "r": 490.1676, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "di", "bbox": {"l": 496.33661, "t": 376.65717, "r": 503.2608, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "bl d", "bbox": {"l": 511.26138, "t": 376.65717, "r": 527.59674, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "DISABLE", "bbox": {"l": 148.1337, "t": 387.9772, "r": 187.6265, "b": 397.80734000000007, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": ";", "bbox": {"l": 187.58514, "t": 387.9772, "r": 190.6628, "b": 397.79583999999994, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Specifies that the row permission is to ", "bbox": {"l": 311.73431, "t": 376.65717, "r": 455.83047000000005, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "be initially disabled", "bbox": {"l": 455.8848, "t": 376.65717, "r": 527.62122, "b": 384.52975, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 30, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.5666809082031, "t": 754.718017578125, "r": 523.60162, "b": 764.0823974609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9526246786117554, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 30, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 536.09998, "t": 754.310302734375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.907107949256897, "cells": [{"id": 1, "text": "15", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "15"}, {"label": "caption", "id": 2, "page_no": 30, "cluster": {"id": 2, "label": "caption", "bbox": {"l": 135.73501586914062, "t": 70.48638153076172, "r": 528.73059, "b": 92.9990234375, "coord_origin": "TOPLEFT"}, "confidence": 0.872844934463501, "cells": [{"id": 2, "text": "The SQL ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 179.58179, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "CREATE PERMISSION", "bbox": {"l": 179.57977, "t": 71.65845000000002, "r": 264.47879, "b": 80.48302999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " statement that is shown in Figure 3-1 is used to define and ", "bbox": {"l": 264.53955, "t": 71.50903000000005, "r": 528.73059, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "initially enable or disable the row access rules.", "bbox": {"l": 136.79956, "t": 83.50885000000017, "r": 341.71762, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "The SQL CREATE PERMISSION statement that is shown in Figure 3-1 is used to define and initially enable or disable the row access rules."}, {"label": "caption", "id": 3, "page_no": 30, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.3166961669922, "t": 413.26751708984375, "r": 342.55548095703125, "b": 422.8843078613281, "coord_origin": "TOPLEFT"}, "confidence": 0.9387834072113037, "cells": [{"id": 6, "text": "Figure 3-1 CREATE PERMISSION SQL statement", "bbox": {"l": 136.8, "t": 414.138, "r": 341.97659, "b": 422.46301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-1 CREATE PERMISSION SQL statement"}, {"label": "section_header", "id": 4, "page_no": 30, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 136.24984741210938, "t": 438.7343444824219, "r": 215.88082885742188, "b": 451.04401, "coord_origin": "TOPLEFT"}, "confidence": 0.9477567076683044, "cells": [{"id": 7, "text": "Column mask", "bbox": {"l": 136.8, "t": 439.94399999999996, "r": 215.37601, "b": 451.04401, "coord_origin": "TOPLEFT"}}]}, "text": "Column mask"}, {"label": "text", "id": 5, "page_no": 30, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.803466796875, "t": 453.9210510253906, "r": 542.76648, "b": 500.30115, "coord_origin": "TOPLEFT"}, "confidence": 0.9843975901603699, "cells": [{"id": 8, "text": "A column mask is a database object that manifests a column value access control rule for a ", "bbox": {"l": 136.8, "t": 455.08871000000005, "r": 542.76648, "b": 464.3017, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "specific column in a specific table. It uses a CASE expression that describes what you see ", "bbox": {"l": 136.8, "t": 467.08853, "r": 537.84125, "b": 476.30151, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "when you access the column. For example, a teller can see only the last four digits of a tax ", "bbox": {"l": 136.8, "t": 479.08835, "r": 538.80927, "b": 488.30133, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "identification number.", "bbox": {"l": 136.8, "t": 491.08817, "r": 231.20888, "b": 500.30115, "coord_origin": "TOPLEFT"}}]}, "text": "A column mask is a database object that manifests a column value access control rule for a specific column in a specific table. It uses a CASE expression that describes what you see when you access the column. For example, a teller can see only the last four digits of a tax identification number."}, {"label": "picture", "id": 6, "page_no": 30, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 135.9717559814453, "t": 107.41072845458984, "r": 545.4180908203125, "b": 410.60931396484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9788318872451782, "cells": [{"id": 12, "text": "CREATE PERMISSION", "bbox": {"l": 148.1337, "t": 139.67969000000005, "r": 246.7961, "b": 149.50982999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "<", "bbox": {"l": 251.86685, "t": 139.67969000000005, "r": 257.58578, "b": 149.49834999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "permission name", "bbox": {"l": 257.59152, "t": 139.67969000000005, "r": 336.99741, "b": 149.50982999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": ">", "bbox": {"l": 337.01233, "t": 139.67969000000005, "r": 342.73126, "b": 149.49834999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Names the row permission for row access control", "bbox": {"l": 346.56491, "t": 121.46252000000004, "r": 530.74371, "b": 129.33507999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "ON", "bbox": {"l": 148.1337, "t": 181.06255999999996, "r": 163.45079, "b": 190.8927, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "<", "bbox": {"l": 168.58405, "t": 181.06255999999996, "r": 174.30298, "b": 190.88122999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "table name", "bbox": {"l": 174.30872, "t": 181.06255999999996, "r": 226.86777, "b": 190.8927, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": ">", "bbox": {"l": 226.86548000000002, "t": 181.06255999999996, "r": 232.58441, "b": 190.88122999999996, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Identifies the table on which the row ", "bbox": {"l": 311.3204, "t": 166.29413, "r": 450.77191000000005, "b": 174.16669000000002, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "permission is created", "bbox": {"l": 450.86123999999995, "t": 166.29413, "r": 529.93134, "b": 174.16669000000002, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "AS ", "bbox": {"l": 148.1337, "t": 222.44550000000004, "r": 163.10973, "b": 232.27562999999998, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "<", "bbox": {"l": 165.68669, "t": 222.44550000000004, "r": 171.40562, "b": 232.26415999999995, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "correlation name", "bbox": {"l": 171.41136, "t": 222.44550000000004, "r": 251.20424000000003, "b": 232.27562999999998, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": ">", "bbox": {"l": 251.21115, "t": 222.44550000000004, "r": 256.93008, "b": 232.26415999999995, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Specifies an optional correlation name that ca", "bbox": {"l": 235.79649, "t": 204.22839, "r": 406.62051, "b": 212.10095, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "be used within search-condition", "bbox": {"l": 480.53094, "t": 204.22839, "r": 532.89496, "b": 212.10095, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "FOR ROWS", "bbox": {"l": 148.1337, "t": 263.82836999999995, "r": 199.72467, "b": 273.65851, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Indicates that a row permission is cr", "bbox": {"l": 321.56271, "t": 246.09411999999998, "r": 455.3432, "b": 253.96667000000002, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "eated", "bbox": {"l": 455.20786000000004, "t": 246.09411999999998, "r": 476.48404, "b": 253.96667000000002, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Specifies a condition that can be ", "bbox": {"l": 321.5972, "t": 266.30267000000003, "r": 444.0292400000001, "b": 274.17523000000006, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "true,", "bbox": {"l": 444.07986, "t": 266.30267000000003, "r": 459.08678999999995, "b": 274.17523000000006, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "false, or unknown", "bbox": {"l": 464.2088, "t": 266.30267000000003, "r": 530.94897, "b": 274.17523000000006, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "WHERE", "bbox": {"l": 148.1337, "t": 291.41708, "r": 183.42342, "b": 301.24722, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "<", "bbox": {"l": 188.61984, "t": 291.41708, "r": 194.33878, "b": 301.23572, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "logic to test: user and/or group and/or column value", "bbox": {"l": 194.34451, "t": 291.41708, "r": 437.04659999999996, "b": 301.24722, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": ">", "bbox": {"l": 437.09020999999996, "t": 291.41708, "r": 442.80914000000007, "b": 301.23572, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ENFORCED FOR ALL ACCESS", "bbox": {"l": 148.1337, "t": 332.79999, "r": 278.77805, "b": 342.63013, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Specifies that the row permission applies to all ref", "bbox": {"l": 271.55829, "t": 314.58276, "r": 457.4451, "b": 322.45535, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "erences of the table", "bbox": {"l": 457.19281, "t": 314.58276, "r": 531.74939, "b": 322.45535, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "ENABLE", "bbox": {"l": 148.1337, "t": 374.18289, "r": 185.17584, "b": 384.01302999999996, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Specifies that the row permission is to", "bbox": {"l": 312.28601, "t": 355.96576000000005, "r": 454.33505, "b": 363.83835, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": " be initially enabled", "bbox": {"l": 454.3461, "t": 355.96576000000005, "r": 527.05286, "b": 363.83835, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "S", "bbox": {"l": 311.73431, "t": 376.65717, "r": 315.94684, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "ifith t th", "bbox": {"l": 329.28326, "t": 376.65717, "r": 371.71786, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "i", "bbox": {"l": 415.0014, "t": 376.65717, "r": 417.09616, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "i", "bbox": {"l": 424.27356, "t": 376.65717, "r": 426.36832, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "i", "bbox": {"l": 438.13208, "t": 376.65717, "r": 440.2268399999999, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "t", "bbox": {"l": 445.88681, "t": 376.65717, "r": 448.95757999999995, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "b", "bbox": {"l": 455.8532400000001, "t": 376.65717, "r": 460.67346000000003, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "i", "bbox": {"l": 467.36746, "t": 376.65717, "r": 470.06998000000004, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "iti ll", "bbox": {"l": 472.73705999999993, "t": 376.65717, "r": 490.1676, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "di", "bbox": {"l": 496.33661, "t": 376.65717, "r": 503.2608, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "bl d", "bbox": {"l": 511.26138, "t": 376.65717, "r": 527.59674, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "DISABLE", "bbox": {"l": 148.1337, "t": 387.9772, "r": 187.6265, "b": 397.80734000000007, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": ";", "bbox": {"l": 187.58514, "t": 387.9772, "r": 190.6628, "b": 397.79583999999994, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Specifies that the row permission is to ", "bbox": {"l": 311.73431, "t": 376.65717, "r": 455.83047000000005, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "be initially disabled", "bbox": {"l": 455.8848, "t": 376.65717, "r": 527.62122, "b": 384.52975, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "caption", "id": 2, "page_no": 30, "cluster": {"id": 2, "label": "caption", "bbox": {"l": 135.73501586914062, "t": 70.48638153076172, "r": 528.73059, "b": 92.9990234375, "coord_origin": "TOPLEFT"}, "confidence": 0.872844934463501, "cells": [{"id": 2, "text": "The SQL ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 179.58179, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "CREATE PERMISSION", "bbox": {"l": 179.57977, "t": 71.65845000000002, "r": 264.47879, "b": 80.48302999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " statement that is shown in Figure 3-1 is used to define and ", "bbox": {"l": 264.53955, "t": 71.50903000000005, "r": 528.73059, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "initially enable or disable the row access rules.", "bbox": {"l": 136.79956, "t": 83.50885000000017, "r": 341.71762, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "The SQL CREATE PERMISSION statement that is shown in Figure 3-1 is used to define and initially enable or disable the row access rules."}, {"label": "caption", "id": 3, "page_no": 30, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.3166961669922, "t": 413.26751708984375, "r": 342.55548095703125, "b": 422.8843078613281, "coord_origin": "TOPLEFT"}, "confidence": 0.9387834072113037, "cells": [{"id": 6, "text": "Figure 3-1 CREATE PERMISSION SQL statement", "bbox": {"l": 136.8, "t": 414.138, "r": 341.97659, "b": 422.46301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-1 CREATE PERMISSION SQL statement"}, {"label": "section_header", "id": 4, "page_no": 30, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 136.24984741210938, "t": 438.7343444824219, "r": 215.88082885742188, "b": 451.04401, "coord_origin": "TOPLEFT"}, "confidence": 0.9477567076683044, "cells": [{"id": 7, "text": "Column mask", "bbox": {"l": 136.8, "t": 439.94399999999996, "r": 215.37601, "b": 451.04401, "coord_origin": "TOPLEFT"}}]}, "text": "Column mask"}, {"label": "text", "id": 5, "page_no": 30, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.803466796875, "t": 453.9210510253906, "r": 542.76648, "b": 500.30115, "coord_origin": "TOPLEFT"}, "confidence": 0.9843975901603699, "cells": [{"id": 8, "text": "A column mask is a database object that manifests a column value access control rule for a ", "bbox": {"l": 136.8, "t": 455.08871000000005, "r": 542.76648, "b": 464.3017, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "specific column in a specific table. It uses a CASE expression that describes what you see ", "bbox": {"l": 136.8, "t": 467.08853, "r": 537.84125, "b": 476.30151, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "when you access the column. For example, a teller can see only the last four digits of a tax ", "bbox": {"l": 136.8, "t": 479.08835, "r": 538.80927, "b": 488.30133, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "identification number.", "bbox": {"l": 136.8, "t": 491.08817, "r": 231.20888, "b": 500.30115, "coord_origin": "TOPLEFT"}}]}, "text": "A column mask is a database object that manifests a column value access control rule for a specific column in a specific table. It uses a CASE expression that describes what you see when you access the column. For example, a teller can see only the last four digits of a tax identification number."}, {"label": "picture", "id": 6, "page_no": 30, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 135.9717559814453, "t": 107.41072845458984, "r": 545.4180908203125, "b": 410.60931396484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9788318872451782, "cells": [{"id": 12, "text": "CREATE PERMISSION", "bbox": {"l": 148.1337, "t": 139.67969000000005, "r": 246.7961, "b": 149.50982999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "<", "bbox": {"l": 251.86685, "t": 139.67969000000005, "r": 257.58578, "b": 149.49834999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "permission name", "bbox": {"l": 257.59152, "t": 139.67969000000005, "r": 336.99741, "b": 149.50982999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": ">", "bbox": {"l": 337.01233, "t": 139.67969000000005, "r": 342.73126, "b": 149.49834999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Names the row permission for row access control", "bbox": {"l": 346.56491, "t": 121.46252000000004, "r": 530.74371, "b": 129.33507999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "ON", "bbox": {"l": 148.1337, "t": 181.06255999999996, "r": 163.45079, "b": 190.8927, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "<", "bbox": {"l": 168.58405, "t": 181.06255999999996, "r": 174.30298, "b": 190.88122999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "table name", "bbox": {"l": 174.30872, "t": 181.06255999999996, "r": 226.86777, "b": 190.8927, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": ">", "bbox": {"l": 226.86548000000002, "t": 181.06255999999996, "r": 232.58441, "b": 190.88122999999996, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Identifies the table on which the row ", "bbox": {"l": 311.3204, "t": 166.29413, "r": 450.77191000000005, "b": 174.16669000000002, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "permission is created", "bbox": {"l": 450.86123999999995, "t": 166.29413, "r": 529.93134, "b": 174.16669000000002, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "AS ", "bbox": {"l": 148.1337, "t": 222.44550000000004, "r": 163.10973, "b": 232.27562999999998, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "<", "bbox": {"l": 165.68669, "t": 222.44550000000004, "r": 171.40562, "b": 232.26415999999995, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "correlation name", "bbox": {"l": 171.41136, "t": 222.44550000000004, "r": 251.20424000000003, "b": 232.27562999999998, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": ">", "bbox": {"l": 251.21115, "t": 222.44550000000004, "r": 256.93008, "b": 232.26415999999995, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Specifies an optional correlation name that ca", "bbox": {"l": 235.79649, "t": 204.22839, "r": 406.62051, "b": 212.10095, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "be used within search-condition", "bbox": {"l": 480.53094, "t": 204.22839, "r": 532.89496, "b": 212.10095, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "FOR ROWS", "bbox": {"l": 148.1337, "t": 263.82836999999995, "r": 199.72467, "b": 273.65851, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Indicates that a row permission is cr", "bbox": {"l": 321.56271, "t": 246.09411999999998, "r": 455.3432, "b": 253.96667000000002, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "eated", "bbox": {"l": 455.20786000000004, "t": 246.09411999999998, "r": 476.48404, "b": 253.96667000000002, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Specifies a condition that can be ", "bbox": {"l": 321.5972, "t": 266.30267000000003, "r": 444.0292400000001, "b": 274.17523000000006, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "true,", "bbox": {"l": 444.07986, "t": 266.30267000000003, "r": 459.08678999999995, "b": 274.17523000000006, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "false, or unknown", "bbox": {"l": 464.2088, "t": 266.30267000000003, "r": 530.94897, "b": 274.17523000000006, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "WHERE", "bbox": {"l": 148.1337, "t": 291.41708, "r": 183.42342, "b": 301.24722, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "<", "bbox": {"l": 188.61984, "t": 291.41708, "r": 194.33878, "b": 301.23572, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "logic to test: user and/or group and/or column value", "bbox": {"l": 194.34451, "t": 291.41708, "r": 437.04659999999996, "b": 301.24722, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": ">", "bbox": {"l": 437.09020999999996, "t": 291.41708, "r": 442.80914000000007, "b": 301.23572, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ENFORCED FOR ALL ACCESS", "bbox": {"l": 148.1337, "t": 332.79999, "r": 278.77805, "b": 342.63013, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Specifies that the row permission applies to all ref", "bbox": {"l": 271.55829, "t": 314.58276, "r": 457.4451, "b": 322.45535, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "erences of the table", "bbox": {"l": 457.19281, "t": 314.58276, "r": 531.74939, "b": 322.45535, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "ENABLE", "bbox": {"l": 148.1337, "t": 374.18289, "r": 185.17584, "b": 384.01302999999996, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Specifies that the row permission is to", "bbox": {"l": 312.28601, "t": 355.96576000000005, "r": 454.33505, "b": 363.83835, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": " be initially enabled", "bbox": {"l": 454.3461, "t": 355.96576000000005, "r": 527.05286, "b": 363.83835, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "S", "bbox": {"l": 311.73431, "t": 376.65717, "r": 315.94684, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "ifith t th", "bbox": {"l": 329.28326, "t": 376.65717, "r": 371.71786, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "i", "bbox": {"l": 415.0014, "t": 376.65717, "r": 417.09616, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "i", "bbox": {"l": 424.27356, "t": 376.65717, "r": 426.36832, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "i", "bbox": {"l": 438.13208, "t": 376.65717, "r": 440.2268399999999, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "t", "bbox": {"l": 445.88681, "t": 376.65717, "r": 448.95757999999995, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "b", "bbox": {"l": 455.8532400000001, "t": 376.65717, "r": 460.67346000000003, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "i", "bbox": {"l": 467.36746, "t": 376.65717, "r": 470.06998000000004, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "iti ll", "bbox": {"l": 472.73705999999993, "t": 376.65717, "r": 490.1676, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "di", "bbox": {"l": 496.33661, "t": 376.65717, "r": 503.2608, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "bl d", "bbox": {"l": 511.26138, "t": 376.65717, "r": 527.59674, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "DISABLE", "bbox": {"l": 148.1337, "t": 387.9772, "r": 187.6265, "b": 397.80734000000007, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": ";", "bbox": {"l": 187.58514, "t": 387.9772, "r": 190.6628, "b": 397.79583999999994, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Specifies that the row permission is to ", "bbox": {"l": 311.73431, "t": 376.65717, "r": 455.83047000000005, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "be initially disabled", "bbox": {"l": 455.8848, "t": 376.65717, "r": 527.62122, "b": 384.52975, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 30, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.5666809082031, "t": 754.718017578125, "r": 523.60162, "b": 764.0823974609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9526246786117554, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 30, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 536.09998, "t": 754.310302734375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.907107949256897, "cells": [{"id": 1, "text": "15", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "15"}]}}, {"page_no": 31, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "16 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Column masks replace the need to create and use views to implement access control. The ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 539.91992, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "SQL", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 156.83156, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " CREATE MASK", "bbox": {"l": 156.77977, "t": 83.65790000000004, "r": 216.71904000000004, "b": 92.48248000000001, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": " statement that is shown in Figure 3-2 is used to define and initially enable ", "bbox": {"l": 216.7798, "t": 83.50847999999996, "r": 546.56934, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "or disable the column value access rules.", "bbox": {"l": 136.79898, "t": 95.50829999999996, "r": 319.09384, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Figure 3-2 CREATE MASK SQL statement", "bbox": {"l": 136.8, "t": 417.67801, "r": 311.0202, "b": 426.00302, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "3.1.2", "bbox": {"l": 64.800003, "t": 446.51474, "r": 94.02639, "b": 458.50272, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Enabling and activating RCAC", "bbox": {"l": 97.679688, "t": 446.51474, "r": 286.79703, "b": 458.50272, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "You can enable, disable, or regenerate row permissions and column masks by using the SQL", "bbox": {"l": 136.8, "t": 472.66873, "r": 542.90002, "b": 481.88171, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ALTER PERMISSION", "bbox": {"l": 136.80002, "t": 484.81793, "r": 216.71905999999998, "b": 493.64252, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": " statement and the SQL", "bbox": {"l": 216.77982, "t": 484.66855, "r": 322.30304, "b": 493.88153, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": " ALTER MASK", "bbox": {"l": 322.31995, "t": 484.81793, "r": 377.27921, "b": 493.64252, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " statement, as shown in Figure 3-3 on ", "bbox": {"l": 377.28021, "t": 484.66855, "r": 547.1828, "b": 493.88153, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "page 17.", "bbox": {"l": 136.8, "t": 496.66837, "r": 175.72868, "b": 505.88135, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Enabling and disabling effectively turns on or off the logic that is contained in the row ", "bbox": {"l": 136.8, "t": 518.68793, "r": 512.64056, "b": 527.9009100000001, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "permission or column mask. Regenerating causes the row permission or column mask to be ", "bbox": {"l": 136.8, "t": 530.6877099999999, "r": 546.4837, "b": 539.9007300000001, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "regenerated. The row permission definition in the catalog is used and existing dependencies ", "bbox": {"l": 136.8, "t": 542.68753, "r": 546.5564, "b": 551.90053, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "and authorizations, if any, are retained. The row permission definition is reevaluated as ", "bbox": {"l": 136.8, "t": 554.68733, "r": 521.92834, "b": 563.9003299999999, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "though the row permission were being created. Any user-defined functions (UDFs) that are ", "bbox": {"l": 136.8, "t": 566.68713, "r": 539.95581, "b": 575.90013, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "referenced in the row permission must be resolved to the same secure UDFs as were ", "bbox": {"l": 136.8, "t": 578.68694, "r": 516.60944, "b": 587.89993, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "resolved during the original row permission or column mask creation. The regenerate option ", "bbox": {"l": 136.8, "t": 590.68674, "r": 545.22186, "b": 599.89973, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "can be used to ensure that the RCAC logic is intact and still valid before any user attempts to ", "bbox": {"l": 136.8, "t": 602.68654, "r": 547.22864, "b": 611.89954, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "access the table.", "bbox": {"l": 136.79999, "t": 614.68634, "r": 211.46214, "b": 623.89934, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "CREATE MASK ", "bbox": {"l": 148.0576, "t": 157.17620999999997, "r": 217.21564000000004, "b": 166.98859000000004, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "<", "bbox": {"l": 219.86591, "t": 157.17620999999997, "r": 225.57451999999998, "b": 166.97717, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "mask name", "bbox": {"l": 225.58026000000004, "t": 157.17620999999997, "r": 279.14044, "b": 166.98859000000004, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "> ", "bbox": {"l": 279.14389, "t": 157.17620999999997, "r": 287.45465, "b": 166.97717, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Names the column mask for column access control", "bbox": {"l": 343.7215, "t": 133.51855, "r": 532.37885, "b": 141.37694999999997, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "ON", "bbox": {"l": 148.0576, "t": 198.48461999999995, "r": 163.34479, "b": 208.29700000000003, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "<", "bbox": {"l": 168.47108, "t": 198.48461999999995, "r": 174.1797, "b": 208.28557999999998, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "table name", "bbox": {"l": 174.18544, "t": 198.48461999999995, "r": 226.64977000000002, "b": 208.29700000000003, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": ">", "bbox": {"l": 226.64746, "t": 198.48461999999995, "r": 232.35608, "b": 208.28557999999998, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Identifies the table on which the column", "bbox": {"l": 315.11551, "t": 178.26935000000003, "r": 459.8544299999999, "b": 186.12775, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "mask is created", "bbox": {"l": 486.66354, "t": 178.26935000000003, "r": 524.99982, "b": 186.12775, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "AS ", "bbox": {"l": 148.0576, "t": 239.79303000000004, "r": 163.00664, "b": 249.60541, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "<", "bbox": {"l": 165.57895, "t": 239.79303000000004, "r": 171.28757, "b": 249.59398999999996, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "correlation name", "bbox": {"l": 171.2933, "t": 239.79303000000004, "r": 250.94238000000004, "b": 249.60541, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": ">", "bbox": {"l": 250.95038, "t": 239.79303000000004, "r": 256.659, "b": 249.59398999999996, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Specifies an optional correlation name that ca", "bbox": {"l": 238.9704, "t": 219.57763999999997, "r": 409.48642, "b": 227.43604000000005, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "be used within case-expression", "bbox": {"l": 471.4333500000001, "t": 219.57763999999997, "r": 532.17932, "b": 227.43604000000005, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "FOR COLUMN ", "bbox": {"l": 148.0576, "t": 281.10144, "r": 215.81255, "b": 290.91385, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "<", "bbox": {"l": 218.48804, "t": 281.10144, "r": 224.19666, "b": 290.9023700000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "column name", "bbox": {"l": 224.20238999999998, "t": 281.10144, "r": 287.21161, "b": 290.91385, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "> ", "bbox": {"l": 287.23224, "t": 281.10144, "r": 295.543, "b": 290.9023700000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Identifies the column to which", "bbox": {"l": 352.91269, "t": 260.88604999999995, "r": 461.25995, "b": 268.74445000000003, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "the mask applies", "bbox": {"l": 461.25995, "t": 260.88604999999995, "r": 530.51782, "b": 268.74445000000003, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "RETURN", "bbox": {"l": 148.0576, "t": 322.4097300000001, "r": 187.1972, "b": 332.22214, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "<", "bbox": {"l": 194.49576, "t": 322.4097300000001, "r": 200.20438, "b": 332.21066, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "logic to test: user and/or group and/or column values", "bbox": {"l": 200.21011, "t": 322.4097300000001, "r": 446.92813000000007, "b": 332.22214, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": ">", "bbox": {"l": 446.99347, "t": 322.4097300000001, "r": 452.70208999999994, "b": 332.21066, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "<", "bbox": {"l": 194.4951, "t": 336.17923, "r": 200.20372, "b": 345.98016000000007, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "logic to mask or return column value", "bbox": {"l": 200.2094, "t": 336.17923, "r": 369.65121, "b": 345.99164, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": ">", "bbox": {"l": 369.677, "t": 336.17923, "r": 375.38562, "b": 345.98016000000007, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Specifies a CASE expression", "bbox": {"l": 366.5788, "t": 298.7520400000001, "r": 464.75512999999995, "b": 306.61044, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "t", "bbox": {"l": 450.4165300000001, "t": 298.7520400000001, "r": 473.7167400000001, "b": 306.61044, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "o be evaluated", "bbox": {"l": 473.60275000000007, "t": 298.7520400000001, "r": 528.61884, "b": 306.61044, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "ENABLE", "bbox": {"l": 148.0576, "t": 377.48764000000006, "r": 185.03297, "b": 387.30005, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "Specifies that the column mask is to be", "bbox": {"l": 316.1138, "t": 364.15692, "r": 456.32498000000004, "b": 372.01532000000003, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "initially enabled", "bbox": {"l": 484.35620000000006, "t": 364.15692, "r": 522.08081, "b": 372.01532000000003, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Si", "bbox": {"l": 315.56299, "t": 384.81112999999993, "r": 348.48367, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "f", "bbox": {"l": 335.17587, "t": 384.81112999999993, "r": 351.27777, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "it", "bbox": {"l": 337.96262, "t": 384.81112999999993, "r": 366.59012, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "h", "bbox": {"l": 353.27679, "t": 384.81112999999993, "r": 371.40073, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "t", "bbox": {"l": 362.39529, "t": 384.81112999999993, "r": 378.77292, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "h l", "bbox": {"l": 370.62317, "t": 384.81112999999993, "r": 392.91788, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "k i tb", "bbox": {"l": 427.19424, "t": 384.81112999999993, "r": 462.85345, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "ii", "bbox": {"l": 462.58322, "t": 384.81112999999993, "r": 478.50681, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "t", "bbox": {"l": 471.59326, "t": 384.81112999999993, "r": 481.57663, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "il", "bbox": {"l": 474.65756, "t": 384.81112999999993, "r": 490.16849, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "ldi", "bbox": {"l": 483.2549399999999, "t": 384.81112999999993, "r": 498.37952000000007, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "bl d", "bbox": {"l": 506.36566000000005, "t": 384.81112999999993, "r": 522.67157, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "DISABLE", "bbox": {"l": 148.0576, "t": 391.25702, "r": 187.47119, "b": 401.06943, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": ";", "bbox": {"l": 187.43794, "t": 391.25702, "r": 190.51006, "b": 401.05795000000006, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "Specifies that the column mask is to be i", "bbox": {"l": 315.56299, "t": 384.81112999999993, "r": 464.69116, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "nitially disabled", "bbox": {"l": 464.68619, "t": 384.81112999999993, "r": 522.69604, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "Note:", "bbox": {"l": 142.8, "t": 642.70872, "r": 168.33246, "b": 651.92172, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": " An exclusive lock is required on the table object to perform the alter operation. All ", "bbox": {"l": 168.36035, "t": 642.70872, "r": 531.85156, "b": 651.92172, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "open cursors must be closed.", "bbox": {"l": 142.8, "t": 654.70853, "r": 273.34174, "b": 663.92152, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.44506072998047, "t": 754.4765014648438, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9057300090789795, "cells": [{"id": 0, "text": "16 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.31855010986328, "t": 754.713134765625, "r": 334.42142, "b": 763.9388427734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9489884376525879, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 136.0411376953125, "t": 70.60277557373047, "r": 546.56934, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.975629985332489, "cells": [{"id": 2, "text": "Column masks replace the need to create and use views to implement access control. The ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 539.91992, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "SQL", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 156.83156, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " CREATE MASK", "bbox": {"l": 156.77977, "t": 83.65790000000004, "r": 216.71904000000004, "b": 92.48248000000001, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": " statement that is shown in Figure 3-2 is used to define and initially enable ", "bbox": {"l": 216.7798, "t": 83.50847999999996, "r": 546.56934, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "or disable the column value access rules.", "bbox": {"l": 136.79898, "t": 95.50829999999996, "r": 319.09384, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 135.94520568847656, "t": 416.65887451171875, "r": 311.8898620605469, "b": 426.3029479980469, "coord_origin": "TOPLEFT"}, "confidence": 0.9420653581619263, "cells": [{"id": 7, "text": "Figure 3-2 CREATE MASK SQL statement", "bbox": {"l": 136.8, "t": 417.67801, "r": 311.0202, "b": 426.00302, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 64.21709442138672, "t": 445.58026123046875, "r": 286.79703, "b": 459.303955078125, "coord_origin": "TOPLEFT"}, "confidence": 0.967232346534729, "cells": [{"id": 8, "text": "3.1.2", "bbox": {"l": 64.800003, "t": 446.51474, "r": 94.02639, "b": 458.50272, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Enabling and activating RCAC", "bbox": {"l": 97.679688, "t": 446.51474, "r": 286.79703, "b": 458.50272, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.47596740722656, "t": 471.9873046875, "r": 547.1828, "b": 506.3340759277344, "coord_origin": "TOPLEFT"}, "confidence": 0.9810652136802673, "cells": [{"id": 10, "text": "You can enable, disable, or regenerate row permissions and column masks by using the SQL", "bbox": {"l": 136.8, "t": 472.66873, "r": 542.90002, "b": 481.88171, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ALTER PERMISSION", "bbox": {"l": 136.80002, "t": 484.81793, "r": 216.71905999999998, "b": 493.64252, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": " statement and the SQL", "bbox": {"l": 216.77982, "t": 484.66855, "r": 322.30304, "b": 493.88153, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": " ALTER MASK", "bbox": {"l": 322.31995, "t": 484.81793, "r": 377.27921, "b": 493.64252, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " statement, as shown in Figure 3-3 on ", "bbox": {"l": 377.28021, "t": 484.66855, "r": 547.1828, "b": 493.88153, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "page 17.", "bbox": {"l": 136.8, "t": 496.66837, "r": 175.72868, "b": 505.88135, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 136.03172302246094, "t": 517.8567504882812, "r": 547.22864, "b": 623.89934, "coord_origin": "TOPLEFT"}, "confidence": 0.9877449870109558, "cells": [{"id": 16, "text": "Enabling and disabling effectively turns on or off the logic that is contained in the row ", "bbox": {"l": 136.8, "t": 518.68793, "r": 512.64056, "b": 527.9009100000001, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "permission or column mask. Regenerating causes the row permission or column mask to be ", "bbox": {"l": 136.8, "t": 530.6877099999999, "r": 546.4837, "b": 539.9007300000001, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "regenerated. The row permission definition in the catalog is used and existing dependencies ", "bbox": {"l": 136.8, "t": 542.68753, "r": 546.5564, "b": 551.90053, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "and authorizations, if any, are retained. The row permission definition is reevaluated as ", "bbox": {"l": 136.8, "t": 554.68733, "r": 521.92834, "b": 563.9003299999999, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "though the row permission were being created. Any user-defined functions (UDFs) that are ", "bbox": {"l": 136.8, "t": 566.68713, "r": 539.95581, "b": 575.90013, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "referenced in the row permission must be resolved to the same secure UDFs as were ", "bbox": {"l": 136.8, "t": 578.68694, "r": 516.60944, "b": 587.89993, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "resolved during the original row permission or column mask creation. The regenerate option ", "bbox": {"l": 136.8, "t": 590.68674, "r": 545.22186, "b": 599.89973, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "can be used to ensure that the RCAC logic is intact and still valid before any user attempts to ", "bbox": {"l": 136.8, "t": 602.68654, "r": 547.22864, "b": 611.89954, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "access the table.", "bbox": {"l": 136.79999, "t": 614.68634, "r": 211.46214, "b": 623.89934, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "picture", "bbox": {"l": 135.58670043945312, "t": 119.31904602050781, "r": 545.5314331054688, "b": 414.1254577636719, "coord_origin": "TOPLEFT"}, "confidence": 0.9763185381889343, "cells": [{"id": 25, "text": "CREATE MASK ", "bbox": {"l": 148.0576, "t": 157.17620999999997, "r": 217.21564000000004, "b": 166.98859000000004, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "<", "bbox": {"l": 219.86591, "t": 157.17620999999997, "r": 225.57451999999998, "b": 166.97717, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "mask name", "bbox": {"l": 225.58026000000004, "t": 157.17620999999997, "r": 279.14044, "b": 166.98859000000004, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "> ", "bbox": {"l": 279.14389, "t": 157.17620999999997, "r": 287.45465, "b": 166.97717, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Names the column mask for column access control", "bbox": {"l": 343.7215, "t": 133.51855, "r": 532.37885, "b": 141.37694999999997, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "ON", "bbox": {"l": 148.0576, "t": 198.48461999999995, "r": 163.34479, "b": 208.29700000000003, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "<", "bbox": {"l": 168.47108, "t": 198.48461999999995, "r": 174.1797, "b": 208.28557999999998, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "table name", "bbox": {"l": 174.18544, "t": 198.48461999999995, "r": 226.64977000000002, "b": 208.29700000000003, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": ">", "bbox": {"l": 226.64746, "t": 198.48461999999995, "r": 232.35608, "b": 208.28557999999998, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Identifies the table on which the column", "bbox": {"l": 315.11551, "t": 178.26935000000003, "r": 459.8544299999999, "b": 186.12775, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "mask is created", "bbox": {"l": 486.66354, "t": 178.26935000000003, "r": 524.99982, "b": 186.12775, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "AS ", "bbox": {"l": 148.0576, "t": 239.79303000000004, "r": 163.00664, "b": 249.60541, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "<", "bbox": {"l": 165.57895, "t": 239.79303000000004, "r": 171.28757, "b": 249.59398999999996, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "correlation name", "bbox": {"l": 171.2933, "t": 239.79303000000004, "r": 250.94238000000004, "b": 249.60541, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": ">", "bbox": {"l": 250.95038, "t": 239.79303000000004, "r": 256.659, "b": 249.59398999999996, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Specifies an optional correlation name that ca", "bbox": {"l": 238.9704, "t": 219.57763999999997, "r": 409.48642, "b": 227.43604000000005, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "be used within case-expression", "bbox": {"l": 471.4333500000001, "t": 219.57763999999997, "r": 532.17932, "b": 227.43604000000005, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "FOR COLUMN ", "bbox": {"l": 148.0576, "t": 281.10144, "r": 215.81255, "b": 290.91385, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "<", "bbox": {"l": 218.48804, "t": 281.10144, "r": 224.19666, "b": 290.9023700000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "column name", "bbox": {"l": 224.20238999999998, "t": 281.10144, "r": 287.21161, "b": 290.91385, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "> ", "bbox": {"l": 287.23224, "t": 281.10144, "r": 295.543, "b": 290.9023700000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Identifies the column to which", "bbox": {"l": 352.91269, "t": 260.88604999999995, "r": 461.25995, "b": 268.74445000000003, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "the mask applies", "bbox": {"l": 461.25995, "t": 260.88604999999995, "r": 530.51782, "b": 268.74445000000003, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "RETURN", "bbox": {"l": 148.0576, "t": 322.4097300000001, "r": 187.1972, "b": 332.22214, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "<", "bbox": {"l": 194.49576, "t": 322.4097300000001, "r": 200.20438, "b": 332.21066, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "logic to test: user and/or group and/or column values", "bbox": {"l": 200.21011, "t": 322.4097300000001, "r": 446.92813000000007, "b": 332.22214, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": ">", "bbox": {"l": 446.99347, "t": 322.4097300000001, "r": 452.70208999999994, "b": 332.21066, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "<", "bbox": {"l": 194.4951, "t": 336.17923, "r": 200.20372, "b": 345.98016000000007, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "logic to mask or return column value", "bbox": {"l": 200.2094, "t": 336.17923, "r": 369.65121, "b": 345.99164, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": ">", "bbox": {"l": 369.677, "t": 336.17923, "r": 375.38562, "b": 345.98016000000007, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Specifies a CASE expression", "bbox": {"l": 366.5788, "t": 298.7520400000001, "r": 464.75512999999995, "b": 306.61044, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "t", "bbox": {"l": 450.4165300000001, "t": 298.7520400000001, "r": 473.7167400000001, "b": 306.61044, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "o be evaluated", "bbox": {"l": 473.60275000000007, "t": 298.7520400000001, "r": 528.61884, "b": 306.61044, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "ENABLE", "bbox": {"l": 148.0576, "t": 377.48764000000006, "r": 185.03297, "b": 387.30005, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "Specifies that the column mask is to be", "bbox": {"l": 316.1138, "t": 364.15692, "r": 456.32498000000004, "b": 372.01532000000003, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "initially enabled", "bbox": {"l": 484.35620000000006, "t": 364.15692, "r": 522.08081, "b": 372.01532000000003, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Si", "bbox": {"l": 315.56299, "t": 384.81112999999993, "r": 348.48367, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "f", "bbox": {"l": 335.17587, "t": 384.81112999999993, "r": 351.27777, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "it", "bbox": {"l": 337.96262, "t": 384.81112999999993, "r": 366.59012, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "h", "bbox": {"l": 353.27679, "t": 384.81112999999993, "r": 371.40073, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "t", "bbox": {"l": 362.39529, "t": 384.81112999999993, "r": 378.77292, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "h l", "bbox": {"l": 370.62317, "t": 384.81112999999993, "r": 392.91788, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "k i tb", "bbox": {"l": 427.19424, "t": 384.81112999999993, "r": 462.85345, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "ii", "bbox": {"l": 462.58322, "t": 384.81112999999993, "r": 478.50681, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "t", "bbox": {"l": 471.59326, "t": 384.81112999999993, "r": 481.57663, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "il", "bbox": {"l": 474.65756, "t": 384.81112999999993, "r": 490.16849, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "ldi", "bbox": {"l": 483.2549399999999, "t": 384.81112999999993, "r": 498.37952000000007, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "bl d", "bbox": {"l": 506.36566000000005, "t": 384.81112999999993, "r": 522.67157, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "DISABLE", "bbox": {"l": 148.0576, "t": 391.25702, "r": 187.47119, "b": 401.06943, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": ";", "bbox": {"l": 187.43794, "t": 391.25702, "r": 190.51006, "b": 401.05795000000006, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "Specifies that the column mask is to be i", "bbox": {"l": 315.56299, "t": 384.81112999999993, "r": 464.69116, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "nitially disabled", "bbox": {"l": 464.68619, "t": 384.81112999999993, "r": 522.69604, "b": 392.66953, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 142.643798828125, "t": 641.9248657226562, "r": 531.85156, "b": 663.9739990234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9614552855491638, "cells": [{"id": 77, "text": "Note:", "bbox": {"l": 142.8, "t": 642.70872, "r": 168.33246, "b": 651.92172, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": " An exclusive lock is required on the table object to perform the alter operation. All ", "bbox": {"l": 168.36035, "t": 642.70872, "r": 531.85156, "b": 651.92172, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "open cursors must be closed.", "bbox": {"l": 142.8, "t": 654.70853, "r": 273.34174, "b": 663.92152, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 31, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.44506072998047, "t": 754.4765014648438, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9057300090789795, "cells": [{"id": 0, "text": "16 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "16"}, {"label": "page_footer", "id": 1, "page_no": 31, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.31855010986328, "t": 754.713134765625, "r": 334.42142, "b": 763.9388427734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9489884376525879, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 2, "page_no": 31, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.0411376953125, "t": 70.60277557373047, "r": 546.56934, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.975629985332489, "cells": [{"id": 2, "text": "Column masks replace the need to create and use views to implement access control. The ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 539.91992, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "SQL", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 156.83156, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " CREATE MASK", "bbox": {"l": 156.77977, "t": 83.65790000000004, "r": 216.71904000000004, "b": 92.48248000000001, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": " statement that is shown in Figure 3-2 is used to define and initially enable ", "bbox": {"l": 216.7798, "t": 83.50847999999996, "r": 546.56934, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "or disable the column value access rules.", "bbox": {"l": 136.79898, "t": 95.50829999999996, "r": 319.09384, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Column masks replace the need to create and use views to implement access control. The SQL CREATE MASK statement that is shown in Figure 3-2 is used to define and initially enable or disable the column value access rules."}, {"label": "caption", "id": 3, "page_no": 31, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.94520568847656, "t": 416.65887451171875, "r": 311.8898620605469, "b": 426.3029479980469, "coord_origin": "TOPLEFT"}, "confidence": 0.9420653581619263, "cells": [{"id": 7, "text": "Figure 3-2 CREATE MASK SQL statement", "bbox": {"l": 136.8, "t": 417.67801, "r": 311.0202, "b": 426.00302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-2 CREATE MASK SQL statement"}, {"label": "section_header", "id": 4, "page_no": 31, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.21709442138672, "t": 445.58026123046875, "r": 286.79703, "b": 459.303955078125, "coord_origin": "TOPLEFT"}, "confidence": 0.967232346534729, "cells": [{"id": 8, "text": "3.1.2", "bbox": {"l": 64.800003, "t": 446.51474, "r": 94.02639, "b": 458.50272, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Enabling and activating RCAC", "bbox": {"l": 97.679688, "t": 446.51474, "r": 286.79703, "b": 458.50272, "coord_origin": "TOPLEFT"}}]}, "text": "3.1.2 Enabling and activating RCAC"}, {"label": "text", "id": 5, "page_no": 31, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.47596740722656, "t": 471.9873046875, "r": 547.1828, "b": 506.3340759277344, "coord_origin": "TOPLEFT"}, "confidence": 0.9810652136802673, "cells": [{"id": 10, "text": "You can enable, disable, or regenerate row permissions and column masks by using the SQL", "bbox": {"l": 136.8, "t": 472.66873, "r": 542.90002, "b": 481.88171, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ALTER PERMISSION", "bbox": {"l": 136.80002, "t": 484.81793, "r": 216.71905999999998, "b": 493.64252, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": " statement and the SQL", "bbox": {"l": 216.77982, "t": 484.66855, "r": 322.30304, "b": 493.88153, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": " ALTER MASK", "bbox": {"l": 322.31995, "t": 484.81793, "r": 377.27921, "b": 493.64252, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " statement, as shown in Figure 3-3 on ", "bbox": {"l": 377.28021, "t": 484.66855, "r": 547.1828, "b": 493.88153, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "page 17.", "bbox": {"l": 136.8, "t": 496.66837, "r": 175.72868, "b": 505.88135, "coord_origin": "TOPLEFT"}}]}, "text": "You can enable, disable, or regenerate row permissions and column masks by using the SQL ALTER PERMISSION statement and the SQL ALTER MASK statement, as shown in Figure 3-3 on page 17."}, {"label": "text", "id": 6, "page_no": 31, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.03172302246094, "t": 517.8567504882812, "r": 547.22864, "b": 623.89934, "coord_origin": "TOPLEFT"}, "confidence": 0.9877449870109558, "cells": [{"id": 16, "text": "Enabling and disabling effectively turns on or off the logic that is contained in the row ", "bbox": {"l": 136.8, "t": 518.68793, "r": 512.64056, "b": 527.9009100000001, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "permission or column mask. Regenerating causes the row permission or column mask to be ", "bbox": {"l": 136.8, "t": 530.6877099999999, "r": 546.4837, "b": 539.9007300000001, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "regenerated. The row permission definition in the catalog is used and existing dependencies ", "bbox": {"l": 136.8, "t": 542.68753, "r": 546.5564, "b": 551.90053, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "and authorizations, if any, are retained. The row permission definition is reevaluated as ", "bbox": {"l": 136.8, "t": 554.68733, "r": 521.92834, "b": 563.9003299999999, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "though the row permission were being created. Any user-defined functions (UDFs) that are ", "bbox": {"l": 136.8, "t": 566.68713, "r": 539.95581, "b": 575.90013, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "referenced in the row permission must be resolved to the same secure UDFs as were ", "bbox": {"l": 136.8, "t": 578.68694, "r": 516.60944, "b": 587.89993, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "resolved during the original row permission or column mask creation. The regenerate option ", "bbox": {"l": 136.8, "t": 590.68674, "r": 545.22186, "b": 599.89973, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "can be used to ensure that the RCAC logic is intact and still valid before any user attempts to ", "bbox": {"l": 136.8, "t": 602.68654, "r": 547.22864, "b": 611.89954, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "access the table.", "bbox": {"l": 136.79999, "t": 614.68634, "r": 211.46214, "b": 623.89934, "coord_origin": "TOPLEFT"}}]}, "text": "Enabling and disabling effectively turns on or off the logic that is contained in the row permission or column mask. Regenerating causes the row permission or column mask to be regenerated. The row permission definition in the catalog is used and existing dependencies and authorizations, if any, are retained. The row permission definition is reevaluated as though the row permission were being created. Any user-defined functions (UDFs) that are referenced in the row permission must be resolved to the same secure UDFs as were resolved during the original row permission or column mask creation. The regenerate option can be used to ensure that the RCAC logic is intact and still valid before any user attempts to access the table."}, {"label": "picture", "id": 7, "page_no": 31, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 135.58670043945312, "t": 119.31904602050781, "r": 545.5314331054688, "b": 414.1254577636719, "coord_origin": "TOPLEFT"}, "confidence": 0.9763185381889343, "cells": [{"id": 25, "text": "CREATE MASK ", "bbox": {"l": 148.0576, "t": 157.17620999999997, "r": 217.21564000000004, "b": 166.98859000000004, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "<", "bbox": {"l": 219.86591, "t": 157.17620999999997, "r": 225.57451999999998, "b": 166.97717, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "mask name", "bbox": {"l": 225.58026000000004, "t": 157.17620999999997, "r": 279.14044, "b": 166.98859000000004, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "> ", "bbox": {"l": 279.14389, "t": 157.17620999999997, "r": 287.45465, "b": 166.97717, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Names the column mask for column access control", "bbox": {"l": 343.7215, "t": 133.51855, "r": 532.37885, "b": 141.37694999999997, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "ON", "bbox": {"l": 148.0576, "t": 198.48461999999995, "r": 163.34479, "b": 208.29700000000003, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "<", "bbox": {"l": 168.47108, "t": 198.48461999999995, "r": 174.1797, "b": 208.28557999999998, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "table name", "bbox": {"l": 174.18544, "t": 198.48461999999995, "r": 226.64977000000002, "b": 208.29700000000003, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": ">", "bbox": {"l": 226.64746, "t": 198.48461999999995, "r": 232.35608, "b": 208.28557999999998, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Identifies the table on which the column", "bbox": {"l": 315.11551, "t": 178.26935000000003, "r": 459.8544299999999, "b": 186.12775, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "mask is created", "bbox": {"l": 486.66354, "t": 178.26935000000003, "r": 524.99982, "b": 186.12775, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "AS ", "bbox": {"l": 148.0576, "t": 239.79303000000004, "r": 163.00664, "b": 249.60541, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "<", "bbox": {"l": 165.57895, "t": 239.79303000000004, "r": 171.28757, "b": 249.59398999999996, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "correlation name", "bbox": {"l": 171.2933, "t": 239.79303000000004, "r": 250.94238000000004, "b": 249.60541, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": ">", "bbox": {"l": 250.95038, "t": 239.79303000000004, "r": 256.659, "b": 249.59398999999996, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Specifies an optional correlation name that ca", "bbox": {"l": 238.9704, "t": 219.57763999999997, "r": 409.48642, "b": 227.43604000000005, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "be used within case-expression", "bbox": {"l": 471.4333500000001, "t": 219.57763999999997, "r": 532.17932, "b": 227.43604000000005, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "FOR COLUMN ", "bbox": {"l": 148.0576, "t": 281.10144, "r": 215.81255, "b": 290.91385, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "<", "bbox": {"l": 218.48804, "t": 281.10144, "r": 224.19666, "b": 290.9023700000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "column name", "bbox": {"l": 224.20238999999998, "t": 281.10144, "r": 287.21161, "b": 290.91385, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "> ", "bbox": {"l": 287.23224, "t": 281.10144, "r": 295.543, "b": 290.9023700000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Identifies the column to which", "bbox": {"l": 352.91269, "t": 260.88604999999995, "r": 461.25995, "b": 268.74445000000003, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "the mask applies", "bbox": {"l": 461.25995, "t": 260.88604999999995, "r": 530.51782, "b": 268.74445000000003, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "RETURN", "bbox": {"l": 148.0576, "t": 322.4097300000001, "r": 187.1972, "b": 332.22214, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "<", "bbox": {"l": 194.49576, "t": 322.4097300000001, "r": 200.20438, "b": 332.21066, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "logic to test: user and/or group and/or column values", "bbox": {"l": 200.21011, "t": 322.4097300000001, "r": 446.92813000000007, "b": 332.22214, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": ">", "bbox": {"l": 446.99347, "t": 322.4097300000001, "r": 452.70208999999994, "b": 332.21066, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "<", "bbox": {"l": 194.4951, "t": 336.17923, "r": 200.20372, "b": 345.98016000000007, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "logic to mask or return column value", "bbox": {"l": 200.2094, "t": 336.17923, "r": 369.65121, "b": 345.99164, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": ">", "bbox": {"l": 369.677, "t": 336.17923, "r": 375.38562, "b": 345.98016000000007, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Specifies a CASE expression", "bbox": {"l": 366.5788, "t": 298.7520400000001, "r": 464.75512999999995, "b": 306.61044, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "t", "bbox": {"l": 450.4165300000001, "t": 298.7520400000001, "r": 473.7167400000001, "b": 306.61044, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "o be evaluated", "bbox": {"l": 473.60275000000007, "t": 298.7520400000001, "r": 528.61884, "b": 306.61044, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "ENABLE", "bbox": {"l": 148.0576, "t": 377.48764000000006, "r": 185.03297, "b": 387.30005, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "Specifies that the column mask is to be", "bbox": {"l": 316.1138, "t": 364.15692, "r": 456.32498000000004, "b": 372.01532000000003, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "initially enabled", "bbox": {"l": 484.35620000000006, "t": 364.15692, "r": 522.08081, "b": 372.01532000000003, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Si", "bbox": {"l": 315.56299, "t": 384.81112999999993, "r": 348.48367, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "f", "bbox": {"l": 335.17587, "t": 384.81112999999993, "r": 351.27777, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "it", "bbox": {"l": 337.96262, "t": 384.81112999999993, "r": 366.59012, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "h", "bbox": {"l": 353.27679, "t": 384.81112999999993, "r": 371.40073, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "t", "bbox": {"l": 362.39529, "t": 384.81112999999993, "r": 378.77292, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "h l", "bbox": {"l": 370.62317, "t": 384.81112999999993, "r": 392.91788, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "k i tb", "bbox": {"l": 427.19424, "t": 384.81112999999993, "r": 462.85345, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "ii", "bbox": {"l": 462.58322, "t": 384.81112999999993, "r": 478.50681, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "t", "bbox": {"l": 471.59326, "t": 384.81112999999993, "r": 481.57663, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "il", "bbox": {"l": 474.65756, "t": 384.81112999999993, "r": 490.16849, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "ldi", "bbox": {"l": 483.2549399999999, "t": 384.81112999999993, "r": 498.37952000000007, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "bl d", "bbox": {"l": 506.36566000000005, "t": 384.81112999999993, "r": 522.67157, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "DISABLE", "bbox": {"l": 148.0576, "t": 391.25702, "r": 187.47119, "b": 401.06943, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": ";", "bbox": {"l": 187.43794, "t": 391.25702, "r": 190.51006, "b": 401.05795000000006, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "Specifies that the column mask is to be i", "bbox": {"l": 315.56299, "t": 384.81112999999993, "r": 464.69116, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "nitially disabled", "bbox": {"l": 464.68619, "t": 384.81112999999993, "r": 522.69604, "b": 392.66953, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "text", "id": 8, "page_no": 31, "cluster": {"id": 8, "label": "text", "bbox": {"l": 142.643798828125, "t": 641.9248657226562, "r": 531.85156, "b": 663.9739990234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9614552855491638, "cells": [{"id": 77, "text": "Note:", "bbox": {"l": 142.8, "t": 642.70872, "r": 168.33246, "b": 651.92172, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": " An exclusive lock is required on the table object to perform the alter operation. All ", "bbox": {"l": 168.36035, "t": 642.70872, "r": 531.85156, "b": 651.92172, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "open cursors must be closed.", "bbox": {"l": 142.8, "t": 654.70853, "r": 273.34174, "b": 663.92152, "coord_origin": "TOPLEFT"}}]}, "text": "Note: An exclusive lock is required on the table object to perform the alter operation. All open cursors must be closed."}], "body": [{"label": "text", "id": 2, "page_no": 31, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.0411376953125, "t": 70.60277557373047, "r": 546.56934, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.975629985332489, "cells": [{"id": 2, "text": "Column masks replace the need to create and use views to implement access control. The ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 539.91992, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "SQL", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 156.83156, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " CREATE MASK", "bbox": {"l": 156.77977, "t": 83.65790000000004, "r": 216.71904000000004, "b": 92.48248000000001, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": " statement that is shown in Figure 3-2 is used to define and initially enable ", "bbox": {"l": 216.7798, "t": 83.50847999999996, "r": 546.56934, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "or disable the column value access rules.", "bbox": {"l": 136.79898, "t": 95.50829999999996, "r": 319.09384, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Column masks replace the need to create and use views to implement access control. The SQL CREATE MASK statement that is shown in Figure 3-2 is used to define and initially enable or disable the column value access rules."}, {"label": "caption", "id": 3, "page_no": 31, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.94520568847656, "t": 416.65887451171875, "r": 311.8898620605469, "b": 426.3029479980469, "coord_origin": "TOPLEFT"}, "confidence": 0.9420653581619263, "cells": [{"id": 7, "text": "Figure 3-2 CREATE MASK SQL statement", "bbox": {"l": 136.8, "t": 417.67801, "r": 311.0202, "b": 426.00302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-2 CREATE MASK SQL statement"}, {"label": "section_header", "id": 4, "page_no": 31, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.21709442138672, "t": 445.58026123046875, "r": 286.79703, "b": 459.303955078125, "coord_origin": "TOPLEFT"}, "confidence": 0.967232346534729, "cells": [{"id": 8, "text": "3.1.2", "bbox": {"l": 64.800003, "t": 446.51474, "r": 94.02639, "b": 458.50272, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Enabling and activating RCAC", "bbox": {"l": 97.679688, "t": 446.51474, "r": 286.79703, "b": 458.50272, "coord_origin": "TOPLEFT"}}]}, "text": "3.1.2 Enabling and activating RCAC"}, {"label": "text", "id": 5, "page_no": 31, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.47596740722656, "t": 471.9873046875, "r": 547.1828, "b": 506.3340759277344, "coord_origin": "TOPLEFT"}, "confidence": 0.9810652136802673, "cells": [{"id": 10, "text": "You can enable, disable, or regenerate row permissions and column masks by using the SQL", "bbox": {"l": 136.8, "t": 472.66873, "r": 542.90002, "b": 481.88171, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ALTER PERMISSION", "bbox": {"l": 136.80002, "t": 484.81793, "r": 216.71905999999998, "b": 493.64252, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": " statement and the SQL", "bbox": {"l": 216.77982, "t": 484.66855, "r": 322.30304, "b": 493.88153, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": " ALTER MASK", "bbox": {"l": 322.31995, "t": 484.81793, "r": 377.27921, "b": 493.64252, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " statement, as shown in Figure 3-3 on ", "bbox": {"l": 377.28021, "t": 484.66855, "r": 547.1828, "b": 493.88153, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "page 17.", "bbox": {"l": 136.8, "t": 496.66837, "r": 175.72868, "b": 505.88135, "coord_origin": "TOPLEFT"}}]}, "text": "You can enable, disable, or regenerate row permissions and column masks by using the SQL ALTER PERMISSION statement and the SQL ALTER MASK statement, as shown in Figure 3-3 on page 17."}, {"label": "text", "id": 6, "page_no": 31, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.03172302246094, "t": 517.8567504882812, "r": 547.22864, "b": 623.89934, "coord_origin": "TOPLEFT"}, "confidence": 0.9877449870109558, "cells": [{"id": 16, "text": "Enabling and disabling effectively turns on or off the logic that is contained in the row ", "bbox": {"l": 136.8, "t": 518.68793, "r": 512.64056, "b": 527.9009100000001, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "permission or column mask. Regenerating causes the row permission or column mask to be ", "bbox": {"l": 136.8, "t": 530.6877099999999, "r": 546.4837, "b": 539.9007300000001, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "regenerated. The row permission definition in the catalog is used and existing dependencies ", "bbox": {"l": 136.8, "t": 542.68753, "r": 546.5564, "b": 551.90053, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "and authorizations, if any, are retained. The row permission definition is reevaluated as ", "bbox": {"l": 136.8, "t": 554.68733, "r": 521.92834, "b": 563.9003299999999, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "though the row permission were being created. Any user-defined functions (UDFs) that are ", "bbox": {"l": 136.8, "t": 566.68713, "r": 539.95581, "b": 575.90013, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "referenced in the row permission must be resolved to the same secure UDFs as were ", "bbox": {"l": 136.8, "t": 578.68694, "r": 516.60944, "b": 587.89993, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "resolved during the original row permission or column mask creation. The regenerate option ", "bbox": {"l": 136.8, "t": 590.68674, "r": 545.22186, "b": 599.89973, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "can be used to ensure that the RCAC logic is intact and still valid before any user attempts to ", "bbox": {"l": 136.8, "t": 602.68654, "r": 547.22864, "b": 611.89954, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "access the table.", "bbox": {"l": 136.79999, "t": 614.68634, "r": 211.46214, "b": 623.89934, "coord_origin": "TOPLEFT"}}]}, "text": "Enabling and disabling effectively turns on or off the logic that is contained in the row permission or column mask. Regenerating causes the row permission or column mask to be regenerated. The row permission definition in the catalog is used and existing dependencies and authorizations, if any, are retained. The row permission definition is reevaluated as though the row permission were being created. Any user-defined functions (UDFs) that are referenced in the row permission must be resolved to the same secure UDFs as were resolved during the original row permission or column mask creation. The regenerate option can be used to ensure that the RCAC logic is intact and still valid before any user attempts to access the table."}, {"label": "picture", "id": 7, "page_no": 31, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 135.58670043945312, "t": 119.31904602050781, "r": 545.5314331054688, "b": 414.1254577636719, "coord_origin": "TOPLEFT"}, "confidence": 0.9763185381889343, "cells": [{"id": 25, "text": "CREATE MASK ", "bbox": {"l": 148.0576, "t": 157.17620999999997, "r": 217.21564000000004, "b": 166.98859000000004, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "<", "bbox": {"l": 219.86591, "t": 157.17620999999997, "r": 225.57451999999998, "b": 166.97717, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "mask name", "bbox": {"l": 225.58026000000004, "t": 157.17620999999997, "r": 279.14044, "b": 166.98859000000004, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "> ", "bbox": {"l": 279.14389, "t": 157.17620999999997, "r": 287.45465, "b": 166.97717, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Names the column mask for column access control", "bbox": {"l": 343.7215, "t": 133.51855, "r": 532.37885, "b": 141.37694999999997, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "ON", "bbox": {"l": 148.0576, "t": 198.48461999999995, "r": 163.34479, "b": 208.29700000000003, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "<", "bbox": {"l": 168.47108, "t": 198.48461999999995, "r": 174.1797, "b": 208.28557999999998, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "table name", "bbox": {"l": 174.18544, "t": 198.48461999999995, "r": 226.64977000000002, "b": 208.29700000000003, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": ">", "bbox": {"l": 226.64746, "t": 198.48461999999995, "r": 232.35608, "b": 208.28557999999998, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Identifies the table on which the column", "bbox": {"l": 315.11551, "t": 178.26935000000003, "r": 459.8544299999999, "b": 186.12775, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "mask is created", "bbox": {"l": 486.66354, "t": 178.26935000000003, "r": 524.99982, "b": 186.12775, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "AS ", "bbox": {"l": 148.0576, "t": 239.79303000000004, "r": 163.00664, "b": 249.60541, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "<", "bbox": {"l": 165.57895, "t": 239.79303000000004, "r": 171.28757, "b": 249.59398999999996, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "correlation name", "bbox": {"l": 171.2933, "t": 239.79303000000004, "r": 250.94238000000004, "b": 249.60541, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": ">", "bbox": {"l": 250.95038, "t": 239.79303000000004, "r": 256.659, "b": 249.59398999999996, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Specifies an optional correlation name that ca", "bbox": {"l": 238.9704, "t": 219.57763999999997, "r": 409.48642, "b": 227.43604000000005, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "be used within case-expression", "bbox": {"l": 471.4333500000001, "t": 219.57763999999997, "r": 532.17932, "b": 227.43604000000005, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "FOR COLUMN ", "bbox": {"l": 148.0576, "t": 281.10144, "r": 215.81255, "b": 290.91385, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "<", "bbox": {"l": 218.48804, "t": 281.10144, "r": 224.19666, "b": 290.9023700000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "column name", "bbox": {"l": 224.20238999999998, "t": 281.10144, "r": 287.21161, "b": 290.91385, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "> ", "bbox": {"l": 287.23224, "t": 281.10144, "r": 295.543, "b": 290.9023700000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Identifies the column to which", "bbox": {"l": 352.91269, "t": 260.88604999999995, "r": 461.25995, "b": 268.74445000000003, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "the mask applies", "bbox": {"l": 461.25995, "t": 260.88604999999995, "r": 530.51782, "b": 268.74445000000003, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "RETURN", "bbox": {"l": 148.0576, "t": 322.4097300000001, "r": 187.1972, "b": 332.22214, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "<", "bbox": {"l": 194.49576, "t": 322.4097300000001, "r": 200.20438, "b": 332.21066, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "logic to test: user and/or group and/or column values", "bbox": {"l": 200.21011, "t": 322.4097300000001, "r": 446.92813000000007, "b": 332.22214, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": ">", "bbox": {"l": 446.99347, "t": 322.4097300000001, "r": 452.70208999999994, "b": 332.21066, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "<", "bbox": {"l": 194.4951, "t": 336.17923, "r": 200.20372, "b": 345.98016000000007, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "logic to mask or return column value", "bbox": {"l": 200.2094, "t": 336.17923, "r": 369.65121, "b": 345.99164, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": ">", "bbox": {"l": 369.677, "t": 336.17923, "r": 375.38562, "b": 345.98016000000007, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Specifies a CASE expression", "bbox": {"l": 366.5788, "t": 298.7520400000001, "r": 464.75512999999995, "b": 306.61044, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "t", "bbox": {"l": 450.4165300000001, "t": 298.7520400000001, "r": 473.7167400000001, "b": 306.61044, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "o be evaluated", "bbox": {"l": 473.60275000000007, "t": 298.7520400000001, "r": 528.61884, "b": 306.61044, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "ENABLE", "bbox": {"l": 148.0576, "t": 377.48764000000006, "r": 185.03297, "b": 387.30005, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "Specifies that the column mask is to be", "bbox": {"l": 316.1138, "t": 364.15692, "r": 456.32498000000004, "b": 372.01532000000003, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "initially enabled", "bbox": {"l": 484.35620000000006, "t": 364.15692, "r": 522.08081, "b": 372.01532000000003, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Si", "bbox": {"l": 315.56299, "t": 384.81112999999993, "r": 348.48367, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "f", "bbox": {"l": 335.17587, "t": 384.81112999999993, "r": 351.27777, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "it", "bbox": {"l": 337.96262, "t": 384.81112999999993, "r": 366.59012, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "h", "bbox": {"l": 353.27679, "t": 384.81112999999993, "r": 371.40073, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "t", "bbox": {"l": 362.39529, "t": 384.81112999999993, "r": 378.77292, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "h l", "bbox": {"l": 370.62317, "t": 384.81112999999993, "r": 392.91788, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "k i tb", "bbox": {"l": 427.19424, "t": 384.81112999999993, "r": 462.85345, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "ii", "bbox": {"l": 462.58322, "t": 384.81112999999993, "r": 478.50681, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "t", "bbox": {"l": 471.59326, "t": 384.81112999999993, "r": 481.57663, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "il", "bbox": {"l": 474.65756, "t": 384.81112999999993, "r": 490.16849, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "ldi", "bbox": {"l": 483.2549399999999, "t": 384.81112999999993, "r": 498.37952000000007, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "bl d", "bbox": {"l": 506.36566000000005, "t": 384.81112999999993, "r": 522.67157, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "DISABLE", "bbox": {"l": 148.0576, "t": 391.25702, "r": 187.47119, "b": 401.06943, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": ";", "bbox": {"l": 187.43794, "t": 391.25702, "r": 190.51006, "b": 401.05795000000006, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "Specifies that the column mask is to be i", "bbox": {"l": 315.56299, "t": 384.81112999999993, "r": 464.69116, "b": 392.66953, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "nitially disabled", "bbox": {"l": 464.68619, "t": 384.81112999999993, "r": 522.69604, "b": 392.66953, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "text", "id": 8, "page_no": 31, "cluster": {"id": 8, "label": "text", "bbox": {"l": 142.643798828125, "t": 641.9248657226562, "r": 531.85156, "b": 663.9739990234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9614552855491638, "cells": [{"id": 77, "text": "Note:", "bbox": {"l": 142.8, "t": 642.70872, "r": 168.33246, "b": 651.92172, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": " An exclusive lock is required on the table object to perform the alter operation. All ", "bbox": {"l": 168.36035, "t": 642.70872, "r": 531.85156, "b": 651.92172, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "open cursors must be closed.", "bbox": {"l": 142.8, "t": 654.70853, "r": 273.34174, "b": 663.92152, "coord_origin": "TOPLEFT"}}]}, "text": "Note: An exclusive lock is required on the table object to perform the alter operation. All open cursors must be closed."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 31, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.44506072998047, "t": 754.4765014648438, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9057300090789795, "cells": [{"id": 0, "text": "16 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "16"}, {"label": "page_footer", "id": 1, "page_no": 31, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.31855010986328, "t": 754.713134765625, "r": 334.42142, "b": 763.9388427734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9489884376525879, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 32, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "17", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Figure 3-3 ALTER PERMISSION and ALTER MASK SQL statements", "bbox": {"l": 136.8, "t": 350.77798, "r": 414.92795, "b": 359.103, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "You can activate and deactivate RCAC for new or existing tables by using the SQL", "bbox": {"l": 136.8, "t": 376.78873, "r": 499.03439, "b": 386.00171, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " ALTER ", "bbox": {"l": 498.9595299999999, "t": 376.93811, "r": 533.87927, "b": 385.7627, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "TABLE", "bbox": {"l": 136.79999, "t": 388.93793, "r": 161.75975, "b": 397.76251, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": " statement (Figure 3-4). The ", "bbox": {"l": 161.75975, "t": 388.78853999999995, "r": 288.95093, "b": 398.00152999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ACTIVATE", "bbox": {"l": 288.9599, "t": 388.93793, "r": 328.91943, "b": 397.76251, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": " or ", "bbox": {"l": 328.98016, "t": 388.78853999999995, "r": 343.37933, "b": 398.00152999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "DEACTIVATE", "bbox": {"l": 343.38034, "t": 388.93793, "r": 393.35962, "b": 397.76251, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": " clause must be the option that is ", "bbox": {"l": 393.36063, "t": 388.78853999999995, "r": 542.38611, "b": 398.00152999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "specified in the statement. No other alterations are permitted at the same time. The activating ", "bbox": {"l": 136.80096, "t": 400.78836000000007, "r": 547.2995, "b": 410.00134, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "and deactivating effectively turns on or off all RCAC processing for the table. Only enabled ", "bbox": {"l": 136.80096, "t": 412.78818, "r": 537.36926, "b": 422.00116, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "row permissions and column masks take effect when activating RCAC.", "bbox": {"l": 136.80096, "t": 424.7879899999999, "r": 448.40952000000004, "b": 434.00098, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Figure 3-4 ALTER TABLE SQL statement", "bbox": {"l": 136.8, "t": 725.477898, "r": 305.51761, "b": 733.802898, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Note:", "bbox": {"l": 142.8, "t": 452.74872, "r": 168.33246, "b": 461.9617, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": " An exclusive lock is required on the table object to perform the alter operation. All ", "bbox": {"l": 168.36035, "t": 452.74872, "r": 531.85156, "b": 461.9617, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "open cursors must be closed.", "bbox": {"l": 142.8, "t": 464.74854, "r": 273.34174, "b": 473.96152, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ALTER PERMISSION", "bbox": {"l": 149.2699, "t": 110.98553000000004, "r": 231.19603, "b": 119.74194, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "<", "bbox": {"l": 235.77481, "t": 110.98553000000004, "r": 240.86904999999996, "b": 119.73168999999996, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "permission name", "bbox": {"l": 240.87360000000004, "t": 110.98553000000004, "r": 311.6275, "b": 119.74194, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "> ", "bbox": {"l": 311.58862, "t": 110.98553000000004, "r": 319.00494, "b": 119.73168999999996, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Names the row permission for row access control", "bbox": {"l": 329.09839, "t": 91.25610000000006, "r": 493.15857, "b": 98.26886000000002, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "p", "bbox": {"l": 240.87360000000004, "t": 110.98553000000004, "r": 246.13150000000002, "b": 119.74194, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "ENABLE", "bbox": {"l": 149.2699, "t": 147.84826999999996, "r": 182.26585, "b": 156.60468000000003, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Specifies", "bbox": {"l": 311.4657, "t": 135.67584, "r": 337.83026, "b": 142.68859999999995, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "that the row permission is to be enabled", "bbox": {"l": 342.39178, "t": 135.67584, "r": 477.03091, "b": 142.68859999999995, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Specifies", "bbox": {"l": 310.97421, "t": 155.58159999999998, "r": 340.08932, "b": 162.59436000000005, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "that the row permission is to be disabled", "bbox": {"l": 341.86423, "t": 155.58159999999998, "r": 477.48803999999996, "b": 162.59436000000005, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "DISABLE", "bbox": {"l": 149.2699, "t": 160.13585999999998, "r": 184.44882, "b": 168.89227000000005, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "REGENERATE", "bbox": {"l": 149.2699, "t": 172.42340000000002, "r": 204.24371, "b": 181.17980999999997, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": ";", "bbox": {"l": 204.22632, "t": 172.42340000000002, "r": 206.9678, "b": 181.16956000000005, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": " that the row permission is to be disabled", "bbox": {"l": 340.1264, "t": 155.58159999999998, "r": 477.48803999999996, "b": 162.59436000000005, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Specifies", "bbox": {"l": 304.58469, "t": 175.48755000000006, "r": 330.95551, "b": 182.50031, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "that the row permission is to be regenerated", "bbox": {"l": 335.51816, "t": 175.48755000000006, "r": 483.95947, "b": 182.50031, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "ALTER MASK ", "bbox": {"l": 149.2699, "t": 264.97968000000003, "r": 205.02728, "b": 273.73608, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "<", "bbox": {"l": 207.42096, "t": 264.97968000000003, "r": 212.5152, "b": 273.72583, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "mask name", "bbox": {"l": 212.52031, "t": 264.97968000000003, "r": 260.34683, "b": 273.73608, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "> ", "bbox": {"l": 260.34991, "t": 264.97968000000003, "r": 267.76624, "b": 273.72583, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Names the column mask for column access control", "bbox": {"l": 328.6376, "t": 243.43781, "r": 496.99047999999993, "b": 250.45056, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ENABLE", "bbox": {"l": 149.2699, "t": 301.84235, "r": 182.26585, "b": 310.59872, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "DISABLE", "bbox": {"l": 149.2699, "t": 314.12985, "r": 184.44882, "b": 322.88623, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Specifies that the column mask is to be enabled", "bbox": {"l": 316.90289, "t": 287.85745, "r": 474.94449000000003, "b": 294.87015, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Specifies that the column mask is to be disabled", "bbox": {"l": 316.41141, "t": 307.76337, "r": 475.41339, "b": 314.77606, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "REGENERATE", "bbox": {"l": 149.2699, "t": 326.41754, "r": 204.24371, "b": 335.17392, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": ";", "bbox": {"l": 204.22632, "t": 326.41754, "r": 206.9678, "b": 335.1637, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Specifies that the column mask is to be regenerated", "bbox": {"l": 310.02191, "t": 327.66925, "r": 481.82784999999996, "b": 334.6819499999999, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Id", "bbox": {"l": 381.92691, "t": 514.20789, "r": 388.31406, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "tifi", "bbox": {"l": 396.65976, "t": 514.20789, "r": 405.67206, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "th", "bbox": {"l": 414.82132, "t": 514.20789, "r": 421.89322, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "t bl", "bbox": {"l": 427.89014, "t": 514.20789, "r": 440.70319, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "t", "bbox": {"l": 446.63906999999995, "t": 514.20789, "r": 449.39127, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "b", "bbox": {"l": 455.56888, "t": 514.20789, "r": 459.88857999999993, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "lt", "bbox": {"l": 469.84055, "t": 514.20789, "r": 474.47372, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "d", "bbox": {"l": 485.34805000000006, "t": 514.20789, "r": 489.66776, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "ALTER TABLE", "bbox": {"l": 148.2388, "t": 552.25224, "r": 202.0045, "b": 561.05989, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "<", "bbox": {"l": 206.6377, "t": 552.25224, "r": 211.76176, "b": 561.04961, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "table name", "bbox": {"l": 211.76691, "t": 552.25224, "r": 258.88251, "b": 561.05989, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": ">", "bbox": {"l": 258.8876, "t": 552.25224, "r": 264.01169, "b": 561.04961, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "Identifies the table to be altered", "bbox": {"l": 381.92691, "t": 514.20789, "r": 489.70754999999997, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "ALTER TABLE ", "bbox": {"l": 148.2388, "t": 552.25224, "r": 206.66792, "b": 561.05989, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "> ", "bbox": {"l": 258.8876, "t": 552.25224, "r": 266.34219, "b": 561.04961, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "Specifies to activate row access control for the table", "bbox": {"l": 325.8764, "t": 563.64609, "r": 499.40607000000006, "b": 570.69984, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "ACTIVATE ROW ACCESS CONTROL", "bbox": {"l": 148.2388, "t": 601.69044, "r": 290.58826, "b": 610.49809, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "DEACTIVATE ROW ACCESS CONTROL", "bbox": {"l": 148.2388, "t": 614.04996, "r": 302.02682, "b": 622.8576, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "Specifies", "bbox": {"l": 317.00839, "t": 625.44389, "r": 343.54861, "b": 632.49765, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "to deactivate row access control for the table", "bbox": {"l": 348.11584, "t": 625.44389, "r": 498.97121999999996, "b": 632.49765, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "ACTIVATE COLUMN ACCESS CONTROL", "bbox": {"l": 148.2388, "t": 663.48816, "r": 307.72708, "b": 672.2958, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "Specifies", "bbox": {"l": 312.25, "t": 647.07309, "r": 338.41428, "b": 654.12685, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "t", "bbox": {"l": 316.86722, "t": 647.07309, "r": 346.10965, "b": 654.12685, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "o activate column access control for the table", "bbox": {"l": 346.00735, "t": 647.07309, "r": 497.60767, "b": 654.12685, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "DEACTIVATE COLUMN ACCESS CONTROL", "bbox": {"l": 148.2388, "t": 675.84776, "r": 319.12659, "b": 684.6554, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": ";", "bbox": {"l": 319.07822, "t": 675.84776, "r": 321.83575, "b": 684.6451, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "Specifies to deactivate column access control for the table", "bbox": {"l": 302.51691, "t": 705.780998, "r": 496.27634000000006, "b": 712.834747, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 344.607666015625, "t": 754.6572875976562, "r": 523.60162, "b": 764.1538696289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9509176015853882, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 536.0054321289062, "t": 754.273193359375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9023982882499695, "cells": [{"id": 1, "text": "17", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "caption", "bbox": {"l": 135.7609405517578, "t": 349.9282531738281, "r": 415.2347106933594, "b": 359.3016052246094, "coord_origin": "TOPLEFT"}, "confidence": 0.9314021468162537, "cells": [{"id": 2, "text": "Figure 3-3 ALTER PERMISSION and ALTER MASK SQL statements", "bbox": {"l": 136.8, "t": 350.77798, "r": 414.92795, "b": 359.103, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.8385467529297, "t": 375.867431640625, "r": 547.2995, "b": 434.064453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9820544719696045, "cells": [{"id": 3, "text": "You can activate and deactivate RCAC for new or existing tables by using the SQL", "bbox": {"l": 136.8, "t": 376.78873, "r": 499.03439, "b": 386.00171, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " ALTER ", "bbox": {"l": 498.9595299999999, "t": 376.93811, "r": 533.87927, "b": 385.7627, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "TABLE", "bbox": {"l": 136.79999, "t": 388.93793, "r": 161.75975, "b": 397.76251, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": " statement (Figure 3-4). The ", "bbox": {"l": 161.75975, "t": 388.78853999999995, "r": 288.95093, "b": 398.00152999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ACTIVATE", "bbox": {"l": 288.9599, "t": 388.93793, "r": 328.91943, "b": 397.76251, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": " or ", "bbox": {"l": 328.98016, "t": 388.78853999999995, "r": 343.37933, "b": 398.00152999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "DEACTIVATE", "bbox": {"l": 343.38034, "t": 388.93793, "r": 393.35962, "b": 397.76251, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": " clause must be the option that is ", "bbox": {"l": 393.36063, "t": 388.78853999999995, "r": 542.38611, "b": 398.00152999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "specified in the statement. No other alterations are permitted at the same time. The activating ", "bbox": {"l": 136.80096, "t": 400.78836000000007, "r": 547.2995, "b": 410.00134, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "and deactivating effectively turns on or off all RCAC processing for the table. Only enabled ", "bbox": {"l": 136.80096, "t": 412.78818, "r": 537.36926, "b": 422.00116, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "row permissions and column masks take effect when activating RCAC.", "bbox": {"l": 136.80096, "t": 424.7879899999999, "r": 448.40952000000004, "b": 434.00098, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "caption", "bbox": {"l": 136.1680145263672, "t": 724.62646484375, "r": 306.3438720703125, "b": 734.2166137695312, "coord_origin": "TOPLEFT"}, "confidence": 0.9344669580459595, "cells": [{"id": 14, "text": "Figure 3-4 ALTER TABLE SQL statement", "bbox": {"l": 136.8, "t": 725.477898, "r": 305.51761, "b": 733.802898, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 142.42935180664062, "t": 452.0504150390625, "r": 531.85156, "b": 474.2764587402344, "coord_origin": "TOPLEFT"}, "confidence": 0.9186185598373413, "cells": [{"id": 15, "text": "Note:", "bbox": {"l": 142.8, "t": 452.74872, "r": 168.33246, "b": 461.9617, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": " An exclusive lock is required on the table object to perform the alter operation. All ", "bbox": {"l": 168.36035, "t": 452.74872, "r": 531.85156, "b": 461.9617, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "open cursors must be closed.", "bbox": {"l": 142.8, "t": 464.74854, "r": 273.34174, "b": 473.96152, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "picture", "bbox": {"l": 136.23851013183594, "t": 77.76332092285156, "r": 507.5733642578125, "b": 347.19940185546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9780997633934021, "cells": [{"id": 18, "text": "ALTER PERMISSION", "bbox": {"l": 149.2699, "t": 110.98553000000004, "r": 231.19603, "b": 119.74194, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "<", "bbox": {"l": 235.77481, "t": 110.98553000000004, "r": 240.86904999999996, "b": 119.73168999999996, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "permission name", "bbox": {"l": 240.87360000000004, "t": 110.98553000000004, "r": 311.6275, "b": 119.74194, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "> ", "bbox": {"l": 311.58862, "t": 110.98553000000004, "r": 319.00494, "b": 119.73168999999996, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Names the row permission for row access control", "bbox": {"l": 329.09839, "t": 91.25610000000006, "r": 493.15857, "b": 98.26886000000002, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "p", "bbox": {"l": 240.87360000000004, "t": 110.98553000000004, "r": 246.13150000000002, "b": 119.74194, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "ENABLE", "bbox": {"l": 149.2699, "t": 147.84826999999996, "r": 182.26585, "b": 156.60468000000003, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Specifies", "bbox": {"l": 311.4657, "t": 135.67584, "r": 337.83026, "b": 142.68859999999995, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "that the row permission is to be enabled", "bbox": {"l": 342.39178, "t": 135.67584, "r": 477.03091, "b": 142.68859999999995, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Specifies", "bbox": {"l": 310.97421, "t": 155.58159999999998, "r": 340.08932, "b": 162.59436000000005, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "that the row permission is to be disabled", "bbox": {"l": 341.86423, "t": 155.58159999999998, "r": 477.48803999999996, "b": 162.59436000000005, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "DISABLE", "bbox": {"l": 149.2699, "t": 160.13585999999998, "r": 184.44882, "b": 168.89227000000005, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "REGENERATE", "bbox": {"l": 149.2699, "t": 172.42340000000002, "r": 204.24371, "b": 181.17980999999997, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": ";", "bbox": {"l": 204.22632, "t": 172.42340000000002, "r": 206.9678, "b": 181.16956000000005, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": " that the row permission is to be disabled", "bbox": {"l": 340.1264, "t": 155.58159999999998, "r": 477.48803999999996, "b": 162.59436000000005, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Specifies", "bbox": {"l": 304.58469, "t": 175.48755000000006, "r": 330.95551, "b": 182.50031, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "that the row permission is to be regenerated", "bbox": {"l": 335.51816, "t": 175.48755000000006, "r": 483.95947, "b": 182.50031, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "ALTER MASK ", "bbox": {"l": 149.2699, "t": 264.97968000000003, "r": 205.02728, "b": 273.73608, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "<", "bbox": {"l": 207.42096, "t": 264.97968000000003, "r": 212.5152, "b": 273.72583, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "mask name", "bbox": {"l": 212.52031, "t": 264.97968000000003, "r": 260.34683, "b": 273.73608, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "> ", "bbox": {"l": 260.34991, "t": 264.97968000000003, "r": 267.76624, "b": 273.72583, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Names the column mask for column access control", "bbox": {"l": 328.6376, "t": 243.43781, "r": 496.99047999999993, "b": 250.45056, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ENABLE", "bbox": {"l": 149.2699, "t": 301.84235, "r": 182.26585, "b": 310.59872, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "DISABLE", "bbox": {"l": 149.2699, "t": 314.12985, "r": 184.44882, "b": 322.88623, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Specifies that the column mask is to be enabled", "bbox": {"l": 316.90289, "t": 287.85745, "r": 474.94449000000003, "b": 294.87015, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Specifies that the column mask is to be disabled", "bbox": {"l": 316.41141, "t": 307.76337, "r": 475.41339, "b": 314.77606, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "REGENERATE", "bbox": {"l": 149.2699, "t": 326.41754, "r": 204.24371, "b": 335.17392, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": ";", "bbox": {"l": 204.22632, "t": 326.41754, "r": 206.9678, "b": 335.1637, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Specifies that the column mask is to be regenerated", "bbox": {"l": 310.02191, "t": 327.66925, "r": 481.82784999999996, "b": 334.6819499999999, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "picture", "bbox": {"l": 135.7325897216797, "t": 500.9567565917969, "r": 514.99365234375, "b": 721.4244995117188, "coord_origin": "TOPLEFT"}, "confidence": 0.9797928333282471, "cells": [{"id": 47, "text": "Id", "bbox": {"l": 381.92691, "t": 514.20789, "r": 388.31406, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "tifi", "bbox": {"l": 396.65976, "t": 514.20789, "r": 405.67206, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "th", "bbox": {"l": 414.82132, "t": 514.20789, "r": 421.89322, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "t bl", "bbox": {"l": 427.89014, "t": 514.20789, "r": 440.70319, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "t", "bbox": {"l": 446.63906999999995, "t": 514.20789, "r": 449.39127, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "b", "bbox": {"l": 455.56888, "t": 514.20789, "r": 459.88857999999993, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "lt", "bbox": {"l": 469.84055, "t": 514.20789, "r": 474.47372, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "d", "bbox": {"l": 485.34805000000006, "t": 514.20789, "r": 489.66776, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "ALTER TABLE", "bbox": {"l": 148.2388, "t": 552.25224, "r": 202.0045, "b": 561.05989, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "<", "bbox": {"l": 206.6377, "t": 552.25224, "r": 211.76176, "b": 561.04961, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "table name", "bbox": {"l": 211.76691, "t": 552.25224, "r": 258.88251, "b": 561.05989, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": ">", "bbox": {"l": 258.8876, "t": 552.25224, "r": 264.01169, "b": 561.04961, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "Identifies the table to be altered", "bbox": {"l": 381.92691, "t": 514.20789, "r": 489.70754999999997, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "ALTER TABLE ", "bbox": {"l": 148.2388, "t": 552.25224, "r": 206.66792, "b": 561.05989, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "> ", "bbox": {"l": 258.8876, "t": 552.25224, "r": 266.34219, "b": 561.04961, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "Specifies to activate row access control for the table", "bbox": {"l": 325.8764, "t": 563.64609, "r": 499.40607000000006, "b": 570.69984, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "ACTIVATE ROW ACCESS CONTROL", "bbox": {"l": 148.2388, "t": 601.69044, "r": 290.58826, "b": 610.49809, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "DEACTIVATE ROW ACCESS CONTROL", "bbox": {"l": 148.2388, "t": 614.04996, "r": 302.02682, "b": 622.8576, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "Specifies", "bbox": {"l": 317.00839, "t": 625.44389, "r": 343.54861, "b": 632.49765, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "to deactivate row access control for the table", "bbox": {"l": 348.11584, "t": 625.44389, "r": 498.97121999999996, "b": 632.49765, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "ACTIVATE COLUMN ACCESS CONTROL", "bbox": {"l": 148.2388, "t": 663.48816, "r": 307.72708, "b": 672.2958, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "Specifies", "bbox": {"l": 312.25, "t": 647.07309, "r": 338.41428, "b": 654.12685, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "t", "bbox": {"l": 316.86722, "t": 647.07309, "r": 346.10965, "b": 654.12685, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "o activate column access control for the table", "bbox": {"l": 346.00735, "t": 647.07309, "r": 497.60767, "b": 654.12685, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "DEACTIVATE COLUMN ACCESS CONTROL", "bbox": {"l": 148.2388, "t": 675.84776, "r": 319.12659, "b": 684.6554, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": ";", "bbox": {"l": 319.07822, "t": 675.84776, "r": 321.83575, "b": 684.6451, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "Specifies to deactivate column access control for the table", "bbox": {"l": 302.51691, "t": 705.780998, "r": 496.27634000000006, "b": 712.834747, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 32, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.607666015625, "t": 754.6572875976562, "r": 523.60162, "b": 764.1538696289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9509176015853882, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 32, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 536.0054321289062, "t": 754.273193359375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9023982882499695, "cells": [{"id": 1, "text": "17", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "17"}, {"label": "caption", "id": 2, "page_no": 32, "cluster": {"id": 2, "label": "caption", "bbox": {"l": 135.7609405517578, "t": 349.9282531738281, "r": 415.2347106933594, "b": 359.3016052246094, "coord_origin": "TOPLEFT"}, "confidence": 0.9314021468162537, "cells": [{"id": 2, "text": "Figure 3-3 ALTER PERMISSION and ALTER MASK SQL statements", "bbox": {"l": 136.8, "t": 350.77798, "r": 414.92795, "b": 359.103, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-3 ALTER PERMISSION and ALTER MASK SQL statements"}, {"label": "text", "id": 3, "page_no": 32, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.8385467529297, "t": 375.867431640625, "r": 547.2995, "b": 434.064453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9820544719696045, "cells": [{"id": 3, "text": "You can activate and deactivate RCAC for new or existing tables by using the SQL", "bbox": {"l": 136.8, "t": 376.78873, "r": 499.03439, "b": 386.00171, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " ALTER ", "bbox": {"l": 498.9595299999999, "t": 376.93811, "r": 533.87927, "b": 385.7627, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "TABLE", "bbox": {"l": 136.79999, "t": 388.93793, "r": 161.75975, "b": 397.76251, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": " statement (Figure 3-4). The ", "bbox": {"l": 161.75975, "t": 388.78853999999995, "r": 288.95093, "b": 398.00152999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ACTIVATE", "bbox": {"l": 288.9599, "t": 388.93793, "r": 328.91943, "b": 397.76251, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": " or ", "bbox": {"l": 328.98016, "t": 388.78853999999995, "r": 343.37933, "b": 398.00152999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "DEACTIVATE", "bbox": {"l": 343.38034, "t": 388.93793, "r": 393.35962, "b": 397.76251, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": " clause must be the option that is ", "bbox": {"l": 393.36063, "t": 388.78853999999995, "r": 542.38611, "b": 398.00152999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "specified in the statement. No other alterations are permitted at the same time. The activating ", "bbox": {"l": 136.80096, "t": 400.78836000000007, "r": 547.2995, "b": 410.00134, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "and deactivating effectively turns on or off all RCAC processing for the table. Only enabled ", "bbox": {"l": 136.80096, "t": 412.78818, "r": 537.36926, "b": 422.00116, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "row permissions and column masks take effect when activating RCAC.", "bbox": {"l": 136.80096, "t": 424.7879899999999, "r": 448.40952000000004, "b": 434.00098, "coord_origin": "TOPLEFT"}}]}, "text": "You can activate and deactivate RCAC for new or existing tables by using the SQL ALTER TABLE statement (Figure 3-4). The ACTIVATE or DEACTIVATE clause must be the option that is specified in the statement. No other alterations are permitted at the same time. The activating and deactivating effectively turns on or off all RCAC processing for the table. Only enabled row permissions and column masks take effect when activating RCAC."}, {"label": "caption", "id": 4, "page_no": 32, "cluster": {"id": 4, "label": "caption", "bbox": {"l": 136.1680145263672, "t": 724.62646484375, "r": 306.3438720703125, "b": 734.2166137695312, "coord_origin": "TOPLEFT"}, "confidence": 0.9344669580459595, "cells": [{"id": 14, "text": "Figure 3-4 ALTER TABLE SQL statement", "bbox": {"l": 136.8, "t": 725.477898, "r": 305.51761, "b": 733.802898, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-4 ALTER TABLE SQL statement"}, {"label": "text", "id": 5, "page_no": 32, "cluster": {"id": 5, "label": "text", "bbox": {"l": 142.42935180664062, "t": 452.0504150390625, "r": 531.85156, "b": 474.2764587402344, "coord_origin": "TOPLEFT"}, "confidence": 0.9186185598373413, "cells": [{"id": 15, "text": "Note:", "bbox": {"l": 142.8, "t": 452.74872, "r": 168.33246, "b": 461.9617, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": " An exclusive lock is required on the table object to perform the alter operation. All ", "bbox": {"l": 168.36035, "t": 452.74872, "r": 531.85156, "b": 461.9617, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "open cursors must be closed.", "bbox": {"l": 142.8, "t": 464.74854, "r": 273.34174, "b": 473.96152, "coord_origin": "TOPLEFT"}}]}, "text": "Note: An exclusive lock is required on the table object to perform the alter operation. All open cursors must be closed."}, {"label": "picture", "id": 6, "page_no": 32, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 136.23851013183594, "t": 77.76332092285156, "r": 507.5733642578125, "b": 347.19940185546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9780997633934021, "cells": [{"id": 18, "text": "ALTER PERMISSION", "bbox": {"l": 149.2699, "t": 110.98553000000004, "r": 231.19603, "b": 119.74194, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "<", "bbox": {"l": 235.77481, "t": 110.98553000000004, "r": 240.86904999999996, "b": 119.73168999999996, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "permission name", "bbox": {"l": 240.87360000000004, "t": 110.98553000000004, "r": 311.6275, "b": 119.74194, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "> ", "bbox": {"l": 311.58862, "t": 110.98553000000004, "r": 319.00494, "b": 119.73168999999996, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Names the row permission for row access control", "bbox": {"l": 329.09839, "t": 91.25610000000006, "r": 493.15857, "b": 98.26886000000002, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "p", "bbox": {"l": 240.87360000000004, "t": 110.98553000000004, "r": 246.13150000000002, "b": 119.74194, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "ENABLE", "bbox": {"l": 149.2699, "t": 147.84826999999996, "r": 182.26585, "b": 156.60468000000003, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Specifies", "bbox": {"l": 311.4657, "t": 135.67584, "r": 337.83026, "b": 142.68859999999995, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "that the row permission is to be enabled", "bbox": {"l": 342.39178, "t": 135.67584, "r": 477.03091, "b": 142.68859999999995, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Specifies", "bbox": {"l": 310.97421, "t": 155.58159999999998, "r": 340.08932, "b": 162.59436000000005, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "that the row permission is to be disabled", "bbox": {"l": 341.86423, "t": 155.58159999999998, "r": 477.48803999999996, "b": 162.59436000000005, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "DISABLE", "bbox": {"l": 149.2699, "t": 160.13585999999998, "r": 184.44882, "b": 168.89227000000005, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "REGENERATE", "bbox": {"l": 149.2699, "t": 172.42340000000002, "r": 204.24371, "b": 181.17980999999997, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": ";", "bbox": {"l": 204.22632, "t": 172.42340000000002, "r": 206.9678, "b": 181.16956000000005, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": " that the row permission is to be disabled", "bbox": {"l": 340.1264, "t": 155.58159999999998, "r": 477.48803999999996, "b": 162.59436000000005, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Specifies", "bbox": {"l": 304.58469, "t": 175.48755000000006, "r": 330.95551, "b": 182.50031, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "that the row permission is to be regenerated", "bbox": {"l": 335.51816, "t": 175.48755000000006, "r": 483.95947, "b": 182.50031, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "ALTER MASK ", "bbox": {"l": 149.2699, "t": 264.97968000000003, "r": 205.02728, "b": 273.73608, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "<", "bbox": {"l": 207.42096, "t": 264.97968000000003, "r": 212.5152, "b": 273.72583, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "mask name", "bbox": {"l": 212.52031, "t": 264.97968000000003, "r": 260.34683, "b": 273.73608, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "> ", "bbox": {"l": 260.34991, "t": 264.97968000000003, "r": 267.76624, "b": 273.72583, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Names the column mask for column access control", "bbox": {"l": 328.6376, "t": 243.43781, "r": 496.99047999999993, "b": 250.45056, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ENABLE", "bbox": {"l": 149.2699, "t": 301.84235, "r": 182.26585, "b": 310.59872, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "DISABLE", "bbox": {"l": 149.2699, "t": 314.12985, "r": 184.44882, "b": 322.88623, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Specifies that the column mask is to be enabled", "bbox": {"l": 316.90289, "t": 287.85745, "r": 474.94449000000003, "b": 294.87015, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Specifies that the column mask is to be disabled", "bbox": {"l": 316.41141, "t": 307.76337, "r": 475.41339, "b": 314.77606, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "REGENERATE", "bbox": {"l": 149.2699, "t": 326.41754, "r": 204.24371, "b": 335.17392, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": ";", "bbox": {"l": 204.22632, "t": 326.41754, "r": 206.9678, "b": 335.1637, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Specifies that the column mask is to be regenerated", "bbox": {"l": 310.02191, "t": 327.66925, "r": 481.82784999999996, "b": 334.6819499999999, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 7, "page_no": 32, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 135.7325897216797, "t": 500.9567565917969, "r": 514.99365234375, "b": 721.4244995117188, "coord_origin": "TOPLEFT"}, "confidence": 0.9797928333282471, "cells": [{"id": 47, "text": "Id", "bbox": {"l": 381.92691, "t": 514.20789, "r": 388.31406, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "tifi", "bbox": {"l": 396.65976, "t": 514.20789, "r": 405.67206, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "th", "bbox": {"l": 414.82132, "t": 514.20789, "r": 421.89322, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "t bl", "bbox": {"l": 427.89014, "t": 514.20789, "r": 440.70319, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "t", "bbox": {"l": 446.63906999999995, "t": 514.20789, "r": 449.39127, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "b", "bbox": {"l": 455.56888, "t": 514.20789, "r": 459.88857999999993, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "lt", "bbox": {"l": 469.84055, "t": 514.20789, "r": 474.47372, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "d", "bbox": {"l": 485.34805000000006, "t": 514.20789, "r": 489.66776, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "ALTER TABLE", "bbox": {"l": 148.2388, "t": 552.25224, "r": 202.0045, "b": 561.05989, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "<", "bbox": {"l": 206.6377, "t": 552.25224, "r": 211.76176, "b": 561.04961, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "table name", "bbox": {"l": 211.76691, "t": 552.25224, "r": 258.88251, "b": 561.05989, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": ">", "bbox": {"l": 258.8876, "t": 552.25224, "r": 264.01169, "b": 561.04961, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "Identifies the table to be altered", "bbox": {"l": 381.92691, "t": 514.20789, "r": 489.70754999999997, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "ALTER TABLE ", "bbox": {"l": 148.2388, "t": 552.25224, "r": 206.66792, "b": 561.05989, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "> ", "bbox": {"l": 258.8876, "t": 552.25224, "r": 266.34219, "b": 561.04961, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "Specifies to activate row access control for the table", "bbox": {"l": 325.8764, "t": 563.64609, "r": 499.40607000000006, "b": 570.69984, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "ACTIVATE ROW ACCESS CONTROL", "bbox": {"l": 148.2388, "t": 601.69044, "r": 290.58826, "b": 610.49809, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "DEACTIVATE ROW ACCESS CONTROL", "bbox": {"l": 148.2388, "t": 614.04996, "r": 302.02682, "b": 622.8576, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "Specifies", "bbox": {"l": 317.00839, "t": 625.44389, "r": 343.54861, "b": 632.49765, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "to deactivate row access control for the table", "bbox": {"l": 348.11584, "t": 625.44389, "r": 498.97121999999996, "b": 632.49765, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "ACTIVATE COLUMN ACCESS CONTROL", "bbox": {"l": 148.2388, "t": 663.48816, "r": 307.72708, "b": 672.2958, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "Specifies", "bbox": {"l": 312.25, "t": 647.07309, "r": 338.41428, "b": 654.12685, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "t", "bbox": {"l": 316.86722, "t": 647.07309, "r": 346.10965, "b": 654.12685, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "o activate column access control for the table", "bbox": {"l": 346.00735, "t": 647.07309, "r": 497.60767, "b": 654.12685, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "DEACTIVATE COLUMN ACCESS CONTROL", "bbox": {"l": 148.2388, "t": 675.84776, "r": 319.12659, "b": 684.6554, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": ";", "bbox": {"l": 319.07822, "t": 675.84776, "r": 321.83575, "b": 684.6451, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "Specifies to deactivate column access control for the table", "bbox": {"l": 302.51691, "t": 705.780998, "r": 496.27634000000006, "b": 712.834747, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "caption", "id": 2, "page_no": 32, "cluster": {"id": 2, "label": "caption", "bbox": {"l": 135.7609405517578, "t": 349.9282531738281, "r": 415.2347106933594, "b": 359.3016052246094, "coord_origin": "TOPLEFT"}, "confidence": 0.9314021468162537, "cells": [{"id": 2, "text": "Figure 3-3 ALTER PERMISSION and ALTER MASK SQL statements", "bbox": {"l": 136.8, "t": 350.77798, "r": 414.92795, "b": 359.103, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-3 ALTER PERMISSION and ALTER MASK SQL statements"}, {"label": "text", "id": 3, "page_no": 32, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.8385467529297, "t": 375.867431640625, "r": 547.2995, "b": 434.064453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9820544719696045, "cells": [{"id": 3, "text": "You can activate and deactivate RCAC for new or existing tables by using the SQL", "bbox": {"l": 136.8, "t": 376.78873, "r": 499.03439, "b": 386.00171, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " ALTER ", "bbox": {"l": 498.9595299999999, "t": 376.93811, "r": 533.87927, "b": 385.7627, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "TABLE", "bbox": {"l": 136.79999, "t": 388.93793, "r": 161.75975, "b": 397.76251, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": " statement (Figure 3-4). The ", "bbox": {"l": 161.75975, "t": 388.78853999999995, "r": 288.95093, "b": 398.00152999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ACTIVATE", "bbox": {"l": 288.9599, "t": 388.93793, "r": 328.91943, "b": 397.76251, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": " or ", "bbox": {"l": 328.98016, "t": 388.78853999999995, "r": 343.37933, "b": 398.00152999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "DEACTIVATE", "bbox": {"l": 343.38034, "t": 388.93793, "r": 393.35962, "b": 397.76251, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": " clause must be the option that is ", "bbox": {"l": 393.36063, "t": 388.78853999999995, "r": 542.38611, "b": 398.00152999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "specified in the statement. No other alterations are permitted at the same time. The activating ", "bbox": {"l": 136.80096, "t": 400.78836000000007, "r": 547.2995, "b": 410.00134, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "and deactivating effectively turns on or off all RCAC processing for the table. Only enabled ", "bbox": {"l": 136.80096, "t": 412.78818, "r": 537.36926, "b": 422.00116, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "row permissions and column masks take effect when activating RCAC.", "bbox": {"l": 136.80096, "t": 424.7879899999999, "r": 448.40952000000004, "b": 434.00098, "coord_origin": "TOPLEFT"}}]}, "text": "You can activate and deactivate RCAC for new or existing tables by using the SQL ALTER TABLE statement (Figure 3-4). The ACTIVATE or DEACTIVATE clause must be the option that is specified in the statement. No other alterations are permitted at the same time. The activating and deactivating effectively turns on or off all RCAC processing for the table. Only enabled row permissions and column masks take effect when activating RCAC."}, {"label": "caption", "id": 4, "page_no": 32, "cluster": {"id": 4, "label": "caption", "bbox": {"l": 136.1680145263672, "t": 724.62646484375, "r": 306.3438720703125, "b": 734.2166137695312, "coord_origin": "TOPLEFT"}, "confidence": 0.9344669580459595, "cells": [{"id": 14, "text": "Figure 3-4 ALTER TABLE SQL statement", "bbox": {"l": 136.8, "t": 725.477898, "r": 305.51761, "b": 733.802898, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-4 ALTER TABLE SQL statement"}, {"label": "text", "id": 5, "page_no": 32, "cluster": {"id": 5, "label": "text", "bbox": {"l": 142.42935180664062, "t": 452.0504150390625, "r": 531.85156, "b": 474.2764587402344, "coord_origin": "TOPLEFT"}, "confidence": 0.9186185598373413, "cells": [{"id": 15, "text": "Note:", "bbox": {"l": 142.8, "t": 452.74872, "r": 168.33246, "b": 461.9617, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": " An exclusive lock is required on the table object to perform the alter operation. All ", "bbox": {"l": 168.36035, "t": 452.74872, "r": 531.85156, "b": 461.9617, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "open cursors must be closed.", "bbox": {"l": 142.8, "t": 464.74854, "r": 273.34174, "b": 473.96152, "coord_origin": "TOPLEFT"}}]}, "text": "Note: An exclusive lock is required on the table object to perform the alter operation. All open cursors must be closed."}, {"label": "picture", "id": 6, "page_no": 32, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 136.23851013183594, "t": 77.76332092285156, "r": 507.5733642578125, "b": 347.19940185546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9780997633934021, "cells": [{"id": 18, "text": "ALTER PERMISSION", "bbox": {"l": 149.2699, "t": 110.98553000000004, "r": 231.19603, "b": 119.74194, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "<", "bbox": {"l": 235.77481, "t": 110.98553000000004, "r": 240.86904999999996, "b": 119.73168999999996, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "permission name", "bbox": {"l": 240.87360000000004, "t": 110.98553000000004, "r": 311.6275, "b": 119.74194, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "> ", "bbox": {"l": 311.58862, "t": 110.98553000000004, "r": 319.00494, "b": 119.73168999999996, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Names the row permission for row access control", "bbox": {"l": 329.09839, "t": 91.25610000000006, "r": 493.15857, "b": 98.26886000000002, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "p", "bbox": {"l": 240.87360000000004, "t": 110.98553000000004, "r": 246.13150000000002, "b": 119.74194, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "ENABLE", "bbox": {"l": 149.2699, "t": 147.84826999999996, "r": 182.26585, "b": 156.60468000000003, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Specifies", "bbox": {"l": 311.4657, "t": 135.67584, "r": 337.83026, "b": 142.68859999999995, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "that the row permission is to be enabled", "bbox": {"l": 342.39178, "t": 135.67584, "r": 477.03091, "b": 142.68859999999995, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Specifies", "bbox": {"l": 310.97421, "t": 155.58159999999998, "r": 340.08932, "b": 162.59436000000005, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "that the row permission is to be disabled", "bbox": {"l": 341.86423, "t": 155.58159999999998, "r": 477.48803999999996, "b": 162.59436000000005, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "DISABLE", "bbox": {"l": 149.2699, "t": 160.13585999999998, "r": 184.44882, "b": 168.89227000000005, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "REGENERATE", "bbox": {"l": 149.2699, "t": 172.42340000000002, "r": 204.24371, "b": 181.17980999999997, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": ";", "bbox": {"l": 204.22632, "t": 172.42340000000002, "r": 206.9678, "b": 181.16956000000005, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": " that the row permission is to be disabled", "bbox": {"l": 340.1264, "t": 155.58159999999998, "r": 477.48803999999996, "b": 162.59436000000005, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Specifies", "bbox": {"l": 304.58469, "t": 175.48755000000006, "r": 330.95551, "b": 182.50031, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "that the row permission is to be regenerated", "bbox": {"l": 335.51816, "t": 175.48755000000006, "r": 483.95947, "b": 182.50031, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "ALTER MASK ", "bbox": {"l": 149.2699, "t": 264.97968000000003, "r": 205.02728, "b": 273.73608, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "<", "bbox": {"l": 207.42096, "t": 264.97968000000003, "r": 212.5152, "b": 273.72583, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "mask name", "bbox": {"l": 212.52031, "t": 264.97968000000003, "r": 260.34683, "b": 273.73608, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "> ", "bbox": {"l": 260.34991, "t": 264.97968000000003, "r": 267.76624, "b": 273.72583, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Names the column mask for column access control", "bbox": {"l": 328.6376, "t": 243.43781, "r": 496.99047999999993, "b": 250.45056, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ENABLE", "bbox": {"l": 149.2699, "t": 301.84235, "r": 182.26585, "b": 310.59872, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "DISABLE", "bbox": {"l": 149.2699, "t": 314.12985, "r": 184.44882, "b": 322.88623, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Specifies that the column mask is to be enabled", "bbox": {"l": 316.90289, "t": 287.85745, "r": 474.94449000000003, "b": 294.87015, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Specifies that the column mask is to be disabled", "bbox": {"l": 316.41141, "t": 307.76337, "r": 475.41339, "b": 314.77606, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "REGENERATE", "bbox": {"l": 149.2699, "t": 326.41754, "r": 204.24371, "b": 335.17392, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": ";", "bbox": {"l": 204.22632, "t": 326.41754, "r": 206.9678, "b": 335.1637, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Specifies that the column mask is to be regenerated", "bbox": {"l": 310.02191, "t": 327.66925, "r": 481.82784999999996, "b": 334.6819499999999, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 7, "page_no": 32, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 135.7325897216797, "t": 500.9567565917969, "r": 514.99365234375, "b": 721.4244995117188, "coord_origin": "TOPLEFT"}, "confidence": 0.9797928333282471, "cells": [{"id": 47, "text": "Id", "bbox": {"l": 381.92691, "t": 514.20789, "r": 388.31406, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "tifi", "bbox": {"l": 396.65976, "t": 514.20789, "r": 405.67206, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "th", "bbox": {"l": 414.82132, "t": 514.20789, "r": 421.89322, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "t bl", "bbox": {"l": 427.89014, "t": 514.20789, "r": 440.70319, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "t", "bbox": {"l": 446.63906999999995, "t": 514.20789, "r": 449.39127, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "b", "bbox": {"l": 455.56888, "t": 514.20789, "r": 459.88857999999993, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "lt", "bbox": {"l": 469.84055, "t": 514.20789, "r": 474.47372, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "d", "bbox": {"l": 485.34805000000006, "t": 514.20789, "r": 489.66776, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "ALTER TABLE", "bbox": {"l": 148.2388, "t": 552.25224, "r": 202.0045, "b": 561.05989, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "<", "bbox": {"l": 206.6377, "t": 552.25224, "r": 211.76176, "b": 561.04961, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "table name", "bbox": {"l": 211.76691, "t": 552.25224, "r": 258.88251, "b": 561.05989, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": ">", "bbox": {"l": 258.8876, "t": 552.25224, "r": 264.01169, "b": 561.04961, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "Identifies the table to be altered", "bbox": {"l": 381.92691, "t": 514.20789, "r": 489.70754999999997, "b": 521.26163, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "ALTER TABLE ", "bbox": {"l": 148.2388, "t": 552.25224, "r": 206.66792, "b": 561.05989, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "> ", "bbox": {"l": 258.8876, "t": 552.25224, "r": 266.34219, "b": 561.04961, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "Specifies to activate row access control for the table", "bbox": {"l": 325.8764, "t": 563.64609, "r": 499.40607000000006, "b": 570.69984, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "ACTIVATE ROW ACCESS CONTROL", "bbox": {"l": 148.2388, "t": 601.69044, "r": 290.58826, "b": 610.49809, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "DEACTIVATE ROW ACCESS CONTROL", "bbox": {"l": 148.2388, "t": 614.04996, "r": 302.02682, "b": 622.8576, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "Specifies", "bbox": {"l": 317.00839, "t": 625.44389, "r": 343.54861, "b": 632.49765, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "to deactivate row access control for the table", "bbox": {"l": 348.11584, "t": 625.44389, "r": 498.97121999999996, "b": 632.49765, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "ACTIVATE COLUMN ACCESS CONTROL", "bbox": {"l": 148.2388, "t": 663.48816, "r": 307.72708, "b": 672.2958, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "Specifies", "bbox": {"l": 312.25, "t": 647.07309, "r": 338.41428, "b": 654.12685, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "t", "bbox": {"l": 316.86722, "t": 647.07309, "r": 346.10965, "b": 654.12685, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "o activate column access control for the table", "bbox": {"l": 346.00735, "t": 647.07309, "r": 497.60767, "b": 654.12685, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "DEACTIVATE COLUMN ACCESS CONTROL", "bbox": {"l": 148.2388, "t": 675.84776, "r": 319.12659, "b": 684.6554, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": ";", "bbox": {"l": 319.07822, "t": 675.84776, "r": 321.83575, "b": 684.6451, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "Specifies to deactivate column access control for the table", "bbox": {"l": 302.51691, "t": 705.780998, "r": 496.27634000000006, "b": 712.834747, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 32, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.607666015625, "t": 754.6572875976562, "r": 523.60162, "b": 764.1538696289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9509176015853882, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 32, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 536.0054321289062, "t": 754.273193359375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9023982882499695, "cells": [{"id": 1, "text": "17", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "17"}]}}, {"page_no": 33, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "18 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "When row access control is activated on a table, a default permission is established for that ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 541.60541, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "table. The name of this permission is QIBM_DEFAULT_ _. ", "bbox": {"l": 136.80002, "t": 83.50847999999996, "r": 532.44617, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "This default permission contains a simple piece of logic (0=1) which is never true. The default ", "bbox": {"l": 136.80002, "t": 95.50829999999996, "r": 547.27368, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "permission effectively denies access to every user unless there is a permission defined that ", "bbox": {"l": 136.80003, "t": 107.50811999999996, "r": 543.20679, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "allows access explicitly. If row access control is activated on a table, and there is no ", "bbox": {"l": 136.80003, "t": 119.50792999999999, "r": 507.37884999999994, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "permission that is defined, no one has permission to any rows. All queries against the table ", "bbox": {"l": 136.80003, "t": 131.50775, "r": 541.29761, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "produce an empty set.", "bbox": {"l": 136.80003, "t": 143.50757, "r": 235.74368, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "It is possible to define, create, and enable multiple permissions on a table. Logically, all of the ", "bbox": {"l": 136.80003, "t": 165.52715999999998, "r": 547.26862, "b": 174.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "permissions are ORed together to form a comprehensive test of the user\u2019s ability to access ", "bbox": {"l": 136.80003, "t": 177.52697999999998, "r": 540.27271, "b": 186.73999000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "the data. A column can have only one mask that is defined over it. From an implementation ", "bbox": {"l": 136.80005, "t": 189.52679, "r": 540.56946, "b": 198.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "standpoint, it does not matter if you create the column masks first or the row permissions first.", "bbox": {"l": 136.80005, "t": 201.52661, "r": 547.26361, "b": 210.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "3.2", "bbox": {"l": 64.800003, "t": 284.2207, "r": 87.228401, "b": 298.9837, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Special registers and built-in global variables", "bbox": {"l": 91.714066, "t": 284.2207, "r": 438.75719999999995, "b": 298.9837, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "This section describes how you can use special registers and built-in global variables to ", "bbox": {"l": 136.8, "t": 316.48874, "r": 525.50189, "b": 325.70172, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "implement RCAC.", "bbox": {"l": 136.8, "t": 328.48856, "r": 216.11847, "b": 337.70154, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "3.2.1", "bbox": {"l": 64.800003, "t": 358.37473, "r": 94.390945, "b": 370.36269999999996, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Special registers", "bbox": {"l": 98.089813, "t": 358.37473, "r": 204.58528, "b": 370.36269999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "A special register is a storage area that is defined for an application process by DB2 and is ", "bbox": {"l": 136.8, "t": 384.52872, "r": 539.57452, "b": 393.7417, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "used to store information that can be referenced in SQL statements. A reference to a special ", "bbox": {"l": 136.80002, "t": 396.52853, "r": 547.10638, "b": 405.74152, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "register is a reference to a value that is provided by the current server.", "bbox": {"l": 136.80002, "t": 408.52835, "r": 446.1227999999999, "b": 417.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "IBM DB2 for i supports four different special registers that can be used to identify what user ", "bbox": {"l": 136.80002, "t": 430.48816, "r": 541.74866, "b": 439.70114000000007, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "profiles are relevant to determining object authorities in the current connection to the server. ", "bbox": {"l": 136.80002, "t": 442.48798, "r": 544.57635, "b": 451.70096, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "SQL uses the term ", "bbox": {"l": 136.80002, "t": 454.48779, "r": 223.17113000000003, "b": 463.70078, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "runtime authorization ID", "bbox": {"l": 223.14, "t": 453.965, "r": 333.65698, "b": 464.02267, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": ", which corresponds to a user profile on ", "bbox": {"l": 332.94, "t": 454.48874, "r": 510.13167999999996, "b": 463.70172, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "DB2 for i. Here are the four special registers:", "bbox": {"l": 136.79987, "t": 466.48856, "r": 333.85648, "b": 475.70154, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "GLYPH", "bbox": {"l": 136.79987, "t": 483.67752, "r": 141.77986, "b": 492.4523, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "USER", "bbox": {"l": 151.2, "t": 483.00497, "r": 177.96045, "b": 493.06265, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": " is the runtime user profile that determines the object authorities for the current ", "bbox": {"l": 178.02, "t": 483.52872, "r": 527.85907, "b": 492.7417, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "connection to the server. It has a data type of VARCHAR(18). This value can be changed ", "bbox": {"l": 151.19972, "t": 495.52853, "r": 546.9812, "b": 504.74152, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "by the SQL statement ", "bbox": {"l": 151.19972, "t": 507.52835, "r": 250.47899, "b": 516.7413300000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "SET SESSION AUTHORIZATION", "bbox": {"l": 250.44016, "t": 507.67773, "r": 375.35846, "b": 516.50232, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": ".", "bbox": {"l": 375.36047, "t": 507.52835, "r": 378.12936, "b": 516.7413300000001, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "GLYPH", "bbox": {"l": 136.80055, "t": 524.65753, "r": 141.78055, "b": 533.4323099999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "SESSION_USER", "bbox": {"l": 151.2, "t": 523.98489, "r": 225.65868999999998, "b": 534.0425700000001, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": " is the same as the USER register, except that it has a data type of ", "bbox": {"l": 225.65999999999997, "t": 524.50864, "r": 522.54559, "b": 533.72162, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "VARCHAR(128).", "bbox": {"l": 151.20004, "t": 536.5084400000001, "r": 225.40204, "b": 545.72144, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "GLYPH", "bbox": {"l": 136.79988, "t": 553.6974, "r": 141.77988, "b": 562.47215, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "CURRENT USER", "bbox": {"l": 151.2, "t": 553.02498, "r": 229.63782, "b": 563.08266, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": " was added in IBM i 7.2 and is similar to the USER register, but it has ", "bbox": {"l": 229.62, "t": 553.54872, "r": 537.24548, "b": 562.76172, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "one important difference in that it also reports adopted authority. High-level language ", "bbox": {"l": 151.19994, "t": 565.54852, "r": 527.54938, "b": 574.76152, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "programs and SQL routines such as functions, procedures, and triggers can optionally be ", "bbox": {"l": 151.19994, "t": 577.54832, "r": 547.24835, "b": 586.7613200000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "created to run using either the caller\u2019s or the owner\u2019s user profile to determine data ", "bbox": {"l": 151.19994, "t": 589.54813, "r": 518.6712, "b": 598.76112, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "authorities. For example, an SQL procedure can be created to run under the owner\u2019s ", "bbox": {"l": 151.19994, "t": 601.54793, "r": 526.85022, "b": 610.76093, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "authority by specifying ", "bbox": {"l": 151.19994, "t": 613.54773, "r": 252.84670999999997, "b": 622.76073, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "SET OPTION USRPRF=*OWNER", "bbox": {"l": 252.77998, "t": 613.69713, "r": 372.71829, "b": 622.5216800000001, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": ". This special register can also be ", "bbox": {"l": 372.72031, "t": 613.54773, "r": 523.83533, "b": 622.76073, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "referenced as CURRENT_USER. It has a data type of VARCHAR(128).", "bbox": {"l": 151.19995, "t": 625.54753, "r": 467.14914, "b": 634.76053, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "GLYPH", "bbox": {"l": 136.79979, "t": 642.67674, "r": 141.77979, "b": 651.45149, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "SYSTEM_USER", "bbox": {"l": 151.2, "t": 642.00488, "r": 222.60513, "b": 652.06256, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": " is the user profile that initiates the connection to the server. It is not used ", "bbox": {"l": 222.60000999999997, "t": 642.52863, "r": 547.23834, "b": 651.74162, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "by RCAC, but is included here for completeness. Many jobs, including the QZDASOINIT ", "bbox": {"l": 151.19975, "t": 654.52843, "r": 541.24725, "b": 663.7414200000001, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "prestarted jobs, initially connect to the server with a default user profile and then change to ", "bbox": {"l": 151.19974, "t": 666.52823, "r": 547.26508, "b": 675.74123, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "use some other user profile. SYSTEM_USER reports this value, typically QUSER for a ", "bbox": {"l": 151.19974, "t": 678.52804, "r": 535.65375, "b": 687.74104, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "QZDASOINIT job. It has a data type of VARCHAR(128).", "bbox": {"l": 151.19974, "t": 690.52785, "r": 397.80933, "b": 699.740852, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "In addition to these four special registers, any of the DB2 special registers can be referenced ", "bbox": {"l": 136.79958, "t": 712.547417, "r": 547.20148, "b": 721.7604220000001, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "as part of the rule text.", "bbox": {"l": 136.79959, "t": 724.547226, "r": 236.50912000000002, "b": 733.760231, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "Note:", "bbox": {"l": 142.8, "t": 229.48870999999997, "r": 168.33246, "b": 238.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": " If a user does not have permission to access the row, the column mask logic is not ", "bbox": {"l": 168.36035, "t": 229.48870999999997, "r": 537.48688, "b": 238.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "invoked.", "bbox": {"l": 142.8, "t": 241.48852999999997, "r": 179.3741, "b": 250.70154000000002, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.41429901123047, "t": 754.440673828125, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9157553911209106, "cells": [{"id": 0, "text": "18 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.24517059326172, "t": 754.6806030273438, "r": 334.42142, "b": 763.880859375, "coord_origin": "TOPLEFT"}, "confidence": 0.9524391889572144, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.7600555419922, "t": 70.74359130859375, "r": 547.27368, "b": 153.18722534179688, "coord_origin": "TOPLEFT"}, "confidence": 0.9859952330589294, "cells": [{"id": 2, "text": "When row access control is activated on a table, a default permission is established for that ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 541.60541, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "table. The name of this permission is QIBM_DEFAULT_ _. ", "bbox": {"l": 136.80002, "t": 83.50847999999996, "r": 532.44617, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "This default permission contains a simple piece of logic (0=1) which is never true. The default ", "bbox": {"l": 136.80002, "t": 95.50829999999996, "r": 547.27368, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "permission effectively denies access to every user unless there is a permission defined that ", "bbox": {"l": 136.80003, "t": 107.50811999999996, "r": 543.20679, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "allows access explicitly. If row access control is activated on a table, and there is no ", "bbox": {"l": 136.80003, "t": 119.50792999999999, "r": 507.37884999999994, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "permission that is defined, no one has permission to any rows. All queries against the table ", "bbox": {"l": 136.80003, "t": 131.50775, "r": 541.29761, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "produce an empty set.", "bbox": {"l": 136.80003, "t": 143.50757, "r": 235.74368, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.96725463867188, "t": 164.6621856689453, "r": 547.26862, "b": 211.24705505371094, "coord_origin": "TOPLEFT"}, "confidence": 0.9864240288734436, "cells": [{"id": 9, "text": "It is possible to define, create, and enable multiple permissions on a table. Logically, all of the ", "bbox": {"l": 136.80003, "t": 165.52715999999998, "r": 547.26862, "b": 174.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "permissions are ORed together to form a comprehensive test of the user\u2019s ability to access ", "bbox": {"l": 136.80003, "t": 177.52697999999998, "r": 540.27271, "b": 186.73999000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "the data. A column can have only one mask that is defined over it. From an implementation ", "bbox": {"l": 136.80005, "t": 189.52679, "r": 540.56946, "b": 198.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "standpoint, it does not matter if you create the column masks first or the row permissions first.", "bbox": {"l": 136.80005, "t": 201.52661, "r": 547.26361, "b": 210.73961999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 64.29631042480469, "t": 283.35809326171875, "r": 438.75719999999995, "b": 299.7961730957031, "coord_origin": "TOPLEFT"}, "confidence": 0.9686634540557861, "cells": [{"id": 13, "text": "3.2", "bbox": {"l": 64.800003, "t": 284.2207, "r": 87.228401, "b": 298.9837, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Special registers and built-in global variables", "bbox": {"l": 91.714066, "t": 284.2207, "r": 438.75719999999995, "b": 298.9837, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.81504821777344, "t": 315.3957824707031, "r": 525.50189, "b": 337.70154, "coord_origin": "TOPLEFT"}, "confidence": 0.9780532121658325, "cells": [{"id": 15, "text": "This section describes how you can use special registers and built-in global variables to ", "bbox": {"l": 136.8, "t": 316.48874, "r": 525.50189, "b": 325.70172, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "implement RCAC.", "bbox": {"l": 136.8, "t": 328.48856, "r": 216.11847, "b": 337.70154, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "section_header", "bbox": {"l": 64.23223114013672, "t": 357.744873046875, "r": 204.58528, "b": 370.9036865234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9646314978599548, "cells": [{"id": 17, "text": "3.2.1", "bbox": {"l": 64.800003, "t": 358.37473, "r": 94.390945, "b": 370.36269999999996, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Special registers", "bbox": {"l": 98.089813, "t": 358.37473, "r": 204.58528, "b": 370.36269999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 135.89915466308594, "t": 384.0397644042969, "r": 547.10638, "b": 418.1158447265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9852918386459351, "cells": [{"id": 19, "text": "A special register is a storage area that is defined for an application process by DB2 and is ", "bbox": {"l": 136.8, "t": 384.52872, "r": 539.57452, "b": 393.7417, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "used to store information that can be referenced in SQL statements. A reference to a special ", "bbox": {"l": 136.80002, "t": 396.52853, "r": 547.10638, "b": 405.74152, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "register is a reference to a value that is provided by the current server.", "bbox": {"l": 136.80002, "t": 408.52835, "r": 446.1227999999999, "b": 417.74132999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 136.08819580078125, "t": 429.4395446777344, "r": 544.57635, "b": 475.70154, "coord_origin": "TOPLEFT"}, "confidence": 0.9797153472900391, "cells": [{"id": 22, "text": "IBM DB2 for i supports four different special registers that can be used to identify what user ", "bbox": {"l": 136.80002, "t": 430.48816, "r": 541.74866, "b": 439.70114000000007, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "profiles are relevant to determining object authorities in the current connection to the server. ", "bbox": {"l": 136.80002, "t": 442.48798, "r": 544.57635, "b": 451.70096, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "SQL uses the term ", "bbox": {"l": 136.80002, "t": 454.48779, "r": 223.17113000000003, "b": 463.70078, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "runtime authorization ID", "bbox": {"l": 223.14, "t": 453.965, "r": 333.65698, "b": 464.02267, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": ", which corresponds to a user profile on ", "bbox": {"l": 332.94, "t": 454.48874, "r": 510.13167999999996, "b": 463.70172, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "DB2 for i. Here are the four special registers:", "bbox": {"l": 136.79987, "t": 466.48856, "r": 333.85648, "b": 475.70154, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.6575927734375, "t": 482.5708923339844, "r": 546.9812, "b": 517.0709228515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9826201796531677, "cells": [{"id": 28, "text": "GLYPH", "bbox": {"l": 136.79987, "t": 483.67752, "r": 141.77986, "b": 492.4523, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "USER", "bbox": {"l": 151.2, "t": 483.00497, "r": 177.96045, "b": 493.06265, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": " is the runtime user profile that determines the object authorities for the current ", "bbox": {"l": 178.02, "t": 483.52872, "r": 527.85907, "b": 492.7417, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "connection to the server. It has a data type of VARCHAR(18). This value can be changed ", "bbox": {"l": 151.19972, "t": 495.52853, "r": 546.9812, "b": 504.74152, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "by the SQL statement ", "bbox": {"l": 151.19972, "t": 507.52835, "r": 250.47899, "b": 516.7413300000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "SET SESSION AUTHORIZATION", "bbox": {"l": 250.44016, "t": 507.67773, "r": 375.35846, "b": 516.50232, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": ".", "bbox": {"l": 375.36047, "t": 507.52835, "r": 378.12936, "b": 516.7413300000001, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 135.68878173828125, "t": 523.186767578125, "r": 522.54559, "b": 545.72144, "coord_origin": "TOPLEFT"}, "confidence": 0.9765340089797974, "cells": [{"id": 35, "text": "GLYPH", "bbox": {"l": 136.80055, "t": 524.65753, "r": 141.78055, "b": 533.4323099999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "SESSION_USER", "bbox": {"l": 151.2, "t": 523.98489, "r": 225.65868999999998, "b": 534.0425700000001, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": " is the same as the USER register, except that it has a data type of ", "bbox": {"l": 225.65999999999997, "t": 524.50864, "r": 522.54559, "b": 533.72162, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "VARCHAR(128).", "bbox": {"l": 151.20004, "t": 536.5084400000001, "r": 225.40204, "b": 545.72144, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 135.3015594482422, "t": 552.5537719726562, "r": 547.24835, "b": 634.927978515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9861234426498413, "cells": [{"id": 39, "text": "GLYPH", "bbox": {"l": 136.79988, "t": 553.6974, "r": 141.77988, "b": 562.47215, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "CURRENT USER", "bbox": {"l": 151.2, "t": 553.02498, "r": 229.63782, "b": 563.08266, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": " was added in IBM i 7.2 and is similar to the USER register, but it has ", "bbox": {"l": 229.62, "t": 553.54872, "r": 537.24548, "b": 562.76172, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "one important difference in that it also reports adopted authority. High-level language ", "bbox": {"l": 151.19994, "t": 565.54852, "r": 527.54938, "b": 574.76152, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "programs and SQL routines such as functions, procedures, and triggers can optionally be ", "bbox": {"l": 151.19994, "t": 577.54832, "r": 547.24835, "b": 586.7613200000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "created to run using either the caller\u2019s or the owner\u2019s user profile to determine data ", "bbox": {"l": 151.19994, "t": 589.54813, "r": 518.6712, "b": 598.76112, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "authorities. For example, an SQL procedure can be created to run under the owner\u2019s ", "bbox": {"l": 151.19994, "t": 601.54793, "r": 526.85022, "b": 610.76093, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "authority by specifying ", "bbox": {"l": 151.19994, "t": 613.54773, "r": 252.84670999999997, "b": 622.76073, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "SET OPTION USRPRF=*OWNER", "bbox": {"l": 252.77998, "t": 613.69713, "r": 372.71829, "b": 622.5216800000001, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": ". This special register can also be ", "bbox": {"l": 372.72031, "t": 613.54773, "r": 523.83533, "b": 622.76073, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "referenced as CURRENT_USER. It has a data type of VARCHAR(128).", "bbox": {"l": 151.19995, "t": 625.54753, "r": 467.14914, "b": 634.76053, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "list_item", "bbox": {"l": 135.51412963867188, "t": 641.8392333984375, "r": 547.26508, "b": 700.5236206054688, "coord_origin": "TOPLEFT"}, "confidence": 0.9852910041809082, "cells": [{"id": 50, "text": "GLYPH", "bbox": {"l": 136.79979, "t": 642.67674, "r": 141.77979, "b": 651.45149, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "SYSTEM_USER", "bbox": {"l": 151.2, "t": 642.00488, "r": 222.60513, "b": 652.06256, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": " is the user profile that initiates the connection to the server. It is not used ", "bbox": {"l": 222.60000999999997, "t": 642.52863, "r": 547.23834, "b": 651.74162, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "by RCAC, but is included here for completeness. Many jobs, including the QZDASOINIT ", "bbox": {"l": 151.19975, "t": 654.52843, "r": 541.24725, "b": 663.7414200000001, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "prestarted jobs, initially connect to the server with a default user profile and then change to ", "bbox": {"l": 151.19974, "t": 666.52823, "r": 547.26508, "b": 675.74123, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "use some other user profile. SYSTEM_USER reports this value, typically QUSER for a ", "bbox": {"l": 151.19974, "t": 678.52804, "r": 535.65375, "b": 687.74104, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "QZDASOINIT job. It has a data type of VARCHAR(128).", "bbox": {"l": 151.19974, "t": 690.52785, "r": 397.80933, "b": 699.740852, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 136.05694580078125, "t": 712.0028686523438, "r": 547.20148, "b": 734.2177124023438, "coord_origin": "TOPLEFT"}, "confidence": 0.9718018174171448, "cells": [{"id": 57, "text": "In addition to these four special registers, any of the DB2 special registers can be referenced ", "bbox": {"l": 136.79958, "t": 712.547417, "r": 547.20148, "b": 721.7604220000001, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "as part of the rule text.", "bbox": {"l": 136.79959, "t": 724.547226, "r": 236.50912000000002, "b": 733.760231, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "text", "bbox": {"l": 142.8, "t": 228.60476684570312, "r": 537.48688, "b": 250.70154000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9677881598472595, "cells": [{"id": 59, "text": "Note:", "bbox": {"l": 142.8, "t": 229.48870999999997, "r": 168.33246, "b": 238.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": " If a user does not have permission to access the row, the column mask logic is not ", "bbox": {"l": 168.36035, "t": 229.48870999999997, "r": 537.48688, "b": 238.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "invoked.", "bbox": {"l": 142.8, "t": 241.48852999999997, "r": 179.3741, "b": 250.70154000000002, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 33, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.41429901123047, "t": 754.440673828125, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9157553911209106, "cells": [{"id": 0, "text": "18 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "18"}, {"label": "page_footer", "id": 1, "page_no": 33, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.24517059326172, "t": 754.6806030273438, "r": 334.42142, "b": 763.880859375, "coord_origin": "TOPLEFT"}, "confidence": 0.9524391889572144, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 2, "page_no": 33, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.7600555419922, "t": 70.74359130859375, "r": 547.27368, "b": 153.18722534179688, "coord_origin": "TOPLEFT"}, "confidence": 0.9859952330589294, "cells": [{"id": 2, "text": "When row access control is activated on a table, a default permission is established for that ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 541.60541, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "table. The name of this permission is QIBM_DEFAULT_ _. ", "bbox": {"l": 136.80002, "t": 83.50847999999996, "r": 532.44617, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "This default permission contains a simple piece of logic (0=1) which is never true. The default ", "bbox": {"l": 136.80002, "t": 95.50829999999996, "r": 547.27368, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "permission effectively denies access to every user unless there is a permission defined that ", "bbox": {"l": 136.80003, "t": 107.50811999999996, "r": 543.20679, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "allows access explicitly. If row access control is activated on a table, and there is no ", "bbox": {"l": 136.80003, "t": 119.50792999999999, "r": 507.37884999999994, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "permission that is defined, no one has permission to any rows. All queries against the table ", "bbox": {"l": 136.80003, "t": 131.50775, "r": 541.29761, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "produce an empty set.", "bbox": {"l": 136.80003, "t": 143.50757, "r": 235.74368, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}]}, "text": "When row access control is activated on a table, a default permission is established for that table. The name of this permission is QIBM_DEFAULT_ _. This default permission contains a simple piece of logic (0=1) which is never true. The default permission effectively denies access to every user unless there is a permission defined that allows access explicitly. If row access control is activated on a table, and there is no permission that is defined, no one has permission to any rows. All queries against the table produce an empty set."}, {"label": "text", "id": 3, "page_no": 33, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.96725463867188, "t": 164.6621856689453, "r": 547.26862, "b": 211.24705505371094, "coord_origin": "TOPLEFT"}, "confidence": 0.9864240288734436, "cells": [{"id": 9, "text": "It is possible to define, create, and enable multiple permissions on a table. Logically, all of the ", "bbox": {"l": 136.80003, "t": 165.52715999999998, "r": 547.26862, "b": 174.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "permissions are ORed together to form a comprehensive test of the user\u2019s ability to access ", "bbox": {"l": 136.80003, "t": 177.52697999999998, "r": 540.27271, "b": 186.73999000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "the data. A column can have only one mask that is defined over it. From an implementation ", "bbox": {"l": 136.80005, "t": 189.52679, "r": 540.56946, "b": 198.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "standpoint, it does not matter if you create the column masks first or the row permissions first.", "bbox": {"l": 136.80005, "t": 201.52661, "r": 547.26361, "b": 210.73961999999995, "coord_origin": "TOPLEFT"}}]}, "text": "It is possible to define, create, and enable multiple permissions on a table. Logically, all of the permissions are ORed together to form a comprehensive test of the user\u2019s ability to access the data. A column can have only one mask that is defined over it. From an implementation standpoint, it does not matter if you create the column masks first or the row permissions first."}, {"label": "section_header", "id": 4, "page_no": 33, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.29631042480469, "t": 283.35809326171875, "r": 438.75719999999995, "b": 299.7961730957031, "coord_origin": "TOPLEFT"}, "confidence": 0.9686634540557861, "cells": [{"id": 13, "text": "3.2", "bbox": {"l": 64.800003, "t": 284.2207, "r": 87.228401, "b": 298.9837, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Special registers and built-in global variables", "bbox": {"l": 91.714066, "t": 284.2207, "r": 438.75719999999995, "b": 298.9837, "coord_origin": "TOPLEFT"}}]}, "text": "3.2 Special registers and built-in global variables"}, {"label": "text", "id": 5, "page_no": 33, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.81504821777344, "t": 315.3957824707031, "r": 525.50189, "b": 337.70154, "coord_origin": "TOPLEFT"}, "confidence": 0.9780532121658325, "cells": [{"id": 15, "text": "This section describes how you can use special registers and built-in global variables to ", "bbox": {"l": 136.8, "t": 316.48874, "r": 525.50189, "b": 325.70172, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "implement RCAC.", "bbox": {"l": 136.8, "t": 328.48856, "r": 216.11847, "b": 337.70154, "coord_origin": "TOPLEFT"}}]}, "text": "This section describes how you can use special registers and built-in global variables to implement RCAC."}, {"label": "section_header", "id": 6, "page_no": 33, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 64.23223114013672, "t": 357.744873046875, "r": 204.58528, "b": 370.9036865234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9646314978599548, "cells": [{"id": 17, "text": "3.2.1", "bbox": {"l": 64.800003, "t": 358.37473, "r": 94.390945, "b": 370.36269999999996, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Special registers", "bbox": {"l": 98.089813, "t": 358.37473, "r": 204.58528, "b": 370.36269999999996, "coord_origin": "TOPLEFT"}}]}, "text": "3.2.1 Special registers"}, {"label": "text", "id": 7, "page_no": 33, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.89915466308594, "t": 384.0397644042969, "r": 547.10638, "b": 418.1158447265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9852918386459351, "cells": [{"id": 19, "text": "A special register is a storage area that is defined for an application process by DB2 and is ", "bbox": {"l": 136.8, "t": 384.52872, "r": 539.57452, "b": 393.7417, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "used to store information that can be referenced in SQL statements. A reference to a special ", "bbox": {"l": 136.80002, "t": 396.52853, "r": 547.10638, "b": 405.74152, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "register is a reference to a value that is provided by the current server.", "bbox": {"l": 136.80002, "t": 408.52835, "r": 446.1227999999999, "b": 417.74132999999995, "coord_origin": "TOPLEFT"}}]}, "text": "A special register is a storage area that is defined for an application process by DB2 and is used to store information that can be referenced in SQL statements. A reference to a special register is a reference to a value that is provided by the current server."}, {"label": "text", "id": 8, "page_no": 33, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.08819580078125, "t": 429.4395446777344, "r": 544.57635, "b": 475.70154, "coord_origin": "TOPLEFT"}, "confidence": 0.9797153472900391, "cells": [{"id": 22, "text": "IBM DB2 for i supports four different special registers that can be used to identify what user ", "bbox": {"l": 136.80002, "t": 430.48816, "r": 541.74866, "b": 439.70114000000007, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "profiles are relevant to determining object authorities in the current connection to the server. ", "bbox": {"l": 136.80002, "t": 442.48798, "r": 544.57635, "b": 451.70096, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "SQL uses the term ", "bbox": {"l": 136.80002, "t": 454.48779, "r": 223.17113000000003, "b": 463.70078, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "runtime authorization ID", "bbox": {"l": 223.14, "t": 453.965, "r": 333.65698, "b": 464.02267, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": ", which corresponds to a user profile on ", "bbox": {"l": 332.94, "t": 454.48874, "r": 510.13167999999996, "b": 463.70172, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "DB2 for i. Here are the four special registers:", "bbox": {"l": 136.79987, "t": 466.48856, "r": 333.85648, "b": 475.70154, "coord_origin": "TOPLEFT"}}]}, "text": "IBM DB2 for i supports four different special registers that can be used to identify what user profiles are relevant to determining object authorities in the current connection to the server. SQL uses the term runtime authorization ID , which corresponds to a user profile on DB2 for i. Here are the four special registers:"}, {"label": "list_item", "id": 9, "page_no": 33, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.6575927734375, "t": 482.5708923339844, "r": 546.9812, "b": 517.0709228515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9826201796531677, "cells": [{"id": 28, "text": "GLYPH", "bbox": {"l": 136.79987, "t": 483.67752, "r": 141.77986, "b": 492.4523, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "USER", "bbox": {"l": 151.2, "t": 483.00497, "r": 177.96045, "b": 493.06265, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": " is the runtime user profile that determines the object authorities for the current ", "bbox": {"l": 178.02, "t": 483.52872, "r": 527.85907, "b": 492.7417, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "connection to the server. It has a data type of VARCHAR(18). This value can be changed ", "bbox": {"l": 151.19972, "t": 495.52853, "r": 546.9812, "b": 504.74152, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "by the SQL statement ", "bbox": {"l": 151.19972, "t": 507.52835, "r": 250.47899, "b": 516.7413300000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "SET SESSION AUTHORIZATION", "bbox": {"l": 250.44016, "t": 507.67773, "r": 375.35846, "b": 516.50232, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": ".", "bbox": {"l": 375.36047, "t": 507.52835, "r": 378.12936, "b": 516.7413300000001, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH USER is the runtime user profile that determines the object authorities for the current connection to the server. It has a data type of VARCHAR(18). This value can be changed by the SQL statement SET SESSION AUTHORIZATION ."}, {"label": "list_item", "id": 10, "page_no": 33, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.68878173828125, "t": 523.186767578125, "r": 522.54559, "b": 545.72144, "coord_origin": "TOPLEFT"}, "confidence": 0.9765340089797974, "cells": [{"id": 35, "text": "GLYPH", "bbox": {"l": 136.80055, "t": 524.65753, "r": 141.78055, "b": 533.4323099999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "SESSION_USER", "bbox": {"l": 151.2, "t": 523.98489, "r": 225.65868999999998, "b": 534.0425700000001, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": " is the same as the USER register, except that it has a data type of ", "bbox": {"l": 225.65999999999997, "t": 524.50864, "r": 522.54559, "b": 533.72162, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "VARCHAR(128).", "bbox": {"l": 151.20004, "t": 536.5084400000001, "r": 225.40204, "b": 545.72144, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH SESSION_USER is the same as the USER register, except that it has a data type of VARCHAR(128)."}, {"label": "list_item", "id": 11, "page_no": 33, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.3015594482422, "t": 552.5537719726562, "r": 547.24835, "b": 634.927978515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9861234426498413, "cells": [{"id": 39, "text": "GLYPH", "bbox": {"l": 136.79988, "t": 553.6974, "r": 141.77988, "b": 562.47215, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "CURRENT USER", "bbox": {"l": 151.2, "t": 553.02498, "r": 229.63782, "b": 563.08266, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": " was added in IBM i 7.2 and is similar to the USER register, but it has ", "bbox": {"l": 229.62, "t": 553.54872, "r": 537.24548, "b": 562.76172, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "one important difference in that it also reports adopted authority. High-level language ", "bbox": {"l": 151.19994, "t": 565.54852, "r": 527.54938, "b": 574.76152, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "programs and SQL routines such as functions, procedures, and triggers can optionally be ", "bbox": {"l": 151.19994, "t": 577.54832, "r": 547.24835, "b": 586.7613200000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "created to run using either the caller\u2019s or the owner\u2019s user profile to determine data ", "bbox": {"l": 151.19994, "t": 589.54813, "r": 518.6712, "b": 598.76112, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "authorities. For example, an SQL procedure can be created to run under the owner\u2019s ", "bbox": {"l": 151.19994, "t": 601.54793, "r": 526.85022, "b": 610.76093, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "authority by specifying ", "bbox": {"l": 151.19994, "t": 613.54773, "r": 252.84670999999997, "b": 622.76073, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "SET OPTION USRPRF=*OWNER", "bbox": {"l": 252.77998, "t": 613.69713, "r": 372.71829, "b": 622.5216800000001, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": ". This special register can also be ", "bbox": {"l": 372.72031, "t": 613.54773, "r": 523.83533, "b": 622.76073, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "referenced as CURRENT_USER. It has a data type of VARCHAR(128).", "bbox": {"l": 151.19995, "t": 625.54753, "r": 467.14914, "b": 634.76053, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH CURRENT USER was added in IBM i 7.2 and is similar to the USER register, but it has one important difference in that it also reports adopted authority. High-level language programs and SQL routines such as functions, procedures, and triggers can optionally be created to run using either the caller\u2019s or the owner\u2019s user profile to determine data authorities. For example, an SQL procedure can be created to run under the owner\u2019s authority by specifying SET OPTION USRPRF=*OWNER . This special register can also be referenced as CURRENT_USER. It has a data type of VARCHAR(128)."}, {"label": "list_item", "id": 12, "page_no": 33, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 135.51412963867188, "t": 641.8392333984375, "r": 547.26508, "b": 700.5236206054688, "coord_origin": "TOPLEFT"}, "confidence": 0.9852910041809082, "cells": [{"id": 50, "text": "GLYPH", "bbox": {"l": 136.79979, "t": 642.67674, "r": 141.77979, "b": 651.45149, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "SYSTEM_USER", "bbox": {"l": 151.2, "t": 642.00488, "r": 222.60513, "b": 652.06256, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": " is the user profile that initiates the connection to the server. It is not used ", "bbox": {"l": 222.60000999999997, "t": 642.52863, "r": 547.23834, "b": 651.74162, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "by RCAC, but is included here for completeness. Many jobs, including the QZDASOINIT ", "bbox": {"l": 151.19975, "t": 654.52843, "r": 541.24725, "b": 663.7414200000001, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "prestarted jobs, initially connect to the server with a default user profile and then change to ", "bbox": {"l": 151.19974, "t": 666.52823, "r": 547.26508, "b": 675.74123, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "use some other user profile. SYSTEM_USER reports this value, typically QUSER for a ", "bbox": {"l": 151.19974, "t": 678.52804, "r": 535.65375, "b": 687.74104, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "QZDASOINIT job. It has a data type of VARCHAR(128).", "bbox": {"l": 151.19974, "t": 690.52785, "r": 397.80933, "b": 699.740852, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH SYSTEM_USER is the user profile that initiates the connection to the server. It is not used by RCAC, but is included here for completeness. Many jobs, including the QZDASOINIT prestarted jobs, initially connect to the server with a default user profile and then change to use some other user profile. SYSTEM_USER reports this value, typically QUSER for a QZDASOINIT job. It has a data type of VARCHAR(128)."}, {"label": "text", "id": 13, "page_no": 33, "cluster": {"id": 13, "label": "text", "bbox": {"l": 136.05694580078125, "t": 712.0028686523438, "r": 547.20148, "b": 734.2177124023438, "coord_origin": "TOPLEFT"}, "confidence": 0.9718018174171448, "cells": [{"id": 57, "text": "In addition to these four special registers, any of the DB2 special registers can be referenced ", "bbox": {"l": 136.79958, "t": 712.547417, "r": 547.20148, "b": 721.7604220000001, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "as part of the rule text.", "bbox": {"l": 136.79959, "t": 724.547226, "r": 236.50912000000002, "b": 733.760231, "coord_origin": "TOPLEFT"}}]}, "text": "In addition to these four special registers, any of the DB2 special registers can be referenced as part of the rule text."}, {"label": "text", "id": 14, "page_no": 33, "cluster": {"id": 14, "label": "text", "bbox": {"l": 142.8, "t": 228.60476684570312, "r": 537.48688, "b": 250.70154000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9677881598472595, "cells": [{"id": 59, "text": "Note:", "bbox": {"l": 142.8, "t": 229.48870999999997, "r": 168.33246, "b": 238.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": " If a user does not have permission to access the row, the column mask logic is not ", "bbox": {"l": 168.36035, "t": 229.48870999999997, "r": 537.48688, "b": 238.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "invoked.", "bbox": {"l": 142.8, "t": 241.48852999999997, "r": 179.3741, "b": 250.70154000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Note: If a user does not have permission to access the row, the column mask logic is not invoked."}], "body": [{"label": "text", "id": 2, "page_no": 33, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.7600555419922, "t": 70.74359130859375, "r": 547.27368, "b": 153.18722534179688, "coord_origin": "TOPLEFT"}, "confidence": 0.9859952330589294, "cells": [{"id": 2, "text": "When row access control is activated on a table, a default permission is established for that ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 541.60541, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "table. The name of this permission is QIBM_DEFAULT_ _. ", "bbox": {"l": 136.80002, "t": 83.50847999999996, "r": 532.44617, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "This default permission contains a simple piece of logic (0=1) which is never true. The default ", "bbox": {"l": 136.80002, "t": 95.50829999999996, "r": 547.27368, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "permission effectively denies access to every user unless there is a permission defined that ", "bbox": {"l": 136.80003, "t": 107.50811999999996, "r": 543.20679, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "allows access explicitly. If row access control is activated on a table, and there is no ", "bbox": {"l": 136.80003, "t": 119.50792999999999, "r": 507.37884999999994, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "permission that is defined, no one has permission to any rows. All queries against the table ", "bbox": {"l": 136.80003, "t": 131.50775, "r": 541.29761, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "produce an empty set.", "bbox": {"l": 136.80003, "t": 143.50757, "r": 235.74368, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}]}, "text": "When row access control is activated on a table, a default permission is established for that table. The name of this permission is QIBM_DEFAULT_ _. This default permission contains a simple piece of logic (0=1) which is never true. The default permission effectively denies access to every user unless there is a permission defined that allows access explicitly. If row access control is activated on a table, and there is no permission that is defined, no one has permission to any rows. All queries against the table produce an empty set."}, {"label": "text", "id": 3, "page_no": 33, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.96725463867188, "t": 164.6621856689453, "r": 547.26862, "b": 211.24705505371094, "coord_origin": "TOPLEFT"}, "confidence": 0.9864240288734436, "cells": [{"id": 9, "text": "It is possible to define, create, and enable multiple permissions on a table. Logically, all of the ", "bbox": {"l": 136.80003, "t": 165.52715999999998, "r": 547.26862, "b": 174.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "permissions are ORed together to form a comprehensive test of the user\u2019s ability to access ", "bbox": {"l": 136.80003, "t": 177.52697999999998, "r": 540.27271, "b": 186.73999000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "the data. A column can have only one mask that is defined over it. From an implementation ", "bbox": {"l": 136.80005, "t": 189.52679, "r": 540.56946, "b": 198.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "standpoint, it does not matter if you create the column masks first or the row permissions first.", "bbox": {"l": 136.80005, "t": 201.52661, "r": 547.26361, "b": 210.73961999999995, "coord_origin": "TOPLEFT"}}]}, "text": "It is possible to define, create, and enable multiple permissions on a table. Logically, all of the permissions are ORed together to form a comprehensive test of the user\u2019s ability to access the data. A column can have only one mask that is defined over it. From an implementation standpoint, it does not matter if you create the column masks first or the row permissions first."}, {"label": "section_header", "id": 4, "page_no": 33, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.29631042480469, "t": 283.35809326171875, "r": 438.75719999999995, "b": 299.7961730957031, "coord_origin": "TOPLEFT"}, "confidence": 0.9686634540557861, "cells": [{"id": 13, "text": "3.2", "bbox": {"l": 64.800003, "t": 284.2207, "r": 87.228401, "b": 298.9837, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Special registers and built-in global variables", "bbox": {"l": 91.714066, "t": 284.2207, "r": 438.75719999999995, "b": 298.9837, "coord_origin": "TOPLEFT"}}]}, "text": "3.2 Special registers and built-in global variables"}, {"label": "text", "id": 5, "page_no": 33, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.81504821777344, "t": 315.3957824707031, "r": 525.50189, "b": 337.70154, "coord_origin": "TOPLEFT"}, "confidence": 0.9780532121658325, "cells": [{"id": 15, "text": "This section describes how you can use special registers and built-in global variables to ", "bbox": {"l": 136.8, "t": 316.48874, "r": 525.50189, "b": 325.70172, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "implement RCAC.", "bbox": {"l": 136.8, "t": 328.48856, "r": 216.11847, "b": 337.70154, "coord_origin": "TOPLEFT"}}]}, "text": "This section describes how you can use special registers and built-in global variables to implement RCAC."}, {"label": "section_header", "id": 6, "page_no": 33, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 64.23223114013672, "t": 357.744873046875, "r": 204.58528, "b": 370.9036865234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9646314978599548, "cells": [{"id": 17, "text": "3.2.1", "bbox": {"l": 64.800003, "t": 358.37473, "r": 94.390945, "b": 370.36269999999996, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Special registers", "bbox": {"l": 98.089813, "t": 358.37473, "r": 204.58528, "b": 370.36269999999996, "coord_origin": "TOPLEFT"}}]}, "text": "3.2.1 Special registers"}, {"label": "text", "id": 7, "page_no": 33, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.89915466308594, "t": 384.0397644042969, "r": 547.10638, "b": 418.1158447265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9852918386459351, "cells": [{"id": 19, "text": "A special register is a storage area that is defined for an application process by DB2 and is ", "bbox": {"l": 136.8, "t": 384.52872, "r": 539.57452, "b": 393.7417, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "used to store information that can be referenced in SQL statements. A reference to a special ", "bbox": {"l": 136.80002, "t": 396.52853, "r": 547.10638, "b": 405.74152, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "register is a reference to a value that is provided by the current server.", "bbox": {"l": 136.80002, "t": 408.52835, "r": 446.1227999999999, "b": 417.74132999999995, "coord_origin": "TOPLEFT"}}]}, "text": "A special register is a storage area that is defined for an application process by DB2 and is used to store information that can be referenced in SQL statements. A reference to a special register is a reference to a value that is provided by the current server."}, {"label": "text", "id": 8, "page_no": 33, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.08819580078125, "t": 429.4395446777344, "r": 544.57635, "b": 475.70154, "coord_origin": "TOPLEFT"}, "confidence": 0.9797153472900391, "cells": [{"id": 22, "text": "IBM DB2 for i supports four different special registers that can be used to identify what user ", "bbox": {"l": 136.80002, "t": 430.48816, "r": 541.74866, "b": 439.70114000000007, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "profiles are relevant to determining object authorities in the current connection to the server. ", "bbox": {"l": 136.80002, "t": 442.48798, "r": 544.57635, "b": 451.70096, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "SQL uses the term ", "bbox": {"l": 136.80002, "t": 454.48779, "r": 223.17113000000003, "b": 463.70078, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "runtime authorization ID", "bbox": {"l": 223.14, "t": 453.965, "r": 333.65698, "b": 464.02267, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": ", which corresponds to a user profile on ", "bbox": {"l": 332.94, "t": 454.48874, "r": 510.13167999999996, "b": 463.70172, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "DB2 for i. Here are the four special registers:", "bbox": {"l": 136.79987, "t": 466.48856, "r": 333.85648, "b": 475.70154, "coord_origin": "TOPLEFT"}}]}, "text": "IBM DB2 for i supports four different special registers that can be used to identify what user profiles are relevant to determining object authorities in the current connection to the server. SQL uses the term runtime authorization ID , which corresponds to a user profile on DB2 for i. Here are the four special registers:"}, {"label": "list_item", "id": 9, "page_no": 33, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.6575927734375, "t": 482.5708923339844, "r": 546.9812, "b": 517.0709228515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9826201796531677, "cells": [{"id": 28, "text": "GLYPH", "bbox": {"l": 136.79987, "t": 483.67752, "r": 141.77986, "b": 492.4523, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "USER", "bbox": {"l": 151.2, "t": 483.00497, "r": 177.96045, "b": 493.06265, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": " is the runtime user profile that determines the object authorities for the current ", "bbox": {"l": 178.02, "t": 483.52872, "r": 527.85907, "b": 492.7417, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "connection to the server. It has a data type of VARCHAR(18). This value can be changed ", "bbox": {"l": 151.19972, "t": 495.52853, "r": 546.9812, "b": 504.74152, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "by the SQL statement ", "bbox": {"l": 151.19972, "t": 507.52835, "r": 250.47899, "b": 516.7413300000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "SET SESSION AUTHORIZATION", "bbox": {"l": 250.44016, "t": 507.67773, "r": 375.35846, "b": 516.50232, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": ".", "bbox": {"l": 375.36047, "t": 507.52835, "r": 378.12936, "b": 516.7413300000001, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH USER is the runtime user profile that determines the object authorities for the current connection to the server. It has a data type of VARCHAR(18). This value can be changed by the SQL statement SET SESSION AUTHORIZATION ."}, {"label": "list_item", "id": 10, "page_no": 33, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.68878173828125, "t": 523.186767578125, "r": 522.54559, "b": 545.72144, "coord_origin": "TOPLEFT"}, "confidence": 0.9765340089797974, "cells": [{"id": 35, "text": "GLYPH", "bbox": {"l": 136.80055, "t": 524.65753, "r": 141.78055, "b": 533.4323099999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "SESSION_USER", "bbox": {"l": 151.2, "t": 523.98489, "r": 225.65868999999998, "b": 534.0425700000001, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": " is the same as the USER register, except that it has a data type of ", "bbox": {"l": 225.65999999999997, "t": 524.50864, "r": 522.54559, "b": 533.72162, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "VARCHAR(128).", "bbox": {"l": 151.20004, "t": 536.5084400000001, "r": 225.40204, "b": 545.72144, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH SESSION_USER is the same as the USER register, except that it has a data type of VARCHAR(128)."}, {"label": "list_item", "id": 11, "page_no": 33, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.3015594482422, "t": 552.5537719726562, "r": 547.24835, "b": 634.927978515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9861234426498413, "cells": [{"id": 39, "text": "GLYPH", "bbox": {"l": 136.79988, "t": 553.6974, "r": 141.77988, "b": 562.47215, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "CURRENT USER", "bbox": {"l": 151.2, "t": 553.02498, "r": 229.63782, "b": 563.08266, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": " was added in IBM i 7.2 and is similar to the USER register, but it has ", "bbox": {"l": 229.62, "t": 553.54872, "r": 537.24548, "b": 562.76172, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "one important difference in that it also reports adopted authority. High-level language ", "bbox": {"l": 151.19994, "t": 565.54852, "r": 527.54938, "b": 574.76152, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "programs and SQL routines such as functions, procedures, and triggers can optionally be ", "bbox": {"l": 151.19994, "t": 577.54832, "r": 547.24835, "b": 586.7613200000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "created to run using either the caller\u2019s or the owner\u2019s user profile to determine data ", "bbox": {"l": 151.19994, "t": 589.54813, "r": 518.6712, "b": 598.76112, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "authorities. For example, an SQL procedure can be created to run under the owner\u2019s ", "bbox": {"l": 151.19994, "t": 601.54793, "r": 526.85022, "b": 610.76093, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "authority by specifying ", "bbox": {"l": 151.19994, "t": 613.54773, "r": 252.84670999999997, "b": 622.76073, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "SET OPTION USRPRF=*OWNER", "bbox": {"l": 252.77998, "t": 613.69713, "r": 372.71829, "b": 622.5216800000001, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": ". This special register can also be ", "bbox": {"l": 372.72031, "t": 613.54773, "r": 523.83533, "b": 622.76073, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "referenced as CURRENT_USER. It has a data type of VARCHAR(128).", "bbox": {"l": 151.19995, "t": 625.54753, "r": 467.14914, "b": 634.76053, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH CURRENT USER was added in IBM i 7.2 and is similar to the USER register, but it has one important difference in that it also reports adopted authority. High-level language programs and SQL routines such as functions, procedures, and triggers can optionally be created to run using either the caller\u2019s or the owner\u2019s user profile to determine data authorities. For example, an SQL procedure can be created to run under the owner\u2019s authority by specifying SET OPTION USRPRF=*OWNER . This special register can also be referenced as CURRENT_USER. It has a data type of VARCHAR(128)."}, {"label": "list_item", "id": 12, "page_no": 33, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 135.51412963867188, "t": 641.8392333984375, "r": 547.26508, "b": 700.5236206054688, "coord_origin": "TOPLEFT"}, "confidence": 0.9852910041809082, "cells": [{"id": 50, "text": "GLYPH", "bbox": {"l": 136.79979, "t": 642.67674, "r": 141.77979, "b": 651.45149, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "SYSTEM_USER", "bbox": {"l": 151.2, "t": 642.00488, "r": 222.60513, "b": 652.06256, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": " is the user profile that initiates the connection to the server. It is not used ", "bbox": {"l": 222.60000999999997, "t": 642.52863, "r": 547.23834, "b": 651.74162, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "by RCAC, but is included here for completeness. Many jobs, including the QZDASOINIT ", "bbox": {"l": 151.19975, "t": 654.52843, "r": 541.24725, "b": 663.7414200000001, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "prestarted jobs, initially connect to the server with a default user profile and then change to ", "bbox": {"l": 151.19974, "t": 666.52823, "r": 547.26508, "b": 675.74123, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "use some other user profile. SYSTEM_USER reports this value, typically QUSER for a ", "bbox": {"l": 151.19974, "t": 678.52804, "r": 535.65375, "b": 687.74104, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "QZDASOINIT job. It has a data type of VARCHAR(128).", "bbox": {"l": 151.19974, "t": 690.52785, "r": 397.80933, "b": 699.740852, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH SYSTEM_USER is the user profile that initiates the connection to the server. It is not used by RCAC, but is included here for completeness. Many jobs, including the QZDASOINIT prestarted jobs, initially connect to the server with a default user profile and then change to use some other user profile. SYSTEM_USER reports this value, typically QUSER for a QZDASOINIT job. It has a data type of VARCHAR(128)."}, {"label": "text", "id": 13, "page_no": 33, "cluster": {"id": 13, "label": "text", "bbox": {"l": 136.05694580078125, "t": 712.0028686523438, "r": 547.20148, "b": 734.2177124023438, "coord_origin": "TOPLEFT"}, "confidence": 0.9718018174171448, "cells": [{"id": 57, "text": "In addition to these four special registers, any of the DB2 special registers can be referenced ", "bbox": {"l": 136.79958, "t": 712.547417, "r": 547.20148, "b": 721.7604220000001, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "as part of the rule text.", "bbox": {"l": 136.79959, "t": 724.547226, "r": 236.50912000000002, "b": 733.760231, "coord_origin": "TOPLEFT"}}]}, "text": "In addition to these four special registers, any of the DB2 special registers can be referenced as part of the rule text."}, {"label": "text", "id": 14, "page_no": 33, "cluster": {"id": 14, "label": "text", "bbox": {"l": 142.8, "t": 228.60476684570312, "r": 537.48688, "b": 250.70154000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9677881598472595, "cells": [{"id": 59, "text": "Note:", "bbox": {"l": 142.8, "t": 229.48870999999997, "r": 168.33246, "b": 238.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": " If a user does not have permission to access the row, the column mask logic is not ", "bbox": {"l": 168.36035, "t": 229.48870999999997, "r": 537.48688, "b": 238.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "invoked.", "bbox": {"l": 142.8, "t": 241.48852999999997, "r": 179.3741, "b": 250.70154000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Note: If a user does not have permission to access the row, the column mask logic is not invoked."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 33, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.41429901123047, "t": 754.440673828125, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9157553911209106, "cells": [{"id": 0, "text": "18 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "18"}, {"label": "page_footer", "id": 1, "page_no": 33, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.24517059326172, "t": 754.6806030273438, "r": 334.42142, "b": 763.880859375, "coord_origin": "TOPLEFT"}, "confidence": 0.9524391889572144, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 34, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "19", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Table 3-1 summarizes these special registers and their values.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 412.20758, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Table 3-1 Special registers and their corresponding values", "bbox": {"l": 136.8, "t": 93.49805000000003, "r": 372.60364, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 3-5 shows the difference in the special register values when an adopted authority is ", "bbox": {"l": 136.8, "t": 214.48870999999997, "r": 538.4939, "b": 223.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "used:", "bbox": {"l": 136.8, "t": 226.48852999999997, "r": 161.20995, "b": 235.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 243.67749000000003, "r": 141.78, "b": 252.45227, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "A user connects to the server using the user profile ALICE.", "bbox": {"l": 151.20016, "t": 243.52808000000005, "r": 411.36139, "b": 252.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "GLYPH", "bbox": {"l": 136.8, "t": 260.65729, "r": 141.78, "b": 269.43206999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "USER and CURRENT USER initially have the same value of ALICE.", "bbox": {"l": 151.20016, "t": 260.50787, "r": 453.2580899999999, "b": 269.72089000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "GLYPH", "bbox": {"l": 136.8, "t": 277.63707999999997, "r": 141.78, "b": 286.41187, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ALICE calls an SQL procedure that is named proc1, which is owned by user profile JOE ", "bbox": {"l": 151.20016, "t": 277.48767, "r": 541.44983, "b": 286.70068, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "and was created to adopt JOE\u2019s authority when it is called.", "bbox": {"l": 151.20016, "t": 289.4875200000001, "r": 409.82953, "b": 298.7005, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 306.67647999999997, "r": 141.78, "b": 315.45126000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "While the procedure is running, the special register USER still contains the value of ALICE ", "bbox": {"l": 151.20016, "t": 306.5271, "r": 547.21674, "b": 315.74008, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "because it excludes any adopted authority. The special register CURRENT USER ", "bbox": {"l": 151.20117, "t": 318.52691999999996, "r": 514.32971, "b": 327.7399, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "contains the value of JOE because it includes any adopted authority.", "bbox": {"l": 151.20117, "t": 330.52673, "r": 453.3249200000001, "b": 339.73972, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "GLYPH", "bbox": {"l": 136.80101, "t": 347.65591, "r": 141.78101, "b": 356.43069, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "When proc1 ends, the session reverts to its original state with both USER and CURRENT ", "bbox": {"l": 151.20117, "t": 347.50653, "r": 547.35406, "b": 356.71950999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "USER having the value of ALICE.", "bbox": {"l": 151.20117, "t": 359.50635, "r": 299.57532, "b": 368.71933000000007, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Figure 3-5 Special registers and adopted authority", "bbox": {"l": 136.8, "t": 596.7179, "r": 341.25662, "b": 605.04291, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "3.2.2", "bbox": {"l": 64.800003, "t": 625.55472, "r": 94.20356, "b": 637.54272, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Built-in global variables", "bbox": {"l": 97.879005, "t": 625.55472, "r": 247.02536, "b": 637.54272, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Built-in global variables are provided with the database manager and are used in SQL ", "bbox": {"l": 136.8, "t": 651.70872, "r": 518.00116, "b": 660.92172, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "statements to retrieve scalar values that are associated with the variables.", "bbox": {"l": 136.8, "t": 663.70853, "r": 462.81759999999997, "b": 672.92153, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "IBM DB2 for i supports nine different built-in global variables that are read only and ", "bbox": {"l": 136.8, "t": 685.7281, "r": 504.44669, "b": 694.941101, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "maintained by the system. These global variables can be used to identify attributes of the ", "bbox": {"l": 136.8, "t": 697.727905, "r": 532.3385, "b": 706.94091, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "database connection and used as part of the RCAC logic.", "bbox": {"l": 136.8, "t": 709.727715, "r": 391.38257, "b": 718.94072, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Special register", "bbox": {"l": 142.8, "t": 110.53801999999985, "r": 209.67091, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Corresponding value", "bbox": {"l": 230.18912000000003, "t": 110.53801999999985, "r": 319.93527, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "USER or", "bbox": {"l": 142.80002, "t": 129.49834999999996, "r": 178.26361, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "SESSION_USER", "bbox": {"l": 142.80002, "t": 140.53864, "r": 212.70122, "b": 148.86359000000004, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "The effective user of the thread excluding adopted authority.", "bbox": {"l": 230.21973000000003, "t": 129.49834999999996, "r": 467.99069000000003, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "CURRENT_USER", "bbox": {"l": 142.80003, "t": 159.55835000000002, "r": 216.63962999999998, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "The effective user of the thread including adopted authority. When no adopted ", "bbox": {"l": 230.19814, "t": 159.55835000000002, "r": 535.65082, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "authority is present, this has the same value as USER.", "bbox": {"l": 230.22061, "t": 170.53832999999997, "r": 447.36533, "b": 178.86328000000003, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "SYSTEM_USER", "bbox": {"l": 142.8009, "t": 189.55804, "r": 209.7357, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "The authorization ID that initiated the connection.", "bbox": {"l": 230.2449, "t": 189.55804, "r": 425.64569, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "SignedonasALICE", "bbox": {"l": 140.7323, "t": 386.98453, "r": 218.71170000000004, "b": 395.49527, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Signed on as ALICE", "bbox": {"l": 140.7323, "t": 386.98453, "r": 216.40009, "b": 395.49527, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "USER = ALICE", "bbox": {"l": 138.476, "t": 410.87441999999993, "r": 191.70256, "b": 419.38516, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "CURRENT USER = ALICE", "bbox": {"l": 138.476, "t": 422.81934, "r": 232.56117, "b": 431.33008, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CALL proc1", "bbox": {"l": 138.476, "t": 446.70923000000005, "r": 183.26944, "b": 455.21997, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "P1", "bbox": {"l": 148.4301, "t": 473.58524, "r": 184.17328, "b": 482.09598, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Proc1:", "bbox": {"l": 148.4301, "t": 473.58524, "r": 174.05859, "b": 482.09598, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Owner = JOE", "bbox": {"l": 157.52185, "t": 485.53015, "r": 209.103, "b": 494.04089, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "SET OPTION USRPRF=*OWNER", "bbox": {"l": 157.52185, "t": 497.47507, "r": 281.68927, "b": 505.98581, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "USER = ALICE", "bbox": {"l": 148.4301, "t": 521.36493, "r": 201.65666, "b": 529.87567, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "CURRENT USER = JOE", "bbox": {"l": 148.4301, "t": 533.30984, "r": 234.57686999999999, "b": 541.82059, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "USER = ALICE", "bbox": {"l": 138.476, "t": 566.15842, "r": 191.70256, "b": 574.66917, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "CURRENT USER = ALICE", "bbox": {"l": 138.476, "t": 578.10333, "r": 232.56117, "b": 586.61409, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 344.5751037597656, "t": 754.7044067382812, "r": 523.60162, "b": 764.0689086914062, "coord_origin": "TOPLEFT"}, "confidence": 0.9557498693466187, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 536.0416870117188, "t": 754.2877197265625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9130511283874512, "cells": [{"id": 1, "text": "19", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "caption", "bbox": {"l": 135.82176208496094, "t": 70.68284606933594, "r": 412.20758, "b": 80.81541442871094, "coord_origin": "TOPLEFT"}, "confidence": 0.7875164747238159, "cells": [{"id": 2, "text": "Table 3-1 summarizes these special registers and their values.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 412.20758, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.8, "t": 92.7220458984375, "r": 372.7710876464844, "b": 101.9398422241211, "coord_origin": "TOPLEFT"}, "confidence": 0.9253708720207214, "cells": [{"id": 3, "text": "Table 3-1 Special registers and their corresponding values", "bbox": {"l": 136.8, "t": 93.49805000000003, "r": 372.60364, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 136.3730926513672, "t": 213.3656463623047, "r": 538.4939, "b": 235.70154000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9466656446456909, "cells": [{"id": 4, "text": "Figure 3-5 shows the difference in the special register values when an adopted authority is ", "bbox": {"l": 136.8, "t": 214.48870999999997, "r": 538.4939, "b": 223.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "used:", "bbox": {"l": 136.8, "t": 226.48852999999997, "r": 161.20995, "b": 235.70154000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 135.5663299560547, "t": 242.545654296875, "r": 411.36139, "b": 252.77870178222656, "coord_origin": "TOPLEFT"}, "confidence": 0.9504424333572388, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 243.67749000000003, "r": 141.78, "b": 252.45227, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "A user connects to the server using the user profile ALICE.", "bbox": {"l": 151.20016, "t": 243.52808000000005, "r": 411.36139, "b": 252.74108999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.5452880859375, "t": 259.2925720214844, "r": 453.2580899999999, "b": 269.72089000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9445974230766296, "cells": [{"id": 8, "text": "GLYPH", "bbox": {"l": 136.8, "t": 260.65729, "r": 141.78, "b": 269.43206999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "USER and CURRENT USER initially have the same value of ALICE.", "bbox": {"l": 151.20016, "t": 260.50787, "r": 453.2580899999999, "b": 269.72089000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.3970947265625, "t": 276.51788330078125, "r": 541.44983, "b": 298.98980712890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9742953777313232, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.8, "t": 277.63707999999997, "r": 141.78, "b": 286.41187, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ALICE calls an SQL procedure that is named proc1, which is owned by user profile JOE ", "bbox": {"l": 151.20016, "t": 277.48767, "r": 541.44983, "b": 286.70068, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "and was created to adopt JOE\u2019s authority when it is called.", "bbox": {"l": 151.20016, "t": 289.4875200000001, "r": 409.82953, "b": 298.7005, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.5677947998047, "t": 305.81854248046875, "r": 547.21674, "b": 340.5078125, "coord_origin": "TOPLEFT"}, "confidence": 0.981132447719574, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 306.67647999999997, "r": 141.78, "b": 315.45126000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "While the procedure is running, the special register USER still contains the value of ALICE ", "bbox": {"l": 151.20016, "t": 306.5271, "r": 547.21674, "b": 315.74008, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "because it excludes any adopted authority. The special register CURRENT USER ", "bbox": {"l": 151.20117, "t": 318.52691999999996, "r": 514.32971, "b": 327.7399, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "contains the value of JOE because it includes any adopted authority.", "bbox": {"l": 151.20117, "t": 330.52673, "r": 453.3249200000001, "b": 339.73972, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.56973266601562, "t": 346.4946594238281, "r": 547.35406, "b": 368.9356384277344, "coord_origin": "TOPLEFT"}, "confidence": 0.9748278260231018, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.80101, "t": 347.65591, "r": 141.78101, "b": 356.43069, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "When proc1 ends, the session reverts to its original state with both USER and CURRENT ", "bbox": {"l": 151.20117, "t": 347.50653, "r": 547.35406, "b": 356.71950999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "USER having the value of ALICE.", "bbox": {"l": 151.20117, "t": 359.50635, "r": 299.57532, "b": 368.71933000000007, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "caption", "bbox": {"l": 136.22442626953125, "t": 596.1806030273438, "r": 342.349853515625, "b": 605.74462890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9274528622627258, "cells": [{"id": 20, "text": "Figure 3-5 Special registers and adopted authority", "bbox": {"l": 136.8, "t": 596.7179, "r": 341.25662, "b": 605.04291, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "section_header", "bbox": {"l": 64.079833984375, "t": 624.3213500976562, "r": 247.02536, "b": 637.8447875976562, "coord_origin": "TOPLEFT"}, "confidence": 0.9659212827682495, "cells": [{"id": 21, "text": "3.2.2", "bbox": {"l": 64.800003, "t": 625.55472, "r": 94.20356, "b": 637.54272, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Built-in global variables", "bbox": {"l": 97.879005, "t": 625.55472, "r": 247.02536, "b": 637.54272, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 136.3346710205078, "t": 650.7590942382812, "r": 518.00116, "b": 672.92153, "coord_origin": "TOPLEFT"}, "confidence": 0.9696776866912842, "cells": [{"id": 23, "text": "Built-in global variables are provided with the database manager and are used in SQL ", "bbox": {"l": 136.8, "t": 651.70872, "r": 518.00116, "b": 660.92172, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "statements to retrieve scalar values that are associated with the variables.", "bbox": {"l": 136.8, "t": 663.70853, "r": 462.81759999999997, "b": 672.92153, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 136.17970275878906, "t": 684.6286010742188, "r": 532.3385, "b": 719.0675659179688, "coord_origin": "TOPLEFT"}, "confidence": 0.9783982038497925, "cells": [{"id": 25, "text": "IBM DB2 for i supports nine different built-in global variables that are read only and ", "bbox": {"l": 136.8, "t": 685.7281, "r": 504.44669, "b": 694.941101, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "maintained by the system. These global variables can be used to identify attributes of the ", "bbox": {"l": 136.8, "t": 697.727905, "r": 532.3385, "b": 706.94091, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "database connection and used as part of the RCAC logic.", "bbox": {"l": 136.8, "t": 709.727715, "r": 391.38257, "b": 718.94072, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "table", "bbox": {"l": 134.54624938964844, "t": 103.41889190673828, "r": 542.0460815429688, "b": 204.2716064453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9731298685073853, "cells": [{"id": 28, "text": "Special register", "bbox": {"l": 142.8, "t": 110.53801999999985, "r": 209.67091, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Corresponding value", "bbox": {"l": 230.18912000000003, "t": 110.53801999999985, "r": 319.93527, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "USER or", "bbox": {"l": 142.80002, "t": 129.49834999999996, "r": 178.26361, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "SESSION_USER", "bbox": {"l": 142.80002, "t": 140.53864, "r": 212.70122, "b": 148.86359000000004, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "The effective user of the thread excluding adopted authority.", "bbox": {"l": 230.21973000000003, "t": 129.49834999999996, "r": 467.99069000000003, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "CURRENT_USER", "bbox": {"l": 142.80003, "t": 159.55835000000002, "r": 216.63962999999998, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "The effective user of the thread including adopted authority. When no adopted ", "bbox": {"l": 230.19814, "t": 159.55835000000002, "r": 535.65082, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "authority is present, this has the same value as USER.", "bbox": {"l": 230.22061, "t": 170.53832999999997, "r": 447.36533, "b": 178.86328000000003, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "SYSTEM_USER", "bbox": {"l": 142.8009, "t": 189.55804, "r": 209.7357, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "The authorization ID that initiated the connection.", "bbox": {"l": 230.2449, "t": 189.55804, "r": 425.64569, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "picture", "bbox": {"l": 135.64837646484375, "t": 384.1737060546875, "r": 301.2367248535156, "b": 594.7566528320312, "coord_origin": "TOPLEFT"}, "confidence": 0.7221464514732361, "cells": [{"id": 39, "text": "Signed on as ALICE", "bbox": {"l": 140.7323, "t": 386.98453, "r": 216.40009, "b": 395.49527, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "USER = ALICE", "bbox": {"l": 138.476, "t": 410.87441999999993, "r": 191.70256, "b": 419.38516, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "CURRENT USER = ALICE", "bbox": {"l": 138.476, "t": 422.81934, "r": 232.56117, "b": 431.33008, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CALL proc1", "bbox": {"l": 138.476, "t": 446.70923000000005, "r": 183.26944, "b": 455.21997, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "P1", "bbox": {"l": 148.4301, "t": 473.58524, "r": 184.17328, "b": 482.09598, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Proc1:", "bbox": {"l": 148.4301, "t": 473.58524, "r": 174.05859, "b": 482.09598, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Owner = JOE", "bbox": {"l": 157.52185, "t": 485.53015, "r": 209.103, "b": 494.04089, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "SET OPTION USRPRF=*OWNER", "bbox": {"l": 157.52185, "t": 497.47507, "r": 281.68927, "b": 505.98581, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "USER = ALICE", "bbox": {"l": 148.4301, "t": 521.36493, "r": 201.65666, "b": 529.87567, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "CURRENT USER = JOE", "bbox": {"l": 148.4301, "t": 533.30984, "r": 234.57686999999999, "b": 541.82059, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "USER = ALICE", "bbox": {"l": 138.476, "t": 566.15842, "r": 191.70256, "b": 574.66917, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "CURRENT USER = ALICE", "bbox": {"l": 138.476, "t": 578.10333, "r": 232.56117, "b": 586.61409, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {"14": {"label": "table", "id": 14, "page_no": 34, "cluster": {"id": 14, "label": "table", "bbox": {"l": 134.54624938964844, "t": 103.41889190673828, "r": 542.0460815429688, "b": 204.2716064453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9731298685073853, "cells": [{"id": 28, "text": "Special register", "bbox": {"l": 142.8, "t": 110.53801999999985, "r": 209.67091, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Corresponding value", "bbox": {"l": 230.18912000000003, "t": 110.53801999999985, "r": 319.93527, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "USER or", "bbox": {"l": 142.80002, "t": 129.49834999999996, "r": 178.26361, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "SESSION_USER", "bbox": {"l": 142.80002, "t": 140.53864, "r": 212.70122, "b": 148.86359000000004, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "The effective user of the thread excluding adopted authority.", "bbox": {"l": 230.21973000000003, "t": 129.49834999999996, "r": 467.99069000000003, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "CURRENT_USER", "bbox": {"l": 142.80003, "t": 159.55835000000002, "r": 216.63962999999998, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "The effective user of the thread including adopted authority. When no adopted ", "bbox": {"l": 230.19814, "t": 159.55835000000002, "r": 535.65082, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "authority is present, this has the same value as USER.", "bbox": {"l": 230.22061, "t": 170.53832999999997, "r": 447.36533, "b": 178.86328000000003, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "SYSTEM_USER", "bbox": {"l": 142.8009, "t": 189.55804, "r": 209.7357, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "The authorization ID that initiated the connection.", "bbox": {"l": 230.2449, "t": 189.55804, "r": 425.64569, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl"], "num_rows": 4, "num_cols": 2, "table_cells": [{"bbox": {"l": 142.8, "t": 110.53801999999985, "r": 209.67091, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Special register", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 230.18912000000003, "t": 110.53801999999985, "r": 319.93527, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Corresponding value", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 142.80002, "t": 129.49834999999996, "r": 212.70122, "b": 148.86359000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USER or SESSION_USER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 230.21973000000003, "t": 129.49834999999996, "r": 467.99069000000003, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "The effective user of the thread excluding adopted authority.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.80003, "t": 159.55835000000002, "r": 216.63962999999998, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CURRENT_USER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 230.19814, "t": 159.55835000000002, "r": 535.65082, "b": 178.86328000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "The effective user of the thread including adopted authority. When no adopted authority is present, this has the same value as USER.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8009, "t": 189.55804, "r": 209.7357, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "SYSTEM_USER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 230.2449, "t": 189.55804, "r": 425.64569, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "The authorization ID that initiated the connection.", "column_header": false, "row_header": false, "row_section": false}]}}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 34, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.5751037597656, "t": 754.7044067382812, "r": 523.60162, "b": 764.0689086914062, "coord_origin": "TOPLEFT"}, "confidence": 0.9557498693466187, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 34, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 536.0416870117188, "t": 754.2877197265625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9130511283874512, "cells": [{"id": 1, "text": "19", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "19"}, {"label": "caption", "id": 2, "page_no": 34, "cluster": {"id": 2, "label": "caption", "bbox": {"l": 135.82176208496094, "t": 70.68284606933594, "r": 412.20758, "b": 80.81541442871094, "coord_origin": "TOPLEFT"}, "confidence": 0.7875164747238159, "cells": [{"id": 2, "text": "Table 3-1 summarizes these special registers and their values.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 412.20758, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}]}, "text": "Table 3-1 summarizes these special registers and their values."}, {"label": "caption", "id": 3, "page_no": 34, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.8, "t": 92.7220458984375, "r": 372.7710876464844, "b": 101.9398422241211, "coord_origin": "TOPLEFT"}, "confidence": 0.9253708720207214, "cells": [{"id": 3, "text": "Table 3-1 Special registers and their corresponding values", "bbox": {"l": 136.8, "t": 93.49805000000003, "r": 372.60364, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}}]}, "text": "Table 3-1 Special registers and their corresponding values"}, {"label": "text", "id": 4, "page_no": 34, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.3730926513672, "t": 213.3656463623047, "r": 538.4939, "b": 235.70154000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9466656446456909, "cells": [{"id": 4, "text": "Figure 3-5 shows the difference in the special register values when an adopted authority is ", "bbox": {"l": 136.8, "t": 214.48870999999997, "r": 538.4939, "b": 223.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "used:", "bbox": {"l": 136.8, "t": 226.48852999999997, "r": 161.20995, "b": 235.70154000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-5 shows the difference in the special register values when an adopted authority is used:"}, {"label": "list_item", "id": 5, "page_no": 34, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.5663299560547, "t": 242.545654296875, "r": 411.36139, "b": 252.77870178222656, "coord_origin": "TOPLEFT"}, "confidence": 0.9504424333572388, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 243.67749000000003, "r": 141.78, "b": 252.45227, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "A user connects to the server using the user profile ALICE.", "bbox": {"l": 151.20016, "t": 243.52808000000005, "r": 411.36139, "b": 252.74108999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH A user connects to the server using the user profile ALICE."}, {"label": "list_item", "id": 6, "page_no": 34, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.5452880859375, "t": 259.2925720214844, "r": 453.2580899999999, "b": 269.72089000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9445974230766296, "cells": [{"id": 8, "text": "GLYPH", "bbox": {"l": 136.8, "t": 260.65729, "r": 141.78, "b": 269.43206999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "USER and CURRENT USER initially have the same value of ALICE.", "bbox": {"l": 151.20016, "t": 260.50787, "r": 453.2580899999999, "b": 269.72089000000005, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH USER and CURRENT USER initially have the same value of ALICE."}, {"label": "list_item", "id": 7, "page_no": 34, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.3970947265625, "t": 276.51788330078125, "r": 541.44983, "b": 298.98980712890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9742953777313232, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.8, "t": 277.63707999999997, "r": 141.78, "b": 286.41187, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ALICE calls an SQL procedure that is named proc1, which is owned by user profile JOE ", "bbox": {"l": 151.20016, "t": 277.48767, "r": 541.44983, "b": 286.70068, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "and was created to adopt JOE\u2019s authority when it is called.", "bbox": {"l": 151.20016, "t": 289.4875200000001, "r": 409.82953, "b": 298.7005, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH ALICE calls an SQL procedure that is named proc1, which is owned by user profile JOE and was created to adopt JOE\u2019s authority when it is called."}, {"label": "list_item", "id": 8, "page_no": 34, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.5677947998047, "t": 305.81854248046875, "r": 547.21674, "b": 340.5078125, "coord_origin": "TOPLEFT"}, "confidence": 0.981132447719574, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 306.67647999999997, "r": 141.78, "b": 315.45126000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "While the procedure is running, the special register USER still contains the value of ALICE ", "bbox": {"l": 151.20016, "t": 306.5271, "r": 547.21674, "b": 315.74008, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "because it excludes any adopted authority. The special register CURRENT USER ", "bbox": {"l": 151.20117, "t": 318.52691999999996, "r": 514.32971, "b": 327.7399, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "contains the value of JOE because it includes any adopted authority.", "bbox": {"l": 151.20117, "t": 330.52673, "r": 453.3249200000001, "b": 339.73972, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH While the procedure is running, the special register USER still contains the value of ALICE because it excludes any adopted authority. The special register CURRENT USER contains the value of JOE because it includes any adopted authority."}, {"label": "list_item", "id": 9, "page_no": 34, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.56973266601562, "t": 346.4946594238281, "r": 547.35406, "b": 368.9356384277344, "coord_origin": "TOPLEFT"}, "confidence": 0.9748278260231018, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.80101, "t": 347.65591, "r": 141.78101, "b": 356.43069, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "When proc1 ends, the session reverts to its original state with both USER and CURRENT ", "bbox": {"l": 151.20117, "t": 347.50653, "r": 547.35406, "b": 356.71950999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "USER having the value of ALICE.", "bbox": {"l": 151.20117, "t": 359.50635, "r": 299.57532, "b": 368.71933000000007, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH When proc1 ends, the session reverts to its original state with both USER and CURRENT USER having the value of ALICE."}, {"label": "caption", "id": 10, "page_no": 34, "cluster": {"id": 10, "label": "caption", "bbox": {"l": 136.22442626953125, "t": 596.1806030273438, "r": 342.349853515625, "b": 605.74462890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9274528622627258, "cells": [{"id": 20, "text": "Figure 3-5 Special registers and adopted authority", "bbox": {"l": 136.8, "t": 596.7179, "r": 341.25662, "b": 605.04291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-5 Special registers and adopted authority"}, {"label": "section_header", "id": 11, "page_no": 34, "cluster": {"id": 11, "label": "section_header", "bbox": {"l": 64.079833984375, "t": 624.3213500976562, "r": 247.02536, "b": 637.8447875976562, "coord_origin": "TOPLEFT"}, "confidence": 0.9659212827682495, "cells": [{"id": 21, "text": "3.2.2", "bbox": {"l": 64.800003, "t": 625.55472, "r": 94.20356, "b": 637.54272, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Built-in global variables", "bbox": {"l": 97.879005, "t": 625.55472, "r": 247.02536, "b": 637.54272, "coord_origin": "TOPLEFT"}}]}, "text": "3.2.2 Built-in global variables"}, {"label": "text", "id": 12, "page_no": 34, "cluster": {"id": 12, "label": "text", "bbox": {"l": 136.3346710205078, "t": 650.7590942382812, "r": 518.00116, "b": 672.92153, "coord_origin": "TOPLEFT"}, "confidence": 0.9696776866912842, "cells": [{"id": 23, "text": "Built-in global variables are provided with the database manager and are used in SQL ", "bbox": {"l": 136.8, "t": 651.70872, "r": 518.00116, "b": 660.92172, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "statements to retrieve scalar values that are associated with the variables.", "bbox": {"l": 136.8, "t": 663.70853, "r": 462.81759999999997, "b": 672.92153, "coord_origin": "TOPLEFT"}}]}, "text": "Built-in global variables are provided with the database manager and are used in SQL statements to retrieve scalar values that are associated with the variables."}, {"label": "text", "id": 13, "page_no": 34, "cluster": {"id": 13, "label": "text", "bbox": {"l": 136.17970275878906, "t": 684.6286010742188, "r": 532.3385, "b": 719.0675659179688, "coord_origin": "TOPLEFT"}, "confidence": 0.9783982038497925, "cells": [{"id": 25, "text": "IBM DB2 for i supports nine different built-in global variables that are read only and ", "bbox": {"l": 136.8, "t": 685.7281, "r": 504.44669, "b": 694.941101, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "maintained by the system. These global variables can be used to identify attributes of the ", "bbox": {"l": 136.8, "t": 697.727905, "r": 532.3385, "b": 706.94091, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "database connection and used as part of the RCAC logic.", "bbox": {"l": 136.8, "t": 709.727715, "r": 391.38257, "b": 718.94072, "coord_origin": "TOPLEFT"}}]}, "text": "IBM DB2 for i supports nine different built-in global variables that are read only and maintained by the system. These global variables can be used to identify attributes of the database connection and used as part of the RCAC logic."}, {"label": "table", "id": 14, "page_no": 34, "cluster": {"id": 14, "label": "table", "bbox": {"l": 134.54624938964844, "t": 103.41889190673828, "r": 542.0460815429688, "b": 204.2716064453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9731298685073853, "cells": [{"id": 28, "text": "Special register", "bbox": {"l": 142.8, "t": 110.53801999999985, "r": 209.67091, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Corresponding value", "bbox": {"l": 230.18912000000003, "t": 110.53801999999985, "r": 319.93527, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "USER or", "bbox": {"l": 142.80002, "t": 129.49834999999996, "r": 178.26361, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "SESSION_USER", "bbox": {"l": 142.80002, "t": 140.53864, "r": 212.70122, "b": 148.86359000000004, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "The effective user of the thread excluding adopted authority.", "bbox": {"l": 230.21973000000003, "t": 129.49834999999996, "r": 467.99069000000003, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "CURRENT_USER", "bbox": {"l": 142.80003, "t": 159.55835000000002, "r": 216.63962999999998, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "The effective user of the thread including adopted authority. When no adopted ", "bbox": {"l": 230.19814, "t": 159.55835000000002, "r": 535.65082, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "authority is present, this has the same value as USER.", "bbox": {"l": 230.22061, "t": 170.53832999999997, "r": 447.36533, "b": 178.86328000000003, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "SYSTEM_USER", "bbox": {"l": 142.8009, "t": 189.55804, "r": 209.7357, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "The authorization ID that initiated the connection.", "bbox": {"l": 230.2449, "t": 189.55804, "r": 425.64569, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl"], "num_rows": 4, "num_cols": 2, "table_cells": [{"bbox": {"l": 142.8, "t": 110.53801999999985, "r": 209.67091, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Special register", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 230.18912000000003, "t": 110.53801999999985, "r": 319.93527, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Corresponding value", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 142.80002, "t": 129.49834999999996, "r": 212.70122, "b": 148.86359000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USER or SESSION_USER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 230.21973000000003, "t": 129.49834999999996, "r": 467.99069000000003, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "The effective user of the thread excluding adopted authority.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.80003, "t": 159.55835000000002, "r": 216.63962999999998, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CURRENT_USER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 230.19814, "t": 159.55835000000002, "r": 535.65082, "b": 178.86328000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "The effective user of the thread including adopted authority. When no adopted authority is present, this has the same value as USER.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8009, "t": 189.55804, "r": 209.7357, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "SYSTEM_USER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 230.2449, "t": 189.55804, "r": 425.64569, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "The authorization ID that initiated the connection.", "column_header": false, "row_header": false, "row_section": false}]}, {"label": "picture", "id": 15, "page_no": 34, "cluster": {"id": 15, "label": "picture", "bbox": {"l": 135.64837646484375, "t": 384.1737060546875, "r": 301.2367248535156, "b": 594.7566528320312, "coord_origin": "TOPLEFT"}, "confidence": 0.7221464514732361, "cells": [{"id": 39, "text": "Signed on as ALICE", "bbox": {"l": 140.7323, "t": 386.98453, "r": 216.40009, "b": 395.49527, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "USER = ALICE", "bbox": {"l": 138.476, "t": 410.87441999999993, "r": 191.70256, "b": 419.38516, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "CURRENT USER = ALICE", "bbox": {"l": 138.476, "t": 422.81934, "r": 232.56117, "b": 431.33008, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CALL proc1", "bbox": {"l": 138.476, "t": 446.70923000000005, "r": 183.26944, "b": 455.21997, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "P1", "bbox": {"l": 148.4301, "t": 473.58524, "r": 184.17328, "b": 482.09598, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Proc1:", "bbox": {"l": 148.4301, "t": 473.58524, "r": 174.05859, "b": 482.09598, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Owner = JOE", "bbox": {"l": 157.52185, "t": 485.53015, "r": 209.103, "b": 494.04089, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "SET OPTION USRPRF=*OWNER", "bbox": {"l": 157.52185, "t": 497.47507, "r": 281.68927, "b": 505.98581, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "USER = ALICE", "bbox": {"l": 148.4301, "t": 521.36493, "r": 201.65666, "b": 529.87567, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "CURRENT USER = JOE", "bbox": {"l": 148.4301, "t": 533.30984, "r": 234.57686999999999, "b": 541.82059, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "USER = ALICE", "bbox": {"l": 138.476, "t": 566.15842, "r": 191.70256, "b": 574.66917, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "CURRENT USER = ALICE", "bbox": {"l": 138.476, "t": 578.10333, "r": 232.56117, "b": 586.61409, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "caption", "id": 2, "page_no": 34, "cluster": {"id": 2, "label": "caption", "bbox": {"l": 135.82176208496094, "t": 70.68284606933594, "r": 412.20758, "b": 80.81541442871094, "coord_origin": "TOPLEFT"}, "confidence": 0.7875164747238159, "cells": [{"id": 2, "text": "Table 3-1 summarizes these special registers and their values.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 412.20758, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}]}, "text": "Table 3-1 summarizes these special registers and their values."}, {"label": "caption", "id": 3, "page_no": 34, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.8, "t": 92.7220458984375, "r": 372.7710876464844, "b": 101.9398422241211, "coord_origin": "TOPLEFT"}, "confidence": 0.9253708720207214, "cells": [{"id": 3, "text": "Table 3-1 Special registers and their corresponding values", "bbox": {"l": 136.8, "t": 93.49805000000003, "r": 372.60364, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}}]}, "text": "Table 3-1 Special registers and their corresponding values"}, {"label": "text", "id": 4, "page_no": 34, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.3730926513672, "t": 213.3656463623047, "r": 538.4939, "b": 235.70154000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9466656446456909, "cells": [{"id": 4, "text": "Figure 3-5 shows the difference in the special register values when an adopted authority is ", "bbox": {"l": 136.8, "t": 214.48870999999997, "r": 538.4939, "b": 223.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "used:", "bbox": {"l": 136.8, "t": 226.48852999999997, "r": 161.20995, "b": 235.70154000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-5 shows the difference in the special register values when an adopted authority is used:"}, {"label": "list_item", "id": 5, "page_no": 34, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.5663299560547, "t": 242.545654296875, "r": 411.36139, "b": 252.77870178222656, "coord_origin": "TOPLEFT"}, "confidence": 0.9504424333572388, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 243.67749000000003, "r": 141.78, "b": 252.45227, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "A user connects to the server using the user profile ALICE.", "bbox": {"l": 151.20016, "t": 243.52808000000005, "r": 411.36139, "b": 252.74108999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH A user connects to the server using the user profile ALICE."}, {"label": "list_item", "id": 6, "page_no": 34, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.5452880859375, "t": 259.2925720214844, "r": 453.2580899999999, "b": 269.72089000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9445974230766296, "cells": [{"id": 8, "text": "GLYPH", "bbox": {"l": 136.8, "t": 260.65729, "r": 141.78, "b": 269.43206999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "USER and CURRENT USER initially have the same value of ALICE.", "bbox": {"l": 151.20016, "t": 260.50787, "r": 453.2580899999999, "b": 269.72089000000005, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH USER and CURRENT USER initially have the same value of ALICE."}, {"label": "list_item", "id": 7, "page_no": 34, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.3970947265625, "t": 276.51788330078125, "r": 541.44983, "b": 298.98980712890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9742953777313232, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.8, "t": 277.63707999999997, "r": 141.78, "b": 286.41187, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ALICE calls an SQL procedure that is named proc1, which is owned by user profile JOE ", "bbox": {"l": 151.20016, "t": 277.48767, "r": 541.44983, "b": 286.70068, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "and was created to adopt JOE\u2019s authority when it is called.", "bbox": {"l": 151.20016, "t": 289.4875200000001, "r": 409.82953, "b": 298.7005, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH ALICE calls an SQL procedure that is named proc1, which is owned by user profile JOE and was created to adopt JOE\u2019s authority when it is called."}, {"label": "list_item", "id": 8, "page_no": 34, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.5677947998047, "t": 305.81854248046875, "r": 547.21674, "b": 340.5078125, "coord_origin": "TOPLEFT"}, "confidence": 0.981132447719574, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 306.67647999999997, "r": 141.78, "b": 315.45126000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "While the procedure is running, the special register USER still contains the value of ALICE ", "bbox": {"l": 151.20016, "t": 306.5271, "r": 547.21674, "b": 315.74008, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "because it excludes any adopted authority. The special register CURRENT USER ", "bbox": {"l": 151.20117, "t": 318.52691999999996, "r": 514.32971, "b": 327.7399, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "contains the value of JOE because it includes any adopted authority.", "bbox": {"l": 151.20117, "t": 330.52673, "r": 453.3249200000001, "b": 339.73972, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH While the procedure is running, the special register USER still contains the value of ALICE because it excludes any adopted authority. The special register CURRENT USER contains the value of JOE because it includes any adopted authority."}, {"label": "list_item", "id": 9, "page_no": 34, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.56973266601562, "t": 346.4946594238281, "r": 547.35406, "b": 368.9356384277344, "coord_origin": "TOPLEFT"}, "confidence": 0.9748278260231018, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.80101, "t": 347.65591, "r": 141.78101, "b": 356.43069, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "When proc1 ends, the session reverts to its original state with both USER and CURRENT ", "bbox": {"l": 151.20117, "t": 347.50653, "r": 547.35406, "b": 356.71950999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "USER having the value of ALICE.", "bbox": {"l": 151.20117, "t": 359.50635, "r": 299.57532, "b": 368.71933000000007, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH When proc1 ends, the session reverts to its original state with both USER and CURRENT USER having the value of ALICE."}, {"label": "caption", "id": 10, "page_no": 34, "cluster": {"id": 10, "label": "caption", "bbox": {"l": 136.22442626953125, "t": 596.1806030273438, "r": 342.349853515625, "b": 605.74462890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9274528622627258, "cells": [{"id": 20, "text": "Figure 3-5 Special registers and adopted authority", "bbox": {"l": 136.8, "t": 596.7179, "r": 341.25662, "b": 605.04291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-5 Special registers and adopted authority"}, {"label": "section_header", "id": 11, "page_no": 34, "cluster": {"id": 11, "label": "section_header", "bbox": {"l": 64.079833984375, "t": 624.3213500976562, "r": 247.02536, "b": 637.8447875976562, "coord_origin": "TOPLEFT"}, "confidence": 0.9659212827682495, "cells": [{"id": 21, "text": "3.2.2", "bbox": {"l": 64.800003, "t": 625.55472, "r": 94.20356, "b": 637.54272, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Built-in global variables", "bbox": {"l": 97.879005, "t": 625.55472, "r": 247.02536, "b": 637.54272, "coord_origin": "TOPLEFT"}}]}, "text": "3.2.2 Built-in global variables"}, {"label": "text", "id": 12, "page_no": 34, "cluster": {"id": 12, "label": "text", "bbox": {"l": 136.3346710205078, "t": 650.7590942382812, "r": 518.00116, "b": 672.92153, "coord_origin": "TOPLEFT"}, "confidence": 0.9696776866912842, "cells": [{"id": 23, "text": "Built-in global variables are provided with the database manager and are used in SQL ", "bbox": {"l": 136.8, "t": 651.70872, "r": 518.00116, "b": 660.92172, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "statements to retrieve scalar values that are associated with the variables.", "bbox": {"l": 136.8, "t": 663.70853, "r": 462.81759999999997, "b": 672.92153, "coord_origin": "TOPLEFT"}}]}, "text": "Built-in global variables are provided with the database manager and are used in SQL statements to retrieve scalar values that are associated with the variables."}, {"label": "text", "id": 13, "page_no": 34, "cluster": {"id": 13, "label": "text", "bbox": {"l": 136.17970275878906, "t": 684.6286010742188, "r": 532.3385, "b": 719.0675659179688, "coord_origin": "TOPLEFT"}, "confidence": 0.9783982038497925, "cells": [{"id": 25, "text": "IBM DB2 for i supports nine different built-in global variables that are read only and ", "bbox": {"l": 136.8, "t": 685.7281, "r": 504.44669, "b": 694.941101, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "maintained by the system. These global variables can be used to identify attributes of the ", "bbox": {"l": 136.8, "t": 697.727905, "r": 532.3385, "b": 706.94091, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "database connection and used as part of the RCAC logic.", "bbox": {"l": 136.8, "t": 709.727715, "r": 391.38257, "b": 718.94072, "coord_origin": "TOPLEFT"}}]}, "text": "IBM DB2 for i supports nine different built-in global variables that are read only and maintained by the system. These global variables can be used to identify attributes of the database connection and used as part of the RCAC logic."}, {"label": "table", "id": 14, "page_no": 34, "cluster": {"id": 14, "label": "table", "bbox": {"l": 134.54624938964844, "t": 103.41889190673828, "r": 542.0460815429688, "b": 204.2716064453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9731298685073853, "cells": [{"id": 28, "text": "Special register", "bbox": {"l": 142.8, "t": 110.53801999999985, "r": 209.67091, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Corresponding value", "bbox": {"l": 230.18912000000003, "t": 110.53801999999985, "r": 319.93527, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "USER or", "bbox": {"l": 142.80002, "t": 129.49834999999996, "r": 178.26361, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "SESSION_USER", "bbox": {"l": 142.80002, "t": 140.53864, "r": 212.70122, "b": 148.86359000000004, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "The effective user of the thread excluding adopted authority.", "bbox": {"l": 230.21973000000003, "t": 129.49834999999996, "r": 467.99069000000003, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "CURRENT_USER", "bbox": {"l": 142.80003, "t": 159.55835000000002, "r": 216.63962999999998, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "The effective user of the thread including adopted authority. When no adopted ", "bbox": {"l": 230.19814, "t": 159.55835000000002, "r": 535.65082, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "authority is present, this has the same value as USER.", "bbox": {"l": 230.22061, "t": 170.53832999999997, "r": 447.36533, "b": 178.86328000000003, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "SYSTEM_USER", "bbox": {"l": 142.8009, "t": 189.55804, "r": 209.7357, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "The authorization ID that initiated the connection.", "bbox": {"l": 230.2449, "t": 189.55804, "r": 425.64569, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl"], "num_rows": 4, "num_cols": 2, "table_cells": [{"bbox": {"l": 142.8, "t": 110.53801999999985, "r": 209.67091, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Special register", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 230.18912000000003, "t": 110.53801999999985, "r": 319.93527, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Corresponding value", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 142.80002, "t": 129.49834999999996, "r": 212.70122, "b": 148.86359000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USER or SESSION_USER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 230.21973000000003, "t": 129.49834999999996, "r": 467.99069000000003, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "The effective user of the thread excluding adopted authority.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.80003, "t": 159.55835000000002, "r": 216.63962999999998, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CURRENT_USER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 230.19814, "t": 159.55835000000002, "r": 535.65082, "b": 178.86328000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "The effective user of the thread including adopted authority. When no adopted authority is present, this has the same value as USER.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8009, "t": 189.55804, "r": 209.7357, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "SYSTEM_USER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 230.2449, "t": 189.55804, "r": 425.64569, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "The authorization ID that initiated the connection.", "column_header": false, "row_header": false, "row_section": false}]}, {"label": "picture", "id": 15, "page_no": 34, "cluster": {"id": 15, "label": "picture", "bbox": {"l": 135.64837646484375, "t": 384.1737060546875, "r": 301.2367248535156, "b": 594.7566528320312, "coord_origin": "TOPLEFT"}, "confidence": 0.7221464514732361, "cells": [{"id": 39, "text": "Signed on as ALICE", "bbox": {"l": 140.7323, "t": 386.98453, "r": 216.40009, "b": 395.49527, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "USER = ALICE", "bbox": {"l": 138.476, "t": 410.87441999999993, "r": 191.70256, "b": 419.38516, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "CURRENT USER = ALICE", "bbox": {"l": 138.476, "t": 422.81934, "r": 232.56117, "b": 431.33008, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CALL proc1", "bbox": {"l": 138.476, "t": 446.70923000000005, "r": 183.26944, "b": 455.21997, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "P1", "bbox": {"l": 148.4301, "t": 473.58524, "r": 184.17328, "b": 482.09598, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Proc1:", "bbox": {"l": 148.4301, "t": 473.58524, "r": 174.05859, "b": 482.09598, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Owner = JOE", "bbox": {"l": 157.52185, "t": 485.53015, "r": 209.103, "b": 494.04089, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "SET OPTION USRPRF=*OWNER", "bbox": {"l": 157.52185, "t": 497.47507, "r": 281.68927, "b": 505.98581, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "USER = ALICE", "bbox": {"l": 148.4301, "t": 521.36493, "r": 201.65666, "b": 529.87567, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "CURRENT USER = JOE", "bbox": {"l": 148.4301, "t": 533.30984, "r": 234.57686999999999, "b": 541.82059, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "USER = ALICE", "bbox": {"l": 138.476, "t": 566.15842, "r": 191.70256, "b": 574.66917, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "CURRENT USER = ALICE", "bbox": {"l": 138.476, "t": 578.10333, "r": 232.56117, "b": 586.61409, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 34, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.5751037597656, "t": 754.7044067382812, "r": 523.60162, "b": 764.0689086914062, "coord_origin": "TOPLEFT"}, "confidence": 0.9557498693466187, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 34, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 536.0416870117188, "t": 754.2877197265625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9130511283874512, "cells": [{"id": 1, "text": "19", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "19"}]}}, {"page_no": 35, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "20 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Table 3-2 lists the nine built-in global variables.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 342.54773, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Table 3-2 Built-in global variables", "bbox": {"l": 64.800003, "t": 93.49805000000003, "r": 201.18147, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "3.3", "bbox": {"l": 64.800003, "t": 322.20071, "r": 87.318192, "b": 336.96371000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "VERIFY_GROUP_FOR_USER function", "bbox": {"l": 91.821815, "t": 322.20071, "r": 384.36389, "b": 336.96371000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "The VERIFY_GROUP_FOR_USER function was added in IBM i 7.2. Although it is primarily ", "bbox": {"l": 136.8, "t": 354.52872, "r": 542.83539, "b": 363.7417, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "intended for use with RCAC permissions and masks, it can be used in other SQL statements. ", "bbox": {"l": 136.8, "t": 366.52853, "r": 547.14783, "b": 375.74152, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "The first parameter must be one of these three special registers: SESSION_USER, USER, or ", "bbox": {"l": 136.8, "t": 378.52835, "r": 547.15106, "b": 387.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CURRENT_USER. The second and subsequent parameters are a list of user or group ", "bbox": {"l": 136.80002, "t": 390.52817, "r": 520.62958, "b": 399.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "profiles. Each of these values must be 1 - 10 characters in length. These values are not ", "bbox": {"l": 136.80002, "t": 402.52798, "r": 524.88824, "b": 411.74097, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "validated for their existence, which means that you can specify the names of user profiles that ", "bbox": {"l": 136.80002, "t": 414.5278, "r": 547.23474, "b": 423.7407799999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "do not exist without receiving any kind of error.", "bbox": {"l": 136.80002, "t": 426.52762, "r": 342.04672, "b": 435.74060000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "If a special register value is in the list of user profiles or it is a member of a group profile ", "bbox": {"l": 136.80002, "t": 448.48743, "r": 525.1474, "b": 457.70041, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "included in the list, the function returns a long integer value of 1. Otherwise, it returns a value ", "bbox": {"l": 136.80002, "t": 460.48724, "r": 547.25739, "b": 469.70023, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "of 0. It never returns the null value.", "bbox": {"l": 136.80002, "t": 472.48706, "r": 289.84335, "b": 481.70004, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Here is an example of using the VERIFY_GROUP_FOR_USER function:", "bbox": {"l": 136.80002, "t": 494.50662, "r": 458.44525000000004, "b": 503.7196, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "1.", "bbox": {"l": 136.80002, "t": 511.5462, "r": 145.09804, "b": 520.75919, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "There are user profiles for MGR, JANE, JUDY, and TONY.", "bbox": {"l": 147.86403, "t": 511.5462, "r": 406.07751, "b": 520.75919, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "2.", "bbox": {"l": 136.80002, "t": 528.5260000000001, "r": 145.23297, "b": 537.739, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "The user profile JANE specifies a group profile of MGR.", "bbox": {"l": 148.04396, "t": 528.5260000000001, "r": 396.98816, "b": 537.739, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "3.", "bbox": {"l": 136.80002, "t": 545.50581, "r": 145.18951, "b": 554.71881, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "If a user is connected to the server using user profile JANE, all of the following function ", "bbox": {"l": 147.98601, "t": 545.50581, "r": 536.5686, "b": 554.71881, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "invocations return a value of 1:", "bbox": {"l": 151.20018, "t": 557.50562, "r": 286.84641, "b": 566.71861, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'MGR')", "bbox": {"l": 151.20018, "t": 574.69458, "r": 366.05725, "b": 583.46933, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR')", "bbox": {"l": 151.20018, "t": 586.69438, "r": 406.01678, "b": 595.46913, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR', 'STEVE')", "bbox": {"l": 151.20018, "t": 598.69418, "r": 451.01605, "b": 607.46893, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "The following function invocation returns a value of 0:", "bbox": {"l": 151.20018, "t": 615.5246, "r": 385.87271, "b": 624.73759, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JUDY', 'TONY')", "bbox": {"l": 151.20018, "t": 632.65381, "r": 411.05655, "b": 641.4285600000001, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Global variable", "bbox": {"l": 70.800003, "t": 110.53801999999985, "r": 134.99071, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Type", "bbox": {"l": 202.8894, "t": 110.53801999999985, "r": 223.34641, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Description", "bbox": {"l": 281.8248, "t": 110.53801999999985, "r": 331.3428, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CLIENT_HOST", "bbox": {"l": 70.800003, "t": 129.49834999999996, "r": 132.7209, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "VARCHAR(255)", "bbox": {"l": 202.89029, "t": 129.49834999999996, "r": 267.07651, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Host name of the current client as returned by the system", "bbox": {"l": 281.84732, "t": 129.49834999999996, "r": 510.17548, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "CLIENT_IPADDR", "bbox": {"l": 70.800018, "t": 148.51806999999997, "r": 140.66522, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "VARCHAR(128)", "bbox": {"l": 202.87231, "t": 148.51806999999997, "r": 267.07739, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "IP address of the current client as returned by the system", "bbox": {"l": 281.84549, "t": 148.51806999999997, "r": 509.60583, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "CLIENT_PORT ", "bbox": {"l": 70.800018, "t": 167.53778, "r": 134.98264, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "INTEGER", "bbox": {"l": 202.90294, "t": 167.53778, "r": 242.80084, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Port used by the current client to communicate with the server", "bbox": {"l": 281.79785, "t": 167.53778, "r": 527.59222, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "PACKAGE_NAME", "bbox": {"l": 70.800018, "t": 186.5575, "r": 143.50925, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "VARCHAR(128)", "bbox": {"l": 202.80576, "t": 186.5575, "r": 267.06937, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Name of the currently running package", "bbox": {"l": 281.85187, "t": 186.5575, "r": 436.57259999999997, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "PACKAGE_SCHEMA", "bbox": {"l": 70.800018, "t": 205.51782000000003, "r": 156.01654, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "VARCHAR(128)", "bbox": {"l": 202.83545, "t": 205.51782000000003, "r": 267.08646, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Schema name of the currently running package", "bbox": {"l": 281.87076, "t": 205.51782000000003, "r": 470.44678, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "PACKAGE_VERSION", "bbox": {"l": 70.800018, "t": 224.53754000000004, "r": 157.89932, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "VARCHAR(64)", "bbox": {"l": 202.72472, "t": 224.53754000000004, "r": 261.98254, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Version identifier of the currently running package", "bbox": {"l": 281.74924, "t": 224.53754000000004, "r": 478.8438100000001, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ROUTINE_SCHEMA", "bbox": {"l": 70.800018, "t": 243.55724999999995, "r": 154.41992, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "VARCHAR(128)", "bbox": {"l": 202.79312, "t": 243.55724999999995, "r": 267.09274, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Schema name of the currently running routine", "bbox": {"l": 281.87164, "t": 243.55724999999995, "r": 464.26022, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ROUTINE_SPECIFIC_NAME", "bbox": {"l": 70.800018, "t": 262.51757999999995, "r": 188.43991, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "VARCHAR(128)", "bbox": {"l": 202.84441, "t": 262.51757999999995, "r": 267.03693, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Name of the currently running routine", "bbox": {"l": 281.80682, "t": 262.51757999999995, "r": 430.40045, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "ROUTINE_TYPE", "bbox": {"l": 70.800034, "t": 281.53726, "r": 139.43135, "b": 289.86227, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "CHAR(1)", "bbox": {"l": 202.74635, "t": 281.53726, "r": 239.28996000000004, "b": 289.86227, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Type of the currently running routine", "bbox": {"l": 281.79065, "t": 281.53726, "r": 425.09131, "b": 289.86227, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.85088348388672, "t": 754.3745727539062, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9187920093536377, "cells": [{"id": 0, "text": "20 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.31550598144531, "t": 754.6971435546875, "r": 334.42142, "b": 763.9706420898438, "coord_origin": "TOPLEFT"}, "confidence": 0.9505078196525574, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.74647521972656, "t": 70.67481994628906, "r": 342.54773, "b": 80.84661102294922, "coord_origin": "TOPLEFT"}, "confidence": 0.8370974659919739, "cells": [{"id": 2, "text": "Table 3-2 lists the nine built-in global variables.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 342.54773, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.800003, "t": 92.83466339111328, "r": 201.82247924804688, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}, "confidence": 0.913235604763031, "cells": [{"id": 3, "text": "Table 3-2 Built-in global variables", "bbox": {"l": 64.800003, "t": 93.49805000000003, "r": 201.18147, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 64.34713745117188, "t": 320.619140625, "r": 384.36389, "b": 336.96371000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9645339846611023, "cells": [{"id": 4, "text": "3.3", "bbox": {"l": 64.800003, "t": 322.20071, "r": 87.318192, "b": 336.96371000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "VERIFY_GROUP_FOR_USER function", "bbox": {"l": 91.821815, "t": 322.20071, "r": 384.36389, "b": 336.96371000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.8567352294922, "t": 353.8623962402344, "r": 547.23474, "b": 436.295166015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9864333868026733, "cells": [{"id": 6, "text": "The VERIFY_GROUP_FOR_USER function was added in IBM i 7.2. Although it is primarily ", "bbox": {"l": 136.8, "t": 354.52872, "r": 542.83539, "b": 363.7417, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "intended for use with RCAC permissions and masks, it can be used in other SQL statements. ", "bbox": {"l": 136.8, "t": 366.52853, "r": 547.14783, "b": 375.74152, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "The first parameter must be one of these three special registers: SESSION_USER, USER, or ", "bbox": {"l": 136.8, "t": 378.52835, "r": 547.15106, "b": 387.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CURRENT_USER. The second and subsequent parameters are a list of user or group ", "bbox": {"l": 136.80002, "t": 390.52817, "r": 520.62958, "b": 399.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "profiles. Each of these values must be 1 - 10 characters in length. These values are not ", "bbox": {"l": 136.80002, "t": 402.52798, "r": 524.88824, "b": 411.74097, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "validated for their existence, which means that you can specify the names of user profiles that ", "bbox": {"l": 136.80002, "t": 414.5278, "r": 547.23474, "b": 423.7407799999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "do not exist without receiving any kind of error.", "bbox": {"l": 136.80002, "t": 426.52762, "r": 342.04672, "b": 435.74060000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 136.01950073242188, "t": 447.4029541015625, "r": 547.25739, "b": 481.70004, "coord_origin": "TOPLEFT"}, "confidence": 0.9807308912277222, "cells": [{"id": 13, "text": "If a special register value is in the list of user profiles or it is a member of a group profile ", "bbox": {"l": 136.80002, "t": 448.48743, "r": 525.1474, "b": 457.70041, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "included in the list, the function returns a long integer value of 1. Otherwise, it returns a value ", "bbox": {"l": 136.80002, "t": 460.48724, "r": 547.25739, "b": 469.70023, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "of 0. It never returns the null value.", "bbox": {"l": 136.80002, "t": 472.48706, "r": 289.84335, "b": 481.70004, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 136.42428588867188, "t": 493.1253662109375, "r": 458.44525000000004, "b": 503.7196, "coord_origin": "TOPLEFT"}, "confidence": 0.9237534403800964, "cells": [{"id": 16, "text": "Here is an example of using the VERIFY_GROUP_FOR_USER function:", "bbox": {"l": 136.80002, "t": 494.50662, "r": 458.44525000000004, "b": 503.7196, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 136.80002, "t": 510.5052795410156, "r": 406.07751, "b": 520.75919, "coord_origin": "TOPLEFT"}, "confidence": 0.9338629841804504, "cells": [{"id": 17, "text": "1.", "bbox": {"l": 136.80002, "t": 511.5462, "r": 145.09804, "b": 520.75919, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "There are user profiles for MGR, JANE, JUDY, and TONY.", "bbox": {"l": 147.86403, "t": 511.5462, "r": 406.07751, "b": 520.75919, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.8521728515625, "t": 527.8382568359375, "r": 396.98816, "b": 538.1942749023438, "coord_origin": "TOPLEFT"}, "confidence": 0.9514460563659668, "cells": [{"id": 19, "text": "2.", "bbox": {"l": 136.80002, "t": 528.5260000000001, "r": 145.23297, "b": 537.739, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "The user profile JANE specifies a group profile of MGR.", "bbox": {"l": 148.04396, "t": 528.5260000000001, "r": 396.98816, "b": 537.739, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 136.08595275878906, "t": 544.642333984375, "r": 536.5686, "b": 566.71861, "coord_origin": "TOPLEFT"}, "confidence": 0.951230525970459, "cells": [{"id": 21, "text": "3.", "bbox": {"l": 136.80002, "t": 545.50581, "r": 145.18951, "b": 554.71881, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "If a user is connected to the server using user profile JANE, all of the following function ", "bbox": {"l": 147.98601, "t": 545.50581, "r": 536.5686, "b": 554.71881, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "invocations return a value of 1:", "bbox": {"l": 151.20018, "t": 557.50562, "r": 286.84641, "b": 566.71861, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "code", "bbox": {"l": 149.8811798095703, "t": 574.31591796875, "r": 451.01605, "b": 641.9093627929688, "coord_origin": "TOPLEFT"}, "confidence": 0.7066468000411987, "cells": [{"id": 24, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'MGR')", "bbox": {"l": 151.20018, "t": 574.69458, "r": 366.05725, "b": 583.46933, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR')", "bbox": {"l": 151.20018, "t": 586.69438, "r": 406.01678, "b": 595.46913, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR', 'STEVE')", "bbox": {"l": 151.20018, "t": 598.69418, "r": 451.01605, "b": 607.46893, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "The following function invocation returns a value of 0:", "bbox": {"l": 151.20018, "t": 615.5246, "r": 385.87271, "b": 624.73759, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JUDY', 'TONY')", "bbox": {"l": 151.20018, "t": 632.65381, "r": 411.05655, "b": 641.4285600000001, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "table", "bbox": {"l": 63.556331634521484, "t": 104.23389434814453, "r": 548.5687255859375, "b": 296.2246398925781, "coord_origin": "TOPLEFT"}, "confidence": 0.9868634939193726, "cells": [{"id": 29, "text": "Global variable", "bbox": {"l": 70.800003, "t": 110.53801999999985, "r": 134.99071, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Type", "bbox": {"l": 202.8894, "t": 110.53801999999985, "r": 223.34641, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Description", "bbox": {"l": 281.8248, "t": 110.53801999999985, "r": 331.3428, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CLIENT_HOST", "bbox": {"l": 70.800003, "t": 129.49834999999996, "r": 132.7209, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "VARCHAR(255)", "bbox": {"l": 202.89029, "t": 129.49834999999996, "r": 267.07651, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Host name of the current client as returned by the system", "bbox": {"l": 281.84732, "t": 129.49834999999996, "r": 510.17548, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "CLIENT_IPADDR", "bbox": {"l": 70.800018, "t": 148.51806999999997, "r": 140.66522, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "VARCHAR(128)", "bbox": {"l": 202.87231, "t": 148.51806999999997, "r": 267.07739, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "IP address of the current client as returned by the system", "bbox": {"l": 281.84549, "t": 148.51806999999997, "r": 509.60583, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "CLIENT_PORT ", "bbox": {"l": 70.800018, "t": 167.53778, "r": 134.98264, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "INTEGER", "bbox": {"l": 202.90294, "t": 167.53778, "r": 242.80084, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Port used by the current client to communicate with the server", "bbox": {"l": 281.79785, "t": 167.53778, "r": 527.59222, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "PACKAGE_NAME", "bbox": {"l": 70.800018, "t": 186.5575, "r": 143.50925, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "VARCHAR(128)", "bbox": {"l": 202.80576, "t": 186.5575, "r": 267.06937, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Name of the currently running package", "bbox": {"l": 281.85187, "t": 186.5575, "r": 436.57259999999997, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "PACKAGE_SCHEMA", "bbox": {"l": 70.800018, "t": 205.51782000000003, "r": 156.01654, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "VARCHAR(128)", "bbox": {"l": 202.83545, "t": 205.51782000000003, "r": 267.08646, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Schema name of the currently running package", "bbox": {"l": 281.87076, "t": 205.51782000000003, "r": 470.44678, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "PACKAGE_VERSION", "bbox": {"l": 70.800018, "t": 224.53754000000004, "r": 157.89932, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "VARCHAR(64)", "bbox": {"l": 202.72472, "t": 224.53754000000004, "r": 261.98254, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Version identifier of the currently running package", "bbox": {"l": 281.74924, "t": 224.53754000000004, "r": 478.8438100000001, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ROUTINE_SCHEMA", "bbox": {"l": 70.800018, "t": 243.55724999999995, "r": 154.41992, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "VARCHAR(128)", "bbox": {"l": 202.79312, "t": 243.55724999999995, "r": 267.09274, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Schema name of the currently running routine", "bbox": {"l": 281.87164, "t": 243.55724999999995, "r": 464.26022, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ROUTINE_SPECIFIC_NAME", "bbox": {"l": 70.800018, "t": 262.51757999999995, "r": 188.43991, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "VARCHAR(128)", "bbox": {"l": 202.84441, "t": 262.51757999999995, "r": 267.03693, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Name of the currently running routine", "bbox": {"l": 281.80682, "t": 262.51757999999995, "r": 430.40045, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "ROUTINE_TYPE", "bbox": {"l": 70.800034, "t": 281.53726, "r": 139.43135, "b": 289.86227, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "CHAR(1)", "bbox": {"l": 202.74635, "t": 281.53726, "r": 239.28996000000004, "b": 289.86227, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Type of the currently running routine", "bbox": {"l": 281.79065, "t": 281.53726, "r": 425.09131, "b": 289.86227, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {"12": {"label": "table", "id": 12, "page_no": 35, "cluster": {"id": 12, "label": "table", "bbox": {"l": 63.556331634521484, "t": 104.23389434814453, "r": 548.5687255859375, "b": 296.2246398925781, "coord_origin": "TOPLEFT"}, "confidence": 0.9868634939193726, "cells": [{"id": 29, "text": "Global variable", "bbox": {"l": 70.800003, "t": 110.53801999999985, "r": 134.99071, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Type", "bbox": {"l": 202.8894, "t": 110.53801999999985, "r": 223.34641, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Description", "bbox": {"l": 281.8248, "t": 110.53801999999985, "r": 331.3428, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CLIENT_HOST", "bbox": {"l": 70.800003, "t": 129.49834999999996, "r": 132.7209, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "VARCHAR(255)", "bbox": {"l": 202.89029, "t": 129.49834999999996, "r": 267.07651, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Host name of the current client as returned by the system", "bbox": {"l": 281.84732, "t": 129.49834999999996, "r": 510.17548, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "CLIENT_IPADDR", "bbox": {"l": 70.800018, "t": 148.51806999999997, "r": 140.66522, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "VARCHAR(128)", "bbox": {"l": 202.87231, "t": 148.51806999999997, "r": 267.07739, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "IP address of the current client as returned by the system", "bbox": {"l": 281.84549, "t": 148.51806999999997, "r": 509.60583, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "CLIENT_PORT ", "bbox": {"l": 70.800018, "t": 167.53778, "r": 134.98264, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "INTEGER", "bbox": {"l": 202.90294, "t": 167.53778, "r": 242.80084, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Port used by the current client to communicate with the server", "bbox": {"l": 281.79785, "t": 167.53778, "r": 527.59222, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "PACKAGE_NAME", "bbox": {"l": 70.800018, "t": 186.5575, "r": 143.50925, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "VARCHAR(128)", "bbox": {"l": 202.80576, "t": 186.5575, "r": 267.06937, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Name of the currently running package", "bbox": {"l": 281.85187, "t": 186.5575, "r": 436.57259999999997, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "PACKAGE_SCHEMA", "bbox": {"l": 70.800018, "t": 205.51782000000003, "r": 156.01654, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "VARCHAR(128)", "bbox": {"l": 202.83545, "t": 205.51782000000003, "r": 267.08646, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Schema name of the currently running package", "bbox": {"l": 281.87076, "t": 205.51782000000003, "r": 470.44678, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "PACKAGE_VERSION", "bbox": {"l": 70.800018, "t": 224.53754000000004, "r": 157.89932, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "VARCHAR(64)", "bbox": {"l": 202.72472, "t": 224.53754000000004, "r": 261.98254, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Version identifier of the currently running package", "bbox": {"l": 281.74924, "t": 224.53754000000004, "r": 478.8438100000001, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ROUTINE_SCHEMA", "bbox": {"l": 70.800018, "t": 243.55724999999995, "r": 154.41992, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "VARCHAR(128)", "bbox": {"l": 202.79312, "t": 243.55724999999995, "r": 267.09274, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Schema name of the currently running routine", "bbox": {"l": 281.87164, "t": 243.55724999999995, "r": 464.26022, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ROUTINE_SPECIFIC_NAME", "bbox": {"l": 70.800018, "t": 262.51757999999995, "r": 188.43991, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "VARCHAR(128)", "bbox": {"l": 202.84441, "t": 262.51757999999995, "r": 267.03693, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Name of the currently running routine", "bbox": {"l": 281.80682, "t": 262.51757999999995, "r": 430.40045, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "ROUTINE_TYPE", "bbox": {"l": 70.800034, "t": 281.53726, "r": 139.43135, "b": 289.86227, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "CHAR(1)", "bbox": {"l": 202.74635, "t": 281.53726, "r": 239.28996000000004, "b": 289.86227, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Type of the currently running routine", "bbox": {"l": 281.79065, "t": 281.53726, "r": 425.09131, "b": 289.86227, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "ched", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl"], "num_rows": 10, "num_cols": 3, "table_cells": [{"bbox": {"l": 70.800003, "t": 110.53801999999985, "r": 134.99071, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Global variable", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 202.8894, "t": 110.53801999999985, "r": 223.34641, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Type", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 281.8248, "t": 110.53801999999985, "r": 331.3428, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Description", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800003, "t": 129.49834999999996, "r": 132.7209, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CLIENT_HOST", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.89029, "t": 129.49834999999996, "r": 267.07651, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(255)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.84732, "t": 129.49834999999996, "r": 510.17548, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Host name of the current client as returned by the system", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 148.51806999999997, "r": 140.66522, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CLIENT_IPADDR", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.87231, "t": 148.51806999999997, "r": 267.07739, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.84549, "t": 148.51806999999997, "r": 509.60583, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "IP address of the current client as returned by the system", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 167.53778, "r": 134.98264, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CLIENT_PORT", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.90294, "t": 167.53778, "r": 242.80084, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "INTEGER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.79785, "t": 167.53778, "r": 527.59222, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Port used by the current client to communicate with the server", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 186.5575, "r": 143.50925, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PACKAGE_NAME", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.80576, "t": 186.5575, "r": 267.06937, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.85187, "t": 186.5575, "r": 436.57259999999997, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Name of the currently running package", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 205.51782000000003, "r": 156.01654, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PACKAGE_SCHEMA", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.83545, "t": 205.51782000000003, "r": 267.08646, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.87076, "t": 205.51782000000003, "r": 470.44678, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Schema name of the currently running package", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 224.53754000000004, "r": 157.89932, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PACKAGE_VERSION", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.72472, "t": 224.53754000000004, "r": 261.98254, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(64)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.74924, "t": 224.53754000000004, "r": 478.8438100000001, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Version identifier of the currently running package", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 243.55724999999995, "r": 154.41992, "b": 251.8822, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ROUTINE_SCHEMA", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.79312, "t": 243.55724999999995, "r": 267.09274, "b": 251.8822, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.87164, "t": 243.55724999999995, "r": 464.26022, "b": 251.8822, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Schema name of the currently running routine", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 262.51757999999995, "r": 188.43991, "b": 270.84253, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ROUTINE_SPECIFIC_NAME", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.84441, "t": 262.51757999999995, "r": 267.03693, "b": 270.84253, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.80682, "t": 262.51757999999995, "r": 430.40045, "b": 270.84253, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Name of the currently running routine", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800034, "t": 281.53726, "r": 139.43135, "b": 289.86227, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ROUTINE_TYPE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.74635, "t": 281.53726, "r": 239.28996000000004, "b": 289.86227, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "CHAR(1)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.79065, "t": 281.53726, "r": 425.09131, "b": 289.86227, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Type of the currently running routine", "column_header": false, "row_header": false, "row_section": false}]}}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 35, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.85088348388672, "t": 754.3745727539062, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9187920093536377, "cells": [{"id": 0, "text": "20 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "20"}, {"label": "page_footer", "id": 1, "page_no": 35, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.31550598144531, "t": 754.6971435546875, "r": 334.42142, "b": 763.9706420898438, "coord_origin": "TOPLEFT"}, "confidence": 0.9505078196525574, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 2, "page_no": 35, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.74647521972656, "t": 70.67481994628906, "r": 342.54773, "b": 80.84661102294922, "coord_origin": "TOPLEFT"}, "confidence": 0.8370974659919739, "cells": [{"id": 2, "text": "Table 3-2 lists the nine built-in global variables.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 342.54773, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Table 3-2 lists the nine built-in global variables."}, {"label": "caption", "id": 3, "page_no": 35, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.800003, "t": 92.83466339111328, "r": 201.82247924804688, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}, "confidence": 0.913235604763031, "cells": [{"id": 3, "text": "Table 3-2 Built-in global variables", "bbox": {"l": 64.800003, "t": 93.49805000000003, "r": 201.18147, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}}]}, "text": "Table 3-2 Built-in global variables"}, {"label": "section_header", "id": 4, "page_no": 35, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.34713745117188, "t": 320.619140625, "r": 384.36389, "b": 336.96371000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9645339846611023, "cells": [{"id": 4, "text": "3.3", "bbox": {"l": 64.800003, "t": 322.20071, "r": 87.318192, "b": 336.96371000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "VERIFY_GROUP_FOR_USER function", "bbox": {"l": 91.821815, "t": 322.20071, "r": 384.36389, "b": 336.96371000000005, "coord_origin": "TOPLEFT"}}]}, "text": "3.3 VERIFY_GROUP_FOR_USER function"}, {"label": "text", "id": 5, "page_no": 35, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.8567352294922, "t": 353.8623962402344, "r": 547.23474, "b": 436.295166015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9864333868026733, "cells": [{"id": 6, "text": "The VERIFY_GROUP_FOR_USER function was added in IBM i 7.2. Although it is primarily ", "bbox": {"l": 136.8, "t": 354.52872, "r": 542.83539, "b": 363.7417, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "intended for use with RCAC permissions and masks, it can be used in other SQL statements. ", "bbox": {"l": 136.8, "t": 366.52853, "r": 547.14783, "b": 375.74152, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "The first parameter must be one of these three special registers: SESSION_USER, USER, or ", "bbox": {"l": 136.8, "t": 378.52835, "r": 547.15106, "b": 387.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CURRENT_USER. The second and subsequent parameters are a list of user or group ", "bbox": {"l": 136.80002, "t": 390.52817, "r": 520.62958, "b": 399.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "profiles. Each of these values must be 1 - 10 characters in length. These values are not ", "bbox": {"l": 136.80002, "t": 402.52798, "r": 524.88824, "b": 411.74097, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "validated for their existence, which means that you can specify the names of user profiles that ", "bbox": {"l": 136.80002, "t": 414.5278, "r": 547.23474, "b": 423.7407799999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "do not exist without receiving any kind of error.", "bbox": {"l": 136.80002, "t": 426.52762, "r": 342.04672, "b": 435.74060000000003, "coord_origin": "TOPLEFT"}}]}, "text": "The VERIFY_GROUP_FOR_USER function was added in IBM i 7.2. Although it is primarily intended for use with RCAC permissions and masks, it can be used in other SQL statements. The first parameter must be one of these three special registers: SESSION_USER, USER, or CURRENT_USER. The second and subsequent parameters are a list of user or group profiles. Each of these values must be 1 - 10 characters in length. These values are not validated for their existence, which means that you can specify the names of user profiles that do not exist without receiving any kind of error."}, {"label": "text", "id": 6, "page_no": 35, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.01950073242188, "t": 447.4029541015625, "r": 547.25739, "b": 481.70004, "coord_origin": "TOPLEFT"}, "confidence": 0.9807308912277222, "cells": [{"id": 13, "text": "If a special register value is in the list of user profiles or it is a member of a group profile ", "bbox": {"l": 136.80002, "t": 448.48743, "r": 525.1474, "b": 457.70041, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "included in the list, the function returns a long integer value of 1. Otherwise, it returns a value ", "bbox": {"l": 136.80002, "t": 460.48724, "r": 547.25739, "b": 469.70023, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "of 0. It never returns the null value.", "bbox": {"l": 136.80002, "t": 472.48706, "r": 289.84335, "b": 481.70004, "coord_origin": "TOPLEFT"}}]}, "text": "If a special register value is in the list of user profiles or it is a member of a group profile included in the list, the function returns a long integer value of 1. Otherwise, it returns a value of 0. It never returns the null value."}, {"label": "text", "id": 7, "page_no": 35, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.42428588867188, "t": 493.1253662109375, "r": 458.44525000000004, "b": 503.7196, "coord_origin": "TOPLEFT"}, "confidence": 0.9237534403800964, "cells": [{"id": 16, "text": "Here is an example of using the VERIFY_GROUP_FOR_USER function:", "bbox": {"l": 136.80002, "t": 494.50662, "r": 458.44525000000004, "b": 503.7196, "coord_origin": "TOPLEFT"}}]}, "text": "Here is an example of using the VERIFY_GROUP_FOR_USER function:"}, {"label": "list_item", "id": 8, "page_no": 35, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 136.80002, "t": 510.5052795410156, "r": 406.07751, "b": 520.75919, "coord_origin": "TOPLEFT"}, "confidence": 0.9338629841804504, "cells": [{"id": 17, "text": "1.", "bbox": {"l": 136.80002, "t": 511.5462, "r": 145.09804, "b": 520.75919, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "There are user profiles for MGR, JANE, JUDY, and TONY.", "bbox": {"l": 147.86403, "t": 511.5462, "r": 406.07751, "b": 520.75919, "coord_origin": "TOPLEFT"}}]}, "text": "1. There are user profiles for MGR, JANE, JUDY, and TONY."}, {"label": "list_item", "id": 9, "page_no": 35, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.8521728515625, "t": 527.8382568359375, "r": 396.98816, "b": 538.1942749023438, "coord_origin": "TOPLEFT"}, "confidence": 0.9514460563659668, "cells": [{"id": 19, "text": "2.", "bbox": {"l": 136.80002, "t": 528.5260000000001, "r": 145.23297, "b": 537.739, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "The user profile JANE specifies a group profile of MGR.", "bbox": {"l": 148.04396, "t": 528.5260000000001, "r": 396.98816, "b": 537.739, "coord_origin": "TOPLEFT"}}]}, "text": "2. The user profile JANE specifies a group profile of MGR."}, {"label": "list_item", "id": 10, "page_no": 35, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 136.08595275878906, "t": 544.642333984375, "r": 536.5686, "b": 566.71861, "coord_origin": "TOPLEFT"}, "confidence": 0.951230525970459, "cells": [{"id": 21, "text": "3.", "bbox": {"l": 136.80002, "t": 545.50581, "r": 145.18951, "b": 554.71881, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "If a user is connected to the server using user profile JANE, all of the following function ", "bbox": {"l": 147.98601, "t": 545.50581, "r": 536.5686, "b": 554.71881, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "invocations return a value of 1:", "bbox": {"l": 151.20018, "t": 557.50562, "r": 286.84641, "b": 566.71861, "coord_origin": "TOPLEFT"}}]}, "text": "3. If a user is connected to the server using user profile JANE, all of the following function invocations return a value of 1:"}, {"label": "code", "id": 11, "page_no": 35, "cluster": {"id": 11, "label": "code", "bbox": {"l": 149.8811798095703, "t": 574.31591796875, "r": 451.01605, "b": 641.9093627929688, "coord_origin": "TOPLEFT"}, "confidence": 0.7066468000411987, "cells": [{"id": 24, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'MGR')", "bbox": {"l": 151.20018, "t": 574.69458, "r": 366.05725, "b": 583.46933, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR')", "bbox": {"l": 151.20018, "t": 586.69438, "r": 406.01678, "b": 595.46913, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR', 'STEVE')", "bbox": {"l": 151.20018, "t": 598.69418, "r": 451.01605, "b": 607.46893, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "The following function invocation returns a value of 0:", "bbox": {"l": 151.20018, "t": 615.5246, "r": 385.87271, "b": 624.73759, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JUDY', 'TONY')", "bbox": {"l": 151.20018, "t": 632.65381, "r": 411.05655, "b": 641.4285600000001, "coord_origin": "TOPLEFT"}}]}, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'MGR') VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR') VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR', 'STEVE') The following function invocation returns a value of 0: VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JUDY', 'TONY')"}, {"label": "table", "id": 12, "page_no": 35, "cluster": {"id": 12, "label": "table", "bbox": {"l": 63.556331634521484, "t": 104.23389434814453, "r": 548.5687255859375, "b": 296.2246398925781, "coord_origin": "TOPLEFT"}, "confidence": 0.9868634939193726, "cells": [{"id": 29, "text": "Global variable", "bbox": {"l": 70.800003, "t": 110.53801999999985, "r": 134.99071, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Type", "bbox": {"l": 202.8894, "t": 110.53801999999985, "r": 223.34641, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Description", "bbox": {"l": 281.8248, "t": 110.53801999999985, "r": 331.3428, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CLIENT_HOST", "bbox": {"l": 70.800003, "t": 129.49834999999996, "r": 132.7209, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "VARCHAR(255)", "bbox": {"l": 202.89029, "t": 129.49834999999996, "r": 267.07651, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Host name of the current client as returned by the system", "bbox": {"l": 281.84732, "t": 129.49834999999996, "r": 510.17548, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "CLIENT_IPADDR", "bbox": {"l": 70.800018, "t": 148.51806999999997, "r": 140.66522, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "VARCHAR(128)", "bbox": {"l": 202.87231, "t": 148.51806999999997, "r": 267.07739, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "IP address of the current client as returned by the system", "bbox": {"l": 281.84549, "t": 148.51806999999997, "r": 509.60583, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "CLIENT_PORT ", "bbox": {"l": 70.800018, "t": 167.53778, "r": 134.98264, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "INTEGER", "bbox": {"l": 202.90294, "t": 167.53778, "r": 242.80084, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Port used by the current client to communicate with the server", "bbox": {"l": 281.79785, "t": 167.53778, "r": 527.59222, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "PACKAGE_NAME", "bbox": {"l": 70.800018, "t": 186.5575, "r": 143.50925, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "VARCHAR(128)", "bbox": {"l": 202.80576, "t": 186.5575, "r": 267.06937, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Name of the currently running package", "bbox": {"l": 281.85187, "t": 186.5575, "r": 436.57259999999997, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "PACKAGE_SCHEMA", "bbox": {"l": 70.800018, "t": 205.51782000000003, "r": 156.01654, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "VARCHAR(128)", "bbox": {"l": 202.83545, "t": 205.51782000000003, "r": 267.08646, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Schema name of the currently running package", "bbox": {"l": 281.87076, "t": 205.51782000000003, "r": 470.44678, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "PACKAGE_VERSION", "bbox": {"l": 70.800018, "t": 224.53754000000004, "r": 157.89932, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "VARCHAR(64)", "bbox": {"l": 202.72472, "t": 224.53754000000004, "r": 261.98254, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Version identifier of the currently running package", "bbox": {"l": 281.74924, "t": 224.53754000000004, "r": 478.8438100000001, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ROUTINE_SCHEMA", "bbox": {"l": 70.800018, "t": 243.55724999999995, "r": 154.41992, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "VARCHAR(128)", "bbox": {"l": 202.79312, "t": 243.55724999999995, "r": 267.09274, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Schema name of the currently running routine", "bbox": {"l": 281.87164, "t": 243.55724999999995, "r": 464.26022, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ROUTINE_SPECIFIC_NAME", "bbox": {"l": 70.800018, "t": 262.51757999999995, "r": 188.43991, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "VARCHAR(128)", "bbox": {"l": 202.84441, "t": 262.51757999999995, "r": 267.03693, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Name of the currently running routine", "bbox": {"l": 281.80682, "t": 262.51757999999995, "r": 430.40045, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "ROUTINE_TYPE", "bbox": {"l": 70.800034, "t": 281.53726, "r": 139.43135, "b": 289.86227, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "CHAR(1)", "bbox": {"l": 202.74635, "t": 281.53726, "r": 239.28996000000004, "b": 289.86227, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Type of the currently running routine", "bbox": {"l": 281.79065, "t": 281.53726, "r": 425.09131, "b": 289.86227, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "ched", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl"], "num_rows": 10, "num_cols": 3, "table_cells": [{"bbox": {"l": 70.800003, "t": 110.53801999999985, "r": 134.99071, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Global variable", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 202.8894, "t": 110.53801999999985, "r": 223.34641, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Type", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 281.8248, "t": 110.53801999999985, "r": 331.3428, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Description", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800003, "t": 129.49834999999996, "r": 132.7209, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CLIENT_HOST", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.89029, "t": 129.49834999999996, "r": 267.07651, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(255)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.84732, "t": 129.49834999999996, "r": 510.17548, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Host name of the current client as returned by the system", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 148.51806999999997, "r": 140.66522, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CLIENT_IPADDR", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.87231, "t": 148.51806999999997, "r": 267.07739, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.84549, "t": 148.51806999999997, "r": 509.60583, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "IP address of the current client as returned by the system", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 167.53778, "r": 134.98264, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CLIENT_PORT", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.90294, "t": 167.53778, "r": 242.80084, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "INTEGER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.79785, "t": 167.53778, "r": 527.59222, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Port used by the current client to communicate with the server", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 186.5575, "r": 143.50925, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PACKAGE_NAME", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.80576, "t": 186.5575, "r": 267.06937, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.85187, "t": 186.5575, "r": 436.57259999999997, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Name of the currently running package", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 205.51782000000003, "r": 156.01654, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PACKAGE_SCHEMA", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.83545, "t": 205.51782000000003, "r": 267.08646, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.87076, "t": 205.51782000000003, "r": 470.44678, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Schema name of the currently running package", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 224.53754000000004, "r": 157.89932, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PACKAGE_VERSION", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.72472, "t": 224.53754000000004, "r": 261.98254, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(64)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.74924, "t": 224.53754000000004, "r": 478.8438100000001, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Version identifier of the currently running package", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 243.55724999999995, "r": 154.41992, "b": 251.8822, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ROUTINE_SCHEMA", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.79312, "t": 243.55724999999995, "r": 267.09274, "b": 251.8822, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.87164, "t": 243.55724999999995, "r": 464.26022, "b": 251.8822, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Schema name of the currently running routine", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 262.51757999999995, "r": 188.43991, "b": 270.84253, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ROUTINE_SPECIFIC_NAME", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.84441, "t": 262.51757999999995, "r": 267.03693, "b": 270.84253, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.80682, "t": 262.51757999999995, "r": 430.40045, "b": 270.84253, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Name of the currently running routine", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800034, "t": 281.53726, "r": 139.43135, "b": 289.86227, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ROUTINE_TYPE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.74635, "t": 281.53726, "r": 239.28996000000004, "b": 289.86227, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "CHAR(1)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.79065, "t": 281.53726, "r": 425.09131, "b": 289.86227, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Type of the currently running routine", "column_header": false, "row_header": false, "row_section": false}]}], "body": [{"label": "text", "id": 2, "page_no": 35, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.74647521972656, "t": 70.67481994628906, "r": 342.54773, "b": 80.84661102294922, "coord_origin": "TOPLEFT"}, "confidence": 0.8370974659919739, "cells": [{"id": 2, "text": "Table 3-2 lists the nine built-in global variables.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 342.54773, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Table 3-2 lists the nine built-in global variables."}, {"label": "caption", "id": 3, "page_no": 35, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.800003, "t": 92.83466339111328, "r": 201.82247924804688, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}, "confidence": 0.913235604763031, "cells": [{"id": 3, "text": "Table 3-2 Built-in global variables", "bbox": {"l": 64.800003, "t": 93.49805000000003, "r": 201.18147, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}}]}, "text": "Table 3-2 Built-in global variables"}, {"label": "section_header", "id": 4, "page_no": 35, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.34713745117188, "t": 320.619140625, "r": 384.36389, "b": 336.96371000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9645339846611023, "cells": [{"id": 4, "text": "3.3", "bbox": {"l": 64.800003, "t": 322.20071, "r": 87.318192, "b": 336.96371000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "VERIFY_GROUP_FOR_USER function", "bbox": {"l": 91.821815, "t": 322.20071, "r": 384.36389, "b": 336.96371000000005, "coord_origin": "TOPLEFT"}}]}, "text": "3.3 VERIFY_GROUP_FOR_USER function"}, {"label": "text", "id": 5, "page_no": 35, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.8567352294922, "t": 353.8623962402344, "r": 547.23474, "b": 436.295166015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9864333868026733, "cells": [{"id": 6, "text": "The VERIFY_GROUP_FOR_USER function was added in IBM i 7.2. Although it is primarily ", "bbox": {"l": 136.8, "t": 354.52872, "r": 542.83539, "b": 363.7417, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "intended for use with RCAC permissions and masks, it can be used in other SQL statements. ", "bbox": {"l": 136.8, "t": 366.52853, "r": 547.14783, "b": 375.74152, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "The first parameter must be one of these three special registers: SESSION_USER, USER, or ", "bbox": {"l": 136.8, "t": 378.52835, "r": 547.15106, "b": 387.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CURRENT_USER. The second and subsequent parameters are a list of user or group ", "bbox": {"l": 136.80002, "t": 390.52817, "r": 520.62958, "b": 399.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "profiles. Each of these values must be 1 - 10 characters in length. These values are not ", "bbox": {"l": 136.80002, "t": 402.52798, "r": 524.88824, "b": 411.74097, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "validated for their existence, which means that you can specify the names of user profiles that ", "bbox": {"l": 136.80002, "t": 414.5278, "r": 547.23474, "b": 423.7407799999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "do not exist without receiving any kind of error.", "bbox": {"l": 136.80002, "t": 426.52762, "r": 342.04672, "b": 435.74060000000003, "coord_origin": "TOPLEFT"}}]}, "text": "The VERIFY_GROUP_FOR_USER function was added in IBM i 7.2. Although it is primarily intended for use with RCAC permissions and masks, it can be used in other SQL statements. The first parameter must be one of these three special registers: SESSION_USER, USER, or CURRENT_USER. The second and subsequent parameters are a list of user or group profiles. Each of these values must be 1 - 10 characters in length. These values are not validated for their existence, which means that you can specify the names of user profiles that do not exist without receiving any kind of error."}, {"label": "text", "id": 6, "page_no": 35, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.01950073242188, "t": 447.4029541015625, "r": 547.25739, "b": 481.70004, "coord_origin": "TOPLEFT"}, "confidence": 0.9807308912277222, "cells": [{"id": 13, "text": "If a special register value is in the list of user profiles or it is a member of a group profile ", "bbox": {"l": 136.80002, "t": 448.48743, "r": 525.1474, "b": 457.70041, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "included in the list, the function returns a long integer value of 1. Otherwise, it returns a value ", "bbox": {"l": 136.80002, "t": 460.48724, "r": 547.25739, "b": 469.70023, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "of 0. It never returns the null value.", "bbox": {"l": 136.80002, "t": 472.48706, "r": 289.84335, "b": 481.70004, "coord_origin": "TOPLEFT"}}]}, "text": "If a special register value is in the list of user profiles or it is a member of a group profile included in the list, the function returns a long integer value of 1. Otherwise, it returns a value of 0. It never returns the null value."}, {"label": "text", "id": 7, "page_no": 35, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.42428588867188, "t": 493.1253662109375, "r": 458.44525000000004, "b": 503.7196, "coord_origin": "TOPLEFT"}, "confidence": 0.9237534403800964, "cells": [{"id": 16, "text": "Here is an example of using the VERIFY_GROUP_FOR_USER function:", "bbox": {"l": 136.80002, "t": 494.50662, "r": 458.44525000000004, "b": 503.7196, "coord_origin": "TOPLEFT"}}]}, "text": "Here is an example of using the VERIFY_GROUP_FOR_USER function:"}, {"label": "list_item", "id": 8, "page_no": 35, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 136.80002, "t": 510.5052795410156, "r": 406.07751, "b": 520.75919, "coord_origin": "TOPLEFT"}, "confidence": 0.9338629841804504, "cells": [{"id": 17, "text": "1.", "bbox": {"l": 136.80002, "t": 511.5462, "r": 145.09804, "b": 520.75919, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "There are user profiles for MGR, JANE, JUDY, and TONY.", "bbox": {"l": 147.86403, "t": 511.5462, "r": 406.07751, "b": 520.75919, "coord_origin": "TOPLEFT"}}]}, "text": "1. There are user profiles for MGR, JANE, JUDY, and TONY."}, {"label": "list_item", "id": 9, "page_no": 35, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.8521728515625, "t": 527.8382568359375, "r": 396.98816, "b": 538.1942749023438, "coord_origin": "TOPLEFT"}, "confidence": 0.9514460563659668, "cells": [{"id": 19, "text": "2.", "bbox": {"l": 136.80002, "t": 528.5260000000001, "r": 145.23297, "b": 537.739, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "The user profile JANE specifies a group profile of MGR.", "bbox": {"l": 148.04396, "t": 528.5260000000001, "r": 396.98816, "b": 537.739, "coord_origin": "TOPLEFT"}}]}, "text": "2. The user profile JANE specifies a group profile of MGR."}, {"label": "list_item", "id": 10, "page_no": 35, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 136.08595275878906, "t": 544.642333984375, "r": 536.5686, "b": 566.71861, "coord_origin": "TOPLEFT"}, "confidence": 0.951230525970459, "cells": [{"id": 21, "text": "3.", "bbox": {"l": 136.80002, "t": 545.50581, "r": 145.18951, "b": 554.71881, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "If a user is connected to the server using user profile JANE, all of the following function ", "bbox": {"l": 147.98601, "t": 545.50581, "r": 536.5686, "b": 554.71881, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "invocations return a value of 1:", "bbox": {"l": 151.20018, "t": 557.50562, "r": 286.84641, "b": 566.71861, "coord_origin": "TOPLEFT"}}]}, "text": "3. If a user is connected to the server using user profile JANE, all of the following function invocations return a value of 1:"}, {"label": "code", "id": 11, "page_no": 35, "cluster": {"id": 11, "label": "code", "bbox": {"l": 149.8811798095703, "t": 574.31591796875, "r": 451.01605, "b": 641.9093627929688, "coord_origin": "TOPLEFT"}, "confidence": 0.7066468000411987, "cells": [{"id": 24, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'MGR')", "bbox": {"l": 151.20018, "t": 574.69458, "r": 366.05725, "b": 583.46933, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR')", "bbox": {"l": 151.20018, "t": 586.69438, "r": 406.01678, "b": 595.46913, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR', 'STEVE')", "bbox": {"l": 151.20018, "t": 598.69418, "r": 451.01605, "b": 607.46893, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "The following function invocation returns a value of 0:", "bbox": {"l": 151.20018, "t": 615.5246, "r": 385.87271, "b": 624.73759, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JUDY', 'TONY')", "bbox": {"l": 151.20018, "t": 632.65381, "r": 411.05655, "b": 641.4285600000001, "coord_origin": "TOPLEFT"}}]}, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'MGR') VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR') VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR', 'STEVE') The following function invocation returns a value of 0: VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JUDY', 'TONY')"}, {"label": "table", "id": 12, "page_no": 35, "cluster": {"id": 12, "label": "table", "bbox": {"l": 63.556331634521484, "t": 104.23389434814453, "r": 548.5687255859375, "b": 296.2246398925781, "coord_origin": "TOPLEFT"}, "confidence": 0.9868634939193726, "cells": [{"id": 29, "text": "Global variable", "bbox": {"l": 70.800003, "t": 110.53801999999985, "r": 134.99071, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Type", "bbox": {"l": 202.8894, "t": 110.53801999999985, "r": 223.34641, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Description", "bbox": {"l": 281.8248, "t": 110.53801999999985, "r": 331.3428, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CLIENT_HOST", "bbox": {"l": 70.800003, "t": 129.49834999999996, "r": 132.7209, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "VARCHAR(255)", "bbox": {"l": 202.89029, "t": 129.49834999999996, "r": 267.07651, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Host name of the current client as returned by the system", "bbox": {"l": 281.84732, "t": 129.49834999999996, "r": 510.17548, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "CLIENT_IPADDR", "bbox": {"l": 70.800018, "t": 148.51806999999997, "r": 140.66522, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "VARCHAR(128)", "bbox": {"l": 202.87231, "t": 148.51806999999997, "r": 267.07739, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "IP address of the current client as returned by the system", "bbox": {"l": 281.84549, "t": 148.51806999999997, "r": 509.60583, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "CLIENT_PORT ", "bbox": {"l": 70.800018, "t": 167.53778, "r": 134.98264, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "INTEGER", "bbox": {"l": 202.90294, "t": 167.53778, "r": 242.80084, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Port used by the current client to communicate with the server", "bbox": {"l": 281.79785, "t": 167.53778, "r": 527.59222, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "PACKAGE_NAME", "bbox": {"l": 70.800018, "t": 186.5575, "r": 143.50925, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "VARCHAR(128)", "bbox": {"l": 202.80576, "t": 186.5575, "r": 267.06937, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Name of the currently running package", "bbox": {"l": 281.85187, "t": 186.5575, "r": 436.57259999999997, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "PACKAGE_SCHEMA", "bbox": {"l": 70.800018, "t": 205.51782000000003, "r": 156.01654, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "VARCHAR(128)", "bbox": {"l": 202.83545, "t": 205.51782000000003, "r": 267.08646, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Schema name of the currently running package", "bbox": {"l": 281.87076, "t": 205.51782000000003, "r": 470.44678, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "PACKAGE_VERSION", "bbox": {"l": 70.800018, "t": 224.53754000000004, "r": 157.89932, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "VARCHAR(64)", "bbox": {"l": 202.72472, "t": 224.53754000000004, "r": 261.98254, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Version identifier of the currently running package", "bbox": {"l": 281.74924, "t": 224.53754000000004, "r": 478.8438100000001, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ROUTINE_SCHEMA", "bbox": {"l": 70.800018, "t": 243.55724999999995, "r": 154.41992, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "VARCHAR(128)", "bbox": {"l": 202.79312, "t": 243.55724999999995, "r": 267.09274, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Schema name of the currently running routine", "bbox": {"l": 281.87164, "t": 243.55724999999995, "r": 464.26022, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ROUTINE_SPECIFIC_NAME", "bbox": {"l": 70.800018, "t": 262.51757999999995, "r": 188.43991, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "VARCHAR(128)", "bbox": {"l": 202.84441, "t": 262.51757999999995, "r": 267.03693, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Name of the currently running routine", "bbox": {"l": 281.80682, "t": 262.51757999999995, "r": 430.40045, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "ROUTINE_TYPE", "bbox": {"l": 70.800034, "t": 281.53726, "r": 139.43135, "b": 289.86227, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "CHAR(1)", "bbox": {"l": 202.74635, "t": 281.53726, "r": 239.28996000000004, "b": 289.86227, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Type of the currently running routine", "bbox": {"l": 281.79065, "t": 281.53726, "r": 425.09131, "b": 289.86227, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "ched", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl"], "num_rows": 10, "num_cols": 3, "table_cells": [{"bbox": {"l": 70.800003, "t": 110.53801999999985, "r": 134.99071, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Global variable", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 202.8894, "t": 110.53801999999985, "r": 223.34641, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Type", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 281.8248, "t": 110.53801999999985, "r": 331.3428, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Description", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800003, "t": 129.49834999999996, "r": 132.7209, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CLIENT_HOST", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.89029, "t": 129.49834999999996, "r": 267.07651, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(255)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.84732, "t": 129.49834999999996, "r": 510.17548, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Host name of the current client as returned by the system", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 148.51806999999997, "r": 140.66522, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CLIENT_IPADDR", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.87231, "t": 148.51806999999997, "r": 267.07739, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.84549, "t": 148.51806999999997, "r": 509.60583, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "IP address of the current client as returned by the system", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 167.53778, "r": 134.98264, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CLIENT_PORT", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.90294, "t": 167.53778, "r": 242.80084, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "INTEGER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.79785, "t": 167.53778, "r": 527.59222, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Port used by the current client to communicate with the server", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 186.5575, "r": 143.50925, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PACKAGE_NAME", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.80576, "t": 186.5575, "r": 267.06937, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.85187, "t": 186.5575, "r": 436.57259999999997, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Name of the currently running package", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 205.51782000000003, "r": 156.01654, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PACKAGE_SCHEMA", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.83545, "t": 205.51782000000003, "r": 267.08646, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.87076, "t": 205.51782000000003, "r": 470.44678, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Schema name of the currently running package", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 224.53754000000004, "r": 157.89932, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PACKAGE_VERSION", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.72472, "t": 224.53754000000004, "r": 261.98254, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(64)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.74924, "t": 224.53754000000004, "r": 478.8438100000001, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Version identifier of the currently running package", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 243.55724999999995, "r": 154.41992, "b": 251.8822, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ROUTINE_SCHEMA", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.79312, "t": 243.55724999999995, "r": 267.09274, "b": 251.8822, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.87164, "t": 243.55724999999995, "r": 464.26022, "b": 251.8822, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Schema name of the currently running routine", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 262.51757999999995, "r": 188.43991, "b": 270.84253, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ROUTINE_SPECIFIC_NAME", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.84441, "t": 262.51757999999995, "r": 267.03693, "b": 270.84253, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.80682, "t": 262.51757999999995, "r": 430.40045, "b": 270.84253, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Name of the currently running routine", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800034, "t": 281.53726, "r": 139.43135, "b": 289.86227, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ROUTINE_TYPE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.74635, "t": 281.53726, "r": 239.28996000000004, "b": 289.86227, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "CHAR(1)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.79065, "t": 281.53726, "r": 425.09131, "b": 289.86227, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Type of the currently running routine", "column_header": false, "row_header": false, "row_section": false}]}], "headers": [{"label": "page_footer", "id": 0, "page_no": 35, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.85088348388672, "t": 754.3745727539062, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9187920093536377, "cells": [{"id": 0, "text": "20 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "20"}, {"label": "page_footer", "id": 1, "page_no": 35, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.31550598144531, "t": 754.6971435546875, "r": 334.42142, "b": 763.9706420898438, "coord_origin": "TOPLEFT"}, "confidence": 0.9505078196525574, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 36, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "21", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "3.4", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 87.21553, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Establishing and controlling accessibility by using the ", "bbox": {"l": 91.698616, "t": 71.22069999999997, "r": 512.90088, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "RCAC rule text", "bbox": {"l": 64.800003, "t": 90.18120999999985, "r": 176.72586, "b": 104.94421, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "When defining a row permission or column mask, the \u201cmagic\u201d of establishing and controlling ", "bbox": {"l": 136.8, "t": 122.50867000000005, "r": 544.90198, "b": 131.72168, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "accessibility comes from the ", "bbox": {"l": 136.8, "t": 134.50847999999996, "r": 264.56488, "b": 143.7215, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "rule text", "bbox": {"l": 264.54001, "t": 133.98492, "r": 300.83551, "b": 144.0426, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": ". The rule text represents the search criteria and logic ", "bbox": {"l": 300.84, "t": 134.50867000000005, "r": 539.85315, "b": 143.72168, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "that is implemented by the database engine.", "bbox": {"l": 136.79979, "t": 146.50847999999996, "r": 332.60843, "b": 155.7215, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "In the case of a row permission, the rule text is the \u201ctest\u201d of whether the user can access the ", "bbox": {"l": 136.79979, "t": 168.52808000000005, "r": 545.6568, "b": 177.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "row. If the test result is true, the row can be accessed. If the test result is false, the row ", "bbox": {"l": 136.79979, "t": 180.52788999999996, "r": 520.19312, "b": 189.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "essentially does not exist for the user. From a set-at-a-time perspective, the permission ", "bbox": {"l": 136.79979, "t": 192.52770999999996, "r": 522.82147, "b": 201.74072, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "defines which rows can be part of the query result set, and which rows cannot.", "bbox": {"l": 136.7998, "t": 204.52752999999996, "r": 483.42691, "b": 213.74054, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "In the case of a column mask, the rule text is both the test of whether the user can see the ", "bbox": {"l": 136.7998, "t": 226.4873, "r": 537.8551, "b": 235.70032000000003, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "actual column value, and it is the masking logic if the user cannot have access to actual ", "bbox": {"l": 136.7998, "t": 238.48712, "r": 525.43597, "b": 247.70012999999994, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "column value.", "bbox": {"l": 136.7998, "t": 250.48694, "r": 198.05679, "b": 259.69994999999994, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "For a simple example of implementing row permissions and column masks, see 3.6, \u201cHuman ", "bbox": {"l": 136.7998, "t": 272.50653, "r": 547.2691, "b": 281.71954, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "resources example\u201d on page 22.", "bbox": {"l": 136.7998, "t": 284.50638, "r": 279.77264, "b": 293.71936, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "In general, almost any set-based, relational logic is valid. For the row permission, the search ", "bbox": {"l": 136.7998, "t": 306.52594, "r": 545.94769, "b": 315.73892000000006, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "condition follows the same rules that are used by the search condition in a WHERE clause.", "bbox": {"l": 136.7998, "t": 318.52576, "r": 537.92279, "b": 327.73874, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "For the column mask, the logic follows the same rules as the CASE expression. The result ", "bbox": {"l": 136.7998, "t": 340.48556999999994, "r": 537.5434, "b": 349.69855, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "data type, length, null attribute, and CCSID of the CASE expression must be compatible with ", "bbox": {"l": 136.79979, "t": 352.48538, "r": 547.18268, "b": 361.69836000000004, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "the data type of the column. If the column does not allow the null value, the result of the CASE ", "bbox": {"l": 136.80081, "t": 364.4852, "r": 547.24945, "b": 373.69818, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "expression cannot be the NULL value. The application or interface making the data access ", "bbox": {"l": 136.80083, "t": 376.48502, "r": 539.22668, "b": 385.698, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "request is expecting that all of the column attributes and values are consistent with the ", "bbox": {"l": 136.80083, "t": 388.48483, "r": 520.22992, "b": 397.69780999999995, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "original definition, regardless of any masking.", "bbox": {"l": 136.80083, "t": 400.48465, "r": 336.8624, "b": 409.69763000000006, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "For more information about what is permitted, see the \u201cDatabase programming\u201d topic of the ", "bbox": {"l": 136.80083, "t": 422.50421000000006, "r": 542.04926, "b": 431.71719, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IBM i 7.2 Knowledge Center, found at:", "bbox": {"l": 136.80083, "t": 434.50403, "r": 304.71448, "b": 443.71701, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgdbp.htm?lang", "bbox": {"l": 136.80083, "t": 451.63321, "r": 546.53522, "b": 460.40799, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "=en", "bbox": {"l": 136.80083, "t": 463.63303, "r": 151.74083, "b": 472.40781, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "One of the first tasks in either the row permission or the column mask logic is to determine ", "bbox": {"l": 136.80083, "t": 485.5032, "r": 538.12109, "b": 494.71619, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "who the user is, and whether they have access to the data. Elegant methods to establish the ", "bbox": {"l": 136.80083, "t": 497.50302, "r": 546.96045, "b": 506.716, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "identity and attributes of the user can be employed by using the special registers, global ", "bbox": {"l": 136.80083, "t": 509.50284, "r": 526.4729, "b": 518.71582, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "variables, and the VERIFY function. After the user\u2019s identity is established, it is a simple ", "bbox": {"l": 136.80083, "t": 521.50266, "r": 525.20898, "b": 530.71564, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "matter of allowing or disallowing access by using true or false testing. The examples that are ", "bbox": {"l": 136.79984, "t": 533.50244, "r": 547.02722, "b": 542.71545, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "included in this paper demonstrate some of the more common and obvious techniques.", "bbox": {"l": 136.79984, "t": 545.50226, "r": 521.35547, "b": 554.71526, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "More sophisticated methods can employ existential, day of year / time of day, and relational ", "bbox": {"l": 136.79984, "t": 567.5218199999999, "r": 541.17859, "b": 576.73482, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "comparisons with set operations. For example, you can use a date master or date dimension ", "bbox": {"l": 136.79984, "t": 579.52162, "r": 547.37488, "b": 588.73462, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "table to determine whether the current date is a normal business day. If the current date is a ", "bbox": {"l": 136.79984, "t": 591.52142, "r": 544.3847, "b": 600.73442, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "valid business day, then access is allowed. If the current date is not a business day (for ", "bbox": {"l": 136.79984, "t": 603.52122, "r": 521.69189, "b": 612.73422, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "example a weekend day or holiday), access is denied. This test can be accomplished by ", "bbox": {"l": 136.79984, "t": 615.52103, "r": 528.19098, "b": 624.73402, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "performing a lookup using a subquery, such as the one that is shown in Example 3-1.", "bbox": {"l": 136.79984, "t": 627.5208299999999, "r": 512.61157, "b": 636.73383, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Example 3-1 Subquery that is used as part of the rule", "bbox": {"l": 136.8, "t": 649.5179, "r": 354.82498, "b": 657.84291, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "CURRENT_DATE IN (SELECT D.DATE_KEY", "bbox": {"l": 136.8, "t": 666.67812, "r": 316.67755, "b": 675.45288, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "FROM", "bbox": {"l": 177.39944, "t": 678.6779300000001, "r": 209.879, "b": 687.45269, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "DATE_MASTER D", "bbox": {"l": 226.11877, "t": 678.6779300000001, "r": 331.67731, "b": 687.45269, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "WHERE", "bbox": {"l": 172.38135, "t": 690.67774, "r": 207.96268, "b": 699.452499, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "D.BUSINESS_DAY = 'Y')", "bbox": {"l": 222.19522, "t": 690.67774, "r": 371.63684, "b": 699.452499, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 344.57867431640625, "t": 754.7420043945312, "r": 523.60162, "b": 764.0948486328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9520102739334106, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.7230834960938, "t": 754.28857421875, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9108889102935791, "cells": [{"id": 1, "text": "21", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.577880859375, "t": 70.0939712524414, "r": 512.90088, "b": 104.94421, "coord_origin": "TOPLEFT"}, "confidence": 0.9630382061004639, "cells": [{"id": 2, "text": "3.4", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 87.21553, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Establishing and controlling accessibility by using the ", "bbox": {"l": 91.698616, "t": 71.22069999999997, "r": 512.90088, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "RCAC rule text", "bbox": {"l": 64.800003, "t": 90.18120999999985, "r": 176.72586, "b": 104.94421, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.82391357421875, "t": 121.33588409423828, "r": 544.90198, "b": 155.7215, "coord_origin": "TOPLEFT"}, "confidence": 0.9855659604072571, "cells": [{"id": 5, "text": "When defining a row permission or column mask, the \u201cmagic\u201d of establishing and controlling ", "bbox": {"l": 136.8, "t": 122.50867000000005, "r": 544.90198, "b": 131.72168, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "accessibility comes from the ", "bbox": {"l": 136.8, "t": 134.50847999999996, "r": 264.56488, "b": 143.7215, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "rule text", "bbox": {"l": 264.54001, "t": 133.98492, "r": 300.83551, "b": 144.0426, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": ". The rule text represents the search criteria and logic ", "bbox": {"l": 300.84, "t": 134.50867000000005, "r": 539.85315, "b": 143.72168, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "that is implemented by the database engine.", "bbox": {"l": 136.79979, "t": 146.50847999999996, "r": 332.60843, "b": 155.7215, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.99398803710938, "t": 168.17491149902344, "r": 545.6568, "b": 214.0780029296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9861353635787964, "cells": [{"id": 10, "text": "In the case of a row permission, the rule text is the \u201ctest\u201d of whether the user can access the ", "bbox": {"l": 136.79979, "t": 168.52808000000005, "r": 545.6568, "b": 177.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "row. If the test result is true, the row can be accessed. If the test result is false, the row ", "bbox": {"l": 136.79979, "t": 180.52788999999996, "r": 520.19312, "b": 189.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "essentially does not exist for the user. From a set-at-a-time perspective, the permission ", "bbox": {"l": 136.79979, "t": 192.52770999999996, "r": 522.82147, "b": 201.74072, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "defines which rows can be part of the query result set, and which rows cannot.", "bbox": {"l": 136.7998, "t": 204.52752999999996, "r": 483.42691, "b": 213.74054, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.151123046875, "t": 225.48377990722656, "r": 537.8551, "b": 259.69994999999994, "coord_origin": "TOPLEFT"}, "confidence": 0.9822747707366943, "cells": [{"id": 14, "text": "In the case of a column mask, the rule text is both the test of whether the user can see the ", "bbox": {"l": 136.7998, "t": 226.4873, "r": 537.8551, "b": 235.70032000000003, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "actual column value, and it is the masking logic if the user cannot have access to actual ", "bbox": {"l": 136.7998, "t": 238.48712, "r": 525.43597, "b": 247.70012999999994, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "column value.", "bbox": {"l": 136.7998, "t": 250.48694, "r": 198.05679, "b": 259.69994999999994, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 136.31472778320312, "t": 271.4064636230469, "r": 547.2691, "b": 293.71936, "coord_origin": "TOPLEFT"}, "confidence": 0.9792705774307251, "cells": [{"id": 17, "text": "For a simple example of implementing row permissions and column masks, see 3.6, \u201cHuman ", "bbox": {"l": 136.7998, "t": 272.50653, "r": 547.2691, "b": 281.71954, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "resources example\u201d on page 22.", "bbox": {"l": 136.7998, "t": 284.50638, "r": 279.77264, "b": 293.71936, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 136.01747131347656, "t": 306.14697265625, "r": 545.94769, "b": 327.9010925292969, "coord_origin": "TOPLEFT"}, "confidence": 0.9774510264396667, "cells": [{"id": 19, "text": "In general, almost any set-based, relational logic is valid. For the row permission, the search ", "bbox": {"l": 136.7998, "t": 306.52594, "r": 545.94769, "b": 315.73892000000006, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "condition follows the same rules that are used by the search condition in a WHERE clause.", "bbox": {"l": 136.7998, "t": 318.52576, "r": 537.92279, "b": 327.73874, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 136.0785675048828, "t": 339.462646484375, "r": 547.24945, "b": 410.0204772949219, "coord_origin": "TOPLEFT"}, "confidence": 0.9882258176803589, "cells": [{"id": 21, "text": "For the column mask, the logic follows the same rules as the CASE expression. The result ", "bbox": {"l": 136.7998, "t": 340.48556999999994, "r": 537.5434, "b": 349.69855, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "data type, length, null attribute, and CCSID of the CASE expression must be compatible with ", "bbox": {"l": 136.79979, "t": 352.48538, "r": 547.18268, "b": 361.69836000000004, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "the data type of the column. If the column does not allow the null value, the result of the CASE ", "bbox": {"l": 136.80081, "t": 364.4852, "r": 547.24945, "b": 373.69818, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "expression cannot be the NULL value. The application or interface making the data access ", "bbox": {"l": 136.80083, "t": 376.48502, "r": 539.22668, "b": 385.698, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "request is expecting that all of the column attributes and values are consistent with the ", "bbox": {"l": 136.80083, "t": 388.48483, "r": 520.22992, "b": 397.69780999999995, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "original definition, regardless of any masking.", "bbox": {"l": 136.80083, "t": 400.48465, "r": 336.8624, "b": 409.69763000000006, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 136.35562133789062, "t": 421.3914794921875, "r": 542.04926, "b": 443.71701, "coord_origin": "TOPLEFT"}, "confidence": 0.9723648428916931, "cells": [{"id": 27, "text": "For more information about what is permitted, see the \u201cDatabase programming\u201d topic of the ", "bbox": {"l": 136.80083, "t": 422.50421000000006, "r": 542.04926, "b": 431.71719, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IBM i 7.2 Knowledge Center, found at:", "bbox": {"l": 136.80083, "t": 434.50403, "r": 304.71448, "b": 443.71701, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 136.1328582763672, "t": 450.9010009765625, "r": 546.53522, "b": 472.40781, "coord_origin": "TOPLEFT"}, "confidence": 0.9142380952835083, "cells": [{"id": 29, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgdbp.htm?lang", "bbox": {"l": 136.80083, "t": 451.63321, "r": 546.53522, "b": 460.40799, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "=en", "bbox": {"l": 136.80083, "t": 463.63303, "r": 151.74083, "b": 472.40781, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 135.92572021484375, "t": 484.72674560546875, "r": 547.02722, "b": 554.9171142578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9879254102706909, "cells": [{"id": 31, "text": "One of the first tasks in either the row permission or the column mask logic is to determine ", "bbox": {"l": 136.80083, "t": 485.5032, "r": 538.12109, "b": 494.71619, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "who the user is, and whether they have access to the data. Elegant methods to establish the ", "bbox": {"l": 136.80083, "t": 497.50302, "r": 546.96045, "b": 506.716, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "identity and attributes of the user can be employed by using the special registers, global ", "bbox": {"l": 136.80083, "t": 509.50284, "r": 526.4729, "b": 518.71582, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "variables, and the VERIFY function. After the user\u2019s identity is established, it is a simple ", "bbox": {"l": 136.80083, "t": 521.50266, "r": 525.20898, "b": 530.71564, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "matter of allowing or disallowing access by using true or false testing. The examples that are ", "bbox": {"l": 136.79984, "t": 533.50244, "r": 547.02722, "b": 542.71545, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "included in this paper demonstrate some of the more common and obvious techniques.", "bbox": {"l": 136.79984, "t": 545.50226, "r": 521.35547, "b": 554.71526, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 136.01707458496094, "t": 566.9345703125, "r": 547.37488, "b": 637.0723266601562, "coord_origin": "TOPLEFT"}, "confidence": 0.9875260591506958, "cells": [{"id": 37, "text": "More sophisticated methods can employ existential, day of year / time of day, and relational ", "bbox": {"l": 136.79984, "t": 567.5218199999999, "r": 541.17859, "b": 576.73482, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "comparisons with set operations. For example, you can use a date master or date dimension ", "bbox": {"l": 136.79984, "t": 579.52162, "r": 547.37488, "b": 588.73462, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "table to determine whether the current date is a normal business day. If the current date is a ", "bbox": {"l": 136.79984, "t": 591.52142, "r": 544.3847, "b": 600.73442, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "valid business day, then access is allowed. If the current date is not a business day (for ", "bbox": {"l": 136.79984, "t": 603.52122, "r": 521.69189, "b": 612.73422, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "example a weekend day or holiday), access is denied. This test can be accomplished by ", "bbox": {"l": 136.79984, "t": 615.52103, "r": 528.19098, "b": 624.73402, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "performing a lookup using a subquery, such as the one that is shown in Example 3-1.", "bbox": {"l": 136.79984, "t": 627.5208299999999, "r": 512.61157, "b": 636.73383, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "caption", "bbox": {"l": 136.3708953857422, "t": 648.479736328125, "r": 355.12689208984375, "b": 658.3316650390625, "coord_origin": "TOPLEFT"}, "confidence": 0.804072916507721, "cells": [{"id": 43, "text": "Example 3-1 Subquery that is used as part of the rule", "bbox": {"l": 136.8, "t": 649.5179, "r": 354.82498, "b": 657.84291, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "text", "bbox": {"l": 136.8, "t": 666.67812, "r": 316.67755, "b": 699.452499, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 44, "text": "CURRENT_DATE IN (SELECT D.DATE_KEY", "bbox": {"l": 136.8, "t": 666.67812, "r": 316.67755, "b": 675.45288, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "FROM", "bbox": {"l": 177.39944, "t": 678.6779300000001, "r": 209.879, "b": 687.45269, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "WHERE", "bbox": {"l": 172.38135, "t": 690.67774, "r": 207.96268, "b": 699.452499, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "text", "bbox": {"l": 226.11877, "t": 678.1546020507812, "r": 331.77557373046875, "b": 687.45269, "coord_origin": "TOPLEFT"}, "confidence": 0.6781665682792664, "cells": [{"id": 46, "text": "DATE_MASTER D", "bbox": {"l": 226.11877, "t": 678.6779300000001, "r": 331.67731, "b": 687.45269, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "text", "bbox": {"l": 222.19522, "t": 689.8526611328125, "r": 371.63684, "b": 700.1818237304688, "coord_origin": "TOPLEFT"}, "confidence": 0.7035561203956604, "cells": [{"id": 48, "text": "D.BUSINESS_DAY = 'Y')", "bbox": {"l": 222.19522, "t": 690.67774, "r": 371.63684, "b": 699.452499, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 36, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.57867431640625, "t": 754.7420043945312, "r": 523.60162, "b": 764.0948486328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9520102739334106, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 36, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.7230834960938, "t": 754.28857421875, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9108889102935791, "cells": [{"id": 1, "text": "21", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "21"}, {"label": "section_header", "id": 2, "page_no": 36, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.577880859375, "t": 70.0939712524414, "r": 512.90088, "b": 104.94421, "coord_origin": "TOPLEFT"}, "confidence": 0.9630382061004639, "cells": [{"id": 2, "text": "3.4", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 87.21553, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Establishing and controlling accessibility by using the ", "bbox": {"l": 91.698616, "t": 71.22069999999997, "r": 512.90088, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "RCAC rule text", "bbox": {"l": 64.800003, "t": 90.18120999999985, "r": 176.72586, "b": 104.94421, "coord_origin": "TOPLEFT"}}]}, "text": "3.4 Establishing and controlling accessibility by using the RCAC rule text"}, {"label": "text", "id": 3, "page_no": 36, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.82391357421875, "t": 121.33588409423828, "r": 544.90198, "b": 155.7215, "coord_origin": "TOPLEFT"}, "confidence": 0.9855659604072571, "cells": [{"id": 5, "text": "When defining a row permission or column mask, the \u201cmagic\u201d of establishing and controlling ", "bbox": {"l": 136.8, "t": 122.50867000000005, "r": 544.90198, "b": 131.72168, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "accessibility comes from the ", "bbox": {"l": 136.8, "t": 134.50847999999996, "r": 264.56488, "b": 143.7215, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "rule text", "bbox": {"l": 264.54001, "t": 133.98492, "r": 300.83551, "b": 144.0426, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": ". The rule text represents the search criteria and logic ", "bbox": {"l": 300.84, "t": 134.50867000000005, "r": 539.85315, "b": 143.72168, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "that is implemented by the database engine.", "bbox": {"l": 136.79979, "t": 146.50847999999996, "r": 332.60843, "b": 155.7215, "coord_origin": "TOPLEFT"}}]}, "text": "When defining a row permission or column mask, the \u201cmagic\u201d of establishing and controlling accessibility comes from the rule text . The rule text represents the search criteria and logic that is implemented by the database engine."}, {"label": "text", "id": 4, "page_no": 36, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.99398803710938, "t": 168.17491149902344, "r": 545.6568, "b": 214.0780029296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9861353635787964, "cells": [{"id": 10, "text": "In the case of a row permission, the rule text is the \u201ctest\u201d of whether the user can access the ", "bbox": {"l": 136.79979, "t": 168.52808000000005, "r": 545.6568, "b": 177.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "row. If the test result is true, the row can be accessed. If the test result is false, the row ", "bbox": {"l": 136.79979, "t": 180.52788999999996, "r": 520.19312, "b": 189.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "essentially does not exist for the user. From a set-at-a-time perspective, the permission ", "bbox": {"l": 136.79979, "t": 192.52770999999996, "r": 522.82147, "b": 201.74072, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "defines which rows can be part of the query result set, and which rows cannot.", "bbox": {"l": 136.7998, "t": 204.52752999999996, "r": 483.42691, "b": 213.74054, "coord_origin": "TOPLEFT"}}]}, "text": "In the case of a row permission, the rule text is the \u201ctest\u201d of whether the user can access the row. If the test result is true, the row can be accessed. If the test result is false, the row essentially does not exist for the user. From a set-at-a-time perspective, the permission defines which rows can be part of the query result set, and which rows cannot."}, {"label": "text", "id": 5, "page_no": 36, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.151123046875, "t": 225.48377990722656, "r": 537.8551, "b": 259.69994999999994, "coord_origin": "TOPLEFT"}, "confidence": 0.9822747707366943, "cells": [{"id": 14, "text": "In the case of a column mask, the rule text is both the test of whether the user can see the ", "bbox": {"l": 136.7998, "t": 226.4873, "r": 537.8551, "b": 235.70032000000003, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "actual column value, and it is the masking logic if the user cannot have access to actual ", "bbox": {"l": 136.7998, "t": 238.48712, "r": 525.43597, "b": 247.70012999999994, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "column value.", "bbox": {"l": 136.7998, "t": 250.48694, "r": 198.05679, "b": 259.69994999999994, "coord_origin": "TOPLEFT"}}]}, "text": "In the case of a column mask, the rule text is both the test of whether the user can see the actual column value, and it is the masking logic if the user cannot have access to actual column value."}, {"label": "text", "id": 6, "page_no": 36, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.31472778320312, "t": 271.4064636230469, "r": 547.2691, "b": 293.71936, "coord_origin": "TOPLEFT"}, "confidence": 0.9792705774307251, "cells": [{"id": 17, "text": "For a simple example of implementing row permissions and column masks, see 3.6, \u201cHuman ", "bbox": {"l": 136.7998, "t": 272.50653, "r": 547.2691, "b": 281.71954, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "resources example\u201d on page 22.", "bbox": {"l": 136.7998, "t": 284.50638, "r": 279.77264, "b": 293.71936, "coord_origin": "TOPLEFT"}}]}, "text": "For a simple example of implementing row permissions and column masks, see 3.6, \u201cHuman resources example\u201d on page 22."}, {"label": "text", "id": 7, "page_no": 36, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.01747131347656, "t": 306.14697265625, "r": 545.94769, "b": 327.9010925292969, "coord_origin": "TOPLEFT"}, "confidence": 0.9774510264396667, "cells": [{"id": 19, "text": "In general, almost any set-based, relational logic is valid. For the row permission, the search ", "bbox": {"l": 136.7998, "t": 306.52594, "r": 545.94769, "b": 315.73892000000006, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "condition follows the same rules that are used by the search condition in a WHERE clause.", "bbox": {"l": 136.7998, "t": 318.52576, "r": 537.92279, "b": 327.73874, "coord_origin": "TOPLEFT"}}]}, "text": "In general, almost any set-based, relational logic is valid. For the row permission, the search condition follows the same rules that are used by the search condition in a WHERE clause."}, {"label": "text", "id": 8, "page_no": 36, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.0785675048828, "t": 339.462646484375, "r": 547.24945, "b": 410.0204772949219, "coord_origin": "TOPLEFT"}, "confidence": 0.9882258176803589, "cells": [{"id": 21, "text": "For the column mask, the logic follows the same rules as the CASE expression. The result ", "bbox": {"l": 136.7998, "t": 340.48556999999994, "r": 537.5434, "b": 349.69855, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "data type, length, null attribute, and CCSID of the CASE expression must be compatible with ", "bbox": {"l": 136.79979, "t": 352.48538, "r": 547.18268, "b": 361.69836000000004, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "the data type of the column. If the column does not allow the null value, the result of the CASE ", "bbox": {"l": 136.80081, "t": 364.4852, "r": 547.24945, "b": 373.69818, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "expression cannot be the NULL value. The application or interface making the data access ", "bbox": {"l": 136.80083, "t": 376.48502, "r": 539.22668, "b": 385.698, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "request is expecting that all of the column attributes and values are consistent with the ", "bbox": {"l": 136.80083, "t": 388.48483, "r": 520.22992, "b": 397.69780999999995, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "original definition, regardless of any masking.", "bbox": {"l": 136.80083, "t": 400.48465, "r": 336.8624, "b": 409.69763000000006, "coord_origin": "TOPLEFT"}}]}, "text": "For the column mask, the logic follows the same rules as the CASE expression. The result data type, length, null attribute, and CCSID of the CASE expression must be compatible with the data type of the column. If the column does not allow the null value, the result of the CASE expression cannot be the NULL value. The application or interface making the data access request is expecting that all of the column attributes and values are consistent with the original definition, regardless of any masking."}, {"label": "text", "id": 9, "page_no": 36, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.35562133789062, "t": 421.3914794921875, "r": 542.04926, "b": 443.71701, "coord_origin": "TOPLEFT"}, "confidence": 0.9723648428916931, "cells": [{"id": 27, "text": "For more information about what is permitted, see the \u201cDatabase programming\u201d topic of the ", "bbox": {"l": 136.80083, "t": 422.50421000000006, "r": 542.04926, "b": 431.71719, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IBM i 7.2 Knowledge Center, found at:", "bbox": {"l": 136.80083, "t": 434.50403, "r": 304.71448, "b": 443.71701, "coord_origin": "TOPLEFT"}}]}, "text": "For more information about what is permitted, see the \u201cDatabase programming\u201d topic of the IBM i 7.2 Knowledge Center, found at:"}, {"label": "text", "id": 10, "page_no": 36, "cluster": {"id": 10, "label": "text", "bbox": {"l": 136.1328582763672, "t": 450.9010009765625, "r": 546.53522, "b": 472.40781, "coord_origin": "TOPLEFT"}, "confidence": 0.9142380952835083, "cells": [{"id": 29, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgdbp.htm?lang", "bbox": {"l": 136.80083, "t": 451.63321, "r": 546.53522, "b": 460.40799, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "=en", "bbox": {"l": 136.80083, "t": 463.63303, "r": 151.74083, "b": 472.40781, "coord_origin": "TOPLEFT"}}]}, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgdbp.htm?lang =en"}, {"label": "text", "id": 11, "page_no": 36, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.92572021484375, "t": 484.72674560546875, "r": 547.02722, "b": 554.9171142578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9879254102706909, "cells": [{"id": 31, "text": "One of the first tasks in either the row permission or the column mask logic is to determine ", "bbox": {"l": 136.80083, "t": 485.5032, "r": 538.12109, "b": 494.71619, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "who the user is, and whether they have access to the data. Elegant methods to establish the ", "bbox": {"l": 136.80083, "t": 497.50302, "r": 546.96045, "b": 506.716, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "identity and attributes of the user can be employed by using the special registers, global ", "bbox": {"l": 136.80083, "t": 509.50284, "r": 526.4729, "b": 518.71582, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "variables, and the VERIFY function. After the user\u2019s identity is established, it is a simple ", "bbox": {"l": 136.80083, "t": 521.50266, "r": 525.20898, "b": 530.71564, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "matter of allowing or disallowing access by using true or false testing. The examples that are ", "bbox": {"l": 136.79984, "t": 533.50244, "r": 547.02722, "b": 542.71545, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "included in this paper demonstrate some of the more common and obvious techniques.", "bbox": {"l": 136.79984, "t": 545.50226, "r": 521.35547, "b": 554.71526, "coord_origin": "TOPLEFT"}}]}, "text": "One of the first tasks in either the row permission or the column mask logic is to determine who the user is, and whether they have access to the data. Elegant methods to establish the identity and attributes of the user can be employed by using the special registers, global variables, and the VERIFY function. After the user\u2019s identity is established, it is a simple matter of allowing or disallowing access by using true or false testing. The examples that are included in this paper demonstrate some of the more common and obvious techniques."}, {"label": "text", "id": 12, "page_no": 36, "cluster": {"id": 12, "label": "text", "bbox": {"l": 136.01707458496094, "t": 566.9345703125, "r": 547.37488, "b": 637.0723266601562, "coord_origin": "TOPLEFT"}, "confidence": 0.9875260591506958, "cells": [{"id": 37, "text": "More sophisticated methods can employ existential, day of year / time of day, and relational ", "bbox": {"l": 136.79984, "t": 567.5218199999999, "r": 541.17859, "b": 576.73482, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "comparisons with set operations. For example, you can use a date master or date dimension ", "bbox": {"l": 136.79984, "t": 579.52162, "r": 547.37488, "b": 588.73462, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "table to determine whether the current date is a normal business day. If the current date is a ", "bbox": {"l": 136.79984, "t": 591.52142, "r": 544.3847, "b": 600.73442, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "valid business day, then access is allowed. If the current date is not a business day (for ", "bbox": {"l": 136.79984, "t": 603.52122, "r": 521.69189, "b": 612.73422, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "example a weekend day or holiday), access is denied. This test can be accomplished by ", "bbox": {"l": 136.79984, "t": 615.52103, "r": 528.19098, "b": 624.73402, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "performing a lookup using a subquery, such as the one that is shown in Example 3-1.", "bbox": {"l": 136.79984, "t": 627.5208299999999, "r": 512.61157, "b": 636.73383, "coord_origin": "TOPLEFT"}}]}, "text": "More sophisticated methods can employ existential, day of year / time of day, and relational comparisons with set operations. For example, you can use a date master or date dimension table to determine whether the current date is a normal business day. If the current date is a valid business day, then access is allowed. If the current date is not a business day (for example a weekend day or holiday), access is denied. This test can be accomplished by performing a lookup using a subquery, such as the one that is shown in Example 3-1."}, {"label": "caption", "id": 13, "page_no": 36, "cluster": {"id": 13, "label": "caption", "bbox": {"l": 136.3708953857422, "t": 648.479736328125, "r": 355.12689208984375, "b": 658.3316650390625, "coord_origin": "TOPLEFT"}, "confidence": 0.804072916507721, "cells": [{"id": 43, "text": "Example 3-1 Subquery that is used as part of the rule", "bbox": {"l": 136.8, "t": 649.5179, "r": 354.82498, "b": 657.84291, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-1 Subquery that is used as part of the rule"}, {"label": "text", "id": 14, "page_no": 36, "cluster": {"id": 14, "label": "text", "bbox": {"l": 136.8, "t": 666.67812, "r": 316.67755, "b": 699.452499, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 44, "text": "CURRENT_DATE IN (SELECT D.DATE_KEY", "bbox": {"l": 136.8, "t": 666.67812, "r": 316.67755, "b": 675.45288, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "FROM", "bbox": {"l": 177.39944, "t": 678.6779300000001, "r": 209.879, "b": 687.45269, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "WHERE", "bbox": {"l": 172.38135, "t": 690.67774, "r": 207.96268, "b": 699.452499, "coord_origin": "TOPLEFT"}}]}, "text": "CURRENT_DATE IN (SELECT D.DATE_KEY FROM WHERE"}, {"label": "text", "id": 15, "page_no": 36, "cluster": {"id": 15, "label": "text", "bbox": {"l": 226.11877, "t": 678.1546020507812, "r": 331.77557373046875, "b": 687.45269, "coord_origin": "TOPLEFT"}, "confidence": 0.6781665682792664, "cells": [{"id": 46, "text": "DATE_MASTER D", "bbox": {"l": 226.11877, "t": 678.6779300000001, "r": 331.67731, "b": 687.45269, "coord_origin": "TOPLEFT"}}]}, "text": "DATE_MASTER D"}, {"label": "text", "id": 16, "page_no": 36, "cluster": {"id": 16, "label": "text", "bbox": {"l": 222.19522, "t": 689.8526611328125, "r": 371.63684, "b": 700.1818237304688, "coord_origin": "TOPLEFT"}, "confidence": 0.7035561203956604, "cells": [{"id": 48, "text": "D.BUSINESS_DAY = 'Y')", "bbox": {"l": 222.19522, "t": 690.67774, "r": 371.63684, "b": 699.452499, "coord_origin": "TOPLEFT"}}]}, "text": "D.BUSINESS_DAY = 'Y')"}], "body": [{"label": "section_header", "id": 2, "page_no": 36, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.577880859375, "t": 70.0939712524414, "r": 512.90088, "b": 104.94421, "coord_origin": "TOPLEFT"}, "confidence": 0.9630382061004639, "cells": [{"id": 2, "text": "3.4", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 87.21553, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Establishing and controlling accessibility by using the ", "bbox": {"l": 91.698616, "t": 71.22069999999997, "r": 512.90088, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "RCAC rule text", "bbox": {"l": 64.800003, "t": 90.18120999999985, "r": 176.72586, "b": 104.94421, "coord_origin": "TOPLEFT"}}]}, "text": "3.4 Establishing and controlling accessibility by using the RCAC rule text"}, {"label": "text", "id": 3, "page_no": 36, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.82391357421875, "t": 121.33588409423828, "r": 544.90198, "b": 155.7215, "coord_origin": "TOPLEFT"}, "confidence": 0.9855659604072571, "cells": [{"id": 5, "text": "When defining a row permission or column mask, the \u201cmagic\u201d of establishing and controlling ", "bbox": {"l": 136.8, "t": 122.50867000000005, "r": 544.90198, "b": 131.72168, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "accessibility comes from the ", "bbox": {"l": 136.8, "t": 134.50847999999996, "r": 264.56488, "b": 143.7215, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "rule text", "bbox": {"l": 264.54001, "t": 133.98492, "r": 300.83551, "b": 144.0426, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": ". The rule text represents the search criteria and logic ", "bbox": {"l": 300.84, "t": 134.50867000000005, "r": 539.85315, "b": 143.72168, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "that is implemented by the database engine.", "bbox": {"l": 136.79979, "t": 146.50847999999996, "r": 332.60843, "b": 155.7215, "coord_origin": "TOPLEFT"}}]}, "text": "When defining a row permission or column mask, the \u201cmagic\u201d of establishing and controlling accessibility comes from the rule text . The rule text represents the search criteria and logic that is implemented by the database engine."}, {"label": "text", "id": 4, "page_no": 36, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.99398803710938, "t": 168.17491149902344, "r": 545.6568, "b": 214.0780029296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9861353635787964, "cells": [{"id": 10, "text": "In the case of a row permission, the rule text is the \u201ctest\u201d of whether the user can access the ", "bbox": {"l": 136.79979, "t": 168.52808000000005, "r": 545.6568, "b": 177.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "row. If the test result is true, the row can be accessed. If the test result is false, the row ", "bbox": {"l": 136.79979, "t": 180.52788999999996, "r": 520.19312, "b": 189.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "essentially does not exist for the user. From a set-at-a-time perspective, the permission ", "bbox": {"l": 136.79979, "t": 192.52770999999996, "r": 522.82147, "b": 201.74072, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "defines which rows can be part of the query result set, and which rows cannot.", "bbox": {"l": 136.7998, "t": 204.52752999999996, "r": 483.42691, "b": 213.74054, "coord_origin": "TOPLEFT"}}]}, "text": "In the case of a row permission, the rule text is the \u201ctest\u201d of whether the user can access the row. If the test result is true, the row can be accessed. If the test result is false, the row essentially does not exist for the user. From a set-at-a-time perspective, the permission defines which rows can be part of the query result set, and which rows cannot."}, {"label": "text", "id": 5, "page_no": 36, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.151123046875, "t": 225.48377990722656, "r": 537.8551, "b": 259.69994999999994, "coord_origin": "TOPLEFT"}, "confidence": 0.9822747707366943, "cells": [{"id": 14, "text": "In the case of a column mask, the rule text is both the test of whether the user can see the ", "bbox": {"l": 136.7998, "t": 226.4873, "r": 537.8551, "b": 235.70032000000003, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "actual column value, and it is the masking logic if the user cannot have access to actual ", "bbox": {"l": 136.7998, "t": 238.48712, "r": 525.43597, "b": 247.70012999999994, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "column value.", "bbox": {"l": 136.7998, "t": 250.48694, "r": 198.05679, "b": 259.69994999999994, "coord_origin": "TOPLEFT"}}]}, "text": "In the case of a column mask, the rule text is both the test of whether the user can see the actual column value, and it is the masking logic if the user cannot have access to actual column value."}, {"label": "text", "id": 6, "page_no": 36, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.31472778320312, "t": 271.4064636230469, "r": 547.2691, "b": 293.71936, "coord_origin": "TOPLEFT"}, "confidence": 0.9792705774307251, "cells": [{"id": 17, "text": "For a simple example of implementing row permissions and column masks, see 3.6, \u201cHuman ", "bbox": {"l": 136.7998, "t": 272.50653, "r": 547.2691, "b": 281.71954, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "resources example\u201d on page 22.", "bbox": {"l": 136.7998, "t": 284.50638, "r": 279.77264, "b": 293.71936, "coord_origin": "TOPLEFT"}}]}, "text": "For a simple example of implementing row permissions and column masks, see 3.6, \u201cHuman resources example\u201d on page 22."}, {"label": "text", "id": 7, "page_no": 36, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.01747131347656, "t": 306.14697265625, "r": 545.94769, "b": 327.9010925292969, "coord_origin": "TOPLEFT"}, "confidence": 0.9774510264396667, "cells": [{"id": 19, "text": "In general, almost any set-based, relational logic is valid. For the row permission, the search ", "bbox": {"l": 136.7998, "t": 306.52594, "r": 545.94769, "b": 315.73892000000006, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "condition follows the same rules that are used by the search condition in a WHERE clause.", "bbox": {"l": 136.7998, "t": 318.52576, "r": 537.92279, "b": 327.73874, "coord_origin": "TOPLEFT"}}]}, "text": "In general, almost any set-based, relational logic is valid. For the row permission, the search condition follows the same rules that are used by the search condition in a WHERE clause."}, {"label": "text", "id": 8, "page_no": 36, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.0785675048828, "t": 339.462646484375, "r": 547.24945, "b": 410.0204772949219, "coord_origin": "TOPLEFT"}, "confidence": 0.9882258176803589, "cells": [{"id": 21, "text": "For the column mask, the logic follows the same rules as the CASE expression. The result ", "bbox": {"l": 136.7998, "t": 340.48556999999994, "r": 537.5434, "b": 349.69855, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "data type, length, null attribute, and CCSID of the CASE expression must be compatible with ", "bbox": {"l": 136.79979, "t": 352.48538, "r": 547.18268, "b": 361.69836000000004, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "the data type of the column. If the column does not allow the null value, the result of the CASE ", "bbox": {"l": 136.80081, "t": 364.4852, "r": 547.24945, "b": 373.69818, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "expression cannot be the NULL value. The application or interface making the data access ", "bbox": {"l": 136.80083, "t": 376.48502, "r": 539.22668, "b": 385.698, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "request is expecting that all of the column attributes and values are consistent with the ", "bbox": {"l": 136.80083, "t": 388.48483, "r": 520.22992, "b": 397.69780999999995, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "original definition, regardless of any masking.", "bbox": {"l": 136.80083, "t": 400.48465, "r": 336.8624, "b": 409.69763000000006, "coord_origin": "TOPLEFT"}}]}, "text": "For the column mask, the logic follows the same rules as the CASE expression. The result data type, length, null attribute, and CCSID of the CASE expression must be compatible with the data type of the column. If the column does not allow the null value, the result of the CASE expression cannot be the NULL value. The application or interface making the data access request is expecting that all of the column attributes and values are consistent with the original definition, regardless of any masking."}, {"label": "text", "id": 9, "page_no": 36, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.35562133789062, "t": 421.3914794921875, "r": 542.04926, "b": 443.71701, "coord_origin": "TOPLEFT"}, "confidence": 0.9723648428916931, "cells": [{"id": 27, "text": "For more information about what is permitted, see the \u201cDatabase programming\u201d topic of the ", "bbox": {"l": 136.80083, "t": 422.50421000000006, "r": 542.04926, "b": 431.71719, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IBM i 7.2 Knowledge Center, found at:", "bbox": {"l": 136.80083, "t": 434.50403, "r": 304.71448, "b": 443.71701, "coord_origin": "TOPLEFT"}}]}, "text": "For more information about what is permitted, see the \u201cDatabase programming\u201d topic of the IBM i 7.2 Knowledge Center, found at:"}, {"label": "text", "id": 10, "page_no": 36, "cluster": {"id": 10, "label": "text", "bbox": {"l": 136.1328582763672, "t": 450.9010009765625, "r": 546.53522, "b": 472.40781, "coord_origin": "TOPLEFT"}, "confidence": 0.9142380952835083, "cells": [{"id": 29, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgdbp.htm?lang", "bbox": {"l": 136.80083, "t": 451.63321, "r": 546.53522, "b": 460.40799, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "=en", "bbox": {"l": 136.80083, "t": 463.63303, "r": 151.74083, "b": 472.40781, "coord_origin": "TOPLEFT"}}]}, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgdbp.htm?lang =en"}, {"label": "text", "id": 11, "page_no": 36, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.92572021484375, "t": 484.72674560546875, "r": 547.02722, "b": 554.9171142578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9879254102706909, "cells": [{"id": 31, "text": "One of the first tasks in either the row permission or the column mask logic is to determine ", "bbox": {"l": 136.80083, "t": 485.5032, "r": 538.12109, "b": 494.71619, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "who the user is, and whether they have access to the data. Elegant methods to establish the ", "bbox": {"l": 136.80083, "t": 497.50302, "r": 546.96045, "b": 506.716, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "identity and attributes of the user can be employed by using the special registers, global ", "bbox": {"l": 136.80083, "t": 509.50284, "r": 526.4729, "b": 518.71582, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "variables, and the VERIFY function. After the user\u2019s identity is established, it is a simple ", "bbox": {"l": 136.80083, "t": 521.50266, "r": 525.20898, "b": 530.71564, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "matter of allowing or disallowing access by using true or false testing. The examples that are ", "bbox": {"l": 136.79984, "t": 533.50244, "r": 547.02722, "b": 542.71545, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "included in this paper demonstrate some of the more common and obvious techniques.", "bbox": {"l": 136.79984, "t": 545.50226, "r": 521.35547, "b": 554.71526, "coord_origin": "TOPLEFT"}}]}, "text": "One of the first tasks in either the row permission or the column mask logic is to determine who the user is, and whether they have access to the data. Elegant methods to establish the identity and attributes of the user can be employed by using the special registers, global variables, and the VERIFY function. After the user\u2019s identity is established, it is a simple matter of allowing or disallowing access by using true or false testing. The examples that are included in this paper demonstrate some of the more common and obvious techniques."}, {"label": "text", "id": 12, "page_no": 36, "cluster": {"id": 12, "label": "text", "bbox": {"l": 136.01707458496094, "t": 566.9345703125, "r": 547.37488, "b": 637.0723266601562, "coord_origin": "TOPLEFT"}, "confidence": 0.9875260591506958, "cells": [{"id": 37, "text": "More sophisticated methods can employ existential, day of year / time of day, and relational ", "bbox": {"l": 136.79984, "t": 567.5218199999999, "r": 541.17859, "b": 576.73482, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "comparisons with set operations. For example, you can use a date master or date dimension ", "bbox": {"l": 136.79984, "t": 579.52162, "r": 547.37488, "b": 588.73462, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "table to determine whether the current date is a normal business day. If the current date is a ", "bbox": {"l": 136.79984, "t": 591.52142, "r": 544.3847, "b": 600.73442, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "valid business day, then access is allowed. If the current date is not a business day (for ", "bbox": {"l": 136.79984, "t": 603.52122, "r": 521.69189, "b": 612.73422, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "example a weekend day or holiday), access is denied. This test can be accomplished by ", "bbox": {"l": 136.79984, "t": 615.52103, "r": 528.19098, "b": 624.73402, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "performing a lookup using a subquery, such as the one that is shown in Example 3-1.", "bbox": {"l": 136.79984, "t": 627.5208299999999, "r": 512.61157, "b": 636.73383, "coord_origin": "TOPLEFT"}}]}, "text": "More sophisticated methods can employ existential, day of year / time of day, and relational comparisons with set operations. For example, you can use a date master or date dimension table to determine whether the current date is a normal business day. If the current date is a valid business day, then access is allowed. If the current date is not a business day (for example a weekend day or holiday), access is denied. This test can be accomplished by performing a lookup using a subquery, such as the one that is shown in Example 3-1."}, {"label": "caption", "id": 13, "page_no": 36, "cluster": {"id": 13, "label": "caption", "bbox": {"l": 136.3708953857422, "t": 648.479736328125, "r": 355.12689208984375, "b": 658.3316650390625, "coord_origin": "TOPLEFT"}, "confidence": 0.804072916507721, "cells": [{"id": 43, "text": "Example 3-1 Subquery that is used as part of the rule", "bbox": {"l": 136.8, "t": 649.5179, "r": 354.82498, "b": 657.84291, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-1 Subquery that is used as part of the rule"}, {"label": "text", "id": 14, "page_no": 36, "cluster": {"id": 14, "label": "text", "bbox": {"l": 136.8, "t": 666.67812, "r": 316.67755, "b": 699.452499, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 44, "text": "CURRENT_DATE IN (SELECT D.DATE_KEY", "bbox": {"l": 136.8, "t": 666.67812, "r": 316.67755, "b": 675.45288, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "FROM", "bbox": {"l": 177.39944, "t": 678.6779300000001, "r": 209.879, "b": 687.45269, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "WHERE", "bbox": {"l": 172.38135, "t": 690.67774, "r": 207.96268, "b": 699.452499, "coord_origin": "TOPLEFT"}}]}, "text": "CURRENT_DATE IN (SELECT D.DATE_KEY FROM WHERE"}, {"label": "text", "id": 15, "page_no": 36, "cluster": {"id": 15, "label": "text", "bbox": {"l": 226.11877, "t": 678.1546020507812, "r": 331.77557373046875, "b": 687.45269, "coord_origin": "TOPLEFT"}, "confidence": 0.6781665682792664, "cells": [{"id": 46, "text": "DATE_MASTER D", "bbox": {"l": 226.11877, "t": 678.6779300000001, "r": 331.67731, "b": 687.45269, "coord_origin": "TOPLEFT"}}]}, "text": "DATE_MASTER D"}, {"label": "text", "id": 16, "page_no": 36, "cluster": {"id": 16, "label": "text", "bbox": {"l": 222.19522, "t": 689.8526611328125, "r": 371.63684, "b": 700.1818237304688, "coord_origin": "TOPLEFT"}, "confidence": 0.7035561203956604, "cells": [{"id": 48, "text": "D.BUSINESS_DAY = 'Y')", "bbox": {"l": 222.19522, "t": 690.67774, "r": 371.63684, "b": 699.452499, "coord_origin": "TOPLEFT"}}]}, "text": "D.BUSINESS_DAY = 'Y')"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 36, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.57867431640625, "t": 754.7420043945312, "r": 523.60162, "b": 764.0948486328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9520102739334106, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 36, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.7230834960938, "t": 754.28857421875, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9108889102935791, "cells": [{"id": 1, "text": "21", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "21"}]}}, {"page_no": 37, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "22 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Given that joins and subqueries can be used to perform set-based operations against existing ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 547.29156, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "data that is housed in other objects, almost any relational test can be constructed. If the data ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 547.18164, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "in the objects is manipulated over time, the RCAC test logic (and user query results) can be ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 542.89301, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "changed without modifying the actual row permission or column mask. This includes moving ", "bbox": {"l": 136.8, "t": 107.50811999999996, "r": 546.20483, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "a user from one group to another or changing a column value that is used to allow or disallow ", "bbox": {"l": 136.8, "t": 119.50792999999999, "r": 547.21387, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "access. For example, if Saturday is now a valid business day, only the BUSINESS_DAY value ", "bbox": {"l": 136.8, "t": 131.50775, "r": 547.23071, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "in the DATE_MASTER must be updated, not the permission logic. This technique can ", "bbox": {"l": 136.79999, "t": 143.50757, "r": 516.55499, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "potentially avoid downtime because of the exclusive lock that is needed on the table when ", "bbox": {"l": 136.79999, "t": 155.50739, "r": 535.33044, "b": 164.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "adding or changing RCAC definitions.", "bbox": {"l": 136.79999, "t": 167.5072, "r": 302.98856, "b": 176.72020999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "3.5", "bbox": {"l": 64.800003, "t": 205.20068000000003, "r": 86.952782, "b": 219.96367999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "SELECT, INSERT, and UPDATE behavior with RCAC", "bbox": {"l": 91.383354, "t": 205.20068000000003, "r": 486.32437, "b": 219.96367999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "RCAC provides a database-centric approach to determining which rows can be accessed and ", "bbox": {"l": 136.8, "t": 237.52868999999998, "r": 547.2735, "b": 246.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "what column values can be seen by a specific user. Given that the control is handled by DB2 ", "bbox": {"l": 136.8, "t": 249.5285, "r": 547.29742, "b": 258.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "internally, every data manipulation statement is under the influence of RCAC, with no ", "bbox": {"l": 136.8, "t": 261.52832, "r": 513.53516, "b": 270.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "exceptions. When accessing the table, the ", "bbox": {"l": 136.8, "t": 273.52814, "r": 325.96036, "b": 282.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "SELECT", "bbox": {"l": 325.98022, "t": 273.67755, "r": 355.97977, "b": 282.50214000000005, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": " statements, searched ", "bbox": {"l": 355.97974, "t": 273.52814, "r": 456.93231, "b": 282.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "UPDATE", "bbox": {"l": 456.96020999999996, "t": 273.67755, "r": 486.89996, "b": 282.50214000000005, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": " statements, ", "bbox": {"l": 486.89996, "t": 273.52814, "r": 544.01459, "b": 282.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "and searched ", "bbox": {"l": 136.79999, "t": 285.52798, "r": 200.11673, "b": 294.74097, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "DELETE", "bbox": {"l": 200.15953, "t": 285.67736999999994, "r": 230.15904000000003, "b": 294.50195, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": " statements implicitly and transparently contain the row permission and ", "bbox": {"l": 230.09929, "t": 285.52798, "r": 546.29034, "b": 294.74097, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "the column mask rule text. This means that the data set can be logically restricted and ", "bbox": {"l": 136.79898, "t": 297.5278, "r": 519.62463, "b": 306.7407799999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "reduced on a user by user basis.", "bbox": {"l": 136.79898, "t": 309.52762, "r": 281.48892, "b": 318.74060000000003, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Furthermore, DB2 prevents an ", "bbox": {"l": 136.79898, "t": 331.48743, "r": 273.8327, "b": 340.70041, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "INSERT", "bbox": {"l": 273.77887, "t": 331.63681, "r": 303.77838, "b": 340.46139999999997, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": " statement from inserting a row or an ", "bbox": {"l": 303.77838, "t": 331.48743, "r": 468.12946, "b": 340.70041, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "UPDATE", "bbox": {"l": 468.11838, "t": 331.63681, "r": 498.11792, "b": 340.46139999999997, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": " statement ", "bbox": {"l": 498.11789, "t": 331.48743, "r": 547.19586, "b": 340.70041, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "from modifying a row such that the current user cannot be permitted to access it. You cannot ", "bbox": {"l": 136.79797, "t": 343.48724, "r": 547.10968, "b": 352.70023, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "create a situation in which the data you inserted or changed is no longer accessible to you.", "bbox": {"l": 136.79797, "t": 355.48706, "r": 537.22864, "b": 364.70004, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "For more information and considerations about data movement in an RCAC environment, see ", "bbox": {"l": 136.79797, "t": 377.50661999999994, "r": 547.26068, "b": 386.7196, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Chapter 6, \u201cAdditional considerations\u201d on page 85.", "bbox": {"l": 136.79797, "t": 389.50644000000005, "r": 359.45187, "b": 398.71942, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "3.6", "bbox": {"l": 64.800003, "t": 484.20062, "r": 87.400505, "b": 498.96362, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Human resources example", "bbox": {"l": 91.920601, "t": 484.20062, "r": 298.85339, "b": 498.96362, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "This section illustrates with a simple example the usage of RCAC on a typical Human ", "bbox": {"l": 136.8, "t": 516.52863, "r": 515.45135, "b": 525.74161, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Resources application (schema). In this sample Human Resources schema, there is an ", "bbox": {"l": 136.79999, "t": 528.52844, "r": 525.09943, "b": 537.74144, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "important table that is called EMPLOYEES that contains all the information that is related to ", "bbox": {"l": 136.79999, "t": 540.52824, "r": 542.82935, "b": 549.7412400000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "the employees of the company. Among the information that normally is stored in the ", "bbox": {"l": 136.79996, "t": 552.52805, "r": 508.23926, "b": 561.74104, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "EMPLOYEES table, there is some sensitive information that must be hidden from certain ", "bbox": {"l": 136.79996, "t": 564.52785, "r": 530.18805, "b": 573.7408399999999, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "users:", "bbox": {"l": 136.79996, "t": 576.52765, "r": 163.97581, "b": 585.74065, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "GLYPH", "bbox": {"l": 136.79996, "t": 593.65686, "r": 141.77995, "b": 602.43161, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Tax_Id information ", "bbox": {"l": 151.20012, "t": 593.50746, "r": 235.38602, "b": 602.72046, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "GLYPH", "bbox": {"l": 136.79996, "t": 605.65666, "r": 141.77995, "b": 614.43141, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "YEAR of the birth date of the employee (hiding the age of the employee)", "bbox": {"l": 151.20012, "t": 605.50726, "r": 470.03765999999996, "b": 614.72026, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "In this example, there are four different types of users:", "bbox": {"l": 136.79994, "t": 627.52682, "r": 375.29803, "b": 636.73982, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "GLYPH", "bbox": {"l": 136.79994, "t": 644.65604, "r": 141.77994, "b": 653.43079, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Employees", "bbox": {"l": 151.2001, "t": 644.5066400000001, "r": 200.11467, "b": 653.71964, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "GLYPH", "bbox": {"l": 136.79994, "t": 656.65584, "r": 141.77994, "b": 665.4306, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Managers", "bbox": {"l": 151.2001, "t": 656.50644, "r": 195.63866, "b": 665.71944, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "GLYPH", "bbox": {"l": 136.79994, "t": 668.65565, "r": 141.77994, "b": 677.4304, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "Human Resources Manager", "bbox": {"l": 151.2001, "t": 668.50624, "r": 276.16125, "b": 677.71925, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "GLYPH", "bbox": {"l": 136.79994, "t": 680.65546, "r": 141.77994, "b": 689.43021, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Consultant/IT Database Engineer (In this example, this person is an external consultant ", "bbox": {"l": 151.2001, "t": 680.50605, "r": 539.58447, "b": 689.71906, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "that is not an employee of the company.)", "bbox": {"l": 151.2001, "t": 692.505859, "r": 330.16245, "b": 701.7188639999999, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "The following sections describe step-by-step what is needed to be done to implement RCAC ", "bbox": {"l": 136.79994, "t": 714.525429, "r": 546.52435, "b": 723.738434, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "in this environment.", "bbox": {"l": 136.79994, "t": 726.525238, "r": 223.17204000000004, "b": 735.738243, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "Note:", "bbox": {"l": 142.8, "t": 417.52872, "r": 168.33246, "b": 426.7417, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": " DB2 does not provide any indication back to the user that the data set requested ", "bbox": {"l": 168.36035, "t": 417.52872, "r": 529.13947, "b": 426.7417, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "was restricted or reduced by RCAC. This is by design, as it helps minimize any changes to ", "bbox": {"l": 142.8, "t": 429.52853, "r": 541.21985, "b": 438.74152, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "the applications accessing the data.", "bbox": {"l": 142.8, "t": 441.52835, "r": 301.22571, "b": 450.74132999999995, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.83726119995117, "t": 754.3733520507812, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9199120402336121, "cells": [{"id": 0, "text": "22 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.2356185913086, "t": 754.7048950195312, "r": 334.42142, "b": 763.8771362304688, "coord_origin": "TOPLEFT"}, "confidence": 0.9534041881561279, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.83892822265625, "t": 70.66429138183594, "r": 547.29156, "b": 176.9203643798828, "coord_origin": "TOPLEFT"}, "confidence": 0.9871932864189148, "cells": [{"id": 2, "text": "Given that joins and subqueries can be used to perform set-based operations against existing ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 547.29156, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "data that is housed in other objects, almost any relational test can be constructed. If the data ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 547.18164, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "in the objects is manipulated over time, the RCAC test logic (and user query results) can be ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 542.89301, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "changed without modifying the actual row permission or column mask. This includes moving ", "bbox": {"l": 136.8, "t": 107.50811999999996, "r": 546.20483, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "a user from one group to another or changing a column value that is used to allow or disallow ", "bbox": {"l": 136.8, "t": 119.50792999999999, "r": 547.21387, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "access. For example, if Saturday is now a valid business day, only the BUSINESS_DAY value ", "bbox": {"l": 136.8, "t": 131.50775, "r": 547.23071, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "in the DATE_MASTER must be updated, not the permission logic. This technique can ", "bbox": {"l": 136.79999, "t": 143.50757, "r": 516.55499, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "potentially avoid downtime because of the exclusive lock that is needed on the table when ", "bbox": {"l": 136.79999, "t": 155.50739, "r": 535.33044, "b": 164.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "adding or changing RCAC definitions.", "bbox": {"l": 136.79999, "t": 167.5072, "r": 302.98856, "b": 176.72020999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "section_header", "bbox": {"l": 64.40492248535156, "t": 203.78817749023438, "r": 486.32437, "b": 219.96367999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9655107259750366, "cells": [{"id": 11, "text": "3.5", "bbox": {"l": 64.800003, "t": 205.20068000000003, "r": 86.952782, "b": 219.96367999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "SELECT, INSERT, and UPDATE behavior with RCAC", "bbox": {"l": 91.383354, "t": 205.20068000000003, "r": 486.32437, "b": 219.96367999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.95579528808594, "t": 236.6680450439453, "r": 547.29742, "b": 318.8705749511719, "coord_origin": "TOPLEFT"}, "confidence": 0.9883361458778381, "cells": [{"id": 13, "text": "RCAC provides a database-centric approach to determining which rows can be accessed and ", "bbox": {"l": 136.8, "t": 237.52868999999998, "r": 547.2735, "b": 246.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "what column values can be seen by a specific user. Given that the control is handled by DB2 ", "bbox": {"l": 136.8, "t": 249.5285, "r": 547.29742, "b": 258.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "internally, every data manipulation statement is under the influence of RCAC, with no ", "bbox": {"l": 136.8, "t": 261.52832, "r": 513.53516, "b": 270.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "exceptions. When accessing the table, the ", "bbox": {"l": 136.8, "t": 273.52814, "r": 325.96036, "b": 282.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "SELECT", "bbox": {"l": 325.98022, "t": 273.67755, "r": 355.97977, "b": 282.50214000000005, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": " statements, searched ", "bbox": {"l": 355.97974, "t": 273.52814, "r": 456.93231, "b": 282.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "UPDATE", "bbox": {"l": 456.96020999999996, "t": 273.67755, "r": 486.89996, "b": 282.50214000000005, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": " statements, ", "bbox": {"l": 486.89996, "t": 273.52814, "r": 544.01459, "b": 282.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "and searched ", "bbox": {"l": 136.79999, "t": 285.52798, "r": 200.11673, "b": 294.74097, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "DELETE", "bbox": {"l": 200.15953, "t": 285.67736999999994, "r": 230.15904000000003, "b": 294.50195, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": " statements implicitly and transparently contain the row permission and ", "bbox": {"l": 230.09929, "t": 285.52798, "r": 546.29034, "b": 294.74097, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "the column mask rule text. This means that the data set can be logically restricted and ", "bbox": {"l": 136.79898, "t": 297.5278, "r": 519.62463, "b": 306.7407799999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "reduced on a user by user basis.", "bbox": {"l": 136.79898, "t": 309.52762, "r": 281.48892, "b": 318.74060000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.07569885253906, "t": 330.7037658691406, "r": 547.19586, "b": 365.0055236816406, "coord_origin": "TOPLEFT"}, "confidence": 0.9833049774169922, "cells": [{"id": 26, "text": "Furthermore, DB2 prevents an ", "bbox": {"l": 136.79898, "t": 331.48743, "r": 273.8327, "b": 340.70041, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "INSERT", "bbox": {"l": 273.77887, "t": 331.63681, "r": 303.77838, "b": 340.46139999999997, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": " statement from inserting a row or an ", "bbox": {"l": 303.77838, "t": 331.48743, "r": 468.12946, "b": 340.70041, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "UPDATE", "bbox": {"l": 468.11838, "t": 331.63681, "r": 498.11792, "b": 340.46139999999997, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": " statement ", "bbox": {"l": 498.11789, "t": 331.48743, "r": 547.19586, "b": 340.70041, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "from modifying a row such that the current user cannot be permitted to access it. You cannot ", "bbox": {"l": 136.79797, "t": 343.48724, "r": 547.10968, "b": 352.70023, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "create a situation in which the data you inserted or changed is no longer accessible to you.", "bbox": {"l": 136.79797, "t": 355.48706, "r": 537.22864, "b": 364.70004, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 136.00733947753906, "t": 376.6234130859375, "r": 547.26068, "b": 398.8757019042969, "coord_origin": "TOPLEFT"}, "confidence": 0.9724586009979248, "cells": [{"id": 33, "text": "For more information and considerations about data movement in an RCAC environment, see ", "bbox": {"l": 136.79797, "t": 377.50661999999994, "r": 547.26068, "b": 386.7196, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Chapter 6, \u201cAdditional considerations\u201d on page 85.", "bbox": {"l": 136.79797, "t": 389.50644000000005, "r": 359.45187, "b": 398.71942, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "section_header", "bbox": {"l": 64.5394515991211, "t": 483.1797180175781, "r": 298.85339, "b": 499.07220458984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9677695631980896, "cells": [{"id": 35, "text": "3.6", "bbox": {"l": 64.800003, "t": 484.20062, "r": 87.400505, "b": 498.96362, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Human resources example", "bbox": {"l": 91.920601, "t": 484.20062, "r": 298.85339, "b": 498.96362, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 135.87118530273438, "t": 516.0023193359375, "r": 542.82935, "b": 585.74065, "coord_origin": "TOPLEFT"}, "confidence": 0.9858933687210083, "cells": [{"id": 37, "text": "This section illustrates with a simple example the usage of RCAC on a typical Human ", "bbox": {"l": 136.8, "t": 516.52863, "r": 515.45135, "b": 525.74161, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Resources application (schema). In this sample Human Resources schema, there is an ", "bbox": {"l": 136.79999, "t": 528.52844, "r": 525.09943, "b": 537.74144, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "important table that is called EMPLOYEES that contains all the information that is related to ", "bbox": {"l": 136.79999, "t": 540.52824, "r": 542.82935, "b": 549.7412400000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "the employees of the company. Among the information that normally is stored in the ", "bbox": {"l": 136.79996, "t": 552.52805, "r": 508.23926, "b": 561.74104, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "EMPLOYEES table, there is some sensitive information that must be hidden from certain ", "bbox": {"l": 136.79996, "t": 564.52785, "r": 530.18805, "b": 573.7408399999999, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "users:", "bbox": {"l": 136.79996, "t": 576.52765, "r": 163.97581, "b": 585.74065, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.85508728027344, "t": 592.7136840820312, "r": 235.38602, "b": 602.72046, "coord_origin": "TOPLEFT"}, "confidence": 0.9412627220153809, "cells": [{"id": 43, "text": "GLYPH", "bbox": {"l": 136.79996, "t": 593.65686, "r": 141.77995, "b": 602.43161, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Tax_Id information ", "bbox": {"l": 151.20012, "t": 593.50746, "r": 235.38602, "b": 602.72046, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 135.5828094482422, "t": 604.7291259765625, "r": 470.03765999999996, "b": 614.775634765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9563513398170471, "cells": [{"id": 45, "text": "GLYPH", "bbox": {"l": 136.79996, "t": 605.65666, "r": 141.77995, "b": 614.43141, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "YEAR of the birth date of the employee (hiding the age of the employee)", "bbox": {"l": 151.20012, "t": 605.50726, "r": 470.03765999999996, "b": 614.72026, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 136.1318817138672, "t": 626.7003173828125, "r": 375.29803, "b": 636.9021606445312, "coord_origin": "TOPLEFT"}, "confidence": 0.9345581531524658, "cells": [{"id": 47, "text": "In this example, there are four different types of users:", "bbox": {"l": 136.79994, "t": 627.52682, "r": 375.29803, "b": 636.73982, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "list_item", "bbox": {"l": 135.77261352539062, "t": 643.6381225585938, "r": 200.11467, "b": 653.71964, "coord_origin": "TOPLEFT"}, "confidence": 0.9286965727806091, "cells": [{"id": 48, "text": "GLYPH", "bbox": {"l": 136.79994, "t": 644.65604, "r": 141.77994, "b": 653.43079, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Employees", "bbox": {"l": 151.2001, "t": 644.5066400000001, "r": 200.11467, "b": 653.71964, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "list_item", "bbox": {"l": 135.6394805908203, "t": 655.4417724609375, "r": 195.63866, "b": 665.71944, "coord_origin": "TOPLEFT"}, "confidence": 0.9287638664245605, "cells": [{"id": 50, "text": "GLYPH", "bbox": {"l": 136.79994, "t": 656.65584, "r": 141.77994, "b": 665.4306, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Managers", "bbox": {"l": 151.2001, "t": 656.50644, "r": 195.63866, "b": 665.71944, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "list_item", "bbox": {"l": 135.6507568359375, "t": 667.2589111328125, "r": 276.5639343261719, "b": 677.71925, "coord_origin": "TOPLEFT"}, "confidence": 0.9430361390113831, "cells": [{"id": 52, "text": "GLYPH", "bbox": {"l": 136.79994, "t": 668.65565, "r": 141.77994, "b": 677.4304, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "Human Resources Manager", "bbox": {"l": 151.2001, "t": 668.50624, "r": 276.16125, "b": 677.71925, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "list_item", "bbox": {"l": 135.71376037597656, "t": 679.4451904296875, "r": 539.58447, "b": 701.7188639999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9746949672698975, "cells": [{"id": 54, "text": "GLYPH", "bbox": {"l": 136.79994, "t": 680.65546, "r": 141.77994, "b": 689.43021, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Consultant/IT Database Engineer (In this example, this person is an external consultant ", "bbox": {"l": 151.2001, "t": 680.50605, "r": 539.58447, "b": 689.71906, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "that is not an employee of the company.)", "bbox": {"l": 151.2001, "t": 692.505859, "r": 330.16245, "b": 701.7188639999999, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "text", "bbox": {"l": 135.66419982910156, "t": 713.9166870117188, "r": 546.52435, "b": 735.738243, "coord_origin": "TOPLEFT"}, "confidence": 0.9735910892486572, "cells": [{"id": 57, "text": "The following sections describe step-by-step what is needed to be done to implement RCAC ", "bbox": {"l": 136.79994, "t": 714.525429, "r": 546.52435, "b": 723.738434, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "in this environment.", "bbox": {"l": 136.79994, "t": 726.525238, "r": 223.17204000000004, "b": 735.738243, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "text", "bbox": {"l": 141.89248657226562, "t": 416.5281066894531, "r": 541.21985, "b": 451.1007080078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9794700741767883, "cells": [{"id": 59, "text": "Note:", "bbox": {"l": 142.8, "t": 417.52872, "r": 168.33246, "b": 426.7417, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": " DB2 does not provide any indication back to the user that the data set requested ", "bbox": {"l": 168.36035, "t": 417.52872, "r": 529.13947, "b": 426.7417, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "was restricted or reduced by RCAC. This is by design, as it helps minimize any changes to ", "bbox": {"l": 142.8, "t": 429.52853, "r": 541.21985, "b": 438.74152, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "the applications accessing the data.", "bbox": {"l": 142.8, "t": 441.52835, "r": 301.22571, "b": 450.74132999999995, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 37, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.83726119995117, "t": 754.3733520507812, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9199120402336121, "cells": [{"id": 0, "text": "22 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "22"}, {"label": "page_footer", "id": 1, "page_no": 37, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.2356185913086, "t": 754.7048950195312, "r": 334.42142, "b": 763.8771362304688, "coord_origin": "TOPLEFT"}, "confidence": 0.9534041881561279, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 2, "page_no": 37, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.83892822265625, "t": 70.66429138183594, "r": 547.29156, "b": 176.9203643798828, "coord_origin": "TOPLEFT"}, "confidence": 0.9871932864189148, "cells": [{"id": 2, "text": "Given that joins and subqueries can be used to perform set-based operations against existing ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 547.29156, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "data that is housed in other objects, almost any relational test can be constructed. If the data ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 547.18164, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "in the objects is manipulated over time, the RCAC test logic (and user query results) can be ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 542.89301, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "changed without modifying the actual row permission or column mask. This includes moving ", "bbox": {"l": 136.8, "t": 107.50811999999996, "r": 546.20483, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "a user from one group to another or changing a column value that is used to allow or disallow ", "bbox": {"l": 136.8, "t": 119.50792999999999, "r": 547.21387, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "access. For example, if Saturday is now a valid business day, only the BUSINESS_DAY value ", "bbox": {"l": 136.8, "t": 131.50775, "r": 547.23071, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "in the DATE_MASTER must be updated, not the permission logic. This technique can ", "bbox": {"l": 136.79999, "t": 143.50757, "r": 516.55499, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "potentially avoid downtime because of the exclusive lock that is needed on the table when ", "bbox": {"l": 136.79999, "t": 155.50739, "r": 535.33044, "b": 164.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "adding or changing RCAC definitions.", "bbox": {"l": 136.79999, "t": 167.5072, "r": 302.98856, "b": 176.72020999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Given that joins and subqueries can be used to perform set-based operations against existing data that is housed in other objects, almost any relational test can be constructed. If the data in the objects is manipulated over time, the RCAC test logic (and user query results) can be changed without modifying the actual row permission or column mask. This includes moving a user from one group to another or changing a column value that is used to allow or disallow access. For example, if Saturday is now a valid business day, only the BUSINESS_DAY value in the DATE_MASTER must be updated, not the permission logic. This technique can potentially avoid downtime because of the exclusive lock that is needed on the table when adding or changing RCAC definitions."}, {"label": "section_header", "id": 3, "page_no": 37, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 64.40492248535156, "t": 203.78817749023438, "r": 486.32437, "b": 219.96367999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9655107259750366, "cells": [{"id": 11, "text": "3.5", "bbox": {"l": 64.800003, "t": 205.20068000000003, "r": 86.952782, "b": 219.96367999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "SELECT, INSERT, and UPDATE behavior with RCAC", "bbox": {"l": 91.383354, "t": 205.20068000000003, "r": 486.32437, "b": 219.96367999999995, "coord_origin": "TOPLEFT"}}]}, "text": "3.5 SELECT, INSERT, and UPDATE behavior with RCAC"}, {"label": "text", "id": 4, "page_no": 37, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.95579528808594, "t": 236.6680450439453, "r": 547.29742, "b": 318.8705749511719, "coord_origin": "TOPLEFT"}, "confidence": 0.9883361458778381, "cells": [{"id": 13, "text": "RCAC provides a database-centric approach to determining which rows can be accessed and ", "bbox": {"l": 136.8, "t": 237.52868999999998, "r": 547.2735, "b": 246.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "what column values can be seen by a specific user. Given that the control is handled by DB2 ", "bbox": {"l": 136.8, "t": 249.5285, "r": 547.29742, "b": 258.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "internally, every data manipulation statement is under the influence of RCAC, with no ", "bbox": {"l": 136.8, "t": 261.52832, "r": 513.53516, "b": 270.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "exceptions. When accessing the table, the ", "bbox": {"l": 136.8, "t": 273.52814, "r": 325.96036, "b": 282.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "SELECT", "bbox": {"l": 325.98022, "t": 273.67755, "r": 355.97977, "b": 282.50214000000005, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": " statements, searched ", "bbox": {"l": 355.97974, "t": 273.52814, "r": 456.93231, "b": 282.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "UPDATE", "bbox": {"l": 456.96020999999996, "t": 273.67755, "r": 486.89996, "b": 282.50214000000005, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": " statements, ", "bbox": {"l": 486.89996, "t": 273.52814, "r": 544.01459, "b": 282.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "and searched ", "bbox": {"l": 136.79999, "t": 285.52798, "r": 200.11673, "b": 294.74097, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "DELETE", "bbox": {"l": 200.15953, "t": 285.67736999999994, "r": 230.15904000000003, "b": 294.50195, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": " statements implicitly and transparently contain the row permission and ", "bbox": {"l": 230.09929, "t": 285.52798, "r": 546.29034, "b": 294.74097, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "the column mask rule text. This means that the data set can be logically restricted and ", "bbox": {"l": 136.79898, "t": 297.5278, "r": 519.62463, "b": 306.7407799999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "reduced on a user by user basis.", "bbox": {"l": 136.79898, "t": 309.52762, "r": 281.48892, "b": 318.74060000000003, "coord_origin": "TOPLEFT"}}]}, "text": "RCAC provides a database-centric approach to determining which rows can be accessed and what column values can be seen by a specific user. Given that the control is handled by DB2 internally, every data manipulation statement is under the influence of RCAC, with no exceptions. When accessing the table, the SELECT statements, searched UPDATE statements, and searched DELETE statements implicitly and transparently contain the row permission and the column mask rule text. This means that the data set can be logically restricted and reduced on a user by user basis."}, {"label": "text", "id": 5, "page_no": 37, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.07569885253906, "t": 330.7037658691406, "r": 547.19586, "b": 365.0055236816406, "coord_origin": "TOPLEFT"}, "confidence": 0.9833049774169922, "cells": [{"id": 26, "text": "Furthermore, DB2 prevents an ", "bbox": {"l": 136.79898, "t": 331.48743, "r": 273.8327, "b": 340.70041, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "INSERT", "bbox": {"l": 273.77887, "t": 331.63681, "r": 303.77838, "b": 340.46139999999997, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": " statement from inserting a row or an ", "bbox": {"l": 303.77838, "t": 331.48743, "r": 468.12946, "b": 340.70041, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "UPDATE", "bbox": {"l": 468.11838, "t": 331.63681, "r": 498.11792, "b": 340.46139999999997, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": " statement ", "bbox": {"l": 498.11789, "t": 331.48743, "r": 547.19586, "b": 340.70041, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "from modifying a row such that the current user cannot be permitted to access it. You cannot ", "bbox": {"l": 136.79797, "t": 343.48724, "r": 547.10968, "b": 352.70023, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "create a situation in which the data you inserted or changed is no longer accessible to you.", "bbox": {"l": 136.79797, "t": 355.48706, "r": 537.22864, "b": 364.70004, "coord_origin": "TOPLEFT"}}]}, "text": "Furthermore, DB2 prevents an INSERT statement from inserting a row or an UPDATE statement from modifying a row such that the current user cannot be permitted to access it. You cannot create a situation in which the data you inserted or changed is no longer accessible to you."}, {"label": "text", "id": 6, "page_no": 37, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.00733947753906, "t": 376.6234130859375, "r": 547.26068, "b": 398.8757019042969, "coord_origin": "TOPLEFT"}, "confidence": 0.9724586009979248, "cells": [{"id": 33, "text": "For more information and considerations about data movement in an RCAC environment, see ", "bbox": {"l": 136.79797, "t": 377.50661999999994, "r": 547.26068, "b": 386.7196, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Chapter 6, \u201cAdditional considerations\u201d on page 85.", "bbox": {"l": 136.79797, "t": 389.50644000000005, "r": 359.45187, "b": 398.71942, "coord_origin": "TOPLEFT"}}]}, "text": "For more information and considerations about data movement in an RCAC environment, see Chapter 6, \u201cAdditional considerations\u201d on page 85."}, {"label": "section_header", "id": 7, "page_no": 37, "cluster": {"id": 7, "label": "section_header", "bbox": {"l": 64.5394515991211, "t": 483.1797180175781, "r": 298.85339, "b": 499.07220458984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9677695631980896, "cells": [{"id": 35, "text": "3.6", "bbox": {"l": 64.800003, "t": 484.20062, "r": 87.400505, "b": 498.96362, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Human resources example", "bbox": {"l": 91.920601, "t": 484.20062, "r": 298.85339, "b": 498.96362, "coord_origin": "TOPLEFT"}}]}, "text": "3.6 Human resources example"}, {"label": "text", "id": 8, "page_no": 37, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.87118530273438, "t": 516.0023193359375, "r": 542.82935, "b": 585.74065, "coord_origin": "TOPLEFT"}, "confidence": 0.9858933687210083, "cells": [{"id": 37, "text": "This section illustrates with a simple example the usage of RCAC on a typical Human ", "bbox": {"l": 136.8, "t": 516.52863, "r": 515.45135, "b": 525.74161, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Resources application (schema). In this sample Human Resources schema, there is an ", "bbox": {"l": 136.79999, "t": 528.52844, "r": 525.09943, "b": 537.74144, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "important table that is called EMPLOYEES that contains all the information that is related to ", "bbox": {"l": 136.79999, "t": 540.52824, "r": 542.82935, "b": 549.7412400000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "the employees of the company. Among the information that normally is stored in the ", "bbox": {"l": 136.79996, "t": 552.52805, "r": 508.23926, "b": 561.74104, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "EMPLOYEES table, there is some sensitive information that must be hidden from certain ", "bbox": {"l": 136.79996, "t": 564.52785, "r": 530.18805, "b": 573.7408399999999, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "users:", "bbox": {"l": 136.79996, "t": 576.52765, "r": 163.97581, "b": 585.74065, "coord_origin": "TOPLEFT"}}]}, "text": "This section illustrates with a simple example the usage of RCAC on a typical Human Resources application (schema). In this sample Human Resources schema, there is an important table that is called EMPLOYEES that contains all the information that is related to the employees of the company. Among the information that normally is stored in the EMPLOYEES table, there is some sensitive information that must be hidden from certain users:"}, {"label": "list_item", "id": 9, "page_no": 37, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.85508728027344, "t": 592.7136840820312, "r": 235.38602, "b": 602.72046, "coord_origin": "TOPLEFT"}, "confidence": 0.9412627220153809, "cells": [{"id": 43, "text": "GLYPH", "bbox": {"l": 136.79996, "t": 593.65686, "r": 141.77995, "b": 602.43161, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Tax_Id information ", "bbox": {"l": 151.20012, "t": 593.50746, "r": 235.38602, "b": 602.72046, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Tax_Id information"}, {"label": "list_item", "id": 10, "page_no": 37, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.5828094482422, "t": 604.7291259765625, "r": 470.03765999999996, "b": 614.775634765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9563513398170471, "cells": [{"id": 45, "text": "GLYPH", "bbox": {"l": 136.79996, "t": 605.65666, "r": 141.77995, "b": 614.43141, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "YEAR of the birth date of the employee (hiding the age of the employee)", "bbox": {"l": 151.20012, "t": 605.50726, "r": 470.03765999999996, "b": 614.72026, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH YEAR of the birth date of the employee (hiding the age of the employee)"}, {"label": "text", "id": 11, "page_no": 37, "cluster": {"id": 11, "label": "text", "bbox": {"l": 136.1318817138672, "t": 626.7003173828125, "r": 375.29803, "b": 636.9021606445312, "coord_origin": "TOPLEFT"}, "confidence": 0.9345581531524658, "cells": [{"id": 47, "text": "In this example, there are four different types of users:", "bbox": {"l": 136.79994, "t": 627.52682, "r": 375.29803, "b": 636.73982, "coord_origin": "TOPLEFT"}}]}, "text": "In this example, there are four different types of users:"}, {"label": "list_item", "id": 12, "page_no": 37, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 135.77261352539062, "t": 643.6381225585938, "r": 200.11467, "b": 653.71964, "coord_origin": "TOPLEFT"}, "confidence": 0.9286965727806091, "cells": [{"id": 48, "text": "GLYPH", "bbox": {"l": 136.79994, "t": 644.65604, "r": 141.77994, "b": 653.43079, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Employees", "bbox": {"l": 151.2001, "t": 644.5066400000001, "r": 200.11467, "b": 653.71964, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Employees"}, {"label": "list_item", "id": 13, "page_no": 37, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 135.6394805908203, "t": 655.4417724609375, "r": 195.63866, "b": 665.71944, "coord_origin": "TOPLEFT"}, "confidence": 0.9287638664245605, "cells": [{"id": 50, "text": "GLYPH", "bbox": {"l": 136.79994, "t": 656.65584, "r": 141.77994, "b": 665.4306, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Managers", "bbox": {"l": 151.2001, "t": 656.50644, "r": 195.63866, "b": 665.71944, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Managers"}, {"label": "list_item", "id": 14, "page_no": 37, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 135.6507568359375, "t": 667.2589111328125, "r": 276.5639343261719, "b": 677.71925, "coord_origin": "TOPLEFT"}, "confidence": 0.9430361390113831, "cells": [{"id": 52, "text": "GLYPH", "bbox": {"l": 136.79994, "t": 668.65565, "r": 141.77994, "b": 677.4304, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "Human Resources Manager", "bbox": {"l": 151.2001, "t": 668.50624, "r": 276.16125, "b": 677.71925, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Human Resources Manager"}, {"label": "list_item", "id": 15, "page_no": 37, "cluster": {"id": 15, "label": "list_item", "bbox": {"l": 135.71376037597656, "t": 679.4451904296875, "r": 539.58447, "b": 701.7188639999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9746949672698975, "cells": [{"id": 54, "text": "GLYPH", "bbox": {"l": 136.79994, "t": 680.65546, "r": 141.77994, "b": 689.43021, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Consultant/IT Database Engineer (In this example, this person is an external consultant ", "bbox": {"l": 151.2001, "t": 680.50605, "r": 539.58447, "b": 689.71906, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "that is not an employee of the company.)", "bbox": {"l": 151.2001, "t": 692.505859, "r": 330.16245, "b": 701.7188639999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Consultant/IT Database Engineer (In this example, this person is an external consultant that is not an employee of the company.)"}, {"label": "text", "id": 16, "page_no": 37, "cluster": {"id": 16, "label": "text", "bbox": {"l": 135.66419982910156, "t": 713.9166870117188, "r": 546.52435, "b": 735.738243, "coord_origin": "TOPLEFT"}, "confidence": 0.9735910892486572, "cells": [{"id": 57, "text": "The following sections describe step-by-step what is needed to be done to implement RCAC ", "bbox": {"l": 136.79994, "t": 714.525429, "r": 546.52435, "b": 723.738434, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "in this environment.", "bbox": {"l": 136.79994, "t": 726.525238, "r": 223.17204000000004, "b": 735.738243, "coord_origin": "TOPLEFT"}}]}, "text": "The following sections describe step-by-step what is needed to be done to implement RCAC in this environment."}, {"label": "text", "id": 17, "page_no": 37, "cluster": {"id": 17, "label": "text", "bbox": {"l": 141.89248657226562, "t": 416.5281066894531, "r": 541.21985, "b": 451.1007080078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9794700741767883, "cells": [{"id": 59, "text": "Note:", "bbox": {"l": 142.8, "t": 417.52872, "r": 168.33246, "b": 426.7417, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": " DB2 does not provide any indication back to the user that the data set requested ", "bbox": {"l": 168.36035, "t": 417.52872, "r": 529.13947, "b": 426.7417, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "was restricted or reduced by RCAC. This is by design, as it helps minimize any changes to ", "bbox": {"l": 142.8, "t": 429.52853, "r": 541.21985, "b": 438.74152, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "the applications accessing the data.", "bbox": {"l": 142.8, "t": 441.52835, "r": 301.22571, "b": 450.74132999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Note: DB2 does not provide any indication back to the user that the data set requested was restricted or reduced by RCAC. This is by design, as it helps minimize any changes to the applications accessing the data."}], "body": [{"label": "text", "id": 2, "page_no": 37, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.83892822265625, "t": 70.66429138183594, "r": 547.29156, "b": 176.9203643798828, "coord_origin": "TOPLEFT"}, "confidence": 0.9871932864189148, "cells": [{"id": 2, "text": "Given that joins and subqueries can be used to perform set-based operations against existing ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 547.29156, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "data that is housed in other objects, almost any relational test can be constructed. If the data ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 547.18164, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "in the objects is manipulated over time, the RCAC test logic (and user query results) can be ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 542.89301, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "changed without modifying the actual row permission or column mask. This includes moving ", "bbox": {"l": 136.8, "t": 107.50811999999996, "r": 546.20483, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "a user from one group to another or changing a column value that is used to allow or disallow ", "bbox": {"l": 136.8, "t": 119.50792999999999, "r": 547.21387, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "access. For example, if Saturday is now a valid business day, only the BUSINESS_DAY value ", "bbox": {"l": 136.8, "t": 131.50775, "r": 547.23071, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "in the DATE_MASTER must be updated, not the permission logic. This technique can ", "bbox": {"l": 136.79999, "t": 143.50757, "r": 516.55499, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "potentially avoid downtime because of the exclusive lock that is needed on the table when ", "bbox": {"l": 136.79999, "t": 155.50739, "r": 535.33044, "b": 164.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "adding or changing RCAC definitions.", "bbox": {"l": 136.79999, "t": 167.5072, "r": 302.98856, "b": 176.72020999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Given that joins and subqueries can be used to perform set-based operations against existing data that is housed in other objects, almost any relational test can be constructed. If the data in the objects is manipulated over time, the RCAC test logic (and user query results) can be changed without modifying the actual row permission or column mask. This includes moving a user from one group to another or changing a column value that is used to allow or disallow access. For example, if Saturday is now a valid business day, only the BUSINESS_DAY value in the DATE_MASTER must be updated, not the permission logic. This technique can potentially avoid downtime because of the exclusive lock that is needed on the table when adding or changing RCAC definitions."}, {"label": "section_header", "id": 3, "page_no": 37, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 64.40492248535156, "t": 203.78817749023438, "r": 486.32437, "b": 219.96367999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9655107259750366, "cells": [{"id": 11, "text": "3.5", "bbox": {"l": 64.800003, "t": 205.20068000000003, "r": 86.952782, "b": 219.96367999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "SELECT, INSERT, and UPDATE behavior with RCAC", "bbox": {"l": 91.383354, "t": 205.20068000000003, "r": 486.32437, "b": 219.96367999999995, "coord_origin": "TOPLEFT"}}]}, "text": "3.5 SELECT, INSERT, and UPDATE behavior with RCAC"}, {"label": "text", "id": 4, "page_no": 37, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.95579528808594, "t": 236.6680450439453, "r": 547.29742, "b": 318.8705749511719, "coord_origin": "TOPLEFT"}, "confidence": 0.9883361458778381, "cells": [{"id": 13, "text": "RCAC provides a database-centric approach to determining which rows can be accessed and ", "bbox": {"l": 136.8, "t": 237.52868999999998, "r": 547.2735, "b": 246.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "what column values can be seen by a specific user. Given that the control is handled by DB2 ", "bbox": {"l": 136.8, "t": 249.5285, "r": 547.29742, "b": 258.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "internally, every data manipulation statement is under the influence of RCAC, with no ", "bbox": {"l": 136.8, "t": 261.52832, "r": 513.53516, "b": 270.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "exceptions. When accessing the table, the ", "bbox": {"l": 136.8, "t": 273.52814, "r": 325.96036, "b": 282.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "SELECT", "bbox": {"l": 325.98022, "t": 273.67755, "r": 355.97977, "b": 282.50214000000005, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": " statements, searched ", "bbox": {"l": 355.97974, "t": 273.52814, "r": 456.93231, "b": 282.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "UPDATE", "bbox": {"l": 456.96020999999996, "t": 273.67755, "r": 486.89996, "b": 282.50214000000005, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": " statements, ", "bbox": {"l": 486.89996, "t": 273.52814, "r": 544.01459, "b": 282.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "and searched ", "bbox": {"l": 136.79999, "t": 285.52798, "r": 200.11673, "b": 294.74097, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "DELETE", "bbox": {"l": 200.15953, "t": 285.67736999999994, "r": 230.15904000000003, "b": 294.50195, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": " statements implicitly and transparently contain the row permission and ", "bbox": {"l": 230.09929, "t": 285.52798, "r": 546.29034, "b": 294.74097, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "the column mask rule text. This means that the data set can be logically restricted and ", "bbox": {"l": 136.79898, "t": 297.5278, "r": 519.62463, "b": 306.7407799999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "reduced on a user by user basis.", "bbox": {"l": 136.79898, "t": 309.52762, "r": 281.48892, "b": 318.74060000000003, "coord_origin": "TOPLEFT"}}]}, "text": "RCAC provides a database-centric approach to determining which rows can be accessed and what column values can be seen by a specific user. Given that the control is handled by DB2 internally, every data manipulation statement is under the influence of RCAC, with no exceptions. When accessing the table, the SELECT statements, searched UPDATE statements, and searched DELETE statements implicitly and transparently contain the row permission and the column mask rule text. This means that the data set can be logically restricted and reduced on a user by user basis."}, {"label": "text", "id": 5, "page_no": 37, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.07569885253906, "t": 330.7037658691406, "r": 547.19586, "b": 365.0055236816406, "coord_origin": "TOPLEFT"}, "confidence": 0.9833049774169922, "cells": [{"id": 26, "text": "Furthermore, DB2 prevents an ", "bbox": {"l": 136.79898, "t": 331.48743, "r": 273.8327, "b": 340.70041, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "INSERT", "bbox": {"l": 273.77887, "t": 331.63681, "r": 303.77838, "b": 340.46139999999997, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": " statement from inserting a row or an ", "bbox": {"l": 303.77838, "t": 331.48743, "r": 468.12946, "b": 340.70041, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "UPDATE", "bbox": {"l": 468.11838, "t": 331.63681, "r": 498.11792, "b": 340.46139999999997, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": " statement ", "bbox": {"l": 498.11789, "t": 331.48743, "r": 547.19586, "b": 340.70041, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "from modifying a row such that the current user cannot be permitted to access it. You cannot ", "bbox": {"l": 136.79797, "t": 343.48724, "r": 547.10968, "b": 352.70023, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "create a situation in which the data you inserted or changed is no longer accessible to you.", "bbox": {"l": 136.79797, "t": 355.48706, "r": 537.22864, "b": 364.70004, "coord_origin": "TOPLEFT"}}]}, "text": "Furthermore, DB2 prevents an INSERT statement from inserting a row or an UPDATE statement from modifying a row such that the current user cannot be permitted to access it. You cannot create a situation in which the data you inserted or changed is no longer accessible to you."}, {"label": "text", "id": 6, "page_no": 37, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.00733947753906, "t": 376.6234130859375, "r": 547.26068, "b": 398.8757019042969, "coord_origin": "TOPLEFT"}, "confidence": 0.9724586009979248, "cells": [{"id": 33, "text": "For more information and considerations about data movement in an RCAC environment, see ", "bbox": {"l": 136.79797, "t": 377.50661999999994, "r": 547.26068, "b": 386.7196, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Chapter 6, \u201cAdditional considerations\u201d on page 85.", "bbox": {"l": 136.79797, "t": 389.50644000000005, "r": 359.45187, "b": 398.71942, "coord_origin": "TOPLEFT"}}]}, "text": "For more information and considerations about data movement in an RCAC environment, see Chapter 6, \u201cAdditional considerations\u201d on page 85."}, {"label": "section_header", "id": 7, "page_no": 37, "cluster": {"id": 7, "label": "section_header", "bbox": {"l": 64.5394515991211, "t": 483.1797180175781, "r": 298.85339, "b": 499.07220458984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9677695631980896, "cells": [{"id": 35, "text": "3.6", "bbox": {"l": 64.800003, "t": 484.20062, "r": 87.400505, "b": 498.96362, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Human resources example", "bbox": {"l": 91.920601, "t": 484.20062, "r": 298.85339, "b": 498.96362, "coord_origin": "TOPLEFT"}}]}, "text": "3.6 Human resources example"}, {"label": "text", "id": 8, "page_no": 37, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.87118530273438, "t": 516.0023193359375, "r": 542.82935, "b": 585.74065, "coord_origin": "TOPLEFT"}, "confidence": 0.9858933687210083, "cells": [{"id": 37, "text": "This section illustrates with a simple example the usage of RCAC on a typical Human ", "bbox": {"l": 136.8, "t": 516.52863, "r": 515.45135, "b": 525.74161, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Resources application (schema). In this sample Human Resources schema, there is an ", "bbox": {"l": 136.79999, "t": 528.52844, "r": 525.09943, "b": 537.74144, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "important table that is called EMPLOYEES that contains all the information that is related to ", "bbox": {"l": 136.79999, "t": 540.52824, "r": 542.82935, "b": 549.7412400000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "the employees of the company. Among the information that normally is stored in the ", "bbox": {"l": 136.79996, "t": 552.52805, "r": 508.23926, "b": 561.74104, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "EMPLOYEES table, there is some sensitive information that must be hidden from certain ", "bbox": {"l": 136.79996, "t": 564.52785, "r": 530.18805, "b": 573.7408399999999, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "users:", "bbox": {"l": 136.79996, "t": 576.52765, "r": 163.97581, "b": 585.74065, "coord_origin": "TOPLEFT"}}]}, "text": "This section illustrates with a simple example the usage of RCAC on a typical Human Resources application (schema). In this sample Human Resources schema, there is an important table that is called EMPLOYEES that contains all the information that is related to the employees of the company. Among the information that normally is stored in the EMPLOYEES table, there is some sensitive information that must be hidden from certain users:"}, {"label": "list_item", "id": 9, "page_no": 37, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.85508728027344, "t": 592.7136840820312, "r": 235.38602, "b": 602.72046, "coord_origin": "TOPLEFT"}, "confidence": 0.9412627220153809, "cells": [{"id": 43, "text": "GLYPH", "bbox": {"l": 136.79996, "t": 593.65686, "r": 141.77995, "b": 602.43161, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Tax_Id information ", "bbox": {"l": 151.20012, "t": 593.50746, "r": 235.38602, "b": 602.72046, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Tax_Id information"}, {"label": "list_item", "id": 10, "page_no": 37, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.5828094482422, "t": 604.7291259765625, "r": 470.03765999999996, "b": 614.775634765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9563513398170471, "cells": [{"id": 45, "text": "GLYPH", "bbox": {"l": 136.79996, "t": 605.65666, "r": 141.77995, "b": 614.43141, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "YEAR of the birth date of the employee (hiding the age of the employee)", "bbox": {"l": 151.20012, "t": 605.50726, "r": 470.03765999999996, "b": 614.72026, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH YEAR of the birth date of the employee (hiding the age of the employee)"}, {"label": "text", "id": 11, "page_no": 37, "cluster": {"id": 11, "label": "text", "bbox": {"l": 136.1318817138672, "t": 626.7003173828125, "r": 375.29803, "b": 636.9021606445312, "coord_origin": "TOPLEFT"}, "confidence": 0.9345581531524658, "cells": [{"id": 47, "text": "In this example, there are four different types of users:", "bbox": {"l": 136.79994, "t": 627.52682, "r": 375.29803, "b": 636.73982, "coord_origin": "TOPLEFT"}}]}, "text": "In this example, there are four different types of users:"}, {"label": "list_item", "id": 12, "page_no": 37, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 135.77261352539062, "t": 643.6381225585938, "r": 200.11467, "b": 653.71964, "coord_origin": "TOPLEFT"}, "confidence": 0.9286965727806091, "cells": [{"id": 48, "text": "GLYPH", "bbox": {"l": 136.79994, "t": 644.65604, "r": 141.77994, "b": 653.43079, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Employees", "bbox": {"l": 151.2001, "t": 644.5066400000001, "r": 200.11467, "b": 653.71964, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Employees"}, {"label": "list_item", "id": 13, "page_no": 37, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 135.6394805908203, "t": 655.4417724609375, "r": 195.63866, "b": 665.71944, "coord_origin": "TOPLEFT"}, "confidence": 0.9287638664245605, "cells": [{"id": 50, "text": "GLYPH", "bbox": {"l": 136.79994, "t": 656.65584, "r": 141.77994, "b": 665.4306, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Managers", "bbox": {"l": 151.2001, "t": 656.50644, "r": 195.63866, "b": 665.71944, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Managers"}, {"label": "list_item", "id": 14, "page_no": 37, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 135.6507568359375, "t": 667.2589111328125, "r": 276.5639343261719, "b": 677.71925, "coord_origin": "TOPLEFT"}, "confidence": 0.9430361390113831, "cells": [{"id": 52, "text": "GLYPH", "bbox": {"l": 136.79994, "t": 668.65565, "r": 141.77994, "b": 677.4304, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "Human Resources Manager", "bbox": {"l": 151.2001, "t": 668.50624, "r": 276.16125, "b": 677.71925, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Human Resources Manager"}, {"label": "list_item", "id": 15, "page_no": 37, "cluster": {"id": 15, "label": "list_item", "bbox": {"l": 135.71376037597656, "t": 679.4451904296875, "r": 539.58447, "b": 701.7188639999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9746949672698975, "cells": [{"id": 54, "text": "GLYPH", "bbox": {"l": 136.79994, "t": 680.65546, "r": 141.77994, "b": 689.43021, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Consultant/IT Database Engineer (In this example, this person is an external consultant ", "bbox": {"l": 151.2001, "t": 680.50605, "r": 539.58447, "b": 689.71906, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "that is not an employee of the company.)", "bbox": {"l": 151.2001, "t": 692.505859, "r": 330.16245, "b": 701.7188639999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Consultant/IT Database Engineer (In this example, this person is an external consultant that is not an employee of the company.)"}, {"label": "text", "id": 16, "page_no": 37, "cluster": {"id": 16, "label": "text", "bbox": {"l": 135.66419982910156, "t": 713.9166870117188, "r": 546.52435, "b": 735.738243, "coord_origin": "TOPLEFT"}, "confidence": 0.9735910892486572, "cells": [{"id": 57, "text": "The following sections describe step-by-step what is needed to be done to implement RCAC ", "bbox": {"l": 136.79994, "t": 714.525429, "r": 546.52435, "b": 723.738434, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "in this environment.", "bbox": {"l": 136.79994, "t": 726.525238, "r": 223.17204000000004, "b": 735.738243, "coord_origin": "TOPLEFT"}}]}, "text": "The following sections describe step-by-step what is needed to be done to implement RCAC in this environment."}, {"label": "text", "id": 17, "page_no": 37, "cluster": {"id": 17, "label": "text", "bbox": {"l": 141.89248657226562, "t": 416.5281066894531, "r": 541.21985, "b": 451.1007080078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9794700741767883, "cells": [{"id": 59, "text": "Note:", "bbox": {"l": 142.8, "t": 417.52872, "r": 168.33246, "b": 426.7417, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": " DB2 does not provide any indication back to the user that the data set requested ", "bbox": {"l": 168.36035, "t": 417.52872, "r": 529.13947, "b": 426.7417, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "was restricted or reduced by RCAC. This is by design, as it helps minimize any changes to ", "bbox": {"l": 142.8, "t": 429.52853, "r": 541.21985, "b": 438.74152, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "the applications accessing the data.", "bbox": {"l": 142.8, "t": 441.52835, "r": 301.22571, "b": 450.74132999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Note: DB2 does not provide any indication back to the user that the data set requested was restricted or reduced by RCAC. This is by design, as it helps minimize any changes to the applications accessing the data."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 37, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.83726119995117, "t": 754.3733520507812, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9199120402336121, "cells": [{"id": 0, "text": "22 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "22"}, {"label": "page_footer", "id": 1, "page_no": 37, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.2356185913086, "t": 754.7048950195312, "r": 334.42142, "b": 763.8771362304688, "coord_origin": "TOPLEFT"}, "confidence": 0.9534041881561279, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 38, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "23", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "3.6.1", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 93.918098, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Assigning the QIBM_DB_SECADM function ID to the consultants", "bbox": {"l": 97.557877, "t": 71.33471999999995, "r": 500.5502, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "The consultant must have authority to implement RCAC, so you must use one of the function ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 547.24261, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "IDs that are provided in DB2 for i (see 2.1.5, \u201cSecurity Administrator function: ", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 478.6330899999999, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "QIBM_DB_SECADM\u201d on page 9). Complete the following steps:", "bbox": {"l": 136.8, "t": 121.48834000000011, "r": 419.59521, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "1.", "bbox": {"l": 136.8, "t": 138.52788999999996, "r": 145.29478, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Run the Change Functional Usage (", "bbox": {"l": 148.12639, "t": 138.52788999999996, "r": 310.60699, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CHGFCNUSG", "bbox": {"l": 310.61993, "t": 138.67731000000003, "r": 355.55945, "b": 147.50189, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": ") CL commands that are shown in ", "bbox": {"l": 355.62021, "t": 138.52788999999996, "r": 507.77319000000006, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Example 3-2. These commands must be run by someone that has the *SECOFR ", "bbox": {"l": 151.20018, "t": 150.52770999999996, "r": 510.9772300000001, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "authority. ", "bbox": {"l": 151.20018, "t": 162.52752999999996, "r": 194.25031, "b": 171.74054, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Example 3-2 Function ID required to implement RCAC", "bbox": {"l": 136.8, "t": 184.51801, "r": 357.83176, "b": 192.84295999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED)", "bbox": {"l": 136.8, "t": 201.67809999999997, "r": 441.59589, "b": 210.45288000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(MCAIN) USAGE(*ALLOWED)", "bbox": {"l": 136.8, "t": 213.67791999999997, "r": 431.63588999999996, "b": 222.45270000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "2.", "bbox": {"l": 136.8, "t": 237.52814, "r": 145.03545, "b": 246.74114999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "There is a way to discover which user profiles have authorization to implement RCAC. This ", "bbox": {"l": 147.78058, "t": 237.52814, "r": 547.28821, "b": 246.74114999999995, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "can be done by running the SQL statement that is shown in Example 3-3.", "bbox": {"l": 151.20016, "t": 249.52795000000003, "r": 474.92215000000004, "b": 258.74096999999995, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Example 3-3 Verifying what user profiles have authorization to implement RCAC", "bbox": {"l": 136.8, "t": 271.51801, "r": 459.29779, "b": 279.84295999999995, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "SELECT", "bbox": {"l": 136.8, "t": 288.67810000000003, "r": 174.27548, "b": 297.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "function_id,", "bbox": {"l": 186.76732, "t": 288.67810000000003, "r": 261.71829, "b": 297.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "user_name,", "bbox": {"l": 169.62816, "t": 300.67792, "r": 251.69853, "b": 309.45270000000005, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "usage,", "bbox": {"l": 174.76752, "t": 312.67773, "r": 231.71878000000004, "b": 321.45251, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "user_type", "bbox": {"l": 170.62109, "t": 324.67755, "r": 246.71854, "b": 333.45233, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "FROM", "bbox": {"l": 136.8, "t": 336.67736999999994, "r": 161.22635, "b": 345.45215, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "qsys2.function_usage", "bbox": {"l": 179.5461, "t": 336.67736999999994, "r": 301.6778, "b": 345.45215, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "WHERE", "bbox": {"l": 136.8, "t": 348.67719000000005, "r": 163.70732, "b": 357.45196999999996, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "function_id =\u2019QIBM_DB_SECADM\u2019", "bbox": {"l": 179.85172, "t": 348.67719000000005, "r": 346.67709, "b": 357.45196999999996, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "ORDER BY", "bbox": {"l": 136.8, "t": 360.677, "r": 182.75941, "b": 369.45178, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "user_name;", "bbox": {"l": 194.24927, "t": 360.677, "r": 251.69853, "b": 369.45178, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "3.", "bbox": {"l": 136.8, "t": 384.52722, "r": 145.19109, "b": 393.7402, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "The result of the SQL statement is shown in Figure 3-6. In this example, either MCAIN or ", "bbox": {"l": 147.9881, "t": 384.52722, "r": 545.5683, "b": 393.7402, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "HBEDOYA can implement RCAC in the Human Resources database.", "bbox": {"l": 151.20016, "t": 396.52703999999994, "r": 456.21323, "b": 405.74002, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Figure 3-6 Result of the function ID query", "bbox": {"l": 136.8, "t": 468.01801, "r": 306.4032, "b": 476.34302, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "3.6.2", "bbox": {"l": 64.800003, "t": 496.85464, "r": 93.871941, "b": 508.84262, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Creating group profiles for the users and their roles", "bbox": {"l": 97.50592, "t": 496.85464, "r": 418.56525, "b": 508.84262, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Assuming that all the employees have a valid user profile, the next step is to create group ", "bbox": {"l": 136.8, "t": 523.00864, "r": 532.93518, "b": 532.22162, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "profiles to group the employees. Complete the following steps:", "bbox": {"l": 136.8, "t": 535.00842, "r": 411.17709, "b": 544.22144, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "1.", "bbox": {"l": 136.8, "t": 551.98825, "r": 145.35057, "b": 561.20125, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "In this example, there are three group profiles:", "bbox": {"l": 148.20076, "t": 551.98825, "r": 357.905, "b": 561.20125, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "-", "bbox": {"l": 152.03979, "t": 568.96806, "r": 157.56958, "b": 578.18106, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "HR (Human Resource personnel)", "bbox": {"l": 165.59933, "t": 568.96806, "r": 313.85294, "b": 578.18106, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "-", "bbox": {"l": 152.03979, "t": 580.96786, "r": 157.6154, "b": 590.1808599999999, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "MGR (Managers)", "bbox": {"l": 165.59933, "t": 580.96786, "r": 242.83118, "b": 590.1808599999999, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "-", "bbox": {"l": 152.03979, "t": 592.96767, "r": 157.60046, "b": 602.18066, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "EMP (Employees)", "bbox": {"l": 165.59933, "t": 592.96767, "r": 245.60703, "b": 602.18066, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "These are created by creating user profiles with no password. Example 3-4 shows the ", "bbox": {"l": 151.20016, "t": 610.0072299999999, "r": 532.71594, "b": 619.22023, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "Create User Profile (", "bbox": {"l": 151.20016, "t": 622.00703, "r": 241.71167, "b": 631.22003, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "CRTUSRPRF", "bbox": {"l": 241.74054, "t": 622.15643, "r": 286.68005, "b": 630.98099, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": ") CL commands that you use to create these group profiles.", "bbox": {"l": 286.68005, "t": 622.00703, "r": 547.29541, "b": 631.22003, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Example 3-4 Creating group profiles", "bbox": {"l": 136.8, "t": 643.99789, "r": 285.5574, "b": 652.32291, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "CRTUSRPRF USRPRF(EMP) PASSWORD() TEXT('Employees Group')", "bbox": {"l": 136.8, "t": 661.15802, "r": 416.63611, "b": 669.93278, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "CRTUSRPRF USRPRF(MGR) PASSWORD() TEXT('Managers Group')", "bbox": {"l": 136.8, "t": 673.15783, "r": 411.65613, "b": 681.93259, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "CRTUSRPRF USRPRF(HR) PASSWORD() TEXT('Human Resources Group')", "bbox": {"l": 136.8, "t": 685.15764, "r": 441.59589, "b": 693.9323959999999, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 344.5692443847656, "t": 754.7427978515625, "r": 523.60162, "b": 764.1153564453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9611534476280212, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.6176147460938, "t": 754.3688354492188, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9237489104270935, "cells": [{"id": 1, "text": "23", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.25519561767578, "t": 70.19824981689453, "r": 500.5502, "b": 83.69473266601562, "coord_origin": "TOPLEFT"}, "confidence": 0.9652671813964844, "cells": [{"id": 2, "text": "3.6.1", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 93.918098, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Assigning the QIBM_DB_SECADM function ID to the consultants", "bbox": {"l": 97.557877, "t": 71.33471999999995, "r": 500.5502, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.7902069091797, "t": 96.61418914794922, "r": 547.24261, "b": 130.93356323242188, "coord_origin": "TOPLEFT"}, "confidence": 0.967630922794342, "cells": [{"id": 4, "text": "The consultant must have authority to implement RCAC, so you must use one of the function ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 547.24261, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "IDs that are provided in DB2 for i (see 2.1.5, \u201cSecurity Administrator function: ", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 478.6330899999999, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "QIBM_DB_SECADM\u201d on page 9). Complete the following steps:", "bbox": {"l": 136.8, "t": 121.48834000000011, "r": 419.59521, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 136.8, "t": 137.95547485351562, "r": 510.9772300000001, "b": 172.0559844970703, "coord_origin": "TOPLEFT"}, "confidence": 0.9708675146102905, "cells": [{"id": 7, "text": "1.", "bbox": {"l": 136.8, "t": 138.52788999999996, "r": 145.29478, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Run the Change Functional Usage (", "bbox": {"l": 148.12639, "t": 138.52788999999996, "r": 310.60699, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CHGFCNUSG", "bbox": {"l": 310.61993, "t": 138.67731000000003, "r": 355.55945, "b": 147.50189, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": ") CL commands that are shown in ", "bbox": {"l": 355.62021, "t": 138.52788999999996, "r": 507.77319000000006, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Example 3-2. These commands must be run by someone that has the *SECOFR ", "bbox": {"l": 151.20018, "t": 150.52770999999996, "r": 510.9772300000001, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "authority. ", "bbox": {"l": 151.20018, "t": 162.52752999999996, "r": 194.25031, "b": 171.74054, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 136.3125762939453, "t": 183.1469268798828, "r": 358.5176696777344, "b": 193.2852325439453, "coord_origin": "TOPLEFT"}, "confidence": 0.8427231907844543, "cells": [{"id": 13, "text": "Example 3-2 Function ID required to implement RCAC", "bbox": {"l": 136.8, "t": 184.51801, "r": 357.83176, "b": 192.84295999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 136.8, "t": 201.67809999999997, "r": 441.59589, "b": 222.45270000000005, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 14, "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED)", "bbox": {"l": 136.8, "t": 201.67809999999997, "r": 441.59589, "b": 210.45288000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(MCAIN) USAGE(*ALLOWED)", "bbox": {"l": 136.8, "t": 213.67791999999997, "r": 431.63588999999996, "b": 222.45270000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 136.02276611328125, "t": 236.57188415527344, "r": 547.28821, "b": 258.8540954589844, "coord_origin": "TOPLEFT"}, "confidence": 0.931101381778717, "cells": [{"id": 16, "text": "2.", "bbox": {"l": 136.8, "t": 237.52814, "r": 145.03545, "b": 246.74114999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "There is a way to discover which user profiles have authorization to implement RCAC. This ", "bbox": {"l": 147.78058, "t": 237.52814, "r": 547.28821, "b": 246.74114999999995, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "can be done by running the SQL statement that is shown in Example 3-3.", "bbox": {"l": 151.20016, "t": 249.52795000000003, "r": 474.92215000000004, "b": 258.74096999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "caption", "bbox": {"l": 136.46849060058594, "t": 270.5647277832031, "r": 460.0157775878906, "b": 280.2876892089844, "coord_origin": "TOPLEFT"}, "confidence": 0.8696954846382141, "cells": [{"id": 19, "text": "Example 3-3 Verifying what user profiles have authorization to implement RCAC", "bbox": {"l": 136.8, "t": 271.51801, "r": 459.29779, "b": 279.84295999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 136.8, "t": 288.67810000000003, "r": 346.67709, "b": 369.45178, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 20, "text": "SELECT", "bbox": {"l": 136.8, "t": 288.67810000000003, "r": 174.27548, "b": 297.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "function_id,", "bbox": {"l": 186.76732, "t": 288.67810000000003, "r": 261.71829, "b": 297.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "user_name,", "bbox": {"l": 169.62816, "t": 300.67792, "r": 251.69853, "b": 309.45270000000005, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "usage,", "bbox": {"l": 174.76752, "t": 312.67773, "r": 231.71878000000004, "b": 321.45251, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "user_type", "bbox": {"l": 170.62109, "t": 324.67755, "r": 246.71854, "b": 333.45233, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "FROM", "bbox": {"l": 136.8, "t": 336.67736999999994, "r": 161.22635, "b": 345.45215, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "qsys2.function_usage", "bbox": {"l": 179.5461, "t": 336.67736999999994, "r": 301.6778, "b": 345.45215, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "WHERE", "bbox": {"l": 136.8, "t": 348.67719000000005, "r": 163.70732, "b": 357.45196999999996, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "function_id =\u2019QIBM_DB_SECADM\u2019", "bbox": {"l": 179.85172, "t": 348.67719000000005, "r": 346.67709, "b": 357.45196999999996, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "ORDER BY", "bbox": {"l": 136.8, "t": 360.677, "r": 182.75941, "b": 369.45178, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "user_name;", "bbox": {"l": 194.24927, "t": 360.677, "r": 251.69853, "b": 369.45178, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 135.87002563476562, "t": 383.9129638671875, "r": 545.5683, "b": 406.03265380859375, "coord_origin": "TOPLEFT"}, "confidence": 0.9212824106216431, "cells": [{"id": 31, "text": "3.", "bbox": {"l": 136.8, "t": 384.52722, "r": 145.19109, "b": 393.7402, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "The result of the SQL statement is shown in Figure 3-6. In this example, either MCAIN or ", "bbox": {"l": 147.9881, "t": 384.52722, "r": 545.5683, "b": 393.7402, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "HBEDOYA can implement RCAC in the Human Resources database.", "bbox": {"l": 151.20016, "t": 396.52703999999994, "r": 456.21323, "b": 405.74002, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "caption", "bbox": {"l": 136.01937866210938, "t": 467.0556945800781, "r": 307.21844482421875, "b": 477.0780029296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9000418782234192, "cells": [{"id": 34, "text": "Figure 3-6 Result of the function ID query", "bbox": {"l": 136.8, "t": 468.01801, "r": 306.4032, "b": 476.34302, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "section_header", "bbox": {"l": 64.10499572753906, "t": 495.4826965332031, "r": 418.56525, "b": 509.02349853515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9646822810173035, "cells": [{"id": 35, "text": "3.6.2", "bbox": {"l": 64.800003, "t": 496.85464, "r": 93.871941, "b": 508.84262, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Creating group profiles for the users and their roles", "bbox": {"l": 97.50592, "t": 496.85464, "r": 418.56525, "b": 508.84262, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 135.9925994873047, "t": 521.9961547851562, "r": 532.93518, "b": 544.3550415039062, "coord_origin": "TOPLEFT"}, "confidence": 0.9723882675170898, "cells": [{"id": 37, "text": "Assuming that all the employees have a valid user profile, the next step is to create group ", "bbox": {"l": 136.8, "t": 523.00864, "r": 532.93518, "b": 532.22162, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "profiles to group the employees. Complete the following steps:", "bbox": {"l": 136.8, "t": 535.00842, "r": 411.17709, "b": 544.22144, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "list_item", "bbox": {"l": 136.8, "t": 551.5098266601562, "r": 357.905, "b": 561.7009887695312, "coord_origin": "TOPLEFT"}, "confidence": 0.9077166318893433, "cells": [{"id": 39, "text": "1.", "bbox": {"l": 136.8, "t": 551.98825, "r": 145.35057, "b": 561.20125, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "In this example, there are three group profiles:", "bbox": {"l": 148.20076, "t": 551.98825, "r": 357.905, "b": 561.20125, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "list_item", "bbox": {"l": 151.3660430908203, "t": 567.9530639648438, "r": 313.85294, "b": 578.359619140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9419451951980591, "cells": [{"id": 41, "text": "-", "bbox": {"l": 152.03979, "t": 568.96806, "r": 157.56958, "b": 578.18106, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "HR (Human Resource personnel)", "bbox": {"l": 165.59933, "t": 568.96806, "r": 313.85294, "b": 578.18106, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "list_item", "bbox": {"l": 151.38209533691406, "t": 580.20458984375, "r": 242.83118, "b": 590.8248291015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9090039134025574, "cells": [{"id": 43, "text": "-", "bbox": {"l": 152.03979, "t": 580.96786, "r": 157.6154, "b": 590.1808599999999, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "MGR (Managers)", "bbox": {"l": 165.59933, "t": 580.96786, "r": 242.83118, "b": 590.1808599999999, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "list_item", "bbox": {"l": 151.16091918945312, "t": 592.0626220703125, "r": 245.60703, "b": 602.3350219726562, "coord_origin": "TOPLEFT"}, "confidence": 0.9277263879776001, "cells": [{"id": 45, "text": "-", "bbox": {"l": 152.03979, "t": 592.96767, "r": 157.60046, "b": 602.18066, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "EMP (Employees)", "bbox": {"l": 165.59933, "t": 592.96767, "r": 245.60703, "b": 602.18066, "coord_origin": "TOPLEFT"}}]}, {"id": 18, "label": "text", "bbox": {"l": 150.5602569580078, "t": 609.2984619140625, "r": 547.29541, "b": 631.7743530273438, "coord_origin": "TOPLEFT"}, "confidence": 0.9484594464302063, "cells": [{"id": 47, "text": "These are created by creating user profiles with no password. Example 3-4 shows the ", "bbox": {"l": 151.20016, "t": 610.0072299999999, "r": 532.71594, "b": 619.22023, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "Create User Profile (", "bbox": {"l": 151.20016, "t": 622.00703, "r": 241.71167, "b": 631.22003, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "CRTUSRPRF", "bbox": {"l": 241.74054, "t": 622.15643, "r": 286.68005, "b": 630.98099, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": ") CL commands that you use to create these group profiles.", "bbox": {"l": 286.68005, "t": 622.00703, "r": 547.29541, "b": 631.22003, "coord_origin": "TOPLEFT"}}]}, {"id": 19, "label": "caption", "bbox": {"l": 136.35838317871094, "t": 643.2757568359375, "r": 285.8739318847656, "b": 653.2639770507812, "coord_origin": "TOPLEFT"}, "confidence": 0.804556131362915, "cells": [{"id": 51, "text": "Example 3-4 Creating group profiles", "bbox": {"l": 136.8, "t": 643.99789, "r": 285.5574, "b": 652.32291, "coord_origin": "TOPLEFT"}}]}, {"id": 20, "label": "text", "bbox": {"l": 136.8, "t": 661.15802, "r": 441.59589, "b": 693.9323959999999, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 52, "text": "CRTUSRPRF USRPRF(EMP) PASSWORD() TEXT('Employees Group')", "bbox": {"l": 136.8, "t": 661.15802, "r": 416.63611, "b": 669.93278, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "CRTUSRPRF USRPRF(MGR) PASSWORD() TEXT('Managers Group')", "bbox": {"l": 136.8, "t": 673.15783, "r": 411.65613, "b": 681.93259, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "CRTUSRPRF USRPRF(HR) PASSWORD() TEXT('Human Resources Group')", "bbox": {"l": 136.8, "t": 685.15764, "r": 441.59589, "b": 693.9323959999999, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 38, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.5692443847656, "t": 754.7427978515625, "r": 523.60162, "b": 764.1153564453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9611534476280212, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 38, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6176147460938, "t": 754.3688354492188, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9237489104270935, "cells": [{"id": 1, "text": "23", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "23"}, {"label": "section_header", "id": 2, "page_no": 38, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.25519561767578, "t": 70.19824981689453, "r": 500.5502, "b": 83.69473266601562, "coord_origin": "TOPLEFT"}, "confidence": 0.9652671813964844, "cells": [{"id": 2, "text": "3.6.1", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 93.918098, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Assigning the QIBM_DB_SECADM function ID to the consultants", "bbox": {"l": 97.557877, "t": 71.33471999999995, "r": 500.5502, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "3.6.1 Assigning the QIBM_DB_SECADM function ID to the consultants"}, {"label": "text", "id": 3, "page_no": 38, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.7902069091797, "t": 96.61418914794922, "r": 547.24261, "b": 130.93356323242188, "coord_origin": "TOPLEFT"}, "confidence": 0.967630922794342, "cells": [{"id": 4, "text": "The consultant must have authority to implement RCAC, so you must use one of the function ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 547.24261, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "IDs that are provided in DB2 for i (see 2.1.5, \u201cSecurity Administrator function: ", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 478.6330899999999, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "QIBM_DB_SECADM\u201d on page 9). Complete the following steps:", "bbox": {"l": 136.8, "t": 121.48834000000011, "r": 419.59521, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}]}, "text": "The consultant must have authority to implement RCAC, so you must use one of the function IDs that are provided in DB2 for i (see 2.1.5, \u201cSecurity Administrator function: QIBM_DB_SECADM\u201d on page 9). Complete the following steps:"}, {"label": "list_item", "id": 4, "page_no": 38, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.8, "t": 137.95547485351562, "r": 510.9772300000001, "b": 172.0559844970703, "coord_origin": "TOPLEFT"}, "confidence": 0.9708675146102905, "cells": [{"id": 7, "text": "1.", "bbox": {"l": 136.8, "t": 138.52788999999996, "r": 145.29478, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Run the Change Functional Usage (", "bbox": {"l": 148.12639, "t": 138.52788999999996, "r": 310.60699, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CHGFCNUSG", "bbox": {"l": 310.61993, "t": 138.67731000000003, "r": 355.55945, "b": 147.50189, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": ") CL commands that are shown in ", "bbox": {"l": 355.62021, "t": 138.52788999999996, "r": 507.77319000000006, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Example 3-2. These commands must be run by someone that has the *SECOFR ", "bbox": {"l": 151.20018, "t": 150.52770999999996, "r": 510.9772300000001, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "authority. ", "bbox": {"l": 151.20018, "t": 162.52752999999996, "r": 194.25031, "b": 171.74054, "coord_origin": "TOPLEFT"}}]}, "text": "1. Run the Change Functional Usage ( CHGFCNUSG ) CL commands that are shown in Example 3-2. These commands must be run by someone that has the *SECOFR authority."}, {"label": "caption", "id": 5, "page_no": 38, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.3125762939453, "t": 183.1469268798828, "r": 358.5176696777344, "b": 193.2852325439453, "coord_origin": "TOPLEFT"}, "confidence": 0.8427231907844543, "cells": [{"id": 13, "text": "Example 3-2 Function ID required to implement RCAC", "bbox": {"l": 136.8, "t": 184.51801, "r": 357.83176, "b": 192.84295999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-2 Function ID required to implement RCAC"}, {"label": "text", "id": 6, "page_no": 38, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.8, "t": 201.67809999999997, "r": 441.59589, "b": 222.45270000000005, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 14, "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED)", "bbox": {"l": 136.8, "t": 201.67809999999997, "r": 441.59589, "b": 210.45288000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(MCAIN) USAGE(*ALLOWED)", "bbox": {"l": 136.8, "t": 213.67791999999997, "r": 431.63588999999996, "b": 222.45270000000005, "coord_origin": "TOPLEFT"}}]}, "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED) CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(MCAIN) USAGE(*ALLOWED)"}, {"label": "list_item", "id": 7, "page_no": 38, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 136.02276611328125, "t": 236.57188415527344, "r": 547.28821, "b": 258.8540954589844, "coord_origin": "TOPLEFT"}, "confidence": 0.931101381778717, "cells": [{"id": 16, "text": "2.", "bbox": {"l": 136.8, "t": 237.52814, "r": 145.03545, "b": 246.74114999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "There is a way to discover which user profiles have authorization to implement RCAC. This ", "bbox": {"l": 147.78058, "t": 237.52814, "r": 547.28821, "b": 246.74114999999995, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "can be done by running the SQL statement that is shown in Example 3-3.", "bbox": {"l": 151.20016, "t": 249.52795000000003, "r": 474.92215000000004, "b": 258.74096999999995, "coord_origin": "TOPLEFT"}}]}, "text": "2. There is a way to discover which user profiles have authorization to implement RCAC. This can be done by running the SQL statement that is shown in Example 3-3."}, {"label": "caption", "id": 8, "page_no": 38, "cluster": {"id": 8, "label": "caption", "bbox": {"l": 136.46849060058594, "t": 270.5647277832031, "r": 460.0157775878906, "b": 280.2876892089844, "coord_origin": "TOPLEFT"}, "confidence": 0.8696954846382141, "cells": [{"id": 19, "text": "Example 3-3 Verifying what user profiles have authorization to implement RCAC", "bbox": {"l": 136.8, "t": 271.51801, "r": 459.29779, "b": 279.84295999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-3 Verifying what user profiles have authorization to implement RCAC"}, {"label": "text", "id": 9, "page_no": 38, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.8, "t": 288.67810000000003, "r": 346.67709, "b": 369.45178, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 20, "text": "SELECT", "bbox": {"l": 136.8, "t": 288.67810000000003, "r": 174.27548, "b": 297.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "function_id,", "bbox": {"l": 186.76732, "t": 288.67810000000003, "r": 261.71829, "b": 297.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "user_name,", "bbox": {"l": 169.62816, "t": 300.67792, "r": 251.69853, "b": 309.45270000000005, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "usage,", "bbox": {"l": 174.76752, "t": 312.67773, "r": 231.71878000000004, "b": 321.45251, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "user_type", "bbox": {"l": 170.62109, "t": 324.67755, "r": 246.71854, "b": 333.45233, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "FROM", "bbox": {"l": 136.8, "t": 336.67736999999994, "r": 161.22635, "b": 345.45215, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "qsys2.function_usage", "bbox": {"l": 179.5461, "t": 336.67736999999994, "r": 301.6778, "b": 345.45215, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "WHERE", "bbox": {"l": 136.8, "t": 348.67719000000005, "r": 163.70732, "b": 357.45196999999996, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "function_id =\u2019QIBM_DB_SECADM\u2019", "bbox": {"l": 179.85172, "t": 348.67719000000005, "r": 346.67709, "b": 357.45196999999996, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "ORDER BY", "bbox": {"l": 136.8, "t": 360.677, "r": 182.75941, "b": 369.45178, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "user_name;", "bbox": {"l": 194.24927, "t": 360.677, "r": 251.69853, "b": 369.45178, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT function_id, user_name, usage, user_type FROM qsys2.function_usage WHERE function_id =\u2019QIBM_DB_SECADM\u2019 ORDER BY user_name;"}, {"label": "list_item", "id": 10, "page_no": 38, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.87002563476562, "t": 383.9129638671875, "r": 545.5683, "b": 406.03265380859375, "coord_origin": "TOPLEFT"}, "confidence": 0.9212824106216431, "cells": [{"id": 31, "text": "3.", "bbox": {"l": 136.8, "t": 384.52722, "r": 145.19109, "b": 393.7402, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "The result of the SQL statement is shown in Figure 3-6. In this example, either MCAIN or ", "bbox": {"l": 147.9881, "t": 384.52722, "r": 545.5683, "b": 393.7402, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "HBEDOYA can implement RCAC in the Human Resources database.", "bbox": {"l": 151.20016, "t": 396.52703999999994, "r": 456.21323, "b": 405.74002, "coord_origin": "TOPLEFT"}}]}, "text": "3. The result of the SQL statement is shown in Figure 3-6. In this example, either MCAIN or HBEDOYA can implement RCAC in the Human Resources database."}, {"label": "caption", "id": 11, "page_no": 38, "cluster": {"id": 11, "label": "caption", "bbox": {"l": 136.01937866210938, "t": 467.0556945800781, "r": 307.21844482421875, "b": 477.0780029296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9000418782234192, "cells": [{"id": 34, "text": "Figure 3-6 Result of the function ID query", "bbox": {"l": 136.8, "t": 468.01801, "r": 306.4032, "b": 476.34302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-6 Result of the function ID query"}, {"label": "section_header", "id": 12, "page_no": 38, "cluster": {"id": 12, "label": "section_header", "bbox": {"l": 64.10499572753906, "t": 495.4826965332031, "r": 418.56525, "b": 509.02349853515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9646822810173035, "cells": [{"id": 35, "text": "3.6.2", "bbox": {"l": 64.800003, "t": 496.85464, "r": 93.871941, "b": 508.84262, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Creating group profiles for the users and their roles", "bbox": {"l": 97.50592, "t": 496.85464, "r": 418.56525, "b": 508.84262, "coord_origin": "TOPLEFT"}}]}, "text": "3.6.2 Creating group profiles for the users and their roles"}, {"label": "text", "id": 13, "page_no": 38, "cluster": {"id": 13, "label": "text", "bbox": {"l": 135.9925994873047, "t": 521.9961547851562, "r": 532.93518, "b": 544.3550415039062, "coord_origin": "TOPLEFT"}, "confidence": 0.9723882675170898, "cells": [{"id": 37, "text": "Assuming that all the employees have a valid user profile, the next step is to create group ", "bbox": {"l": 136.8, "t": 523.00864, "r": 532.93518, "b": 532.22162, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "profiles to group the employees. Complete the following steps:", "bbox": {"l": 136.8, "t": 535.00842, "r": 411.17709, "b": 544.22144, "coord_origin": "TOPLEFT"}}]}, "text": "Assuming that all the employees have a valid user profile, the next step is to create group profiles to group the employees. Complete the following steps:"}, {"label": "list_item", "id": 14, "page_no": 38, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 136.8, "t": 551.5098266601562, "r": 357.905, "b": 561.7009887695312, "coord_origin": "TOPLEFT"}, "confidence": 0.9077166318893433, "cells": [{"id": 39, "text": "1.", "bbox": {"l": 136.8, "t": 551.98825, "r": 145.35057, "b": 561.20125, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "In this example, there are three group profiles:", "bbox": {"l": 148.20076, "t": 551.98825, "r": 357.905, "b": 561.20125, "coord_origin": "TOPLEFT"}}]}, "text": "1. In this example, there are three group profiles:"}, {"label": "list_item", "id": 15, "page_no": 38, "cluster": {"id": 15, "label": "list_item", "bbox": {"l": 151.3660430908203, "t": 567.9530639648438, "r": 313.85294, "b": 578.359619140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9419451951980591, "cells": [{"id": 41, "text": "-", "bbox": {"l": 152.03979, "t": 568.96806, "r": 157.56958, "b": 578.18106, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "HR (Human Resource personnel)", "bbox": {"l": 165.59933, "t": 568.96806, "r": 313.85294, "b": 578.18106, "coord_origin": "TOPLEFT"}}]}, "text": "-HR (Human Resource personnel)"}, {"label": "list_item", "id": 16, "page_no": 38, "cluster": {"id": 16, "label": "list_item", "bbox": {"l": 151.38209533691406, "t": 580.20458984375, "r": 242.83118, "b": 590.8248291015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9090039134025574, "cells": [{"id": 43, "text": "-", "bbox": {"l": 152.03979, "t": 580.96786, "r": 157.6154, "b": 590.1808599999999, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "MGR (Managers)", "bbox": {"l": 165.59933, "t": 580.96786, "r": 242.83118, "b": 590.1808599999999, "coord_origin": "TOPLEFT"}}]}, "text": "-MGR (Managers)"}, {"label": "list_item", "id": 17, "page_no": 38, "cluster": {"id": 17, "label": "list_item", "bbox": {"l": 151.16091918945312, "t": 592.0626220703125, "r": 245.60703, "b": 602.3350219726562, "coord_origin": "TOPLEFT"}, "confidence": 0.9277263879776001, "cells": [{"id": 45, "text": "-", "bbox": {"l": 152.03979, "t": 592.96767, "r": 157.60046, "b": 602.18066, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "EMP (Employees)", "bbox": {"l": 165.59933, "t": 592.96767, "r": 245.60703, "b": 602.18066, "coord_origin": "TOPLEFT"}}]}, "text": "-EMP (Employees)"}, {"label": "text", "id": 18, "page_no": 38, "cluster": {"id": 18, "label": "text", "bbox": {"l": 150.5602569580078, "t": 609.2984619140625, "r": 547.29541, "b": 631.7743530273438, "coord_origin": "TOPLEFT"}, "confidence": 0.9484594464302063, "cells": [{"id": 47, "text": "These are created by creating user profiles with no password. Example 3-4 shows the ", "bbox": {"l": 151.20016, "t": 610.0072299999999, "r": 532.71594, "b": 619.22023, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "Create User Profile (", "bbox": {"l": 151.20016, "t": 622.00703, "r": 241.71167, "b": 631.22003, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "CRTUSRPRF", "bbox": {"l": 241.74054, "t": 622.15643, "r": 286.68005, "b": 630.98099, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": ") CL commands that you use to create these group profiles.", "bbox": {"l": 286.68005, "t": 622.00703, "r": 547.29541, "b": 631.22003, "coord_origin": "TOPLEFT"}}]}, "text": "These are created by creating user profiles with no password. Example 3-4 shows the Create User Profile ( CRTUSRPRF ) CL commands that you use to create these group profiles."}, {"label": "caption", "id": 19, "page_no": 38, "cluster": {"id": 19, "label": "caption", "bbox": {"l": 136.35838317871094, "t": 643.2757568359375, "r": 285.8739318847656, "b": 653.2639770507812, "coord_origin": "TOPLEFT"}, "confidence": 0.804556131362915, "cells": [{"id": 51, "text": "Example 3-4 Creating group profiles", "bbox": {"l": 136.8, "t": 643.99789, "r": 285.5574, "b": 652.32291, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-4 Creating group profiles"}, {"label": "text", "id": 20, "page_no": 38, "cluster": {"id": 20, "label": "text", "bbox": {"l": 136.8, "t": 661.15802, "r": 441.59589, "b": 693.9323959999999, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 52, "text": "CRTUSRPRF USRPRF(EMP) PASSWORD() TEXT('Employees Group')", "bbox": {"l": 136.8, "t": 661.15802, "r": 416.63611, "b": 669.93278, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "CRTUSRPRF USRPRF(MGR) PASSWORD() TEXT('Managers Group')", "bbox": {"l": 136.8, "t": 673.15783, "r": 411.65613, "b": 681.93259, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "CRTUSRPRF USRPRF(HR) PASSWORD() TEXT('Human Resources Group')", "bbox": {"l": 136.8, "t": 685.15764, "r": 441.59589, "b": 693.9323959999999, "coord_origin": "TOPLEFT"}}]}, "text": "CRTUSRPRF USRPRF(EMP) PASSWORD() TEXT('Employees Group') CRTUSRPRF USRPRF(MGR) PASSWORD() TEXT('Managers Group') CRTUSRPRF USRPRF(HR) PASSWORD() TEXT('Human Resources Group')"}], "body": [{"label": "section_header", "id": 2, "page_no": 38, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.25519561767578, "t": 70.19824981689453, "r": 500.5502, "b": 83.69473266601562, "coord_origin": "TOPLEFT"}, "confidence": 0.9652671813964844, "cells": [{"id": 2, "text": "3.6.1", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 93.918098, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Assigning the QIBM_DB_SECADM function ID to the consultants", "bbox": {"l": 97.557877, "t": 71.33471999999995, "r": 500.5502, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "3.6.1 Assigning the QIBM_DB_SECADM function ID to the consultants"}, {"label": "text", "id": 3, "page_no": 38, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.7902069091797, "t": 96.61418914794922, "r": 547.24261, "b": 130.93356323242188, "coord_origin": "TOPLEFT"}, "confidence": 0.967630922794342, "cells": [{"id": 4, "text": "The consultant must have authority to implement RCAC, so you must use one of the function ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 547.24261, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "IDs that are provided in DB2 for i (see 2.1.5, \u201cSecurity Administrator function: ", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 478.6330899999999, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "QIBM_DB_SECADM\u201d on page 9). Complete the following steps:", "bbox": {"l": 136.8, "t": 121.48834000000011, "r": 419.59521, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}]}, "text": "The consultant must have authority to implement RCAC, so you must use one of the function IDs that are provided in DB2 for i (see 2.1.5, \u201cSecurity Administrator function: QIBM_DB_SECADM\u201d on page 9). Complete the following steps:"}, {"label": "list_item", "id": 4, "page_no": 38, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.8, "t": 137.95547485351562, "r": 510.9772300000001, "b": 172.0559844970703, "coord_origin": "TOPLEFT"}, "confidence": 0.9708675146102905, "cells": [{"id": 7, "text": "1.", "bbox": {"l": 136.8, "t": 138.52788999999996, "r": 145.29478, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Run the Change Functional Usage (", "bbox": {"l": 148.12639, "t": 138.52788999999996, "r": 310.60699, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CHGFCNUSG", "bbox": {"l": 310.61993, "t": 138.67731000000003, "r": 355.55945, "b": 147.50189, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": ") CL commands that are shown in ", "bbox": {"l": 355.62021, "t": 138.52788999999996, "r": 507.77319000000006, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Example 3-2. These commands must be run by someone that has the *SECOFR ", "bbox": {"l": 151.20018, "t": 150.52770999999996, "r": 510.9772300000001, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "authority. ", "bbox": {"l": 151.20018, "t": 162.52752999999996, "r": 194.25031, "b": 171.74054, "coord_origin": "TOPLEFT"}}]}, "text": "1. Run the Change Functional Usage ( CHGFCNUSG ) CL commands that are shown in Example 3-2. These commands must be run by someone that has the *SECOFR authority."}, {"label": "caption", "id": 5, "page_no": 38, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.3125762939453, "t": 183.1469268798828, "r": 358.5176696777344, "b": 193.2852325439453, "coord_origin": "TOPLEFT"}, "confidence": 0.8427231907844543, "cells": [{"id": 13, "text": "Example 3-2 Function ID required to implement RCAC", "bbox": {"l": 136.8, "t": 184.51801, "r": 357.83176, "b": 192.84295999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-2 Function ID required to implement RCAC"}, {"label": "text", "id": 6, "page_no": 38, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.8, "t": 201.67809999999997, "r": 441.59589, "b": 222.45270000000005, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 14, "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED)", "bbox": {"l": 136.8, "t": 201.67809999999997, "r": 441.59589, "b": 210.45288000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(MCAIN) USAGE(*ALLOWED)", "bbox": {"l": 136.8, "t": 213.67791999999997, "r": 431.63588999999996, "b": 222.45270000000005, "coord_origin": "TOPLEFT"}}]}, "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED) CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(MCAIN) USAGE(*ALLOWED)"}, {"label": "list_item", "id": 7, "page_no": 38, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 136.02276611328125, "t": 236.57188415527344, "r": 547.28821, "b": 258.8540954589844, "coord_origin": "TOPLEFT"}, "confidence": 0.931101381778717, "cells": [{"id": 16, "text": "2.", "bbox": {"l": 136.8, "t": 237.52814, "r": 145.03545, "b": 246.74114999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "There is a way to discover which user profiles have authorization to implement RCAC. This ", "bbox": {"l": 147.78058, "t": 237.52814, "r": 547.28821, "b": 246.74114999999995, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "can be done by running the SQL statement that is shown in Example 3-3.", "bbox": {"l": 151.20016, "t": 249.52795000000003, "r": 474.92215000000004, "b": 258.74096999999995, "coord_origin": "TOPLEFT"}}]}, "text": "2. There is a way to discover which user profiles have authorization to implement RCAC. This can be done by running the SQL statement that is shown in Example 3-3."}, {"label": "caption", "id": 8, "page_no": 38, "cluster": {"id": 8, "label": "caption", "bbox": {"l": 136.46849060058594, "t": 270.5647277832031, "r": 460.0157775878906, "b": 280.2876892089844, "coord_origin": "TOPLEFT"}, "confidence": 0.8696954846382141, "cells": [{"id": 19, "text": "Example 3-3 Verifying what user profiles have authorization to implement RCAC", "bbox": {"l": 136.8, "t": 271.51801, "r": 459.29779, "b": 279.84295999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-3 Verifying what user profiles have authorization to implement RCAC"}, {"label": "text", "id": 9, "page_no": 38, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.8, "t": 288.67810000000003, "r": 346.67709, "b": 369.45178, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 20, "text": "SELECT", "bbox": {"l": 136.8, "t": 288.67810000000003, "r": 174.27548, "b": 297.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "function_id,", "bbox": {"l": 186.76732, "t": 288.67810000000003, "r": 261.71829, "b": 297.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "user_name,", "bbox": {"l": 169.62816, "t": 300.67792, "r": 251.69853, "b": 309.45270000000005, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "usage,", "bbox": {"l": 174.76752, "t": 312.67773, "r": 231.71878000000004, "b": 321.45251, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "user_type", "bbox": {"l": 170.62109, "t": 324.67755, "r": 246.71854, "b": 333.45233, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "FROM", "bbox": {"l": 136.8, "t": 336.67736999999994, "r": 161.22635, "b": 345.45215, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "qsys2.function_usage", "bbox": {"l": 179.5461, "t": 336.67736999999994, "r": 301.6778, "b": 345.45215, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "WHERE", "bbox": {"l": 136.8, "t": 348.67719000000005, "r": 163.70732, "b": 357.45196999999996, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "function_id =\u2019QIBM_DB_SECADM\u2019", "bbox": {"l": 179.85172, "t": 348.67719000000005, "r": 346.67709, "b": 357.45196999999996, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "ORDER BY", "bbox": {"l": 136.8, "t": 360.677, "r": 182.75941, "b": 369.45178, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "user_name;", "bbox": {"l": 194.24927, "t": 360.677, "r": 251.69853, "b": 369.45178, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT function_id, user_name, usage, user_type FROM qsys2.function_usage WHERE function_id =\u2019QIBM_DB_SECADM\u2019 ORDER BY user_name;"}, {"label": "list_item", "id": 10, "page_no": 38, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.87002563476562, "t": 383.9129638671875, "r": 545.5683, "b": 406.03265380859375, "coord_origin": "TOPLEFT"}, "confidence": 0.9212824106216431, "cells": [{"id": 31, "text": "3.", "bbox": {"l": 136.8, "t": 384.52722, "r": 145.19109, "b": 393.7402, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "The result of the SQL statement is shown in Figure 3-6. In this example, either MCAIN or ", "bbox": {"l": 147.9881, "t": 384.52722, "r": 545.5683, "b": 393.7402, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "HBEDOYA can implement RCAC in the Human Resources database.", "bbox": {"l": 151.20016, "t": 396.52703999999994, "r": 456.21323, "b": 405.74002, "coord_origin": "TOPLEFT"}}]}, "text": "3. The result of the SQL statement is shown in Figure 3-6. In this example, either MCAIN or HBEDOYA can implement RCAC in the Human Resources database."}, {"label": "caption", "id": 11, "page_no": 38, "cluster": {"id": 11, "label": "caption", "bbox": {"l": 136.01937866210938, "t": 467.0556945800781, "r": 307.21844482421875, "b": 477.0780029296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9000418782234192, "cells": [{"id": 34, "text": "Figure 3-6 Result of the function ID query", "bbox": {"l": 136.8, "t": 468.01801, "r": 306.4032, "b": 476.34302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-6 Result of the function ID query"}, {"label": "section_header", "id": 12, "page_no": 38, "cluster": {"id": 12, "label": "section_header", "bbox": {"l": 64.10499572753906, "t": 495.4826965332031, "r": 418.56525, "b": 509.02349853515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9646822810173035, "cells": [{"id": 35, "text": "3.6.2", "bbox": {"l": 64.800003, "t": 496.85464, "r": 93.871941, "b": 508.84262, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Creating group profiles for the users and their roles", "bbox": {"l": 97.50592, "t": 496.85464, "r": 418.56525, "b": 508.84262, "coord_origin": "TOPLEFT"}}]}, "text": "3.6.2 Creating group profiles for the users and their roles"}, {"label": "text", "id": 13, "page_no": 38, "cluster": {"id": 13, "label": "text", "bbox": {"l": 135.9925994873047, "t": 521.9961547851562, "r": 532.93518, "b": 544.3550415039062, "coord_origin": "TOPLEFT"}, "confidence": 0.9723882675170898, "cells": [{"id": 37, "text": "Assuming that all the employees have a valid user profile, the next step is to create group ", "bbox": {"l": 136.8, "t": 523.00864, "r": 532.93518, "b": 532.22162, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "profiles to group the employees. Complete the following steps:", "bbox": {"l": 136.8, "t": 535.00842, "r": 411.17709, "b": 544.22144, "coord_origin": "TOPLEFT"}}]}, "text": "Assuming that all the employees have a valid user profile, the next step is to create group profiles to group the employees. Complete the following steps:"}, {"label": "list_item", "id": 14, "page_no": 38, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 136.8, "t": 551.5098266601562, "r": 357.905, "b": 561.7009887695312, "coord_origin": "TOPLEFT"}, "confidence": 0.9077166318893433, "cells": [{"id": 39, "text": "1.", "bbox": {"l": 136.8, "t": 551.98825, "r": 145.35057, "b": 561.20125, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "In this example, there are three group profiles:", "bbox": {"l": 148.20076, "t": 551.98825, "r": 357.905, "b": 561.20125, "coord_origin": "TOPLEFT"}}]}, "text": "1. In this example, there are three group profiles:"}, {"label": "list_item", "id": 15, "page_no": 38, "cluster": {"id": 15, "label": "list_item", "bbox": {"l": 151.3660430908203, "t": 567.9530639648438, "r": 313.85294, "b": 578.359619140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9419451951980591, "cells": [{"id": 41, "text": "-", "bbox": {"l": 152.03979, "t": 568.96806, "r": 157.56958, "b": 578.18106, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "HR (Human Resource personnel)", "bbox": {"l": 165.59933, "t": 568.96806, "r": 313.85294, "b": 578.18106, "coord_origin": "TOPLEFT"}}]}, "text": "-HR (Human Resource personnel)"}, {"label": "list_item", "id": 16, "page_no": 38, "cluster": {"id": 16, "label": "list_item", "bbox": {"l": 151.38209533691406, "t": 580.20458984375, "r": 242.83118, "b": 590.8248291015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9090039134025574, "cells": [{"id": 43, "text": "-", "bbox": {"l": 152.03979, "t": 580.96786, "r": 157.6154, "b": 590.1808599999999, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "MGR (Managers)", "bbox": {"l": 165.59933, "t": 580.96786, "r": 242.83118, "b": 590.1808599999999, "coord_origin": "TOPLEFT"}}]}, "text": "-MGR (Managers)"}, {"label": "list_item", "id": 17, "page_no": 38, "cluster": {"id": 17, "label": "list_item", "bbox": {"l": 151.16091918945312, "t": 592.0626220703125, "r": 245.60703, "b": 602.3350219726562, "coord_origin": "TOPLEFT"}, "confidence": 0.9277263879776001, "cells": [{"id": 45, "text": "-", "bbox": {"l": 152.03979, "t": 592.96767, "r": 157.60046, "b": 602.18066, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "EMP (Employees)", "bbox": {"l": 165.59933, "t": 592.96767, "r": 245.60703, "b": 602.18066, "coord_origin": "TOPLEFT"}}]}, "text": "-EMP (Employees)"}, {"label": "text", "id": 18, "page_no": 38, "cluster": {"id": 18, "label": "text", "bbox": {"l": 150.5602569580078, "t": 609.2984619140625, "r": 547.29541, "b": 631.7743530273438, "coord_origin": "TOPLEFT"}, "confidence": 0.9484594464302063, "cells": [{"id": 47, "text": "These are created by creating user profiles with no password. Example 3-4 shows the ", "bbox": {"l": 151.20016, "t": 610.0072299999999, "r": 532.71594, "b": 619.22023, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "Create User Profile (", "bbox": {"l": 151.20016, "t": 622.00703, "r": 241.71167, "b": 631.22003, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "CRTUSRPRF", "bbox": {"l": 241.74054, "t": 622.15643, "r": 286.68005, "b": 630.98099, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": ") CL commands that you use to create these group profiles.", "bbox": {"l": 286.68005, "t": 622.00703, "r": 547.29541, "b": 631.22003, "coord_origin": "TOPLEFT"}}]}, "text": "These are created by creating user profiles with no password. Example 3-4 shows the Create User Profile ( CRTUSRPRF ) CL commands that you use to create these group profiles."}, {"label": "caption", "id": 19, "page_no": 38, "cluster": {"id": 19, "label": "caption", "bbox": {"l": 136.35838317871094, "t": 643.2757568359375, "r": 285.8739318847656, "b": 653.2639770507812, "coord_origin": "TOPLEFT"}, "confidence": 0.804556131362915, "cells": [{"id": 51, "text": "Example 3-4 Creating group profiles", "bbox": {"l": 136.8, "t": 643.99789, "r": 285.5574, "b": 652.32291, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-4 Creating group profiles"}, {"label": "text", "id": 20, "page_no": 38, "cluster": {"id": 20, "label": "text", "bbox": {"l": 136.8, "t": 661.15802, "r": 441.59589, "b": 693.9323959999999, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 52, "text": "CRTUSRPRF USRPRF(EMP) PASSWORD() TEXT('Employees Group')", "bbox": {"l": 136.8, "t": 661.15802, "r": 416.63611, "b": 669.93278, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "CRTUSRPRF USRPRF(MGR) PASSWORD() TEXT('Managers Group')", "bbox": {"l": 136.8, "t": 673.15783, "r": 411.65613, "b": 681.93259, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "CRTUSRPRF USRPRF(HR) PASSWORD() TEXT('Human Resources Group')", "bbox": {"l": 136.8, "t": 685.15764, "r": 441.59589, "b": 693.9323959999999, "coord_origin": "TOPLEFT"}}]}, "text": "CRTUSRPRF USRPRF(EMP) PASSWORD() TEXT('Employees Group') CRTUSRPRF USRPRF(MGR) PASSWORD() TEXT('Managers Group') CRTUSRPRF USRPRF(HR) PASSWORD() TEXT('Human Resources Group')"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 38, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.5692443847656, "t": 754.7427978515625, "r": 523.60162, "b": 764.1153564453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9611534476280212, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 38, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6176147460938, "t": 754.3688354492188, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9237489104270935, "cells": [{"id": 1, "text": "23", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "23"}]}}, {"page_no": 39, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "24 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "2.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.15074, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "You now must assign users to a group profile. Employees go in to the EMP group profile, ", "bbox": {"l": 147.93431, "t": 71.50867000000005, "r": 544.18408, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Managers go into the MGR group profile, and Human Resource employees go into the HR ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 547.24072, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "group profile. For simplicity, this example selects one employee (DSSMITH), one manager ", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 547.26752, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "(TQSPENSER), and one HR analyst (VGLUCCHESS).", "bbox": {"l": 151.20016, "t": 107.50811999999996, "r": 393.52896, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "3.6.3", "bbox": {"l": 64.800003, "t": 170.33471999999995, "r": 93.988304, "b": 182.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Demonstrating data access without RCAC", "bbox": {"l": 97.636864, "t": 170.33471999999995, "r": 360.16098, "b": 182.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Before implementing RCAC, run some simple SQL statements to demonstrate data access ", "bbox": {"l": 136.8, "t": 196.48870999999997, "r": 540.30652, "b": 205.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "without RCAC. Complete the following steps:", "bbox": {"l": 136.8, "t": 208.48852999999997, "r": 334.59366, "b": 217.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "1.", "bbox": {"l": 136.8, "t": 225.52808000000005, "r": 145.08882, "b": 234.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "The first SQL statement, which is shown in Example 3-5, basically counts the total number ", "bbox": {"l": 147.85175, "t": 225.52808000000005, "r": 547.2157, "b": 234.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "of rows in the EMPLOYEES table.", "bbox": {"l": 151.19917, "t": 237.52788999999996, "r": 301.134, "b": 246.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Example 3-5 Counting the number of employees", "bbox": {"l": 136.8, "t": 259.51801, "r": 334.13672, "b": 267.84295999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "SELECT COUNT(*) as ROW_COUNT FROM HR_SCHEMA.EMPLOYEES;", "bbox": {"l": 136.8, "t": 276.6781, "r": 406.61636, "b": 285.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "The result of this query is shown in Figure 3-7, which is the total number of employees of ", "bbox": {"l": 151.20016, "t": 300.52831999999995, "r": 545.10712, "b": 309.7413, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "the company.", "bbox": {"l": 151.20016, "t": 312.52814000000006, "r": 210.05083, "b": 321.74112, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Figure 3-7 Number of employees", "bbox": {"l": 136.8, "t": 376.21799000000004, "r": 272.65857, "b": 384.54299999999995, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "2.", "bbox": {"l": 136.8, "t": 402.1687299999999, "r": 145.05576, "b": 411.38171, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Run a second SQL statement (shown in Example 3-6) that lists the employees. If you have ", "bbox": {"l": 147.80766, "t": 402.1687299999999, "r": 547.25177, "b": 411.38171, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "read access to the table, you see all the rows no matter who you are.", "bbox": {"l": 151.20016, "t": 414.16855000000004, "r": 455.22919, "b": 423.38153, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Example 3-6 Displaying the information of the Employees", "bbox": {"l": 136.8, "t": 436.21799000000004, "r": 369.315, "b": 444.54299999999995, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "SELECT", "bbox": {"l": 136.8, "t": 453.31812, "r": 171.26956, "b": 462.0929, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "EMPLOYEE_ID,", "bbox": {"l": 182.75941, "t": 453.31812, "r": 251.69853, "b": 462.0929, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "LAST_NAME, ", "bbox": {"l": 166.11162, "t": 465.31793, "r": 246.71854, "b": 474.09271, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "JOB_DESCRIPTION,", "bbox": {"l": 163.77567, "t": 477.31775, "r": 271.67828, "b": 486.09253, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "DATE_OF_BIRTH,", "bbox": {"l": 164.55962, "t": 489.31757, "r": 261.71829, "b": 498.09235, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "TAX_ID,", "bbox": {"l": 169.505, "t": 501.31738, "r": 226.73877000000002, "b": 510.09216, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "USER_ID,", "bbox": {"l": 168.43959, "t": 513.3172, "r": 231.71878000000004, "b": 522.0919799999999, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "MANAGER_OF_EMPLOYEE", "bbox": {"l": 162.86575, "t": 525.31702, "r": 286.67804, "b": 534.0917999999999, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " FROM", "bbox": {"l": 136.8, "t": 537.31683, "r": 164.55519, "b": 546.09158, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "HR_SCHEMA.EMPLOYEES", "bbox": {"l": 181.20831, "t": 537.31683, "r": 286.67804, "b": 546.09158, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Note:", "bbox": {"l": 157.2, "t": 135.52855999999997, "r": 182.73245, "b": 144.74158, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": " Neither of the consultants (MCAIN and HBEDOYA) belong to any group profile.", "bbox": {"l": 182.76035, "t": 135.52855999999997, "r": 533.43896, "b": 144.74158, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.88653564453125, "t": 754.3186645507812, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9114106297492981, "cells": [{"id": 0, "text": "24 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.27753448486328, "t": 754.6685180664062, "r": 334.42142, "b": 763.9840087890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9486663937568665, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 136.0978240966797, "t": 70.40028381347656, "r": 547.26752, "b": 117.03543853759766, "coord_origin": "TOPLEFT"}, "confidence": 0.9766601324081421, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.15074, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "You now must assign users to a group profile. Employees go in to the EMP group profile, ", "bbox": {"l": 147.93431, "t": 71.50867000000005, "r": 544.18408, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Managers go into the MGR group profile, and Human Resource employees go into the HR ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 547.24072, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "group profile. For simplicity, this example selects one employee (DSSMITH), one manager ", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 547.26752, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "(TQSPENSER), and one HR analyst (VGLUCCHESS).", "bbox": {"l": 151.20016, "t": 107.50811999999996, "r": 393.52896, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "section_header", "bbox": {"l": 64.17131805419922, "t": 168.79916381835938, "r": 360.16098, "b": 182.6798553466797, "coord_origin": "TOPLEFT"}, "confidence": 0.961124837398529, "cells": [{"id": 7, "text": "3.6.3", "bbox": {"l": 64.800003, "t": 170.33471999999995, "r": 93.988304, "b": 182.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Demonstrating data access without RCAC", "bbox": {"l": 97.636864, "t": 170.33471999999995, "r": 360.16098, "b": 182.32275000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 136.1033477783203, "t": 195.17257690429688, "r": 540.30652, "b": 217.70154000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.953971803188324, "cells": [{"id": 9, "text": "Before implementing RCAC, run some simple SQL statements to demonstrate data access ", "bbox": {"l": 136.8, "t": 196.48870999999997, "r": 540.30652, "b": 205.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "without RCAC. Complete the following steps:", "bbox": {"l": 136.8, "t": 208.48852999999997, "r": 334.59366, "b": 217.70154000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 136.76841735839844, "t": 224.45919799804688, "r": 547.2157, "b": 246.74090999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9609369039535522, "cells": [{"id": 11, "text": "1.", "bbox": {"l": 136.8, "t": 225.52808000000005, "r": 145.08882, "b": 234.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "The first SQL statement, which is shown in Example 3-5, basically counts the total number ", "bbox": {"l": 147.85175, "t": 225.52808000000005, "r": 547.2157, "b": 234.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "of rows in the EMPLOYEES table.", "bbox": {"l": 151.19917, "t": 237.52788999999996, "r": 301.134, "b": 246.74090999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "caption", "bbox": {"l": 136.413330078125, "t": 258.6246643066406, "r": 334.6294250488281, "b": 268.3210754394531, "coord_origin": "TOPLEFT"}, "confidence": 0.6967653632164001, "cells": [{"id": 14, "text": "Example 3-5 Counting the number of employees", "bbox": {"l": 136.8, "t": 259.51801, "r": 334.13672, "b": 267.84295999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 136.42640686035156, "t": 275.64599609375, "r": 406.61636, "b": 286.7776184082031, "coord_origin": "TOPLEFT"}, "confidence": 0.6531516313552856, "cells": [{"id": 15, "text": "SELECT COUNT(*) as ROW_COUNT FROM HR_SCHEMA.EMPLOYEES;", "bbox": {"l": 136.8, "t": 276.6781, "r": 406.61636, "b": 285.45287999999994, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 150.4588623046875, "t": 299.9428405761719, "r": 545.10712, "b": 322.47479248046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9646008610725403, "cells": [{"id": 16, "text": "The result of this query is shown in Figure 3-7, which is the total number of employees of ", "bbox": {"l": 151.20016, "t": 300.52831999999995, "r": 545.10712, "b": 309.7413, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "the company.", "bbox": {"l": 151.20016, "t": 312.52814000000006, "r": 210.05083, "b": 321.74112, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "caption", "bbox": {"l": 136.30203247070312, "t": 375.2716369628906, "r": 272.9559326171875, "b": 384.7872009277344, "coord_origin": "TOPLEFT"}, "confidence": 0.7269786596298218, "cells": [{"id": 18, "text": "Figure 3-7 Number of employees", "bbox": {"l": 136.8, "t": 376.21799000000004, "r": 272.65857, "b": 384.54299999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 136.12722778320312, "t": 401.2595520019531, "r": 547.25177, "b": 423.76806640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9607868790626526, "cells": [{"id": 19, "text": "2.", "bbox": {"l": 136.8, "t": 402.1687299999999, "r": 145.05576, "b": 411.38171, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Run a second SQL statement (shown in Example 3-6) that lists the employees. If you have ", "bbox": {"l": 147.80766, "t": 402.1687299999999, "r": 547.25177, "b": 411.38171, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "read access to the table, you see all the rows no matter who you are.", "bbox": {"l": 151.20016, "t": 414.16855000000004, "r": 455.22919, "b": 423.38153, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "caption", "bbox": {"l": 136.4648895263672, "t": 435.44384765625, "r": 369.71875, "b": 444.9762268066406, "coord_origin": "TOPLEFT"}, "confidence": 0.7871338725090027, "cells": [{"id": 22, "text": "Example 3-6 Displaying the information of the Employees", "bbox": {"l": 136.8, "t": 436.21799000000004, "r": 369.315, "b": 444.54299999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 136.8, "t": 453.31812, "r": 286.67804, "b": 546.09158, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 23, "text": "SELECT", "bbox": {"l": 136.8, "t": 453.31812, "r": 171.26956, "b": 462.0929, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "EMPLOYEE_ID,", "bbox": {"l": 182.75941, "t": 453.31812, "r": 251.69853, "b": 462.0929, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "LAST_NAME, ", "bbox": {"l": 166.11162, "t": 465.31793, "r": 246.71854, "b": 474.09271, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "JOB_DESCRIPTION,", "bbox": {"l": 163.77567, "t": 477.31775, "r": 271.67828, "b": 486.09253, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "DATE_OF_BIRTH,", "bbox": {"l": 164.55962, "t": 489.31757, "r": 261.71829, "b": 498.09235, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "TAX_ID,", "bbox": {"l": 169.505, "t": 501.31738, "r": 226.73877000000002, "b": 510.09216, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "USER_ID,", "bbox": {"l": 168.43959, "t": 513.3172, "r": 231.71878000000004, "b": 522.0919799999999, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "MANAGER_OF_EMPLOYEE", "bbox": {"l": 162.86575, "t": 525.31702, "r": 286.67804, "b": 534.0917999999999, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " FROM", "bbox": {"l": 136.8, "t": 537.31683, "r": 164.55519, "b": 546.09158, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "HR_SCHEMA.EMPLOYEES", "bbox": {"l": 181.20831, "t": 537.31683, "r": 286.67804, "b": 546.09158, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 156.851318359375, "t": 134.62420654296875, "r": 533.43896, "b": 145.3269805908203, "coord_origin": "TOPLEFT"}, "confidence": 0.901655912399292, "cells": [{"id": 33, "text": "Note:", "bbox": {"l": 157.2, "t": 135.52855999999997, "r": 182.73245, "b": 144.74158, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": " Neither of the consultants (MCAIN and HBEDOYA) belong to any group profile.", "bbox": {"l": 182.76035, "t": 135.52855999999997, "r": 533.43896, "b": 144.74158, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "picture", "bbox": {"l": 136.4460906982422, "t": 337.62408447265625, "r": 227.48138427734375, "b": 370.2557067871094, "coord_origin": "TOPLEFT"}, "confidence": 0.6461378931999207, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 39, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.88653564453125, "t": 754.3186645507812, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9114106297492981, "cells": [{"id": 0, "text": "24 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "24"}, {"label": "page_footer", "id": 1, "page_no": 39, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.27753448486328, "t": 754.6685180664062, "r": 334.42142, "b": 763.9840087890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9486663937568665, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "list_item", "id": 2, "page_no": 39, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.0978240966797, "t": 70.40028381347656, "r": 547.26752, "b": 117.03543853759766, "coord_origin": "TOPLEFT"}, "confidence": 0.9766601324081421, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.15074, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "You now must assign users to a group profile. Employees go in to the EMP group profile, ", "bbox": {"l": 147.93431, "t": 71.50867000000005, "r": 544.18408, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Managers go into the MGR group profile, and Human Resource employees go into the HR ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 547.24072, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "group profile. For simplicity, this example selects one employee (DSSMITH), one manager ", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 547.26752, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "(TQSPENSER), and one HR analyst (VGLUCCHESS).", "bbox": {"l": 151.20016, "t": 107.50811999999996, "r": 393.52896, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "2. You now must assign users to a group profile. Employees go in to the EMP group profile, Managers go into the MGR group profile, and Human Resource employees go into the HR group profile. For simplicity, this example selects one employee (DSSMITH), one manager (TQSPENSER), and one HR analyst (VGLUCCHESS)."}, {"label": "section_header", "id": 3, "page_no": 39, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 64.17131805419922, "t": 168.79916381835938, "r": 360.16098, "b": 182.6798553466797, "coord_origin": "TOPLEFT"}, "confidence": 0.961124837398529, "cells": [{"id": 7, "text": "3.6.3", "bbox": {"l": 64.800003, "t": 170.33471999999995, "r": 93.988304, "b": 182.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Demonstrating data access without RCAC", "bbox": {"l": 97.636864, "t": 170.33471999999995, "r": 360.16098, "b": 182.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "3.6.3 Demonstrating data access without RCAC"}, {"label": "text", "id": 4, "page_no": 39, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.1033477783203, "t": 195.17257690429688, "r": 540.30652, "b": 217.70154000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.953971803188324, "cells": [{"id": 9, "text": "Before implementing RCAC, run some simple SQL statements to demonstrate data access ", "bbox": {"l": 136.8, "t": 196.48870999999997, "r": 540.30652, "b": 205.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "without RCAC. Complete the following steps:", "bbox": {"l": 136.8, "t": 208.48852999999997, "r": 334.59366, "b": 217.70154000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Before implementing RCAC, run some simple SQL statements to demonstrate data access without RCAC. Complete the following steps:"}, {"label": "list_item", "id": 5, "page_no": 39, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 136.76841735839844, "t": 224.45919799804688, "r": 547.2157, "b": 246.74090999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9609369039535522, "cells": [{"id": 11, "text": "1.", "bbox": {"l": 136.8, "t": 225.52808000000005, "r": 145.08882, "b": 234.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "The first SQL statement, which is shown in Example 3-5, basically counts the total number ", "bbox": {"l": 147.85175, "t": 225.52808000000005, "r": 547.2157, "b": 234.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "of rows in the EMPLOYEES table.", "bbox": {"l": 151.19917, "t": 237.52788999999996, "r": 301.134, "b": 246.74090999999999, "coord_origin": "TOPLEFT"}}]}, "text": "1. The first SQL statement, which is shown in Example 3-5, basically counts the total number of rows in the EMPLOYEES table."}, {"label": "caption", "id": 6, "page_no": 39, "cluster": {"id": 6, "label": "caption", "bbox": {"l": 136.413330078125, "t": 258.6246643066406, "r": 334.6294250488281, "b": 268.3210754394531, "coord_origin": "TOPLEFT"}, "confidence": 0.6967653632164001, "cells": [{"id": 14, "text": "Example 3-5 Counting the number of employees", "bbox": {"l": 136.8, "t": 259.51801, "r": 334.13672, "b": 267.84295999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-5 Counting the number of employees"}, {"label": "text", "id": 7, "page_no": 39, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.42640686035156, "t": 275.64599609375, "r": 406.61636, "b": 286.7776184082031, "coord_origin": "TOPLEFT"}, "confidence": 0.6531516313552856, "cells": [{"id": 15, "text": "SELECT COUNT(*) as ROW_COUNT FROM HR_SCHEMA.EMPLOYEES;", "bbox": {"l": 136.8, "t": 276.6781, "r": 406.61636, "b": 285.45287999999994, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT COUNT(*) as ROW_COUNT FROM HR_SCHEMA.EMPLOYEES;"}, {"label": "text", "id": 8, "page_no": 39, "cluster": {"id": 8, "label": "text", "bbox": {"l": 150.4588623046875, "t": 299.9428405761719, "r": 545.10712, "b": 322.47479248046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9646008610725403, "cells": [{"id": 16, "text": "The result of this query is shown in Figure 3-7, which is the total number of employees of ", "bbox": {"l": 151.20016, "t": 300.52831999999995, "r": 545.10712, "b": 309.7413, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "the company.", "bbox": {"l": 151.20016, "t": 312.52814000000006, "r": 210.05083, "b": 321.74112, "coord_origin": "TOPLEFT"}}]}, "text": "The result of this query is shown in Figure 3-7, which is the total number of employees of the company."}, {"label": "caption", "id": 9, "page_no": 39, "cluster": {"id": 9, "label": "caption", "bbox": {"l": 136.30203247070312, "t": 375.2716369628906, "r": 272.9559326171875, "b": 384.7872009277344, "coord_origin": "TOPLEFT"}, "confidence": 0.7269786596298218, "cells": [{"id": 18, "text": "Figure 3-7 Number of employees", "bbox": {"l": 136.8, "t": 376.21799000000004, "r": 272.65857, "b": 384.54299999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-7 Number of employees"}, {"label": "list_item", "id": 10, "page_no": 39, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 136.12722778320312, "t": 401.2595520019531, "r": 547.25177, "b": 423.76806640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9607868790626526, "cells": [{"id": 19, "text": "2.", "bbox": {"l": 136.8, "t": 402.1687299999999, "r": 145.05576, "b": 411.38171, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Run a second SQL statement (shown in Example 3-6) that lists the employees. If you have ", "bbox": {"l": 147.80766, "t": 402.1687299999999, "r": 547.25177, "b": 411.38171, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "read access to the table, you see all the rows no matter who you are.", "bbox": {"l": 151.20016, "t": 414.16855000000004, "r": 455.22919, "b": 423.38153, "coord_origin": "TOPLEFT"}}]}, "text": "2. Run a second SQL statement (shown in Example 3-6) that lists the employees. If you have read access to the table, you see all the rows no matter who you are."}, {"label": "caption", "id": 11, "page_no": 39, "cluster": {"id": 11, "label": "caption", "bbox": {"l": 136.4648895263672, "t": 435.44384765625, "r": 369.71875, "b": 444.9762268066406, "coord_origin": "TOPLEFT"}, "confidence": 0.7871338725090027, "cells": [{"id": 22, "text": "Example 3-6 Displaying the information of the Employees", "bbox": {"l": 136.8, "t": 436.21799000000004, "r": 369.315, "b": 444.54299999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-6 Displaying the information of the Employees"}, {"label": "text", "id": 12, "page_no": 39, "cluster": {"id": 12, "label": "text", "bbox": {"l": 136.8, "t": 453.31812, "r": 286.67804, "b": 546.09158, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 23, "text": "SELECT", "bbox": {"l": 136.8, "t": 453.31812, "r": 171.26956, "b": 462.0929, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "EMPLOYEE_ID,", "bbox": {"l": 182.75941, "t": 453.31812, "r": 251.69853, "b": 462.0929, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "LAST_NAME, ", "bbox": {"l": 166.11162, "t": 465.31793, "r": 246.71854, "b": 474.09271, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "JOB_DESCRIPTION,", "bbox": {"l": 163.77567, "t": 477.31775, "r": 271.67828, "b": 486.09253, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "DATE_OF_BIRTH,", "bbox": {"l": 164.55962, "t": 489.31757, "r": 261.71829, "b": 498.09235, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "TAX_ID,", "bbox": {"l": 169.505, "t": 501.31738, "r": 226.73877000000002, "b": 510.09216, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "USER_ID,", "bbox": {"l": 168.43959, "t": 513.3172, "r": 231.71878000000004, "b": 522.0919799999999, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "MANAGER_OF_EMPLOYEE", "bbox": {"l": 162.86575, "t": 525.31702, "r": 286.67804, "b": 534.0917999999999, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " FROM", "bbox": {"l": 136.8, "t": 537.31683, "r": 164.55519, "b": 546.09158, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "HR_SCHEMA.EMPLOYEES", "bbox": {"l": 181.20831, "t": 537.31683, "r": 286.67804, "b": 546.09158, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT EMPLOYEE_ID, LAST_NAME, JOB_DESCRIPTION, DATE_OF_BIRTH, TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE FROM HR_SCHEMA.EMPLOYEES"}, {"label": "text", "id": 13, "page_no": 39, "cluster": {"id": 13, "label": "text", "bbox": {"l": 156.851318359375, "t": 134.62420654296875, "r": 533.43896, "b": 145.3269805908203, "coord_origin": "TOPLEFT"}, "confidence": 0.901655912399292, "cells": [{"id": 33, "text": "Note:", "bbox": {"l": 157.2, "t": 135.52855999999997, "r": 182.73245, "b": 144.74158, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": " Neither of the consultants (MCAIN and HBEDOYA) belong to any group profile.", "bbox": {"l": 182.76035, "t": 135.52855999999997, "r": 533.43896, "b": 144.74158, "coord_origin": "TOPLEFT"}}]}, "text": "Note: Neither of the consultants (MCAIN and HBEDOYA) belong to any group profile."}, {"label": "picture", "id": 14, "page_no": 39, "cluster": {"id": 14, "label": "picture", "bbox": {"l": 136.4460906982422, "t": 337.62408447265625, "r": 227.48138427734375, "b": 370.2557067871094, "coord_origin": "TOPLEFT"}, "confidence": 0.6461378931999207, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 39, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.0978240966797, "t": 70.40028381347656, "r": 547.26752, "b": 117.03543853759766, "coord_origin": "TOPLEFT"}, "confidence": 0.9766601324081421, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.15074, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "You now must assign users to a group profile. Employees go in to the EMP group profile, ", "bbox": {"l": 147.93431, "t": 71.50867000000005, "r": 544.18408, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Managers go into the MGR group profile, and Human Resource employees go into the HR ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 547.24072, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "group profile. For simplicity, this example selects one employee (DSSMITH), one manager ", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 547.26752, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "(TQSPENSER), and one HR analyst (VGLUCCHESS).", "bbox": {"l": 151.20016, "t": 107.50811999999996, "r": 393.52896, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "2. You now must assign users to a group profile. Employees go in to the EMP group profile, Managers go into the MGR group profile, and Human Resource employees go into the HR group profile. For simplicity, this example selects one employee (DSSMITH), one manager (TQSPENSER), and one HR analyst (VGLUCCHESS)."}, {"label": "section_header", "id": 3, "page_no": 39, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 64.17131805419922, "t": 168.79916381835938, "r": 360.16098, "b": 182.6798553466797, "coord_origin": "TOPLEFT"}, "confidence": 0.961124837398529, "cells": [{"id": 7, "text": "3.6.3", "bbox": {"l": 64.800003, "t": 170.33471999999995, "r": 93.988304, "b": 182.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Demonstrating data access without RCAC", "bbox": {"l": 97.636864, "t": 170.33471999999995, "r": 360.16098, "b": 182.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "3.6.3 Demonstrating data access without RCAC"}, {"label": "text", "id": 4, "page_no": 39, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.1033477783203, "t": 195.17257690429688, "r": 540.30652, "b": 217.70154000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.953971803188324, "cells": [{"id": 9, "text": "Before implementing RCAC, run some simple SQL statements to demonstrate data access ", "bbox": {"l": 136.8, "t": 196.48870999999997, "r": 540.30652, "b": 205.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "without RCAC. Complete the following steps:", "bbox": {"l": 136.8, "t": 208.48852999999997, "r": 334.59366, "b": 217.70154000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Before implementing RCAC, run some simple SQL statements to demonstrate data access without RCAC. Complete the following steps:"}, {"label": "list_item", "id": 5, "page_no": 39, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 136.76841735839844, "t": 224.45919799804688, "r": 547.2157, "b": 246.74090999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9609369039535522, "cells": [{"id": 11, "text": "1.", "bbox": {"l": 136.8, "t": 225.52808000000005, "r": 145.08882, "b": 234.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "The first SQL statement, which is shown in Example 3-5, basically counts the total number ", "bbox": {"l": 147.85175, "t": 225.52808000000005, "r": 547.2157, "b": 234.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "of rows in the EMPLOYEES table.", "bbox": {"l": 151.19917, "t": 237.52788999999996, "r": 301.134, "b": 246.74090999999999, "coord_origin": "TOPLEFT"}}]}, "text": "1. The first SQL statement, which is shown in Example 3-5, basically counts the total number of rows in the EMPLOYEES table."}, {"label": "caption", "id": 6, "page_no": 39, "cluster": {"id": 6, "label": "caption", "bbox": {"l": 136.413330078125, "t": 258.6246643066406, "r": 334.6294250488281, "b": 268.3210754394531, "coord_origin": "TOPLEFT"}, "confidence": 0.6967653632164001, "cells": [{"id": 14, "text": "Example 3-5 Counting the number of employees", "bbox": {"l": 136.8, "t": 259.51801, "r": 334.13672, "b": 267.84295999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-5 Counting the number of employees"}, {"label": "text", "id": 7, "page_no": 39, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.42640686035156, "t": 275.64599609375, "r": 406.61636, "b": 286.7776184082031, "coord_origin": "TOPLEFT"}, "confidence": 0.6531516313552856, "cells": [{"id": 15, "text": "SELECT COUNT(*) as ROW_COUNT FROM HR_SCHEMA.EMPLOYEES;", "bbox": {"l": 136.8, "t": 276.6781, "r": 406.61636, "b": 285.45287999999994, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT COUNT(*) as ROW_COUNT FROM HR_SCHEMA.EMPLOYEES;"}, {"label": "text", "id": 8, "page_no": 39, "cluster": {"id": 8, "label": "text", "bbox": {"l": 150.4588623046875, "t": 299.9428405761719, "r": 545.10712, "b": 322.47479248046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9646008610725403, "cells": [{"id": 16, "text": "The result of this query is shown in Figure 3-7, which is the total number of employees of ", "bbox": {"l": 151.20016, "t": 300.52831999999995, "r": 545.10712, "b": 309.7413, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "the company.", "bbox": {"l": 151.20016, "t": 312.52814000000006, "r": 210.05083, "b": 321.74112, "coord_origin": "TOPLEFT"}}]}, "text": "The result of this query is shown in Figure 3-7, which is the total number of employees of the company."}, {"label": "caption", "id": 9, "page_no": 39, "cluster": {"id": 9, "label": "caption", "bbox": {"l": 136.30203247070312, "t": 375.2716369628906, "r": 272.9559326171875, "b": 384.7872009277344, "coord_origin": "TOPLEFT"}, "confidence": 0.7269786596298218, "cells": [{"id": 18, "text": "Figure 3-7 Number of employees", "bbox": {"l": 136.8, "t": 376.21799000000004, "r": 272.65857, "b": 384.54299999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-7 Number of employees"}, {"label": "list_item", "id": 10, "page_no": 39, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 136.12722778320312, "t": 401.2595520019531, "r": 547.25177, "b": 423.76806640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9607868790626526, "cells": [{"id": 19, "text": "2.", "bbox": {"l": 136.8, "t": 402.1687299999999, "r": 145.05576, "b": 411.38171, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Run a second SQL statement (shown in Example 3-6) that lists the employees. If you have ", "bbox": {"l": 147.80766, "t": 402.1687299999999, "r": 547.25177, "b": 411.38171, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "read access to the table, you see all the rows no matter who you are.", "bbox": {"l": 151.20016, "t": 414.16855000000004, "r": 455.22919, "b": 423.38153, "coord_origin": "TOPLEFT"}}]}, "text": "2. Run a second SQL statement (shown in Example 3-6) that lists the employees. If you have read access to the table, you see all the rows no matter who you are."}, {"label": "caption", "id": 11, "page_no": 39, "cluster": {"id": 11, "label": "caption", "bbox": {"l": 136.4648895263672, "t": 435.44384765625, "r": 369.71875, "b": 444.9762268066406, "coord_origin": "TOPLEFT"}, "confidence": 0.7871338725090027, "cells": [{"id": 22, "text": "Example 3-6 Displaying the information of the Employees", "bbox": {"l": 136.8, "t": 436.21799000000004, "r": 369.315, "b": 444.54299999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-6 Displaying the information of the Employees"}, {"label": "text", "id": 12, "page_no": 39, "cluster": {"id": 12, "label": "text", "bbox": {"l": 136.8, "t": 453.31812, "r": 286.67804, "b": 546.09158, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 23, "text": "SELECT", "bbox": {"l": 136.8, "t": 453.31812, "r": 171.26956, "b": 462.0929, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "EMPLOYEE_ID,", "bbox": {"l": 182.75941, "t": 453.31812, "r": 251.69853, "b": 462.0929, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "LAST_NAME, ", "bbox": {"l": 166.11162, "t": 465.31793, "r": 246.71854, "b": 474.09271, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "JOB_DESCRIPTION,", "bbox": {"l": 163.77567, "t": 477.31775, "r": 271.67828, "b": 486.09253, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "DATE_OF_BIRTH,", "bbox": {"l": 164.55962, "t": 489.31757, "r": 261.71829, "b": 498.09235, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "TAX_ID,", "bbox": {"l": 169.505, "t": 501.31738, "r": 226.73877000000002, "b": 510.09216, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "USER_ID,", "bbox": {"l": 168.43959, "t": 513.3172, "r": 231.71878000000004, "b": 522.0919799999999, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "MANAGER_OF_EMPLOYEE", "bbox": {"l": 162.86575, "t": 525.31702, "r": 286.67804, "b": 534.0917999999999, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " FROM", "bbox": {"l": 136.8, "t": 537.31683, "r": 164.55519, "b": 546.09158, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "HR_SCHEMA.EMPLOYEES", "bbox": {"l": 181.20831, "t": 537.31683, "r": 286.67804, "b": 546.09158, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT EMPLOYEE_ID, LAST_NAME, JOB_DESCRIPTION, DATE_OF_BIRTH, TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE FROM HR_SCHEMA.EMPLOYEES"}, {"label": "text", "id": 13, "page_no": 39, "cluster": {"id": 13, "label": "text", "bbox": {"l": 156.851318359375, "t": 134.62420654296875, "r": 533.43896, "b": 145.3269805908203, "coord_origin": "TOPLEFT"}, "confidence": 0.901655912399292, "cells": [{"id": 33, "text": "Note:", "bbox": {"l": 157.2, "t": 135.52855999999997, "r": 182.73245, "b": 144.74158, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": " Neither of the consultants (MCAIN and HBEDOYA) belong to any group profile.", "bbox": {"l": 182.76035, "t": 135.52855999999997, "r": 533.43896, "b": 144.74158, "coord_origin": "TOPLEFT"}}]}, "text": "Note: Neither of the consultants (MCAIN and HBEDOYA) belong to any group profile."}, {"label": "picture", "id": 14, "page_no": 39, "cluster": {"id": 14, "label": "picture", "bbox": {"l": 136.4460906982422, "t": 337.62408447265625, "r": 227.48138427734375, "b": 370.2557067871094, "coord_origin": "TOPLEFT"}, "confidence": 0.6461378931999207, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 39, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.88653564453125, "t": 754.3186645507812, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9114106297492981, "cells": [{"id": 0, "text": "24 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "24"}, {"label": "page_footer", "id": 1, "page_no": 39, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.27753448486328, "t": 754.6685180664062, "r": 334.42142, "b": 763.9840087890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9486663937568665, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 40, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "25", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "The result of this query is shown in Figure 3-8.", "bbox": {"l": 151.19977, "t": 71.50903000000005, "r": 356.2522, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 3-8 List of employees without RCAC enabled", "bbox": {"l": 64.800003, "t": 471.61798, "r": 275.62769, "b": 479.94299, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "3.6.4", "bbox": {"l": 64.800003, "t": 500.45462, "r": 94.008797, "b": 512.4426000000001, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Defining and creating row permissions", "bbox": {"l": 97.659912, "t": 500.45462, "r": 339.95895, "b": 512.4426000000001, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Implement RCAC on the EMPLOYEES table by completing the following steps:", "bbox": {"l": 136.8, "t": 526.60861, "r": 484.33429, "b": 535.82159, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "1.", "bbox": {"l": 136.80002, "t": 543.58842, "r": 145.20392, "b": 552.80142, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Start by defining a row permission. In this example, the rules to enforce include the ", "bbox": {"l": 148.00522, "t": 543.58842, "r": 519.3288, "b": 552.80142, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "following ones:", "bbox": {"l": 151.20018, "t": 555.5882300000001, "r": 216.83159000000003, "b": 564.8012200000001, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "-", "bbox": {"l": 152.03981, "t": 572.62779, "r": 157.57359, "b": 581.84079, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Human Resources employees can see all the rows.", "bbox": {"l": 165.59937, "t": 572.62779, "r": 392.51511, "b": 581.84079, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "-", "bbox": {"l": 152.03981, "t": 584.6275899999999, "r": 157.60745, "b": 593.84059, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Managers can see only information for the employees that they manage.", "bbox": {"l": 165.59935, "t": 584.6275899999999, "r": 484.94476000000003, "b": 593.84059, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "-", "bbox": {"l": 152.03981, "t": 596.6274, "r": 157.60446, "b": 605.8403900000001, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Employees can see only their own information.", "bbox": {"l": 165.59935, "t": 596.6274, "r": 371.57324, "b": 605.8403900000001, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "-", "bbox": {"l": 152.03981, "t": 608.6272, "r": 157.56662, "b": 617.84019, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Consultants are not allowed to see any rows in the table.", "bbox": {"l": 165.59937, "t": 608.6272, "r": 415.18304, "b": 617.84019, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 344.6938781738281, "t": 754.8302612304688, "r": 523.60162, "b": 764.0167236328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9586459994316101, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.7025146484375, "t": 754.375244140625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9186720848083496, "cells": [{"id": 1, "text": "25", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 150.51434326171875, "t": 70.7142562866211, "r": 356.2522, "b": 81.25257873535156, "coord_origin": "TOPLEFT"}, "confidence": 0.7506248354911804, "cells": [{"id": 2, "text": "The result of this query is shown in Figure 3-8.", "bbox": {"l": 151.19977, "t": 71.50903000000005, "r": 356.2522, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.24310302734375, "t": 470.6240539550781, "r": 276.3370361328125, "b": 479.94299, "coord_origin": "TOPLEFT"}, "confidence": 0.927272617816925, "cells": [{"id": 3, "text": "Figure 3-8 List of employees without RCAC enabled", "bbox": {"l": 64.800003, "t": 471.61798, "r": 275.62769, "b": 479.94299, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 64.31729888916016, "t": 499.6622314453125, "r": 339.95895, "b": 513.0746459960938, "coord_origin": "TOPLEFT"}, "confidence": 0.9666332602500916, "cells": [{"id": 4, "text": "3.6.4", "bbox": {"l": 64.800003, "t": 500.45462, "r": 94.008797, "b": 512.4426000000001, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Defining and creating row permissions", "bbox": {"l": 97.659912, "t": 500.45462, "r": 339.95895, "b": 512.4426000000001, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.47174072265625, "t": 526.1157836914062, "r": 484.33429, "b": 536.0692749023438, "coord_origin": "TOPLEFT"}, "confidence": 0.920616090297699, "cells": [{"id": 6, "text": "Implement RCAC on the EMPLOYEES table by completing the following steps:", "bbox": {"l": 136.8, "t": 526.60861, "r": 484.33429, "b": 535.82159, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 136.80002, "t": 542.7721557617188, "r": 519.3288, "b": 565.2183837890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9658254981040955, "cells": [{"id": 7, "text": "1.", "bbox": {"l": 136.80002, "t": 543.58842, "r": 145.20392, "b": 552.80142, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Start by defining a row permission. In this example, the rules to enforce include the ", "bbox": {"l": 148.00522, "t": 543.58842, "r": 519.3288, "b": 552.80142, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "following ones:", "bbox": {"l": 151.20018, "t": 555.5882300000001, "r": 216.83159000000003, "b": 564.8012200000001, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 151.23526000976562, "t": 572.105712890625, "r": 392.51511, "b": 582.262939453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9449333548545837, "cells": [{"id": 10, "text": "-", "bbox": {"l": 152.03981, "t": 572.62779, "r": 157.57359, "b": 581.84079, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Human Resources employees can see all the rows.", "bbox": {"l": 165.59937, "t": 572.62779, "r": 392.51511, "b": 581.84079, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 151.32948303222656, "t": 584.3190307617188, "r": 484.94476000000003, "b": 594.1929931640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9476761221885681, "cells": [{"id": 12, "text": "-", "bbox": {"l": 152.03981, "t": 584.6275899999999, "r": 157.60745, "b": 593.84059, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Managers can see only information for the employees that they manage.", "bbox": {"l": 165.59935, "t": 584.6275899999999, "r": 484.94476000000003, "b": 593.84059, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 151.46128845214844, "t": 596.0510864257812, "r": 371.57324, "b": 606.2974243164062, "coord_origin": "TOPLEFT"}, "confidence": 0.9385150671005249, "cells": [{"id": 14, "text": "-", "bbox": {"l": 152.03981, "t": 596.6274, "r": 157.60446, "b": 605.8403900000001, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Employees can see only their own information.", "bbox": {"l": 165.59935, "t": 596.6274, "r": 371.57324, "b": 605.8403900000001, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 151.29678344726562, "t": 608.191162109375, "r": 415.18304, "b": 618.0337524414062, "coord_origin": "TOPLEFT"}, "confidence": 0.9464589953422546, "cells": [{"id": 16, "text": "-", "bbox": {"l": 152.03981, "t": 608.6272, "r": 157.56662, "b": 617.84019, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Consultants are not allowed to see any rows in the table.", "bbox": {"l": 165.59937, "t": 608.6272, "r": 415.18304, "b": 617.84019, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 40, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.6938781738281, "t": 754.8302612304688, "r": 523.60162, "b": 764.0167236328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9586459994316101, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 40, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.7025146484375, "t": 754.375244140625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9186720848083496, "cells": [{"id": 1, "text": "25", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "25"}, {"label": "section_header", "id": 2, "page_no": 40, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 150.51434326171875, "t": 70.7142562866211, "r": 356.2522, "b": 81.25257873535156, "coord_origin": "TOPLEFT"}, "confidence": 0.7506248354911804, "cells": [{"id": 2, "text": "The result of this query is shown in Figure 3-8.", "bbox": {"l": 151.19977, "t": 71.50903000000005, "r": 356.2522, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}]}, "text": "The result of this query is shown in Figure 3-8."}, {"label": "caption", "id": 3, "page_no": 40, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.24310302734375, "t": 470.6240539550781, "r": 276.3370361328125, "b": 479.94299, "coord_origin": "TOPLEFT"}, "confidence": 0.927272617816925, "cells": [{"id": 3, "text": "Figure 3-8 List of employees without RCAC enabled", "bbox": {"l": 64.800003, "t": 471.61798, "r": 275.62769, "b": 479.94299, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-8 List of employees without RCAC enabled"}, {"label": "section_header", "id": 4, "page_no": 40, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.31729888916016, "t": 499.6622314453125, "r": 339.95895, "b": 513.0746459960938, "coord_origin": "TOPLEFT"}, "confidence": 0.9666332602500916, "cells": [{"id": 4, "text": "3.6.4", "bbox": {"l": 64.800003, "t": 500.45462, "r": 94.008797, "b": 512.4426000000001, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Defining and creating row permissions", "bbox": {"l": 97.659912, "t": 500.45462, "r": 339.95895, "b": 512.4426000000001, "coord_origin": "TOPLEFT"}}]}, "text": "3.6.4 Defining and creating row permissions"}, {"label": "text", "id": 5, "page_no": 40, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.47174072265625, "t": 526.1157836914062, "r": 484.33429, "b": 536.0692749023438, "coord_origin": "TOPLEFT"}, "confidence": 0.920616090297699, "cells": [{"id": 6, "text": "Implement RCAC on the EMPLOYEES table by completing the following steps:", "bbox": {"l": 136.8, "t": 526.60861, "r": 484.33429, "b": 535.82159, "coord_origin": "TOPLEFT"}}]}, "text": "Implement RCAC on the EMPLOYEES table by completing the following steps:"}, {"label": "list_item", "id": 6, "page_no": 40, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.80002, "t": 542.7721557617188, "r": 519.3288, "b": 565.2183837890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9658254981040955, "cells": [{"id": 7, "text": "1.", "bbox": {"l": 136.80002, "t": 543.58842, "r": 145.20392, "b": 552.80142, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Start by defining a row permission. In this example, the rules to enforce include the ", "bbox": {"l": 148.00522, "t": 543.58842, "r": 519.3288, "b": 552.80142, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "following ones:", "bbox": {"l": 151.20018, "t": 555.5882300000001, "r": 216.83159000000003, "b": 564.8012200000001, "coord_origin": "TOPLEFT"}}]}, "text": "1. Start by defining a row permission. In this example, the rules to enforce include the following ones:"}, {"label": "list_item", "id": 7, "page_no": 40, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 151.23526000976562, "t": 572.105712890625, "r": 392.51511, "b": 582.262939453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9449333548545837, "cells": [{"id": 10, "text": "-", "bbox": {"l": 152.03981, "t": 572.62779, "r": 157.57359, "b": 581.84079, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Human Resources employees can see all the rows.", "bbox": {"l": 165.59937, "t": 572.62779, "r": 392.51511, "b": 581.84079, "coord_origin": "TOPLEFT"}}]}, "text": "-Human Resources employees can see all the rows."}, {"label": "list_item", "id": 8, "page_no": 40, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 151.32948303222656, "t": 584.3190307617188, "r": 484.94476000000003, "b": 594.1929931640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9476761221885681, "cells": [{"id": 12, "text": "-", "bbox": {"l": 152.03981, "t": 584.6275899999999, "r": 157.60745, "b": 593.84059, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Managers can see only information for the employees that they manage.", "bbox": {"l": 165.59935, "t": 584.6275899999999, "r": 484.94476000000003, "b": 593.84059, "coord_origin": "TOPLEFT"}}]}, "text": "-Managers can see only information for the employees that they manage."}, {"label": "list_item", "id": 9, "page_no": 40, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 151.46128845214844, "t": 596.0510864257812, "r": 371.57324, "b": 606.2974243164062, "coord_origin": "TOPLEFT"}, "confidence": 0.9385150671005249, "cells": [{"id": 14, "text": "-", "bbox": {"l": 152.03981, "t": 596.6274, "r": 157.60446, "b": 605.8403900000001, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Employees can see only their own information.", "bbox": {"l": 165.59935, "t": 596.6274, "r": 371.57324, "b": 605.8403900000001, "coord_origin": "TOPLEFT"}}]}, "text": "-Employees can see only their own information."}, {"label": "list_item", "id": 10, "page_no": 40, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 151.29678344726562, "t": 608.191162109375, "r": 415.18304, "b": 618.0337524414062, "coord_origin": "TOPLEFT"}, "confidence": 0.9464589953422546, "cells": [{"id": 16, "text": "-", "bbox": {"l": 152.03981, "t": 608.6272, "r": 157.56662, "b": 617.84019, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Consultants are not allowed to see any rows in the table.", "bbox": {"l": 165.59937, "t": 608.6272, "r": 415.18304, "b": 617.84019, "coord_origin": "TOPLEFT"}}]}, "text": "-Consultants are not allowed to see any rows in the table."}], "body": [{"label": "section_header", "id": 2, "page_no": 40, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 150.51434326171875, "t": 70.7142562866211, "r": 356.2522, "b": 81.25257873535156, "coord_origin": "TOPLEFT"}, "confidence": 0.7506248354911804, "cells": [{"id": 2, "text": "The result of this query is shown in Figure 3-8.", "bbox": {"l": 151.19977, "t": 71.50903000000005, "r": 356.2522, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}]}, "text": "The result of this query is shown in Figure 3-8."}, {"label": "caption", "id": 3, "page_no": 40, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.24310302734375, "t": 470.6240539550781, "r": 276.3370361328125, "b": 479.94299, "coord_origin": "TOPLEFT"}, "confidence": 0.927272617816925, "cells": [{"id": 3, "text": "Figure 3-8 List of employees without RCAC enabled", "bbox": {"l": 64.800003, "t": 471.61798, "r": 275.62769, "b": 479.94299, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-8 List of employees without RCAC enabled"}, {"label": "section_header", "id": 4, "page_no": 40, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.31729888916016, "t": 499.6622314453125, "r": 339.95895, "b": 513.0746459960938, "coord_origin": "TOPLEFT"}, "confidence": 0.9666332602500916, "cells": [{"id": 4, "text": "3.6.4", "bbox": {"l": 64.800003, "t": 500.45462, "r": 94.008797, "b": 512.4426000000001, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Defining and creating row permissions", "bbox": {"l": 97.659912, "t": 500.45462, "r": 339.95895, "b": 512.4426000000001, "coord_origin": "TOPLEFT"}}]}, "text": "3.6.4 Defining and creating row permissions"}, {"label": "text", "id": 5, "page_no": 40, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.47174072265625, "t": 526.1157836914062, "r": 484.33429, "b": 536.0692749023438, "coord_origin": "TOPLEFT"}, "confidence": 0.920616090297699, "cells": [{"id": 6, "text": "Implement RCAC on the EMPLOYEES table by completing the following steps:", "bbox": {"l": 136.8, "t": 526.60861, "r": 484.33429, "b": 535.82159, "coord_origin": "TOPLEFT"}}]}, "text": "Implement RCAC on the EMPLOYEES table by completing the following steps:"}, {"label": "list_item", "id": 6, "page_no": 40, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.80002, "t": 542.7721557617188, "r": 519.3288, "b": 565.2183837890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9658254981040955, "cells": [{"id": 7, "text": "1.", "bbox": {"l": 136.80002, "t": 543.58842, "r": 145.20392, "b": 552.80142, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Start by defining a row permission. In this example, the rules to enforce include the ", "bbox": {"l": 148.00522, "t": 543.58842, "r": 519.3288, "b": 552.80142, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "following ones:", "bbox": {"l": 151.20018, "t": 555.5882300000001, "r": 216.83159000000003, "b": 564.8012200000001, "coord_origin": "TOPLEFT"}}]}, "text": "1. Start by defining a row permission. In this example, the rules to enforce include the following ones:"}, {"label": "list_item", "id": 7, "page_no": 40, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 151.23526000976562, "t": 572.105712890625, "r": 392.51511, "b": 582.262939453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9449333548545837, "cells": [{"id": 10, "text": "-", "bbox": {"l": 152.03981, "t": 572.62779, "r": 157.57359, "b": 581.84079, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Human Resources employees can see all the rows.", "bbox": {"l": 165.59937, "t": 572.62779, "r": 392.51511, "b": 581.84079, "coord_origin": "TOPLEFT"}}]}, "text": "-Human Resources employees can see all the rows."}, {"label": "list_item", "id": 8, "page_no": 40, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 151.32948303222656, "t": 584.3190307617188, "r": 484.94476000000003, "b": 594.1929931640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9476761221885681, "cells": [{"id": 12, "text": "-", "bbox": {"l": 152.03981, "t": 584.6275899999999, "r": 157.60745, "b": 593.84059, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Managers can see only information for the employees that they manage.", "bbox": {"l": 165.59935, "t": 584.6275899999999, "r": 484.94476000000003, "b": 593.84059, "coord_origin": "TOPLEFT"}}]}, "text": "-Managers can see only information for the employees that they manage."}, {"label": "list_item", "id": 9, "page_no": 40, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 151.46128845214844, "t": 596.0510864257812, "r": 371.57324, "b": 606.2974243164062, "coord_origin": "TOPLEFT"}, "confidence": 0.9385150671005249, "cells": [{"id": 14, "text": "-", "bbox": {"l": 152.03981, "t": 596.6274, "r": 157.60446, "b": 605.8403900000001, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Employees can see only their own information.", "bbox": {"l": 165.59935, "t": 596.6274, "r": 371.57324, "b": 605.8403900000001, "coord_origin": "TOPLEFT"}}]}, "text": "-Employees can see only their own information."}, {"label": "list_item", "id": 10, "page_no": 40, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 151.29678344726562, "t": 608.191162109375, "r": 415.18304, "b": 618.0337524414062, "coord_origin": "TOPLEFT"}, "confidence": 0.9464589953422546, "cells": [{"id": 16, "text": "-", "bbox": {"l": 152.03981, "t": 608.6272, "r": 157.56662, "b": 617.84019, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Consultants are not allowed to see any rows in the table.", "bbox": {"l": 165.59937, "t": 608.6272, "r": 415.18304, "b": 617.84019, "coord_origin": "TOPLEFT"}}]}, "text": "-Consultants are not allowed to see any rows in the table."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 40, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.6938781738281, "t": 754.8302612304688, "r": 523.60162, "b": 764.0167236328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9586459994316101, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 40, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.7025146484375, "t": 754.375244140625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9186720848083496, "cells": [{"id": 1, "text": "25", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "25"}]}}, {"page_no": 41, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "26 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "To implement this row permission, run the SQL statement that is shown in Example 3-7.", "bbox": {"l": 151.2, "t": 71.50867000000005, "r": 538.5603, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Example 3-7 Creating a permission for the EMPLOYEE table", "bbox": {"l": 136.8, "t": 93.49805000000003, "r": 383.20923, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "CREATE PERMISSION HR_SCHEMA.PERMISSION1_ON_EMPLOYEES", "bbox": {"l": 136.8, "t": 110.65808000000015, "r": 406.61636, "b": 119.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "ON", "bbox": {"l": 136.8, "t": 122.65790000000004, "r": 149.79282, "b": 131.43268, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "HR_SCHEMA.EMPLOYEES AS EMPLOYEES", "bbox": {"l": 188.77129, "t": 122.65790000000004, "r": 396.65637, "b": 131.43268, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "FOR ROWS", "bbox": {"l": 136.8, "t": 134.65770999999995, "r": 176.75952, "b": 143.4325, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "WHERE", "bbox": {"l": 136.8, "t": 146.65752999999995, "r": 165.35201, "b": 155.43231000000003, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1 )", "bbox": {"l": 193.90401, "t": 146.65752999999995, "r": 496.55518, "b": 155.43231000000003, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "OR", "bbox": {"l": 136.8, "t": 158.65734999999995, "r": 148.62584, "b": 167.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 184.10336, "t": 158.65734999999995, "r": 491.57513, "b": 167.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "AND", "bbox": {"l": 136.8, "t": 170.65716999999995, "r": 154.73547, "b": 179.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "( EMPLOYEES . MANAGER_OF_EMPLOYEE = SESSION_USER", "bbox": {"l": 184.62791, "t": 170.65716999999995, "r": 471.5954, "b": 179.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "OR EMPLOYEES . USER_ID = SESSION_USER ) ) ", "bbox": {"l": 181.77367, "t": 182.65697999999998, "r": 451.6156, "b": 191.43176000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "OR", "bbox": {"l": 136.8, "t": 194.65679999999998, "r": 148.62584, "b": 203.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1", "bbox": {"l": 184.10336, "t": 194.65679999999998, "r": 491.57513, "b": 203.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "AND EMPLOYEES . USER_ID = SESSION_USER )", "bbox": {"l": 182.19513, "t": 206.65661999999998, "r": 441.59589, "b": 215.43140000000005, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ENFORCED FOR ALL ACCESS", "bbox": {"l": 136.8, "t": 218.65643, "r": 251.69855000000004, "b": 227.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ENABLE ;", "bbox": {"l": 136.8, "t": 230.65625, "r": 181.73952, "b": 239.43102999999996, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "2.", "bbox": {"l": 136.8, "t": 254.50647000000004, "r": 145.20389, "b": 263.71948, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Look at the definition of the table and see the permissions, as shown in Figure 3-9. ", "bbox": {"l": 148.00517, "t": 254.50647000000004, "r": 518.79407, "b": 263.71948, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "QIBM_DEFAULT_EMPLOYEE_HR_SCHEMA is the default permission, as described in ", "bbox": {"l": 151.20016, "t": 266.50629000000004, "r": 539.85822, "b": 275.7193, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "3.1.2, \u201cEnabling and activating RCAC\u201d on page 16.", "bbox": {"l": 151.20016, "t": 278.50609999999995, "r": 374.84296, "b": 287.71912, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Figure 3-9 Row permissions that are shown in System i Navigator", "bbox": {"l": 64.800003, "t": 492.3179, "r": 330.28021, "b": 500.64291, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "3.6.5", "bbox": {"l": 64.800003, "t": 521.15472, "r": 94.073502, "b": 533.1427, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Defining and creating column masks", "bbox": {"l": 97.732674, "t": 521.15472, "r": 327.40588, "b": 533.1427, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Define the different masks for the columns that are sensitive by completing the following ", "bbox": {"l": 136.8, "t": 547.30862, "r": 526.41431, "b": 556.52162, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "steps:", "bbox": {"l": 136.8, "t": 559.30843, "r": 163.44897, "b": 568.52142, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "1.", "bbox": {"l": 136.8, "t": 576.28824, "r": 145.16614, "b": 585.50124, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Start with the DAY_OF_BIRTH column. In this example, the rules to enforce include the ", "bbox": {"l": 147.95483, "t": 576.28824, "r": 538.78564, "b": 585.50124, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "following ones:", "bbox": {"l": 151.20016, "t": 588.28804, "r": 216.83157, "b": 597.50104, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "-", "bbox": {"l": 152.03979, "t": 605.26785, "r": 157.61441, "b": 614.48085, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Human Resources can see the entire date of birth of the employees.", "bbox": {"l": 165.59933, "t": 605.26785, "r": 467.65625, "b": 614.48085, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "-", "bbox": {"l": 152.03979, "t": 622.30742, "r": 157.60942, "b": 631.5204200000001, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Employees can see only their own date of birth.", "bbox": {"l": 165.59933, "t": 622.30742, "r": 375.38675, "b": 631.5204200000001, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "-", "bbox": {"l": 152.03979, "t": 639.28723, "r": 157.61142, "b": 648.50023, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Managers can see the date of birth of their employees masked with YEAR being 9999.", "bbox": {"l": 165.59933, "t": 639.28723, "r": 547.25653, "b": 648.50023, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "To implement this column mask, run the SQL statement that is shown in Example 3-8.", "bbox": {"l": 151.20016, "t": 656.26704, "r": 530.06067, "b": 665.48004, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Example 3-8 Creation of a mask on the DATE_OF_BIRTH column", "bbox": {"l": 136.8, "t": 678.3179, "r": 403.40155, "b": 686.6429, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "CREATE MASK", "bbox": {"l": 136.8, "t": 695.418121, "r": 193.80365, "b": 704.192879, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "HR_SCHEMA.MASK_DATE_OF_BIRTH_ON_EMPLOYEES", "bbox": {"l": 204.16795, "t": 695.418121, "r": 416.63611, "b": 704.192879, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "ON", "bbox": {"l": 136.8, "t": 707.417931, "r": 148.79384, "b": 716.192688, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "HR_SCHEMA.EMPLOYEES AS EMPLOYEES ", "bbox": {"l": 178.77841, "t": 707.417931, "r": 376.67661, "b": 716.192688, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "FOR COLUMN", "bbox": {"l": 136.8, "t": 719.41774, "r": 192.76723, "b": 728.192497, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "DATE_OF_BIRTH", "bbox": {"l": 203.96066, "t": 719.41774, "r": 276.71805, "b": 728.192497, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.85331726074219, "t": 754.3814086914062, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9175847768783569, "cells": [{"id": 0, "text": "26 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.32594299316406, "t": 754.67138671875, "r": 334.42142, "b": 763.926513671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9555695652961731, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 150.2159423828125, "t": 70.65572357177734, "r": 538.5603, "b": 81.11334991455078, "coord_origin": "TOPLEFT"}, "confidence": 0.9370454549789429, "cells": [{"id": 2, "text": "To implement this row permission, run the SQL statement that is shown in Example 3-7.", "bbox": {"l": 151.2, "t": 71.50867000000005, "r": 538.5603, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.3914031982422, "t": 92.4392318725586, "r": 383.7792053222656, "b": 102.14237213134766, "coord_origin": "TOPLEFT"}, "confidence": 0.8971781134605408, "cells": [{"id": 3, "text": "Example 3-7 Creating a permission for the EMPLOYEE table", "bbox": {"l": 136.8, "t": 93.49805000000003, "r": 383.20923, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "code", "bbox": {"l": 134.622802734375, "t": 105.0101089477539, "r": 547.7505493164062, "b": 244.519775390625, "coord_origin": "TOPLEFT"}, "confidence": 0.7303169369697571, "cells": [{"id": 4, "text": "CREATE PERMISSION HR_SCHEMA.PERMISSION1_ON_EMPLOYEES", "bbox": {"l": 136.8, "t": 110.65808000000015, "r": 406.61636, "b": 119.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "ON", "bbox": {"l": 136.8, "t": 122.65790000000004, "r": 149.79282, "b": 131.43268, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "HR_SCHEMA.EMPLOYEES AS EMPLOYEES", "bbox": {"l": 188.77129, "t": 122.65790000000004, "r": 396.65637, "b": 131.43268, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "FOR ROWS", "bbox": {"l": 136.8, "t": 134.65770999999995, "r": 176.75952, "b": 143.4325, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "WHERE", "bbox": {"l": 136.8, "t": 146.65752999999995, "r": 165.35201, "b": 155.43231000000003, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1 )", "bbox": {"l": 193.90401, "t": 146.65752999999995, "r": 496.55518, "b": 155.43231000000003, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "OR", "bbox": {"l": 136.8, "t": 158.65734999999995, "r": 148.62584, "b": 167.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 184.10336, "t": 158.65734999999995, "r": 491.57513, "b": 167.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "AND", "bbox": {"l": 136.8, "t": 170.65716999999995, "r": 154.73547, "b": 179.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "( EMPLOYEES . MANAGER_OF_EMPLOYEE = SESSION_USER", "bbox": {"l": 184.62791, "t": 170.65716999999995, "r": 471.5954, "b": 179.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "OR EMPLOYEES . USER_ID = SESSION_USER ) ) ", "bbox": {"l": 181.77367, "t": 182.65697999999998, "r": 451.6156, "b": 191.43176000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "OR", "bbox": {"l": 136.8, "t": 194.65679999999998, "r": 148.62584, "b": 203.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1", "bbox": {"l": 184.10336, "t": 194.65679999999998, "r": 491.57513, "b": 203.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "AND EMPLOYEES . USER_ID = SESSION_USER )", "bbox": {"l": 182.19513, "t": 206.65661999999998, "r": 441.59589, "b": 215.43140000000005, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ENFORCED FOR ALL ACCESS", "bbox": {"l": 136.8, "t": 218.65643, "r": 251.69855000000004, "b": 227.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ENABLE ;", "bbox": {"l": 136.8, "t": 230.65625, "r": 181.73952, "b": 239.43102999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 135.9988250732422, "t": 253.1900634765625, "r": 539.85822, "b": 287.8277282714844, "coord_origin": "TOPLEFT"}, "confidence": 0.9342305064201355, "cells": [{"id": 20, "text": "2.", "bbox": {"l": 136.8, "t": 254.50647000000004, "r": 145.20389, "b": 263.71948, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Look at the definition of the table and see the permissions, as shown in Figure 3-9. ", "bbox": {"l": 148.00517, "t": 254.50647000000004, "r": 518.79407, "b": 263.71948, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "QIBM_DEFAULT_EMPLOYEE_HR_SCHEMA is the default permission, as described in ", "bbox": {"l": 151.20016, "t": 266.50629000000004, "r": 539.85822, "b": 275.7193, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "3.1.2, \u201cEnabling and activating RCAC\u201d on page 16.", "bbox": {"l": 151.20016, "t": 278.50609999999995, "r": 374.84296, "b": 287.71912, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "caption", "bbox": {"l": 64.43289947509766, "t": 491.4513244628906, "r": 331.18115234375, "b": 500.79241943359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9436566233634949, "cells": [{"id": 24, "text": "Figure 3-9 Row permissions that are shown in System i Navigator", "bbox": {"l": 64.800003, "t": 492.3179, "r": 330.28021, "b": 500.64291, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "section_header", "bbox": {"l": 64.18317413330078, "t": 520.4345703125, "r": 327.40588, "b": 533.9813232421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9629243612289429, "cells": [{"id": 25, "text": "3.6.5", "bbox": {"l": 64.800003, "t": 521.15472, "r": 94.073502, "b": 533.1427, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Defining and creating column masks", "bbox": {"l": 97.732674, "t": 521.15472, "r": 327.40588, "b": 533.1427, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 136.35951232910156, "t": 546.794189453125, "r": 526.41431, "b": 568.794921875, "coord_origin": "TOPLEFT"}, "confidence": 0.968765139579773, "cells": [{"id": 27, "text": "Define the different masks for the columns that are sensitive by completing the following ", "bbox": {"l": 136.8, "t": 547.30862, "r": 526.41431, "b": 556.52162, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "steps:", "bbox": {"l": 136.8, "t": 559.30843, "r": 163.44897, "b": 568.52142, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 136.79542541503906, "t": 575.26025390625, "r": 538.78564, "b": 597.7650756835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9648330807685852, "cells": [{"id": 29, "text": "1.", "bbox": {"l": 136.8, "t": 576.28824, "r": 145.16614, "b": 585.50124, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Start with the DAY_OF_BIRTH column. In this example, the rules to enforce include the ", "bbox": {"l": 147.95483, "t": 576.28824, "r": 538.78564, "b": 585.50124, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "following ones:", "bbox": {"l": 151.20016, "t": 588.28804, "r": 216.83157, "b": 597.50104, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 151.26760864257812, "t": 604.6339721679688, "r": 467.65625, "b": 614.5850830078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9502057433128357, "cells": [{"id": 32, "text": "-", "bbox": {"l": 152.03979, "t": 605.26785, "r": 157.61441, "b": 614.48085, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Human Resources can see the entire date of birth of the employees.", "bbox": {"l": 165.59933, "t": 605.26785, "r": 467.65625, "b": 614.48085, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 151.2598114013672, "t": 621.2564086914062, "r": 375.38675, "b": 631.7196044921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9498502016067505, "cells": [{"id": 34, "text": "-", "bbox": {"l": 152.03979, "t": 622.30742, "r": 157.60942, "b": 631.5204200000001, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Employees can see only their own date of birth.", "bbox": {"l": 165.59933, "t": 622.30742, "r": 375.38675, "b": 631.5204200000001, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "list_item", "bbox": {"l": 151.43798828125, "t": 638.585205078125, "r": 547.25653, "b": 648.8189086914062, "coord_origin": "TOPLEFT"}, "confidence": 0.9482884407043457, "cells": [{"id": 36, "text": "-", "bbox": {"l": 152.03979, "t": 639.28723, "r": 157.61142, "b": 648.50023, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Managers can see the date of birth of their employees masked with YEAR being 9999.", "bbox": {"l": 165.59933, "t": 639.28723, "r": 547.25653, "b": 648.50023, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 150.7313232421875, "t": 655.2977905273438, "r": 530.06067, "b": 665.58984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9218307137489319, "cells": [{"id": 38, "text": "To implement this column mask, run the SQL statement that is shown in Example 3-8.", "bbox": {"l": 151.20016, "t": 656.26704, "r": 530.06067, "b": 665.48004, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "caption", "bbox": {"l": 136.27670288085938, "t": 677.1241455078125, "r": 403.9977722167969, "b": 686.8948974609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9098079204559326, "cells": [{"id": 39, "text": "Example 3-8 Creation of a mask on the DATE_OF_BIRTH column", "bbox": {"l": 136.8, "t": 678.3179, "r": 403.40155, "b": 686.6429, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "text", "bbox": {"l": 136.8, "t": 695.418121, "r": 416.63611, "b": 728.192497, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 40, "text": "CREATE MASK", "bbox": {"l": 136.8, "t": 695.418121, "r": 193.80365, "b": 704.192879, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "HR_SCHEMA.MASK_DATE_OF_BIRTH_ON_EMPLOYEES", "bbox": {"l": 204.16795, "t": 695.418121, "r": 416.63611, "b": 704.192879, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "ON", "bbox": {"l": 136.8, "t": 707.417931, "r": 148.79384, "b": 716.192688, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "HR_SCHEMA.EMPLOYEES AS EMPLOYEES ", "bbox": {"l": 178.77841, "t": 707.417931, "r": 376.67661, "b": 716.192688, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "FOR COLUMN", "bbox": {"l": 136.8, "t": 719.41774, "r": 192.76723, "b": 728.192497, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "DATE_OF_BIRTH", "bbox": {"l": 203.96066, "t": 719.41774, "r": 276.71805, "b": 728.192497, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "picture", "bbox": {"l": 64.00577545166016, "t": 302.1222839355469, "r": 547.3966674804688, "b": 489.23321533203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9799203276634216, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 41, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.85331726074219, "t": 754.3814086914062, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9175847768783569, "cells": [{"id": 0, "text": "26 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "26"}, {"label": "page_footer", "id": 1, "page_no": 41, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.32594299316406, "t": 754.67138671875, "r": 334.42142, "b": 763.926513671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9555695652961731, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 2, "page_no": 41, "cluster": {"id": 2, "label": "text", "bbox": {"l": 150.2159423828125, "t": 70.65572357177734, "r": 538.5603, "b": 81.11334991455078, "coord_origin": "TOPLEFT"}, "confidence": 0.9370454549789429, "cells": [{"id": 2, "text": "To implement this row permission, run the SQL statement that is shown in Example 3-7.", "bbox": {"l": 151.2, "t": 71.50867000000005, "r": 538.5603, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "To implement this row permission, run the SQL statement that is shown in Example 3-7."}, {"label": "caption", "id": 3, "page_no": 41, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.3914031982422, "t": 92.4392318725586, "r": 383.7792053222656, "b": 102.14237213134766, "coord_origin": "TOPLEFT"}, "confidence": 0.8971781134605408, "cells": [{"id": 3, "text": "Example 3-7 Creating a permission for the EMPLOYEE table", "bbox": {"l": 136.8, "t": 93.49805000000003, "r": 383.20923, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-7 Creating a permission for the EMPLOYEE table"}, {"label": "code", "id": 4, "page_no": 41, "cluster": {"id": 4, "label": "code", "bbox": {"l": 134.622802734375, "t": 105.0101089477539, "r": 547.7505493164062, "b": 244.519775390625, "coord_origin": "TOPLEFT"}, "confidence": 0.7303169369697571, "cells": [{"id": 4, "text": "CREATE PERMISSION HR_SCHEMA.PERMISSION1_ON_EMPLOYEES", "bbox": {"l": 136.8, "t": 110.65808000000015, "r": 406.61636, "b": 119.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "ON", "bbox": {"l": 136.8, "t": 122.65790000000004, "r": 149.79282, "b": 131.43268, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "HR_SCHEMA.EMPLOYEES AS EMPLOYEES", "bbox": {"l": 188.77129, "t": 122.65790000000004, "r": 396.65637, "b": 131.43268, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "FOR ROWS", "bbox": {"l": 136.8, "t": 134.65770999999995, "r": 176.75952, "b": 143.4325, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "WHERE", "bbox": {"l": 136.8, "t": 146.65752999999995, "r": 165.35201, "b": 155.43231000000003, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1 )", "bbox": {"l": 193.90401, "t": 146.65752999999995, "r": 496.55518, "b": 155.43231000000003, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "OR", "bbox": {"l": 136.8, "t": 158.65734999999995, "r": 148.62584, "b": 167.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 184.10336, "t": 158.65734999999995, "r": 491.57513, "b": 167.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "AND", "bbox": {"l": 136.8, "t": 170.65716999999995, "r": 154.73547, "b": 179.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "( EMPLOYEES . MANAGER_OF_EMPLOYEE = SESSION_USER", "bbox": {"l": 184.62791, "t": 170.65716999999995, "r": 471.5954, "b": 179.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "OR EMPLOYEES . USER_ID = SESSION_USER ) ) ", "bbox": {"l": 181.77367, "t": 182.65697999999998, "r": 451.6156, "b": 191.43176000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "OR", "bbox": {"l": 136.8, "t": 194.65679999999998, "r": 148.62584, "b": 203.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1", "bbox": {"l": 184.10336, "t": 194.65679999999998, "r": 491.57513, "b": 203.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "AND EMPLOYEES . USER_ID = SESSION_USER )", "bbox": {"l": 182.19513, "t": 206.65661999999998, "r": 441.59589, "b": 215.43140000000005, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ENFORCED FOR ALL ACCESS", "bbox": {"l": 136.8, "t": 218.65643, "r": 251.69855000000004, "b": 227.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ENABLE ;", "bbox": {"l": 136.8, "t": 230.65625, "r": 181.73952, "b": 239.43102999999996, "coord_origin": "TOPLEFT"}}]}, "text": "CREATE PERMISSION HR_SCHEMA.PERMISSION1_ON_EMPLOYEES ON HR_SCHEMA.EMPLOYEES AS EMPLOYEES FOR ROWS WHERE ( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1 ) OR ( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND ( EMPLOYEES . MANAGER_OF_EMPLOYEE = SESSION_USER OR EMPLOYEES . USER_ID = SESSION_USER ) ) OR ( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1 AND EMPLOYEES . USER_ID = SESSION_USER ) ENFORCED FOR ALL ACCESS ENABLE ;"}, {"label": "list_item", "id": 5, "page_no": 41, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.9988250732422, "t": 253.1900634765625, "r": 539.85822, "b": 287.8277282714844, "coord_origin": "TOPLEFT"}, "confidence": 0.9342305064201355, "cells": [{"id": 20, "text": "2.", "bbox": {"l": 136.8, "t": 254.50647000000004, "r": 145.20389, "b": 263.71948, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Look at the definition of the table and see the permissions, as shown in Figure 3-9. ", "bbox": {"l": 148.00517, "t": 254.50647000000004, "r": 518.79407, "b": 263.71948, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "QIBM_DEFAULT_EMPLOYEE_HR_SCHEMA is the default permission, as described in ", "bbox": {"l": 151.20016, "t": 266.50629000000004, "r": 539.85822, "b": 275.7193, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "3.1.2, \u201cEnabling and activating RCAC\u201d on page 16.", "bbox": {"l": 151.20016, "t": 278.50609999999995, "r": 374.84296, "b": 287.71912, "coord_origin": "TOPLEFT"}}]}, "text": "2. Look at the definition of the table and see the permissions, as shown in Figure 3-9. QIBM_DEFAULT_EMPLOYEE_HR_SCHEMA is the default permission, as described in 3.1.2, \u201cEnabling and activating RCAC\u201d on page 16."}, {"label": "caption", "id": 6, "page_no": 41, "cluster": {"id": 6, "label": "caption", "bbox": {"l": 64.43289947509766, "t": 491.4513244628906, "r": 331.18115234375, "b": 500.79241943359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9436566233634949, "cells": [{"id": 24, "text": "Figure 3-9 Row permissions that are shown in System i Navigator", "bbox": {"l": 64.800003, "t": 492.3179, "r": 330.28021, "b": 500.64291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-9 Row permissions that are shown in System i Navigator"}, {"label": "section_header", "id": 7, "page_no": 41, "cluster": {"id": 7, "label": "section_header", "bbox": {"l": 64.18317413330078, "t": 520.4345703125, "r": 327.40588, "b": 533.9813232421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9629243612289429, "cells": [{"id": 25, "text": "3.6.5", "bbox": {"l": 64.800003, "t": 521.15472, "r": 94.073502, "b": 533.1427, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Defining and creating column masks", "bbox": {"l": 97.732674, "t": 521.15472, "r": 327.40588, "b": 533.1427, "coord_origin": "TOPLEFT"}}]}, "text": "3.6.5 Defining and creating column masks"}, {"label": "text", "id": 8, "page_no": 41, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.35951232910156, "t": 546.794189453125, "r": 526.41431, "b": 568.794921875, "coord_origin": "TOPLEFT"}, "confidence": 0.968765139579773, "cells": [{"id": 27, "text": "Define the different masks for the columns that are sensitive by completing the following ", "bbox": {"l": 136.8, "t": 547.30862, "r": 526.41431, "b": 556.52162, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "steps:", "bbox": {"l": 136.8, "t": 559.30843, "r": 163.44897, "b": 568.52142, "coord_origin": "TOPLEFT"}}]}, "text": "Define the different masks for the columns that are sensitive by completing the following steps:"}, {"label": "list_item", "id": 9, "page_no": 41, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 136.79542541503906, "t": 575.26025390625, "r": 538.78564, "b": 597.7650756835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9648330807685852, "cells": [{"id": 29, "text": "1.", "bbox": {"l": 136.8, "t": 576.28824, "r": 145.16614, "b": 585.50124, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Start with the DAY_OF_BIRTH column. In this example, the rules to enforce include the ", "bbox": {"l": 147.95483, "t": 576.28824, "r": 538.78564, "b": 585.50124, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "following ones:", "bbox": {"l": 151.20016, "t": 588.28804, "r": 216.83157, "b": 597.50104, "coord_origin": "TOPLEFT"}}]}, "text": "1. Start with the DAY_OF_BIRTH column. In this example, the rules to enforce include the following ones:"}, {"label": "list_item", "id": 10, "page_no": 41, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 151.26760864257812, "t": 604.6339721679688, "r": 467.65625, "b": 614.5850830078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9502057433128357, "cells": [{"id": 32, "text": "-", "bbox": {"l": 152.03979, "t": 605.26785, "r": 157.61441, "b": 614.48085, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Human Resources can see the entire date of birth of the employees.", "bbox": {"l": 165.59933, "t": 605.26785, "r": 467.65625, "b": 614.48085, "coord_origin": "TOPLEFT"}}]}, "text": "-Human Resources can see the entire date of birth of the employees."}, {"label": "list_item", "id": 11, "page_no": 41, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 151.2598114013672, "t": 621.2564086914062, "r": 375.38675, "b": 631.7196044921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9498502016067505, "cells": [{"id": 34, "text": "-", "bbox": {"l": 152.03979, "t": 622.30742, "r": 157.60942, "b": 631.5204200000001, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Employees can see only their own date of birth.", "bbox": {"l": 165.59933, "t": 622.30742, "r": 375.38675, "b": 631.5204200000001, "coord_origin": "TOPLEFT"}}]}, "text": "-Employees can see only their own date of birth."}, {"label": "list_item", "id": 12, "page_no": 41, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 151.43798828125, "t": 638.585205078125, "r": 547.25653, "b": 648.8189086914062, "coord_origin": "TOPLEFT"}, "confidence": 0.9482884407043457, "cells": [{"id": 36, "text": "-", "bbox": {"l": 152.03979, "t": 639.28723, "r": 157.61142, "b": 648.50023, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Managers can see the date of birth of their employees masked with YEAR being 9999.", "bbox": {"l": 165.59933, "t": 639.28723, "r": 547.25653, "b": 648.50023, "coord_origin": "TOPLEFT"}}]}, "text": "-Managers can see the date of birth of their employees masked with YEAR being 9999."}, {"label": "text", "id": 13, "page_no": 41, "cluster": {"id": 13, "label": "text", "bbox": {"l": 150.7313232421875, "t": 655.2977905273438, "r": 530.06067, "b": 665.58984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9218307137489319, "cells": [{"id": 38, "text": "To implement this column mask, run the SQL statement that is shown in Example 3-8.", "bbox": {"l": 151.20016, "t": 656.26704, "r": 530.06067, "b": 665.48004, "coord_origin": "TOPLEFT"}}]}, "text": "To implement this column mask, run the SQL statement that is shown in Example 3-8."}, {"label": "caption", "id": 14, "page_no": 41, "cluster": {"id": 14, "label": "caption", "bbox": {"l": 136.27670288085938, "t": 677.1241455078125, "r": 403.9977722167969, "b": 686.8948974609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9098079204559326, "cells": [{"id": 39, "text": "Example 3-8 Creation of a mask on the DATE_OF_BIRTH column", "bbox": {"l": 136.8, "t": 678.3179, "r": 403.40155, "b": 686.6429, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-8 Creation of a mask on the DATE_OF_BIRTH column"}, {"label": "text", "id": 15, "page_no": 41, "cluster": {"id": 15, "label": "text", "bbox": {"l": 136.8, "t": 695.418121, "r": 416.63611, "b": 728.192497, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 40, "text": "CREATE MASK", "bbox": {"l": 136.8, "t": 695.418121, "r": 193.80365, "b": 704.192879, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "HR_SCHEMA.MASK_DATE_OF_BIRTH_ON_EMPLOYEES", "bbox": {"l": 204.16795, "t": 695.418121, "r": 416.63611, "b": 704.192879, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "ON", "bbox": {"l": 136.8, "t": 707.417931, "r": 148.79384, "b": 716.192688, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "HR_SCHEMA.EMPLOYEES AS EMPLOYEES ", "bbox": {"l": 178.77841, "t": 707.417931, "r": 376.67661, "b": 716.192688, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "FOR COLUMN", "bbox": {"l": 136.8, "t": 719.41774, "r": 192.76723, "b": 728.192497, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "DATE_OF_BIRTH", "bbox": {"l": 203.96066, "t": 719.41774, "r": 276.71805, "b": 728.192497, "coord_origin": "TOPLEFT"}}]}, "text": "CREATE MASK HR_SCHEMA.MASK_DATE_OF_BIRTH_ON_EMPLOYEES ON HR_SCHEMA.EMPLOYEES AS EMPLOYEES FOR COLUMN DATE_OF_BIRTH"}, {"label": "picture", "id": 16, "page_no": 41, "cluster": {"id": 16, "label": "picture", "bbox": {"l": 64.00577545166016, "t": 302.1222839355469, "r": 547.3966674804688, "b": 489.23321533203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9799203276634216, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 41, "cluster": {"id": 2, "label": "text", "bbox": {"l": 150.2159423828125, "t": 70.65572357177734, "r": 538.5603, "b": 81.11334991455078, "coord_origin": "TOPLEFT"}, "confidence": 0.9370454549789429, "cells": [{"id": 2, "text": "To implement this row permission, run the SQL statement that is shown in Example 3-7.", "bbox": {"l": 151.2, "t": 71.50867000000005, "r": 538.5603, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "To implement this row permission, run the SQL statement that is shown in Example 3-7."}, {"label": "caption", "id": 3, "page_no": 41, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.3914031982422, "t": 92.4392318725586, "r": 383.7792053222656, "b": 102.14237213134766, "coord_origin": "TOPLEFT"}, "confidence": 0.8971781134605408, "cells": [{"id": 3, "text": "Example 3-7 Creating a permission for the EMPLOYEE table", "bbox": {"l": 136.8, "t": 93.49805000000003, "r": 383.20923, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-7 Creating a permission for the EMPLOYEE table"}, {"label": "code", "id": 4, "page_no": 41, "cluster": {"id": 4, "label": "code", "bbox": {"l": 134.622802734375, "t": 105.0101089477539, "r": 547.7505493164062, "b": 244.519775390625, "coord_origin": "TOPLEFT"}, "confidence": 0.7303169369697571, "cells": [{"id": 4, "text": "CREATE PERMISSION HR_SCHEMA.PERMISSION1_ON_EMPLOYEES", "bbox": {"l": 136.8, "t": 110.65808000000015, "r": 406.61636, "b": 119.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "ON", "bbox": {"l": 136.8, "t": 122.65790000000004, "r": 149.79282, "b": 131.43268, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "HR_SCHEMA.EMPLOYEES AS EMPLOYEES", "bbox": {"l": 188.77129, "t": 122.65790000000004, "r": 396.65637, "b": 131.43268, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "FOR ROWS", "bbox": {"l": 136.8, "t": 134.65770999999995, "r": 176.75952, "b": 143.4325, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "WHERE", "bbox": {"l": 136.8, "t": 146.65752999999995, "r": 165.35201, "b": 155.43231000000003, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1 )", "bbox": {"l": 193.90401, "t": 146.65752999999995, "r": 496.55518, "b": 155.43231000000003, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "OR", "bbox": {"l": 136.8, "t": 158.65734999999995, "r": 148.62584, "b": 167.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 184.10336, "t": 158.65734999999995, "r": 491.57513, "b": 167.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "AND", "bbox": {"l": 136.8, "t": 170.65716999999995, "r": 154.73547, "b": 179.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "( EMPLOYEES . MANAGER_OF_EMPLOYEE = SESSION_USER", "bbox": {"l": 184.62791, "t": 170.65716999999995, "r": 471.5954, "b": 179.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "OR EMPLOYEES . USER_ID = SESSION_USER ) ) ", "bbox": {"l": 181.77367, "t": 182.65697999999998, "r": 451.6156, "b": 191.43176000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "OR", "bbox": {"l": 136.8, "t": 194.65679999999998, "r": 148.62584, "b": 203.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1", "bbox": {"l": 184.10336, "t": 194.65679999999998, "r": 491.57513, "b": 203.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "AND EMPLOYEES . USER_ID = SESSION_USER )", "bbox": {"l": 182.19513, "t": 206.65661999999998, "r": 441.59589, "b": 215.43140000000005, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ENFORCED FOR ALL ACCESS", "bbox": {"l": 136.8, "t": 218.65643, "r": 251.69855000000004, "b": 227.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ENABLE ;", "bbox": {"l": 136.8, "t": 230.65625, "r": 181.73952, "b": 239.43102999999996, "coord_origin": "TOPLEFT"}}]}, "text": "CREATE PERMISSION HR_SCHEMA.PERMISSION1_ON_EMPLOYEES ON HR_SCHEMA.EMPLOYEES AS EMPLOYEES FOR ROWS WHERE ( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1 ) OR ( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND ( EMPLOYEES . MANAGER_OF_EMPLOYEE = SESSION_USER OR EMPLOYEES . USER_ID = SESSION_USER ) ) OR ( VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1 AND EMPLOYEES . USER_ID = SESSION_USER ) ENFORCED FOR ALL ACCESS ENABLE ;"}, {"label": "list_item", "id": 5, "page_no": 41, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.9988250732422, "t": 253.1900634765625, "r": 539.85822, "b": 287.8277282714844, "coord_origin": "TOPLEFT"}, "confidence": 0.9342305064201355, "cells": [{"id": 20, "text": "2.", "bbox": {"l": 136.8, "t": 254.50647000000004, "r": 145.20389, "b": 263.71948, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Look at the definition of the table and see the permissions, as shown in Figure 3-9. ", "bbox": {"l": 148.00517, "t": 254.50647000000004, "r": 518.79407, "b": 263.71948, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "QIBM_DEFAULT_EMPLOYEE_HR_SCHEMA is the default permission, as described in ", "bbox": {"l": 151.20016, "t": 266.50629000000004, "r": 539.85822, "b": 275.7193, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "3.1.2, \u201cEnabling and activating RCAC\u201d on page 16.", "bbox": {"l": 151.20016, "t": 278.50609999999995, "r": 374.84296, "b": 287.71912, "coord_origin": "TOPLEFT"}}]}, "text": "2. Look at the definition of the table and see the permissions, as shown in Figure 3-9. QIBM_DEFAULT_EMPLOYEE_HR_SCHEMA is the default permission, as described in 3.1.2, \u201cEnabling and activating RCAC\u201d on page 16."}, {"label": "caption", "id": 6, "page_no": 41, "cluster": {"id": 6, "label": "caption", "bbox": {"l": 64.43289947509766, "t": 491.4513244628906, "r": 331.18115234375, "b": 500.79241943359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9436566233634949, "cells": [{"id": 24, "text": "Figure 3-9 Row permissions that are shown in System i Navigator", "bbox": {"l": 64.800003, "t": 492.3179, "r": 330.28021, "b": 500.64291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-9 Row permissions that are shown in System i Navigator"}, {"label": "section_header", "id": 7, "page_no": 41, "cluster": {"id": 7, "label": "section_header", "bbox": {"l": 64.18317413330078, "t": 520.4345703125, "r": 327.40588, "b": 533.9813232421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9629243612289429, "cells": [{"id": 25, "text": "3.6.5", "bbox": {"l": 64.800003, "t": 521.15472, "r": 94.073502, "b": 533.1427, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Defining and creating column masks", "bbox": {"l": 97.732674, "t": 521.15472, "r": 327.40588, "b": 533.1427, "coord_origin": "TOPLEFT"}}]}, "text": "3.6.5 Defining and creating column masks"}, {"label": "text", "id": 8, "page_no": 41, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.35951232910156, "t": 546.794189453125, "r": 526.41431, "b": 568.794921875, "coord_origin": "TOPLEFT"}, "confidence": 0.968765139579773, "cells": [{"id": 27, "text": "Define the different masks for the columns that are sensitive by completing the following ", "bbox": {"l": 136.8, "t": 547.30862, "r": 526.41431, "b": 556.52162, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "steps:", "bbox": {"l": 136.8, "t": 559.30843, "r": 163.44897, "b": 568.52142, "coord_origin": "TOPLEFT"}}]}, "text": "Define the different masks for the columns that are sensitive by completing the following steps:"}, {"label": "list_item", "id": 9, "page_no": 41, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 136.79542541503906, "t": 575.26025390625, "r": 538.78564, "b": 597.7650756835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9648330807685852, "cells": [{"id": 29, "text": "1.", "bbox": {"l": 136.8, "t": 576.28824, "r": 145.16614, "b": 585.50124, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Start with the DAY_OF_BIRTH column. In this example, the rules to enforce include the ", "bbox": {"l": 147.95483, "t": 576.28824, "r": 538.78564, "b": 585.50124, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "following ones:", "bbox": {"l": 151.20016, "t": 588.28804, "r": 216.83157, "b": 597.50104, "coord_origin": "TOPLEFT"}}]}, "text": "1. Start with the DAY_OF_BIRTH column. In this example, the rules to enforce include the following ones:"}, {"label": "list_item", "id": 10, "page_no": 41, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 151.26760864257812, "t": 604.6339721679688, "r": 467.65625, "b": 614.5850830078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9502057433128357, "cells": [{"id": 32, "text": "-", "bbox": {"l": 152.03979, "t": 605.26785, "r": 157.61441, "b": 614.48085, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Human Resources can see the entire date of birth of the employees.", "bbox": {"l": 165.59933, "t": 605.26785, "r": 467.65625, "b": 614.48085, "coord_origin": "TOPLEFT"}}]}, "text": "-Human Resources can see the entire date of birth of the employees."}, {"label": "list_item", "id": 11, "page_no": 41, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 151.2598114013672, "t": 621.2564086914062, "r": 375.38675, "b": 631.7196044921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9498502016067505, "cells": [{"id": 34, "text": "-", "bbox": {"l": 152.03979, "t": 622.30742, "r": 157.60942, "b": 631.5204200000001, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Employees can see only their own date of birth.", "bbox": {"l": 165.59933, "t": 622.30742, "r": 375.38675, "b": 631.5204200000001, "coord_origin": "TOPLEFT"}}]}, "text": "-Employees can see only their own date of birth."}, {"label": "list_item", "id": 12, "page_no": 41, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 151.43798828125, "t": 638.585205078125, "r": 547.25653, "b": 648.8189086914062, "coord_origin": "TOPLEFT"}, "confidence": 0.9482884407043457, "cells": [{"id": 36, "text": "-", "bbox": {"l": 152.03979, "t": 639.28723, "r": 157.61142, "b": 648.50023, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Managers can see the date of birth of their employees masked with YEAR being 9999.", "bbox": {"l": 165.59933, "t": 639.28723, "r": 547.25653, "b": 648.50023, "coord_origin": "TOPLEFT"}}]}, "text": "-Managers can see the date of birth of their employees masked with YEAR being 9999."}, {"label": "text", "id": 13, "page_no": 41, "cluster": {"id": 13, "label": "text", "bbox": {"l": 150.7313232421875, "t": 655.2977905273438, "r": 530.06067, "b": 665.58984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9218307137489319, "cells": [{"id": 38, "text": "To implement this column mask, run the SQL statement that is shown in Example 3-8.", "bbox": {"l": 151.20016, "t": 656.26704, "r": 530.06067, "b": 665.48004, "coord_origin": "TOPLEFT"}}]}, "text": "To implement this column mask, run the SQL statement that is shown in Example 3-8."}, {"label": "caption", "id": 14, "page_no": 41, "cluster": {"id": 14, "label": "caption", "bbox": {"l": 136.27670288085938, "t": 677.1241455078125, "r": 403.9977722167969, "b": 686.8948974609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9098079204559326, "cells": [{"id": 39, "text": "Example 3-8 Creation of a mask on the DATE_OF_BIRTH column", "bbox": {"l": 136.8, "t": 678.3179, "r": 403.40155, "b": 686.6429, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-8 Creation of a mask on the DATE_OF_BIRTH column"}, {"label": "text", "id": 15, "page_no": 41, "cluster": {"id": 15, "label": "text", "bbox": {"l": 136.8, "t": 695.418121, "r": 416.63611, "b": 728.192497, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 40, "text": "CREATE MASK", "bbox": {"l": 136.8, "t": 695.418121, "r": 193.80365, "b": 704.192879, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "HR_SCHEMA.MASK_DATE_OF_BIRTH_ON_EMPLOYEES", "bbox": {"l": 204.16795, "t": 695.418121, "r": 416.63611, "b": 704.192879, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "ON", "bbox": {"l": 136.8, "t": 707.417931, "r": 148.79384, "b": 716.192688, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "HR_SCHEMA.EMPLOYEES AS EMPLOYEES ", "bbox": {"l": 178.77841, "t": 707.417931, "r": 376.67661, "b": 716.192688, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "FOR COLUMN", "bbox": {"l": 136.8, "t": 719.41774, "r": 192.76723, "b": 728.192497, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "DATE_OF_BIRTH", "bbox": {"l": 203.96066, "t": 719.41774, "r": 276.71805, "b": 728.192497, "coord_origin": "TOPLEFT"}}]}, "text": "CREATE MASK HR_SCHEMA.MASK_DATE_OF_BIRTH_ON_EMPLOYEES ON HR_SCHEMA.EMPLOYEES AS EMPLOYEES FOR COLUMN DATE_OF_BIRTH"}, {"label": "picture", "id": 16, "page_no": 41, "cluster": {"id": 16, "label": "picture", "bbox": {"l": 64.00577545166016, "t": 302.1222839355469, "r": 547.3966674804688, "b": 489.23321533203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9799203276634216, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 41, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.85331726074219, "t": 754.3814086914062, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9175847768783569, "cells": [{"id": 0, "text": "26 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "26"}, {"label": "page_footer", "id": 1, "page_no": 41, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.32594299316406, "t": 754.67138671875, "r": 334.42142, "b": 763.926513671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9555695652961731, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 42, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "27", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "RETURN", "bbox": {"l": 136.79959, "t": 71.65845000000002, "r": 166.73935, "b": 80.43322999999998, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "CASE", "bbox": {"l": 136.79959, "t": 83.65826000000004, "r": 156.77934, "b": 92.43304, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR', 'EMP' ) = 1", "bbox": {"l": 147.26993, "t": 95.65808000000015, "r": 466.61502, "b": 104.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "THEN EMPLOYEES . DATE_OF_BIRTH", "bbox": {"l": 147.73068, "t": 107.65790000000004, "r": 311.69717, "b": 116.43268, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 147.31944, "t": 131.65752999999995, "r": 436.61547999999993, "b": 140.43231000000003, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "AND SESSION_USER = EMPLOYEES . USER_ID", "bbox": {"l": 147.54245, "t": 143.65734999999995, "r": 351.65668, "b": 152.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "THEN EMPLOYEES . DATE_OF_BIRTH", "bbox": {"l": 147.73068, "t": 155.65716999999995, "r": 311.69717, "b": 164.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 147.31944, "t": 179.65679999999998, "r": 436.61547999999993, "b": 188.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "AND SESSION_USER <> EMPLOYEES . USER_ID", "bbox": {"l": 147.52335, "t": 191.65661999999998, "r": 356.63669, "b": 200.43140000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "THEN ( 9999 || '-' ||", "bbox": {"l": 147.63832, "t": 203.65643, "r": 261.44492, "b": 212.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "MONTH ( EMPLOYEES . DATE_OF_BIRTH ) || '-'", "bbox": {"l": 272.28363, "t": 203.65643, "r": 499.89682, "b": 212.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "||", "bbox": {"l": 510.73557, "t": 203.65643, "r": 521.57428, "b": 212.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "DAY (EMPLOYEES.DATE_OF_BIRTH ))", "bbox": {"l": 160.78555, "t": 215.65625, "r": 346.6767, "b": 224.43102999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "ELSE NULL", "bbox": {"l": 149.51941, "t": 227.65607, "r": 206.75861, "b": 236.43084999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": " END", "bbox": {"l": 136.79959, "t": 239.65588000000002, "r": 156.77934, "b": 248.43066, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": " ENABLE ;", "bbox": {"l": 136.79959, "t": 251.65570000000002, "r": 186.7191, "b": 260.43048, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "2.", "bbox": {"l": 136.79959, "t": 275.50591999999995, "r": 145.18994, "b": 284.7189, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "The other column to mask in this example is the TAX_ID information. In this example, the ", "bbox": {"l": 147.98672, "t": 275.50591999999995, "r": 547.21222, "b": 284.7189, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "rules to enforce include the following ones:", "bbox": {"l": 151.19977, "t": 287.50574, "r": 339.37903, "b": 296.71871999999996, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "-", "bbox": {"l": 152.0394, "t": 304.48553000000004, "r": 157.61201, "b": 313.69852000000003, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Human Resources can see the unmasked TAX_ID of the employees.", "bbox": {"l": 165.59894, "t": 304.48553000000004, "r": 469.1528, "b": 313.69852000000003, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "-", "bbox": {"l": 152.0394, "t": 321.52512, "r": 157.60504, "b": 330.7381, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Employees can see only their own unmasked TAX_ID.", "bbox": {"l": 165.59894, "t": 321.52512, "r": 403.95953, "b": 330.7381, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "-", "bbox": {"l": 152.0394, "t": 338.50491, "r": 157.57019, "b": 347.7179, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Managers see a masked version of TAX_ID with the first five characters replaced with ", "bbox": {"l": 165.59894, "t": 338.50491, "r": 545.16846, "b": 347.7179, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "the X character (for example, XXX-XX-1234).", "bbox": {"l": 165.59894, "t": 350.50473, "r": 364.67947, "b": 359.71771, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "-", "bbox": {"l": 152.0394, "t": 367.48453, "r": 157.59309, "b": 376.6975100000001, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Any other person sees the entire TAX_ID as masked, for example, XXX-XX-XXXX.", "bbox": {"l": 165.59995, "t": 367.48453, "r": 529.46362, "b": 376.6975100000001, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "To implement this column mask, run the SQL statement that is shown in Example 3-9.", "bbox": {"l": 151.19978, "t": 384.52411, "r": 530.0603, "b": 393.73709, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Example 3-9 Creating a mask on the TAX_ID column", "bbox": {"l": 136.8, "t": 406.51801, "r": 351.9873, "b": 414.84302, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CREATE MASK", "bbox": {"l": 136.8, "t": 423.67810000000003, "r": 192.91296, "b": 432.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "HR_SCHEMA.MASK_TAX_ID_ON_EMPLOYEES ", "bbox": {"l": 203.11533, "t": 423.67810000000003, "r": 381.65659, "b": 432.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "ON", "bbox": {"l": 136.8, "t": 435.67792, "r": 148.54184, "b": 444.45270000000005, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "HR_SCHEMA.EMPLOYEES AS EMPLOYEES ", "bbox": {"l": 177.89645, "t": 435.67792, "r": 371.63684, "b": 444.45270000000005, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "FOR COLUMN", "bbox": {"l": 136.8, "t": 447.67773, "r": 199.25916, "b": 456.45251, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "TAX_ID", "bbox": {"l": 211.75098, "t": 447.67773, "r": 249.22647, "b": 456.45251, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "RETURN ", "bbox": {"l": 136.8, "t": 459.67755, "r": 176.75952, "b": 468.45233, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "CASE ", "bbox": {"l": 136.8, "t": 471.67737, "r": 161.75977, "b": 480.45215, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1", "bbox": {"l": 152.84189, "t": 483.67719, "r": 441.59589, "b": 492.45197, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "THEN EMPLOYEES . TAX_ID ", "bbox": {"l": 154.01309, "t": 495.677, "r": 291.7178, "b": 504.45178, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 ", "bbox": {"l": 152.80757, "t": 519.67661, "r": 451.6156, "b": 528.45139, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "AND SESSION_USER = EMPLOYEES . USER_ID ", "bbox": {"l": 153.21835, "t": 531.67642, "r": 366.65683, "b": 540.45117, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "THEN EMPLOYEES . TAX_ID", "bbox": {"l": 154.09363, "t": 543.6762200000001, "r": 286.67804, "b": 552.45097, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 152.82599, "t": 567.67583, "r": 446.63561999999996, "b": 576.45058, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "AND SESSION_USER <> EMPLOYEES . USER_ID ", "bbox": {"l": 153.18398, "t": 579.67563, "r": 371.63684, "b": 588.45038, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( EMPLOYEES . TAX_ID , 8 , 4 ) )", "bbox": {"l": 152.60088, "t": 591.67543, "r": 526.55469, "b": 600.45018, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1 ", "bbox": {"l": 152.80757, "t": 615.67505, "r": 451.6156, "b": 624.4498, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "THEN EMPLOYEES . TAX_ID ", "bbox": {"l": 154.01309, "t": 627.67485, "r": 291.7178, "b": 636.4496, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ELSE 'XXX-XX-XXXX' ", "bbox": {"l": 154.5134, "t": 651.67447, "r": 266.69827, "b": 660.44922, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "END", "bbox": {"l": 136.8, "t": 663.67427, "r": 157.7877, "b": 672.44904, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "ENABLE ;", "bbox": {"l": 136.8, "t": 675.67409, "r": 181.73952, "b": 684.44884, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 344.5617370605469, "t": 754.6708374023438, "r": 523.60162, "b": 764.1358032226562, "coord_origin": "TOPLEFT"}, "confidence": 0.9556928277015686, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.6422729492188, "t": 754.1753540039062, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9105784296989441, "cells": [{"id": 1, "text": "27", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 136.79959, "t": 71.65845000000002, "r": 166.73935, "b": 92.43304, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "RETURN", "bbox": {"l": 136.79959, "t": 71.65845000000002, "r": 166.73935, "b": 80.43322999999998, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "CASE", "bbox": {"l": 136.79959, "t": 83.65826000000004, "r": 156.77934, "b": 92.43304, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "code", "bbox": {"l": 136.79959, "t": 91.76913452148438, "r": 521.57428, "b": 261.5705871582031, "coord_origin": "TOPLEFT"}, "confidence": 0.778520941734314, "cells": [{"id": 4, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR', 'EMP' ) = 1", "bbox": {"l": 147.26993, "t": 95.65808000000015, "r": 466.61502, "b": 104.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "THEN EMPLOYEES . DATE_OF_BIRTH", "bbox": {"l": 147.73068, "t": 107.65790000000004, "r": 311.69717, "b": 116.43268, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 147.31944, "t": 131.65752999999995, "r": 436.61547999999993, "b": 140.43231000000003, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "AND SESSION_USER = EMPLOYEES . USER_ID", "bbox": {"l": 147.54245, "t": 143.65734999999995, "r": 351.65668, "b": 152.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "THEN EMPLOYEES . DATE_OF_BIRTH", "bbox": {"l": 147.73068, "t": 155.65716999999995, "r": 311.69717, "b": 164.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 147.31944, "t": 179.65679999999998, "r": 436.61547999999993, "b": 188.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "AND SESSION_USER <> EMPLOYEES . USER_ID", "bbox": {"l": 147.52335, "t": 191.65661999999998, "r": 356.63669, "b": 200.43140000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "THEN ( 9999 || '-' ||", "bbox": {"l": 147.63832, "t": 203.65643, "r": 261.44492, "b": 212.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "MONTH ( EMPLOYEES . DATE_OF_BIRTH ) || '-'", "bbox": {"l": 272.28363, "t": 203.65643, "r": 499.89682, "b": 212.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "||", "bbox": {"l": 510.73557, "t": 203.65643, "r": 521.57428, "b": 212.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "DAY (EMPLOYEES.DATE_OF_BIRTH ))", "bbox": {"l": 160.78555, "t": 215.65625, "r": 346.6767, "b": 224.43102999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "ELSE NULL", "bbox": {"l": 149.51941, "t": 227.65607, "r": 206.75861, "b": 236.43084999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": " END", "bbox": {"l": 136.79959, "t": 239.65588000000002, "r": 156.77934, "b": 248.43066, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": " ENABLE ;", "bbox": {"l": 136.79959, "t": 251.65570000000002, "r": 186.7191, "b": 260.43048, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 135.86044311523438, "t": 274.4537353515625, "r": 547.21222, "b": 296.77191162109375, "coord_origin": "TOPLEFT"}, "confidence": 0.8678946495056152, "cells": [{"id": 18, "text": "2.", "bbox": {"l": 136.79959, "t": 275.50591999999995, "r": 145.18994, "b": 284.7189, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "The other column to mask in this example is the TAX_ID information. In this example, the ", "bbox": {"l": 147.98672, "t": 275.50591999999995, "r": 547.21222, "b": 284.7189, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "rules to enforce include the following ones:", "bbox": {"l": 151.19977, "t": 287.50574, "r": 339.37903, "b": 296.71871999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 151.1599578857422, "t": 303.3277282714844, "r": 469.1528, "b": 313.69852000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9461130499839783, "cells": [{"id": 21, "text": "-", "bbox": {"l": 152.0394, "t": 304.48553000000004, "r": 157.61201, "b": 313.69852000000003, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Human Resources can see the unmasked TAX_ID of the employees.", "bbox": {"l": 165.59894, "t": 304.48553000000004, "r": 469.1528, "b": 313.69852000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 151.2740936279297, "t": 320.54925537109375, "r": 403.95953, "b": 330.8575439453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9467734694480896, "cells": [{"id": 23, "text": "-", "bbox": {"l": 152.0394, "t": 321.52512, "r": 157.60504, "b": 330.7381, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Employees can see only their own unmasked TAX_ID.", "bbox": {"l": 165.59894, "t": 321.52512, "r": 403.95953, "b": 330.7381, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 151.4427947998047, "t": 337.3158264160156, "r": 545.16846, "b": 359.71771, "coord_origin": "TOPLEFT"}, "confidence": 0.9705167412757874, "cells": [{"id": 25, "text": "-", "bbox": {"l": 152.0394, "t": 338.50491, "r": 157.57019, "b": 347.7179, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Managers see a masked version of TAX_ID with the first five characters replaced with ", "bbox": {"l": 165.59894, "t": 338.50491, "r": 545.16846, "b": 347.7179, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "the X character (for example, XXX-XX-1234).", "bbox": {"l": 165.59894, "t": 350.50473, "r": 364.67947, "b": 359.71771, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 151.51747131347656, "t": 366.6339111328125, "r": 529.46362, "b": 377.1689147949219, "coord_origin": "TOPLEFT"}, "confidence": 0.9469640254974365, "cells": [{"id": 28, "text": "-", "bbox": {"l": 152.0394, "t": 367.48453, "r": 157.59309, "b": 376.6975100000001, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Any other person sees the entire TAX_ID as masked, for example, XXX-XX-XXXX.", "bbox": {"l": 165.59995, "t": 367.48453, "r": 529.46362, "b": 376.6975100000001, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 150.69093322753906, "t": 383.80133056640625, "r": 530.0603, "b": 394.17559814453125, "coord_origin": "TOPLEFT"}, "confidence": 0.7003507614135742, "cells": [{"id": 30, "text": "To implement this column mask, run the SQL statement that is shown in Example 3-9.", "bbox": {"l": 151.19978, "t": 384.52411, "r": 530.0603, "b": 393.73709, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "caption", "bbox": {"l": 136.25662231445312, "t": 405.446044921875, "r": 352.31475830078125, "b": 415.0381164550781, "coord_origin": "TOPLEFT"}, "confidence": 0.8488205075263977, "cells": [{"id": 31, "text": "Example 3-9 Creating a mask on the TAX_ID column", "bbox": {"l": 136.8, "t": 406.51801, "r": 351.9873, "b": 414.84302, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "code", "bbox": {"l": 135.95343017578125, "t": 418.5181884765625, "r": 535.87548828125, "b": 688.5432739257812, "coord_origin": "TOPLEFT"}, "confidence": 0.8411229848861694, "cells": [{"id": 32, "text": "CREATE MASK", "bbox": {"l": 136.8, "t": 423.67810000000003, "r": 192.91296, "b": 432.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "HR_SCHEMA.MASK_TAX_ID_ON_EMPLOYEES ", "bbox": {"l": 203.11533, "t": 423.67810000000003, "r": 381.65659, "b": 432.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "ON", "bbox": {"l": 136.8, "t": 435.67792, "r": 148.54184, "b": 444.45270000000005, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "HR_SCHEMA.EMPLOYEES AS EMPLOYEES ", "bbox": {"l": 177.89645, "t": 435.67792, "r": 371.63684, "b": 444.45270000000005, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "FOR COLUMN", "bbox": {"l": 136.8, "t": 447.67773, "r": 199.25916, "b": 456.45251, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "TAX_ID", "bbox": {"l": 211.75098, "t": 447.67773, "r": 249.22647, "b": 456.45251, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "RETURN ", "bbox": {"l": 136.8, "t": 459.67755, "r": 176.75952, "b": 468.45233, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "CASE ", "bbox": {"l": 136.8, "t": 471.67737, "r": 161.75977, "b": 480.45215, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1", "bbox": {"l": 152.84189, "t": 483.67719, "r": 441.59589, "b": 492.45197, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "THEN EMPLOYEES . TAX_ID ", "bbox": {"l": 154.01309, "t": 495.677, "r": 291.7178, "b": 504.45178, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 ", "bbox": {"l": 152.80757, "t": 519.67661, "r": 451.6156, "b": 528.45139, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "AND SESSION_USER = EMPLOYEES . USER_ID ", "bbox": {"l": 153.21835, "t": 531.67642, "r": 366.65683, "b": 540.45117, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "THEN EMPLOYEES . TAX_ID", "bbox": {"l": 154.09363, "t": 543.6762200000001, "r": 286.67804, "b": 552.45097, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 152.82599, "t": 567.67583, "r": 446.63561999999996, "b": 576.45058, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "AND SESSION_USER <> EMPLOYEES . USER_ID ", "bbox": {"l": 153.18398, "t": 579.67563, "r": 371.63684, "b": 588.45038, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( EMPLOYEES . TAX_ID , 8 , 4 ) )", "bbox": {"l": 152.60088, "t": 591.67543, "r": 526.55469, "b": 600.45018, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1 ", "bbox": {"l": 152.80757, "t": 615.67505, "r": 451.6156, "b": 624.4498, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "THEN EMPLOYEES . TAX_ID ", "bbox": {"l": 154.01309, "t": 627.67485, "r": 291.7178, "b": 636.4496, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ELSE 'XXX-XX-XXXX' ", "bbox": {"l": 154.5134, "t": 651.67447, "r": 266.69827, "b": 660.44922, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "END", "bbox": {"l": 136.8, "t": 663.67427, "r": 157.7877, "b": 672.44904, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "ENABLE ;", "bbox": {"l": 136.8, "t": 675.67409, "r": 181.73952, "b": 684.44884, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 42, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.5617370605469, "t": 754.6708374023438, "r": 523.60162, "b": 764.1358032226562, "coord_origin": "TOPLEFT"}, "confidence": 0.9556928277015686, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 42, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6422729492188, "t": 754.1753540039062, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9105784296989441, "cells": [{"id": 1, "text": "27", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "27"}, {"label": "text", "id": 2, "page_no": 42, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.79959, "t": 71.65845000000002, "r": 166.73935, "b": 92.43304, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "RETURN", "bbox": {"l": 136.79959, "t": 71.65845000000002, "r": 166.73935, "b": 80.43322999999998, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "CASE", "bbox": {"l": 136.79959, "t": 83.65826000000004, "r": 156.77934, "b": 92.43304, "coord_origin": "TOPLEFT"}}]}, "text": "RETURN CASE"}, {"label": "code", "id": 3, "page_no": 42, "cluster": {"id": 3, "label": "code", "bbox": {"l": 136.79959, "t": 91.76913452148438, "r": 521.57428, "b": 261.5705871582031, "coord_origin": "TOPLEFT"}, "confidence": 0.778520941734314, "cells": [{"id": 4, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR', 'EMP' ) = 1", "bbox": {"l": 147.26993, "t": 95.65808000000015, "r": 466.61502, "b": 104.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "THEN EMPLOYEES . DATE_OF_BIRTH", "bbox": {"l": 147.73068, "t": 107.65790000000004, "r": 311.69717, "b": 116.43268, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 147.31944, "t": 131.65752999999995, "r": 436.61547999999993, "b": 140.43231000000003, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "AND SESSION_USER = EMPLOYEES . USER_ID", "bbox": {"l": 147.54245, "t": 143.65734999999995, "r": 351.65668, "b": 152.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "THEN EMPLOYEES . DATE_OF_BIRTH", "bbox": {"l": 147.73068, "t": 155.65716999999995, "r": 311.69717, "b": 164.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 147.31944, "t": 179.65679999999998, "r": 436.61547999999993, "b": 188.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "AND SESSION_USER <> EMPLOYEES . USER_ID", "bbox": {"l": 147.52335, "t": 191.65661999999998, "r": 356.63669, "b": 200.43140000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "THEN ( 9999 || '-' ||", "bbox": {"l": 147.63832, "t": 203.65643, "r": 261.44492, "b": 212.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "MONTH ( EMPLOYEES . DATE_OF_BIRTH ) || '-'", "bbox": {"l": 272.28363, "t": 203.65643, "r": 499.89682, "b": 212.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "||", "bbox": {"l": 510.73557, "t": 203.65643, "r": 521.57428, "b": 212.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "DAY (EMPLOYEES.DATE_OF_BIRTH ))", "bbox": {"l": 160.78555, "t": 215.65625, "r": 346.6767, "b": 224.43102999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "ELSE NULL", "bbox": {"l": 149.51941, "t": 227.65607, "r": 206.75861, "b": 236.43084999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": " END", "bbox": {"l": 136.79959, "t": 239.65588000000002, "r": 156.77934, "b": 248.43066, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": " ENABLE ;", "bbox": {"l": 136.79959, "t": 251.65570000000002, "r": 186.7191, "b": 260.43048, "coord_origin": "TOPLEFT"}}]}, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR', 'EMP' ) = 1 THEN EMPLOYEES . DATE_OF_BIRTH WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER = EMPLOYEES . USER_ID THEN EMPLOYEES . DATE_OF_BIRTH WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER <> EMPLOYEES . USER_ID THEN ( 9999 || '-' || MONTH ( EMPLOYEES . DATE_OF_BIRTH ) || '-' || DAY (EMPLOYEES.DATE_OF_BIRTH )) ELSE NULL END ENABLE ;"}, {"label": "list_item", "id": 4, "page_no": 42, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.86044311523438, "t": 274.4537353515625, "r": 547.21222, "b": 296.77191162109375, "coord_origin": "TOPLEFT"}, "confidence": 0.8678946495056152, "cells": [{"id": 18, "text": "2.", "bbox": {"l": 136.79959, "t": 275.50591999999995, "r": 145.18994, "b": 284.7189, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "The other column to mask in this example is the TAX_ID information. In this example, the ", "bbox": {"l": 147.98672, "t": 275.50591999999995, "r": 547.21222, "b": 284.7189, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "rules to enforce include the following ones:", "bbox": {"l": 151.19977, "t": 287.50574, "r": 339.37903, "b": 296.71871999999996, "coord_origin": "TOPLEFT"}}]}, "text": "2. The other column to mask in this example is the TAX_ID information. In this example, the rules to enforce include the following ones:"}, {"label": "list_item", "id": 5, "page_no": 42, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 151.1599578857422, "t": 303.3277282714844, "r": 469.1528, "b": 313.69852000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9461130499839783, "cells": [{"id": 21, "text": "-", "bbox": {"l": 152.0394, "t": 304.48553000000004, "r": 157.61201, "b": 313.69852000000003, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Human Resources can see the unmasked TAX_ID of the employees.", "bbox": {"l": 165.59894, "t": 304.48553000000004, "r": 469.1528, "b": 313.69852000000003, "coord_origin": "TOPLEFT"}}]}, "text": "-Human Resources can see the unmasked TAX_ID of the employees."}, {"label": "list_item", "id": 6, "page_no": 42, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 151.2740936279297, "t": 320.54925537109375, "r": 403.95953, "b": 330.8575439453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9467734694480896, "cells": [{"id": 23, "text": "-", "bbox": {"l": 152.0394, "t": 321.52512, "r": 157.60504, "b": 330.7381, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Employees can see only their own unmasked TAX_ID.", "bbox": {"l": 165.59894, "t": 321.52512, "r": 403.95953, "b": 330.7381, "coord_origin": "TOPLEFT"}}]}, "text": "-Employees can see only their own unmasked TAX_ID."}, {"label": "list_item", "id": 7, "page_no": 42, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 151.4427947998047, "t": 337.3158264160156, "r": 545.16846, "b": 359.71771, "coord_origin": "TOPLEFT"}, "confidence": 0.9705167412757874, "cells": [{"id": 25, "text": "-", "bbox": {"l": 152.0394, "t": 338.50491, "r": 157.57019, "b": 347.7179, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Managers see a masked version of TAX_ID with the first five characters replaced with ", "bbox": {"l": 165.59894, "t": 338.50491, "r": 545.16846, "b": 347.7179, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "the X character (for example, XXX-XX-1234).", "bbox": {"l": 165.59894, "t": 350.50473, "r": 364.67947, "b": 359.71771, "coord_origin": "TOPLEFT"}}]}, "text": "-Managers see a masked version of TAX_ID with the first five characters replaced with the X character (for example, XXX-XX-1234)."}, {"label": "list_item", "id": 8, "page_no": 42, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 151.51747131347656, "t": 366.6339111328125, "r": 529.46362, "b": 377.1689147949219, "coord_origin": "TOPLEFT"}, "confidence": 0.9469640254974365, "cells": [{"id": 28, "text": "-", "bbox": {"l": 152.0394, "t": 367.48453, "r": 157.59309, "b": 376.6975100000001, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Any other person sees the entire TAX_ID as masked, for example, XXX-XX-XXXX.", "bbox": {"l": 165.59995, "t": 367.48453, "r": 529.46362, "b": 376.6975100000001, "coord_origin": "TOPLEFT"}}]}, "text": "-Any other person sees the entire TAX_ID as masked, for example, XXX-XX-XXXX."}, {"label": "list_item", "id": 9, "page_no": 42, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 150.69093322753906, "t": 383.80133056640625, "r": 530.0603, "b": 394.17559814453125, "coord_origin": "TOPLEFT"}, "confidence": 0.7003507614135742, "cells": [{"id": 30, "text": "To implement this column mask, run the SQL statement that is shown in Example 3-9.", "bbox": {"l": 151.19978, "t": 384.52411, "r": 530.0603, "b": 393.73709, "coord_origin": "TOPLEFT"}}]}, "text": "To implement this column mask, run the SQL statement that is shown in Example 3-9."}, {"label": "caption", "id": 10, "page_no": 42, "cluster": {"id": 10, "label": "caption", "bbox": {"l": 136.25662231445312, "t": 405.446044921875, "r": 352.31475830078125, "b": 415.0381164550781, "coord_origin": "TOPLEFT"}, "confidence": 0.8488205075263977, "cells": [{"id": 31, "text": "Example 3-9 Creating a mask on the TAX_ID column", "bbox": {"l": 136.8, "t": 406.51801, "r": 351.9873, "b": 414.84302, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-9 Creating a mask on the TAX_ID column"}, {"label": "code", "id": 11, "page_no": 42, "cluster": {"id": 11, "label": "code", "bbox": {"l": 135.95343017578125, "t": 418.5181884765625, "r": 535.87548828125, "b": 688.5432739257812, "coord_origin": "TOPLEFT"}, "confidence": 0.8411229848861694, "cells": [{"id": 32, "text": "CREATE MASK", "bbox": {"l": 136.8, "t": 423.67810000000003, "r": 192.91296, "b": 432.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "HR_SCHEMA.MASK_TAX_ID_ON_EMPLOYEES ", "bbox": {"l": 203.11533, "t": 423.67810000000003, "r": 381.65659, "b": 432.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "ON", "bbox": {"l": 136.8, "t": 435.67792, "r": 148.54184, "b": 444.45270000000005, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "HR_SCHEMA.EMPLOYEES AS EMPLOYEES ", "bbox": {"l": 177.89645, "t": 435.67792, "r": 371.63684, "b": 444.45270000000005, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "FOR COLUMN", "bbox": {"l": 136.8, "t": 447.67773, "r": 199.25916, "b": 456.45251, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "TAX_ID", "bbox": {"l": 211.75098, "t": 447.67773, "r": 249.22647, "b": 456.45251, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "RETURN ", "bbox": {"l": 136.8, "t": 459.67755, "r": 176.75952, "b": 468.45233, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "CASE ", "bbox": {"l": 136.8, "t": 471.67737, "r": 161.75977, "b": 480.45215, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1", "bbox": {"l": 152.84189, "t": 483.67719, "r": 441.59589, "b": 492.45197, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "THEN EMPLOYEES . TAX_ID ", "bbox": {"l": 154.01309, "t": 495.677, "r": 291.7178, "b": 504.45178, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 ", "bbox": {"l": 152.80757, "t": 519.67661, "r": 451.6156, "b": 528.45139, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "AND SESSION_USER = EMPLOYEES . USER_ID ", "bbox": {"l": 153.21835, "t": 531.67642, "r": 366.65683, "b": 540.45117, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "THEN EMPLOYEES . TAX_ID", "bbox": {"l": 154.09363, "t": 543.6762200000001, "r": 286.67804, "b": 552.45097, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 152.82599, "t": 567.67583, "r": 446.63561999999996, "b": 576.45058, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "AND SESSION_USER <> EMPLOYEES . USER_ID ", "bbox": {"l": 153.18398, "t": 579.67563, "r": 371.63684, "b": 588.45038, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( EMPLOYEES . TAX_ID , 8 , 4 ) )", "bbox": {"l": 152.60088, "t": 591.67543, "r": 526.55469, "b": 600.45018, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1 ", "bbox": {"l": 152.80757, "t": 615.67505, "r": 451.6156, "b": 624.4498, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "THEN EMPLOYEES . TAX_ID ", "bbox": {"l": 154.01309, "t": 627.67485, "r": 291.7178, "b": 636.4496, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ELSE 'XXX-XX-XXXX' ", "bbox": {"l": 154.5134, "t": 651.67447, "r": 266.69827, "b": 660.44922, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "END", "bbox": {"l": 136.8, "t": 663.67427, "r": 157.7877, "b": 672.44904, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "ENABLE ;", "bbox": {"l": 136.8, "t": 675.67409, "r": 181.73952, "b": 684.44884, "coord_origin": "TOPLEFT"}}]}, "text": "CREATE MASK HR_SCHEMA.MASK_TAX_ID_ON_EMPLOYEES ON HR_SCHEMA.EMPLOYEES AS EMPLOYEES FOR COLUMN TAX_ID RETURN CASE WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1 THEN EMPLOYEES . TAX_ID WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER = EMPLOYEES . USER_ID THEN EMPLOYEES . TAX_ID WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER <> EMPLOYEES . USER_ID THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( EMPLOYEES . TAX_ID , 8 , 4 ) ) WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1 THEN EMPLOYEES . TAX_ID ELSE 'XXX-XX-XXXX' END ENABLE ;"}], "body": [{"label": "text", "id": 2, "page_no": 42, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.79959, "t": 71.65845000000002, "r": 166.73935, "b": 92.43304, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "RETURN", "bbox": {"l": 136.79959, "t": 71.65845000000002, "r": 166.73935, "b": 80.43322999999998, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "CASE", "bbox": {"l": 136.79959, "t": 83.65826000000004, "r": 156.77934, "b": 92.43304, "coord_origin": "TOPLEFT"}}]}, "text": "RETURN CASE"}, {"label": "code", "id": 3, "page_no": 42, "cluster": {"id": 3, "label": "code", "bbox": {"l": 136.79959, "t": 91.76913452148438, "r": 521.57428, "b": 261.5705871582031, "coord_origin": "TOPLEFT"}, "confidence": 0.778520941734314, "cells": [{"id": 4, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR', 'EMP' ) = 1", "bbox": {"l": 147.26993, "t": 95.65808000000015, "r": 466.61502, "b": 104.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "THEN EMPLOYEES . DATE_OF_BIRTH", "bbox": {"l": 147.73068, "t": 107.65790000000004, "r": 311.69717, "b": 116.43268, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 147.31944, "t": 131.65752999999995, "r": 436.61547999999993, "b": 140.43231000000003, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "AND SESSION_USER = EMPLOYEES . USER_ID", "bbox": {"l": 147.54245, "t": 143.65734999999995, "r": 351.65668, "b": 152.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "THEN EMPLOYEES . DATE_OF_BIRTH", "bbox": {"l": 147.73068, "t": 155.65716999999995, "r": 311.69717, "b": 164.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 147.31944, "t": 179.65679999999998, "r": 436.61547999999993, "b": 188.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "AND SESSION_USER <> EMPLOYEES . USER_ID", "bbox": {"l": 147.52335, "t": 191.65661999999998, "r": 356.63669, "b": 200.43140000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "THEN ( 9999 || '-' ||", "bbox": {"l": 147.63832, "t": 203.65643, "r": 261.44492, "b": 212.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "MONTH ( EMPLOYEES . DATE_OF_BIRTH ) || '-'", "bbox": {"l": 272.28363, "t": 203.65643, "r": 499.89682, "b": 212.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "||", "bbox": {"l": 510.73557, "t": 203.65643, "r": 521.57428, "b": 212.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "DAY (EMPLOYEES.DATE_OF_BIRTH ))", "bbox": {"l": 160.78555, "t": 215.65625, "r": 346.6767, "b": 224.43102999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "ELSE NULL", "bbox": {"l": 149.51941, "t": 227.65607, "r": 206.75861, "b": 236.43084999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": " END", "bbox": {"l": 136.79959, "t": 239.65588000000002, "r": 156.77934, "b": 248.43066, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": " ENABLE ;", "bbox": {"l": 136.79959, "t": 251.65570000000002, "r": 186.7191, "b": 260.43048, "coord_origin": "TOPLEFT"}}]}, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR', 'EMP' ) = 1 THEN EMPLOYEES . DATE_OF_BIRTH WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER = EMPLOYEES . USER_ID THEN EMPLOYEES . DATE_OF_BIRTH WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER <> EMPLOYEES . USER_ID THEN ( 9999 || '-' || MONTH ( EMPLOYEES . DATE_OF_BIRTH ) || '-' || DAY (EMPLOYEES.DATE_OF_BIRTH )) ELSE NULL END ENABLE ;"}, {"label": "list_item", "id": 4, "page_no": 42, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.86044311523438, "t": 274.4537353515625, "r": 547.21222, "b": 296.77191162109375, "coord_origin": "TOPLEFT"}, "confidence": 0.8678946495056152, "cells": [{"id": 18, "text": "2.", "bbox": {"l": 136.79959, "t": 275.50591999999995, "r": 145.18994, "b": 284.7189, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "The other column to mask in this example is the TAX_ID information. In this example, the ", "bbox": {"l": 147.98672, "t": 275.50591999999995, "r": 547.21222, "b": 284.7189, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "rules to enforce include the following ones:", "bbox": {"l": 151.19977, "t": 287.50574, "r": 339.37903, "b": 296.71871999999996, "coord_origin": "TOPLEFT"}}]}, "text": "2. The other column to mask in this example is the TAX_ID information. In this example, the rules to enforce include the following ones:"}, {"label": "list_item", "id": 5, "page_no": 42, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 151.1599578857422, "t": 303.3277282714844, "r": 469.1528, "b": 313.69852000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9461130499839783, "cells": [{"id": 21, "text": "-", "bbox": {"l": 152.0394, "t": 304.48553000000004, "r": 157.61201, "b": 313.69852000000003, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Human Resources can see the unmasked TAX_ID of the employees.", "bbox": {"l": 165.59894, "t": 304.48553000000004, "r": 469.1528, "b": 313.69852000000003, "coord_origin": "TOPLEFT"}}]}, "text": "-Human Resources can see the unmasked TAX_ID of the employees."}, {"label": "list_item", "id": 6, "page_no": 42, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 151.2740936279297, "t": 320.54925537109375, "r": 403.95953, "b": 330.8575439453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9467734694480896, "cells": [{"id": 23, "text": "-", "bbox": {"l": 152.0394, "t": 321.52512, "r": 157.60504, "b": 330.7381, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Employees can see only their own unmasked TAX_ID.", "bbox": {"l": 165.59894, "t": 321.52512, "r": 403.95953, "b": 330.7381, "coord_origin": "TOPLEFT"}}]}, "text": "-Employees can see only their own unmasked TAX_ID."}, {"label": "list_item", "id": 7, "page_no": 42, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 151.4427947998047, "t": 337.3158264160156, "r": 545.16846, "b": 359.71771, "coord_origin": "TOPLEFT"}, "confidence": 0.9705167412757874, "cells": [{"id": 25, "text": "-", "bbox": {"l": 152.0394, "t": 338.50491, "r": 157.57019, "b": 347.7179, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Managers see a masked version of TAX_ID with the first five characters replaced with ", "bbox": {"l": 165.59894, "t": 338.50491, "r": 545.16846, "b": 347.7179, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "the X character (for example, XXX-XX-1234).", "bbox": {"l": 165.59894, "t": 350.50473, "r": 364.67947, "b": 359.71771, "coord_origin": "TOPLEFT"}}]}, "text": "-Managers see a masked version of TAX_ID with the first five characters replaced with the X character (for example, XXX-XX-1234)."}, {"label": "list_item", "id": 8, "page_no": 42, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 151.51747131347656, "t": 366.6339111328125, "r": 529.46362, "b": 377.1689147949219, "coord_origin": "TOPLEFT"}, "confidence": 0.9469640254974365, "cells": [{"id": 28, "text": "-", "bbox": {"l": 152.0394, "t": 367.48453, "r": 157.59309, "b": 376.6975100000001, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Any other person sees the entire TAX_ID as masked, for example, XXX-XX-XXXX.", "bbox": {"l": 165.59995, "t": 367.48453, "r": 529.46362, "b": 376.6975100000001, "coord_origin": "TOPLEFT"}}]}, "text": "-Any other person sees the entire TAX_ID as masked, for example, XXX-XX-XXXX."}, {"label": "list_item", "id": 9, "page_no": 42, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 150.69093322753906, "t": 383.80133056640625, "r": 530.0603, "b": 394.17559814453125, "coord_origin": "TOPLEFT"}, "confidence": 0.7003507614135742, "cells": [{"id": 30, "text": "To implement this column mask, run the SQL statement that is shown in Example 3-9.", "bbox": {"l": 151.19978, "t": 384.52411, "r": 530.0603, "b": 393.73709, "coord_origin": "TOPLEFT"}}]}, "text": "To implement this column mask, run the SQL statement that is shown in Example 3-9."}, {"label": "caption", "id": 10, "page_no": 42, "cluster": {"id": 10, "label": "caption", "bbox": {"l": 136.25662231445312, "t": 405.446044921875, "r": 352.31475830078125, "b": 415.0381164550781, "coord_origin": "TOPLEFT"}, "confidence": 0.8488205075263977, "cells": [{"id": 31, "text": "Example 3-9 Creating a mask on the TAX_ID column", "bbox": {"l": 136.8, "t": 406.51801, "r": 351.9873, "b": 414.84302, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-9 Creating a mask on the TAX_ID column"}, {"label": "code", "id": 11, "page_no": 42, "cluster": {"id": 11, "label": "code", "bbox": {"l": 135.95343017578125, "t": 418.5181884765625, "r": 535.87548828125, "b": 688.5432739257812, "coord_origin": "TOPLEFT"}, "confidence": 0.8411229848861694, "cells": [{"id": 32, "text": "CREATE MASK", "bbox": {"l": 136.8, "t": 423.67810000000003, "r": 192.91296, "b": 432.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "HR_SCHEMA.MASK_TAX_ID_ON_EMPLOYEES ", "bbox": {"l": 203.11533, "t": 423.67810000000003, "r": 381.65659, "b": 432.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "ON", "bbox": {"l": 136.8, "t": 435.67792, "r": 148.54184, "b": 444.45270000000005, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "HR_SCHEMA.EMPLOYEES AS EMPLOYEES ", "bbox": {"l": 177.89645, "t": 435.67792, "r": 371.63684, "b": 444.45270000000005, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "FOR COLUMN", "bbox": {"l": 136.8, "t": 447.67773, "r": 199.25916, "b": 456.45251, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "TAX_ID", "bbox": {"l": 211.75098, "t": 447.67773, "r": 249.22647, "b": 456.45251, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "RETURN ", "bbox": {"l": 136.8, "t": 459.67755, "r": 176.75952, "b": 468.45233, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "CASE ", "bbox": {"l": 136.8, "t": 471.67737, "r": 161.75977, "b": 480.45215, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1", "bbox": {"l": 152.84189, "t": 483.67719, "r": 441.59589, "b": 492.45197, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "THEN EMPLOYEES . TAX_ID ", "bbox": {"l": 154.01309, "t": 495.677, "r": 291.7178, "b": 504.45178, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 ", "bbox": {"l": 152.80757, "t": 519.67661, "r": 451.6156, "b": 528.45139, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "AND SESSION_USER = EMPLOYEES . USER_ID ", "bbox": {"l": 153.21835, "t": 531.67642, "r": 366.65683, "b": 540.45117, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "THEN EMPLOYEES . TAX_ID", "bbox": {"l": 154.09363, "t": 543.6762200000001, "r": 286.67804, "b": 552.45097, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 152.82599, "t": 567.67583, "r": 446.63561999999996, "b": 576.45058, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "AND SESSION_USER <> EMPLOYEES . USER_ID ", "bbox": {"l": 153.18398, "t": 579.67563, "r": 371.63684, "b": 588.45038, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( EMPLOYEES . TAX_ID , 8 , 4 ) )", "bbox": {"l": 152.60088, "t": 591.67543, "r": 526.55469, "b": 600.45018, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1 ", "bbox": {"l": 152.80757, "t": 615.67505, "r": 451.6156, "b": 624.4498, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "THEN EMPLOYEES . TAX_ID ", "bbox": {"l": 154.01309, "t": 627.67485, "r": 291.7178, "b": 636.4496, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ELSE 'XXX-XX-XXXX' ", "bbox": {"l": 154.5134, "t": 651.67447, "r": 266.69827, "b": 660.44922, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "END", "bbox": {"l": 136.8, "t": 663.67427, "r": 157.7877, "b": 672.44904, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "ENABLE ;", "bbox": {"l": 136.8, "t": 675.67409, "r": 181.73952, "b": 684.44884, "coord_origin": "TOPLEFT"}}]}, "text": "CREATE MASK HR_SCHEMA.MASK_TAX_ID_ON_EMPLOYEES ON HR_SCHEMA.EMPLOYEES AS EMPLOYEES FOR COLUMN TAX_ID RETURN CASE WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1 THEN EMPLOYEES . TAX_ID WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER = EMPLOYEES . USER_ID THEN EMPLOYEES . TAX_ID WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER <> EMPLOYEES . USER_ID THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( EMPLOYEES . TAX_ID , 8 , 4 ) ) WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1 THEN EMPLOYEES . TAX_ID ELSE 'XXX-XX-XXXX' END ENABLE ;"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 42, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.5617370605469, "t": 754.6708374023438, "r": 523.60162, "b": 764.1358032226562, "coord_origin": "TOPLEFT"}, "confidence": 0.9556928277015686, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 42, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6422729492188, "t": 754.1753540039062, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9105784296989441, "cells": [{"id": 1, "text": "27", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "27"}]}}, {"page_no": 43, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "28 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "3.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.22156, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 3-10 shows the masks that are created in the HR_SCHEMA.", "bbox": {"l": 148.02872, "t": 71.50867000000005, "r": 449.9523899999999, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 3-10 Column masks shown in System i Navigator", "bbox": {"l": 64.800003, "t": 173.53801999999996, "r": 293.13809, "b": 181.86298, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "3.6.6", "bbox": {"l": 64.800003, "t": 202.37469, "r": 94.275139, "b": 214.36273000000006, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Activating RCAC", "bbox": {"l": 97.959534, "t": 202.37469, "r": 203.98521, "b": 214.36273000000006, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Now that you have created the row permission and the two column masks, RCAC must be ", "bbox": {"l": 136.8, "t": 228.52868999999998, "r": 537.09131, "b": 237.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "activated. The row permission and the two column masks are enabled (last clause in the ", "bbox": {"l": 136.8, "t": 240.5285, "r": 529.20422, "b": 249.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "scripts), but now you must activate RCAC on the table. To do so, complete the following steps:", "bbox": {"l": 136.8, "t": 252.52832, "r": 547.22565, "b": 261.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "1.", "bbox": {"l": 136.8, "t": 269.50811999999996, "r": 145.32378, "b": 278.72113, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Run the SQL statements that are shown in Example 3-10.", "bbox": {"l": 148.16501, "t": 269.50811999999996, "r": 409.47888, "b": 278.72113, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Example 3-10 Activating RCAC on the EMPLOYEES table ", "bbox": {"l": 136.8, "t": 291.55798, "r": 375.29099, "b": 299.88300000000004, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "/*", "bbox": {"l": 136.8, "t": 308.65811, "r": 147.22942, "b": 317.43289, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Active Row Access Control (permissions) */", "bbox": {"l": 157.65884, "t": 308.65811, "r": 376.67661, "b": 317.43289, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "/*", "bbox": {"l": 136.8, "t": 320.65793, "r": 147.70349, "b": 329.43271, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Active Column Access Control (masks)", "bbox": {"l": 158.60696, "t": 320.65793, "r": 354.86963, "b": 329.43271, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "*/", "bbox": {"l": 365.77313, "t": 320.65793, "r": 376.67661, "b": 329.43271, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ALTER TABLE HR_SCHEMA.EMPLOYEES", "bbox": {"l": 136.8, "t": 332.65775, "r": 291.7178, "b": 341.43253, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ACTIVATE ROW ACCESS CONTROL", "bbox": {"l": 136.8, "t": 344.65756, "r": 271.67831, "b": 353.43234000000007, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "ACTIVATE COLUMN ACCESS CONTROL;", "bbox": {"l": 136.8, "t": 356.65738, "r": 291.7178, "b": 365.43216, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "2.", "bbox": {"l": 136.8, "t": 380.5076, "r": 145.14954, "b": 389.72058, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Look at the definition of the EMPLOYEE table, as shown in Figure 3-11. To do this, from ", "bbox": {"l": 147.93271, "t": 380.5076, "r": 540.80145, "b": 389.72058, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "the main navigation pane of System i Navigator, click ", "bbox": {"l": 151.20013, "t": 392.50742, "r": 387.36169, "b": 401.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Schemas", "bbox": {"l": 387.29993, "t": 392.50742, "r": 431.07614, "b": 401.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "\uf0ae", "bbox": {"l": 433.85992000000005, "t": 389.64889999999997, "r": 443.69043, "b": 401.83994, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "HR_SCHEMA", "bbox": {"l": 446.51906999999994, "t": 392.50742, "r": 509.73618000000005, "b": 401.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "\uf0ae", "bbox": {"l": 512.5788, "t": 389.64889999999997, "r": 522.4093, "b": 401.83994, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Tables", "bbox": {"l": 151.19812, "t": 404.50723000000005, "r": 181.12892, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ", right-click the ", "bbox": {"l": 181.79823, "t": 404.50723000000005, "r": 248.99638, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "EMPLOYEES", "bbox": {"l": 248.93860000000004, "t": 404.50723000000005, "r": 310.44357, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " table, and click ", "bbox": {"l": 310.49835, "t": 404.50723000000005, "r": 381.53305, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Definition", "bbox": {"l": 381.59882, "t": 404.50723000000005, "r": 427.68176, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": ".", "bbox": {"l": 427.67877, "t": 404.50723000000005, "r": 430.4476599999999, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Figure 3-11 Selecting the EMPLOYEES table from System i Navigator", "bbox": {"l": 64.800003, "t": 649.0378900000001, "r": 347.43054, "b": 657.3629, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.84088897705078, "t": 754.3895874023438, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9162001013755798, "cells": [{"id": 0, "text": "28 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.28304290771484, "t": 754.72412109375, "r": 334.42142, "b": 763.943603515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9540064334869385, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 136.14459228515625, "t": 70.61093139648438, "r": 449.9523899999999, "b": 81.22673034667969, "coord_origin": "TOPLEFT"}, "confidence": 0.8751051425933838, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.22156, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 3-10 shows the masks that are created in the HR_SCHEMA.", "bbox": {"l": 148.02872, "t": 71.50867000000005, "r": 449.9523899999999, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.17350769042969, "t": 172.7456512451172, "r": 294.42578125, "b": 181.8983612060547, "coord_origin": "TOPLEFT"}, "confidence": 0.944426953792572, "cells": [{"id": 4, "text": "Figure 3-10 Column masks shown in System i Navigator", "bbox": {"l": 64.800003, "t": 173.53801999999996, "r": 293.13809, "b": 181.86298, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 64.29059600830078, "t": 201.6618194580078, "r": 203.98521, "b": 214.99534606933594, "coord_origin": "TOPLEFT"}, "confidence": 0.9645015001296997, "cells": [{"id": 5, "text": "3.6.6", "bbox": {"l": 64.800003, "t": 202.37469, "r": 94.275139, "b": 214.36273000000006, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Activating RCAC", "bbox": {"l": 97.959534, "t": 202.37469, "r": 203.98521, "b": 214.36273000000006, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.1686553955078, "t": 228.097412109375, "r": 547.22565, "b": 262.4639587402344, "coord_origin": "TOPLEFT"}, "confidence": 0.9768573045730591, "cells": [{"id": 7, "text": "Now that you have created the row permission and the two column masks, RCAC must be ", "bbox": {"l": 136.8, "t": 228.52868999999998, "r": 537.09131, "b": 237.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "activated. The row permission and the two column masks are enabled (last clause in the ", "bbox": {"l": 136.8, "t": 240.5285, "r": 529.20422, "b": 249.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "scripts), but now you must activate RCAC on the table. To do so, complete the following steps:", "bbox": {"l": 136.8, "t": 252.52832, "r": 547.22565, "b": 261.74132999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 136.5933074951172, "t": 268.52996826171875, "r": 409.47888, "b": 278.8722229003906, "coord_origin": "TOPLEFT"}, "confidence": 0.9059442281723022, "cells": [{"id": 10, "text": "1.", "bbox": {"l": 136.8, "t": 269.50811999999996, "r": 145.32378, "b": 278.72113, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Run the SQL statements that are shown in Example 3-10.", "bbox": {"l": 148.16501, "t": 269.50811999999996, "r": 409.47888, "b": 278.72113, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "section_header", "bbox": {"l": 136.31597900390625, "t": 290.4278564453125, "r": 375.29099, "b": 300.4970703125, "coord_origin": "TOPLEFT"}, "confidence": 0.6570106148719788, "cells": [{"id": 12, "text": "Example 3-10 Activating RCAC on the EMPLOYEES table ", "bbox": {"l": 136.8, "t": 291.55798, "r": 375.29099, "b": 299.88300000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.7803192138672, "t": 307.09222412109375, "r": 376.67661, "b": 318.0027160644531, "coord_origin": "TOPLEFT"}, "confidence": 0.6002406477928162, "cells": [{"id": 13, "text": "/*", "bbox": {"l": 136.8, "t": 308.65811, "r": 147.22942, "b": 317.43289, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Active Row Access Control (permissions) */", "bbox": {"l": 157.65884, "t": 308.65811, "r": 376.67661, "b": 317.43289, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 136.8, "t": 320.65793, "r": 354.86963, "b": 365.43216, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 15, "text": "/*", "bbox": {"l": 136.8, "t": 320.65793, "r": 147.70349, "b": 329.43271, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Active Column Access Control (masks)", "bbox": {"l": 158.60696, "t": 320.65793, "r": 354.86963, "b": 329.43271, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ALTER TABLE HR_SCHEMA.EMPLOYEES", "bbox": {"l": 136.8, "t": 332.65775, "r": 291.7178, "b": 341.43253, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ACTIVATE ROW ACCESS CONTROL", "bbox": {"l": 136.8, "t": 344.65756, "r": 271.67831, "b": 353.43234000000007, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "ACTIVATE COLUMN ACCESS CONTROL;", "bbox": {"l": 136.8, "t": 356.65738, "r": 291.7178, "b": 365.43216, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 365.77313, "t": 320.65793, "r": 376.67661, "b": 329.43271, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 17, "text": "*/", "bbox": {"l": 365.77313, "t": 320.65793, "r": 376.67661, "b": 329.43271, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 135.87640380859375, "t": 379.3264465332031, "r": 540.80145, "b": 413.72021, "coord_origin": "TOPLEFT"}, "confidence": 0.9449256658554077, "cells": [{"id": 21, "text": "2.", "bbox": {"l": 136.8, "t": 380.5076, "r": 145.14954, "b": 389.72058, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Look at the definition of the EMPLOYEE table, as shown in Figure 3-11. To do this, from ", "bbox": {"l": 147.93271, "t": 380.5076, "r": 540.80145, "b": 389.72058, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "the main navigation pane of System i Navigator, click ", "bbox": {"l": 151.20013, "t": 392.50742, "r": 387.36169, "b": 401.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Schemas", "bbox": {"l": 387.29993, "t": 392.50742, "r": 431.07614, "b": 401.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "\uf0ae", "bbox": {"l": 433.85992000000005, "t": 389.64889999999997, "r": 443.69043, "b": 401.83994, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "HR_SCHEMA", "bbox": {"l": 446.51906999999994, "t": 392.50742, "r": 509.73618000000005, "b": 401.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "\uf0ae", "bbox": {"l": 512.5788, "t": 389.64889999999997, "r": 522.4093, "b": 401.83994, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Tables", "bbox": {"l": 151.19812, "t": 404.50723000000005, "r": 181.12892, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ", right-click the ", "bbox": {"l": 181.79823, "t": 404.50723000000005, "r": 248.99638, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "EMPLOYEES", "bbox": {"l": 248.93860000000004, "t": 404.50723000000005, "r": 310.44357, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " table, and click ", "bbox": {"l": 310.49835, "t": 404.50723000000005, "r": 381.53305, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Definition", "bbox": {"l": 381.59882, "t": 404.50723000000005, "r": 427.68176, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": ".", "bbox": {"l": 427.67877, "t": 404.50723000000005, "r": 430.4476599999999, "b": 413.72021, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "caption", "bbox": {"l": 64.33819580078125, "t": 648.241943359375, "r": 348.354736328125, "b": 657.4004516601562, "coord_origin": "TOPLEFT"}, "confidence": 0.9499983787536621, "cells": [{"id": 34, "text": "Figure 3-11 Selecting the EMPLOYEES table from System i Navigator", "bbox": {"l": 64.800003, "t": 649.0378900000001, "r": 347.43054, "b": 657.3629, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "picture", "bbox": {"l": 63.98516845703125, "t": 427.9049987792969, "r": 530.0479125976562, "b": 646.1395874023438, "coord_origin": "TOPLEFT"}, "confidence": 0.9801459908485413, "cells": []}, {"id": 14, "label": "picture", "bbox": {"l": 63.801902770996094, "t": 95.38243103027344, "r": 547.11474609375, "b": 170.03213500976562, "coord_origin": "TOPLEFT"}, "confidence": 0.9635391235351562, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 43, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.84088897705078, "t": 754.3895874023438, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9162001013755798, "cells": [{"id": 0, "text": "28 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "28"}, {"label": "page_footer", "id": 1, "page_no": 43, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.28304290771484, "t": 754.72412109375, "r": 334.42142, "b": 763.943603515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9540064334869385, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "list_item", "id": 2, "page_no": 43, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.14459228515625, "t": 70.61093139648438, "r": 449.9523899999999, "b": 81.22673034667969, "coord_origin": "TOPLEFT"}, "confidence": 0.8751051425933838, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.22156, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 3-10 shows the masks that are created in the HR_SCHEMA.", "bbox": {"l": 148.02872, "t": 71.50867000000005, "r": 449.9523899999999, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "3. Figure 3-10 shows the masks that are created in the HR_SCHEMA."}, {"label": "caption", "id": 3, "page_no": 43, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.17350769042969, "t": 172.7456512451172, "r": 294.42578125, "b": 181.8983612060547, "coord_origin": "TOPLEFT"}, "confidence": 0.944426953792572, "cells": [{"id": 4, "text": "Figure 3-10 Column masks shown in System i Navigator", "bbox": {"l": 64.800003, "t": 173.53801999999996, "r": 293.13809, "b": 181.86298, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-10 Column masks shown in System i Navigator"}, {"label": "section_header", "id": 4, "page_no": 43, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.29059600830078, "t": 201.6618194580078, "r": 203.98521, "b": 214.99534606933594, "coord_origin": "TOPLEFT"}, "confidence": 0.9645015001296997, "cells": [{"id": 5, "text": "3.6.6", "bbox": {"l": 64.800003, "t": 202.37469, "r": 94.275139, "b": 214.36273000000006, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Activating RCAC", "bbox": {"l": 97.959534, "t": 202.37469, "r": 203.98521, "b": 214.36273000000006, "coord_origin": "TOPLEFT"}}]}, "text": "3.6.6 Activating RCAC"}, {"label": "text", "id": 5, "page_no": 43, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.1686553955078, "t": 228.097412109375, "r": 547.22565, "b": 262.4639587402344, "coord_origin": "TOPLEFT"}, "confidence": 0.9768573045730591, "cells": [{"id": 7, "text": "Now that you have created the row permission and the two column masks, RCAC must be ", "bbox": {"l": 136.8, "t": 228.52868999999998, "r": 537.09131, "b": 237.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "activated. The row permission and the two column masks are enabled (last clause in the ", "bbox": {"l": 136.8, "t": 240.5285, "r": 529.20422, "b": 249.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "scripts), but now you must activate RCAC on the table. To do so, complete the following steps:", "bbox": {"l": 136.8, "t": 252.52832, "r": 547.22565, "b": 261.74132999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Now that you have created the row permission and the two column masks, RCAC must be activated. The row permission and the two column masks are enabled (last clause in the scripts), but now you must activate RCAC on the table. To do so, complete the following steps:"}, {"label": "list_item", "id": 6, "page_no": 43, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.5933074951172, "t": 268.52996826171875, "r": 409.47888, "b": 278.8722229003906, "coord_origin": "TOPLEFT"}, "confidence": 0.9059442281723022, "cells": [{"id": 10, "text": "1.", "bbox": {"l": 136.8, "t": 269.50811999999996, "r": 145.32378, "b": 278.72113, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Run the SQL statements that are shown in Example 3-10.", "bbox": {"l": 148.16501, "t": 269.50811999999996, "r": 409.47888, "b": 278.72113, "coord_origin": "TOPLEFT"}}]}, "text": "1. Run the SQL statements that are shown in Example 3-10."}, {"label": "section_header", "id": 7, "page_no": 43, "cluster": {"id": 7, "label": "section_header", "bbox": {"l": 136.31597900390625, "t": 290.4278564453125, "r": 375.29099, "b": 300.4970703125, "coord_origin": "TOPLEFT"}, "confidence": 0.6570106148719788, "cells": [{"id": 12, "text": "Example 3-10 Activating RCAC on the EMPLOYEES table ", "bbox": {"l": 136.8, "t": 291.55798, "r": 375.29099, "b": 299.88300000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-10 Activating RCAC on the EMPLOYEES table"}, {"label": "list_item", "id": 8, "page_no": 43, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.7803192138672, "t": 307.09222412109375, "r": 376.67661, "b": 318.0027160644531, "coord_origin": "TOPLEFT"}, "confidence": 0.6002406477928162, "cells": [{"id": 13, "text": "/*", "bbox": {"l": 136.8, "t": 308.65811, "r": 147.22942, "b": 317.43289, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Active Row Access Control (permissions) */", "bbox": {"l": 157.65884, "t": 308.65811, "r": 376.67661, "b": 317.43289, "coord_origin": "TOPLEFT"}}]}, "text": "/* Active Row Access Control (permissions) */"}, {"label": "text", "id": 9, "page_no": 43, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.8, "t": 320.65793, "r": 354.86963, "b": 365.43216, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 15, "text": "/*", "bbox": {"l": 136.8, "t": 320.65793, "r": 147.70349, "b": 329.43271, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Active Column Access Control (masks)", "bbox": {"l": 158.60696, "t": 320.65793, "r": 354.86963, "b": 329.43271, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ALTER TABLE HR_SCHEMA.EMPLOYEES", "bbox": {"l": 136.8, "t": 332.65775, "r": 291.7178, "b": 341.43253, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ACTIVATE ROW ACCESS CONTROL", "bbox": {"l": 136.8, "t": 344.65756, "r": 271.67831, "b": 353.43234000000007, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "ACTIVATE COLUMN ACCESS CONTROL;", "bbox": {"l": 136.8, "t": 356.65738, "r": 291.7178, "b": 365.43216, "coord_origin": "TOPLEFT"}}]}, "text": "/* Active Column Access Control (masks) ALTER TABLE HR_SCHEMA.EMPLOYEES ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL;"}, {"label": "text", "id": 10, "page_no": 43, "cluster": {"id": 10, "label": "text", "bbox": {"l": 365.77313, "t": 320.65793, "r": 376.67661, "b": 329.43271, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 17, "text": "*/", "bbox": {"l": 365.77313, "t": 320.65793, "r": 376.67661, "b": 329.43271, "coord_origin": "TOPLEFT"}}]}, "text": "*/"}, {"label": "list_item", "id": 11, "page_no": 43, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.87640380859375, "t": 379.3264465332031, "r": 540.80145, "b": 413.72021, "coord_origin": "TOPLEFT"}, "confidence": 0.9449256658554077, "cells": [{"id": 21, "text": "2.", "bbox": {"l": 136.8, "t": 380.5076, "r": 145.14954, "b": 389.72058, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Look at the definition of the EMPLOYEE table, as shown in Figure 3-11. To do this, from ", "bbox": {"l": 147.93271, "t": 380.5076, "r": 540.80145, "b": 389.72058, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "the main navigation pane of System i Navigator, click ", "bbox": {"l": 151.20013, "t": 392.50742, "r": 387.36169, "b": 401.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Schemas", "bbox": {"l": 387.29993, "t": 392.50742, "r": 431.07614, "b": 401.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "\uf0ae", "bbox": {"l": 433.85992000000005, "t": 389.64889999999997, "r": 443.69043, "b": 401.83994, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "HR_SCHEMA", "bbox": {"l": 446.51906999999994, "t": 392.50742, "r": 509.73618000000005, "b": 401.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "\uf0ae", "bbox": {"l": 512.5788, "t": 389.64889999999997, "r": 522.4093, "b": 401.83994, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Tables", "bbox": {"l": 151.19812, "t": 404.50723000000005, "r": 181.12892, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ", right-click the ", "bbox": {"l": 181.79823, "t": 404.50723000000005, "r": 248.99638, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "EMPLOYEES", "bbox": {"l": 248.93860000000004, "t": 404.50723000000005, "r": 310.44357, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " table, and click ", "bbox": {"l": 310.49835, "t": 404.50723000000005, "r": 381.53305, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Definition", "bbox": {"l": 381.59882, "t": 404.50723000000005, "r": 427.68176, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": ".", "bbox": {"l": 427.67877, "t": 404.50723000000005, "r": 430.4476599999999, "b": 413.72021, "coord_origin": "TOPLEFT"}}]}, "text": "2. Look at the definition of the EMPLOYEE table, as shown in Figure 3-11. To do this, from the main navigation pane of System i Navigator, click Schemas \uf0ae HR_SCHEMA \uf0ae Tables , right-click the EMPLOYEES table, and click Definition ."}, {"label": "caption", "id": 12, "page_no": 43, "cluster": {"id": 12, "label": "caption", "bbox": {"l": 64.33819580078125, "t": 648.241943359375, "r": 348.354736328125, "b": 657.4004516601562, "coord_origin": "TOPLEFT"}, "confidence": 0.9499983787536621, "cells": [{"id": 34, "text": "Figure 3-11 Selecting the EMPLOYEES table from System i Navigator", "bbox": {"l": 64.800003, "t": 649.0378900000001, "r": 347.43054, "b": 657.3629, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-11 Selecting the EMPLOYEES table from System i Navigator"}, {"label": "picture", "id": 13, "page_no": 43, "cluster": {"id": 13, "label": "picture", "bbox": {"l": 63.98516845703125, "t": 427.9049987792969, "r": 530.0479125976562, "b": 646.1395874023438, "coord_origin": "TOPLEFT"}, "confidence": 0.9801459908485413, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 14, "page_no": 43, "cluster": {"id": 14, "label": "picture", "bbox": {"l": 63.801902770996094, "t": 95.38243103027344, "r": 547.11474609375, "b": 170.03213500976562, "coord_origin": "TOPLEFT"}, "confidence": 0.9635391235351562, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 43, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.14459228515625, "t": 70.61093139648438, "r": 449.9523899999999, "b": 81.22673034667969, "coord_origin": "TOPLEFT"}, "confidence": 0.8751051425933838, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.22156, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 3-10 shows the masks that are created in the HR_SCHEMA.", "bbox": {"l": 148.02872, "t": 71.50867000000005, "r": 449.9523899999999, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "3. Figure 3-10 shows the masks that are created in the HR_SCHEMA."}, {"label": "caption", "id": 3, "page_no": 43, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.17350769042969, "t": 172.7456512451172, "r": 294.42578125, "b": 181.8983612060547, "coord_origin": "TOPLEFT"}, "confidence": 0.944426953792572, "cells": [{"id": 4, "text": "Figure 3-10 Column masks shown in System i Navigator", "bbox": {"l": 64.800003, "t": 173.53801999999996, "r": 293.13809, "b": 181.86298, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-10 Column masks shown in System i Navigator"}, {"label": "section_header", "id": 4, "page_no": 43, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.29059600830078, "t": 201.6618194580078, "r": 203.98521, "b": 214.99534606933594, "coord_origin": "TOPLEFT"}, "confidence": 0.9645015001296997, "cells": [{"id": 5, "text": "3.6.6", "bbox": {"l": 64.800003, "t": 202.37469, "r": 94.275139, "b": 214.36273000000006, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Activating RCAC", "bbox": {"l": 97.959534, "t": 202.37469, "r": 203.98521, "b": 214.36273000000006, "coord_origin": "TOPLEFT"}}]}, "text": "3.6.6 Activating RCAC"}, {"label": "text", "id": 5, "page_no": 43, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.1686553955078, "t": 228.097412109375, "r": 547.22565, "b": 262.4639587402344, "coord_origin": "TOPLEFT"}, "confidence": 0.9768573045730591, "cells": [{"id": 7, "text": "Now that you have created the row permission and the two column masks, RCAC must be ", "bbox": {"l": 136.8, "t": 228.52868999999998, "r": 537.09131, "b": 237.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "activated. The row permission and the two column masks are enabled (last clause in the ", "bbox": {"l": 136.8, "t": 240.5285, "r": 529.20422, "b": 249.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "scripts), but now you must activate RCAC on the table. To do so, complete the following steps:", "bbox": {"l": 136.8, "t": 252.52832, "r": 547.22565, "b": 261.74132999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Now that you have created the row permission and the two column masks, RCAC must be activated. The row permission and the two column masks are enabled (last clause in the scripts), but now you must activate RCAC on the table. To do so, complete the following steps:"}, {"label": "list_item", "id": 6, "page_no": 43, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.5933074951172, "t": 268.52996826171875, "r": 409.47888, "b": 278.8722229003906, "coord_origin": "TOPLEFT"}, "confidence": 0.9059442281723022, "cells": [{"id": 10, "text": "1.", "bbox": {"l": 136.8, "t": 269.50811999999996, "r": 145.32378, "b": 278.72113, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Run the SQL statements that are shown in Example 3-10.", "bbox": {"l": 148.16501, "t": 269.50811999999996, "r": 409.47888, "b": 278.72113, "coord_origin": "TOPLEFT"}}]}, "text": "1. Run the SQL statements that are shown in Example 3-10."}, {"label": "section_header", "id": 7, "page_no": 43, "cluster": {"id": 7, "label": "section_header", "bbox": {"l": 136.31597900390625, "t": 290.4278564453125, "r": 375.29099, "b": 300.4970703125, "coord_origin": "TOPLEFT"}, "confidence": 0.6570106148719788, "cells": [{"id": 12, "text": "Example 3-10 Activating RCAC on the EMPLOYEES table ", "bbox": {"l": 136.8, "t": 291.55798, "r": 375.29099, "b": 299.88300000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-10 Activating RCAC on the EMPLOYEES table"}, {"label": "list_item", "id": 8, "page_no": 43, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.7803192138672, "t": 307.09222412109375, "r": 376.67661, "b": 318.0027160644531, "coord_origin": "TOPLEFT"}, "confidence": 0.6002406477928162, "cells": [{"id": 13, "text": "/*", "bbox": {"l": 136.8, "t": 308.65811, "r": 147.22942, "b": 317.43289, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Active Row Access Control (permissions) */", "bbox": {"l": 157.65884, "t": 308.65811, "r": 376.67661, "b": 317.43289, "coord_origin": "TOPLEFT"}}]}, "text": "/* Active Row Access Control (permissions) */"}, {"label": "text", "id": 9, "page_no": 43, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.8, "t": 320.65793, "r": 354.86963, "b": 365.43216, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 15, "text": "/*", "bbox": {"l": 136.8, "t": 320.65793, "r": 147.70349, "b": 329.43271, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Active Column Access Control (masks)", "bbox": {"l": 158.60696, "t": 320.65793, "r": 354.86963, "b": 329.43271, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ALTER TABLE HR_SCHEMA.EMPLOYEES", "bbox": {"l": 136.8, "t": 332.65775, "r": 291.7178, "b": 341.43253, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ACTIVATE ROW ACCESS CONTROL", "bbox": {"l": 136.8, "t": 344.65756, "r": 271.67831, "b": 353.43234000000007, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "ACTIVATE COLUMN ACCESS CONTROL;", "bbox": {"l": 136.8, "t": 356.65738, "r": 291.7178, "b": 365.43216, "coord_origin": "TOPLEFT"}}]}, "text": "/* Active Column Access Control (masks) ALTER TABLE HR_SCHEMA.EMPLOYEES ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL;"}, {"label": "text", "id": 10, "page_no": 43, "cluster": {"id": 10, "label": "text", "bbox": {"l": 365.77313, "t": 320.65793, "r": 376.67661, "b": 329.43271, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 17, "text": "*/", "bbox": {"l": 365.77313, "t": 320.65793, "r": 376.67661, "b": 329.43271, "coord_origin": "TOPLEFT"}}]}, "text": "*/"}, {"label": "list_item", "id": 11, "page_no": 43, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.87640380859375, "t": 379.3264465332031, "r": 540.80145, "b": 413.72021, "coord_origin": "TOPLEFT"}, "confidence": 0.9449256658554077, "cells": [{"id": 21, "text": "2.", "bbox": {"l": 136.8, "t": 380.5076, "r": 145.14954, "b": 389.72058, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Look at the definition of the EMPLOYEE table, as shown in Figure 3-11. To do this, from ", "bbox": {"l": 147.93271, "t": 380.5076, "r": 540.80145, "b": 389.72058, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "the main navigation pane of System i Navigator, click ", "bbox": {"l": 151.20013, "t": 392.50742, "r": 387.36169, "b": 401.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Schemas", "bbox": {"l": 387.29993, "t": 392.50742, "r": 431.07614, "b": 401.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "\uf0ae", "bbox": {"l": 433.85992000000005, "t": 389.64889999999997, "r": 443.69043, "b": 401.83994, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "HR_SCHEMA", "bbox": {"l": 446.51906999999994, "t": 392.50742, "r": 509.73618000000005, "b": 401.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "\uf0ae", "bbox": {"l": 512.5788, "t": 389.64889999999997, "r": 522.4093, "b": 401.83994, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Tables", "bbox": {"l": 151.19812, "t": 404.50723000000005, "r": 181.12892, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ", right-click the ", "bbox": {"l": 181.79823, "t": 404.50723000000005, "r": 248.99638, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "EMPLOYEES", "bbox": {"l": 248.93860000000004, "t": 404.50723000000005, "r": 310.44357, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " table, and click ", "bbox": {"l": 310.49835, "t": 404.50723000000005, "r": 381.53305, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Definition", "bbox": {"l": 381.59882, "t": 404.50723000000005, "r": 427.68176, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": ".", "bbox": {"l": 427.67877, "t": 404.50723000000005, "r": 430.4476599999999, "b": 413.72021, "coord_origin": "TOPLEFT"}}]}, "text": "2. Look at the definition of the EMPLOYEE table, as shown in Figure 3-11. To do this, from the main navigation pane of System i Navigator, click Schemas \uf0ae HR_SCHEMA \uf0ae Tables , right-click the EMPLOYEES table, and click Definition ."}, {"label": "caption", "id": 12, "page_no": 43, "cluster": {"id": 12, "label": "caption", "bbox": {"l": 64.33819580078125, "t": 648.241943359375, "r": 348.354736328125, "b": 657.4004516601562, "coord_origin": "TOPLEFT"}, "confidence": 0.9499983787536621, "cells": [{"id": 34, "text": "Figure 3-11 Selecting the EMPLOYEES table from System i Navigator", "bbox": {"l": 64.800003, "t": 649.0378900000001, "r": 347.43054, "b": 657.3629, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-11 Selecting the EMPLOYEES table from System i Navigator"}, {"label": "picture", "id": 13, "page_no": 43, "cluster": {"id": 13, "label": "picture", "bbox": {"l": 63.98516845703125, "t": 427.9049987792969, "r": 530.0479125976562, "b": 646.1395874023438, "coord_origin": "TOPLEFT"}, "confidence": 0.9801459908485413, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 14, "page_no": 43, "cluster": {"id": 14, "label": "picture", "bbox": {"l": 63.801902770996094, "t": 95.38243103027344, "r": 547.11474609375, "b": 170.03213500976562, "coord_origin": "TOPLEFT"}, "confidence": 0.9635391235351562, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 43, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.84088897705078, "t": 754.3895874023438, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9162001013755798, "cells": [{"id": 0, "text": "28 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "28"}, {"label": "page_footer", "id": 1, "page_no": 43, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.28304290771484, "t": 754.72412109375, "r": 334.42142, "b": 763.943603515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9540064334869385, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 44, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "29", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "3.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.16988, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The EMPLOYEES table definition is displayed, as shown in Figure 3-12. Note that the ", "bbox": {"l": 147.95998, "t": 71.50903000000005, "r": 531.19666, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Row access control and Column access control options are checked.", "bbox": {"l": 151.19974, "t": 83.50885000000017, "r": 455.5731799999999, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Figure 3-12 RCAC enabled on the EMPLOYEES table", "bbox": {"l": 136.8, "t": 341.298, "r": 356.32169, "b": 349.62302, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "3.6.7", "bbox": {"l": 64.800003, "t": 370.13474, "r": 93.997536, "b": 382.12271, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Demonstrating data access with RCAC", "bbox": {"l": 97.647217, "t": 370.13474, "r": 339.83972, "b": 382.12271, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "You are now ready to start testing RCAC with the four different users. Complete the following ", "bbox": {"l": 136.8, "t": 396.28873, "r": 547.25952, "b": 405.50171, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "steps:", "bbox": {"l": 136.8, "t": 408.28853999999995, "r": 163.44897, "b": 417.50152999999995, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "1.", "bbox": {"l": 136.8, "t": 425.26834, "r": 145.18379, "b": 434.48132, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "The first SQL statement that is shown in Example 3-11 illustrates the EMPLOYEE count. ", "bbox": {"l": 147.97836, "t": 425.26834, "r": 544.10724, "b": 434.48132, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "You know that there are 42 rows from the query that was run before RCAC was put in ", "bbox": {"l": 151.20015, "t": 437.26815999999997, "r": 530.11023, "b": 446.48114, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "place (see 3.6.3, \u201cDemonstrating data access without RCAC\u201d on page 24).", "bbox": {"l": 151.20015, "t": 449.26797, "r": 479.75162, "b": 458.48096, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Example 3-11 EMPLOYEES count", "bbox": {"l": 136.8, "t": 471.31799, "r": 279.08279, "b": 479.64301, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "SELECT COUNT(*) as ROW_COUNT FROM HR_SCHEMA.EMPLOYEES;", "bbox": {"l": 136.8, "t": 488.41812, "r": 406.61636, "b": 497.1929, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "2.", "bbox": {"l": 136.8, "t": 512.2683400000001, "r": 145.20477, "b": 521.48132, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "The result of the query for a user that belongs to the HR group profile is shown in ", "bbox": {"l": 148.00635, "t": 512.2683400000001, "r": 511.53809, "b": 521.48132, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Figure 3-13. This user can see all the 42 rows (employees).", "bbox": {"l": 151.20016, "t": 524.2681600000001, "r": 413.90515, "b": 533.48114, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Figure 3-13 Count of EMPLOYEES by HR", "bbox": {"l": 136.8, "t": 586.758, "r": 308.8494, "b": 595.0830100000001, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "3.", "bbox": {"l": 136.8, "t": 612.76872, "r": 145.20665, "b": 621.98172, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "The result of the same query for a user who is logged on as TQSPENSER (Manager) is ", "bbox": {"l": 148.00883, "t": 612.76872, "r": 540.72186, "b": 621.98172, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "shown in Figure 3-14. TQSPENSER has five employees in his department and he can ", "bbox": {"l": 151.20016, "t": 624.7685200000001, "r": 533.99182, "b": 633.98152, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "also see his own row, which is why the count is 6.", "bbox": {"l": 151.20016, "t": 636.76833, "r": 369.41092, "b": 645.98132, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Figure 3-14 Count of EMPLOYEES by a manager", "bbox": {"l": 136.8, "t": 698.658005, "r": 338.81226, "b": 706.983002, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 344.54718017578125, "t": 754.7352905273438, "r": 523.60162, "b": 764.0706787109375, "coord_origin": "TOPLEFT"}, "confidence": 0.956475555896759, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.6342163085938, "t": 754.2794799804688, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9159544110298157, "cells": [{"id": 1, "text": "29", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 135.99427795410156, "t": 70.56324005126953, "r": 531.19666, "b": 92.8935775756836, "coord_origin": "TOPLEFT"}, "confidence": 0.9691283106803894, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.16988, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The EMPLOYEES table definition is displayed, as shown in Figure 3-12. Note that the ", "bbox": {"l": 147.95998, "t": 71.50903000000005, "r": 531.19666, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Row access control and Column access control options are checked.", "bbox": {"l": 151.19974, "t": 83.50885000000017, "r": 455.5731799999999, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.06971740722656, "t": 340.4026794433594, "r": 356.7056579589844, "b": 350.1046142578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9446441531181335, "cells": [{"id": 5, "text": "Figure 3-12 RCAC enabled on the EMPLOYEES table", "bbox": {"l": 136.8, "t": 341.298, "r": 356.32169, "b": 349.62302, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 64.2018051147461, "t": 368.99359130859375, "r": 339.83972, "b": 382.4454650878906, "coord_origin": "TOPLEFT"}, "confidence": 0.9611930847167969, "cells": [{"id": 6, "text": "3.6.7", "bbox": {"l": 64.800003, "t": 370.13474, "r": 93.997536, "b": 382.12271, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Demonstrating data access with RCAC", "bbox": {"l": 97.647217, "t": 370.13474, "r": 339.83972, "b": 382.12271, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.7947235107422, "t": 395.46563720703125, "r": 547.25952, "b": 417.50152999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9570380449295044, "cells": [{"id": 8, "text": "You are now ready to start testing RCAC with the four different users. Complete the following ", "bbox": {"l": 136.8, "t": 396.28873, "r": 547.25952, "b": 405.50171, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "steps:", "bbox": {"l": 136.8, "t": 408.28853999999995, "r": 163.44897, "b": 417.50152999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 136.66810607910156, "t": 424.56658935546875, "r": 544.10724, "b": 459.0443115234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9760121703147888, "cells": [{"id": 10, "text": "1.", "bbox": {"l": 136.8, "t": 425.26834, "r": 145.18379, "b": 434.48132, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "The first SQL statement that is shown in Example 3-11 illustrates the EMPLOYEE count. ", "bbox": {"l": 147.97836, "t": 425.26834, "r": 544.10724, "b": 434.48132, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "You know that there are 42 rows from the query that was run before RCAC was put in ", "bbox": {"l": 151.20015, "t": 437.26815999999997, "r": 530.11023, "b": 446.48114, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "place (see 3.6.3, \u201cDemonstrating data access without RCAC\u201d on page 24).", "bbox": {"l": 151.20015, "t": 449.26797, "r": 479.75162, "b": 458.48096, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "caption", "bbox": {"l": 136.4961700439453, "t": 470.568359375, "r": 279.97296142578125, "b": 479.7723693847656, "coord_origin": "TOPLEFT"}, "confidence": 0.7746148705482483, "cells": [{"id": 14, "text": "Example 3-11 EMPLOYEES count", "bbox": {"l": 136.8, "t": 471.31799, "r": 279.08279, "b": 479.64301, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 136.306396484375, "t": 487.3329772949219, "r": 406.61636, "b": 498.07952880859375, "coord_origin": "TOPLEFT"}, "confidence": 0.6185739040374756, "cells": [{"id": 15, "text": "SELECT COUNT(*) as ROW_COUNT FROM HR_SCHEMA.EMPLOYEES;", "bbox": {"l": 136.8, "t": 488.41812, "r": 406.61636, "b": 497.1929, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.95774841308594, "t": 511.2691955566406, "r": 511.53809, "b": 533.8543701171875, "coord_origin": "TOPLEFT"}, "confidence": 0.947382390499115, "cells": [{"id": 16, "text": "2.", "bbox": {"l": 136.8, "t": 512.2683400000001, "r": 145.20477, "b": 521.48132, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "The result of the query for a user that belongs to the HR group profile is shown in ", "bbox": {"l": 148.00635, "t": 512.2683400000001, "r": 511.53809, "b": 521.48132, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Figure 3-13. This user can see all the 42 rows (employees).", "bbox": {"l": 151.20016, "t": 524.2681600000001, "r": 413.90515, "b": 533.48114, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "caption", "bbox": {"l": 136.27264404296875, "t": 585.9351196289062, "r": 309.68194580078125, "b": 595.4780883789062, "coord_origin": "TOPLEFT"}, "confidence": 0.9036827683448792, "cells": [{"id": 19, "text": "Figure 3-13 Count of EMPLOYEES by HR", "bbox": {"l": 136.8, "t": 586.758, "r": 308.8494, "b": 595.0830100000001, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 136.16087341308594, "t": 611.9103393554688, "r": 540.72186, "b": 646.2116088867188, "coord_origin": "TOPLEFT"}, "confidence": 0.9704285860061646, "cells": [{"id": 20, "text": "3.", "bbox": {"l": 136.8, "t": 612.76872, "r": 145.20665, "b": 621.98172, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "The result of the same query for a user who is logged on as TQSPENSER (Manager) is ", "bbox": {"l": 148.00883, "t": 612.76872, "r": 540.72186, "b": 621.98172, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "shown in Figure 3-14. TQSPENSER has five employees in his department and he can ", "bbox": {"l": 151.20016, "t": 624.7685200000001, "r": 533.99182, "b": 633.98152, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "also see his own row, which is why the count is 6.", "bbox": {"l": 151.20016, "t": 636.76833, "r": 369.41092, "b": 645.98132, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "caption", "bbox": {"l": 136.1033172607422, "t": 697.8408813476562, "r": 340.1351318359375, "b": 707.6279296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9447281956672668, "cells": [{"id": 24, "text": "Figure 3-14 Count of EMPLOYEES by a manager", "bbox": {"l": 136.8, "t": 698.658005, "r": 338.81226, "b": 706.983002, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "picture", "bbox": {"l": 135.93521118164062, "t": 106.84259796142578, "r": 547.290771484375, "b": 337.8546142578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9848360419273376, "cells": []}, {"id": 14, "label": "picture", "bbox": {"l": 137.4537811279297, "t": 661.5006713867188, "r": 220.26930236816406, "b": 693.4776611328125, "coord_origin": "TOPLEFT"}, "confidence": 0.8302825689315796, "cells": []}, {"id": 15, "label": "picture", "bbox": {"l": 137.24044799804688, "t": 548.8035888671875, "r": 225.1509246826172, "b": 582.4473266601562, "coord_origin": "TOPLEFT"}, "confidence": 0.7854686975479126, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 44, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.54718017578125, "t": 754.7352905273438, "r": 523.60162, "b": 764.0706787109375, "coord_origin": "TOPLEFT"}, "confidence": 0.956475555896759, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 44, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6342163085938, "t": 754.2794799804688, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9159544110298157, "cells": [{"id": 1, "text": "29", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "29"}, {"label": "list_item", "id": 2, "page_no": 44, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.99427795410156, "t": 70.56324005126953, "r": 531.19666, "b": 92.8935775756836, "coord_origin": "TOPLEFT"}, "confidence": 0.9691283106803894, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.16988, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The EMPLOYEES table definition is displayed, as shown in Figure 3-12. Note that the ", "bbox": {"l": 147.95998, "t": 71.50903000000005, "r": 531.19666, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Row access control and Column access control options are checked.", "bbox": {"l": 151.19974, "t": 83.50885000000017, "r": 455.5731799999999, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "3. The EMPLOYEES table definition is displayed, as shown in Figure 3-12. Note that the Row access control and Column access control options are checked."}, {"label": "caption", "id": 3, "page_no": 44, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.06971740722656, "t": 340.4026794433594, "r": 356.7056579589844, "b": 350.1046142578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9446441531181335, "cells": [{"id": 5, "text": "Figure 3-12 RCAC enabled on the EMPLOYEES table", "bbox": {"l": 136.8, "t": 341.298, "r": 356.32169, "b": 349.62302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-12 RCAC enabled on the EMPLOYEES table"}, {"label": "section_header", "id": 4, "page_no": 44, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.2018051147461, "t": 368.99359130859375, "r": 339.83972, "b": 382.4454650878906, "coord_origin": "TOPLEFT"}, "confidence": 0.9611930847167969, "cells": [{"id": 6, "text": "3.6.7", "bbox": {"l": 64.800003, "t": 370.13474, "r": 93.997536, "b": 382.12271, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Demonstrating data access with RCAC", "bbox": {"l": 97.647217, "t": 370.13474, "r": 339.83972, "b": 382.12271, "coord_origin": "TOPLEFT"}}]}, "text": "3.6.7 Demonstrating data access with RCAC"}, {"label": "text", "id": 5, "page_no": 44, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.7947235107422, "t": 395.46563720703125, "r": 547.25952, "b": 417.50152999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9570380449295044, "cells": [{"id": 8, "text": "You are now ready to start testing RCAC with the four different users. Complete the following ", "bbox": {"l": 136.8, "t": 396.28873, "r": 547.25952, "b": 405.50171, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "steps:", "bbox": {"l": 136.8, "t": 408.28853999999995, "r": 163.44897, "b": 417.50152999999995, "coord_origin": "TOPLEFT"}}]}, "text": "You are now ready to start testing RCAC with the four different users. Complete the following steps:"}, {"label": "list_item", "id": 6, "page_no": 44, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.66810607910156, "t": 424.56658935546875, "r": 544.10724, "b": 459.0443115234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9760121703147888, "cells": [{"id": 10, "text": "1.", "bbox": {"l": 136.8, "t": 425.26834, "r": 145.18379, "b": 434.48132, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "The first SQL statement that is shown in Example 3-11 illustrates the EMPLOYEE count. ", "bbox": {"l": 147.97836, "t": 425.26834, "r": 544.10724, "b": 434.48132, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "You know that there are 42 rows from the query that was run before RCAC was put in ", "bbox": {"l": 151.20015, "t": 437.26815999999997, "r": 530.11023, "b": 446.48114, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "place (see 3.6.3, \u201cDemonstrating data access without RCAC\u201d on page 24).", "bbox": {"l": 151.20015, "t": 449.26797, "r": 479.75162, "b": 458.48096, "coord_origin": "TOPLEFT"}}]}, "text": "1. The first SQL statement that is shown in Example 3-11 illustrates the EMPLOYEE count. You know that there are 42 rows from the query that was run before RCAC was put in place (see 3.6.3, \u201cDemonstrating data access without RCAC\u201d on page 24)."}, {"label": "caption", "id": 7, "page_no": 44, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 136.4961700439453, "t": 470.568359375, "r": 279.97296142578125, "b": 479.7723693847656, "coord_origin": "TOPLEFT"}, "confidence": 0.7746148705482483, "cells": [{"id": 14, "text": "Example 3-11 EMPLOYEES count", "bbox": {"l": 136.8, "t": 471.31799, "r": 279.08279, "b": 479.64301, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-11 EMPLOYEES count"}, {"label": "text", "id": 8, "page_no": 44, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.306396484375, "t": 487.3329772949219, "r": 406.61636, "b": 498.07952880859375, "coord_origin": "TOPLEFT"}, "confidence": 0.6185739040374756, "cells": [{"id": 15, "text": "SELECT COUNT(*) as ROW_COUNT FROM HR_SCHEMA.EMPLOYEES;", "bbox": {"l": 136.8, "t": 488.41812, "r": 406.61636, "b": 497.1929, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT COUNT(*) as ROW_COUNT FROM HR_SCHEMA.EMPLOYEES;"}, {"label": "list_item", "id": 9, "page_no": 44, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.95774841308594, "t": 511.2691955566406, "r": 511.53809, "b": 533.8543701171875, "coord_origin": "TOPLEFT"}, "confidence": 0.947382390499115, "cells": [{"id": 16, "text": "2.", "bbox": {"l": 136.8, "t": 512.2683400000001, "r": 145.20477, "b": 521.48132, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "The result of the query for a user that belongs to the HR group profile is shown in ", "bbox": {"l": 148.00635, "t": 512.2683400000001, "r": 511.53809, "b": 521.48132, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Figure 3-13. This user can see all the 42 rows (employees).", "bbox": {"l": 151.20016, "t": 524.2681600000001, "r": 413.90515, "b": 533.48114, "coord_origin": "TOPLEFT"}}]}, "text": "2. The result of the query for a user that belongs to the HR group profile is shown in Figure 3-13. This user can see all the 42 rows (employees)."}, {"label": "caption", "id": 10, "page_no": 44, "cluster": {"id": 10, "label": "caption", "bbox": {"l": 136.27264404296875, "t": 585.9351196289062, "r": 309.68194580078125, "b": 595.4780883789062, "coord_origin": "TOPLEFT"}, "confidence": 0.9036827683448792, "cells": [{"id": 19, "text": "Figure 3-13 Count of EMPLOYEES by HR", "bbox": {"l": 136.8, "t": 586.758, "r": 308.8494, "b": 595.0830100000001, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-13 Count of EMPLOYEES by HR"}, {"label": "list_item", "id": 11, "page_no": 44, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 136.16087341308594, "t": 611.9103393554688, "r": 540.72186, "b": 646.2116088867188, "coord_origin": "TOPLEFT"}, "confidence": 0.9704285860061646, "cells": [{"id": 20, "text": "3.", "bbox": {"l": 136.8, "t": 612.76872, "r": 145.20665, "b": 621.98172, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "The result of the same query for a user who is logged on as TQSPENSER (Manager) is ", "bbox": {"l": 148.00883, "t": 612.76872, "r": 540.72186, "b": 621.98172, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "shown in Figure 3-14. TQSPENSER has five employees in his department and he can ", "bbox": {"l": 151.20016, "t": 624.7685200000001, "r": 533.99182, "b": 633.98152, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "also see his own row, which is why the count is 6.", "bbox": {"l": 151.20016, "t": 636.76833, "r": 369.41092, "b": 645.98132, "coord_origin": "TOPLEFT"}}]}, "text": "3. The result of the same query for a user who is logged on as TQSPENSER (Manager) is shown in Figure 3-14. TQSPENSER has five employees in his department and he can also see his own row, which is why the count is 6."}, {"label": "caption", "id": 12, "page_no": 44, "cluster": {"id": 12, "label": "caption", "bbox": {"l": 136.1033172607422, "t": 697.8408813476562, "r": 340.1351318359375, "b": 707.6279296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9447281956672668, "cells": [{"id": 24, "text": "Figure 3-14 Count of EMPLOYEES by a manager", "bbox": {"l": 136.8, "t": 698.658005, "r": 338.81226, "b": 706.983002, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-14 Count of EMPLOYEES by a manager"}, {"label": "picture", "id": 13, "page_no": 44, "cluster": {"id": 13, "label": "picture", "bbox": {"l": 135.93521118164062, "t": 106.84259796142578, "r": 547.290771484375, "b": 337.8546142578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9848360419273376, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 14, "page_no": 44, "cluster": {"id": 14, "label": "picture", "bbox": {"l": 137.4537811279297, "t": 661.5006713867188, "r": 220.26930236816406, "b": 693.4776611328125, "coord_origin": "TOPLEFT"}, "confidence": 0.8302825689315796, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 15, "page_no": 44, "cluster": {"id": 15, "label": "picture", "bbox": {"l": 137.24044799804688, "t": 548.8035888671875, "r": 225.1509246826172, "b": 582.4473266601562, "coord_origin": "TOPLEFT"}, "confidence": 0.7854686975479126, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 44, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.99427795410156, "t": 70.56324005126953, "r": 531.19666, "b": 92.8935775756836, "coord_origin": "TOPLEFT"}, "confidence": 0.9691283106803894, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.16988, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The EMPLOYEES table definition is displayed, as shown in Figure 3-12. Note that the ", "bbox": {"l": 147.95998, "t": 71.50903000000005, "r": 531.19666, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Row access control and Column access control options are checked.", "bbox": {"l": 151.19974, "t": 83.50885000000017, "r": 455.5731799999999, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "3. The EMPLOYEES table definition is displayed, as shown in Figure 3-12. Note that the Row access control and Column access control options are checked."}, {"label": "caption", "id": 3, "page_no": 44, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.06971740722656, "t": 340.4026794433594, "r": 356.7056579589844, "b": 350.1046142578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9446441531181335, "cells": [{"id": 5, "text": "Figure 3-12 RCAC enabled on the EMPLOYEES table", "bbox": {"l": 136.8, "t": 341.298, "r": 356.32169, "b": 349.62302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-12 RCAC enabled on the EMPLOYEES table"}, {"label": "section_header", "id": 4, "page_no": 44, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.2018051147461, "t": 368.99359130859375, "r": 339.83972, "b": 382.4454650878906, "coord_origin": "TOPLEFT"}, "confidence": 0.9611930847167969, "cells": [{"id": 6, "text": "3.6.7", "bbox": {"l": 64.800003, "t": 370.13474, "r": 93.997536, "b": 382.12271, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Demonstrating data access with RCAC", "bbox": {"l": 97.647217, "t": 370.13474, "r": 339.83972, "b": 382.12271, "coord_origin": "TOPLEFT"}}]}, "text": "3.6.7 Demonstrating data access with RCAC"}, {"label": "text", "id": 5, "page_no": 44, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.7947235107422, "t": 395.46563720703125, "r": 547.25952, "b": 417.50152999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9570380449295044, "cells": [{"id": 8, "text": "You are now ready to start testing RCAC with the four different users. Complete the following ", "bbox": {"l": 136.8, "t": 396.28873, "r": 547.25952, "b": 405.50171, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "steps:", "bbox": {"l": 136.8, "t": 408.28853999999995, "r": 163.44897, "b": 417.50152999999995, "coord_origin": "TOPLEFT"}}]}, "text": "You are now ready to start testing RCAC with the four different users. Complete the following steps:"}, {"label": "list_item", "id": 6, "page_no": 44, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.66810607910156, "t": 424.56658935546875, "r": 544.10724, "b": 459.0443115234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9760121703147888, "cells": [{"id": 10, "text": "1.", "bbox": {"l": 136.8, "t": 425.26834, "r": 145.18379, "b": 434.48132, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "The first SQL statement that is shown in Example 3-11 illustrates the EMPLOYEE count. ", "bbox": {"l": 147.97836, "t": 425.26834, "r": 544.10724, "b": 434.48132, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "You know that there are 42 rows from the query that was run before RCAC was put in ", "bbox": {"l": 151.20015, "t": 437.26815999999997, "r": 530.11023, "b": 446.48114, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "place (see 3.6.3, \u201cDemonstrating data access without RCAC\u201d on page 24).", "bbox": {"l": 151.20015, "t": 449.26797, "r": 479.75162, "b": 458.48096, "coord_origin": "TOPLEFT"}}]}, "text": "1. The first SQL statement that is shown in Example 3-11 illustrates the EMPLOYEE count. You know that there are 42 rows from the query that was run before RCAC was put in place (see 3.6.3, \u201cDemonstrating data access without RCAC\u201d on page 24)."}, {"label": "caption", "id": 7, "page_no": 44, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 136.4961700439453, "t": 470.568359375, "r": 279.97296142578125, "b": 479.7723693847656, "coord_origin": "TOPLEFT"}, "confidence": 0.7746148705482483, "cells": [{"id": 14, "text": "Example 3-11 EMPLOYEES count", "bbox": {"l": 136.8, "t": 471.31799, "r": 279.08279, "b": 479.64301, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-11 EMPLOYEES count"}, {"label": "text", "id": 8, "page_no": 44, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.306396484375, "t": 487.3329772949219, "r": 406.61636, "b": 498.07952880859375, "coord_origin": "TOPLEFT"}, "confidence": 0.6185739040374756, "cells": [{"id": 15, "text": "SELECT COUNT(*) as ROW_COUNT FROM HR_SCHEMA.EMPLOYEES;", "bbox": {"l": 136.8, "t": 488.41812, "r": 406.61636, "b": 497.1929, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT COUNT(*) as ROW_COUNT FROM HR_SCHEMA.EMPLOYEES;"}, {"label": "list_item", "id": 9, "page_no": 44, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.95774841308594, "t": 511.2691955566406, "r": 511.53809, "b": 533.8543701171875, "coord_origin": "TOPLEFT"}, "confidence": 0.947382390499115, "cells": [{"id": 16, "text": "2.", "bbox": {"l": 136.8, "t": 512.2683400000001, "r": 145.20477, "b": 521.48132, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "The result of the query for a user that belongs to the HR group profile is shown in ", "bbox": {"l": 148.00635, "t": 512.2683400000001, "r": 511.53809, "b": 521.48132, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Figure 3-13. This user can see all the 42 rows (employees).", "bbox": {"l": 151.20016, "t": 524.2681600000001, "r": 413.90515, "b": 533.48114, "coord_origin": "TOPLEFT"}}]}, "text": "2. The result of the query for a user that belongs to the HR group profile is shown in Figure 3-13. This user can see all the 42 rows (employees)."}, {"label": "caption", "id": 10, "page_no": 44, "cluster": {"id": 10, "label": "caption", "bbox": {"l": 136.27264404296875, "t": 585.9351196289062, "r": 309.68194580078125, "b": 595.4780883789062, "coord_origin": "TOPLEFT"}, "confidence": 0.9036827683448792, "cells": [{"id": 19, "text": "Figure 3-13 Count of EMPLOYEES by HR", "bbox": {"l": 136.8, "t": 586.758, "r": 308.8494, "b": 595.0830100000001, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-13 Count of EMPLOYEES by HR"}, {"label": "list_item", "id": 11, "page_no": 44, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 136.16087341308594, "t": 611.9103393554688, "r": 540.72186, "b": 646.2116088867188, "coord_origin": "TOPLEFT"}, "confidence": 0.9704285860061646, "cells": [{"id": 20, "text": "3.", "bbox": {"l": 136.8, "t": 612.76872, "r": 145.20665, "b": 621.98172, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "The result of the same query for a user who is logged on as TQSPENSER (Manager) is ", "bbox": {"l": 148.00883, "t": 612.76872, "r": 540.72186, "b": 621.98172, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "shown in Figure 3-14. TQSPENSER has five employees in his department and he can ", "bbox": {"l": 151.20016, "t": 624.7685200000001, "r": 533.99182, "b": 633.98152, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "also see his own row, which is why the count is 6.", "bbox": {"l": 151.20016, "t": 636.76833, "r": 369.41092, "b": 645.98132, "coord_origin": "TOPLEFT"}}]}, "text": "3. The result of the same query for a user who is logged on as TQSPENSER (Manager) is shown in Figure 3-14. TQSPENSER has five employees in his department and he can also see his own row, which is why the count is 6."}, {"label": "caption", "id": 12, "page_no": 44, "cluster": {"id": 12, "label": "caption", "bbox": {"l": 136.1033172607422, "t": 697.8408813476562, "r": 340.1351318359375, "b": 707.6279296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9447281956672668, "cells": [{"id": 24, "text": "Figure 3-14 Count of EMPLOYEES by a manager", "bbox": {"l": 136.8, "t": 698.658005, "r": 338.81226, "b": 706.983002, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-14 Count of EMPLOYEES by a manager"}, {"label": "picture", "id": 13, "page_no": 44, "cluster": {"id": 13, "label": "picture", "bbox": {"l": 135.93521118164062, "t": 106.84259796142578, "r": 547.290771484375, "b": 337.8546142578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9848360419273376, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 14, "page_no": 44, "cluster": {"id": 14, "label": "picture", "bbox": {"l": 137.4537811279297, "t": 661.5006713867188, "r": 220.26930236816406, "b": 693.4776611328125, "coord_origin": "TOPLEFT"}, "confidence": 0.8302825689315796, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 15, "page_no": 44, "cluster": {"id": 15, "label": "picture", "bbox": {"l": 137.24044799804688, "t": 548.8035888671875, "r": 225.1509246826172, "b": 582.4473266601562, "coord_origin": "TOPLEFT"}, "confidence": 0.7854686975479126, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 44, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.54718017578125, "t": 754.7352905273438, "r": 523.60162, "b": 764.0706787109375, "coord_origin": "TOPLEFT"}, "confidence": 0.956475555896759, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 44, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6342163085938, "t": 754.2794799804688, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9159544110298157, "cells": [{"id": 1, "text": "29", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "29"}]}}, {"page_no": 45, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "30 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "4.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.04445, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The result of the same query that is run by an employee (DSSMITH) gives the result that is ", "bbox": {"l": 147.79259, "t": 71.50867000000005, "r": 547.21362, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "shown in Figure 3-15. Each employee can see only his or her own data (row).", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 493.08124, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Figure 3-15 Count of EMPLOYEES by an employee", "bbox": {"l": 136.8, "t": 145.39801, "r": 346.82037, "b": 153.72295999999994, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "5.", "bbox": {"l": 136.8, "t": 171.34869000000003, "r": 145.20747, "b": 180.56170999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "The result of the same query that is run by the Consultant/DBE gives the result that is ", "bbox": {"l": 148.00995, "t": 171.34869000000003, "r": 531.26587, "b": 180.56170999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "shown in Figure 3-16. The consultants/DBE can manage and implement RCAC, but they ", "bbox": {"l": 151.20016, "t": 183.34851000000003, "r": 543.98859, "b": 192.56151999999997, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "do not see any rows at all.", "bbox": {"l": 151.20016, "t": 195.34833000000003, "r": 267.03894, "b": 204.56133999999997, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Figure 3-16 Count of EMPLOYEES by a consultant", "bbox": {"l": 136.8, "t": 257.29791, "r": 344.35086, "b": 265.62285999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Does the result make sense? Yes, it does because RCAC is enabled.", "bbox": {"l": 151.2, "t": 283.24872, "r": 456.21011, "b": 292.4617, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "6.", "bbox": {"l": 136.79984, "t": 300.22852, "r": 145.18713, "b": 309.4415, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Run queries against the EMPLOYEES table. The query that is used in this example runs ", "bbox": {"l": 147.98289, "t": 300.22852, "r": 543.73456, "b": 309.4415, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "and tests with the four different user profiles and is the same query that was run in 3.6.3, ", "bbox": {"l": 151.20001, "t": 312.22833, "r": 544.28741, "b": 321.44131, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "\u201cDemonstrating data access without RCAC\u201d on page 24. It is shown in Example 3-12.", "bbox": {"l": 151.20001, "t": 324.22814999999997, "r": 527.40405, "b": 333.44113, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Example 3-12 SELECT statement to test with the different users", "bbox": {"l": 136.8, "t": 346.27798, "r": 396.18622, "b": 354.603, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "SELECT EMPLOYEE_ID,", "bbox": {"l": 136.8, "t": 363.37810999999994, "r": 231.71878000000004, "b": 372.15289, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "LAST_NAME, ", "bbox": {"l": 156.0726, "t": 375.37793000000005, "r": 226.73877000000002, "b": 384.15271, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "JOB_DESCRIPTION,", "bbox": {"l": 154.94188, "t": 387.37775, "r": 251.69853, "b": 396.15253000000007, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "DATE_OF_BIRTH,", "bbox": {"l": 155.31857, "t": 399.37756, "r": 241.73852999999997, "b": 408.15234, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "TAX_ID,", "bbox": {"l": 157.7877, "t": 411.37738, "r": 206.75902, "b": 420.1521599999999, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "USER_ID,", "bbox": {"l": 157.23792, "t": 423.37719999999996, "r": 211.73903, "b": 432.15198000000004, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "MANAGER_OF_EMPLOYEE", "bbox": {"l": 154.5134, "t": 435.37701, "r": 266.69827, "b": 444.15179, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "FROM", "bbox": {"l": 136.8, "t": 447.37683, "r": 157.58372, "b": 456.15161, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "HR_SCHEMA.EMPLOYEES", "bbox": {"l": 167.97559, "t": 447.37683, "r": 266.69827, "b": 456.15161, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.19510650634766, "t": 754.4282836914062, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9150190949440002, "cells": [{"id": 0, "text": "30 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.36414337158203, "t": 754.7095947265625, "r": 334.42142, "b": 763.9661865234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9484574198722839, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 135.79859924316406, "t": 70.64143371582031, "r": 547.21362, "b": 93.16808319091797, "coord_origin": "TOPLEFT"}, "confidence": 0.9721304774284363, "cells": [{"id": 2, "text": "4.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.04445, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The result of the same query that is run by an employee (DSSMITH) gives the result that is ", "bbox": {"l": 147.79259, "t": 71.50867000000005, "r": 547.21362, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "shown in Figure 3-15. Each employee can see only his or her own data (row).", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 493.08124, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 135.97097778320312, "t": 144.56964111328125, "r": 347.41455078125, "b": 154.1024932861328, "coord_origin": "TOPLEFT"}, "confidence": 0.8800588846206665, "cells": [{"id": 5, "text": "Figure 3-15 Count of EMPLOYEES by an employee", "bbox": {"l": 136.8, "t": 145.39801, "r": 346.82037, "b": 153.72295999999994, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 136.351318359375, "t": 170.72369384765625, "r": 543.98859, "b": 204.88552856445312, "coord_origin": "TOPLEFT"}, "confidence": 0.9731000661849976, "cells": [{"id": 6, "text": "5.", "bbox": {"l": 136.8, "t": 171.34869000000003, "r": 145.20747, "b": 180.56170999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "The result of the same query that is run by the Consultant/DBE gives the result that is ", "bbox": {"l": 148.00995, "t": 171.34869000000003, "r": 531.26587, "b": 180.56170999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "shown in Figure 3-16. The consultants/DBE can manage and implement RCAC, but they ", "bbox": {"l": 151.20016, "t": 183.34851000000003, "r": 543.98859, "b": 192.56151999999997, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "do not see any rows at all.", "bbox": {"l": 151.20016, "t": 195.34833000000003, "r": 267.03894, "b": 204.56133999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 136.17999267578125, "t": 256.5564880371094, "r": 345.2605285644531, "b": 265.80084228515625, "coord_origin": "TOPLEFT"}, "confidence": 0.845527708530426, "cells": [{"id": 10, "text": "Figure 3-16 Count of EMPLOYEES by a consultant", "bbox": {"l": 136.8, "t": 257.29791, "r": 344.35086, "b": 265.62285999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 150.62869262695312, "t": 282.65179443359375, "r": 456.21011, "b": 292.4617, "coord_origin": "TOPLEFT"}, "confidence": 0.8937364816665649, "cells": [{"id": 11, "text": "Does the result make sense? Yes, it does because RCAC is enabled.", "bbox": {"l": 151.2, "t": 283.24872, "r": 456.21011, "b": 292.4617, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 136.16029357910156, "t": 299.3460693359375, "r": 544.28741, "b": 333.59893798828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9715136885643005, "cells": [{"id": 12, "text": "6.", "bbox": {"l": 136.79984, "t": 300.22852, "r": 145.18713, "b": 309.4415, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Run queries against the EMPLOYEES table. The query that is used in this example runs ", "bbox": {"l": 147.98289, "t": 300.22852, "r": 543.73456, "b": 309.4415, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "and tests with the four different user profiles and is the same query that was run in 3.6.3, ", "bbox": {"l": 151.20001, "t": 312.22833, "r": 544.28741, "b": 321.44131, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "\u201cDemonstrating data access without RCAC\u201d on page 24. It is shown in Example 3-12.", "bbox": {"l": 151.20001, "t": 324.22814999999997, "r": 527.40405, "b": 333.44113, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "caption", "bbox": {"l": 136.2924041748047, "t": 345.3439636230469, "r": 396.5692138671875, "b": 354.603, "coord_origin": "TOPLEFT"}, "confidence": 0.7857663035392761, "cells": [{"id": 16, "text": "Example 3-12 SELECT statement to test with the different users", "bbox": {"l": 136.8, "t": 346.27798, "r": 396.18622, "b": 354.603, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "code", "bbox": {"l": 134.74452209472656, "t": 356.92291259765625, "r": 548.0267333984375, "b": 461.7205810546875, "coord_origin": "TOPLEFT"}, "confidence": 0.6226056814193726, "cells": [{"id": 17, "text": "SELECT EMPLOYEE_ID,", "bbox": {"l": 136.8, "t": 363.37810999999994, "r": 231.71878000000004, "b": 372.15289, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "LAST_NAME, ", "bbox": {"l": 156.0726, "t": 375.37793000000005, "r": 226.73877000000002, "b": 384.15271, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "JOB_DESCRIPTION,", "bbox": {"l": 154.94188, "t": 387.37775, "r": 251.69853, "b": 396.15253000000007, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "DATE_OF_BIRTH,", "bbox": {"l": 155.31857, "t": 399.37756, "r": 241.73852999999997, "b": 408.15234, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "TAX_ID,", "bbox": {"l": 157.7877, "t": 411.37738, "r": 206.75902, "b": 420.1521599999999, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "USER_ID,", "bbox": {"l": 157.23792, "t": 423.37719999999996, "r": 211.73903, "b": 432.15198000000004, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "MANAGER_OF_EMPLOYEE", "bbox": {"l": 154.5134, "t": 435.37701, "r": 266.69827, "b": 444.15179, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "FROM", "bbox": {"l": 136.8, "t": 447.37683, "r": 157.58372, "b": 456.15161, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "HR_SCHEMA.EMPLOYEES", "bbox": {"l": 167.97559, "t": 447.37683, "r": 266.69827, "b": 456.15161, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "picture", "bbox": {"l": 136.77099609375, "t": 107.66394805908203, "r": 225.8523406982422, "b": 140.4359130859375, "coord_origin": "TOPLEFT"}, "confidence": 0.721601665019989, "cells": []}, {"id": 11, "label": "picture", "bbox": {"l": 136.36477661132812, "t": 219.7147674560547, "r": 228.86305236816406, "b": 252.31942749023438, "coord_origin": "TOPLEFT"}, "confidence": 0.6357523798942566, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 45, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.19510650634766, "t": 754.4282836914062, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9150190949440002, "cells": [{"id": 0, "text": "30 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "30"}, {"label": "page_footer", "id": 1, "page_no": 45, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.36414337158203, "t": 754.7095947265625, "r": 334.42142, "b": 763.9661865234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9484574198722839, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "list_item", "id": 2, "page_no": 45, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.79859924316406, "t": 70.64143371582031, "r": 547.21362, "b": 93.16808319091797, "coord_origin": "TOPLEFT"}, "confidence": 0.9721304774284363, "cells": [{"id": 2, "text": "4.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.04445, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The result of the same query that is run by an employee (DSSMITH) gives the result that is ", "bbox": {"l": 147.79259, "t": 71.50867000000005, "r": 547.21362, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "shown in Figure 3-15. Each employee can see only his or her own data (row).", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 493.08124, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "4. The result of the same query that is run by an employee (DSSMITH) gives the result that is shown in Figure 3-15. Each employee can see only his or her own data (row)."}, {"label": "caption", "id": 3, "page_no": 45, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.97097778320312, "t": 144.56964111328125, "r": 347.41455078125, "b": 154.1024932861328, "coord_origin": "TOPLEFT"}, "confidence": 0.8800588846206665, "cells": [{"id": 5, "text": "Figure 3-15 Count of EMPLOYEES by an employee", "bbox": {"l": 136.8, "t": 145.39801, "r": 346.82037, "b": 153.72295999999994, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-15 Count of EMPLOYEES by an employee"}, {"label": "list_item", "id": 4, "page_no": 45, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.351318359375, "t": 170.72369384765625, "r": 543.98859, "b": 204.88552856445312, "coord_origin": "TOPLEFT"}, "confidence": 0.9731000661849976, "cells": [{"id": 6, "text": "5.", "bbox": {"l": 136.8, "t": 171.34869000000003, "r": 145.20747, "b": 180.56170999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "The result of the same query that is run by the Consultant/DBE gives the result that is ", "bbox": {"l": 148.00995, "t": 171.34869000000003, "r": 531.26587, "b": 180.56170999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "shown in Figure 3-16. The consultants/DBE can manage and implement RCAC, but they ", "bbox": {"l": 151.20016, "t": 183.34851000000003, "r": 543.98859, "b": 192.56151999999997, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "do not see any rows at all.", "bbox": {"l": 151.20016, "t": 195.34833000000003, "r": 267.03894, "b": 204.56133999999997, "coord_origin": "TOPLEFT"}}]}, "text": "5. The result of the same query that is run by the Consultant/DBE gives the result that is shown in Figure 3-16. The consultants/DBE can manage and implement RCAC, but they do not see any rows at all."}, {"label": "caption", "id": 5, "page_no": 45, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.17999267578125, "t": 256.5564880371094, "r": 345.2605285644531, "b": 265.80084228515625, "coord_origin": "TOPLEFT"}, "confidence": 0.845527708530426, "cells": [{"id": 10, "text": "Figure 3-16 Count of EMPLOYEES by a consultant", "bbox": {"l": 136.8, "t": 257.29791, "r": 344.35086, "b": 265.62285999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-16 Count of EMPLOYEES by a consultant"}, {"label": "text", "id": 6, "page_no": 45, "cluster": {"id": 6, "label": "text", "bbox": {"l": 150.62869262695312, "t": 282.65179443359375, "r": 456.21011, "b": 292.4617, "coord_origin": "TOPLEFT"}, "confidence": 0.8937364816665649, "cells": [{"id": 11, "text": "Does the result make sense? Yes, it does because RCAC is enabled.", "bbox": {"l": 151.2, "t": 283.24872, "r": 456.21011, "b": 292.4617, "coord_origin": "TOPLEFT"}}]}, "text": "Does the result make sense? Yes, it does because RCAC is enabled."}, {"label": "list_item", "id": 7, "page_no": 45, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 136.16029357910156, "t": 299.3460693359375, "r": 544.28741, "b": 333.59893798828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9715136885643005, "cells": [{"id": 12, "text": "6.", "bbox": {"l": 136.79984, "t": 300.22852, "r": 145.18713, "b": 309.4415, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Run queries against the EMPLOYEES table. The query that is used in this example runs ", "bbox": {"l": 147.98289, "t": 300.22852, "r": 543.73456, "b": 309.4415, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "and tests with the four different user profiles and is the same query that was run in 3.6.3, ", "bbox": {"l": 151.20001, "t": 312.22833, "r": 544.28741, "b": 321.44131, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "\u201cDemonstrating data access without RCAC\u201d on page 24. It is shown in Example 3-12.", "bbox": {"l": 151.20001, "t": 324.22814999999997, "r": 527.40405, "b": 333.44113, "coord_origin": "TOPLEFT"}}]}, "text": "6. Run queries against the EMPLOYEES table. The query that is used in this example runs and tests with the four different user profiles and is the same query that was run in 3.6.3, \u201cDemonstrating data access without RCAC\u201d on page 24. It is shown in Example 3-12."}, {"label": "caption", "id": 8, "page_no": 45, "cluster": {"id": 8, "label": "caption", "bbox": {"l": 136.2924041748047, "t": 345.3439636230469, "r": 396.5692138671875, "b": 354.603, "coord_origin": "TOPLEFT"}, "confidence": 0.7857663035392761, "cells": [{"id": 16, "text": "Example 3-12 SELECT statement to test with the different users", "bbox": {"l": 136.8, "t": 346.27798, "r": 396.18622, "b": 354.603, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-12 SELECT statement to test with the different users"}, {"label": "code", "id": 9, "page_no": 45, "cluster": {"id": 9, "label": "code", "bbox": {"l": 134.74452209472656, "t": 356.92291259765625, "r": 548.0267333984375, "b": 461.7205810546875, "coord_origin": "TOPLEFT"}, "confidence": 0.6226056814193726, "cells": [{"id": 17, "text": "SELECT EMPLOYEE_ID,", "bbox": {"l": 136.8, "t": 363.37810999999994, "r": 231.71878000000004, "b": 372.15289, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "LAST_NAME, ", "bbox": {"l": 156.0726, "t": 375.37793000000005, "r": 226.73877000000002, "b": 384.15271, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "JOB_DESCRIPTION,", "bbox": {"l": 154.94188, "t": 387.37775, "r": 251.69853, "b": 396.15253000000007, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "DATE_OF_BIRTH,", "bbox": {"l": 155.31857, "t": 399.37756, "r": 241.73852999999997, "b": 408.15234, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "TAX_ID,", "bbox": {"l": 157.7877, "t": 411.37738, "r": 206.75902, "b": 420.1521599999999, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "USER_ID,", "bbox": {"l": 157.23792, "t": 423.37719999999996, "r": 211.73903, "b": 432.15198000000004, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "MANAGER_OF_EMPLOYEE", "bbox": {"l": 154.5134, "t": 435.37701, "r": 266.69827, "b": 444.15179, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "FROM", "bbox": {"l": 136.8, "t": 447.37683, "r": 157.58372, "b": 456.15161, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "HR_SCHEMA.EMPLOYEES", "bbox": {"l": 167.97559, "t": 447.37683, "r": 266.69827, "b": 456.15161, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT EMPLOYEE_ID, LAST_NAME, JOB_DESCRIPTION, DATE_OF_BIRTH, TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE FROM HR_SCHEMA.EMPLOYEES"}, {"label": "picture", "id": 10, "page_no": 45, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 136.77099609375, "t": 107.66394805908203, "r": 225.8523406982422, "b": 140.4359130859375, "coord_origin": "TOPLEFT"}, "confidence": 0.721601665019989, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 11, "page_no": 45, "cluster": {"id": 11, "label": "picture", "bbox": {"l": 136.36477661132812, "t": 219.7147674560547, "r": 228.86305236816406, "b": 252.31942749023438, "coord_origin": "TOPLEFT"}, "confidence": 0.6357523798942566, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 45, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.79859924316406, "t": 70.64143371582031, "r": 547.21362, "b": 93.16808319091797, "coord_origin": "TOPLEFT"}, "confidence": 0.9721304774284363, "cells": [{"id": 2, "text": "4.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.04445, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The result of the same query that is run by an employee (DSSMITH) gives the result that is ", "bbox": {"l": 147.79259, "t": 71.50867000000005, "r": 547.21362, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "shown in Figure 3-15. Each employee can see only his or her own data (row).", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 493.08124, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "4. The result of the same query that is run by an employee (DSSMITH) gives the result that is shown in Figure 3-15. Each employee can see only his or her own data (row)."}, {"label": "caption", "id": 3, "page_no": 45, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.97097778320312, "t": 144.56964111328125, "r": 347.41455078125, "b": 154.1024932861328, "coord_origin": "TOPLEFT"}, "confidence": 0.8800588846206665, "cells": [{"id": 5, "text": "Figure 3-15 Count of EMPLOYEES by an employee", "bbox": {"l": 136.8, "t": 145.39801, "r": 346.82037, "b": 153.72295999999994, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-15 Count of EMPLOYEES by an employee"}, {"label": "list_item", "id": 4, "page_no": 45, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.351318359375, "t": 170.72369384765625, "r": 543.98859, "b": 204.88552856445312, "coord_origin": "TOPLEFT"}, "confidence": 0.9731000661849976, "cells": [{"id": 6, "text": "5.", "bbox": {"l": 136.8, "t": 171.34869000000003, "r": 145.20747, "b": 180.56170999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "The result of the same query that is run by the Consultant/DBE gives the result that is ", "bbox": {"l": 148.00995, "t": 171.34869000000003, "r": 531.26587, "b": 180.56170999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "shown in Figure 3-16. The consultants/DBE can manage and implement RCAC, but they ", "bbox": {"l": 151.20016, "t": 183.34851000000003, "r": 543.98859, "b": 192.56151999999997, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "do not see any rows at all.", "bbox": {"l": 151.20016, "t": 195.34833000000003, "r": 267.03894, "b": 204.56133999999997, "coord_origin": "TOPLEFT"}}]}, "text": "5. The result of the same query that is run by the Consultant/DBE gives the result that is shown in Figure 3-16. The consultants/DBE can manage and implement RCAC, but they do not see any rows at all."}, {"label": "caption", "id": 5, "page_no": 45, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.17999267578125, "t": 256.5564880371094, "r": 345.2605285644531, "b": 265.80084228515625, "coord_origin": "TOPLEFT"}, "confidence": 0.845527708530426, "cells": [{"id": 10, "text": "Figure 3-16 Count of EMPLOYEES by a consultant", "bbox": {"l": 136.8, "t": 257.29791, "r": 344.35086, "b": 265.62285999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-16 Count of EMPLOYEES by a consultant"}, {"label": "text", "id": 6, "page_no": 45, "cluster": {"id": 6, "label": "text", "bbox": {"l": 150.62869262695312, "t": 282.65179443359375, "r": 456.21011, "b": 292.4617, "coord_origin": "TOPLEFT"}, "confidence": 0.8937364816665649, "cells": [{"id": 11, "text": "Does the result make sense? Yes, it does because RCAC is enabled.", "bbox": {"l": 151.2, "t": 283.24872, "r": 456.21011, "b": 292.4617, "coord_origin": "TOPLEFT"}}]}, "text": "Does the result make sense? Yes, it does because RCAC is enabled."}, {"label": "list_item", "id": 7, "page_no": 45, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 136.16029357910156, "t": 299.3460693359375, "r": 544.28741, "b": 333.59893798828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9715136885643005, "cells": [{"id": 12, "text": "6.", "bbox": {"l": 136.79984, "t": 300.22852, "r": 145.18713, "b": 309.4415, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Run queries against the EMPLOYEES table. The query that is used in this example runs ", "bbox": {"l": 147.98289, "t": 300.22852, "r": 543.73456, "b": 309.4415, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "and tests with the four different user profiles and is the same query that was run in 3.6.3, ", "bbox": {"l": 151.20001, "t": 312.22833, "r": 544.28741, "b": 321.44131, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "\u201cDemonstrating data access without RCAC\u201d on page 24. It is shown in Example 3-12.", "bbox": {"l": 151.20001, "t": 324.22814999999997, "r": 527.40405, "b": 333.44113, "coord_origin": "TOPLEFT"}}]}, "text": "6. Run queries against the EMPLOYEES table. The query that is used in this example runs and tests with the four different user profiles and is the same query that was run in 3.6.3, \u201cDemonstrating data access without RCAC\u201d on page 24. It is shown in Example 3-12."}, {"label": "caption", "id": 8, "page_no": 45, "cluster": {"id": 8, "label": "caption", "bbox": {"l": 136.2924041748047, "t": 345.3439636230469, "r": 396.5692138671875, "b": 354.603, "coord_origin": "TOPLEFT"}, "confidence": 0.7857663035392761, "cells": [{"id": 16, "text": "Example 3-12 SELECT statement to test with the different users", "bbox": {"l": 136.8, "t": 346.27798, "r": 396.18622, "b": 354.603, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-12 SELECT statement to test with the different users"}, {"label": "code", "id": 9, "page_no": 45, "cluster": {"id": 9, "label": "code", "bbox": {"l": 134.74452209472656, "t": 356.92291259765625, "r": 548.0267333984375, "b": 461.7205810546875, "coord_origin": "TOPLEFT"}, "confidence": 0.6226056814193726, "cells": [{"id": 17, "text": "SELECT EMPLOYEE_ID,", "bbox": {"l": 136.8, "t": 363.37810999999994, "r": 231.71878000000004, "b": 372.15289, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "LAST_NAME, ", "bbox": {"l": 156.0726, "t": 375.37793000000005, "r": 226.73877000000002, "b": 384.15271, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "JOB_DESCRIPTION,", "bbox": {"l": 154.94188, "t": 387.37775, "r": 251.69853, "b": 396.15253000000007, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "DATE_OF_BIRTH,", "bbox": {"l": 155.31857, "t": 399.37756, "r": 241.73852999999997, "b": 408.15234, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "TAX_ID,", "bbox": {"l": 157.7877, "t": 411.37738, "r": 206.75902, "b": 420.1521599999999, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "USER_ID,", "bbox": {"l": 157.23792, "t": 423.37719999999996, "r": 211.73903, "b": 432.15198000000004, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "MANAGER_OF_EMPLOYEE", "bbox": {"l": 154.5134, "t": 435.37701, "r": 266.69827, "b": 444.15179, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "FROM", "bbox": {"l": 136.8, "t": 447.37683, "r": 157.58372, "b": 456.15161, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "HR_SCHEMA.EMPLOYEES", "bbox": {"l": 167.97559, "t": 447.37683, "r": 266.69827, "b": 456.15161, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT EMPLOYEE_ID, LAST_NAME, JOB_DESCRIPTION, DATE_OF_BIRTH, TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE FROM HR_SCHEMA.EMPLOYEES"}, {"label": "picture", "id": 10, "page_no": 45, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 136.77099609375, "t": 107.66394805908203, "r": 225.8523406982422, "b": 140.4359130859375, "coord_origin": "TOPLEFT"}, "confidence": 0.721601665019989, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 11, "page_no": 45, "cluster": {"id": 11, "label": "picture", "bbox": {"l": 136.36477661132812, "t": 219.7147674560547, "r": 228.86305236816406, "b": 252.31942749023438, "coord_origin": "TOPLEFT"}, "confidence": 0.6357523798942566, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 45, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.19510650634766, "t": 754.4282836914062, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9150190949440002, "cells": [{"id": 0, "text": "30 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "30"}, {"label": "page_footer", "id": 1, "page_no": 45, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.36414337158203, "t": 754.7095947265625, "r": 334.42142, "b": 763.9661865234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9484574198722839, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 46, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "31", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "7.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.15512, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 3-17 shows the results of the query for a Human Resources (VGLUCCHESS) user ", "bbox": {"l": 147.94031, "t": 71.50903000000005, "r": 547.15259, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "profile. The user can see all the rows and all the columns.", "bbox": {"l": 151.19978, "t": 83.50885000000017, "r": 405.80127, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Figure 3-17 SQL statement result by Human Resources user profile", "bbox": {"l": 64.800003, "t": 487.2179, "r": 338.2901, "b": 495.54291, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "8.", "bbox": {"l": 136.8, "t": 513.22864, "r": 145.20114, "b": 522.4416200000001, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Figure 3-18 shows the results of the same query for the Manager (TQSPENSER). Notice ", "bbox": {"l": 148.00151, "t": 513.22864, "r": 546.0484, "b": 522.4416200000001, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "the masking of the DATE_OF_BIRTH and TAX_ID columns.", "bbox": {"l": 151.20015, "t": 525.2284500000001, "r": 414.04752, "b": 534.4414400000001, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Figure 3-18 SQL statement result by Manager profile", "bbox": {"l": 64.800003, "t": 618.31799, "r": 279.30243, "b": 626.64301, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "9.", "bbox": {"l": 136.8, "t": 644.32863, "r": 145.19516, "b": 653.5416299999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Figure 3-19 shows the results of the same query for an employee (DSSMITH). The ", "bbox": {"l": 147.99353, "t": 644.32863, "r": 518.90057, "b": 653.5416299999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "employee can only see only his own data with no masking at all.", "bbox": {"l": 151.20016, "t": 656.32843, "r": 433.90381, "b": 665.54143, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Figure 3-19 SQL statement result by an employee profile", "bbox": {"l": 64.800003, "t": 706.338005, "r": 294.81302, "b": 714.663002, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 344.6293640136719, "t": 754.7607421875, "r": 523.60162, "b": 764.101806640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9559109210968018, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.7171630859375, "t": 754.2883911132812, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9095556735992432, "cells": [{"id": 1, "text": "31", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 136.29183959960938, "t": 70.52925872802734, "r": 547.15259, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9437284469604492, "cells": [{"id": 2, "text": "7.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.15512, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 3-17 shows the results of the query for a Human Resources (VGLUCCHESS) user ", "bbox": {"l": 147.94031, "t": 71.50903000000005, "r": 547.15259, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "profile. The user can see all the rows and all the columns.", "bbox": {"l": 151.19978, "t": 83.50885000000017, "r": 405.80127, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.41815185546875, "t": 486.6556091308594, "r": 338.3864440917969, "b": 495.9942626953125, "coord_origin": "TOPLEFT"}, "confidence": 0.8823539018630981, "cells": [{"id": 5, "text": "Figure 3-17 SQL statement result by Human Resources user profile", "bbox": {"l": 64.800003, "t": 487.2179, "r": 338.2901, "b": 495.54291, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 136.21075439453125, "t": 512.54150390625, "r": 546.0484, "b": 535.139892578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9411396384239197, "cells": [{"id": 6, "text": "8.", "bbox": {"l": 136.8, "t": 513.22864, "r": 145.20114, "b": 522.4416200000001, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Figure 3-18 shows the results of the same query for the Manager (TQSPENSER). Notice ", "bbox": {"l": 148.00151, "t": 513.22864, "r": 546.0484, "b": 522.4416200000001, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "the masking of the DATE_OF_BIRTH and TAX_ID columns.", "bbox": {"l": 151.20015, "t": 525.2284500000001, "r": 414.04752, "b": 534.4414400000001, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 64.57685852050781, "t": 617.3950805664062, "r": 279.62469482421875, "b": 626.7601318359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9109888672828674, "cells": [{"id": 9, "text": "Figure 3-18 SQL statement result by Manager profile", "bbox": {"l": 64.800003, "t": 618.31799, "r": 279.30243, "b": 626.64301, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 136.3648223876953, "t": 643.3563842773438, "r": 518.90057, "b": 665.8402709960938, "coord_origin": "TOPLEFT"}, "confidence": 0.9563440084457397, "cells": [{"id": 10, "text": "9.", "bbox": {"l": 136.8, "t": 644.32863, "r": 145.19516, "b": 653.5416299999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Figure 3-19 shows the results of the same query for an employee (DSSMITH). The ", "bbox": {"l": 147.99353, "t": 644.32863, "r": 518.90057, "b": 653.5416299999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "employee can only see only his own data with no masking at all.", "bbox": {"l": 151.20016, "t": 656.32843, "r": 433.90381, "b": 665.54143, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "caption", "bbox": {"l": 64.505126953125, "t": 705.2019653320312, "r": 295.1390380859375, "b": 714.663002, "coord_origin": "TOPLEFT"}, "confidence": 0.9352152943611145, "cells": [{"id": 13, "text": "Figure 3-19 SQL statement result by an employee profile", "bbox": {"l": 64.800003, "t": 706.338005, "r": 294.81302, "b": 714.663002, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 46, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.6293640136719, "t": 754.7607421875, "r": 523.60162, "b": 764.101806640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9559109210968018, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 46, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.7171630859375, "t": 754.2883911132812, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9095556735992432, "cells": [{"id": 1, "text": "31", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "31"}, {"label": "list_item", "id": 2, "page_no": 46, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.29183959960938, "t": 70.52925872802734, "r": 547.15259, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9437284469604492, "cells": [{"id": 2, "text": "7.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.15512, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 3-17 shows the results of the query for a Human Resources (VGLUCCHESS) user ", "bbox": {"l": 147.94031, "t": 71.50903000000005, "r": 547.15259, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "profile. The user can see all the rows and all the columns.", "bbox": {"l": 151.19978, "t": 83.50885000000017, "r": 405.80127, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "7. Figure 3-17 shows the results of the query for a Human Resources (VGLUCCHESS) user profile. The user can see all the rows and all the columns."}, {"label": "caption", "id": 3, "page_no": 46, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.41815185546875, "t": 486.6556091308594, "r": 338.3864440917969, "b": 495.9942626953125, "coord_origin": "TOPLEFT"}, "confidence": 0.8823539018630981, "cells": [{"id": 5, "text": "Figure 3-17 SQL statement result by Human Resources user profile", "bbox": {"l": 64.800003, "t": 487.2179, "r": 338.2901, "b": 495.54291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-17 SQL statement result by Human Resources user profile"}, {"label": "list_item", "id": 4, "page_no": 46, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.21075439453125, "t": 512.54150390625, "r": 546.0484, "b": 535.139892578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9411396384239197, "cells": [{"id": 6, "text": "8.", "bbox": {"l": 136.8, "t": 513.22864, "r": 145.20114, "b": 522.4416200000001, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Figure 3-18 shows the results of the same query for the Manager (TQSPENSER). Notice ", "bbox": {"l": 148.00151, "t": 513.22864, "r": 546.0484, "b": 522.4416200000001, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "the masking of the DATE_OF_BIRTH and TAX_ID columns.", "bbox": {"l": 151.20015, "t": 525.2284500000001, "r": 414.04752, "b": 534.4414400000001, "coord_origin": "TOPLEFT"}}]}, "text": "8. Figure 3-18 shows the results of the same query for the Manager (TQSPENSER). Notice the masking of the DATE_OF_BIRTH and TAX_ID columns."}, {"label": "caption", "id": 5, "page_no": 46, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.57685852050781, "t": 617.3950805664062, "r": 279.62469482421875, "b": 626.7601318359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9109888672828674, "cells": [{"id": 9, "text": "Figure 3-18 SQL statement result by Manager profile", "bbox": {"l": 64.800003, "t": 618.31799, "r": 279.30243, "b": 626.64301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-18 SQL statement result by Manager profile"}, {"label": "list_item", "id": 6, "page_no": 46, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.3648223876953, "t": 643.3563842773438, "r": 518.90057, "b": 665.8402709960938, "coord_origin": "TOPLEFT"}, "confidence": 0.9563440084457397, "cells": [{"id": 10, "text": "9.", "bbox": {"l": 136.8, "t": 644.32863, "r": 145.19516, "b": 653.5416299999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Figure 3-19 shows the results of the same query for an employee (DSSMITH). The ", "bbox": {"l": 147.99353, "t": 644.32863, "r": 518.90057, "b": 653.5416299999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "employee can only see only his own data with no masking at all.", "bbox": {"l": 151.20016, "t": 656.32843, "r": 433.90381, "b": 665.54143, "coord_origin": "TOPLEFT"}}]}, "text": "9. Figure 3-19 shows the results of the same query for an employee (DSSMITH). The employee can only see only his own data with no masking at all."}, {"label": "caption", "id": 7, "page_no": 46, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 64.505126953125, "t": 705.2019653320312, "r": 295.1390380859375, "b": 714.663002, "coord_origin": "TOPLEFT"}, "confidence": 0.9352152943611145, "cells": [{"id": 13, "text": "Figure 3-19 SQL statement result by an employee profile", "bbox": {"l": 64.800003, "t": 706.338005, "r": 294.81302, "b": 714.663002, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-19 SQL statement result by an employee profile"}], "body": [{"label": "list_item", "id": 2, "page_no": 46, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.29183959960938, "t": 70.52925872802734, "r": 547.15259, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9437284469604492, "cells": [{"id": 2, "text": "7.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.15512, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 3-17 shows the results of the query for a Human Resources (VGLUCCHESS) user ", "bbox": {"l": 147.94031, "t": 71.50903000000005, "r": 547.15259, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "profile. The user can see all the rows and all the columns.", "bbox": {"l": 151.19978, "t": 83.50885000000017, "r": 405.80127, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "7. Figure 3-17 shows the results of the query for a Human Resources (VGLUCCHESS) user profile. The user can see all the rows and all the columns."}, {"label": "caption", "id": 3, "page_no": 46, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.41815185546875, "t": 486.6556091308594, "r": 338.3864440917969, "b": 495.9942626953125, "coord_origin": "TOPLEFT"}, "confidence": 0.8823539018630981, "cells": [{"id": 5, "text": "Figure 3-17 SQL statement result by Human Resources user profile", "bbox": {"l": 64.800003, "t": 487.2179, "r": 338.2901, "b": 495.54291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-17 SQL statement result by Human Resources user profile"}, {"label": "list_item", "id": 4, "page_no": 46, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.21075439453125, "t": 512.54150390625, "r": 546.0484, "b": 535.139892578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9411396384239197, "cells": [{"id": 6, "text": "8.", "bbox": {"l": 136.8, "t": 513.22864, "r": 145.20114, "b": 522.4416200000001, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Figure 3-18 shows the results of the same query for the Manager (TQSPENSER). Notice ", "bbox": {"l": 148.00151, "t": 513.22864, "r": 546.0484, "b": 522.4416200000001, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "the masking of the DATE_OF_BIRTH and TAX_ID columns.", "bbox": {"l": 151.20015, "t": 525.2284500000001, "r": 414.04752, "b": 534.4414400000001, "coord_origin": "TOPLEFT"}}]}, "text": "8. Figure 3-18 shows the results of the same query for the Manager (TQSPENSER). Notice the masking of the DATE_OF_BIRTH and TAX_ID columns."}, {"label": "caption", "id": 5, "page_no": 46, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.57685852050781, "t": 617.3950805664062, "r": 279.62469482421875, "b": 626.7601318359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9109888672828674, "cells": [{"id": 9, "text": "Figure 3-18 SQL statement result by Manager profile", "bbox": {"l": 64.800003, "t": 618.31799, "r": 279.30243, "b": 626.64301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-18 SQL statement result by Manager profile"}, {"label": "list_item", "id": 6, "page_no": 46, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.3648223876953, "t": 643.3563842773438, "r": 518.90057, "b": 665.8402709960938, "coord_origin": "TOPLEFT"}, "confidence": 0.9563440084457397, "cells": [{"id": 10, "text": "9.", "bbox": {"l": 136.8, "t": 644.32863, "r": 145.19516, "b": 653.5416299999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Figure 3-19 shows the results of the same query for an employee (DSSMITH). The ", "bbox": {"l": 147.99353, "t": 644.32863, "r": 518.90057, "b": 653.5416299999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "employee can only see only his own data with no masking at all.", "bbox": {"l": 151.20016, "t": 656.32843, "r": 433.90381, "b": 665.54143, "coord_origin": "TOPLEFT"}}]}, "text": "9. Figure 3-19 shows the results of the same query for an employee (DSSMITH). The employee can only see only his own data with no masking at all."}, {"label": "caption", "id": 7, "page_no": 46, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 64.505126953125, "t": 705.2019653320312, "r": 295.1390380859375, "b": 714.663002, "coord_origin": "TOPLEFT"}, "confidence": 0.9352152943611145, "cells": [{"id": 13, "text": "Figure 3-19 SQL statement result by an employee profile", "bbox": {"l": 64.800003, "t": 706.338005, "r": 294.81302, "b": 714.663002, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-19 SQL statement result by an employee profile"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 46, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.6293640136719, "t": 754.7607421875, "r": 523.60162, "b": 764.101806640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9559109210968018, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 46, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.7171630859375, "t": 754.2883911132812, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9095556735992432, "cells": [{"id": 1, "text": "31", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "31"}]}}, {"page_no": 47, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "32 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "10.Figure 3-20 shows the results of the same query for the Consultant/DBE, who is not one of ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 547.27527, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "the company\u2019s employees.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 268.18436, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 3-20 SQL statement result by Consultant/DBE profile", "bbox": {"l": 64.800003, "t": 166.03801999999996, "r": 307.77298, "b": 174.36298, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "3.6.8", "bbox": {"l": 64.800003, "t": 194.87469, "r": 93.92009, "b": 206.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Demonstrating data access with a view and RCAC", "bbox": {"l": 97.56012, "t": 194.87469, "r": 408.97745, "b": 206.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "This section covers data access with a view and RCAC. Complete the following steps:", "bbox": {"l": 136.8, "t": 221.02868999999998, "r": 515.07678, "b": 230.24170000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "1.", "bbox": {"l": 136.79999, "t": 238.00847999999996, "r": 145.17825, "b": 247.2215, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "The EMPLOYEES table has a column that is called On_Leave_Flag (Figure 3-21 on ", "bbox": {"l": 147.97101, "t": 238.00847999999996, "r": 524.30975, "b": 247.2215, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "page 33) indicating that the employee is on Leave of Absence. For this purpose, a view is ", "bbox": {"l": 151.20016, "t": 250.00829999999996, "r": 547.23077, "b": 259.22131, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "created that lists only the employees that are on leave.", "bbox": {"l": 151.20018, "t": 262.00811999999996, "r": 391.80084, "b": 271.22113, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.27489471435547, "t": 754.446044921875, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9054298996925354, "cells": [{"id": 0, "text": "32 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.40065002441406, "t": 754.7294311523438, "r": 334.42142, "b": 763.9262084960938, "coord_origin": "TOPLEFT"}, "confidence": 0.9436663389205933, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 136.8, "t": 70.6961898803711, "r": 547.27527, "b": 92.95230102539062, "coord_origin": "TOPLEFT"}, "confidence": 0.678650975227356, "cells": [{"id": 2, "text": "10.Figure 3-20 shows the results of the same query for the Consultant/DBE, who is not one of ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 547.27527, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "the company\u2019s employees.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 268.18436, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.38975524902344, "t": 165.40078735351562, "r": 308.0195617675781, "b": 174.5470733642578, "coord_origin": "TOPLEFT"}, "confidence": 0.9349976181983948, "cells": [{"id": 4, "text": "Figure 3-20 SQL statement result by Consultant/DBE profile", "bbox": {"l": 64.800003, "t": 166.03801999999996, "r": 307.77298, "b": 174.36298, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 64.18441009521484, "t": 193.73703002929688, "r": 408.97745, "b": 207.04144287109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9546941518783569, "cells": [{"id": 5, "text": "3.6.8", "bbox": {"l": 64.800003, "t": 194.87469, "r": 93.92009, "b": 206.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Demonstrating data access with a view and RCAC", "bbox": {"l": 97.56012, "t": 194.87469, "r": 408.97745, "b": 206.86273000000006, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.6727294921875, "t": 220.03721618652344, "r": 515.07678, "b": 230.3160400390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9435732960700989, "cells": [{"id": 7, "text": "This section covers data access with a view and RCAC. Complete the following steps:", "bbox": {"l": 136.8, "t": 221.02868999999998, "r": 515.07678, "b": 230.24170000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 136.79999, "t": 237.41502380371094, "r": 547.23077, "b": 271.5574645996094, "coord_origin": "TOPLEFT"}, "confidence": 0.9775716662406921, "cells": [{"id": 8, "text": "1.", "bbox": {"l": 136.79999, "t": 238.00847999999996, "r": 145.17825, "b": 247.2215, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "The EMPLOYEES table has a column that is called On_Leave_Flag (Figure 3-21 on ", "bbox": {"l": 147.97101, "t": 238.00847999999996, "r": 524.30975, "b": 247.2215, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "page 33) indicating that the employee is on Leave of Absence. For this purpose, a view is ", "bbox": {"l": 151.20016, "t": 250.00829999999996, "r": 547.23077, "b": 259.22131, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "created that lists only the employees that are on leave.", "bbox": {"l": 151.20018, "t": 262.00811999999996, "r": 391.80084, "b": 271.22113, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 47, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.27489471435547, "t": 754.446044921875, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9054298996925354, "cells": [{"id": 0, "text": "32 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "32"}, {"label": "page_footer", "id": 1, "page_no": 47, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.40065002441406, "t": 754.7294311523438, "r": 334.42142, "b": 763.9262084960938, "coord_origin": "TOPLEFT"}, "confidence": 0.9436663389205933, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "list_item", "id": 2, "page_no": 47, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.8, "t": 70.6961898803711, "r": 547.27527, "b": 92.95230102539062, "coord_origin": "TOPLEFT"}, "confidence": 0.678650975227356, "cells": [{"id": 2, "text": "10.Figure 3-20 shows the results of the same query for the Consultant/DBE, who is not one of ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 547.27527, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "the company\u2019s employees.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 268.18436, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "10.Figure 3-20 shows the results of the same query for the Consultant/DBE, who is not one of the company\u2019s employees."}, {"label": "caption", "id": 3, "page_no": 47, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.38975524902344, "t": 165.40078735351562, "r": 308.0195617675781, "b": 174.5470733642578, "coord_origin": "TOPLEFT"}, "confidence": 0.9349976181983948, "cells": [{"id": 4, "text": "Figure 3-20 SQL statement result by Consultant/DBE profile", "bbox": {"l": 64.800003, "t": 166.03801999999996, "r": 307.77298, "b": 174.36298, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-20 SQL statement result by Consultant/DBE profile"}, {"label": "section_header", "id": 4, "page_no": 47, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.18441009521484, "t": 193.73703002929688, "r": 408.97745, "b": 207.04144287109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9546941518783569, "cells": [{"id": 5, "text": "3.6.8", "bbox": {"l": 64.800003, "t": 194.87469, "r": 93.92009, "b": 206.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Demonstrating data access with a view and RCAC", "bbox": {"l": 97.56012, "t": 194.87469, "r": 408.97745, "b": 206.86273000000006, "coord_origin": "TOPLEFT"}}]}, "text": "3.6.8 Demonstrating data access with a view and RCAC"}, {"label": "text", "id": 5, "page_no": 47, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.6727294921875, "t": 220.03721618652344, "r": 515.07678, "b": 230.3160400390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9435732960700989, "cells": [{"id": 7, "text": "This section covers data access with a view and RCAC. Complete the following steps:", "bbox": {"l": 136.8, "t": 221.02868999999998, "r": 515.07678, "b": 230.24170000000004, "coord_origin": "TOPLEFT"}}]}, "text": "This section covers data access with a view and RCAC. Complete the following steps:"}, {"label": "list_item", "id": 6, "page_no": 47, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.79999, "t": 237.41502380371094, "r": 547.23077, "b": 271.5574645996094, "coord_origin": "TOPLEFT"}, "confidence": 0.9775716662406921, "cells": [{"id": 8, "text": "1.", "bbox": {"l": 136.79999, "t": 238.00847999999996, "r": 145.17825, "b": 247.2215, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "The EMPLOYEES table has a column that is called On_Leave_Flag (Figure 3-21 on ", "bbox": {"l": 147.97101, "t": 238.00847999999996, "r": 524.30975, "b": 247.2215, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "page 33) indicating that the employee is on Leave of Absence. For this purpose, a view is ", "bbox": {"l": 151.20016, "t": 250.00829999999996, "r": 547.23077, "b": 259.22131, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "created that lists only the employees that are on leave.", "bbox": {"l": 151.20018, "t": 262.00811999999996, "r": 391.80084, "b": 271.22113, "coord_origin": "TOPLEFT"}}]}, "text": "1. The EMPLOYEES table has a column that is called On_Leave_Flag (Figure 3-21 on page 33) indicating that the employee is on Leave of Absence. For this purpose, a view is created that lists only the employees that are on leave."}], "body": [{"label": "list_item", "id": 2, "page_no": 47, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.8, "t": 70.6961898803711, "r": 547.27527, "b": 92.95230102539062, "coord_origin": "TOPLEFT"}, "confidence": 0.678650975227356, "cells": [{"id": 2, "text": "10.Figure 3-20 shows the results of the same query for the Consultant/DBE, who is not one of ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 547.27527, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "the company\u2019s employees.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 268.18436, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "10.Figure 3-20 shows the results of the same query for the Consultant/DBE, who is not one of the company\u2019s employees."}, {"label": "caption", "id": 3, "page_no": 47, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.38975524902344, "t": 165.40078735351562, "r": 308.0195617675781, "b": 174.5470733642578, "coord_origin": "TOPLEFT"}, "confidence": 0.9349976181983948, "cells": [{"id": 4, "text": "Figure 3-20 SQL statement result by Consultant/DBE profile", "bbox": {"l": 64.800003, "t": 166.03801999999996, "r": 307.77298, "b": 174.36298, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-20 SQL statement result by Consultant/DBE profile"}, {"label": "section_header", "id": 4, "page_no": 47, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.18441009521484, "t": 193.73703002929688, "r": 408.97745, "b": 207.04144287109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9546941518783569, "cells": [{"id": 5, "text": "3.6.8", "bbox": {"l": 64.800003, "t": 194.87469, "r": 93.92009, "b": 206.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Demonstrating data access with a view and RCAC", "bbox": {"l": 97.56012, "t": 194.87469, "r": 408.97745, "b": 206.86273000000006, "coord_origin": "TOPLEFT"}}]}, "text": "3.6.8 Demonstrating data access with a view and RCAC"}, {"label": "text", "id": 5, "page_no": 47, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.6727294921875, "t": 220.03721618652344, "r": 515.07678, "b": 230.3160400390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9435732960700989, "cells": [{"id": 7, "text": "This section covers data access with a view and RCAC. Complete the following steps:", "bbox": {"l": 136.8, "t": 221.02868999999998, "r": 515.07678, "b": 230.24170000000004, "coord_origin": "TOPLEFT"}}]}, "text": "This section covers data access with a view and RCAC. Complete the following steps:"}, {"label": "list_item", "id": 6, "page_no": 47, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.79999, "t": 237.41502380371094, "r": 547.23077, "b": 271.5574645996094, "coord_origin": "TOPLEFT"}, "confidence": 0.9775716662406921, "cells": [{"id": 8, "text": "1.", "bbox": {"l": 136.79999, "t": 238.00847999999996, "r": 145.17825, "b": 247.2215, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "The EMPLOYEES table has a column that is called On_Leave_Flag (Figure 3-21 on ", "bbox": {"l": 147.97101, "t": 238.00847999999996, "r": 524.30975, "b": 247.2215, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "page 33) indicating that the employee is on Leave of Absence. For this purpose, a view is ", "bbox": {"l": 151.20016, "t": 250.00829999999996, "r": 547.23077, "b": 259.22131, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "created that lists only the employees that are on leave.", "bbox": {"l": 151.20018, "t": 262.00811999999996, "r": 391.80084, "b": 271.22113, "coord_origin": "TOPLEFT"}}]}, "text": "1. The EMPLOYEES table has a column that is called On_Leave_Flag (Figure 3-21 on page 33) indicating that the employee is on Leave of Absence. For this purpose, a view is created that lists only the employees that are on leave."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 47, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.27489471435547, "t": 754.446044921875, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9054298996925354, "cells": [{"id": 0, "text": "32 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "32"}, {"label": "page_footer", "id": 1, "page_no": 47, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.40065002441406, "t": 754.7294311523438, "r": 334.42142, "b": 763.9262084960938, "coord_origin": "TOPLEFT"}, "confidence": 0.9436663389205933, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 48, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "33", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Figure 3-21 Employees on leave", "bbox": {"l": 64.800003, "t": 567.49789, "r": 198.35095, "b": 575.82291, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "2.", "bbox": {"l": 136.8, "t": 593.44862, "r": 145.22173, "b": 602.66162, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Example 3-13 shows the definition of the view.", "bbox": {"l": 148.02896, "t": 593.44862, "r": 355.694, "b": 602.66162, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Example 3-13 VIew of employees on leave", "bbox": {"l": 136.8, "t": 615.49789, "r": 311.19119, "b": 623.82291, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "CREATE VIEW HR_SCHEMA.EMPLOYEES_ON_LEAVE (EMPLOYEE_ID,", "bbox": {"l": 136.8, "t": 632.59802, "r": 406.61636, "b": 641.37277, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "FIRST_NAME,", "bbox": {"l": 280.25302, "t": 644.59782, "r": 401.63635, "b": 653.37257, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "MIDDLE_INITIAL,", "bbox": {"l": 269.03604, "t": 656.59763, "r": 421.61609, "b": 665.37238, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "LAST_NAME,", "bbox": {"l": 283.67535, "t": 668.59743, "r": 396.65637, "b": 677.37219, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "WORK_DEPARTMENT,", "bbox": {"l": 266.70862, "t": 680.5972399999999, "r": 426.59613, "b": 689.372, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "PHONE_EXTENSION,", "bbox": {"l": 266.70862, "t": 692.5970540000001, "r": 426.59613, "b": 701.371811, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "JOB_DESCRIPTION,", "bbox": {"l": 266.70862, "t": 704.596863, "r": 426.59613, "b": 713.37162, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "DATE_OF_BIRTH,", "bbox": {"l": 271.53592, "t": 716.596672, "r": 416.63611, "b": 725.371429, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 344.5408020019531, "t": 754.6817016601562, "r": 523.60162, "b": 764.1367797851562, "coord_origin": "TOPLEFT"}, "confidence": 0.9533696174621582, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.63330078125, "t": 754.3946533203125, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9169439077377319, "cells": [{"id": 1, "text": "33", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "caption", "bbox": {"l": 64.41194152832031, "t": 566.6688232421875, "r": 198.96627807617188, "b": 576.1551513671875, "coord_origin": "TOPLEFT"}, "confidence": 0.7591876983642578, "cells": [{"id": 2, "text": "Figure 3-21 Employees on leave", "bbox": {"l": 64.800003, "t": 567.49789, "r": 198.35095, "b": 575.82291, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "list_item", "bbox": {"l": 136.17755126953125, "t": 592.6334838867188, "r": 355.694, "b": 602.9717407226562, "coord_origin": "TOPLEFT"}, "confidence": 0.83542799949646, "cells": [{"id": 3, "text": "2.", "bbox": {"l": 136.8, "t": 593.44862, "r": 145.22173, "b": 602.66162, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Example 3-13 shows the definition of the view.", "bbox": {"l": 148.02896, "t": 593.44862, "r": 355.694, "b": 602.66162, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "caption", "bbox": {"l": 136.4932098388672, "t": 614.6098022460938, "r": 311.614013671875, "b": 624.4323120117188, "coord_origin": "TOPLEFT"}, "confidence": 0.6750876307487488, "cells": [{"id": 5, "text": "Example 3-13 VIew of employees on leave", "bbox": {"l": 136.8, "t": 615.49789, "r": 311.19119, "b": 623.82291, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "code", "bbox": {"l": 136.7435302734375, "t": 630.8392333984375, "r": 426.59613, "b": 726.1493530273438, "coord_origin": "TOPLEFT"}, "confidence": 0.7123060822486877, "cells": [{"id": 6, "text": "CREATE VIEW HR_SCHEMA.EMPLOYEES_ON_LEAVE (EMPLOYEE_ID,", "bbox": {"l": 136.8, "t": 632.59802, "r": 406.61636, "b": 641.37277, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "FIRST_NAME,", "bbox": {"l": 280.25302, "t": 644.59782, "r": 401.63635, "b": 653.37257, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "MIDDLE_INITIAL,", "bbox": {"l": 269.03604, "t": 656.59763, "r": 421.61609, "b": 665.37238, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "LAST_NAME,", "bbox": {"l": 283.67535, "t": 668.59743, "r": 396.65637, "b": 677.37219, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "WORK_DEPARTMENT,", "bbox": {"l": 266.70862, "t": 680.5972399999999, "r": 426.59613, "b": 689.372, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "PHONE_EXTENSION,", "bbox": {"l": 266.70862, "t": 692.5970540000001, "r": 426.59613, "b": 701.371811, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "JOB_DESCRIPTION,", "bbox": {"l": 266.70862, "t": 704.596863, "r": 426.59613, "b": 713.37162, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "DATE_OF_BIRTH,", "bbox": {"l": 271.53592, "t": 716.596672, "r": 416.63611, "b": 725.371429, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 48, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.5408020019531, "t": 754.6817016601562, "r": 523.60162, "b": 764.1367797851562, "coord_origin": "TOPLEFT"}, "confidence": 0.9533696174621582, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 48, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.63330078125, "t": 754.3946533203125, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9169439077377319, "cells": [{"id": 1, "text": "33", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "33"}, {"label": "caption", "id": 2, "page_no": 48, "cluster": {"id": 2, "label": "caption", "bbox": {"l": 64.41194152832031, "t": 566.6688232421875, "r": 198.96627807617188, "b": 576.1551513671875, "coord_origin": "TOPLEFT"}, "confidence": 0.7591876983642578, "cells": [{"id": 2, "text": "Figure 3-21 Employees on leave", "bbox": {"l": 64.800003, "t": 567.49789, "r": 198.35095, "b": 575.82291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-21 Employees on leave"}, {"label": "list_item", "id": 3, "page_no": 48, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 136.17755126953125, "t": 592.6334838867188, "r": 355.694, "b": 602.9717407226562, "coord_origin": "TOPLEFT"}, "confidence": 0.83542799949646, "cells": [{"id": 3, "text": "2.", "bbox": {"l": 136.8, "t": 593.44862, "r": 145.22173, "b": 602.66162, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Example 3-13 shows the definition of the view.", "bbox": {"l": 148.02896, "t": 593.44862, "r": 355.694, "b": 602.66162, "coord_origin": "TOPLEFT"}}]}, "text": "2. Example 3-13 shows the definition of the view."}, {"label": "caption", "id": 4, "page_no": 48, "cluster": {"id": 4, "label": "caption", "bbox": {"l": 136.4932098388672, "t": 614.6098022460938, "r": 311.614013671875, "b": 624.4323120117188, "coord_origin": "TOPLEFT"}, "confidence": 0.6750876307487488, "cells": [{"id": 5, "text": "Example 3-13 VIew of employees on leave", "bbox": {"l": 136.8, "t": 615.49789, "r": 311.19119, "b": 623.82291, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-13 VIew of employees on leave"}, {"label": "code", "id": 5, "page_no": 48, "cluster": {"id": 5, "label": "code", "bbox": {"l": 136.7435302734375, "t": 630.8392333984375, "r": 426.59613, "b": 726.1493530273438, "coord_origin": "TOPLEFT"}, "confidence": 0.7123060822486877, "cells": [{"id": 6, "text": "CREATE VIEW HR_SCHEMA.EMPLOYEES_ON_LEAVE (EMPLOYEE_ID,", "bbox": {"l": 136.8, "t": 632.59802, "r": 406.61636, "b": 641.37277, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "FIRST_NAME,", "bbox": {"l": 280.25302, "t": 644.59782, "r": 401.63635, "b": 653.37257, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "MIDDLE_INITIAL,", "bbox": {"l": 269.03604, "t": 656.59763, "r": 421.61609, "b": 665.37238, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "LAST_NAME,", "bbox": {"l": 283.67535, "t": 668.59743, "r": 396.65637, "b": 677.37219, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "WORK_DEPARTMENT,", "bbox": {"l": 266.70862, "t": 680.5972399999999, "r": 426.59613, "b": 689.372, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "PHONE_EXTENSION,", "bbox": {"l": 266.70862, "t": 692.5970540000001, "r": 426.59613, "b": 701.371811, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "JOB_DESCRIPTION,", "bbox": {"l": 266.70862, "t": 704.596863, "r": 426.59613, "b": 713.37162, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "DATE_OF_BIRTH,", "bbox": {"l": 271.53592, "t": 716.596672, "r": 416.63611, "b": 725.371429, "coord_origin": "TOPLEFT"}}]}, "text": "CREATE VIEW HR_SCHEMA.EMPLOYEES_ON_LEAVE (EMPLOYEE_ID, FIRST_NAME, MIDDLE_INITIAL, LAST_NAME, WORK_DEPARTMENT, PHONE_EXTENSION, JOB_DESCRIPTION, DATE_OF_BIRTH,"}], "body": [{"label": "caption", "id": 2, "page_no": 48, "cluster": {"id": 2, "label": "caption", "bbox": {"l": 64.41194152832031, "t": 566.6688232421875, "r": 198.96627807617188, "b": 576.1551513671875, "coord_origin": "TOPLEFT"}, "confidence": 0.7591876983642578, "cells": [{"id": 2, "text": "Figure 3-21 Employees on leave", "bbox": {"l": 64.800003, "t": 567.49789, "r": 198.35095, "b": 575.82291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-21 Employees on leave"}, {"label": "list_item", "id": 3, "page_no": 48, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 136.17755126953125, "t": 592.6334838867188, "r": 355.694, "b": 602.9717407226562, "coord_origin": "TOPLEFT"}, "confidence": 0.83542799949646, "cells": [{"id": 3, "text": "2.", "bbox": {"l": 136.8, "t": 593.44862, "r": 145.22173, "b": 602.66162, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Example 3-13 shows the definition of the view.", "bbox": {"l": 148.02896, "t": 593.44862, "r": 355.694, "b": 602.66162, "coord_origin": "TOPLEFT"}}]}, "text": "2. Example 3-13 shows the definition of the view."}, {"label": "caption", "id": 4, "page_no": 48, "cluster": {"id": 4, "label": "caption", "bbox": {"l": 136.4932098388672, "t": 614.6098022460938, "r": 311.614013671875, "b": 624.4323120117188, "coord_origin": "TOPLEFT"}, "confidence": 0.6750876307487488, "cells": [{"id": 5, "text": "Example 3-13 VIew of employees on leave", "bbox": {"l": 136.8, "t": 615.49789, "r": 311.19119, "b": 623.82291, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-13 VIew of employees on leave"}, {"label": "code", "id": 5, "page_no": 48, "cluster": {"id": 5, "label": "code", "bbox": {"l": 136.7435302734375, "t": 630.8392333984375, "r": 426.59613, "b": 726.1493530273438, "coord_origin": "TOPLEFT"}, "confidence": 0.7123060822486877, "cells": [{"id": 6, "text": "CREATE VIEW HR_SCHEMA.EMPLOYEES_ON_LEAVE (EMPLOYEE_ID,", "bbox": {"l": 136.8, "t": 632.59802, "r": 406.61636, "b": 641.37277, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "FIRST_NAME,", "bbox": {"l": 280.25302, "t": 644.59782, "r": 401.63635, "b": 653.37257, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "MIDDLE_INITIAL,", "bbox": {"l": 269.03604, "t": 656.59763, "r": 421.61609, "b": 665.37238, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "LAST_NAME,", "bbox": {"l": 283.67535, "t": 668.59743, "r": 396.65637, "b": 677.37219, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "WORK_DEPARTMENT,", "bbox": {"l": 266.70862, "t": 680.5972399999999, "r": 426.59613, "b": 689.372, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "PHONE_EXTENSION,", "bbox": {"l": 266.70862, "t": 692.5970540000001, "r": 426.59613, "b": 701.371811, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "JOB_DESCRIPTION,", "bbox": {"l": 266.70862, "t": 704.596863, "r": 426.59613, "b": 713.37162, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "DATE_OF_BIRTH,", "bbox": {"l": 271.53592, "t": 716.596672, "r": 416.63611, "b": 725.371429, "coord_origin": "TOPLEFT"}}]}, "text": "CREATE VIEW HR_SCHEMA.EMPLOYEES_ON_LEAVE (EMPLOYEE_ID, FIRST_NAME, MIDDLE_INITIAL, LAST_NAME, WORK_DEPARTMENT, PHONE_EXTENSION, JOB_DESCRIPTION, DATE_OF_BIRTH,"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 48, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.5408020019531, "t": 754.6817016601562, "r": 523.60162, "b": 764.1367797851562, "coord_origin": "TOPLEFT"}, "confidence": 0.9533696174621582, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 48, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.63330078125, "t": 754.3946533203125, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9169439077377319, "cells": [{"id": 1, "text": "33", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "33"}]}}, {"page_no": 49, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "34 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "TAX_ID,", "bbox": {"l": 295.95679, "t": 71.65808000000015, "r": 381.65659, "b": 80.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "USER_ID,", "bbox": {"l": 291.46075, "t": 83.65790000000004, "r": 386.6366, "b": 92.43268, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "MANAGER_OF_EMPLOYEE,", "bbox": {"l": 258.85648, "t": 95.65770999999995, "r": 446.63561999999996, "b": 104.4325, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "ON_LEAVE_FLAG )", "bbox": {"l": 269.03604, "t": 107.65752999999995, "r": 421.61609, "b": 116.43230999999992, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "AS ", "bbox": {"l": 136.8, "t": 119.65734999999995, "r": 151.74001, "b": 128.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "SELECT EMPLOYEE_ID,", "bbox": {"l": 136.8, "t": 131.65716999999995, "r": 231.71878000000004, "b": 140.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "FIRST_NAME ,", "bbox": {"l": 155.78375, "t": 143.65697999999998, "r": 231.71878000000004, "b": 152.43176000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "MIDDLE_INITIAL,", "bbox": {"l": 155.11975, "t": 155.65679999999998, "r": 246.71854, "b": 164.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "LAST_NAME ,", "bbox": {"l": 156.0726, "t": 167.65661999999998, "r": 226.73877000000002, "b": 176.43140000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "WORK_DEPARTMENT,", "bbox": {"l": 154.94188, "t": 179.65643, "r": 251.69853, "b": 188.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "PHONE_EXTENSION,", "bbox": {"l": 154.94188, "t": 191.65625, "r": 251.69853, "b": 200.43102999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "JOB_DESCRIPTION,", "bbox": {"l": 154.94188, "t": 203.65607, "r": 251.69853, "b": 212.43084999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "DATE_OF_BIRTH,", "bbox": {"l": 155.31857, "t": 215.65588000000002, "r": 241.73852999999997, "b": 224.43066, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "TAX_ID,", "bbox": {"l": 157.7877, "t": 227.65570000000002, "r": 206.75902, "b": 236.43048, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "USER_ID,", "bbox": {"l": 157.23792, "t": 239.65552000000002, "r": 211.73903, "b": 248.4303, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "MANAGER_OF_EMPLOYEE,", "bbox": {"l": 154.39282, "t": 251.65533000000005, "r": 271.67828, "b": 260.43011, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ON_LEAVE_FLAG", "bbox": {"l": 155.53102, "t": 263.65515000000005, "r": 236.69878, "b": 272.42993, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "FROM", "bbox": {"l": 136.8, "t": 275.65497000000005, "r": 157.55051, "b": 284.42975, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "HR_SCHEMA.EMPLOYEES ", "bbox": {"l": 167.92577, "t": 275.65497000000005, "r": 271.67828, "b": 284.42975, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "WHERE", "bbox": {"l": 136.8, "t": 287.65479, "r": 161.77747, "b": 296.42957, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "ON_LEAVE_FLAG = 'Y';", "bbox": {"l": 171.76845, "t": 287.65479, "r": 271.67828, "b": 296.42957, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "3.", "bbox": {"l": 136.8, "t": 316.48502, "r": 145.04652, "b": 325.698, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Use the view to query the data and see who is on leave. The SQL statement that is used is ", "bbox": {"l": 147.79535, "t": 316.48502, "r": 547.36621, "b": 325.698, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "shown in Example 3-14:", "bbox": {"l": 151.20016, "t": 328.48483, "r": 257.75723, "b": 337.69780999999995, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Example 3-14 SQL statement for employees on leave", "bbox": {"l": 136.8, "t": 350.5379899999999, "r": 353.97809, "b": 358.86301, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "SELECT EMPLOYEE_ID,", "bbox": {"l": 136.8, "t": 367.63812, "r": 231.71878000000004, "b": 376.4129, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "LAST_NAME,", "bbox": {"l": 156.39209, "t": 379.63794, "r": 221.69901999999996, "b": 388.41272, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "JOB_DESCRIPTION,", "bbox": {"l": 154.94188, "t": 391.63776, "r": 251.69853, "b": 400.41254, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "DATE_OF_BIRTH,", "bbox": {"l": 155.31857, "t": 403.63757, "r": 241.73852999999997, "b": 412.41235, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "TAX_ID,", "bbox": {"l": 157.7877, "t": 415.63739, "r": 206.75902, "b": 424.41217, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "USER_ID,", "bbox": {"l": 157.23792, "t": 427.63721, "r": 211.73903, "b": 436.41199, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "MANAGER_OF_EMPLOYEE", "bbox": {"l": 154.5134, "t": 439.63702, "r": 266.69827, "b": 448.4118000000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "FROM", "bbox": {"l": 136.8, "t": 451.63684, "r": 157.35744, "b": 460.41162, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "HR_SCHEMA.EMPLOYEES_ON_LEAVE;", "bbox": {"l": 167.63615, "t": 451.63684, "r": 316.67755, "b": 460.41162, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "4.", "bbox": {"l": 136.8, "t": 475.48706, "r": 145.07851, "b": 484.70004, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Start with the Human Resources person (VGLUCCHESS) and see what is the result of the ", "bbox": {"l": 147.83798, "t": 475.48706, "r": 547.25067, "b": 484.70004, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "previous query. He sees the two employees that are on leave and no masking is done over ", "bbox": {"l": 151.2002, "t": 487.54663, "r": 547.23877, "b": 496.75961, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "the DATE_OF_BIRTH and TAX_ID columns. The results of the query are shown in ", "bbox": {"l": 151.2002, "t": 499.54645, "r": 516.39642, "b": 508.75943, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Figure 3-22.", "bbox": {"l": 151.2002, "t": 511.54626, "r": 205.13356, "b": 520.7592500000001, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Figure 3-22 Employees on leave - Human Resources user", "bbox": {"l": 64.800003, "t": 571.09799, "r": 300.797, "b": 579.423, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "5.", "bbox": {"l": 136.8, "t": 597.04872, "r": 145.2104, "b": 606.26172, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Figure 3-23 shows what the Manager (TQSPENSER) gets when he runs the same query ", "bbox": {"l": 148.01385, "t": 597.04872, "r": 546.50952, "b": 606.26172, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "over the view. He sees only the employees that are on leave that are managed by him. In ", "bbox": {"l": 151.20016, "t": 609.04852, "r": 546.16187, "b": 618.26152, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "this example, it is one employee. The columns are masked, which confirms that RCAC is ", "bbox": {"l": 151.20016, "t": 621.04832, "r": 544.84515, "b": 630.2613200000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "applied to the view as well.", "bbox": {"l": 151.20016, "t": 633.04813, "r": 269.8038, "b": 642.26112, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Figure 3-23 Employee on leave - Manager of Field Reps user", "bbox": {"l": 64.800003, "t": 684.6179999999999, "r": 312.7247, "b": 692.943001, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.1474609375, "t": 754.3988037109375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9037860631942749, "cells": [{"id": 0, "text": "34 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.26473999023438, "t": 754.7013549804688, "r": 334.42142, "b": 764.0106811523438, "coord_origin": "TOPLEFT"}, "confidence": 0.9487432837486267, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 258.85648, "t": 71.10697937011719, "r": 446.63561999999996, "b": 117.91847229003906, "coord_origin": "TOPLEFT"}, "confidence": 0.6826066970825195, "cells": [{"id": 2, "text": "TAX_ID,", "bbox": {"l": 295.95679, "t": 71.65808000000015, "r": 381.65659, "b": 80.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "USER_ID,", "bbox": {"l": 291.46075, "t": 83.65790000000004, "r": 386.6366, "b": 92.43268, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "MANAGER_OF_EMPLOYEE,", "bbox": {"l": 258.85648, "t": 95.65770999999995, "r": 446.63561999999996, "b": 104.4325, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "ON_LEAVE_FLAG )", "bbox": {"l": 269.03604, "t": 107.65752999999995, "r": 421.61609, "b": 116.43230999999992, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.8447265625, "t": 118.94123840332031, "r": 151.74001, "b": 128.43213000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.6089476943016052, "cells": [{"id": 6, "text": "AS ", "bbox": {"l": 136.8, "t": 119.65734999999995, "r": 151.74001, "b": 128.43213000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 136.8, "t": 131.65716999999995, "r": 271.67828, "b": 260.43011, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 7, "text": "SELECT EMPLOYEE_ID,", "bbox": {"l": 136.8, "t": 131.65716999999995, "r": 231.71878000000004, "b": 140.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "FIRST_NAME ,", "bbox": {"l": 155.78375, "t": 143.65697999999998, "r": 231.71878000000004, "b": 152.43176000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "MIDDLE_INITIAL,", "bbox": {"l": 155.11975, "t": 155.65679999999998, "r": 246.71854, "b": 164.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "LAST_NAME ,", "bbox": {"l": 156.0726, "t": 167.65661999999998, "r": 226.73877000000002, "b": 176.43140000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "WORK_DEPARTMENT,", "bbox": {"l": 154.94188, "t": 179.65643, "r": 251.69853, "b": 188.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "PHONE_EXTENSION,", "bbox": {"l": 154.94188, "t": 191.65625, "r": 251.69853, "b": 200.43102999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "JOB_DESCRIPTION,", "bbox": {"l": 154.94188, "t": 203.65607, "r": 251.69853, "b": 212.43084999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "DATE_OF_BIRTH,", "bbox": {"l": 155.31857, "t": 215.65588000000002, "r": 241.73852999999997, "b": 224.43066, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "TAX_ID,", "bbox": {"l": 157.7877, "t": 227.65570000000002, "r": 206.75902, "b": 236.43048, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "USER_ID,", "bbox": {"l": 157.23792, "t": 239.65552000000002, "r": 211.73903, "b": 248.4303, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "MANAGER_OF_EMPLOYEE,", "bbox": {"l": 154.39282, "t": 251.65533000000005, "r": 271.67828, "b": 260.43011, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 155.53102, "t": 262.309326171875, "r": 236.69878, "b": 272.42993, "coord_origin": "TOPLEFT"}, "confidence": 0.6180596351623535, "cells": [{"id": 18, "text": "ON_LEAVE_FLAG", "bbox": {"l": 155.53102, "t": 263.65515000000005, "r": 236.69878, "b": 272.42993, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 136.8, "t": 274.9990234375, "r": 157.71849060058594, "b": 284.42975, "coord_origin": "TOPLEFT"}, "confidence": 0.6689217686653137, "cells": [{"id": 19, "text": "FROM", "bbox": {"l": 136.8, "t": 275.65497000000005, "r": 157.55051, "b": 284.42975, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 167.92577, "t": 274.5404052734375, "r": 271.67828, "b": 284.42975, "coord_origin": "TOPLEFT"}, "confidence": 0.6523625254631042, "cells": [{"id": 20, "text": "HR_SCHEMA.EMPLOYEES ", "bbox": {"l": 167.92577, "t": 275.65497000000005, "r": 271.67828, "b": 284.42975, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 136.10264587402344, "t": 286.8880615234375, "r": 161.95062255859375, "b": 296.42957, "coord_origin": "TOPLEFT"}, "confidence": 0.6754139065742493, "cells": [{"id": 21, "text": "WHERE", "bbox": {"l": 136.8, "t": 287.65479, "r": 161.77747, "b": 296.42957, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 171.0566864013672, "t": 286.53363037109375, "r": 271.67828, "b": 297.5150146484375, "coord_origin": "TOPLEFT"}, "confidence": 0.6802994608879089, "cells": [{"id": 22, "text": "ON_LEAVE_FLAG = 'Y';", "bbox": {"l": 171.76845, "t": 287.65479, "r": 271.67828, "b": 296.42957, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 136.068359375, "t": 315.41168212890625, "r": 547.36621, "b": 337.69780999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.8731935620307922, "cells": [{"id": 23, "text": "3.", "bbox": {"l": 136.8, "t": 316.48502, "r": 145.04652, "b": 325.698, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Use the view to query the data and see who is on leave. The SQL statement that is used is ", "bbox": {"l": 147.79535, "t": 316.48502, "r": 547.36621, "b": 325.698, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "shown in Example 3-14:", "bbox": {"l": 151.20016, "t": 328.48483, "r": 257.75723, "b": 337.69780999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "caption", "bbox": {"l": 136.2685546875, "t": 349.93072509765625, "r": 354.4166564941406, "b": 359.5875549316406, "coord_origin": "TOPLEFT"}, "confidence": 0.7664288878440857, "cells": [{"id": 26, "text": "Example 3-14 SQL statement for employees on leave", "bbox": {"l": 136.8, "t": 350.5379899999999, "r": 353.97809, "b": 358.86301, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 136.8, "t": 367.63812, "r": 266.69827, "b": 460.41162, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 27, "text": "SELECT EMPLOYEE_ID,", "bbox": {"l": 136.8, "t": 367.63812, "r": 231.71878000000004, "b": 376.4129, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "LAST_NAME,", "bbox": {"l": 156.39209, "t": 379.63794, "r": 221.69901999999996, "b": 388.41272, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "JOB_DESCRIPTION,", "bbox": {"l": 154.94188, "t": 391.63776, "r": 251.69853, "b": 400.41254, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "DATE_OF_BIRTH,", "bbox": {"l": 155.31857, "t": 403.63757, "r": 241.73852999999997, "b": 412.41235, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "TAX_ID,", "bbox": {"l": 157.7877, "t": 415.63739, "r": 206.75902, "b": 424.41217, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "USER_ID,", "bbox": {"l": 157.23792, "t": 427.63721, "r": 211.73903, "b": 436.41199, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "MANAGER_OF_EMPLOYEE", "bbox": {"l": 154.5134, "t": 439.63702, "r": 266.69827, "b": 448.4118000000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "FROM", "bbox": {"l": 136.8, "t": 451.63684, "r": 157.35744, "b": 460.41162, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 167.63615, "t": 450.5314636230469, "r": 316.67755, "b": 460.8767395019531, "coord_origin": "TOPLEFT"}, "confidence": 0.6310456991195679, "cells": [{"id": 35, "text": "HR_SCHEMA.EMPLOYEES_ON_LEAVE;", "bbox": {"l": 167.63615, "t": 451.63684, "r": 316.67755, "b": 460.41162, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "list_item", "bbox": {"l": 135.88938903808594, "t": 474.4544677734375, "r": 547.25067, "b": 521.350830078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9467523097991943, "cells": [{"id": 36, "text": "4.", "bbox": {"l": 136.8, "t": 475.48706, "r": 145.07851, "b": 484.70004, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Start with the Human Resources person (VGLUCCHESS) and see what is the result of the ", "bbox": {"l": 147.83798, "t": 475.48706, "r": 547.25067, "b": 484.70004, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "previous query. He sees the two employees that are on leave and no masking is done over ", "bbox": {"l": 151.2002, "t": 487.54663, "r": 547.23877, "b": 496.75961, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "the DATE_OF_BIRTH and TAX_ID columns. The results of the query are shown in ", "bbox": {"l": 151.2002, "t": 499.54645, "r": 516.39642, "b": 508.75943, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Figure 3-22.", "bbox": {"l": 151.2002, "t": 511.54626, "r": 205.13356, "b": 520.7592500000001, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "caption", "bbox": {"l": 64.29961395263672, "t": 569.6649780273438, "r": 301.89312744140625, "b": 579.7119140625, "coord_origin": "TOPLEFT"}, "confidence": 0.881747305393219, "cells": [{"id": 41, "text": "Figure 3-22 Employees on leave - Human Resources user", "bbox": {"l": 64.800003, "t": 571.09799, "r": 300.797, "b": 579.423, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "list_item", "bbox": {"l": 136.30172729492188, "t": 595.9632568359375, "r": 546.50952, "b": 642.4163818359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9604976177215576, "cells": [{"id": 42, "text": "5.", "bbox": {"l": 136.8, "t": 597.04872, "r": 145.2104, "b": 606.26172, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Figure 3-23 shows what the Manager (TQSPENSER) gets when he runs the same query ", "bbox": {"l": 148.01385, "t": 597.04872, "r": 546.50952, "b": 606.26172, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "over the view. He sees only the employees that are on leave that are managed by him. In ", "bbox": {"l": 151.20016, "t": 609.04852, "r": 546.16187, "b": 618.26152, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "this example, it is one employee. The columns are masked, which confirms that RCAC is ", "bbox": {"l": 151.20016, "t": 621.04832, "r": 544.84515, "b": 630.2613200000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "applied to the view as well.", "bbox": {"l": 151.20016, "t": 633.04813, "r": 269.8038, "b": 642.26112, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "caption", "bbox": {"l": 64.38579559326172, "t": 683.8665771484375, "r": 313.5398254394531, "b": 693.6953735351562, "coord_origin": "TOPLEFT"}, "confidence": 0.9106412529945374, "cells": [{"id": 47, "text": "Figure 3-23 Employee on leave - Manager of Field Reps user", "bbox": {"l": 64.800003, "t": 684.6179999999999, "r": 312.7247, "b": 692.943001, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 49, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.1474609375, "t": 754.3988037109375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9037860631942749, "cells": [{"id": 0, "text": "34 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "34"}, {"label": "page_footer", "id": 1, "page_no": 49, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.26473999023438, "t": 754.7013549804688, "r": 334.42142, "b": 764.0106811523438, "coord_origin": "TOPLEFT"}, "confidence": 0.9487432837486267, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 2, "page_no": 49, "cluster": {"id": 2, "label": "text", "bbox": {"l": 258.85648, "t": 71.10697937011719, "r": 446.63561999999996, "b": 117.91847229003906, "coord_origin": "TOPLEFT"}, "confidence": 0.6826066970825195, "cells": [{"id": 2, "text": "TAX_ID,", "bbox": {"l": 295.95679, "t": 71.65808000000015, "r": 381.65659, "b": 80.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "USER_ID,", "bbox": {"l": 291.46075, "t": 83.65790000000004, "r": 386.6366, "b": 92.43268, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "MANAGER_OF_EMPLOYEE,", "bbox": {"l": 258.85648, "t": 95.65770999999995, "r": 446.63561999999996, "b": 104.4325, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "ON_LEAVE_FLAG )", "bbox": {"l": 269.03604, "t": 107.65752999999995, "r": 421.61609, "b": 116.43230999999992, "coord_origin": "TOPLEFT"}}]}, "text": "TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE, ON_LEAVE_FLAG )"}, {"label": "text", "id": 3, "page_no": 49, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.8447265625, "t": 118.94123840332031, "r": 151.74001, "b": 128.43213000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.6089476943016052, "cells": [{"id": 6, "text": "AS ", "bbox": {"l": 136.8, "t": 119.65734999999995, "r": 151.74001, "b": 128.43213000000003, "coord_origin": "TOPLEFT"}}]}, "text": "AS"}, {"label": "text", "id": 4, "page_no": 49, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.8, "t": 131.65716999999995, "r": 271.67828, "b": 260.43011, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 7, "text": "SELECT EMPLOYEE_ID,", "bbox": {"l": 136.8, "t": 131.65716999999995, "r": 231.71878000000004, "b": 140.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "FIRST_NAME ,", "bbox": {"l": 155.78375, "t": 143.65697999999998, "r": 231.71878000000004, "b": 152.43176000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "MIDDLE_INITIAL,", "bbox": {"l": 155.11975, "t": 155.65679999999998, "r": 246.71854, "b": 164.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "LAST_NAME ,", "bbox": {"l": 156.0726, "t": 167.65661999999998, "r": 226.73877000000002, "b": 176.43140000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "WORK_DEPARTMENT,", "bbox": {"l": 154.94188, "t": 179.65643, "r": 251.69853, "b": 188.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "PHONE_EXTENSION,", "bbox": {"l": 154.94188, "t": 191.65625, "r": 251.69853, "b": 200.43102999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "JOB_DESCRIPTION,", "bbox": {"l": 154.94188, "t": 203.65607, "r": 251.69853, "b": 212.43084999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "DATE_OF_BIRTH,", "bbox": {"l": 155.31857, "t": 215.65588000000002, "r": 241.73852999999997, "b": 224.43066, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "TAX_ID,", "bbox": {"l": 157.7877, "t": 227.65570000000002, "r": 206.75902, "b": 236.43048, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "USER_ID,", "bbox": {"l": 157.23792, "t": 239.65552000000002, "r": 211.73903, "b": 248.4303, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "MANAGER_OF_EMPLOYEE,", "bbox": {"l": 154.39282, "t": 251.65533000000005, "r": 271.67828, "b": 260.43011, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT EMPLOYEE_ID, FIRST_NAME , MIDDLE_INITIAL, LAST_NAME , WORK_DEPARTMENT, PHONE_EXTENSION, JOB_DESCRIPTION, DATE_OF_BIRTH, TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE,"}, {"label": "text", "id": 5, "page_no": 49, "cluster": {"id": 5, "label": "text", "bbox": {"l": 155.53102, "t": 262.309326171875, "r": 236.69878, "b": 272.42993, "coord_origin": "TOPLEFT"}, "confidence": 0.6180596351623535, "cells": [{"id": 18, "text": "ON_LEAVE_FLAG", "bbox": {"l": 155.53102, "t": 263.65515000000005, "r": 236.69878, "b": 272.42993, "coord_origin": "TOPLEFT"}}]}, "text": "ON_LEAVE_FLAG"}, {"label": "text", "id": 6, "page_no": 49, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.8, "t": 274.9990234375, "r": 157.71849060058594, "b": 284.42975, "coord_origin": "TOPLEFT"}, "confidence": 0.6689217686653137, "cells": [{"id": 19, "text": "FROM", "bbox": {"l": 136.8, "t": 275.65497000000005, "r": 157.55051, "b": 284.42975, "coord_origin": "TOPLEFT"}}]}, "text": "FROM"}, {"label": "text", "id": 7, "page_no": 49, "cluster": {"id": 7, "label": "text", "bbox": {"l": 167.92577, "t": 274.5404052734375, "r": 271.67828, "b": 284.42975, "coord_origin": "TOPLEFT"}, "confidence": 0.6523625254631042, "cells": [{"id": 20, "text": "HR_SCHEMA.EMPLOYEES ", "bbox": {"l": 167.92577, "t": 275.65497000000005, "r": 271.67828, "b": 284.42975, "coord_origin": "TOPLEFT"}}]}, "text": "HR_SCHEMA.EMPLOYEES"}, {"label": "text", "id": 8, "page_no": 49, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.10264587402344, "t": 286.8880615234375, "r": 161.95062255859375, "b": 296.42957, "coord_origin": "TOPLEFT"}, "confidence": 0.6754139065742493, "cells": [{"id": 21, "text": "WHERE", "bbox": {"l": 136.8, "t": 287.65479, "r": 161.77747, "b": 296.42957, "coord_origin": "TOPLEFT"}}]}, "text": "WHERE"}, {"label": "text", "id": 9, "page_no": 49, "cluster": {"id": 9, "label": "text", "bbox": {"l": 171.0566864013672, "t": 286.53363037109375, "r": 271.67828, "b": 297.5150146484375, "coord_origin": "TOPLEFT"}, "confidence": 0.6802994608879089, "cells": [{"id": 22, "text": "ON_LEAVE_FLAG = 'Y';", "bbox": {"l": 171.76845, "t": 287.65479, "r": 271.67828, "b": 296.42957, "coord_origin": "TOPLEFT"}}]}, "text": "ON_LEAVE_FLAG = 'Y';"}, {"label": "list_item", "id": 10, "page_no": 49, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 136.068359375, "t": 315.41168212890625, "r": 547.36621, "b": 337.69780999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.8731935620307922, "cells": [{"id": 23, "text": "3.", "bbox": {"l": 136.8, "t": 316.48502, "r": 145.04652, "b": 325.698, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Use the view to query the data and see who is on leave. The SQL statement that is used is ", "bbox": {"l": 147.79535, "t": 316.48502, "r": 547.36621, "b": 325.698, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "shown in Example 3-14:", "bbox": {"l": 151.20016, "t": 328.48483, "r": 257.75723, "b": 337.69780999999995, "coord_origin": "TOPLEFT"}}]}, "text": "3. Use the view to query the data and see who is on leave. The SQL statement that is used is shown in Example 3-14:"}, {"label": "caption", "id": 11, "page_no": 49, "cluster": {"id": 11, "label": "caption", "bbox": {"l": 136.2685546875, "t": 349.93072509765625, "r": 354.4166564941406, "b": 359.5875549316406, "coord_origin": "TOPLEFT"}, "confidence": 0.7664288878440857, "cells": [{"id": 26, "text": "Example 3-14 SQL statement for employees on leave", "bbox": {"l": 136.8, "t": 350.5379899999999, "r": 353.97809, "b": 358.86301, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-14 SQL statement for employees on leave"}, {"label": "text", "id": 12, "page_no": 49, "cluster": {"id": 12, "label": "text", "bbox": {"l": 136.8, "t": 367.63812, "r": 266.69827, "b": 460.41162, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 27, "text": "SELECT EMPLOYEE_ID,", "bbox": {"l": 136.8, "t": 367.63812, "r": 231.71878000000004, "b": 376.4129, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "LAST_NAME,", "bbox": {"l": 156.39209, "t": 379.63794, "r": 221.69901999999996, "b": 388.41272, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "JOB_DESCRIPTION,", "bbox": {"l": 154.94188, "t": 391.63776, "r": 251.69853, "b": 400.41254, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "DATE_OF_BIRTH,", "bbox": {"l": 155.31857, "t": 403.63757, "r": 241.73852999999997, "b": 412.41235, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "TAX_ID,", "bbox": {"l": 157.7877, "t": 415.63739, "r": 206.75902, "b": 424.41217, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "USER_ID,", "bbox": {"l": 157.23792, "t": 427.63721, "r": 211.73903, "b": 436.41199, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "MANAGER_OF_EMPLOYEE", "bbox": {"l": 154.5134, "t": 439.63702, "r": 266.69827, "b": 448.4118000000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "FROM", "bbox": {"l": 136.8, "t": 451.63684, "r": 157.35744, "b": 460.41162, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT EMPLOYEE_ID, LAST_NAME, JOB_DESCRIPTION, DATE_OF_BIRTH, TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE FROM"}, {"label": "text", "id": 13, "page_no": 49, "cluster": {"id": 13, "label": "text", "bbox": {"l": 167.63615, "t": 450.5314636230469, "r": 316.67755, "b": 460.8767395019531, "coord_origin": "TOPLEFT"}, "confidence": 0.6310456991195679, "cells": [{"id": 35, "text": "HR_SCHEMA.EMPLOYEES_ON_LEAVE;", "bbox": {"l": 167.63615, "t": 451.63684, "r": 316.67755, "b": 460.41162, "coord_origin": "TOPLEFT"}}]}, "text": "HR_SCHEMA.EMPLOYEES_ON_LEAVE;"}, {"label": "list_item", "id": 14, "page_no": 49, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 135.88938903808594, "t": 474.4544677734375, "r": 547.25067, "b": 521.350830078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9467523097991943, "cells": [{"id": 36, "text": "4.", "bbox": {"l": 136.8, "t": 475.48706, "r": 145.07851, "b": 484.70004, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Start with the Human Resources person (VGLUCCHESS) and see what is the result of the ", "bbox": {"l": 147.83798, "t": 475.48706, "r": 547.25067, "b": 484.70004, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "previous query. He sees the two employees that are on leave and no masking is done over ", "bbox": {"l": 151.2002, "t": 487.54663, "r": 547.23877, "b": 496.75961, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "the DATE_OF_BIRTH and TAX_ID columns. The results of the query are shown in ", "bbox": {"l": 151.2002, "t": 499.54645, "r": 516.39642, "b": 508.75943, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Figure 3-22.", "bbox": {"l": 151.2002, "t": 511.54626, "r": 205.13356, "b": 520.7592500000001, "coord_origin": "TOPLEFT"}}]}, "text": "4. Start with the Human Resources person (VGLUCCHESS) and see what is the result of the previous query. He sees the two employees that are on leave and no masking is done over the DATE_OF_BIRTH and TAX_ID columns. The results of the query are shown in Figure 3-22."}, {"label": "caption", "id": 15, "page_no": 49, "cluster": {"id": 15, "label": "caption", "bbox": {"l": 64.29961395263672, "t": 569.6649780273438, "r": 301.89312744140625, "b": 579.7119140625, "coord_origin": "TOPLEFT"}, "confidence": 0.881747305393219, "cells": [{"id": 41, "text": "Figure 3-22 Employees on leave - Human Resources user", "bbox": {"l": 64.800003, "t": 571.09799, "r": 300.797, "b": 579.423, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-22 Employees on leave - Human Resources user"}, {"label": "list_item", "id": 16, "page_no": 49, "cluster": {"id": 16, "label": "list_item", "bbox": {"l": 136.30172729492188, "t": 595.9632568359375, "r": 546.50952, "b": 642.4163818359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9604976177215576, "cells": [{"id": 42, "text": "5.", "bbox": {"l": 136.8, "t": 597.04872, "r": 145.2104, "b": 606.26172, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Figure 3-23 shows what the Manager (TQSPENSER) gets when he runs the same query ", "bbox": {"l": 148.01385, "t": 597.04872, "r": 546.50952, "b": 606.26172, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "over the view. He sees only the employees that are on leave that are managed by him. In ", "bbox": {"l": 151.20016, "t": 609.04852, "r": 546.16187, "b": 618.26152, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "this example, it is one employee. The columns are masked, which confirms that RCAC is ", "bbox": {"l": 151.20016, "t": 621.04832, "r": 544.84515, "b": 630.2613200000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "applied to the view as well.", "bbox": {"l": 151.20016, "t": 633.04813, "r": 269.8038, "b": 642.26112, "coord_origin": "TOPLEFT"}}]}, "text": "5. Figure 3-23 shows what the Manager (TQSPENSER) gets when he runs the same query over the view. He sees only the employees that are on leave that are managed by him. In this example, it is one employee. The columns are masked, which confirms that RCAC is applied to the view as well."}, {"label": "caption", "id": 17, "page_no": 49, "cluster": {"id": 17, "label": "caption", "bbox": {"l": 64.38579559326172, "t": 683.8665771484375, "r": 313.5398254394531, "b": 693.6953735351562, "coord_origin": "TOPLEFT"}, "confidence": 0.9106412529945374, "cells": [{"id": 47, "text": "Figure 3-23 Employee on leave - Manager of Field Reps user", "bbox": {"l": 64.800003, "t": 684.6179999999999, "r": 312.7247, "b": 692.943001, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-23 Employee on leave - Manager of Field Reps user"}], "body": [{"label": "text", "id": 2, "page_no": 49, "cluster": {"id": 2, "label": "text", "bbox": {"l": 258.85648, "t": 71.10697937011719, "r": 446.63561999999996, "b": 117.91847229003906, "coord_origin": "TOPLEFT"}, "confidence": 0.6826066970825195, "cells": [{"id": 2, "text": "TAX_ID,", "bbox": {"l": 295.95679, "t": 71.65808000000015, "r": 381.65659, "b": 80.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "USER_ID,", "bbox": {"l": 291.46075, "t": 83.65790000000004, "r": 386.6366, "b": 92.43268, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "MANAGER_OF_EMPLOYEE,", "bbox": {"l": 258.85648, "t": 95.65770999999995, "r": 446.63561999999996, "b": 104.4325, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "ON_LEAVE_FLAG )", "bbox": {"l": 269.03604, "t": 107.65752999999995, "r": 421.61609, "b": 116.43230999999992, "coord_origin": "TOPLEFT"}}]}, "text": "TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE, ON_LEAVE_FLAG )"}, {"label": "text", "id": 3, "page_no": 49, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.8447265625, "t": 118.94123840332031, "r": 151.74001, "b": 128.43213000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.6089476943016052, "cells": [{"id": 6, "text": "AS ", "bbox": {"l": 136.8, "t": 119.65734999999995, "r": 151.74001, "b": 128.43213000000003, "coord_origin": "TOPLEFT"}}]}, "text": "AS"}, {"label": "text", "id": 4, "page_no": 49, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.8, "t": 131.65716999999995, "r": 271.67828, "b": 260.43011, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 7, "text": "SELECT EMPLOYEE_ID,", "bbox": {"l": 136.8, "t": 131.65716999999995, "r": 231.71878000000004, "b": 140.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "FIRST_NAME ,", "bbox": {"l": 155.78375, "t": 143.65697999999998, "r": 231.71878000000004, "b": 152.43176000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "MIDDLE_INITIAL,", "bbox": {"l": 155.11975, "t": 155.65679999999998, "r": 246.71854, "b": 164.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "LAST_NAME ,", "bbox": {"l": 156.0726, "t": 167.65661999999998, "r": 226.73877000000002, "b": 176.43140000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "WORK_DEPARTMENT,", "bbox": {"l": 154.94188, "t": 179.65643, "r": 251.69853, "b": 188.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "PHONE_EXTENSION,", "bbox": {"l": 154.94188, "t": 191.65625, "r": 251.69853, "b": 200.43102999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "JOB_DESCRIPTION,", "bbox": {"l": 154.94188, "t": 203.65607, "r": 251.69853, "b": 212.43084999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "DATE_OF_BIRTH,", "bbox": {"l": 155.31857, "t": 215.65588000000002, "r": 241.73852999999997, "b": 224.43066, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "TAX_ID,", "bbox": {"l": 157.7877, "t": 227.65570000000002, "r": 206.75902, "b": 236.43048, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "USER_ID,", "bbox": {"l": 157.23792, "t": 239.65552000000002, "r": 211.73903, "b": 248.4303, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "MANAGER_OF_EMPLOYEE,", "bbox": {"l": 154.39282, "t": 251.65533000000005, "r": 271.67828, "b": 260.43011, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT EMPLOYEE_ID, FIRST_NAME , MIDDLE_INITIAL, LAST_NAME , WORK_DEPARTMENT, PHONE_EXTENSION, JOB_DESCRIPTION, DATE_OF_BIRTH, TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE,"}, {"label": "text", "id": 5, "page_no": 49, "cluster": {"id": 5, "label": "text", "bbox": {"l": 155.53102, "t": 262.309326171875, "r": 236.69878, "b": 272.42993, "coord_origin": "TOPLEFT"}, "confidence": 0.6180596351623535, "cells": [{"id": 18, "text": "ON_LEAVE_FLAG", "bbox": {"l": 155.53102, "t": 263.65515000000005, "r": 236.69878, "b": 272.42993, "coord_origin": "TOPLEFT"}}]}, "text": "ON_LEAVE_FLAG"}, {"label": "text", "id": 6, "page_no": 49, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.8, "t": 274.9990234375, "r": 157.71849060058594, "b": 284.42975, "coord_origin": "TOPLEFT"}, "confidence": 0.6689217686653137, "cells": [{"id": 19, "text": "FROM", "bbox": {"l": 136.8, "t": 275.65497000000005, "r": 157.55051, "b": 284.42975, "coord_origin": "TOPLEFT"}}]}, "text": "FROM"}, {"label": "text", "id": 7, "page_no": 49, "cluster": {"id": 7, "label": "text", "bbox": {"l": 167.92577, "t": 274.5404052734375, "r": 271.67828, "b": 284.42975, "coord_origin": "TOPLEFT"}, "confidence": 0.6523625254631042, "cells": [{"id": 20, "text": "HR_SCHEMA.EMPLOYEES ", "bbox": {"l": 167.92577, "t": 275.65497000000005, "r": 271.67828, "b": 284.42975, "coord_origin": "TOPLEFT"}}]}, "text": "HR_SCHEMA.EMPLOYEES"}, {"label": "text", "id": 8, "page_no": 49, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.10264587402344, "t": 286.8880615234375, "r": 161.95062255859375, "b": 296.42957, "coord_origin": "TOPLEFT"}, "confidence": 0.6754139065742493, "cells": [{"id": 21, "text": "WHERE", "bbox": {"l": 136.8, "t": 287.65479, "r": 161.77747, "b": 296.42957, "coord_origin": "TOPLEFT"}}]}, "text": "WHERE"}, {"label": "text", "id": 9, "page_no": 49, "cluster": {"id": 9, "label": "text", "bbox": {"l": 171.0566864013672, "t": 286.53363037109375, "r": 271.67828, "b": 297.5150146484375, "coord_origin": "TOPLEFT"}, "confidence": 0.6802994608879089, "cells": [{"id": 22, "text": "ON_LEAVE_FLAG = 'Y';", "bbox": {"l": 171.76845, "t": 287.65479, "r": 271.67828, "b": 296.42957, "coord_origin": "TOPLEFT"}}]}, "text": "ON_LEAVE_FLAG = 'Y';"}, {"label": "list_item", "id": 10, "page_no": 49, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 136.068359375, "t": 315.41168212890625, "r": 547.36621, "b": 337.69780999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.8731935620307922, "cells": [{"id": 23, "text": "3.", "bbox": {"l": 136.8, "t": 316.48502, "r": 145.04652, "b": 325.698, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Use the view to query the data and see who is on leave. The SQL statement that is used is ", "bbox": {"l": 147.79535, "t": 316.48502, "r": 547.36621, "b": 325.698, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "shown in Example 3-14:", "bbox": {"l": 151.20016, "t": 328.48483, "r": 257.75723, "b": 337.69780999999995, "coord_origin": "TOPLEFT"}}]}, "text": "3. Use the view to query the data and see who is on leave. The SQL statement that is used is shown in Example 3-14:"}, {"label": "caption", "id": 11, "page_no": 49, "cluster": {"id": 11, "label": "caption", "bbox": {"l": 136.2685546875, "t": 349.93072509765625, "r": 354.4166564941406, "b": 359.5875549316406, "coord_origin": "TOPLEFT"}, "confidence": 0.7664288878440857, "cells": [{"id": 26, "text": "Example 3-14 SQL statement for employees on leave", "bbox": {"l": 136.8, "t": 350.5379899999999, "r": 353.97809, "b": 358.86301, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-14 SQL statement for employees on leave"}, {"label": "text", "id": 12, "page_no": 49, "cluster": {"id": 12, "label": "text", "bbox": {"l": 136.8, "t": 367.63812, "r": 266.69827, "b": 460.41162, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 27, "text": "SELECT EMPLOYEE_ID,", "bbox": {"l": 136.8, "t": 367.63812, "r": 231.71878000000004, "b": 376.4129, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "LAST_NAME,", "bbox": {"l": 156.39209, "t": 379.63794, "r": 221.69901999999996, "b": 388.41272, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "JOB_DESCRIPTION,", "bbox": {"l": 154.94188, "t": 391.63776, "r": 251.69853, "b": 400.41254, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "DATE_OF_BIRTH,", "bbox": {"l": 155.31857, "t": 403.63757, "r": 241.73852999999997, "b": 412.41235, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "TAX_ID,", "bbox": {"l": 157.7877, "t": 415.63739, "r": 206.75902, "b": 424.41217, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "USER_ID,", "bbox": {"l": 157.23792, "t": 427.63721, "r": 211.73903, "b": 436.41199, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "MANAGER_OF_EMPLOYEE", "bbox": {"l": 154.5134, "t": 439.63702, "r": 266.69827, "b": 448.4118000000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "FROM", "bbox": {"l": 136.8, "t": 451.63684, "r": 157.35744, "b": 460.41162, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT EMPLOYEE_ID, LAST_NAME, JOB_DESCRIPTION, DATE_OF_BIRTH, TAX_ID, USER_ID, MANAGER_OF_EMPLOYEE FROM"}, {"label": "text", "id": 13, "page_no": 49, "cluster": {"id": 13, "label": "text", "bbox": {"l": 167.63615, "t": 450.5314636230469, "r": 316.67755, "b": 460.8767395019531, "coord_origin": "TOPLEFT"}, "confidence": 0.6310456991195679, "cells": [{"id": 35, "text": "HR_SCHEMA.EMPLOYEES_ON_LEAVE;", "bbox": {"l": 167.63615, "t": 451.63684, "r": 316.67755, "b": 460.41162, "coord_origin": "TOPLEFT"}}]}, "text": "HR_SCHEMA.EMPLOYEES_ON_LEAVE;"}, {"label": "list_item", "id": 14, "page_no": 49, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 135.88938903808594, "t": 474.4544677734375, "r": 547.25067, "b": 521.350830078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9467523097991943, "cells": [{"id": 36, "text": "4.", "bbox": {"l": 136.8, "t": 475.48706, "r": 145.07851, "b": 484.70004, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Start with the Human Resources person (VGLUCCHESS) and see what is the result of the ", "bbox": {"l": 147.83798, "t": 475.48706, "r": 547.25067, "b": 484.70004, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "previous query. He sees the two employees that are on leave and no masking is done over ", "bbox": {"l": 151.2002, "t": 487.54663, "r": 547.23877, "b": 496.75961, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "the DATE_OF_BIRTH and TAX_ID columns. The results of the query are shown in ", "bbox": {"l": 151.2002, "t": 499.54645, "r": 516.39642, "b": 508.75943, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Figure 3-22.", "bbox": {"l": 151.2002, "t": 511.54626, "r": 205.13356, "b": 520.7592500000001, "coord_origin": "TOPLEFT"}}]}, "text": "4. Start with the Human Resources person (VGLUCCHESS) and see what is the result of the previous query. He sees the two employees that are on leave and no masking is done over the DATE_OF_BIRTH and TAX_ID columns. The results of the query are shown in Figure 3-22."}, {"label": "caption", "id": 15, "page_no": 49, "cluster": {"id": 15, "label": "caption", "bbox": {"l": 64.29961395263672, "t": 569.6649780273438, "r": 301.89312744140625, "b": 579.7119140625, "coord_origin": "TOPLEFT"}, "confidence": 0.881747305393219, "cells": [{"id": 41, "text": "Figure 3-22 Employees on leave - Human Resources user", "bbox": {"l": 64.800003, "t": 571.09799, "r": 300.797, "b": 579.423, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-22 Employees on leave - Human Resources user"}, {"label": "list_item", "id": 16, "page_no": 49, "cluster": {"id": 16, "label": "list_item", "bbox": {"l": 136.30172729492188, "t": 595.9632568359375, "r": 546.50952, "b": 642.4163818359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9604976177215576, "cells": [{"id": 42, "text": "5.", "bbox": {"l": 136.8, "t": 597.04872, "r": 145.2104, "b": 606.26172, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Figure 3-23 shows what the Manager (TQSPENSER) gets when he runs the same query ", "bbox": {"l": 148.01385, "t": 597.04872, "r": 546.50952, "b": 606.26172, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "over the view. He sees only the employees that are on leave that are managed by him. In ", "bbox": {"l": 151.20016, "t": 609.04852, "r": 546.16187, "b": 618.26152, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "this example, it is one employee. The columns are masked, which confirms that RCAC is ", "bbox": {"l": 151.20016, "t": 621.04832, "r": 544.84515, "b": 630.2613200000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "applied to the view as well.", "bbox": {"l": 151.20016, "t": 633.04813, "r": 269.8038, "b": 642.26112, "coord_origin": "TOPLEFT"}}]}, "text": "5. Figure 3-23 shows what the Manager (TQSPENSER) gets when he runs the same query over the view. He sees only the employees that are on leave that are managed by him. In this example, it is one employee. The columns are masked, which confirms that RCAC is applied to the view as well."}, {"label": "caption", "id": 17, "page_no": 49, "cluster": {"id": 17, "label": "caption", "bbox": {"l": 64.38579559326172, "t": 683.8665771484375, "r": 313.5398254394531, "b": 693.6953735351562, "coord_origin": "TOPLEFT"}, "confidence": 0.9106412529945374, "cells": [{"id": 47, "text": "Figure 3-23 Employee on leave - Manager of Field Reps user", "bbox": {"l": 64.800003, "t": 684.6179999999999, "r": 312.7247, "b": 692.943001, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-23 Employee on leave - Manager of Field Reps user"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 49, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.1474609375, "t": 754.3988037109375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9037860631942749, "cells": [{"id": 0, "text": "34 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "34"}, {"label": "page_footer", "id": 1, "page_no": 49, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.26473999023438, "t": 754.7013549804688, "r": 334.42142, "b": 764.0106811523438, "coord_origin": "TOPLEFT"}, "confidence": 0.9487432837486267, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 50, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "35", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "6.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.19994, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 3-24 shows what the employee (DSSMITH) gets when he runs the same query ", "bbox": {"l": 148.00006, "t": 71.50903000000005, "r": 533.13684, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "over the view. The employee gets an empty set or he gets only himself if he is on leave.", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 536.18866, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": ".", "bbox": {"l": 64.799744, "t": 98.50860999999998, "r": 67.568626, "b": 107.72162000000003, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Figure 3-24 Employees on leave - employee user", "bbox": {"l": 64.800003, "t": 156.37805000000003, "r": 264.79526, "b": 164.70299999999997, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 344.6600646972656, "t": 754.7468872070312, "r": 523.60162, "b": 764.0894775390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9453045725822449, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.7924194335938, "t": 754.3042602539062, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.898695707321167, "cells": [{"id": 1, "text": "35", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 136.05897521972656, "t": 70.66057586669922, "r": 536.18866, "b": 92.95333862304688, "coord_origin": "TOPLEFT"}, "confidence": 0.8970366716384888, "cells": [{"id": 2, "text": "6.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.19994, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 3-24 shows what the employee (DSSMITH) gets when he runs the same query ", "bbox": {"l": 148.00006, "t": 71.50903000000005, "r": 533.13684, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "over the view. The employee gets an empty set or he gets only himself if he is on leave.", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 536.18866, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 64.799744, "t": 98.50860999999998, "r": 67.568626, "b": 107.72162000000003, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 5, "text": ".", "bbox": {"l": 64.799744, "t": 98.50860999999998, "r": 67.568626, "b": 107.72162000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "caption", "bbox": {"l": 64.34432983398438, "t": 155.6955108642578, "r": 265.8516540527344, "b": 164.99256896972656, "coord_origin": "TOPLEFT"}, "confidence": 0.8921710252761841, "cells": [{"id": 6, "text": "Figure 3-24 Employees on leave - employee user", "bbox": {"l": 64.800003, "t": 156.37805000000003, "r": 264.79526, "b": 164.70299999999997, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 50, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.6600646972656, "t": 754.7468872070312, "r": 523.60162, "b": 764.0894775390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9453045725822449, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 50, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.7924194335938, "t": 754.3042602539062, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.898695707321167, "cells": [{"id": 1, "text": "35", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "35"}, {"label": "list_item", "id": 2, "page_no": 50, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.05897521972656, "t": 70.66057586669922, "r": 536.18866, "b": 92.95333862304688, "coord_origin": "TOPLEFT"}, "confidence": 0.8970366716384888, "cells": [{"id": 2, "text": "6.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.19994, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 3-24 shows what the employee (DSSMITH) gets when he runs the same query ", "bbox": {"l": 148.00006, "t": 71.50903000000005, "r": 533.13684, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "over the view. The employee gets an empty set or he gets only himself if he is on leave.", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 536.18866, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "6. Figure 3-24 shows what the employee (DSSMITH) gets when he runs the same query over the view. The employee gets an empty set or he gets only himself if he is on leave."}, {"label": "text", "id": 3, "page_no": 50, "cluster": {"id": 3, "label": "text", "bbox": {"l": 64.799744, "t": 98.50860999999998, "r": 67.568626, "b": 107.72162000000003, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 5, "text": ".", "bbox": {"l": 64.799744, "t": 98.50860999999998, "r": 67.568626, "b": 107.72162000000003, "coord_origin": "TOPLEFT"}}]}, "text": "."}, {"label": "caption", "id": 4, "page_no": 50, "cluster": {"id": 4, "label": "caption", "bbox": {"l": 64.34432983398438, "t": 155.6955108642578, "r": 265.8516540527344, "b": 164.99256896972656, "coord_origin": "TOPLEFT"}, "confidence": 0.8921710252761841, "cells": [{"id": 6, "text": "Figure 3-24 Employees on leave - employee user", "bbox": {"l": 64.800003, "t": 156.37805000000003, "r": 264.79526, "b": 164.70299999999997, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-24 Employees on leave - employee user"}], "body": [{"label": "list_item", "id": 2, "page_no": 50, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.05897521972656, "t": 70.66057586669922, "r": 536.18866, "b": 92.95333862304688, "coord_origin": "TOPLEFT"}, "confidence": 0.8970366716384888, "cells": [{"id": 2, "text": "6.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.19994, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 3-24 shows what the employee (DSSMITH) gets when he runs the same query ", "bbox": {"l": 148.00006, "t": 71.50903000000005, "r": 533.13684, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "over the view. The employee gets an empty set or he gets only himself if he is on leave.", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 536.18866, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "6. Figure 3-24 shows what the employee (DSSMITH) gets when he runs the same query over the view. The employee gets an empty set or he gets only himself if he is on leave."}, {"label": "text", "id": 3, "page_no": 50, "cluster": {"id": 3, "label": "text", "bbox": {"l": 64.799744, "t": 98.50860999999998, "r": 67.568626, "b": 107.72162000000003, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 5, "text": ".", "bbox": {"l": 64.799744, "t": 98.50860999999998, "r": 67.568626, "b": 107.72162000000003, "coord_origin": "TOPLEFT"}}]}, "text": "."}, {"label": "caption", "id": 4, "page_no": 50, "cluster": {"id": 4, "label": "caption", "bbox": {"l": 64.34432983398438, "t": 155.6955108642578, "r": 265.8516540527344, "b": 164.99256896972656, "coord_origin": "TOPLEFT"}, "confidence": 0.8921710252761841, "cells": [{"id": 6, "text": "Figure 3-24 Employees on leave - employee user", "bbox": {"l": 64.800003, "t": 156.37805000000003, "r": 264.79526, "b": 164.70299999999997, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-24 Employees on leave - employee user"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 50, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.6600646972656, "t": 754.7468872070312, "r": 523.60162, "b": 764.0894775390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9453045725822449, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 50, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.7924194335938, "t": 754.3042602539062, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.898695707321167, "cells": [{"id": 1, "text": "35", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "35"}]}}, {"page_no": 51, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "36 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.35157775878906, "t": 754.292236328125, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9079517722129822, "cells": [{"id": 0, "text": "36 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.37352752685547, "t": 754.510986328125, "r": 334.5318603515625, "b": 764.0523681640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9429895877838135, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 51, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.35157775878906, "t": 754.292236328125, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9079517722129822, "cells": [{"id": 0, "text": "36 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "36"}, {"label": "page_footer", "id": 1, "page_no": 51, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.37352752685547, "t": 754.510986328125, "r": 334.5318603515625, "b": 764.0523681640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9429895877838135, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}], "body": [], "headers": [{"label": "page_footer", "id": 0, "page_no": 51, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.35157775878906, "t": 754.292236328125, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9079517722129822, "cells": [{"id": 0, "text": "36 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "36"}, {"label": "page_footer", "id": 1, "page_no": 51, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.37352752685547, "t": 754.510986328125, "r": 334.5318603515625, "b": 764.0523681640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9429895877838135, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 52, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "37", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Chapter 4.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Implementing Row and Column ", "bbox": {"l": 136.8, "t": 254.88635, "r": 532.03375, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Access Control: Banking ", "bbox": {"l": 136.8, "t": 285.84671, "r": 452.48553, "b": 309.8782, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "example", "bbox": {"l": 136.8, "t": 316.8668200000001, "r": 240.41341999999997, "b": 340.89832, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "This chapter illustrates the Row and Column Access Control (RCAC) concepts using a ", "bbox": {"l": 136.8, "t": 379.72873, "r": 520.66241, "b": 388.94171000000006, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "banking example. Appendix A, \u201cDatabase definitions for the RCAC banking example\u201d on ", "bbox": {"l": 136.80002, "t": 391.72855, "r": 527.6723, "b": 400.94153, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "page 121 provides a script that you can use to create all the database definitions or DDLs to ", "bbox": {"l": 136.80002, "t": 403.72836, "r": 546.15009, "b": 412.94135, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "re-create this RCAC example.", "bbox": {"l": 136.80002, "t": 415.72818, "r": 268.71228, "b": 424.94116, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "The following topics are covered in this chapter:", "bbox": {"l": 136.80002, "t": 437.68799, "r": 347.41214, "b": 446.90097, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 454.87695, "r": 141.78001, "b": 463.65173, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Business requirements for the RCAC banking scenario", "bbox": {"l": 151.20018, "t": 454.72757, "r": 392.97119, "b": 463.94055, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 466.87677, "r": 141.78001, "b": 475.65155, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Description of the users roles and responsibilities", "bbox": {"l": 151.20018, "t": 466.72739, "r": 368.54633, "b": 475.94037, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 478.87659, "r": 141.78001, "b": 487.65137, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Implementation of RCAC", "bbox": {"l": 151.20018, "t": 478.7272, "r": 261.45441, "b": 487.94019, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "4", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.681270599365234, "t": 754.6544799804688, "r": 257.24335, "b": 764.1611938476562, "coord_origin": "TOPLEFT"}, "confidence": 0.9473534226417542, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.5507202148438, "t": 754.1658325195312, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9108303189277649, "cells": [{"id": 1, "text": "37", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 4.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "section_header", "bbox": {"l": 135.96546936035156, "t": 253.45413208007812, "r": 532.03375, "b": 340.89832, "coord_origin": "TOPLEFT"}, "confidence": 0.8815584778785706, "cells": [{"id": 3, "text": "Implementing Row and Column ", "bbox": {"l": 136.8, "t": 254.88635, "r": 532.03375, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Access Control: Banking ", "bbox": {"l": 136.8, "t": 285.84671, "r": 452.48553, "b": 309.8782, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "example", "bbox": {"l": 136.8, "t": 316.8668200000001, "r": 240.41341999999997, "b": 340.89832, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.8340301513672, "t": 378.66455078125, "r": 546.15009, "b": 424.94116, "coord_origin": "TOPLEFT"}, "confidence": 0.9846907258033752, "cells": [{"id": 6, "text": "This chapter illustrates the Row and Column Access Control (RCAC) concepts using a ", "bbox": {"l": 136.8, "t": 379.72873, "r": 520.66241, "b": 388.94171000000006, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "banking example. Appendix A, \u201cDatabase definitions for the RCAC banking example\u201d on ", "bbox": {"l": 136.80002, "t": 391.72855, "r": 527.6723, "b": 400.94153, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "page 121 provides a script that you can use to create all the database definitions or DDLs to ", "bbox": {"l": 136.80002, "t": 403.72836, "r": 546.15009, "b": 412.94135, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "re-create this RCAC example.", "bbox": {"l": 136.80002, "t": 415.72818, "r": 268.71228, "b": 424.94116, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.71417236328125, "t": 436.7104187011719, "r": 347.41214, "b": 447.06390380859375, "coord_origin": "TOPLEFT"}, "confidence": 0.922663152217865, "cells": [{"id": 10, "text": "The following topics are covered in this chapter:", "bbox": {"l": 136.80002, "t": 437.68799, "r": 347.41214, "b": 446.90097, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.7564697265625, "t": 453.9541320800781, "r": 392.97119, "b": 464.2275695800781, "coord_origin": "TOPLEFT"}, "confidence": 0.9471576809883118, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 454.87695, "r": 141.78001, "b": 463.65173, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Business requirements for the RCAC banking scenario", "bbox": {"l": 151.20018, "t": 454.72757, "r": 392.97119, "b": 463.94055, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.56719970703125, "t": 465.5244445800781, "r": 368.54633, "b": 476.0690612792969, "coord_origin": "TOPLEFT"}, "confidence": 0.9392989873886108, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 466.87677, "r": 141.78001, "b": 475.65155, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Description of the users roles and responsibilities", "bbox": {"l": 151.20018, "t": 466.72739, "r": 368.54633, "b": 475.94037, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.7265167236328, "t": 478.0903625488281, "r": 261.45441, "b": 488.0649719238281, "coord_origin": "TOPLEFT"}, "confidence": 0.9472163915634155, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 478.87659, "r": 141.78001, "b": 487.65137, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Implementation of RCAC", "bbox": {"l": 151.20018, "t": 478.7272, "r": 261.45441, "b": 487.94019, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 500.39999, "t": 92.38893127441406, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.7300243973731995, "cells": [{"id": 17, "text": "4", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "picture", "bbox": {"l": 32.17905807495117, "t": 70.60472106933594, "r": 238.82225036621094, "b": 238.14642333984375, "coord_origin": "TOPLEFT"}, "confidence": 0.7240587472915649, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 52, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.681270599365234, "t": 754.6544799804688, "r": 257.24335, "b": 764.1611938476562, "coord_origin": "TOPLEFT"}, "confidence": 0.9473534226417542, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 52, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.5507202148438, "t": 754.1658325195312, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9108303189277649, "cells": [{"id": 1, "text": "37", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "37"}, {"label": "text", "id": 2, "page_no": 52, "cluster": {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 4.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4."}, {"label": "section_header", "id": 3, "page_no": 52, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 135.96546936035156, "t": 253.45413208007812, "r": 532.03375, "b": 340.89832, "coord_origin": "TOPLEFT"}, "confidence": 0.8815584778785706, "cells": [{"id": 3, "text": "Implementing Row and Column ", "bbox": {"l": 136.8, "t": 254.88635, "r": 532.03375, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Access Control: Banking ", "bbox": {"l": 136.8, "t": 285.84671, "r": 452.48553, "b": 309.8782, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "example", "bbox": {"l": 136.8, "t": 316.8668200000001, "r": 240.41341999999997, "b": 340.89832, "coord_origin": "TOPLEFT"}}]}, "text": "Implementing Row and Column Access Control: Banking example"}, {"label": "text", "id": 4, "page_no": 52, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.8340301513672, "t": 378.66455078125, "r": 546.15009, "b": 424.94116, "coord_origin": "TOPLEFT"}, "confidence": 0.9846907258033752, "cells": [{"id": 6, "text": "This chapter illustrates the Row and Column Access Control (RCAC) concepts using a ", "bbox": {"l": 136.8, "t": 379.72873, "r": 520.66241, "b": 388.94171000000006, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "banking example. Appendix A, \u201cDatabase definitions for the RCAC banking example\u201d on ", "bbox": {"l": 136.80002, "t": 391.72855, "r": 527.6723, "b": 400.94153, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "page 121 provides a script that you can use to create all the database definitions or DDLs to ", "bbox": {"l": 136.80002, "t": 403.72836, "r": 546.15009, "b": 412.94135, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "re-create this RCAC example.", "bbox": {"l": 136.80002, "t": 415.72818, "r": 268.71228, "b": 424.94116, "coord_origin": "TOPLEFT"}}]}, "text": "This chapter illustrates the Row and Column Access Control (RCAC) concepts using a banking example. Appendix A, \u201cDatabase definitions for the RCAC banking example\u201d on page 121 provides a script that you can use to create all the database definitions or DDLs to re-create this RCAC example."}, {"label": "text", "id": 5, "page_no": 52, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.71417236328125, "t": 436.7104187011719, "r": 347.41214, "b": 447.06390380859375, "coord_origin": "TOPLEFT"}, "confidence": 0.922663152217865, "cells": [{"id": 10, "text": "The following topics are covered in this chapter:", "bbox": {"l": 136.80002, "t": 437.68799, "r": 347.41214, "b": 446.90097, "coord_origin": "TOPLEFT"}}]}, "text": "The following topics are covered in this chapter:"}, {"label": "list_item", "id": 6, "page_no": 52, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.7564697265625, "t": 453.9541320800781, "r": 392.97119, "b": 464.2275695800781, "coord_origin": "TOPLEFT"}, "confidence": 0.9471576809883118, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 454.87695, "r": 141.78001, "b": 463.65173, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Business requirements for the RCAC banking scenario", "bbox": {"l": 151.20018, "t": 454.72757, "r": 392.97119, "b": 463.94055, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Business requirements for the RCAC banking scenario"}, {"label": "list_item", "id": 7, "page_no": 52, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.56719970703125, "t": 465.5244445800781, "r": 368.54633, "b": 476.0690612792969, "coord_origin": "TOPLEFT"}, "confidence": 0.9392989873886108, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 466.87677, "r": 141.78001, "b": 475.65155, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Description of the users roles and responsibilities", "bbox": {"l": 151.20018, "t": 466.72739, "r": 368.54633, "b": 475.94037, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Description of the users roles and responsibilities"}, {"label": "list_item", "id": 8, "page_no": 52, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.7265167236328, "t": 478.0903625488281, "r": 261.45441, "b": 488.0649719238281, "coord_origin": "TOPLEFT"}, "confidence": 0.9472163915634155, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 478.87659, "r": 141.78001, "b": 487.65137, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Implementation of RCAC", "bbox": {"l": 151.20018, "t": 478.7272, "r": 261.45441, "b": 487.94019, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Implementation of RCAC"}, {"label": "text", "id": 9, "page_no": 52, "cluster": {"id": 9, "label": "text", "bbox": {"l": 500.39999, "t": 92.38893127441406, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.7300243973731995, "cells": [{"id": 17, "text": "4", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, "text": "4"}, {"label": "picture", "id": 10, "page_no": 52, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 32.17905807495117, "t": 70.60472106933594, "r": 238.82225036621094, "b": 238.14642333984375, "coord_origin": "TOPLEFT"}, "confidence": 0.7240587472915649, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 52, "cluster": {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 4.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4."}, {"label": "section_header", "id": 3, "page_no": 52, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 135.96546936035156, "t": 253.45413208007812, "r": 532.03375, "b": 340.89832, "coord_origin": "TOPLEFT"}, "confidence": 0.8815584778785706, "cells": [{"id": 3, "text": "Implementing Row and Column ", "bbox": {"l": 136.8, "t": 254.88635, "r": 532.03375, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Access Control: Banking ", "bbox": {"l": 136.8, "t": 285.84671, "r": 452.48553, "b": 309.8782, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "example", "bbox": {"l": 136.8, "t": 316.8668200000001, "r": 240.41341999999997, "b": 340.89832, "coord_origin": "TOPLEFT"}}]}, "text": "Implementing Row and Column Access Control: Banking example"}, {"label": "text", "id": 4, "page_no": 52, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.8340301513672, "t": 378.66455078125, "r": 546.15009, "b": 424.94116, "coord_origin": "TOPLEFT"}, "confidence": 0.9846907258033752, "cells": [{"id": 6, "text": "This chapter illustrates the Row and Column Access Control (RCAC) concepts using a ", "bbox": {"l": 136.8, "t": 379.72873, "r": 520.66241, "b": 388.94171000000006, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "banking example. Appendix A, \u201cDatabase definitions for the RCAC banking example\u201d on ", "bbox": {"l": 136.80002, "t": 391.72855, "r": 527.6723, "b": 400.94153, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "page 121 provides a script that you can use to create all the database definitions or DDLs to ", "bbox": {"l": 136.80002, "t": 403.72836, "r": 546.15009, "b": 412.94135, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "re-create this RCAC example.", "bbox": {"l": 136.80002, "t": 415.72818, "r": 268.71228, "b": 424.94116, "coord_origin": "TOPLEFT"}}]}, "text": "This chapter illustrates the Row and Column Access Control (RCAC) concepts using a banking example. Appendix A, \u201cDatabase definitions for the RCAC banking example\u201d on page 121 provides a script that you can use to create all the database definitions or DDLs to re-create this RCAC example."}, {"label": "text", "id": 5, "page_no": 52, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.71417236328125, "t": 436.7104187011719, "r": 347.41214, "b": 447.06390380859375, "coord_origin": "TOPLEFT"}, "confidence": 0.922663152217865, "cells": [{"id": 10, "text": "The following topics are covered in this chapter:", "bbox": {"l": 136.80002, "t": 437.68799, "r": 347.41214, "b": 446.90097, "coord_origin": "TOPLEFT"}}]}, "text": "The following topics are covered in this chapter:"}, {"label": "list_item", "id": 6, "page_no": 52, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.7564697265625, "t": 453.9541320800781, "r": 392.97119, "b": 464.2275695800781, "coord_origin": "TOPLEFT"}, "confidence": 0.9471576809883118, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 454.87695, "r": 141.78001, "b": 463.65173, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Business requirements for the RCAC banking scenario", "bbox": {"l": 151.20018, "t": 454.72757, "r": 392.97119, "b": 463.94055, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Business requirements for the RCAC banking scenario"}, {"label": "list_item", "id": 7, "page_no": 52, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.56719970703125, "t": 465.5244445800781, "r": 368.54633, "b": 476.0690612792969, "coord_origin": "TOPLEFT"}, "confidence": 0.9392989873886108, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 466.87677, "r": 141.78001, "b": 475.65155, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Description of the users roles and responsibilities", "bbox": {"l": 151.20018, "t": 466.72739, "r": 368.54633, "b": 475.94037, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Description of the users roles and responsibilities"}, {"label": "list_item", "id": 8, "page_no": 52, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.7265167236328, "t": 478.0903625488281, "r": 261.45441, "b": 488.0649719238281, "coord_origin": "TOPLEFT"}, "confidence": 0.9472163915634155, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 478.87659, "r": 141.78001, "b": 487.65137, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Implementation of RCAC", "bbox": {"l": 151.20018, "t": 478.7272, "r": 261.45441, "b": 487.94019, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Implementation of RCAC"}, {"label": "text", "id": 9, "page_no": 52, "cluster": {"id": 9, "label": "text", "bbox": {"l": 500.39999, "t": 92.38893127441406, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.7300243973731995, "cells": [{"id": 17, "text": "4", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, "text": "4"}, {"label": "picture", "id": 10, "page_no": 52, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 32.17905807495117, "t": 70.60472106933594, "r": 238.82225036621094, "b": 238.14642333984375, "coord_origin": "TOPLEFT"}, "confidence": 0.7240587472915649, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 52, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.681270599365234, "t": 754.6544799804688, "r": 257.24335, "b": 764.1611938476562, "coord_origin": "TOPLEFT"}, "confidence": 0.9473534226417542, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 52, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.5507202148438, "t": 754.1658325195312, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9108303189277649, "cells": [{"id": 1, "text": "37", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "37"}]}}, {"page_no": 53, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "38 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "4.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.199661, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Business requirements for the RCAC banking scenario", "bbox": {"l": 91.679573, "t": 74.34069999999997, "r": 512.55139, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "As part of a new internet banking project, the ", "bbox": {"l": 136.8, "t": 106.6087, "r": 338.47913, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Bank", "bbox": {"l": 338.34, "t": 106.08496000000002, "r": 360.88632, "b": 116.14269999999988, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": " decides to raise the level of data access ", "bbox": {"l": 360.95999, "t": 106.6087, "r": 543.10248, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "control on the following three tables that are involved in the new customer-facing application:", "bbox": {"l": 136.80023, "t": 118.60852, "r": 543.90033, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "GLYPH", "bbox": {"l": 136.80023, "t": 135.79749000000004, "r": 141.78023, "b": 144.57227, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CUSTOMERS", "bbox": {"l": 151.20039, "t": 135.64806999999996, "r": 214.60674, "b": 144.86108000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "GLYPH", "bbox": {"l": 136.80023, "t": 147.79729999999995, "r": 141.78023, "b": 156.57208000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ACCOUNTS", "bbox": {"l": 151.20039, "t": 147.64788999999996, "r": 206.64072, "b": 156.86090000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "GLYPH", "bbox": {"l": 136.80023, "t": 159.79711999999995, "r": 141.78023, "b": 168.57190000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "TRANSACTIONS", "bbox": {"l": 151.20039, "t": 159.64770999999996, "r": 229.18224, "b": 168.86072000000001, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "RCAC will be used to restrict access to the rows in these three tables by using permissions, ", "bbox": {"l": 136.80023, "t": 181.60748, "r": 543.45526, "b": 190.82050000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "and to restrict column values by using masks. The default position is that no user can access ", "bbox": {"l": 136.80023, "t": 193.6073, "r": 547.2746, "b": 202.82030999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "the rows in the tables. From there, specific bank employees are allowed access only to the ", "bbox": {"l": 136.80023, "t": 205.60712, "r": 537.76495, "b": 214.82012999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "rows for their job responsibilities. In addition, columns containing personal or sensitive data ", "bbox": {"l": 136.80023, "t": 217.60693000000003, "r": 540.32367, "b": 226.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "are masked appropriately. Bank customers are allowed access to only their rows and column ", "bbox": {"l": 136.80023, "t": 229.60675000000003, "r": 547.24182, "b": 238.81975999999997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "values.", "bbox": {"l": 136.80023, "t": 241.60657000000003, "r": 167.82861, "b": 250.81957999999997, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "In this example, it is assumed that the Bank employees have access to the tables when ", "bbox": {"l": 136.80023, "t": 263.62616, "r": 523.98511, "b": 272.83916999999997, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "working on the premises only. Employee access to data is provided by programs and tools ", "bbox": {"l": 136.80023, "t": 275.62598, "r": 536.96021, "b": 284.83899, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "using standard DB2 interfaces, such as embedded SQL, ODBC, JDBC, and CLI. The ", "bbox": {"l": 136.80025, "t": 287.62582000000003, "r": 514.68756, "b": 296.83881, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "database connection authentication for these interfaces uses the employee\u2019s personal and ", "bbox": {"l": 136.80025, "t": 299.62564, "r": 537.64044, "b": 308.83862, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "unique IBM i user profile. Operating in their professional role, employees do not have access ", "bbox": {"l": 136.80026, "t": 311.62546, "r": 546.85059, "b": 320.83844, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "to bank data through the Internet.", "bbox": {"l": 136.80026, "t": 323.62527, "r": 284.8855, "b": 332.83826, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Bank customers have access to their accounts and transactions by using a new web ", "bbox": {"l": 136.80026, "t": 345.64483999999993, "r": 511.27428999999995, "b": 354.85782, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "application. Each customer has unique credentials for logging in to the application. The ", "bbox": {"l": 136.80026, "t": 357.64465, "r": 523.22845, "b": 366.85764, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "authentication of the customer is handled by the web server. After the customer is ", "bbox": {"l": 136.80026, "t": 369.64447, "r": 500.01061999999996, "b": 378.85745, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "authenticated, the web server establishes a connection to DB2 for data access. This ", "bbox": {"l": 136.80026, "t": 381.64429, "r": 510.52930000000003, "b": 390.8572700000001, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "connection uses a common IBM i user profile that is known as WEBUSER. This user profile is ", "bbox": {"l": 136.80026, "t": 393.6441, "r": 547.27075, "b": 402.85709, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "secured and is used only by the web application. No Bank employee has access to the ", "bbox": {"l": 136.80026, "t": 405.64392, "r": 521.72943, "b": 414.85689999999994, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "WEBUSER profile, and no customer has an IBM i user profile.", "bbox": {"l": 136.80026, "t": 417.64374, "r": 410.31177, "b": 426.85672000000005, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "The customer\u2019s identity is passed to DB2 by using a global variable. The global variable is ", "bbox": {"l": 136.80026, "t": 439.60355, "r": 534.81372, "b": 448.81653, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "secured and can be accessed only by the WEBUSER. The web application sets the ", "bbox": {"l": 136.80026, "t": 451.60336, "r": 508.47058, "b": 460.81635, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "CUSTOMER_LOGIN_ID variable to the customer\u2019s login value. This value is compared to the ", "bbox": {"l": 136.80026, "t": 463.60318, "r": 547.21399, "b": 472.81616, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "customer\u2019s login value that is found in the CUSTOMER_LOGIN_ID column of the ", "bbox": {"l": 136.80025, "t": 475.603, "r": 496.51453, "b": 484.81598, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "CUSTOMERS table.", "bbox": {"l": 136.80025, "t": 487.60281, "r": 227.16434, "b": 496.8158, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Applications that do not use the web interface do not have to be changed because the global ", "bbox": {"l": 136.80025, "t": 509.62238, "r": 547.24298, "b": 518.83536, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "variable is NULL by default.", "bbox": {"l": 136.80025, "t": 521.62219, "r": 258.24353, "b": 530.8351700000001, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.15193939208984, "t": 754.482421875, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.917007327079773, "cells": [{"id": 0, "text": "38 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.28313446044922, "t": 754.71630859375, "r": 334.42142, "b": 763.9201049804688, "coord_origin": "TOPLEFT"}, "confidence": 0.948601484298706, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.15269470214844, "t": 73.28873443603516, "r": 512.55139, "b": 89.75958251953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9640912413597107, "cells": [{"id": 2, "text": "4.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.199661, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Business requirements for the RCAC banking scenario", "bbox": {"l": 91.679573, "t": 74.34069999999997, "r": 512.55139, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.70774841308594, "t": 105.93765258789062, "r": 543.90033, "b": 128.36497497558594, "coord_origin": "TOPLEFT"}, "confidence": 0.9784327745437622, "cells": [{"id": 4, "text": "As part of a new internet banking project, the ", "bbox": {"l": 136.8, "t": 106.6087, "r": 338.47913, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Bank", "bbox": {"l": 338.34, "t": 106.08496000000002, "r": 360.88632, "b": 116.14269999999988, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": " decides to raise the level of data access ", "bbox": {"l": 360.95999, "t": 106.6087, "r": 543.10248, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "control on the following three tables that are involved in the new customer-facing application:", "bbox": {"l": 136.80023, "t": 118.60852, "r": 543.90033, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 135.7441864013672, "t": 134.77182006835938, "r": 214.60674, "b": 144.86108000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9225907325744629, "cells": [{"id": 8, "text": "GLYPH", "bbox": {"l": 136.80023, "t": 135.79749000000004, "r": 141.78023, "b": 144.57227, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CUSTOMERS", "bbox": {"l": 151.20039, "t": 135.64806999999996, "r": 214.60674, "b": 144.86108000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 135.63128662109375, "t": 146.7830810546875, "r": 206.64072, "b": 156.86090000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.921238124370575, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.80023, "t": 147.79729999999995, "r": 141.78023, "b": 156.57208000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ACCOUNTS", "bbox": {"l": 151.20039, "t": 147.64788999999996, "r": 206.64072, "b": 156.86090000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.5100555419922, "t": 158.49131774902344, "r": 229.18224, "b": 168.86072000000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9183958172798157, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.80023, "t": 159.79711999999995, "r": 141.78023, "b": 168.57190000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "TRANSACTIONS", "bbox": {"l": 151.20039, "t": 159.64770999999996, "r": 229.18224, "b": 168.86072000000001, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 136.0419464111328, "t": 180.70614624023438, "r": 547.2746, "b": 250.81957999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9874840378761292, "cells": [{"id": 14, "text": "RCAC will be used to restrict access to the rows in these three tables by using permissions, ", "bbox": {"l": 136.80023, "t": 181.60748, "r": 543.45526, "b": 190.82050000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "and to restrict column values by using masks. The default position is that no user can access ", "bbox": {"l": 136.80023, "t": 193.6073, "r": 547.2746, "b": 202.82030999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "the rows in the tables. From there, specific bank employees are allowed access only to the ", "bbox": {"l": 136.80023, "t": 205.60712, "r": 537.76495, "b": 214.82012999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "rows for their job responsibilities. In addition, columns containing personal or sensitive data ", "bbox": {"l": 136.80023, "t": 217.60693000000003, "r": 540.32367, "b": 226.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "are masked appropriately. Bank customers are allowed access to only their rows and column ", "bbox": {"l": 136.80023, "t": 229.60675000000003, "r": 547.24182, "b": 238.81975999999997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "values.", "bbox": {"l": 136.80023, "t": 241.60657000000003, "r": 167.82861, "b": 250.81957999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 135.87716674804688, "t": 262.61517333984375, "r": 546.85059, "b": 333.1118469238281, "coord_origin": "TOPLEFT"}, "confidence": 0.9887834191322327, "cells": [{"id": 20, "text": "In this example, it is assumed that the Bank employees have access to the tables when ", "bbox": {"l": 136.80023, "t": 263.62616, "r": 523.98511, "b": 272.83916999999997, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "working on the premises only. Employee access to data is provided by programs and tools ", "bbox": {"l": 136.80023, "t": 275.62598, "r": 536.96021, "b": 284.83899, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "using standard DB2 interfaces, such as embedded SQL, ODBC, JDBC, and CLI. The ", "bbox": {"l": 136.80025, "t": 287.62582000000003, "r": 514.68756, "b": 296.83881, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "database connection authentication for these interfaces uses the employee\u2019s personal and ", "bbox": {"l": 136.80025, "t": 299.62564, "r": 537.64044, "b": 308.83862, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "unique IBM i user profile. Operating in their professional role, employees do not have access ", "bbox": {"l": 136.80026, "t": 311.62546, "r": 546.85059, "b": 320.83844, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "to bank data through the Internet.", "bbox": {"l": 136.80026, "t": 323.62527, "r": 284.8855, "b": 332.83826, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 135.72178649902344, "t": 344.7479553222656, "r": 547.27075, "b": 427.0599670410156, "coord_origin": "TOPLEFT"}, "confidence": 0.9884931445121765, "cells": [{"id": 26, "text": "Bank customers have access to their accounts and transactions by using a new web ", "bbox": {"l": 136.80026, "t": 345.64483999999993, "r": 511.27428999999995, "b": 354.85782, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "application. Each customer has unique credentials for logging in to the application. The ", "bbox": {"l": 136.80026, "t": 357.64465, "r": 523.22845, "b": 366.85764, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "authentication of the customer is handled by the web server. After the customer is ", "bbox": {"l": 136.80026, "t": 369.64447, "r": 500.01061999999996, "b": 378.85745, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "authenticated, the web server establishes a connection to DB2 for data access. This ", "bbox": {"l": 136.80026, "t": 381.64429, "r": 510.52930000000003, "b": 390.8572700000001, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "connection uses a common IBM i user profile that is known as WEBUSER. This user profile is ", "bbox": {"l": 136.80026, "t": 393.6441, "r": 547.27075, "b": 402.85709, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "secured and is used only by the web application. No Bank employee has access to the ", "bbox": {"l": 136.80026, "t": 405.64392, "r": 521.72943, "b": 414.85689999999994, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "WEBUSER profile, and no customer has an IBM i user profile.", "bbox": {"l": 136.80026, "t": 417.64374, "r": 410.31177, "b": 426.85672000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 135.73001098632812, "t": 438.89556884765625, "r": 547.21399, "b": 496.8158, "coord_origin": "TOPLEFT"}, "confidence": 0.9869483709335327, "cells": [{"id": 33, "text": "The customer\u2019s identity is passed to DB2 by using a global variable. The global variable is ", "bbox": {"l": 136.80026, "t": 439.60355, "r": 534.81372, "b": 448.81653, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "secured and can be accessed only by the WEBUSER. The web application sets the ", "bbox": {"l": 136.80026, "t": 451.60336, "r": 508.47058, "b": 460.81635, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "CUSTOMER_LOGIN_ID variable to the customer\u2019s login value. This value is compared to the ", "bbox": {"l": 136.80026, "t": 463.60318, "r": 547.21399, "b": 472.81616, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "customer\u2019s login value that is found in the CUSTOMER_LOGIN_ID column of the ", "bbox": {"l": 136.80025, "t": 475.603, "r": 496.51453, "b": 484.81598, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "CUSTOMERS table.", "bbox": {"l": 136.80025, "t": 487.60281, "r": 227.16434, "b": 496.8158, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 135.76414489746094, "t": 508.6873474121094, "r": 547.24298, "b": 530.8351700000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9792865514755249, "cells": [{"id": 38, "text": "Applications that do not use the web interface do not have to be changed because the global ", "bbox": {"l": 136.80025, "t": 509.62238, "r": 547.24298, "b": 518.83536, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "variable is NULL by default.", "bbox": {"l": 136.80025, "t": 521.62219, "r": 258.24353, "b": 530.8351700000001, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 53, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.15193939208984, "t": 754.482421875, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.917007327079773, "cells": [{"id": 0, "text": "38 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "38"}, {"label": "page_footer", "id": 1, "page_no": 53, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.28313446044922, "t": 754.71630859375, "r": 334.42142, "b": 763.9201049804688, "coord_origin": "TOPLEFT"}, "confidence": 0.948601484298706, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "section_header", "id": 2, "page_no": 53, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.15269470214844, "t": 73.28873443603516, "r": 512.55139, "b": 89.75958251953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9640912413597107, "cells": [{"id": 2, "text": "4.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.199661, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Business requirements for the RCAC banking scenario", "bbox": {"l": 91.679573, "t": 74.34069999999997, "r": 512.55139, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, "text": "4.1 Business requirements for the RCAC banking scenario"}, {"label": "text", "id": 3, "page_no": 53, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.70774841308594, "t": 105.93765258789062, "r": 543.90033, "b": 128.36497497558594, "coord_origin": "TOPLEFT"}, "confidence": 0.9784327745437622, "cells": [{"id": 4, "text": "As part of a new internet banking project, the ", "bbox": {"l": 136.8, "t": 106.6087, "r": 338.47913, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Bank", "bbox": {"l": 338.34, "t": 106.08496000000002, "r": 360.88632, "b": 116.14269999999988, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": " decides to raise the level of data access ", "bbox": {"l": 360.95999, "t": 106.6087, "r": 543.10248, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "control on the following three tables that are involved in the new customer-facing application:", "bbox": {"l": 136.80023, "t": 118.60852, "r": 543.90033, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}]}, "text": "As part of a new internet banking project, the Bank decides to raise the level of data access control on the following three tables that are involved in the new customer-facing application:"}, {"label": "list_item", "id": 4, "page_no": 53, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.7441864013672, "t": 134.77182006835938, "r": 214.60674, "b": 144.86108000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9225907325744629, "cells": [{"id": 8, "text": "GLYPH", "bbox": {"l": 136.80023, "t": 135.79749000000004, "r": 141.78023, "b": 144.57227, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CUSTOMERS", "bbox": {"l": 151.20039, "t": 135.64806999999996, "r": 214.60674, "b": 144.86108000000002, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH CUSTOMERS"}, {"label": "list_item", "id": 5, "page_no": 53, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.63128662109375, "t": 146.7830810546875, "r": 206.64072, "b": 156.86090000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.921238124370575, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.80023, "t": 147.79729999999995, "r": 141.78023, "b": 156.57208000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ACCOUNTS", "bbox": {"l": 151.20039, "t": 147.64788999999996, "r": 206.64072, "b": 156.86090000000002, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH ACCOUNTS"}, {"label": "list_item", "id": 6, "page_no": 53, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.5100555419922, "t": 158.49131774902344, "r": 229.18224, "b": 168.86072000000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9183958172798157, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.80023, "t": 159.79711999999995, "r": 141.78023, "b": 168.57190000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "TRANSACTIONS", "bbox": {"l": 151.20039, "t": 159.64770999999996, "r": 229.18224, "b": 168.86072000000001, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH TRANSACTIONS"}, {"label": "text", "id": 7, "page_no": 53, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.0419464111328, "t": 180.70614624023438, "r": 547.2746, "b": 250.81957999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9874840378761292, "cells": [{"id": 14, "text": "RCAC will be used to restrict access to the rows in these three tables by using permissions, ", "bbox": {"l": 136.80023, "t": 181.60748, "r": 543.45526, "b": 190.82050000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "and to restrict column values by using masks. The default position is that no user can access ", "bbox": {"l": 136.80023, "t": 193.6073, "r": 547.2746, "b": 202.82030999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "the rows in the tables. From there, specific bank employees are allowed access only to the ", "bbox": {"l": 136.80023, "t": 205.60712, "r": 537.76495, "b": 214.82012999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "rows for their job responsibilities. In addition, columns containing personal or sensitive data ", "bbox": {"l": 136.80023, "t": 217.60693000000003, "r": 540.32367, "b": 226.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "are masked appropriately. Bank customers are allowed access to only their rows and column ", "bbox": {"l": 136.80023, "t": 229.60675000000003, "r": 547.24182, "b": 238.81975999999997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "values.", "bbox": {"l": 136.80023, "t": 241.60657000000003, "r": 167.82861, "b": 250.81957999999997, "coord_origin": "TOPLEFT"}}]}, "text": "RCAC will be used to restrict access to the rows in these three tables by using permissions, and to restrict column values by using masks. The default position is that no user can access the rows in the tables. From there, specific bank employees are allowed access only to the rows for their job responsibilities. In addition, columns containing personal or sensitive data are masked appropriately. Bank customers are allowed access to only their rows and column values."}, {"label": "text", "id": 8, "page_no": 53, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.87716674804688, "t": 262.61517333984375, "r": 546.85059, "b": 333.1118469238281, "coord_origin": "TOPLEFT"}, "confidence": 0.9887834191322327, "cells": [{"id": 20, "text": "In this example, it is assumed that the Bank employees have access to the tables when ", "bbox": {"l": 136.80023, "t": 263.62616, "r": 523.98511, "b": 272.83916999999997, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "working on the premises only. Employee access to data is provided by programs and tools ", "bbox": {"l": 136.80023, "t": 275.62598, "r": 536.96021, "b": 284.83899, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "using standard DB2 interfaces, such as embedded SQL, ODBC, JDBC, and CLI. The ", "bbox": {"l": 136.80025, "t": 287.62582000000003, "r": 514.68756, "b": 296.83881, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "database connection authentication for these interfaces uses the employee\u2019s personal and ", "bbox": {"l": 136.80025, "t": 299.62564, "r": 537.64044, "b": 308.83862, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "unique IBM i user profile. Operating in their professional role, employees do not have access ", "bbox": {"l": 136.80026, "t": 311.62546, "r": 546.85059, "b": 320.83844, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "to bank data through the Internet.", "bbox": {"l": 136.80026, "t": 323.62527, "r": 284.8855, "b": 332.83826, "coord_origin": "TOPLEFT"}}]}, "text": "In this example, it is assumed that the Bank employees have access to the tables when working on the premises only. Employee access to data is provided by programs and tools using standard DB2 interfaces, such as embedded SQL, ODBC, JDBC, and CLI. The database connection authentication for these interfaces uses the employee\u2019s personal and unique IBM i user profile. Operating in their professional role, employees do not have access to bank data through the Internet."}, {"label": "text", "id": 9, "page_no": 53, "cluster": {"id": 9, "label": "text", "bbox": {"l": 135.72178649902344, "t": 344.7479553222656, "r": 547.27075, "b": 427.0599670410156, "coord_origin": "TOPLEFT"}, "confidence": 0.9884931445121765, "cells": [{"id": 26, "text": "Bank customers have access to their accounts and transactions by using a new web ", "bbox": {"l": 136.80026, "t": 345.64483999999993, "r": 511.27428999999995, "b": 354.85782, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "application. Each customer has unique credentials for logging in to the application. The ", "bbox": {"l": 136.80026, "t": 357.64465, "r": 523.22845, "b": 366.85764, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "authentication of the customer is handled by the web server. After the customer is ", "bbox": {"l": 136.80026, "t": 369.64447, "r": 500.01061999999996, "b": 378.85745, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "authenticated, the web server establishes a connection to DB2 for data access. This ", "bbox": {"l": 136.80026, "t": 381.64429, "r": 510.52930000000003, "b": 390.8572700000001, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "connection uses a common IBM i user profile that is known as WEBUSER. This user profile is ", "bbox": {"l": 136.80026, "t": 393.6441, "r": 547.27075, "b": 402.85709, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "secured and is used only by the web application. No Bank employee has access to the ", "bbox": {"l": 136.80026, "t": 405.64392, "r": 521.72943, "b": 414.85689999999994, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "WEBUSER profile, and no customer has an IBM i user profile.", "bbox": {"l": 136.80026, "t": 417.64374, "r": 410.31177, "b": 426.85672000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Bank customers have access to their accounts and transactions by using a new web application. Each customer has unique credentials for logging in to the application. The authentication of the customer is handled by the web server. After the customer is authenticated, the web server establishes a connection to DB2 for data access. This connection uses a common IBM i user profile that is known as WEBUSER. This user profile is secured and is used only by the web application. No Bank employee has access to the WEBUSER profile, and no customer has an IBM i user profile."}, {"label": "text", "id": 10, "page_no": 53, "cluster": {"id": 10, "label": "text", "bbox": {"l": 135.73001098632812, "t": 438.89556884765625, "r": 547.21399, "b": 496.8158, "coord_origin": "TOPLEFT"}, "confidence": 0.9869483709335327, "cells": [{"id": 33, "text": "The customer\u2019s identity is passed to DB2 by using a global variable. The global variable is ", "bbox": {"l": 136.80026, "t": 439.60355, "r": 534.81372, "b": 448.81653, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "secured and can be accessed only by the WEBUSER. The web application sets the ", "bbox": {"l": 136.80026, "t": 451.60336, "r": 508.47058, "b": 460.81635, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "CUSTOMER_LOGIN_ID variable to the customer\u2019s login value. This value is compared to the ", "bbox": {"l": 136.80026, "t": 463.60318, "r": 547.21399, "b": 472.81616, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "customer\u2019s login value that is found in the CUSTOMER_LOGIN_ID column of the ", "bbox": {"l": 136.80025, "t": 475.603, "r": 496.51453, "b": 484.81598, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "CUSTOMERS table.", "bbox": {"l": 136.80025, "t": 487.60281, "r": 227.16434, "b": 496.8158, "coord_origin": "TOPLEFT"}}]}, "text": "The customer\u2019s identity is passed to DB2 by using a global variable. The global variable is secured and can be accessed only by the WEBUSER. The web application sets the CUSTOMER_LOGIN_ID variable to the customer\u2019s login value. This value is compared to the customer\u2019s login value that is found in the CUSTOMER_LOGIN_ID column of the CUSTOMERS table."}, {"label": "text", "id": 11, "page_no": 53, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.76414489746094, "t": 508.6873474121094, "r": 547.24298, "b": 530.8351700000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9792865514755249, "cells": [{"id": 38, "text": "Applications that do not use the web interface do not have to be changed because the global ", "bbox": {"l": 136.80025, "t": 509.62238, "r": 547.24298, "b": 518.83536, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "variable is NULL by default.", "bbox": {"l": 136.80025, "t": 521.62219, "r": 258.24353, "b": 530.8351700000001, "coord_origin": "TOPLEFT"}}]}, "text": "Applications that do not use the web interface do not have to be changed because the global variable is NULL by default."}], "body": [{"label": "section_header", "id": 2, "page_no": 53, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.15269470214844, "t": 73.28873443603516, "r": 512.55139, "b": 89.75958251953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9640912413597107, "cells": [{"id": 2, "text": "4.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.199661, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Business requirements for the RCAC banking scenario", "bbox": {"l": 91.679573, "t": 74.34069999999997, "r": 512.55139, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, "text": "4.1 Business requirements for the RCAC banking scenario"}, {"label": "text", "id": 3, "page_no": 53, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.70774841308594, "t": 105.93765258789062, "r": 543.90033, "b": 128.36497497558594, "coord_origin": "TOPLEFT"}, "confidence": 0.9784327745437622, "cells": [{"id": 4, "text": "As part of a new internet banking project, the ", "bbox": {"l": 136.8, "t": 106.6087, "r": 338.47913, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Bank", "bbox": {"l": 338.34, "t": 106.08496000000002, "r": 360.88632, "b": 116.14269999999988, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": " decides to raise the level of data access ", "bbox": {"l": 360.95999, "t": 106.6087, "r": 543.10248, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "control on the following three tables that are involved in the new customer-facing application:", "bbox": {"l": 136.80023, "t": 118.60852, "r": 543.90033, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}]}, "text": "As part of a new internet banking project, the Bank decides to raise the level of data access control on the following three tables that are involved in the new customer-facing application:"}, {"label": "list_item", "id": 4, "page_no": 53, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.7441864013672, "t": 134.77182006835938, "r": 214.60674, "b": 144.86108000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9225907325744629, "cells": [{"id": 8, "text": "GLYPH", "bbox": {"l": 136.80023, "t": 135.79749000000004, "r": 141.78023, "b": 144.57227, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CUSTOMERS", "bbox": {"l": 151.20039, "t": 135.64806999999996, "r": 214.60674, "b": 144.86108000000002, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH CUSTOMERS"}, {"label": "list_item", "id": 5, "page_no": 53, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.63128662109375, "t": 146.7830810546875, "r": 206.64072, "b": 156.86090000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.921238124370575, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.80023, "t": 147.79729999999995, "r": 141.78023, "b": 156.57208000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ACCOUNTS", "bbox": {"l": 151.20039, "t": 147.64788999999996, "r": 206.64072, "b": 156.86090000000002, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH ACCOUNTS"}, {"label": "list_item", "id": 6, "page_no": 53, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.5100555419922, "t": 158.49131774902344, "r": 229.18224, "b": 168.86072000000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9183958172798157, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.80023, "t": 159.79711999999995, "r": 141.78023, "b": 168.57190000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "TRANSACTIONS", "bbox": {"l": 151.20039, "t": 159.64770999999996, "r": 229.18224, "b": 168.86072000000001, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH TRANSACTIONS"}, {"label": "text", "id": 7, "page_no": 53, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.0419464111328, "t": 180.70614624023438, "r": 547.2746, "b": 250.81957999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9874840378761292, "cells": [{"id": 14, "text": "RCAC will be used to restrict access to the rows in these three tables by using permissions, ", "bbox": {"l": 136.80023, "t": 181.60748, "r": 543.45526, "b": 190.82050000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "and to restrict column values by using masks. The default position is that no user can access ", "bbox": {"l": 136.80023, "t": 193.6073, "r": 547.2746, "b": 202.82030999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "the rows in the tables. From there, specific bank employees are allowed access only to the ", "bbox": {"l": 136.80023, "t": 205.60712, "r": 537.76495, "b": 214.82012999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "rows for their job responsibilities. In addition, columns containing personal or sensitive data ", "bbox": {"l": 136.80023, "t": 217.60693000000003, "r": 540.32367, "b": 226.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "are masked appropriately. Bank customers are allowed access to only their rows and column ", "bbox": {"l": 136.80023, "t": 229.60675000000003, "r": 547.24182, "b": 238.81975999999997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "values.", "bbox": {"l": 136.80023, "t": 241.60657000000003, "r": 167.82861, "b": 250.81957999999997, "coord_origin": "TOPLEFT"}}]}, "text": "RCAC will be used to restrict access to the rows in these three tables by using permissions, and to restrict column values by using masks. The default position is that no user can access the rows in the tables. From there, specific bank employees are allowed access only to the rows for their job responsibilities. In addition, columns containing personal or sensitive data are masked appropriately. Bank customers are allowed access to only their rows and column values."}, {"label": "text", "id": 8, "page_no": 53, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.87716674804688, "t": 262.61517333984375, "r": 546.85059, "b": 333.1118469238281, "coord_origin": "TOPLEFT"}, "confidence": 0.9887834191322327, "cells": [{"id": 20, "text": "In this example, it is assumed that the Bank employees have access to the tables when ", "bbox": {"l": 136.80023, "t": 263.62616, "r": 523.98511, "b": 272.83916999999997, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "working on the premises only. Employee access to data is provided by programs and tools ", "bbox": {"l": 136.80023, "t": 275.62598, "r": 536.96021, "b": 284.83899, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "using standard DB2 interfaces, such as embedded SQL, ODBC, JDBC, and CLI. The ", "bbox": {"l": 136.80025, "t": 287.62582000000003, "r": 514.68756, "b": 296.83881, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "database connection authentication for these interfaces uses the employee\u2019s personal and ", "bbox": {"l": 136.80025, "t": 299.62564, "r": 537.64044, "b": 308.83862, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "unique IBM i user profile. Operating in their professional role, employees do not have access ", "bbox": {"l": 136.80026, "t": 311.62546, "r": 546.85059, "b": 320.83844, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "to bank data through the Internet.", "bbox": {"l": 136.80026, "t": 323.62527, "r": 284.8855, "b": 332.83826, "coord_origin": "TOPLEFT"}}]}, "text": "In this example, it is assumed that the Bank employees have access to the tables when working on the premises only. Employee access to data is provided by programs and tools using standard DB2 interfaces, such as embedded SQL, ODBC, JDBC, and CLI. The database connection authentication for these interfaces uses the employee\u2019s personal and unique IBM i user profile. Operating in their professional role, employees do not have access to bank data through the Internet."}, {"label": "text", "id": 9, "page_no": 53, "cluster": {"id": 9, "label": "text", "bbox": {"l": 135.72178649902344, "t": 344.7479553222656, "r": 547.27075, "b": 427.0599670410156, "coord_origin": "TOPLEFT"}, "confidence": 0.9884931445121765, "cells": [{"id": 26, "text": "Bank customers have access to their accounts and transactions by using a new web ", "bbox": {"l": 136.80026, "t": 345.64483999999993, "r": 511.27428999999995, "b": 354.85782, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "application. Each customer has unique credentials for logging in to the application. The ", "bbox": {"l": 136.80026, "t": 357.64465, "r": 523.22845, "b": 366.85764, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "authentication of the customer is handled by the web server. After the customer is ", "bbox": {"l": 136.80026, "t": 369.64447, "r": 500.01061999999996, "b": 378.85745, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "authenticated, the web server establishes a connection to DB2 for data access. This ", "bbox": {"l": 136.80026, "t": 381.64429, "r": 510.52930000000003, "b": 390.8572700000001, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "connection uses a common IBM i user profile that is known as WEBUSER. This user profile is ", "bbox": {"l": 136.80026, "t": 393.6441, "r": 547.27075, "b": 402.85709, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "secured and is used only by the web application. No Bank employee has access to the ", "bbox": {"l": 136.80026, "t": 405.64392, "r": 521.72943, "b": 414.85689999999994, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "WEBUSER profile, and no customer has an IBM i user profile.", "bbox": {"l": 136.80026, "t": 417.64374, "r": 410.31177, "b": 426.85672000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Bank customers have access to their accounts and transactions by using a new web application. Each customer has unique credentials for logging in to the application. The authentication of the customer is handled by the web server. After the customer is authenticated, the web server establishes a connection to DB2 for data access. This connection uses a common IBM i user profile that is known as WEBUSER. This user profile is secured and is used only by the web application. No Bank employee has access to the WEBUSER profile, and no customer has an IBM i user profile."}, {"label": "text", "id": 10, "page_no": 53, "cluster": {"id": 10, "label": "text", "bbox": {"l": 135.73001098632812, "t": 438.89556884765625, "r": 547.21399, "b": 496.8158, "coord_origin": "TOPLEFT"}, "confidence": 0.9869483709335327, "cells": [{"id": 33, "text": "The customer\u2019s identity is passed to DB2 by using a global variable. The global variable is ", "bbox": {"l": 136.80026, "t": 439.60355, "r": 534.81372, "b": 448.81653, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "secured and can be accessed only by the WEBUSER. The web application sets the ", "bbox": {"l": 136.80026, "t": 451.60336, "r": 508.47058, "b": 460.81635, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "CUSTOMER_LOGIN_ID variable to the customer\u2019s login value. This value is compared to the ", "bbox": {"l": 136.80026, "t": 463.60318, "r": 547.21399, "b": 472.81616, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "customer\u2019s login value that is found in the CUSTOMER_LOGIN_ID column of the ", "bbox": {"l": 136.80025, "t": 475.603, "r": 496.51453, "b": 484.81598, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "CUSTOMERS table.", "bbox": {"l": 136.80025, "t": 487.60281, "r": 227.16434, "b": 496.8158, "coord_origin": "TOPLEFT"}}]}, "text": "The customer\u2019s identity is passed to DB2 by using a global variable. The global variable is secured and can be accessed only by the WEBUSER. The web application sets the CUSTOMER_LOGIN_ID variable to the customer\u2019s login value. This value is compared to the customer\u2019s login value that is found in the CUSTOMER_LOGIN_ID column of the CUSTOMERS table."}, {"label": "text", "id": 11, "page_no": 53, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.76414489746094, "t": 508.6873474121094, "r": 547.24298, "b": 530.8351700000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9792865514755249, "cells": [{"id": 38, "text": "Applications that do not use the web interface do not have to be changed because the global ", "bbox": {"l": 136.80025, "t": 509.62238, "r": 547.24298, "b": 518.83536, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "variable is NULL by default.", "bbox": {"l": 136.80025, "t": 521.62219, "r": 258.24353, "b": 530.8351700000001, "coord_origin": "TOPLEFT"}}]}, "text": "Applications that do not use the web interface do not have to be changed because the global variable is NULL by default."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 53, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.15193939208984, "t": 754.482421875, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.917007327079773, "cells": [{"id": 0, "text": "38 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "38"}, {"label": "page_footer", "id": 1, "page_no": 53, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.28313446044922, "t": 754.71630859375, "r": 334.42142, "b": 763.9201049804688, "coord_origin": "TOPLEFT"}, "confidence": 0.948601484298706, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 54, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "39", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "A diagram of the internet banking architecture is shown in Figure 4-1:", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 442.27869, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "GLYPH", "bbox": {"l": 136.79959, "t": 88.63823999999988, "r": 141.77959, "b": 97.41301999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "The row permission and column masks for the CUSTOMERS table are based on the ", "bbox": {"l": 151.19975, "t": 88.48883000000001, "r": 526.37085, "b": 97.70183999999995, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "group of which the user profile is part. If the user is a customer, their specific login ID also ", "bbox": {"l": 151.19975, "t": 100.48865, "r": 547.35461, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "is tested.", "bbox": {"l": 151.19975, "t": 112.48845999999992, "r": 191.15727, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "GLYPH", "bbox": {"l": 136.79959, "t": 129.67742999999996, "r": 141.77959, "b": 138.45221000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "The row permission and column mask for the ACCOUNTS table are based on the ", "bbox": {"l": 151.19975, "t": 129.52801999999997, "r": 513.82544, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CUSTOMERS table permission rules. A subquery is used to connect the accounts (child) ", "bbox": {"l": 151.19975, "t": 141.52783, "r": 546.73322, "b": 150.74084000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "with the customer (parent).", "bbox": {"l": 151.19975, "t": 153.52765, "r": 270.1192, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "GLYPH", "bbox": {"l": 136.79959, "t": 170.65686000000005, "r": 141.77959, "b": 179.43164000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "The row permission for the TRANSACTIONS table is based on the ACCOUNTS table ", "bbox": {"l": 151.19975, "t": 170.50744999999995, "r": 530.51343, "b": 179.72046, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "permission rules and the CUSTOMERS table permission rules. A subquery is used to ", "bbox": {"l": 151.19975, "t": 182.50725999999997, "r": 531.53522, "b": 191.72028, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "connect the transactions (child) with the account (parent) and the account (child) with the ", "bbox": {"l": 151.19975, "t": 194.50707999999997, "r": 546.22345, "b": 203.72009000000003, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "customer (parent).", "bbox": {"l": 151.19975, "t": 206.50689999999997, "r": 232.83888, "b": 215.71991000000003, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Figure 4-1 Internet banking example", "bbox": {"l": 136.8, "t": 490.0379, "r": 286.07849, "b": 498.36292, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "4.2", "bbox": {"l": 64.800003, "t": 526.74072, "r": 87.239075, "b": 541.5037199999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Description of the users roles and responsibilities", "bbox": {"l": 91.726906, "t": 526.74072, "r": 475.69338999999997, "b": 541.5037199999999, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "During the requirements gathering phase, the following groups of users are identified and ", "bbox": {"l": 136.8, "t": 559.0086200000001, "r": 533.13452, "b": 568.22162, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "codified:", "bbox": {"l": 136.8, "t": 571.00842, "r": 173.99463, "b": 580.22142, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "GLYPH", "bbox": {"l": 136.8, "t": 588.19739, "r": 141.78, "b": 596.97214, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "SECURITY: Security officer and security administrators", "bbox": {"l": 151.20016, "t": 588.04799, "r": 395.10461, "b": 597.26099, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "GLYPH", "bbox": {"l": 136.8, "t": 600.19719, "r": 141.78, "b": 608.97194, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "DBE: Database engineers", "bbox": {"l": 151.20016, "t": 600.04779, "r": 266.76602, "b": 609.26079, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "GLYPH", "bbox": {"l": 136.8, "t": 612.19699, "r": 141.78, "b": 620.97174, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ADMIN: Bank business administrators", "bbox": {"l": 151.20016, "t": 612.04759, "r": 319.24329, "b": 621.26059, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "GLYPH", "bbox": {"l": 136.8, "t": 624.19679, "r": 141.78, "b": 632.97154, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "TELLER: Bank tellers", "bbox": {"l": 151.20016, "t": 624.04739, "r": 246.76636000000002, "b": 633.26039, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "GLYPH", "bbox": {"l": 136.8, "t": 636.19659, "r": 141.78, "b": 644.97134, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CUSTOMER: Bank customers using the internet", "bbox": {"l": 151.20016, "t": 636.0472, "r": 364.8681, "b": 645.26019, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "GLYPH", "bbox": {"l": 136.8, "t": 648.1964, "r": 141.78, "b": 656.97115, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "PUBLIC: Anyone not already in a group", "bbox": {"l": 151.20016, "t": 648.047, "r": 325.77802, "b": 657.25999, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Internet Banking Architecture", "bbox": {"l": 226.85941, "t": 237.95349, "r": 404.97986, "b": 250.65490999999997, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Web app sets global variable to user\u0092s login ID value", "bbox": {"l": 269.82669, "t": 277.10919, "r": 467.91561999999993, "b": 285.00751, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Web", "bbox": {"l": 283.75961, "t": 342.39901999999995, "r": 310.64789, "b": 354.69406000000004, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Server", "bbox": {"l": 278.34604, "t": 359.62216, "r": 316.58282, "b": 371.91720999999995, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "DB2", "bbox": {"l": 429.82370000000003, "t": 342.39901999999995, "r": 454.2041300000001, "b": 354.69406000000004, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Server", "bbox": {"l": 422.90341, "t": 359.62216, "r": 461.1402, "b": 371.91720999999995, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "LOGIN_ID", "bbox": {"l": 213.3264, "t": 346.5273700000001, "r": 250.46141, "b": 354.42569, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Authentication", "bbox": {"l": 204.0994, "t": 357.59979, "r": 259.81662, "b": 365.48889, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "\u0093", "bbox": {"l": 345.9191, "t": 347.57309, "r": 349.77597, "b": 355.46218999999996, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "WEBUSER", "bbox": {"l": 349.7944, "t": 347.57309, "r": 387.90744, "b": 355.47141, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "\u0094", "bbox": {"l": 387.9021, "t": 347.57309, "r": 391.75897, "b": 355.46218999999996, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "DB Connection", "bbox": {"l": 340.99799, "t": 358.64557, "r": 396.67065, "b": 366.53467, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Customer", "bbox": {"l": 141.8476, "t": 387.90149, "r": 191.04857, "b": 398.43259, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "All online banking", "bbox": {"l": 402.66541, "t": 412.43927, "r": 471.38903999999997, "b": 420.33759, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Only web server", "bbox": {"l": 261.18411, "t": 412.43927, "r": 323.3584, "b": 420.33759, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "All online banking ", "bbox": {"l": 402.66541, "t": 412.43927, "r": 473.3999, "b": 420.33759, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "customers run ", "bbox": {"l": 402.66571, "t": 423.51166, "r": 459.16913, "b": 431.40996999999993, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "database transactions ", "bbox": {"l": 402.66571, "t": 434.58405, "r": 488.49249, "b": 442.48236, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "with WEBUSER profile", "bbox": {"l": 402.66571, "t": 445.65643, "r": 487.45444000000003, "b": 453.55475, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Only web server ", "bbox": {"l": 261.18411, "t": 412.43927, "r": 325.42889, "b": 420.33759, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "understands true ", "bbox": {"l": 261.18405, "t": 423.51166, "r": 328.80505, "b": 431.40996999999993, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "identity of online ", "bbox": {"l": 261.18405, "t": 434.58405, "r": 328.98499, "b": 442.48236, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "banking customer ", "bbox": {"l": 261.18405, "t": 445.65643, "r": 331.50668, "b": 453.55475, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "CUSTOMER_LOGIN_ID variable used to validate RCAC", "bbox": {"l": 267.12009, "t": 470.87717, "r": 470.52832, "b": 478.77548, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 214.27481079101562, "t": 754.7271118164062, "r": 523.59357, "b": 763.9805908203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9535647034645081, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.5966186523438, "t": 754.2191772460938, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9146284461021423, "cells": [{"id": 1, "text": "39", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.5806884765625, "t": 70.6917953491211, "r": 442.27869, "b": 81.22028350830078, "coord_origin": "TOPLEFT"}, "confidence": 0.883094310760498, "cells": [{"id": 2, "text": "A diagram of the internet banking architecture is shown in Figure 4-1:", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 442.27869, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "list_item", "bbox": {"l": 135.6310577392578, "t": 87.42381286621094, "r": 547.35461, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9767823815345764, "cells": [{"id": 3, "text": "GLYPH", "bbox": {"l": 136.79959, "t": 88.63823999999988, "r": 141.77959, "b": 97.41301999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "The row permission and column masks for the CUSTOMERS table are based on the ", "bbox": {"l": 151.19975, "t": 88.48883000000001, "r": 526.37085, "b": 97.70183999999995, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "group of which the user profile is part. If the user is a customer, their specific login ID also ", "bbox": {"l": 151.19975, "t": 100.48865, "r": 547.35461, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "is tested.", "bbox": {"l": 151.19975, "t": 112.48845999999992, "r": 191.15727, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 135.43284606933594, "t": 128.3446044921875, "r": 546.73322, "b": 162.75404357910156, "coord_origin": "TOPLEFT"}, "confidence": 0.9813671708106995, "cells": [{"id": 7, "text": "GLYPH", "bbox": {"l": 136.79959, "t": 129.67742999999996, "r": 141.77959, "b": 138.45221000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "The row permission and column mask for the ACCOUNTS table are based on the ", "bbox": {"l": 151.19975, "t": 129.52801999999997, "r": 513.82544, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CUSTOMERS table permission rules. A subquery is used to connect the accounts (child) ", "bbox": {"l": 151.19975, "t": 141.52783, "r": 546.73322, "b": 150.74084000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "with the customer (parent).", "bbox": {"l": 151.19975, "t": 153.52765, "r": 270.1192, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 135.4942169189453, "t": 169.17440795898438, "r": 546.22345, "b": 215.9951171875, "coord_origin": "TOPLEFT"}, "confidence": 0.9838805794715881, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.79959, "t": 170.65686000000005, "r": 141.77959, "b": 179.43164000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "The row permission for the TRANSACTIONS table is based on the ACCOUNTS table ", "bbox": {"l": 151.19975, "t": 170.50744999999995, "r": 530.51343, "b": 179.72046, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "permission rules and the CUSTOMERS table permission rules. A subquery is used to ", "bbox": {"l": 151.19975, "t": 182.50725999999997, "r": 531.53522, "b": 191.72028, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "connect the transactions (child) with the account (parent) and the account (child) with the ", "bbox": {"l": 151.19975, "t": 194.50707999999997, "r": 546.22345, "b": 203.72009000000003, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "customer (parent).", "bbox": {"l": 151.19975, "t": 206.50689999999997, "r": 232.83888, "b": 215.71991000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "caption", "bbox": {"l": 136.07473754882812, "t": 489.646728515625, "r": 286.37646484375, "b": 498.6321105957031, "coord_origin": "TOPLEFT"}, "confidence": 0.9487526416778564, "cells": [{"id": 16, "text": "Figure 4-1 Internet banking example", "bbox": {"l": 136.8, "t": 490.0379, "r": 286.07849, "b": 498.36292, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "section_header", "bbox": {"l": 64.41133880615234, "t": 525.37890625, "r": 475.69338999999997, "b": 541.5180053710938, "coord_origin": "TOPLEFT"}, "confidence": 0.9669509530067444, "cells": [{"id": 17, "text": "4.2", "bbox": {"l": 64.800003, "t": 526.74072, "r": 87.239075, "b": 541.5037199999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Description of the users roles and responsibilities", "bbox": {"l": 91.726906, "t": 526.74072, "r": 475.69338999999997, "b": 541.5037199999999, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 135.86761474609375, "t": 557.9774169921875, "r": 533.13452, "b": 580.22142, "coord_origin": "TOPLEFT"}, "confidence": 0.9649704694747925, "cells": [{"id": 19, "text": "During the requirements gathering phase, the following groups of users are identified and ", "bbox": {"l": 136.8, "t": 559.0086200000001, "r": 533.13452, "b": 568.22162, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "codified:", "bbox": {"l": 136.8, "t": 571.00842, "r": 173.99463, "b": 580.22142, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.75192260742188, "t": 587.4430541992188, "r": 395.10461, "b": 597.5853881835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9487041234970093, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.8, "t": 588.19739, "r": 141.78, "b": 596.97214, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "SECURITY: Security officer and security administrators", "bbox": {"l": 151.20016, "t": 588.04799, "r": 395.10461, "b": 597.26099, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 135.67442321777344, "t": 599.6355590820312, "r": 266.76602, "b": 609.8877563476562, "coord_origin": "TOPLEFT"}, "confidence": 0.9388520121574402, "cells": [{"id": 23, "text": "GLYPH", "bbox": {"l": 136.8, "t": 600.19719, "r": 141.78, "b": 608.97194, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "DBE: Database engineers", "bbox": {"l": 151.20016, "t": 600.04779, "r": 266.76602, "b": 609.26079, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 135.70191955566406, "t": 611.2393188476562, "r": 319.24329, "b": 621.26059, "coord_origin": "TOPLEFT"}, "confidence": 0.9382083415985107, "cells": [{"id": 25, "text": "GLYPH", "bbox": {"l": 136.8, "t": 612.19699, "r": 141.78, "b": 620.97174, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ADMIN: Bank business administrators", "bbox": {"l": 151.20016, "t": 612.04759, "r": 319.24329, "b": 621.26059, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "list_item", "bbox": {"l": 135.53024291992188, "t": 623.206787109375, "r": 246.76636000000002, "b": 633.26039, "coord_origin": "TOPLEFT"}, "confidence": 0.9220486879348755, "cells": [{"id": 27, "text": "GLYPH", "bbox": {"l": 136.8, "t": 624.19679, "r": 141.78, "b": 632.97154, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "TELLER: Bank tellers", "bbox": {"l": 151.20016, "t": 624.04739, "r": 246.76636000000002, "b": 633.26039, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "list_item", "bbox": {"l": 135.38711547851562, "t": 635.4190673828125, "r": 365.1325378417969, "b": 645.393798828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9496619701385498, "cells": [{"id": 29, "text": "GLYPH", "bbox": {"l": 136.8, "t": 636.19659, "r": 141.78, "b": 644.97134, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CUSTOMER: Bank customers using the internet", "bbox": {"l": 151.20016, "t": 636.0472, "r": 364.8681, "b": 645.26019, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "list_item", "bbox": {"l": 135.63414001464844, "t": 647.4161987304688, "r": 325.77802, "b": 657.5957641601562, "coord_origin": "TOPLEFT"}, "confidence": 0.9528717994689941, "cells": [{"id": 31, "text": "GLYPH", "bbox": {"l": 136.8, "t": 648.1964, "r": 141.78, "b": 656.97115, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "PUBLIC: Anyone not already in a group", "bbox": {"l": 151.20016, "t": 648.047, "r": 325.77802, "b": 657.25999, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "picture", "bbox": {"l": 136.02655029296875, "t": 229.7416229248047, "r": 494.36669921875, "b": 487.56256103515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9840942025184631, "cells": [{"id": 33, "text": "Internet Banking Architecture", "bbox": {"l": 226.85941, "t": 237.95349, "r": 404.97986, "b": 250.65490999999997, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Web app sets global variable to user\u0092s login ID value", "bbox": {"l": 269.82669, "t": 277.10919, "r": 467.91561999999993, "b": 285.00751, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Web", "bbox": {"l": 283.75961, "t": 342.39901999999995, "r": 310.64789, "b": 354.69406000000004, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Server", "bbox": {"l": 278.34604, "t": 359.62216, "r": 316.58282, "b": 371.91720999999995, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "DB2", "bbox": {"l": 429.82370000000003, "t": 342.39901999999995, "r": 454.2041300000001, "b": 354.69406000000004, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Server", "bbox": {"l": 422.90341, "t": 359.62216, "r": 461.1402, "b": 371.91720999999995, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "LOGIN_ID", "bbox": {"l": 213.3264, "t": 346.5273700000001, "r": 250.46141, "b": 354.42569, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Authentication", "bbox": {"l": 204.0994, "t": 357.59979, "r": 259.81662, "b": 365.48889, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "\u0093", "bbox": {"l": 345.9191, "t": 347.57309, "r": 349.77597, "b": 355.46218999999996, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "WEBUSER", "bbox": {"l": 349.7944, "t": 347.57309, "r": 387.90744, "b": 355.47141, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "\u0094", "bbox": {"l": 387.9021, "t": 347.57309, "r": 391.75897, "b": 355.46218999999996, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "DB Connection", "bbox": {"l": 340.99799, "t": 358.64557, "r": 396.67065, "b": 366.53467, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Customer", "bbox": {"l": 141.8476, "t": 387.90149, "r": 191.04857, "b": 398.43259, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "All online banking", "bbox": {"l": 402.66541, "t": 412.43927, "r": 471.38903999999997, "b": 420.33759, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Only web server", "bbox": {"l": 261.18411, "t": 412.43927, "r": 323.3584, "b": 420.33759, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "All online banking ", "bbox": {"l": 402.66541, "t": 412.43927, "r": 473.3999, "b": 420.33759, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "customers run ", "bbox": {"l": 402.66571, "t": 423.51166, "r": 459.16913, "b": 431.40996999999993, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "database transactions ", "bbox": {"l": 402.66571, "t": 434.58405, "r": 488.49249, "b": 442.48236, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "with WEBUSER profile", "bbox": {"l": 402.66571, "t": 445.65643, "r": 487.45444000000003, "b": 453.55475, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Only web server ", "bbox": {"l": 261.18411, "t": 412.43927, "r": 325.42889, "b": 420.33759, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "understands true ", "bbox": {"l": 261.18405, "t": 423.51166, "r": 328.80505, "b": 431.40996999999993, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "identity of online ", "bbox": {"l": 261.18405, "t": 434.58405, "r": 328.98499, "b": 442.48236, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "banking customer ", "bbox": {"l": 261.18405, "t": 445.65643, "r": 331.50668, "b": 453.55475, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "CUSTOMER_LOGIN_ID variable used to validate RCAC", "bbox": {"l": 267.12009, "t": 470.87717, "r": 470.52832, "b": 478.77548, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 54, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.27481079101562, "t": 754.7271118164062, "r": 523.59357, "b": 763.9805908203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9535647034645081, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 54, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.5966186523438, "t": 754.2191772460938, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9146284461021423, "cells": [{"id": 1, "text": "39", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "39"}, {"label": "text", "id": 2, "page_no": 54, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.5806884765625, "t": 70.6917953491211, "r": 442.27869, "b": 81.22028350830078, "coord_origin": "TOPLEFT"}, "confidence": 0.883094310760498, "cells": [{"id": 2, "text": "A diagram of the internet banking architecture is shown in Figure 4-1:", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 442.27869, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}]}, "text": "A diagram of the internet banking architecture is shown in Figure 4-1:"}, {"label": "list_item", "id": 3, "page_no": 54, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 135.6310577392578, "t": 87.42381286621094, "r": 547.35461, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9767823815345764, "cells": [{"id": 3, "text": "GLYPH", "bbox": {"l": 136.79959, "t": 88.63823999999988, "r": 141.77959, "b": 97.41301999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "The row permission and column masks for the CUSTOMERS table are based on the ", "bbox": {"l": 151.19975, "t": 88.48883000000001, "r": 526.37085, "b": 97.70183999999995, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "group of which the user profile is part. If the user is a customer, their specific login ID also ", "bbox": {"l": 151.19975, "t": 100.48865, "r": 547.35461, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "is tested.", "bbox": {"l": 151.19975, "t": 112.48845999999992, "r": 191.15727, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The row permission and column masks for the CUSTOMERS table are based on the group of which the user profile is part. If the user is a customer, their specific login ID also is tested."}, {"label": "list_item", "id": 4, "page_no": 54, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.43284606933594, "t": 128.3446044921875, "r": 546.73322, "b": 162.75404357910156, "coord_origin": "TOPLEFT"}, "confidence": 0.9813671708106995, "cells": [{"id": 7, "text": "GLYPH", "bbox": {"l": 136.79959, "t": 129.67742999999996, "r": 141.77959, "b": 138.45221000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "The row permission and column mask for the ACCOUNTS table are based on the ", "bbox": {"l": 151.19975, "t": 129.52801999999997, "r": 513.82544, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CUSTOMERS table permission rules. A subquery is used to connect the accounts (child) ", "bbox": {"l": 151.19975, "t": 141.52783, "r": 546.73322, "b": 150.74084000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "with the customer (parent).", "bbox": {"l": 151.19975, "t": 153.52765, "r": 270.1192, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The row permission and column mask for the ACCOUNTS table are based on the CUSTOMERS table permission rules. A subquery is used to connect the accounts (child) with the customer (parent)."}, {"label": "list_item", "id": 5, "page_no": 54, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.4942169189453, "t": 169.17440795898438, "r": 546.22345, "b": 215.9951171875, "coord_origin": "TOPLEFT"}, "confidence": 0.9838805794715881, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.79959, "t": 170.65686000000005, "r": 141.77959, "b": 179.43164000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "The row permission for the TRANSACTIONS table is based on the ACCOUNTS table ", "bbox": {"l": 151.19975, "t": 170.50744999999995, "r": 530.51343, "b": 179.72046, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "permission rules and the CUSTOMERS table permission rules. A subquery is used to ", "bbox": {"l": 151.19975, "t": 182.50725999999997, "r": 531.53522, "b": 191.72028, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "connect the transactions (child) with the account (parent) and the account (child) with the ", "bbox": {"l": 151.19975, "t": 194.50707999999997, "r": 546.22345, "b": 203.72009000000003, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "customer (parent).", "bbox": {"l": 151.19975, "t": 206.50689999999997, "r": 232.83888, "b": 215.71991000000003, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The row permission for the TRANSACTIONS table is based on the ACCOUNTS table permission rules and the CUSTOMERS table permission rules. A subquery is used to connect the transactions (child) with the account (parent) and the account (child) with the customer (parent)."}, {"label": "caption", "id": 6, "page_no": 54, "cluster": {"id": 6, "label": "caption", "bbox": {"l": 136.07473754882812, "t": 489.646728515625, "r": 286.37646484375, "b": 498.6321105957031, "coord_origin": "TOPLEFT"}, "confidence": 0.9487526416778564, "cells": [{"id": 16, "text": "Figure 4-1 Internet banking example", "bbox": {"l": 136.8, "t": 490.0379, "r": 286.07849, "b": 498.36292, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-1 Internet banking example"}, {"label": "section_header", "id": 7, "page_no": 54, "cluster": {"id": 7, "label": "section_header", "bbox": {"l": 64.41133880615234, "t": 525.37890625, "r": 475.69338999999997, "b": 541.5180053710938, "coord_origin": "TOPLEFT"}, "confidence": 0.9669509530067444, "cells": [{"id": 17, "text": "4.2", "bbox": {"l": 64.800003, "t": 526.74072, "r": 87.239075, "b": 541.5037199999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Description of the users roles and responsibilities", "bbox": {"l": 91.726906, "t": 526.74072, "r": 475.69338999999997, "b": 541.5037199999999, "coord_origin": "TOPLEFT"}}]}, "text": "4.2 Description of the users roles and responsibilities"}, {"label": "text", "id": 8, "page_no": 54, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.86761474609375, "t": 557.9774169921875, "r": 533.13452, "b": 580.22142, "coord_origin": "TOPLEFT"}, "confidence": 0.9649704694747925, "cells": [{"id": 19, "text": "During the requirements gathering phase, the following groups of users are identified and ", "bbox": {"l": 136.8, "t": 559.0086200000001, "r": 533.13452, "b": 568.22162, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "codified:", "bbox": {"l": 136.8, "t": 571.00842, "r": 173.99463, "b": 580.22142, "coord_origin": "TOPLEFT"}}]}, "text": "During the requirements gathering phase, the following groups of users are identified and codified:"}, {"label": "list_item", "id": 9, "page_no": 54, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.75192260742188, "t": 587.4430541992188, "r": 395.10461, "b": 597.5853881835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9487041234970093, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.8, "t": 588.19739, "r": 141.78, "b": 596.97214, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "SECURITY: Security officer and security administrators", "bbox": {"l": 151.20016, "t": 588.04799, "r": 395.10461, "b": 597.26099, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH SECURITY: Security officer and security administrators"}, {"label": "list_item", "id": 10, "page_no": 54, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.67442321777344, "t": 599.6355590820312, "r": 266.76602, "b": 609.8877563476562, "coord_origin": "TOPLEFT"}, "confidence": 0.9388520121574402, "cells": [{"id": 23, "text": "GLYPH", "bbox": {"l": 136.8, "t": 600.19719, "r": 141.78, "b": 608.97194, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "DBE: Database engineers", "bbox": {"l": 151.20016, "t": 600.04779, "r": 266.76602, "b": 609.26079, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH DBE: Database engineers"}, {"label": "list_item", "id": 11, "page_no": 54, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.70191955566406, "t": 611.2393188476562, "r": 319.24329, "b": 621.26059, "coord_origin": "TOPLEFT"}, "confidence": 0.9382083415985107, "cells": [{"id": 25, "text": "GLYPH", "bbox": {"l": 136.8, "t": 612.19699, "r": 141.78, "b": 620.97174, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ADMIN: Bank business administrators", "bbox": {"l": 151.20016, "t": 612.04759, "r": 319.24329, "b": 621.26059, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH ADMIN: Bank business administrators"}, {"label": "list_item", "id": 12, "page_no": 54, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 135.53024291992188, "t": 623.206787109375, "r": 246.76636000000002, "b": 633.26039, "coord_origin": "TOPLEFT"}, "confidence": 0.9220486879348755, "cells": [{"id": 27, "text": "GLYPH", "bbox": {"l": 136.8, "t": 624.19679, "r": 141.78, "b": 632.97154, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "TELLER: Bank tellers", "bbox": {"l": 151.20016, "t": 624.04739, "r": 246.76636000000002, "b": 633.26039, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH TELLER: Bank tellers"}, {"label": "list_item", "id": 13, "page_no": 54, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 135.38711547851562, "t": 635.4190673828125, "r": 365.1325378417969, "b": 645.393798828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9496619701385498, "cells": [{"id": 29, "text": "GLYPH", "bbox": {"l": 136.8, "t": 636.19659, "r": 141.78, "b": 644.97134, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CUSTOMER: Bank customers using the internet", "bbox": {"l": 151.20016, "t": 636.0472, "r": 364.8681, "b": 645.26019, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH CUSTOMER: Bank customers using the internet"}, {"label": "list_item", "id": 14, "page_no": 54, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 135.63414001464844, "t": 647.4161987304688, "r": 325.77802, "b": 657.5957641601562, "coord_origin": "TOPLEFT"}, "confidence": 0.9528717994689941, "cells": [{"id": 31, "text": "GLYPH", "bbox": {"l": 136.8, "t": 648.1964, "r": 141.78, "b": 656.97115, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "PUBLIC: Anyone not already in a group", "bbox": {"l": 151.20016, "t": 648.047, "r": 325.77802, "b": 657.25999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH PUBLIC: Anyone not already in a group"}, {"label": "picture", "id": 15, "page_no": 54, "cluster": {"id": 15, "label": "picture", "bbox": {"l": 136.02655029296875, "t": 229.7416229248047, "r": 494.36669921875, "b": 487.56256103515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9840942025184631, "cells": [{"id": 33, "text": "Internet Banking Architecture", "bbox": {"l": 226.85941, "t": 237.95349, "r": 404.97986, "b": 250.65490999999997, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Web app sets global variable to user\u0092s login ID value", "bbox": {"l": 269.82669, "t": 277.10919, "r": 467.91561999999993, "b": 285.00751, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Web", "bbox": {"l": 283.75961, "t": 342.39901999999995, "r": 310.64789, "b": 354.69406000000004, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Server", "bbox": {"l": 278.34604, "t": 359.62216, "r": 316.58282, "b": 371.91720999999995, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "DB2", "bbox": {"l": 429.82370000000003, "t": 342.39901999999995, "r": 454.2041300000001, "b": 354.69406000000004, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Server", "bbox": {"l": 422.90341, "t": 359.62216, "r": 461.1402, "b": 371.91720999999995, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "LOGIN_ID", "bbox": {"l": 213.3264, "t": 346.5273700000001, "r": 250.46141, "b": 354.42569, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Authentication", "bbox": {"l": 204.0994, "t": 357.59979, "r": 259.81662, "b": 365.48889, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "\u0093", "bbox": {"l": 345.9191, "t": 347.57309, "r": 349.77597, "b": 355.46218999999996, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "WEBUSER", "bbox": {"l": 349.7944, "t": 347.57309, "r": 387.90744, "b": 355.47141, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "\u0094", "bbox": {"l": 387.9021, "t": 347.57309, "r": 391.75897, "b": 355.46218999999996, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "DB Connection", "bbox": {"l": 340.99799, "t": 358.64557, "r": 396.67065, "b": 366.53467, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Customer", "bbox": {"l": 141.8476, "t": 387.90149, "r": 191.04857, "b": 398.43259, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "All online banking", "bbox": {"l": 402.66541, "t": 412.43927, "r": 471.38903999999997, "b": 420.33759, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Only web server", "bbox": {"l": 261.18411, "t": 412.43927, "r": 323.3584, "b": 420.33759, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "All online banking ", "bbox": {"l": 402.66541, "t": 412.43927, "r": 473.3999, "b": 420.33759, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "customers run ", "bbox": {"l": 402.66571, "t": 423.51166, "r": 459.16913, "b": 431.40996999999993, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "database transactions ", "bbox": {"l": 402.66571, "t": 434.58405, "r": 488.49249, "b": 442.48236, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "with WEBUSER profile", "bbox": {"l": 402.66571, "t": 445.65643, "r": 487.45444000000003, "b": 453.55475, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Only web server ", "bbox": {"l": 261.18411, "t": 412.43927, "r": 325.42889, "b": 420.33759, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "understands true ", "bbox": {"l": 261.18405, "t": 423.51166, "r": 328.80505, "b": 431.40996999999993, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "identity of online ", "bbox": {"l": 261.18405, "t": 434.58405, "r": 328.98499, "b": 442.48236, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "banking customer ", "bbox": {"l": 261.18405, "t": 445.65643, "r": 331.50668, "b": 453.55475, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "CUSTOMER_LOGIN_ID variable used to validate RCAC", "bbox": {"l": 267.12009, "t": 470.87717, "r": 470.52832, "b": 478.77548, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 54, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.5806884765625, "t": 70.6917953491211, "r": 442.27869, "b": 81.22028350830078, "coord_origin": "TOPLEFT"}, "confidence": 0.883094310760498, "cells": [{"id": 2, "text": "A diagram of the internet banking architecture is shown in Figure 4-1:", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 442.27869, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}]}, "text": "A diagram of the internet banking architecture is shown in Figure 4-1:"}, {"label": "list_item", "id": 3, "page_no": 54, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 135.6310577392578, "t": 87.42381286621094, "r": 547.35461, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9767823815345764, "cells": [{"id": 3, "text": "GLYPH", "bbox": {"l": 136.79959, "t": 88.63823999999988, "r": 141.77959, "b": 97.41301999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "The row permission and column masks for the CUSTOMERS table are based on the ", "bbox": {"l": 151.19975, "t": 88.48883000000001, "r": 526.37085, "b": 97.70183999999995, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "group of which the user profile is part. If the user is a customer, their specific login ID also ", "bbox": {"l": 151.19975, "t": 100.48865, "r": 547.35461, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "is tested.", "bbox": {"l": 151.19975, "t": 112.48845999999992, "r": 191.15727, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The row permission and column masks for the CUSTOMERS table are based on the group of which the user profile is part. If the user is a customer, their specific login ID also is tested."}, {"label": "list_item", "id": 4, "page_no": 54, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.43284606933594, "t": 128.3446044921875, "r": 546.73322, "b": 162.75404357910156, "coord_origin": "TOPLEFT"}, "confidence": 0.9813671708106995, "cells": [{"id": 7, "text": "GLYPH", "bbox": {"l": 136.79959, "t": 129.67742999999996, "r": 141.77959, "b": 138.45221000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "The row permission and column mask for the ACCOUNTS table are based on the ", "bbox": {"l": 151.19975, "t": 129.52801999999997, "r": 513.82544, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CUSTOMERS table permission rules. A subquery is used to connect the accounts (child) ", "bbox": {"l": 151.19975, "t": 141.52783, "r": 546.73322, "b": 150.74084000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "with the customer (parent).", "bbox": {"l": 151.19975, "t": 153.52765, "r": 270.1192, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The row permission and column mask for the ACCOUNTS table are based on the CUSTOMERS table permission rules. A subquery is used to connect the accounts (child) with the customer (parent)."}, {"label": "list_item", "id": 5, "page_no": 54, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.4942169189453, "t": 169.17440795898438, "r": 546.22345, "b": 215.9951171875, "coord_origin": "TOPLEFT"}, "confidence": 0.9838805794715881, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.79959, "t": 170.65686000000005, "r": 141.77959, "b": 179.43164000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "The row permission for the TRANSACTIONS table is based on the ACCOUNTS table ", "bbox": {"l": 151.19975, "t": 170.50744999999995, "r": 530.51343, "b": 179.72046, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "permission rules and the CUSTOMERS table permission rules. A subquery is used to ", "bbox": {"l": 151.19975, "t": 182.50725999999997, "r": 531.53522, "b": 191.72028, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "connect the transactions (child) with the account (parent) and the account (child) with the ", "bbox": {"l": 151.19975, "t": 194.50707999999997, "r": 546.22345, "b": 203.72009000000003, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "customer (parent).", "bbox": {"l": 151.19975, "t": 206.50689999999997, "r": 232.83888, "b": 215.71991000000003, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The row permission for the TRANSACTIONS table is based on the ACCOUNTS table permission rules and the CUSTOMERS table permission rules. A subquery is used to connect the transactions (child) with the account (parent) and the account (child) with the customer (parent)."}, {"label": "caption", "id": 6, "page_no": 54, "cluster": {"id": 6, "label": "caption", "bbox": {"l": 136.07473754882812, "t": 489.646728515625, "r": 286.37646484375, "b": 498.6321105957031, "coord_origin": "TOPLEFT"}, "confidence": 0.9487526416778564, "cells": [{"id": 16, "text": "Figure 4-1 Internet banking example", "bbox": {"l": 136.8, "t": 490.0379, "r": 286.07849, "b": 498.36292, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-1 Internet banking example"}, {"label": "section_header", "id": 7, "page_no": 54, "cluster": {"id": 7, "label": "section_header", "bbox": {"l": 64.41133880615234, "t": 525.37890625, "r": 475.69338999999997, "b": 541.5180053710938, "coord_origin": "TOPLEFT"}, "confidence": 0.9669509530067444, "cells": [{"id": 17, "text": "4.2", "bbox": {"l": 64.800003, "t": 526.74072, "r": 87.239075, "b": 541.5037199999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Description of the users roles and responsibilities", "bbox": {"l": 91.726906, "t": 526.74072, "r": 475.69338999999997, "b": 541.5037199999999, "coord_origin": "TOPLEFT"}}]}, "text": "4.2 Description of the users roles and responsibilities"}, {"label": "text", "id": 8, "page_no": 54, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.86761474609375, "t": 557.9774169921875, "r": 533.13452, "b": 580.22142, "coord_origin": "TOPLEFT"}, "confidence": 0.9649704694747925, "cells": [{"id": 19, "text": "During the requirements gathering phase, the following groups of users are identified and ", "bbox": {"l": 136.8, "t": 559.0086200000001, "r": 533.13452, "b": 568.22162, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "codified:", "bbox": {"l": 136.8, "t": 571.00842, "r": 173.99463, "b": 580.22142, "coord_origin": "TOPLEFT"}}]}, "text": "During the requirements gathering phase, the following groups of users are identified and codified:"}, {"label": "list_item", "id": 9, "page_no": 54, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.75192260742188, "t": 587.4430541992188, "r": 395.10461, "b": 597.5853881835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9487041234970093, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.8, "t": 588.19739, "r": 141.78, "b": 596.97214, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "SECURITY: Security officer and security administrators", "bbox": {"l": 151.20016, "t": 588.04799, "r": 395.10461, "b": 597.26099, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH SECURITY: Security officer and security administrators"}, {"label": "list_item", "id": 10, "page_no": 54, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.67442321777344, "t": 599.6355590820312, "r": 266.76602, "b": 609.8877563476562, "coord_origin": "TOPLEFT"}, "confidence": 0.9388520121574402, "cells": [{"id": 23, "text": "GLYPH", "bbox": {"l": 136.8, "t": 600.19719, "r": 141.78, "b": 608.97194, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "DBE: Database engineers", "bbox": {"l": 151.20016, "t": 600.04779, "r": 266.76602, "b": 609.26079, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH DBE: Database engineers"}, {"label": "list_item", "id": 11, "page_no": 54, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.70191955566406, "t": 611.2393188476562, "r": 319.24329, "b": 621.26059, "coord_origin": "TOPLEFT"}, "confidence": 0.9382083415985107, "cells": [{"id": 25, "text": "GLYPH", "bbox": {"l": 136.8, "t": 612.19699, "r": 141.78, "b": 620.97174, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ADMIN: Bank business administrators", "bbox": {"l": 151.20016, "t": 612.04759, "r": 319.24329, "b": 621.26059, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH ADMIN: Bank business administrators"}, {"label": "list_item", "id": 12, "page_no": 54, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 135.53024291992188, "t": 623.206787109375, "r": 246.76636000000002, "b": 633.26039, "coord_origin": "TOPLEFT"}, "confidence": 0.9220486879348755, "cells": [{"id": 27, "text": "GLYPH", "bbox": {"l": 136.8, "t": 624.19679, "r": 141.78, "b": 632.97154, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "TELLER: Bank tellers", "bbox": {"l": 151.20016, "t": 624.04739, "r": 246.76636000000002, "b": 633.26039, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH TELLER: Bank tellers"}, {"label": "list_item", "id": 13, "page_no": 54, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 135.38711547851562, "t": 635.4190673828125, "r": 365.1325378417969, "b": 645.393798828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9496619701385498, "cells": [{"id": 29, "text": "GLYPH", "bbox": {"l": 136.8, "t": 636.19659, "r": 141.78, "b": 644.97134, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CUSTOMER: Bank customers using the internet", "bbox": {"l": 151.20016, "t": 636.0472, "r": 364.8681, "b": 645.26019, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH CUSTOMER: Bank customers using the internet"}, {"label": "list_item", "id": 14, "page_no": 54, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 135.63414001464844, "t": 647.4161987304688, "r": 325.77802, "b": 657.5957641601562, "coord_origin": "TOPLEFT"}, "confidence": 0.9528717994689941, "cells": [{"id": 31, "text": "GLYPH", "bbox": {"l": 136.8, "t": 648.1964, "r": 141.78, "b": 656.97115, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "PUBLIC: Anyone not already in a group", "bbox": {"l": 151.20016, "t": 648.047, "r": 325.77802, "b": 657.25999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH PUBLIC: Anyone not already in a group"}, {"label": "picture", "id": 15, "page_no": 54, "cluster": {"id": 15, "label": "picture", "bbox": {"l": 136.02655029296875, "t": 229.7416229248047, "r": 494.36669921875, "b": 487.56256103515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9840942025184631, "cells": [{"id": 33, "text": "Internet Banking Architecture", "bbox": {"l": 226.85941, "t": 237.95349, "r": 404.97986, "b": 250.65490999999997, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Web app sets global variable to user\u0092s login ID value", "bbox": {"l": 269.82669, "t": 277.10919, "r": 467.91561999999993, "b": 285.00751, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Web", "bbox": {"l": 283.75961, "t": 342.39901999999995, "r": 310.64789, "b": 354.69406000000004, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Server", "bbox": {"l": 278.34604, "t": 359.62216, "r": 316.58282, "b": 371.91720999999995, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "DB2", "bbox": {"l": 429.82370000000003, "t": 342.39901999999995, "r": 454.2041300000001, "b": 354.69406000000004, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Server", "bbox": {"l": 422.90341, "t": 359.62216, "r": 461.1402, "b": 371.91720999999995, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "LOGIN_ID", "bbox": {"l": 213.3264, "t": 346.5273700000001, "r": 250.46141, "b": 354.42569, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Authentication", "bbox": {"l": 204.0994, "t": 357.59979, "r": 259.81662, "b": 365.48889, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "\u0093", "bbox": {"l": 345.9191, "t": 347.57309, "r": 349.77597, "b": 355.46218999999996, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "WEBUSER", "bbox": {"l": 349.7944, "t": 347.57309, "r": 387.90744, "b": 355.47141, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "\u0094", "bbox": {"l": 387.9021, "t": 347.57309, "r": 391.75897, "b": 355.46218999999996, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "DB Connection", "bbox": {"l": 340.99799, "t": 358.64557, "r": 396.67065, "b": 366.53467, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Customer", "bbox": {"l": 141.8476, "t": 387.90149, "r": 191.04857, "b": 398.43259, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "All online banking", "bbox": {"l": 402.66541, "t": 412.43927, "r": 471.38903999999997, "b": 420.33759, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Only web server", "bbox": {"l": 261.18411, "t": 412.43927, "r": 323.3584, "b": 420.33759, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "All online banking ", "bbox": {"l": 402.66541, "t": 412.43927, "r": 473.3999, "b": 420.33759, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "customers run ", "bbox": {"l": 402.66571, "t": 423.51166, "r": 459.16913, "b": 431.40996999999993, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "database transactions ", "bbox": {"l": 402.66571, "t": 434.58405, "r": 488.49249, "b": 442.48236, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "with WEBUSER profile", "bbox": {"l": 402.66571, "t": 445.65643, "r": 487.45444000000003, "b": 453.55475, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Only web server ", "bbox": {"l": 261.18411, "t": 412.43927, "r": 325.42889, "b": 420.33759, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "understands true ", "bbox": {"l": 261.18405, "t": 423.51166, "r": 328.80505, "b": 431.40996999999993, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "identity of online ", "bbox": {"l": 261.18405, "t": 434.58405, "r": 328.98499, "b": 442.48236, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "banking customer ", "bbox": {"l": 261.18405, "t": 445.65643, "r": 331.50668, "b": 453.55475, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "CUSTOMER_LOGIN_ID variable used to validate RCAC", "bbox": {"l": 267.12009, "t": 470.87717, "r": 470.52832, "b": 478.77548, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 54, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.27481079101562, "t": 754.7271118164062, "r": 523.59357, "b": 763.9805908203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9535647034645081, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 54, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.5966186523438, "t": 754.2191772460938, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9146284461021423, "cells": [{"id": 1, "text": "39", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "39"}]}}, {"page_no": 55, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "40 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Based on their respective roles and responsibilities, the users (that is, a group) are controlled ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 547.18292, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "by row permissions and column masks. The chart that is shown in Figure 4-2 shows the rules ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 547.21271, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "for row and column access in this example.", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 326.89856, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Figure 4-2 Rules for row and column access", "bbox": {"l": 136.8, "t": 409.45801, "r": 317.22745, "b": 417.78302, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "CUSTOMERS", "bbox": {"l": 224.10969999999998, "t": 126.65734999999995, "r": 293.81296, "b": 138.39282000000003, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ACCOUNTS", "bbox": {"l": 334.76221, "t": 126.65734999999995, "r": 396.79272, "b": 138.39282000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "TRANSACTIONS", "bbox": {"l": 426.62415, "t": 126.65734999999995, "r": 513.33075, "b": 138.39282000000003, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "R", "bbox": {"l": 226.44310000000002, "t": 145.98406999999997, "r": 230.7845, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "ow", "bbox": {"l": 230.62950000000004, "t": 145.98406999999997, "r": 240.53235999999998, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Column", "bbox": {"l": 273.4537, "t": 145.98406999999997, "r": 298.51202, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Row", "bbox": {"l": 331.44345, "t": 145.98406999999997, "r": 345.53418, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Column", "bbox": {"l": 378.4899, "t": 145.98406999999997, "r": 403.54813, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Row", "bbox": {"l": 436.47955, "t": 145.98406999999997, "r": 450.57037, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Column", "bbox": {"l": 483.526, "t": 145.98406999999997, "r": 508.58422999999993, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "o", "bbox": {"l": 230.62950000000004, "t": 145.98406999999997, "r": 234.84297, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Permissions", "bbox": {"l": 214.22719999999998, "t": 155.59209999999996, "r": 252.80963, "b": 162.42798000000005, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Co u", "bbox": {"l": 273.4537, "t": 145.98406999999997, "r": 287.93063, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Masking", "bbox": {"l": 272.39001, "t": 155.59209999999996, "r": 299.58008, "b": 162.42798000000005, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "o", "bbox": {"l": 335.63129, "t": 145.98406999999997, "r": 339.84476, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Permissions", "bbox": {"l": 319.229, "t": 155.59209999999996, "r": 357.81146, "b": 162.42798000000005, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Co u", "bbox": {"l": 378.4899, "t": 145.98406999999997, "r": 392.96683, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Masking", "bbox": {"l": 377.42609, "t": 155.59209999999996, "r": 404.61615, "b": 162.42798000000005, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "o", "bbox": {"l": 440.66738999999995, "t": 145.98406999999997, "r": 444.88086, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Permissions", "bbox": {"l": 424.2652, "t": 155.59209999999996, "r": 462.84766, "b": 162.42798000000005, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Co u", "bbox": {"l": 483.526, "t": 145.98406999999997, "r": 498.00293, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Masking", "bbox": {"l": 482.46231000000006, "t": 155.59209999999996, "r": 509.6523700000001, "b": 162.42798000000005, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "SECURITY", "bbox": {"l": 150.4369, "t": 184.42291, "r": 194.79079, "b": 194.19275000000005, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "No Rows", "bbox": {"l": 213.2664, "t": 184.74456999999995, "r": 250.56985, "b": 193.55651999999998, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Yes", "bbox": {"l": 277.68503, "t": 184.74456999999995, "r": 291.3363, "b": 193.55651999999998, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "No Rows", "bbox": {"l": 318.52045, "t": 184.74456999999995, "r": 355.82394, "b": 193.55651999999998, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Yes", "bbox": {"l": 382.93912, "t": 184.74456999999995, "r": 396.59039, "b": 193.55651999999998, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "No Rows", "bbox": {"l": 423.74057, "t": 184.74456999999995, "r": 461.0440699999999, "b": 193.55651999999998, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "No", "bbox": {"l": 488.94882, "t": 184.74456999999995, "r": 501.1167, "b": 193.55651999999998, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "DBE", "bbox": {"l": 175.9668, "t": 222.82056, "r": 194.78658, "b": 232.59038999999996, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "All Rows", "bbox": {"l": 213.7811, "t": 223.07367, "r": 250.2054, "b": 231.88562000000002, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Yes", "bbox": {"l": 277.69119, "t": 223.07367, "r": 291.52158, "b": 231.88562000000002, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "All Rows", "bbox": {"l": 319.04132, "t": 223.07367, "r": 355.46152, "b": 231.88562000000002, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Yes", "bbox": {"l": 382.9473, "t": 223.07367, "r": 396.77768, "b": 231.88562000000002, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "All Rows", "bbox": {"l": 424.26346, "t": 223.07367, "r": 460.68365000000006, "b": 231.88562000000002, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "No", "bbox": {"l": 488.95798, "t": 223.07367, "r": 501.30292000000003, "b": 231.88562000000002, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "ADMIN", "bbox": {"l": 161.1087, "t": 261.25256, "r": 194.82318, "b": 271.02239999999995, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "All Rows", "bbox": {"l": 213.7811, "t": 261.40265, "r": 250.2054, "b": 270.2146, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "No", "bbox": {"l": 278.44574, "t": 261.40265, "r": 290.79065, "b": 270.2146, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "All Rows", "bbox": {"l": 319.04437, "t": 261.40265, "r": 355.46869, "b": 270.2146, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "No", "bbox": {"l": 383.70905, "t": 261.40265, "r": 396.05396, "b": 270.2146, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "All Rows", "bbox": {"l": 424.27371, "t": 261.40265, "r": 460.69803, "b": 270.2146, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "No", "bbox": {"l": 488.97235, "t": 261.40265, "r": 501.31726, "b": 270.2146, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "TELLER", "bbox": {"l": 162.241, "t": 299.6503000000001, "r": 194.78195, "b": 309.42014, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "All Rows", "bbox": {"l": 213.7811, "t": 299.69748, "r": 250.2054, "b": 308.50939999999997, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Yes", "bbox": {"l": 277.69119, "t": 299.69748, "r": 291.52158, "b": 308.50939999999997, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "All Rows", "bbox": {"l": 319.04132, "t": 299.69748, "r": 355.46152, "b": 308.50939999999997, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "No", "bbox": {"l": 383.70187, "t": 299.69748, "r": 396.04681, "b": 308.50939999999997, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "All Rows", "bbox": {"l": 424.26657, "t": 299.69748, "r": 460.69089, "b": 308.50939999999997, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "No", "bbox": {"l": 488.96520999999996, "t": 299.69748, "r": 501.31012, "b": 308.50939999999997, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "CUSTOMER", "bbox": {"l": 141.7897, "t": 338.04796999999996, "r": 194.80273, "b": 347.81781, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "Own ", "bbox": {"l": 221.9136, "t": 331.84998, "r": 244.41694999999999, "b": 340.66190000000006, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Rows", "bbox": {"l": 220.57534999999996, "t": 344.20312, "r": 243.25369, "b": 353.01505, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "No", "bbox": {"l": 278.42932, "t": 338.02655, "r": 290.77835, "b": 346.83847, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Own ", "bbox": {"l": 327.15533, "t": 331.84998, "r": 349.65869, "b": 340.66190000000006, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Rows", "bbox": {"l": 325.81708, "t": 344.20312, "r": 348.49545, "b": 353.01505, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "No", "bbox": {"l": 383.67105, "t": 338.02655, "r": 396.02008, "b": 346.83847, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "Own ", "bbox": {"l": 432.3630999999999, "t": 331.84998, "r": 454.86645999999996, "b": 340.66190000000006, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "Rows", "bbox": {"l": 431.02484000000004, "t": 344.20312, "r": 453.70322, "b": 353.01505, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "No", "bbox": {"l": 488.91278, "t": 338.02655, "r": 501.26181, "b": 346.83847, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "No Rows", "bbox": {"l": 213.2664, "t": 376.35559, "r": 250.56985, "b": 385.16751, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Yes", "bbox": {"l": 277.68503, "t": 376.35559, "r": 291.3363, "b": 385.16751, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "No Rows", "bbox": {"l": 318.52045, "t": 376.35559, "r": 355.82394, "b": 385.16751, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "Yes", "bbox": {"l": 382.93912, "t": 376.35559, "r": 396.59039, "b": 385.16751, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "No Rows", "bbox": {"l": 423.74057, "t": 376.35559, "r": 461.0440699999999, "b": 385.16751, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "No", "bbox": {"l": 488.94882, "t": 376.35559, "r": 501.1167, "b": 385.16751, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "PUBLIC", "bbox": {"l": 161.55479, "t": 376.4456799999999, "r": 194.79735, "b": 386.21552, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.19805908203125, "t": 754.2051391601562, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9140270948410034, "cells": [{"id": 0, "text": "40 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.33177947998047, "t": 754.7326049804688, "r": 334.42142, "b": 763.9369506835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9506687521934509, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 136.27764892578125, "t": 70.70075225830078, "r": 547.21271, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9673320651054382, "cells": [{"id": 2, "text": "Based on their respective roles and responsibilities, the users (that is, a group) are controlled ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 547.18292, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "by row permissions and column masks. The chart that is shown in Figure 4-2 shows the rules ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 547.21271, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "for row and column access in this example.", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 326.89856, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.13352966308594, "t": 408.7555236816406, "r": 317.8505554199219, "b": 418.05963134765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9396594762802124, "cells": [{"id": 5, "text": "Figure 4-2 Rules for row and column access", "bbox": {"l": 136.8, "t": 409.45801, "r": 317.22745, "b": 417.78302, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "picture", "bbox": {"l": 136.22354125976562, "t": 119.91455841064453, "r": 529.123291015625, "b": 404.9533386230469, "coord_origin": "TOPLEFT"}, "confidence": 0.8848159909248352, "cells": [{"id": 6, "text": "CUSTOMERS", "bbox": {"l": 224.10969999999998, "t": 126.65734999999995, "r": 293.81296, "b": 138.39282000000003, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ACCOUNTS", "bbox": {"l": 334.76221, "t": 126.65734999999995, "r": 396.79272, "b": 138.39282000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "TRANSACTIONS", "bbox": {"l": 426.62415, "t": 126.65734999999995, "r": 513.33075, "b": 138.39282000000003, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "R", "bbox": {"l": 226.44310000000002, "t": 145.98406999999997, "r": 230.7845, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "ow", "bbox": {"l": 230.62950000000004, "t": 145.98406999999997, "r": 240.53235999999998, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Column", "bbox": {"l": 273.4537, "t": 145.98406999999997, "r": 298.51202, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Row", "bbox": {"l": 331.44345, "t": 145.98406999999997, "r": 345.53418, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Column", "bbox": {"l": 378.4899, "t": 145.98406999999997, "r": 403.54813, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Row", "bbox": {"l": 436.47955, "t": 145.98406999999997, "r": 450.57037, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Column", "bbox": {"l": 483.526, "t": 145.98406999999997, "r": 508.58422999999993, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "o", "bbox": {"l": 230.62950000000004, "t": 145.98406999999997, "r": 234.84297, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Permissions", "bbox": {"l": 214.22719999999998, "t": 155.59209999999996, "r": 252.80963, "b": 162.42798000000005, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Co u", "bbox": {"l": 273.4537, "t": 145.98406999999997, "r": 287.93063, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Masking", "bbox": {"l": 272.39001, "t": 155.59209999999996, "r": 299.58008, "b": 162.42798000000005, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "o", "bbox": {"l": 335.63129, "t": 145.98406999999997, "r": 339.84476, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Permissions", "bbox": {"l": 319.229, "t": 155.59209999999996, "r": 357.81146, "b": 162.42798000000005, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Co u", "bbox": {"l": 378.4899, "t": 145.98406999999997, "r": 392.96683, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Masking", "bbox": {"l": 377.42609, "t": 155.59209999999996, "r": 404.61615, "b": 162.42798000000005, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "o", "bbox": {"l": 440.66738999999995, "t": 145.98406999999997, "r": 444.88086, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Permissions", "bbox": {"l": 424.2652, "t": 155.59209999999996, "r": 462.84766, "b": 162.42798000000005, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Co u", "bbox": {"l": 483.526, "t": 145.98406999999997, "r": 498.00293, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Masking", "bbox": {"l": 482.46231000000006, "t": 155.59209999999996, "r": 509.6523700000001, "b": 162.42798000000005, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "SECURITY", "bbox": {"l": 150.4369, "t": 184.42291, "r": 194.79079, "b": 194.19275000000005, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "No Rows", "bbox": {"l": 213.2664, "t": 184.74456999999995, "r": 250.56985, "b": 193.55651999999998, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Yes", "bbox": {"l": 277.68503, "t": 184.74456999999995, "r": 291.3363, "b": 193.55651999999998, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "No Rows", "bbox": {"l": 318.52045, "t": 184.74456999999995, "r": 355.82394, "b": 193.55651999999998, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Yes", "bbox": {"l": 382.93912, "t": 184.74456999999995, "r": 396.59039, "b": 193.55651999999998, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "No Rows", "bbox": {"l": 423.74057, "t": 184.74456999999995, "r": 461.0440699999999, "b": 193.55651999999998, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "No", "bbox": {"l": 488.94882, "t": 184.74456999999995, "r": 501.1167, "b": 193.55651999999998, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "DBE", "bbox": {"l": 175.9668, "t": 222.82056, "r": 194.78658, "b": 232.59038999999996, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "All Rows", "bbox": {"l": 213.7811, "t": 223.07367, "r": 250.2054, "b": 231.88562000000002, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Yes", "bbox": {"l": 277.69119, "t": 223.07367, "r": 291.52158, "b": 231.88562000000002, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "All Rows", "bbox": {"l": 319.04132, "t": 223.07367, "r": 355.46152, "b": 231.88562000000002, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Yes", "bbox": {"l": 382.9473, "t": 223.07367, "r": 396.77768, "b": 231.88562000000002, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "All Rows", "bbox": {"l": 424.26346, "t": 223.07367, "r": 460.68365000000006, "b": 231.88562000000002, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "No", "bbox": {"l": 488.95798, "t": 223.07367, "r": 501.30292000000003, "b": 231.88562000000002, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "ADMIN", "bbox": {"l": 161.1087, "t": 261.25256, "r": 194.82318, "b": 271.02239999999995, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "All Rows", "bbox": {"l": 213.7811, "t": 261.40265, "r": 250.2054, "b": 270.2146, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "No", "bbox": {"l": 278.44574, "t": 261.40265, "r": 290.79065, "b": 270.2146, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "All Rows", "bbox": {"l": 319.04437, "t": 261.40265, "r": 355.46869, "b": 270.2146, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "No", "bbox": {"l": 383.70905, "t": 261.40265, "r": 396.05396, "b": 270.2146, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "All Rows", "bbox": {"l": 424.27371, "t": 261.40265, "r": 460.69803, "b": 270.2146, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "No", "bbox": {"l": 488.97235, "t": 261.40265, "r": 501.31726, "b": 270.2146, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "TELLER", "bbox": {"l": 162.241, "t": 299.6503000000001, "r": 194.78195, "b": 309.42014, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "All Rows", "bbox": {"l": 213.7811, "t": 299.69748, "r": 250.2054, "b": 308.50939999999997, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Yes", "bbox": {"l": 277.69119, "t": 299.69748, "r": 291.52158, "b": 308.50939999999997, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "All Rows", "bbox": {"l": 319.04132, "t": 299.69748, "r": 355.46152, "b": 308.50939999999997, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "No", "bbox": {"l": 383.70187, "t": 299.69748, "r": 396.04681, "b": 308.50939999999997, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "All Rows", "bbox": {"l": 424.26657, "t": 299.69748, "r": 460.69089, "b": 308.50939999999997, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "No", "bbox": {"l": 488.96520999999996, "t": 299.69748, "r": 501.31012, "b": 308.50939999999997, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "CUSTOMER", "bbox": {"l": 141.7897, "t": 338.04796999999996, "r": 194.80273, "b": 347.81781, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "Own ", "bbox": {"l": 221.9136, "t": 331.84998, "r": 244.41694999999999, "b": 340.66190000000006, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Rows", "bbox": {"l": 220.57534999999996, "t": 344.20312, "r": 243.25369, "b": 353.01505, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "No", "bbox": {"l": 278.42932, "t": 338.02655, "r": 290.77835, "b": 346.83847, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Own ", "bbox": {"l": 327.15533, "t": 331.84998, "r": 349.65869, "b": 340.66190000000006, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Rows", "bbox": {"l": 325.81708, "t": 344.20312, "r": 348.49545, "b": 353.01505, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "No", "bbox": {"l": 383.67105, "t": 338.02655, "r": 396.02008, "b": 346.83847, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "Own ", "bbox": {"l": 432.3630999999999, "t": 331.84998, "r": 454.86645999999996, "b": 340.66190000000006, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "Rows", "bbox": {"l": 431.02484000000004, "t": 344.20312, "r": 453.70322, "b": 353.01505, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "No", "bbox": {"l": 488.91278, "t": 338.02655, "r": 501.26181, "b": 346.83847, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "No Rows", "bbox": {"l": 213.2664, "t": 376.35559, "r": 250.56985, "b": 385.16751, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Yes", "bbox": {"l": 277.68503, "t": 376.35559, "r": 291.3363, "b": 385.16751, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "No Rows", "bbox": {"l": 318.52045, "t": 376.35559, "r": 355.82394, "b": 385.16751, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "Yes", "bbox": {"l": 382.93912, "t": 376.35559, "r": 396.59039, "b": 385.16751, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "No Rows", "bbox": {"l": 423.74057, "t": 376.35559, "r": 461.0440699999999, "b": 385.16751, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "No", "bbox": {"l": 488.94882, "t": 376.35559, "r": 501.1167, "b": 385.16751, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "PUBLIC", "bbox": {"l": 161.55479, "t": 376.4456799999999, "r": 194.79735, "b": 386.21552, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 55, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.19805908203125, "t": 754.2051391601562, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9140270948410034, "cells": [{"id": 0, "text": "40 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "40"}, {"label": "page_footer", "id": 1, "page_no": 55, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.33177947998047, "t": 754.7326049804688, "r": 334.42142, "b": 763.9369506835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9506687521934509, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 2, "page_no": 55, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.27764892578125, "t": 70.70075225830078, "r": 547.21271, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9673320651054382, "cells": [{"id": 2, "text": "Based on their respective roles and responsibilities, the users (that is, a group) are controlled ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 547.18292, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "by row permissions and column masks. The chart that is shown in Figure 4-2 shows the rules ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 547.21271, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "for row and column access in this example.", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 326.89856, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Based on their respective roles and responsibilities, the users (that is, a group) are controlled by row permissions and column masks. The chart that is shown in Figure 4-2 shows the rules for row and column access in this example."}, {"label": "caption", "id": 3, "page_no": 55, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.13352966308594, "t": 408.7555236816406, "r": 317.8505554199219, "b": 418.05963134765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9396594762802124, "cells": [{"id": 5, "text": "Figure 4-2 Rules for row and column access", "bbox": {"l": 136.8, "t": 409.45801, "r": 317.22745, "b": 417.78302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-2 Rules for row and column access"}, {"label": "picture", "id": 4, "page_no": 55, "cluster": {"id": 4, "label": "picture", "bbox": {"l": 136.22354125976562, "t": 119.91455841064453, "r": 529.123291015625, "b": 404.9533386230469, "coord_origin": "TOPLEFT"}, "confidence": 0.8848159909248352, "cells": [{"id": 6, "text": "CUSTOMERS", "bbox": {"l": 224.10969999999998, "t": 126.65734999999995, "r": 293.81296, "b": 138.39282000000003, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ACCOUNTS", "bbox": {"l": 334.76221, "t": 126.65734999999995, "r": 396.79272, "b": 138.39282000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "TRANSACTIONS", "bbox": {"l": 426.62415, "t": 126.65734999999995, "r": 513.33075, "b": 138.39282000000003, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "R", "bbox": {"l": 226.44310000000002, "t": 145.98406999999997, "r": 230.7845, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "ow", "bbox": {"l": 230.62950000000004, "t": 145.98406999999997, "r": 240.53235999999998, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Column", "bbox": {"l": 273.4537, "t": 145.98406999999997, "r": 298.51202, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Row", "bbox": {"l": 331.44345, "t": 145.98406999999997, "r": 345.53418, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Column", "bbox": {"l": 378.4899, "t": 145.98406999999997, "r": 403.54813, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Row", "bbox": {"l": 436.47955, "t": 145.98406999999997, "r": 450.57037, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Column", "bbox": {"l": 483.526, "t": 145.98406999999997, "r": 508.58422999999993, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "o", "bbox": {"l": 230.62950000000004, "t": 145.98406999999997, "r": 234.84297, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Permissions", "bbox": {"l": 214.22719999999998, "t": 155.59209999999996, "r": 252.80963, "b": 162.42798000000005, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Co u", "bbox": {"l": 273.4537, "t": 145.98406999999997, "r": 287.93063, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Masking", "bbox": {"l": 272.39001, "t": 155.59209999999996, "r": 299.58008, "b": 162.42798000000005, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "o", "bbox": {"l": 335.63129, "t": 145.98406999999997, "r": 339.84476, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Permissions", "bbox": {"l": 319.229, "t": 155.59209999999996, "r": 357.81146, "b": 162.42798000000005, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Co u", "bbox": {"l": 378.4899, "t": 145.98406999999997, "r": 392.96683, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Masking", "bbox": {"l": 377.42609, "t": 155.59209999999996, "r": 404.61615, "b": 162.42798000000005, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "o", "bbox": {"l": 440.66738999999995, "t": 145.98406999999997, "r": 444.88086, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Permissions", "bbox": {"l": 424.2652, "t": 155.59209999999996, "r": 462.84766, "b": 162.42798000000005, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Co u", "bbox": {"l": 483.526, "t": 145.98406999999997, "r": 498.00293, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Masking", "bbox": {"l": 482.46231000000006, "t": 155.59209999999996, "r": 509.6523700000001, "b": 162.42798000000005, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "SECURITY", "bbox": {"l": 150.4369, "t": 184.42291, "r": 194.79079, "b": 194.19275000000005, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "No Rows", "bbox": {"l": 213.2664, "t": 184.74456999999995, "r": 250.56985, "b": 193.55651999999998, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Yes", "bbox": {"l": 277.68503, "t": 184.74456999999995, "r": 291.3363, "b": 193.55651999999998, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "No Rows", "bbox": {"l": 318.52045, "t": 184.74456999999995, "r": 355.82394, "b": 193.55651999999998, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Yes", "bbox": {"l": 382.93912, "t": 184.74456999999995, "r": 396.59039, "b": 193.55651999999998, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "No Rows", "bbox": {"l": 423.74057, "t": 184.74456999999995, "r": 461.0440699999999, "b": 193.55651999999998, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "No", "bbox": {"l": 488.94882, "t": 184.74456999999995, "r": 501.1167, "b": 193.55651999999998, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "DBE", "bbox": {"l": 175.9668, "t": 222.82056, "r": 194.78658, "b": 232.59038999999996, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "All Rows", "bbox": {"l": 213.7811, "t": 223.07367, "r": 250.2054, "b": 231.88562000000002, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Yes", "bbox": {"l": 277.69119, "t": 223.07367, "r": 291.52158, "b": 231.88562000000002, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "All Rows", "bbox": {"l": 319.04132, "t": 223.07367, "r": 355.46152, "b": 231.88562000000002, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Yes", "bbox": {"l": 382.9473, "t": 223.07367, "r": 396.77768, "b": 231.88562000000002, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "All Rows", "bbox": {"l": 424.26346, "t": 223.07367, "r": 460.68365000000006, "b": 231.88562000000002, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "No", "bbox": {"l": 488.95798, "t": 223.07367, "r": 501.30292000000003, "b": 231.88562000000002, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "ADMIN", "bbox": {"l": 161.1087, "t": 261.25256, "r": 194.82318, "b": 271.02239999999995, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "All Rows", "bbox": {"l": 213.7811, "t": 261.40265, "r": 250.2054, "b": 270.2146, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "No", "bbox": {"l": 278.44574, "t": 261.40265, "r": 290.79065, "b": 270.2146, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "All Rows", "bbox": {"l": 319.04437, "t": 261.40265, "r": 355.46869, "b": 270.2146, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "No", "bbox": {"l": 383.70905, "t": 261.40265, "r": 396.05396, "b": 270.2146, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "All Rows", "bbox": {"l": 424.27371, "t": 261.40265, "r": 460.69803, "b": 270.2146, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "No", "bbox": {"l": 488.97235, "t": 261.40265, "r": 501.31726, "b": 270.2146, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "TELLER", "bbox": {"l": 162.241, "t": 299.6503000000001, "r": 194.78195, "b": 309.42014, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "All Rows", "bbox": {"l": 213.7811, "t": 299.69748, "r": 250.2054, "b": 308.50939999999997, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Yes", "bbox": {"l": 277.69119, "t": 299.69748, "r": 291.52158, "b": 308.50939999999997, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "All Rows", "bbox": {"l": 319.04132, "t": 299.69748, "r": 355.46152, "b": 308.50939999999997, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "No", "bbox": {"l": 383.70187, "t": 299.69748, "r": 396.04681, "b": 308.50939999999997, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "All Rows", "bbox": {"l": 424.26657, "t": 299.69748, "r": 460.69089, "b": 308.50939999999997, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "No", "bbox": {"l": 488.96520999999996, "t": 299.69748, "r": 501.31012, "b": 308.50939999999997, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "CUSTOMER", "bbox": {"l": 141.7897, "t": 338.04796999999996, "r": 194.80273, "b": 347.81781, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "Own ", "bbox": {"l": 221.9136, "t": 331.84998, "r": 244.41694999999999, "b": 340.66190000000006, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Rows", "bbox": {"l": 220.57534999999996, "t": 344.20312, "r": 243.25369, "b": 353.01505, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "No", "bbox": {"l": 278.42932, "t": 338.02655, "r": 290.77835, "b": 346.83847, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Own ", "bbox": {"l": 327.15533, "t": 331.84998, "r": 349.65869, "b": 340.66190000000006, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Rows", "bbox": {"l": 325.81708, "t": 344.20312, "r": 348.49545, "b": 353.01505, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "No", "bbox": {"l": 383.67105, "t": 338.02655, "r": 396.02008, "b": 346.83847, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "Own ", "bbox": {"l": 432.3630999999999, "t": 331.84998, "r": 454.86645999999996, "b": 340.66190000000006, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "Rows", "bbox": {"l": 431.02484000000004, "t": 344.20312, "r": 453.70322, "b": 353.01505, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "No", "bbox": {"l": 488.91278, "t": 338.02655, "r": 501.26181, "b": 346.83847, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "No Rows", "bbox": {"l": 213.2664, "t": 376.35559, "r": 250.56985, "b": 385.16751, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Yes", "bbox": {"l": 277.68503, "t": 376.35559, "r": 291.3363, "b": 385.16751, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "No Rows", "bbox": {"l": 318.52045, "t": 376.35559, "r": 355.82394, "b": 385.16751, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "Yes", "bbox": {"l": 382.93912, "t": 376.35559, "r": 396.59039, "b": 385.16751, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "No Rows", "bbox": {"l": 423.74057, "t": 376.35559, "r": 461.0440699999999, "b": 385.16751, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "No", "bbox": {"l": 488.94882, "t": 376.35559, "r": 501.1167, "b": 385.16751, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "PUBLIC", "bbox": {"l": 161.55479, "t": 376.4456799999999, "r": 194.79735, "b": 386.21552, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 55, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.27764892578125, "t": 70.70075225830078, "r": 547.21271, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9673320651054382, "cells": [{"id": 2, "text": "Based on their respective roles and responsibilities, the users (that is, a group) are controlled ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 547.18292, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "by row permissions and column masks. The chart that is shown in Figure 4-2 shows the rules ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 547.21271, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "for row and column access in this example.", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 326.89856, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Based on their respective roles and responsibilities, the users (that is, a group) are controlled by row permissions and column masks. The chart that is shown in Figure 4-2 shows the rules for row and column access in this example."}, {"label": "caption", "id": 3, "page_no": 55, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.13352966308594, "t": 408.7555236816406, "r": 317.8505554199219, "b": 418.05963134765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9396594762802124, "cells": [{"id": 5, "text": "Figure 4-2 Rules for row and column access", "bbox": {"l": 136.8, "t": 409.45801, "r": 317.22745, "b": 417.78302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-2 Rules for row and column access"}, {"label": "picture", "id": 4, "page_no": 55, "cluster": {"id": 4, "label": "picture", "bbox": {"l": 136.22354125976562, "t": 119.91455841064453, "r": 529.123291015625, "b": 404.9533386230469, "coord_origin": "TOPLEFT"}, "confidence": 0.8848159909248352, "cells": [{"id": 6, "text": "CUSTOMERS", "bbox": {"l": 224.10969999999998, "t": 126.65734999999995, "r": 293.81296, "b": 138.39282000000003, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ACCOUNTS", "bbox": {"l": 334.76221, "t": 126.65734999999995, "r": 396.79272, "b": 138.39282000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "TRANSACTIONS", "bbox": {"l": 426.62415, "t": 126.65734999999995, "r": 513.33075, "b": 138.39282000000003, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "R", "bbox": {"l": 226.44310000000002, "t": 145.98406999999997, "r": 230.7845, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "ow", "bbox": {"l": 230.62950000000004, "t": 145.98406999999997, "r": 240.53235999999998, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Column", "bbox": {"l": 273.4537, "t": 145.98406999999997, "r": 298.51202, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Row", "bbox": {"l": 331.44345, "t": 145.98406999999997, "r": 345.53418, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Column", "bbox": {"l": 378.4899, "t": 145.98406999999997, "r": 403.54813, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Row", "bbox": {"l": 436.47955, "t": 145.98406999999997, "r": 450.57037, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Column", "bbox": {"l": 483.526, "t": 145.98406999999997, "r": 508.58422999999993, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "o", "bbox": {"l": 230.62950000000004, "t": 145.98406999999997, "r": 234.84297, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Permissions", "bbox": {"l": 214.22719999999998, "t": 155.59209999999996, "r": 252.80963, "b": 162.42798000000005, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Co u", "bbox": {"l": 273.4537, "t": 145.98406999999997, "r": 287.93063, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Masking", "bbox": {"l": 272.39001, "t": 155.59209999999996, "r": 299.58008, "b": 162.42798000000005, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "o", "bbox": {"l": 335.63129, "t": 145.98406999999997, "r": 339.84476, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Permissions", "bbox": {"l": 319.229, "t": 155.59209999999996, "r": 357.81146, "b": 162.42798000000005, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Co u", "bbox": {"l": 378.4899, "t": 145.98406999999997, "r": 392.96683, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Masking", "bbox": {"l": 377.42609, "t": 155.59209999999996, "r": 404.61615, "b": 162.42798000000005, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "o", "bbox": {"l": 440.66738999999995, "t": 145.98406999999997, "r": 444.88086, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Permissions", "bbox": {"l": 424.2652, "t": 155.59209999999996, "r": 462.84766, "b": 162.42798000000005, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Co u", "bbox": {"l": 483.526, "t": 145.98406999999997, "r": 498.00293, "b": 152.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Masking", "bbox": {"l": 482.46231000000006, "t": 155.59209999999996, "r": 509.6523700000001, "b": 162.42798000000005, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "SECURITY", "bbox": {"l": 150.4369, "t": 184.42291, "r": 194.79079, "b": 194.19275000000005, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "No Rows", "bbox": {"l": 213.2664, "t": 184.74456999999995, "r": 250.56985, "b": 193.55651999999998, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Yes", "bbox": {"l": 277.68503, "t": 184.74456999999995, "r": 291.3363, "b": 193.55651999999998, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "No Rows", "bbox": {"l": 318.52045, "t": 184.74456999999995, "r": 355.82394, "b": 193.55651999999998, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Yes", "bbox": {"l": 382.93912, "t": 184.74456999999995, "r": 396.59039, "b": 193.55651999999998, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "No Rows", "bbox": {"l": 423.74057, "t": 184.74456999999995, "r": 461.0440699999999, "b": 193.55651999999998, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "No", "bbox": {"l": 488.94882, "t": 184.74456999999995, "r": 501.1167, "b": 193.55651999999998, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "DBE", "bbox": {"l": 175.9668, "t": 222.82056, "r": 194.78658, "b": 232.59038999999996, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "All Rows", "bbox": {"l": 213.7811, "t": 223.07367, "r": 250.2054, "b": 231.88562000000002, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Yes", "bbox": {"l": 277.69119, "t": 223.07367, "r": 291.52158, "b": 231.88562000000002, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "All Rows", "bbox": {"l": 319.04132, "t": 223.07367, "r": 355.46152, "b": 231.88562000000002, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Yes", "bbox": {"l": 382.9473, "t": 223.07367, "r": 396.77768, "b": 231.88562000000002, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "All Rows", "bbox": {"l": 424.26346, "t": 223.07367, "r": 460.68365000000006, "b": 231.88562000000002, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "No", "bbox": {"l": 488.95798, "t": 223.07367, "r": 501.30292000000003, "b": 231.88562000000002, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "ADMIN", "bbox": {"l": 161.1087, "t": 261.25256, "r": 194.82318, "b": 271.02239999999995, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "All Rows", "bbox": {"l": 213.7811, "t": 261.40265, "r": 250.2054, "b": 270.2146, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "No", "bbox": {"l": 278.44574, "t": 261.40265, "r": 290.79065, "b": 270.2146, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "All Rows", "bbox": {"l": 319.04437, "t": 261.40265, "r": 355.46869, "b": 270.2146, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "No", "bbox": {"l": 383.70905, "t": 261.40265, "r": 396.05396, "b": 270.2146, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "All Rows", "bbox": {"l": 424.27371, "t": 261.40265, "r": 460.69803, "b": 270.2146, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "No", "bbox": {"l": 488.97235, "t": 261.40265, "r": 501.31726, "b": 270.2146, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "TELLER", "bbox": {"l": 162.241, "t": 299.6503000000001, "r": 194.78195, "b": 309.42014, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "All Rows", "bbox": {"l": 213.7811, "t": 299.69748, "r": 250.2054, "b": 308.50939999999997, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Yes", "bbox": {"l": 277.69119, "t": 299.69748, "r": 291.52158, "b": 308.50939999999997, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "All Rows", "bbox": {"l": 319.04132, "t": 299.69748, "r": 355.46152, "b": 308.50939999999997, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "No", "bbox": {"l": 383.70187, "t": 299.69748, "r": 396.04681, "b": 308.50939999999997, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "All Rows", "bbox": {"l": 424.26657, "t": 299.69748, "r": 460.69089, "b": 308.50939999999997, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "No", "bbox": {"l": 488.96520999999996, "t": 299.69748, "r": 501.31012, "b": 308.50939999999997, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "CUSTOMER", "bbox": {"l": 141.7897, "t": 338.04796999999996, "r": 194.80273, "b": 347.81781, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "Own ", "bbox": {"l": 221.9136, "t": 331.84998, "r": 244.41694999999999, "b": 340.66190000000006, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Rows", "bbox": {"l": 220.57534999999996, "t": 344.20312, "r": 243.25369, "b": 353.01505, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "No", "bbox": {"l": 278.42932, "t": 338.02655, "r": 290.77835, "b": 346.83847, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Own ", "bbox": {"l": 327.15533, "t": 331.84998, "r": 349.65869, "b": 340.66190000000006, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Rows", "bbox": {"l": 325.81708, "t": 344.20312, "r": 348.49545, "b": 353.01505, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "No", "bbox": {"l": 383.67105, "t": 338.02655, "r": 396.02008, "b": 346.83847, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "Own ", "bbox": {"l": 432.3630999999999, "t": 331.84998, "r": 454.86645999999996, "b": 340.66190000000006, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "Rows", "bbox": {"l": 431.02484000000004, "t": 344.20312, "r": 453.70322, "b": 353.01505, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "No", "bbox": {"l": 488.91278, "t": 338.02655, "r": 501.26181, "b": 346.83847, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "No Rows", "bbox": {"l": 213.2664, "t": 376.35559, "r": 250.56985, "b": 385.16751, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Yes", "bbox": {"l": 277.68503, "t": 376.35559, "r": 291.3363, "b": 385.16751, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "No Rows", "bbox": {"l": 318.52045, "t": 376.35559, "r": 355.82394, "b": 385.16751, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "Yes", "bbox": {"l": 382.93912, "t": 376.35559, "r": 396.59039, "b": 385.16751, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "No Rows", "bbox": {"l": 423.74057, "t": 376.35559, "r": 461.0440699999999, "b": 385.16751, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "No", "bbox": {"l": 488.94882, "t": 376.35559, "r": 501.1167, "b": 385.16751, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "PUBLIC", "bbox": {"l": 161.55479, "t": 376.4456799999999, "r": 194.79735, "b": 386.21552, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 55, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.19805908203125, "t": 754.2051391601562, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9140270948410034, "cells": [{"id": 0, "text": "40 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "40"}, {"label": "page_footer", "id": 1, "page_no": 55, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.33177947998047, "t": 754.7326049804688, "r": 334.42142, "b": 763.9369506835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9506687521934509, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 56, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "41", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "The chart that is shown in Figure 4-3 shows the column access that is allowed by group and ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 545.29602, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "lists the column masks by table.", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 277.30936, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 4-3 Column masks", "bbox": {"l": 136.8, "t": 402.138, "r": 244.67220999999998, "b": 410.46301, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "For the demonstration and testing of RCAC in this example, the following users interact with ", "bbox": {"l": 136.8, "t": 428.14871, "r": 543.45782, "b": 437.36169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "the database. Furthermore, the column masking rules are developed independently of the ", "bbox": {"l": 136.8, "t": 440.14853, "r": 535.67096, "b": 449.36151, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "row permissions. If a person does not have permission to access the row, the column mask ", "bbox": {"l": 136.8, "t": 452.14834999999994, "r": 541.92706, "b": 461.36133, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "processing does not occur.", "bbox": {"l": 136.8, "t": 464.14816, "r": 255.69651999999996, "b": 473.36115, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 481.27734, "r": 141.78, "b": 490.05212, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Hernando Bedoya is a DB2 for i database engineer with the user profile of HBEDOYA. He ", "bbox": {"l": 151.20016, "t": 481.12796, "r": 547.29358, "b": 490.34094, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "is part of the DBE group.", "bbox": {"l": 151.20016, "t": 493.12778, "r": 260.65955, "b": 502.34076, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "GLYPH", "bbox": {"l": 136.8, "t": 510.25696, "r": 141.78, "b": 519.03174, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Mike Cain is a DB2 for i database engineer with the user profile of MCAIN. He is part of ", "bbox": {"l": 151.20016, "t": 510.10757, "r": 538.92694, "b": 519.32056, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "the DBE group.", "bbox": {"l": 151.20016, "t": 522.10739, "r": 219.05766, "b": 531.32037, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 539.29636, "r": 141.78, "b": 548.07111, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Veronica G. Lucchess is a bank account administrator with the user profile of ", "bbox": {"l": 151.20016, "t": 539.14696, "r": 492.53729, "b": 548.35995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "VGLUCCHESS. She is part of the ADMIN group.", "bbox": {"l": 151.20016, "t": 551.14676, "r": 366.6041, "b": 560.35976, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "GLYPH", "bbox": {"l": 136.8, "t": 568.27597, "r": 141.78, "b": 577.05072, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Tom Q. Spenser is a bank teller with the user profile of TQSPENSER. He is part of the ", "bbox": {"l": 151.20016, "t": 568.12657, "r": 534.65118, "b": 577.33957, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "TELLER group.", "bbox": {"l": 151.20018, "t": 580.12637, "r": 219.6682, "b": 589.33937, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 597.25558, "r": 141.78001, "b": 606.03033, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "The IT security officer has the user profile of SECURITY. She is not part of any group.", "bbox": {"l": 151.20018, "t": 597.10619, "r": 529.1214, "b": 606.31918, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 614.29515, "r": 141.78099, "b": 623.0699, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "The online banking web application uses the user profile WEBUSER. This profile is part of ", "bbox": {"l": 151.20116, "t": 614.14575, "r": 547.33234, "b": 623.35875, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "the CUSTOMER group. Any future customer-facing applications can also use this group if ", "bbox": {"l": 151.20116, "t": 626.14555, "r": 547.30249, "b": 635.35855, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "needed.", "bbox": {"l": 151.20116, "t": 638.14536, "r": 187.36992, "b": 647.35835, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 655.27457, "r": 141.78099, "b": 664.04932, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Adam O. Olsen is a bank customer with a web application login ID of KLD72CQR8JG.", "bbox": {"l": 151.20116, "t": 655.12517, "r": 530.79578, "b": 664.33817, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "CUSTOMERS", "bbox": {"l": 287.80969, "t": 111.80242999999996, "r": 355.42447, "b": 123.18358999999998, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Row", "bbox": {"l": 223.74899, "t": 130.54552999999999, "r": 237.25998, "b": 137.17511000000002, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Permissions", "bbox": {"l": 211.90196, "t": 139.86339999999996, "r": 249.31949, "b": 146.49298, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Column", "bbox": {"l": 310.23877, "t": 130.54552999999999, "r": 334.52832, "b": 137.17511000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Maskin", "bbox": {"l": 309.20752, "t": 139.86339999999996, "r": 331.92926, "b": 146.49298, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "g", "bbox": {"l": 331.9368, "t": 139.86346000000003, "r": 335.58884, "b": 146.49303999999995, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "ACCOUNTS", "bbox": {"l": 428.2442, "t": 111.80242999999996, "r": 488.26617000000005, "b": 123.18358999999998, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Column", "bbox": {"l": 446.91339, "t": 130.54552999999999, "r": 471.20294, "b": 137.17511000000002, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Masking", "bbox": {"l": 445.88214, "t": 139.86339999999996, "r": 472.26285, "b": 146.49298, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "SECURITY", "bbox": {"l": 150.03751, "t": 173.64770999999996, "r": 193.05225, "b": 183.12256000000002, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "No Rows", "bbox": {"l": 212.634, "t": 175.52368, "r": 248.92102000000003, "b": 184.06952, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER", "bbox": {"l": 263.18381, "t": 156.68151999999998, "r": 373.63184, "b": 162.37212999999997, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "CUSTOMER_EMAIL", "bbox": {"l": 263.18381, "t": 164.66832999999997, "r": 314.60641, "b": 170.35895000000005, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CUSTOMER_LOGIN_ID", "bbox": {"l": 263.18381, "t": 172.65515000000005, "r": 323.65616, "b": 178.34576000000004, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "CUSTOMER_SECURITY_QUESTION", "bbox": {"l": 263.18381, "t": 180.64197000000001, "r": 355.06308, "b": 186.33258, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "ACCOUNT_NUMBER", "bbox": {"l": 427.81256, "t": 176.64855999999997, "r": 482.86053, "b": 182.33916999999997, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "g", "bbox": {"l": 468.61081, "t": 139.86346000000003, "r": 472.26285, "b": 146.49303999999995, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "DBE", "bbox": {"l": 174.7966, "t": 226.89313000000004, "r": 193.04816, "b": 236.36798, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER", "bbox": {"l": 263.18381, "t": 188.62872000000004, "r": 382.36545, "b": 194.31934, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "CUSTOMER_TAX_ID", "bbox": {"l": 263.18381, "t": 196.61554, "r": 316.47134, "b": 202.30615, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "All Rows", "bbox": {"l": 213.1331, "t": 227.43799, "r": 248.37787, "b": 235.98383, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER", "bbox": {"l": 263.18381, "t": 208.59569999999997, "r": 373.63184, "b": 214.28632000000005, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "CUSTOMER_EMAIL", "bbox": {"l": 263.18381, "t": 216.58252000000005, "r": 314.60641, "b": 222.27313000000004, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "CUSTOMER_LOGIN_ID", "bbox": {"l": 263.18381, "t": 224.56934, "r": 323.65616, "b": 230.25995, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ACCOUNT NUMBER", "bbox": {"l": 427.81161, "t": 228.56273999999996, "r": 482.91415, "b": 234.25336000000004, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "ADMIN", "bbox": {"l": 160.3871, "t": 261.00342, "r": 193.08365, "b": 270.47826999999995, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "CUSTOMER_SECURITY_QUESTION", "bbox": {"l": 263.18381, "t": 232.55615, "r": 355.06308, "b": 238.24676999999997, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER", "bbox": {"l": 263.18381, "t": 240.54296999999997, "r": 382.36545, "b": 246.23357999999996, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "CUSTOMER_TAX_ID", "bbox": {"l": 263.18381, "t": 248.52979000000005, "r": 316.47134, "b": 254.22040000000004, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "ACCOUNT_NUMBER", "bbox": {"l": 427.81161, "t": 228.56273999999996, "r": 482.9232799999999, "b": 234.25336000000004, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "All Rows", "bbox": {"l": 213.1331, "t": 263.04578000000004, "r": 248.45371999999998, "b": 271.59160999999995, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "None", "bbox": {"l": 315.53061, "t": 264.17065, "r": 330.12256, "b": 269.86127, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "None", "bbox": {"l": 448.08353, "t": 264.17065, "r": 462.67548, "b": 269.86127, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "TELLER", "bbox": {"l": 161.4852, "t": 293.44980000000004, "r": 193.04367, "b": 302.92464999999993, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "All Rows", "bbox": {"l": 213.1331, "t": 294.66019, "r": 248.45371999999998, "b": 303.20605, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "CUSTOMER_EMAIL", "bbox": {"l": 263.18381, "t": 279.81146, "r": 314.60641, "b": 285.50208, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "CUSTOMER_LOGIN_ID", "bbox": {"l": 263.18381, "t": 287.79828, "r": 323.65616, "b": 293.48892000000006, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "CUSTOMER_SECURITY_QUESTION", "bbox": {"l": 263.18381, "t": 295.7851299999999, "r": 355.06308, "b": 301.47577, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER", "bbox": {"l": 263.18381, "t": 303.77197, "r": 382.36545, "b": 309.46262, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "CUSTOMER TAX ID", "bbox": {"l": 263.18381, "t": 311.75882, "r": 316.46936, "b": 317.44946, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "None", "bbox": {"l": 448.07916000000006, "t": 295.7851299999999, "r": 462.67110999999994, "b": 301.47577, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "CUSTOMER", "bbox": {"l": 141.6514, "t": 324.798, "r": 193.06383, "b": 334.27286, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "_", "bbox": {"l": 294.03271, "t": 311.75864, "r": 297.34726, "b": 317.44928, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "_", "bbox": {"l": 307.37738, "t": 311.75864, "r": 310.69193, "b": 317.44928, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "Own Rows", "bbox": {"l": 208.8403, "t": 326.27468999999996, "r": 252.72676, "b": 334.82055999999994, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "None", "bbox": {"l": 315.53061, "t": 327.39941, "r": 330.12256, "b": 333.09006, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "None", "bbox": {"l": 448.08353, "t": 327.39941, "r": 462.67548, "b": 333.09006, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER", "bbox": {"l": 263.18353, "t": 343.04031, "r": 373.63156, "b": 348.73096, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "CUSTOMER_EMAIL", "bbox": {"l": 263.18353, "t": 351.0271599999999, "r": 314.60614, "b": 356.7178, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "CUSTOMER LOGIN ID", "bbox": {"l": 263.18381, "t": 359.0139199999999, "r": 323.6488, "b": 364.70456, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "No Rows", "bbox": {"l": 212.634, "t": 361.88251, "r": 248.92102000000003, "b": 370.42838, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "CUSTOMER_LOGIN_ID", "bbox": {"l": 263.18381, "t": 359.0139199999999, "r": 323.63718, "b": 364.70456, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "CUSTOMER_SECURITY_QUESTION", "bbox": {"l": 263.18381, "t": 367.00064, "r": 355.06308, "b": 372.69128, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER", "bbox": {"l": 263.18381, "t": 374.98749, "r": 382.36545, "b": 380.67813, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "CUSTOMER_TAX_ID", "bbox": {"l": 263.18381, "t": 382.97433, "r": 316.47134, "b": 388.66497999999996, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "ACCOUNT_NUMBER", "bbox": {"l": 427.81256, "t": 363.00723000000005, "r": 482.86053, "b": 368.69788, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "PUBLIC", "bbox": {"l": 160.8197, "t": 360.00649999999996, "r": 193.05859, "b": 369.48135, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 214.2675018310547, "t": 754.7578125, "r": 523.59357, "b": 763.9957885742188, "coord_origin": "TOPLEFT"}, "confidence": 0.9552486538887024, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.689697265625, "t": 754.2295532226562, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9034480452537537, "cells": [{"id": 1, "text": "41", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.74815368652344, "t": 70.60477447509766, "r": 545.29602, "b": 92.98249816894531, "coord_origin": "TOPLEFT"}, "confidence": 0.8913360834121704, "cells": [{"id": 2, "text": "The chart that is shown in Figure 4-3 shows the column access that is allowed by group and ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 545.29602, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "lists the column masks by table.", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 277.30936, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.09585571289062, "t": 401.38555908203125, "r": 245.08297729492188, "b": 410.9154052734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9149027466773987, "cells": [{"id": 4, "text": "Figure 4-3 Column masks", "bbox": {"l": 136.8, "t": 402.138, "r": 244.67220999999998, "b": 410.46301, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 136.05606079101562, "t": 427.2995300292969, "r": 543.45782, "b": 473.7316589355469, "coord_origin": "TOPLEFT"}, "confidence": 0.9834994673728943, "cells": [{"id": 5, "text": "For the demonstration and testing of RCAC in this example, the following users interact with ", "bbox": {"l": 136.8, "t": 428.14871, "r": 543.45782, "b": 437.36169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "the database. Furthermore, the column masking rules are developed independently of the ", "bbox": {"l": 136.8, "t": 440.14853, "r": 535.67096, "b": 449.36151, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "row permissions. If a person does not have permission to access the row, the column mask ", "bbox": {"l": 136.8, "t": 452.14834999999994, "r": 541.92706, "b": 461.36133, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "processing does not occur.", "bbox": {"l": 136.8, "t": 464.14816, "r": 255.69651999999996, "b": 473.36115, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 135.7457733154297, "t": 479.84906005859375, "r": 547.29358, "b": 502.5825500488281, "coord_origin": "TOPLEFT"}, "confidence": 0.9738782048225403, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 481.27734, "r": 141.78, "b": 490.05212, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Hernando Bedoya is a DB2 for i database engineer with the user profile of HBEDOYA. He ", "bbox": {"l": 151.20016, "t": 481.12796, "r": 547.29358, "b": 490.34094, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "is part of the DBE group.", "bbox": {"l": 151.20016, "t": 493.12778, "r": 260.65955, "b": 502.34076, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.60708618164062, "t": 509.2861328125, "r": 538.92694, "b": 531.83251953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9742493033409119, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.8, "t": 510.25696, "r": 141.78, "b": 519.03174, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Mike Cain is a DB2 for i database engineer with the user profile of MCAIN. He is part of ", "bbox": {"l": 151.20016, "t": 510.10757, "r": 538.92694, "b": 519.32056, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "the DBE group.", "bbox": {"l": 151.20016, "t": 522.10739, "r": 219.05766, "b": 531.32037, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.6043701171875, "t": 537.8555908203125, "r": 492.53729, "b": 560.4962768554688, "coord_origin": "TOPLEFT"}, "confidence": 0.9739224314689636, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 539.29636, "r": 141.78, "b": 548.07111, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Veronica G. Lucchess is a bank account administrator with the user profile of ", "bbox": {"l": 151.20016, "t": 539.14696, "r": 492.53729, "b": 548.35995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "VGLUCCHESS. She is part of the ADMIN group.", "bbox": {"l": 151.20016, "t": 551.14676, "r": 366.6041, "b": 560.35976, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.5557403564453, "t": 567.1375732421875, "r": 534.65118, "b": 589.821044921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9734449982643127, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.8, "t": 568.27597, "r": 141.78, "b": 577.05072, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Tom Q. Spenser is a bank teller with the user profile of TQSPENSER. He is part of the ", "bbox": {"l": 151.20016, "t": 568.12657, "r": 534.65118, "b": 577.33957, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "TELLER group.", "bbox": {"l": 151.20018, "t": 580.12637, "r": 219.6682, "b": 589.33937, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.36813354492188, "t": 595.9415893554688, "r": 529.1214, "b": 606.3484497070312, "coord_origin": "TOPLEFT"}, "confidence": 0.9539303779602051, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 597.25558, "r": 141.78001, "b": 606.03033, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "The IT security officer has the user profile of SECURITY. She is not part of any group.", "bbox": {"l": 151.20018, "t": 597.10619, "r": 529.1214, "b": 606.31918, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 135.52735900878906, "t": 613.2100219726562, "r": 547.33234, "b": 647.35835, "coord_origin": "TOPLEFT"}, "confidence": 0.9781912565231323, "cells": [{"id": 23, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 614.29515, "r": 141.78099, "b": 623.0699, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "The online banking web application uses the user profile WEBUSER. This profile is part of ", "bbox": {"l": 151.20116, "t": 614.14575, "r": 547.33234, "b": 623.35875, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "the CUSTOMER group. Any future customer-facing applications can also use this group if ", "bbox": {"l": 151.20116, "t": 626.14555, "r": 547.30249, "b": 635.35855, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "needed.", "bbox": {"l": 151.20116, "t": 638.14536, "r": 187.36992, "b": 647.35835, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 135.407958984375, "t": 653.871337890625, "r": 530.79578, "b": 664.398681640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9545347690582275, "cells": [{"id": 27, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 655.27457, "r": 141.78099, "b": 664.04932, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Adam O. Olsen is a bank customer with a web application login ID of KLD72CQR8JG.", "bbox": {"l": 151.20116, "t": 655.12517, "r": 530.79578, "b": 664.33817, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "table", "bbox": {"l": 135.74551391601562, "t": 107.74129486083984, "r": 529.2235107421875, "b": 398.3458557128906, "coord_origin": "TOPLEFT"}, "confidence": 0.8612171411514282, "cells": [{"id": 29, "text": "CUSTOMERS", "bbox": {"l": 287.80969, "t": 111.80242999999996, "r": 355.42447, "b": 123.18358999999998, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Row", "bbox": {"l": 223.74899, "t": 130.54552999999999, "r": 237.25998, "b": 137.17511000000002, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Permissions", "bbox": {"l": 211.90196, "t": 139.86339999999996, "r": 249.31949, "b": 146.49298, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Column", "bbox": {"l": 310.23877, "t": 130.54552999999999, "r": 334.52832, "b": 137.17511000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Maskin", "bbox": {"l": 309.20752, "t": 139.86339999999996, "r": 331.92926, "b": 146.49298, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "g", "bbox": {"l": 331.9368, "t": 139.86346000000003, "r": 335.58884, "b": 146.49303999999995, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "ACCOUNTS", "bbox": {"l": 428.2442, "t": 111.80242999999996, "r": 488.26617000000005, "b": 123.18358999999998, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Column", "bbox": {"l": 446.91339, "t": 130.54552999999999, "r": 471.20294, "b": 137.17511000000002, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Masking", "bbox": {"l": 445.88214, "t": 139.86339999999996, "r": 472.26285, "b": 146.49298, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "SECURITY", "bbox": {"l": 150.03751, "t": 173.64770999999996, "r": 193.05225, "b": 183.12256000000002, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "No Rows", "bbox": {"l": 212.634, "t": 175.52368, "r": 248.92102000000003, "b": 184.06952, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER", "bbox": {"l": 263.18381, "t": 156.68151999999998, "r": 373.63184, "b": 162.37212999999997, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "CUSTOMER_EMAIL", "bbox": {"l": 263.18381, "t": 164.66832999999997, "r": 314.60641, "b": 170.35895000000005, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CUSTOMER_LOGIN_ID", "bbox": {"l": 263.18381, "t": 172.65515000000005, "r": 323.65616, "b": 178.34576000000004, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "CUSTOMER_SECURITY_QUESTION", "bbox": {"l": 263.18381, "t": 180.64197000000001, "r": 355.06308, "b": 186.33258, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "ACCOUNT_NUMBER", "bbox": {"l": 427.81256, "t": 176.64855999999997, "r": 482.86053, "b": 182.33916999999997, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "g", "bbox": {"l": 468.61081, "t": 139.86346000000003, "r": 472.26285, "b": 146.49303999999995, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "DBE", "bbox": {"l": 174.7966, "t": 226.89313000000004, "r": 193.04816, "b": 236.36798, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER", "bbox": {"l": 263.18381, "t": 188.62872000000004, "r": 382.36545, "b": 194.31934, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "CUSTOMER_TAX_ID", "bbox": {"l": 263.18381, "t": 196.61554, "r": 316.47134, "b": 202.30615, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "All Rows", "bbox": {"l": 213.1331, "t": 227.43799, "r": 248.37787, "b": 235.98383, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER", "bbox": {"l": 263.18381, "t": 208.59569999999997, "r": 373.63184, "b": 214.28632000000005, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "CUSTOMER_EMAIL", "bbox": {"l": 263.18381, "t": 216.58252000000005, "r": 314.60641, "b": 222.27313000000004, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "CUSTOMER_LOGIN_ID", "bbox": {"l": 263.18381, "t": 224.56934, "r": 323.65616, "b": 230.25995, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ACCOUNT NUMBER", "bbox": {"l": 427.81161, "t": 228.56273999999996, "r": 482.91415, "b": 234.25336000000004, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "ADMIN", "bbox": {"l": 160.3871, "t": 261.00342, "r": 193.08365, "b": 270.47826999999995, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "CUSTOMER_SECURITY_QUESTION", "bbox": {"l": 263.18381, "t": 232.55615, "r": 355.06308, "b": 238.24676999999997, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER", "bbox": {"l": 263.18381, "t": 240.54296999999997, "r": 382.36545, "b": 246.23357999999996, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "CUSTOMER_TAX_ID", "bbox": {"l": 263.18381, "t": 248.52979000000005, "r": 316.47134, "b": 254.22040000000004, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "ACCOUNT_NUMBER", "bbox": {"l": 427.81161, "t": 228.56273999999996, "r": 482.9232799999999, "b": 234.25336000000004, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "All Rows", "bbox": {"l": 213.1331, "t": 263.04578000000004, "r": 248.45371999999998, "b": 271.59160999999995, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "None", "bbox": {"l": 315.53061, "t": 264.17065, "r": 330.12256, "b": 269.86127, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "None", "bbox": {"l": 448.08353, "t": 264.17065, "r": 462.67548, "b": 269.86127, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "TELLER", "bbox": {"l": 161.4852, "t": 293.44980000000004, "r": 193.04367, "b": 302.92464999999993, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "All Rows", "bbox": {"l": 213.1331, "t": 294.66019, "r": 248.45371999999998, "b": 303.20605, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "CUSTOMER_EMAIL", "bbox": {"l": 263.18381, "t": 279.81146, "r": 314.60641, "b": 285.50208, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "CUSTOMER_LOGIN_ID", "bbox": {"l": 263.18381, "t": 287.79828, "r": 323.65616, "b": 293.48892000000006, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "CUSTOMER_SECURITY_QUESTION", "bbox": {"l": 263.18381, "t": 295.7851299999999, "r": 355.06308, "b": 301.47577, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER", "bbox": {"l": 263.18381, "t": 303.77197, "r": 382.36545, "b": 309.46262, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "CUSTOMER TAX ID", "bbox": {"l": 263.18381, "t": 311.75882, "r": 316.46936, "b": 317.44946, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "None", "bbox": {"l": 448.07916000000006, "t": 295.7851299999999, "r": 462.67110999999994, "b": 301.47577, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "CUSTOMER", "bbox": {"l": 141.6514, "t": 324.798, "r": 193.06383, "b": 334.27286, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "_", "bbox": {"l": 294.03271, "t": 311.75864, "r": 297.34726, "b": 317.44928, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "_", "bbox": {"l": 307.37738, "t": 311.75864, "r": 310.69193, "b": 317.44928, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "Own Rows", "bbox": {"l": 208.8403, "t": 326.27468999999996, "r": 252.72676, "b": 334.82055999999994, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "None", "bbox": {"l": 315.53061, "t": 327.39941, "r": 330.12256, "b": 333.09006, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "None", "bbox": {"l": 448.08353, "t": 327.39941, "r": 462.67548, "b": 333.09006, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER", "bbox": {"l": 263.18353, "t": 343.04031, "r": 373.63156, "b": 348.73096, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "CUSTOMER_EMAIL", "bbox": {"l": 263.18353, "t": 351.0271599999999, "r": 314.60614, "b": 356.7178, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "CUSTOMER LOGIN ID", "bbox": {"l": 263.18381, "t": 359.0139199999999, "r": 323.6488, "b": 364.70456, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "No Rows", "bbox": {"l": 212.634, "t": 361.88251, "r": 248.92102000000003, "b": 370.42838, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "CUSTOMER_LOGIN_ID", "bbox": {"l": 263.18381, "t": 359.0139199999999, "r": 323.63718, "b": 364.70456, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "CUSTOMER_SECURITY_QUESTION", "bbox": {"l": 263.18381, "t": 367.00064, "r": 355.06308, "b": 372.69128, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER", "bbox": {"l": 263.18381, "t": 374.98749, "r": 382.36545, "b": 380.67813, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "CUSTOMER_TAX_ID", "bbox": {"l": 263.18381, "t": 382.97433, "r": 316.47134, "b": 388.66497999999996, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "ACCOUNT_NUMBER", "bbox": {"l": 427.81256, "t": 363.00723000000005, "r": 482.86053, "b": 368.69788, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "PUBLIC", "bbox": {"l": 160.8197, "t": 360.00649999999996, "r": 193.05859, "b": 369.48135, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {"12": {"label": "table", "id": 12, "page_no": 56, "cluster": {"id": 12, "label": "table", "bbox": {"l": 135.74551391601562, "t": 107.74129486083984, "r": 529.2235107421875, "b": 398.3458557128906, "coord_origin": "TOPLEFT"}, "confidence": 0.8612171411514282, "cells": [{"id": 29, "text": "CUSTOMERS", "bbox": {"l": 287.80969, "t": 111.80242999999996, "r": 355.42447, "b": 123.18358999999998, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Row", "bbox": {"l": 223.74899, "t": 130.54552999999999, "r": 237.25998, "b": 137.17511000000002, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Permissions", "bbox": {"l": 211.90196, "t": 139.86339999999996, "r": 249.31949, "b": 146.49298, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Column", "bbox": {"l": 310.23877, "t": 130.54552999999999, "r": 334.52832, "b": 137.17511000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Maskin", "bbox": {"l": 309.20752, "t": 139.86339999999996, "r": 331.92926, "b": 146.49298, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "g", "bbox": {"l": 331.9368, "t": 139.86346000000003, "r": 335.58884, "b": 146.49303999999995, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "ACCOUNTS", "bbox": {"l": 428.2442, "t": 111.80242999999996, "r": 488.26617000000005, "b": 123.18358999999998, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Column", "bbox": {"l": 446.91339, "t": 130.54552999999999, "r": 471.20294, "b": 137.17511000000002, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Masking", "bbox": {"l": 445.88214, "t": 139.86339999999996, "r": 472.26285, "b": 146.49298, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "SECURITY", "bbox": {"l": 150.03751, "t": 173.64770999999996, "r": 193.05225, "b": 183.12256000000002, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "No Rows", "bbox": {"l": 212.634, "t": 175.52368, "r": 248.92102000000003, "b": 184.06952, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER", "bbox": {"l": 263.18381, "t": 156.68151999999998, "r": 373.63184, "b": 162.37212999999997, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "CUSTOMER_EMAIL", "bbox": {"l": 263.18381, "t": 164.66832999999997, "r": 314.60641, "b": 170.35895000000005, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CUSTOMER_LOGIN_ID", "bbox": {"l": 263.18381, "t": 172.65515000000005, "r": 323.65616, "b": 178.34576000000004, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "CUSTOMER_SECURITY_QUESTION", "bbox": {"l": 263.18381, "t": 180.64197000000001, "r": 355.06308, "b": 186.33258, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "ACCOUNT_NUMBER", "bbox": {"l": 427.81256, "t": 176.64855999999997, "r": 482.86053, "b": 182.33916999999997, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "g", "bbox": {"l": 468.61081, "t": 139.86346000000003, "r": 472.26285, "b": 146.49303999999995, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "DBE", "bbox": {"l": 174.7966, "t": 226.89313000000004, "r": 193.04816, "b": 236.36798, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER", "bbox": {"l": 263.18381, "t": 188.62872000000004, "r": 382.36545, "b": 194.31934, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "CUSTOMER_TAX_ID", "bbox": {"l": 263.18381, "t": 196.61554, "r": 316.47134, "b": 202.30615, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "All Rows", "bbox": {"l": 213.1331, "t": 227.43799, "r": 248.37787, "b": 235.98383, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER", "bbox": {"l": 263.18381, "t": 208.59569999999997, "r": 373.63184, "b": 214.28632000000005, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "CUSTOMER_EMAIL", "bbox": {"l": 263.18381, "t": 216.58252000000005, "r": 314.60641, "b": 222.27313000000004, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "CUSTOMER_LOGIN_ID", "bbox": {"l": 263.18381, "t": 224.56934, "r": 323.65616, "b": 230.25995, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ACCOUNT NUMBER", "bbox": {"l": 427.81161, "t": 228.56273999999996, "r": 482.91415, "b": 234.25336000000004, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "ADMIN", "bbox": {"l": 160.3871, "t": 261.00342, "r": 193.08365, "b": 270.47826999999995, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "CUSTOMER_SECURITY_QUESTION", "bbox": {"l": 263.18381, "t": 232.55615, "r": 355.06308, "b": 238.24676999999997, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER", "bbox": {"l": 263.18381, "t": 240.54296999999997, "r": 382.36545, "b": 246.23357999999996, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "CUSTOMER_TAX_ID", "bbox": {"l": 263.18381, "t": 248.52979000000005, "r": 316.47134, "b": 254.22040000000004, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "ACCOUNT_NUMBER", "bbox": {"l": 427.81161, "t": 228.56273999999996, "r": 482.9232799999999, "b": 234.25336000000004, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "All Rows", "bbox": {"l": 213.1331, "t": 263.04578000000004, "r": 248.45371999999998, "b": 271.59160999999995, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "None", "bbox": {"l": 315.53061, "t": 264.17065, "r": 330.12256, "b": 269.86127, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "None", "bbox": {"l": 448.08353, "t": 264.17065, "r": 462.67548, "b": 269.86127, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "TELLER", "bbox": {"l": 161.4852, "t": 293.44980000000004, "r": 193.04367, "b": 302.92464999999993, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "All Rows", "bbox": {"l": 213.1331, "t": 294.66019, "r": 248.45371999999998, "b": 303.20605, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "CUSTOMER_EMAIL", "bbox": {"l": 263.18381, "t": 279.81146, "r": 314.60641, "b": 285.50208, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "CUSTOMER_LOGIN_ID", "bbox": {"l": 263.18381, "t": 287.79828, "r": 323.65616, "b": 293.48892000000006, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "CUSTOMER_SECURITY_QUESTION", "bbox": {"l": 263.18381, "t": 295.7851299999999, "r": 355.06308, "b": 301.47577, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER", "bbox": {"l": 263.18381, "t": 303.77197, "r": 382.36545, "b": 309.46262, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "CUSTOMER TAX ID", "bbox": {"l": 263.18381, "t": 311.75882, "r": 316.46936, "b": 317.44946, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "None", "bbox": {"l": 448.07916000000006, "t": 295.7851299999999, "r": 462.67110999999994, "b": 301.47577, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "CUSTOMER", "bbox": {"l": 141.6514, "t": 324.798, "r": 193.06383, "b": 334.27286, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "_", "bbox": {"l": 294.03271, "t": 311.75864, "r": 297.34726, "b": 317.44928, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "_", "bbox": {"l": 307.37738, "t": 311.75864, "r": 310.69193, "b": 317.44928, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "Own Rows", "bbox": {"l": 208.8403, "t": 326.27468999999996, "r": 252.72676, "b": 334.82055999999994, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "None", "bbox": {"l": 315.53061, "t": 327.39941, "r": 330.12256, "b": 333.09006, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "None", "bbox": {"l": 448.08353, "t": 327.39941, "r": 462.67548, "b": 333.09006, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER", "bbox": {"l": 263.18353, "t": 343.04031, "r": 373.63156, "b": 348.73096, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "CUSTOMER_EMAIL", "bbox": {"l": 263.18353, "t": 351.0271599999999, "r": 314.60614, "b": 356.7178, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "CUSTOMER LOGIN ID", "bbox": {"l": 263.18381, "t": 359.0139199999999, "r": 323.6488, "b": 364.70456, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "No Rows", "bbox": {"l": 212.634, "t": 361.88251, "r": 248.92102000000003, "b": 370.42838, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "CUSTOMER_LOGIN_ID", "bbox": {"l": 263.18381, "t": 359.0139199999999, "r": 323.63718, "b": 364.70456, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "CUSTOMER_SECURITY_QUESTION", "bbox": {"l": 263.18381, "t": 367.00064, "r": 355.06308, "b": 372.69128, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER", "bbox": {"l": 263.18381, "t": 374.98749, "r": 382.36545, "b": 380.67813, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "CUSTOMER_TAX_ID", "bbox": {"l": 263.18381, "t": 382.97433, "r": 316.47134, "b": 388.66497999999996, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "ACCOUNT_NUMBER", "bbox": {"l": 427.81256, "t": 363.00723000000005, "r": 482.86053, "b": 368.69788, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "PUBLIC", "bbox": {"l": 160.8197, "t": 360.00649999999996, "r": 193.05859, "b": 369.48135, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "ched", "ched", "nl", "fcel", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "fcel", "nl"], "num_rows": 7, "num_cols": 4, "table_cells": [{"bbox": {"l": 287.80969, "t": 111.80242999999996, "r": 355.42447, "b": 123.18358999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "CUSTOMERS", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 428.2442, "t": 111.80242999999996, "r": 488.26617000000005, "b": 123.18358999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "ACCOUNTS", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 150.03751, "t": 173.64770999999996, "r": 193.05225, "b": 183.12256000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "SECURITY", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 212.634, "t": 175.52368, "r": 248.92102000000003, "b": 184.06952, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "No Rows", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 263.18381, "t": 156.68151999999998, "r": 382.36545, "b": 202.30615, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER CUSTOMER_EMAIL CUSTOMER_LOGIN_ID CUSTOMER_SECURITY_QUESTION CUSTOMER_SECURITY_QUESTION_ANSWER CUSTOMER_TAX_ID", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 427.81256, "t": 176.64855999999997, "r": 482.86053, "b": 182.33916999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "ACCOUNT_NUMBER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 174.7966, "t": 226.89313000000004, "r": 193.04816, "b": 236.36798, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "DBE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 213.1331, "t": 227.43799, "r": 248.37787, "b": 235.98383, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "All Rows", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 263.18381, "t": 208.59569999999997, "r": 382.36545, "b": 254.22040000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER CUSTOMER_EMAIL CUSTOMER_LOGIN_ID CUSTOMER_SECURITY_QUESTION CUSTOMER_SECURITY_QUESTION_ANSWER CUSTOMER_TAX_ID", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 427.81161, "t": 228.56273999999996, "r": 482.9232799999999, "b": 234.25336000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "ACCOUNT NUMBER ACCOUNT_NUMBER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 160.3871, "t": 261.00342, "r": 193.08365, "b": 270.47826999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ADMIN", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 213.1331, "t": 263.04578000000004, "r": 248.45371999999998, "b": 271.59160999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "All Rows", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 315.53061, "t": 264.17065, "r": 330.12256, "b": 269.86127, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "None", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 448.08353, "t": 264.17065, "r": 462.67548, "b": 269.86127, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "None", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 161.4852, "t": 293.44980000000004, "r": 193.04367, "b": 302.92464999999993, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "TELLER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 213.1331, "t": 294.66019, "r": 248.45371999999998, "b": 303.20605, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "All Rows", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 263.18381, "t": 279.81146, "r": 382.36545, "b": 317.44946, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "CUSTOMER_EMAIL CUSTOMER_LOGIN_ID CUSTOMER_SECURITY_QUESTION CUSTOMER_SECURITY_QUESTION_ANSWER CUSTOMER TAX ID _ _", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 448.07916000000006, "t": 295.7851299999999, "r": 462.67110999999994, "b": 301.47577, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "None", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 141.6514, "t": 324.798, "r": 193.06383, "b": 334.27286, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CUSTOMER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 208.8403, "t": 326.27468999999996, "r": 252.72676, "b": 334.82055999999994, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Own Rows", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 315.53061, "t": 327.39941, "r": 330.12256, "b": 333.09006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "None", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 448.08353, "t": 327.39941, "r": 462.67548, "b": 333.09006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "None", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 263.18353, "t": 343.04031, "r": 382.36545, "b": 388.66497999999996, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER CUSTOMER_EMAIL CUSTOMER LOGIN ID CUSTOMER_LOGIN_ID CUSTOMER_SECURITY_QUESTION CUSTOMER_SECURITY_QUESTION_ANSWER CUSTOMER_TAX_ID", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 212.634, "t": 361.88251, "r": 248.92102000000003, "b": 370.42838, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "No Rows", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 427.81256, "t": 363.00723000000005, "r": 482.86053, "b": 368.69788, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "ACCOUNT_NUMBER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 160.8197, "t": 360.00649999999996, "r": 193.05859, "b": 369.48135, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PUBLIC", "column_header": false, "row_header": false, "row_section": false}]}}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 56, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.2675018310547, "t": 754.7578125, "r": 523.59357, "b": 763.9957885742188, "coord_origin": "TOPLEFT"}, "confidence": 0.9552486538887024, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 56, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.689697265625, "t": 754.2295532226562, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9034480452537537, "cells": [{"id": 1, "text": "41", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "41"}, {"label": "text", "id": 2, "page_no": 56, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.74815368652344, "t": 70.60477447509766, "r": 545.29602, "b": 92.98249816894531, "coord_origin": "TOPLEFT"}, "confidence": 0.8913360834121704, "cells": [{"id": 2, "text": "The chart that is shown in Figure 4-3 shows the column access that is allowed by group and ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 545.29602, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "lists the column masks by table.", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 277.30936, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "The chart that is shown in Figure 4-3 shows the column access that is allowed by group and lists the column masks by table."}, {"label": "caption", "id": 3, "page_no": 56, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.09585571289062, "t": 401.38555908203125, "r": 245.08297729492188, "b": 410.9154052734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9149027466773987, "cells": [{"id": 4, "text": "Figure 4-3 Column masks", "bbox": {"l": 136.8, "t": 402.138, "r": 244.67220999999998, "b": 410.46301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-3 Column masks"}, {"label": "text", "id": 4, "page_no": 56, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.05606079101562, "t": 427.2995300292969, "r": 543.45782, "b": 473.7316589355469, "coord_origin": "TOPLEFT"}, "confidence": 0.9834994673728943, "cells": [{"id": 5, "text": "For the demonstration and testing of RCAC in this example, the following users interact with ", "bbox": {"l": 136.8, "t": 428.14871, "r": 543.45782, "b": 437.36169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "the database. Furthermore, the column masking rules are developed independently of the ", "bbox": {"l": 136.8, "t": 440.14853, "r": 535.67096, "b": 449.36151, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "row permissions. If a person does not have permission to access the row, the column mask ", "bbox": {"l": 136.8, "t": 452.14834999999994, "r": 541.92706, "b": 461.36133, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "processing does not occur.", "bbox": {"l": 136.8, "t": 464.14816, "r": 255.69651999999996, "b": 473.36115, "coord_origin": "TOPLEFT"}}]}, "text": "For the demonstration and testing of RCAC in this example, the following users interact with the database. Furthermore, the column masking rules are developed independently of the row permissions. If a person does not have permission to access the row, the column mask processing does not occur."}, {"label": "list_item", "id": 5, "page_no": 56, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.7457733154297, "t": 479.84906005859375, "r": 547.29358, "b": 502.5825500488281, "coord_origin": "TOPLEFT"}, "confidence": 0.9738782048225403, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 481.27734, "r": 141.78, "b": 490.05212, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Hernando Bedoya is a DB2 for i database engineer with the user profile of HBEDOYA. He ", "bbox": {"l": 151.20016, "t": 481.12796, "r": 547.29358, "b": 490.34094, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "is part of the DBE group.", "bbox": {"l": 151.20016, "t": 493.12778, "r": 260.65955, "b": 502.34076, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Hernando Bedoya is a DB2 for i database engineer with the user profile of HBEDOYA. He is part of the DBE group."}, {"label": "list_item", "id": 6, "page_no": 56, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.60708618164062, "t": 509.2861328125, "r": 538.92694, "b": 531.83251953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9742493033409119, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.8, "t": 510.25696, "r": 141.78, "b": 519.03174, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Mike Cain is a DB2 for i database engineer with the user profile of MCAIN. He is part of ", "bbox": {"l": 151.20016, "t": 510.10757, "r": 538.92694, "b": 519.32056, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "the DBE group.", "bbox": {"l": 151.20016, "t": 522.10739, "r": 219.05766, "b": 531.32037, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Mike Cain is a DB2 for i database engineer with the user profile of MCAIN. He is part of the DBE group."}, {"label": "list_item", "id": 7, "page_no": 56, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.6043701171875, "t": 537.8555908203125, "r": 492.53729, "b": 560.4962768554688, "coord_origin": "TOPLEFT"}, "confidence": 0.9739224314689636, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 539.29636, "r": 141.78, "b": 548.07111, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Veronica G. Lucchess is a bank account administrator with the user profile of ", "bbox": {"l": 151.20016, "t": 539.14696, "r": 492.53729, "b": 548.35995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "VGLUCCHESS. She is part of the ADMIN group.", "bbox": {"l": 151.20016, "t": 551.14676, "r": 366.6041, "b": 560.35976, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Veronica G. Lucchess is a bank account administrator with the user profile of VGLUCCHESS. She is part of the ADMIN group."}, {"label": "list_item", "id": 8, "page_no": 56, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.5557403564453, "t": 567.1375732421875, "r": 534.65118, "b": 589.821044921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9734449982643127, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.8, "t": 568.27597, "r": 141.78, "b": 577.05072, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Tom Q. Spenser is a bank teller with the user profile of TQSPENSER. He is part of the ", "bbox": {"l": 151.20016, "t": 568.12657, "r": 534.65118, "b": 577.33957, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "TELLER group.", "bbox": {"l": 151.20018, "t": 580.12637, "r": 219.6682, "b": 589.33937, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Tom Q. Spenser is a bank teller with the user profile of TQSPENSER. He is part of the TELLER group."}, {"label": "list_item", "id": 9, "page_no": 56, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.36813354492188, "t": 595.9415893554688, "r": 529.1214, "b": 606.3484497070312, "coord_origin": "TOPLEFT"}, "confidence": 0.9539303779602051, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 597.25558, "r": 141.78001, "b": 606.03033, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "The IT security officer has the user profile of SECURITY. She is not part of any group.", "bbox": {"l": 151.20018, "t": 597.10619, "r": 529.1214, "b": 606.31918, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The IT security officer has the user profile of SECURITY. She is not part of any group."}, {"label": "list_item", "id": 10, "page_no": 56, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.52735900878906, "t": 613.2100219726562, "r": 547.33234, "b": 647.35835, "coord_origin": "TOPLEFT"}, "confidence": 0.9781912565231323, "cells": [{"id": 23, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 614.29515, "r": 141.78099, "b": 623.0699, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "The online banking web application uses the user profile WEBUSER. This profile is part of ", "bbox": {"l": 151.20116, "t": 614.14575, "r": 547.33234, "b": 623.35875, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "the CUSTOMER group. Any future customer-facing applications can also use this group if ", "bbox": {"l": 151.20116, "t": 626.14555, "r": 547.30249, "b": 635.35855, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "needed.", "bbox": {"l": 151.20116, "t": 638.14536, "r": 187.36992, "b": 647.35835, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The online banking web application uses the user profile WEBUSER. This profile is part of the CUSTOMER group. Any future customer-facing applications can also use this group if needed."}, {"label": "list_item", "id": 11, "page_no": 56, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.407958984375, "t": 653.871337890625, "r": 530.79578, "b": 664.398681640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9545347690582275, "cells": [{"id": 27, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 655.27457, "r": 141.78099, "b": 664.04932, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Adam O. Olsen is a bank customer with a web application login ID of KLD72CQR8JG.", "bbox": {"l": 151.20116, "t": 655.12517, "r": 530.79578, "b": 664.33817, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Adam O. Olsen is a bank customer with a web application login ID of KLD72CQR8JG."}, {"label": "table", "id": 12, "page_no": 56, "cluster": {"id": 12, "label": "table", "bbox": {"l": 135.74551391601562, "t": 107.74129486083984, "r": 529.2235107421875, "b": 398.3458557128906, "coord_origin": "TOPLEFT"}, "confidence": 0.8612171411514282, "cells": [{"id": 29, "text": "CUSTOMERS", "bbox": {"l": 287.80969, "t": 111.80242999999996, "r": 355.42447, "b": 123.18358999999998, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Row", "bbox": {"l": 223.74899, "t": 130.54552999999999, "r": 237.25998, "b": 137.17511000000002, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Permissions", "bbox": {"l": 211.90196, "t": 139.86339999999996, "r": 249.31949, "b": 146.49298, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Column", "bbox": {"l": 310.23877, "t": 130.54552999999999, "r": 334.52832, "b": 137.17511000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Maskin", "bbox": {"l": 309.20752, "t": 139.86339999999996, "r": 331.92926, "b": 146.49298, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "g", "bbox": {"l": 331.9368, "t": 139.86346000000003, "r": 335.58884, "b": 146.49303999999995, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "ACCOUNTS", "bbox": {"l": 428.2442, "t": 111.80242999999996, "r": 488.26617000000005, "b": 123.18358999999998, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Column", "bbox": {"l": 446.91339, "t": 130.54552999999999, "r": 471.20294, "b": 137.17511000000002, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Masking", "bbox": {"l": 445.88214, "t": 139.86339999999996, "r": 472.26285, "b": 146.49298, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "SECURITY", "bbox": {"l": 150.03751, "t": 173.64770999999996, "r": 193.05225, "b": 183.12256000000002, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "No Rows", "bbox": {"l": 212.634, "t": 175.52368, "r": 248.92102000000003, "b": 184.06952, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER", "bbox": {"l": 263.18381, "t": 156.68151999999998, "r": 373.63184, "b": 162.37212999999997, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "CUSTOMER_EMAIL", "bbox": {"l": 263.18381, "t": 164.66832999999997, "r": 314.60641, "b": 170.35895000000005, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CUSTOMER_LOGIN_ID", "bbox": {"l": 263.18381, "t": 172.65515000000005, "r": 323.65616, "b": 178.34576000000004, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "CUSTOMER_SECURITY_QUESTION", "bbox": {"l": 263.18381, "t": 180.64197000000001, "r": 355.06308, "b": 186.33258, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "ACCOUNT_NUMBER", "bbox": {"l": 427.81256, "t": 176.64855999999997, "r": 482.86053, "b": 182.33916999999997, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "g", "bbox": {"l": 468.61081, "t": 139.86346000000003, "r": 472.26285, "b": 146.49303999999995, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "DBE", "bbox": {"l": 174.7966, "t": 226.89313000000004, "r": 193.04816, "b": 236.36798, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER", "bbox": {"l": 263.18381, "t": 188.62872000000004, "r": 382.36545, "b": 194.31934, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "CUSTOMER_TAX_ID", "bbox": {"l": 263.18381, "t": 196.61554, "r": 316.47134, "b": 202.30615, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "All Rows", "bbox": {"l": 213.1331, "t": 227.43799, "r": 248.37787, "b": 235.98383, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER", "bbox": {"l": 263.18381, "t": 208.59569999999997, "r": 373.63184, "b": 214.28632000000005, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "CUSTOMER_EMAIL", "bbox": {"l": 263.18381, "t": 216.58252000000005, "r": 314.60641, "b": 222.27313000000004, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "CUSTOMER_LOGIN_ID", "bbox": {"l": 263.18381, "t": 224.56934, "r": 323.65616, "b": 230.25995, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ACCOUNT NUMBER", "bbox": {"l": 427.81161, "t": 228.56273999999996, "r": 482.91415, "b": 234.25336000000004, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "ADMIN", "bbox": {"l": 160.3871, "t": 261.00342, "r": 193.08365, "b": 270.47826999999995, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "CUSTOMER_SECURITY_QUESTION", "bbox": {"l": 263.18381, "t": 232.55615, "r": 355.06308, "b": 238.24676999999997, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER", "bbox": {"l": 263.18381, "t": 240.54296999999997, "r": 382.36545, "b": 246.23357999999996, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "CUSTOMER_TAX_ID", "bbox": {"l": 263.18381, "t": 248.52979000000005, "r": 316.47134, "b": 254.22040000000004, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "ACCOUNT_NUMBER", "bbox": {"l": 427.81161, "t": 228.56273999999996, "r": 482.9232799999999, "b": 234.25336000000004, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "All Rows", "bbox": {"l": 213.1331, "t": 263.04578000000004, "r": 248.45371999999998, "b": 271.59160999999995, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "None", "bbox": {"l": 315.53061, "t": 264.17065, "r": 330.12256, "b": 269.86127, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "None", "bbox": {"l": 448.08353, "t": 264.17065, "r": 462.67548, "b": 269.86127, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "TELLER", "bbox": {"l": 161.4852, "t": 293.44980000000004, "r": 193.04367, "b": 302.92464999999993, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "All Rows", "bbox": {"l": 213.1331, "t": 294.66019, "r": 248.45371999999998, "b": 303.20605, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "CUSTOMER_EMAIL", "bbox": {"l": 263.18381, "t": 279.81146, "r": 314.60641, "b": 285.50208, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "CUSTOMER_LOGIN_ID", "bbox": {"l": 263.18381, "t": 287.79828, "r": 323.65616, "b": 293.48892000000006, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "CUSTOMER_SECURITY_QUESTION", "bbox": {"l": 263.18381, "t": 295.7851299999999, "r": 355.06308, "b": 301.47577, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER", "bbox": {"l": 263.18381, "t": 303.77197, "r": 382.36545, "b": 309.46262, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "CUSTOMER TAX ID", "bbox": {"l": 263.18381, "t": 311.75882, "r": 316.46936, "b": 317.44946, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "None", "bbox": {"l": 448.07916000000006, "t": 295.7851299999999, "r": 462.67110999999994, "b": 301.47577, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "CUSTOMER", "bbox": {"l": 141.6514, "t": 324.798, "r": 193.06383, "b": 334.27286, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "_", "bbox": {"l": 294.03271, "t": 311.75864, "r": 297.34726, "b": 317.44928, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "_", "bbox": {"l": 307.37738, "t": 311.75864, "r": 310.69193, "b": 317.44928, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "Own Rows", "bbox": {"l": 208.8403, "t": 326.27468999999996, "r": 252.72676, "b": 334.82055999999994, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "None", "bbox": {"l": 315.53061, "t": 327.39941, "r": 330.12256, "b": 333.09006, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "None", "bbox": {"l": 448.08353, "t": 327.39941, "r": 462.67548, "b": 333.09006, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER", "bbox": {"l": 263.18353, "t": 343.04031, "r": 373.63156, "b": 348.73096, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "CUSTOMER_EMAIL", "bbox": {"l": 263.18353, "t": 351.0271599999999, "r": 314.60614, "b": 356.7178, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "CUSTOMER LOGIN ID", "bbox": {"l": 263.18381, "t": 359.0139199999999, "r": 323.6488, "b": 364.70456, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "No Rows", "bbox": {"l": 212.634, "t": 361.88251, "r": 248.92102000000003, "b": 370.42838, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "CUSTOMER_LOGIN_ID", "bbox": {"l": 263.18381, "t": 359.0139199999999, "r": 323.63718, "b": 364.70456, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "CUSTOMER_SECURITY_QUESTION", "bbox": {"l": 263.18381, "t": 367.00064, "r": 355.06308, "b": 372.69128, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER", "bbox": {"l": 263.18381, "t": 374.98749, "r": 382.36545, "b": 380.67813, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "CUSTOMER_TAX_ID", "bbox": {"l": 263.18381, "t": 382.97433, "r": 316.47134, "b": 388.66497999999996, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "ACCOUNT_NUMBER", "bbox": {"l": 427.81256, "t": 363.00723000000005, "r": 482.86053, "b": 368.69788, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "PUBLIC", "bbox": {"l": 160.8197, "t": 360.00649999999996, "r": 193.05859, "b": 369.48135, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "ched", "ched", "nl", "fcel", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "fcel", "nl"], "num_rows": 7, "num_cols": 4, "table_cells": [{"bbox": {"l": 287.80969, "t": 111.80242999999996, "r": 355.42447, "b": 123.18358999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "CUSTOMERS", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 428.2442, "t": 111.80242999999996, "r": 488.26617000000005, "b": 123.18358999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "ACCOUNTS", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 150.03751, "t": 173.64770999999996, "r": 193.05225, "b": 183.12256000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "SECURITY", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 212.634, "t": 175.52368, "r": 248.92102000000003, "b": 184.06952, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "No Rows", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 263.18381, "t": 156.68151999999998, "r": 382.36545, "b": 202.30615, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER CUSTOMER_EMAIL CUSTOMER_LOGIN_ID CUSTOMER_SECURITY_QUESTION CUSTOMER_SECURITY_QUESTION_ANSWER CUSTOMER_TAX_ID", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 427.81256, "t": 176.64855999999997, "r": 482.86053, "b": 182.33916999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "ACCOUNT_NUMBER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 174.7966, "t": 226.89313000000004, "r": 193.04816, "b": 236.36798, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "DBE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 213.1331, "t": 227.43799, "r": 248.37787, "b": 235.98383, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "All Rows", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 263.18381, "t": 208.59569999999997, "r": 382.36545, "b": 254.22040000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER CUSTOMER_EMAIL CUSTOMER_LOGIN_ID CUSTOMER_SECURITY_QUESTION CUSTOMER_SECURITY_QUESTION_ANSWER CUSTOMER_TAX_ID", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 427.81161, "t": 228.56273999999996, "r": 482.9232799999999, "b": 234.25336000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "ACCOUNT NUMBER ACCOUNT_NUMBER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 160.3871, "t": 261.00342, "r": 193.08365, "b": 270.47826999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ADMIN", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 213.1331, "t": 263.04578000000004, "r": 248.45371999999998, "b": 271.59160999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "All Rows", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 315.53061, "t": 264.17065, "r": 330.12256, "b": 269.86127, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "None", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 448.08353, "t": 264.17065, "r": 462.67548, "b": 269.86127, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "None", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 161.4852, "t": 293.44980000000004, "r": 193.04367, "b": 302.92464999999993, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "TELLER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 213.1331, "t": 294.66019, "r": 248.45371999999998, "b": 303.20605, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "All Rows", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 263.18381, "t": 279.81146, "r": 382.36545, "b": 317.44946, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "CUSTOMER_EMAIL CUSTOMER_LOGIN_ID CUSTOMER_SECURITY_QUESTION CUSTOMER_SECURITY_QUESTION_ANSWER CUSTOMER TAX ID _ _", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 448.07916000000006, "t": 295.7851299999999, "r": 462.67110999999994, "b": 301.47577, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "None", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 141.6514, "t": 324.798, "r": 193.06383, "b": 334.27286, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CUSTOMER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 208.8403, "t": 326.27468999999996, "r": 252.72676, "b": 334.82055999999994, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Own Rows", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 315.53061, "t": 327.39941, "r": 330.12256, "b": 333.09006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "None", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 448.08353, "t": 327.39941, "r": 462.67548, "b": 333.09006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "None", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 263.18353, "t": 343.04031, "r": 382.36545, "b": 388.66497999999996, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER CUSTOMER_EMAIL CUSTOMER LOGIN ID CUSTOMER_LOGIN_ID CUSTOMER_SECURITY_QUESTION CUSTOMER_SECURITY_QUESTION_ANSWER CUSTOMER_TAX_ID", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 212.634, "t": 361.88251, "r": 248.92102000000003, "b": 370.42838, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "No Rows", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 427.81256, "t": 363.00723000000005, "r": 482.86053, "b": 368.69788, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "ACCOUNT_NUMBER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 160.8197, "t": 360.00649999999996, "r": 193.05859, "b": 369.48135, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PUBLIC", "column_header": false, "row_header": false, "row_section": false}]}], "body": [{"label": "text", "id": 2, "page_no": 56, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.74815368652344, "t": 70.60477447509766, "r": 545.29602, "b": 92.98249816894531, "coord_origin": "TOPLEFT"}, "confidence": 0.8913360834121704, "cells": [{"id": 2, "text": "The chart that is shown in Figure 4-3 shows the column access that is allowed by group and ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 545.29602, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "lists the column masks by table.", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 277.30936, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "The chart that is shown in Figure 4-3 shows the column access that is allowed by group and lists the column masks by table."}, {"label": "caption", "id": 3, "page_no": 56, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.09585571289062, "t": 401.38555908203125, "r": 245.08297729492188, "b": 410.9154052734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9149027466773987, "cells": [{"id": 4, "text": "Figure 4-3 Column masks", "bbox": {"l": 136.8, "t": 402.138, "r": 244.67220999999998, "b": 410.46301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-3 Column masks"}, {"label": "text", "id": 4, "page_no": 56, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.05606079101562, "t": 427.2995300292969, "r": 543.45782, "b": 473.7316589355469, "coord_origin": "TOPLEFT"}, "confidence": 0.9834994673728943, "cells": [{"id": 5, "text": "For the demonstration and testing of RCAC in this example, the following users interact with ", "bbox": {"l": 136.8, "t": 428.14871, "r": 543.45782, "b": 437.36169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "the database. Furthermore, the column masking rules are developed independently of the ", "bbox": {"l": 136.8, "t": 440.14853, "r": 535.67096, "b": 449.36151, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "row permissions. If a person does not have permission to access the row, the column mask ", "bbox": {"l": 136.8, "t": 452.14834999999994, "r": 541.92706, "b": 461.36133, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "processing does not occur.", "bbox": {"l": 136.8, "t": 464.14816, "r": 255.69651999999996, "b": 473.36115, "coord_origin": "TOPLEFT"}}]}, "text": "For the demonstration and testing of RCAC in this example, the following users interact with the database. Furthermore, the column masking rules are developed independently of the row permissions. If a person does not have permission to access the row, the column mask processing does not occur."}, {"label": "list_item", "id": 5, "page_no": 56, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.7457733154297, "t": 479.84906005859375, "r": 547.29358, "b": 502.5825500488281, "coord_origin": "TOPLEFT"}, "confidence": 0.9738782048225403, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 481.27734, "r": 141.78, "b": 490.05212, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Hernando Bedoya is a DB2 for i database engineer with the user profile of HBEDOYA. He ", "bbox": {"l": 151.20016, "t": 481.12796, "r": 547.29358, "b": 490.34094, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "is part of the DBE group.", "bbox": {"l": 151.20016, "t": 493.12778, "r": 260.65955, "b": 502.34076, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Hernando Bedoya is a DB2 for i database engineer with the user profile of HBEDOYA. He is part of the DBE group."}, {"label": "list_item", "id": 6, "page_no": 56, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.60708618164062, "t": 509.2861328125, "r": 538.92694, "b": 531.83251953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9742493033409119, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.8, "t": 510.25696, "r": 141.78, "b": 519.03174, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Mike Cain is a DB2 for i database engineer with the user profile of MCAIN. He is part of ", "bbox": {"l": 151.20016, "t": 510.10757, "r": 538.92694, "b": 519.32056, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "the DBE group.", "bbox": {"l": 151.20016, "t": 522.10739, "r": 219.05766, "b": 531.32037, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Mike Cain is a DB2 for i database engineer with the user profile of MCAIN. He is part of the DBE group."}, {"label": "list_item", "id": 7, "page_no": 56, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.6043701171875, "t": 537.8555908203125, "r": 492.53729, "b": 560.4962768554688, "coord_origin": "TOPLEFT"}, "confidence": 0.9739224314689636, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 539.29636, "r": 141.78, "b": 548.07111, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Veronica G. Lucchess is a bank account administrator with the user profile of ", "bbox": {"l": 151.20016, "t": 539.14696, "r": 492.53729, "b": 548.35995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "VGLUCCHESS. She is part of the ADMIN group.", "bbox": {"l": 151.20016, "t": 551.14676, "r": 366.6041, "b": 560.35976, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Veronica G. Lucchess is a bank account administrator with the user profile of VGLUCCHESS. She is part of the ADMIN group."}, {"label": "list_item", "id": 8, "page_no": 56, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.5557403564453, "t": 567.1375732421875, "r": 534.65118, "b": 589.821044921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9734449982643127, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.8, "t": 568.27597, "r": 141.78, "b": 577.05072, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Tom Q. Spenser is a bank teller with the user profile of TQSPENSER. He is part of the ", "bbox": {"l": 151.20016, "t": 568.12657, "r": 534.65118, "b": 577.33957, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "TELLER group.", "bbox": {"l": 151.20018, "t": 580.12637, "r": 219.6682, "b": 589.33937, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Tom Q. Spenser is a bank teller with the user profile of TQSPENSER. He is part of the TELLER group."}, {"label": "list_item", "id": 9, "page_no": 56, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.36813354492188, "t": 595.9415893554688, "r": 529.1214, "b": 606.3484497070312, "coord_origin": "TOPLEFT"}, "confidence": 0.9539303779602051, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 597.25558, "r": 141.78001, "b": 606.03033, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "The IT security officer has the user profile of SECURITY. She is not part of any group.", "bbox": {"l": 151.20018, "t": 597.10619, "r": 529.1214, "b": 606.31918, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The IT security officer has the user profile of SECURITY. She is not part of any group."}, {"label": "list_item", "id": 10, "page_no": 56, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.52735900878906, "t": 613.2100219726562, "r": 547.33234, "b": 647.35835, "coord_origin": "TOPLEFT"}, "confidence": 0.9781912565231323, "cells": [{"id": 23, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 614.29515, "r": 141.78099, "b": 623.0699, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "The online banking web application uses the user profile WEBUSER. This profile is part of ", "bbox": {"l": 151.20116, "t": 614.14575, "r": 547.33234, "b": 623.35875, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "the CUSTOMER group. Any future customer-facing applications can also use this group if ", "bbox": {"l": 151.20116, "t": 626.14555, "r": 547.30249, "b": 635.35855, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "needed.", "bbox": {"l": 151.20116, "t": 638.14536, "r": 187.36992, "b": 647.35835, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The online banking web application uses the user profile WEBUSER. This profile is part of the CUSTOMER group. Any future customer-facing applications can also use this group if needed."}, {"label": "list_item", "id": 11, "page_no": 56, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.407958984375, "t": 653.871337890625, "r": 530.79578, "b": 664.398681640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9545347690582275, "cells": [{"id": 27, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 655.27457, "r": 141.78099, "b": 664.04932, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Adam O. Olsen is a bank customer with a web application login ID of KLD72CQR8JG.", "bbox": {"l": 151.20116, "t": 655.12517, "r": 530.79578, "b": 664.33817, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Adam O. Olsen is a bank customer with a web application login ID of KLD72CQR8JG."}, {"label": "table", "id": 12, "page_no": 56, "cluster": {"id": 12, "label": "table", "bbox": {"l": 135.74551391601562, "t": 107.74129486083984, "r": 529.2235107421875, "b": 398.3458557128906, "coord_origin": "TOPLEFT"}, "confidence": 0.8612171411514282, "cells": [{"id": 29, "text": "CUSTOMERS", "bbox": {"l": 287.80969, "t": 111.80242999999996, "r": 355.42447, "b": 123.18358999999998, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Row", "bbox": {"l": 223.74899, "t": 130.54552999999999, "r": 237.25998, "b": 137.17511000000002, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Permissions", "bbox": {"l": 211.90196, "t": 139.86339999999996, "r": 249.31949, "b": 146.49298, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Column", "bbox": {"l": 310.23877, "t": 130.54552999999999, "r": 334.52832, "b": 137.17511000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Maskin", "bbox": {"l": 309.20752, "t": 139.86339999999996, "r": 331.92926, "b": 146.49298, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "g", "bbox": {"l": 331.9368, "t": 139.86346000000003, "r": 335.58884, "b": 146.49303999999995, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "ACCOUNTS", "bbox": {"l": 428.2442, "t": 111.80242999999996, "r": 488.26617000000005, "b": 123.18358999999998, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Column", "bbox": {"l": 446.91339, "t": 130.54552999999999, "r": 471.20294, "b": 137.17511000000002, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Masking", "bbox": {"l": 445.88214, "t": 139.86339999999996, "r": 472.26285, "b": 146.49298, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "SECURITY", "bbox": {"l": 150.03751, "t": 173.64770999999996, "r": 193.05225, "b": 183.12256000000002, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "No Rows", "bbox": {"l": 212.634, "t": 175.52368, "r": 248.92102000000003, "b": 184.06952, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER", "bbox": {"l": 263.18381, "t": 156.68151999999998, "r": 373.63184, "b": 162.37212999999997, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "CUSTOMER_EMAIL", "bbox": {"l": 263.18381, "t": 164.66832999999997, "r": 314.60641, "b": 170.35895000000005, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CUSTOMER_LOGIN_ID", "bbox": {"l": 263.18381, "t": 172.65515000000005, "r": 323.65616, "b": 178.34576000000004, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "CUSTOMER_SECURITY_QUESTION", "bbox": {"l": 263.18381, "t": 180.64197000000001, "r": 355.06308, "b": 186.33258, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "ACCOUNT_NUMBER", "bbox": {"l": 427.81256, "t": 176.64855999999997, "r": 482.86053, "b": 182.33916999999997, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "g", "bbox": {"l": 468.61081, "t": 139.86346000000003, "r": 472.26285, "b": 146.49303999999995, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "DBE", "bbox": {"l": 174.7966, "t": 226.89313000000004, "r": 193.04816, "b": 236.36798, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER", "bbox": {"l": 263.18381, "t": 188.62872000000004, "r": 382.36545, "b": 194.31934, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "CUSTOMER_TAX_ID", "bbox": {"l": 263.18381, "t": 196.61554, "r": 316.47134, "b": 202.30615, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "All Rows", "bbox": {"l": 213.1331, "t": 227.43799, "r": 248.37787, "b": 235.98383, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER", "bbox": {"l": 263.18381, "t": 208.59569999999997, "r": 373.63184, "b": 214.28632000000005, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "CUSTOMER_EMAIL", "bbox": {"l": 263.18381, "t": 216.58252000000005, "r": 314.60641, "b": 222.27313000000004, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "CUSTOMER_LOGIN_ID", "bbox": {"l": 263.18381, "t": 224.56934, "r": 323.65616, "b": 230.25995, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ACCOUNT NUMBER", "bbox": {"l": 427.81161, "t": 228.56273999999996, "r": 482.91415, "b": 234.25336000000004, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "ADMIN", "bbox": {"l": 160.3871, "t": 261.00342, "r": 193.08365, "b": 270.47826999999995, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "CUSTOMER_SECURITY_QUESTION", "bbox": {"l": 263.18381, "t": 232.55615, "r": 355.06308, "b": 238.24676999999997, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER", "bbox": {"l": 263.18381, "t": 240.54296999999997, "r": 382.36545, "b": 246.23357999999996, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "CUSTOMER_TAX_ID", "bbox": {"l": 263.18381, "t": 248.52979000000005, "r": 316.47134, "b": 254.22040000000004, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "ACCOUNT_NUMBER", "bbox": {"l": 427.81161, "t": 228.56273999999996, "r": 482.9232799999999, "b": 234.25336000000004, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "All Rows", "bbox": {"l": 213.1331, "t": 263.04578000000004, "r": 248.45371999999998, "b": 271.59160999999995, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "None", "bbox": {"l": 315.53061, "t": 264.17065, "r": 330.12256, "b": 269.86127, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "None", "bbox": {"l": 448.08353, "t": 264.17065, "r": 462.67548, "b": 269.86127, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "TELLER", "bbox": {"l": 161.4852, "t": 293.44980000000004, "r": 193.04367, "b": 302.92464999999993, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "All Rows", "bbox": {"l": 213.1331, "t": 294.66019, "r": 248.45371999999998, "b": 303.20605, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "CUSTOMER_EMAIL", "bbox": {"l": 263.18381, "t": 279.81146, "r": 314.60641, "b": 285.50208, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "CUSTOMER_LOGIN_ID", "bbox": {"l": 263.18381, "t": 287.79828, "r": 323.65616, "b": 293.48892000000006, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "CUSTOMER_SECURITY_QUESTION", "bbox": {"l": 263.18381, "t": 295.7851299999999, "r": 355.06308, "b": 301.47577, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER", "bbox": {"l": 263.18381, "t": 303.77197, "r": 382.36545, "b": 309.46262, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "CUSTOMER TAX ID", "bbox": {"l": 263.18381, "t": 311.75882, "r": 316.46936, "b": 317.44946, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "None", "bbox": {"l": 448.07916000000006, "t": 295.7851299999999, "r": 462.67110999999994, "b": 301.47577, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "CUSTOMER", "bbox": {"l": 141.6514, "t": 324.798, "r": 193.06383, "b": 334.27286, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "_", "bbox": {"l": 294.03271, "t": 311.75864, "r": 297.34726, "b": 317.44928, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "_", "bbox": {"l": 307.37738, "t": 311.75864, "r": 310.69193, "b": 317.44928, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "Own Rows", "bbox": {"l": 208.8403, "t": 326.27468999999996, "r": 252.72676, "b": 334.82055999999994, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "None", "bbox": {"l": 315.53061, "t": 327.39941, "r": 330.12256, "b": 333.09006, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "None", "bbox": {"l": 448.08353, "t": 327.39941, "r": 462.67548, "b": 333.09006, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER", "bbox": {"l": 263.18353, "t": 343.04031, "r": 373.63156, "b": 348.73096, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "CUSTOMER_EMAIL", "bbox": {"l": 263.18353, "t": 351.0271599999999, "r": 314.60614, "b": 356.7178, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "CUSTOMER LOGIN ID", "bbox": {"l": 263.18381, "t": 359.0139199999999, "r": 323.6488, "b": 364.70456, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "No Rows", "bbox": {"l": 212.634, "t": 361.88251, "r": 248.92102000000003, "b": 370.42838, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "CUSTOMER_LOGIN_ID", "bbox": {"l": 263.18381, "t": 359.0139199999999, "r": 323.63718, "b": 364.70456, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "CUSTOMER_SECURITY_QUESTION", "bbox": {"l": 263.18381, "t": 367.00064, "r": 355.06308, "b": 372.69128, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER", "bbox": {"l": 263.18381, "t": 374.98749, "r": 382.36545, "b": 380.67813, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "CUSTOMER_TAX_ID", "bbox": {"l": 263.18381, "t": 382.97433, "r": 316.47134, "b": 388.66497999999996, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "ACCOUNT_NUMBER", "bbox": {"l": 427.81256, "t": 363.00723000000005, "r": 482.86053, "b": 368.69788, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "PUBLIC", "bbox": {"l": 160.8197, "t": 360.00649999999996, "r": 193.05859, "b": 369.48135, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "ched", "ched", "nl", "fcel", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "fcel", "nl"], "num_rows": 7, "num_cols": 4, "table_cells": [{"bbox": {"l": 287.80969, "t": 111.80242999999996, "r": 355.42447, "b": 123.18358999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "CUSTOMERS", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 428.2442, "t": 111.80242999999996, "r": 488.26617000000005, "b": 123.18358999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "ACCOUNTS", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 150.03751, "t": 173.64770999999996, "r": 193.05225, "b": 183.12256000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "SECURITY", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 212.634, "t": 175.52368, "r": 248.92102000000003, "b": 184.06952, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "No Rows", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 263.18381, "t": 156.68151999999998, "r": 382.36545, "b": 202.30615, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER CUSTOMER_EMAIL CUSTOMER_LOGIN_ID CUSTOMER_SECURITY_QUESTION CUSTOMER_SECURITY_QUESTION_ANSWER CUSTOMER_TAX_ID", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 427.81256, "t": 176.64855999999997, "r": 482.86053, "b": 182.33916999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "ACCOUNT_NUMBER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 174.7966, "t": 226.89313000000004, "r": 193.04816, "b": 236.36798, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "DBE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 213.1331, "t": 227.43799, "r": 248.37787, "b": 235.98383, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "All Rows", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 263.18381, "t": 208.59569999999997, "r": 382.36545, "b": 254.22040000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER CUSTOMER_EMAIL CUSTOMER_LOGIN_ID CUSTOMER_SECURITY_QUESTION CUSTOMER_SECURITY_QUESTION_ANSWER CUSTOMER_TAX_ID", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 427.81161, "t": 228.56273999999996, "r": 482.9232799999999, "b": 234.25336000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "ACCOUNT NUMBER ACCOUNT_NUMBER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 160.3871, "t": 261.00342, "r": 193.08365, "b": 270.47826999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ADMIN", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 213.1331, "t": 263.04578000000004, "r": 248.45371999999998, "b": 271.59160999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "All Rows", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 315.53061, "t": 264.17065, "r": 330.12256, "b": 269.86127, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "None", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 448.08353, "t": 264.17065, "r": 462.67548, "b": 269.86127, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "None", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 161.4852, "t": 293.44980000000004, "r": 193.04367, "b": 302.92464999999993, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "TELLER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 213.1331, "t": 294.66019, "r": 248.45371999999998, "b": 303.20605, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "All Rows", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 263.18381, "t": 279.81146, "r": 382.36545, "b": 317.44946, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "CUSTOMER_EMAIL CUSTOMER_LOGIN_ID CUSTOMER_SECURITY_QUESTION CUSTOMER_SECURITY_QUESTION_ANSWER CUSTOMER TAX ID _ _", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 448.07916000000006, "t": 295.7851299999999, "r": 462.67110999999994, "b": 301.47577, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "None", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 141.6514, "t": 324.798, "r": 193.06383, "b": 334.27286, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CUSTOMER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 208.8403, "t": 326.27468999999996, "r": 252.72676, "b": 334.82055999999994, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Own Rows", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 315.53061, "t": 327.39941, "r": 330.12256, "b": 333.09006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "None", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 448.08353, "t": 327.39941, "r": 462.67548, "b": 333.09006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "None", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 263.18353, "t": 343.04031, "r": 382.36545, "b": 388.66497999999996, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER CUSTOMER_EMAIL CUSTOMER LOGIN ID CUSTOMER_LOGIN_ID CUSTOMER_SECURITY_QUESTION CUSTOMER_SECURITY_QUESTION_ANSWER CUSTOMER_TAX_ID", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 212.634, "t": 361.88251, "r": 248.92102000000003, "b": 370.42838, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "No Rows", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 427.81256, "t": 363.00723000000005, "r": 482.86053, "b": 368.69788, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "ACCOUNT_NUMBER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 160.8197, "t": 360.00649999999996, "r": 193.05859, "b": 369.48135, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PUBLIC", "column_header": false, "row_header": false, "row_section": false}]}], "headers": [{"label": "page_footer", "id": 0, "page_no": 56, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.2675018310547, "t": 754.7578125, "r": 523.59357, "b": 763.9957885742188, "coord_origin": "TOPLEFT"}, "confidence": 0.9552486538887024, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 56, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.689697265625, "t": 754.2295532226562, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9034480452537537, "cells": [{"id": 1, "text": "41", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "41"}]}}, {"page_no": 57, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "42 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "4.3", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 87.421951, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Implementation of RCAC", "bbox": {"l": 91.946342, "t": 71.22069999999997, "r": 283.63077, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 4-4 shows the data model of the banking scenario that is used in this example.", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 514.24524, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Figure 4-4 Data model of the banking scenario", "bbox": {"l": 136.8, "t": 304.698, "r": 326.74951, "b": 313.02301, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "This section covers the following steps:", "bbox": {"l": 136.8, "t": 330.64871, "r": 309.19659, "b": 339.86169, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "GLYPH", "bbox": {"l": 136.8, "t": 347.77789, "r": 141.78, "b": 356.55267, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Reviewing the tables that are used in this example", "bbox": {"l": 151.20016, "t": 347.62851, "r": 372.99231, "b": 356.84148999999996, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 359.77771, "r": 141.78, "b": 368.5524899999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Assigning function ID QIBM_DB_SECADM to the Database Engineers group", "bbox": {"l": 151.20016, "t": 359.62833, "r": 490.64977999999996, "b": 368.8413100000001, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "GLYPH", "bbox": {"l": 136.8, "t": 371.77753000000007, "r": 141.78, "b": 380.55231000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Creating group profiles for the users and their roles", "bbox": {"l": 151.20016, "t": 371.62814, "r": 376.40479, "b": 380.84113, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 383.77734, "r": 141.78, "b": 392.55212, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Creating the CUSTOMER_LOGIN_ID global variable", "bbox": {"l": 151.20016, "t": 383.62796, "r": 384.36783, "b": 392.84093999999993, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 395.7771599999999, "r": 141.78, "b": 404.55194, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Defining and creating row permissions", "bbox": {"l": 151.20016, "t": 395.62778, "r": 320.76019, "b": 404.84076000000005, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "GLYPH", "bbox": {"l": 136.8, "t": 407.77698000000004, "r": 141.78, "b": 416.55176, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Defining and creating column masks", "bbox": {"l": 151.20016, "t": 407.62759, "r": 312.2962, "b": 416.84058, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "GLYPH", "bbox": {"l": 136.8, "t": 419.77679, "r": 141.78, "b": 428.55157, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Restricting the inserting and updating of masked data", "bbox": {"l": 151.20016, "t": 419.62741, "r": 387.66956, "b": 428.84039, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "GLYPH", "bbox": {"l": 136.8, "t": 431.77661, "r": 141.78, "b": 440.55139, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Activating row and column access control", "bbox": {"l": 151.20016, "t": 431.62723, "r": 334.12161, "b": 440.84021, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "GLYPH", "bbox": {"l": 136.8, "t": 443.77643, "r": 141.78, "b": 452.55121, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Reviewing row permissions", "bbox": {"l": 151.20016, "t": 443.6270400000001, "r": 271.91437, "b": 452.84003000000007, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "GLYPH", "bbox": {"l": 136.8, "t": 455.77624999999995, "r": 141.78, "b": 464.55103, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Demonstrating data access with RCAC", "bbox": {"l": 151.20016, "t": 455.62686, "r": 323.46332, "b": 464.83984, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "GLYPH", "bbox": {"l": 136.8, "t": 467.77606, "r": 141.78, "b": 476.55084, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Query implementation with RCAC activated", "bbox": {"l": 151.20016, "t": 467.62668, "r": 343.13235, "b": 476.83966, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "4.3.1", "bbox": {"l": 64.800003, "t": 497.51462, "r": 93.916855, "b": 509.50259, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Reviewing the tables that are used in this example", "bbox": {"l": 97.556473, "t": 497.51462, "r": 410.41861, "b": 509.50259, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "This section reviews the tables that are used in this example. As shown in Figure 4-5, there ", "bbox": {"l": 136.8, "t": 523.66861, "r": 541.10931, "b": 532.88159, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "are three main tables that are involved in the data model: CUSTOMERS, ACCOUNTS, and ", "bbox": {"l": 136.8, "t": 535.6684, "r": 540.25769, "b": 544.88141, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "TRANSACTIONS. There are 90 customers.", "bbox": {"l": 136.80002, "t": 547.66821, "r": 328.83478, "b": 556.88121, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Figure 4-5 Tables that are used in the banking example", "bbox": {"l": 136.8, "t": 632.058, "r": 360.5787, "b": 640.38301, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Note:", "bbox": {"l": 142.8, "t": 669.04871, "r": 168.33246, "b": 678.26172, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": " Appendix A, \u201cDatabase definitions for the RCAC banking example\u201d on page 121 ", "bbox": {"l": 168.36035, "t": 669.04871, "r": 525.7511, "b": 678.26172, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "provides a script that you can use to create all the database definitions or DDLs to ", "bbox": {"l": 142.8, "t": 681.04852, "r": 507.59195, "b": 690.26153, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "re-create this RCAC example.", "bbox": {"l": 142.8, "t": 693.048332, "r": 274.7132, "b": 702.261337, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.21815490722656, "t": 754.3350219726562, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9143346548080444, "cells": [{"id": 0, "text": "42 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.31220245361328, "t": 754.725341796875, "r": 334.42142, "b": 763.9521484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9546207785606384, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.2745590209961, "t": 70.01868438720703, "r": 283.63077, "b": 86.2046127319336, "coord_origin": "TOPLEFT"}, "confidence": 0.9637309312820435, "cells": [{"id": 2, "text": "4.3", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 87.421951, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Implementation of RCAC", "bbox": {"l": 91.946342, "t": 71.22069999999997, "r": 283.63077, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 136.4054412841797, "t": 102.70518493652344, "r": 514.24524, "b": 112.8113784790039, "coord_origin": "TOPLEFT"}, "confidence": 0.9328395128250122, "cells": [{"id": 4, "text": "Figure 4-4 shows the data model of the banking scenario that is used in this example.", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 514.24524, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "caption", "bbox": {"l": 136.15525817871094, "t": 304.1411437988281, "r": 327.0066223144531, "b": 313.5270690917969, "coord_origin": "TOPLEFT"}, "confidence": 0.9527500867843628, "cells": [{"id": 5, "text": "Figure 4-4 Data model of the banking scenario", "bbox": {"l": 136.8, "t": 304.698, "r": 326.74951, "b": 313.02301, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.9271240234375, "t": 330.0567321777344, "r": 309.19659, "b": 340.14447021484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9125084280967712, "cells": [{"id": 6, "text": "This section covers the following steps:", "bbox": {"l": 136.8, "t": 330.64871, "r": 309.19659, "b": 339.86169, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.67567443847656, "t": 346.7349853515625, "r": 372.99231, "b": 356.84148999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.9496878385543823, "cells": [{"id": 7, "text": "GLYPH", "bbox": {"l": 136.8, "t": 347.77789, "r": 141.78, "b": 356.55267, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Reviewing the tables that are used in this example", "bbox": {"l": 151.20016, "t": 347.62851, "r": 372.99231, "b": 356.84148999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.61679077148438, "t": 358.9612731933594, "r": 490.73876953125, "b": 369.148193359375, "coord_origin": "TOPLEFT"}, "confidence": 0.950393795967102, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 359.77771, "r": 141.78, "b": 368.5524899999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Assigning function ID QIBM_DB_SECADM to the Database Engineers group", "bbox": {"l": 151.20016, "t": 359.62833, "r": 490.64977999999996, "b": 368.8413100000001, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.76889038085938, "t": 370.83758544921875, "r": 376.5744934082031, "b": 381.0343933105469, "coord_origin": "TOPLEFT"}, "confidence": 0.941796600818634, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.8, "t": 371.77753000000007, "r": 141.78, "b": 380.55231000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Creating group profiles for the users and their roles", "bbox": {"l": 151.20016, "t": 371.62814, "r": 376.40479, "b": 380.84113, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.6211395263672, "t": 382.32257080078125, "r": 384.36783, "b": 393.1546630859375, "coord_origin": "TOPLEFT"}, "confidence": 0.9414183497428894, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 383.77734, "r": 141.78, "b": 392.55212, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Creating the CUSTOMER_LOGIN_ID global variable", "bbox": {"l": 151.20016, "t": 383.62796, "r": 384.36783, "b": 392.84093999999993, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 135.83248901367188, "t": 394.7557373046875, "r": 320.7999572753906, "b": 405.1979675292969, "coord_origin": "TOPLEFT"}, "confidence": 0.9373244643211365, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 395.7771599999999, "r": 141.78, "b": 404.55194, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Defining and creating row permissions", "bbox": {"l": 151.20016, "t": 395.62778, "r": 320.76019, "b": 404.84076000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 135.7002716064453, "t": 406.6421813964844, "r": 312.3022155761719, "b": 417.1481628417969, "coord_origin": "TOPLEFT"}, "confidence": 0.933269202709198, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.8, "t": 407.77698000000004, "r": 141.78, "b": 416.55176, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Defining and creating column masks", "bbox": {"l": 151.20016, "t": 407.62759, "r": 312.2962, "b": 416.84058, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "list_item", "bbox": {"l": 135.64413452148438, "t": 418.73663330078125, "r": 387.66956, "b": 429.0638732910156, "coord_origin": "TOPLEFT"}, "confidence": 0.9468620419502258, "cells": [{"id": 19, "text": "GLYPH", "bbox": {"l": 136.8, "t": 419.77679, "r": 141.78, "b": 428.55157, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Restricting the inserting and updating of masked data", "bbox": {"l": 151.20016, "t": 419.62741, "r": 387.66956, "b": 428.84039, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "list_item", "bbox": {"l": 135.75306701660156, "t": 430.962890625, "r": 334.12161, "b": 440.8876647949219, "coord_origin": "TOPLEFT"}, "confidence": 0.9373239874839783, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.8, "t": 431.77661, "r": 141.78, "b": 440.55139, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Activating row and column access control", "bbox": {"l": 151.20016, "t": 431.62723, "r": 334.12161, "b": 440.84021, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "list_item", "bbox": {"l": 135.65428161621094, "t": 442.6007995605469, "r": 271.91437, "b": 453.1351013183594, "coord_origin": "TOPLEFT"}, "confidence": 0.9312872290611267, "cells": [{"id": 23, "text": "GLYPH", "bbox": {"l": 136.8, "t": 443.77643, "r": 141.78, "b": 452.55121, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Reviewing row permissions", "bbox": {"l": 151.20016, "t": 443.6270400000001, "r": 271.91437, "b": 452.84003000000007, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "list_item", "bbox": {"l": 135.8694305419922, "t": 454.0513000488281, "r": 323.46332, "b": 464.83984, "coord_origin": "TOPLEFT"}, "confidence": 0.9388870000839233, "cells": [{"id": 25, "text": "GLYPH", "bbox": {"l": 136.8, "t": 455.77624999999995, "r": 141.78, "b": 464.55103, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Demonstrating data access with RCAC", "bbox": {"l": 151.20016, "t": 455.62686, "r": 323.46332, "b": 464.83984, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "list_item", "bbox": {"l": 135.73135375976562, "t": 466.73114013671875, "r": 343.2095031738281, "b": 476.8760070800781, "coord_origin": "TOPLEFT"}, "confidence": 0.9516265392303467, "cells": [{"id": 27, "text": "GLYPH", "bbox": {"l": 136.8, "t": 467.77606, "r": 141.78, "b": 476.55084, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Query implementation with RCAC activated", "bbox": {"l": 151.20016, "t": 467.62668, "r": 343.13235, "b": 476.83966, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "section_header", "bbox": {"l": 64.17279052734375, "t": 496.611083984375, "r": 410.41861, "b": 509.50259, "coord_origin": "TOPLEFT"}, "confidence": 0.9660991430282593, "cells": [{"id": 29, "text": "4.3.1", "bbox": {"l": 64.800003, "t": 497.51462, "r": 93.916855, "b": 509.50259, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Reviewing the tables that are used in this example", "bbox": {"l": 97.556473, "t": 497.51462, "r": 410.41861, "b": 509.50259, "coord_origin": "TOPLEFT"}}]}, {"id": 18, "label": "text", "bbox": {"l": 135.51849365234375, "t": 522.7078857421875, "r": 541.10931, "b": 556.88121, "coord_origin": "TOPLEFT"}, "confidence": 0.9787154197692871, "cells": [{"id": 31, "text": "This section reviews the tables that are used in this example. As shown in Figure 4-5, there ", "bbox": {"l": 136.8, "t": 523.66861, "r": 541.10931, "b": 532.88159, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "are three main tables that are involved in the data model: CUSTOMERS, ACCOUNTS, and ", "bbox": {"l": 136.8, "t": 535.6684, "r": 540.25769, "b": 544.88141, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "TRANSACTIONS. There are 90 customers.", "bbox": {"l": 136.80002, "t": 547.66821, "r": 328.83478, "b": 556.88121, "coord_origin": "TOPLEFT"}}]}, {"id": 19, "label": "caption", "bbox": {"l": 136.22021484375, "t": 631.5818481445312, "r": 361.25982666015625, "b": 640.684326171875, "coord_origin": "TOPLEFT"}, "confidence": 0.950111448764801, "cells": [{"id": 34, "text": "Figure 4-5 Tables that are used in the banking example", "bbox": {"l": 136.8, "t": 632.058, "r": 360.5787, "b": 640.38301, "coord_origin": "TOPLEFT"}}]}, {"id": 20, "label": "text", "bbox": {"l": 142.3465576171875, "t": 667.8150024414062, "r": 525.7511, "b": 702.261337, "coord_origin": "TOPLEFT"}, "confidence": 0.9773550629615784, "cells": [{"id": 35, "text": "Note:", "bbox": {"l": 142.8, "t": 669.04871, "r": 168.33246, "b": 678.26172, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": " Appendix A, \u201cDatabase definitions for the RCAC banking example\u201d on page 121 ", "bbox": {"l": 168.36035, "t": 669.04871, "r": 525.7511, "b": 678.26172, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "provides a script that you can use to create all the database definitions or DDLs to ", "bbox": {"l": 142.8, "t": 681.04852, "r": 507.59195, "b": 690.26153, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "re-create this RCAC example.", "bbox": {"l": 142.8, "t": 693.048332, "r": 274.7132, "b": 702.261337, "coord_origin": "TOPLEFT"}}]}, {"id": 21, "label": "picture", "bbox": {"l": 136.12950134277344, "t": 127.06898498535156, "r": 451.212158203125, "b": 301.4627380371094, "coord_origin": "TOPLEFT"}, "confidence": 0.986349880695343, "cells": []}, {"id": 22, "label": "picture", "bbox": {"l": 135.7327880859375, "t": 570.8567504882812, "r": 415.3825988769531, "b": 628.9186401367188, "coord_origin": "TOPLEFT"}, "confidence": 0.9538632035255432, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 57, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.21815490722656, "t": 754.3350219726562, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9143346548080444, "cells": [{"id": 0, "text": "42 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "42"}, {"label": "page_footer", "id": 1, "page_no": 57, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.31220245361328, "t": 754.725341796875, "r": 334.42142, "b": 763.9521484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9546207785606384, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "section_header", "id": 2, "page_no": 57, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.2745590209961, "t": 70.01868438720703, "r": 283.63077, "b": 86.2046127319336, "coord_origin": "TOPLEFT"}, "confidence": 0.9637309312820435, "cells": [{"id": 2, "text": "4.3", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 87.421951, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Implementation of RCAC", "bbox": {"l": 91.946342, "t": 71.22069999999997, "r": 283.63077, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, "text": "4.3 Implementation of RCAC"}, {"label": "text", "id": 3, "page_no": 57, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.4054412841797, "t": 102.70518493652344, "r": 514.24524, "b": 112.8113784790039, "coord_origin": "TOPLEFT"}, "confidence": 0.9328395128250122, "cells": [{"id": 4, "text": "Figure 4-4 shows the data model of the banking scenario that is used in this example.", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 514.24524, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-4 shows the data model of the banking scenario that is used in this example."}, {"label": "caption", "id": 4, "page_no": 57, "cluster": {"id": 4, "label": "caption", "bbox": {"l": 136.15525817871094, "t": 304.1411437988281, "r": 327.0066223144531, "b": 313.5270690917969, "coord_origin": "TOPLEFT"}, "confidence": 0.9527500867843628, "cells": [{"id": 5, "text": "Figure 4-4 Data model of the banking scenario", "bbox": {"l": 136.8, "t": 304.698, "r": 326.74951, "b": 313.02301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-4 Data model of the banking scenario"}, {"label": "text", "id": 5, "page_no": 57, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.9271240234375, "t": 330.0567321777344, "r": 309.19659, "b": 340.14447021484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9125084280967712, "cells": [{"id": 6, "text": "This section covers the following steps:", "bbox": {"l": 136.8, "t": 330.64871, "r": 309.19659, "b": 339.86169, "coord_origin": "TOPLEFT"}}]}, "text": "This section covers the following steps:"}, {"label": "list_item", "id": 6, "page_no": 57, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.67567443847656, "t": 346.7349853515625, "r": 372.99231, "b": 356.84148999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.9496878385543823, "cells": [{"id": 7, "text": "GLYPH", "bbox": {"l": 136.8, "t": 347.77789, "r": 141.78, "b": 356.55267, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Reviewing the tables that are used in this example", "bbox": {"l": 151.20016, "t": 347.62851, "r": 372.99231, "b": 356.84148999999996, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Reviewing the tables that are used in this example"}, {"label": "list_item", "id": 7, "page_no": 57, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.61679077148438, "t": 358.9612731933594, "r": 490.73876953125, "b": 369.148193359375, "coord_origin": "TOPLEFT"}, "confidence": 0.950393795967102, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 359.77771, "r": 141.78, "b": 368.5524899999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Assigning function ID QIBM_DB_SECADM to the Database Engineers group", "bbox": {"l": 151.20016, "t": 359.62833, "r": 490.64977999999996, "b": 368.8413100000001, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Assigning function ID QIBM_DB_SECADM to the Database Engineers group"}, {"label": "list_item", "id": 8, "page_no": 57, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.76889038085938, "t": 370.83758544921875, "r": 376.5744934082031, "b": 381.0343933105469, "coord_origin": "TOPLEFT"}, "confidence": 0.941796600818634, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.8, "t": 371.77753000000007, "r": 141.78, "b": 380.55231000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Creating group profiles for the users and their roles", "bbox": {"l": 151.20016, "t": 371.62814, "r": 376.40479, "b": 380.84113, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Creating group profiles for the users and their roles"}, {"label": "list_item", "id": 9, "page_no": 57, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.6211395263672, "t": 382.32257080078125, "r": 384.36783, "b": 393.1546630859375, "coord_origin": "TOPLEFT"}, "confidence": 0.9414183497428894, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 383.77734, "r": 141.78, "b": 392.55212, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Creating the CUSTOMER_LOGIN_ID global variable", "bbox": {"l": 151.20016, "t": 383.62796, "r": 384.36783, "b": 392.84093999999993, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Creating the CUSTOMER_LOGIN_ID global variable"}, {"label": "list_item", "id": 10, "page_no": 57, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.83248901367188, "t": 394.7557373046875, "r": 320.7999572753906, "b": 405.1979675292969, "coord_origin": "TOPLEFT"}, "confidence": 0.9373244643211365, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 395.7771599999999, "r": 141.78, "b": 404.55194, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Defining and creating row permissions", "bbox": {"l": 151.20016, "t": 395.62778, "r": 320.76019, "b": 404.84076000000005, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Defining and creating row permissions"}, {"label": "list_item", "id": 11, "page_no": 57, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.7002716064453, "t": 406.6421813964844, "r": 312.3022155761719, "b": 417.1481628417969, "coord_origin": "TOPLEFT"}, "confidence": 0.933269202709198, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.8, "t": 407.77698000000004, "r": 141.78, "b": 416.55176, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Defining and creating column masks", "bbox": {"l": 151.20016, "t": 407.62759, "r": 312.2962, "b": 416.84058, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Defining and creating column masks"}, {"label": "list_item", "id": 12, "page_no": 57, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 135.64413452148438, "t": 418.73663330078125, "r": 387.66956, "b": 429.0638732910156, "coord_origin": "TOPLEFT"}, "confidence": 0.9468620419502258, "cells": [{"id": 19, "text": "GLYPH", "bbox": {"l": 136.8, "t": 419.77679, "r": 141.78, "b": 428.55157, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Restricting the inserting and updating of masked data", "bbox": {"l": 151.20016, "t": 419.62741, "r": 387.66956, "b": 428.84039, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Restricting the inserting and updating of masked data"}, {"label": "list_item", "id": 13, "page_no": 57, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 135.75306701660156, "t": 430.962890625, "r": 334.12161, "b": 440.8876647949219, "coord_origin": "TOPLEFT"}, "confidence": 0.9373239874839783, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.8, "t": 431.77661, "r": 141.78, "b": 440.55139, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Activating row and column access control", "bbox": {"l": 151.20016, "t": 431.62723, "r": 334.12161, "b": 440.84021, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Activating row and column access control"}, {"label": "list_item", "id": 14, "page_no": 57, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 135.65428161621094, "t": 442.6007995605469, "r": 271.91437, "b": 453.1351013183594, "coord_origin": "TOPLEFT"}, "confidence": 0.9312872290611267, "cells": [{"id": 23, "text": "GLYPH", "bbox": {"l": 136.8, "t": 443.77643, "r": 141.78, "b": 452.55121, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Reviewing row permissions", "bbox": {"l": 151.20016, "t": 443.6270400000001, "r": 271.91437, "b": 452.84003000000007, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Reviewing row permissions"}, {"label": "list_item", "id": 15, "page_no": 57, "cluster": {"id": 15, "label": "list_item", "bbox": {"l": 135.8694305419922, "t": 454.0513000488281, "r": 323.46332, "b": 464.83984, "coord_origin": "TOPLEFT"}, "confidence": 0.9388870000839233, "cells": [{"id": 25, "text": "GLYPH", "bbox": {"l": 136.8, "t": 455.77624999999995, "r": 141.78, "b": 464.55103, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Demonstrating data access with RCAC", "bbox": {"l": 151.20016, "t": 455.62686, "r": 323.46332, "b": 464.83984, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Demonstrating data access with RCAC"}, {"label": "list_item", "id": 16, "page_no": 57, "cluster": {"id": 16, "label": "list_item", "bbox": {"l": 135.73135375976562, "t": 466.73114013671875, "r": 343.2095031738281, "b": 476.8760070800781, "coord_origin": "TOPLEFT"}, "confidence": 0.9516265392303467, "cells": [{"id": 27, "text": "GLYPH", "bbox": {"l": 136.8, "t": 467.77606, "r": 141.78, "b": 476.55084, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Query implementation with RCAC activated", "bbox": {"l": 151.20016, "t": 467.62668, "r": 343.13235, "b": 476.83966, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Query implementation with RCAC activated"}, {"label": "section_header", "id": 17, "page_no": 57, "cluster": {"id": 17, "label": "section_header", "bbox": {"l": 64.17279052734375, "t": 496.611083984375, "r": 410.41861, "b": 509.50259, "coord_origin": "TOPLEFT"}, "confidence": 0.9660991430282593, "cells": [{"id": 29, "text": "4.3.1", "bbox": {"l": 64.800003, "t": 497.51462, "r": 93.916855, "b": 509.50259, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Reviewing the tables that are used in this example", "bbox": {"l": 97.556473, "t": 497.51462, "r": 410.41861, "b": 509.50259, "coord_origin": "TOPLEFT"}}]}, "text": "4.3.1 Reviewing the tables that are used in this example"}, {"label": "text", "id": 18, "page_no": 57, "cluster": {"id": 18, "label": "text", "bbox": {"l": 135.51849365234375, "t": 522.7078857421875, "r": 541.10931, "b": 556.88121, "coord_origin": "TOPLEFT"}, "confidence": 0.9787154197692871, "cells": [{"id": 31, "text": "This section reviews the tables that are used in this example. As shown in Figure 4-5, there ", "bbox": {"l": 136.8, "t": 523.66861, "r": 541.10931, "b": 532.88159, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "are three main tables that are involved in the data model: CUSTOMERS, ACCOUNTS, and ", "bbox": {"l": 136.8, "t": 535.6684, "r": 540.25769, "b": 544.88141, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "TRANSACTIONS. There are 90 customers.", "bbox": {"l": 136.80002, "t": 547.66821, "r": 328.83478, "b": 556.88121, "coord_origin": "TOPLEFT"}}]}, "text": "This section reviews the tables that are used in this example. As shown in Figure 4-5, there are three main tables that are involved in the data model: CUSTOMERS, ACCOUNTS, and TRANSACTIONS. There are 90 customers."}, {"label": "caption", "id": 19, "page_no": 57, "cluster": {"id": 19, "label": "caption", "bbox": {"l": 136.22021484375, "t": 631.5818481445312, "r": 361.25982666015625, "b": 640.684326171875, "coord_origin": "TOPLEFT"}, "confidence": 0.950111448764801, "cells": [{"id": 34, "text": "Figure 4-5 Tables that are used in the banking example", "bbox": {"l": 136.8, "t": 632.058, "r": 360.5787, "b": 640.38301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-5 Tables that are used in the banking example"}, {"label": "text", "id": 20, "page_no": 57, "cluster": {"id": 20, "label": "text", "bbox": {"l": 142.3465576171875, "t": 667.8150024414062, "r": 525.7511, "b": 702.261337, "coord_origin": "TOPLEFT"}, "confidence": 0.9773550629615784, "cells": [{"id": 35, "text": "Note:", "bbox": {"l": 142.8, "t": 669.04871, "r": 168.33246, "b": 678.26172, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": " Appendix A, \u201cDatabase definitions for the RCAC banking example\u201d on page 121 ", "bbox": {"l": 168.36035, "t": 669.04871, "r": 525.7511, "b": 678.26172, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "provides a script that you can use to create all the database definitions or DDLs to ", "bbox": {"l": 142.8, "t": 681.04852, "r": 507.59195, "b": 690.26153, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "re-create this RCAC example.", "bbox": {"l": 142.8, "t": 693.048332, "r": 274.7132, "b": 702.261337, "coord_origin": "TOPLEFT"}}]}, "text": "Note: Appendix A, \u201cDatabase definitions for the RCAC banking example\u201d on page 121 provides a script that you can use to create all the database definitions or DDLs to re-create this RCAC example."}, {"label": "picture", "id": 21, "page_no": 57, "cluster": {"id": 21, "label": "picture", "bbox": {"l": 136.12950134277344, "t": 127.06898498535156, "r": 451.212158203125, "b": 301.4627380371094, "coord_origin": "TOPLEFT"}, "confidence": 0.986349880695343, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 22, "page_no": 57, "cluster": {"id": 22, "label": "picture", "bbox": {"l": 135.7327880859375, "t": 570.8567504882812, "r": 415.3825988769531, "b": 628.9186401367188, "coord_origin": "TOPLEFT"}, "confidence": 0.9538632035255432, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "section_header", "id": 2, "page_no": 57, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.2745590209961, "t": 70.01868438720703, "r": 283.63077, "b": 86.2046127319336, "coord_origin": "TOPLEFT"}, "confidence": 0.9637309312820435, "cells": [{"id": 2, "text": "4.3", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 87.421951, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Implementation of RCAC", "bbox": {"l": 91.946342, "t": 71.22069999999997, "r": 283.63077, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, "text": "4.3 Implementation of RCAC"}, {"label": "text", "id": 3, "page_no": 57, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.4054412841797, "t": 102.70518493652344, "r": 514.24524, "b": 112.8113784790039, "coord_origin": "TOPLEFT"}, "confidence": 0.9328395128250122, "cells": [{"id": 4, "text": "Figure 4-4 shows the data model of the banking scenario that is used in this example.", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 514.24524, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-4 shows the data model of the banking scenario that is used in this example."}, {"label": "caption", "id": 4, "page_no": 57, "cluster": {"id": 4, "label": "caption", "bbox": {"l": 136.15525817871094, "t": 304.1411437988281, "r": 327.0066223144531, "b": 313.5270690917969, "coord_origin": "TOPLEFT"}, "confidence": 0.9527500867843628, "cells": [{"id": 5, "text": "Figure 4-4 Data model of the banking scenario", "bbox": {"l": 136.8, "t": 304.698, "r": 326.74951, "b": 313.02301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-4 Data model of the banking scenario"}, {"label": "text", "id": 5, "page_no": 57, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.9271240234375, "t": 330.0567321777344, "r": 309.19659, "b": 340.14447021484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9125084280967712, "cells": [{"id": 6, "text": "This section covers the following steps:", "bbox": {"l": 136.8, "t": 330.64871, "r": 309.19659, "b": 339.86169, "coord_origin": "TOPLEFT"}}]}, "text": "This section covers the following steps:"}, {"label": "list_item", "id": 6, "page_no": 57, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.67567443847656, "t": 346.7349853515625, "r": 372.99231, "b": 356.84148999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.9496878385543823, "cells": [{"id": 7, "text": "GLYPH", "bbox": {"l": 136.8, "t": 347.77789, "r": 141.78, "b": 356.55267, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Reviewing the tables that are used in this example", "bbox": {"l": 151.20016, "t": 347.62851, "r": 372.99231, "b": 356.84148999999996, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Reviewing the tables that are used in this example"}, {"label": "list_item", "id": 7, "page_no": 57, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.61679077148438, "t": 358.9612731933594, "r": 490.73876953125, "b": 369.148193359375, "coord_origin": "TOPLEFT"}, "confidence": 0.950393795967102, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 359.77771, "r": 141.78, "b": 368.5524899999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Assigning function ID QIBM_DB_SECADM to the Database Engineers group", "bbox": {"l": 151.20016, "t": 359.62833, "r": 490.64977999999996, "b": 368.8413100000001, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Assigning function ID QIBM_DB_SECADM to the Database Engineers group"}, {"label": "list_item", "id": 8, "page_no": 57, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.76889038085938, "t": 370.83758544921875, "r": 376.5744934082031, "b": 381.0343933105469, "coord_origin": "TOPLEFT"}, "confidence": 0.941796600818634, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.8, "t": 371.77753000000007, "r": 141.78, "b": 380.55231000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Creating group profiles for the users and their roles", "bbox": {"l": 151.20016, "t": 371.62814, "r": 376.40479, "b": 380.84113, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Creating group profiles for the users and their roles"}, {"label": "list_item", "id": 9, "page_no": 57, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.6211395263672, "t": 382.32257080078125, "r": 384.36783, "b": 393.1546630859375, "coord_origin": "TOPLEFT"}, "confidence": 0.9414183497428894, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 383.77734, "r": 141.78, "b": 392.55212, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Creating the CUSTOMER_LOGIN_ID global variable", "bbox": {"l": 151.20016, "t": 383.62796, "r": 384.36783, "b": 392.84093999999993, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Creating the CUSTOMER_LOGIN_ID global variable"}, {"label": "list_item", "id": 10, "page_no": 57, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.83248901367188, "t": 394.7557373046875, "r": 320.7999572753906, "b": 405.1979675292969, "coord_origin": "TOPLEFT"}, "confidence": 0.9373244643211365, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 395.7771599999999, "r": 141.78, "b": 404.55194, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Defining and creating row permissions", "bbox": {"l": 151.20016, "t": 395.62778, "r": 320.76019, "b": 404.84076000000005, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Defining and creating row permissions"}, {"label": "list_item", "id": 11, "page_no": 57, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.7002716064453, "t": 406.6421813964844, "r": 312.3022155761719, "b": 417.1481628417969, "coord_origin": "TOPLEFT"}, "confidence": 0.933269202709198, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.8, "t": 407.77698000000004, "r": 141.78, "b": 416.55176, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Defining and creating column masks", "bbox": {"l": 151.20016, "t": 407.62759, "r": 312.2962, "b": 416.84058, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Defining and creating column masks"}, {"label": "list_item", "id": 12, "page_no": 57, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 135.64413452148438, "t": 418.73663330078125, "r": 387.66956, "b": 429.0638732910156, "coord_origin": "TOPLEFT"}, "confidence": 0.9468620419502258, "cells": [{"id": 19, "text": "GLYPH", "bbox": {"l": 136.8, "t": 419.77679, "r": 141.78, "b": 428.55157, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Restricting the inserting and updating of masked data", "bbox": {"l": 151.20016, "t": 419.62741, "r": 387.66956, "b": 428.84039, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Restricting the inserting and updating of masked data"}, {"label": "list_item", "id": 13, "page_no": 57, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 135.75306701660156, "t": 430.962890625, "r": 334.12161, "b": 440.8876647949219, "coord_origin": "TOPLEFT"}, "confidence": 0.9373239874839783, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.8, "t": 431.77661, "r": 141.78, "b": 440.55139, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Activating row and column access control", "bbox": {"l": 151.20016, "t": 431.62723, "r": 334.12161, "b": 440.84021, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Activating row and column access control"}, {"label": "list_item", "id": 14, "page_no": 57, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 135.65428161621094, "t": 442.6007995605469, "r": 271.91437, "b": 453.1351013183594, "coord_origin": "TOPLEFT"}, "confidence": 0.9312872290611267, "cells": [{"id": 23, "text": "GLYPH", "bbox": {"l": 136.8, "t": 443.77643, "r": 141.78, "b": 452.55121, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Reviewing row permissions", "bbox": {"l": 151.20016, "t": 443.6270400000001, "r": 271.91437, "b": 452.84003000000007, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Reviewing row permissions"}, {"label": "list_item", "id": 15, "page_no": 57, "cluster": {"id": 15, "label": "list_item", "bbox": {"l": 135.8694305419922, "t": 454.0513000488281, "r": 323.46332, "b": 464.83984, "coord_origin": "TOPLEFT"}, "confidence": 0.9388870000839233, "cells": [{"id": 25, "text": "GLYPH", "bbox": {"l": 136.8, "t": 455.77624999999995, "r": 141.78, "b": 464.55103, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Demonstrating data access with RCAC", "bbox": {"l": 151.20016, "t": 455.62686, "r": 323.46332, "b": 464.83984, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Demonstrating data access with RCAC"}, {"label": "list_item", "id": 16, "page_no": 57, "cluster": {"id": 16, "label": "list_item", "bbox": {"l": 135.73135375976562, "t": 466.73114013671875, "r": 343.2095031738281, "b": 476.8760070800781, "coord_origin": "TOPLEFT"}, "confidence": 0.9516265392303467, "cells": [{"id": 27, "text": "GLYPH", "bbox": {"l": 136.8, "t": 467.77606, "r": 141.78, "b": 476.55084, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Query implementation with RCAC activated", "bbox": {"l": 151.20016, "t": 467.62668, "r": 343.13235, "b": 476.83966, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Query implementation with RCAC activated"}, {"label": "section_header", "id": 17, "page_no": 57, "cluster": {"id": 17, "label": "section_header", "bbox": {"l": 64.17279052734375, "t": 496.611083984375, "r": 410.41861, "b": 509.50259, "coord_origin": "TOPLEFT"}, "confidence": 0.9660991430282593, "cells": [{"id": 29, "text": "4.3.1", "bbox": {"l": 64.800003, "t": 497.51462, "r": 93.916855, "b": 509.50259, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Reviewing the tables that are used in this example", "bbox": {"l": 97.556473, "t": 497.51462, "r": 410.41861, "b": 509.50259, "coord_origin": "TOPLEFT"}}]}, "text": "4.3.1 Reviewing the tables that are used in this example"}, {"label": "text", "id": 18, "page_no": 57, "cluster": {"id": 18, "label": "text", "bbox": {"l": 135.51849365234375, "t": 522.7078857421875, "r": 541.10931, "b": 556.88121, "coord_origin": "TOPLEFT"}, "confidence": 0.9787154197692871, "cells": [{"id": 31, "text": "This section reviews the tables that are used in this example. As shown in Figure 4-5, there ", "bbox": {"l": 136.8, "t": 523.66861, "r": 541.10931, "b": 532.88159, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "are three main tables that are involved in the data model: CUSTOMERS, ACCOUNTS, and ", "bbox": {"l": 136.8, "t": 535.6684, "r": 540.25769, "b": 544.88141, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "TRANSACTIONS. There are 90 customers.", "bbox": {"l": 136.80002, "t": 547.66821, "r": 328.83478, "b": 556.88121, "coord_origin": "TOPLEFT"}}]}, "text": "This section reviews the tables that are used in this example. As shown in Figure 4-5, there are three main tables that are involved in the data model: CUSTOMERS, ACCOUNTS, and TRANSACTIONS. There are 90 customers."}, {"label": "caption", "id": 19, "page_no": 57, "cluster": {"id": 19, "label": "caption", "bbox": {"l": 136.22021484375, "t": 631.5818481445312, "r": 361.25982666015625, "b": 640.684326171875, "coord_origin": "TOPLEFT"}, "confidence": 0.950111448764801, "cells": [{"id": 34, "text": "Figure 4-5 Tables that are used in the banking example", "bbox": {"l": 136.8, "t": 632.058, "r": 360.5787, "b": 640.38301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-5 Tables that are used in the banking example"}, {"label": "text", "id": 20, "page_no": 57, "cluster": {"id": 20, "label": "text", "bbox": {"l": 142.3465576171875, "t": 667.8150024414062, "r": 525.7511, "b": 702.261337, "coord_origin": "TOPLEFT"}, "confidence": 0.9773550629615784, "cells": [{"id": 35, "text": "Note:", "bbox": {"l": 142.8, "t": 669.04871, "r": 168.33246, "b": 678.26172, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": " Appendix A, \u201cDatabase definitions for the RCAC banking example\u201d on page 121 ", "bbox": {"l": 168.36035, "t": 669.04871, "r": 525.7511, "b": 678.26172, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "provides a script that you can use to create all the database definitions or DDLs to ", "bbox": {"l": 142.8, "t": 681.04852, "r": 507.59195, "b": 690.26153, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "re-create this RCAC example.", "bbox": {"l": 142.8, "t": 693.048332, "r": 274.7132, "b": 702.261337, "coord_origin": "TOPLEFT"}}]}, "text": "Note: Appendix A, \u201cDatabase definitions for the RCAC banking example\u201d on page 121 provides a script that you can use to create all the database definitions or DDLs to re-create this RCAC example."}, {"label": "picture", "id": 21, "page_no": 57, "cluster": {"id": 21, "label": "picture", "bbox": {"l": 136.12950134277344, "t": 127.06898498535156, "r": 451.212158203125, "b": 301.4627380371094, "coord_origin": "TOPLEFT"}, "confidence": 0.986349880695343, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 22, "page_no": 57, "cluster": {"id": 22, "label": "picture", "bbox": {"l": 135.7327880859375, "t": 570.8567504882812, "r": 415.3825988769531, "b": 628.9186401367188, "coord_origin": "TOPLEFT"}, "confidence": 0.9538632035255432, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 57, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.21815490722656, "t": 754.3350219726562, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9143346548080444, "cells": [{"id": 0, "text": "42 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "42"}, {"label": "page_footer", "id": 1, "page_no": 57, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.31220245361328, "t": 754.725341796875, "r": 334.42142, "b": 763.9521484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9546207785606384, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 58, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "43", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "To review the attributes of each table that is used in this banking example, complete the ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 525.07031, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "following steps:", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 204.65807, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "1.", "bbox": {"l": 136.79959, "t": 100.48865, "r": 145.18024, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Review the columns of each the tables through System i Navigator. Expand ", "bbox": {"l": 147.97379, "t": 100.48865, "r": 486.43526999999995, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Database", "bbox": {"l": 486.41952999999995, "t": 100.48865, "r": 530.89691, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "\uf0ae", "bbox": {"l": 533.39984, "t": 97.63013000000001, "r": 543.23035, "b": 109.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "named Database", "bbox": {"l": 151.19977, "t": 112.48845999999992, "r": 230.63674999999998, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "\uf0ae", "bbox": {"l": 233.09984999999998, "t": 109.62994000000003, "r": 242.93037, "b": 121.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": " Schemas", "bbox": {"l": 243.00008999999997, "t": 112.48845999999992, "r": 289.5123, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "\uf0ae", "bbox": {"l": 292.07999, "t": 109.62994000000003, "r": 301.91049, "b": 121.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": " BANK_SCHEMA", "bbox": {"l": 301.92047, "t": 112.48845999999992, "r": 382.03775, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "\uf0ae", "bbox": {"l": 384.60043, "t": 109.62994000000003, "r": 394.43094, "b": 121.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " Tables", "bbox": {"l": 394.50067, "t": 112.48845999999992, "r": 427.25119, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": ".", "bbox": {"l": 427.86069, "t": 112.48845999999992, "r": 430.62958, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "2.", "bbox": {"l": 136.8006, "t": 129.52801999999997, "r": 145.23108, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Right-click the CUSTOMERS table and select ", "bbox": {"l": 148.04124, "t": 129.52801999999997, "r": 355.32602, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Definition", "bbox": {"l": 355.32101, "t": 129.52801999999997, "r": 401.47073, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ". Figure 4-6 shows the attributes ", "bbox": {"l": 401.46072, "t": 129.52801999999997, "r": 546.83588, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "for the CUSTOMERS table. The Row access control and Column access control options ", "bbox": {"l": 151.20079, "t": 141.52783, "r": 542.72644, "b": 150.74084000000005, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "are not selected, which indicates that the table does not have RCAC implemented.", "bbox": {"l": 151.20081, "t": 153.52765, "r": 514.64014, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Figure 4-6 CUSTOMERS table attributes", "bbox": {"l": 136.8, "t": 365.65799, "r": 303.49619, "b": 373.983, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "3.", "bbox": {"l": 136.8, "t": 391.60873, "r": 145.62772, "b": 400.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Click the ", "bbox": {"l": 148.57028, "t": 391.60873, "r": 192.09492, "b": 400.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Columns", "bbox": {"l": 192.11984, "t": 391.60873, "r": 234.88211000000004, "b": 400.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": " tab to see the columns of the CUSTOMERS table, as shown in ", "bbox": {"l": 234.84026999999998, "t": 391.60873, "r": 517.36163, "b": 400.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Figure 4-7.", "bbox": {"l": 151.20016, "t": 403.60855, "r": 199.55498, "b": 412.82153, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Figure 4-7 Column definitions of the CUSTOMERS table", "bbox": {"l": 64.800003, "t": 613.63789, "r": 293.4675, "b": 621.96291, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 214.2801971435547, "t": 754.7266845703125, "r": 523.59357, "b": 764.0281372070312, "coord_origin": "TOPLEFT"}, "confidence": 0.9543154239654541, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.720947265625, "t": 754.1746215820312, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9061288833618164, "cells": [{"id": 1, "text": "43", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.93377685546875, "t": 70.66082763671875, "r": 525.07031, "b": 93.04185485839844, "coord_origin": "TOPLEFT"}, "confidence": 0.9635977745056152, "cells": [{"id": 2, "text": "To review the attributes of each table that is used in this banking example, complete the ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 525.07031, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "following steps:", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 204.65807, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "list_item", "bbox": {"l": 136.77842712402344, "t": 97.63013000000001, "r": 543.23035, "b": 121.82097999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.9705125689506531, "cells": [{"id": 4, "text": "1.", "bbox": {"l": 136.79959, "t": 100.48865, "r": 145.18024, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Review the columns of each the tables through System i Navigator. Expand ", "bbox": {"l": 147.97379, "t": 100.48865, "r": 486.43526999999995, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Database", "bbox": {"l": 486.41952999999995, "t": 100.48865, "r": 530.89691, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "\uf0ae", "bbox": {"l": 533.39984, "t": 97.63013000000001, "r": 543.23035, "b": 109.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "named Database", "bbox": {"l": 151.19977, "t": 112.48845999999992, "r": 230.63674999999998, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "\uf0ae", "bbox": {"l": 233.09984999999998, "t": 109.62994000000003, "r": 242.93037, "b": 121.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": " Schemas", "bbox": {"l": 243.00008999999997, "t": 112.48845999999992, "r": 289.5123, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "\uf0ae", "bbox": {"l": 292.07999, "t": 109.62994000000003, "r": 301.91049, "b": 121.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": " BANK_SCHEMA", "bbox": {"l": 301.92047, "t": 112.48845999999992, "r": 382.03775, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "\uf0ae", "bbox": {"l": 384.60043, "t": 109.62994000000003, "r": 394.43094, "b": 121.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " Tables", "bbox": {"l": 394.50067, "t": 112.48845999999992, "r": 427.25119, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": ".", "bbox": {"l": 427.86069, "t": 112.48845999999992, "r": 430.62958, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 136.044677734375, "t": 128.51512145996094, "r": 546.83588, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9810754060745239, "cells": [{"id": 16, "text": "2.", "bbox": {"l": 136.8006, "t": 129.52801999999997, "r": 145.23108, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Right-click the CUSTOMERS table and select ", "bbox": {"l": 148.04124, "t": 129.52801999999997, "r": 355.32602, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Definition", "bbox": {"l": 355.32101, "t": 129.52801999999997, "r": 401.47073, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ". Figure 4-6 shows the attributes ", "bbox": {"l": 401.46072, "t": 129.52801999999997, "r": 546.83588, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "for the CUSTOMERS table. The Row access control and Column access control options ", "bbox": {"l": 151.20079, "t": 141.52783, "r": 542.72644, "b": 150.74084000000005, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "are not selected, which indicates that the table does not have RCAC implemented.", "bbox": {"l": 151.20081, "t": 153.52765, "r": 514.64014, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 136.25962829589844, "t": 364.7186584472656, "r": 303.7537536621094, "b": 373.983, "coord_origin": "TOPLEFT"}, "confidence": 0.9458591341972351, "cells": [{"id": 22, "text": "Figure 4-6 CUSTOMERS table attributes", "bbox": {"l": 136.8, "t": 365.65799, "r": 303.49619, "b": 373.983, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.99163818359375, "t": 390.5973205566406, "r": 517.36163, "b": 413.2025146484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9586500525474548, "cells": [{"id": 23, "text": "3.", "bbox": {"l": 136.8, "t": 391.60873, "r": 145.62772, "b": 400.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Click the ", "bbox": {"l": 148.57028, "t": 391.60873, "r": 192.09492, "b": 400.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Columns", "bbox": {"l": 192.11984, "t": 391.60873, "r": 234.88211000000004, "b": 400.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": " tab to see the columns of the CUSTOMERS table, as shown in ", "bbox": {"l": 234.84026999999998, "t": 391.60873, "r": 517.36163, "b": 400.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Figure 4-7.", "bbox": {"l": 151.20016, "t": 403.60855, "r": 199.55498, "b": 412.82153, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "caption", "bbox": {"l": 64.40914916992188, "t": 612.3688354492188, "r": 293.8601989746094, "b": 622.066162109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9436265826225281, "cells": [{"id": 28, "text": "Figure 4-7 Column definitions of the CUSTOMERS table", "bbox": {"l": 64.800003, "t": 613.63789, "r": 293.4675, "b": 621.96291, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 135.87620544433594, "t": 177.42987060546875, "r": 417.8246765136719, "b": 361.81787109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9830227494239807, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 58, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.2801971435547, "t": 754.7266845703125, "r": 523.59357, "b": 764.0281372070312, "coord_origin": "TOPLEFT"}, "confidence": 0.9543154239654541, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 58, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.720947265625, "t": 754.1746215820312, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9061288833618164, "cells": [{"id": 1, "text": "43", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "43"}, {"label": "text", "id": 2, "page_no": 58, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.93377685546875, "t": 70.66082763671875, "r": 525.07031, "b": 93.04185485839844, "coord_origin": "TOPLEFT"}, "confidence": 0.9635977745056152, "cells": [{"id": 2, "text": "To review the attributes of each table that is used in this banking example, complete the ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 525.07031, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "following steps:", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 204.65807, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "To review the attributes of each table that is used in this banking example, complete the following steps:"}, {"label": "list_item", "id": 3, "page_no": 58, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 136.77842712402344, "t": 97.63013000000001, "r": 543.23035, "b": 121.82097999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.9705125689506531, "cells": [{"id": 4, "text": "1.", "bbox": {"l": 136.79959, "t": 100.48865, "r": 145.18024, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Review the columns of each the tables through System i Navigator. Expand ", "bbox": {"l": 147.97379, "t": 100.48865, "r": 486.43526999999995, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Database", "bbox": {"l": 486.41952999999995, "t": 100.48865, "r": 530.89691, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "\uf0ae", "bbox": {"l": 533.39984, "t": 97.63013000000001, "r": 543.23035, "b": 109.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "named Database", "bbox": {"l": 151.19977, "t": 112.48845999999992, "r": 230.63674999999998, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "\uf0ae", "bbox": {"l": 233.09984999999998, "t": 109.62994000000003, "r": 242.93037, "b": 121.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": " Schemas", "bbox": {"l": 243.00008999999997, "t": 112.48845999999992, "r": 289.5123, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "\uf0ae", "bbox": {"l": 292.07999, "t": 109.62994000000003, "r": 301.91049, "b": 121.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": " BANK_SCHEMA", "bbox": {"l": 301.92047, "t": 112.48845999999992, "r": 382.03775, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "\uf0ae", "bbox": {"l": 384.60043, "t": 109.62994000000003, "r": 394.43094, "b": 121.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " Tables", "bbox": {"l": 394.50067, "t": 112.48845999999992, "r": 427.25119, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": ".", "bbox": {"l": 427.86069, "t": 112.48845999999992, "r": 430.62958, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}]}, "text": "1. Review the columns of each the tables through System i Navigator. Expand Database \uf0ae named Database \uf0ae Schemas \uf0ae BANK_SCHEMA \uf0ae Tables ."}, {"label": "list_item", "id": 4, "page_no": 58, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.044677734375, "t": 128.51512145996094, "r": 546.83588, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9810754060745239, "cells": [{"id": 16, "text": "2.", "bbox": {"l": 136.8006, "t": 129.52801999999997, "r": 145.23108, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Right-click the CUSTOMERS table and select ", "bbox": {"l": 148.04124, "t": 129.52801999999997, "r": 355.32602, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Definition", "bbox": {"l": 355.32101, "t": 129.52801999999997, "r": 401.47073, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ". Figure 4-6 shows the attributes ", "bbox": {"l": 401.46072, "t": 129.52801999999997, "r": 546.83588, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "for the CUSTOMERS table. The Row access control and Column access control options ", "bbox": {"l": 151.20079, "t": 141.52783, "r": 542.72644, "b": 150.74084000000005, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "are not selected, which indicates that the table does not have RCAC implemented.", "bbox": {"l": 151.20081, "t": 153.52765, "r": 514.64014, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}}]}, "text": "2. Right-click the CUSTOMERS table and select Definition . Figure 4-6 shows the attributes for the CUSTOMERS table. The Row access control and Column access control options are not selected, which indicates that the table does not have RCAC implemented."}, {"label": "caption", "id": 5, "page_no": 58, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.25962829589844, "t": 364.7186584472656, "r": 303.7537536621094, "b": 373.983, "coord_origin": "TOPLEFT"}, "confidence": 0.9458591341972351, "cells": [{"id": 22, "text": "Figure 4-6 CUSTOMERS table attributes", "bbox": {"l": 136.8, "t": 365.65799, "r": 303.49619, "b": 373.983, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-6 CUSTOMERS table attributes"}, {"label": "list_item", "id": 6, "page_no": 58, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.99163818359375, "t": 390.5973205566406, "r": 517.36163, "b": 413.2025146484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9586500525474548, "cells": [{"id": 23, "text": "3.", "bbox": {"l": 136.8, "t": 391.60873, "r": 145.62772, "b": 400.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Click the ", "bbox": {"l": 148.57028, "t": 391.60873, "r": 192.09492, "b": 400.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Columns", "bbox": {"l": 192.11984, "t": 391.60873, "r": 234.88211000000004, "b": 400.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": " tab to see the columns of the CUSTOMERS table, as shown in ", "bbox": {"l": 234.84026999999998, "t": 391.60873, "r": 517.36163, "b": 400.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Figure 4-7.", "bbox": {"l": 151.20016, "t": 403.60855, "r": 199.55498, "b": 412.82153, "coord_origin": "TOPLEFT"}}]}, "text": "3. Click the Columns tab to see the columns of the CUSTOMERS table, as shown in Figure 4-7."}, {"label": "caption", "id": 7, "page_no": 58, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 64.40914916992188, "t": 612.3688354492188, "r": 293.8601989746094, "b": 622.066162109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9436265826225281, "cells": [{"id": 28, "text": "Figure 4-7 Column definitions of the CUSTOMERS table", "bbox": {"l": 64.800003, "t": 613.63789, "r": 293.4675, "b": 621.96291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-7 Column definitions of the CUSTOMERS table"}, {"label": "picture", "id": 8, "page_no": 58, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 135.87620544433594, "t": 177.42987060546875, "r": 417.8246765136719, "b": 361.81787109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9830227494239807, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 58, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.93377685546875, "t": 70.66082763671875, "r": 525.07031, "b": 93.04185485839844, "coord_origin": "TOPLEFT"}, "confidence": 0.9635977745056152, "cells": [{"id": 2, "text": "To review the attributes of each table that is used in this banking example, complete the ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 525.07031, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "following steps:", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 204.65807, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "To review the attributes of each table that is used in this banking example, complete the following steps:"}, {"label": "list_item", "id": 3, "page_no": 58, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 136.77842712402344, "t": 97.63013000000001, "r": 543.23035, "b": 121.82097999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.9705125689506531, "cells": [{"id": 4, "text": "1.", "bbox": {"l": 136.79959, "t": 100.48865, "r": 145.18024, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Review the columns of each the tables through System i Navigator. Expand ", "bbox": {"l": 147.97379, "t": 100.48865, "r": 486.43526999999995, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Database", "bbox": {"l": 486.41952999999995, "t": 100.48865, "r": 530.89691, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "\uf0ae", "bbox": {"l": 533.39984, "t": 97.63013000000001, "r": 543.23035, "b": 109.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "named Database", "bbox": {"l": 151.19977, "t": 112.48845999999992, "r": 230.63674999999998, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "\uf0ae", "bbox": {"l": 233.09984999999998, "t": 109.62994000000003, "r": 242.93037, "b": 121.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": " Schemas", "bbox": {"l": 243.00008999999997, "t": 112.48845999999992, "r": 289.5123, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "\uf0ae", "bbox": {"l": 292.07999, "t": 109.62994000000003, "r": 301.91049, "b": 121.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": " BANK_SCHEMA", "bbox": {"l": 301.92047, "t": 112.48845999999992, "r": 382.03775, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "\uf0ae", "bbox": {"l": 384.60043, "t": 109.62994000000003, "r": 394.43094, "b": 121.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " Tables", "bbox": {"l": 394.50067, "t": 112.48845999999992, "r": 427.25119, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": ".", "bbox": {"l": 427.86069, "t": 112.48845999999992, "r": 430.62958, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}]}, "text": "1. Review the columns of each the tables through System i Navigator. Expand Database \uf0ae named Database \uf0ae Schemas \uf0ae BANK_SCHEMA \uf0ae Tables ."}, {"label": "list_item", "id": 4, "page_no": 58, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.044677734375, "t": 128.51512145996094, "r": 546.83588, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9810754060745239, "cells": [{"id": 16, "text": "2.", "bbox": {"l": 136.8006, "t": 129.52801999999997, "r": 145.23108, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Right-click the CUSTOMERS table and select ", "bbox": {"l": 148.04124, "t": 129.52801999999997, "r": 355.32602, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Definition", "bbox": {"l": 355.32101, "t": 129.52801999999997, "r": 401.47073, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ". Figure 4-6 shows the attributes ", "bbox": {"l": 401.46072, "t": 129.52801999999997, "r": 546.83588, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "for the CUSTOMERS table. The Row access control and Column access control options ", "bbox": {"l": 151.20079, "t": 141.52783, "r": 542.72644, "b": 150.74084000000005, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "are not selected, which indicates that the table does not have RCAC implemented.", "bbox": {"l": 151.20081, "t": 153.52765, "r": 514.64014, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}}]}, "text": "2. Right-click the CUSTOMERS table and select Definition . Figure 4-6 shows the attributes for the CUSTOMERS table. The Row access control and Column access control options are not selected, which indicates that the table does not have RCAC implemented."}, {"label": "caption", "id": 5, "page_no": 58, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.25962829589844, "t": 364.7186584472656, "r": 303.7537536621094, "b": 373.983, "coord_origin": "TOPLEFT"}, "confidence": 0.9458591341972351, "cells": [{"id": 22, "text": "Figure 4-6 CUSTOMERS table attributes", "bbox": {"l": 136.8, "t": 365.65799, "r": 303.49619, "b": 373.983, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-6 CUSTOMERS table attributes"}, {"label": "list_item", "id": 6, "page_no": 58, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.99163818359375, "t": 390.5973205566406, "r": 517.36163, "b": 413.2025146484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9586500525474548, "cells": [{"id": 23, "text": "3.", "bbox": {"l": 136.8, "t": 391.60873, "r": 145.62772, "b": 400.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Click the ", "bbox": {"l": 148.57028, "t": 391.60873, "r": 192.09492, "b": 400.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Columns", "bbox": {"l": 192.11984, "t": 391.60873, "r": 234.88211000000004, "b": 400.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": " tab to see the columns of the CUSTOMERS table, as shown in ", "bbox": {"l": 234.84026999999998, "t": 391.60873, "r": 517.36163, "b": 400.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Figure 4-7.", "bbox": {"l": 151.20016, "t": 403.60855, "r": 199.55498, "b": 412.82153, "coord_origin": "TOPLEFT"}}]}, "text": "3. Click the Columns tab to see the columns of the CUSTOMERS table, as shown in Figure 4-7."}, {"label": "caption", "id": 7, "page_no": 58, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 64.40914916992188, "t": 612.3688354492188, "r": 293.8601989746094, "b": 622.066162109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9436265826225281, "cells": [{"id": 28, "text": "Figure 4-7 Column definitions of the CUSTOMERS table", "bbox": {"l": 64.800003, "t": 613.63789, "r": 293.4675, "b": 621.96291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-7 Column definitions of the CUSTOMERS table"}, {"label": "picture", "id": 8, "page_no": 58, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 135.87620544433594, "t": 177.42987060546875, "r": 417.8246765136719, "b": 361.81787109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9830227494239807, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 58, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.2801971435547, "t": 754.7266845703125, "r": 523.59357, "b": 764.0281372070312, "coord_origin": "TOPLEFT"}, "confidence": 0.9543154239654541, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 58, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.720947265625, "t": 754.1746215820312, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9061288833618164, "cells": [{"id": 1, "text": "43", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "43"}]}}, {"page_no": 59, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "44 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "4.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.62772, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Click the ", "bbox": {"l": 148.57028, "t": 71.50867000000005, "r": 192.09492, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Key Constraints", "bbox": {"l": 192.11984, "t": 71.50867000000005, "r": 268.44635, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": ", ", "bbox": {"l": 268.26007, "t": 71.50867000000005, "r": 273.89941, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Foreign Key Constraints", "bbox": {"l": 273.83966, "t": 71.50867000000005, "r": 389.64954, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": ", and ", "bbox": {"l": 389.45932, "t": 71.50867000000005, "r": 414.47784, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Check Constraints ", "bbox": {"l": 414.47983, "t": 71.50867000000005, "r": 505.37079, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "tabs to ", "bbox": {"l": 505.37976, "t": 71.50867000000005, "r": 538.20105, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "review the key, foreign, and check constraints on the CUSTOMERS table, as shown in ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 532.73871, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Figure 4-8. There are no Foreign Key Constraints or Check Constraints on the ", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 497.69751, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CUSTOMERS table.", "bbox": {"l": 151.20016, "t": 107.50811999999996, "r": 241.55133, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Figure 4-8 Reviewing the constraints on the CUSTOMERS table", "bbox": {"l": 136.8, "t": 309.49799, "r": 395.883, "b": 317.823, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "5.", "bbox": {"l": 136.8, "t": 335.44873, "r": 145.16769, "b": 344.66171, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Review the definition of the ACCOUNTS table. The definition of the ACCOUNTS table is ", "bbox": {"l": 147.95692, "t": 335.44873, "r": 542.19183, "b": 344.66171, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "shown in Figure 4-9. RCAC has not been defined for this table yet.", "bbox": {"l": 151.20016, "t": 347.44855, "r": 443.98938000000004, "b": 356.66153, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Figure 4-9 ACCOUNTS table attributes", "bbox": {"l": 136.8, "t": 563.8979899999999, "r": 296.60315, "b": 572.2230099999999, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.17613220214844, "t": 754.111572265625, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8975403904914856, "cells": [{"id": 0, "text": "44 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.36976623535156, "t": 754.63330078125, "r": 334.42142, "b": 764.0048217773438, "coord_origin": "TOPLEFT"}, "confidence": 0.9470958709716797, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 135.88308715820312, "t": 70.43685150146484, "r": 538.20105, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9693993330001831, "cells": [{"id": 2, "text": "4.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.62772, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Click the ", "bbox": {"l": 148.57028, "t": 71.50867000000005, "r": 192.09492, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Key Constraints", "bbox": {"l": 192.11984, "t": 71.50867000000005, "r": 268.44635, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": ", ", "bbox": {"l": 268.26007, "t": 71.50867000000005, "r": 273.89941, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Foreign Key Constraints", "bbox": {"l": 273.83966, "t": 71.50867000000005, "r": 389.64954, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": ", and ", "bbox": {"l": 389.45932, "t": 71.50867000000005, "r": 414.47784, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Check Constraints ", "bbox": {"l": 414.47983, "t": 71.50867000000005, "r": 505.37079, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "tabs to ", "bbox": {"l": 505.37976, "t": 71.50867000000005, "r": 538.20105, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "review the key, foreign, and check constraints on the CUSTOMERS table, as shown in ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 532.73871, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Figure 4-8. There are no Foreign Key Constraints or Check Constraints on the ", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 497.69751, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CUSTOMERS table.", "bbox": {"l": 151.20016, "t": 107.50811999999996, "r": 241.55133, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.06980895996094, "t": 308.5224304199219, "r": 396.0132141113281, "b": 317.984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9484499096870422, "cells": [{"id": 13, "text": "Figure 4-8 Reviewing the constraints on the CUSTOMERS table", "bbox": {"l": 136.8, "t": 309.49799, "r": 395.883, "b": 317.823, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 136.2538299560547, "t": 334.63983154296875, "r": 542.19183, "b": 357.26708984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9527929425239563, "cells": [{"id": 14, "text": "5.", "bbox": {"l": 136.8, "t": 335.44873, "r": 145.16769, "b": 344.66171, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Review the definition of the ACCOUNTS table. The definition of the ACCOUNTS table is ", "bbox": {"l": 147.95692, "t": 335.44873, "r": 542.19183, "b": 344.66171, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "shown in Figure 4-9. RCAC has not been defined for this table yet.", "bbox": {"l": 151.20016, "t": 347.44855, "r": 443.98938000000004, "b": 356.66153, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 136.27098083496094, "t": 563.2742919921875, "r": 297.00921630859375, "b": 572.619384765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9486443996429443, "cells": [{"id": 17, "text": "Figure 4-9 ACCOUNTS table attributes", "bbox": {"l": 136.8, "t": 563.8979899999999, "r": 296.60315, "b": 572.2230099999999, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "picture", "bbox": {"l": 134.96737670898438, "t": 370.881591796875, "r": 457.1007080078125, "b": 560.7245483398438, "coord_origin": "TOPLEFT"}, "confidence": 0.9808177947998047, "cells": []}, {"id": 7, "label": "picture", "bbox": {"l": 135.36148071289062, "t": 131.26109313964844, "r": 533.2239379882812, "b": 305.0644836425781, "coord_origin": "TOPLEFT"}, "confidence": 0.9682222604751587, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 59, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.17613220214844, "t": 754.111572265625, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8975403904914856, "cells": [{"id": 0, "text": "44 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "44"}, {"label": "page_footer", "id": 1, "page_no": 59, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.36976623535156, "t": 754.63330078125, "r": 334.42142, "b": 764.0048217773438, "coord_origin": "TOPLEFT"}, "confidence": 0.9470958709716797, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "list_item", "id": 2, "page_no": 59, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.88308715820312, "t": 70.43685150146484, "r": 538.20105, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9693993330001831, "cells": [{"id": 2, "text": "4.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.62772, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Click the ", "bbox": {"l": 148.57028, "t": 71.50867000000005, "r": 192.09492, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Key Constraints", "bbox": {"l": 192.11984, "t": 71.50867000000005, "r": 268.44635, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": ", ", "bbox": {"l": 268.26007, "t": 71.50867000000005, "r": 273.89941, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Foreign Key Constraints", "bbox": {"l": 273.83966, "t": 71.50867000000005, "r": 389.64954, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": ", and ", "bbox": {"l": 389.45932, "t": 71.50867000000005, "r": 414.47784, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Check Constraints ", "bbox": {"l": 414.47983, "t": 71.50867000000005, "r": 505.37079, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "tabs to ", "bbox": {"l": 505.37976, "t": 71.50867000000005, "r": 538.20105, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "review the key, foreign, and check constraints on the CUSTOMERS table, as shown in ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 532.73871, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Figure 4-8. There are no Foreign Key Constraints or Check Constraints on the ", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 497.69751, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CUSTOMERS table.", "bbox": {"l": 151.20016, "t": 107.50811999999996, "r": 241.55133, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "4. Click the Key Constraints , Foreign Key Constraints , and Check Constraints tabs to review the key, foreign, and check constraints on the CUSTOMERS table, as shown in Figure 4-8. There are no Foreign Key Constraints or Check Constraints on the CUSTOMERS table."}, {"label": "caption", "id": 3, "page_no": 59, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.06980895996094, "t": 308.5224304199219, "r": 396.0132141113281, "b": 317.984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9484499096870422, "cells": [{"id": 13, "text": "Figure 4-8 Reviewing the constraints on the CUSTOMERS table", "bbox": {"l": 136.8, "t": 309.49799, "r": 395.883, "b": 317.823, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-8 Reviewing the constraints on the CUSTOMERS table"}, {"label": "list_item", "id": 4, "page_no": 59, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.2538299560547, "t": 334.63983154296875, "r": 542.19183, "b": 357.26708984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9527929425239563, "cells": [{"id": 14, "text": "5.", "bbox": {"l": 136.8, "t": 335.44873, "r": 145.16769, "b": 344.66171, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Review the definition of the ACCOUNTS table. The definition of the ACCOUNTS table is ", "bbox": {"l": 147.95692, "t": 335.44873, "r": 542.19183, "b": 344.66171, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "shown in Figure 4-9. RCAC has not been defined for this table yet.", "bbox": {"l": 151.20016, "t": 347.44855, "r": 443.98938000000004, "b": 356.66153, "coord_origin": "TOPLEFT"}}]}, "text": "5. Review the definition of the ACCOUNTS table. The definition of the ACCOUNTS table is shown in Figure 4-9. RCAC has not been defined for this table yet."}, {"label": "caption", "id": 5, "page_no": 59, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.27098083496094, "t": 563.2742919921875, "r": 297.00921630859375, "b": 572.619384765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9486443996429443, "cells": [{"id": 17, "text": "Figure 4-9 ACCOUNTS table attributes", "bbox": {"l": 136.8, "t": 563.8979899999999, "r": 296.60315, "b": 572.2230099999999, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-9 ACCOUNTS table attributes"}, {"label": "picture", "id": 6, "page_no": 59, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 134.96737670898438, "t": 370.881591796875, "r": 457.1007080078125, "b": 560.7245483398438, "coord_origin": "TOPLEFT"}, "confidence": 0.9808177947998047, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 7, "page_no": 59, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 135.36148071289062, "t": 131.26109313964844, "r": 533.2239379882812, "b": 305.0644836425781, "coord_origin": "TOPLEFT"}, "confidence": 0.9682222604751587, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 59, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.88308715820312, "t": 70.43685150146484, "r": 538.20105, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9693993330001831, "cells": [{"id": 2, "text": "4.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.62772, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Click the ", "bbox": {"l": 148.57028, "t": 71.50867000000005, "r": 192.09492, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Key Constraints", "bbox": {"l": 192.11984, "t": 71.50867000000005, "r": 268.44635, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": ", ", "bbox": {"l": 268.26007, "t": 71.50867000000005, "r": 273.89941, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Foreign Key Constraints", "bbox": {"l": 273.83966, "t": 71.50867000000005, "r": 389.64954, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": ", and ", "bbox": {"l": 389.45932, "t": 71.50867000000005, "r": 414.47784, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Check Constraints ", "bbox": {"l": 414.47983, "t": 71.50867000000005, "r": 505.37079, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "tabs to ", "bbox": {"l": 505.37976, "t": 71.50867000000005, "r": 538.20105, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "review the key, foreign, and check constraints on the CUSTOMERS table, as shown in ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 532.73871, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Figure 4-8. There are no Foreign Key Constraints or Check Constraints on the ", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 497.69751, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CUSTOMERS table.", "bbox": {"l": 151.20016, "t": 107.50811999999996, "r": 241.55133, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "4. Click the Key Constraints , Foreign Key Constraints , and Check Constraints tabs to review the key, foreign, and check constraints on the CUSTOMERS table, as shown in Figure 4-8. There are no Foreign Key Constraints or Check Constraints on the CUSTOMERS table."}, {"label": "caption", "id": 3, "page_no": 59, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.06980895996094, "t": 308.5224304199219, "r": 396.0132141113281, "b": 317.984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9484499096870422, "cells": [{"id": 13, "text": "Figure 4-8 Reviewing the constraints on the CUSTOMERS table", "bbox": {"l": 136.8, "t": 309.49799, "r": 395.883, "b": 317.823, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-8 Reviewing the constraints on the CUSTOMERS table"}, {"label": "list_item", "id": 4, "page_no": 59, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.2538299560547, "t": 334.63983154296875, "r": 542.19183, "b": 357.26708984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9527929425239563, "cells": [{"id": 14, "text": "5.", "bbox": {"l": 136.8, "t": 335.44873, "r": 145.16769, "b": 344.66171, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Review the definition of the ACCOUNTS table. The definition of the ACCOUNTS table is ", "bbox": {"l": 147.95692, "t": 335.44873, "r": 542.19183, "b": 344.66171, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "shown in Figure 4-9. RCAC has not been defined for this table yet.", "bbox": {"l": 151.20016, "t": 347.44855, "r": 443.98938000000004, "b": 356.66153, "coord_origin": "TOPLEFT"}}]}, "text": "5. Review the definition of the ACCOUNTS table. The definition of the ACCOUNTS table is shown in Figure 4-9. RCAC has not been defined for this table yet."}, {"label": "caption", "id": 5, "page_no": 59, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.27098083496094, "t": 563.2742919921875, "r": 297.00921630859375, "b": 572.619384765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9486443996429443, "cells": [{"id": 17, "text": "Figure 4-9 ACCOUNTS table attributes", "bbox": {"l": 136.8, "t": 563.8979899999999, "r": 296.60315, "b": 572.2230099999999, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-9 ACCOUNTS table attributes"}, {"label": "picture", "id": 6, "page_no": 59, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 134.96737670898438, "t": 370.881591796875, "r": 457.1007080078125, "b": 560.7245483398438, "coord_origin": "TOPLEFT"}, "confidence": 0.9808177947998047, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 7, "page_no": 59, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 135.36148071289062, "t": 131.26109313964844, "r": 533.2239379882812, "b": 305.0644836425781, "coord_origin": "TOPLEFT"}, "confidence": 0.9682222604751587, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 59, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.17613220214844, "t": 754.111572265625, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8975403904914856, "cells": [{"id": 0, "text": "44 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "44"}, {"label": "page_footer", "id": 1, "page_no": 59, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.36976623535156, "t": 754.63330078125, "r": 334.42142, "b": 764.0048217773438, "coord_origin": "TOPLEFT"}, "confidence": 0.9470958709716797, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 60, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "45", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "6.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.6273, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Click the ", "bbox": {"l": 148.56987, "t": 71.50903000000005, "r": 192.0945, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Columns", "bbox": {"l": 192.11943, "t": 71.50903000000005, "r": 234.88168, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": " tab to see the columns of the ACCOUNTS table, as shown in ", "bbox": {"l": 234.83986, "t": 71.50903000000005, "r": 509.63537999999994, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Figure 4-10.", "bbox": {"l": 151.19977, "t": 83.50885000000017, "r": 205.13313, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Figure 4-10 Column definitions of the ACCOUNTS table", "bbox": {"l": 64.800003, "t": 238.51801, "r": 291.57025, "b": 246.84295999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "7.", "bbox": {"l": 136.8, "t": 264.52855999999997, "r": 145.62772, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Click the ", "bbox": {"l": 148.57028, "t": 264.52855999999997, "r": 192.09492, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Key Constraints", "bbox": {"l": 192.11984, "t": 264.52855999999997, "r": 268.44635, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": ", ", "bbox": {"l": 268.26007, "t": 264.52855999999997, "r": 273.89941, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Foreign Key Constraints", "bbox": {"l": 273.83966, "t": 264.52855999999997, "r": 389.64954, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": ", and ", "bbox": {"l": 389.45932, "t": 264.52855999999997, "r": 414.47784, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Check Constraints ", "bbox": {"l": 414.47983, "t": 264.52855999999997, "r": 505.37079, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "tabs to ", "bbox": {"l": 505.37976, "t": 264.52855999999997, "r": 538.20105, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "review the key, foreign, and check constraints on the ACCOUNTS table, as shown in ", "bbox": {"l": 151.20016, "t": 276.52837999999997, "r": 525.10461, "b": 285.74139, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Figure 4-11. There is one Foreign Key Constraint and no Check Constraints on the ", "bbox": {"l": 151.20016, "t": 288.52823, "r": 518.26709, "b": 297.74120999999997, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ACCOUNTS table.", "bbox": {"l": 151.20016, "t": 300.52805, "r": 233.81839, "b": 309.7410300000001, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Figure 4-11 Reviewing the constraints on the ACCOUNTS table", "bbox": {"l": 64.800003, "t": 488.17801, "r": 322.01459, "b": 496.50302, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 214.28741455078125, "t": 754.7380981445312, "r": 523.59357, "b": 764.0592041015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9521146416664124, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.7454833984375, "t": 754.0681762695312, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8975669741630554, "cells": [{"id": 1, "text": "45", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 135.9091033935547, "t": 70.44548034667969, "r": 509.63537999999994, "b": 93.29779815673828, "coord_origin": "TOPLEFT"}, "confidence": 0.9061452746391296, "cells": [{"id": 2, "text": "6.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.6273, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Click the ", "bbox": {"l": 148.56987, "t": 71.50903000000005, "r": 192.0945, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Columns", "bbox": {"l": 192.11943, "t": 71.50903000000005, "r": 234.88168, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": " tab to see the columns of the ACCOUNTS table, as shown in ", "bbox": {"l": 234.83986, "t": 71.50903000000005, "r": 509.63537999999994, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Figure 4-10.", "bbox": {"l": 151.19977, "t": 83.50885000000017, "r": 205.13313, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.17601013183594, "t": 237.03350830078125, "r": 291.64111328125, "b": 246.84295999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9145481586456299, "cells": [{"id": 7, "text": "Figure 4-10 Column definitions of the ACCOUNTS table", "bbox": {"l": 64.800003, "t": 238.51801, "r": 291.57025, "b": 246.84295999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 136.2264404296875, "t": 263.83184814453125, "r": 538.20105, "b": 309.7410300000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9501693248748779, "cells": [{"id": 8, "text": "7.", "bbox": {"l": 136.8, "t": 264.52855999999997, "r": 145.62772, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Click the ", "bbox": {"l": 148.57028, "t": 264.52855999999997, "r": 192.09492, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Key Constraints", "bbox": {"l": 192.11984, "t": 264.52855999999997, "r": 268.44635, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": ", ", "bbox": {"l": 268.26007, "t": 264.52855999999997, "r": 273.89941, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Foreign Key Constraints", "bbox": {"l": 273.83966, "t": 264.52855999999997, "r": 389.64954, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": ", and ", "bbox": {"l": 389.45932, "t": 264.52855999999997, "r": 414.47784, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Check Constraints ", "bbox": {"l": 414.47983, "t": 264.52855999999997, "r": 505.37079, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "tabs to ", "bbox": {"l": 505.37976, "t": 264.52855999999997, "r": 538.20105, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "review the key, foreign, and check constraints on the ACCOUNTS table, as shown in ", "bbox": {"l": 151.20016, "t": 276.52837999999997, "r": 525.10461, "b": 285.74139, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Figure 4-11. There is one Foreign Key Constraint and no Check Constraints on the ", "bbox": {"l": 151.20016, "t": 288.52823, "r": 518.26709, "b": 297.74120999999997, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ACCOUNTS table.", "bbox": {"l": 151.20016, "t": 300.52805, "r": 233.81839, "b": 309.7410300000001, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 64.48716735839844, "t": 487.4658203125, "r": 322.23956298828125, "b": 496.8700866699219, "coord_origin": "TOPLEFT"}, "confidence": 0.9331468939781189, "cells": [{"id": 19, "text": "Figure 4-11 Reviewing the constraints on the ACCOUNTS table", "bbox": {"l": 64.800003, "t": 488.17801, "r": 322.01459, "b": 496.50302, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "picture", "bbox": {"l": 63.629615783691406, "t": 323.9850769042969, "r": 546.4091796875, "b": 483.8927001953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9249711632728577, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 60, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.28741455078125, "t": 754.7380981445312, "r": 523.59357, "b": 764.0592041015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9521146416664124, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 60, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.7454833984375, "t": 754.0681762695312, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8975669741630554, "cells": [{"id": 1, "text": "45", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "45"}, {"label": "list_item", "id": 2, "page_no": 60, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.9091033935547, "t": 70.44548034667969, "r": 509.63537999999994, "b": 93.29779815673828, "coord_origin": "TOPLEFT"}, "confidence": 0.9061452746391296, "cells": [{"id": 2, "text": "6.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.6273, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Click the ", "bbox": {"l": 148.56987, "t": 71.50903000000005, "r": 192.0945, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Columns", "bbox": {"l": 192.11943, "t": 71.50903000000005, "r": 234.88168, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": " tab to see the columns of the ACCOUNTS table, as shown in ", "bbox": {"l": 234.83986, "t": 71.50903000000005, "r": 509.63537999999994, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Figure 4-10.", "bbox": {"l": 151.19977, "t": 83.50885000000017, "r": 205.13313, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "6. Click the Columns tab to see the columns of the ACCOUNTS table, as shown in Figure 4-10."}, {"label": "caption", "id": 3, "page_no": 60, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.17601013183594, "t": 237.03350830078125, "r": 291.64111328125, "b": 246.84295999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9145481586456299, "cells": [{"id": 7, "text": "Figure 4-10 Column definitions of the ACCOUNTS table", "bbox": {"l": 64.800003, "t": 238.51801, "r": 291.57025, "b": 246.84295999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-10 Column definitions of the ACCOUNTS table"}, {"label": "list_item", "id": 4, "page_no": 60, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.2264404296875, "t": 263.83184814453125, "r": 538.20105, "b": 309.7410300000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9501693248748779, "cells": [{"id": 8, "text": "7.", "bbox": {"l": 136.8, "t": 264.52855999999997, "r": 145.62772, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Click the ", "bbox": {"l": 148.57028, "t": 264.52855999999997, "r": 192.09492, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Key Constraints", "bbox": {"l": 192.11984, "t": 264.52855999999997, "r": 268.44635, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": ", ", "bbox": {"l": 268.26007, "t": 264.52855999999997, "r": 273.89941, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Foreign Key Constraints", "bbox": {"l": 273.83966, "t": 264.52855999999997, "r": 389.64954, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": ", and ", "bbox": {"l": 389.45932, "t": 264.52855999999997, "r": 414.47784, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Check Constraints ", "bbox": {"l": 414.47983, "t": 264.52855999999997, "r": 505.37079, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "tabs to ", "bbox": {"l": 505.37976, "t": 264.52855999999997, "r": 538.20105, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "review the key, foreign, and check constraints on the ACCOUNTS table, as shown in ", "bbox": {"l": 151.20016, "t": 276.52837999999997, "r": 525.10461, "b": 285.74139, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Figure 4-11. There is one Foreign Key Constraint and no Check Constraints on the ", "bbox": {"l": 151.20016, "t": 288.52823, "r": 518.26709, "b": 297.74120999999997, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ACCOUNTS table.", "bbox": {"l": 151.20016, "t": 300.52805, "r": 233.81839, "b": 309.7410300000001, "coord_origin": "TOPLEFT"}}]}, "text": "7. Click the Key Constraints , Foreign Key Constraints , and Check Constraints tabs to review the key, foreign, and check constraints on the ACCOUNTS table, as shown in Figure 4-11. There is one Foreign Key Constraint and no Check Constraints on the ACCOUNTS table."}, {"label": "caption", "id": 5, "page_no": 60, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.48716735839844, "t": 487.4658203125, "r": 322.23956298828125, "b": 496.8700866699219, "coord_origin": "TOPLEFT"}, "confidence": 0.9331468939781189, "cells": [{"id": 19, "text": "Figure 4-11 Reviewing the constraints on the ACCOUNTS table", "bbox": {"l": 64.800003, "t": 488.17801, "r": 322.01459, "b": 496.50302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-11 Reviewing the constraints on the ACCOUNTS table"}, {"label": "picture", "id": 6, "page_no": 60, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 63.629615783691406, "t": 323.9850769042969, "r": 546.4091796875, "b": 483.8927001953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9249711632728577, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 60, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.9091033935547, "t": 70.44548034667969, "r": 509.63537999999994, "b": 93.29779815673828, "coord_origin": "TOPLEFT"}, "confidence": 0.9061452746391296, "cells": [{"id": 2, "text": "6.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.6273, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Click the ", "bbox": {"l": 148.56987, "t": 71.50903000000005, "r": 192.0945, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Columns", "bbox": {"l": 192.11943, "t": 71.50903000000005, "r": 234.88168, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": " tab to see the columns of the ACCOUNTS table, as shown in ", "bbox": {"l": 234.83986, "t": 71.50903000000005, "r": 509.63537999999994, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Figure 4-10.", "bbox": {"l": 151.19977, "t": 83.50885000000017, "r": 205.13313, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "6. Click the Columns tab to see the columns of the ACCOUNTS table, as shown in Figure 4-10."}, {"label": "caption", "id": 3, "page_no": 60, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.17601013183594, "t": 237.03350830078125, "r": 291.64111328125, "b": 246.84295999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9145481586456299, "cells": [{"id": 7, "text": "Figure 4-10 Column definitions of the ACCOUNTS table", "bbox": {"l": 64.800003, "t": 238.51801, "r": 291.57025, "b": 246.84295999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-10 Column definitions of the ACCOUNTS table"}, {"label": "list_item", "id": 4, "page_no": 60, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.2264404296875, "t": 263.83184814453125, "r": 538.20105, "b": 309.7410300000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9501693248748779, "cells": [{"id": 8, "text": "7.", "bbox": {"l": 136.8, "t": 264.52855999999997, "r": 145.62772, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Click the ", "bbox": {"l": 148.57028, "t": 264.52855999999997, "r": 192.09492, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Key Constraints", "bbox": {"l": 192.11984, "t": 264.52855999999997, "r": 268.44635, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": ", ", "bbox": {"l": 268.26007, "t": 264.52855999999997, "r": 273.89941, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Foreign Key Constraints", "bbox": {"l": 273.83966, "t": 264.52855999999997, "r": 389.64954, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": ", and ", "bbox": {"l": 389.45932, "t": 264.52855999999997, "r": 414.47784, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Check Constraints ", "bbox": {"l": 414.47983, "t": 264.52855999999997, "r": 505.37079, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "tabs to ", "bbox": {"l": 505.37976, "t": 264.52855999999997, "r": 538.20105, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "review the key, foreign, and check constraints on the ACCOUNTS table, as shown in ", "bbox": {"l": 151.20016, "t": 276.52837999999997, "r": 525.10461, "b": 285.74139, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Figure 4-11. There is one Foreign Key Constraint and no Check Constraints on the ", "bbox": {"l": 151.20016, "t": 288.52823, "r": 518.26709, "b": 297.74120999999997, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ACCOUNTS table.", "bbox": {"l": 151.20016, "t": 300.52805, "r": 233.81839, "b": 309.7410300000001, "coord_origin": "TOPLEFT"}}]}, "text": "7. Click the Key Constraints , Foreign Key Constraints , and Check Constraints tabs to review the key, foreign, and check constraints on the ACCOUNTS table, as shown in Figure 4-11. There is one Foreign Key Constraint and no Check Constraints on the ACCOUNTS table."}, {"label": "caption", "id": 5, "page_no": 60, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.48716735839844, "t": 487.4658203125, "r": 322.23956298828125, "b": 496.8700866699219, "coord_origin": "TOPLEFT"}, "confidence": 0.9331468939781189, "cells": [{"id": 19, "text": "Figure 4-11 Reviewing the constraints on the ACCOUNTS table", "bbox": {"l": 64.800003, "t": 488.17801, "r": 322.01459, "b": 496.50302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-11 Reviewing the constraints on the ACCOUNTS table"}, {"label": "picture", "id": 6, "page_no": 60, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 63.629615783691406, "t": 323.9850769042969, "r": 546.4091796875, "b": 483.8927001953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9249711632728577, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 60, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.28741455078125, "t": 754.7380981445312, "r": 523.59357, "b": 764.0592041015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9521146416664124, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 60, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.7454833984375, "t": 754.0681762695312, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8975669741630554, "cells": [{"id": 1, "text": "45", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "45"}]}}, {"page_no": 61, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "46 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "8.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.06769, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Review the definition of the TRANSACTIONS table. The definition of the TRANSACTIONS ", "bbox": {"l": 147.82356, "t": 71.50867000000005, "r": 547.25958, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "table is shown in Figure 4-12. RCAC is not defined for this table yet.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 449.76917, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Figure 4-12 TRANSACTIONS table attributes", "bbox": {"l": 136.8, "t": 299.95801, "r": 321.56638, "b": 308.28302, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "9.", "bbox": {"l": 136.8, "t": 325.90872, "r": 145.62772, "b": 335.1217, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Click the ", "bbox": {"l": 148.57028, "t": 325.90872, "r": 192.09492, "b": 335.1217, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Columns", "bbox": {"l": 192.11984, "t": 325.90872, "r": 234.88211000000004, "b": 335.1217, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": " tab to see the columns of the TRANSACTIONS table, as shown in ", "bbox": {"l": 234.84026999999998, "t": 325.90872, "r": 531.82043, "b": 335.1217, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Figure 4-13.", "bbox": {"l": 151.20016, "t": 337.90854, "r": 205.13353, "b": 347.1215199999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Figure 4-13 Column definitions of the TRANSACTIONS table", "bbox": {"l": 136.8, "t": 483.31799, "r": 383.62402, "b": 491.64301, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "10.Click the ", "bbox": {"l": 136.8, "t": 509.32861, "r": 192.09694, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Key Constraints", "bbox": {"l": 192.11984, "t": 509.32861, "r": 268.44635, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ", ", "bbox": {"l": 268.26007, "t": 509.32861, "r": 273.89941, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Foreign Key Constraints", "bbox": {"l": 273.83966, "t": 509.32861, "r": 389.64954, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ", and ", "bbox": {"l": 389.45932, "t": 509.32861, "r": 414.47784, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Check Constraints ", "bbox": {"l": 414.47983, "t": 509.32861, "r": 505.37079, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "tabs to ", "bbox": {"l": 505.37976, "t": 509.32861, "r": 538.20105, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "review the key, foreign, and check constraints on the TRANSACTIONS table, as shown in ", "bbox": {"l": 151.20016, "t": 521.32843, "r": 547.3941, "b": 530.54141, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Figure 4-14. There is one Foreign Key Constraint and one Check Constraint on the ", "bbox": {"l": 151.20016, "t": 533.32822, "r": 518.87848, "b": 542.54123, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "TRANSACTIONS table.", "bbox": {"l": 151.20016, "t": 545.32803, "r": 256.03613, "b": 554.54103, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Figure 4-14 Reviewing the constraints on the TRANSACTIONS table", "bbox": {"l": 64.800003, "t": 725.837997, "r": 342.01257, "b": 734.162998, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.11357116699219, "t": 754.0479125976562, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8953660130500793, "cells": [{"id": 0, "text": "46 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.1781997680664, "t": 754.6085205078125, "r": 334.42142, "b": 764.017578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9389416575431824, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 136.05352783203125, "t": 70.39522552490234, "r": 547.25958, "b": 93.26668548583984, "coord_origin": "TOPLEFT"}, "confidence": 0.9381867051124573, "cells": [{"id": 2, "text": "8.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.06769, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Review the definition of the TRANSACTIONS table. The definition of the TRANSACTIONS ", "bbox": {"l": 147.82356, "t": 71.50867000000005, "r": 547.25958, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "table is shown in Figure 4-12. RCAC is not defined for this table yet.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 449.76917, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.08340454101562, "t": 299.330322265625, "r": 321.95263671875, "b": 308.88140869140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9399792551994324, "cells": [{"id": 5, "text": "Figure 4-12 TRANSACTIONS table attributes", "bbox": {"l": 136.8, "t": 299.95801, "r": 321.56638, "b": 308.28302, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 136.10157775878906, "t": 325.2121887207031, "r": 531.82043, "b": 348.0757141113281, "coord_origin": "TOPLEFT"}, "confidence": 0.9077776670455933, "cells": [{"id": 6, "text": "9.", "bbox": {"l": 136.8, "t": 325.90872, "r": 145.62772, "b": 335.1217, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Click the ", "bbox": {"l": 148.57028, "t": 325.90872, "r": 192.09492, "b": 335.1217, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Columns", "bbox": {"l": 192.11984, "t": 325.90872, "r": 234.88211000000004, "b": 335.1217, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": " tab to see the columns of the TRANSACTIONS table, as shown in ", "bbox": {"l": 234.84026999999998, "t": 325.90872, "r": 531.82043, "b": 335.1217, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Figure 4-13.", "bbox": {"l": 151.20016, "t": 337.90854, "r": 205.13353, "b": 347.1215199999999, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 136.23361206054688, "t": 482.2267150878906, "r": 383.62402, "b": 492.1814270019531, "coord_origin": "TOPLEFT"}, "confidence": 0.9186105132102966, "cells": [{"id": 11, "text": "Figure 4-13 Column definitions of the TRANSACTIONS table", "bbox": {"l": 136.8, "t": 483.31799, "r": 383.62402, "b": 491.64301, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 136.8, "t": 508.458251953125, "r": 547.3941, "b": 554.54103, "coord_origin": "TOPLEFT"}, "confidence": 0.7894290685653687, "cells": [{"id": 12, "text": "10.Click the ", "bbox": {"l": 136.8, "t": 509.32861, "r": 192.09694, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Key Constraints", "bbox": {"l": 192.11984, "t": 509.32861, "r": 268.44635, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ", ", "bbox": {"l": 268.26007, "t": 509.32861, "r": 273.89941, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Foreign Key Constraints", "bbox": {"l": 273.83966, "t": 509.32861, "r": 389.64954, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ", and ", "bbox": {"l": 389.45932, "t": 509.32861, "r": 414.47784, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Check Constraints ", "bbox": {"l": 414.47983, "t": 509.32861, "r": 505.37079, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "tabs to ", "bbox": {"l": 505.37976, "t": 509.32861, "r": 538.20105, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "review the key, foreign, and check constraints on the TRANSACTIONS table, as shown in ", "bbox": {"l": 151.20016, "t": 521.32843, "r": 547.3941, "b": 530.54141, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Figure 4-14. There is one Foreign Key Constraint and one Check Constraint on the ", "bbox": {"l": 151.20016, "t": 533.32822, "r": 518.87848, "b": 542.54123, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "TRANSACTIONS table.", "bbox": {"l": 151.20016, "t": 545.32803, "r": 256.03613, "b": 554.54103, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "caption", "bbox": {"l": 64.34345245361328, "t": 724.33056640625, "r": 342.01257, "b": 734.162998, "coord_origin": "TOPLEFT"}, "confidence": 0.927774965763092, "cells": [{"id": 22, "text": "Figure 4-14 Reviewing the constraints on the TRANSACTIONS table", "bbox": {"l": 64.800003, "t": 725.837997, "r": 342.01257, "b": 734.162998, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 135.87826538085938, "t": 107.37496948242188, "r": 451.5091857910156, "b": 296.46051025390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9791154861450195, "cells": []}, {"id": 9, "label": "picture", "bbox": {"l": 63.676544189453125, "t": 568.8480224609375, "r": 546.6666870117188, "b": 722.6273803710938, "coord_origin": "TOPLEFT"}, "confidence": 0.9123829007148743, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 61, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.11357116699219, "t": 754.0479125976562, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8953660130500793, "cells": [{"id": 0, "text": "46 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "46"}, {"label": "page_footer", "id": 1, "page_no": 61, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.1781997680664, "t": 754.6085205078125, "r": 334.42142, "b": 764.017578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9389416575431824, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "list_item", "id": 2, "page_no": 61, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.05352783203125, "t": 70.39522552490234, "r": 547.25958, "b": 93.26668548583984, "coord_origin": "TOPLEFT"}, "confidence": 0.9381867051124573, "cells": [{"id": 2, "text": "8.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.06769, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Review the definition of the TRANSACTIONS table. The definition of the TRANSACTIONS ", "bbox": {"l": 147.82356, "t": 71.50867000000005, "r": 547.25958, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "table is shown in Figure 4-12. RCAC is not defined for this table yet.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 449.76917, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "8. Review the definition of the TRANSACTIONS table. The definition of the TRANSACTIONS table is shown in Figure 4-12. RCAC is not defined for this table yet."}, {"label": "caption", "id": 3, "page_no": 61, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.08340454101562, "t": 299.330322265625, "r": 321.95263671875, "b": 308.88140869140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9399792551994324, "cells": [{"id": 5, "text": "Figure 4-12 TRANSACTIONS table attributes", "bbox": {"l": 136.8, "t": 299.95801, "r": 321.56638, "b": 308.28302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-12 TRANSACTIONS table attributes"}, {"label": "list_item", "id": 4, "page_no": 61, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.10157775878906, "t": 325.2121887207031, "r": 531.82043, "b": 348.0757141113281, "coord_origin": "TOPLEFT"}, "confidence": 0.9077776670455933, "cells": [{"id": 6, "text": "9.", "bbox": {"l": 136.8, "t": 325.90872, "r": 145.62772, "b": 335.1217, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Click the ", "bbox": {"l": 148.57028, "t": 325.90872, "r": 192.09492, "b": 335.1217, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Columns", "bbox": {"l": 192.11984, "t": 325.90872, "r": 234.88211000000004, "b": 335.1217, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": " tab to see the columns of the TRANSACTIONS table, as shown in ", "bbox": {"l": 234.84026999999998, "t": 325.90872, "r": 531.82043, "b": 335.1217, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Figure 4-13.", "bbox": {"l": 151.20016, "t": 337.90854, "r": 205.13353, "b": 347.1215199999999, "coord_origin": "TOPLEFT"}}]}, "text": "9. Click the Columns tab to see the columns of the TRANSACTIONS table, as shown in Figure 4-13."}, {"label": "caption", "id": 5, "page_no": 61, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.23361206054688, "t": 482.2267150878906, "r": 383.62402, "b": 492.1814270019531, "coord_origin": "TOPLEFT"}, "confidence": 0.9186105132102966, "cells": [{"id": 11, "text": "Figure 4-13 Column definitions of the TRANSACTIONS table", "bbox": {"l": 136.8, "t": 483.31799, "r": 383.62402, "b": 491.64301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-13 Column definitions of the TRANSACTIONS table"}, {"label": "list_item", "id": 6, "page_no": 61, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.8, "t": 508.458251953125, "r": 547.3941, "b": 554.54103, "coord_origin": "TOPLEFT"}, "confidence": 0.7894290685653687, "cells": [{"id": 12, "text": "10.Click the ", "bbox": {"l": 136.8, "t": 509.32861, "r": 192.09694, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Key Constraints", "bbox": {"l": 192.11984, "t": 509.32861, "r": 268.44635, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ", ", "bbox": {"l": 268.26007, "t": 509.32861, "r": 273.89941, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Foreign Key Constraints", "bbox": {"l": 273.83966, "t": 509.32861, "r": 389.64954, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ", and ", "bbox": {"l": 389.45932, "t": 509.32861, "r": 414.47784, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Check Constraints ", "bbox": {"l": 414.47983, "t": 509.32861, "r": 505.37079, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "tabs to ", "bbox": {"l": 505.37976, "t": 509.32861, "r": 538.20105, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "review the key, foreign, and check constraints on the TRANSACTIONS table, as shown in ", "bbox": {"l": 151.20016, "t": 521.32843, "r": 547.3941, "b": 530.54141, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Figure 4-14. There is one Foreign Key Constraint and one Check Constraint on the ", "bbox": {"l": 151.20016, "t": 533.32822, "r": 518.87848, "b": 542.54123, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "TRANSACTIONS table.", "bbox": {"l": 151.20016, "t": 545.32803, "r": 256.03613, "b": 554.54103, "coord_origin": "TOPLEFT"}}]}, "text": "10.Click the Key Constraints , Foreign Key Constraints , and Check Constraints tabs to review the key, foreign, and check constraints on the TRANSACTIONS table, as shown in Figure 4-14. There is one Foreign Key Constraint and one Check Constraint on the TRANSACTIONS table."}, {"label": "caption", "id": 7, "page_no": 61, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 64.34345245361328, "t": 724.33056640625, "r": 342.01257, "b": 734.162998, "coord_origin": "TOPLEFT"}, "confidence": 0.927774965763092, "cells": [{"id": 22, "text": "Figure 4-14 Reviewing the constraints on the TRANSACTIONS table", "bbox": {"l": 64.800003, "t": 725.837997, "r": 342.01257, "b": 734.162998, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-14 Reviewing the constraints on the TRANSACTIONS table"}, {"label": "picture", "id": 8, "page_no": 61, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 135.87826538085938, "t": 107.37496948242188, "r": 451.5091857910156, "b": 296.46051025390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9791154861450195, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 9, "page_no": 61, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 63.676544189453125, "t": 568.8480224609375, "r": 546.6666870117188, "b": 722.6273803710938, "coord_origin": "TOPLEFT"}, "confidence": 0.9123829007148743, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 61, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.05352783203125, "t": 70.39522552490234, "r": 547.25958, "b": 93.26668548583984, "coord_origin": "TOPLEFT"}, "confidence": 0.9381867051124573, "cells": [{"id": 2, "text": "8.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.06769, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Review the definition of the TRANSACTIONS table. The definition of the TRANSACTIONS ", "bbox": {"l": 147.82356, "t": 71.50867000000005, "r": 547.25958, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "table is shown in Figure 4-12. RCAC is not defined for this table yet.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 449.76917, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "8. Review the definition of the TRANSACTIONS table. The definition of the TRANSACTIONS table is shown in Figure 4-12. RCAC is not defined for this table yet."}, {"label": "caption", "id": 3, "page_no": 61, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.08340454101562, "t": 299.330322265625, "r": 321.95263671875, "b": 308.88140869140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9399792551994324, "cells": [{"id": 5, "text": "Figure 4-12 TRANSACTIONS table attributes", "bbox": {"l": 136.8, "t": 299.95801, "r": 321.56638, "b": 308.28302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-12 TRANSACTIONS table attributes"}, {"label": "list_item", "id": 4, "page_no": 61, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.10157775878906, "t": 325.2121887207031, "r": 531.82043, "b": 348.0757141113281, "coord_origin": "TOPLEFT"}, "confidence": 0.9077776670455933, "cells": [{"id": 6, "text": "9.", "bbox": {"l": 136.8, "t": 325.90872, "r": 145.62772, "b": 335.1217, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Click the ", "bbox": {"l": 148.57028, "t": 325.90872, "r": 192.09492, "b": 335.1217, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Columns", "bbox": {"l": 192.11984, "t": 325.90872, "r": 234.88211000000004, "b": 335.1217, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": " tab to see the columns of the TRANSACTIONS table, as shown in ", "bbox": {"l": 234.84026999999998, "t": 325.90872, "r": 531.82043, "b": 335.1217, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Figure 4-13.", "bbox": {"l": 151.20016, "t": 337.90854, "r": 205.13353, "b": 347.1215199999999, "coord_origin": "TOPLEFT"}}]}, "text": "9. Click the Columns tab to see the columns of the TRANSACTIONS table, as shown in Figure 4-13."}, {"label": "caption", "id": 5, "page_no": 61, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.23361206054688, "t": 482.2267150878906, "r": 383.62402, "b": 492.1814270019531, "coord_origin": "TOPLEFT"}, "confidence": 0.9186105132102966, "cells": [{"id": 11, "text": "Figure 4-13 Column definitions of the TRANSACTIONS table", "bbox": {"l": 136.8, "t": 483.31799, "r": 383.62402, "b": 491.64301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-13 Column definitions of the TRANSACTIONS table"}, {"label": "list_item", "id": 6, "page_no": 61, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.8, "t": 508.458251953125, "r": 547.3941, "b": 554.54103, "coord_origin": "TOPLEFT"}, "confidence": 0.7894290685653687, "cells": [{"id": 12, "text": "10.Click the ", "bbox": {"l": 136.8, "t": 509.32861, "r": 192.09694, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Key Constraints", "bbox": {"l": 192.11984, "t": 509.32861, "r": 268.44635, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ", ", "bbox": {"l": 268.26007, "t": 509.32861, "r": 273.89941, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Foreign Key Constraints", "bbox": {"l": 273.83966, "t": 509.32861, "r": 389.64954, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ", and ", "bbox": {"l": 389.45932, "t": 509.32861, "r": 414.47784, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Check Constraints ", "bbox": {"l": 414.47983, "t": 509.32861, "r": 505.37079, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "tabs to ", "bbox": {"l": 505.37976, "t": 509.32861, "r": 538.20105, "b": 518.5416, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "review the key, foreign, and check constraints on the TRANSACTIONS table, as shown in ", "bbox": {"l": 151.20016, "t": 521.32843, "r": 547.3941, "b": 530.54141, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Figure 4-14. There is one Foreign Key Constraint and one Check Constraint on the ", "bbox": {"l": 151.20016, "t": 533.32822, "r": 518.87848, "b": 542.54123, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "TRANSACTIONS table.", "bbox": {"l": 151.20016, "t": 545.32803, "r": 256.03613, "b": 554.54103, "coord_origin": "TOPLEFT"}}]}, "text": "10.Click the Key Constraints , Foreign Key Constraints , and Check Constraints tabs to review the key, foreign, and check constraints on the TRANSACTIONS table, as shown in Figure 4-14. There is one Foreign Key Constraint and one Check Constraint on the TRANSACTIONS table."}, {"label": "caption", "id": 7, "page_no": 61, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 64.34345245361328, "t": 724.33056640625, "r": 342.01257, "b": 734.162998, "coord_origin": "TOPLEFT"}, "confidence": 0.927774965763092, "cells": [{"id": 22, "text": "Figure 4-14 Reviewing the constraints on the TRANSACTIONS table", "bbox": {"l": 64.800003, "t": 725.837997, "r": 342.01257, "b": 734.162998, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-14 Reviewing the constraints on the TRANSACTIONS table"}, {"label": "picture", "id": 8, "page_no": 61, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 135.87826538085938, "t": 107.37496948242188, "r": 451.5091857910156, "b": 296.46051025390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9791154861450195, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 9, "page_no": 61, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 63.676544189453125, "t": 568.8480224609375, "r": 546.6666870117188, "b": 722.6273803710938, "coord_origin": "TOPLEFT"}, "confidence": 0.9123829007148743, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 61, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.11357116699219, "t": 754.0479125976562, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8953660130500793, "cells": [{"id": 0, "text": "46 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "46"}, {"label": "page_footer", "id": 1, "page_no": 61, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.1781997680664, "t": 754.6085205078125, "r": 334.42142, "b": 764.017578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9389416575431824, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 62, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "47", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Now that you have reviewed the database model for this example, the following sections ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 527.00562, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "describe the steps that are required to implement RCAC in this banking scenario.", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 494.7092, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "4.3.2", "bbox": {"l": 64.800003, "t": 113.33471999999995, "r": 93.888939, "b": 125.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Assigning function ID QIBM_DB_SECADM to the Database Engineers ", "bbox": {"l": 97.52504, "t": 113.33471999999995, "r": 532.11951, "b": 125.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "group", "bbox": {"l": 64.799988, "t": 129.35455000000002, "r": 101.27979, "b": 141.34258999999997, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "The first step is to assign the appropriate function usage ID to the Database Engineers ", "bbox": {"l": 136.8, "t": 155.50867000000005, "r": 522.06989, "b": 164.72168, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "(DBEs) that will be implementing RCAC. For a description of function usage IDs, see 2.1, ", "bbox": {"l": 136.8, "t": 167.50847999999996, "r": 531.98792, "b": 176.7215, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "\u201cRoles\u201d on page 8. In this example, the DBEs are users MCAIN and HBEDOYA.", "bbox": {"l": 136.80002, "t": 179.50829999999996, "r": 487.71283000000005, "b": 188.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Complete the following steps:", "bbox": {"l": 136.80002, "t": 201.52788999999996, "r": 266.86069, "b": 210.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "1.", "bbox": {"l": 136.80002, "t": 218.50769000000003, "r": 145.22206, "b": 227.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Right-click the database connection and select ", "bbox": {"l": 148.0294, "t": 218.50769000000003, "r": 359.07529, "b": 227.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Application Administration", "bbox": {"l": 359.16, "t": 218.50769000000003, "r": 486.7905, "b": 227.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ", as shown in", "bbox": {"l": 486.71973, "t": 218.50769000000003, "r": 544.54364, "b": 227.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Figure 4-15.", "bbox": {"l": 151.19922, "t": 230.50751000000002, "r": 205.13258, "b": 239.72051999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Figure 4-15 Application administration", "bbox": {"l": 136.8, "t": 494.41791, "r": 292.51532, "b": 502.74292, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 214.25257873535156, "t": 754.7490234375, "r": 523.59357, "b": 764.0389404296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9526394605636597, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.6387939453125, "t": 754.2075805664062, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9067078232765198, "cells": [{"id": 1, "text": "47", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 136.23085021972656, "t": 70.71146392822266, "r": 527.00562, "b": 92.8815689086914, "coord_origin": "TOPLEFT"}, "confidence": 0.9731295108795166, "cells": [{"id": 2, "text": "Now that you have reviewed the database model for this example, the following sections ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 527.00562, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "describe the steps that are required to implement RCAC in this banking scenario.", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 494.7092, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "section_header", "bbox": {"l": 64.15889739990234, "t": 112.25782775878906, "r": 532.11951, "b": 141.6817169189453, "coord_origin": "TOPLEFT"}, "confidence": 0.9485021233558655, "cells": [{"id": 4, "text": "4.3.2", "bbox": {"l": 64.800003, "t": 113.33471999999995, "r": 93.888939, "b": 125.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Assigning function ID QIBM_DB_SECADM to the Database Engineers ", "bbox": {"l": 97.52504, "t": 113.33471999999995, "r": 532.11951, "b": 125.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "group", "bbox": {"l": 64.799988, "t": 129.35455000000002, "r": 101.27979, "b": 141.34258999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.7303466796875, "t": 154.53631591796875, "r": 531.98792, "b": 188.7343292236328, "coord_origin": "TOPLEFT"}, "confidence": 0.9785159826278687, "cells": [{"id": 7, "text": "The first step is to assign the appropriate function usage ID to the Database Engineers ", "bbox": {"l": 136.8, "t": 155.50867000000005, "r": 522.06989, "b": 164.72168, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "(DBEs) that will be implementing RCAC. For a description of function usage IDs, see 2.1, ", "bbox": {"l": 136.8, "t": 167.50847999999996, "r": 531.98792, "b": 176.7215, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "\u201cRoles\u201d on page 8. In this example, the DBEs are users MCAIN and HBEDOYA.", "bbox": {"l": 136.80002, "t": 179.50829999999996, "r": 487.71283000000005, "b": 188.72131000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "section_header", "bbox": {"l": 136.1609649658203, "t": 200.50624084472656, "r": 266.86069, "b": 211.13751220703125, "coord_origin": "TOPLEFT"}, "confidence": 0.8128474354743958, "cells": [{"id": 10, "text": "Complete the following steps:", "bbox": {"l": 136.80002, "t": 201.52788999999996, "r": 266.86069, "b": 210.74090999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 136.48870849609375, "t": 217.26614379882812, "r": 544.54364, "b": 239.72051999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.9693723320960999, "cells": [{"id": 11, "text": "1.", "bbox": {"l": 136.80002, "t": 218.50769000000003, "r": 145.22206, "b": 227.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Right-click the database connection and select ", "bbox": {"l": 148.0294, "t": 218.50769000000003, "r": 359.07529, "b": 227.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Application Administration", "bbox": {"l": 359.16, "t": 218.50769000000003, "r": 486.7905, "b": 227.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ", as shown in", "bbox": {"l": 486.71973, "t": 218.50769000000003, "r": 544.54364, "b": 227.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Figure 4-15.", "bbox": {"l": 151.19922, "t": 230.50751000000002, "r": 205.13258, "b": 239.72051999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "caption", "bbox": {"l": 136.063720703125, "t": 493.6786193847656, "r": 292.96966552734375, "b": 502.8232727050781, "coord_origin": "TOPLEFT"}, "confidence": 0.948575496673584, "cells": [{"id": 16, "text": "Figure 4-15 Application administration", "bbox": {"l": 136.8, "t": 494.41791, "r": 292.51532, "b": 502.74292, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 135.87820434570312, "t": 254.07247924804688, "r": 343.8211669921875, "b": 492.20819091796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9855658411979675, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 62, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.25257873535156, "t": 754.7490234375, "r": 523.59357, "b": 764.0389404296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9526394605636597, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 62, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6387939453125, "t": 754.2075805664062, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9067078232765198, "cells": [{"id": 1, "text": "47", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "47"}, {"label": "text", "id": 2, "page_no": 62, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.23085021972656, "t": 70.71146392822266, "r": 527.00562, "b": 92.8815689086914, "coord_origin": "TOPLEFT"}, "confidence": 0.9731295108795166, "cells": [{"id": 2, "text": "Now that you have reviewed the database model for this example, the following sections ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 527.00562, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "describe the steps that are required to implement RCAC in this banking scenario.", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 494.7092, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Now that you have reviewed the database model for this example, the following sections describe the steps that are required to implement RCAC in this banking scenario."}, {"label": "section_header", "id": 3, "page_no": 62, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 64.15889739990234, "t": 112.25782775878906, "r": 532.11951, "b": 141.6817169189453, "coord_origin": "TOPLEFT"}, "confidence": 0.9485021233558655, "cells": [{"id": 4, "text": "4.3.2", "bbox": {"l": 64.800003, "t": 113.33471999999995, "r": 93.888939, "b": 125.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Assigning function ID QIBM_DB_SECADM to the Database Engineers ", "bbox": {"l": 97.52504, "t": 113.33471999999995, "r": 532.11951, "b": 125.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "group", "bbox": {"l": 64.799988, "t": 129.35455000000002, "r": 101.27979, "b": 141.34258999999997, "coord_origin": "TOPLEFT"}}]}, "text": "4.3.2 Assigning function ID QIBM_DB_SECADM to the Database Engineers group"}, {"label": "text", "id": 4, "page_no": 62, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.7303466796875, "t": 154.53631591796875, "r": 531.98792, "b": 188.7343292236328, "coord_origin": "TOPLEFT"}, "confidence": 0.9785159826278687, "cells": [{"id": 7, "text": "The first step is to assign the appropriate function usage ID to the Database Engineers ", "bbox": {"l": 136.8, "t": 155.50867000000005, "r": 522.06989, "b": 164.72168, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "(DBEs) that will be implementing RCAC. For a description of function usage IDs, see 2.1, ", "bbox": {"l": 136.8, "t": 167.50847999999996, "r": 531.98792, "b": 176.7215, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "\u201cRoles\u201d on page 8. In this example, the DBEs are users MCAIN and HBEDOYA.", "bbox": {"l": 136.80002, "t": 179.50829999999996, "r": 487.71283000000005, "b": 188.72131000000002, "coord_origin": "TOPLEFT"}}]}, "text": "The first step is to assign the appropriate function usage ID to the Database Engineers (DBEs) that will be implementing RCAC. For a description of function usage IDs, see 2.1, \u201cRoles\u201d on page 8. In this example, the DBEs are users MCAIN and HBEDOYA."}, {"label": "section_header", "id": 5, "page_no": 62, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 136.1609649658203, "t": 200.50624084472656, "r": 266.86069, "b": 211.13751220703125, "coord_origin": "TOPLEFT"}, "confidence": 0.8128474354743958, "cells": [{"id": 10, "text": "Complete the following steps:", "bbox": {"l": 136.80002, "t": 201.52788999999996, "r": 266.86069, "b": 210.74090999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Complete the following steps:"}, {"label": "list_item", "id": 6, "page_no": 62, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.48870849609375, "t": 217.26614379882812, "r": 544.54364, "b": 239.72051999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.9693723320960999, "cells": [{"id": 11, "text": "1.", "bbox": {"l": 136.80002, "t": 218.50769000000003, "r": 145.22206, "b": 227.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Right-click the database connection and select ", "bbox": {"l": 148.0294, "t": 218.50769000000003, "r": 359.07529, "b": 227.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Application Administration", "bbox": {"l": 359.16, "t": 218.50769000000003, "r": 486.7905, "b": 227.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ", as shown in", "bbox": {"l": 486.71973, "t": 218.50769000000003, "r": 544.54364, "b": 227.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Figure 4-15.", "bbox": {"l": 151.19922, "t": 230.50751000000002, "r": 205.13258, "b": 239.72051999999996, "coord_origin": "TOPLEFT"}}]}, "text": "1. Right-click the database connection and select Application Administration , as shown in Figure 4-15."}, {"label": "caption", "id": 7, "page_no": 62, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 136.063720703125, "t": 493.6786193847656, "r": 292.96966552734375, "b": 502.8232727050781, "coord_origin": "TOPLEFT"}, "confidence": 0.948575496673584, "cells": [{"id": 16, "text": "Figure 4-15 Application administration", "bbox": {"l": 136.8, "t": 494.41791, "r": 292.51532, "b": 502.74292, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-15 Application administration"}, {"label": "picture", "id": 8, "page_no": 62, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 135.87820434570312, "t": 254.07247924804688, "r": 343.8211669921875, "b": 492.20819091796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9855658411979675, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 62, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.23085021972656, "t": 70.71146392822266, "r": 527.00562, "b": 92.8815689086914, "coord_origin": "TOPLEFT"}, "confidence": 0.9731295108795166, "cells": [{"id": 2, "text": "Now that you have reviewed the database model for this example, the following sections ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 527.00562, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "describe the steps that are required to implement RCAC in this banking scenario.", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 494.7092, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Now that you have reviewed the database model for this example, the following sections describe the steps that are required to implement RCAC in this banking scenario."}, {"label": "section_header", "id": 3, "page_no": 62, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 64.15889739990234, "t": 112.25782775878906, "r": 532.11951, "b": 141.6817169189453, "coord_origin": "TOPLEFT"}, "confidence": 0.9485021233558655, "cells": [{"id": 4, "text": "4.3.2", "bbox": {"l": 64.800003, "t": 113.33471999999995, "r": 93.888939, "b": 125.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Assigning function ID QIBM_DB_SECADM to the Database Engineers ", "bbox": {"l": 97.52504, "t": 113.33471999999995, "r": 532.11951, "b": 125.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "group", "bbox": {"l": 64.799988, "t": 129.35455000000002, "r": 101.27979, "b": 141.34258999999997, "coord_origin": "TOPLEFT"}}]}, "text": "4.3.2 Assigning function ID QIBM_DB_SECADM to the Database Engineers group"}, {"label": "text", "id": 4, "page_no": 62, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.7303466796875, "t": 154.53631591796875, "r": 531.98792, "b": 188.7343292236328, "coord_origin": "TOPLEFT"}, "confidence": 0.9785159826278687, "cells": [{"id": 7, "text": "The first step is to assign the appropriate function usage ID to the Database Engineers ", "bbox": {"l": 136.8, "t": 155.50867000000005, "r": 522.06989, "b": 164.72168, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "(DBEs) that will be implementing RCAC. For a description of function usage IDs, see 2.1, ", "bbox": {"l": 136.8, "t": 167.50847999999996, "r": 531.98792, "b": 176.7215, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "\u201cRoles\u201d on page 8. In this example, the DBEs are users MCAIN and HBEDOYA.", "bbox": {"l": 136.80002, "t": 179.50829999999996, "r": 487.71283000000005, "b": 188.72131000000002, "coord_origin": "TOPLEFT"}}]}, "text": "The first step is to assign the appropriate function usage ID to the Database Engineers (DBEs) that will be implementing RCAC. For a description of function usage IDs, see 2.1, \u201cRoles\u201d on page 8. In this example, the DBEs are users MCAIN and HBEDOYA."}, {"label": "section_header", "id": 5, "page_no": 62, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 136.1609649658203, "t": 200.50624084472656, "r": 266.86069, "b": 211.13751220703125, "coord_origin": "TOPLEFT"}, "confidence": 0.8128474354743958, "cells": [{"id": 10, "text": "Complete the following steps:", "bbox": {"l": 136.80002, "t": 201.52788999999996, "r": 266.86069, "b": 210.74090999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Complete the following steps:"}, {"label": "list_item", "id": 6, "page_no": 62, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.48870849609375, "t": 217.26614379882812, "r": 544.54364, "b": 239.72051999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.9693723320960999, "cells": [{"id": 11, "text": "1.", "bbox": {"l": 136.80002, "t": 218.50769000000003, "r": 145.22206, "b": 227.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Right-click the database connection and select ", "bbox": {"l": 148.0294, "t": 218.50769000000003, "r": 359.07529, "b": 227.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Application Administration", "bbox": {"l": 359.16, "t": 218.50769000000003, "r": 486.7905, "b": 227.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ", as shown in", "bbox": {"l": 486.71973, "t": 218.50769000000003, "r": 544.54364, "b": 227.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Figure 4-15.", "bbox": {"l": 151.19922, "t": 230.50751000000002, "r": 205.13258, "b": 239.72051999999996, "coord_origin": "TOPLEFT"}}]}, "text": "1. Right-click the database connection and select Application Administration , as shown in Figure 4-15."}, {"label": "caption", "id": 7, "page_no": 62, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 136.063720703125, "t": 493.6786193847656, "r": 292.96966552734375, "b": 502.8232727050781, "coord_origin": "TOPLEFT"}, "confidence": 0.948575496673584, "cells": [{"id": 16, "text": "Figure 4-15 Application administration", "bbox": {"l": 136.8, "t": 494.41791, "r": 292.51532, "b": 502.74292, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-15 Application administration"}, {"label": "picture", "id": 8, "page_no": 62, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 135.87820434570312, "t": 254.07247924804688, "r": 343.8211669921875, "b": 492.20819091796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9855658411979675, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 62, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.25257873535156, "t": 754.7490234375, "r": 523.59357, "b": 764.0389404296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9526394605636597, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 62, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6387939453125, "t": 754.2075805664062, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9067078232765198, "cells": [{"id": 1, "text": "47", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "47"}]}}, {"page_no": 63, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "48 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "2.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.19351, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The Application Administration window opens, as shown in Figure 4-16. Click ", "bbox": {"l": 147.99136, "t": 71.50867000000005, "r": 493.65488, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "IBM i", "bbox": {"l": 493.7405099999999, "t": 71.50867000000005, "r": 517.56885, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "\uf0ae", "bbox": {"l": 520.38049, "t": 68.65014999999994, "r": 530.211, "b": 80.84118999999998, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Database", "bbox": {"l": 151.20117, "t": 83.50847999999996, "r": 195.65863, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " and select the function usage ID of ", "bbox": {"l": 195.66162, "t": 83.50847999999996, "r": 355.12521, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Database Security Administrator", "bbox": {"l": 355.08139, "t": 83.50847999999996, "r": 510.06299, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": ".", "bbox": {"l": 509.5809300000001, "t": 83.50847999999996, "r": 512.34979, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Figure 4-16 Application administration for IBM i", "bbox": {"l": 136.8, "t": 392.95801, "r": 328.13547, "b": 401.28302, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "3.", "bbox": {"l": 136.8, "t": 418.90872, "r": 145.84831, "b": 428.1217, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Click ", "bbox": {"l": 148.86441, "t": 418.90872, "r": 175.38007, "b": 428.1217, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Customize", "bbox": {"l": 175.43982, "t": 418.90872, "r": 226.02864, "b": 428.1217, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " for the function usage ID of Database Security Administrator, as shown ", "bbox": {"l": 226.07945, "t": 418.90872, "r": 544.57233, "b": 428.1217, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "in Figure 4-17.", "bbox": {"l": 151.19919, "t": 430.90854, "r": 215.63544000000002, "b": 440.1215199999999, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Figure 4-17 Customizing the Database Security Administrator function usage ID", "bbox": {"l": 136.8, "t": 613.758, "r": 458.56000000000006, "b": 622.0830100000001, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.1659164428711, "t": 754.1441040039062, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9094043970108032, "cells": [{"id": 0, "text": "48 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.31367492675781, "t": 754.6023559570312, "r": 334.42142, "b": 764.0177001953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9526337385177612, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 135.7973175048828, "t": 68.65014999999994, "r": 530.211, "b": 93.15596771240234, "coord_origin": "TOPLEFT"}, "confidence": 0.9675157070159912, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.19351, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The Application Administration window opens, as shown in Figure 4-16. Click ", "bbox": {"l": 147.99136, "t": 71.50867000000005, "r": 493.65488, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "IBM i", "bbox": {"l": 493.7405099999999, "t": 71.50867000000005, "r": 517.56885, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "\uf0ae", "bbox": {"l": 520.38049, "t": 68.65014999999994, "r": 530.211, "b": 80.84118999999998, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Database", "bbox": {"l": 151.20117, "t": 83.50847999999996, "r": 195.65863, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " and select the function usage ID of ", "bbox": {"l": 195.66162, "t": 83.50847999999996, "r": 355.12521, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Database Security Administrator", "bbox": {"l": 355.08139, "t": 83.50847999999996, "r": 510.06299, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": ".", "bbox": {"l": 509.5809300000001, "t": 83.50847999999996, "r": 512.34979, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 135.85130310058594, "t": 391.84564208984375, "r": 329.4411315917969, "b": 401.4302673339844, "coord_origin": "TOPLEFT"}, "confidence": 0.9492601156234741, "cells": [{"id": 10, "text": "Figure 4-16 Application administration for IBM i", "bbox": {"l": 136.8, "t": 392.95801, "r": 328.13547, "b": 401.28302, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 135.79788208007812, "t": 417.66436767578125, "r": 544.57233, "b": 440.6051330566406, "coord_origin": "TOPLEFT"}, "confidence": 0.9629845023155212, "cells": [{"id": 11, "text": "3.", "bbox": {"l": 136.8, "t": 418.90872, "r": 145.84831, "b": 428.1217, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Click ", "bbox": {"l": 148.86441, "t": 418.90872, "r": 175.38007, "b": 428.1217, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Customize", "bbox": {"l": 175.43982, "t": 418.90872, "r": 226.02864, "b": 428.1217, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " for the function usage ID of Database Security Administrator, as shown ", "bbox": {"l": 226.07945, "t": 418.90872, "r": 544.57233, "b": 428.1217, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "in Figure 4-17.", "bbox": {"l": 151.19919, "t": 430.90854, "r": 215.63544000000002, "b": 440.1215199999999, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 136.05140686035156, "t": 612.469482421875, "r": 459.4308776855469, "b": 622.1511840820312, "coord_origin": "TOPLEFT"}, "confidence": 0.9522164463996887, "cells": [{"id": 16, "text": "Figure 4-17 Customizing the Database Security Administrator function usage ID", "bbox": {"l": 136.8, "t": 613.758, "r": 458.56000000000006, "b": 622.0830100000001, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "picture", "bbox": {"l": 136.17874145507812, "t": 107.1623306274414, "r": 527.1444702148438, "b": 388.9134826660156, "coord_origin": "TOPLEFT"}, "confidence": 0.9870592355728149, "cells": []}, {"id": 7, "label": "picture", "bbox": {"l": 136.42279052734375, "t": 454.41522216796875, "r": 528.0494384765625, "b": 610.991455078125, "coord_origin": "TOPLEFT"}, "confidence": 0.986380398273468, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 63, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.1659164428711, "t": 754.1441040039062, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9094043970108032, "cells": [{"id": 0, "text": "48 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "48"}, {"label": "page_footer", "id": 1, "page_no": 63, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.31367492675781, "t": 754.6023559570312, "r": 334.42142, "b": 764.0177001953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9526337385177612, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "list_item", "id": 2, "page_no": 63, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.7973175048828, "t": 68.65014999999994, "r": 530.211, "b": 93.15596771240234, "coord_origin": "TOPLEFT"}, "confidence": 0.9675157070159912, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.19351, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The Application Administration window opens, as shown in Figure 4-16. Click ", "bbox": {"l": 147.99136, "t": 71.50867000000005, "r": 493.65488, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "IBM i", "bbox": {"l": 493.7405099999999, "t": 71.50867000000005, "r": 517.56885, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "\uf0ae", "bbox": {"l": 520.38049, "t": 68.65014999999994, "r": 530.211, "b": 80.84118999999998, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Database", "bbox": {"l": 151.20117, "t": 83.50847999999996, "r": 195.65863, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " and select the function usage ID of ", "bbox": {"l": 195.66162, "t": 83.50847999999996, "r": 355.12521, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Database Security Administrator", "bbox": {"l": 355.08139, "t": 83.50847999999996, "r": 510.06299, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": ".", "bbox": {"l": 509.5809300000001, "t": 83.50847999999996, "r": 512.34979, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "2. The Application Administration window opens, as shown in Figure 4-16. Click IBM i \uf0ae Database and select the function usage ID of Database Security Administrator ."}, {"label": "caption", "id": 3, "page_no": 63, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.85130310058594, "t": 391.84564208984375, "r": 329.4411315917969, "b": 401.4302673339844, "coord_origin": "TOPLEFT"}, "confidence": 0.9492601156234741, "cells": [{"id": 10, "text": "Figure 4-16 Application administration for IBM i", "bbox": {"l": 136.8, "t": 392.95801, "r": 328.13547, "b": 401.28302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-16 Application administration for IBM i"}, {"label": "list_item", "id": 4, "page_no": 63, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.79788208007812, "t": 417.66436767578125, "r": 544.57233, "b": 440.6051330566406, "coord_origin": "TOPLEFT"}, "confidence": 0.9629845023155212, "cells": [{"id": 11, "text": "3.", "bbox": {"l": 136.8, "t": 418.90872, "r": 145.84831, "b": 428.1217, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Click ", "bbox": {"l": 148.86441, "t": 418.90872, "r": 175.38007, "b": 428.1217, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Customize", "bbox": {"l": 175.43982, "t": 418.90872, "r": 226.02864, "b": 428.1217, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " for the function usage ID of Database Security Administrator, as shown ", "bbox": {"l": 226.07945, "t": 418.90872, "r": 544.57233, "b": 428.1217, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "in Figure 4-17.", "bbox": {"l": 151.19919, "t": 430.90854, "r": 215.63544000000002, "b": 440.1215199999999, "coord_origin": "TOPLEFT"}}]}, "text": "3. Click Customize for the function usage ID of Database Security Administrator, as shown in Figure 4-17."}, {"label": "caption", "id": 5, "page_no": 63, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.05140686035156, "t": 612.469482421875, "r": 459.4308776855469, "b": 622.1511840820312, "coord_origin": "TOPLEFT"}, "confidence": 0.9522164463996887, "cells": [{"id": 16, "text": "Figure 4-17 Customizing the Database Security Administrator function usage ID", "bbox": {"l": 136.8, "t": 613.758, "r": 458.56000000000006, "b": 622.0830100000001, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-17 Customizing the Database Security Administrator function usage ID"}, {"label": "picture", "id": 6, "page_no": 63, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 136.17874145507812, "t": 107.1623306274414, "r": 527.1444702148438, "b": 388.9134826660156, "coord_origin": "TOPLEFT"}, "confidence": 0.9870592355728149, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 7, "page_no": 63, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 136.42279052734375, "t": 454.41522216796875, "r": 528.0494384765625, "b": 610.991455078125, "coord_origin": "TOPLEFT"}, "confidence": 0.986380398273468, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 63, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.7973175048828, "t": 68.65014999999994, "r": 530.211, "b": 93.15596771240234, "coord_origin": "TOPLEFT"}, "confidence": 0.9675157070159912, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.19351, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The Application Administration window opens, as shown in Figure 4-16. Click ", "bbox": {"l": 147.99136, "t": 71.50867000000005, "r": 493.65488, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "IBM i", "bbox": {"l": 493.7405099999999, "t": 71.50867000000005, "r": 517.56885, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "\uf0ae", "bbox": {"l": 520.38049, "t": 68.65014999999994, "r": 530.211, "b": 80.84118999999998, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Database", "bbox": {"l": 151.20117, "t": 83.50847999999996, "r": 195.65863, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " and select the function usage ID of ", "bbox": {"l": 195.66162, "t": 83.50847999999996, "r": 355.12521, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Database Security Administrator", "bbox": {"l": 355.08139, "t": 83.50847999999996, "r": 510.06299, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": ".", "bbox": {"l": 509.5809300000001, "t": 83.50847999999996, "r": 512.34979, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "2. The Application Administration window opens, as shown in Figure 4-16. Click IBM i \uf0ae Database and select the function usage ID of Database Security Administrator ."}, {"label": "caption", "id": 3, "page_no": 63, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.85130310058594, "t": 391.84564208984375, "r": 329.4411315917969, "b": 401.4302673339844, "coord_origin": "TOPLEFT"}, "confidence": 0.9492601156234741, "cells": [{"id": 10, "text": "Figure 4-16 Application administration for IBM i", "bbox": {"l": 136.8, "t": 392.95801, "r": 328.13547, "b": 401.28302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-16 Application administration for IBM i"}, {"label": "list_item", "id": 4, "page_no": 63, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.79788208007812, "t": 417.66436767578125, "r": 544.57233, "b": 440.6051330566406, "coord_origin": "TOPLEFT"}, "confidence": 0.9629845023155212, "cells": [{"id": 11, "text": "3.", "bbox": {"l": 136.8, "t": 418.90872, "r": 145.84831, "b": 428.1217, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Click ", "bbox": {"l": 148.86441, "t": 418.90872, "r": 175.38007, "b": 428.1217, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Customize", "bbox": {"l": 175.43982, "t": 418.90872, "r": 226.02864, "b": 428.1217, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " for the function usage ID of Database Security Administrator, as shown ", "bbox": {"l": 226.07945, "t": 418.90872, "r": 544.57233, "b": 428.1217, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "in Figure 4-17.", "bbox": {"l": 151.19919, "t": 430.90854, "r": 215.63544000000002, "b": 440.1215199999999, "coord_origin": "TOPLEFT"}}]}, "text": "3. Click Customize for the function usage ID of Database Security Administrator, as shown in Figure 4-17."}, {"label": "caption", "id": 5, "page_no": 63, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.05140686035156, "t": 612.469482421875, "r": 459.4308776855469, "b": 622.1511840820312, "coord_origin": "TOPLEFT"}, "confidence": 0.9522164463996887, "cells": [{"id": 16, "text": "Figure 4-17 Customizing the Database Security Administrator function usage ID", "bbox": {"l": 136.8, "t": 613.758, "r": 458.56000000000006, "b": 622.0830100000001, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-17 Customizing the Database Security Administrator function usage ID"}, {"label": "picture", "id": 6, "page_no": 63, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 136.17874145507812, "t": 107.1623306274414, "r": 527.1444702148438, "b": 388.9134826660156, "coord_origin": "TOPLEFT"}, "confidence": 0.9870592355728149, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 7, "page_no": 63, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 136.42279052734375, "t": 454.41522216796875, "r": 528.0494384765625, "b": 610.991455078125, "coord_origin": "TOPLEFT"}, "confidence": 0.986380398273468, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 63, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.1659164428711, "t": 754.1441040039062, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9094043970108032, "cells": [{"id": 0, "text": "48 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "48"}, {"label": "page_footer", "id": 1, "page_no": 63, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.31367492675781, "t": 754.6023559570312, "r": 334.42142, "b": 764.0177001953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9526337385177612, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 64, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "49", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "4.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.1438, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The Customize Access window opens, as shown in Figure 4-18. Click the users that need ", "bbox": {"l": 147.9252, "t": 71.50903000000005, "r": 547.17651, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "to implement RCAC. For this example, HBEDOYA and MCAIN are selected. Click ", "bbox": {"l": 151.19876, "t": 83.50885000000017, "r": 506.5556, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Add", "bbox": {"l": 506.51874, "t": 83.50885000000017, "r": 525.81329, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": " and ", "bbox": {"l": 525.83917, "t": 83.50885000000017, "r": 547.19739, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "then click ", "bbox": {"l": 151.19876, "t": 95.50867000000005, "r": 195.40625, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "OK", "bbox": {"l": 195.41916, "t": 95.50867000000005, "r": 210.46075, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": ".", "bbox": {"l": 210.41891, "t": 95.50867000000005, "r": 213.18779, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Figure 4-18 Customize Access window", "bbox": {"l": 136.8, "t": 405.55798, "r": 296.37628, "b": 413.88300000000004, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "5.", "bbox": {"l": 136.8, "t": 431.50872999999996, "r": 145.20036, "b": 440.72171, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "The Application Administrator window opens again. The function usage ID of Database ", "bbox": {"l": 148.00046, "t": 431.50872999999996, "r": 537.65015, "b": 440.72171, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Security Administrator now has an X in the Customized Access column, as shown in ", "bbox": {"l": 151.20016, "t": 443.50854, "r": 525.76385, "b": 452.72153, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Figure 4-19.", "bbox": {"l": 151.20016, "t": 455.50836, "r": 205.13353, "b": 464.72134, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": ".", "bbox": {"l": 136.8, "t": 470.50812, "r": 139.56888, "b": 479.7211, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Figure 4-19 Function usage ID Database Security Administrator customized", "bbox": {"l": 136.8, "t": 586.9379, "r": 442.35632, "b": 595.26291, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 214.2803955078125, "t": 754.738525390625, "r": 523.59357, "b": 764.0549926757812, "coord_origin": "TOPLEFT"}, "confidence": 0.956462025642395, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.666015625, "t": 754.0488891601562, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9085332155227661, "cells": [{"id": 1, "text": "49", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 135.78591918945312, "t": 70.48530578613281, "r": 547.19739, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9741643071174622, "cells": [{"id": 2, "text": "4.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.1438, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The Customize Access window opens, as shown in Figure 4-18. Click the users that need ", "bbox": {"l": 147.9252, "t": 71.50903000000005, "r": 547.17651, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "to implement RCAC. For this example, HBEDOYA and MCAIN are selected. Click ", "bbox": {"l": 151.19876, "t": 83.50885000000017, "r": 506.5556, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Add", "bbox": {"l": 506.51874, "t": 83.50885000000017, "r": 525.81329, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": " and ", "bbox": {"l": 525.83917, "t": 83.50885000000017, "r": 547.19739, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "then click ", "bbox": {"l": 151.19876, "t": 95.50867000000005, "r": 195.40625, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "OK", "bbox": {"l": 195.41916, "t": 95.50867000000005, "r": 210.46075, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": ".", "bbox": {"l": 210.41891, "t": 95.50867000000005, "r": 213.18779, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.0041961669922, "t": 404.69866943359375, "r": 297.5841369628906, "b": 413.9527282714844, "coord_origin": "TOPLEFT"}, "confidence": 0.9453438520431519, "cells": [{"id": 10, "text": "Figure 4-18 Customize Access window", "bbox": {"l": 136.8, "t": 405.55798, "r": 296.37628, "b": 413.88300000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 136.253173828125, "t": 430.48211669921875, "r": 537.65015, "b": 465.2202453613281, "coord_origin": "TOPLEFT"}, "confidence": 0.9763842225074768, "cells": [{"id": 11, "text": "5.", "bbox": {"l": 136.8, "t": 431.50872999999996, "r": 145.20036, "b": 440.72171, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "The Application Administrator window opens again. The function usage ID of Database ", "bbox": {"l": 148.00046, "t": 431.50872999999996, "r": 537.65015, "b": 440.72171, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Security Administrator now has an X in the Customized Access column, as shown in ", "bbox": {"l": 151.20016, "t": 443.50854, "r": 525.76385, "b": 452.72153, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Figure 4-19.", "bbox": {"l": 151.20016, "t": 455.50836, "r": 205.13353, "b": 464.72134, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "picture", "bbox": {"l": 136.03775024414062, "t": 470.50812, "r": 484.38336181640625, "b": 583.2213134765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9760020971298218, "cells": [{"id": 15, "text": ".", "bbox": {"l": 136.8, "t": 470.50812, "r": 139.56888, "b": 479.7211, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "caption", "bbox": {"l": 136.1788787841797, "t": 586.18408203125, "r": 443.8726501464844, "b": 595.6748046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9425281286239624, "cells": [{"id": 16, "text": "Figure 4-19 Function usage ID Database Security Administrator customized", "bbox": {"l": 136.8, "t": 586.9379, "r": 442.35632, "b": 595.26291, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "picture", "bbox": {"l": 136.3659210205078, "t": 118.70867919921875, "r": 485.6257629394531, "b": 401.78082275390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9869308471679688, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 64, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.2803955078125, "t": 754.738525390625, "r": 523.59357, "b": 764.0549926757812, "coord_origin": "TOPLEFT"}, "confidence": 0.956462025642395, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 64, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.666015625, "t": 754.0488891601562, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9085332155227661, "cells": [{"id": 1, "text": "49", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "49"}, {"label": "list_item", "id": 2, "page_no": 64, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.78591918945312, "t": 70.48530578613281, "r": 547.19739, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9741643071174622, "cells": [{"id": 2, "text": "4.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.1438, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The Customize Access window opens, as shown in Figure 4-18. Click the users that need ", "bbox": {"l": 147.9252, "t": 71.50903000000005, "r": 547.17651, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "to implement RCAC. For this example, HBEDOYA and MCAIN are selected. Click ", "bbox": {"l": 151.19876, "t": 83.50885000000017, "r": 506.5556, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Add", "bbox": {"l": 506.51874, "t": 83.50885000000017, "r": 525.81329, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": " and ", "bbox": {"l": 525.83917, "t": 83.50885000000017, "r": 547.19739, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "then click ", "bbox": {"l": 151.19876, "t": 95.50867000000005, "r": 195.40625, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "OK", "bbox": {"l": 195.41916, "t": 95.50867000000005, "r": 210.46075, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": ".", "bbox": {"l": 210.41891, "t": 95.50867000000005, "r": 213.18779, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "4. The Customize Access window opens, as shown in Figure 4-18. Click the users that need to implement RCAC. For this example, HBEDOYA and MCAIN are selected. Click Add and then click OK ."}, {"label": "caption", "id": 3, "page_no": 64, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.0041961669922, "t": 404.69866943359375, "r": 297.5841369628906, "b": 413.9527282714844, "coord_origin": "TOPLEFT"}, "confidence": 0.9453438520431519, "cells": [{"id": 10, "text": "Figure 4-18 Customize Access window", "bbox": {"l": 136.8, "t": 405.55798, "r": 296.37628, "b": 413.88300000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-18 Customize Access window"}, {"label": "list_item", "id": 4, "page_no": 64, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.253173828125, "t": 430.48211669921875, "r": 537.65015, "b": 465.2202453613281, "coord_origin": "TOPLEFT"}, "confidence": 0.9763842225074768, "cells": [{"id": 11, "text": "5.", "bbox": {"l": 136.8, "t": 431.50872999999996, "r": 145.20036, "b": 440.72171, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "The Application Administrator window opens again. The function usage ID of Database ", "bbox": {"l": 148.00046, "t": 431.50872999999996, "r": 537.65015, "b": 440.72171, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Security Administrator now has an X in the Customized Access column, as shown in ", "bbox": {"l": 151.20016, "t": 443.50854, "r": 525.76385, "b": 452.72153, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Figure 4-19.", "bbox": {"l": 151.20016, "t": 455.50836, "r": 205.13353, "b": 464.72134, "coord_origin": "TOPLEFT"}}]}, "text": "5. The Application Administrator window opens again. The function usage ID of Database Security Administrator now has an X in the Customized Access column, as shown in Figure 4-19."}, {"label": "picture", "id": 5, "page_no": 64, "cluster": {"id": 5, "label": "picture", "bbox": {"l": 136.03775024414062, "t": 470.50812, "r": 484.38336181640625, "b": 583.2213134765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9760020971298218, "cells": [{"id": 15, "text": ".", "bbox": {"l": 136.8, "t": 470.50812, "r": 139.56888, "b": 479.7211, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "caption", "id": 6, "page_no": 64, "cluster": {"id": 6, "label": "caption", "bbox": {"l": 136.1788787841797, "t": 586.18408203125, "r": 443.8726501464844, "b": 595.6748046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9425281286239624, "cells": [{"id": 16, "text": "Figure 4-19 Function usage ID Database Security Administrator customized", "bbox": {"l": 136.8, "t": 586.9379, "r": 442.35632, "b": 595.26291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-19 Function usage ID Database Security Administrator customized"}, {"label": "picture", "id": 7, "page_no": 64, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 136.3659210205078, "t": 118.70867919921875, "r": 485.6257629394531, "b": 401.78082275390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9869308471679688, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 64, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.78591918945312, "t": 70.48530578613281, "r": 547.19739, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9741643071174622, "cells": [{"id": 2, "text": "4.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.1438, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The Customize Access window opens, as shown in Figure 4-18. Click the users that need ", "bbox": {"l": 147.9252, "t": 71.50903000000005, "r": 547.17651, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "to implement RCAC. For this example, HBEDOYA and MCAIN are selected. Click ", "bbox": {"l": 151.19876, "t": 83.50885000000017, "r": 506.5556, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Add", "bbox": {"l": 506.51874, "t": 83.50885000000017, "r": 525.81329, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": " and ", "bbox": {"l": 525.83917, "t": 83.50885000000017, "r": 547.19739, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "then click ", "bbox": {"l": 151.19876, "t": 95.50867000000005, "r": 195.40625, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "OK", "bbox": {"l": 195.41916, "t": 95.50867000000005, "r": 210.46075, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": ".", "bbox": {"l": 210.41891, "t": 95.50867000000005, "r": 213.18779, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "4. The Customize Access window opens, as shown in Figure 4-18. Click the users that need to implement RCAC. For this example, HBEDOYA and MCAIN are selected. Click Add and then click OK ."}, {"label": "caption", "id": 3, "page_no": 64, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.0041961669922, "t": 404.69866943359375, "r": 297.5841369628906, "b": 413.9527282714844, "coord_origin": "TOPLEFT"}, "confidence": 0.9453438520431519, "cells": [{"id": 10, "text": "Figure 4-18 Customize Access window", "bbox": {"l": 136.8, "t": 405.55798, "r": 296.37628, "b": 413.88300000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-18 Customize Access window"}, {"label": "list_item", "id": 4, "page_no": 64, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.253173828125, "t": 430.48211669921875, "r": 537.65015, "b": 465.2202453613281, "coord_origin": "TOPLEFT"}, "confidence": 0.9763842225074768, "cells": [{"id": 11, "text": "5.", "bbox": {"l": 136.8, "t": 431.50872999999996, "r": 145.20036, "b": 440.72171, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "The Application Administrator window opens again. The function usage ID of Database ", "bbox": {"l": 148.00046, "t": 431.50872999999996, "r": 537.65015, "b": 440.72171, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Security Administrator now has an X in the Customized Access column, as shown in ", "bbox": {"l": 151.20016, "t": 443.50854, "r": 525.76385, "b": 452.72153, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Figure 4-19.", "bbox": {"l": 151.20016, "t": 455.50836, "r": 205.13353, "b": 464.72134, "coord_origin": "TOPLEFT"}}]}, "text": "5. The Application Administrator window opens again. The function usage ID of Database Security Administrator now has an X in the Customized Access column, as shown in Figure 4-19."}, {"label": "picture", "id": 5, "page_no": 64, "cluster": {"id": 5, "label": "picture", "bbox": {"l": 136.03775024414062, "t": 470.50812, "r": 484.38336181640625, "b": 583.2213134765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9760020971298218, "cells": [{"id": 15, "text": ".", "bbox": {"l": 136.8, "t": 470.50812, "r": 139.56888, "b": 479.7211, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "caption", "id": 6, "page_no": 64, "cluster": {"id": 6, "label": "caption", "bbox": {"l": 136.1788787841797, "t": 586.18408203125, "r": 443.8726501464844, "b": 595.6748046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9425281286239624, "cells": [{"id": 16, "text": "Figure 4-19 Function usage ID Database Security Administrator customized", "bbox": {"l": 136.8, "t": 586.9379, "r": 442.35632, "b": 595.26291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-19 Function usage ID Database Security Administrator customized"}, {"label": "picture", "id": 7, "page_no": 64, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 136.3659210205078, "t": 118.70867919921875, "r": 485.6257629394531, "b": 401.78082275390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9869308471679688, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 64, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.2803955078125, "t": 754.738525390625, "r": 523.59357, "b": 764.0549926757812, "coord_origin": "TOPLEFT"}, "confidence": 0.956462025642395, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 64, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.666015625, "t": 754.0488891601562, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9085332155227661, "cells": [{"id": 1, "text": "49", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "49"}]}}, {"page_no": 65, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "50 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "6.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.1907, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Run an SQL query that shows which user profiles are enabled to define RCAC. The SQL ", "bbox": {"l": 147.98759, "t": 71.50867000000005, "r": 545.57037, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "query is shown in Figure 4-20.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 285.23688, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Figure 4-20 Query to display user profiles with function usage ID for RCAC", "bbox": {"l": 136.8, "t": 275.77801999999997, "r": 437.8742700000001, "b": 284.103, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "4.3.3", "bbox": {"l": 64.800003, "t": 304.61474999999996, "r": 93.871941, "b": 316.6027199999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Creating group profiles for the users and their roles", "bbox": {"l": 97.50592, "t": 304.61474999999996, "r": 418.56525, "b": 316.6027199999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "The next step is to create the different group profiles (ADMIN, CUSTOMER, TELLER, and ", "bbox": {"l": 136.8, "t": 330.76874, "r": 536.23578, "b": 339.98172000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "DBE) and assign the different user profiles to the different group profiles. For a description of ", "bbox": {"l": 136.8, "t": 342.76855, "r": 547.27246, "b": 351.98154, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "the different groups and users for this example, see 4.2, \u201cDescription of the users roles and ", "bbox": {"l": 136.8, "t": 354.76837, "r": 540.82733, "b": 363.98135, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "responsibilities\u201d on page 39.", "bbox": {"l": 136.8, "t": 366.76819, "r": 261.1217, "b": 375.98117, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Complete the following steps:", "bbox": {"l": 136.8, "t": 388.78774999999996, "r": 266.86069, "b": 398.00073, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "1.", "bbox": {"l": 136.8, "t": 405.76755, "r": 145.20288, "b": 414.98053, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "On the main navigation pane of System i Navigator, right-click ", "bbox": {"l": 148.00386, "t": 405.76755, "r": 426.30643, "b": 414.98053, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Groups ", "bbox": {"l": 426.30035, "t": 405.76755, "r": 464.4541300000001, "b": 414.98053, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "and select ", "bbox": {"l": 464.46011, "t": 405.76755, "r": 512.76715, "b": 414.98053, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "New ", "bbox": {"l": 512.76013, "t": 405.76755, "r": 535.9978, "b": 414.98053, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Group", "bbox": {"l": 151.20016, "t": 417.76736, "r": 180.91782, "b": 426.98035, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ", as shown in Figure 4-21.", "bbox": {"l": 180.6001, "t": 417.76736, "r": 295.52158, "b": 426.98035, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Figure 4-21 Creating group profiles", "bbox": {"l": 136.8, "t": 591.6179999999999, "r": 281.0097, "b": 599.94301, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.19255828857422, "t": 754.3742065429688, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9205988645553589, "cells": [{"id": 0, "text": "50 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.27255249023438, "t": 754.7175903320312, "r": 334.42142, "b": 763.9406127929688, "coord_origin": "TOPLEFT"}, "confidence": 0.9552856683731079, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 135.97772216796875, "t": 70.58170318603516, "r": 545.57037, "b": 93.28826904296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9537994265556335, "cells": [{"id": 2, "text": "6.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.1907, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Run an SQL query that shows which user profiles are enabled to define RCAC. The SQL ", "bbox": {"l": 147.98759, "t": 71.50867000000005, "r": 545.57037, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "query is shown in Figure 4-20.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 285.23688, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.3402557373047, "t": 274.47186279296875, "r": 438.3047790527344, "b": 284.2582702636719, "coord_origin": "TOPLEFT"}, "confidence": 0.9432975053787231, "cells": [{"id": 5, "text": "Figure 4-20 Query to display user profiles with function usage ID for RCAC", "bbox": {"l": 136.8, "t": 275.77801999999997, "r": 437.8742700000001, "b": 284.103, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 64.06755065917969, "t": 303.6237487792969, "r": 418.56525, "b": 317.0628662109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9638302326202393, "cells": [{"id": 6, "text": "4.3.3", "bbox": {"l": 64.800003, "t": 304.61474999999996, "r": 93.871941, "b": 316.6027199999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Creating group profiles for the users and their roles", "bbox": {"l": 97.50592, "t": 304.61474999999996, "r": 418.56525, "b": 316.6027199999999, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.84303283691406, "t": 329.9059143066406, "r": 547.27246, "b": 376.3108825683594, "coord_origin": "TOPLEFT"}, "confidence": 0.986221194267273, "cells": [{"id": 8, "text": "The next step is to create the different group profiles (ADMIN, CUSTOMER, TELLER, and ", "bbox": {"l": 136.8, "t": 330.76874, "r": 536.23578, "b": 339.98172000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "DBE) and assign the different user profiles to the different group profiles. For a description of ", "bbox": {"l": 136.8, "t": 342.76855, "r": 547.27246, "b": 351.98154, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "the different groups and users for this example, see 4.2, \u201cDescription of the users roles and ", "bbox": {"l": 136.8, "t": 354.76837, "r": 540.82733, "b": 363.98135, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "responsibilities\u201d on page 39.", "bbox": {"l": 136.8, "t": 366.76819, "r": 261.1217, "b": 375.98117, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "section_header", "bbox": {"l": 136.06056213378906, "t": 387.9443054199219, "r": 266.86069, "b": 398.36285400390625, "coord_origin": "TOPLEFT"}, "confidence": 0.7973853349685669, "cells": [{"id": 12, "text": "Complete the following steps:", "bbox": {"l": 136.8, "t": 388.78774999999996, "r": 266.86069, "b": 398.00073, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 136.78126525878906, "t": 404.716552734375, "r": 535.9978, "b": 427.2034606933594, "coord_origin": "TOPLEFT"}, "confidence": 0.966343879699707, "cells": [{"id": 13, "text": "1.", "bbox": {"l": 136.8, "t": 405.76755, "r": 145.20288, "b": 414.98053, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "On the main navigation pane of System i Navigator, right-click ", "bbox": {"l": 148.00386, "t": 405.76755, "r": 426.30643, "b": 414.98053, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Groups ", "bbox": {"l": 426.30035, "t": 405.76755, "r": 464.4541300000001, "b": 414.98053, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "and select ", "bbox": {"l": 464.46011, "t": 405.76755, "r": 512.76715, "b": 414.98053, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "New ", "bbox": {"l": 512.76013, "t": 405.76755, "r": 535.9978, "b": 414.98053, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Group", "bbox": {"l": 151.20016, "t": 417.76736, "r": 180.91782, "b": 426.98035, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ", as shown in Figure 4-21.", "bbox": {"l": 180.6001, "t": 417.76736, "r": 295.52158, "b": 426.98035, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "caption", "bbox": {"l": 136.255126953125, "t": 590.8622436523438, "r": 281.4906005859375, "b": 600.1361083984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9437876343727112, "cells": [{"id": 20, "text": "Figure 4-21 Creating group profiles", "bbox": {"l": 136.8, "t": 591.6179999999999, "r": 281.0097, "b": 599.94301, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "picture", "bbox": {"l": 135.67332458496094, "t": 441.32366943359375, "r": 358.52606201171875, "b": 587.8834228515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9837242364883423, "cells": []}, {"id": 10, "label": "picture", "bbox": {"l": 134.8684539794922, "t": 107.64208984375, "r": 447.195556640625, "b": 272.4745788574219, "coord_origin": "TOPLEFT"}, "confidence": 0.7622372508049011, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 65, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.19255828857422, "t": 754.3742065429688, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9205988645553589, "cells": [{"id": 0, "text": "50 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "50"}, {"label": "page_footer", "id": 1, "page_no": 65, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.27255249023438, "t": 754.7175903320312, "r": 334.42142, "b": 763.9406127929688, "coord_origin": "TOPLEFT"}, "confidence": 0.9552856683731079, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "list_item", "id": 2, "page_no": 65, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.97772216796875, "t": 70.58170318603516, "r": 545.57037, "b": 93.28826904296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9537994265556335, "cells": [{"id": 2, "text": "6.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.1907, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Run an SQL query that shows which user profiles are enabled to define RCAC. The SQL ", "bbox": {"l": 147.98759, "t": 71.50867000000005, "r": 545.57037, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "query is shown in Figure 4-20.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 285.23688, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "6. Run an SQL query that shows which user profiles are enabled to define RCAC. The SQL query is shown in Figure 4-20."}, {"label": "caption", "id": 3, "page_no": 65, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.3402557373047, "t": 274.47186279296875, "r": 438.3047790527344, "b": 284.2582702636719, "coord_origin": "TOPLEFT"}, "confidence": 0.9432975053787231, "cells": [{"id": 5, "text": "Figure 4-20 Query to display user profiles with function usage ID for RCAC", "bbox": {"l": 136.8, "t": 275.77801999999997, "r": 437.8742700000001, "b": 284.103, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-20 Query to display user profiles with function usage ID for RCAC"}, {"label": "section_header", "id": 4, "page_no": 65, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.06755065917969, "t": 303.6237487792969, "r": 418.56525, "b": 317.0628662109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9638302326202393, "cells": [{"id": 6, "text": "4.3.3", "bbox": {"l": 64.800003, "t": 304.61474999999996, "r": 93.871941, "b": 316.6027199999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Creating group profiles for the users and their roles", "bbox": {"l": 97.50592, "t": 304.61474999999996, "r": 418.56525, "b": 316.6027199999999, "coord_origin": "TOPLEFT"}}]}, "text": "4.3.3 Creating group profiles for the users and their roles"}, {"label": "text", "id": 5, "page_no": 65, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.84303283691406, "t": 329.9059143066406, "r": 547.27246, "b": 376.3108825683594, "coord_origin": "TOPLEFT"}, "confidence": 0.986221194267273, "cells": [{"id": 8, "text": "The next step is to create the different group profiles (ADMIN, CUSTOMER, TELLER, and ", "bbox": {"l": 136.8, "t": 330.76874, "r": 536.23578, "b": 339.98172000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "DBE) and assign the different user profiles to the different group profiles. For a description of ", "bbox": {"l": 136.8, "t": 342.76855, "r": 547.27246, "b": 351.98154, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "the different groups and users for this example, see 4.2, \u201cDescription of the users roles and ", "bbox": {"l": 136.8, "t": 354.76837, "r": 540.82733, "b": 363.98135, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "responsibilities\u201d on page 39.", "bbox": {"l": 136.8, "t": 366.76819, "r": 261.1217, "b": 375.98117, "coord_origin": "TOPLEFT"}}]}, "text": "The next step is to create the different group profiles (ADMIN, CUSTOMER, TELLER, and DBE) and assign the different user profiles to the different group profiles. For a description of the different groups and users for this example, see 4.2, \u201cDescription of the users roles and responsibilities\u201d on page 39."}, {"label": "section_header", "id": 6, "page_no": 65, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 136.06056213378906, "t": 387.9443054199219, "r": 266.86069, "b": 398.36285400390625, "coord_origin": "TOPLEFT"}, "confidence": 0.7973853349685669, "cells": [{"id": 12, "text": "Complete the following steps:", "bbox": {"l": 136.8, "t": 388.78774999999996, "r": 266.86069, "b": 398.00073, "coord_origin": "TOPLEFT"}}]}, "text": "Complete the following steps:"}, {"label": "list_item", "id": 7, "page_no": 65, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 136.78126525878906, "t": 404.716552734375, "r": 535.9978, "b": 427.2034606933594, "coord_origin": "TOPLEFT"}, "confidence": 0.966343879699707, "cells": [{"id": 13, "text": "1.", "bbox": {"l": 136.8, "t": 405.76755, "r": 145.20288, "b": 414.98053, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "On the main navigation pane of System i Navigator, right-click ", "bbox": {"l": 148.00386, "t": 405.76755, "r": 426.30643, "b": 414.98053, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Groups ", "bbox": {"l": 426.30035, "t": 405.76755, "r": 464.4541300000001, "b": 414.98053, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "and select ", "bbox": {"l": 464.46011, "t": 405.76755, "r": 512.76715, "b": 414.98053, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "New ", "bbox": {"l": 512.76013, "t": 405.76755, "r": 535.9978, "b": 414.98053, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Group", "bbox": {"l": 151.20016, "t": 417.76736, "r": 180.91782, "b": 426.98035, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ", as shown in Figure 4-21.", "bbox": {"l": 180.6001, "t": 417.76736, "r": 295.52158, "b": 426.98035, "coord_origin": "TOPLEFT"}}]}, "text": "1. On the main navigation pane of System i Navigator, right-click Groups and select New Group , as shown in Figure 4-21."}, {"label": "caption", "id": 8, "page_no": 65, "cluster": {"id": 8, "label": "caption", "bbox": {"l": 136.255126953125, "t": 590.8622436523438, "r": 281.4906005859375, "b": 600.1361083984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9437876343727112, "cells": [{"id": 20, "text": "Figure 4-21 Creating group profiles", "bbox": {"l": 136.8, "t": 591.6179999999999, "r": 281.0097, "b": 599.94301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-21 Creating group profiles"}, {"label": "picture", "id": 9, "page_no": 65, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 135.67332458496094, "t": 441.32366943359375, "r": 358.52606201171875, "b": 587.8834228515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9837242364883423, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 10, "page_no": 65, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 134.8684539794922, "t": 107.64208984375, "r": 447.195556640625, "b": 272.4745788574219, "coord_origin": "TOPLEFT"}, "confidence": 0.7622372508049011, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 65, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.97772216796875, "t": 70.58170318603516, "r": 545.57037, "b": 93.28826904296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9537994265556335, "cells": [{"id": 2, "text": "6.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.1907, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Run an SQL query that shows which user profiles are enabled to define RCAC. The SQL ", "bbox": {"l": 147.98759, "t": 71.50867000000005, "r": 545.57037, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "query is shown in Figure 4-20.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 285.23688, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "6. Run an SQL query that shows which user profiles are enabled to define RCAC. The SQL query is shown in Figure 4-20."}, {"label": "caption", "id": 3, "page_no": 65, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.3402557373047, "t": 274.47186279296875, "r": 438.3047790527344, "b": 284.2582702636719, "coord_origin": "TOPLEFT"}, "confidence": 0.9432975053787231, "cells": [{"id": 5, "text": "Figure 4-20 Query to display user profiles with function usage ID for RCAC", "bbox": {"l": 136.8, "t": 275.77801999999997, "r": 437.8742700000001, "b": 284.103, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-20 Query to display user profiles with function usage ID for RCAC"}, {"label": "section_header", "id": 4, "page_no": 65, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.06755065917969, "t": 303.6237487792969, "r": 418.56525, "b": 317.0628662109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9638302326202393, "cells": [{"id": 6, "text": "4.3.3", "bbox": {"l": 64.800003, "t": 304.61474999999996, "r": 93.871941, "b": 316.6027199999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Creating group profiles for the users and their roles", "bbox": {"l": 97.50592, "t": 304.61474999999996, "r": 418.56525, "b": 316.6027199999999, "coord_origin": "TOPLEFT"}}]}, "text": "4.3.3 Creating group profiles for the users and their roles"}, {"label": "text", "id": 5, "page_no": 65, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.84303283691406, "t": 329.9059143066406, "r": 547.27246, "b": 376.3108825683594, "coord_origin": "TOPLEFT"}, "confidence": 0.986221194267273, "cells": [{"id": 8, "text": "The next step is to create the different group profiles (ADMIN, CUSTOMER, TELLER, and ", "bbox": {"l": 136.8, "t": 330.76874, "r": 536.23578, "b": 339.98172000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "DBE) and assign the different user profiles to the different group profiles. For a description of ", "bbox": {"l": 136.8, "t": 342.76855, "r": 547.27246, "b": 351.98154, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "the different groups and users for this example, see 4.2, \u201cDescription of the users roles and ", "bbox": {"l": 136.8, "t": 354.76837, "r": 540.82733, "b": 363.98135, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "responsibilities\u201d on page 39.", "bbox": {"l": 136.8, "t": 366.76819, "r": 261.1217, "b": 375.98117, "coord_origin": "TOPLEFT"}}]}, "text": "The next step is to create the different group profiles (ADMIN, CUSTOMER, TELLER, and DBE) and assign the different user profiles to the different group profiles. For a description of the different groups and users for this example, see 4.2, \u201cDescription of the users roles and responsibilities\u201d on page 39."}, {"label": "section_header", "id": 6, "page_no": 65, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 136.06056213378906, "t": 387.9443054199219, "r": 266.86069, "b": 398.36285400390625, "coord_origin": "TOPLEFT"}, "confidence": 0.7973853349685669, "cells": [{"id": 12, "text": "Complete the following steps:", "bbox": {"l": 136.8, "t": 388.78774999999996, "r": 266.86069, "b": 398.00073, "coord_origin": "TOPLEFT"}}]}, "text": "Complete the following steps:"}, {"label": "list_item", "id": 7, "page_no": 65, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 136.78126525878906, "t": 404.716552734375, "r": 535.9978, "b": 427.2034606933594, "coord_origin": "TOPLEFT"}, "confidence": 0.966343879699707, "cells": [{"id": 13, "text": "1.", "bbox": {"l": 136.8, "t": 405.76755, "r": 145.20288, "b": 414.98053, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "On the main navigation pane of System i Navigator, right-click ", "bbox": {"l": 148.00386, "t": 405.76755, "r": 426.30643, "b": 414.98053, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Groups ", "bbox": {"l": 426.30035, "t": 405.76755, "r": 464.4541300000001, "b": 414.98053, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "and select ", "bbox": {"l": 464.46011, "t": 405.76755, "r": 512.76715, "b": 414.98053, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "New ", "bbox": {"l": 512.76013, "t": 405.76755, "r": 535.9978, "b": 414.98053, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Group", "bbox": {"l": 151.20016, "t": 417.76736, "r": 180.91782, "b": 426.98035, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ", as shown in Figure 4-21.", "bbox": {"l": 180.6001, "t": 417.76736, "r": 295.52158, "b": 426.98035, "coord_origin": "TOPLEFT"}}]}, "text": "1. On the main navigation pane of System i Navigator, right-click Groups and select New Group , as shown in Figure 4-21."}, {"label": "caption", "id": 8, "page_no": 65, "cluster": {"id": 8, "label": "caption", "bbox": {"l": 136.255126953125, "t": 590.8622436523438, "r": 281.4906005859375, "b": 600.1361083984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9437876343727112, "cells": [{"id": 20, "text": "Figure 4-21 Creating group profiles", "bbox": {"l": 136.8, "t": 591.6179999999999, "r": 281.0097, "b": 599.94301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-21 Creating group profiles"}, {"label": "picture", "id": 9, "page_no": 65, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 135.67332458496094, "t": 441.32366943359375, "r": 358.52606201171875, "b": 587.8834228515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9837242364883423, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 10, "page_no": 65, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 134.8684539794922, "t": 107.64208984375, "r": 447.195556640625, "b": 272.4745788574219, "coord_origin": "TOPLEFT"}, "confidence": 0.7622372508049011, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 65, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.19255828857422, "t": 754.3742065429688, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9205988645553589, "cells": [{"id": 0, "text": "50 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "50"}, {"label": "page_footer", "id": 1, "page_no": 65, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.27255249023438, "t": 754.7175903320312, "r": 334.42142, "b": 763.9406127929688, "coord_origin": "TOPLEFT"}, "confidence": 0.9552856683731079, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 66, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "51", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.17026, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The New Group window opens, as shown in Figure 4-22. For each new group, enter the ", "bbox": {"l": 147.96048, "t": 71.50903000000005, "r": 540.68945, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Group name (ADMIN, CUSTOMER, TELLER, and DBE) and add the user profiles that are ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 547.20844, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "associated to this group by selecting the user profile and clicking ", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 438.54974000000004, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Add", "bbox": {"l": 438.47998, "t": 95.50867000000005, "r": 457.77448, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": ".", "bbox": {"l": 457.80038, "t": 95.50867000000005, "r": 460.56927, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Figure 4-22 shows adding user TQSPENCER to the TELLER group profile.", "bbox": {"l": 151.20071, "t": 112.48845999999992, "r": 482.46234000000004, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Figure 4-22 Creating group profiles and adding users", "bbox": {"l": 136.8, "t": 364.33797999999996, "r": 352.45258, "b": 372.6629899999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "3.", "bbox": {"l": 136.8, "t": 390.28873, "r": 145.18831, "b": 399.50171, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "After you create all the group profiles, you should see them listed in System i Navigator ", "bbox": {"l": 147.98441, "t": 390.28873, "r": 537.61829, "b": 399.50171, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "under ", "bbox": {"l": 151.20016, "t": 402.28853999999995, "r": 179.56824, "b": 411.50152999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Users and Groups", "bbox": {"l": 179.52043, "t": 402.28853999999995, "r": 265.87564, "b": 411.50152999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "\uf0ae", "bbox": {"l": 268.3208, "t": 399.43002, "r": 278.15131, "b": 411.62106, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": " Groups", "bbox": {"l": 278.16028, "t": 402.28853999999995, "r": 316.31705, "b": 411.50152999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ", as shown in Figure 4-23.", "bbox": {"l": 316.14075, "t": 402.28853999999995, "r": 431.05228, "b": 411.50152999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Figure 4-23 Newly created group profiles", "bbox": {"l": 136.8, "t": 553.33789, "r": 303.75809, "b": 561.6629, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 214.30003356933594, "t": 754.7357177734375, "r": 523.59357, "b": 764.0491333007812, "coord_origin": "TOPLEFT"}, "confidence": 0.956891655921936, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.7405395507812, "t": 754.3246459960938, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9111406803131104, "cells": [{"id": 1, "text": "51", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 136.031005859375, "t": 70.50956726074219, "r": 547.20844, "b": 104.95550537109375, "coord_origin": "TOPLEFT"}, "confidence": 0.976949155330658, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.17026, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The New Group window opens, as shown in Figure 4-22. For each new group, enter the ", "bbox": {"l": 147.96048, "t": 71.50903000000005, "r": 540.68945, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Group name (ADMIN, CUSTOMER, TELLER, and DBE) and add the user profiles that are ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 547.20844, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "associated to this group by selecting the user profile and clicking ", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 438.54974000000004, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Add", "bbox": {"l": 438.47998, "t": 95.50867000000005, "r": 457.77448, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": ".", "bbox": {"l": 457.80038, "t": 95.50867000000005, "r": 460.56927, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 150.73487854003906, "t": 111.0660400390625, "r": 482.46234000000004, "b": 121.75677490234375, "coord_origin": "TOPLEFT"}, "confidence": 0.7767043113708496, "cells": [{"id": 8, "text": "Figure 4-22 shows adding user TQSPENCER to the TELLER group profile.", "bbox": {"l": 151.20071, "t": 112.48845999999992, "r": 482.46234000000004, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "caption", "bbox": {"l": 136.369873046875, "t": 363.4606018066406, "r": 352.9217834472656, "b": 372.808837890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9455896019935608, "cells": [{"id": 9, "text": "Figure 4-22 Creating group profiles and adding users", "bbox": {"l": 136.8, "t": 364.33797999999996, "r": 352.45258, "b": 372.6629899999999, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 136.0438232421875, "t": 389.4517822265625, "r": 537.61829, "b": 411.7866516113281, "coord_origin": "TOPLEFT"}, "confidence": 0.9663872122764587, "cells": [{"id": 10, "text": "3.", "bbox": {"l": 136.8, "t": 390.28873, "r": 145.18831, "b": 399.50171, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "After you create all the group profiles, you should see them listed in System i Navigator ", "bbox": {"l": 147.98441, "t": 390.28873, "r": 537.61829, "b": 399.50171, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "under ", "bbox": {"l": 151.20016, "t": 402.28853999999995, "r": 179.56824, "b": 411.50152999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Users and Groups", "bbox": {"l": 179.52043, "t": 402.28853999999995, "r": 265.87564, "b": 411.50152999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "\uf0ae", "bbox": {"l": 268.3208, "t": 399.43002, "r": 278.15131, "b": 411.62106, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": " Groups", "bbox": {"l": 278.16028, "t": 402.28853999999995, "r": 316.31705, "b": 411.50152999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ", as shown in Figure 4-23.", "bbox": {"l": 316.14075, "t": 402.28853999999995, "r": 431.05228, "b": 411.50152999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "caption", "bbox": {"l": 136.12078857421875, "t": 553.0734252929688, "r": 303.932373046875, "b": 562.2108764648438, "coord_origin": "TOPLEFT"}, "confidence": 0.9498841166496277, "cells": [{"id": 17, "text": "Figure 4-23 Newly created group profiles", "bbox": {"l": 136.8, "t": 553.33789, "r": 303.75809, "b": 561.6629, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "picture", "bbox": {"l": 136.2171630859375, "t": 135.30877685546875, "r": 474.1829528808594, "b": 361.1051330566406, "coord_origin": "TOPLEFT"}, "confidence": 0.9854894280433655, "cells": []}, {"id": 8, "label": "picture", "bbox": {"l": 136.2489471435547, "t": 425.68438720703125, "r": 269.5424499511719, "b": 550.3474731445312, "coord_origin": "TOPLEFT"}, "confidence": 0.9837116599082947, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 66, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.30003356933594, "t": 754.7357177734375, "r": 523.59357, "b": 764.0491333007812, "coord_origin": "TOPLEFT"}, "confidence": 0.956891655921936, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 66, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.7405395507812, "t": 754.3246459960938, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9111406803131104, "cells": [{"id": 1, "text": "51", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "51"}, {"label": "list_item", "id": 2, "page_no": 66, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.031005859375, "t": 70.50956726074219, "r": 547.20844, "b": 104.95550537109375, "coord_origin": "TOPLEFT"}, "confidence": 0.976949155330658, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.17026, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The New Group window opens, as shown in Figure 4-22. For each new group, enter the ", "bbox": {"l": 147.96048, "t": 71.50903000000005, "r": 540.68945, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Group name (ADMIN, CUSTOMER, TELLER, and DBE) and add the user profiles that are ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 547.20844, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "associated to this group by selecting the user profile and clicking ", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 438.54974000000004, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Add", "bbox": {"l": 438.47998, "t": 95.50867000000005, "r": 457.77448, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": ".", "bbox": {"l": 457.80038, "t": 95.50867000000005, "r": 460.56927, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "2. The New Group window opens, as shown in Figure 4-22. For each new group, enter the Group name (ADMIN, CUSTOMER, TELLER, and DBE) and add the user profiles that are associated to this group by selecting the user profile and clicking Add ."}, {"label": "text", "id": 3, "page_no": 66, "cluster": {"id": 3, "label": "text", "bbox": {"l": 150.73487854003906, "t": 111.0660400390625, "r": 482.46234000000004, "b": 121.75677490234375, "coord_origin": "TOPLEFT"}, "confidence": 0.7767043113708496, "cells": [{"id": 8, "text": "Figure 4-22 shows adding user TQSPENCER to the TELLER group profile.", "bbox": {"l": 151.20071, "t": 112.48845999999992, "r": 482.46234000000004, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-22 shows adding user TQSPENCER to the TELLER group profile."}, {"label": "caption", "id": 4, "page_no": 66, "cluster": {"id": 4, "label": "caption", "bbox": {"l": 136.369873046875, "t": 363.4606018066406, "r": 352.9217834472656, "b": 372.808837890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9455896019935608, "cells": [{"id": 9, "text": "Figure 4-22 Creating group profiles and adding users", "bbox": {"l": 136.8, "t": 364.33797999999996, "r": 352.45258, "b": 372.6629899999999, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-22 Creating group profiles and adding users"}, {"label": "list_item", "id": 5, "page_no": 66, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 136.0438232421875, "t": 389.4517822265625, "r": 537.61829, "b": 411.7866516113281, "coord_origin": "TOPLEFT"}, "confidence": 0.9663872122764587, "cells": [{"id": 10, "text": "3.", "bbox": {"l": 136.8, "t": 390.28873, "r": 145.18831, "b": 399.50171, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "After you create all the group profiles, you should see them listed in System i Navigator ", "bbox": {"l": 147.98441, "t": 390.28873, "r": 537.61829, "b": 399.50171, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "under ", "bbox": {"l": 151.20016, "t": 402.28853999999995, "r": 179.56824, "b": 411.50152999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Users and Groups", "bbox": {"l": 179.52043, "t": 402.28853999999995, "r": 265.87564, "b": 411.50152999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "\uf0ae", "bbox": {"l": 268.3208, "t": 399.43002, "r": 278.15131, "b": 411.62106, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": " Groups", "bbox": {"l": 278.16028, "t": 402.28853999999995, "r": 316.31705, "b": 411.50152999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ", as shown in Figure 4-23.", "bbox": {"l": 316.14075, "t": 402.28853999999995, "r": 431.05228, "b": 411.50152999999995, "coord_origin": "TOPLEFT"}}]}, "text": "3. After you create all the group profiles, you should see them listed in System i Navigator under Users and Groups \uf0ae Groups , as shown in Figure 4-23."}, {"label": "caption", "id": 6, "page_no": 66, "cluster": {"id": 6, "label": "caption", "bbox": {"l": 136.12078857421875, "t": 553.0734252929688, "r": 303.932373046875, "b": 562.2108764648438, "coord_origin": "TOPLEFT"}, "confidence": 0.9498841166496277, "cells": [{"id": 17, "text": "Figure 4-23 Newly created group profiles", "bbox": {"l": 136.8, "t": 553.33789, "r": 303.75809, "b": 561.6629, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-23 Newly created group profiles"}, {"label": "picture", "id": 7, "page_no": 66, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 136.2171630859375, "t": 135.30877685546875, "r": 474.1829528808594, "b": 361.1051330566406, "coord_origin": "TOPLEFT"}, "confidence": 0.9854894280433655, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 8, "page_no": 66, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 136.2489471435547, "t": 425.68438720703125, "r": 269.5424499511719, "b": 550.3474731445312, "coord_origin": "TOPLEFT"}, "confidence": 0.9837116599082947, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 66, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.031005859375, "t": 70.50956726074219, "r": 547.20844, "b": 104.95550537109375, "coord_origin": "TOPLEFT"}, "confidence": 0.976949155330658, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.17026, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The New Group window opens, as shown in Figure 4-22. For each new group, enter the ", "bbox": {"l": 147.96048, "t": 71.50903000000005, "r": 540.68945, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Group name (ADMIN, CUSTOMER, TELLER, and DBE) and add the user profiles that are ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 547.20844, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "associated to this group by selecting the user profile and clicking ", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 438.54974000000004, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Add", "bbox": {"l": 438.47998, "t": 95.50867000000005, "r": 457.77448, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": ".", "bbox": {"l": 457.80038, "t": 95.50867000000005, "r": 460.56927, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "2. The New Group window opens, as shown in Figure 4-22. For each new group, enter the Group name (ADMIN, CUSTOMER, TELLER, and DBE) and add the user profiles that are associated to this group by selecting the user profile and clicking Add ."}, {"label": "text", "id": 3, "page_no": 66, "cluster": {"id": 3, "label": "text", "bbox": {"l": 150.73487854003906, "t": 111.0660400390625, "r": 482.46234000000004, "b": 121.75677490234375, "coord_origin": "TOPLEFT"}, "confidence": 0.7767043113708496, "cells": [{"id": 8, "text": "Figure 4-22 shows adding user TQSPENCER to the TELLER group profile.", "bbox": {"l": 151.20071, "t": 112.48845999999992, "r": 482.46234000000004, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-22 shows adding user TQSPENCER to the TELLER group profile."}, {"label": "caption", "id": 4, "page_no": 66, "cluster": {"id": 4, "label": "caption", "bbox": {"l": 136.369873046875, "t": 363.4606018066406, "r": 352.9217834472656, "b": 372.808837890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9455896019935608, "cells": [{"id": 9, "text": "Figure 4-22 Creating group profiles and adding users", "bbox": {"l": 136.8, "t": 364.33797999999996, "r": 352.45258, "b": 372.6629899999999, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-22 Creating group profiles and adding users"}, {"label": "list_item", "id": 5, "page_no": 66, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 136.0438232421875, "t": 389.4517822265625, "r": 537.61829, "b": 411.7866516113281, "coord_origin": "TOPLEFT"}, "confidence": 0.9663872122764587, "cells": [{"id": 10, "text": "3.", "bbox": {"l": 136.8, "t": 390.28873, "r": 145.18831, "b": 399.50171, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "After you create all the group profiles, you should see them listed in System i Navigator ", "bbox": {"l": 147.98441, "t": 390.28873, "r": 537.61829, "b": 399.50171, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "under ", "bbox": {"l": 151.20016, "t": 402.28853999999995, "r": 179.56824, "b": 411.50152999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Users and Groups", "bbox": {"l": 179.52043, "t": 402.28853999999995, "r": 265.87564, "b": 411.50152999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "\uf0ae", "bbox": {"l": 268.3208, "t": 399.43002, "r": 278.15131, "b": 411.62106, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": " Groups", "bbox": {"l": 278.16028, "t": 402.28853999999995, "r": 316.31705, "b": 411.50152999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ", as shown in Figure 4-23.", "bbox": {"l": 316.14075, "t": 402.28853999999995, "r": 431.05228, "b": 411.50152999999995, "coord_origin": "TOPLEFT"}}]}, "text": "3. After you create all the group profiles, you should see them listed in System i Navigator under Users and Groups \uf0ae Groups , as shown in Figure 4-23."}, {"label": "caption", "id": 6, "page_no": 66, "cluster": {"id": 6, "label": "caption", "bbox": {"l": 136.12078857421875, "t": 553.0734252929688, "r": 303.932373046875, "b": 562.2108764648438, "coord_origin": "TOPLEFT"}, "confidence": 0.9498841166496277, "cells": [{"id": 17, "text": "Figure 4-23 Newly created group profiles", "bbox": {"l": 136.8, "t": 553.33789, "r": 303.75809, "b": 561.6629, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-23 Newly created group profiles"}, {"label": "picture", "id": 7, "page_no": 66, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 136.2171630859375, "t": 135.30877685546875, "r": 474.1829528808594, "b": 361.1051330566406, "coord_origin": "TOPLEFT"}, "confidence": 0.9854894280433655, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 8, "page_no": 66, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 136.2489471435547, "t": 425.68438720703125, "r": 269.5424499511719, "b": 550.3474731445312, "coord_origin": "TOPLEFT"}, "confidence": 0.9837116599082947, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 66, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.30003356933594, "t": 754.7357177734375, "r": 523.59357, "b": 764.0491333007812, "coord_origin": "TOPLEFT"}, "confidence": 0.956891655921936, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 66, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.7405395507812, "t": 754.3246459960938, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9111406803131104, "cells": [{"id": 1, "text": "51", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "51"}]}}, {"page_no": 67, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "52 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "4.3.4", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 93.893837, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Creating the CUSTOMER_LOGIN_ID global variable ", "bbox": {"l": 97.530579, "t": 71.33471999999995, "r": 420.28372, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "In this step, you create a global variable that is used to capture the Customer_Login_ID ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 524.35071, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "information, which is required to validate the permissions. For more information about global ", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 545.77252, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "variables, see 3.2.2, \u201cBuilt-in global variables\u201d on page 19.", "bbox": {"l": 136.8, "t": 121.48834000000011, "r": 393.31793, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Complete the following steps:", "bbox": {"l": 136.8, "t": 143.50793, "r": 266.86069, "b": 152.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "1.", "bbox": {"l": 136.8, "t": 160.48773000000006, "r": 145.18987, "b": 169.70074, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "From System i Navigator, under the schema Bank_Schema, right-click ", "bbox": {"l": 147.98647, "t": 160.48773000000006, "r": 463.85352, "b": 169.70074, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Global Variable", "bbox": {"l": 463.79974000000004, "t": 160.48773000000006, "r": 535.91608, "b": 169.70074, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "and select ", "bbox": {"l": 151.20016, "t": 172.48755000000006, "r": 199.5191, "b": 181.70056, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "New", "bbox": {"l": 199.50018, "t": 172.48755000000006, "r": 219.97794, "b": 181.70056, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "\uf0ae", "bbox": {"l": 222.71992, "t": 169.62902999999994, "r": 232.55045000000004, "b": 181.82007, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Global Variable", "bbox": {"l": 235.38007999999996, "t": 172.48755000000006, "r": 307.45761, "b": 181.70056, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": ", as shown in Figure 4-24.", "bbox": {"l": 307.26041, "t": 172.48755000000006, "r": 422.09814, "b": 181.70056, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Figure 4-24 Creating a global variable", "bbox": {"l": 136.8, "t": 407.95801, "r": 291.84482, "b": 416.28302, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "2.", "bbox": {"l": 136.8, "t": 433.90872, "r": 145.17693, "b": 443.1217, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "The New Global Variable window opens, as shown in Figure 4-25. Enter the global ", "bbox": {"l": 147.96921, "t": 433.90872, "r": 517.53796, "b": 443.1217, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "variable name of CUSTOMER_LOGIN_ID, select the data type of VARCHAR, and leave ", "bbox": {"l": 151.20016, "t": 445.90854, "r": 541.19196, "b": 455.1215199999999, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "the default value of NULL. This default value ensures that users that do not use the web ", "bbox": {"l": 151.20016, "t": 457.90836, "r": 541.04456, "b": 467.12134, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "interface do not have permission to access the data. Click ", "bbox": {"l": 151.20016, "t": 469.90817, "r": 408.75781, "b": 479.12115, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "OK", "bbox": {"l": 408.84045, "t": 469.90817, "r": 423.76251, "b": 479.12115, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": ".", "bbox": {"l": 423.78046, "t": 469.90817, "r": 426.54935, "b": 479.12115, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Figure 4-25 Creating a global variable called CUSTOMER_LOGIN_ID", "bbox": {"l": 64.800003, "t": 712.158005, "r": 346.33698, "b": 720.4830019999999, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.1907958984375, "t": 754.3226928710938, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9162147045135498, "cells": [{"id": 0, "text": "52 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.31280517578125, "t": 754.688720703125, "r": 334.42142, "b": 763.898193359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9516439437866211, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.14804077148438, "t": 70.27552795410156, "r": 420.28372, "b": 83.57343292236328, "coord_origin": "TOPLEFT"}, "confidence": 0.9602196216583252, "cells": [{"id": 2, "text": "4.3.4", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 93.893837, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Creating the CUSTOMER_LOGIN_ID global variable ", "bbox": {"l": 97.530579, "t": 71.33471999999995, "r": 420.28372, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.99069213867188, "t": 96.89618682861328, "r": 545.77252, "b": 131.00881958007812, "coord_origin": "TOPLEFT"}, "confidence": 0.9838969707489014, "cells": [{"id": 4, "text": "In this step, you create a global variable that is used to capture the Customer_Login_ID ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 524.35071, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "information, which is required to validate the permissions. For more information about global ", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 545.77252, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "variables, see 3.2.2, \u201cBuilt-in global variables\u201d on page 19.", "bbox": {"l": 136.8, "t": 121.48834000000011, "r": 393.31793, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 136.14224243164062, "t": 142.52076721191406, "r": 266.86069, "b": 152.9317626953125, "coord_origin": "TOPLEFT"}, "confidence": 0.8107734322547913, "cells": [{"id": 7, "text": "Complete the following steps:", "bbox": {"l": 136.8, "t": 143.50793, "r": 266.86069, "b": 152.72095000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 136.56494140625, "t": 159.2626495361328, "r": 535.943603515625, "b": 181.82007, "coord_origin": "TOPLEFT"}, "confidence": 0.9734883904457092, "cells": [{"id": 8, "text": "1.", "bbox": {"l": 136.8, "t": 160.48773000000006, "r": 145.18987, "b": 169.70074, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "From System i Navigator, under the schema Bank_Schema, right-click ", "bbox": {"l": 147.98647, "t": 160.48773000000006, "r": 463.85352, "b": 169.70074, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Global Variable", "bbox": {"l": 463.79974000000004, "t": 160.48773000000006, "r": 535.91608, "b": 169.70074, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "and select ", "bbox": {"l": 151.20016, "t": 172.48755000000006, "r": 199.5191, "b": 181.70056, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "New", "bbox": {"l": 199.50018, "t": 172.48755000000006, "r": 219.97794, "b": 181.70056, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "\uf0ae", "bbox": {"l": 222.71992, "t": 169.62902999999994, "r": 232.55045000000004, "b": 181.82007, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Global Variable", "bbox": {"l": 235.38007999999996, "t": 172.48755000000006, "r": 307.45761, "b": 181.70056, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": ", as shown in Figure 4-24.", "bbox": {"l": 307.26041, "t": 172.48755000000006, "r": 422.09814, "b": 181.70056, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "caption", "bbox": {"l": 136.03294372558594, "t": 407.6881408691406, "r": 292.05377197265625, "b": 416.7829284667969, "coord_origin": "TOPLEFT"}, "confidence": 0.9526056051254272, "cells": [{"id": 16, "text": "Figure 4-24 Creating a global variable", "bbox": {"l": 136.8, "t": 407.95801, "r": 291.84482, "b": 416.28302, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.92572021484375, "t": 433.5293884277344, "r": 541.19196, "b": 479.4812927246094, "coord_origin": "TOPLEFT"}, "confidence": 0.9796995520591736, "cells": [{"id": 17, "text": "2.", "bbox": {"l": 136.8, "t": 433.90872, "r": 145.17693, "b": 443.1217, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "The New Global Variable window opens, as shown in Figure 4-25. Enter the global ", "bbox": {"l": 147.96921, "t": 433.90872, "r": 517.53796, "b": 443.1217, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "variable name of CUSTOMER_LOGIN_ID, select the data type of VARCHAR, and leave ", "bbox": {"l": 151.20016, "t": 445.90854, "r": 541.19196, "b": 455.1215199999999, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "the default value of NULL. This default value ensures that users that do not use the web ", "bbox": {"l": 151.20016, "t": 457.90836, "r": 541.04456, "b": 467.12134, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "interface do not have permission to access the data. Click ", "bbox": {"l": 151.20016, "t": 469.90817, "r": 408.75781, "b": 479.12115, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "OK", "bbox": {"l": 408.84045, "t": 469.90817, "r": 423.76251, "b": 479.12115, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": ".", "bbox": {"l": 423.78046, "t": 469.90817, "r": 426.54935, "b": 479.12115, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "caption", "bbox": {"l": 64.31603240966797, "t": 710.88671875, "r": 347.040283203125, "b": 720.9501342773438, "coord_origin": "TOPLEFT"}, "confidence": 0.9492066502571106, "cells": [{"id": 24, "text": "Figure 4-25 Creating a global variable called CUSTOMER_LOGIN_ID", "bbox": {"l": 64.800003, "t": 712.158005, "r": 346.33698, "b": 720.4830019999999, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "picture", "bbox": {"l": 135.9110107421875, "t": 195.97637939453125, "r": 454.9993896484375, "b": 405.2922058105469, "coord_origin": "TOPLEFT"}, "confidence": 0.987210750579834, "cells": []}, {"id": 10, "label": "picture", "bbox": {"l": 64.25324249267578, "t": 493.0924987792969, "r": 546.2809448242188, "b": 708.3674926757812, "coord_origin": "TOPLEFT"}, "confidence": 0.9863254427909851, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 67, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.1907958984375, "t": 754.3226928710938, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9162147045135498, "cells": [{"id": 0, "text": "52 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "52"}, {"label": "page_footer", "id": 1, "page_no": 67, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.31280517578125, "t": 754.688720703125, "r": 334.42142, "b": 763.898193359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9516439437866211, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "section_header", "id": 2, "page_no": 67, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.14804077148438, "t": 70.27552795410156, "r": 420.28372, "b": 83.57343292236328, "coord_origin": "TOPLEFT"}, "confidence": 0.9602196216583252, "cells": [{"id": 2, "text": "4.3.4", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 93.893837, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Creating the CUSTOMER_LOGIN_ID global variable ", "bbox": {"l": 97.530579, "t": 71.33471999999995, "r": 420.28372, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "4.3.4 Creating the CUSTOMER_LOGIN_ID global variable"}, {"label": "text", "id": 3, "page_no": 67, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.99069213867188, "t": 96.89618682861328, "r": 545.77252, "b": 131.00881958007812, "coord_origin": "TOPLEFT"}, "confidence": 0.9838969707489014, "cells": [{"id": 4, "text": "In this step, you create a global variable that is used to capture the Customer_Login_ID ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 524.35071, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "information, which is required to validate the permissions. For more information about global ", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 545.77252, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "variables, see 3.2.2, \u201cBuilt-in global variables\u201d on page 19.", "bbox": {"l": 136.8, "t": 121.48834000000011, "r": 393.31793, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}]}, "text": "In this step, you create a global variable that is used to capture the Customer_Login_ID information, which is required to validate the permissions. For more information about global variables, see 3.2.2, \u201cBuilt-in global variables\u201d on page 19."}, {"label": "section_header", "id": 4, "page_no": 67, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 136.14224243164062, "t": 142.52076721191406, "r": 266.86069, "b": 152.9317626953125, "coord_origin": "TOPLEFT"}, "confidence": 0.8107734322547913, "cells": [{"id": 7, "text": "Complete the following steps:", "bbox": {"l": 136.8, "t": 143.50793, "r": 266.86069, "b": 152.72095000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Complete the following steps:"}, {"label": "list_item", "id": 5, "page_no": 67, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 136.56494140625, "t": 159.2626495361328, "r": 535.943603515625, "b": 181.82007, "coord_origin": "TOPLEFT"}, "confidence": 0.9734883904457092, "cells": [{"id": 8, "text": "1.", "bbox": {"l": 136.8, "t": 160.48773000000006, "r": 145.18987, "b": 169.70074, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "From System i Navigator, under the schema Bank_Schema, right-click ", "bbox": {"l": 147.98647, "t": 160.48773000000006, "r": 463.85352, "b": 169.70074, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Global Variable", "bbox": {"l": 463.79974000000004, "t": 160.48773000000006, "r": 535.91608, "b": 169.70074, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "and select ", "bbox": {"l": 151.20016, "t": 172.48755000000006, "r": 199.5191, "b": 181.70056, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "New", "bbox": {"l": 199.50018, "t": 172.48755000000006, "r": 219.97794, "b": 181.70056, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "\uf0ae", "bbox": {"l": 222.71992, "t": 169.62902999999994, "r": 232.55045000000004, "b": 181.82007, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Global Variable", "bbox": {"l": 235.38007999999996, "t": 172.48755000000006, "r": 307.45761, "b": 181.70056, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": ", as shown in Figure 4-24.", "bbox": {"l": 307.26041, "t": 172.48755000000006, "r": 422.09814, "b": 181.70056, "coord_origin": "TOPLEFT"}}]}, "text": "1. From System i Navigator, under the schema Bank_Schema, right-click Global Variable and select New \uf0ae Global Variable , as shown in Figure 4-24."}, {"label": "caption", "id": 6, "page_no": 67, "cluster": {"id": 6, "label": "caption", "bbox": {"l": 136.03294372558594, "t": 407.6881408691406, "r": 292.05377197265625, "b": 416.7829284667969, "coord_origin": "TOPLEFT"}, "confidence": 0.9526056051254272, "cells": [{"id": 16, "text": "Figure 4-24 Creating a global variable", "bbox": {"l": 136.8, "t": 407.95801, "r": 291.84482, "b": 416.28302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-24 Creating a global variable"}, {"label": "list_item", "id": 7, "page_no": 67, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.92572021484375, "t": 433.5293884277344, "r": 541.19196, "b": 479.4812927246094, "coord_origin": "TOPLEFT"}, "confidence": 0.9796995520591736, "cells": [{"id": 17, "text": "2.", "bbox": {"l": 136.8, "t": 433.90872, "r": 145.17693, "b": 443.1217, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "The New Global Variable window opens, as shown in Figure 4-25. Enter the global ", "bbox": {"l": 147.96921, "t": 433.90872, "r": 517.53796, "b": 443.1217, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "variable name of CUSTOMER_LOGIN_ID, select the data type of VARCHAR, and leave ", "bbox": {"l": 151.20016, "t": 445.90854, "r": 541.19196, "b": 455.1215199999999, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "the default value of NULL. This default value ensures that users that do not use the web ", "bbox": {"l": 151.20016, "t": 457.90836, "r": 541.04456, "b": 467.12134, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "interface do not have permission to access the data. Click ", "bbox": {"l": 151.20016, "t": 469.90817, "r": 408.75781, "b": 479.12115, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "OK", "bbox": {"l": 408.84045, "t": 469.90817, "r": 423.76251, "b": 479.12115, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": ".", "bbox": {"l": 423.78046, "t": 469.90817, "r": 426.54935, "b": 479.12115, "coord_origin": "TOPLEFT"}}]}, "text": "2. The New Global Variable window opens, as shown in Figure 4-25. Enter the global variable name of CUSTOMER_LOGIN_ID, select the data type of VARCHAR, and leave the default value of NULL. This default value ensures that users that do not use the web interface do not have permission to access the data. Click OK ."}, {"label": "caption", "id": 8, "page_no": 67, "cluster": {"id": 8, "label": "caption", "bbox": {"l": 64.31603240966797, "t": 710.88671875, "r": 347.040283203125, "b": 720.9501342773438, "coord_origin": "TOPLEFT"}, "confidence": 0.9492066502571106, "cells": [{"id": 24, "text": "Figure 4-25 Creating a global variable called CUSTOMER_LOGIN_ID", "bbox": {"l": 64.800003, "t": 712.158005, "r": 346.33698, "b": 720.4830019999999, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-25 Creating a global variable called CUSTOMER_LOGIN_ID"}, {"label": "picture", "id": 9, "page_no": 67, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 135.9110107421875, "t": 195.97637939453125, "r": 454.9993896484375, "b": 405.2922058105469, "coord_origin": "TOPLEFT"}, "confidence": 0.987210750579834, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 10, "page_no": 67, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 64.25324249267578, "t": 493.0924987792969, "r": 546.2809448242188, "b": 708.3674926757812, "coord_origin": "TOPLEFT"}, "confidence": 0.9863254427909851, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "section_header", "id": 2, "page_no": 67, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.14804077148438, "t": 70.27552795410156, "r": 420.28372, "b": 83.57343292236328, "coord_origin": "TOPLEFT"}, "confidence": 0.9602196216583252, "cells": [{"id": 2, "text": "4.3.4", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 93.893837, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Creating the CUSTOMER_LOGIN_ID global variable ", "bbox": {"l": 97.530579, "t": 71.33471999999995, "r": 420.28372, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "4.3.4 Creating the CUSTOMER_LOGIN_ID global variable"}, {"label": "text", "id": 3, "page_no": 67, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.99069213867188, "t": 96.89618682861328, "r": 545.77252, "b": 131.00881958007812, "coord_origin": "TOPLEFT"}, "confidence": 0.9838969707489014, "cells": [{"id": 4, "text": "In this step, you create a global variable that is used to capture the Customer_Login_ID ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 524.35071, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "information, which is required to validate the permissions. For more information about global ", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 545.77252, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "variables, see 3.2.2, \u201cBuilt-in global variables\u201d on page 19.", "bbox": {"l": 136.8, "t": 121.48834000000011, "r": 393.31793, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}]}, "text": "In this step, you create a global variable that is used to capture the Customer_Login_ID information, which is required to validate the permissions. For more information about global variables, see 3.2.2, \u201cBuilt-in global variables\u201d on page 19."}, {"label": "section_header", "id": 4, "page_no": 67, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 136.14224243164062, "t": 142.52076721191406, "r": 266.86069, "b": 152.9317626953125, "coord_origin": "TOPLEFT"}, "confidence": 0.8107734322547913, "cells": [{"id": 7, "text": "Complete the following steps:", "bbox": {"l": 136.8, "t": 143.50793, "r": 266.86069, "b": 152.72095000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Complete the following steps:"}, {"label": "list_item", "id": 5, "page_no": 67, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 136.56494140625, "t": 159.2626495361328, "r": 535.943603515625, "b": 181.82007, "coord_origin": "TOPLEFT"}, "confidence": 0.9734883904457092, "cells": [{"id": 8, "text": "1.", "bbox": {"l": 136.8, "t": 160.48773000000006, "r": 145.18987, "b": 169.70074, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "From System i Navigator, under the schema Bank_Schema, right-click ", "bbox": {"l": 147.98647, "t": 160.48773000000006, "r": 463.85352, "b": 169.70074, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Global Variable", "bbox": {"l": 463.79974000000004, "t": 160.48773000000006, "r": 535.91608, "b": 169.70074, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "and select ", "bbox": {"l": 151.20016, "t": 172.48755000000006, "r": 199.5191, "b": 181.70056, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "New", "bbox": {"l": 199.50018, "t": 172.48755000000006, "r": 219.97794, "b": 181.70056, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "\uf0ae", "bbox": {"l": 222.71992, "t": 169.62902999999994, "r": 232.55045000000004, "b": 181.82007, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Global Variable", "bbox": {"l": 235.38007999999996, "t": 172.48755000000006, "r": 307.45761, "b": 181.70056, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": ", as shown in Figure 4-24.", "bbox": {"l": 307.26041, "t": 172.48755000000006, "r": 422.09814, "b": 181.70056, "coord_origin": "TOPLEFT"}}]}, "text": "1. From System i Navigator, under the schema Bank_Schema, right-click Global Variable and select New \uf0ae Global Variable , as shown in Figure 4-24."}, {"label": "caption", "id": 6, "page_no": 67, "cluster": {"id": 6, "label": "caption", "bbox": {"l": 136.03294372558594, "t": 407.6881408691406, "r": 292.05377197265625, "b": 416.7829284667969, "coord_origin": "TOPLEFT"}, "confidence": 0.9526056051254272, "cells": [{"id": 16, "text": "Figure 4-24 Creating a global variable", "bbox": {"l": 136.8, "t": 407.95801, "r": 291.84482, "b": 416.28302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-24 Creating a global variable"}, {"label": "list_item", "id": 7, "page_no": 67, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.92572021484375, "t": 433.5293884277344, "r": 541.19196, "b": 479.4812927246094, "coord_origin": "TOPLEFT"}, "confidence": 0.9796995520591736, "cells": [{"id": 17, "text": "2.", "bbox": {"l": 136.8, "t": 433.90872, "r": 145.17693, "b": 443.1217, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "The New Global Variable window opens, as shown in Figure 4-25. Enter the global ", "bbox": {"l": 147.96921, "t": 433.90872, "r": 517.53796, "b": 443.1217, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "variable name of CUSTOMER_LOGIN_ID, select the data type of VARCHAR, and leave ", "bbox": {"l": 151.20016, "t": 445.90854, "r": 541.19196, "b": 455.1215199999999, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "the default value of NULL. This default value ensures that users that do not use the web ", "bbox": {"l": 151.20016, "t": 457.90836, "r": 541.04456, "b": 467.12134, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "interface do not have permission to access the data. Click ", "bbox": {"l": 151.20016, "t": 469.90817, "r": 408.75781, "b": 479.12115, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "OK", "bbox": {"l": 408.84045, "t": 469.90817, "r": 423.76251, "b": 479.12115, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": ".", "bbox": {"l": 423.78046, "t": 469.90817, "r": 426.54935, "b": 479.12115, "coord_origin": "TOPLEFT"}}]}, "text": "2. The New Global Variable window opens, as shown in Figure 4-25. Enter the global variable name of CUSTOMER_LOGIN_ID, select the data type of VARCHAR, and leave the default value of NULL. This default value ensures that users that do not use the web interface do not have permission to access the data. Click OK ."}, {"label": "caption", "id": 8, "page_no": 67, "cluster": {"id": 8, "label": "caption", "bbox": {"l": 64.31603240966797, "t": 710.88671875, "r": 347.040283203125, "b": 720.9501342773438, "coord_origin": "TOPLEFT"}, "confidence": 0.9492066502571106, "cells": [{"id": 24, "text": "Figure 4-25 Creating a global variable called CUSTOMER_LOGIN_ID", "bbox": {"l": 64.800003, "t": 712.158005, "r": 346.33698, "b": 720.4830019999999, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-25 Creating a global variable called CUSTOMER_LOGIN_ID"}, {"label": "picture", "id": 9, "page_no": 67, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 135.9110107421875, "t": 195.97637939453125, "r": 454.9993896484375, "b": 405.2922058105469, "coord_origin": "TOPLEFT"}, "confidence": 0.987210750579834, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 10, "page_no": 67, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 64.25324249267578, "t": 493.0924987792969, "r": 546.2809448242188, "b": 708.3674926757812, "coord_origin": "TOPLEFT"}, "confidence": 0.9863254427909851, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 67, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.1907958984375, "t": 754.3226928710938, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9162147045135498, "cells": [{"id": 0, "text": "52 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "52"}, {"label": "page_footer", "id": 1, "page_no": 67, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.31280517578125, "t": 754.688720703125, "r": 334.42142, "b": 763.898193359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9516439437866211, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 68, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "53", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "3.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.08879, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Now that the global variable is created, assign permissions to the variable so that it can be ", "bbox": {"l": 147.85187, "t": 71.50903000000005, "r": 547.25427, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "set by the program. Right-click the CUSTOMER_LOGIN_ID global variable and select ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 532.09296, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Permissions", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 210.36716, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ", as shown in Figure 4-26.", "bbox": {"l": 210.17989, "t": 95.50867000000005, "r": 325.08237, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Figure 4-26 Setting permissions on the CUSTOMER_LOGIN_ID global variable", "bbox": {"l": 136.8, "t": 242.83794999999998, "r": 456.94073, "b": 251.16290000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "4.", "bbox": {"l": 136.8, "t": 268.78857000000005, "r": 145.2059, "b": 278.00158999999996, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "The Permissions window opens, as shown in Figure 4-27. Select ", "bbox": {"l": 148.00787, "t": 268.78857000000005, "r": 439.29123, "b": 278.00158999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Change", "bbox": {"l": 439.32007, "t": 268.78857000000005, "r": 476.15612999999996, "b": 278.00158999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": " authority for ", "bbox": {"l": 476.10034, "t": 268.78857000000005, "r": 534.23877, "b": 278.00158999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Webuser so that the application can set this global variable.", "bbox": {"l": 151.20016, "t": 280.78842, "r": 413.51169, "b": 290.0014, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Figure 4-27 Setting change permissions for Webuser on the CUSTOMER_LOGIN_ID global variable", "bbox": {"l": 136.8, "t": 579.49789, "r": 539.75073, "b": 587.82291, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 214.31678771972656, "t": 754.7354125976562, "r": 523.59357, "b": 764.0438232421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9558536410331726, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.7046508789062, "t": 754.34130859375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9125332832336426, "cells": [{"id": 1, "text": "53", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 136.12977600097656, "t": 70.7454833984375, "r": 547.25427, "b": 104.7872085571289, "coord_origin": "TOPLEFT"}, "confidence": 0.9774090051651001, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.08879, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Now that the global variable is created, assign permissions to the variable so that it can be ", "bbox": {"l": 147.85187, "t": 71.50903000000005, "r": 547.25427, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "set by the program. Right-click the CUSTOMER_LOGIN_ID global variable and select ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 532.09296, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Permissions", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 210.36716, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ", as shown in Figure 4-26.", "bbox": {"l": 210.17989, "t": 95.50867000000005, "r": 325.08237, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 135.95867919921875, "t": 241.98797607421875, "r": 457.0142822265625, "b": 251.3716278076172, "coord_origin": "TOPLEFT"}, "confidence": 0.9472981095314026, "cells": [{"id": 7, "text": "Figure 4-26 Setting permissions on the CUSTOMER_LOGIN_ID global variable", "bbox": {"l": 136.8, "t": 242.83794999999998, "r": 456.94073, "b": 251.16290000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 135.82858276367188, "t": 267.8819274902344, "r": 534.23877, "b": 290.46051025390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9716678857803345, "cells": [{"id": 8, "text": "4.", "bbox": {"l": 136.8, "t": 268.78857000000005, "r": 145.2059, "b": 278.00158999999996, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "The Permissions window opens, as shown in Figure 4-27. Select ", "bbox": {"l": 148.00787, "t": 268.78857000000005, "r": 439.29123, "b": 278.00158999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Change", "bbox": {"l": 439.32007, "t": 268.78857000000005, "r": 476.15612999999996, "b": 278.00158999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": " authority for ", "bbox": {"l": 476.10034, "t": 268.78857000000005, "r": 534.23877, "b": 278.00158999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Webuser so that the application can set this global variable.", "bbox": {"l": 151.20016, "t": 280.78842, "r": 413.51169, "b": 290.0014, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 136.15591430664062, "t": 578.5726318359375, "r": 540.3552856445312, "b": 588.1502075195312, "coord_origin": "TOPLEFT"}, "confidence": 0.9472869038581848, "cells": [{"id": 13, "text": "Figure 4-27 Setting change permissions for Webuser on the CUSTOMER_LOGIN_ID global variable", "bbox": {"l": 136.8, "t": 579.49789, "r": 539.75073, "b": 587.82291, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "picture", "bbox": {"l": 136.84584045410156, "t": 303.6470031738281, "r": 547.677978515625, "b": 576.6021118164062, "coord_origin": "TOPLEFT"}, "confidence": 0.9863014221191406, "cells": []}, {"id": 7, "label": "picture", "bbox": {"l": 136.07814025878906, "t": 119.34014892578125, "r": 346.28375244140625, "b": 239.5808868408203, "coord_origin": "TOPLEFT"}, "confidence": 0.9723811745643616, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 68, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.31678771972656, "t": 754.7354125976562, "r": 523.59357, "b": 764.0438232421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9558536410331726, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 68, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.7046508789062, "t": 754.34130859375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9125332832336426, "cells": [{"id": 1, "text": "53", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "53"}, {"label": "list_item", "id": 2, "page_no": 68, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.12977600097656, "t": 70.7454833984375, "r": 547.25427, "b": 104.7872085571289, "coord_origin": "TOPLEFT"}, "confidence": 0.9774090051651001, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.08879, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Now that the global variable is created, assign permissions to the variable so that it can be ", "bbox": {"l": 147.85187, "t": 71.50903000000005, "r": 547.25427, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "set by the program. Right-click the CUSTOMER_LOGIN_ID global variable and select ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 532.09296, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Permissions", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 210.36716, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ", as shown in Figure 4-26.", "bbox": {"l": 210.17989, "t": 95.50867000000005, "r": 325.08237, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "3. Now that the global variable is created, assign permissions to the variable so that it can be set by the program. Right-click the CUSTOMER_LOGIN_ID global variable and select Permissions , as shown in Figure 4-26."}, {"label": "caption", "id": 3, "page_no": 68, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.95867919921875, "t": 241.98797607421875, "r": 457.0142822265625, "b": 251.3716278076172, "coord_origin": "TOPLEFT"}, "confidence": 0.9472981095314026, "cells": [{"id": 7, "text": "Figure 4-26 Setting permissions on the CUSTOMER_LOGIN_ID global variable", "bbox": {"l": 136.8, "t": 242.83794999999998, "r": 456.94073, "b": 251.16290000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-26 Setting permissions on the CUSTOMER_LOGIN_ID global variable"}, {"label": "list_item", "id": 4, "page_no": 68, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.82858276367188, "t": 267.8819274902344, "r": 534.23877, "b": 290.46051025390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9716678857803345, "cells": [{"id": 8, "text": "4.", "bbox": {"l": 136.8, "t": 268.78857000000005, "r": 145.2059, "b": 278.00158999999996, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "The Permissions window opens, as shown in Figure 4-27. Select ", "bbox": {"l": 148.00787, "t": 268.78857000000005, "r": 439.29123, "b": 278.00158999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Change", "bbox": {"l": 439.32007, "t": 268.78857000000005, "r": 476.15612999999996, "b": 278.00158999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": " authority for ", "bbox": {"l": 476.10034, "t": 268.78857000000005, "r": 534.23877, "b": 278.00158999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Webuser so that the application can set this global variable.", "bbox": {"l": 151.20016, "t": 280.78842, "r": 413.51169, "b": 290.0014, "coord_origin": "TOPLEFT"}}]}, "text": "4. The Permissions window opens, as shown in Figure 4-27. Select Change authority for Webuser so that the application can set this global variable."}, {"label": "caption", "id": 5, "page_no": 68, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.15591430664062, "t": 578.5726318359375, "r": 540.3552856445312, "b": 588.1502075195312, "coord_origin": "TOPLEFT"}, "confidence": 0.9472869038581848, "cells": [{"id": 13, "text": "Figure 4-27 Setting change permissions for Webuser on the CUSTOMER_LOGIN_ID global variable", "bbox": {"l": 136.8, "t": 579.49789, "r": 539.75073, "b": 587.82291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-27 Setting change permissions for Webuser on the CUSTOMER_LOGIN_ID global variable"}, {"label": "picture", "id": 6, "page_no": 68, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 136.84584045410156, "t": 303.6470031738281, "r": 547.677978515625, "b": 576.6021118164062, "coord_origin": "TOPLEFT"}, "confidence": 0.9863014221191406, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 7, "page_no": 68, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 136.07814025878906, "t": 119.34014892578125, "r": 346.28375244140625, "b": 239.5808868408203, "coord_origin": "TOPLEFT"}, "confidence": 0.9723811745643616, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 68, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.12977600097656, "t": 70.7454833984375, "r": 547.25427, "b": 104.7872085571289, "coord_origin": "TOPLEFT"}, "confidence": 0.9774090051651001, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.08879, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Now that the global variable is created, assign permissions to the variable so that it can be ", "bbox": {"l": 147.85187, "t": 71.50903000000005, "r": 547.25427, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "set by the program. Right-click the CUSTOMER_LOGIN_ID global variable and select ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 532.09296, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Permissions", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 210.36716, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ", as shown in Figure 4-26.", "bbox": {"l": 210.17989, "t": 95.50867000000005, "r": 325.08237, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "3. Now that the global variable is created, assign permissions to the variable so that it can be set by the program. Right-click the CUSTOMER_LOGIN_ID global variable and select Permissions , as shown in Figure 4-26."}, {"label": "caption", "id": 3, "page_no": 68, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.95867919921875, "t": 241.98797607421875, "r": 457.0142822265625, "b": 251.3716278076172, "coord_origin": "TOPLEFT"}, "confidence": 0.9472981095314026, "cells": [{"id": 7, "text": "Figure 4-26 Setting permissions on the CUSTOMER_LOGIN_ID global variable", "bbox": {"l": 136.8, "t": 242.83794999999998, "r": 456.94073, "b": 251.16290000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-26 Setting permissions on the CUSTOMER_LOGIN_ID global variable"}, {"label": "list_item", "id": 4, "page_no": 68, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.82858276367188, "t": 267.8819274902344, "r": 534.23877, "b": 290.46051025390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9716678857803345, "cells": [{"id": 8, "text": "4.", "bbox": {"l": 136.8, "t": 268.78857000000005, "r": 145.2059, "b": 278.00158999999996, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "The Permissions window opens, as shown in Figure 4-27. Select ", "bbox": {"l": 148.00787, "t": 268.78857000000005, "r": 439.29123, "b": 278.00158999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Change", "bbox": {"l": 439.32007, "t": 268.78857000000005, "r": 476.15612999999996, "b": 278.00158999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": " authority for ", "bbox": {"l": 476.10034, "t": 268.78857000000005, "r": 534.23877, "b": 278.00158999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Webuser so that the application can set this global variable.", "bbox": {"l": 151.20016, "t": 280.78842, "r": 413.51169, "b": 290.0014, "coord_origin": "TOPLEFT"}}]}, "text": "4. The Permissions window opens, as shown in Figure 4-27. Select Change authority for Webuser so that the application can set this global variable."}, {"label": "caption", "id": 5, "page_no": 68, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.15591430664062, "t": 578.5726318359375, "r": 540.3552856445312, "b": 588.1502075195312, "coord_origin": "TOPLEFT"}, "confidence": 0.9472869038581848, "cells": [{"id": 13, "text": "Figure 4-27 Setting change permissions for Webuser on the CUSTOMER_LOGIN_ID global variable", "bbox": {"l": 136.8, "t": 579.49789, "r": 539.75073, "b": 587.82291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-27 Setting change permissions for Webuser on the CUSTOMER_LOGIN_ID global variable"}, {"label": "picture", "id": 6, "page_no": 68, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 136.84584045410156, "t": 303.6470031738281, "r": 547.677978515625, "b": 576.6021118164062, "coord_origin": "TOPLEFT"}, "confidence": 0.9863014221191406, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 7, "page_no": 68, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 136.07814025878906, "t": 119.34014892578125, "r": 346.28375244140625, "b": 239.5808868408203, "coord_origin": "TOPLEFT"}, "confidence": 0.9723811745643616, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 68, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.31678771972656, "t": 754.7354125976562, "r": 523.59357, "b": 764.0438232421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9558536410331726, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 68, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.7046508789062, "t": 754.34130859375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9125332832336426, "cells": [{"id": 1, "text": "53", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "53"}]}}, {"page_no": 69, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "54 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "4.3.5", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 94.008797, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Defining and creating row permissions", "bbox": {"l": 97.659912, "t": 71.33471999999995, "r": 339.95895, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "You now ready to define the row permissions of the tables. Complete the following steps:", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 527.37946, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "1.", "bbox": {"l": 136.8, "t": 114.52826000000005, "r": 145.19618, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "From the navigation pane of System i Navigator, click ", "bbox": {"l": 147.99492, "t": 114.52826000000005, "r": 388.58487, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Schemas", "bbox": {"l": 388.50015, "t": 114.52826000000005, "r": 432.27634000000006, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "\uf0ae", "bbox": {"l": 435.06015, "t": 111.66974000000005, "r": 444.89066, "b": 123.86077999999986, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "BANK_SCHEMA", "bbox": {"l": 447.72031, "t": 114.52826000000005, "r": 525.15625, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": ", ", "bbox": {"l": 525.12048, "t": 114.52826000000005, "r": 530.75983, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "right-click ", "bbox": {"l": 151.2002, "t": 126.52808000000005, "r": 196.0929, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Row Permissions", "bbox": {"l": 196.13971, "t": 126.52808000000005, "r": 278.99695, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": ", and select", "bbox": {"l": 278.81967, "t": 126.52808000000005, "r": 329.97723, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " New", "bbox": {"l": 329.93936, "t": 126.52808000000005, "r": 353.22482, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "\uf0ae", "bbox": {"l": 355.61923, "t": 123.66956000000016, "r": 365.44974, "b": 135.86059999999998, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": " Row Permission", "bbox": {"l": 365.51947, "t": 126.52808000000005, "r": 445.6078499999999, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ", as shown in ", "bbox": {"l": 445.5590199999999, "t": 126.52808000000005, "r": 506.52917, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Figure 4-28.", "bbox": {"l": 151.19818, "t": 138.52788999999996, "r": 205.13155, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Figure 4-28 Selecting new row permissions", "bbox": {"l": 136.8, "t": 423.31799, "r": 313.46371, "b": 431.64301, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.29161071777344, "t": 754.29296875, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9131852984428406, "cells": [{"id": 0, "text": "54 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.33383178710938, "t": 754.6670532226562, "r": 334.42142, "b": 763.9429321289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9536429047584534, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.21206665039062, "t": 70.20098876953125, "r": 339.95895, "b": 83.59224700927734, "coord_origin": "TOPLEFT"}, "confidence": 0.9649859070777893, "cells": [{"id": 2, "text": "4.3.5", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 94.008797, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Defining and creating row permissions", "bbox": {"l": 97.659912, "t": 71.33471999999995, "r": 339.95895, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.9742889404297, "t": 96.73395538330078, "r": 527.37946, "b": 106.9632339477539, "coord_origin": "TOPLEFT"}, "confidence": 0.9519023299217224, "cells": [{"id": 4, "text": "You now ready to define the row permissions of the tables. Complete the following steps:", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 527.37946, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 136.758056640625, "t": 111.66974000000005, "r": 530.75983, "b": 148.32473754882812, "coord_origin": "TOPLEFT"}, "confidence": 0.9718437194824219, "cells": [{"id": 5, "text": "1.", "bbox": {"l": 136.8, "t": 114.52826000000005, "r": 145.19618, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "From the navigation pane of System i Navigator, click ", "bbox": {"l": 147.99492, "t": 114.52826000000005, "r": 388.58487, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Schemas", "bbox": {"l": 388.50015, "t": 114.52826000000005, "r": 432.27634000000006, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "\uf0ae", "bbox": {"l": 435.06015, "t": 111.66974000000005, "r": 444.89066, "b": 123.86077999999986, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "BANK_SCHEMA", "bbox": {"l": 447.72031, "t": 114.52826000000005, "r": 525.15625, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": ", ", "bbox": {"l": 525.12048, "t": 114.52826000000005, "r": 530.75983, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "right-click ", "bbox": {"l": 151.2002, "t": 126.52808000000005, "r": 196.0929, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Row Permissions", "bbox": {"l": 196.13971, "t": 126.52808000000005, "r": 278.99695, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": ", and select", "bbox": {"l": 278.81967, "t": 126.52808000000005, "r": 329.97723, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " New", "bbox": {"l": 329.93936, "t": 126.52808000000005, "r": 353.22482, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "\uf0ae", "bbox": {"l": 355.61923, "t": 123.66956000000016, "r": 365.44974, "b": 135.86059999999998, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": " Row Permission", "bbox": {"l": 365.51947, "t": 126.52808000000005, "r": 445.6078499999999, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ", as shown in ", "bbox": {"l": 445.5590199999999, "t": 126.52808000000005, "r": 506.52917, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Figure 4-28.", "bbox": {"l": 151.19818, "t": 138.52788999999996, "r": 205.13155, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 136.1620330810547, "t": 422.876953125, "r": 314.04541015625, "b": 432.17633056640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9444904327392578, "cells": [{"id": 19, "text": "Figure 4-28 Selecting new row permissions", "bbox": {"l": 136.8, "t": 423.31799, "r": 313.46371, "b": 431.64301, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "picture", "bbox": {"l": 136.3912811279297, "t": 161.90283203125, "r": 467.3126220703125, "b": 420.1808166503906, "coord_origin": "TOPLEFT"}, "confidence": 0.9873494505882263, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 69, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.29161071777344, "t": 754.29296875, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9131852984428406, "cells": [{"id": 0, "text": "54 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "54"}, {"label": "page_footer", "id": 1, "page_no": 69, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.33383178710938, "t": 754.6670532226562, "r": 334.42142, "b": 763.9429321289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9536429047584534, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "section_header", "id": 2, "page_no": 69, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.21206665039062, "t": 70.20098876953125, "r": 339.95895, "b": 83.59224700927734, "coord_origin": "TOPLEFT"}, "confidence": 0.9649859070777893, "cells": [{"id": 2, "text": "4.3.5", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 94.008797, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Defining and creating row permissions", "bbox": {"l": 97.659912, "t": 71.33471999999995, "r": 339.95895, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "4.3.5 Defining and creating row permissions"}, {"label": "text", "id": 3, "page_no": 69, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.9742889404297, "t": 96.73395538330078, "r": 527.37946, "b": 106.9632339477539, "coord_origin": "TOPLEFT"}, "confidence": 0.9519023299217224, "cells": [{"id": 4, "text": "You now ready to define the row permissions of the tables. Complete the following steps:", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 527.37946, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}]}, "text": "You now ready to define the row permissions of the tables. Complete the following steps:"}, {"label": "list_item", "id": 4, "page_no": 69, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.758056640625, "t": 111.66974000000005, "r": 530.75983, "b": 148.32473754882812, "coord_origin": "TOPLEFT"}, "confidence": 0.9718437194824219, "cells": [{"id": 5, "text": "1.", "bbox": {"l": 136.8, "t": 114.52826000000005, "r": 145.19618, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "From the navigation pane of System i Navigator, click ", "bbox": {"l": 147.99492, "t": 114.52826000000005, "r": 388.58487, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Schemas", "bbox": {"l": 388.50015, "t": 114.52826000000005, "r": 432.27634000000006, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "\uf0ae", "bbox": {"l": 435.06015, "t": 111.66974000000005, "r": 444.89066, "b": 123.86077999999986, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "BANK_SCHEMA", "bbox": {"l": 447.72031, "t": 114.52826000000005, "r": 525.15625, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": ", ", "bbox": {"l": 525.12048, "t": 114.52826000000005, "r": 530.75983, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "right-click ", "bbox": {"l": 151.2002, "t": 126.52808000000005, "r": 196.0929, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Row Permissions", "bbox": {"l": 196.13971, "t": 126.52808000000005, "r": 278.99695, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": ", and select", "bbox": {"l": 278.81967, "t": 126.52808000000005, "r": 329.97723, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " New", "bbox": {"l": 329.93936, "t": 126.52808000000005, "r": 353.22482, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "\uf0ae", "bbox": {"l": 355.61923, "t": 123.66956000000016, "r": 365.44974, "b": 135.86059999999998, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": " Row Permission", "bbox": {"l": 365.51947, "t": 126.52808000000005, "r": 445.6078499999999, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ", as shown in ", "bbox": {"l": 445.5590199999999, "t": 126.52808000000005, "r": 506.52917, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Figure 4-28.", "bbox": {"l": 151.19818, "t": 138.52788999999996, "r": 205.13155, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}]}, "text": "1. From the navigation pane of System i Navigator, click Schemas \uf0ae BANK_SCHEMA , right-click Row Permissions , and select New \uf0ae Row Permission , as shown in Figure 4-28."}, {"label": "caption", "id": 5, "page_no": 69, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.1620330810547, "t": 422.876953125, "r": 314.04541015625, "b": 432.17633056640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9444904327392578, "cells": [{"id": 19, "text": "Figure 4-28 Selecting new row permissions", "bbox": {"l": 136.8, "t": 423.31799, "r": 313.46371, "b": 431.64301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-28 Selecting new row permissions"}, {"label": "picture", "id": 6, "page_no": 69, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 136.3912811279297, "t": 161.90283203125, "r": 467.3126220703125, "b": 420.1808166503906, "coord_origin": "TOPLEFT"}, "confidence": 0.9873494505882263, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "section_header", "id": 2, "page_no": 69, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.21206665039062, "t": 70.20098876953125, "r": 339.95895, "b": 83.59224700927734, "coord_origin": "TOPLEFT"}, "confidence": 0.9649859070777893, "cells": [{"id": 2, "text": "4.3.5", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 94.008797, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Defining and creating row permissions", "bbox": {"l": 97.659912, "t": 71.33471999999995, "r": 339.95895, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "4.3.5 Defining and creating row permissions"}, {"label": "text", "id": 3, "page_no": 69, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.9742889404297, "t": 96.73395538330078, "r": 527.37946, "b": 106.9632339477539, "coord_origin": "TOPLEFT"}, "confidence": 0.9519023299217224, "cells": [{"id": 4, "text": "You now ready to define the row permissions of the tables. Complete the following steps:", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 527.37946, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}]}, "text": "You now ready to define the row permissions of the tables. Complete the following steps:"}, {"label": "list_item", "id": 4, "page_no": 69, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.758056640625, "t": 111.66974000000005, "r": 530.75983, "b": 148.32473754882812, "coord_origin": "TOPLEFT"}, "confidence": 0.9718437194824219, "cells": [{"id": 5, "text": "1.", "bbox": {"l": 136.8, "t": 114.52826000000005, "r": 145.19618, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "From the navigation pane of System i Navigator, click ", "bbox": {"l": 147.99492, "t": 114.52826000000005, "r": 388.58487, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Schemas", "bbox": {"l": 388.50015, "t": 114.52826000000005, "r": 432.27634000000006, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "\uf0ae", "bbox": {"l": 435.06015, "t": 111.66974000000005, "r": 444.89066, "b": 123.86077999999986, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "BANK_SCHEMA", "bbox": {"l": 447.72031, "t": 114.52826000000005, "r": 525.15625, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": ", ", "bbox": {"l": 525.12048, "t": 114.52826000000005, "r": 530.75983, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "right-click ", "bbox": {"l": 151.2002, "t": 126.52808000000005, "r": 196.0929, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Row Permissions", "bbox": {"l": 196.13971, "t": 126.52808000000005, "r": 278.99695, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": ", and select", "bbox": {"l": 278.81967, "t": 126.52808000000005, "r": 329.97723, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " New", "bbox": {"l": 329.93936, "t": 126.52808000000005, "r": 353.22482, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "\uf0ae", "bbox": {"l": 355.61923, "t": 123.66956000000016, "r": 365.44974, "b": 135.86059999999998, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": " Row Permission", "bbox": {"l": 365.51947, "t": 126.52808000000005, "r": 445.6078499999999, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ", as shown in ", "bbox": {"l": 445.5590199999999, "t": 126.52808000000005, "r": 506.52917, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Figure 4-28.", "bbox": {"l": 151.19818, "t": 138.52788999999996, "r": 205.13155, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}]}, "text": "1. From the navigation pane of System i Navigator, click Schemas \uf0ae BANK_SCHEMA , right-click Row Permissions , and select New \uf0ae Row Permission , as shown in Figure 4-28."}, {"label": "caption", "id": 5, "page_no": 69, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.1620330810547, "t": 422.876953125, "r": 314.04541015625, "b": 432.17633056640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9444904327392578, "cells": [{"id": 19, "text": "Figure 4-28 Selecting new row permissions", "bbox": {"l": 136.8, "t": 423.31799, "r": 313.46371, "b": 431.64301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-28 Selecting new row permissions"}, {"label": "picture", "id": 6, "page_no": 69, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 136.3912811279297, "t": 161.90283203125, "r": 467.3126220703125, "b": 420.1808166503906, "coord_origin": "TOPLEFT"}, "confidence": 0.9873494505882263, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 69, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.29161071777344, "t": 754.29296875, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9131852984428406, "cells": [{"id": 0, "text": "54 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "54"}, {"label": "page_footer", "id": 1, "page_no": 69, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.33383178710938, "t": 754.6670532226562, "r": 334.42142, "b": 763.9429321289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9536429047584534, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 70, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "55", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.18062, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The New Row Permission window opens, as shown in Figure 4-29. Enter the information ", "bbox": {"l": 147.97429, "t": 71.50903000000005, "r": 544.50513, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "regarding the row permissions on the CUSTOMERS table. This row permission defines ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 538.36682, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "what is established in the following policy:", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 334.9458, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "-", "bbox": {"l": 152.03938, "t": 112.48845999999992, "r": 157.60901, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "User profiles that belong to DBE, ADMIN, and TELLER group profiles can see all the ", "bbox": {"l": 165.59892, "t": 112.48845999999992, "r": 542.18152, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "rows.", "bbox": {"l": 165.59892, "t": 124.48828000000003, "r": 189.17128, "b": 133.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "-", "bbox": {"l": 152.03938, "t": 141.52783, "r": 157.61002, "b": 150.74084000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER ", "bbox": {"l": 165.59894, "t": 141.52783, "r": 534.40277, "b": 150.74084000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "user) can see only the rows that match their customer login ID. The login ID value ", "bbox": {"l": 165.59892, "t": 153.52765, "r": 527.79926, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "representing the online banking user is passed from the web application to the ", "bbox": {"l": 165.59892, "t": 165.52747, "r": 513.83038, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "database by using the global variable CUSTOMER_LOGIN_ID. The permission rule ", "bbox": {"l": 165.59891, "t": 177.52728000000002, "r": 537.78314, "b": 186.74030000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "uses a subquery to check whether the global variable matches the ", "bbox": {"l": 165.59891, "t": 189.52710000000002, "r": 460.90103, "b": 198.74010999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "CUSTOMER_LOGIN_ID column value in the CUSTOMERS table.", "bbox": {"l": 165.59891, "t": 201.52692000000002, "r": 456.26354999999995, "b": 210.73992999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "-", "bbox": {"l": 152.03937, "t": 218.50671, "r": 157.61099, "b": 227.71973000000003, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Any other user profile cannot see any rows at all.", "bbox": {"l": 165.59891, "t": 218.50671, "r": 381.32654, "b": 227.71973000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Select the ", "bbox": {"l": 151.19974, "t": 235.48650999999995, "r": 198.41113, "b": 244.69952, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Enabled", "bbox": {"l": 198.4201, "t": 235.48650999999995, "r": 237.21332, "b": 244.69952, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": " option. Click ", "bbox": {"l": 237.18044, "t": 235.48650999999995, "r": 297.04803, "b": 244.69952, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "OK", "bbox": {"l": 297.00018, "t": 235.48650999999995, "r": 311.92224, "b": 244.69952, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": ".", "bbox": {"l": 311.99994, "t": 235.48650999999995, "r": 314.76883, "b": 244.69952, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Figure 4-29 New row permissions on the CUSTOMERS table", "bbox": {"l": 136.8, "t": 529.9379, "r": 384.29547, "b": 538.26291, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 214.24986267089844, "t": 754.7130737304688, "r": 523.59357, "b": 764.043212890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9545792937278748, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.6702270507812, "t": 754.3177490234375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9093314409255981, "cells": [{"id": 1, "text": "55", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 136.03018188476562, "t": 70.50949096679688, "r": 544.50513, "b": 104.85425567626953, "coord_origin": "TOPLEFT"}, "confidence": 0.9784817099571228, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.18062, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The New Row Permission window opens, as shown in Figure 4-29. Enter the information ", "bbox": {"l": 147.97429, "t": 71.50903000000005, "r": 544.50513, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "regarding the row permissions on the CUSTOMERS table. This row permission defines ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 538.36682, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "what is established in the following policy:", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 334.9458, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "list_item", "bbox": {"l": 151.3019256591797, "t": 111.28250122070312, "r": 542.18152, "b": 133.70128999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9687250852584839, "cells": [{"id": 6, "text": "-", "bbox": {"l": 152.03938, "t": 112.48845999999992, "r": 157.60901, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "User profiles that belong to DBE, ADMIN, and TELLER group profiles can see all the ", "bbox": {"l": 165.59892, "t": 112.48845999999992, "r": 542.18152, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "rows.", "bbox": {"l": 165.59892, "t": 124.48828000000003, "r": 189.17128, "b": 133.70128999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 151.4884796142578, "t": 140.4087677001953, "r": 537.78314, "b": 210.73992999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.983960747718811, "cells": [{"id": 9, "text": "-", "bbox": {"l": 152.03938, "t": 141.52783, "r": 157.61002, "b": 150.74084000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER ", "bbox": {"l": 165.59894, "t": 141.52783, "r": 534.40277, "b": 150.74084000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "user) can see only the rows that match their customer login ID. The login ID value ", "bbox": {"l": 165.59892, "t": 153.52765, "r": 527.79926, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "representing the online banking user is passed from the web application to the ", "bbox": {"l": 165.59892, "t": 165.52747, "r": 513.83038, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "database by using the global variable CUSTOMER_LOGIN_ID. The permission rule ", "bbox": {"l": 165.59891, "t": 177.52728000000002, "r": 537.78314, "b": 186.74030000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "uses a subquery to check whether the global variable matches the ", "bbox": {"l": 165.59891, "t": 189.52710000000002, "r": 460.90103, "b": 198.74010999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "CUSTOMER_LOGIN_ID column value in the CUSTOMERS table.", "bbox": {"l": 165.59891, "t": 201.52692000000002, "r": 456.26354999999995, "b": 210.73992999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 151.66030883789062, "t": 217.47354125976562, "r": 381.32654, "b": 227.79330444335938, "coord_origin": "TOPLEFT"}, "confidence": 0.9481797814369202, "cells": [{"id": 16, "text": "-", "bbox": {"l": 152.03937, "t": 218.50671, "r": 157.61099, "b": 227.71973000000003, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Any other user profile cannot see any rows at all.", "bbox": {"l": 165.59891, "t": 218.50671, "r": 381.32654, "b": 227.71973000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 151.00958251953125, "t": 234.5278778076172, "r": 314.76883, "b": 245.11355590820312, "coord_origin": "TOPLEFT"}, "confidence": 0.7769520878791809, "cells": [{"id": 18, "text": "Select the ", "bbox": {"l": 151.19974, "t": 235.48650999999995, "r": 198.41113, "b": 244.69952, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Enabled", "bbox": {"l": 198.4201, "t": 235.48650999999995, "r": 237.21332, "b": 244.69952, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": " option. Click ", "bbox": {"l": 237.18044, "t": 235.48650999999995, "r": 297.04803, "b": 244.69952, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "OK", "bbox": {"l": 297.00018, "t": 235.48650999999995, "r": 311.92224, "b": 244.69952, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": ".", "bbox": {"l": 311.99994, "t": 235.48650999999995, "r": 314.76883, "b": 244.69952, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "caption", "bbox": {"l": 135.95968627929688, "t": 529.3792114257812, "r": 384.6536865234375, "b": 538.73486328125, "coord_origin": "TOPLEFT"}, "confidence": 0.947584867477417, "cells": [{"id": 23, "text": "Figure 4-29 New row permissions on the CUSTOMERS table", "bbox": {"l": 136.8, "t": 529.9379, "r": 384.29547, "b": 538.26291, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 136.22802734375, "t": 258.7868347167969, "r": 507.9937438964844, "b": 526.5271606445312, "coord_origin": "TOPLEFT"}, "confidence": 0.9844093918800354, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 70, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.24986267089844, "t": 754.7130737304688, "r": 523.59357, "b": 764.043212890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9545792937278748, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 70, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6702270507812, "t": 754.3177490234375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9093314409255981, "cells": [{"id": 1, "text": "55", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "55"}, {"label": "list_item", "id": 2, "page_no": 70, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.03018188476562, "t": 70.50949096679688, "r": 544.50513, "b": 104.85425567626953, "coord_origin": "TOPLEFT"}, "confidence": 0.9784817099571228, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.18062, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The New Row Permission window opens, as shown in Figure 4-29. Enter the information ", "bbox": {"l": 147.97429, "t": 71.50903000000005, "r": 544.50513, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "regarding the row permissions on the CUSTOMERS table. This row permission defines ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 538.36682, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "what is established in the following policy:", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 334.9458, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "2. The New Row Permission window opens, as shown in Figure 4-29. Enter the information regarding the row permissions on the CUSTOMERS table. This row permission defines what is established in the following policy:"}, {"label": "list_item", "id": 3, "page_no": 70, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 151.3019256591797, "t": 111.28250122070312, "r": 542.18152, "b": 133.70128999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9687250852584839, "cells": [{"id": 6, "text": "-", "bbox": {"l": 152.03938, "t": 112.48845999999992, "r": 157.60901, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "User profiles that belong to DBE, ADMIN, and TELLER group profiles can see all the ", "bbox": {"l": 165.59892, "t": 112.48845999999992, "r": 542.18152, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "rows.", "bbox": {"l": 165.59892, "t": 124.48828000000003, "r": 189.17128, "b": 133.70128999999997, "coord_origin": "TOPLEFT"}}]}, "text": "-User profiles that belong to DBE, ADMIN, and TELLER group profiles can see all the rows."}, {"label": "list_item", "id": 4, "page_no": 70, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 151.4884796142578, "t": 140.4087677001953, "r": 537.78314, "b": 210.73992999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.983960747718811, "cells": [{"id": 9, "text": "-", "bbox": {"l": 152.03938, "t": 141.52783, "r": 157.61002, "b": 150.74084000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER ", "bbox": {"l": 165.59894, "t": 141.52783, "r": 534.40277, "b": 150.74084000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "user) can see only the rows that match their customer login ID. The login ID value ", "bbox": {"l": 165.59892, "t": 153.52765, "r": 527.79926, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "representing the online banking user is passed from the web application to the ", "bbox": {"l": 165.59892, "t": 165.52747, "r": 513.83038, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "database by using the global variable CUSTOMER_LOGIN_ID. The permission rule ", "bbox": {"l": 165.59891, "t": 177.52728000000002, "r": 537.78314, "b": 186.74030000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "uses a subquery to check whether the global variable matches the ", "bbox": {"l": 165.59891, "t": 189.52710000000002, "r": 460.90103, "b": 198.74010999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "CUSTOMER_LOGIN_ID column value in the CUSTOMERS table.", "bbox": {"l": 165.59891, "t": 201.52692000000002, "r": 456.26354999999995, "b": 210.73992999999996, "coord_origin": "TOPLEFT"}}]}, "text": "-User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER user) can see only the rows that match their customer login ID. The login ID value representing the online banking user is passed from the web application to the database by using the global variable CUSTOMER_LOGIN_ID. The permission rule uses a subquery to check whether the global variable matches the CUSTOMER_LOGIN_ID column value in the CUSTOMERS table."}, {"label": "list_item", "id": 5, "page_no": 70, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 151.66030883789062, "t": 217.47354125976562, "r": 381.32654, "b": 227.79330444335938, "coord_origin": "TOPLEFT"}, "confidence": 0.9481797814369202, "cells": [{"id": 16, "text": "-", "bbox": {"l": 152.03937, "t": 218.50671, "r": 157.61099, "b": 227.71973000000003, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Any other user profile cannot see any rows at all.", "bbox": {"l": 165.59891, "t": 218.50671, "r": 381.32654, "b": 227.71973000000003, "coord_origin": "TOPLEFT"}}]}, "text": "-Any other user profile cannot see any rows at all."}, {"label": "text", "id": 6, "page_no": 70, "cluster": {"id": 6, "label": "text", "bbox": {"l": 151.00958251953125, "t": 234.5278778076172, "r": 314.76883, "b": 245.11355590820312, "coord_origin": "TOPLEFT"}, "confidence": 0.7769520878791809, "cells": [{"id": 18, "text": "Select the ", "bbox": {"l": 151.19974, "t": 235.48650999999995, "r": 198.41113, "b": 244.69952, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Enabled", "bbox": {"l": 198.4201, "t": 235.48650999999995, "r": 237.21332, "b": 244.69952, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": " option. Click ", "bbox": {"l": 237.18044, "t": 235.48650999999995, "r": 297.04803, "b": 244.69952, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "OK", "bbox": {"l": 297.00018, "t": 235.48650999999995, "r": 311.92224, "b": 244.69952, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": ".", "bbox": {"l": 311.99994, "t": 235.48650999999995, "r": 314.76883, "b": 244.69952, "coord_origin": "TOPLEFT"}}]}, "text": "Select the Enabled option. Click OK ."}, {"label": "caption", "id": 7, "page_no": 70, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 135.95968627929688, "t": 529.3792114257812, "r": 384.6536865234375, "b": 538.73486328125, "coord_origin": "TOPLEFT"}, "confidence": 0.947584867477417, "cells": [{"id": 23, "text": "Figure 4-29 New row permissions on the CUSTOMERS table", "bbox": {"l": 136.8, "t": 529.9379, "r": 384.29547, "b": 538.26291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-29 New row permissions on the CUSTOMERS table"}, {"label": "picture", "id": 8, "page_no": 70, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 136.22802734375, "t": 258.7868347167969, "r": 507.9937438964844, "b": 526.5271606445312, "coord_origin": "TOPLEFT"}, "confidence": 0.9844093918800354, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 70, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.03018188476562, "t": 70.50949096679688, "r": 544.50513, "b": 104.85425567626953, "coord_origin": "TOPLEFT"}, "confidence": 0.9784817099571228, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.18062, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The New Row Permission window opens, as shown in Figure 4-29. Enter the information ", "bbox": {"l": 147.97429, "t": 71.50903000000005, "r": 544.50513, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "regarding the row permissions on the CUSTOMERS table. This row permission defines ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 538.36682, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "what is established in the following policy:", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 334.9458, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "2. The New Row Permission window opens, as shown in Figure 4-29. Enter the information regarding the row permissions on the CUSTOMERS table. This row permission defines what is established in the following policy:"}, {"label": "list_item", "id": 3, "page_no": 70, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 151.3019256591797, "t": 111.28250122070312, "r": 542.18152, "b": 133.70128999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9687250852584839, "cells": [{"id": 6, "text": "-", "bbox": {"l": 152.03938, "t": 112.48845999999992, "r": 157.60901, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "User profiles that belong to DBE, ADMIN, and TELLER group profiles can see all the ", "bbox": {"l": 165.59892, "t": 112.48845999999992, "r": 542.18152, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "rows.", "bbox": {"l": 165.59892, "t": 124.48828000000003, "r": 189.17128, "b": 133.70128999999997, "coord_origin": "TOPLEFT"}}]}, "text": "-User profiles that belong to DBE, ADMIN, and TELLER group profiles can see all the rows."}, {"label": "list_item", "id": 4, "page_no": 70, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 151.4884796142578, "t": 140.4087677001953, "r": 537.78314, "b": 210.73992999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.983960747718811, "cells": [{"id": 9, "text": "-", "bbox": {"l": 152.03938, "t": 141.52783, "r": 157.61002, "b": 150.74084000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER ", "bbox": {"l": 165.59894, "t": 141.52783, "r": 534.40277, "b": 150.74084000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "user) can see only the rows that match their customer login ID. The login ID value ", "bbox": {"l": 165.59892, "t": 153.52765, "r": 527.79926, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "representing the online banking user is passed from the web application to the ", "bbox": {"l": 165.59892, "t": 165.52747, "r": 513.83038, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "database by using the global variable CUSTOMER_LOGIN_ID. The permission rule ", "bbox": {"l": 165.59891, "t": 177.52728000000002, "r": 537.78314, "b": 186.74030000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "uses a subquery to check whether the global variable matches the ", "bbox": {"l": 165.59891, "t": 189.52710000000002, "r": 460.90103, "b": 198.74010999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "CUSTOMER_LOGIN_ID column value in the CUSTOMERS table.", "bbox": {"l": 165.59891, "t": 201.52692000000002, "r": 456.26354999999995, "b": 210.73992999999996, "coord_origin": "TOPLEFT"}}]}, "text": "-User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER user) can see only the rows that match their customer login ID. The login ID value representing the online banking user is passed from the web application to the database by using the global variable CUSTOMER_LOGIN_ID. The permission rule uses a subquery to check whether the global variable matches the CUSTOMER_LOGIN_ID column value in the CUSTOMERS table."}, {"label": "list_item", "id": 5, "page_no": 70, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 151.66030883789062, "t": 217.47354125976562, "r": 381.32654, "b": 227.79330444335938, "coord_origin": "TOPLEFT"}, "confidence": 0.9481797814369202, "cells": [{"id": 16, "text": "-", "bbox": {"l": 152.03937, "t": 218.50671, "r": 157.61099, "b": 227.71973000000003, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Any other user profile cannot see any rows at all.", "bbox": {"l": 165.59891, "t": 218.50671, "r": 381.32654, "b": 227.71973000000003, "coord_origin": "TOPLEFT"}}]}, "text": "-Any other user profile cannot see any rows at all."}, {"label": "text", "id": 6, "page_no": 70, "cluster": {"id": 6, "label": "text", "bbox": {"l": 151.00958251953125, "t": 234.5278778076172, "r": 314.76883, "b": 245.11355590820312, "coord_origin": "TOPLEFT"}, "confidence": 0.7769520878791809, "cells": [{"id": 18, "text": "Select the ", "bbox": {"l": 151.19974, "t": 235.48650999999995, "r": 198.41113, "b": 244.69952, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Enabled", "bbox": {"l": 198.4201, "t": 235.48650999999995, "r": 237.21332, "b": 244.69952, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": " option. Click ", "bbox": {"l": 237.18044, "t": 235.48650999999995, "r": 297.04803, "b": 244.69952, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "OK", "bbox": {"l": 297.00018, "t": 235.48650999999995, "r": 311.92224, "b": 244.69952, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": ".", "bbox": {"l": 311.99994, "t": 235.48650999999995, "r": 314.76883, "b": 244.69952, "coord_origin": "TOPLEFT"}}]}, "text": "Select the Enabled option. Click OK ."}, {"label": "caption", "id": 7, "page_no": 70, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 135.95968627929688, "t": 529.3792114257812, "r": 384.6536865234375, "b": 538.73486328125, "coord_origin": "TOPLEFT"}, "confidence": 0.947584867477417, "cells": [{"id": 23, "text": "Figure 4-29 New row permissions on the CUSTOMERS table", "bbox": {"l": 136.8, "t": 529.9379, "r": 384.29547, "b": 538.26291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-29 New row permissions on the CUSTOMERS table"}, {"label": "picture", "id": 8, "page_no": 70, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 136.22802734375, "t": 258.7868347167969, "r": 507.9937438964844, "b": 526.5271606445312, "coord_origin": "TOPLEFT"}, "confidence": 0.9844093918800354, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 70, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.24986267089844, "t": 754.7130737304688, "r": 523.59357, "b": 764.043212890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9545792937278748, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 70, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6702270507812, "t": 754.3177490234375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9093314409255981, "cells": [{"id": 1, "text": "55", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "55"}]}}, {"page_no": 71, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "56 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "3.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.16809, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Define the row permissions for the ACCOUNTS table. The New Row Permission window ", "bbox": {"l": 147.95744, "t": 71.50867000000005, "r": 543.83636, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "opens, as shown in Figure 4-30. Enter the information regarding the row permissions on ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 542.03442, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "the ACCOUNTS table. This row permission defines what is established in the following ", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 535.38037, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "policy:", "bbox": {"l": 151.20016, "t": 107.50811999999996, "r": 179.53438, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "-", "bbox": {"l": 152.03979, "t": 124.48792000000003, "r": 157.61043, "b": 133.70092999999997, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "User profiles that belong to DBE, ADMIN and TELLER group profiles can see all the ", "bbox": {"l": 165.59935, "t": 124.48792000000003, "r": 539.45398, "b": 133.70092999999997, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "rows.", "bbox": {"l": 165.59933, "t": 136.48773000000006, "r": 189.17169, "b": 145.70074, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "-", "bbox": {"l": 152.03979, "t": 153.52728000000002, "r": 157.61043, "b": 162.74030000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER ", "bbox": {"l": 165.59935, "t": 153.52728000000002, "r": 534.36139, "b": 162.74030000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "user) can see only the rows that match their customer login ID. The login ID value ", "bbox": {"l": 165.59933, "t": 165.52710000000002, "r": 527.79968, "b": 174.74010999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "representing the online banking user is passed from the web application to the ", "bbox": {"l": 165.59933, "t": 177.52692000000002, "r": 513.83081, "b": 186.73992999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "database by using the global variable CUSTOMER_LOGIN_ID. The permission rule ", "bbox": {"l": 165.59933, "t": 189.52673000000004, "r": 537.75769, "b": 198.73974999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "uses a subquery to check whether the global variable matches the ", "bbox": {"l": 165.59933, "t": 201.52655000000004, "r": 460.90145999999993, "b": 210.73955999999998, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "CUSTOMER_LOGIN_ID column value in the CUSTOMERS table.", "bbox": {"l": 165.59933, "t": 213.52637000000004, "r": 456.26398, "b": 222.73937999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "-", "bbox": {"l": 152.03979, "t": 230.50616000000002, "r": 157.61142, "b": 239.71918000000005, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Any other user profile cannot see any rows at all.", "bbox": {"l": 165.59933, "t": 230.50616000000002, "r": 381.32697, "b": 239.71918000000005, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Select the ", "bbox": {"l": 151.20016, "t": 247.48595999999998, "r": 198.41156, "b": 256.69897000000003, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Enabled", "bbox": {"l": 198.42053, "t": 247.48595999999998, "r": 237.21375, "b": 256.69897000000003, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": " option. Click ", "bbox": {"l": 237.18086000000002, "t": 247.48595999999998, "r": 297.04846, "b": 256.69897000000003, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "OK", "bbox": {"l": 297.00061, "t": 247.48595999999998, "r": 311.92267, "b": 256.69897000000003, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": ".", "bbox": {"l": 312.00037, "t": 247.48595999999998, "r": 314.76926, "b": 256.69897000000003, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Figure 4-30 New row permissions on the ACCOUNTS table", "bbox": {"l": 64.800003, "t": 585.7379900000001, "r": 305.46814, "b": 594.063, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.20973205566406, "t": 754.2777099609375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9139277338981628, "cells": [{"id": 0, "text": "56 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.28527069091797, "t": 754.64208984375, "r": 334.42142, "b": 763.944091796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9527794718742371, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 136.20513916015625, "t": 70.595458984375, "r": 543.83636, "b": 117.18975830078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9810321927070618, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.16809, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Define the row permissions for the ACCOUNTS table. The New Row Permission window ", "bbox": {"l": 147.95744, "t": 71.50867000000005, "r": 543.83636, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "opens, as shown in Figure 4-30. Enter the information regarding the row permissions on ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 542.03442, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "the ACCOUNTS table. This row permission defines what is established in the following ", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 535.38037, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "policy:", "bbox": {"l": 151.20016, "t": 107.50811999999996, "r": 179.53438, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "list_item", "bbox": {"l": 151.44004821777344, "t": 123.32445526123047, "r": 539.45398, "b": 145.70074, "coord_origin": "TOPLEFT"}, "confidence": 0.9677587151527405, "cells": [{"id": 7, "text": "-", "bbox": {"l": 152.03979, "t": 124.48792000000003, "r": 157.61043, "b": 133.70092999999997, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "User profiles that belong to DBE, ADMIN and TELLER group profiles can see all the ", "bbox": {"l": 165.59935, "t": 124.48792000000003, "r": 539.45398, "b": 133.70092999999997, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "rows.", "bbox": {"l": 165.59933, "t": 136.48773000000006, "r": 189.17169, "b": 145.70074, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 151.2493438720703, "t": 152.3936767578125, "r": 537.75769, "b": 222.73937999999998, "coord_origin": "TOPLEFT"}, "confidence": 0.9846922159194946, "cells": [{"id": 10, "text": "-", "bbox": {"l": 152.03979, "t": 153.52728000000002, "r": 157.61043, "b": 162.74030000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER ", "bbox": {"l": 165.59935, "t": 153.52728000000002, "r": 534.36139, "b": 162.74030000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "user) can see only the rows that match their customer login ID. The login ID value ", "bbox": {"l": 165.59933, "t": 165.52710000000002, "r": 527.79968, "b": 174.74010999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "representing the online banking user is passed from the web application to the ", "bbox": {"l": 165.59933, "t": 177.52692000000002, "r": 513.83081, "b": 186.73992999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "database by using the global variable CUSTOMER_LOGIN_ID. The permission rule ", "bbox": {"l": 165.59933, "t": 189.52673000000004, "r": 537.75769, "b": 198.73974999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "uses a subquery to check whether the global variable matches the ", "bbox": {"l": 165.59933, "t": 201.52655000000004, "r": 460.90145999999993, "b": 210.73955999999998, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "CUSTOMER_LOGIN_ID column value in the CUSTOMERS table.", "bbox": {"l": 165.59933, "t": 213.52637000000004, "r": 456.26398, "b": 222.73937999999998, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 151.43359375, "t": 229.4423370361328, "r": 381.32697, "b": 239.7835235595703, "coord_origin": "TOPLEFT"}, "confidence": 0.9531306028366089, "cells": [{"id": 17, "text": "-", "bbox": {"l": 152.03979, "t": 230.50616000000002, "r": 157.61142, "b": 239.71918000000005, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Any other user profile cannot see any rows at all.", "bbox": {"l": 165.59933, "t": 230.50616000000002, "r": 381.32697, "b": 239.71918000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 150.8797149658203, "t": 246.4891815185547, "r": 314.76926, "b": 256.9587707519531, "coord_origin": "TOPLEFT"}, "confidence": 0.8528881072998047, "cells": [{"id": 19, "text": "Select the ", "bbox": {"l": 151.20016, "t": 247.48595999999998, "r": 198.41156, "b": 256.69897000000003, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Enabled", "bbox": {"l": 198.42053, "t": 247.48595999999998, "r": 237.21375, "b": 256.69897000000003, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": " option. Click ", "bbox": {"l": 237.18086000000002, "t": 247.48595999999998, "r": 297.04846, "b": 256.69897000000003, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "OK", "bbox": {"l": 297.00061, "t": 247.48595999999998, "r": 311.92267, "b": 256.69897000000003, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": ".", "bbox": {"l": 312.00037, "t": 247.48595999999998, "r": 314.76926, "b": 256.69897000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "caption", "bbox": {"l": 64.3364486694336, "t": 584.8099365234375, "r": 305.99822998046875, "b": 594.063, "coord_origin": "TOPLEFT"}, "confidence": 0.9497343897819519, "cells": [{"id": 24, "text": "Figure 4-30 New row permissions on the ACCOUNTS table", "bbox": {"l": 64.800003, "t": 585.7379900000001, "r": 305.46814, "b": 594.063, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 63.957679748535156, "t": 270.48822021484375, "r": 540.6087646484375, "b": 582.9116821289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9854897260665894, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 71, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.20973205566406, "t": 754.2777099609375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9139277338981628, "cells": [{"id": 0, "text": "56 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "56"}, {"label": "page_footer", "id": 1, "page_no": 71, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.28527069091797, "t": 754.64208984375, "r": 334.42142, "b": 763.944091796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9527794718742371, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "list_item", "id": 2, "page_no": 71, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.20513916015625, "t": 70.595458984375, "r": 543.83636, "b": 117.18975830078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9810321927070618, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.16809, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Define the row permissions for the ACCOUNTS table. The New Row Permission window ", "bbox": {"l": 147.95744, "t": 71.50867000000005, "r": 543.83636, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "opens, as shown in Figure 4-30. Enter the information regarding the row permissions on ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 542.03442, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "the ACCOUNTS table. This row permission defines what is established in the following ", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 535.38037, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "policy:", "bbox": {"l": 151.20016, "t": 107.50811999999996, "r": 179.53438, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "3. Define the row permissions for the ACCOUNTS table. The New Row Permission window opens, as shown in Figure 4-30. Enter the information regarding the row permissions on the ACCOUNTS table. This row permission defines what is established in the following policy:"}, {"label": "list_item", "id": 3, "page_no": 71, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 151.44004821777344, "t": 123.32445526123047, "r": 539.45398, "b": 145.70074, "coord_origin": "TOPLEFT"}, "confidence": 0.9677587151527405, "cells": [{"id": 7, "text": "-", "bbox": {"l": 152.03979, "t": 124.48792000000003, "r": 157.61043, "b": 133.70092999999997, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "User profiles that belong to DBE, ADMIN and TELLER group profiles can see all the ", "bbox": {"l": 165.59935, "t": 124.48792000000003, "r": 539.45398, "b": 133.70092999999997, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "rows.", "bbox": {"l": 165.59933, "t": 136.48773000000006, "r": 189.17169, "b": 145.70074, "coord_origin": "TOPLEFT"}}]}, "text": "-User profiles that belong to DBE, ADMIN and TELLER group profiles can see all the rows."}, {"label": "list_item", "id": 4, "page_no": 71, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 151.2493438720703, "t": 152.3936767578125, "r": 537.75769, "b": 222.73937999999998, "coord_origin": "TOPLEFT"}, "confidence": 0.9846922159194946, "cells": [{"id": 10, "text": "-", "bbox": {"l": 152.03979, "t": 153.52728000000002, "r": 157.61043, "b": 162.74030000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER ", "bbox": {"l": 165.59935, "t": 153.52728000000002, "r": 534.36139, "b": 162.74030000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "user) can see only the rows that match their customer login ID. The login ID value ", "bbox": {"l": 165.59933, "t": 165.52710000000002, "r": 527.79968, "b": 174.74010999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "representing the online banking user is passed from the web application to the ", "bbox": {"l": 165.59933, "t": 177.52692000000002, "r": 513.83081, "b": 186.73992999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "database by using the global variable CUSTOMER_LOGIN_ID. The permission rule ", "bbox": {"l": 165.59933, "t": 189.52673000000004, "r": 537.75769, "b": 198.73974999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "uses a subquery to check whether the global variable matches the ", "bbox": {"l": 165.59933, "t": 201.52655000000004, "r": 460.90145999999993, "b": 210.73955999999998, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "CUSTOMER_LOGIN_ID column value in the CUSTOMERS table.", "bbox": {"l": 165.59933, "t": 213.52637000000004, "r": 456.26398, "b": 222.73937999999998, "coord_origin": "TOPLEFT"}}]}, "text": "-User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER user) can see only the rows that match their customer login ID. The login ID value representing the online banking user is passed from the web application to the database by using the global variable CUSTOMER_LOGIN_ID. The permission rule uses a subquery to check whether the global variable matches the CUSTOMER_LOGIN_ID column value in the CUSTOMERS table."}, {"label": "list_item", "id": 5, "page_no": 71, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 151.43359375, "t": 229.4423370361328, "r": 381.32697, "b": 239.7835235595703, "coord_origin": "TOPLEFT"}, "confidence": 0.9531306028366089, "cells": [{"id": 17, "text": "-", "bbox": {"l": 152.03979, "t": 230.50616000000002, "r": 157.61142, "b": 239.71918000000005, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Any other user profile cannot see any rows at all.", "bbox": {"l": 165.59933, "t": 230.50616000000002, "r": 381.32697, "b": 239.71918000000005, "coord_origin": "TOPLEFT"}}]}, "text": "-Any other user profile cannot see any rows at all."}, {"label": "text", "id": 6, "page_no": 71, "cluster": {"id": 6, "label": "text", "bbox": {"l": 150.8797149658203, "t": 246.4891815185547, "r": 314.76926, "b": 256.9587707519531, "coord_origin": "TOPLEFT"}, "confidence": 0.8528881072998047, "cells": [{"id": 19, "text": "Select the ", "bbox": {"l": 151.20016, "t": 247.48595999999998, "r": 198.41156, "b": 256.69897000000003, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Enabled", "bbox": {"l": 198.42053, "t": 247.48595999999998, "r": 237.21375, "b": 256.69897000000003, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": " option. Click ", "bbox": {"l": 237.18086000000002, "t": 247.48595999999998, "r": 297.04846, "b": 256.69897000000003, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "OK", "bbox": {"l": 297.00061, "t": 247.48595999999998, "r": 311.92267, "b": 256.69897000000003, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": ".", "bbox": {"l": 312.00037, "t": 247.48595999999998, "r": 314.76926, "b": 256.69897000000003, "coord_origin": "TOPLEFT"}}]}, "text": "Select the Enabled option. Click OK ."}, {"label": "caption", "id": 7, "page_no": 71, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 64.3364486694336, "t": 584.8099365234375, "r": 305.99822998046875, "b": 594.063, "coord_origin": "TOPLEFT"}, "confidence": 0.9497343897819519, "cells": [{"id": 24, "text": "Figure 4-30 New row permissions on the ACCOUNTS table", "bbox": {"l": 64.800003, "t": 585.7379900000001, "r": 305.46814, "b": 594.063, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-30 New row permissions on the ACCOUNTS table"}, {"label": "picture", "id": 8, "page_no": 71, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 63.957679748535156, "t": 270.48822021484375, "r": 540.6087646484375, "b": 582.9116821289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9854897260665894, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 71, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.20513916015625, "t": 70.595458984375, "r": 543.83636, "b": 117.18975830078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9810321927070618, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.16809, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Define the row permissions for the ACCOUNTS table. The New Row Permission window ", "bbox": {"l": 147.95744, "t": 71.50867000000005, "r": 543.83636, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "opens, as shown in Figure 4-30. Enter the information regarding the row permissions on ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 542.03442, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "the ACCOUNTS table. This row permission defines what is established in the following ", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 535.38037, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "policy:", "bbox": {"l": 151.20016, "t": 107.50811999999996, "r": 179.53438, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "3. Define the row permissions for the ACCOUNTS table. The New Row Permission window opens, as shown in Figure 4-30. Enter the information regarding the row permissions on the ACCOUNTS table. This row permission defines what is established in the following policy:"}, {"label": "list_item", "id": 3, "page_no": 71, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 151.44004821777344, "t": 123.32445526123047, "r": 539.45398, "b": 145.70074, "coord_origin": "TOPLEFT"}, "confidence": 0.9677587151527405, "cells": [{"id": 7, "text": "-", "bbox": {"l": 152.03979, "t": 124.48792000000003, "r": 157.61043, "b": 133.70092999999997, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "User profiles that belong to DBE, ADMIN and TELLER group profiles can see all the ", "bbox": {"l": 165.59935, "t": 124.48792000000003, "r": 539.45398, "b": 133.70092999999997, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "rows.", "bbox": {"l": 165.59933, "t": 136.48773000000006, "r": 189.17169, "b": 145.70074, "coord_origin": "TOPLEFT"}}]}, "text": "-User profiles that belong to DBE, ADMIN and TELLER group profiles can see all the rows."}, {"label": "list_item", "id": 4, "page_no": 71, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 151.2493438720703, "t": 152.3936767578125, "r": 537.75769, "b": 222.73937999999998, "coord_origin": "TOPLEFT"}, "confidence": 0.9846922159194946, "cells": [{"id": 10, "text": "-", "bbox": {"l": 152.03979, "t": 153.52728000000002, "r": 157.61043, "b": 162.74030000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER ", "bbox": {"l": 165.59935, "t": 153.52728000000002, "r": 534.36139, "b": 162.74030000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "user) can see only the rows that match their customer login ID. The login ID value ", "bbox": {"l": 165.59933, "t": 165.52710000000002, "r": 527.79968, "b": 174.74010999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "representing the online banking user is passed from the web application to the ", "bbox": {"l": 165.59933, "t": 177.52692000000002, "r": 513.83081, "b": 186.73992999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "database by using the global variable CUSTOMER_LOGIN_ID. The permission rule ", "bbox": {"l": 165.59933, "t": 189.52673000000004, "r": 537.75769, "b": 198.73974999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "uses a subquery to check whether the global variable matches the ", "bbox": {"l": 165.59933, "t": 201.52655000000004, "r": 460.90145999999993, "b": 210.73955999999998, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "CUSTOMER_LOGIN_ID column value in the CUSTOMERS table.", "bbox": {"l": 165.59933, "t": 213.52637000000004, "r": 456.26398, "b": 222.73937999999998, "coord_origin": "TOPLEFT"}}]}, "text": "-User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER user) can see only the rows that match their customer login ID. The login ID value representing the online banking user is passed from the web application to the database by using the global variable CUSTOMER_LOGIN_ID. The permission rule uses a subquery to check whether the global variable matches the CUSTOMER_LOGIN_ID column value in the CUSTOMERS table."}, {"label": "list_item", "id": 5, "page_no": 71, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 151.43359375, "t": 229.4423370361328, "r": 381.32697, "b": 239.7835235595703, "coord_origin": "TOPLEFT"}, "confidence": 0.9531306028366089, "cells": [{"id": 17, "text": "-", "bbox": {"l": 152.03979, "t": 230.50616000000002, "r": 157.61142, "b": 239.71918000000005, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Any other user profile cannot see any rows at all.", "bbox": {"l": 165.59933, "t": 230.50616000000002, "r": 381.32697, "b": 239.71918000000005, "coord_origin": "TOPLEFT"}}]}, "text": "-Any other user profile cannot see any rows at all."}, {"label": "text", "id": 6, "page_no": 71, "cluster": {"id": 6, "label": "text", "bbox": {"l": 150.8797149658203, "t": 246.4891815185547, "r": 314.76926, "b": 256.9587707519531, "coord_origin": "TOPLEFT"}, "confidence": 0.8528881072998047, "cells": [{"id": 19, "text": "Select the ", "bbox": {"l": 151.20016, "t": 247.48595999999998, "r": 198.41156, "b": 256.69897000000003, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Enabled", "bbox": {"l": 198.42053, "t": 247.48595999999998, "r": 237.21375, "b": 256.69897000000003, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": " option. Click ", "bbox": {"l": 237.18086000000002, "t": 247.48595999999998, "r": 297.04846, "b": 256.69897000000003, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "OK", "bbox": {"l": 297.00061, "t": 247.48595999999998, "r": 311.92267, "b": 256.69897000000003, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": ".", "bbox": {"l": 312.00037, "t": 247.48595999999998, "r": 314.76926, "b": 256.69897000000003, "coord_origin": "TOPLEFT"}}]}, "text": "Select the Enabled option. Click OK ."}, {"label": "caption", "id": 7, "page_no": 71, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 64.3364486694336, "t": 584.8099365234375, "r": 305.99822998046875, "b": 594.063, "coord_origin": "TOPLEFT"}, "confidence": 0.9497343897819519, "cells": [{"id": 24, "text": "Figure 4-30 New row permissions on the ACCOUNTS table", "bbox": {"l": 64.800003, "t": 585.7379900000001, "r": 305.46814, "b": 594.063, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-30 New row permissions on the ACCOUNTS table"}, {"label": "picture", "id": 8, "page_no": 71, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 63.957679748535156, "t": 270.48822021484375, "r": 540.6087646484375, "b": 582.9116821289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9854897260665894, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 71, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.20973205566406, "t": 754.2777099609375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9139277338981628, "cells": [{"id": 0, "text": "56 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "56"}, {"label": "page_footer", "id": 1, "page_no": 71, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.28527069091797, "t": 754.64208984375, "r": 334.42142, "b": 763.944091796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9527794718742371, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 72, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "57", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "4.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.17957, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Define the row permissions on the TRANSACTIONS table. The New Row Permission ", "bbox": {"l": 147.9729, "t": 71.50903000000005, "r": 529.90491, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "window opens, as shown in Figure 4-31. Enter the information regarding the row ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 507.79965, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "permissions on the TRANSACTIONS table. This row permission defines what is ", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 506.39526, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "established in the following policy:", "bbox": {"l": 151.19974, "t": 107.50847999999996, "r": 301.1127, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "-", "bbox": {"l": 152.03937, "t": 124.48828000000003, "r": 157.60899, "b": 133.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "User profiles that belong to DBE, ADMIN, and TELLER group profiles can see all of the ", "bbox": {"l": 165.59891, "t": 124.48828000000003, "r": 547.22925, "b": 133.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "rows.", "bbox": {"l": 165.59891, "t": 136.48810000000003, "r": 189.17126, "b": 145.70110999999997, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "-", "bbox": {"l": 152.03937, "t": 153.52765, "r": 157.61, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER ", "bbox": {"l": 165.59892, "t": 153.52765, "r": 534.40277, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "user) can see only the rows that match their customer login ID. The login ID value ", "bbox": {"l": 165.59891, "t": 165.52747, "r": 527.79926, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "representing the online banking user is passed from the web application to the ", "bbox": {"l": 165.59891, "t": 177.52728000000002, "r": 513.83038, "b": 186.74030000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "database by using the global variable CUSTOMER_LOGIN_ID. The permission rule ", "bbox": {"l": 165.59891, "t": 189.52710000000002, "r": 537.78314, "b": 198.74010999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "uses a subquery to check whether the global variable matches the ", "bbox": {"l": 165.59891, "t": 201.52692000000002, "r": 460.90103, "b": 210.73992999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "CUSTOMER_LOGIN_ID column value in the CUSTOMERS table.", "bbox": {"l": 165.59891, "t": 213.52673000000004, "r": 456.26354999999995, "b": 222.73974999999996, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "-", "bbox": {"l": 152.03937, "t": 306.52628, "r": 157.61099, "b": 315.73926, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Any other user profile cannot see any rows at all.", "bbox": {"l": 165.59891, "t": 306.52628, "r": 381.32654, "b": 315.73926, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Select the ", "bbox": {"l": 151.19974, "t": 323.50607, "r": 198.41113, "b": 332.71906, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Enabled", "bbox": {"l": 198.4201, "t": 323.50607, "r": 237.21332, "b": 332.71906, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": " option. Click ", "bbox": {"l": 237.18044, "t": 323.50607, "r": 297.04803, "b": 332.71906, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "OK", "bbox": {"l": 297.00018, "t": 323.50607, "r": 311.92224, "b": 332.71906, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": ".", "bbox": {"l": 311.99994, "t": 323.50607, "r": 314.76883, "b": 332.71906, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Figure 4-31 New row permissions on the TRANSACTIONS table", "bbox": {"l": 64.800003, "t": 714.318001, "r": 325.42834, "b": 722.642998, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Note:", "bbox": {"l": 171.60001, "t": 241.48870999999997, "r": 197.13246, "b": 250.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": " You must join back to ACCOUNTS and then to CUSTOMERS by using a ", "bbox": {"l": 197.16035, "t": 241.48870999999997, "r": 522.27563, "b": 250.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "subquery to check whether the global variable matches CUSTOMER_LOGIN_ID. ", "bbox": {"l": 171.60001, "t": 253.48852999999997, "r": 531.92487, "b": 262.70154, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Also, if the row permission or column mask rule text references another table with ", "bbox": {"l": 171.60001, "t": 265.48834, "r": 533.39197, "b": 274.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "RCAC defined, the RCAC for the referenced table is ignored.", "bbox": {"l": 171.60001, "t": 277.48816, "r": 439.61749, "b": 286.70117, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 214.22891235351562, "t": 754.7304077148438, "r": 523.59357, "b": 763.9957275390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9545765519142151, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.5846557617188, "t": 754.2442016601562, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9055094718933105, "cells": [{"id": 1, "text": "57", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 135.74258422851562, "t": 70.44811248779297, "r": 529.90491, "b": 116.96112823486328, "coord_origin": "TOPLEFT"}, "confidence": 0.9810266494750977, "cells": [{"id": 2, "text": "4.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.17957, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Define the row permissions on the TRANSACTIONS table. The New Row Permission ", "bbox": {"l": 147.9729, "t": 71.50903000000005, "r": 529.90491, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "window opens, as shown in Figure 4-31. Enter the information regarding the row ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 507.79965, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "permissions on the TRANSACTIONS table. This row permission defines what is ", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 506.39526, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "established in the following policy:", "bbox": {"l": 151.19974, "t": 107.50847999999996, "r": 301.1127, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "list_item", "bbox": {"l": 151.45989990234375, "t": 123.25712585449219, "r": 547.22925, "b": 145.70110999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9677688479423523, "cells": [{"id": 7, "text": "-", "bbox": {"l": 152.03937, "t": 124.48828000000003, "r": 157.60899, "b": 133.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "User profiles that belong to DBE, ADMIN, and TELLER group profiles can see all of the ", "bbox": {"l": 165.59891, "t": 124.48828000000003, "r": 547.22925, "b": 133.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "rows.", "bbox": {"l": 165.59891, "t": 136.48810000000003, "r": 189.17126, "b": 145.70110999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 151.29940795898438, "t": 152.36669921875, "r": 537.78314, "b": 222.73974999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.983658492565155, "cells": [{"id": 10, "text": "-", "bbox": {"l": 152.03937, "t": 153.52765, "r": 157.61, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER ", "bbox": {"l": 165.59892, "t": 153.52765, "r": 534.40277, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "user) can see only the rows that match their customer login ID. The login ID value ", "bbox": {"l": 165.59891, "t": 165.52747, "r": 527.79926, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "representing the online banking user is passed from the web application to the ", "bbox": {"l": 165.59891, "t": 177.52728000000002, "r": 513.83038, "b": 186.74030000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "database by using the global variable CUSTOMER_LOGIN_ID. The permission rule ", "bbox": {"l": 165.59891, "t": 189.52710000000002, "r": 537.78314, "b": 198.74010999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "uses a subquery to check whether the global variable matches the ", "bbox": {"l": 165.59891, "t": 201.52692000000002, "r": 460.90103, "b": 210.73992999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "CUSTOMER_LOGIN_ID column value in the CUSTOMERS table.", "bbox": {"l": 165.59891, "t": 213.52673000000004, "r": 456.26354999999995, "b": 222.73974999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 151.38229370117188, "t": 306.10906982421875, "r": 381.32654, "b": 316.44915771484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9394587874412537, "cells": [{"id": 17, "text": "-", "bbox": {"l": 152.03937, "t": 306.52628, "r": 157.61099, "b": 315.73926, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Any other user profile cannot see any rows at all.", "bbox": {"l": 165.59891, "t": 306.52628, "r": 381.32654, "b": 315.73926, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 150.89027404785156, "t": 322.4906311035156, "r": 314.76883, "b": 333.08697509765625, "coord_origin": "TOPLEFT"}, "confidence": 0.7668123245239258, "cells": [{"id": 19, "text": "Select the ", "bbox": {"l": 151.19974, "t": 323.50607, "r": 198.41113, "b": 332.71906, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Enabled", "bbox": {"l": 198.4201, "t": 323.50607, "r": 237.21332, "b": 332.71906, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": " option. Click ", "bbox": {"l": 237.18044, "t": 323.50607, "r": 297.04803, "b": 332.71906, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "OK", "bbox": {"l": 297.00018, "t": 323.50607, "r": 311.92224, "b": 332.71906, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": ".", "bbox": {"l": 311.99994, "t": 323.50607, "r": 314.76883, "b": 332.71906, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "caption", "bbox": {"l": 64.22490692138672, "t": 713.5319213867188, "r": 325.5702819824219, "b": 722.9600830078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9502029418945312, "cells": [{"id": 24, "text": "Figure 4-31 New row permissions on the TRANSACTIONS table", "bbox": {"l": 64.800003, "t": 714.318001, "r": 325.42834, "b": 722.642998, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 170.69351196289062, "t": 240.3377685546875, "r": 533.39197, "b": 286.7464904785156, "coord_origin": "TOPLEFT"}, "confidence": 0.9755160808563232, "cells": [{"id": 25, "text": "Note:", "bbox": {"l": 171.60001, "t": 241.48870999999997, "r": 197.13246, "b": 250.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": " You must join back to ACCOUNTS and then to CUSTOMERS by using a ", "bbox": {"l": 197.16035, "t": 241.48870999999997, "r": 522.27563, "b": 250.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "subquery to check whether the global variable matches CUSTOMER_LOGIN_ID. ", "bbox": {"l": 171.60001, "t": 253.48852999999997, "r": 531.92487, "b": 262.70154, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Also, if the row permission or column mask rule text references another table with ", "bbox": {"l": 171.60001, "t": 265.48834, "r": 533.39197, "b": 274.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "RCAC defined, the RCAC for the referenced table is ignored.", "bbox": {"l": 171.60001, "t": 277.48816, "r": 439.61749, "b": 286.70117, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "picture", "bbox": {"l": 63.73027801513672, "t": 346.8805236816406, "r": 535.9136352539062, "b": 711.4491577148438, "coord_origin": "TOPLEFT"}, "confidence": 0.9856986403465271, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 72, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.22891235351562, "t": 754.7304077148438, "r": 523.59357, "b": 763.9957275390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9545765519142151, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 72, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.5846557617188, "t": 754.2442016601562, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9055094718933105, "cells": [{"id": 1, "text": "57", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "57"}, {"label": "list_item", "id": 2, "page_no": 72, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.74258422851562, "t": 70.44811248779297, "r": 529.90491, "b": 116.96112823486328, "coord_origin": "TOPLEFT"}, "confidence": 0.9810266494750977, "cells": [{"id": 2, "text": "4.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.17957, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Define the row permissions on the TRANSACTIONS table. The New Row Permission ", "bbox": {"l": 147.9729, "t": 71.50903000000005, "r": 529.90491, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "window opens, as shown in Figure 4-31. Enter the information regarding the row ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 507.79965, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "permissions on the TRANSACTIONS table. This row permission defines what is ", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 506.39526, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "established in the following policy:", "bbox": {"l": 151.19974, "t": 107.50847999999996, "r": 301.1127, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "4. Define the row permissions on the TRANSACTIONS table. The New Row Permission window opens, as shown in Figure 4-31. Enter the information regarding the row permissions on the TRANSACTIONS table. This row permission defines what is established in the following policy:"}, {"label": "list_item", "id": 3, "page_no": 72, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 151.45989990234375, "t": 123.25712585449219, "r": 547.22925, "b": 145.70110999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9677688479423523, "cells": [{"id": 7, "text": "-", "bbox": {"l": 152.03937, "t": 124.48828000000003, "r": 157.60899, "b": 133.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "User profiles that belong to DBE, ADMIN, and TELLER group profiles can see all of the ", "bbox": {"l": 165.59891, "t": 124.48828000000003, "r": 547.22925, "b": 133.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "rows.", "bbox": {"l": 165.59891, "t": 136.48810000000003, "r": 189.17126, "b": 145.70110999999997, "coord_origin": "TOPLEFT"}}]}, "text": "-User profiles that belong to DBE, ADMIN, and TELLER group profiles can see all of the rows."}, {"label": "list_item", "id": 4, "page_no": 72, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 151.29940795898438, "t": 152.36669921875, "r": 537.78314, "b": 222.73974999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.983658492565155, "cells": [{"id": 10, "text": "-", "bbox": {"l": 152.03937, "t": 153.52765, "r": 157.61, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER ", "bbox": {"l": 165.59892, "t": 153.52765, "r": 534.40277, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "user) can see only the rows that match their customer login ID. The login ID value ", "bbox": {"l": 165.59891, "t": 165.52747, "r": 527.79926, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "representing the online banking user is passed from the web application to the ", "bbox": {"l": 165.59891, "t": 177.52728000000002, "r": 513.83038, "b": 186.74030000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "database by using the global variable CUSTOMER_LOGIN_ID. The permission rule ", "bbox": {"l": 165.59891, "t": 189.52710000000002, "r": 537.78314, "b": 198.74010999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "uses a subquery to check whether the global variable matches the ", "bbox": {"l": 165.59891, "t": 201.52692000000002, "r": 460.90103, "b": 210.73992999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "CUSTOMER_LOGIN_ID column value in the CUSTOMERS table.", "bbox": {"l": 165.59891, "t": 213.52673000000004, "r": 456.26354999999995, "b": 222.73974999999996, "coord_origin": "TOPLEFT"}}]}, "text": "-User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER user) can see only the rows that match their customer login ID. The login ID value representing the online banking user is passed from the web application to the database by using the global variable CUSTOMER_LOGIN_ID. The permission rule uses a subquery to check whether the global variable matches the CUSTOMER_LOGIN_ID column value in the CUSTOMERS table."}, {"label": "list_item", "id": 5, "page_no": 72, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 151.38229370117188, "t": 306.10906982421875, "r": 381.32654, "b": 316.44915771484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9394587874412537, "cells": [{"id": 17, "text": "-", "bbox": {"l": 152.03937, "t": 306.52628, "r": 157.61099, "b": 315.73926, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Any other user profile cannot see any rows at all.", "bbox": {"l": 165.59891, "t": 306.52628, "r": 381.32654, "b": 315.73926, "coord_origin": "TOPLEFT"}}]}, "text": "-Any other user profile cannot see any rows at all."}, {"label": "text", "id": 6, "page_no": 72, "cluster": {"id": 6, "label": "text", "bbox": {"l": 150.89027404785156, "t": 322.4906311035156, "r": 314.76883, "b": 333.08697509765625, "coord_origin": "TOPLEFT"}, "confidence": 0.7668123245239258, "cells": [{"id": 19, "text": "Select the ", "bbox": {"l": 151.19974, "t": 323.50607, "r": 198.41113, "b": 332.71906, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Enabled", "bbox": {"l": 198.4201, "t": 323.50607, "r": 237.21332, "b": 332.71906, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": " option. Click ", "bbox": {"l": 237.18044, "t": 323.50607, "r": 297.04803, "b": 332.71906, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "OK", "bbox": {"l": 297.00018, "t": 323.50607, "r": 311.92224, "b": 332.71906, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": ".", "bbox": {"l": 311.99994, "t": 323.50607, "r": 314.76883, "b": 332.71906, "coord_origin": "TOPLEFT"}}]}, "text": "Select the Enabled option. Click OK ."}, {"label": "caption", "id": 7, "page_no": 72, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 64.22490692138672, "t": 713.5319213867188, "r": 325.5702819824219, "b": 722.9600830078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9502029418945312, "cells": [{"id": 24, "text": "Figure 4-31 New row permissions on the TRANSACTIONS table", "bbox": {"l": 64.800003, "t": 714.318001, "r": 325.42834, "b": 722.642998, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-31 New row permissions on the TRANSACTIONS table"}, {"label": "text", "id": 8, "page_no": 72, "cluster": {"id": 8, "label": "text", "bbox": {"l": 170.69351196289062, "t": 240.3377685546875, "r": 533.39197, "b": 286.7464904785156, "coord_origin": "TOPLEFT"}, "confidence": 0.9755160808563232, "cells": [{"id": 25, "text": "Note:", "bbox": {"l": 171.60001, "t": 241.48870999999997, "r": 197.13246, "b": 250.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": " You must join back to ACCOUNTS and then to CUSTOMERS by using a ", "bbox": {"l": 197.16035, "t": 241.48870999999997, "r": 522.27563, "b": 250.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "subquery to check whether the global variable matches CUSTOMER_LOGIN_ID. ", "bbox": {"l": 171.60001, "t": 253.48852999999997, "r": 531.92487, "b": 262.70154, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Also, if the row permission or column mask rule text references another table with ", "bbox": {"l": 171.60001, "t": 265.48834, "r": 533.39197, "b": 274.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "RCAC defined, the RCAC for the referenced table is ignored.", "bbox": {"l": 171.60001, "t": 277.48816, "r": 439.61749, "b": 286.70117, "coord_origin": "TOPLEFT"}}]}, "text": "Note: You must join back to ACCOUNTS and then to CUSTOMERS by using a subquery to check whether the global variable matches CUSTOMER_LOGIN_ID. Also, if the row permission or column mask rule text references another table with RCAC defined, the RCAC for the referenced table is ignored."}, {"label": "picture", "id": 9, "page_no": 72, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 63.73027801513672, "t": 346.8805236816406, "r": 535.9136352539062, "b": 711.4491577148438, "coord_origin": "TOPLEFT"}, "confidence": 0.9856986403465271, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 72, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.74258422851562, "t": 70.44811248779297, "r": 529.90491, "b": 116.96112823486328, "coord_origin": "TOPLEFT"}, "confidence": 0.9810266494750977, "cells": [{"id": 2, "text": "4.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.17957, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Define the row permissions on the TRANSACTIONS table. The New Row Permission ", "bbox": {"l": 147.9729, "t": 71.50903000000005, "r": 529.90491, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "window opens, as shown in Figure 4-31. Enter the information regarding the row ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 507.79965, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "permissions on the TRANSACTIONS table. This row permission defines what is ", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 506.39526, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "established in the following policy:", "bbox": {"l": 151.19974, "t": 107.50847999999996, "r": 301.1127, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "4. Define the row permissions on the TRANSACTIONS table. The New Row Permission window opens, as shown in Figure 4-31. Enter the information regarding the row permissions on the TRANSACTIONS table. This row permission defines what is established in the following policy:"}, {"label": "list_item", "id": 3, "page_no": 72, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 151.45989990234375, "t": 123.25712585449219, "r": 547.22925, "b": 145.70110999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9677688479423523, "cells": [{"id": 7, "text": "-", "bbox": {"l": 152.03937, "t": 124.48828000000003, "r": 157.60899, "b": 133.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "User profiles that belong to DBE, ADMIN, and TELLER group profiles can see all of the ", "bbox": {"l": 165.59891, "t": 124.48828000000003, "r": 547.22925, "b": 133.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "rows.", "bbox": {"l": 165.59891, "t": 136.48810000000003, "r": 189.17126, "b": 145.70110999999997, "coord_origin": "TOPLEFT"}}]}, "text": "-User profiles that belong to DBE, ADMIN, and TELLER group profiles can see all of the rows."}, {"label": "list_item", "id": 4, "page_no": 72, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 151.29940795898438, "t": 152.36669921875, "r": 537.78314, "b": 222.73974999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.983658492565155, "cells": [{"id": 10, "text": "-", "bbox": {"l": 152.03937, "t": 153.52765, "r": 157.61, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER ", "bbox": {"l": 165.59892, "t": 153.52765, "r": 534.40277, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "user) can see only the rows that match their customer login ID. The login ID value ", "bbox": {"l": 165.59891, "t": 165.52747, "r": 527.79926, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "representing the online banking user is passed from the web application to the ", "bbox": {"l": 165.59891, "t": 177.52728000000002, "r": 513.83038, "b": 186.74030000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "database by using the global variable CUSTOMER_LOGIN_ID. The permission rule ", "bbox": {"l": 165.59891, "t": 189.52710000000002, "r": 537.78314, "b": 198.74010999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "uses a subquery to check whether the global variable matches the ", "bbox": {"l": 165.59891, "t": 201.52692000000002, "r": 460.90103, "b": 210.73992999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "CUSTOMER_LOGIN_ID column value in the CUSTOMERS table.", "bbox": {"l": 165.59891, "t": 213.52673000000004, "r": 456.26354999999995, "b": 222.73974999999996, "coord_origin": "TOPLEFT"}}]}, "text": "-User profiles that belong to the CUSTOMERS group profile (that is, the WEBUSER user) can see only the rows that match their customer login ID. The login ID value representing the online banking user is passed from the web application to the database by using the global variable CUSTOMER_LOGIN_ID. The permission rule uses a subquery to check whether the global variable matches the CUSTOMER_LOGIN_ID column value in the CUSTOMERS table."}, {"label": "list_item", "id": 5, "page_no": 72, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 151.38229370117188, "t": 306.10906982421875, "r": 381.32654, "b": 316.44915771484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9394587874412537, "cells": [{"id": 17, "text": "-", "bbox": {"l": 152.03937, "t": 306.52628, "r": 157.61099, "b": 315.73926, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Any other user profile cannot see any rows at all.", "bbox": {"l": 165.59891, "t": 306.52628, "r": 381.32654, "b": 315.73926, "coord_origin": "TOPLEFT"}}]}, "text": "-Any other user profile cannot see any rows at all."}, {"label": "text", "id": 6, "page_no": 72, "cluster": {"id": 6, "label": "text", "bbox": {"l": 150.89027404785156, "t": 322.4906311035156, "r": 314.76883, "b": 333.08697509765625, "coord_origin": "TOPLEFT"}, "confidence": 0.7668123245239258, "cells": [{"id": 19, "text": "Select the ", "bbox": {"l": 151.19974, "t": 323.50607, "r": 198.41113, "b": 332.71906, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Enabled", "bbox": {"l": 198.4201, "t": 323.50607, "r": 237.21332, "b": 332.71906, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": " option. Click ", "bbox": {"l": 237.18044, "t": 323.50607, "r": 297.04803, "b": 332.71906, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "OK", "bbox": {"l": 297.00018, "t": 323.50607, "r": 311.92224, "b": 332.71906, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": ".", "bbox": {"l": 311.99994, "t": 323.50607, "r": 314.76883, "b": 332.71906, "coord_origin": "TOPLEFT"}}]}, "text": "Select the Enabled option. Click OK ."}, {"label": "caption", "id": 7, "page_no": 72, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 64.22490692138672, "t": 713.5319213867188, "r": 325.5702819824219, "b": 722.9600830078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9502029418945312, "cells": [{"id": 24, "text": "Figure 4-31 New row permissions on the TRANSACTIONS table", "bbox": {"l": 64.800003, "t": 714.318001, "r": 325.42834, "b": 722.642998, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-31 New row permissions on the TRANSACTIONS table"}, {"label": "text", "id": 8, "page_no": 72, "cluster": {"id": 8, "label": "text", "bbox": {"l": 170.69351196289062, "t": 240.3377685546875, "r": 533.39197, "b": 286.7464904785156, "coord_origin": "TOPLEFT"}, "confidence": 0.9755160808563232, "cells": [{"id": 25, "text": "Note:", "bbox": {"l": 171.60001, "t": 241.48870999999997, "r": 197.13246, "b": 250.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": " You must join back to ACCOUNTS and then to CUSTOMERS by using a ", "bbox": {"l": 197.16035, "t": 241.48870999999997, "r": 522.27563, "b": 250.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "subquery to check whether the global variable matches CUSTOMER_LOGIN_ID. ", "bbox": {"l": 171.60001, "t": 253.48852999999997, "r": 531.92487, "b": 262.70154, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Also, if the row permission or column mask rule text references another table with ", "bbox": {"l": 171.60001, "t": 265.48834, "r": 533.39197, "b": 274.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "RCAC defined, the RCAC for the referenced table is ignored.", "bbox": {"l": 171.60001, "t": 277.48816, "r": 439.61749, "b": 286.70117, "coord_origin": "TOPLEFT"}}]}, "text": "Note: You must join back to ACCOUNTS and then to CUSTOMERS by using a subquery to check whether the global variable matches CUSTOMER_LOGIN_ID. Also, if the row permission or column mask rule text references another table with RCAC defined, the RCAC for the referenced table is ignored."}, {"label": "picture", "id": 9, "page_no": 72, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 63.73027801513672, "t": 346.8805236816406, "r": 535.9136352539062, "b": 711.4491577148438, "coord_origin": "TOPLEFT"}, "confidence": 0.9856986403465271, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 72, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.22891235351562, "t": 754.7304077148438, "r": 523.59357, "b": 763.9957275390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9545765519142151, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 72, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.5846557617188, "t": 754.2442016601562, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9055094718933105, "cells": [{"id": 1, "text": "57", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "57"}]}}, {"page_no": 73, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "58 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "5.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.15915, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "To verify that the row permissions are enabled, from System i Navigator, click ", "bbox": {"l": 147.94556, "t": 71.50867000000005, "r": 493.84805000000006, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Row ", "bbox": {"l": 493.80023, "t": 71.50867000000005, "r": 517.62854, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Permissions", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 210.36757, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ", as shown in Figure 4-32. The three row permissions are created and ", "bbox": {"l": 210.1803, "t": 83.50847999999996, "r": 521.19122, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "enabled.", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 189.4117, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Figure 4-32 List of row permissions on BANK_SCHEMA", "bbox": {"l": 64.800003, "t": 275.53801999999996, "r": 292.52338, "b": 283.86301, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "4.3.6", "bbox": {"l": 64.800003, "t": 304.37473, "r": 94.073502, "b": 316.36269999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Defining and creating column masks", "bbox": {"l": 97.732674, "t": 304.37473, "r": 327.40588, "b": 316.36269999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "This section defines the masks on the columns. Complete the following steps:", "bbox": {"l": 136.8, "t": 330.52872, "r": 479.42001000000005, "b": 339.7417, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "1.", "bbox": {"l": 136.79999, "t": 347.50851, "r": 145.18799, "b": 356.7215, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "From the main navigation pane of System i Navigator, click ", "bbox": {"l": 147.98398, "t": 347.50851, "r": 412.92996, "b": 356.7215, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Schemas", "bbox": {"l": 412.92007, "t": 347.50851, "r": 456.69629000000003, "b": 356.7215, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "\uf0ae", "bbox": {"l": 459.48007, "t": 344.64999, "r": 469.31058, "b": 356.84103, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "BANK_SCHEMA", "bbox": {"l": 151.20013, "t": 359.50833, "r": 228.63610999999997, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ", right-click ", "bbox": {"l": 228.60028, "t": 359.50833, "r": 279.04767, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Column Masks", "bbox": {"l": 279.12039, "t": 359.50833, "r": 349.62723, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ", and select", "bbox": {"l": 349.50073, "t": 359.50833, "r": 400.5477, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": " New", "bbox": {"l": 400.62042, "t": 359.50833, "r": 423.72662, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "\uf0ae", "bbox": {"l": 426.54031, "t": 356.64980999999995, "r": 436.37082, "b": 368.84085, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Column Mask", "bbox": {"l": 439.20047000000005, "t": 359.50833, "r": 504.10678, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": ", as ", "bbox": {"l": 504.18050999999997, "t": 359.50833, "r": 523.07068, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "shown in Figure 4-33.", "bbox": {"l": 151.2001, "t": 371.50815, "r": 247.20354, "b": 380.72113, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Figure 4-33 Creating a column mask", "bbox": {"l": 136.8, "t": 571.87799, "r": 287.181, "b": 580.203, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.232666015625, "t": 754.386474609375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9160420298576355, "cells": [{"id": 0, "text": "58 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.35807037353516, "t": 754.7005615234375, "r": 334.42142, "b": 763.9410400390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9541155695915222, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 136.36386108398438, "t": 70.54908752441406, "r": 521.19122, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9746115207672119, "cells": [{"id": 2, "text": "5.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.15915, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "To verify that the row permissions are enabled, from System i Navigator, click ", "bbox": {"l": 147.94556, "t": 71.50867000000005, "r": 493.84805000000006, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Row ", "bbox": {"l": 493.80023, "t": 71.50867000000005, "r": 517.62854, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Permissions", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 210.36757, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ", as shown in Figure 4-32. The three row permissions are created and ", "bbox": {"l": 210.1803, "t": 83.50847999999996, "r": 521.19122, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "enabled.", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 189.4117, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.27239227294922, "t": 274.6299133300781, "r": 292.91876220703125, "b": 283.9879150390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9361065626144409, "cells": [{"id": 8, "text": "Figure 4-32 List of row permissions on BANK_SCHEMA", "bbox": {"l": 64.800003, "t": 275.53801999999996, "r": 292.52338, "b": 283.86301, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 64.21476745605469, "t": 303.8726806640625, "r": 327.40588, "b": 317.2160339355469, "coord_origin": "TOPLEFT"}, "confidence": 0.9644060134887695, "cells": [{"id": 9, "text": "4.3.6", "bbox": {"l": 64.800003, "t": 304.37473, "r": 94.073502, "b": 316.36269999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Defining and creating column masks", "bbox": {"l": 97.732674, "t": 304.37473, "r": 327.40588, "b": 316.36269999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.03562927246094, "t": 329.9996337890625, "r": 479.42001000000005, "b": 340.2921142578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9330124855041504, "cells": [{"id": 11, "text": "This section defines the masks on the columns. Complete the following steps:", "bbox": {"l": 136.8, "t": 330.52872, "r": 479.42001000000005, "b": 339.7417, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 136.79999, "t": 344.64999, "r": 523.07068, "b": 381.08123779296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9756982922554016, "cells": [{"id": 12, "text": "1.", "bbox": {"l": 136.79999, "t": 347.50851, "r": 145.18799, "b": 356.7215, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "From the main navigation pane of System i Navigator, click ", "bbox": {"l": 147.98398, "t": 347.50851, "r": 412.92996, "b": 356.7215, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Schemas", "bbox": {"l": 412.92007, "t": 347.50851, "r": 456.69629000000003, "b": 356.7215, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "\uf0ae", "bbox": {"l": 459.48007, "t": 344.64999, "r": 469.31058, "b": 356.84103, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "BANK_SCHEMA", "bbox": {"l": 151.20013, "t": 359.50833, "r": 228.63610999999997, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ", right-click ", "bbox": {"l": 228.60028, "t": 359.50833, "r": 279.04767, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Column Masks", "bbox": {"l": 279.12039, "t": 359.50833, "r": 349.62723, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ", and select", "bbox": {"l": 349.50073, "t": 359.50833, "r": 400.5477, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": " New", "bbox": {"l": 400.62042, "t": 359.50833, "r": 423.72662, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "\uf0ae", "bbox": {"l": 426.54031, "t": 356.64980999999995, "r": 436.37082, "b": 368.84085, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Column Mask", "bbox": {"l": 439.20047000000005, "t": 359.50833, "r": 504.10678, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": ", as ", "bbox": {"l": 504.18050999999997, "t": 359.50833, "r": 523.07068, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "shown in Figure 4-33.", "bbox": {"l": 151.2001, "t": 371.50815, "r": 247.20354, "b": 380.72113, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "caption", "bbox": {"l": 136.1403350830078, "t": 571.737060546875, "r": 287.95941162109375, "b": 581.0671997070312, "coord_origin": "TOPLEFT"}, "confidence": 0.947037935256958, "cells": [{"id": 25, "text": "Figure 4-33 Creating a column mask", "bbox": {"l": 136.8, "t": 571.87799, "r": 287.181, "b": 580.203, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 136.1191864013672, "t": 395.1215515136719, "r": 456.9282531738281, "b": 568.6239013671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9855613112449646, "cells": []}, {"id": 9, "label": "picture", "bbox": {"l": 64.10432434082031, "t": 119.99431610107422, "r": 545.318603515625, "b": 271.414306640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9836570024490356, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 73, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.232666015625, "t": 754.386474609375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9160420298576355, "cells": [{"id": 0, "text": "58 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "58"}, {"label": "page_footer", "id": 1, "page_no": 73, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.35807037353516, "t": 754.7005615234375, "r": 334.42142, "b": 763.9410400390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9541155695915222, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "list_item", "id": 2, "page_no": 73, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.36386108398438, "t": 70.54908752441406, "r": 521.19122, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9746115207672119, "cells": [{"id": 2, "text": "5.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.15915, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "To verify that the row permissions are enabled, from System i Navigator, click ", "bbox": {"l": 147.94556, "t": 71.50867000000005, "r": 493.84805000000006, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Row ", "bbox": {"l": 493.80023, "t": 71.50867000000005, "r": 517.62854, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Permissions", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 210.36757, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ", as shown in Figure 4-32. The three row permissions are created and ", "bbox": {"l": 210.1803, "t": 83.50847999999996, "r": 521.19122, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "enabled.", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 189.4117, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}]}, "text": "5. To verify that the row permissions are enabled, from System i Navigator, click Row Permissions , as shown in Figure 4-32. The three row permissions are created and enabled."}, {"label": "caption", "id": 3, "page_no": 73, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.27239227294922, "t": 274.6299133300781, "r": 292.91876220703125, "b": 283.9879150390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9361065626144409, "cells": [{"id": 8, "text": "Figure 4-32 List of row permissions on BANK_SCHEMA", "bbox": {"l": 64.800003, "t": 275.53801999999996, "r": 292.52338, "b": 283.86301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-32 List of row permissions on BANK_SCHEMA"}, {"label": "section_header", "id": 4, "page_no": 73, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.21476745605469, "t": 303.8726806640625, "r": 327.40588, "b": 317.2160339355469, "coord_origin": "TOPLEFT"}, "confidence": 0.9644060134887695, "cells": [{"id": 9, "text": "4.3.6", "bbox": {"l": 64.800003, "t": 304.37473, "r": 94.073502, "b": 316.36269999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Defining and creating column masks", "bbox": {"l": 97.732674, "t": 304.37473, "r": 327.40588, "b": 316.36269999999996, "coord_origin": "TOPLEFT"}}]}, "text": "4.3.6 Defining and creating column masks"}, {"label": "text", "id": 5, "page_no": 73, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.03562927246094, "t": 329.9996337890625, "r": 479.42001000000005, "b": 340.2921142578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9330124855041504, "cells": [{"id": 11, "text": "This section defines the masks on the columns. Complete the following steps:", "bbox": {"l": 136.8, "t": 330.52872, "r": 479.42001000000005, "b": 339.7417, "coord_origin": "TOPLEFT"}}]}, "text": "This section defines the masks on the columns. Complete the following steps:"}, {"label": "list_item", "id": 6, "page_no": 73, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.79999, "t": 344.64999, "r": 523.07068, "b": 381.08123779296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9756982922554016, "cells": [{"id": 12, "text": "1.", "bbox": {"l": 136.79999, "t": 347.50851, "r": 145.18799, "b": 356.7215, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "From the main navigation pane of System i Navigator, click ", "bbox": {"l": 147.98398, "t": 347.50851, "r": 412.92996, "b": 356.7215, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Schemas", "bbox": {"l": 412.92007, "t": 347.50851, "r": 456.69629000000003, "b": 356.7215, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "\uf0ae", "bbox": {"l": 459.48007, "t": 344.64999, "r": 469.31058, "b": 356.84103, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "BANK_SCHEMA", "bbox": {"l": 151.20013, "t": 359.50833, "r": 228.63610999999997, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ", right-click ", "bbox": {"l": 228.60028, "t": 359.50833, "r": 279.04767, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Column Masks", "bbox": {"l": 279.12039, "t": 359.50833, "r": 349.62723, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ", and select", "bbox": {"l": 349.50073, "t": 359.50833, "r": 400.5477, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": " New", "bbox": {"l": 400.62042, "t": 359.50833, "r": 423.72662, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "\uf0ae", "bbox": {"l": 426.54031, "t": 356.64980999999995, "r": 436.37082, "b": 368.84085, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Column Mask", "bbox": {"l": 439.20047000000005, "t": 359.50833, "r": 504.10678, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": ", as ", "bbox": {"l": 504.18050999999997, "t": 359.50833, "r": 523.07068, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "shown in Figure 4-33.", "bbox": {"l": 151.2001, "t": 371.50815, "r": 247.20354, "b": 380.72113, "coord_origin": "TOPLEFT"}}]}, "text": "1. From the main navigation pane of System i Navigator, click Schemas \uf0ae BANK_SCHEMA , right-click Column Masks , and select New \uf0ae Column Mask , as shown in Figure 4-33."}, {"label": "caption", "id": 7, "page_no": 73, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 136.1403350830078, "t": 571.737060546875, "r": 287.95941162109375, "b": 581.0671997070312, "coord_origin": "TOPLEFT"}, "confidence": 0.947037935256958, "cells": [{"id": 25, "text": "Figure 4-33 Creating a column mask", "bbox": {"l": 136.8, "t": 571.87799, "r": 287.181, "b": 580.203, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-33 Creating a column mask"}, {"label": "picture", "id": 8, "page_no": 73, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 136.1191864013672, "t": 395.1215515136719, "r": 456.9282531738281, "b": 568.6239013671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9855613112449646, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 9, "page_no": 73, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 64.10432434082031, "t": 119.99431610107422, "r": 545.318603515625, "b": 271.414306640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9836570024490356, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 73, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.36386108398438, "t": 70.54908752441406, "r": 521.19122, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9746115207672119, "cells": [{"id": 2, "text": "5.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.15915, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "To verify that the row permissions are enabled, from System i Navigator, click ", "bbox": {"l": 147.94556, "t": 71.50867000000005, "r": 493.84805000000006, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Row ", "bbox": {"l": 493.80023, "t": 71.50867000000005, "r": 517.62854, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Permissions", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 210.36757, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ", as shown in Figure 4-32. The three row permissions are created and ", "bbox": {"l": 210.1803, "t": 83.50847999999996, "r": 521.19122, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "enabled.", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 189.4117, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}]}, "text": "5. To verify that the row permissions are enabled, from System i Navigator, click Row Permissions , as shown in Figure 4-32. The three row permissions are created and enabled."}, {"label": "caption", "id": 3, "page_no": 73, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.27239227294922, "t": 274.6299133300781, "r": 292.91876220703125, "b": 283.9879150390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9361065626144409, "cells": [{"id": 8, "text": "Figure 4-32 List of row permissions on BANK_SCHEMA", "bbox": {"l": 64.800003, "t": 275.53801999999996, "r": 292.52338, "b": 283.86301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-32 List of row permissions on BANK_SCHEMA"}, {"label": "section_header", "id": 4, "page_no": 73, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.21476745605469, "t": 303.8726806640625, "r": 327.40588, "b": 317.2160339355469, "coord_origin": "TOPLEFT"}, "confidence": 0.9644060134887695, "cells": [{"id": 9, "text": "4.3.6", "bbox": {"l": 64.800003, "t": 304.37473, "r": 94.073502, "b": 316.36269999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Defining and creating column masks", "bbox": {"l": 97.732674, "t": 304.37473, "r": 327.40588, "b": 316.36269999999996, "coord_origin": "TOPLEFT"}}]}, "text": "4.3.6 Defining and creating column masks"}, {"label": "text", "id": 5, "page_no": 73, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.03562927246094, "t": 329.9996337890625, "r": 479.42001000000005, "b": 340.2921142578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9330124855041504, "cells": [{"id": 11, "text": "This section defines the masks on the columns. Complete the following steps:", "bbox": {"l": 136.8, "t": 330.52872, "r": 479.42001000000005, "b": 339.7417, "coord_origin": "TOPLEFT"}}]}, "text": "This section defines the masks on the columns. Complete the following steps:"}, {"label": "list_item", "id": 6, "page_no": 73, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.79999, "t": 344.64999, "r": 523.07068, "b": 381.08123779296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9756982922554016, "cells": [{"id": 12, "text": "1.", "bbox": {"l": 136.79999, "t": 347.50851, "r": 145.18799, "b": 356.7215, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "From the main navigation pane of System i Navigator, click ", "bbox": {"l": 147.98398, "t": 347.50851, "r": 412.92996, "b": 356.7215, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Schemas", "bbox": {"l": 412.92007, "t": 347.50851, "r": 456.69629000000003, "b": 356.7215, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "\uf0ae", "bbox": {"l": 459.48007, "t": 344.64999, "r": 469.31058, "b": 356.84103, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "BANK_SCHEMA", "bbox": {"l": 151.20013, "t": 359.50833, "r": 228.63610999999997, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ", right-click ", "bbox": {"l": 228.60028, "t": 359.50833, "r": 279.04767, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Column Masks", "bbox": {"l": 279.12039, "t": 359.50833, "r": 349.62723, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ", and select", "bbox": {"l": 349.50073, "t": 359.50833, "r": 400.5477, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": " New", "bbox": {"l": 400.62042, "t": 359.50833, "r": 423.72662, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "\uf0ae", "bbox": {"l": 426.54031, "t": 356.64980999999995, "r": 436.37082, "b": 368.84085, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Column Mask", "bbox": {"l": 439.20047000000005, "t": 359.50833, "r": 504.10678, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": ", as ", "bbox": {"l": 504.18050999999997, "t": 359.50833, "r": 523.07068, "b": 368.72131, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "shown in Figure 4-33.", "bbox": {"l": 151.2001, "t": 371.50815, "r": 247.20354, "b": 380.72113, "coord_origin": "TOPLEFT"}}]}, "text": "1. From the main navigation pane of System i Navigator, click Schemas \uf0ae BANK_SCHEMA , right-click Column Masks , and select New \uf0ae Column Mask , as shown in Figure 4-33."}, {"label": "caption", "id": 7, "page_no": 73, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 136.1403350830078, "t": 571.737060546875, "r": 287.95941162109375, "b": 581.0671997070312, "coord_origin": "TOPLEFT"}, "confidence": 0.947037935256958, "cells": [{"id": 25, "text": "Figure 4-33 Creating a column mask", "bbox": {"l": 136.8, "t": 571.87799, "r": 287.181, "b": 580.203, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-33 Creating a column mask"}, {"label": "picture", "id": 8, "page_no": 73, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 136.1191864013672, "t": 395.1215515136719, "r": 456.9282531738281, "b": 568.6239013671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9855613112449646, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 9, "page_no": 73, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 64.10432434082031, "t": 119.99431610107422, "r": 545.318603515625, "b": 271.414306640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9836570024490356, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 73, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.232666015625, "t": 754.386474609375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9160420298576355, "cells": [{"id": 0, "text": "58 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "58"}, {"label": "page_footer", "id": 1, "page_no": 73, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.35807037353516, "t": 754.7005615234375, "r": 334.42142, "b": 763.9410400390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9541155695915222, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 74, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "59", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.17424, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "In the New Column Mask window, which is shown in Figure 4-34, enter the following ", "bbox": {"l": 147.96579, "t": 71.50903000000005, "r": 524.10217, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "information:", "bbox": {"l": 151.19876, "t": 83.50885000000017, "r": 203.38417, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "-", "bbox": {"l": 152.03839, "t": 100.48865, "r": 157.57317, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Select the CUSTOMERS table on which to create the column mask.", "bbox": {"l": 165.59793, "t": 100.48865, "r": 465.46960000000007, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "-", "bbox": {"l": 152.03839, "t": 112.48845999999992, "r": 157.57416, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Select the Column to mask; in this example, it is CUSTOMER_EMAIL.", "bbox": {"l": 165.59793, "t": 112.48845999999992, "r": 475.19052000000005, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "-", "bbox": {"l": 152.03839, "t": 124.48828000000003, "r": 157.61002, "b": 133.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Define the masking logic depending on the rules that you want to enforce. In this ", "bbox": {"l": 165.59793, "t": 124.48828000000003, "r": 522.83429, "b": 133.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "example, either the ADMIN or CUSTOMER group profiles can see the entire email ", "bbox": {"l": 165.59793, "t": 136.48810000000003, "r": 531.30621, "b": 145.70110999999997, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "address; otherwise, it is masked to ****@****.", "bbox": {"l": 165.59793, "t": 148.48792000000003, "r": 365.33081, "b": 157.70092999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Select the ", "bbox": {"l": 151.19775, "t": 165.52747, "r": 198.40915, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Enabled", "bbox": {"l": 198.41812, "t": 165.52747, "r": 237.21132999999998, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": " option. Click ", "bbox": {"l": 237.17845, "t": 165.52747, "r": 297.04605, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "OK", "bbox": {"l": 296.9982, "t": 165.52747, "r": 311.92026, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ".", "bbox": {"l": 311.99796, "t": 165.52747, "r": 314.76685, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Figure 4-34 Defining a column mask on the CUSTOMERS table", "bbox": {"l": 136.8, "t": 605.7179, "r": 394.91101, "b": 614.04291, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "3.", "bbox": {"l": 136.8, "t": 631.72862, "r": 145.18929, "b": 640.9416200000001, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Repeat steps 1 on page 58 and 2 to create column masks for the following columns:", "bbox": {"l": 147.9857, "t": 631.72862, "r": 522.03296, "b": 640.9416200000001, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "-", "bbox": {"l": 152.03979, "t": 648.70844, "r": 157.59648, "b": 657.92143, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "MASK_DRIVERS_LICENSE_ON_CUSTOMERS", "bbox": {"l": 165.59933, "t": 648.70844, "r": 381.77414, "b": 657.92143, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "-", "bbox": {"l": 152.03979, "t": 660.7082399999999, "r": 157.59549, "b": 669.92124, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "MASK_LOGIN_ID_ON_CUSTOMERS", "bbox": {"l": 165.59935, "t": 660.7082399999999, "r": 335.7012, "b": 669.92124, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "-", "bbox": {"l": 152.03979, "t": 672.70805, "r": 157.59349, "b": 681.92105, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS", "bbox": {"l": 165.59933, "t": 672.70805, "r": 446.63971, "b": 681.92105, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "-", "bbox": {"l": 152.03979, "t": 684.70786, "r": 157.59747, "b": 693.92086, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "MASK_ACCOUNT_NUMBER_ON_ACCOUNTS", "bbox": {"l": 165.59933, "t": 684.70786, "r": 379.32303, "b": 693.92086, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "-", "bbox": {"l": 152.03979, "t": 696.707664, "r": 157.59349, "b": 705.92067, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "MASK_SECURITY_QUESTION_ON_CUSTOMERS", "bbox": {"l": 165.59933, "t": 696.707664, "r": 397.17035, "b": 705.92067, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "-", "bbox": {"l": 152.03979, "t": 708.707474, "r": 157.59747, "b": 717.920479, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "MASK_TAX_ID_ON_CUSTOMERS", "bbox": {"l": 165.59933, "t": 708.707474, "r": 322.77811, "b": 717.920479, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 214.23280334472656, "t": 754.7346801757812, "r": 523.59357, "b": 763.9798583984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9574586153030396, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.6565551757812, "t": 754.1910400390625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9153223633766174, "cells": [{"id": 1, "text": "59", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 136.03579711914062, "t": 70.76680755615234, "r": 524.10217, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.935202956199646, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.17424, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "In the New Column Mask window, which is shown in Figure 4-34, enter the following ", "bbox": {"l": 147.96579, "t": 71.50903000000005, "r": 524.10217, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "information:", "bbox": {"l": 151.19876, "t": 83.50885000000017, "r": 203.38417, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "list_item", "bbox": {"l": 151.32827758789062, "t": 99.3359375, "r": 465.46960000000007, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9387155175209045, "cells": [{"id": 5, "text": "-", "bbox": {"l": 152.03839, "t": 100.48865, "r": 157.57317, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Select the CUSTOMERS table on which to create the column mask.", "bbox": {"l": 165.59793, "t": 100.48865, "r": 465.46960000000007, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 151.2732391357422, "t": 111.13023376464844, "r": 475.19052000000005, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9359274506568909, "cells": [{"id": 7, "text": "-", "bbox": {"l": 152.03839, "t": 112.48845999999992, "r": 157.57416, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Select the Column to mask; in this example, it is CUSTOMER_EMAIL.", "bbox": {"l": 165.59793, "t": 112.48845999999992, "r": 475.19052000000005, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 151.39305114746094, "t": 123.64397430419922, "r": 531.30621, "b": 157.70092999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9761620759963989, "cells": [{"id": 9, "text": "-", "bbox": {"l": 152.03839, "t": 124.48828000000003, "r": 157.61002, "b": 133.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Define the masking logic depending on the rules that you want to enforce. In this ", "bbox": {"l": 165.59793, "t": 124.48828000000003, "r": 522.83429, "b": 133.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "example, either the ADMIN or CUSTOMER group profiles can see the entire email ", "bbox": {"l": 165.59793, "t": 136.48810000000003, "r": 531.30621, "b": 145.70110999999997, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "address; otherwise, it is masked to ****@****.", "bbox": {"l": 165.59793, "t": 148.48792000000003, "r": 365.33081, "b": 157.70092999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 150.79855346679688, "t": 164.49195861816406, "r": 314.76685, "b": 175.1024627685547, "coord_origin": "TOPLEFT"}, "confidence": 0.7048681974411011, "cells": [{"id": 13, "text": "Select the ", "bbox": {"l": 151.19775, "t": 165.52747, "r": 198.40915, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Enabled", "bbox": {"l": 198.41812, "t": 165.52747, "r": 237.21132999999998, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": " option. Click ", "bbox": {"l": 237.17845, "t": 165.52747, "r": 297.04605, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "OK", "bbox": {"l": 296.9982, "t": 165.52747, "r": 311.92026, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ".", "bbox": {"l": 311.99796, "t": 165.52747, "r": 314.76685, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "caption", "bbox": {"l": 135.8140106201172, "t": 604.765380859375, "r": 395.16131591796875, "b": 614.04291, "coord_origin": "TOPLEFT"}, "confidence": 0.9423272013664246, "cells": [{"id": 18, "text": "Figure 4-34 Defining a column mask on the CUSTOMERS table", "bbox": {"l": 136.8, "t": 605.7179, "r": 394.91101, "b": 614.04291, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 136.26536560058594, "t": 630.8367919921875, "r": 522.03296, "b": 641.0337524414062, "coord_origin": "TOPLEFT"}, "confidence": 0.8807461857795715, "cells": [{"id": 19, "text": "3.", "bbox": {"l": 136.8, "t": 631.72862, "r": 145.18929, "b": 640.9416200000001, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Repeat steps 1 on page 58 and 2 to create column masks for the following columns:", "bbox": {"l": 147.9857, "t": 631.72862, "r": 522.03296, "b": 640.9416200000001, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 151.44378662109375, "t": 647.1741943359375, "r": 381.77414, "b": 657.92143, "coord_origin": "TOPLEFT"}, "confidence": 0.9306973814964294, "cells": [{"id": 21, "text": "-", "bbox": {"l": 152.03979, "t": 648.70844, "r": 157.59648, "b": 657.92143, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "MASK_DRIVERS_LICENSE_ON_CUSTOMERS", "bbox": {"l": 165.59933, "t": 648.70844, "r": 381.77414, "b": 657.92143, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 151.36248779296875, "t": 659.518798828125, "r": 335.7012, "b": 669.92124, "coord_origin": "TOPLEFT"}, "confidence": 0.9286901354789734, "cells": [{"id": 23, "text": "-", "bbox": {"l": 152.03979, "t": 660.7082399999999, "r": 157.59549, "b": 669.92124, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "MASK_LOGIN_ID_ON_CUSTOMERS", "bbox": {"l": 165.59935, "t": 660.7082399999999, "r": 335.7012, "b": 669.92124, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 151.4147491455078, "t": 671.4402465820312, "r": 446.63971, "b": 681.92105, "coord_origin": "TOPLEFT"}, "confidence": 0.9449449777603149, "cells": [{"id": 25, "text": "-", "bbox": {"l": 152.03979, "t": 672.70805, "r": 157.59349, "b": 681.92105, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS", "bbox": {"l": 165.59933, "t": 672.70805, "r": 446.63971, "b": 681.92105, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "list_item", "bbox": {"l": 151.27947998046875, "t": 683.0931396484375, "r": 379.591064453125, "b": 693.92086, "coord_origin": "TOPLEFT"}, "confidence": 0.924078106880188, "cells": [{"id": 27, "text": "-", "bbox": {"l": 152.03979, "t": 684.70786, "r": 157.59747, "b": 693.92086, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "MASK_ACCOUNT_NUMBER_ON_ACCOUNTS", "bbox": {"l": 165.59933, "t": 684.70786, "r": 379.32303, "b": 693.92086, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "list_item", "bbox": {"l": 151.41717529296875, "t": 695.0255737304688, "r": 397.17035, "b": 705.92067, "coord_origin": "TOPLEFT"}, "confidence": 0.9357948303222656, "cells": [{"id": 29, "text": "-", "bbox": {"l": 152.03979, "t": 696.707664, "r": 157.59349, "b": 705.92067, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "MASK_SECURITY_QUESTION_ON_CUSTOMERS", "bbox": {"l": 165.59933, "t": 696.707664, "r": 397.17035, "b": 705.92067, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "list_item", "bbox": {"l": 151.33258056640625, "t": 707.4501953125, "r": 322.77811, "b": 717.920479, "coord_origin": "TOPLEFT"}, "confidence": 0.9366948008537292, "cells": [{"id": 31, "text": "-", "bbox": {"l": 152.03979, "t": 708.707474, "r": 157.59747, "b": 717.920479, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "MASK_TAX_ID_ON_CUSTOMERS", "bbox": {"l": 165.59933, "t": 708.707474, "r": 322.77811, "b": 717.920479, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "picture", "bbox": {"l": 136.62161254882812, "t": 188.8601531982422, "r": 533.3434448242188, "b": 602.5858154296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9852358102798462, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 74, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.23280334472656, "t": 754.7346801757812, "r": 523.59357, "b": 763.9798583984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9574586153030396, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 74, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6565551757812, "t": 754.1910400390625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9153223633766174, "cells": [{"id": 1, "text": "59", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "59"}, {"label": "list_item", "id": 2, "page_no": 74, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.03579711914062, "t": 70.76680755615234, "r": 524.10217, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.935202956199646, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.17424, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "In the New Column Mask window, which is shown in Figure 4-34, enter the following ", "bbox": {"l": 147.96579, "t": 71.50903000000005, "r": 524.10217, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "information:", "bbox": {"l": 151.19876, "t": 83.50885000000017, "r": 203.38417, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "2. In the New Column Mask window, which is shown in Figure 4-34, enter the following information:"}, {"label": "list_item", "id": 3, "page_no": 74, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 151.32827758789062, "t": 99.3359375, "r": 465.46960000000007, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9387155175209045, "cells": [{"id": 5, "text": "-", "bbox": {"l": 152.03839, "t": 100.48865, "r": 157.57317, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Select the CUSTOMERS table on which to create the column mask.", "bbox": {"l": 165.59793, "t": 100.48865, "r": 465.46960000000007, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}]}, "text": "-Select the CUSTOMERS table on which to create the column mask."}, {"label": "list_item", "id": 4, "page_no": 74, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 151.2732391357422, "t": 111.13023376464844, "r": 475.19052000000005, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9359274506568909, "cells": [{"id": 7, "text": "-", "bbox": {"l": 152.03839, "t": 112.48845999999992, "r": 157.57416, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Select the Column to mask; in this example, it is CUSTOMER_EMAIL.", "bbox": {"l": 165.59793, "t": 112.48845999999992, "r": 475.19052000000005, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}]}, "text": "-Select the Column to mask; in this example, it is CUSTOMER_EMAIL."}, {"label": "list_item", "id": 5, "page_no": 74, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 151.39305114746094, "t": 123.64397430419922, "r": 531.30621, "b": 157.70092999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9761620759963989, "cells": [{"id": 9, "text": "-", "bbox": {"l": 152.03839, "t": 124.48828000000003, "r": 157.61002, "b": 133.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Define the masking logic depending on the rules that you want to enforce. In this ", "bbox": {"l": 165.59793, "t": 124.48828000000003, "r": 522.83429, "b": 133.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "example, either the ADMIN or CUSTOMER group profiles can see the entire email ", "bbox": {"l": 165.59793, "t": 136.48810000000003, "r": 531.30621, "b": 145.70110999999997, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "address; otherwise, it is masked to ****@****.", "bbox": {"l": 165.59793, "t": 148.48792000000003, "r": 365.33081, "b": 157.70092999999997, "coord_origin": "TOPLEFT"}}]}, "text": "-Define the masking logic depending on the rules that you want to enforce. In this example, either the ADMIN or CUSTOMER group profiles can see the entire email address; otherwise, it is masked to ****@****."}, {"label": "text", "id": 6, "page_no": 74, "cluster": {"id": 6, "label": "text", "bbox": {"l": 150.79855346679688, "t": 164.49195861816406, "r": 314.76685, "b": 175.1024627685547, "coord_origin": "TOPLEFT"}, "confidence": 0.7048681974411011, "cells": [{"id": 13, "text": "Select the ", "bbox": {"l": 151.19775, "t": 165.52747, "r": 198.40915, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Enabled", "bbox": {"l": 198.41812, "t": 165.52747, "r": 237.21132999999998, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": " option. Click ", "bbox": {"l": 237.17845, "t": 165.52747, "r": 297.04605, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "OK", "bbox": {"l": 296.9982, "t": 165.52747, "r": 311.92026, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ".", "bbox": {"l": 311.99796, "t": 165.52747, "r": 314.76685, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Select the Enabled option. Click OK ."}, {"label": "caption", "id": 7, "page_no": 74, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 135.8140106201172, "t": 604.765380859375, "r": 395.16131591796875, "b": 614.04291, "coord_origin": "TOPLEFT"}, "confidence": 0.9423272013664246, "cells": [{"id": 18, "text": "Figure 4-34 Defining a column mask on the CUSTOMERS table", "bbox": {"l": 136.8, "t": 605.7179, "r": 394.91101, "b": 614.04291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-34 Defining a column mask on the CUSTOMERS table"}, {"label": "list_item", "id": 8, "page_no": 74, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 136.26536560058594, "t": 630.8367919921875, "r": 522.03296, "b": 641.0337524414062, "coord_origin": "TOPLEFT"}, "confidence": 0.8807461857795715, "cells": [{"id": 19, "text": "3.", "bbox": {"l": 136.8, "t": 631.72862, "r": 145.18929, "b": 640.9416200000001, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Repeat steps 1 on page 58 and 2 to create column masks for the following columns:", "bbox": {"l": 147.9857, "t": 631.72862, "r": 522.03296, "b": 640.9416200000001, "coord_origin": "TOPLEFT"}}]}, "text": "3. Repeat steps 1 on page 58 and 2 to create column masks for the following columns:"}, {"label": "list_item", "id": 9, "page_no": 74, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 151.44378662109375, "t": 647.1741943359375, "r": 381.77414, "b": 657.92143, "coord_origin": "TOPLEFT"}, "confidence": 0.9306973814964294, "cells": [{"id": 21, "text": "-", "bbox": {"l": 152.03979, "t": 648.70844, "r": 157.59648, "b": 657.92143, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "MASK_DRIVERS_LICENSE_ON_CUSTOMERS", "bbox": {"l": 165.59933, "t": 648.70844, "r": 381.77414, "b": 657.92143, "coord_origin": "TOPLEFT"}}]}, "text": "-MASK_DRIVERS_LICENSE_ON_CUSTOMERS"}, {"label": "list_item", "id": 10, "page_no": 74, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 151.36248779296875, "t": 659.518798828125, "r": 335.7012, "b": 669.92124, "coord_origin": "TOPLEFT"}, "confidence": 0.9286901354789734, "cells": [{"id": 23, "text": "-", "bbox": {"l": 152.03979, "t": 660.7082399999999, "r": 157.59549, "b": 669.92124, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "MASK_LOGIN_ID_ON_CUSTOMERS", "bbox": {"l": 165.59935, "t": 660.7082399999999, "r": 335.7012, "b": 669.92124, "coord_origin": "TOPLEFT"}}]}, "text": "-MASK_LOGIN_ID_ON_CUSTOMERS"}, {"label": "list_item", "id": 11, "page_no": 74, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 151.4147491455078, "t": 671.4402465820312, "r": 446.63971, "b": 681.92105, "coord_origin": "TOPLEFT"}, "confidence": 0.9449449777603149, "cells": [{"id": 25, "text": "-", "bbox": {"l": 152.03979, "t": 672.70805, "r": 157.59349, "b": 681.92105, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS", "bbox": {"l": 165.59933, "t": 672.70805, "r": 446.63971, "b": 681.92105, "coord_origin": "TOPLEFT"}}]}, "text": "-MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS"}, {"label": "list_item", "id": 12, "page_no": 74, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 151.27947998046875, "t": 683.0931396484375, "r": 379.591064453125, "b": 693.92086, "coord_origin": "TOPLEFT"}, "confidence": 0.924078106880188, "cells": [{"id": 27, "text": "-", "bbox": {"l": 152.03979, "t": 684.70786, "r": 157.59747, "b": 693.92086, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "MASK_ACCOUNT_NUMBER_ON_ACCOUNTS", "bbox": {"l": 165.59933, "t": 684.70786, "r": 379.32303, "b": 693.92086, "coord_origin": "TOPLEFT"}}]}, "text": "-MASK_ACCOUNT_NUMBER_ON_ACCOUNTS"}, {"label": "list_item", "id": 13, "page_no": 74, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 151.41717529296875, "t": 695.0255737304688, "r": 397.17035, "b": 705.92067, "coord_origin": "TOPLEFT"}, "confidence": 0.9357948303222656, "cells": [{"id": 29, "text": "-", "bbox": {"l": 152.03979, "t": 696.707664, "r": 157.59349, "b": 705.92067, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "MASK_SECURITY_QUESTION_ON_CUSTOMERS", "bbox": {"l": 165.59933, "t": 696.707664, "r": 397.17035, "b": 705.92067, "coord_origin": "TOPLEFT"}}]}, "text": "-MASK_SECURITY_QUESTION_ON_CUSTOMERS"}, {"label": "list_item", "id": 14, "page_no": 74, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 151.33258056640625, "t": 707.4501953125, "r": 322.77811, "b": 717.920479, "coord_origin": "TOPLEFT"}, "confidence": 0.9366948008537292, "cells": [{"id": 31, "text": "-", "bbox": {"l": 152.03979, "t": 708.707474, "r": 157.59747, "b": 717.920479, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "MASK_TAX_ID_ON_CUSTOMERS", "bbox": {"l": 165.59933, "t": 708.707474, "r": 322.77811, "b": 717.920479, "coord_origin": "TOPLEFT"}}]}, "text": "-MASK_TAX_ID_ON_CUSTOMERS"}, {"label": "picture", "id": 15, "page_no": 74, "cluster": {"id": 15, "label": "picture", "bbox": {"l": 136.62161254882812, "t": 188.8601531982422, "r": 533.3434448242188, "b": 602.5858154296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9852358102798462, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 74, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.03579711914062, "t": 70.76680755615234, "r": 524.10217, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.935202956199646, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.17424, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "In the New Column Mask window, which is shown in Figure 4-34, enter the following ", "bbox": {"l": 147.96579, "t": 71.50903000000005, "r": 524.10217, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "information:", "bbox": {"l": 151.19876, "t": 83.50885000000017, "r": 203.38417, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "2. In the New Column Mask window, which is shown in Figure 4-34, enter the following information:"}, {"label": "list_item", "id": 3, "page_no": 74, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 151.32827758789062, "t": 99.3359375, "r": 465.46960000000007, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9387155175209045, "cells": [{"id": 5, "text": "-", "bbox": {"l": 152.03839, "t": 100.48865, "r": 157.57317, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Select the CUSTOMERS table on which to create the column mask.", "bbox": {"l": 165.59793, "t": 100.48865, "r": 465.46960000000007, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}]}, "text": "-Select the CUSTOMERS table on which to create the column mask."}, {"label": "list_item", "id": 4, "page_no": 74, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 151.2732391357422, "t": 111.13023376464844, "r": 475.19052000000005, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9359274506568909, "cells": [{"id": 7, "text": "-", "bbox": {"l": 152.03839, "t": 112.48845999999992, "r": 157.57416, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Select the Column to mask; in this example, it is CUSTOMER_EMAIL.", "bbox": {"l": 165.59793, "t": 112.48845999999992, "r": 475.19052000000005, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}]}, "text": "-Select the Column to mask; in this example, it is CUSTOMER_EMAIL."}, {"label": "list_item", "id": 5, "page_no": 74, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 151.39305114746094, "t": 123.64397430419922, "r": 531.30621, "b": 157.70092999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9761620759963989, "cells": [{"id": 9, "text": "-", "bbox": {"l": 152.03839, "t": 124.48828000000003, "r": 157.61002, "b": 133.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Define the masking logic depending on the rules that you want to enforce. In this ", "bbox": {"l": 165.59793, "t": 124.48828000000003, "r": 522.83429, "b": 133.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "example, either the ADMIN or CUSTOMER group profiles can see the entire email ", "bbox": {"l": 165.59793, "t": 136.48810000000003, "r": 531.30621, "b": 145.70110999999997, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "address; otherwise, it is masked to ****@****.", "bbox": {"l": 165.59793, "t": 148.48792000000003, "r": 365.33081, "b": 157.70092999999997, "coord_origin": "TOPLEFT"}}]}, "text": "-Define the masking logic depending on the rules that you want to enforce. In this example, either the ADMIN or CUSTOMER group profiles can see the entire email address; otherwise, it is masked to ****@****."}, {"label": "text", "id": 6, "page_no": 74, "cluster": {"id": 6, "label": "text", "bbox": {"l": 150.79855346679688, "t": 164.49195861816406, "r": 314.76685, "b": 175.1024627685547, "coord_origin": "TOPLEFT"}, "confidence": 0.7048681974411011, "cells": [{"id": 13, "text": "Select the ", "bbox": {"l": 151.19775, "t": 165.52747, "r": 198.40915, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Enabled", "bbox": {"l": 198.41812, "t": 165.52747, "r": 237.21132999999998, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": " option. Click ", "bbox": {"l": 237.17845, "t": 165.52747, "r": 297.04605, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "OK", "bbox": {"l": 296.9982, "t": 165.52747, "r": 311.92026, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ".", "bbox": {"l": 311.99796, "t": 165.52747, "r": 314.76685, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Select the Enabled option. Click OK ."}, {"label": "caption", "id": 7, "page_no": 74, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 135.8140106201172, "t": 604.765380859375, "r": 395.16131591796875, "b": 614.04291, "coord_origin": "TOPLEFT"}, "confidence": 0.9423272013664246, "cells": [{"id": 18, "text": "Figure 4-34 Defining a column mask on the CUSTOMERS table", "bbox": {"l": 136.8, "t": 605.7179, "r": 394.91101, "b": 614.04291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-34 Defining a column mask on the CUSTOMERS table"}, {"label": "list_item", "id": 8, "page_no": 74, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 136.26536560058594, "t": 630.8367919921875, "r": 522.03296, "b": 641.0337524414062, "coord_origin": "TOPLEFT"}, "confidence": 0.8807461857795715, "cells": [{"id": 19, "text": "3.", "bbox": {"l": 136.8, "t": 631.72862, "r": 145.18929, "b": 640.9416200000001, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Repeat steps 1 on page 58 and 2 to create column masks for the following columns:", "bbox": {"l": 147.9857, "t": 631.72862, "r": 522.03296, "b": 640.9416200000001, "coord_origin": "TOPLEFT"}}]}, "text": "3. Repeat steps 1 on page 58 and 2 to create column masks for the following columns:"}, {"label": "list_item", "id": 9, "page_no": 74, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 151.44378662109375, "t": 647.1741943359375, "r": 381.77414, "b": 657.92143, "coord_origin": "TOPLEFT"}, "confidence": 0.9306973814964294, "cells": [{"id": 21, "text": "-", "bbox": {"l": 152.03979, "t": 648.70844, "r": 157.59648, "b": 657.92143, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "MASK_DRIVERS_LICENSE_ON_CUSTOMERS", "bbox": {"l": 165.59933, "t": 648.70844, "r": 381.77414, "b": 657.92143, "coord_origin": "TOPLEFT"}}]}, "text": "-MASK_DRIVERS_LICENSE_ON_CUSTOMERS"}, {"label": "list_item", "id": 10, "page_no": 74, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 151.36248779296875, "t": 659.518798828125, "r": 335.7012, "b": 669.92124, "coord_origin": "TOPLEFT"}, "confidence": 0.9286901354789734, "cells": [{"id": 23, "text": "-", "bbox": {"l": 152.03979, "t": 660.7082399999999, "r": 157.59549, "b": 669.92124, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "MASK_LOGIN_ID_ON_CUSTOMERS", "bbox": {"l": 165.59935, "t": 660.7082399999999, "r": 335.7012, "b": 669.92124, "coord_origin": "TOPLEFT"}}]}, "text": "-MASK_LOGIN_ID_ON_CUSTOMERS"}, {"label": "list_item", "id": 11, "page_no": 74, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 151.4147491455078, "t": 671.4402465820312, "r": 446.63971, "b": 681.92105, "coord_origin": "TOPLEFT"}, "confidence": 0.9449449777603149, "cells": [{"id": 25, "text": "-", "bbox": {"l": 152.03979, "t": 672.70805, "r": 157.59349, "b": 681.92105, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS", "bbox": {"l": 165.59933, "t": 672.70805, "r": 446.63971, "b": 681.92105, "coord_origin": "TOPLEFT"}}]}, "text": "-MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS"}, {"label": "list_item", "id": 12, "page_no": 74, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 151.27947998046875, "t": 683.0931396484375, "r": 379.591064453125, "b": 693.92086, "coord_origin": "TOPLEFT"}, "confidence": 0.924078106880188, "cells": [{"id": 27, "text": "-", "bbox": {"l": 152.03979, "t": 684.70786, "r": 157.59747, "b": 693.92086, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "MASK_ACCOUNT_NUMBER_ON_ACCOUNTS", "bbox": {"l": 165.59933, "t": 684.70786, "r": 379.32303, "b": 693.92086, "coord_origin": "TOPLEFT"}}]}, "text": "-MASK_ACCOUNT_NUMBER_ON_ACCOUNTS"}, {"label": "list_item", "id": 13, "page_no": 74, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 151.41717529296875, "t": 695.0255737304688, "r": 397.17035, "b": 705.92067, "coord_origin": "TOPLEFT"}, "confidence": 0.9357948303222656, "cells": [{"id": 29, "text": "-", "bbox": {"l": 152.03979, "t": 696.707664, "r": 157.59349, "b": 705.92067, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "MASK_SECURITY_QUESTION_ON_CUSTOMERS", "bbox": {"l": 165.59933, "t": 696.707664, "r": 397.17035, "b": 705.92067, "coord_origin": "TOPLEFT"}}]}, "text": "-MASK_SECURITY_QUESTION_ON_CUSTOMERS"}, {"label": "list_item", "id": 14, "page_no": 74, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 151.33258056640625, "t": 707.4501953125, "r": 322.77811, "b": 717.920479, "coord_origin": "TOPLEFT"}, "confidence": 0.9366948008537292, "cells": [{"id": 31, "text": "-", "bbox": {"l": 152.03979, "t": 708.707474, "r": 157.59747, "b": 717.920479, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "MASK_TAX_ID_ON_CUSTOMERS", "bbox": {"l": 165.59933, "t": 708.707474, "r": 322.77811, "b": 717.920479, "coord_origin": "TOPLEFT"}}]}, "text": "-MASK_TAX_ID_ON_CUSTOMERS"}, {"label": "picture", "id": 15, "page_no": 74, "cluster": {"id": 15, "label": "picture", "bbox": {"l": 136.62161254882812, "t": 188.8601531982422, "r": 533.3434448242188, "b": 602.5858154296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9852358102798462, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 74, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.23280334472656, "t": 754.7346801757812, "r": 523.59357, "b": 763.9798583984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9574586153030396, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 74, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6565551757812, "t": 754.1910400390625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9153223633766174, "cells": [{"id": 1, "text": "59", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "59"}]}}, {"page_no": 75, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "60 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "4.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.15868, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "To verify that the column masks are enabled, from System i Navigator, click ", "bbox": {"l": 147.94489, "t": 71.50867000000005, "r": 485.4787, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Column ", "bbox": {"l": 485.40002, "t": 71.50867000000005, "r": 525.39343, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Masks", "bbox": {"l": 151.2002, "t": 83.50847999999996, "r": 181.74052, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ", as shown in Figure 4-35. The seven column masks are created and enabled.", "bbox": {"l": 181.62003, "t": 83.50847999999996, "r": 525.70728, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Figure 4-35 List of column masks on BANK_SCHEMA", "bbox": {"l": 64.800003, "t": 184.27801999999997, "r": 285.03, "b": 192.60297000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "4.3.7", "bbox": {"l": 64.800003, "t": 213.11469, "r": 93.985405, "b": 225.10271999999998, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Restricting the inserting and updating of masked data", "bbox": {"l": 97.633568, "t": 213.11469, "r": 433.79065, "b": 225.10271999999998, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "This step defines the check constraints that support the column masks to make sure that on ", "bbox": {"l": 136.8, "t": 239.26868000000002, "r": 544.46484, "b": 248.48168999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "INSERTS or UPDATES, data is not written with a masked value. For more information about ", "bbox": {"l": 136.8, "t": 251.26849000000004, "r": 544.92688, "b": 260.48150999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "the propagation of masked data, see 6.8, \u201cAvoiding propagation of masked data\u201d on ", "bbox": {"l": 136.8, "t": 263.26831000000004, "r": 508.48523, "b": 272.48132, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "page 108.", "bbox": {"l": 136.8, "t": 275.26813000000004, "r": 181.30827, "b": 284.48114, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Complete the following steps:", "bbox": {"l": 136.8, "t": 297.2279700000001, "r": 266.86069, "b": 306.44095, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "1.", "bbox": {"l": 136.8, "t": 314.26755, "r": 145.1564, "b": 323.48053, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Create a check constraint on the column CUSTOMER_EMAIL in the CUSTOMERS table. ", "bbox": {"l": 147.94186, "t": 314.26755, "r": 547.19568, "b": 323.48053, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "From the navigation pane of System i Navigator, right-click the ", "bbox": {"l": 151.20016, "t": 326.26736, "r": 428.14206, "b": 335.48035, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "CUSTOMERS ", "bbox": {"l": 428.10013, "t": 326.26736, "r": 494.30425999999994, "b": 335.48035, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "table and ", "bbox": {"l": 494.34009, "t": 326.26736, "r": 538.0177, "b": 335.48035, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "select ", "bbox": {"l": 151.20013, "t": 338.26718, "r": 180.07518, "b": 347.48016000000007, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Definition", "bbox": {"l": 180.06023, "t": 338.26718, "r": 226.23678999999998, "b": 347.48016000000007, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": ", as shown Figure 4-36", "bbox": {"l": 226.14017, "t": 338.26718, "r": 327.7511, "b": 347.48016000000007, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Figure 4-36 Definition of the CUSTOMERS table", "bbox": {"l": 136.8, "t": 472.09799, "r": 334.01611, "b": 480.423, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "2.", "bbox": {"l": 136.8, "t": 498.04874, "r": 145.07706, "b": 507.26172, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "From the CUSTOMERS definition window, click the ", "bbox": {"l": 147.83607, "t": 498.04874, "r": 376.15961, "b": 507.26172, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Check Constraints", "bbox": {"l": 376.08002, "t": 498.04874, "r": 463.7648899999999, "b": 507.26172, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": " tab and click ", "bbox": {"l": 463.73996, "t": 498.04874, "r": 522.76489, "b": 507.26172, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Add", "bbox": {"l": 522.77985, "t": 498.04874, "r": 542.0744, "b": 507.26172, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ", ", "bbox": {"l": 542.10028, "t": 498.04874, "r": 547.73962, "b": 507.26172, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "as shown in Figure 4-37.", "bbox": {"l": 151.20013, "t": 510.04855, "r": 260.45734, "b": 519.26154, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Figure 4-37 Adding a check constraint", "bbox": {"l": 64.800003, "t": 603.85789, "r": 220.9212, "b": 612.18291, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.13931274414062, "t": 754.37646484375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9181943535804749, "cells": [{"id": 0, "text": "60 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.2583236694336, "t": 754.7027587890625, "r": 334.42142, "b": 763.9403686523438, "coord_origin": "TOPLEFT"}, "confidence": 0.9538118243217468, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 135.86886596679688, "t": 70.40605926513672, "r": 525.70728, "b": 92.86236572265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9647813439369202, "cells": [{"id": 2, "text": "4.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.15868, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "To verify that the column masks are enabled, from System i Navigator, click ", "bbox": {"l": 147.94489, "t": 71.50867000000005, "r": 485.4787, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Column ", "bbox": {"l": 485.40002, "t": 71.50867000000005, "r": 525.39343, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Masks", "bbox": {"l": 151.2002, "t": 83.50847999999996, "r": 181.74052, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ", as shown in Figure 4-35. The seven column masks are created and enabled.", "bbox": {"l": 181.62003, "t": 83.50847999999996, "r": 525.70728, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.10326385498047, "t": 183.41061401367188, "r": 285.1827087402344, "b": 192.7096710205078, "coord_origin": "TOPLEFT"}, "confidence": 0.9432595372200012, "cells": [{"id": 7, "text": "Figure 4-35 List of column masks on BANK_SCHEMA", "bbox": {"l": 64.800003, "t": 184.27801999999997, "r": 285.03, "b": 192.60297000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 64.0513916015625, "t": 212.59413146972656, "r": 433.79065, "b": 225.7198028564453, "coord_origin": "TOPLEFT"}, "confidence": 0.9636105895042419, "cells": [{"id": 8, "text": "4.3.7", "bbox": {"l": 64.800003, "t": 213.11469, "r": 93.985405, "b": 225.10271999999998, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Restricting the inserting and updating of masked data", "bbox": {"l": 97.633568, "t": 213.11469, "r": 433.79065, "b": 225.10271999999998, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.85455322265625, "t": 238.7532196044922, "r": 544.92688, "b": 284.9345397949219, "coord_origin": "TOPLEFT"}, "confidence": 0.9866855144500732, "cells": [{"id": 10, "text": "This step defines the check constraints that support the column masks to make sure that on ", "bbox": {"l": 136.8, "t": 239.26868000000002, "r": 544.46484, "b": 248.48168999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "INSERTS or UPDATES, data is not written with a masked value. For more information about ", "bbox": {"l": 136.8, "t": 251.26849000000004, "r": 544.92688, "b": 260.48150999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "the propagation of masked data, see 6.8, \u201cAvoiding propagation of masked data\u201d on ", "bbox": {"l": 136.8, "t": 263.26831000000004, "r": 508.48523, "b": 272.48132, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "page 108.", "bbox": {"l": 136.8, "t": 275.26813000000004, "r": 181.30827, "b": 284.48114, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "section_header", "bbox": {"l": 136.1099090576172, "t": 296.4962158203125, "r": 266.86069, "b": 307.0681457519531, "coord_origin": "TOPLEFT"}, "confidence": 0.8199454545974731, "cells": [{"id": 14, "text": "Complete the following steps:", "bbox": {"l": 136.8, "t": 297.2279700000001, "r": 266.86069, "b": 306.44095, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 136.3522491455078, "t": 313.09881591796875, "r": 547.19568, "b": 347.6925048828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9741182923316956, "cells": [{"id": 15, "text": "1.", "bbox": {"l": 136.8, "t": 314.26755, "r": 145.1564, "b": 323.48053, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Create a check constraint on the column CUSTOMER_EMAIL in the CUSTOMERS table. ", "bbox": {"l": 147.94186, "t": 314.26755, "r": 547.19568, "b": 323.48053, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "From the navigation pane of System i Navigator, right-click the ", "bbox": {"l": 151.20016, "t": 326.26736, "r": 428.14206, "b": 335.48035, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "CUSTOMERS ", "bbox": {"l": 428.10013, "t": 326.26736, "r": 494.30425999999994, "b": 335.48035, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "table and ", "bbox": {"l": 494.34009, "t": 326.26736, "r": 538.0177, "b": 335.48035, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "select ", "bbox": {"l": 151.20013, "t": 338.26718, "r": 180.07518, "b": 347.48016000000007, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Definition", "bbox": {"l": 180.06023, "t": 338.26718, "r": 226.23678999999998, "b": 347.48016000000007, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": ", as shown Figure 4-36", "bbox": {"l": 226.14017, "t": 338.26718, "r": 327.7511, "b": 347.48016000000007, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "caption", "bbox": {"l": 135.78135681152344, "t": 471.4366455078125, "r": 334.3720397949219, "b": 480.8490295410156, "coord_origin": "TOPLEFT"}, "confidence": 0.9464175701141357, "cells": [{"id": 23, "text": "Figure 4-36 Definition of the CUSTOMERS table", "bbox": {"l": 136.8, "t": 472.09799, "r": 334.01611, "b": 480.423, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.75648498535156, "t": 497.3858337402344, "r": 547.73962, "b": 519.6641845703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9690989851951599, "cells": [{"id": 24, "text": "2.", "bbox": {"l": 136.8, "t": 498.04874, "r": 145.07706, "b": 507.26172, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "From the CUSTOMERS definition window, click the ", "bbox": {"l": 147.83607, "t": 498.04874, "r": 376.15961, "b": 507.26172, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Check Constraints", "bbox": {"l": 376.08002, "t": 498.04874, "r": 463.7648899999999, "b": 507.26172, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": " tab and click ", "bbox": {"l": 463.73996, "t": 498.04874, "r": 522.76489, "b": 507.26172, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Add", "bbox": {"l": 522.77985, "t": 498.04874, "r": 542.0744, "b": 507.26172, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ", ", "bbox": {"l": 542.10028, "t": 498.04874, "r": 547.73962, "b": 507.26172, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "as shown in Figure 4-37.", "bbox": {"l": 151.20013, "t": 510.04855, "r": 260.45734, "b": 519.26154, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "caption", "bbox": {"l": 64.25939178466797, "t": 602.9214477539062, "r": 221.74893188476562, "b": 612.18291, "coord_origin": "TOPLEFT"}, "confidence": 0.9495618343353271, "cells": [{"id": 31, "text": "Figure 4-37 Adding a check constraint", "bbox": {"l": 64.800003, "t": 603.85789, "r": 220.9212, "b": 612.18291, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "picture", "bbox": {"l": 136.29519653320312, "t": 362.13775634765625, "r": 545.3217163085938, "b": 468.5462951660156, "coord_origin": "TOPLEFT"}, "confidence": 0.983352780342102, "cells": []}, {"id": 12, "label": "picture", "bbox": {"l": 64.00347900390625, "t": 533.6920776367188, "r": 546.5211181640625, "b": 600.8970947265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9819415807723999, "cells": []}, {"id": 13, "label": "picture", "bbox": {"l": 64.02095031738281, "t": 107.45484924316406, "r": 547.409912109375, "b": 180.8109893798828, "coord_origin": "TOPLEFT"}, "confidence": 0.9703426361083984, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 75, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.13931274414062, "t": 754.37646484375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9181943535804749, "cells": [{"id": 0, "text": "60 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "60"}, {"label": "page_footer", "id": 1, "page_no": 75, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.2583236694336, "t": 754.7027587890625, "r": 334.42142, "b": 763.9403686523438, "coord_origin": "TOPLEFT"}, "confidence": 0.9538118243217468, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "list_item", "id": 2, "page_no": 75, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.86886596679688, "t": 70.40605926513672, "r": 525.70728, "b": 92.86236572265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9647813439369202, "cells": [{"id": 2, "text": "4.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.15868, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "To verify that the column masks are enabled, from System i Navigator, click ", "bbox": {"l": 147.94489, "t": 71.50867000000005, "r": 485.4787, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Column ", "bbox": {"l": 485.40002, "t": 71.50867000000005, "r": 525.39343, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Masks", "bbox": {"l": 151.2002, "t": 83.50847999999996, "r": 181.74052, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ", as shown in Figure 4-35. The seven column masks are created and enabled.", "bbox": {"l": 181.62003, "t": 83.50847999999996, "r": 525.70728, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "4. To verify that the column masks are enabled, from System i Navigator, click Column Masks , as shown in Figure 4-35. The seven column masks are created and enabled."}, {"label": "caption", "id": 3, "page_no": 75, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.10326385498047, "t": 183.41061401367188, "r": 285.1827087402344, "b": 192.7096710205078, "coord_origin": "TOPLEFT"}, "confidence": 0.9432595372200012, "cells": [{"id": 7, "text": "Figure 4-35 List of column masks on BANK_SCHEMA", "bbox": {"l": 64.800003, "t": 184.27801999999997, "r": 285.03, "b": 192.60297000000003, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-35 List of column masks on BANK_SCHEMA"}, {"label": "section_header", "id": 4, "page_no": 75, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.0513916015625, "t": 212.59413146972656, "r": 433.79065, "b": 225.7198028564453, "coord_origin": "TOPLEFT"}, "confidence": 0.9636105895042419, "cells": [{"id": 8, "text": "4.3.7", "bbox": {"l": 64.800003, "t": 213.11469, "r": 93.985405, "b": 225.10271999999998, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Restricting the inserting and updating of masked data", "bbox": {"l": 97.633568, "t": 213.11469, "r": 433.79065, "b": 225.10271999999998, "coord_origin": "TOPLEFT"}}]}, "text": "4.3.7 Restricting the inserting and updating of masked data"}, {"label": "text", "id": 5, "page_no": 75, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.85455322265625, "t": 238.7532196044922, "r": 544.92688, "b": 284.9345397949219, "coord_origin": "TOPLEFT"}, "confidence": 0.9866855144500732, "cells": [{"id": 10, "text": "This step defines the check constraints that support the column masks to make sure that on ", "bbox": {"l": 136.8, "t": 239.26868000000002, "r": 544.46484, "b": 248.48168999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "INSERTS or UPDATES, data is not written with a masked value. For more information about ", "bbox": {"l": 136.8, "t": 251.26849000000004, "r": 544.92688, "b": 260.48150999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "the propagation of masked data, see 6.8, \u201cAvoiding propagation of masked data\u201d on ", "bbox": {"l": 136.8, "t": 263.26831000000004, "r": 508.48523, "b": 272.48132, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "page 108.", "bbox": {"l": 136.8, "t": 275.26813000000004, "r": 181.30827, "b": 284.48114, "coord_origin": "TOPLEFT"}}]}, "text": "This step defines the check constraints that support the column masks to make sure that on INSERTS or UPDATES, data is not written with a masked value. For more information about the propagation of masked data, see 6.8, \u201cAvoiding propagation of masked data\u201d on page 108."}, {"label": "section_header", "id": 6, "page_no": 75, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 136.1099090576172, "t": 296.4962158203125, "r": 266.86069, "b": 307.0681457519531, "coord_origin": "TOPLEFT"}, "confidence": 0.8199454545974731, "cells": [{"id": 14, "text": "Complete the following steps:", "bbox": {"l": 136.8, "t": 297.2279700000001, "r": 266.86069, "b": 306.44095, "coord_origin": "TOPLEFT"}}]}, "text": "Complete the following steps:"}, {"label": "list_item", "id": 7, "page_no": 75, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 136.3522491455078, "t": 313.09881591796875, "r": 547.19568, "b": 347.6925048828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9741182923316956, "cells": [{"id": 15, "text": "1.", "bbox": {"l": 136.8, "t": 314.26755, "r": 145.1564, "b": 323.48053, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Create a check constraint on the column CUSTOMER_EMAIL in the CUSTOMERS table. ", "bbox": {"l": 147.94186, "t": 314.26755, "r": 547.19568, "b": 323.48053, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "From the navigation pane of System i Navigator, right-click the ", "bbox": {"l": 151.20016, "t": 326.26736, "r": 428.14206, "b": 335.48035, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "CUSTOMERS ", "bbox": {"l": 428.10013, "t": 326.26736, "r": 494.30425999999994, "b": 335.48035, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "table and ", "bbox": {"l": 494.34009, "t": 326.26736, "r": 538.0177, "b": 335.48035, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "select ", "bbox": {"l": 151.20013, "t": 338.26718, "r": 180.07518, "b": 347.48016000000007, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Definition", "bbox": {"l": 180.06023, "t": 338.26718, "r": 226.23678999999998, "b": 347.48016000000007, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": ", as shown Figure 4-36", "bbox": {"l": 226.14017, "t": 338.26718, "r": 327.7511, "b": 347.48016000000007, "coord_origin": "TOPLEFT"}}]}, "text": "1. Create a check constraint on the column CUSTOMER_EMAIL in the CUSTOMERS table. From the navigation pane of System i Navigator, right-click the CUSTOMERS table and select Definition , as shown Figure 4-36"}, {"label": "caption", "id": 8, "page_no": 75, "cluster": {"id": 8, "label": "caption", "bbox": {"l": 135.78135681152344, "t": 471.4366455078125, "r": 334.3720397949219, "b": 480.8490295410156, "coord_origin": "TOPLEFT"}, "confidence": 0.9464175701141357, "cells": [{"id": 23, "text": "Figure 4-36 Definition of the CUSTOMERS table", "bbox": {"l": 136.8, "t": 472.09799, "r": 334.01611, "b": 480.423, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-36 Definition of the CUSTOMERS table"}, {"label": "list_item", "id": 9, "page_no": 75, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.75648498535156, "t": 497.3858337402344, "r": 547.73962, "b": 519.6641845703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9690989851951599, "cells": [{"id": 24, "text": "2.", "bbox": {"l": 136.8, "t": 498.04874, "r": 145.07706, "b": 507.26172, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "From the CUSTOMERS definition window, click the ", "bbox": {"l": 147.83607, "t": 498.04874, "r": 376.15961, "b": 507.26172, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Check Constraints", "bbox": {"l": 376.08002, "t": 498.04874, "r": 463.7648899999999, "b": 507.26172, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": " tab and click ", "bbox": {"l": 463.73996, "t": 498.04874, "r": 522.76489, "b": 507.26172, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Add", "bbox": {"l": 522.77985, "t": 498.04874, "r": 542.0744, "b": 507.26172, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ", ", "bbox": {"l": 542.10028, "t": 498.04874, "r": 547.73962, "b": 507.26172, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "as shown in Figure 4-37.", "bbox": {"l": 151.20013, "t": 510.04855, "r": 260.45734, "b": 519.26154, "coord_origin": "TOPLEFT"}}]}, "text": "2. From the CUSTOMERS definition window, click the Check Constraints tab and click Add , as shown in Figure 4-37."}, {"label": "caption", "id": 10, "page_no": 75, "cluster": {"id": 10, "label": "caption", "bbox": {"l": 64.25939178466797, "t": 602.9214477539062, "r": 221.74893188476562, "b": 612.18291, "coord_origin": "TOPLEFT"}, "confidence": 0.9495618343353271, "cells": [{"id": 31, "text": "Figure 4-37 Adding a check constraint", "bbox": {"l": 64.800003, "t": 603.85789, "r": 220.9212, "b": 612.18291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-37 Adding a check constraint"}, {"label": "picture", "id": 11, "page_no": 75, "cluster": {"id": 11, "label": "picture", "bbox": {"l": 136.29519653320312, "t": 362.13775634765625, "r": 545.3217163085938, "b": 468.5462951660156, "coord_origin": "TOPLEFT"}, "confidence": 0.983352780342102, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 12, "page_no": 75, "cluster": {"id": 12, "label": "picture", "bbox": {"l": 64.00347900390625, "t": 533.6920776367188, "r": 546.5211181640625, "b": 600.8970947265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9819415807723999, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 13, "page_no": 75, "cluster": {"id": 13, "label": "picture", "bbox": {"l": 64.02095031738281, "t": 107.45484924316406, "r": 547.409912109375, "b": 180.8109893798828, "coord_origin": "TOPLEFT"}, "confidence": 0.9703426361083984, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 75, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.86886596679688, "t": 70.40605926513672, "r": 525.70728, "b": 92.86236572265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9647813439369202, "cells": [{"id": 2, "text": "4.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.15868, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "To verify that the column masks are enabled, from System i Navigator, click ", "bbox": {"l": 147.94489, "t": 71.50867000000005, "r": 485.4787, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Column ", "bbox": {"l": 485.40002, "t": 71.50867000000005, "r": 525.39343, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Masks", "bbox": {"l": 151.2002, "t": 83.50847999999996, "r": 181.74052, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ", as shown in Figure 4-35. The seven column masks are created and enabled.", "bbox": {"l": 181.62003, "t": 83.50847999999996, "r": 525.70728, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "4. To verify that the column masks are enabled, from System i Navigator, click Column Masks , as shown in Figure 4-35. The seven column masks are created and enabled."}, {"label": "caption", "id": 3, "page_no": 75, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.10326385498047, "t": 183.41061401367188, "r": 285.1827087402344, "b": 192.7096710205078, "coord_origin": "TOPLEFT"}, "confidence": 0.9432595372200012, "cells": [{"id": 7, "text": "Figure 4-35 List of column masks on BANK_SCHEMA", "bbox": {"l": 64.800003, "t": 184.27801999999997, "r": 285.03, "b": 192.60297000000003, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-35 List of column masks on BANK_SCHEMA"}, {"label": "section_header", "id": 4, "page_no": 75, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.0513916015625, "t": 212.59413146972656, "r": 433.79065, "b": 225.7198028564453, "coord_origin": "TOPLEFT"}, "confidence": 0.9636105895042419, "cells": [{"id": 8, "text": "4.3.7", "bbox": {"l": 64.800003, "t": 213.11469, "r": 93.985405, "b": 225.10271999999998, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Restricting the inserting and updating of masked data", "bbox": {"l": 97.633568, "t": 213.11469, "r": 433.79065, "b": 225.10271999999998, "coord_origin": "TOPLEFT"}}]}, "text": "4.3.7 Restricting the inserting and updating of masked data"}, {"label": "text", "id": 5, "page_no": 75, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.85455322265625, "t": 238.7532196044922, "r": 544.92688, "b": 284.9345397949219, "coord_origin": "TOPLEFT"}, "confidence": 0.9866855144500732, "cells": [{"id": 10, "text": "This step defines the check constraints that support the column masks to make sure that on ", "bbox": {"l": 136.8, "t": 239.26868000000002, "r": 544.46484, "b": 248.48168999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "INSERTS or UPDATES, data is not written with a masked value. For more information about ", "bbox": {"l": 136.8, "t": 251.26849000000004, "r": 544.92688, "b": 260.48150999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "the propagation of masked data, see 6.8, \u201cAvoiding propagation of masked data\u201d on ", "bbox": {"l": 136.8, "t": 263.26831000000004, "r": 508.48523, "b": 272.48132, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "page 108.", "bbox": {"l": 136.8, "t": 275.26813000000004, "r": 181.30827, "b": 284.48114, "coord_origin": "TOPLEFT"}}]}, "text": "This step defines the check constraints that support the column masks to make sure that on INSERTS or UPDATES, data is not written with a masked value. For more information about the propagation of masked data, see 6.8, \u201cAvoiding propagation of masked data\u201d on page 108."}, {"label": "section_header", "id": 6, "page_no": 75, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 136.1099090576172, "t": 296.4962158203125, "r": 266.86069, "b": 307.0681457519531, "coord_origin": "TOPLEFT"}, "confidence": 0.8199454545974731, "cells": [{"id": 14, "text": "Complete the following steps:", "bbox": {"l": 136.8, "t": 297.2279700000001, "r": 266.86069, "b": 306.44095, "coord_origin": "TOPLEFT"}}]}, "text": "Complete the following steps:"}, {"label": "list_item", "id": 7, "page_no": 75, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 136.3522491455078, "t": 313.09881591796875, "r": 547.19568, "b": 347.6925048828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9741182923316956, "cells": [{"id": 15, "text": "1.", "bbox": {"l": 136.8, "t": 314.26755, "r": 145.1564, "b": 323.48053, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Create a check constraint on the column CUSTOMER_EMAIL in the CUSTOMERS table. ", "bbox": {"l": 147.94186, "t": 314.26755, "r": 547.19568, "b": 323.48053, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "From the navigation pane of System i Navigator, right-click the ", "bbox": {"l": 151.20016, "t": 326.26736, "r": 428.14206, "b": 335.48035, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "CUSTOMERS ", "bbox": {"l": 428.10013, "t": 326.26736, "r": 494.30425999999994, "b": 335.48035, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "table and ", "bbox": {"l": 494.34009, "t": 326.26736, "r": 538.0177, "b": 335.48035, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "select ", "bbox": {"l": 151.20013, "t": 338.26718, "r": 180.07518, "b": 347.48016000000007, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Definition", "bbox": {"l": 180.06023, "t": 338.26718, "r": 226.23678999999998, "b": 347.48016000000007, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": ", as shown Figure 4-36", "bbox": {"l": 226.14017, "t": 338.26718, "r": 327.7511, "b": 347.48016000000007, "coord_origin": "TOPLEFT"}}]}, "text": "1. Create a check constraint on the column CUSTOMER_EMAIL in the CUSTOMERS table. From the navigation pane of System i Navigator, right-click the CUSTOMERS table and select Definition , as shown Figure 4-36"}, {"label": "caption", "id": 8, "page_no": 75, "cluster": {"id": 8, "label": "caption", "bbox": {"l": 135.78135681152344, "t": 471.4366455078125, "r": 334.3720397949219, "b": 480.8490295410156, "coord_origin": "TOPLEFT"}, "confidence": 0.9464175701141357, "cells": [{"id": 23, "text": "Figure 4-36 Definition of the CUSTOMERS table", "bbox": {"l": 136.8, "t": 472.09799, "r": 334.01611, "b": 480.423, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-36 Definition of the CUSTOMERS table"}, {"label": "list_item", "id": 9, "page_no": 75, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.75648498535156, "t": 497.3858337402344, "r": 547.73962, "b": 519.6641845703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9690989851951599, "cells": [{"id": 24, "text": "2.", "bbox": {"l": 136.8, "t": 498.04874, "r": 145.07706, "b": 507.26172, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "From the CUSTOMERS definition window, click the ", "bbox": {"l": 147.83607, "t": 498.04874, "r": 376.15961, "b": 507.26172, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Check Constraints", "bbox": {"l": 376.08002, "t": 498.04874, "r": 463.7648899999999, "b": 507.26172, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": " tab and click ", "bbox": {"l": 463.73996, "t": 498.04874, "r": 522.76489, "b": 507.26172, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Add", "bbox": {"l": 522.77985, "t": 498.04874, "r": 542.0744, "b": 507.26172, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ", ", "bbox": {"l": 542.10028, "t": 498.04874, "r": 547.73962, "b": 507.26172, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "as shown in Figure 4-37.", "bbox": {"l": 151.20013, "t": 510.04855, "r": 260.45734, "b": 519.26154, "coord_origin": "TOPLEFT"}}]}, "text": "2. From the CUSTOMERS definition window, click the Check Constraints tab and click Add , as shown in Figure 4-37."}, {"label": "caption", "id": 10, "page_no": 75, "cluster": {"id": 10, "label": "caption", "bbox": {"l": 64.25939178466797, "t": 602.9214477539062, "r": 221.74893188476562, "b": 612.18291, "coord_origin": "TOPLEFT"}, "confidence": 0.9495618343353271, "cells": [{"id": 31, "text": "Figure 4-37 Adding a check constraint", "bbox": {"l": 64.800003, "t": 603.85789, "r": 220.9212, "b": 612.18291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-37 Adding a check constraint"}, {"label": "picture", "id": 11, "page_no": 75, "cluster": {"id": 11, "label": "picture", "bbox": {"l": 136.29519653320312, "t": 362.13775634765625, "r": 545.3217163085938, "b": 468.5462951660156, "coord_origin": "TOPLEFT"}, "confidence": 0.983352780342102, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 12, "page_no": 75, "cluster": {"id": 12, "label": "picture", "bbox": {"l": 64.00347900390625, "t": 533.6920776367188, "r": 546.5211181640625, "b": 600.8970947265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9819415807723999, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 13, "page_no": 75, "cluster": {"id": 13, "label": "picture", "bbox": {"l": 64.02095031738281, "t": 107.45484924316406, "r": 547.409912109375, "b": 180.8109893798828, "coord_origin": "TOPLEFT"}, "confidence": 0.9703426361083984, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 75, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.13931274414062, "t": 754.37646484375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9181943535804749, "cells": [{"id": 0, "text": "60 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "60"}, {"label": "page_footer", "id": 1, "page_no": 75, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.2583236694336, "t": 754.7027587890625, "r": 334.42142, "b": 763.9403686523438, "coord_origin": "TOPLEFT"}, "confidence": 0.9538118243217468, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 76, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "61", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "3.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.18819, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The New Check Constraint window opens, as shown in Figure 4-38. Complete the ", "bbox": {"l": 147.98439, "t": 71.50903000000005, "r": 515.81549, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "following steps:", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 219.05225, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "a.", "bbox": {"l": 151.19975, "t": 100.48865, "r": 160.00291, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Select the ", "bbox": {"l": 162.9373, "t": 100.48865, "r": 212.81131, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "CUSTOMER_EMAIL", "bbox": {"l": 212.81927, "t": 100.48865, "r": 306.29187, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": " column.", "bbox": {"l": 306.23911, "t": 100.48865, "r": 344.06818, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "b.", "bbox": {"l": 151.19875, "t": 117.52819999999997, "r": 159.57977, "b": 126.74121000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Enter the check constraint condition. In this example, specify CUSTOMER_EMAIL to ", "bbox": {"l": 162.37343, "t": 117.52819999999997, "r": 541.59985, "b": 126.74121000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "be different from ****@****, which is the mask value.", "bbox": {"l": 165.59891, "t": 129.52801999999997, "r": 395.45975, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "c.", "bbox": {"l": 151.19875, "t": 146.50780999999995, "r": 159.48901, "b": 155.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Select the ", "bbox": {"l": 162.45135, "t": 146.50780999999995, "r": 212.80035, "b": 155.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "On update violation, preserve column value ", "bbox": {"l": 212.81827, "t": 146.50780999999995, "r": 422.71716, "b": 155.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "option and click ", "bbox": {"l": 422.69836, "t": 146.50780999999995, "r": 494.17922999999996, "b": 155.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "OK", "bbox": {"l": 494.15839, "t": 146.50780999999995, "r": 509.08044000000007, "b": 155.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ".", "bbox": {"l": 509.15814, "t": 146.50780999999995, "r": 511.92703, "b": 155.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Figure 4-38 Specifying a new check constraint on the CUSTOMERS table", "bbox": {"l": 64.800003, "t": 654.19789, "r": 361.97821, "b": 662.5228999999999, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 214.33963012695312, "t": 754.6822509765625, "r": 523.59357, "b": 764.0059204101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9542582035064697, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.6194458007812, "t": 754.259521484375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9045737385749817, "cells": [{"id": 1, "text": "61", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 136.19448852539062, "t": 70.60295867919922, "r": 515.81549, "b": 92.99156951904297, "coord_origin": "TOPLEFT"}, "confidence": 0.9727184176445007, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.18819, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The New Check Constraint window opens, as shown in Figure 4-38. Complete the ", "bbox": {"l": 147.98439, "t": 71.50903000000005, "r": 515.81549, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "following steps:", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 219.05225, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "list_item", "bbox": {"l": 150.47923278808594, "t": 99.40367889404297, "r": 344.06818, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9255325794219971, "cells": [{"id": 5, "text": "a.", "bbox": {"l": 151.19975, "t": 100.48865, "r": 160.00291, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Select the ", "bbox": {"l": 162.9373, "t": 100.48865, "r": 212.81131, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "CUSTOMER_EMAIL", "bbox": {"l": 212.81927, "t": 100.48865, "r": 306.29187, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": " column.", "bbox": {"l": 306.23911, "t": 100.48865, "r": 344.06818, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 150.597412109375, "t": 116.41293334960938, "r": 541.59985, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9738664627075195, "cells": [{"id": 9, "text": "b.", "bbox": {"l": 151.19875, "t": 117.52819999999997, "r": 159.57977, "b": 126.74121000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Enter the check constraint condition. In this example, specify CUSTOMER_EMAIL to ", "bbox": {"l": 162.37343, "t": 117.52819999999997, "r": 541.59985, "b": 126.74121000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "be different from ****@****, which is the mask value.", "bbox": {"l": 165.59891, "t": 129.52801999999997, "r": 395.45975, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 150.6071319580078, "t": 145.43560791015625, "r": 511.92703, "b": 155.8599853515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9509996175765991, "cells": [{"id": 12, "text": "c.", "bbox": {"l": 151.19875, "t": 146.50780999999995, "r": 159.48901, "b": 155.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Select the ", "bbox": {"l": 162.45135, "t": 146.50780999999995, "r": 212.80035, "b": 155.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "On update violation, preserve column value ", "bbox": {"l": 212.81827, "t": 146.50780999999995, "r": 422.71716, "b": 155.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "option and click ", "bbox": {"l": 422.69836, "t": 146.50780999999995, "r": 494.17922999999996, "b": 155.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "OK", "bbox": {"l": 494.15839, "t": 146.50780999999995, "r": 509.08044000000007, "b": 155.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ".", "bbox": {"l": 509.15814, "t": 146.50780999999995, "r": 511.92703, "b": 155.72082999999998, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "caption", "bbox": {"l": 64.2974853515625, "t": 653.2451782226562, "r": 362.4355773925781, "b": 662.75830078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9486740827560425, "cells": [{"id": 18, "text": "Figure 4-38 Specifying a new check constraint on the CUSTOMERS table", "bbox": {"l": 64.800003, "t": 654.19789, "r": 361.97821, "b": 662.5228999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "picture", "bbox": {"l": 63.89818572998047, "t": 169.34371948242188, "r": 543.365966796875, "b": 650.5548095703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9851900935173035, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 76, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.33963012695312, "t": 754.6822509765625, "r": 523.59357, "b": 764.0059204101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9542582035064697, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 76, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6194458007812, "t": 754.259521484375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9045737385749817, "cells": [{"id": 1, "text": "61", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "61"}, {"label": "list_item", "id": 2, "page_no": 76, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.19448852539062, "t": 70.60295867919922, "r": 515.81549, "b": 92.99156951904297, "coord_origin": "TOPLEFT"}, "confidence": 0.9727184176445007, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.18819, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The New Check Constraint window opens, as shown in Figure 4-38. Complete the ", "bbox": {"l": 147.98439, "t": 71.50903000000005, "r": 515.81549, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "following steps:", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 219.05225, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "3. The New Check Constraint window opens, as shown in Figure 4-38. Complete the following steps:"}, {"label": "list_item", "id": 3, "page_no": 76, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 150.47923278808594, "t": 99.40367889404297, "r": 344.06818, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9255325794219971, "cells": [{"id": 5, "text": "a.", "bbox": {"l": 151.19975, "t": 100.48865, "r": 160.00291, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Select the ", "bbox": {"l": 162.9373, "t": 100.48865, "r": 212.81131, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "CUSTOMER_EMAIL", "bbox": {"l": 212.81927, "t": 100.48865, "r": 306.29187, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": " column.", "bbox": {"l": 306.23911, "t": 100.48865, "r": 344.06818, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}]}, "text": "a. Select the CUSTOMER_EMAIL column."}, {"label": "list_item", "id": 4, "page_no": 76, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 150.597412109375, "t": 116.41293334960938, "r": 541.59985, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9738664627075195, "cells": [{"id": 9, "text": "b.", "bbox": {"l": 151.19875, "t": 117.52819999999997, "r": 159.57977, "b": 126.74121000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Enter the check constraint condition. In this example, specify CUSTOMER_EMAIL to ", "bbox": {"l": 162.37343, "t": 117.52819999999997, "r": 541.59985, "b": 126.74121000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "be different from ****@****, which is the mask value.", "bbox": {"l": 165.59891, "t": 129.52801999999997, "r": 395.45975, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}]}, "text": "b. Enter the check constraint condition. In this example, specify CUSTOMER_EMAIL to be different from ****@****, which is the mask value."}, {"label": "list_item", "id": 5, "page_no": 76, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 150.6071319580078, "t": 145.43560791015625, "r": 511.92703, "b": 155.8599853515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9509996175765991, "cells": [{"id": 12, "text": "c.", "bbox": {"l": 151.19875, "t": 146.50780999999995, "r": 159.48901, "b": 155.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Select the ", "bbox": {"l": 162.45135, "t": 146.50780999999995, "r": 212.80035, "b": 155.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "On update violation, preserve column value ", "bbox": {"l": 212.81827, "t": 146.50780999999995, "r": 422.71716, "b": 155.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "option and click ", "bbox": {"l": 422.69836, "t": 146.50780999999995, "r": 494.17922999999996, "b": 155.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "OK", "bbox": {"l": 494.15839, "t": 146.50780999999995, "r": 509.08044000000007, "b": 155.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ".", "bbox": {"l": 509.15814, "t": 146.50780999999995, "r": 511.92703, "b": 155.72082999999998, "coord_origin": "TOPLEFT"}}]}, "text": "c. Select the On update violation, preserve column value option and click OK ."}, {"label": "caption", "id": 6, "page_no": 76, "cluster": {"id": 6, "label": "caption", "bbox": {"l": 64.2974853515625, "t": 653.2451782226562, "r": 362.4355773925781, "b": 662.75830078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9486740827560425, "cells": [{"id": 18, "text": "Figure 4-38 Specifying a new check constraint on the CUSTOMERS table", "bbox": {"l": 64.800003, "t": 654.19789, "r": 361.97821, "b": 662.5228999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-38 Specifying a new check constraint on the CUSTOMERS table"}, {"label": "picture", "id": 7, "page_no": 76, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 63.89818572998047, "t": 169.34371948242188, "r": 543.365966796875, "b": 650.5548095703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9851900935173035, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 76, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.19448852539062, "t": 70.60295867919922, "r": 515.81549, "b": 92.99156951904297, "coord_origin": "TOPLEFT"}, "confidence": 0.9727184176445007, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.18819, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The New Check Constraint window opens, as shown in Figure 4-38. Complete the ", "bbox": {"l": 147.98439, "t": 71.50903000000005, "r": 515.81549, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "following steps:", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 219.05225, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "3. The New Check Constraint window opens, as shown in Figure 4-38. Complete the following steps:"}, {"label": "list_item", "id": 3, "page_no": 76, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 150.47923278808594, "t": 99.40367889404297, "r": 344.06818, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9255325794219971, "cells": [{"id": 5, "text": "a.", "bbox": {"l": 151.19975, "t": 100.48865, "r": 160.00291, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Select the ", "bbox": {"l": 162.9373, "t": 100.48865, "r": 212.81131, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "CUSTOMER_EMAIL", "bbox": {"l": 212.81927, "t": 100.48865, "r": 306.29187, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": " column.", "bbox": {"l": 306.23911, "t": 100.48865, "r": 344.06818, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}]}, "text": "a. Select the CUSTOMER_EMAIL column."}, {"label": "list_item", "id": 4, "page_no": 76, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 150.597412109375, "t": 116.41293334960938, "r": 541.59985, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9738664627075195, "cells": [{"id": 9, "text": "b.", "bbox": {"l": 151.19875, "t": 117.52819999999997, "r": 159.57977, "b": 126.74121000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Enter the check constraint condition. In this example, specify CUSTOMER_EMAIL to ", "bbox": {"l": 162.37343, "t": 117.52819999999997, "r": 541.59985, "b": 126.74121000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "be different from ****@****, which is the mask value.", "bbox": {"l": 165.59891, "t": 129.52801999999997, "r": 395.45975, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}]}, "text": "b. Enter the check constraint condition. In this example, specify CUSTOMER_EMAIL to be different from ****@****, which is the mask value."}, {"label": "list_item", "id": 5, "page_no": 76, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 150.6071319580078, "t": 145.43560791015625, "r": 511.92703, "b": 155.8599853515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9509996175765991, "cells": [{"id": 12, "text": "c.", "bbox": {"l": 151.19875, "t": 146.50780999999995, "r": 159.48901, "b": 155.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Select the ", "bbox": {"l": 162.45135, "t": 146.50780999999995, "r": 212.80035, "b": 155.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "On update violation, preserve column value ", "bbox": {"l": 212.81827, "t": 146.50780999999995, "r": 422.71716, "b": 155.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "option and click ", "bbox": {"l": 422.69836, "t": 146.50780999999995, "r": 494.17922999999996, "b": 155.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "OK", "bbox": {"l": 494.15839, "t": 146.50780999999995, "r": 509.08044000000007, "b": 155.72082999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ".", "bbox": {"l": 509.15814, "t": 146.50780999999995, "r": 511.92703, "b": 155.72082999999998, "coord_origin": "TOPLEFT"}}]}, "text": "c. Select the On update violation, preserve column value option and click OK ."}, {"label": "caption", "id": 6, "page_no": 76, "cluster": {"id": 6, "label": "caption", "bbox": {"l": 64.2974853515625, "t": 653.2451782226562, "r": 362.4355773925781, "b": 662.75830078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9486740827560425, "cells": [{"id": 18, "text": "Figure 4-38 Specifying a new check constraint on the CUSTOMERS table", "bbox": {"l": 64.800003, "t": 654.19789, "r": 361.97821, "b": 662.5228999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-38 Specifying a new check constraint on the CUSTOMERS table"}, {"label": "picture", "id": 7, "page_no": 76, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 63.89818572998047, "t": 169.34371948242188, "r": 543.365966796875, "b": 650.5548095703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9851900935173035, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 76, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.33963012695312, "t": 754.6822509765625, "r": 523.59357, "b": 764.0059204101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9542582035064697, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 76, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6194458007812, "t": 754.259521484375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9045737385749817, "cells": [{"id": 1, "text": "61", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "61"}]}}, {"page_no": 77, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "62 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "4.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.18027, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 4-39 shows that there is now a check constraint on the CUSTOMERS table that ", "bbox": {"l": 147.97366, "t": 71.50867000000005, "r": 535.55554, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "prevents any masked data from being updated to the CUSTOMER_EMAIL column.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 517.11249, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Figure 4-39 Check constraint on the CUSTOMERS table", "bbox": {"l": 64.800003, "t": 387.43799, "r": 293.78427, "b": 395.763, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "5.", "bbox": {"l": 136.8, "t": 413.38873, "r": 145.20113, "b": 422.60172, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Create all the other check constraints that are associated to each of the masks on the ", "bbox": {"l": 148.00148, "t": 413.38873, "r": 531.54163, "b": 422.60172, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "CUSTOMERS table. After this is done, these constraints should look like the ones that are ", "bbox": {"l": 151.20016, "t": 425.38855, "r": 547.27332, "b": 434.6015300000001, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "shown in Figure 4-40.", "bbox": {"l": 151.20016, "t": 437.38837, "r": 247.20359999999997, "b": 446.60135, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Figure 4-40 List of check constraints on the CUSTOMERS table", "bbox": {"l": 64.800003, "t": 603.37799, "r": 322.73096, "b": 611.703, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.20623016357422, "t": 754.3389282226562, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9119569659233093, "cells": [{"id": 0, "text": "62 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.26509857177734, "t": 754.6648559570312, "r": 334.42142, "b": 763.939453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9529509544372559, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 135.84481811523438, "t": 70.5638198852539, "r": 535.55554, "b": 92.91973876953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9732864499092102, "cells": [{"id": 2, "text": "4.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.18027, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 4-39 shows that there is now a check constraint on the CUSTOMERS table that ", "bbox": {"l": 147.97366, "t": 71.50867000000005, "r": 535.55554, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "prevents any masked data from being updated to the CUSTOMER_EMAIL column.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 517.11249, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.23225402832031, "t": 386.5921325683594, "r": 294.2088317871094, "b": 395.9991455078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9511763453483582, "cells": [{"id": 5, "text": "Figure 4-39 Check constraint on the CUSTOMERS table", "bbox": {"l": 64.800003, "t": 387.43799, "r": 293.78427, "b": 395.763, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 136.3284149169922, "t": 412.6619567871094, "r": 547.27332, "b": 447.14215087890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9731178879737854, "cells": [{"id": 6, "text": "5.", "bbox": {"l": 136.8, "t": 413.38873, "r": 145.20113, "b": 422.60172, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Create all the other check constraints that are associated to each of the masks on the ", "bbox": {"l": 148.00148, "t": 413.38873, "r": 531.54163, "b": 422.60172, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "CUSTOMERS table. After this is done, these constraints should look like the ones that are ", "bbox": {"l": 151.20016, "t": 425.38855, "r": 547.27332, "b": 434.6015300000001, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "shown in Figure 4-40.", "bbox": {"l": 151.20016, "t": 437.38837, "r": 247.20359999999997, "b": 446.60135, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 64.24510955810547, "t": 602.5396118164062, "r": 323.0049743652344, "b": 611.9821166992188, "coord_origin": "TOPLEFT"}, "confidence": 0.9424684047698975, "cells": [{"id": 10, "text": "Figure 4-40 List of check constraints on the CUSTOMERS table", "bbox": {"l": 64.800003, "t": 603.37799, "r": 322.73096, "b": 611.703, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "picture", "bbox": {"l": 63.67375564575195, "t": 107.14707946777344, "r": 546.8531494140625, "b": 383.6925354003906, "coord_origin": "TOPLEFT"}, "confidence": 0.9858631491661072, "cells": []}, {"id": 7, "label": "picture", "bbox": {"l": 63.88129806518555, "t": 461.2124938964844, "r": 543.3204956054688, "b": 600.3211669921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9816429018974304, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 77, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.20623016357422, "t": 754.3389282226562, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9119569659233093, "cells": [{"id": 0, "text": "62 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "62"}, {"label": "page_footer", "id": 1, "page_no": 77, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.26509857177734, "t": 754.6648559570312, "r": 334.42142, "b": 763.939453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9529509544372559, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "list_item", "id": 2, "page_no": 77, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.84481811523438, "t": 70.5638198852539, "r": 535.55554, "b": 92.91973876953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9732864499092102, "cells": [{"id": 2, "text": "4.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.18027, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 4-39 shows that there is now a check constraint on the CUSTOMERS table that ", "bbox": {"l": 147.97366, "t": 71.50867000000005, "r": 535.55554, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "prevents any masked data from being updated to the CUSTOMER_EMAIL column.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 517.11249, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "4. Figure 4-39 shows that there is now a check constraint on the CUSTOMERS table that prevents any masked data from being updated to the CUSTOMER_EMAIL column."}, {"label": "caption", "id": 3, "page_no": 77, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.23225402832031, "t": 386.5921325683594, "r": 294.2088317871094, "b": 395.9991455078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9511763453483582, "cells": [{"id": 5, "text": "Figure 4-39 Check constraint on the CUSTOMERS table", "bbox": {"l": 64.800003, "t": 387.43799, "r": 293.78427, "b": 395.763, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-39 Check constraint on the CUSTOMERS table"}, {"label": "list_item", "id": 4, "page_no": 77, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.3284149169922, "t": 412.6619567871094, "r": 547.27332, "b": 447.14215087890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9731178879737854, "cells": [{"id": 6, "text": "5.", "bbox": {"l": 136.8, "t": 413.38873, "r": 145.20113, "b": 422.60172, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Create all the other check constraints that are associated to each of the masks on the ", "bbox": {"l": 148.00148, "t": 413.38873, "r": 531.54163, "b": 422.60172, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "CUSTOMERS table. After this is done, these constraints should look like the ones that are ", "bbox": {"l": 151.20016, "t": 425.38855, "r": 547.27332, "b": 434.6015300000001, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "shown in Figure 4-40.", "bbox": {"l": 151.20016, "t": 437.38837, "r": 247.20359999999997, "b": 446.60135, "coord_origin": "TOPLEFT"}}]}, "text": "5. Create all the other check constraints that are associated to each of the masks on the CUSTOMERS table. After this is done, these constraints should look like the ones that are shown in Figure 4-40."}, {"label": "caption", "id": 5, "page_no": 77, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.24510955810547, "t": 602.5396118164062, "r": 323.0049743652344, "b": 611.9821166992188, "coord_origin": "TOPLEFT"}, "confidence": 0.9424684047698975, "cells": [{"id": 10, "text": "Figure 4-40 List of check constraints on the CUSTOMERS table", "bbox": {"l": 64.800003, "t": 603.37799, "r": 322.73096, "b": 611.703, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-40 List of check constraints on the CUSTOMERS table"}, {"label": "picture", "id": 6, "page_no": 77, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 63.67375564575195, "t": 107.14707946777344, "r": 546.8531494140625, "b": 383.6925354003906, "coord_origin": "TOPLEFT"}, "confidence": 0.9858631491661072, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 7, "page_no": 77, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 63.88129806518555, "t": 461.2124938964844, "r": 543.3204956054688, "b": 600.3211669921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9816429018974304, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 77, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.84481811523438, "t": 70.5638198852539, "r": 535.55554, "b": 92.91973876953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9732864499092102, "cells": [{"id": 2, "text": "4.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.18027, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 4-39 shows that there is now a check constraint on the CUSTOMERS table that ", "bbox": {"l": 147.97366, "t": 71.50867000000005, "r": 535.55554, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "prevents any masked data from being updated to the CUSTOMER_EMAIL column.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 517.11249, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "4. Figure 4-39 shows that there is now a check constraint on the CUSTOMERS table that prevents any masked data from being updated to the CUSTOMER_EMAIL column."}, {"label": "caption", "id": 3, "page_no": 77, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.23225402832031, "t": 386.5921325683594, "r": 294.2088317871094, "b": 395.9991455078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9511763453483582, "cells": [{"id": 5, "text": "Figure 4-39 Check constraint on the CUSTOMERS table", "bbox": {"l": 64.800003, "t": 387.43799, "r": 293.78427, "b": 395.763, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-39 Check constraint on the CUSTOMERS table"}, {"label": "list_item", "id": 4, "page_no": 77, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.3284149169922, "t": 412.6619567871094, "r": 547.27332, "b": 447.14215087890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9731178879737854, "cells": [{"id": 6, "text": "5.", "bbox": {"l": 136.8, "t": 413.38873, "r": 145.20113, "b": 422.60172, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Create all the other check constraints that are associated to each of the masks on the ", "bbox": {"l": 148.00148, "t": 413.38873, "r": 531.54163, "b": 422.60172, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "CUSTOMERS table. After this is done, these constraints should look like the ones that are ", "bbox": {"l": 151.20016, "t": 425.38855, "r": 547.27332, "b": 434.6015300000001, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "shown in Figure 4-40.", "bbox": {"l": 151.20016, "t": 437.38837, "r": 247.20359999999997, "b": 446.60135, "coord_origin": "TOPLEFT"}}]}, "text": "5. Create all the other check constraints that are associated to each of the masks on the CUSTOMERS table. After this is done, these constraints should look like the ones that are shown in Figure 4-40."}, {"label": "caption", "id": 5, "page_no": 77, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.24510955810547, "t": 602.5396118164062, "r": 323.0049743652344, "b": 611.9821166992188, "coord_origin": "TOPLEFT"}, "confidence": 0.9424684047698975, "cells": [{"id": 10, "text": "Figure 4-40 List of check constraints on the CUSTOMERS table", "bbox": {"l": 64.800003, "t": 603.37799, "r": 322.73096, "b": 611.703, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-40 List of check constraints on the CUSTOMERS table"}, {"label": "picture", "id": 6, "page_no": 77, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 63.67375564575195, "t": 107.14707946777344, "r": 546.8531494140625, "b": 383.6925354003906, "coord_origin": "TOPLEFT"}, "confidence": 0.9858631491661072, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 7, "page_no": 77, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 63.88129806518555, "t": 461.2124938964844, "r": 543.3204956054688, "b": 600.3211669921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9816429018974304, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 77, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.20623016357422, "t": 754.3389282226562, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9119569659233093, "cells": [{"id": 0, "text": "62 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "62"}, {"label": "page_footer", "id": 1, "page_no": 77, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.26509857177734, "t": 754.6648559570312, "r": 334.42142, "b": 763.939453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9529509544372559, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 78, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "63", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "4.3.8", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 93.937424, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Activating row and column access control", "bbox": {"l": 97.57959, "t": 71.33471999999995, "r": 360.40594, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "You are now ready to activate RCAC on all three tables in this example. Complete the ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 516.22321, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "following steps:", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 204.65848, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "1.", "bbox": {"l": 136.8, "t": 126.52808000000005, "r": 145.15627, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Start by enabling RCAC on the CUSTOMERS table. From System i Navigator, right-click ", "bbox": {"l": 147.94167, "t": 126.52808000000005, "r": 542.70996, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "the ", "bbox": {"l": 151.20016, "t": 138.52788999999996, "r": 167.81343, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CUSTOMERS", "bbox": {"l": 167.88017, "t": 138.52788999999996, "r": 231.29152, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": " table and select ", "bbox": {"l": 231.30048000000002, "t": 138.52788999999996, "r": 306.71658, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Definition", "bbox": {"l": 306.66083, "t": 138.52788999999996, "r": 352.81055, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": ". As shown in Figure 4-41, make sure that ", "bbox": {"l": 352.80054, "t": 138.52788999999996, "r": 540.20892, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "you select ", "bbox": {"l": 151.20018, "t": 150.52770999999996, "r": 198.73924, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Row access control", "bbox": {"l": 198.78009, "t": 150.52770999999996, "r": 292.3035, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": " and ", "bbox": {"l": 292.32043, "t": 150.52770999999996, "r": 314.64279, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Column access control", "bbox": {"l": 314.52026, "t": 150.52770999999996, "r": 424.31631, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ". Click ", "bbox": {"l": 424.32031, "t": 150.52770999999996, "r": 454.07382, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "OK", "bbox": {"l": 454.0798, "t": 150.52770999999996, "r": 469.1214, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ".", "bbox": {"l": 469.07956, "t": 150.52770999999996, "r": 471.84845, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Figure 4-41 Enabling RCAC on the CUSTOMERS table", "bbox": {"l": 136.8, "t": 336.31799, "r": 361.49582, "b": 344.64301, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "2.", "bbox": {"l": 136.8, "t": 362.26874, "r": 145.19742, "b": 371.48172000000005, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Enable RCAC on the ACCOUNTS table. Right-click the ", "bbox": {"l": 147.99657, "t": 362.26874, "r": 396.99893, "b": 371.48172000000005, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ACCOUNTS ", "bbox": {"l": 397.01996, "t": 362.26874, "r": 456.02994, "b": 371.48172000000005, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "table and select ", "bbox": {"l": 456.00009000000006, "t": 362.26874, "r": 528.64832, "b": 371.48172000000005, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Definition", "bbox": {"l": 151.2002, "t": 374.26855, "r": 197.23233, "b": 383.48154, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": ". As shown Figure 4-42, make sure that you select ", "bbox": {"l": 197.28014, "t": 374.26855, "r": 421.7308, "b": 383.48154, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Row access control", "bbox": {"l": 421.73969, "t": 374.26855, "r": 515.25806, "b": 383.48154, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": " and ", "bbox": {"l": 515.21924, "t": 374.26855, "r": 537.47778, "b": 383.48154, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Column access control", "bbox": {"l": 151.19919, "t": 386.26837, "r": 261.00516, "b": 395.48135, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": ". Click ", "bbox": {"l": 260.93945, "t": 386.26837, "r": 290.77264, "b": 395.48135, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "OK", "bbox": {"l": 290.7597, "t": 386.26837, "r": 305.68176, "b": 395.48135, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": ".", "bbox": {"l": 305.75946, "t": 386.26837, "r": 308.52835, "b": 395.48135, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Figure 4-42 Enabling RCAC on ACCOUNTS", "bbox": {"l": 136.8, "t": 576.7979, "r": 317.85483, "b": 585.12291, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 214.27894592285156, "t": 754.7236328125, "r": 523.59357, "b": 764.05419921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9573627710342407, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.566162109375, "t": 754.30859375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9157171249389648, "cells": [{"id": 1, "text": "63", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.11198425292969, "t": 70.35449981689453, "r": 360.40594, "b": 83.69813537597656, "coord_origin": "TOPLEFT"}, "confidence": 0.9612811207771301, "cells": [{"id": 2, "text": "4.3.8", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 93.937424, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Activating row and column access control", "bbox": {"l": 97.57959, "t": 71.33471999999995, "r": 360.40594, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 136.0153350830078, "t": 96.60980987548828, "r": 516.22321, "b": 118.89674377441406, "coord_origin": "TOPLEFT"}, "confidence": 0.9671575427055359, "cells": [{"id": 4, "text": "You are now ready to activate RCAC on all three tables in this example. Complete the ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 516.22321, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "following steps:", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 204.65848, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 136.8, "t": 125.977294921875, "r": 542.70996, "b": 160.520263671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9787286520004272, "cells": [{"id": 6, "text": "1.", "bbox": {"l": 136.8, "t": 126.52808000000005, "r": 145.15627, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Start by enabling RCAC on the CUSTOMERS table. From System i Navigator, right-click ", "bbox": {"l": 147.94167, "t": 126.52808000000005, "r": 542.70996, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "the ", "bbox": {"l": 151.20016, "t": 138.52788999999996, "r": 167.81343, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CUSTOMERS", "bbox": {"l": 167.88017, "t": 138.52788999999996, "r": 231.29152, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": " table and select ", "bbox": {"l": 231.30048000000002, "t": 138.52788999999996, "r": 306.71658, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Definition", "bbox": {"l": 306.66083, "t": 138.52788999999996, "r": 352.81055, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": ". As shown in Figure 4-41, make sure that ", "bbox": {"l": 352.80054, "t": 138.52788999999996, "r": 540.20892, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "you select ", "bbox": {"l": 151.20018, "t": 150.52770999999996, "r": 198.73924, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Row access control", "bbox": {"l": 198.78009, "t": 150.52770999999996, "r": 292.3035, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": " and ", "bbox": {"l": 292.32043, "t": 150.52770999999996, "r": 314.64279, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Column access control", "bbox": {"l": 314.52026, "t": 150.52770999999996, "r": 424.31631, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ". Click ", "bbox": {"l": 424.32031, "t": 150.52770999999996, "r": 454.07382, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "OK", "bbox": {"l": 454.0798, "t": 150.52770999999996, "r": 469.1214, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ".", "bbox": {"l": 469.07956, "t": 150.52770999999996, "r": 471.84845, "b": 159.74072, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 136.109375, "t": 335.1785888671875, "r": 361.76947021484375, "b": 344.71710205078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9520919322967529, "cells": [{"id": 20, "text": "Figure 4-41 Enabling RCAC on the CUSTOMERS table", "bbox": {"l": 136.8, "t": 336.31799, "r": 361.49582, "b": 344.64301, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.86691284179688, "t": 361.27203369140625, "r": 537.47778, "b": 395.48135, "coord_origin": "TOPLEFT"}, "confidence": 0.969711422920227, "cells": [{"id": 21, "text": "2.", "bbox": {"l": 136.8, "t": 362.26874, "r": 145.19742, "b": 371.48172000000005, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Enable RCAC on the ACCOUNTS table. Right-click the ", "bbox": {"l": 147.99657, "t": 362.26874, "r": 396.99893, "b": 371.48172000000005, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ACCOUNTS ", "bbox": {"l": 397.01996, "t": 362.26874, "r": 456.02994, "b": 371.48172000000005, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "table and select ", "bbox": {"l": 456.00009000000006, "t": 362.26874, "r": 528.64832, "b": 371.48172000000005, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Definition", "bbox": {"l": 151.2002, "t": 374.26855, "r": 197.23233, "b": 383.48154, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": ". As shown Figure 4-42, make sure that you select ", "bbox": {"l": 197.28014, "t": 374.26855, "r": 421.7308, "b": 383.48154, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Row access control", "bbox": {"l": 421.73969, "t": 374.26855, "r": 515.25806, "b": 383.48154, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": " and ", "bbox": {"l": 515.21924, "t": 374.26855, "r": 537.47778, "b": 383.48154, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Column access control", "bbox": {"l": 151.19919, "t": 386.26837, "r": 261.00516, "b": 395.48135, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": ". Click ", "bbox": {"l": 260.93945, "t": 386.26837, "r": 290.77264, "b": 395.48135, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "OK", "bbox": {"l": 290.7597, "t": 386.26837, "r": 305.68176, "b": 395.48135, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": ".", "bbox": {"l": 305.75946, "t": 386.26837, "r": 308.52835, "b": 395.48135, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "caption", "bbox": {"l": 136.17703247070312, "t": 575.9801635742188, "r": 318.5569763183594, "b": 585.77587890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9541999101638794, "cells": [{"id": 33, "text": "Figure 4-42 Enabling RCAC on ACCOUNTS", "bbox": {"l": 136.8, "t": 576.7979, "r": 317.85483, "b": 585.12291, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 135.82846069335938, "t": 410.0953674316406, "r": 534.9657592773438, "b": 572.7034912109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9863720536231995, "cells": []}, {"id": 9, "label": "picture", "bbox": {"l": 135.9375457763672, "t": 173.51026916503906, "r": 546.1521606445312, "b": 332.9508361816406, "coord_origin": "TOPLEFT"}, "confidence": 0.9859922528266907, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 78, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.27894592285156, "t": 754.7236328125, "r": 523.59357, "b": 764.05419921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9573627710342407, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 78, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.566162109375, "t": 754.30859375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9157171249389648, "cells": [{"id": 1, "text": "63", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "63"}, {"label": "section_header", "id": 2, "page_no": 78, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.11198425292969, "t": 70.35449981689453, "r": 360.40594, "b": 83.69813537597656, "coord_origin": "TOPLEFT"}, "confidence": 0.9612811207771301, "cells": [{"id": 2, "text": "4.3.8", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 93.937424, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Activating row and column access control", "bbox": {"l": 97.57959, "t": 71.33471999999995, "r": 360.40594, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "4.3.8 Activating row and column access control"}, {"label": "text", "id": 3, "page_no": 78, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.0153350830078, "t": 96.60980987548828, "r": 516.22321, "b": 118.89674377441406, "coord_origin": "TOPLEFT"}, "confidence": 0.9671575427055359, "cells": [{"id": 4, "text": "You are now ready to activate RCAC on all three tables in this example. Complete the ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 516.22321, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "following steps:", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 204.65848, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}]}, "text": "You are now ready to activate RCAC on all three tables in this example. Complete the following steps:"}, {"label": "list_item", "id": 4, "page_no": 78, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.8, "t": 125.977294921875, "r": 542.70996, "b": 160.520263671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9787286520004272, "cells": [{"id": 6, "text": "1.", "bbox": {"l": 136.8, "t": 126.52808000000005, "r": 145.15627, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Start by enabling RCAC on the CUSTOMERS table. From System i Navigator, right-click ", "bbox": {"l": 147.94167, "t": 126.52808000000005, "r": 542.70996, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "the ", "bbox": {"l": 151.20016, "t": 138.52788999999996, "r": 167.81343, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CUSTOMERS", "bbox": {"l": 167.88017, "t": 138.52788999999996, "r": 231.29152, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": " table and select ", "bbox": {"l": 231.30048000000002, "t": 138.52788999999996, "r": 306.71658, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Definition", "bbox": {"l": 306.66083, "t": 138.52788999999996, "r": 352.81055, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": ". As shown in Figure 4-41, make sure that ", "bbox": {"l": 352.80054, "t": 138.52788999999996, "r": 540.20892, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "you select ", "bbox": {"l": 151.20018, "t": 150.52770999999996, "r": 198.73924, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Row access control", "bbox": {"l": 198.78009, "t": 150.52770999999996, "r": 292.3035, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": " and ", "bbox": {"l": 292.32043, "t": 150.52770999999996, "r": 314.64279, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Column access control", "bbox": {"l": 314.52026, "t": 150.52770999999996, "r": 424.31631, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ". Click ", "bbox": {"l": 424.32031, "t": 150.52770999999996, "r": 454.07382, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "OK", "bbox": {"l": 454.0798, "t": 150.52770999999996, "r": 469.1214, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ".", "bbox": {"l": 469.07956, "t": 150.52770999999996, "r": 471.84845, "b": 159.74072, "coord_origin": "TOPLEFT"}}]}, "text": "1. Start by enabling RCAC on the CUSTOMERS table. From System i Navigator, right-click the CUSTOMERS table and select Definition . As shown in Figure 4-41, make sure that you select Row access control and Column access control . Click OK ."}, {"label": "caption", "id": 5, "page_no": 78, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.109375, "t": 335.1785888671875, "r": 361.76947021484375, "b": 344.71710205078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9520919322967529, "cells": [{"id": 20, "text": "Figure 4-41 Enabling RCAC on the CUSTOMERS table", "bbox": {"l": 136.8, "t": 336.31799, "r": 361.49582, "b": 344.64301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-41 Enabling RCAC on the CUSTOMERS table"}, {"label": "list_item", "id": 6, "page_no": 78, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.86691284179688, "t": 361.27203369140625, "r": 537.47778, "b": 395.48135, "coord_origin": "TOPLEFT"}, "confidence": 0.969711422920227, "cells": [{"id": 21, "text": "2.", "bbox": {"l": 136.8, "t": 362.26874, "r": 145.19742, "b": 371.48172000000005, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Enable RCAC on the ACCOUNTS table. Right-click the ", "bbox": {"l": 147.99657, "t": 362.26874, "r": 396.99893, "b": 371.48172000000005, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ACCOUNTS ", "bbox": {"l": 397.01996, "t": 362.26874, "r": 456.02994, "b": 371.48172000000005, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "table and select ", "bbox": {"l": 456.00009000000006, "t": 362.26874, "r": 528.64832, "b": 371.48172000000005, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Definition", "bbox": {"l": 151.2002, "t": 374.26855, "r": 197.23233, "b": 383.48154, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": ". As shown Figure 4-42, make sure that you select ", "bbox": {"l": 197.28014, "t": 374.26855, "r": 421.7308, "b": 383.48154, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Row access control", "bbox": {"l": 421.73969, "t": 374.26855, "r": 515.25806, "b": 383.48154, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": " and ", "bbox": {"l": 515.21924, "t": 374.26855, "r": 537.47778, "b": 383.48154, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Column access control", "bbox": {"l": 151.19919, "t": 386.26837, "r": 261.00516, "b": 395.48135, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": ". Click ", "bbox": {"l": 260.93945, "t": 386.26837, "r": 290.77264, "b": 395.48135, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "OK", "bbox": {"l": 290.7597, "t": 386.26837, "r": 305.68176, "b": 395.48135, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": ".", "bbox": {"l": 305.75946, "t": 386.26837, "r": 308.52835, "b": 395.48135, "coord_origin": "TOPLEFT"}}]}, "text": "2. Enable RCAC on the ACCOUNTS table. Right-click the ACCOUNTS table and select Definition . As shown Figure 4-42, make sure that you select Row access control and Column access control . Click OK ."}, {"label": "caption", "id": 7, "page_no": 78, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 136.17703247070312, "t": 575.9801635742188, "r": 318.5569763183594, "b": 585.77587890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9541999101638794, "cells": [{"id": 33, "text": "Figure 4-42 Enabling RCAC on ACCOUNTS", "bbox": {"l": 136.8, "t": 576.7979, "r": 317.85483, "b": 585.12291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-42 Enabling RCAC on ACCOUNTS"}, {"label": "picture", "id": 8, "page_no": 78, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 135.82846069335938, "t": 410.0953674316406, "r": 534.9657592773438, "b": 572.7034912109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9863720536231995, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 9, "page_no": 78, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 135.9375457763672, "t": 173.51026916503906, "r": 546.1521606445312, "b": 332.9508361816406, "coord_origin": "TOPLEFT"}, "confidence": 0.9859922528266907, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "section_header", "id": 2, "page_no": 78, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.11198425292969, "t": 70.35449981689453, "r": 360.40594, "b": 83.69813537597656, "coord_origin": "TOPLEFT"}, "confidence": 0.9612811207771301, "cells": [{"id": 2, "text": "4.3.8", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 93.937424, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Activating row and column access control", "bbox": {"l": 97.57959, "t": 71.33471999999995, "r": 360.40594, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "4.3.8 Activating row and column access control"}, {"label": "text", "id": 3, "page_no": 78, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.0153350830078, "t": 96.60980987548828, "r": 516.22321, "b": 118.89674377441406, "coord_origin": "TOPLEFT"}, "confidence": 0.9671575427055359, "cells": [{"id": 4, "text": "You are now ready to activate RCAC on all three tables in this example. Complete the ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 516.22321, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "following steps:", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 204.65848, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}]}, "text": "You are now ready to activate RCAC on all three tables in this example. Complete the following steps:"}, {"label": "list_item", "id": 4, "page_no": 78, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.8, "t": 125.977294921875, "r": 542.70996, "b": 160.520263671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9787286520004272, "cells": [{"id": 6, "text": "1.", "bbox": {"l": 136.8, "t": 126.52808000000005, "r": 145.15627, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Start by enabling RCAC on the CUSTOMERS table. From System i Navigator, right-click ", "bbox": {"l": 147.94167, "t": 126.52808000000005, "r": 542.70996, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "the ", "bbox": {"l": 151.20016, "t": 138.52788999999996, "r": 167.81343, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CUSTOMERS", "bbox": {"l": 167.88017, "t": 138.52788999999996, "r": 231.29152, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": " table and select ", "bbox": {"l": 231.30048000000002, "t": 138.52788999999996, "r": 306.71658, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Definition", "bbox": {"l": 306.66083, "t": 138.52788999999996, "r": 352.81055, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": ". As shown in Figure 4-41, make sure that ", "bbox": {"l": 352.80054, "t": 138.52788999999996, "r": 540.20892, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "you select ", "bbox": {"l": 151.20018, "t": 150.52770999999996, "r": 198.73924, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Row access control", "bbox": {"l": 198.78009, "t": 150.52770999999996, "r": 292.3035, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": " and ", "bbox": {"l": 292.32043, "t": 150.52770999999996, "r": 314.64279, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Column access control", "bbox": {"l": 314.52026, "t": 150.52770999999996, "r": 424.31631, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": ". Click ", "bbox": {"l": 424.32031, "t": 150.52770999999996, "r": 454.07382, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "OK", "bbox": {"l": 454.0798, "t": 150.52770999999996, "r": 469.1214, "b": 159.74072, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ".", "bbox": {"l": 469.07956, "t": 150.52770999999996, "r": 471.84845, "b": 159.74072, "coord_origin": "TOPLEFT"}}]}, "text": "1. Start by enabling RCAC on the CUSTOMERS table. From System i Navigator, right-click the CUSTOMERS table and select Definition . As shown in Figure 4-41, make sure that you select Row access control and Column access control . Click OK ."}, {"label": "caption", "id": 5, "page_no": 78, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.109375, "t": 335.1785888671875, "r": 361.76947021484375, "b": 344.71710205078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9520919322967529, "cells": [{"id": 20, "text": "Figure 4-41 Enabling RCAC on the CUSTOMERS table", "bbox": {"l": 136.8, "t": 336.31799, "r": 361.49582, "b": 344.64301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-41 Enabling RCAC on the CUSTOMERS table"}, {"label": "list_item", "id": 6, "page_no": 78, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.86691284179688, "t": 361.27203369140625, "r": 537.47778, "b": 395.48135, "coord_origin": "TOPLEFT"}, "confidence": 0.969711422920227, "cells": [{"id": 21, "text": "2.", "bbox": {"l": 136.8, "t": 362.26874, "r": 145.19742, "b": 371.48172000000005, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Enable RCAC on the ACCOUNTS table. Right-click the ", "bbox": {"l": 147.99657, "t": 362.26874, "r": 396.99893, "b": 371.48172000000005, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ACCOUNTS ", "bbox": {"l": 397.01996, "t": 362.26874, "r": 456.02994, "b": 371.48172000000005, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "table and select ", "bbox": {"l": 456.00009000000006, "t": 362.26874, "r": 528.64832, "b": 371.48172000000005, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Definition", "bbox": {"l": 151.2002, "t": 374.26855, "r": 197.23233, "b": 383.48154, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": ". As shown Figure 4-42, make sure that you select ", "bbox": {"l": 197.28014, "t": 374.26855, "r": 421.7308, "b": 383.48154, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Row access control", "bbox": {"l": 421.73969, "t": 374.26855, "r": 515.25806, "b": 383.48154, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": " and ", "bbox": {"l": 515.21924, "t": 374.26855, "r": 537.47778, "b": 383.48154, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Column access control", "bbox": {"l": 151.19919, "t": 386.26837, "r": 261.00516, "b": 395.48135, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": ". Click ", "bbox": {"l": 260.93945, "t": 386.26837, "r": 290.77264, "b": 395.48135, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "OK", "bbox": {"l": 290.7597, "t": 386.26837, "r": 305.68176, "b": 395.48135, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": ".", "bbox": {"l": 305.75946, "t": 386.26837, "r": 308.52835, "b": 395.48135, "coord_origin": "TOPLEFT"}}]}, "text": "2. Enable RCAC on the ACCOUNTS table. Right-click the ACCOUNTS table and select Definition . As shown Figure 4-42, make sure that you select Row access control and Column access control . Click OK ."}, {"label": "caption", "id": 7, "page_no": 78, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 136.17703247070312, "t": 575.9801635742188, "r": 318.5569763183594, "b": 585.77587890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9541999101638794, "cells": [{"id": 33, "text": "Figure 4-42 Enabling RCAC on ACCOUNTS", "bbox": {"l": 136.8, "t": 576.7979, "r": 317.85483, "b": 585.12291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-42 Enabling RCAC on ACCOUNTS"}, {"label": "picture", "id": 8, "page_no": 78, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 135.82846069335938, "t": 410.0953674316406, "r": 534.9657592773438, "b": 572.7034912109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9863720536231995, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 9, "page_no": 78, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 135.9375457763672, "t": 173.51026916503906, "r": 546.1521606445312, "b": 332.9508361816406, "coord_origin": "TOPLEFT"}, "confidence": 0.9859922528266907, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 78, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.27894592285156, "t": 754.7236328125, "r": 523.59357, "b": 764.05419921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9573627710342407, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 78, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.566162109375, "t": 754.30859375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9157171249389648, "cells": [{"id": 1, "text": "63", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "63"}]}}, {"page_no": 79, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "64 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "3.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.18999, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Enable RCAC on the TRANSACTIONS table. Right-click the ", "bbox": {"l": 147.98666, "t": 71.50867000000005, "r": 419.13211, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "TRANSACTIONS ", "bbox": {"l": 419.21979, "t": 71.50867000000005, "r": 501.02628, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "table and ", "bbox": {"l": 500.99936, "t": 71.50867000000005, "r": 544.67987, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "select ", "bbox": {"l": 151.19919, "t": 83.50847999999996, "r": 180.07423, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Definition", "bbox": {"l": 180.05928, "t": 83.50847999999996, "r": 226.23584, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": ". As shown in Figure 4-43, make sure that you select ", "bbox": {"l": 226.13922, "t": 83.50847999999996, "r": 461.255, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Row access ", "bbox": {"l": 461.15839, "t": 83.50847999999996, "r": 520.97821, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "control", "bbox": {"l": 151.19821, "t": 95.50829999999996, "r": 184.90685, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": ". Click ", "bbox": {"l": 184.85803, "t": 95.50829999999996, "r": 214.66931000000002, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "OK", "bbox": {"l": 214.67826999999997, "t": 95.50829999999996, "r": 229.71985999999998, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": ".", "bbox": {"l": 229.61826999999997, "t": 95.50829999999996, "r": 232.38715000000002, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Figure 4-43 Enabling RCAC on TRANSACTIONS", "bbox": {"l": 136.8, "t": 280.15799, "r": 337.80872, "b": 288.483, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "4.3.9", "bbox": {"l": 64.800003, "t": 308.99472, "r": 94.076729, "b": 320.9827, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Reviewing row permissions", "bbox": {"l": 97.73632, "t": 308.99472, "r": 271.11932, "b": 320.9827, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "This section displays all the row permissions after enabling RCAC. Complete the following ", "bbox": {"l": 136.8, "t": 335.14871, "r": 535.83545, "b": 344.36169, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "steps:", "bbox": {"l": 136.80099, "t": 347.14853, "r": 163.44998, "b": 356.36151, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "1.", "bbox": {"l": 136.80099, "t": 364.12833, "r": 145.24223, "b": 373.3413100000001, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "From System i Navigator, click ", "bbox": {"l": 148.05597, "t": 364.12833, "r": 287.52866, "b": 373.3413100000001, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Row Permissions", "bbox": {"l": 287.58145, "t": 364.12833, "r": 370.44568, "b": 373.3413100000001, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": ", as shown in Figure 4-44. Three ", "bbox": {"l": 370.32117, "t": 364.12833, "r": 516.80585, "b": 373.3413100000001, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "additional Row Permissions are added (QIBM_DEFAULT*). There is one per each row ", "bbox": {"l": 151.20117, "t": 376.12814, "r": 533.23096, "b": 385.34113, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "permission.", "bbox": {"l": 151.20117, "t": 388.12796, "r": 202.5141, "b": 397.34093999999993, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Figure 4-44 Row permissions after enabling RCAC", "bbox": {"l": 64.800003, "t": 584.6579, "r": 271.20956, "b": 592.98291, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.15714263916016, "t": 754.3335571289062, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9127570390701294, "cells": [{"id": 0, "text": "64 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.25228881835938, "t": 754.6705932617188, "r": 334.42142, "b": 763.9555053710938, "coord_origin": "TOPLEFT"}, "confidence": 0.9553424715995789, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 136.11422729492188, "t": 70.50455474853516, "r": 544.67987, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9770053625106812, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.18999, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Enable RCAC on the TRANSACTIONS table. Right-click the ", "bbox": {"l": 147.98666, "t": 71.50867000000005, "r": 419.13211, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "TRANSACTIONS ", "bbox": {"l": 419.21979, "t": 71.50867000000005, "r": 501.02628, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "table and ", "bbox": {"l": 500.99936, "t": 71.50867000000005, "r": 544.67987, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "select ", "bbox": {"l": 151.19919, "t": 83.50847999999996, "r": 180.07423, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Definition", "bbox": {"l": 180.05928, "t": 83.50847999999996, "r": 226.23584, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": ". As shown in Figure 4-43, make sure that you select ", "bbox": {"l": 226.13922, "t": 83.50847999999996, "r": 461.255, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Row access ", "bbox": {"l": 461.15839, "t": 83.50847999999996, "r": 520.97821, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "control", "bbox": {"l": 151.19821, "t": 95.50829999999996, "r": 184.90685, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": ". Click ", "bbox": {"l": 184.85803, "t": 95.50829999999996, "r": 214.66931000000002, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "OK", "bbox": {"l": 214.67826999999997, "t": 95.50829999999996, "r": 229.71985999999998, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": ".", "bbox": {"l": 229.61826999999997, "t": 95.50829999999996, "r": 232.38715000000002, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.18548583984375, "t": 279.2968444824219, "r": 338.2870788574219, "b": 289.08013916015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9507059454917908, "cells": [{"id": 14, "text": "Figure 4-43 Enabling RCAC on TRANSACTIONS", "bbox": {"l": 136.8, "t": 280.15799, "r": 337.80872, "b": 288.483, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 64.14816284179688, "t": 307.58905029296875, "r": 271.11932, "b": 320.9827, "coord_origin": "TOPLEFT"}, "confidence": 0.9649584889411926, "cells": [{"id": 15, "text": "4.3.9", "bbox": {"l": 64.800003, "t": 308.99472, "r": 94.076729, "b": 320.9827, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Reviewing row permissions", "bbox": {"l": 97.73632, "t": 308.99472, "r": 271.11932, "b": 320.9827, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.9355010986328, "t": 333.9635009765625, "r": 535.83545, "b": 356.36151, "coord_origin": "TOPLEFT"}, "confidence": 0.9637021422386169, "cells": [{"id": 17, "text": "This section displays all the row permissions after enabling RCAC. Complete the following ", "bbox": {"l": 136.8, "t": 335.14871, "r": 535.83545, "b": 344.36169, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "steps:", "bbox": {"l": 136.80099, "t": 347.14853, "r": 163.44998, "b": 356.36151, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 136.80099, "t": 363.3408508300781, "r": 533.23096, "b": 397.5221252441406, "coord_origin": "TOPLEFT"}, "confidence": 0.9786288738250732, "cells": [{"id": 19, "text": "1.", "bbox": {"l": 136.80099, "t": 364.12833, "r": 145.24223, "b": 373.3413100000001, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "From System i Navigator, click ", "bbox": {"l": 148.05597, "t": 364.12833, "r": 287.52866, "b": 373.3413100000001, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Row Permissions", "bbox": {"l": 287.58145, "t": 364.12833, "r": 370.44568, "b": 373.3413100000001, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": ", as shown in Figure 4-44. Three ", "bbox": {"l": 370.32117, "t": 364.12833, "r": 516.80585, "b": 373.3413100000001, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "additional Row Permissions are added (QIBM_DEFAULT*). There is one per each row ", "bbox": {"l": 151.20117, "t": 376.12814, "r": 533.23096, "b": 385.34113, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "permission.", "bbox": {"l": 151.20117, "t": 388.12796, "r": 202.5141, "b": 397.34093999999993, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "caption", "bbox": {"l": 64.30838775634766, "t": 584.093017578125, "r": 271.8835754394531, "b": 593.4585571289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9465454816818237, "cells": [{"id": 25, "text": "Figure 4-44 Row permissions after enabling RCAC", "bbox": {"l": 64.800003, "t": 584.6579, "r": 271.20956, "b": 592.98291, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 136.07981872558594, "t": 119.14159393310547, "r": 547.2720947265625, "b": 276.12908935546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9865725040435791, "cells": []}, {"id": 9, "label": "picture", "bbox": {"l": 63.96348190307617, "t": 412.05908203125, "r": 546.8929443359375, "b": 581.2628784179688, "coord_origin": "TOPLEFT"}, "confidence": 0.9827678799629211, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 79, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.15714263916016, "t": 754.3335571289062, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9127570390701294, "cells": [{"id": 0, "text": "64 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "64"}, {"label": "page_footer", "id": 1, "page_no": 79, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.25228881835938, "t": 754.6705932617188, "r": 334.42142, "b": 763.9555053710938, "coord_origin": "TOPLEFT"}, "confidence": 0.9553424715995789, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "list_item", "id": 2, "page_no": 79, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.11422729492188, "t": 70.50455474853516, "r": 544.67987, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9770053625106812, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.18999, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Enable RCAC on the TRANSACTIONS table. Right-click the ", "bbox": {"l": 147.98666, "t": 71.50867000000005, "r": 419.13211, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "TRANSACTIONS ", "bbox": {"l": 419.21979, "t": 71.50867000000005, "r": 501.02628, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "table and ", "bbox": {"l": 500.99936, "t": 71.50867000000005, "r": 544.67987, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "select ", "bbox": {"l": 151.19919, "t": 83.50847999999996, "r": 180.07423, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Definition", "bbox": {"l": 180.05928, "t": 83.50847999999996, "r": 226.23584, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": ". As shown in Figure 4-43, make sure that you select ", "bbox": {"l": 226.13922, "t": 83.50847999999996, "r": 461.255, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Row access ", "bbox": {"l": 461.15839, "t": 83.50847999999996, "r": 520.97821, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "control", "bbox": {"l": 151.19821, "t": 95.50829999999996, "r": 184.90685, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": ". Click ", "bbox": {"l": 184.85803, "t": 95.50829999999996, "r": 214.66931000000002, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "OK", "bbox": {"l": 214.67826999999997, "t": 95.50829999999996, "r": 229.71985999999998, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": ".", "bbox": {"l": 229.61826999999997, "t": 95.50829999999996, "r": 232.38715000000002, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}]}, "text": "3. Enable RCAC on the TRANSACTIONS table. Right-click the TRANSACTIONS table and select Definition . As shown in Figure 4-43, make sure that you select Row access control . Click OK ."}, {"label": "caption", "id": 3, "page_no": 79, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.18548583984375, "t": 279.2968444824219, "r": 338.2870788574219, "b": 289.08013916015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9507059454917908, "cells": [{"id": 14, "text": "Figure 4-43 Enabling RCAC on TRANSACTIONS", "bbox": {"l": 136.8, "t": 280.15799, "r": 337.80872, "b": 288.483, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-43 Enabling RCAC on TRANSACTIONS"}, {"label": "section_header", "id": 4, "page_no": 79, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.14816284179688, "t": 307.58905029296875, "r": 271.11932, "b": 320.9827, "coord_origin": "TOPLEFT"}, "confidence": 0.9649584889411926, "cells": [{"id": 15, "text": "4.3.9", "bbox": {"l": 64.800003, "t": 308.99472, "r": 94.076729, "b": 320.9827, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Reviewing row permissions", "bbox": {"l": 97.73632, "t": 308.99472, "r": 271.11932, "b": 320.9827, "coord_origin": "TOPLEFT"}}]}, "text": "4.3.9 Reviewing row permissions"}, {"label": "text", "id": 5, "page_no": 79, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.9355010986328, "t": 333.9635009765625, "r": 535.83545, "b": 356.36151, "coord_origin": "TOPLEFT"}, "confidence": 0.9637021422386169, "cells": [{"id": 17, "text": "This section displays all the row permissions after enabling RCAC. Complete the following ", "bbox": {"l": 136.8, "t": 335.14871, "r": 535.83545, "b": 344.36169, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "steps:", "bbox": {"l": 136.80099, "t": 347.14853, "r": 163.44998, "b": 356.36151, "coord_origin": "TOPLEFT"}}]}, "text": "This section displays all the row permissions after enabling RCAC. Complete the following steps:"}, {"label": "list_item", "id": 6, "page_no": 79, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.80099, "t": 363.3408508300781, "r": 533.23096, "b": 397.5221252441406, "coord_origin": "TOPLEFT"}, "confidence": 0.9786288738250732, "cells": [{"id": 19, "text": "1.", "bbox": {"l": 136.80099, "t": 364.12833, "r": 145.24223, "b": 373.3413100000001, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "From System i Navigator, click ", "bbox": {"l": 148.05597, "t": 364.12833, "r": 287.52866, "b": 373.3413100000001, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Row Permissions", "bbox": {"l": 287.58145, "t": 364.12833, "r": 370.44568, "b": 373.3413100000001, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": ", as shown in Figure 4-44. Three ", "bbox": {"l": 370.32117, "t": 364.12833, "r": 516.80585, "b": 373.3413100000001, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "additional Row Permissions are added (QIBM_DEFAULT*). There is one per each row ", "bbox": {"l": 151.20117, "t": 376.12814, "r": 533.23096, "b": 385.34113, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "permission.", "bbox": {"l": 151.20117, "t": 388.12796, "r": 202.5141, "b": 397.34093999999993, "coord_origin": "TOPLEFT"}}]}, "text": "1. From System i Navigator, click Row Permissions , as shown in Figure 4-44. Three additional Row Permissions are added (QIBM_DEFAULT*). There is one per each row permission."}, {"label": "caption", "id": 7, "page_no": 79, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 64.30838775634766, "t": 584.093017578125, "r": 271.8835754394531, "b": 593.4585571289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9465454816818237, "cells": [{"id": 25, "text": "Figure 4-44 Row permissions after enabling RCAC", "bbox": {"l": 64.800003, "t": 584.6579, "r": 271.20956, "b": 592.98291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-44 Row permissions after enabling RCAC"}, {"label": "picture", "id": 8, "page_no": 79, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 136.07981872558594, "t": 119.14159393310547, "r": 547.2720947265625, "b": 276.12908935546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9865725040435791, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 9, "page_no": 79, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 63.96348190307617, "t": 412.05908203125, "r": 546.8929443359375, "b": 581.2628784179688, "coord_origin": "TOPLEFT"}, "confidence": 0.9827678799629211, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 79, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.11422729492188, "t": 70.50455474853516, "r": 544.67987, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9770053625106812, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.18999, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Enable RCAC on the TRANSACTIONS table. Right-click the ", "bbox": {"l": 147.98666, "t": 71.50867000000005, "r": 419.13211, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "TRANSACTIONS ", "bbox": {"l": 419.21979, "t": 71.50867000000005, "r": 501.02628, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "table and ", "bbox": {"l": 500.99936, "t": 71.50867000000005, "r": 544.67987, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "select ", "bbox": {"l": 151.19919, "t": 83.50847999999996, "r": 180.07423, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Definition", "bbox": {"l": 180.05928, "t": 83.50847999999996, "r": 226.23584, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": ". As shown in Figure 4-43, make sure that you select ", "bbox": {"l": 226.13922, "t": 83.50847999999996, "r": 461.255, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Row access ", "bbox": {"l": 461.15839, "t": 83.50847999999996, "r": 520.97821, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "control", "bbox": {"l": 151.19821, "t": 95.50829999999996, "r": 184.90685, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": ". Click ", "bbox": {"l": 184.85803, "t": 95.50829999999996, "r": 214.66931000000002, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "OK", "bbox": {"l": 214.67826999999997, "t": 95.50829999999996, "r": 229.71985999999998, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": ".", "bbox": {"l": 229.61826999999997, "t": 95.50829999999996, "r": 232.38715000000002, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}]}, "text": "3. Enable RCAC on the TRANSACTIONS table. Right-click the TRANSACTIONS table and select Definition . As shown in Figure 4-43, make sure that you select Row access control . Click OK ."}, {"label": "caption", "id": 3, "page_no": 79, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.18548583984375, "t": 279.2968444824219, "r": 338.2870788574219, "b": 289.08013916015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9507059454917908, "cells": [{"id": 14, "text": "Figure 4-43 Enabling RCAC on TRANSACTIONS", "bbox": {"l": 136.8, "t": 280.15799, "r": 337.80872, "b": 288.483, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-43 Enabling RCAC on TRANSACTIONS"}, {"label": "section_header", "id": 4, "page_no": 79, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.14816284179688, "t": 307.58905029296875, "r": 271.11932, "b": 320.9827, "coord_origin": "TOPLEFT"}, "confidence": 0.9649584889411926, "cells": [{"id": 15, "text": "4.3.9", "bbox": {"l": 64.800003, "t": 308.99472, "r": 94.076729, "b": 320.9827, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Reviewing row permissions", "bbox": {"l": 97.73632, "t": 308.99472, "r": 271.11932, "b": 320.9827, "coord_origin": "TOPLEFT"}}]}, "text": "4.3.9 Reviewing row permissions"}, {"label": "text", "id": 5, "page_no": 79, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.9355010986328, "t": 333.9635009765625, "r": 535.83545, "b": 356.36151, "coord_origin": "TOPLEFT"}, "confidence": 0.9637021422386169, "cells": [{"id": 17, "text": "This section displays all the row permissions after enabling RCAC. Complete the following ", "bbox": {"l": 136.8, "t": 335.14871, "r": 535.83545, "b": 344.36169, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "steps:", "bbox": {"l": 136.80099, "t": 347.14853, "r": 163.44998, "b": 356.36151, "coord_origin": "TOPLEFT"}}]}, "text": "This section displays all the row permissions after enabling RCAC. Complete the following steps:"}, {"label": "list_item", "id": 6, "page_no": 79, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.80099, "t": 363.3408508300781, "r": 533.23096, "b": 397.5221252441406, "coord_origin": "TOPLEFT"}, "confidence": 0.9786288738250732, "cells": [{"id": 19, "text": "1.", "bbox": {"l": 136.80099, "t": 364.12833, "r": 145.24223, "b": 373.3413100000001, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "From System i Navigator, click ", "bbox": {"l": 148.05597, "t": 364.12833, "r": 287.52866, "b": 373.3413100000001, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Row Permissions", "bbox": {"l": 287.58145, "t": 364.12833, "r": 370.44568, "b": 373.3413100000001, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": ", as shown in Figure 4-44. Three ", "bbox": {"l": 370.32117, "t": 364.12833, "r": 516.80585, "b": 373.3413100000001, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "additional Row Permissions are added (QIBM_DEFAULT*). There is one per each row ", "bbox": {"l": 151.20117, "t": 376.12814, "r": 533.23096, "b": 385.34113, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "permission.", "bbox": {"l": 151.20117, "t": 388.12796, "r": 202.5141, "b": 397.34093999999993, "coord_origin": "TOPLEFT"}}]}, "text": "1. From System i Navigator, click Row Permissions , as shown in Figure 4-44. Three additional Row Permissions are added (QIBM_DEFAULT*). There is one per each row permission."}, {"label": "caption", "id": 7, "page_no": 79, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 64.30838775634766, "t": 584.093017578125, "r": 271.8835754394531, "b": 593.4585571289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9465454816818237, "cells": [{"id": 25, "text": "Figure 4-44 Row permissions after enabling RCAC", "bbox": {"l": 64.800003, "t": 584.6579, "r": 271.20956, "b": 592.98291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-44 Row permissions after enabling RCAC"}, {"label": "picture", "id": 8, "page_no": 79, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 136.07981872558594, "t": 119.14159393310547, "r": 547.2720947265625, "b": 276.12908935546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9865725040435791, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 9, "page_no": 79, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 63.96348190307617, "t": 412.05908203125, "r": 546.8929443359375, "b": 581.2628784179688, "coord_origin": "TOPLEFT"}, "confidence": 0.9827678799629211, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 79, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.15714263916016, "t": 754.3335571289062, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9127570390701294, "cells": [{"id": 0, "text": "64 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "64"}, {"label": "page_footer", "id": 1, "page_no": 79, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.25228881835938, "t": 754.6705932617188, "r": 334.42142, "b": 763.9555053710938, "coord_origin": "TOPLEFT"}, "confidence": 0.9553424715995789, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 80, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "65", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.21153, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Look at one of the row permission definitions by right-clicking it and selecting ", "bbox": {"l": 148.0155, "t": 71.50903000000005, "r": 492.7739, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Definition", "bbox": {"l": 492.65945, "t": 71.50903000000005, "r": 538.80908, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": ", ", "bbox": {"l": 538.73938, "t": 71.50903000000005, "r": 544.37872, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "as shown in Figure 4-45.", "bbox": {"l": 151.19977, "t": 83.50885000000017, "r": 260.45697, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Figure 4-45 Selecting row permission definition", "bbox": {"l": 136.8, "t": 242.05804, "r": 328.69974, "b": 250.38300000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "3.", "bbox": {"l": 136.8, "t": 268.06866, "r": 145.16658, "b": 277.28168000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "A window opens, as shown in Figure 4-46. Take note of the nonsensical search condition ", "bbox": {"l": 147.95543, "t": 268.06866, "r": 546.08038, "b": 277.28168000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "(0=1) of the QIBM_DEFAULT row permission. This permission is ORed with all of the ", "bbox": {"l": 151.20016, "t": 280.06851, "r": 528.18719, "b": 289.28149, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "others and it ensures that if someone does not meet any of the criteria from the row ", "bbox": {"l": 151.20016, "t": 292.06832999999995, "r": 522.29791, "b": 301.28131, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "permission then this condition is tested, and because it is false the access is denied.", "bbox": {"l": 151.20016, "t": 304.06815000000006, "r": 523.24811, "b": 313.28113, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Figure 4-46 Search condition of the QIBM_DEFAULT row permission", "bbox": {"l": 64.800003, "t": 598.758, "r": 342.44904, "b": 607.0830100000001, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 214.26358032226562, "t": 754.7083740234375, "r": 523.59357, "b": 764.0580444335938, "coord_origin": "TOPLEFT"}, "confidence": 0.9547041058540344, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.6220703125, "t": 754.29638671875, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9117289185523987, "cells": [{"id": 1, "text": "65", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 135.80770874023438, "t": 70.57334899902344, "r": 544.37872, "b": 92.76964569091797, "coord_origin": "TOPLEFT"}, "confidence": 0.965424120426178, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.21153, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Look at one of the row permission definitions by right-clicking it and selecting ", "bbox": {"l": 148.0155, "t": 71.50903000000005, "r": 492.7739, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Definition", "bbox": {"l": 492.65945, "t": 71.50903000000005, "r": 538.80908, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": ", ", "bbox": {"l": 538.73938, "t": 71.50903000000005, "r": 544.37872, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "as shown in Figure 4-45.", "bbox": {"l": 151.19977, "t": 83.50885000000017, "r": 260.45697, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 135.82278442382812, "t": 241.54090881347656, "r": 328.7805480957031, "b": 250.71495056152344, "coord_origin": "TOPLEFT"}, "confidence": 0.9502364993095398, "cells": [{"id": 7, "text": "Figure 4-45 Selecting row permission definition", "bbox": {"l": 136.8, "t": 242.05804, "r": 328.69974, "b": 250.38300000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 136.20486450195312, "t": 267.31622314453125, "r": 546.08038, "b": 313.33673095703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9789031744003296, "cells": [{"id": 8, "text": "3.", "bbox": {"l": 136.8, "t": 268.06866, "r": 145.16658, "b": 277.28168000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "A window opens, as shown in Figure 4-46. Take note of the nonsensical search condition ", "bbox": {"l": 147.95543, "t": 268.06866, "r": 546.08038, "b": 277.28168000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "(0=1) of the QIBM_DEFAULT row permission. This permission is ORed with all of the ", "bbox": {"l": 151.20016, "t": 280.06851, "r": 528.18719, "b": 289.28149, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "others and it ensures that if someone does not meet any of the criteria from the row ", "bbox": {"l": 151.20016, "t": 292.06832999999995, "r": 522.29791, "b": 301.28131, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "permission then this condition is tested, and because it is false the access is denied.", "bbox": {"l": 151.20016, "t": 304.06815000000006, "r": 523.24811, "b": 313.28113, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 64.38289642333984, "t": 598.0608520507812, "r": 342.9576110839844, "b": 607.2294921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9494208693504333, "cells": [{"id": 13, "text": "Figure 4-46 Search condition of the QIBM_DEFAULT row permission", "bbox": {"l": 64.800003, "t": 598.758, "r": 342.44904, "b": 607.0830100000001, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "picture", "bbox": {"l": 136.34481811523438, "t": 107.48910522460938, "r": 467.5279846191406, "b": 238.44802856445312, "coord_origin": "TOPLEFT"}, "confidence": 0.9859717488288879, "cells": []}, {"id": 7, "label": "picture", "bbox": {"l": 63.714664459228516, "t": 327.1063232421875, "r": 502.0154113769531, "b": 595.8734741210938, "coord_origin": "TOPLEFT"}, "confidence": 0.9849998950958252, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 80, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.26358032226562, "t": 754.7083740234375, "r": 523.59357, "b": 764.0580444335938, "coord_origin": "TOPLEFT"}, "confidence": 0.9547041058540344, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 80, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6220703125, "t": 754.29638671875, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9117289185523987, "cells": [{"id": 1, "text": "65", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "65"}, {"label": "list_item", "id": 2, "page_no": 80, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.80770874023438, "t": 70.57334899902344, "r": 544.37872, "b": 92.76964569091797, "coord_origin": "TOPLEFT"}, "confidence": 0.965424120426178, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.21153, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Look at one of the row permission definitions by right-clicking it and selecting ", "bbox": {"l": 148.0155, "t": 71.50903000000005, "r": 492.7739, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Definition", "bbox": {"l": 492.65945, "t": 71.50903000000005, "r": 538.80908, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": ", ", "bbox": {"l": 538.73938, "t": 71.50903000000005, "r": 544.37872, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "as shown in Figure 4-45.", "bbox": {"l": 151.19977, "t": 83.50885000000017, "r": 260.45697, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "2. Look at one of the row permission definitions by right-clicking it and selecting Definition , as shown in Figure 4-45."}, {"label": "caption", "id": 3, "page_no": 80, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.82278442382812, "t": 241.54090881347656, "r": 328.7805480957031, "b": 250.71495056152344, "coord_origin": "TOPLEFT"}, "confidence": 0.9502364993095398, "cells": [{"id": 7, "text": "Figure 4-45 Selecting row permission definition", "bbox": {"l": 136.8, "t": 242.05804, "r": 328.69974, "b": 250.38300000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-45 Selecting row permission definition"}, {"label": "list_item", "id": 4, "page_no": 80, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.20486450195312, "t": 267.31622314453125, "r": 546.08038, "b": 313.33673095703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9789031744003296, "cells": [{"id": 8, "text": "3.", "bbox": {"l": 136.8, "t": 268.06866, "r": 145.16658, "b": 277.28168000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "A window opens, as shown in Figure 4-46. Take note of the nonsensical search condition ", "bbox": {"l": 147.95543, "t": 268.06866, "r": 546.08038, "b": 277.28168000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "(0=1) of the QIBM_DEFAULT row permission. This permission is ORed with all of the ", "bbox": {"l": 151.20016, "t": 280.06851, "r": 528.18719, "b": 289.28149, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "others and it ensures that if someone does not meet any of the criteria from the row ", "bbox": {"l": 151.20016, "t": 292.06832999999995, "r": 522.29791, "b": 301.28131, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "permission then this condition is tested, and because it is false the access is denied.", "bbox": {"l": 151.20016, "t": 304.06815000000006, "r": 523.24811, "b": 313.28113, "coord_origin": "TOPLEFT"}}]}, "text": "3. A window opens, as shown in Figure 4-46. Take note of the nonsensical search condition (0=1) of the QIBM_DEFAULT row permission. This permission is ORed with all of the others and it ensures that if someone does not meet any of the criteria from the row permission then this condition is tested, and because it is false the access is denied."}, {"label": "caption", "id": 5, "page_no": 80, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.38289642333984, "t": 598.0608520507812, "r": 342.9576110839844, "b": 607.2294921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9494208693504333, "cells": [{"id": 13, "text": "Figure 4-46 Search condition of the QIBM_DEFAULT row permission", "bbox": {"l": 64.800003, "t": 598.758, "r": 342.44904, "b": 607.0830100000001, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-46 Search condition of the QIBM_DEFAULT row permission"}, {"label": "picture", "id": 6, "page_no": 80, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 136.34481811523438, "t": 107.48910522460938, "r": 467.5279846191406, "b": 238.44802856445312, "coord_origin": "TOPLEFT"}, "confidence": 0.9859717488288879, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 7, "page_no": 80, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 63.714664459228516, "t": 327.1063232421875, "r": 502.0154113769531, "b": 595.8734741210938, "coord_origin": "TOPLEFT"}, "confidence": 0.9849998950958252, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 80, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.80770874023438, "t": 70.57334899902344, "r": 544.37872, "b": 92.76964569091797, "coord_origin": "TOPLEFT"}, "confidence": 0.965424120426178, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.21153, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Look at one of the row permission definitions by right-clicking it and selecting ", "bbox": {"l": 148.0155, "t": 71.50903000000005, "r": 492.7739, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Definition", "bbox": {"l": 492.65945, "t": 71.50903000000005, "r": 538.80908, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": ", ", "bbox": {"l": 538.73938, "t": 71.50903000000005, "r": 544.37872, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "as shown in Figure 4-45.", "bbox": {"l": 151.19977, "t": 83.50885000000017, "r": 260.45697, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "2. Look at one of the row permission definitions by right-clicking it and selecting Definition , as shown in Figure 4-45."}, {"label": "caption", "id": 3, "page_no": 80, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.82278442382812, "t": 241.54090881347656, "r": 328.7805480957031, "b": 250.71495056152344, "coord_origin": "TOPLEFT"}, "confidence": 0.9502364993095398, "cells": [{"id": 7, "text": "Figure 4-45 Selecting row permission definition", "bbox": {"l": 136.8, "t": 242.05804, "r": 328.69974, "b": 250.38300000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-45 Selecting row permission definition"}, {"label": "list_item", "id": 4, "page_no": 80, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.20486450195312, "t": 267.31622314453125, "r": 546.08038, "b": 313.33673095703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9789031744003296, "cells": [{"id": 8, "text": "3.", "bbox": {"l": 136.8, "t": 268.06866, "r": 145.16658, "b": 277.28168000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "A window opens, as shown in Figure 4-46. Take note of the nonsensical search condition ", "bbox": {"l": 147.95543, "t": 268.06866, "r": 546.08038, "b": 277.28168000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "(0=1) of the QIBM_DEFAULT row permission. This permission is ORed with all of the ", "bbox": {"l": 151.20016, "t": 280.06851, "r": 528.18719, "b": 289.28149, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "others and it ensures that if someone does not meet any of the criteria from the row ", "bbox": {"l": 151.20016, "t": 292.06832999999995, "r": 522.29791, "b": 301.28131, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "permission then this condition is tested, and because it is false the access is denied.", "bbox": {"l": 151.20016, "t": 304.06815000000006, "r": 523.24811, "b": 313.28113, "coord_origin": "TOPLEFT"}}]}, "text": "3. A window opens, as shown in Figure 4-46. Take note of the nonsensical search condition (0=1) of the QIBM_DEFAULT row permission. This permission is ORed with all of the others and it ensures that if someone does not meet any of the criteria from the row permission then this condition is tested, and because it is false the access is denied."}, {"label": "caption", "id": 5, "page_no": 80, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.38289642333984, "t": 598.0608520507812, "r": 342.9576110839844, "b": 607.2294921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9494208693504333, "cells": [{"id": 13, "text": "Figure 4-46 Search condition of the QIBM_DEFAULT row permission", "bbox": {"l": 64.800003, "t": 598.758, "r": 342.44904, "b": 607.0830100000001, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-46 Search condition of the QIBM_DEFAULT row permission"}, {"label": "picture", "id": 6, "page_no": 80, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 136.34481811523438, "t": 107.48910522460938, "r": 467.5279846191406, "b": 238.44802856445312, "coord_origin": "TOPLEFT"}, "confidence": 0.9859717488288879, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 7, "page_no": 80, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 63.714664459228516, "t": 327.1063232421875, "r": 502.0154113769531, "b": 595.8734741210938, "coord_origin": "TOPLEFT"}, "confidence": 0.9849998950958252, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 80, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.26358032226562, "t": 754.7083740234375, "r": 523.59357, "b": 764.0580444335938, "coord_origin": "TOPLEFT"}, "confidence": 0.9547041058540344, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 80, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6220703125, "t": 754.29638671875, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9117289185523987, "cells": [{"id": 1, "text": "65", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "65"}]}}, {"page_no": 81, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "66 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "4.3.10", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 101.29621, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Demonstrating data access with RCAC", "bbox": {"l": 104.94582, "t": 71.33471999999995, "r": 347.13361, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "You are now ready to test the RCAC definitions. Run the following SQL statements with each ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 547.25568, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "type of user (DBE, SECURITY, TELLER, ADMIN, and WEBUSER):", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 433.09406, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 126.67749000000003, "r": 141.78, "b": 135.45227, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "A ", "bbox": {"l": 151.20016, "t": 126.52808000000005, "r": 160.64622, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "SELECT", "bbox": {"l": 160.62033, "t": 126.67749000000003, "r": 190.61983, "b": 135.50207999999998, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": " statement that returns the SESSION_USER.", "bbox": {"l": 190.61986, "t": 126.52808000000005, "r": 390.82486, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "GLYPH", "bbox": {"l": 136.8, "t": 143.65729, "r": 141.78, "b": 152.43206999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "A ", "bbox": {"l": 151.20016, "t": 143.50787000000003, "r": 160.64622, "b": 152.72089000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "SELECT", "bbox": {"l": 160.62033, "t": 143.65729, "r": 190.61983, "b": 152.48186999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": " statement that counts the customers from the CUSTOMER table. There are 90 ", "bbox": {"l": 190.61986, "t": 143.50787000000003, "r": 543.19196, "b": 152.72089000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "customers in the CUSTOMER table.", "bbox": {"l": 151.20016, "t": 155.50769000000003, "r": 310.90085, "b": 164.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 172.63689999999997, "r": 141.78, "b": 181.41168000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "A simple ", "bbox": {"l": 151.20016, "t": 172.48748999999998, "r": 192.29114, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "SELECT", "bbox": {"l": 192.30011, "t": 172.63689999999997, "r": 222.23987, "b": 181.46149000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": " statement that returns the following output from the CUSTOMERS table ", "bbox": {"l": 222.29964, "t": 172.48748999999998, "r": 543.64008, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ordered by customer_name:", "bbox": {"l": 151.19919, "t": 184.4873, "r": 276.00995, "b": 193.70032000000003, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "-c", "bbox": {"l": 152.03882, "t": 201.52686000000006, "r": 178.60014, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "u", "bbox": {"l": 170.57835, "t": 201.52686000000006, "r": 184.13789, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "s", "bbox": {"l": 176.15794, "t": 201.52686000000006, "r": 189.15973, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "t", "bbox": {"l": 181.13794, "t": 201.52686000000006, "r": 191.9286, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "o", "bbox": {"l": 183.89786, "t": 201.52686000000006, "r": 197.4574, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "m", "bbox": {"l": 189.47745, "t": 201.52686000000006, "r": 205.79591, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "e", "bbox": {"l": 197.81696, "t": 201.52686000000006, "r": 211.3765, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "r", "bbox": {"l": 203.33678, "t": 201.52686000000006, "r": 214.67525, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "_", "bbox": {"l": 206.69728, "t": 201.52686000000006, "r": 220.25682, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "i", "bbox": {"l": 212.2171, "t": 201.52686000000006, "r": 222.45001, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "d", "bbox": {"l": 214.43719000000002, "t": 201.52686000000006, "r": 227.99673, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "-", "bbox": {"l": 152.03882, "t": 213.52666999999997, "r": 157.61443, "b": 222.73969, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "customer_name", "bbox": {"l": 165.59836, "t": 213.52666999999997, "r": 237.24663000000004, "b": 222.73969, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "-", "bbox": {"l": 152.03882, "t": 225.52648999999997, "r": 157.61443, "b": 234.73950000000002, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "customer_email", "bbox": {"l": 165.59836, "t": 225.52648999999997, "r": 236.13907, "b": 234.73950000000002, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "-c", "bbox": {"l": 152.03882, "t": 237.52630999999997, "r": 178.60014, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "u", "bbox": {"l": 170.57835, "t": 237.52630999999997, "r": 184.13789, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "s", "bbox": {"l": 176.15794, "t": 237.52630999999997, "r": 189.15973, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "t", "bbox": {"l": 181.13794, "t": 237.52630999999997, "r": 191.9286, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "o", "bbox": {"l": 183.89786, "t": 237.52630999999997, "r": 197.4574, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "m", "bbox": {"l": 189.47745, "t": 237.52630999999997, "r": 205.79591, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "e", "bbox": {"l": 197.81696, "t": 237.52630999999997, "r": 211.3765, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "r", "bbox": {"l": 203.33678, "t": 237.52630999999997, "r": 214.67525, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "_", "bbox": {"l": 206.69728, "t": 237.52630999999997, "r": 220.25682, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "t", "bbox": {"l": 212.2171, "t": 237.52630999999997, "r": 223.00777, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "a", "bbox": {"l": 215.03677, "t": 237.52630999999997, "r": 228.59631000000002, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "x", "bbox": {"l": 220.55659, "t": 237.52630999999997, "r": 233.55837999999997, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "_", "bbox": {"l": 225.59636, "t": 237.52630999999997, "r": 239.15590000000003, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "i", "bbox": {"l": 231.11618, "t": 237.52630999999997, "r": 241.34908999999996, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "d", "bbox": {"l": 233.33627, "t": 237.52630999999997, "r": 246.89580999999998, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "-", "bbox": {"l": 152.03882, "t": 249.52612, "r": 157.61044, "b": 258.73914, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "customer_drivers_license_number", "bbox": {"l": 165.59836, "t": 249.52612, "r": 318.23041, "b": 258.73914, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Data access for a DBE user with RCAC", "bbox": {"l": 136.8, "t": 275.36401, "r": 357.22922, "b": 286.46402, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "To test a DBE (MCAIN) user, complete the following steps:", "bbox": {"l": 136.8, "t": 290.50872999999996, "r": 394.54984, "b": 299.72171, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "1.", "bbox": {"l": 136.8, "t": 307.48853, "r": 145.21211, "b": 316.70151, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Confirm that the user is the user of the session by running the first SQL statement, as ", "bbox": {"l": 148.01613, "t": 307.48853, "r": 531.48303, "b": 316.70151, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "shown in Figure 4-47. In this example, MCAIN is the DBE user.", "bbox": {"l": 151.20016, "t": 319.48834, "r": 429.04044, "b": 328.70131999999995, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "Figure 4-47 DBE session user", "bbox": {"l": 136.8, "t": 441.67801, "r": 261.65161, "b": 450.00302, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "2.", "bbox": {"l": 136.8, "t": 467.62872, "r": 145.20607, "b": 476.84171, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "The number of rows that the DBE user MCAIN can see is shown in Figure 4-48.", "bbox": {"l": 148.00812, "t": 467.62872, "r": 503.15964, "b": 476.84171, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Figure 4-48 Number of rows that DBE user can see in the CUSTOMERS table", "bbox": {"l": 136.8, "t": 627.7979, "r": 451.75512999999995, "b": 636.12291, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.22357940673828, "t": 754.4584350585938, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9105024337768555, "cells": [{"id": 0, "text": "66 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.37715148925781, "t": 754.6815795898438, "r": 334.42142, "b": 763.9869384765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9468215703964233, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.1228256225586, "t": 70.26021575927734, "r": 347.13361, "b": 83.70108795166016, "coord_origin": "TOPLEFT"}, "confidence": 0.9626623392105103, "cells": [{"id": 2, "text": "4.3.10", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 101.29621, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Demonstrating data access with RCAC", "bbox": {"l": 104.94582, "t": 71.33471999999995, "r": 347.13361, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.73379516601562, "t": 96.64435577392578, "r": 547.25568, "b": 119.03988647460938, "coord_origin": "TOPLEFT"}, "confidence": 0.9718443751335144, "cells": [{"id": 4, "text": "You are now ready to test the RCAC definitions. Run the following SQL statements with each ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 547.25568, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "type of user (DBE, SECURITY, TELLER, ADMIN, and WEBUSER):", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 433.09406, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 135.537353515625, "t": 125.70227813720703, "r": 390.82486, "b": 135.94515991210938, "coord_origin": "TOPLEFT"}, "confidence": 0.9467165470123291, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 126.67749000000003, "r": 141.78, "b": 135.45227, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "A ", "bbox": {"l": 151.20016, "t": 126.52808000000005, "r": 160.64622, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "SELECT", "bbox": {"l": 160.62033, "t": 126.67749000000003, "r": 190.61983, "b": 135.50207999999998, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": " statement that returns the SESSION_USER.", "bbox": {"l": 190.61986, "t": 126.52808000000005, "r": 390.82486, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 135.6352081298828, "t": 142.6588897705078, "r": 543.19196, "b": 164.72069999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9719513654708862, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.8, "t": 143.65729, "r": 141.78, "b": 152.43206999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "A ", "bbox": {"l": 151.20016, "t": 143.50787000000003, "r": 160.64622, "b": 152.72089000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "SELECT", "bbox": {"l": 160.62033, "t": 143.65729, "r": 190.61983, "b": 152.48186999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": " statement that counts the customers from the CUSTOMER table. There are 90 ", "bbox": {"l": 190.61986, "t": 143.50787000000003, "r": 543.19196, "b": 152.72089000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "customers in the CUSTOMER table.", "bbox": {"l": 151.20016, "t": 155.50769000000003, "r": 310.90085, "b": 164.72069999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.70932006835938, "t": 171.48867797851562, "r": 543.64008, "b": 193.7998046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9690733551979065, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 172.63689999999997, "r": 141.78, "b": 181.41168000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "A simple ", "bbox": {"l": 151.20016, "t": 172.48748999999998, "r": 192.29114, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "SELECT", "bbox": {"l": 192.30011, "t": 172.63689999999997, "r": 222.23987, "b": 181.46149000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": " statement that returns the following output from the CUSTOMERS table ", "bbox": {"l": 222.29964, "t": 172.48748999999998, "r": 543.64008, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ordered by customer_name:", "bbox": {"l": 151.19919, "t": 184.4873, "r": 276.00995, "b": 193.70032000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 151.35504150390625, "t": 200.90966796875, "r": 227.99673, "b": 210.73987, "coord_origin": "TOPLEFT"}, "confidence": 0.914056658744812, "cells": [{"id": 20, "text": "-c", "bbox": {"l": 152.03882, "t": 201.52686000000006, "r": 178.60014, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "u", "bbox": {"l": 170.57835, "t": 201.52686000000006, "r": 184.13789, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "s", "bbox": {"l": 176.15794, "t": 201.52686000000006, "r": 189.15973, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "t", "bbox": {"l": 181.13794, "t": 201.52686000000006, "r": 191.9286, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "o", "bbox": {"l": 183.89786, "t": 201.52686000000006, "r": 197.4574, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "m", "bbox": {"l": 189.47745, "t": 201.52686000000006, "r": 205.79591, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "e", "bbox": {"l": 197.81696, "t": 201.52686000000006, "r": 211.3765, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "r", "bbox": {"l": 203.33678, "t": 201.52686000000006, "r": 214.67525, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "_", "bbox": {"l": 206.69728, "t": 201.52686000000006, "r": 220.25682, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "i", "bbox": {"l": 212.2171, "t": 201.52686000000006, "r": 222.45001, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "d", "bbox": {"l": 214.43719000000002, "t": 201.52686000000006, "r": 227.99673, "b": 210.73987, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 151.4617462158203, "t": 213.36526489257812, "r": 237.24663000000004, "b": 222.73969, "coord_origin": "TOPLEFT"}, "confidence": 0.908424973487854, "cells": [{"id": 31, "text": "-", "bbox": {"l": 152.03882, "t": 213.52666999999997, "r": 157.61443, "b": 222.73969, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "customer_name", "bbox": {"l": 165.59836, "t": 213.52666999999997, "r": 237.24663000000004, "b": 222.73969, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 151.39413452148438, "t": 224.96202087402344, "r": 236.13907, "b": 234.73950000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9008285403251648, "cells": [{"id": 33, "text": "-", "bbox": {"l": 152.03882, "t": 225.52648999999997, "r": 157.61443, "b": 234.73950000000002, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "customer_email", "bbox": {"l": 165.59836, "t": 225.52648999999997, "r": 236.13907, "b": 234.73950000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 151.38189697265625, "t": 237.14512634277344, "r": 246.89580999999998, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9172974228858948, "cells": [{"id": 35, "text": "-c", "bbox": {"l": 152.03882, "t": 237.52630999999997, "r": 178.60014, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "u", "bbox": {"l": 170.57835, "t": 237.52630999999997, "r": 184.13789, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "s", "bbox": {"l": 176.15794, "t": 237.52630999999997, "r": 189.15973, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "t", "bbox": {"l": 181.13794, "t": 237.52630999999997, "r": 191.9286, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "o", "bbox": {"l": 183.89786, "t": 237.52630999999997, "r": 197.4574, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "m", "bbox": {"l": 189.47745, "t": 237.52630999999997, "r": 205.79591, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "e", "bbox": {"l": 197.81696, "t": 237.52630999999997, "r": 211.3765, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "r", "bbox": {"l": 203.33678, "t": 237.52630999999997, "r": 214.67525, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "_", "bbox": {"l": 206.69728, "t": 237.52630999999997, "r": 220.25682, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "t", "bbox": {"l": 212.2171, "t": 237.52630999999997, "r": 223.00777, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "a", "bbox": {"l": 215.03677, "t": 237.52630999999997, "r": 228.59631000000002, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "x", "bbox": {"l": 220.55659, "t": 237.52630999999997, "r": 233.55837999999997, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "_", "bbox": {"l": 225.59636, "t": 237.52630999999997, "r": 239.15590000000003, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "i", "bbox": {"l": 231.11618, "t": 237.52630999999997, "r": 241.34908999999996, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "d", "bbox": {"l": 233.33627, "t": 237.52630999999997, "r": 246.89580999999998, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 151.4001007080078, "t": 248.64210510253906, "r": 318.3563537597656, "b": 258.73914, "coord_origin": "TOPLEFT"}, "confidence": 0.9473636746406555, "cells": [{"id": 50, "text": "-", "bbox": {"l": 152.03882, "t": 249.52612, "r": 157.61044, "b": 258.73914, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "customer_drivers_license_number", "bbox": {"l": 165.59836, "t": 249.52612, "r": 318.23041, "b": 258.73914, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "section_header", "bbox": {"l": 136.71405029296875, "t": 274.4760437011719, "r": 357.22922, "b": 286.46402, "coord_origin": "TOPLEFT"}, "confidence": 0.9395599961280823, "cells": [{"id": 52, "text": "Data access for a DBE user with RCAC", "bbox": {"l": 136.8, "t": 275.36401, "r": 357.22922, "b": 286.46402, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 136.20758056640625, "t": 289.3038635253906, "r": 394.54984, "b": 299.72171, "coord_origin": "TOPLEFT"}, "confidence": 0.9441509246826172, "cells": [{"id": 53, "text": "To test a DBE (MCAIN) user, complete the following steps:", "bbox": {"l": 136.8, "t": 290.50872999999996, "r": 394.54984, "b": 299.72171, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "list_item", "bbox": {"l": 136.73385620117188, "t": 306.8790588378906, "r": 531.48303, "b": 328.8634033203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9618597626686096, "cells": [{"id": 54, "text": "1.", "bbox": {"l": 136.8, "t": 307.48853, "r": 145.21211, "b": 316.70151, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Confirm that the user is the user of the session by running the first SQL statement, as ", "bbox": {"l": 148.01613, "t": 307.48853, "r": 531.48303, "b": 316.70151, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "shown in Figure 4-47. In this example, MCAIN is the DBE user.", "bbox": {"l": 151.20016, "t": 319.48834, "r": 429.04044, "b": 328.70131999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "caption", "bbox": {"l": 136.308349609375, "t": 440.55535888671875, "r": 262.7190856933594, "b": 450.0071105957031, "coord_origin": "TOPLEFT"}, "confidence": 0.9195859432220459, "cells": [{"id": 57, "text": "Figure 4-47 DBE session user", "bbox": {"l": 136.8, "t": 441.67801, "r": 261.65161, "b": 450.00302, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "list_item", "bbox": {"l": 135.81915283203125, "t": 466.6739807128906, "r": 503.15964, "b": 477.26654052734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9244843125343323, "cells": [{"id": 58, "text": "2.", "bbox": {"l": 136.8, "t": 467.62872, "r": 145.20607, "b": 476.84171, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "The number of rows that the DBE user MCAIN can see is shown in Figure 4-48.", "bbox": {"l": 148.00812, "t": 467.62872, "r": 503.15964, "b": 476.84171, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "caption", "bbox": {"l": 136.09771728515625, "t": 626.5655517578125, "r": 451.9573974609375, "b": 636.12291, "coord_origin": "TOPLEFT"}, "confidence": 0.9248898029327393, "cells": [{"id": 60, "text": "Figure 4-48 Number of rows that DBE user can see in the CUSTOMERS table", "bbox": {"l": 136.8, "t": 627.7979, "r": 451.75512999999995, "b": 636.12291, "coord_origin": "TOPLEFT"}}]}, {"id": 18, "label": "picture", "bbox": {"l": 135.9881591796875, "t": 491.6136474609375, "r": 393.8948669433594, "b": 625.150146484375, "coord_origin": "TOPLEFT"}, "confidence": 0.8431334495544434, "cells": []}, {"id": 19, "label": "picture", "bbox": {"l": 136.04849243164062, "t": 343.6217346191406, "r": 358.4311218261719, "b": 438.34320068359375, "coord_origin": "TOPLEFT"}, "confidence": 0.7820501923561096, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 81, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.22357940673828, "t": 754.4584350585938, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9105024337768555, "cells": [{"id": 0, "text": "66 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "66"}, {"label": "page_footer", "id": 1, "page_no": 81, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.37715148925781, "t": 754.6815795898438, "r": 334.42142, "b": 763.9869384765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9468215703964233, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "section_header", "id": 2, "page_no": 81, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.1228256225586, "t": 70.26021575927734, "r": 347.13361, "b": 83.70108795166016, "coord_origin": "TOPLEFT"}, "confidence": 0.9626623392105103, "cells": [{"id": 2, "text": "4.3.10", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 101.29621, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Demonstrating data access with RCAC", "bbox": {"l": 104.94582, "t": 71.33471999999995, "r": 347.13361, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "4.3.10 Demonstrating data access with RCAC"}, {"label": "text", "id": 3, "page_no": 81, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.73379516601562, "t": 96.64435577392578, "r": 547.25568, "b": 119.03988647460938, "coord_origin": "TOPLEFT"}, "confidence": 0.9718443751335144, "cells": [{"id": 4, "text": "You are now ready to test the RCAC definitions. Run the following SQL statements with each ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 547.25568, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "type of user (DBE, SECURITY, TELLER, ADMIN, and WEBUSER):", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 433.09406, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}]}, "text": "You are now ready to test the RCAC definitions. Run the following SQL statements with each type of user (DBE, SECURITY, TELLER, ADMIN, and WEBUSER):"}, {"label": "list_item", "id": 4, "page_no": 81, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.537353515625, "t": 125.70227813720703, "r": 390.82486, "b": 135.94515991210938, "coord_origin": "TOPLEFT"}, "confidence": 0.9467165470123291, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 126.67749000000003, "r": 141.78, "b": 135.45227, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "A ", "bbox": {"l": 151.20016, "t": 126.52808000000005, "r": 160.64622, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "SELECT", "bbox": {"l": 160.62033, "t": 126.67749000000003, "r": 190.61983, "b": 135.50207999999998, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": " statement that returns the SESSION_USER.", "bbox": {"l": 190.61986, "t": 126.52808000000005, "r": 390.82486, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH A SELECT statement that returns the SESSION_USER."}, {"label": "list_item", "id": 5, "page_no": 81, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.6352081298828, "t": 142.6588897705078, "r": 543.19196, "b": 164.72069999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9719513654708862, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.8, "t": 143.65729, "r": 141.78, "b": 152.43206999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "A ", "bbox": {"l": 151.20016, "t": 143.50787000000003, "r": 160.64622, "b": 152.72089000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "SELECT", "bbox": {"l": 160.62033, "t": 143.65729, "r": 190.61983, "b": 152.48186999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": " statement that counts the customers from the CUSTOMER table. There are 90 ", "bbox": {"l": 190.61986, "t": 143.50787000000003, "r": 543.19196, "b": 152.72089000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "customers in the CUSTOMER table.", "bbox": {"l": 151.20016, "t": 155.50769000000003, "r": 310.90085, "b": 164.72069999999997, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH A SELECT statement that counts the customers from the CUSTOMER table. There are 90 customers in the CUSTOMER table."}, {"label": "list_item", "id": 6, "page_no": 81, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.70932006835938, "t": 171.48867797851562, "r": 543.64008, "b": 193.7998046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9690733551979065, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 172.63689999999997, "r": 141.78, "b": 181.41168000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "A simple ", "bbox": {"l": 151.20016, "t": 172.48748999999998, "r": 192.29114, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "SELECT", "bbox": {"l": 192.30011, "t": 172.63689999999997, "r": 222.23987, "b": 181.46149000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": " statement that returns the following output from the CUSTOMERS table ", "bbox": {"l": 222.29964, "t": 172.48748999999998, "r": 543.64008, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ordered by customer_name:", "bbox": {"l": 151.19919, "t": 184.4873, "r": 276.00995, "b": 193.70032000000003, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH A simple SELECT statement that returns the following output from the CUSTOMERS table ordered by customer_name:"}, {"label": "list_item", "id": 7, "page_no": 81, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 151.35504150390625, "t": 200.90966796875, "r": 227.99673, "b": 210.73987, "coord_origin": "TOPLEFT"}, "confidence": 0.914056658744812, "cells": [{"id": 20, "text": "-c", "bbox": {"l": 152.03882, "t": 201.52686000000006, "r": 178.60014, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "u", "bbox": {"l": 170.57835, "t": 201.52686000000006, "r": 184.13789, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "s", "bbox": {"l": 176.15794, "t": 201.52686000000006, "r": 189.15973, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "t", "bbox": {"l": 181.13794, "t": 201.52686000000006, "r": 191.9286, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "o", "bbox": {"l": 183.89786, "t": 201.52686000000006, "r": 197.4574, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "m", "bbox": {"l": 189.47745, "t": 201.52686000000006, "r": 205.79591, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "e", "bbox": {"l": 197.81696, "t": 201.52686000000006, "r": 211.3765, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "r", "bbox": {"l": 203.33678, "t": 201.52686000000006, "r": 214.67525, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "_", "bbox": {"l": 206.69728, "t": 201.52686000000006, "r": 220.25682, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "i", "bbox": {"l": 212.2171, "t": 201.52686000000006, "r": 222.45001, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "d", "bbox": {"l": 214.43719000000002, "t": 201.52686000000006, "r": 227.99673, "b": 210.73987, "coord_origin": "TOPLEFT"}}]}, "text": "-c u s t o m e r _ i d"}, {"label": "list_item", "id": 8, "page_no": 81, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 151.4617462158203, "t": 213.36526489257812, "r": 237.24663000000004, "b": 222.73969, "coord_origin": "TOPLEFT"}, "confidence": 0.908424973487854, "cells": [{"id": 31, "text": "-", "bbox": {"l": 152.03882, "t": 213.52666999999997, "r": 157.61443, "b": 222.73969, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "customer_name", "bbox": {"l": 165.59836, "t": 213.52666999999997, "r": 237.24663000000004, "b": 222.73969, "coord_origin": "TOPLEFT"}}]}, "text": "-customer_name"}, {"label": "list_item", "id": 9, "page_no": 81, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 151.39413452148438, "t": 224.96202087402344, "r": 236.13907, "b": 234.73950000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9008285403251648, "cells": [{"id": 33, "text": "-", "bbox": {"l": 152.03882, "t": 225.52648999999997, "r": 157.61443, "b": 234.73950000000002, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "customer_email", "bbox": {"l": 165.59836, "t": 225.52648999999997, "r": 236.13907, "b": 234.73950000000002, "coord_origin": "TOPLEFT"}}]}, "text": "-customer_email"}, {"label": "list_item", "id": 10, "page_no": 81, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 151.38189697265625, "t": 237.14512634277344, "r": 246.89580999999998, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9172974228858948, "cells": [{"id": 35, "text": "-c", "bbox": {"l": 152.03882, "t": 237.52630999999997, "r": 178.60014, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "u", "bbox": {"l": 170.57835, "t": 237.52630999999997, "r": 184.13789, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "s", "bbox": {"l": 176.15794, "t": 237.52630999999997, "r": 189.15973, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "t", "bbox": {"l": 181.13794, "t": 237.52630999999997, "r": 191.9286, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "o", "bbox": {"l": 183.89786, "t": 237.52630999999997, "r": 197.4574, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "m", "bbox": {"l": 189.47745, "t": 237.52630999999997, "r": 205.79591, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "e", "bbox": {"l": 197.81696, "t": 237.52630999999997, "r": 211.3765, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "r", "bbox": {"l": 203.33678, "t": 237.52630999999997, "r": 214.67525, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "_", "bbox": {"l": 206.69728, "t": 237.52630999999997, "r": 220.25682, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "t", "bbox": {"l": 212.2171, "t": 237.52630999999997, "r": 223.00777, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "a", "bbox": {"l": 215.03677, "t": 237.52630999999997, "r": 228.59631000000002, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "x", "bbox": {"l": 220.55659, "t": 237.52630999999997, "r": 233.55837999999997, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "_", "bbox": {"l": 225.59636, "t": 237.52630999999997, "r": 239.15590000000003, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "i", "bbox": {"l": 231.11618, "t": 237.52630999999997, "r": 241.34908999999996, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "d", "bbox": {"l": 233.33627, "t": 237.52630999999997, "r": 246.89580999999998, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}]}, "text": "-c u s t o m e r _ t a x _ i d"}, {"label": "list_item", "id": 11, "page_no": 81, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 151.4001007080078, "t": 248.64210510253906, "r": 318.3563537597656, "b": 258.73914, "coord_origin": "TOPLEFT"}, "confidence": 0.9473636746406555, "cells": [{"id": 50, "text": "-", "bbox": {"l": 152.03882, "t": 249.52612, "r": 157.61044, "b": 258.73914, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "customer_drivers_license_number", "bbox": {"l": 165.59836, "t": 249.52612, "r": 318.23041, "b": 258.73914, "coord_origin": "TOPLEFT"}}]}, "text": "-customer_drivers_license_number"}, {"label": "section_header", "id": 12, "page_no": 81, "cluster": {"id": 12, "label": "section_header", "bbox": {"l": 136.71405029296875, "t": 274.4760437011719, "r": 357.22922, "b": 286.46402, "coord_origin": "TOPLEFT"}, "confidence": 0.9395599961280823, "cells": [{"id": 52, "text": "Data access for a DBE user with RCAC", "bbox": {"l": 136.8, "t": 275.36401, "r": 357.22922, "b": 286.46402, "coord_origin": "TOPLEFT"}}]}, "text": "Data access for a DBE user with RCAC"}, {"label": "text", "id": 13, "page_no": 81, "cluster": {"id": 13, "label": "text", "bbox": {"l": 136.20758056640625, "t": 289.3038635253906, "r": 394.54984, "b": 299.72171, "coord_origin": "TOPLEFT"}, "confidence": 0.9441509246826172, "cells": [{"id": 53, "text": "To test a DBE (MCAIN) user, complete the following steps:", "bbox": {"l": 136.8, "t": 290.50872999999996, "r": 394.54984, "b": 299.72171, "coord_origin": "TOPLEFT"}}]}, "text": "To test a DBE (MCAIN) user, complete the following steps:"}, {"label": "list_item", "id": 14, "page_no": 81, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 136.73385620117188, "t": 306.8790588378906, "r": 531.48303, "b": 328.8634033203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9618597626686096, "cells": [{"id": 54, "text": "1.", "bbox": {"l": 136.8, "t": 307.48853, "r": 145.21211, "b": 316.70151, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Confirm that the user is the user of the session by running the first SQL statement, as ", "bbox": {"l": 148.01613, "t": 307.48853, "r": 531.48303, "b": 316.70151, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "shown in Figure 4-47. In this example, MCAIN is the DBE user.", "bbox": {"l": 151.20016, "t": 319.48834, "r": 429.04044, "b": 328.70131999999995, "coord_origin": "TOPLEFT"}}]}, "text": "1. Confirm that the user is the user of the session by running the first SQL statement, as shown in Figure 4-47. In this example, MCAIN is the DBE user."}, {"label": "caption", "id": 15, "page_no": 81, "cluster": {"id": 15, "label": "caption", "bbox": {"l": 136.308349609375, "t": 440.55535888671875, "r": 262.7190856933594, "b": 450.0071105957031, "coord_origin": "TOPLEFT"}, "confidence": 0.9195859432220459, "cells": [{"id": 57, "text": "Figure 4-47 DBE session user", "bbox": {"l": 136.8, "t": 441.67801, "r": 261.65161, "b": 450.00302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-47 DBE session user"}, {"label": "list_item", "id": 16, "page_no": 81, "cluster": {"id": 16, "label": "list_item", "bbox": {"l": 135.81915283203125, "t": 466.6739807128906, "r": 503.15964, "b": 477.26654052734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9244843125343323, "cells": [{"id": 58, "text": "2.", "bbox": {"l": 136.8, "t": 467.62872, "r": 145.20607, "b": 476.84171, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "The number of rows that the DBE user MCAIN can see is shown in Figure 4-48.", "bbox": {"l": 148.00812, "t": 467.62872, "r": 503.15964, "b": 476.84171, "coord_origin": "TOPLEFT"}}]}, "text": "2. The number of rows that the DBE user MCAIN can see is shown in Figure 4-48."}, {"label": "caption", "id": 17, "page_no": 81, "cluster": {"id": 17, "label": "caption", "bbox": {"l": 136.09771728515625, "t": 626.5655517578125, "r": 451.9573974609375, "b": 636.12291, "coord_origin": "TOPLEFT"}, "confidence": 0.9248898029327393, "cells": [{"id": 60, "text": "Figure 4-48 Number of rows that DBE user can see in the CUSTOMERS table", "bbox": {"l": 136.8, "t": 627.7979, "r": 451.75512999999995, "b": 636.12291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-48 Number of rows that DBE user can see in the CUSTOMERS table"}, {"label": "picture", "id": 18, "page_no": 81, "cluster": {"id": 18, "label": "picture", "bbox": {"l": 135.9881591796875, "t": 491.6136474609375, "r": 393.8948669433594, "b": 625.150146484375, "coord_origin": "TOPLEFT"}, "confidence": 0.8431334495544434, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 19, "page_no": 81, "cluster": {"id": 19, "label": "picture", "bbox": {"l": 136.04849243164062, "t": 343.6217346191406, "r": 358.4311218261719, "b": 438.34320068359375, "coord_origin": "TOPLEFT"}, "confidence": 0.7820501923561096, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "section_header", "id": 2, "page_no": 81, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.1228256225586, "t": 70.26021575927734, "r": 347.13361, "b": 83.70108795166016, "coord_origin": "TOPLEFT"}, "confidence": 0.9626623392105103, "cells": [{"id": 2, "text": "4.3.10", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 101.29621, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Demonstrating data access with RCAC", "bbox": {"l": 104.94582, "t": 71.33471999999995, "r": 347.13361, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "4.3.10 Demonstrating data access with RCAC"}, {"label": "text", "id": 3, "page_no": 81, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.73379516601562, "t": 96.64435577392578, "r": 547.25568, "b": 119.03988647460938, "coord_origin": "TOPLEFT"}, "confidence": 0.9718443751335144, "cells": [{"id": 4, "text": "You are now ready to test the RCAC definitions. Run the following SQL statements with each ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 547.25568, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "type of user (DBE, SECURITY, TELLER, ADMIN, and WEBUSER):", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 433.09406, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}]}, "text": "You are now ready to test the RCAC definitions. Run the following SQL statements with each type of user (DBE, SECURITY, TELLER, ADMIN, and WEBUSER):"}, {"label": "list_item", "id": 4, "page_no": 81, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.537353515625, "t": 125.70227813720703, "r": 390.82486, "b": 135.94515991210938, "coord_origin": "TOPLEFT"}, "confidence": 0.9467165470123291, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 126.67749000000003, "r": 141.78, "b": 135.45227, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "A ", "bbox": {"l": 151.20016, "t": 126.52808000000005, "r": 160.64622, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "SELECT", "bbox": {"l": 160.62033, "t": 126.67749000000003, "r": 190.61983, "b": 135.50207999999998, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": " statement that returns the SESSION_USER.", "bbox": {"l": 190.61986, "t": 126.52808000000005, "r": 390.82486, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH A SELECT statement that returns the SESSION_USER."}, {"label": "list_item", "id": 5, "page_no": 81, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.6352081298828, "t": 142.6588897705078, "r": 543.19196, "b": 164.72069999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9719513654708862, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.8, "t": 143.65729, "r": 141.78, "b": 152.43206999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "A ", "bbox": {"l": 151.20016, "t": 143.50787000000003, "r": 160.64622, "b": 152.72089000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "SELECT", "bbox": {"l": 160.62033, "t": 143.65729, "r": 190.61983, "b": 152.48186999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": " statement that counts the customers from the CUSTOMER table. There are 90 ", "bbox": {"l": 190.61986, "t": 143.50787000000003, "r": 543.19196, "b": 152.72089000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "customers in the CUSTOMER table.", "bbox": {"l": 151.20016, "t": 155.50769000000003, "r": 310.90085, "b": 164.72069999999997, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH A SELECT statement that counts the customers from the CUSTOMER table. There are 90 customers in the CUSTOMER table."}, {"label": "list_item", "id": 6, "page_no": 81, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.70932006835938, "t": 171.48867797851562, "r": 543.64008, "b": 193.7998046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9690733551979065, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 172.63689999999997, "r": 141.78, "b": 181.41168000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "A simple ", "bbox": {"l": 151.20016, "t": 172.48748999999998, "r": 192.29114, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "SELECT", "bbox": {"l": 192.30011, "t": 172.63689999999997, "r": 222.23987, "b": 181.46149000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": " statement that returns the following output from the CUSTOMERS table ", "bbox": {"l": 222.29964, "t": 172.48748999999998, "r": 543.64008, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ordered by customer_name:", "bbox": {"l": 151.19919, "t": 184.4873, "r": 276.00995, "b": 193.70032000000003, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH A simple SELECT statement that returns the following output from the CUSTOMERS table ordered by customer_name:"}, {"label": "list_item", "id": 7, "page_no": 81, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 151.35504150390625, "t": 200.90966796875, "r": 227.99673, "b": 210.73987, "coord_origin": "TOPLEFT"}, "confidence": 0.914056658744812, "cells": [{"id": 20, "text": "-c", "bbox": {"l": 152.03882, "t": 201.52686000000006, "r": 178.60014, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "u", "bbox": {"l": 170.57835, "t": 201.52686000000006, "r": 184.13789, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "s", "bbox": {"l": 176.15794, "t": 201.52686000000006, "r": 189.15973, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "t", "bbox": {"l": 181.13794, "t": 201.52686000000006, "r": 191.9286, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "o", "bbox": {"l": 183.89786, "t": 201.52686000000006, "r": 197.4574, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "m", "bbox": {"l": 189.47745, "t": 201.52686000000006, "r": 205.79591, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "e", "bbox": {"l": 197.81696, "t": 201.52686000000006, "r": 211.3765, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "r", "bbox": {"l": 203.33678, "t": 201.52686000000006, "r": 214.67525, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "_", "bbox": {"l": 206.69728, "t": 201.52686000000006, "r": 220.25682, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "i", "bbox": {"l": 212.2171, "t": 201.52686000000006, "r": 222.45001, "b": 210.73987, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "d", "bbox": {"l": 214.43719000000002, "t": 201.52686000000006, "r": 227.99673, "b": 210.73987, "coord_origin": "TOPLEFT"}}]}, "text": "-c u s t o m e r _ i d"}, {"label": "list_item", "id": 8, "page_no": 81, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 151.4617462158203, "t": 213.36526489257812, "r": 237.24663000000004, "b": 222.73969, "coord_origin": "TOPLEFT"}, "confidence": 0.908424973487854, "cells": [{"id": 31, "text": "-", "bbox": {"l": 152.03882, "t": 213.52666999999997, "r": 157.61443, "b": 222.73969, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "customer_name", "bbox": {"l": 165.59836, "t": 213.52666999999997, "r": 237.24663000000004, "b": 222.73969, "coord_origin": "TOPLEFT"}}]}, "text": "-customer_name"}, {"label": "list_item", "id": 9, "page_no": 81, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 151.39413452148438, "t": 224.96202087402344, "r": 236.13907, "b": 234.73950000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9008285403251648, "cells": [{"id": 33, "text": "-", "bbox": {"l": 152.03882, "t": 225.52648999999997, "r": 157.61443, "b": 234.73950000000002, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "customer_email", "bbox": {"l": 165.59836, "t": 225.52648999999997, "r": 236.13907, "b": 234.73950000000002, "coord_origin": "TOPLEFT"}}]}, "text": "-customer_email"}, {"label": "list_item", "id": 10, "page_no": 81, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 151.38189697265625, "t": 237.14512634277344, "r": 246.89580999999998, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9172974228858948, "cells": [{"id": 35, "text": "-c", "bbox": {"l": 152.03882, "t": 237.52630999999997, "r": 178.60014, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "u", "bbox": {"l": 170.57835, "t": 237.52630999999997, "r": 184.13789, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "s", "bbox": {"l": 176.15794, "t": 237.52630999999997, "r": 189.15973, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "t", "bbox": {"l": 181.13794, "t": 237.52630999999997, "r": 191.9286, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "o", "bbox": {"l": 183.89786, "t": 237.52630999999997, "r": 197.4574, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "m", "bbox": {"l": 189.47745, "t": 237.52630999999997, "r": 205.79591, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "e", "bbox": {"l": 197.81696, "t": 237.52630999999997, "r": 211.3765, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "r", "bbox": {"l": 203.33678, "t": 237.52630999999997, "r": 214.67525, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "_", "bbox": {"l": 206.69728, "t": 237.52630999999997, "r": 220.25682, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "t", "bbox": {"l": 212.2171, "t": 237.52630999999997, "r": 223.00777, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "a", "bbox": {"l": 215.03677, "t": 237.52630999999997, "r": 228.59631000000002, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "x", "bbox": {"l": 220.55659, "t": 237.52630999999997, "r": 233.55837999999997, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "_", "bbox": {"l": 225.59636, "t": 237.52630999999997, "r": 239.15590000000003, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "i", "bbox": {"l": 231.11618, "t": 237.52630999999997, "r": 241.34908999999996, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "d", "bbox": {"l": 233.33627, "t": 237.52630999999997, "r": 246.89580999999998, "b": 246.73932000000002, "coord_origin": "TOPLEFT"}}]}, "text": "-c u s t o m e r _ t a x _ i d"}, {"label": "list_item", "id": 11, "page_no": 81, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 151.4001007080078, "t": 248.64210510253906, "r": 318.3563537597656, "b": 258.73914, "coord_origin": "TOPLEFT"}, "confidence": 0.9473636746406555, "cells": [{"id": 50, "text": "-", "bbox": {"l": 152.03882, "t": 249.52612, "r": 157.61044, "b": 258.73914, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "customer_drivers_license_number", "bbox": {"l": 165.59836, "t": 249.52612, "r": 318.23041, "b": 258.73914, "coord_origin": "TOPLEFT"}}]}, "text": "-customer_drivers_license_number"}, {"label": "section_header", "id": 12, "page_no": 81, "cluster": {"id": 12, "label": "section_header", "bbox": {"l": 136.71405029296875, "t": 274.4760437011719, "r": 357.22922, "b": 286.46402, "coord_origin": "TOPLEFT"}, "confidence": 0.9395599961280823, "cells": [{"id": 52, "text": "Data access for a DBE user with RCAC", "bbox": {"l": 136.8, "t": 275.36401, "r": 357.22922, "b": 286.46402, "coord_origin": "TOPLEFT"}}]}, "text": "Data access for a DBE user with RCAC"}, {"label": "text", "id": 13, "page_no": 81, "cluster": {"id": 13, "label": "text", "bbox": {"l": 136.20758056640625, "t": 289.3038635253906, "r": 394.54984, "b": 299.72171, "coord_origin": "TOPLEFT"}, "confidence": 0.9441509246826172, "cells": [{"id": 53, "text": "To test a DBE (MCAIN) user, complete the following steps:", "bbox": {"l": 136.8, "t": 290.50872999999996, "r": 394.54984, "b": 299.72171, "coord_origin": "TOPLEFT"}}]}, "text": "To test a DBE (MCAIN) user, complete the following steps:"}, {"label": "list_item", "id": 14, "page_no": 81, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 136.73385620117188, "t": 306.8790588378906, "r": 531.48303, "b": 328.8634033203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9618597626686096, "cells": [{"id": 54, "text": "1.", "bbox": {"l": 136.8, "t": 307.48853, "r": 145.21211, "b": 316.70151, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Confirm that the user is the user of the session by running the first SQL statement, as ", "bbox": {"l": 148.01613, "t": 307.48853, "r": 531.48303, "b": 316.70151, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "shown in Figure 4-47. In this example, MCAIN is the DBE user.", "bbox": {"l": 151.20016, "t": 319.48834, "r": 429.04044, "b": 328.70131999999995, "coord_origin": "TOPLEFT"}}]}, "text": "1. Confirm that the user is the user of the session by running the first SQL statement, as shown in Figure 4-47. In this example, MCAIN is the DBE user."}, {"label": "caption", "id": 15, "page_no": 81, "cluster": {"id": 15, "label": "caption", "bbox": {"l": 136.308349609375, "t": 440.55535888671875, "r": 262.7190856933594, "b": 450.0071105957031, "coord_origin": "TOPLEFT"}, "confidence": 0.9195859432220459, "cells": [{"id": 57, "text": "Figure 4-47 DBE session user", "bbox": {"l": 136.8, "t": 441.67801, "r": 261.65161, "b": 450.00302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-47 DBE session user"}, {"label": "list_item", "id": 16, "page_no": 81, "cluster": {"id": 16, "label": "list_item", "bbox": {"l": 135.81915283203125, "t": 466.6739807128906, "r": 503.15964, "b": 477.26654052734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9244843125343323, "cells": [{"id": 58, "text": "2.", "bbox": {"l": 136.8, "t": 467.62872, "r": 145.20607, "b": 476.84171, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "The number of rows that the DBE user MCAIN can see is shown in Figure 4-48.", "bbox": {"l": 148.00812, "t": 467.62872, "r": 503.15964, "b": 476.84171, "coord_origin": "TOPLEFT"}}]}, "text": "2. The number of rows that the DBE user MCAIN can see is shown in Figure 4-48."}, {"label": "caption", "id": 17, "page_no": 81, "cluster": {"id": 17, "label": "caption", "bbox": {"l": 136.09771728515625, "t": 626.5655517578125, "r": 451.9573974609375, "b": 636.12291, "coord_origin": "TOPLEFT"}, "confidence": 0.9248898029327393, "cells": [{"id": 60, "text": "Figure 4-48 Number of rows that DBE user can see in the CUSTOMERS table", "bbox": {"l": 136.8, "t": 627.7979, "r": 451.75512999999995, "b": 636.12291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-48 Number of rows that DBE user can see in the CUSTOMERS table"}, {"label": "picture", "id": 18, "page_no": 81, "cluster": {"id": 18, "label": "picture", "bbox": {"l": 135.9881591796875, "t": 491.6136474609375, "r": 393.8948669433594, "b": 625.150146484375, "coord_origin": "TOPLEFT"}, "confidence": 0.8431334495544434, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 19, "page_no": 81, "cluster": {"id": 19, "label": "picture", "bbox": {"l": 136.04849243164062, "t": 343.6217346191406, "r": 358.4311218261719, "b": 438.34320068359375, "coord_origin": "TOPLEFT"}, "confidence": 0.7820501923561096, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 81, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.22357940673828, "t": 754.4584350585938, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9105024337768555, "cells": [{"id": 0, "text": "66 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "66"}, {"label": "page_footer", "id": 1, "page_no": 81, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.37715148925781, "t": 754.6815795898438, "r": 334.42142, "b": 763.9869384765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9468215703964233, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 82, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "67", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "3.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.19135, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The result of the third SQL statement is shown in Figure 4-49. Note the masked columns. ", "bbox": {"l": 147.98859, "t": 71.50903000000005, "r": 547.29102, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "User MCAIN can see all the rows in the CUSTOMERS table, but there are some columns ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 547.17639, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "where the result is masked.", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 272.61414, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Figure 4-49 SQL statement that is run by the DBE user with masked columns", "bbox": {"l": 64.800003, "t": 471.198, "r": 376.18823, "b": 479.52301, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Data access for SECURITY user with RCAC", "bbox": {"l": 136.8, "t": 497.00391, "r": 382.60321, "b": 508.10391, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "To test a SECURITY user, complete the following steps:", "bbox": {"l": 136.8, "t": 512.1487099999999, "r": 382.87076, "b": 521.36169, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "1.", "bbox": {"l": 136.8, "t": 529.12851, "r": 145.21211, "b": 538.34152, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Confirm that the user is the user of the session by running the first SQL statement, as ", "bbox": {"l": 148.01613, "t": 529.12851, "r": 531.48303, "b": 538.34152, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "shown in Figure 4-50. In this example, SECURITY is the security officer.", "bbox": {"l": 151.20016, "t": 541.12833, "r": 469.19904, "b": 550.34132, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Figure 4-50 SECURITY session user", "bbox": {"l": 136.8, "t": 687.9179, "r": 288.62375, "b": 696.242897, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 214.31561279296875, "t": 754.7977905273438, "r": 523.59357, "b": 764.0062866210938, "coord_origin": "TOPLEFT"}, "confidence": 0.9568237662315369, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.5758666992188, "t": 754.2555541992188, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9127215147018433, "cells": [{"id": 1, "text": "67", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 136.20147705078125, "t": 70.6068115234375, "r": 547.29102, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9730502963066101, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.19135, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The result of the third SQL statement is shown in Figure 4-49. Note the masked columns. ", "bbox": {"l": 147.98859, "t": 71.50903000000005, "r": 547.29102, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "User MCAIN can see all the rows in the CUSTOMERS table, but there are some columns ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 547.17639, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "where the result is masked.", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 272.61414, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.37542724609375, "t": 469.88720703125, "r": 376.57159423828125, "b": 479.52301, "coord_origin": "TOPLEFT"}, "confidence": 0.940518319606781, "cells": [{"id": 6, "text": "Figure 4-49 SQL statement that is run by the DBE user with masked columns", "bbox": {"l": 64.800003, "t": 471.198, "r": 376.18823, "b": 479.52301, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 136.4634246826172, "t": 495.54241943359375, "r": 382.60321, "b": 508.10391, "coord_origin": "TOPLEFT"}, "confidence": 0.9448604583740234, "cells": [{"id": 7, "text": "Data access for SECURITY user with RCAC", "bbox": {"l": 136.8, "t": 497.00391, "r": 382.60321, "b": 508.10391, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.3077392578125, "t": 511.1701354980469, "r": 382.87076, "b": 521.498046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9233824014663696, "cells": [{"id": 8, "text": "To test a SECURITY user, complete the following steps:", "bbox": {"l": 136.8, "t": 512.1487099999999, "r": 382.87076, "b": 521.36169, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 136.8, "t": 527.958740234375, "r": 531.48303, "b": 550.41796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9695555567741394, "cells": [{"id": 9, "text": "1.", "bbox": {"l": 136.8, "t": 529.12851, "r": 145.21211, "b": 538.34152, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Confirm that the user is the user of the session by running the first SQL statement, as ", "bbox": {"l": 148.01613, "t": 529.12851, "r": 531.48303, "b": 538.34152, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "shown in Figure 4-50. In this example, SECURITY is the security officer.", "bbox": {"l": 151.20016, "t": 541.12833, "r": 469.19904, "b": 550.34132, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "caption", "bbox": {"l": 136.09732055664062, "t": 687.5260620117188, "r": 289.5880432128906, "b": 696.827880859375, "coord_origin": "TOPLEFT"}, "confidence": 0.9477524161338806, "cells": [{"id": 12, "text": "Figure 4-50 SECURITY session user", "bbox": {"l": 136.8, "t": 687.9179, "r": 288.62375, "b": 696.242897, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 135.97964477539062, "t": 564.6740112304688, "r": 354.29364013671875, "b": 685.4274291992188, "coord_origin": "TOPLEFT"}, "confidence": 0.945771336555481, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 82, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.31561279296875, "t": 754.7977905273438, "r": 523.59357, "b": 764.0062866210938, "coord_origin": "TOPLEFT"}, "confidence": 0.9568237662315369, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 82, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.5758666992188, "t": 754.2555541992188, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9127215147018433, "cells": [{"id": 1, "text": "67", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "67"}, {"label": "list_item", "id": 2, "page_no": 82, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.20147705078125, "t": 70.6068115234375, "r": 547.29102, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9730502963066101, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.19135, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The result of the third SQL statement is shown in Figure 4-49. Note the masked columns. ", "bbox": {"l": 147.98859, "t": 71.50903000000005, "r": 547.29102, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "User MCAIN can see all the rows in the CUSTOMERS table, but there are some columns ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 547.17639, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "where the result is masked.", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 272.61414, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "3. The result of the third SQL statement is shown in Figure 4-49. Note the masked columns. User MCAIN can see all the rows in the CUSTOMERS table, but there are some columns where the result is masked."}, {"label": "caption", "id": 3, "page_no": 82, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.37542724609375, "t": 469.88720703125, "r": 376.57159423828125, "b": 479.52301, "coord_origin": "TOPLEFT"}, "confidence": 0.940518319606781, "cells": [{"id": 6, "text": "Figure 4-49 SQL statement that is run by the DBE user with masked columns", "bbox": {"l": 64.800003, "t": 471.198, "r": 376.18823, "b": 479.52301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-49 SQL statement that is run by the DBE user with masked columns"}, {"label": "section_header", "id": 4, "page_no": 82, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 136.4634246826172, "t": 495.54241943359375, "r": 382.60321, "b": 508.10391, "coord_origin": "TOPLEFT"}, "confidence": 0.9448604583740234, "cells": [{"id": 7, "text": "Data access for SECURITY user with RCAC", "bbox": {"l": 136.8, "t": 497.00391, "r": 382.60321, "b": 508.10391, "coord_origin": "TOPLEFT"}}]}, "text": "Data access for SECURITY user with RCAC"}, {"label": "text", "id": 5, "page_no": 82, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.3077392578125, "t": 511.1701354980469, "r": 382.87076, "b": 521.498046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9233824014663696, "cells": [{"id": 8, "text": "To test a SECURITY user, complete the following steps:", "bbox": {"l": 136.8, "t": 512.1487099999999, "r": 382.87076, "b": 521.36169, "coord_origin": "TOPLEFT"}}]}, "text": "To test a SECURITY user, complete the following steps:"}, {"label": "list_item", "id": 6, "page_no": 82, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.8, "t": 527.958740234375, "r": 531.48303, "b": 550.41796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9695555567741394, "cells": [{"id": 9, "text": "1.", "bbox": {"l": 136.8, "t": 529.12851, "r": 145.21211, "b": 538.34152, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Confirm that the user is the user of the session by running the first SQL statement, as ", "bbox": {"l": 148.01613, "t": 529.12851, "r": 531.48303, "b": 538.34152, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "shown in Figure 4-50. In this example, SECURITY is the security officer.", "bbox": {"l": 151.20016, "t": 541.12833, "r": 469.19904, "b": 550.34132, "coord_origin": "TOPLEFT"}}]}, "text": "1. Confirm that the user is the user of the session by running the first SQL statement, as shown in Figure 4-50. In this example, SECURITY is the security officer."}, {"label": "caption", "id": 7, "page_no": 82, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 136.09732055664062, "t": 687.5260620117188, "r": 289.5880432128906, "b": 696.827880859375, "coord_origin": "TOPLEFT"}, "confidence": 0.9477524161338806, "cells": [{"id": 12, "text": "Figure 4-50 SECURITY session user", "bbox": {"l": 136.8, "t": 687.9179, "r": 288.62375, "b": 696.242897, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-50 SECURITY session user"}, {"label": "picture", "id": 8, "page_no": 82, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 135.97964477539062, "t": 564.6740112304688, "r": 354.29364013671875, "b": 685.4274291992188, "coord_origin": "TOPLEFT"}, "confidence": 0.945771336555481, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 82, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.20147705078125, "t": 70.6068115234375, "r": 547.29102, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9730502963066101, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.19135, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The result of the third SQL statement is shown in Figure 4-49. Note the masked columns. ", "bbox": {"l": 147.98859, "t": 71.50903000000005, "r": 547.29102, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "User MCAIN can see all the rows in the CUSTOMERS table, but there are some columns ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 547.17639, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "where the result is masked.", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 272.61414, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "3. The result of the third SQL statement is shown in Figure 4-49. Note the masked columns. User MCAIN can see all the rows in the CUSTOMERS table, but there are some columns where the result is masked."}, {"label": "caption", "id": 3, "page_no": 82, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.37542724609375, "t": 469.88720703125, "r": 376.57159423828125, "b": 479.52301, "coord_origin": "TOPLEFT"}, "confidence": 0.940518319606781, "cells": [{"id": 6, "text": "Figure 4-49 SQL statement that is run by the DBE user with masked columns", "bbox": {"l": 64.800003, "t": 471.198, "r": 376.18823, "b": 479.52301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-49 SQL statement that is run by the DBE user with masked columns"}, {"label": "section_header", "id": 4, "page_no": 82, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 136.4634246826172, "t": 495.54241943359375, "r": 382.60321, "b": 508.10391, "coord_origin": "TOPLEFT"}, "confidence": 0.9448604583740234, "cells": [{"id": 7, "text": "Data access for SECURITY user with RCAC", "bbox": {"l": 136.8, "t": 497.00391, "r": 382.60321, "b": 508.10391, "coord_origin": "TOPLEFT"}}]}, "text": "Data access for SECURITY user with RCAC"}, {"label": "text", "id": 5, "page_no": 82, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.3077392578125, "t": 511.1701354980469, "r": 382.87076, "b": 521.498046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9233824014663696, "cells": [{"id": 8, "text": "To test a SECURITY user, complete the following steps:", "bbox": {"l": 136.8, "t": 512.1487099999999, "r": 382.87076, "b": 521.36169, "coord_origin": "TOPLEFT"}}]}, "text": "To test a SECURITY user, complete the following steps:"}, {"label": "list_item", "id": 6, "page_no": 82, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.8, "t": 527.958740234375, "r": 531.48303, "b": 550.41796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9695555567741394, "cells": [{"id": 9, "text": "1.", "bbox": {"l": 136.8, "t": 529.12851, "r": 145.21211, "b": 538.34152, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Confirm that the user is the user of the session by running the first SQL statement, as ", "bbox": {"l": 148.01613, "t": 529.12851, "r": 531.48303, "b": 538.34152, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "shown in Figure 4-50. In this example, SECURITY is the security officer.", "bbox": {"l": 151.20016, "t": 541.12833, "r": 469.19904, "b": 550.34132, "coord_origin": "TOPLEFT"}}]}, "text": "1. Confirm that the user is the user of the session by running the first SQL statement, as shown in Figure 4-50. In this example, SECURITY is the security officer."}, {"label": "caption", "id": 7, "page_no": 82, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 136.09732055664062, "t": 687.5260620117188, "r": 289.5880432128906, "b": 696.827880859375, "coord_origin": "TOPLEFT"}, "confidence": 0.9477524161338806, "cells": [{"id": 12, "text": "Figure 4-50 SECURITY session user", "bbox": {"l": 136.8, "t": 687.9179, "r": 288.62375, "b": 696.242897, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-50 SECURITY session user"}, {"label": "picture", "id": 8, "page_no": 82, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 135.97964477539062, "t": 564.6740112304688, "r": 354.29364013671875, "b": 685.4274291992188, "coord_origin": "TOPLEFT"}, "confidence": 0.945771336555481, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 82, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.31561279296875, "t": 754.7977905273438, "r": 523.59357, "b": 764.0062866210938, "coord_origin": "TOPLEFT"}, "confidence": 0.9568237662315369, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 82, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.5758666992188, "t": 754.2555541992188, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9127215147018433, "cells": [{"id": 1, "text": "67", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "67"}]}}, {"page_no": 83, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "68 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "2.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.05519, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The number of rows in the CUSTOMERS table that the security officer can see is shown in ", "bbox": {"l": 147.8069, "t": 71.50867000000005, "r": 547.19379, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 4-51. The security officer cannot see any data at all.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 411.76868, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Figure 4-51 Number of rows that the security officer can see in the CUSTOMERS table", "bbox": {"l": 136.8, "t": 228.61803999999995, "r": 486.40319999999997, "b": 236.94299, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "3.", "bbox": {"l": 136.8, "t": 254.56866000000002, "r": 145.20145, "b": 263.78168000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "The result of the third SQL statement is shown in Figure 4-52. Note the empty set that is ", "bbox": {"l": 148.00191, "t": 254.56866000000002, "r": 542.73871, "b": 263.78168000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "returned to the security officer.", "bbox": {"l": 151.20016, "t": 266.56848, "r": 286.06564, "b": 275.78148999999996, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Figure 4-52 SQL statement that is run by the SECURITY user - no results", "bbox": {"l": 64.800003, "t": 441.67801, "r": 362.02679, "b": 450.00302, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Data access for TELLER user with RCAC", "bbox": {"l": 136.8, "t": 467.48401, "r": 368.64481, "b": 478.58401, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "To test a Teller (TQSPENCER) user, complete the following steps:", "bbox": {"l": 136.8, "t": 482.62872, "r": 427.75647, "b": 491.84171, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "1.", "bbox": {"l": 136.79999, "t": 499.60852, "r": 145.21622, "b": 508.8215, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Confirm that the TELLER user is the user of the session by running the first SQL ", "bbox": {"l": 148.02162, "t": 499.60852, "r": 509.23330999999996, "b": 508.8215, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "statement, as shown in Figure 4-53. In this example, TQSPENCER is a TELLER user.", "bbox": {"l": 151.20015, "t": 511.60834, "r": 530.67822, "b": 520.82132, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Figure 4-53 TELLER session user", "bbox": {"l": 136.8, "t": 672.8579, "r": 277.11722, "b": 681.1829, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.20339965820312, "t": 754.427978515625, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9174648523330688, "cells": [{"id": 0, "text": "68 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.34625244140625, "t": 754.708740234375, "r": 334.42142, "b": 763.9661865234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9526290893554688, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 135.87147521972656, "t": 70.62814331054688, "r": 547.19379, "b": 93.03572082519531, "coord_origin": "TOPLEFT"}, "confidence": 0.9643672108650208, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.05519, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The number of rows in the CUSTOMERS table that the security officer can see is shown in ", "bbox": {"l": 147.8069, "t": 71.50867000000005, "r": 547.19379, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 4-51. The security officer cannot see any data at all.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 411.76868, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.1445770263672, "t": 228.07118225097656, "r": 486.7213439941406, "b": 237.11375427246094, "coord_origin": "TOPLEFT"}, "confidence": 0.9390786290168762, "cells": [{"id": 5, "text": "Figure 4-51 Number of rows that the security officer can see in the CUSTOMERS table", "bbox": {"l": 136.8, "t": 228.61803999999995, "r": 486.40319999999997, "b": 236.94299, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 136.01255798339844, "t": 254.04481506347656, "r": 542.73871, "b": 275.8885192871094, "coord_origin": "TOPLEFT"}, "confidence": 0.9614978432655334, "cells": [{"id": 6, "text": "3.", "bbox": {"l": 136.8, "t": 254.56866000000002, "r": 145.20145, "b": 263.78168000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "The result of the third SQL statement is shown in Figure 4-52. Note the empty set that is ", "bbox": {"l": 148.00191, "t": 254.56866000000002, "r": 542.73871, "b": 263.78168000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "returned to the security officer.", "bbox": {"l": 151.20016, "t": 266.56848, "r": 286.06564, "b": 275.78148999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 64.1894760131836, "t": 440.5732116699219, "r": 362.28131103515625, "b": 450.00302, "coord_origin": "TOPLEFT"}, "confidence": 0.952978253364563, "cells": [{"id": 9, "text": "Figure 4-52 SQL statement that is run by the SECURITY user - no results", "bbox": {"l": 64.800003, "t": 441.67801, "r": 362.02679, "b": 450.00302, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "section_header", "bbox": {"l": 136.5155792236328, "t": 466.390380859375, "r": 368.64481, "b": 478.58401, "coord_origin": "TOPLEFT"}, "confidence": 0.9474611878395081, "cells": [{"id": 10, "text": "Data access for TELLER user with RCAC", "bbox": {"l": 136.8, "t": 467.48401, "r": 368.64481, "b": 478.58401, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 136.20401000976562, "t": 481.7389831542969, "r": 427.75647, "b": 492.3285217285156, "coord_origin": "TOPLEFT"}, "confidence": 0.9360538125038147, "cells": [{"id": 11, "text": "To test a Teller (TQSPENCER) user, complete the following steps:", "bbox": {"l": 136.8, "t": 482.62872, "r": 427.75647, "b": 491.84171, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 136.66238403320312, "t": 498.4595947265625, "r": 530.67822, "b": 520.9165649414062, "coord_origin": "TOPLEFT"}, "confidence": 0.960720956325531, "cells": [{"id": 12, "text": "1.", "bbox": {"l": 136.79999, "t": 499.60852, "r": 145.21622, "b": 508.8215, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Confirm that the TELLER user is the user of the session by running the first SQL ", "bbox": {"l": 148.02162, "t": 499.60852, "r": 509.23330999999996, "b": 508.8215, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "statement, as shown in Figure 4-53. In this example, TQSPENCER is a TELLER user.", "bbox": {"l": 151.20015, "t": 511.60834, "r": 530.67822, "b": 520.82132, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "caption", "bbox": {"l": 136.1230010986328, "t": 672.151611328125, "r": 278.20037841796875, "b": 681.5107421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9520363211631775, "cells": [{"id": 15, "text": "Figure 4-53 TELLER session user", "bbox": {"l": 136.8, "t": 672.8579, "r": 277.11722, "b": 681.1829, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "picture", "bbox": {"l": 135.7608642578125, "t": 535.8259887695312, "r": 362.02239990234375, "b": 669.7214965820312, "coord_origin": "TOPLEFT"}, "confidence": 0.9807249307632446, "cells": []}, {"id": 11, "label": "picture", "bbox": {"l": 64.11683654785156, "t": 289.6597900390625, "r": 546.5642700195312, "b": 438.1582946777344, "coord_origin": "TOPLEFT"}, "confidence": 0.9767975211143494, "cells": []}, {"id": 12, "label": "picture", "bbox": {"l": 136.23712158203125, "t": 107.2462158203125, "r": 385.9791564941406, "b": 225.44589233398438, "coord_origin": "TOPLEFT"}, "confidence": 0.9731733202934265, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 83, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.20339965820312, "t": 754.427978515625, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9174648523330688, "cells": [{"id": 0, "text": "68 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "68"}, {"label": "page_footer", "id": 1, "page_no": 83, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.34625244140625, "t": 754.708740234375, "r": 334.42142, "b": 763.9661865234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9526290893554688, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "list_item", "id": 2, "page_no": 83, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.87147521972656, "t": 70.62814331054688, "r": 547.19379, "b": 93.03572082519531, "coord_origin": "TOPLEFT"}, "confidence": 0.9643672108650208, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.05519, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The number of rows in the CUSTOMERS table that the security officer can see is shown in ", "bbox": {"l": 147.8069, "t": 71.50867000000005, "r": 547.19379, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 4-51. The security officer cannot see any data at all.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 411.76868, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "2. The number of rows in the CUSTOMERS table that the security officer can see is shown in Figure 4-51. The security officer cannot see any data at all."}, {"label": "caption", "id": 3, "page_no": 83, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.1445770263672, "t": 228.07118225097656, "r": 486.7213439941406, "b": 237.11375427246094, "coord_origin": "TOPLEFT"}, "confidence": 0.9390786290168762, "cells": [{"id": 5, "text": "Figure 4-51 Number of rows that the security officer can see in the CUSTOMERS table", "bbox": {"l": 136.8, "t": 228.61803999999995, "r": 486.40319999999997, "b": 236.94299, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-51 Number of rows that the security officer can see in the CUSTOMERS table"}, {"label": "list_item", "id": 4, "page_no": 83, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.01255798339844, "t": 254.04481506347656, "r": 542.73871, "b": 275.8885192871094, "coord_origin": "TOPLEFT"}, "confidence": 0.9614978432655334, "cells": [{"id": 6, "text": "3.", "bbox": {"l": 136.8, "t": 254.56866000000002, "r": 145.20145, "b": 263.78168000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "The result of the third SQL statement is shown in Figure 4-52. Note the empty set that is ", "bbox": {"l": 148.00191, "t": 254.56866000000002, "r": 542.73871, "b": 263.78168000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "returned to the security officer.", "bbox": {"l": 151.20016, "t": 266.56848, "r": 286.06564, "b": 275.78148999999996, "coord_origin": "TOPLEFT"}}]}, "text": "3. The result of the third SQL statement is shown in Figure 4-52. Note the empty set that is returned to the security officer."}, {"label": "caption", "id": 5, "page_no": 83, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.1894760131836, "t": 440.5732116699219, "r": 362.28131103515625, "b": 450.00302, "coord_origin": "TOPLEFT"}, "confidence": 0.952978253364563, "cells": [{"id": 9, "text": "Figure 4-52 SQL statement that is run by the SECURITY user - no results", "bbox": {"l": 64.800003, "t": 441.67801, "r": 362.02679, "b": 450.00302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-52 SQL statement that is run by the SECURITY user - no results"}, {"label": "section_header", "id": 6, "page_no": 83, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 136.5155792236328, "t": 466.390380859375, "r": 368.64481, "b": 478.58401, "coord_origin": "TOPLEFT"}, "confidence": 0.9474611878395081, "cells": [{"id": 10, "text": "Data access for TELLER user with RCAC", "bbox": {"l": 136.8, "t": 467.48401, "r": 368.64481, "b": 478.58401, "coord_origin": "TOPLEFT"}}]}, "text": "Data access for TELLER user with RCAC"}, {"label": "text", "id": 7, "page_no": 83, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.20401000976562, "t": 481.7389831542969, "r": 427.75647, "b": 492.3285217285156, "coord_origin": "TOPLEFT"}, "confidence": 0.9360538125038147, "cells": [{"id": 11, "text": "To test a Teller (TQSPENCER) user, complete the following steps:", "bbox": {"l": 136.8, "t": 482.62872, "r": 427.75647, "b": 491.84171, "coord_origin": "TOPLEFT"}}]}, "text": "To test a Teller (TQSPENCER) user, complete the following steps:"}, {"label": "list_item", "id": 8, "page_no": 83, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 136.66238403320312, "t": 498.4595947265625, "r": 530.67822, "b": 520.9165649414062, "coord_origin": "TOPLEFT"}, "confidence": 0.960720956325531, "cells": [{"id": 12, "text": "1.", "bbox": {"l": 136.79999, "t": 499.60852, "r": 145.21622, "b": 508.8215, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Confirm that the TELLER user is the user of the session by running the first SQL ", "bbox": {"l": 148.02162, "t": 499.60852, "r": 509.23330999999996, "b": 508.8215, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "statement, as shown in Figure 4-53. In this example, TQSPENCER is a TELLER user.", "bbox": {"l": 151.20015, "t": 511.60834, "r": 530.67822, "b": 520.82132, "coord_origin": "TOPLEFT"}}]}, "text": "1. Confirm that the TELLER user is the user of the session by running the first SQL statement, as shown in Figure 4-53. In this example, TQSPENCER is a TELLER user."}, {"label": "caption", "id": 9, "page_no": 83, "cluster": {"id": 9, "label": "caption", "bbox": {"l": 136.1230010986328, "t": 672.151611328125, "r": 278.20037841796875, "b": 681.5107421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9520363211631775, "cells": [{"id": 15, "text": "Figure 4-53 TELLER session user", "bbox": {"l": 136.8, "t": 672.8579, "r": 277.11722, "b": 681.1829, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-53 TELLER session user"}, {"label": "picture", "id": 10, "page_no": 83, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 135.7608642578125, "t": 535.8259887695312, "r": 362.02239990234375, "b": 669.7214965820312, "coord_origin": "TOPLEFT"}, "confidence": 0.9807249307632446, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 11, "page_no": 83, "cluster": {"id": 11, "label": "picture", "bbox": {"l": 64.11683654785156, "t": 289.6597900390625, "r": 546.5642700195312, "b": 438.1582946777344, "coord_origin": "TOPLEFT"}, "confidence": 0.9767975211143494, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 12, "page_no": 83, "cluster": {"id": 12, "label": "picture", "bbox": {"l": 136.23712158203125, "t": 107.2462158203125, "r": 385.9791564941406, "b": 225.44589233398438, "coord_origin": "TOPLEFT"}, "confidence": 0.9731733202934265, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 83, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.87147521972656, "t": 70.62814331054688, "r": 547.19379, "b": 93.03572082519531, "coord_origin": "TOPLEFT"}, "confidence": 0.9643672108650208, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.05519, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The number of rows in the CUSTOMERS table that the security officer can see is shown in ", "bbox": {"l": 147.8069, "t": 71.50867000000005, "r": 547.19379, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 4-51. The security officer cannot see any data at all.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 411.76868, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "2. The number of rows in the CUSTOMERS table that the security officer can see is shown in Figure 4-51. The security officer cannot see any data at all."}, {"label": "caption", "id": 3, "page_no": 83, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.1445770263672, "t": 228.07118225097656, "r": 486.7213439941406, "b": 237.11375427246094, "coord_origin": "TOPLEFT"}, "confidence": 0.9390786290168762, "cells": [{"id": 5, "text": "Figure 4-51 Number of rows that the security officer can see in the CUSTOMERS table", "bbox": {"l": 136.8, "t": 228.61803999999995, "r": 486.40319999999997, "b": 236.94299, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-51 Number of rows that the security officer can see in the CUSTOMERS table"}, {"label": "list_item", "id": 4, "page_no": 83, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.01255798339844, "t": 254.04481506347656, "r": 542.73871, "b": 275.8885192871094, "coord_origin": "TOPLEFT"}, "confidence": 0.9614978432655334, "cells": [{"id": 6, "text": "3.", "bbox": {"l": 136.8, "t": 254.56866000000002, "r": 145.20145, "b": 263.78168000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "The result of the third SQL statement is shown in Figure 4-52. Note the empty set that is ", "bbox": {"l": 148.00191, "t": 254.56866000000002, "r": 542.73871, "b": 263.78168000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "returned to the security officer.", "bbox": {"l": 151.20016, "t": 266.56848, "r": 286.06564, "b": 275.78148999999996, "coord_origin": "TOPLEFT"}}]}, "text": "3. The result of the third SQL statement is shown in Figure 4-52. Note the empty set that is returned to the security officer."}, {"label": "caption", "id": 5, "page_no": 83, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.1894760131836, "t": 440.5732116699219, "r": 362.28131103515625, "b": 450.00302, "coord_origin": "TOPLEFT"}, "confidence": 0.952978253364563, "cells": [{"id": 9, "text": "Figure 4-52 SQL statement that is run by the SECURITY user - no results", "bbox": {"l": 64.800003, "t": 441.67801, "r": 362.02679, "b": 450.00302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-52 SQL statement that is run by the SECURITY user - no results"}, {"label": "section_header", "id": 6, "page_no": 83, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 136.5155792236328, "t": 466.390380859375, "r": 368.64481, "b": 478.58401, "coord_origin": "TOPLEFT"}, "confidence": 0.9474611878395081, "cells": [{"id": 10, "text": "Data access for TELLER user with RCAC", "bbox": {"l": 136.8, "t": 467.48401, "r": 368.64481, "b": 478.58401, "coord_origin": "TOPLEFT"}}]}, "text": "Data access for TELLER user with RCAC"}, {"label": "text", "id": 7, "page_no": 83, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.20401000976562, "t": 481.7389831542969, "r": 427.75647, "b": 492.3285217285156, "coord_origin": "TOPLEFT"}, "confidence": 0.9360538125038147, "cells": [{"id": 11, "text": "To test a Teller (TQSPENCER) user, complete the following steps:", "bbox": {"l": 136.8, "t": 482.62872, "r": 427.75647, "b": 491.84171, "coord_origin": "TOPLEFT"}}]}, "text": "To test a Teller (TQSPENCER) user, complete the following steps:"}, {"label": "list_item", "id": 8, "page_no": 83, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 136.66238403320312, "t": 498.4595947265625, "r": 530.67822, "b": 520.9165649414062, "coord_origin": "TOPLEFT"}, "confidence": 0.960720956325531, "cells": [{"id": 12, "text": "1.", "bbox": {"l": 136.79999, "t": 499.60852, "r": 145.21622, "b": 508.8215, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Confirm that the TELLER user is the user of the session by running the first SQL ", "bbox": {"l": 148.02162, "t": 499.60852, "r": 509.23330999999996, "b": 508.8215, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "statement, as shown in Figure 4-53. In this example, TQSPENCER is a TELLER user.", "bbox": {"l": 151.20015, "t": 511.60834, "r": 530.67822, "b": 520.82132, "coord_origin": "TOPLEFT"}}]}, "text": "1. Confirm that the TELLER user is the user of the session by running the first SQL statement, as shown in Figure 4-53. In this example, TQSPENCER is a TELLER user."}, {"label": "caption", "id": 9, "page_no": 83, "cluster": {"id": 9, "label": "caption", "bbox": {"l": 136.1230010986328, "t": 672.151611328125, "r": 278.20037841796875, "b": 681.5107421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9520363211631775, "cells": [{"id": 15, "text": "Figure 4-53 TELLER session user", "bbox": {"l": 136.8, "t": 672.8579, "r": 277.11722, "b": 681.1829, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-53 TELLER session user"}, {"label": "picture", "id": 10, "page_no": 83, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 135.7608642578125, "t": 535.8259887695312, "r": 362.02239990234375, "b": 669.7214965820312, "coord_origin": "TOPLEFT"}, "confidence": 0.9807249307632446, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 11, "page_no": 83, "cluster": {"id": 11, "label": "picture", "bbox": {"l": 64.11683654785156, "t": 289.6597900390625, "r": 546.5642700195312, "b": 438.1582946777344, "coord_origin": "TOPLEFT"}, "confidence": 0.9767975211143494, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 12, "page_no": 83, "cluster": {"id": 12, "label": "picture", "bbox": {"l": 136.23712158203125, "t": 107.2462158203125, "r": 385.9791564941406, "b": 225.44589233398438, "coord_origin": "TOPLEFT"}, "confidence": 0.9731733202934265, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 83, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.20339965820312, "t": 754.427978515625, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9174648523330688, "cells": [{"id": 0, "text": "68 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "68"}, {"label": "page_footer", "id": 1, "page_no": 83, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.34625244140625, "t": 754.708740234375, "r": 334.42142, "b": 763.9661865234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9526290893554688, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 84, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "69", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.1451, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The number of rows in the CUSTOMERS table that the TELLER user can see is shown in ", "bbox": {"l": 147.92693, "t": 71.50903000000005, "r": 547.24017, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 4-54. The TELLER user can see all the rows.", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 381.47095, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Figure 4-54 Number of rows that the TELLER user can see in the CUSTOMERS table", "bbox": {"l": 136.8, "t": 222.49805000000003, "r": 482.17749, "b": 230.82299999999998, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "3.", "bbox": {"l": 136.8, "t": 248.44867, "r": 145.19176, "b": 257.66168000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "The result of the third SQL statement is shown in Figure 4-55. Note the masked columns. ", "bbox": {"l": 147.98898, "t": 248.44867, "r": 547.29144, "b": 257.66168000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "The TELLER user, TQSPENSER, can see all the rows, but there are some columns where ", "bbox": {"l": 151.20016, "t": 260.44849, "r": 547.20081, "b": 269.66150000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "the result is masked.", "bbox": {"l": 151.20013, "t": 272.4483, "r": 242.59509, "b": 281.66132, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Figure 4-55 SQL statement that is run by the TELLER user with masked columns", "bbox": {"l": 64.800003, "t": 673.158, "r": 391.66644, "b": 681.483, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 214.29336547851562, "t": 754.7902221679688, "r": 523.59357, "b": 763.9354248046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9566875696182251, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.5740966796875, "t": 754.166259765625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9140955209732056, "cells": [{"id": 1, "text": "69", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 135.8011474609375, "t": 70.60009765625, "r": 547.24017, "b": 92.9535140991211, "coord_origin": "TOPLEFT"}, "confidence": 0.953477680683136, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.1451, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The number of rows in the CUSTOMERS table that the TELLER user can see is shown in ", "bbox": {"l": 147.92693, "t": 71.50903000000005, "r": 547.24017, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 4-54. The TELLER user can see all the rows.", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 381.47095, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 135.62548828125, "t": 221.36160278320312, "r": 482.5060729980469, "b": 230.82299999999998, "coord_origin": "TOPLEFT"}, "confidence": 0.9344339370727539, "cells": [{"id": 5, "text": "Figure 4-54 Number of rows that the TELLER user can see in the CUSTOMERS table", "bbox": {"l": 136.8, "t": 222.49805000000003, "r": 482.17749, "b": 230.82299999999998, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 136.01345825195312, "t": 247.20472717285156, "r": 547.29144, "b": 281.66132, "coord_origin": "TOPLEFT"}, "confidence": 0.9552950263023376, "cells": [{"id": 6, "text": "3.", "bbox": {"l": 136.8, "t": 248.44867, "r": 145.19176, "b": 257.66168000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "The result of the third SQL statement is shown in Figure 4-55. Note the masked columns. ", "bbox": {"l": 147.98898, "t": 248.44867, "r": 547.29144, "b": 257.66168000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "The TELLER user, TQSPENSER, can see all the rows, but there are some columns where ", "bbox": {"l": 151.20016, "t": 260.44849, "r": 547.20081, "b": 269.66150000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "the result is masked.", "bbox": {"l": 151.20013, "t": 272.4483, "r": 242.59509, "b": 281.66132, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 64.17078399658203, "t": 672.1625366210938, "r": 391.8590393066406, "b": 681.483, "coord_origin": "TOPLEFT"}, "confidence": 0.9434057474136353, "cells": [{"id": 10, "text": "Figure 4-55 SQL statement that is run by the TELLER user with masked columns", "bbox": {"l": 64.800003, "t": 673.158, "r": 391.66644, "b": 681.483, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "picture", "bbox": {"l": 135.92535400390625, "t": 107.52780151367188, "r": 388.818115234375, "b": 219.1571807861328, "coord_origin": "TOPLEFT"}, "confidence": 0.9634679555892944, "cells": []}, {"id": 7, "label": "picture", "bbox": {"l": 64.41838073730469, "t": 296.1629638671875, "r": 548.2760009765625, "b": 670.6256713867188, "coord_origin": "TOPLEFT"}, "confidence": 0.7070707678794861, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 84, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.29336547851562, "t": 754.7902221679688, "r": 523.59357, "b": 763.9354248046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9566875696182251, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 84, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.5740966796875, "t": 754.166259765625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9140955209732056, "cells": [{"id": 1, "text": "69", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "69"}, {"label": "list_item", "id": 2, "page_no": 84, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.8011474609375, "t": 70.60009765625, "r": 547.24017, "b": 92.9535140991211, "coord_origin": "TOPLEFT"}, "confidence": 0.953477680683136, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.1451, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The number of rows in the CUSTOMERS table that the TELLER user can see is shown in ", "bbox": {"l": 147.92693, "t": 71.50903000000005, "r": 547.24017, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 4-54. The TELLER user can see all the rows.", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 381.47095, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "2. The number of rows in the CUSTOMERS table that the TELLER user can see is shown in Figure 4-54. The TELLER user can see all the rows."}, {"label": "caption", "id": 3, "page_no": 84, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.62548828125, "t": 221.36160278320312, "r": 482.5060729980469, "b": 230.82299999999998, "coord_origin": "TOPLEFT"}, "confidence": 0.9344339370727539, "cells": [{"id": 5, "text": "Figure 4-54 Number of rows that the TELLER user can see in the CUSTOMERS table", "bbox": {"l": 136.8, "t": 222.49805000000003, "r": 482.17749, "b": 230.82299999999998, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-54 Number of rows that the TELLER user can see in the CUSTOMERS table"}, {"label": "list_item", "id": 4, "page_no": 84, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.01345825195312, "t": 247.20472717285156, "r": 547.29144, "b": 281.66132, "coord_origin": "TOPLEFT"}, "confidence": 0.9552950263023376, "cells": [{"id": 6, "text": "3.", "bbox": {"l": 136.8, "t": 248.44867, "r": 145.19176, "b": 257.66168000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "The result of the third SQL statement is shown in Figure 4-55. Note the masked columns. ", "bbox": {"l": 147.98898, "t": 248.44867, "r": 547.29144, "b": 257.66168000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "The TELLER user, TQSPENSER, can see all the rows, but there are some columns where ", "bbox": {"l": 151.20016, "t": 260.44849, "r": 547.20081, "b": 269.66150000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "the result is masked.", "bbox": {"l": 151.20013, "t": 272.4483, "r": 242.59509, "b": 281.66132, "coord_origin": "TOPLEFT"}}]}, "text": "3. The result of the third SQL statement is shown in Figure 4-55. Note the masked columns. The TELLER user, TQSPENSER, can see all the rows, but there are some columns where the result is masked."}, {"label": "caption", "id": 5, "page_no": 84, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.17078399658203, "t": 672.1625366210938, "r": 391.8590393066406, "b": 681.483, "coord_origin": "TOPLEFT"}, "confidence": 0.9434057474136353, "cells": [{"id": 10, "text": "Figure 4-55 SQL statement that is run by the TELLER user with masked columns", "bbox": {"l": 64.800003, "t": 673.158, "r": 391.66644, "b": 681.483, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-55 SQL statement that is run by the TELLER user with masked columns"}, {"label": "picture", "id": 6, "page_no": 84, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 135.92535400390625, "t": 107.52780151367188, "r": 388.818115234375, "b": 219.1571807861328, "coord_origin": "TOPLEFT"}, "confidence": 0.9634679555892944, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 7, "page_no": 84, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 64.41838073730469, "t": 296.1629638671875, "r": 548.2760009765625, "b": 670.6256713867188, "coord_origin": "TOPLEFT"}, "confidence": 0.7070707678794861, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 84, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.8011474609375, "t": 70.60009765625, "r": 547.24017, "b": 92.9535140991211, "coord_origin": "TOPLEFT"}, "confidence": 0.953477680683136, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.1451, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The number of rows in the CUSTOMERS table that the TELLER user can see is shown in ", "bbox": {"l": 147.92693, "t": 71.50903000000005, "r": 547.24017, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 4-54. The TELLER user can see all the rows.", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 381.47095, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "2. The number of rows in the CUSTOMERS table that the TELLER user can see is shown in Figure 4-54. The TELLER user can see all the rows."}, {"label": "caption", "id": 3, "page_no": 84, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.62548828125, "t": 221.36160278320312, "r": 482.5060729980469, "b": 230.82299999999998, "coord_origin": "TOPLEFT"}, "confidence": 0.9344339370727539, "cells": [{"id": 5, "text": "Figure 4-54 Number of rows that the TELLER user can see in the CUSTOMERS table", "bbox": {"l": 136.8, "t": 222.49805000000003, "r": 482.17749, "b": 230.82299999999998, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-54 Number of rows that the TELLER user can see in the CUSTOMERS table"}, {"label": "list_item", "id": 4, "page_no": 84, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.01345825195312, "t": 247.20472717285156, "r": 547.29144, "b": 281.66132, "coord_origin": "TOPLEFT"}, "confidence": 0.9552950263023376, "cells": [{"id": 6, "text": "3.", "bbox": {"l": 136.8, "t": 248.44867, "r": 145.19176, "b": 257.66168000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "The result of the third SQL statement is shown in Figure 4-55. Note the masked columns. ", "bbox": {"l": 147.98898, "t": 248.44867, "r": 547.29144, "b": 257.66168000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "The TELLER user, TQSPENSER, can see all the rows, but there are some columns where ", "bbox": {"l": 151.20016, "t": 260.44849, "r": 547.20081, "b": 269.66150000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "the result is masked.", "bbox": {"l": 151.20013, "t": 272.4483, "r": 242.59509, "b": 281.66132, "coord_origin": "TOPLEFT"}}]}, "text": "3. The result of the third SQL statement is shown in Figure 4-55. Note the masked columns. The TELLER user, TQSPENSER, can see all the rows, but there are some columns where the result is masked."}, {"label": "caption", "id": 5, "page_no": 84, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.17078399658203, "t": 672.1625366210938, "r": 391.8590393066406, "b": 681.483, "coord_origin": "TOPLEFT"}, "confidence": 0.9434057474136353, "cells": [{"id": 10, "text": "Figure 4-55 SQL statement that is run by the TELLER user with masked columns", "bbox": {"l": 64.800003, "t": 673.158, "r": 391.66644, "b": 681.483, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-55 SQL statement that is run by the TELLER user with masked columns"}, {"label": "picture", "id": 6, "page_no": 84, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 135.92535400390625, "t": 107.52780151367188, "r": 388.818115234375, "b": 219.1571807861328, "coord_origin": "TOPLEFT"}, "confidence": 0.9634679555892944, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 7, "page_no": 84, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 64.41838073730469, "t": 296.1629638671875, "r": 548.2760009765625, "b": 670.6256713867188, "coord_origin": "TOPLEFT"}, "confidence": 0.7070707678794861, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 84, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.29336547851562, "t": 754.7902221679688, "r": 523.59357, "b": 763.9354248046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9566875696182251, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 84, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.5740966796875, "t": 754.166259765625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9140955209732056, "cells": [{"id": 1, "text": "69", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "69"}]}}, {"page_no": 85, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "70 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Data access for ADMIN user with RCAC", "bbox": {"l": 136.8, "t": 71.36395000000005, "r": 361.2876, "b": 82.46398999999997, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "To test an ADMIN (VGLUCCHESS) user, complete the following steps:", "bbox": {"l": 136.8, "t": 86.50867000000005, "r": 448.12963999999994, "b": 95.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "1.", "bbox": {"l": 136.8, "t": 103.48845999999992, "r": 145.08908, "b": 112.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Confirm that the ADMIN user is the user of the session by running the first SQL statement, ", "bbox": {"l": 147.8521, "t": 103.48845999999992, "r": 547.23853, "b": 112.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "as shown in Figure 4-56. In this example, VGLUCCHESS is an ADMIN user.", "bbox": {"l": 151.20016, "t": 115.48828000000003, "r": 487.41986, "b": 124.70129000000009, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Figure 4-56 ADMIN session user ", "bbox": {"l": 136.8, "t": 225.79803000000004, "r": 274.63858, "b": 234.12298999999996, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "2.", "bbox": {"l": 136.8, "t": 251.74872000000005, "r": 145.19705, "b": 260.96173, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "The number of rows that the ADMIN user can see is shown in Figure 4-57. The ADMIN ", "bbox": {"l": 147.99605, "t": 251.74872000000005, "r": 537.45203, "b": 260.96173, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "user can see all the rows.", "bbox": {"l": 151.20016, "t": 263.74854000000005, "r": 264.17142, "b": 272.96155, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Figure 4-57 Number of rows that the ADMIN can see in the CUSTOMERS table", "bbox": {"l": 136.8, "t": 372.138, "r": 457.1981799999999, "b": 380.46301, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.99982833862305, "t": 754.1723022460938, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9086830019950867, "cells": [{"id": 0, "text": "70 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.3930892944336, "t": 754.6930541992188, "r": 334.42142, "b": 763.9622192382812, "coord_origin": "TOPLEFT"}, "confidence": 0.9444864988327026, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 136.52813720703125, "t": 70.49939727783203, "r": 361.2876, "b": 82.46398999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9242165684700012, "cells": [{"id": 2, "text": "Data access for ADMIN user with RCAC", "bbox": {"l": 136.8, "t": 71.36395000000005, "r": 361.2876, "b": 82.46398999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 136.3176727294922, "t": 85.13993835449219, "r": 448.12963999999994, "b": 95.72167999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9380269646644592, "cells": [{"id": 3, "text": "To test an ADMIN (VGLUCCHESS) user, complete the following steps:", "bbox": {"l": 136.8, "t": 86.50867000000005, "r": 448.12963999999994, "b": 95.72167999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 136.8, "t": 102.55648040771484, "r": 547.23853, "b": 125.00703430175781, "coord_origin": "TOPLEFT"}, "confidence": 0.9487622976303101, "cells": [{"id": 4, "text": "1.", "bbox": {"l": 136.8, "t": 103.48845999999992, "r": 145.08908, "b": 112.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Confirm that the ADMIN user is the user of the session by running the first SQL statement, ", "bbox": {"l": 147.8521, "t": 103.48845999999992, "r": 547.23853, "b": 112.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "as shown in Figure 4-56. In this example, VGLUCCHESS is an ADMIN user.", "bbox": {"l": 151.20016, "t": 115.48828000000003, "r": 487.41986, "b": 124.70129000000009, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 136.44989013671875, "t": 224.8011932373047, "r": 274.63858, "b": 234.12298999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.8895819187164307, "cells": [{"id": 7, "text": "Figure 4-56 ADMIN session user ", "bbox": {"l": 136.8, "t": 225.79803000000004, "r": 274.63858, "b": 234.12298999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.9615936279297, "t": 250.71633911132812, "r": 537.45203, "b": 272.96155, "coord_origin": "TOPLEFT"}, "confidence": 0.9431179761886597, "cells": [{"id": 8, "text": "2.", "bbox": {"l": 136.8, "t": 251.74872000000005, "r": 145.19705, "b": 260.96173, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "The number of rows that the ADMIN user can see is shown in Figure 4-57. The ADMIN ", "bbox": {"l": 147.99605, "t": 251.74872000000005, "r": 537.45203, "b": 260.96173, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "user can see all the rows.", "bbox": {"l": 151.20016, "t": 263.74854000000005, "r": 264.17142, "b": 272.96155, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "caption", "bbox": {"l": 136.13417053222656, "t": 371.2900695800781, "r": 457.3196716308594, "b": 380.5198974609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9259661436080933, "cells": [{"id": 11, "text": "Figure 4-57 Number of rows that the ADMIN can see in the CUSTOMERS table", "bbox": {"l": 136.8, "t": 372.138, "r": 457.1981799999999, "b": 380.46301, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 136.3792266845703, "t": 287.3948059082031, "r": 382.5545654296875, "b": 368.70892333984375, "coord_origin": "TOPLEFT"}, "confidence": 0.7004774212837219, "cells": []}, {"id": 9, "label": "picture", "bbox": {"l": 136.20846557617188, "t": 138.96017456054688, "r": 352.89752197265625, "b": 222.64027404785156, "coord_origin": "TOPLEFT"}, "confidence": 0.6416024565696716, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 85, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.99982833862305, "t": 754.1723022460938, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9086830019950867, "cells": [{"id": 0, "text": "70 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "70"}, {"label": "page_footer", "id": 1, "page_no": 85, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.3930892944336, "t": 754.6930541992188, "r": 334.42142, "b": 763.9622192382812, "coord_origin": "TOPLEFT"}, "confidence": 0.9444864988327026, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "section_header", "id": 2, "page_no": 85, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 136.52813720703125, "t": 70.49939727783203, "r": 361.2876, "b": 82.46398999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9242165684700012, "cells": [{"id": 2, "text": "Data access for ADMIN user with RCAC", "bbox": {"l": 136.8, "t": 71.36395000000005, "r": 361.2876, "b": 82.46398999999997, "coord_origin": "TOPLEFT"}}]}, "text": "Data access for ADMIN user with RCAC"}, {"label": "text", "id": 3, "page_no": 85, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.3176727294922, "t": 85.13993835449219, "r": 448.12963999999994, "b": 95.72167999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9380269646644592, "cells": [{"id": 3, "text": "To test an ADMIN (VGLUCCHESS) user, complete the following steps:", "bbox": {"l": 136.8, "t": 86.50867000000005, "r": 448.12963999999994, "b": 95.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "To test an ADMIN (VGLUCCHESS) user, complete the following steps:"}, {"label": "list_item", "id": 4, "page_no": 85, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.8, "t": 102.55648040771484, "r": 547.23853, "b": 125.00703430175781, "coord_origin": "TOPLEFT"}, "confidence": 0.9487622976303101, "cells": [{"id": 4, "text": "1.", "bbox": {"l": 136.8, "t": 103.48845999999992, "r": 145.08908, "b": 112.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Confirm that the ADMIN user is the user of the session by running the first SQL statement, ", "bbox": {"l": 147.8521, "t": 103.48845999999992, "r": 547.23853, "b": 112.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "as shown in Figure 4-56. In this example, VGLUCCHESS is an ADMIN user.", "bbox": {"l": 151.20016, "t": 115.48828000000003, "r": 487.41986, "b": 124.70129000000009, "coord_origin": "TOPLEFT"}}]}, "text": "1. Confirm that the ADMIN user is the user of the session by running the first SQL statement, as shown in Figure 4-56. In this example, VGLUCCHESS is an ADMIN user."}, {"label": "caption", "id": 5, "page_no": 85, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.44989013671875, "t": 224.8011932373047, "r": 274.63858, "b": 234.12298999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.8895819187164307, "cells": [{"id": 7, "text": "Figure 4-56 ADMIN session user ", "bbox": {"l": 136.8, "t": 225.79803000000004, "r": 274.63858, "b": 234.12298999999996, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-56 ADMIN session user"}, {"label": "list_item", "id": 6, "page_no": 85, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.9615936279297, "t": 250.71633911132812, "r": 537.45203, "b": 272.96155, "coord_origin": "TOPLEFT"}, "confidence": 0.9431179761886597, "cells": [{"id": 8, "text": "2.", "bbox": {"l": 136.8, "t": 251.74872000000005, "r": 145.19705, "b": 260.96173, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "The number of rows that the ADMIN user can see is shown in Figure 4-57. The ADMIN ", "bbox": {"l": 147.99605, "t": 251.74872000000005, "r": 537.45203, "b": 260.96173, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "user can see all the rows.", "bbox": {"l": 151.20016, "t": 263.74854000000005, "r": 264.17142, "b": 272.96155, "coord_origin": "TOPLEFT"}}]}, "text": "2. The number of rows that the ADMIN user can see is shown in Figure 4-57. The ADMIN user can see all the rows."}, {"label": "caption", "id": 7, "page_no": 85, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 136.13417053222656, "t": 371.2900695800781, "r": 457.3196716308594, "b": 380.5198974609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9259661436080933, "cells": [{"id": 11, "text": "Figure 4-57 Number of rows that the ADMIN can see in the CUSTOMERS table", "bbox": {"l": 136.8, "t": 372.138, "r": 457.1981799999999, "b": 380.46301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-57 Number of rows that the ADMIN can see in the CUSTOMERS table"}, {"label": "picture", "id": 8, "page_no": 85, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 136.3792266845703, "t": 287.3948059082031, "r": 382.5545654296875, "b": 368.70892333984375, "coord_origin": "TOPLEFT"}, "confidence": 0.7004774212837219, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 9, "page_no": 85, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 136.20846557617188, "t": 138.96017456054688, "r": 352.89752197265625, "b": 222.64027404785156, "coord_origin": "TOPLEFT"}, "confidence": 0.6416024565696716, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "section_header", "id": 2, "page_no": 85, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 136.52813720703125, "t": 70.49939727783203, "r": 361.2876, "b": 82.46398999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9242165684700012, "cells": [{"id": 2, "text": "Data access for ADMIN user with RCAC", "bbox": {"l": 136.8, "t": 71.36395000000005, "r": 361.2876, "b": 82.46398999999997, "coord_origin": "TOPLEFT"}}]}, "text": "Data access for ADMIN user with RCAC"}, {"label": "text", "id": 3, "page_no": 85, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.3176727294922, "t": 85.13993835449219, "r": 448.12963999999994, "b": 95.72167999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9380269646644592, "cells": [{"id": 3, "text": "To test an ADMIN (VGLUCCHESS) user, complete the following steps:", "bbox": {"l": 136.8, "t": 86.50867000000005, "r": 448.12963999999994, "b": 95.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "To test an ADMIN (VGLUCCHESS) user, complete the following steps:"}, {"label": "list_item", "id": 4, "page_no": 85, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.8, "t": 102.55648040771484, "r": 547.23853, "b": 125.00703430175781, "coord_origin": "TOPLEFT"}, "confidence": 0.9487622976303101, "cells": [{"id": 4, "text": "1.", "bbox": {"l": 136.8, "t": 103.48845999999992, "r": 145.08908, "b": 112.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Confirm that the ADMIN user is the user of the session by running the first SQL statement, ", "bbox": {"l": 147.8521, "t": 103.48845999999992, "r": 547.23853, "b": 112.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "as shown in Figure 4-56. In this example, VGLUCCHESS is an ADMIN user.", "bbox": {"l": 151.20016, "t": 115.48828000000003, "r": 487.41986, "b": 124.70129000000009, "coord_origin": "TOPLEFT"}}]}, "text": "1. Confirm that the ADMIN user is the user of the session by running the first SQL statement, as shown in Figure 4-56. In this example, VGLUCCHESS is an ADMIN user."}, {"label": "caption", "id": 5, "page_no": 85, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.44989013671875, "t": 224.8011932373047, "r": 274.63858, "b": 234.12298999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.8895819187164307, "cells": [{"id": 7, "text": "Figure 4-56 ADMIN session user ", "bbox": {"l": 136.8, "t": 225.79803000000004, "r": 274.63858, "b": 234.12298999999996, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-56 ADMIN session user"}, {"label": "list_item", "id": 6, "page_no": 85, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.9615936279297, "t": 250.71633911132812, "r": 537.45203, "b": 272.96155, "coord_origin": "TOPLEFT"}, "confidence": 0.9431179761886597, "cells": [{"id": 8, "text": "2.", "bbox": {"l": 136.8, "t": 251.74872000000005, "r": 145.19705, "b": 260.96173, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "The number of rows that the ADMIN user can see is shown in Figure 4-57. The ADMIN ", "bbox": {"l": 147.99605, "t": 251.74872000000005, "r": 537.45203, "b": 260.96173, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "user can see all the rows.", "bbox": {"l": 151.20016, "t": 263.74854000000005, "r": 264.17142, "b": 272.96155, "coord_origin": "TOPLEFT"}}]}, "text": "2. The number of rows that the ADMIN user can see is shown in Figure 4-57. The ADMIN user can see all the rows."}, {"label": "caption", "id": 7, "page_no": 85, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 136.13417053222656, "t": 371.2900695800781, "r": 457.3196716308594, "b": 380.5198974609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9259661436080933, "cells": [{"id": 11, "text": "Figure 4-57 Number of rows that the ADMIN can see in the CUSTOMERS table", "bbox": {"l": 136.8, "t": 372.138, "r": 457.1981799999999, "b": 380.46301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-57 Number of rows that the ADMIN can see in the CUSTOMERS table"}, {"label": "picture", "id": 8, "page_no": 85, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 136.3792266845703, "t": 287.3948059082031, "r": 382.5545654296875, "b": 368.70892333984375, "coord_origin": "TOPLEFT"}, "confidence": 0.7004774212837219, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 9, "page_no": 85, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 136.20846557617188, "t": 138.96017456054688, "r": 352.89752197265625, "b": 222.64027404785156, "coord_origin": "TOPLEFT"}, "confidence": 0.6416024565696716, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 85, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.99982833862305, "t": 754.1723022460938, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9086830019950867, "cells": [{"id": 0, "text": "70 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "70"}, {"label": "page_footer", "id": 1, "page_no": 85, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.3930892944336, "t": 754.6930541992188, "r": 334.42142, "b": 763.9622192382812, "coord_origin": "TOPLEFT"}, "confidence": 0.9444864988327026, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 86, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "71", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "3.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.19983, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The result of the third SQL statement is shown in Figure 4-58. There are no masked ", "bbox": {"l": 147.99991, "t": 71.50903000000005, "r": 524.19788, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "columns.", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 191.06964, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Figure 4-58 SQL statement that is run by the ADMIN user - no masked columns", "bbox": {"l": 64.800003, "t": 479.298, "r": 386.27728, "b": 487.62302, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Data access for WEBUSER user with RCAC", "bbox": {"l": 136.8, "t": 505.10391, "r": 383.07721, "b": 516.2039199999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "To test a CUSTOMERS (WEBUSER) user that accesses the database by using the web ", "bbox": {"l": 136.8, "t": 520.24872, "r": 527.58466, "b": 529.4617000000001, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "application, complete the following steps:", "bbox": {"l": 136.80002, "t": 532.2484999999999, "r": 317.9585, "b": 541.4615200000001, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "1.", "bbox": {"l": 136.80002, "t": 549.28809, "r": 145.21213, "b": 558.50108, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Confirm that the user is the user of the session by running the first SQL statement, as ", "bbox": {"l": 148.01616, "t": 549.28809, "r": 531.48303, "b": 558.50108, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "shown in Figure 4-59. In this example, WEBUSER is a CUSTOMER user.", "bbox": {"l": 151.20018, "t": 561.2878900000001, "r": 475.2537500000001, "b": 570.50089, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Figure 4-59 WEBUSER session user", "bbox": {"l": 136.8, "t": 676.998, "r": 288.54453, "b": 685.323, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 214.297607421875, "t": 754.7944946289062, "r": 523.59357, "b": 763.9957275390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9579306244850159, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.4384765625, "t": 754.1445922851562, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9092021584510803, "cells": [{"id": 1, "text": "71", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 136.0950164794922, "t": 70.5864028930664, "r": 524.19788, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9504329562187195, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.19983, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The result of the third SQL statement is shown in Figure 4-58. There are no masked ", "bbox": {"l": 147.99991, "t": 71.50903000000005, "r": 524.19788, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "columns.", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 191.06964, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.27821350097656, "t": 478.5440979003906, "r": 386.91961669921875, "b": 488.0338134765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9340198636054993, "cells": [{"id": 5, "text": "Figure 4-58 SQL statement that is run by the ADMIN user - no masked columns", "bbox": {"l": 64.800003, "t": 479.298, "r": 386.27728, "b": 487.62302, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 136.49583435058594, "t": 504.4722595214844, "r": 383.07721, "b": 516.2039199999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9497081637382507, "cells": [{"id": 6, "text": "Data access for WEBUSER user with RCAC", "bbox": {"l": 136.8, "t": 505.10391, "r": 383.07721, "b": 516.2039199999999, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.1496124267578, "t": 519.399169921875, "r": 527.58466, "b": 541.5465698242188, "coord_origin": "TOPLEFT"}, "confidence": 0.9660984873771667, "cells": [{"id": 7, "text": "To test a CUSTOMERS (WEBUSER) user that accesses the database by using the web ", "bbox": {"l": 136.8, "t": 520.24872, "r": 527.58466, "b": 529.4617000000001, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "application, complete the following steps:", "bbox": {"l": 136.80002, "t": 532.2484999999999, "r": 317.9585, "b": 541.4615200000001, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 136.61180114746094, "t": 548.59814453125, "r": 531.48303, "b": 571.005126953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9623847007751465, "cells": [{"id": 9, "text": "1.", "bbox": {"l": 136.80002, "t": 549.28809, "r": 145.21213, "b": 558.50108, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Confirm that the user is the user of the session by running the first SQL statement, as ", "bbox": {"l": 148.01616, "t": 549.28809, "r": 531.48303, "b": 558.50108, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "shown in Figure 4-59. In this example, WEBUSER is a CUSTOMER user.", "bbox": {"l": 151.20018, "t": 561.2878900000001, "r": 475.2537500000001, "b": 570.50089, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "caption", "bbox": {"l": 136.1943817138672, "t": 675.9807739257812, "r": 289.5948791503906, "b": 685.4607543945312, "coord_origin": "TOPLEFT"}, "confidence": 0.9459738731384277, "cells": [{"id": 12, "text": "Figure 4-59 WEBUSER session user", "bbox": {"l": 136.8, "t": 676.998, "r": 288.54453, "b": 685.323, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 136.11729431152344, "t": 584.64208984375, "r": 354.23046875, "b": 673.7885131835938, "coord_origin": "TOPLEFT"}, "confidence": 0.949955403804779, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 86, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.297607421875, "t": 754.7944946289062, "r": 523.59357, "b": 763.9957275390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9579306244850159, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 86, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.4384765625, "t": 754.1445922851562, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9092021584510803, "cells": [{"id": 1, "text": "71", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "71"}, {"label": "list_item", "id": 2, "page_no": 86, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.0950164794922, "t": 70.5864028930664, "r": 524.19788, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9504329562187195, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.19983, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The result of the third SQL statement is shown in Figure 4-58. There are no masked ", "bbox": {"l": 147.99991, "t": 71.50903000000005, "r": 524.19788, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "columns.", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 191.06964, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "3. The result of the third SQL statement is shown in Figure 4-58. There are no masked columns."}, {"label": "caption", "id": 3, "page_no": 86, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.27821350097656, "t": 478.5440979003906, "r": 386.91961669921875, "b": 488.0338134765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9340198636054993, "cells": [{"id": 5, "text": "Figure 4-58 SQL statement that is run by the ADMIN user - no masked columns", "bbox": {"l": 64.800003, "t": 479.298, "r": 386.27728, "b": 487.62302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-58 SQL statement that is run by the ADMIN user - no masked columns"}, {"label": "section_header", "id": 4, "page_no": 86, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 136.49583435058594, "t": 504.4722595214844, "r": 383.07721, "b": 516.2039199999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9497081637382507, "cells": [{"id": 6, "text": "Data access for WEBUSER user with RCAC", "bbox": {"l": 136.8, "t": 505.10391, "r": 383.07721, "b": 516.2039199999999, "coord_origin": "TOPLEFT"}}]}, "text": "Data access for WEBUSER user with RCAC"}, {"label": "text", "id": 5, "page_no": 86, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.1496124267578, "t": 519.399169921875, "r": 527.58466, "b": 541.5465698242188, "coord_origin": "TOPLEFT"}, "confidence": 0.9660984873771667, "cells": [{"id": 7, "text": "To test a CUSTOMERS (WEBUSER) user that accesses the database by using the web ", "bbox": {"l": 136.8, "t": 520.24872, "r": 527.58466, "b": 529.4617000000001, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "application, complete the following steps:", "bbox": {"l": 136.80002, "t": 532.2484999999999, "r": 317.9585, "b": 541.4615200000001, "coord_origin": "TOPLEFT"}}]}, "text": "To test a CUSTOMERS (WEBUSER) user that accesses the database by using the web application, complete the following steps:"}, {"label": "list_item", "id": 6, "page_no": 86, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.61180114746094, "t": 548.59814453125, "r": 531.48303, "b": 571.005126953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9623847007751465, "cells": [{"id": 9, "text": "1.", "bbox": {"l": 136.80002, "t": 549.28809, "r": 145.21213, "b": 558.50108, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Confirm that the user is the user of the session by running the first SQL statement, as ", "bbox": {"l": 148.01616, "t": 549.28809, "r": 531.48303, "b": 558.50108, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "shown in Figure 4-59. In this example, WEBUSER is a CUSTOMER user.", "bbox": {"l": 151.20018, "t": 561.2878900000001, "r": 475.2537500000001, "b": 570.50089, "coord_origin": "TOPLEFT"}}]}, "text": "1. Confirm that the user is the user of the session by running the first SQL statement, as shown in Figure 4-59. In this example, WEBUSER is a CUSTOMER user."}, {"label": "caption", "id": 7, "page_no": 86, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 136.1943817138672, "t": 675.9807739257812, "r": 289.5948791503906, "b": 685.4607543945312, "coord_origin": "TOPLEFT"}, "confidence": 0.9459738731384277, "cells": [{"id": 12, "text": "Figure 4-59 WEBUSER session user", "bbox": {"l": 136.8, "t": 676.998, "r": 288.54453, "b": 685.323, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-59 WEBUSER session user"}, {"label": "picture", "id": 8, "page_no": 86, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 136.11729431152344, "t": 584.64208984375, "r": 354.23046875, "b": 673.7885131835938, "coord_origin": "TOPLEFT"}, "confidence": 0.949955403804779, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 86, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.0950164794922, "t": 70.5864028930664, "r": 524.19788, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9504329562187195, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.19983, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The result of the third SQL statement is shown in Figure 4-58. There are no masked ", "bbox": {"l": 147.99991, "t": 71.50903000000005, "r": 524.19788, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "columns.", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 191.06964, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "3. The result of the third SQL statement is shown in Figure 4-58. There are no masked columns."}, {"label": "caption", "id": 3, "page_no": 86, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.27821350097656, "t": 478.5440979003906, "r": 386.91961669921875, "b": 488.0338134765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9340198636054993, "cells": [{"id": 5, "text": "Figure 4-58 SQL statement that is run by the ADMIN user - no masked columns", "bbox": {"l": 64.800003, "t": 479.298, "r": 386.27728, "b": 487.62302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-58 SQL statement that is run by the ADMIN user - no masked columns"}, {"label": "section_header", "id": 4, "page_no": 86, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 136.49583435058594, "t": 504.4722595214844, "r": 383.07721, "b": 516.2039199999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9497081637382507, "cells": [{"id": 6, "text": "Data access for WEBUSER user with RCAC", "bbox": {"l": 136.8, "t": 505.10391, "r": 383.07721, "b": 516.2039199999999, "coord_origin": "TOPLEFT"}}]}, "text": "Data access for WEBUSER user with RCAC"}, {"label": "text", "id": 5, "page_no": 86, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.1496124267578, "t": 519.399169921875, "r": 527.58466, "b": 541.5465698242188, "coord_origin": "TOPLEFT"}, "confidence": 0.9660984873771667, "cells": [{"id": 7, "text": "To test a CUSTOMERS (WEBUSER) user that accesses the database by using the web ", "bbox": {"l": 136.8, "t": 520.24872, "r": 527.58466, "b": 529.4617000000001, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "application, complete the following steps:", "bbox": {"l": 136.80002, "t": 532.2484999999999, "r": 317.9585, "b": 541.4615200000001, "coord_origin": "TOPLEFT"}}]}, "text": "To test a CUSTOMERS (WEBUSER) user that accesses the database by using the web application, complete the following steps:"}, {"label": "list_item", "id": 6, "page_no": 86, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.61180114746094, "t": 548.59814453125, "r": 531.48303, "b": 571.005126953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9623847007751465, "cells": [{"id": 9, "text": "1.", "bbox": {"l": 136.80002, "t": 549.28809, "r": 145.21213, "b": 558.50108, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Confirm that the user is the user of the session by running the first SQL statement, as ", "bbox": {"l": 148.01616, "t": 549.28809, "r": 531.48303, "b": 558.50108, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "shown in Figure 4-59. In this example, WEBUSER is a CUSTOMER user.", "bbox": {"l": 151.20018, "t": 561.2878900000001, "r": 475.2537500000001, "b": 570.50089, "coord_origin": "TOPLEFT"}}]}, "text": "1. Confirm that the user is the user of the session by running the first SQL statement, as shown in Figure 4-59. In this example, WEBUSER is a CUSTOMER user."}, {"label": "caption", "id": 7, "page_no": 86, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 136.1943817138672, "t": 675.9807739257812, "r": 289.5948791503906, "b": 685.4607543945312, "coord_origin": "TOPLEFT"}, "confidence": 0.9459738731384277, "cells": [{"id": 12, "text": "Figure 4-59 WEBUSER session user", "bbox": {"l": 136.8, "t": 676.998, "r": 288.54453, "b": 685.323, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-59 WEBUSER session user"}, {"label": "picture", "id": 8, "page_no": 86, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 136.11729431152344, "t": 584.64208984375, "r": 354.23046875, "b": 673.7885131835938, "coord_origin": "TOPLEFT"}, "confidence": 0.949955403804779, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 86, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.297607421875, "t": 754.7944946289062, "r": 523.59357, "b": 763.9957275390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9579306244850159, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 86, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.4384765625, "t": 754.1445922851562, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9092021584510803, "cells": [{"id": 1, "text": "71", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "71"}]}}, {"page_no": 87, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "72 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "2.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.13539, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "A global variable (CUSTOMER_LOGIN_ID) is set by the web application and then is used ", "bbox": {"l": 147.91383, "t": 71.50867000000005, "r": 547.29254, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "to check the row permissions. Figure 4-60 shows setting the global variable by using the ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 542.53851, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "customer login ID.", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 231.01662000000002, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Figure 4-60 Setting the global variable CUSTOMER_LOGIN_ID", "bbox": {"l": 136.8, "t": 224.41803000000004, "r": 393.9201, "b": 232.74298, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "3.", "bbox": {"l": 136.8, "t": 250.36870999999996, "r": 145.17363, "b": 259.58173, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Verify that the global variable was set with the correct value by clicking the ", "bbox": {"l": 147.96483, "t": 250.36870999999996, "r": 480.55042, "b": 259.58173, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Global ", "bbox": {"l": 480.53955, "t": 250.36870999999996, "r": 514.37964, "b": 259.58173, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Variable", "bbox": {"l": 151.19922, "t": 262.36852999999996, "r": 188.79124, "b": 271.58154, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": " tab, as shown in Figure 4-61.", "bbox": {"l": 189.35896, "t": 262.36852999999996, "r": 320.52722, "b": 271.58154, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Figure 4-61 Viewing the global variable value", "bbox": {"l": 136.8, "t": 522.31799, "r": 320.45041, "b": 530.64301, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "4.", "bbox": {"l": 136.8, "t": 548.26872, "r": 145.19461, "b": 557.48172, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "The number of rows that the WEBUSER can see is shown in Figure 4-62. This user can ", "bbox": {"l": 147.99278, "t": 548.26872, "r": 541.26068, "b": 557.48172, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "see only the one row that belongs to his web-based user ID.", "bbox": {"l": 151.20018, "t": 560.2685200000001, "r": 415.91998, "b": 569.48152, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Figure 4-62 Number of rows that the WEBUSER can see in the CUSTOMERS table", "bbox": {"l": 136.8, "t": 687.0779, "r": 473.70947, "b": 695.402901, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.95808410644531, "t": 754.2484130859375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9073862433433533, "cells": [{"id": 0, "text": "72 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.32298278808594, "t": 754.67529296875, "r": 334.42142, "b": 764.010009765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9502434730529785, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 135.97177124023438, "t": 70.53437042236328, "r": 547.29254, "b": 105.20692443847656, "coord_origin": "TOPLEFT"}, "confidence": 0.9725183844566345, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.13539, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "A global variable (CUSTOMER_LOGIN_ID) is set by the web application and then is used ", "bbox": {"l": 147.91383, "t": 71.50867000000005, "r": 547.29254, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "to check the row permissions. Figure 4-60 shows setting the global variable by using the ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 542.53851, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "customer login ID.", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 231.01662000000002, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.13768005371094, "t": 223.07266235351562, "r": 394.4398498535156, "b": 232.92161560058594, "coord_origin": "TOPLEFT"}, "confidence": 0.9459361433982849, "cells": [{"id": 6, "text": "Figure 4-60 Setting the global variable CUSTOMER_LOGIN_ID", "bbox": {"l": 136.8, "t": 224.41803000000004, "r": 393.9201, "b": 232.74298, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 135.97732543945312, "t": 249.29721069335938, "r": 514.37964, "b": 271.60693359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9487968683242798, "cells": [{"id": 7, "text": "3.", "bbox": {"l": 136.8, "t": 250.36870999999996, "r": 145.17363, "b": 259.58173, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Verify that the global variable was set with the correct value by clicking the ", "bbox": {"l": 147.96483, "t": 250.36870999999996, "r": 480.55042, "b": 259.58173, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Global ", "bbox": {"l": 480.53955, "t": 250.36870999999996, "r": 514.37964, "b": 259.58173, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Variable", "bbox": {"l": 151.19922, "t": 262.36852999999996, "r": 188.79124, "b": 271.58154, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": " tab, as shown in Figure 4-61.", "bbox": {"l": 189.35896, "t": 262.36852999999996, "r": 320.52722, "b": 271.58154, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 136.13868713378906, "t": 521.3612060546875, "r": 320.7819519042969, "b": 530.787841796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9481346607208252, "cells": [{"id": 12, "text": "Figure 4-61 Viewing the global variable value", "bbox": {"l": 136.8, "t": 522.31799, "r": 320.45041, "b": 530.64301, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.78077697753906, "t": 547.3094482421875, "r": 541.26068, "b": 569.7304077148438, "coord_origin": "TOPLEFT"}, "confidence": 0.9655671715736389, "cells": [{"id": 13, "text": "4.", "bbox": {"l": 136.8, "t": 548.26872, "r": 145.19461, "b": 557.48172, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "The number of rows that the WEBUSER can see is shown in Figure 4-62. This user can ", "bbox": {"l": 147.99278, "t": 548.26872, "r": 541.26068, "b": 557.48172, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "see only the one row that belongs to his web-based user ID.", "bbox": {"l": 151.20018, "t": 560.2685200000001, "r": 415.91998, "b": 569.48152, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "caption", "bbox": {"l": 136.2648468017578, "t": 685.8698120117188, "r": 474.20855712890625, "b": 695.402901, "coord_origin": "TOPLEFT"}, "confidence": 0.9365612864494324, "cells": [{"id": 16, "text": "Figure 4-62 Number of rows that the WEBUSER can see in the CUSTOMERS table", "bbox": {"l": 136.8, "t": 687.0779, "r": 473.70947, "b": 695.402901, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 136.12271118164062, "t": 285.7159118652344, "r": 395.9803466796875, "b": 519.3853149414062, "coord_origin": "TOPLEFT"}, "confidence": 0.9821423888206482, "cells": []}, {"id": 9, "label": "picture", "bbox": {"l": 136.00576782226562, "t": 584.1505737304688, "r": 382.0115966796875, "b": 684.032470703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9579524993896484, "cells": []}, {"id": 10, "label": "picture", "bbox": {"l": 135.9663848876953, "t": 119.12814331054688, "r": 547.538818359375, "b": 221.56602478027344, "coord_origin": "TOPLEFT"}, "confidence": 0.9356961846351624, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 87, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.95808410644531, "t": 754.2484130859375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9073862433433533, "cells": [{"id": 0, "text": "72 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "72"}, {"label": "page_footer", "id": 1, "page_no": 87, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.32298278808594, "t": 754.67529296875, "r": 334.42142, "b": 764.010009765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9502434730529785, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "list_item", "id": 2, "page_no": 87, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.97177124023438, "t": 70.53437042236328, "r": 547.29254, "b": 105.20692443847656, "coord_origin": "TOPLEFT"}, "confidence": 0.9725183844566345, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.13539, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "A global variable (CUSTOMER_LOGIN_ID) is set by the web application and then is used ", "bbox": {"l": 147.91383, "t": 71.50867000000005, "r": 547.29254, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "to check the row permissions. Figure 4-60 shows setting the global variable by using the ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 542.53851, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "customer login ID.", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 231.01662000000002, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}]}, "text": "2. A global variable (CUSTOMER_LOGIN_ID) is set by the web application and then is used to check the row permissions. Figure 4-60 shows setting the global variable by using the customer login ID."}, {"label": "caption", "id": 3, "page_no": 87, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.13768005371094, "t": 223.07266235351562, "r": 394.4398498535156, "b": 232.92161560058594, "coord_origin": "TOPLEFT"}, "confidence": 0.9459361433982849, "cells": [{"id": 6, "text": "Figure 4-60 Setting the global variable CUSTOMER_LOGIN_ID", "bbox": {"l": 136.8, "t": 224.41803000000004, "r": 393.9201, "b": 232.74298, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-60 Setting the global variable CUSTOMER_LOGIN_ID"}, {"label": "list_item", "id": 4, "page_no": 87, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.97732543945312, "t": 249.29721069335938, "r": 514.37964, "b": 271.60693359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9487968683242798, "cells": [{"id": 7, "text": "3.", "bbox": {"l": 136.8, "t": 250.36870999999996, "r": 145.17363, "b": 259.58173, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Verify that the global variable was set with the correct value by clicking the ", "bbox": {"l": 147.96483, "t": 250.36870999999996, "r": 480.55042, "b": 259.58173, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Global ", "bbox": {"l": 480.53955, "t": 250.36870999999996, "r": 514.37964, "b": 259.58173, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Variable", "bbox": {"l": 151.19922, "t": 262.36852999999996, "r": 188.79124, "b": 271.58154, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": " tab, as shown in Figure 4-61.", "bbox": {"l": 189.35896, "t": 262.36852999999996, "r": 320.52722, "b": 271.58154, "coord_origin": "TOPLEFT"}}]}, "text": "3. Verify that the global variable was set with the correct value by clicking the Global Variable tab, as shown in Figure 4-61."}, {"label": "caption", "id": 5, "page_no": 87, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.13868713378906, "t": 521.3612060546875, "r": 320.7819519042969, "b": 530.787841796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9481346607208252, "cells": [{"id": 12, "text": "Figure 4-61 Viewing the global variable value", "bbox": {"l": 136.8, "t": 522.31799, "r": 320.45041, "b": 530.64301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-61 Viewing the global variable value"}, {"label": "list_item", "id": 6, "page_no": 87, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.78077697753906, "t": 547.3094482421875, "r": 541.26068, "b": 569.7304077148438, "coord_origin": "TOPLEFT"}, "confidence": 0.9655671715736389, "cells": [{"id": 13, "text": "4.", "bbox": {"l": 136.8, "t": 548.26872, "r": 145.19461, "b": 557.48172, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "The number of rows that the WEBUSER can see is shown in Figure 4-62. This user can ", "bbox": {"l": 147.99278, "t": 548.26872, "r": 541.26068, "b": 557.48172, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "see only the one row that belongs to his web-based user ID.", "bbox": {"l": 151.20018, "t": 560.2685200000001, "r": 415.91998, "b": 569.48152, "coord_origin": "TOPLEFT"}}]}, "text": "4. The number of rows that the WEBUSER can see is shown in Figure 4-62. This user can see only the one row that belongs to his web-based user ID."}, {"label": "caption", "id": 7, "page_no": 87, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 136.2648468017578, "t": 685.8698120117188, "r": 474.20855712890625, "b": 695.402901, "coord_origin": "TOPLEFT"}, "confidence": 0.9365612864494324, "cells": [{"id": 16, "text": "Figure 4-62 Number of rows that the WEBUSER can see in the CUSTOMERS table", "bbox": {"l": 136.8, "t": 687.0779, "r": 473.70947, "b": 695.402901, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-62 Number of rows that the WEBUSER can see in the CUSTOMERS table"}, {"label": "picture", "id": 8, "page_no": 87, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 136.12271118164062, "t": 285.7159118652344, "r": 395.9803466796875, "b": 519.3853149414062, "coord_origin": "TOPLEFT"}, "confidence": 0.9821423888206482, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 9, "page_no": 87, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 136.00576782226562, "t": 584.1505737304688, "r": 382.0115966796875, "b": 684.032470703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9579524993896484, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 10, "page_no": 87, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 135.9663848876953, "t": 119.12814331054688, "r": 547.538818359375, "b": 221.56602478027344, "coord_origin": "TOPLEFT"}, "confidence": 0.9356961846351624, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 87, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.97177124023438, "t": 70.53437042236328, "r": 547.29254, "b": 105.20692443847656, "coord_origin": "TOPLEFT"}, "confidence": 0.9725183844566345, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.13539, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "A global variable (CUSTOMER_LOGIN_ID) is set by the web application and then is used ", "bbox": {"l": 147.91383, "t": 71.50867000000005, "r": 547.29254, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "to check the row permissions. Figure 4-60 shows setting the global variable by using the ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 542.53851, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "customer login ID.", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 231.01662000000002, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}]}, "text": "2. A global variable (CUSTOMER_LOGIN_ID) is set by the web application and then is used to check the row permissions. Figure 4-60 shows setting the global variable by using the customer login ID."}, {"label": "caption", "id": 3, "page_no": 87, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.13768005371094, "t": 223.07266235351562, "r": 394.4398498535156, "b": 232.92161560058594, "coord_origin": "TOPLEFT"}, "confidence": 0.9459361433982849, "cells": [{"id": 6, "text": "Figure 4-60 Setting the global variable CUSTOMER_LOGIN_ID", "bbox": {"l": 136.8, "t": 224.41803000000004, "r": 393.9201, "b": 232.74298, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-60 Setting the global variable CUSTOMER_LOGIN_ID"}, {"label": "list_item", "id": 4, "page_no": 87, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.97732543945312, "t": 249.29721069335938, "r": 514.37964, "b": 271.60693359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9487968683242798, "cells": [{"id": 7, "text": "3.", "bbox": {"l": 136.8, "t": 250.36870999999996, "r": 145.17363, "b": 259.58173, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Verify that the global variable was set with the correct value by clicking the ", "bbox": {"l": 147.96483, "t": 250.36870999999996, "r": 480.55042, "b": 259.58173, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Global ", "bbox": {"l": 480.53955, "t": 250.36870999999996, "r": 514.37964, "b": 259.58173, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Variable", "bbox": {"l": 151.19922, "t": 262.36852999999996, "r": 188.79124, "b": 271.58154, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": " tab, as shown in Figure 4-61.", "bbox": {"l": 189.35896, "t": 262.36852999999996, "r": 320.52722, "b": 271.58154, "coord_origin": "TOPLEFT"}}]}, "text": "3. Verify that the global variable was set with the correct value by clicking the Global Variable tab, as shown in Figure 4-61."}, {"label": "caption", "id": 5, "page_no": 87, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.13868713378906, "t": 521.3612060546875, "r": 320.7819519042969, "b": 530.787841796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9481346607208252, "cells": [{"id": 12, "text": "Figure 4-61 Viewing the global variable value", "bbox": {"l": 136.8, "t": 522.31799, "r": 320.45041, "b": 530.64301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-61 Viewing the global variable value"}, {"label": "list_item", "id": 6, "page_no": 87, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.78077697753906, "t": 547.3094482421875, "r": 541.26068, "b": 569.7304077148438, "coord_origin": "TOPLEFT"}, "confidence": 0.9655671715736389, "cells": [{"id": 13, "text": "4.", "bbox": {"l": 136.8, "t": 548.26872, "r": 145.19461, "b": 557.48172, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "The number of rows that the WEBUSER can see is shown in Figure 4-62. This user can ", "bbox": {"l": 147.99278, "t": 548.26872, "r": 541.26068, "b": 557.48172, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "see only the one row that belongs to his web-based user ID.", "bbox": {"l": 151.20018, "t": 560.2685200000001, "r": 415.91998, "b": 569.48152, "coord_origin": "TOPLEFT"}}]}, "text": "4. The number of rows that the WEBUSER can see is shown in Figure 4-62. This user can see only the one row that belongs to his web-based user ID."}, {"label": "caption", "id": 7, "page_no": 87, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 136.2648468017578, "t": 685.8698120117188, "r": 474.20855712890625, "b": 695.402901, "coord_origin": "TOPLEFT"}, "confidence": 0.9365612864494324, "cells": [{"id": 16, "text": "Figure 4-62 Number of rows that the WEBUSER can see in the CUSTOMERS table", "bbox": {"l": 136.8, "t": 687.0779, "r": 473.70947, "b": 695.402901, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-62 Number of rows that the WEBUSER can see in the CUSTOMERS table"}, {"label": "picture", "id": 8, "page_no": 87, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 136.12271118164062, "t": 285.7159118652344, "r": 395.9803466796875, "b": 519.3853149414062, "coord_origin": "TOPLEFT"}, "confidence": 0.9821423888206482, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 9, "page_no": 87, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 136.00576782226562, "t": 584.1505737304688, "r": 382.0115966796875, "b": 684.032470703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9579524993896484, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 10, "page_no": 87, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 135.9663848876953, "t": 119.12814331054688, "r": 547.538818359375, "b": 221.56602478027344, "coord_origin": "TOPLEFT"}, "confidence": 0.9356961846351624, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 87, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.95808410644531, "t": 754.2484130859375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9073862433433533, "cells": [{"id": 0, "text": "72 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "72"}, {"label": "page_footer", "id": 1, "page_no": 87, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.32298278808594, "t": 754.67529296875, "r": 334.42142, "b": 764.010009765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9502434730529785, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 88, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "73", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "5.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.19983, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The result of the third SQL statement is shown in Figure 4-63. There are no masked ", "bbox": {"l": 147.99991, "t": 71.50903000000005, "r": 524.19788, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "columns, and the user can see only one row, which is the user\u2019s own row.", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 474.59003, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Figure 4-63 SQL statement that is run by WEBUSER - no masked columns", "bbox": {"l": 64.800003, "t": 253.69799999999998, "r": 367.66254, "b": 262.02295000000004, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Other examples of data access with RCAC", "bbox": {"l": 136.8, "t": 279.50397, "r": 377.4744, "b": 290.60400000000004, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "To run an SQL statement that lists all the accounts and current balance by customer, ", "bbox": {"l": 136.8, "t": 294.64871, "r": 512.95129, "b": 303.86169, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "complete the following steps:", "bbox": {"l": 136.8, "t": 306.64853, "r": 264.64957, "b": 315.86151, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "1.", "bbox": {"l": 136.8, "t": 323.68811, "r": 145.19756, "b": 332.90109000000007, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Run the SQL statement that is shown in Figure 4-64 using the WEBUSER user profile. ", "bbox": {"l": 147.99672, "t": 323.68811, "r": 535.26086, "b": 332.90109000000007, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "The SQL statement has no WHERE clause, but the WEBUSER can see only his ", "bbox": {"l": 151.20016, "t": 335.68793, "r": 508.49417, "b": 344.90091, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "accounts.", "bbox": {"l": 151.20016, "t": 347.68774, "r": 193.7981, "b": 356.90073, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Figure 4-64 List of accounts and current balance by customer using the WEBUSER user profile", "bbox": {"l": 136.8, "t": 544.81799, "r": 519.68433, "b": 553.14301, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 214.31243896484375, "t": 754.7880249023438, "r": 523.59357, "b": 764.0306396484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9599050283432007, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.3995361328125, "t": 754.3471069335938, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9170706868171692, "cells": [{"id": 1, "text": "73", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 136.2493438720703, "t": 70.56134033203125, "r": 524.19788, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9599125981330872, "cells": [{"id": 2, "text": "5.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.19983, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The result of the third SQL statement is shown in Figure 4-63. There are no masked ", "bbox": {"l": 147.99991, "t": 71.50903000000005, "r": 524.19788, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "columns, and the user can see only one row, which is the user\u2019s own row.", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 474.59003, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.18749237060547, "t": 252.73291015625, "r": 368.2061462402344, "b": 262.02295000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9425347447395325, "cells": [{"id": 5, "text": "Figure 4-63 SQL statement that is run by WEBUSER - no masked columns", "bbox": {"l": 64.800003, "t": 253.69799999999998, "r": 367.66254, "b": 262.02295000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 136.10256958007812, "t": 278.1611328125, "r": 377.4744, "b": 290.60400000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.956287682056427, "cells": [{"id": 6, "text": "Other examples of data access with RCAC", "bbox": {"l": 136.8, "t": 279.50397, "r": 377.4744, "b": 290.60400000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.91213989257812, "t": 293.9790344238281, "r": 512.95129, "b": 316.0233459472656, "coord_origin": "TOPLEFT"}, "confidence": 0.9553588032722473, "cells": [{"id": 7, "text": "To run an SQL statement that lists all the accounts and current balance by customer, ", "bbox": {"l": 136.8, "t": 294.64871, "r": 512.95129, "b": 303.86169, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "complete the following steps:", "bbox": {"l": 136.8, "t": 306.64853, "r": 264.64957, "b": 315.86151, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 136.5059051513672, "t": 322.4664001464844, "r": 535.26086, "b": 356.90073, "coord_origin": "TOPLEFT"}, "confidence": 0.9514802098274231, "cells": [{"id": 9, "text": "1.", "bbox": {"l": 136.8, "t": 323.68811, "r": 145.19756, "b": 332.90109000000007, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Run the SQL statement that is shown in Figure 4-64 using the WEBUSER user profile. ", "bbox": {"l": 147.99672, "t": 323.68811, "r": 535.26086, "b": 332.90109000000007, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "The SQL statement has no WHERE clause, but the WEBUSER can see only his ", "bbox": {"l": 151.20016, "t": 335.68793, "r": 508.49417, "b": 344.90091, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "accounts.", "bbox": {"l": 151.20016, "t": 347.68774, "r": 193.7981, "b": 356.90073, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "caption", "bbox": {"l": 136.13351440429688, "t": 544.0534057617188, "r": 520.2975463867188, "b": 553.3374633789062, "coord_origin": "TOPLEFT"}, "confidence": 0.9272187948226929, "cells": [{"id": 13, "text": "Figure 4-64 List of accounts and current balance by customer using the WEBUSER user profile", "bbox": {"l": 136.8, "t": 544.81799, "r": 519.68433, "b": 553.14301, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 64.07161712646484, "t": 107.4771728515625, "r": 546.6607055664062, "b": 250.95677185058594, "coord_origin": "TOPLEFT"}, "confidence": 0.9455775618553162, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 88, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.31243896484375, "t": 754.7880249023438, "r": 523.59357, "b": 764.0306396484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9599050283432007, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 88, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.3995361328125, "t": 754.3471069335938, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9170706868171692, "cells": [{"id": 1, "text": "73", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "73"}, {"label": "list_item", "id": 2, "page_no": 88, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.2493438720703, "t": 70.56134033203125, "r": 524.19788, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9599125981330872, "cells": [{"id": 2, "text": "5.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.19983, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The result of the third SQL statement is shown in Figure 4-63. There are no masked ", "bbox": {"l": 147.99991, "t": 71.50903000000005, "r": 524.19788, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "columns, and the user can see only one row, which is the user\u2019s own row.", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 474.59003, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "5. The result of the third SQL statement is shown in Figure 4-63. There are no masked columns, and the user can see only one row, which is the user\u2019s own row."}, {"label": "caption", "id": 3, "page_no": 88, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.18749237060547, "t": 252.73291015625, "r": 368.2061462402344, "b": 262.02295000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9425347447395325, "cells": [{"id": 5, "text": "Figure 4-63 SQL statement that is run by WEBUSER - no masked columns", "bbox": {"l": 64.800003, "t": 253.69799999999998, "r": 367.66254, "b": 262.02295000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-63 SQL statement that is run by WEBUSER - no masked columns"}, {"label": "section_header", "id": 4, "page_no": 88, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 136.10256958007812, "t": 278.1611328125, "r": 377.4744, "b": 290.60400000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.956287682056427, "cells": [{"id": 6, "text": "Other examples of data access with RCAC", "bbox": {"l": 136.8, "t": 279.50397, "r": 377.4744, "b": 290.60400000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Other examples of data access with RCAC"}, {"label": "text", "id": 5, "page_no": 88, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.91213989257812, "t": 293.9790344238281, "r": 512.95129, "b": 316.0233459472656, "coord_origin": "TOPLEFT"}, "confidence": 0.9553588032722473, "cells": [{"id": 7, "text": "To run an SQL statement that lists all the accounts and current balance by customer, ", "bbox": {"l": 136.8, "t": 294.64871, "r": 512.95129, "b": 303.86169, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "complete the following steps:", "bbox": {"l": 136.8, "t": 306.64853, "r": 264.64957, "b": 315.86151, "coord_origin": "TOPLEFT"}}]}, "text": "To run an SQL statement that lists all the accounts and current balance by customer, complete the following steps:"}, {"label": "list_item", "id": 6, "page_no": 88, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.5059051513672, "t": 322.4664001464844, "r": 535.26086, "b": 356.90073, "coord_origin": "TOPLEFT"}, "confidence": 0.9514802098274231, "cells": [{"id": 9, "text": "1.", "bbox": {"l": 136.8, "t": 323.68811, "r": 145.19756, "b": 332.90109000000007, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Run the SQL statement that is shown in Figure 4-64 using the WEBUSER user profile. ", "bbox": {"l": 147.99672, "t": 323.68811, "r": 535.26086, "b": 332.90109000000007, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "The SQL statement has no WHERE clause, but the WEBUSER can see only his ", "bbox": {"l": 151.20016, "t": 335.68793, "r": 508.49417, "b": 344.90091, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "accounts.", "bbox": {"l": 151.20016, "t": 347.68774, "r": 193.7981, "b": 356.90073, "coord_origin": "TOPLEFT"}}]}, "text": "1. Run the SQL statement that is shown in Figure 4-64 using the WEBUSER user profile. The SQL statement has no WHERE clause, but the WEBUSER can see only his accounts."}, {"label": "caption", "id": 7, "page_no": 88, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 136.13351440429688, "t": 544.0534057617188, "r": 520.2975463867188, "b": 553.3374633789062, "coord_origin": "TOPLEFT"}, "confidence": 0.9272187948226929, "cells": [{"id": 13, "text": "Figure 4-64 List of accounts and current balance by customer using the WEBUSER user profile", "bbox": {"l": 136.8, "t": 544.81799, "r": 519.68433, "b": 553.14301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-64 List of accounts and current balance by customer using the WEBUSER user profile"}, {"label": "picture", "id": 8, "page_no": 88, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 64.07161712646484, "t": 107.4771728515625, "r": 546.6607055664062, "b": 250.95677185058594, "coord_origin": "TOPLEFT"}, "confidence": 0.9455775618553162, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 88, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.2493438720703, "t": 70.56134033203125, "r": 524.19788, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9599125981330872, "cells": [{"id": 2, "text": "5.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.19983, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The result of the third SQL statement is shown in Figure 4-63. There are no masked ", "bbox": {"l": 147.99991, "t": 71.50903000000005, "r": 524.19788, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "columns, and the user can see only one row, which is the user\u2019s own row.", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 474.59003, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "5. The result of the third SQL statement is shown in Figure 4-63. There are no masked columns, and the user can see only one row, which is the user\u2019s own row."}, {"label": "caption", "id": 3, "page_no": 88, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.18749237060547, "t": 252.73291015625, "r": 368.2061462402344, "b": 262.02295000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9425347447395325, "cells": [{"id": 5, "text": "Figure 4-63 SQL statement that is run by WEBUSER - no masked columns", "bbox": {"l": 64.800003, "t": 253.69799999999998, "r": 367.66254, "b": 262.02295000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-63 SQL statement that is run by WEBUSER - no masked columns"}, {"label": "section_header", "id": 4, "page_no": 88, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 136.10256958007812, "t": 278.1611328125, "r": 377.4744, "b": 290.60400000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.956287682056427, "cells": [{"id": 6, "text": "Other examples of data access with RCAC", "bbox": {"l": 136.8, "t": 279.50397, "r": 377.4744, "b": 290.60400000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Other examples of data access with RCAC"}, {"label": "text", "id": 5, "page_no": 88, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.91213989257812, "t": 293.9790344238281, "r": 512.95129, "b": 316.0233459472656, "coord_origin": "TOPLEFT"}, "confidence": 0.9553588032722473, "cells": [{"id": 7, "text": "To run an SQL statement that lists all the accounts and current balance by customer, ", "bbox": {"l": 136.8, "t": 294.64871, "r": 512.95129, "b": 303.86169, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "complete the following steps:", "bbox": {"l": 136.8, "t": 306.64853, "r": 264.64957, "b": 315.86151, "coord_origin": "TOPLEFT"}}]}, "text": "To run an SQL statement that lists all the accounts and current balance by customer, complete the following steps:"}, {"label": "list_item", "id": 6, "page_no": 88, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.5059051513672, "t": 322.4664001464844, "r": 535.26086, "b": 356.90073, "coord_origin": "TOPLEFT"}, "confidence": 0.9514802098274231, "cells": [{"id": 9, "text": "1.", "bbox": {"l": 136.8, "t": 323.68811, "r": 145.19756, "b": 332.90109000000007, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Run the SQL statement that is shown in Figure 4-64 using the WEBUSER user profile. ", "bbox": {"l": 147.99672, "t": 323.68811, "r": 535.26086, "b": 332.90109000000007, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "The SQL statement has no WHERE clause, but the WEBUSER can see only his ", "bbox": {"l": 151.20016, "t": 335.68793, "r": 508.49417, "b": 344.90091, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "accounts.", "bbox": {"l": 151.20016, "t": 347.68774, "r": 193.7981, "b": 356.90073, "coord_origin": "TOPLEFT"}}]}, "text": "1. Run the SQL statement that is shown in Figure 4-64 using the WEBUSER user profile. The SQL statement has no WHERE clause, but the WEBUSER can see only his accounts."}, {"label": "caption", "id": 7, "page_no": 88, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 136.13351440429688, "t": 544.0534057617188, "r": 520.2975463867188, "b": 553.3374633789062, "coord_origin": "TOPLEFT"}, "confidence": 0.9272187948226929, "cells": [{"id": 13, "text": "Figure 4-64 List of accounts and current balance by customer using the WEBUSER user profile", "bbox": {"l": 136.8, "t": 544.81799, "r": 519.68433, "b": 553.14301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-64 List of accounts and current balance by customer using the WEBUSER user profile"}, {"label": "picture", "id": 8, "page_no": 88, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 64.07161712646484, "t": 107.4771728515625, "r": 546.6607055664062, "b": 250.95677185058594, "coord_origin": "TOPLEFT"}, "confidence": 0.9455775618553162, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 88, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.31243896484375, "t": 754.7880249023438, "r": 523.59357, "b": 764.0306396484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9599050283432007, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 88, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.3995361328125, "t": 754.3471069335938, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9170706868171692, "cells": [{"id": 1, "text": "73", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "73"}]}}, {"page_no": 89, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "74 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "2.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.19731, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 4-65 shows running a more complex SQL statement that calculates transaction ", "bbox": {"l": 147.99638, "t": 71.50867000000005, "r": 533.56744, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "total by account for year and quarter. Run this statement using the WEBUSER profile. The ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 547.25665, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "SQL statement has no ", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 253.40468, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "WHERE", "bbox": {"l": 253.44055, "t": 95.65770999999995, "r": 278.4003, "b": 104.48230000000012, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " clause, but the WEBUSER user can see only his ", "bbox": {"l": 278.4003, "t": 95.50829999999996, "r": 498.4646000000001, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "transactions.", "bbox": {"l": 151.20013, "t": 107.50811999999996, "r": 207.61755, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Figure 4-65 Calculate transaction total by account for year and quarter using the WEBUSER profile", "bbox": {"l": 136.8, "t": 502.2179, "r": 534.44336, "b": 510.54291, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.96171188354492, "t": 754.11767578125, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9149019718170166, "cells": [{"id": 0, "text": "74 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.27671813964844, "t": 754.632568359375, "r": 334.42142, "b": 764.0243530273438, "coord_origin": "TOPLEFT"}, "confidence": 0.9512301087379456, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 135.940185546875, "t": 70.60448455810547, "r": 547.25665, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9553778171539307, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.19731, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 4-65 shows running a more complex SQL statement that calculates transaction ", "bbox": {"l": 147.99638, "t": 71.50867000000005, "r": 533.56744, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "total by account for year and quarter. Run this statement using the WEBUSER profile. The ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 547.25665, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "SQL statement has no ", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 253.40468, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "WHERE", "bbox": {"l": 253.44055, "t": 95.65770999999995, "r": 278.4003, "b": 104.48230000000012, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " clause, but the WEBUSER user can see only his ", "bbox": {"l": 278.4003, "t": 95.50829999999996, "r": 498.4646000000001, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "transactions.", "bbox": {"l": 151.20013, "t": 107.50811999999996, "r": 207.61755, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.05810546875, "t": 501.21514892578125, "r": 535.08740234375, "b": 510.911376953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9247013926506042, "cells": [{"id": 9, "text": "Figure 4-65 Calculate transaction total by account for year and quarter using the WEBUSER profile", "bbox": {"l": 136.8, "t": 502.2179, "r": 534.44336, "b": 510.54291, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 89, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.96171188354492, "t": 754.11767578125, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9149019718170166, "cells": [{"id": 0, "text": "74 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "74"}, {"label": "page_footer", "id": 1, "page_no": 89, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.27671813964844, "t": 754.632568359375, "r": 334.42142, "b": 764.0243530273438, "coord_origin": "TOPLEFT"}, "confidence": 0.9512301087379456, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "list_item", "id": 2, "page_no": 89, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.940185546875, "t": 70.60448455810547, "r": 547.25665, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9553778171539307, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.19731, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 4-65 shows running a more complex SQL statement that calculates transaction ", "bbox": {"l": 147.99638, "t": 71.50867000000005, "r": 533.56744, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "total by account for year and quarter. Run this statement using the WEBUSER profile. The ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 547.25665, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "SQL statement has no ", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 253.40468, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "WHERE", "bbox": {"l": 253.44055, "t": 95.65770999999995, "r": 278.4003, "b": 104.48230000000012, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " clause, but the WEBUSER user can see only his ", "bbox": {"l": 278.4003, "t": 95.50829999999996, "r": 498.4646000000001, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "transactions.", "bbox": {"l": 151.20013, "t": 107.50811999999996, "r": 207.61755, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "2. Figure 4-65 shows running a more complex SQL statement that calculates transaction total by account for year and quarter. Run this statement using the WEBUSER profile. The SQL statement has no WHERE clause, but the WEBUSER user can see only his transactions."}, {"label": "caption", "id": 3, "page_no": 89, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.05810546875, "t": 501.21514892578125, "r": 535.08740234375, "b": 510.911376953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9247013926506042, "cells": [{"id": 9, "text": "Figure 4-65 Calculate transaction total by account for year and quarter using the WEBUSER profile", "bbox": {"l": 136.8, "t": 502.2179, "r": 534.44336, "b": 510.54291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-65 Calculate transaction total by account for year and quarter using the WEBUSER profile"}], "body": [{"label": "list_item", "id": 2, "page_no": 89, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.940185546875, "t": 70.60448455810547, "r": 547.25665, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9553778171539307, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.19731, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 4-65 shows running a more complex SQL statement that calculates transaction ", "bbox": {"l": 147.99638, "t": 71.50867000000005, "r": 533.56744, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "total by account for year and quarter. Run this statement using the WEBUSER profile. The ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 547.25665, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "SQL statement has no ", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 253.40468, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "WHERE", "bbox": {"l": 253.44055, "t": 95.65770999999995, "r": 278.4003, "b": 104.48230000000012, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " clause, but the WEBUSER user can see only his ", "bbox": {"l": 278.4003, "t": 95.50829999999996, "r": 498.4646000000001, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "transactions.", "bbox": {"l": 151.20013, "t": 107.50811999999996, "r": 207.61755, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "2. Figure 4-65 shows running a more complex SQL statement that calculates transaction total by account for year and quarter. Run this statement using the WEBUSER profile. The SQL statement has no WHERE clause, but the WEBUSER user can see only his transactions."}, {"label": "caption", "id": 3, "page_no": 89, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.05810546875, "t": 501.21514892578125, "r": 535.08740234375, "b": 510.911376953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9247013926506042, "cells": [{"id": 9, "text": "Figure 4-65 Calculate transaction total by account for year and quarter using the WEBUSER profile", "bbox": {"l": 136.8, "t": 502.2179, "r": 534.44336, "b": 510.54291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-65 Calculate transaction total by account for year and quarter using the WEBUSER profile"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 89, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.96171188354492, "t": 754.11767578125, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9149019718170166, "cells": [{"id": 0, "text": "74 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "74"}, {"label": "page_footer", "id": 1, "page_no": 89, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.27671813964844, "t": 754.632568359375, "r": 334.42142, "b": 764.0243530273438, "coord_origin": "TOPLEFT"}, "confidence": 0.9512301087379456, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 90, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "75", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "3.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.09937, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Run the same SQL statement that lists the accounts and current balance by customer, but ", "bbox": {"l": 147.86595, "t": 71.50903000000005, "r": 547.24005, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "use a TELLER user profile. The result of this SQL statement is shown in Figure 4-66. The ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 547.12665, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "TELLER user can see all the rows in the CUSTOMERS table.", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 422.51218, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Figure 4-66 List of accounts and current balance by customer using a TELLER user profile", "bbox": {"l": 136.8, "t": 493.27789, "r": 500.70490000000007, "b": 501.60291, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "4.3.11", "bbox": {"l": 64.800003, "t": 522.11475, "r": 101.23562, "b": 534.10272, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Query implementation with RCAC activated", "bbox": {"l": 104.87917, "t": 522.11475, "r": 375.06628, "b": 534.10272, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "This section looks at some other interesting information that is related to RCAC by comparing ", "bbox": {"l": 136.8, "t": 548.26872, "r": 547.16693, "b": 557.48172, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "the access plans of the same SQL statement without RCAC and with RCAC. This example ", "bbox": {"l": 136.80002, "t": 560.2685200000001, "r": 538.92499, "b": 569.48152, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "uses Visual Explain and runs an SQL statement that lists the accounts and current balance ", "bbox": {"l": 136.80002, "t": 572.26833, "r": 541.53564, "b": 581.48132, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "by customer.", "bbox": {"l": 136.80002, "t": 584.26813, "r": 193.24632, "b": 593.48112, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 214.29998779296875, "t": 754.763427734375, "r": 523.59357, "b": 764.0404663085938, "coord_origin": "TOPLEFT"}, "confidence": 0.9579424262046814, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.4443969726562, "t": 754.1858520507812, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9183679819107056, "cells": [{"id": 1, "text": "75", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 136.18202209472656, "t": 70.665283203125, "r": 547.24005, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9646015167236328, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.09937, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Run the same SQL statement that lists the accounts and current balance by customer, but ", "bbox": {"l": 147.86595, "t": 71.50903000000005, "r": 547.24005, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "use a TELLER user profile. The result of this SQL statement is shown in Figure 4-66. The ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 547.12665, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "TELLER user can see all the rows in the CUSTOMERS table.", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 422.51218, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.2951202392578, "t": 492.5509033203125, "r": 501.49591064453125, "b": 502.1121826171875, "coord_origin": "TOPLEFT"}, "confidence": 0.9091576933860779, "cells": [{"id": 6, "text": "Figure 4-66 List of accounts and current balance by customer using a TELLER user profile", "bbox": {"l": 136.8, "t": 493.27789, "r": 500.70490000000007, "b": 501.60291, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 64.09226989746094, "t": 521.0582885742188, "r": 375.06628, "b": 534.3353271484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9637629389762878, "cells": [{"id": 7, "text": "4.3.11", "bbox": {"l": 64.800003, "t": 522.11475, "r": 101.23562, "b": 534.10272, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Query implementation with RCAC activated", "bbox": {"l": 104.87917, "t": 522.11475, "r": 375.06628, "b": 534.10272, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.77622985839844, "t": 547.2048950195312, "r": 547.16693, "b": 593.8646850585938, "coord_origin": "TOPLEFT"}, "confidence": 0.9798411130905151, "cells": [{"id": 9, "text": "This section looks at some other interesting information that is related to RCAC by comparing ", "bbox": {"l": 136.8, "t": 548.26872, "r": 547.16693, "b": 557.48172, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "the access plans of the same SQL statement without RCAC and with RCAC. This example ", "bbox": {"l": 136.80002, "t": 560.2685200000001, "r": 538.92499, "b": 569.48152, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "uses Visual Explain and runs an SQL statement that lists the accounts and current balance ", "bbox": {"l": 136.80002, "t": 572.26833, "r": 541.53564, "b": 581.48132, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "by customer.", "bbox": {"l": 136.80002, "t": 584.26813, "r": 193.24632, "b": 593.48112, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 90, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.29998779296875, "t": 754.763427734375, "r": 523.59357, "b": 764.0404663085938, "coord_origin": "TOPLEFT"}, "confidence": 0.9579424262046814, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 90, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.4443969726562, "t": 754.1858520507812, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9183679819107056, "cells": [{"id": 1, "text": "75", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "75"}, {"label": "list_item", "id": 2, "page_no": 90, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.18202209472656, "t": 70.665283203125, "r": 547.24005, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9646015167236328, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.09937, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Run the same SQL statement that lists the accounts and current balance by customer, but ", "bbox": {"l": 147.86595, "t": 71.50903000000005, "r": 547.24005, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "use a TELLER user profile. The result of this SQL statement is shown in Figure 4-66. The ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 547.12665, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "TELLER user can see all the rows in the CUSTOMERS table.", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 422.51218, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "3. Run the same SQL statement that lists the accounts and current balance by customer, but use a TELLER user profile. The result of this SQL statement is shown in Figure 4-66. The TELLER user can see all the rows in the CUSTOMERS table."}, {"label": "caption", "id": 3, "page_no": 90, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.2951202392578, "t": 492.5509033203125, "r": 501.49591064453125, "b": 502.1121826171875, "coord_origin": "TOPLEFT"}, "confidence": 0.9091576933860779, "cells": [{"id": 6, "text": "Figure 4-66 List of accounts and current balance by customer using a TELLER user profile", "bbox": {"l": 136.8, "t": 493.27789, "r": 500.70490000000007, "b": 501.60291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-66 List of accounts and current balance by customer using a TELLER user profile"}, {"label": "section_header", "id": 4, "page_no": 90, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.09226989746094, "t": 521.0582885742188, "r": 375.06628, "b": 534.3353271484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9637629389762878, "cells": [{"id": 7, "text": "4.3.11", "bbox": {"l": 64.800003, "t": 522.11475, "r": 101.23562, "b": 534.10272, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Query implementation with RCAC activated", "bbox": {"l": 104.87917, "t": 522.11475, "r": 375.06628, "b": 534.10272, "coord_origin": "TOPLEFT"}}]}, "text": "4.3.11 Query implementation with RCAC activated"}, {"label": "text", "id": 5, "page_no": 90, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.77622985839844, "t": 547.2048950195312, "r": 547.16693, "b": 593.8646850585938, "coord_origin": "TOPLEFT"}, "confidence": 0.9798411130905151, "cells": [{"id": 9, "text": "This section looks at some other interesting information that is related to RCAC by comparing ", "bbox": {"l": 136.8, "t": 548.26872, "r": 547.16693, "b": 557.48172, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "the access plans of the same SQL statement without RCAC and with RCAC. This example ", "bbox": {"l": 136.80002, "t": 560.2685200000001, "r": 538.92499, "b": 569.48152, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "uses Visual Explain and runs an SQL statement that lists the accounts and current balance ", "bbox": {"l": 136.80002, "t": 572.26833, "r": 541.53564, "b": 581.48132, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "by customer.", "bbox": {"l": 136.80002, "t": 584.26813, "r": 193.24632, "b": 593.48112, "coord_origin": "TOPLEFT"}}]}, "text": "This section looks at some other interesting information that is related to RCAC by comparing the access plans of the same SQL statement without RCAC and with RCAC. This example uses Visual Explain and runs an SQL statement that lists the accounts and current balance by customer."}], "body": [{"label": "list_item", "id": 2, "page_no": 90, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.18202209472656, "t": 70.665283203125, "r": 547.24005, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9646015167236328, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.09937, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Run the same SQL statement that lists the accounts and current balance by customer, but ", "bbox": {"l": 147.86595, "t": 71.50903000000005, "r": 547.24005, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "use a TELLER user profile. The result of this SQL statement is shown in Figure 4-66. The ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 547.12665, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "TELLER user can see all the rows in the CUSTOMERS table.", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 422.51218, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "3. Run the same SQL statement that lists the accounts and current balance by customer, but use a TELLER user profile. The result of this SQL statement is shown in Figure 4-66. The TELLER user can see all the rows in the CUSTOMERS table."}, {"label": "caption", "id": 3, "page_no": 90, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.2951202392578, "t": 492.5509033203125, "r": 501.49591064453125, "b": 502.1121826171875, "coord_origin": "TOPLEFT"}, "confidence": 0.9091576933860779, "cells": [{"id": 6, "text": "Figure 4-66 List of accounts and current balance by customer using a TELLER user profile", "bbox": {"l": 136.8, "t": 493.27789, "r": 500.70490000000007, "b": 501.60291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-66 List of accounts and current balance by customer using a TELLER user profile"}, {"label": "section_header", "id": 4, "page_no": 90, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.09226989746094, "t": 521.0582885742188, "r": 375.06628, "b": 534.3353271484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9637629389762878, "cells": [{"id": 7, "text": "4.3.11", "bbox": {"l": 64.800003, "t": 522.11475, "r": 101.23562, "b": 534.10272, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Query implementation with RCAC activated", "bbox": {"l": 104.87917, "t": 522.11475, "r": 375.06628, "b": 534.10272, "coord_origin": "TOPLEFT"}}]}, "text": "4.3.11 Query implementation with RCAC activated"}, {"label": "text", "id": 5, "page_no": 90, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.77622985839844, "t": 547.2048950195312, "r": 547.16693, "b": 593.8646850585938, "coord_origin": "TOPLEFT"}, "confidence": 0.9798411130905151, "cells": [{"id": 9, "text": "This section looks at some other interesting information that is related to RCAC by comparing ", "bbox": {"l": 136.8, "t": 548.26872, "r": 547.16693, "b": 557.48172, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "the access plans of the same SQL statement without RCAC and with RCAC. This example ", "bbox": {"l": 136.80002, "t": 560.2685200000001, "r": 538.92499, "b": 569.48152, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "uses Visual Explain and runs an SQL statement that lists the accounts and current balance ", "bbox": {"l": 136.80002, "t": 572.26833, "r": 541.53564, "b": 581.48132, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "by customer.", "bbox": {"l": 136.80002, "t": 584.26813, "r": 193.24632, "b": 593.48112, "coord_origin": "TOPLEFT"}}]}, "text": "This section looks at some other interesting information that is related to RCAC by comparing the access plans of the same SQL statement without RCAC and with RCAC. This example uses Visual Explain and runs an SQL statement that lists the accounts and current balance by customer."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 90, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.29998779296875, "t": 754.763427734375, "r": 523.59357, "b": 764.0404663085938, "coord_origin": "TOPLEFT"}, "confidence": 0.9579424262046814, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 90, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.4443969726562, "t": 754.1858520507812, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9183679819107056, "cells": [{"id": 1, "text": "75", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "75"}]}}, {"page_no": 91, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "76 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Complete the following steps:", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 266.86069, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "1.", "bbox": {"l": 136.8, "t": 88.48845999999992, "r": 145.19209, "b": 97.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 4-67 shows the SQL statement in Visual Explain ran with no RCAC. The ", "bbox": {"l": 147.98944, "t": 88.48845999999992, "r": 503.11377, "b": 97.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "implementation of the SQL statement is a two-way join, which is exactly what the SQL ", "bbox": {"l": 151.20016, "t": 100.48828000000003, "r": 532.47498, "b": 109.70129000000009, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "statement is doing.", "bbox": {"l": 151.20016, "t": 112.48810000000014, "r": 235.12212, "b": 121.70110999999997, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Figure 4-67 Visual Explain with no RCAC enabled", "bbox": {"l": 136.8, "t": 501.73801, "r": 339.57263, "b": 510.06302, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.95058822631836, "t": 754.2190551757812, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9133445024490356, "cells": [{"id": 0, "text": "76 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.32958221435547, "t": 754.64501953125, "r": 334.42142, "b": 763.9790649414062, "coord_origin": "TOPLEFT"}, "confidence": 0.952595591545105, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 136.1143798828125, "t": 70.55393981933594, "r": 266.86069, "b": 81.28746795654297, "coord_origin": "TOPLEFT"}, "confidence": 0.7829880118370056, "cells": [{"id": 2, "text": "Complete the following steps:", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 266.86069, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "list_item", "bbox": {"l": 136.79046630859375, "t": 87.4289321899414, "r": 532.47498, "b": 121.70110999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9777867794036865, "cells": [{"id": 3, "text": "1.", "bbox": {"l": 136.8, "t": 88.48845999999992, "r": 145.19209, "b": 97.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 4-67 shows the SQL statement in Visual Explain ran with no RCAC. The ", "bbox": {"l": 147.98944, "t": 88.48845999999992, "r": 503.11377, "b": 97.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "implementation of the SQL statement is a two-way join, which is exactly what the SQL ", "bbox": {"l": 151.20016, "t": 100.48828000000003, "r": 532.47498, "b": 109.70129000000009, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "statement is doing.", "bbox": {"l": 151.20016, "t": 112.48810000000014, "r": 235.12212, "b": 121.70110999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "caption", "bbox": {"l": 136.02316284179688, "t": 500.6075134277344, "r": 340.572021484375, "b": 510.297119140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9476897120475769, "cells": [{"id": 7, "text": "Figure 4-67 Visual Explain with no RCAC enabled", "bbox": {"l": 136.8, "t": 501.73801, "r": 339.57263, "b": 510.06302, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "picture", "bbox": {"l": 136.32431030273438, "t": 135.9857940673828, "r": 399.8092956542969, "b": 498.6230773925781, "coord_origin": "TOPLEFT"}, "confidence": 0.9861094355583191, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 91, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.95058822631836, "t": 754.2190551757812, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9133445024490356, "cells": [{"id": 0, "text": "76 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "76"}, {"label": "page_footer", "id": 1, "page_no": 91, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.32958221435547, "t": 754.64501953125, "r": 334.42142, "b": 763.9790649414062, "coord_origin": "TOPLEFT"}, "confidence": 0.952595591545105, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "section_header", "id": 2, "page_no": 91, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 136.1143798828125, "t": 70.55393981933594, "r": 266.86069, "b": 81.28746795654297, "coord_origin": "TOPLEFT"}, "confidence": 0.7829880118370056, "cells": [{"id": 2, "text": "Complete the following steps:", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 266.86069, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Complete the following steps:"}, {"label": "list_item", "id": 3, "page_no": 91, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 136.79046630859375, "t": 87.4289321899414, "r": 532.47498, "b": 121.70110999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9777867794036865, "cells": [{"id": 3, "text": "1.", "bbox": {"l": 136.8, "t": 88.48845999999992, "r": 145.19209, "b": 97.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 4-67 shows the SQL statement in Visual Explain ran with no RCAC. The ", "bbox": {"l": 147.98944, "t": 88.48845999999992, "r": 503.11377, "b": 97.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "implementation of the SQL statement is a two-way join, which is exactly what the SQL ", "bbox": {"l": 151.20016, "t": 100.48828000000003, "r": 532.47498, "b": 109.70129000000009, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "statement is doing.", "bbox": {"l": 151.20016, "t": 112.48810000000014, "r": 235.12212, "b": 121.70110999999997, "coord_origin": "TOPLEFT"}}]}, "text": "1. Figure 4-67 shows the SQL statement in Visual Explain ran with no RCAC. The implementation of the SQL statement is a two-way join, which is exactly what the SQL statement is doing."}, {"label": "caption", "id": 4, "page_no": 91, "cluster": {"id": 4, "label": "caption", "bbox": {"l": 136.02316284179688, "t": 500.6075134277344, "r": 340.572021484375, "b": 510.297119140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9476897120475769, "cells": [{"id": 7, "text": "Figure 4-67 Visual Explain with no RCAC enabled", "bbox": {"l": 136.8, "t": 501.73801, "r": 339.57263, "b": 510.06302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-67 Visual Explain with no RCAC enabled"}, {"label": "picture", "id": 5, "page_no": 91, "cluster": {"id": 5, "label": "picture", "bbox": {"l": 136.32431030273438, "t": 135.9857940673828, "r": 399.8092956542969, "b": 498.6230773925781, "coord_origin": "TOPLEFT"}, "confidence": 0.9861094355583191, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "section_header", "id": 2, "page_no": 91, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 136.1143798828125, "t": 70.55393981933594, "r": 266.86069, "b": 81.28746795654297, "coord_origin": "TOPLEFT"}, "confidence": 0.7829880118370056, "cells": [{"id": 2, "text": "Complete the following steps:", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 266.86069, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Complete the following steps:"}, {"label": "list_item", "id": 3, "page_no": 91, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 136.79046630859375, "t": 87.4289321899414, "r": 532.47498, "b": 121.70110999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9777867794036865, "cells": [{"id": 3, "text": "1.", "bbox": {"l": 136.8, "t": 88.48845999999992, "r": 145.19209, "b": 97.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 4-67 shows the SQL statement in Visual Explain ran with no RCAC. The ", "bbox": {"l": 147.98944, "t": 88.48845999999992, "r": 503.11377, "b": 97.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "implementation of the SQL statement is a two-way join, which is exactly what the SQL ", "bbox": {"l": 151.20016, "t": 100.48828000000003, "r": 532.47498, "b": 109.70129000000009, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "statement is doing.", "bbox": {"l": 151.20016, "t": 112.48810000000014, "r": 235.12212, "b": 121.70110999999997, "coord_origin": "TOPLEFT"}}]}, "text": "1. Figure 4-67 shows the SQL statement in Visual Explain ran with no RCAC. The implementation of the SQL statement is a two-way join, which is exactly what the SQL statement is doing."}, {"label": "caption", "id": 4, "page_no": 91, "cluster": {"id": 4, "label": "caption", "bbox": {"l": 136.02316284179688, "t": 500.6075134277344, "r": 340.572021484375, "b": 510.297119140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9476897120475769, "cells": [{"id": 7, "text": "Figure 4-67 Visual Explain with no RCAC enabled", "bbox": {"l": 136.8, "t": 501.73801, "r": 339.57263, "b": 510.06302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-67 Visual Explain with no RCAC enabled"}, {"label": "picture", "id": 5, "page_no": 91, "cluster": {"id": 5, "label": "picture", "bbox": {"l": 136.32431030273438, "t": 135.9857940673828, "r": 399.8092956542969, "b": 498.6230773925781, "coord_origin": "TOPLEFT"}, "confidence": 0.9861094355583191, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 91, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.95058822631836, "t": 754.2190551757812, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9133445024490356, "cells": [{"id": 0, "text": "76 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "76"}, {"label": "page_footer", "id": 1, "page_no": 91, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.32958221435547, "t": 754.64501953125, "r": 334.42142, "b": 763.9790649414062, "coord_origin": "TOPLEFT"}, "confidence": 0.952595591545105, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 92, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "77", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.19554, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 4-68 shows the Visual Explain of the same SQL statement, but with RCAC ", "bbox": {"l": 147.9942, "t": 71.50903000000005, "r": 513.35919, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "enabled. It is clear that the implementation of the SQL statement is more complex ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 514.04858, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "because the row permission rule becomes part of the ", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 389.64822, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "WHERE", "bbox": {"l": 389.57941, "t": 95.65808000000015, "r": 414.53918, "b": 104.48266999999998, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " clause.", "bbox": {"l": 414.59991, "t": 95.50867000000005, "r": 448.8892200000001, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Figure 4-68 Visual Explain with RCAC enabled", "bbox": {"l": 136.8, "t": 480.55798, "r": 327.09329, "b": 488.883, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "3.", "bbox": {"l": 136.8, "t": 506.56863, "r": 145.17432, "b": 515.78162, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Compare the advised indexes that are provided by the Optimizer without RCAC and with ", "bbox": {"l": 147.96574, "t": 506.56863, "r": 543.63715, "b": 515.78162, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "RCAC enabled. Figure 4-69 shows the index advice for the SQL statement without RCAC ", "bbox": {"l": 151.20016, "t": 518.56845, "r": 547.23944, "b": 527.78143, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "enabled. The index being advised is for the ORDER BY clause.", "bbox": {"l": 151.20016, "t": 530.5682400000001, "r": 430.28333, "b": 539.78125, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Figure 4-69 Index advice with no RCAC", "bbox": {"l": 64.800003, "t": 667.5179, "r": 227.10149, "b": 675.8429, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 214.30316162109375, "t": 754.7198486328125, "r": 523.59357, "b": 764.0086669921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9557602405548096, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.3654174804688, "t": 754.280029296875, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9056527614593506, "cells": [{"id": 1, "text": "77", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 136.00341796875, "t": 70.4630355834961, "r": 514.04858, "b": 104.82832336425781, "coord_origin": "TOPLEFT"}, "confidence": 0.9761855006217957, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.19554, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 4-68 shows the Visual Explain of the same SQL statement, but with RCAC ", "bbox": {"l": 147.9942, "t": 71.50903000000005, "r": 513.35919, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "enabled. It is clear that the implementation of the SQL statement is more complex ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 514.04858, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "because the row permission rule becomes part of the ", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 389.64822, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "WHERE", "bbox": {"l": 389.57941, "t": 95.65808000000015, "r": 414.53918, "b": 104.48266999999998, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " clause.", "bbox": {"l": 414.59991, "t": 95.50867000000005, "r": 448.8892200000001, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 135.9990692138672, "t": 480.2080078125, "r": 327.9913635253906, "b": 489.21875, "coord_origin": "TOPLEFT"}, "confidence": 0.9529653191566467, "cells": [{"id": 8, "text": "Figure 4-68 Visual Explain with RCAC enabled", "bbox": {"l": 136.8, "t": 480.55798, "r": 327.09329, "b": 488.883, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 136.2928924560547, "t": 505.9650573730469, "r": 547.23944, "b": 540.0134887695312, "coord_origin": "TOPLEFT"}, "confidence": 0.9766737818717957, "cells": [{"id": 9, "text": "3.", "bbox": {"l": 136.8, "t": 506.56863, "r": 145.17432, "b": 515.78162, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Compare the advised indexes that are provided by the Optimizer without RCAC and with ", "bbox": {"l": 147.96574, "t": 506.56863, "r": 543.63715, "b": 515.78162, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "RCAC enabled. Figure 4-69 shows the index advice for the SQL statement without RCAC ", "bbox": {"l": 151.20016, "t": 518.56845, "r": 547.23944, "b": 527.78143, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "enabled. The index being advised is for the ORDER BY clause.", "bbox": {"l": 151.20016, "t": 530.5682400000001, "r": 430.28333, "b": 539.78125, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 64.35660552978516, "t": 666.6797485351562, "r": 227.347412109375, "b": 675.9388427734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9514287114143372, "cells": [{"id": 13, "text": "Figure 4-69 Index advice with no RCAC", "bbox": {"l": 64.800003, "t": 667.5179, "r": 227.10149, "b": 675.8429, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "picture", "bbox": {"l": 136.5016632080078, "t": 119.2491226196289, "r": 545.4508666992188, "b": 477.5412292480469, "coord_origin": "TOPLEFT"}, "confidence": 0.9864527583122253, "cells": []}, {"id": 7, "label": "picture", "bbox": {"l": 64.27847290039062, "t": 553.5813598632812, "r": 506.39263916015625, "b": 664.0870361328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9797717928886414, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 92, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.30316162109375, "t": 754.7198486328125, "r": 523.59357, "b": 764.0086669921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9557602405548096, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 92, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.3654174804688, "t": 754.280029296875, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9056527614593506, "cells": [{"id": 1, "text": "77", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "77"}, {"label": "list_item", "id": 2, "page_no": 92, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.00341796875, "t": 70.4630355834961, "r": 514.04858, "b": 104.82832336425781, "coord_origin": "TOPLEFT"}, "confidence": 0.9761855006217957, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.19554, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 4-68 shows the Visual Explain of the same SQL statement, but with RCAC ", "bbox": {"l": 147.9942, "t": 71.50903000000005, "r": 513.35919, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "enabled. It is clear that the implementation of the SQL statement is more complex ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 514.04858, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "because the row permission rule becomes part of the ", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 389.64822, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "WHERE", "bbox": {"l": 389.57941, "t": 95.65808000000015, "r": 414.53918, "b": 104.48266999999998, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " clause.", "bbox": {"l": 414.59991, "t": 95.50867000000005, "r": 448.8892200000001, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "2. Figure 4-68 shows the Visual Explain of the same SQL statement, but with RCAC enabled. It is clear that the implementation of the SQL statement is more complex because the row permission rule becomes part of the WHERE clause."}, {"label": "caption", "id": 3, "page_no": 92, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.9990692138672, "t": 480.2080078125, "r": 327.9913635253906, "b": 489.21875, "coord_origin": "TOPLEFT"}, "confidence": 0.9529653191566467, "cells": [{"id": 8, "text": "Figure 4-68 Visual Explain with RCAC enabled", "bbox": {"l": 136.8, "t": 480.55798, "r": 327.09329, "b": 488.883, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-68 Visual Explain with RCAC enabled"}, {"label": "list_item", "id": 4, "page_no": 92, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.2928924560547, "t": 505.9650573730469, "r": 547.23944, "b": 540.0134887695312, "coord_origin": "TOPLEFT"}, "confidence": 0.9766737818717957, "cells": [{"id": 9, "text": "3.", "bbox": {"l": 136.8, "t": 506.56863, "r": 145.17432, "b": 515.78162, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Compare the advised indexes that are provided by the Optimizer without RCAC and with ", "bbox": {"l": 147.96574, "t": 506.56863, "r": 543.63715, "b": 515.78162, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "RCAC enabled. Figure 4-69 shows the index advice for the SQL statement without RCAC ", "bbox": {"l": 151.20016, "t": 518.56845, "r": 547.23944, "b": 527.78143, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "enabled. The index being advised is for the ORDER BY clause.", "bbox": {"l": 151.20016, "t": 530.5682400000001, "r": 430.28333, "b": 539.78125, "coord_origin": "TOPLEFT"}}]}, "text": "3. Compare the advised indexes that are provided by the Optimizer without RCAC and with RCAC enabled. Figure 4-69 shows the index advice for the SQL statement without RCAC enabled. The index being advised is for the ORDER BY clause."}, {"label": "caption", "id": 5, "page_no": 92, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.35660552978516, "t": 666.6797485351562, "r": 227.347412109375, "b": 675.9388427734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9514287114143372, "cells": [{"id": 13, "text": "Figure 4-69 Index advice with no RCAC", "bbox": {"l": 64.800003, "t": 667.5179, "r": 227.10149, "b": 675.8429, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-69 Index advice with no RCAC"}, {"label": "picture", "id": 6, "page_no": 92, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 136.5016632080078, "t": 119.2491226196289, "r": 545.4508666992188, "b": 477.5412292480469, "coord_origin": "TOPLEFT"}, "confidence": 0.9864527583122253, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 7, "page_no": 92, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 64.27847290039062, "t": 553.5813598632812, "r": 506.39263916015625, "b": 664.0870361328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9797717928886414, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 92, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.00341796875, "t": 70.4630355834961, "r": 514.04858, "b": 104.82832336425781, "coord_origin": "TOPLEFT"}, "confidence": 0.9761855006217957, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.19554, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 4-68 shows the Visual Explain of the same SQL statement, but with RCAC ", "bbox": {"l": 147.9942, "t": 71.50903000000005, "r": 513.35919, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "enabled. It is clear that the implementation of the SQL statement is more complex ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 514.04858, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "because the row permission rule becomes part of the ", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 389.64822, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "WHERE", "bbox": {"l": 389.57941, "t": 95.65808000000015, "r": 414.53918, "b": 104.48266999999998, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " clause.", "bbox": {"l": 414.59991, "t": 95.50867000000005, "r": 448.8892200000001, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "2. Figure 4-68 shows the Visual Explain of the same SQL statement, but with RCAC enabled. It is clear that the implementation of the SQL statement is more complex because the row permission rule becomes part of the WHERE clause."}, {"label": "caption", "id": 3, "page_no": 92, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.9990692138672, "t": 480.2080078125, "r": 327.9913635253906, "b": 489.21875, "coord_origin": "TOPLEFT"}, "confidence": 0.9529653191566467, "cells": [{"id": 8, "text": "Figure 4-68 Visual Explain with RCAC enabled", "bbox": {"l": 136.8, "t": 480.55798, "r": 327.09329, "b": 488.883, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-68 Visual Explain with RCAC enabled"}, {"label": "list_item", "id": 4, "page_no": 92, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.2928924560547, "t": 505.9650573730469, "r": 547.23944, "b": 540.0134887695312, "coord_origin": "TOPLEFT"}, "confidence": 0.9766737818717957, "cells": [{"id": 9, "text": "3.", "bbox": {"l": 136.8, "t": 506.56863, "r": 145.17432, "b": 515.78162, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Compare the advised indexes that are provided by the Optimizer without RCAC and with ", "bbox": {"l": 147.96574, "t": 506.56863, "r": 543.63715, "b": 515.78162, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "RCAC enabled. Figure 4-69 shows the index advice for the SQL statement without RCAC ", "bbox": {"l": 151.20016, "t": 518.56845, "r": 547.23944, "b": 527.78143, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "enabled. The index being advised is for the ORDER BY clause.", "bbox": {"l": 151.20016, "t": 530.5682400000001, "r": 430.28333, "b": 539.78125, "coord_origin": "TOPLEFT"}}]}, "text": "3. Compare the advised indexes that are provided by the Optimizer without RCAC and with RCAC enabled. Figure 4-69 shows the index advice for the SQL statement without RCAC enabled. The index being advised is for the ORDER BY clause."}, {"label": "caption", "id": 5, "page_no": 92, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.35660552978516, "t": 666.6797485351562, "r": 227.347412109375, "b": 675.9388427734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9514287114143372, "cells": [{"id": 13, "text": "Figure 4-69 Index advice with no RCAC", "bbox": {"l": 64.800003, "t": 667.5179, "r": 227.10149, "b": 675.8429, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-69 Index advice with no RCAC"}, {"label": "picture", "id": 6, "page_no": 92, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 136.5016632080078, "t": 119.2491226196289, "r": 545.4508666992188, "b": 477.5412292480469, "coord_origin": "TOPLEFT"}, "confidence": 0.9864527583122253, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 7, "page_no": 92, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 64.27847290039062, "t": 553.5813598632812, "r": 506.39263916015625, "b": 664.0870361328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9797717928886414, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 92, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.30316162109375, "t": 754.7198486328125, "r": 523.59357, "b": 764.0086669921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9557602405548096, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 92, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.3654174804688, "t": 754.280029296875, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9056527614593506, "cells": [{"id": 1, "text": "77", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "77"}]}}, {"page_no": 93, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "78 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "4.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.03265, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Now, look at the advised indexes with RCAC enabled. As shown in Figure 4-70, there is an ", "bbox": {"l": 147.77686, "t": 71.50867000000005, "r": 547.18872, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "additional index being advised, which is basically for the row permission rule. For more ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 535.9599, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "information, see 6.4.2, \u201cIndex advisor\u201d on page 99.", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 374.21558, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Figure 4-70 Index advice with RCAC enabled", "bbox": {"l": 64.800003, "t": 238.63800000000003, "r": 248.88689000000002, "b": 246.96294999999998, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.94062805175781, "t": 754.1842651367188, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9147760272026062, "cells": [{"id": 0, "text": "78 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.33392333984375, "t": 754.6708374023438, "r": 334.42142, "b": 763.9481811523438, "coord_origin": "TOPLEFT"}, "confidence": 0.9523293972015381, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 135.9367218017578, "t": 70.61515045166016, "r": 547.18872, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9803981184959412, "cells": [{"id": 2, "text": "4.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.03265, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Now, look at the advised indexes with RCAC enabled. As shown in Figure 4-70, there is an ", "bbox": {"l": 147.77686, "t": 71.50867000000005, "r": 547.18872, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "additional index being advised, which is basically for the row permission rule. For more ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 535.9599, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "information, see 6.4.2, \u201cIndex advisor\u201d on page 99.", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 374.21558, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.2020263671875, "t": 238.3303680419922, "r": 249.87530517578125, "b": 247.58013916015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9492548704147339, "cells": [{"id": 6, "text": "Figure 4-70 Index advice with RCAC enabled", "bbox": {"l": 64.800003, "t": 238.63800000000003, "r": 248.88689000000002, "b": 246.96294999999998, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "picture", "bbox": {"l": 64.13593292236328, "t": 119.456298828125, "r": 508.70513916015625, "b": 234.94915771484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9820812344551086, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 93, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.94062805175781, "t": 754.1842651367188, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9147760272026062, "cells": [{"id": 0, "text": "78 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "78"}, {"label": "page_footer", "id": 1, "page_no": 93, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.33392333984375, "t": 754.6708374023438, "r": 334.42142, "b": 763.9481811523438, "coord_origin": "TOPLEFT"}, "confidence": 0.9523293972015381, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "list_item", "id": 2, "page_no": 93, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.9367218017578, "t": 70.61515045166016, "r": 547.18872, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9803981184959412, "cells": [{"id": 2, "text": "4.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.03265, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Now, look at the advised indexes with RCAC enabled. As shown in Figure 4-70, there is an ", "bbox": {"l": 147.77686, "t": 71.50867000000005, "r": 547.18872, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "additional index being advised, which is basically for the row permission rule. For more ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 535.9599, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "information, see 6.4.2, \u201cIndex advisor\u201d on page 99.", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 374.21558, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}]}, "text": "4. Now, look at the advised indexes with RCAC enabled. As shown in Figure 4-70, there is an additional index being advised, which is basically for the row permission rule. For more information, see 6.4.2, \u201cIndex advisor\u201d on page 99."}, {"label": "caption", "id": 3, "page_no": 93, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.2020263671875, "t": 238.3303680419922, "r": 249.87530517578125, "b": 247.58013916015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9492548704147339, "cells": [{"id": 6, "text": "Figure 4-70 Index advice with RCAC enabled", "bbox": {"l": 64.800003, "t": 238.63800000000003, "r": 248.88689000000002, "b": 246.96294999999998, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-70 Index advice with RCAC enabled"}, {"label": "picture", "id": 4, "page_no": 93, "cluster": {"id": 4, "label": "picture", "bbox": {"l": 64.13593292236328, "t": 119.456298828125, "r": 508.70513916015625, "b": 234.94915771484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9820812344551086, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 93, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.9367218017578, "t": 70.61515045166016, "r": 547.18872, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9803981184959412, "cells": [{"id": 2, "text": "4.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.03265, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Now, look at the advised indexes with RCAC enabled. As shown in Figure 4-70, there is an ", "bbox": {"l": 147.77686, "t": 71.50867000000005, "r": 547.18872, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "additional index being advised, which is basically for the row permission rule. For more ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 535.9599, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "information, see 6.4.2, \u201cIndex advisor\u201d on page 99.", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 374.21558, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}]}, "text": "4. Now, look at the advised indexes with RCAC enabled. As shown in Figure 4-70, there is an additional index being advised, which is basically for the row permission rule. For more information, see 6.4.2, \u201cIndex advisor\u201d on page 99."}, {"label": "caption", "id": 3, "page_no": 93, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.2020263671875, "t": 238.3303680419922, "r": 249.87530517578125, "b": 247.58013916015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9492548704147339, "cells": [{"id": 6, "text": "Figure 4-70 Index advice with RCAC enabled", "bbox": {"l": 64.800003, "t": 238.63800000000003, "r": 248.88689000000002, "b": 246.96294999999998, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-70 Index advice with RCAC enabled"}, {"label": "picture", "id": 4, "page_no": 93, "cluster": {"id": 4, "label": "picture", "bbox": {"l": 64.13593292236328, "t": 119.456298828125, "r": 508.70513916015625, "b": 234.94915771484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9820812344551086, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 93, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.94062805175781, "t": 754.1842651367188, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9147760272026062, "cells": [{"id": 0, "text": "78 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "78"}, {"label": "page_footer", "id": 1, "page_no": 93, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.33392333984375, "t": 754.6708374023438, "r": 334.42142, "b": 763.9481811523438, "coord_origin": "TOPLEFT"}, "confidence": 0.9523293972015381, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 94, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "79", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Chapter 5.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "RCAC and non-SQL interfaces", "bbox": {"l": 136.8, "t": 254.88635, "r": 511.1796, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "A benefit of Row and Column Access Control (RCAC) is that its security controls are enforced ", "bbox": {"l": 136.8, "t": 317.68872, "r": 547.18188, "b": 326.90170000000006, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "across all the interfaces that access DB2 for i because the security rules are defined and ", "bbox": {"l": 136.8, "t": 329.68854, "r": 530.37024, "b": 338.90152, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "enforced at the database level. The examples that are shown in this paper focus on ", "bbox": {"l": 136.8, "t": 341.68835, "r": 506.3607799999999, "b": 350.90134, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "SQL-based access, but row permissions and column masks also are enforced for non-SQL ", "bbox": {"l": 136.8, "t": 353.68817, "r": 540.88196, "b": 362.90115, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "interfaces, such as native record-level access in RPG and COBOL programs and CL ", "bbox": {"l": 136.8, "t": 365.68799, "r": 512.052, "b": 374.90097, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "commands, such as Display Physical File Member (", "bbox": {"l": 136.8, "t": 377.68781, "r": 364.92484, "b": 386.90079, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "DSPPFM", "bbox": {"l": 364.86011, "t": 377.83718999999996, "r": 394.85962, "b": 386.66177, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": ") and Copy File (", "bbox": {"l": 394.85962, "t": 377.68781, "r": 468.42514, "b": 386.90079, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CPYF", "bbox": {"l": 468.41919000000007, "t": 377.83718999999996, "r": 488.39893, "b": 386.66177, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": ").", "bbox": {"l": 488.39896, "t": 377.68781, "r": 494.57016, "b": 386.90079, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "This consistent enforcement across all interfaces is a good thing, but there are some nuances ", "bbox": {"l": 136.79898, "t": 399.70737, "r": 547.25549, "b": 408.92035, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "and restrictions as a result of applying an SQL-based technology such as RCAC to non-SQL ", "bbox": {"l": 136.799, "t": 411.70717999999994, "r": 547.1532, "b": 420.9201699999999, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "interfaces. These considerations are described in this chapter.", "bbox": {"l": 136.799, "t": 423.70700000000005, "r": 411.01178, "b": 432.91998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "The following topics are covered in this chapter in this chapter:", "bbox": {"l": 136.799, "t": 445.72656, "r": 412.43704, "b": 454.9395400000001, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "GLYPH", "bbox": {"l": 136.799, "t": 462.85574, "r": 141.77899, "b": 471.63052, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Unsupported interfaces", "bbox": {"l": 151.19916, "t": 462.70636, "r": 254.56697, "b": 471.91934, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "GLYPH", "bbox": {"l": 136.799, "t": 474.85556, "r": 141.77899, "b": 483.63034, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Native query result differences", "bbox": {"l": 151.19916, "t": 474.70618, "r": 285.97983, "b": 483.91916, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "GLYPH", "bbox": {"l": 136.799, "t": 486.85538, "r": 141.77899, "b": 495.63016, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Accidental updates with masked values", "bbox": {"l": 151.19916, "t": 486.70599, "r": 325.08792, "b": 495.91898, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "GLYPH", "bbox": {"l": 136.799, "t": 498.85519, "r": 141.77899, "b": 507.62997, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "System CL commands considerations", "bbox": {"l": 151.19916, "t": 498.70581, "r": 318.95844, "b": 507.91879, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "5", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.744651794433594, "t": 754.7680053710938, "r": 257.24335, "b": 764.091796875, "coord_origin": "TOPLEFT"}, "confidence": 0.949221134185791, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.3575439453125, "t": 754.22607421875, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9138334393501282, "cells": [{"id": 1, "text": "79", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 5.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "section_header", "bbox": {"l": 136.8, "t": 253.33033752441406, "r": 511.1796, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9421312808990479, "cells": [{"id": 3, "text": "RCAC and non-SQL interfaces", "bbox": {"l": 136.8, "t": 254.88635, "r": 511.1796, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.93673706054688, "t": 316.58636474609375, "r": 547.18188, "b": 386.9336242675781, "coord_origin": "TOPLEFT"}, "confidence": 0.9848811626434326, "cells": [{"id": 4, "text": "A benefit of Row and Column Access Control (RCAC) is that its security controls are enforced ", "bbox": {"l": 136.8, "t": 317.68872, "r": 547.18188, "b": 326.90170000000006, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "across all the interfaces that access DB2 for i because the security rules are defined and ", "bbox": {"l": 136.8, "t": 329.68854, "r": 530.37024, "b": 338.90152, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "enforced at the database level. The examples that are shown in this paper focus on ", "bbox": {"l": 136.8, "t": 341.68835, "r": 506.3607799999999, "b": 350.90134, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "SQL-based access, but row permissions and column masks also are enforced for non-SQL ", "bbox": {"l": 136.8, "t": 353.68817, "r": 540.88196, "b": 362.90115, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "interfaces, such as native record-level access in RPG and COBOL programs and CL ", "bbox": {"l": 136.8, "t": 365.68799, "r": 512.052, "b": 374.90097, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "commands, such as Display Physical File Member (", "bbox": {"l": 136.8, "t": 377.68781, "r": 364.92484, "b": 386.90079, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "DSPPFM", "bbox": {"l": 364.86011, "t": 377.83718999999996, "r": 394.85962, "b": 386.66177, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": ") and Copy File (", "bbox": {"l": 394.85962, "t": 377.68781, "r": 468.42514, "b": 386.90079, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CPYF", "bbox": {"l": 468.41919000000007, "t": 377.83718999999996, "r": 488.39893, "b": 386.66177, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": ").", "bbox": {"l": 488.39896, "t": 377.68781, "r": 494.57016, "b": 386.90079, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.76991271972656, "t": 398.7801208496094, "r": 547.25549, "b": 432.91998, "coord_origin": "TOPLEFT"}, "confidence": 0.981573224067688, "cells": [{"id": 14, "text": "This consistent enforcement across all interfaces is a good thing, but there are some nuances ", "bbox": {"l": 136.79898, "t": 399.70737, "r": 547.25549, "b": 408.92035, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "and restrictions as a result of applying an SQL-based technology such as RCAC to non-SQL ", "bbox": {"l": 136.799, "t": 411.70717999999994, "r": 547.1532, "b": 420.9201699999999, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "interfaces. These considerations are described in this chapter.", "bbox": {"l": 136.799, "t": 423.70700000000005, "r": 411.01178, "b": 432.91998, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 136.10678100585938, "t": 444.8198547363281, "r": 412.43704, "b": 454.9395400000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9355656504631042, "cells": [{"id": 17, "text": "The following topics are covered in this chapter in this chapter:", "bbox": {"l": 136.799, "t": 445.72656, "r": 412.43704, "b": 454.9395400000001, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.8011016845703, "t": 462.3359680175781, "r": 254.56697, "b": 472.4132080078125, "coord_origin": "TOPLEFT"}, "confidence": 0.946121335029602, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.799, "t": 462.85574, "r": 141.77899, "b": 471.63052, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Unsupported interfaces", "bbox": {"l": 151.19916, "t": 462.70636, "r": 254.56697, "b": 471.91934, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.7434844970703, "t": 474.6011657714844, "r": 285.9834289550781, "b": 483.91916, "coord_origin": "TOPLEFT"}, "confidence": 0.9351681470870972, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.799, "t": 474.85556, "r": 141.77899, "b": 483.63034, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Native query result differences", "bbox": {"l": 151.19916, "t": 474.70618, "r": 285.97983, "b": 483.91916, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.7656707763672, "t": 485.91131591796875, "r": 325.08792, "b": 495.91898, "coord_origin": "TOPLEFT"}, "confidence": 0.9449910521507263, "cells": [{"id": 22, "text": "GLYPH", "bbox": {"l": 136.799, "t": 486.85538, "r": 141.77899, "b": 495.63016, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Accidental updates with masked values", "bbox": {"l": 151.19916, "t": 486.70599, "r": 325.08792, "b": 495.91898, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 135.72933959960938, "t": 498.2069091796875, "r": 318.95844, "b": 508.3310852050781, "coord_origin": "TOPLEFT"}, "confidence": 0.9523792862892151, "cells": [{"id": 24, "text": "GLYPH", "bbox": {"l": 136.799, "t": 498.85519, "r": 141.77899, "b": 507.62997, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "System CL commands considerations", "bbox": {"l": 151.19916, "t": 498.70581, "r": 318.95844, "b": 507.91879, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.6404241919517517, "cells": [{"id": 26, "text": "5", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "picture", "bbox": {"l": 32.17748260498047, "t": 70.54951477050781, "r": 239.63507080078125, "b": 238.013427734375, "coord_origin": "TOPLEFT"}, "confidence": 0.7029868960380554, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 94, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.744651794433594, "t": 754.7680053710938, "r": 257.24335, "b": 764.091796875, "coord_origin": "TOPLEFT"}, "confidence": 0.949221134185791, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 94, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.3575439453125, "t": 754.22607421875, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9138334393501282, "cells": [{"id": 1, "text": "79", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "79"}, {"label": "text", "id": 2, "page_no": 94, "cluster": {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 5.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 5."}, {"label": "section_header", "id": 3, "page_no": 94, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 136.8, "t": 253.33033752441406, "r": 511.1796, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9421312808990479, "cells": [{"id": 3, "text": "RCAC and non-SQL interfaces", "bbox": {"l": 136.8, "t": 254.88635, "r": 511.1796, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}]}, "text": "RCAC and non-SQL interfaces"}, {"label": "text", "id": 4, "page_no": 94, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.93673706054688, "t": 316.58636474609375, "r": 547.18188, "b": 386.9336242675781, "coord_origin": "TOPLEFT"}, "confidence": 0.9848811626434326, "cells": [{"id": 4, "text": "A benefit of Row and Column Access Control (RCAC) is that its security controls are enforced ", "bbox": {"l": 136.8, "t": 317.68872, "r": 547.18188, "b": 326.90170000000006, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "across all the interfaces that access DB2 for i because the security rules are defined and ", "bbox": {"l": 136.8, "t": 329.68854, "r": 530.37024, "b": 338.90152, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "enforced at the database level. The examples that are shown in this paper focus on ", "bbox": {"l": 136.8, "t": 341.68835, "r": 506.3607799999999, "b": 350.90134, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "SQL-based access, but row permissions and column masks also are enforced for non-SQL ", "bbox": {"l": 136.8, "t": 353.68817, "r": 540.88196, "b": 362.90115, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "interfaces, such as native record-level access in RPG and COBOL programs and CL ", "bbox": {"l": 136.8, "t": 365.68799, "r": 512.052, "b": 374.90097, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "commands, such as Display Physical File Member (", "bbox": {"l": 136.8, "t": 377.68781, "r": 364.92484, "b": 386.90079, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "DSPPFM", "bbox": {"l": 364.86011, "t": 377.83718999999996, "r": 394.85962, "b": 386.66177, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": ") and Copy File (", "bbox": {"l": 394.85962, "t": 377.68781, "r": 468.42514, "b": 386.90079, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CPYF", "bbox": {"l": 468.41919000000007, "t": 377.83718999999996, "r": 488.39893, "b": 386.66177, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": ").", "bbox": {"l": 488.39896, "t": 377.68781, "r": 494.57016, "b": 386.90079, "coord_origin": "TOPLEFT"}}]}, "text": "A benefit of Row and Column Access Control (RCAC) is that its security controls are enforced across all the interfaces that access DB2 for i because the security rules are defined and enforced at the database level. The examples that are shown in this paper focus on SQL-based access, but row permissions and column masks also are enforced for non-SQL interfaces, such as native record-level access in RPG and COBOL programs and CL commands, such as Display Physical File Member ( DSPPFM ) and Copy File ( CPYF )."}, {"label": "text", "id": 5, "page_no": 94, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.76991271972656, "t": 398.7801208496094, "r": 547.25549, "b": 432.91998, "coord_origin": "TOPLEFT"}, "confidence": 0.981573224067688, "cells": [{"id": 14, "text": "This consistent enforcement across all interfaces is a good thing, but there are some nuances ", "bbox": {"l": 136.79898, "t": 399.70737, "r": 547.25549, "b": 408.92035, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "and restrictions as a result of applying an SQL-based technology such as RCAC to non-SQL ", "bbox": {"l": 136.799, "t": 411.70717999999994, "r": 547.1532, "b": 420.9201699999999, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "interfaces. These considerations are described in this chapter.", "bbox": {"l": 136.799, "t": 423.70700000000005, "r": 411.01178, "b": 432.91998, "coord_origin": "TOPLEFT"}}]}, "text": "This consistent enforcement across all interfaces is a good thing, but there are some nuances and restrictions as a result of applying an SQL-based technology such as RCAC to non-SQL interfaces. These considerations are described in this chapter."}, {"label": "text", "id": 6, "page_no": 94, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.10678100585938, "t": 444.8198547363281, "r": 412.43704, "b": 454.9395400000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9355656504631042, "cells": [{"id": 17, "text": "The following topics are covered in this chapter in this chapter:", "bbox": {"l": 136.799, "t": 445.72656, "r": 412.43704, "b": 454.9395400000001, "coord_origin": "TOPLEFT"}}]}, "text": "The following topics are covered in this chapter in this chapter:"}, {"label": "list_item", "id": 7, "page_no": 94, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.8011016845703, "t": 462.3359680175781, "r": 254.56697, "b": 472.4132080078125, "coord_origin": "TOPLEFT"}, "confidence": 0.946121335029602, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.799, "t": 462.85574, "r": 141.77899, "b": 471.63052, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Unsupported interfaces", "bbox": {"l": 151.19916, "t": 462.70636, "r": 254.56697, "b": 471.91934, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Unsupported interfaces"}, {"label": "list_item", "id": 8, "page_no": 94, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.7434844970703, "t": 474.6011657714844, "r": 285.9834289550781, "b": 483.91916, "coord_origin": "TOPLEFT"}, "confidence": 0.9351681470870972, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.799, "t": 474.85556, "r": 141.77899, "b": 483.63034, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Native query result differences", "bbox": {"l": 151.19916, "t": 474.70618, "r": 285.97983, "b": 483.91916, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Native query result differences"}, {"label": "list_item", "id": 9, "page_no": 94, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.7656707763672, "t": 485.91131591796875, "r": 325.08792, "b": 495.91898, "coord_origin": "TOPLEFT"}, "confidence": 0.9449910521507263, "cells": [{"id": 22, "text": "GLYPH", "bbox": {"l": 136.799, "t": 486.85538, "r": 141.77899, "b": 495.63016, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Accidental updates with masked values", "bbox": {"l": 151.19916, "t": 486.70599, "r": 325.08792, "b": 495.91898, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Accidental updates with masked values"}, {"label": "list_item", "id": 10, "page_no": 94, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.72933959960938, "t": 498.2069091796875, "r": 318.95844, "b": 508.3310852050781, "coord_origin": "TOPLEFT"}, "confidence": 0.9523792862892151, "cells": [{"id": 24, "text": "GLYPH", "bbox": {"l": 136.799, "t": 498.85519, "r": 141.77899, "b": 507.62997, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "System CL commands considerations", "bbox": {"l": 151.19916, "t": 498.70581, "r": 318.95844, "b": 507.91879, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH System CL commands considerations"}, {"label": "text", "id": 11, "page_no": 94, "cluster": {"id": 11, "label": "text", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.6404241919517517, "cells": [{"id": 26, "text": "5", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, "text": "5"}, {"label": "picture", "id": 12, "page_no": 94, "cluster": {"id": 12, "label": "picture", "bbox": {"l": 32.17748260498047, "t": 70.54951477050781, "r": 239.63507080078125, "b": 238.013427734375, "coord_origin": "TOPLEFT"}, "confidence": 0.7029868960380554, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 94, "cluster": {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 5.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 5."}, {"label": "section_header", "id": 3, "page_no": 94, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 136.8, "t": 253.33033752441406, "r": 511.1796, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9421312808990479, "cells": [{"id": 3, "text": "RCAC and non-SQL interfaces", "bbox": {"l": 136.8, "t": 254.88635, "r": 511.1796, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}]}, "text": "RCAC and non-SQL interfaces"}, {"label": "text", "id": 4, "page_no": 94, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.93673706054688, "t": 316.58636474609375, "r": 547.18188, "b": 386.9336242675781, "coord_origin": "TOPLEFT"}, "confidence": 0.9848811626434326, "cells": [{"id": 4, "text": "A benefit of Row and Column Access Control (RCAC) is that its security controls are enforced ", "bbox": {"l": 136.8, "t": 317.68872, "r": 547.18188, "b": 326.90170000000006, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "across all the interfaces that access DB2 for i because the security rules are defined and ", "bbox": {"l": 136.8, "t": 329.68854, "r": 530.37024, "b": 338.90152, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "enforced at the database level. The examples that are shown in this paper focus on ", "bbox": {"l": 136.8, "t": 341.68835, "r": 506.3607799999999, "b": 350.90134, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "SQL-based access, but row permissions and column masks also are enforced for non-SQL ", "bbox": {"l": 136.8, "t": 353.68817, "r": 540.88196, "b": 362.90115, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "interfaces, such as native record-level access in RPG and COBOL programs and CL ", "bbox": {"l": 136.8, "t": 365.68799, "r": 512.052, "b": 374.90097, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "commands, such as Display Physical File Member (", "bbox": {"l": 136.8, "t": 377.68781, "r": 364.92484, "b": 386.90079, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "DSPPFM", "bbox": {"l": 364.86011, "t": 377.83718999999996, "r": 394.85962, "b": 386.66177, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": ") and Copy File (", "bbox": {"l": 394.85962, "t": 377.68781, "r": 468.42514, "b": 386.90079, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CPYF", "bbox": {"l": 468.41919000000007, "t": 377.83718999999996, "r": 488.39893, "b": 386.66177, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": ").", "bbox": {"l": 488.39896, "t": 377.68781, "r": 494.57016, "b": 386.90079, "coord_origin": "TOPLEFT"}}]}, "text": "A benefit of Row and Column Access Control (RCAC) is that its security controls are enforced across all the interfaces that access DB2 for i because the security rules are defined and enforced at the database level. The examples that are shown in this paper focus on SQL-based access, but row permissions and column masks also are enforced for non-SQL interfaces, such as native record-level access in RPG and COBOL programs and CL commands, such as Display Physical File Member ( DSPPFM ) and Copy File ( CPYF )."}, {"label": "text", "id": 5, "page_no": 94, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.76991271972656, "t": 398.7801208496094, "r": 547.25549, "b": 432.91998, "coord_origin": "TOPLEFT"}, "confidence": 0.981573224067688, "cells": [{"id": 14, "text": "This consistent enforcement across all interfaces is a good thing, but there are some nuances ", "bbox": {"l": 136.79898, "t": 399.70737, "r": 547.25549, "b": 408.92035, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "and restrictions as a result of applying an SQL-based technology such as RCAC to non-SQL ", "bbox": {"l": 136.799, "t": 411.70717999999994, "r": 547.1532, "b": 420.9201699999999, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "interfaces. These considerations are described in this chapter.", "bbox": {"l": 136.799, "t": 423.70700000000005, "r": 411.01178, "b": 432.91998, "coord_origin": "TOPLEFT"}}]}, "text": "This consistent enforcement across all interfaces is a good thing, but there are some nuances and restrictions as a result of applying an SQL-based technology such as RCAC to non-SQL interfaces. These considerations are described in this chapter."}, {"label": "text", "id": 6, "page_no": 94, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.10678100585938, "t": 444.8198547363281, "r": 412.43704, "b": 454.9395400000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9355656504631042, "cells": [{"id": 17, "text": "The following topics are covered in this chapter in this chapter:", "bbox": {"l": 136.799, "t": 445.72656, "r": 412.43704, "b": 454.9395400000001, "coord_origin": "TOPLEFT"}}]}, "text": "The following topics are covered in this chapter in this chapter:"}, {"label": "list_item", "id": 7, "page_no": 94, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.8011016845703, "t": 462.3359680175781, "r": 254.56697, "b": 472.4132080078125, "coord_origin": "TOPLEFT"}, "confidence": 0.946121335029602, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.799, "t": 462.85574, "r": 141.77899, "b": 471.63052, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Unsupported interfaces", "bbox": {"l": 151.19916, "t": 462.70636, "r": 254.56697, "b": 471.91934, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Unsupported interfaces"}, {"label": "list_item", "id": 8, "page_no": 94, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.7434844970703, "t": 474.6011657714844, "r": 285.9834289550781, "b": 483.91916, "coord_origin": "TOPLEFT"}, "confidence": 0.9351681470870972, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.799, "t": 474.85556, "r": 141.77899, "b": 483.63034, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Native query result differences", "bbox": {"l": 151.19916, "t": 474.70618, "r": 285.97983, "b": 483.91916, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Native query result differences"}, {"label": "list_item", "id": 9, "page_no": 94, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.7656707763672, "t": 485.91131591796875, "r": 325.08792, "b": 495.91898, "coord_origin": "TOPLEFT"}, "confidence": 0.9449910521507263, "cells": [{"id": 22, "text": "GLYPH", "bbox": {"l": 136.799, "t": 486.85538, "r": 141.77899, "b": 495.63016, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Accidental updates with masked values", "bbox": {"l": 151.19916, "t": 486.70599, "r": 325.08792, "b": 495.91898, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Accidental updates with masked values"}, {"label": "list_item", "id": 10, "page_no": 94, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.72933959960938, "t": 498.2069091796875, "r": 318.95844, "b": 508.3310852050781, "coord_origin": "TOPLEFT"}, "confidence": 0.9523792862892151, "cells": [{"id": 24, "text": "GLYPH", "bbox": {"l": 136.799, "t": 498.85519, "r": 141.77899, "b": 507.62997, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "System CL commands considerations", "bbox": {"l": 151.19916, "t": 498.70581, "r": 318.95844, "b": 507.91879, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH System CL commands considerations"}, {"label": "text", "id": 11, "page_no": 94, "cluster": {"id": 11, "label": "text", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.6404241919517517, "cells": [{"id": 26, "text": "5", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, "text": "5"}, {"label": "picture", "id": 12, "page_no": 94, "cluster": {"id": 12, "label": "picture", "bbox": {"l": 32.17748260498047, "t": 70.54951477050781, "r": 239.63507080078125, "b": 238.013427734375, "coord_origin": "TOPLEFT"}, "confidence": 0.7029868960380554, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 94, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.744651794433594, "t": 754.7680053710938, "r": 257.24335, "b": 764.091796875, "coord_origin": "TOPLEFT"}, "confidence": 0.949221134185791, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 94, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.3575439453125, "t": 754.22607421875, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9138334393501282, "cells": [{"id": 1, "text": "79", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "79"}]}}, {"page_no": 95, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "80 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "5.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.539185, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Unsupported interfaces", "bbox": {"l": 92.087021, "t": 74.34069999999997, "r": 275.70184, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "It is not possible to create a row permission or column mask on a distributed table or a ", "bbox": {"l": 136.8, "t": 106.6087, "r": 519.797, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "program-described file.", "bbox": {"l": 136.8, "t": 118.60852, "r": 238.85611, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "After a row permission or column mask is added to a table, there are some data access ", "bbox": {"l": 136.8, "t": 140.62811, "r": 525.55267, "b": 149.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "requests that no longer work. An attempt to open or query a table with activated RCAC ", "bbox": {"l": 136.8, "t": 152.62793, "r": 521.97815, "b": 161.84094000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "controls involving any of the following scenarios is rejected with the CPD43A4 error message:", "bbox": {"l": 136.8, "t": 164.62775, "r": 547.21381, "b": 173.84076000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 181.75696000000005, "r": 141.78001, "b": 190.53174, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "A logical file with multiple formats if the open attempt requests more than one format.", "bbox": {"l": 151.20018, "t": 181.60753999999997, "r": 526.03485, "b": 190.82056, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 193.75676999999996, "r": 141.78001, "b": 202.53156, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "A table or query that specifies an ICU 2.6.1 sort sequence.", "bbox": {"l": 151.20018, "t": 193.60735999999997, "r": 410.49484, "b": 202.82037000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 205.75658999999996, "r": 141.78001, "b": 214.53137000000004, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "A table with read triggers.", "bbox": {"l": 151.20018, "t": 205.60717999999997, "r": 264.33585, "b": 214.82019000000003, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "This unsupported interface error occurs when a table with RCAC controls is accessed, not ", "bbox": {"l": 136.80002, "t": 227.62676999999996, "r": 537.02081, "b": 236.83978000000002, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "when the RCAC control is created and activated.", "bbox": {"l": 136.80002, "t": 239.62658999999996, "r": 351.88031, "b": 248.83960000000002, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "For example, assume that there is a physical file, PF1, which is referenced by a single format ", "bbox": {"l": 136.80002, "t": 261.64617999999996, "r": 547.27563, "b": 270.85919, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "logical file (LFS) and a multi-format logical file (LFM). A row permission is successfully ", "bbox": {"l": 136.80002, "t": 273.64599999999996, "r": 519.41534, "b": 282.85900999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "created and activated for PF1. Any application that accesses PF1 directly or LFS continues to ", "bbox": {"l": 136.79901, "t": 285.6458400000001, "r": 547.23773, "b": 294.85883000000007, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "work without any issues. However, any application that opens LFM with multiple formats ", "bbox": {"l": 136.79901, "t": 297.64566, "r": 526.68823, "b": 306.85864, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "receives an error on the open attempt after the row permission is activated for PF1.", "bbox": {"l": 136.79901, "t": 309.64548, "r": 503.38181, "b": 318.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "5.2", "bbox": {"l": 64.800003, "t": 416.34069999999997, "r": 87.404282, "b": 431.1037, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Native query result differences", "bbox": {"l": 91.925117, "t": 416.34069999999997, "r": 329.61151, "b": 431.1037, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "The SQL Query Engine (SQE) is the only engine that is enhanced by IBM to enforce RCAC ", "bbox": {"l": 136.8, "t": 448.60873, "r": 542.39417, "b": 457.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "controls on query requests. In order for native query requests to work with RCAC, these ", "bbox": {"l": 136.8, "t": 460.60855, "r": 526.14728, "b": 469.82153, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "native query requests are now processed by SQE instead of the Classic Query Engine ", "bbox": {"l": 136.8, "t": 472.60837, "r": 521.31879, "b": 481.82135, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "(CQE). Native query requests can consist of the following items:", "bbox": {"l": 136.8, "t": 484.60818, "r": 419.14819, "b": 493.82117, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "GLYPH", "bbox": {"l": 136.8, "t": 501.79715, "r": 141.78, "b": 510.57193, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Query/400", "bbox": {"l": 151.20016, "t": 501.64777, "r": 198.17549, "b": 510.86075, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "GLYPH", "bbox": {"l": 136.8, "t": 513.79697, "r": 141.78, "b": 522.5717500000001, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "QQQQRY API", "bbox": {"l": 151.20016, "t": 513.6475800000001, "r": 214.61249, "b": 522.86057, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "GLYPH", "bbox": {"l": 136.8, "t": 525.79678, "r": 141.78, "b": 534.57156, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Open Query File (", "bbox": {"l": 151.20016, "t": 525.6474000000001, "r": 230.89011, "b": 534.8603800000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "OPNQRYF", "bbox": {"l": 230.93991000000003, "t": 525.79678, "r": 265.85968, "b": 534.6213700000001, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": ") command", "bbox": {"l": 265.92041, "t": 525.6474000000001, "r": 315.8399, "b": 534.8603800000001, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "GLYPH", "bbox": {"l": 136.79997, "t": 537.7966, "r": 141.77997, "b": 546.5713499999999, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Run Query (", "bbox": {"l": 151.20013, "t": 537.6472, "r": 205.94926, "b": 546.8602, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "RUNQRY", "bbox": {"l": 205.92038, "t": 537.7966, "r": 235.91989, "b": 546.62115, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": ") command", "bbox": {"l": 235.91991, "t": 537.6472, "r": 285.85736, "b": 546.8602, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "GLYPH", "bbox": {"l": 136.79997, "t": 549.7964, "r": 141.77997, "b": 558.57115, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Native open (RPG, COBOL, OPNDBF, and so on) of an SQL view", "bbox": {"l": 151.20013, "t": 549.6469999999999, "r": 441.4704, "b": 558.86, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Legacy queries that have been running without any issues for many years and over many", "bbox": {"l": 136.79997, "t": 571.66656, "r": 530.37244, "b": 580.87956, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "IBM i releases are now processed by a different query engine. As a result, the runtime ", "bbox": {"l": 136.79997, "t": 583.66637, "r": 519.22693, "b": 592.87936, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "behavior and results that are returned can be different for native query requests with RCAC ", "bbox": {"l": 136.79997, "t": 595.66617, "r": 541.63519, "b": 604.8791699999999, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "enabled. The ", "bbox": {"l": 136.79997, "t": 607.66597, "r": 197.70737, "b": 616.87897, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "OPNQRYF", "bbox": {"l": 197.70039, "t": 607.81537, "r": 232.67992000000004, "b": 616.6399200000001, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": " command and Query/400 run with SQE by default.", "bbox": {"l": 232.68091, "t": 607.66597, "r": 458.73212, "b": 616.87897, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "The following list documents some of the query output differences that can occur when native ", "bbox": {"l": 136.80096, "t": 629.62578, "r": 547.28345, "b": 638.83878, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "query requests are processed by CQE:", "bbox": {"l": 136.80096, "t": 641.62558, "r": 309.73151, "b": 650.83858, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 658.81454, "r": 141.78096, "b": 667.5893, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Different ordering in the result set", "bbox": {"l": 151.20113, "t": 658.66515, "r": 298.89197, "b": 667.87814, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 670.81435, "r": 141.78096, "b": 679.58911, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "Different values for null columns or columns with errors", "bbox": {"l": 151.20113, "t": 670.66495, "r": 393.49902, "b": 679.87795, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 682.81416, "r": 141.78096, "b": 691.58892, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Suppression of some mapping error messages", "bbox": {"l": 151.20113, "t": 682.66476, "r": 358.48862, "b": 691.87776, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 694.813972, "r": 141.78096, "b": 703.5887299999999, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "Loss of RRN positioning capabilities", "bbox": {"l": 151.20113, "t": 694.664566, "r": 310.57407, "b": 703.877571, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 706.813782, "r": 141.78096, "b": 715.588539, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "Duplicate key processing behavior differences", "bbox": {"l": 151.20113, "t": 706.6643750000001, "r": 354.20792, "b": 715.87738, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 718.813591, "r": 141.78096, "b": 727.588348, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Missing key feedback", "bbox": {"l": 151.20113, "t": 718.664185, "r": 245.8849, "b": 727.87719, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "Important:", "bbox": {"l": 142.8, "t": 337.60873, "r": 192.41673, "b": 346.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": " This potential runtime error places a heavy emphasis on a comprehensive ", "bbox": {"l": 192.41974, "t": 337.60873, "r": 524.8606, "b": 346.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "testing plan to ensure that all programs are tested. If testing uncovers an unsupported ", "bbox": {"l": 142.80002, "t": 349.60855, "r": 524.34381, "b": 358.82153, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "interface, then you must investigate whether the application can be rewritten to use a data ", "bbox": {"l": 142.80002, "t": 361.60837, "r": 541.237, "b": 370.82134999999994, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "access interface that is supported by RCAC.", "bbox": {"l": 142.80002, "t": 373.60818000000006, "r": 338.13461, "b": 382.82117000000005, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.1874008178711, "t": 754.3892211914062, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9252743721008301, "cells": [{"id": 0, "text": "80 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.2634048461914, "t": 754.6898193359375, "r": 334.42142, "b": 763.9056396484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9558761715888977, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.43855285644531, "t": 73.36776733398438, "r": 275.70184, "b": 89.5892105102539, "coord_origin": "TOPLEFT"}, "confidence": 0.9696915745735168, "cells": [{"id": 2, "text": "5.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.539185, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Unsupported interfaces", "bbox": {"l": 92.087021, "t": 74.34069999999997, "r": 275.70184, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 136.1591339111328, "t": 105.93167114257812, "r": 519.797, "b": 128.38632202148438, "coord_origin": "TOPLEFT"}, "confidence": 0.9809359312057495, "cells": [{"id": 4, "text": "It is not possible to create a row permission or column mask on a distributed table or a ", "bbox": {"l": 136.8, "t": 106.6087, "r": 519.797, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "program-described file.", "bbox": {"l": 136.8, "t": 118.60852, "r": 238.85611, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.89776611328125, "t": 140.08090209960938, "r": 547.21381, "b": 174.56727600097656, "coord_origin": "TOPLEFT"}, "confidence": 0.9822454452514648, "cells": [{"id": 6, "text": "After a row permission or column mask is added to a table, there are some data access ", "bbox": {"l": 136.8, "t": 140.62811, "r": 525.55267, "b": 149.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "requests that no longer work. An attempt to open or query a table with activated RCAC ", "bbox": {"l": 136.8, "t": 152.62793, "r": 521.97815, "b": 161.84094000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "controls involving any of the following scenarios is rejected with the CPD43A4 error message:", "bbox": {"l": 136.8, "t": 164.62775, "r": 547.21381, "b": 173.84076000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 135.5338592529297, "t": 180.65792846679688, "r": 526.03485, "b": 191.1039581298828, "coord_origin": "TOPLEFT"}, "confidence": 0.9507953524589539, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 181.75696000000005, "r": 141.78001, "b": 190.53174, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "A logical file with multiple formats if the open attempt requests more than one format.", "bbox": {"l": 151.20018, "t": 181.60753999999997, "r": 526.03485, "b": 190.82056, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.57638549804688, "t": 192.57815551757812, "r": 410.49484, "b": 203.17335510253906, "coord_origin": "TOPLEFT"}, "confidence": 0.9401845932006836, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 193.75676999999996, "r": 141.78001, "b": 202.53156, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "A table or query that specifies an ICU 2.6.1 sort sequence.", "bbox": {"l": 151.20018, "t": 193.60735999999997, "r": 410.49484, "b": 202.82037000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.51390075683594, "t": 205.0358123779297, "r": 264.33585, "b": 215.18972778320312, "coord_origin": "TOPLEFT"}, "confidence": 0.9484872221946716, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 205.75658999999996, "r": 141.78001, "b": 214.53137000000004, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "A table with read triggers.", "bbox": {"l": 151.20018, "t": 205.60717999999997, "r": 264.33585, "b": 214.82019000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 135.78880310058594, "t": 226.60470581054688, "r": 537.02081, "b": 248.83960000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9780105948448181, "cells": [{"id": 15, "text": "This unsupported interface error occurs when a table with RCAC controls is accessed, not ", "bbox": {"l": 136.80002, "t": 227.62676999999996, "r": 537.02081, "b": 236.83978000000002, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "when the RCAC control is created and activated.", "bbox": {"l": 136.80002, "t": 239.62658999999996, "r": 351.88031, "b": 248.83960000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 136.04721069335938, "t": 260.5085144042969, "r": 547.27563, "b": 318.8584599999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9873144030570984, "cells": [{"id": 17, "text": "For example, assume that there is a physical file, PF1, which is referenced by a single format ", "bbox": {"l": 136.80002, "t": 261.64617999999996, "r": 547.27563, "b": 270.85919, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "logical file (LFS) and a multi-format logical file (LFM). A row permission is successfully ", "bbox": {"l": 136.80002, "t": 273.64599999999996, "r": 519.41534, "b": 282.85900999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "created and activated for PF1. Any application that accesses PF1 directly or LFS continues to ", "bbox": {"l": 136.79901, "t": 285.6458400000001, "r": 547.23773, "b": 294.85883000000007, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "work without any issues. However, any application that opens LFM with multiple formats ", "bbox": {"l": 136.79901, "t": 297.64566, "r": 526.68823, "b": 306.85864, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "receives an error on the open attempt after the row permission is activated for PF1.", "bbox": {"l": 136.79901, "t": 309.64548, "r": 503.38181, "b": 318.8584599999999, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "section_header", "bbox": {"l": 64.47200012207031, "t": 415.3008117675781, "r": 329.61151, "b": 431.6415710449219, "coord_origin": "TOPLEFT"}, "confidence": 0.9681466221809387, "cells": [{"id": 22, "text": "5.2", "bbox": {"l": 64.800003, "t": 416.34069999999997, "r": 87.404282, "b": 431.1037, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Native query result differences", "bbox": {"l": 91.925117, "t": 416.34069999999997, "r": 329.61151, "b": 431.1037, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 135.66397094726562, "t": 447.6929626464844, "r": 542.39417, "b": 494.5770263671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9864740371704102, "cells": [{"id": 24, "text": "The SQL Query Engine (SQE) is the only engine that is enhanced by IBM to enforce RCAC ", "bbox": {"l": 136.8, "t": 448.60873, "r": 542.39417, "b": 457.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "controls on query requests. In order for native query requests to work with RCAC, these ", "bbox": {"l": 136.8, "t": 460.60855, "r": 526.14728, "b": 469.82153, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "native query requests are now processed by SQE instead of the Classic Query Engine ", "bbox": {"l": 136.8, "t": 472.60837, "r": 521.31879, "b": 481.82135, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "(CQE). Native query requests can consist of the following items:", "bbox": {"l": 136.8, "t": 484.60818, "r": 419.14819, "b": 493.82117, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "list_item", "bbox": {"l": 135.92169189453125, "t": 500.54949951171875, "r": 198.29859924316406, "b": 510.86075, "coord_origin": "TOPLEFT"}, "confidence": 0.9383296370506287, "cells": [{"id": 28, "text": "GLYPH", "bbox": {"l": 136.8, "t": 501.79715, "r": 141.78, "b": 510.57193, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Query/400", "bbox": {"l": 151.20016, "t": 501.64777, "r": 198.17549, "b": 510.86075, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "list_item", "bbox": {"l": 135.69873046875, "t": 512.3756713867188, "r": 214.61249, "b": 522.86057, "coord_origin": "TOPLEFT"}, "confidence": 0.9262765645980835, "cells": [{"id": 30, "text": "GLYPH", "bbox": {"l": 136.8, "t": 513.79697, "r": 141.78, "b": 522.5717500000001, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "QQQQRY API", "bbox": {"l": 151.20016, "t": 513.6475800000001, "r": 214.61249, "b": 522.86057, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "list_item", "bbox": {"l": 135.62481689453125, "t": 524.65283203125, "r": 315.8399, "b": 534.8603800000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9469870328903198, "cells": [{"id": 32, "text": "GLYPH", "bbox": {"l": 136.8, "t": 525.79678, "r": 141.78, "b": 534.57156, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Open Query File (", "bbox": {"l": 151.20016, "t": 525.6474000000001, "r": 230.89011, "b": 534.8603800000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "OPNQRYF", "bbox": {"l": 230.93991000000003, "t": 525.79678, "r": 265.85968, "b": 534.6213700000001, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": ") command", "bbox": {"l": 265.92041, "t": 525.6474000000001, "r": 315.8399, "b": 534.8603800000001, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "list_item", "bbox": {"l": 135.5345458984375, "t": 536.3973388671875, "r": 285.93896484375, "b": 546.8602, "coord_origin": "TOPLEFT"}, "confidence": 0.934996485710144, "cells": [{"id": 36, "text": "GLYPH", "bbox": {"l": 136.79997, "t": 537.7966, "r": 141.77997, "b": 546.5713499999999, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Run Query (", "bbox": {"l": 151.20013, "t": 537.6472, "r": 205.94926, "b": 546.8602, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "RUNQRY", "bbox": {"l": 205.92038, "t": 537.7966, "r": 235.91989, "b": 546.62115, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": ") command", "bbox": {"l": 235.91991, "t": 537.6472, "r": 285.85736, "b": 546.8602, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "list_item", "bbox": {"l": 135.56021118164062, "t": 548.5358276367188, "r": 441.7839660644531, "b": 558.86, "coord_origin": "TOPLEFT"}, "confidence": 0.9559246897697449, "cells": [{"id": 40, "text": "GLYPH", "bbox": {"l": 136.79997, "t": 549.7964, "r": 141.77997, "b": 558.57115, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Native open (RPG, COBOL, OPNDBF, and so on) of an SQL view", "bbox": {"l": 151.20013, "t": 549.6469999999999, "r": 441.4704, "b": 558.86, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "text", "bbox": {"l": 135.97003173828125, "t": 570.7841796875, "r": 541.63519, "b": 617.0958251953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9824656248092651, "cells": [{"id": 42, "text": "Legacy queries that have been running without any issues for many years and over many", "bbox": {"l": 136.79997, "t": 571.66656, "r": 530.37244, "b": 580.87956, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "IBM i releases are now processed by a different query engine. As a result, the runtime ", "bbox": {"l": 136.79997, "t": 583.66637, "r": 519.22693, "b": 592.87936, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "behavior and results that are returned can be different for native query requests with RCAC ", "bbox": {"l": 136.79997, "t": 595.66617, "r": 541.63519, "b": 604.8791699999999, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "enabled. The ", "bbox": {"l": 136.79997, "t": 607.66597, "r": 197.70737, "b": 616.87897, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "OPNQRYF", "bbox": {"l": 197.70039, "t": 607.81537, "r": 232.67992000000004, "b": 616.6399200000001, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": " command and Query/400 run with SQE by default.", "bbox": {"l": 232.68091, "t": 607.66597, "r": 458.73212, "b": 616.87897, "coord_origin": "TOPLEFT"}}]}, {"id": 18, "label": "text", "bbox": {"l": 135.73948669433594, "t": 628.62744140625, "r": 547.28345, "b": 651.3435668945312, "coord_origin": "TOPLEFT"}, "confidence": 0.975006639957428, "cells": [{"id": 48, "text": "The following list documents some of the query output differences that can occur when native ", "bbox": {"l": 136.80096, "t": 629.62578, "r": 547.28345, "b": 638.83878, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "query requests are processed by CQE:", "bbox": {"l": 136.80096, "t": 641.62558, "r": 309.73151, "b": 650.83858, "coord_origin": "TOPLEFT"}}]}, {"id": 19, "label": "list_item", "bbox": {"l": 135.9209747314453, "t": 658.1214599609375, "r": 299.18975830078125, "b": 668.4609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9473878741264343, "cells": [{"id": 50, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 658.81454, "r": 141.78096, "b": 667.5893, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Different ordering in the result set", "bbox": {"l": 151.20113, "t": 658.66515, "r": 298.89197, "b": 667.87814, "coord_origin": "TOPLEFT"}}]}, {"id": 20, "label": "list_item", "bbox": {"l": 135.68008422851562, "t": 670.212890625, "r": 393.49902, "b": 680.426513671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9464444518089294, "cells": [{"id": 52, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 670.81435, "r": 141.78096, "b": 679.58911, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "Different values for null columns or columns with errors", "bbox": {"l": 151.20113, "t": 670.66495, "r": 393.49902, "b": 679.87795, "coord_origin": "TOPLEFT"}}]}, {"id": 21, "label": "list_item", "bbox": {"l": 135.76820373535156, "t": 681.9945068359375, "r": 358.48862, "b": 692.8447265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9444779753684998, "cells": [{"id": 54, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 682.81416, "r": 141.78096, "b": 691.58892, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Suppression of some mapping error messages", "bbox": {"l": 151.20113, "t": 682.66476, "r": 358.48862, "b": 691.87776, "coord_origin": "TOPLEFT"}}]}, {"id": 22, "label": "list_item", "bbox": {"l": 135.62449645996094, "t": 693.85107421875, "r": 310.7019348144531, "b": 704.2999267578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9346434473991394, "cells": [{"id": 56, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 694.813972, "r": 141.78096, "b": 703.5887299999999, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "Loss of RRN positioning capabilities", "bbox": {"l": 151.20113, "t": 694.664566, "r": 310.57407, "b": 703.877571, "coord_origin": "TOPLEFT"}}]}, {"id": 23, "label": "list_item", "bbox": {"l": 135.7325439453125, "t": 705.99072265625, "r": 354.20792, "b": 716.4747924804688, "coord_origin": "TOPLEFT"}, "confidence": 0.9466715455055237, "cells": [{"id": 58, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 706.813782, "r": 141.78096, "b": 715.588539, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "Duplicate key processing behavior differences", "bbox": {"l": 151.20113, "t": 706.6643750000001, "r": 354.20792, "b": 715.87738, "coord_origin": "TOPLEFT"}}]}, {"id": 24, "label": "list_item", "bbox": {"l": 135.72433471679688, "t": 718.1799926757812, "r": 246.4168701171875, "b": 728.3264770507812, "coord_origin": "TOPLEFT"}, "confidence": 0.9458449482917786, "cells": [{"id": 60, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 718.813591, "r": 141.78096, "b": 727.588348, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Missing key feedback", "bbox": {"l": 151.20113, "t": 718.664185, "r": 245.8849, "b": 727.87719, "coord_origin": "TOPLEFT"}}]}, {"id": 25, "label": "text", "bbox": {"l": 141.973876953125, "t": 336.4569396972656, "r": 541.237, "b": 383.3992919921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9816816449165344, "cells": [{"id": 62, "text": "Important:", "bbox": {"l": 142.8, "t": 337.60873, "r": 192.41673, "b": 346.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": " This potential runtime error places a heavy emphasis on a comprehensive ", "bbox": {"l": 192.41974, "t": 337.60873, "r": 524.8606, "b": 346.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "testing plan to ensure that all programs are tested. If testing uncovers an unsupported ", "bbox": {"l": 142.80002, "t": 349.60855, "r": 524.34381, "b": 358.82153, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "interface, then you must investigate whether the application can be rewritten to use a data ", "bbox": {"l": 142.80002, "t": 361.60837, "r": 541.237, "b": 370.82134999999994, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "access interface that is supported by RCAC.", "bbox": {"l": 142.80002, "t": 373.60818000000006, "r": 338.13461, "b": 382.82117000000005, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 95, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.1874008178711, "t": 754.3892211914062, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9252743721008301, "cells": [{"id": 0, "text": "80 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "80"}, {"label": "page_footer", "id": 1, "page_no": 95, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.2634048461914, "t": 754.6898193359375, "r": 334.42142, "b": 763.9056396484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9558761715888977, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "section_header", "id": 2, "page_no": 95, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.43855285644531, "t": 73.36776733398438, "r": 275.70184, "b": 89.5892105102539, "coord_origin": "TOPLEFT"}, "confidence": 0.9696915745735168, "cells": [{"id": 2, "text": "5.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.539185, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Unsupported interfaces", "bbox": {"l": 92.087021, "t": 74.34069999999997, "r": 275.70184, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, "text": "5.1 Unsupported interfaces"}, {"label": "text", "id": 3, "page_no": 95, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.1591339111328, "t": 105.93167114257812, "r": 519.797, "b": 128.38632202148438, "coord_origin": "TOPLEFT"}, "confidence": 0.9809359312057495, "cells": [{"id": 4, "text": "It is not possible to create a row permission or column mask on a distributed table or a ", "bbox": {"l": 136.8, "t": 106.6087, "r": 519.797, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "program-described file.", "bbox": {"l": 136.8, "t": 118.60852, "r": 238.85611, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}]}, "text": "It is not possible to create a row permission or column mask on a distributed table or a program-described file."}, {"label": "text", "id": 4, "page_no": 95, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.89776611328125, "t": 140.08090209960938, "r": 547.21381, "b": 174.56727600097656, "coord_origin": "TOPLEFT"}, "confidence": 0.9822454452514648, "cells": [{"id": 6, "text": "After a row permission or column mask is added to a table, there are some data access ", "bbox": {"l": 136.8, "t": 140.62811, "r": 525.55267, "b": 149.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "requests that no longer work. An attempt to open or query a table with activated RCAC ", "bbox": {"l": 136.8, "t": 152.62793, "r": 521.97815, "b": 161.84094000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "controls involving any of the following scenarios is rejected with the CPD43A4 error message:", "bbox": {"l": 136.8, "t": 164.62775, "r": 547.21381, "b": 173.84076000000005, "coord_origin": "TOPLEFT"}}]}, "text": "After a row permission or column mask is added to a table, there are some data access requests that no longer work. An attempt to open or query a table with activated RCAC controls involving any of the following scenarios is rejected with the CPD43A4 error message:"}, {"label": "list_item", "id": 5, "page_no": 95, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.5338592529297, "t": 180.65792846679688, "r": 526.03485, "b": 191.1039581298828, "coord_origin": "TOPLEFT"}, "confidence": 0.9507953524589539, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 181.75696000000005, "r": 141.78001, "b": 190.53174, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "A logical file with multiple formats if the open attempt requests more than one format.", "bbox": {"l": 151.20018, "t": 181.60753999999997, "r": 526.03485, "b": 190.82056, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH A logical file with multiple formats if the open attempt requests more than one format."}, {"label": "list_item", "id": 6, "page_no": 95, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.57638549804688, "t": 192.57815551757812, "r": 410.49484, "b": 203.17335510253906, "coord_origin": "TOPLEFT"}, "confidence": 0.9401845932006836, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 193.75676999999996, "r": 141.78001, "b": 202.53156, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "A table or query that specifies an ICU 2.6.1 sort sequence.", "bbox": {"l": 151.20018, "t": 193.60735999999997, "r": 410.49484, "b": 202.82037000000003, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH A table or query that specifies an ICU 2.6.1 sort sequence."}, {"label": "list_item", "id": 7, "page_no": 95, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.51390075683594, "t": 205.0358123779297, "r": 264.33585, "b": 215.18972778320312, "coord_origin": "TOPLEFT"}, "confidence": 0.9484872221946716, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 205.75658999999996, "r": 141.78001, "b": 214.53137000000004, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "A table with read triggers.", "bbox": {"l": 151.20018, "t": 205.60717999999997, "r": 264.33585, "b": 214.82019000000003, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH A table with read triggers."}, {"label": "text", "id": 8, "page_no": 95, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.78880310058594, "t": 226.60470581054688, "r": 537.02081, "b": 248.83960000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9780105948448181, "cells": [{"id": 15, "text": "This unsupported interface error occurs when a table with RCAC controls is accessed, not ", "bbox": {"l": 136.80002, "t": 227.62676999999996, "r": 537.02081, "b": 236.83978000000002, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "when the RCAC control is created and activated.", "bbox": {"l": 136.80002, "t": 239.62658999999996, "r": 351.88031, "b": 248.83960000000002, "coord_origin": "TOPLEFT"}}]}, "text": "This unsupported interface error occurs when a table with RCAC controls is accessed, not when the RCAC control is created and activated."}, {"label": "text", "id": 9, "page_no": 95, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.04721069335938, "t": 260.5085144042969, "r": 547.27563, "b": 318.8584599999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9873144030570984, "cells": [{"id": 17, "text": "For example, assume that there is a physical file, PF1, which is referenced by a single format ", "bbox": {"l": 136.80002, "t": 261.64617999999996, "r": 547.27563, "b": 270.85919, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "logical file (LFS) and a multi-format logical file (LFM). A row permission is successfully ", "bbox": {"l": 136.80002, "t": 273.64599999999996, "r": 519.41534, "b": 282.85900999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "created and activated for PF1. Any application that accesses PF1 directly or LFS continues to ", "bbox": {"l": 136.79901, "t": 285.6458400000001, "r": 547.23773, "b": 294.85883000000007, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "work without any issues. However, any application that opens LFM with multiple formats ", "bbox": {"l": 136.79901, "t": 297.64566, "r": 526.68823, "b": 306.85864, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "receives an error on the open attempt after the row permission is activated for PF1.", "bbox": {"l": 136.79901, "t": 309.64548, "r": 503.38181, "b": 318.8584599999999, "coord_origin": "TOPLEFT"}}]}, "text": "For example, assume that there is a physical file, PF1, which is referenced by a single format logical file (LFS) and a multi-format logical file (LFM). A row permission is successfully created and activated for PF1. Any application that accesses PF1 directly or LFS continues to work without any issues. However, any application that opens LFM with multiple formats receives an error on the open attempt after the row permission is activated for PF1."}, {"label": "section_header", "id": 10, "page_no": 95, "cluster": {"id": 10, "label": "section_header", "bbox": {"l": 64.47200012207031, "t": 415.3008117675781, "r": 329.61151, "b": 431.6415710449219, "coord_origin": "TOPLEFT"}, "confidence": 0.9681466221809387, "cells": [{"id": 22, "text": "5.2", "bbox": {"l": 64.800003, "t": 416.34069999999997, "r": 87.404282, "b": 431.1037, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Native query result differences", "bbox": {"l": 91.925117, "t": 416.34069999999997, "r": 329.61151, "b": 431.1037, "coord_origin": "TOPLEFT"}}]}, "text": "5.2 Native query result differences"}, {"label": "text", "id": 11, "page_no": 95, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.66397094726562, "t": 447.6929626464844, "r": 542.39417, "b": 494.5770263671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9864740371704102, "cells": [{"id": 24, "text": "The SQL Query Engine (SQE) is the only engine that is enhanced by IBM to enforce RCAC ", "bbox": {"l": 136.8, "t": 448.60873, "r": 542.39417, "b": 457.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "controls on query requests. In order for native query requests to work with RCAC, these ", "bbox": {"l": 136.8, "t": 460.60855, "r": 526.14728, "b": 469.82153, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "native query requests are now processed by SQE instead of the Classic Query Engine ", "bbox": {"l": 136.8, "t": 472.60837, "r": 521.31879, "b": 481.82135, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "(CQE). Native query requests can consist of the following items:", "bbox": {"l": 136.8, "t": 484.60818, "r": 419.14819, "b": 493.82117, "coord_origin": "TOPLEFT"}}]}, "text": "The SQL Query Engine (SQE) is the only engine that is enhanced by IBM to enforce RCAC controls on query requests. In order for native query requests to work with RCAC, these native query requests are now processed by SQE instead of the Classic Query Engine (CQE). Native query requests can consist of the following items:"}, {"label": "list_item", "id": 12, "page_no": 95, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 135.92169189453125, "t": 500.54949951171875, "r": 198.29859924316406, "b": 510.86075, "coord_origin": "TOPLEFT"}, "confidence": 0.9383296370506287, "cells": [{"id": 28, "text": "GLYPH", "bbox": {"l": 136.8, "t": 501.79715, "r": 141.78, "b": 510.57193, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Query/400", "bbox": {"l": 151.20016, "t": 501.64777, "r": 198.17549, "b": 510.86075, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Query/400"}, {"label": "list_item", "id": 13, "page_no": 95, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 135.69873046875, "t": 512.3756713867188, "r": 214.61249, "b": 522.86057, "coord_origin": "TOPLEFT"}, "confidence": 0.9262765645980835, "cells": [{"id": 30, "text": "GLYPH", "bbox": {"l": 136.8, "t": 513.79697, "r": 141.78, "b": 522.5717500000001, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "QQQQRY API", "bbox": {"l": 151.20016, "t": 513.6475800000001, "r": 214.61249, "b": 522.86057, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH QQQQRY API"}, {"label": "list_item", "id": 14, "page_no": 95, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 135.62481689453125, "t": 524.65283203125, "r": 315.8399, "b": 534.8603800000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9469870328903198, "cells": [{"id": 32, "text": "GLYPH", "bbox": {"l": 136.8, "t": 525.79678, "r": 141.78, "b": 534.57156, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Open Query File (", "bbox": {"l": 151.20016, "t": 525.6474000000001, "r": 230.89011, "b": 534.8603800000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "OPNQRYF", "bbox": {"l": 230.93991000000003, "t": 525.79678, "r": 265.85968, "b": 534.6213700000001, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": ") command", "bbox": {"l": 265.92041, "t": 525.6474000000001, "r": 315.8399, "b": 534.8603800000001, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Open Query File ( OPNQRYF ) command"}, {"label": "list_item", "id": 15, "page_no": 95, "cluster": {"id": 15, "label": "list_item", "bbox": {"l": 135.5345458984375, "t": 536.3973388671875, "r": 285.93896484375, "b": 546.8602, "coord_origin": "TOPLEFT"}, "confidence": 0.934996485710144, "cells": [{"id": 36, "text": "GLYPH", "bbox": {"l": 136.79997, "t": 537.7966, "r": 141.77997, "b": 546.5713499999999, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Run Query (", "bbox": {"l": 151.20013, "t": 537.6472, "r": 205.94926, "b": 546.8602, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "RUNQRY", "bbox": {"l": 205.92038, "t": 537.7966, "r": 235.91989, "b": 546.62115, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": ") command", "bbox": {"l": 235.91991, "t": 537.6472, "r": 285.85736, "b": 546.8602, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Run Query ( RUNQRY ) command"}, {"label": "list_item", "id": 16, "page_no": 95, "cluster": {"id": 16, "label": "list_item", "bbox": {"l": 135.56021118164062, "t": 548.5358276367188, "r": 441.7839660644531, "b": 558.86, "coord_origin": "TOPLEFT"}, "confidence": 0.9559246897697449, "cells": [{"id": 40, "text": "GLYPH", "bbox": {"l": 136.79997, "t": 549.7964, "r": 141.77997, "b": 558.57115, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Native open (RPG, COBOL, OPNDBF, and so on) of an SQL view", "bbox": {"l": 151.20013, "t": 549.6469999999999, "r": 441.4704, "b": 558.86, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Native open (RPG, COBOL, OPNDBF, and so on) of an SQL view"}, {"label": "text", "id": 17, "page_no": 95, "cluster": {"id": 17, "label": "text", "bbox": {"l": 135.97003173828125, "t": 570.7841796875, "r": 541.63519, "b": 617.0958251953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9824656248092651, "cells": [{"id": 42, "text": "Legacy queries that have been running without any issues for many years and over many", "bbox": {"l": 136.79997, "t": 571.66656, "r": 530.37244, "b": 580.87956, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "IBM i releases are now processed by a different query engine. As a result, the runtime ", "bbox": {"l": 136.79997, "t": 583.66637, "r": 519.22693, "b": 592.87936, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "behavior and results that are returned can be different for native query requests with RCAC ", "bbox": {"l": 136.79997, "t": 595.66617, "r": 541.63519, "b": 604.8791699999999, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "enabled. The ", "bbox": {"l": 136.79997, "t": 607.66597, "r": 197.70737, "b": 616.87897, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "OPNQRYF", "bbox": {"l": 197.70039, "t": 607.81537, "r": 232.67992000000004, "b": 616.6399200000001, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": " command and Query/400 run with SQE by default.", "bbox": {"l": 232.68091, "t": 607.66597, "r": 458.73212, "b": 616.87897, "coord_origin": "TOPLEFT"}}]}, "text": "Legacy queries that have been running without any issues for many years and over many IBM i releases are now processed by a different query engine. As a result, the runtime behavior and results that are returned can be different for native query requests with RCAC enabled. The OPNQRYF command and Query/400 run with SQE by default."}, {"label": "text", "id": 18, "page_no": 95, "cluster": {"id": 18, "label": "text", "bbox": {"l": 135.73948669433594, "t": 628.62744140625, "r": 547.28345, "b": 651.3435668945312, "coord_origin": "TOPLEFT"}, "confidence": 0.975006639957428, "cells": [{"id": 48, "text": "The following list documents some of the query output differences that can occur when native ", "bbox": {"l": 136.80096, "t": 629.62578, "r": 547.28345, "b": 638.83878, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "query requests are processed by CQE:", "bbox": {"l": 136.80096, "t": 641.62558, "r": 309.73151, "b": 650.83858, "coord_origin": "TOPLEFT"}}]}, "text": "The following list documents some of the query output differences that can occur when native query requests are processed by CQE:"}, {"label": "list_item", "id": 19, "page_no": 95, "cluster": {"id": 19, "label": "list_item", "bbox": {"l": 135.9209747314453, "t": 658.1214599609375, "r": 299.18975830078125, "b": 668.4609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9473878741264343, "cells": [{"id": 50, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 658.81454, "r": 141.78096, "b": 667.5893, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Different ordering in the result set", "bbox": {"l": 151.20113, "t": 658.66515, "r": 298.89197, "b": 667.87814, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Different ordering in the result set"}, {"label": "list_item", "id": 20, "page_no": 95, "cluster": {"id": 20, "label": "list_item", "bbox": {"l": 135.68008422851562, "t": 670.212890625, "r": 393.49902, "b": 680.426513671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9464444518089294, "cells": [{"id": 52, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 670.81435, "r": 141.78096, "b": 679.58911, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "Different values for null columns or columns with errors", "bbox": {"l": 151.20113, "t": 670.66495, "r": 393.49902, "b": 679.87795, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Different values for null columns or columns with errors"}, {"label": "list_item", "id": 21, "page_no": 95, "cluster": {"id": 21, "label": "list_item", "bbox": {"l": 135.76820373535156, "t": 681.9945068359375, "r": 358.48862, "b": 692.8447265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9444779753684998, "cells": [{"id": 54, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 682.81416, "r": 141.78096, "b": 691.58892, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Suppression of some mapping error messages", "bbox": {"l": 151.20113, "t": 682.66476, "r": 358.48862, "b": 691.87776, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Suppression of some mapping error messages"}, {"label": "list_item", "id": 22, "page_no": 95, "cluster": {"id": 22, "label": "list_item", "bbox": {"l": 135.62449645996094, "t": 693.85107421875, "r": 310.7019348144531, "b": 704.2999267578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9346434473991394, "cells": [{"id": 56, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 694.813972, "r": 141.78096, "b": 703.5887299999999, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "Loss of RRN positioning capabilities", "bbox": {"l": 151.20113, "t": 694.664566, "r": 310.57407, "b": 703.877571, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Loss of RRN positioning capabilities"}, {"label": "list_item", "id": 23, "page_no": 95, "cluster": {"id": 23, "label": "list_item", "bbox": {"l": 135.7325439453125, "t": 705.99072265625, "r": 354.20792, "b": 716.4747924804688, "coord_origin": "TOPLEFT"}, "confidence": 0.9466715455055237, "cells": [{"id": 58, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 706.813782, "r": 141.78096, "b": 715.588539, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "Duplicate key processing behavior differences", "bbox": {"l": 151.20113, "t": 706.6643750000001, "r": 354.20792, "b": 715.87738, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Duplicate key processing behavior differences"}, {"label": "list_item", "id": 24, "page_no": 95, "cluster": {"id": 24, "label": "list_item", "bbox": {"l": 135.72433471679688, "t": 718.1799926757812, "r": 246.4168701171875, "b": 728.3264770507812, "coord_origin": "TOPLEFT"}, "confidence": 0.9458449482917786, "cells": [{"id": 60, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 718.813591, "r": 141.78096, "b": 727.588348, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Missing key feedback", "bbox": {"l": 151.20113, "t": 718.664185, "r": 245.8849, "b": 727.87719, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Missing key feedback"}, {"label": "text", "id": 25, "page_no": 95, "cluster": {"id": 25, "label": "text", "bbox": {"l": 141.973876953125, "t": 336.4569396972656, "r": 541.237, "b": 383.3992919921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9816816449165344, "cells": [{"id": 62, "text": "Important:", "bbox": {"l": 142.8, "t": 337.60873, "r": 192.41673, "b": 346.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": " This potential runtime error places a heavy emphasis on a comprehensive ", "bbox": {"l": 192.41974, "t": 337.60873, "r": 524.8606, "b": 346.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "testing plan to ensure that all programs are tested. If testing uncovers an unsupported ", "bbox": {"l": 142.80002, "t": 349.60855, "r": 524.34381, "b": 358.82153, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "interface, then you must investigate whether the application can be rewritten to use a data ", "bbox": {"l": 142.80002, "t": 361.60837, "r": 541.237, "b": 370.82134999999994, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "access interface that is supported by RCAC.", "bbox": {"l": 142.80002, "t": 373.60818000000006, "r": 338.13461, "b": 382.82117000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Important: This potential runtime error places a heavy emphasis on a comprehensive testing plan to ensure that all programs are tested. If testing uncovers an unsupported interface, then you must investigate whether the application can be rewritten to use a data access interface that is supported by RCAC."}], "body": [{"label": "section_header", "id": 2, "page_no": 95, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.43855285644531, "t": 73.36776733398438, "r": 275.70184, "b": 89.5892105102539, "coord_origin": "TOPLEFT"}, "confidence": 0.9696915745735168, "cells": [{"id": 2, "text": "5.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.539185, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Unsupported interfaces", "bbox": {"l": 92.087021, "t": 74.34069999999997, "r": 275.70184, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, "text": "5.1 Unsupported interfaces"}, {"label": "text", "id": 3, "page_no": 95, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.1591339111328, "t": 105.93167114257812, "r": 519.797, "b": 128.38632202148438, "coord_origin": "TOPLEFT"}, "confidence": 0.9809359312057495, "cells": [{"id": 4, "text": "It is not possible to create a row permission or column mask on a distributed table or a ", "bbox": {"l": 136.8, "t": 106.6087, "r": 519.797, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "program-described file.", "bbox": {"l": 136.8, "t": 118.60852, "r": 238.85611, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}]}, "text": "It is not possible to create a row permission or column mask on a distributed table or a program-described file."}, {"label": "text", "id": 4, "page_no": 95, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.89776611328125, "t": 140.08090209960938, "r": 547.21381, "b": 174.56727600097656, "coord_origin": "TOPLEFT"}, "confidence": 0.9822454452514648, "cells": [{"id": 6, "text": "After a row permission or column mask is added to a table, there are some data access ", "bbox": {"l": 136.8, "t": 140.62811, "r": 525.55267, "b": 149.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "requests that no longer work. An attempt to open or query a table with activated RCAC ", "bbox": {"l": 136.8, "t": 152.62793, "r": 521.97815, "b": 161.84094000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "controls involving any of the following scenarios is rejected with the CPD43A4 error message:", "bbox": {"l": 136.8, "t": 164.62775, "r": 547.21381, "b": 173.84076000000005, "coord_origin": "TOPLEFT"}}]}, "text": "After a row permission or column mask is added to a table, there are some data access requests that no longer work. An attempt to open or query a table with activated RCAC controls involving any of the following scenarios is rejected with the CPD43A4 error message:"}, {"label": "list_item", "id": 5, "page_no": 95, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.5338592529297, "t": 180.65792846679688, "r": 526.03485, "b": 191.1039581298828, "coord_origin": "TOPLEFT"}, "confidence": 0.9507953524589539, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 181.75696000000005, "r": 141.78001, "b": 190.53174, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "A logical file with multiple formats if the open attempt requests more than one format.", "bbox": {"l": 151.20018, "t": 181.60753999999997, "r": 526.03485, "b": 190.82056, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH A logical file with multiple formats if the open attempt requests more than one format."}, {"label": "list_item", "id": 6, "page_no": 95, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.57638549804688, "t": 192.57815551757812, "r": 410.49484, "b": 203.17335510253906, "coord_origin": "TOPLEFT"}, "confidence": 0.9401845932006836, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 193.75676999999996, "r": 141.78001, "b": 202.53156, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "A table or query that specifies an ICU 2.6.1 sort sequence.", "bbox": {"l": 151.20018, "t": 193.60735999999997, "r": 410.49484, "b": 202.82037000000003, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH A table or query that specifies an ICU 2.6.1 sort sequence."}, {"label": "list_item", "id": 7, "page_no": 95, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.51390075683594, "t": 205.0358123779297, "r": 264.33585, "b": 215.18972778320312, "coord_origin": "TOPLEFT"}, "confidence": 0.9484872221946716, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 205.75658999999996, "r": 141.78001, "b": 214.53137000000004, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "A table with read triggers.", "bbox": {"l": 151.20018, "t": 205.60717999999997, "r": 264.33585, "b": 214.82019000000003, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH A table with read triggers."}, {"label": "text", "id": 8, "page_no": 95, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.78880310058594, "t": 226.60470581054688, "r": 537.02081, "b": 248.83960000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9780105948448181, "cells": [{"id": 15, "text": "This unsupported interface error occurs when a table with RCAC controls is accessed, not ", "bbox": {"l": 136.80002, "t": 227.62676999999996, "r": 537.02081, "b": 236.83978000000002, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "when the RCAC control is created and activated.", "bbox": {"l": 136.80002, "t": 239.62658999999996, "r": 351.88031, "b": 248.83960000000002, "coord_origin": "TOPLEFT"}}]}, "text": "This unsupported interface error occurs when a table with RCAC controls is accessed, not when the RCAC control is created and activated."}, {"label": "text", "id": 9, "page_no": 95, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.04721069335938, "t": 260.5085144042969, "r": 547.27563, "b": 318.8584599999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9873144030570984, "cells": [{"id": 17, "text": "For example, assume that there is a physical file, PF1, which is referenced by a single format ", "bbox": {"l": 136.80002, "t": 261.64617999999996, "r": 547.27563, "b": 270.85919, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "logical file (LFS) and a multi-format logical file (LFM). A row permission is successfully ", "bbox": {"l": 136.80002, "t": 273.64599999999996, "r": 519.41534, "b": 282.85900999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "created and activated for PF1. Any application that accesses PF1 directly or LFS continues to ", "bbox": {"l": 136.79901, "t": 285.6458400000001, "r": 547.23773, "b": 294.85883000000007, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "work without any issues. However, any application that opens LFM with multiple formats ", "bbox": {"l": 136.79901, "t": 297.64566, "r": 526.68823, "b": 306.85864, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "receives an error on the open attempt after the row permission is activated for PF1.", "bbox": {"l": 136.79901, "t": 309.64548, "r": 503.38181, "b": 318.8584599999999, "coord_origin": "TOPLEFT"}}]}, "text": "For example, assume that there is a physical file, PF1, which is referenced by a single format logical file (LFS) and a multi-format logical file (LFM). A row permission is successfully created and activated for PF1. Any application that accesses PF1 directly or LFS continues to work without any issues. However, any application that opens LFM with multiple formats receives an error on the open attempt after the row permission is activated for PF1."}, {"label": "section_header", "id": 10, "page_no": 95, "cluster": {"id": 10, "label": "section_header", "bbox": {"l": 64.47200012207031, "t": 415.3008117675781, "r": 329.61151, "b": 431.6415710449219, "coord_origin": "TOPLEFT"}, "confidence": 0.9681466221809387, "cells": [{"id": 22, "text": "5.2", "bbox": {"l": 64.800003, "t": 416.34069999999997, "r": 87.404282, "b": 431.1037, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Native query result differences", "bbox": {"l": 91.925117, "t": 416.34069999999997, "r": 329.61151, "b": 431.1037, "coord_origin": "TOPLEFT"}}]}, "text": "5.2 Native query result differences"}, {"label": "text", "id": 11, "page_no": 95, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.66397094726562, "t": 447.6929626464844, "r": 542.39417, "b": 494.5770263671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9864740371704102, "cells": [{"id": 24, "text": "The SQL Query Engine (SQE) is the only engine that is enhanced by IBM to enforce RCAC ", "bbox": {"l": 136.8, "t": 448.60873, "r": 542.39417, "b": 457.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "controls on query requests. In order for native query requests to work with RCAC, these ", "bbox": {"l": 136.8, "t": 460.60855, "r": 526.14728, "b": 469.82153, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "native query requests are now processed by SQE instead of the Classic Query Engine ", "bbox": {"l": 136.8, "t": 472.60837, "r": 521.31879, "b": 481.82135, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "(CQE). Native query requests can consist of the following items:", "bbox": {"l": 136.8, "t": 484.60818, "r": 419.14819, "b": 493.82117, "coord_origin": "TOPLEFT"}}]}, "text": "The SQL Query Engine (SQE) is the only engine that is enhanced by IBM to enforce RCAC controls on query requests. In order for native query requests to work with RCAC, these native query requests are now processed by SQE instead of the Classic Query Engine (CQE). Native query requests can consist of the following items:"}, {"label": "list_item", "id": 12, "page_no": 95, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 135.92169189453125, "t": 500.54949951171875, "r": 198.29859924316406, "b": 510.86075, "coord_origin": "TOPLEFT"}, "confidence": 0.9383296370506287, "cells": [{"id": 28, "text": "GLYPH", "bbox": {"l": 136.8, "t": 501.79715, "r": 141.78, "b": 510.57193, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Query/400", "bbox": {"l": 151.20016, "t": 501.64777, "r": 198.17549, "b": 510.86075, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Query/400"}, {"label": "list_item", "id": 13, "page_no": 95, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 135.69873046875, "t": 512.3756713867188, "r": 214.61249, "b": 522.86057, "coord_origin": "TOPLEFT"}, "confidence": 0.9262765645980835, "cells": [{"id": 30, "text": "GLYPH", "bbox": {"l": 136.8, "t": 513.79697, "r": 141.78, "b": 522.5717500000001, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "QQQQRY API", "bbox": {"l": 151.20016, "t": 513.6475800000001, "r": 214.61249, "b": 522.86057, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH QQQQRY API"}, {"label": "list_item", "id": 14, "page_no": 95, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 135.62481689453125, "t": 524.65283203125, "r": 315.8399, "b": 534.8603800000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9469870328903198, "cells": [{"id": 32, "text": "GLYPH", "bbox": {"l": 136.8, "t": 525.79678, "r": 141.78, "b": 534.57156, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Open Query File (", "bbox": {"l": 151.20016, "t": 525.6474000000001, "r": 230.89011, "b": 534.8603800000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "OPNQRYF", "bbox": {"l": 230.93991000000003, "t": 525.79678, "r": 265.85968, "b": 534.6213700000001, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": ") command", "bbox": {"l": 265.92041, "t": 525.6474000000001, "r": 315.8399, "b": 534.8603800000001, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Open Query File ( OPNQRYF ) command"}, {"label": "list_item", "id": 15, "page_no": 95, "cluster": {"id": 15, "label": "list_item", "bbox": {"l": 135.5345458984375, "t": 536.3973388671875, "r": 285.93896484375, "b": 546.8602, "coord_origin": "TOPLEFT"}, "confidence": 0.934996485710144, "cells": [{"id": 36, "text": "GLYPH", "bbox": {"l": 136.79997, "t": 537.7966, "r": 141.77997, "b": 546.5713499999999, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Run Query (", "bbox": {"l": 151.20013, "t": 537.6472, "r": 205.94926, "b": 546.8602, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "RUNQRY", "bbox": {"l": 205.92038, "t": 537.7966, "r": 235.91989, "b": 546.62115, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": ") command", "bbox": {"l": 235.91991, "t": 537.6472, "r": 285.85736, "b": 546.8602, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Run Query ( RUNQRY ) command"}, {"label": "list_item", "id": 16, "page_no": 95, "cluster": {"id": 16, "label": "list_item", "bbox": {"l": 135.56021118164062, "t": 548.5358276367188, "r": 441.7839660644531, "b": 558.86, "coord_origin": "TOPLEFT"}, "confidence": 0.9559246897697449, "cells": [{"id": 40, "text": "GLYPH", "bbox": {"l": 136.79997, "t": 549.7964, "r": 141.77997, "b": 558.57115, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Native open (RPG, COBOL, OPNDBF, and so on) of an SQL view", "bbox": {"l": 151.20013, "t": 549.6469999999999, "r": 441.4704, "b": 558.86, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Native open (RPG, COBOL, OPNDBF, and so on) of an SQL view"}, {"label": "text", "id": 17, "page_no": 95, "cluster": {"id": 17, "label": "text", "bbox": {"l": 135.97003173828125, "t": 570.7841796875, "r": 541.63519, "b": 617.0958251953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9824656248092651, "cells": [{"id": 42, "text": "Legacy queries that have been running without any issues for many years and over many", "bbox": {"l": 136.79997, "t": 571.66656, "r": 530.37244, "b": 580.87956, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "IBM i releases are now processed by a different query engine. As a result, the runtime ", "bbox": {"l": 136.79997, "t": 583.66637, "r": 519.22693, "b": 592.87936, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "behavior and results that are returned can be different for native query requests with RCAC ", "bbox": {"l": 136.79997, "t": 595.66617, "r": 541.63519, "b": 604.8791699999999, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "enabled. The ", "bbox": {"l": 136.79997, "t": 607.66597, "r": 197.70737, "b": 616.87897, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "OPNQRYF", "bbox": {"l": 197.70039, "t": 607.81537, "r": 232.67992000000004, "b": 616.6399200000001, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": " command and Query/400 run with SQE by default.", "bbox": {"l": 232.68091, "t": 607.66597, "r": 458.73212, "b": 616.87897, "coord_origin": "TOPLEFT"}}]}, "text": "Legacy queries that have been running without any issues for many years and over many IBM i releases are now processed by a different query engine. As a result, the runtime behavior and results that are returned can be different for native query requests with RCAC enabled. The OPNQRYF command and Query/400 run with SQE by default."}, {"label": "text", "id": 18, "page_no": 95, "cluster": {"id": 18, "label": "text", "bbox": {"l": 135.73948669433594, "t": 628.62744140625, "r": 547.28345, "b": 651.3435668945312, "coord_origin": "TOPLEFT"}, "confidence": 0.975006639957428, "cells": [{"id": 48, "text": "The following list documents some of the query output differences that can occur when native ", "bbox": {"l": 136.80096, "t": 629.62578, "r": 547.28345, "b": 638.83878, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "query requests are processed by CQE:", "bbox": {"l": 136.80096, "t": 641.62558, "r": 309.73151, "b": 650.83858, "coord_origin": "TOPLEFT"}}]}, "text": "The following list documents some of the query output differences that can occur when native query requests are processed by CQE:"}, {"label": "list_item", "id": 19, "page_no": 95, "cluster": {"id": 19, "label": "list_item", "bbox": {"l": 135.9209747314453, "t": 658.1214599609375, "r": 299.18975830078125, "b": 668.4609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9473878741264343, "cells": [{"id": 50, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 658.81454, "r": 141.78096, "b": 667.5893, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Different ordering in the result set", "bbox": {"l": 151.20113, "t": 658.66515, "r": 298.89197, "b": 667.87814, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Different ordering in the result set"}, {"label": "list_item", "id": 20, "page_no": 95, "cluster": {"id": 20, "label": "list_item", "bbox": {"l": 135.68008422851562, "t": 670.212890625, "r": 393.49902, "b": 680.426513671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9464444518089294, "cells": [{"id": 52, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 670.81435, "r": 141.78096, "b": 679.58911, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "Different values for null columns or columns with errors", "bbox": {"l": 151.20113, "t": 670.66495, "r": 393.49902, "b": 679.87795, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Different values for null columns or columns with errors"}, {"label": "list_item", "id": 21, "page_no": 95, "cluster": {"id": 21, "label": "list_item", "bbox": {"l": 135.76820373535156, "t": 681.9945068359375, "r": 358.48862, "b": 692.8447265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9444779753684998, "cells": [{"id": 54, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 682.81416, "r": 141.78096, "b": 691.58892, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Suppression of some mapping error messages", "bbox": {"l": 151.20113, "t": 682.66476, "r": 358.48862, "b": 691.87776, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Suppression of some mapping error messages"}, {"label": "list_item", "id": 22, "page_no": 95, "cluster": {"id": 22, "label": "list_item", "bbox": {"l": 135.62449645996094, "t": 693.85107421875, "r": 310.7019348144531, "b": 704.2999267578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9346434473991394, "cells": [{"id": 56, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 694.813972, "r": 141.78096, "b": 703.5887299999999, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "Loss of RRN positioning capabilities", "bbox": {"l": 151.20113, "t": 694.664566, "r": 310.57407, "b": 703.877571, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Loss of RRN positioning capabilities"}, {"label": "list_item", "id": 23, "page_no": 95, "cluster": {"id": 23, "label": "list_item", "bbox": {"l": 135.7325439453125, "t": 705.99072265625, "r": 354.20792, "b": 716.4747924804688, "coord_origin": "TOPLEFT"}, "confidence": 0.9466715455055237, "cells": [{"id": 58, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 706.813782, "r": 141.78096, "b": 715.588539, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "Duplicate key processing behavior differences", "bbox": {"l": 151.20113, "t": 706.6643750000001, "r": 354.20792, "b": 715.87738, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Duplicate key processing behavior differences"}, {"label": "list_item", "id": 24, "page_no": 95, "cluster": {"id": 24, "label": "list_item", "bbox": {"l": 135.72433471679688, "t": 718.1799926757812, "r": 246.4168701171875, "b": 728.3264770507812, "coord_origin": "TOPLEFT"}, "confidence": 0.9458449482917786, "cells": [{"id": 60, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 718.813591, "r": 141.78096, "b": 727.588348, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Missing key feedback", "bbox": {"l": 151.20113, "t": 718.664185, "r": 245.8849, "b": 727.87719, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Missing key feedback"}, {"label": "text", "id": 25, "page_no": 95, "cluster": {"id": 25, "label": "text", "bbox": {"l": 141.973876953125, "t": 336.4569396972656, "r": 541.237, "b": 383.3992919921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9816816449165344, "cells": [{"id": 62, "text": "Important:", "bbox": {"l": 142.8, "t": 337.60873, "r": 192.41673, "b": 346.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": " This potential runtime error places a heavy emphasis on a comprehensive ", "bbox": {"l": 192.41974, "t": 337.60873, "r": 524.8606, "b": 346.8217200000001, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "testing plan to ensure that all programs are tested. If testing uncovers an unsupported ", "bbox": {"l": 142.80002, "t": 349.60855, "r": 524.34381, "b": 358.82153, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "interface, then you must investigate whether the application can be rewritten to use a data ", "bbox": {"l": 142.80002, "t": 361.60837, "r": 541.237, "b": 370.82134999999994, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "access interface that is supported by RCAC.", "bbox": {"l": 142.80002, "t": 373.60818000000006, "r": 338.13461, "b": 382.82117000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Important: This potential runtime error places a heavy emphasis on a comprehensive testing plan to ensure that all programs are tested. If testing uncovers an unsupported interface, then you must investigate whether the application can be rewritten to use a data access interface that is supported by RCAC."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 95, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.1874008178711, "t": 754.3892211914062, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9252743721008301, "cells": [{"id": 0, "text": "80 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "80"}, {"label": "page_footer", "id": 1, "page_no": 95, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.2634048461914, "t": 754.6898193359375, "r": 334.42142, "b": 763.9056396484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9558761715888977, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 96, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 5. RCAC and non-SQL interfaces ", "bbox": {"l": 354.29999, "t": 755.538002, "r": 523.63324, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "81", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "For a list of the differences and additional details, see the ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 391.62125, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "IBM i Memo to Users Version 7.2", "bbox": {"l": 391.6192, "t": 71.50903000000005, "r": 537.52203, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": ", ", "bbox": {"l": 537.4187, "t": 71.50903000000005, "r": 543.05804, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "found at:", "bbox": {"l": 136.79861, "t": 83.50885000000017, "r": 175.42749, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgmtu.htm", "bbox": {"l": 136.79861, "t": 100.63806, "r": 521.5733, "b": 109.41283999999996, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "In addition, the performance of a native query with SQE can be different. It is possible that a ", "bbox": {"l": 136.79861, "t": 122.50824, "r": 544.66058, "b": 131.72125000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "new index or keyed logical file might need to be created to improve the performance.", "bbox": {"l": 136.79861, "t": 134.50806, "r": 508.98987000000005, "b": 143.72107000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "5.3", "bbox": {"l": 64.800003, "t": 229.20068000000003, "r": 107.0743, "b": 243.96367999999995, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Accidental updates with masked values", "bbox": {"l": 110.99170000000001, "t": 229.20068000000003, "r": 396.82227, "b": 243.96367999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "The masked values that are returned by a column mask can potentially cause the original ", "bbox": {"l": 136.8, "t": 261.52855999999997, "r": 533.76666, "b": 270.74158, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "data value to be accidentally overwritten, especially with applications using native record-level ", "bbox": {"l": 136.8, "t": 273.52837999999997, "r": 547.18481, "b": 282.74139, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "access.", "bbox": {"l": 136.79999, "t": 285.52823, "r": 170.50961, "b": 294.74120999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "For example, consider a table containing three columns of first name, last name, and tax ID ", "bbox": {"l": 136.79999, "t": 307.48804, "r": 541.6969, "b": 316.7010200000001, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "that is read by an RPG program. The user running the program is not authorized to see the ", "bbox": {"l": 136.79999, "t": 319.48785, "r": 540.84137, "b": 328.70084, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "tax ID value, so a masked value (*****3333) is written into the program\u2019s record buffer, as ", "bbox": {"l": 136.79999, "t": 331.48767, "r": 530.73004, "b": 340.70064999999994, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "shown Figure 5-1.", "bbox": {"l": 136.8, "t": 343.48749, "r": 216.65632999999997, "b": 352.70047000000005, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "In this example, the application reads the data for an update to correct the misspelling of the ", "bbox": {"l": 136.8, "t": 365.50705, "r": 545.41302, "b": 374.72003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "last name. The last name value is changed to Smith in the buffer. Now, a WRITE request is ", "bbox": {"l": 136.79999, "t": 377.50687, "r": 540.198, "b": 386.71985, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "issued by the program, which uses the contents of the record buffer to update the row in the ", "bbox": {"l": 136.79999, "t": 389.50668, "r": 544.25977, "b": 398.71967, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "underlying DB2 table. Unfortunately, the record buffer still contains a masked value for the tax ", "bbox": {"l": 136.79999, "t": 401.50649999999996, "r": 547.14398, "b": 410.71948, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "ID, so the tax ID value in the table is accidentally set to the masked value.", "bbox": {"l": 136.79997, "t": 413.5063200000001, "r": 461.0538, "b": 422.7193, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Figure 5-1 Accidental update with masked values scenario", "bbox": {"l": 136.8, "t": 723.137901, "r": 373.81857, "b": 731.462898, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Important:", "bbox": {"l": 142.8, "t": 162.52868999999998, "r": 192.41673, "b": 171.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": " Based on the potential impacts of query result set and performance ", "bbox": {"l": 192.41974, "t": 162.52868999999998, "r": 495.4548, "b": 171.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "differences, you should perform extensive functional testing and performance ", "bbox": {"l": 142.80002, "t": 174.5285, "r": 485.46099999999996, "b": 183.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "benchmarking of applications and reports that use native query interfaces. ", "bbox": {"l": 142.80002, "t": 186.52832, "r": 473.03167999999994, "b": 195.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "\u2026", "bbox": {"l": 233.05431000000002, "t": 474.24478, "r": 239.71214, "b": 484.23154, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "HLL Program using Native Record-Level Access", "bbox": {"l": 191.36845, "t": 446.30069, "r": 445.35726999999997, "b": 456.56488, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "READ", "bbox": {"l": 233.05431000000002, "t": 487.56049, "r": 259.57025, "b": 497.54724, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Record Buffer-> ", "bbox": {"l": 238.12204000000003, "t": 501.52307, "r": 313.72403, "b": 511.01047, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Joe Smyth *****3333", "bbox": {"l": 313.72516, "t": 501.52307, "r": 413.24988, "b": 511.02158, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "\u2026", "bbox": {"l": 233.05431000000002, "t": 527.65549, "r": 239.71214, "b": 537.64223, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "/* Application logic corrects last name to Smith */", "bbox": {"l": 233.05431000000002, "t": 541.43492, "r": 444.82404, "b": 550.24414, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "WRITE", "bbox": {"l": 233.05431000000002, "t": 565.97496, "r": 266.1937, "b": 575.96172, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "df", "bbox": {"l": 266.1586, "t": 579.93794, "r": 304.32135, "b": 589.4253699999999, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "f", "bbox": {"l": 289.75067, "t": 579.93794, "r": 307.61145, "b": 589.4253699999999, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "ih", "bbox": {"l": 345.7197, "t": 579.93794, "r": 362.1246, "b": 589.43646, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "*****", "bbox": {"l": 360.73679, "t": 579.93794, "r": 388.33353, "b": 589.43646, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "TaxID value changed", "bbox": {"l": 300.70541, "t": 624.36053, "r": 394.25247, "b": 633.85905, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Record Buffer-> ", "bbox": {"l": 240.6368, "t": 579.93794, "r": 313.68628, "b": 589.4253699999999, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Joe Smith ", "bbox": {"l": 313.72513, "t": 579.93794, "r": 360.76648, "b": 589.43646, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "*****3333", "bbox": {"l": 360.73679, "t": 579.93794, "r": 410.82452, "b": 589.43646, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Joe Smyth 111223333", "bbox": {"l": 149.09151, "t": 656.44766, "r": 258.49426, "b": 666.34564, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "TaxID value changed ", "bbox": {"l": 300.70541, "t": 624.36053, "r": 396.71878, "b": 633.85905, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "from 11122333 to *****3333", "bbox": {"l": 305.77271, "t": 637.67621, "r": 440.5318, "b": 647.17473, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 353.64373779296875, "t": 754.87646484375, "r": 523.63324, "b": 764.1002197265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9528434872627258, "cells": [{"id": 0, "text": "Chapter 5. RCAC and non-SQL interfaces ", "bbox": {"l": 354.29999, "t": 755.538002, "r": 523.63324, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.66748046875, "t": 754.2764282226562, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9146247506141663, "cells": [{"id": 1, "text": "81", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 136.42791748046875, "t": 70.61494445800781, "r": 543.05804, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9628674387931824, "cells": [{"id": 2, "text": "For a list of the differences and additional details, see the ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 391.62125, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "IBM i Memo to Users Version 7.2", "bbox": {"l": 391.6192, "t": 71.50903000000005, "r": 537.52203, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": ", ", "bbox": {"l": 537.4187, "t": 71.50903000000005, "r": 543.05804, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "found at:", "bbox": {"l": 136.79861, "t": 83.50885000000017, "r": 175.42749, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 136.22903442382812, "t": 99.42984008789062, "r": 521.8867797851562, "b": 109.78103637695312, "coord_origin": "TOPLEFT"}, "confidence": 0.8841223120689392, "cells": [{"id": 6, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgmtu.htm", "bbox": {"l": 136.79861, "t": 100.63806, "r": 521.5733, "b": 109.41283999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 136.18670654296875, "t": 121.53282165527344, "r": 544.66058, "b": 143.72107000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9777080416679382, "cells": [{"id": 7, "text": "In addition, the performance of a native query with SQE can be different. It is possible that a ", "bbox": {"l": 136.79861, "t": 122.50824, "r": 544.66058, "b": 131.72125000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "new index or keyed logical file might need to be created to improve the performance.", "bbox": {"l": 136.79861, "t": 134.50806, "r": 508.98987000000005, "b": 143.72107000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "section_header", "bbox": {"l": 64.66980743408203, "t": 228.1348419189453, "r": 396.82227, "b": 244.21737670898438, "coord_origin": "TOPLEFT"}, "confidence": 0.967221200466156, "cells": [{"id": 9, "text": "5.3", "bbox": {"l": 64.800003, "t": 229.20068000000003, "r": 107.0743, "b": 243.96367999999995, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Accidental updates with masked values", "bbox": {"l": 110.99170000000001, "t": 229.20068000000003, "r": 396.82227, "b": 243.96367999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 135.81739807128906, "t": 260.6902770996094, "r": 547.18481, "b": 294.74120999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9834569096565247, "cells": [{"id": 11, "text": "The masked values that are returned by a column mask can potentially cause the original ", "bbox": {"l": 136.8, "t": 261.52855999999997, "r": 533.76666, "b": 270.74158, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "data value to be accidentally overwritten, especially with applications using native record-level ", "bbox": {"l": 136.8, "t": 273.52837999999997, "r": 547.18481, "b": 282.74139, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "access.", "bbox": {"l": 136.79999, "t": 285.52823, "r": 170.50961, "b": 294.74120999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 135.87274169921875, "t": 306.6039123535156, "r": 541.6969, "b": 352.80584716796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9875996112823486, "cells": [{"id": 14, "text": "For example, consider a table containing three columns of first name, last name, and tax ID ", "bbox": {"l": 136.79999, "t": 307.48804, "r": 541.6969, "b": 316.7010200000001, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "that is read by an RPG program. The user running the program is not authorized to see the ", "bbox": {"l": 136.79999, "t": 319.48785, "r": 540.84137, "b": 328.70084, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "tax ID value, so a masked value (*****3333) is written into the program\u2019s record buffer, as ", "bbox": {"l": 136.79999, "t": 331.48767, "r": 530.73004, "b": 340.70064999999994, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "shown Figure 5-1.", "bbox": {"l": 136.8, "t": 343.48749, "r": 216.65632999999997, "b": 352.70047000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 136.08998107910156, "t": 364.7171325683594, "r": 547.14398, "b": 422.7193, "coord_origin": "TOPLEFT"}, "confidence": 0.9872422218322754, "cells": [{"id": 18, "text": "In this example, the application reads the data for an update to correct the misspelling of the ", "bbox": {"l": 136.8, "t": 365.50705, "r": 545.41302, "b": 374.72003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "last name. The last name value is changed to Smith in the buffer. Now, a WRITE request is ", "bbox": {"l": 136.79999, "t": 377.50687, "r": 540.198, "b": 386.71985, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "issued by the program, which uses the contents of the record buffer to update the row in the ", "bbox": {"l": 136.79999, "t": 389.50668, "r": 544.25977, "b": 398.71967, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "underlying DB2 table. Unfortunately, the record buffer still contains a masked value for the tax ", "bbox": {"l": 136.79999, "t": 401.50649999999996, "r": 547.14398, "b": 410.71948, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "ID, so the tax ID value in the table is accidentally set to the masked value.", "bbox": {"l": 136.79997, "t": 413.5063200000001, "r": 461.0538, "b": 422.7193, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "caption", "bbox": {"l": 136.07180786132812, "t": 722.1818237304688, "r": 374.3499755859375, "b": 731.462898, "coord_origin": "TOPLEFT"}, "confidence": 0.9452338218688965, "cells": [{"id": 23, "text": "Figure 5-1 Accidental update with masked values scenario", "bbox": {"l": 136.8, "t": 723.137901, "r": 373.81857, "b": 731.462898, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 141.93385314941406, "t": 161.8843994140625, "r": 495.4548, "b": 196.31082153320312, "coord_origin": "TOPLEFT"}, "confidence": 0.9745184183120728, "cells": [{"id": 24, "text": "Important:", "bbox": {"l": 142.8, "t": 162.52868999999998, "r": 192.41673, "b": 171.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": " Based on the potential impacts of query result set and performance ", "bbox": {"l": 192.41974, "t": 162.52868999999998, "r": 495.4548, "b": 171.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "differences, you should perform extensive functional testing and performance ", "bbox": {"l": 142.80002, "t": 174.5285, "r": 485.46099999999996, "b": 183.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "benchmarking of applications and reports that use native query interfaces. ", "bbox": {"l": 142.80002, "t": 186.52832, "r": 473.03167999999994, "b": 195.74132999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "picture", "bbox": {"l": 135.8197021484375, "t": 437.9704895019531, "r": 527.1633911132812, "b": 719.9022827148438, "coord_origin": "TOPLEFT"}, "confidence": 0.980728805065155, "cells": [{"id": 28, "text": "\u2026", "bbox": {"l": 233.05431000000002, "t": 474.24478, "r": 239.71214, "b": 484.23154, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "HLL Program using Native Record-Level Access", "bbox": {"l": 191.36845, "t": 446.30069, "r": 445.35726999999997, "b": 456.56488, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "READ", "bbox": {"l": 233.05431000000002, "t": 487.56049, "r": 259.57025, "b": 497.54724, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Record Buffer-> ", "bbox": {"l": 238.12204000000003, "t": 501.52307, "r": 313.72403, "b": 511.01047, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Joe Smyth *****3333", "bbox": {"l": 313.72516, "t": 501.52307, "r": 413.24988, "b": 511.02158, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "\u2026", "bbox": {"l": 233.05431000000002, "t": 527.65549, "r": 239.71214, "b": 537.64223, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "/* Application logic corrects last name to Smith */", "bbox": {"l": 233.05431000000002, "t": 541.43492, "r": 444.82404, "b": 550.24414, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "WRITE", "bbox": {"l": 233.05431000000002, "t": 565.97496, "r": 266.1937, "b": 575.96172, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "df", "bbox": {"l": 266.1586, "t": 579.93794, "r": 304.32135, "b": 589.4253699999999, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "f", "bbox": {"l": 289.75067, "t": 579.93794, "r": 307.61145, "b": 589.4253699999999, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "ih", "bbox": {"l": 345.7197, "t": 579.93794, "r": 362.1246, "b": 589.43646, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "*****", "bbox": {"l": 360.73679, "t": 579.93794, "r": 388.33353, "b": 589.43646, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "TaxID value changed", "bbox": {"l": 300.70541, "t": 624.36053, "r": 394.25247, "b": 633.85905, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Record Buffer-> ", "bbox": {"l": 240.6368, "t": 579.93794, "r": 313.68628, "b": 589.4253699999999, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Joe Smith ", "bbox": {"l": 313.72513, "t": 579.93794, "r": 360.76648, "b": 589.43646, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "*****3333", "bbox": {"l": 360.73679, "t": 579.93794, "r": 410.82452, "b": 589.43646, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Joe Smyth 111223333", "bbox": {"l": 149.09151, "t": 656.44766, "r": 258.49426, "b": 666.34564, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "TaxID value changed ", "bbox": {"l": 300.70541, "t": 624.36053, "r": 396.71878, "b": 633.85905, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "from 11122333 to *****3333", "bbox": {"l": 305.77271, "t": 637.67621, "r": 440.5318, "b": 647.17473, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 96, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 353.64373779296875, "t": 754.87646484375, "r": 523.63324, "b": 764.1002197265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9528434872627258, "cells": [{"id": 0, "text": "Chapter 5. RCAC and non-SQL interfaces ", "bbox": {"l": 354.29999, "t": 755.538002, "r": 523.63324, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 5. RCAC and non-SQL interfaces"}, {"label": "page_footer", "id": 1, "page_no": 96, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.66748046875, "t": 754.2764282226562, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9146247506141663, "cells": [{"id": 1, "text": "81", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "81"}, {"label": "text", "id": 2, "page_no": 96, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.42791748046875, "t": 70.61494445800781, "r": 543.05804, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9628674387931824, "cells": [{"id": 2, "text": "For a list of the differences and additional details, see the ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 391.62125, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "IBM i Memo to Users Version 7.2", "bbox": {"l": 391.6192, "t": 71.50903000000005, "r": 537.52203, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": ", ", "bbox": {"l": 537.4187, "t": 71.50903000000005, "r": 543.05804, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "found at:", "bbox": {"l": 136.79861, "t": 83.50885000000017, "r": 175.42749, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "For a list of the differences and additional details, see the IBM i Memo to Users Version 7.2 , found at:"}, {"label": "text", "id": 3, "page_no": 96, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.22903442382812, "t": 99.42984008789062, "r": 521.8867797851562, "b": 109.78103637695312, "coord_origin": "TOPLEFT"}, "confidence": 0.8841223120689392, "cells": [{"id": 6, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgmtu.htm", "bbox": {"l": 136.79861, "t": 100.63806, "r": 521.5733, "b": 109.41283999999996, "coord_origin": "TOPLEFT"}}]}, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgmtu.htm"}, {"label": "text", "id": 4, "page_no": 96, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.18670654296875, "t": 121.53282165527344, "r": 544.66058, "b": 143.72107000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9777080416679382, "cells": [{"id": 7, "text": "In addition, the performance of a native query with SQE can be different. It is possible that a ", "bbox": {"l": 136.79861, "t": 122.50824, "r": 544.66058, "b": 131.72125000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "new index or keyed logical file might need to be created to improve the performance.", "bbox": {"l": 136.79861, "t": 134.50806, "r": 508.98987000000005, "b": 143.72107000000005, "coord_origin": "TOPLEFT"}}]}, "text": "In addition, the performance of a native query with SQE can be different. It is possible that a new index or keyed logical file might need to be created to improve the performance."}, {"label": "section_header", "id": 5, "page_no": 96, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 64.66980743408203, "t": 228.1348419189453, "r": 396.82227, "b": 244.21737670898438, "coord_origin": "TOPLEFT"}, "confidence": 0.967221200466156, "cells": [{"id": 9, "text": "5.3", "bbox": {"l": 64.800003, "t": 229.20068000000003, "r": 107.0743, "b": 243.96367999999995, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Accidental updates with masked values", "bbox": {"l": 110.99170000000001, "t": 229.20068000000003, "r": 396.82227, "b": 243.96367999999995, "coord_origin": "TOPLEFT"}}]}, "text": "5.3 Accidental updates with masked values"}, {"label": "text", "id": 6, "page_no": 96, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.81739807128906, "t": 260.6902770996094, "r": 547.18481, "b": 294.74120999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9834569096565247, "cells": [{"id": 11, "text": "The masked values that are returned by a column mask can potentially cause the original ", "bbox": {"l": 136.8, "t": 261.52855999999997, "r": 533.76666, "b": 270.74158, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "data value to be accidentally overwritten, especially with applications using native record-level ", "bbox": {"l": 136.8, "t": 273.52837999999997, "r": 547.18481, "b": 282.74139, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "access.", "bbox": {"l": 136.79999, "t": 285.52823, "r": 170.50961, "b": 294.74120999999997, "coord_origin": "TOPLEFT"}}]}, "text": "The masked values that are returned by a column mask can potentially cause the original data value to be accidentally overwritten, especially with applications using native record-level access."}, {"label": "text", "id": 7, "page_no": 96, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.87274169921875, "t": 306.6039123535156, "r": 541.6969, "b": 352.80584716796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9875996112823486, "cells": [{"id": 14, "text": "For example, consider a table containing three columns of first name, last name, and tax ID ", "bbox": {"l": 136.79999, "t": 307.48804, "r": 541.6969, "b": 316.7010200000001, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "that is read by an RPG program. The user running the program is not authorized to see the ", "bbox": {"l": 136.79999, "t": 319.48785, "r": 540.84137, "b": 328.70084, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "tax ID value, so a masked value (*****3333) is written into the program\u2019s record buffer, as ", "bbox": {"l": 136.79999, "t": 331.48767, "r": 530.73004, "b": 340.70064999999994, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "shown Figure 5-1.", "bbox": {"l": 136.8, "t": 343.48749, "r": 216.65632999999997, "b": 352.70047000000005, "coord_origin": "TOPLEFT"}}]}, "text": "For example, consider a table containing three columns of first name, last name, and tax ID that is read by an RPG program. The user running the program is not authorized to see the tax ID value, so a masked value (*****3333) is written into the program\u2019s record buffer, as shown Figure 5-1."}, {"label": "text", "id": 8, "page_no": 96, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.08998107910156, "t": 364.7171325683594, "r": 547.14398, "b": 422.7193, "coord_origin": "TOPLEFT"}, "confidence": 0.9872422218322754, "cells": [{"id": 18, "text": "In this example, the application reads the data for an update to correct the misspelling of the ", "bbox": {"l": 136.8, "t": 365.50705, "r": 545.41302, "b": 374.72003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "last name. The last name value is changed to Smith in the buffer. Now, a WRITE request is ", "bbox": {"l": 136.79999, "t": 377.50687, "r": 540.198, "b": 386.71985, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "issued by the program, which uses the contents of the record buffer to update the row in the ", "bbox": {"l": 136.79999, "t": 389.50668, "r": 544.25977, "b": 398.71967, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "underlying DB2 table. Unfortunately, the record buffer still contains a masked value for the tax ", "bbox": {"l": 136.79999, "t": 401.50649999999996, "r": 547.14398, "b": 410.71948, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "ID, so the tax ID value in the table is accidentally set to the masked value.", "bbox": {"l": 136.79997, "t": 413.5063200000001, "r": 461.0538, "b": 422.7193, "coord_origin": "TOPLEFT"}}]}, "text": "In this example, the application reads the data for an update to correct the misspelling of the last name. The last name value is changed to Smith in the buffer. Now, a WRITE request is issued by the program, which uses the contents of the record buffer to update the row in the underlying DB2 table. Unfortunately, the record buffer still contains a masked value for the tax ID, so the tax ID value in the table is accidentally set to the masked value."}, {"label": "caption", "id": 9, "page_no": 96, "cluster": {"id": 9, "label": "caption", "bbox": {"l": 136.07180786132812, "t": 722.1818237304688, "r": 374.3499755859375, "b": 731.462898, "coord_origin": "TOPLEFT"}, "confidence": 0.9452338218688965, "cells": [{"id": 23, "text": "Figure 5-1 Accidental update with masked values scenario", "bbox": {"l": 136.8, "t": 723.137901, "r": 373.81857, "b": 731.462898, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 5-1 Accidental update with masked values scenario"}, {"label": "text", "id": 10, "page_no": 96, "cluster": {"id": 10, "label": "text", "bbox": {"l": 141.93385314941406, "t": 161.8843994140625, "r": 495.4548, "b": 196.31082153320312, "coord_origin": "TOPLEFT"}, "confidence": 0.9745184183120728, "cells": [{"id": 24, "text": "Important:", "bbox": {"l": 142.8, "t": 162.52868999999998, "r": 192.41673, "b": 171.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": " Based on the potential impacts of query result set and performance ", "bbox": {"l": 192.41974, "t": 162.52868999999998, "r": 495.4548, "b": 171.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "differences, you should perform extensive functional testing and performance ", "bbox": {"l": 142.80002, "t": 174.5285, "r": 485.46099999999996, "b": 183.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "benchmarking of applications and reports that use native query interfaces. ", "bbox": {"l": 142.80002, "t": 186.52832, "r": 473.03167999999994, "b": 195.74132999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Important: Based on the potential impacts of query result set and performance differences, you should perform extensive functional testing and performance benchmarking of applications and reports that use native query interfaces."}, {"label": "picture", "id": 11, "page_no": 96, "cluster": {"id": 11, "label": "picture", "bbox": {"l": 135.8197021484375, "t": 437.9704895019531, "r": 527.1633911132812, "b": 719.9022827148438, "coord_origin": "TOPLEFT"}, "confidence": 0.980728805065155, "cells": [{"id": 28, "text": "\u2026", "bbox": {"l": 233.05431000000002, "t": 474.24478, "r": 239.71214, "b": 484.23154, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "HLL Program using Native Record-Level Access", "bbox": {"l": 191.36845, "t": 446.30069, "r": 445.35726999999997, "b": 456.56488, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "READ", "bbox": {"l": 233.05431000000002, "t": 487.56049, "r": 259.57025, "b": 497.54724, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Record Buffer-> ", "bbox": {"l": 238.12204000000003, "t": 501.52307, "r": 313.72403, "b": 511.01047, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Joe Smyth *****3333", "bbox": {"l": 313.72516, "t": 501.52307, "r": 413.24988, "b": 511.02158, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "\u2026", "bbox": {"l": 233.05431000000002, "t": 527.65549, "r": 239.71214, "b": 537.64223, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "/* Application logic corrects last name to Smith */", "bbox": {"l": 233.05431000000002, "t": 541.43492, "r": 444.82404, "b": 550.24414, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "WRITE", "bbox": {"l": 233.05431000000002, "t": 565.97496, "r": 266.1937, "b": 575.96172, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "df", "bbox": {"l": 266.1586, "t": 579.93794, "r": 304.32135, "b": 589.4253699999999, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "f", "bbox": {"l": 289.75067, "t": 579.93794, "r": 307.61145, "b": 589.4253699999999, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "ih", "bbox": {"l": 345.7197, "t": 579.93794, "r": 362.1246, "b": 589.43646, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "*****", "bbox": {"l": 360.73679, "t": 579.93794, "r": 388.33353, "b": 589.43646, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "TaxID value changed", "bbox": {"l": 300.70541, "t": 624.36053, "r": 394.25247, "b": 633.85905, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Record Buffer-> ", "bbox": {"l": 240.6368, "t": 579.93794, "r": 313.68628, "b": 589.4253699999999, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Joe Smith ", "bbox": {"l": 313.72513, "t": 579.93794, "r": 360.76648, "b": 589.43646, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "*****3333", "bbox": {"l": 360.73679, "t": 579.93794, "r": 410.82452, "b": 589.43646, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Joe Smyth 111223333", "bbox": {"l": 149.09151, "t": 656.44766, "r": 258.49426, "b": 666.34564, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "TaxID value changed ", "bbox": {"l": 300.70541, "t": 624.36053, "r": 396.71878, "b": 633.85905, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "from 11122333 to *****3333", "bbox": {"l": 305.77271, "t": 637.67621, "r": 440.5318, "b": 647.17473, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 96, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.42791748046875, "t": 70.61494445800781, "r": 543.05804, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9628674387931824, "cells": [{"id": 2, "text": "For a list of the differences and additional details, see the ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 391.62125, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "IBM i Memo to Users Version 7.2", "bbox": {"l": 391.6192, "t": 71.50903000000005, "r": 537.52203, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": ", ", "bbox": {"l": 537.4187, "t": 71.50903000000005, "r": 543.05804, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "found at:", "bbox": {"l": 136.79861, "t": 83.50885000000017, "r": 175.42749, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "For a list of the differences and additional details, see the IBM i Memo to Users Version 7.2 , found at:"}, {"label": "text", "id": 3, "page_no": 96, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.22903442382812, "t": 99.42984008789062, "r": 521.8867797851562, "b": 109.78103637695312, "coord_origin": "TOPLEFT"}, "confidence": 0.8841223120689392, "cells": [{"id": 6, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgmtu.htm", "bbox": {"l": 136.79861, "t": 100.63806, "r": 521.5733, "b": 109.41283999999996, "coord_origin": "TOPLEFT"}}]}, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgmtu.htm"}, {"label": "text", "id": 4, "page_no": 96, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.18670654296875, "t": 121.53282165527344, "r": 544.66058, "b": 143.72107000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9777080416679382, "cells": [{"id": 7, "text": "In addition, the performance of a native query with SQE can be different. It is possible that a ", "bbox": {"l": 136.79861, "t": 122.50824, "r": 544.66058, "b": 131.72125000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "new index or keyed logical file might need to be created to improve the performance.", "bbox": {"l": 136.79861, "t": 134.50806, "r": 508.98987000000005, "b": 143.72107000000005, "coord_origin": "TOPLEFT"}}]}, "text": "In addition, the performance of a native query with SQE can be different. It is possible that a new index or keyed logical file might need to be created to improve the performance."}, {"label": "section_header", "id": 5, "page_no": 96, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 64.66980743408203, "t": 228.1348419189453, "r": 396.82227, "b": 244.21737670898438, "coord_origin": "TOPLEFT"}, "confidence": 0.967221200466156, "cells": [{"id": 9, "text": "5.3", "bbox": {"l": 64.800003, "t": 229.20068000000003, "r": 107.0743, "b": 243.96367999999995, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Accidental updates with masked values", "bbox": {"l": 110.99170000000001, "t": 229.20068000000003, "r": 396.82227, "b": 243.96367999999995, "coord_origin": "TOPLEFT"}}]}, "text": "5.3 Accidental updates with masked values"}, {"label": "text", "id": 6, "page_no": 96, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.81739807128906, "t": 260.6902770996094, "r": 547.18481, "b": 294.74120999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9834569096565247, "cells": [{"id": 11, "text": "The masked values that are returned by a column mask can potentially cause the original ", "bbox": {"l": 136.8, "t": 261.52855999999997, "r": 533.76666, "b": 270.74158, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "data value to be accidentally overwritten, especially with applications using native record-level ", "bbox": {"l": 136.8, "t": 273.52837999999997, "r": 547.18481, "b": 282.74139, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "access.", "bbox": {"l": 136.79999, "t": 285.52823, "r": 170.50961, "b": 294.74120999999997, "coord_origin": "TOPLEFT"}}]}, "text": "The masked values that are returned by a column mask can potentially cause the original data value to be accidentally overwritten, especially with applications using native record-level access."}, {"label": "text", "id": 7, "page_no": 96, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.87274169921875, "t": 306.6039123535156, "r": 541.6969, "b": 352.80584716796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9875996112823486, "cells": [{"id": 14, "text": "For example, consider a table containing three columns of first name, last name, and tax ID ", "bbox": {"l": 136.79999, "t": 307.48804, "r": 541.6969, "b": 316.7010200000001, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "that is read by an RPG program. The user running the program is not authorized to see the ", "bbox": {"l": 136.79999, "t": 319.48785, "r": 540.84137, "b": 328.70084, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "tax ID value, so a masked value (*****3333) is written into the program\u2019s record buffer, as ", "bbox": {"l": 136.79999, "t": 331.48767, "r": 530.73004, "b": 340.70064999999994, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "shown Figure 5-1.", "bbox": {"l": 136.8, "t": 343.48749, "r": 216.65632999999997, "b": 352.70047000000005, "coord_origin": "TOPLEFT"}}]}, "text": "For example, consider a table containing three columns of first name, last name, and tax ID that is read by an RPG program. The user running the program is not authorized to see the tax ID value, so a masked value (*****3333) is written into the program\u2019s record buffer, as shown Figure 5-1."}, {"label": "text", "id": 8, "page_no": 96, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.08998107910156, "t": 364.7171325683594, "r": 547.14398, "b": 422.7193, "coord_origin": "TOPLEFT"}, "confidence": 0.9872422218322754, "cells": [{"id": 18, "text": "In this example, the application reads the data for an update to correct the misspelling of the ", "bbox": {"l": 136.8, "t": 365.50705, "r": 545.41302, "b": 374.72003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "last name. The last name value is changed to Smith in the buffer. Now, a WRITE request is ", "bbox": {"l": 136.79999, "t": 377.50687, "r": 540.198, "b": 386.71985, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "issued by the program, which uses the contents of the record buffer to update the row in the ", "bbox": {"l": 136.79999, "t": 389.50668, "r": 544.25977, "b": 398.71967, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "underlying DB2 table. Unfortunately, the record buffer still contains a masked value for the tax ", "bbox": {"l": 136.79999, "t": 401.50649999999996, "r": 547.14398, "b": 410.71948, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "ID, so the tax ID value in the table is accidentally set to the masked value.", "bbox": {"l": 136.79997, "t": 413.5063200000001, "r": 461.0538, "b": 422.7193, "coord_origin": "TOPLEFT"}}]}, "text": "In this example, the application reads the data for an update to correct the misspelling of the last name. The last name value is changed to Smith in the buffer. Now, a WRITE request is issued by the program, which uses the contents of the record buffer to update the row in the underlying DB2 table. Unfortunately, the record buffer still contains a masked value for the tax ID, so the tax ID value in the table is accidentally set to the masked value."}, {"label": "caption", "id": 9, "page_no": 96, "cluster": {"id": 9, "label": "caption", "bbox": {"l": 136.07180786132812, "t": 722.1818237304688, "r": 374.3499755859375, "b": 731.462898, "coord_origin": "TOPLEFT"}, "confidence": 0.9452338218688965, "cells": [{"id": 23, "text": "Figure 5-1 Accidental update with masked values scenario", "bbox": {"l": 136.8, "t": 723.137901, "r": 373.81857, "b": 731.462898, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 5-1 Accidental update with masked values scenario"}, {"label": "text", "id": 10, "page_no": 96, "cluster": {"id": 10, "label": "text", "bbox": {"l": 141.93385314941406, "t": 161.8843994140625, "r": 495.4548, "b": 196.31082153320312, "coord_origin": "TOPLEFT"}, "confidence": 0.9745184183120728, "cells": [{"id": 24, "text": "Important:", "bbox": {"l": 142.8, "t": 162.52868999999998, "r": 192.41673, "b": 171.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": " Based on the potential impacts of query result set and performance ", "bbox": {"l": 192.41974, "t": 162.52868999999998, "r": 495.4548, "b": 171.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "differences, you should perform extensive functional testing and performance ", "bbox": {"l": 142.80002, "t": 174.5285, "r": 485.46099999999996, "b": 183.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "benchmarking of applications and reports that use native query interfaces. ", "bbox": {"l": 142.80002, "t": 186.52832, "r": 473.03167999999994, "b": 195.74132999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Important: Based on the potential impacts of query result set and performance differences, you should perform extensive functional testing and performance benchmarking of applications and reports that use native query interfaces."}, {"label": "picture", "id": 11, "page_no": 96, "cluster": {"id": 11, "label": "picture", "bbox": {"l": 135.8197021484375, "t": 437.9704895019531, "r": 527.1633911132812, "b": 719.9022827148438, "coord_origin": "TOPLEFT"}, "confidence": 0.980728805065155, "cells": [{"id": 28, "text": "\u2026", "bbox": {"l": 233.05431000000002, "t": 474.24478, "r": 239.71214, "b": 484.23154, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "HLL Program using Native Record-Level Access", "bbox": {"l": 191.36845, "t": 446.30069, "r": 445.35726999999997, "b": 456.56488, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "READ", "bbox": {"l": 233.05431000000002, "t": 487.56049, "r": 259.57025, "b": 497.54724, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Record Buffer-> ", "bbox": {"l": 238.12204000000003, "t": 501.52307, "r": 313.72403, "b": 511.01047, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Joe Smyth *****3333", "bbox": {"l": 313.72516, "t": 501.52307, "r": 413.24988, "b": 511.02158, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "\u2026", "bbox": {"l": 233.05431000000002, "t": 527.65549, "r": 239.71214, "b": 537.64223, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "/* Application logic corrects last name to Smith */", "bbox": {"l": 233.05431000000002, "t": 541.43492, "r": 444.82404, "b": 550.24414, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "WRITE", "bbox": {"l": 233.05431000000002, "t": 565.97496, "r": 266.1937, "b": 575.96172, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "df", "bbox": {"l": 266.1586, "t": 579.93794, "r": 304.32135, "b": 589.4253699999999, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "f", "bbox": {"l": 289.75067, "t": 579.93794, "r": 307.61145, "b": 589.4253699999999, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "ih", "bbox": {"l": 345.7197, "t": 579.93794, "r": 362.1246, "b": 589.43646, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "*****", "bbox": {"l": 360.73679, "t": 579.93794, "r": 388.33353, "b": 589.43646, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "TaxID value changed", "bbox": {"l": 300.70541, "t": 624.36053, "r": 394.25247, "b": 633.85905, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Record Buffer-> ", "bbox": {"l": 240.6368, "t": 579.93794, "r": 313.68628, "b": 589.4253699999999, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Joe Smith ", "bbox": {"l": 313.72513, "t": 579.93794, "r": 360.76648, "b": 589.43646, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "*****3333", "bbox": {"l": 360.73679, "t": 579.93794, "r": 410.82452, "b": 589.43646, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Joe Smyth 111223333", "bbox": {"l": 149.09151, "t": 656.44766, "r": 258.49426, "b": 666.34564, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "TaxID value changed ", "bbox": {"l": 300.70541, "t": 624.36053, "r": 396.71878, "b": 633.85905, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "from 11122333 to *****3333", "bbox": {"l": 305.77271, "t": 637.67621, "r": 440.5318, "b": 647.17473, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 96, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 353.64373779296875, "t": 754.87646484375, "r": 523.63324, "b": 764.1002197265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9528434872627258, "cells": [{"id": 0, "text": "Chapter 5. RCAC and non-SQL interfaces ", "bbox": {"l": 354.29999, "t": 755.538002, "r": 523.63324, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 5. RCAC and non-SQL interfaces"}, {"label": "page_footer", "id": 1, "page_no": 96, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.66748046875, "t": 754.2764282226562, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9146247506141663, "cells": [{"id": 1, "text": "81", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "81"}]}}, {"page_no": 97, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "82 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Obviously, careful planning and testing should be exercised to avoid accidental updates with ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 545.14294, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "masked values.", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 205.66844, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "DB2 for i also enhanced its check constraint support in the IBM i 7.2 release with a new ", "bbox": {"l": 136.8, "t": 105.52808000000005, "r": 524.7757, "b": 114.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "ON ", "bbox": {"l": 524.7002, "t": 105.67749000000003, "r": 539.69995, "b": 114.50207999999998, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "UPDATE", "bbox": {"l": 136.80002, "t": 117.67731000000003, "r": 166.73978, "b": 126.50189, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " clause that allows the existing value to be preserved when a masked value is detected ", "bbox": {"l": 166.79955, "t": 117.52788999999996, "r": 547.26752, "b": 126.74090999999987, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "by a check constraint. Details about how to employ this new check constraint support can be ", "bbox": {"l": 136.80002, "t": 129.52770999999996, "r": 546.92078, "b": 138.74072, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "found in 6.8.1, \u201cCheck constraint solution\u201d on page 108.", "bbox": {"l": 136.80002, "t": 141.52752999999996, "r": 381.83194, "b": 150.74054, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "5.4", "bbox": {"l": 64.800003, "t": 179.22069999999997, "r": 87.337959, "b": 193.9837, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "System CL commands considerations", "bbox": {"l": 91.845535, "t": 179.22069999999997, "r": 385.58484, "b": 193.9837, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "As stated earlier, RCAC controls are enforced on all data access interfaces. This enforcement ", "bbox": {"l": 136.8, "t": 211.48870999999997, "r": 547.26038, "b": 220.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "is not limited to programmatic interfaces; it also includes system CL commands that read and ", "bbox": {"l": 136.8, "t": 223.48852999999997, "r": 547.17889, "b": 232.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "insert data, such as the Create Duplicate Object (", "bbox": {"l": 136.80002, "t": 235.48834, "r": 355.65302, "b": 244.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "CRTDUPOBJ", "bbox": {"l": 355.49969, "t": 235.63775999999996, "r": 400.43921, "b": 244.46234000000004, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ") and Start DFU (", "bbox": {"l": 400.49997, "t": 235.48834, "r": 476.93701, "b": 244.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "STRDFU", "bbox": {"l": 476.99976, "t": 235.63775999999996, "r": 506.9395099999999, "b": 244.46234000000004, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": ") CL ", "bbox": {"l": 506.9395099999999, "t": 235.48834, "r": 528.60651, "b": 244.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "commands. This section documents the behavior of the Create Duplicate Object (", "bbox": {"l": 136.79901, "t": 247.48816, "r": 493.72556, "b": 256.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "CRTDUPOBJ", "bbox": {"l": 493.61899, "t": 247.63756999999998, "r": 538.55853, "b": 256.46216000000004, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "), ", "bbox": {"l": 538.55853, "t": 247.48816, "r": 547.48962, "b": 256.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Copy File (", "bbox": {"l": 136.79904, "t": 259.48798, "r": 184.84109, "b": 268.70099000000005, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "CPYF", "bbox": {"l": 184.79927, "t": 259.63739, "r": 204.77904, "b": 268.46198000000004, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "), and Copy Library (", "bbox": {"l": 204.77904, "t": 259.48798, "r": 295.79846, "b": 268.70099000000005, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "CPYLIB", "bbox": {"l": 295.7995, "t": 259.63739, "r": 325.73926, "b": 268.46198000000004, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": ") CL commands with RCAC.", "bbox": {"l": 325.80002, "t": 259.48798, "r": 450.0838600000001, "b": 268.70099000000005, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "5.4.1", "bbox": {"l": 64.800003, "t": 289.37473, "r": 93.960258, "b": 301.36269999999996, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Create Duplicate Object (CRTDUPOBJ) command", "bbox": {"l": 97.605309, "t": 289.37473, "r": 405.04672, "b": 301.36269999999996, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "The ", "bbox": {"l": 136.8, "t": 315.52872, "r": 156.82855, "b": 324.7417, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CRTDUPOBJ", "bbox": {"l": 156.77977, "t": 315.67810000000003, "r": 201.77904, "b": 324.50269, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " command is enhanced with a new Access Control (", "bbox": {"l": 201.78004, "t": 315.52872, "r": 430.97162, "b": 324.7417, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "ACCCTL", "bbox": {"l": 430.97955, "t": 315.67810000000003, "r": 460.91931, "b": 324.50269, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": ") parameter in the ", "bbox": {"l": 460.97906, "t": 315.52872, "r": 542.51752, "b": 324.7417, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "IBM i 7.2 release to copy RCAC controls to the new object being created. Row permissions ", "bbox": {"l": 136.79901, "t": 327.52853, "r": 541.07751, "b": 336.74152, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "and column masks are copied to the new object by default because the default value for the ", "bbox": {"l": 136.79901, "t": 339.52835, "r": 542.97083, "b": 348.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "ACCCTL", "bbox": {"l": 136.799, "t": 351.67755, "r": 166.73875, "b": 360.50214000000005, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": " parameter is ", "bbox": {"l": 166.79852, "t": 351.52817, "r": 227.73976, "b": 360.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "*ALL", "bbox": {"l": 227.75870000000003, "t": 351.67755, "r": 247.73845, "b": 360.45233, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": ".", "bbox": {"l": 247.73846, "t": 351.52817, "r": 250.50734, "b": 360.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "If the invoker of the ", "bbox": {"l": 136.798, "t": 373.48798, "r": 223.97386, "b": 382.70096, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "CRTDUPOBJ", "bbox": {"l": 223.91812, "t": 373.63735999999994, "r": 268.85764, "b": 382.46194, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": " command asks for data to be copied with a value of ", "bbox": {"l": 268.9184, "t": 373.48798, "r": 501.69666, "b": 382.70096, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "*YES", "bbox": {"l": 501.65869, "t": 373.63735999999994, "r": 521.63843, "b": 382.41214, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": " for ", "bbox": {"l": 521.69922, "t": 373.48798, "r": 538.55847, "b": 382.70096, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "the ", "bbox": {"l": 136.79901, "t": 385.48779, "r": 153.41228, "b": 394.70078, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "DATA", "bbox": {"l": 153.47902, "t": 385.63718, "r": 173.45877, "b": 394.46176, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": " parameter, the value of the ", "bbox": {"l": 173.45879, "t": 385.48779, "r": 297.59729, "b": 394.70078, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ACCCTL", "bbox": {"l": 297.59924, "t": 385.63718, "r": 327.59875, "b": 394.46176, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": " parameter must be ", "bbox": {"l": 327.59875, "t": 385.48779, "r": 416.82043, "b": 394.70078, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "*ALL", "bbox": {"l": 416.81845, "t": 385.63718, "r": 436.79819000000003, "b": 394.41195999999997, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": ". If not, the command ", "bbox": {"l": 436.79822, "t": 385.48779, "r": 533.45392, "b": 394.70078, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "invocation receives an error.", "bbox": {"l": 136.79803, "t": 397.48761, "r": 261.15759, "b": 406.70059000000003, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "When data is copied to the duplicated object with the ", "bbox": {"l": 136.79803, "t": 419.50717, "r": 370.7355, "b": 428.72015, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "DATA", "bbox": {"l": 370.67773, "t": 419.65656, "r": 390.59775, "b": 428.48114, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": " parameter, all rows and unmasked ", "bbox": {"l": 390.6575, "t": 419.50717, "r": 547.21686, "b": 428.72015, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "column values are copied into the new object, even if the command invoker is not authorized ", "bbox": {"l": 136.79701, "t": 431.50699, "r": 546.87817, "b": 440.71997, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "to view all rows or certain column values. This behavior occurs because the RCAC controls ", "bbox": {"l": 136.79701, "t": 443.50681, "r": 541.51062, "b": 452.71979, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "also are copied to the new object. The copied RCAC controls enforce that only authorized ", "bbox": {"l": 136.79701, "t": 455.50661999999994, "r": 535.04083, "b": 464.7196, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "users are allowed to view row and column values in the newly duplicated object.", "bbox": {"l": 136.79701, "t": 467.50644, "r": 489.0842599999999, "b": 476.71942, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "5.4.2", "bbox": {"l": 64.800003, "t": 497.39474, "r": 94.162216, "b": 509.38272, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Copy File (CPYF) command", "bbox": {"l": 97.832489, "t": 497.39474, "r": 270.95599, "b": 509.38272, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "The ", "bbox": {"l": 136.8, "t": 523.54874, "r": 156.82855, "b": 532.76172, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "CPYF", "bbox": {"l": 156.60048, "t": 523.69812, "r": 176.58025, "b": 532.52271, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": " command copies only data, so there is no new parameter to copy RCAC controls to ", "bbox": {"l": 176.58025, "t": 523.54874, "r": 547.28552, "b": 532.76172, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "the target table. Therefore, if ", "bbox": {"l": 136.8, "t": 535.54852, "r": 263.37762, "b": 544.76154, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "CPYF", "bbox": {"l": 263.39957, "t": 535.69794, "r": 283.3793, "b": 544.5224900000001, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": " is used to create a target table, there are no RCAC controls ", "bbox": {"l": 283.37933, "t": 535.54852, "r": 547.23456, "b": 544.76154, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "placed on the target table.", "bbox": {"l": 136.79901, "t": 547.54834, "r": 252.06812, "b": 556.76134, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "When RCAC controls are in place on the source table, the ", "bbox": {"l": 136.79901, "t": 569.50815, "r": 391.27509, "b": 578.72115, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "CPYF", "bbox": {"l": 391.25909, "t": 569.65755, "r": 411.23883, "b": 578.4821000000001, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": " command is limited to reading ", "bbox": {"l": 411.23886, "t": 569.50815, "r": 547.17792, "b": 578.72115, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "rows and column values that are based on the invoker of the ", "bbox": {"l": 136.79904, "t": 581.5079499999999, "r": 405.7749, "b": 590.72095, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "CPYF", "bbox": {"l": 405.71906, "t": 581.65735, "r": 425.69882, "b": 590.4819, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": " command. If a user is ", "bbox": {"l": 425.75858, "t": 581.5079499999999, "r": 526.83667, "b": 590.72095, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "authorized to see all rows and column values, then all rows and unmasked column values are ", "bbox": {"l": 136.79907, "t": 593.50775, "r": 547.32733, "b": 602.72075, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "copied to the target table (assuming no RCAC controls are on the target table). If a user ", "bbox": {"l": 136.79907, "t": 605.50755, "r": 526.13843, "b": 614.72055, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "without full access runs the ", "bbox": {"l": 136.79907, "t": 617.50735, "r": 258.86984, "b": 626.72035, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "CPYF", "bbox": {"l": 258.89871, "t": 617.65675, "r": 278.87845, "b": 626.48131, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": " command, the ", "bbox": {"l": 278.87848, "t": 617.50735, "r": 347.34949, "b": 626.72035, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "CPYF", "bbox": {"l": 347.27878, "t": 617.65675, "r": 367.25854, "b": 626.48131, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": " command can copy only a subset of the ", "bbox": {"l": 367.25854, "t": 617.50735, "r": 547.17291, "b": 626.72035, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "rows into the target table. In addition, if that user can view only masked column values, then ", "bbox": {"l": 136.7981, "t": 629.50716, "r": 543.80835, "b": 638.72015, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "masked values are copied into the target table. This also applies to the Copy to Import File ", "bbox": {"l": 136.7981, "t": 641.5069599999999, "r": 538.44824, "b": 650.71996, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "(", "bbox": {"l": 136.7981, "t": 653.50676, "r": 140.11478, "b": 662.71976, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "CPYTOIMPF", "bbox": {"l": 140.09784, "t": 653.65616, "r": 185.09709, "b": 662.48071, "coord_origin": "TOPLEFT"}}, {"id": 86, "text": ") command.", "bbox": {"l": 185.09811, "t": 653.50676, "r": 237.83435000000003, "b": 662.71976, "coord_origin": "TOPLEFT"}}, {"id": 87, "text": "If the target table has RCAC controls defined and activated, then the ", "bbox": {"l": 136.7981, "t": 675.52632, "r": 441.13778999999994, "b": 684.73933, "coord_origin": "TOPLEFT"}}, {"id": 88, "text": "CPYF", "bbox": {"l": 441.05816999999996, "t": 675.67573, "r": 461.0379, "b": 684.50028, "coord_origin": "TOPLEFT"}}, {"id": 89, "text": " command is ", "bbox": {"l": 461.03792999999996, "t": 675.52632, "r": 520.46222, "b": 684.73933, "coord_origin": "TOPLEFT"}}, {"id": 90, "text": "allowed only to add or replace rows in the target table based on the RCAC controls. If ", "bbox": {"l": 136.7981, "t": 687.52613, "r": 515.72437, "b": 696.739136, "coord_origin": "TOPLEFT"}}, {"id": 91, "text": "CPYF", "bbox": {"l": 515.75818, "t": 687.67554, "r": 535.73792, "b": 696.500092, "coord_origin": "TOPLEFT"}}, {"id": 92, "text": "tries to add a row to the target table that the command invoker is not allowed to view ", "bbox": {"l": 136.7981, "t": 699.52594, "r": 510.53024, "b": 708.738945, "coord_origin": "TOPLEFT"}}, {"id": 93, "text": "according to the target RCAC controls, then an error is received.", "bbox": {"l": 136.7981, "t": 711.525749, "r": 420.63605, "b": 720.738754, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.22566223144531, "t": 754.41650390625, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9210326671600342, "cells": [{"id": 0, "text": "82 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.18901824951172, "t": 754.7184448242188, "r": 334.42142, "b": 763.9121704101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9529549479484558, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.91806030273438, "t": 70.726806640625, "r": 545.14294, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9776225686073303, "cells": [{"id": 2, "text": "Obviously, careful planning and testing should be exercised to avoid accidental updates with ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 545.14294, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "masked values.", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 205.66844, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.93345642089844, "t": 104.64000701904297, "r": 547.26752, "b": 150.74054, "coord_origin": "TOPLEFT"}, "confidence": 0.9867440462112427, "cells": [{"id": 4, "text": "DB2 for i also enhanced its check constraint support in the IBM i 7.2 release with a new ", "bbox": {"l": 136.8, "t": 105.52808000000005, "r": 524.7757, "b": 114.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "ON ", "bbox": {"l": 524.7002, "t": 105.67749000000003, "r": 539.69995, "b": 114.50207999999998, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "UPDATE", "bbox": {"l": 136.80002, "t": 117.67731000000003, "r": 166.73978, "b": 126.50189, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " clause that allows the existing value to be preserved when a masked value is detected ", "bbox": {"l": 166.79955, "t": 117.52788999999996, "r": 547.26752, "b": 126.74090999999987, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "by a check constraint. Details about how to employ this new check constraint support can be ", "bbox": {"l": 136.80002, "t": 129.52770999999996, "r": 546.92078, "b": 138.74072, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "found in 6.8.1, \u201cCheck constraint solution\u201d on page 108.", "bbox": {"l": 136.80002, "t": 141.52752999999996, "r": 381.83194, "b": 150.74054, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 64.44256591796875, "t": 177.93212890625, "r": 385.58484, "b": 194.52586364746094, "coord_origin": "TOPLEFT"}, "confidence": 0.9684726595878601, "cells": [{"id": 10, "text": "5.4", "bbox": {"l": 64.800003, "t": 179.22069999999997, "r": 87.337959, "b": 193.9837, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "System CL commands considerations", "bbox": {"l": 91.845535, "t": 179.22069999999997, "r": 385.58484, "b": 193.9837, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.84999084472656, "t": 210.4622344970703, "r": 547.48962, "b": 269.1277770996094, "coord_origin": "TOPLEFT"}, "confidence": 0.9875320792198181, "cells": [{"id": 12, "text": "As stated earlier, RCAC controls are enforced on all data access interfaces. This enforcement ", "bbox": {"l": 136.8, "t": 211.48870999999997, "r": 547.26038, "b": 220.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "is not limited to programmatic interfaces; it also includes system CL commands that read and ", "bbox": {"l": 136.8, "t": 223.48852999999997, "r": 547.17889, "b": 232.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "insert data, such as the Create Duplicate Object (", "bbox": {"l": 136.80002, "t": 235.48834, "r": 355.65302, "b": 244.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "CRTDUPOBJ", "bbox": {"l": 355.49969, "t": 235.63775999999996, "r": 400.43921, "b": 244.46234000000004, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ") and Start DFU (", "bbox": {"l": 400.49997, "t": 235.48834, "r": 476.93701, "b": 244.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "STRDFU", "bbox": {"l": 476.99976, "t": 235.63775999999996, "r": 506.9395099999999, "b": 244.46234000000004, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": ") CL ", "bbox": {"l": 506.9395099999999, "t": 235.48834, "r": 528.60651, "b": 244.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "commands. This section documents the behavior of the Create Duplicate Object (", "bbox": {"l": 136.79901, "t": 247.48816, "r": 493.72556, "b": 256.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "CRTDUPOBJ", "bbox": {"l": 493.61899, "t": 247.63756999999998, "r": 538.55853, "b": 256.46216000000004, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "), ", "bbox": {"l": 538.55853, "t": 247.48816, "r": 547.48962, "b": 256.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Copy File (", "bbox": {"l": 136.79904, "t": 259.48798, "r": 184.84109, "b": 268.70099000000005, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "CPYF", "bbox": {"l": 184.79927, "t": 259.63739, "r": 204.77904, "b": 268.46198000000004, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "), and Copy Library (", "bbox": {"l": 204.77904, "t": 259.48798, "r": 295.79846, "b": 268.70099000000005, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "CPYLIB", "bbox": {"l": 295.7995, "t": 259.63739, "r": 325.73926, "b": 268.46198000000004, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": ") CL commands with RCAC.", "bbox": {"l": 325.80002, "t": 259.48798, "r": 450.0838600000001, "b": 268.70099000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "section_header", "bbox": {"l": 64.2880630493164, "t": 288.19952392578125, "r": 405.04672, "b": 301.8869323730469, "coord_origin": "TOPLEFT"}, "confidence": 0.9681828022003174, "cells": [{"id": 27, "text": "5.4.1", "bbox": {"l": 64.800003, "t": 289.37473, "r": 93.960258, "b": 301.36269999999996, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Create Duplicate Object (CRTDUPOBJ) command", "bbox": {"l": 97.605309, "t": 289.37473, "r": 405.04672, "b": 301.36269999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 135.64491271972656, "t": 314.66900634765625, "r": 542.97083, "b": 360.74115000000006, "coord_origin": "TOPLEFT"}, "confidence": 0.987525224685669, "cells": [{"id": 29, "text": "The ", "bbox": {"l": 136.8, "t": 315.52872, "r": 156.82855, "b": 324.7417, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CRTDUPOBJ", "bbox": {"l": 156.77977, "t": 315.67810000000003, "r": 201.77904, "b": 324.50269, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " command is enhanced with a new Access Control (", "bbox": {"l": 201.78004, "t": 315.52872, "r": 430.97162, "b": 324.7417, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "ACCCTL", "bbox": {"l": 430.97955, "t": 315.67810000000003, "r": 460.91931, "b": 324.50269, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": ") parameter in the ", "bbox": {"l": 460.97906, "t": 315.52872, "r": 542.51752, "b": 324.7417, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "IBM i 7.2 release to copy RCAC controls to the new object being created. Row permissions ", "bbox": {"l": 136.79901, "t": 327.52853, "r": 541.07751, "b": 336.74152, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "and column masks are copied to the new object by default because the default value for the ", "bbox": {"l": 136.79901, "t": 339.52835, "r": 542.97083, "b": 348.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "ACCCTL", "bbox": {"l": 136.799, "t": 351.67755, "r": 166.73875, "b": 360.50214000000005, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": " parameter is ", "bbox": {"l": 166.79852, "t": 351.52817, "r": 227.73976, "b": 360.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "*ALL", "bbox": {"l": 227.75870000000003, "t": 351.67755, "r": 247.73845, "b": 360.45233, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": ".", "bbox": {"l": 247.73846, "t": 351.52817, "r": 250.50734, "b": 360.74115000000006, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 135.95484924316406, "t": 372.71258544921875, "r": 538.55847, "b": 406.70059000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9827100038528442, "cells": [{"id": 40, "text": "If the invoker of the ", "bbox": {"l": 136.798, "t": 373.48798, "r": 223.97386, "b": 382.70096, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "CRTDUPOBJ", "bbox": {"l": 223.91812, "t": 373.63735999999994, "r": 268.85764, "b": 382.46194, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": " command asks for data to be copied with a value of ", "bbox": {"l": 268.9184, "t": 373.48798, "r": 501.69666, "b": 382.70096, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "*YES", "bbox": {"l": 501.65869, "t": 373.63735999999994, "r": 521.63843, "b": 382.41214, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": " for ", "bbox": {"l": 521.69922, "t": 373.48798, "r": 538.55847, "b": 382.70096, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "the ", "bbox": {"l": 136.79901, "t": 385.48779, "r": 153.41228, "b": 394.70078, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "DATA", "bbox": {"l": 153.47902, "t": 385.63718, "r": 173.45877, "b": 394.46176, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": " parameter, the value of the ", "bbox": {"l": 173.45879, "t": 385.48779, "r": 297.59729, "b": 394.70078, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ACCCTL", "bbox": {"l": 297.59924, "t": 385.63718, "r": 327.59875, "b": 394.46176, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": " parameter must be ", "bbox": {"l": 327.59875, "t": 385.48779, "r": 416.82043, "b": 394.70078, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "*ALL", "bbox": {"l": 416.81845, "t": 385.63718, "r": 436.79819000000003, "b": 394.41195999999997, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": ". If not, the command ", "bbox": {"l": 436.79822, "t": 385.48779, "r": 533.45392, "b": 394.70078, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "invocation receives an error.", "bbox": {"l": 136.79803, "t": 397.48761, "r": 261.15759, "b": 406.70059000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 135.810791015625, "t": 418.80743408203125, "r": 547.21686, "b": 476.839599609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9882908463478088, "cells": [{"id": 53, "text": "When data is copied to the duplicated object with the ", "bbox": {"l": 136.79803, "t": 419.50717, "r": 370.7355, "b": 428.72015, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "DATA", "bbox": {"l": 370.67773, "t": 419.65656, "r": 390.59775, "b": 428.48114, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": " parameter, all rows and unmasked ", "bbox": {"l": 390.6575, "t": 419.50717, "r": 547.21686, "b": 428.72015, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "column values are copied into the new object, even if the command invoker is not authorized ", "bbox": {"l": 136.79701, "t": 431.50699, "r": 546.87817, "b": 440.71997, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "to view all rows or certain column values. This behavior occurs because the RCAC controls ", "bbox": {"l": 136.79701, "t": 443.50681, "r": 541.51062, "b": 452.71979, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "also are copied to the new object. The copied RCAC controls enforce that only authorized ", "bbox": {"l": 136.79701, "t": 455.50661999999994, "r": 535.04083, "b": 464.7196, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "users are allowed to view row and column values in the newly duplicated object.", "bbox": {"l": 136.79701, "t": 467.50644, "r": 489.0842599999999, "b": 476.71942, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "section_header", "bbox": {"l": 64.34564208984375, "t": 495.8337097167969, "r": 270.95599, "b": 509.7830810546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9675832390785217, "cells": [{"id": 60, "text": "5.4.2", "bbox": {"l": 64.800003, "t": 497.39474, "r": 94.162216, "b": 509.38272, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Copy File (CPYF) command", "bbox": {"l": 97.832489, "t": 497.39474, "r": 270.95599, "b": 509.38272, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 135.7013702392578, "t": 522.5596313476562, "r": 547.28552, "b": 557.3438110351562, "coord_origin": "TOPLEFT"}, "confidence": 0.9865304827690125, "cells": [{"id": 62, "text": "The ", "bbox": {"l": 136.8, "t": 523.54874, "r": 156.82855, "b": 532.76172, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "CPYF", "bbox": {"l": 156.60048, "t": 523.69812, "r": 176.58025, "b": 532.52271, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": " command copies only data, so there is no new parameter to copy RCAC controls to ", "bbox": {"l": 176.58025, "t": 523.54874, "r": 547.28552, "b": 532.76172, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "the target table. Therefore, if ", "bbox": {"l": 136.8, "t": 535.54852, "r": 263.37762, "b": 544.76154, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "CPYF", "bbox": {"l": 263.39957, "t": 535.69794, "r": 283.3793, "b": 544.5224900000001, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": " is used to create a target table, there are no RCAC controls ", "bbox": {"l": 283.37933, "t": 535.54852, "r": 547.23456, "b": 544.76154, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "placed on the target table.", "bbox": {"l": 136.79901, "t": 547.54834, "r": 252.06812, "b": 556.76134, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 135.7746124267578, "t": 568.5869750976562, "r": 547.32733, "b": 662.71976, "coord_origin": "TOPLEFT"}, "confidence": 0.9887324571609497, "cells": [{"id": 69, "text": "When RCAC controls are in place on the source table, the ", "bbox": {"l": 136.79901, "t": 569.50815, "r": 391.27509, "b": 578.72115, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "CPYF", "bbox": {"l": 391.25909, "t": 569.65755, "r": 411.23883, "b": 578.4821000000001, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": " command is limited to reading ", "bbox": {"l": 411.23886, "t": 569.50815, "r": 547.17792, "b": 578.72115, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "rows and column values that are based on the invoker of the ", "bbox": {"l": 136.79904, "t": 581.5079499999999, "r": 405.7749, "b": 590.72095, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "CPYF", "bbox": {"l": 405.71906, "t": 581.65735, "r": 425.69882, "b": 590.4819, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": " command. If a user is ", "bbox": {"l": 425.75858, "t": 581.5079499999999, "r": 526.83667, "b": 590.72095, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "authorized to see all rows and column values, then all rows and unmasked column values are ", "bbox": {"l": 136.79907, "t": 593.50775, "r": 547.32733, "b": 602.72075, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "copied to the target table (assuming no RCAC controls are on the target table). If a user ", "bbox": {"l": 136.79907, "t": 605.50755, "r": 526.13843, "b": 614.72055, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "without full access runs the ", "bbox": {"l": 136.79907, "t": 617.50735, "r": 258.86984, "b": 626.72035, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "CPYF", "bbox": {"l": 258.89871, "t": 617.65675, "r": 278.87845, "b": 626.48131, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": " command, the ", "bbox": {"l": 278.87848, "t": 617.50735, "r": 347.34949, "b": 626.72035, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "CPYF", "bbox": {"l": 347.27878, "t": 617.65675, "r": 367.25854, "b": 626.48131, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": " command can copy only a subset of the ", "bbox": {"l": 367.25854, "t": 617.50735, "r": 547.17291, "b": 626.72035, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "rows into the target table. In addition, if that user can view only masked column values, then ", "bbox": {"l": 136.7981, "t": 629.50716, "r": 543.80835, "b": 638.72015, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "masked values are copied into the target table. This also applies to the Copy to Import File ", "bbox": {"l": 136.7981, "t": 641.5069599999999, "r": 538.44824, "b": 650.71996, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "(", "bbox": {"l": 136.7981, "t": 653.50676, "r": 140.11478, "b": 662.71976, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "CPYTOIMPF", "bbox": {"l": 140.09784, "t": 653.65616, "r": 185.09709, "b": 662.48071, "coord_origin": "TOPLEFT"}}, {"id": 86, "text": ") command.", "bbox": {"l": 185.09811, "t": 653.50676, "r": 237.83435000000003, "b": 662.71976, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 136.0672149658203, "t": 674.6004638671875, "r": 535.8108520507812, "b": 720.9636840820312, "coord_origin": "TOPLEFT"}, "confidence": 0.9881445169448853, "cells": [{"id": 87, "text": "If the target table has RCAC controls defined and activated, then the ", "bbox": {"l": 136.7981, "t": 675.52632, "r": 441.13778999999994, "b": 684.73933, "coord_origin": "TOPLEFT"}}, {"id": 88, "text": "CPYF", "bbox": {"l": 441.05816999999996, "t": 675.67573, "r": 461.0379, "b": 684.50028, "coord_origin": "TOPLEFT"}}, {"id": 89, "text": " command is ", "bbox": {"l": 461.03792999999996, "t": 675.52632, "r": 520.46222, "b": 684.73933, "coord_origin": "TOPLEFT"}}, {"id": 90, "text": "allowed only to add or replace rows in the target table based on the RCAC controls. If ", "bbox": {"l": 136.7981, "t": 687.52613, "r": 515.72437, "b": 696.739136, "coord_origin": "TOPLEFT"}}, {"id": 91, "text": "CPYF", "bbox": {"l": 515.75818, "t": 687.67554, "r": 535.73792, "b": 696.500092, "coord_origin": "TOPLEFT"}}, {"id": 92, "text": "tries to add a row to the target table that the command invoker is not allowed to view ", "bbox": {"l": 136.7981, "t": 699.52594, "r": 510.53024, "b": 708.738945, "coord_origin": "TOPLEFT"}}, {"id": 93, "text": "according to the target RCAC controls, then an error is received.", "bbox": {"l": 136.7981, "t": 711.525749, "r": 420.63605, "b": 720.738754, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 97, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.22566223144531, "t": 754.41650390625, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9210326671600342, "cells": [{"id": 0, "text": "82 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "82"}, {"label": "page_footer", "id": 1, "page_no": 97, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.18901824951172, "t": 754.7184448242188, "r": 334.42142, "b": 763.9121704101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9529549479484558, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 2, "page_no": 97, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.91806030273438, "t": 70.726806640625, "r": 545.14294, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9776225686073303, "cells": [{"id": 2, "text": "Obviously, careful planning and testing should be exercised to avoid accidental updates with ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 545.14294, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "masked values.", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 205.66844, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Obviously, careful planning and testing should be exercised to avoid accidental updates with masked values."}, {"label": "text", "id": 3, "page_no": 97, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.93345642089844, "t": 104.64000701904297, "r": 547.26752, "b": 150.74054, "coord_origin": "TOPLEFT"}, "confidence": 0.9867440462112427, "cells": [{"id": 4, "text": "DB2 for i also enhanced its check constraint support in the IBM i 7.2 release with a new ", "bbox": {"l": 136.8, "t": 105.52808000000005, "r": 524.7757, "b": 114.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "ON ", "bbox": {"l": 524.7002, "t": 105.67749000000003, "r": 539.69995, "b": 114.50207999999998, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "UPDATE", "bbox": {"l": 136.80002, "t": 117.67731000000003, "r": 166.73978, "b": 126.50189, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " clause that allows the existing value to be preserved when a masked value is detected ", "bbox": {"l": 166.79955, "t": 117.52788999999996, "r": 547.26752, "b": 126.74090999999987, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "by a check constraint. Details about how to employ this new check constraint support can be ", "bbox": {"l": 136.80002, "t": 129.52770999999996, "r": 546.92078, "b": 138.74072, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "found in 6.8.1, \u201cCheck constraint solution\u201d on page 108.", "bbox": {"l": 136.80002, "t": 141.52752999999996, "r": 381.83194, "b": 150.74054, "coord_origin": "TOPLEFT"}}]}, "text": "DB2 for i also enhanced its check constraint support in the IBM i 7.2 release with a new ON UPDATE clause that allows the existing value to be preserved when a masked value is detected by a check constraint. Details about how to employ this new check constraint support can be found in 6.8.1, \u201cCheck constraint solution\u201d on page 108."}, {"label": "section_header", "id": 4, "page_no": 97, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.44256591796875, "t": 177.93212890625, "r": 385.58484, "b": 194.52586364746094, "coord_origin": "TOPLEFT"}, "confidence": 0.9684726595878601, "cells": [{"id": 10, "text": "5.4", "bbox": {"l": 64.800003, "t": 179.22069999999997, "r": 87.337959, "b": 193.9837, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "System CL commands considerations", "bbox": {"l": 91.845535, "t": 179.22069999999997, "r": 385.58484, "b": 193.9837, "coord_origin": "TOPLEFT"}}]}, "text": "5.4 System CL commands considerations"}, {"label": "text", "id": 5, "page_no": 97, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.84999084472656, "t": 210.4622344970703, "r": 547.48962, "b": 269.1277770996094, "coord_origin": "TOPLEFT"}, "confidence": 0.9875320792198181, "cells": [{"id": 12, "text": "As stated earlier, RCAC controls are enforced on all data access interfaces. This enforcement ", "bbox": {"l": 136.8, "t": 211.48870999999997, "r": 547.26038, "b": 220.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "is not limited to programmatic interfaces; it also includes system CL commands that read and ", "bbox": {"l": 136.8, "t": 223.48852999999997, "r": 547.17889, "b": 232.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "insert data, such as the Create Duplicate Object (", "bbox": {"l": 136.80002, "t": 235.48834, "r": 355.65302, "b": 244.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "CRTDUPOBJ", "bbox": {"l": 355.49969, "t": 235.63775999999996, "r": 400.43921, "b": 244.46234000000004, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ") and Start DFU (", "bbox": {"l": 400.49997, "t": 235.48834, "r": 476.93701, "b": 244.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "STRDFU", "bbox": {"l": 476.99976, "t": 235.63775999999996, "r": 506.9395099999999, "b": 244.46234000000004, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": ") CL ", "bbox": {"l": 506.9395099999999, "t": 235.48834, "r": 528.60651, "b": 244.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "commands. This section documents the behavior of the Create Duplicate Object (", "bbox": {"l": 136.79901, "t": 247.48816, "r": 493.72556, "b": 256.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "CRTDUPOBJ", "bbox": {"l": 493.61899, "t": 247.63756999999998, "r": 538.55853, "b": 256.46216000000004, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "), ", "bbox": {"l": 538.55853, "t": 247.48816, "r": 547.48962, "b": 256.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Copy File (", "bbox": {"l": 136.79904, "t": 259.48798, "r": 184.84109, "b": 268.70099000000005, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "CPYF", "bbox": {"l": 184.79927, "t": 259.63739, "r": 204.77904, "b": 268.46198000000004, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "), and Copy Library (", "bbox": {"l": 204.77904, "t": 259.48798, "r": 295.79846, "b": 268.70099000000005, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "CPYLIB", "bbox": {"l": 295.7995, "t": 259.63739, "r": 325.73926, "b": 268.46198000000004, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": ") CL commands with RCAC.", "bbox": {"l": 325.80002, "t": 259.48798, "r": 450.0838600000001, "b": 268.70099000000005, "coord_origin": "TOPLEFT"}}]}, "text": "As stated earlier, RCAC controls are enforced on all data access interfaces. This enforcement is not limited to programmatic interfaces; it also includes system CL commands that read and insert data, such as the Create Duplicate Object ( CRTDUPOBJ ) and Start DFU ( STRDFU ) CL commands. This section documents the behavior of the Create Duplicate Object ( CRTDUPOBJ ), Copy File ( CPYF ), and Copy Library ( CPYLIB ) CL commands with RCAC."}, {"label": "section_header", "id": 6, "page_no": 97, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 64.2880630493164, "t": 288.19952392578125, "r": 405.04672, "b": 301.8869323730469, "coord_origin": "TOPLEFT"}, "confidence": 0.9681828022003174, "cells": [{"id": 27, "text": "5.4.1", "bbox": {"l": 64.800003, "t": 289.37473, "r": 93.960258, "b": 301.36269999999996, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Create Duplicate Object (CRTDUPOBJ) command", "bbox": {"l": 97.605309, "t": 289.37473, "r": 405.04672, "b": 301.36269999999996, "coord_origin": "TOPLEFT"}}]}, "text": "5.4.1 Create Duplicate Object (CRTDUPOBJ) command"}, {"label": "text", "id": 7, "page_no": 97, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.64491271972656, "t": 314.66900634765625, "r": 542.97083, "b": 360.74115000000006, "coord_origin": "TOPLEFT"}, "confidence": 0.987525224685669, "cells": [{"id": 29, "text": "The ", "bbox": {"l": 136.8, "t": 315.52872, "r": 156.82855, "b": 324.7417, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CRTDUPOBJ", "bbox": {"l": 156.77977, "t": 315.67810000000003, "r": 201.77904, "b": 324.50269, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " command is enhanced with a new Access Control (", "bbox": {"l": 201.78004, "t": 315.52872, "r": 430.97162, "b": 324.7417, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "ACCCTL", "bbox": {"l": 430.97955, "t": 315.67810000000003, "r": 460.91931, "b": 324.50269, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": ") parameter in the ", "bbox": {"l": 460.97906, "t": 315.52872, "r": 542.51752, "b": 324.7417, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "IBM i 7.2 release to copy RCAC controls to the new object being created. Row permissions ", "bbox": {"l": 136.79901, "t": 327.52853, "r": 541.07751, "b": 336.74152, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "and column masks are copied to the new object by default because the default value for the ", "bbox": {"l": 136.79901, "t": 339.52835, "r": 542.97083, "b": 348.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "ACCCTL", "bbox": {"l": 136.799, "t": 351.67755, "r": 166.73875, "b": 360.50214000000005, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": " parameter is ", "bbox": {"l": 166.79852, "t": 351.52817, "r": 227.73976, "b": 360.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "*ALL", "bbox": {"l": 227.75870000000003, "t": 351.67755, "r": 247.73845, "b": 360.45233, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": ".", "bbox": {"l": 247.73846, "t": 351.52817, "r": 250.50734, "b": 360.74115000000006, "coord_origin": "TOPLEFT"}}]}, "text": "The CRTDUPOBJ command is enhanced with a new Access Control ( ACCCTL ) parameter in the IBM i 7.2 release to copy RCAC controls to the new object being created. Row permissions and column masks are copied to the new object by default because the default value for the ACCCTL parameter is *ALL ."}, {"label": "text", "id": 8, "page_no": 97, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.95484924316406, "t": 372.71258544921875, "r": 538.55847, "b": 406.70059000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9827100038528442, "cells": [{"id": 40, "text": "If the invoker of the ", "bbox": {"l": 136.798, "t": 373.48798, "r": 223.97386, "b": 382.70096, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "CRTDUPOBJ", "bbox": {"l": 223.91812, "t": 373.63735999999994, "r": 268.85764, "b": 382.46194, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": " command asks for data to be copied with a value of ", "bbox": {"l": 268.9184, "t": 373.48798, "r": 501.69666, "b": 382.70096, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "*YES", "bbox": {"l": 501.65869, "t": 373.63735999999994, "r": 521.63843, "b": 382.41214, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": " for ", "bbox": {"l": 521.69922, "t": 373.48798, "r": 538.55847, "b": 382.70096, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "the ", "bbox": {"l": 136.79901, "t": 385.48779, "r": 153.41228, "b": 394.70078, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "DATA", "bbox": {"l": 153.47902, "t": 385.63718, "r": 173.45877, "b": 394.46176, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": " parameter, the value of the ", "bbox": {"l": 173.45879, "t": 385.48779, "r": 297.59729, "b": 394.70078, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ACCCTL", "bbox": {"l": 297.59924, "t": 385.63718, "r": 327.59875, "b": 394.46176, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": " parameter must be ", "bbox": {"l": 327.59875, "t": 385.48779, "r": 416.82043, "b": 394.70078, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "*ALL", "bbox": {"l": 416.81845, "t": 385.63718, "r": 436.79819000000003, "b": 394.41195999999997, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": ". If not, the command ", "bbox": {"l": 436.79822, "t": 385.48779, "r": 533.45392, "b": 394.70078, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "invocation receives an error.", "bbox": {"l": 136.79803, "t": 397.48761, "r": 261.15759, "b": 406.70059000000003, "coord_origin": "TOPLEFT"}}]}, "text": "If the invoker of the CRTDUPOBJ command asks for data to be copied with a value of *YES for the DATA parameter, the value of the ACCCTL parameter must be *ALL . If not, the command invocation receives an error."}, {"label": "text", "id": 9, "page_no": 97, "cluster": {"id": 9, "label": "text", "bbox": {"l": 135.810791015625, "t": 418.80743408203125, "r": 547.21686, "b": 476.839599609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9882908463478088, "cells": [{"id": 53, "text": "When data is copied to the duplicated object with the ", "bbox": {"l": 136.79803, "t": 419.50717, "r": 370.7355, "b": 428.72015, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "DATA", "bbox": {"l": 370.67773, "t": 419.65656, "r": 390.59775, "b": 428.48114, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": " parameter, all rows and unmasked ", "bbox": {"l": 390.6575, "t": 419.50717, "r": 547.21686, "b": 428.72015, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "column values are copied into the new object, even if the command invoker is not authorized ", "bbox": {"l": 136.79701, "t": 431.50699, "r": 546.87817, "b": 440.71997, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "to view all rows or certain column values. This behavior occurs because the RCAC controls ", "bbox": {"l": 136.79701, "t": 443.50681, "r": 541.51062, "b": 452.71979, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "also are copied to the new object. The copied RCAC controls enforce that only authorized ", "bbox": {"l": 136.79701, "t": 455.50661999999994, "r": 535.04083, "b": 464.7196, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "users are allowed to view row and column values in the newly duplicated object.", "bbox": {"l": 136.79701, "t": 467.50644, "r": 489.0842599999999, "b": 476.71942, "coord_origin": "TOPLEFT"}}]}, "text": "When data is copied to the duplicated object with the DATA parameter, all rows and unmasked column values are copied into the new object, even if the command invoker is not authorized to view all rows or certain column values. This behavior occurs because the RCAC controls also are copied to the new object. The copied RCAC controls enforce that only authorized users are allowed to view row and column values in the newly duplicated object."}, {"label": "section_header", "id": 10, "page_no": 97, "cluster": {"id": 10, "label": "section_header", "bbox": {"l": 64.34564208984375, "t": 495.8337097167969, "r": 270.95599, "b": 509.7830810546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9675832390785217, "cells": [{"id": 60, "text": "5.4.2", "bbox": {"l": 64.800003, "t": 497.39474, "r": 94.162216, "b": 509.38272, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Copy File (CPYF) command", "bbox": {"l": 97.832489, "t": 497.39474, "r": 270.95599, "b": 509.38272, "coord_origin": "TOPLEFT"}}]}, "text": "5.4.2 Copy File (CPYF) command"}, {"label": "text", "id": 11, "page_no": 97, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.7013702392578, "t": 522.5596313476562, "r": 547.28552, "b": 557.3438110351562, "coord_origin": "TOPLEFT"}, "confidence": 0.9865304827690125, "cells": [{"id": 62, "text": "The ", "bbox": {"l": 136.8, "t": 523.54874, "r": 156.82855, "b": 532.76172, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "CPYF", "bbox": {"l": 156.60048, "t": 523.69812, "r": 176.58025, "b": 532.52271, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": " command copies only data, so there is no new parameter to copy RCAC controls to ", "bbox": {"l": 176.58025, "t": 523.54874, "r": 547.28552, "b": 532.76172, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "the target table. Therefore, if ", "bbox": {"l": 136.8, "t": 535.54852, "r": 263.37762, "b": 544.76154, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "CPYF", "bbox": {"l": 263.39957, "t": 535.69794, "r": 283.3793, "b": 544.5224900000001, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": " is used to create a target table, there are no RCAC controls ", "bbox": {"l": 283.37933, "t": 535.54852, "r": 547.23456, "b": 544.76154, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "placed on the target table.", "bbox": {"l": 136.79901, "t": 547.54834, "r": 252.06812, "b": 556.76134, "coord_origin": "TOPLEFT"}}]}, "text": "The CPYF command copies only data, so there is no new parameter to copy RCAC controls to the target table. Therefore, if CPYF is used to create a target table, there are no RCAC controls placed on the target table."}, {"label": "text", "id": 12, "page_no": 97, "cluster": {"id": 12, "label": "text", "bbox": {"l": 135.7746124267578, "t": 568.5869750976562, "r": 547.32733, "b": 662.71976, "coord_origin": "TOPLEFT"}, "confidence": 0.9887324571609497, "cells": [{"id": 69, "text": "When RCAC controls are in place on the source table, the ", "bbox": {"l": 136.79901, "t": 569.50815, "r": 391.27509, "b": 578.72115, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "CPYF", "bbox": {"l": 391.25909, "t": 569.65755, "r": 411.23883, "b": 578.4821000000001, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": " command is limited to reading ", "bbox": {"l": 411.23886, "t": 569.50815, "r": 547.17792, "b": 578.72115, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "rows and column values that are based on the invoker of the ", "bbox": {"l": 136.79904, "t": 581.5079499999999, "r": 405.7749, "b": 590.72095, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "CPYF", "bbox": {"l": 405.71906, "t": 581.65735, "r": 425.69882, "b": 590.4819, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": " command. If a user is ", "bbox": {"l": 425.75858, "t": 581.5079499999999, "r": 526.83667, "b": 590.72095, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "authorized to see all rows and column values, then all rows and unmasked column values are ", "bbox": {"l": 136.79907, "t": 593.50775, "r": 547.32733, "b": 602.72075, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "copied to the target table (assuming no RCAC controls are on the target table). If a user ", "bbox": {"l": 136.79907, "t": 605.50755, "r": 526.13843, "b": 614.72055, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "without full access runs the ", "bbox": {"l": 136.79907, "t": 617.50735, "r": 258.86984, "b": 626.72035, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "CPYF", "bbox": {"l": 258.89871, "t": 617.65675, "r": 278.87845, "b": 626.48131, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": " command, the ", "bbox": {"l": 278.87848, "t": 617.50735, "r": 347.34949, "b": 626.72035, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "CPYF", "bbox": {"l": 347.27878, "t": 617.65675, "r": 367.25854, "b": 626.48131, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": " command can copy only a subset of the ", "bbox": {"l": 367.25854, "t": 617.50735, "r": 547.17291, "b": 626.72035, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "rows into the target table. In addition, if that user can view only masked column values, then ", "bbox": {"l": 136.7981, "t": 629.50716, "r": 543.80835, "b": 638.72015, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "masked values are copied into the target table. This also applies to the Copy to Import File ", "bbox": {"l": 136.7981, "t": 641.5069599999999, "r": 538.44824, "b": 650.71996, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "(", "bbox": {"l": 136.7981, "t": 653.50676, "r": 140.11478, "b": 662.71976, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "CPYTOIMPF", "bbox": {"l": 140.09784, "t": 653.65616, "r": 185.09709, "b": 662.48071, "coord_origin": "TOPLEFT"}}, {"id": 86, "text": ") command.", "bbox": {"l": 185.09811, "t": 653.50676, "r": 237.83435000000003, "b": 662.71976, "coord_origin": "TOPLEFT"}}]}, "text": "When RCAC controls are in place on the source table, the CPYF command is limited to reading rows and column values that are based on the invoker of the CPYF command. If a user is authorized to see all rows and column values, then all rows and unmasked column values are copied to the target table (assuming no RCAC controls are on the target table). If a user without full access runs the CPYF command, the CPYF command can copy only a subset of the rows into the target table. In addition, if that user can view only masked column values, then masked values are copied into the target table. This also applies to the Copy to Import File ( CPYTOIMPF ) command."}, {"label": "text", "id": 13, "page_no": 97, "cluster": {"id": 13, "label": "text", "bbox": {"l": 136.0672149658203, "t": 674.6004638671875, "r": 535.8108520507812, "b": 720.9636840820312, "coord_origin": "TOPLEFT"}, "confidence": 0.9881445169448853, "cells": [{"id": 87, "text": "If the target table has RCAC controls defined and activated, then the ", "bbox": {"l": 136.7981, "t": 675.52632, "r": 441.13778999999994, "b": 684.73933, "coord_origin": "TOPLEFT"}}, {"id": 88, "text": "CPYF", "bbox": {"l": 441.05816999999996, "t": 675.67573, "r": 461.0379, "b": 684.50028, "coord_origin": "TOPLEFT"}}, {"id": 89, "text": " command is ", "bbox": {"l": 461.03792999999996, "t": 675.52632, "r": 520.46222, "b": 684.73933, "coord_origin": "TOPLEFT"}}, {"id": 90, "text": "allowed only to add or replace rows in the target table based on the RCAC controls. If ", "bbox": {"l": 136.7981, "t": 687.52613, "r": 515.72437, "b": 696.739136, "coord_origin": "TOPLEFT"}}, {"id": 91, "text": "CPYF", "bbox": {"l": 515.75818, "t": 687.67554, "r": 535.73792, "b": 696.500092, "coord_origin": "TOPLEFT"}}, {"id": 92, "text": "tries to add a row to the target table that the command invoker is not allowed to view ", "bbox": {"l": 136.7981, "t": 699.52594, "r": 510.53024, "b": 708.738945, "coord_origin": "TOPLEFT"}}, {"id": 93, "text": "according to the target RCAC controls, then an error is received.", "bbox": {"l": 136.7981, "t": 711.525749, "r": 420.63605, "b": 720.738754, "coord_origin": "TOPLEFT"}}]}, "text": "If the target table has RCAC controls defined and activated, then the CPYF command is allowed only to add or replace rows in the target table based on the RCAC controls. If CPYF tries to add a row to the target table that the command invoker is not allowed to view according to the target RCAC controls, then an error is received."}], "body": [{"label": "text", "id": 2, "page_no": 97, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.91806030273438, "t": 70.726806640625, "r": 545.14294, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9776225686073303, "cells": [{"id": 2, "text": "Obviously, careful planning and testing should be exercised to avoid accidental updates with ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 545.14294, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "masked values.", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 205.66844, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Obviously, careful planning and testing should be exercised to avoid accidental updates with masked values."}, {"label": "text", "id": 3, "page_no": 97, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.93345642089844, "t": 104.64000701904297, "r": 547.26752, "b": 150.74054, "coord_origin": "TOPLEFT"}, "confidence": 0.9867440462112427, "cells": [{"id": 4, "text": "DB2 for i also enhanced its check constraint support in the IBM i 7.2 release with a new ", "bbox": {"l": 136.8, "t": 105.52808000000005, "r": 524.7757, "b": 114.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "ON ", "bbox": {"l": 524.7002, "t": 105.67749000000003, "r": 539.69995, "b": 114.50207999999998, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "UPDATE", "bbox": {"l": 136.80002, "t": 117.67731000000003, "r": 166.73978, "b": 126.50189, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " clause that allows the existing value to be preserved when a masked value is detected ", "bbox": {"l": 166.79955, "t": 117.52788999999996, "r": 547.26752, "b": 126.74090999999987, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "by a check constraint. Details about how to employ this new check constraint support can be ", "bbox": {"l": 136.80002, "t": 129.52770999999996, "r": 546.92078, "b": 138.74072, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "found in 6.8.1, \u201cCheck constraint solution\u201d on page 108.", "bbox": {"l": 136.80002, "t": 141.52752999999996, "r": 381.83194, "b": 150.74054, "coord_origin": "TOPLEFT"}}]}, "text": "DB2 for i also enhanced its check constraint support in the IBM i 7.2 release with a new ON UPDATE clause that allows the existing value to be preserved when a masked value is detected by a check constraint. Details about how to employ this new check constraint support can be found in 6.8.1, \u201cCheck constraint solution\u201d on page 108."}, {"label": "section_header", "id": 4, "page_no": 97, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.44256591796875, "t": 177.93212890625, "r": 385.58484, "b": 194.52586364746094, "coord_origin": "TOPLEFT"}, "confidence": 0.9684726595878601, "cells": [{"id": 10, "text": "5.4", "bbox": {"l": 64.800003, "t": 179.22069999999997, "r": 87.337959, "b": 193.9837, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "System CL commands considerations", "bbox": {"l": 91.845535, "t": 179.22069999999997, "r": 385.58484, "b": 193.9837, "coord_origin": "TOPLEFT"}}]}, "text": "5.4 System CL commands considerations"}, {"label": "text", "id": 5, "page_no": 97, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.84999084472656, "t": 210.4622344970703, "r": 547.48962, "b": 269.1277770996094, "coord_origin": "TOPLEFT"}, "confidence": 0.9875320792198181, "cells": [{"id": 12, "text": "As stated earlier, RCAC controls are enforced on all data access interfaces. This enforcement ", "bbox": {"l": 136.8, "t": 211.48870999999997, "r": 547.26038, "b": 220.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "is not limited to programmatic interfaces; it also includes system CL commands that read and ", "bbox": {"l": 136.8, "t": 223.48852999999997, "r": 547.17889, "b": 232.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "insert data, such as the Create Duplicate Object (", "bbox": {"l": 136.80002, "t": 235.48834, "r": 355.65302, "b": 244.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "CRTDUPOBJ", "bbox": {"l": 355.49969, "t": 235.63775999999996, "r": 400.43921, "b": 244.46234000000004, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ") and Start DFU (", "bbox": {"l": 400.49997, "t": 235.48834, "r": 476.93701, "b": 244.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "STRDFU", "bbox": {"l": 476.99976, "t": 235.63775999999996, "r": 506.9395099999999, "b": 244.46234000000004, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": ") CL ", "bbox": {"l": 506.9395099999999, "t": 235.48834, "r": 528.60651, "b": 244.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "commands. This section documents the behavior of the Create Duplicate Object (", "bbox": {"l": 136.79901, "t": 247.48816, "r": 493.72556, "b": 256.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "CRTDUPOBJ", "bbox": {"l": 493.61899, "t": 247.63756999999998, "r": 538.55853, "b": 256.46216000000004, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "), ", "bbox": {"l": 538.55853, "t": 247.48816, "r": 547.48962, "b": 256.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Copy File (", "bbox": {"l": 136.79904, "t": 259.48798, "r": 184.84109, "b": 268.70099000000005, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "CPYF", "bbox": {"l": 184.79927, "t": 259.63739, "r": 204.77904, "b": 268.46198000000004, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "), and Copy Library (", "bbox": {"l": 204.77904, "t": 259.48798, "r": 295.79846, "b": 268.70099000000005, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "CPYLIB", "bbox": {"l": 295.7995, "t": 259.63739, "r": 325.73926, "b": 268.46198000000004, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": ") CL commands with RCAC.", "bbox": {"l": 325.80002, "t": 259.48798, "r": 450.0838600000001, "b": 268.70099000000005, "coord_origin": "TOPLEFT"}}]}, "text": "As stated earlier, RCAC controls are enforced on all data access interfaces. This enforcement is not limited to programmatic interfaces; it also includes system CL commands that read and insert data, such as the Create Duplicate Object ( CRTDUPOBJ ) and Start DFU ( STRDFU ) CL commands. This section documents the behavior of the Create Duplicate Object ( CRTDUPOBJ ), Copy File ( CPYF ), and Copy Library ( CPYLIB ) CL commands with RCAC."}, {"label": "section_header", "id": 6, "page_no": 97, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 64.2880630493164, "t": 288.19952392578125, "r": 405.04672, "b": 301.8869323730469, "coord_origin": "TOPLEFT"}, "confidence": 0.9681828022003174, "cells": [{"id": 27, "text": "5.4.1", "bbox": {"l": 64.800003, "t": 289.37473, "r": 93.960258, "b": 301.36269999999996, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Create Duplicate Object (CRTDUPOBJ) command", "bbox": {"l": 97.605309, "t": 289.37473, "r": 405.04672, "b": 301.36269999999996, "coord_origin": "TOPLEFT"}}]}, "text": "5.4.1 Create Duplicate Object (CRTDUPOBJ) command"}, {"label": "text", "id": 7, "page_no": 97, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.64491271972656, "t": 314.66900634765625, "r": 542.97083, "b": 360.74115000000006, "coord_origin": "TOPLEFT"}, "confidence": 0.987525224685669, "cells": [{"id": 29, "text": "The ", "bbox": {"l": 136.8, "t": 315.52872, "r": 156.82855, "b": 324.7417, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CRTDUPOBJ", "bbox": {"l": 156.77977, "t": 315.67810000000003, "r": 201.77904, "b": 324.50269, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " command is enhanced with a new Access Control (", "bbox": {"l": 201.78004, "t": 315.52872, "r": 430.97162, "b": 324.7417, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "ACCCTL", "bbox": {"l": 430.97955, "t": 315.67810000000003, "r": 460.91931, "b": 324.50269, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": ") parameter in the ", "bbox": {"l": 460.97906, "t": 315.52872, "r": 542.51752, "b": 324.7417, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "IBM i 7.2 release to copy RCAC controls to the new object being created. Row permissions ", "bbox": {"l": 136.79901, "t": 327.52853, "r": 541.07751, "b": 336.74152, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "and column masks are copied to the new object by default because the default value for the ", "bbox": {"l": 136.79901, "t": 339.52835, "r": 542.97083, "b": 348.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "ACCCTL", "bbox": {"l": 136.799, "t": 351.67755, "r": 166.73875, "b": 360.50214000000005, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": " parameter is ", "bbox": {"l": 166.79852, "t": 351.52817, "r": 227.73976, "b": 360.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "*ALL", "bbox": {"l": 227.75870000000003, "t": 351.67755, "r": 247.73845, "b": 360.45233, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": ".", "bbox": {"l": 247.73846, "t": 351.52817, "r": 250.50734, "b": 360.74115000000006, "coord_origin": "TOPLEFT"}}]}, "text": "The CRTDUPOBJ command is enhanced with a new Access Control ( ACCCTL ) parameter in the IBM i 7.2 release to copy RCAC controls to the new object being created. Row permissions and column masks are copied to the new object by default because the default value for the ACCCTL parameter is *ALL ."}, {"label": "text", "id": 8, "page_no": 97, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.95484924316406, "t": 372.71258544921875, "r": 538.55847, "b": 406.70059000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9827100038528442, "cells": [{"id": 40, "text": "If the invoker of the ", "bbox": {"l": 136.798, "t": 373.48798, "r": 223.97386, "b": 382.70096, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "CRTDUPOBJ", "bbox": {"l": 223.91812, "t": 373.63735999999994, "r": 268.85764, "b": 382.46194, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": " command asks for data to be copied with a value of ", "bbox": {"l": 268.9184, "t": 373.48798, "r": 501.69666, "b": 382.70096, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "*YES", "bbox": {"l": 501.65869, "t": 373.63735999999994, "r": 521.63843, "b": 382.41214, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": " for ", "bbox": {"l": 521.69922, "t": 373.48798, "r": 538.55847, "b": 382.70096, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "the ", "bbox": {"l": 136.79901, "t": 385.48779, "r": 153.41228, "b": 394.70078, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "DATA", "bbox": {"l": 153.47902, "t": 385.63718, "r": 173.45877, "b": 394.46176, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": " parameter, the value of the ", "bbox": {"l": 173.45879, "t": 385.48779, "r": 297.59729, "b": 394.70078, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ACCCTL", "bbox": {"l": 297.59924, "t": 385.63718, "r": 327.59875, "b": 394.46176, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": " parameter must be ", "bbox": {"l": 327.59875, "t": 385.48779, "r": 416.82043, "b": 394.70078, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "*ALL", "bbox": {"l": 416.81845, "t": 385.63718, "r": 436.79819000000003, "b": 394.41195999999997, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": ". If not, the command ", "bbox": {"l": 436.79822, "t": 385.48779, "r": 533.45392, "b": 394.70078, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "invocation receives an error.", "bbox": {"l": 136.79803, "t": 397.48761, "r": 261.15759, "b": 406.70059000000003, "coord_origin": "TOPLEFT"}}]}, "text": "If the invoker of the CRTDUPOBJ command asks for data to be copied with a value of *YES for the DATA parameter, the value of the ACCCTL parameter must be *ALL . If not, the command invocation receives an error."}, {"label": "text", "id": 9, "page_no": 97, "cluster": {"id": 9, "label": "text", "bbox": {"l": 135.810791015625, "t": 418.80743408203125, "r": 547.21686, "b": 476.839599609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9882908463478088, "cells": [{"id": 53, "text": "When data is copied to the duplicated object with the ", "bbox": {"l": 136.79803, "t": 419.50717, "r": 370.7355, "b": 428.72015, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "DATA", "bbox": {"l": 370.67773, "t": 419.65656, "r": 390.59775, "b": 428.48114, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": " parameter, all rows and unmasked ", "bbox": {"l": 390.6575, "t": 419.50717, "r": 547.21686, "b": 428.72015, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "column values are copied into the new object, even if the command invoker is not authorized ", "bbox": {"l": 136.79701, "t": 431.50699, "r": 546.87817, "b": 440.71997, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "to view all rows or certain column values. This behavior occurs because the RCAC controls ", "bbox": {"l": 136.79701, "t": 443.50681, "r": 541.51062, "b": 452.71979, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "also are copied to the new object. The copied RCAC controls enforce that only authorized ", "bbox": {"l": 136.79701, "t": 455.50661999999994, "r": 535.04083, "b": 464.7196, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "users are allowed to view row and column values in the newly duplicated object.", "bbox": {"l": 136.79701, "t": 467.50644, "r": 489.0842599999999, "b": 476.71942, "coord_origin": "TOPLEFT"}}]}, "text": "When data is copied to the duplicated object with the DATA parameter, all rows and unmasked column values are copied into the new object, even if the command invoker is not authorized to view all rows or certain column values. This behavior occurs because the RCAC controls also are copied to the new object. The copied RCAC controls enforce that only authorized users are allowed to view row and column values in the newly duplicated object."}, {"label": "section_header", "id": 10, "page_no": 97, "cluster": {"id": 10, "label": "section_header", "bbox": {"l": 64.34564208984375, "t": 495.8337097167969, "r": 270.95599, "b": 509.7830810546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9675832390785217, "cells": [{"id": 60, "text": "5.4.2", "bbox": {"l": 64.800003, "t": 497.39474, "r": 94.162216, "b": 509.38272, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Copy File (CPYF) command", "bbox": {"l": 97.832489, "t": 497.39474, "r": 270.95599, "b": 509.38272, "coord_origin": "TOPLEFT"}}]}, "text": "5.4.2 Copy File (CPYF) command"}, {"label": "text", "id": 11, "page_no": 97, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.7013702392578, "t": 522.5596313476562, "r": 547.28552, "b": 557.3438110351562, "coord_origin": "TOPLEFT"}, "confidence": 0.9865304827690125, "cells": [{"id": 62, "text": "The ", "bbox": {"l": 136.8, "t": 523.54874, "r": 156.82855, "b": 532.76172, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "CPYF", "bbox": {"l": 156.60048, "t": 523.69812, "r": 176.58025, "b": 532.52271, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": " command copies only data, so there is no new parameter to copy RCAC controls to ", "bbox": {"l": 176.58025, "t": 523.54874, "r": 547.28552, "b": 532.76172, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "the target table. Therefore, if ", "bbox": {"l": 136.8, "t": 535.54852, "r": 263.37762, "b": 544.76154, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "CPYF", "bbox": {"l": 263.39957, "t": 535.69794, "r": 283.3793, "b": 544.5224900000001, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": " is used to create a target table, there are no RCAC controls ", "bbox": {"l": 283.37933, "t": 535.54852, "r": 547.23456, "b": 544.76154, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "placed on the target table.", "bbox": {"l": 136.79901, "t": 547.54834, "r": 252.06812, "b": 556.76134, "coord_origin": "TOPLEFT"}}]}, "text": "The CPYF command copies only data, so there is no new parameter to copy RCAC controls to the target table. Therefore, if CPYF is used to create a target table, there are no RCAC controls placed on the target table."}, {"label": "text", "id": 12, "page_no": 97, "cluster": {"id": 12, "label": "text", "bbox": {"l": 135.7746124267578, "t": 568.5869750976562, "r": 547.32733, "b": 662.71976, "coord_origin": "TOPLEFT"}, "confidence": 0.9887324571609497, "cells": [{"id": 69, "text": "When RCAC controls are in place on the source table, the ", "bbox": {"l": 136.79901, "t": 569.50815, "r": 391.27509, "b": 578.72115, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "CPYF", "bbox": {"l": 391.25909, "t": 569.65755, "r": 411.23883, "b": 578.4821000000001, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": " command is limited to reading ", "bbox": {"l": 411.23886, "t": 569.50815, "r": 547.17792, "b": 578.72115, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "rows and column values that are based on the invoker of the ", "bbox": {"l": 136.79904, "t": 581.5079499999999, "r": 405.7749, "b": 590.72095, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "CPYF", "bbox": {"l": 405.71906, "t": 581.65735, "r": 425.69882, "b": 590.4819, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": " command. If a user is ", "bbox": {"l": 425.75858, "t": 581.5079499999999, "r": 526.83667, "b": 590.72095, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "authorized to see all rows and column values, then all rows and unmasked column values are ", "bbox": {"l": 136.79907, "t": 593.50775, "r": 547.32733, "b": 602.72075, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "copied to the target table (assuming no RCAC controls are on the target table). If a user ", "bbox": {"l": 136.79907, "t": 605.50755, "r": 526.13843, "b": 614.72055, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "without full access runs the ", "bbox": {"l": 136.79907, "t": 617.50735, "r": 258.86984, "b": 626.72035, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "CPYF", "bbox": {"l": 258.89871, "t": 617.65675, "r": 278.87845, "b": 626.48131, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": " command, the ", "bbox": {"l": 278.87848, "t": 617.50735, "r": 347.34949, "b": 626.72035, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "CPYF", "bbox": {"l": 347.27878, "t": 617.65675, "r": 367.25854, "b": 626.48131, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": " command can copy only a subset of the ", "bbox": {"l": 367.25854, "t": 617.50735, "r": 547.17291, "b": 626.72035, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "rows into the target table. In addition, if that user can view only masked column values, then ", "bbox": {"l": 136.7981, "t": 629.50716, "r": 543.80835, "b": 638.72015, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "masked values are copied into the target table. This also applies to the Copy to Import File ", "bbox": {"l": 136.7981, "t": 641.5069599999999, "r": 538.44824, "b": 650.71996, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "(", "bbox": {"l": 136.7981, "t": 653.50676, "r": 140.11478, "b": 662.71976, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "CPYTOIMPF", "bbox": {"l": 140.09784, "t": 653.65616, "r": 185.09709, "b": 662.48071, "coord_origin": "TOPLEFT"}}, {"id": 86, "text": ") command.", "bbox": {"l": 185.09811, "t": 653.50676, "r": 237.83435000000003, "b": 662.71976, "coord_origin": "TOPLEFT"}}]}, "text": "When RCAC controls are in place on the source table, the CPYF command is limited to reading rows and column values that are based on the invoker of the CPYF command. If a user is authorized to see all rows and column values, then all rows and unmasked column values are copied to the target table (assuming no RCAC controls are on the target table). If a user without full access runs the CPYF command, the CPYF command can copy only a subset of the rows into the target table. In addition, if that user can view only masked column values, then masked values are copied into the target table. This also applies to the Copy to Import File ( CPYTOIMPF ) command."}, {"label": "text", "id": 13, "page_no": 97, "cluster": {"id": 13, "label": "text", "bbox": {"l": 136.0672149658203, "t": 674.6004638671875, "r": 535.8108520507812, "b": 720.9636840820312, "coord_origin": "TOPLEFT"}, "confidence": 0.9881445169448853, "cells": [{"id": 87, "text": "If the target table has RCAC controls defined and activated, then the ", "bbox": {"l": 136.7981, "t": 675.52632, "r": 441.13778999999994, "b": 684.73933, "coord_origin": "TOPLEFT"}}, {"id": 88, "text": "CPYF", "bbox": {"l": 441.05816999999996, "t": 675.67573, "r": 461.0379, "b": 684.50028, "coord_origin": "TOPLEFT"}}, {"id": 89, "text": " command is ", "bbox": {"l": 461.03792999999996, "t": 675.52632, "r": 520.46222, "b": 684.73933, "coord_origin": "TOPLEFT"}}, {"id": 90, "text": "allowed only to add or replace rows in the target table based on the RCAC controls. If ", "bbox": {"l": 136.7981, "t": 687.52613, "r": 515.72437, "b": 696.739136, "coord_origin": "TOPLEFT"}}, {"id": 91, "text": "CPYF", "bbox": {"l": 515.75818, "t": 687.67554, "r": 535.73792, "b": 696.500092, "coord_origin": "TOPLEFT"}}, {"id": 92, "text": "tries to add a row to the target table that the command invoker is not allowed to view ", "bbox": {"l": 136.7981, "t": 699.52594, "r": 510.53024, "b": 708.738945, "coord_origin": "TOPLEFT"}}, {"id": 93, "text": "according to the target RCAC controls, then an error is received.", "bbox": {"l": 136.7981, "t": 711.525749, "r": 420.63605, "b": 720.738754, "coord_origin": "TOPLEFT"}}]}, "text": "If the target table has RCAC controls defined and activated, then the CPYF command is allowed only to add or replace rows in the target table based on the RCAC controls. If CPYF tries to add a row to the target table that the command invoker is not allowed to view according to the target RCAC controls, then an error is received."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 97, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.22566223144531, "t": 754.41650390625, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9210326671600342, "cells": [{"id": 0, "text": "82 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "82"}, {"label": "page_footer", "id": 1, "page_no": 97, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.18901824951172, "t": 754.7184448242188, "r": 334.42142, "b": 763.9121704101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9529549479484558, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 98, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 5. RCAC and non-SQL interfaces ", "bbox": {"l": 354.29999, "t": 755.538002, "r": 523.63324, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "83", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "5.4.3", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 94.102646, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Copy Library (CPYLIB) command", "bbox": {"l": 97.765472, "t": 71.33471999999995, "r": 305.67719, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "The ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 156.82855, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "CPYLIB", "bbox": {"l": 156.77977, "t": 97.63812000000007, "r": 186.77928, "b": 106.46271000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": " command is enhanced with the same Access Control (", "bbox": {"l": 186.7793, "t": 97.48870999999997, "r": 430.68668, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ACCCTL", "bbox": {"l": 430.61902, "t": 97.63812000000007, "r": 460.61852999999996, "b": 106.46271000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": ") parameter as the ", "bbox": {"l": 460.61954, "t": 97.48870999999997, "r": 544.97375, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CRTDUPOBJ", "bbox": {"l": 136.79901, "t": 109.63793999999996, "r": 181.73853, "b": 118.46252000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": " command in the IBM i 7.2 release (see 5.4.1, \u201cCreate Duplicate Object ", "bbox": {"l": 181.79929, "t": 109.48852999999997, "r": 498.45456, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "(CRTDUPOBJ) command\u201d on page 82). Row permissions and column masks are copied to ", "bbox": {"l": 136.79901, "t": 121.48834000000011, "r": 541.4729, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "the new object in the new library by default because the default value for the ", "bbox": {"l": 136.79903, "t": 133.48816, "r": 474.6371500000001, "b": 142.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "ACCCTL", "bbox": {"l": 474.71892999999994, "t": 133.63756999999998, "r": 504.65869, "b": 142.46216000000004, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "parameter is ", "bbox": {"l": 136.79904, "t": 145.48798, "r": 195.04218, "b": 154.70099000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "*ALL", "bbox": {"l": 194.9993, "t": 145.63738999999998, "r": 214.97905999999998, "b": 154.41216999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ". ", "bbox": {"l": 214.97905999999998, "t": 145.48798, "r": 220.61841999999996, "b": 154.70099000000005, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 353.7088317871094, "t": 754.8579711914062, "r": 523.63324, "b": 764.1048583984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9495401382446289, "cells": [{"id": 0, "text": "Chapter 5. RCAC and non-SQL interfaces ", "bbox": {"l": 354.29999, "t": 755.538002, "r": 523.63324, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.67578125, "t": 754.3722534179688, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9193902611732483, "cells": [{"id": 1, "text": "83", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.39531707763672, "t": 70.02782440185547, "r": 305.67719, "b": 83.7774429321289, "coord_origin": "TOPLEFT"}, "confidence": 0.968555748462677, "cells": [{"id": 2, "text": "5.4.3", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 94.102646, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Copy Library (CPYLIB) command", "bbox": {"l": 97.765472, "t": 71.33471999999995, "r": 305.67719, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.95230102539062, "t": 96.7219467163086, "r": 544.97375, "b": 154.70099000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9855459928512573, "cells": [{"id": 4, "text": "The ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 156.82855, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "CPYLIB", "bbox": {"l": 156.77977, "t": 97.63812000000007, "r": 186.77928, "b": 106.46271000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": " command is enhanced with the same Access Control (", "bbox": {"l": 186.7793, "t": 97.48870999999997, "r": 430.68668, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ACCCTL", "bbox": {"l": 430.61902, "t": 97.63812000000007, "r": 460.61852999999996, "b": 106.46271000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": ") parameter as the ", "bbox": {"l": 460.61954, "t": 97.48870999999997, "r": 544.97375, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CRTDUPOBJ", "bbox": {"l": 136.79901, "t": 109.63793999999996, "r": 181.73853, "b": 118.46252000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": " command in the IBM i 7.2 release (see 5.4.1, \u201cCreate Duplicate Object ", "bbox": {"l": 181.79929, "t": 109.48852999999997, "r": 498.45456, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "(CRTDUPOBJ) command\u201d on page 82). Row permissions and column masks are copied to ", "bbox": {"l": 136.79901, "t": 121.48834000000011, "r": 541.4729, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "the new object in the new library by default because the default value for the ", "bbox": {"l": 136.79903, "t": 133.48816, "r": 474.6371500000001, "b": 142.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "ACCCTL", "bbox": {"l": 474.71892999999994, "t": 133.63756999999998, "r": 504.65869, "b": 142.46216000000004, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "parameter is ", "bbox": {"l": 136.79904, "t": 145.48798, "r": 195.04218, "b": 154.70099000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "*ALL", "bbox": {"l": 194.9993, "t": 145.63738999999998, "r": 214.97905999999998, "b": 154.41216999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ". ", "bbox": {"l": 214.97905999999998, "t": 145.48798, "r": 220.61841999999996, "b": 154.70099000000005, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 98, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 353.7088317871094, "t": 754.8579711914062, "r": 523.63324, "b": 764.1048583984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9495401382446289, "cells": [{"id": 0, "text": "Chapter 5. RCAC and non-SQL interfaces ", "bbox": {"l": 354.29999, "t": 755.538002, "r": 523.63324, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 5. RCAC and non-SQL interfaces"}, {"label": "page_footer", "id": 1, "page_no": 98, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.67578125, "t": 754.3722534179688, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9193902611732483, "cells": [{"id": 1, "text": "83", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "83"}, {"label": "section_header", "id": 2, "page_no": 98, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.39531707763672, "t": 70.02782440185547, "r": 305.67719, "b": 83.7774429321289, "coord_origin": "TOPLEFT"}, "confidence": 0.968555748462677, "cells": [{"id": 2, "text": "5.4.3", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 94.102646, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Copy Library (CPYLIB) command", "bbox": {"l": 97.765472, "t": 71.33471999999995, "r": 305.67719, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "5.4.3 Copy Library (CPYLIB) command"}, {"label": "text", "id": 3, "page_no": 98, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.95230102539062, "t": 96.7219467163086, "r": 544.97375, "b": 154.70099000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9855459928512573, "cells": [{"id": 4, "text": "The ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 156.82855, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "CPYLIB", "bbox": {"l": 156.77977, "t": 97.63812000000007, "r": 186.77928, "b": 106.46271000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": " command is enhanced with the same Access Control (", "bbox": {"l": 186.7793, "t": 97.48870999999997, "r": 430.68668, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ACCCTL", "bbox": {"l": 430.61902, "t": 97.63812000000007, "r": 460.61852999999996, "b": 106.46271000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": ") parameter as the ", "bbox": {"l": 460.61954, "t": 97.48870999999997, "r": 544.97375, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CRTDUPOBJ", "bbox": {"l": 136.79901, "t": 109.63793999999996, "r": 181.73853, "b": 118.46252000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": " command in the IBM i 7.2 release (see 5.4.1, \u201cCreate Duplicate Object ", "bbox": {"l": 181.79929, "t": 109.48852999999997, "r": 498.45456, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "(CRTDUPOBJ) command\u201d on page 82). Row permissions and column masks are copied to ", "bbox": {"l": 136.79901, "t": 121.48834000000011, "r": 541.4729, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "the new object in the new library by default because the default value for the ", "bbox": {"l": 136.79903, "t": 133.48816, "r": 474.6371500000001, "b": 142.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "ACCCTL", "bbox": {"l": 474.71892999999994, "t": 133.63756999999998, "r": 504.65869, "b": 142.46216000000004, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "parameter is ", "bbox": {"l": 136.79904, "t": 145.48798, "r": 195.04218, "b": 154.70099000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "*ALL", "bbox": {"l": 194.9993, "t": 145.63738999999998, "r": 214.97905999999998, "b": 154.41216999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ". ", "bbox": {"l": 214.97905999999998, "t": 145.48798, "r": 220.61841999999996, "b": 154.70099000000005, "coord_origin": "TOPLEFT"}}]}, "text": "The CPYLIB command is enhanced with the same Access Control ( ACCCTL ) parameter as the CRTDUPOBJ command in the IBM i 7.2 release (see 5.4.1, \u201cCreate Duplicate Object (CRTDUPOBJ) command\u201d on page 82). Row permissions and column masks are copied to the new object in the new library by default because the default value for the ACCCTL parameter is *ALL ."}], "body": [{"label": "section_header", "id": 2, "page_no": 98, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.39531707763672, "t": 70.02782440185547, "r": 305.67719, "b": 83.7774429321289, "coord_origin": "TOPLEFT"}, "confidence": 0.968555748462677, "cells": [{"id": 2, "text": "5.4.3", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 94.102646, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Copy Library (CPYLIB) command", "bbox": {"l": 97.765472, "t": 71.33471999999995, "r": 305.67719, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "5.4.3 Copy Library (CPYLIB) command"}, {"label": "text", "id": 3, "page_no": 98, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.95230102539062, "t": 96.7219467163086, "r": 544.97375, "b": 154.70099000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9855459928512573, "cells": [{"id": 4, "text": "The ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 156.82855, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "CPYLIB", "bbox": {"l": 156.77977, "t": 97.63812000000007, "r": 186.77928, "b": 106.46271000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": " command is enhanced with the same Access Control (", "bbox": {"l": 186.7793, "t": 97.48870999999997, "r": 430.68668, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ACCCTL", "bbox": {"l": 430.61902, "t": 97.63812000000007, "r": 460.61852999999996, "b": 106.46271000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": ") parameter as the ", "bbox": {"l": 460.61954, "t": 97.48870999999997, "r": 544.97375, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CRTDUPOBJ", "bbox": {"l": 136.79901, "t": 109.63793999999996, "r": 181.73853, "b": 118.46252000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": " command in the IBM i 7.2 release (see 5.4.1, \u201cCreate Duplicate Object ", "bbox": {"l": 181.79929, "t": 109.48852999999997, "r": 498.45456, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "(CRTDUPOBJ) command\u201d on page 82). Row permissions and column masks are copied to ", "bbox": {"l": 136.79901, "t": 121.48834000000011, "r": 541.4729, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "the new object in the new library by default because the default value for the ", "bbox": {"l": 136.79903, "t": 133.48816, "r": 474.6371500000001, "b": 142.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "ACCCTL", "bbox": {"l": 474.71892999999994, "t": 133.63756999999998, "r": 504.65869, "b": 142.46216000000004, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "parameter is ", "bbox": {"l": 136.79904, "t": 145.48798, "r": 195.04218, "b": 154.70099000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "*ALL", "bbox": {"l": 194.9993, "t": 145.63738999999998, "r": 214.97905999999998, "b": 154.41216999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ". ", "bbox": {"l": 214.97905999999998, "t": 145.48798, "r": 220.61841999999996, "b": 154.70099000000005, "coord_origin": "TOPLEFT"}}]}, "text": "The CPYLIB command is enhanced with the same Access Control ( ACCCTL ) parameter as the CRTDUPOBJ command in the IBM i 7.2 release (see 5.4.1, \u201cCreate Duplicate Object (CRTDUPOBJ) command\u201d on page 82). Row permissions and column masks are copied to the new object in the new library by default because the default value for the ACCCTL parameter is *ALL ."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 98, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 353.7088317871094, "t": 754.8579711914062, "r": 523.63324, "b": 764.1048583984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9495401382446289, "cells": [{"id": 0, "text": "Chapter 5. RCAC and non-SQL interfaces ", "bbox": {"l": 354.29999, "t": 755.538002, "r": 523.63324, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 5. RCAC and non-SQL interfaces"}, {"label": "page_footer", "id": 1, "page_no": 98, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.67578125, "t": 754.3722534179688, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9193902611732483, "cells": [{"id": 1, "text": "83", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "83"}]}}, {"page_no": 99, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "84 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.472412109375, "t": 754.2569580078125, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9049738645553589, "cells": [{"id": 0, "text": "84 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.35282135009766, "t": 754.5419311523438, "r": 334.50579833984375, "b": 764.05126953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9411050081253052, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 99, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.472412109375, "t": 754.2569580078125, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9049738645553589, "cells": [{"id": 0, "text": "84 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "84"}, {"label": "page_footer", "id": 1, "page_no": 99, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.35282135009766, "t": 754.5419311523438, "r": 334.50579833984375, "b": 764.05126953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9411050081253052, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}], "body": [], "headers": [{"label": "page_footer", "id": 0, "page_no": 99, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.472412109375, "t": 754.2569580078125, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9049738645553589, "cells": [{"id": 0, "text": "84 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "84"}, {"label": "page_footer", "id": 1, "page_no": 99, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.35282135009766, "t": 754.5419311523438, "r": 334.50579833984375, "b": 764.05126953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9411050081253052, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 100, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "85", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Chapter 6.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Additional considerations", "bbox": {"l": 136.8, "t": 254.88635, "r": 455.59796, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "This chapter covers additional considerations that must be taken into account when ", "bbox": {"l": 136.8, "t": 317.68872, "r": 507.11765, "b": 326.90170000000006, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "implementing Row and Column Access Control (RCAC), including the following functions:", "bbox": {"l": 136.8, "t": 329.68854, "r": 531.34546, "b": 338.90152, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 346.8775, "r": 141.78, "b": 355.65228, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Timing of column masking", "bbox": {"l": 151.20016, "t": 346.72812, "r": 267.31885, "b": 355.94110000000006, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "GLYPH", "bbox": {"l": 136.8, "t": 358.87731999999994, "r": 141.78, "b": 367.6521, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Data movement", "bbox": {"l": 151.20016, "t": 358.72794, "r": 221.34749999999997, "b": 367.94092, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "GLYPH", "bbox": {"l": 136.8, "t": 370.87714000000005, "r": 141.78, "b": 379.65191999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Joins", "bbox": {"l": 151.20016, "t": 370.72775, "r": 174.48665, "b": 379.94073, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "GLYPH", "bbox": {"l": 136.8, "t": 382.87695, "r": 141.78, "b": 391.65173, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Views", "bbox": {"l": 151.20016, "t": 382.72757, "r": 177.67285, "b": 391.94055000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "GLYPH", "bbox": {"l": 136.8, "t": 394.87677, "r": 141.78, "b": 403.65155, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Materialized query tables", "bbox": {"l": 151.20016, "t": 394.72739, "r": 262.43051, "b": 403.94037, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "GLYPH", "bbox": {"l": 136.8, "t": 406.87659, "r": 141.78, "b": 415.65136999999993, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Index advisor", "bbox": {"l": 151.20016, "t": 406.7272, "r": 210.29085, "b": 415.94019, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "GLYPH", "bbox": {"l": 136.8, "t": 418.8764, "r": 141.78, "b": 427.65118, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Monitoring, analysis, and debugging", "bbox": {"l": 151.20016, "t": 418.72702, "r": 310.97345, "b": 427.94, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "GLYPH", "bbox": {"l": 136.8, "t": 430.87622, "r": 141.78, "b": 439.651, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Performance and scalability", "bbox": {"l": 151.20016, "t": 430.72684, "r": 273.34265, "b": 439.93981999999994, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "The following topics are covered in this chapter:", "bbox": {"l": 136.8, "t": 452.68665, "r": 347.41214, "b": 461.89963, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "GLYPH", "bbox": {"l": 136.8, "t": 469.87561, "r": 141.78, "b": 478.65039, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Timing of column masking", "bbox": {"l": 151.20016, "t": 469.72623, "r": 267.31885, "b": 478.93921, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "GLYPH", "bbox": {"l": 136.8, "t": 481.87543, "r": 141.78, "b": 490.65021, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "RCAC effects on data movement", "bbox": {"l": 151.20016, "t": 481.72604, "r": 296.34232, "b": 490.93903, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "GLYPH", "bbox": {"l": 136.8, "t": 493.87524, "r": 141.78, "b": 502.65002, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "RCAC effects on joins", "bbox": {"l": 151.20016, "t": 493.72586, "r": 248.37093, "b": 502.93884, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "GLYPH", "bbox": {"l": 136.8, "t": 505.87506, "r": 141.78, "b": 514.64984, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Monitoring, analyzing, and debugging with RCAC", "bbox": {"l": 151.20016, "t": 505.72568, "r": 368.62, "b": 514.93866, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "GLYPH", "bbox": {"l": 136.8, "t": 517.8748800000001, "r": 141.78, "b": 526.64966, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Views, materialized query tables, and query rewrite with RCAC", "bbox": {"l": 151.20016, "t": 517.72549, "r": 428.50857999999994, "b": 526.93848, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "GLYPH", "bbox": {"l": 136.8, "t": 529.87469, "r": 141.78, "b": 538.64944, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "RCAC effects on performance and scalability", "bbox": {"l": 151.20016, "t": 529.72528, "r": 349.38428, "b": 538.93829, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "GLYPH", "bbox": {"l": 136.8, "t": 541.8745, "r": 141.78, "b": 550.6492499999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Exclusive lock to implement RCAC (availability issues)", "bbox": {"l": 151.20016, "t": 541.7251, "r": 390.44034, "b": 550.9381, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 553.8743, "r": 141.77998, "b": 562.64905, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Avoiding propagation of masked data", "bbox": {"l": 151.20015, "t": 553.7249, "r": 315.37079, "b": 562.9379, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 565.8741, "r": 141.77998, "b": 574.64885, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Triggers and functions (SECURED)", "bbox": {"l": 151.20015, "t": 565.7247, "r": 307.30423, "b": 574.9377, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 577.8739, "r": 141.77998, "b": 586.64865, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "RCAC is only one part of the solution", "bbox": {"l": 151.20015, "t": 577.7245, "r": 315.14774, "b": 586.9375, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "6", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.789581298828125, "t": 754.7017822265625, "r": 257.24335, "b": 764.1205444335938, "coord_origin": "TOPLEFT"}, "confidence": 0.9495893716812134, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.6629028320312, "t": 754.3357543945312, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.917849063873291, "cells": [{"id": 1, "text": "85", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 6.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "section_header", "bbox": {"l": 136.34396362304688, "t": 253.19119262695312, "r": 455.59796, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9567626714706421, "cells": [{"id": 3, "text": "Additional considerations", "bbox": {"l": 136.8, "t": 254.88635, "r": 455.59796, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.87008666992188, "t": 316.7393493652344, "r": 531.34546, "b": 339.10498046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9598965644836426, "cells": [{"id": 4, "text": "This chapter covers additional considerations that must be taken into account when ", "bbox": {"l": 136.8, "t": 317.68872, "r": 507.11765, "b": 326.90170000000006, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "implementing Row and Column Access Control (RCAC), including the following functions:", "bbox": {"l": 136.8, "t": 329.68854, "r": 531.34546, "b": 338.90152, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 135.8069610595703, "t": 346.03759765625, "r": 267.31885, "b": 356.3053283691406, "coord_origin": "TOPLEFT"}, "confidence": 0.9453163743019104, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 346.8775, "r": 141.78, "b": 355.65228, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Timing of column masking", "bbox": {"l": 151.20016, "t": 346.72812, "r": 267.31885, "b": 355.94110000000006, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.6639404296875, "t": 358.057373046875, "r": 221.46388244628906, "b": 367.94092, "coord_origin": "TOPLEFT"}, "confidence": 0.9263733625411987, "cells": [{"id": 8, "text": "GLYPH", "bbox": {"l": 136.8, "t": 358.87731999999994, "r": 141.78, "b": 367.6521, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Data movement", "bbox": {"l": 151.20016, "t": 358.72794, "r": 221.34749999999997, "b": 367.94092, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.80430603027344, "t": 370.3742370605469, "r": 174.48665, "b": 379.94073, "coord_origin": "TOPLEFT"}, "confidence": 0.909616231918335, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.8, "t": 370.87714000000005, "r": 141.78, "b": 379.65191999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Joins", "bbox": {"l": 151.20016, "t": 370.72775, "r": 174.48665, "b": 379.94073, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.77816772460938, "t": 382.2833251953125, "r": 177.67285, "b": 391.94055000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9085867404937744, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.8, "t": 382.87695, "r": 141.78, "b": 391.65173, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Views", "bbox": {"l": 151.20016, "t": 382.72757, "r": 177.67285, "b": 391.94055000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.9530487060547, "t": 394.1155090332031, "r": 262.43051, "b": 404.1868896484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9477983713150024, "cells": [{"id": 14, "text": "GLYPH", "bbox": {"l": 136.8, "t": 394.87677, "r": 141.78, "b": 403.65155, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Materialized query tables", "bbox": {"l": 151.20016, "t": 394.72739, "r": 262.43051, "b": 403.94037, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 135.72091674804688, "t": 406.3046569824219, "r": 210.3322296142578, "b": 415.94019, "coord_origin": "TOPLEFT"}, "confidence": 0.9171162247657776, "cells": [{"id": 16, "text": "GLYPH", "bbox": {"l": 136.8, "t": 406.87659, "r": 141.78, "b": 415.65136999999993, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Index advisor", "bbox": {"l": 151.20016, "t": 406.7272, "r": 210.29085, "b": 415.94019, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 135.53468322753906, "t": 418.32232666015625, "r": 310.97345, "b": 428.54669189453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9497132301330566, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.8, "t": 418.8764, "r": 141.78, "b": 427.65118, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Monitoring, analysis, and debugging", "bbox": {"l": 151.20016, "t": 418.72702, "r": 310.97345, "b": 427.94, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "list_item", "bbox": {"l": 135.64329528808594, "t": 429.8523864746094, "r": 273.34265, "b": 440.3828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9438368082046509, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.8, "t": 430.87622, "r": 141.78, "b": 439.651, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Performance and scalability", "bbox": {"l": 151.20016, "t": 430.72684, "r": 273.34265, "b": 439.93981999999994, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 136.005859375, "t": 451.9608154296875, "r": 347.41214, "b": 462.3204650878906, "coord_origin": "TOPLEFT"}, "confidence": 0.875919759273529, "cells": [{"id": 22, "text": "The following topics are covered in this chapter:", "bbox": {"l": 136.8, "t": 452.68665, "r": 347.41214, "b": 461.89963, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "list_item", "bbox": {"l": 135.94393920898438, "t": 468.6572265625, "r": 267.31885, "b": 479.11810302734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9442504644393921, "cells": [{"id": 23, "text": "GLYPH", "bbox": {"l": 136.8, "t": 469.87561, "r": 141.78, "b": 478.65039, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Timing of column masking", "bbox": {"l": 151.20016, "t": 469.72623, "r": 267.31885, "b": 478.93921, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "list_item", "bbox": {"l": 135.8094024658203, "t": 480.9632568359375, "r": 296.34232, "b": 490.93903, "coord_origin": "TOPLEFT"}, "confidence": 0.9341280460357666, "cells": [{"id": 25, "text": "GLYPH", "bbox": {"l": 136.8, "t": 481.87543, "r": 141.78, "b": 490.65021, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "RCAC effects on data movement", "bbox": {"l": 151.20016, "t": 481.72604, "r": 296.34232, "b": 490.93903, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "list_item", "bbox": {"l": 135.80313110351562, "t": 492.80511474609375, "r": 248.5316162109375, "b": 502.96875, "coord_origin": "TOPLEFT"}, "confidence": 0.9282206892967224, "cells": [{"id": 27, "text": "GLYPH", "bbox": {"l": 136.8, "t": 493.87524, "r": 141.78, "b": 502.65002, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "RCAC effects on joins", "bbox": {"l": 151.20016, "t": 493.72586, "r": 248.37093, "b": 502.93884, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "list_item", "bbox": {"l": 135.69058227539062, "t": 504.4717712402344, "r": 368.62, "b": 515.00390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9455210566520691, "cells": [{"id": 29, "text": "GLYPH", "bbox": {"l": 136.8, "t": 505.87506, "r": 141.78, "b": 514.64984, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Monitoring, analyzing, and debugging with RCAC", "bbox": {"l": 151.20016, "t": 505.72568, "r": 368.62, "b": 514.93866, "coord_origin": "TOPLEFT"}}]}, {"id": 18, "label": "list_item", "bbox": {"l": 135.53225708007812, "t": 516.2424926757812, "r": 428.50857999999994, "b": 526.93848, "coord_origin": "TOPLEFT"}, "confidence": 0.9446545243263245, "cells": [{"id": 31, "text": "GLYPH", "bbox": {"l": 136.8, "t": 517.8748800000001, "r": 141.78, "b": 526.64966, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Views, materialized query tables, and query rewrite with RCAC", "bbox": {"l": 151.20016, "t": 517.72549, "r": 428.50857999999994, "b": 526.93848, "coord_origin": "TOPLEFT"}}]}, {"id": 19, "label": "list_item", "bbox": {"l": 135.63209533691406, "t": 528.7277221679688, "r": 349.38428, "b": 539.08544921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9345404505729675, "cells": [{"id": 33, "text": "GLYPH", "bbox": {"l": 136.8, "t": 529.87469, "r": 141.78, "b": 538.64944, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "RCAC effects on performance and scalability", "bbox": {"l": 151.20016, "t": 529.72528, "r": 349.38428, "b": 538.93829, "coord_origin": "TOPLEFT"}}]}, {"id": 20, "label": "list_item", "bbox": {"l": 135.68804931640625, "t": 540.8400268554688, "r": 390.44034, "b": 551.35888671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9479876160621643, "cells": [{"id": 35, "text": "GLYPH", "bbox": {"l": 136.8, "t": 541.8745, "r": 141.78, "b": 550.6492499999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Exclusive lock to implement RCAC (availability issues)", "bbox": {"l": 151.20016, "t": 541.7251, "r": 390.44034, "b": 550.9381, "coord_origin": "TOPLEFT"}}]}, {"id": 21, "label": "list_item", "bbox": {"l": 135.8003692626953, "t": 552.6859741210938, "r": 315.37079, "b": 563.0116577148438, "coord_origin": "TOPLEFT"}, "confidence": 0.9349662661552429, "cells": [{"id": 37, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 553.8743, "r": 141.77998, "b": 562.64905, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Avoiding propagation of masked data", "bbox": {"l": 151.20015, "t": 553.7249, "r": 315.37079, "b": 562.9379, "coord_origin": "TOPLEFT"}}]}, {"id": 22, "label": "list_item", "bbox": {"l": 135.62815856933594, "t": 564.294189453125, "r": 307.30423, "b": 574.9377, "coord_origin": "TOPLEFT"}, "confidence": 0.9371550679206848, "cells": [{"id": 39, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 565.8741, "r": 141.77998, "b": 574.64885, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Triggers and functions (SECURED)", "bbox": {"l": 151.20015, "t": 565.7247, "r": 307.30423, "b": 574.9377, "coord_origin": "TOPLEFT"}}]}, {"id": 23, "label": "list_item", "bbox": {"l": 135.61077880859375, "t": 576.708740234375, "r": 315.14774, "b": 587.1307983398438, "coord_origin": "TOPLEFT"}, "confidence": 0.9537895917892456, "cells": [{"id": 41, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 577.8739, "r": 141.77998, "b": 586.64865, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "RCAC is only one part of the solution", "bbox": {"l": 151.20015, "t": 577.7245, "r": 315.14774, "b": 586.9375, "coord_origin": "TOPLEFT"}}]}, {"id": 24, "label": "text", "bbox": {"l": 500.39999, "t": 93.05345916748047, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.7402352690696716, "cells": [{"id": 43, "text": "6", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, {"id": 25, "label": "picture", "bbox": {"l": 32.03302764892578, "t": 70.35401916503906, "r": 238.4545135498047, "b": 238.00796508789062, "coord_origin": "TOPLEFT"}, "confidence": 0.6230185627937317, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 100, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.789581298828125, "t": 754.7017822265625, "r": 257.24335, "b": 764.1205444335938, "coord_origin": "TOPLEFT"}, "confidence": 0.9495893716812134, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 100, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6629028320312, "t": 754.3357543945312, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.917849063873291, "cells": [{"id": 1, "text": "85", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "85"}, {"label": "text", "id": 2, "page_no": 100, "cluster": {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 6.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6."}, {"label": "section_header", "id": 3, "page_no": 100, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 136.34396362304688, "t": 253.19119262695312, "r": 455.59796, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9567626714706421, "cells": [{"id": 3, "text": "Additional considerations", "bbox": {"l": 136.8, "t": 254.88635, "r": 455.59796, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Additional considerations"}, {"label": "text", "id": 4, "page_no": 100, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.87008666992188, "t": 316.7393493652344, "r": 531.34546, "b": 339.10498046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9598965644836426, "cells": [{"id": 4, "text": "This chapter covers additional considerations that must be taken into account when ", "bbox": {"l": 136.8, "t": 317.68872, "r": 507.11765, "b": 326.90170000000006, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "implementing Row and Column Access Control (RCAC), including the following functions:", "bbox": {"l": 136.8, "t": 329.68854, "r": 531.34546, "b": 338.90152, "coord_origin": "TOPLEFT"}}]}, "text": "This chapter covers additional considerations that must be taken into account when implementing Row and Column Access Control (RCAC), including the following functions:"}, {"label": "list_item", "id": 5, "page_no": 100, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.8069610595703, "t": 346.03759765625, "r": 267.31885, "b": 356.3053283691406, "coord_origin": "TOPLEFT"}, "confidence": 0.9453163743019104, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 346.8775, "r": 141.78, "b": 355.65228, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Timing of column masking", "bbox": {"l": 151.20016, "t": 346.72812, "r": 267.31885, "b": 355.94110000000006, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Timing of column masking"}, {"label": "list_item", "id": 6, "page_no": 100, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.6639404296875, "t": 358.057373046875, "r": 221.46388244628906, "b": 367.94092, "coord_origin": "TOPLEFT"}, "confidence": 0.9263733625411987, "cells": [{"id": 8, "text": "GLYPH", "bbox": {"l": 136.8, "t": 358.87731999999994, "r": 141.78, "b": 367.6521, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Data movement", "bbox": {"l": 151.20016, "t": 358.72794, "r": 221.34749999999997, "b": 367.94092, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Data movement"}, {"label": "list_item", "id": 7, "page_no": 100, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.80430603027344, "t": 370.3742370605469, "r": 174.48665, "b": 379.94073, "coord_origin": "TOPLEFT"}, "confidence": 0.909616231918335, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.8, "t": 370.87714000000005, "r": 141.78, "b": 379.65191999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Joins", "bbox": {"l": 151.20016, "t": 370.72775, "r": 174.48665, "b": 379.94073, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Joins"}, {"label": "list_item", "id": 8, "page_no": 100, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.77816772460938, "t": 382.2833251953125, "r": 177.67285, "b": 391.94055000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9085867404937744, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.8, "t": 382.87695, "r": 141.78, "b": 391.65173, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Views", "bbox": {"l": 151.20016, "t": 382.72757, "r": 177.67285, "b": 391.94055000000003, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Views"}, {"label": "list_item", "id": 9, "page_no": 100, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.9530487060547, "t": 394.1155090332031, "r": 262.43051, "b": 404.1868896484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9477983713150024, "cells": [{"id": 14, "text": "GLYPH", "bbox": {"l": 136.8, "t": 394.87677, "r": 141.78, "b": 403.65155, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Materialized query tables", "bbox": {"l": 151.20016, "t": 394.72739, "r": 262.43051, "b": 403.94037, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Materialized query tables"}, {"label": "list_item", "id": 10, "page_no": 100, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.72091674804688, "t": 406.3046569824219, "r": 210.3322296142578, "b": 415.94019, "coord_origin": "TOPLEFT"}, "confidence": 0.9171162247657776, "cells": [{"id": 16, "text": "GLYPH", "bbox": {"l": 136.8, "t": 406.87659, "r": 141.78, "b": 415.65136999999993, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Index advisor", "bbox": {"l": 151.20016, "t": 406.7272, "r": 210.29085, "b": 415.94019, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Index advisor"}, {"label": "list_item", "id": 11, "page_no": 100, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.53468322753906, "t": 418.32232666015625, "r": 310.97345, "b": 428.54669189453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9497132301330566, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.8, "t": 418.8764, "r": 141.78, "b": 427.65118, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Monitoring, analysis, and debugging", "bbox": {"l": 151.20016, "t": 418.72702, "r": 310.97345, "b": 427.94, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Monitoring, analysis, and debugging"}, {"label": "list_item", "id": 12, "page_no": 100, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 135.64329528808594, "t": 429.8523864746094, "r": 273.34265, "b": 440.3828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9438368082046509, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.8, "t": 430.87622, "r": 141.78, "b": 439.651, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Performance and scalability", "bbox": {"l": 151.20016, "t": 430.72684, "r": 273.34265, "b": 439.93981999999994, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Performance and scalability"}, {"label": "text", "id": 13, "page_no": 100, "cluster": {"id": 13, "label": "text", "bbox": {"l": 136.005859375, "t": 451.9608154296875, "r": 347.41214, "b": 462.3204650878906, "coord_origin": "TOPLEFT"}, "confidence": 0.875919759273529, "cells": [{"id": 22, "text": "The following topics are covered in this chapter:", "bbox": {"l": 136.8, "t": 452.68665, "r": 347.41214, "b": 461.89963, "coord_origin": "TOPLEFT"}}]}, "text": "The following topics are covered in this chapter:"}, {"label": "list_item", "id": 14, "page_no": 100, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 135.94393920898438, "t": 468.6572265625, "r": 267.31885, "b": 479.11810302734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9442504644393921, "cells": [{"id": 23, "text": "GLYPH", "bbox": {"l": 136.8, "t": 469.87561, "r": 141.78, "b": 478.65039, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Timing of column masking", "bbox": {"l": 151.20016, "t": 469.72623, "r": 267.31885, "b": 478.93921, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Timing of column masking"}, {"label": "list_item", "id": 15, "page_no": 100, "cluster": {"id": 15, "label": "list_item", "bbox": {"l": 135.8094024658203, "t": 480.9632568359375, "r": 296.34232, "b": 490.93903, "coord_origin": "TOPLEFT"}, "confidence": 0.9341280460357666, "cells": [{"id": 25, "text": "GLYPH", "bbox": {"l": 136.8, "t": 481.87543, "r": 141.78, "b": 490.65021, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "RCAC effects on data movement", "bbox": {"l": 151.20016, "t": 481.72604, "r": 296.34232, "b": 490.93903, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH RCAC effects on data movement"}, {"label": "list_item", "id": 16, "page_no": 100, "cluster": {"id": 16, "label": "list_item", "bbox": {"l": 135.80313110351562, "t": 492.80511474609375, "r": 248.5316162109375, "b": 502.96875, "coord_origin": "TOPLEFT"}, "confidence": 0.9282206892967224, "cells": [{"id": 27, "text": "GLYPH", "bbox": {"l": 136.8, "t": 493.87524, "r": 141.78, "b": 502.65002, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "RCAC effects on joins", "bbox": {"l": 151.20016, "t": 493.72586, "r": 248.37093, "b": 502.93884, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH RCAC effects on joins"}, {"label": "list_item", "id": 17, "page_no": 100, "cluster": {"id": 17, "label": "list_item", "bbox": {"l": 135.69058227539062, "t": 504.4717712402344, "r": 368.62, "b": 515.00390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9455210566520691, "cells": [{"id": 29, "text": "GLYPH", "bbox": {"l": 136.8, "t": 505.87506, "r": 141.78, "b": 514.64984, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Monitoring, analyzing, and debugging with RCAC", "bbox": {"l": 151.20016, "t": 505.72568, "r": 368.62, "b": 514.93866, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Monitoring, analyzing, and debugging with RCAC"}, {"label": "list_item", "id": 18, "page_no": 100, "cluster": {"id": 18, "label": "list_item", "bbox": {"l": 135.53225708007812, "t": 516.2424926757812, "r": 428.50857999999994, "b": 526.93848, "coord_origin": "TOPLEFT"}, "confidence": 0.9446545243263245, "cells": [{"id": 31, "text": "GLYPH", "bbox": {"l": 136.8, "t": 517.8748800000001, "r": 141.78, "b": 526.64966, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Views, materialized query tables, and query rewrite with RCAC", "bbox": {"l": 151.20016, "t": 517.72549, "r": 428.50857999999994, "b": 526.93848, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Views, materialized query tables, and query rewrite with RCAC"}, {"label": "list_item", "id": 19, "page_no": 100, "cluster": {"id": 19, "label": "list_item", "bbox": {"l": 135.63209533691406, "t": 528.7277221679688, "r": 349.38428, "b": 539.08544921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9345404505729675, "cells": [{"id": 33, "text": "GLYPH", "bbox": {"l": 136.8, "t": 529.87469, "r": 141.78, "b": 538.64944, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "RCAC effects on performance and scalability", "bbox": {"l": 151.20016, "t": 529.72528, "r": 349.38428, "b": 538.93829, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH RCAC effects on performance and scalability"}, {"label": "list_item", "id": 20, "page_no": 100, "cluster": {"id": 20, "label": "list_item", "bbox": {"l": 135.68804931640625, "t": 540.8400268554688, "r": 390.44034, "b": 551.35888671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9479876160621643, "cells": [{"id": 35, "text": "GLYPH", "bbox": {"l": 136.8, "t": 541.8745, "r": 141.78, "b": 550.6492499999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Exclusive lock to implement RCAC (availability issues)", "bbox": {"l": 151.20016, "t": 541.7251, "r": 390.44034, "b": 550.9381, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Exclusive lock to implement RCAC (availability issues)"}, {"label": "list_item", "id": 21, "page_no": 100, "cluster": {"id": 21, "label": "list_item", "bbox": {"l": 135.8003692626953, "t": 552.6859741210938, "r": 315.37079, "b": 563.0116577148438, "coord_origin": "TOPLEFT"}, "confidence": 0.9349662661552429, "cells": [{"id": 37, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 553.8743, "r": 141.77998, "b": 562.64905, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Avoiding propagation of masked data", "bbox": {"l": 151.20015, "t": 553.7249, "r": 315.37079, "b": 562.9379, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Avoiding propagation of masked data"}, {"label": "list_item", "id": 22, "page_no": 100, "cluster": {"id": 22, "label": "list_item", "bbox": {"l": 135.62815856933594, "t": 564.294189453125, "r": 307.30423, "b": 574.9377, "coord_origin": "TOPLEFT"}, "confidence": 0.9371550679206848, "cells": [{"id": 39, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 565.8741, "r": 141.77998, "b": 574.64885, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Triggers and functions (SECURED)", "bbox": {"l": 151.20015, "t": 565.7247, "r": 307.30423, "b": 574.9377, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Triggers and functions (SECURED)"}, {"label": "list_item", "id": 23, "page_no": 100, "cluster": {"id": 23, "label": "list_item", "bbox": {"l": 135.61077880859375, "t": 576.708740234375, "r": 315.14774, "b": 587.1307983398438, "coord_origin": "TOPLEFT"}, "confidence": 0.9537895917892456, "cells": [{"id": 41, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 577.8739, "r": 141.77998, "b": 586.64865, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "RCAC is only one part of the solution", "bbox": {"l": 151.20015, "t": 577.7245, "r": 315.14774, "b": 586.9375, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH RCAC is only one part of the solution"}, {"label": "text", "id": 24, "page_no": 100, "cluster": {"id": 24, "label": "text", "bbox": {"l": 500.39999, "t": 93.05345916748047, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.7402352690696716, "cells": [{"id": 43, "text": "6", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, "text": "6"}, {"label": "picture", "id": 25, "page_no": 100, "cluster": {"id": 25, "label": "picture", "bbox": {"l": 32.03302764892578, "t": 70.35401916503906, "r": 238.4545135498047, "b": 238.00796508789062, "coord_origin": "TOPLEFT"}, "confidence": 0.6230185627937317, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 100, "cluster": {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 6.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6."}, {"label": "section_header", "id": 3, "page_no": 100, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 136.34396362304688, "t": 253.19119262695312, "r": 455.59796, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9567626714706421, "cells": [{"id": 3, "text": "Additional considerations", "bbox": {"l": 136.8, "t": 254.88635, "r": 455.59796, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Additional considerations"}, {"label": "text", "id": 4, "page_no": 100, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.87008666992188, "t": 316.7393493652344, "r": 531.34546, "b": 339.10498046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9598965644836426, "cells": [{"id": 4, "text": "This chapter covers additional considerations that must be taken into account when ", "bbox": {"l": 136.8, "t": 317.68872, "r": 507.11765, "b": 326.90170000000006, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "implementing Row and Column Access Control (RCAC), including the following functions:", "bbox": {"l": 136.8, "t": 329.68854, "r": 531.34546, "b": 338.90152, "coord_origin": "TOPLEFT"}}]}, "text": "This chapter covers additional considerations that must be taken into account when implementing Row and Column Access Control (RCAC), including the following functions:"}, {"label": "list_item", "id": 5, "page_no": 100, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.8069610595703, "t": 346.03759765625, "r": 267.31885, "b": 356.3053283691406, "coord_origin": "TOPLEFT"}, "confidence": 0.9453163743019104, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 346.8775, "r": 141.78, "b": 355.65228, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Timing of column masking", "bbox": {"l": 151.20016, "t": 346.72812, "r": 267.31885, "b": 355.94110000000006, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Timing of column masking"}, {"label": "list_item", "id": 6, "page_no": 100, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.6639404296875, "t": 358.057373046875, "r": 221.46388244628906, "b": 367.94092, "coord_origin": "TOPLEFT"}, "confidence": 0.9263733625411987, "cells": [{"id": 8, "text": "GLYPH", "bbox": {"l": 136.8, "t": 358.87731999999994, "r": 141.78, "b": 367.6521, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Data movement", "bbox": {"l": 151.20016, "t": 358.72794, "r": 221.34749999999997, "b": 367.94092, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Data movement"}, {"label": "list_item", "id": 7, "page_no": 100, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.80430603027344, "t": 370.3742370605469, "r": 174.48665, "b": 379.94073, "coord_origin": "TOPLEFT"}, "confidence": 0.909616231918335, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.8, "t": 370.87714000000005, "r": 141.78, "b": 379.65191999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Joins", "bbox": {"l": 151.20016, "t": 370.72775, "r": 174.48665, "b": 379.94073, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Joins"}, {"label": "list_item", "id": 8, "page_no": 100, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.77816772460938, "t": 382.2833251953125, "r": 177.67285, "b": 391.94055000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9085867404937744, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.8, "t": 382.87695, "r": 141.78, "b": 391.65173, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Views", "bbox": {"l": 151.20016, "t": 382.72757, "r": 177.67285, "b": 391.94055000000003, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Views"}, {"label": "list_item", "id": 9, "page_no": 100, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.9530487060547, "t": 394.1155090332031, "r": 262.43051, "b": 404.1868896484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9477983713150024, "cells": [{"id": 14, "text": "GLYPH", "bbox": {"l": 136.8, "t": 394.87677, "r": 141.78, "b": 403.65155, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Materialized query tables", "bbox": {"l": 151.20016, "t": 394.72739, "r": 262.43051, "b": 403.94037, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Materialized query tables"}, {"label": "list_item", "id": 10, "page_no": 100, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.72091674804688, "t": 406.3046569824219, "r": 210.3322296142578, "b": 415.94019, "coord_origin": "TOPLEFT"}, "confidence": 0.9171162247657776, "cells": [{"id": 16, "text": "GLYPH", "bbox": {"l": 136.8, "t": 406.87659, "r": 141.78, "b": 415.65136999999993, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Index advisor", "bbox": {"l": 151.20016, "t": 406.7272, "r": 210.29085, "b": 415.94019, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Index advisor"}, {"label": "list_item", "id": 11, "page_no": 100, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.53468322753906, "t": 418.32232666015625, "r": 310.97345, "b": 428.54669189453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9497132301330566, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.8, "t": 418.8764, "r": 141.78, "b": 427.65118, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Monitoring, analysis, and debugging", "bbox": {"l": 151.20016, "t": 418.72702, "r": 310.97345, "b": 427.94, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Monitoring, analysis, and debugging"}, {"label": "list_item", "id": 12, "page_no": 100, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 135.64329528808594, "t": 429.8523864746094, "r": 273.34265, "b": 440.3828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9438368082046509, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.8, "t": 430.87622, "r": 141.78, "b": 439.651, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Performance and scalability", "bbox": {"l": 151.20016, "t": 430.72684, "r": 273.34265, "b": 439.93981999999994, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Performance and scalability"}, {"label": "text", "id": 13, "page_no": 100, "cluster": {"id": 13, "label": "text", "bbox": {"l": 136.005859375, "t": 451.9608154296875, "r": 347.41214, "b": 462.3204650878906, "coord_origin": "TOPLEFT"}, "confidence": 0.875919759273529, "cells": [{"id": 22, "text": "The following topics are covered in this chapter:", "bbox": {"l": 136.8, "t": 452.68665, "r": 347.41214, "b": 461.89963, "coord_origin": "TOPLEFT"}}]}, "text": "The following topics are covered in this chapter:"}, {"label": "list_item", "id": 14, "page_no": 100, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 135.94393920898438, "t": 468.6572265625, "r": 267.31885, "b": 479.11810302734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9442504644393921, "cells": [{"id": 23, "text": "GLYPH", "bbox": {"l": 136.8, "t": 469.87561, "r": 141.78, "b": 478.65039, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Timing of column masking", "bbox": {"l": 151.20016, "t": 469.72623, "r": 267.31885, "b": 478.93921, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Timing of column masking"}, {"label": "list_item", "id": 15, "page_no": 100, "cluster": {"id": 15, "label": "list_item", "bbox": {"l": 135.8094024658203, "t": 480.9632568359375, "r": 296.34232, "b": 490.93903, "coord_origin": "TOPLEFT"}, "confidence": 0.9341280460357666, "cells": [{"id": 25, "text": "GLYPH", "bbox": {"l": 136.8, "t": 481.87543, "r": 141.78, "b": 490.65021, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "RCAC effects on data movement", "bbox": {"l": 151.20016, "t": 481.72604, "r": 296.34232, "b": 490.93903, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH RCAC effects on data movement"}, {"label": "list_item", "id": 16, "page_no": 100, "cluster": {"id": 16, "label": "list_item", "bbox": {"l": 135.80313110351562, "t": 492.80511474609375, "r": 248.5316162109375, "b": 502.96875, "coord_origin": "TOPLEFT"}, "confidence": 0.9282206892967224, "cells": [{"id": 27, "text": "GLYPH", "bbox": {"l": 136.8, "t": 493.87524, "r": 141.78, "b": 502.65002, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "RCAC effects on joins", "bbox": {"l": 151.20016, "t": 493.72586, "r": 248.37093, "b": 502.93884, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH RCAC effects on joins"}, {"label": "list_item", "id": 17, "page_no": 100, "cluster": {"id": 17, "label": "list_item", "bbox": {"l": 135.69058227539062, "t": 504.4717712402344, "r": 368.62, "b": 515.00390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9455210566520691, "cells": [{"id": 29, "text": "GLYPH", "bbox": {"l": 136.8, "t": 505.87506, "r": 141.78, "b": 514.64984, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Monitoring, analyzing, and debugging with RCAC", "bbox": {"l": 151.20016, "t": 505.72568, "r": 368.62, "b": 514.93866, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Monitoring, analyzing, and debugging with RCAC"}, {"label": "list_item", "id": 18, "page_no": 100, "cluster": {"id": 18, "label": "list_item", "bbox": {"l": 135.53225708007812, "t": 516.2424926757812, "r": 428.50857999999994, "b": 526.93848, "coord_origin": "TOPLEFT"}, "confidence": 0.9446545243263245, "cells": [{"id": 31, "text": "GLYPH", "bbox": {"l": 136.8, "t": 517.8748800000001, "r": 141.78, "b": 526.64966, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Views, materialized query tables, and query rewrite with RCAC", "bbox": {"l": 151.20016, "t": 517.72549, "r": 428.50857999999994, "b": 526.93848, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Views, materialized query tables, and query rewrite with RCAC"}, {"label": "list_item", "id": 19, "page_no": 100, "cluster": {"id": 19, "label": "list_item", "bbox": {"l": 135.63209533691406, "t": 528.7277221679688, "r": 349.38428, "b": 539.08544921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9345404505729675, "cells": [{"id": 33, "text": "GLYPH", "bbox": {"l": 136.8, "t": 529.87469, "r": 141.78, "b": 538.64944, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "RCAC effects on performance and scalability", "bbox": {"l": 151.20016, "t": 529.72528, "r": 349.38428, "b": 538.93829, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH RCAC effects on performance and scalability"}, {"label": "list_item", "id": 20, "page_no": 100, "cluster": {"id": 20, "label": "list_item", "bbox": {"l": 135.68804931640625, "t": 540.8400268554688, "r": 390.44034, "b": 551.35888671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9479876160621643, "cells": [{"id": 35, "text": "GLYPH", "bbox": {"l": 136.8, "t": 541.8745, "r": 141.78, "b": 550.6492499999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Exclusive lock to implement RCAC (availability issues)", "bbox": {"l": 151.20016, "t": 541.7251, "r": 390.44034, "b": 550.9381, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Exclusive lock to implement RCAC (availability issues)"}, {"label": "list_item", "id": 21, "page_no": 100, "cluster": {"id": 21, "label": "list_item", "bbox": {"l": 135.8003692626953, "t": 552.6859741210938, "r": 315.37079, "b": 563.0116577148438, "coord_origin": "TOPLEFT"}, "confidence": 0.9349662661552429, "cells": [{"id": 37, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 553.8743, "r": 141.77998, "b": 562.64905, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Avoiding propagation of masked data", "bbox": {"l": 151.20015, "t": 553.7249, "r": 315.37079, "b": 562.9379, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Avoiding propagation of masked data"}, {"label": "list_item", "id": 22, "page_no": 100, "cluster": {"id": 22, "label": "list_item", "bbox": {"l": 135.62815856933594, "t": 564.294189453125, "r": 307.30423, "b": 574.9377, "coord_origin": "TOPLEFT"}, "confidence": 0.9371550679206848, "cells": [{"id": 39, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 565.8741, "r": 141.77998, "b": 574.64885, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Triggers and functions (SECURED)", "bbox": {"l": 151.20015, "t": 565.7247, "r": 307.30423, "b": 574.9377, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Triggers and functions (SECURED)"}, {"label": "list_item", "id": 23, "page_no": 100, "cluster": {"id": 23, "label": "list_item", "bbox": {"l": 135.61077880859375, "t": 576.708740234375, "r": 315.14774, "b": 587.1307983398438, "coord_origin": "TOPLEFT"}, "confidence": 0.9537895917892456, "cells": [{"id": 41, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 577.8739, "r": 141.77998, "b": 586.64865, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "RCAC is only one part of the solution", "bbox": {"l": 151.20015, "t": 577.7245, "r": 315.14774, "b": 586.9375, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH RCAC is only one part of the solution"}, {"label": "text", "id": 24, "page_no": 100, "cluster": {"id": 24, "label": "text", "bbox": {"l": 500.39999, "t": 93.05345916748047, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.7402352690696716, "cells": [{"id": 43, "text": "6", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, "text": "6"}, {"label": "picture", "id": 25, "page_no": 100, "cluster": {"id": 25, "label": "picture", "bbox": {"l": 32.03302764892578, "t": 70.35401916503906, "r": 238.4545135498047, "b": 238.00796508789062, "coord_origin": "TOPLEFT"}, "confidence": 0.6230185627937317, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 100, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.789581298828125, "t": 754.7017822265625, "r": 257.24335, "b": 764.1205444335938, "coord_origin": "TOPLEFT"}, "confidence": 0.9495893716812134, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 100, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6629028320312, "t": 754.3357543945312, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.917849063873291, "cells": [{"id": 1, "text": "85", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "85"}]}}, {"page_no": 101, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "86 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "6.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.453255, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Timing of column masking", "bbox": {"l": 91.983902, "t": 74.34069999999997, "r": 298.45441, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "An important design and implementation consideration is the fact that RCAC column masking ", "bbox": {"l": 136.8, "t": 106.6087, "r": 547.24963, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "occurs after all of the query processing is complete, which means that the query results are ", "bbox": {"l": 136.8, "t": 118.60852, "r": 542.35236, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "not at all based on the masked values. Any local selection, joining, grouping, or ordering ", "bbox": {"l": 136.8, "t": 130.60834, "r": 527.76294, "b": 139.82135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "operations are based on the unmasked column values. Only the final result set is the target of ", "bbox": {"l": 136.8, "t": 142.60815000000002, "r": 547.23962, "b": 151.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "the masking. ", "bbox": {"l": 136.8, "t": 154.60797000000002, "r": 196.23331, "b": 163.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "An example of this situation is shown in Figure 6-1. However, note that aggregate functions (a ", "bbox": {"l": 136.8, "t": 176.62756000000002, "r": 547.23254, "b": 185.84058000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "form of grouping) are based on masked values.", "bbox": {"l": 136.8, "t": 188.62738000000002, "r": 345.5368, "b": 197.84038999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Figure 6-1 Timing of column masking", "bbox": {"l": 136.8, "t": 472.578, "r": 289.59567, "b": 480.90302, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "SELECT", "bbox": {"l": 223.54629999999997, "t": 224.41350999999997, "r": 250.22076000000004, "b": 232.33582, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "CREDIT_CARD_NUMBER,", "bbox": {"l": 290.24081, "t": 224.41350999999997, "r": 386.13547, "b": 232.33582, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "SUM(AMOUNT) AS TOTAL", "bbox": {"l": 290.2482, "t": 235.53063999999995, "r": 389.2164, "b": 243.45294, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "FROM", "bbox": {"l": 223.54629999999997, "t": 246.64757999999995, "r": 247.25089, "b": 254.56989, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "TRANSACTIONS", "bbox": {"l": 290.24869, "t": 246.64757999999995, "r": 350.20563, "b": 254.56989, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "GROUP BY", "bbox": {"l": 223.54629999999997, "t": 257.76471000000004, "r": 263.57651, "b": 265.68701, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "CREDIT_CARD_NUMBER", "bbox": {"l": 290.2843, "t": 257.76471000000004, "r": 383.71991, "b": 265.68701, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ORDER BY", "bbox": {"l": 223.54629999999997, "t": 268.88184, "r": 262.38541, "b": 276.80413999999996, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "CREDIT_CARD_NUMBER;", "bbox": {"l": 290.28986, "t": 268.88184, "r": 386.24557, "b": 276.80413999999996, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "CREDIT CARD NUMBER", "bbox": {"l": 149.4512, "t": 317.02898999999996, "r": 233.62379, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "TOTAL", "bbox": {"l": 257.74921, "t": 317.02898999999996, "r": 279.16821, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "CREDIT CARD NUMBER", "bbox": {"l": 318.98621, "t": 317.02898999999996, "r": 403.15881, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "TOTAL", "bbox": {"l": 427.28424, "t": 317.02898999999996, "r": 448.70325, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Without ", "bbox": {"l": 160.457, "t": 298.77588, "r": 207.85185, "b": 310.3793, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "RCAC Masking", "bbox": {"l": 207.84406, "t": 298.76291, "r": 284.9068, "b": 309.87311, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "With ", "bbox": {"l": 341.02625, "t": 298.77588, "r": 370.2554, "b": 310.3793, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "RCAC Masking", "bbox": {"l": 370.23593, "t": 298.76291, "r": 447.29868000000005, "b": 309.87311, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "_", "bbox": {"l": 174.2422, "t": 317.02898999999996, "r": 178.39442, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "_", "bbox": {"l": 197.80983, "t": 317.02898999999996, "r": 201.96205, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "3785 0000 0000 1234", "bbox": {"l": 148.50592, "t": 330.5637500000001, "r": 221.83939, "b": 337.69257, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "233.50", "bbox": {"l": 272.4223, "t": 330.5637500000001, "r": 295.64975, "b": 337.69257, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "3785 1111 1111 1234", "bbox": {"l": 148.50592, "t": 344.07098, "r": 221.83853, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "105.10", "bbox": {"l": 272.42145, "t": 344.07098, "r": 295.6489, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "3785 2222 2222 1234", "bbox": {"l": 148.5062, "t": 357.60629, "r": 221.84132000000002, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "300 00", "bbox": {"l": 272.40579, "t": 357.60629, "r": 295.64658, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "_", "bbox": {"l": 343.77731, "t": 317.02898999999996, "r": 347.92953, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "_", "bbox": {"l": 367.34494, "t": 317.02898999999996, "r": 371.49716, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "**** **** **** 1234", "bbox": {"l": 318.04102, "t": 330.5637500000001, "r": 390.68494, "b": 337.69257, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "233.50", "bbox": {"l": 441.96823, "t": 330.5637500000001, "r": 465.16064, "b": 337.69257, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "**** **** **** 1234", "bbox": {"l": 318.04102, "t": 344.07098, "r": 390.68494, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "105.10", "bbox": {"l": 441.96823, "t": 344.07098, "r": 465.16064, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 357.60629, "r": 390.65433, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "300 00", "bbox": {"l": 441.94089, "t": 357.60629, "r": 465.18167, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "300.00", "bbox": {"l": 272.40579, "t": 357.60629, "r": 295.6427, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "3785 3333 3333 1234", "bbox": {"l": 148.5062, "t": 371.1413, "r": 221.85214, "b": 378.27011, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "1,775.00", "bbox": {"l": 266.12503, "t": 371.1413, "r": 295.66751, "b": 378.27011, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "5466 4444 4444 1234", "bbox": {"l": 148.5062, "t": 384.64853, "r": 221.83881000000002, "b": 391.77734, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "601.70", "bbox": {"l": 272.42175, "t": 384.64853, "r": 295.6492, "b": 391.77734, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "300.00", "bbox": {"l": 441.94089, "t": 357.60629, "r": 465.1777, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 371.1413, "r": 390.69855, "b": 378.27011, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "1,775.00", "bbox": {"l": 435.67264000000006, "t": 371.1413, "r": 465.16843000000006, "b": 378.27011, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 384.64853, "r": 390.68521, "b": 391.77734, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "601.70", "bbox": {"l": 441.96851, "t": 384.64853, "r": 465.1609199999999, "b": 391.77734, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "5466 5555 5555 1234", "bbox": {"l": 148.5062, "t": 398.18347, "r": 221.83881000000002, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "37.80", "bbox": {"l": 276.64648, "t": 398.18347, "r": 295.64832, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "5466 6666 6666 1234", "bbox": {"l": 148.5062, "t": 411.71823, "r": 221.83881000000002, "b": 418.84705, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "490.45", "bbox": {"l": 272.42175, "t": 411.71823, "r": 295.6492, "b": 418.84705, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "6011 7777 7777 1234", "bbox": {"l": 148.5062, "t": 425.2258, "r": 221.84132000000002, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "1005.00", "bbox": {"l": 268.1813, "t": 425.2258, "r": 295.64603, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 398.18347, "r": 390.68521, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "37.80", "bbox": {"l": 446.1933, "t": 398.18347, "r": 465.16595, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 411.71823, "r": 390.68521, "b": 418.84705, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "490.45", "bbox": {"l": 441.96851, "t": 411.71823, "r": 465.1609199999999, "b": 418.84705, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 425.22546, "r": 390.66788, "b": 432.35428, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "1005.00", "bbox": {"l": 437.7164, "t": 425.2258, "r": 465.18112, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "6011 8888 8888 1234", "bbox": {"l": 148.5062, "t": 438.76077, "r": 221.83881000000002, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "750.33", "bbox": {"l": 272.42175, "t": 438.76077, "r": 295.6492, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "6011 9999 9999 0001", "bbox": {"l": 148.5062, "t": 452.29553, "r": 221.83881000000002, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "10.00", "bbox": {"l": 276.64648, "t": 452.29553, "r": 295.64832, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": " 1234", "bbox": {"l": 371.76227, "t": 425.2258, "r": 390.66788, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 438.76077, "r": 390.68521, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "750.33", "bbox": {"l": 441.96851, "t": 438.76077, "r": 465.1609199999999, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "**** **** **** 0001", "bbox": {"l": 318.04129, "t": 452.29553, "r": 390.68521, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "10.00", "bbox": {"l": 446.1933, "t": 452.29553, "r": 465.16595, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.28016662597656, "t": 754.42529296875, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9138955473899841, "cells": [{"id": 0, "text": "86 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.40719604492188, "t": 754.6533813476562, "r": 334.42142, "b": 763.9609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9498723745346069, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.63821411132812, "t": 73.412353515625, "r": 298.45441, "b": 89.93876647949219, "coord_origin": "TOPLEFT"}, "confidence": 0.9695685505867004, "cells": [{"id": 2, "text": "6.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.453255, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Timing of column masking", "bbox": {"l": 91.983902, "t": 74.34069999999997, "r": 298.45441, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.9453887939453, "t": 105.85498046875, "r": 547.24963, "b": 164.5647430419922, "coord_origin": "TOPLEFT"}, "confidence": 0.9870750308036804, "cells": [{"id": 4, "text": "An important design and implementation consideration is the fact that RCAC column masking ", "bbox": {"l": 136.8, "t": 106.6087, "r": 547.24963, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "occurs after all of the query processing is complete, which means that the query results are ", "bbox": {"l": 136.8, "t": 118.60852, "r": 542.35236, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "not at all based on the masked values. Any local selection, joining, grouping, or ordering ", "bbox": {"l": 136.8, "t": 130.60834, "r": 527.76294, "b": 139.82135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "operations are based on the unmasked column values. Only the final result set is the target of ", "bbox": {"l": 136.8, "t": 142.60815000000002, "r": 547.23962, "b": 151.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "the masking. ", "bbox": {"l": 136.8, "t": 154.60797000000002, "r": 196.23331, "b": 163.82097999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 136.015625, "t": 176.0285186767578, "r": 547.23254, "b": 198.28158569335938, "coord_origin": "TOPLEFT"}, "confidence": 0.9749656319618225, "cells": [{"id": 9, "text": "An example of this situation is shown in Figure 6-1. However, note that aggregate functions (a ", "bbox": {"l": 136.8, "t": 176.62756000000002, "r": 547.23254, "b": 185.84058000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "form of grouping) are based on masked values.", "bbox": {"l": 136.8, "t": 188.62738000000002, "r": 345.5368, "b": 197.84038999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 136.17198181152344, "t": 472.1231689453125, "r": 290.1625061035156, "b": 481.7851867675781, "coord_origin": "TOPLEFT"}, "confidence": 0.9372553825378418, "cells": [{"id": 11, "text": "Figure 6-1 Timing of column masking", "bbox": {"l": 136.8, "t": 472.578, "r": 289.59567, "b": 480.90302, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 222.81260681152344, "t": 223.79876708984375, "r": 250.3378143310547, "b": 232.33582, "coord_origin": "TOPLEFT"}, "confidence": 0.6529437899589539, "cells": [{"id": 12, "text": "SELECT", "bbox": {"l": 223.54629999999997, "t": 224.41350999999997, "r": 250.22076000000004, "b": 232.33582, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 289.8625183105469, "t": 223.75645446777344, "r": 386.13547, "b": 232.33582, "coord_origin": "TOPLEFT"}, "confidence": 0.6274991631507874, "cells": [{"id": 13, "text": "CREDIT_CARD_NUMBER,", "bbox": {"l": 290.24081, "t": 224.41350999999997, "r": 386.13547, "b": 232.33582, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 290.2482, "t": 235.53063999999995, "r": 389.2164, "b": 254.56989, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 14, "text": "SUM(AMOUNT) AS TOTAL", "bbox": {"l": 290.2482, "t": 235.53063999999995, "r": 389.2164, "b": 243.45294, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "TRANSACTIONS", "bbox": {"l": 290.24869, "t": 246.64757999999995, "r": 350.20563, "b": 254.56989, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 223.27870178222656, "t": 245.79042053222656, "r": 247.33633422851562, "b": 254.56989, "coord_origin": "TOPLEFT"}, "confidence": 0.7264513373374939, "cells": [{"id": 15, "text": "FROM", "bbox": {"l": 223.54629999999997, "t": 246.64757999999995, "r": 247.25089, "b": 254.56989, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 223.30404663085938, "t": 256.77313232421875, "r": 264.05712890625, "b": 265.68701, "coord_origin": "TOPLEFT"}, "confidence": 0.739473283290863, "cells": [{"id": 17, "text": "GROUP BY", "bbox": {"l": 223.54629999999997, "t": 257.76471000000004, "r": 263.57651, "b": 265.68701, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 289.9476623535156, "t": 256.7027893066406, "r": 384.1680908203125, "b": 265.68701, "coord_origin": "TOPLEFT"}, "confidence": 0.727581799030304, "cells": [{"id": 18, "text": "CREDIT_CARD_NUMBER", "bbox": {"l": 290.2843, "t": 257.76471000000004, "r": 383.71991, "b": 265.68701, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 223.270263671875, "t": 268.14324951171875, "r": 262.7109680175781, "b": 276.80413999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.74038165807724, "cells": [{"id": 19, "text": "ORDER BY", "bbox": {"l": 223.54629999999997, "t": 268.88184, "r": 262.38541, "b": 276.80413999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 290.0070495605469, "t": 267.8889465332031, "r": 386.24557, "b": 277.3880920410156, "coord_origin": "TOPLEFT"}, "confidence": 0.754478394985199, "cells": [{"id": 20, "text": "CREDIT_CARD_NUMBER;", "bbox": {"l": 290.28986, "t": 268.88184, "r": 386.24557, "b": 276.80413999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "table", "bbox": {"l": 143.16891479492188, "t": 312.9064636230469, "r": 300.13482666015625, "b": 464.53564453125, "coord_origin": "TOPLEFT"}, "confidence": 0.938347578048706, "cells": [{"id": 21, "text": "CREDIT CARD NUMBER", "bbox": {"l": 149.4512, "t": 317.02898999999996, "r": 233.62379, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "TOTAL", "bbox": {"l": 257.74921, "t": 317.02898999999996, "r": 279.16821, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "_", "bbox": {"l": 174.2422, "t": 317.02898999999996, "r": 178.39442, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "_", "bbox": {"l": 197.80983, "t": 317.02898999999996, "r": 201.96205, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "3785 0000 0000 1234", "bbox": {"l": 148.50592, "t": 330.5637500000001, "r": 221.83939, "b": 337.69257, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "233.50", "bbox": {"l": 272.4223, "t": 330.5637500000001, "r": 295.64975, "b": 337.69257, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "3785 1111 1111 1234", "bbox": {"l": 148.50592, "t": 344.07098, "r": 221.83853, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "105.10", "bbox": {"l": 272.42145, "t": 344.07098, "r": 295.6489, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "3785 2222 2222 1234", "bbox": {"l": 148.5062, "t": 357.60629, "r": 221.84132000000002, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "300 00", "bbox": {"l": 272.40579, "t": 357.60629, "r": 295.64658, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "300.00", "bbox": {"l": 272.40579, "t": 357.60629, "r": 295.6427, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "3785 3333 3333 1234", "bbox": {"l": 148.5062, "t": 371.1413, "r": 221.85214, "b": 378.27011, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "1,775.00", "bbox": {"l": 266.12503, "t": 371.1413, "r": 295.66751, "b": 378.27011, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "5466 4444 4444 1234", "bbox": {"l": 148.5062, "t": 384.64853, "r": 221.83881000000002, "b": 391.77734, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "601.70", "bbox": {"l": 272.42175, "t": 384.64853, "r": 295.6492, "b": 391.77734, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "5466 5555 5555 1234", "bbox": {"l": 148.5062, "t": 398.18347, "r": 221.83881000000002, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "37.80", "bbox": {"l": 276.64648, "t": 398.18347, "r": 295.64832, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "5466 6666 6666 1234", "bbox": {"l": 148.5062, "t": 411.71823, "r": 221.83881000000002, "b": 418.84705, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "490.45", "bbox": {"l": 272.42175, "t": 411.71823, "r": 295.6492, "b": 418.84705, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "6011 7777 7777 1234", "bbox": {"l": 148.5062, "t": 425.2258, "r": 221.84132000000002, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "1005.00", "bbox": {"l": 268.1813, "t": 425.2258, "r": 295.64603, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "6011 8888 8888 1234", "bbox": {"l": 148.5062, "t": 438.76077, "r": 221.83881000000002, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "750.33", "bbox": {"l": 272.42175, "t": 438.76077, "r": 295.6492, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "6011 9999 9999 0001", "bbox": {"l": 148.5062, "t": 452.29553, "r": 221.83881000000002, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "10.00", "bbox": {"l": 276.64648, "t": 452.29553, "r": 295.64832, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "table", "bbox": {"l": 313.3494567871094, "t": 312.5643005371094, "r": 470.7187805175781, "b": 464.93182373046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9333541393280029, "cells": [{"id": 23, "text": "CREDIT CARD NUMBER", "bbox": {"l": 318.98621, "t": 317.02898999999996, "r": 403.15881, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "TOTAL", "bbox": {"l": 427.28424, "t": 317.02898999999996, "r": 448.70325, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "_", "bbox": {"l": 343.77731, "t": 317.02898999999996, "r": 347.92953, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "_", "bbox": {"l": 367.34494, "t": 317.02898999999996, "r": 371.49716, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "**** **** **** 1234", "bbox": {"l": 318.04102, "t": 330.5637500000001, "r": 390.68494, "b": 337.69257, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "233.50", "bbox": {"l": 441.96823, "t": 330.5637500000001, "r": 465.16064, "b": 337.69257, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "**** **** **** 1234", "bbox": {"l": 318.04102, "t": 344.07098, "r": 390.68494, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "105.10", "bbox": {"l": 441.96823, "t": 344.07098, "r": 465.16064, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 357.60629, "r": 390.65433, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "300 00", "bbox": {"l": 441.94089, "t": 357.60629, "r": 465.18167, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "300.00", "bbox": {"l": 441.94089, "t": 357.60629, "r": 465.1777, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 371.1413, "r": 390.69855, "b": 378.27011, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "1,775.00", "bbox": {"l": 435.67264000000006, "t": 371.1413, "r": 465.16843000000006, "b": 378.27011, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 384.64853, "r": 390.68521, "b": 391.77734, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "601.70", "bbox": {"l": 441.96851, "t": 384.64853, "r": 465.1609199999999, "b": 391.77734, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 398.18347, "r": 390.68521, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "37.80", "bbox": {"l": 446.1933, "t": 398.18347, "r": 465.16595, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 411.71823, "r": 390.68521, "b": 418.84705, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "490.45", "bbox": {"l": 441.96851, "t": 411.71823, "r": 465.1609199999999, "b": 418.84705, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 425.22546, "r": 390.66788, "b": 432.35428, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "1005.00", "bbox": {"l": 437.7164, "t": 425.2258, "r": 465.18112, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": " 1234", "bbox": {"l": 371.76227, "t": 425.2258, "r": 390.66788, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 438.76077, "r": 390.68521, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "750.33", "bbox": {"l": 441.96851, "t": 438.76077, "r": 465.1609199999999, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "**** **** **** 0001", "bbox": {"l": 318.04129, "t": 452.29553, "r": 390.68521, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "10.00", "bbox": {"l": 446.1933, "t": 452.29553, "r": 465.16595, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "section_header", "bbox": {"l": 160.457, "t": 297.8916931152344, "r": 285.01361083984375, "b": 310.3793, "coord_origin": "TOPLEFT"}, "confidence": 0.8418190479278564, "cells": [{"id": 25, "text": "Without ", "bbox": {"l": 160.457, "t": 298.77588, "r": 207.85185, "b": 310.3793, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "RCAC Masking", "bbox": {"l": 207.84406, "t": 298.76291, "r": 284.9068, "b": 309.87311, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "section_header", "bbox": {"l": 341.02625, "t": 297.97357177734375, "r": 447.76593017578125, "b": 310.3793, "coord_origin": "TOPLEFT"}, "confidence": 0.8612884283065796, "cells": [{"id": 27, "text": "With ", "bbox": {"l": 341.02625, "t": 298.77588, "r": 370.2554, "b": 310.3793, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "RCAC Masking", "bbox": {"l": 370.23593, "t": 298.76291, "r": 447.29868000000005, "b": 309.87311, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {"14": {"label": "table", "id": 14, "page_no": 101, "cluster": {"id": 14, "label": "table", "bbox": {"l": 143.16891479492188, "t": 312.9064636230469, "r": 300.13482666015625, "b": 464.53564453125, "coord_origin": "TOPLEFT"}, "confidence": 0.938347578048706, "cells": [{"id": 21, "text": "CREDIT CARD NUMBER", "bbox": {"l": 149.4512, "t": 317.02898999999996, "r": 233.62379, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "TOTAL", "bbox": {"l": 257.74921, "t": 317.02898999999996, "r": 279.16821, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "_", "bbox": {"l": 174.2422, "t": 317.02898999999996, "r": 178.39442, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "_", "bbox": {"l": 197.80983, "t": 317.02898999999996, "r": 201.96205, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "3785 0000 0000 1234", "bbox": {"l": 148.50592, "t": 330.5637500000001, "r": 221.83939, "b": 337.69257, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "233.50", "bbox": {"l": 272.4223, "t": 330.5637500000001, "r": 295.64975, "b": 337.69257, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "3785 1111 1111 1234", "bbox": {"l": 148.50592, "t": 344.07098, "r": 221.83853, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "105.10", "bbox": {"l": 272.42145, "t": 344.07098, "r": 295.6489, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "3785 2222 2222 1234", "bbox": {"l": 148.5062, "t": 357.60629, "r": 221.84132000000002, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "300 00", "bbox": {"l": 272.40579, "t": 357.60629, "r": 295.64658, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "300.00", "bbox": {"l": 272.40579, "t": 357.60629, "r": 295.6427, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "3785 3333 3333 1234", "bbox": {"l": 148.5062, "t": 371.1413, "r": 221.85214, "b": 378.27011, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "1,775.00", "bbox": {"l": 266.12503, "t": 371.1413, "r": 295.66751, "b": 378.27011, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "5466 4444 4444 1234", "bbox": {"l": 148.5062, "t": 384.64853, "r": 221.83881000000002, "b": 391.77734, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "601.70", "bbox": {"l": 272.42175, "t": 384.64853, "r": 295.6492, "b": 391.77734, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "5466 5555 5555 1234", "bbox": {"l": 148.5062, "t": 398.18347, "r": 221.83881000000002, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "37.80", "bbox": {"l": 276.64648, "t": 398.18347, "r": 295.64832, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "5466 6666 6666 1234", "bbox": {"l": 148.5062, "t": 411.71823, "r": 221.83881000000002, "b": 418.84705, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "490.45", "bbox": {"l": 272.42175, "t": 411.71823, "r": 295.6492, "b": 418.84705, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "6011 7777 7777 1234", "bbox": {"l": 148.5062, "t": 425.2258, "r": 221.84132000000002, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "1005.00", "bbox": {"l": 268.1813, "t": 425.2258, "r": 295.64603, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "6011 8888 8888 1234", "bbox": {"l": 148.5062, "t": 438.76077, "r": 221.83881000000002, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "750.33", "bbox": {"l": 272.42175, "t": 438.76077, "r": 295.6492, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "6011 9999 9999 0001", "bbox": {"l": 148.5062, "t": 452.29553, "r": 221.83881000000002, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "10.00", "bbox": {"l": 276.64648, "t": 452.29553, "r": 295.64832, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl"], "num_rows": 11, "num_cols": 2, "table_cells": [{"bbox": {"l": 149.4512, "t": 317.02898999999996, "r": 233.62379, "b": 324.16614, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CREDIT CARD NUMBER _ _", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 257.74921, "t": 317.02898999999996, "r": 279.16821, "b": 324.16614, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "TOTAL", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 148.50592, "t": 330.5637500000001, "r": 221.83939, "b": 337.69257, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3785 0000 0000 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 272.4223, "t": 330.5637500000001, "r": 295.64975, "b": 337.69257, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "233.50", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.50592, "t": 344.07098, "r": 221.83853, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3785 1111 1111 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 272.42145, "t": 344.07098, "r": 295.6489, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "105.10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.5062, "t": 357.60629, "r": 221.84132000000002, "b": 364.73511, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3785 2222 2222 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 272.40579, "t": 357.60629, "r": 295.64658, "b": 364.73511, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "300 00 300.00", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.5062, "t": 371.1413, "r": 221.85214, "b": 378.27011, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3785 3333 3333 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 266.12503, "t": 371.1413, "r": 295.66751, "b": 378.27011, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "1,775.00", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.5062, "t": 384.64853, "r": 221.83881000000002, "b": 391.77734, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "5466 4444 4444 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 272.42175, "t": 384.64853, "r": 295.6492, "b": 391.77734, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "601.70", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.5062, "t": 398.18347, "r": 221.83881000000002, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "5466 5555 5555 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 276.64648, "t": 398.18347, "r": 295.64832, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "37.80", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.5062, "t": 411.71823, "r": 221.83881000000002, "b": 418.84705, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "5466 6666 6666 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 272.42175, "t": 411.71823, "r": 295.6492, "b": 418.84705, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "490.45", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.5062, "t": 425.2258, "r": 221.84132000000002, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "6011 7777 7777 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 268.1813, "t": 425.2258, "r": 295.64603, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "1005.00", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.5062, "t": 438.76077, "r": 221.83881000000002, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "6011 8888 8888 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 272.42175, "t": 438.76077, "r": 295.6492, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "750.33", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.5062, "t": 452.29553, "r": 221.83881000000002, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "6011 9999 9999 0001", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 276.64648, "t": 452.29553, "r": 295.64832, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "10.00", "column_header": false, "row_header": false, "row_section": false}]}, "15": {"label": "table", "id": 15, "page_no": 101, "cluster": {"id": 15, "label": "table", "bbox": {"l": 313.3494567871094, "t": 312.5643005371094, "r": 470.7187805175781, "b": 464.93182373046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9333541393280029, "cells": [{"id": 23, "text": "CREDIT CARD NUMBER", "bbox": {"l": 318.98621, "t": 317.02898999999996, "r": 403.15881, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "TOTAL", "bbox": {"l": 427.28424, "t": 317.02898999999996, "r": 448.70325, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "_", "bbox": {"l": 343.77731, "t": 317.02898999999996, "r": 347.92953, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "_", "bbox": {"l": 367.34494, "t": 317.02898999999996, "r": 371.49716, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "**** **** **** 1234", "bbox": {"l": 318.04102, "t": 330.5637500000001, "r": 390.68494, "b": 337.69257, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "233.50", "bbox": {"l": 441.96823, "t": 330.5637500000001, "r": 465.16064, "b": 337.69257, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "**** **** **** 1234", "bbox": {"l": 318.04102, "t": 344.07098, "r": 390.68494, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "105.10", "bbox": {"l": 441.96823, "t": 344.07098, "r": 465.16064, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 357.60629, "r": 390.65433, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "300 00", "bbox": {"l": 441.94089, "t": 357.60629, "r": 465.18167, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "300.00", "bbox": {"l": 441.94089, "t": 357.60629, "r": 465.1777, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 371.1413, "r": 390.69855, "b": 378.27011, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "1,775.00", "bbox": {"l": 435.67264000000006, "t": 371.1413, "r": 465.16843000000006, "b": 378.27011, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 384.64853, "r": 390.68521, "b": 391.77734, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "601.70", "bbox": {"l": 441.96851, "t": 384.64853, "r": 465.1609199999999, "b": 391.77734, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 398.18347, "r": 390.68521, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "37.80", "bbox": {"l": 446.1933, "t": 398.18347, "r": 465.16595, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 411.71823, "r": 390.68521, "b": 418.84705, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "490.45", "bbox": {"l": 441.96851, "t": 411.71823, "r": 465.1609199999999, "b": 418.84705, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 425.22546, "r": 390.66788, "b": 432.35428, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "1005.00", "bbox": {"l": 437.7164, "t": 425.2258, "r": 465.18112, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": " 1234", "bbox": {"l": 371.76227, "t": 425.2258, "r": 390.66788, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 438.76077, "r": 390.68521, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "750.33", "bbox": {"l": 441.96851, "t": 438.76077, "r": 465.1609199999999, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "**** **** **** 0001", "bbox": {"l": 318.04129, "t": 452.29553, "r": 390.68521, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "10.00", "bbox": {"l": 446.1933, "t": 452.29553, "r": 465.16595, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl"], "num_rows": 11, "num_cols": 2, "table_cells": [{"bbox": {"l": 318.98621, "t": 317.02898999999996, "r": 403.15881, "b": 324.16614, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CREDIT CARD NUMBER _ _", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 427.28424, "t": 317.02898999999996, "r": 448.70325, "b": 324.16614, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "TOTAL", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04102, "t": 330.5637500000001, "r": 390.68494, "b": 337.69257, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 441.96823, "t": 330.5637500000001, "r": 465.16064, "b": 337.69257, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "233.50", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04102, "t": 344.07098, "r": 390.68494, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 441.96823, "t": 344.07098, "r": 465.16064, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "105.10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04129, "t": 357.60629, "r": 390.65433, "b": 364.73511, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 441.94089, "t": 357.60629, "r": 465.18167, "b": 364.73511, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "300 00 300.00", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04129, "t": 371.1413, "r": 390.69855, "b": 378.27011, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 435.67264000000006, "t": 371.1413, "r": 465.16843000000006, "b": 378.27011, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "1,775.00", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04129, "t": 384.64853, "r": 390.68521, "b": 391.77734, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 441.96851, "t": 384.64853, "r": 465.1609199999999, "b": 391.77734, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "601.70", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04129, "t": 398.18347, "r": 390.68521, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 446.1933, "t": 398.18347, "r": 465.16595, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "37.80", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04129, "t": 411.71823, "r": 390.68521, "b": 418.84705, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 441.96851, "t": 411.71823, "r": 465.1609199999999, "b": 418.84705, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "490.45", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04129, "t": 425.22546, "r": 390.66788, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 437.7164, "t": 425.2258, "r": 465.18112, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "1005.00", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04129, "t": 438.76077, "r": 390.68521, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 441.96851, "t": 438.76077, "r": 465.1609199999999, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "750.33", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04129, "t": 452.29553, "r": 390.68521, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 0001", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 446.1933, "t": 452.29553, "r": 465.16595, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "10.00", "column_header": false, "row_header": false, "row_section": false}]}}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 101, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.28016662597656, "t": 754.42529296875, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9138955473899841, "cells": [{"id": 0, "text": "86 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "86"}, {"label": "page_footer", "id": 1, "page_no": 101, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.40719604492188, "t": 754.6533813476562, "r": 334.42142, "b": 763.9609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9498723745346069, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "section_header", "id": 2, "page_no": 101, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.63821411132812, "t": 73.412353515625, "r": 298.45441, "b": 89.93876647949219, "coord_origin": "TOPLEFT"}, "confidence": 0.9695685505867004, "cells": [{"id": 2, "text": "6.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.453255, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Timing of column masking", "bbox": {"l": 91.983902, "t": 74.34069999999997, "r": 298.45441, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, "text": "6.1 Timing of column masking"}, {"label": "text", "id": 3, "page_no": 101, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.9453887939453, "t": 105.85498046875, "r": 547.24963, "b": 164.5647430419922, "coord_origin": "TOPLEFT"}, "confidence": 0.9870750308036804, "cells": [{"id": 4, "text": "An important design and implementation consideration is the fact that RCAC column masking ", "bbox": {"l": 136.8, "t": 106.6087, "r": 547.24963, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "occurs after all of the query processing is complete, which means that the query results are ", "bbox": {"l": 136.8, "t": 118.60852, "r": 542.35236, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "not at all based on the masked values. Any local selection, joining, grouping, or ordering ", "bbox": {"l": 136.8, "t": 130.60834, "r": 527.76294, "b": 139.82135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "operations are based on the unmasked column values. Only the final result set is the target of ", "bbox": {"l": 136.8, "t": 142.60815000000002, "r": 547.23962, "b": 151.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "the masking. ", "bbox": {"l": 136.8, "t": 154.60797000000002, "r": 196.23331, "b": 163.82097999999996, "coord_origin": "TOPLEFT"}}]}, "text": "An important design and implementation consideration is the fact that RCAC column masking occurs after all of the query processing is complete, which means that the query results are not at all based on the masked values. Any local selection, joining, grouping, or ordering operations are based on the unmasked column values. Only the final result set is the target of the masking."}, {"label": "text", "id": 4, "page_no": 101, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.015625, "t": 176.0285186767578, "r": 547.23254, "b": 198.28158569335938, "coord_origin": "TOPLEFT"}, "confidence": 0.9749656319618225, "cells": [{"id": 9, "text": "An example of this situation is shown in Figure 6-1. However, note that aggregate functions (a ", "bbox": {"l": 136.8, "t": 176.62756000000002, "r": 547.23254, "b": 185.84058000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "form of grouping) are based on masked values.", "bbox": {"l": 136.8, "t": 188.62738000000002, "r": 345.5368, "b": 197.84038999999996, "coord_origin": "TOPLEFT"}}]}, "text": "An example of this situation is shown in Figure 6-1. However, note that aggregate functions (a form of grouping) are based on masked values."}, {"label": "caption", "id": 5, "page_no": 101, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.17198181152344, "t": 472.1231689453125, "r": 290.1625061035156, "b": 481.7851867675781, "coord_origin": "TOPLEFT"}, "confidence": 0.9372553825378418, "cells": [{"id": 11, "text": "Figure 6-1 Timing of column masking", "bbox": {"l": 136.8, "t": 472.578, "r": 289.59567, "b": 480.90302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-1 Timing of column masking"}, {"label": "text", "id": 6, "page_no": 101, "cluster": {"id": 6, "label": "text", "bbox": {"l": 222.81260681152344, "t": 223.79876708984375, "r": 250.3378143310547, "b": 232.33582, "coord_origin": "TOPLEFT"}, "confidence": 0.6529437899589539, "cells": [{"id": 12, "text": "SELECT", "bbox": {"l": 223.54629999999997, "t": 224.41350999999997, "r": 250.22076000000004, "b": 232.33582, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT"}, {"label": "text", "id": 7, "page_no": 101, "cluster": {"id": 7, "label": "text", "bbox": {"l": 289.8625183105469, "t": 223.75645446777344, "r": 386.13547, "b": 232.33582, "coord_origin": "TOPLEFT"}, "confidence": 0.6274991631507874, "cells": [{"id": 13, "text": "CREDIT_CARD_NUMBER,", "bbox": {"l": 290.24081, "t": 224.41350999999997, "r": 386.13547, "b": 232.33582, "coord_origin": "TOPLEFT"}}]}, "text": "CREDIT_CARD_NUMBER,"}, {"label": "text", "id": 8, "page_no": 101, "cluster": {"id": 8, "label": "text", "bbox": {"l": 290.2482, "t": 235.53063999999995, "r": 389.2164, "b": 254.56989, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 14, "text": "SUM(AMOUNT) AS TOTAL", "bbox": {"l": 290.2482, "t": 235.53063999999995, "r": 389.2164, "b": 243.45294, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "TRANSACTIONS", "bbox": {"l": 290.24869, "t": 246.64757999999995, "r": 350.20563, "b": 254.56989, "coord_origin": "TOPLEFT"}}]}, "text": "SUM(AMOUNT) AS TOTAL TRANSACTIONS"}, {"label": "text", "id": 9, "page_no": 101, "cluster": {"id": 9, "label": "text", "bbox": {"l": 223.27870178222656, "t": 245.79042053222656, "r": 247.33633422851562, "b": 254.56989, "coord_origin": "TOPLEFT"}, "confidence": 0.7264513373374939, "cells": [{"id": 15, "text": "FROM", "bbox": {"l": 223.54629999999997, "t": 246.64757999999995, "r": 247.25089, "b": 254.56989, "coord_origin": "TOPLEFT"}}]}, "text": "FROM"}, {"label": "text", "id": 10, "page_no": 101, "cluster": {"id": 10, "label": "text", "bbox": {"l": 223.30404663085938, "t": 256.77313232421875, "r": 264.05712890625, "b": 265.68701, "coord_origin": "TOPLEFT"}, "confidence": 0.739473283290863, "cells": [{"id": 17, "text": "GROUP BY", "bbox": {"l": 223.54629999999997, "t": 257.76471000000004, "r": 263.57651, "b": 265.68701, "coord_origin": "TOPLEFT"}}]}, "text": "GROUP BY"}, {"label": "text", "id": 11, "page_no": 101, "cluster": {"id": 11, "label": "text", "bbox": {"l": 289.9476623535156, "t": 256.7027893066406, "r": 384.1680908203125, "b": 265.68701, "coord_origin": "TOPLEFT"}, "confidence": 0.727581799030304, "cells": [{"id": 18, "text": "CREDIT_CARD_NUMBER", "bbox": {"l": 290.2843, "t": 257.76471000000004, "r": 383.71991, "b": 265.68701, "coord_origin": "TOPLEFT"}}]}, "text": "CREDIT_CARD_NUMBER"}, {"label": "text", "id": 12, "page_no": 101, "cluster": {"id": 12, "label": "text", "bbox": {"l": 223.270263671875, "t": 268.14324951171875, "r": 262.7109680175781, "b": 276.80413999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.74038165807724, "cells": [{"id": 19, "text": "ORDER BY", "bbox": {"l": 223.54629999999997, "t": 268.88184, "r": 262.38541, "b": 276.80413999999996, "coord_origin": "TOPLEFT"}}]}, "text": "ORDER BY"}, {"label": "text", "id": 13, "page_no": 101, "cluster": {"id": 13, "label": "text", "bbox": {"l": 290.0070495605469, "t": 267.8889465332031, "r": 386.24557, "b": 277.3880920410156, "coord_origin": "TOPLEFT"}, "confidence": 0.754478394985199, "cells": [{"id": 20, "text": "CREDIT_CARD_NUMBER;", "bbox": {"l": 290.28986, "t": 268.88184, "r": 386.24557, "b": 276.80413999999996, "coord_origin": "TOPLEFT"}}]}, "text": "CREDIT_CARD_NUMBER;"}, {"label": "table", "id": 14, "page_no": 101, "cluster": {"id": 14, "label": "table", "bbox": {"l": 143.16891479492188, "t": 312.9064636230469, "r": 300.13482666015625, "b": 464.53564453125, "coord_origin": "TOPLEFT"}, "confidence": 0.938347578048706, "cells": [{"id": 21, "text": "CREDIT CARD NUMBER", "bbox": {"l": 149.4512, "t": 317.02898999999996, "r": 233.62379, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "TOTAL", "bbox": {"l": 257.74921, "t": 317.02898999999996, "r": 279.16821, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "_", "bbox": {"l": 174.2422, "t": 317.02898999999996, "r": 178.39442, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "_", "bbox": {"l": 197.80983, "t": 317.02898999999996, "r": 201.96205, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "3785 0000 0000 1234", "bbox": {"l": 148.50592, "t": 330.5637500000001, "r": 221.83939, "b": 337.69257, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "233.50", "bbox": {"l": 272.4223, "t": 330.5637500000001, "r": 295.64975, "b": 337.69257, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "3785 1111 1111 1234", "bbox": {"l": 148.50592, "t": 344.07098, "r": 221.83853, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "105.10", "bbox": {"l": 272.42145, "t": 344.07098, "r": 295.6489, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "3785 2222 2222 1234", "bbox": {"l": 148.5062, "t": 357.60629, "r": 221.84132000000002, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "300 00", "bbox": {"l": 272.40579, "t": 357.60629, "r": 295.64658, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "300.00", "bbox": {"l": 272.40579, "t": 357.60629, "r": 295.6427, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "3785 3333 3333 1234", "bbox": {"l": 148.5062, "t": 371.1413, "r": 221.85214, "b": 378.27011, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "1,775.00", "bbox": {"l": 266.12503, "t": 371.1413, "r": 295.66751, "b": 378.27011, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "5466 4444 4444 1234", "bbox": {"l": 148.5062, "t": 384.64853, "r": 221.83881000000002, "b": 391.77734, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "601.70", "bbox": {"l": 272.42175, "t": 384.64853, "r": 295.6492, "b": 391.77734, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "5466 5555 5555 1234", "bbox": {"l": 148.5062, "t": 398.18347, "r": 221.83881000000002, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "37.80", "bbox": {"l": 276.64648, "t": 398.18347, "r": 295.64832, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "5466 6666 6666 1234", "bbox": {"l": 148.5062, "t": 411.71823, "r": 221.83881000000002, "b": 418.84705, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "490.45", "bbox": {"l": 272.42175, "t": 411.71823, "r": 295.6492, "b": 418.84705, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "6011 7777 7777 1234", "bbox": {"l": 148.5062, "t": 425.2258, "r": 221.84132000000002, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "1005.00", "bbox": {"l": 268.1813, "t": 425.2258, "r": 295.64603, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "6011 8888 8888 1234", "bbox": {"l": 148.5062, "t": 438.76077, "r": 221.83881000000002, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "750.33", "bbox": {"l": 272.42175, "t": 438.76077, "r": 295.6492, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "6011 9999 9999 0001", "bbox": {"l": 148.5062, "t": 452.29553, "r": 221.83881000000002, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "10.00", "bbox": {"l": 276.64648, "t": 452.29553, "r": 295.64832, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl"], "num_rows": 11, "num_cols": 2, "table_cells": [{"bbox": {"l": 149.4512, "t": 317.02898999999996, "r": 233.62379, "b": 324.16614, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CREDIT CARD NUMBER _ _", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 257.74921, "t": 317.02898999999996, "r": 279.16821, "b": 324.16614, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "TOTAL", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 148.50592, "t": 330.5637500000001, "r": 221.83939, "b": 337.69257, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3785 0000 0000 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 272.4223, "t": 330.5637500000001, "r": 295.64975, "b": 337.69257, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "233.50", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.50592, "t": 344.07098, "r": 221.83853, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3785 1111 1111 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 272.42145, "t": 344.07098, "r": 295.6489, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "105.10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.5062, "t": 357.60629, "r": 221.84132000000002, "b": 364.73511, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3785 2222 2222 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 272.40579, "t": 357.60629, "r": 295.64658, "b": 364.73511, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "300 00 300.00", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.5062, "t": 371.1413, "r": 221.85214, "b": 378.27011, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3785 3333 3333 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 266.12503, "t": 371.1413, "r": 295.66751, "b": 378.27011, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "1,775.00", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.5062, "t": 384.64853, "r": 221.83881000000002, "b": 391.77734, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "5466 4444 4444 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 272.42175, "t": 384.64853, "r": 295.6492, "b": 391.77734, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "601.70", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.5062, "t": 398.18347, "r": 221.83881000000002, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "5466 5555 5555 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 276.64648, "t": 398.18347, "r": 295.64832, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "37.80", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.5062, "t": 411.71823, "r": 221.83881000000002, "b": 418.84705, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "5466 6666 6666 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 272.42175, "t": 411.71823, "r": 295.6492, "b": 418.84705, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "490.45", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.5062, "t": 425.2258, "r": 221.84132000000002, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "6011 7777 7777 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 268.1813, "t": 425.2258, "r": 295.64603, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "1005.00", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.5062, "t": 438.76077, "r": 221.83881000000002, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "6011 8888 8888 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 272.42175, "t": 438.76077, "r": 295.6492, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "750.33", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.5062, "t": 452.29553, "r": 221.83881000000002, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "6011 9999 9999 0001", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 276.64648, "t": 452.29553, "r": 295.64832, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "10.00", "column_header": false, "row_header": false, "row_section": false}]}, {"label": "table", "id": 15, "page_no": 101, "cluster": {"id": 15, "label": "table", "bbox": {"l": 313.3494567871094, "t": 312.5643005371094, "r": 470.7187805175781, "b": 464.93182373046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9333541393280029, "cells": [{"id": 23, "text": "CREDIT CARD NUMBER", "bbox": {"l": 318.98621, "t": 317.02898999999996, "r": 403.15881, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "TOTAL", "bbox": {"l": 427.28424, "t": 317.02898999999996, "r": 448.70325, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "_", "bbox": {"l": 343.77731, "t": 317.02898999999996, "r": 347.92953, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "_", "bbox": {"l": 367.34494, "t": 317.02898999999996, "r": 371.49716, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "**** **** **** 1234", "bbox": {"l": 318.04102, "t": 330.5637500000001, "r": 390.68494, "b": 337.69257, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "233.50", "bbox": {"l": 441.96823, "t": 330.5637500000001, "r": 465.16064, "b": 337.69257, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "**** **** **** 1234", "bbox": {"l": 318.04102, "t": 344.07098, "r": 390.68494, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "105.10", "bbox": {"l": 441.96823, "t": 344.07098, "r": 465.16064, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 357.60629, "r": 390.65433, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "300 00", "bbox": {"l": 441.94089, "t": 357.60629, "r": 465.18167, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "300.00", "bbox": {"l": 441.94089, "t": 357.60629, "r": 465.1777, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 371.1413, "r": 390.69855, "b": 378.27011, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "1,775.00", "bbox": {"l": 435.67264000000006, "t": 371.1413, "r": 465.16843000000006, "b": 378.27011, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 384.64853, "r": 390.68521, "b": 391.77734, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "601.70", "bbox": {"l": 441.96851, "t": 384.64853, "r": 465.1609199999999, "b": 391.77734, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 398.18347, "r": 390.68521, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "37.80", "bbox": {"l": 446.1933, "t": 398.18347, "r": 465.16595, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 411.71823, "r": 390.68521, "b": 418.84705, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "490.45", "bbox": {"l": 441.96851, "t": 411.71823, "r": 465.1609199999999, "b": 418.84705, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 425.22546, "r": 390.66788, "b": 432.35428, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "1005.00", "bbox": {"l": 437.7164, "t": 425.2258, "r": 465.18112, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": " 1234", "bbox": {"l": 371.76227, "t": 425.2258, "r": 390.66788, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 438.76077, "r": 390.68521, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "750.33", "bbox": {"l": 441.96851, "t": 438.76077, "r": 465.1609199999999, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "**** **** **** 0001", "bbox": {"l": 318.04129, "t": 452.29553, "r": 390.68521, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "10.00", "bbox": {"l": 446.1933, "t": 452.29553, "r": 465.16595, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl"], "num_rows": 11, "num_cols": 2, "table_cells": [{"bbox": {"l": 318.98621, "t": 317.02898999999996, "r": 403.15881, "b": 324.16614, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CREDIT CARD NUMBER _ _", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 427.28424, "t": 317.02898999999996, "r": 448.70325, "b": 324.16614, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "TOTAL", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04102, "t": 330.5637500000001, "r": 390.68494, "b": 337.69257, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 441.96823, "t": 330.5637500000001, "r": 465.16064, "b": 337.69257, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "233.50", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04102, "t": 344.07098, "r": 390.68494, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 441.96823, "t": 344.07098, "r": 465.16064, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "105.10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04129, "t": 357.60629, "r": 390.65433, "b": 364.73511, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 441.94089, "t": 357.60629, "r": 465.18167, "b": 364.73511, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "300 00 300.00", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04129, "t": 371.1413, "r": 390.69855, "b": 378.27011, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 435.67264000000006, "t": 371.1413, "r": 465.16843000000006, "b": 378.27011, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "1,775.00", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04129, "t": 384.64853, "r": 390.68521, "b": 391.77734, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 441.96851, "t": 384.64853, "r": 465.1609199999999, "b": 391.77734, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "601.70", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04129, "t": 398.18347, "r": 390.68521, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 446.1933, "t": 398.18347, "r": 465.16595, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "37.80", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04129, "t": 411.71823, "r": 390.68521, "b": 418.84705, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 441.96851, "t": 411.71823, "r": 465.1609199999999, "b": 418.84705, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "490.45", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04129, "t": 425.22546, "r": 390.66788, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 437.7164, "t": 425.2258, "r": 465.18112, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "1005.00", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04129, "t": 438.76077, "r": 390.68521, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 441.96851, "t": 438.76077, "r": 465.1609199999999, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "750.33", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04129, "t": 452.29553, "r": 390.68521, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 0001", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 446.1933, "t": 452.29553, "r": 465.16595, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "10.00", "column_header": false, "row_header": false, "row_section": false}]}, {"label": "section_header", "id": 16, "page_no": 101, "cluster": {"id": 16, "label": "section_header", "bbox": {"l": 160.457, "t": 297.8916931152344, "r": 285.01361083984375, "b": 310.3793, "coord_origin": "TOPLEFT"}, "confidence": 0.8418190479278564, "cells": [{"id": 25, "text": "Without ", "bbox": {"l": 160.457, "t": 298.77588, "r": 207.85185, "b": 310.3793, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "RCAC Masking", "bbox": {"l": 207.84406, "t": 298.76291, "r": 284.9068, "b": 309.87311, "coord_origin": "TOPLEFT"}}]}, "text": "Without RCAC Masking"}, {"label": "section_header", "id": 17, "page_no": 101, "cluster": {"id": 17, "label": "section_header", "bbox": {"l": 341.02625, "t": 297.97357177734375, "r": 447.76593017578125, "b": 310.3793, "coord_origin": "TOPLEFT"}, "confidence": 0.8612884283065796, "cells": [{"id": 27, "text": "With ", "bbox": {"l": 341.02625, "t": 298.77588, "r": 370.2554, "b": 310.3793, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "RCAC Masking", "bbox": {"l": 370.23593, "t": 298.76291, "r": 447.29868000000005, "b": 309.87311, "coord_origin": "TOPLEFT"}}]}, "text": "With RCAC Masking"}], "body": [{"label": "section_header", "id": 2, "page_no": 101, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.63821411132812, "t": 73.412353515625, "r": 298.45441, "b": 89.93876647949219, "coord_origin": "TOPLEFT"}, "confidence": 0.9695685505867004, "cells": [{"id": 2, "text": "6.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.453255, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Timing of column masking", "bbox": {"l": 91.983902, "t": 74.34069999999997, "r": 298.45441, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, "text": "6.1 Timing of column masking"}, {"label": "text", "id": 3, "page_no": 101, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.9453887939453, "t": 105.85498046875, "r": 547.24963, "b": 164.5647430419922, "coord_origin": "TOPLEFT"}, "confidence": 0.9870750308036804, "cells": [{"id": 4, "text": "An important design and implementation consideration is the fact that RCAC column masking ", "bbox": {"l": 136.8, "t": 106.6087, "r": 547.24963, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "occurs after all of the query processing is complete, which means that the query results are ", "bbox": {"l": 136.8, "t": 118.60852, "r": 542.35236, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "not at all based on the masked values. Any local selection, joining, grouping, or ordering ", "bbox": {"l": 136.8, "t": 130.60834, "r": 527.76294, "b": 139.82135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "operations are based on the unmasked column values. Only the final result set is the target of ", "bbox": {"l": 136.8, "t": 142.60815000000002, "r": 547.23962, "b": 151.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "the masking. ", "bbox": {"l": 136.8, "t": 154.60797000000002, "r": 196.23331, "b": 163.82097999999996, "coord_origin": "TOPLEFT"}}]}, "text": "An important design and implementation consideration is the fact that RCAC column masking occurs after all of the query processing is complete, which means that the query results are not at all based on the masked values. Any local selection, joining, grouping, or ordering operations are based on the unmasked column values. Only the final result set is the target of the masking."}, {"label": "text", "id": 4, "page_no": 101, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.015625, "t": 176.0285186767578, "r": 547.23254, "b": 198.28158569335938, "coord_origin": "TOPLEFT"}, "confidence": 0.9749656319618225, "cells": [{"id": 9, "text": "An example of this situation is shown in Figure 6-1. However, note that aggregate functions (a ", "bbox": {"l": 136.8, "t": 176.62756000000002, "r": 547.23254, "b": 185.84058000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "form of grouping) are based on masked values.", "bbox": {"l": 136.8, "t": 188.62738000000002, "r": 345.5368, "b": 197.84038999999996, "coord_origin": "TOPLEFT"}}]}, "text": "An example of this situation is shown in Figure 6-1. However, note that aggregate functions (a form of grouping) are based on masked values."}, {"label": "caption", "id": 5, "page_no": 101, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.17198181152344, "t": 472.1231689453125, "r": 290.1625061035156, "b": 481.7851867675781, "coord_origin": "TOPLEFT"}, "confidence": 0.9372553825378418, "cells": [{"id": 11, "text": "Figure 6-1 Timing of column masking", "bbox": {"l": 136.8, "t": 472.578, "r": 289.59567, "b": 480.90302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-1 Timing of column masking"}, {"label": "text", "id": 6, "page_no": 101, "cluster": {"id": 6, "label": "text", "bbox": {"l": 222.81260681152344, "t": 223.79876708984375, "r": 250.3378143310547, "b": 232.33582, "coord_origin": "TOPLEFT"}, "confidence": 0.6529437899589539, "cells": [{"id": 12, "text": "SELECT", "bbox": {"l": 223.54629999999997, "t": 224.41350999999997, "r": 250.22076000000004, "b": 232.33582, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT"}, {"label": "text", "id": 7, "page_no": 101, "cluster": {"id": 7, "label": "text", "bbox": {"l": 289.8625183105469, "t": 223.75645446777344, "r": 386.13547, "b": 232.33582, "coord_origin": "TOPLEFT"}, "confidence": 0.6274991631507874, "cells": [{"id": 13, "text": "CREDIT_CARD_NUMBER,", "bbox": {"l": 290.24081, "t": 224.41350999999997, "r": 386.13547, "b": 232.33582, "coord_origin": "TOPLEFT"}}]}, "text": "CREDIT_CARD_NUMBER,"}, {"label": "text", "id": 8, "page_no": 101, "cluster": {"id": 8, "label": "text", "bbox": {"l": 290.2482, "t": 235.53063999999995, "r": 389.2164, "b": 254.56989, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 14, "text": "SUM(AMOUNT) AS TOTAL", "bbox": {"l": 290.2482, "t": 235.53063999999995, "r": 389.2164, "b": 243.45294, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "TRANSACTIONS", "bbox": {"l": 290.24869, "t": 246.64757999999995, "r": 350.20563, "b": 254.56989, "coord_origin": "TOPLEFT"}}]}, "text": "SUM(AMOUNT) AS TOTAL TRANSACTIONS"}, {"label": "text", "id": 9, "page_no": 101, "cluster": {"id": 9, "label": "text", "bbox": {"l": 223.27870178222656, "t": 245.79042053222656, "r": 247.33633422851562, "b": 254.56989, "coord_origin": "TOPLEFT"}, "confidence": 0.7264513373374939, "cells": [{"id": 15, "text": "FROM", "bbox": {"l": 223.54629999999997, "t": 246.64757999999995, "r": 247.25089, "b": 254.56989, "coord_origin": "TOPLEFT"}}]}, "text": "FROM"}, {"label": "text", "id": 10, "page_no": 101, "cluster": {"id": 10, "label": "text", "bbox": {"l": 223.30404663085938, "t": 256.77313232421875, "r": 264.05712890625, "b": 265.68701, "coord_origin": "TOPLEFT"}, "confidence": 0.739473283290863, "cells": [{"id": 17, "text": "GROUP BY", "bbox": {"l": 223.54629999999997, "t": 257.76471000000004, "r": 263.57651, "b": 265.68701, "coord_origin": "TOPLEFT"}}]}, "text": "GROUP BY"}, {"label": "text", "id": 11, "page_no": 101, "cluster": {"id": 11, "label": "text", "bbox": {"l": 289.9476623535156, "t": 256.7027893066406, "r": 384.1680908203125, "b": 265.68701, "coord_origin": "TOPLEFT"}, "confidence": 0.727581799030304, "cells": [{"id": 18, "text": "CREDIT_CARD_NUMBER", "bbox": {"l": 290.2843, "t": 257.76471000000004, "r": 383.71991, "b": 265.68701, "coord_origin": "TOPLEFT"}}]}, "text": "CREDIT_CARD_NUMBER"}, {"label": "text", "id": 12, "page_no": 101, "cluster": {"id": 12, "label": "text", "bbox": {"l": 223.270263671875, "t": 268.14324951171875, "r": 262.7109680175781, "b": 276.80413999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.74038165807724, "cells": [{"id": 19, "text": "ORDER BY", "bbox": {"l": 223.54629999999997, "t": 268.88184, "r": 262.38541, "b": 276.80413999999996, "coord_origin": "TOPLEFT"}}]}, "text": "ORDER BY"}, {"label": "text", "id": 13, "page_no": 101, "cluster": {"id": 13, "label": "text", "bbox": {"l": 290.0070495605469, "t": 267.8889465332031, "r": 386.24557, "b": 277.3880920410156, "coord_origin": "TOPLEFT"}, "confidence": 0.754478394985199, "cells": [{"id": 20, "text": "CREDIT_CARD_NUMBER;", "bbox": {"l": 290.28986, "t": 268.88184, "r": 386.24557, "b": 276.80413999999996, "coord_origin": "TOPLEFT"}}]}, "text": "CREDIT_CARD_NUMBER;"}, {"label": "table", "id": 14, "page_no": 101, "cluster": {"id": 14, "label": "table", "bbox": {"l": 143.16891479492188, "t": 312.9064636230469, "r": 300.13482666015625, "b": 464.53564453125, "coord_origin": "TOPLEFT"}, "confidence": 0.938347578048706, "cells": [{"id": 21, "text": "CREDIT CARD NUMBER", "bbox": {"l": 149.4512, "t": 317.02898999999996, "r": 233.62379, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "TOTAL", "bbox": {"l": 257.74921, "t": 317.02898999999996, "r": 279.16821, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "_", "bbox": {"l": 174.2422, "t": 317.02898999999996, "r": 178.39442, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "_", "bbox": {"l": 197.80983, "t": 317.02898999999996, "r": 201.96205, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "3785 0000 0000 1234", "bbox": {"l": 148.50592, "t": 330.5637500000001, "r": 221.83939, "b": 337.69257, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "233.50", "bbox": {"l": 272.4223, "t": 330.5637500000001, "r": 295.64975, "b": 337.69257, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "3785 1111 1111 1234", "bbox": {"l": 148.50592, "t": 344.07098, "r": 221.83853, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "105.10", "bbox": {"l": 272.42145, "t": 344.07098, "r": 295.6489, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "3785 2222 2222 1234", "bbox": {"l": 148.5062, "t": 357.60629, "r": 221.84132000000002, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "300 00", "bbox": {"l": 272.40579, "t": 357.60629, "r": 295.64658, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "300.00", "bbox": {"l": 272.40579, "t": 357.60629, "r": 295.6427, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "3785 3333 3333 1234", "bbox": {"l": 148.5062, "t": 371.1413, "r": 221.85214, "b": 378.27011, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "1,775.00", "bbox": {"l": 266.12503, "t": 371.1413, "r": 295.66751, "b": 378.27011, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "5466 4444 4444 1234", "bbox": {"l": 148.5062, "t": 384.64853, "r": 221.83881000000002, "b": 391.77734, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "601.70", "bbox": {"l": 272.42175, "t": 384.64853, "r": 295.6492, "b": 391.77734, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "5466 5555 5555 1234", "bbox": {"l": 148.5062, "t": 398.18347, "r": 221.83881000000002, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "37.80", "bbox": {"l": 276.64648, "t": 398.18347, "r": 295.64832, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "5466 6666 6666 1234", "bbox": {"l": 148.5062, "t": 411.71823, "r": 221.83881000000002, "b": 418.84705, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "490.45", "bbox": {"l": 272.42175, "t": 411.71823, "r": 295.6492, "b": 418.84705, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "6011 7777 7777 1234", "bbox": {"l": 148.5062, "t": 425.2258, "r": 221.84132000000002, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "1005.00", "bbox": {"l": 268.1813, "t": 425.2258, "r": 295.64603, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "6011 8888 8888 1234", "bbox": {"l": 148.5062, "t": 438.76077, "r": 221.83881000000002, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "750.33", "bbox": {"l": 272.42175, "t": 438.76077, "r": 295.6492, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "6011 9999 9999 0001", "bbox": {"l": 148.5062, "t": 452.29553, "r": 221.83881000000002, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "10.00", "bbox": {"l": 276.64648, "t": 452.29553, "r": 295.64832, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl"], "num_rows": 11, "num_cols": 2, "table_cells": [{"bbox": {"l": 149.4512, "t": 317.02898999999996, "r": 233.62379, "b": 324.16614, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CREDIT CARD NUMBER _ _", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 257.74921, "t": 317.02898999999996, "r": 279.16821, "b": 324.16614, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "TOTAL", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 148.50592, "t": 330.5637500000001, "r": 221.83939, "b": 337.69257, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3785 0000 0000 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 272.4223, "t": 330.5637500000001, "r": 295.64975, "b": 337.69257, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "233.50", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.50592, "t": 344.07098, "r": 221.83853, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3785 1111 1111 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 272.42145, "t": 344.07098, "r": 295.6489, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "105.10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.5062, "t": 357.60629, "r": 221.84132000000002, "b": 364.73511, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3785 2222 2222 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 272.40579, "t": 357.60629, "r": 295.64658, "b": 364.73511, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "300 00 300.00", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.5062, "t": 371.1413, "r": 221.85214, "b": 378.27011, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3785 3333 3333 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 266.12503, "t": 371.1413, "r": 295.66751, "b": 378.27011, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "1,775.00", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.5062, "t": 384.64853, "r": 221.83881000000002, "b": 391.77734, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "5466 4444 4444 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 272.42175, "t": 384.64853, "r": 295.6492, "b": 391.77734, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "601.70", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.5062, "t": 398.18347, "r": 221.83881000000002, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "5466 5555 5555 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 276.64648, "t": 398.18347, "r": 295.64832, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "37.80", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.5062, "t": 411.71823, "r": 221.83881000000002, "b": 418.84705, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "5466 6666 6666 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 272.42175, "t": 411.71823, "r": 295.6492, "b": 418.84705, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "490.45", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.5062, "t": 425.2258, "r": 221.84132000000002, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "6011 7777 7777 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 268.1813, "t": 425.2258, "r": 295.64603, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "1005.00", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.5062, "t": 438.76077, "r": 221.83881000000002, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "6011 8888 8888 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 272.42175, "t": 438.76077, "r": 295.6492, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "750.33", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 148.5062, "t": 452.29553, "r": 221.83881000000002, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "6011 9999 9999 0001", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 276.64648, "t": 452.29553, "r": 295.64832, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "10.00", "column_header": false, "row_header": false, "row_section": false}]}, {"label": "table", "id": 15, "page_no": 101, "cluster": {"id": 15, "label": "table", "bbox": {"l": 313.3494567871094, "t": 312.5643005371094, "r": 470.7187805175781, "b": 464.93182373046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9333541393280029, "cells": [{"id": 23, "text": "CREDIT CARD NUMBER", "bbox": {"l": 318.98621, "t": 317.02898999999996, "r": 403.15881, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "TOTAL", "bbox": {"l": 427.28424, "t": 317.02898999999996, "r": 448.70325, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "_", "bbox": {"l": 343.77731, "t": 317.02898999999996, "r": 347.92953, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "_", "bbox": {"l": 367.34494, "t": 317.02898999999996, "r": 371.49716, "b": 324.16614, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "**** **** **** 1234", "bbox": {"l": 318.04102, "t": 330.5637500000001, "r": 390.68494, "b": 337.69257, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "233.50", "bbox": {"l": 441.96823, "t": 330.5637500000001, "r": 465.16064, "b": 337.69257, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "**** **** **** 1234", "bbox": {"l": 318.04102, "t": 344.07098, "r": 390.68494, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "105.10", "bbox": {"l": 441.96823, "t": 344.07098, "r": 465.16064, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 357.60629, "r": 390.65433, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "300 00", "bbox": {"l": 441.94089, "t": 357.60629, "r": 465.18167, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "300.00", "bbox": {"l": 441.94089, "t": 357.60629, "r": 465.1777, "b": 364.73511, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 371.1413, "r": 390.69855, "b": 378.27011, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "1,775.00", "bbox": {"l": 435.67264000000006, "t": 371.1413, "r": 465.16843000000006, "b": 378.27011, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 384.64853, "r": 390.68521, "b": 391.77734, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "601.70", "bbox": {"l": 441.96851, "t": 384.64853, "r": 465.1609199999999, "b": 391.77734, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 398.18347, "r": 390.68521, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "37.80", "bbox": {"l": 446.1933, "t": 398.18347, "r": 465.16595, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 411.71823, "r": 390.68521, "b": 418.84705, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "490.45", "bbox": {"l": 441.96851, "t": 411.71823, "r": 465.1609199999999, "b": 418.84705, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 425.22546, "r": 390.66788, "b": 432.35428, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "1005.00", "bbox": {"l": 437.7164, "t": 425.2258, "r": 465.18112, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": " 1234", "bbox": {"l": 371.76227, "t": 425.2258, "r": 390.66788, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "**** **** **** 1234", "bbox": {"l": 318.04129, "t": 438.76077, "r": 390.68521, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "750.33", "bbox": {"l": 441.96851, "t": 438.76077, "r": 465.1609199999999, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "**** **** **** 0001", "bbox": {"l": 318.04129, "t": 452.29553, "r": 390.68521, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "10.00", "bbox": {"l": 446.1933, "t": 452.29553, "r": 465.16595, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl"], "num_rows": 11, "num_cols": 2, "table_cells": [{"bbox": {"l": 318.98621, "t": 317.02898999999996, "r": 403.15881, "b": 324.16614, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CREDIT CARD NUMBER _ _", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 427.28424, "t": 317.02898999999996, "r": 448.70325, "b": 324.16614, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "TOTAL", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04102, "t": 330.5637500000001, "r": 390.68494, "b": 337.69257, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 441.96823, "t": 330.5637500000001, "r": 465.16064, "b": 337.69257, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "233.50", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04102, "t": 344.07098, "r": 390.68494, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 441.96823, "t": 344.07098, "r": 465.16064, "b": 351.19980000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "105.10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04129, "t": 357.60629, "r": 390.65433, "b": 364.73511, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 441.94089, "t": 357.60629, "r": 465.18167, "b": 364.73511, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "300 00 300.00", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04129, "t": 371.1413, "r": 390.69855, "b": 378.27011, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 435.67264000000006, "t": 371.1413, "r": 465.16843000000006, "b": 378.27011, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "1,775.00", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04129, "t": 384.64853, "r": 390.68521, "b": 391.77734, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 441.96851, "t": 384.64853, "r": 465.1609199999999, "b": 391.77734, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "601.70", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04129, "t": 398.18347, "r": 390.68521, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 446.1933, "t": 398.18347, "r": 465.16595, "b": 405.3122900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "37.80", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04129, "t": 411.71823, "r": 390.68521, "b": 418.84705, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 441.96851, "t": 411.71823, "r": 465.1609199999999, "b": 418.84705, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "490.45", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04129, "t": 425.22546, "r": 390.66788, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 437.7164, "t": 425.2258, "r": 465.18112, "b": 432.35461000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "1005.00", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04129, "t": 438.76077, "r": 390.68521, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 1234", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 441.96851, "t": 438.76077, "r": 465.1609199999999, "b": 445.88958999999994, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "750.33", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 318.04129, "t": 452.29553, "r": 390.68521, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "**** **** **** 0001", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 446.1933, "t": 452.29553, "r": 465.16595, "b": 459.42435000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "10.00", "column_header": false, "row_header": false, "row_section": false}]}, {"label": "section_header", "id": 16, "page_no": 101, "cluster": {"id": 16, "label": "section_header", "bbox": {"l": 160.457, "t": 297.8916931152344, "r": 285.01361083984375, "b": 310.3793, "coord_origin": "TOPLEFT"}, "confidence": 0.8418190479278564, "cells": [{"id": 25, "text": "Without ", "bbox": {"l": 160.457, "t": 298.77588, "r": 207.85185, "b": 310.3793, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "RCAC Masking", "bbox": {"l": 207.84406, "t": 298.76291, "r": 284.9068, "b": 309.87311, "coord_origin": "TOPLEFT"}}]}, "text": "Without RCAC Masking"}, {"label": "section_header", "id": 17, "page_no": 101, "cluster": {"id": 17, "label": "section_header", "bbox": {"l": 341.02625, "t": 297.97357177734375, "r": 447.76593017578125, "b": 310.3793, "coord_origin": "TOPLEFT"}, "confidence": 0.8612884283065796, "cells": [{"id": 27, "text": "With ", "bbox": {"l": 341.02625, "t": 298.77588, "r": 370.2554, "b": 310.3793, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "RCAC Masking", "bbox": {"l": 370.23593, "t": 298.76291, "r": 447.29868000000005, "b": 309.87311, "coord_origin": "TOPLEFT"}}]}, "text": "With RCAC Masking"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 101, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.28016662597656, "t": 754.42529296875, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9138955473899841, "cells": [{"id": 0, "text": "86 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "86"}, {"label": "page_footer", "id": 1, "page_no": 101, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.40719604492188, "t": 754.6533813476562, "r": 334.42142, "b": 763.9609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9498723745346069, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 102, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "87", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Conversely, field procedure masking causes the column values to be changed (that is, ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 518.83441, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "masked) and stored in the row. When the table is queried and the masked columns are ", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 522.90308, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "referenced, the masked data is used for any local selection, joining, grouping, or ordering ", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 531.92255, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "operations. This situation can have a profound effect on the query\u2019s final result set and not ", "bbox": {"l": 136.79959, "t": 107.50847999999996, "r": 536.70471, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "just on the column values that are returned. Field procedure masking occurs when the ", "bbox": {"l": 136.79959, "t": 119.50829999999996, "r": 519.66205, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "column values are read from disk before any query processing. RCAC masking occurs when ", "bbox": {"l": 136.79959, "t": 131.50811999999996, "r": 547.14746, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "the column values are returned to the application after query processing. This difference in ", "bbox": {"l": 136.79959, "t": 143.50793, "r": 538.93219, "b": 152.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "behavior is shown in Figure 6-2.", "bbox": {"l": 136.79959, "t": 155.50775, "r": 278.22067, "b": 164.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Figure 6-2 Masking differences between Fieldproc and RCAC", "bbox": {"l": 136.8, "t": 532.9379, "r": 385.92093, "b": 541.26291, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Note:", "bbox": {"l": 142.8, "t": 183.52868999999998, "r": 168.33246, "b": 192.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": " Column masks can influence an SQL ", "bbox": {"l": 168.36035, "t": 183.52868999999998, "r": 338.26401, "b": 192.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "INSERT", "bbox": {"l": 338.3407, "t": 183.67809999999997, "r": 368.28046, "b": 192.50269000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " or ", "bbox": {"l": 368.28046, "t": 183.52868999999998, "r": 382.79913, "b": 192.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "UPDATE", "bbox": {"l": 382.74039, "t": 183.67809999999997, "r": 412.68015, "b": 192.50269000000003, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ". For example, you cannot ", "bbox": {"l": 412.7399, "t": 183.52868999999998, "r": 530.08759, "b": 192.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "insert or update a table with column access control activated with masked data generated ", "bbox": {"l": 142.79999, "t": 195.5285, "r": 540.74689, "b": 204.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "from an expression within the same statement that is based on a column with a column ", "bbox": {"l": 142.79999, "t": 207.52832, "r": 529.61914, "b": 216.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "mask.", "bbox": {"l": 142.79999, "t": 219.52814, "r": 169.49278, "b": 228.74114999999995, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "RCAC", "bbox": {"l": 342.6669, "t": 353.21677, "r": 363.56644, "b": 361.33936000000006, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "SQE S l", "bbox": {"l": 196.25211, "t": 403.55573, "r": 232.60068, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "ti", "bbox": {"l": 242.64763, "t": 403.55573, "r": 247.37315, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "P", "bbox": {"l": 260.52017, "t": 403.55573, "r": 266.83984, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "i", "bbox": {"l": 294.80676, "t": 403.55573, "r": 296.90384, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Column mask", "bbox": {"l": 347.00021, "t": 364.60345, "r": 399.17926, "b": 372.71655000000004, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "processing", "bbox": {"l": 349.15137, "t": 375.99026, "r": 390.10114, "b": 384.10336, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "SQE Selecti", "bbox": {"l": 196.25211, "t": 403.55573, "r": 247.37483, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "on", "bbox": {"l": 247.3976, "t": 403.55573, "r": 257.95886, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Processing", "bbox": {"l": 260.52399, "t": 403.55573, "r": 307.49136, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "r3vS#45zt!J9*m$p6", "bbox": {"l": 212.0354, "t": 475.92493, "r": 294.86868, "b": 484.38913, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "FieldProc", "bbox": {"l": 336.34091, "t": 451.58566, "r": 372.53864, "b": 459.70825, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Decode and mask", "bbox": {"l": 338.87164, "t": 462.97247, "r": 407.23135, "b": 471.08557, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "processing", "bbox": {"l": 338.4921, "t": 474.35928, "r": 379.44186, "b": 482.47238, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 376.0430603027344, "t": 754.8911743164062, "r": 523.62878, "b": 764.1041870117188, "coord_origin": "TOPLEFT"}, "confidence": 0.951887309551239, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.6262817382812, "t": 754.2442016601562, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9136953949928284, "cells": [{"id": 1, "text": "87", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.76144409179688, "t": 70.67374420166016, "r": 547.14746, "b": 164.8749542236328, "coord_origin": "TOPLEFT"}, "confidence": 0.9858981370925903, "cells": [{"id": 2, "text": "Conversely, field procedure masking causes the column values to be changed (that is, ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 518.83441, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "masked) and stored in the row. When the table is queried and the masked columns are ", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 522.90308, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "referenced, the masked data is used for any local selection, joining, grouping, or ordering ", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 531.92255, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "operations. This situation can have a profound effect on the query\u2019s final result set and not ", "bbox": {"l": 136.79959, "t": 107.50847999999996, "r": 536.70471, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "just on the column values that are returned. Field procedure masking occurs when the ", "bbox": {"l": 136.79959, "t": 119.50829999999996, "r": 519.66205, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "column values are read from disk before any query processing. RCAC masking occurs when ", "bbox": {"l": 136.79959, "t": 131.50811999999996, "r": 547.14746, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "the column values are returned to the application after query processing. This difference in ", "bbox": {"l": 136.79959, "t": 143.50793, "r": 538.93219, "b": 152.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "behavior is shown in Figure 6-2.", "bbox": {"l": 136.79959, "t": 155.50775, "r": 278.22067, "b": 164.72076000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.22874450683594, "t": 531.9801025390625, "r": 386.6689758300781, "b": 541.701416015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9406759738922119, "cells": [{"id": 10, "text": "Figure 6-2 Masking differences between Fieldproc and RCAC", "bbox": {"l": 136.8, "t": 532.9379, "r": 385.92093, "b": 541.26291, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 142.0433349609375, "t": 182.4264373779297, "r": 540.74689, "b": 228.74114999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9510505199432373, "cells": [{"id": 11, "text": "Note:", "bbox": {"l": 142.8, "t": 183.52868999999998, "r": 168.33246, "b": 192.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": " Column masks can influence an SQL ", "bbox": {"l": 168.36035, "t": 183.52868999999998, "r": 338.26401, "b": 192.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "INSERT", "bbox": {"l": 338.3407, "t": 183.67809999999997, "r": 368.28046, "b": 192.50269000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " or ", "bbox": {"l": 368.28046, "t": 183.52868999999998, "r": 382.79913, "b": 192.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "UPDATE", "bbox": {"l": 382.74039, "t": 183.67809999999997, "r": 412.68015, "b": 192.50269000000003, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ". For example, you cannot ", "bbox": {"l": 412.7399, "t": 183.52868999999998, "r": 530.08759, "b": 192.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "insert or update a table with column access control activated with masked data generated ", "bbox": {"l": 142.79999, "t": 195.5285, "r": 540.74689, "b": 204.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "from an expression within the same statement that is based on a column with a column ", "bbox": {"l": 142.79999, "t": 207.52832, "r": 529.61914, "b": 216.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "mask.", "bbox": {"l": 142.79999, "t": 219.52814, "r": 169.49278, "b": 228.74114999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "picture", "bbox": {"l": 136.07940673828125, "t": 255.5457000732422, "r": 412.541015625, "b": 529.3939819335938, "coord_origin": "TOPLEFT"}, "confidence": 0.984312891960144, "cells": [{"id": 20, "text": "RCAC", "bbox": {"l": 342.6669, "t": 353.21677, "r": 363.56644, "b": 361.33936000000006, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "SQE S l", "bbox": {"l": 196.25211, "t": 403.55573, "r": 232.60068, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "ti", "bbox": {"l": 242.64763, "t": 403.55573, "r": 247.37315, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "P", "bbox": {"l": 260.52017, "t": 403.55573, "r": 266.83984, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "i", "bbox": {"l": 294.80676, "t": 403.55573, "r": 296.90384, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Column mask", "bbox": {"l": 347.00021, "t": 364.60345, "r": 399.17926, "b": 372.71655000000004, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "processing", "bbox": {"l": 349.15137, "t": 375.99026, "r": 390.10114, "b": 384.10336, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "SQE Selecti", "bbox": {"l": 196.25211, "t": 403.55573, "r": 247.37483, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "on", "bbox": {"l": 247.3976, "t": 403.55573, "r": 257.95886, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Processing", "bbox": {"l": 260.52399, "t": 403.55573, "r": 307.49136, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "r3vS#45zt!J9*m$p6", "bbox": {"l": 212.0354, "t": 475.92493, "r": 294.86868, "b": 484.38913, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "FieldProc", "bbox": {"l": 336.34091, "t": 451.58566, "r": 372.53864, "b": 459.70825, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Decode and mask", "bbox": {"l": 338.87164, "t": 462.97247, "r": 407.23135, "b": 471.08557, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "processing", "bbox": {"l": 338.4921, "t": 474.35928, "r": 379.44186, "b": 482.47238, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 102, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 376.0430603027344, "t": 754.8911743164062, "r": 523.62878, "b": 764.1041870117188, "coord_origin": "TOPLEFT"}, "confidence": 0.951887309551239, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 102, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6262817382812, "t": 754.2442016601562, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9136953949928284, "cells": [{"id": 1, "text": "87", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "87"}, {"label": "text", "id": 2, "page_no": 102, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.76144409179688, "t": 70.67374420166016, "r": 547.14746, "b": 164.8749542236328, "coord_origin": "TOPLEFT"}, "confidence": 0.9858981370925903, "cells": [{"id": 2, "text": "Conversely, field procedure masking causes the column values to be changed (that is, ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 518.83441, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "masked) and stored in the row. When the table is queried and the masked columns are ", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 522.90308, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "referenced, the masked data is used for any local selection, joining, grouping, or ordering ", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 531.92255, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "operations. This situation can have a profound effect on the query\u2019s final result set and not ", "bbox": {"l": 136.79959, "t": 107.50847999999996, "r": 536.70471, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "just on the column values that are returned. Field procedure masking occurs when the ", "bbox": {"l": 136.79959, "t": 119.50829999999996, "r": 519.66205, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "column values are read from disk before any query processing. RCAC masking occurs when ", "bbox": {"l": 136.79959, "t": 131.50811999999996, "r": 547.14746, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "the column values are returned to the application after query processing. This difference in ", "bbox": {"l": 136.79959, "t": 143.50793, "r": 538.93219, "b": 152.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "behavior is shown in Figure 6-2.", "bbox": {"l": 136.79959, "t": 155.50775, "r": 278.22067, "b": 164.72076000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Conversely, field procedure masking causes the column values to be changed (that is, masked) and stored in the row. When the table is queried and the masked columns are referenced, the masked data is used for any local selection, joining, grouping, or ordering operations. This situation can have a profound effect on the query\u2019s final result set and not just on the column values that are returned. Field procedure masking occurs when the column values are read from disk before any query processing. RCAC masking occurs when the column values are returned to the application after query processing. This difference in behavior is shown in Figure 6-2."}, {"label": "caption", "id": 3, "page_no": 102, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.22874450683594, "t": 531.9801025390625, "r": 386.6689758300781, "b": 541.701416015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9406759738922119, "cells": [{"id": 10, "text": "Figure 6-2 Masking differences between Fieldproc and RCAC", "bbox": {"l": 136.8, "t": 532.9379, "r": 385.92093, "b": 541.26291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-2 Masking differences between Fieldproc and RCAC"}, {"label": "text", "id": 4, "page_no": 102, "cluster": {"id": 4, "label": "text", "bbox": {"l": 142.0433349609375, "t": 182.4264373779297, "r": 540.74689, "b": 228.74114999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9510505199432373, "cells": [{"id": 11, "text": "Note:", "bbox": {"l": 142.8, "t": 183.52868999999998, "r": 168.33246, "b": 192.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": " Column masks can influence an SQL ", "bbox": {"l": 168.36035, "t": 183.52868999999998, "r": 338.26401, "b": 192.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "INSERT", "bbox": {"l": 338.3407, "t": 183.67809999999997, "r": 368.28046, "b": 192.50269000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " or ", "bbox": {"l": 368.28046, "t": 183.52868999999998, "r": 382.79913, "b": 192.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "UPDATE", "bbox": {"l": 382.74039, "t": 183.67809999999997, "r": 412.68015, "b": 192.50269000000003, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ". For example, you cannot ", "bbox": {"l": 412.7399, "t": 183.52868999999998, "r": 530.08759, "b": 192.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "insert or update a table with column access control activated with masked data generated ", "bbox": {"l": 142.79999, "t": 195.5285, "r": 540.74689, "b": 204.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "from an expression within the same statement that is based on a column with a column ", "bbox": {"l": 142.79999, "t": 207.52832, "r": 529.61914, "b": 216.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "mask.", "bbox": {"l": 142.79999, "t": 219.52814, "r": 169.49278, "b": 228.74114999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Note: Column masks can influence an SQL INSERT or UPDATE . For example, you cannot insert or update a table with column access control activated with masked data generated from an expression within the same statement that is based on a column with a column mask."}, {"label": "picture", "id": 5, "page_no": 102, "cluster": {"id": 5, "label": "picture", "bbox": {"l": 136.07940673828125, "t": 255.5457000732422, "r": 412.541015625, "b": 529.3939819335938, "coord_origin": "TOPLEFT"}, "confidence": 0.984312891960144, "cells": [{"id": 20, "text": "RCAC", "bbox": {"l": 342.6669, "t": 353.21677, "r": 363.56644, "b": 361.33936000000006, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "SQE S l", "bbox": {"l": 196.25211, "t": 403.55573, "r": 232.60068, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "ti", "bbox": {"l": 242.64763, "t": 403.55573, "r": 247.37315, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "P", "bbox": {"l": 260.52017, "t": 403.55573, "r": 266.83984, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "i", "bbox": {"l": 294.80676, "t": 403.55573, "r": 296.90384, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Column mask", "bbox": {"l": 347.00021, "t": 364.60345, "r": 399.17926, "b": 372.71655000000004, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "processing", "bbox": {"l": 349.15137, "t": 375.99026, "r": 390.10114, "b": 384.10336, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "SQE Selecti", "bbox": {"l": 196.25211, "t": 403.55573, "r": 247.37483, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "on", "bbox": {"l": 247.3976, "t": 403.55573, "r": 257.95886, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Processing", "bbox": {"l": 260.52399, "t": 403.55573, "r": 307.49136, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "r3vS#45zt!J9*m$p6", "bbox": {"l": 212.0354, "t": 475.92493, "r": 294.86868, "b": 484.38913, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "FieldProc", "bbox": {"l": 336.34091, "t": 451.58566, "r": 372.53864, "b": 459.70825, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Decode and mask", "bbox": {"l": 338.87164, "t": 462.97247, "r": 407.23135, "b": 471.08557, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "processing", "bbox": {"l": 338.4921, "t": 474.35928, "r": 379.44186, "b": 482.47238, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 102, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.76144409179688, "t": 70.67374420166016, "r": 547.14746, "b": 164.8749542236328, "coord_origin": "TOPLEFT"}, "confidence": 0.9858981370925903, "cells": [{"id": 2, "text": "Conversely, field procedure masking causes the column values to be changed (that is, ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 518.83441, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "masked) and stored in the row. When the table is queried and the masked columns are ", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 522.90308, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "referenced, the masked data is used for any local selection, joining, grouping, or ordering ", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 531.92255, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "operations. This situation can have a profound effect on the query\u2019s final result set and not ", "bbox": {"l": 136.79959, "t": 107.50847999999996, "r": 536.70471, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "just on the column values that are returned. Field procedure masking occurs when the ", "bbox": {"l": 136.79959, "t": 119.50829999999996, "r": 519.66205, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "column values are read from disk before any query processing. RCAC masking occurs when ", "bbox": {"l": 136.79959, "t": 131.50811999999996, "r": 547.14746, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "the column values are returned to the application after query processing. This difference in ", "bbox": {"l": 136.79959, "t": 143.50793, "r": 538.93219, "b": 152.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "behavior is shown in Figure 6-2.", "bbox": {"l": 136.79959, "t": 155.50775, "r": 278.22067, "b": 164.72076000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Conversely, field procedure masking causes the column values to be changed (that is, masked) and stored in the row. When the table is queried and the masked columns are referenced, the masked data is used for any local selection, joining, grouping, or ordering operations. This situation can have a profound effect on the query\u2019s final result set and not just on the column values that are returned. Field procedure masking occurs when the column values are read from disk before any query processing. RCAC masking occurs when the column values are returned to the application after query processing. This difference in behavior is shown in Figure 6-2."}, {"label": "caption", "id": 3, "page_no": 102, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.22874450683594, "t": 531.9801025390625, "r": 386.6689758300781, "b": 541.701416015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9406759738922119, "cells": [{"id": 10, "text": "Figure 6-2 Masking differences between Fieldproc and RCAC", "bbox": {"l": 136.8, "t": 532.9379, "r": 385.92093, "b": 541.26291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-2 Masking differences between Fieldproc and RCAC"}, {"label": "text", "id": 4, "page_no": 102, "cluster": {"id": 4, "label": "text", "bbox": {"l": 142.0433349609375, "t": 182.4264373779297, "r": 540.74689, "b": 228.74114999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9510505199432373, "cells": [{"id": 11, "text": "Note:", "bbox": {"l": 142.8, "t": 183.52868999999998, "r": 168.33246, "b": 192.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": " Column masks can influence an SQL ", "bbox": {"l": 168.36035, "t": 183.52868999999998, "r": 338.26401, "b": 192.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "INSERT", "bbox": {"l": 338.3407, "t": 183.67809999999997, "r": 368.28046, "b": 192.50269000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " or ", "bbox": {"l": 368.28046, "t": 183.52868999999998, "r": 382.79913, "b": 192.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "UPDATE", "bbox": {"l": 382.74039, "t": 183.67809999999997, "r": 412.68015, "b": 192.50269000000003, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ". For example, you cannot ", "bbox": {"l": 412.7399, "t": 183.52868999999998, "r": 530.08759, "b": 192.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "insert or update a table with column access control activated with masked data generated ", "bbox": {"l": 142.79999, "t": 195.5285, "r": 540.74689, "b": 204.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "from an expression within the same statement that is based on a column with a column ", "bbox": {"l": 142.79999, "t": 207.52832, "r": 529.61914, "b": 216.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "mask.", "bbox": {"l": 142.79999, "t": 219.52814, "r": 169.49278, "b": 228.74114999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Note: Column masks can influence an SQL INSERT or UPDATE . For example, you cannot insert or update a table with column access control activated with masked data generated from an expression within the same statement that is based on a column with a column mask."}, {"label": "picture", "id": 5, "page_no": 102, "cluster": {"id": 5, "label": "picture", "bbox": {"l": 136.07940673828125, "t": 255.5457000732422, "r": 412.541015625, "b": 529.3939819335938, "coord_origin": "TOPLEFT"}, "confidence": 0.984312891960144, "cells": [{"id": 20, "text": "RCAC", "bbox": {"l": 342.6669, "t": 353.21677, "r": 363.56644, "b": 361.33936000000006, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "SQE S l", "bbox": {"l": 196.25211, "t": 403.55573, "r": 232.60068, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "ti", "bbox": {"l": 242.64763, "t": 403.55573, "r": 247.37315, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "P", "bbox": {"l": 260.52017, "t": 403.55573, "r": 266.83984, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "i", "bbox": {"l": 294.80676, "t": 403.55573, "r": 296.90384, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Column mask", "bbox": {"l": 347.00021, "t": 364.60345, "r": 399.17926, "b": 372.71655000000004, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "processing", "bbox": {"l": 349.15137, "t": 375.99026, "r": 390.10114, "b": 384.10336, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "SQE Selecti", "bbox": {"l": 196.25211, "t": 403.55573, "r": 247.37483, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "on", "bbox": {"l": 247.3976, "t": 403.55573, "r": 257.95886, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Processing", "bbox": {"l": 260.52399, "t": 403.55573, "r": 307.49136, "b": 412.01993, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "r3vS#45zt!J9*m$p6", "bbox": {"l": 212.0354, "t": 475.92493, "r": 294.86868, "b": 484.38913, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "FieldProc", "bbox": {"l": 336.34091, "t": 451.58566, "r": 372.53864, "b": 459.70825, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Decode and mask", "bbox": {"l": 338.87164, "t": 462.97247, "r": 407.23135, "b": 471.08557, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "processing", "bbox": {"l": 338.4921, "t": 474.35928, "r": 379.44186, "b": 482.47238, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 102, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 376.0430603027344, "t": 754.8911743164062, "r": 523.62878, "b": 764.1041870117188, "coord_origin": "TOPLEFT"}, "confidence": 0.951887309551239, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 102, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6262817382812, "t": 754.2442016601562, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9136953949928284, "cells": [{"id": 1, "text": "87", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "87"}]}}, {"page_no": 103, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "88 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "6.2", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 87.295662, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "RCAC effects on data movement", "bbox": {"l": 91.794777, "t": 71.22069999999997, "r": 342.67798, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "As described earlier and shown in Figure 6-3, RCAC is applied pervasively regardless of the ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 546.47467, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "data access programming interface, SQL statement, or IBM i command. The effects of RCAC ", "bbox": {"l": 136.8, "t": 115.48852999999997, "r": 547.2276, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "on data movement scenarios can be profound and possibly problematic. It is important to ", "bbox": {"l": 136.8, "t": 127.48834000000011, "r": 531.81549, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "understand these effects and make the appropriate adjustments to avoid incorrect results or ", "bbox": {"l": 136.8, "t": 139.48816, "r": 544.49969, "b": 148.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "data loss.", "bbox": {"l": 136.8, "t": 151.48798, "r": 179.40094, "b": 160.70099000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Figure 6-3 RCAC and data movement", "bbox": {"l": 136.8, "t": 292.33797999999996, "r": 291.97351, "b": 300.6629899999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "The \u201cuser\u201d that is running the data movement application or process, whether it be a high ", "bbox": {"l": 136.8, "t": 318.34872, "r": 532.05664, "b": 327.56171, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "availability (HA) scenario, an extract, transform, load (ETL) scenario, or just copying data from ", "bbox": {"l": 136.8, "t": 330.34854, "r": 547.16595, "b": 339.56152, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "one file or table to another one, must have permission to all the source rows without masking, ", "bbox": {"l": 136.79999, "t": 342.34836, "r": 547.27454, "b": 351.56134, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "and not be restricted from putting rows into the target. Allowing the data movement ", "bbox": {"l": 136.79999, "t": 354.34817999999996, "r": 504.48126, "b": 363.56116, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "application or process to bypass the RCAC rules must be based on a clear and concise ", "bbox": {"l": 136.79999, "t": 366.34799, "r": 525.23895, "b": 375.56097000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "understanding of the organization\u2019s object security and data access policy. Proper design, ", "bbox": {"l": 136.79999, "t": 378.34781, "r": 535.10541, "b": 387.56079, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "implementation, and testing are critical success factors when applying RCAC.", "bbox": {"l": 136.79999, "t": 390.3476299999999, "r": 478.83932, "b": 399.56061, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "This section covers in detail the following three examples:", "bbox": {"l": 136.79999, "t": 495.34793, "r": 390.66049, "b": 504.56091, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 512.47711, "r": 141.77998, "b": 521.25189, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Effects when RCAC is defined on the source table", "bbox": {"l": 151.20015, "t": 512.32773, "r": 372.08902, "b": 521.54071, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 524.47693, "r": 141.77998, "b": 533.25171, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Effects when RCAC is defined on the target table", "bbox": {"l": 151.20015, "t": 524.32755, "r": 367.63791, "b": 533.54053, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 536.47675, "r": 141.77998, "b": 545.2515, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Effects when RCAC is defined on both source and target tables", "bbox": {"l": 151.20015, "t": 536.32735, "r": 430.46753000000007, "b": 545.54034, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "6.2.1", "bbox": {"l": 64.800003, "t": 566.15462, "r": 93.897987, "b": 578.14262, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Effects when RCAC is defined on the source table", "bbox": {"l": 97.535255, "t": 566.15462, "r": 407.97049, "b": 578.14262, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Example 6-1 shows a simple example that illustrates the effect of RCAC as defined on the ", "bbox": {"l": 136.8, "t": 592.30862, "r": 536.16815, "b": 601.52162, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "source table.", "bbox": {"l": 136.80002, "t": 604.30843, "r": 193.61981, "b": 613.52142, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Example 6-1 INSERT INTO TARGET statement", "bbox": {"l": 136.8, "t": 626.35789, "r": 330.92816, "b": 634.68291, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "bbox": {"l": 136.8, "t": 643.51813, "r": 346.67709, "b": 652.29288, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Important:", "bbox": {"l": 142.8, "t": 418.30872, "r": 192.41673, "b": 427.5217, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " RCAC is applied to the table or physical file access. It is not applied to the ", "bbox": {"l": 192.41974, "t": 418.30872, "r": 523.17328, "b": 427.5217, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "journal receiver access. Any and all database transactions are represented in the journal ", "bbox": {"l": 142.80002, "t": 430.30853, "r": 536.52759, "b": 439.52151, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "regardless of RCAC row permissions and column masks. This makes it essential that", "bbox": {"l": 142.80002, "t": 442.30835, "r": 518.3606, "b": 451.52133, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "IBM i security is used to ensure that only authorized personnel have access to the ", "bbox": {"l": 142.80002, "t": 454.30816999999996, "r": 506.91161999999997, "b": 463.52115, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "journaled data.", "bbox": {"l": 142.80002, "t": 466.30798, "r": 209.20135, "b": 475.52097, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Source", "bbox": {"l": 159.0775, "t": 225.34418000000005, "r": 204.37405, "b": 239.35186999999996, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Table", "bbox": {"l": 164.21069, "t": 245.01648, "r": 197.96193, "b": 259.02417, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Target", "bbox": {"l": 434.70389000000006, "t": 225.34418000000005, "r": 474.6087, "b": 239.35186999999996, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Table", "bbox": {"l": 437.77770999999996, "t": 245.01648, "r": 471.52896, "b": 259.02417, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "RCAC", "bbox": {"l": 294.07819, "t": 220.35155999999995, "r": 334.01767, "b": 236.12005999999997, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Permissions", "bbox": {"l": 291.86511, "t": 240.09747000000004, "r": 336.3851, "b": 247.98181, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "k", "bbox": {"l": 318.2381, "t": 251.16314999999997, "r": 322.43384, "b": 259.04749000000004, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "SELECT", "bbox": {"l": 236.414, "t": 236.34747000000004, "r": 263.0611, "b": 244.24103000000002, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "INSERT", "bbox": {"l": 363.76089, "t": 236.34747000000004, "r": 390.84229, "b": 244.24103000000002, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Masks", "bbox": {"l": 302.31589, "t": 251.16314999999997, "r": 325.93185, "b": 259.04749000000004, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.2040786743164, "t": 754.5180053710938, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9170101284980774, "cells": [{"id": 0, "text": "88 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.31021881103516, "t": 754.7303466796875, "r": 334.42142, "b": 763.929931640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9497126936912537, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.4045181274414, "t": 70.29792785644531, "r": 342.9945068359375, "b": 85.9837, "coord_origin": "TOPLEFT"}, "confidence": 0.9599847793579102, "cells": [{"id": 2, "text": "6.2", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 87.295662, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "RCAC effects on data movement", "bbox": {"l": 91.794777, "t": 71.22069999999997, "r": 342.67798, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.77244567871094, "t": 102.67330932617188, "r": 547.2276, "b": 160.70099000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9856138825416565, "cells": [{"id": 4, "text": "As described earlier and shown in Figure 6-3, RCAC is applied pervasively regardless of the ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 546.47467, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "data access programming interface, SQL statement, or IBM i command. The effects of RCAC ", "bbox": {"l": 136.8, "t": 115.48852999999997, "r": 547.2276, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "on data movement scenarios can be profound and possibly problematic. It is important to ", "bbox": {"l": 136.8, "t": 127.48834000000011, "r": 531.81549, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "understand these effects and make the appropriate adjustments to avoid incorrect results or ", "bbox": {"l": 136.8, "t": 139.48816, "r": 544.49969, "b": 148.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "data loss.", "bbox": {"l": 136.8, "t": 151.48798, "r": 179.40094, "b": 160.70099000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "caption", "bbox": {"l": 135.88336181640625, "t": 291.65277099609375, "r": 292.6585693359375, "b": 300.9308776855469, "coord_origin": "TOPLEFT"}, "confidence": 0.9376186728477478, "cells": [{"id": 9, "text": "Figure 6-3 RCAC and data movement", "bbox": {"l": 136.8, "t": 292.33797999999996, "r": 291.97351, "b": 300.6629899999999, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.75350952148438, "t": 317.5677185058594, "r": 547.27454, "b": 399.9143371582031, "coord_origin": "TOPLEFT"}, "confidence": 0.9871634244918823, "cells": [{"id": 10, "text": "The \u201cuser\u201d that is running the data movement application or process, whether it be a high ", "bbox": {"l": 136.8, "t": 318.34872, "r": 532.05664, "b": 327.56171, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "availability (HA) scenario, an extract, transform, load (ETL) scenario, or just copying data from ", "bbox": {"l": 136.8, "t": 330.34854, "r": 547.16595, "b": 339.56152, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "one file or table to another one, must have permission to all the source rows without masking, ", "bbox": {"l": 136.79999, "t": 342.34836, "r": 547.27454, "b": 351.56134, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "and not be restricted from putting rows into the target. Allowing the data movement ", "bbox": {"l": 136.79999, "t": 354.34817999999996, "r": 504.48126, "b": 363.56116, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "application or process to bypass the RCAC rules must be based on a clear and concise ", "bbox": {"l": 136.79999, "t": 366.34799, "r": 525.23895, "b": 375.56097000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "understanding of the organization\u2019s object security and data access policy. Proper design, ", "bbox": {"l": 136.79999, "t": 378.34781, "r": 535.10541, "b": 387.56079, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "implementation, and testing are critical success factors when applying RCAC.", "bbox": {"l": 136.79999, "t": 390.3476299999999, "r": 478.83932, "b": 399.56061, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 135.97303771972656, "t": 494.7318115234375, "r": 390.66049, "b": 504.98223876953125, "coord_origin": "TOPLEFT"}, "confidence": 0.8897727131843567, "cells": [{"id": 17, "text": "This section covers in detail the following three examples:", "bbox": {"l": 136.79999, "t": 495.34793, "r": 390.66049, "b": 504.56091, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.6826171875, "t": 511.1615905761719, "r": 372.08902, "b": 521.54071, "coord_origin": "TOPLEFT"}, "confidence": 0.9416220784187317, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 512.47711, "r": 141.77998, "b": 521.25189, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Effects when RCAC is defined on the source table", "bbox": {"l": 151.20015, "t": 512.32773, "r": 372.08902, "b": 521.54071, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.69775390625, "t": 523.0594482421875, "r": 367.63791, "b": 533.54053, "coord_origin": "TOPLEFT"}, "confidence": 0.9410248398780823, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 524.47693, "r": 141.77998, "b": 533.25171, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Effects when RCAC is defined on the target table", "bbox": {"l": 151.20015, "t": 524.32755, "r": 367.63791, "b": 533.54053, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.60743713378906, "t": 535.3680419921875, "r": 430.46753000000007, "b": 545.6080322265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9507178664207458, "cells": [{"id": 22, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 536.47675, "r": 141.77998, "b": 545.2515, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Effects when RCAC is defined on both source and target tables", "bbox": {"l": 151.20015, "t": 536.32735, "r": 430.46753000000007, "b": 545.54034, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "section_header", "bbox": {"l": 64.18472290039062, "t": 565.0562133789062, "r": 407.97049, "b": 578.14262, "coord_origin": "TOPLEFT"}, "confidence": 0.9600307941436768, "cells": [{"id": 24, "text": "6.2.1", "bbox": {"l": 64.800003, "t": 566.15462, "r": 93.897987, "b": 578.14262, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Effects when RCAC is defined on the source table", "bbox": {"l": 97.535255, "t": 566.15462, "r": 407.97049, "b": 578.14262, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 136.2682647705078, "t": 591.3966064453125, "r": 536.16815, "b": 613.52142, "coord_origin": "TOPLEFT"}, "confidence": 0.97333163022995, "cells": [{"id": 26, "text": "Example 6-1 shows a simple example that illustrates the effect of RCAC as defined on the ", "bbox": {"l": 136.8, "t": 592.30862, "r": 536.16815, "b": 601.52162, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "source table.", "bbox": {"l": 136.80002, "t": 604.30843, "r": 193.61981, "b": 613.52142, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "caption", "bbox": {"l": 136.156005859375, "t": 625.2975463867188, "r": 331.8805847167969, "b": 634.7236938476562, "coord_origin": "TOPLEFT"}, "confidence": 0.7500959634780884, "cells": [{"id": 28, "text": "Example 6-1 INSERT INTO TARGET statement", "bbox": {"l": 136.8, "t": 626.35789, "r": 330.92816, "b": 634.68291, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 136.8, "t": 642.6497802734375, "r": 346.67709, "b": 652.3346557617188, "coord_origin": "TOPLEFT"}, "confidence": 0.719869077205658, "cells": [{"id": 29, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "bbox": {"l": 136.8, "t": 643.51813, "r": 346.67709, "b": 652.29288, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "text", "bbox": {"l": 141.819091796875, "t": 417.33447265625, "r": 536.52759, "b": 475.52097, "coord_origin": "TOPLEFT"}, "confidence": 0.9828086495399475, "cells": [{"id": 30, "text": "Important:", "bbox": {"l": 142.8, "t": 418.30872, "r": 192.41673, "b": 427.5217, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " RCAC is applied to the table or physical file access. It is not applied to the ", "bbox": {"l": 192.41974, "t": 418.30872, "r": 523.17328, "b": 427.5217, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "journal receiver access. Any and all database transactions are represented in the journal ", "bbox": {"l": 142.80002, "t": 430.30853, "r": 536.52759, "b": 439.52151, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "regardless of RCAC row permissions and column masks. This makes it essential that", "bbox": {"l": 142.80002, "t": 442.30835, "r": 518.3606, "b": 451.52133, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "IBM i security is used to ensure that only authorized personnel have access to the ", "bbox": {"l": 142.80002, "t": 454.30816999999996, "r": 506.91161999999997, "b": 463.52115, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "journaled data.", "bbox": {"l": 142.80002, "t": 466.30798, "r": 209.20135, "b": 475.52097, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "picture", "bbox": {"l": 135.86012268066406, "t": 175.29827880859375, "r": 497.2643127441406, "b": 289.20782470703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9842056035995483, "cells": [{"id": 36, "text": "Source", "bbox": {"l": 159.0775, "t": 225.34418000000005, "r": 204.37405, "b": 239.35186999999996, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Table", "bbox": {"l": 164.21069, "t": 245.01648, "r": 197.96193, "b": 259.02417, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Target", "bbox": {"l": 434.70389000000006, "t": 225.34418000000005, "r": 474.6087, "b": 239.35186999999996, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Table", "bbox": {"l": 437.77770999999996, "t": 245.01648, "r": 471.52896, "b": 259.02417, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "RCAC", "bbox": {"l": 294.07819, "t": 220.35155999999995, "r": 334.01767, "b": 236.12005999999997, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Permissions", "bbox": {"l": 291.86511, "t": 240.09747000000004, "r": 336.3851, "b": 247.98181, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "k", "bbox": {"l": 318.2381, "t": 251.16314999999997, "r": 322.43384, "b": 259.04749000000004, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "SELECT", "bbox": {"l": 236.414, "t": 236.34747000000004, "r": 263.0611, "b": 244.24103000000002, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "INSERT", "bbox": {"l": 363.76089, "t": 236.34747000000004, "r": 390.84229, "b": 244.24103000000002, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Masks", "bbox": {"l": 302.31589, "t": 251.16314999999997, "r": 325.93185, "b": 259.04749000000004, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 103, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.2040786743164, "t": 754.5180053710938, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9170101284980774, "cells": [{"id": 0, "text": "88 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "88"}, {"label": "page_footer", "id": 1, "page_no": 103, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.31021881103516, "t": 754.7303466796875, "r": 334.42142, "b": 763.929931640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9497126936912537, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "section_header", "id": 2, "page_no": 103, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.4045181274414, "t": 70.29792785644531, "r": 342.9945068359375, "b": 85.9837, "coord_origin": "TOPLEFT"}, "confidence": 0.9599847793579102, "cells": [{"id": 2, "text": "6.2", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 87.295662, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "RCAC effects on data movement", "bbox": {"l": 91.794777, "t": 71.22069999999997, "r": 342.67798, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, "text": "6.2 RCAC effects on data movement"}, {"label": "text", "id": 3, "page_no": 103, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.77244567871094, "t": 102.67330932617188, "r": 547.2276, "b": 160.70099000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9856138825416565, "cells": [{"id": 4, "text": "As described earlier and shown in Figure 6-3, RCAC is applied pervasively regardless of the ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 546.47467, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "data access programming interface, SQL statement, or IBM i command. The effects of RCAC ", "bbox": {"l": 136.8, "t": 115.48852999999997, "r": 547.2276, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "on data movement scenarios can be profound and possibly problematic. It is important to ", "bbox": {"l": 136.8, "t": 127.48834000000011, "r": 531.81549, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "understand these effects and make the appropriate adjustments to avoid incorrect results or ", "bbox": {"l": 136.8, "t": 139.48816, "r": 544.49969, "b": 148.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "data loss.", "bbox": {"l": 136.8, "t": 151.48798, "r": 179.40094, "b": 160.70099000000005, "coord_origin": "TOPLEFT"}}]}, "text": "As described earlier and shown in Figure 6-3, RCAC is applied pervasively regardless of the data access programming interface, SQL statement, or IBM i command. The effects of RCAC on data movement scenarios can be profound and possibly problematic. It is important to understand these effects and make the appropriate adjustments to avoid incorrect results or data loss."}, {"label": "caption", "id": 4, "page_no": 103, "cluster": {"id": 4, "label": "caption", "bbox": {"l": 135.88336181640625, "t": 291.65277099609375, "r": 292.6585693359375, "b": 300.9308776855469, "coord_origin": "TOPLEFT"}, "confidence": 0.9376186728477478, "cells": [{"id": 9, "text": "Figure 6-3 RCAC and data movement", "bbox": {"l": 136.8, "t": 292.33797999999996, "r": 291.97351, "b": 300.6629899999999, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-3 RCAC and data movement"}, {"label": "text", "id": 5, "page_no": 103, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.75350952148438, "t": 317.5677185058594, "r": 547.27454, "b": 399.9143371582031, "coord_origin": "TOPLEFT"}, "confidence": 0.9871634244918823, "cells": [{"id": 10, "text": "The \u201cuser\u201d that is running the data movement application or process, whether it be a high ", "bbox": {"l": 136.8, "t": 318.34872, "r": 532.05664, "b": 327.56171, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "availability (HA) scenario, an extract, transform, load (ETL) scenario, or just copying data from ", "bbox": {"l": 136.8, "t": 330.34854, "r": 547.16595, "b": 339.56152, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "one file or table to another one, must have permission to all the source rows without masking, ", "bbox": {"l": 136.79999, "t": 342.34836, "r": 547.27454, "b": 351.56134, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "and not be restricted from putting rows into the target. Allowing the data movement ", "bbox": {"l": 136.79999, "t": 354.34817999999996, "r": 504.48126, "b": 363.56116, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "application or process to bypass the RCAC rules must be based on a clear and concise ", "bbox": {"l": 136.79999, "t": 366.34799, "r": 525.23895, "b": 375.56097000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "understanding of the organization\u2019s object security and data access policy. Proper design, ", "bbox": {"l": 136.79999, "t": 378.34781, "r": 535.10541, "b": 387.56079, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "implementation, and testing are critical success factors when applying RCAC.", "bbox": {"l": 136.79999, "t": 390.3476299999999, "r": 478.83932, "b": 399.56061, "coord_origin": "TOPLEFT"}}]}, "text": "The \u201cuser\u201d that is running the data movement application or process, whether it be a high availability (HA) scenario, an extract, transform, load (ETL) scenario, or just copying data from one file or table to another one, must have permission to all the source rows without masking, and not be restricted from putting rows into the target. Allowing the data movement application or process to bypass the RCAC rules must be based on a clear and concise understanding of the organization\u2019s object security and data access policy. Proper design, implementation, and testing are critical success factors when applying RCAC."}, {"label": "text", "id": 6, "page_no": 103, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.97303771972656, "t": 494.7318115234375, "r": 390.66049, "b": 504.98223876953125, "coord_origin": "TOPLEFT"}, "confidence": 0.8897727131843567, "cells": [{"id": 17, "text": "This section covers in detail the following three examples:", "bbox": {"l": 136.79999, "t": 495.34793, "r": 390.66049, "b": 504.56091, "coord_origin": "TOPLEFT"}}]}, "text": "This section covers in detail the following three examples:"}, {"label": "list_item", "id": 7, "page_no": 103, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.6826171875, "t": 511.1615905761719, "r": 372.08902, "b": 521.54071, "coord_origin": "TOPLEFT"}, "confidence": 0.9416220784187317, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 512.47711, "r": 141.77998, "b": 521.25189, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Effects when RCAC is defined on the source table", "bbox": {"l": 151.20015, "t": 512.32773, "r": 372.08902, "b": 521.54071, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Effects when RCAC is defined on the source table"}, {"label": "list_item", "id": 8, "page_no": 103, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.69775390625, "t": 523.0594482421875, "r": 367.63791, "b": 533.54053, "coord_origin": "TOPLEFT"}, "confidence": 0.9410248398780823, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 524.47693, "r": 141.77998, "b": 533.25171, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Effects when RCAC is defined on the target table", "bbox": {"l": 151.20015, "t": 524.32755, "r": 367.63791, "b": 533.54053, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Effects when RCAC is defined on the target table"}, {"label": "list_item", "id": 9, "page_no": 103, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.60743713378906, "t": 535.3680419921875, "r": 430.46753000000007, "b": 545.6080322265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9507178664207458, "cells": [{"id": 22, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 536.47675, "r": 141.77998, "b": 545.2515, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Effects when RCAC is defined on both source and target tables", "bbox": {"l": 151.20015, "t": 536.32735, "r": 430.46753000000007, "b": 545.54034, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Effects when RCAC is defined on both source and target tables"}, {"label": "section_header", "id": 10, "page_no": 103, "cluster": {"id": 10, "label": "section_header", "bbox": {"l": 64.18472290039062, "t": 565.0562133789062, "r": 407.97049, "b": 578.14262, "coord_origin": "TOPLEFT"}, "confidence": 0.9600307941436768, "cells": [{"id": 24, "text": "6.2.1", "bbox": {"l": 64.800003, "t": 566.15462, "r": 93.897987, "b": 578.14262, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Effects when RCAC is defined on the source table", "bbox": {"l": 97.535255, "t": 566.15462, "r": 407.97049, "b": 578.14262, "coord_origin": "TOPLEFT"}}]}, "text": "6.2.1 Effects when RCAC is defined on the source table"}, {"label": "text", "id": 11, "page_no": 103, "cluster": {"id": 11, "label": "text", "bbox": {"l": 136.2682647705078, "t": 591.3966064453125, "r": 536.16815, "b": 613.52142, "coord_origin": "TOPLEFT"}, "confidence": 0.97333163022995, "cells": [{"id": 26, "text": "Example 6-1 shows a simple example that illustrates the effect of RCAC as defined on the ", "bbox": {"l": 136.8, "t": 592.30862, "r": 536.16815, "b": 601.52162, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "source table.", "bbox": {"l": 136.80002, "t": 604.30843, "r": 193.61981, "b": 613.52142, "coord_origin": "TOPLEFT"}}]}, "text": "Example 6-1 shows a simple example that illustrates the effect of RCAC as defined on the source table."}, {"label": "caption", "id": 12, "page_no": 103, "cluster": {"id": 12, "label": "caption", "bbox": {"l": 136.156005859375, "t": 625.2975463867188, "r": 331.8805847167969, "b": 634.7236938476562, "coord_origin": "TOPLEFT"}, "confidence": 0.7500959634780884, "cells": [{"id": 28, "text": "Example 6-1 INSERT INTO TARGET statement", "bbox": {"l": 136.8, "t": 626.35789, "r": 330.92816, "b": 634.68291, "coord_origin": "TOPLEFT"}}]}, "text": "Example 6-1 INSERT INTO TARGET statement"}, {"label": "text", "id": 13, "page_no": 103, "cluster": {"id": 13, "label": "text", "bbox": {"l": 136.8, "t": 642.6497802734375, "r": 346.67709, "b": 652.3346557617188, "coord_origin": "TOPLEFT"}, "confidence": 0.719869077205658, "cells": [{"id": 29, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "bbox": {"l": 136.8, "t": 643.51813, "r": 346.67709, "b": 652.29288, "coord_origin": "TOPLEFT"}}]}, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);"}, {"label": "text", "id": 14, "page_no": 103, "cluster": {"id": 14, "label": "text", "bbox": {"l": 141.819091796875, "t": 417.33447265625, "r": 536.52759, "b": 475.52097, "coord_origin": "TOPLEFT"}, "confidence": 0.9828086495399475, "cells": [{"id": 30, "text": "Important:", "bbox": {"l": 142.8, "t": 418.30872, "r": 192.41673, "b": 427.5217, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " RCAC is applied to the table or physical file access. It is not applied to the ", "bbox": {"l": 192.41974, "t": 418.30872, "r": 523.17328, "b": 427.5217, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "journal receiver access. Any and all database transactions are represented in the journal ", "bbox": {"l": 142.80002, "t": 430.30853, "r": 536.52759, "b": 439.52151, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "regardless of RCAC row permissions and column masks. This makes it essential that", "bbox": {"l": 142.80002, "t": 442.30835, "r": 518.3606, "b": 451.52133, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "IBM i security is used to ensure that only authorized personnel have access to the ", "bbox": {"l": 142.80002, "t": 454.30816999999996, "r": 506.91161999999997, "b": 463.52115, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "journaled data.", "bbox": {"l": 142.80002, "t": 466.30798, "r": 209.20135, "b": 475.52097, "coord_origin": "TOPLEFT"}}]}, "text": "Important: RCAC is applied to the table or physical file access. It is not applied to the journal receiver access. Any and all database transactions are represented in the journal regardless of RCAC row permissions and column masks. This makes it essential that IBM i security is used to ensure that only authorized personnel have access to the journaled data."}, {"label": "picture", "id": 15, "page_no": 103, "cluster": {"id": 15, "label": "picture", "bbox": {"l": 135.86012268066406, "t": 175.29827880859375, "r": 497.2643127441406, "b": 289.20782470703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9842056035995483, "cells": [{"id": 36, "text": "Source", "bbox": {"l": 159.0775, "t": 225.34418000000005, "r": 204.37405, "b": 239.35186999999996, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Table", "bbox": {"l": 164.21069, "t": 245.01648, "r": 197.96193, "b": 259.02417, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Target", "bbox": {"l": 434.70389000000006, "t": 225.34418000000005, "r": 474.6087, "b": 239.35186999999996, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Table", "bbox": {"l": 437.77770999999996, "t": 245.01648, "r": 471.52896, "b": 259.02417, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "RCAC", "bbox": {"l": 294.07819, "t": 220.35155999999995, "r": 334.01767, "b": 236.12005999999997, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Permissions", "bbox": {"l": 291.86511, "t": 240.09747000000004, "r": 336.3851, "b": 247.98181, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "k", "bbox": {"l": 318.2381, "t": 251.16314999999997, "r": 322.43384, "b": 259.04749000000004, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "SELECT", "bbox": {"l": 236.414, "t": 236.34747000000004, "r": 263.0611, "b": 244.24103000000002, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "INSERT", "bbox": {"l": 363.76089, "t": 236.34747000000004, "r": 390.84229, "b": 244.24103000000002, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Masks", "bbox": {"l": 302.31589, "t": 251.16314999999997, "r": 325.93185, "b": 259.04749000000004, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "section_header", "id": 2, "page_no": 103, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.4045181274414, "t": 70.29792785644531, "r": 342.9945068359375, "b": 85.9837, "coord_origin": "TOPLEFT"}, "confidence": 0.9599847793579102, "cells": [{"id": 2, "text": "6.2", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 87.295662, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "RCAC effects on data movement", "bbox": {"l": 91.794777, "t": 71.22069999999997, "r": 342.67798, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, "text": "6.2 RCAC effects on data movement"}, {"label": "text", "id": 3, "page_no": 103, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.77244567871094, "t": 102.67330932617188, "r": 547.2276, "b": 160.70099000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9856138825416565, "cells": [{"id": 4, "text": "As described earlier and shown in Figure 6-3, RCAC is applied pervasively regardless of the ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 546.47467, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "data access programming interface, SQL statement, or IBM i command. The effects of RCAC ", "bbox": {"l": 136.8, "t": 115.48852999999997, "r": 547.2276, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "on data movement scenarios can be profound and possibly problematic. It is important to ", "bbox": {"l": 136.8, "t": 127.48834000000011, "r": 531.81549, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "understand these effects and make the appropriate adjustments to avoid incorrect results or ", "bbox": {"l": 136.8, "t": 139.48816, "r": 544.49969, "b": 148.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "data loss.", "bbox": {"l": 136.8, "t": 151.48798, "r": 179.40094, "b": 160.70099000000005, "coord_origin": "TOPLEFT"}}]}, "text": "As described earlier and shown in Figure 6-3, RCAC is applied pervasively regardless of the data access programming interface, SQL statement, or IBM i command. The effects of RCAC on data movement scenarios can be profound and possibly problematic. It is important to understand these effects and make the appropriate adjustments to avoid incorrect results or data loss."}, {"label": "caption", "id": 4, "page_no": 103, "cluster": {"id": 4, "label": "caption", "bbox": {"l": 135.88336181640625, "t": 291.65277099609375, "r": 292.6585693359375, "b": 300.9308776855469, "coord_origin": "TOPLEFT"}, "confidence": 0.9376186728477478, "cells": [{"id": 9, "text": "Figure 6-3 RCAC and data movement", "bbox": {"l": 136.8, "t": 292.33797999999996, "r": 291.97351, "b": 300.6629899999999, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-3 RCAC and data movement"}, {"label": "text", "id": 5, "page_no": 103, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.75350952148438, "t": 317.5677185058594, "r": 547.27454, "b": 399.9143371582031, "coord_origin": "TOPLEFT"}, "confidence": 0.9871634244918823, "cells": [{"id": 10, "text": "The \u201cuser\u201d that is running the data movement application or process, whether it be a high ", "bbox": {"l": 136.8, "t": 318.34872, "r": 532.05664, "b": 327.56171, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "availability (HA) scenario, an extract, transform, load (ETL) scenario, or just copying data from ", "bbox": {"l": 136.8, "t": 330.34854, "r": 547.16595, "b": 339.56152, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "one file or table to another one, must have permission to all the source rows without masking, ", "bbox": {"l": 136.79999, "t": 342.34836, "r": 547.27454, "b": 351.56134, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "and not be restricted from putting rows into the target. Allowing the data movement ", "bbox": {"l": 136.79999, "t": 354.34817999999996, "r": 504.48126, "b": 363.56116, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "application or process to bypass the RCAC rules must be based on a clear and concise ", "bbox": {"l": 136.79999, "t": 366.34799, "r": 525.23895, "b": 375.56097000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "understanding of the organization\u2019s object security and data access policy. Proper design, ", "bbox": {"l": 136.79999, "t": 378.34781, "r": 535.10541, "b": 387.56079, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "implementation, and testing are critical success factors when applying RCAC.", "bbox": {"l": 136.79999, "t": 390.3476299999999, "r": 478.83932, "b": 399.56061, "coord_origin": "TOPLEFT"}}]}, "text": "The \u201cuser\u201d that is running the data movement application or process, whether it be a high availability (HA) scenario, an extract, transform, load (ETL) scenario, or just copying data from one file or table to another one, must have permission to all the source rows without masking, and not be restricted from putting rows into the target. Allowing the data movement application or process to bypass the RCAC rules must be based on a clear and concise understanding of the organization\u2019s object security and data access policy. Proper design, implementation, and testing are critical success factors when applying RCAC."}, {"label": "text", "id": 6, "page_no": 103, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.97303771972656, "t": 494.7318115234375, "r": 390.66049, "b": 504.98223876953125, "coord_origin": "TOPLEFT"}, "confidence": 0.8897727131843567, "cells": [{"id": 17, "text": "This section covers in detail the following three examples:", "bbox": {"l": 136.79999, "t": 495.34793, "r": 390.66049, "b": 504.56091, "coord_origin": "TOPLEFT"}}]}, "text": "This section covers in detail the following three examples:"}, {"label": "list_item", "id": 7, "page_no": 103, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.6826171875, "t": 511.1615905761719, "r": 372.08902, "b": 521.54071, "coord_origin": "TOPLEFT"}, "confidence": 0.9416220784187317, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 512.47711, "r": 141.77998, "b": 521.25189, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Effects when RCAC is defined on the source table", "bbox": {"l": 151.20015, "t": 512.32773, "r": 372.08902, "b": 521.54071, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Effects when RCAC is defined on the source table"}, {"label": "list_item", "id": 8, "page_no": 103, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.69775390625, "t": 523.0594482421875, "r": 367.63791, "b": 533.54053, "coord_origin": "TOPLEFT"}, "confidence": 0.9410248398780823, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 524.47693, "r": 141.77998, "b": 533.25171, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Effects when RCAC is defined on the target table", "bbox": {"l": 151.20015, "t": 524.32755, "r": 367.63791, "b": 533.54053, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Effects when RCAC is defined on the target table"}, {"label": "list_item", "id": 9, "page_no": 103, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.60743713378906, "t": 535.3680419921875, "r": 430.46753000000007, "b": 545.6080322265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9507178664207458, "cells": [{"id": 22, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 536.47675, "r": 141.77998, "b": 545.2515, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Effects when RCAC is defined on both source and target tables", "bbox": {"l": 151.20015, "t": 536.32735, "r": 430.46753000000007, "b": 545.54034, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Effects when RCAC is defined on both source and target tables"}, {"label": "section_header", "id": 10, "page_no": 103, "cluster": {"id": 10, "label": "section_header", "bbox": {"l": 64.18472290039062, "t": 565.0562133789062, "r": 407.97049, "b": 578.14262, "coord_origin": "TOPLEFT"}, "confidence": 0.9600307941436768, "cells": [{"id": 24, "text": "6.2.1", "bbox": {"l": 64.800003, "t": 566.15462, "r": 93.897987, "b": 578.14262, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Effects when RCAC is defined on the source table", "bbox": {"l": 97.535255, "t": 566.15462, "r": 407.97049, "b": 578.14262, "coord_origin": "TOPLEFT"}}]}, "text": "6.2.1 Effects when RCAC is defined on the source table"}, {"label": "text", "id": 11, "page_no": 103, "cluster": {"id": 11, "label": "text", "bbox": {"l": 136.2682647705078, "t": 591.3966064453125, "r": 536.16815, "b": 613.52142, "coord_origin": "TOPLEFT"}, "confidence": 0.97333163022995, "cells": [{"id": 26, "text": "Example 6-1 shows a simple example that illustrates the effect of RCAC as defined on the ", "bbox": {"l": 136.8, "t": 592.30862, "r": 536.16815, "b": 601.52162, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "source table.", "bbox": {"l": 136.80002, "t": 604.30843, "r": 193.61981, "b": 613.52142, "coord_origin": "TOPLEFT"}}]}, "text": "Example 6-1 shows a simple example that illustrates the effect of RCAC as defined on the source table."}, {"label": "caption", "id": 12, "page_no": 103, "cluster": {"id": 12, "label": "caption", "bbox": {"l": 136.156005859375, "t": 625.2975463867188, "r": 331.8805847167969, "b": 634.7236938476562, "coord_origin": "TOPLEFT"}, "confidence": 0.7500959634780884, "cells": [{"id": 28, "text": "Example 6-1 INSERT INTO TARGET statement", "bbox": {"l": 136.8, "t": 626.35789, "r": 330.92816, "b": 634.68291, "coord_origin": "TOPLEFT"}}]}, "text": "Example 6-1 INSERT INTO TARGET statement"}, {"label": "text", "id": 13, "page_no": 103, "cluster": {"id": 13, "label": "text", "bbox": {"l": 136.8, "t": 642.6497802734375, "r": 346.67709, "b": 652.3346557617188, "coord_origin": "TOPLEFT"}, "confidence": 0.719869077205658, "cells": [{"id": 29, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "bbox": {"l": 136.8, "t": 643.51813, "r": 346.67709, "b": 652.29288, "coord_origin": "TOPLEFT"}}]}, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);"}, {"label": "text", "id": 14, "page_no": 103, "cluster": {"id": 14, "label": "text", "bbox": {"l": 141.819091796875, "t": 417.33447265625, "r": 536.52759, "b": 475.52097, "coord_origin": "TOPLEFT"}, "confidence": 0.9828086495399475, "cells": [{"id": 30, "text": "Important:", "bbox": {"l": 142.8, "t": 418.30872, "r": 192.41673, "b": 427.5217, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " RCAC is applied to the table or physical file access. It is not applied to the ", "bbox": {"l": 192.41974, "t": 418.30872, "r": 523.17328, "b": 427.5217, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "journal receiver access. Any and all database transactions are represented in the journal ", "bbox": {"l": 142.80002, "t": 430.30853, "r": 536.52759, "b": 439.52151, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "regardless of RCAC row permissions and column masks. This makes it essential that", "bbox": {"l": 142.80002, "t": 442.30835, "r": 518.3606, "b": 451.52133, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "IBM i security is used to ensure that only authorized personnel have access to the ", "bbox": {"l": 142.80002, "t": 454.30816999999996, "r": 506.91161999999997, "b": 463.52115, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "journaled data.", "bbox": {"l": 142.80002, "t": 466.30798, "r": 209.20135, "b": 475.52097, "coord_origin": "TOPLEFT"}}]}, "text": "Important: RCAC is applied to the table or physical file access. It is not applied to the journal receiver access. Any and all database transactions are represented in the journal regardless of RCAC row permissions and column masks. This makes it essential that IBM i security is used to ensure that only authorized personnel have access to the journaled data."}, {"label": "picture", "id": 15, "page_no": 103, "cluster": {"id": 15, "label": "picture", "bbox": {"l": 135.86012268066406, "t": 175.29827880859375, "r": 497.2643127441406, "b": 289.20782470703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9842056035995483, "cells": [{"id": 36, "text": "Source", "bbox": {"l": 159.0775, "t": 225.34418000000005, "r": 204.37405, "b": 239.35186999999996, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Table", "bbox": {"l": 164.21069, "t": 245.01648, "r": 197.96193, "b": 259.02417, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Target", "bbox": {"l": 434.70389000000006, "t": 225.34418000000005, "r": 474.6087, "b": 239.35186999999996, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Table", "bbox": {"l": 437.77770999999996, "t": 245.01648, "r": 471.52896, "b": 259.02417, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "RCAC", "bbox": {"l": 294.07819, "t": 220.35155999999995, "r": 334.01767, "b": 236.12005999999997, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Permissions", "bbox": {"l": 291.86511, "t": 240.09747000000004, "r": 336.3851, "b": 247.98181, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "k", "bbox": {"l": 318.2381, "t": 251.16314999999997, "r": 322.43384, "b": 259.04749000000004, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "SELECT", "bbox": {"l": 236.414, "t": 236.34747000000004, "r": 263.0611, "b": 244.24103000000002, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "INSERT", "bbox": {"l": 363.76089, "t": 236.34747000000004, "r": 390.84229, "b": 244.24103000000002, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Masks", "bbox": {"l": 302.31589, "t": 251.16314999999997, "r": 325.93185, "b": 259.04749000000004, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 103, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.2040786743164, "t": 754.5180053710938, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9170101284980774, "cells": [{"id": 0, "text": "88 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "88"}, {"label": "page_footer", "id": 1, "page_no": 103, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.31021881103516, "t": 754.7303466796875, "r": 334.42142, "b": 763.929931640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9497126936912537, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 104, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "89", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "For example, given a \u201csource\u201d table with a row permission defined as ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 443.44409, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "NAME <> 'CAIN'", "bbox": {"l": 443.39925999999997, "t": 71.65845000000002, "r": 513.35828, "b": 80.43322999999998, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " and a ", "bbox": {"l": 513.41907, "t": 71.50903000000005, "r": 544.08289, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "column mask that is defined to project the value 999.99 for AMOUNT, the ", "bbox": {"l": 136.79956, "t": 83.50885000000017, "r": 462.2626, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "SELECT", "bbox": {"l": 462.23958999999996, "t": 83.65826000000004, "r": 492.23911000000004, "b": 92.48284999999998, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " statement ", "bbox": {"l": 492.23911000000004, "t": 83.50885000000017, "r": 541.67755, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "produces a result set that has the RCAC rules applied. This reduced and modified result set is ", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 547.29004, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "inserted into the \u201ctarget\u201d table even though the query is defined as returning all rows and all ", "bbox": {"l": 136.79959, "t": 107.50847999999996, "r": 542.46948, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "columns. Instead of seven rows that are selected from the source, only three rows are ", "bbox": {"l": 136.79959, "t": 119.50829999999996, "r": 517.87115, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "returned and placed into the target, as shown in Figure 6-4.", "bbox": {"l": 136.79959, "t": 131.50811999999996, "r": 399.19583, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Figure 6-4 RCAC effects on data movement from SOURCE", "bbox": {"l": 136.8, "t": 407.89798, "r": 377.21973, "b": 416.22299, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "6.2.2", "bbox": {"l": 64.800003, "t": 436.73474000000004, "r": 93.918915, "b": 448.72272, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Effects when RCAC is defined on the target table", "bbox": {"l": 97.5588, "t": 436.73474000000004, "r": 401.65768, "b": 448.72272, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Example 6-2 shows a simple example that illustrates the effect of RCAC as defined on the ", "bbox": {"l": 136.8, "t": 462.88873, "r": 536.16815, "b": 472.10172, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "target table.", "bbox": {"l": 136.80002, "t": 474.88855, "r": 189.17468, "b": 484.10153, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Example 6-2 INSERT INTO TARGET statement", "bbox": {"l": 136.8, "t": 496.8779, "r": 330.92816, "b": 505.20291, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "bbox": {"l": 136.8, "t": 514.03799, "r": 346.67709, "b": 522.81277, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "RCAC Effects on Data Movement", "bbox": {"l": 206.3309, "t": 162.62329, "r": 422.9632, "b": 176.68286, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "RCAC Rule Text", "bbox": {"l": 274.85211, "t": 205.28314, "r": 362.21695, "b": 217.60175000000004, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Source", "bbox": {"l": 154.65469, "t": 230.24994000000004, "r": 200.11852, "b": 244.30951000000005, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Table", "bbox": {"l": 159.80653, "t": 249.99414000000002, "r": 193.6824, "b": 264.05371, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Target", "bbox": {"l": 431.29999, "t": 230.24994000000004, "r": 471.35211, "b": 244.30951000000005, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Table", "bbox": {"l": 434.38485999999995, "t": 249.99414000000002, "r": 468.26074, "b": 264.05371, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Permission: WHERE NAME <> \u0091CAIN\u0092", "bbox": {"l": 238.9718, "t": 233.84717, "r": 390.40936, "b": 242.63109999999995, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Mask: AMOUNT", "bbox": {"l": 238.9718, "t": 258.62097000000006, "r": 306.32385, "b": 267.40491, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "GLYPH", "bbox": {"l": 308.66531, "t": 258.56964000000005, "r": 318.72308, "b": 267.81586000000004, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "999 99", "bbox": {"l": 321.09851, "t": 258.62097000000006, "r": 349.76877, "b": 267.40491, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Mask: AMOUNT ", "bbox": {"l": 238.9718, "t": 258.62097000000006, "r": 308.6116, "b": 267.40491, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "999.99", "bbox": {"l": 321.09851, "t": 258.62097000000006, "r": 349.7634, "b": 267.40491, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "PKey", "bbox": {"l": 149.4408, "t": 310.95052999999996, "r": 161.93875, "b": 316.23233, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Name", "bbox": {"l": 173.33221, "t": 310.95052999999996, "r": 188.56422, "b": 316.23233, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Amount", "bbox": {"l": 199.92807, "t": 310.95052999999996, "r": 220.69669, "b": 316.23233, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "0001", "bbox": {"l": 150.24294, "t": 322.05707, "r": 162.72176, "b": 327.33267000000006, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "CAIN", "bbox": {"l": 170.12364, "t": 322.05707, "r": 182.49139, "b": 327.33267000000006, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "10.00", "bbox": {"l": 207.42496, "t": 322.05707, "r": 221.45003999999997, "b": 327.33267000000006, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "0002", "bbox": {"l": 150.24294, "t": 333.16360000000003, "r": 162.72916, "b": 338.43921, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "BEDOYA", "bbox": {"l": 170.1292, "t": 333.16360000000003, "r": 190.28262, "b": 338.43921, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "25.50", "bbox": {"l": 207.42062, "t": 333.16360000000003, "r": 221.45497, "b": 338.43921, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "PKey", "bbox": {"l": 408.655, "t": 328.22742000000005, "r": 421.15295, "b": 333.5092200000001, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Name", "bbox": {"l": 432.54642, "t": 328.22742000000005, "r": 447.77841, "b": 333.5092200000001, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Amount", "bbox": {"l": 459.14224, "t": 328.22742000000005, "r": 479.91085999999996, "b": 333.5092200000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "0002", "bbox": {"l": 409.45721, "t": 339.33392, "r": 421.92615, "b": 344.60953, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "BEDOYA", "bbox": {"l": 429.3255899999999, "t": 339.33392, "r": 449.5209699999999, "b": 344.60953, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "999 99", "bbox": {"l": 463.53989, "t": 339.33392, "r": 480.66864, "b": 344.60953, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "0003", "bbox": {"l": 150.2429, "t": 344.27022999999997, "r": 162.72173, "b": 349.54583999999994, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "CAIN", "bbox": {"l": 170.12361, "t": 344.27022999999997, "r": 182.49136, "b": 349.54583999999994, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "333.00", "bbox": {"l": 204.30893, "t": 344.27022999999997, "r": 221.45371999999998, "b": 349.54583999999994, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "0004", "bbox": {"l": 150.2429, "t": 355.37677, "r": 162.72913, "b": 360.6523700000001, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "BEDOYA", "bbox": {"l": 170.12917, "t": 355.37677, "r": 190.28259, "b": 360.6523700000001, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "75.25", "bbox": {"l": 207.42059, "t": 355.37677, "r": 221.45494, "b": 360.6523700000001, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "0005", "bbox": {"l": 150.2429, "t": 366.48331, "r": 162.72173, "b": 371.75891, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "CAIN", "bbox": {"l": 170.12361, "t": 366.48331, "r": 182.49136, "b": 371.75891, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "987.65", "bbox": {"l": 204.30893, "t": 366.48331, "r": 221.45371999999998, "b": 371.75891, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "0006", "bbox": {"l": 150.2429, "t": 377.58984, "r": 162.72665, "b": 382.86545, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "BEDOYA", "bbox": {"l": 170.12732, "t": 377.58984, "r": 190.27829, "b": 382.86545, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "123.45", "bbox": {"l": 204.30092, "t": 377.58984, "r": 221.45312, "b": 382.86545, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "999.99", "bbox": {"l": 463.53989, "t": 339.33392, "r": 480.6648599999999, "b": 344.60953, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "0004", "bbox": {"l": 409.45721, "t": 350.44052, "r": 421.94098, "b": 355.71613, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "BEDOYA", "bbox": {"l": 429.34164, "t": 350.44052, "r": 449.49254999999994, "b": 355.71613, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "999.99", "bbox": {"l": 463.51517, "t": 350.44052, "r": 480.66736, "b": 355.71613, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "0006", "bbox": {"l": 409.45721, "t": 361.54706, "r": 421.94098, "b": 366.82266, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "BEDOYA", "bbox": {"l": 429.34164, "t": 361.54706, "r": 449.49254999999994, "b": 366.82266, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "999.99", "bbox": {"l": 463.51517, "t": 361.54706, "r": 480.66736, "b": 366.82266, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "INSERT", "bbox": {"l": 358.05859, "t": 344.44214, "r": 382.19501, "b": 351.49335, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "RCAC", "bbox": {"l": 303.63651, "t": 343.49350000000004, "r": 325.92178, "b": 352.27744, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "SELECT", "bbox": {"l": 244.12399, "t": 345.18253, "r": 267.87735, "b": 352.23373, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "0007", "bbox": {"l": 150.2429, "t": 388.69644, "r": 162.72418, "b": 393.97205, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "CAIN", "bbox": {"l": 170.12546, "t": 388.69644, "r": 182.49568, "b": 393.97205, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "1.00", "bbox": {"l": 210.54463, "t": 388.69644, "r": 221.45248, "b": 393.97205, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "bbox": {"l": 235.08450000000002, "t": 383.49487, "r": 474.7415199999999, "b": 394.04608, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 376.070556640625, "t": 754.9903564453125, "r": 523.62878, "b": 764.04638671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9512802362442017, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.6676635742188, "t": 754.3189697265625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9165906310081482, "cells": [{"id": 1, "text": "89", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 136.09054565429688, "t": 70.63800048828125, "r": 547.29004, "b": 141.22569274902344, "coord_origin": "TOPLEFT"}, "confidence": 0.9863300919532776, "cells": [{"id": 2, "text": "For example, given a \u201csource\u201d table with a row permission defined as ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 443.44409, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "NAME <> 'CAIN'", "bbox": {"l": 443.39925999999997, "t": 71.65845000000002, "r": 513.35828, "b": 80.43322999999998, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " and a ", "bbox": {"l": 513.41907, "t": 71.50903000000005, "r": 544.08289, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "column mask that is defined to project the value 999.99 for AMOUNT, the ", "bbox": {"l": 136.79956, "t": 83.50885000000017, "r": 462.2626, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "SELECT", "bbox": {"l": 462.23958999999996, "t": 83.65826000000004, "r": 492.23911000000004, "b": 92.48284999999998, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " statement ", "bbox": {"l": 492.23911000000004, "t": 83.50885000000017, "r": 541.67755, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "produces a result set that has the RCAC rules applied. This reduced and modified result set is ", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 547.29004, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "inserted into the \u201ctarget\u201d table even though the query is defined as returning all rows and all ", "bbox": {"l": 136.79959, "t": 107.50847999999996, "r": 542.46948, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "columns. Instead of seven rows that are selected from the source, only three rows are ", "bbox": {"l": 136.79959, "t": 119.50829999999996, "r": 517.87115, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "returned and placed into the target, as shown in Figure 6-4.", "bbox": {"l": 136.79959, "t": 131.50811999999996, "r": 399.19583, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.06468200683594, "t": 407.373046875, "r": 377.7413635253906, "b": 416.83404541015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9107280969619751, "cells": [{"id": 12, "text": "Figure 6-4 RCAC effects on data movement from SOURCE", "bbox": {"l": 136.8, "t": 407.89798, "r": 377.21973, "b": 416.22299, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 64.16183471679688, "t": 435.82305908203125, "r": 401.65768, "b": 449.0105895996094, "coord_origin": "TOPLEFT"}, "confidence": 0.9636408090591431, "cells": [{"id": 13, "text": "6.2.2", "bbox": {"l": 64.800003, "t": 436.73474000000004, "r": 93.918915, "b": 448.72272, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Effects when RCAC is defined on the target table", "bbox": {"l": 97.5588, "t": 436.73474000000004, "r": 401.65768, "b": 448.72272, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.28038024902344, "t": 462.0472412109375, "r": 536.16815, "b": 484.10153, "coord_origin": "TOPLEFT"}, "confidence": 0.9741792678833008, "cells": [{"id": 15, "text": "Example 6-2 shows a simple example that illustrates the effect of RCAC as defined on the ", "bbox": {"l": 136.8, "t": 462.88873, "r": 536.16815, "b": 472.10172, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "target table.", "bbox": {"l": 136.80002, "t": 474.88855, "r": 189.17468, "b": 484.10153, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "caption", "bbox": {"l": 136.6165771484375, "t": 495.8085632324219, "r": 331.8912658691406, "b": 505.41259765625, "coord_origin": "TOPLEFT"}, "confidence": 0.6991708874702454, "cells": [{"id": 17, "text": "Example 6-2 INSERT INTO TARGET statement", "bbox": {"l": 136.8, "t": 496.8779, "r": 330.92816, "b": 505.20291, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 136.8, "t": 513.3344116210938, "r": 346.67709, "b": 522.9288940429688, "coord_origin": "TOPLEFT"}, "confidence": 0.6854607462882996, "cells": [{"id": 18, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "bbox": {"l": 136.8, "t": 514.03799, "r": 346.67709, "b": 522.81277, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 135.99375915527344, "t": 155.52529907226562, "r": 491.57470703125, "b": 403.7139892578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9803420901298523, "cells": [{"id": 19, "text": "RCAC Effects on Data Movement", "bbox": {"l": 206.3309, "t": 162.62329, "r": 422.9632, "b": 176.68286, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "RCAC Rule Text", "bbox": {"l": 274.85211, "t": 205.28314, "r": 362.21695, "b": 217.60175000000004, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Source", "bbox": {"l": 154.65469, "t": 230.24994000000004, "r": 200.11852, "b": 244.30951000000005, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Table", "bbox": {"l": 159.80653, "t": 249.99414000000002, "r": 193.6824, "b": 264.05371, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Target", "bbox": {"l": 431.29999, "t": 230.24994000000004, "r": 471.35211, "b": 244.30951000000005, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Table", "bbox": {"l": 434.38485999999995, "t": 249.99414000000002, "r": 468.26074, "b": 264.05371, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Permission: WHERE NAME <> \u0091CAIN\u0092", "bbox": {"l": 238.9718, "t": 233.84717, "r": 390.40936, "b": 242.63109999999995, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Mask: AMOUNT", "bbox": {"l": 238.9718, "t": 258.62097000000006, "r": 306.32385, "b": 267.40491, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "GLYPH", "bbox": {"l": 308.66531, "t": 258.56964000000005, "r": 318.72308, "b": 267.81586000000004, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "999 99", "bbox": {"l": 321.09851, "t": 258.62097000000006, "r": 349.76877, "b": 267.40491, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Mask: AMOUNT ", "bbox": {"l": 238.9718, "t": 258.62097000000006, "r": 308.6116, "b": 267.40491, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "999.99", "bbox": {"l": 321.09851, "t": 258.62097000000006, "r": 349.7634, "b": 267.40491, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "PKey", "bbox": {"l": 149.4408, "t": 310.95052999999996, "r": 161.93875, "b": 316.23233, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Name", "bbox": {"l": 173.33221, "t": 310.95052999999996, "r": 188.56422, "b": 316.23233, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Amount", "bbox": {"l": 199.92807, "t": 310.95052999999996, "r": 220.69669, "b": 316.23233, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "0001", "bbox": {"l": 150.24294, "t": 322.05707, "r": 162.72176, "b": 327.33267000000006, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "CAIN", "bbox": {"l": 170.12364, "t": 322.05707, "r": 182.49139, "b": 327.33267000000006, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "10.00", "bbox": {"l": 207.42496, "t": 322.05707, "r": 221.45003999999997, "b": 327.33267000000006, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "0002", "bbox": {"l": 150.24294, "t": 333.16360000000003, "r": 162.72916, "b": 338.43921, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "BEDOYA", "bbox": {"l": 170.1292, "t": 333.16360000000003, "r": 190.28262, "b": 338.43921, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "25.50", "bbox": {"l": 207.42062, "t": 333.16360000000003, "r": 221.45497, "b": 338.43921, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "PKey", "bbox": {"l": 408.655, "t": 328.22742000000005, "r": 421.15295, "b": 333.5092200000001, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Name", "bbox": {"l": 432.54642, "t": 328.22742000000005, "r": 447.77841, "b": 333.5092200000001, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Amount", "bbox": {"l": 459.14224, "t": 328.22742000000005, "r": 479.91085999999996, "b": 333.5092200000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "0002", "bbox": {"l": 409.45721, "t": 339.33392, "r": 421.92615, "b": 344.60953, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "BEDOYA", "bbox": {"l": 429.3255899999999, "t": 339.33392, "r": 449.5209699999999, "b": 344.60953, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "999 99", "bbox": {"l": 463.53989, "t": 339.33392, "r": 480.66864, "b": 344.60953, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "0003", "bbox": {"l": 150.2429, "t": 344.27022999999997, "r": 162.72173, "b": 349.54583999999994, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "CAIN", "bbox": {"l": 170.12361, "t": 344.27022999999997, "r": 182.49136, "b": 349.54583999999994, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "333.00", "bbox": {"l": 204.30893, "t": 344.27022999999997, "r": 221.45371999999998, "b": 349.54583999999994, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "0004", "bbox": {"l": 150.2429, "t": 355.37677, "r": 162.72913, "b": 360.6523700000001, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "BEDOYA", "bbox": {"l": 170.12917, "t": 355.37677, "r": 190.28259, "b": 360.6523700000001, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "75.25", "bbox": {"l": 207.42059, "t": 355.37677, "r": 221.45494, "b": 360.6523700000001, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "0005", "bbox": {"l": 150.2429, "t": 366.48331, "r": 162.72173, "b": 371.75891, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "CAIN", "bbox": {"l": 170.12361, "t": 366.48331, "r": 182.49136, "b": 371.75891, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "987.65", "bbox": {"l": 204.30893, "t": 366.48331, "r": 221.45371999999998, "b": 371.75891, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "0006", "bbox": {"l": 150.2429, "t": 377.58984, "r": 162.72665, "b": 382.86545, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "BEDOYA", "bbox": {"l": 170.12732, "t": 377.58984, "r": 190.27829, "b": 382.86545, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "123.45", "bbox": {"l": 204.30092, "t": 377.58984, "r": 221.45312, "b": 382.86545, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "999.99", "bbox": {"l": 463.53989, "t": 339.33392, "r": 480.6648599999999, "b": 344.60953, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "0004", "bbox": {"l": 409.45721, "t": 350.44052, "r": 421.94098, "b": 355.71613, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "BEDOYA", "bbox": {"l": 429.34164, "t": 350.44052, "r": 449.49254999999994, "b": 355.71613, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "999.99", "bbox": {"l": 463.51517, "t": 350.44052, "r": 480.66736, "b": 355.71613, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "0006", "bbox": {"l": 409.45721, "t": 361.54706, "r": 421.94098, "b": 366.82266, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "BEDOYA", "bbox": {"l": 429.34164, "t": 361.54706, "r": 449.49254999999994, "b": 366.82266, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "999.99", "bbox": {"l": 463.51517, "t": 361.54706, "r": 480.66736, "b": 366.82266, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "INSERT", "bbox": {"l": 358.05859, "t": 344.44214, "r": 382.19501, "b": 351.49335, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "RCAC", "bbox": {"l": 303.63651, "t": 343.49350000000004, "r": 325.92178, "b": 352.27744, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "SELECT", "bbox": {"l": 244.12399, "t": 345.18253, "r": 267.87735, "b": 352.23373, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "0007", "bbox": {"l": 150.2429, "t": 388.69644, "r": 162.72418, "b": 393.97205, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "CAIN", "bbox": {"l": 170.12546, "t": 388.69644, "r": 182.49568, "b": 393.97205, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "1.00", "bbox": {"l": 210.54463, "t": 388.69644, "r": 221.45248, "b": 393.97205, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "bbox": {"l": 235.08450000000002, "t": 383.49487, "r": 474.7415199999999, "b": 394.04608, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 104, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 376.070556640625, "t": 754.9903564453125, "r": 523.62878, "b": 764.04638671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9512802362442017, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 104, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6676635742188, "t": 754.3189697265625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9165906310081482, "cells": [{"id": 1, "text": "89", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "89"}, {"label": "text", "id": 2, "page_no": 104, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.09054565429688, "t": 70.63800048828125, "r": 547.29004, "b": 141.22569274902344, "coord_origin": "TOPLEFT"}, "confidence": 0.9863300919532776, "cells": [{"id": 2, "text": "For example, given a \u201csource\u201d table with a row permission defined as ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 443.44409, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "NAME <> 'CAIN'", "bbox": {"l": 443.39925999999997, "t": 71.65845000000002, "r": 513.35828, "b": 80.43322999999998, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " and a ", "bbox": {"l": 513.41907, "t": 71.50903000000005, "r": 544.08289, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "column mask that is defined to project the value 999.99 for AMOUNT, the ", "bbox": {"l": 136.79956, "t": 83.50885000000017, "r": 462.2626, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "SELECT", "bbox": {"l": 462.23958999999996, "t": 83.65826000000004, "r": 492.23911000000004, "b": 92.48284999999998, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " statement ", "bbox": {"l": 492.23911000000004, "t": 83.50885000000017, "r": 541.67755, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "produces a result set that has the RCAC rules applied. This reduced and modified result set is ", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 547.29004, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "inserted into the \u201ctarget\u201d table even though the query is defined as returning all rows and all ", "bbox": {"l": 136.79959, "t": 107.50847999999996, "r": 542.46948, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "columns. Instead of seven rows that are selected from the source, only three rows are ", "bbox": {"l": 136.79959, "t": 119.50829999999996, "r": 517.87115, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "returned and placed into the target, as shown in Figure 6-4.", "bbox": {"l": 136.79959, "t": 131.50811999999996, "r": 399.19583, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "For example, given a \u201csource\u201d table with a row permission defined as NAME <> 'CAIN' and a column mask that is defined to project the value 999.99 for AMOUNT, the SELECT statement produces a result set that has the RCAC rules applied. This reduced and modified result set is inserted into the \u201ctarget\u201d table even though the query is defined as returning all rows and all columns. Instead of seven rows that are selected from the source, only three rows are returned and placed into the target, as shown in Figure 6-4."}, {"label": "caption", "id": 3, "page_no": 104, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.06468200683594, "t": 407.373046875, "r": 377.7413635253906, "b": 416.83404541015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9107280969619751, "cells": [{"id": 12, "text": "Figure 6-4 RCAC effects on data movement from SOURCE", "bbox": {"l": 136.8, "t": 407.89798, "r": 377.21973, "b": 416.22299, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-4 RCAC effects on data movement from SOURCE"}, {"label": "section_header", "id": 4, "page_no": 104, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.16183471679688, "t": 435.82305908203125, "r": 401.65768, "b": 449.0105895996094, "coord_origin": "TOPLEFT"}, "confidence": 0.9636408090591431, "cells": [{"id": 13, "text": "6.2.2", "bbox": {"l": 64.800003, "t": 436.73474000000004, "r": 93.918915, "b": 448.72272, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Effects when RCAC is defined on the target table", "bbox": {"l": 97.5588, "t": 436.73474000000004, "r": 401.65768, "b": 448.72272, "coord_origin": "TOPLEFT"}}]}, "text": "6.2.2 Effects when RCAC is defined on the target table"}, {"label": "text", "id": 5, "page_no": 104, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.28038024902344, "t": 462.0472412109375, "r": 536.16815, "b": 484.10153, "coord_origin": "TOPLEFT"}, "confidence": 0.9741792678833008, "cells": [{"id": 15, "text": "Example 6-2 shows a simple example that illustrates the effect of RCAC as defined on the ", "bbox": {"l": 136.8, "t": 462.88873, "r": 536.16815, "b": 472.10172, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "target table.", "bbox": {"l": 136.80002, "t": 474.88855, "r": 189.17468, "b": 484.10153, "coord_origin": "TOPLEFT"}}]}, "text": "Example 6-2 shows a simple example that illustrates the effect of RCAC as defined on the target table."}, {"label": "caption", "id": 6, "page_no": 104, "cluster": {"id": 6, "label": "caption", "bbox": {"l": 136.6165771484375, "t": 495.8085632324219, "r": 331.8912658691406, "b": 505.41259765625, "coord_origin": "TOPLEFT"}, "confidence": 0.6991708874702454, "cells": [{"id": 17, "text": "Example 6-2 INSERT INTO TARGET statement", "bbox": {"l": 136.8, "t": 496.8779, "r": 330.92816, "b": 505.20291, "coord_origin": "TOPLEFT"}}]}, "text": "Example 6-2 INSERT INTO TARGET statement"}, {"label": "text", "id": 7, "page_no": 104, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.8, "t": 513.3344116210938, "r": 346.67709, "b": 522.9288940429688, "coord_origin": "TOPLEFT"}, "confidence": 0.6854607462882996, "cells": [{"id": 18, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "bbox": {"l": 136.8, "t": 514.03799, "r": 346.67709, "b": 522.81277, "coord_origin": "TOPLEFT"}}]}, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);"}, {"label": "picture", "id": 8, "page_no": 104, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 135.99375915527344, "t": 155.52529907226562, "r": 491.57470703125, "b": 403.7139892578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9803420901298523, "cells": [{"id": 19, "text": "RCAC Effects on Data Movement", "bbox": {"l": 206.3309, "t": 162.62329, "r": 422.9632, "b": 176.68286, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "RCAC Rule Text", "bbox": {"l": 274.85211, "t": 205.28314, "r": 362.21695, "b": 217.60175000000004, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Source", "bbox": {"l": 154.65469, "t": 230.24994000000004, "r": 200.11852, "b": 244.30951000000005, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Table", "bbox": {"l": 159.80653, "t": 249.99414000000002, "r": 193.6824, "b": 264.05371, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Target", "bbox": {"l": 431.29999, "t": 230.24994000000004, "r": 471.35211, "b": 244.30951000000005, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Table", "bbox": {"l": 434.38485999999995, "t": 249.99414000000002, "r": 468.26074, "b": 264.05371, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Permission: WHERE NAME <> \u0091CAIN\u0092", "bbox": {"l": 238.9718, "t": 233.84717, "r": 390.40936, "b": 242.63109999999995, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Mask: AMOUNT", "bbox": {"l": 238.9718, "t": 258.62097000000006, "r": 306.32385, "b": 267.40491, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "GLYPH", "bbox": {"l": 308.66531, "t": 258.56964000000005, "r": 318.72308, "b": 267.81586000000004, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "999 99", "bbox": {"l": 321.09851, "t": 258.62097000000006, "r": 349.76877, "b": 267.40491, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Mask: AMOUNT ", "bbox": {"l": 238.9718, "t": 258.62097000000006, "r": 308.6116, "b": 267.40491, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "999.99", "bbox": {"l": 321.09851, "t": 258.62097000000006, "r": 349.7634, "b": 267.40491, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "PKey", "bbox": {"l": 149.4408, "t": 310.95052999999996, "r": 161.93875, "b": 316.23233, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Name", "bbox": {"l": 173.33221, "t": 310.95052999999996, "r": 188.56422, "b": 316.23233, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Amount", "bbox": {"l": 199.92807, "t": 310.95052999999996, "r": 220.69669, "b": 316.23233, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "0001", "bbox": {"l": 150.24294, "t": 322.05707, "r": 162.72176, "b": 327.33267000000006, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "CAIN", "bbox": {"l": 170.12364, "t": 322.05707, "r": 182.49139, "b": 327.33267000000006, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "10.00", "bbox": {"l": 207.42496, "t": 322.05707, "r": 221.45003999999997, "b": 327.33267000000006, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "0002", "bbox": {"l": 150.24294, "t": 333.16360000000003, "r": 162.72916, "b": 338.43921, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "BEDOYA", "bbox": {"l": 170.1292, "t": 333.16360000000003, "r": 190.28262, "b": 338.43921, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "25.50", "bbox": {"l": 207.42062, "t": 333.16360000000003, "r": 221.45497, "b": 338.43921, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "PKey", "bbox": {"l": 408.655, "t": 328.22742000000005, "r": 421.15295, "b": 333.5092200000001, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Name", "bbox": {"l": 432.54642, "t": 328.22742000000005, "r": 447.77841, "b": 333.5092200000001, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Amount", "bbox": {"l": 459.14224, "t": 328.22742000000005, "r": 479.91085999999996, "b": 333.5092200000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "0002", "bbox": {"l": 409.45721, "t": 339.33392, "r": 421.92615, "b": 344.60953, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "BEDOYA", "bbox": {"l": 429.3255899999999, "t": 339.33392, "r": 449.5209699999999, "b": 344.60953, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "999 99", "bbox": {"l": 463.53989, "t": 339.33392, "r": 480.66864, "b": 344.60953, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "0003", "bbox": {"l": 150.2429, "t": 344.27022999999997, "r": 162.72173, "b": 349.54583999999994, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "CAIN", "bbox": {"l": 170.12361, "t": 344.27022999999997, "r": 182.49136, "b": 349.54583999999994, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "333.00", "bbox": {"l": 204.30893, "t": 344.27022999999997, "r": 221.45371999999998, "b": 349.54583999999994, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "0004", "bbox": {"l": 150.2429, "t": 355.37677, "r": 162.72913, "b": 360.6523700000001, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "BEDOYA", "bbox": {"l": 170.12917, "t": 355.37677, "r": 190.28259, "b": 360.6523700000001, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "75.25", "bbox": {"l": 207.42059, "t": 355.37677, "r": 221.45494, "b": 360.6523700000001, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "0005", "bbox": {"l": 150.2429, "t": 366.48331, "r": 162.72173, "b": 371.75891, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "CAIN", "bbox": {"l": 170.12361, "t": 366.48331, "r": 182.49136, "b": 371.75891, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "987.65", "bbox": {"l": 204.30893, "t": 366.48331, "r": 221.45371999999998, "b": 371.75891, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "0006", "bbox": {"l": 150.2429, "t": 377.58984, "r": 162.72665, "b": 382.86545, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "BEDOYA", "bbox": {"l": 170.12732, "t": 377.58984, "r": 190.27829, "b": 382.86545, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "123.45", "bbox": {"l": 204.30092, "t": 377.58984, "r": 221.45312, "b": 382.86545, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "999.99", "bbox": {"l": 463.53989, "t": 339.33392, "r": 480.6648599999999, "b": 344.60953, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "0004", "bbox": {"l": 409.45721, "t": 350.44052, "r": 421.94098, "b": 355.71613, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "BEDOYA", "bbox": {"l": 429.34164, "t": 350.44052, "r": 449.49254999999994, "b": 355.71613, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "999.99", "bbox": {"l": 463.51517, "t": 350.44052, "r": 480.66736, "b": 355.71613, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "0006", "bbox": {"l": 409.45721, "t": 361.54706, "r": 421.94098, "b": 366.82266, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "BEDOYA", "bbox": {"l": 429.34164, "t": 361.54706, "r": 449.49254999999994, "b": 366.82266, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "999.99", "bbox": {"l": 463.51517, "t": 361.54706, "r": 480.66736, "b": 366.82266, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "INSERT", "bbox": {"l": 358.05859, "t": 344.44214, "r": 382.19501, "b": 351.49335, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "RCAC", "bbox": {"l": 303.63651, "t": 343.49350000000004, "r": 325.92178, "b": 352.27744, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "SELECT", "bbox": {"l": 244.12399, "t": 345.18253, "r": 267.87735, "b": 352.23373, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "0007", "bbox": {"l": 150.2429, "t": 388.69644, "r": 162.72418, "b": 393.97205, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "CAIN", "bbox": {"l": 170.12546, "t": 388.69644, "r": 182.49568, "b": 393.97205, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "1.00", "bbox": {"l": 210.54463, "t": 388.69644, "r": 221.45248, "b": 393.97205, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "bbox": {"l": 235.08450000000002, "t": 383.49487, "r": 474.7415199999999, "b": 394.04608, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 104, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.09054565429688, "t": 70.63800048828125, "r": 547.29004, "b": 141.22569274902344, "coord_origin": "TOPLEFT"}, "confidence": 0.9863300919532776, "cells": [{"id": 2, "text": "For example, given a \u201csource\u201d table with a row permission defined as ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 443.44409, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "NAME <> 'CAIN'", "bbox": {"l": 443.39925999999997, "t": 71.65845000000002, "r": 513.35828, "b": 80.43322999999998, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " and a ", "bbox": {"l": 513.41907, "t": 71.50903000000005, "r": 544.08289, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "column mask that is defined to project the value 999.99 for AMOUNT, the ", "bbox": {"l": 136.79956, "t": 83.50885000000017, "r": 462.2626, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "SELECT", "bbox": {"l": 462.23958999999996, "t": 83.65826000000004, "r": 492.23911000000004, "b": 92.48284999999998, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " statement ", "bbox": {"l": 492.23911000000004, "t": 83.50885000000017, "r": 541.67755, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "produces a result set that has the RCAC rules applied. This reduced and modified result set is ", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 547.29004, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "inserted into the \u201ctarget\u201d table even though the query is defined as returning all rows and all ", "bbox": {"l": 136.79959, "t": 107.50847999999996, "r": 542.46948, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "columns. Instead of seven rows that are selected from the source, only three rows are ", "bbox": {"l": 136.79959, "t": 119.50829999999996, "r": 517.87115, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "returned and placed into the target, as shown in Figure 6-4.", "bbox": {"l": 136.79959, "t": 131.50811999999996, "r": 399.19583, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "For example, given a \u201csource\u201d table with a row permission defined as NAME <> 'CAIN' and a column mask that is defined to project the value 999.99 for AMOUNT, the SELECT statement produces a result set that has the RCAC rules applied. This reduced and modified result set is inserted into the \u201ctarget\u201d table even though the query is defined as returning all rows and all columns. Instead of seven rows that are selected from the source, only three rows are returned and placed into the target, as shown in Figure 6-4."}, {"label": "caption", "id": 3, "page_no": 104, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.06468200683594, "t": 407.373046875, "r": 377.7413635253906, "b": 416.83404541015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9107280969619751, "cells": [{"id": 12, "text": "Figure 6-4 RCAC effects on data movement from SOURCE", "bbox": {"l": 136.8, "t": 407.89798, "r": 377.21973, "b": 416.22299, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-4 RCAC effects on data movement from SOURCE"}, {"label": "section_header", "id": 4, "page_no": 104, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.16183471679688, "t": 435.82305908203125, "r": 401.65768, "b": 449.0105895996094, "coord_origin": "TOPLEFT"}, "confidence": 0.9636408090591431, "cells": [{"id": 13, "text": "6.2.2", "bbox": {"l": 64.800003, "t": 436.73474000000004, "r": 93.918915, "b": 448.72272, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Effects when RCAC is defined on the target table", "bbox": {"l": 97.5588, "t": 436.73474000000004, "r": 401.65768, "b": 448.72272, "coord_origin": "TOPLEFT"}}]}, "text": "6.2.2 Effects when RCAC is defined on the target table"}, {"label": "text", "id": 5, "page_no": 104, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.28038024902344, "t": 462.0472412109375, "r": 536.16815, "b": 484.10153, "coord_origin": "TOPLEFT"}, "confidence": 0.9741792678833008, "cells": [{"id": 15, "text": "Example 6-2 shows a simple example that illustrates the effect of RCAC as defined on the ", "bbox": {"l": 136.8, "t": 462.88873, "r": 536.16815, "b": 472.10172, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "target table.", "bbox": {"l": 136.80002, "t": 474.88855, "r": 189.17468, "b": 484.10153, "coord_origin": "TOPLEFT"}}]}, "text": "Example 6-2 shows a simple example that illustrates the effect of RCAC as defined on the target table."}, {"label": "caption", "id": 6, "page_no": 104, "cluster": {"id": 6, "label": "caption", "bbox": {"l": 136.6165771484375, "t": 495.8085632324219, "r": 331.8912658691406, "b": 505.41259765625, "coord_origin": "TOPLEFT"}, "confidence": 0.6991708874702454, "cells": [{"id": 17, "text": "Example 6-2 INSERT INTO TARGET statement", "bbox": {"l": 136.8, "t": 496.8779, "r": 330.92816, "b": 505.20291, "coord_origin": "TOPLEFT"}}]}, "text": "Example 6-2 INSERT INTO TARGET statement"}, {"label": "text", "id": 7, "page_no": 104, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.8, "t": 513.3344116210938, "r": 346.67709, "b": 522.9288940429688, "coord_origin": "TOPLEFT"}, "confidence": 0.6854607462882996, "cells": [{"id": 18, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "bbox": {"l": 136.8, "t": 514.03799, "r": 346.67709, "b": 522.81277, "coord_origin": "TOPLEFT"}}]}, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);"}, {"label": "picture", "id": 8, "page_no": 104, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 135.99375915527344, "t": 155.52529907226562, "r": 491.57470703125, "b": 403.7139892578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9803420901298523, "cells": [{"id": 19, "text": "RCAC Effects on Data Movement", "bbox": {"l": 206.3309, "t": 162.62329, "r": 422.9632, "b": 176.68286, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "RCAC Rule Text", "bbox": {"l": 274.85211, "t": 205.28314, "r": 362.21695, "b": 217.60175000000004, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Source", "bbox": {"l": 154.65469, "t": 230.24994000000004, "r": 200.11852, "b": 244.30951000000005, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Table", "bbox": {"l": 159.80653, "t": 249.99414000000002, "r": 193.6824, "b": 264.05371, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Target", "bbox": {"l": 431.29999, "t": 230.24994000000004, "r": 471.35211, "b": 244.30951000000005, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Table", "bbox": {"l": 434.38485999999995, "t": 249.99414000000002, "r": 468.26074, "b": 264.05371, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Permission: WHERE NAME <> \u0091CAIN\u0092", "bbox": {"l": 238.9718, "t": 233.84717, "r": 390.40936, "b": 242.63109999999995, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Mask: AMOUNT", "bbox": {"l": 238.9718, "t": 258.62097000000006, "r": 306.32385, "b": 267.40491, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "GLYPH", "bbox": {"l": 308.66531, "t": 258.56964000000005, "r": 318.72308, "b": 267.81586000000004, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "999 99", "bbox": {"l": 321.09851, "t": 258.62097000000006, "r": 349.76877, "b": 267.40491, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Mask: AMOUNT ", "bbox": {"l": 238.9718, "t": 258.62097000000006, "r": 308.6116, "b": 267.40491, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "999.99", "bbox": {"l": 321.09851, "t": 258.62097000000006, "r": 349.7634, "b": 267.40491, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "PKey", "bbox": {"l": 149.4408, "t": 310.95052999999996, "r": 161.93875, "b": 316.23233, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Name", "bbox": {"l": 173.33221, "t": 310.95052999999996, "r": 188.56422, "b": 316.23233, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Amount", "bbox": {"l": 199.92807, "t": 310.95052999999996, "r": 220.69669, "b": 316.23233, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "0001", "bbox": {"l": 150.24294, "t": 322.05707, "r": 162.72176, "b": 327.33267000000006, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "CAIN", "bbox": {"l": 170.12364, "t": 322.05707, "r": 182.49139, "b": 327.33267000000006, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "10.00", "bbox": {"l": 207.42496, "t": 322.05707, "r": 221.45003999999997, "b": 327.33267000000006, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "0002", "bbox": {"l": 150.24294, "t": 333.16360000000003, "r": 162.72916, "b": 338.43921, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "BEDOYA", "bbox": {"l": 170.1292, "t": 333.16360000000003, "r": 190.28262, "b": 338.43921, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "25.50", "bbox": {"l": 207.42062, "t": 333.16360000000003, "r": 221.45497, "b": 338.43921, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "PKey", "bbox": {"l": 408.655, "t": 328.22742000000005, "r": 421.15295, "b": 333.5092200000001, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Name", "bbox": {"l": 432.54642, "t": 328.22742000000005, "r": 447.77841, "b": 333.5092200000001, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Amount", "bbox": {"l": 459.14224, "t": 328.22742000000005, "r": 479.91085999999996, "b": 333.5092200000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "0002", "bbox": {"l": 409.45721, "t": 339.33392, "r": 421.92615, "b": 344.60953, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "BEDOYA", "bbox": {"l": 429.3255899999999, "t": 339.33392, "r": 449.5209699999999, "b": 344.60953, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "999 99", "bbox": {"l": 463.53989, "t": 339.33392, "r": 480.66864, "b": 344.60953, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "0003", "bbox": {"l": 150.2429, "t": 344.27022999999997, "r": 162.72173, "b": 349.54583999999994, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "CAIN", "bbox": {"l": 170.12361, "t": 344.27022999999997, "r": 182.49136, "b": 349.54583999999994, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "333.00", "bbox": {"l": 204.30893, "t": 344.27022999999997, "r": 221.45371999999998, "b": 349.54583999999994, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "0004", "bbox": {"l": 150.2429, "t": 355.37677, "r": 162.72913, "b": 360.6523700000001, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "BEDOYA", "bbox": {"l": 170.12917, "t": 355.37677, "r": 190.28259, "b": 360.6523700000001, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "75.25", "bbox": {"l": 207.42059, "t": 355.37677, "r": 221.45494, "b": 360.6523700000001, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "0005", "bbox": {"l": 150.2429, "t": 366.48331, "r": 162.72173, "b": 371.75891, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "CAIN", "bbox": {"l": 170.12361, "t": 366.48331, "r": 182.49136, "b": 371.75891, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "987.65", "bbox": {"l": 204.30893, "t": 366.48331, "r": 221.45371999999998, "b": 371.75891, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "0006", "bbox": {"l": 150.2429, "t": 377.58984, "r": 162.72665, "b": 382.86545, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "BEDOYA", "bbox": {"l": 170.12732, "t": 377.58984, "r": 190.27829, "b": 382.86545, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "123.45", "bbox": {"l": 204.30092, "t": 377.58984, "r": 221.45312, "b": 382.86545, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "999.99", "bbox": {"l": 463.53989, "t": 339.33392, "r": 480.6648599999999, "b": 344.60953, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "0004", "bbox": {"l": 409.45721, "t": 350.44052, "r": 421.94098, "b": 355.71613, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "BEDOYA", "bbox": {"l": 429.34164, "t": 350.44052, "r": 449.49254999999994, "b": 355.71613, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "999.99", "bbox": {"l": 463.51517, "t": 350.44052, "r": 480.66736, "b": 355.71613, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "0006", "bbox": {"l": 409.45721, "t": 361.54706, "r": 421.94098, "b": 366.82266, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "BEDOYA", "bbox": {"l": 429.34164, "t": 361.54706, "r": 449.49254999999994, "b": 366.82266, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "999.99", "bbox": {"l": 463.51517, "t": 361.54706, "r": 480.66736, "b": 366.82266, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "INSERT", "bbox": {"l": 358.05859, "t": 344.44214, "r": 382.19501, "b": 351.49335, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "RCAC", "bbox": {"l": 303.63651, "t": 343.49350000000004, "r": 325.92178, "b": 352.27744, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "SELECT", "bbox": {"l": 244.12399, "t": 345.18253, "r": 267.87735, "b": 352.23373, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "0007", "bbox": {"l": 150.2429, "t": 388.69644, "r": 162.72418, "b": 393.97205, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "CAIN", "bbox": {"l": 170.12546, "t": 388.69644, "r": 182.49568, "b": 393.97205, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "1.00", "bbox": {"l": 210.54463, "t": 388.69644, "r": 221.45248, "b": 393.97205, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "bbox": {"l": 235.08450000000002, "t": 383.49487, "r": 474.7415199999999, "b": 394.04608, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 104, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 376.070556640625, "t": 754.9903564453125, "r": 523.62878, "b": 764.04638671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9512802362442017, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 104, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6676635742188, "t": 754.3189697265625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9165906310081482, "cells": [{"id": 1, "text": "89", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "89"}]}}, {"page_no": 105, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "90 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Given a \u201ctarget\u201d table with a row permission defined as ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 380.89371, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "NAME <> 'CAIN'", "bbox": {"l": 380.87976, "t": 71.65808000000015, "r": 450.7790499999999, "b": 80.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " and a column mask ", "bbox": {"l": 450.83978, "t": 71.50867000000005, "r": 543.01062, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "that is defined to project the value 999.99 for AMOUNT, the ", "bbox": {"l": 136.79999, "t": 83.50847999999996, "r": 400.68625, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "SELECT", "bbox": {"l": 400.62048, "t": 83.65790000000004, "r": 430.56023999999996, "b": 92.48248000000001, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " statement produces a ", "bbox": {"l": 430.56023999999996, "t": 83.50847999999996, "r": 532.24695, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "result set that represents all the rows and columns. The seven row result set is inserted into ", "bbox": {"l": 136.80002, "t": 95.50829999999996, "r": 543.31641, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "the \u201ctarget\u201d, and the RCAC row permission causes an error to be returned, as shown in ", "bbox": {"l": 136.80002, "t": 107.50811999999996, "r": 523.92529, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Figure 6-5. The source rows where ", "bbox": {"l": 136.80002, "t": 119.50792999999999, "r": 292.3653, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "NAME = 'CAIN'", "bbox": {"l": 292.32043, "t": 119.65734999999995, "r": 355.79947, "b": 128.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": " do not satisfy the target table\u2019s permission, ", "bbox": {"l": 355.80051, "t": 119.50792999999999, "r": 547.26459, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "and therefore cannot be inserted. In other words, you are inserting data that you cannot read.", "bbox": {"l": 136.80002, "t": 131.50775, "r": 547.2417, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Figure 6-5 RCAC effects on data movement on TARGET", "bbox": {"l": 136.8, "t": 414.61798, "r": 366.09122, "b": 422.94299, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "6.2.3", "bbox": {"l": 64.800003, "t": 443.45474, "r": 93.849205, "b": 455.44272, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Effects when RCAC is defined on both source and target tables", "bbox": {"l": 97.480339, "t": 443.45474, "r": 490.12787, "b": 455.44272, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Example 6-3 shows a simple example that illustrates the effect of RCAC as defined on both ", "bbox": {"l": 136.8, "t": 469.60873, "r": 541.63324, "b": 478.82172, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "the source and the target tables.", "bbox": {"l": 136.80002, "t": 481.60855, "r": 279.84653, "b": 490.82153, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Example 6-3 INSERT INTO TARGET statement", "bbox": {"l": 136.8, "t": 503.5979, "r": 330.92816, "b": 511.92291, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "bbox": {"l": 136.8, "t": 520.758, "r": 346.67709, "b": 529.53278, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Given a \u201csource\u201d table and a \u201ctarget\u201d table with a row permission defined as ", "bbox": {"l": 136.8, "t": 549.5882300000001, "r": 472.36234, "b": 558.8012200000001, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "NAME <> 'CAIN'", "bbox": {"l": 472.31952, "t": 549.73763, "r": 542.2785, "b": 558.51237, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "and a column mask that is defined to project the value 999.99 for AMOUNT, the ", "bbox": {"l": 136.79996, "t": 561.58803, "r": 490.08017000000007, "b": 570.80103, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "SELECT", "bbox": {"l": 490.02042, "t": 561.73743, "r": 520.0199, "b": 570.56198, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "statement produces a result set that has the RCAC rules applied. This reduced and modified ", "bbox": {"l": 136.80099, "t": 573.5878299999999, "r": 547.2467, "b": 582.80083, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "result set is inserted into the \u201ctarget\u201d table even though the query is defined as returning all ", "bbox": {"l": 136.80099, "t": 585.58763, "r": 539.85034, "b": 594.80063, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "rows and all columns. Instead of seven rows that are selected from the source, only three ", "bbox": {"l": 136.80099, "t": 597.58743, "r": 532.92114, "b": 606.80043, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "rows are returned.", "bbox": {"l": 136.80099, "t": 609.58723, "r": 218.03972000000002, "b": 618.80023, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "RCAC Effects on Data Movement", "bbox": {"l": 208.3886, "t": 165.44983000000002, "r": 424.4899, "b": 179.47484999999995, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "RCAC Rule Text", "bbox": {"l": 276.74149, "t": 208.00494000000003, "r": 363.89221, "b": 220.29327, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Source", "bbox": {"l": 156.83929, "t": 232.91034000000002, "r": 202.1917, "b": 246.93535999999995, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Table", "bbox": {"l": 161.97852, "t": 252.60601999999994, "r": 195.77136, "b": 266.63104, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Target", "bbox": {"l": 432.80521, "t": 232.91034000000002, "r": 472.75925, "b": 246.93535999999995, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Table", "bbox": {"l": 435.88251, "t": 252.60601999999994, "r": 469.67538, "b": 266.63104, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Permission: WHERE NAME <> \u0091CAIN\u0092", "bbox": {"l": 240.9493, "t": 236.49872000000005, "r": 392.01541, "b": 245.26104999999995, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Mask: AMOUNT", "bbox": {"l": 240.9493, "t": 261.21160999999995, "r": 308.13611, "b": 269.97393999999997, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "GLYPH", "bbox": {"l": 310.47171, "t": 261.1604, "r": 320.50479, "b": 270.38385000000005, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "999 99", "bbox": {"l": 322.8743, "t": 261.21160999999995, "r": 351.47424, "b": 269.97393999999997, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Mask: AMOUNT ", "bbox": {"l": 240.9493, "t": 261.21160999999995, "r": 310.41809, "b": 269.97393999999997, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "999.99", "bbox": {"l": 322.8743, "t": 261.21160999999995, "r": 351.46893, "b": 269.97393999999997, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "PKey", "bbox": {"l": 151.6382, "t": 313.41269000000005, "r": 164.10535, "b": 318.68152, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Name", "bbox": {"l": 175.47073, "t": 313.41269000000005, "r": 190.66521, "b": 318.68152, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Amount", "bbox": {"l": 202.00105, "t": 313.41269000000005, "r": 222.71851000000004, "b": 318.68152, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "0001", "bbox": {"l": 152.43835, "t": 324.49203, "r": 164.88643, "b": 329.75473, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "CAIN", "bbox": {"l": 172.27008, "t": 324.49203, "r": 184.60736, "b": 329.75473, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "10.00", "bbox": {"l": 209.47951, "t": 324.49203, "r": 223.47005, "b": 329.75473, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "0002", "bbox": {"l": 152.43835, "t": 335.57138, "r": 164.89381, "b": 340.83408, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "BEDOYA", "bbox": {"l": 172.27562, "t": 335.57138, "r": 192.37941, "b": 340.83408, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "25.50", "bbox": {"l": 209.4752, "t": 335.57138, "r": 223.47498, "b": 340.83408, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "PKey", "bbox": {"l": 410.21579, "t": 330.64709, "r": 422.68292, "b": 335.91592, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Name", "bbox": {"l": 434.04831, "t": 330.64709, "r": 449.24280000000005, "b": 335.91592, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Amount", "bbox": {"l": 460.57863999999995, "t": 330.64709, "r": 481.29610999999994, "b": 335.91592, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ERR", "bbox": {"l": 435.85199000000006, "t": 336.77774, "r": 450.38702, "b": 344.67169, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "OR", "bbox": {"l": 450.29745, "t": 336.77774, "r": 461.42471000000006, "b": 344.67169, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": ":", "bbox": {"l": 461.42661000000004, "t": 336.77774, "r": 463.9009699999999, "b": 344.67169, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "0003", "bbox": {"l": 152.43829, "t": 346.65057, "r": 164.88637, "b": 351.91327, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "CAIN", "bbox": {"l": 172.27002, "t": 346.65057, "r": 184.6073, "b": 351.91327, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "333.00", "bbox": {"l": 206.37112, "t": 346.65057, "r": 223.47367999999997, "b": 351.91327, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "0004", "bbox": {"l": 152.43829, "t": 357.72992, "r": 164.89375, "b": 362.99261000000007, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "BEDOYA", "bbox": {"l": 172.27556, "t": 357.72992, "r": 192.37935, "b": 362.99261000000007, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "75.25", "bbox": {"l": 209.47514, "t": 357.72992, "r": 223.47491, "b": 362.99261000000007, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "0005", "bbox": {"l": 152.43829, "t": 368.80927, "r": 164.88637, "b": 374.07196000000005, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "CAIN", "bbox": {"l": 172.27002, "t": 368.80927, "r": 184.6073, "b": 374.07196000000005, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "987.65", "bbox": {"l": 206.37112, "t": 368.80927, "r": 223.47367999999997, "b": 374.07196000000005, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "0006", "bbox": {"l": 152.43829, "t": 379.88861, "r": 164.8913, "b": 385.15131, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "BEDOYA", "bbox": {"l": 172.27373, "t": 379.88861, "r": 192.37505, "b": 385.15131, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "123.45", "bbox": {"l": 206.36313, "t": 379.88861, "r": 223.47307, "b": 385.15131, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "INSERT", "bbox": {"l": 359.74359, "t": 346.82211, "r": 383.82053, "b": 353.85596, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "RCAC", "bbox": {"l": 305.4552, "t": 345.87585, "r": 327.68582, "b": 354.63812, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "SELECT", "bbox": {"l": 246.0889, "t": 347.5607, "r": 269.78372, "b": 354.59454, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "INSER", "bbox": {"l": 415.60159, "t": 347.85703, "r": 437.65851000000004, "b": 355.75098, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "T or ", "bbox": {"l": 437.56802, "t": 347.85703, "r": 454.15735, "b": 355.75098, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "UPD", "bbox": {"l": 454.28015, "t": 347.85703, "r": 470.66449000000006, "b": 355.75098, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "ATE", "bbox": {"l": 470.55276, "t": 347.85703, "r": 484.20978, "b": 355.75098, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "does", "bbox": {"l": 420.52539, "t": 358.93628, "r": 434.21057, "b": 366.8302299999999, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "not", "bbox": {"l": 445.9407, "t": 358.93628, "r": 453.2720299999999, "b": 366.8302299999999, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "sa", "bbox": {"l": 453.2720299999999, "t": 358.93628, "r": 463.5359199999999, "b": 366.8302299999999, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "tisfy", "bbox": {"l": 463.4556, "t": 358.93628, "r": 479.23618000000005, "b": 366.8302299999999, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "row permissions.", "bbox": {"l": 418.00211, "t": 370.01553, "r": 481.72345, "b": 377.90948, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "0007", "bbox": {"l": 152.43829, "t": 390.96759, "r": 164.88882, "b": 396.23029, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "CAIN", "bbox": {"l": 172.27187, "t": 390.96759, "r": 184.6116, "b": 396.23029, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "1.00", "bbox": {"l": 212.59146, "t": 390.96759, "r": 223.47244, "b": 396.23029, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "bbox": {"l": 237.07159, "t": 385.77884, "r": 476.14007999999995, "b": 396.30414, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.0672378540039, "t": 754.3772583007812, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9143837690353394, "cells": [{"id": 0, "text": "90 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.31163787841797, "t": 754.7432861328125, "r": 334.42142, "b": 763.88671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9527189135551453, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.84625244140625, "t": 70.61248779296875, "r": 547.26459, "b": 141.04803466796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9829095602035522, "cells": [{"id": 2, "text": "Given a \u201ctarget\u201d table with a row permission defined as ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 380.89371, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "NAME <> 'CAIN'", "bbox": {"l": 380.87976, "t": 71.65808000000015, "r": 450.7790499999999, "b": 80.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " and a column mask ", "bbox": {"l": 450.83978, "t": 71.50867000000005, "r": 543.01062, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "that is defined to project the value 999.99 for AMOUNT, the ", "bbox": {"l": 136.79999, "t": 83.50847999999996, "r": 400.68625, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "SELECT", "bbox": {"l": 400.62048, "t": 83.65790000000004, "r": 430.56023999999996, "b": 92.48248000000001, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " statement produces a ", "bbox": {"l": 430.56023999999996, "t": 83.50847999999996, "r": 532.24695, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "result set that represents all the rows and columns. The seven row result set is inserted into ", "bbox": {"l": 136.80002, "t": 95.50829999999996, "r": 543.31641, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "the \u201ctarget\u201d, and the RCAC row permission causes an error to be returned, as shown in ", "bbox": {"l": 136.80002, "t": 107.50811999999996, "r": 523.92529, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Figure 6-5. The source rows where ", "bbox": {"l": 136.80002, "t": 119.50792999999999, "r": 292.3653, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "NAME = 'CAIN'", "bbox": {"l": 292.32043, "t": 119.65734999999995, "r": 355.79947, "b": 128.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": " do not satisfy the target table\u2019s permission, ", "bbox": {"l": 355.80051, "t": 119.50792999999999, "r": 547.26459, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "and therefore cannot be inserted. In other words, you are inserting data that you cannot read.", "bbox": {"l": 136.80002, "t": 131.50775, "r": 547.2417, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.212646484375, "t": 414.0885009765625, "r": 367.2479248046875, "b": 423.6403503417969, "coord_origin": "TOPLEFT"}, "confidence": 0.9330379962921143, "cells": [{"id": 14, "text": "Figure 6-5 RCAC effects on data movement on TARGET", "bbox": {"l": 136.8, "t": 414.61798, "r": 366.09122, "b": 422.94299, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 64.19894409179688, "t": 442.4447326660156, "r": 490.12787, "b": 455.5812683105469, "coord_origin": "TOPLEFT"}, "confidence": 0.958083987236023, "cells": [{"id": 15, "text": "6.2.3", "bbox": {"l": 64.800003, "t": 443.45474, "r": 93.849205, "b": 455.44272, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Effects when RCAC is defined on both source and target tables", "bbox": {"l": 97.480339, "t": 443.45474, "r": 490.12787, "b": 455.44272, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.13351440429688, "t": 468.7479248046875, "r": 541.63324, "b": 490.82153, "coord_origin": "TOPLEFT"}, "confidence": 0.971232533454895, "cells": [{"id": 17, "text": "Example 6-3 shows a simple example that illustrates the effect of RCAC as defined on both ", "bbox": {"l": 136.8, "t": 469.60873, "r": 541.63324, "b": 478.82172, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "the source and the target tables.", "bbox": {"l": 136.80002, "t": 481.60855, "r": 279.84653, "b": 490.82153, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "caption", "bbox": {"l": 136.3226776123047, "t": 502.52581787109375, "r": 332.0595703125, "b": 512.0237426757812, "coord_origin": "TOPLEFT"}, "confidence": 0.7299772500991821, "cells": [{"id": 19, "text": "Example 6-3 INSERT INTO TARGET statement", "bbox": {"l": 136.8, "t": 503.5979, "r": 330.92816, "b": 511.92291, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 136.8, "t": 520.758, "r": 346.67709, "b": 529.53278, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 20, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "bbox": {"l": 136.8, "t": 520.758, "r": 346.67709, "b": 529.53278, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 135.995849609375, "t": 548.8137817382812, "r": 547.2467, "b": 618.80023, "coord_origin": "TOPLEFT"}, "confidence": 0.9855359196662903, "cells": [{"id": 21, "text": "Given a \u201csource\u201d table and a \u201ctarget\u201d table with a row permission defined as ", "bbox": {"l": 136.8, "t": 549.5882300000001, "r": 472.36234, "b": 558.8012200000001, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "NAME <> 'CAIN'", "bbox": {"l": 472.31952, "t": 549.73763, "r": 542.2785, "b": 558.51237, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "and a column mask that is defined to project the value 999.99 for AMOUNT, the ", "bbox": {"l": 136.79996, "t": 561.58803, "r": 490.08017000000007, "b": 570.80103, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "SELECT", "bbox": {"l": 490.02042, "t": 561.73743, "r": 520.0199, "b": 570.56198, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "statement produces a result set that has the RCAC rules applied. This reduced and modified ", "bbox": {"l": 136.80099, "t": 573.5878299999999, "r": 547.2467, "b": 582.80083, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "result set is inserted into the \u201ctarget\u201d table even though the query is defined as returning all ", "bbox": {"l": 136.80099, "t": 585.58763, "r": 539.85034, "b": 594.80063, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "rows and all columns. Instead of seven rows that are selected from the source, only three ", "bbox": {"l": 136.80099, "t": 597.58743, "r": 532.92114, "b": 606.80043, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "rows are returned.", "bbox": {"l": 136.80099, "t": 609.58723, "r": 218.03972000000002, "b": 618.80023, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "picture", "bbox": {"l": 136.0791015625, "t": 155.57220458984375, "r": 499.302978515625, "b": 410.439208984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9825493097305298, "cells": [{"id": 29, "text": "RCAC Effects on Data Movement", "bbox": {"l": 208.3886, "t": 165.44983000000002, "r": 424.4899, "b": 179.47484999999995, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "RCAC Rule Text", "bbox": {"l": 276.74149, "t": 208.00494000000003, "r": 363.89221, "b": 220.29327, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Source", "bbox": {"l": 156.83929, "t": 232.91034000000002, "r": 202.1917, "b": 246.93535999999995, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Table", "bbox": {"l": 161.97852, "t": 252.60601999999994, "r": 195.77136, "b": 266.63104, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Target", "bbox": {"l": 432.80521, "t": 232.91034000000002, "r": 472.75925, "b": 246.93535999999995, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Table", "bbox": {"l": 435.88251, "t": 252.60601999999994, "r": 469.67538, "b": 266.63104, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Permission: WHERE NAME <> \u0091CAIN\u0092", "bbox": {"l": 240.9493, "t": 236.49872000000005, "r": 392.01541, "b": 245.26104999999995, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Mask: AMOUNT", "bbox": {"l": 240.9493, "t": 261.21160999999995, "r": 308.13611, "b": 269.97393999999997, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "GLYPH", "bbox": {"l": 310.47171, "t": 261.1604, "r": 320.50479, "b": 270.38385000000005, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "999 99", "bbox": {"l": 322.8743, "t": 261.21160999999995, "r": 351.47424, "b": 269.97393999999997, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Mask: AMOUNT ", "bbox": {"l": 240.9493, "t": 261.21160999999995, "r": 310.41809, "b": 269.97393999999997, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "999.99", "bbox": {"l": 322.8743, "t": 261.21160999999995, "r": 351.46893, "b": 269.97393999999997, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "PKey", "bbox": {"l": 151.6382, "t": 313.41269000000005, "r": 164.10535, "b": 318.68152, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Name", "bbox": {"l": 175.47073, "t": 313.41269000000005, "r": 190.66521, "b": 318.68152, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Amount", "bbox": {"l": 202.00105, "t": 313.41269000000005, "r": 222.71851000000004, "b": 318.68152, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "0001", "bbox": {"l": 152.43835, "t": 324.49203, "r": 164.88643, "b": 329.75473, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "CAIN", "bbox": {"l": 172.27008, "t": 324.49203, "r": 184.60736, "b": 329.75473, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "10.00", "bbox": {"l": 209.47951, "t": 324.49203, "r": 223.47005, "b": 329.75473, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "0002", "bbox": {"l": 152.43835, "t": 335.57138, "r": 164.89381, "b": 340.83408, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "BEDOYA", "bbox": {"l": 172.27562, "t": 335.57138, "r": 192.37941, "b": 340.83408, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "25.50", "bbox": {"l": 209.4752, "t": 335.57138, "r": 223.47498, "b": 340.83408, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "PKey", "bbox": {"l": 410.21579, "t": 330.64709, "r": 422.68292, "b": 335.91592, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Name", "bbox": {"l": 434.04831, "t": 330.64709, "r": 449.24280000000005, "b": 335.91592, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Amount", "bbox": {"l": 460.57863999999995, "t": 330.64709, "r": 481.29610999999994, "b": 335.91592, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ERR", "bbox": {"l": 435.85199000000006, "t": 336.77774, "r": 450.38702, "b": 344.67169, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "OR", "bbox": {"l": 450.29745, "t": 336.77774, "r": 461.42471000000006, "b": 344.67169, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": ":", "bbox": {"l": 461.42661000000004, "t": 336.77774, "r": 463.9009699999999, "b": 344.67169, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "0003", "bbox": {"l": 152.43829, "t": 346.65057, "r": 164.88637, "b": 351.91327, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "CAIN", "bbox": {"l": 172.27002, "t": 346.65057, "r": 184.6073, "b": 351.91327, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "333.00", "bbox": {"l": 206.37112, "t": 346.65057, "r": 223.47367999999997, "b": 351.91327, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "0004", "bbox": {"l": 152.43829, "t": 357.72992, "r": 164.89375, "b": 362.99261000000007, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "BEDOYA", "bbox": {"l": 172.27556, "t": 357.72992, "r": 192.37935, "b": 362.99261000000007, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "75.25", "bbox": {"l": 209.47514, "t": 357.72992, "r": 223.47491, "b": 362.99261000000007, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "0005", "bbox": {"l": 152.43829, "t": 368.80927, "r": 164.88637, "b": 374.07196000000005, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "CAIN", "bbox": {"l": 172.27002, "t": 368.80927, "r": 184.6073, "b": 374.07196000000005, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "987.65", "bbox": {"l": 206.37112, "t": 368.80927, "r": 223.47367999999997, "b": 374.07196000000005, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "0006", "bbox": {"l": 152.43829, "t": 379.88861, "r": 164.8913, "b": 385.15131, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "BEDOYA", "bbox": {"l": 172.27373, "t": 379.88861, "r": 192.37505, "b": 385.15131, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "123.45", "bbox": {"l": 206.36313, "t": 379.88861, "r": 223.47307, "b": 385.15131, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "INSERT", "bbox": {"l": 359.74359, "t": 346.82211, "r": 383.82053, "b": 353.85596, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "RCAC", "bbox": {"l": 305.4552, "t": 345.87585, "r": 327.68582, "b": 354.63812, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "SELECT", "bbox": {"l": 246.0889, "t": 347.5607, "r": 269.78372, "b": 354.59454, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "INSER", "bbox": {"l": 415.60159, "t": 347.85703, "r": 437.65851000000004, "b": 355.75098, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "T or ", "bbox": {"l": 437.56802, "t": 347.85703, "r": 454.15735, "b": 355.75098, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "UPD", "bbox": {"l": 454.28015, "t": 347.85703, "r": 470.66449000000006, "b": 355.75098, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "ATE", "bbox": {"l": 470.55276, "t": 347.85703, "r": 484.20978, "b": 355.75098, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "does", "bbox": {"l": 420.52539, "t": 358.93628, "r": 434.21057, "b": 366.8302299999999, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "not", "bbox": {"l": 445.9407, "t": 358.93628, "r": 453.2720299999999, "b": 366.8302299999999, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "sa", "bbox": {"l": 453.2720299999999, "t": 358.93628, "r": 463.5359199999999, "b": 366.8302299999999, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "tisfy", "bbox": {"l": 463.4556, "t": 358.93628, "r": 479.23618000000005, "b": 366.8302299999999, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "row permissions.", "bbox": {"l": 418.00211, "t": 370.01553, "r": 481.72345, "b": 377.90948, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "0007", "bbox": {"l": 152.43829, "t": 390.96759, "r": 164.88882, "b": 396.23029, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "CAIN", "bbox": {"l": 172.27187, "t": 390.96759, "r": 184.6116, "b": 396.23029, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "1.00", "bbox": {"l": 212.59146, "t": 390.96759, "r": 223.47244, "b": 396.23029, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "bbox": {"l": 237.07159, "t": 385.77884, "r": 476.14007999999995, "b": 396.30414, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 105, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.0672378540039, "t": 754.3772583007812, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9143837690353394, "cells": [{"id": 0, "text": "90 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "90"}, {"label": "page_footer", "id": 1, "page_no": 105, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.31163787841797, "t": 754.7432861328125, "r": 334.42142, "b": 763.88671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9527189135551453, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 2, "page_no": 105, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.84625244140625, "t": 70.61248779296875, "r": 547.26459, "b": 141.04803466796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9829095602035522, "cells": [{"id": 2, "text": "Given a \u201ctarget\u201d table with a row permission defined as ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 380.89371, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "NAME <> 'CAIN'", "bbox": {"l": 380.87976, "t": 71.65808000000015, "r": 450.7790499999999, "b": 80.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " and a column mask ", "bbox": {"l": 450.83978, "t": 71.50867000000005, "r": 543.01062, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "that is defined to project the value 999.99 for AMOUNT, the ", "bbox": {"l": 136.79999, "t": 83.50847999999996, "r": 400.68625, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "SELECT", "bbox": {"l": 400.62048, "t": 83.65790000000004, "r": 430.56023999999996, "b": 92.48248000000001, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " statement produces a ", "bbox": {"l": 430.56023999999996, "t": 83.50847999999996, "r": 532.24695, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "result set that represents all the rows and columns. The seven row result set is inserted into ", "bbox": {"l": 136.80002, "t": 95.50829999999996, "r": 543.31641, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "the \u201ctarget\u201d, and the RCAC row permission causes an error to be returned, as shown in ", "bbox": {"l": 136.80002, "t": 107.50811999999996, "r": 523.92529, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Figure 6-5. The source rows where ", "bbox": {"l": 136.80002, "t": 119.50792999999999, "r": 292.3653, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "NAME = 'CAIN'", "bbox": {"l": 292.32043, "t": 119.65734999999995, "r": 355.79947, "b": 128.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": " do not satisfy the target table\u2019s permission, ", "bbox": {"l": 355.80051, "t": 119.50792999999999, "r": 547.26459, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "and therefore cannot be inserted. In other words, you are inserting data that you cannot read.", "bbox": {"l": 136.80002, "t": 131.50775, "r": 547.2417, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Given a \u201ctarget\u201d table with a row permission defined as NAME <> 'CAIN' and a column mask that is defined to project the value 999.99 for AMOUNT, the SELECT statement produces a result set that represents all the rows and columns. The seven row result set is inserted into the \u201ctarget\u201d, and the RCAC row permission causes an error to be returned, as shown in Figure 6-5. The source rows where NAME = 'CAIN' do not satisfy the target table\u2019s permission, and therefore cannot be inserted. In other words, you are inserting data that you cannot read."}, {"label": "caption", "id": 3, "page_no": 105, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.212646484375, "t": 414.0885009765625, "r": 367.2479248046875, "b": 423.6403503417969, "coord_origin": "TOPLEFT"}, "confidence": 0.9330379962921143, "cells": [{"id": 14, "text": "Figure 6-5 RCAC effects on data movement on TARGET", "bbox": {"l": 136.8, "t": 414.61798, "r": 366.09122, "b": 422.94299, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-5 RCAC effects on data movement on TARGET"}, {"label": "section_header", "id": 4, "page_no": 105, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.19894409179688, "t": 442.4447326660156, "r": 490.12787, "b": 455.5812683105469, "coord_origin": "TOPLEFT"}, "confidence": 0.958083987236023, "cells": [{"id": 15, "text": "6.2.3", "bbox": {"l": 64.800003, "t": 443.45474, "r": 93.849205, "b": 455.44272, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Effects when RCAC is defined on both source and target tables", "bbox": {"l": 97.480339, "t": 443.45474, "r": 490.12787, "b": 455.44272, "coord_origin": "TOPLEFT"}}]}, "text": "6.2.3 Effects when RCAC is defined on both source and target tables"}, {"label": "text", "id": 5, "page_no": 105, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.13351440429688, "t": 468.7479248046875, "r": 541.63324, "b": 490.82153, "coord_origin": "TOPLEFT"}, "confidence": 0.971232533454895, "cells": [{"id": 17, "text": "Example 6-3 shows a simple example that illustrates the effect of RCAC as defined on both ", "bbox": {"l": 136.8, "t": 469.60873, "r": 541.63324, "b": 478.82172, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "the source and the target tables.", "bbox": {"l": 136.80002, "t": 481.60855, "r": 279.84653, "b": 490.82153, "coord_origin": "TOPLEFT"}}]}, "text": "Example 6-3 shows a simple example that illustrates the effect of RCAC as defined on both the source and the target tables."}, {"label": "caption", "id": 6, "page_no": 105, "cluster": {"id": 6, "label": "caption", "bbox": {"l": 136.3226776123047, "t": 502.52581787109375, "r": 332.0595703125, "b": 512.0237426757812, "coord_origin": "TOPLEFT"}, "confidence": 0.7299772500991821, "cells": [{"id": 19, "text": "Example 6-3 INSERT INTO TARGET statement", "bbox": {"l": 136.8, "t": 503.5979, "r": 330.92816, "b": 511.92291, "coord_origin": "TOPLEFT"}}]}, "text": "Example 6-3 INSERT INTO TARGET statement"}, {"label": "text", "id": 7, "page_no": 105, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.8, "t": 520.758, "r": 346.67709, "b": 529.53278, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 20, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "bbox": {"l": 136.8, "t": 520.758, "r": 346.67709, "b": 529.53278, "coord_origin": "TOPLEFT"}}]}, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);"}, {"label": "text", "id": 8, "page_no": 105, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.995849609375, "t": 548.8137817382812, "r": 547.2467, "b": 618.80023, "coord_origin": "TOPLEFT"}, "confidence": 0.9855359196662903, "cells": [{"id": 21, "text": "Given a \u201csource\u201d table and a \u201ctarget\u201d table with a row permission defined as ", "bbox": {"l": 136.8, "t": 549.5882300000001, "r": 472.36234, "b": 558.8012200000001, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "NAME <> 'CAIN'", "bbox": {"l": 472.31952, "t": 549.73763, "r": 542.2785, "b": 558.51237, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "and a column mask that is defined to project the value 999.99 for AMOUNT, the ", "bbox": {"l": 136.79996, "t": 561.58803, "r": 490.08017000000007, "b": 570.80103, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "SELECT", "bbox": {"l": 490.02042, "t": 561.73743, "r": 520.0199, "b": 570.56198, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "statement produces a result set that has the RCAC rules applied. This reduced and modified ", "bbox": {"l": 136.80099, "t": 573.5878299999999, "r": 547.2467, "b": 582.80083, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "result set is inserted into the \u201ctarget\u201d table even though the query is defined as returning all ", "bbox": {"l": 136.80099, "t": 585.58763, "r": 539.85034, "b": 594.80063, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "rows and all columns. Instead of seven rows that are selected from the source, only three ", "bbox": {"l": 136.80099, "t": 597.58743, "r": 532.92114, "b": 606.80043, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "rows are returned.", "bbox": {"l": 136.80099, "t": 609.58723, "r": 218.03972000000002, "b": 618.80023, "coord_origin": "TOPLEFT"}}]}, "text": "Given a \u201csource\u201d table and a \u201ctarget\u201d table with a row permission defined as NAME <> 'CAIN' and a column mask that is defined to project the value 999.99 for AMOUNT, the SELECT statement produces a result set that has the RCAC rules applied. This reduced and modified result set is inserted into the \u201ctarget\u201d table even though the query is defined as returning all rows and all columns. Instead of seven rows that are selected from the source, only three rows are returned."}, {"label": "picture", "id": 9, "page_no": 105, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 136.0791015625, "t": 155.57220458984375, "r": 499.302978515625, "b": 410.439208984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9825493097305298, "cells": [{"id": 29, "text": "RCAC Effects on Data Movement", "bbox": {"l": 208.3886, "t": 165.44983000000002, "r": 424.4899, "b": 179.47484999999995, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "RCAC Rule Text", "bbox": {"l": 276.74149, "t": 208.00494000000003, "r": 363.89221, "b": 220.29327, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Source", "bbox": {"l": 156.83929, "t": 232.91034000000002, "r": 202.1917, "b": 246.93535999999995, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Table", "bbox": {"l": 161.97852, "t": 252.60601999999994, "r": 195.77136, "b": 266.63104, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Target", "bbox": {"l": 432.80521, "t": 232.91034000000002, "r": 472.75925, "b": 246.93535999999995, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Table", "bbox": {"l": 435.88251, "t": 252.60601999999994, "r": 469.67538, "b": 266.63104, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Permission: WHERE NAME <> \u0091CAIN\u0092", "bbox": {"l": 240.9493, "t": 236.49872000000005, "r": 392.01541, "b": 245.26104999999995, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Mask: AMOUNT", "bbox": {"l": 240.9493, "t": 261.21160999999995, "r": 308.13611, "b": 269.97393999999997, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "GLYPH", "bbox": {"l": 310.47171, "t": 261.1604, "r": 320.50479, "b": 270.38385000000005, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "999 99", "bbox": {"l": 322.8743, "t": 261.21160999999995, "r": 351.47424, "b": 269.97393999999997, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Mask: AMOUNT ", "bbox": {"l": 240.9493, "t": 261.21160999999995, "r": 310.41809, "b": 269.97393999999997, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "999.99", "bbox": {"l": 322.8743, "t": 261.21160999999995, "r": 351.46893, "b": 269.97393999999997, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "PKey", "bbox": {"l": 151.6382, "t": 313.41269000000005, "r": 164.10535, "b": 318.68152, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Name", "bbox": {"l": 175.47073, "t": 313.41269000000005, "r": 190.66521, "b": 318.68152, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Amount", "bbox": {"l": 202.00105, "t": 313.41269000000005, "r": 222.71851000000004, "b": 318.68152, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "0001", "bbox": {"l": 152.43835, "t": 324.49203, "r": 164.88643, "b": 329.75473, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "CAIN", "bbox": {"l": 172.27008, "t": 324.49203, "r": 184.60736, "b": 329.75473, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "10.00", "bbox": {"l": 209.47951, "t": 324.49203, "r": 223.47005, "b": 329.75473, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "0002", "bbox": {"l": 152.43835, "t": 335.57138, "r": 164.89381, "b": 340.83408, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "BEDOYA", "bbox": {"l": 172.27562, "t": 335.57138, "r": 192.37941, "b": 340.83408, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "25.50", "bbox": {"l": 209.4752, "t": 335.57138, "r": 223.47498, "b": 340.83408, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "PKey", "bbox": {"l": 410.21579, "t": 330.64709, "r": 422.68292, "b": 335.91592, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Name", "bbox": {"l": 434.04831, "t": 330.64709, "r": 449.24280000000005, "b": 335.91592, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Amount", "bbox": {"l": 460.57863999999995, "t": 330.64709, "r": 481.29610999999994, "b": 335.91592, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ERR", "bbox": {"l": 435.85199000000006, "t": 336.77774, "r": 450.38702, "b": 344.67169, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "OR", "bbox": {"l": 450.29745, "t": 336.77774, "r": 461.42471000000006, "b": 344.67169, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": ":", "bbox": {"l": 461.42661000000004, "t": 336.77774, "r": 463.9009699999999, "b": 344.67169, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "0003", "bbox": {"l": 152.43829, "t": 346.65057, "r": 164.88637, "b": 351.91327, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "CAIN", "bbox": {"l": 172.27002, "t": 346.65057, "r": 184.6073, "b": 351.91327, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "333.00", "bbox": {"l": 206.37112, "t": 346.65057, "r": 223.47367999999997, "b": 351.91327, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "0004", "bbox": {"l": 152.43829, "t": 357.72992, "r": 164.89375, "b": 362.99261000000007, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "BEDOYA", "bbox": {"l": 172.27556, "t": 357.72992, "r": 192.37935, "b": 362.99261000000007, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "75.25", "bbox": {"l": 209.47514, "t": 357.72992, "r": 223.47491, "b": 362.99261000000007, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "0005", "bbox": {"l": 152.43829, "t": 368.80927, "r": 164.88637, "b": 374.07196000000005, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "CAIN", "bbox": {"l": 172.27002, "t": 368.80927, "r": 184.6073, "b": 374.07196000000005, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "987.65", "bbox": {"l": 206.37112, "t": 368.80927, "r": 223.47367999999997, "b": 374.07196000000005, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "0006", "bbox": {"l": 152.43829, "t": 379.88861, "r": 164.8913, "b": 385.15131, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "BEDOYA", "bbox": {"l": 172.27373, "t": 379.88861, "r": 192.37505, "b": 385.15131, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "123.45", "bbox": {"l": 206.36313, "t": 379.88861, "r": 223.47307, "b": 385.15131, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "INSERT", "bbox": {"l": 359.74359, "t": 346.82211, "r": 383.82053, "b": 353.85596, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "RCAC", "bbox": {"l": 305.4552, "t": 345.87585, "r": 327.68582, "b": 354.63812, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "SELECT", "bbox": {"l": 246.0889, "t": 347.5607, "r": 269.78372, "b": 354.59454, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "INSER", "bbox": {"l": 415.60159, "t": 347.85703, "r": 437.65851000000004, "b": 355.75098, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "T or ", "bbox": {"l": 437.56802, "t": 347.85703, "r": 454.15735, "b": 355.75098, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "UPD", "bbox": {"l": 454.28015, "t": 347.85703, "r": 470.66449000000006, "b": 355.75098, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "ATE", "bbox": {"l": 470.55276, "t": 347.85703, "r": 484.20978, "b": 355.75098, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "does", "bbox": {"l": 420.52539, "t": 358.93628, "r": 434.21057, "b": 366.8302299999999, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "not", "bbox": {"l": 445.9407, "t": 358.93628, "r": 453.2720299999999, "b": 366.8302299999999, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "sa", "bbox": {"l": 453.2720299999999, "t": 358.93628, "r": 463.5359199999999, "b": 366.8302299999999, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "tisfy", "bbox": {"l": 463.4556, "t": 358.93628, "r": 479.23618000000005, "b": 366.8302299999999, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "row permissions.", "bbox": {"l": 418.00211, "t": 370.01553, "r": 481.72345, "b": 377.90948, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "0007", "bbox": {"l": 152.43829, "t": 390.96759, "r": 164.88882, "b": 396.23029, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "CAIN", "bbox": {"l": 172.27187, "t": 390.96759, "r": 184.6116, "b": 396.23029, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "1.00", "bbox": {"l": 212.59146, "t": 390.96759, "r": 223.47244, "b": 396.23029, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "bbox": {"l": 237.07159, "t": 385.77884, "r": 476.14007999999995, "b": 396.30414, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 105, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.84625244140625, "t": 70.61248779296875, "r": 547.26459, "b": 141.04803466796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9829095602035522, "cells": [{"id": 2, "text": "Given a \u201ctarget\u201d table with a row permission defined as ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 380.89371, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "NAME <> 'CAIN'", "bbox": {"l": 380.87976, "t": 71.65808000000015, "r": 450.7790499999999, "b": 80.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " and a column mask ", "bbox": {"l": 450.83978, "t": 71.50867000000005, "r": 543.01062, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "that is defined to project the value 999.99 for AMOUNT, the ", "bbox": {"l": 136.79999, "t": 83.50847999999996, "r": 400.68625, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "SELECT", "bbox": {"l": 400.62048, "t": 83.65790000000004, "r": 430.56023999999996, "b": 92.48248000000001, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " statement produces a ", "bbox": {"l": 430.56023999999996, "t": 83.50847999999996, "r": 532.24695, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "result set that represents all the rows and columns. The seven row result set is inserted into ", "bbox": {"l": 136.80002, "t": 95.50829999999996, "r": 543.31641, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "the \u201ctarget\u201d, and the RCAC row permission causes an error to be returned, as shown in ", "bbox": {"l": 136.80002, "t": 107.50811999999996, "r": 523.92529, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Figure 6-5. The source rows where ", "bbox": {"l": 136.80002, "t": 119.50792999999999, "r": 292.3653, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "NAME = 'CAIN'", "bbox": {"l": 292.32043, "t": 119.65734999999995, "r": 355.79947, "b": 128.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": " do not satisfy the target table\u2019s permission, ", "bbox": {"l": 355.80051, "t": 119.50792999999999, "r": 547.26459, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "and therefore cannot be inserted. In other words, you are inserting data that you cannot read.", "bbox": {"l": 136.80002, "t": 131.50775, "r": 547.2417, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Given a \u201ctarget\u201d table with a row permission defined as NAME <> 'CAIN' and a column mask that is defined to project the value 999.99 for AMOUNT, the SELECT statement produces a result set that represents all the rows and columns. The seven row result set is inserted into the \u201ctarget\u201d, and the RCAC row permission causes an error to be returned, as shown in Figure 6-5. The source rows where NAME = 'CAIN' do not satisfy the target table\u2019s permission, and therefore cannot be inserted. In other words, you are inserting data that you cannot read."}, {"label": "caption", "id": 3, "page_no": 105, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.212646484375, "t": 414.0885009765625, "r": 367.2479248046875, "b": 423.6403503417969, "coord_origin": "TOPLEFT"}, "confidence": 0.9330379962921143, "cells": [{"id": 14, "text": "Figure 6-5 RCAC effects on data movement on TARGET", "bbox": {"l": 136.8, "t": 414.61798, "r": 366.09122, "b": 422.94299, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-5 RCAC effects on data movement on TARGET"}, {"label": "section_header", "id": 4, "page_no": 105, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.19894409179688, "t": 442.4447326660156, "r": 490.12787, "b": 455.5812683105469, "coord_origin": "TOPLEFT"}, "confidence": 0.958083987236023, "cells": [{"id": 15, "text": "6.2.3", "bbox": {"l": 64.800003, "t": 443.45474, "r": 93.849205, "b": 455.44272, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Effects when RCAC is defined on both source and target tables", "bbox": {"l": 97.480339, "t": 443.45474, "r": 490.12787, "b": 455.44272, "coord_origin": "TOPLEFT"}}]}, "text": "6.2.3 Effects when RCAC is defined on both source and target tables"}, {"label": "text", "id": 5, "page_no": 105, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.13351440429688, "t": 468.7479248046875, "r": 541.63324, "b": 490.82153, "coord_origin": "TOPLEFT"}, "confidence": 0.971232533454895, "cells": [{"id": 17, "text": "Example 6-3 shows a simple example that illustrates the effect of RCAC as defined on both ", "bbox": {"l": 136.8, "t": 469.60873, "r": 541.63324, "b": 478.82172, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "the source and the target tables.", "bbox": {"l": 136.80002, "t": 481.60855, "r": 279.84653, "b": 490.82153, "coord_origin": "TOPLEFT"}}]}, "text": "Example 6-3 shows a simple example that illustrates the effect of RCAC as defined on both the source and the target tables."}, {"label": "caption", "id": 6, "page_no": 105, "cluster": {"id": 6, "label": "caption", "bbox": {"l": 136.3226776123047, "t": 502.52581787109375, "r": 332.0595703125, "b": 512.0237426757812, "coord_origin": "TOPLEFT"}, "confidence": 0.7299772500991821, "cells": [{"id": 19, "text": "Example 6-3 INSERT INTO TARGET statement", "bbox": {"l": 136.8, "t": 503.5979, "r": 330.92816, "b": 511.92291, "coord_origin": "TOPLEFT"}}]}, "text": "Example 6-3 INSERT INTO TARGET statement"}, {"label": "text", "id": 7, "page_no": 105, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.8, "t": 520.758, "r": 346.67709, "b": 529.53278, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 20, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "bbox": {"l": 136.8, "t": 520.758, "r": 346.67709, "b": 529.53278, "coord_origin": "TOPLEFT"}}]}, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);"}, {"label": "text", "id": 8, "page_no": 105, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.995849609375, "t": 548.8137817382812, "r": 547.2467, "b": 618.80023, "coord_origin": "TOPLEFT"}, "confidence": 0.9855359196662903, "cells": [{"id": 21, "text": "Given a \u201csource\u201d table and a \u201ctarget\u201d table with a row permission defined as ", "bbox": {"l": 136.8, "t": 549.5882300000001, "r": 472.36234, "b": 558.8012200000001, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "NAME <> 'CAIN'", "bbox": {"l": 472.31952, "t": 549.73763, "r": 542.2785, "b": 558.51237, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "and a column mask that is defined to project the value 999.99 for AMOUNT, the ", "bbox": {"l": 136.79996, "t": 561.58803, "r": 490.08017000000007, "b": 570.80103, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "SELECT", "bbox": {"l": 490.02042, "t": 561.73743, "r": 520.0199, "b": 570.56198, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "statement produces a result set that has the RCAC rules applied. This reduced and modified ", "bbox": {"l": 136.80099, "t": 573.5878299999999, "r": 547.2467, "b": 582.80083, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "result set is inserted into the \u201ctarget\u201d table even though the query is defined as returning all ", "bbox": {"l": 136.80099, "t": 585.58763, "r": 539.85034, "b": 594.80063, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "rows and all columns. Instead of seven rows that are selected from the source, only three ", "bbox": {"l": 136.80099, "t": 597.58743, "r": 532.92114, "b": 606.80043, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "rows are returned.", "bbox": {"l": 136.80099, "t": 609.58723, "r": 218.03972000000002, "b": 618.80023, "coord_origin": "TOPLEFT"}}]}, "text": "Given a \u201csource\u201d table and a \u201ctarget\u201d table with a row permission defined as NAME <> 'CAIN' and a column mask that is defined to project the value 999.99 for AMOUNT, the SELECT statement produces a result set that has the RCAC rules applied. This reduced and modified result set is inserted into the \u201ctarget\u201d table even though the query is defined as returning all rows and all columns. Instead of seven rows that are selected from the source, only three rows are returned."}, {"label": "picture", "id": 9, "page_no": 105, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 136.0791015625, "t": 155.57220458984375, "r": 499.302978515625, "b": 410.439208984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9825493097305298, "cells": [{"id": 29, "text": "RCAC Effects on Data Movement", "bbox": {"l": 208.3886, "t": 165.44983000000002, "r": 424.4899, "b": 179.47484999999995, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "RCAC Rule Text", "bbox": {"l": 276.74149, "t": 208.00494000000003, "r": 363.89221, "b": 220.29327, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Source", "bbox": {"l": 156.83929, "t": 232.91034000000002, "r": 202.1917, "b": 246.93535999999995, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Table", "bbox": {"l": 161.97852, "t": 252.60601999999994, "r": 195.77136, "b": 266.63104, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Target", "bbox": {"l": 432.80521, "t": 232.91034000000002, "r": 472.75925, "b": 246.93535999999995, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Table", "bbox": {"l": 435.88251, "t": 252.60601999999994, "r": 469.67538, "b": 266.63104, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Permission: WHERE NAME <> \u0091CAIN\u0092", "bbox": {"l": 240.9493, "t": 236.49872000000005, "r": 392.01541, "b": 245.26104999999995, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Mask: AMOUNT", "bbox": {"l": 240.9493, "t": 261.21160999999995, "r": 308.13611, "b": 269.97393999999997, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "GLYPH", "bbox": {"l": 310.47171, "t": 261.1604, "r": 320.50479, "b": 270.38385000000005, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "999 99", "bbox": {"l": 322.8743, "t": 261.21160999999995, "r": 351.47424, "b": 269.97393999999997, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Mask: AMOUNT ", "bbox": {"l": 240.9493, "t": 261.21160999999995, "r": 310.41809, "b": 269.97393999999997, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "999.99", "bbox": {"l": 322.8743, "t": 261.21160999999995, "r": 351.46893, "b": 269.97393999999997, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "PKey", "bbox": {"l": 151.6382, "t": 313.41269000000005, "r": 164.10535, "b": 318.68152, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Name", "bbox": {"l": 175.47073, "t": 313.41269000000005, "r": 190.66521, "b": 318.68152, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Amount", "bbox": {"l": 202.00105, "t": 313.41269000000005, "r": 222.71851000000004, "b": 318.68152, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "0001", "bbox": {"l": 152.43835, "t": 324.49203, "r": 164.88643, "b": 329.75473, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "CAIN", "bbox": {"l": 172.27008, "t": 324.49203, "r": 184.60736, "b": 329.75473, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "10.00", "bbox": {"l": 209.47951, "t": 324.49203, "r": 223.47005, "b": 329.75473, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "0002", "bbox": {"l": 152.43835, "t": 335.57138, "r": 164.89381, "b": 340.83408, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "BEDOYA", "bbox": {"l": 172.27562, "t": 335.57138, "r": 192.37941, "b": 340.83408, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "25.50", "bbox": {"l": 209.4752, "t": 335.57138, "r": 223.47498, "b": 340.83408, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "PKey", "bbox": {"l": 410.21579, "t": 330.64709, "r": 422.68292, "b": 335.91592, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "Name", "bbox": {"l": 434.04831, "t": 330.64709, "r": 449.24280000000005, "b": 335.91592, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Amount", "bbox": {"l": 460.57863999999995, "t": 330.64709, "r": 481.29610999999994, "b": 335.91592, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ERR", "bbox": {"l": 435.85199000000006, "t": 336.77774, "r": 450.38702, "b": 344.67169, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "OR", "bbox": {"l": 450.29745, "t": 336.77774, "r": 461.42471000000006, "b": 344.67169, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": ":", "bbox": {"l": 461.42661000000004, "t": 336.77774, "r": 463.9009699999999, "b": 344.67169, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "0003", "bbox": {"l": 152.43829, "t": 346.65057, "r": 164.88637, "b": 351.91327, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "CAIN", "bbox": {"l": 172.27002, "t": 346.65057, "r": 184.6073, "b": 351.91327, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "333.00", "bbox": {"l": 206.37112, "t": 346.65057, "r": 223.47367999999997, "b": 351.91327, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "0004", "bbox": {"l": 152.43829, "t": 357.72992, "r": 164.89375, "b": 362.99261000000007, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "BEDOYA", "bbox": {"l": 172.27556, "t": 357.72992, "r": 192.37935, "b": 362.99261000000007, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "75.25", "bbox": {"l": 209.47514, "t": 357.72992, "r": 223.47491, "b": 362.99261000000007, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "0005", "bbox": {"l": 152.43829, "t": 368.80927, "r": 164.88637, "b": 374.07196000000005, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "CAIN", "bbox": {"l": 172.27002, "t": 368.80927, "r": 184.6073, "b": 374.07196000000005, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "987.65", "bbox": {"l": 206.37112, "t": 368.80927, "r": 223.47367999999997, "b": 374.07196000000005, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "0006", "bbox": {"l": 152.43829, "t": 379.88861, "r": 164.8913, "b": 385.15131, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "BEDOYA", "bbox": {"l": 172.27373, "t": 379.88861, "r": 192.37505, "b": 385.15131, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "123.45", "bbox": {"l": 206.36313, "t": 379.88861, "r": 223.47307, "b": 385.15131, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "INSERT", "bbox": {"l": 359.74359, "t": 346.82211, "r": 383.82053, "b": 353.85596, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "RCAC", "bbox": {"l": 305.4552, "t": 345.87585, "r": 327.68582, "b": 354.63812, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "SELECT", "bbox": {"l": 246.0889, "t": 347.5607, "r": 269.78372, "b": 354.59454, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "INSER", "bbox": {"l": 415.60159, "t": 347.85703, "r": 437.65851000000004, "b": 355.75098, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "T or ", "bbox": {"l": 437.56802, "t": 347.85703, "r": 454.15735, "b": 355.75098, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "UPD", "bbox": {"l": 454.28015, "t": 347.85703, "r": 470.66449000000006, "b": 355.75098, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "ATE", "bbox": {"l": 470.55276, "t": 347.85703, "r": 484.20978, "b": 355.75098, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "does", "bbox": {"l": 420.52539, "t": 358.93628, "r": 434.21057, "b": 366.8302299999999, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "not", "bbox": {"l": 445.9407, "t": 358.93628, "r": 453.2720299999999, "b": 366.8302299999999, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "sa", "bbox": {"l": 453.2720299999999, "t": 358.93628, "r": 463.5359199999999, "b": 366.8302299999999, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "tisfy", "bbox": {"l": 463.4556, "t": 358.93628, "r": 479.23618000000005, "b": 366.8302299999999, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "row permissions.", "bbox": {"l": 418.00211, "t": 370.01553, "r": 481.72345, "b": 377.90948, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "0007", "bbox": {"l": 152.43829, "t": 390.96759, "r": 164.88882, "b": 396.23029, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "CAIN", "bbox": {"l": 172.27187, "t": 390.96759, "r": 184.6116, "b": 396.23029, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "1.00", "bbox": {"l": 212.59146, "t": 390.96759, "r": 223.47244, "b": 396.23029, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "bbox": {"l": 237.07159, "t": 385.77884, "r": 476.14007999999995, "b": 396.30414, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 105, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.0672378540039, "t": 754.3772583007812, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9143837690353394, "cells": [{"id": 0, "text": "90 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "90"}, {"label": "page_footer", "id": 1, "page_no": 105, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.31163787841797, "t": 754.7432861328125, "r": 334.42142, "b": 763.88671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9527189135551453, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 106, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "91", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Although the source rows where", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 278.92981, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": " NAME <> 'CAIN'", "bbox": {"l": 278.99951, "t": 71.65845000000002, "r": 353.33795, "b": 80.43322999999998, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " do satisfy the target table\u2019s permission, the ", "bbox": {"l": 353.33997, "t": 71.50903000000005, "r": 547.24823, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "AMOUNT column value of 999.99 represents masked data and therefore cannot be inserted. ", "bbox": {"l": 136.79961, "t": 83.50885000000017, "r": 547.25018, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "An error is returned indicating the failure, as shown in Figure 6-6. In this scenario, DB2 is ", "bbox": {"l": 136.79961, "t": 95.50867000000005, "r": 531.00842, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "protecting against an overt attempt to insert masked data.", "bbox": {"l": 136.79961, "t": 107.50847999999996, "r": 391.95767, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Figure 6-6 RCAC effects on data movement on SOURCE and TARGET", "bbox": {"l": 136.8, "t": 388.45801, "r": 424.51382, "b": 396.78302, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "6.3", "bbox": {"l": 64.800003, "t": 425.10071, "r": 87.442535, "b": 439.86371, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "RCAC effects on joins", "bbox": {"l": 91.971039, "t": 425.10071, "r": 263.02802, "b": 439.86371, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "As mentioned previously, a fundamental concept of row permission is that it defines a logical ", "bbox": {"l": 136.8, "t": 457.42870999999997, "r": 546.7406, "b": 466.64169, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "subset of rows that a user or group of users is permitted to access and use. This subset ", "bbox": {"l": 136.8, "t": 469.42853, "r": 526.64325, "b": 478.64151, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "becomes the new basis of any query against the table that has RCAC enabled. ", "bbox": {"l": 136.79901, "t": 481.42834, "r": 487.7705700000001, "b": 490.64133, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "RCAC Effects on Data Movement", "bbox": {"l": 208.8893, "t": 142.60357999999997, "r": 425.65588, "b": 156.67174999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "RCAC Rule Text", "bbox": {"l": 277.45261, "t": 185.28967, "r": 364.87134, "b": 197.61577999999997, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Source", "bbox": {"l": 157.1814, "t": 210.27166999999997, "r": 202.67342, "b": 224.33983999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Table", "bbox": {"l": 162.33644, "t": 230.02801999999997, "r": 196.23332, "b": 244.09618999999998, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Target", "bbox": {"l": 433.9967, "t": 210.27166999999997, "r": 474.07373, "b": 224.33983999999998, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Table", "bbox": {"l": 437.0834699999999, "t": 230.02801999999997, "r": 470.98035, "b": 244.09618999999998, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Permission: WHERE NAME <> \u0091CAIN\u0092", "bbox": {"l": 241.55029, "t": 213.87108999999998, "r": 393.08215, "b": 222.66039999999998, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Mask: AMOUNT", "bbox": {"l": 241.55029, "t": 238.66010000000006, "r": 308.94427, "b": 247.44939999999997, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "GLYPH", "bbox": {"l": 311.28659, "t": 238.6087, "r": 321.35062, "b": 247.86059999999998, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "999 99", "bbox": {"l": 323.72739, "t": 238.66010000000006, "r": 352.4155, "b": 247.44939999999997, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Mask: AMOUNT ", "bbox": {"l": 241.55029, "t": 238.66010000000006, "r": 311.23285, "b": 247.44939999999997, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "999.99", "bbox": {"l": 323.72739, "t": 238.66010000000006, "r": 352.4101, "b": 247.44939999999997, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "PKey", "bbox": {"l": 151.9642, "t": 291.02185000000003, "r": 164.46983, "b": 296.30688, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Name", "bbox": {"l": 175.87032, "t": 291.02185000000003, "r": 191.11169, "b": 296.30688, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Amount", "bbox": {"l": 202.48253, "t": 291.02185000000003, "r": 223.26395, "b": 296.30688, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "0001", "bbox": {"l": 152.76683, "t": 302.13522, "r": 165.25333, "b": 307.41406, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CAIN", "bbox": {"l": 172.65977, "t": 302.13522, "r": 185.03514, "b": 307.41406, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "10.00", "bbox": {"l": 209.98405, "t": 302.13522, "r": 224.01779000000002, "b": 307.41406, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "0002", "bbox": {"l": 152.76683, "t": 313.2486, "r": 165.26074, "b": 318.52744, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "BEDOYA", "bbox": {"l": 172.66534, "t": 313.2486, "r": 192.83121, "b": 318.52744, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "25.50", "bbox": {"l": 209.97977, "t": 313.2486, "r": 224.02275, "b": 318.52744, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "PKey", "bbox": {"l": 411.3378, "t": 308.30936, "r": 423.84344, "b": 313.59439, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Name", "bbox": {"l": 435.24393, "t": 308.30936, "r": 450.48532, "b": 313.59439, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Amount", "bbox": {"l": 461.8561700000001, "t": 308.30936, "r": 482.63754, "b": 313.59439, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "ERR", "bbox": {"l": 437.05289000000005, "t": 314.45877, "r": 451.63263, "b": 322.37701, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "OR", "bbox": {"l": 451.54279, "t": 314.45877, "r": 462.70425, "b": 322.37701, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": ":", "bbox": {"l": 462.70621, "t": 314.45877, "r": 465.18816999999996, "b": 322.37701, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "0003", "bbox": {"l": 152.76691, "t": 324.36197000000004, "r": 165.2534, "b": 329.64081, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CAIN", "bbox": {"l": 172.65985, "t": 324.36197000000004, "r": 185.03522, "b": 329.64081, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "333.00", "bbox": {"l": 206.86621, "t": 324.36197000000004, "r": 224.02156, "b": 329.64081, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "0004", "bbox": {"l": 152.76691, "t": 335.47534, "r": 165.26082, "b": 340.75418, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "BEDOYA", "bbox": {"l": 172.66542, "t": 335.47534, "r": 192.83128, "b": 340.75418, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "75.25", "bbox": {"l": 209.97984, "t": 335.47534, "r": 224.02283, "b": 340.75418, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "0005", "bbox": {"l": 152.76691, "t": 346.58871000000005, "r": 165.2534, "b": 351.86755, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "CAIN", "bbox": {"l": 172.65985, "t": 346.58871000000005, "r": 185.03522, "b": 351.86755, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "987.65", "bbox": {"l": 206.86621, "t": 346.58871000000005, "r": 224.02156, "b": 351.86755, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "0006", "bbox": {"l": 152.76691, "t": 357.70208999999994, "r": 165.25835, "b": 362.98093, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "BEDOYA", "bbox": {"l": 172.66356, "t": 357.70208999999994, "r": 192.82693, "b": 362.98093, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "123.45", "bbox": {"l": 206.8582, "t": 357.70208999999994, "r": 224.02097, "b": 362.98093, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "INSERT", "bbox": {"l": 360.71021, "t": 324.53406000000007, "r": 384.86127, "b": 331.58953999999994, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "RCAC", "bbox": {"l": 306.2547, "t": 323.58484, "r": 328.55386, "b": 332.37415, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "SELECT", "bbox": {"l": 246.7057, "t": 325.27496, "r": 270.47351, "b": 332.33044, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "Ro", "bbox": {"l": 422.82159, "t": 325.57208, "r": 432.36795, "b": 333.49033, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "w or c", "bbox": {"l": 432.5124200000001, "t": 325.57208, "r": 455.17249, "b": 333.49033, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "o", "bbox": {"l": 455.26602, "t": 325.57208, "r": 459.96512, "b": 333.49033, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "lumn ", "bbox": {"l": 460.14017, "t": 325.57208, "r": 481.52313, "b": 333.49033, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "access", "bbox": {"l": 413.25211, "t": 336.68539, "r": 433.96523999999994, "b": 344.60364, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "c", "bbox": {"l": 418.90115, "t": 336.68539, "r": 443.38031, "b": 344.60364, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "ont", "bbox": {"l": 443.29419000000007, "t": 336.68539, "r": 456.05045, "b": 344.60364, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "r", "bbox": {"l": 456.03748, "t": 336.68539, "r": 459.26775999999995, "b": 344.60364, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "ol is", "bbox": {"l": 459.12793, "t": 336.68539, "r": 473.1619299999999, "b": 344.60364, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "not", "bbox": {"l": 482.9226100000001, "t": 336.68539, "r": 488.00629, "b": 344.60364, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "valid.", "bbox": {"l": 441.12802000000005, "t": 347.79871, "r": 461.11813, "b": 355.71695, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "0007", "bbox": {"l": 152.76691, "t": 368.81546, "r": 165.25587, "b": 374.0943, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "CAIN", "bbox": {"l": 172.66171, "t": 368.81546, "r": 185.03955, "b": 374.0943, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "1.00", "bbox": {"l": 213.10577, "t": 368.81546, "r": 224.02036, "b": 374.0943, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "bbox": {"l": 237.6606, "t": 363.61063, "r": 477.46509, "b": 374.1683300000001, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "Note:", "bbox": {"l": 142.8, "t": 509.44864, "r": 168.33246, "b": 518.6616200000001, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": " Thinking of the row permission as defining a virtual set of rows that can be operated ", "bbox": {"l": 168.36035, "t": 509.44864, "r": 541.38123, "b": 518.6616200000001, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "on is the secret to understanding the effect of RCAC on any join operation.", "bbox": {"l": 142.79997, "t": 521.4484600000001, "r": 471.47884999999997, "b": 530.6614400000001, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 376.1033630371094, "t": 754.9728393554688, "r": 523.62878, "b": 764.0504150390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9539369940757751, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.6055297851562, "t": 754.2470092773438, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9151113629341125, "cells": [{"id": 1, "text": "91", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.59042358398438, "t": 70.5692138671875, "r": 547.25018, "b": 116.77182006835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9812178611755371, "cells": [{"id": 2, "text": "Although the source rows where", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 278.92981, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": " NAME <> 'CAIN'", "bbox": {"l": 278.99951, "t": 71.65845000000002, "r": 353.33795, "b": 80.43322999999998, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " do satisfy the target table\u2019s permission, the ", "bbox": {"l": 353.33997, "t": 71.50903000000005, "r": 547.24823, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "AMOUNT column value of 999.99 represents masked data and therefore cannot be inserted. ", "bbox": {"l": 136.79961, "t": 83.50885000000017, "r": 547.25018, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "An error is returned indicating the failure, as shown in Figure 6-6. In this scenario, DB2 is ", "bbox": {"l": 136.79961, "t": 95.50867000000005, "r": 531.00842, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "protecting against an overt attempt to insert masked data.", "bbox": {"l": 136.79961, "t": 107.50847999999996, "r": 391.95767, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 135.80810546875, "t": 387.26177978515625, "r": 425.63427734375, "b": 396.8255920410156, "coord_origin": "TOPLEFT"}, "confidence": 0.9390740990638733, "cells": [{"id": 8, "text": "Figure 6-6 RCAC effects on data movement on SOURCE and TARGET", "bbox": {"l": 136.8, "t": 388.45801, "r": 424.51382, "b": 396.78302, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 64.44702911376953, "t": 424.1014404296875, "r": 263.02802, "b": 440.4540100097656, "coord_origin": "TOPLEFT"}, "confidence": 0.9687318205833435, "cells": [{"id": 9, "text": "6.3", "bbox": {"l": 64.800003, "t": 425.10071, "r": 87.442535, "b": 439.86371, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "RCAC effects on joins", "bbox": {"l": 91.971039, "t": 425.10071, "r": 263.02802, "b": 439.86371, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.9691619873047, "t": 456.65673828125, "r": 546.7406, "b": 490.82232666015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9842352867126465, "cells": [{"id": 11, "text": "As mentioned previously, a fundamental concept of row permission is that it defines a logical ", "bbox": {"l": 136.8, "t": 457.42870999999997, "r": 546.7406, "b": 466.64169, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "subset of rows that a user or group of users is permitted to access and use. This subset ", "bbox": {"l": 136.8, "t": 469.42853, "r": 526.64325, "b": 478.64151, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "becomes the new basis of any query against the table that has RCAC enabled. ", "bbox": {"l": 136.79901, "t": 481.42834, "r": 487.7705700000001, "b": 490.64133, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "picture", "bbox": {"l": 136.0598907470703, "t": 131.39212036132812, "r": 501.41558837890625, "b": 384.4598083496094, "coord_origin": "TOPLEFT"}, "confidence": 0.9831688404083252, "cells": [{"id": 14, "text": "RCAC Effects on Data Movement", "bbox": {"l": 208.8893, "t": 142.60357999999997, "r": 425.65588, "b": 156.67174999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "RCAC Rule Text", "bbox": {"l": 277.45261, "t": 185.28967, "r": 364.87134, "b": 197.61577999999997, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Source", "bbox": {"l": 157.1814, "t": 210.27166999999997, "r": 202.67342, "b": 224.33983999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Table", "bbox": {"l": 162.33644, "t": 230.02801999999997, "r": 196.23332, "b": 244.09618999999998, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Target", "bbox": {"l": 433.9967, "t": 210.27166999999997, "r": 474.07373, "b": 224.33983999999998, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Table", "bbox": {"l": 437.0834699999999, "t": 230.02801999999997, "r": 470.98035, "b": 244.09618999999998, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Permission: WHERE NAME <> \u0091CAIN\u0092", "bbox": {"l": 241.55029, "t": 213.87108999999998, "r": 393.08215, "b": 222.66039999999998, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Mask: AMOUNT", "bbox": {"l": 241.55029, "t": 238.66010000000006, "r": 308.94427, "b": 247.44939999999997, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "GLYPH", "bbox": {"l": 311.28659, "t": 238.6087, "r": 321.35062, "b": 247.86059999999998, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "999 99", "bbox": {"l": 323.72739, "t": 238.66010000000006, "r": 352.4155, "b": 247.44939999999997, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Mask: AMOUNT ", "bbox": {"l": 241.55029, "t": 238.66010000000006, "r": 311.23285, "b": 247.44939999999997, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "999.99", "bbox": {"l": 323.72739, "t": 238.66010000000006, "r": 352.4101, "b": 247.44939999999997, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "PKey", "bbox": {"l": 151.9642, "t": 291.02185000000003, "r": 164.46983, "b": 296.30688, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Name", "bbox": {"l": 175.87032, "t": 291.02185000000003, "r": 191.11169, "b": 296.30688, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Amount", "bbox": {"l": 202.48253, "t": 291.02185000000003, "r": 223.26395, "b": 296.30688, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "0001", "bbox": {"l": 152.76683, "t": 302.13522, "r": 165.25333, "b": 307.41406, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CAIN", "bbox": {"l": 172.65977, "t": 302.13522, "r": 185.03514, "b": 307.41406, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "10.00", "bbox": {"l": 209.98405, "t": 302.13522, "r": 224.01779000000002, "b": 307.41406, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "0002", "bbox": {"l": 152.76683, "t": 313.2486, "r": 165.26074, "b": 318.52744, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "BEDOYA", "bbox": {"l": 172.66534, "t": 313.2486, "r": 192.83121, "b": 318.52744, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "25.50", "bbox": {"l": 209.97977, "t": 313.2486, "r": 224.02275, "b": 318.52744, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "PKey", "bbox": {"l": 411.3378, "t": 308.30936, "r": 423.84344, "b": 313.59439, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Name", "bbox": {"l": 435.24393, "t": 308.30936, "r": 450.48532, "b": 313.59439, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Amount", "bbox": {"l": 461.8561700000001, "t": 308.30936, "r": 482.63754, "b": 313.59439, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "ERR", "bbox": {"l": 437.05289000000005, "t": 314.45877, "r": 451.63263, "b": 322.37701, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "OR", "bbox": {"l": 451.54279, "t": 314.45877, "r": 462.70425, "b": 322.37701, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": ":", "bbox": {"l": 462.70621, "t": 314.45877, "r": 465.18816999999996, "b": 322.37701, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "0003", "bbox": {"l": 152.76691, "t": 324.36197000000004, "r": 165.2534, "b": 329.64081, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CAIN", "bbox": {"l": 172.65985, "t": 324.36197000000004, "r": 185.03522, "b": 329.64081, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "333.00", "bbox": {"l": 206.86621, "t": 324.36197000000004, "r": 224.02156, "b": 329.64081, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "0004", "bbox": {"l": 152.76691, "t": 335.47534, "r": 165.26082, "b": 340.75418, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "BEDOYA", "bbox": {"l": 172.66542, "t": 335.47534, "r": 192.83128, "b": 340.75418, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "75.25", "bbox": {"l": 209.97984, "t": 335.47534, "r": 224.02283, "b": 340.75418, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "0005", "bbox": {"l": 152.76691, "t": 346.58871000000005, "r": 165.2534, "b": 351.86755, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "CAIN", "bbox": {"l": 172.65985, "t": 346.58871000000005, "r": 185.03522, "b": 351.86755, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "987.65", "bbox": {"l": 206.86621, "t": 346.58871000000005, "r": 224.02156, "b": 351.86755, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "0006", "bbox": {"l": 152.76691, "t": 357.70208999999994, "r": 165.25835, "b": 362.98093, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "BEDOYA", "bbox": {"l": 172.66356, "t": 357.70208999999994, "r": 192.82693, "b": 362.98093, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "123.45", "bbox": {"l": 206.8582, "t": 357.70208999999994, "r": 224.02097, "b": 362.98093, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "INSERT", "bbox": {"l": 360.71021, "t": 324.53406000000007, "r": 384.86127, "b": 331.58953999999994, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "RCAC", "bbox": {"l": 306.2547, "t": 323.58484, "r": 328.55386, "b": 332.37415, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "SELECT", "bbox": {"l": 246.7057, "t": 325.27496, "r": 270.47351, "b": 332.33044, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "Ro", "bbox": {"l": 422.82159, "t": 325.57208, "r": 432.36795, "b": 333.49033, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "w or c", "bbox": {"l": 432.5124200000001, "t": 325.57208, "r": 455.17249, "b": 333.49033, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "o", "bbox": {"l": 455.26602, "t": 325.57208, "r": 459.96512, "b": 333.49033, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "lumn ", "bbox": {"l": 460.14017, "t": 325.57208, "r": 481.52313, "b": 333.49033, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "access", "bbox": {"l": 413.25211, "t": 336.68539, "r": 433.96523999999994, "b": 344.60364, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "c", "bbox": {"l": 418.90115, "t": 336.68539, "r": 443.38031, "b": 344.60364, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "ont", "bbox": {"l": 443.29419000000007, "t": 336.68539, "r": 456.05045, "b": 344.60364, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "r", "bbox": {"l": 456.03748, "t": 336.68539, "r": 459.26775999999995, "b": 344.60364, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "ol is", "bbox": {"l": 459.12793, "t": 336.68539, "r": 473.1619299999999, "b": 344.60364, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "not", "bbox": {"l": 482.9226100000001, "t": 336.68539, "r": 488.00629, "b": 344.60364, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "valid.", "bbox": {"l": 441.12802000000005, "t": 347.79871, "r": 461.11813, "b": 355.71695, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "0007", "bbox": {"l": 152.76691, "t": 368.81546, "r": 165.25587, "b": 374.0943, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "CAIN", "bbox": {"l": 172.66171, "t": 368.81546, "r": 185.03955, "b": 374.0943, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "1.00", "bbox": {"l": 213.10577, "t": 368.81546, "r": 224.02036, "b": 374.0943, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "bbox": {"l": 237.6606, "t": 363.61063, "r": 477.46509, "b": 374.1683300000001, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 142.4822540283203, "t": 508.5616760253906, "r": 541.38123, "b": 530.8720092773438, "coord_origin": "TOPLEFT"}, "confidence": 0.9712533354759216, "cells": [{"id": 71, "text": "Note:", "bbox": {"l": 142.8, "t": 509.44864, "r": 168.33246, "b": 518.6616200000001, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": " Thinking of the row permission as defining a virtual set of rows that can be operated ", "bbox": {"l": 168.36035, "t": 509.44864, "r": 541.38123, "b": 518.6616200000001, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "on is the secret to understanding the effect of RCAC on any join operation.", "bbox": {"l": 142.79997, "t": 521.4484600000001, "r": 471.47884999999997, "b": 530.6614400000001, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 106, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 376.1033630371094, "t": 754.9728393554688, "r": 523.62878, "b": 764.0504150390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9539369940757751, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 106, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6055297851562, "t": 754.2470092773438, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9151113629341125, "cells": [{"id": 1, "text": "91", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "91"}, {"label": "text", "id": 2, "page_no": 106, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.59042358398438, "t": 70.5692138671875, "r": 547.25018, "b": 116.77182006835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9812178611755371, "cells": [{"id": 2, "text": "Although the source rows where", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 278.92981, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": " NAME <> 'CAIN'", "bbox": {"l": 278.99951, "t": 71.65845000000002, "r": 353.33795, "b": 80.43322999999998, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " do satisfy the target table\u2019s permission, the ", "bbox": {"l": 353.33997, "t": 71.50903000000005, "r": 547.24823, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "AMOUNT column value of 999.99 represents masked data and therefore cannot be inserted. ", "bbox": {"l": 136.79961, "t": 83.50885000000017, "r": 547.25018, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "An error is returned indicating the failure, as shown in Figure 6-6. In this scenario, DB2 is ", "bbox": {"l": 136.79961, "t": 95.50867000000005, "r": 531.00842, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "protecting against an overt attempt to insert masked data.", "bbox": {"l": 136.79961, "t": 107.50847999999996, "r": 391.95767, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Although the source rows where NAME <> 'CAIN' do satisfy the target table\u2019s permission, the AMOUNT column value of 999.99 represents masked data and therefore cannot be inserted. An error is returned indicating the failure, as shown in Figure 6-6. In this scenario, DB2 is protecting against an overt attempt to insert masked data."}, {"label": "caption", "id": 3, "page_no": 106, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.80810546875, "t": 387.26177978515625, "r": 425.63427734375, "b": 396.8255920410156, "coord_origin": "TOPLEFT"}, "confidence": 0.9390740990638733, "cells": [{"id": 8, "text": "Figure 6-6 RCAC effects on data movement on SOURCE and TARGET", "bbox": {"l": 136.8, "t": 388.45801, "r": 424.51382, "b": 396.78302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-6 RCAC effects on data movement on SOURCE and TARGET"}, {"label": "section_header", "id": 4, "page_no": 106, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.44702911376953, "t": 424.1014404296875, "r": 263.02802, "b": 440.4540100097656, "coord_origin": "TOPLEFT"}, "confidence": 0.9687318205833435, "cells": [{"id": 9, "text": "6.3", "bbox": {"l": 64.800003, "t": 425.10071, "r": 87.442535, "b": 439.86371, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "RCAC effects on joins", "bbox": {"l": 91.971039, "t": 425.10071, "r": 263.02802, "b": 439.86371, "coord_origin": "TOPLEFT"}}]}, "text": "6.3 RCAC effects on joins"}, {"label": "text", "id": 5, "page_no": 106, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.9691619873047, "t": 456.65673828125, "r": 546.7406, "b": 490.82232666015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9842352867126465, "cells": [{"id": 11, "text": "As mentioned previously, a fundamental concept of row permission is that it defines a logical ", "bbox": {"l": 136.8, "t": 457.42870999999997, "r": 546.7406, "b": 466.64169, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "subset of rows that a user or group of users is permitted to access and use. This subset ", "bbox": {"l": 136.8, "t": 469.42853, "r": 526.64325, "b": 478.64151, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "becomes the new basis of any query against the table that has RCAC enabled. ", "bbox": {"l": 136.79901, "t": 481.42834, "r": 487.7705700000001, "b": 490.64133, "coord_origin": "TOPLEFT"}}]}, "text": "As mentioned previously, a fundamental concept of row permission is that it defines a logical subset of rows that a user or group of users is permitted to access and use. This subset becomes the new basis of any query against the table that has RCAC enabled."}, {"label": "picture", "id": 6, "page_no": 106, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 136.0598907470703, "t": 131.39212036132812, "r": 501.41558837890625, "b": 384.4598083496094, "coord_origin": "TOPLEFT"}, "confidence": 0.9831688404083252, "cells": [{"id": 14, "text": "RCAC Effects on Data Movement", "bbox": {"l": 208.8893, "t": 142.60357999999997, "r": 425.65588, "b": 156.67174999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "RCAC Rule Text", "bbox": {"l": 277.45261, "t": 185.28967, "r": 364.87134, "b": 197.61577999999997, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Source", "bbox": {"l": 157.1814, "t": 210.27166999999997, "r": 202.67342, "b": 224.33983999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Table", "bbox": {"l": 162.33644, "t": 230.02801999999997, "r": 196.23332, "b": 244.09618999999998, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Target", "bbox": {"l": 433.9967, "t": 210.27166999999997, "r": 474.07373, "b": 224.33983999999998, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Table", "bbox": {"l": 437.0834699999999, "t": 230.02801999999997, "r": 470.98035, "b": 244.09618999999998, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Permission: WHERE NAME <> \u0091CAIN\u0092", "bbox": {"l": 241.55029, "t": 213.87108999999998, "r": 393.08215, "b": 222.66039999999998, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Mask: AMOUNT", "bbox": {"l": 241.55029, "t": 238.66010000000006, "r": 308.94427, "b": 247.44939999999997, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "GLYPH", "bbox": {"l": 311.28659, "t": 238.6087, "r": 321.35062, "b": 247.86059999999998, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "999 99", "bbox": {"l": 323.72739, "t": 238.66010000000006, "r": 352.4155, "b": 247.44939999999997, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Mask: AMOUNT ", "bbox": {"l": 241.55029, "t": 238.66010000000006, "r": 311.23285, "b": 247.44939999999997, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "999.99", "bbox": {"l": 323.72739, "t": 238.66010000000006, "r": 352.4101, "b": 247.44939999999997, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "PKey", "bbox": {"l": 151.9642, "t": 291.02185000000003, "r": 164.46983, "b": 296.30688, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Name", "bbox": {"l": 175.87032, "t": 291.02185000000003, "r": 191.11169, "b": 296.30688, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Amount", "bbox": {"l": 202.48253, "t": 291.02185000000003, "r": 223.26395, "b": 296.30688, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "0001", "bbox": {"l": 152.76683, "t": 302.13522, "r": 165.25333, "b": 307.41406, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CAIN", "bbox": {"l": 172.65977, "t": 302.13522, "r": 185.03514, "b": 307.41406, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "10.00", "bbox": {"l": 209.98405, "t": 302.13522, "r": 224.01779000000002, "b": 307.41406, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "0002", "bbox": {"l": 152.76683, "t": 313.2486, "r": 165.26074, "b": 318.52744, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "BEDOYA", "bbox": {"l": 172.66534, "t": 313.2486, "r": 192.83121, "b": 318.52744, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "25.50", "bbox": {"l": 209.97977, "t": 313.2486, "r": 224.02275, "b": 318.52744, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "PKey", "bbox": {"l": 411.3378, "t": 308.30936, "r": 423.84344, "b": 313.59439, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Name", "bbox": {"l": 435.24393, "t": 308.30936, "r": 450.48532, "b": 313.59439, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Amount", "bbox": {"l": 461.8561700000001, "t": 308.30936, "r": 482.63754, "b": 313.59439, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "ERR", "bbox": {"l": 437.05289000000005, "t": 314.45877, "r": 451.63263, "b": 322.37701, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "OR", "bbox": {"l": 451.54279, "t": 314.45877, "r": 462.70425, "b": 322.37701, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": ":", "bbox": {"l": 462.70621, "t": 314.45877, "r": 465.18816999999996, "b": 322.37701, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "0003", "bbox": {"l": 152.76691, "t": 324.36197000000004, "r": 165.2534, "b": 329.64081, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CAIN", "bbox": {"l": 172.65985, "t": 324.36197000000004, "r": 185.03522, "b": 329.64081, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "333.00", "bbox": {"l": 206.86621, "t": 324.36197000000004, "r": 224.02156, "b": 329.64081, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "0004", "bbox": {"l": 152.76691, "t": 335.47534, "r": 165.26082, "b": 340.75418, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "BEDOYA", "bbox": {"l": 172.66542, "t": 335.47534, "r": 192.83128, "b": 340.75418, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "75.25", "bbox": {"l": 209.97984, "t": 335.47534, "r": 224.02283, "b": 340.75418, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "0005", "bbox": {"l": 152.76691, "t": 346.58871000000005, "r": 165.2534, "b": 351.86755, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "CAIN", "bbox": {"l": 172.65985, "t": 346.58871000000005, "r": 185.03522, "b": 351.86755, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "987.65", "bbox": {"l": 206.86621, "t": 346.58871000000005, "r": 224.02156, "b": 351.86755, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "0006", "bbox": {"l": 152.76691, "t": 357.70208999999994, "r": 165.25835, "b": 362.98093, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "BEDOYA", "bbox": {"l": 172.66356, "t": 357.70208999999994, "r": 192.82693, "b": 362.98093, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "123.45", "bbox": {"l": 206.8582, "t": 357.70208999999994, "r": 224.02097, "b": 362.98093, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "INSERT", "bbox": {"l": 360.71021, "t": 324.53406000000007, "r": 384.86127, "b": 331.58953999999994, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "RCAC", "bbox": {"l": 306.2547, "t": 323.58484, "r": 328.55386, "b": 332.37415, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "SELECT", "bbox": {"l": 246.7057, "t": 325.27496, "r": 270.47351, "b": 332.33044, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "Ro", "bbox": {"l": 422.82159, "t": 325.57208, "r": 432.36795, "b": 333.49033, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "w or c", "bbox": {"l": 432.5124200000001, "t": 325.57208, "r": 455.17249, "b": 333.49033, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "o", "bbox": {"l": 455.26602, "t": 325.57208, "r": 459.96512, "b": 333.49033, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "lumn ", "bbox": {"l": 460.14017, "t": 325.57208, "r": 481.52313, "b": 333.49033, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "access", "bbox": {"l": 413.25211, "t": 336.68539, "r": 433.96523999999994, "b": 344.60364, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "c", "bbox": {"l": 418.90115, "t": 336.68539, "r": 443.38031, "b": 344.60364, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "ont", "bbox": {"l": 443.29419000000007, "t": 336.68539, "r": 456.05045, "b": 344.60364, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "r", "bbox": {"l": 456.03748, "t": 336.68539, "r": 459.26775999999995, "b": 344.60364, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "ol is", "bbox": {"l": 459.12793, "t": 336.68539, "r": 473.1619299999999, "b": 344.60364, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "not", "bbox": {"l": 482.9226100000001, "t": 336.68539, "r": 488.00629, "b": 344.60364, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "valid.", "bbox": {"l": 441.12802000000005, "t": 347.79871, "r": 461.11813, "b": 355.71695, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "0007", "bbox": {"l": 152.76691, "t": 368.81546, "r": 165.25587, "b": 374.0943, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "CAIN", "bbox": {"l": 172.66171, "t": 368.81546, "r": 185.03955, "b": 374.0943, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "1.00", "bbox": {"l": 213.10577, "t": 368.81546, "r": 224.02036, "b": 374.0943, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "bbox": {"l": 237.6606, "t": 363.61063, "r": 477.46509, "b": 374.1683300000001, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "text", "id": 7, "page_no": 106, "cluster": {"id": 7, "label": "text", "bbox": {"l": 142.4822540283203, "t": 508.5616760253906, "r": 541.38123, "b": 530.8720092773438, "coord_origin": "TOPLEFT"}, "confidence": 0.9712533354759216, "cells": [{"id": 71, "text": "Note:", "bbox": {"l": 142.8, "t": 509.44864, "r": 168.33246, "b": 518.6616200000001, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": " Thinking of the row permission as defining a virtual set of rows that can be operated ", "bbox": {"l": 168.36035, "t": 509.44864, "r": 541.38123, "b": 518.6616200000001, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "on is the secret to understanding the effect of RCAC on any join operation.", "bbox": {"l": 142.79997, "t": 521.4484600000001, "r": 471.47884999999997, "b": 530.6614400000001, "coord_origin": "TOPLEFT"}}]}, "text": "Note: Thinking of the row permission as defining a virtual set of rows that can be operated on is the secret to understanding the effect of RCAC on any join operation."}], "body": [{"label": "text", "id": 2, "page_no": 106, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.59042358398438, "t": 70.5692138671875, "r": 547.25018, "b": 116.77182006835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9812178611755371, "cells": [{"id": 2, "text": "Although the source rows where", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 278.92981, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": " NAME <> 'CAIN'", "bbox": {"l": 278.99951, "t": 71.65845000000002, "r": 353.33795, "b": 80.43322999999998, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " do satisfy the target table\u2019s permission, the ", "bbox": {"l": 353.33997, "t": 71.50903000000005, "r": 547.24823, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "AMOUNT column value of 999.99 represents masked data and therefore cannot be inserted. ", "bbox": {"l": 136.79961, "t": 83.50885000000017, "r": 547.25018, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "An error is returned indicating the failure, as shown in Figure 6-6. In this scenario, DB2 is ", "bbox": {"l": 136.79961, "t": 95.50867000000005, "r": 531.00842, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "protecting against an overt attempt to insert masked data.", "bbox": {"l": 136.79961, "t": 107.50847999999996, "r": 391.95767, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Although the source rows where NAME <> 'CAIN' do satisfy the target table\u2019s permission, the AMOUNT column value of 999.99 represents masked data and therefore cannot be inserted. An error is returned indicating the failure, as shown in Figure 6-6. In this scenario, DB2 is protecting against an overt attempt to insert masked data."}, {"label": "caption", "id": 3, "page_no": 106, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.80810546875, "t": 387.26177978515625, "r": 425.63427734375, "b": 396.8255920410156, "coord_origin": "TOPLEFT"}, "confidence": 0.9390740990638733, "cells": [{"id": 8, "text": "Figure 6-6 RCAC effects on data movement on SOURCE and TARGET", "bbox": {"l": 136.8, "t": 388.45801, "r": 424.51382, "b": 396.78302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-6 RCAC effects on data movement on SOURCE and TARGET"}, {"label": "section_header", "id": 4, "page_no": 106, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.44702911376953, "t": 424.1014404296875, "r": 263.02802, "b": 440.4540100097656, "coord_origin": "TOPLEFT"}, "confidence": 0.9687318205833435, "cells": [{"id": 9, "text": "6.3", "bbox": {"l": 64.800003, "t": 425.10071, "r": 87.442535, "b": 439.86371, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "RCAC effects on joins", "bbox": {"l": 91.971039, "t": 425.10071, "r": 263.02802, "b": 439.86371, "coord_origin": "TOPLEFT"}}]}, "text": "6.3 RCAC effects on joins"}, {"label": "text", "id": 5, "page_no": 106, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.9691619873047, "t": 456.65673828125, "r": 546.7406, "b": 490.82232666015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9842352867126465, "cells": [{"id": 11, "text": "As mentioned previously, a fundamental concept of row permission is that it defines a logical ", "bbox": {"l": 136.8, "t": 457.42870999999997, "r": 546.7406, "b": 466.64169, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "subset of rows that a user or group of users is permitted to access and use. This subset ", "bbox": {"l": 136.8, "t": 469.42853, "r": 526.64325, "b": 478.64151, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "becomes the new basis of any query against the table that has RCAC enabled. ", "bbox": {"l": 136.79901, "t": 481.42834, "r": 487.7705700000001, "b": 490.64133, "coord_origin": "TOPLEFT"}}]}, "text": "As mentioned previously, a fundamental concept of row permission is that it defines a logical subset of rows that a user or group of users is permitted to access and use. This subset becomes the new basis of any query against the table that has RCAC enabled."}, {"label": "picture", "id": 6, "page_no": 106, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 136.0598907470703, "t": 131.39212036132812, "r": 501.41558837890625, "b": 384.4598083496094, "coord_origin": "TOPLEFT"}, "confidence": 0.9831688404083252, "cells": [{"id": 14, "text": "RCAC Effects on Data Movement", "bbox": {"l": 208.8893, "t": 142.60357999999997, "r": 425.65588, "b": 156.67174999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "RCAC Rule Text", "bbox": {"l": 277.45261, "t": 185.28967, "r": 364.87134, "b": 197.61577999999997, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Source", "bbox": {"l": 157.1814, "t": 210.27166999999997, "r": 202.67342, "b": 224.33983999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Table", "bbox": {"l": 162.33644, "t": 230.02801999999997, "r": 196.23332, "b": 244.09618999999998, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Target", "bbox": {"l": 433.9967, "t": 210.27166999999997, "r": 474.07373, "b": 224.33983999999998, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Table", "bbox": {"l": 437.0834699999999, "t": 230.02801999999997, "r": 470.98035, "b": 244.09618999999998, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Permission: WHERE NAME <> \u0091CAIN\u0092", "bbox": {"l": 241.55029, "t": 213.87108999999998, "r": 393.08215, "b": 222.66039999999998, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Mask: AMOUNT", "bbox": {"l": 241.55029, "t": 238.66010000000006, "r": 308.94427, "b": 247.44939999999997, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "GLYPH", "bbox": {"l": 311.28659, "t": 238.6087, "r": 321.35062, "b": 247.86059999999998, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "999 99", "bbox": {"l": 323.72739, "t": 238.66010000000006, "r": 352.4155, "b": 247.44939999999997, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Mask: AMOUNT ", "bbox": {"l": 241.55029, "t": 238.66010000000006, "r": 311.23285, "b": 247.44939999999997, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "999.99", "bbox": {"l": 323.72739, "t": 238.66010000000006, "r": 352.4101, "b": 247.44939999999997, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "PKey", "bbox": {"l": 151.9642, "t": 291.02185000000003, "r": 164.46983, "b": 296.30688, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Name", "bbox": {"l": 175.87032, "t": 291.02185000000003, "r": 191.11169, "b": 296.30688, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Amount", "bbox": {"l": 202.48253, "t": 291.02185000000003, "r": 223.26395, "b": 296.30688, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "0001", "bbox": {"l": 152.76683, "t": 302.13522, "r": 165.25333, "b": 307.41406, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CAIN", "bbox": {"l": 172.65977, "t": 302.13522, "r": 185.03514, "b": 307.41406, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "10.00", "bbox": {"l": 209.98405, "t": 302.13522, "r": 224.01779000000002, "b": 307.41406, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "0002", "bbox": {"l": 152.76683, "t": 313.2486, "r": 165.26074, "b": 318.52744, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "BEDOYA", "bbox": {"l": 172.66534, "t": 313.2486, "r": 192.83121, "b": 318.52744, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "25.50", "bbox": {"l": 209.97977, "t": 313.2486, "r": 224.02275, "b": 318.52744, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "PKey", "bbox": {"l": 411.3378, "t": 308.30936, "r": 423.84344, "b": 313.59439, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Name", "bbox": {"l": 435.24393, "t": 308.30936, "r": 450.48532, "b": 313.59439, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Amount", "bbox": {"l": 461.8561700000001, "t": 308.30936, "r": 482.63754, "b": 313.59439, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "ERR", "bbox": {"l": 437.05289000000005, "t": 314.45877, "r": 451.63263, "b": 322.37701, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "OR", "bbox": {"l": 451.54279, "t": 314.45877, "r": 462.70425, "b": 322.37701, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": ":", "bbox": {"l": 462.70621, "t": 314.45877, "r": 465.18816999999996, "b": 322.37701, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "0003", "bbox": {"l": 152.76691, "t": 324.36197000000004, "r": 165.2534, "b": 329.64081, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CAIN", "bbox": {"l": 172.65985, "t": 324.36197000000004, "r": 185.03522, "b": 329.64081, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "333.00", "bbox": {"l": 206.86621, "t": 324.36197000000004, "r": 224.02156, "b": 329.64081, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "0004", "bbox": {"l": 152.76691, "t": 335.47534, "r": 165.26082, "b": 340.75418, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "BEDOYA", "bbox": {"l": 172.66542, "t": 335.47534, "r": 192.83128, "b": 340.75418, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "75.25", "bbox": {"l": 209.97984, "t": 335.47534, "r": 224.02283, "b": 340.75418, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "0005", "bbox": {"l": 152.76691, "t": 346.58871000000005, "r": 165.2534, "b": 351.86755, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "CAIN", "bbox": {"l": 172.65985, "t": 346.58871000000005, "r": 185.03522, "b": 351.86755, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "987.65", "bbox": {"l": 206.86621, "t": 346.58871000000005, "r": 224.02156, "b": 351.86755, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "0006", "bbox": {"l": 152.76691, "t": 357.70208999999994, "r": 165.25835, "b": 362.98093, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "BEDOYA", "bbox": {"l": 172.66356, "t": 357.70208999999994, "r": 192.82693, "b": 362.98093, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "123.45", "bbox": {"l": 206.8582, "t": 357.70208999999994, "r": 224.02097, "b": 362.98093, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "INSERT", "bbox": {"l": 360.71021, "t": 324.53406000000007, "r": 384.86127, "b": 331.58953999999994, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "RCAC", "bbox": {"l": 306.2547, "t": 323.58484, "r": 328.55386, "b": 332.37415, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "SELECT", "bbox": {"l": 246.7057, "t": 325.27496, "r": 270.47351, "b": 332.33044, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "Ro", "bbox": {"l": 422.82159, "t": 325.57208, "r": 432.36795, "b": 333.49033, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "w or c", "bbox": {"l": 432.5124200000001, "t": 325.57208, "r": 455.17249, "b": 333.49033, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "o", "bbox": {"l": 455.26602, "t": 325.57208, "r": 459.96512, "b": 333.49033, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "lumn ", "bbox": {"l": 460.14017, "t": 325.57208, "r": 481.52313, "b": 333.49033, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "access", "bbox": {"l": 413.25211, "t": 336.68539, "r": 433.96523999999994, "b": 344.60364, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "c", "bbox": {"l": 418.90115, "t": 336.68539, "r": 443.38031, "b": 344.60364, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "ont", "bbox": {"l": 443.29419000000007, "t": 336.68539, "r": 456.05045, "b": 344.60364, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "r", "bbox": {"l": 456.03748, "t": 336.68539, "r": 459.26775999999995, "b": 344.60364, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "ol is", "bbox": {"l": 459.12793, "t": 336.68539, "r": 473.1619299999999, "b": 344.60364, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "not", "bbox": {"l": 482.9226100000001, "t": 336.68539, "r": 488.00629, "b": 344.60364, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "valid.", "bbox": {"l": 441.12802000000005, "t": 347.79871, "r": 461.11813, "b": 355.71695, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "0007", "bbox": {"l": 152.76691, "t": 368.81546, "r": 165.25587, "b": 374.0943, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "CAIN", "bbox": {"l": 172.66171, "t": 368.81546, "r": 185.03955, "b": 374.0943, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "1.00", "bbox": {"l": 213.10577, "t": 368.81546, "r": 224.02036, "b": 374.0943, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "INSERT INTO TARGET (SELECT * FROM SOURCE);", "bbox": {"l": 237.6606, "t": 363.61063, "r": 477.46509, "b": 374.1683300000001, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "text", "id": 7, "page_no": 106, "cluster": {"id": 7, "label": "text", "bbox": {"l": 142.4822540283203, "t": 508.5616760253906, "r": 541.38123, "b": 530.8720092773438, "coord_origin": "TOPLEFT"}, "confidence": 0.9712533354759216, "cells": [{"id": 71, "text": "Note:", "bbox": {"l": 142.8, "t": 509.44864, "r": 168.33246, "b": 518.6616200000001, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": " Thinking of the row permission as defining a virtual set of rows that can be operated ", "bbox": {"l": 168.36035, "t": 509.44864, "r": 541.38123, "b": 518.6616200000001, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "on is the secret to understanding the effect of RCAC on any join operation.", "bbox": {"l": 142.79997, "t": 521.4484600000001, "r": 471.47884999999997, "b": 530.6614400000001, "coord_origin": "TOPLEFT"}}]}, "text": "Note: Thinking of the row permission as defining a virtual set of rows that can be operated on is the secret to understanding the effect of RCAC on any join operation."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 106, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 376.1033630371094, "t": 754.9728393554688, "r": 523.62878, "b": 764.0504150390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9539369940757751, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 106, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6055297851562, "t": 754.2470092773438, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9151113629341125, "cells": [{"id": 1, "text": "91", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "91"}]}}, {"page_no": 107, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "92 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "As shown in Figure 6-7, there are two different sets, set A and set B. However, set B has a ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 537.42993, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "row permission that subsets the rows that a user can see.", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 391.50604, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 6-7 Set A and set B with row permissions", "bbox": {"l": 136.8, "t": 320.298, "r": 333.67859, "b": 328.62302, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "6.3.1", "bbox": {"l": 64.800003, "t": 349.13474, "r": 94.749428, "b": 361.12271, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Inner joins", "bbox": {"l": 98.493103, "t": 349.13474, "r": 166.59303, "b": 361.12271, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Inner join defines the intersection of two data sets. For a row to be returned from the inner join ", "bbox": {"l": 136.8, "t": 375.28873, "r": 547.21875, "b": 384.50171, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "query, it must appear in both sets, as shown in Figure 6-8.", "bbox": {"l": 136.8, "t": 387.28853999999995, "r": 392.98315, "b": 396.50152999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Figure 6-8", "bbox": {"l": 136.8, "t": 625.63789, "r": 177.73784, "b": 633.96291, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Inner join without RCAC permission", "bbox": {"l": 185.23007, "t": 625.63789, "r": 327.00775, "b": 633.96291, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Permitted", "bbox": {"l": 354.46219, "t": 172.28998, "r": 430.1011700000001, "b": 188.77050999999994, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "by", "bbox": {"l": 383.15869, "t": 194.41150000000005, "r": 401.3905, "b": 210.89202999999998, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "RCAC", "bbox": {"l": 372.22079, "t": 216.53308000000004, "r": 412.28287, "b": 233.01360999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Set A", "bbox": {"l": 210.7952, "t": 292.03516, "r": 250.37243999999998, "b": 307.81519, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Set B", "bbox": {"l": 386.354, "t": 292.03516, "r": 425.10168, "b": 307.81519, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Result of Intersection", "bbox": {"l": 171.8576, "t": 505.00116, "r": 277.11508, "b": 515.18533, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Set A", "bbox": {"l": 232.8615, "t": 607.4495400000001, "r": 271.10748, "b": 622.7257999999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Set B", "bbox": {"l": 343.29138, "t": 607.4495400000001, "r": 380.77533, "b": 622.7257999999999, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.16549682617188, "t": 754.3916625976562, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9147290587425232, "cells": [{"id": 0, "text": "92 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.34784698486328, "t": 754.6744995117188, "r": 334.42142, "b": 763.9275512695312, "coord_origin": "TOPLEFT"}, "confidence": 0.951833963394165, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 136.05355834960938, "t": 70.50668334960938, "r": 537.42993, "b": 92.82316589355469, "coord_origin": "TOPLEFT"}, "confidence": 0.9440383911132812, "cells": [{"id": 2, "text": "As shown in Figure 6-7, there are two different sets, set A and set B. However, set B has a ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 537.42993, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "row permission that subsets the rows that a user can see.", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 391.50604, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.143310546875, "t": 319.539306640625, "r": 334.12286376953125, "b": 328.9681701660156, "coord_origin": "TOPLEFT"}, "confidence": 0.9443629384040833, "cells": [{"id": 4, "text": "Figure 6-7 Set A and set B with row permissions", "bbox": {"l": 136.8, "t": 320.298, "r": 333.67859, "b": 328.62302, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 64.19314575195312, "t": 348.505126953125, "r": 166.59303, "b": 361.54974365234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9613147974014282, "cells": [{"id": 5, "text": "6.3.1", "bbox": {"l": 64.800003, "t": 349.13474, "r": 94.749428, "b": 361.12271, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Inner joins", "bbox": {"l": 98.493103, "t": 349.13474, "r": 166.59303, "b": 361.12271, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.13674926757812, "t": 374.5938415527344, "r": 547.21875, "b": 397.1634216308594, "coord_origin": "TOPLEFT"}, "confidence": 0.965448260307312, "cells": [{"id": 7, "text": "Inner join defines the intersection of two data sets. For a row to be returned from the inner join ", "bbox": {"l": 136.8, "t": 375.28873, "r": 547.21875, "b": 384.50171, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "query, it must appear in both sets, as shown in Figure 6-8.", "bbox": {"l": 136.8, "t": 387.28853999999995, "r": 392.98315, "b": 396.50152999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "caption", "bbox": {"l": 136.0211181640625, "t": 624.7966918945312, "r": 327.359130859375, "b": 634.3587036132812, "coord_origin": "TOPLEFT"}, "confidence": 0.9452580213546753, "cells": [{"id": 9, "text": "Figure 6-8", "bbox": {"l": 136.8, "t": 625.63789, "r": 177.73784, "b": 633.96291, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Inner join without RCAC permission", "bbox": {"l": 185.23007, "t": 625.63789, "r": 327.00775, "b": 633.96291, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "picture", "bbox": {"l": 136.11366271972656, "t": 107.33206176757812, "r": 502.8105773925781, "b": 316.0246887207031, "coord_origin": "TOPLEFT"}, "confidence": 0.9822977781295776, "cells": [{"id": 11, "text": "Permitted", "bbox": {"l": 354.46219, "t": 172.28998, "r": 430.1011700000001, "b": 188.77050999999994, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "by", "bbox": {"l": 383.15869, "t": 194.41150000000005, "r": 401.3905, "b": 210.89202999999998, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "RCAC", "bbox": {"l": 372.22079, "t": 216.53308000000004, "r": 412.28287, "b": 233.01360999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Set A", "bbox": {"l": 210.7952, "t": 292.03516, "r": 250.37243999999998, "b": 307.81519, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Set B", "bbox": {"l": 386.354, "t": 292.03516, "r": 425.10168, "b": 307.81519, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 135.9275665283203, "t": 410.61224365234375, "r": 464.8796691894531, "b": 622.7257999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9838927984237671, "cells": [{"id": 16, "text": "Result of Intersection", "bbox": {"l": 171.8576, "t": 505.00116, "r": 277.11508, "b": 515.18533, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Set A", "bbox": {"l": 232.8615, "t": 607.4495400000001, "r": 271.10748, "b": 622.7257999999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Set B", "bbox": {"l": 343.29138, "t": 607.4495400000001, "r": 380.77533, "b": 622.7257999999999, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 107, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.16549682617188, "t": 754.3916625976562, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9147290587425232, "cells": [{"id": 0, "text": "92 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "92"}, {"label": "page_footer", "id": 1, "page_no": 107, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.34784698486328, "t": 754.6744995117188, "r": 334.42142, "b": 763.9275512695312, "coord_origin": "TOPLEFT"}, "confidence": 0.951833963394165, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 2, "page_no": 107, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.05355834960938, "t": 70.50668334960938, "r": 537.42993, "b": 92.82316589355469, "coord_origin": "TOPLEFT"}, "confidence": 0.9440383911132812, "cells": [{"id": 2, "text": "As shown in Figure 6-7, there are two different sets, set A and set B. However, set B has a ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 537.42993, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "row permission that subsets the rows that a user can see.", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 391.50604, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "As shown in Figure 6-7, there are two different sets, set A and set B. However, set B has a row permission that subsets the rows that a user can see."}, {"label": "caption", "id": 3, "page_no": 107, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.143310546875, "t": 319.539306640625, "r": 334.12286376953125, "b": 328.9681701660156, "coord_origin": "TOPLEFT"}, "confidence": 0.9443629384040833, "cells": [{"id": 4, "text": "Figure 6-7 Set A and set B with row permissions", "bbox": {"l": 136.8, "t": 320.298, "r": 333.67859, "b": 328.62302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-7 Set A and set B with row permissions"}, {"label": "section_header", "id": 4, "page_no": 107, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.19314575195312, "t": 348.505126953125, "r": 166.59303, "b": 361.54974365234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9613147974014282, "cells": [{"id": 5, "text": "6.3.1", "bbox": {"l": 64.800003, "t": 349.13474, "r": 94.749428, "b": 361.12271, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Inner joins", "bbox": {"l": 98.493103, "t": 349.13474, "r": 166.59303, "b": 361.12271, "coord_origin": "TOPLEFT"}}]}, "text": "6.3.1 Inner joins"}, {"label": "text", "id": 5, "page_no": 107, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.13674926757812, "t": 374.5938415527344, "r": 547.21875, "b": 397.1634216308594, "coord_origin": "TOPLEFT"}, "confidence": 0.965448260307312, "cells": [{"id": 7, "text": "Inner join defines the intersection of two data sets. For a row to be returned from the inner join ", "bbox": {"l": 136.8, "t": 375.28873, "r": 547.21875, "b": 384.50171, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "query, it must appear in both sets, as shown in Figure 6-8.", "bbox": {"l": 136.8, "t": 387.28853999999995, "r": 392.98315, "b": 396.50152999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Inner join defines the intersection of two data sets. For a row to be returned from the inner join query, it must appear in both sets, as shown in Figure 6-8."}, {"label": "caption", "id": 6, "page_no": 107, "cluster": {"id": 6, "label": "caption", "bbox": {"l": 136.0211181640625, "t": 624.7966918945312, "r": 327.359130859375, "b": 634.3587036132812, "coord_origin": "TOPLEFT"}, "confidence": 0.9452580213546753, "cells": [{"id": 9, "text": "Figure 6-8", "bbox": {"l": 136.8, "t": 625.63789, "r": 177.73784, "b": 633.96291, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Inner join without RCAC permission", "bbox": {"l": 185.23007, "t": 625.63789, "r": 327.00775, "b": 633.96291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-8 Inner join without RCAC permission"}, {"label": "picture", "id": 7, "page_no": 107, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 136.11366271972656, "t": 107.33206176757812, "r": 502.8105773925781, "b": 316.0246887207031, "coord_origin": "TOPLEFT"}, "confidence": 0.9822977781295776, "cells": [{"id": 11, "text": "Permitted", "bbox": {"l": 354.46219, "t": 172.28998, "r": 430.1011700000001, "b": 188.77050999999994, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "by", "bbox": {"l": 383.15869, "t": 194.41150000000005, "r": 401.3905, "b": 210.89202999999998, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "RCAC", "bbox": {"l": 372.22079, "t": 216.53308000000004, "r": 412.28287, "b": 233.01360999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Set A", "bbox": {"l": 210.7952, "t": 292.03516, "r": 250.37243999999998, "b": 307.81519, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Set B", "bbox": {"l": 386.354, "t": 292.03516, "r": 425.10168, "b": 307.81519, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 8, "page_no": 107, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 135.9275665283203, "t": 410.61224365234375, "r": 464.8796691894531, "b": 622.7257999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9838927984237671, "cells": [{"id": 16, "text": "Result of Intersection", "bbox": {"l": 171.8576, "t": 505.00116, "r": 277.11508, "b": 515.18533, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Set A", "bbox": {"l": 232.8615, "t": 607.4495400000001, "r": 271.10748, "b": 622.7257999999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Set B", "bbox": {"l": 343.29138, "t": 607.4495400000001, "r": 380.77533, "b": 622.7257999999999, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 107, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.05355834960938, "t": 70.50668334960938, "r": 537.42993, "b": 92.82316589355469, "coord_origin": "TOPLEFT"}, "confidence": 0.9440383911132812, "cells": [{"id": 2, "text": "As shown in Figure 6-7, there are two different sets, set A and set B. However, set B has a ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 537.42993, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "row permission that subsets the rows that a user can see.", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 391.50604, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "As shown in Figure 6-7, there are two different sets, set A and set B. However, set B has a row permission that subsets the rows that a user can see."}, {"label": "caption", "id": 3, "page_no": 107, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.143310546875, "t": 319.539306640625, "r": 334.12286376953125, "b": 328.9681701660156, "coord_origin": "TOPLEFT"}, "confidence": 0.9443629384040833, "cells": [{"id": 4, "text": "Figure 6-7 Set A and set B with row permissions", "bbox": {"l": 136.8, "t": 320.298, "r": 333.67859, "b": 328.62302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-7 Set A and set B with row permissions"}, {"label": "section_header", "id": 4, "page_no": 107, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.19314575195312, "t": 348.505126953125, "r": 166.59303, "b": 361.54974365234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9613147974014282, "cells": [{"id": 5, "text": "6.3.1", "bbox": {"l": 64.800003, "t": 349.13474, "r": 94.749428, "b": 361.12271, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Inner joins", "bbox": {"l": 98.493103, "t": 349.13474, "r": 166.59303, "b": 361.12271, "coord_origin": "TOPLEFT"}}]}, "text": "6.3.1 Inner joins"}, {"label": "text", "id": 5, "page_no": 107, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.13674926757812, "t": 374.5938415527344, "r": 547.21875, "b": 397.1634216308594, "coord_origin": "TOPLEFT"}, "confidence": 0.965448260307312, "cells": [{"id": 7, "text": "Inner join defines the intersection of two data sets. For a row to be returned from the inner join ", "bbox": {"l": 136.8, "t": 375.28873, "r": 547.21875, "b": 384.50171, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "query, it must appear in both sets, as shown in Figure 6-8.", "bbox": {"l": 136.8, "t": 387.28853999999995, "r": 392.98315, "b": 396.50152999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Inner join defines the intersection of two data sets. For a row to be returned from the inner join query, it must appear in both sets, as shown in Figure 6-8."}, {"label": "caption", "id": 6, "page_no": 107, "cluster": {"id": 6, "label": "caption", "bbox": {"l": 136.0211181640625, "t": 624.7966918945312, "r": 327.359130859375, "b": 634.3587036132812, "coord_origin": "TOPLEFT"}, "confidence": 0.9452580213546753, "cells": [{"id": 9, "text": "Figure 6-8", "bbox": {"l": 136.8, "t": 625.63789, "r": 177.73784, "b": 633.96291, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Inner join without RCAC permission", "bbox": {"l": 185.23007, "t": 625.63789, "r": 327.00775, "b": 633.96291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-8 Inner join without RCAC permission"}, {"label": "picture", "id": 7, "page_no": 107, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 136.11366271972656, "t": 107.33206176757812, "r": 502.8105773925781, "b": 316.0246887207031, "coord_origin": "TOPLEFT"}, "confidence": 0.9822977781295776, "cells": [{"id": 11, "text": "Permitted", "bbox": {"l": 354.46219, "t": 172.28998, "r": 430.1011700000001, "b": 188.77050999999994, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "by", "bbox": {"l": 383.15869, "t": 194.41150000000005, "r": 401.3905, "b": 210.89202999999998, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "RCAC", "bbox": {"l": 372.22079, "t": 216.53308000000004, "r": 412.28287, "b": 233.01360999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Set A", "bbox": {"l": 210.7952, "t": 292.03516, "r": 250.37243999999998, "b": 307.81519, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Set B", "bbox": {"l": 386.354, "t": 292.03516, "r": 425.10168, "b": 307.81519, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 8, "page_no": 107, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 135.9275665283203, "t": 410.61224365234375, "r": 464.8796691894531, "b": 622.7257999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9838927984237671, "cells": [{"id": 16, "text": "Result of Intersection", "bbox": {"l": 171.8576, "t": 505.00116, "r": 277.11508, "b": 515.18533, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Set A", "bbox": {"l": 232.8615, "t": 607.4495400000001, "r": 271.10748, "b": 622.7257999999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Set B", "bbox": {"l": 343.29138, "t": 607.4495400000001, "r": 380.77533, "b": 622.7257999999999, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 107, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.16549682617188, "t": 754.3916625976562, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9147290587425232, "cells": [{"id": 0, "text": "92 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "92"}, {"label": "page_footer", "id": 1, "page_no": 107, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.34784698486328, "t": 754.6744995117188, "r": 334.42142, "b": 763.9275512695312, "coord_origin": "TOPLEFT"}, "confidence": 0.951833963394165, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 108, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "93", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Given that row permission serves to eliminate logically rows from one or more sets, the result ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 547.32196, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "set from an inner join (and a subquery) can be different when RCAC is applied. RCAC can ", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 537.83099, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "reduce the number of rows that are permitted to be accessed by the join, as shown in ", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 515.98468, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Figure 6-9. ", "bbox": {"l": 136.79959, "t": 107.50847999999996, "r": 187.91333, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Figure 6-9 Inner join with RCAC permission", "bbox": {"l": 136.8, "t": 424.27798, "r": 314.49866, "b": 432.603, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Effect of column masks on inner joins:", "bbox": {"l": 142.8, "t": 135.52855999999997, "r": 326.52615, "b": 144.74158, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": " Because column masks are applied after the ", "bbox": {"l": 326.52017, "t": 135.52855999999997, "r": 529.25281, "b": 144.74158, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "query final results are determined, the masked value has no effect on the join processing ", "bbox": {"l": 142.8, "t": 147.52837999999997, "r": 537.63239, "b": 156.74139000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "and corresponding query result set.", "bbox": {"l": 142.8, "t": 159.52819999999997, "r": 299.81543, "b": 168.74121000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Inner Join with RCAC Permission", "bbox": {"l": 204.2908, "t": 187.63684, "r": 410.12238, "b": 201.08349999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Permitted", "bbox": {"l": 305.52841, "t": 269.37561000000005, "r": 378.18561, "b": 285.20309, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Result of Intersection", "bbox": {"l": 171.5974, "t": 295.78427, "r": 276.01706, "b": 305.88739, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Set A", "bbox": {"l": 232.11571000000004, "t": 397.4173, "r": 270.05716, "b": 412.57201999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Set B", "bbox": {"l": 341.66632, "t": 397.4173, "r": 378.85181, "b": 412.57201999999995, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 376.04339599609375, "t": 754.8524169921875, "r": 523.62878, "b": 764.1233520507812, "coord_origin": "TOPLEFT"}, "confidence": 0.9509537220001221, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.5010375976562, "t": 754.3138427734375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9208362102508545, "cells": [{"id": 1, "text": "93", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.92884826660156, "t": 70.47429656982422, "r": 547.32196, "b": 116.84603881835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9856703877449036, "cells": [{"id": 2, "text": "Given that row permission serves to eliminate logically rows from one or more sets, the result ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 547.32196, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "set from an inner join (and a subquery) can be different when RCAC is applied. RCAC can ", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 537.83099, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "reduce the number of rows that are permitted to be accessed by the join, as shown in ", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 515.98468, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Figure 6-9. ", "bbox": {"l": 136.79959, "t": 107.50847999999996, "r": 187.91333, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.20010375976562, "t": 423.43145751953125, "r": 314.9713439941406, "b": 432.9030456542969, "coord_origin": "TOPLEFT"}, "confidence": 0.943959653377533, "cells": [{"id": 6, "text": "Figure 6-9 Inner join with RCAC permission", "bbox": {"l": 136.8, "t": 424.27798, "r": 314.49866, "b": 432.603, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 142.26942443847656, "t": 134.60061645507812, "r": 537.63239, "b": 169.2606201171875, "coord_origin": "TOPLEFT"}, "confidence": 0.9708845019340515, "cells": [{"id": 7, "text": "Effect of column masks on inner joins:", "bbox": {"l": 142.8, "t": 135.52855999999997, "r": 326.52615, "b": 144.74158, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": " Because column masks are applied after the ", "bbox": {"l": 326.52017, "t": 135.52855999999997, "r": 529.25281, "b": 144.74158, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "query final results are determined, the masked value has no effect on the join processing ", "bbox": {"l": 142.8, "t": 147.52837999999997, "r": 537.63239, "b": 156.74139000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "and corresponding query result set.", "bbox": {"l": 142.8, "t": 159.52819999999997, "r": 299.81543, "b": 168.74121000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "picture", "bbox": {"l": 136.01123046875, "t": 187.63684, "r": 470.03668212890625, "b": 420.47430419921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9833499193191528, "cells": [{"id": 11, "text": "Inner Join with RCAC Permission", "bbox": {"l": 204.2908, "t": 187.63684, "r": 410.12238, "b": 201.08349999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Permitted", "bbox": {"l": 305.52841, "t": 269.37561000000005, "r": 378.18561, "b": 285.20309, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Result of Intersection", "bbox": {"l": 171.5974, "t": 295.78427, "r": 276.01706, "b": 305.88739, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Set A", "bbox": {"l": 232.11571000000004, "t": 397.4173, "r": 270.05716, "b": 412.57201999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Set B", "bbox": {"l": 341.66632, "t": 397.4173, "r": 378.85181, "b": 412.57201999999995, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 108, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 376.04339599609375, "t": 754.8524169921875, "r": 523.62878, "b": 764.1233520507812, "coord_origin": "TOPLEFT"}, "confidence": 0.9509537220001221, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 108, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.5010375976562, "t": 754.3138427734375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9208362102508545, "cells": [{"id": 1, "text": "93", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "93"}, {"label": "text", "id": 2, "page_no": 108, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.92884826660156, "t": 70.47429656982422, "r": 547.32196, "b": 116.84603881835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9856703877449036, "cells": [{"id": 2, "text": "Given that row permission serves to eliminate logically rows from one or more sets, the result ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 547.32196, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "set from an inner join (and a subquery) can be different when RCAC is applied. RCAC can ", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 537.83099, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "reduce the number of rows that are permitted to be accessed by the join, as shown in ", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 515.98468, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Figure 6-9. ", "bbox": {"l": 136.79959, "t": 107.50847999999996, "r": 187.91333, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Given that row permission serves to eliminate logically rows from one or more sets, the result set from an inner join (and a subquery) can be different when RCAC is applied. RCAC can reduce the number of rows that are permitted to be accessed by the join, as shown in Figure 6-9."}, {"label": "caption", "id": 3, "page_no": 108, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.20010375976562, "t": 423.43145751953125, "r": 314.9713439941406, "b": 432.9030456542969, "coord_origin": "TOPLEFT"}, "confidence": 0.943959653377533, "cells": [{"id": 6, "text": "Figure 6-9 Inner join with RCAC permission", "bbox": {"l": 136.8, "t": 424.27798, "r": 314.49866, "b": 432.603, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-9 Inner join with RCAC permission"}, {"label": "text", "id": 4, "page_no": 108, "cluster": {"id": 4, "label": "text", "bbox": {"l": 142.26942443847656, "t": 134.60061645507812, "r": 537.63239, "b": 169.2606201171875, "coord_origin": "TOPLEFT"}, "confidence": 0.9708845019340515, "cells": [{"id": 7, "text": "Effect of column masks on inner joins:", "bbox": {"l": 142.8, "t": 135.52855999999997, "r": 326.52615, "b": 144.74158, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": " Because column masks are applied after the ", "bbox": {"l": 326.52017, "t": 135.52855999999997, "r": 529.25281, "b": 144.74158, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "query final results are determined, the masked value has no effect on the join processing ", "bbox": {"l": 142.8, "t": 147.52837999999997, "r": 537.63239, "b": 156.74139000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "and corresponding query result set.", "bbox": {"l": 142.8, "t": 159.52819999999997, "r": 299.81543, "b": 168.74121000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Effect of column masks on inner joins: Because column masks are applied after the query final results are determined, the masked value has no effect on the join processing and corresponding query result set."}, {"label": "picture", "id": 5, "page_no": 108, "cluster": {"id": 5, "label": "picture", "bbox": {"l": 136.01123046875, "t": 187.63684, "r": 470.03668212890625, "b": 420.47430419921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9833499193191528, "cells": [{"id": 11, "text": "Inner Join with RCAC Permission", "bbox": {"l": 204.2908, "t": 187.63684, "r": 410.12238, "b": 201.08349999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Permitted", "bbox": {"l": 305.52841, "t": 269.37561000000005, "r": 378.18561, "b": 285.20309, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Result of Intersection", "bbox": {"l": 171.5974, "t": 295.78427, "r": 276.01706, "b": 305.88739, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Set A", "bbox": {"l": 232.11571000000004, "t": 397.4173, "r": 270.05716, "b": 412.57201999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Set B", "bbox": {"l": 341.66632, "t": 397.4173, "r": 378.85181, "b": 412.57201999999995, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 108, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.92884826660156, "t": 70.47429656982422, "r": 547.32196, "b": 116.84603881835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9856703877449036, "cells": [{"id": 2, "text": "Given that row permission serves to eliminate logically rows from one or more sets, the result ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 547.32196, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "set from an inner join (and a subquery) can be different when RCAC is applied. RCAC can ", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 537.83099, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "reduce the number of rows that are permitted to be accessed by the join, as shown in ", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 515.98468, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Figure 6-9. ", "bbox": {"l": 136.79959, "t": 107.50847999999996, "r": 187.91333, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Given that row permission serves to eliminate logically rows from one or more sets, the result set from an inner join (and a subquery) can be different when RCAC is applied. RCAC can reduce the number of rows that are permitted to be accessed by the join, as shown in Figure 6-9."}, {"label": "caption", "id": 3, "page_no": 108, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.20010375976562, "t": 423.43145751953125, "r": 314.9713439941406, "b": 432.9030456542969, "coord_origin": "TOPLEFT"}, "confidence": 0.943959653377533, "cells": [{"id": 6, "text": "Figure 6-9 Inner join with RCAC permission", "bbox": {"l": 136.8, "t": 424.27798, "r": 314.49866, "b": 432.603, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-9 Inner join with RCAC permission"}, {"label": "text", "id": 4, "page_no": 108, "cluster": {"id": 4, "label": "text", "bbox": {"l": 142.26942443847656, "t": 134.60061645507812, "r": 537.63239, "b": 169.2606201171875, "coord_origin": "TOPLEFT"}, "confidence": 0.9708845019340515, "cells": [{"id": 7, "text": "Effect of column masks on inner joins:", "bbox": {"l": 142.8, "t": 135.52855999999997, "r": 326.52615, "b": 144.74158, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": " Because column masks are applied after the ", "bbox": {"l": 326.52017, "t": 135.52855999999997, "r": 529.25281, "b": 144.74158, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "query final results are determined, the masked value has no effect on the join processing ", "bbox": {"l": 142.8, "t": 147.52837999999997, "r": 537.63239, "b": 156.74139000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "and corresponding query result set.", "bbox": {"l": 142.8, "t": 159.52819999999997, "r": 299.81543, "b": 168.74121000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Effect of column masks on inner joins: Because column masks are applied after the query final results are determined, the masked value has no effect on the join processing and corresponding query result set."}, {"label": "picture", "id": 5, "page_no": 108, "cluster": {"id": 5, "label": "picture", "bbox": {"l": 136.01123046875, "t": 187.63684, "r": 470.03668212890625, "b": 420.47430419921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9833499193191528, "cells": [{"id": 11, "text": "Inner Join with RCAC Permission", "bbox": {"l": 204.2908, "t": 187.63684, "r": 410.12238, "b": 201.08349999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Permitted", "bbox": {"l": 305.52841, "t": 269.37561000000005, "r": 378.18561, "b": 285.20309, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Result of Intersection", "bbox": {"l": 171.5974, "t": 295.78427, "r": 276.01706, "b": 305.88739, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Set A", "bbox": {"l": 232.11571000000004, "t": 397.4173, "r": 270.05716, "b": 412.57201999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Set B", "bbox": {"l": 341.66632, "t": 397.4173, "r": 378.85181, "b": 412.57201999999995, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 108, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 376.04339599609375, "t": 754.8524169921875, "r": 523.62878, "b": 764.1233520507812, "coord_origin": "TOPLEFT"}, "confidence": 0.9509537220001221, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 108, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.5010375976562, "t": 754.3138427734375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9208362102508545, "cells": [{"id": 1, "text": "93", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "93"}]}}, {"page_no": 109, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "94 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "6.3.2", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 94.717293, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Outer joins", "bbox": {"l": 98.456955, "t": 71.33471999999995, "r": 169.47015, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Outer joins preserve one or both sides of two data sets. A row can be returned from the outer ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 547.22864, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "join query if it appears in the primary set (LEFT, RIGHT, or both in the case of FULL), as ", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 527.93719, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "shown in Figure 6-10. Column values from the secondary set are returned if the row has a ", "bbox": {"l": 136.8, "t": 121.48834000000011, "r": 536.82648, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "match in the primary set. Otherwise, NULL is returned for the column value by default.", "bbox": {"l": 136.8, "t": 133.48816, "r": 516.36261, "b": 142.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Figure 6-10 Outer join without RCAC permission", "bbox": {"l": 136.8, "t": 376.27798, "r": 334.02512, "b": 384.603, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Set A", "bbox": {"l": 245.52909999999997, "t": 356.12268000000006, "r": 283.88458, "b": 371.44269, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Set B", "bbox": {"l": 356.27518, "t": 356.12268000000006, "r": 393.86646, "b": 371.44269, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.17929077148438, "t": 754.3489990234375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9131594896316528, "cells": [{"id": 0, "text": "94 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.3522720336914, "t": 754.6829833984375, "r": 334.42142, "b": 763.9155883789062, "coord_origin": "TOPLEFT"}, "confidence": 0.9499405026435852, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.229248046875, "t": 70.42779541015625, "r": 169.51583862304688, "b": 83.49371337890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9645467400550842, "cells": [{"id": 2, "text": "6.3.2", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 94.717293, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Outer joins", "bbox": {"l": 98.456955, "t": 71.33471999999995, "r": 169.47015, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.7491912841797, "t": 96.71513366699219, "r": 547.22864, "b": 142.9807586669922, "coord_origin": "TOPLEFT"}, "confidence": 0.9866304993629456, "cells": [{"id": 4, "text": "Outer joins preserve one or both sides of two data sets. A row can be returned from the outer ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 547.22864, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "join query if it appears in the primary set (LEFT, RIGHT, or both in the case of FULL), as ", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 527.93719, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "shown in Figure 6-10. Column values from the secondary set are returned if the row has a ", "bbox": {"l": 136.8, "t": 121.48834000000011, "r": 536.82648, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "match in the primary set. Otherwise, NULL is returned for the column value by default.", "bbox": {"l": 136.8, "t": 133.48816, "r": 516.36261, "b": 142.70117000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "caption", "bbox": {"l": 136.09414672851562, "t": 375.3983154296875, "r": 334.3742370605469, "b": 384.94317626953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9473740458488464, "cells": [{"id": 8, "text": "Figure 6-10 Outer join without RCAC permission", "bbox": {"l": 136.8, "t": 376.27798, "r": 334.02512, "b": 384.603, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "picture", "bbox": {"l": 136.0685272216797, "t": 157.57115173339844, "r": 478.2557678222656, "b": 372.21685791015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9835702180862427, "cells": [{"id": 9, "text": "Set A", "bbox": {"l": 245.52909999999997, "t": 356.12268000000006, "r": 283.88458, "b": 371.44269, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Set B", "bbox": {"l": 356.27518, "t": 356.12268000000006, "r": 393.86646, "b": 371.44269, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 109, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.17929077148438, "t": 754.3489990234375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9131594896316528, "cells": [{"id": 0, "text": "94 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "94"}, {"label": "page_footer", "id": 1, "page_no": 109, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.3522720336914, "t": 754.6829833984375, "r": 334.42142, "b": 763.9155883789062, "coord_origin": "TOPLEFT"}, "confidence": 0.9499405026435852, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "section_header", "id": 2, "page_no": 109, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.229248046875, "t": 70.42779541015625, "r": 169.51583862304688, "b": 83.49371337890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9645467400550842, "cells": [{"id": 2, "text": "6.3.2", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 94.717293, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Outer joins", "bbox": {"l": 98.456955, "t": 71.33471999999995, "r": 169.47015, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "6.3.2 Outer joins"}, {"label": "text", "id": 3, "page_no": 109, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.7491912841797, "t": 96.71513366699219, "r": 547.22864, "b": 142.9807586669922, "coord_origin": "TOPLEFT"}, "confidence": 0.9866304993629456, "cells": [{"id": 4, "text": "Outer joins preserve one or both sides of two data sets. A row can be returned from the outer ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 547.22864, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "join query if it appears in the primary set (LEFT, RIGHT, or both in the case of FULL), as ", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 527.93719, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "shown in Figure 6-10. Column values from the secondary set are returned if the row has a ", "bbox": {"l": 136.8, "t": 121.48834000000011, "r": 536.82648, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "match in the primary set. Otherwise, NULL is returned for the column value by default.", "bbox": {"l": 136.8, "t": 133.48816, "r": 516.36261, "b": 142.70117000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Outer joins preserve one or both sides of two data sets. A row can be returned from the outer join query if it appears in the primary set (LEFT, RIGHT, or both in the case of FULL), as shown in Figure 6-10. Column values from the secondary set are returned if the row has a match in the primary set. Otherwise, NULL is returned for the column value by default."}, {"label": "caption", "id": 4, "page_no": 109, "cluster": {"id": 4, "label": "caption", "bbox": {"l": 136.09414672851562, "t": 375.3983154296875, "r": 334.3742370605469, "b": 384.94317626953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9473740458488464, "cells": [{"id": 8, "text": "Figure 6-10 Outer join without RCAC permission", "bbox": {"l": 136.8, "t": 376.27798, "r": 334.02512, "b": 384.603, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-10 Outer join without RCAC permission"}, {"label": "picture", "id": 5, "page_no": 109, "cluster": {"id": 5, "label": "picture", "bbox": {"l": 136.0685272216797, "t": 157.57115173339844, "r": 478.2557678222656, "b": 372.21685791015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9835702180862427, "cells": [{"id": 9, "text": "Set A", "bbox": {"l": 245.52909999999997, "t": 356.12268000000006, "r": 283.88458, "b": 371.44269, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Set B", "bbox": {"l": 356.27518, "t": 356.12268000000006, "r": 393.86646, "b": 371.44269, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "section_header", "id": 2, "page_no": 109, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.229248046875, "t": 70.42779541015625, "r": 169.51583862304688, "b": 83.49371337890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9645467400550842, "cells": [{"id": 2, "text": "6.3.2", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 94.717293, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Outer joins", "bbox": {"l": 98.456955, "t": 71.33471999999995, "r": 169.47015, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "6.3.2 Outer joins"}, {"label": "text", "id": 3, "page_no": 109, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.7491912841797, "t": 96.71513366699219, "r": 547.22864, "b": 142.9807586669922, "coord_origin": "TOPLEFT"}, "confidence": 0.9866304993629456, "cells": [{"id": 4, "text": "Outer joins preserve one or both sides of two data sets. A row can be returned from the outer ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 547.22864, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "join query if it appears in the primary set (LEFT, RIGHT, or both in the case of FULL), as ", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 527.93719, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "shown in Figure 6-10. Column values from the secondary set are returned if the row has a ", "bbox": {"l": 136.8, "t": 121.48834000000011, "r": 536.82648, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "match in the primary set. Otherwise, NULL is returned for the column value by default.", "bbox": {"l": 136.8, "t": 133.48816, "r": 516.36261, "b": 142.70117000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Outer joins preserve one or both sides of two data sets. A row can be returned from the outer join query if it appears in the primary set (LEFT, RIGHT, or both in the case of FULL), as shown in Figure 6-10. Column values from the secondary set are returned if the row has a match in the primary set. Otherwise, NULL is returned for the column value by default."}, {"label": "caption", "id": 4, "page_no": 109, "cluster": {"id": 4, "label": "caption", "bbox": {"l": 136.09414672851562, "t": 375.3983154296875, "r": 334.3742370605469, "b": 384.94317626953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9473740458488464, "cells": [{"id": 8, "text": "Figure 6-10 Outer join without RCAC permission", "bbox": {"l": 136.8, "t": 376.27798, "r": 334.02512, "b": 384.603, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-10 Outer join without RCAC permission"}, {"label": "picture", "id": 5, "page_no": 109, "cluster": {"id": 5, "label": "picture", "bbox": {"l": 136.0685272216797, "t": 157.57115173339844, "r": 478.2557678222656, "b": 372.21685791015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9835702180862427, "cells": [{"id": 9, "text": "Set A", "bbox": {"l": 245.52909999999997, "t": 356.12268000000006, "r": 283.88458, "b": 371.44269, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Set B", "bbox": {"l": 356.27518, "t": 356.12268000000006, "r": 393.86646, "b": 371.44269, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 109, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.17929077148438, "t": 754.3489990234375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9131594896316528, "cells": [{"id": 0, "text": "94 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "94"}, {"label": "page_footer", "id": 1, "page_no": 109, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.3522720336914, "t": 754.6829833984375, "r": 334.42142, "b": 763.9155883789062, "coord_origin": "TOPLEFT"}, "confidence": 0.9499405026435852, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 110, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "95", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Given that row permission serves to eliminate logically rows from one or more sets, more ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 531.78638, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "column values that are returned from the secondary table in outer join can be NULL when ", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 535.29822, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "RCAC is applied, as shown in Figure 6-11.", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 324.68701, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Figure 6-11 Outer join with RCAC permission", "bbox": {"l": 136.8, "t": 425.478, "r": 321.55734, "b": 433.80301, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Effect of column masks on inner joins:", "bbox": {"l": 142.8, "t": 123.52855999999997, "r": 326.52615, "b": 132.74158, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " Because column masks are applied after the ", "bbox": {"l": 326.52017, "t": 123.52855999999997, "r": 529.25281, "b": 132.74158, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "query final results are determined, the masked value has no effect on the join processing ", "bbox": {"l": 142.8, "t": 135.52837999999997, "r": 537.63239, "b": 144.74139000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "and corresponding query result set.", "bbox": {"l": 142.8, "t": 147.52819999999997, "r": 299.81543, "b": 156.74121000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Outer Join with RCAC Permission", "bbox": {"l": 217.42469999999997, "t": 186.37725999999998, "r": 429.09708, "b": 199.98357999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Permitted", "bbox": {"l": 321.53659, "t": 269.08660999999995, "r": 395.05688, "b": 285.10199, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Set A", "bbox": {"l": 247.25200000000004, "t": 398.64859, "r": 285.64417, "b": 413.98325, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Set B", "bbox": {"l": 358.10394, "t": 398.64859, "r": 395.73117, "b": 413.98325, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 376.03192138671875, "t": 754.89306640625, "r": 523.62878, "b": 764.0955810546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9518811702728271, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.5347900390625, "t": 754.2847900390625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9189174175262451, "cells": [{"id": 1, "text": "95", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.9468994140625, "t": 70.65094757080078, "r": 535.29822, "b": 104.91271209716797, "coord_origin": "TOPLEFT"}, "confidence": 0.9831045269966125, "cells": [{"id": 2, "text": "Given that row permission serves to eliminate logically rows from one or more sets, more ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 531.78638, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "column values that are returned from the secondary table in outer join can be NULL when ", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 535.29822, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "RCAC is applied, as shown in Figure 6-11.", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 324.68701, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 135.94920349121094, "t": 424.67193603515625, "r": 321.8890380859375, "b": 434.1568603515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9448755383491516, "cells": [{"id": 5, "text": "Figure 6-11 Outer join with RCAC permission", "bbox": {"l": 136.8, "t": 425.478, "r": 321.55734, "b": 433.80301, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 142.19854736328125, "t": 122.269287109375, "r": 537.63239, "b": 157.0519561767578, "coord_origin": "TOPLEFT"}, "confidence": 0.968166708946228, "cells": [{"id": 6, "text": "Effect of column masks on inner joins:", "bbox": {"l": 142.8, "t": 123.52855999999997, "r": 326.52615, "b": 132.74158, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " Because column masks are applied after the ", "bbox": {"l": 326.52017, "t": 123.52855999999997, "r": 529.25281, "b": 132.74158, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "query final results are determined, the masked value has no effect on the join processing ", "bbox": {"l": 142.8, "t": 135.52837999999997, "r": 537.63239, "b": 144.74139000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "and corresponding query result set.", "bbox": {"l": 142.8, "t": 147.52819999999997, "r": 299.81543, "b": 156.74121000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "picture", "bbox": {"l": 136.01914978027344, "t": 183.2970428466797, "r": 483.0831298828125, "b": 421.65618896484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9844624996185303, "cells": [{"id": 10, "text": "Outer Join with RCAC Permission", "bbox": {"l": 217.42469999999997, "t": 186.37725999999998, "r": 429.09708, "b": 199.98357999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Permitted", "bbox": {"l": 321.53659, "t": 269.08660999999995, "r": 395.05688, "b": 285.10199, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Set A", "bbox": {"l": 247.25200000000004, "t": 398.64859, "r": 285.64417, "b": 413.98325, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Set B", "bbox": {"l": 358.10394, "t": 398.64859, "r": 395.73117, "b": 413.98325, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 110, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 376.03192138671875, "t": 754.89306640625, "r": 523.62878, "b": 764.0955810546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9518811702728271, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 110, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.5347900390625, "t": 754.2847900390625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9189174175262451, "cells": [{"id": 1, "text": "95", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "95"}, {"label": "text", "id": 2, "page_no": 110, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.9468994140625, "t": 70.65094757080078, "r": 535.29822, "b": 104.91271209716797, "coord_origin": "TOPLEFT"}, "confidence": 0.9831045269966125, "cells": [{"id": 2, "text": "Given that row permission serves to eliminate logically rows from one or more sets, more ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 531.78638, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "column values that are returned from the secondary table in outer join can be NULL when ", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 535.29822, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "RCAC is applied, as shown in Figure 6-11.", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 324.68701, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Given that row permission serves to eliminate logically rows from one or more sets, more column values that are returned from the secondary table in outer join can be NULL when RCAC is applied, as shown in Figure 6-11."}, {"label": "caption", "id": 3, "page_no": 110, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.94920349121094, "t": 424.67193603515625, "r": 321.8890380859375, "b": 434.1568603515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9448755383491516, "cells": [{"id": 5, "text": "Figure 6-11 Outer join with RCAC permission", "bbox": {"l": 136.8, "t": 425.478, "r": 321.55734, "b": 433.80301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-11 Outer join with RCAC permission"}, {"label": "text", "id": 4, "page_no": 110, "cluster": {"id": 4, "label": "text", "bbox": {"l": 142.19854736328125, "t": 122.269287109375, "r": 537.63239, "b": 157.0519561767578, "coord_origin": "TOPLEFT"}, "confidence": 0.968166708946228, "cells": [{"id": 6, "text": "Effect of column masks on inner joins:", "bbox": {"l": 142.8, "t": 123.52855999999997, "r": 326.52615, "b": 132.74158, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " Because column masks are applied after the ", "bbox": {"l": 326.52017, "t": 123.52855999999997, "r": 529.25281, "b": 132.74158, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "query final results are determined, the masked value has no effect on the join processing ", "bbox": {"l": 142.8, "t": 135.52837999999997, "r": 537.63239, "b": 144.74139000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "and corresponding query result set.", "bbox": {"l": 142.8, "t": 147.52819999999997, "r": 299.81543, "b": 156.74121000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Effect of column masks on inner joins: Because column masks are applied after the query final results are determined, the masked value has no effect on the join processing and corresponding query result set."}, {"label": "picture", "id": 5, "page_no": 110, "cluster": {"id": 5, "label": "picture", "bbox": {"l": 136.01914978027344, "t": 183.2970428466797, "r": 483.0831298828125, "b": 421.65618896484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9844624996185303, "cells": [{"id": 10, "text": "Outer Join with RCAC Permission", "bbox": {"l": 217.42469999999997, "t": 186.37725999999998, "r": 429.09708, "b": 199.98357999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Permitted", "bbox": {"l": 321.53659, "t": 269.08660999999995, "r": 395.05688, "b": 285.10199, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Set A", "bbox": {"l": 247.25200000000004, "t": 398.64859, "r": 285.64417, "b": 413.98325, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Set B", "bbox": {"l": 358.10394, "t": 398.64859, "r": 395.73117, "b": 413.98325, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 110, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.9468994140625, "t": 70.65094757080078, "r": 535.29822, "b": 104.91271209716797, "coord_origin": "TOPLEFT"}, "confidence": 0.9831045269966125, "cells": [{"id": 2, "text": "Given that row permission serves to eliminate logically rows from one or more sets, more ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 531.78638, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "column values that are returned from the secondary table in outer join can be NULL when ", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 535.29822, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "RCAC is applied, as shown in Figure 6-11.", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 324.68701, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Given that row permission serves to eliminate logically rows from one or more sets, more column values that are returned from the secondary table in outer join can be NULL when RCAC is applied, as shown in Figure 6-11."}, {"label": "caption", "id": 3, "page_no": 110, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.94920349121094, "t": 424.67193603515625, "r": 321.8890380859375, "b": 434.1568603515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9448755383491516, "cells": [{"id": 5, "text": "Figure 6-11 Outer join with RCAC permission", "bbox": {"l": 136.8, "t": 425.478, "r": 321.55734, "b": 433.80301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-11 Outer join with RCAC permission"}, {"label": "text", "id": 4, "page_no": 110, "cluster": {"id": 4, "label": "text", "bbox": {"l": 142.19854736328125, "t": 122.269287109375, "r": 537.63239, "b": 157.0519561767578, "coord_origin": "TOPLEFT"}, "confidence": 0.968166708946228, "cells": [{"id": 6, "text": "Effect of column masks on inner joins:", "bbox": {"l": 142.8, "t": 123.52855999999997, "r": 326.52615, "b": 132.74158, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " Because column masks are applied after the ", "bbox": {"l": 326.52017, "t": 123.52855999999997, "r": 529.25281, "b": 132.74158, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "query final results are determined, the masked value has no effect on the join processing ", "bbox": {"l": 142.8, "t": 135.52837999999997, "r": 537.63239, "b": 144.74139000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "and corresponding query result set.", "bbox": {"l": 142.8, "t": 147.52819999999997, "r": 299.81543, "b": 156.74121000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Effect of column masks on inner joins: Because column masks are applied after the query final results are determined, the masked value has no effect on the join processing and corresponding query result set."}, {"label": "picture", "id": 5, "page_no": 110, "cluster": {"id": 5, "label": "picture", "bbox": {"l": 136.01914978027344, "t": 183.2970428466797, "r": 483.0831298828125, "b": 421.65618896484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9844624996185303, "cells": [{"id": 10, "text": "Outer Join with RCAC Permission", "bbox": {"l": 217.42469999999997, "t": 186.37725999999998, "r": 429.09708, "b": 199.98357999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Permitted", "bbox": {"l": 321.53659, "t": 269.08660999999995, "r": 395.05688, "b": 285.10199, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Set A", "bbox": {"l": 247.25200000000004, "t": 398.64859, "r": 285.64417, "b": 413.98325, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Set B", "bbox": {"l": 358.10394, "t": 398.64859, "r": 395.73117, "b": 413.98325, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 110, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 376.03192138671875, "t": 754.89306640625, "r": 523.62878, "b": 764.0955810546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9518811702728271, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 110, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.5347900390625, "t": 754.2847900390625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9189174175262451, "cells": [{"id": 1, "text": "95", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "95"}]}}, {"page_no": 111, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "96 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "6.3.3", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 94.481644, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Exception joins", "bbox": {"l": 98.191849, "t": 71.33471999999995, "r": 196.83258, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Exception joins preserve one side of two data sets. A row can be returned from the exception ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 547.29144, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "join query if it appears in the primary set (LEFT or RIGHT) and the row does not appear in the ", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 547.1618, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "secondary set, as shown in Figure 6-12. Column values from the secondary set are returned ", "bbox": {"l": 136.8, "t": 121.48834000000011, "r": 547.28455, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "as NULL by default.", "bbox": {"l": 136.8, "t": 133.48816, "r": 224.03667, "b": 142.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Figure 6-12 Exception join without RCAC permission", "bbox": {"l": 136.8, "t": 398.23801, "r": 351.00632, "b": 406.56302, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Given that row permission serves to eliminate logically rows from one or more sets, more ", "bbox": {"l": 136.8, "t": 424.24872, "r": 531.78979, "b": 433.4617, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "rows can appear to be exceptions when RCAC is applied, as shown in Figure 6-13. Also, ", "bbox": {"l": 136.8, "t": 436.24854, "r": 530.54565, "b": 445.46151999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "because column masks are applied after the query final results are determined, the masked ", "bbox": {"l": 136.8, "t": 448.2483500000001, "r": 544.33844, "b": 457.46133, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "value has no effect on the join processing and corresponding query result set.", "bbox": {"l": 136.8, "t": 460.24817, "r": 480.02267000000006, "b": 469.46115, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Figure 6-13 Exception join with RCAC permission", "bbox": {"l": 136.8, "t": 722.958, "r": 338.56827, "b": 731.282997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Exception Join without RCAC Permission", "bbox": {"l": 191.03551, "t": 156.67548, "r": 450.43784, "b": 170.29900999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Set A", "bbox": {"l": 244.7269, "t": 369.21613, "r": 283.16766, "b": 384.57019, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Set B", "bbox": {"l": 355.71924, "t": 369.21613, "r": 393.3941, "b": 384.57019, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Exception Join with RCAC Permission", "bbox": {"l": 206.02071, "t": 484.02805, "r": 443.83853, "b": 497.68188, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Permitted", "bbox": {"l": 323.2894, "t": 567.02611, "r": 397.06619, "b": 583.09737, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Set A", "bbox": {"l": 248.74560999999997, "t": 697.040131, "r": 287.2717, "b": 712.428268, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Set B", "bbox": {"l": 359.98425, "t": 697.040131, "r": 397.74274, "b": 712.428268, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.0777587890625, "t": 754.3192749023438, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9142870903015137, "cells": [{"id": 0, "text": "96 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.31871032714844, "t": 754.6510620117188, "r": 334.42142, "b": 763.94580078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9500807523727417, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.29151153564453, "t": 70.38421630859375, "r": 196.83258, "b": 83.45001983642578, "coord_origin": "TOPLEFT"}, "confidence": 0.9660816788673401, "cells": [{"id": 2, "text": "6.3.3", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 94.481644, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Exception joins", "bbox": {"l": 98.191849, "t": 71.33471999999995, "r": 196.83258, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.8982696533203, "t": 96.56317138671875, "r": 547.29144, "b": 143.43101501464844, "coord_origin": "TOPLEFT"}, "confidence": 0.9861393570899963, "cells": [{"id": 4, "text": "Exception joins preserve one side of two data sets. A row can be returned from the exception ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 547.29144, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "join query if it appears in the primary set (LEFT or RIGHT) and the row does not appear in the ", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 547.1618, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "secondary set, as shown in Figure 6-12. Column values from the secondary set are returned ", "bbox": {"l": 136.8, "t": 121.48834000000011, "r": 547.28455, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "as NULL by default.", "bbox": {"l": 136.8, "t": 133.48816, "r": 224.03667, "b": 142.70117000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "caption", "bbox": {"l": 135.93870544433594, "t": 397.3731689453125, "r": 351.4439392089844, "b": 406.8922424316406, "coord_origin": "TOPLEFT"}, "confidence": 0.9481934905052185, "cells": [{"id": 8, "text": "Figure 6-12 Exception join without RCAC permission", "bbox": {"l": 136.8, "t": 398.23801, "r": 351.00632, "b": 406.56302, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.85084533691406, "t": 423.3223876953125, "r": 544.33844, "b": 469.4621276855469, "coord_origin": "TOPLEFT"}, "confidence": 0.9827116131782532, "cells": [{"id": 9, "text": "Given that row permission serves to eliminate logically rows from one or more sets, more ", "bbox": {"l": 136.8, "t": 424.24872, "r": 531.78979, "b": 433.4617, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "rows can appear to be exceptions when RCAC is applied, as shown in Figure 6-13. Also, ", "bbox": {"l": 136.8, "t": 436.24854, "r": 530.54565, "b": 445.46151999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "because column masks are applied after the query final results are determined, the masked ", "bbox": {"l": 136.8, "t": 448.2483500000001, "r": 544.33844, "b": 457.46133, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "value has no effect on the join processing and corresponding query result set.", "bbox": {"l": 136.8, "t": 460.24817, "r": 480.02267000000006, "b": 469.46115, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "caption", "bbox": {"l": 136.105224609375, "t": 721.96630859375, "r": 339.2431945800781, "b": 731.4581298828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9437704086303711, "cells": [{"id": 13, "text": "Figure 6-13 Exception join with RCAC permission", "bbox": {"l": 136.8, "t": 722.958, "r": 338.56827, "b": 731.282997, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "picture", "bbox": {"l": 136.2607879638672, "t": 156.67548, "r": 484.0173034667969, "b": 394.3146667480469, "coord_origin": "TOPLEFT"}, "confidence": 0.9834190607070923, "cells": [{"id": 14, "text": "Exception Join without RCAC Permission", "bbox": {"l": 191.03551, "t": 156.67548, "r": 450.43784, "b": 170.29900999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Set A", "bbox": {"l": 244.7269, "t": 369.21613, "r": 283.16766, "b": 384.57019, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Set B", "bbox": {"l": 355.71924, "t": 369.21613, "r": 393.3941, "b": 384.57019, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 135.89076232910156, "t": 484.02805, "r": 485.4429931640625, "b": 719.3485717773438, "coord_origin": "TOPLEFT"}, "confidence": 0.9840064644813538, "cells": [{"id": 17, "text": "Exception Join with RCAC Permission", "bbox": {"l": 206.02071, "t": 484.02805, "r": 443.83853, "b": 497.68188, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Permitted", "bbox": {"l": 323.2894, "t": 567.02611, "r": 397.06619, "b": 583.09737, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Set A", "bbox": {"l": 248.74560999999997, "t": 697.040131, "r": 287.2717, "b": 712.428268, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Set B", "bbox": {"l": 359.98425, "t": 697.040131, "r": 397.74274, "b": 712.428268, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 111, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.0777587890625, "t": 754.3192749023438, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9142870903015137, "cells": [{"id": 0, "text": "96 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "96"}, {"label": "page_footer", "id": 1, "page_no": 111, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.31871032714844, "t": 754.6510620117188, "r": 334.42142, "b": 763.94580078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9500807523727417, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "section_header", "id": 2, "page_no": 111, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.29151153564453, "t": 70.38421630859375, "r": 196.83258, "b": 83.45001983642578, "coord_origin": "TOPLEFT"}, "confidence": 0.9660816788673401, "cells": [{"id": 2, "text": "6.3.3", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 94.481644, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Exception joins", "bbox": {"l": 98.191849, "t": 71.33471999999995, "r": 196.83258, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "6.3.3 Exception joins"}, {"label": "text", "id": 3, "page_no": 111, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.8982696533203, "t": 96.56317138671875, "r": 547.29144, "b": 143.43101501464844, "coord_origin": "TOPLEFT"}, "confidence": 0.9861393570899963, "cells": [{"id": 4, "text": "Exception joins preserve one side of two data sets. A row can be returned from the exception ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 547.29144, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "join query if it appears in the primary set (LEFT or RIGHT) and the row does not appear in the ", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 547.1618, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "secondary set, as shown in Figure 6-12. Column values from the secondary set are returned ", "bbox": {"l": 136.8, "t": 121.48834000000011, "r": 547.28455, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "as NULL by default.", "bbox": {"l": 136.8, "t": 133.48816, "r": 224.03667, "b": 142.70117000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Exception joins preserve one side of two data sets. A row can be returned from the exception join query if it appears in the primary set (LEFT or RIGHT) and the row does not appear in the secondary set, as shown in Figure 6-12. Column values from the secondary set are returned as NULL by default."}, {"label": "caption", "id": 4, "page_no": 111, "cluster": {"id": 4, "label": "caption", "bbox": {"l": 135.93870544433594, "t": 397.3731689453125, "r": 351.4439392089844, "b": 406.8922424316406, "coord_origin": "TOPLEFT"}, "confidence": 0.9481934905052185, "cells": [{"id": 8, "text": "Figure 6-12 Exception join without RCAC permission", "bbox": {"l": 136.8, "t": 398.23801, "r": 351.00632, "b": 406.56302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-12 Exception join without RCAC permission"}, {"label": "text", "id": 5, "page_no": 111, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.85084533691406, "t": 423.3223876953125, "r": 544.33844, "b": 469.4621276855469, "coord_origin": "TOPLEFT"}, "confidence": 0.9827116131782532, "cells": [{"id": 9, "text": "Given that row permission serves to eliminate logically rows from one or more sets, more ", "bbox": {"l": 136.8, "t": 424.24872, "r": 531.78979, "b": 433.4617, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "rows can appear to be exceptions when RCAC is applied, as shown in Figure 6-13. Also, ", "bbox": {"l": 136.8, "t": 436.24854, "r": 530.54565, "b": 445.46151999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "because column masks are applied after the query final results are determined, the masked ", "bbox": {"l": 136.8, "t": 448.2483500000001, "r": 544.33844, "b": 457.46133, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "value has no effect on the join processing and corresponding query result set.", "bbox": {"l": 136.8, "t": 460.24817, "r": 480.02267000000006, "b": 469.46115, "coord_origin": "TOPLEFT"}}]}, "text": "Given that row permission serves to eliminate logically rows from one or more sets, more rows can appear to be exceptions when RCAC is applied, as shown in Figure 6-13. Also, because column masks are applied after the query final results are determined, the masked value has no effect on the join processing and corresponding query result set."}, {"label": "caption", "id": 6, "page_no": 111, "cluster": {"id": 6, "label": "caption", "bbox": {"l": 136.105224609375, "t": 721.96630859375, "r": 339.2431945800781, "b": 731.4581298828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9437704086303711, "cells": [{"id": 13, "text": "Figure 6-13 Exception join with RCAC permission", "bbox": {"l": 136.8, "t": 722.958, "r": 338.56827, "b": 731.282997, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-13 Exception join with RCAC permission"}, {"label": "picture", "id": 7, "page_no": 111, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 136.2607879638672, "t": 156.67548, "r": 484.0173034667969, "b": 394.3146667480469, "coord_origin": "TOPLEFT"}, "confidence": 0.9834190607070923, "cells": [{"id": 14, "text": "Exception Join without RCAC Permission", "bbox": {"l": 191.03551, "t": 156.67548, "r": 450.43784, "b": 170.29900999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Set A", "bbox": {"l": 244.7269, "t": 369.21613, "r": 283.16766, "b": 384.57019, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Set B", "bbox": {"l": 355.71924, "t": 369.21613, "r": 393.3941, "b": 384.57019, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 8, "page_no": 111, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 135.89076232910156, "t": 484.02805, "r": 485.4429931640625, "b": 719.3485717773438, "coord_origin": "TOPLEFT"}, "confidence": 0.9840064644813538, "cells": [{"id": 17, "text": "Exception Join with RCAC Permission", "bbox": {"l": 206.02071, "t": 484.02805, "r": 443.83853, "b": 497.68188, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Permitted", "bbox": {"l": 323.2894, "t": 567.02611, "r": 397.06619, "b": 583.09737, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Set A", "bbox": {"l": 248.74560999999997, "t": 697.040131, "r": 287.2717, "b": 712.428268, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Set B", "bbox": {"l": 359.98425, "t": 697.040131, "r": 397.74274, "b": 712.428268, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "section_header", "id": 2, "page_no": 111, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.29151153564453, "t": 70.38421630859375, "r": 196.83258, "b": 83.45001983642578, "coord_origin": "TOPLEFT"}, "confidence": 0.9660816788673401, "cells": [{"id": 2, "text": "6.3.3", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 94.481644, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Exception joins", "bbox": {"l": 98.191849, "t": 71.33471999999995, "r": 196.83258, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "6.3.3 Exception joins"}, {"label": "text", "id": 3, "page_no": 111, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.8982696533203, "t": 96.56317138671875, "r": 547.29144, "b": 143.43101501464844, "coord_origin": "TOPLEFT"}, "confidence": 0.9861393570899963, "cells": [{"id": 4, "text": "Exception joins preserve one side of two data sets. A row can be returned from the exception ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 547.29144, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "join query if it appears in the primary set (LEFT or RIGHT) and the row does not appear in the ", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 547.1618, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "secondary set, as shown in Figure 6-12. Column values from the secondary set are returned ", "bbox": {"l": 136.8, "t": 121.48834000000011, "r": 547.28455, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "as NULL by default.", "bbox": {"l": 136.8, "t": 133.48816, "r": 224.03667, "b": 142.70117000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Exception joins preserve one side of two data sets. A row can be returned from the exception join query if it appears in the primary set (LEFT or RIGHT) and the row does not appear in the secondary set, as shown in Figure 6-12. Column values from the secondary set are returned as NULL by default."}, {"label": "caption", "id": 4, "page_no": 111, "cluster": {"id": 4, "label": "caption", "bbox": {"l": 135.93870544433594, "t": 397.3731689453125, "r": 351.4439392089844, "b": 406.8922424316406, "coord_origin": "TOPLEFT"}, "confidence": 0.9481934905052185, "cells": [{"id": 8, "text": "Figure 6-12 Exception join without RCAC permission", "bbox": {"l": 136.8, "t": 398.23801, "r": 351.00632, "b": 406.56302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-12 Exception join without RCAC permission"}, {"label": "text", "id": 5, "page_no": 111, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.85084533691406, "t": 423.3223876953125, "r": 544.33844, "b": 469.4621276855469, "coord_origin": "TOPLEFT"}, "confidence": 0.9827116131782532, "cells": [{"id": 9, "text": "Given that row permission serves to eliminate logically rows from one or more sets, more ", "bbox": {"l": 136.8, "t": 424.24872, "r": 531.78979, "b": 433.4617, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "rows can appear to be exceptions when RCAC is applied, as shown in Figure 6-13. Also, ", "bbox": {"l": 136.8, "t": 436.24854, "r": 530.54565, "b": 445.46151999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "because column masks are applied after the query final results are determined, the masked ", "bbox": {"l": 136.8, "t": 448.2483500000001, "r": 544.33844, "b": 457.46133, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "value has no effect on the join processing and corresponding query result set.", "bbox": {"l": 136.8, "t": 460.24817, "r": 480.02267000000006, "b": 469.46115, "coord_origin": "TOPLEFT"}}]}, "text": "Given that row permission serves to eliminate logically rows from one or more sets, more rows can appear to be exceptions when RCAC is applied, as shown in Figure 6-13. Also, because column masks are applied after the query final results are determined, the masked value has no effect on the join processing and corresponding query result set."}, {"label": "caption", "id": 6, "page_no": 111, "cluster": {"id": 6, "label": "caption", "bbox": {"l": 136.105224609375, "t": 721.96630859375, "r": 339.2431945800781, "b": 731.4581298828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9437704086303711, "cells": [{"id": 13, "text": "Figure 6-13 Exception join with RCAC permission", "bbox": {"l": 136.8, "t": 722.958, "r": 338.56827, "b": 731.282997, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-13 Exception join with RCAC permission"}, {"label": "picture", "id": 7, "page_no": 111, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 136.2607879638672, "t": 156.67548, "r": 484.0173034667969, "b": 394.3146667480469, "coord_origin": "TOPLEFT"}, "confidence": 0.9834190607070923, "cells": [{"id": 14, "text": "Exception Join without RCAC Permission", "bbox": {"l": 191.03551, "t": 156.67548, "r": 450.43784, "b": 170.29900999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Set A", "bbox": {"l": 244.7269, "t": 369.21613, "r": 283.16766, "b": 384.57019, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Set B", "bbox": {"l": 355.71924, "t": 369.21613, "r": 393.3941, "b": 384.57019, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 8, "page_no": 111, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 135.89076232910156, "t": 484.02805, "r": 485.4429931640625, "b": 719.3485717773438, "coord_origin": "TOPLEFT"}, "confidence": 0.9840064644813538, "cells": [{"id": 17, "text": "Exception Join with RCAC Permission", "bbox": {"l": 206.02071, "t": 484.02805, "r": 443.83853, "b": 497.68188, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Permitted", "bbox": {"l": 323.2894, "t": 567.02611, "r": 397.06619, "b": 583.09737, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Set A", "bbox": {"l": 248.74560999999997, "t": 697.040131, "r": 287.2717, "b": 712.428268, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Set B", "bbox": {"l": 359.98425, "t": 697.040131, "r": 397.74274, "b": 712.428268, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 111, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.0777587890625, "t": 754.3192749023438, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9142870903015137, "cells": [{"id": 0, "text": "96 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "96"}, {"label": "page_footer", "id": 1, "page_no": 111, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.31871032714844, "t": 754.6510620117188, "r": 334.42142, "b": 763.94580078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9500807523727417, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 112, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "97", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "6.4", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 87.197906, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Monitoring, analyzing, and debugging with RCAC", "bbox": {"l": 91.677475, "t": 71.22069999999997, "r": 469.47693, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "It is assumed (and it is a critical success factor) that the database engineer or application ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 532.22595, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "developer has a thorough understanding of the DB2 for i Query Optimizer, Database Engine, ", "bbox": {"l": 136.8, "t": 115.48852999999997, "r": 547.22473, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "and all the associated tools and techniques.", "bbox": {"l": 136.8, "t": 127.48834000000011, "r": 330.59174, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "The monitoring, analyzing, and debugging process basically stays the same when RCAC row ", "bbox": {"l": 136.8, "t": 149.50793, "r": 547.19684, "b": 158.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "permissions or column masks are in place, with a few important differences:", "bbox": {"l": 136.8, "t": 161.50775, "r": 471.66223, "b": 170.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 178.63696000000004, "r": 141.78, "b": 187.41174, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "The underlying data access plan can be different and more complex based on the rule ", "bbox": {"l": 151.20016, "t": 178.48755000000006, "r": 534.25262, "b": 187.70056, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "text.", "bbox": {"l": 151.20016, "t": 190.48737000000006, "r": 169.73871, "b": 199.70038, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "GLYPH", "bbox": {"l": 136.8, "t": 207.67633, "r": 141.78, "b": 216.45110999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "The database results can be reduced or modified based on the rule text and user profile.", "bbox": {"l": 151.20016, "t": 207.52692000000002, "r": 541.55432, "b": 216.73992999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "GLYPH", "bbox": {"l": 136.8, "t": 224.65612999999996, "r": 141.78, "b": 233.43091000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "The run time of the request can be affected either positively or negatively based on the ", "bbox": {"l": 151.20016, "t": 224.50671, "r": 536.04651, "b": 233.71973000000003, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "rule text.", "bbox": {"l": 151.20016, "t": 236.50653, "r": 189.53125, "b": 245.71954000000005, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "GLYPH", "bbox": {"l": 136.8, "t": 253.63574000000006, "r": 141.78, "b": 262.41052, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "For high-level language record level access, query plans must be considered, and not just ", "bbox": {"l": 151.20016, "t": 253.48632999999995, "r": 547.22461, "b": 262.69934, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "program code.", "bbox": {"l": 151.20016, "t": 265.48614999999995, "r": 215.34057999999996, "b": 274.69916, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "During analyzing and debugging, it is important to account for all of the RCAC definitions for ", "bbox": {"l": 136.8, "t": 287.50574, "r": 544.67383, "b": 296.71871999999996, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "each table or file to understand the logic and corresponding work that is associated with ", "bbox": {"l": 136.8, "t": 299.5055500000001, "r": 526.74591, "b": 308.7185400000001, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "processing the row permissions and column masks. It is also important to realize that, ", "bbox": {"l": 136.8, "t": 311.50537, "r": 517.995, "b": 320.71835, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "depending on the user profile in effect at run time, the database actions and query results can ", "bbox": {"l": 136.8, "t": 323.50519, "r": 547.22968, "b": 332.71816999999993, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "be different.", "bbox": {"l": 136.8, "t": 335.50500000000005, "r": 189.23442, "b": 344.71799000000004, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "RCAC is designed and implemented to be transparent to the user. It is possible for user ", "bbox": {"l": 136.8, "t": 357.52457, "r": 524.91028, "b": 366.73755, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "\u201cMike\u201d and user \u201cHernando\u201d to run the exact same query, against the exact same data on the ", "bbox": {"l": 136.8, "t": 369.52438, "r": 547.27863, "b": 378.73737, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "exact same system, and get different result sets. There is no error, no warning, and no ", "bbox": {"l": 136.8, "t": 381.5242, "r": 520.1225, "b": 390.73718, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "indication that RCAC reduced or modified the respective answers that are returned. ", "bbox": {"l": 136.8, "t": 393.52401999999995, "r": 507.29110999999995, "b": 402.737, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Furthermore, it is also likely that user \u201cMike\u201d and user \u201cHernando\u201d have different query run ", "bbox": {"l": 136.8, "t": 405.52383, "r": 536.83752, "b": 414.73682, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "times even though it appears that everything is the same for both users. The actual query ", "bbox": {"l": 136.8, "t": 417.52365, "r": 533.12726, "b": 426.73663, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "plan contains the RCAC logic, and this additional code path can alter the amount of work that ", "bbox": {"l": 136.8, "t": 429.5234699999999, "r": 547.22693, "b": 438.73645, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "is needed to produce results, based on the user running the query.", "bbox": {"l": 136.80002, "t": 441.52328, "r": 430.67883, "b": 450.73627, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "When monitoring, analyzing, and debugging a database process when RCAC is enabled, it is ", "bbox": {"l": 136.80002, "t": 463.48309, "r": 547.32837, "b": 472.69608, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "critical to keep as many of the \u201cvariables\u201d the same as possible. Use a good scientific ", "bbox": {"l": 136.80002, "t": 475.48291, "r": 514.85553, "b": 484.69589, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "process. For example, when re-creating a problem situation running under the same user ", "bbox": {"l": 136.80002, "t": 487.54248, "r": 532.38837, "b": 496.75546, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "profile with the same data and under the same conditions, it is almost mandatory. Otherwise, ", "bbox": {"l": 136.80002, "t": 499.5423, "r": 547.29474, "b": 508.75528, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "the database behavior and query results can be different.", "bbox": {"l": 136.80002, "t": 511.54211, "r": 389.40143, "b": 520.7551000000001, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "To successfully perform monitoring, analyzing, and debugging when RCAC is enabled likely ", "bbox": {"l": 136.80002, "t": 533.5019199999999, "r": 543.10217, "b": 542.71492, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "involves changes in the security and data access policies of the organization, and require new ", "bbox": {"l": 136.8, "t": 545.50172, "r": 547.25159, "b": 554.71472, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "responsibilities, authority, and oversight within the data-centric application development ", "bbox": {"l": 136.8, "t": 557.50153, "r": 523.1922, "b": 566.71452, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "community. As such, establishing and staffing the position of \u201cdatabase engineer\u201d becomes ", "bbox": {"l": 136.79999, "t": 569.50133, "r": 541.04547, "b": 578.71432, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "even more important.", "bbox": {"l": 136.79999, "t": 581.50113, "r": 231.05352999999997, "b": 590.7141300000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "6.4.1", "bbox": {"l": 64.800003, "t": 611.39471, "r": 94.078636, "b": 623.3827200000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Query monitoring and analysis tools", "bbox": {"l": 97.738449, "t": 611.39471, "r": 325.99066, "b": 623.3827200000001, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "When monitoring and collecting metrics on database requests, DB2 for i provides additional ", "bbox": {"l": 136.8, "t": 637.54872, "r": 543.20374, "b": 646.76172, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "information that indicates row permissions or column masks are being applied. This ", "bbox": {"l": 136.8, "t": 649.54852, "r": 507.93053999999995, "b": 658.76152, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "information is integrated and part of the standard tools, such as Visual Explain, SQL Plan ", "bbox": {"l": 136.8, "t": 661.54832, "r": 532.96576, "b": 670.76133, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "Cache Snapshot, and SQL Performance Monitor.", "bbox": {"l": 136.8, "t": 673.54813, "r": 353.58246, "b": 682.76114, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 376.0887756347656, "t": 754.9174194335938, "r": 523.62878, "b": 764.0950927734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9518945813179016, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.5423583984375, "t": 754.1775512695312, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9179106950759888, "cells": [{"id": 1, "text": "97", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.39301300048828, "t": 69.98062896728516, "r": 469.47693, "b": 86.35014343261719, "coord_origin": "TOPLEFT"}, "confidence": 0.9647093415260315, "cells": [{"id": 2, "text": "6.4", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 87.197906, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Monitoring, analyzing, and debugging with RCAC", "bbox": {"l": 91.677475, "t": 71.22069999999997, "r": 469.47693, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.89646911621094, "t": 102.54719543457031, "r": 547.22473, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9837515950202942, "cells": [{"id": 4, "text": "It is assumed (and it is a critical success factor) that the database engineer or application ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 532.22595, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "developer has a thorough understanding of the DB2 for i Query Optimizer, Database Engine, ", "bbox": {"l": 136.8, "t": 115.48852999999997, "r": 547.22473, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "and all the associated tools and techniques.", "bbox": {"l": 136.8, "t": 127.48834000000011, "r": 330.59174, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.66171264648438, "t": 148.67874145507812, "r": 547.19684, "b": 170.99827575683594, "coord_origin": "TOPLEFT"}, "confidence": 0.9781493544578552, "cells": [{"id": 7, "text": "The monitoring, analyzing, and debugging process basically stays the same when RCAC row ", "bbox": {"l": 136.8, "t": 149.50793, "r": 547.19684, "b": 158.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "permissions or column masks are in place, with a few important differences:", "bbox": {"l": 136.8, "t": 161.50775, "r": 471.66223, "b": 170.72076000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 135.6549530029297, "t": 177.3022918701172, "r": 534.25262, "b": 199.70038, "coord_origin": "TOPLEFT"}, "confidence": 0.9730353951454163, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 178.63696000000004, "r": 141.78, "b": 187.41174, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "The underlying data access plan can be different and more complex based on the rule ", "bbox": {"l": 151.20016, "t": 178.48755000000006, "r": 534.25262, "b": 187.70056, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "text.", "bbox": {"l": 151.20016, "t": 190.48737000000006, "r": 169.73871, "b": 199.70038, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.5695037841797, "t": 206.69236755371094, "r": 541.55432, "b": 216.73992999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.9567621350288391, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.8, "t": 207.67633, "r": 141.78, "b": 216.45110999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "The database results can be reduced or modified based on the rule text and user profile.", "bbox": {"l": 151.20016, "t": 207.52692000000002, "r": 541.55432, "b": 216.73992999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.70484924316406, "t": 223.55690002441406, "r": 536.04651, "b": 245.71954000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9668188095092773, "cells": [{"id": 14, "text": "GLYPH", "bbox": {"l": 136.8, "t": 224.65612999999996, "r": 141.78, "b": 233.43091000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "The run time of the request can be affected either positively or negatively based on the ", "bbox": {"l": 151.20016, "t": 224.50671, "r": 536.04651, "b": 233.71973000000003, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "rule text.", "bbox": {"l": 151.20016, "t": 236.50653, "r": 189.53125, "b": 245.71954000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.6377410888672, "t": 252.64540100097656, "r": 547.22461, "b": 275.0115051269531, "coord_origin": "TOPLEFT"}, "confidence": 0.9790591597557068, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.8, "t": 253.63574000000006, "r": 141.78, "b": 262.41052, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "For high-level language record level access, query plans must be considered, and not just ", "bbox": {"l": 151.20016, "t": 253.48632999999995, "r": 547.22461, "b": 262.69934, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "program code.", "bbox": {"l": 151.20016, "t": 265.48614999999995, "r": 215.34057999999996, "b": 274.69916, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 135.7350311279297, "t": 286.7269287109375, "r": 547.22968, "b": 344.71799000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9875780940055847, "cells": [{"id": 20, "text": "During analyzing and debugging, it is important to account for all of the RCAC definitions for ", "bbox": {"l": 136.8, "t": 287.50574, "r": 544.67383, "b": 296.71871999999996, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "each table or file to understand the logic and corresponding work that is associated with ", "bbox": {"l": 136.8, "t": 299.5055500000001, "r": 526.74591, "b": 308.7185400000001, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "processing the row permissions and column masks. It is also important to realize that, ", "bbox": {"l": 136.8, "t": 311.50537, "r": 517.995, "b": 320.71835, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "depending on the user profile in effect at run time, the database actions and query results can ", "bbox": {"l": 136.8, "t": 323.50519, "r": 547.22968, "b": 332.71816999999993, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "be different.", "bbox": {"l": 136.8, "t": 335.50500000000005, "r": 189.23442, "b": 344.71799000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 136.05958557128906, "t": 356.62713623046875, "r": 547.27863, "b": 451.1844177246094, "coord_origin": "TOPLEFT"}, "confidence": 0.9875933527946472, "cells": [{"id": 25, "text": "RCAC is designed and implemented to be transparent to the user. It is possible for user ", "bbox": {"l": 136.8, "t": 357.52457, "r": 524.91028, "b": 366.73755, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "\u201cMike\u201d and user \u201cHernando\u201d to run the exact same query, against the exact same data on the ", "bbox": {"l": 136.8, "t": 369.52438, "r": 547.27863, "b": 378.73737, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "exact same system, and get different result sets. There is no error, no warning, and no ", "bbox": {"l": 136.8, "t": 381.5242, "r": 520.1225, "b": 390.73718, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "indication that RCAC reduced or modified the respective answers that are returned. ", "bbox": {"l": 136.8, "t": 393.52401999999995, "r": 507.29110999999995, "b": 402.737, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Furthermore, it is also likely that user \u201cMike\u201d and user \u201cHernando\u201d have different query run ", "bbox": {"l": 136.8, "t": 405.52383, "r": 536.83752, "b": 414.73682, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "times even though it appears that everything is the same for both users. The actual query ", "bbox": {"l": 136.8, "t": 417.52365, "r": 533.12726, "b": 426.73663, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "plan contains the RCAC logic, and this additional code path can alter the amount of work that ", "bbox": {"l": 136.8, "t": 429.5234699999999, "r": 547.22693, "b": 438.73645, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "is needed to produce results, based on the user running the query.", "bbox": {"l": 136.80002, "t": 441.52328, "r": 430.67883, "b": 450.73627, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 135.9143524169922, "t": 462.9166564941406, "r": 547.32837, "b": 520.765869140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9875532388687134, "cells": [{"id": 33, "text": "When monitoring, analyzing, and debugging a database process when RCAC is enabled, it is ", "bbox": {"l": 136.80002, "t": 463.48309, "r": 547.32837, "b": 472.69608, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "critical to keep as many of the \u201cvariables\u201d the same as possible. Use a good scientific ", "bbox": {"l": 136.80002, "t": 475.48291, "r": 514.85553, "b": 484.69589, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "process. For example, when re-creating a problem situation running under the same user ", "bbox": {"l": 136.80002, "t": 487.54248, "r": 532.38837, "b": 496.75546, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "profile with the same data and under the same conditions, it is almost mandatory. Otherwise, ", "bbox": {"l": 136.80002, "t": 499.5423, "r": 547.29474, "b": 508.75528, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "the database behavior and query results can be different.", "bbox": {"l": 136.80002, "t": 511.54211, "r": 389.40143, "b": 520.7551000000001, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 135.94204711914062, "t": 532.7372436523438, "r": 547.25159, "b": 590.7141300000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9887582063674927, "cells": [{"id": 38, "text": "To successfully perform monitoring, analyzing, and debugging when RCAC is enabled likely ", "bbox": {"l": 136.80002, "t": 533.5019199999999, "r": 543.10217, "b": 542.71492, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "involves changes in the security and data access policies of the organization, and require new ", "bbox": {"l": 136.8, "t": 545.50172, "r": 547.25159, "b": 554.71472, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "responsibilities, authority, and oversight within the data-centric application development ", "bbox": {"l": 136.8, "t": 557.50153, "r": 523.1922, "b": 566.71452, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "community. As such, establishing and staffing the position of \u201cdatabase engineer\u201d becomes ", "bbox": {"l": 136.79999, "t": 569.50133, "r": 541.04547, "b": 578.71432, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "even more important.", "bbox": {"l": 136.79999, "t": 581.50113, "r": 231.05352999999997, "b": 590.7141300000001, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "section_header", "bbox": {"l": 64.17730712890625, "t": 610.3857421875, "r": 325.99066, "b": 623.9208984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9681240320205688, "cells": [{"id": 43, "text": "6.4.1", "bbox": {"l": 64.800003, "t": 611.39471, "r": 94.078636, "b": 623.3827200000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Query monitoring and analysis tools", "bbox": {"l": 97.738449, "t": 611.39471, "r": 325.99066, "b": 623.3827200000001, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "text", "bbox": {"l": 136.0252227783203, "t": 636.5751953125, "r": 543.20374, "b": 682.76114, "coord_origin": "TOPLEFT"}, "confidence": 0.9866449236869812, "cells": [{"id": 45, "text": "When monitoring and collecting metrics on database requests, DB2 for i provides additional ", "bbox": {"l": 136.8, "t": 637.54872, "r": 543.20374, "b": 646.76172, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "information that indicates row permissions or column masks are being applied. This ", "bbox": {"l": 136.8, "t": 649.54852, "r": 507.93053999999995, "b": 658.76152, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "information is integrated and part of the standard tools, such as Visual Explain, SQL Plan ", "bbox": {"l": 136.8, "t": 661.54832, "r": 532.96576, "b": 670.76133, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "Cache Snapshot, and SQL Performance Monitor.", "bbox": {"l": 136.8, "t": 673.54813, "r": 353.58246, "b": 682.76114, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 112, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 376.0887756347656, "t": 754.9174194335938, "r": 523.62878, "b": 764.0950927734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9518945813179016, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 112, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.5423583984375, "t": 754.1775512695312, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9179106950759888, "cells": [{"id": 1, "text": "97", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "97"}, {"label": "section_header", "id": 2, "page_no": 112, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.39301300048828, "t": 69.98062896728516, "r": 469.47693, "b": 86.35014343261719, "coord_origin": "TOPLEFT"}, "confidence": 0.9647093415260315, "cells": [{"id": 2, "text": "6.4", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 87.197906, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Monitoring, analyzing, and debugging with RCAC", "bbox": {"l": 91.677475, "t": 71.22069999999997, "r": 469.47693, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, "text": "6.4 Monitoring, analyzing, and debugging with RCAC"}, {"label": "text", "id": 3, "page_no": 112, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.89646911621094, "t": 102.54719543457031, "r": 547.22473, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9837515950202942, "cells": [{"id": 4, "text": "It is assumed (and it is a critical success factor) that the database engineer or application ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 532.22595, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "developer has a thorough understanding of the DB2 for i Query Optimizer, Database Engine, ", "bbox": {"l": 136.8, "t": 115.48852999999997, "r": 547.22473, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "and all the associated tools and techniques.", "bbox": {"l": 136.8, "t": 127.48834000000011, "r": 330.59174, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}]}, "text": "It is assumed (and it is a critical success factor) that the database engineer or application developer has a thorough understanding of the DB2 for i Query Optimizer, Database Engine, and all the associated tools and techniques."}, {"label": "text", "id": 4, "page_no": 112, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.66171264648438, "t": 148.67874145507812, "r": 547.19684, "b": 170.99827575683594, "coord_origin": "TOPLEFT"}, "confidence": 0.9781493544578552, "cells": [{"id": 7, "text": "The monitoring, analyzing, and debugging process basically stays the same when RCAC row ", "bbox": {"l": 136.8, "t": 149.50793, "r": 547.19684, "b": 158.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "permissions or column masks are in place, with a few important differences:", "bbox": {"l": 136.8, "t": 161.50775, "r": 471.66223, "b": 170.72076000000004, "coord_origin": "TOPLEFT"}}]}, "text": "The monitoring, analyzing, and debugging process basically stays the same when RCAC row permissions or column masks are in place, with a few important differences:"}, {"label": "list_item", "id": 5, "page_no": 112, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.6549530029297, "t": 177.3022918701172, "r": 534.25262, "b": 199.70038, "coord_origin": "TOPLEFT"}, "confidence": 0.9730353951454163, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 178.63696000000004, "r": 141.78, "b": 187.41174, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "The underlying data access plan can be different and more complex based on the rule ", "bbox": {"l": 151.20016, "t": 178.48755000000006, "r": 534.25262, "b": 187.70056, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "text.", "bbox": {"l": 151.20016, "t": 190.48737000000006, "r": 169.73871, "b": 199.70038, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The underlying data access plan can be different and more complex based on the rule text."}, {"label": "list_item", "id": 6, "page_no": 112, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.5695037841797, "t": 206.69236755371094, "r": 541.55432, "b": 216.73992999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.9567621350288391, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.8, "t": 207.67633, "r": 141.78, "b": 216.45110999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "The database results can be reduced or modified based on the rule text and user profile.", "bbox": {"l": 151.20016, "t": 207.52692000000002, "r": 541.55432, "b": 216.73992999999996, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The database results can be reduced or modified based on the rule text and user profile."}, {"label": "list_item", "id": 7, "page_no": 112, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.70484924316406, "t": 223.55690002441406, "r": 536.04651, "b": 245.71954000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9668188095092773, "cells": [{"id": 14, "text": "GLYPH", "bbox": {"l": 136.8, "t": 224.65612999999996, "r": 141.78, "b": 233.43091000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "The run time of the request can be affected either positively or negatively based on the ", "bbox": {"l": 151.20016, "t": 224.50671, "r": 536.04651, "b": 233.71973000000003, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "rule text.", "bbox": {"l": 151.20016, "t": 236.50653, "r": 189.53125, "b": 245.71954000000005, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The run time of the request can be affected either positively or negatively based on the rule text."}, {"label": "list_item", "id": 8, "page_no": 112, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.6377410888672, "t": 252.64540100097656, "r": 547.22461, "b": 275.0115051269531, "coord_origin": "TOPLEFT"}, "confidence": 0.9790591597557068, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.8, "t": 253.63574000000006, "r": 141.78, "b": 262.41052, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "For high-level language record level access, query plans must be considered, and not just ", "bbox": {"l": 151.20016, "t": 253.48632999999995, "r": 547.22461, "b": 262.69934, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "program code.", "bbox": {"l": 151.20016, "t": 265.48614999999995, "r": 215.34057999999996, "b": 274.69916, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH For high-level language record level access, query plans must be considered, and not just program code."}, {"label": "text", "id": 9, "page_no": 112, "cluster": {"id": 9, "label": "text", "bbox": {"l": 135.7350311279297, "t": 286.7269287109375, "r": 547.22968, "b": 344.71799000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9875780940055847, "cells": [{"id": 20, "text": "During analyzing and debugging, it is important to account for all of the RCAC definitions for ", "bbox": {"l": 136.8, "t": 287.50574, "r": 544.67383, "b": 296.71871999999996, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "each table or file to understand the logic and corresponding work that is associated with ", "bbox": {"l": 136.8, "t": 299.5055500000001, "r": 526.74591, "b": 308.7185400000001, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "processing the row permissions and column masks. It is also important to realize that, ", "bbox": {"l": 136.8, "t": 311.50537, "r": 517.995, "b": 320.71835, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "depending on the user profile in effect at run time, the database actions and query results can ", "bbox": {"l": 136.8, "t": 323.50519, "r": 547.22968, "b": 332.71816999999993, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "be different.", "bbox": {"l": 136.8, "t": 335.50500000000005, "r": 189.23442, "b": 344.71799000000004, "coord_origin": "TOPLEFT"}}]}, "text": "During analyzing and debugging, it is important to account for all of the RCAC definitions for each table or file to understand the logic and corresponding work that is associated with processing the row permissions and column masks. It is also important to realize that, depending on the user profile in effect at run time, the database actions and query results can be different."}, {"label": "text", "id": 10, "page_no": 112, "cluster": {"id": 10, "label": "text", "bbox": {"l": 136.05958557128906, "t": 356.62713623046875, "r": 547.27863, "b": 451.1844177246094, "coord_origin": "TOPLEFT"}, "confidence": 0.9875933527946472, "cells": [{"id": 25, "text": "RCAC is designed and implemented to be transparent to the user. It is possible for user ", "bbox": {"l": 136.8, "t": 357.52457, "r": 524.91028, "b": 366.73755, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "\u201cMike\u201d and user \u201cHernando\u201d to run the exact same query, against the exact same data on the ", "bbox": {"l": 136.8, "t": 369.52438, "r": 547.27863, "b": 378.73737, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "exact same system, and get different result sets. There is no error, no warning, and no ", "bbox": {"l": 136.8, "t": 381.5242, "r": 520.1225, "b": 390.73718, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "indication that RCAC reduced or modified the respective answers that are returned. ", "bbox": {"l": 136.8, "t": 393.52401999999995, "r": 507.29110999999995, "b": 402.737, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Furthermore, it is also likely that user \u201cMike\u201d and user \u201cHernando\u201d have different query run ", "bbox": {"l": 136.8, "t": 405.52383, "r": 536.83752, "b": 414.73682, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "times even though it appears that everything is the same for both users. The actual query ", "bbox": {"l": 136.8, "t": 417.52365, "r": 533.12726, "b": 426.73663, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "plan contains the RCAC logic, and this additional code path can alter the amount of work that ", "bbox": {"l": 136.8, "t": 429.5234699999999, "r": 547.22693, "b": 438.73645, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "is needed to produce results, based on the user running the query.", "bbox": {"l": 136.80002, "t": 441.52328, "r": 430.67883, "b": 450.73627, "coord_origin": "TOPLEFT"}}]}, "text": "RCAC is designed and implemented to be transparent to the user. It is possible for user \u201cMike\u201d and user \u201cHernando\u201d to run the exact same query, against the exact same data on the exact same system, and get different result sets. There is no error, no warning, and no indication that RCAC reduced or modified the respective answers that are returned. Furthermore, it is also likely that user \u201cMike\u201d and user \u201cHernando\u201d have different query run times even though it appears that everything is the same for both users. The actual query plan contains the RCAC logic, and this additional code path can alter the amount of work that is needed to produce results, based on the user running the query."}, {"label": "text", "id": 11, "page_no": 112, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.9143524169922, "t": 462.9166564941406, "r": 547.32837, "b": 520.765869140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9875532388687134, "cells": [{"id": 33, "text": "When monitoring, analyzing, and debugging a database process when RCAC is enabled, it is ", "bbox": {"l": 136.80002, "t": 463.48309, "r": 547.32837, "b": 472.69608, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "critical to keep as many of the \u201cvariables\u201d the same as possible. Use a good scientific ", "bbox": {"l": 136.80002, "t": 475.48291, "r": 514.85553, "b": 484.69589, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "process. For example, when re-creating a problem situation running under the same user ", "bbox": {"l": 136.80002, "t": 487.54248, "r": 532.38837, "b": 496.75546, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "profile with the same data and under the same conditions, it is almost mandatory. Otherwise, ", "bbox": {"l": 136.80002, "t": 499.5423, "r": 547.29474, "b": 508.75528, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "the database behavior and query results can be different.", "bbox": {"l": 136.80002, "t": 511.54211, "r": 389.40143, "b": 520.7551000000001, "coord_origin": "TOPLEFT"}}]}, "text": "When monitoring, analyzing, and debugging a database process when RCAC is enabled, it is critical to keep as many of the \u201cvariables\u201d the same as possible. Use a good scientific process. For example, when re-creating a problem situation running under the same user profile with the same data and under the same conditions, it is almost mandatory. Otherwise, the database behavior and query results can be different."}, {"label": "text", "id": 12, "page_no": 112, "cluster": {"id": 12, "label": "text", "bbox": {"l": 135.94204711914062, "t": 532.7372436523438, "r": 547.25159, "b": 590.7141300000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9887582063674927, "cells": [{"id": 38, "text": "To successfully perform monitoring, analyzing, and debugging when RCAC is enabled likely ", "bbox": {"l": 136.80002, "t": 533.5019199999999, "r": 543.10217, "b": 542.71492, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "involves changes in the security and data access policies of the organization, and require new ", "bbox": {"l": 136.8, "t": 545.50172, "r": 547.25159, "b": 554.71472, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "responsibilities, authority, and oversight within the data-centric application development ", "bbox": {"l": 136.8, "t": 557.50153, "r": 523.1922, "b": 566.71452, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "community. As such, establishing and staffing the position of \u201cdatabase engineer\u201d becomes ", "bbox": {"l": 136.79999, "t": 569.50133, "r": 541.04547, "b": 578.71432, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "even more important.", "bbox": {"l": 136.79999, "t": 581.50113, "r": 231.05352999999997, "b": 590.7141300000001, "coord_origin": "TOPLEFT"}}]}, "text": "To successfully perform monitoring, analyzing, and debugging when RCAC is enabled likely involves changes in the security and data access policies of the organization, and require new responsibilities, authority, and oversight within the data-centric application development community. As such, establishing and staffing the position of \u201cdatabase engineer\u201d becomes even more important."}, {"label": "section_header", "id": 13, "page_no": 112, "cluster": {"id": 13, "label": "section_header", "bbox": {"l": 64.17730712890625, "t": 610.3857421875, "r": 325.99066, "b": 623.9208984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9681240320205688, "cells": [{"id": 43, "text": "6.4.1", "bbox": {"l": 64.800003, "t": 611.39471, "r": 94.078636, "b": 623.3827200000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Query monitoring and analysis tools", "bbox": {"l": 97.738449, "t": 611.39471, "r": 325.99066, "b": 623.3827200000001, "coord_origin": "TOPLEFT"}}]}, "text": "6.4.1 Query monitoring and analysis tools"}, {"label": "text", "id": 14, "page_no": 112, "cluster": {"id": 14, "label": "text", "bbox": {"l": 136.0252227783203, "t": 636.5751953125, "r": 543.20374, "b": 682.76114, "coord_origin": "TOPLEFT"}, "confidence": 0.9866449236869812, "cells": [{"id": 45, "text": "When monitoring and collecting metrics on database requests, DB2 for i provides additional ", "bbox": {"l": 136.8, "t": 637.54872, "r": 543.20374, "b": 646.76172, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "information that indicates row permissions or column masks are being applied. This ", "bbox": {"l": 136.8, "t": 649.54852, "r": 507.93053999999995, "b": 658.76152, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "information is integrated and part of the standard tools, such as Visual Explain, SQL Plan ", "bbox": {"l": 136.8, "t": 661.54832, "r": 532.96576, "b": 670.76133, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "Cache Snapshot, and SQL Performance Monitor.", "bbox": {"l": 136.8, "t": 673.54813, "r": 353.58246, "b": 682.76114, "coord_origin": "TOPLEFT"}}]}, "text": "When monitoring and collecting metrics on database requests, DB2 for i provides additional information that indicates row permissions or column masks are being applied. This information is integrated and part of the standard tools, such as Visual Explain, SQL Plan Cache Snapshot, and SQL Performance Monitor."}], "body": [{"label": "section_header", "id": 2, "page_no": 112, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.39301300048828, "t": 69.98062896728516, "r": 469.47693, "b": 86.35014343261719, "coord_origin": "TOPLEFT"}, "confidence": 0.9647093415260315, "cells": [{"id": 2, "text": "6.4", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 87.197906, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Monitoring, analyzing, and debugging with RCAC", "bbox": {"l": 91.677475, "t": 71.22069999999997, "r": 469.47693, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, "text": "6.4 Monitoring, analyzing, and debugging with RCAC"}, {"label": "text", "id": 3, "page_no": 112, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.89646911621094, "t": 102.54719543457031, "r": 547.22473, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9837515950202942, "cells": [{"id": 4, "text": "It is assumed (and it is a critical success factor) that the database engineer or application ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 532.22595, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "developer has a thorough understanding of the DB2 for i Query Optimizer, Database Engine, ", "bbox": {"l": 136.8, "t": 115.48852999999997, "r": 547.22473, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "and all the associated tools and techniques.", "bbox": {"l": 136.8, "t": 127.48834000000011, "r": 330.59174, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}]}, "text": "It is assumed (and it is a critical success factor) that the database engineer or application developer has a thorough understanding of the DB2 for i Query Optimizer, Database Engine, and all the associated tools and techniques."}, {"label": "text", "id": 4, "page_no": 112, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.66171264648438, "t": 148.67874145507812, "r": 547.19684, "b": 170.99827575683594, "coord_origin": "TOPLEFT"}, "confidence": 0.9781493544578552, "cells": [{"id": 7, "text": "The monitoring, analyzing, and debugging process basically stays the same when RCAC row ", "bbox": {"l": 136.8, "t": 149.50793, "r": 547.19684, "b": 158.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "permissions or column masks are in place, with a few important differences:", "bbox": {"l": 136.8, "t": 161.50775, "r": 471.66223, "b": 170.72076000000004, "coord_origin": "TOPLEFT"}}]}, "text": "The monitoring, analyzing, and debugging process basically stays the same when RCAC row permissions or column masks are in place, with a few important differences:"}, {"label": "list_item", "id": 5, "page_no": 112, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.6549530029297, "t": 177.3022918701172, "r": 534.25262, "b": 199.70038, "coord_origin": "TOPLEFT"}, "confidence": 0.9730353951454163, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 178.63696000000004, "r": 141.78, "b": 187.41174, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "The underlying data access plan can be different and more complex based on the rule ", "bbox": {"l": 151.20016, "t": 178.48755000000006, "r": 534.25262, "b": 187.70056, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "text.", "bbox": {"l": 151.20016, "t": 190.48737000000006, "r": 169.73871, "b": 199.70038, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The underlying data access plan can be different and more complex based on the rule text."}, {"label": "list_item", "id": 6, "page_no": 112, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.5695037841797, "t": 206.69236755371094, "r": 541.55432, "b": 216.73992999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.9567621350288391, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.8, "t": 207.67633, "r": 141.78, "b": 216.45110999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "The database results can be reduced or modified based on the rule text and user profile.", "bbox": {"l": 151.20016, "t": 207.52692000000002, "r": 541.55432, "b": 216.73992999999996, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The database results can be reduced or modified based on the rule text and user profile."}, {"label": "list_item", "id": 7, "page_no": 112, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.70484924316406, "t": 223.55690002441406, "r": 536.04651, "b": 245.71954000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9668188095092773, "cells": [{"id": 14, "text": "GLYPH", "bbox": {"l": 136.8, "t": 224.65612999999996, "r": 141.78, "b": 233.43091000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "The run time of the request can be affected either positively or negatively based on the ", "bbox": {"l": 151.20016, "t": 224.50671, "r": 536.04651, "b": 233.71973000000003, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "rule text.", "bbox": {"l": 151.20016, "t": 236.50653, "r": 189.53125, "b": 245.71954000000005, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The run time of the request can be affected either positively or negatively based on the rule text."}, {"label": "list_item", "id": 8, "page_no": 112, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.6377410888672, "t": 252.64540100097656, "r": 547.22461, "b": 275.0115051269531, "coord_origin": "TOPLEFT"}, "confidence": 0.9790591597557068, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.8, "t": 253.63574000000006, "r": 141.78, "b": 262.41052, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "For high-level language record level access, query plans must be considered, and not just ", "bbox": {"l": 151.20016, "t": 253.48632999999995, "r": 547.22461, "b": 262.69934, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "program code.", "bbox": {"l": 151.20016, "t": 265.48614999999995, "r": 215.34057999999996, "b": 274.69916, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH For high-level language record level access, query plans must be considered, and not just program code."}, {"label": "text", "id": 9, "page_no": 112, "cluster": {"id": 9, "label": "text", "bbox": {"l": 135.7350311279297, "t": 286.7269287109375, "r": 547.22968, "b": 344.71799000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9875780940055847, "cells": [{"id": 20, "text": "During analyzing and debugging, it is important to account for all of the RCAC definitions for ", "bbox": {"l": 136.8, "t": 287.50574, "r": 544.67383, "b": 296.71871999999996, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "each table or file to understand the logic and corresponding work that is associated with ", "bbox": {"l": 136.8, "t": 299.5055500000001, "r": 526.74591, "b": 308.7185400000001, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "processing the row permissions and column masks. It is also important to realize that, ", "bbox": {"l": 136.8, "t": 311.50537, "r": 517.995, "b": 320.71835, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "depending on the user profile in effect at run time, the database actions and query results can ", "bbox": {"l": 136.8, "t": 323.50519, "r": 547.22968, "b": 332.71816999999993, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "be different.", "bbox": {"l": 136.8, "t": 335.50500000000005, "r": 189.23442, "b": 344.71799000000004, "coord_origin": "TOPLEFT"}}]}, "text": "During analyzing and debugging, it is important to account for all of the RCAC definitions for each table or file to understand the logic and corresponding work that is associated with processing the row permissions and column masks. It is also important to realize that, depending on the user profile in effect at run time, the database actions and query results can be different."}, {"label": "text", "id": 10, "page_no": 112, "cluster": {"id": 10, "label": "text", "bbox": {"l": 136.05958557128906, "t": 356.62713623046875, "r": 547.27863, "b": 451.1844177246094, "coord_origin": "TOPLEFT"}, "confidence": 0.9875933527946472, "cells": [{"id": 25, "text": "RCAC is designed and implemented to be transparent to the user. It is possible for user ", "bbox": {"l": 136.8, "t": 357.52457, "r": 524.91028, "b": 366.73755, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "\u201cMike\u201d and user \u201cHernando\u201d to run the exact same query, against the exact same data on the ", "bbox": {"l": 136.8, "t": 369.52438, "r": 547.27863, "b": 378.73737, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "exact same system, and get different result sets. There is no error, no warning, and no ", "bbox": {"l": 136.8, "t": 381.5242, "r": 520.1225, "b": 390.73718, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "indication that RCAC reduced or modified the respective answers that are returned. ", "bbox": {"l": 136.8, "t": 393.52401999999995, "r": 507.29110999999995, "b": 402.737, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Furthermore, it is also likely that user \u201cMike\u201d and user \u201cHernando\u201d have different query run ", "bbox": {"l": 136.8, "t": 405.52383, "r": 536.83752, "b": 414.73682, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "times even though it appears that everything is the same for both users. The actual query ", "bbox": {"l": 136.8, "t": 417.52365, "r": 533.12726, "b": 426.73663, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "plan contains the RCAC logic, and this additional code path can alter the amount of work that ", "bbox": {"l": 136.8, "t": 429.5234699999999, "r": 547.22693, "b": 438.73645, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "is needed to produce results, based on the user running the query.", "bbox": {"l": 136.80002, "t": 441.52328, "r": 430.67883, "b": 450.73627, "coord_origin": "TOPLEFT"}}]}, "text": "RCAC is designed and implemented to be transparent to the user. It is possible for user \u201cMike\u201d and user \u201cHernando\u201d to run the exact same query, against the exact same data on the exact same system, and get different result sets. There is no error, no warning, and no indication that RCAC reduced or modified the respective answers that are returned. Furthermore, it is also likely that user \u201cMike\u201d and user \u201cHernando\u201d have different query run times even though it appears that everything is the same for both users. The actual query plan contains the RCAC logic, and this additional code path can alter the amount of work that is needed to produce results, based on the user running the query."}, {"label": "text", "id": 11, "page_no": 112, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.9143524169922, "t": 462.9166564941406, "r": 547.32837, "b": 520.765869140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9875532388687134, "cells": [{"id": 33, "text": "When monitoring, analyzing, and debugging a database process when RCAC is enabled, it is ", "bbox": {"l": 136.80002, "t": 463.48309, "r": 547.32837, "b": 472.69608, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "critical to keep as many of the \u201cvariables\u201d the same as possible. Use a good scientific ", "bbox": {"l": 136.80002, "t": 475.48291, "r": 514.85553, "b": 484.69589, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "process. For example, when re-creating a problem situation running under the same user ", "bbox": {"l": 136.80002, "t": 487.54248, "r": 532.38837, "b": 496.75546, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "profile with the same data and under the same conditions, it is almost mandatory. Otherwise, ", "bbox": {"l": 136.80002, "t": 499.5423, "r": 547.29474, "b": 508.75528, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "the database behavior and query results can be different.", "bbox": {"l": 136.80002, "t": 511.54211, "r": 389.40143, "b": 520.7551000000001, "coord_origin": "TOPLEFT"}}]}, "text": "When monitoring, analyzing, and debugging a database process when RCAC is enabled, it is critical to keep as many of the \u201cvariables\u201d the same as possible. Use a good scientific process. For example, when re-creating a problem situation running under the same user profile with the same data and under the same conditions, it is almost mandatory. Otherwise, the database behavior and query results can be different."}, {"label": "text", "id": 12, "page_no": 112, "cluster": {"id": 12, "label": "text", "bbox": {"l": 135.94204711914062, "t": 532.7372436523438, "r": 547.25159, "b": 590.7141300000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9887582063674927, "cells": [{"id": 38, "text": "To successfully perform monitoring, analyzing, and debugging when RCAC is enabled likely ", "bbox": {"l": 136.80002, "t": 533.5019199999999, "r": 543.10217, "b": 542.71492, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "involves changes in the security and data access policies of the organization, and require new ", "bbox": {"l": 136.8, "t": 545.50172, "r": 547.25159, "b": 554.71472, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "responsibilities, authority, and oversight within the data-centric application development ", "bbox": {"l": 136.8, "t": 557.50153, "r": 523.1922, "b": 566.71452, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "community. As such, establishing and staffing the position of \u201cdatabase engineer\u201d becomes ", "bbox": {"l": 136.79999, "t": 569.50133, "r": 541.04547, "b": 578.71432, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "even more important.", "bbox": {"l": 136.79999, "t": 581.50113, "r": 231.05352999999997, "b": 590.7141300000001, "coord_origin": "TOPLEFT"}}]}, "text": "To successfully perform monitoring, analyzing, and debugging when RCAC is enabled likely involves changes in the security and data access policies of the organization, and require new responsibilities, authority, and oversight within the data-centric application development community. As such, establishing and staffing the position of \u201cdatabase engineer\u201d becomes even more important."}, {"label": "section_header", "id": 13, "page_no": 112, "cluster": {"id": 13, "label": "section_header", "bbox": {"l": 64.17730712890625, "t": 610.3857421875, "r": 325.99066, "b": 623.9208984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9681240320205688, "cells": [{"id": 43, "text": "6.4.1", "bbox": {"l": 64.800003, "t": 611.39471, "r": 94.078636, "b": 623.3827200000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Query monitoring and analysis tools", "bbox": {"l": 97.738449, "t": 611.39471, "r": 325.99066, "b": 623.3827200000001, "coord_origin": "TOPLEFT"}}]}, "text": "6.4.1 Query monitoring and analysis tools"}, {"label": "text", "id": 14, "page_no": 112, "cluster": {"id": 14, "label": "text", "bbox": {"l": 136.0252227783203, "t": 636.5751953125, "r": 543.20374, "b": 682.76114, "coord_origin": "TOPLEFT"}, "confidence": 0.9866449236869812, "cells": [{"id": 45, "text": "When monitoring and collecting metrics on database requests, DB2 for i provides additional ", "bbox": {"l": 136.8, "t": 637.54872, "r": 543.20374, "b": 646.76172, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "information that indicates row permissions or column masks are being applied. This ", "bbox": {"l": 136.8, "t": 649.54852, "r": 507.93053999999995, "b": 658.76152, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "information is integrated and part of the standard tools, such as Visual Explain, SQL Plan ", "bbox": {"l": 136.8, "t": 661.54832, "r": 532.96576, "b": 670.76133, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "Cache Snapshot, and SQL Performance Monitor.", "bbox": {"l": 136.8, "t": 673.54813, "r": 353.58246, "b": 682.76114, "coord_origin": "TOPLEFT"}}]}, "text": "When monitoring and collecting metrics on database requests, DB2 for i provides additional information that indicates row permissions or column masks are being applied. This information is integrated and part of the standard tools, such as Visual Explain, SQL Plan Cache Snapshot, and SQL Performance Monitor."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 112, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 376.0887756347656, "t": 754.9174194335938, "r": 523.62878, "b": 764.0950927734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9518945813179016, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 112, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.5423583984375, "t": 754.1775512695312, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9179106950759888, "cells": [{"id": 1, "text": "97", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "97"}]}}, {"page_no": 113, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "98 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Figure 6-14 shows how Visual Explain externalizes RCAC.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 394.5509, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 6-14 Visual Explain indicating that RCAC is applied", "bbox": {"l": 64.800003, "t": 352.698, "r": 300.70435, "b": 361.02301, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 6-15 shows the main dashboard of an SQL Performance Monitor. Click ", "bbox": {"l": 136.8, "t": 378.70871, "r": 482.50363, "b": 387.92169, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Summary", "bbox": {"l": 482.5803199999999, "t": 378.70871, "r": 528.22699, "b": 387.92169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ".", "bbox": {"l": 527.22003, "t": 378.70871, "r": 529.98889, "b": 387.92169, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Figure 6-15 SQL Performance Monitor", "bbox": {"l": 64.800003, "t": 545.59799, "r": 222.08038, "b": 553.923, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Figure 6-16 shows the summary of an SQL Performance Monitor with an indication that ", "bbox": {"l": 136.8, "t": 571.54872, "r": 524.75702, "b": 580.76172, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "RCAC is applied.", "bbox": {"l": 136.8, "t": 583.54852, "r": 212.66629, "b": 592.76152, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Figure 6-16 SQL Performance Monitor indicating that RCAC is applied", "bbox": {"l": 64.800003, "t": 689.058, "r": 348.245, "b": 697.382996, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.10893249511719, "t": 754.4006958007812, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9148916006088257, "cells": [{"id": 0, "text": "98 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.39404296875, "t": 754.6958618164062, "r": 334.42142, "b": 763.9676513671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9504665732383728, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 136.44447326660156, "t": 70.6107177734375, "r": 394.5509, "b": 81.15087127685547, "coord_origin": "TOPLEFT"}, "confidence": 0.6426960825920105, "cells": [{"id": 2, "text": "Figure 6-14 shows how Visual Explain externalizes RCAC.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 394.5509, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.1352310180664, "t": 351.9909973144531, "r": 301.8788146972656, "b": 361.4986877441406, "coord_origin": "TOPLEFT"}, "confidence": 0.9484913349151611, "cells": [{"id": 3, "text": "Figure 6-14 Visual Explain indicating that RCAC is applied", "bbox": {"l": 64.800003, "t": 352.698, "r": 300.70435, "b": 361.02301, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 136.34783935546875, "t": 378.1083679199219, "r": 529.98889, "b": 388.4996337890625, "coord_origin": "TOPLEFT"}, "confidence": 0.7494233846664429, "cells": [{"id": 4, "text": "Figure 6-15 shows the main dashboard of an SQL Performance Monitor. Click ", "bbox": {"l": 136.8, "t": 378.70871, "r": 482.50363, "b": 387.92169, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Summary", "bbox": {"l": 482.5803199999999, "t": 378.70871, "r": 528.22699, "b": 387.92169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ".", "bbox": {"l": 527.22003, "t": 378.70871, "r": 529.98889, "b": 387.92169, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 64.04948425292969, "t": 544.6276245117188, "r": 222.99563598632812, "b": 554.0814208984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9098349213600159, "cells": [{"id": 7, "text": "Figure 6-15 SQL Performance Monitor", "bbox": {"l": 64.800003, "t": 545.59799, "r": 222.08038, "b": 553.923, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 136.6471710205078, "t": 570.5686645507812, "r": 524.75702, "b": 593.2821655273438, "coord_origin": "TOPLEFT"}, "confidence": 0.8541293740272522, "cells": [{"id": 8, "text": "Figure 6-16 shows the summary of an SQL Performance Monitor with an indication that ", "bbox": {"l": 136.8, "t": 571.54872, "r": 524.75702, "b": 580.76172, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "RCAC is applied.", "bbox": {"l": 136.8, "t": 583.54852, "r": 212.66629, "b": 592.76152, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "caption", "bbox": {"l": 64.28324127197266, "t": 688.001220703125, "r": 349.08843994140625, "b": 697.662109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9500105977058411, "cells": [{"id": 10, "text": "Figure 6-16 SQL Performance Monitor indicating that RCAC is applied", "bbox": {"l": 64.800003, "t": 689.058, "r": 348.245, "b": 697.382996, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 64.03382873535156, "t": 402.0129699707031, "r": 546.9832153320312, "b": 542.2274169921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9835320711135864, "cells": []}, {"id": 9, "label": "picture", "bbox": {"l": 64.05506134033203, "t": 95.34317016601562, "r": 546.421142578125, "b": 349.3290100097656, "coord_origin": "TOPLEFT"}, "confidence": 0.98197340965271, "cells": []}, {"id": 10, "label": "picture", "bbox": {"l": 63.78765869140625, "t": 606.9619140625, "r": 546.1412353515625, "b": 685.5827026367188, "coord_origin": "TOPLEFT"}, "confidence": 0.9799405932426453, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 113, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.10893249511719, "t": 754.4006958007812, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9148916006088257, "cells": [{"id": 0, "text": "98 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "98"}, {"label": "page_footer", "id": 1, "page_no": 113, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.39404296875, "t": 754.6958618164062, "r": 334.42142, "b": 763.9676513671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9504665732383728, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 2, "page_no": 113, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.44447326660156, "t": 70.6107177734375, "r": 394.5509, "b": 81.15087127685547, "coord_origin": "TOPLEFT"}, "confidence": 0.6426960825920105, "cells": [{"id": 2, "text": "Figure 6-14 shows how Visual Explain externalizes RCAC.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 394.5509, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-14 shows how Visual Explain externalizes RCAC."}, {"label": "caption", "id": 3, "page_no": 113, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.1352310180664, "t": 351.9909973144531, "r": 301.8788146972656, "b": 361.4986877441406, "coord_origin": "TOPLEFT"}, "confidence": 0.9484913349151611, "cells": [{"id": 3, "text": "Figure 6-14 Visual Explain indicating that RCAC is applied", "bbox": {"l": 64.800003, "t": 352.698, "r": 300.70435, "b": 361.02301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-14 Visual Explain indicating that RCAC is applied"}, {"label": "text", "id": 4, "page_no": 113, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.34783935546875, "t": 378.1083679199219, "r": 529.98889, "b": 388.4996337890625, "coord_origin": "TOPLEFT"}, "confidence": 0.7494233846664429, "cells": [{"id": 4, "text": "Figure 6-15 shows the main dashboard of an SQL Performance Monitor. Click ", "bbox": {"l": 136.8, "t": 378.70871, "r": 482.50363, "b": 387.92169, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Summary", "bbox": {"l": 482.5803199999999, "t": 378.70871, "r": 528.22699, "b": 387.92169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ".", "bbox": {"l": 527.22003, "t": 378.70871, "r": 529.98889, "b": 387.92169, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-15 shows the main dashboard of an SQL Performance Monitor. Click Summary ."}, {"label": "caption", "id": 5, "page_no": 113, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.04948425292969, "t": 544.6276245117188, "r": 222.99563598632812, "b": 554.0814208984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9098349213600159, "cells": [{"id": 7, "text": "Figure 6-15 SQL Performance Monitor", "bbox": {"l": 64.800003, "t": 545.59799, "r": 222.08038, "b": 553.923, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-15 SQL Performance Monitor"}, {"label": "text", "id": 6, "page_no": 113, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.6471710205078, "t": 570.5686645507812, "r": 524.75702, "b": 593.2821655273438, "coord_origin": "TOPLEFT"}, "confidence": 0.8541293740272522, "cells": [{"id": 8, "text": "Figure 6-16 shows the summary of an SQL Performance Monitor with an indication that ", "bbox": {"l": 136.8, "t": 571.54872, "r": 524.75702, "b": 580.76172, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "RCAC is applied.", "bbox": {"l": 136.8, "t": 583.54852, "r": 212.66629, "b": 592.76152, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-16 shows the summary of an SQL Performance Monitor with an indication that RCAC is applied."}, {"label": "caption", "id": 7, "page_no": 113, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 64.28324127197266, "t": 688.001220703125, "r": 349.08843994140625, "b": 697.662109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9500105977058411, "cells": [{"id": 10, "text": "Figure 6-16 SQL Performance Monitor indicating that RCAC is applied", "bbox": {"l": 64.800003, "t": 689.058, "r": 348.245, "b": 697.382996, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-16 SQL Performance Monitor indicating that RCAC is applied"}, {"label": "picture", "id": 8, "page_no": 113, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 64.03382873535156, "t": 402.0129699707031, "r": 546.9832153320312, "b": 542.2274169921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9835320711135864, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 9, "page_no": 113, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 64.05506134033203, "t": 95.34317016601562, "r": 546.421142578125, "b": 349.3290100097656, "coord_origin": "TOPLEFT"}, "confidence": 0.98197340965271, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 10, "page_no": 113, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 63.78765869140625, "t": 606.9619140625, "r": 546.1412353515625, "b": 685.5827026367188, "coord_origin": "TOPLEFT"}, "confidence": 0.9799405932426453, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 113, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.44447326660156, "t": 70.6107177734375, "r": 394.5509, "b": 81.15087127685547, "coord_origin": "TOPLEFT"}, "confidence": 0.6426960825920105, "cells": [{"id": 2, "text": "Figure 6-14 shows how Visual Explain externalizes RCAC.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 394.5509, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-14 shows how Visual Explain externalizes RCAC."}, {"label": "caption", "id": 3, "page_no": 113, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.1352310180664, "t": 351.9909973144531, "r": 301.8788146972656, "b": 361.4986877441406, "coord_origin": "TOPLEFT"}, "confidence": 0.9484913349151611, "cells": [{"id": 3, "text": "Figure 6-14 Visual Explain indicating that RCAC is applied", "bbox": {"l": 64.800003, "t": 352.698, "r": 300.70435, "b": 361.02301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-14 Visual Explain indicating that RCAC is applied"}, {"label": "text", "id": 4, "page_no": 113, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.34783935546875, "t": 378.1083679199219, "r": 529.98889, "b": 388.4996337890625, "coord_origin": "TOPLEFT"}, "confidence": 0.7494233846664429, "cells": [{"id": 4, "text": "Figure 6-15 shows the main dashboard of an SQL Performance Monitor. Click ", "bbox": {"l": 136.8, "t": 378.70871, "r": 482.50363, "b": 387.92169, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Summary", "bbox": {"l": 482.5803199999999, "t": 378.70871, "r": 528.22699, "b": 387.92169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ".", "bbox": {"l": 527.22003, "t": 378.70871, "r": 529.98889, "b": 387.92169, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-15 shows the main dashboard of an SQL Performance Monitor. Click Summary ."}, {"label": "caption", "id": 5, "page_no": 113, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.04948425292969, "t": 544.6276245117188, "r": 222.99563598632812, "b": 554.0814208984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9098349213600159, "cells": [{"id": 7, "text": "Figure 6-15 SQL Performance Monitor", "bbox": {"l": 64.800003, "t": 545.59799, "r": 222.08038, "b": 553.923, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-15 SQL Performance Monitor"}, {"label": "text", "id": 6, "page_no": 113, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.6471710205078, "t": 570.5686645507812, "r": 524.75702, "b": 593.2821655273438, "coord_origin": "TOPLEFT"}, "confidence": 0.8541293740272522, "cells": [{"id": 8, "text": "Figure 6-16 shows the summary of an SQL Performance Monitor with an indication that ", "bbox": {"l": 136.8, "t": 571.54872, "r": 524.75702, "b": 580.76172, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "RCAC is applied.", "bbox": {"l": 136.8, "t": 583.54852, "r": 212.66629, "b": 592.76152, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-16 shows the summary of an SQL Performance Monitor with an indication that RCAC is applied."}, {"label": "caption", "id": 7, "page_no": 113, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 64.28324127197266, "t": 688.001220703125, "r": 349.08843994140625, "b": 697.662109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9500105977058411, "cells": [{"id": 10, "text": "Figure 6-16 SQL Performance Monitor indicating that RCAC is applied", "bbox": {"l": 64.800003, "t": 689.058, "r": 348.245, "b": 697.382996, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-16 SQL Performance Monitor indicating that RCAC is applied"}, {"label": "picture", "id": 8, "page_no": 113, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 64.03382873535156, "t": 402.0129699707031, "r": 546.9832153320312, "b": 542.2274169921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9835320711135864, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 9, "page_no": 113, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 64.05506134033203, "t": 95.34317016601562, "r": 546.421142578125, "b": 349.3290100097656, "coord_origin": "TOPLEFT"}, "confidence": 0.98197340965271, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 10, "page_no": 113, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 63.78765869140625, "t": 606.9619140625, "r": 546.1412353515625, "b": 685.5827026367188, "coord_origin": "TOPLEFT"}, "confidence": 0.9799405932426453, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 113, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.10893249511719, "t": 754.4006958007812, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9148916006088257, "cells": [{"id": 0, "text": "98 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "98"}, {"label": "page_footer", "id": 1, "page_no": 113, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.39404296875, "t": 754.6958618164062, "r": 334.42142, "b": 763.9676513671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9504665732383728, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 114, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "99", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Figure 6-17 shows the statements of an SQL Performance Monitor and how RCAC is ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 514.50977, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "externalized.", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 193.28972, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 6-17 SQL Performance Monitor showing statements and RCAC", "bbox": {"l": 64.800003, "t": 221.11803999999995, "r": 349.08563, "b": 229.44299, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "When implementing RCAC as part of a comprehensive and pervasive data access control ", "bbox": {"l": 136.8, "t": 247.12872000000004, "r": 535.89722, "b": 256.34173999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "initiative, consider that the database monitoring and analysis tools can collect literal values ", "bbox": {"l": 136.8, "t": 259.12854000000004, "r": 538.49878, "b": 268.34155, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "that are passed as part of SQL statements. These literal values can be viewed as part of the ", "bbox": {"l": 136.79999, "t": 271.12836000000004, "r": 546.87805, "b": 280.34137, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "information collected. If any of the literals are based on or are used with masked columns, it is ", "bbox": {"l": 136.79999, "t": 283.1282, "r": 547.19598, "b": 292.34119, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "important to review the database engineer\u2019s policy for viewing these data elements. For ", "bbox": {"l": 136.79999, "t": 295.12802, "r": 524.2348, "b": 304.341, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "example, supposed that column CUSTOMER_TAX_ID is deemed masked for the database ", "bbox": {"l": 136.8, "t": 307.12784, "r": 540.35242, "b": 316.34081999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "engineer and the CUSTOMER_TAX_ID column is used in a predicate as follows:", "bbox": {"l": 136.8, "t": 319.12766, "r": 491.99249, "b": 328.34064000000006, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "WHERE CUSTOMER_TAX_ID = '123-45-7890'", "bbox": {"l": 136.8, "t": 336.25684, "r": 321.65756, "b": 345.03162, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "The literal value of \u2019123-45-7890\u2019 is visible to the analyst, effectively exposing sensitive ", "bbox": {"l": 136.8, "t": 358.12701, "r": 520.11249, "b": 367.34, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "information. If this is not acceptable, you must implement the ", "bbox": {"l": 136.8, "t": 370.12683, "r": 407.22797, "b": 379.33981, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "SYSPROC.SET_COLUMN_ATTRIBUTE procedure.", "bbox": {"l": 136.8, "t": 382.1266499999999, "r": 366.48557, "b": 391.33963, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "The SET_COLUMN_ATTRIBUTE procedure sets the SECURE attribute for a column so that ", "bbox": {"l": 136.8, "t": 404.14621, "r": 546.67786, "b": 413.35919, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "variable values that are used for the column cannot be seen in the SQL Performance Monitor, ", "bbox": {"l": 136.79999, "t": 416.14603, "r": 547.2644, "b": 425.35900999999996, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "SQL Plan Cache Snapshot, or Visual Explain.", "bbox": {"l": 136.79999, "t": 428.1458400000001, "r": 338.97601, "b": 437.35883000000007, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "6.4.2", "bbox": {"l": 64.800003, "t": 457.97473, "r": 94.474304, "b": 469.96271, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Index advisor", "bbox": {"l": 98.183594, "t": 457.97473, "r": 184.20438, "b": 469.96271, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Because the RCAC rule text can be almost any valid SQL logic, including local selection ", "bbox": {"l": 136.8, "t": 484.12872, "r": 527.37341, "b": 493.34171, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "predicates, join conditions, and subqueries, the standard query tuning techniques still apply. ", "bbox": {"l": 136.8, "t": 496.12854, "r": 544.1452, "b": 505.34152, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Without a doubt, a proper and adequate indexing strategy is a good starting point.", "bbox": {"l": 136.79999, "t": 508.12836, "r": 498.02637000000004, "b": 517.34134, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "The index advisor is not specifically enhanced for RCAC, but because the rule text is a fully ", "bbox": {"l": 136.79999, "t": 530.14792, "r": 540.85529, "b": 539.36092, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "integrated part of the query plan, any opportunities for indexing is advised based on the ", "bbox": {"l": 136.79999, "t": 542.1477199999999, "r": 525.34064, "b": 551.36072, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "current Query Optimizer functionality. If an index is advised because of the RCAC rule text ", "bbox": {"l": 136.79999, "t": 554.14752, "r": 536.7569, "b": 563.36052, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "logic, there is no RCAC reason code provided. Analyzing the query plan and the RCAC rule ", "bbox": {"l": 136.79999, "t": 566.14732, "r": 543.59814, "b": 575.36032, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "text provides the understanding as to why the index is being advised.", "bbox": {"l": 136.79999, "t": 578.1471300000001, "r": 440.79403999999994, "b": 587.36012, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 376.0592956542969, "t": 754.98291015625, "r": 523.62878, "b": 764.048828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9528514742851257, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.5274047851562, "t": 754.2946166992188, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.922478199005127, "cells": [{"id": 1, "text": "99", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 136.21266174316406, "t": 70.70671844482422, "r": 514.50977, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9165806770324707, "cells": [{"id": 2, "text": "Figure 6-17 shows the statements of an SQL Performance Monitor and how RCAC is ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 514.50977, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "externalized.", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 193.28972, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.27816772460938, "t": 220.06015014648438, "r": 349.6502685546875, "b": 229.44299, "coord_origin": "TOPLEFT"}, "confidence": 0.9448087215423584, "cells": [{"id": 4, "text": "Figure 6-17 SQL Performance Monitor showing statements and RCAC", "bbox": {"l": 64.800003, "t": 221.11803999999995, "r": 349.08563, "b": 229.44299, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.8977813720703, "t": 245.93429565429688, "r": 547.19598, "b": 328.34064000000006, "coord_origin": "TOPLEFT"}, "confidence": 0.9853147268295288, "cells": [{"id": 5, "text": "When implementing RCAC as part of a comprehensive and pervasive data access control ", "bbox": {"l": 136.8, "t": 247.12872000000004, "r": 535.89722, "b": 256.34173999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "initiative, consider that the database monitoring and analysis tools can collect literal values ", "bbox": {"l": 136.8, "t": 259.12854000000004, "r": 538.49878, "b": 268.34155, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "that are passed as part of SQL statements. These literal values can be viewed as part of the ", "bbox": {"l": 136.79999, "t": 271.12836000000004, "r": 546.87805, "b": 280.34137, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "information collected. If any of the literals are based on or are used with masked columns, it is ", "bbox": {"l": 136.79999, "t": 283.1282, "r": 547.19598, "b": 292.34119, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "important to review the database engineer\u2019s policy for viewing these data elements. For ", "bbox": {"l": 136.79999, "t": 295.12802, "r": 524.2348, "b": 304.341, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "example, supposed that column CUSTOMER_TAX_ID is deemed masked for the database ", "bbox": {"l": 136.8, "t": 307.12784, "r": 540.35242, "b": 316.34081999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "engineer and the CUSTOMER_TAX_ID column is used in a predicate as follows:", "bbox": {"l": 136.8, "t": 319.12766, "r": 491.99249, "b": 328.34064000000006, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.05642700195312, "t": 335.3828125, "r": 321.65756, "b": 346.0798034667969, "coord_origin": "TOPLEFT"}, "confidence": 0.7673708200454712, "cells": [{"id": 12, "text": "WHERE CUSTOMER_TAX_ID = '123-45-7890'", "bbox": {"l": 136.8, "t": 336.25684, "r": 321.65756, "b": 345.03162, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 135.81124877929688, "t": 357.3571472167969, "r": 520.11249, "b": 391.33963, "coord_origin": "TOPLEFT"}, "confidence": 0.9725678563117981, "cells": [{"id": 13, "text": "The literal value of \u2019123-45-7890\u2019 is visible to the analyst, effectively exposing sensitive ", "bbox": {"l": 136.8, "t": 358.12701, "r": 520.11249, "b": 367.34, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "information. If this is not acceptable, you must implement the ", "bbox": {"l": 136.8, "t": 370.12683, "r": 407.22797, "b": 379.33981, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "SYSPROC.SET_COLUMN_ATTRIBUTE procedure.", "bbox": {"l": 136.8, "t": 382.1266499999999, "r": 366.48557, "b": 391.33963, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 135.4740447998047, "t": 403.30865478515625, "r": 547.2644, "b": 437.394287109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9761651754379272, "cells": [{"id": 16, "text": "The SET_COLUMN_ATTRIBUTE procedure sets the SECURE attribute for a column so that ", "bbox": {"l": 136.8, "t": 404.14621, "r": 546.67786, "b": 413.35919, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "variable values that are used for the column cannot be seen in the SQL Performance Monitor, ", "bbox": {"l": 136.79999, "t": 416.14603, "r": 547.2644, "b": 425.35900999999996, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "SQL Plan Cache Snapshot, or Visual Explain.", "bbox": {"l": 136.79999, "t": 428.1458400000001, "r": 338.97601, "b": 437.35883000000007, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "section_header", "bbox": {"l": 64.00121307373047, "t": 457.377197265625, "r": 184.5458984375, "b": 469.96271, "coord_origin": "TOPLEFT"}, "confidence": 0.9545406103134155, "cells": [{"id": 19, "text": "6.4.2", "bbox": {"l": 64.800003, "t": 457.97473, "r": 94.474304, "b": 469.96271, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Index advisor", "bbox": {"l": 98.183594, "t": 457.97473, "r": 184.20438, "b": 469.96271, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 135.94943237304688, "t": 483.509033203125, "r": 544.1452, "b": 517.70703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9826521873474121, "cells": [{"id": 21, "text": "Because the RCAC rule text can be almost any valid SQL logic, including local selection ", "bbox": {"l": 136.8, "t": 484.12872, "r": 527.37341, "b": 493.34171, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "predicates, join conditions, and subqueries, the standard query tuning techniques still apply. ", "bbox": {"l": 136.8, "t": 496.12854, "r": 544.1452, "b": 505.34152, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Without a doubt, a proper and adequate indexing strategy is a good starting point.", "bbox": {"l": 136.79999, "t": 508.12836, "r": 498.02637000000004, "b": 517.34134, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 135.8879852294922, "t": 529.4095458984375, "r": 543.59814, "b": 587.827880859375, "coord_origin": "TOPLEFT"}, "confidence": 0.9877107739448547, "cells": [{"id": 24, "text": "The index advisor is not specifically enhanced for RCAC, but because the rule text is a fully ", "bbox": {"l": 136.79999, "t": 530.14792, "r": 540.85529, "b": 539.36092, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "integrated part of the query plan, any opportunities for indexing is advised based on the ", "bbox": {"l": 136.79999, "t": 542.1477199999999, "r": 525.34064, "b": 551.36072, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "current Query Optimizer functionality. If an index is advised because of the RCAC rule text ", "bbox": {"l": 136.79999, "t": 554.14752, "r": 536.7569, "b": 563.36052, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "logic, there is no RCAC reason code provided. Analyzing the query plan and the RCAC rule ", "bbox": {"l": 136.79999, "t": 566.14732, "r": 543.59814, "b": 575.36032, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "text provides the understanding as to why the index is being advised.", "bbox": {"l": 136.79999, "t": 578.1471300000001, "r": 440.79403999999994, "b": 587.36012, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "picture", "bbox": {"l": 63.79280090332031, "t": 107.09796142578125, "r": 547.32080078125, "b": 217.7356414794922, "coord_origin": "TOPLEFT"}, "confidence": 0.9807502627372742, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 114, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 376.0592956542969, "t": 754.98291015625, "r": 523.62878, "b": 764.048828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9528514742851257, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 114, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.5274047851562, "t": 754.2946166992188, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.922478199005127, "cells": [{"id": 1, "text": "99", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "99"}, {"label": "text", "id": 2, "page_no": 114, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.21266174316406, "t": 70.70671844482422, "r": 514.50977, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9165806770324707, "cells": [{"id": 2, "text": "Figure 6-17 shows the statements of an SQL Performance Monitor and how RCAC is ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 514.50977, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "externalized.", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 193.28972, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-17 shows the statements of an SQL Performance Monitor and how RCAC is externalized."}, {"label": "caption", "id": 3, "page_no": 114, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.27816772460938, "t": 220.06015014648438, "r": 349.6502685546875, "b": 229.44299, "coord_origin": "TOPLEFT"}, "confidence": 0.9448087215423584, "cells": [{"id": 4, "text": "Figure 6-17 SQL Performance Monitor showing statements and RCAC", "bbox": {"l": 64.800003, "t": 221.11803999999995, "r": 349.08563, "b": 229.44299, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-17 SQL Performance Monitor showing statements and RCAC"}, {"label": "text", "id": 4, "page_no": 114, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.8977813720703, "t": 245.93429565429688, "r": 547.19598, "b": 328.34064000000006, "coord_origin": "TOPLEFT"}, "confidence": 0.9853147268295288, "cells": [{"id": 5, "text": "When implementing RCAC as part of a comprehensive and pervasive data access control ", "bbox": {"l": 136.8, "t": 247.12872000000004, "r": 535.89722, "b": 256.34173999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "initiative, consider that the database monitoring and analysis tools can collect literal values ", "bbox": {"l": 136.8, "t": 259.12854000000004, "r": 538.49878, "b": 268.34155, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "that are passed as part of SQL statements. These literal values can be viewed as part of the ", "bbox": {"l": 136.79999, "t": 271.12836000000004, "r": 546.87805, "b": 280.34137, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "information collected. If any of the literals are based on or are used with masked columns, it is ", "bbox": {"l": 136.79999, "t": 283.1282, "r": 547.19598, "b": 292.34119, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "important to review the database engineer\u2019s policy for viewing these data elements. For ", "bbox": {"l": 136.79999, "t": 295.12802, "r": 524.2348, "b": 304.341, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "example, supposed that column CUSTOMER_TAX_ID is deemed masked for the database ", "bbox": {"l": 136.8, "t": 307.12784, "r": 540.35242, "b": 316.34081999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "engineer and the CUSTOMER_TAX_ID column is used in a predicate as follows:", "bbox": {"l": 136.8, "t": 319.12766, "r": 491.99249, "b": 328.34064000000006, "coord_origin": "TOPLEFT"}}]}, "text": "When implementing RCAC as part of a comprehensive and pervasive data access control initiative, consider that the database monitoring and analysis tools can collect literal values that are passed as part of SQL statements. These literal values can be viewed as part of the information collected. If any of the literals are based on or are used with masked columns, it is important to review the database engineer\u2019s policy for viewing these data elements. For example, supposed that column CUSTOMER_TAX_ID is deemed masked for the database engineer and the CUSTOMER_TAX_ID column is used in a predicate as follows:"}, {"label": "text", "id": 5, "page_no": 114, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.05642700195312, "t": 335.3828125, "r": 321.65756, "b": 346.0798034667969, "coord_origin": "TOPLEFT"}, "confidence": 0.7673708200454712, "cells": [{"id": 12, "text": "WHERE CUSTOMER_TAX_ID = '123-45-7890'", "bbox": {"l": 136.8, "t": 336.25684, "r": 321.65756, "b": 345.03162, "coord_origin": "TOPLEFT"}}]}, "text": "WHERE CUSTOMER_TAX_ID = '123-45-7890'"}, {"label": "text", "id": 6, "page_no": 114, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.81124877929688, "t": 357.3571472167969, "r": 520.11249, "b": 391.33963, "coord_origin": "TOPLEFT"}, "confidence": 0.9725678563117981, "cells": [{"id": 13, "text": "The literal value of \u2019123-45-7890\u2019 is visible to the analyst, effectively exposing sensitive ", "bbox": {"l": 136.8, "t": 358.12701, "r": 520.11249, "b": 367.34, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "information. If this is not acceptable, you must implement the ", "bbox": {"l": 136.8, "t": 370.12683, "r": 407.22797, "b": 379.33981, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "SYSPROC.SET_COLUMN_ATTRIBUTE procedure.", "bbox": {"l": 136.8, "t": 382.1266499999999, "r": 366.48557, "b": 391.33963, "coord_origin": "TOPLEFT"}}]}, "text": "The literal value of \u2019123-45-7890\u2019 is visible to the analyst, effectively exposing sensitive information. If this is not acceptable, you must implement the SYSPROC.SET_COLUMN_ATTRIBUTE procedure."}, {"label": "text", "id": 7, "page_no": 114, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.4740447998047, "t": 403.30865478515625, "r": 547.2644, "b": 437.394287109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9761651754379272, "cells": [{"id": 16, "text": "The SET_COLUMN_ATTRIBUTE procedure sets the SECURE attribute for a column so that ", "bbox": {"l": 136.8, "t": 404.14621, "r": 546.67786, "b": 413.35919, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "variable values that are used for the column cannot be seen in the SQL Performance Monitor, ", "bbox": {"l": 136.79999, "t": 416.14603, "r": 547.2644, "b": 425.35900999999996, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "SQL Plan Cache Snapshot, or Visual Explain.", "bbox": {"l": 136.79999, "t": 428.1458400000001, "r": 338.97601, "b": 437.35883000000007, "coord_origin": "TOPLEFT"}}]}, "text": "The SET_COLUMN_ATTRIBUTE procedure sets the SECURE attribute for a column so that variable values that are used for the column cannot be seen in the SQL Performance Monitor, SQL Plan Cache Snapshot, or Visual Explain."}, {"label": "section_header", "id": 8, "page_no": 114, "cluster": {"id": 8, "label": "section_header", "bbox": {"l": 64.00121307373047, "t": 457.377197265625, "r": 184.5458984375, "b": 469.96271, "coord_origin": "TOPLEFT"}, "confidence": 0.9545406103134155, "cells": [{"id": 19, "text": "6.4.2", "bbox": {"l": 64.800003, "t": 457.97473, "r": 94.474304, "b": 469.96271, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Index advisor", "bbox": {"l": 98.183594, "t": 457.97473, "r": 184.20438, "b": 469.96271, "coord_origin": "TOPLEFT"}}]}, "text": "6.4.2 Index advisor"}, {"label": "text", "id": 9, "page_no": 114, "cluster": {"id": 9, "label": "text", "bbox": {"l": 135.94943237304688, "t": 483.509033203125, "r": 544.1452, "b": 517.70703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9826521873474121, "cells": [{"id": 21, "text": "Because the RCAC rule text can be almost any valid SQL logic, including local selection ", "bbox": {"l": 136.8, "t": 484.12872, "r": 527.37341, "b": 493.34171, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "predicates, join conditions, and subqueries, the standard query tuning techniques still apply. ", "bbox": {"l": 136.8, "t": 496.12854, "r": 544.1452, "b": 505.34152, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Without a doubt, a proper and adequate indexing strategy is a good starting point.", "bbox": {"l": 136.79999, "t": 508.12836, "r": 498.02637000000004, "b": 517.34134, "coord_origin": "TOPLEFT"}}]}, "text": "Because the RCAC rule text can be almost any valid SQL logic, including local selection predicates, join conditions, and subqueries, the standard query tuning techniques still apply. Without a doubt, a proper and adequate indexing strategy is a good starting point."}, {"label": "text", "id": 10, "page_no": 114, "cluster": {"id": 10, "label": "text", "bbox": {"l": 135.8879852294922, "t": 529.4095458984375, "r": 543.59814, "b": 587.827880859375, "coord_origin": "TOPLEFT"}, "confidence": 0.9877107739448547, "cells": [{"id": 24, "text": "The index advisor is not specifically enhanced for RCAC, but because the rule text is a fully ", "bbox": {"l": 136.79999, "t": 530.14792, "r": 540.85529, "b": 539.36092, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "integrated part of the query plan, any opportunities for indexing is advised based on the ", "bbox": {"l": 136.79999, "t": 542.1477199999999, "r": 525.34064, "b": 551.36072, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "current Query Optimizer functionality. If an index is advised because of the RCAC rule text ", "bbox": {"l": 136.79999, "t": 554.14752, "r": 536.7569, "b": 563.36052, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "logic, there is no RCAC reason code provided. Analyzing the query plan and the RCAC rule ", "bbox": {"l": 136.79999, "t": 566.14732, "r": 543.59814, "b": 575.36032, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "text provides the understanding as to why the index is being advised.", "bbox": {"l": 136.79999, "t": 578.1471300000001, "r": 440.79403999999994, "b": 587.36012, "coord_origin": "TOPLEFT"}}]}, "text": "The index advisor is not specifically enhanced for RCAC, but because the rule text is a fully integrated part of the query plan, any opportunities for indexing is advised based on the current Query Optimizer functionality. If an index is advised because of the RCAC rule text logic, there is no RCAC reason code provided. Analyzing the query plan and the RCAC rule text provides the understanding as to why the index is being advised."}, {"label": "picture", "id": 11, "page_no": 114, "cluster": {"id": 11, "label": "picture", "bbox": {"l": 63.79280090332031, "t": 107.09796142578125, "r": 547.32080078125, "b": 217.7356414794922, "coord_origin": "TOPLEFT"}, "confidence": 0.9807502627372742, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 114, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.21266174316406, "t": 70.70671844482422, "r": 514.50977, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9165806770324707, "cells": [{"id": 2, "text": "Figure 6-17 shows the statements of an SQL Performance Monitor and how RCAC is ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 514.50977, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "externalized.", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 193.28972, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-17 shows the statements of an SQL Performance Monitor and how RCAC is externalized."}, {"label": "caption", "id": 3, "page_no": 114, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.27816772460938, "t": 220.06015014648438, "r": 349.6502685546875, "b": 229.44299, "coord_origin": "TOPLEFT"}, "confidence": 0.9448087215423584, "cells": [{"id": 4, "text": "Figure 6-17 SQL Performance Monitor showing statements and RCAC", "bbox": {"l": 64.800003, "t": 221.11803999999995, "r": 349.08563, "b": 229.44299, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-17 SQL Performance Monitor showing statements and RCAC"}, {"label": "text", "id": 4, "page_no": 114, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.8977813720703, "t": 245.93429565429688, "r": 547.19598, "b": 328.34064000000006, "coord_origin": "TOPLEFT"}, "confidence": 0.9853147268295288, "cells": [{"id": 5, "text": "When implementing RCAC as part of a comprehensive and pervasive data access control ", "bbox": {"l": 136.8, "t": 247.12872000000004, "r": 535.89722, "b": 256.34173999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "initiative, consider that the database monitoring and analysis tools can collect literal values ", "bbox": {"l": 136.8, "t": 259.12854000000004, "r": 538.49878, "b": 268.34155, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "that are passed as part of SQL statements. These literal values can be viewed as part of the ", "bbox": {"l": 136.79999, "t": 271.12836000000004, "r": 546.87805, "b": 280.34137, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "information collected. If any of the literals are based on or are used with masked columns, it is ", "bbox": {"l": 136.79999, "t": 283.1282, "r": 547.19598, "b": 292.34119, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "important to review the database engineer\u2019s policy for viewing these data elements. For ", "bbox": {"l": 136.79999, "t": 295.12802, "r": 524.2348, "b": 304.341, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "example, supposed that column CUSTOMER_TAX_ID is deemed masked for the database ", "bbox": {"l": 136.8, "t": 307.12784, "r": 540.35242, "b": 316.34081999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "engineer and the CUSTOMER_TAX_ID column is used in a predicate as follows:", "bbox": {"l": 136.8, "t": 319.12766, "r": 491.99249, "b": 328.34064000000006, "coord_origin": "TOPLEFT"}}]}, "text": "When implementing RCAC as part of a comprehensive and pervasive data access control initiative, consider that the database monitoring and analysis tools can collect literal values that are passed as part of SQL statements. These literal values can be viewed as part of the information collected. If any of the literals are based on or are used with masked columns, it is important to review the database engineer\u2019s policy for viewing these data elements. For example, supposed that column CUSTOMER_TAX_ID is deemed masked for the database engineer and the CUSTOMER_TAX_ID column is used in a predicate as follows:"}, {"label": "text", "id": 5, "page_no": 114, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.05642700195312, "t": 335.3828125, "r": 321.65756, "b": 346.0798034667969, "coord_origin": "TOPLEFT"}, "confidence": 0.7673708200454712, "cells": [{"id": 12, "text": "WHERE CUSTOMER_TAX_ID = '123-45-7890'", "bbox": {"l": 136.8, "t": 336.25684, "r": 321.65756, "b": 345.03162, "coord_origin": "TOPLEFT"}}]}, "text": "WHERE CUSTOMER_TAX_ID = '123-45-7890'"}, {"label": "text", "id": 6, "page_no": 114, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.81124877929688, "t": 357.3571472167969, "r": 520.11249, "b": 391.33963, "coord_origin": "TOPLEFT"}, "confidence": 0.9725678563117981, "cells": [{"id": 13, "text": "The literal value of \u2019123-45-7890\u2019 is visible to the analyst, effectively exposing sensitive ", "bbox": {"l": 136.8, "t": 358.12701, "r": 520.11249, "b": 367.34, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "information. If this is not acceptable, you must implement the ", "bbox": {"l": 136.8, "t": 370.12683, "r": 407.22797, "b": 379.33981, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "SYSPROC.SET_COLUMN_ATTRIBUTE procedure.", "bbox": {"l": 136.8, "t": 382.1266499999999, "r": 366.48557, "b": 391.33963, "coord_origin": "TOPLEFT"}}]}, "text": "The literal value of \u2019123-45-7890\u2019 is visible to the analyst, effectively exposing sensitive information. If this is not acceptable, you must implement the SYSPROC.SET_COLUMN_ATTRIBUTE procedure."}, {"label": "text", "id": 7, "page_no": 114, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.4740447998047, "t": 403.30865478515625, "r": 547.2644, "b": 437.394287109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9761651754379272, "cells": [{"id": 16, "text": "The SET_COLUMN_ATTRIBUTE procedure sets the SECURE attribute for a column so that ", "bbox": {"l": 136.8, "t": 404.14621, "r": 546.67786, "b": 413.35919, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "variable values that are used for the column cannot be seen in the SQL Performance Monitor, ", "bbox": {"l": 136.79999, "t": 416.14603, "r": 547.2644, "b": 425.35900999999996, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "SQL Plan Cache Snapshot, or Visual Explain.", "bbox": {"l": 136.79999, "t": 428.1458400000001, "r": 338.97601, "b": 437.35883000000007, "coord_origin": "TOPLEFT"}}]}, "text": "The SET_COLUMN_ATTRIBUTE procedure sets the SECURE attribute for a column so that variable values that are used for the column cannot be seen in the SQL Performance Monitor, SQL Plan Cache Snapshot, or Visual Explain."}, {"label": "section_header", "id": 8, "page_no": 114, "cluster": {"id": 8, "label": "section_header", "bbox": {"l": 64.00121307373047, "t": 457.377197265625, "r": 184.5458984375, "b": 469.96271, "coord_origin": "TOPLEFT"}, "confidence": 0.9545406103134155, "cells": [{"id": 19, "text": "6.4.2", "bbox": {"l": 64.800003, "t": 457.97473, "r": 94.474304, "b": 469.96271, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Index advisor", "bbox": {"l": 98.183594, "t": 457.97473, "r": 184.20438, "b": 469.96271, "coord_origin": "TOPLEFT"}}]}, "text": "6.4.2 Index advisor"}, {"label": "text", "id": 9, "page_no": 114, "cluster": {"id": 9, "label": "text", "bbox": {"l": 135.94943237304688, "t": 483.509033203125, "r": 544.1452, "b": 517.70703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9826521873474121, "cells": [{"id": 21, "text": "Because the RCAC rule text can be almost any valid SQL logic, including local selection ", "bbox": {"l": 136.8, "t": 484.12872, "r": 527.37341, "b": 493.34171, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "predicates, join conditions, and subqueries, the standard query tuning techniques still apply. ", "bbox": {"l": 136.8, "t": 496.12854, "r": 544.1452, "b": 505.34152, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Without a doubt, a proper and adequate indexing strategy is a good starting point.", "bbox": {"l": 136.79999, "t": 508.12836, "r": 498.02637000000004, "b": 517.34134, "coord_origin": "TOPLEFT"}}]}, "text": "Because the RCAC rule text can be almost any valid SQL logic, including local selection predicates, join conditions, and subqueries, the standard query tuning techniques still apply. Without a doubt, a proper and adequate indexing strategy is a good starting point."}, {"label": "text", "id": 10, "page_no": 114, "cluster": {"id": 10, "label": "text", "bbox": {"l": 135.8879852294922, "t": 529.4095458984375, "r": 543.59814, "b": 587.827880859375, "coord_origin": "TOPLEFT"}, "confidence": 0.9877107739448547, "cells": [{"id": 24, "text": "The index advisor is not specifically enhanced for RCAC, but because the rule text is a fully ", "bbox": {"l": 136.79999, "t": 530.14792, "r": 540.85529, "b": 539.36092, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "integrated part of the query plan, any opportunities for indexing is advised based on the ", "bbox": {"l": 136.79999, "t": 542.1477199999999, "r": 525.34064, "b": 551.36072, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "current Query Optimizer functionality. If an index is advised because of the RCAC rule text ", "bbox": {"l": 136.79999, "t": 554.14752, "r": 536.7569, "b": 563.36052, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "logic, there is no RCAC reason code provided. Analyzing the query plan and the RCAC rule ", "bbox": {"l": 136.79999, "t": 566.14732, "r": 543.59814, "b": 575.36032, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "text provides the understanding as to why the index is being advised.", "bbox": {"l": 136.79999, "t": 578.1471300000001, "r": 440.79403999999994, "b": 587.36012, "coord_origin": "TOPLEFT"}}]}, "text": "The index advisor is not specifically enhanced for RCAC, but because the rule text is a fully integrated part of the query plan, any opportunities for indexing is advised based on the current Query Optimizer functionality. If an index is advised because of the RCAC rule text logic, there is no RCAC reason code provided. Analyzing the query plan and the RCAC rule text provides the understanding as to why the index is being advised."}, {"label": "picture", "id": 11, "page_no": 114, "cluster": {"id": 11, "label": "picture", "bbox": {"l": 63.79280090332031, "t": 107.09796142578125, "r": 547.32080078125, "b": 217.7356414794922, "coord_origin": "TOPLEFT"}, "confidence": 0.9807502627372742, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 114, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 376.0592956542969, "t": 754.98291015625, "r": 523.62878, "b": 764.048828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9528514742851257, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 376.79999, "t": 755.538002, "r": 523.62878, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 114, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.5274047851562, "t": 754.2946166992188, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.922478199005127, "cells": [{"id": 1, "text": "99", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "99"}]}}, {"page_no": 115, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "100 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "For example, the query that is shown in Figure 6-18 produces index advice for the user\u2019s ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 529.22491, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "predicate and the RCAC predicate.", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 291.40308, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 6-18 Index advice and RCAC", "bbox": {"l": 136.8, "t": 381.91799999999995, "r": 285.60236, "b": 390.24301, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "In Figure 6-19, index advisor is showing an index for the ACCOUNTS and CUSTOMERS ", "bbox": {"l": 136.8, "t": 407.92870999999997, "r": 530.6283, "b": 417.14169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "tables based on the RCAC rule text.", "bbox": {"l": 136.8, "t": 419.9285300000001, "r": 295.63611, "b": 429.14151, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Figure 6-19 Index advisor based on the RCAC rule", "bbox": {"l": 64.800003, "t": 558.0178999999999, "r": 271.233, "b": 566.34291, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "For more information about creating and using indexes, see ", "bbox": {"l": 136.8, "t": 584.02863, "r": 402.31378, "b": 593.24162, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "IBM DB2 for i indexing methods ", "bbox": {"l": 402.36047, "t": 584.02863, "r": 545.00952, "b": 593.24162, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "and strategies", "bbox": {"l": 136.79999, "t": 596.02843, "r": 199.48126, "b": 605.2414200000001, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": ", found at:", "bbox": {"l": 199.3199, "t": 596.02843, "r": 243.46958999999998, "b": 605.2414200000001, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "http://www.ibm.com/partnerworld/wps/servlet/ContentHandler/stg_ast_sys_wp_db2_i_in", "bbox": {"l": 136.79999, "t": 613.15764, "r": 546.53442, "b": 621.9323899999999, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "dexing_methods_strategies", "bbox": {"l": 136.79999, "t": 625.15744, "r": 261.71826, "b": 633.93219, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "6.4.3", "bbox": {"l": 64.800003, "t": 654.8347200000001, "r": 94.251732, "b": 666.82272, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Metadata using catalogs", "bbox": {"l": 97.933197, "t": 654.8347200000001, "r": 251.73373, "b": 666.82272, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "To make the discovery and identification of RCAC row permissions and column masks ", "bbox": {"l": 136.8, "t": 680.9887200000001, "r": 519.3606, "b": 690.20172, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "programmatically, query the QSYS2.SYSCONTROLS catalog view or the ", "bbox": {"l": 136.8, "t": 692.988525, "r": 461.96115, "b": 702.20153, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "QSYS2.SYSCONTROLSDEP catalog view directly. Otherwise, the System i Navigator ", "bbox": {"l": 136.8, "t": 704.988335, "r": 518.80981, "b": 714.20134, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Database graphical interface can be used interactively.", "bbox": {"l": 136.80099, "t": 716.988144, "r": 377.75638, "b": 726.201149, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "SELECT *", "bbox": {"l": 157.9931, "t": 149.12018, "r": 203.30074, "b": 159.40918, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "FROM ACCOUNTS A", "bbox": {"l": 157.9931, "t": 170.76196000000004, "r": 261.50269, "b": 181.05096000000003, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "WHERE A.", "bbox": {"l": 157.9931, "t": 192.40283, "r": 207.43439, "b": 202.69182999999998, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ACCOUNT_NUMBER", "bbox": {"l": 207.4079, "t": 192.40283, "r": 308.69241, "b": 202.70385999999996, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "= ?", "bbox": {"l": 311.45059, "t": 192.40283, "r": 325.75049, "b": 202.69182999999998, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "AND", "bbox": {"l": 157.99429, "t": 214.04462, "r": 180.14389, "b": 224.33362, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "A.CUSTOMER ID IN (", "bbox": {"l": 197.36319, "t": 214.04462, "r": 299.22586, "b": 224.33362, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "_", "bbox": {"l": 262.95361, "t": 214.04418999999996, "r": 268.9465, "b": 224.33318999999995, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "(", "bbox": {"l": 295.57959, "t": 214.04418999999996, "r": 299.22586, "b": 224.33318999999995, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "SELECT C.", "bbox": {"l": 236.68889999999996, "t": 235.68548999999996, "r": 285.47073, "b": 245.97448999999995, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CUSTOMER_ID", "bbox": {"l": 285.51285, "t": 235.68548999999996, "r": 359.03998, "b": 245.98650999999995, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "FROM CUSTOMERS C", "bbox": {"l": 236.68889999999996, "t": 257.32678, "r": 346.32556, "b": 267.61578, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "WHERE C.", "bbox": {"l": 236.68889999999996, "t": 278.96813999999995, "r": 285.50443, "b": 289.25711000000007, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "CUSTOMER_LOGIN_ID", "bbox": {"l": 285.51285, "t": 278.96813999999995, "r": 396.81561, "b": 289.26913, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "= CUSTOMER_LOGIN_ID);", "bbox": {"l": 399.42456, "t": 278.96813999999995, "r": 524.35449, "b": 289.25711000000007, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "A.CUSTOMER_ID has an index (via the foreign key constraint)", "bbox": {"l": 204.2925, "t": 321.07211, "r": 472.9567, "b": 330.41876, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "A ACCOUNT NUMBER d", "bbox": {"l": 204.2925, "t": 347.30402, "r": 311.6994, "b": 356.65067, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "t h", "bbox": {"l": 340.37268, "t": 347.30402, "r": 352.16086, "b": 356.65067, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "i", "bbox": {"l": 383.88382, "t": 347.30402, "r": 387.12537, "b": 356.65067, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "d", "bbox": {"l": 390.32446, "t": 347.30402, "r": 397.60028, "b": 356.65067, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "A.ACCOUNT_NUMBER does not have an index", "bbox": {"l": 204.2925, "t": 347.30402, "r": 407.07541, "b": 356.65067, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "C.CUSTOMER_LOGIN_ID, C.CCUSTOMER_ID does not have an index", "bbox": {"l": 204.29321, "t": 360.41992, "r": 499.13022, "b": 369.76657, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.36641693115234, "t": 754.297607421875, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9257708787918091, "cells": [{"id": 0, "text": "100 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 98.54092407226562, "t": 754.6331787109375, "r": 339.8568115234375, "b": 764.0162353515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9520395398139954, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 136.3820037841797, "t": 70.64859008789062, "r": 529.22491, "b": 92.91596984863281, "coord_origin": "TOPLEFT"}, "confidence": 0.9596586227416992, "cells": [{"id": 2, "text": "For example, the query that is shown in Figure 6-18 produces index advice for the user\u2019s ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 529.22491, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "predicate and the RCAC predicate.", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 291.40308, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.15460205078125, "t": 381.4628601074219, "r": 286.3040466308594, "b": 390.739990234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9480466842651367, "cells": [{"id": 4, "text": "Figure 6-18 Index advice and RCAC", "bbox": {"l": 136.8, "t": 381.91799999999995, "r": 285.60236, "b": 390.24301, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 136.26499938964844, "t": 407.0609130859375, "r": 530.6283, "b": 429.14151, "coord_origin": "TOPLEFT"}, "confidence": 0.9521172642707825, "cells": [{"id": 5, "text": "In Figure 6-19, index advisor is showing an index for the ACCOUNTS and CUSTOMERS ", "bbox": {"l": 136.8, "t": 407.92870999999997, "r": 530.6283, "b": 417.14169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "tables based on the RCAC rule text.", "bbox": {"l": 136.8, "t": 419.9285300000001, "r": 295.63611, "b": 429.14151, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 64.29851531982422, "t": 557.3598022460938, "r": 271.84735107421875, "b": 566.8680419921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9459379315376282, "cells": [{"id": 7, "text": "Figure 6-19 Index advisor based on the RCAC rule", "bbox": {"l": 64.800003, "t": 558.0178999999999, "r": 271.233, "b": 566.34291, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 136.3258819580078, "t": 583.20947265625, "r": 545.00952, "b": 605.608154296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9606812596321106, "cells": [{"id": 8, "text": "For more information about creating and using indexes, see ", "bbox": {"l": 136.8, "t": 584.02863, "r": 402.31378, "b": 593.24162, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "IBM DB2 for i indexing methods ", "bbox": {"l": 402.36047, "t": 584.02863, "r": 545.00952, "b": 593.24162, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "and strategies", "bbox": {"l": 136.79999, "t": 596.02843, "r": 199.48126, "b": 605.2414200000001, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": ", found at:", "bbox": {"l": 199.3199, "t": 596.02843, "r": 243.46958999999998, "b": 605.2414200000001, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 136.258544921875, "t": 612.0850219726562, "r": 546.53442, "b": 634.7529907226562, "coord_origin": "TOPLEFT"}, "confidence": 0.9552512764930725, "cells": [{"id": 12, "text": "http://www.ibm.com/partnerworld/wps/servlet/ContentHandler/stg_ast_sys_wp_db2_i_in", "bbox": {"l": 136.79999, "t": 613.15764, "r": 546.53442, "b": 621.9323899999999, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "dexing_methods_strategies", "bbox": {"l": 136.79999, "t": 625.15744, "r": 261.71826, "b": 633.93219, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "section_header", "bbox": {"l": 64.1768798828125, "t": 653.7276000976562, "r": 251.73373, "b": 667.0787353515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9654273390769958, "cells": [{"id": 14, "text": "6.4.3", "bbox": {"l": 64.800003, "t": 654.8347200000001, "r": 94.251732, "b": 666.82272, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Metadata using catalogs", "bbox": {"l": 97.933197, "t": 654.8347200000001, "r": 251.73373, "b": 666.82272, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 135.8922119140625, "t": 679.9402465820312, "r": 519.3606, "b": 726.3667602539062, "coord_origin": "TOPLEFT"}, "confidence": 0.9741504192352295, "cells": [{"id": 16, "text": "To make the discovery and identification of RCAC row permissions and column masks ", "bbox": {"l": 136.8, "t": 680.9887200000001, "r": 519.3606, "b": 690.20172, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "programmatically, query the QSYS2.SYSCONTROLS catalog view or the ", "bbox": {"l": 136.8, "t": 692.988525, "r": 461.96115, "b": 702.20153, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "QSYS2.SYSCONTROLSDEP catalog view directly. Otherwise, the System i Navigator ", "bbox": {"l": 136.8, "t": 704.988335, "r": 518.80981, "b": 714.20134, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Database graphical interface can be used interactively.", "bbox": {"l": 136.80099, "t": 716.988144, "r": 377.75638, "b": 726.201149, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "picture", "bbox": {"l": 136.10072326660156, "t": 107.46050262451172, "r": 547.119140625, "b": 378.9705810546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9820297360420227, "cells": [{"id": 20, "text": "SELECT *", "bbox": {"l": 157.9931, "t": 149.12018, "r": 203.30074, "b": 159.40918, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "FROM ACCOUNTS A", "bbox": {"l": 157.9931, "t": 170.76196000000004, "r": 261.50269, "b": 181.05096000000003, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "WHERE A.", "bbox": {"l": 157.9931, "t": 192.40283, "r": 207.43439, "b": 202.69182999999998, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ACCOUNT_NUMBER", "bbox": {"l": 207.4079, "t": 192.40283, "r": 308.69241, "b": 202.70385999999996, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "= ?", "bbox": {"l": 311.45059, "t": 192.40283, "r": 325.75049, "b": 202.69182999999998, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "AND", "bbox": {"l": 157.99429, "t": 214.04462, "r": 180.14389, "b": 224.33362, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "A.CUSTOMER ID IN (", "bbox": {"l": 197.36319, "t": 214.04462, "r": 299.22586, "b": 224.33362, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "_", "bbox": {"l": 262.95361, "t": 214.04418999999996, "r": 268.9465, "b": 224.33318999999995, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "(", "bbox": {"l": 295.57959, "t": 214.04418999999996, "r": 299.22586, "b": 224.33318999999995, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "SELECT C.", "bbox": {"l": 236.68889999999996, "t": 235.68548999999996, "r": 285.47073, "b": 245.97448999999995, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CUSTOMER_ID", "bbox": {"l": 285.51285, "t": 235.68548999999996, "r": 359.03998, "b": 245.98650999999995, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "FROM CUSTOMERS C", "bbox": {"l": 236.68889999999996, "t": 257.32678, "r": 346.32556, "b": 267.61578, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "WHERE C.", "bbox": {"l": 236.68889999999996, "t": 278.96813999999995, "r": 285.50443, "b": 289.25711000000007, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "CUSTOMER_LOGIN_ID", "bbox": {"l": 285.51285, "t": 278.96813999999995, "r": 396.81561, "b": 289.26913, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "= CUSTOMER_LOGIN_ID);", "bbox": {"l": 399.42456, "t": 278.96813999999995, "r": 524.35449, "b": 289.25711000000007, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "A.CUSTOMER_ID has an index (via the foreign key constraint)", "bbox": {"l": 204.2925, "t": 321.07211, "r": 472.9567, "b": 330.41876, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "A ACCOUNT NUMBER d", "bbox": {"l": 204.2925, "t": 347.30402, "r": 311.6994, "b": 356.65067, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "t h", "bbox": {"l": 340.37268, "t": 347.30402, "r": 352.16086, "b": 356.65067, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "i", "bbox": {"l": 383.88382, "t": 347.30402, "r": 387.12537, "b": 356.65067, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "d", "bbox": {"l": 390.32446, "t": 347.30402, "r": 397.60028, "b": 356.65067, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "A.ACCOUNT_NUMBER does not have an index", "bbox": {"l": 204.2925, "t": 347.30402, "r": 407.07541, "b": 356.65067, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "C.CUSTOMER_LOGIN_ID, C.CCUSTOMER_ID does not have an index", "bbox": {"l": 204.29321, "t": 360.41992, "r": 499.13022, "b": 369.76657, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "picture", "bbox": {"l": 64.22953796386719, "t": 443.35888671875, "r": 510.0937805175781, "b": 554.72021484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9759700298309326, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 115, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.36641693115234, "t": 754.297607421875, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9257708787918091, "cells": [{"id": 0, "text": "100 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "100"}, {"label": "page_footer", "id": 1, "page_no": 115, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.54092407226562, "t": 754.6331787109375, "r": 339.8568115234375, "b": 764.0162353515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9520395398139954, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 2, "page_no": 115, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.3820037841797, "t": 70.64859008789062, "r": 529.22491, "b": 92.91596984863281, "coord_origin": "TOPLEFT"}, "confidence": 0.9596586227416992, "cells": [{"id": 2, "text": "For example, the query that is shown in Figure 6-18 produces index advice for the user\u2019s ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 529.22491, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "predicate and the RCAC predicate.", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 291.40308, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "For example, the query that is shown in Figure 6-18 produces index advice for the user\u2019s predicate and the RCAC predicate."}, {"label": "caption", "id": 3, "page_no": 115, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.15460205078125, "t": 381.4628601074219, "r": 286.3040466308594, "b": 390.739990234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9480466842651367, "cells": [{"id": 4, "text": "Figure 6-18 Index advice and RCAC", "bbox": {"l": 136.8, "t": 381.91799999999995, "r": 285.60236, "b": 390.24301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-18 Index advice and RCAC"}, {"label": "text", "id": 4, "page_no": 115, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.26499938964844, "t": 407.0609130859375, "r": 530.6283, "b": 429.14151, "coord_origin": "TOPLEFT"}, "confidence": 0.9521172642707825, "cells": [{"id": 5, "text": "In Figure 6-19, index advisor is showing an index for the ACCOUNTS and CUSTOMERS ", "bbox": {"l": 136.8, "t": 407.92870999999997, "r": 530.6283, "b": 417.14169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "tables based on the RCAC rule text.", "bbox": {"l": 136.8, "t": 419.9285300000001, "r": 295.63611, "b": 429.14151, "coord_origin": "TOPLEFT"}}]}, "text": "In Figure 6-19, index advisor is showing an index for the ACCOUNTS and CUSTOMERS tables based on the RCAC rule text."}, {"label": "caption", "id": 5, "page_no": 115, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.29851531982422, "t": 557.3598022460938, "r": 271.84735107421875, "b": 566.8680419921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9459379315376282, "cells": [{"id": 7, "text": "Figure 6-19 Index advisor based on the RCAC rule", "bbox": {"l": 64.800003, "t": 558.0178999999999, "r": 271.233, "b": 566.34291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-19 Index advisor based on the RCAC rule"}, {"label": "text", "id": 6, "page_no": 115, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.3258819580078, "t": 583.20947265625, "r": 545.00952, "b": 605.608154296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9606812596321106, "cells": [{"id": 8, "text": "For more information about creating and using indexes, see ", "bbox": {"l": 136.8, "t": 584.02863, "r": 402.31378, "b": 593.24162, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "IBM DB2 for i indexing methods ", "bbox": {"l": 402.36047, "t": 584.02863, "r": 545.00952, "b": 593.24162, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "and strategies", "bbox": {"l": 136.79999, "t": 596.02843, "r": 199.48126, "b": 605.2414200000001, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": ", found at:", "bbox": {"l": 199.3199, "t": 596.02843, "r": 243.46958999999998, "b": 605.2414200000001, "coord_origin": "TOPLEFT"}}]}, "text": "For more information about creating and using indexes, see IBM DB2 for i indexing methods and strategies , found at:"}, {"label": "text", "id": 7, "page_no": 115, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.258544921875, "t": 612.0850219726562, "r": 546.53442, "b": 634.7529907226562, "coord_origin": "TOPLEFT"}, "confidence": 0.9552512764930725, "cells": [{"id": 12, "text": "http://www.ibm.com/partnerworld/wps/servlet/ContentHandler/stg_ast_sys_wp_db2_i_in", "bbox": {"l": 136.79999, "t": 613.15764, "r": 546.53442, "b": 621.9323899999999, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "dexing_methods_strategies", "bbox": {"l": 136.79999, "t": 625.15744, "r": 261.71826, "b": 633.93219, "coord_origin": "TOPLEFT"}}]}, "text": "http://www.ibm.com/partnerworld/wps/servlet/ContentHandler/stg_ast_sys_wp_db2_i_in dexing_methods_strategies"}, {"label": "section_header", "id": 8, "page_no": 115, "cluster": {"id": 8, "label": "section_header", "bbox": {"l": 64.1768798828125, "t": 653.7276000976562, "r": 251.73373, "b": 667.0787353515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9654273390769958, "cells": [{"id": 14, "text": "6.4.3", "bbox": {"l": 64.800003, "t": 654.8347200000001, "r": 94.251732, "b": 666.82272, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Metadata using catalogs", "bbox": {"l": 97.933197, "t": 654.8347200000001, "r": 251.73373, "b": 666.82272, "coord_origin": "TOPLEFT"}}]}, "text": "6.4.3 Metadata using catalogs"}, {"label": "text", "id": 9, "page_no": 115, "cluster": {"id": 9, "label": "text", "bbox": {"l": 135.8922119140625, "t": 679.9402465820312, "r": 519.3606, "b": 726.3667602539062, "coord_origin": "TOPLEFT"}, "confidence": 0.9741504192352295, "cells": [{"id": 16, "text": "To make the discovery and identification of RCAC row permissions and column masks ", "bbox": {"l": 136.8, "t": 680.9887200000001, "r": 519.3606, "b": 690.20172, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "programmatically, query the QSYS2.SYSCONTROLS catalog view or the ", "bbox": {"l": 136.8, "t": 692.988525, "r": 461.96115, "b": 702.20153, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "QSYS2.SYSCONTROLSDEP catalog view directly. Otherwise, the System i Navigator ", "bbox": {"l": 136.8, "t": 704.988335, "r": 518.80981, "b": 714.20134, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Database graphical interface can be used interactively.", "bbox": {"l": 136.80099, "t": 716.988144, "r": 377.75638, "b": 726.201149, "coord_origin": "TOPLEFT"}}]}, "text": "To make the discovery and identification of RCAC row permissions and column masks programmatically, query the QSYS2.SYSCONTROLS catalog view or the QSYS2.SYSCONTROLSDEP catalog view directly. Otherwise, the System i Navigator Database graphical interface can be used interactively."}, {"label": "picture", "id": 10, "page_no": 115, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 136.10072326660156, "t": 107.46050262451172, "r": 547.119140625, "b": 378.9705810546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9820297360420227, "cells": [{"id": 20, "text": "SELECT *", "bbox": {"l": 157.9931, "t": 149.12018, "r": 203.30074, "b": 159.40918, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "FROM ACCOUNTS A", "bbox": {"l": 157.9931, "t": 170.76196000000004, "r": 261.50269, "b": 181.05096000000003, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "WHERE A.", "bbox": {"l": 157.9931, "t": 192.40283, "r": 207.43439, "b": 202.69182999999998, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ACCOUNT_NUMBER", "bbox": {"l": 207.4079, "t": 192.40283, "r": 308.69241, "b": 202.70385999999996, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "= ?", "bbox": {"l": 311.45059, "t": 192.40283, "r": 325.75049, "b": 202.69182999999998, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "AND", "bbox": {"l": 157.99429, "t": 214.04462, "r": 180.14389, "b": 224.33362, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "A.CUSTOMER ID IN (", "bbox": {"l": 197.36319, "t": 214.04462, "r": 299.22586, "b": 224.33362, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "_", "bbox": {"l": 262.95361, "t": 214.04418999999996, "r": 268.9465, "b": 224.33318999999995, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "(", "bbox": {"l": 295.57959, "t": 214.04418999999996, "r": 299.22586, "b": 224.33318999999995, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "SELECT C.", "bbox": {"l": 236.68889999999996, "t": 235.68548999999996, "r": 285.47073, "b": 245.97448999999995, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CUSTOMER_ID", "bbox": {"l": 285.51285, "t": 235.68548999999996, "r": 359.03998, "b": 245.98650999999995, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "FROM CUSTOMERS C", "bbox": {"l": 236.68889999999996, "t": 257.32678, "r": 346.32556, "b": 267.61578, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "WHERE C.", "bbox": {"l": 236.68889999999996, "t": 278.96813999999995, "r": 285.50443, "b": 289.25711000000007, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "CUSTOMER_LOGIN_ID", "bbox": {"l": 285.51285, "t": 278.96813999999995, "r": 396.81561, "b": 289.26913, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "= CUSTOMER_LOGIN_ID);", "bbox": {"l": 399.42456, "t": 278.96813999999995, "r": 524.35449, "b": 289.25711000000007, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "A.CUSTOMER_ID has an index (via the foreign key constraint)", "bbox": {"l": 204.2925, "t": 321.07211, "r": 472.9567, "b": 330.41876, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "A ACCOUNT NUMBER d", "bbox": {"l": 204.2925, "t": 347.30402, "r": 311.6994, "b": 356.65067, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "t h", "bbox": {"l": 340.37268, "t": 347.30402, "r": 352.16086, "b": 356.65067, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "i", "bbox": {"l": 383.88382, "t": 347.30402, "r": 387.12537, "b": 356.65067, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "d", "bbox": {"l": 390.32446, "t": 347.30402, "r": 397.60028, "b": 356.65067, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "A.ACCOUNT_NUMBER does not have an index", "bbox": {"l": 204.2925, "t": 347.30402, "r": 407.07541, "b": 356.65067, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "C.CUSTOMER_LOGIN_ID, C.CCUSTOMER_ID does not have an index", "bbox": {"l": 204.29321, "t": 360.41992, "r": 499.13022, "b": 369.76657, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 11, "page_no": 115, "cluster": {"id": 11, "label": "picture", "bbox": {"l": 64.22953796386719, "t": 443.35888671875, "r": 510.0937805175781, "b": 554.72021484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9759700298309326, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 115, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.3820037841797, "t": 70.64859008789062, "r": 529.22491, "b": 92.91596984863281, "coord_origin": "TOPLEFT"}, "confidence": 0.9596586227416992, "cells": [{"id": 2, "text": "For example, the query that is shown in Figure 6-18 produces index advice for the user\u2019s ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 529.22491, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "predicate and the RCAC predicate.", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 291.40308, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "For example, the query that is shown in Figure 6-18 produces index advice for the user\u2019s predicate and the RCAC predicate."}, {"label": "caption", "id": 3, "page_no": 115, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.15460205078125, "t": 381.4628601074219, "r": 286.3040466308594, "b": 390.739990234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9480466842651367, "cells": [{"id": 4, "text": "Figure 6-18 Index advice and RCAC", "bbox": {"l": 136.8, "t": 381.91799999999995, "r": 285.60236, "b": 390.24301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-18 Index advice and RCAC"}, {"label": "text", "id": 4, "page_no": 115, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.26499938964844, "t": 407.0609130859375, "r": 530.6283, "b": 429.14151, "coord_origin": "TOPLEFT"}, "confidence": 0.9521172642707825, "cells": [{"id": 5, "text": "In Figure 6-19, index advisor is showing an index for the ACCOUNTS and CUSTOMERS ", "bbox": {"l": 136.8, "t": 407.92870999999997, "r": 530.6283, "b": 417.14169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "tables based on the RCAC rule text.", "bbox": {"l": 136.8, "t": 419.9285300000001, "r": 295.63611, "b": 429.14151, "coord_origin": "TOPLEFT"}}]}, "text": "In Figure 6-19, index advisor is showing an index for the ACCOUNTS and CUSTOMERS tables based on the RCAC rule text."}, {"label": "caption", "id": 5, "page_no": 115, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.29851531982422, "t": 557.3598022460938, "r": 271.84735107421875, "b": 566.8680419921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9459379315376282, "cells": [{"id": 7, "text": "Figure 6-19 Index advisor based on the RCAC rule", "bbox": {"l": 64.800003, "t": 558.0178999999999, "r": 271.233, "b": 566.34291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-19 Index advisor based on the RCAC rule"}, {"label": "text", "id": 6, "page_no": 115, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.3258819580078, "t": 583.20947265625, "r": 545.00952, "b": 605.608154296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9606812596321106, "cells": [{"id": 8, "text": "For more information about creating and using indexes, see ", "bbox": {"l": 136.8, "t": 584.02863, "r": 402.31378, "b": 593.24162, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "IBM DB2 for i indexing methods ", "bbox": {"l": 402.36047, "t": 584.02863, "r": 545.00952, "b": 593.24162, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "and strategies", "bbox": {"l": 136.79999, "t": 596.02843, "r": 199.48126, "b": 605.2414200000001, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": ", found at:", "bbox": {"l": 199.3199, "t": 596.02843, "r": 243.46958999999998, "b": 605.2414200000001, "coord_origin": "TOPLEFT"}}]}, "text": "For more information about creating and using indexes, see IBM DB2 for i indexing methods and strategies , found at:"}, {"label": "text", "id": 7, "page_no": 115, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.258544921875, "t": 612.0850219726562, "r": 546.53442, "b": 634.7529907226562, "coord_origin": "TOPLEFT"}, "confidence": 0.9552512764930725, "cells": [{"id": 12, "text": "http://www.ibm.com/partnerworld/wps/servlet/ContentHandler/stg_ast_sys_wp_db2_i_in", "bbox": {"l": 136.79999, "t": 613.15764, "r": 546.53442, "b": 621.9323899999999, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "dexing_methods_strategies", "bbox": {"l": 136.79999, "t": 625.15744, "r": 261.71826, "b": 633.93219, "coord_origin": "TOPLEFT"}}]}, "text": "http://www.ibm.com/partnerworld/wps/servlet/ContentHandler/stg_ast_sys_wp_db2_i_in dexing_methods_strategies"}, {"label": "section_header", "id": 8, "page_no": 115, "cluster": {"id": 8, "label": "section_header", "bbox": {"l": 64.1768798828125, "t": 653.7276000976562, "r": 251.73373, "b": 667.0787353515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9654273390769958, "cells": [{"id": 14, "text": "6.4.3", "bbox": {"l": 64.800003, "t": 654.8347200000001, "r": 94.251732, "b": 666.82272, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Metadata using catalogs", "bbox": {"l": 97.933197, "t": 654.8347200000001, "r": 251.73373, "b": 666.82272, "coord_origin": "TOPLEFT"}}]}, "text": "6.4.3 Metadata using catalogs"}, {"label": "text", "id": 9, "page_no": 115, "cluster": {"id": 9, "label": "text", "bbox": {"l": 135.8922119140625, "t": 679.9402465820312, "r": 519.3606, "b": 726.3667602539062, "coord_origin": "TOPLEFT"}, "confidence": 0.9741504192352295, "cells": [{"id": 16, "text": "To make the discovery and identification of RCAC row permissions and column masks ", "bbox": {"l": 136.8, "t": 680.9887200000001, "r": 519.3606, "b": 690.20172, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "programmatically, query the QSYS2.SYSCONTROLS catalog view or the ", "bbox": {"l": 136.8, "t": 692.988525, "r": 461.96115, "b": 702.20153, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "QSYS2.SYSCONTROLSDEP catalog view directly. Otherwise, the System i Navigator ", "bbox": {"l": 136.8, "t": 704.988335, "r": 518.80981, "b": 714.20134, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Database graphical interface can be used interactively.", "bbox": {"l": 136.80099, "t": 716.988144, "r": 377.75638, "b": 726.201149, "coord_origin": "TOPLEFT"}}]}, "text": "To make the discovery and identification of RCAC row permissions and column masks programmatically, query the QSYS2.SYSCONTROLS catalog view or the QSYS2.SYSCONTROLSDEP catalog view directly. Otherwise, the System i Navigator Database graphical interface can be used interactively."}, {"label": "picture", "id": 10, "page_no": 115, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 136.10072326660156, "t": 107.46050262451172, "r": 547.119140625, "b": 378.9705810546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9820297360420227, "cells": [{"id": 20, "text": "SELECT *", "bbox": {"l": 157.9931, "t": 149.12018, "r": 203.30074, "b": 159.40918, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "FROM ACCOUNTS A", "bbox": {"l": 157.9931, "t": 170.76196000000004, "r": 261.50269, "b": 181.05096000000003, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "WHERE A.", "bbox": {"l": 157.9931, "t": 192.40283, "r": 207.43439, "b": 202.69182999999998, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ACCOUNT_NUMBER", "bbox": {"l": 207.4079, "t": 192.40283, "r": 308.69241, "b": 202.70385999999996, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "= ?", "bbox": {"l": 311.45059, "t": 192.40283, "r": 325.75049, "b": 202.69182999999998, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "AND", "bbox": {"l": 157.99429, "t": 214.04462, "r": 180.14389, "b": 224.33362, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "A.CUSTOMER ID IN (", "bbox": {"l": 197.36319, "t": 214.04462, "r": 299.22586, "b": 224.33362, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "_", "bbox": {"l": 262.95361, "t": 214.04418999999996, "r": 268.9465, "b": 224.33318999999995, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "(", "bbox": {"l": 295.57959, "t": 214.04418999999996, "r": 299.22586, "b": 224.33318999999995, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "SELECT C.", "bbox": {"l": 236.68889999999996, "t": 235.68548999999996, "r": 285.47073, "b": 245.97448999999995, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CUSTOMER_ID", "bbox": {"l": 285.51285, "t": 235.68548999999996, "r": 359.03998, "b": 245.98650999999995, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "FROM CUSTOMERS C", "bbox": {"l": 236.68889999999996, "t": 257.32678, "r": 346.32556, "b": 267.61578, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "WHERE C.", "bbox": {"l": 236.68889999999996, "t": 278.96813999999995, "r": 285.50443, "b": 289.25711000000007, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "CUSTOMER_LOGIN_ID", "bbox": {"l": 285.51285, "t": 278.96813999999995, "r": 396.81561, "b": 289.26913, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "= CUSTOMER_LOGIN_ID);", "bbox": {"l": 399.42456, "t": 278.96813999999995, "r": 524.35449, "b": 289.25711000000007, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "A.CUSTOMER_ID has an index (via the foreign key constraint)", "bbox": {"l": 204.2925, "t": 321.07211, "r": 472.9567, "b": 330.41876, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "A ACCOUNT NUMBER d", "bbox": {"l": 204.2925, "t": 347.30402, "r": 311.6994, "b": 356.65067, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "t h", "bbox": {"l": 340.37268, "t": 347.30402, "r": 352.16086, "b": 356.65067, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "i", "bbox": {"l": 383.88382, "t": 347.30402, "r": 387.12537, "b": 356.65067, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "d", "bbox": {"l": 390.32446, "t": 347.30402, "r": 397.60028, "b": 356.65067, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "A.ACCOUNT_NUMBER does not have an index", "bbox": {"l": 204.2925, "t": 347.30402, "r": 407.07541, "b": 356.65067, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "C.CUSTOMER_LOGIN_ID, C.CCUSTOMER_ID does not have an index", "bbox": {"l": 204.29321, "t": 360.41992, "r": 499.13022, "b": 369.76657, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 11, "page_no": 115, "cluster": {"id": 11, "label": "picture", "bbox": {"l": 64.22953796386719, "t": 443.35888671875, "r": 510.0937805175781, "b": 554.72021484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9759700298309326, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 115, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.36641693115234, "t": 754.297607421875, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9257708787918091, "cells": [{"id": 0, "text": "100 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "100"}, {"label": "page_footer", "id": 1, "page_no": 115, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.54092407226562, "t": 754.6331787109375, "r": 339.8568115234375, "b": 764.0162353515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9520395398139954, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 116, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 371.28, "t": 755.538002, "r": 517.96918, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "101", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Figure 6-20 shows the QSYS2.SYSCONTROLS catalog view.", "bbox": {"l": 136.8002, "t": 71.50903000000005, "r": 409.46722, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 6-20 RCAC and catalogs", "bbox": {"l": 64.800003, "t": 246.19799999999998, "r": 196.89209, "b": 254.52295000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "The SYSCONTROLS catalog view contains the following columns:", "bbox": {"l": 136.8, "t": 272.14868, "r": 430.36699999999996, "b": 281.36169, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 289.33768, "r": 141.78, "b": 298.11246, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "COLUMN_NAME", "bbox": {"l": 151.20016, "t": 289.18829, "r": 228.86325000000002, "b": 298.40128, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "GLYPH", "bbox": {"l": 136.8, "t": 301.33749, "r": 141.78, "b": 310.11227, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "CONTROL_TYPE", "bbox": {"l": 151.20016, "t": 301.18811, "r": 231.54153, "b": 310.40109000000007, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 313.33730999999995, "r": 141.78, "b": 322.11209, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "CREATE_TIME", "bbox": {"l": 151.20016, "t": 313.18793, "r": 219.97597, "b": 322.40091, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "GLYPH", "bbox": {"l": 136.8, "t": 325.33713000000006, "r": 141.78, "b": 334.11190999999997, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "ENABLE", "bbox": {"l": 151.20016, "t": 325.18774, "r": 190.62184, "b": 334.40073, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 337.33694, "r": 141.78, "b": 346.11172, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "ENFORCED", "bbox": {"l": 151.20016, "t": 337.18756, "r": 207.25305, "b": 346.40054000000003, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 349.33676, "r": 141.78, "b": 358.11154, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "ASP_NUMBER", "bbox": {"l": 151.20016, "t": 349.18738, "r": 220.03371999999996, "b": 358.40036, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "GLYPH", "bbox": {"l": 136.8, "t": 361.33658, "r": 141.78, "b": 370.11135999999993, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "IMPLICIT", "bbox": {"l": 151.20016, "t": 361.18719, "r": 193.41263, "b": 370.40018, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "GLYPH", "bbox": {"l": 136.8, "t": 373.33639999999997, "r": 141.78, "b": 382.11118000000005, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "LABEL", "bbox": {"l": 151.20016, "t": 373.18701, "r": 182.29428, "b": 382.39999, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "GLYPH", "bbox": {"l": 136.8, "t": 385.33621, "r": 141.78, "b": 394.11099, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "LAST_ALTERED", "bbox": {"l": 151.20016, "t": 385.18683, "r": 226.72983, "b": 394.39980999999995, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "GLYPH", "bbox": {"l": 136.8, "t": 397.33603, "r": 141.78, "b": 406.11081, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "LONG_COMMENT", "bbox": {"l": 151.20016, "t": 397.18665, "r": 236.66890999999998, "b": 406.39963000000006, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "GLYPH", "bbox": {"l": 136.8, "t": 409.33584999999994, "r": 141.78, "b": 418.11063, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "RCAC_NAME", "bbox": {"l": 151.20016, "t": 409.18646, "r": 213.68124, "b": 418.39944, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "GLYPH", "bbox": {"l": 136.8, "t": 421.33566, "r": 141.78, "b": 430.11044, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "RCAC_OWNER", "bbox": {"l": 151.20016, "t": 421.18628, "r": 222.78268, "b": 430.39926, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "GLYPH", "bbox": {"l": 136.8, "t": 433.33548, "r": 141.78, "b": 442.11026, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "RCAC_SCHEMA", "bbox": {"l": 151.20016, "t": 433.1861, "r": 227.54257000000004, "b": 442.39908, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "GLYPH", "bbox": {"l": 136.8, "t": 445.3353, "r": 141.78, "b": 454.11008, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "RULETEXT", "bbox": {"l": 151.20016, "t": 445.18591, "r": 202.96228, "b": 454.39889999999997, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "GLYPH", "bbox": {"l": 136.8, "t": 457.33511, "r": 141.78, "b": 466.10989, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "SYSTEM_COLUMN_NAME", "bbox": {"l": 151.20016, "t": 457.18573, "r": 275.5697, "b": 466.39871, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "GLYPH", "bbox": {"l": 136.8, "t": 469.33493, "r": 141.78, "b": 478.10971, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "SYSTEM_TABLE_NAME", "bbox": {"l": 151.20016, "t": 469.18555, "r": 262.72827, "b": 478.39853, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "GLYPH", "bbox": {"l": 136.8, "t": 481.33475, "r": 141.78, "b": 490.10953, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "SYSTEM_TABLE_SCHEMA", "bbox": {"l": 151.20016, "t": 481.18536, "r": 276.52487, "b": 490.39835, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "GLYPH", "bbox": {"l": 136.8, "t": 493.33456, "r": 141.78, "b": 502.10934, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "TABLE_NAME", "bbox": {"l": 151.20016, "t": 493.18518, "r": 216.03579999999997, "b": 502.39816, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "GLYPH", "bbox": {"l": 136.8, "t": 505.33438, "r": 141.78, "b": 514.10916, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "TABLE_SCHEMA", "bbox": {"l": 151.20016, "t": 505.185, "r": 230.00568000000004, "b": 514.39798, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "GLYPH", "bbox": {"l": 136.8, "t": 517.3342, "r": 141.78, "b": 526.10898, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "TBCORRELATION", "bbox": {"l": 151.20016, "t": 517.18481, "r": 235.02153, "b": 526.3978, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "The SYSCONTROLSDEP catalog view contains the following columns:", "bbox": {"l": 136.8, "t": 539.20438, "r": 451.01199, "b": 548.41737, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "GLYPH", "bbox": {"l": 136.8, "t": 556.33359, "r": 141.78, "b": 565.10834, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "COLUMN_NAME", "bbox": {"l": 151.20016, "t": 556.1841900000001, "r": 228.86325000000002, "b": 565.39719, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "GLYPH", "bbox": {"l": 136.8, "t": 568.33339, "r": 141.78, "b": 577.10814, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "CONTROL_TYPE", "bbox": {"l": 151.20016, "t": 568.18399, "r": 231.54153, "b": 577.39699, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "GLYPH", "bbox": {"l": 136.8, "t": 580.3331900000001, "r": 141.78, "b": 589.10794, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "IASP_NUMBER", "bbox": {"l": 151.20016, "t": 580.18379, "r": 222.81953000000001, "b": 589.39679, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "GLYPH", "bbox": {"l": 136.8, "t": 592.33299, "r": 141.78, "b": 601.10774, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "OBJECT_NAME", "bbox": {"l": 151.20016, "t": 592.18359, "r": 225.03064999999998, "b": 601.3965900000001, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "GLYPH", "bbox": {"l": 136.8, "t": 604.3327899999999, "r": 141.78, "b": 613.10754, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "OBJECT_SCHEMA", "bbox": {"l": 151.20016, "t": 604.1834, "r": 238.91888, "b": 613.39639, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "GLYPH", "bbox": {"l": 136.8, "t": 616.3326, "r": 141.78, "b": 625.10735, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "OBJECT_TYPE", "bbox": {"l": 151.20016, "t": 616.1831999999999, "r": 222.27176, "b": 625.3961899999999, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "GLYPH", "bbox": {"l": 136.8, "t": 628.3324, "r": 141.78, "b": 637.10715, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "PARM_SIGNATURE", "bbox": {"l": 151.20016, "t": 628.183, "r": 241.48854, "b": 637.396, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "GLYPH", "bbox": {"l": 136.8, "t": 640.3322000000001, "r": 141.78, "b": 649.10695, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "RCAC_NAME", "bbox": {"l": 151.20016, "t": 640.1828, "r": 213.68124, "b": 649.3958, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "GLYPH", "bbox": {"l": 136.8, "t": 652.332, "r": 141.78, "b": 661.10675, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "RCAC_SCHEMA", "bbox": {"l": 151.20016, "t": 652.1826, "r": 227.54257000000004, "b": 661.3956000000001, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "GLYPH", "bbox": {"l": 136.8, "t": 664.33181, "r": 141.78, "b": 673.10657, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "SYSTEM_TABLE_NAME", "bbox": {"l": 151.20016, "t": 664.1824, "r": 262.72827, "b": 673.39541, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "GLYPH", "bbox": {"l": 136.8, "t": 676.33162, "r": 141.78, "b": 685.10638, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "SYSTEM_TABLE_SCHEMA", "bbox": {"l": 151.20016, "t": 676.18221, "r": 276.52487, "b": 685.39522, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "For more information, see the ", "bbox": {"l": 136.8, "t": 698.201782, "r": 270.28992, "b": 707.414787, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "IBM i 7.2 DB2 for i SQL Reference Guide", "bbox": {"l": 270.29987, "t": 698.201782, "r": 451.84072999999995, "b": 707.414787, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": ", found at:", "bbox": {"l": 451.79996, "t": 698.201782, "r": 495.94863999999995, "b": 707.414787, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/db2/rbafzintro.htm?lang", "bbox": {"l": 136.80002, "t": 715.330994, "r": 546.53442, "b": 724.105751, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "=en", "bbox": {"l": 136.80002, "t": 727.3308030000001, "r": 151.74002, "b": 736.10556, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 370.6695251464844, "t": 754.8765258789062, "r": 517.96918, "b": 763.8857421875, "coord_origin": "TOPLEFT"}, "confidence": 0.947565495967865, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 371.28, "t": 755.538002, "r": 517.96918, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 530.2025146484375, "t": 754.233154296875, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9223108291625977, "cells": [{"id": 1, "text": "101", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 136.48927307128906, "t": 70.64897155761719, "r": 409.46722, "b": 81.03340148925781, "coord_origin": "TOPLEFT"}, "confidence": 0.6312575936317444, "cells": [{"id": 2, "text": "Figure 6-20 shows the QSYS2.SYSCONTROLS catalog view.", "bbox": {"l": 136.8002, "t": 71.50903000000005, "r": 409.46722, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.26973724365234, "t": 245.4910888671875, "r": 197.03440856933594, "b": 254.8696746826172, "coord_origin": "TOPLEFT"}, "confidence": 0.8850163221359253, "cells": [{"id": 3, "text": "Figure 6-20 RCAC and catalogs", "bbox": {"l": 64.800003, "t": 246.19799999999998, "r": 196.89209, "b": 254.52295000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 136.15829467773438, "t": 271.2189636230469, "r": 430.36699999999996, "b": 281.557861328125, "coord_origin": "TOPLEFT"}, "confidence": 0.8766745924949646, "cells": [{"id": 4, "text": "The SYSCONTROLS catalog view contains the following columns:", "bbox": {"l": 136.8, "t": 272.14868, "r": 430.36699999999996, "b": 281.36169, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 135.715576171875, "t": 288.5225830078125, "r": 229.52528381347656, "b": 298.40128, "coord_origin": "TOPLEFT"}, "confidence": 0.9187909364700317, "cells": [{"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 289.33768, "r": 141.78, "b": 298.11246, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "COLUMN_NAME", "bbox": {"l": 151.20016, "t": 289.18829, "r": 228.86325000000002, "b": 298.40128, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.78355407714844, "t": 300.58892822265625, "r": 231.54153, "b": 310.40109000000007, "coord_origin": "TOPLEFT"}, "confidence": 0.9145805835723877, "cells": [{"id": 7, "text": "GLYPH", "bbox": {"l": 136.8, "t": 301.33749, "r": 141.78, "b": 310.11227, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "CONTROL_TYPE", "bbox": {"l": 151.20016, "t": 301.18811, "r": 231.54153, "b": 310.40109000000007, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.8020477294922, "t": 312.4302673339844, "r": 219.97597, "b": 322.40091, "coord_origin": "TOPLEFT"}, "confidence": 0.9202974438667297, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 313.33730999999995, "r": 141.78, "b": 322.11209, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "CREATE_TIME", "bbox": {"l": 151.20016, "t": 313.18793, "r": 219.97597, "b": 322.40091, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.65097045898438, "t": 324.4266052246094, "r": 190.9705047607422, "b": 334.40073, "coord_origin": "TOPLEFT"}, "confidence": 0.9024768471717834, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.8, "t": 325.33713000000006, "r": 141.78, "b": 334.11190999999997, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "ENABLE", "bbox": {"l": 151.20016, "t": 325.18774, "r": 190.62184, "b": 334.40073, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.5606231689453, "t": 336.0796813964844, "r": 207.5435791015625, "b": 346.40054000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9086344838142395, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 337.33694, "r": 141.78, "b": 346.11172, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "ENFORCED", "bbox": {"l": 151.20016, "t": 337.18756, "r": 207.25305, "b": 346.40054000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 135.4138946533203, "t": 348.0664367675781, "r": 220.03371999999996, "b": 358.40036, "coord_origin": "TOPLEFT"}, "confidence": 0.9216498136520386, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 349.33676, "r": 141.78, "b": 358.11154, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "ASP_NUMBER", "bbox": {"l": 151.20016, "t": 349.18738, "r": 220.03371999999996, "b": 358.40036, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 135.53013610839844, "t": 360.2685852050781, "r": 193.41263, "b": 370.40018, "coord_origin": "TOPLEFT"}, "confidence": 0.908420741558075, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.8, "t": 361.33658, "r": 141.78, "b": 370.11135999999993, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "IMPLICIT", "bbox": {"l": 151.20016, "t": 361.18719, "r": 193.41263, "b": 370.40018, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "list_item", "bbox": {"l": 135.5832061767578, "t": 372.1552429199219, "r": 182.29428, "b": 382.39999, "coord_origin": "TOPLEFT"}, "confidence": 0.8999857902526855, "cells": [{"id": 19, "text": "GLYPH", "bbox": {"l": 136.8, "t": 373.33639999999997, "r": 141.78, "b": 382.11118000000005, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "LABEL", "bbox": {"l": 151.20016, "t": 373.18701, "r": 182.29428, "b": 382.39999, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "list_item", "bbox": {"l": 135.9365997314453, "t": 384.15179443359375, "r": 226.72983, "b": 394.39980999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9266810417175293, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.8, "t": 385.33621, "r": 141.78, "b": 394.11099, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "LAST_ALTERED", "bbox": {"l": 151.20016, "t": 385.18683, "r": 226.72983, "b": 394.39980999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "list_item", "bbox": {"l": 135.55462646484375, "t": 395.8648376464844, "r": 236.96395874023438, "b": 406.39963000000006, "coord_origin": "TOPLEFT"}, "confidence": 0.9251843690872192, "cells": [{"id": 23, "text": "GLYPH", "bbox": {"l": 136.8, "t": 397.33603, "r": 141.78, "b": 406.11081, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "LONG_COMMENT", "bbox": {"l": 151.20016, "t": 397.18665, "r": 236.66890999999998, "b": 406.39963000000006, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "list_item", "bbox": {"l": 135.59799194335938, "t": 408.1325378417969, "r": 213.861328125, "b": 418.39944, "coord_origin": "TOPLEFT"}, "confidence": 0.9111971855163574, "cells": [{"id": 25, "text": "GLYPH", "bbox": {"l": 136.8, "t": 409.33584999999994, "r": 141.78, "b": 418.11063, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "RCAC_NAME", "bbox": {"l": 151.20016, "t": 409.18646, "r": 213.68124, "b": 418.39944, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "list_item", "bbox": {"l": 135.62445068359375, "t": 419.9839782714844, "r": 223.28578186035156, "b": 430.39926, "coord_origin": "TOPLEFT"}, "confidence": 0.9163252115249634, "cells": [{"id": 27, "text": "GLYPH", "bbox": {"l": 136.8, "t": 421.33566, "r": 141.78, "b": 430.11044, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "RCAC_OWNER", "bbox": {"l": 151.20016, "t": 421.18628, "r": 222.78268, "b": 430.39926, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "list_item", "bbox": {"l": 135.59918212890625, "t": 431.9518737792969, "r": 227.91741943359375, "b": 442.39908, "coord_origin": "TOPLEFT"}, "confidence": 0.9221100211143494, "cells": [{"id": 29, "text": "GLYPH", "bbox": {"l": 136.8, "t": 433.33548, "r": 141.78, "b": 442.11026, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "RCAC_SCHEMA", "bbox": {"l": 151.20016, "t": 433.1861, "r": 227.54257000000004, "b": 442.39908, "coord_origin": "TOPLEFT"}}]}, {"id": 18, "label": "list_item", "bbox": {"l": 135.649658203125, "t": 444.19696044921875, "r": 202.96228, "b": 454.39889999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9048181772232056, "cells": [{"id": 31, "text": "GLYPH", "bbox": {"l": 136.8, "t": 445.3353, "r": 141.78, "b": 454.11008, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "RULETEXT", "bbox": {"l": 151.20016, "t": 445.18591, "r": 202.96228, "b": 454.39889999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 19, "label": "list_item", "bbox": {"l": 135.53004455566406, "t": 456.36712646484375, "r": 275.5697, "b": 466.39871, "coord_origin": "TOPLEFT"}, "confidence": 0.9331137537956238, "cells": [{"id": 33, "text": "GLYPH", "bbox": {"l": 136.8, "t": 457.33511, "r": 141.78, "b": 466.10989, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "SYSTEM_COLUMN_NAME", "bbox": {"l": 151.20016, "t": 457.18573, "r": 275.5697, "b": 466.39871, "coord_origin": "TOPLEFT"}}]}, {"id": 20, "label": "list_item", "bbox": {"l": 135.6468963623047, "t": 467.97235107421875, "r": 263.12493896484375, "b": 478.39853, "coord_origin": "TOPLEFT"}, "confidence": 0.9202753305435181, "cells": [{"id": 35, "text": "GLYPH", "bbox": {"l": 136.8, "t": 469.33493, "r": 141.78, "b": 478.10971, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "SYSTEM_TABLE_NAME", "bbox": {"l": 151.20016, "t": 469.18555, "r": 262.72827, "b": 478.39853, "coord_origin": "TOPLEFT"}}]}, {"id": 21, "label": "list_item", "bbox": {"l": 135.67005920410156, "t": 480.2753601074219, "r": 276.916015625, "b": 490.39835, "coord_origin": "TOPLEFT"}, "confidence": 0.93083256483078, "cells": [{"id": 37, "text": "GLYPH", "bbox": {"l": 136.8, "t": 481.33475, "r": 141.78, "b": 490.10953, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "SYSTEM_TABLE_SCHEMA", "bbox": {"l": 151.20016, "t": 481.18536, "r": 276.52487, "b": 490.39835, "coord_origin": "TOPLEFT"}}]}, {"id": 22, "label": "list_item", "bbox": {"l": 135.68890380859375, "t": 492.2499084472656, "r": 216.28732299804688, "b": 502.39816, "coord_origin": "TOPLEFT"}, "confidence": 0.9164599180221558, "cells": [{"id": 39, "text": "GLYPH", "bbox": {"l": 136.8, "t": 493.33456, "r": 141.78, "b": 502.10934, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "TABLE_NAME", "bbox": {"l": 151.20016, "t": 493.18518, "r": 216.03579999999997, "b": 502.39816, "coord_origin": "TOPLEFT"}}]}, {"id": 23, "label": "list_item", "bbox": {"l": 135.64125061035156, "t": 504.14703369140625, "r": 230.32113647460938, "b": 514.39798, "coord_origin": "TOPLEFT"}, "confidence": 0.9193540215492249, "cells": [{"id": 41, "text": "GLYPH", "bbox": {"l": 136.8, "t": 505.33438, "r": 141.78, "b": 514.10916, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "TABLE_SCHEMA", "bbox": {"l": 151.20016, "t": 505.185, "r": 230.00568000000004, "b": 514.39798, "coord_origin": "TOPLEFT"}}]}, {"id": 24, "label": "list_item", "bbox": {"l": 135.58006286621094, "t": 516.2754516601562, "r": 235.02153, "b": 526.3978, "coord_origin": "TOPLEFT"}, "confidence": 0.9276848435401917, "cells": [{"id": 43, "text": "GLYPH", "bbox": {"l": 136.8, "t": 517.3342, "r": 141.78, "b": 526.10898, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "TBCORRELATION", "bbox": {"l": 151.20016, "t": 517.18481, "r": 235.02153, "b": 526.3978, "coord_origin": "TOPLEFT"}}]}, {"id": 25, "label": "text", "bbox": {"l": 136.2348175048828, "t": 538.4920043945312, "r": 451.01199, "b": 548.9942626953125, "coord_origin": "TOPLEFT"}, "confidence": 0.8883419632911682, "cells": [{"id": 45, "text": "The SYSCONTROLSDEP catalog view contains the following columns:", "bbox": {"l": 136.8, "t": 539.20438, "r": 451.01199, "b": 548.41737, "coord_origin": "TOPLEFT"}}]}, {"id": 26, "label": "list_item", "bbox": {"l": 135.6955108642578, "t": 554.92236328125, "r": 229.20022583007812, "b": 565.39719, "coord_origin": "TOPLEFT"}, "confidence": 0.9285773634910583, "cells": [{"id": 46, "text": "GLYPH", "bbox": {"l": 136.8, "t": 556.33359, "r": 141.78, "b": 565.10834, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "COLUMN_NAME", "bbox": {"l": 151.20016, "t": 556.1841900000001, "r": 228.86325000000002, "b": 565.39719, "coord_origin": "TOPLEFT"}}]}, {"id": 27, "label": "list_item", "bbox": {"l": 135.7337188720703, "t": 567.2264404296875, "r": 231.54153, "b": 577.39699, "coord_origin": "TOPLEFT"}, "confidence": 0.9127693772315979, "cells": [{"id": 48, "text": "GLYPH", "bbox": {"l": 136.8, "t": 568.33339, "r": 141.78, "b": 577.10814, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "CONTROL_TYPE", "bbox": {"l": 151.20016, "t": 568.18399, "r": 231.54153, "b": 577.39699, "coord_origin": "TOPLEFT"}}]}, {"id": 28, "label": "list_item", "bbox": {"l": 135.7036590576172, "t": 579.0064086914062, "r": 223.13241577148438, "b": 589.39679, "coord_origin": "TOPLEFT"}, "confidence": 0.9143235683441162, "cells": [{"id": 50, "text": "GLYPH", "bbox": {"l": 136.8, "t": 580.3331900000001, "r": 141.78, "b": 589.10794, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "IASP_NUMBER", "bbox": {"l": 151.20016, "t": 580.18379, "r": 222.81953000000001, "b": 589.39679, "coord_origin": "TOPLEFT"}}]}, {"id": 29, "label": "list_item", "bbox": {"l": 135.64175415039062, "t": 590.69970703125, "r": 225.03064999999998, "b": 601.3965900000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9129092693328857, "cells": [{"id": 52, "text": "GLYPH", "bbox": {"l": 136.8, "t": 592.33299, "r": 141.78, "b": 601.10774, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "OBJECT_NAME", "bbox": {"l": 151.20016, "t": 592.18359, "r": 225.03064999999998, "b": 601.3965900000001, "coord_origin": "TOPLEFT"}}]}, {"id": 30, "label": "list_item", "bbox": {"l": 135.65492248535156, "t": 602.8453369140625, "r": 239.2605743408203, "b": 613.39639, "coord_origin": "TOPLEFT"}, "confidence": 0.9242467880249023, "cells": [{"id": 54, "text": "GLYPH", "bbox": {"l": 136.8, "t": 604.3327899999999, "r": 141.78, "b": 613.10754, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "OBJECT_SCHEMA", "bbox": {"l": 151.20016, "t": 604.1834, "r": 238.91888, "b": 613.39639, "coord_origin": "TOPLEFT"}}]}, {"id": 31, "label": "list_item", "bbox": {"l": 135.42955017089844, "t": 614.6676635742188, "r": 222.27176, "b": 625.3961899999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9121018648147583, "cells": [{"id": 56, "text": "GLYPH", "bbox": {"l": 136.8, "t": 616.3326, "r": 141.78, "b": 625.10735, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "OBJECT_TYPE", "bbox": {"l": 151.20016, "t": 616.1831999999999, "r": 222.27176, "b": 625.3961899999999, "coord_origin": "TOPLEFT"}}]}, {"id": 32, "label": "list_item", "bbox": {"l": 135.63658142089844, "t": 626.9090576171875, "r": 241.48854, "b": 637.396, "coord_origin": "TOPLEFT"}, "confidence": 0.9265965223312378, "cells": [{"id": 58, "text": "GLYPH", "bbox": {"l": 136.8, "t": 628.3324, "r": 141.78, "b": 637.10715, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "PARM_SIGNATURE", "bbox": {"l": 151.20016, "t": 628.183, "r": 241.48854, "b": 637.396, "coord_origin": "TOPLEFT"}}]}, {"id": 33, "label": "list_item", "bbox": {"l": 135.70877075195312, "t": 639.044921875, "r": 213.68124, "b": 649.3958, "coord_origin": "TOPLEFT"}, "confidence": 0.9117604494094849, "cells": [{"id": 60, "text": "GLYPH", "bbox": {"l": 136.8, "t": 640.3322000000001, "r": 141.78, "b": 649.10695, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "RCAC_NAME", "bbox": {"l": 151.20016, "t": 640.1828, "r": 213.68124, "b": 649.3958, "coord_origin": "TOPLEFT"}}]}, {"id": 34, "label": "list_item", "bbox": {"l": 135.70849609375, "t": 651.1845703125, "r": 227.56272888183594, "b": 661.3956000000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9165326356887817, "cells": [{"id": 62, "text": "GLYPH", "bbox": {"l": 136.8, "t": 652.332, "r": 141.78, "b": 661.10675, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "RCAC_SCHEMA", "bbox": {"l": 151.20016, "t": 652.1826, "r": 227.54257000000004, "b": 661.3956000000001, "coord_origin": "TOPLEFT"}}]}, {"id": 35, "label": "list_item", "bbox": {"l": 135.59637451171875, "t": 662.8261108398438, "r": 262.72827, "b": 673.39541, "coord_origin": "TOPLEFT"}, "confidence": 0.9273440837860107, "cells": [{"id": 64, "text": "GLYPH", "bbox": {"l": 136.8, "t": 664.33181, "r": 141.78, "b": 673.10657, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "SYSTEM_TABLE_NAME", "bbox": {"l": 151.20016, "t": 664.1824, "r": 262.72827, "b": 673.39541, "coord_origin": "TOPLEFT"}}]}, {"id": 36, "label": "list_item", "bbox": {"l": 135.5303497314453, "t": 675.0317993164062, "r": 276.7511291503906, "b": 685.39522, "coord_origin": "TOPLEFT"}, "confidence": 0.9355826377868652, "cells": [{"id": 66, "text": "GLYPH", "bbox": {"l": 136.8, "t": 676.33162, "r": 141.78, "b": 685.10638, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "SYSTEM_TABLE_SCHEMA", "bbox": {"l": 151.20016, "t": 676.18221, "r": 276.52487, "b": 685.39522, "coord_origin": "TOPLEFT"}}]}, {"id": 37, "label": "text", "bbox": {"l": 136.2892303466797, "t": 697.2129516601562, "r": 495.94863999999995, "b": 707.414787, "coord_origin": "TOPLEFT"}, "confidence": 0.8819487690925598, "cells": [{"id": 68, "text": "For more information, see the ", "bbox": {"l": 136.8, "t": 698.201782, "r": 270.28992, "b": 707.414787, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "IBM i 7.2 DB2 for i SQL Reference Guide", "bbox": {"l": 270.29987, "t": 698.201782, "r": 451.84072999999995, "b": 707.414787, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": ", found at:", "bbox": {"l": 451.79996, "t": 698.201782, "r": 495.94863999999995, "b": 707.414787, "coord_origin": "TOPLEFT"}}]}, {"id": 38, "label": "text", "bbox": {"l": 136.3297119140625, "t": 713.9354248046875, "r": 546.53442, "b": 736.10556, "coord_origin": "TOPLEFT"}, "confidence": 0.9137188792228699, "cells": [{"id": 71, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/db2/rbafzintro.htm?lang", "bbox": {"l": 136.80002, "t": 715.330994, "r": 546.53442, "b": 724.105751, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "=en", "bbox": {"l": 136.80002, "t": 727.3308030000001, "r": 151.74002, "b": 736.10556, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 116, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 370.6695251464844, "t": 754.8765258789062, "r": 517.96918, "b": 763.8857421875, "coord_origin": "TOPLEFT"}, "confidence": 0.947565495967865, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 371.28, "t": 755.538002, "r": 517.96918, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 116, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.2025146484375, "t": 754.233154296875, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9223108291625977, "cells": [{"id": 1, "text": "101", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "101"}, {"label": "section_header", "id": 2, "page_no": 116, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 136.48927307128906, "t": 70.64897155761719, "r": 409.46722, "b": 81.03340148925781, "coord_origin": "TOPLEFT"}, "confidence": 0.6312575936317444, "cells": [{"id": 2, "text": "Figure 6-20 shows the QSYS2.SYSCONTROLS catalog view.", "bbox": {"l": 136.8002, "t": 71.50903000000005, "r": 409.46722, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-20 shows the QSYS2.SYSCONTROLS catalog view."}, {"label": "caption", "id": 3, "page_no": 116, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.26973724365234, "t": 245.4910888671875, "r": 197.03440856933594, "b": 254.8696746826172, "coord_origin": "TOPLEFT"}, "confidence": 0.8850163221359253, "cells": [{"id": 3, "text": "Figure 6-20 RCAC and catalogs", "bbox": {"l": 64.800003, "t": 246.19799999999998, "r": 196.89209, "b": 254.52295000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-20 RCAC and catalogs"}, {"label": "text", "id": 4, "page_no": 116, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.15829467773438, "t": 271.2189636230469, "r": 430.36699999999996, "b": 281.557861328125, "coord_origin": "TOPLEFT"}, "confidence": 0.8766745924949646, "cells": [{"id": 4, "text": "The SYSCONTROLS catalog view contains the following columns:", "bbox": {"l": 136.8, "t": 272.14868, "r": 430.36699999999996, "b": 281.36169, "coord_origin": "TOPLEFT"}}]}, "text": "The SYSCONTROLS catalog view contains the following columns:"}, {"label": "list_item", "id": 5, "page_no": 116, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.715576171875, "t": 288.5225830078125, "r": 229.52528381347656, "b": 298.40128, "coord_origin": "TOPLEFT"}, "confidence": 0.9187909364700317, "cells": [{"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 289.33768, "r": 141.78, "b": 298.11246, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "COLUMN_NAME", "bbox": {"l": 151.20016, "t": 289.18829, "r": 228.86325000000002, "b": 298.40128, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH COLUMN_NAME"}, {"label": "list_item", "id": 6, "page_no": 116, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.78355407714844, "t": 300.58892822265625, "r": 231.54153, "b": 310.40109000000007, "coord_origin": "TOPLEFT"}, "confidence": 0.9145805835723877, "cells": [{"id": 7, "text": "GLYPH", "bbox": {"l": 136.8, "t": 301.33749, "r": 141.78, "b": 310.11227, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "CONTROL_TYPE", "bbox": {"l": 151.20016, "t": 301.18811, "r": 231.54153, "b": 310.40109000000007, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH CONTROL_TYPE"}, {"label": "list_item", "id": 7, "page_no": 116, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.8020477294922, "t": 312.4302673339844, "r": 219.97597, "b": 322.40091, "coord_origin": "TOPLEFT"}, "confidence": 0.9202974438667297, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 313.33730999999995, "r": 141.78, "b": 322.11209, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "CREATE_TIME", "bbox": {"l": 151.20016, "t": 313.18793, "r": 219.97597, "b": 322.40091, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH CREATE_TIME"}, {"label": "list_item", "id": 8, "page_no": 116, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.65097045898438, "t": 324.4266052246094, "r": 190.9705047607422, "b": 334.40073, "coord_origin": "TOPLEFT"}, "confidence": 0.9024768471717834, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.8, "t": 325.33713000000006, "r": 141.78, "b": 334.11190999999997, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "ENABLE", "bbox": {"l": 151.20016, "t": 325.18774, "r": 190.62184, "b": 334.40073, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH ENABLE"}, {"label": "list_item", "id": 9, "page_no": 116, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.5606231689453, "t": 336.0796813964844, "r": 207.5435791015625, "b": 346.40054000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9086344838142395, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 337.33694, "r": 141.78, "b": 346.11172, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "ENFORCED", "bbox": {"l": 151.20016, "t": 337.18756, "r": 207.25305, "b": 346.40054000000003, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH ENFORCED"}, {"label": "list_item", "id": 10, "page_no": 116, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.4138946533203, "t": 348.0664367675781, "r": 220.03371999999996, "b": 358.40036, "coord_origin": "TOPLEFT"}, "confidence": 0.9216498136520386, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 349.33676, "r": 141.78, "b": 358.11154, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "ASP_NUMBER", "bbox": {"l": 151.20016, "t": 349.18738, "r": 220.03371999999996, "b": 358.40036, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH ASP_NUMBER"}, {"label": "list_item", "id": 11, "page_no": 116, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.53013610839844, "t": 360.2685852050781, "r": 193.41263, "b": 370.40018, "coord_origin": "TOPLEFT"}, "confidence": 0.908420741558075, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.8, "t": 361.33658, "r": 141.78, "b": 370.11135999999993, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "IMPLICIT", "bbox": {"l": 151.20016, "t": 361.18719, "r": 193.41263, "b": 370.40018, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH IMPLICIT"}, {"label": "list_item", "id": 12, "page_no": 116, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 135.5832061767578, "t": 372.1552429199219, "r": 182.29428, "b": 382.39999, "coord_origin": "TOPLEFT"}, "confidence": 0.8999857902526855, "cells": [{"id": 19, "text": "GLYPH", "bbox": {"l": 136.8, "t": 373.33639999999997, "r": 141.78, "b": 382.11118000000005, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "LABEL", "bbox": {"l": 151.20016, "t": 373.18701, "r": 182.29428, "b": 382.39999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH LABEL"}, {"label": "list_item", "id": 13, "page_no": 116, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 135.9365997314453, "t": 384.15179443359375, "r": 226.72983, "b": 394.39980999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9266810417175293, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.8, "t": 385.33621, "r": 141.78, "b": 394.11099, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "LAST_ALTERED", "bbox": {"l": 151.20016, "t": 385.18683, "r": 226.72983, "b": 394.39980999999995, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH LAST_ALTERED"}, {"label": "list_item", "id": 14, "page_no": 116, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 135.55462646484375, "t": 395.8648376464844, "r": 236.96395874023438, "b": 406.39963000000006, "coord_origin": "TOPLEFT"}, "confidence": 0.9251843690872192, "cells": [{"id": 23, "text": "GLYPH", "bbox": {"l": 136.8, "t": 397.33603, "r": 141.78, "b": 406.11081, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "LONG_COMMENT", "bbox": {"l": 151.20016, "t": 397.18665, "r": 236.66890999999998, "b": 406.39963000000006, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH LONG_COMMENT"}, {"label": "list_item", "id": 15, "page_no": 116, "cluster": {"id": 15, "label": "list_item", "bbox": {"l": 135.59799194335938, "t": 408.1325378417969, "r": 213.861328125, "b": 418.39944, "coord_origin": "TOPLEFT"}, "confidence": 0.9111971855163574, "cells": [{"id": 25, "text": "GLYPH", "bbox": {"l": 136.8, "t": 409.33584999999994, "r": 141.78, "b": 418.11063, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "RCAC_NAME", "bbox": {"l": 151.20016, "t": 409.18646, "r": 213.68124, "b": 418.39944, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH RCAC_NAME"}, {"label": "list_item", "id": 16, "page_no": 116, "cluster": {"id": 16, "label": "list_item", "bbox": {"l": 135.62445068359375, "t": 419.9839782714844, "r": 223.28578186035156, "b": 430.39926, "coord_origin": "TOPLEFT"}, "confidence": 0.9163252115249634, "cells": [{"id": 27, "text": "GLYPH", "bbox": {"l": 136.8, "t": 421.33566, "r": 141.78, "b": 430.11044, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "RCAC_OWNER", "bbox": {"l": 151.20016, "t": 421.18628, "r": 222.78268, "b": 430.39926, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH RCAC_OWNER"}, {"label": "list_item", "id": 17, "page_no": 116, "cluster": {"id": 17, "label": "list_item", "bbox": {"l": 135.59918212890625, "t": 431.9518737792969, "r": 227.91741943359375, "b": 442.39908, "coord_origin": "TOPLEFT"}, "confidence": 0.9221100211143494, "cells": [{"id": 29, "text": "GLYPH", "bbox": {"l": 136.8, "t": 433.33548, "r": 141.78, "b": 442.11026, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "RCAC_SCHEMA", "bbox": {"l": 151.20016, "t": 433.1861, "r": 227.54257000000004, "b": 442.39908, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH RCAC_SCHEMA"}, {"label": "list_item", "id": 18, "page_no": 116, "cluster": {"id": 18, "label": "list_item", "bbox": {"l": 135.649658203125, "t": 444.19696044921875, "r": 202.96228, "b": 454.39889999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9048181772232056, "cells": [{"id": 31, "text": "GLYPH", "bbox": {"l": 136.8, "t": 445.3353, "r": 141.78, "b": 454.11008, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "RULETEXT", "bbox": {"l": 151.20016, "t": 445.18591, "r": 202.96228, "b": 454.39889999999997, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH RULETEXT"}, {"label": "list_item", "id": 19, "page_no": 116, "cluster": {"id": 19, "label": "list_item", "bbox": {"l": 135.53004455566406, "t": 456.36712646484375, "r": 275.5697, "b": 466.39871, "coord_origin": "TOPLEFT"}, "confidence": 0.9331137537956238, "cells": [{"id": 33, "text": "GLYPH", "bbox": {"l": 136.8, "t": 457.33511, "r": 141.78, "b": 466.10989, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "SYSTEM_COLUMN_NAME", "bbox": {"l": 151.20016, "t": 457.18573, "r": 275.5697, "b": 466.39871, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH SYSTEM_COLUMN_NAME"}, {"label": "list_item", "id": 20, "page_no": 116, "cluster": {"id": 20, "label": "list_item", "bbox": {"l": 135.6468963623047, "t": 467.97235107421875, "r": 263.12493896484375, "b": 478.39853, "coord_origin": "TOPLEFT"}, "confidence": 0.9202753305435181, "cells": [{"id": 35, "text": "GLYPH", "bbox": {"l": 136.8, "t": 469.33493, "r": 141.78, "b": 478.10971, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "SYSTEM_TABLE_NAME", "bbox": {"l": 151.20016, "t": 469.18555, "r": 262.72827, "b": 478.39853, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH SYSTEM_TABLE_NAME"}, {"label": "list_item", "id": 21, "page_no": 116, "cluster": {"id": 21, "label": "list_item", "bbox": {"l": 135.67005920410156, "t": 480.2753601074219, "r": 276.916015625, "b": 490.39835, "coord_origin": "TOPLEFT"}, "confidence": 0.93083256483078, "cells": [{"id": 37, "text": "GLYPH", "bbox": {"l": 136.8, "t": 481.33475, "r": 141.78, "b": 490.10953, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "SYSTEM_TABLE_SCHEMA", "bbox": {"l": 151.20016, "t": 481.18536, "r": 276.52487, "b": 490.39835, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH SYSTEM_TABLE_SCHEMA"}, {"label": "list_item", "id": 22, "page_no": 116, "cluster": {"id": 22, "label": "list_item", "bbox": {"l": 135.68890380859375, "t": 492.2499084472656, "r": 216.28732299804688, "b": 502.39816, "coord_origin": "TOPLEFT"}, "confidence": 0.9164599180221558, "cells": [{"id": 39, "text": "GLYPH", "bbox": {"l": 136.8, "t": 493.33456, "r": 141.78, "b": 502.10934, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "TABLE_NAME", "bbox": {"l": 151.20016, "t": 493.18518, "r": 216.03579999999997, "b": 502.39816, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH TABLE_NAME"}, {"label": "list_item", "id": 23, "page_no": 116, "cluster": {"id": 23, "label": "list_item", "bbox": {"l": 135.64125061035156, "t": 504.14703369140625, "r": 230.32113647460938, "b": 514.39798, "coord_origin": "TOPLEFT"}, "confidence": 0.9193540215492249, "cells": [{"id": 41, "text": "GLYPH", "bbox": {"l": 136.8, "t": 505.33438, "r": 141.78, "b": 514.10916, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "TABLE_SCHEMA", "bbox": {"l": 151.20016, "t": 505.185, "r": 230.00568000000004, "b": 514.39798, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH TABLE_SCHEMA"}, {"label": "list_item", "id": 24, "page_no": 116, "cluster": {"id": 24, "label": "list_item", "bbox": {"l": 135.58006286621094, "t": 516.2754516601562, "r": 235.02153, "b": 526.3978, "coord_origin": "TOPLEFT"}, "confidence": 0.9276848435401917, "cells": [{"id": 43, "text": "GLYPH", "bbox": {"l": 136.8, "t": 517.3342, "r": 141.78, "b": 526.10898, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "TBCORRELATION", "bbox": {"l": 151.20016, "t": 517.18481, "r": 235.02153, "b": 526.3978, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH TBCORRELATION"}, {"label": "text", "id": 25, "page_no": 116, "cluster": {"id": 25, "label": "text", "bbox": {"l": 136.2348175048828, "t": 538.4920043945312, "r": 451.01199, "b": 548.9942626953125, "coord_origin": "TOPLEFT"}, "confidence": 0.8883419632911682, "cells": [{"id": 45, "text": "The SYSCONTROLSDEP catalog view contains the following columns:", "bbox": {"l": 136.8, "t": 539.20438, "r": 451.01199, "b": 548.41737, "coord_origin": "TOPLEFT"}}]}, "text": "The SYSCONTROLSDEP catalog view contains the following columns:"}, {"label": "list_item", "id": 26, "page_no": 116, "cluster": {"id": 26, "label": "list_item", "bbox": {"l": 135.6955108642578, "t": 554.92236328125, "r": 229.20022583007812, "b": 565.39719, "coord_origin": "TOPLEFT"}, "confidence": 0.9285773634910583, "cells": [{"id": 46, "text": "GLYPH", "bbox": {"l": 136.8, "t": 556.33359, "r": 141.78, "b": 565.10834, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "COLUMN_NAME", "bbox": {"l": 151.20016, "t": 556.1841900000001, "r": 228.86325000000002, "b": 565.39719, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH COLUMN_NAME"}, {"label": "list_item", "id": 27, "page_no": 116, "cluster": {"id": 27, "label": "list_item", "bbox": {"l": 135.7337188720703, "t": 567.2264404296875, "r": 231.54153, "b": 577.39699, "coord_origin": "TOPLEFT"}, "confidence": 0.9127693772315979, "cells": [{"id": 48, "text": "GLYPH", "bbox": {"l": 136.8, "t": 568.33339, "r": 141.78, "b": 577.10814, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "CONTROL_TYPE", "bbox": {"l": 151.20016, "t": 568.18399, "r": 231.54153, "b": 577.39699, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH CONTROL_TYPE"}, {"label": "list_item", "id": 28, "page_no": 116, "cluster": {"id": 28, "label": "list_item", "bbox": {"l": 135.7036590576172, "t": 579.0064086914062, "r": 223.13241577148438, "b": 589.39679, "coord_origin": "TOPLEFT"}, "confidence": 0.9143235683441162, "cells": [{"id": 50, "text": "GLYPH", "bbox": {"l": 136.8, "t": 580.3331900000001, "r": 141.78, "b": 589.10794, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "IASP_NUMBER", "bbox": {"l": 151.20016, "t": 580.18379, "r": 222.81953000000001, "b": 589.39679, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH IASP_NUMBER"}, {"label": "list_item", "id": 29, "page_no": 116, "cluster": {"id": 29, "label": "list_item", "bbox": {"l": 135.64175415039062, "t": 590.69970703125, "r": 225.03064999999998, "b": 601.3965900000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9129092693328857, "cells": [{"id": 52, "text": "GLYPH", "bbox": {"l": 136.8, "t": 592.33299, "r": 141.78, "b": 601.10774, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "OBJECT_NAME", "bbox": {"l": 151.20016, "t": 592.18359, "r": 225.03064999999998, "b": 601.3965900000001, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH OBJECT_NAME"}, {"label": "list_item", "id": 30, "page_no": 116, "cluster": {"id": 30, "label": "list_item", "bbox": {"l": 135.65492248535156, "t": 602.8453369140625, "r": 239.2605743408203, "b": 613.39639, "coord_origin": "TOPLEFT"}, "confidence": 0.9242467880249023, "cells": [{"id": 54, "text": "GLYPH", "bbox": {"l": 136.8, "t": 604.3327899999999, "r": 141.78, "b": 613.10754, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "OBJECT_SCHEMA", "bbox": {"l": 151.20016, "t": 604.1834, "r": 238.91888, "b": 613.39639, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH OBJECT_SCHEMA"}, {"label": "list_item", "id": 31, "page_no": 116, "cluster": {"id": 31, "label": "list_item", "bbox": {"l": 135.42955017089844, "t": 614.6676635742188, "r": 222.27176, "b": 625.3961899999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9121018648147583, "cells": [{"id": 56, "text": "GLYPH", "bbox": {"l": 136.8, "t": 616.3326, "r": 141.78, "b": 625.10735, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "OBJECT_TYPE", "bbox": {"l": 151.20016, "t": 616.1831999999999, "r": 222.27176, "b": 625.3961899999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH OBJECT_TYPE"}, {"label": "list_item", "id": 32, "page_no": 116, "cluster": {"id": 32, "label": "list_item", "bbox": {"l": 135.63658142089844, "t": 626.9090576171875, "r": 241.48854, "b": 637.396, "coord_origin": "TOPLEFT"}, "confidence": 0.9265965223312378, "cells": [{"id": 58, "text": "GLYPH", "bbox": {"l": 136.8, "t": 628.3324, "r": 141.78, "b": 637.10715, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "PARM_SIGNATURE", "bbox": {"l": 151.20016, "t": 628.183, "r": 241.48854, "b": 637.396, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH PARM_SIGNATURE"}, {"label": "list_item", "id": 33, "page_no": 116, "cluster": {"id": 33, "label": "list_item", "bbox": {"l": 135.70877075195312, "t": 639.044921875, "r": 213.68124, "b": 649.3958, "coord_origin": "TOPLEFT"}, "confidence": 0.9117604494094849, "cells": [{"id": 60, "text": "GLYPH", "bbox": {"l": 136.8, "t": 640.3322000000001, "r": 141.78, "b": 649.10695, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "RCAC_NAME", "bbox": {"l": 151.20016, "t": 640.1828, "r": 213.68124, "b": 649.3958, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH RCAC_NAME"}, {"label": "list_item", "id": 34, "page_no": 116, "cluster": {"id": 34, "label": "list_item", "bbox": {"l": 135.70849609375, "t": 651.1845703125, "r": 227.56272888183594, "b": 661.3956000000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9165326356887817, "cells": [{"id": 62, "text": "GLYPH", "bbox": {"l": 136.8, "t": 652.332, "r": 141.78, "b": 661.10675, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "RCAC_SCHEMA", "bbox": {"l": 151.20016, "t": 652.1826, "r": 227.54257000000004, "b": 661.3956000000001, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH RCAC_SCHEMA"}, {"label": "list_item", "id": 35, "page_no": 116, "cluster": {"id": 35, "label": "list_item", "bbox": {"l": 135.59637451171875, "t": 662.8261108398438, "r": 262.72827, "b": 673.39541, "coord_origin": "TOPLEFT"}, "confidence": 0.9273440837860107, "cells": [{"id": 64, "text": "GLYPH", "bbox": {"l": 136.8, "t": 664.33181, "r": 141.78, "b": 673.10657, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "SYSTEM_TABLE_NAME", "bbox": {"l": 151.20016, "t": 664.1824, "r": 262.72827, "b": 673.39541, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH SYSTEM_TABLE_NAME"}, {"label": "list_item", "id": 36, "page_no": 116, "cluster": {"id": 36, "label": "list_item", "bbox": {"l": 135.5303497314453, "t": 675.0317993164062, "r": 276.7511291503906, "b": 685.39522, "coord_origin": "TOPLEFT"}, "confidence": 0.9355826377868652, "cells": [{"id": 66, "text": "GLYPH", "bbox": {"l": 136.8, "t": 676.33162, "r": 141.78, "b": 685.10638, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "SYSTEM_TABLE_SCHEMA", "bbox": {"l": 151.20016, "t": 676.18221, "r": 276.52487, "b": 685.39522, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH SYSTEM_TABLE_SCHEMA"}, {"label": "text", "id": 37, "page_no": 116, "cluster": {"id": 37, "label": "text", "bbox": {"l": 136.2892303466797, "t": 697.2129516601562, "r": 495.94863999999995, "b": 707.414787, "coord_origin": "TOPLEFT"}, "confidence": 0.8819487690925598, "cells": [{"id": 68, "text": "For more information, see the ", "bbox": {"l": 136.8, "t": 698.201782, "r": 270.28992, "b": 707.414787, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "IBM i 7.2 DB2 for i SQL Reference Guide", "bbox": {"l": 270.29987, "t": 698.201782, "r": 451.84072999999995, "b": 707.414787, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": ", found at:", "bbox": {"l": 451.79996, "t": 698.201782, "r": 495.94863999999995, "b": 707.414787, "coord_origin": "TOPLEFT"}}]}, "text": "For more information, see the IBM i 7.2 DB2 for i SQL Reference Guide , found at:"}, {"label": "text", "id": 38, "page_no": 116, "cluster": {"id": 38, "label": "text", "bbox": {"l": 136.3297119140625, "t": 713.9354248046875, "r": 546.53442, "b": 736.10556, "coord_origin": "TOPLEFT"}, "confidence": 0.9137188792228699, "cells": [{"id": 71, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/db2/rbafzintro.htm?lang", "bbox": {"l": 136.80002, "t": 715.330994, "r": 546.53442, "b": 724.105751, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "=en", "bbox": {"l": 136.80002, "t": 727.3308030000001, "r": 151.74002, "b": 736.10556, "coord_origin": "TOPLEFT"}}]}, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/db2/rbafzintro.htm?lang =en"}], "body": [{"label": "section_header", "id": 2, "page_no": 116, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 136.48927307128906, "t": 70.64897155761719, "r": 409.46722, "b": 81.03340148925781, "coord_origin": "TOPLEFT"}, "confidence": 0.6312575936317444, "cells": [{"id": 2, "text": "Figure 6-20 shows the QSYS2.SYSCONTROLS catalog view.", "bbox": {"l": 136.8002, "t": 71.50903000000005, "r": 409.46722, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-20 shows the QSYS2.SYSCONTROLS catalog view."}, {"label": "caption", "id": 3, "page_no": 116, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.26973724365234, "t": 245.4910888671875, "r": 197.03440856933594, "b": 254.8696746826172, "coord_origin": "TOPLEFT"}, "confidence": 0.8850163221359253, "cells": [{"id": 3, "text": "Figure 6-20 RCAC and catalogs", "bbox": {"l": 64.800003, "t": 246.19799999999998, "r": 196.89209, "b": 254.52295000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-20 RCAC and catalogs"}, {"label": "text", "id": 4, "page_no": 116, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.15829467773438, "t": 271.2189636230469, "r": 430.36699999999996, "b": 281.557861328125, "coord_origin": "TOPLEFT"}, "confidence": 0.8766745924949646, "cells": [{"id": 4, "text": "The SYSCONTROLS catalog view contains the following columns:", "bbox": {"l": 136.8, "t": 272.14868, "r": 430.36699999999996, "b": 281.36169, "coord_origin": "TOPLEFT"}}]}, "text": "The SYSCONTROLS catalog view contains the following columns:"}, {"label": "list_item", "id": 5, "page_no": 116, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.715576171875, "t": 288.5225830078125, "r": 229.52528381347656, "b": 298.40128, "coord_origin": "TOPLEFT"}, "confidence": 0.9187909364700317, "cells": [{"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 289.33768, "r": 141.78, "b": 298.11246, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "COLUMN_NAME", "bbox": {"l": 151.20016, "t": 289.18829, "r": 228.86325000000002, "b": 298.40128, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH COLUMN_NAME"}, {"label": "list_item", "id": 6, "page_no": 116, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.78355407714844, "t": 300.58892822265625, "r": 231.54153, "b": 310.40109000000007, "coord_origin": "TOPLEFT"}, "confidence": 0.9145805835723877, "cells": [{"id": 7, "text": "GLYPH", "bbox": {"l": 136.8, "t": 301.33749, "r": 141.78, "b": 310.11227, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "CONTROL_TYPE", "bbox": {"l": 151.20016, "t": 301.18811, "r": 231.54153, "b": 310.40109000000007, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH CONTROL_TYPE"}, {"label": "list_item", "id": 7, "page_no": 116, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.8020477294922, "t": 312.4302673339844, "r": 219.97597, "b": 322.40091, "coord_origin": "TOPLEFT"}, "confidence": 0.9202974438667297, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 313.33730999999995, "r": 141.78, "b": 322.11209, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "CREATE_TIME", "bbox": {"l": 151.20016, "t": 313.18793, "r": 219.97597, "b": 322.40091, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH CREATE_TIME"}, {"label": "list_item", "id": 8, "page_no": 116, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.65097045898438, "t": 324.4266052246094, "r": 190.9705047607422, "b": 334.40073, "coord_origin": "TOPLEFT"}, "confidence": 0.9024768471717834, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.8, "t": 325.33713000000006, "r": 141.78, "b": 334.11190999999997, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "ENABLE", "bbox": {"l": 151.20016, "t": 325.18774, "r": 190.62184, "b": 334.40073, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH ENABLE"}, {"label": "list_item", "id": 9, "page_no": 116, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.5606231689453, "t": 336.0796813964844, "r": 207.5435791015625, "b": 346.40054000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9086344838142395, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 337.33694, "r": 141.78, "b": 346.11172, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "ENFORCED", "bbox": {"l": 151.20016, "t": 337.18756, "r": 207.25305, "b": 346.40054000000003, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH ENFORCED"}, {"label": "list_item", "id": 10, "page_no": 116, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.4138946533203, "t": 348.0664367675781, "r": 220.03371999999996, "b": 358.40036, "coord_origin": "TOPLEFT"}, "confidence": 0.9216498136520386, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 349.33676, "r": 141.78, "b": 358.11154, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "ASP_NUMBER", "bbox": {"l": 151.20016, "t": 349.18738, "r": 220.03371999999996, "b": 358.40036, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH ASP_NUMBER"}, {"label": "list_item", "id": 11, "page_no": 116, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.53013610839844, "t": 360.2685852050781, "r": 193.41263, "b": 370.40018, "coord_origin": "TOPLEFT"}, "confidence": 0.908420741558075, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.8, "t": 361.33658, "r": 141.78, "b": 370.11135999999993, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "IMPLICIT", "bbox": {"l": 151.20016, "t": 361.18719, "r": 193.41263, "b": 370.40018, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH IMPLICIT"}, {"label": "list_item", "id": 12, "page_no": 116, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 135.5832061767578, "t": 372.1552429199219, "r": 182.29428, "b": 382.39999, "coord_origin": "TOPLEFT"}, "confidence": 0.8999857902526855, "cells": [{"id": 19, "text": "GLYPH", "bbox": {"l": 136.8, "t": 373.33639999999997, "r": 141.78, "b": 382.11118000000005, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "LABEL", "bbox": {"l": 151.20016, "t": 373.18701, "r": 182.29428, "b": 382.39999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH LABEL"}, {"label": "list_item", "id": 13, "page_no": 116, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 135.9365997314453, "t": 384.15179443359375, "r": 226.72983, "b": 394.39980999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9266810417175293, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.8, "t": 385.33621, "r": 141.78, "b": 394.11099, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "LAST_ALTERED", "bbox": {"l": 151.20016, "t": 385.18683, "r": 226.72983, "b": 394.39980999999995, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH LAST_ALTERED"}, {"label": "list_item", "id": 14, "page_no": 116, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 135.55462646484375, "t": 395.8648376464844, "r": 236.96395874023438, "b": 406.39963000000006, "coord_origin": "TOPLEFT"}, "confidence": 0.9251843690872192, "cells": [{"id": 23, "text": "GLYPH", "bbox": {"l": 136.8, "t": 397.33603, "r": 141.78, "b": 406.11081, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "LONG_COMMENT", "bbox": {"l": 151.20016, "t": 397.18665, "r": 236.66890999999998, "b": 406.39963000000006, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH LONG_COMMENT"}, {"label": "list_item", "id": 15, "page_no": 116, "cluster": {"id": 15, "label": "list_item", "bbox": {"l": 135.59799194335938, "t": 408.1325378417969, "r": 213.861328125, "b": 418.39944, "coord_origin": "TOPLEFT"}, "confidence": 0.9111971855163574, "cells": [{"id": 25, "text": "GLYPH", "bbox": {"l": 136.8, "t": 409.33584999999994, "r": 141.78, "b": 418.11063, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "RCAC_NAME", "bbox": {"l": 151.20016, "t": 409.18646, "r": 213.68124, "b": 418.39944, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH RCAC_NAME"}, {"label": "list_item", "id": 16, "page_no": 116, "cluster": {"id": 16, "label": "list_item", "bbox": {"l": 135.62445068359375, "t": 419.9839782714844, "r": 223.28578186035156, "b": 430.39926, "coord_origin": "TOPLEFT"}, "confidence": 0.9163252115249634, "cells": [{"id": 27, "text": "GLYPH", "bbox": {"l": 136.8, "t": 421.33566, "r": 141.78, "b": 430.11044, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "RCAC_OWNER", "bbox": {"l": 151.20016, "t": 421.18628, "r": 222.78268, "b": 430.39926, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH RCAC_OWNER"}, {"label": "list_item", "id": 17, "page_no": 116, "cluster": {"id": 17, "label": "list_item", "bbox": {"l": 135.59918212890625, "t": 431.9518737792969, "r": 227.91741943359375, "b": 442.39908, "coord_origin": "TOPLEFT"}, "confidence": 0.9221100211143494, "cells": [{"id": 29, "text": "GLYPH", "bbox": {"l": 136.8, "t": 433.33548, "r": 141.78, "b": 442.11026, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "RCAC_SCHEMA", "bbox": {"l": 151.20016, "t": 433.1861, "r": 227.54257000000004, "b": 442.39908, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH RCAC_SCHEMA"}, {"label": "list_item", "id": 18, "page_no": 116, "cluster": {"id": 18, "label": "list_item", "bbox": {"l": 135.649658203125, "t": 444.19696044921875, "r": 202.96228, "b": 454.39889999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9048181772232056, "cells": [{"id": 31, "text": "GLYPH", "bbox": {"l": 136.8, "t": 445.3353, "r": 141.78, "b": 454.11008, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "RULETEXT", "bbox": {"l": 151.20016, "t": 445.18591, "r": 202.96228, "b": 454.39889999999997, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH RULETEXT"}, {"label": "list_item", "id": 19, "page_no": 116, "cluster": {"id": 19, "label": "list_item", "bbox": {"l": 135.53004455566406, "t": 456.36712646484375, "r": 275.5697, "b": 466.39871, "coord_origin": "TOPLEFT"}, "confidence": 0.9331137537956238, "cells": [{"id": 33, "text": "GLYPH", "bbox": {"l": 136.8, "t": 457.33511, "r": 141.78, "b": 466.10989, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "SYSTEM_COLUMN_NAME", "bbox": {"l": 151.20016, "t": 457.18573, "r": 275.5697, "b": 466.39871, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH SYSTEM_COLUMN_NAME"}, {"label": "list_item", "id": 20, "page_no": 116, "cluster": {"id": 20, "label": "list_item", "bbox": {"l": 135.6468963623047, "t": 467.97235107421875, "r": 263.12493896484375, "b": 478.39853, "coord_origin": "TOPLEFT"}, "confidence": 0.9202753305435181, "cells": [{"id": 35, "text": "GLYPH", "bbox": {"l": 136.8, "t": 469.33493, "r": 141.78, "b": 478.10971, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "SYSTEM_TABLE_NAME", "bbox": {"l": 151.20016, "t": 469.18555, "r": 262.72827, "b": 478.39853, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH SYSTEM_TABLE_NAME"}, {"label": "list_item", "id": 21, "page_no": 116, "cluster": {"id": 21, "label": "list_item", "bbox": {"l": 135.67005920410156, "t": 480.2753601074219, "r": 276.916015625, "b": 490.39835, "coord_origin": "TOPLEFT"}, "confidence": 0.93083256483078, "cells": [{"id": 37, "text": "GLYPH", "bbox": {"l": 136.8, "t": 481.33475, "r": 141.78, "b": 490.10953, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "SYSTEM_TABLE_SCHEMA", "bbox": {"l": 151.20016, "t": 481.18536, "r": 276.52487, "b": 490.39835, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH SYSTEM_TABLE_SCHEMA"}, {"label": "list_item", "id": 22, "page_no": 116, "cluster": {"id": 22, "label": "list_item", "bbox": {"l": 135.68890380859375, "t": 492.2499084472656, "r": 216.28732299804688, "b": 502.39816, "coord_origin": "TOPLEFT"}, "confidence": 0.9164599180221558, "cells": [{"id": 39, "text": "GLYPH", "bbox": {"l": 136.8, "t": 493.33456, "r": 141.78, "b": 502.10934, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "TABLE_NAME", "bbox": {"l": 151.20016, "t": 493.18518, "r": 216.03579999999997, "b": 502.39816, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH TABLE_NAME"}, {"label": "list_item", "id": 23, "page_no": 116, "cluster": {"id": 23, "label": "list_item", "bbox": {"l": 135.64125061035156, "t": 504.14703369140625, "r": 230.32113647460938, "b": 514.39798, "coord_origin": "TOPLEFT"}, "confidence": 0.9193540215492249, "cells": [{"id": 41, "text": "GLYPH", "bbox": {"l": 136.8, "t": 505.33438, "r": 141.78, "b": 514.10916, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "TABLE_SCHEMA", "bbox": {"l": 151.20016, "t": 505.185, "r": 230.00568000000004, "b": 514.39798, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH TABLE_SCHEMA"}, {"label": "list_item", "id": 24, "page_no": 116, "cluster": {"id": 24, "label": "list_item", "bbox": {"l": 135.58006286621094, "t": 516.2754516601562, "r": 235.02153, "b": 526.3978, "coord_origin": "TOPLEFT"}, "confidence": 0.9276848435401917, "cells": [{"id": 43, "text": "GLYPH", "bbox": {"l": 136.8, "t": 517.3342, "r": 141.78, "b": 526.10898, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "TBCORRELATION", "bbox": {"l": 151.20016, "t": 517.18481, "r": 235.02153, "b": 526.3978, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH TBCORRELATION"}, {"label": "text", "id": 25, "page_no": 116, "cluster": {"id": 25, "label": "text", "bbox": {"l": 136.2348175048828, "t": 538.4920043945312, "r": 451.01199, "b": 548.9942626953125, "coord_origin": "TOPLEFT"}, "confidence": 0.8883419632911682, "cells": [{"id": 45, "text": "The SYSCONTROLSDEP catalog view contains the following columns:", "bbox": {"l": 136.8, "t": 539.20438, "r": 451.01199, "b": 548.41737, "coord_origin": "TOPLEFT"}}]}, "text": "The SYSCONTROLSDEP catalog view contains the following columns:"}, {"label": "list_item", "id": 26, "page_no": 116, "cluster": {"id": 26, "label": "list_item", "bbox": {"l": 135.6955108642578, "t": 554.92236328125, "r": 229.20022583007812, "b": 565.39719, "coord_origin": "TOPLEFT"}, "confidence": 0.9285773634910583, "cells": [{"id": 46, "text": "GLYPH", "bbox": {"l": 136.8, "t": 556.33359, "r": 141.78, "b": 565.10834, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "COLUMN_NAME", "bbox": {"l": 151.20016, "t": 556.1841900000001, "r": 228.86325000000002, "b": 565.39719, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH COLUMN_NAME"}, {"label": "list_item", "id": 27, "page_no": 116, "cluster": {"id": 27, "label": "list_item", "bbox": {"l": 135.7337188720703, "t": 567.2264404296875, "r": 231.54153, "b": 577.39699, "coord_origin": "TOPLEFT"}, "confidence": 0.9127693772315979, "cells": [{"id": 48, "text": "GLYPH", "bbox": {"l": 136.8, "t": 568.33339, "r": 141.78, "b": 577.10814, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "CONTROL_TYPE", "bbox": {"l": 151.20016, "t": 568.18399, "r": 231.54153, "b": 577.39699, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH CONTROL_TYPE"}, {"label": "list_item", "id": 28, "page_no": 116, "cluster": {"id": 28, "label": "list_item", "bbox": {"l": 135.7036590576172, "t": 579.0064086914062, "r": 223.13241577148438, "b": 589.39679, "coord_origin": "TOPLEFT"}, "confidence": 0.9143235683441162, "cells": [{"id": 50, "text": "GLYPH", "bbox": {"l": 136.8, "t": 580.3331900000001, "r": 141.78, "b": 589.10794, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "IASP_NUMBER", "bbox": {"l": 151.20016, "t": 580.18379, "r": 222.81953000000001, "b": 589.39679, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH IASP_NUMBER"}, {"label": "list_item", "id": 29, "page_no": 116, "cluster": {"id": 29, "label": "list_item", "bbox": {"l": 135.64175415039062, "t": 590.69970703125, "r": 225.03064999999998, "b": 601.3965900000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9129092693328857, "cells": [{"id": 52, "text": "GLYPH", "bbox": {"l": 136.8, "t": 592.33299, "r": 141.78, "b": 601.10774, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "OBJECT_NAME", "bbox": {"l": 151.20016, "t": 592.18359, "r": 225.03064999999998, "b": 601.3965900000001, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH OBJECT_NAME"}, {"label": "list_item", "id": 30, "page_no": 116, "cluster": {"id": 30, "label": "list_item", "bbox": {"l": 135.65492248535156, "t": 602.8453369140625, "r": 239.2605743408203, "b": 613.39639, "coord_origin": "TOPLEFT"}, "confidence": 0.9242467880249023, "cells": [{"id": 54, "text": "GLYPH", "bbox": {"l": 136.8, "t": 604.3327899999999, "r": 141.78, "b": 613.10754, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "OBJECT_SCHEMA", "bbox": {"l": 151.20016, "t": 604.1834, "r": 238.91888, "b": 613.39639, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH OBJECT_SCHEMA"}, {"label": "list_item", "id": 31, "page_no": 116, "cluster": {"id": 31, "label": "list_item", "bbox": {"l": 135.42955017089844, "t": 614.6676635742188, "r": 222.27176, "b": 625.3961899999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9121018648147583, "cells": [{"id": 56, "text": "GLYPH", "bbox": {"l": 136.8, "t": 616.3326, "r": 141.78, "b": 625.10735, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "OBJECT_TYPE", "bbox": {"l": 151.20016, "t": 616.1831999999999, "r": 222.27176, "b": 625.3961899999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH OBJECT_TYPE"}, {"label": "list_item", "id": 32, "page_no": 116, "cluster": {"id": 32, "label": "list_item", "bbox": {"l": 135.63658142089844, "t": 626.9090576171875, "r": 241.48854, "b": 637.396, "coord_origin": "TOPLEFT"}, "confidence": 0.9265965223312378, "cells": [{"id": 58, "text": "GLYPH", "bbox": {"l": 136.8, "t": 628.3324, "r": 141.78, "b": 637.10715, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "PARM_SIGNATURE", "bbox": {"l": 151.20016, "t": 628.183, "r": 241.48854, "b": 637.396, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH PARM_SIGNATURE"}, {"label": "list_item", "id": 33, "page_no": 116, "cluster": {"id": 33, "label": "list_item", "bbox": {"l": 135.70877075195312, "t": 639.044921875, "r": 213.68124, "b": 649.3958, "coord_origin": "TOPLEFT"}, "confidence": 0.9117604494094849, "cells": [{"id": 60, "text": "GLYPH", "bbox": {"l": 136.8, "t": 640.3322000000001, "r": 141.78, "b": 649.10695, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "RCAC_NAME", "bbox": {"l": 151.20016, "t": 640.1828, "r": 213.68124, "b": 649.3958, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH RCAC_NAME"}, {"label": "list_item", "id": 34, "page_no": 116, "cluster": {"id": 34, "label": "list_item", "bbox": {"l": 135.70849609375, "t": 651.1845703125, "r": 227.56272888183594, "b": 661.3956000000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9165326356887817, "cells": [{"id": 62, "text": "GLYPH", "bbox": {"l": 136.8, "t": 652.332, "r": 141.78, "b": 661.10675, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "RCAC_SCHEMA", "bbox": {"l": 151.20016, "t": 652.1826, "r": 227.54257000000004, "b": 661.3956000000001, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH RCAC_SCHEMA"}, {"label": "list_item", "id": 35, "page_no": 116, "cluster": {"id": 35, "label": "list_item", "bbox": {"l": 135.59637451171875, "t": 662.8261108398438, "r": 262.72827, "b": 673.39541, "coord_origin": "TOPLEFT"}, "confidence": 0.9273440837860107, "cells": [{"id": 64, "text": "GLYPH", "bbox": {"l": 136.8, "t": 664.33181, "r": 141.78, "b": 673.10657, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "SYSTEM_TABLE_NAME", "bbox": {"l": 151.20016, "t": 664.1824, "r": 262.72827, "b": 673.39541, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH SYSTEM_TABLE_NAME"}, {"label": "list_item", "id": 36, "page_no": 116, "cluster": {"id": 36, "label": "list_item", "bbox": {"l": 135.5303497314453, "t": 675.0317993164062, "r": 276.7511291503906, "b": 685.39522, "coord_origin": "TOPLEFT"}, "confidence": 0.9355826377868652, "cells": [{"id": 66, "text": "GLYPH", "bbox": {"l": 136.8, "t": 676.33162, "r": 141.78, "b": 685.10638, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "SYSTEM_TABLE_SCHEMA", "bbox": {"l": 151.20016, "t": 676.18221, "r": 276.52487, "b": 685.39522, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH SYSTEM_TABLE_SCHEMA"}, {"label": "text", "id": 37, "page_no": 116, "cluster": {"id": 37, "label": "text", "bbox": {"l": 136.2892303466797, "t": 697.2129516601562, "r": 495.94863999999995, "b": 707.414787, "coord_origin": "TOPLEFT"}, "confidence": 0.8819487690925598, "cells": [{"id": 68, "text": "For more information, see the ", "bbox": {"l": 136.8, "t": 698.201782, "r": 270.28992, "b": 707.414787, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "IBM i 7.2 DB2 for i SQL Reference Guide", "bbox": {"l": 270.29987, "t": 698.201782, "r": 451.84072999999995, "b": 707.414787, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": ", found at:", "bbox": {"l": 451.79996, "t": 698.201782, "r": 495.94863999999995, "b": 707.414787, "coord_origin": "TOPLEFT"}}]}, "text": "For more information, see the IBM i 7.2 DB2 for i SQL Reference Guide , found at:"}, {"label": "text", "id": 38, "page_no": 116, "cluster": {"id": 38, "label": "text", "bbox": {"l": 136.3297119140625, "t": 713.9354248046875, "r": 546.53442, "b": 736.10556, "coord_origin": "TOPLEFT"}, "confidence": 0.9137188792228699, "cells": [{"id": 71, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/db2/rbafzintro.htm?lang", "bbox": {"l": 136.80002, "t": 715.330994, "r": 546.53442, "b": 724.105751, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "=en", "bbox": {"l": 136.80002, "t": 727.3308030000001, "r": 151.74002, "b": 736.10556, "coord_origin": "TOPLEFT"}}]}, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/db2/rbafzintro.htm?lang =en"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 116, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 370.6695251464844, "t": 754.8765258789062, "r": 517.96918, "b": 763.8857421875, "coord_origin": "TOPLEFT"}, "confidence": 0.947565495967865, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 371.28, "t": 755.538002, "r": 517.96918, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 116, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.2025146484375, "t": 754.233154296875, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9223108291625977, "cells": [{"id": 1, "text": "101", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "101"}]}}, {"page_no": 117, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "102 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "6.5", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 87.239647, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Views, materialized query tables, and query rewrite with ", "bbox": {"l": 91.727562, "t": 71.22069999999997, "r": 524.18311, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "RCAC", "bbox": {"l": 64.800003, "t": 90.18120999999985, "r": 110.31155000000001, "b": 104.94421, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "This section covers the implications to views, materialized query tables (MQTs), and query ", "bbox": {"l": 136.8, "t": 122.50867000000005, "r": 538.62842, "b": 131.72168, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "rewrite when RCAC is activated on a table.", "bbox": {"l": 136.8, "t": 134.50847999999996, "r": 325.84781, "b": 143.7215, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "6.5.1", "bbox": {"l": 64.800003, "t": 164.33471999999995, "r": 95.074188, "b": 176.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Views", "bbox": {"l": 98.858459, "t": 164.33471999999995, "r": 137.44987, "b": 176.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Any access to an SQL view that is over one or more tables that have RCAC also have those ", "bbox": {"l": 136.8, "t": 190.48870999999997, "r": 544.74371, "b": 199.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "row permissions and column masking rules applied. If an SQL view has predicates, those are ", "bbox": {"l": 136.8, "t": 202.48852999999997, "r": 547.26752, "b": 211.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "logically ANDed with any search condition that is specified in the permissions that are defined ", "bbox": {"l": 136.8, "t": 214.48834, "r": 547.23859, "b": 223.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "on the underlying tables. The view does not have to project the columns that are referenced ", "bbox": {"l": 136.80002, "t": 226.48816, "r": 543.3761, "b": 235.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "by the permissions. Figure 6-21 shows an example of a view definition and user query.", "bbox": {"l": 136.80002, "t": 238.48798, "r": 518.17145, "b": 247.70099000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Figure 6-21 View definition and user query", "bbox": {"l": 136.8, "t": 533.53799, "r": 310.7493, "b": 541.86301, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "SELECT *", "bbox": {"l": 221.75999, "t": 415.785, "r": 263.2117, "b": 426.76498, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "FROM", "bbox": {"l": 221.75999, "t": 435.58524, "r": 249.27039, "b": 446.56522, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "OPEN_ACCOUNTS_VIEW A", "bbox": {"l": 257.76453, "t": 435.58524, "r": 377.16104, "b": 446.56522, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "WHERE A.ACCOUNT_NUMBER = ?", "bbox": {"l": 221.75999, "t": 455.38547, "r": 373.84509, "b": 466.36545, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "CREATE VIEW OPEN_ACCOUNTS_VIEW AS (", "bbox": {"l": 149.75999, "t": 282.10501, "r": 342.65335, "b": 293.08499, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "SELECT ACCOUNT_NUMBER,", "bbox": {"l": 185.76012, "t": 301.90524, "r": 315.43719, "b": 312.88522, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "ACCOUNT_CURRENT_BALANCE", "bbox": {"l": 221.76024, "t": 321.70547, "r": 361.79144, "b": 332.6854599999999, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "FROM", "bbox": {"l": 185.76012, "t": 341.50570999999997, "r": 213.24416, "b": 352.4856899999999, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ACCOUNTS A", "bbox": {"l": 221.74707, "t": 341.50570999999997, "r": 280.42856, "b": 352.4856899999999, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "WHERE A. ACCOUNT_DATE_CLOSED IS NULL) ", "bbox": {"l": 185.76012, "t": 361.30593999999996, "r": 389.11301, "b": 372.28592, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Note", "bbox": {"l": 180.12, "t": 492.88498, "r": 200.53775, "b": 502.905, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": ": PERMISSION1_ON_ACCOUNTS allows access to the row", "bbox": {"l": 200.51971, "t": 492.88498, "r": 435.52273999999994, "b": 502.905, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "based the user\u2019s group and CUSTOMER_ID value", "bbox": {"l": 209.7, "t": 504.88498, "r": 405.92563, "b": 514.905, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.45819091796875, "t": 754.2963256835938, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9219294190406799, "cells": [{"id": 0, "text": "102 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 98.59468078613281, "t": 754.6023559570312, "r": 339.92059326171875, "b": 764.0437622070312, "coord_origin": "TOPLEFT"}, "confidence": 0.9517812728881836, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.48343658447266, "t": 69.85620880126953, "r": 524.18311, "b": 104.94421, "coord_origin": "TOPLEFT"}, "confidence": 0.951751172542572, "cells": [{"id": 2, "text": "6.5", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 87.239647, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Views, materialized query tables, and query rewrite with ", "bbox": {"l": 91.727562, "t": 71.22069999999997, "r": 524.18311, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "RCAC", "bbox": {"l": 64.800003, "t": 90.18120999999985, "r": 110.31155000000001, "b": 104.94421, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.83413696289062, "t": 121.24685668945312, "r": 538.62842, "b": 143.7215, "coord_origin": "TOPLEFT"}, "confidence": 0.9707952737808228, "cells": [{"id": 5, "text": "This section covers the implications to views, materialized query tables (MQTs), and query ", "bbox": {"l": 136.8, "t": 122.50867000000005, "r": 538.62842, "b": 131.72168, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "rewrite when RCAC is activated on a table.", "bbox": {"l": 136.8, "t": 134.50847999999996, "r": 325.84781, "b": 143.7215, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 64.00408935546875, "t": 163.15185546875, "r": 137.59872436523438, "b": 176.32275000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9475746154785156, "cells": [{"id": 7, "text": "6.5.1", "bbox": {"l": 64.800003, "t": 164.33471999999995, "r": 95.074188, "b": 176.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Views", "bbox": {"l": 98.858459, "t": 164.33471999999995, "r": 137.44987, "b": 176.32275000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.95098876953125, "t": 189.26473999023438, "r": 547.26752, "b": 247.95785522460938, "coord_origin": "TOPLEFT"}, "confidence": 0.9861626029014587, "cells": [{"id": 9, "text": "Any access to an SQL view that is over one or more tables that have RCAC also have those ", "bbox": {"l": 136.8, "t": 190.48870999999997, "r": 544.74371, "b": 199.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "row permissions and column masking rules applied. If an SQL view has predicates, those are ", "bbox": {"l": 136.8, "t": 202.48852999999997, "r": 547.26752, "b": 211.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "logically ANDed with any search condition that is specified in the permissions that are defined ", "bbox": {"l": 136.8, "t": 214.48834, "r": 547.23859, "b": 223.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "on the underlying tables. The view does not have to project the columns that are referenced ", "bbox": {"l": 136.80002, "t": 226.48816, "r": 543.3761, "b": 235.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "by the permissions. Figure 6-21 shows an example of a view definition and user query.", "bbox": {"l": 136.80002, "t": 238.48798, "r": 518.17145, "b": 247.70099000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "caption", "bbox": {"l": 136.1767120361328, "t": 532.8250122070312, "r": 311.7160949707031, "b": 542.2582397460938, "coord_origin": "TOPLEFT"}, "confidence": 0.9393132328987122, "cells": [{"id": 14, "text": "Figure 6-21 View definition and user query", "bbox": {"l": 136.8, "t": 533.53799, "r": 310.7493, "b": 541.86301, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "picture", "bbox": {"l": 136.61915588378906, "t": 262.3319396972656, "r": 491.90362548828125, "b": 529.945556640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9785625338554382, "cells": [{"id": 15, "text": "SELECT *", "bbox": {"l": 221.75999, "t": 415.785, "r": 263.2117, "b": 426.76498, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "FROM", "bbox": {"l": 221.75999, "t": 435.58524, "r": 249.27039, "b": 446.56522, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "OPEN_ACCOUNTS_VIEW A", "bbox": {"l": 257.76453, "t": 435.58524, "r": 377.16104, "b": 446.56522, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "WHERE A.ACCOUNT_NUMBER = ?", "bbox": {"l": 221.75999, "t": 455.38547, "r": 373.84509, "b": 466.36545, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "CREATE VIEW OPEN_ACCOUNTS_VIEW AS (", "bbox": {"l": 149.75999, "t": 282.10501, "r": 342.65335, "b": 293.08499, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "SELECT ACCOUNT_NUMBER,", "bbox": {"l": 185.76012, "t": 301.90524, "r": 315.43719, "b": 312.88522, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "ACCOUNT_CURRENT_BALANCE", "bbox": {"l": 221.76024, "t": 321.70547, "r": 361.79144, "b": 332.6854599999999, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "FROM", "bbox": {"l": 185.76012, "t": 341.50570999999997, "r": 213.24416, "b": 352.4856899999999, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ACCOUNTS A", "bbox": {"l": 221.74707, "t": 341.50570999999997, "r": 280.42856, "b": 352.4856899999999, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "WHERE A. ACCOUNT_DATE_CLOSED IS NULL) ", "bbox": {"l": 185.76012, "t": 361.30593999999996, "r": 389.11301, "b": 372.28592, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Note", "bbox": {"l": 180.12, "t": 492.88498, "r": 200.53775, "b": 502.905, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": ": PERMISSION1_ON_ACCOUNTS allows access to the row", "bbox": {"l": 200.51971, "t": 492.88498, "r": 435.52273999999994, "b": 502.905, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "based the user\u2019s group and CUSTOMER_ID value", "bbox": {"l": 209.7, "t": 504.88498, "r": 405.92563, "b": 514.905, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 117, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.45819091796875, "t": 754.2963256835938, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9219294190406799, "cells": [{"id": 0, "text": "102 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "102"}, {"label": "page_footer", "id": 1, "page_no": 117, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.59468078613281, "t": 754.6023559570312, "r": 339.92059326171875, "b": 764.0437622070312, "coord_origin": "TOPLEFT"}, "confidence": 0.9517812728881836, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "section_header", "id": 2, "page_no": 117, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.48343658447266, "t": 69.85620880126953, "r": 524.18311, "b": 104.94421, "coord_origin": "TOPLEFT"}, "confidence": 0.951751172542572, "cells": [{"id": 2, "text": "6.5", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 87.239647, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Views, materialized query tables, and query rewrite with ", "bbox": {"l": 91.727562, "t": 71.22069999999997, "r": 524.18311, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "RCAC", "bbox": {"l": 64.800003, "t": 90.18120999999985, "r": 110.31155000000001, "b": 104.94421, "coord_origin": "TOPLEFT"}}]}, "text": "6.5 Views, materialized query tables, and query rewrite with RCAC"}, {"label": "text", "id": 3, "page_no": 117, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.83413696289062, "t": 121.24685668945312, "r": 538.62842, "b": 143.7215, "coord_origin": "TOPLEFT"}, "confidence": 0.9707952737808228, "cells": [{"id": 5, "text": "This section covers the implications to views, materialized query tables (MQTs), and query ", "bbox": {"l": 136.8, "t": 122.50867000000005, "r": 538.62842, "b": 131.72168, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "rewrite when RCAC is activated on a table.", "bbox": {"l": 136.8, "t": 134.50847999999996, "r": 325.84781, "b": 143.7215, "coord_origin": "TOPLEFT"}}]}, "text": "This section covers the implications to views, materialized query tables (MQTs), and query rewrite when RCAC is activated on a table."}, {"label": "section_header", "id": 4, "page_no": 117, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.00408935546875, "t": 163.15185546875, "r": 137.59872436523438, "b": 176.32275000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9475746154785156, "cells": [{"id": 7, "text": "6.5.1", "bbox": {"l": 64.800003, "t": 164.33471999999995, "r": 95.074188, "b": 176.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Views", "bbox": {"l": 98.858459, "t": 164.33471999999995, "r": 137.44987, "b": 176.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "6.5.1 Views"}, {"label": "text", "id": 5, "page_no": 117, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.95098876953125, "t": 189.26473999023438, "r": 547.26752, "b": 247.95785522460938, "coord_origin": "TOPLEFT"}, "confidence": 0.9861626029014587, "cells": [{"id": 9, "text": "Any access to an SQL view that is over one or more tables that have RCAC also have those ", "bbox": {"l": 136.8, "t": 190.48870999999997, "r": 544.74371, "b": 199.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "row permissions and column masking rules applied. If an SQL view has predicates, those are ", "bbox": {"l": 136.8, "t": 202.48852999999997, "r": 547.26752, "b": 211.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "logically ANDed with any search condition that is specified in the permissions that are defined ", "bbox": {"l": 136.8, "t": 214.48834, "r": 547.23859, "b": 223.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "on the underlying tables. The view does not have to project the columns that are referenced ", "bbox": {"l": 136.80002, "t": 226.48816, "r": 543.3761, "b": 235.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "by the permissions. Figure 6-21 shows an example of a view definition and user query.", "bbox": {"l": 136.80002, "t": 238.48798, "r": 518.17145, "b": 247.70099000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Any access to an SQL view that is over one or more tables that have RCAC also have those row permissions and column masking rules applied. If an SQL view has predicates, those are logically ANDed with any search condition that is specified in the permissions that are defined on the underlying tables. The view does not have to project the columns that are referenced by the permissions. Figure 6-21 shows an example of a view definition and user query."}, {"label": "caption", "id": 6, "page_no": 117, "cluster": {"id": 6, "label": "caption", "bbox": {"l": 136.1767120361328, "t": 532.8250122070312, "r": 311.7160949707031, "b": 542.2582397460938, "coord_origin": "TOPLEFT"}, "confidence": 0.9393132328987122, "cells": [{"id": 14, "text": "Figure 6-21 View definition and user query", "bbox": {"l": 136.8, "t": 533.53799, "r": 310.7493, "b": 541.86301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-21 View definition and user query"}, {"label": "picture", "id": 7, "page_no": 117, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 136.61915588378906, "t": 262.3319396972656, "r": 491.90362548828125, "b": 529.945556640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9785625338554382, "cells": [{"id": 15, "text": "SELECT *", "bbox": {"l": 221.75999, "t": 415.785, "r": 263.2117, "b": 426.76498, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "FROM", "bbox": {"l": 221.75999, "t": 435.58524, "r": 249.27039, "b": 446.56522, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "OPEN_ACCOUNTS_VIEW A", "bbox": {"l": 257.76453, "t": 435.58524, "r": 377.16104, "b": 446.56522, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "WHERE A.ACCOUNT_NUMBER = ?", "bbox": {"l": 221.75999, "t": 455.38547, "r": 373.84509, "b": 466.36545, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "CREATE VIEW OPEN_ACCOUNTS_VIEW AS (", "bbox": {"l": 149.75999, "t": 282.10501, "r": 342.65335, "b": 293.08499, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "SELECT ACCOUNT_NUMBER,", "bbox": {"l": 185.76012, "t": 301.90524, "r": 315.43719, "b": 312.88522, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "ACCOUNT_CURRENT_BALANCE", "bbox": {"l": 221.76024, "t": 321.70547, "r": 361.79144, "b": 332.6854599999999, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "FROM", "bbox": {"l": 185.76012, "t": 341.50570999999997, "r": 213.24416, "b": 352.4856899999999, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ACCOUNTS A", "bbox": {"l": 221.74707, "t": 341.50570999999997, "r": 280.42856, "b": 352.4856899999999, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "WHERE A. ACCOUNT_DATE_CLOSED IS NULL) ", "bbox": {"l": 185.76012, "t": 361.30593999999996, "r": 389.11301, "b": 372.28592, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Note", "bbox": {"l": 180.12, "t": 492.88498, "r": 200.53775, "b": 502.905, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": ": PERMISSION1_ON_ACCOUNTS allows access to the row", "bbox": {"l": 200.51971, "t": 492.88498, "r": 435.52273999999994, "b": 502.905, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "based the user\u2019s group and CUSTOMER_ID value", "bbox": {"l": 209.7, "t": 504.88498, "r": 405.92563, "b": 514.905, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "section_header", "id": 2, "page_no": 117, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.48343658447266, "t": 69.85620880126953, "r": 524.18311, "b": 104.94421, "coord_origin": "TOPLEFT"}, "confidence": 0.951751172542572, "cells": [{"id": 2, "text": "6.5", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 87.239647, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Views, materialized query tables, and query rewrite with ", "bbox": {"l": 91.727562, "t": 71.22069999999997, "r": 524.18311, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "RCAC", "bbox": {"l": 64.800003, "t": 90.18120999999985, "r": 110.31155000000001, "b": 104.94421, "coord_origin": "TOPLEFT"}}]}, "text": "6.5 Views, materialized query tables, and query rewrite with RCAC"}, {"label": "text", "id": 3, "page_no": 117, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.83413696289062, "t": 121.24685668945312, "r": 538.62842, "b": 143.7215, "coord_origin": "TOPLEFT"}, "confidence": 0.9707952737808228, "cells": [{"id": 5, "text": "This section covers the implications to views, materialized query tables (MQTs), and query ", "bbox": {"l": 136.8, "t": 122.50867000000005, "r": 538.62842, "b": 131.72168, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "rewrite when RCAC is activated on a table.", "bbox": {"l": 136.8, "t": 134.50847999999996, "r": 325.84781, "b": 143.7215, "coord_origin": "TOPLEFT"}}]}, "text": "This section covers the implications to views, materialized query tables (MQTs), and query rewrite when RCAC is activated on a table."}, {"label": "section_header", "id": 4, "page_no": 117, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.00408935546875, "t": 163.15185546875, "r": 137.59872436523438, "b": 176.32275000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9475746154785156, "cells": [{"id": 7, "text": "6.5.1", "bbox": {"l": 64.800003, "t": 164.33471999999995, "r": 95.074188, "b": 176.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Views", "bbox": {"l": 98.858459, "t": 164.33471999999995, "r": 137.44987, "b": 176.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "6.5.1 Views"}, {"label": "text", "id": 5, "page_no": 117, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.95098876953125, "t": 189.26473999023438, "r": 547.26752, "b": 247.95785522460938, "coord_origin": "TOPLEFT"}, "confidence": 0.9861626029014587, "cells": [{"id": 9, "text": "Any access to an SQL view that is over one or more tables that have RCAC also have those ", "bbox": {"l": 136.8, "t": 190.48870999999997, "r": 544.74371, "b": 199.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "row permissions and column masking rules applied. If an SQL view has predicates, those are ", "bbox": {"l": 136.8, "t": 202.48852999999997, "r": 547.26752, "b": 211.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "logically ANDed with any search condition that is specified in the permissions that are defined ", "bbox": {"l": 136.8, "t": 214.48834, "r": 547.23859, "b": 223.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "on the underlying tables. The view does not have to project the columns that are referenced ", "bbox": {"l": 136.80002, "t": 226.48816, "r": 543.3761, "b": 235.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "by the permissions. Figure 6-21 shows an example of a view definition and user query.", "bbox": {"l": 136.80002, "t": 238.48798, "r": 518.17145, "b": 247.70099000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Any access to an SQL view that is over one or more tables that have RCAC also have those row permissions and column masking rules applied. If an SQL view has predicates, those are logically ANDed with any search condition that is specified in the permissions that are defined on the underlying tables. The view does not have to project the columns that are referenced by the permissions. Figure 6-21 shows an example of a view definition and user query."}, {"label": "caption", "id": 6, "page_no": 117, "cluster": {"id": 6, "label": "caption", "bbox": {"l": 136.1767120361328, "t": 532.8250122070312, "r": 311.7160949707031, "b": 542.2582397460938, "coord_origin": "TOPLEFT"}, "confidence": 0.9393132328987122, "cells": [{"id": 14, "text": "Figure 6-21 View definition and user query", "bbox": {"l": 136.8, "t": 533.53799, "r": 310.7493, "b": 541.86301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-21 View definition and user query"}, {"label": "picture", "id": 7, "page_no": 117, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 136.61915588378906, "t": 262.3319396972656, "r": 491.90362548828125, "b": 529.945556640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9785625338554382, "cells": [{"id": 15, "text": "SELECT *", "bbox": {"l": 221.75999, "t": 415.785, "r": 263.2117, "b": 426.76498, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "FROM", "bbox": {"l": 221.75999, "t": 435.58524, "r": 249.27039, "b": 446.56522, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "OPEN_ACCOUNTS_VIEW A", "bbox": {"l": 257.76453, "t": 435.58524, "r": 377.16104, "b": 446.56522, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "WHERE A.ACCOUNT_NUMBER = ?", "bbox": {"l": 221.75999, "t": 455.38547, "r": 373.84509, "b": 466.36545, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "CREATE VIEW OPEN_ACCOUNTS_VIEW AS (", "bbox": {"l": 149.75999, "t": 282.10501, "r": 342.65335, "b": 293.08499, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "SELECT ACCOUNT_NUMBER,", "bbox": {"l": 185.76012, "t": 301.90524, "r": 315.43719, "b": 312.88522, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "ACCOUNT_CURRENT_BALANCE", "bbox": {"l": 221.76024, "t": 321.70547, "r": 361.79144, "b": 332.6854599999999, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "FROM", "bbox": {"l": 185.76012, "t": 341.50570999999997, "r": 213.24416, "b": 352.4856899999999, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ACCOUNTS A", "bbox": {"l": 221.74707, "t": 341.50570999999997, "r": 280.42856, "b": 352.4856899999999, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "WHERE A. ACCOUNT_DATE_CLOSED IS NULL) ", "bbox": {"l": 185.76012, "t": 361.30593999999996, "r": 389.11301, "b": 372.28592, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Note", "bbox": {"l": 180.12, "t": 492.88498, "r": 200.53775, "b": 502.905, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": ": PERMISSION1_ON_ACCOUNTS allows access to the row", "bbox": {"l": 200.51971, "t": 492.88498, "r": 435.52273999999994, "b": 502.905, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "based the user\u2019s group and CUSTOMER_ID value", "bbox": {"l": 209.7, "t": 504.88498, "r": 405.92563, "b": 514.905, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 117, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.45819091796875, "t": 754.2963256835938, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9219294190406799, "cells": [{"id": 0, "text": "102 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "102"}, {"label": "page_footer", "id": 1, "page_no": 117, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.59468078613281, "t": 754.6023559570312, "r": 339.92059326171875, "b": 764.0437622070312, "coord_origin": "TOPLEFT"}, "confidence": 0.9517812728881836, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 118, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 371.28, "t": 755.538002, "r": 517.96918, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "103", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "What the query optimizer plans for and what the database engine runs is shown in the ", "bbox": {"l": 136.8002, "t": 71.50903000000005, "r": 519.47528, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 6-22.", "bbox": {"l": 136.8002, "t": 83.50885000000017, "r": 190.73257, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 6-22 Query rewrite with RCAC", "bbox": {"l": 136.8, "t": 390.798, "r": 290.5614, "b": 399.12302, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "6.5.2", "bbox": {"l": 64.800003, "t": 419.63474, "r": 94.26078, "b": 431.62271, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Materialized query tables", "bbox": {"l": 97.943375, "t": 419.63474, "r": 255.487, "b": 431.62271, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "When the query to populate a materialized query table (MQT) is run by the system on either ", "bbox": {"l": 136.8, "t": 445.78873, "r": 544.90387, "b": 455.00171, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "the create table or a refresh table, and one or more source tables have RCAC defined, the ", "bbox": {"l": 136.8, "t": 457.78853999999995, "r": 536.97687, "b": 467.00153, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "row permissions and column masks are ignored. This means that the MQT has all of the data.", "bbox": {"l": 136.8, "t": 469.78836, "r": 547.27844, "b": 479.00134, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Because the MQT is a copy of the base table data, when a permission is created on the base ", "bbox": {"l": 136.8, "t": 491.80792, "r": 547.28455, "b": 501.0209, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "table, all the related MQTs are altered to have a default row permission. This default ", "bbox": {"l": 136.8, "t": 503.80774, "r": 509.82686999999993, "b": 513.02072, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "permission prevents any of the rows from being directly queried.", "bbox": {"l": 136.8, "t": 515.80756, "r": 419.78342, "b": 525.02054, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "When a query implicitly uses an MQT, the underlying row permissions and column masks are ", "bbox": {"l": 136.8, "t": 537.82712, "r": 547.27246, "b": 547.04012, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "built into the query that uses the MQT. In order for the MQT to be used for optimization, the ", "bbox": {"l": 136.8, "t": 549.82692, "r": 540.15295, "b": 559.0399199999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "MQT must include any columns that are used by the row permissions and column masks.", "bbox": {"l": 136.8, "t": 561.82672, "r": 531.36346, "b": 571.03972, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "The following example illustrates this scenario:", "bbox": {"l": 136.8, "t": 583.78653, "r": 342.15033, "b": 592.99953, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "1.", "bbox": {"l": 136.80002, "t": 600.8261, "r": 145.33115, "b": 610.03909, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Create schema and tables:", "bbox": {"l": 148.17487, "t": 600.8261, "r": 270.41348, "b": 610.03909, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "CREATE SCHEMA Schema1; ", "bbox": {"l": 151.20018, "t": 617.95531, "r": 266.09869, "b": 626.73006, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "CREATE TABLE Schema1.employee(userID varchar(128), LocationID integer, Regionid ", "bbox": {"l": 151.20018, "t": 629.95511, "r": 547.25555, "b": 638.72986, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "integer); ", "bbox": {"l": 151.20018, "t": 641.95491, "r": 201.11969, "b": 650.72966, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "CREATE TABLE Schema1.Sales (INVOICE INTEGER NOT NULL, SALEAMT DECIMAL(5,2), ", "bbox": {"l": 151.20018, "t": 653.95471, "r": 531.05463, "b": 662.72946, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "TAXAMT DECIMAL(5,2), LOCATIONID INTEGER, REGIONID INTEGER);", "bbox": {"l": 151.20018, "t": 665.95452, "r": 446.03607000000005, "b": 674.72928, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "CREATE VIEW OPEN_ACCOUNTS_VIEW AS (", "bbox": {"l": 154.0657, "t": 131.60051999999996, "r": 351.96384, "b": 141.26044000000002, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "SELECT ACCOUNT_NUMBER,", "bbox": {"l": 191.0079, "t": 151.91881999999998, "r": 324.31876, "b": 161.57874000000004, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ACCOUNT_CURRENT_BALANCE", "bbox": {"l": 227.95076, "t": 172.23748999999998, "r": 371.7757, "b": 181.89739999999995, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "FROM", "bbox": {"l": 191.0079, "t": 192.55535999999995, "r": 219.33701999999997, "b": 202.21527000000003, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "ACCOUNTS A", "bbox": {"l": 227.93269000000004, "t": 192.55535999999995, "r": 288.18939, "b": 202.21527000000003, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "WHERE A. ACCOUNT_DATE_CLOSED IS NULL) ", "bbox": {"l": 191.0079, "t": 212.87401999999997, "r": 399.53876, "b": 222.53394000000003, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "SELECT *", "bbox": {"l": 227.95019999999997, "t": 268.74872000000005, "r": 270.48792, "b": 278.40863, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "FROM", "bbox": {"l": 227.95019999999997, "t": 289.06738000000007, "r": 256.2793, "b": 298.72736, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "OPEN_ACCOUNTS_VIEW A", "bbox": {"l": 264.87497, "t": 289.06738000000007, "r": 387.39151, "b": 298.72736, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "WHERE A.ACCOUNT_NUMBER = ?", "bbox": {"l": 227.95019999999997, "t": 309.38522, "r": 384.06647, "b": 319.0452, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Note", "bbox": {"l": 185.2511, "t": 347.86838000000006, "r": 206.08113, "b": 356.64368, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": ": PERMISSION1_ON_ACCOUNTS allows access to the row", "bbox": {"l": 206.0927, "t": 347.86838000000006, "r": 447.3443, "b": 356.63342, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "based the user\u0092s group and CUSTOMER_ID value", "bbox": {"l": 215.69733, "t": 360.18246000000005, "r": 416.87384, "b": 368.9475100000001, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 370.6492004394531, "t": 754.8782348632812, "r": 517.96918, "b": 763.9190063476562, "coord_origin": "TOPLEFT"}, "confidence": 0.9510338306427002, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 371.28, "t": 755.538002, "r": 517.96918, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 530.1799926757812, "t": 754.2610473632812, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9243813157081604, "cells": [{"id": 1, "text": "103", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.9568634033203, "t": 70.61416625976562, "r": 519.47528, "b": 93.16253662109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9543677568435669, "cells": [{"id": 2, "text": "What the query optimizer plans for and what the database engine runs is shown in the ", "bbox": {"l": 136.8002, "t": 71.50903000000005, "r": 519.47528, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 6-22.", "bbox": {"l": 136.8002, "t": 83.50885000000017, "r": 190.73257, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 135.89744567871094, "t": 390.0194091796875, "r": 291.39215087890625, "b": 399.5681457519531, "coord_origin": "TOPLEFT"}, "confidence": 0.9462981820106506, "cells": [{"id": 4, "text": "Figure 6-22 Query rewrite with RCAC", "bbox": {"l": 136.8, "t": 390.798, "r": 290.5614, "b": 399.12302, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 64.23944091796875, "t": 418.5478515625, "r": 255.487, "b": 431.62271, "coord_origin": "TOPLEFT"}, "confidence": 0.9655659198760986, "cells": [{"id": 5, "text": "6.5.2", "bbox": {"l": 64.800003, "t": 419.63474, "r": 94.26078, "b": 431.62271, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Materialized query tables", "bbox": {"l": 97.943375, "t": 419.63474, "r": 255.487, "b": 431.62271, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.8983154296875, "t": 444.7919921875, "r": 547.27844, "b": 479.00134, "coord_origin": "TOPLEFT"}, "confidence": 0.982417643070221, "cells": [{"id": 7, "text": "When the query to populate a materialized query table (MQT) is run by the system on either ", "bbox": {"l": 136.8, "t": 445.78873, "r": 544.90387, "b": 455.00171, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "the create table or a refresh table, and one or more source tables have RCAC defined, the ", "bbox": {"l": 136.8, "t": 457.78853999999995, "r": 536.97687, "b": 467.00153, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "row permissions and column masks are ignored. This means that the MQT has all of the data.", "bbox": {"l": 136.8, "t": 469.78836, "r": 547.27844, "b": 479.00134, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 136.05838012695312, "t": 490.664794921875, "r": 547.28455, "b": 525.02054, "coord_origin": "TOPLEFT"}, "confidence": 0.9831634163856506, "cells": [{"id": 10, "text": "Because the MQT is a copy of the base table data, when a permission is created on the base ", "bbox": {"l": 136.8, "t": 491.80792, "r": 547.28455, "b": 501.0209, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "table, all the related MQTs are altered to have a default row permission. This default ", "bbox": {"l": 136.8, "t": 503.80774, "r": 509.82686999999993, "b": 513.02072, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "permission prevents any of the rows from being directly queried.", "bbox": {"l": 136.8, "t": 515.80756, "r": 419.78342, "b": 525.02054, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 135.96612548828125, "t": 536.773193359375, "r": 547.27246, "b": 571.03972, "coord_origin": "TOPLEFT"}, "confidence": 0.9812561869621277, "cells": [{"id": 13, "text": "When a query implicitly uses an MQT, the underlying row permissions and column masks are ", "bbox": {"l": 136.8, "t": 537.82712, "r": 547.27246, "b": 547.04012, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "built into the query that uses the MQT. In order for the MQT to be used for optimization, the ", "bbox": {"l": 136.8, "t": 549.82692, "r": 540.15295, "b": 559.0399199999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "MQT must include any columns that are used by the row permissions and column masks.", "bbox": {"l": 136.8, "t": 561.82672, "r": 531.36346, "b": 571.03972, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 136.03353881835938, "t": 582.82958984375, "r": 342.15033, "b": 592.99953, "coord_origin": "TOPLEFT"}, "confidence": 0.9185956120491028, "cells": [{"id": 16, "text": "The following example illustrates this scenario:", "bbox": {"l": 136.8, "t": 583.78653, "r": 342.15033, "b": 592.99953, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 136.65509033203125, "t": 600.0938720703125, "r": 270.41348, "b": 610.03909, "coord_origin": "TOPLEFT"}, "confidence": 0.708869218826294, "cells": [{"id": 17, "text": "1.", "bbox": {"l": 136.80002, "t": 600.8261, "r": 145.33115, "b": 610.03909, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Create schema and tables:", "bbox": {"l": 148.17487, "t": 600.8261, "r": 270.41348, "b": 610.03909, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 151.20018, "t": 617.95531, "r": 547.25555, "b": 674.72928, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 19, "text": "CREATE SCHEMA Schema1; ", "bbox": {"l": 151.20018, "t": 617.95531, "r": 266.09869, "b": 626.73006, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "CREATE TABLE Schema1.employee(userID varchar(128), LocationID integer, Regionid ", "bbox": {"l": 151.20018, "t": 629.95511, "r": 547.25555, "b": 638.72986, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "integer); ", "bbox": {"l": 151.20018, "t": 641.95491, "r": 201.11969, "b": 650.72966, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "CREATE TABLE Schema1.Sales (INVOICE INTEGER NOT NULL, SALEAMT DECIMAL(5,2), ", "bbox": {"l": 151.20018, "t": 653.95471, "r": 531.05463, "b": 662.72946, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "TAXAMT DECIMAL(5,2), LOCATIONID INTEGER, REGIONID INTEGER);", "bbox": {"l": 151.20018, "t": 665.95452, "r": 446.03607000000005, "b": 674.72928, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "picture", "bbox": {"l": 136.2811279296875, "t": 106.85755920410156, "r": 508.5420227050781, "b": 388.0796203613281, "coord_origin": "TOPLEFT"}, "confidence": 0.9733899235725403, "cells": [{"id": 24, "text": "CREATE VIEW OPEN_ACCOUNTS_VIEW AS (", "bbox": {"l": 154.0657, "t": 131.60051999999996, "r": 351.96384, "b": 141.26044000000002, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "SELECT ACCOUNT_NUMBER,", "bbox": {"l": 191.0079, "t": 151.91881999999998, "r": 324.31876, "b": 161.57874000000004, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ACCOUNT_CURRENT_BALANCE", "bbox": {"l": 227.95076, "t": 172.23748999999998, "r": 371.7757, "b": 181.89739999999995, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "FROM", "bbox": {"l": 191.0079, "t": 192.55535999999995, "r": 219.33701999999997, "b": 202.21527000000003, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "ACCOUNTS A", "bbox": {"l": 227.93269000000004, "t": 192.55535999999995, "r": 288.18939, "b": 202.21527000000003, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "WHERE A. ACCOUNT_DATE_CLOSED IS NULL) ", "bbox": {"l": 191.0079, "t": 212.87401999999997, "r": 399.53876, "b": 222.53394000000003, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "SELECT *", "bbox": {"l": 227.95019999999997, "t": 268.74872000000005, "r": 270.48792, "b": 278.40863, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "FROM", "bbox": {"l": 227.95019999999997, "t": 289.06738000000007, "r": 256.2793, "b": 298.72736, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "OPEN_ACCOUNTS_VIEW A", "bbox": {"l": 264.87497, "t": 289.06738000000007, "r": 387.39151, "b": 298.72736, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "WHERE A.ACCOUNT_NUMBER = ?", "bbox": {"l": 227.95019999999997, "t": 309.38522, "r": 384.06647, "b": 319.0452, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Note", "bbox": {"l": 185.2511, "t": 347.86838000000006, "r": 206.08113, "b": 356.64368, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": ": PERMISSION1_ON_ACCOUNTS allows access to the row", "bbox": {"l": 206.0927, "t": 347.86838000000006, "r": 447.3443, "b": 356.63342, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "based the user\u0092s group and CUSTOMER_ID value", "bbox": {"l": 215.69733, "t": 360.18246000000005, "r": 416.87384, "b": 368.9475100000001, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 118, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 370.6492004394531, "t": 754.8782348632812, "r": 517.96918, "b": 763.9190063476562, "coord_origin": "TOPLEFT"}, "confidence": 0.9510338306427002, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 371.28, "t": 755.538002, "r": 517.96918, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 118, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.1799926757812, "t": 754.2610473632812, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9243813157081604, "cells": [{"id": 1, "text": "103", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "103"}, {"label": "text", "id": 2, "page_no": 118, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.9568634033203, "t": 70.61416625976562, "r": 519.47528, "b": 93.16253662109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9543677568435669, "cells": [{"id": 2, "text": "What the query optimizer plans for and what the database engine runs is shown in the ", "bbox": {"l": 136.8002, "t": 71.50903000000005, "r": 519.47528, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 6-22.", "bbox": {"l": 136.8002, "t": 83.50885000000017, "r": 190.73257, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "What the query optimizer plans for and what the database engine runs is shown in the Figure 6-22."}, {"label": "caption", "id": 3, "page_no": 118, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.89744567871094, "t": 390.0194091796875, "r": 291.39215087890625, "b": 399.5681457519531, "coord_origin": "TOPLEFT"}, "confidence": 0.9462981820106506, "cells": [{"id": 4, "text": "Figure 6-22 Query rewrite with RCAC", "bbox": {"l": 136.8, "t": 390.798, "r": 290.5614, "b": 399.12302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-22 Query rewrite with RCAC"}, {"label": "section_header", "id": 4, "page_no": 118, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.23944091796875, "t": 418.5478515625, "r": 255.487, "b": 431.62271, "coord_origin": "TOPLEFT"}, "confidence": 0.9655659198760986, "cells": [{"id": 5, "text": "6.5.2", "bbox": {"l": 64.800003, "t": 419.63474, "r": 94.26078, "b": 431.62271, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Materialized query tables", "bbox": {"l": 97.943375, "t": 419.63474, "r": 255.487, "b": 431.62271, "coord_origin": "TOPLEFT"}}]}, "text": "6.5.2 Materialized query tables"}, {"label": "text", "id": 5, "page_no": 118, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.8983154296875, "t": 444.7919921875, "r": 547.27844, "b": 479.00134, "coord_origin": "TOPLEFT"}, "confidence": 0.982417643070221, "cells": [{"id": 7, "text": "When the query to populate a materialized query table (MQT) is run by the system on either ", "bbox": {"l": 136.8, "t": 445.78873, "r": 544.90387, "b": 455.00171, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "the create table or a refresh table, and one or more source tables have RCAC defined, the ", "bbox": {"l": 136.8, "t": 457.78853999999995, "r": 536.97687, "b": 467.00153, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "row permissions and column masks are ignored. This means that the MQT has all of the data.", "bbox": {"l": 136.8, "t": 469.78836, "r": 547.27844, "b": 479.00134, "coord_origin": "TOPLEFT"}}]}, "text": "When the query to populate a materialized query table (MQT) is run by the system on either the create table or a refresh table, and one or more source tables have RCAC defined, the row permissions and column masks are ignored. This means that the MQT has all of the data."}, {"label": "text", "id": 6, "page_no": 118, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.05838012695312, "t": 490.664794921875, "r": 547.28455, "b": 525.02054, "coord_origin": "TOPLEFT"}, "confidence": 0.9831634163856506, "cells": [{"id": 10, "text": "Because the MQT is a copy of the base table data, when a permission is created on the base ", "bbox": {"l": 136.8, "t": 491.80792, "r": 547.28455, "b": 501.0209, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "table, all the related MQTs are altered to have a default row permission. This default ", "bbox": {"l": 136.8, "t": 503.80774, "r": 509.82686999999993, "b": 513.02072, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "permission prevents any of the rows from being directly queried.", "bbox": {"l": 136.8, "t": 515.80756, "r": 419.78342, "b": 525.02054, "coord_origin": "TOPLEFT"}}]}, "text": "Because the MQT is a copy of the base table data, when a permission is created on the base table, all the related MQTs are altered to have a default row permission. This default permission prevents any of the rows from being directly queried."}, {"label": "text", "id": 7, "page_no": 118, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.96612548828125, "t": 536.773193359375, "r": 547.27246, "b": 571.03972, "coord_origin": "TOPLEFT"}, "confidence": 0.9812561869621277, "cells": [{"id": 13, "text": "When a query implicitly uses an MQT, the underlying row permissions and column masks are ", "bbox": {"l": 136.8, "t": 537.82712, "r": 547.27246, "b": 547.04012, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "built into the query that uses the MQT. In order for the MQT to be used for optimization, the ", "bbox": {"l": 136.8, "t": 549.82692, "r": 540.15295, "b": 559.0399199999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "MQT must include any columns that are used by the row permissions and column masks.", "bbox": {"l": 136.8, "t": 561.82672, "r": 531.36346, "b": 571.03972, "coord_origin": "TOPLEFT"}}]}, "text": "When a query implicitly uses an MQT, the underlying row permissions and column masks are built into the query that uses the MQT. In order for the MQT to be used for optimization, the MQT must include any columns that are used by the row permissions and column masks."}, {"label": "text", "id": 8, "page_no": 118, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.03353881835938, "t": 582.82958984375, "r": 342.15033, "b": 592.99953, "coord_origin": "TOPLEFT"}, "confidence": 0.9185956120491028, "cells": [{"id": 16, "text": "The following example illustrates this scenario:", "bbox": {"l": 136.8, "t": 583.78653, "r": 342.15033, "b": 592.99953, "coord_origin": "TOPLEFT"}}]}, "text": "The following example illustrates this scenario:"}, {"label": "list_item", "id": 9, "page_no": 118, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 136.65509033203125, "t": 600.0938720703125, "r": 270.41348, "b": 610.03909, "coord_origin": "TOPLEFT"}, "confidence": 0.708869218826294, "cells": [{"id": 17, "text": "1.", "bbox": {"l": 136.80002, "t": 600.8261, "r": 145.33115, "b": 610.03909, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Create schema and tables:", "bbox": {"l": 148.17487, "t": 600.8261, "r": 270.41348, "b": 610.03909, "coord_origin": "TOPLEFT"}}]}, "text": "1. Create schema and tables:"}, {"label": "text", "id": 10, "page_no": 118, "cluster": {"id": 10, "label": "text", "bbox": {"l": 151.20018, "t": 617.95531, "r": 547.25555, "b": 674.72928, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 19, "text": "CREATE SCHEMA Schema1; ", "bbox": {"l": 151.20018, "t": 617.95531, "r": 266.09869, "b": 626.73006, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "CREATE TABLE Schema1.employee(userID varchar(128), LocationID integer, Regionid ", "bbox": {"l": 151.20018, "t": 629.95511, "r": 547.25555, "b": 638.72986, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "integer); ", "bbox": {"l": 151.20018, "t": 641.95491, "r": 201.11969, "b": 650.72966, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "CREATE TABLE Schema1.Sales (INVOICE INTEGER NOT NULL, SALEAMT DECIMAL(5,2), ", "bbox": {"l": 151.20018, "t": 653.95471, "r": 531.05463, "b": 662.72946, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "TAXAMT DECIMAL(5,2), LOCATIONID INTEGER, REGIONID INTEGER);", "bbox": {"l": 151.20018, "t": 665.95452, "r": 446.03607000000005, "b": 674.72928, "coord_origin": "TOPLEFT"}}]}, "text": "CREATE SCHEMA Schema1; CREATE TABLE Schema1.employee(userID varchar(128), LocationID integer, Regionid integer); CREATE TABLE Schema1.Sales (INVOICE INTEGER NOT NULL, SALEAMT DECIMAL(5,2), TAXAMT DECIMAL(5,2), LOCATIONID INTEGER, REGIONID INTEGER);"}, {"label": "picture", "id": 11, "page_no": 118, "cluster": {"id": 11, "label": "picture", "bbox": {"l": 136.2811279296875, "t": 106.85755920410156, "r": 508.5420227050781, "b": 388.0796203613281, "coord_origin": "TOPLEFT"}, "confidence": 0.9733899235725403, "cells": [{"id": 24, "text": "CREATE VIEW OPEN_ACCOUNTS_VIEW AS (", "bbox": {"l": 154.0657, "t": 131.60051999999996, "r": 351.96384, "b": 141.26044000000002, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "SELECT ACCOUNT_NUMBER,", "bbox": {"l": 191.0079, "t": 151.91881999999998, "r": 324.31876, "b": 161.57874000000004, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ACCOUNT_CURRENT_BALANCE", "bbox": {"l": 227.95076, "t": 172.23748999999998, "r": 371.7757, "b": 181.89739999999995, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "FROM", "bbox": {"l": 191.0079, "t": 192.55535999999995, "r": 219.33701999999997, "b": 202.21527000000003, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "ACCOUNTS A", "bbox": {"l": 227.93269000000004, "t": 192.55535999999995, "r": 288.18939, "b": 202.21527000000003, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "WHERE A. ACCOUNT_DATE_CLOSED IS NULL) ", "bbox": {"l": 191.0079, "t": 212.87401999999997, "r": 399.53876, "b": 222.53394000000003, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "SELECT *", "bbox": {"l": 227.95019999999997, "t": 268.74872000000005, "r": 270.48792, "b": 278.40863, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "FROM", "bbox": {"l": 227.95019999999997, "t": 289.06738000000007, "r": 256.2793, "b": 298.72736, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "OPEN_ACCOUNTS_VIEW A", "bbox": {"l": 264.87497, "t": 289.06738000000007, "r": 387.39151, "b": 298.72736, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "WHERE A.ACCOUNT_NUMBER = ?", "bbox": {"l": 227.95019999999997, "t": 309.38522, "r": 384.06647, "b": 319.0452, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Note", "bbox": {"l": 185.2511, "t": 347.86838000000006, "r": 206.08113, "b": 356.64368, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": ": PERMISSION1_ON_ACCOUNTS allows access to the row", "bbox": {"l": 206.0927, "t": 347.86838000000006, "r": 447.3443, "b": 356.63342, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "based the user\u0092s group and CUSTOMER_ID value", "bbox": {"l": 215.69733, "t": 360.18246000000005, "r": 416.87384, "b": 368.9475100000001, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 118, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.9568634033203, "t": 70.61416625976562, "r": 519.47528, "b": 93.16253662109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9543677568435669, "cells": [{"id": 2, "text": "What the query optimizer plans for and what the database engine runs is shown in the ", "bbox": {"l": 136.8002, "t": 71.50903000000005, "r": 519.47528, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 6-22.", "bbox": {"l": 136.8002, "t": 83.50885000000017, "r": 190.73257, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "What the query optimizer plans for and what the database engine runs is shown in the Figure 6-22."}, {"label": "caption", "id": 3, "page_no": 118, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.89744567871094, "t": 390.0194091796875, "r": 291.39215087890625, "b": 399.5681457519531, "coord_origin": "TOPLEFT"}, "confidence": 0.9462981820106506, "cells": [{"id": 4, "text": "Figure 6-22 Query rewrite with RCAC", "bbox": {"l": 136.8, "t": 390.798, "r": 290.5614, "b": 399.12302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-22 Query rewrite with RCAC"}, {"label": "section_header", "id": 4, "page_no": 118, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.23944091796875, "t": 418.5478515625, "r": 255.487, "b": 431.62271, "coord_origin": "TOPLEFT"}, "confidence": 0.9655659198760986, "cells": [{"id": 5, "text": "6.5.2", "bbox": {"l": 64.800003, "t": 419.63474, "r": 94.26078, "b": 431.62271, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Materialized query tables", "bbox": {"l": 97.943375, "t": 419.63474, "r": 255.487, "b": 431.62271, "coord_origin": "TOPLEFT"}}]}, "text": "6.5.2 Materialized query tables"}, {"label": "text", "id": 5, "page_no": 118, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.8983154296875, "t": 444.7919921875, "r": 547.27844, "b": 479.00134, "coord_origin": "TOPLEFT"}, "confidence": 0.982417643070221, "cells": [{"id": 7, "text": "When the query to populate a materialized query table (MQT) is run by the system on either ", "bbox": {"l": 136.8, "t": 445.78873, "r": 544.90387, "b": 455.00171, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "the create table or a refresh table, and one or more source tables have RCAC defined, the ", "bbox": {"l": 136.8, "t": 457.78853999999995, "r": 536.97687, "b": 467.00153, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "row permissions and column masks are ignored. This means that the MQT has all of the data.", "bbox": {"l": 136.8, "t": 469.78836, "r": 547.27844, "b": 479.00134, "coord_origin": "TOPLEFT"}}]}, "text": "When the query to populate a materialized query table (MQT) is run by the system on either the create table or a refresh table, and one or more source tables have RCAC defined, the row permissions and column masks are ignored. This means that the MQT has all of the data."}, {"label": "text", "id": 6, "page_no": 118, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.05838012695312, "t": 490.664794921875, "r": 547.28455, "b": 525.02054, "coord_origin": "TOPLEFT"}, "confidence": 0.9831634163856506, "cells": [{"id": 10, "text": "Because the MQT is a copy of the base table data, when a permission is created on the base ", "bbox": {"l": 136.8, "t": 491.80792, "r": 547.28455, "b": 501.0209, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "table, all the related MQTs are altered to have a default row permission. This default ", "bbox": {"l": 136.8, "t": 503.80774, "r": 509.82686999999993, "b": 513.02072, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "permission prevents any of the rows from being directly queried.", "bbox": {"l": 136.8, "t": 515.80756, "r": 419.78342, "b": 525.02054, "coord_origin": "TOPLEFT"}}]}, "text": "Because the MQT is a copy of the base table data, when a permission is created on the base table, all the related MQTs are altered to have a default row permission. This default permission prevents any of the rows from being directly queried."}, {"label": "text", "id": 7, "page_no": 118, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.96612548828125, "t": 536.773193359375, "r": 547.27246, "b": 571.03972, "coord_origin": "TOPLEFT"}, "confidence": 0.9812561869621277, "cells": [{"id": 13, "text": "When a query implicitly uses an MQT, the underlying row permissions and column masks are ", "bbox": {"l": 136.8, "t": 537.82712, "r": 547.27246, "b": 547.04012, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "built into the query that uses the MQT. In order for the MQT to be used for optimization, the ", "bbox": {"l": 136.8, "t": 549.82692, "r": 540.15295, "b": 559.0399199999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "MQT must include any columns that are used by the row permissions and column masks.", "bbox": {"l": 136.8, "t": 561.82672, "r": 531.36346, "b": 571.03972, "coord_origin": "TOPLEFT"}}]}, "text": "When a query implicitly uses an MQT, the underlying row permissions and column masks are built into the query that uses the MQT. In order for the MQT to be used for optimization, the MQT must include any columns that are used by the row permissions and column masks."}, {"label": "text", "id": 8, "page_no": 118, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.03353881835938, "t": 582.82958984375, "r": 342.15033, "b": 592.99953, "coord_origin": "TOPLEFT"}, "confidence": 0.9185956120491028, "cells": [{"id": 16, "text": "The following example illustrates this scenario:", "bbox": {"l": 136.8, "t": 583.78653, "r": 342.15033, "b": 592.99953, "coord_origin": "TOPLEFT"}}]}, "text": "The following example illustrates this scenario:"}, {"label": "list_item", "id": 9, "page_no": 118, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 136.65509033203125, "t": 600.0938720703125, "r": 270.41348, "b": 610.03909, "coord_origin": "TOPLEFT"}, "confidence": 0.708869218826294, "cells": [{"id": 17, "text": "1.", "bbox": {"l": 136.80002, "t": 600.8261, "r": 145.33115, "b": 610.03909, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Create schema and tables:", "bbox": {"l": 148.17487, "t": 600.8261, "r": 270.41348, "b": 610.03909, "coord_origin": "TOPLEFT"}}]}, "text": "1. Create schema and tables:"}, {"label": "text", "id": 10, "page_no": 118, "cluster": {"id": 10, "label": "text", "bbox": {"l": 151.20018, "t": 617.95531, "r": 547.25555, "b": 674.72928, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 19, "text": "CREATE SCHEMA Schema1; ", "bbox": {"l": 151.20018, "t": 617.95531, "r": 266.09869, "b": 626.73006, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "CREATE TABLE Schema1.employee(userID varchar(128), LocationID integer, Regionid ", "bbox": {"l": 151.20018, "t": 629.95511, "r": 547.25555, "b": 638.72986, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "integer); ", "bbox": {"l": 151.20018, "t": 641.95491, "r": 201.11969, "b": 650.72966, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "CREATE TABLE Schema1.Sales (INVOICE INTEGER NOT NULL, SALEAMT DECIMAL(5,2), ", "bbox": {"l": 151.20018, "t": 653.95471, "r": 531.05463, "b": 662.72946, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "TAXAMT DECIMAL(5,2), LOCATIONID INTEGER, REGIONID INTEGER);", "bbox": {"l": 151.20018, "t": 665.95452, "r": 446.03607000000005, "b": 674.72928, "coord_origin": "TOPLEFT"}}]}, "text": "CREATE SCHEMA Schema1; CREATE TABLE Schema1.employee(userID varchar(128), LocationID integer, Regionid integer); CREATE TABLE Schema1.Sales (INVOICE INTEGER NOT NULL, SALEAMT DECIMAL(5,2), TAXAMT DECIMAL(5,2), LOCATIONID INTEGER, REGIONID INTEGER);"}, {"label": "picture", "id": 11, "page_no": 118, "cluster": {"id": 11, "label": "picture", "bbox": {"l": 136.2811279296875, "t": 106.85755920410156, "r": 508.5420227050781, "b": 388.0796203613281, "coord_origin": "TOPLEFT"}, "confidence": 0.9733899235725403, "cells": [{"id": 24, "text": "CREATE VIEW OPEN_ACCOUNTS_VIEW AS (", "bbox": {"l": 154.0657, "t": 131.60051999999996, "r": 351.96384, "b": 141.26044000000002, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "SELECT ACCOUNT_NUMBER,", "bbox": {"l": 191.0079, "t": 151.91881999999998, "r": 324.31876, "b": 161.57874000000004, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ACCOUNT_CURRENT_BALANCE", "bbox": {"l": 227.95076, "t": 172.23748999999998, "r": 371.7757, "b": 181.89739999999995, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "FROM", "bbox": {"l": 191.0079, "t": 192.55535999999995, "r": 219.33701999999997, "b": 202.21527000000003, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "ACCOUNTS A", "bbox": {"l": 227.93269000000004, "t": 192.55535999999995, "r": 288.18939, "b": 202.21527000000003, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "WHERE A. ACCOUNT_DATE_CLOSED IS NULL) ", "bbox": {"l": 191.0079, "t": 212.87401999999997, "r": 399.53876, "b": 222.53394000000003, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "SELECT *", "bbox": {"l": 227.95019999999997, "t": 268.74872000000005, "r": 270.48792, "b": 278.40863, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "FROM", "bbox": {"l": 227.95019999999997, "t": 289.06738000000007, "r": 256.2793, "b": 298.72736, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "OPEN_ACCOUNTS_VIEW A", "bbox": {"l": 264.87497, "t": 289.06738000000007, "r": 387.39151, "b": 298.72736, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "WHERE A.ACCOUNT_NUMBER = ?", "bbox": {"l": 227.95019999999997, "t": 309.38522, "r": 384.06647, "b": 319.0452, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Note", "bbox": {"l": 185.2511, "t": 347.86838000000006, "r": 206.08113, "b": 356.64368, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": ": PERMISSION1_ON_ACCOUNTS allows access to the row", "bbox": {"l": 206.0927, "t": 347.86838000000006, "r": 447.3443, "b": 356.63342, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "based the user\u0092s group and CUSTOMER_ID value", "bbox": {"l": 215.69733, "t": 360.18246000000005, "r": 416.87384, "b": 368.9475100000001, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 118, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 370.6492004394531, "t": 754.8782348632812, "r": 517.96918, "b": 763.9190063476562, "coord_origin": "TOPLEFT"}, "confidence": 0.9510338306427002, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 371.28, "t": 755.538002, "r": 517.96918, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 118, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.1799926757812, "t": 754.2610473632812, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9243813157081604, "cells": [{"id": 1, "text": "103", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "103"}]}}, {"page_no": 119, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "104 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "2.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.18584, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Create a row permission that allows the employees to see only rows from the region they ", "bbox": {"l": 147.98111, "t": 71.50867000000005, "r": 545.86609, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "work in:", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 185.53629, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "/* Create permission that only allows the employees to see rows from the region ", "bbox": {"l": 151.20016, "t": 100.6377, "r": 547.19574, "b": 109.41247999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "they work in */ ", "bbox": {"l": 151.20016, "t": 112.63751000000002, "r": 231.17896, "b": 121.41228999999998, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "CREATE PERMISSION Schema1.Sales_PERM1 ", "bbox": {"l": 151.20016, "t": 124.6373299999999, "r": 341.0975, "b": 133.41210999999998, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "ON schema1.sales FOR ROWS ", "bbox": {"l": 151.20016, "t": 136.63715000000002, "r": 286.07846, "b": 145.41192999999998, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "WHERE CURRENT_USER in (SELECT userId FROM schema1.employee E ", "bbox": {"l": 151.20016, "t": 148.63696000000004, "r": 455.99606, "b": 157.41174, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "WHERE", "bbox": {"l": 151.20016, "t": 160.63678000000004, "r": 176.17984, "b": 169.41156, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "e.regionid = regionid) ", "bbox": {"l": 186.17171, "t": 160.63678000000004, "r": 301.07822, "b": 169.41156, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "ENFORCED FOR ALL ", "bbox": {"l": 151.20016, "t": 172.63660000000004, "r": 236.15893999999997, "b": 181.41138, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "ACCESS ENABLE;", "bbox": {"l": 151.20016, "t": 184.63640999999996, "r": 221.15918, "b": 193.41119000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "3.", "bbox": {"l": 136.8, "t": 201.52655000000004, "r": 145.2496, "b": 210.73955999999998, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Create an MQT to summarize sales by location:", "bbox": {"l": 148.06615, "t": 201.52655000000004, "r": 362.02145, "b": 210.73955999999998, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "-- Create MQT to summarize sales by location", "bbox": {"l": 151.20016, "t": 218.65576, "r": 371.03726, "b": 227.43053999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "-- This has all of the data. The schema1.sales_perm1 predicate was not applied ", "bbox": {"l": 151.20016, "t": 230.65558, "r": 545.99457, "b": 239.43035999999995, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "CREATE TABLE Schema1.Location_Sales_MQT as ", "bbox": {"l": 151.20016, "t": 242.6554, "r": 366.05728, "b": 251.43017999999995, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "AS (SELECT LocationID, SUM(Saleamt) as Total_Location_Sales ", "bbox": {"l": 151.20016, "t": 254.65521, "r": 451.01605, "b": 263.42999, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "FROM SCHEMA1.SALES ", "bbox": {"l": 151.20016, "t": 266.65503, "r": 246.11894, "b": 275.42981, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "GROUP BY LOCATIONID)", "bbox": {"l": 151.20016, "t": 278.65485, "r": 251.09894999999997, "b": 287.42963, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "DATA INITIALLY DEFERRED", "bbox": {"l": 151.20016, "t": 290.65466, "r": 266.09869, "b": 299.42944000000006, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "REFRESH DEFERRED", "bbox": {"l": 151.20016, "t": 302.65448, "r": 231.11919, "b": 311.42926, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "MAINTAINED BY USER; ", "bbox": {"l": 151.20016, "t": 314.6543, "r": 251.09893999999997, "b": 323.42908, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "4.", "bbox": {"l": 136.8, "t": 331.48471, "r": 145.25726, "b": 340.69768999999997, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Populate the MQT (permission is not applied):", "bbox": {"l": 148.07635, "t": 331.48471, "r": 354.34628, "b": 340.69768999999997, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "/* Populate the MQT - Permission not applied here */ ", "bbox": {"l": 151.20016, "t": 348.67368000000005, "r": 416.03656, "b": 357.44845999999995, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "REFRESH TABLE Schema1.Location_Sales_MQT ", "bbox": {"l": 151.20016, "t": 360.67349, "r": 356.03751, "b": 369.44827, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "The following query matches Location_Sales_MQT, but it cannot be used because it does ", "bbox": {"l": 151.20016, "t": 377.50391, "r": 547.19977, "b": 386.71689, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "not have column regionid, which is needed by the schema1.sales_PERM1 permission:", "bbox": {"l": 151.20016, "t": 389.50371999999993, "r": 533.10944, "b": 398.7167099999999, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "SELECT Locationid, sum(SALEAMT) FROM schema1.sales", "bbox": {"l": 151.20016, "t": 406.63290000000006, "r": 401.03677, "b": 415.40767999999997, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "GROUP BY locationid; ", "bbox": {"l": 151.20016, "t": 418.63272, "r": 256.19846, "b": 427.4075000000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "5.", "bbox": {"l": 136.8, "t": 435.52292, "r": 145.23802, "b": 444.7359, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Create an MQT to summarize by region and location:", "bbox": {"l": 148.05069, "t": 435.52292, "r": 385.90356, "b": 444.7359, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "-- MQT to summarize by region and location ", "bbox": {"l": 151.20016, "t": 452.6521, "r": 366.11707, "b": 461.42688, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Create table schema1.Region_Location_Sales_MQT as ", "bbox": {"l": 151.20016, "t": 464.65192, "r": 401.09653, "b": 473.4267, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "AS (SELECT REGIONID, LocationID, SUM(Saleamt) as Total_Location_Sales ", "bbox": {"l": 151.20016, "t": 476.65173, "r": 500.9953300000001, "b": 485.42651, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "FROM SCHEMA1.SALES", "bbox": {"l": 151.20016, "t": 488.65155, "r": 241.13895, "b": 497.42633, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "GROUP BY REGIONID, LOCATIONID)", "bbox": {"l": 151.20016, "t": 500.65137, "r": 301.07822, "b": 509.42615, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "DATA INITIALLY DEFERRED", "bbox": {"l": 151.20016, "t": 512.6511800000001, "r": 266.09869, "b": 521.42596, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "REFRESH DEFERRED", "bbox": {"l": 151.20016, "t": 524.6510000000001, "r": 231.11919, "b": 533.42578, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "MAINTAINED BY USER; ", "bbox": {"l": 151.20016, "t": 536.65082, "r": 251.09893999999997, "b": 545.42557, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "6.", "bbox": {"l": 136.8, "t": 553.54099, "r": 145.2187, "b": 562.75398, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Populate the Region_location_Sales_MQT (permission not applied):", "bbox": {"l": 148.02496, "t": 553.54099, "r": 452.10781999999995, "b": 562.75398, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "/* Populate the Region_location_Sales_MQT - Permission not applied here */ ", "bbox": {"l": 151.20016, "t": 570.6702, "r": 535.97479, "b": 579.4449500000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Refresh table schema1.Region_Location_Sales_MQT ", "bbox": {"l": 151.20016, "t": 582.67, "r": 391.07678, "b": 591.44475, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "The following query can use the Region_location_SALES_MQT because it has ", "bbox": {"l": 151.20016, "t": 599.50041, "r": 502.06903, "b": 608.7134100000001, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "REGIONID, which is required for the schema1.sales_PERM1 permission:", "bbox": {"l": 151.20016, "t": 611.50021, "r": 474.7886, "b": 620.71321, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "SELECT Locationid, sum(SALEAMT) FROM schema1.sales", "bbox": {"l": 151.20018, "t": 628.68918, "r": 401.03677, "b": 637.46393, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "GROUP BY", "bbox": {"l": 151.20018, "t": 640.68898, "r": 191.17677, "b": 649.4637299999999, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "locationid;", "bbox": {"l": 201.17091, "t": 640.68898, "r": 256.13873, "b": 649.4637299999999, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.42345428466797, "t": 754.3500366210938, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9201931953430176, "cells": [{"id": 0, "text": "104 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 98.57719421386719, "t": 754.6668090820312, "r": 339.839599609375, "b": 764.0997924804688, "coord_origin": "TOPLEFT"}, "confidence": 0.948181688785553, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 135.87754821777344, "t": 70.59613037109375, "r": 545.86609, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.8737232089042664, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.18584, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Create a row permission that allows the employees to see only rows from the region they ", "bbox": {"l": 147.98111, "t": 71.50867000000005, "r": 545.86609, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "work in:", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 185.53629, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "code", "bbox": {"l": 149.48439025878906, "t": 98.91398620605469, "r": 547.19574, "b": 193.41119000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.7315705418586731, "cells": [{"id": 5, "text": "/* Create permission that only allows the employees to see rows from the region ", "bbox": {"l": 151.20016, "t": 100.6377, "r": 547.19574, "b": 109.41247999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "they work in */ ", "bbox": {"l": 151.20016, "t": 112.63751000000002, "r": 231.17896, "b": 121.41228999999998, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "CREATE PERMISSION Schema1.Sales_PERM1 ", "bbox": {"l": 151.20016, "t": 124.6373299999999, "r": 341.0975, "b": 133.41210999999998, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "ON schema1.sales FOR ROWS ", "bbox": {"l": 151.20016, "t": 136.63715000000002, "r": 286.07846, "b": 145.41192999999998, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "WHERE CURRENT_USER in (SELECT userId FROM schema1.employee E ", "bbox": {"l": 151.20016, "t": 148.63696000000004, "r": 455.99606, "b": 157.41174, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "WHERE", "bbox": {"l": 151.20016, "t": 160.63678000000004, "r": 176.17984, "b": 169.41156, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "e.regionid = regionid) ", "bbox": {"l": 186.17171, "t": 160.63678000000004, "r": 301.07822, "b": 169.41156, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "ENFORCED FOR ALL ", "bbox": {"l": 151.20016, "t": 172.63660000000004, "r": 236.15893999999997, "b": 181.41138, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "ACCESS ENABLE;", "bbox": {"l": 151.20016, "t": 184.63640999999996, "r": 221.15918, "b": 193.41119000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 136.09523010253906, "t": 200.49166870117188, "r": 362.02145, "b": 210.96173095703125, "coord_origin": "TOPLEFT"}, "confidence": 0.7428785562515259, "cells": [{"id": 14, "text": "3.", "bbox": {"l": 136.8, "t": 201.52655000000004, "r": 145.2496, "b": 210.73955999999998, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Create an MQT to summarize sales by location:", "bbox": {"l": 148.06615, "t": 201.52655000000004, "r": 362.02145, "b": 210.73955999999998, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 149.7567138671875, "t": 217.29092407226562, "r": 545.99457, "b": 323.42908, "coord_origin": "TOPLEFT"}, "confidence": 0.7042393684387207, "cells": [{"id": 16, "text": "-- Create MQT to summarize sales by location", "bbox": {"l": 151.20016, "t": 218.65576, "r": 371.03726, "b": 227.43053999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "-- This has all of the data. The schema1.sales_perm1 predicate was not applied ", "bbox": {"l": 151.20016, "t": 230.65558, "r": 545.99457, "b": 239.43035999999995, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "CREATE TABLE Schema1.Location_Sales_MQT as ", "bbox": {"l": 151.20016, "t": 242.6554, "r": 366.05728, "b": 251.43017999999995, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "AS (SELECT LocationID, SUM(Saleamt) as Total_Location_Sales ", "bbox": {"l": 151.20016, "t": 254.65521, "r": 451.01605, "b": 263.42999, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "FROM SCHEMA1.SALES ", "bbox": {"l": 151.20016, "t": 266.65503, "r": 246.11894, "b": 275.42981, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "GROUP BY LOCATIONID)", "bbox": {"l": 151.20016, "t": 278.65485, "r": 251.09894999999997, "b": 287.42963, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "DATA INITIALLY DEFERRED", "bbox": {"l": 151.20016, "t": 290.65466, "r": 266.09869, "b": 299.42944000000006, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "REFRESH DEFERRED", "bbox": {"l": 151.20016, "t": 302.65448, "r": 231.11919, "b": 311.42926, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "MAINTAINED BY USER; ", "bbox": {"l": 151.20016, "t": 314.6543, "r": 251.09893999999997, "b": 323.42908, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.95851135253906, "t": 330.4781494140625, "r": 354.34628, "b": 341.0965881347656, "coord_origin": "TOPLEFT"}, "confidence": 0.7467354536056519, "cells": [{"id": 25, "text": "4.", "bbox": {"l": 136.8, "t": 331.48471, "r": 145.25726, "b": 340.69768999999997, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Populate the MQT (permission is not applied):", "bbox": {"l": 148.07635, "t": 331.48471, "r": 354.34628, "b": 340.69768999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 150.7456512451172, "t": 348.16949462890625, "r": 416.03656, "b": 370.27532958984375, "coord_origin": "TOPLEFT"}, "confidence": 0.698642373085022, "cells": [{"id": 27, "text": "/* Populate the MQT - Permission not applied here */ ", "bbox": {"l": 151.20016, "t": 348.67368000000005, "r": 416.03656, "b": 357.44845999999995, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "REFRESH TABLE Schema1.Location_Sales_MQT ", "bbox": {"l": 151.20016, "t": 360.67349, "r": 356.03751, "b": 369.44827, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 150.36888122558594, "t": 376.5781555175781, "r": 547.19977, "b": 399.09686279296875, "coord_origin": "TOPLEFT"}, "confidence": 0.8833680748939514, "cells": [{"id": 29, "text": "The following query matches Location_Sales_MQT, but it cannot be used because it does ", "bbox": {"l": 151.20016, "t": 377.50391, "r": 547.19977, "b": 386.71689, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "not have column regionid, which is needed by the schema1.sales_PERM1 permission:", "bbox": {"l": 151.20016, "t": 389.50371999999993, "r": 533.10944, "b": 398.7167099999999, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 150.5345001220703, "t": 405.3749084472656, "r": 401.03677, "b": 427.4075000000001, "coord_origin": "TOPLEFT"}, "confidence": 0.7805010676383972, "cells": [{"id": 31, "text": "SELECT Locationid, sum(SALEAMT) FROM schema1.sales", "bbox": {"l": 151.20016, "t": 406.63290000000006, "r": 401.03677, "b": 415.40767999999997, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "GROUP BY locationid; ", "bbox": {"l": 151.20016, "t": 418.63272, "r": 256.19846, "b": 427.4075000000001, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 136.50941467285156, "t": 434.431884765625, "r": 385.90356, "b": 444.9353942871094, "coord_origin": "TOPLEFT"}, "confidence": 0.7377039194107056, "cells": [{"id": 33, "text": "5.", "bbox": {"l": 136.8, "t": 435.52292, "r": 145.23802, "b": 444.7359, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Create an MQT to summarize by region and location:", "bbox": {"l": 148.05069, "t": 435.52292, "r": 385.90356, "b": 444.7359, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 150.02435302734375, "t": 451.1933288574219, "r": 500.9953300000001, "b": 545.42557, "coord_origin": "TOPLEFT"}, "confidence": 0.8073603510856628, "cells": [{"id": 35, "text": "-- MQT to summarize by region and location ", "bbox": {"l": 151.20016, "t": 452.6521, "r": 366.11707, "b": 461.42688, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Create table schema1.Region_Location_Sales_MQT as ", "bbox": {"l": 151.20016, "t": 464.65192, "r": 401.09653, "b": 473.4267, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "AS (SELECT REGIONID, LocationID, SUM(Saleamt) as Total_Location_Sales ", "bbox": {"l": 151.20016, "t": 476.65173, "r": 500.9953300000001, "b": 485.42651, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "FROM SCHEMA1.SALES", "bbox": {"l": 151.20016, "t": 488.65155, "r": 241.13895, "b": 497.42633, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "GROUP BY REGIONID, LOCATIONID)", "bbox": {"l": 151.20016, "t": 500.65137, "r": 301.07822, "b": 509.42615, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "DATA INITIALLY DEFERRED", "bbox": {"l": 151.20016, "t": 512.6511800000001, "r": 266.09869, "b": 521.42596, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "REFRESH DEFERRED", "bbox": {"l": 151.20016, "t": 524.6510000000001, "r": 231.11919, "b": 533.42578, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "MAINTAINED BY USER; ", "bbox": {"l": 151.20016, "t": 536.65082, "r": 251.09893999999997, "b": 545.42557, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "list_item", "bbox": {"l": 136.33966064453125, "t": 552.5261840820312, "r": 452.10781999999995, "b": 563.1635131835938, "coord_origin": "TOPLEFT"}, "confidence": 0.7632867097854614, "cells": [{"id": 43, "text": "6.", "bbox": {"l": 136.8, "t": 553.54099, "r": 145.2187, "b": 562.75398, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Populate the Region_location_Sales_MQT (permission not applied):", "bbox": {"l": 148.02496, "t": 553.54099, "r": 452.10781999999995, "b": 562.75398, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 150.35263061523438, "t": 569.8162841796875, "r": 535.97479, "b": 592.6467895507812, "coord_origin": "TOPLEFT"}, "confidence": 0.8625366687774658, "cells": [{"id": 45, "text": "/* Populate the Region_location_Sales_MQT - Permission not applied here */ ", "bbox": {"l": 151.20016, "t": 570.6702, "r": 535.97479, "b": 579.4449500000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Refresh table schema1.Region_Location_Sales_MQT ", "bbox": {"l": 151.20016, "t": 582.67, "r": 391.07678, "b": 591.44475, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "text", "bbox": {"l": 150.33642578125, "t": 598.5096435546875, "r": 502.06903, "b": 620.71321, "coord_origin": "TOPLEFT"}, "confidence": 0.9041882157325745, "cells": [{"id": 47, "text": "The following query can use the Region_location_SALES_MQT because it has ", "bbox": {"l": 151.20016, "t": 599.50041, "r": 502.06903, "b": 608.7134100000001, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "REGIONID, which is required for the schema1.sales_PERM1 permission:", "bbox": {"l": 151.20016, "t": 611.50021, "r": 474.7886, "b": 620.71321, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "text", "bbox": {"l": 150.63597106933594, "t": 628.1326293945312, "r": 401.03677, "b": 649.8663940429688, "coord_origin": "TOPLEFT"}, "confidence": 0.8543345332145691, "cells": [{"id": 49, "text": "SELECT Locationid, sum(SALEAMT) FROM schema1.sales", "bbox": {"l": 151.20018, "t": 628.68918, "r": 401.03677, "b": 637.46393, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "GROUP BY", "bbox": {"l": 151.20018, "t": 640.68898, "r": 191.17677, "b": 649.4637299999999, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "locationid;", "bbox": {"l": 201.17091, "t": 640.68898, "r": 256.13873, "b": 649.4637299999999, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 119, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.42345428466797, "t": 754.3500366210938, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9201931953430176, "cells": [{"id": 0, "text": "104 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "104"}, {"label": "page_footer", "id": 1, "page_no": 119, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.57719421386719, "t": 754.6668090820312, "r": 339.839599609375, "b": 764.0997924804688, "coord_origin": "TOPLEFT"}, "confidence": 0.948181688785553, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "list_item", "id": 2, "page_no": 119, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.87754821777344, "t": 70.59613037109375, "r": 545.86609, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.8737232089042664, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.18584, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Create a row permission that allows the employees to see only rows from the region they ", "bbox": {"l": 147.98111, "t": 71.50867000000005, "r": 545.86609, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "work in:", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 185.53629, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "2. Create a row permission that allows the employees to see only rows from the region they work in:"}, {"label": "code", "id": 3, "page_no": 119, "cluster": {"id": 3, "label": "code", "bbox": {"l": 149.48439025878906, "t": 98.91398620605469, "r": 547.19574, "b": 193.41119000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.7315705418586731, "cells": [{"id": 5, "text": "/* Create permission that only allows the employees to see rows from the region ", "bbox": {"l": 151.20016, "t": 100.6377, "r": 547.19574, "b": 109.41247999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "they work in */ ", "bbox": {"l": 151.20016, "t": 112.63751000000002, "r": 231.17896, "b": 121.41228999999998, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "CREATE PERMISSION Schema1.Sales_PERM1 ", "bbox": {"l": 151.20016, "t": 124.6373299999999, "r": 341.0975, "b": 133.41210999999998, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "ON schema1.sales FOR ROWS ", "bbox": {"l": 151.20016, "t": 136.63715000000002, "r": 286.07846, "b": 145.41192999999998, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "WHERE CURRENT_USER in (SELECT userId FROM schema1.employee E ", "bbox": {"l": 151.20016, "t": 148.63696000000004, "r": 455.99606, "b": 157.41174, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "WHERE", "bbox": {"l": 151.20016, "t": 160.63678000000004, "r": 176.17984, "b": 169.41156, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "e.regionid = regionid) ", "bbox": {"l": 186.17171, "t": 160.63678000000004, "r": 301.07822, "b": 169.41156, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "ENFORCED FOR ALL ", "bbox": {"l": 151.20016, "t": 172.63660000000004, "r": 236.15893999999997, "b": 181.41138, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "ACCESS ENABLE;", "bbox": {"l": 151.20016, "t": 184.63640999999996, "r": 221.15918, "b": 193.41119000000003, "coord_origin": "TOPLEFT"}}]}, "text": "/* Create permission that only allows the employees to see rows from the region they work in */ CREATE PERMISSION Schema1.Sales_PERM1 ON schema1.sales FOR ROWS WHERE CURRENT_USER in (SELECT userId FROM schema1.employee E WHERE e.regionid = regionid) ENFORCED FOR ALL ACCESS ENABLE;"}, {"label": "list_item", "id": 4, "page_no": 119, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.09523010253906, "t": 200.49166870117188, "r": 362.02145, "b": 210.96173095703125, "coord_origin": "TOPLEFT"}, "confidence": 0.7428785562515259, "cells": [{"id": 14, "text": "3.", "bbox": {"l": 136.8, "t": 201.52655000000004, "r": 145.2496, "b": 210.73955999999998, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Create an MQT to summarize sales by location:", "bbox": {"l": 148.06615, "t": 201.52655000000004, "r": 362.02145, "b": 210.73955999999998, "coord_origin": "TOPLEFT"}}]}, "text": "3. Create an MQT to summarize sales by location:"}, {"label": "text", "id": 5, "page_no": 119, "cluster": {"id": 5, "label": "text", "bbox": {"l": 149.7567138671875, "t": 217.29092407226562, "r": 545.99457, "b": 323.42908, "coord_origin": "TOPLEFT"}, "confidence": 0.7042393684387207, "cells": [{"id": 16, "text": "-- Create MQT to summarize sales by location", "bbox": {"l": 151.20016, "t": 218.65576, "r": 371.03726, "b": 227.43053999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "-- This has all of the data. The schema1.sales_perm1 predicate was not applied ", "bbox": {"l": 151.20016, "t": 230.65558, "r": 545.99457, "b": 239.43035999999995, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "CREATE TABLE Schema1.Location_Sales_MQT as ", "bbox": {"l": 151.20016, "t": 242.6554, "r": 366.05728, "b": 251.43017999999995, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "AS (SELECT LocationID, SUM(Saleamt) as Total_Location_Sales ", "bbox": {"l": 151.20016, "t": 254.65521, "r": 451.01605, "b": 263.42999, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "FROM SCHEMA1.SALES ", "bbox": {"l": 151.20016, "t": 266.65503, "r": 246.11894, "b": 275.42981, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "GROUP BY LOCATIONID)", "bbox": {"l": 151.20016, "t": 278.65485, "r": 251.09894999999997, "b": 287.42963, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "DATA INITIALLY DEFERRED", "bbox": {"l": 151.20016, "t": 290.65466, "r": 266.09869, "b": 299.42944000000006, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "REFRESH DEFERRED", "bbox": {"l": 151.20016, "t": 302.65448, "r": 231.11919, "b": 311.42926, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "MAINTAINED BY USER; ", "bbox": {"l": 151.20016, "t": 314.6543, "r": 251.09893999999997, "b": 323.42908, "coord_origin": "TOPLEFT"}}]}, "text": "-- Create MQT to summarize sales by location -- This has all of the data. The schema1.sales_perm1 predicate was not applied CREATE TABLE Schema1.Location_Sales_MQT as AS (SELECT LocationID, SUM(Saleamt) as Total_Location_Sales FROM SCHEMA1.SALES GROUP BY LOCATIONID) DATA INITIALLY DEFERRED REFRESH DEFERRED MAINTAINED BY USER;"}, {"label": "list_item", "id": 6, "page_no": 119, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.95851135253906, "t": 330.4781494140625, "r": 354.34628, "b": 341.0965881347656, "coord_origin": "TOPLEFT"}, "confidence": 0.7467354536056519, "cells": [{"id": 25, "text": "4.", "bbox": {"l": 136.8, "t": 331.48471, "r": 145.25726, "b": 340.69768999999997, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Populate the MQT (permission is not applied):", "bbox": {"l": 148.07635, "t": 331.48471, "r": 354.34628, "b": 340.69768999999997, "coord_origin": "TOPLEFT"}}]}, "text": "4. Populate the MQT (permission is not applied):"}, {"label": "text", "id": 7, "page_no": 119, "cluster": {"id": 7, "label": "text", "bbox": {"l": 150.7456512451172, "t": 348.16949462890625, "r": 416.03656, "b": 370.27532958984375, "coord_origin": "TOPLEFT"}, "confidence": 0.698642373085022, "cells": [{"id": 27, "text": "/* Populate the MQT - Permission not applied here */ ", "bbox": {"l": 151.20016, "t": 348.67368000000005, "r": 416.03656, "b": 357.44845999999995, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "REFRESH TABLE Schema1.Location_Sales_MQT ", "bbox": {"l": 151.20016, "t": 360.67349, "r": 356.03751, "b": 369.44827, "coord_origin": "TOPLEFT"}}]}, "text": "/* Populate the MQT - Permission not applied here */ REFRESH TABLE Schema1.Location_Sales_MQT"}, {"label": "text", "id": 8, "page_no": 119, "cluster": {"id": 8, "label": "text", "bbox": {"l": 150.36888122558594, "t": 376.5781555175781, "r": 547.19977, "b": 399.09686279296875, "coord_origin": "TOPLEFT"}, "confidence": 0.8833680748939514, "cells": [{"id": 29, "text": "The following query matches Location_Sales_MQT, but it cannot be used because it does ", "bbox": {"l": 151.20016, "t": 377.50391, "r": 547.19977, "b": 386.71689, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "not have column regionid, which is needed by the schema1.sales_PERM1 permission:", "bbox": {"l": 151.20016, "t": 389.50371999999993, "r": 533.10944, "b": 398.7167099999999, "coord_origin": "TOPLEFT"}}]}, "text": "The following query matches Location_Sales_MQT, but it cannot be used because it does not have column regionid, which is needed by the schema1.sales_PERM1 permission:"}, {"label": "text", "id": 9, "page_no": 119, "cluster": {"id": 9, "label": "text", "bbox": {"l": 150.5345001220703, "t": 405.3749084472656, "r": 401.03677, "b": 427.4075000000001, "coord_origin": "TOPLEFT"}, "confidence": 0.7805010676383972, "cells": [{"id": 31, "text": "SELECT Locationid, sum(SALEAMT) FROM schema1.sales", "bbox": {"l": 151.20016, "t": 406.63290000000006, "r": 401.03677, "b": 415.40767999999997, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "GROUP BY locationid; ", "bbox": {"l": 151.20016, "t": 418.63272, "r": 256.19846, "b": 427.4075000000001, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT Locationid, sum(SALEAMT) FROM schema1.sales GROUP BY locationid;"}, {"label": "list_item", "id": 10, "page_no": 119, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 136.50941467285156, "t": 434.431884765625, "r": 385.90356, "b": 444.9353942871094, "coord_origin": "TOPLEFT"}, "confidence": 0.7377039194107056, "cells": [{"id": 33, "text": "5.", "bbox": {"l": 136.8, "t": 435.52292, "r": 145.23802, "b": 444.7359, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Create an MQT to summarize by region and location:", "bbox": {"l": 148.05069, "t": 435.52292, "r": 385.90356, "b": 444.7359, "coord_origin": "TOPLEFT"}}]}, "text": "5. Create an MQT to summarize by region and location:"}, {"label": "text", "id": 11, "page_no": 119, "cluster": {"id": 11, "label": "text", "bbox": {"l": 150.02435302734375, "t": 451.1933288574219, "r": 500.9953300000001, "b": 545.42557, "coord_origin": "TOPLEFT"}, "confidence": 0.8073603510856628, "cells": [{"id": 35, "text": "-- MQT to summarize by region and location ", "bbox": {"l": 151.20016, "t": 452.6521, "r": 366.11707, "b": 461.42688, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Create table schema1.Region_Location_Sales_MQT as ", "bbox": {"l": 151.20016, "t": 464.65192, "r": 401.09653, "b": 473.4267, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "AS (SELECT REGIONID, LocationID, SUM(Saleamt) as Total_Location_Sales ", "bbox": {"l": 151.20016, "t": 476.65173, "r": 500.9953300000001, "b": 485.42651, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "FROM SCHEMA1.SALES", "bbox": {"l": 151.20016, "t": 488.65155, "r": 241.13895, "b": 497.42633, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "GROUP BY REGIONID, LOCATIONID)", "bbox": {"l": 151.20016, "t": 500.65137, "r": 301.07822, "b": 509.42615, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "DATA INITIALLY DEFERRED", "bbox": {"l": 151.20016, "t": 512.6511800000001, "r": 266.09869, "b": 521.42596, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "REFRESH DEFERRED", "bbox": {"l": 151.20016, "t": 524.6510000000001, "r": 231.11919, "b": 533.42578, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "MAINTAINED BY USER; ", "bbox": {"l": 151.20016, "t": 536.65082, "r": 251.09893999999997, "b": 545.42557, "coord_origin": "TOPLEFT"}}]}, "text": "-- MQT to summarize by region and location Create table schema1.Region_Location_Sales_MQT as AS (SELECT REGIONID, LocationID, SUM(Saleamt) as Total_Location_Sales FROM SCHEMA1.SALES GROUP BY REGIONID, LOCATIONID) DATA INITIALLY DEFERRED REFRESH DEFERRED MAINTAINED BY USER;"}, {"label": "list_item", "id": 12, "page_no": 119, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 136.33966064453125, "t": 552.5261840820312, "r": 452.10781999999995, "b": 563.1635131835938, "coord_origin": "TOPLEFT"}, "confidence": 0.7632867097854614, "cells": [{"id": 43, "text": "6.", "bbox": {"l": 136.8, "t": 553.54099, "r": 145.2187, "b": 562.75398, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Populate the Region_location_Sales_MQT (permission not applied):", "bbox": {"l": 148.02496, "t": 553.54099, "r": 452.10781999999995, "b": 562.75398, "coord_origin": "TOPLEFT"}}]}, "text": "6. Populate the Region_location_Sales_MQT (permission not applied):"}, {"label": "text", "id": 13, "page_no": 119, "cluster": {"id": 13, "label": "text", "bbox": {"l": 150.35263061523438, "t": 569.8162841796875, "r": 535.97479, "b": 592.6467895507812, "coord_origin": "TOPLEFT"}, "confidence": 0.8625366687774658, "cells": [{"id": 45, "text": "/* Populate the Region_location_Sales_MQT - Permission not applied here */ ", "bbox": {"l": 151.20016, "t": 570.6702, "r": 535.97479, "b": 579.4449500000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Refresh table schema1.Region_Location_Sales_MQT ", "bbox": {"l": 151.20016, "t": 582.67, "r": 391.07678, "b": 591.44475, "coord_origin": "TOPLEFT"}}]}, "text": "/* Populate the Region_location_Sales_MQT - Permission not applied here */ Refresh table schema1.Region_Location_Sales_MQT"}, {"label": "text", "id": 14, "page_no": 119, "cluster": {"id": 14, "label": "text", "bbox": {"l": 150.33642578125, "t": 598.5096435546875, "r": 502.06903, "b": 620.71321, "coord_origin": "TOPLEFT"}, "confidence": 0.9041882157325745, "cells": [{"id": 47, "text": "The following query can use the Region_location_SALES_MQT because it has ", "bbox": {"l": 151.20016, "t": 599.50041, "r": 502.06903, "b": 608.7134100000001, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "REGIONID, which is required for the schema1.sales_PERM1 permission:", "bbox": {"l": 151.20016, "t": 611.50021, "r": 474.7886, "b": 620.71321, "coord_origin": "TOPLEFT"}}]}, "text": "The following query can use the Region_location_SALES_MQT because it has REGIONID, which is required for the schema1.sales_PERM1 permission:"}, {"label": "text", "id": 15, "page_no": 119, "cluster": {"id": 15, "label": "text", "bbox": {"l": 150.63597106933594, "t": 628.1326293945312, "r": 401.03677, "b": 649.8663940429688, "coord_origin": "TOPLEFT"}, "confidence": 0.8543345332145691, "cells": [{"id": 49, "text": "SELECT Locationid, sum(SALEAMT) FROM schema1.sales", "bbox": {"l": 151.20018, "t": 628.68918, "r": 401.03677, "b": 637.46393, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "GROUP BY", "bbox": {"l": 151.20018, "t": 640.68898, "r": 191.17677, "b": 649.4637299999999, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "locationid;", "bbox": {"l": 201.17091, "t": 640.68898, "r": 256.13873, "b": 649.4637299999999, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT Locationid, sum(SALEAMT) FROM schema1.sales GROUP BY locationid;"}], "body": [{"label": "list_item", "id": 2, "page_no": 119, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.87754821777344, "t": 70.59613037109375, "r": 545.86609, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.8737232089042664, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.18584, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Create a row permission that allows the employees to see only rows from the region they ", "bbox": {"l": 147.98111, "t": 71.50867000000005, "r": 545.86609, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "work in:", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 185.53629, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "2. Create a row permission that allows the employees to see only rows from the region they work in:"}, {"label": "code", "id": 3, "page_no": 119, "cluster": {"id": 3, "label": "code", "bbox": {"l": 149.48439025878906, "t": 98.91398620605469, "r": 547.19574, "b": 193.41119000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.7315705418586731, "cells": [{"id": 5, "text": "/* Create permission that only allows the employees to see rows from the region ", "bbox": {"l": 151.20016, "t": 100.6377, "r": 547.19574, "b": 109.41247999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "they work in */ ", "bbox": {"l": 151.20016, "t": 112.63751000000002, "r": 231.17896, "b": 121.41228999999998, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "CREATE PERMISSION Schema1.Sales_PERM1 ", "bbox": {"l": 151.20016, "t": 124.6373299999999, "r": 341.0975, "b": 133.41210999999998, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "ON schema1.sales FOR ROWS ", "bbox": {"l": 151.20016, "t": 136.63715000000002, "r": 286.07846, "b": 145.41192999999998, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "WHERE CURRENT_USER in (SELECT userId FROM schema1.employee E ", "bbox": {"l": 151.20016, "t": 148.63696000000004, "r": 455.99606, "b": 157.41174, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "WHERE", "bbox": {"l": 151.20016, "t": 160.63678000000004, "r": 176.17984, "b": 169.41156, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "e.regionid = regionid) ", "bbox": {"l": 186.17171, "t": 160.63678000000004, "r": 301.07822, "b": 169.41156, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "ENFORCED FOR ALL ", "bbox": {"l": 151.20016, "t": 172.63660000000004, "r": 236.15893999999997, "b": 181.41138, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "ACCESS ENABLE;", "bbox": {"l": 151.20016, "t": 184.63640999999996, "r": 221.15918, "b": 193.41119000000003, "coord_origin": "TOPLEFT"}}]}, "text": "/* Create permission that only allows the employees to see rows from the region they work in */ CREATE PERMISSION Schema1.Sales_PERM1 ON schema1.sales FOR ROWS WHERE CURRENT_USER in (SELECT userId FROM schema1.employee E WHERE e.regionid = regionid) ENFORCED FOR ALL ACCESS ENABLE;"}, {"label": "list_item", "id": 4, "page_no": 119, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.09523010253906, "t": 200.49166870117188, "r": 362.02145, "b": 210.96173095703125, "coord_origin": "TOPLEFT"}, "confidence": 0.7428785562515259, "cells": [{"id": 14, "text": "3.", "bbox": {"l": 136.8, "t": 201.52655000000004, "r": 145.2496, "b": 210.73955999999998, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Create an MQT to summarize sales by location:", "bbox": {"l": 148.06615, "t": 201.52655000000004, "r": 362.02145, "b": 210.73955999999998, "coord_origin": "TOPLEFT"}}]}, "text": "3. Create an MQT to summarize sales by location:"}, {"label": "text", "id": 5, "page_no": 119, "cluster": {"id": 5, "label": "text", "bbox": {"l": 149.7567138671875, "t": 217.29092407226562, "r": 545.99457, "b": 323.42908, "coord_origin": "TOPLEFT"}, "confidence": 0.7042393684387207, "cells": [{"id": 16, "text": "-- Create MQT to summarize sales by location", "bbox": {"l": 151.20016, "t": 218.65576, "r": 371.03726, "b": 227.43053999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "-- This has all of the data. The schema1.sales_perm1 predicate was not applied ", "bbox": {"l": 151.20016, "t": 230.65558, "r": 545.99457, "b": 239.43035999999995, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "CREATE TABLE Schema1.Location_Sales_MQT as ", "bbox": {"l": 151.20016, "t": 242.6554, "r": 366.05728, "b": 251.43017999999995, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "AS (SELECT LocationID, SUM(Saleamt) as Total_Location_Sales ", "bbox": {"l": 151.20016, "t": 254.65521, "r": 451.01605, "b": 263.42999, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "FROM SCHEMA1.SALES ", "bbox": {"l": 151.20016, "t": 266.65503, "r": 246.11894, "b": 275.42981, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "GROUP BY LOCATIONID)", "bbox": {"l": 151.20016, "t": 278.65485, "r": 251.09894999999997, "b": 287.42963, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "DATA INITIALLY DEFERRED", "bbox": {"l": 151.20016, "t": 290.65466, "r": 266.09869, "b": 299.42944000000006, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "REFRESH DEFERRED", "bbox": {"l": 151.20016, "t": 302.65448, "r": 231.11919, "b": 311.42926, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "MAINTAINED BY USER; ", "bbox": {"l": 151.20016, "t": 314.6543, "r": 251.09893999999997, "b": 323.42908, "coord_origin": "TOPLEFT"}}]}, "text": "-- Create MQT to summarize sales by location -- This has all of the data. The schema1.sales_perm1 predicate was not applied CREATE TABLE Schema1.Location_Sales_MQT as AS (SELECT LocationID, SUM(Saleamt) as Total_Location_Sales FROM SCHEMA1.SALES GROUP BY LOCATIONID) DATA INITIALLY DEFERRED REFRESH DEFERRED MAINTAINED BY USER;"}, {"label": "list_item", "id": 6, "page_no": 119, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.95851135253906, "t": 330.4781494140625, "r": 354.34628, "b": 341.0965881347656, "coord_origin": "TOPLEFT"}, "confidence": 0.7467354536056519, "cells": [{"id": 25, "text": "4.", "bbox": {"l": 136.8, "t": 331.48471, "r": 145.25726, "b": 340.69768999999997, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Populate the MQT (permission is not applied):", "bbox": {"l": 148.07635, "t": 331.48471, "r": 354.34628, "b": 340.69768999999997, "coord_origin": "TOPLEFT"}}]}, "text": "4. Populate the MQT (permission is not applied):"}, {"label": "text", "id": 7, "page_no": 119, "cluster": {"id": 7, "label": "text", "bbox": {"l": 150.7456512451172, "t": 348.16949462890625, "r": 416.03656, "b": 370.27532958984375, "coord_origin": "TOPLEFT"}, "confidence": 0.698642373085022, "cells": [{"id": 27, "text": "/* Populate the MQT - Permission not applied here */ ", "bbox": {"l": 151.20016, "t": 348.67368000000005, "r": 416.03656, "b": 357.44845999999995, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "REFRESH TABLE Schema1.Location_Sales_MQT ", "bbox": {"l": 151.20016, "t": 360.67349, "r": 356.03751, "b": 369.44827, "coord_origin": "TOPLEFT"}}]}, "text": "/* Populate the MQT - Permission not applied here */ REFRESH TABLE Schema1.Location_Sales_MQT"}, {"label": "text", "id": 8, "page_no": 119, "cluster": {"id": 8, "label": "text", "bbox": {"l": 150.36888122558594, "t": 376.5781555175781, "r": 547.19977, "b": 399.09686279296875, "coord_origin": "TOPLEFT"}, "confidence": 0.8833680748939514, "cells": [{"id": 29, "text": "The following query matches Location_Sales_MQT, but it cannot be used because it does ", "bbox": {"l": 151.20016, "t": 377.50391, "r": 547.19977, "b": 386.71689, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "not have column regionid, which is needed by the schema1.sales_PERM1 permission:", "bbox": {"l": 151.20016, "t": 389.50371999999993, "r": 533.10944, "b": 398.7167099999999, "coord_origin": "TOPLEFT"}}]}, "text": "The following query matches Location_Sales_MQT, but it cannot be used because it does not have column regionid, which is needed by the schema1.sales_PERM1 permission:"}, {"label": "text", "id": 9, "page_no": 119, "cluster": {"id": 9, "label": "text", "bbox": {"l": 150.5345001220703, "t": 405.3749084472656, "r": 401.03677, "b": 427.4075000000001, "coord_origin": "TOPLEFT"}, "confidence": 0.7805010676383972, "cells": [{"id": 31, "text": "SELECT Locationid, sum(SALEAMT) FROM schema1.sales", "bbox": {"l": 151.20016, "t": 406.63290000000006, "r": 401.03677, "b": 415.40767999999997, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "GROUP BY locationid; ", "bbox": {"l": 151.20016, "t": 418.63272, "r": 256.19846, "b": 427.4075000000001, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT Locationid, sum(SALEAMT) FROM schema1.sales GROUP BY locationid;"}, {"label": "list_item", "id": 10, "page_no": 119, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 136.50941467285156, "t": 434.431884765625, "r": 385.90356, "b": 444.9353942871094, "coord_origin": "TOPLEFT"}, "confidence": 0.7377039194107056, "cells": [{"id": 33, "text": "5.", "bbox": {"l": 136.8, "t": 435.52292, "r": 145.23802, "b": 444.7359, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Create an MQT to summarize by region and location:", "bbox": {"l": 148.05069, "t": 435.52292, "r": 385.90356, "b": 444.7359, "coord_origin": "TOPLEFT"}}]}, "text": "5. Create an MQT to summarize by region and location:"}, {"label": "text", "id": 11, "page_no": 119, "cluster": {"id": 11, "label": "text", "bbox": {"l": 150.02435302734375, "t": 451.1933288574219, "r": 500.9953300000001, "b": 545.42557, "coord_origin": "TOPLEFT"}, "confidence": 0.8073603510856628, "cells": [{"id": 35, "text": "-- MQT to summarize by region and location ", "bbox": {"l": 151.20016, "t": 452.6521, "r": 366.11707, "b": 461.42688, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Create table schema1.Region_Location_Sales_MQT as ", "bbox": {"l": 151.20016, "t": 464.65192, "r": 401.09653, "b": 473.4267, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "AS (SELECT REGIONID, LocationID, SUM(Saleamt) as Total_Location_Sales ", "bbox": {"l": 151.20016, "t": 476.65173, "r": 500.9953300000001, "b": 485.42651, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "FROM SCHEMA1.SALES", "bbox": {"l": 151.20016, "t": 488.65155, "r": 241.13895, "b": 497.42633, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "GROUP BY REGIONID, LOCATIONID)", "bbox": {"l": 151.20016, "t": 500.65137, "r": 301.07822, "b": 509.42615, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "DATA INITIALLY DEFERRED", "bbox": {"l": 151.20016, "t": 512.6511800000001, "r": 266.09869, "b": 521.42596, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "REFRESH DEFERRED", "bbox": {"l": 151.20016, "t": 524.6510000000001, "r": 231.11919, "b": 533.42578, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "MAINTAINED BY USER; ", "bbox": {"l": 151.20016, "t": 536.65082, "r": 251.09893999999997, "b": 545.42557, "coord_origin": "TOPLEFT"}}]}, "text": "-- MQT to summarize by region and location Create table schema1.Region_Location_Sales_MQT as AS (SELECT REGIONID, LocationID, SUM(Saleamt) as Total_Location_Sales FROM SCHEMA1.SALES GROUP BY REGIONID, LOCATIONID) DATA INITIALLY DEFERRED REFRESH DEFERRED MAINTAINED BY USER;"}, {"label": "list_item", "id": 12, "page_no": 119, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 136.33966064453125, "t": 552.5261840820312, "r": 452.10781999999995, "b": 563.1635131835938, "coord_origin": "TOPLEFT"}, "confidence": 0.7632867097854614, "cells": [{"id": 43, "text": "6.", "bbox": {"l": 136.8, "t": 553.54099, "r": 145.2187, "b": 562.75398, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Populate the Region_location_Sales_MQT (permission not applied):", "bbox": {"l": 148.02496, "t": 553.54099, "r": 452.10781999999995, "b": 562.75398, "coord_origin": "TOPLEFT"}}]}, "text": "6. Populate the Region_location_Sales_MQT (permission not applied):"}, {"label": "text", "id": 13, "page_no": 119, "cluster": {"id": 13, "label": "text", "bbox": {"l": 150.35263061523438, "t": 569.8162841796875, "r": 535.97479, "b": 592.6467895507812, "coord_origin": "TOPLEFT"}, "confidence": 0.8625366687774658, "cells": [{"id": 45, "text": "/* Populate the Region_location_Sales_MQT - Permission not applied here */ ", "bbox": {"l": 151.20016, "t": 570.6702, "r": 535.97479, "b": 579.4449500000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Refresh table schema1.Region_Location_Sales_MQT ", "bbox": {"l": 151.20016, "t": 582.67, "r": 391.07678, "b": 591.44475, "coord_origin": "TOPLEFT"}}]}, "text": "/* Populate the Region_location_Sales_MQT - Permission not applied here */ Refresh table schema1.Region_Location_Sales_MQT"}, {"label": "text", "id": 14, "page_no": 119, "cluster": {"id": 14, "label": "text", "bbox": {"l": 150.33642578125, "t": 598.5096435546875, "r": 502.06903, "b": 620.71321, "coord_origin": "TOPLEFT"}, "confidence": 0.9041882157325745, "cells": [{"id": 47, "text": "The following query can use the Region_location_SALES_MQT because it has ", "bbox": {"l": 151.20016, "t": 599.50041, "r": 502.06903, "b": 608.7134100000001, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "REGIONID, which is required for the schema1.sales_PERM1 permission:", "bbox": {"l": 151.20016, "t": 611.50021, "r": 474.7886, "b": 620.71321, "coord_origin": "TOPLEFT"}}]}, "text": "The following query can use the Region_location_SALES_MQT because it has REGIONID, which is required for the schema1.sales_PERM1 permission:"}, {"label": "text", "id": 15, "page_no": 119, "cluster": {"id": 15, "label": "text", "bbox": {"l": 150.63597106933594, "t": 628.1326293945312, "r": 401.03677, "b": 649.8663940429688, "coord_origin": "TOPLEFT"}, "confidence": 0.8543345332145691, "cells": [{"id": 49, "text": "SELECT Locationid, sum(SALEAMT) FROM schema1.sales", "bbox": {"l": 151.20018, "t": 628.68918, "r": 401.03677, "b": 637.46393, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "GROUP BY", "bbox": {"l": 151.20018, "t": 640.68898, "r": 191.17677, "b": 649.4637299999999, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "locationid;", "bbox": {"l": 201.17091, "t": 640.68898, "r": 256.13873, "b": 649.4637299999999, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT Locationid, sum(SALEAMT) FROM schema1.sales GROUP BY locationid;"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 119, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.42345428466797, "t": 754.3500366210938, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9201931953430176, "cells": [{"id": 0, "text": "104 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "104"}, {"label": "page_footer", "id": 1, "page_no": 119, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.57719421386719, "t": 754.6668090820312, "r": 339.839599609375, "b": 764.0997924804688, "coord_origin": "TOPLEFT"}, "confidence": 0.948181688785553, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 120, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 371.28, "t": 755.538002, "r": 517.96918, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "105", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "This example has the following additional implications:", "bbox": {"l": 136.8002, "t": 71.50903000000005, "r": 376.07117, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "GLYPH", "bbox": {"l": 136.8002, "t": 88.63823999999988, "r": 141.7802, "b": 97.41301999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Users must be prevented from explicitly querying the MQT or a view that is created over it. ", "bbox": {"l": 151.20036, "t": 88.48883000000001, "r": 547.27185, "b": 97.70183999999995, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Those two cases bypass the row permission and column mask rules from the underlying ", "bbox": {"l": 151.20036, "t": 100.48865, "r": 544.09833, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "tables.", "bbox": {"l": 151.20036, "t": 112.48845999999992, "r": 180.23874, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "GLYPH", "bbox": {"l": 136.8002, "t": 129.67742999999996, "r": 141.7802, "b": 138.45221000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "If the user writes code to update incrementally an MQT, that code must be run from a user ", "bbox": {"l": 151.20036, "t": 129.52801999999997, "r": 547.31061, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "that has permission to view all of the rows and all columns in their unmasked state. ", "bbox": {"l": 151.20036, "t": 141.52783, "r": 519.6994, "b": 150.74084000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Otherwise, the MQT contents are not complete and queries that implicitly use the MQT ", "bbox": {"l": 151.20036, "t": 153.52765, "r": 536.80664, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "might get wrong results.", "bbox": {"l": 151.20036, "t": 165.52747, "r": 257.17972, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "GLYPH", "bbox": {"l": 136.8002, "t": 182.65668000000005, "r": 141.7802, "b": 191.43146000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "To prevent this, a check constraint can be created to cause an error if masked data was ", "bbox": {"l": 151.20036, "t": 182.50725999999997, "r": 539.19519, "b": 191.72028, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "inserted into the MQT.", "bbox": {"l": 151.20036, "t": 194.50707999999997, "r": 249.24758999999997, "b": 203.72009000000003, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "6.5.3", "bbox": {"l": 64.800003, "t": 224.33471999999995, "r": 94.544197, "b": 236.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Query rewrite", "bbox": {"l": 98.262222, "t": 224.33471999999995, "r": 184.48561, "b": 236.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Query rewrite is a technique that the optimizer can use to change the original request to ", "bbox": {"l": 136.8, "t": 250.48870999999997, "r": 527.12238, "b": 259.70172, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "improve performance.", "bbox": {"l": 136.8, "t": 262.48852999999997, "r": 233.39114, "b": 271.70154, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "For example, a query that references Table1 might be rewritten to access an MQT over ", "bbox": {"l": 136.8, "t": 284.50812, "r": 522.46423, "b": 293.7211, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Table1, or it might also be optimized to access only the fields in an index that is defined over ", "bbox": {"l": 136.8, "t": 296.50793, "r": 545.13904, "b": 305.72092, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Table1 and avoid touching Table1. With RCAC, defining these rewrites can still occur, but the ", "bbox": {"l": 136.8, "t": 308.50775, "r": 547.15894, "b": 317.72073, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "MQT or index also must include all columns that are needed by the row permissions or ", "bbox": {"l": 136.79999, "t": 320.50757, "r": 521.83862, "b": 329.72055, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "column masks that are defined on Table1.", "bbox": {"l": 136.79999, "t": 332.50738999999993, "r": 321.46436, "b": 341.72037, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "As part of adding RCAC, the impact to these potentially significant performance optimizations ", "bbox": {"l": 136.79999, "t": 354.52695, "r": 547.38397, "b": 363.73993, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "must be considered. Usage of MQTs or index-only access might be reduced or eliminated by ", "bbox": {"l": 136.79999, "t": 366.52675999999997, "r": 547.37024, "b": 375.73974999999996, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "enabling RCAC.", "bbox": {"l": 136.79999, "t": 378.52658, "r": 207.61162, "b": 387.73956, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "6.6", "bbox": {"l": 64.800003, "t": 416.2207, "r": 87.229889, "b": 430.9837, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "RCAC effects on performance and scalability", "bbox": {"l": 91.715851, "t": 416.2207, "r": 436.9425, "b": 430.9837, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "As with any discussion that is related to performance and scalability, nothing is certain or ", "bbox": {"l": 136.8, "t": 448.48874, "r": 530.32556, "b": 457.70172, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "guaranteed. There are always many variables that are involved. First, a good foundation of ", "bbox": {"l": 136.8, "t": 460.48856, "r": 538.07629, "b": 469.70154, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "knowledge and skill is required to appreciate fully what is occurring when a database request ", "bbox": {"l": 136.8, "t": 472.48837, "r": 547.23462, "b": 481.70135, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "is handled within an RCAC enabled environment. Implementing the row permission or column ", "bbox": {"l": 136.79999, "t": 484.54794, "r": 547.32916, "b": 493.76093, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "masks involves the query optimizer and database engine. The process that identifies the rows ", "bbox": {"l": 136.79999, "t": 496.54776, "r": 547.2218, "b": 505.76074, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "that you have permission to access is considered a \u201cquery\u201d, and as such a query plan must ", "bbox": {"l": 136.79999, "t": 508.54758, "r": 541.98187, "b": 517.7605599999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "be formulated. In the case of SQL requests, the RCAC portion of the query is combined with ", "bbox": {"l": 136.79999, "t": 520.54739, "r": 546.37335, "b": 529.7603799999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "the user\u2019s query, much like a query referencing a view.", "bbox": {"l": 136.79999, "t": 532.54718, "r": 376.45456, "b": 541.76019, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "For native record level access, this RCAC \u201cquery\u201d is also built and used to test the permission. ", "bbox": {"l": 136.79999, "t": 554.5070000000001, "r": 547.25256, "b": 563.72, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "When a file is opened, the RCAC rule text logic is included, optimized, and run as part of the ", "bbox": {"l": 136.79999, "t": 566.50681, "r": 546.77655, "b": 575.7198, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "native read, write, update, or delete operation. The amount of work (and time) required to ", "bbox": {"l": 136.79999, "t": 578.50661, "r": 532.45898, "b": 587.7196, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "identify the record based on the user\u2019s permission is directly related to the complexity and ", "bbox": {"l": 136.79999, "t": 590.50641, "r": 534.86322, "b": 599.71941, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "depth of the logic that is needed to identify the records that can be returned.", "bbox": {"l": 136.79999, "t": 602.50621, "r": 472.18805, "b": 611.71921, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "A simple example to illustrate this concept is a random read using a keyed logical file (that is, ", "bbox": {"l": 136.79999, "t": 624.52577, "r": 547.16492, "b": 633.7387699999999, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "an index). In its purest form, a random read uses two data access methods: index probe (find ", "bbox": {"l": 136.79999, "t": 636.52557, "r": 547.2276, "b": 645.73857, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "the key and RRN) and table probe (find the record using RRN). If the RCAC rule text specifies ", "bbox": {"l": 136.79999, "t": 648.52538, "r": 547.28448, "b": 657.73837, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "five nested subqueries to determine whether the user has access to the record, this logic ", "bbox": {"l": 136.79999, "t": 660.52518, "r": 531.45306, "b": 669.73818, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "must be added to the path. The subquery processing now becomes part of the original ", "bbox": {"l": 136.8, "t": 672.52499, "r": 521.33472, "b": 681.73799, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "\u201crandom read\u201d request. Instead of two simple I/Os to retrieve the record, there can be a ", "bbox": {"l": 136.8, "t": 684.5248, "r": 523.44214, "b": 693.737801, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "minimum of 12 I/Os to retrieve the same record. These I/Os can be done with a result of \u201cnot ", "bbox": {"l": 136.8, "t": 696.524605, "r": 547.17896, "b": 705.73761, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "found\u201d if the user is not entitled to any of the records.", "bbox": {"l": 136.8, "t": 708.524414, "r": 369.51031, "b": 717.737419, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 370.60284423828125, "t": 754.8819580078125, "r": 517.96918, "b": 763.8931884765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9508994817733765, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 371.28, "t": 755.538002, "r": 517.96918, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 530.1432495117188, "t": 754.2498779296875, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9262385368347168, "cells": [{"id": 1, "text": "105", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.60304260253906, "t": 70.77579498291016, "r": 376.07117, "b": 80.92020416259766, "coord_origin": "TOPLEFT"}, "confidence": 0.9324866533279419, "cells": [{"id": 2, "text": "This example has the following additional implications:", "bbox": {"l": 136.8002, "t": 71.50903000000005, "r": 376.07117, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "list_item", "bbox": {"l": 135.650634765625, "t": 87.60993957519531, "r": 547.27185, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9790242910385132, "cells": [{"id": 3, "text": "GLYPH", "bbox": {"l": 136.8002, "t": 88.63823999999988, "r": 141.7802, "b": 97.41301999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Users must be prevented from explicitly querying the MQT or a view that is created over it. ", "bbox": {"l": 151.20036, "t": 88.48883000000001, "r": 547.27185, "b": 97.70183999999995, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Those two cases bypass the row permission and column mask rules from the underlying ", "bbox": {"l": 151.20036, "t": 100.48865, "r": 544.09833, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "tables.", "bbox": {"l": 151.20036, "t": 112.48845999999992, "r": 180.23874, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 135.53536987304688, "t": 128.6663360595703, "r": 547.31061, "b": 175.40707397460938, "coord_origin": "TOPLEFT"}, "confidence": 0.9846358299255371, "cells": [{"id": 7, "text": "GLYPH", "bbox": {"l": 136.8002, "t": 129.67742999999996, "r": 141.7802, "b": 138.45221000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "If the user writes code to update incrementally an MQT, that code must be run from a user ", "bbox": {"l": 151.20036, "t": 129.52801999999997, "r": 547.31061, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "that has permission to view all of the rows and all columns in their unmasked state. ", "bbox": {"l": 151.20036, "t": 141.52783, "r": 519.6994, "b": 150.74084000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Otherwise, the MQT contents are not complete and queries that implicitly use the MQT ", "bbox": {"l": 151.20036, "t": 153.52765, "r": 536.80664, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "might get wrong results.", "bbox": {"l": 151.20036, "t": 165.52747, "r": 257.17972, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 135.59909057617188, "t": 181.56338500976562, "r": 539.19519, "b": 203.72009000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9713051319122314, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.8002, "t": 182.65668000000005, "r": 141.7802, "b": 191.43146000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "To prevent this, a check constraint can be created to cause an error if masked data was ", "bbox": {"l": 151.20036, "t": 182.50725999999997, "r": 539.19519, "b": 191.72028, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "inserted into the MQT.", "bbox": {"l": 151.20036, "t": 194.50707999999997, "r": 249.24758999999997, "b": 203.72009000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "section_header", "bbox": {"l": 64.1431655883789, "t": 223.16065979003906, "r": 184.48561, "b": 236.4196014404297, "coord_origin": "TOPLEFT"}, "confidence": 0.9630040526390076, "cells": [{"id": 15, "text": "6.5.3", "bbox": {"l": 64.800003, "t": 224.33471999999995, "r": 94.544197, "b": 236.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Query rewrite", "bbox": {"l": 98.262222, "t": 224.33471999999995, "r": 184.48561, "b": 236.32275000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 136.05111694335938, "t": 249.4633331298828, "r": 527.12238, "b": 271.70154, "coord_origin": "TOPLEFT"}, "confidence": 0.9792811870574951, "cells": [{"id": 17, "text": "Query rewrite is a technique that the optimizer can use to change the original request to ", "bbox": {"l": 136.8, "t": 250.48870999999997, "r": 527.12238, "b": 259.70172, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "improve performance.", "bbox": {"l": 136.8, "t": 262.48852999999997, "r": 233.39114, "b": 271.70154, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 135.7935791015625, "t": 283.475830078125, "r": 547.15894, "b": 341.72037, "coord_origin": "TOPLEFT"}, "confidence": 0.9867231249809265, "cells": [{"id": 19, "text": "For example, a query that references Table1 might be rewritten to access an MQT over ", "bbox": {"l": 136.8, "t": 284.50812, "r": 522.46423, "b": 293.7211, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Table1, or it might also be optimized to access only the fields in an index that is defined over ", "bbox": {"l": 136.8, "t": 296.50793, "r": 545.13904, "b": 305.72092, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Table1 and avoid touching Table1. With RCAC, defining these rewrites can still occur, but the ", "bbox": {"l": 136.8, "t": 308.50775, "r": 547.15894, "b": 317.72073, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "MQT or index also must include all columns that are needed by the row permissions or ", "bbox": {"l": 136.79999, "t": 320.50757, "r": 521.83862, "b": 329.72055, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "column masks that are defined on Table1.", "bbox": {"l": 136.79999, "t": 332.50738999999993, "r": 321.46436, "b": 341.72037, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 135.94505310058594, "t": 354.0857238769531, "r": 547.38397, "b": 388.08538818359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9863255620002747, "cells": [{"id": 24, "text": "As part of adding RCAC, the impact to these potentially significant performance optimizations ", "bbox": {"l": 136.79999, "t": 354.52695, "r": 547.38397, "b": 363.73993, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "must be considered. Usage of MQTs or index-only access might be reduced or eliminated by ", "bbox": {"l": 136.79999, "t": 366.52675999999997, "r": 547.37024, "b": 375.73974999999996, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "enabling RCAC.", "bbox": {"l": 136.79999, "t": 378.52658, "r": 207.61162, "b": 387.73956, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "section_header", "bbox": {"l": 64.35859680175781, "t": 415.6083068847656, "r": 436.9425, "b": 431.4162902832031, "coord_origin": "TOPLEFT"}, "confidence": 0.9681130051612854, "cells": [{"id": 27, "text": "6.6", "bbox": {"l": 64.800003, "t": 416.2207, "r": 87.229889, "b": 430.9837, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "RCAC effects on performance and scalability", "bbox": {"l": 91.715851, "t": 416.2207, "r": 436.9425, "b": 430.9837, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 135.86106872558594, "t": 447.5397033691406, "r": 547.32916, "b": 542.3749389648438, "coord_origin": "TOPLEFT"}, "confidence": 0.9881693124771118, "cells": [{"id": 29, "text": "As with any discussion that is related to performance and scalability, nothing is certain or ", "bbox": {"l": 136.8, "t": 448.48874, "r": 530.32556, "b": 457.70172, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "guaranteed. There are always many variables that are involved. First, a good foundation of ", "bbox": {"l": 136.8, "t": 460.48856, "r": 538.07629, "b": 469.70154, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "knowledge and skill is required to appreciate fully what is occurring when a database request ", "bbox": {"l": 136.8, "t": 472.48837, "r": 547.23462, "b": 481.70135, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "is handled within an RCAC enabled environment. Implementing the row permission or column ", "bbox": {"l": 136.79999, "t": 484.54794, "r": 547.32916, "b": 493.76093, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "masks involves the query optimizer and database engine. The process that identifies the rows ", "bbox": {"l": 136.79999, "t": 496.54776, "r": 547.2218, "b": 505.76074, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "that you have permission to access is considered a \u201cquery\u201d, and as such a query plan must ", "bbox": {"l": 136.79999, "t": 508.54758, "r": 541.98187, "b": 517.7605599999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "be formulated. In the case of SQL requests, the RCAC portion of the query is combined with ", "bbox": {"l": 136.79999, "t": 520.54739, "r": 546.37335, "b": 529.7603799999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "the user\u2019s query, much like a query referencing a view.", "bbox": {"l": 136.79999, "t": 532.54718, "r": 376.45456, "b": 541.76019, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 135.9717254638672, "t": 553.3796997070312, "r": 547.25256, "b": 611.71921, "coord_origin": "TOPLEFT"}, "confidence": 0.9866422414779663, "cells": [{"id": 37, "text": "For native record level access, this RCAC \u201cquery\u201d is also built and used to test the permission. ", "bbox": {"l": 136.79999, "t": 554.5070000000001, "r": 547.25256, "b": 563.72, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "When a file is opened, the RCAC rule text logic is included, optimized, and run as part of the ", "bbox": {"l": 136.79999, "t": 566.50681, "r": 546.77655, "b": 575.7198, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "native read, write, update, or delete operation. The amount of work (and time) required to ", "bbox": {"l": 136.79999, "t": 578.50661, "r": 532.45898, "b": 587.7196, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "identify the record based on the user\u2019s permission is directly related to the complexity and ", "bbox": {"l": 136.79999, "t": 590.50641, "r": 534.86322, "b": 599.71941, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "depth of the logic that is needed to identify the records that can be returned.", "bbox": {"l": 136.79999, "t": 602.50621, "r": 472.18805, "b": 611.71921, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 135.7317657470703, "t": 624.3082885742188, "r": 547.28448, "b": 717.9722900390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9876141548156738, "cells": [{"id": 42, "text": "A simple example to illustrate this concept is a random read using a keyed logical file (that is, ", "bbox": {"l": 136.79999, "t": 624.52577, "r": 547.16492, "b": 633.7387699999999, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "an index). In its purest form, a random read uses two data access methods: index probe (find ", "bbox": {"l": 136.79999, "t": 636.52557, "r": 547.2276, "b": 645.73857, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "the key and RRN) and table probe (find the record using RRN). If the RCAC rule text specifies ", "bbox": {"l": 136.79999, "t": 648.52538, "r": 547.28448, "b": 657.73837, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "five nested subqueries to determine whether the user has access to the record, this logic ", "bbox": {"l": 136.79999, "t": 660.52518, "r": 531.45306, "b": 669.73818, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "must be added to the path. The subquery processing now becomes part of the original ", "bbox": {"l": 136.8, "t": 672.52499, "r": 521.33472, "b": 681.73799, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "\u201crandom read\u201d request. Instead of two simple I/Os to retrieve the record, there can be a ", "bbox": {"l": 136.8, "t": 684.5248, "r": 523.44214, "b": 693.737801, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "minimum of 12 I/Os to retrieve the same record. These I/Os can be done with a result of \u201cnot ", "bbox": {"l": 136.8, "t": 696.524605, "r": 547.17896, "b": 705.73761, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "found\u201d if the user is not entitled to any of the records.", "bbox": {"l": 136.8, "t": 708.524414, "r": 369.51031, "b": 717.737419, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 120, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 370.60284423828125, "t": 754.8819580078125, "r": 517.96918, "b": 763.8931884765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9508994817733765, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 371.28, "t": 755.538002, "r": 517.96918, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 120, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.1432495117188, "t": 754.2498779296875, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9262385368347168, "cells": [{"id": 1, "text": "105", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "105"}, {"label": "text", "id": 2, "page_no": 120, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.60304260253906, "t": 70.77579498291016, "r": 376.07117, "b": 80.92020416259766, "coord_origin": "TOPLEFT"}, "confidence": 0.9324866533279419, "cells": [{"id": 2, "text": "This example has the following additional implications:", "bbox": {"l": 136.8002, "t": 71.50903000000005, "r": 376.07117, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}]}, "text": "This example has the following additional implications:"}, {"label": "list_item", "id": 3, "page_no": 120, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 135.650634765625, "t": 87.60993957519531, "r": 547.27185, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9790242910385132, "cells": [{"id": 3, "text": "GLYPH", "bbox": {"l": 136.8002, "t": 88.63823999999988, "r": 141.7802, "b": 97.41301999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Users must be prevented from explicitly querying the MQT or a view that is created over it. ", "bbox": {"l": 151.20036, "t": 88.48883000000001, "r": 547.27185, "b": 97.70183999999995, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Those two cases bypass the row permission and column mask rules from the underlying ", "bbox": {"l": 151.20036, "t": 100.48865, "r": 544.09833, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "tables.", "bbox": {"l": 151.20036, "t": 112.48845999999992, "r": 180.23874, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Users must be prevented from explicitly querying the MQT or a view that is created over it. Those two cases bypass the row permission and column mask rules from the underlying tables."}, {"label": "list_item", "id": 4, "page_no": 120, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.53536987304688, "t": 128.6663360595703, "r": 547.31061, "b": 175.40707397460938, "coord_origin": "TOPLEFT"}, "confidence": 0.9846358299255371, "cells": [{"id": 7, "text": "GLYPH", "bbox": {"l": 136.8002, "t": 129.67742999999996, "r": 141.7802, "b": 138.45221000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "If the user writes code to update incrementally an MQT, that code must be run from a user ", "bbox": {"l": 151.20036, "t": 129.52801999999997, "r": 547.31061, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "that has permission to view all of the rows and all columns in their unmasked state. ", "bbox": {"l": 151.20036, "t": 141.52783, "r": 519.6994, "b": 150.74084000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Otherwise, the MQT contents are not complete and queries that implicitly use the MQT ", "bbox": {"l": 151.20036, "t": 153.52765, "r": 536.80664, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "might get wrong results.", "bbox": {"l": 151.20036, "t": 165.52747, "r": 257.17972, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH If the user writes code to update incrementally an MQT, that code must be run from a user that has permission to view all of the rows and all columns in their unmasked state. Otherwise, the MQT contents are not complete and queries that implicitly use the MQT might get wrong results."}, {"label": "list_item", "id": 5, "page_no": 120, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.59909057617188, "t": 181.56338500976562, "r": 539.19519, "b": 203.72009000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9713051319122314, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.8002, "t": 182.65668000000005, "r": 141.7802, "b": 191.43146000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "To prevent this, a check constraint can be created to cause an error if masked data was ", "bbox": {"l": 151.20036, "t": 182.50725999999997, "r": 539.19519, "b": 191.72028, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "inserted into the MQT.", "bbox": {"l": 151.20036, "t": 194.50707999999997, "r": 249.24758999999997, "b": 203.72009000000003, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH To prevent this, a check constraint can be created to cause an error if masked data was inserted into the MQT."}, {"label": "section_header", "id": 6, "page_no": 120, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 64.1431655883789, "t": 223.16065979003906, "r": 184.48561, "b": 236.4196014404297, "coord_origin": "TOPLEFT"}, "confidence": 0.9630040526390076, "cells": [{"id": 15, "text": "6.5.3", "bbox": {"l": 64.800003, "t": 224.33471999999995, "r": 94.544197, "b": 236.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Query rewrite", "bbox": {"l": 98.262222, "t": 224.33471999999995, "r": 184.48561, "b": 236.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "6.5.3 Query rewrite"}, {"label": "text", "id": 7, "page_no": 120, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.05111694335938, "t": 249.4633331298828, "r": 527.12238, "b": 271.70154, "coord_origin": "TOPLEFT"}, "confidence": 0.9792811870574951, "cells": [{"id": 17, "text": "Query rewrite is a technique that the optimizer can use to change the original request to ", "bbox": {"l": 136.8, "t": 250.48870999999997, "r": 527.12238, "b": 259.70172, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "improve performance.", "bbox": {"l": 136.8, "t": 262.48852999999997, "r": 233.39114, "b": 271.70154, "coord_origin": "TOPLEFT"}}]}, "text": "Query rewrite is a technique that the optimizer can use to change the original request to improve performance."}, {"label": "text", "id": 8, "page_no": 120, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.7935791015625, "t": 283.475830078125, "r": 547.15894, "b": 341.72037, "coord_origin": "TOPLEFT"}, "confidence": 0.9867231249809265, "cells": [{"id": 19, "text": "For example, a query that references Table1 might be rewritten to access an MQT over ", "bbox": {"l": 136.8, "t": 284.50812, "r": 522.46423, "b": 293.7211, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Table1, or it might also be optimized to access only the fields in an index that is defined over ", "bbox": {"l": 136.8, "t": 296.50793, "r": 545.13904, "b": 305.72092, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Table1 and avoid touching Table1. With RCAC, defining these rewrites can still occur, but the ", "bbox": {"l": 136.8, "t": 308.50775, "r": 547.15894, "b": 317.72073, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "MQT or index also must include all columns that are needed by the row permissions or ", "bbox": {"l": 136.79999, "t": 320.50757, "r": 521.83862, "b": 329.72055, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "column masks that are defined on Table1.", "bbox": {"l": 136.79999, "t": 332.50738999999993, "r": 321.46436, "b": 341.72037, "coord_origin": "TOPLEFT"}}]}, "text": "For example, a query that references Table1 might be rewritten to access an MQT over Table1, or it might also be optimized to access only the fields in an index that is defined over Table1 and avoid touching Table1. With RCAC, defining these rewrites can still occur, but the MQT or index also must include all columns that are needed by the row permissions or column masks that are defined on Table1."}, {"label": "text", "id": 9, "page_no": 120, "cluster": {"id": 9, "label": "text", "bbox": {"l": 135.94505310058594, "t": 354.0857238769531, "r": 547.38397, "b": 388.08538818359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9863255620002747, "cells": [{"id": 24, "text": "As part of adding RCAC, the impact to these potentially significant performance optimizations ", "bbox": {"l": 136.79999, "t": 354.52695, "r": 547.38397, "b": 363.73993, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "must be considered. Usage of MQTs or index-only access might be reduced or eliminated by ", "bbox": {"l": 136.79999, "t": 366.52675999999997, "r": 547.37024, "b": 375.73974999999996, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "enabling RCAC.", "bbox": {"l": 136.79999, "t": 378.52658, "r": 207.61162, "b": 387.73956, "coord_origin": "TOPLEFT"}}]}, "text": "As part of adding RCAC, the impact to these potentially significant performance optimizations must be considered. Usage of MQTs or index-only access might be reduced or eliminated by enabling RCAC."}, {"label": "section_header", "id": 10, "page_no": 120, "cluster": {"id": 10, "label": "section_header", "bbox": {"l": 64.35859680175781, "t": 415.6083068847656, "r": 436.9425, "b": 431.4162902832031, "coord_origin": "TOPLEFT"}, "confidence": 0.9681130051612854, "cells": [{"id": 27, "text": "6.6", "bbox": {"l": 64.800003, "t": 416.2207, "r": 87.229889, "b": 430.9837, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "RCAC effects on performance and scalability", "bbox": {"l": 91.715851, "t": 416.2207, "r": 436.9425, "b": 430.9837, "coord_origin": "TOPLEFT"}}]}, "text": "6.6 RCAC effects on performance and scalability"}, {"label": "text", "id": 11, "page_no": 120, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.86106872558594, "t": 447.5397033691406, "r": 547.32916, "b": 542.3749389648438, "coord_origin": "TOPLEFT"}, "confidence": 0.9881693124771118, "cells": [{"id": 29, "text": "As with any discussion that is related to performance and scalability, nothing is certain or ", "bbox": {"l": 136.8, "t": 448.48874, "r": 530.32556, "b": 457.70172, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "guaranteed. There are always many variables that are involved. First, a good foundation of ", "bbox": {"l": 136.8, "t": 460.48856, "r": 538.07629, "b": 469.70154, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "knowledge and skill is required to appreciate fully what is occurring when a database request ", "bbox": {"l": 136.8, "t": 472.48837, "r": 547.23462, "b": 481.70135, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "is handled within an RCAC enabled environment. Implementing the row permission or column ", "bbox": {"l": 136.79999, "t": 484.54794, "r": 547.32916, "b": 493.76093, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "masks involves the query optimizer and database engine. The process that identifies the rows ", "bbox": {"l": 136.79999, "t": 496.54776, "r": 547.2218, "b": 505.76074, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "that you have permission to access is considered a \u201cquery\u201d, and as such a query plan must ", "bbox": {"l": 136.79999, "t": 508.54758, "r": 541.98187, "b": 517.7605599999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "be formulated. In the case of SQL requests, the RCAC portion of the query is combined with ", "bbox": {"l": 136.79999, "t": 520.54739, "r": 546.37335, "b": 529.7603799999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "the user\u2019s query, much like a query referencing a view.", "bbox": {"l": 136.79999, "t": 532.54718, "r": 376.45456, "b": 541.76019, "coord_origin": "TOPLEFT"}}]}, "text": "As with any discussion that is related to performance and scalability, nothing is certain or guaranteed. There are always many variables that are involved. First, a good foundation of knowledge and skill is required to appreciate fully what is occurring when a database request is handled within an RCAC enabled environment. Implementing the row permission or column masks involves the query optimizer and database engine. The process that identifies the rows that you have permission to access is considered a \u201cquery\u201d, and as such a query plan must be formulated. In the case of SQL requests, the RCAC portion of the query is combined with the user\u2019s query, much like a query referencing a view."}, {"label": "text", "id": 12, "page_no": 120, "cluster": {"id": 12, "label": "text", "bbox": {"l": 135.9717254638672, "t": 553.3796997070312, "r": 547.25256, "b": 611.71921, "coord_origin": "TOPLEFT"}, "confidence": 0.9866422414779663, "cells": [{"id": 37, "text": "For native record level access, this RCAC \u201cquery\u201d is also built and used to test the permission. ", "bbox": {"l": 136.79999, "t": 554.5070000000001, "r": 547.25256, "b": 563.72, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "When a file is opened, the RCAC rule text logic is included, optimized, and run as part of the ", "bbox": {"l": 136.79999, "t": 566.50681, "r": 546.77655, "b": 575.7198, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "native read, write, update, or delete operation. The amount of work (and time) required to ", "bbox": {"l": 136.79999, "t": 578.50661, "r": 532.45898, "b": 587.7196, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "identify the record based on the user\u2019s permission is directly related to the complexity and ", "bbox": {"l": 136.79999, "t": 590.50641, "r": 534.86322, "b": 599.71941, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "depth of the logic that is needed to identify the records that can be returned.", "bbox": {"l": 136.79999, "t": 602.50621, "r": 472.18805, "b": 611.71921, "coord_origin": "TOPLEFT"}}]}, "text": "For native record level access, this RCAC \u201cquery\u201d is also built and used to test the permission. When a file is opened, the RCAC rule text logic is included, optimized, and run as part of the native read, write, update, or delete operation. The amount of work (and time) required to identify the record based on the user\u2019s permission is directly related to the complexity and depth of the logic that is needed to identify the records that can be returned."}, {"label": "text", "id": 13, "page_no": 120, "cluster": {"id": 13, "label": "text", "bbox": {"l": 135.7317657470703, "t": 624.3082885742188, "r": 547.28448, "b": 717.9722900390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9876141548156738, "cells": [{"id": 42, "text": "A simple example to illustrate this concept is a random read using a keyed logical file (that is, ", "bbox": {"l": 136.79999, "t": 624.52577, "r": 547.16492, "b": 633.7387699999999, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "an index). In its purest form, a random read uses two data access methods: index probe (find ", "bbox": {"l": 136.79999, "t": 636.52557, "r": 547.2276, "b": 645.73857, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "the key and RRN) and table probe (find the record using RRN). If the RCAC rule text specifies ", "bbox": {"l": 136.79999, "t": 648.52538, "r": 547.28448, "b": 657.73837, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "five nested subqueries to determine whether the user has access to the record, this logic ", "bbox": {"l": 136.79999, "t": 660.52518, "r": 531.45306, "b": 669.73818, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "must be added to the path. The subquery processing now becomes part of the original ", "bbox": {"l": 136.8, "t": 672.52499, "r": 521.33472, "b": 681.73799, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "\u201crandom read\u201d request. Instead of two simple I/Os to retrieve the record, there can be a ", "bbox": {"l": 136.8, "t": 684.5248, "r": 523.44214, "b": 693.737801, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "minimum of 12 I/Os to retrieve the same record. These I/Os can be done with a result of \u201cnot ", "bbox": {"l": 136.8, "t": 696.524605, "r": 547.17896, "b": 705.73761, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "found\u201d if the user is not entitled to any of the records.", "bbox": {"l": 136.8, "t": 708.524414, "r": 369.51031, "b": 717.737419, "coord_origin": "TOPLEFT"}}]}, "text": "A simple example to illustrate this concept is a random read using a keyed logical file (that is, an index). In its purest form, a random read uses two data access methods: index probe (find the key and RRN) and table probe (find the record using RRN). If the RCAC rule text specifies five nested subqueries to determine whether the user has access to the record, this logic must be added to the path. The subquery processing now becomes part of the original \u201crandom read\u201d request. Instead of two simple I/Os to retrieve the record, there can be a minimum of 12 I/Os to retrieve the same record. These I/Os can be done with a result of \u201cnot found\u201d if the user is not entitled to any of the records."}], "body": [{"label": "text", "id": 2, "page_no": 120, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.60304260253906, "t": 70.77579498291016, "r": 376.07117, "b": 80.92020416259766, "coord_origin": "TOPLEFT"}, "confidence": 0.9324866533279419, "cells": [{"id": 2, "text": "This example has the following additional implications:", "bbox": {"l": 136.8002, "t": 71.50903000000005, "r": 376.07117, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}]}, "text": "This example has the following additional implications:"}, {"label": "list_item", "id": 3, "page_no": 120, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 135.650634765625, "t": 87.60993957519531, "r": 547.27185, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9790242910385132, "cells": [{"id": 3, "text": "GLYPH", "bbox": {"l": 136.8002, "t": 88.63823999999988, "r": 141.7802, "b": 97.41301999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Users must be prevented from explicitly querying the MQT or a view that is created over it. ", "bbox": {"l": 151.20036, "t": 88.48883000000001, "r": 547.27185, "b": 97.70183999999995, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Those two cases bypass the row permission and column mask rules from the underlying ", "bbox": {"l": 151.20036, "t": 100.48865, "r": 544.09833, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "tables.", "bbox": {"l": 151.20036, "t": 112.48845999999992, "r": 180.23874, "b": 121.70147999999995, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Users must be prevented from explicitly querying the MQT or a view that is created over it. Those two cases bypass the row permission and column mask rules from the underlying tables."}, {"label": "list_item", "id": 4, "page_no": 120, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.53536987304688, "t": 128.6663360595703, "r": 547.31061, "b": 175.40707397460938, "coord_origin": "TOPLEFT"}, "confidence": 0.9846358299255371, "cells": [{"id": 7, "text": "GLYPH", "bbox": {"l": 136.8002, "t": 129.67742999999996, "r": 141.7802, "b": 138.45221000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "If the user writes code to update incrementally an MQT, that code must be run from a user ", "bbox": {"l": 151.20036, "t": 129.52801999999997, "r": 547.31061, "b": 138.74103000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "that has permission to view all of the rows and all columns in their unmasked state. ", "bbox": {"l": 151.20036, "t": 141.52783, "r": 519.6994, "b": 150.74084000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Otherwise, the MQT contents are not complete and queries that implicitly use the MQT ", "bbox": {"l": 151.20036, "t": 153.52765, "r": 536.80664, "b": 162.74066000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "might get wrong results.", "bbox": {"l": 151.20036, "t": 165.52747, "r": 257.17972, "b": 174.74048000000005, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH If the user writes code to update incrementally an MQT, that code must be run from a user that has permission to view all of the rows and all columns in their unmasked state. Otherwise, the MQT contents are not complete and queries that implicitly use the MQT might get wrong results."}, {"label": "list_item", "id": 5, "page_no": 120, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.59909057617188, "t": 181.56338500976562, "r": 539.19519, "b": 203.72009000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9713051319122314, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.8002, "t": 182.65668000000005, "r": 141.7802, "b": 191.43146000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "To prevent this, a check constraint can be created to cause an error if masked data was ", "bbox": {"l": 151.20036, "t": 182.50725999999997, "r": 539.19519, "b": 191.72028, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "inserted into the MQT.", "bbox": {"l": 151.20036, "t": 194.50707999999997, "r": 249.24758999999997, "b": 203.72009000000003, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH To prevent this, a check constraint can be created to cause an error if masked data was inserted into the MQT."}, {"label": "section_header", "id": 6, "page_no": 120, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 64.1431655883789, "t": 223.16065979003906, "r": 184.48561, "b": 236.4196014404297, "coord_origin": "TOPLEFT"}, "confidence": 0.9630040526390076, "cells": [{"id": 15, "text": "6.5.3", "bbox": {"l": 64.800003, "t": 224.33471999999995, "r": 94.544197, "b": 236.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Query rewrite", "bbox": {"l": 98.262222, "t": 224.33471999999995, "r": 184.48561, "b": 236.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "6.5.3 Query rewrite"}, {"label": "text", "id": 7, "page_no": 120, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.05111694335938, "t": 249.4633331298828, "r": 527.12238, "b": 271.70154, "coord_origin": "TOPLEFT"}, "confidence": 0.9792811870574951, "cells": [{"id": 17, "text": "Query rewrite is a technique that the optimizer can use to change the original request to ", "bbox": {"l": 136.8, "t": 250.48870999999997, "r": 527.12238, "b": 259.70172, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "improve performance.", "bbox": {"l": 136.8, "t": 262.48852999999997, "r": 233.39114, "b": 271.70154, "coord_origin": "TOPLEFT"}}]}, "text": "Query rewrite is a technique that the optimizer can use to change the original request to improve performance."}, {"label": "text", "id": 8, "page_no": 120, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.7935791015625, "t": 283.475830078125, "r": 547.15894, "b": 341.72037, "coord_origin": "TOPLEFT"}, "confidence": 0.9867231249809265, "cells": [{"id": 19, "text": "For example, a query that references Table1 might be rewritten to access an MQT over ", "bbox": {"l": 136.8, "t": 284.50812, "r": 522.46423, "b": 293.7211, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Table1, or it might also be optimized to access only the fields in an index that is defined over ", "bbox": {"l": 136.8, "t": 296.50793, "r": 545.13904, "b": 305.72092, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Table1 and avoid touching Table1. With RCAC, defining these rewrites can still occur, but the ", "bbox": {"l": 136.8, "t": 308.50775, "r": 547.15894, "b": 317.72073, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "MQT or index also must include all columns that are needed by the row permissions or ", "bbox": {"l": 136.79999, "t": 320.50757, "r": 521.83862, "b": 329.72055, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "column masks that are defined on Table1.", "bbox": {"l": 136.79999, "t": 332.50738999999993, "r": 321.46436, "b": 341.72037, "coord_origin": "TOPLEFT"}}]}, "text": "For example, a query that references Table1 might be rewritten to access an MQT over Table1, or it might also be optimized to access only the fields in an index that is defined over Table1 and avoid touching Table1. With RCAC, defining these rewrites can still occur, but the MQT or index also must include all columns that are needed by the row permissions or column masks that are defined on Table1."}, {"label": "text", "id": 9, "page_no": 120, "cluster": {"id": 9, "label": "text", "bbox": {"l": 135.94505310058594, "t": 354.0857238769531, "r": 547.38397, "b": 388.08538818359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9863255620002747, "cells": [{"id": 24, "text": "As part of adding RCAC, the impact to these potentially significant performance optimizations ", "bbox": {"l": 136.79999, "t": 354.52695, "r": 547.38397, "b": 363.73993, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "must be considered. Usage of MQTs or index-only access might be reduced or eliminated by ", "bbox": {"l": 136.79999, "t": 366.52675999999997, "r": 547.37024, "b": 375.73974999999996, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "enabling RCAC.", "bbox": {"l": 136.79999, "t": 378.52658, "r": 207.61162, "b": 387.73956, "coord_origin": "TOPLEFT"}}]}, "text": "As part of adding RCAC, the impact to these potentially significant performance optimizations must be considered. Usage of MQTs or index-only access might be reduced or eliminated by enabling RCAC."}, {"label": "section_header", "id": 10, "page_no": 120, "cluster": {"id": 10, "label": "section_header", "bbox": {"l": 64.35859680175781, "t": 415.6083068847656, "r": 436.9425, "b": 431.4162902832031, "coord_origin": "TOPLEFT"}, "confidence": 0.9681130051612854, "cells": [{"id": 27, "text": "6.6", "bbox": {"l": 64.800003, "t": 416.2207, "r": 87.229889, "b": 430.9837, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "RCAC effects on performance and scalability", "bbox": {"l": 91.715851, "t": 416.2207, "r": 436.9425, "b": 430.9837, "coord_origin": "TOPLEFT"}}]}, "text": "6.6 RCAC effects on performance and scalability"}, {"label": "text", "id": 11, "page_no": 120, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.86106872558594, "t": 447.5397033691406, "r": 547.32916, "b": 542.3749389648438, "coord_origin": "TOPLEFT"}, "confidence": 0.9881693124771118, "cells": [{"id": 29, "text": "As with any discussion that is related to performance and scalability, nothing is certain or ", "bbox": {"l": 136.8, "t": 448.48874, "r": 530.32556, "b": 457.70172, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "guaranteed. There are always many variables that are involved. First, a good foundation of ", "bbox": {"l": 136.8, "t": 460.48856, "r": 538.07629, "b": 469.70154, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "knowledge and skill is required to appreciate fully what is occurring when a database request ", "bbox": {"l": 136.8, "t": 472.48837, "r": 547.23462, "b": 481.70135, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "is handled within an RCAC enabled environment. Implementing the row permission or column ", "bbox": {"l": 136.79999, "t": 484.54794, "r": 547.32916, "b": 493.76093, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "masks involves the query optimizer and database engine. The process that identifies the rows ", "bbox": {"l": 136.79999, "t": 496.54776, "r": 547.2218, "b": 505.76074, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "that you have permission to access is considered a \u201cquery\u201d, and as such a query plan must ", "bbox": {"l": 136.79999, "t": 508.54758, "r": 541.98187, "b": 517.7605599999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "be formulated. In the case of SQL requests, the RCAC portion of the query is combined with ", "bbox": {"l": 136.79999, "t": 520.54739, "r": 546.37335, "b": 529.7603799999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "the user\u2019s query, much like a query referencing a view.", "bbox": {"l": 136.79999, "t": 532.54718, "r": 376.45456, "b": 541.76019, "coord_origin": "TOPLEFT"}}]}, "text": "As with any discussion that is related to performance and scalability, nothing is certain or guaranteed. There are always many variables that are involved. First, a good foundation of knowledge and skill is required to appreciate fully what is occurring when a database request is handled within an RCAC enabled environment. Implementing the row permission or column masks involves the query optimizer and database engine. The process that identifies the rows that you have permission to access is considered a \u201cquery\u201d, and as such a query plan must be formulated. In the case of SQL requests, the RCAC portion of the query is combined with the user\u2019s query, much like a query referencing a view."}, {"label": "text", "id": 12, "page_no": 120, "cluster": {"id": 12, "label": "text", "bbox": {"l": 135.9717254638672, "t": 553.3796997070312, "r": 547.25256, "b": 611.71921, "coord_origin": "TOPLEFT"}, "confidence": 0.9866422414779663, "cells": [{"id": 37, "text": "For native record level access, this RCAC \u201cquery\u201d is also built and used to test the permission. ", "bbox": {"l": 136.79999, "t": 554.5070000000001, "r": 547.25256, "b": 563.72, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "When a file is opened, the RCAC rule text logic is included, optimized, and run as part of the ", "bbox": {"l": 136.79999, "t": 566.50681, "r": 546.77655, "b": 575.7198, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "native read, write, update, or delete operation. The amount of work (and time) required to ", "bbox": {"l": 136.79999, "t": 578.50661, "r": 532.45898, "b": 587.7196, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "identify the record based on the user\u2019s permission is directly related to the complexity and ", "bbox": {"l": 136.79999, "t": 590.50641, "r": 534.86322, "b": 599.71941, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "depth of the logic that is needed to identify the records that can be returned.", "bbox": {"l": 136.79999, "t": 602.50621, "r": 472.18805, "b": 611.71921, "coord_origin": "TOPLEFT"}}]}, "text": "For native record level access, this RCAC \u201cquery\u201d is also built and used to test the permission. When a file is opened, the RCAC rule text logic is included, optimized, and run as part of the native read, write, update, or delete operation. The amount of work (and time) required to identify the record based on the user\u2019s permission is directly related to the complexity and depth of the logic that is needed to identify the records that can be returned."}, {"label": "text", "id": 13, "page_no": 120, "cluster": {"id": 13, "label": "text", "bbox": {"l": 135.7317657470703, "t": 624.3082885742188, "r": 547.28448, "b": 717.9722900390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9876141548156738, "cells": [{"id": 42, "text": "A simple example to illustrate this concept is a random read using a keyed logical file (that is, ", "bbox": {"l": 136.79999, "t": 624.52577, "r": 547.16492, "b": 633.7387699999999, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "an index). In its purest form, a random read uses two data access methods: index probe (find ", "bbox": {"l": 136.79999, "t": 636.52557, "r": 547.2276, "b": 645.73857, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "the key and RRN) and table probe (find the record using RRN). If the RCAC rule text specifies ", "bbox": {"l": 136.79999, "t": 648.52538, "r": 547.28448, "b": 657.73837, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "five nested subqueries to determine whether the user has access to the record, this logic ", "bbox": {"l": 136.79999, "t": 660.52518, "r": 531.45306, "b": 669.73818, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "must be added to the path. The subquery processing now becomes part of the original ", "bbox": {"l": 136.8, "t": 672.52499, "r": 521.33472, "b": 681.73799, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "\u201crandom read\u201d request. Instead of two simple I/Os to retrieve the record, there can be a ", "bbox": {"l": 136.8, "t": 684.5248, "r": 523.44214, "b": 693.737801, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "minimum of 12 I/Os to retrieve the same record. These I/Os can be done with a result of \u201cnot ", "bbox": {"l": 136.8, "t": 696.524605, "r": 547.17896, "b": 705.73761, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "found\u201d if the user is not entitled to any of the records.", "bbox": {"l": 136.8, "t": 708.524414, "r": 369.51031, "b": 717.737419, "coord_origin": "TOPLEFT"}}]}, "text": "A simple example to illustrate this concept is a random read using a keyed logical file (that is, an index). In its purest form, a random read uses two data access methods: index probe (find the key and RRN) and table probe (find the record using RRN). If the RCAC rule text specifies five nested subqueries to determine whether the user has access to the record, this logic must be added to the path. The subquery processing now becomes part of the original \u201crandom read\u201d request. Instead of two simple I/Os to retrieve the record, there can be a minimum of 12 I/Os to retrieve the same record. These I/Os can be done with a result of \u201cnot found\u201d if the user is not entitled to any of the records."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 120, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 370.60284423828125, "t": 754.8819580078125, "r": 517.96918, "b": 763.8931884765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9508994817733765, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 371.28, "t": 755.538002, "r": 517.96918, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 120, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.1432495117188, "t": 754.2498779296875, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9262385368347168, "cells": [{"id": 1, "text": "105", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "105"}]}}, {"page_no": 121, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "106 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "For programs that access records sequentially, in or out of key order, the added RCAC logic ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 543.5155, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "can have a profound effect on the performance and scalability. Reading the \u201cnext record\u201d in ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 539.91107, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "order is no longer a simple matter of positioning to the next available key, as shown in ", "bbox": {"l": 136.80002, "t": 95.50829999999996, "r": 516.06189, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Figure 6-23.", "bbox": {"l": 136.80002, "t": 107.50811999999996, "r": 190.73239, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Figure 6-23 Native record access with no RCAC", "bbox": {"l": 136.8, "t": 404.77798, "r": 332.58868, "b": 413.103, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Native RLA Request", "bbox": {"l": 179.1436, "t": 155.32299999999998, "r": 278.48407, "b": 165.81525, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "RRN", "bbox": {"l": 355.00479, "t": 142.72247000000004, "r": 371.4198, "b": 150.59167000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Record Data", "bbox": {"l": 412.7984, "t": 142.72247000000004, "r": 459.23407, "b": 150.59167000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "1", "bbox": {"l": 375.93451, "t": 157.64544999999998, "r": 380.59537, "b": 165.50543000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "123", "bbox": {"l": 387.94699, "t": 157.4248, "r": 404.49164, "b": 166.19494999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CAIN", "bbox": {"l": 404.49438, "t": 157.96722, "r": 426.46198, "b": 166.24090999999999, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "aaaa456", "bbox": {"l": 437.34372, "t": 157.4248, "r": 475.91571, "b": 166.19494999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "GLYPH", "bbox": {"l": 323.6568, "t": 153.94312000000002, "r": 333.83542, "b": 171.4389, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "2", "bbox": {"l": 375.93411, "t": 172.53827, "r": 380.59497, "b": 180.39824999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "123", "bbox": {"l": 387.94659, "t": 172.31763, "r": 404.49124, "b": 181.08776999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "CAIN", "bbox": {"l": 404.49399, "t": 172.86005, "r": 426.46158, "b": 181.13373, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "bbbb456", "bbox": {"l": 437.34332000000006, "t": 172.31763, "r": 475.91531000000003, "b": 181.08776999999998, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "3", "bbox": {"l": 375.93408, "t": 187.46130000000005, "r": 380.59494, "b": 195.32128999999998, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "123", "bbox": {"l": 387.94656, "t": 187.24066000000005, "r": 404.49121, "b": 196.01080000000002, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "CAIN", "bbox": {"l": 404.49396, "t": 187.78308000000004, "r": 426.46155, "b": 196.05676000000005, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "cccc456", "bbox": {"l": 437.3432900000001, "t": 187.24066000000005, "r": 475.91528000000005, "b": 196.01080000000002, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "4", "bbox": {"l": 375.93411, "t": 202.38477, "r": 380.59497, "b": 210.24474999999995, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "123", "bbox": {"l": 387.9462, "t": 202.16405999999995, "r": 404.49084, "b": 210.93420000000003, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "CAIN", "bbox": {"l": 404.4935, "t": 202.70648000000006, "r": 426.46109, "b": 210.98015999999996, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "dddd456", "bbox": {"l": 437.34299, "t": 202.16405999999995, "r": 475.91498000000007, "b": 210.93420000000003, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "NR", "bbox": {"l": 230.0419, "t": 204.42553999999996, "r": 280.56635, "b": 220.16387999999995, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "C", "bbox": {"l": 266.42206, "t": 204.42553999999996, "r": 290.17664, "b": 220.16387999999995, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "A", "bbox": {"l": 276.16107, "t": 204.42553999999996, "r": 301.33136, "b": 220.16387999999995, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "5", "bbox": {"l": 375.93411, "t": 217.27722000000006, "r": 380.59497, "b": 225.13720999999998, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "123", "bbox": {"l": 387.94659, "t": 217.05658000000005, "r": 404.49124, "b": 225.82672000000002, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CAIN", "bbox": {"l": 404.49399, "t": 217.59900000000005, "r": 426.46158, "b": 225.87267999999995, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "eeee456", "bbox": {"l": 437.34332000000006, "t": 217.05658000000005, "r": 475.91531000000003, "b": 225.82672000000002, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "\u0085", "bbox": {"l": 374.24902, "t": 232.20025999999996, "r": 380.59219, "b": 240.06024000000002, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "\u0085", "bbox": {"l": 387.94659, "t": 231.97960999999998, "r": 393.4624, "b": 240.74976000000004, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "No RCAC", "bbox": {"l": 230.0419, "t": 204.42553999999996, "r": 296.65891, "b": 220.16387999999995, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "\u0085", "bbox": {"l": 374.24869, "t": 247.12378, "r": 380.59186, "b": 254.98375999999996, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "\u0085", "bbox": {"l": 387.94626, "t": 246.90314, "r": 393.46207, "b": 255.67327999999998, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "\u0085", "bbox": {"l": 374.24869, "t": 262.01648, "r": 380.59186, "b": 269.87645999999995, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "\u0085", "bbox": {"l": 387.94626, "t": 261.79584, "r": 393.46207, "b": 270.56597999999997, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "\u0085", "bbox": {"l": 374.24869, "t": 276.93944999999997, "r": 380.59186, "b": 284.7995, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "\u0085", "bbox": {"l": 387.94626, "t": 276.71880999999996, "r": 393.46207, "b": 285.48895, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "\u0085", "bbox": {"l": 374.24869, "t": 291.8627599999999, "r": 380.59186, "b": 299.72278, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "\u0085", "bbox": {"l": 387.94626, "t": 291.64212, "r": 393.46207, "b": 300.41223, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "\u0085", "bbox": {"l": 374.24869, "t": 306.7554, "r": 380.59186, "b": 314.61542, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "\u0085", "bbox": {"l": 387.94626, "t": 306.53476, "r": 393.46207, "b": 315.30487, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "1000001", "bbox": {"l": 347.98749, "t": 321.67856, "r": 380.60059, "b": 329.53857, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "123", "bbox": {"l": 387.9462, "t": 321.45801, "r": 404.49084, "b": 330.22812, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "CAIN", "bbox": {"l": 404.4935, "t": 322.0004, "r": 426.46109, "b": 330.27408, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "vvvv456", "bbox": {"l": 437.34299, "t": 321.45801, "r": 475.91498000000007, "b": 330.22812, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "1000002", "bbox": {"l": 347.98749, "t": 336.60184, "r": 380.60059, "b": 344.46185, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "123", "bbox": {"l": 387.94672, "t": 336.3812, "r": 404.49136, "b": 345.15131, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "CAIN", "bbox": {"l": 404.49411, "t": 336.9235800000001, "r": 426.4617, "b": 345.19727, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "wwww456", "bbox": {"l": 437.34344, "t": 336.3812, "r": 475.91544, "b": 345.15131, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "1000003", "bbox": {"l": 347.98749, "t": 351.49448, "r": 380.60059, "b": 359.35449, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "123", "bbox": {"l": 387.94672, "t": 351.27383, "r": 404.49136, "b": 360.04395, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "CAIN", "bbox": {"l": 404.49411, "t": 351.81621999999993, "r": 426.4617, "b": 360.0899, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "xxxx456", "bbox": {"l": 437.34344, "t": 351.27383, "r": 475.91544, "b": 360.04395, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "1000004", "bbox": {"l": 347.98749, "t": 366.41766000000007, "r": 380.60059, "b": 374.27768, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "123", "bbox": {"l": 387.94672, "t": 366.19701999999995, "r": 404.49136, "b": 374.96713, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "BEDOYA", "bbox": {"l": 404.49411, "t": 366.73941, "r": 437.42895999999996, "b": 375.01309000000003, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "yyyy456", "bbox": {"l": 437.46664, "t": 366.19701999999995, "r": 475.89061999999996, "b": 374.96713, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "1000005", "bbox": {"l": 347.9884, "t": 381.34064000000006, "r": 380.6015, "b": 389.20064999999994, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "123", "bbox": {"l": 387.94763, "t": 381.11999999999995, "r": 404.49228, "b": 389.89011, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "BEDOYA", "bbox": {"l": 404.49503, "t": 381.66238, "r": 437.42987, "b": 389.93607000000003, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "zzzz456", "bbox": {"l": 437.46756000000005, "t": 381.11999999999995, "r": 475.89154, "b": 389.89011, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.41461944580078, "t": 754.2803344726562, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9247628450393677, "cells": [{"id": 0, "text": "106 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 98.62214660644531, "t": 754.58251953125, "r": 339.8680725097656, "b": 764.0300903320312, "coord_origin": "TOPLEFT"}, "confidence": 0.9530835747718811, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.8849639892578, "t": 70.34988403320312, "r": 543.5155, "b": 116.99058532714844, "coord_origin": "TOPLEFT"}, "confidence": 0.9810242652893066, "cells": [{"id": 2, "text": "For programs that access records sequentially, in or out of key order, the added RCAC logic ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 543.5155, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "can have a profound effect on the performance and scalability. Reading the \u201cnext record\u201d in ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 539.91107, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "order is no longer a simple matter of positioning to the next available key, as shown in ", "bbox": {"l": 136.80002, "t": 95.50829999999996, "r": 516.06189, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Figure 6-23.", "bbox": {"l": 136.80002, "t": 107.50811999999996, "r": 190.73239, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.106201171875, "t": 403.9275817871094, "r": 333.33013916015625, "b": 413.6200256347656, "coord_origin": "TOPLEFT"}, "confidence": 0.9444288611412048, "cells": [{"id": 6, "text": "Figure 6-23 Native record access with no RCAC", "bbox": {"l": 136.8, "t": 404.77798, "r": 332.58868, "b": 413.103, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "picture", "bbox": {"l": 136.19158935546875, "t": 131.57861328125, "r": 506.083740234375, "b": 400.9339294433594, "coord_origin": "TOPLEFT"}, "confidence": 0.9722803235054016, "cells": [{"id": 7, "text": "Native RLA Request", "bbox": {"l": 179.1436, "t": 155.32299999999998, "r": 278.48407, "b": 165.81525, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "RRN", "bbox": {"l": 355.00479, "t": 142.72247000000004, "r": 371.4198, "b": 150.59167000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Record Data", "bbox": {"l": 412.7984, "t": 142.72247000000004, "r": 459.23407, "b": 150.59167000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "1", "bbox": {"l": 375.93451, "t": 157.64544999999998, "r": 380.59537, "b": 165.50543000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "123", "bbox": {"l": 387.94699, "t": 157.4248, "r": 404.49164, "b": 166.19494999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CAIN", "bbox": {"l": 404.49438, "t": 157.96722, "r": 426.46198, "b": 166.24090999999999, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "aaaa456", "bbox": {"l": 437.34372, "t": 157.4248, "r": 475.91571, "b": 166.19494999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "GLYPH", "bbox": {"l": 323.6568, "t": 153.94312000000002, "r": 333.83542, "b": 171.4389, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "2", "bbox": {"l": 375.93411, "t": 172.53827, "r": 380.59497, "b": 180.39824999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "123", "bbox": {"l": 387.94659, "t": 172.31763, "r": 404.49124, "b": 181.08776999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "CAIN", "bbox": {"l": 404.49399, "t": 172.86005, "r": 426.46158, "b": 181.13373, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "bbbb456", "bbox": {"l": 437.34332000000006, "t": 172.31763, "r": 475.91531000000003, "b": 181.08776999999998, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "3", "bbox": {"l": 375.93408, "t": 187.46130000000005, "r": 380.59494, "b": 195.32128999999998, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "123", "bbox": {"l": 387.94656, "t": 187.24066000000005, "r": 404.49121, "b": 196.01080000000002, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "CAIN", "bbox": {"l": 404.49396, "t": 187.78308000000004, "r": 426.46155, "b": 196.05676000000005, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "cccc456", "bbox": {"l": 437.3432900000001, "t": 187.24066000000005, "r": 475.91528000000005, "b": 196.01080000000002, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "4", "bbox": {"l": 375.93411, "t": 202.38477, "r": 380.59497, "b": 210.24474999999995, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "123", "bbox": {"l": 387.9462, "t": 202.16405999999995, "r": 404.49084, "b": 210.93420000000003, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "CAIN", "bbox": {"l": 404.4935, "t": 202.70648000000006, "r": 426.46109, "b": 210.98015999999996, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "dddd456", "bbox": {"l": 437.34299, "t": 202.16405999999995, "r": 475.91498000000007, "b": 210.93420000000003, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "NR", "bbox": {"l": 230.0419, "t": 204.42553999999996, "r": 280.56635, "b": 220.16387999999995, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "C", "bbox": {"l": 266.42206, "t": 204.42553999999996, "r": 290.17664, "b": 220.16387999999995, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "A", "bbox": {"l": 276.16107, "t": 204.42553999999996, "r": 301.33136, "b": 220.16387999999995, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "5", "bbox": {"l": 375.93411, "t": 217.27722000000006, "r": 380.59497, "b": 225.13720999999998, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "123", "bbox": {"l": 387.94659, "t": 217.05658000000005, "r": 404.49124, "b": 225.82672000000002, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CAIN", "bbox": {"l": 404.49399, "t": 217.59900000000005, "r": 426.46158, "b": 225.87267999999995, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "eeee456", "bbox": {"l": 437.34332000000006, "t": 217.05658000000005, "r": 475.91531000000003, "b": 225.82672000000002, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "\u0085", "bbox": {"l": 374.24902, "t": 232.20025999999996, "r": 380.59219, "b": 240.06024000000002, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "\u0085", "bbox": {"l": 387.94659, "t": 231.97960999999998, "r": 393.4624, "b": 240.74976000000004, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "No RCAC", "bbox": {"l": 230.0419, "t": 204.42553999999996, "r": 296.65891, "b": 220.16387999999995, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "\u0085", "bbox": {"l": 374.24869, "t": 247.12378, "r": 380.59186, "b": 254.98375999999996, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "\u0085", "bbox": {"l": 387.94626, "t": 246.90314, "r": 393.46207, "b": 255.67327999999998, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "\u0085", "bbox": {"l": 374.24869, "t": 262.01648, "r": 380.59186, "b": 269.87645999999995, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "\u0085", "bbox": {"l": 387.94626, "t": 261.79584, "r": 393.46207, "b": 270.56597999999997, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "\u0085", "bbox": {"l": 374.24869, "t": 276.93944999999997, "r": 380.59186, "b": 284.7995, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "\u0085", "bbox": {"l": 387.94626, "t": 276.71880999999996, "r": 393.46207, "b": 285.48895, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "\u0085", "bbox": {"l": 374.24869, "t": 291.8627599999999, "r": 380.59186, "b": 299.72278, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "\u0085", "bbox": {"l": 387.94626, "t": 291.64212, "r": 393.46207, "b": 300.41223, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "\u0085", "bbox": {"l": 374.24869, "t": 306.7554, "r": 380.59186, "b": 314.61542, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "\u0085", "bbox": {"l": 387.94626, "t": 306.53476, "r": 393.46207, "b": 315.30487, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "1000001", "bbox": {"l": 347.98749, "t": 321.67856, "r": 380.60059, "b": 329.53857, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "123", "bbox": {"l": 387.9462, "t": 321.45801, "r": 404.49084, "b": 330.22812, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "CAIN", "bbox": {"l": 404.4935, "t": 322.0004, "r": 426.46109, "b": 330.27408, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "vvvv456", "bbox": {"l": 437.34299, "t": 321.45801, "r": 475.91498000000007, "b": 330.22812, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "1000002", "bbox": {"l": 347.98749, "t": 336.60184, "r": 380.60059, "b": 344.46185, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "123", "bbox": {"l": 387.94672, "t": 336.3812, "r": 404.49136, "b": 345.15131, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "CAIN", "bbox": {"l": 404.49411, "t": 336.9235800000001, "r": 426.4617, "b": 345.19727, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "wwww456", "bbox": {"l": 437.34344, "t": 336.3812, "r": 475.91544, "b": 345.15131, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "1000003", "bbox": {"l": 347.98749, "t": 351.49448, "r": 380.60059, "b": 359.35449, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "123", "bbox": {"l": 387.94672, "t": 351.27383, "r": 404.49136, "b": 360.04395, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "CAIN", "bbox": {"l": 404.49411, "t": 351.81621999999993, "r": 426.4617, "b": 360.0899, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "xxxx456", "bbox": {"l": 437.34344, "t": 351.27383, "r": 475.91544, "b": 360.04395, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "1000004", "bbox": {"l": 347.98749, "t": 366.41766000000007, "r": 380.60059, "b": 374.27768, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "123", "bbox": {"l": 387.94672, "t": 366.19701999999995, "r": 404.49136, "b": 374.96713, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "BEDOYA", "bbox": {"l": 404.49411, "t": 366.73941, "r": 437.42895999999996, "b": 375.01309000000003, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "yyyy456", "bbox": {"l": 437.46664, "t": 366.19701999999995, "r": 475.89061999999996, "b": 374.96713, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "1000005", "bbox": {"l": 347.9884, "t": 381.34064000000006, "r": 380.6015, "b": 389.20064999999994, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "123", "bbox": {"l": 387.94763, "t": 381.11999999999995, "r": 404.49228, "b": 389.89011, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "BEDOYA", "bbox": {"l": 404.49503, "t": 381.66238, "r": 437.42987, "b": 389.93607000000003, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "zzzz456", "bbox": {"l": 437.46756000000005, "t": 381.11999999999995, "r": 475.89154, "b": 389.89011, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 121, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.41461944580078, "t": 754.2803344726562, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9247628450393677, "cells": [{"id": 0, "text": "106 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "106"}, {"label": "page_footer", "id": 1, "page_no": 121, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.62214660644531, "t": 754.58251953125, "r": 339.8680725097656, "b": 764.0300903320312, "coord_origin": "TOPLEFT"}, "confidence": 0.9530835747718811, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 2, "page_no": 121, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.8849639892578, "t": 70.34988403320312, "r": 543.5155, "b": 116.99058532714844, "coord_origin": "TOPLEFT"}, "confidence": 0.9810242652893066, "cells": [{"id": 2, "text": "For programs that access records sequentially, in or out of key order, the added RCAC logic ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 543.5155, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "can have a profound effect on the performance and scalability. Reading the \u201cnext record\u201d in ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 539.91107, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "order is no longer a simple matter of positioning to the next available key, as shown in ", "bbox": {"l": 136.80002, "t": 95.50829999999996, "r": 516.06189, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Figure 6-23.", "bbox": {"l": 136.80002, "t": 107.50811999999996, "r": 190.73239, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "For programs that access records sequentially, in or out of key order, the added RCAC logic can have a profound effect on the performance and scalability. Reading the \u201cnext record\u201d in order is no longer a simple matter of positioning to the next available key, as shown in Figure 6-23."}, {"label": "caption", "id": 3, "page_no": 121, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.106201171875, "t": 403.9275817871094, "r": 333.33013916015625, "b": 413.6200256347656, "coord_origin": "TOPLEFT"}, "confidence": 0.9444288611412048, "cells": [{"id": 6, "text": "Figure 6-23 Native record access with no RCAC", "bbox": {"l": 136.8, "t": 404.77798, "r": 332.58868, "b": 413.103, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-23 Native record access with no RCAC"}, {"label": "picture", "id": 4, "page_no": 121, "cluster": {"id": 4, "label": "picture", "bbox": {"l": 136.19158935546875, "t": 131.57861328125, "r": 506.083740234375, "b": 400.9339294433594, "coord_origin": "TOPLEFT"}, "confidence": 0.9722803235054016, "cells": [{"id": 7, "text": "Native RLA Request", "bbox": {"l": 179.1436, "t": 155.32299999999998, "r": 278.48407, "b": 165.81525, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "RRN", "bbox": {"l": 355.00479, "t": 142.72247000000004, "r": 371.4198, "b": 150.59167000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Record Data", "bbox": {"l": 412.7984, "t": 142.72247000000004, "r": 459.23407, "b": 150.59167000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "1", "bbox": {"l": 375.93451, "t": 157.64544999999998, "r": 380.59537, "b": 165.50543000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "123", "bbox": {"l": 387.94699, "t": 157.4248, "r": 404.49164, "b": 166.19494999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CAIN", "bbox": {"l": 404.49438, "t": 157.96722, "r": 426.46198, "b": 166.24090999999999, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "aaaa456", "bbox": {"l": 437.34372, "t": 157.4248, "r": 475.91571, "b": 166.19494999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "GLYPH", "bbox": {"l": 323.6568, "t": 153.94312000000002, "r": 333.83542, "b": 171.4389, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "2", "bbox": {"l": 375.93411, "t": 172.53827, "r": 380.59497, "b": 180.39824999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "123", "bbox": {"l": 387.94659, "t": 172.31763, "r": 404.49124, "b": 181.08776999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "CAIN", "bbox": {"l": 404.49399, "t": 172.86005, "r": 426.46158, "b": 181.13373, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "bbbb456", "bbox": {"l": 437.34332000000006, "t": 172.31763, "r": 475.91531000000003, "b": 181.08776999999998, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "3", "bbox": {"l": 375.93408, "t": 187.46130000000005, "r": 380.59494, "b": 195.32128999999998, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "123", "bbox": {"l": 387.94656, "t": 187.24066000000005, "r": 404.49121, "b": 196.01080000000002, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "CAIN", "bbox": {"l": 404.49396, "t": 187.78308000000004, "r": 426.46155, "b": 196.05676000000005, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "cccc456", "bbox": {"l": 437.3432900000001, "t": 187.24066000000005, "r": 475.91528000000005, "b": 196.01080000000002, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "4", "bbox": {"l": 375.93411, "t": 202.38477, "r": 380.59497, "b": 210.24474999999995, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "123", "bbox": {"l": 387.9462, "t": 202.16405999999995, "r": 404.49084, "b": 210.93420000000003, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "CAIN", "bbox": {"l": 404.4935, "t": 202.70648000000006, "r": 426.46109, "b": 210.98015999999996, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "dddd456", "bbox": {"l": 437.34299, "t": 202.16405999999995, "r": 475.91498000000007, "b": 210.93420000000003, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "NR", "bbox": {"l": 230.0419, "t": 204.42553999999996, "r": 280.56635, "b": 220.16387999999995, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "C", "bbox": {"l": 266.42206, "t": 204.42553999999996, "r": 290.17664, "b": 220.16387999999995, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "A", "bbox": {"l": 276.16107, "t": 204.42553999999996, "r": 301.33136, "b": 220.16387999999995, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "5", "bbox": {"l": 375.93411, "t": 217.27722000000006, "r": 380.59497, "b": 225.13720999999998, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "123", "bbox": {"l": 387.94659, "t": 217.05658000000005, "r": 404.49124, "b": 225.82672000000002, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CAIN", "bbox": {"l": 404.49399, "t": 217.59900000000005, "r": 426.46158, "b": 225.87267999999995, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "eeee456", "bbox": {"l": 437.34332000000006, "t": 217.05658000000005, "r": 475.91531000000003, "b": 225.82672000000002, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "\u0085", "bbox": {"l": 374.24902, "t": 232.20025999999996, "r": 380.59219, "b": 240.06024000000002, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "\u0085", "bbox": {"l": 387.94659, "t": 231.97960999999998, "r": 393.4624, "b": 240.74976000000004, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "No RCAC", "bbox": {"l": 230.0419, "t": 204.42553999999996, "r": 296.65891, "b": 220.16387999999995, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "\u0085", "bbox": {"l": 374.24869, "t": 247.12378, "r": 380.59186, "b": 254.98375999999996, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "\u0085", "bbox": {"l": 387.94626, "t": 246.90314, "r": 393.46207, "b": 255.67327999999998, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "\u0085", "bbox": {"l": 374.24869, "t": 262.01648, "r": 380.59186, "b": 269.87645999999995, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "\u0085", "bbox": {"l": 387.94626, "t": 261.79584, "r": 393.46207, "b": 270.56597999999997, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "\u0085", "bbox": {"l": 374.24869, "t": 276.93944999999997, "r": 380.59186, "b": 284.7995, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "\u0085", "bbox": {"l": 387.94626, "t": 276.71880999999996, "r": 393.46207, "b": 285.48895, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "\u0085", "bbox": {"l": 374.24869, "t": 291.8627599999999, "r": 380.59186, "b": 299.72278, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "\u0085", "bbox": {"l": 387.94626, "t": 291.64212, "r": 393.46207, "b": 300.41223, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "\u0085", "bbox": {"l": 374.24869, "t": 306.7554, "r": 380.59186, "b": 314.61542, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "\u0085", "bbox": {"l": 387.94626, "t": 306.53476, "r": 393.46207, "b": 315.30487, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "1000001", "bbox": {"l": 347.98749, "t": 321.67856, "r": 380.60059, "b": 329.53857, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "123", "bbox": {"l": 387.9462, "t": 321.45801, "r": 404.49084, "b": 330.22812, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "CAIN", "bbox": {"l": 404.4935, "t": 322.0004, "r": 426.46109, "b": 330.27408, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "vvvv456", "bbox": {"l": 437.34299, "t": 321.45801, "r": 475.91498000000007, "b": 330.22812, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "1000002", "bbox": {"l": 347.98749, "t": 336.60184, "r": 380.60059, "b": 344.46185, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "123", "bbox": {"l": 387.94672, "t": 336.3812, "r": 404.49136, "b": 345.15131, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "CAIN", "bbox": {"l": 404.49411, "t": 336.9235800000001, "r": 426.4617, "b": 345.19727, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "wwww456", "bbox": {"l": 437.34344, "t": 336.3812, "r": 475.91544, "b": 345.15131, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "1000003", "bbox": {"l": 347.98749, "t": 351.49448, "r": 380.60059, "b": 359.35449, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "123", "bbox": {"l": 387.94672, "t": 351.27383, "r": 404.49136, "b": 360.04395, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "CAIN", "bbox": {"l": 404.49411, "t": 351.81621999999993, "r": 426.4617, "b": 360.0899, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "xxxx456", "bbox": {"l": 437.34344, "t": 351.27383, "r": 475.91544, "b": 360.04395, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "1000004", "bbox": {"l": 347.98749, "t": 366.41766000000007, "r": 380.60059, "b": 374.27768, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "123", "bbox": {"l": 387.94672, "t": 366.19701999999995, "r": 404.49136, "b": 374.96713, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "BEDOYA", "bbox": {"l": 404.49411, "t": 366.73941, "r": 437.42895999999996, "b": 375.01309000000003, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "yyyy456", "bbox": {"l": 437.46664, "t": 366.19701999999995, "r": 475.89061999999996, "b": 374.96713, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "1000005", "bbox": {"l": 347.9884, "t": 381.34064000000006, "r": 380.6015, "b": 389.20064999999994, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "123", "bbox": {"l": 387.94763, "t": 381.11999999999995, "r": 404.49228, "b": 389.89011, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "BEDOYA", "bbox": {"l": 404.49503, "t": 381.66238, "r": 437.42987, "b": 389.93607000000003, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "zzzz456", "bbox": {"l": 437.46756000000005, "t": 381.11999999999995, "r": 475.89154, "b": 389.89011, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 121, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.8849639892578, "t": 70.34988403320312, "r": 543.5155, "b": 116.99058532714844, "coord_origin": "TOPLEFT"}, "confidence": 0.9810242652893066, "cells": [{"id": 2, "text": "For programs that access records sequentially, in or out of key order, the added RCAC logic ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 543.5155, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "can have a profound effect on the performance and scalability. Reading the \u201cnext record\u201d in ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 539.91107, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "order is no longer a simple matter of positioning to the next available key, as shown in ", "bbox": {"l": 136.80002, "t": 95.50829999999996, "r": 516.06189, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Figure 6-23.", "bbox": {"l": 136.80002, "t": 107.50811999999996, "r": 190.73239, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "For programs that access records sequentially, in or out of key order, the added RCAC logic can have a profound effect on the performance and scalability. Reading the \u201cnext record\u201d in order is no longer a simple matter of positioning to the next available key, as shown in Figure 6-23."}, {"label": "caption", "id": 3, "page_no": 121, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.106201171875, "t": 403.9275817871094, "r": 333.33013916015625, "b": 413.6200256347656, "coord_origin": "TOPLEFT"}, "confidence": 0.9444288611412048, "cells": [{"id": 6, "text": "Figure 6-23 Native record access with no RCAC", "bbox": {"l": 136.8, "t": 404.77798, "r": 332.58868, "b": 413.103, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-23 Native record access with no RCAC"}, {"label": "picture", "id": 4, "page_no": 121, "cluster": {"id": 4, "label": "picture", "bbox": {"l": 136.19158935546875, "t": 131.57861328125, "r": 506.083740234375, "b": 400.9339294433594, "coord_origin": "TOPLEFT"}, "confidence": 0.9722803235054016, "cells": [{"id": 7, "text": "Native RLA Request", "bbox": {"l": 179.1436, "t": 155.32299999999998, "r": 278.48407, "b": 165.81525, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "RRN", "bbox": {"l": 355.00479, "t": 142.72247000000004, "r": 371.4198, "b": 150.59167000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Record Data", "bbox": {"l": 412.7984, "t": 142.72247000000004, "r": 459.23407, "b": 150.59167000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "1", "bbox": {"l": 375.93451, "t": 157.64544999999998, "r": 380.59537, "b": 165.50543000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "123", "bbox": {"l": 387.94699, "t": 157.4248, "r": 404.49164, "b": 166.19494999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CAIN", "bbox": {"l": 404.49438, "t": 157.96722, "r": 426.46198, "b": 166.24090999999999, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "aaaa456", "bbox": {"l": 437.34372, "t": 157.4248, "r": 475.91571, "b": 166.19494999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "GLYPH", "bbox": {"l": 323.6568, "t": 153.94312000000002, "r": 333.83542, "b": 171.4389, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "2", "bbox": {"l": 375.93411, "t": 172.53827, "r": 380.59497, "b": 180.39824999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "123", "bbox": {"l": 387.94659, "t": 172.31763, "r": 404.49124, "b": 181.08776999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "CAIN", "bbox": {"l": 404.49399, "t": 172.86005, "r": 426.46158, "b": 181.13373, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "bbbb456", "bbox": {"l": 437.34332000000006, "t": 172.31763, "r": 475.91531000000003, "b": 181.08776999999998, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "3", "bbox": {"l": 375.93408, "t": 187.46130000000005, "r": 380.59494, "b": 195.32128999999998, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "123", "bbox": {"l": 387.94656, "t": 187.24066000000005, "r": 404.49121, "b": 196.01080000000002, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "CAIN", "bbox": {"l": 404.49396, "t": 187.78308000000004, "r": 426.46155, "b": 196.05676000000005, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "cccc456", "bbox": {"l": 437.3432900000001, "t": 187.24066000000005, "r": 475.91528000000005, "b": 196.01080000000002, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "4", "bbox": {"l": 375.93411, "t": 202.38477, "r": 380.59497, "b": 210.24474999999995, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "123", "bbox": {"l": 387.9462, "t": 202.16405999999995, "r": 404.49084, "b": 210.93420000000003, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "CAIN", "bbox": {"l": 404.4935, "t": 202.70648000000006, "r": 426.46109, "b": 210.98015999999996, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "dddd456", "bbox": {"l": 437.34299, "t": 202.16405999999995, "r": 475.91498000000007, "b": 210.93420000000003, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "NR", "bbox": {"l": 230.0419, "t": 204.42553999999996, "r": 280.56635, "b": 220.16387999999995, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "C", "bbox": {"l": 266.42206, "t": 204.42553999999996, "r": 290.17664, "b": 220.16387999999995, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "A", "bbox": {"l": 276.16107, "t": 204.42553999999996, "r": 301.33136, "b": 220.16387999999995, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "5", "bbox": {"l": 375.93411, "t": 217.27722000000006, "r": 380.59497, "b": 225.13720999999998, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "123", "bbox": {"l": 387.94659, "t": 217.05658000000005, "r": 404.49124, "b": 225.82672000000002, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CAIN", "bbox": {"l": 404.49399, "t": 217.59900000000005, "r": 426.46158, "b": 225.87267999999995, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "eeee456", "bbox": {"l": 437.34332000000006, "t": 217.05658000000005, "r": 475.91531000000003, "b": 225.82672000000002, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "\u0085", "bbox": {"l": 374.24902, "t": 232.20025999999996, "r": 380.59219, "b": 240.06024000000002, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "\u0085", "bbox": {"l": 387.94659, "t": 231.97960999999998, "r": 393.4624, "b": 240.74976000000004, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "No RCAC", "bbox": {"l": 230.0419, "t": 204.42553999999996, "r": 296.65891, "b": 220.16387999999995, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "\u0085", "bbox": {"l": 374.24869, "t": 247.12378, "r": 380.59186, "b": 254.98375999999996, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "\u0085", "bbox": {"l": 387.94626, "t": 246.90314, "r": 393.46207, "b": 255.67327999999998, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "\u0085", "bbox": {"l": 374.24869, "t": 262.01648, "r": 380.59186, "b": 269.87645999999995, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "\u0085", "bbox": {"l": 387.94626, "t": 261.79584, "r": 393.46207, "b": 270.56597999999997, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "\u0085", "bbox": {"l": 374.24869, "t": 276.93944999999997, "r": 380.59186, "b": 284.7995, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "\u0085", "bbox": {"l": 387.94626, "t": 276.71880999999996, "r": 393.46207, "b": 285.48895, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "\u0085", "bbox": {"l": 374.24869, "t": 291.8627599999999, "r": 380.59186, "b": 299.72278, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "\u0085", "bbox": {"l": 387.94626, "t": 291.64212, "r": 393.46207, "b": 300.41223, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "\u0085", "bbox": {"l": 374.24869, "t": 306.7554, "r": 380.59186, "b": 314.61542, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "\u0085", "bbox": {"l": 387.94626, "t": 306.53476, "r": 393.46207, "b": 315.30487, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "1000001", "bbox": {"l": 347.98749, "t": 321.67856, "r": 380.60059, "b": 329.53857, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "123", "bbox": {"l": 387.9462, "t": 321.45801, "r": 404.49084, "b": 330.22812, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "CAIN", "bbox": {"l": 404.4935, "t": 322.0004, "r": 426.46109, "b": 330.27408, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "vvvv456", "bbox": {"l": 437.34299, "t": 321.45801, "r": 475.91498000000007, "b": 330.22812, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "1000002", "bbox": {"l": 347.98749, "t": 336.60184, "r": 380.60059, "b": 344.46185, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "123", "bbox": {"l": 387.94672, "t": 336.3812, "r": 404.49136, "b": 345.15131, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "CAIN", "bbox": {"l": 404.49411, "t": 336.9235800000001, "r": 426.4617, "b": 345.19727, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "wwww456", "bbox": {"l": 437.34344, "t": 336.3812, "r": 475.91544, "b": 345.15131, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "1000003", "bbox": {"l": 347.98749, "t": 351.49448, "r": 380.60059, "b": 359.35449, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "123", "bbox": {"l": 387.94672, "t": 351.27383, "r": 404.49136, "b": 360.04395, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "CAIN", "bbox": {"l": 404.49411, "t": 351.81621999999993, "r": 426.4617, "b": 360.0899, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "xxxx456", "bbox": {"l": 437.34344, "t": 351.27383, "r": 475.91544, "b": 360.04395, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "1000004", "bbox": {"l": 347.98749, "t": 366.41766000000007, "r": 380.60059, "b": 374.27768, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "123", "bbox": {"l": 387.94672, "t": 366.19701999999995, "r": 404.49136, "b": 374.96713, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "BEDOYA", "bbox": {"l": 404.49411, "t": 366.73941, "r": 437.42895999999996, "b": 375.01309000000003, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "yyyy456", "bbox": {"l": 437.46664, "t": 366.19701999999995, "r": 475.89061999999996, "b": 374.96713, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "1000005", "bbox": {"l": 347.9884, "t": 381.34064000000006, "r": 380.6015, "b": 389.20064999999994, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "123", "bbox": {"l": 387.94763, "t": 381.11999999999995, "r": 404.49228, "b": 389.89011, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "BEDOYA", "bbox": {"l": 404.49503, "t": 381.66238, "r": 437.42987, "b": 389.93607000000003, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "zzzz456", "bbox": {"l": 437.46756000000005, "t": 381.11999999999995, "r": 475.89154, "b": 389.89011, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 121, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.41461944580078, "t": 754.2803344726562, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9247628450393677, "cells": [{"id": 0, "text": "106 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "106"}, {"label": "page_footer", "id": 1, "page_no": 121, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.62214660644531, "t": 754.58251953125, "r": 339.8680725097656, "b": 764.0300903320312, "coord_origin": "TOPLEFT"}, "confidence": 0.9530835747718811, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 122, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 371.28, "t": 755.538002, "r": 517.96918, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "107", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Before the record, as identified by the key, is considered available, the RCAC logic must be ", "bbox": {"l": 136.8002, "t": 71.50903000000005, "r": 539.8396, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "run. If the record is rejected by RCAC, the next record in sequence that is permissible must be ", "bbox": {"l": 136.8002, "t": 83.50885000000017, "r": 547.29565, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "identified. This spinning through the records can take a long time and uses many resources, ", "bbox": {"l": 136.8002, "t": 95.50867000000005, "r": 545.24677, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "as shown in Figure 6-24.", "bbox": {"l": 136.8002, "t": 107.50847999999996, "r": 246.12015, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Figure 6-24 Native record level access with RCAC", "bbox": {"l": 136.8, "t": 408.73801, "r": 340.54565, "b": 417.06302, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "After the row permissions and column masks are designed and implemented, adequate ", "bbox": {"l": 136.8, "t": 434.68872, "r": 525.86151, "b": 443.90170000000006, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "performance and scalability testing are recommended.", "bbox": {"l": 136.8, "t": 446.74829, "r": 377.29614, "b": 455.96127, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "6.7", "bbox": {"l": 64.800003, "t": 484.4407, "r": 87.161385, "b": 499.2037, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Exclusive lock to implement RCAC (availability issues)", "bbox": {"l": 91.633644, "t": 484.4407, "r": 510.04889, "b": 499.2037, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "When defining permissions or enabling RCAC, an exclusive lock on the base table is ", "bbox": {"l": 136.8, "t": 516.70871, "r": 512.02203, "b": 525.92169, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "obtained. The impact to other applications depends on the order of create permission and the ", "bbox": {"l": 136.8, "t": 528.70853, "r": 547.24969, "b": 537.92152, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "alter table to activate RCAC.", "bbox": {"l": 136.8, "t": 540.7083299999999, "r": 261.91846, "b": 549.92133, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Consider the following scenarios:", "bbox": {"l": 136.8, "t": 562.72789, "r": 283.20502, "b": 571.94089, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 579.8571000000001, "r": 141.78, "b": 588.63185, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Scenario 1: Adding permissions and RCAC is not enabled on the table:", "bbox": {"l": 151.20016, "t": 579.7076999999999, "r": 464.85846, "b": 588.9207, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "-", "bbox": {"l": 152.03976, "t": 596.74727, "r": 157.61636, "b": 605.96027, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Job 1 reading data from the table (open for input) holds a *SHRRD on the member and ", "bbox": {"l": 165.6003, "t": 596.74727, "r": 547.40094, "b": 605.96027, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "a *SHRRD on the data. ", "bbox": {"l": 165.5993, "t": 608.74707, "r": 271.70319, "b": 617.96007, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "-", "bbox": {"l": 152.03976, "t": 625.7268799999999, "r": 157.59546, "b": 634.93988, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Job 2 adding, updating, or deleting rows from table (open for output) holds a *SHRRD ", "bbox": {"l": 165.59932, "t": 625.7268799999999, "r": 546.01855, "b": 634.93988, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "on the member and a *SHRUPD on the data.", "bbox": {"l": 165.5993, "t": 637.72668, "r": 364.6698, "b": 646.93968, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "-", "bbox": {"l": 152.03976, "t": 654.7065, "r": 157.61139, "b": 663.91949, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Job 4 allocates the object and gets a *SHRRD on the file and a *EXCLRD on the data.", "bbox": {"l": 165.5993, "t": 654.7065, "r": 546.81927, "b": 663.91949, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "-", "bbox": {"l": 152.03976, "t": 671.7460599999999, "r": 157.61139, "b": 680.95906, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Job 3 attempts to add a permission to the table. Permission is added and the ", "bbox": {"l": 165.5993, "t": 671.7460599999999, "r": 507.56107000000003, "b": 680.95906, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "pseudo-closed cursors for Job1 and Job 2 are closed. Job 4 still holds the *SHRRD on ", "bbox": {"l": 165.5993, "t": 683.74586, "r": 547.16492, "b": 692.95887, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "the file and *EXCLRD on the data. ", "bbox": {"l": 165.5993, "t": 695.745674, "r": 320.09985, "b": 704.958679, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "The net result from Scenario 1 is that you can add permissions without having to end the ", "bbox": {"l": 151.19914, "t": 712.725487, "r": 545.11029, "b": 721.938492, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "applications that are reading the base table. ", "bbox": {"l": 151.19914, "t": 724.725296, "r": 347.6232, "b": 733.938301, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Native RLA Request", "bbox": {"l": 164.6366, "t": 161.3573, "r": 264.40671, "b": 171.8949, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "RRN", "bbox": {"l": 360.86261, "t": 148.70245, "r": 377.34851, "b": 156.60564999999997, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Record Data", "bbox": {"l": 418.90582, "t": 148.70245, "r": 465.54205, "b": 156.60564999999997, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "1", "bbox": {"l": 381.88269, "t": 163.68988000000002, "r": 386.56366, "b": 171.58385999999996, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "123", "bbox": {"l": 393.94705, "t": 163.46831999999995, "r": 410.56314, "b": 172.27630999999997, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "CAIN", "bbox": {"l": 410.56592, "t": 164.01306, "r": 432.62839, "b": 172.32245, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "aaaaaa456", "bbox": {"l": 432.63208, "t": 163.46831999999995, "r": 482.27261, "b": 172.27630999999997, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "RCAC", "bbox": {"l": 295.24869, "t": 139.88818000000003, "r": 335.90213, "b": 155.69464000000005, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "\u00d7", "bbox": {"l": 295.06409, "t": 158.86370999999997, "r": 305.28674, "b": 176.43517999999995, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "2", "bbox": {"l": 381.88239, "t": 178.64721999999995, "r": 386.56335, "b": 186.5412, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "123", "bbox": {"l": 393.94675, "t": 178.42566, "r": 410.56284, "b": 187.23364000000004, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CAIN", "bbox": {"l": 410.56561, "t": 178.97040000000004, "r": 432.62808, "b": 187.27979000000005, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "bbbbbb456", "bbox": {"l": 432.63177, "t": 178.42566, "r": 482.27231, "b": 187.23364000000004, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "3", "bbox": {"l": 381.88239, "t": 193.63469999999995, "r": 386.56335, "b": 201.52868999999998, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "123", "bbox": {"l": 393.94675, "t": 193.41314999999997, "r": 410.56284, "b": 202.22113000000002, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "CAIN", "bbox": {"l": 410.56561, "t": 193.95789000000002, "r": 432.62808, "b": 202.26727000000005, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "cccccc456", "bbox": {"l": 432.63177, "t": 193.41314999999997, "r": 482.27231, "b": 202.22113000000002, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "4", "bbox": {"l": 381.88239, "t": 208.62285999999995, "r": 386.56335, "b": 216.51684999999998, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "123", "bbox": {"l": 393.9465, "t": 208.40112, "r": 410.56259, "b": 217.20911, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "CAIN", "bbox": {"l": 410.5654, "t": 208.94586000000004, "r": 432.62787, "b": 217.25525000000005, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "dddddd456", "bbox": {"l": 432.63159, "t": 208.40112, "r": 482.27213000000006, "b": 217.20911, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "\u00d7", "bbox": {"l": 295.06409, "t": 187.85344999999995, "r": 305.28674, "b": 205.42493000000002, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "5", "bbox": {"l": 381.88239, "t": 223.57970999999998, "r": 386.56335, "b": 231.47369000000003, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "123", "bbox": {"l": 393.94675, "t": 223.35815000000002, "r": 410.56284, "b": 232.16614000000004, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "CAIN", "bbox": {"l": 410.56561, "t": 223.90288999999996, "r": 432.62808, "b": 232.21227999999996, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "eeeeee456", "bbox": {"l": 432.63177, "t": 223.35815000000002, "r": 482.27231, "b": 232.16614000000004, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "\u0085", "bbox": {"l": 380.19003, "t": 238.56719999999996, "r": 386.56061, "b": 246.46118, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "\u0085", "bbox": {"l": 393.94675, "t": 238.34564, "r": 399.48636, "b": 247.15363000000002, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "\u00d7", "bbox": {"l": 295.06409, "t": 216.84520999999995, "r": 305.28674, "b": 234.41669000000002, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "\u0085", "bbox": {"l": 380.18979, "t": 253.55542000000003, "r": 386.56036, "b": 261.44939999999997, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "\u0085", "bbox": {"l": 393.9465, "t": 253.33385999999996, "r": 399.48611, "b": 262.14185, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "\u0085", "bbox": {"l": 380.18979, "t": 268.51239, "r": 386.56036, "b": 276.40637000000004, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "\u0085", "bbox": {"l": 393.9465, "t": 268.29083, "r": 399.48611, "b": 277.09882000000005, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "\u0085", "bbox": {"l": 380.18979, "t": 283.49985, "r": 386.56036, "b": 291.3938, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "\u0085", "bbox": {"l": 393.9465, "t": 283.27823, "r": 399.48611, "b": 292.08624, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "Row Permission", "bbox": {"l": 145.49409, "t": 259.80902000000003, "r": 224.43881, "b": 270.33429, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": ":", "bbox": {"l": 224.43390000000002, "t": 259.80902000000003, "r": 227.83154, "b": 270.34662000000003, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "WHERE NAME <> \u0091CAIN\u0092", "bbox": {"l": 145.49409, "t": 289.35373, "r": 267.97665, "b": 299.89133, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "s", "bbox": {"l": 304.82001, "t": 255.23577999999998, "r": 309.67026, "b": 266.24114999999995, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "p", "bbox": {"l": 309.68259, "t": 255.23577999999998, "r": 316.18243, "b": 266.24114999999995, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "in", "bbox": {"l": 316.17621, "t": 255.23577999999998, "r": 325.67731, "b": 266.24114999999995, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "thru", "bbox": {"l": 304.45065, "t": 270.00811999999996, "r": 326.05524, "b": 281.01349, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "rec", "bbox": {"l": 296.51059, "t": 284.78042999999997, "r": 311.95633, "b": 295.78583, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "ords", "bbox": {"l": 311.84555, "t": 284.78042999999997, "r": 334.01147, "b": 295.78583, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "\u0085", "bbox": {"l": 380.18979, "t": 298.48804, "r": 386.56036, "b": 306.38199, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "\u0085", "bbox": {"l": 393.9465, "t": 298.26642, "r": 399.48611, "b": 307.07443, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "\u0085", "bbox": {"l": 380.18979, "t": 313.44501, "r": 386.56036, "b": 321.33896, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "\u0085", "bbox": {"l": 393.9465, "t": 313.22339, "r": 399.48611, "b": 322.0314, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "1000001", "bbox": {"l": 353.81491, "t": 328.43283, "r": 386.56885, "b": 336.32678, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "123", "bbox": {"l": 393.9465, "t": 328.21121, "r": 410.56259, "b": 337.01923, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "CAIN", "bbox": {"l": 410.5654, "t": 328.7559499999999, "r": 432.62787, "b": 337.0654, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "vvvvvv456", "bbox": {"l": 432.63159, "t": 328.21121, "r": 482.27213000000006, "b": 337.01923, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "\u00d7", "bbox": {"l": 295.06409, "t": 323.94492, "r": 305.28674, "b": 341.51636, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "1000002", "bbox": {"l": 353.81491, "t": 343.42062, "r": 386.56885, "b": 351.31458, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "123", "bbox": {"l": 393.94669, "t": 343.19901, "r": 410.56277, "b": 352.00702, "coord_origin": "TOPLEFT"}}, {"id": 86, "text": "CAIN", "bbox": {"l": 410.56555, "t": 343.74374, "r": 432.62802000000005, "b": 352.05319, "coord_origin": "TOPLEFT"}}, {"id": 87, "text": "wwwwww456", "bbox": {"l": 432.63170999999994, "t": 343.19901, "r": 482.27224999999993, "b": 352.00702, "coord_origin": "TOPLEFT"}}, {"id": 88, "text": "1000003", "bbox": {"l": 353.81491, "t": 358.37759, "r": 386.56885, "b": 366.27155, "coord_origin": "TOPLEFT"}}, {"id": 89, "text": "123", "bbox": {"l": 393.94669, "t": 358.15598, "r": 410.56277, "b": 366.96399, "coord_origin": "TOPLEFT"}}, {"id": 90, "text": "CAIN", "bbox": {"l": 410.56555, "t": 358.70071, "r": 432.62802000000005, "b": 367.01016, "coord_origin": "TOPLEFT"}}, {"id": 91, "text": "xxxxxx456", "bbox": {"l": 432.63170999999994, "t": 358.15598, "r": 482.27224999999993, "b": 366.96399, "coord_origin": "TOPLEFT"}}, {"id": 92, "text": "GLYPH", "bbox": {"l": 293.21759, "t": 368.69284, "r": 303.44025, "b": 386.26428, "coord_origin": "TOPLEFT"}}, {"id": 93, "text": "\u00d7", "bbox": {"l": 295.06409, "t": 352.53653, "r": 305.28674, "b": 370.10797, "coord_origin": "TOPLEFT"}}, {"id": 94, "text": "1000004", "bbox": {"l": 353.81491, "t": 373.36545, "r": 386.56885, "b": 381.25939999999997, "coord_origin": "TOPLEFT"}}, {"id": 95, "text": "123", "bbox": {"l": 393.94669, "t": 373.14383, "r": 410.56277, "b": 381.95184, "coord_origin": "TOPLEFT"}}, {"id": 96, "text": "BEDOYA", "bbox": {"l": 410.56555, "t": 373.68857, "r": 443.64264, "b": 381.99802, "coord_origin": "TOPLEFT"}}, {"id": 97, "text": "yyyy456", "bbox": {"l": 443.68048, "t": 373.14383, "r": 482.27039, "b": 381.95184, "coord_origin": "TOPLEFT"}}, {"id": 98, "text": "1000005", "bbox": {"l": 353.81583, "t": 388.35287, "r": 386.56976, "b": 396.24683, "coord_origin": "TOPLEFT"}}, {"id": 99, "text": "123", "bbox": {"l": 393.9476, "t": 388.13126, "r": 410.56369, "b": 396.93927, "coord_origin": "TOPLEFT"}}, {"id": 100, "text": "BEDOYA", "bbox": {"l": 410.56647, "t": 388.67599, "r": 443.64354999999995, "b": 396.98544, "coord_origin": "TOPLEFT"}}, {"id": 101, "text": "zzzz456", "bbox": {"l": 443.6814, "t": 388.13126, "r": 482.2713, "b": 396.93927, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 370.56109619140625, "t": 754.820068359375, "r": 517.96918, "b": 763.9142456054688, "coord_origin": "TOPLEFT"}, "confidence": 0.9531034231185913, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 371.28, "t": 755.538002, "r": 517.96918, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 530.158935546875, "t": 754.1790161132812, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9219108819961548, "cells": [{"id": 1, "text": "107", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 136.06326293945312, "t": 70.65892791748047, "r": 547.29565, "b": 116.73127746582031, "coord_origin": "TOPLEFT"}, "confidence": 0.9824259281158447, "cells": [{"id": 2, "text": "Before the record, as identified by the key, is considered available, the RCAC logic must be ", "bbox": {"l": 136.8002, "t": 71.50903000000005, "r": 539.8396, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "run. If the record is rejected by RCAC, the next record in sequence that is permissible must be ", "bbox": {"l": 136.8002, "t": 83.50885000000017, "r": 547.29565, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "identified. This spinning through the records can take a long time and uses many resources, ", "bbox": {"l": 136.8002, "t": 95.50867000000005, "r": 545.24677, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "as shown in Figure 6-24.", "bbox": {"l": 136.8002, "t": 107.50847999999996, "r": 246.12015, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 135.92271423339844, "t": 407.9793701171875, "r": 341.2294616699219, "b": 417.6308898925781, "coord_origin": "TOPLEFT"}, "confidence": 0.9458103775978088, "cells": [{"id": 6, "text": "Figure 6-24 Native record level access with RCAC", "bbox": {"l": 136.8, "t": 408.73801, "r": 340.54565, "b": 417.06302, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.81785583496094, "t": 433.958251953125, "r": 525.86151, "b": 456.21856689453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9756483435630798, "cells": [{"id": 7, "text": "After the row permissions and column masks are designed and implemented, adequate ", "bbox": {"l": 136.8, "t": 434.68872, "r": 525.86151, "b": 443.90170000000006, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "performance and scalability testing are recommended.", "bbox": {"l": 136.8, "t": 446.74829, "r": 377.29614, "b": 455.96127, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "section_header", "bbox": {"l": 64.4524917602539, "t": 483.275146484375, "r": 510.04889, "b": 500.006103515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9643033742904663, "cells": [{"id": 9, "text": "6.7", "bbox": {"l": 64.800003, "t": 484.4407, "r": 87.161385, "b": 499.2037, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Exclusive lock to implement RCAC (availability issues)", "bbox": {"l": 91.633644, "t": 484.4407, "r": 510.04889, "b": 499.2037, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 135.74249267578125, "t": 516.0097045898438, "r": 547.24969, "b": 549.92133, "coord_origin": "TOPLEFT"}, "confidence": 0.9808005094528198, "cells": [{"id": 11, "text": "When defining permissions or enabling RCAC, an exclusive lock on the base table is ", "bbox": {"l": 136.8, "t": 516.70871, "r": 512.02203, "b": 525.92169, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "obtained. The impact to other applications depends on the order of create permission and the ", "bbox": {"l": 136.8, "t": 528.70853, "r": 547.24969, "b": 537.92152, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "alter table to activate RCAC.", "bbox": {"l": 136.8, "t": 540.7083299999999, "r": 261.91846, "b": 549.92133, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 136.18580627441406, "t": 561.9881591796875, "r": 283.20502, "b": 572.285888671875, "coord_origin": "TOPLEFT"}, "confidence": 0.8252715468406677, "cells": [{"id": 14, "text": "Consider the following scenarios:", "bbox": {"l": 136.8, "t": 562.72789, "r": 283.20502, "b": 571.94089, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.5818634033203, "t": 578.6119995117188, "r": 464.85846, "b": 588.9207, "coord_origin": "TOPLEFT"}, "confidence": 0.9519445896148682, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 579.8571000000001, "r": 141.78, "b": 588.63185, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Scenario 1: Adding permissions and RCAC is not enabled on the table:", "bbox": {"l": 151.20016, "t": 579.7076999999999, "r": 464.85846, "b": 588.9207, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 151.1683349609375, "t": 595.9595336914062, "r": 547.40094, "b": 617.96007, "coord_origin": "TOPLEFT"}, "confidence": 0.9689837098121643, "cells": [{"id": 17, "text": "-", "bbox": {"l": 152.03976, "t": 596.74727, "r": 157.61636, "b": 605.96027, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Job 1 reading data from the table (open for input) holds a *SHRRD on the member and ", "bbox": {"l": 165.6003, "t": 596.74727, "r": 547.40094, "b": 605.96027, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "a *SHRRD on the data. ", "bbox": {"l": 165.5993, "t": 608.74707, "r": 271.70319, "b": 617.96007, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 151.33261108398438, "t": 624.4862670898438, "r": 546.01855, "b": 646.93968, "coord_origin": "TOPLEFT"}, "confidence": 0.972244918346405, "cells": [{"id": 20, "text": "-", "bbox": {"l": 152.03976, "t": 625.7268799999999, "r": 157.59546, "b": 634.93988, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Job 2 adding, updating, or deleting rows from table (open for output) holds a *SHRRD ", "bbox": {"l": 165.59932, "t": 625.7268799999999, "r": 546.01855, "b": 634.93988, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "on the member and a *SHRUPD on the data.", "bbox": {"l": 165.5993, "t": 637.72668, "r": 364.6698, "b": 646.93968, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 151.21334838867188, "t": 653.9972534179688, "r": 546.81927, "b": 664.3414916992188, "coord_origin": "TOPLEFT"}, "confidence": 0.9548404812812805, "cells": [{"id": 23, "text": "-", "bbox": {"l": 152.03976, "t": 654.7065, "r": 157.61139, "b": 663.91949, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Job 4 allocates the object and gets a *SHRRD on the file and a *EXCLRD on the data.", "bbox": {"l": 165.5993, "t": 654.7065, "r": 546.81927, "b": 663.91949, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "list_item", "bbox": {"l": 151.15476989746094, "t": 670.9539794921875, "r": 547.16492, "b": 704.958679, "coord_origin": "TOPLEFT"}, "confidence": 0.9793244004249573, "cells": [{"id": 25, "text": "-", "bbox": {"l": 152.03976, "t": 671.7460599999999, "r": 157.61139, "b": 680.95906, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Job 3 attempts to add a permission to the table. Permission is added and the ", "bbox": {"l": 165.5993, "t": 671.7460599999999, "r": 507.56107000000003, "b": 680.95906, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "pseudo-closed cursors for Job1 and Job 2 are closed. Job 4 still holds the *SHRRD on ", "bbox": {"l": 165.5993, "t": 683.74586, "r": 547.16492, "b": 692.95887, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "the file and *EXCLRD on the data. ", "bbox": {"l": 165.5993, "t": 695.745674, "r": 320.09985, "b": 704.958679, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 150.30223083496094, "t": 711.9512939453125, "r": 545.11029, "b": 734.1187133789062, "coord_origin": "TOPLEFT"}, "confidence": 0.9760500192642212, "cells": [{"id": 29, "text": "The net result from Scenario 1 is that you can add permissions without having to end the ", "bbox": {"l": 151.19914, "t": 712.725487, "r": 545.11029, "b": 721.938492, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "applications that are reading the base table. ", "bbox": {"l": 151.19914, "t": 724.725296, "r": 347.6232, "b": 733.938301, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "picture", "bbox": {"l": 135.89947509765625, "t": 131.36407470703125, "r": 513.2355346679688, "b": 404.8336486816406, "coord_origin": "TOPLEFT"}, "confidence": 0.9828073978424072, "cells": [{"id": 31, "text": "Native RLA Request", "bbox": {"l": 164.6366, "t": 161.3573, "r": 264.40671, "b": 171.8949, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "RRN", "bbox": {"l": 360.86261, "t": 148.70245, "r": 377.34851, "b": 156.60564999999997, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Record Data", "bbox": {"l": 418.90582, "t": 148.70245, "r": 465.54205, "b": 156.60564999999997, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "1", "bbox": {"l": 381.88269, "t": 163.68988000000002, "r": 386.56366, "b": 171.58385999999996, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "123", "bbox": {"l": 393.94705, "t": 163.46831999999995, "r": 410.56314, "b": 172.27630999999997, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "CAIN", "bbox": {"l": 410.56592, "t": 164.01306, "r": 432.62839, "b": 172.32245, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "aaaaaa456", "bbox": {"l": 432.63208, "t": 163.46831999999995, "r": 482.27261, "b": 172.27630999999997, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "RCAC", "bbox": {"l": 295.24869, "t": 139.88818000000003, "r": 335.90213, "b": 155.69464000000005, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "\u00d7", "bbox": {"l": 295.06409, "t": 158.86370999999997, "r": 305.28674, "b": 176.43517999999995, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "2", "bbox": {"l": 381.88239, "t": 178.64721999999995, "r": 386.56335, "b": 186.5412, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "123", "bbox": {"l": 393.94675, "t": 178.42566, "r": 410.56284, "b": 187.23364000000004, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CAIN", "bbox": {"l": 410.56561, "t": 178.97040000000004, "r": 432.62808, "b": 187.27979000000005, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "bbbbbb456", "bbox": {"l": 432.63177, "t": 178.42566, "r": 482.27231, "b": 187.23364000000004, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "3", "bbox": {"l": 381.88239, "t": 193.63469999999995, "r": 386.56335, "b": 201.52868999999998, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "123", "bbox": {"l": 393.94675, "t": 193.41314999999997, "r": 410.56284, "b": 202.22113000000002, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "CAIN", "bbox": {"l": 410.56561, "t": 193.95789000000002, "r": 432.62808, "b": 202.26727000000005, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "cccccc456", "bbox": {"l": 432.63177, "t": 193.41314999999997, "r": 482.27231, "b": 202.22113000000002, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "4", "bbox": {"l": 381.88239, "t": 208.62285999999995, "r": 386.56335, "b": 216.51684999999998, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "123", "bbox": {"l": 393.9465, "t": 208.40112, "r": 410.56259, "b": 217.20911, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "CAIN", "bbox": {"l": 410.5654, "t": 208.94586000000004, "r": 432.62787, "b": 217.25525000000005, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "dddddd456", "bbox": {"l": 432.63159, "t": 208.40112, "r": 482.27213000000006, "b": 217.20911, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "\u00d7", "bbox": {"l": 295.06409, "t": 187.85344999999995, "r": 305.28674, "b": 205.42493000000002, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "5", "bbox": {"l": 381.88239, "t": 223.57970999999998, "r": 386.56335, "b": 231.47369000000003, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "123", "bbox": {"l": 393.94675, "t": 223.35815000000002, "r": 410.56284, "b": 232.16614000000004, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "CAIN", "bbox": {"l": 410.56561, "t": 223.90288999999996, "r": 432.62808, "b": 232.21227999999996, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "eeeeee456", "bbox": {"l": 432.63177, "t": 223.35815000000002, "r": 482.27231, "b": 232.16614000000004, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "\u0085", "bbox": {"l": 380.19003, "t": 238.56719999999996, "r": 386.56061, "b": 246.46118, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "\u0085", "bbox": {"l": 393.94675, "t": 238.34564, "r": 399.48636, "b": 247.15363000000002, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "\u00d7", "bbox": {"l": 295.06409, "t": 216.84520999999995, "r": 305.28674, "b": 234.41669000000002, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "\u0085", "bbox": {"l": 380.18979, "t": 253.55542000000003, "r": 386.56036, "b": 261.44939999999997, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "\u0085", "bbox": {"l": 393.9465, "t": 253.33385999999996, "r": 399.48611, "b": 262.14185, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "\u0085", "bbox": {"l": 380.18979, "t": 268.51239, "r": 386.56036, "b": 276.40637000000004, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "\u0085", "bbox": {"l": 393.9465, "t": 268.29083, "r": 399.48611, "b": 277.09882000000005, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "\u0085", "bbox": {"l": 380.18979, "t": 283.49985, "r": 386.56036, "b": 291.3938, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "\u0085", "bbox": {"l": 393.9465, "t": 283.27823, "r": 399.48611, "b": 292.08624, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "Row Permission", "bbox": {"l": 145.49409, "t": 259.80902000000003, "r": 224.43881, "b": 270.33429, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": ":", "bbox": {"l": 224.43390000000002, "t": 259.80902000000003, "r": 227.83154, "b": 270.34662000000003, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "WHERE NAME <> \u0091CAIN\u0092", "bbox": {"l": 145.49409, "t": 289.35373, "r": 267.97665, "b": 299.89133, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "s", "bbox": {"l": 304.82001, "t": 255.23577999999998, "r": 309.67026, "b": 266.24114999999995, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "p", "bbox": {"l": 309.68259, "t": 255.23577999999998, "r": 316.18243, "b": 266.24114999999995, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "in", "bbox": {"l": 316.17621, "t": 255.23577999999998, "r": 325.67731, "b": 266.24114999999995, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "thru", "bbox": {"l": 304.45065, "t": 270.00811999999996, "r": 326.05524, "b": 281.01349, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "rec", "bbox": {"l": 296.51059, "t": 284.78042999999997, "r": 311.95633, "b": 295.78583, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "ords", "bbox": {"l": 311.84555, "t": 284.78042999999997, "r": 334.01147, "b": 295.78583, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "\u0085", "bbox": {"l": 380.18979, "t": 298.48804, "r": 386.56036, "b": 306.38199, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "\u0085", "bbox": {"l": 393.9465, "t": 298.26642, "r": 399.48611, "b": 307.07443, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "\u0085", "bbox": {"l": 380.18979, "t": 313.44501, "r": 386.56036, "b": 321.33896, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "\u0085", "bbox": {"l": 393.9465, "t": 313.22339, "r": 399.48611, "b": 322.0314, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "1000001", "bbox": {"l": 353.81491, "t": 328.43283, "r": 386.56885, "b": 336.32678, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "123", "bbox": {"l": 393.9465, "t": 328.21121, "r": 410.56259, "b": 337.01923, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "CAIN", "bbox": {"l": 410.5654, "t": 328.7559499999999, "r": 432.62787, "b": 337.0654, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "vvvvvv456", "bbox": {"l": 432.63159, "t": 328.21121, "r": 482.27213000000006, "b": 337.01923, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "\u00d7", "bbox": {"l": 295.06409, "t": 323.94492, "r": 305.28674, "b": 341.51636, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "1000002", "bbox": {"l": 353.81491, "t": 343.42062, "r": 386.56885, "b": 351.31458, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "123", "bbox": {"l": 393.94669, "t": 343.19901, "r": 410.56277, "b": 352.00702, "coord_origin": "TOPLEFT"}}, {"id": 86, "text": "CAIN", "bbox": {"l": 410.56555, "t": 343.74374, "r": 432.62802000000005, "b": 352.05319, "coord_origin": "TOPLEFT"}}, {"id": 87, "text": "wwwwww456", "bbox": {"l": 432.63170999999994, "t": 343.19901, "r": 482.27224999999993, "b": 352.00702, "coord_origin": "TOPLEFT"}}, {"id": 88, "text": "1000003", "bbox": {"l": 353.81491, "t": 358.37759, "r": 386.56885, "b": 366.27155, "coord_origin": "TOPLEFT"}}, {"id": 89, "text": "123", "bbox": {"l": 393.94669, "t": 358.15598, "r": 410.56277, "b": 366.96399, "coord_origin": "TOPLEFT"}}, {"id": 90, "text": "CAIN", "bbox": {"l": 410.56555, "t": 358.70071, "r": 432.62802000000005, "b": 367.01016, "coord_origin": "TOPLEFT"}}, {"id": 91, "text": "xxxxxx456", "bbox": {"l": 432.63170999999994, "t": 358.15598, "r": 482.27224999999993, "b": 366.96399, "coord_origin": "TOPLEFT"}}, {"id": 92, "text": "GLYPH", "bbox": {"l": 293.21759, "t": 368.69284, "r": 303.44025, "b": 386.26428, "coord_origin": "TOPLEFT"}}, {"id": 93, "text": "\u00d7", "bbox": {"l": 295.06409, "t": 352.53653, "r": 305.28674, "b": 370.10797, "coord_origin": "TOPLEFT"}}, {"id": 94, "text": "1000004", "bbox": {"l": 353.81491, "t": 373.36545, "r": 386.56885, "b": 381.25939999999997, "coord_origin": "TOPLEFT"}}, {"id": 95, "text": "123", "bbox": {"l": 393.94669, "t": 373.14383, "r": 410.56277, "b": 381.95184, "coord_origin": "TOPLEFT"}}, {"id": 96, "text": "BEDOYA", "bbox": {"l": 410.56555, "t": 373.68857, "r": 443.64264, "b": 381.99802, "coord_origin": "TOPLEFT"}}, {"id": 97, "text": "yyyy456", "bbox": {"l": 443.68048, "t": 373.14383, "r": 482.27039, "b": 381.95184, "coord_origin": "TOPLEFT"}}, {"id": 98, "text": "1000005", "bbox": {"l": 353.81583, "t": 388.35287, "r": 386.56976, "b": 396.24683, "coord_origin": "TOPLEFT"}}, {"id": 99, "text": "123", "bbox": {"l": 393.9476, "t": 388.13126, "r": 410.56369, "b": 396.93927, "coord_origin": "TOPLEFT"}}, {"id": 100, "text": "BEDOYA", "bbox": {"l": 410.56647, "t": 388.67599, "r": 443.64354999999995, "b": 396.98544, "coord_origin": "TOPLEFT"}}, {"id": 101, "text": "zzzz456", "bbox": {"l": 443.6814, "t": 388.13126, "r": 482.2713, "b": 396.93927, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 122, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 370.56109619140625, "t": 754.820068359375, "r": 517.96918, "b": 763.9142456054688, "coord_origin": "TOPLEFT"}, "confidence": 0.9531034231185913, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 371.28, "t": 755.538002, "r": 517.96918, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 122, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.158935546875, "t": 754.1790161132812, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9219108819961548, "cells": [{"id": 1, "text": "107", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "107"}, {"label": "text", "id": 2, "page_no": 122, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.06326293945312, "t": 70.65892791748047, "r": 547.29565, "b": 116.73127746582031, "coord_origin": "TOPLEFT"}, "confidence": 0.9824259281158447, "cells": [{"id": 2, "text": "Before the record, as identified by the key, is considered available, the RCAC logic must be ", "bbox": {"l": 136.8002, "t": 71.50903000000005, "r": 539.8396, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "run. If the record is rejected by RCAC, the next record in sequence that is permissible must be ", "bbox": {"l": 136.8002, "t": 83.50885000000017, "r": 547.29565, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "identified. This spinning through the records can take a long time and uses many resources, ", "bbox": {"l": 136.8002, "t": 95.50867000000005, "r": 545.24677, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "as shown in Figure 6-24.", "bbox": {"l": 136.8002, "t": 107.50847999999996, "r": 246.12015, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Before the record, as identified by the key, is considered available, the RCAC logic must be run. If the record is rejected by RCAC, the next record in sequence that is permissible must be identified. This spinning through the records can take a long time and uses many resources, as shown in Figure 6-24."}, {"label": "caption", "id": 3, "page_no": 122, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.92271423339844, "t": 407.9793701171875, "r": 341.2294616699219, "b": 417.6308898925781, "coord_origin": "TOPLEFT"}, "confidence": 0.9458103775978088, "cells": [{"id": 6, "text": "Figure 6-24 Native record level access with RCAC", "bbox": {"l": 136.8, "t": 408.73801, "r": 340.54565, "b": 417.06302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-24 Native record level access with RCAC"}, {"label": "text", "id": 4, "page_no": 122, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.81785583496094, "t": 433.958251953125, "r": 525.86151, "b": 456.21856689453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9756483435630798, "cells": [{"id": 7, "text": "After the row permissions and column masks are designed and implemented, adequate ", "bbox": {"l": 136.8, "t": 434.68872, "r": 525.86151, "b": 443.90170000000006, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "performance and scalability testing are recommended.", "bbox": {"l": 136.8, "t": 446.74829, "r": 377.29614, "b": 455.96127, "coord_origin": "TOPLEFT"}}]}, "text": "After the row permissions and column masks are designed and implemented, adequate performance and scalability testing are recommended."}, {"label": "section_header", "id": 5, "page_no": 122, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 64.4524917602539, "t": 483.275146484375, "r": 510.04889, "b": 500.006103515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9643033742904663, "cells": [{"id": 9, "text": "6.7", "bbox": {"l": 64.800003, "t": 484.4407, "r": 87.161385, "b": 499.2037, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Exclusive lock to implement RCAC (availability issues)", "bbox": {"l": 91.633644, "t": 484.4407, "r": 510.04889, "b": 499.2037, "coord_origin": "TOPLEFT"}}]}, "text": "6.7 Exclusive lock to implement RCAC (availability issues)"}, {"label": "text", "id": 6, "page_no": 122, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.74249267578125, "t": 516.0097045898438, "r": 547.24969, "b": 549.92133, "coord_origin": "TOPLEFT"}, "confidence": 0.9808005094528198, "cells": [{"id": 11, "text": "When defining permissions or enabling RCAC, an exclusive lock on the base table is ", "bbox": {"l": 136.8, "t": 516.70871, "r": 512.02203, "b": 525.92169, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "obtained. The impact to other applications depends on the order of create permission and the ", "bbox": {"l": 136.8, "t": 528.70853, "r": 547.24969, "b": 537.92152, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "alter table to activate RCAC.", "bbox": {"l": 136.8, "t": 540.7083299999999, "r": 261.91846, "b": 549.92133, "coord_origin": "TOPLEFT"}}]}, "text": "When defining permissions or enabling RCAC, an exclusive lock on the base table is obtained. The impact to other applications depends on the order of create permission and the alter table to activate RCAC."}, {"label": "text", "id": 7, "page_no": 122, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.18580627441406, "t": 561.9881591796875, "r": 283.20502, "b": 572.285888671875, "coord_origin": "TOPLEFT"}, "confidence": 0.8252715468406677, "cells": [{"id": 14, "text": "Consider the following scenarios:", "bbox": {"l": 136.8, "t": 562.72789, "r": 283.20502, "b": 571.94089, "coord_origin": "TOPLEFT"}}]}, "text": "Consider the following scenarios:"}, {"label": "list_item", "id": 8, "page_no": 122, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.5818634033203, "t": 578.6119995117188, "r": 464.85846, "b": 588.9207, "coord_origin": "TOPLEFT"}, "confidence": 0.9519445896148682, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 579.8571000000001, "r": 141.78, "b": 588.63185, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Scenario 1: Adding permissions and RCAC is not enabled on the table:", "bbox": {"l": 151.20016, "t": 579.7076999999999, "r": 464.85846, "b": 588.9207, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Scenario 1: Adding permissions and RCAC is not enabled on the table:"}, {"label": "list_item", "id": 9, "page_no": 122, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 151.1683349609375, "t": 595.9595336914062, "r": 547.40094, "b": 617.96007, "coord_origin": "TOPLEFT"}, "confidence": 0.9689837098121643, "cells": [{"id": 17, "text": "-", "bbox": {"l": 152.03976, "t": 596.74727, "r": 157.61636, "b": 605.96027, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Job 1 reading data from the table (open for input) holds a *SHRRD on the member and ", "bbox": {"l": 165.6003, "t": 596.74727, "r": 547.40094, "b": 605.96027, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "a *SHRRD on the data. ", "bbox": {"l": 165.5993, "t": 608.74707, "r": 271.70319, "b": 617.96007, "coord_origin": "TOPLEFT"}}]}, "text": "-Job 1 reading data from the table (open for input) holds a *SHRRD on the member and a *SHRRD on the data."}, {"label": "list_item", "id": 10, "page_no": 122, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 151.33261108398438, "t": 624.4862670898438, "r": 546.01855, "b": 646.93968, "coord_origin": "TOPLEFT"}, "confidence": 0.972244918346405, "cells": [{"id": 20, "text": "-", "bbox": {"l": 152.03976, "t": 625.7268799999999, "r": 157.59546, "b": 634.93988, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Job 2 adding, updating, or deleting rows from table (open for output) holds a *SHRRD ", "bbox": {"l": 165.59932, "t": 625.7268799999999, "r": 546.01855, "b": 634.93988, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "on the member and a *SHRUPD on the data.", "bbox": {"l": 165.5993, "t": 637.72668, "r": 364.6698, "b": 646.93968, "coord_origin": "TOPLEFT"}}]}, "text": "-Job 2 adding, updating, or deleting rows from table (open for output) holds a *SHRRD on the member and a *SHRUPD on the data."}, {"label": "list_item", "id": 11, "page_no": 122, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 151.21334838867188, "t": 653.9972534179688, "r": 546.81927, "b": 664.3414916992188, "coord_origin": "TOPLEFT"}, "confidence": 0.9548404812812805, "cells": [{"id": 23, "text": "-", "bbox": {"l": 152.03976, "t": 654.7065, "r": 157.61139, "b": 663.91949, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Job 4 allocates the object and gets a *SHRRD on the file and a *EXCLRD on the data.", "bbox": {"l": 165.5993, "t": 654.7065, "r": 546.81927, "b": 663.91949, "coord_origin": "TOPLEFT"}}]}, "text": "-Job 4 allocates the object and gets a *SHRRD on the file and a *EXCLRD on the data."}, {"label": "list_item", "id": 12, "page_no": 122, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 151.15476989746094, "t": 670.9539794921875, "r": 547.16492, "b": 704.958679, "coord_origin": "TOPLEFT"}, "confidence": 0.9793244004249573, "cells": [{"id": 25, "text": "-", "bbox": {"l": 152.03976, "t": 671.7460599999999, "r": 157.61139, "b": 680.95906, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Job 3 attempts to add a permission to the table. Permission is added and the ", "bbox": {"l": 165.5993, "t": 671.7460599999999, "r": 507.56107000000003, "b": 680.95906, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "pseudo-closed cursors for Job1 and Job 2 are closed. Job 4 still holds the *SHRRD on ", "bbox": {"l": 165.5993, "t": 683.74586, "r": 547.16492, "b": 692.95887, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "the file and *EXCLRD on the data. ", "bbox": {"l": 165.5993, "t": 695.745674, "r": 320.09985, "b": 704.958679, "coord_origin": "TOPLEFT"}}]}, "text": "-Job 3 attempts to add a permission to the table. Permission is added and the pseudo-closed cursors for Job1 and Job 2 are closed. Job 4 still holds the *SHRRD on the file and *EXCLRD on the data."}, {"label": "text", "id": 13, "page_no": 122, "cluster": {"id": 13, "label": "text", "bbox": {"l": 150.30223083496094, "t": 711.9512939453125, "r": 545.11029, "b": 734.1187133789062, "coord_origin": "TOPLEFT"}, "confidence": 0.9760500192642212, "cells": [{"id": 29, "text": "The net result from Scenario 1 is that you can add permissions without having to end the ", "bbox": {"l": 151.19914, "t": 712.725487, "r": 545.11029, "b": 721.938492, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "applications that are reading the base table. ", "bbox": {"l": 151.19914, "t": 724.725296, "r": 347.6232, "b": 733.938301, "coord_origin": "TOPLEFT"}}]}, "text": "The net result from Scenario 1 is that you can add permissions without having to end the applications that are reading the base table."}, {"label": "picture", "id": 14, "page_no": 122, "cluster": {"id": 14, "label": "picture", "bbox": {"l": 135.89947509765625, "t": 131.36407470703125, "r": 513.2355346679688, "b": 404.8336486816406, "coord_origin": "TOPLEFT"}, "confidence": 0.9828073978424072, "cells": [{"id": 31, "text": "Native RLA Request", "bbox": {"l": 164.6366, "t": 161.3573, "r": 264.40671, "b": 171.8949, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "RRN", "bbox": {"l": 360.86261, "t": 148.70245, "r": 377.34851, "b": 156.60564999999997, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Record Data", "bbox": {"l": 418.90582, "t": 148.70245, "r": 465.54205, "b": 156.60564999999997, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "1", "bbox": {"l": 381.88269, "t": 163.68988000000002, "r": 386.56366, "b": 171.58385999999996, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "123", "bbox": {"l": 393.94705, "t": 163.46831999999995, "r": 410.56314, "b": 172.27630999999997, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "CAIN", "bbox": {"l": 410.56592, "t": 164.01306, "r": 432.62839, "b": 172.32245, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "aaaaaa456", "bbox": {"l": 432.63208, "t": 163.46831999999995, "r": 482.27261, "b": 172.27630999999997, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "RCAC", "bbox": {"l": 295.24869, "t": 139.88818000000003, "r": 335.90213, "b": 155.69464000000005, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "\u00d7", "bbox": {"l": 295.06409, "t": 158.86370999999997, "r": 305.28674, "b": 176.43517999999995, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "2", "bbox": {"l": 381.88239, "t": 178.64721999999995, "r": 386.56335, "b": 186.5412, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "123", "bbox": {"l": 393.94675, "t": 178.42566, "r": 410.56284, "b": 187.23364000000004, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CAIN", "bbox": {"l": 410.56561, "t": 178.97040000000004, "r": 432.62808, "b": 187.27979000000005, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "bbbbbb456", "bbox": {"l": 432.63177, "t": 178.42566, "r": 482.27231, "b": 187.23364000000004, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "3", "bbox": {"l": 381.88239, "t": 193.63469999999995, "r": 386.56335, "b": 201.52868999999998, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "123", "bbox": {"l": 393.94675, "t": 193.41314999999997, "r": 410.56284, "b": 202.22113000000002, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "CAIN", "bbox": {"l": 410.56561, "t": 193.95789000000002, "r": 432.62808, "b": 202.26727000000005, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "cccccc456", "bbox": {"l": 432.63177, "t": 193.41314999999997, "r": 482.27231, "b": 202.22113000000002, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "4", "bbox": {"l": 381.88239, "t": 208.62285999999995, "r": 386.56335, "b": 216.51684999999998, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "123", "bbox": {"l": 393.9465, "t": 208.40112, "r": 410.56259, "b": 217.20911, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "CAIN", "bbox": {"l": 410.5654, "t": 208.94586000000004, "r": 432.62787, "b": 217.25525000000005, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "dddddd456", "bbox": {"l": 432.63159, "t": 208.40112, "r": 482.27213000000006, "b": 217.20911, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "\u00d7", "bbox": {"l": 295.06409, "t": 187.85344999999995, "r": 305.28674, "b": 205.42493000000002, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "5", "bbox": {"l": 381.88239, "t": 223.57970999999998, "r": 386.56335, "b": 231.47369000000003, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "123", "bbox": {"l": 393.94675, "t": 223.35815000000002, "r": 410.56284, "b": 232.16614000000004, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "CAIN", "bbox": {"l": 410.56561, "t": 223.90288999999996, "r": 432.62808, "b": 232.21227999999996, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "eeeeee456", "bbox": {"l": 432.63177, "t": 223.35815000000002, "r": 482.27231, "b": 232.16614000000004, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "\u0085", "bbox": {"l": 380.19003, "t": 238.56719999999996, "r": 386.56061, "b": 246.46118, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "\u0085", "bbox": {"l": 393.94675, "t": 238.34564, "r": 399.48636, "b": 247.15363000000002, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "\u00d7", "bbox": {"l": 295.06409, "t": 216.84520999999995, "r": 305.28674, "b": 234.41669000000002, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "\u0085", "bbox": {"l": 380.18979, "t": 253.55542000000003, "r": 386.56036, "b": 261.44939999999997, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "\u0085", "bbox": {"l": 393.9465, "t": 253.33385999999996, "r": 399.48611, "b": 262.14185, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "\u0085", "bbox": {"l": 380.18979, "t": 268.51239, "r": 386.56036, "b": 276.40637000000004, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "\u0085", "bbox": {"l": 393.9465, "t": 268.29083, "r": 399.48611, "b": 277.09882000000005, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "\u0085", "bbox": {"l": 380.18979, "t": 283.49985, "r": 386.56036, "b": 291.3938, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "\u0085", "bbox": {"l": 393.9465, "t": 283.27823, "r": 399.48611, "b": 292.08624, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "Row Permission", "bbox": {"l": 145.49409, "t": 259.80902000000003, "r": 224.43881, "b": 270.33429, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": ":", "bbox": {"l": 224.43390000000002, "t": 259.80902000000003, "r": 227.83154, "b": 270.34662000000003, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "WHERE NAME <> \u0091CAIN\u0092", "bbox": {"l": 145.49409, "t": 289.35373, "r": 267.97665, "b": 299.89133, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "s", "bbox": {"l": 304.82001, "t": 255.23577999999998, "r": 309.67026, "b": 266.24114999999995, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "p", "bbox": {"l": 309.68259, "t": 255.23577999999998, "r": 316.18243, "b": 266.24114999999995, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "in", "bbox": {"l": 316.17621, "t": 255.23577999999998, "r": 325.67731, "b": 266.24114999999995, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "thru", "bbox": {"l": 304.45065, "t": 270.00811999999996, "r": 326.05524, "b": 281.01349, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "rec", "bbox": {"l": 296.51059, "t": 284.78042999999997, "r": 311.95633, "b": 295.78583, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "ords", "bbox": {"l": 311.84555, "t": 284.78042999999997, "r": 334.01147, "b": 295.78583, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "\u0085", "bbox": {"l": 380.18979, "t": 298.48804, "r": 386.56036, "b": 306.38199, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "\u0085", "bbox": {"l": 393.9465, "t": 298.26642, "r": 399.48611, "b": 307.07443, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "\u0085", "bbox": {"l": 380.18979, "t": 313.44501, "r": 386.56036, "b": 321.33896, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "\u0085", "bbox": {"l": 393.9465, "t": 313.22339, "r": 399.48611, "b": 322.0314, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "1000001", "bbox": {"l": 353.81491, "t": 328.43283, "r": 386.56885, "b": 336.32678, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "123", "bbox": {"l": 393.9465, "t": 328.21121, "r": 410.56259, "b": 337.01923, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "CAIN", "bbox": {"l": 410.5654, "t": 328.7559499999999, "r": 432.62787, "b": 337.0654, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "vvvvvv456", "bbox": {"l": 432.63159, "t": 328.21121, "r": 482.27213000000006, "b": 337.01923, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "\u00d7", "bbox": {"l": 295.06409, "t": 323.94492, "r": 305.28674, "b": 341.51636, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "1000002", "bbox": {"l": 353.81491, "t": 343.42062, "r": 386.56885, "b": 351.31458, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "123", "bbox": {"l": 393.94669, "t": 343.19901, "r": 410.56277, "b": 352.00702, "coord_origin": "TOPLEFT"}}, {"id": 86, "text": "CAIN", "bbox": {"l": 410.56555, "t": 343.74374, "r": 432.62802000000005, "b": 352.05319, "coord_origin": "TOPLEFT"}}, {"id": 87, "text": "wwwwww456", "bbox": {"l": 432.63170999999994, "t": 343.19901, "r": 482.27224999999993, "b": 352.00702, "coord_origin": "TOPLEFT"}}, {"id": 88, "text": "1000003", "bbox": {"l": 353.81491, "t": 358.37759, "r": 386.56885, "b": 366.27155, "coord_origin": "TOPLEFT"}}, {"id": 89, "text": "123", "bbox": {"l": 393.94669, "t": 358.15598, "r": 410.56277, "b": 366.96399, "coord_origin": "TOPLEFT"}}, {"id": 90, "text": "CAIN", "bbox": {"l": 410.56555, "t": 358.70071, "r": 432.62802000000005, "b": 367.01016, "coord_origin": "TOPLEFT"}}, {"id": 91, "text": "xxxxxx456", "bbox": {"l": 432.63170999999994, "t": 358.15598, "r": 482.27224999999993, "b": 366.96399, "coord_origin": "TOPLEFT"}}, {"id": 92, "text": "GLYPH", "bbox": {"l": 293.21759, "t": 368.69284, "r": 303.44025, "b": 386.26428, "coord_origin": "TOPLEFT"}}, {"id": 93, "text": "\u00d7", "bbox": {"l": 295.06409, "t": 352.53653, "r": 305.28674, "b": 370.10797, "coord_origin": "TOPLEFT"}}, {"id": 94, "text": "1000004", "bbox": {"l": 353.81491, "t": 373.36545, "r": 386.56885, "b": 381.25939999999997, "coord_origin": "TOPLEFT"}}, {"id": 95, "text": "123", "bbox": {"l": 393.94669, "t": 373.14383, "r": 410.56277, "b": 381.95184, "coord_origin": "TOPLEFT"}}, {"id": 96, "text": "BEDOYA", "bbox": {"l": 410.56555, "t": 373.68857, "r": 443.64264, "b": 381.99802, "coord_origin": "TOPLEFT"}}, {"id": 97, "text": "yyyy456", "bbox": {"l": 443.68048, "t": 373.14383, "r": 482.27039, "b": 381.95184, "coord_origin": "TOPLEFT"}}, {"id": 98, "text": "1000005", "bbox": {"l": 353.81583, "t": 388.35287, "r": 386.56976, "b": 396.24683, "coord_origin": "TOPLEFT"}}, {"id": 99, "text": "123", "bbox": {"l": 393.9476, "t": 388.13126, "r": 410.56369, "b": 396.93927, "coord_origin": "TOPLEFT"}}, {"id": 100, "text": "BEDOYA", "bbox": {"l": 410.56647, "t": 388.67599, "r": 443.64354999999995, "b": 396.98544, "coord_origin": "TOPLEFT"}}, {"id": 101, "text": "zzzz456", "bbox": {"l": 443.6814, "t": 388.13126, "r": 482.2713, "b": 396.93927, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 122, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.06326293945312, "t": 70.65892791748047, "r": 547.29565, "b": 116.73127746582031, "coord_origin": "TOPLEFT"}, "confidence": 0.9824259281158447, "cells": [{"id": 2, "text": "Before the record, as identified by the key, is considered available, the RCAC logic must be ", "bbox": {"l": 136.8002, "t": 71.50903000000005, "r": 539.8396, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "run. If the record is rejected by RCAC, the next record in sequence that is permissible must be ", "bbox": {"l": 136.8002, "t": 83.50885000000017, "r": 547.29565, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "identified. This spinning through the records can take a long time and uses many resources, ", "bbox": {"l": 136.8002, "t": 95.50867000000005, "r": 545.24677, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "as shown in Figure 6-24.", "bbox": {"l": 136.8002, "t": 107.50847999999996, "r": 246.12015, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Before the record, as identified by the key, is considered available, the RCAC logic must be run. If the record is rejected by RCAC, the next record in sequence that is permissible must be identified. This spinning through the records can take a long time and uses many resources, as shown in Figure 6-24."}, {"label": "caption", "id": 3, "page_no": 122, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.92271423339844, "t": 407.9793701171875, "r": 341.2294616699219, "b": 417.6308898925781, "coord_origin": "TOPLEFT"}, "confidence": 0.9458103775978088, "cells": [{"id": 6, "text": "Figure 6-24 Native record level access with RCAC", "bbox": {"l": 136.8, "t": 408.73801, "r": 340.54565, "b": 417.06302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-24 Native record level access with RCAC"}, {"label": "text", "id": 4, "page_no": 122, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.81785583496094, "t": 433.958251953125, "r": 525.86151, "b": 456.21856689453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9756483435630798, "cells": [{"id": 7, "text": "After the row permissions and column masks are designed and implemented, adequate ", "bbox": {"l": 136.8, "t": 434.68872, "r": 525.86151, "b": 443.90170000000006, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "performance and scalability testing are recommended.", "bbox": {"l": 136.8, "t": 446.74829, "r": 377.29614, "b": 455.96127, "coord_origin": "TOPLEFT"}}]}, "text": "After the row permissions and column masks are designed and implemented, adequate performance and scalability testing are recommended."}, {"label": "section_header", "id": 5, "page_no": 122, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 64.4524917602539, "t": 483.275146484375, "r": 510.04889, "b": 500.006103515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9643033742904663, "cells": [{"id": 9, "text": "6.7", "bbox": {"l": 64.800003, "t": 484.4407, "r": 87.161385, "b": 499.2037, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Exclusive lock to implement RCAC (availability issues)", "bbox": {"l": 91.633644, "t": 484.4407, "r": 510.04889, "b": 499.2037, "coord_origin": "TOPLEFT"}}]}, "text": "6.7 Exclusive lock to implement RCAC (availability issues)"}, {"label": "text", "id": 6, "page_no": 122, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.74249267578125, "t": 516.0097045898438, "r": 547.24969, "b": 549.92133, "coord_origin": "TOPLEFT"}, "confidence": 0.9808005094528198, "cells": [{"id": 11, "text": "When defining permissions or enabling RCAC, an exclusive lock on the base table is ", "bbox": {"l": 136.8, "t": 516.70871, "r": 512.02203, "b": 525.92169, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "obtained. The impact to other applications depends on the order of create permission and the ", "bbox": {"l": 136.8, "t": 528.70853, "r": 547.24969, "b": 537.92152, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "alter table to activate RCAC.", "bbox": {"l": 136.8, "t": 540.7083299999999, "r": 261.91846, "b": 549.92133, "coord_origin": "TOPLEFT"}}]}, "text": "When defining permissions or enabling RCAC, an exclusive lock on the base table is obtained. The impact to other applications depends on the order of create permission and the alter table to activate RCAC."}, {"label": "text", "id": 7, "page_no": 122, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.18580627441406, "t": 561.9881591796875, "r": 283.20502, "b": 572.285888671875, "coord_origin": "TOPLEFT"}, "confidence": 0.8252715468406677, "cells": [{"id": 14, "text": "Consider the following scenarios:", "bbox": {"l": 136.8, "t": 562.72789, "r": 283.20502, "b": 571.94089, "coord_origin": "TOPLEFT"}}]}, "text": "Consider the following scenarios:"}, {"label": "list_item", "id": 8, "page_no": 122, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.5818634033203, "t": 578.6119995117188, "r": 464.85846, "b": 588.9207, "coord_origin": "TOPLEFT"}, "confidence": 0.9519445896148682, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 579.8571000000001, "r": 141.78, "b": 588.63185, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Scenario 1: Adding permissions and RCAC is not enabled on the table:", "bbox": {"l": 151.20016, "t": 579.7076999999999, "r": 464.85846, "b": 588.9207, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Scenario 1: Adding permissions and RCAC is not enabled on the table:"}, {"label": "list_item", "id": 9, "page_no": 122, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 151.1683349609375, "t": 595.9595336914062, "r": 547.40094, "b": 617.96007, "coord_origin": "TOPLEFT"}, "confidence": 0.9689837098121643, "cells": [{"id": 17, "text": "-", "bbox": {"l": 152.03976, "t": 596.74727, "r": 157.61636, "b": 605.96027, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Job 1 reading data from the table (open for input) holds a *SHRRD on the member and ", "bbox": {"l": 165.6003, "t": 596.74727, "r": 547.40094, "b": 605.96027, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "a *SHRRD on the data. ", "bbox": {"l": 165.5993, "t": 608.74707, "r": 271.70319, "b": 617.96007, "coord_origin": "TOPLEFT"}}]}, "text": "-Job 1 reading data from the table (open for input) holds a *SHRRD on the member and a *SHRRD on the data."}, {"label": "list_item", "id": 10, "page_no": 122, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 151.33261108398438, "t": 624.4862670898438, "r": 546.01855, "b": 646.93968, "coord_origin": "TOPLEFT"}, "confidence": 0.972244918346405, "cells": [{"id": 20, "text": "-", "bbox": {"l": 152.03976, "t": 625.7268799999999, "r": 157.59546, "b": 634.93988, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Job 2 adding, updating, or deleting rows from table (open for output) holds a *SHRRD ", "bbox": {"l": 165.59932, "t": 625.7268799999999, "r": 546.01855, "b": 634.93988, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "on the member and a *SHRUPD on the data.", "bbox": {"l": 165.5993, "t": 637.72668, "r": 364.6698, "b": 646.93968, "coord_origin": "TOPLEFT"}}]}, "text": "-Job 2 adding, updating, or deleting rows from table (open for output) holds a *SHRRD on the member and a *SHRUPD on the data."}, {"label": "list_item", "id": 11, "page_no": 122, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 151.21334838867188, "t": 653.9972534179688, "r": 546.81927, "b": 664.3414916992188, "coord_origin": "TOPLEFT"}, "confidence": 0.9548404812812805, "cells": [{"id": 23, "text": "-", "bbox": {"l": 152.03976, "t": 654.7065, "r": 157.61139, "b": 663.91949, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Job 4 allocates the object and gets a *SHRRD on the file and a *EXCLRD on the data.", "bbox": {"l": 165.5993, "t": 654.7065, "r": 546.81927, "b": 663.91949, "coord_origin": "TOPLEFT"}}]}, "text": "-Job 4 allocates the object and gets a *SHRRD on the file and a *EXCLRD on the data."}, {"label": "list_item", "id": 12, "page_no": 122, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 151.15476989746094, "t": 670.9539794921875, "r": 547.16492, "b": 704.958679, "coord_origin": "TOPLEFT"}, "confidence": 0.9793244004249573, "cells": [{"id": 25, "text": "-", "bbox": {"l": 152.03976, "t": 671.7460599999999, "r": 157.61139, "b": 680.95906, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Job 3 attempts to add a permission to the table. Permission is added and the ", "bbox": {"l": 165.5993, "t": 671.7460599999999, "r": 507.56107000000003, "b": 680.95906, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "pseudo-closed cursors for Job1 and Job 2 are closed. Job 4 still holds the *SHRRD on ", "bbox": {"l": 165.5993, "t": 683.74586, "r": 547.16492, "b": 692.95887, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "the file and *EXCLRD on the data. ", "bbox": {"l": 165.5993, "t": 695.745674, "r": 320.09985, "b": 704.958679, "coord_origin": "TOPLEFT"}}]}, "text": "-Job 3 attempts to add a permission to the table. Permission is added and the pseudo-closed cursors for Job1 and Job 2 are closed. Job 4 still holds the *SHRRD on the file and *EXCLRD on the data."}, {"label": "text", "id": 13, "page_no": 122, "cluster": {"id": 13, "label": "text", "bbox": {"l": 150.30223083496094, "t": 711.9512939453125, "r": 545.11029, "b": 734.1187133789062, "coord_origin": "TOPLEFT"}, "confidence": 0.9760500192642212, "cells": [{"id": 29, "text": "The net result from Scenario 1 is that you can add permissions without having to end the ", "bbox": {"l": 151.19914, "t": 712.725487, "r": 545.11029, "b": 721.938492, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "applications that are reading the base table. ", "bbox": {"l": 151.19914, "t": 724.725296, "r": 347.6232, "b": 733.938301, "coord_origin": "TOPLEFT"}}]}, "text": "The net result from Scenario 1 is that you can add permissions without having to end the applications that are reading the base table."}, {"label": "picture", "id": 14, "page_no": 122, "cluster": {"id": 14, "label": "picture", "bbox": {"l": 135.89947509765625, "t": 131.36407470703125, "r": 513.2355346679688, "b": 404.8336486816406, "coord_origin": "TOPLEFT"}, "confidence": 0.9828073978424072, "cells": [{"id": 31, "text": "Native RLA Request", "bbox": {"l": 164.6366, "t": 161.3573, "r": 264.40671, "b": 171.8949, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "RRN", "bbox": {"l": 360.86261, "t": 148.70245, "r": 377.34851, "b": 156.60564999999997, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Record Data", "bbox": {"l": 418.90582, "t": 148.70245, "r": 465.54205, "b": 156.60564999999997, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "1", "bbox": {"l": 381.88269, "t": 163.68988000000002, "r": 386.56366, "b": 171.58385999999996, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "123", "bbox": {"l": 393.94705, "t": 163.46831999999995, "r": 410.56314, "b": 172.27630999999997, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "CAIN", "bbox": {"l": 410.56592, "t": 164.01306, "r": 432.62839, "b": 172.32245, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "aaaaaa456", "bbox": {"l": 432.63208, "t": 163.46831999999995, "r": 482.27261, "b": 172.27630999999997, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "RCAC", "bbox": {"l": 295.24869, "t": 139.88818000000003, "r": 335.90213, "b": 155.69464000000005, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "\u00d7", "bbox": {"l": 295.06409, "t": 158.86370999999997, "r": 305.28674, "b": 176.43517999999995, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "2", "bbox": {"l": 381.88239, "t": 178.64721999999995, "r": 386.56335, "b": 186.5412, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "123", "bbox": {"l": 393.94675, "t": 178.42566, "r": 410.56284, "b": 187.23364000000004, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CAIN", "bbox": {"l": 410.56561, "t": 178.97040000000004, "r": 432.62808, "b": 187.27979000000005, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "bbbbbb456", "bbox": {"l": 432.63177, "t": 178.42566, "r": 482.27231, "b": 187.23364000000004, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "3", "bbox": {"l": 381.88239, "t": 193.63469999999995, "r": 386.56335, "b": 201.52868999999998, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "123", "bbox": {"l": 393.94675, "t": 193.41314999999997, "r": 410.56284, "b": 202.22113000000002, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "CAIN", "bbox": {"l": 410.56561, "t": 193.95789000000002, "r": 432.62808, "b": 202.26727000000005, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "cccccc456", "bbox": {"l": 432.63177, "t": 193.41314999999997, "r": 482.27231, "b": 202.22113000000002, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "4", "bbox": {"l": 381.88239, "t": 208.62285999999995, "r": 386.56335, "b": 216.51684999999998, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "123", "bbox": {"l": 393.9465, "t": 208.40112, "r": 410.56259, "b": 217.20911, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "CAIN", "bbox": {"l": 410.5654, "t": 208.94586000000004, "r": 432.62787, "b": 217.25525000000005, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "dddddd456", "bbox": {"l": 432.63159, "t": 208.40112, "r": 482.27213000000006, "b": 217.20911, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "\u00d7", "bbox": {"l": 295.06409, "t": 187.85344999999995, "r": 305.28674, "b": 205.42493000000002, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "5", "bbox": {"l": 381.88239, "t": 223.57970999999998, "r": 386.56335, "b": 231.47369000000003, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "123", "bbox": {"l": 393.94675, "t": 223.35815000000002, "r": 410.56284, "b": 232.16614000000004, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "CAIN", "bbox": {"l": 410.56561, "t": 223.90288999999996, "r": 432.62808, "b": 232.21227999999996, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "eeeeee456", "bbox": {"l": 432.63177, "t": 223.35815000000002, "r": 482.27231, "b": 232.16614000000004, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "\u0085", "bbox": {"l": 380.19003, "t": 238.56719999999996, "r": 386.56061, "b": 246.46118, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "\u0085", "bbox": {"l": 393.94675, "t": 238.34564, "r": 399.48636, "b": 247.15363000000002, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "\u00d7", "bbox": {"l": 295.06409, "t": 216.84520999999995, "r": 305.28674, "b": 234.41669000000002, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "\u0085", "bbox": {"l": 380.18979, "t": 253.55542000000003, "r": 386.56036, "b": 261.44939999999997, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "\u0085", "bbox": {"l": 393.9465, "t": 253.33385999999996, "r": 399.48611, "b": 262.14185, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "\u0085", "bbox": {"l": 380.18979, "t": 268.51239, "r": 386.56036, "b": 276.40637000000004, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "\u0085", "bbox": {"l": 393.9465, "t": 268.29083, "r": 399.48611, "b": 277.09882000000005, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "\u0085", "bbox": {"l": 380.18979, "t": 283.49985, "r": 386.56036, "b": 291.3938, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "\u0085", "bbox": {"l": 393.9465, "t": 283.27823, "r": 399.48611, "b": 292.08624, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "Row Permission", "bbox": {"l": 145.49409, "t": 259.80902000000003, "r": 224.43881, "b": 270.33429, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": ":", "bbox": {"l": 224.43390000000002, "t": 259.80902000000003, "r": 227.83154, "b": 270.34662000000003, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "WHERE NAME <> \u0091CAIN\u0092", "bbox": {"l": 145.49409, "t": 289.35373, "r": 267.97665, "b": 299.89133, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "s", "bbox": {"l": 304.82001, "t": 255.23577999999998, "r": 309.67026, "b": 266.24114999999995, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "p", "bbox": {"l": 309.68259, "t": 255.23577999999998, "r": 316.18243, "b": 266.24114999999995, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "in", "bbox": {"l": 316.17621, "t": 255.23577999999998, "r": 325.67731, "b": 266.24114999999995, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "thru", "bbox": {"l": 304.45065, "t": 270.00811999999996, "r": 326.05524, "b": 281.01349, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "rec", "bbox": {"l": 296.51059, "t": 284.78042999999997, "r": 311.95633, "b": 295.78583, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "ords", "bbox": {"l": 311.84555, "t": 284.78042999999997, "r": 334.01147, "b": 295.78583, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "\u0085", "bbox": {"l": 380.18979, "t": 298.48804, "r": 386.56036, "b": 306.38199, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "\u0085", "bbox": {"l": 393.9465, "t": 298.26642, "r": 399.48611, "b": 307.07443, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "\u0085", "bbox": {"l": 380.18979, "t": 313.44501, "r": 386.56036, "b": 321.33896, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "\u0085", "bbox": {"l": 393.9465, "t": 313.22339, "r": 399.48611, "b": 322.0314, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "1000001", "bbox": {"l": 353.81491, "t": 328.43283, "r": 386.56885, "b": 336.32678, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "123", "bbox": {"l": 393.9465, "t": 328.21121, "r": 410.56259, "b": 337.01923, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "CAIN", "bbox": {"l": 410.5654, "t": 328.7559499999999, "r": 432.62787, "b": 337.0654, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "vvvvvv456", "bbox": {"l": 432.63159, "t": 328.21121, "r": 482.27213000000006, "b": 337.01923, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "\u00d7", "bbox": {"l": 295.06409, "t": 323.94492, "r": 305.28674, "b": 341.51636, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "1000002", "bbox": {"l": 353.81491, "t": 343.42062, "r": 386.56885, "b": 351.31458, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "123", "bbox": {"l": 393.94669, "t": 343.19901, "r": 410.56277, "b": 352.00702, "coord_origin": "TOPLEFT"}}, {"id": 86, "text": "CAIN", "bbox": {"l": 410.56555, "t": 343.74374, "r": 432.62802000000005, "b": 352.05319, "coord_origin": "TOPLEFT"}}, {"id": 87, "text": "wwwwww456", "bbox": {"l": 432.63170999999994, "t": 343.19901, "r": 482.27224999999993, "b": 352.00702, "coord_origin": "TOPLEFT"}}, {"id": 88, "text": "1000003", "bbox": {"l": 353.81491, "t": 358.37759, "r": 386.56885, "b": 366.27155, "coord_origin": "TOPLEFT"}}, {"id": 89, "text": "123", "bbox": {"l": 393.94669, "t": 358.15598, "r": 410.56277, "b": 366.96399, "coord_origin": "TOPLEFT"}}, {"id": 90, "text": "CAIN", "bbox": {"l": 410.56555, "t": 358.70071, "r": 432.62802000000005, "b": 367.01016, "coord_origin": "TOPLEFT"}}, {"id": 91, "text": "xxxxxx456", "bbox": {"l": 432.63170999999994, "t": 358.15598, "r": 482.27224999999993, "b": 366.96399, "coord_origin": "TOPLEFT"}}, {"id": 92, "text": "GLYPH", "bbox": {"l": 293.21759, "t": 368.69284, "r": 303.44025, "b": 386.26428, "coord_origin": "TOPLEFT"}}, {"id": 93, "text": "\u00d7", "bbox": {"l": 295.06409, "t": 352.53653, "r": 305.28674, "b": 370.10797, "coord_origin": "TOPLEFT"}}, {"id": 94, "text": "1000004", "bbox": {"l": 353.81491, "t": 373.36545, "r": 386.56885, "b": 381.25939999999997, "coord_origin": "TOPLEFT"}}, {"id": 95, "text": "123", "bbox": {"l": 393.94669, "t": 373.14383, "r": 410.56277, "b": 381.95184, "coord_origin": "TOPLEFT"}}, {"id": 96, "text": "BEDOYA", "bbox": {"l": 410.56555, "t": 373.68857, "r": 443.64264, "b": 381.99802, "coord_origin": "TOPLEFT"}}, {"id": 97, "text": "yyyy456", "bbox": {"l": 443.68048, "t": 373.14383, "r": 482.27039, "b": 381.95184, "coord_origin": "TOPLEFT"}}, {"id": 98, "text": "1000005", "bbox": {"l": 353.81583, "t": 388.35287, "r": 386.56976, "b": 396.24683, "coord_origin": "TOPLEFT"}}, {"id": 99, "text": "123", "bbox": {"l": 393.9476, "t": 388.13126, "r": 410.56369, "b": 396.93927, "coord_origin": "TOPLEFT"}}, {"id": 100, "text": "BEDOYA", "bbox": {"l": 410.56647, "t": 388.67599, "r": 443.64354999999995, "b": 396.98544, "coord_origin": "TOPLEFT"}}, {"id": 101, "text": "zzzz456", "bbox": {"l": 443.6814, "t": 388.13126, "r": 482.2713, "b": 396.93927, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 122, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 370.56109619140625, "t": 754.820068359375, "r": 517.96918, "b": 763.9142456054688, "coord_origin": "TOPLEFT"}, "confidence": 0.9531034231185913, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 371.28, "t": 755.538002, "r": 517.96918, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 122, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.158935546875, "t": 754.1790161132812, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9219108819961548, "cells": [{"id": 1, "text": "107", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "107"}]}}, {"page_no": 123, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "108 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "GLYPH", "bbox": {"l": 136.8, "t": 71.65808000000015, "r": 141.78, "b": 80.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Scenario 2: Altering a table to activate RCAC requires that all applications using the table ", "bbox": {"l": 151.20016, "t": 71.50867000000005, "r": 547.22571, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "be ended. The alter table requires exclusive use of the table.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 417.98367, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 100.6377, "r": 141.78, "b": 109.41247999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Scenario 3: Altering the table to activate RCAC before the permissions are added. The ", "bbox": {"l": 151.20016, "t": 100.48828000000003, "r": 535.80072, "b": 109.70129000000009, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "alter table requires exclusive use of the table, as in scenario 2. All applications must be ", "bbox": {"l": 151.20016, "t": 112.48810000000014, "r": 536.8244, "b": 121.70110999999997, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "ended to perform this alter. After the alter is complete, any applications trying to read data ", "bbox": {"l": 151.20018, "t": 124.48792000000003, "r": 547.35034, "b": 133.70092999999997, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "do not get any results, and attempts to insert new rows returns the following message:", "bbox": {"l": 151.20018, "t": 136.48773000000006, "r": 531.30865, "b": 145.70074, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "SQ20471] INSERT or UPDATE does not satisfy row permissions. ", "bbox": {"l": 151.20018, "t": 153.67669999999998, "r": 451.01605, "b": 162.45147999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "To create a permission in this case requires that you end all the applications, unlike ", "bbox": {"l": 151.20018, "t": 170.50707999999997, "r": 520.22693, "b": 179.72009000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "scenario 1 where permissions can be added while the applications were active. In this ", "bbox": {"l": 151.20018, "t": 182.50689999999997, "r": 532.72491, "b": 191.71991000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "case, the applications must be ended to run the create permission.", "bbox": {"l": 151.20016, "t": 194.50671, "r": 445.84579, "b": 203.71973000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "6.8", "bbox": {"l": 64.800003, "t": 232.20068000000003, "r": 87.224396, "b": 246.96367999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Avoiding propagation of masked data", "bbox": {"l": 91.709259, "t": 232.20068000000003, "r": 380.35474, "b": 246.96367999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Operations such as insert or update into a table with active column access control can fail if ", "bbox": {"l": 136.8, "t": 264.52855999999997, "r": 542.45679, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "the input data is masked data. This can happen when data to be inserted or updated contains ", "bbox": {"l": 136.8, "t": 276.52837999999997, "r": 547.30225, "b": 285.74139, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "the masked value as a result of a ", "bbox": {"l": 136.8, "t": 288.52823, "r": 285.78268, "b": 297.74120999999997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "SELECT", "bbox": {"l": 285.77969, "t": 288.67761, "r": 315.77921, "b": 297.50219999999996, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": " from a table with active column access control.", "bbox": {"l": 315.77921, "t": 288.52823, "r": 524.6864, "b": 297.74120999999997, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "For example, assume TABLE1 and TABLE2 have active column access control and for insert, ", "bbox": {"l": 136.799, "t": 310.48804, "r": 547.19684, "b": 319.7010200000001, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "selecting data from TABLE2 returns the masked data. The following INSERT returns an error:", "bbox": {"l": 136.799, "t": 322.48785, "r": 547.17798, "b": 331.70084, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "INSERT INTO TABLE1 SELECT * FROM TABLE2", "bbox": {"l": 136.799, "t": 339.67682, "r": 331.6763, "b": 348.4516, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "The masked data that is returned from the ", "bbox": {"l": 136.799, "t": 361.48724, "r": 325.64349, "b": 370.70023, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "SELECT * FROM TABLE2", "bbox": {"l": 325.7392, "t": 361.63662999999997, "r": 425.638, "b": 370.46121, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": " might not be valid input ", "bbox": {"l": 425.69876, "t": 361.48724, "r": 533.77673, "b": 370.70023, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "data for TABLE1 because of data type or column check constraint.", "bbox": {"l": 136.79898, "t": 373.48706, "r": 428.83823, "b": 382.70004, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "There are two ways to prevent this situation from happening: Define a check constraint or ", "bbox": {"l": 136.79898, "t": 395.50661999999994, "r": 532.65228, "b": 404.7196, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "create a before trigger. ", "bbox": {"l": 136.79898, "t": 407.50644000000005, "r": 240.03132999999997, "b": 416.71942, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "6.8.1", "bbox": {"l": 64.800003, "t": 437.33475, "r": 94.18383, "b": 449.32272, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Check constraint solution", "bbox": {"l": 97.856804, "t": 437.33475, "r": 260.10202, "b": 449.32272, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "One way to prevent this problem is to define a check constraint.", "bbox": {"l": 136.8, "t": 463.48874, "r": 416.49878, "b": 472.70172, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "As part of RCAC, new SQL syntax is provided to allow an action to be performed when a ", "bbox": {"l": 136.8, "t": 485.5083, "r": 530.50873, "b": 494.72128, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "violation of the check constraints check condition occurs instead of giving that error. However, ", "bbox": {"l": 136.8, "t": 497.50812, "r": 547.25665, "b": 506.7211, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "if the check condition is still not met after the action, a hard error is returned. A check ", "bbox": {"l": 136.8, "t": 509.50793, "r": 513.95343, "b": 518.72092, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "constraint with the new on-violation-clause is allowed on both the ", "bbox": {"l": 136.8, "t": 521.50775, "r": 426.2395, "b": 530.72073, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "CREATE TABLE", "bbox": {"l": 426.23962, "t": 521.65714, "r": 486.1788900000001, "b": 530.48172, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": " and ", "bbox": {"l": 486.1799, "t": 521.50775, "r": 508.43851, "b": 530.72073, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ALTER ", "bbox": {"l": 508.4395099999999, "t": 521.65714, "r": 538.37927, "b": 530.48172, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "TABLE", "bbox": {"l": 136.80002, "t": 533.65695, "r": 161.75978, "b": 542.4815100000001, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": " statements.", "bbox": {"l": 161.75978, "t": 533.5075400000001, "r": 216.09458999999998, "b": 542.72055, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "In the Example 6-4, the mask is defined to return a value of \u2019XXX-XX-nnnn\u2019 for any query that ", "bbox": {"l": 136.80002, "t": 555.52711, "r": 547.17096, "b": 564.74011, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "is not done by a user profile in the DBMGR group. The constraint checks that the column SSN ", "bbox": {"l": 136.80002, "t": 567.52692, "r": 547.2804, "b": 576.73991, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "does not have the masked value.", "bbox": {"l": 136.80002, "t": 579.5267200000001, "r": 282.49396, "b": 588.73972, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Example 6-4 Check constraint to avoid masked data", "bbox": {"l": 64.800003, "t": 601.5178999999999, "r": 276.75806, "b": 609.84291, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "CREATE SCHEMA MY_LIB", "bbox": {"l": 64.800003, "t": 618.6780200000001, "r": 164.69879, "b": 627.45277, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "SET SCHEMA MY_LIB", "bbox": {"l": 64.800003, "t": 630.67783, "r": 149.69904, "b": 639.45258, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "CREATE TABLE MY_LIB.EMP_INFO", "bbox": {"l": 64.800003, "t": 642.67763, "r": 204.71805, "b": 651.45238, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "(COL1_name CHAR(10) WITH DEFAULT 'DEFAULT',", "bbox": {"l": 119.66983, "t": 654.67743, "r": 414.59515, "b": 663.45218, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "COL2_ssn CHAR(11) WITH DEFAULT 'DEFAULT')", "bbox": {"l": 126.86674, "t": 666.67724, "r": 409.61517, "b": 675.452, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "CREATE MASK MASK_ssn ON MY_LIB.EMP_INFO", "bbox": {"l": 64.800003, "t": 678.67705, "r": 259.67731, "b": 687.45181, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "FOR COLUMN COL2_ssn RETURN", "bbox": {"l": 64.800003, "t": 690.67686, "r": 194.6983, "b": 699.4516140000001, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "CASE", "bbox": {"l": 64.800003, "t": 702.676666, "r": 84.77977, "b": 711.451424, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": " WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBMGR' ) = 1", "bbox": {"l": 64.800003, "t": 714.676476, "r": 359.63589, "b": 723.451233, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": " THEN COL2_ssn", "bbox": {"l": 64.800003, "t": 726.676285, "r": 139.73904, "b": 735.451042, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.37716674804688, "t": 754.4281616210938, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9158027768135071, "cells": [{"id": 0, "text": "108 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 98.70913696289062, "t": 754.5992431640625, "r": 339.81958, "b": 764.000732421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9243242740631104, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 135.47494506835938, "t": 70.6369857788086, "r": 547.22571, "b": 92.73275756835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9781896471977234, "cells": [{"id": 2, "text": "GLYPH", "bbox": {"l": 136.8, "t": 71.65808000000015, "r": 141.78, "b": 80.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Scenario 2: Altering a table to activate RCAC requires that all applications using the table ", "bbox": {"l": 151.20016, "t": 71.50867000000005, "r": 547.22571, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "be ended. The alter table requires exclusive use of the table.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 417.98367, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "list_item", "bbox": {"l": 135.47486877441406, "t": 99.36483764648438, "r": 547.35034, "b": 145.75274658203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9809828400611877, "cells": [{"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 100.6377, "r": 141.78, "b": 109.41247999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Scenario 3: Altering the table to activate RCAC before the permissions are added. The ", "bbox": {"l": 151.20016, "t": 100.48828000000003, "r": 535.80072, "b": 109.70129000000009, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "alter table requires exclusive use of the table, as in scenario 2. All applications must be ", "bbox": {"l": 151.20016, "t": 112.48810000000014, "r": 536.8244, "b": 121.70110999999997, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "ended to perform this alter. After the alter is complete, any applications trying to read data ", "bbox": {"l": 151.20018, "t": 124.48792000000003, "r": 547.35034, "b": 133.70092999999997, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "do not get any results, and attempts to insert new rows returns the following message:", "bbox": {"l": 151.20018, "t": 136.48773000000006, "r": 531.30865, "b": 145.70074, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 150.78724670410156, "t": 152.71084594726562, "r": 451.01605, "b": 162.89410400390625, "coord_origin": "TOPLEFT"}, "confidence": 0.7630197405815125, "cells": [{"id": 10, "text": "SQ20471] INSERT or UPDATE does not satisfy row permissions. ", "bbox": {"l": 151.20018, "t": 153.67669999999998, "r": 451.01605, "b": 162.45147999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 150.4237060546875, "t": 169.4068603515625, "r": 532.72491, "b": 203.71973000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9614198207855225, "cells": [{"id": 11, "text": "To create a permission in this case requires that you end all the applications, unlike ", "bbox": {"l": 151.20018, "t": 170.50707999999997, "r": 520.22693, "b": 179.72009000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "scenario 1 where permissions can be added while the applications were active. In this ", "bbox": {"l": 151.20018, "t": 182.50689999999997, "r": 532.72491, "b": 191.71991000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "case, the applications must be ended to run the create permission.", "bbox": {"l": 151.20016, "t": 194.50671, "r": 445.84579, "b": 203.71973000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "section_header", "bbox": {"l": 64.3337173461914, "t": 230.51942443847656, "r": 380.35474, "b": 246.96367999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9671851992607117, "cells": [{"id": 14, "text": "6.8", "bbox": {"l": 64.800003, "t": 232.20068000000003, "r": 87.224396, "b": 246.96367999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Avoiding propagation of masked data", "bbox": {"l": 91.709259, "t": 232.20068000000003, "r": 380.35474, "b": 246.96367999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 135.83189392089844, "t": 264.0419616699219, "r": 547.30225, "b": 297.74120999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9809823036193848, "cells": [{"id": 16, "text": "Operations such as insert or update into a table with active column access control can fail if ", "bbox": {"l": 136.8, "t": 264.52855999999997, "r": 542.45679, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "the input data is masked data. This can happen when data to be inserted or updated contains ", "bbox": {"l": 136.8, "t": 276.52837999999997, "r": 547.30225, "b": 285.74139, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "the masked value as a result of a ", "bbox": {"l": 136.8, "t": 288.52823, "r": 285.78268, "b": 297.74120999999997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "SELECT", "bbox": {"l": 285.77969, "t": 288.67761, "r": 315.77921, "b": 297.50219999999996, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": " from a table with active column access control.", "bbox": {"l": 315.77921, "t": 288.52823, "r": 524.6864, "b": 297.74120999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 136.41940307617188, "t": 309.37554931640625, "r": 547.19684, "b": 331.70084, "coord_origin": "TOPLEFT"}, "confidence": 0.9635169506072998, "cells": [{"id": 21, "text": "For example, assume TABLE1 and TABLE2 have active column access control and for insert, ", "bbox": {"l": 136.799, "t": 310.48804, "r": 547.19684, "b": 319.7010200000001, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "selecting data from TABLE2 returns the masked data. The following INSERT returns an error:", "bbox": {"l": 136.799, "t": 322.48785, "r": 547.17798, "b": 331.70084, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 136.799, "t": 339.67682, "r": 331.6763, "b": 348.4516, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 23, "text": "INSERT INTO TABLE1 SELECT * FROM TABLE2", "bbox": {"l": 136.799, "t": 339.67682, "r": 331.6763, "b": 348.4516, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 135.9666290283203, "t": 360.73516845703125, "r": 533.77673, "b": 382.9076232910156, "coord_origin": "TOPLEFT"}, "confidence": 0.973406195640564, "cells": [{"id": 24, "text": "The masked data that is returned from the ", "bbox": {"l": 136.799, "t": 361.48724, "r": 325.64349, "b": 370.70023, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "SELECT * FROM TABLE2", "bbox": {"l": 325.7392, "t": 361.63662999999997, "r": 425.638, "b": 370.46121, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": " might not be valid input ", "bbox": {"l": 425.69876, "t": 361.48724, "r": 533.77673, "b": 370.70023, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "data for TABLE1 because of data type or column check constraint.", "bbox": {"l": 136.79898, "t": 373.48706, "r": 428.83823, "b": 382.70004, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 135.8269805908203, "t": 394.7623291015625, "r": 532.65228, "b": 417.0003662109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9747862815856934, "cells": [{"id": 28, "text": "There are two ways to prevent this situation from happening: Define a check constraint or ", "bbox": {"l": 136.79898, "t": 395.50661999999994, "r": 532.65228, "b": 404.7196, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "create a before trigger. ", "bbox": {"l": 136.79898, "t": 407.50644000000005, "r": 240.03132999999997, "b": 416.71942, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "section_header", "bbox": {"l": 64.09215545654297, "t": 436.41485595703125, "r": 260.10202, "b": 449.32272, "coord_origin": "TOPLEFT"}, "confidence": 0.9572468996047974, "cells": [{"id": 30, "text": "6.8.1", "bbox": {"l": 64.800003, "t": 437.33475, "r": 94.18383, "b": 449.32272, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Check constraint solution", "bbox": {"l": 97.856804, "t": 437.33475, "r": 260.10202, "b": 449.32272, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 136.16067504882812, "t": 462.88629150390625, "r": 416.49878, "b": 472.83758544921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9524036049842834, "cells": [{"id": 32, "text": "One way to prevent this problem is to define a check constraint.", "bbox": {"l": 136.8, "t": 463.48874, "r": 416.49878, "b": 472.70172, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "text", "bbox": {"l": 135.7001190185547, "t": 484.599365234375, "r": 547.25665, "b": 542.72055, "coord_origin": "TOPLEFT"}, "confidence": 0.9841123223304749, "cells": [{"id": 33, "text": "As part of RCAC, new SQL syntax is provided to allow an action to be performed when a ", "bbox": {"l": 136.8, "t": 485.5083, "r": 530.50873, "b": 494.72128, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "violation of the check constraints check condition occurs instead of giving that error. However, ", "bbox": {"l": 136.8, "t": 497.50812, "r": 547.25665, "b": 506.7211, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "if the check condition is still not met after the action, a hard error is returned. A check ", "bbox": {"l": 136.8, "t": 509.50793, "r": 513.95343, "b": 518.72092, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "constraint with the new on-violation-clause is allowed on both the ", "bbox": {"l": 136.8, "t": 521.50775, "r": 426.2395, "b": 530.72073, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "CREATE TABLE", "bbox": {"l": 426.23962, "t": 521.65714, "r": 486.1788900000001, "b": 530.48172, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": " and ", "bbox": {"l": 486.1799, "t": 521.50775, "r": 508.43851, "b": 530.72073, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ALTER ", "bbox": {"l": 508.4395099999999, "t": 521.65714, "r": 538.37927, "b": 530.48172, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "TABLE", "bbox": {"l": 136.80002, "t": 533.65695, "r": 161.75978, "b": 542.4815100000001, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": " statements.", "bbox": {"l": 161.75978, "t": 533.5075400000001, "r": 216.09458999999998, "b": 542.72055, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "text", "bbox": {"l": 136.0422821044922, "t": 554.6649780273438, "r": 547.2804, "b": 588.73972, "coord_origin": "TOPLEFT"}, "confidence": 0.9792662262916565, "cells": [{"id": 42, "text": "In the Example 6-4, the mask is defined to return a value of \u2019XXX-XX-nnnn\u2019 for any query that ", "bbox": {"l": 136.80002, "t": 555.52711, "r": 547.17096, "b": 564.74011, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "is not done by a user profile in the DBMGR group. The constraint checks that the column SSN ", "bbox": {"l": 136.80002, "t": 567.52692, "r": 547.2804, "b": 576.73991, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "does not have the masked value.", "bbox": {"l": 136.80002, "t": 579.5267200000001, "r": 282.49396, "b": 588.73972, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "caption", "bbox": {"l": 64.23851013183594, "t": 600.50146484375, "r": 277.07000732421875, "b": 610.2802124023438, "coord_origin": "TOPLEFT"}, "confidence": 0.8750464916229248, "cells": [{"id": 45, "text": "Example 6-4 Check constraint to avoid masked data", "bbox": {"l": 64.800003, "t": 601.5178999999999, "r": 276.75806, "b": 609.84291, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "code", "bbox": {"l": 64.16464233398438, "t": 618.1095581054688, "r": 414.59515, "b": 736.5281982421875, "coord_origin": "TOPLEFT"}, "confidence": 0.8303214311599731, "cells": [{"id": 46, "text": "CREATE SCHEMA MY_LIB", "bbox": {"l": 64.800003, "t": 618.6780200000001, "r": 164.69879, "b": 627.45277, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "SET SCHEMA MY_LIB", "bbox": {"l": 64.800003, "t": 630.67783, "r": 149.69904, "b": 639.45258, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "CREATE TABLE MY_LIB.EMP_INFO", "bbox": {"l": 64.800003, "t": 642.67763, "r": 204.71805, "b": 651.45238, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "(COL1_name CHAR(10) WITH DEFAULT 'DEFAULT',", "bbox": {"l": 119.66983, "t": 654.67743, "r": 414.59515, "b": 663.45218, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "COL2_ssn CHAR(11) WITH DEFAULT 'DEFAULT')", "bbox": {"l": 126.86674, "t": 666.67724, "r": 409.61517, "b": 675.452, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "CREATE MASK MASK_ssn ON MY_LIB.EMP_INFO", "bbox": {"l": 64.800003, "t": 678.67705, "r": 259.67731, "b": 687.45181, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "FOR COLUMN COL2_ssn RETURN", "bbox": {"l": 64.800003, "t": 690.67686, "r": 194.6983, "b": 699.4516140000001, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "CASE", "bbox": {"l": 64.800003, "t": 702.676666, "r": 84.77977, "b": 711.451424, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": " WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBMGR' ) = 1", "bbox": {"l": 64.800003, "t": 714.676476, "r": 359.63589, "b": 723.451233, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": " THEN COL2_ssn", "bbox": {"l": 64.800003, "t": 726.676285, "r": 139.73904, "b": 735.451042, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 123, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.37716674804688, "t": 754.4281616210938, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9158027768135071, "cells": [{"id": 0, "text": "108 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "108"}, {"label": "page_footer", "id": 1, "page_no": 123, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.70913696289062, "t": 754.5992431640625, "r": 339.81958, "b": 764.000732421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9243242740631104, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "list_item", "id": 2, "page_no": 123, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.47494506835938, "t": 70.6369857788086, "r": 547.22571, "b": 92.73275756835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9781896471977234, "cells": [{"id": 2, "text": "GLYPH", "bbox": {"l": 136.8, "t": 71.65808000000015, "r": 141.78, "b": 80.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Scenario 2: Altering a table to activate RCAC requires that all applications using the table ", "bbox": {"l": 151.20016, "t": 71.50867000000005, "r": 547.22571, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "be ended. The alter table requires exclusive use of the table.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 417.98367, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Scenario 2: Altering a table to activate RCAC requires that all applications using the table be ended. The alter table requires exclusive use of the table."}, {"label": "list_item", "id": 3, "page_no": 123, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 135.47486877441406, "t": 99.36483764648438, "r": 547.35034, "b": 145.75274658203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9809828400611877, "cells": [{"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 100.6377, "r": 141.78, "b": 109.41247999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Scenario 3: Altering the table to activate RCAC before the permissions are added. The ", "bbox": {"l": 151.20016, "t": 100.48828000000003, "r": 535.80072, "b": 109.70129000000009, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "alter table requires exclusive use of the table, as in scenario 2. All applications must be ", "bbox": {"l": 151.20016, "t": 112.48810000000014, "r": 536.8244, "b": 121.70110999999997, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "ended to perform this alter. After the alter is complete, any applications trying to read data ", "bbox": {"l": 151.20018, "t": 124.48792000000003, "r": 547.35034, "b": 133.70092999999997, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "do not get any results, and attempts to insert new rows returns the following message:", "bbox": {"l": 151.20018, "t": 136.48773000000006, "r": 531.30865, "b": 145.70074, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Scenario 3: Altering the table to activate RCAC before the permissions are added. The alter table requires exclusive use of the table, as in scenario 2. All applications must be ended to perform this alter. After the alter is complete, any applications trying to read data do not get any results, and attempts to insert new rows returns the following message:"}, {"label": "text", "id": 4, "page_no": 123, "cluster": {"id": 4, "label": "text", "bbox": {"l": 150.78724670410156, "t": 152.71084594726562, "r": 451.01605, "b": 162.89410400390625, "coord_origin": "TOPLEFT"}, "confidence": 0.7630197405815125, "cells": [{"id": 10, "text": "SQ20471] INSERT or UPDATE does not satisfy row permissions. ", "bbox": {"l": 151.20018, "t": 153.67669999999998, "r": 451.01605, "b": 162.45147999999995, "coord_origin": "TOPLEFT"}}]}, "text": "SQ20471] INSERT or UPDATE does not satisfy row permissions."}, {"label": "text", "id": 5, "page_no": 123, "cluster": {"id": 5, "label": "text", "bbox": {"l": 150.4237060546875, "t": 169.4068603515625, "r": 532.72491, "b": 203.71973000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9614198207855225, "cells": [{"id": 11, "text": "To create a permission in this case requires that you end all the applications, unlike ", "bbox": {"l": 151.20018, "t": 170.50707999999997, "r": 520.22693, "b": 179.72009000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "scenario 1 where permissions can be added while the applications were active. In this ", "bbox": {"l": 151.20018, "t": 182.50689999999997, "r": 532.72491, "b": 191.71991000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "case, the applications must be ended to run the create permission.", "bbox": {"l": 151.20016, "t": 194.50671, "r": 445.84579, "b": 203.71973000000003, "coord_origin": "TOPLEFT"}}]}, "text": "To create a permission in this case requires that you end all the applications, unlike scenario 1 where permissions can be added while the applications were active. In this case, the applications must be ended to run the create permission."}, {"label": "section_header", "id": 6, "page_no": 123, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 64.3337173461914, "t": 230.51942443847656, "r": 380.35474, "b": 246.96367999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9671851992607117, "cells": [{"id": 14, "text": "6.8", "bbox": {"l": 64.800003, "t": 232.20068000000003, "r": 87.224396, "b": 246.96367999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Avoiding propagation of masked data", "bbox": {"l": 91.709259, "t": 232.20068000000003, "r": 380.35474, "b": 246.96367999999995, "coord_origin": "TOPLEFT"}}]}, "text": "6.8 Avoiding propagation of masked data"}, {"label": "text", "id": 7, "page_no": 123, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.83189392089844, "t": 264.0419616699219, "r": 547.30225, "b": 297.74120999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9809823036193848, "cells": [{"id": 16, "text": "Operations such as insert or update into a table with active column access control can fail if ", "bbox": {"l": 136.8, "t": 264.52855999999997, "r": 542.45679, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "the input data is masked data. This can happen when data to be inserted or updated contains ", "bbox": {"l": 136.8, "t": 276.52837999999997, "r": 547.30225, "b": 285.74139, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "the masked value as a result of a ", "bbox": {"l": 136.8, "t": 288.52823, "r": 285.78268, "b": 297.74120999999997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "SELECT", "bbox": {"l": 285.77969, "t": 288.67761, "r": 315.77921, "b": 297.50219999999996, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": " from a table with active column access control.", "bbox": {"l": 315.77921, "t": 288.52823, "r": 524.6864, "b": 297.74120999999997, "coord_origin": "TOPLEFT"}}]}, "text": "Operations such as insert or update into a table with active column access control can fail if the input data is masked data. This can happen when data to be inserted or updated contains the masked value as a result of a SELECT from a table with active column access control."}, {"label": "text", "id": 8, "page_no": 123, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.41940307617188, "t": 309.37554931640625, "r": 547.19684, "b": 331.70084, "coord_origin": "TOPLEFT"}, "confidence": 0.9635169506072998, "cells": [{"id": 21, "text": "For example, assume TABLE1 and TABLE2 have active column access control and for insert, ", "bbox": {"l": 136.799, "t": 310.48804, "r": 547.19684, "b": 319.7010200000001, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "selecting data from TABLE2 returns the masked data. The following INSERT returns an error:", "bbox": {"l": 136.799, "t": 322.48785, "r": 547.17798, "b": 331.70084, "coord_origin": "TOPLEFT"}}]}, "text": "For example, assume TABLE1 and TABLE2 have active column access control and for insert, selecting data from TABLE2 returns the masked data. The following INSERT returns an error:"}, {"label": "text", "id": 9, "page_no": 123, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.799, "t": 339.67682, "r": 331.6763, "b": 348.4516, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 23, "text": "INSERT INTO TABLE1 SELECT * FROM TABLE2", "bbox": {"l": 136.799, "t": 339.67682, "r": 331.6763, "b": 348.4516, "coord_origin": "TOPLEFT"}}]}, "text": "INSERT INTO TABLE1 SELECT * FROM TABLE2"}, {"label": "text", "id": 10, "page_no": 123, "cluster": {"id": 10, "label": "text", "bbox": {"l": 135.9666290283203, "t": 360.73516845703125, "r": 533.77673, "b": 382.9076232910156, "coord_origin": "TOPLEFT"}, "confidence": 0.973406195640564, "cells": [{"id": 24, "text": "The masked data that is returned from the ", "bbox": {"l": 136.799, "t": 361.48724, "r": 325.64349, "b": 370.70023, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "SELECT * FROM TABLE2", "bbox": {"l": 325.7392, "t": 361.63662999999997, "r": 425.638, "b": 370.46121, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": " might not be valid input ", "bbox": {"l": 425.69876, "t": 361.48724, "r": 533.77673, "b": 370.70023, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "data for TABLE1 because of data type or column check constraint.", "bbox": {"l": 136.79898, "t": 373.48706, "r": 428.83823, "b": 382.70004, "coord_origin": "TOPLEFT"}}]}, "text": "The masked data that is returned from the SELECT * FROM TABLE2 might not be valid input data for TABLE1 because of data type or column check constraint."}, {"label": "text", "id": 11, "page_no": 123, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.8269805908203, "t": 394.7623291015625, "r": 532.65228, "b": 417.0003662109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9747862815856934, "cells": [{"id": 28, "text": "There are two ways to prevent this situation from happening: Define a check constraint or ", "bbox": {"l": 136.79898, "t": 395.50661999999994, "r": 532.65228, "b": 404.7196, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "create a before trigger. ", "bbox": {"l": 136.79898, "t": 407.50644000000005, "r": 240.03132999999997, "b": 416.71942, "coord_origin": "TOPLEFT"}}]}, "text": "There are two ways to prevent this situation from happening: Define a check constraint or create a before trigger."}, {"label": "section_header", "id": 12, "page_no": 123, "cluster": {"id": 12, "label": "section_header", "bbox": {"l": 64.09215545654297, "t": 436.41485595703125, "r": 260.10202, "b": 449.32272, "coord_origin": "TOPLEFT"}, "confidence": 0.9572468996047974, "cells": [{"id": 30, "text": "6.8.1", "bbox": {"l": 64.800003, "t": 437.33475, "r": 94.18383, "b": 449.32272, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Check constraint solution", "bbox": {"l": 97.856804, "t": 437.33475, "r": 260.10202, "b": 449.32272, "coord_origin": "TOPLEFT"}}]}, "text": "6.8.1 Check constraint solution"}, {"label": "text", "id": 13, "page_no": 123, "cluster": {"id": 13, "label": "text", "bbox": {"l": 136.16067504882812, "t": 462.88629150390625, "r": 416.49878, "b": 472.83758544921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9524036049842834, "cells": [{"id": 32, "text": "One way to prevent this problem is to define a check constraint.", "bbox": {"l": 136.8, "t": 463.48874, "r": 416.49878, "b": 472.70172, "coord_origin": "TOPLEFT"}}]}, "text": "One way to prevent this problem is to define a check constraint."}, {"label": "text", "id": 14, "page_no": 123, "cluster": {"id": 14, "label": "text", "bbox": {"l": 135.7001190185547, "t": 484.599365234375, "r": 547.25665, "b": 542.72055, "coord_origin": "TOPLEFT"}, "confidence": 0.9841123223304749, "cells": [{"id": 33, "text": "As part of RCAC, new SQL syntax is provided to allow an action to be performed when a ", "bbox": {"l": 136.8, "t": 485.5083, "r": 530.50873, "b": 494.72128, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "violation of the check constraints check condition occurs instead of giving that error. However, ", "bbox": {"l": 136.8, "t": 497.50812, "r": 547.25665, "b": 506.7211, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "if the check condition is still not met after the action, a hard error is returned. A check ", "bbox": {"l": 136.8, "t": 509.50793, "r": 513.95343, "b": 518.72092, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "constraint with the new on-violation-clause is allowed on both the ", "bbox": {"l": 136.8, "t": 521.50775, "r": 426.2395, "b": 530.72073, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "CREATE TABLE", "bbox": {"l": 426.23962, "t": 521.65714, "r": 486.1788900000001, "b": 530.48172, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": " and ", "bbox": {"l": 486.1799, "t": 521.50775, "r": 508.43851, "b": 530.72073, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ALTER ", "bbox": {"l": 508.4395099999999, "t": 521.65714, "r": 538.37927, "b": 530.48172, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "TABLE", "bbox": {"l": 136.80002, "t": 533.65695, "r": 161.75978, "b": 542.4815100000001, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": " statements.", "bbox": {"l": 161.75978, "t": 533.5075400000001, "r": 216.09458999999998, "b": 542.72055, "coord_origin": "TOPLEFT"}}]}, "text": "As part of RCAC, new SQL syntax is provided to allow an action to be performed when a violation of the check constraints check condition occurs instead of giving that error. However, if the check condition is still not met after the action, a hard error is returned. A check constraint with the new on-violation-clause is allowed on both the CREATE TABLE and ALTER TABLE statements."}, {"label": "text", "id": 15, "page_no": 123, "cluster": {"id": 15, "label": "text", "bbox": {"l": 136.0422821044922, "t": 554.6649780273438, "r": 547.2804, "b": 588.73972, "coord_origin": "TOPLEFT"}, "confidence": 0.9792662262916565, "cells": [{"id": 42, "text": "In the Example 6-4, the mask is defined to return a value of \u2019XXX-XX-nnnn\u2019 for any query that ", "bbox": {"l": 136.80002, "t": 555.52711, "r": 547.17096, "b": 564.74011, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "is not done by a user profile in the DBMGR group. The constraint checks that the column SSN ", "bbox": {"l": 136.80002, "t": 567.52692, "r": 547.2804, "b": 576.73991, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "does not have the masked value.", "bbox": {"l": 136.80002, "t": 579.5267200000001, "r": 282.49396, "b": 588.73972, "coord_origin": "TOPLEFT"}}]}, "text": "In the Example 6-4, the mask is defined to return a value of \u2019XXX-XX-nnnn\u2019 for any query that is not done by a user profile in the DBMGR group. The constraint checks that the column SSN does not have the masked value."}, {"label": "caption", "id": 16, "page_no": 123, "cluster": {"id": 16, "label": "caption", "bbox": {"l": 64.23851013183594, "t": 600.50146484375, "r": 277.07000732421875, "b": 610.2802124023438, "coord_origin": "TOPLEFT"}, "confidence": 0.8750464916229248, "cells": [{"id": 45, "text": "Example 6-4 Check constraint to avoid masked data", "bbox": {"l": 64.800003, "t": 601.5178999999999, "r": 276.75806, "b": 609.84291, "coord_origin": "TOPLEFT"}}]}, "text": "Example 6-4 Check constraint to avoid masked data"}, {"label": "code", "id": 17, "page_no": 123, "cluster": {"id": 17, "label": "code", "bbox": {"l": 64.16464233398438, "t": 618.1095581054688, "r": 414.59515, "b": 736.5281982421875, "coord_origin": "TOPLEFT"}, "confidence": 0.8303214311599731, "cells": [{"id": 46, "text": "CREATE SCHEMA MY_LIB", "bbox": {"l": 64.800003, "t": 618.6780200000001, "r": 164.69879, "b": 627.45277, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "SET SCHEMA MY_LIB", "bbox": {"l": 64.800003, "t": 630.67783, "r": 149.69904, "b": 639.45258, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "CREATE TABLE MY_LIB.EMP_INFO", "bbox": {"l": 64.800003, "t": 642.67763, "r": 204.71805, "b": 651.45238, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "(COL1_name CHAR(10) WITH DEFAULT 'DEFAULT',", "bbox": {"l": 119.66983, "t": 654.67743, "r": 414.59515, "b": 663.45218, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "COL2_ssn CHAR(11) WITH DEFAULT 'DEFAULT')", "bbox": {"l": 126.86674, "t": 666.67724, "r": 409.61517, "b": 675.452, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "CREATE MASK MASK_ssn ON MY_LIB.EMP_INFO", "bbox": {"l": 64.800003, "t": 678.67705, "r": 259.67731, "b": 687.45181, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "FOR COLUMN COL2_ssn RETURN", "bbox": {"l": 64.800003, "t": 690.67686, "r": 194.6983, "b": 699.4516140000001, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "CASE", "bbox": {"l": 64.800003, "t": 702.676666, "r": 84.77977, "b": 711.451424, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": " WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBMGR' ) = 1", "bbox": {"l": 64.800003, "t": 714.676476, "r": 359.63589, "b": 723.451233, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": " THEN COL2_ssn", "bbox": {"l": 64.800003, "t": 726.676285, "r": 139.73904, "b": 735.451042, "coord_origin": "TOPLEFT"}}]}, "text": "CREATE SCHEMA MY_LIB SET SCHEMA MY_LIB CREATE TABLE MY_LIB.EMP_INFO (COL1_name CHAR(10) WITH DEFAULT 'DEFAULT', COL2_ssn CHAR(11) WITH DEFAULT 'DEFAULT') CREATE MASK MASK_ssn ON MY_LIB.EMP_INFO FOR COLUMN COL2_ssn RETURN CASE WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBMGR' ) = 1 THEN COL2_ssn"}], "body": [{"label": "list_item", "id": 2, "page_no": 123, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.47494506835938, "t": 70.6369857788086, "r": 547.22571, "b": 92.73275756835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9781896471977234, "cells": [{"id": 2, "text": "GLYPH", "bbox": {"l": 136.8, "t": 71.65808000000015, "r": 141.78, "b": 80.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Scenario 2: Altering a table to activate RCAC requires that all applications using the table ", "bbox": {"l": 151.20016, "t": 71.50867000000005, "r": 547.22571, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "be ended. The alter table requires exclusive use of the table.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 417.98367, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Scenario 2: Altering a table to activate RCAC requires that all applications using the table be ended. The alter table requires exclusive use of the table."}, {"label": "list_item", "id": 3, "page_no": 123, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 135.47486877441406, "t": 99.36483764648438, "r": 547.35034, "b": 145.75274658203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9809828400611877, "cells": [{"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 100.6377, "r": 141.78, "b": 109.41247999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Scenario 3: Altering the table to activate RCAC before the permissions are added. The ", "bbox": {"l": 151.20016, "t": 100.48828000000003, "r": 535.80072, "b": 109.70129000000009, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "alter table requires exclusive use of the table, as in scenario 2. All applications must be ", "bbox": {"l": 151.20016, "t": 112.48810000000014, "r": 536.8244, "b": 121.70110999999997, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "ended to perform this alter. After the alter is complete, any applications trying to read data ", "bbox": {"l": 151.20018, "t": 124.48792000000003, "r": 547.35034, "b": 133.70092999999997, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "do not get any results, and attempts to insert new rows returns the following message:", "bbox": {"l": 151.20018, "t": 136.48773000000006, "r": 531.30865, "b": 145.70074, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Scenario 3: Altering the table to activate RCAC before the permissions are added. The alter table requires exclusive use of the table, as in scenario 2. All applications must be ended to perform this alter. After the alter is complete, any applications trying to read data do not get any results, and attempts to insert new rows returns the following message:"}, {"label": "text", "id": 4, "page_no": 123, "cluster": {"id": 4, "label": "text", "bbox": {"l": 150.78724670410156, "t": 152.71084594726562, "r": 451.01605, "b": 162.89410400390625, "coord_origin": "TOPLEFT"}, "confidence": 0.7630197405815125, "cells": [{"id": 10, "text": "SQ20471] INSERT or UPDATE does not satisfy row permissions. ", "bbox": {"l": 151.20018, "t": 153.67669999999998, "r": 451.01605, "b": 162.45147999999995, "coord_origin": "TOPLEFT"}}]}, "text": "SQ20471] INSERT or UPDATE does not satisfy row permissions."}, {"label": "text", "id": 5, "page_no": 123, "cluster": {"id": 5, "label": "text", "bbox": {"l": 150.4237060546875, "t": 169.4068603515625, "r": 532.72491, "b": 203.71973000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9614198207855225, "cells": [{"id": 11, "text": "To create a permission in this case requires that you end all the applications, unlike ", "bbox": {"l": 151.20018, "t": 170.50707999999997, "r": 520.22693, "b": 179.72009000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "scenario 1 where permissions can be added while the applications were active. In this ", "bbox": {"l": 151.20018, "t": 182.50689999999997, "r": 532.72491, "b": 191.71991000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "case, the applications must be ended to run the create permission.", "bbox": {"l": 151.20016, "t": 194.50671, "r": 445.84579, "b": 203.71973000000003, "coord_origin": "TOPLEFT"}}]}, "text": "To create a permission in this case requires that you end all the applications, unlike scenario 1 where permissions can be added while the applications were active. In this case, the applications must be ended to run the create permission."}, {"label": "section_header", "id": 6, "page_no": 123, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 64.3337173461914, "t": 230.51942443847656, "r": 380.35474, "b": 246.96367999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9671851992607117, "cells": [{"id": 14, "text": "6.8", "bbox": {"l": 64.800003, "t": 232.20068000000003, "r": 87.224396, "b": 246.96367999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Avoiding propagation of masked data", "bbox": {"l": 91.709259, "t": 232.20068000000003, "r": 380.35474, "b": 246.96367999999995, "coord_origin": "TOPLEFT"}}]}, "text": "6.8 Avoiding propagation of masked data"}, {"label": "text", "id": 7, "page_no": 123, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.83189392089844, "t": 264.0419616699219, "r": 547.30225, "b": 297.74120999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9809823036193848, "cells": [{"id": 16, "text": "Operations such as insert or update into a table with active column access control can fail if ", "bbox": {"l": 136.8, "t": 264.52855999999997, "r": 542.45679, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "the input data is masked data. This can happen when data to be inserted or updated contains ", "bbox": {"l": 136.8, "t": 276.52837999999997, "r": 547.30225, "b": 285.74139, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "the masked value as a result of a ", "bbox": {"l": 136.8, "t": 288.52823, "r": 285.78268, "b": 297.74120999999997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "SELECT", "bbox": {"l": 285.77969, "t": 288.67761, "r": 315.77921, "b": 297.50219999999996, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": " from a table with active column access control.", "bbox": {"l": 315.77921, "t": 288.52823, "r": 524.6864, "b": 297.74120999999997, "coord_origin": "TOPLEFT"}}]}, "text": "Operations such as insert or update into a table with active column access control can fail if the input data is masked data. This can happen when data to be inserted or updated contains the masked value as a result of a SELECT from a table with active column access control."}, {"label": "text", "id": 8, "page_no": 123, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.41940307617188, "t": 309.37554931640625, "r": 547.19684, "b": 331.70084, "coord_origin": "TOPLEFT"}, "confidence": 0.9635169506072998, "cells": [{"id": 21, "text": "For example, assume TABLE1 and TABLE2 have active column access control and for insert, ", "bbox": {"l": 136.799, "t": 310.48804, "r": 547.19684, "b": 319.7010200000001, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "selecting data from TABLE2 returns the masked data. The following INSERT returns an error:", "bbox": {"l": 136.799, "t": 322.48785, "r": 547.17798, "b": 331.70084, "coord_origin": "TOPLEFT"}}]}, "text": "For example, assume TABLE1 and TABLE2 have active column access control and for insert, selecting data from TABLE2 returns the masked data. The following INSERT returns an error:"}, {"label": "text", "id": 9, "page_no": 123, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.799, "t": 339.67682, "r": 331.6763, "b": 348.4516, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 23, "text": "INSERT INTO TABLE1 SELECT * FROM TABLE2", "bbox": {"l": 136.799, "t": 339.67682, "r": 331.6763, "b": 348.4516, "coord_origin": "TOPLEFT"}}]}, "text": "INSERT INTO TABLE1 SELECT * FROM TABLE2"}, {"label": "text", "id": 10, "page_no": 123, "cluster": {"id": 10, "label": "text", "bbox": {"l": 135.9666290283203, "t": 360.73516845703125, "r": 533.77673, "b": 382.9076232910156, "coord_origin": "TOPLEFT"}, "confidence": 0.973406195640564, "cells": [{"id": 24, "text": "The masked data that is returned from the ", "bbox": {"l": 136.799, "t": 361.48724, "r": 325.64349, "b": 370.70023, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "SELECT * FROM TABLE2", "bbox": {"l": 325.7392, "t": 361.63662999999997, "r": 425.638, "b": 370.46121, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": " might not be valid input ", "bbox": {"l": 425.69876, "t": 361.48724, "r": 533.77673, "b": 370.70023, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "data for TABLE1 because of data type or column check constraint.", "bbox": {"l": 136.79898, "t": 373.48706, "r": 428.83823, "b": 382.70004, "coord_origin": "TOPLEFT"}}]}, "text": "The masked data that is returned from the SELECT * FROM TABLE2 might not be valid input data for TABLE1 because of data type or column check constraint."}, {"label": "text", "id": 11, "page_no": 123, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.8269805908203, "t": 394.7623291015625, "r": 532.65228, "b": 417.0003662109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9747862815856934, "cells": [{"id": 28, "text": "There are two ways to prevent this situation from happening: Define a check constraint or ", "bbox": {"l": 136.79898, "t": 395.50661999999994, "r": 532.65228, "b": 404.7196, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "create a before trigger. ", "bbox": {"l": 136.79898, "t": 407.50644000000005, "r": 240.03132999999997, "b": 416.71942, "coord_origin": "TOPLEFT"}}]}, "text": "There are two ways to prevent this situation from happening: Define a check constraint or create a before trigger."}, {"label": "section_header", "id": 12, "page_no": 123, "cluster": {"id": 12, "label": "section_header", "bbox": {"l": 64.09215545654297, "t": 436.41485595703125, "r": 260.10202, "b": 449.32272, "coord_origin": "TOPLEFT"}, "confidence": 0.9572468996047974, "cells": [{"id": 30, "text": "6.8.1", "bbox": {"l": 64.800003, "t": 437.33475, "r": 94.18383, "b": 449.32272, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Check constraint solution", "bbox": {"l": 97.856804, "t": 437.33475, "r": 260.10202, "b": 449.32272, "coord_origin": "TOPLEFT"}}]}, "text": "6.8.1 Check constraint solution"}, {"label": "text", "id": 13, "page_no": 123, "cluster": {"id": 13, "label": "text", "bbox": {"l": 136.16067504882812, "t": 462.88629150390625, "r": 416.49878, "b": 472.83758544921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9524036049842834, "cells": [{"id": 32, "text": "One way to prevent this problem is to define a check constraint.", "bbox": {"l": 136.8, "t": 463.48874, "r": 416.49878, "b": 472.70172, "coord_origin": "TOPLEFT"}}]}, "text": "One way to prevent this problem is to define a check constraint."}, {"label": "text", "id": 14, "page_no": 123, "cluster": {"id": 14, "label": "text", "bbox": {"l": 135.7001190185547, "t": 484.599365234375, "r": 547.25665, "b": 542.72055, "coord_origin": "TOPLEFT"}, "confidence": 0.9841123223304749, "cells": [{"id": 33, "text": "As part of RCAC, new SQL syntax is provided to allow an action to be performed when a ", "bbox": {"l": 136.8, "t": 485.5083, "r": 530.50873, "b": 494.72128, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "violation of the check constraints check condition occurs instead of giving that error. However, ", "bbox": {"l": 136.8, "t": 497.50812, "r": 547.25665, "b": 506.7211, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "if the check condition is still not met after the action, a hard error is returned. A check ", "bbox": {"l": 136.8, "t": 509.50793, "r": 513.95343, "b": 518.72092, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "constraint with the new on-violation-clause is allowed on both the ", "bbox": {"l": 136.8, "t": 521.50775, "r": 426.2395, "b": 530.72073, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "CREATE TABLE", "bbox": {"l": 426.23962, "t": 521.65714, "r": 486.1788900000001, "b": 530.48172, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": " and ", "bbox": {"l": 486.1799, "t": 521.50775, "r": 508.43851, "b": 530.72073, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ALTER ", "bbox": {"l": 508.4395099999999, "t": 521.65714, "r": 538.37927, "b": 530.48172, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "TABLE", "bbox": {"l": 136.80002, "t": 533.65695, "r": 161.75978, "b": 542.4815100000001, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": " statements.", "bbox": {"l": 161.75978, "t": 533.5075400000001, "r": 216.09458999999998, "b": 542.72055, "coord_origin": "TOPLEFT"}}]}, "text": "As part of RCAC, new SQL syntax is provided to allow an action to be performed when a violation of the check constraints check condition occurs instead of giving that error. However, if the check condition is still not met after the action, a hard error is returned. A check constraint with the new on-violation-clause is allowed on both the CREATE TABLE and ALTER TABLE statements."}, {"label": "text", "id": 15, "page_no": 123, "cluster": {"id": 15, "label": "text", "bbox": {"l": 136.0422821044922, "t": 554.6649780273438, "r": 547.2804, "b": 588.73972, "coord_origin": "TOPLEFT"}, "confidence": 0.9792662262916565, "cells": [{"id": 42, "text": "In the Example 6-4, the mask is defined to return a value of \u2019XXX-XX-nnnn\u2019 for any query that ", "bbox": {"l": 136.80002, "t": 555.52711, "r": 547.17096, "b": 564.74011, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "is not done by a user profile in the DBMGR group. The constraint checks that the column SSN ", "bbox": {"l": 136.80002, "t": 567.52692, "r": 547.2804, "b": 576.73991, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "does not have the masked value.", "bbox": {"l": 136.80002, "t": 579.5267200000001, "r": 282.49396, "b": 588.73972, "coord_origin": "TOPLEFT"}}]}, "text": "In the Example 6-4, the mask is defined to return a value of \u2019XXX-XX-nnnn\u2019 for any query that is not done by a user profile in the DBMGR group. The constraint checks that the column SSN does not have the masked value."}, {"label": "caption", "id": 16, "page_no": 123, "cluster": {"id": 16, "label": "caption", "bbox": {"l": 64.23851013183594, "t": 600.50146484375, "r": 277.07000732421875, "b": 610.2802124023438, "coord_origin": "TOPLEFT"}, "confidence": 0.8750464916229248, "cells": [{"id": 45, "text": "Example 6-4 Check constraint to avoid masked data", "bbox": {"l": 64.800003, "t": 601.5178999999999, "r": 276.75806, "b": 609.84291, "coord_origin": "TOPLEFT"}}]}, "text": "Example 6-4 Check constraint to avoid masked data"}, {"label": "code", "id": 17, "page_no": 123, "cluster": {"id": 17, "label": "code", "bbox": {"l": 64.16464233398438, "t": 618.1095581054688, "r": 414.59515, "b": 736.5281982421875, "coord_origin": "TOPLEFT"}, "confidence": 0.8303214311599731, "cells": [{"id": 46, "text": "CREATE SCHEMA MY_LIB", "bbox": {"l": 64.800003, "t": 618.6780200000001, "r": 164.69879, "b": 627.45277, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "SET SCHEMA MY_LIB", "bbox": {"l": 64.800003, "t": 630.67783, "r": 149.69904, "b": 639.45258, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "CREATE TABLE MY_LIB.EMP_INFO", "bbox": {"l": 64.800003, "t": 642.67763, "r": 204.71805, "b": 651.45238, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "(COL1_name CHAR(10) WITH DEFAULT 'DEFAULT',", "bbox": {"l": 119.66983, "t": 654.67743, "r": 414.59515, "b": 663.45218, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "COL2_ssn CHAR(11) WITH DEFAULT 'DEFAULT')", "bbox": {"l": 126.86674, "t": 666.67724, "r": 409.61517, "b": 675.452, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "CREATE MASK MASK_ssn ON MY_LIB.EMP_INFO", "bbox": {"l": 64.800003, "t": 678.67705, "r": 259.67731, "b": 687.45181, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "FOR COLUMN COL2_ssn RETURN", "bbox": {"l": 64.800003, "t": 690.67686, "r": 194.6983, "b": 699.4516140000001, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "CASE", "bbox": {"l": 64.800003, "t": 702.676666, "r": 84.77977, "b": 711.451424, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": " WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBMGR' ) = 1", "bbox": {"l": 64.800003, "t": 714.676476, "r": 359.63589, "b": 723.451233, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": " THEN COL2_ssn", "bbox": {"l": 64.800003, "t": 726.676285, "r": 139.73904, "b": 735.451042, "coord_origin": "TOPLEFT"}}]}, "text": "CREATE SCHEMA MY_LIB SET SCHEMA MY_LIB CREATE TABLE MY_LIB.EMP_INFO (COL1_name CHAR(10) WITH DEFAULT 'DEFAULT', COL2_ssn CHAR(11) WITH DEFAULT 'DEFAULT') CREATE MASK MASK_ssn ON MY_LIB.EMP_INFO FOR COLUMN COL2_ssn RETURN CASE WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBMGR' ) = 1 THEN COL2_ssn"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 123, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.37716674804688, "t": 754.4281616210938, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9158027768135071, "cells": [{"id": 0, "text": "108 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "108"}, {"label": "page_footer", "id": 1, "page_no": 123, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.70913696289062, "t": 754.5992431640625, "r": 339.81958, "b": 764.000732421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9243242740631104, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 124, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 371.28, "t": 755.538002, "r": 517.96918, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "109", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": " ELSE 'XXX-XX-'||SUBSTR(COL2_ssn,8,4)", "bbox": {"l": 64.800385, "t": 71.65845000000002, "r": 254.69768999999997, "b": 80.43322999999998, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "END", "bbox": {"l": 64.800385, "t": 83.65826000000004, "r": 79.740387, "b": 92.43304, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "ENABLE", "bbox": {"l": 64.800385, "t": 95.65808000000015, "r": 94.74015, "b": 104.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "|", "bbox": {"l": 64.800385, "t": 107.65790000000004, "r": 69.780388, "b": 116.43268, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "/* Check constraint for the update and insert.*/", "bbox": {"l": 64.800385, "t": 119.65770999999995, "r": 304.61722, "b": 128.4325, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ALTER TABLE MY_LIB.EMP_INFO", "bbox": {"l": 64.800385, "t": 131.65752999999995, "r": 199.67868, "b": 140.43231000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "ADD CONSTRAINT MASK_ssn_preserve", "bbox": {"l": 75.381416, "t": 143.65734999999995, "r": 244.67795000000004, "b": 152.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CHECK(SUBSTR(COL2_ssn,1,7)<>'XXX-XX-') -- Allow any value other than the mask ", "bbox": {"l": 75.169739, "t": 155.65716999999995, "r": 479.57458, "b": 164.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "ON UPDATE VIOLATION PRESERVE COL2_ssn -- Don't update the mask portion of the existing value", "bbox": {"l": 75.00663, "t": 167.65697999999998, "r": 544.49384, "b": 176.43176000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ON INSERT VIOLATION SET COL2_ssn = DEFAULT", "bbox": {"l": 75.238907, "t": 179.65679999999998, "r": 294.44788, "b": 188.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "-- for insert set this to the default value.", "bbox": {"l": 304.88638, "t": 179.65679999999998, "r": 534.53387, "b": 188.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "6.8.2", "bbox": {"l": 64.800003, "t": 216.35468000000003, "r": 94.229622, "b": 228.34271, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Before trigger solution", "bbox": {"l": 97.908325, "t": 216.35468000000003, "r": 240.54407, "b": 228.34271, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "The actions that are described in Example 6-4 on page 108 for ", "bbox": {"l": 136.8, "t": 242.50867000000005, "r": 415.47696, "b": 251.72168, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "ON UPDATE VIOLATION", "bbox": {"l": 415.49969, "t": 242.65808000000004, "r": 510.17944000000006, "b": 251.43286, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": " and ", "bbox": {"l": 510.23923, "t": 242.50867000000005, "r": 532.31854, "b": 251.72168, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ON ", "bbox": {"l": 532.31958, "t": 242.65808000000004, "r": 547.31934, "b": 251.43286, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "INSERT VIOLATION", "bbox": {"l": 136.80002, "t": 254.65790000000004, "r": 216.71904000000004, "b": 263.43268, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": " also can be handled by a before trigger, as shown in Example 6-5.", "bbox": {"l": 216.77982, "t": 254.50847999999996, "r": 511.9704, "b": 263.7215, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Example 6-5 Before trigger to avoid masked data", "bbox": {"l": 136.8, "t": 276.55798000000004, "r": 336.43527, "b": 284.88300000000004, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "CREATE TRIGGER PREVENT_MASK_SSN BEFORE INSERT OR UPDATE ON MY_LIB.EMP_INFO", "bbox": {"l": 136.8, "t": 293.65811, "r": 506.5749200000001, "b": 302.43289, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "REFERENCING NEW ROW AS N OLD ROW AS O", "bbox": {"l": 136.8, "t": 305.65793, "r": 321.65756, "b": 314.43271, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "FOR EACH ROW MODE DB2ROW", "bbox": {"l": 136.8, "t": 317.65775, "r": 256.73828, "b": 326.43253, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "SECURED", "bbox": {"l": 136.8, "t": 329.65756, "r": 171.77951, "b": 338.43234000000007, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "WHEN(SUBSTR(N.COL2_ssn,1,7) = 'XXX-XX-')", "bbox": {"l": 136.8, "t": 341.65738, "r": 336.65732, "b": 350.43216, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "BEGIN", "bbox": {"l": 136.8, "t": 353.6572, "r": 161.75977, "b": 362.43198, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IF INSERTING THEN SET N.COL2_ssn = DEFAULT;", "bbox": {"l": 136.8, "t": 365.65700999999996, "r": 351.65707, "b": 374.43179000000003, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "ELSEIF UPDATING THEN SET N.COL2_ssn = O.COL2_ssn;", "bbox": {"l": 136.8, "t": 377.65683000000007, "r": 381.65659, "b": 386.43161, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "END IF;", "bbox": {"l": 136.8, "t": 389.65665, "r": 171.77951, "b": 398.43143, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "END", "bbox": {"l": 136.8, "t": 401.6564599999999, "r": 151.74001, "b": 410.43124, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "6.9", "bbox": {"l": 64.800003, "t": 446.2207, "r": 87.247795, "b": 460.9837, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Triggers and functions (SECURED)", "bbox": {"l": 91.737335, "t": 446.2207, "r": 360.91705, "b": 460.9837, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "There are some considerations that must be considered when there are triggers and ", "bbox": {"l": 136.8, "t": 478.48874, "r": 511.73724000000004, "b": 487.70172, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "functions on tables that have RCAC enabled. The purpose of SECURE for triggers and ", "bbox": {"l": 136.8, "t": 490.54831, "r": 522.49512, "b": 499.76129, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "functions is so that a user who is allowed to create a trigger or function is not necessarily able ", "bbox": {"l": 136.8, "t": 502.54813, "r": 547.24677, "b": 511.76111, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "to make it SECURE themselves. This prevents the trigger/function developer from adding ", "bbox": {"l": 136.8, "t": 514.5479399999999, "r": 532.30658, "b": 523.7609299999999, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "code that skims off data that they are not allowed to see.", "bbox": {"l": 136.8, "t": 526.5477599999999, "r": 386.24026, "b": 535.7607399999999, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "6.9.1", "bbox": {"l": 64.800003, "t": 556.37462, "r": 94.489105, "b": 568.36263, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Triggers", "bbox": {"l": 98.200249, "t": 556.37462, "r": 151.61127, "b": 568.36263, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Triggers have access to the data in rows outside of the row permission or column masking. ", "bbox": {"l": 136.8, "t": 582.52863, "r": 539.66608, "b": 591.74162, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "An after trigger has access to the new row image after the permission has allowed the update ", "bbox": {"l": 136.80002, "t": 594.52843, "r": 547.28851, "b": 603.7414200000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "or insert to occur. Therefore, the triggers can potentially change the insert or update image ", "bbox": {"l": 136.80002, "t": 606.52823, "r": 539.64722, "b": 615.74123, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "value so that it violates the permission.", "bbox": {"l": 136.80002, "t": 618.52803, "r": 308.52338, "b": 627.74103, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 370.6949157714844, "t": 754.8876342773438, "r": 517.96918, "b": 763.9262084960938, "coord_origin": "TOPLEFT"}, "confidence": 0.9537138938903809, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 371.28, "t": 755.538002, "r": 517.96918, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 530.17626953125, "t": 754.1600341796875, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9287368059158325, "cells": [{"id": 1, "text": "109", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "code", "bbox": {"l": 63.44700622558594, "t": 70.49668884277344, "r": 546.8219604492188, "b": 191.2418975830078, "coord_origin": "TOPLEFT"}, "confidence": 0.8540793061256409, "cells": [{"id": 2, "text": " ELSE 'XXX-XX-'||SUBSTR(COL2_ssn,8,4)", "bbox": {"l": 64.800385, "t": 71.65845000000002, "r": 254.69768999999997, "b": 80.43322999999998, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "END", "bbox": {"l": 64.800385, "t": 83.65826000000004, "r": 79.740387, "b": 92.43304, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "ENABLE", "bbox": {"l": 64.800385, "t": 95.65808000000015, "r": 94.74015, "b": 104.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "|", "bbox": {"l": 64.800385, "t": 107.65790000000004, "r": 69.780388, "b": 116.43268, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "/* Check constraint for the update and insert.*/", "bbox": {"l": 64.800385, "t": 119.65770999999995, "r": 304.61722, "b": 128.4325, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ALTER TABLE MY_LIB.EMP_INFO", "bbox": {"l": 64.800385, "t": 131.65752999999995, "r": 199.67868, "b": 140.43231000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "ADD CONSTRAINT MASK_ssn_preserve", "bbox": {"l": 75.381416, "t": 143.65734999999995, "r": 244.67795000000004, "b": 152.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CHECK(SUBSTR(COL2_ssn,1,7)<>'XXX-XX-') -- Allow any value other than the mask ", "bbox": {"l": 75.169739, "t": 155.65716999999995, "r": 479.57458, "b": 164.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "ON UPDATE VIOLATION PRESERVE COL2_ssn -- Don't update the mask portion of the existing value", "bbox": {"l": 75.00663, "t": 167.65697999999998, "r": 544.49384, "b": 176.43176000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ON INSERT VIOLATION SET COL2_ssn = DEFAULT", "bbox": {"l": 75.238907, "t": 179.65679999999998, "r": 294.44788, "b": 188.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "-- for insert set this to the default value.", "bbox": {"l": 304.88638, "t": 179.65679999999998, "r": 534.53387, "b": 188.43158000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "section_header", "bbox": {"l": 64.23657989501953, "t": 215.09384155273438, "r": 240.54407, "b": 228.5045623779297, "coord_origin": "TOPLEFT"}, "confidence": 0.9668058753013611, "cells": [{"id": 13, "text": "6.8.2", "bbox": {"l": 64.800003, "t": 216.35468000000003, "r": 94.229622, "b": 228.34271, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Before trigger solution", "bbox": {"l": 97.908325, "t": 216.35468000000003, "r": 240.54407, "b": 228.34271, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 136.24661254882812, "t": 241.2919464111328, "r": 547.31934, "b": 263.7215, "coord_origin": "TOPLEFT"}, "confidence": 0.9730713963508606, "cells": [{"id": 15, "text": "The actions that are described in Example 6-4 on page 108 for ", "bbox": {"l": 136.8, "t": 242.50867000000005, "r": 415.47696, "b": 251.72168, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "ON UPDATE VIOLATION", "bbox": {"l": 415.49969, "t": 242.65808000000004, "r": 510.17944000000006, "b": 251.43286, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": " and ", "bbox": {"l": 510.23923, "t": 242.50867000000005, "r": 532.31854, "b": 251.72168, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ON ", "bbox": {"l": 532.31958, "t": 242.65808000000004, "r": 547.31934, "b": 251.43286, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "INSERT VIOLATION", "bbox": {"l": 136.80002, "t": 254.65790000000004, "r": 216.71904000000004, "b": 263.43268, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": " also can be handled by a before trigger, as shown in Example 6-5.", "bbox": {"l": 216.77982, "t": 254.50847999999996, "r": 511.9704, "b": 263.7215, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 136.40687561035156, "t": 276.0124816894531, "r": 336.7406311035156, "b": 285.537841796875, "coord_origin": "TOPLEFT"}, "confidence": 0.6352336406707764, "cells": [{"id": 21, "text": "Example 6-5 Before trigger to avoid masked data", "bbox": {"l": 136.8, "t": 276.55798000000004, "r": 336.43527, "b": 284.88300000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "code", "bbox": {"l": 135.9194793701172, "t": 291.04913330078125, "r": 506.87237548828125, "b": 412.2622375488281, "coord_origin": "TOPLEFT"}, "confidence": 0.7042911648750305, "cells": [{"id": 22, "text": "CREATE TRIGGER PREVENT_MASK_SSN BEFORE INSERT OR UPDATE ON MY_LIB.EMP_INFO", "bbox": {"l": 136.8, "t": 293.65811, "r": 506.5749200000001, "b": 302.43289, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "REFERENCING NEW ROW AS N OLD ROW AS O", "bbox": {"l": 136.8, "t": 305.65793, "r": 321.65756, "b": 314.43271, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "FOR EACH ROW MODE DB2ROW", "bbox": {"l": 136.8, "t": 317.65775, "r": 256.73828, "b": 326.43253, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "SECURED", "bbox": {"l": 136.8, "t": 329.65756, "r": 171.77951, "b": 338.43234000000007, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "WHEN(SUBSTR(N.COL2_ssn,1,7) = 'XXX-XX-')", "bbox": {"l": 136.8, "t": 341.65738, "r": 336.65732, "b": 350.43216, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "BEGIN", "bbox": {"l": 136.8, "t": 353.6572, "r": 161.75977, "b": 362.43198, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IF INSERTING THEN SET N.COL2_ssn = DEFAULT;", "bbox": {"l": 136.8, "t": 365.65700999999996, "r": 351.65707, "b": 374.43179000000003, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "ELSEIF UPDATING THEN SET N.COL2_ssn = O.COL2_ssn;", "bbox": {"l": 136.8, "t": 377.65683000000007, "r": 381.65659, "b": 386.43161, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "END IF;", "bbox": {"l": 136.8, "t": 389.65665, "r": 171.77951, "b": 398.43143, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "END", "bbox": {"l": 136.8, "t": 401.6564599999999, "r": 151.74001, "b": 410.43124, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "section_header", "bbox": {"l": 64.4358139038086, "t": 445.3469543457031, "r": 360.91705, "b": 462.0101318359375, "coord_origin": "TOPLEFT"}, "confidence": 0.968204915523529, "cells": [{"id": 32, "text": "6.9", "bbox": {"l": 64.800003, "t": 446.2207, "r": 87.247795, "b": 460.9837, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Triggers and functions (SECURED)", "bbox": {"l": 91.737335, "t": 446.2207, "r": 360.91705, "b": 460.9837, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 135.90432739257812, "t": 477.2076721191406, "r": 547.24677, "b": 536.2446899414062, "coord_origin": "TOPLEFT"}, "confidence": 0.984616219997406, "cells": [{"id": 34, "text": "There are some considerations that must be considered when there are triggers and ", "bbox": {"l": 136.8, "t": 478.48874, "r": 511.73724000000004, "b": 487.70172, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "functions on tables that have RCAC enabled. The purpose of SECURE for triggers and ", "bbox": {"l": 136.8, "t": 490.54831, "r": 522.49512, "b": 499.76129, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "functions is so that a user who is allowed to create a trigger or function is not necessarily able ", "bbox": {"l": 136.8, "t": 502.54813, "r": 547.24677, "b": 511.76111, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "to make it SECURE themselves. This prevents the trigger/function developer from adding ", "bbox": {"l": 136.8, "t": 514.5479399999999, "r": 532.30658, "b": 523.7609299999999, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "code that skims off data that they are not allowed to see.", "bbox": {"l": 136.8, "t": 526.5477599999999, "r": 386.24026, "b": 535.7607399999999, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "section_header", "bbox": {"l": 64.1463851928711, "t": 555.9064331054688, "r": 151.61127, "b": 569.22412109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9636334180831909, "cells": [{"id": 39, "text": "6.9.1", "bbox": {"l": 64.800003, "t": 556.37462, "r": 94.489105, "b": 568.36263, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Triggers", "bbox": {"l": 98.200249, "t": 556.37462, "r": 151.61127, "b": 568.36263, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 135.57107543945312, "t": 582.0809936523438, "r": 547.28851, "b": 627.99658203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9859280586242676, "cells": [{"id": 41, "text": "Triggers have access to the data in rows outside of the row permission or column masking. ", "bbox": {"l": 136.8, "t": 582.52863, "r": 539.66608, "b": 591.74162, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "An after trigger has access to the new row image after the permission has allowed the update ", "bbox": {"l": 136.80002, "t": 594.52843, "r": 547.28851, "b": 603.7414200000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "or insert to occur. Therefore, the triggers can potentially change the insert or update image ", "bbox": {"l": 136.80002, "t": 606.52823, "r": 539.64722, "b": 615.74123, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "value so that it violates the permission.", "bbox": {"l": 136.80002, "t": 618.52803, "r": 308.52338, "b": 627.74103, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 124, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 370.6949157714844, "t": 754.8876342773438, "r": 517.96918, "b": 763.9262084960938, "coord_origin": "TOPLEFT"}, "confidence": 0.9537138938903809, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 371.28, "t": 755.538002, "r": 517.96918, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 124, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.17626953125, "t": 754.1600341796875, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9287368059158325, "cells": [{"id": 1, "text": "109", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "109"}, {"label": "code", "id": 2, "page_no": 124, "cluster": {"id": 2, "label": "code", "bbox": {"l": 63.44700622558594, "t": 70.49668884277344, "r": 546.8219604492188, "b": 191.2418975830078, "coord_origin": "TOPLEFT"}, "confidence": 0.8540793061256409, "cells": [{"id": 2, "text": " ELSE 'XXX-XX-'||SUBSTR(COL2_ssn,8,4)", "bbox": {"l": 64.800385, "t": 71.65845000000002, "r": 254.69768999999997, "b": 80.43322999999998, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "END", "bbox": {"l": 64.800385, "t": 83.65826000000004, "r": 79.740387, "b": 92.43304, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "ENABLE", "bbox": {"l": 64.800385, "t": 95.65808000000015, "r": 94.74015, "b": 104.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "|", "bbox": {"l": 64.800385, "t": 107.65790000000004, "r": 69.780388, "b": 116.43268, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "/* Check constraint for the update and insert.*/", "bbox": {"l": 64.800385, "t": 119.65770999999995, "r": 304.61722, "b": 128.4325, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ALTER TABLE MY_LIB.EMP_INFO", "bbox": {"l": 64.800385, "t": 131.65752999999995, "r": 199.67868, "b": 140.43231000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "ADD CONSTRAINT MASK_ssn_preserve", "bbox": {"l": 75.381416, "t": 143.65734999999995, "r": 244.67795000000004, "b": 152.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CHECK(SUBSTR(COL2_ssn,1,7)<>'XXX-XX-') -- Allow any value other than the mask ", "bbox": {"l": 75.169739, "t": 155.65716999999995, "r": 479.57458, "b": 164.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "ON UPDATE VIOLATION PRESERVE COL2_ssn -- Don't update the mask portion of the existing value", "bbox": {"l": 75.00663, "t": 167.65697999999998, "r": 544.49384, "b": 176.43176000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ON INSERT VIOLATION SET COL2_ssn = DEFAULT", "bbox": {"l": 75.238907, "t": 179.65679999999998, "r": 294.44788, "b": 188.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "-- for insert set this to the default value.", "bbox": {"l": 304.88638, "t": 179.65679999999998, "r": 534.53387, "b": 188.43158000000005, "coord_origin": "TOPLEFT"}}]}, "text": "ELSE 'XXX-XX-'||SUBSTR(COL2_ssn,8,4) END ENABLE | /* Check constraint for the update and insert.*/ ALTER TABLE MY_LIB.EMP_INFO ADD CONSTRAINT MASK_ssn_preserve CHECK(SUBSTR(COL2_ssn,1,7)<>'XXX-XX-') -- Allow any value other than the mask ON UPDATE VIOLATION PRESERVE COL2_ssn -- Don't update the mask portion of the existing value ON INSERT VIOLATION SET COL2_ssn = DEFAULT -- for insert set this to the default value."}, {"label": "section_header", "id": 3, "page_no": 124, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 64.23657989501953, "t": 215.09384155273438, "r": 240.54407, "b": 228.5045623779297, "coord_origin": "TOPLEFT"}, "confidence": 0.9668058753013611, "cells": [{"id": 13, "text": "6.8.2", "bbox": {"l": 64.800003, "t": 216.35468000000003, "r": 94.229622, "b": 228.34271, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Before trigger solution", "bbox": {"l": 97.908325, "t": 216.35468000000003, "r": 240.54407, "b": 228.34271, "coord_origin": "TOPLEFT"}}]}, "text": "6.8.2 Before trigger solution"}, {"label": "text", "id": 4, "page_no": 124, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.24661254882812, "t": 241.2919464111328, "r": 547.31934, "b": 263.7215, "coord_origin": "TOPLEFT"}, "confidence": 0.9730713963508606, "cells": [{"id": 15, "text": "The actions that are described in Example 6-4 on page 108 for ", "bbox": {"l": 136.8, "t": 242.50867000000005, "r": 415.47696, "b": 251.72168, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "ON UPDATE VIOLATION", "bbox": {"l": 415.49969, "t": 242.65808000000004, "r": 510.17944000000006, "b": 251.43286, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": " and ", "bbox": {"l": 510.23923, "t": 242.50867000000005, "r": 532.31854, "b": 251.72168, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ON ", "bbox": {"l": 532.31958, "t": 242.65808000000004, "r": 547.31934, "b": 251.43286, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "INSERT VIOLATION", "bbox": {"l": 136.80002, "t": 254.65790000000004, "r": 216.71904000000004, "b": 263.43268, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": " also can be handled by a before trigger, as shown in Example 6-5.", "bbox": {"l": 216.77982, "t": 254.50847999999996, "r": 511.9704, "b": 263.7215, "coord_origin": "TOPLEFT"}}]}, "text": "The actions that are described in Example 6-4 on page 108 for ON UPDATE VIOLATION and ON INSERT VIOLATION also can be handled by a before trigger, as shown in Example 6-5."}, {"label": "caption", "id": 5, "page_no": 124, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.40687561035156, "t": 276.0124816894531, "r": 336.7406311035156, "b": 285.537841796875, "coord_origin": "TOPLEFT"}, "confidence": 0.6352336406707764, "cells": [{"id": 21, "text": "Example 6-5 Before trigger to avoid masked data", "bbox": {"l": 136.8, "t": 276.55798000000004, "r": 336.43527, "b": 284.88300000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Example 6-5 Before trigger to avoid masked data"}, {"label": "code", "id": 6, "page_no": 124, "cluster": {"id": 6, "label": "code", "bbox": {"l": 135.9194793701172, "t": 291.04913330078125, "r": 506.87237548828125, "b": 412.2622375488281, "coord_origin": "TOPLEFT"}, "confidence": 0.7042911648750305, "cells": [{"id": 22, "text": "CREATE TRIGGER PREVENT_MASK_SSN BEFORE INSERT OR UPDATE ON MY_LIB.EMP_INFO", "bbox": {"l": 136.8, "t": 293.65811, "r": 506.5749200000001, "b": 302.43289, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "REFERENCING NEW ROW AS N OLD ROW AS O", "bbox": {"l": 136.8, "t": 305.65793, "r": 321.65756, "b": 314.43271, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "FOR EACH ROW MODE DB2ROW", "bbox": {"l": 136.8, "t": 317.65775, "r": 256.73828, "b": 326.43253, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "SECURED", "bbox": {"l": 136.8, "t": 329.65756, "r": 171.77951, "b": 338.43234000000007, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "WHEN(SUBSTR(N.COL2_ssn,1,7) = 'XXX-XX-')", "bbox": {"l": 136.8, "t": 341.65738, "r": 336.65732, "b": 350.43216, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "BEGIN", "bbox": {"l": 136.8, "t": 353.6572, "r": 161.75977, "b": 362.43198, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IF INSERTING THEN SET N.COL2_ssn = DEFAULT;", "bbox": {"l": 136.8, "t": 365.65700999999996, "r": 351.65707, "b": 374.43179000000003, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "ELSEIF UPDATING THEN SET N.COL2_ssn = O.COL2_ssn;", "bbox": {"l": 136.8, "t": 377.65683000000007, "r": 381.65659, "b": 386.43161, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "END IF;", "bbox": {"l": 136.8, "t": 389.65665, "r": 171.77951, "b": 398.43143, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "END", "bbox": {"l": 136.8, "t": 401.6564599999999, "r": 151.74001, "b": 410.43124, "coord_origin": "TOPLEFT"}}]}, "text": "CREATE TRIGGER PREVENT_MASK_SSN BEFORE INSERT OR UPDATE ON MY_LIB.EMP_INFO REFERENCING NEW ROW AS N OLD ROW AS O FOR EACH ROW MODE DB2ROW SECURED WHEN(SUBSTR(N.COL2_ssn,1,7) = 'XXX-XX-') BEGIN IF INSERTING THEN SET N.COL2_ssn = DEFAULT; ELSEIF UPDATING THEN SET N.COL2_ssn = O.COL2_ssn; END IF; END"}, {"label": "section_header", "id": 7, "page_no": 124, "cluster": {"id": 7, "label": "section_header", "bbox": {"l": 64.4358139038086, "t": 445.3469543457031, "r": 360.91705, "b": 462.0101318359375, "coord_origin": "TOPLEFT"}, "confidence": 0.968204915523529, "cells": [{"id": 32, "text": "6.9", "bbox": {"l": 64.800003, "t": 446.2207, "r": 87.247795, "b": 460.9837, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Triggers and functions (SECURED)", "bbox": {"l": 91.737335, "t": 446.2207, "r": 360.91705, "b": 460.9837, "coord_origin": "TOPLEFT"}}]}, "text": "6.9 Triggers and functions (SECURED)"}, {"label": "text", "id": 8, "page_no": 124, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.90432739257812, "t": 477.2076721191406, "r": 547.24677, "b": 536.2446899414062, "coord_origin": "TOPLEFT"}, "confidence": 0.984616219997406, "cells": [{"id": 34, "text": "There are some considerations that must be considered when there are triggers and ", "bbox": {"l": 136.8, "t": 478.48874, "r": 511.73724000000004, "b": 487.70172, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "functions on tables that have RCAC enabled. The purpose of SECURE for triggers and ", "bbox": {"l": 136.8, "t": 490.54831, "r": 522.49512, "b": 499.76129, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "functions is so that a user who is allowed to create a trigger or function is not necessarily able ", "bbox": {"l": 136.8, "t": 502.54813, "r": 547.24677, "b": 511.76111, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "to make it SECURE themselves. This prevents the trigger/function developer from adding ", "bbox": {"l": 136.8, "t": 514.5479399999999, "r": 532.30658, "b": 523.7609299999999, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "code that skims off data that they are not allowed to see.", "bbox": {"l": 136.8, "t": 526.5477599999999, "r": 386.24026, "b": 535.7607399999999, "coord_origin": "TOPLEFT"}}]}, "text": "There are some considerations that must be considered when there are triggers and functions on tables that have RCAC enabled. The purpose of SECURE for triggers and functions is so that a user who is allowed to create a trigger or function is not necessarily able to make it SECURE themselves. This prevents the trigger/function developer from adding code that skims off data that they are not allowed to see."}, {"label": "section_header", "id": 9, "page_no": 124, "cluster": {"id": 9, "label": "section_header", "bbox": {"l": 64.1463851928711, "t": 555.9064331054688, "r": 151.61127, "b": 569.22412109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9636334180831909, "cells": [{"id": 39, "text": "6.9.1", "bbox": {"l": 64.800003, "t": 556.37462, "r": 94.489105, "b": 568.36263, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Triggers", "bbox": {"l": 98.200249, "t": 556.37462, "r": 151.61127, "b": 568.36263, "coord_origin": "TOPLEFT"}}]}, "text": "6.9.1 Triggers"}, {"label": "text", "id": 10, "page_no": 124, "cluster": {"id": 10, "label": "text", "bbox": {"l": 135.57107543945312, "t": 582.0809936523438, "r": 547.28851, "b": 627.99658203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9859280586242676, "cells": [{"id": 41, "text": "Triggers have access to the data in rows outside of the row permission or column masking. ", "bbox": {"l": 136.8, "t": 582.52863, "r": 539.66608, "b": 591.74162, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "An after trigger has access to the new row image after the permission has allowed the update ", "bbox": {"l": 136.80002, "t": 594.52843, "r": 547.28851, "b": 603.7414200000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "or insert to occur. Therefore, the triggers can potentially change the insert or update image ", "bbox": {"l": 136.80002, "t": 606.52823, "r": 539.64722, "b": 615.74123, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "value so that it violates the permission.", "bbox": {"l": 136.80002, "t": 618.52803, "r": 308.52338, "b": 627.74103, "coord_origin": "TOPLEFT"}}]}, "text": "Triggers have access to the data in rows outside of the row permission or column masking. An after trigger has access to the new row image after the permission has allowed the update or insert to occur. Therefore, the triggers can potentially change the insert or update image value so that it violates the permission."}], "body": [{"label": "code", "id": 2, "page_no": 124, "cluster": {"id": 2, "label": "code", "bbox": {"l": 63.44700622558594, "t": 70.49668884277344, "r": 546.8219604492188, "b": 191.2418975830078, "coord_origin": "TOPLEFT"}, "confidence": 0.8540793061256409, "cells": [{"id": 2, "text": " ELSE 'XXX-XX-'||SUBSTR(COL2_ssn,8,4)", "bbox": {"l": 64.800385, "t": 71.65845000000002, "r": 254.69768999999997, "b": 80.43322999999998, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "END", "bbox": {"l": 64.800385, "t": 83.65826000000004, "r": 79.740387, "b": 92.43304, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "ENABLE", "bbox": {"l": 64.800385, "t": 95.65808000000015, "r": 94.74015, "b": 104.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "|", "bbox": {"l": 64.800385, "t": 107.65790000000004, "r": 69.780388, "b": 116.43268, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "/* Check constraint for the update and insert.*/", "bbox": {"l": 64.800385, "t": 119.65770999999995, "r": 304.61722, "b": 128.4325, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ALTER TABLE MY_LIB.EMP_INFO", "bbox": {"l": 64.800385, "t": 131.65752999999995, "r": 199.67868, "b": 140.43231000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "ADD CONSTRAINT MASK_ssn_preserve", "bbox": {"l": 75.381416, "t": 143.65734999999995, "r": 244.67795000000004, "b": 152.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CHECK(SUBSTR(COL2_ssn,1,7)<>'XXX-XX-') -- Allow any value other than the mask ", "bbox": {"l": 75.169739, "t": 155.65716999999995, "r": 479.57458, "b": 164.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "ON UPDATE VIOLATION PRESERVE COL2_ssn -- Don't update the mask portion of the existing value", "bbox": {"l": 75.00663, "t": 167.65697999999998, "r": 544.49384, "b": 176.43176000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ON INSERT VIOLATION SET COL2_ssn = DEFAULT", "bbox": {"l": 75.238907, "t": 179.65679999999998, "r": 294.44788, "b": 188.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "-- for insert set this to the default value.", "bbox": {"l": 304.88638, "t": 179.65679999999998, "r": 534.53387, "b": 188.43158000000005, "coord_origin": "TOPLEFT"}}]}, "text": "ELSE 'XXX-XX-'||SUBSTR(COL2_ssn,8,4) END ENABLE | /* Check constraint for the update and insert.*/ ALTER TABLE MY_LIB.EMP_INFO ADD CONSTRAINT MASK_ssn_preserve CHECK(SUBSTR(COL2_ssn,1,7)<>'XXX-XX-') -- Allow any value other than the mask ON UPDATE VIOLATION PRESERVE COL2_ssn -- Don't update the mask portion of the existing value ON INSERT VIOLATION SET COL2_ssn = DEFAULT -- for insert set this to the default value."}, {"label": "section_header", "id": 3, "page_no": 124, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 64.23657989501953, "t": 215.09384155273438, "r": 240.54407, "b": 228.5045623779297, "coord_origin": "TOPLEFT"}, "confidence": 0.9668058753013611, "cells": [{"id": 13, "text": "6.8.2", "bbox": {"l": 64.800003, "t": 216.35468000000003, "r": 94.229622, "b": 228.34271, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Before trigger solution", "bbox": {"l": 97.908325, "t": 216.35468000000003, "r": 240.54407, "b": 228.34271, "coord_origin": "TOPLEFT"}}]}, "text": "6.8.2 Before trigger solution"}, {"label": "text", "id": 4, "page_no": 124, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.24661254882812, "t": 241.2919464111328, "r": 547.31934, "b": 263.7215, "coord_origin": "TOPLEFT"}, "confidence": 0.9730713963508606, "cells": [{"id": 15, "text": "The actions that are described in Example 6-4 on page 108 for ", "bbox": {"l": 136.8, "t": 242.50867000000005, "r": 415.47696, "b": 251.72168, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "ON UPDATE VIOLATION", "bbox": {"l": 415.49969, "t": 242.65808000000004, "r": 510.17944000000006, "b": 251.43286, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": " and ", "bbox": {"l": 510.23923, "t": 242.50867000000005, "r": 532.31854, "b": 251.72168, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ON ", "bbox": {"l": 532.31958, "t": 242.65808000000004, "r": 547.31934, "b": 251.43286, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "INSERT VIOLATION", "bbox": {"l": 136.80002, "t": 254.65790000000004, "r": 216.71904000000004, "b": 263.43268, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": " also can be handled by a before trigger, as shown in Example 6-5.", "bbox": {"l": 216.77982, "t": 254.50847999999996, "r": 511.9704, "b": 263.7215, "coord_origin": "TOPLEFT"}}]}, "text": "The actions that are described in Example 6-4 on page 108 for ON UPDATE VIOLATION and ON INSERT VIOLATION also can be handled by a before trigger, as shown in Example 6-5."}, {"label": "caption", "id": 5, "page_no": 124, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 136.40687561035156, "t": 276.0124816894531, "r": 336.7406311035156, "b": 285.537841796875, "coord_origin": "TOPLEFT"}, "confidence": 0.6352336406707764, "cells": [{"id": 21, "text": "Example 6-5 Before trigger to avoid masked data", "bbox": {"l": 136.8, "t": 276.55798000000004, "r": 336.43527, "b": 284.88300000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Example 6-5 Before trigger to avoid masked data"}, {"label": "code", "id": 6, "page_no": 124, "cluster": {"id": 6, "label": "code", "bbox": {"l": 135.9194793701172, "t": 291.04913330078125, "r": 506.87237548828125, "b": 412.2622375488281, "coord_origin": "TOPLEFT"}, "confidence": 0.7042911648750305, "cells": [{"id": 22, "text": "CREATE TRIGGER PREVENT_MASK_SSN BEFORE INSERT OR UPDATE ON MY_LIB.EMP_INFO", "bbox": {"l": 136.8, "t": 293.65811, "r": 506.5749200000001, "b": 302.43289, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "REFERENCING NEW ROW AS N OLD ROW AS O", "bbox": {"l": 136.8, "t": 305.65793, "r": 321.65756, "b": 314.43271, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "FOR EACH ROW MODE DB2ROW", "bbox": {"l": 136.8, "t": 317.65775, "r": 256.73828, "b": 326.43253, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "SECURED", "bbox": {"l": 136.8, "t": 329.65756, "r": 171.77951, "b": 338.43234000000007, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "WHEN(SUBSTR(N.COL2_ssn,1,7) = 'XXX-XX-')", "bbox": {"l": 136.8, "t": 341.65738, "r": 336.65732, "b": 350.43216, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "BEGIN", "bbox": {"l": 136.8, "t": 353.6572, "r": 161.75977, "b": 362.43198, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IF INSERTING THEN SET N.COL2_ssn = DEFAULT;", "bbox": {"l": 136.8, "t": 365.65700999999996, "r": 351.65707, "b": 374.43179000000003, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "ELSEIF UPDATING THEN SET N.COL2_ssn = O.COL2_ssn;", "bbox": {"l": 136.8, "t": 377.65683000000007, "r": 381.65659, "b": 386.43161, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "END IF;", "bbox": {"l": 136.8, "t": 389.65665, "r": 171.77951, "b": 398.43143, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "END", "bbox": {"l": 136.8, "t": 401.6564599999999, "r": 151.74001, "b": 410.43124, "coord_origin": "TOPLEFT"}}]}, "text": "CREATE TRIGGER PREVENT_MASK_SSN BEFORE INSERT OR UPDATE ON MY_LIB.EMP_INFO REFERENCING NEW ROW AS N OLD ROW AS O FOR EACH ROW MODE DB2ROW SECURED WHEN(SUBSTR(N.COL2_ssn,1,7) = 'XXX-XX-') BEGIN IF INSERTING THEN SET N.COL2_ssn = DEFAULT; ELSEIF UPDATING THEN SET N.COL2_ssn = O.COL2_ssn; END IF; END"}, {"label": "section_header", "id": 7, "page_no": 124, "cluster": {"id": 7, "label": "section_header", "bbox": {"l": 64.4358139038086, "t": 445.3469543457031, "r": 360.91705, "b": 462.0101318359375, "coord_origin": "TOPLEFT"}, "confidence": 0.968204915523529, "cells": [{"id": 32, "text": "6.9", "bbox": {"l": 64.800003, "t": 446.2207, "r": 87.247795, "b": 460.9837, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Triggers and functions (SECURED)", "bbox": {"l": 91.737335, "t": 446.2207, "r": 360.91705, "b": 460.9837, "coord_origin": "TOPLEFT"}}]}, "text": "6.9 Triggers and functions (SECURED)"}, {"label": "text", "id": 8, "page_no": 124, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.90432739257812, "t": 477.2076721191406, "r": 547.24677, "b": 536.2446899414062, "coord_origin": "TOPLEFT"}, "confidence": 0.984616219997406, "cells": [{"id": 34, "text": "There are some considerations that must be considered when there are triggers and ", "bbox": {"l": 136.8, "t": 478.48874, "r": 511.73724000000004, "b": 487.70172, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "functions on tables that have RCAC enabled. The purpose of SECURE for triggers and ", "bbox": {"l": 136.8, "t": 490.54831, "r": 522.49512, "b": 499.76129, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "functions is so that a user who is allowed to create a trigger or function is not necessarily able ", "bbox": {"l": 136.8, "t": 502.54813, "r": 547.24677, "b": 511.76111, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "to make it SECURE themselves. This prevents the trigger/function developer from adding ", "bbox": {"l": 136.8, "t": 514.5479399999999, "r": 532.30658, "b": 523.7609299999999, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "code that skims off data that they are not allowed to see.", "bbox": {"l": 136.8, "t": 526.5477599999999, "r": 386.24026, "b": 535.7607399999999, "coord_origin": "TOPLEFT"}}]}, "text": "There are some considerations that must be considered when there are triggers and functions on tables that have RCAC enabled. The purpose of SECURE for triggers and functions is so that a user who is allowed to create a trigger or function is not necessarily able to make it SECURE themselves. This prevents the trigger/function developer from adding code that skims off data that they are not allowed to see."}, {"label": "section_header", "id": 9, "page_no": 124, "cluster": {"id": 9, "label": "section_header", "bbox": {"l": 64.1463851928711, "t": 555.9064331054688, "r": 151.61127, "b": 569.22412109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9636334180831909, "cells": [{"id": 39, "text": "6.9.1", "bbox": {"l": 64.800003, "t": 556.37462, "r": 94.489105, "b": 568.36263, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Triggers", "bbox": {"l": 98.200249, "t": 556.37462, "r": 151.61127, "b": 568.36263, "coord_origin": "TOPLEFT"}}]}, "text": "6.9.1 Triggers"}, {"label": "text", "id": 10, "page_no": 124, "cluster": {"id": 10, "label": "text", "bbox": {"l": 135.57107543945312, "t": 582.0809936523438, "r": 547.28851, "b": 627.99658203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9859280586242676, "cells": [{"id": 41, "text": "Triggers have access to the data in rows outside of the row permission or column masking. ", "bbox": {"l": 136.8, "t": 582.52863, "r": 539.66608, "b": 591.74162, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "An after trigger has access to the new row image after the permission has allowed the update ", "bbox": {"l": 136.80002, "t": 594.52843, "r": 547.28851, "b": 603.7414200000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "or insert to occur. Therefore, the triggers can potentially change the insert or update image ", "bbox": {"l": 136.80002, "t": 606.52823, "r": 539.64722, "b": 615.74123, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "value so that it violates the permission.", "bbox": {"l": 136.80002, "t": 618.52803, "r": 308.52338, "b": 627.74103, "coord_origin": "TOPLEFT"}}]}, "text": "Triggers have access to the data in rows outside of the row permission or column masking. An after trigger has access to the new row image after the permission has allowed the update or insert to occur. Therefore, the triggers can potentially change the insert or update image value so that it violates the permission."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 124, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 370.6949157714844, "t": 754.8876342773438, "r": 517.96918, "b": 763.9262084960938, "coord_origin": "TOPLEFT"}, "confidence": 0.9537138938903809, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 371.28, "t": 755.538002, "r": 517.96918, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 124, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.17626953125, "t": 754.1600341796875, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9287368059158325, "cells": [{"id": 1, "text": "109", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "109"}]}}, {"page_no": 125, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "110 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Any triggers that are defined on a table must be created with an attribute that designates that ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 547.19171, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "it is SECURED when RCAC definitions are created or altered for that table, as shown in ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 525.63544, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Example 6-6. The same applies to a view that has an instead of trigger. That trigger must be ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 546.29614, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "secure at the point RCAC is enabled for any of the underlying tables the view is over.", "bbox": {"l": 136.8, "t": 107.50811999999996, "r": 510.41656, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Example 6-6 Trigger SECURED", "bbox": {"l": 136.8, "t": 129.49805000000003, "r": 268.7634, "b": 137.82299999999998, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "/* Trigger created with the SECURED attribute */ ", "bbox": {"l": 136.8, "t": 146.65808000000004, "r": 381.65662, "b": 155.43286, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "CREATE TRIGGER PREVENT_MASK_SSN BEFORE INSERT OR UPDATE ON MY_LIB.EMP_INFO", "bbox": {"l": 136.8, "t": 158.65790000000004, "r": 506.5749200000001, "b": 167.43268, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "REFERENCING NEW ROW AS N OLD ROW AS O", "bbox": {"l": 136.8, "t": 170.65770999999995, "r": 321.65756, "b": 179.4325, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "FOR EACH ROW MODE DB2ROW", "bbox": {"l": 136.8, "t": 182.65752999999995, "r": 256.73828, "b": 191.43231000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "SECURED", "bbox": {"l": 136.8, "t": 194.65734999999995, "r": 171.77951, "b": 203.48193000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "WHEN(SUBSTR(N.COL2_ssn,1,7) = 'XXX-XX-')", "bbox": {"l": 136.8, "t": 206.65716999999995, "r": 336.65732, "b": 215.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": " BEGIN", "bbox": {"l": 136.8, "t": 218.65697999999998, "r": 171.77951, "b": 227.43176000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " IF INSERTING THEN SET N.COL2_ssn = DEFAULT;", "bbox": {"l": 136.8, "t": 230.65679999999998, "r": 361.67685, "b": 239.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": " ELSEIF UPDATING THEN SET N.COL2_ssn = O.COL2_ssn;", "bbox": {"l": 136.8, "t": 242.65661999999998, "r": 391.61661, "b": 251.43140000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": " END IF;", "bbox": {"l": 136.8, "t": 254.65643, "r": 181.73952, "b": 263.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "END", "bbox": {"l": 136.8, "t": 266.65625, "r": 151.74001, "b": 275.43102999999996, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "6.9.2", "bbox": {"l": 64.800003, "t": 303.35474, "r": 95.878601, "b": 315.34271, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Functions", "bbox": {"l": 99.763428, "t": 303.35474, "r": 166.5321, "b": 315.34271, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Within a ", "bbox": {"l": 136.8, "t": 329.50872999999996, "r": 175.10915, "b": 338.72171, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "CREATE PERMISSION ", "bbox": {"l": 175.19978, "t": 329.65811, "r": 264.23819, "b": 338.4827, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "or ", "bbox": {"l": 264.2402, "t": 329.50872999999996, "r": 275.93024, "b": 338.72171, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "CREATE MASK", "bbox": {"l": 275.70016, "t": 329.65811, "r": 330.17938, "b": 338.4827, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": ", a function can be called. Because that UDF has ", "bbox": {"l": 330.18036, "t": 329.50872999999996, "r": 547.26648, "b": 338.72171, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "access to the data before the RCAC rules are applied, the SECURE attribute is required on ", "bbox": {"l": 136.79997, "t": 341.50854, "r": 541.7995, "b": 350.72153, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "that function, as shown in Example 6-7.", "bbox": {"l": 136.79997, "t": 353.50836, "r": 311.13376, "b": 362.72134, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Example 6-7 Specifying SECURED on a function", "bbox": {"l": 136.8, "t": 375.55798, "r": 336.69186, "b": 383.88300000000004, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "CREATE PERMISSION SCHEMA.PERM1 ON SCHEMA.TABLE1 FOR ROWS WHERE", "bbox": {"l": 136.8, "t": 392.65811, "r": 446.63564999999994, "b": 401.43289, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "MY_UDF(CURRENT_USER,COLUMN1) = 1 ", "bbox": {"l": 136.8, "t": 404.65793, "r": 301.6778, "b": 413.43271, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "ENFORCED FOR ALL ACCESS ENABLE;", "bbox": {"l": 136.8, "t": 416.65775, "r": 291.71783, "b": 425.43253, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "CREATE FUNCTION MY_UDF", "bbox": {"l": 136.8, "t": 440.65735, "r": 246.71854, "b": 449.43213, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "(INP1 CHAR(32),", "bbox": {"l": 151.20016, "t": 452.65717, "r": 226.13921, "b": 461.43195, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "INP2 INTEGER)", "bbox": {"l": 151.20016, "t": 464.65698, "r": 216.11943000000002, "b": 473.43176, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Returns INTEGER", "bbox": {"l": 136.8, "t": 476.6568, "r": 211.73903, "b": 485.43158, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "LANGUAGE SQL", "bbox": {"l": 136.8, "t": 488.65662, "r": 196.73926, "b": 497.4314, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "CONTAINS SQL ", "bbox": {"l": 136.8, "t": 500.65643, "r": 201.71927, "b": 509.43121, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "SECURED", "bbox": {"l": 136.8, "t": 512.65625, "r": 171.77951, "b": 521.48083, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "The SECURED attribute of MY_UDF signifies that the function is considered secure for ", "bbox": {"l": 136.8, "t": 541.54724, "r": 523.70319, "b": 550.7602400000001, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "RCAC. If a function is called from an SQL statement, and references a column in a table that ", "bbox": {"l": 136.8, "t": 553.54704, "r": 547.25848, "b": 562.76004, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "has RCAC, it must be declared as secure. In that case, if the secure function calls other ", "bbox": {"l": 136.8, "t": 565.54684, "r": 525.11749, "b": 574.7598399999999, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "functions, they are not validated to confirm whether they are secure.", "bbox": {"l": 136.8, "t": 577.54665, "r": 436.59887999999995, "b": 586.75964, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Consider the following examples:", "bbox": {"l": 136.8, "t": 599.50645, "r": 282.67517, "b": 608.71945, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "GLYPH", "bbox": {"l": 136.8, "t": 616.69542, "r": 141.78, "b": 625.47017, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Table1 has RCAC defined and enabled. ", "bbox": {"l": 151.20016, "t": 616.54602, "r": 328.26205, "b": 625.75902, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "SELECT", "bbox": {"l": 328.26007, "t": 616.69542, "r": 358.25958, "b": 625.5199700000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": " MY_UDF2(Column2) from schema.table1.", "bbox": {"l": 358.25958, "t": 616.54602, "r": 547.18878, "b": 625.75902, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "MY_UDF2 must be created with the SECURED attribute. If MY_UDF2 invokes MY_UDF3, ", "bbox": {"l": 151.19916, "t": 633.52583, "r": 547.14795, "b": 642.73883, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "there is no checking to ensure that it is also created with SECURED.", "bbox": {"l": 151.19916, "t": 645.52563, "r": 453.13351000000006, "b": 654.7386300000001, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "NOT SECURED is the default on the create function unless SECURED is explicitly ", "bbox": {"l": 151.19916, "t": 662.50545, "r": 517.91437, "b": 671.71844, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "selected.", "bbox": {"l": 151.19917, "t": 674.5052499999999, "r": 191.17961, "b": 683.71825, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "This same rule applies for any function that might be invoked with a masked column ", "bbox": {"l": 151.19917, "t": 691.54482, "r": 523.39453, "b": 700.75782, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "specified as an argument.", "bbox": {"l": 151.19917, "t": 703.544624, "r": 265.68439, "b": 712.757629, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.38241577148438, "t": 754.223876953125, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9262574315071106, "cells": [{"id": 0, "text": "110 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 98.55854797363281, "t": 754.67041015625, "r": 339.81958, "b": 764.0196533203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9510535597801208, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.9443817138672, "t": 70.57403564453125, "r": 547.19171, "b": 116.93487548828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9825777411460876, "cells": [{"id": 2, "text": "Any triggers that are defined on a table must be created with an attribute that designates that ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 547.19171, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "it is SECURED when RCAC definitions are created or altered for that table, as shown in ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 525.63544, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Example 6-6. The same applies to a view that has an instead of trigger. That trigger must be ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 546.29614, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "secure at the point RCAC is enabled for any of the underlying tables the view is over.", "bbox": {"l": 136.8, "t": 107.50811999999996, "r": 510.41656, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.2041778564453, "t": 128.47238159179688, "r": 269.5399475097656, "b": 138.4495086669922, "coord_origin": "TOPLEFT"}, "confidence": 0.6751627326011658, "cells": [{"id": 6, "text": "Example 6-6 Trigger SECURED", "bbox": {"l": 136.8, "t": 129.49805000000003, "r": 268.7634, "b": 137.82299999999998, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "code", "bbox": {"l": 135.4769287109375, "t": 144.5382080078125, "r": 506.97552490234375, "b": 277.2768249511719, "coord_origin": "TOPLEFT"}, "confidence": 0.8320841193199158, "cells": [{"id": 7, "text": "/* Trigger created with the SECURED attribute */ ", "bbox": {"l": 136.8, "t": 146.65808000000004, "r": 381.65662, "b": 155.43286, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "CREATE TRIGGER PREVENT_MASK_SSN BEFORE INSERT OR UPDATE ON MY_LIB.EMP_INFO", "bbox": {"l": 136.8, "t": 158.65790000000004, "r": 506.5749200000001, "b": 167.43268, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "REFERENCING NEW ROW AS N OLD ROW AS O", "bbox": {"l": 136.8, "t": 170.65770999999995, "r": 321.65756, "b": 179.4325, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "FOR EACH ROW MODE DB2ROW", "bbox": {"l": 136.8, "t": 182.65752999999995, "r": 256.73828, "b": 191.43231000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "SECURED", "bbox": {"l": 136.8, "t": 194.65734999999995, "r": 171.77951, "b": 203.48193000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "WHEN(SUBSTR(N.COL2_ssn,1,7) = 'XXX-XX-')", "bbox": {"l": 136.8, "t": 206.65716999999995, "r": 336.65732, "b": 215.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": " BEGIN", "bbox": {"l": 136.8, "t": 218.65697999999998, "r": 171.77951, "b": 227.43176000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " IF INSERTING THEN SET N.COL2_ssn = DEFAULT;", "bbox": {"l": 136.8, "t": 230.65679999999998, "r": 361.67685, "b": 239.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": " ELSEIF UPDATING THEN SET N.COL2_ssn = O.COL2_ssn;", "bbox": {"l": 136.8, "t": 242.65661999999998, "r": 391.61661, "b": 251.43140000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": " END IF;", "bbox": {"l": 136.8, "t": 254.65643, "r": 181.73952, "b": 263.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "END", "bbox": {"l": 136.8, "t": 266.65625, "r": 151.74001, "b": 275.43102999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "section_header", "bbox": {"l": 64.11894226074219, "t": 302.4302978515625, "r": 166.5321, "b": 315.34271, "coord_origin": "TOPLEFT"}, "confidence": 0.9550953507423401, "cells": [{"id": 18, "text": "6.9.2", "bbox": {"l": 64.800003, "t": 303.35474, "r": 95.878601, "b": 315.34271, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Functions", "bbox": {"l": 99.763428, "t": 303.35474, "r": 166.5321, "b": 315.34271, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 135.63002014160156, "t": 328.42071533203125, "r": 547.26648, "b": 362.8425598144531, "coord_origin": "TOPLEFT"}, "confidence": 0.9755208492279053, "cells": [{"id": 20, "text": "Within a ", "bbox": {"l": 136.8, "t": 329.50872999999996, "r": 175.10915, "b": 338.72171, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "CREATE PERMISSION ", "bbox": {"l": 175.19978, "t": 329.65811, "r": 264.23819, "b": 338.4827, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "or ", "bbox": {"l": 264.2402, "t": 329.50872999999996, "r": 275.93024, "b": 338.72171, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "CREATE MASK", "bbox": {"l": 275.70016, "t": 329.65811, "r": 330.17938, "b": 338.4827, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": ", a function can be called. Because that UDF has ", "bbox": {"l": 330.18036, "t": 329.50872999999996, "r": 547.26648, "b": 338.72171, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "access to the data before the RCAC rules are applied, the SECURE attribute is required on ", "bbox": {"l": 136.79997, "t": 341.50854, "r": 541.7995, "b": 350.72153, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "that function, as shown in Example 6-7.", "bbox": {"l": 136.79997, "t": 353.50836, "r": 311.13376, "b": 362.72134, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "code", "bbox": {"l": 134.9473114013672, "t": 375.2805480957031, "r": 547.4903564453125, "b": 525.2118530273438, "coord_origin": "TOPLEFT"}, "confidence": 0.7434961199760437, "cells": [{"id": 27, "text": "Example 6-7 Specifying SECURED on a function", "bbox": {"l": 136.8, "t": 375.55798, "r": 336.69186, "b": 383.88300000000004, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "CREATE PERMISSION SCHEMA.PERM1 ON SCHEMA.TABLE1 FOR ROWS WHERE", "bbox": {"l": 136.8, "t": 392.65811, "r": 446.63564999999994, "b": 401.43289, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "MY_UDF(CURRENT_USER,COLUMN1) = 1 ", "bbox": {"l": 136.8, "t": 404.65793, "r": 301.6778, "b": 413.43271, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "ENFORCED FOR ALL ACCESS ENABLE;", "bbox": {"l": 136.8, "t": 416.65775, "r": 291.71783, "b": 425.43253, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "CREATE FUNCTION MY_UDF", "bbox": {"l": 136.8, "t": 440.65735, "r": 246.71854, "b": 449.43213, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "(INP1 CHAR(32),", "bbox": {"l": 151.20016, "t": 452.65717, "r": 226.13921, "b": 461.43195, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "INP2 INTEGER)", "bbox": {"l": 151.20016, "t": 464.65698, "r": 216.11943000000002, "b": 473.43176, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Returns INTEGER", "bbox": {"l": 136.8, "t": 476.6568, "r": 211.73903, "b": 485.43158, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "LANGUAGE SQL", "bbox": {"l": 136.8, "t": 488.65662, "r": 196.73926, "b": 497.4314, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "CONTAINS SQL ", "bbox": {"l": 136.8, "t": 500.65643, "r": 201.71927, "b": 509.43121, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "SECURED", "bbox": {"l": 136.8, "t": 512.65625, "r": 171.77951, "b": 521.48083, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 135.8338165283203, "t": 540.63720703125, "r": 547.25848, "b": 586.96923828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9799280166625977, "cells": [{"id": 38, "text": "The SECURED attribute of MY_UDF signifies that the function is considered secure for ", "bbox": {"l": 136.8, "t": 541.54724, "r": 523.70319, "b": 550.7602400000001, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "RCAC. If a function is called from an SQL statement, and references a column in a table that ", "bbox": {"l": 136.8, "t": 553.54704, "r": 547.25848, "b": 562.76004, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "has RCAC, it must be declared as secure. In that case, if the secure function calls other ", "bbox": {"l": 136.8, "t": 565.54684, "r": 525.11749, "b": 574.7598399999999, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "functions, they are not validated to confirm whether they are secure.", "bbox": {"l": 136.8, "t": 577.54665, "r": 436.59887999999995, "b": 586.75964, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 136.09840393066406, "t": 598.6279296875, "r": 282.67517, "b": 608.9580078125, "coord_origin": "TOPLEFT"}, "confidence": 0.7475109100341797, "cells": [{"id": 42, "text": "Consider the following examples:", "bbox": {"l": 136.8, "t": 599.50645, "r": 282.67517, "b": 608.71945, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 135.61990356445312, "t": 615.7908935546875, "r": 547.18878, "b": 625.75902, "coord_origin": "TOPLEFT"}, "confidence": 0.8809047937393188, "cells": [{"id": 43, "text": "GLYPH", "bbox": {"l": 136.8, "t": 616.69542, "r": 141.78, "b": 625.47017, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Table1 has RCAC defined and enabled. ", "bbox": {"l": 151.20016, "t": 616.54602, "r": 328.26205, "b": 625.75902, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "SELECT", "bbox": {"l": 328.26007, "t": 616.69542, "r": 358.25958, "b": 625.5199700000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": " MY_UDF2(Column2) from schema.table1.", "bbox": {"l": 358.25958, "t": 616.54602, "r": 547.18878, "b": 625.75902, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 150.3736572265625, "t": 632.4197387695312, "r": 547.14795, "b": 654.8876953125, "coord_origin": "TOPLEFT"}, "confidence": 0.6744217872619629, "cells": [{"id": 47, "text": "MY_UDF2 must be created with the SECURED attribute. If MY_UDF2 invokes MY_UDF3, ", "bbox": {"l": 151.19916, "t": 633.52583, "r": 547.14795, "b": 642.73883, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "there is no checking to ensure that it is also created with SECURED.", "bbox": {"l": 151.19916, "t": 645.52563, "r": 453.13351000000006, "b": 654.7386300000001, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "list_item", "bbox": {"l": 150.47885131835938, "t": 661.2188720703125, "r": 517.91437, "b": 683.71825, "coord_origin": "TOPLEFT"}, "confidence": 0.704971969127655, "cells": [{"id": 49, "text": "NOT SECURED is the default on the create function unless SECURED is explicitly ", "bbox": {"l": 151.19916, "t": 662.50545, "r": 517.91437, "b": 671.71844, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "selected.", "bbox": {"l": 151.19917, "t": 674.5052499999999, "r": 191.17961, "b": 683.71825, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 150.35072326660156, "t": 690.4181518554688, "r": 523.39453, "b": 713.2664794921875, "coord_origin": "TOPLEFT"}, "confidence": 0.856052815914154, "cells": [{"id": 51, "text": "This same rule applies for any function that might be invoked with a masked column ", "bbox": {"l": 151.19917, "t": 691.54482, "r": 523.39453, "b": 700.75782, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "specified as an argument.", "bbox": {"l": 151.19917, "t": 703.544624, "r": 265.68439, "b": 712.757629, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 125, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.38241577148438, "t": 754.223876953125, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9262574315071106, "cells": [{"id": 0, "text": "110 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "110"}, {"label": "page_footer", "id": 1, "page_no": 125, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.55854797363281, "t": 754.67041015625, "r": 339.81958, "b": 764.0196533203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9510535597801208, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 2, "page_no": 125, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.9443817138672, "t": 70.57403564453125, "r": 547.19171, "b": 116.93487548828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9825777411460876, "cells": [{"id": 2, "text": "Any triggers that are defined on a table must be created with an attribute that designates that ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 547.19171, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "it is SECURED when RCAC definitions are created or altered for that table, as shown in ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 525.63544, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Example 6-6. The same applies to a view that has an instead of trigger. That trigger must be ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 546.29614, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "secure at the point RCAC is enabled for any of the underlying tables the view is over.", "bbox": {"l": 136.8, "t": 107.50811999999996, "r": 510.41656, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Any triggers that are defined on a table must be created with an attribute that designates that it is SECURED when RCAC definitions are created or altered for that table, as shown in Example 6-6. The same applies to a view that has an instead of trigger. That trigger must be secure at the point RCAC is enabled for any of the underlying tables the view is over."}, {"label": "caption", "id": 3, "page_no": 125, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.2041778564453, "t": 128.47238159179688, "r": 269.5399475097656, "b": 138.4495086669922, "coord_origin": "TOPLEFT"}, "confidence": 0.6751627326011658, "cells": [{"id": 6, "text": "Example 6-6 Trigger SECURED", "bbox": {"l": 136.8, "t": 129.49805000000003, "r": 268.7634, "b": 137.82299999999998, "coord_origin": "TOPLEFT"}}]}, "text": "Example 6-6 Trigger SECURED"}, {"label": "code", "id": 4, "page_no": 125, "cluster": {"id": 4, "label": "code", "bbox": {"l": 135.4769287109375, "t": 144.5382080078125, "r": 506.97552490234375, "b": 277.2768249511719, "coord_origin": "TOPLEFT"}, "confidence": 0.8320841193199158, "cells": [{"id": 7, "text": "/* Trigger created with the SECURED attribute */ ", "bbox": {"l": 136.8, "t": 146.65808000000004, "r": 381.65662, "b": 155.43286, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "CREATE TRIGGER PREVENT_MASK_SSN BEFORE INSERT OR UPDATE ON MY_LIB.EMP_INFO", "bbox": {"l": 136.8, "t": 158.65790000000004, "r": 506.5749200000001, "b": 167.43268, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "REFERENCING NEW ROW AS N OLD ROW AS O", "bbox": {"l": 136.8, "t": 170.65770999999995, "r": 321.65756, "b": 179.4325, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "FOR EACH ROW MODE DB2ROW", "bbox": {"l": 136.8, "t": 182.65752999999995, "r": 256.73828, "b": 191.43231000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "SECURED", "bbox": {"l": 136.8, "t": 194.65734999999995, "r": 171.77951, "b": 203.48193000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "WHEN(SUBSTR(N.COL2_ssn,1,7) = 'XXX-XX-')", "bbox": {"l": 136.8, "t": 206.65716999999995, "r": 336.65732, "b": 215.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": " BEGIN", "bbox": {"l": 136.8, "t": 218.65697999999998, "r": 171.77951, "b": 227.43176000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " IF INSERTING THEN SET N.COL2_ssn = DEFAULT;", "bbox": {"l": 136.8, "t": 230.65679999999998, "r": 361.67685, "b": 239.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": " ELSEIF UPDATING THEN SET N.COL2_ssn = O.COL2_ssn;", "bbox": {"l": 136.8, "t": 242.65661999999998, "r": 391.61661, "b": 251.43140000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": " END IF;", "bbox": {"l": 136.8, "t": 254.65643, "r": 181.73952, "b": 263.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "END", "bbox": {"l": 136.8, "t": 266.65625, "r": 151.74001, "b": 275.43102999999996, "coord_origin": "TOPLEFT"}}]}, "text": "/* Trigger created with the SECURED attribute */ CREATE TRIGGER PREVENT_MASK_SSN BEFORE INSERT OR UPDATE ON MY_LIB.EMP_INFO REFERENCING NEW ROW AS N OLD ROW AS O FOR EACH ROW MODE DB2ROW SECURED WHEN(SUBSTR(N.COL2_ssn,1,7) = 'XXX-XX-') BEGIN IF INSERTING THEN SET N.COL2_ssn = DEFAULT; ELSEIF UPDATING THEN SET N.COL2_ssn = O.COL2_ssn; END IF; END"}, {"label": "section_header", "id": 5, "page_no": 125, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 64.11894226074219, "t": 302.4302978515625, "r": 166.5321, "b": 315.34271, "coord_origin": "TOPLEFT"}, "confidence": 0.9550953507423401, "cells": [{"id": 18, "text": "6.9.2", "bbox": {"l": 64.800003, "t": 303.35474, "r": 95.878601, "b": 315.34271, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Functions", "bbox": {"l": 99.763428, "t": 303.35474, "r": 166.5321, "b": 315.34271, "coord_origin": "TOPLEFT"}}]}, "text": "6.9.2 Functions"}, {"label": "text", "id": 6, "page_no": 125, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.63002014160156, "t": 328.42071533203125, "r": 547.26648, "b": 362.8425598144531, "coord_origin": "TOPLEFT"}, "confidence": 0.9755208492279053, "cells": [{"id": 20, "text": "Within a ", "bbox": {"l": 136.8, "t": 329.50872999999996, "r": 175.10915, "b": 338.72171, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "CREATE PERMISSION ", "bbox": {"l": 175.19978, "t": 329.65811, "r": 264.23819, "b": 338.4827, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "or ", "bbox": {"l": 264.2402, "t": 329.50872999999996, "r": 275.93024, "b": 338.72171, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "CREATE MASK", "bbox": {"l": 275.70016, "t": 329.65811, "r": 330.17938, "b": 338.4827, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": ", a function can be called. Because that UDF has ", "bbox": {"l": 330.18036, "t": 329.50872999999996, "r": 547.26648, "b": 338.72171, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "access to the data before the RCAC rules are applied, the SECURE attribute is required on ", "bbox": {"l": 136.79997, "t": 341.50854, "r": 541.7995, "b": 350.72153, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "that function, as shown in Example 6-7.", "bbox": {"l": 136.79997, "t": 353.50836, "r": 311.13376, "b": 362.72134, "coord_origin": "TOPLEFT"}}]}, "text": "Within a CREATE PERMISSION or CREATE MASK , a function can be called. Because that UDF has access to the data before the RCAC rules are applied, the SECURE attribute is required on that function, as shown in Example 6-7."}, {"label": "code", "id": 7, "page_no": 125, "cluster": {"id": 7, "label": "code", "bbox": {"l": 134.9473114013672, "t": 375.2805480957031, "r": 547.4903564453125, "b": 525.2118530273438, "coord_origin": "TOPLEFT"}, "confidence": 0.7434961199760437, "cells": [{"id": 27, "text": "Example 6-7 Specifying SECURED on a function", "bbox": {"l": 136.8, "t": 375.55798, "r": 336.69186, "b": 383.88300000000004, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "CREATE PERMISSION SCHEMA.PERM1 ON SCHEMA.TABLE1 FOR ROWS WHERE", "bbox": {"l": 136.8, "t": 392.65811, "r": 446.63564999999994, "b": 401.43289, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "MY_UDF(CURRENT_USER,COLUMN1) = 1 ", "bbox": {"l": 136.8, "t": 404.65793, "r": 301.6778, "b": 413.43271, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "ENFORCED FOR ALL ACCESS ENABLE;", "bbox": {"l": 136.8, "t": 416.65775, "r": 291.71783, "b": 425.43253, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "CREATE FUNCTION MY_UDF", "bbox": {"l": 136.8, "t": 440.65735, "r": 246.71854, "b": 449.43213, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "(INP1 CHAR(32),", "bbox": {"l": 151.20016, "t": 452.65717, "r": 226.13921, "b": 461.43195, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "INP2 INTEGER)", "bbox": {"l": 151.20016, "t": 464.65698, "r": 216.11943000000002, "b": 473.43176, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Returns INTEGER", "bbox": {"l": 136.8, "t": 476.6568, "r": 211.73903, "b": 485.43158, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "LANGUAGE SQL", "bbox": {"l": 136.8, "t": 488.65662, "r": 196.73926, "b": 497.4314, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "CONTAINS SQL ", "bbox": {"l": 136.8, "t": 500.65643, "r": 201.71927, "b": 509.43121, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "SECURED", "bbox": {"l": 136.8, "t": 512.65625, "r": 171.77951, "b": 521.48083, "coord_origin": "TOPLEFT"}}]}, "text": "Example 6-7 Specifying SECURED on a function CREATE PERMISSION SCHEMA.PERM1 ON SCHEMA.TABLE1 FOR ROWS WHERE MY_UDF(CURRENT_USER,COLUMN1) = 1 ENFORCED FOR ALL ACCESS ENABLE; CREATE FUNCTION MY_UDF (INP1 CHAR(32), INP2 INTEGER) Returns INTEGER LANGUAGE SQL CONTAINS SQL SECURED"}, {"label": "text", "id": 8, "page_no": 125, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.8338165283203, "t": 540.63720703125, "r": 547.25848, "b": 586.96923828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9799280166625977, "cells": [{"id": 38, "text": "The SECURED attribute of MY_UDF signifies that the function is considered secure for ", "bbox": {"l": 136.8, "t": 541.54724, "r": 523.70319, "b": 550.7602400000001, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "RCAC. If a function is called from an SQL statement, and references a column in a table that ", "bbox": {"l": 136.8, "t": 553.54704, "r": 547.25848, "b": 562.76004, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "has RCAC, it must be declared as secure. In that case, if the secure function calls other ", "bbox": {"l": 136.8, "t": 565.54684, "r": 525.11749, "b": 574.7598399999999, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "functions, they are not validated to confirm whether they are secure.", "bbox": {"l": 136.8, "t": 577.54665, "r": 436.59887999999995, "b": 586.75964, "coord_origin": "TOPLEFT"}}]}, "text": "The SECURED attribute of MY_UDF signifies that the function is considered secure for RCAC. If a function is called from an SQL statement, and references a column in a table that has RCAC, it must be declared as secure. In that case, if the secure function calls other functions, they are not validated to confirm whether they are secure."}, {"label": "text", "id": 9, "page_no": 125, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.09840393066406, "t": 598.6279296875, "r": 282.67517, "b": 608.9580078125, "coord_origin": "TOPLEFT"}, "confidence": 0.7475109100341797, "cells": [{"id": 42, "text": "Consider the following examples:", "bbox": {"l": 136.8, "t": 599.50645, "r": 282.67517, "b": 608.71945, "coord_origin": "TOPLEFT"}}]}, "text": "Consider the following examples:"}, {"label": "list_item", "id": 10, "page_no": 125, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.61990356445312, "t": 615.7908935546875, "r": 547.18878, "b": 625.75902, "coord_origin": "TOPLEFT"}, "confidence": 0.8809047937393188, "cells": [{"id": 43, "text": "GLYPH", "bbox": {"l": 136.8, "t": 616.69542, "r": 141.78, "b": 625.47017, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Table1 has RCAC defined and enabled. ", "bbox": {"l": 151.20016, "t": 616.54602, "r": 328.26205, "b": 625.75902, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "SELECT", "bbox": {"l": 328.26007, "t": 616.69542, "r": 358.25958, "b": 625.5199700000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": " MY_UDF2(Column2) from schema.table1.", "bbox": {"l": 358.25958, "t": 616.54602, "r": 547.18878, "b": 625.75902, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Table1 has RCAC defined and enabled. SELECT MY_UDF2(Column2) from schema.table1."}, {"label": "list_item", "id": 11, "page_no": 125, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 150.3736572265625, "t": 632.4197387695312, "r": 547.14795, "b": 654.8876953125, "coord_origin": "TOPLEFT"}, "confidence": 0.6744217872619629, "cells": [{"id": 47, "text": "MY_UDF2 must be created with the SECURED attribute. If MY_UDF2 invokes MY_UDF3, ", "bbox": {"l": 151.19916, "t": 633.52583, "r": 547.14795, "b": 642.73883, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "there is no checking to ensure that it is also created with SECURED.", "bbox": {"l": 151.19916, "t": 645.52563, "r": 453.13351000000006, "b": 654.7386300000001, "coord_origin": "TOPLEFT"}}]}, "text": "MY_UDF2 must be created with the SECURED attribute. If MY_UDF2 invokes MY_UDF3, there is no checking to ensure that it is also created with SECURED."}, {"label": "list_item", "id": 12, "page_no": 125, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 150.47885131835938, "t": 661.2188720703125, "r": 517.91437, "b": 683.71825, "coord_origin": "TOPLEFT"}, "confidence": 0.704971969127655, "cells": [{"id": 49, "text": "NOT SECURED is the default on the create function unless SECURED is explicitly ", "bbox": {"l": 151.19916, "t": 662.50545, "r": 517.91437, "b": 671.71844, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "selected.", "bbox": {"l": 151.19917, "t": 674.5052499999999, "r": 191.17961, "b": 683.71825, "coord_origin": "TOPLEFT"}}]}, "text": "NOT SECURED is the default on the create function unless SECURED is explicitly selected."}, {"label": "text", "id": 13, "page_no": 125, "cluster": {"id": 13, "label": "text", "bbox": {"l": 150.35072326660156, "t": 690.4181518554688, "r": 523.39453, "b": 713.2664794921875, "coord_origin": "TOPLEFT"}, "confidence": 0.856052815914154, "cells": [{"id": 51, "text": "This same rule applies for any function that might be invoked with a masked column ", "bbox": {"l": 151.19917, "t": 691.54482, "r": 523.39453, "b": 700.75782, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "specified as an argument.", "bbox": {"l": 151.19917, "t": 703.544624, "r": 265.68439, "b": 712.757629, "coord_origin": "TOPLEFT"}}]}, "text": "This same rule applies for any function that might be invoked with a masked column specified as an argument."}], "body": [{"label": "text", "id": 2, "page_no": 125, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.9443817138672, "t": 70.57403564453125, "r": 547.19171, "b": 116.93487548828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9825777411460876, "cells": [{"id": 2, "text": "Any triggers that are defined on a table must be created with an attribute that designates that ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 547.19171, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "it is SECURED when RCAC definitions are created or altered for that table, as shown in ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 525.63544, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Example 6-6. The same applies to a view that has an instead of trigger. That trigger must be ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 546.29614, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "secure at the point RCAC is enabled for any of the underlying tables the view is over.", "bbox": {"l": 136.8, "t": 107.50811999999996, "r": 510.41656, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Any triggers that are defined on a table must be created with an attribute that designates that it is SECURED when RCAC definitions are created or altered for that table, as shown in Example 6-6. The same applies to a view that has an instead of trigger. That trigger must be secure at the point RCAC is enabled for any of the underlying tables the view is over."}, {"label": "caption", "id": 3, "page_no": 125, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.2041778564453, "t": 128.47238159179688, "r": 269.5399475097656, "b": 138.4495086669922, "coord_origin": "TOPLEFT"}, "confidence": 0.6751627326011658, "cells": [{"id": 6, "text": "Example 6-6 Trigger SECURED", "bbox": {"l": 136.8, "t": 129.49805000000003, "r": 268.7634, "b": 137.82299999999998, "coord_origin": "TOPLEFT"}}]}, "text": "Example 6-6 Trigger SECURED"}, {"label": "code", "id": 4, "page_no": 125, "cluster": {"id": 4, "label": "code", "bbox": {"l": 135.4769287109375, "t": 144.5382080078125, "r": 506.97552490234375, "b": 277.2768249511719, "coord_origin": "TOPLEFT"}, "confidence": 0.8320841193199158, "cells": [{"id": 7, "text": "/* Trigger created with the SECURED attribute */ ", "bbox": {"l": 136.8, "t": 146.65808000000004, "r": 381.65662, "b": 155.43286, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "CREATE TRIGGER PREVENT_MASK_SSN BEFORE INSERT OR UPDATE ON MY_LIB.EMP_INFO", "bbox": {"l": 136.8, "t": 158.65790000000004, "r": 506.5749200000001, "b": 167.43268, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "REFERENCING NEW ROW AS N OLD ROW AS O", "bbox": {"l": 136.8, "t": 170.65770999999995, "r": 321.65756, "b": 179.4325, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "FOR EACH ROW MODE DB2ROW", "bbox": {"l": 136.8, "t": 182.65752999999995, "r": 256.73828, "b": 191.43231000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "SECURED", "bbox": {"l": 136.8, "t": 194.65734999999995, "r": 171.77951, "b": 203.48193000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "WHEN(SUBSTR(N.COL2_ssn,1,7) = 'XXX-XX-')", "bbox": {"l": 136.8, "t": 206.65716999999995, "r": 336.65732, "b": 215.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": " BEGIN", "bbox": {"l": 136.8, "t": 218.65697999999998, "r": 171.77951, "b": 227.43176000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " IF INSERTING THEN SET N.COL2_ssn = DEFAULT;", "bbox": {"l": 136.8, "t": 230.65679999999998, "r": 361.67685, "b": 239.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": " ELSEIF UPDATING THEN SET N.COL2_ssn = O.COL2_ssn;", "bbox": {"l": 136.8, "t": 242.65661999999998, "r": 391.61661, "b": 251.43140000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": " END IF;", "bbox": {"l": 136.8, "t": 254.65643, "r": 181.73952, "b": 263.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "END", "bbox": {"l": 136.8, "t": 266.65625, "r": 151.74001, "b": 275.43102999999996, "coord_origin": "TOPLEFT"}}]}, "text": "/* Trigger created with the SECURED attribute */ CREATE TRIGGER PREVENT_MASK_SSN BEFORE INSERT OR UPDATE ON MY_LIB.EMP_INFO REFERENCING NEW ROW AS N OLD ROW AS O FOR EACH ROW MODE DB2ROW SECURED WHEN(SUBSTR(N.COL2_ssn,1,7) = 'XXX-XX-') BEGIN IF INSERTING THEN SET N.COL2_ssn = DEFAULT; ELSEIF UPDATING THEN SET N.COL2_ssn = O.COL2_ssn; END IF; END"}, {"label": "section_header", "id": 5, "page_no": 125, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 64.11894226074219, "t": 302.4302978515625, "r": 166.5321, "b": 315.34271, "coord_origin": "TOPLEFT"}, "confidence": 0.9550953507423401, "cells": [{"id": 18, "text": "6.9.2", "bbox": {"l": 64.800003, "t": 303.35474, "r": 95.878601, "b": 315.34271, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Functions", "bbox": {"l": 99.763428, "t": 303.35474, "r": 166.5321, "b": 315.34271, "coord_origin": "TOPLEFT"}}]}, "text": "6.9.2 Functions"}, {"label": "text", "id": 6, "page_no": 125, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.63002014160156, "t": 328.42071533203125, "r": 547.26648, "b": 362.8425598144531, "coord_origin": "TOPLEFT"}, "confidence": 0.9755208492279053, "cells": [{"id": 20, "text": "Within a ", "bbox": {"l": 136.8, "t": 329.50872999999996, "r": 175.10915, "b": 338.72171, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "CREATE PERMISSION ", "bbox": {"l": 175.19978, "t": 329.65811, "r": 264.23819, "b": 338.4827, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "or ", "bbox": {"l": 264.2402, "t": 329.50872999999996, "r": 275.93024, "b": 338.72171, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "CREATE MASK", "bbox": {"l": 275.70016, "t": 329.65811, "r": 330.17938, "b": 338.4827, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": ", a function can be called. Because that UDF has ", "bbox": {"l": 330.18036, "t": 329.50872999999996, "r": 547.26648, "b": 338.72171, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "access to the data before the RCAC rules are applied, the SECURE attribute is required on ", "bbox": {"l": 136.79997, "t": 341.50854, "r": 541.7995, "b": 350.72153, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "that function, as shown in Example 6-7.", "bbox": {"l": 136.79997, "t": 353.50836, "r": 311.13376, "b": 362.72134, "coord_origin": "TOPLEFT"}}]}, "text": "Within a CREATE PERMISSION or CREATE MASK , a function can be called. Because that UDF has access to the data before the RCAC rules are applied, the SECURE attribute is required on that function, as shown in Example 6-7."}, {"label": "code", "id": 7, "page_no": 125, "cluster": {"id": 7, "label": "code", "bbox": {"l": 134.9473114013672, "t": 375.2805480957031, "r": 547.4903564453125, "b": 525.2118530273438, "coord_origin": "TOPLEFT"}, "confidence": 0.7434961199760437, "cells": [{"id": 27, "text": "Example 6-7 Specifying SECURED on a function", "bbox": {"l": 136.8, "t": 375.55798, "r": 336.69186, "b": 383.88300000000004, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "CREATE PERMISSION SCHEMA.PERM1 ON SCHEMA.TABLE1 FOR ROWS WHERE", "bbox": {"l": 136.8, "t": 392.65811, "r": 446.63564999999994, "b": 401.43289, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "MY_UDF(CURRENT_USER,COLUMN1) = 1 ", "bbox": {"l": 136.8, "t": 404.65793, "r": 301.6778, "b": 413.43271, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "ENFORCED FOR ALL ACCESS ENABLE;", "bbox": {"l": 136.8, "t": 416.65775, "r": 291.71783, "b": 425.43253, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "CREATE FUNCTION MY_UDF", "bbox": {"l": 136.8, "t": 440.65735, "r": 246.71854, "b": 449.43213, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "(INP1 CHAR(32),", "bbox": {"l": 151.20016, "t": 452.65717, "r": 226.13921, "b": 461.43195, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "INP2 INTEGER)", "bbox": {"l": 151.20016, "t": 464.65698, "r": 216.11943000000002, "b": 473.43176, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Returns INTEGER", "bbox": {"l": 136.8, "t": 476.6568, "r": 211.73903, "b": 485.43158, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "LANGUAGE SQL", "bbox": {"l": 136.8, "t": 488.65662, "r": 196.73926, "b": 497.4314, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "CONTAINS SQL ", "bbox": {"l": 136.8, "t": 500.65643, "r": 201.71927, "b": 509.43121, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "SECURED", "bbox": {"l": 136.8, "t": 512.65625, "r": 171.77951, "b": 521.48083, "coord_origin": "TOPLEFT"}}]}, "text": "Example 6-7 Specifying SECURED on a function CREATE PERMISSION SCHEMA.PERM1 ON SCHEMA.TABLE1 FOR ROWS WHERE MY_UDF(CURRENT_USER,COLUMN1) = 1 ENFORCED FOR ALL ACCESS ENABLE; CREATE FUNCTION MY_UDF (INP1 CHAR(32), INP2 INTEGER) Returns INTEGER LANGUAGE SQL CONTAINS SQL SECURED"}, {"label": "text", "id": 8, "page_no": 125, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.8338165283203, "t": 540.63720703125, "r": 547.25848, "b": 586.96923828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9799280166625977, "cells": [{"id": 38, "text": "The SECURED attribute of MY_UDF signifies that the function is considered secure for ", "bbox": {"l": 136.8, "t": 541.54724, "r": 523.70319, "b": 550.7602400000001, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "RCAC. If a function is called from an SQL statement, and references a column in a table that ", "bbox": {"l": 136.8, "t": 553.54704, "r": 547.25848, "b": 562.76004, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "has RCAC, it must be declared as secure. In that case, if the secure function calls other ", "bbox": {"l": 136.8, "t": 565.54684, "r": 525.11749, "b": 574.7598399999999, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "functions, they are not validated to confirm whether they are secure.", "bbox": {"l": 136.8, "t": 577.54665, "r": 436.59887999999995, "b": 586.75964, "coord_origin": "TOPLEFT"}}]}, "text": "The SECURED attribute of MY_UDF signifies that the function is considered secure for RCAC. If a function is called from an SQL statement, and references a column in a table that has RCAC, it must be declared as secure. In that case, if the secure function calls other functions, they are not validated to confirm whether they are secure."}, {"label": "text", "id": 9, "page_no": 125, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.09840393066406, "t": 598.6279296875, "r": 282.67517, "b": 608.9580078125, "coord_origin": "TOPLEFT"}, "confidence": 0.7475109100341797, "cells": [{"id": 42, "text": "Consider the following examples:", "bbox": {"l": 136.8, "t": 599.50645, "r": 282.67517, "b": 608.71945, "coord_origin": "TOPLEFT"}}]}, "text": "Consider the following examples:"}, {"label": "list_item", "id": 10, "page_no": 125, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.61990356445312, "t": 615.7908935546875, "r": 547.18878, "b": 625.75902, "coord_origin": "TOPLEFT"}, "confidence": 0.8809047937393188, "cells": [{"id": 43, "text": "GLYPH", "bbox": {"l": 136.8, "t": 616.69542, "r": 141.78, "b": 625.47017, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Table1 has RCAC defined and enabled. ", "bbox": {"l": 151.20016, "t": 616.54602, "r": 328.26205, "b": 625.75902, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "SELECT", "bbox": {"l": 328.26007, "t": 616.69542, "r": 358.25958, "b": 625.5199700000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": " MY_UDF2(Column2) from schema.table1.", "bbox": {"l": 358.25958, "t": 616.54602, "r": 547.18878, "b": 625.75902, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Table1 has RCAC defined and enabled. SELECT MY_UDF2(Column2) from schema.table1."}, {"label": "list_item", "id": 11, "page_no": 125, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 150.3736572265625, "t": 632.4197387695312, "r": 547.14795, "b": 654.8876953125, "coord_origin": "TOPLEFT"}, "confidence": 0.6744217872619629, "cells": [{"id": 47, "text": "MY_UDF2 must be created with the SECURED attribute. If MY_UDF2 invokes MY_UDF3, ", "bbox": {"l": 151.19916, "t": 633.52583, "r": 547.14795, "b": 642.73883, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "there is no checking to ensure that it is also created with SECURED.", "bbox": {"l": 151.19916, "t": 645.52563, "r": 453.13351000000006, "b": 654.7386300000001, "coord_origin": "TOPLEFT"}}]}, "text": "MY_UDF2 must be created with the SECURED attribute. If MY_UDF2 invokes MY_UDF3, there is no checking to ensure that it is also created with SECURED."}, {"label": "list_item", "id": 12, "page_no": 125, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 150.47885131835938, "t": 661.2188720703125, "r": 517.91437, "b": 683.71825, "coord_origin": "TOPLEFT"}, "confidence": 0.704971969127655, "cells": [{"id": 49, "text": "NOT SECURED is the default on the create function unless SECURED is explicitly ", "bbox": {"l": 151.19916, "t": 662.50545, "r": 517.91437, "b": 671.71844, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "selected.", "bbox": {"l": 151.19917, "t": 674.5052499999999, "r": 191.17961, "b": 683.71825, "coord_origin": "TOPLEFT"}}]}, "text": "NOT SECURED is the default on the create function unless SECURED is explicitly selected."}, {"label": "text", "id": 13, "page_no": 125, "cluster": {"id": 13, "label": "text", "bbox": {"l": 150.35072326660156, "t": 690.4181518554688, "r": 523.39453, "b": 713.2664794921875, "coord_origin": "TOPLEFT"}, "confidence": 0.856052815914154, "cells": [{"id": 51, "text": "This same rule applies for any function that might be invoked with a masked column ", "bbox": {"l": 151.19917, "t": 691.54482, "r": 523.39453, "b": 700.75782, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "specified as an argument.", "bbox": {"l": 151.19917, "t": 703.544624, "r": 265.68439, "b": 712.757629, "coord_origin": "TOPLEFT"}}]}, "text": "This same rule applies for any function that might be invoked with a masked column specified as an argument."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 125, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.38241577148438, "t": 754.223876953125, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9262574315071106, "cells": [{"id": 0, "text": "110 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "110"}, {"label": "page_footer", "id": 1, "page_no": 125, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.55854797363281, "t": 754.67041015625, "r": 339.81958, "b": 764.0196533203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9510535597801208, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 126, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 371.28, "t": 755.538002, "r": 517.96918, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "111", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "GLYPH", "bbox": {"l": 136.8002, "t": 71.65845000000002, "r": 141.7802, "b": 80.43322999999998, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Table2 column SSN has a column mask that is defined on it. ", "bbox": {"l": 151.20036, "t": 71.50903000000005, "r": 419.79163, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "SELECT", "bbox": {"l": 151.20036, "t": 88.63823999999988, "r": 181.14012, "b": 97.46283000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": " MY_UDF4(SSN) from table2. Because SSN has a column mask that is defined, ", "bbox": {"l": 181.19989, "t": 88.48883000000001, "r": 537.51099, "b": 97.70183999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "MY_UDF4 must be created with the SECURED attribute.", "bbox": {"l": 151.20036, "t": 100.48865, "r": 402.42545, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "6.10", "bbox": {"l": 64.800003, "t": 138.18073000000004, "r": 96.288353, "b": 152.94372999999996, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "RCAC is only one part of the solution", "bbox": {"l": 100.78667, "t": 138.18073000000004, "r": 387.57983, "b": 152.94372999999996, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "When designing and implementing RCAC row permissions, special attention should be given ", "bbox": {"l": 136.8, "t": 170.50867000000005, "r": 547.25458, "b": 179.72168, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "to the effectiveness and limitations of controlling data access. Data can be housed in objects ", "bbox": {"l": 136.8, "t": 182.50847999999996, "r": 547.1908, "b": 191.7215, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "other than tables or physical files. The role and responsibility of the database user, for ", "bbox": {"l": 136.8, "t": 194.50829999999996, "r": 516.95819, "b": 203.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "example, the database engineer, must be reconciled with their respective authority and ", "bbox": {"l": 136.79999, "t": 206.50811999999996, "r": 522.3587, "b": 215.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "access privileges.", "bbox": {"l": 136.79999, "t": 218.50793, "r": 215.6035, "b": 227.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Figure 6-25 illustrates that object level security is the first check and that RCAC permissions ", "bbox": {"l": 136.79999, "t": 240.52752999999996, "r": 544.86804, "b": 249.74054, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "provide control only on tables and physical files.", "bbox": {"l": 136.8, "t": 252.52733999999998, "r": 347.7309, "b": 261.74036, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Figure 6-25 Object-level security and RCAC permissions", "bbox": {"l": 136.8, "t": 564.7979, "r": 366.65814, "b": 573.12291, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "To get access to the table and the rows, the user must pass the object level authority test and ", "bbox": {"l": 136.8, "t": 590.80862, "r": 547.21686, "b": 600.02162, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "the RCAC permission test.", "bbox": {"l": 136.8, "t": 602.80843, "r": 254.45151, "b": 612.02142, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "The IBM i journal captures the transactional data and places an image of the row in the ", "bbox": {"l": 136.8, "t": 624.76823, "r": 523.51202, "b": 633.98123, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "journal receiver. If the user has access to the journal receiver, the row image can be viewed if ", "bbox": {"l": 136.8, "t": 636.76804, "r": 547.21771, "b": 645.98103, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "the user has authority to the journal receiver.", "bbox": {"l": 136.8, "t": 648.76784, "r": 334.24704, "b": 657.98083, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Although the SQL Plan Cache data, the SQL Plan Cache Snapshot data, and the SQL ", "bbox": {"l": 136.8, "t": 670.7874, "r": 520.78979, "b": 680.0004, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Performance Monitor data do not reveal the results of queries, they can show the literal values ", "bbox": {"l": 136.8, "t": 682.78721, "r": 547.24268, "b": 692.000214, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "that are passed along with the SQL statements.", "bbox": {"l": 136.8, "t": 694.787018, "r": 347.23083, "b": 704.000023, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Object", "bbox": {"l": 156.9715, "t": 285.76688, "r": 190.61691, "b": 296.29796999999996, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Level", "bbox": {"l": 160.69307, "t": 300.53012, "r": 186.89537, "b": 311.06122, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Authority", "bbox": {"l": 149.2823, "t": 315.2934, "r": 198.35532, "b": 325.82449, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Functional", "bbox": {"l": 267.20389, "t": 285.76688, "r": 320.83136, "b": 296.29796999999996, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "ID", "bbox": {"l": 288.48755, "t": 300.53012, "r": 299.54523, "b": 311.06122, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Allowance", "bbox": {"l": 267.45001, "t": 315.2934, "r": 320.55463, "b": 325.82449, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "RCAC", "bbox": {"l": 220.76109000000002, "t": 285.76688, "r": 247.8049, "b": 296.29796999999996, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Permission", "bbox": {"l": 206.33618, "t": 300.53012, "r": 262.33313, "b": 311.06122, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Table", "bbox": {"l": 438.45789, "t": 342.79007, "r": 464.58762, "b": 353.32117000000005, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "GLYPH", "bbox": {"l": 169.6125, "t": 341.27759, "r": 177.77641, "b": 355.31033, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "GLYPH", "bbox": {"l": 230.17299999999997, "t": 342.35464, "r": 238.33691, "b": 356.38739, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Journal Receiver", "bbox": {"l": 386.50961, "t": 387.26437, "r": 470.06216, "b": 397.79547, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "GLYPH", "bbox": {"l": 169.6125, "t": 385.75198, "r": 177.77641, "b": 399.7847300000001, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "SQL Plan Cache", "bbox": {"l": 380.32751, "t": 433.3996, "r": 458.0436700000001, "b": 443.93069, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "GLYPH", "bbox": {"l": 169.6125, "t": 431.91799999999995, "r": 177.77641, "b": 445.95074, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "GLYPH", "bbox": {"l": 289.84091, "t": 431.88718, "r": 298.00482, "b": 445.91992, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "SQL Plan Cache Snapshot", "bbox": {"l": 344.00369, "t": 479.53488, "r": 471.96899, "b": 490.06598, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "GLYPH", "bbox": {"l": 169.6125, "t": 478.02237, "r": 177.77641, "b": 492.05511, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "GLYPH", "bbox": {"l": 289.84006, "t": 478.02237, "r": 298.00397, "b": 492.05511, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "SQL Performance Monitor", "bbox": {"l": 333.2695, "t": 528.7457899999999, "r": 465.95779, "b": 539.27689, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "GLYPH", "bbox": {"l": 169.6125, "t": 527.2332799999999, "r": 177.77641, "b": 541.26604, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "GLYPH", "bbox": {"l": 289.84006, "t": 527.2332799999999, "r": 298.00397, "b": 541.26604, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 370.63580322265625, "t": 754.8801879882812, "r": 517.96918, "b": 763.9136352539062, "coord_origin": "TOPLEFT"}, "confidence": 0.9545277953147888, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 371.28, "t": 755.538002, "r": 517.96918, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 529.969970703125, "t": 754.25830078125, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9215238094329834, "cells": [{"id": 1, "text": "111", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 135.3511199951172, "t": 70.59781646728516, "r": 419.79163, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}, "confidence": 0.9019970893859863, "cells": [{"id": 2, "text": "GLYPH", "bbox": {"l": 136.8002, "t": 71.65845000000002, "r": 141.7802, "b": 80.43322999999998, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Table2 column SSN has a column mask that is defined on it. ", "bbox": {"l": 151.20036, "t": 71.50903000000005, "r": 419.79163, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "list_item", "bbox": {"l": 150.33642578125, "t": 87.26454162597656, "r": 537.51099, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.6998697519302368, "cells": [{"id": 4, "text": "SELECT", "bbox": {"l": 151.20036, "t": 88.63823999999988, "r": 181.14012, "b": 97.46283000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": " MY_UDF4(SSN) from table2. Because SSN has a column mask that is defined, ", "bbox": {"l": 181.19989, "t": 88.48883000000001, "r": 537.51099, "b": 97.70183999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "MY_UDF4 must be created with the SECURED attribute.", "bbox": {"l": 151.20036, "t": 100.48865, "r": 402.42545, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 64.35963439941406, "t": 136.777099609375, "r": 387.57983, "b": 153.22242736816406, "coord_origin": "TOPLEFT"}, "confidence": 0.9685361981391907, "cells": [{"id": 7, "text": "6.10", "bbox": {"l": 64.800003, "t": 138.18073000000004, "r": 96.288353, "b": 152.94372999999996, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "RCAC is only one part of the solution", "bbox": {"l": 100.78667, "t": 138.18073000000004, "r": 387.57983, "b": 152.94372999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.8172607421875, "t": 169.369384765625, "r": 547.25458, "b": 227.78855895996094, "coord_origin": "TOPLEFT"}, "confidence": 0.9881147146224976, "cells": [{"id": 9, "text": "When designing and implementing RCAC row permissions, special attention should be given ", "bbox": {"l": 136.8, "t": 170.50867000000005, "r": 547.25458, "b": 179.72168, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "to the effectiveness and limitations of controlling data access. Data can be housed in objects ", "bbox": {"l": 136.8, "t": 182.50847999999996, "r": 547.1908, "b": 191.7215, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "other than tables or physical files. The role and responsibility of the database user, for ", "bbox": {"l": 136.8, "t": 194.50829999999996, "r": 516.95819, "b": 203.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "example, the database engineer, must be reconciled with their respective authority and ", "bbox": {"l": 136.79999, "t": 206.50811999999996, "r": 522.3587, "b": 215.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "access privileges.", "bbox": {"l": 136.79999, "t": 218.50793, "r": 215.6035, "b": 227.72095000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 136.24098205566406, "t": 239.97531127929688, "r": 544.86804, "b": 262.68121337890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9742384552955627, "cells": [{"id": 14, "text": "Figure 6-25 illustrates that object level security is the first check and that RCAC permissions ", "bbox": {"l": 136.79999, "t": 240.52752999999996, "r": 544.86804, "b": 249.74054, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "provide control only on tables and physical files.", "bbox": {"l": 136.8, "t": 252.52733999999998, "r": 347.7309, "b": 261.74036, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "caption", "bbox": {"l": 136.0601806640625, "t": 564.0174560546875, "r": 366.7088317871094, "b": 573.477783203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9522354602813721, "cells": [{"id": 16, "text": "Figure 6-25 Object-level security and RCAC permissions", "bbox": {"l": 136.8, "t": 564.7979, "r": 366.65814, "b": 573.12291, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 135.88059997558594, "t": 590.0465087890625, "r": 547.21686, "b": 612.02142, "coord_origin": "TOPLEFT"}, "confidence": 0.9771828055381775, "cells": [{"id": 17, "text": "To get access to the table and the rows, the user must pass the object level authority test and ", "bbox": {"l": 136.8, "t": 590.80862, "r": 547.21686, "b": 600.02162, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "the RCAC permission test.", "bbox": {"l": 136.8, "t": 602.80843, "r": 254.45151, "b": 612.02142, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 135.60548400878906, "t": 624.0549926757812, "r": 547.21771, "b": 658.4563598632812, "coord_origin": "TOPLEFT"}, "confidence": 0.9841781258583069, "cells": [{"id": 19, "text": "The IBM i journal captures the transactional data and places an image of the row in the ", "bbox": {"l": 136.8, "t": 624.76823, "r": 523.51202, "b": 633.98123, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "journal receiver. If the user has access to the journal receiver, the row image can be viewed if ", "bbox": {"l": 136.8, "t": 636.76804, "r": 547.21771, "b": 645.98103, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "the user has authority to the journal receiver.", "bbox": {"l": 136.8, "t": 648.76784, "r": 334.24704, "b": 657.98083, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 136.01368713378906, "t": 669.8409423828125, "r": 547.24268, "b": 704.1990966796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9835835099220276, "cells": [{"id": 22, "text": "Although the SQL Plan Cache data, the SQL Plan Cache Snapshot data, and the SQL ", "bbox": {"l": 136.8, "t": 670.7874, "r": 520.78979, "b": 680.0004, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Performance Monitor data do not reveal the results of queries, they can show the literal values ", "bbox": {"l": 136.8, "t": 682.78721, "r": 547.24268, "b": 692.000214, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "that are passed along with the SQL statements.", "bbox": {"l": 136.8, "t": 694.787018, "r": 347.23083, "b": 704.000023, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "picture", "bbox": {"l": 136.06109619140625, "t": 276.0924377441406, "r": 509.6692199707031, "b": 561.36865234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9848344326019287, "cells": [{"id": 25, "text": "Object", "bbox": {"l": 156.9715, "t": 285.76688, "r": 190.61691, "b": 296.29796999999996, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Level", "bbox": {"l": 160.69307, "t": 300.53012, "r": 186.89537, "b": 311.06122, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Authority", "bbox": {"l": 149.2823, "t": 315.2934, "r": 198.35532, "b": 325.82449, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Functional", "bbox": {"l": 267.20389, "t": 285.76688, "r": 320.83136, "b": 296.29796999999996, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "ID", "bbox": {"l": 288.48755, "t": 300.53012, "r": 299.54523, "b": 311.06122, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Allowance", "bbox": {"l": 267.45001, "t": 315.2934, "r": 320.55463, "b": 325.82449, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "RCAC", "bbox": {"l": 220.76109000000002, "t": 285.76688, "r": 247.8049, "b": 296.29796999999996, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Permission", "bbox": {"l": 206.33618, "t": 300.53012, "r": 262.33313, "b": 311.06122, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Table", "bbox": {"l": 438.45789, "t": 342.79007, "r": 464.58762, "b": 353.32117000000005, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "GLYPH", "bbox": {"l": 169.6125, "t": 341.27759, "r": 177.77641, "b": 355.31033, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "GLYPH", "bbox": {"l": 230.17299999999997, "t": 342.35464, "r": 238.33691, "b": 356.38739, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Journal Receiver", "bbox": {"l": 386.50961, "t": 387.26437, "r": 470.06216, "b": 397.79547, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "GLYPH", "bbox": {"l": 169.6125, "t": 385.75198, "r": 177.77641, "b": 399.7847300000001, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "SQL Plan Cache", "bbox": {"l": 380.32751, "t": 433.3996, "r": 458.0436700000001, "b": 443.93069, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "GLYPH", "bbox": {"l": 169.6125, "t": 431.91799999999995, "r": 177.77641, "b": 445.95074, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "GLYPH", "bbox": {"l": 289.84091, "t": 431.88718, "r": 298.00482, "b": 445.91992, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "SQL Plan Cache Snapshot", "bbox": {"l": 344.00369, "t": 479.53488, "r": 471.96899, "b": 490.06598, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "GLYPH", "bbox": {"l": 169.6125, "t": 478.02237, "r": 177.77641, "b": 492.05511, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "GLYPH", "bbox": {"l": 289.84006, "t": 478.02237, "r": 298.00397, "b": 492.05511, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "SQL Performance Monitor", "bbox": {"l": 333.2695, "t": 528.7457899999999, "r": 465.95779, "b": 539.27689, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "GLYPH", "bbox": {"l": 169.6125, "t": 527.2332799999999, "r": 177.77641, "b": 541.26604, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "GLYPH", "bbox": {"l": 289.84006, "t": 527.2332799999999, "r": 298.00397, "b": 541.26604, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 126, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 370.63580322265625, "t": 754.8801879882812, "r": 517.96918, "b": 763.9136352539062, "coord_origin": "TOPLEFT"}, "confidence": 0.9545277953147888, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 371.28, "t": 755.538002, "r": 517.96918, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 126, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 529.969970703125, "t": 754.25830078125, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9215238094329834, "cells": [{"id": 1, "text": "111", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "111"}, {"label": "list_item", "id": 2, "page_no": 126, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.3511199951172, "t": 70.59781646728516, "r": 419.79163, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}, "confidence": 0.9019970893859863, "cells": [{"id": 2, "text": "GLYPH", "bbox": {"l": 136.8002, "t": 71.65845000000002, "r": 141.7802, "b": 80.43322999999998, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Table2 column SSN has a column mask that is defined on it. ", "bbox": {"l": 151.20036, "t": 71.50903000000005, "r": 419.79163, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Table2 column SSN has a column mask that is defined on it."}, {"label": "list_item", "id": 3, "page_no": 126, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 150.33642578125, "t": 87.26454162597656, "r": 537.51099, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.6998697519302368, "cells": [{"id": 4, "text": "SELECT", "bbox": {"l": 151.20036, "t": 88.63823999999988, "r": 181.14012, "b": 97.46283000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": " MY_UDF4(SSN) from table2. Because SSN has a column mask that is defined, ", "bbox": {"l": 181.19989, "t": 88.48883000000001, "r": 537.51099, "b": 97.70183999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "MY_UDF4 must be created with the SECURED attribute.", "bbox": {"l": 151.20036, "t": 100.48865, "r": 402.42545, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT MY_UDF4(SSN) from table2. Because SSN has a column mask that is defined, MY_UDF4 must be created with the SECURED attribute."}, {"label": "section_header", "id": 4, "page_no": 126, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.35963439941406, "t": 136.777099609375, "r": 387.57983, "b": 153.22242736816406, "coord_origin": "TOPLEFT"}, "confidence": 0.9685361981391907, "cells": [{"id": 7, "text": "6.10", "bbox": {"l": 64.800003, "t": 138.18073000000004, "r": 96.288353, "b": 152.94372999999996, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "RCAC is only one part of the solution", "bbox": {"l": 100.78667, "t": 138.18073000000004, "r": 387.57983, "b": 152.94372999999996, "coord_origin": "TOPLEFT"}}]}, "text": "6.10 RCAC is only one part of the solution"}, {"label": "text", "id": 5, "page_no": 126, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.8172607421875, "t": 169.369384765625, "r": 547.25458, "b": 227.78855895996094, "coord_origin": "TOPLEFT"}, "confidence": 0.9881147146224976, "cells": [{"id": 9, "text": "When designing and implementing RCAC row permissions, special attention should be given ", "bbox": {"l": 136.8, "t": 170.50867000000005, "r": 547.25458, "b": 179.72168, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "to the effectiveness and limitations of controlling data access. Data can be housed in objects ", "bbox": {"l": 136.8, "t": 182.50847999999996, "r": 547.1908, "b": 191.7215, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "other than tables or physical files. The role and responsibility of the database user, for ", "bbox": {"l": 136.8, "t": 194.50829999999996, "r": 516.95819, "b": 203.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "example, the database engineer, must be reconciled with their respective authority and ", "bbox": {"l": 136.79999, "t": 206.50811999999996, "r": 522.3587, "b": 215.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "access privileges.", "bbox": {"l": 136.79999, "t": 218.50793, "r": 215.6035, "b": 227.72095000000002, "coord_origin": "TOPLEFT"}}]}, "text": "When designing and implementing RCAC row permissions, special attention should be given to the effectiveness and limitations of controlling data access. Data can be housed in objects other than tables or physical files. The role and responsibility of the database user, for example, the database engineer, must be reconciled with their respective authority and access privileges."}, {"label": "text", "id": 6, "page_no": 126, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.24098205566406, "t": 239.97531127929688, "r": 544.86804, "b": 262.68121337890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9742384552955627, "cells": [{"id": 14, "text": "Figure 6-25 illustrates that object level security is the first check and that RCAC permissions ", "bbox": {"l": 136.79999, "t": 240.52752999999996, "r": 544.86804, "b": 249.74054, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "provide control only on tables and physical files.", "bbox": {"l": 136.8, "t": 252.52733999999998, "r": 347.7309, "b": 261.74036, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-25 illustrates that object level security is the first check and that RCAC permissions provide control only on tables and physical files."}, {"label": "caption", "id": 7, "page_no": 126, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 136.0601806640625, "t": 564.0174560546875, "r": 366.7088317871094, "b": 573.477783203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9522354602813721, "cells": [{"id": 16, "text": "Figure 6-25 Object-level security and RCAC permissions", "bbox": {"l": 136.8, "t": 564.7979, "r": 366.65814, "b": 573.12291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-25 Object-level security and RCAC permissions"}, {"label": "text", "id": 8, "page_no": 126, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.88059997558594, "t": 590.0465087890625, "r": 547.21686, "b": 612.02142, "coord_origin": "TOPLEFT"}, "confidence": 0.9771828055381775, "cells": [{"id": 17, "text": "To get access to the table and the rows, the user must pass the object level authority test and ", "bbox": {"l": 136.8, "t": 590.80862, "r": 547.21686, "b": 600.02162, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "the RCAC permission test.", "bbox": {"l": 136.8, "t": 602.80843, "r": 254.45151, "b": 612.02142, "coord_origin": "TOPLEFT"}}]}, "text": "To get access to the table and the rows, the user must pass the object level authority test and the RCAC permission test."}, {"label": "text", "id": 9, "page_no": 126, "cluster": {"id": 9, "label": "text", "bbox": {"l": 135.60548400878906, "t": 624.0549926757812, "r": 547.21771, "b": 658.4563598632812, "coord_origin": "TOPLEFT"}, "confidence": 0.9841781258583069, "cells": [{"id": 19, "text": "The IBM i journal captures the transactional data and places an image of the row in the ", "bbox": {"l": 136.8, "t": 624.76823, "r": 523.51202, "b": 633.98123, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "journal receiver. If the user has access to the journal receiver, the row image can be viewed if ", "bbox": {"l": 136.8, "t": 636.76804, "r": 547.21771, "b": 645.98103, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "the user has authority to the journal receiver.", "bbox": {"l": 136.8, "t": 648.76784, "r": 334.24704, "b": 657.98083, "coord_origin": "TOPLEFT"}}]}, "text": "The IBM i journal captures the transactional data and places an image of the row in the journal receiver. If the user has access to the journal receiver, the row image can be viewed if the user has authority to the journal receiver."}, {"label": "text", "id": 10, "page_no": 126, "cluster": {"id": 10, "label": "text", "bbox": {"l": 136.01368713378906, "t": 669.8409423828125, "r": 547.24268, "b": 704.1990966796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9835835099220276, "cells": [{"id": 22, "text": "Although the SQL Plan Cache data, the SQL Plan Cache Snapshot data, and the SQL ", "bbox": {"l": 136.8, "t": 670.7874, "r": 520.78979, "b": 680.0004, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Performance Monitor data do not reveal the results of queries, they can show the literal values ", "bbox": {"l": 136.8, "t": 682.78721, "r": 547.24268, "b": 692.000214, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "that are passed along with the SQL statements.", "bbox": {"l": 136.8, "t": 694.787018, "r": 347.23083, "b": 704.000023, "coord_origin": "TOPLEFT"}}]}, "text": "Although the SQL Plan Cache data, the SQL Plan Cache Snapshot data, and the SQL Performance Monitor data do not reveal the results of queries, they can show the literal values that are passed along with the SQL statements."}, {"label": "picture", "id": 11, "page_no": 126, "cluster": {"id": 11, "label": "picture", "bbox": {"l": 136.06109619140625, "t": 276.0924377441406, "r": 509.6692199707031, "b": 561.36865234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9848344326019287, "cells": [{"id": 25, "text": "Object", "bbox": {"l": 156.9715, "t": 285.76688, "r": 190.61691, "b": 296.29796999999996, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Level", "bbox": {"l": 160.69307, "t": 300.53012, "r": 186.89537, "b": 311.06122, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Authority", "bbox": {"l": 149.2823, "t": 315.2934, "r": 198.35532, "b": 325.82449, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Functional", "bbox": {"l": 267.20389, "t": 285.76688, "r": 320.83136, "b": 296.29796999999996, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "ID", "bbox": {"l": 288.48755, "t": 300.53012, "r": 299.54523, "b": 311.06122, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Allowance", "bbox": {"l": 267.45001, "t": 315.2934, "r": 320.55463, "b": 325.82449, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "RCAC", "bbox": {"l": 220.76109000000002, "t": 285.76688, "r": 247.8049, "b": 296.29796999999996, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Permission", "bbox": {"l": 206.33618, "t": 300.53012, "r": 262.33313, "b": 311.06122, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Table", "bbox": {"l": 438.45789, "t": 342.79007, "r": 464.58762, "b": 353.32117000000005, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "GLYPH", "bbox": {"l": 169.6125, "t": 341.27759, "r": 177.77641, "b": 355.31033, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "GLYPH", "bbox": {"l": 230.17299999999997, "t": 342.35464, "r": 238.33691, "b": 356.38739, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Journal Receiver", "bbox": {"l": 386.50961, "t": 387.26437, "r": 470.06216, "b": 397.79547, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "GLYPH", "bbox": {"l": 169.6125, "t": 385.75198, "r": 177.77641, "b": 399.7847300000001, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "SQL Plan Cache", "bbox": {"l": 380.32751, "t": 433.3996, "r": 458.0436700000001, "b": 443.93069, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "GLYPH", "bbox": {"l": 169.6125, "t": 431.91799999999995, "r": 177.77641, "b": 445.95074, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "GLYPH", "bbox": {"l": 289.84091, "t": 431.88718, "r": 298.00482, "b": 445.91992, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "SQL Plan Cache Snapshot", "bbox": {"l": 344.00369, "t": 479.53488, "r": 471.96899, "b": 490.06598, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "GLYPH", "bbox": {"l": 169.6125, "t": 478.02237, "r": 177.77641, "b": 492.05511, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "GLYPH", "bbox": {"l": 289.84006, "t": 478.02237, "r": 298.00397, "b": 492.05511, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "SQL Performance Monitor", "bbox": {"l": 333.2695, "t": 528.7457899999999, "r": 465.95779, "b": 539.27689, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "GLYPH", "bbox": {"l": 169.6125, "t": 527.2332799999999, "r": 177.77641, "b": 541.26604, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "GLYPH", "bbox": {"l": 289.84006, "t": 527.2332799999999, "r": 298.00397, "b": 541.26604, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 126, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.3511199951172, "t": 70.59781646728516, "r": 419.79163, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}, "confidence": 0.9019970893859863, "cells": [{"id": 2, "text": "GLYPH", "bbox": {"l": 136.8002, "t": 71.65845000000002, "r": 141.7802, "b": 80.43322999999998, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Table2 column SSN has a column mask that is defined on it. ", "bbox": {"l": 151.20036, "t": 71.50903000000005, "r": 419.79163, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Table2 column SSN has a column mask that is defined on it."}, {"label": "list_item", "id": 3, "page_no": 126, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 150.33642578125, "t": 87.26454162597656, "r": 537.51099, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.6998697519302368, "cells": [{"id": 4, "text": "SELECT", "bbox": {"l": 151.20036, "t": 88.63823999999988, "r": 181.14012, "b": 97.46283000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": " MY_UDF4(SSN) from table2. Because SSN has a column mask that is defined, ", "bbox": {"l": 181.19989, "t": 88.48883000000001, "r": 537.51099, "b": 97.70183999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "MY_UDF4 must be created with the SECURED attribute.", "bbox": {"l": 151.20036, "t": 100.48865, "r": 402.42545, "b": 109.70165999999995, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT MY_UDF4(SSN) from table2. Because SSN has a column mask that is defined, MY_UDF4 must be created with the SECURED attribute."}, {"label": "section_header", "id": 4, "page_no": 126, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.35963439941406, "t": 136.777099609375, "r": 387.57983, "b": 153.22242736816406, "coord_origin": "TOPLEFT"}, "confidence": 0.9685361981391907, "cells": [{"id": 7, "text": "6.10", "bbox": {"l": 64.800003, "t": 138.18073000000004, "r": 96.288353, "b": 152.94372999999996, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "RCAC is only one part of the solution", "bbox": {"l": 100.78667, "t": 138.18073000000004, "r": 387.57983, "b": 152.94372999999996, "coord_origin": "TOPLEFT"}}]}, "text": "6.10 RCAC is only one part of the solution"}, {"label": "text", "id": 5, "page_no": 126, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.8172607421875, "t": 169.369384765625, "r": 547.25458, "b": 227.78855895996094, "coord_origin": "TOPLEFT"}, "confidence": 0.9881147146224976, "cells": [{"id": 9, "text": "When designing and implementing RCAC row permissions, special attention should be given ", "bbox": {"l": 136.8, "t": 170.50867000000005, "r": 547.25458, "b": 179.72168, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "to the effectiveness and limitations of controlling data access. Data can be housed in objects ", "bbox": {"l": 136.8, "t": 182.50847999999996, "r": 547.1908, "b": 191.7215, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "other than tables or physical files. The role and responsibility of the database user, for ", "bbox": {"l": 136.8, "t": 194.50829999999996, "r": 516.95819, "b": 203.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "example, the database engineer, must be reconciled with their respective authority and ", "bbox": {"l": 136.79999, "t": 206.50811999999996, "r": 522.3587, "b": 215.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "access privileges.", "bbox": {"l": 136.79999, "t": 218.50793, "r": 215.6035, "b": 227.72095000000002, "coord_origin": "TOPLEFT"}}]}, "text": "When designing and implementing RCAC row permissions, special attention should be given to the effectiveness and limitations of controlling data access. Data can be housed in objects other than tables or physical files. The role and responsibility of the database user, for example, the database engineer, must be reconciled with their respective authority and access privileges."}, {"label": "text", "id": 6, "page_no": 126, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.24098205566406, "t": 239.97531127929688, "r": 544.86804, "b": 262.68121337890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9742384552955627, "cells": [{"id": 14, "text": "Figure 6-25 illustrates that object level security is the first check and that RCAC permissions ", "bbox": {"l": 136.79999, "t": 240.52752999999996, "r": 544.86804, "b": 249.74054, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "provide control only on tables and physical files.", "bbox": {"l": 136.8, "t": 252.52733999999998, "r": 347.7309, "b": 261.74036, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-25 illustrates that object level security is the first check and that RCAC permissions provide control only on tables and physical files."}, {"label": "caption", "id": 7, "page_no": 126, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 136.0601806640625, "t": 564.0174560546875, "r": 366.7088317871094, "b": 573.477783203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9522354602813721, "cells": [{"id": 16, "text": "Figure 6-25 Object-level security and RCAC permissions", "bbox": {"l": 136.8, "t": 564.7979, "r": 366.65814, "b": 573.12291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6-25 Object-level security and RCAC permissions"}, {"label": "text", "id": 8, "page_no": 126, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.88059997558594, "t": 590.0465087890625, "r": 547.21686, "b": 612.02142, "coord_origin": "TOPLEFT"}, "confidence": 0.9771828055381775, "cells": [{"id": 17, "text": "To get access to the table and the rows, the user must pass the object level authority test and ", "bbox": {"l": 136.8, "t": 590.80862, "r": 547.21686, "b": 600.02162, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "the RCAC permission test.", "bbox": {"l": 136.8, "t": 602.80843, "r": 254.45151, "b": 612.02142, "coord_origin": "TOPLEFT"}}]}, "text": "To get access to the table and the rows, the user must pass the object level authority test and the RCAC permission test."}, {"label": "text", "id": 9, "page_no": 126, "cluster": {"id": 9, "label": "text", "bbox": {"l": 135.60548400878906, "t": 624.0549926757812, "r": 547.21771, "b": 658.4563598632812, "coord_origin": "TOPLEFT"}, "confidence": 0.9841781258583069, "cells": [{"id": 19, "text": "The IBM i journal captures the transactional data and places an image of the row in the ", "bbox": {"l": 136.8, "t": 624.76823, "r": 523.51202, "b": 633.98123, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "journal receiver. If the user has access to the journal receiver, the row image can be viewed if ", "bbox": {"l": 136.8, "t": 636.76804, "r": 547.21771, "b": 645.98103, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "the user has authority to the journal receiver.", "bbox": {"l": 136.8, "t": 648.76784, "r": 334.24704, "b": 657.98083, "coord_origin": "TOPLEFT"}}]}, "text": "The IBM i journal captures the transactional data and places an image of the row in the journal receiver. If the user has access to the journal receiver, the row image can be viewed if the user has authority to the journal receiver."}, {"label": "text", "id": 10, "page_no": 126, "cluster": {"id": 10, "label": "text", "bbox": {"l": 136.01368713378906, "t": 669.8409423828125, "r": 547.24268, "b": 704.1990966796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9835835099220276, "cells": [{"id": 22, "text": "Although the SQL Plan Cache data, the SQL Plan Cache Snapshot data, and the SQL ", "bbox": {"l": 136.8, "t": 670.7874, "r": 520.78979, "b": 680.0004, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Performance Monitor data do not reveal the results of queries, they can show the literal values ", "bbox": {"l": 136.8, "t": 682.78721, "r": 547.24268, "b": 692.000214, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "that are passed along with the SQL statements.", "bbox": {"l": 136.8, "t": 694.787018, "r": 347.23083, "b": 704.000023, "coord_origin": "TOPLEFT"}}]}, "text": "Although the SQL Plan Cache data, the SQL Plan Cache Snapshot data, and the SQL Performance Monitor data do not reveal the results of queries, they can show the literal values that are passed along with the SQL statements."}, {"label": "picture", "id": 11, "page_no": 126, "cluster": {"id": 11, "label": "picture", "bbox": {"l": 136.06109619140625, "t": 276.0924377441406, "r": 509.6692199707031, "b": 561.36865234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9848344326019287, "cells": [{"id": 25, "text": "Object", "bbox": {"l": 156.9715, "t": 285.76688, "r": 190.61691, "b": 296.29796999999996, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Level", "bbox": {"l": 160.69307, "t": 300.53012, "r": 186.89537, "b": 311.06122, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Authority", "bbox": {"l": 149.2823, "t": 315.2934, "r": 198.35532, "b": 325.82449, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Functional", "bbox": {"l": 267.20389, "t": 285.76688, "r": 320.83136, "b": 296.29796999999996, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "ID", "bbox": {"l": 288.48755, "t": 300.53012, "r": 299.54523, "b": 311.06122, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Allowance", "bbox": {"l": 267.45001, "t": 315.2934, "r": 320.55463, "b": 325.82449, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "RCAC", "bbox": {"l": 220.76109000000002, "t": 285.76688, "r": 247.8049, "b": 296.29796999999996, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Permission", "bbox": {"l": 206.33618, "t": 300.53012, "r": 262.33313, "b": 311.06122, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Table", "bbox": {"l": 438.45789, "t": 342.79007, "r": 464.58762, "b": 353.32117000000005, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "GLYPH", "bbox": {"l": 169.6125, "t": 341.27759, "r": 177.77641, "b": 355.31033, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "GLYPH", "bbox": {"l": 230.17299999999997, "t": 342.35464, "r": 238.33691, "b": 356.38739, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Journal Receiver", "bbox": {"l": 386.50961, "t": 387.26437, "r": 470.06216, "b": 397.79547, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "GLYPH", "bbox": {"l": 169.6125, "t": 385.75198, "r": 177.77641, "b": 399.7847300000001, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "SQL Plan Cache", "bbox": {"l": 380.32751, "t": 433.3996, "r": 458.0436700000001, "b": 443.93069, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "GLYPH", "bbox": {"l": 169.6125, "t": 431.91799999999995, "r": 177.77641, "b": 445.95074, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "GLYPH", "bbox": {"l": 289.84091, "t": 431.88718, "r": 298.00482, "b": 445.91992, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "SQL Plan Cache Snapshot", "bbox": {"l": 344.00369, "t": 479.53488, "r": 471.96899, "b": 490.06598, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "GLYPH", "bbox": {"l": 169.6125, "t": 478.02237, "r": 177.77641, "b": 492.05511, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "GLYPH", "bbox": {"l": 289.84006, "t": 478.02237, "r": 298.00397, "b": 492.05511, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "SQL Performance Monitor", "bbox": {"l": 333.2695, "t": 528.7457899999999, "r": 465.95779, "b": 539.27689, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "GLYPH", "bbox": {"l": 169.6125, "t": 527.2332799999999, "r": 177.77641, "b": 541.26604, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "GLYPH", "bbox": {"l": 289.84006, "t": 527.2332799999999, "r": 298.00397, "b": 541.26604, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 126, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 370.63580322265625, "t": 754.8801879882812, "r": 517.96918, "b": 763.9136352539062, "coord_origin": "TOPLEFT"}, "confidence": 0.9545277953147888, "cells": [{"id": 0, "text": "Chapter 6. Additional considerations ", "bbox": {"l": 371.28, "t": 755.538002, "r": 517.96918, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 6. Additional considerations"}, {"label": "page_footer", "id": 1, "page_no": 126, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 529.969970703125, "t": 754.25830078125, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9215238094329834, "cells": [{"id": 1, "text": "111", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "111"}]}}, {"page_no": 127, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "112 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "The ability to monitor, analyze, debug, and tune data-centric applications effectively and ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 525.94611, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "efficiently requires some understanding of the underlying data, or at least the attributes of the ", "bbox": {"l": 136.79999, "t": 83.50847999999996, "r": 547.29626, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "data. The organization must be willing to reconcile the conflicting requirements of \u201crestricting ", "bbox": {"l": 136.79999, "t": 95.50829999999996, "r": 546.69183, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "access to data\u201d, and \u201cneeding access to data\u201d.", "bbox": {"l": 136.79999, "t": 107.50811999999996, "r": 341.75491, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.37667846679688, "t": 754.1668090820312, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.924152672290802, "cells": [{"id": 0, "text": "112 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 98.55838012695312, "t": 754.5621337890625, "r": 339.87249755859375, "b": 764.0390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9473952651023865, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.75006103515625, "t": 70.58626556396484, "r": 547.29626, "b": 116.85999298095703, "coord_origin": "TOPLEFT"}, "confidence": 0.9814152121543884, "cells": [{"id": 2, "text": "The ability to monitor, analyze, debug, and tune data-centric applications effectively and ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 525.94611, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "efficiently requires some understanding of the underlying data, or at least the attributes of the ", "bbox": {"l": 136.79999, "t": 83.50847999999996, "r": 547.29626, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "data. The organization must be willing to reconcile the conflicting requirements of \u201crestricting ", "bbox": {"l": 136.79999, "t": 95.50829999999996, "r": 546.69183, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "access to data\u201d, and \u201cneeding access to data\u201d.", "bbox": {"l": 136.79999, "t": 107.50811999999996, "r": 341.75491, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 127, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.37667846679688, "t": 754.1668090820312, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.924152672290802, "cells": [{"id": 0, "text": "112 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "112"}, {"label": "page_footer", "id": 1, "page_no": 127, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.55838012695312, "t": 754.5621337890625, "r": 339.87249755859375, "b": 764.0390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9473952651023865, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 2, "page_no": 127, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.75006103515625, "t": 70.58626556396484, "r": 547.29626, "b": 116.85999298095703, "coord_origin": "TOPLEFT"}, "confidence": 0.9814152121543884, "cells": [{"id": 2, "text": "The ability to monitor, analyze, debug, and tune data-centric applications effectively and ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 525.94611, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "efficiently requires some understanding of the underlying data, or at least the attributes of the ", "bbox": {"l": 136.79999, "t": 83.50847999999996, "r": 547.29626, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "data. The organization must be willing to reconcile the conflicting requirements of \u201crestricting ", "bbox": {"l": 136.79999, "t": 95.50829999999996, "r": 546.69183, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "access to data\u201d, and \u201cneeding access to data\u201d.", "bbox": {"l": 136.79999, "t": 107.50811999999996, "r": 341.75491, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "The ability to monitor, analyze, debug, and tune data-centric applications effectively and efficiently requires some understanding of the underlying data, or at least the attributes of the data. The organization must be willing to reconcile the conflicting requirements of \u201crestricting access to data\u201d, and \u201cneeding access to data\u201d."}], "body": [{"label": "text", "id": 2, "page_no": 127, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.75006103515625, "t": 70.58626556396484, "r": 547.29626, "b": 116.85999298095703, "coord_origin": "TOPLEFT"}, "confidence": 0.9814152121543884, "cells": [{"id": 2, "text": "The ability to monitor, analyze, debug, and tune data-centric applications effectively and ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 525.94611, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "efficiently requires some understanding of the underlying data, or at least the attributes of the ", "bbox": {"l": 136.79999, "t": 83.50847999999996, "r": 547.29626, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "data. The organization must be willing to reconcile the conflicting requirements of \u201crestricting ", "bbox": {"l": 136.79999, "t": 95.50829999999996, "r": 546.69183, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "access to data\u201d, and \u201cneeding access to data\u201d.", "bbox": {"l": 136.79999, "t": 107.50811999999996, "r": 341.75491, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "The ability to monitor, analyze, debug, and tune data-centric applications effectively and efficiently requires some understanding of the underlying data, or at least the attributes of the data. The organization must be willing to reconcile the conflicting requirements of \u201crestricting access to data\u201d, and \u201cneeding access to data\u201d."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 127, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.37667846679688, "t": 754.1668090820312, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.924152672290802, "cells": [{"id": 0, "text": "112 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "112"}, {"label": "page_footer", "id": 1, "page_no": 127, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.55838012695312, "t": 754.5621337890625, "r": 339.87249755859375, "b": 764.0390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9473952651023865, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 128, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "113", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Chapter 7.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Row and Column Access Control ", "bbox": {"l": 136.8, "t": 254.88635, "r": 547.26062, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "management", "bbox": {"l": 136.8, "t": 285.84671, "r": 297.06284, "b": 309.8782, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "After Row and Column Access Control (RCAC) definitions are defined and activated in a ", "bbox": {"l": 136.8, "t": 348.70871, "r": 528.83258, "b": 357.92169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "database, your management processes must be adjusted to accommodate these new ", "bbox": {"l": 136.8, "t": 360.70853, "r": 518.32983, "b": 369.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "security controls. This chapter highlights some of the changes that should be considered.", "bbox": {"l": 136.8, "t": 372.7083400000001, "r": 530.23193, "b": 381.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "The following topics are covered in this chapter:", "bbox": {"l": 136.8, "t": 394.72791, "r": 347.41214, "b": 403.94089, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 411.85709, "r": 141.78, "b": 420.63187, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Managing row permissions and column masks", "bbox": {"l": 151.20016, "t": 411.7077, "r": 356.28354, "b": 420.92068000000006, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "GLYPH", "bbox": {"l": 136.8, "t": 423.85689999999994, "r": 141.78, "b": 432.63168, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Managing tables with row permissions and column masks", "bbox": {"l": 151.20016, "t": 423.70752, "r": 406.06464, "b": 432.9205, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 435.85672000000005, "r": 141.78, "b": 444.63149999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Monitoring and auditing function usage", "bbox": {"l": 151.20016, "t": 435.70733999999993, "r": 323.05093, "b": 444.92032, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "7", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.72496032714844, "t": 754.732177734375, "r": 257.24335, "b": 764.0621948242188, "coord_origin": "TOPLEFT"}, "confidence": 0.9485868811607361, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 530.0635986328125, "t": 754.3052368164062, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9265602827072144, "cells": [{"id": 1, "text": "113", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 7.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "section_header", "bbox": {"l": 136.8, "t": 253.06494140625, "r": 547.26062, "b": 310.1415100097656, "coord_origin": "TOPLEFT"}, "confidence": 0.9408386945724487, "cells": [{"id": 3, "text": "Row and Column Access Control ", "bbox": {"l": 136.8, "t": 254.88635, "r": 547.26062, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "management", "bbox": {"l": 136.8, "t": 285.84671, "r": 297.06284, "b": 309.8782, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.95159912109375, "t": 348.0643310546875, "r": 530.336181640625, "b": 382.1923522949219, "coord_origin": "TOPLEFT"}, "confidence": 0.9827558994293213, "cells": [{"id": 5, "text": "After Row and Column Access Control (RCAC) definitions are defined and activated in a ", "bbox": {"l": 136.8, "t": 348.70871, "r": 528.83258, "b": 357.92169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "database, your management processes must be adjusted to accommodate these new ", "bbox": {"l": 136.8, "t": 360.70853, "r": 518.32983, "b": 369.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "security controls. This chapter highlights some of the changes that should be considered.", "bbox": {"l": 136.8, "t": 372.7083400000001, "r": 530.23193, "b": 381.92133000000007, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.9311981201172, "t": 394.0325622558594, "r": 347.41214, "b": 404.31439208984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9188783764839172, "cells": [{"id": 8, "text": "The following topics are covered in this chapter:", "bbox": {"l": 136.8, "t": 394.72791, "r": 347.41214, "b": 403.94089, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.7118682861328, "t": 410.8296203613281, "r": 356.28354, "b": 420.92068000000006, "coord_origin": "TOPLEFT"}, "confidence": 0.9452411532402039, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 411.85709, "r": 141.78, "b": 420.63187, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Managing row permissions and column masks", "bbox": {"l": 151.20016, "t": 411.7077, "r": 356.28354, "b": 420.92068000000006, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.60548400878906, "t": 422.74298095703125, "r": 406.06464, "b": 432.9902648925781, "coord_origin": "TOPLEFT"}, "confidence": 0.9472385048866272, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.8, "t": 423.85689999999994, "r": 141.78, "b": 432.63168, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Managing tables with row permissions and column masks", "bbox": {"l": 151.20016, "t": 423.70752, "r": 406.06464, "b": 432.9205, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.78424072265625, "t": 434.835693359375, "r": 323.05093, "b": 445.13641357421875, "coord_origin": "TOPLEFT"}, "confidence": 0.953090488910675, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 435.85672000000005, "r": 141.78, "b": 444.63149999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Monitoring and auditing function usage", "bbox": {"l": 151.20016, "t": 435.70733999999993, "r": 323.05093, "b": 444.92032, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 15, "text": "7", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "picture", "bbox": {"l": 32.251461029052734, "t": 70.665283203125, "r": 239.58355712890625, "b": 238.41876220703125, "coord_origin": "TOPLEFT"}, "confidence": 0.7878549695014954, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 128, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.72496032714844, "t": 754.732177734375, "r": 257.24335, "b": 764.0621948242188, "coord_origin": "TOPLEFT"}, "confidence": 0.9485868811607361, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 128, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.0635986328125, "t": 754.3052368164062, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9265602827072144, "cells": [{"id": 1, "text": "113", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "113"}, {"label": "text", "id": 2, "page_no": 128, "cluster": {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 7.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 7."}, {"label": "section_header", "id": 3, "page_no": 128, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 136.8, "t": 253.06494140625, "r": 547.26062, "b": 310.1415100097656, "coord_origin": "TOPLEFT"}, "confidence": 0.9408386945724487, "cells": [{"id": 3, "text": "Row and Column Access Control ", "bbox": {"l": 136.8, "t": 254.88635, "r": 547.26062, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "management", "bbox": {"l": 136.8, "t": 285.84671, "r": 297.06284, "b": 309.8782, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control management"}, {"label": "text", "id": 4, "page_no": 128, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.95159912109375, "t": 348.0643310546875, "r": 530.336181640625, "b": 382.1923522949219, "coord_origin": "TOPLEFT"}, "confidence": 0.9827558994293213, "cells": [{"id": 5, "text": "After Row and Column Access Control (RCAC) definitions are defined and activated in a ", "bbox": {"l": 136.8, "t": 348.70871, "r": 528.83258, "b": 357.92169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "database, your management processes must be adjusted to accommodate these new ", "bbox": {"l": 136.8, "t": 360.70853, "r": 518.32983, "b": 369.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "security controls. This chapter highlights some of the changes that should be considered.", "bbox": {"l": 136.8, "t": 372.7083400000001, "r": 530.23193, "b": 381.92133000000007, "coord_origin": "TOPLEFT"}}]}, "text": "After Row and Column Access Control (RCAC) definitions are defined and activated in a database, your management processes must be adjusted to accommodate these new security controls. This chapter highlights some of the changes that should be considered."}, {"label": "text", "id": 5, "page_no": 128, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.9311981201172, "t": 394.0325622558594, "r": 347.41214, "b": 404.31439208984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9188783764839172, "cells": [{"id": 8, "text": "The following topics are covered in this chapter:", "bbox": {"l": 136.8, "t": 394.72791, "r": 347.41214, "b": 403.94089, "coord_origin": "TOPLEFT"}}]}, "text": "The following topics are covered in this chapter:"}, {"label": "list_item", "id": 6, "page_no": 128, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.7118682861328, "t": 410.8296203613281, "r": 356.28354, "b": 420.92068000000006, "coord_origin": "TOPLEFT"}, "confidence": 0.9452411532402039, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 411.85709, "r": 141.78, "b": 420.63187, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Managing row permissions and column masks", "bbox": {"l": 151.20016, "t": 411.7077, "r": 356.28354, "b": 420.92068000000006, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Managing row permissions and column masks"}, {"label": "list_item", "id": 7, "page_no": 128, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.60548400878906, "t": 422.74298095703125, "r": 406.06464, "b": 432.9902648925781, "coord_origin": "TOPLEFT"}, "confidence": 0.9472385048866272, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.8, "t": 423.85689999999994, "r": 141.78, "b": 432.63168, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Managing tables with row permissions and column masks", "bbox": {"l": 151.20016, "t": 423.70752, "r": 406.06464, "b": 432.9205, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Managing tables with row permissions and column masks"}, {"label": "list_item", "id": 8, "page_no": 128, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.78424072265625, "t": 434.835693359375, "r": 323.05093, "b": 445.13641357421875, "coord_origin": "TOPLEFT"}, "confidence": 0.953090488910675, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 435.85672000000005, "r": 141.78, "b": 444.63149999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Monitoring and auditing function usage", "bbox": {"l": 151.20016, "t": 435.70733999999993, "r": 323.05093, "b": 444.92032, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Monitoring and auditing function usage"}, {"label": "text", "id": 9, "page_no": 128, "cluster": {"id": 9, "label": "text", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 15, "text": "7", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, "text": "7"}, {"label": "picture", "id": 10, "page_no": 128, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 32.251461029052734, "t": 70.665283203125, "r": 239.58355712890625, "b": 238.41876220703125, "coord_origin": "TOPLEFT"}, "confidence": 0.7878549695014954, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 128, "cluster": {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 7.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 7."}, {"label": "section_header", "id": 3, "page_no": 128, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 136.8, "t": 253.06494140625, "r": 547.26062, "b": 310.1415100097656, "coord_origin": "TOPLEFT"}, "confidence": 0.9408386945724487, "cells": [{"id": 3, "text": "Row and Column Access Control ", "bbox": {"l": 136.8, "t": 254.88635, "r": 547.26062, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "management", "bbox": {"l": 136.8, "t": 285.84671, "r": 297.06284, "b": 309.8782, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control management"}, {"label": "text", "id": 4, "page_no": 128, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.95159912109375, "t": 348.0643310546875, "r": 530.336181640625, "b": 382.1923522949219, "coord_origin": "TOPLEFT"}, "confidence": 0.9827558994293213, "cells": [{"id": 5, "text": "After Row and Column Access Control (RCAC) definitions are defined and activated in a ", "bbox": {"l": 136.8, "t": 348.70871, "r": 528.83258, "b": 357.92169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "database, your management processes must be adjusted to accommodate these new ", "bbox": {"l": 136.8, "t": 360.70853, "r": 518.32983, "b": 369.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "security controls. This chapter highlights some of the changes that should be considered.", "bbox": {"l": 136.8, "t": 372.7083400000001, "r": 530.23193, "b": 381.92133000000007, "coord_origin": "TOPLEFT"}}]}, "text": "After Row and Column Access Control (RCAC) definitions are defined and activated in a database, your management processes must be adjusted to accommodate these new security controls. This chapter highlights some of the changes that should be considered."}, {"label": "text", "id": 5, "page_no": 128, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.9311981201172, "t": 394.0325622558594, "r": 347.41214, "b": 404.31439208984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9188783764839172, "cells": [{"id": 8, "text": "The following topics are covered in this chapter:", "bbox": {"l": 136.8, "t": 394.72791, "r": 347.41214, "b": 403.94089, "coord_origin": "TOPLEFT"}}]}, "text": "The following topics are covered in this chapter:"}, {"label": "list_item", "id": 6, "page_no": 128, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.7118682861328, "t": 410.8296203613281, "r": 356.28354, "b": 420.92068000000006, "coord_origin": "TOPLEFT"}, "confidence": 0.9452411532402039, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 411.85709, "r": 141.78, "b": 420.63187, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Managing row permissions and column masks", "bbox": {"l": 151.20016, "t": 411.7077, "r": 356.28354, "b": 420.92068000000006, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Managing row permissions and column masks"}, {"label": "list_item", "id": 7, "page_no": 128, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.60548400878906, "t": 422.74298095703125, "r": 406.06464, "b": 432.9902648925781, "coord_origin": "TOPLEFT"}, "confidence": 0.9472385048866272, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.8, "t": 423.85689999999994, "r": 141.78, "b": 432.63168, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Managing tables with row permissions and column masks", "bbox": {"l": 151.20016, "t": 423.70752, "r": 406.06464, "b": 432.9205, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Managing tables with row permissions and column masks"}, {"label": "list_item", "id": 8, "page_no": 128, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.78424072265625, "t": 434.835693359375, "r": 323.05093, "b": 445.13641357421875, "coord_origin": "TOPLEFT"}, "confidence": 0.953090488910675, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 435.85672000000005, "r": 141.78, "b": 444.63149999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Monitoring and auditing function usage", "bbox": {"l": 151.20016, "t": 435.70733999999993, "r": 323.05093, "b": 444.92032, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Monitoring and auditing function usage"}, {"label": "text", "id": 9, "page_no": 128, "cluster": {"id": 9, "label": "text", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 15, "text": "7", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, "text": "7"}, {"label": "picture", "id": 10, "page_no": 128, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 32.251461029052734, "t": 70.665283203125, "r": 239.58355712890625, "b": 238.41876220703125, "coord_origin": "TOPLEFT"}, "confidence": 0.7878549695014954, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 128, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.72496032714844, "t": 754.732177734375, "r": 257.24335, "b": 764.0621948242188, "coord_origin": "TOPLEFT"}, "confidence": 0.9485868811607361, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 128, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.0635986328125, "t": 754.3052368164062, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9265602827072144, "cells": [{"id": 1, "text": "113", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "113"}]}}, {"page_no": 129, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "114 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "7.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.246155, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Managing row permissions and column masks", "bbox": {"l": 91.735367, "t": 74.34069999999997, "r": 449.79186999999996, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "This section focuses on the management of the RCAC row permissions and column masks.", "bbox": {"l": 136.8, "t": 106.6087, "r": 541.12109, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "7.1.1", "bbox": {"l": 64.800003, "t": 136.49463000000003, "r": 94.272484, "b": 148.48266999999998, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Source management", "bbox": {"l": 97.956543, "t": 136.49463000000003, "r": 228.30336000000003, "b": 148.48266999999998, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "The SQL statements that are used to define row permissions and column masks should be ", "bbox": {"l": 136.8, "t": 162.64868, "r": 540.84125, "b": 171.86168999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "managed with a change management process. Ideally, you already are using a change ", "bbox": {"l": 136.8, "t": 174.6485, "r": 522.78192, "b": 183.86150999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "management process for your database definitions, and that same process can be extended ", "bbox": {"l": 136.8, "t": 186.64832, "r": 546.4278, "b": 195.86132999999995, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "to cover your RCAC definitions.", "bbox": {"l": 136.8, "t": 198.64813000000004, "r": 275.15433, "b": 207.86114999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "If you are using SQL DDL to define your DB2 tables, then you have the option of adding the ", "bbox": {"l": 136.8, "t": 220.60790999999995, "r": 542.61035, "b": 229.82092, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "RCAC definitions to the same source file as the table definition. The benefit of this approach ", "bbox": {"l": 136.8, "t": 232.60772999999995, "r": 545.20575, "b": 241.82074, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "is that it keeps all DDL that is related to a table in a single source file. The downside is that if ", "bbox": {"l": 136.80002, "t": 244.60753999999997, "r": 546.14105, "b": 253.82056, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "you must re-create only the RCAC definitions and leave the table unchanged, then you must ", "bbox": {"l": 136.80005, "t": 256.60735999999997, "r": 545.83148, "b": 265.82037, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "identify and extract only the RCAC definitions from the source file. There are situations where ", "bbox": {"l": 136.80005, "t": 268.60717999999997, "r": 547.24664, "b": 277.82019, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "the row permissions and column masks must be changed or re-created without changing the ", "bbox": {"l": 136.80005, "t": 280.60703, "r": 547.2934, "b": 289.82001, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "definition of the associated table.", "bbox": {"l": 136.80005, "t": 292.60684000000003, "r": 282.08453, "b": 301.81982, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "7.1.2", "bbox": {"l": 64.800003, "t": 322.49472, "r": 94.315964, "b": 334.4827, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Modifying definitions", "bbox": {"l": 98.005455, "t": 322.49472, "r": 231.46431000000004, "b": 334.4827, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "After RCAC is activated for a table, the row permission and column mask definitions can be ", "bbox": {"l": 136.8, "t": 348.64871, "r": 541.84814, "b": 357.86169, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "re-created to change the data access behavior for that table. Usage of the ", "bbox": {"l": 136.8, "t": 360.64853, "r": 463.4190699999999, "b": 369.86151, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "OR REPLACE", "bbox": {"l": 463.38042999999993, "t": 360.79791000000006, "r": 513.05994, "b": 369.6225, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": " clause ", "bbox": {"l": 513.05994, "t": 360.64853, "r": 547.19885, "b": 369.86151, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "on the ", "bbox": {"l": 136.80002, "t": 372.64834999999994, "r": 167.34138, "b": 381.86133, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "CREATE MASK", "bbox": {"l": 167.34036, "t": 372.79773, "r": 222.29962, "b": 381.62231, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": " and ", "bbox": {"l": 222.30063, "t": 372.64834999999994, "r": 244.62298999999996, "b": 381.86133, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "CREATE PERMISSION", "bbox": {"l": 244.56022999999996, "t": 372.79773, "r": 329.51904, "b": 381.62231, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": " SQL statements simplifies the re-creation ", "bbox": {"l": 329.52002, "t": 372.64834999999994, "r": 517.78992, "b": 381.86133, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "process by folding in the deletion of the existing RCAC definition.", "bbox": {"l": 136.8, "t": 384.64816, "r": 422.41983, "b": 393.86115, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "This capability makes it easy to change your RCAC definitions as you test the controls with ", "bbox": {"l": 136.8, "t": 406.60797, "r": 539.65204, "b": 415.82095, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "your applications and identify tweaks that must be made to your RCAC implementation. ", "bbox": {"l": 136.79999, "t": 418.60779, "r": 524.70508, "b": 427.82077, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "However, re-creation of RCAC definitions does require an exclusive lock to be acquired on the ", "bbox": {"l": 136.79999, "t": 430.6076, "r": 547.2923, "b": 439.82059, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "table during the process.", "bbox": {"l": 136.79999, "t": 442.60742, "r": 245.98248, "b": 451.82040000000006, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "7.1.3", "bbox": {"l": 64.800003, "t": 472.49472, "r": 94.159073, "b": 484.4827, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Turning on and off", "bbox": {"l": 97.828957, "t": 472.49472, "r": 214.43356, "b": 484.4827, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "As described in 3.1.2, \u201cEnabling and activating RCAC\u201d on page 16, the SQL ", "bbox": {"l": 136.8, "t": 498.64862, "r": 473.00781, "b": 507.8616, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "ALTER", "bbox": {"l": 472.92017, "t": 498.798, "r": 497.9397000000001, "b": 507.62259, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": " statement ", "bbox": {"l": 497.9397000000001, "t": 498.64862, "r": 547.18286, "b": 507.8616, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "can turn on and off row permissions and column masks. The ", "bbox": {"l": 136.80008, "t": 510.64844, "r": 406.95114, "b": 519.86142, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ALTER MASK", "bbox": {"l": 406.98001, "t": 510.79782, "r": 456.89954000000006, "b": 519.62241, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": " and A", "bbox": {"l": 456.9603, "t": 510.64844, "r": 485.8443, "b": 519.86142, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "LTER ", "bbox": {"l": 485.8204, "t": 510.79782, "r": 510.78018, "b": 519.62241, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "PERMISSION", "bbox": {"l": 136.80011, "t": 522.79764, "r": 186.71962, "b": 531.62222, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": " statements allow an individual row permission or column mask to be turned off ", "bbox": {"l": 186.78038, "t": 522.64825, "r": 538.5675, "b": 531.86124, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "with the ", "bbox": {"l": 136.80011, "t": 534.64804, "r": 174.01068, "b": 543.86105, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "DISABLE", "bbox": {"l": 173.99971, "t": 534.79745, "r": 208.97923, "b": 543.62201, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": " option and back on with the ", "bbox": {"l": 208.97923, "t": 534.64804, "r": 336.03802, "b": 543.86105, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ENABLE", "bbox": {"l": 336.05887, "t": 534.79745, "r": 366.05838, "b": 543.62201, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": " option. The ", "bbox": {"l": 365.99863, "t": 534.64804, "r": 421.61823, "b": 543.86105, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ALTER TABLE", "bbox": {"l": 421.5585, "t": 534.79745, "r": 476.51778999999993, "b": 543.62201, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": " statement can ", "bbox": {"l": 476.57855, "t": 534.64804, "r": 544.97375, "b": 543.86105, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "deactivate enforcement of all the row permissions and column masks for a single table.", "bbox": {"l": 136.79816, "t": 546.64786, "r": 520.03705, "b": 555.86086, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "7.1.4", "bbox": {"l": 64.800003, "t": 645.47462, "r": 94.598396, "b": 657.46263, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "Regenerating", "bbox": {"l": 98.323196, "t": 645.47462, "r": 183.93999, "b": 657.46263, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "DB2 also can regenerate an existing row permission or column mask. This regenerate option ", "bbox": {"l": 136.8, "t": 671.62862, "r": 547.32727, "b": 680.84162, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "can be useful with more complex RCAC definitions that reference other DB2 objects.", "bbox": {"l": 136.8, "t": 683.62843, "r": 509.6644600000001, "b": 692.8414310000001, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "Important:", "bbox": {"l": 142.8, "t": 574.66862, "r": 192.41673, "b": 583.88162, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": " Although these capabilities make it easy to temporarily turn off RCAC security ", "bbox": {"l": 192.41974, "t": 574.66862, "r": 541.13116, "b": 583.88162, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "so that you can make environment or application changes, these processes require an ", "bbox": {"l": 142.799, "t": 586.66843, "r": 526.54175, "b": 595.8814199999999, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "exclusive lock to be obtained on a table. Therefore, this activity must be planned carefully ", "bbox": {"l": 142.799, "t": 598.66823, "r": 538.427, "b": 607.88123, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "to avoid disruptions and outages.", "bbox": {"l": 142.799, "t": 610.66803, "r": 289.06061, "b": 619.88103, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.35222625732422, "t": 754.2322998046875, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9273734092712402, "cells": [{"id": 0, "text": "114 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 98.60916137695312, "t": 754.7075805664062, "r": 339.81958, "b": 763.9705200195312, "coord_origin": "TOPLEFT"}, "confidence": 0.9511194229125977, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.16378021240234, "t": 73.54357147216797, "r": 449.79186999999996, "b": 89.48138427734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9686716198921204, "cells": [{"id": 2, "text": "7.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.246155, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Managing row permissions and column masks", "bbox": {"l": 91.735367, "t": 74.34069999999997, "r": 449.79186999999996, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.75418090820312, "t": 106.12907409667969, "r": 541.12109, "b": 116.29986572265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9501754641532898, "cells": [{"id": 4, "text": "This section focuses on the management of the RCAC row permissions and column masks.", "bbox": {"l": 136.8, "t": 106.6087, "r": 541.12109, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 63.90059280395508, "t": 135.95755004882812, "r": 228.30336000000003, "b": 148.8716583251953, "coord_origin": "TOPLEFT"}, "confidence": 0.9683852195739746, "cells": [{"id": 5, "text": "7.1.1", "bbox": {"l": 64.800003, "t": 136.49463000000003, "r": 94.272484, "b": 148.48266999999998, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Source management", "bbox": {"l": 97.956543, "t": 136.49463000000003, "r": 228.30336000000003, "b": 148.48266999999998, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.94558715820312, "t": 161.98435974121094, "r": 546.4278, "b": 208.3597412109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9878652691841125, "cells": [{"id": 7, "text": "The SQL statements that are used to define row permissions and column masks should be ", "bbox": {"l": 136.8, "t": 162.64868, "r": 540.84125, "b": 171.86168999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "managed with a change management process. Ideally, you already are using a change ", "bbox": {"l": 136.8, "t": 174.6485, "r": 522.78192, "b": 183.86150999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "management process for your database definitions, and that same process can be extended ", "bbox": {"l": 136.8, "t": 186.64832, "r": 546.4278, "b": 195.86132999999995, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "to cover your RCAC definitions.", "bbox": {"l": 136.8, "t": 198.64813000000004, "r": 275.15433, "b": 207.86114999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 135.89431762695312, "t": 220.08180236816406, "r": 547.2934, "b": 301.81982, "coord_origin": "TOPLEFT"}, "confidence": 0.9883837699890137, "cells": [{"id": 11, "text": "If you are using SQL DDL to define your DB2 tables, then you have the option of adding the ", "bbox": {"l": 136.8, "t": 220.60790999999995, "r": 542.61035, "b": 229.82092, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "RCAC definitions to the same source file as the table definition. The benefit of this approach ", "bbox": {"l": 136.8, "t": 232.60772999999995, "r": 545.20575, "b": 241.82074, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "is that it keeps all DDL that is related to a table in a single source file. The downside is that if ", "bbox": {"l": 136.80002, "t": 244.60753999999997, "r": 546.14105, "b": 253.82056, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "you must re-create only the RCAC definitions and leave the table unchanged, then you must ", "bbox": {"l": 136.80005, "t": 256.60735999999997, "r": 545.83148, "b": 265.82037, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "identify and extract only the RCAC definitions from the source file. There are situations where ", "bbox": {"l": 136.80005, "t": 268.60717999999997, "r": 547.24664, "b": 277.82019, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "the row permissions and column masks must be changed or re-created without changing the ", "bbox": {"l": 136.80005, "t": 280.60703, "r": 547.2934, "b": 289.82001, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "definition of the associated table.", "bbox": {"l": 136.80005, "t": 292.60684000000003, "r": 282.08453, "b": 301.81982, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "section_header", "bbox": {"l": 63.8327522277832, "t": 321.6274108886719, "r": 231.46431000000004, "b": 334.95697021484375, "coord_origin": "TOPLEFT"}, "confidence": 0.964327871799469, "cells": [{"id": 18, "text": "7.1.2", "bbox": {"l": 64.800003, "t": 322.49472, "r": 94.315964, "b": 334.4827, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Modifying definitions", "bbox": {"l": 98.005455, "t": 322.49472, "r": 231.46431000000004, "b": 334.4827, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 135.9163360595703, "t": 348.02764892578125, "r": 547.19885, "b": 394.3303527832031, "coord_origin": "TOPLEFT"}, "confidence": 0.9876542687416077, "cells": [{"id": 20, "text": "After RCAC is activated for a table, the row permission and column mask definitions can be ", "bbox": {"l": 136.8, "t": 348.64871, "r": 541.84814, "b": 357.86169, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "re-created to change the data access behavior for that table. Usage of the ", "bbox": {"l": 136.8, "t": 360.64853, "r": 463.4190699999999, "b": 369.86151, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "OR REPLACE", "bbox": {"l": 463.38042999999993, "t": 360.79791000000006, "r": 513.05994, "b": 369.6225, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": " clause ", "bbox": {"l": 513.05994, "t": 360.64853, "r": 547.19885, "b": 369.86151, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "on the ", "bbox": {"l": 136.80002, "t": 372.64834999999994, "r": 167.34138, "b": 381.86133, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "CREATE MASK", "bbox": {"l": 167.34036, "t": 372.79773, "r": 222.29962, "b": 381.62231, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": " and ", "bbox": {"l": 222.30063, "t": 372.64834999999994, "r": 244.62298999999996, "b": 381.86133, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "CREATE PERMISSION", "bbox": {"l": 244.56022999999996, "t": 372.79773, "r": 329.51904, "b": 381.62231, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": " SQL statements simplifies the re-creation ", "bbox": {"l": 329.52002, "t": 372.64834999999994, "r": 517.78992, "b": 381.86133, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "process by folding in the deletion of the existing RCAC definition.", "bbox": {"l": 136.8, "t": 384.64816, "r": 422.41983, "b": 393.86115, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 135.8429718017578, "t": 406.0337829589844, "r": 547.2923, "b": 452.2233581542969, "coord_origin": "TOPLEFT"}, "confidence": 0.9873954057693481, "cells": [{"id": 30, "text": "This capability makes it easy to change your RCAC definitions as you test the controls with ", "bbox": {"l": 136.8, "t": 406.60797, "r": 539.65204, "b": 415.82095, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "your applications and identify tweaks that must be made to your RCAC implementation. ", "bbox": {"l": 136.79999, "t": 418.60779, "r": 524.70508, "b": 427.82077, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "However, re-creation of RCAC definitions does require an exclusive lock to be acquired on the ", "bbox": {"l": 136.79999, "t": 430.6076, "r": 547.2923, "b": 439.82059, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "table during the process.", "bbox": {"l": 136.79999, "t": 442.60742, "r": 245.98248, "b": 451.82040000000006, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "section_header", "bbox": {"l": 64.0130844116211, "t": 471.7661437988281, "r": 214.6126708984375, "b": 484.9178771972656, "coord_origin": "TOPLEFT"}, "confidence": 0.9660051465034485, "cells": [{"id": 34, "text": "7.1.3", "bbox": {"l": 64.800003, "t": 472.49472, "r": 94.159073, "b": 484.4827, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Turning on and off", "bbox": {"l": 97.828957, "t": 472.49472, "r": 214.43356, "b": 484.4827, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 136.03684997558594, "t": 498.14910888671875, "r": 547.18286, "b": 556.083740234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9864468574523926, "cells": [{"id": 36, "text": "As described in 3.1.2, \u201cEnabling and activating RCAC\u201d on page 16, the SQL ", "bbox": {"l": 136.8, "t": 498.64862, "r": 473.00781, "b": 507.8616, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "ALTER", "bbox": {"l": 472.92017, "t": 498.798, "r": 497.9397000000001, "b": 507.62259, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": " statement ", "bbox": {"l": 497.9397000000001, "t": 498.64862, "r": 547.18286, "b": 507.8616, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "can turn on and off row permissions and column masks. The ", "bbox": {"l": 136.80008, "t": 510.64844, "r": 406.95114, "b": 519.86142, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ALTER MASK", "bbox": {"l": 406.98001, "t": 510.79782, "r": 456.89954000000006, "b": 519.62241, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": " and A", "bbox": {"l": 456.9603, "t": 510.64844, "r": 485.8443, "b": 519.86142, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "LTER ", "bbox": {"l": 485.8204, "t": 510.79782, "r": 510.78018, "b": 519.62241, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "PERMISSION", "bbox": {"l": 136.80011, "t": 522.79764, "r": 186.71962, "b": 531.62222, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": " statements allow an individual row permission or column mask to be turned off ", "bbox": {"l": 186.78038, "t": 522.64825, "r": 538.5675, "b": 531.86124, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "with the ", "bbox": {"l": 136.80011, "t": 534.64804, "r": 174.01068, "b": 543.86105, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "DISABLE", "bbox": {"l": 173.99971, "t": 534.79745, "r": 208.97923, "b": 543.62201, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": " option and back on with the ", "bbox": {"l": 208.97923, "t": 534.64804, "r": 336.03802, "b": 543.86105, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ENABLE", "bbox": {"l": 336.05887, "t": 534.79745, "r": 366.05838, "b": 543.62201, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": " option. The ", "bbox": {"l": 365.99863, "t": 534.64804, "r": 421.61823, "b": 543.86105, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ALTER TABLE", "bbox": {"l": 421.5585, "t": 534.79745, "r": 476.51778999999993, "b": 543.62201, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": " statement can ", "bbox": {"l": 476.57855, "t": 534.64804, "r": 544.97375, "b": 543.86105, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "deactivate enforcement of all the row permissions and column masks for a single table.", "bbox": {"l": 136.79816, "t": 546.64786, "r": 520.03705, "b": 555.86086, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "section_header", "bbox": {"l": 64.14586639404297, "t": 644.4866333007812, "r": 183.93999, "b": 657.650634765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9669332504272461, "cells": [{"id": 53, "text": "7.1.4", "bbox": {"l": 64.800003, "t": 645.47462, "r": 94.598396, "b": 657.46263, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "Regenerating", "bbox": {"l": 98.323196, "t": 645.47462, "r": 183.93999, "b": 657.46263, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 136.13162231445312, "t": 670.6488647460938, "r": 547.32727, "b": 692.8422241210938, "coord_origin": "TOPLEFT"}, "confidence": 0.9813348054885864, "cells": [{"id": 55, "text": "DB2 also can regenerate an existing row permission or column mask. This regenerate option ", "bbox": {"l": 136.8, "t": 671.62862, "r": 547.32727, "b": 680.84162, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "can be useful with more complex RCAC definitions that reference other DB2 objects.", "bbox": {"l": 136.8, "t": 683.62843, "r": 509.6644600000001, "b": 692.8414310000001, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "text", "bbox": {"l": 142.16134643554688, "t": 573.9788818359375, "r": 541.13116, "b": 620.4790649414062, "coord_origin": "TOPLEFT"}, "confidence": 0.9856665730476379, "cells": [{"id": 57, "text": "Important:", "bbox": {"l": 142.8, "t": 574.66862, "r": 192.41673, "b": 583.88162, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": " Although these capabilities make it easy to temporarily turn off RCAC security ", "bbox": {"l": 192.41974, "t": 574.66862, "r": 541.13116, "b": 583.88162, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "so that you can make environment or application changes, these processes require an ", "bbox": {"l": 142.799, "t": 586.66843, "r": 526.54175, "b": 595.8814199999999, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "exclusive lock to be obtained on a table. Therefore, this activity must be planned carefully ", "bbox": {"l": 142.799, "t": 598.66823, "r": 538.427, "b": 607.88123, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "to avoid disruptions and outages.", "bbox": {"l": 142.799, "t": 610.66803, "r": 289.06061, "b": 619.88103, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 129, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.35222625732422, "t": 754.2322998046875, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9273734092712402, "cells": [{"id": 0, "text": "114 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "114"}, {"label": "page_footer", "id": 1, "page_no": 129, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.60916137695312, "t": 754.7075805664062, "r": 339.81958, "b": 763.9705200195312, "coord_origin": "TOPLEFT"}, "confidence": 0.9511194229125977, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "section_header", "id": 2, "page_no": 129, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.16378021240234, "t": 73.54357147216797, "r": 449.79186999999996, "b": 89.48138427734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9686716198921204, "cells": [{"id": 2, "text": "7.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.246155, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Managing row permissions and column masks", "bbox": {"l": 91.735367, "t": 74.34069999999997, "r": 449.79186999999996, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, "text": "7.1 Managing row permissions and column masks"}, {"label": "text", "id": 3, "page_no": 129, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.75418090820312, "t": 106.12907409667969, "r": 541.12109, "b": 116.29986572265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9501754641532898, "cells": [{"id": 4, "text": "This section focuses on the management of the RCAC row permissions and column masks.", "bbox": {"l": 136.8, "t": 106.6087, "r": 541.12109, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}]}, "text": "This section focuses on the management of the RCAC row permissions and column masks."}, {"label": "section_header", "id": 4, "page_no": 129, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 63.90059280395508, "t": 135.95755004882812, "r": 228.30336000000003, "b": 148.8716583251953, "coord_origin": "TOPLEFT"}, "confidence": 0.9683852195739746, "cells": [{"id": 5, "text": "7.1.1", "bbox": {"l": 64.800003, "t": 136.49463000000003, "r": 94.272484, "b": 148.48266999999998, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Source management", "bbox": {"l": 97.956543, "t": 136.49463000000003, "r": 228.30336000000003, "b": 148.48266999999998, "coord_origin": "TOPLEFT"}}]}, "text": "7.1.1 Source management"}, {"label": "text", "id": 5, "page_no": 129, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.94558715820312, "t": 161.98435974121094, "r": 546.4278, "b": 208.3597412109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9878652691841125, "cells": [{"id": 7, "text": "The SQL statements that are used to define row permissions and column masks should be ", "bbox": {"l": 136.8, "t": 162.64868, "r": 540.84125, "b": 171.86168999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "managed with a change management process. Ideally, you already are using a change ", "bbox": {"l": 136.8, "t": 174.6485, "r": 522.78192, "b": 183.86150999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "management process for your database definitions, and that same process can be extended ", "bbox": {"l": 136.8, "t": 186.64832, "r": 546.4278, "b": 195.86132999999995, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "to cover your RCAC definitions.", "bbox": {"l": 136.8, "t": 198.64813000000004, "r": 275.15433, "b": 207.86114999999995, "coord_origin": "TOPLEFT"}}]}, "text": "The SQL statements that are used to define row permissions and column masks should be managed with a change management process. Ideally, you already are using a change management process for your database definitions, and that same process can be extended to cover your RCAC definitions."}, {"label": "text", "id": 6, "page_no": 129, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.89431762695312, "t": 220.08180236816406, "r": 547.2934, "b": 301.81982, "coord_origin": "TOPLEFT"}, "confidence": 0.9883837699890137, "cells": [{"id": 11, "text": "If you are using SQL DDL to define your DB2 tables, then you have the option of adding the ", "bbox": {"l": 136.8, "t": 220.60790999999995, "r": 542.61035, "b": 229.82092, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "RCAC definitions to the same source file as the table definition. The benefit of this approach ", "bbox": {"l": 136.8, "t": 232.60772999999995, "r": 545.20575, "b": 241.82074, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "is that it keeps all DDL that is related to a table in a single source file. The downside is that if ", "bbox": {"l": 136.80002, "t": 244.60753999999997, "r": 546.14105, "b": 253.82056, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "you must re-create only the RCAC definitions and leave the table unchanged, then you must ", "bbox": {"l": 136.80005, "t": 256.60735999999997, "r": 545.83148, "b": 265.82037, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "identify and extract only the RCAC definitions from the source file. There are situations where ", "bbox": {"l": 136.80005, "t": 268.60717999999997, "r": 547.24664, "b": 277.82019, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "the row permissions and column masks must be changed or re-created without changing the ", "bbox": {"l": 136.80005, "t": 280.60703, "r": 547.2934, "b": 289.82001, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "definition of the associated table.", "bbox": {"l": 136.80005, "t": 292.60684000000003, "r": 282.08453, "b": 301.81982, "coord_origin": "TOPLEFT"}}]}, "text": "If you are using SQL DDL to define your DB2 tables, then you have the option of adding the RCAC definitions to the same source file as the table definition. The benefit of this approach is that it keeps all DDL that is related to a table in a single source file. The downside is that if you must re-create only the RCAC definitions and leave the table unchanged, then you must identify and extract only the RCAC definitions from the source file. There are situations where the row permissions and column masks must be changed or re-created without changing the definition of the associated table."}, {"label": "section_header", "id": 7, "page_no": 129, "cluster": {"id": 7, "label": "section_header", "bbox": {"l": 63.8327522277832, "t": 321.6274108886719, "r": 231.46431000000004, "b": 334.95697021484375, "coord_origin": "TOPLEFT"}, "confidence": 0.964327871799469, "cells": [{"id": 18, "text": "7.1.2", "bbox": {"l": 64.800003, "t": 322.49472, "r": 94.315964, "b": 334.4827, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Modifying definitions", "bbox": {"l": 98.005455, "t": 322.49472, "r": 231.46431000000004, "b": 334.4827, "coord_origin": "TOPLEFT"}}]}, "text": "7.1.2 Modifying definitions"}, {"label": "text", "id": 8, "page_no": 129, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.9163360595703, "t": 348.02764892578125, "r": 547.19885, "b": 394.3303527832031, "coord_origin": "TOPLEFT"}, "confidence": 0.9876542687416077, "cells": [{"id": 20, "text": "After RCAC is activated for a table, the row permission and column mask definitions can be ", "bbox": {"l": 136.8, "t": 348.64871, "r": 541.84814, "b": 357.86169, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "re-created to change the data access behavior for that table. Usage of the ", "bbox": {"l": 136.8, "t": 360.64853, "r": 463.4190699999999, "b": 369.86151, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "OR REPLACE", "bbox": {"l": 463.38042999999993, "t": 360.79791000000006, "r": 513.05994, "b": 369.6225, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": " clause ", "bbox": {"l": 513.05994, "t": 360.64853, "r": 547.19885, "b": 369.86151, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "on the ", "bbox": {"l": 136.80002, "t": 372.64834999999994, "r": 167.34138, "b": 381.86133, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "CREATE MASK", "bbox": {"l": 167.34036, "t": 372.79773, "r": 222.29962, "b": 381.62231, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": " and ", "bbox": {"l": 222.30063, "t": 372.64834999999994, "r": 244.62298999999996, "b": 381.86133, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "CREATE PERMISSION", "bbox": {"l": 244.56022999999996, "t": 372.79773, "r": 329.51904, "b": 381.62231, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": " SQL statements simplifies the re-creation ", "bbox": {"l": 329.52002, "t": 372.64834999999994, "r": 517.78992, "b": 381.86133, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "process by folding in the deletion of the existing RCAC definition.", "bbox": {"l": 136.8, "t": 384.64816, "r": 422.41983, "b": 393.86115, "coord_origin": "TOPLEFT"}}]}, "text": "After RCAC is activated for a table, the row permission and column mask definitions can be re-created to change the data access behavior for that table. Usage of the OR REPLACE clause on the CREATE MASK and CREATE PERMISSION SQL statements simplifies the re-creation process by folding in the deletion of the existing RCAC definition."}, {"label": "text", "id": 9, "page_no": 129, "cluster": {"id": 9, "label": "text", "bbox": {"l": 135.8429718017578, "t": 406.0337829589844, "r": 547.2923, "b": 452.2233581542969, "coord_origin": "TOPLEFT"}, "confidence": 0.9873954057693481, "cells": [{"id": 30, "text": "This capability makes it easy to change your RCAC definitions as you test the controls with ", "bbox": {"l": 136.8, "t": 406.60797, "r": 539.65204, "b": 415.82095, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "your applications and identify tweaks that must be made to your RCAC implementation. ", "bbox": {"l": 136.79999, "t": 418.60779, "r": 524.70508, "b": 427.82077, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "However, re-creation of RCAC definitions does require an exclusive lock to be acquired on the ", "bbox": {"l": 136.79999, "t": 430.6076, "r": 547.2923, "b": 439.82059, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "table during the process.", "bbox": {"l": 136.79999, "t": 442.60742, "r": 245.98248, "b": 451.82040000000006, "coord_origin": "TOPLEFT"}}]}, "text": "This capability makes it easy to change your RCAC definitions as you test the controls with your applications and identify tweaks that must be made to your RCAC implementation. However, re-creation of RCAC definitions does require an exclusive lock to be acquired on the table during the process."}, {"label": "section_header", "id": 10, "page_no": 129, "cluster": {"id": 10, "label": "section_header", "bbox": {"l": 64.0130844116211, "t": 471.7661437988281, "r": 214.6126708984375, "b": 484.9178771972656, "coord_origin": "TOPLEFT"}, "confidence": 0.9660051465034485, "cells": [{"id": 34, "text": "7.1.3", "bbox": {"l": 64.800003, "t": 472.49472, "r": 94.159073, "b": 484.4827, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Turning on and off", "bbox": {"l": 97.828957, "t": 472.49472, "r": 214.43356, "b": 484.4827, "coord_origin": "TOPLEFT"}}]}, "text": "7.1.3 Turning on and off"}, {"label": "text", "id": 11, "page_no": 129, "cluster": {"id": 11, "label": "text", "bbox": {"l": 136.03684997558594, "t": 498.14910888671875, "r": 547.18286, "b": 556.083740234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9864468574523926, "cells": [{"id": 36, "text": "As described in 3.1.2, \u201cEnabling and activating RCAC\u201d on page 16, the SQL ", "bbox": {"l": 136.8, "t": 498.64862, "r": 473.00781, "b": 507.8616, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "ALTER", "bbox": {"l": 472.92017, "t": 498.798, "r": 497.9397000000001, "b": 507.62259, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": " statement ", "bbox": {"l": 497.9397000000001, "t": 498.64862, "r": 547.18286, "b": 507.8616, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "can turn on and off row permissions and column masks. The ", "bbox": {"l": 136.80008, "t": 510.64844, "r": 406.95114, "b": 519.86142, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ALTER MASK", "bbox": {"l": 406.98001, "t": 510.79782, "r": 456.89954000000006, "b": 519.62241, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": " and A", "bbox": {"l": 456.9603, "t": 510.64844, "r": 485.8443, "b": 519.86142, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "LTER ", "bbox": {"l": 485.8204, "t": 510.79782, "r": 510.78018, "b": 519.62241, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "PERMISSION", "bbox": {"l": 136.80011, "t": 522.79764, "r": 186.71962, "b": 531.62222, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": " statements allow an individual row permission or column mask to be turned off ", "bbox": {"l": 186.78038, "t": 522.64825, "r": 538.5675, "b": 531.86124, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "with the ", "bbox": {"l": 136.80011, "t": 534.64804, "r": 174.01068, "b": 543.86105, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "DISABLE", "bbox": {"l": 173.99971, "t": 534.79745, "r": 208.97923, "b": 543.62201, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": " option and back on with the ", "bbox": {"l": 208.97923, "t": 534.64804, "r": 336.03802, "b": 543.86105, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ENABLE", "bbox": {"l": 336.05887, "t": 534.79745, "r": 366.05838, "b": 543.62201, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": " option. The ", "bbox": {"l": 365.99863, "t": 534.64804, "r": 421.61823, "b": 543.86105, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ALTER TABLE", "bbox": {"l": 421.5585, "t": 534.79745, "r": 476.51778999999993, "b": 543.62201, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": " statement can ", "bbox": {"l": 476.57855, "t": 534.64804, "r": 544.97375, "b": 543.86105, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "deactivate enforcement of all the row permissions and column masks for a single table.", "bbox": {"l": 136.79816, "t": 546.64786, "r": 520.03705, "b": 555.86086, "coord_origin": "TOPLEFT"}}]}, "text": "As described in 3.1.2, \u201cEnabling and activating RCAC\u201d on page 16, the SQL ALTER statement can turn on and off row permissions and column masks. The ALTER MASK and A LTER PERMISSION statements allow an individual row permission or column mask to be turned off with the DISABLE option and back on with the ENABLE option. The ALTER TABLE statement can deactivate enforcement of all the row permissions and column masks for a single table."}, {"label": "section_header", "id": 12, "page_no": 129, "cluster": {"id": 12, "label": "section_header", "bbox": {"l": 64.14586639404297, "t": 644.4866333007812, "r": 183.93999, "b": 657.650634765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9669332504272461, "cells": [{"id": 53, "text": "7.1.4", "bbox": {"l": 64.800003, "t": 645.47462, "r": 94.598396, "b": 657.46263, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "Regenerating", "bbox": {"l": 98.323196, "t": 645.47462, "r": 183.93999, "b": 657.46263, "coord_origin": "TOPLEFT"}}]}, "text": "7.1.4 Regenerating"}, {"label": "text", "id": 13, "page_no": 129, "cluster": {"id": 13, "label": "text", "bbox": {"l": 136.13162231445312, "t": 670.6488647460938, "r": 547.32727, "b": 692.8422241210938, "coord_origin": "TOPLEFT"}, "confidence": 0.9813348054885864, "cells": [{"id": 55, "text": "DB2 also can regenerate an existing row permission or column mask. This regenerate option ", "bbox": {"l": 136.8, "t": 671.62862, "r": 547.32727, "b": 680.84162, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "can be useful with more complex RCAC definitions that reference other DB2 objects.", "bbox": {"l": 136.8, "t": 683.62843, "r": 509.6644600000001, "b": 692.8414310000001, "coord_origin": "TOPLEFT"}}]}, "text": "DB2 also can regenerate an existing row permission or column mask. This regenerate option can be useful with more complex RCAC definitions that reference other DB2 objects."}, {"label": "text", "id": 14, "page_no": 129, "cluster": {"id": 14, "label": "text", "bbox": {"l": 142.16134643554688, "t": 573.9788818359375, "r": 541.13116, "b": 620.4790649414062, "coord_origin": "TOPLEFT"}, "confidence": 0.9856665730476379, "cells": [{"id": 57, "text": "Important:", "bbox": {"l": 142.8, "t": 574.66862, "r": 192.41673, "b": 583.88162, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": " Although these capabilities make it easy to temporarily turn off RCAC security ", "bbox": {"l": 192.41974, "t": 574.66862, "r": 541.13116, "b": 583.88162, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "so that you can make environment or application changes, these processes require an ", "bbox": {"l": 142.799, "t": 586.66843, "r": 526.54175, "b": 595.8814199999999, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "exclusive lock to be obtained on a table. Therefore, this activity must be planned carefully ", "bbox": {"l": 142.799, "t": 598.66823, "r": 538.427, "b": 607.88123, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "to avoid disruptions and outages.", "bbox": {"l": 142.799, "t": 610.66803, "r": 289.06061, "b": 619.88103, "coord_origin": "TOPLEFT"}}]}, "text": "Important: Although these capabilities make it easy to temporarily turn off RCAC security so that you can make environment or application changes, these processes require an exclusive lock to be obtained on a table. Therefore, this activity must be planned carefully to avoid disruptions and outages."}], "body": [{"label": "section_header", "id": 2, "page_no": 129, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.16378021240234, "t": 73.54357147216797, "r": 449.79186999999996, "b": 89.48138427734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9686716198921204, "cells": [{"id": 2, "text": "7.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.246155, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Managing row permissions and column masks", "bbox": {"l": 91.735367, "t": 74.34069999999997, "r": 449.79186999999996, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, "text": "7.1 Managing row permissions and column masks"}, {"label": "text", "id": 3, "page_no": 129, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.75418090820312, "t": 106.12907409667969, "r": 541.12109, "b": 116.29986572265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9501754641532898, "cells": [{"id": 4, "text": "This section focuses on the management of the RCAC row permissions and column masks.", "bbox": {"l": 136.8, "t": 106.6087, "r": 541.12109, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}]}, "text": "This section focuses on the management of the RCAC row permissions and column masks."}, {"label": "section_header", "id": 4, "page_no": 129, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 63.90059280395508, "t": 135.95755004882812, "r": 228.30336000000003, "b": 148.8716583251953, "coord_origin": "TOPLEFT"}, "confidence": 0.9683852195739746, "cells": [{"id": 5, "text": "7.1.1", "bbox": {"l": 64.800003, "t": 136.49463000000003, "r": 94.272484, "b": 148.48266999999998, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Source management", "bbox": {"l": 97.956543, "t": 136.49463000000003, "r": 228.30336000000003, "b": 148.48266999999998, "coord_origin": "TOPLEFT"}}]}, "text": "7.1.1 Source management"}, {"label": "text", "id": 5, "page_no": 129, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.94558715820312, "t": 161.98435974121094, "r": 546.4278, "b": 208.3597412109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9878652691841125, "cells": [{"id": 7, "text": "The SQL statements that are used to define row permissions and column masks should be ", "bbox": {"l": 136.8, "t": 162.64868, "r": 540.84125, "b": 171.86168999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "managed with a change management process. Ideally, you already are using a change ", "bbox": {"l": 136.8, "t": 174.6485, "r": 522.78192, "b": 183.86150999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "management process for your database definitions, and that same process can be extended ", "bbox": {"l": 136.8, "t": 186.64832, "r": 546.4278, "b": 195.86132999999995, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "to cover your RCAC definitions.", "bbox": {"l": 136.8, "t": 198.64813000000004, "r": 275.15433, "b": 207.86114999999995, "coord_origin": "TOPLEFT"}}]}, "text": "The SQL statements that are used to define row permissions and column masks should be managed with a change management process. Ideally, you already are using a change management process for your database definitions, and that same process can be extended to cover your RCAC definitions."}, {"label": "text", "id": 6, "page_no": 129, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.89431762695312, "t": 220.08180236816406, "r": 547.2934, "b": 301.81982, "coord_origin": "TOPLEFT"}, "confidence": 0.9883837699890137, "cells": [{"id": 11, "text": "If you are using SQL DDL to define your DB2 tables, then you have the option of adding the ", "bbox": {"l": 136.8, "t": 220.60790999999995, "r": 542.61035, "b": 229.82092, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "RCAC definitions to the same source file as the table definition. The benefit of this approach ", "bbox": {"l": 136.8, "t": 232.60772999999995, "r": 545.20575, "b": 241.82074, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "is that it keeps all DDL that is related to a table in a single source file. The downside is that if ", "bbox": {"l": 136.80002, "t": 244.60753999999997, "r": 546.14105, "b": 253.82056, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "you must re-create only the RCAC definitions and leave the table unchanged, then you must ", "bbox": {"l": 136.80005, "t": 256.60735999999997, "r": 545.83148, "b": 265.82037, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "identify and extract only the RCAC definitions from the source file. There are situations where ", "bbox": {"l": 136.80005, "t": 268.60717999999997, "r": 547.24664, "b": 277.82019, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "the row permissions and column masks must be changed or re-created without changing the ", "bbox": {"l": 136.80005, "t": 280.60703, "r": 547.2934, "b": 289.82001, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "definition of the associated table.", "bbox": {"l": 136.80005, "t": 292.60684000000003, "r": 282.08453, "b": 301.81982, "coord_origin": "TOPLEFT"}}]}, "text": "If you are using SQL DDL to define your DB2 tables, then you have the option of adding the RCAC definitions to the same source file as the table definition. The benefit of this approach is that it keeps all DDL that is related to a table in a single source file. The downside is that if you must re-create only the RCAC definitions and leave the table unchanged, then you must identify and extract only the RCAC definitions from the source file. There are situations where the row permissions and column masks must be changed or re-created without changing the definition of the associated table."}, {"label": "section_header", "id": 7, "page_no": 129, "cluster": {"id": 7, "label": "section_header", "bbox": {"l": 63.8327522277832, "t": 321.6274108886719, "r": 231.46431000000004, "b": 334.95697021484375, "coord_origin": "TOPLEFT"}, "confidence": 0.964327871799469, "cells": [{"id": 18, "text": "7.1.2", "bbox": {"l": 64.800003, "t": 322.49472, "r": 94.315964, "b": 334.4827, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Modifying definitions", "bbox": {"l": 98.005455, "t": 322.49472, "r": 231.46431000000004, "b": 334.4827, "coord_origin": "TOPLEFT"}}]}, "text": "7.1.2 Modifying definitions"}, {"label": "text", "id": 8, "page_no": 129, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.9163360595703, "t": 348.02764892578125, "r": 547.19885, "b": 394.3303527832031, "coord_origin": "TOPLEFT"}, "confidence": 0.9876542687416077, "cells": [{"id": 20, "text": "After RCAC is activated for a table, the row permission and column mask definitions can be ", "bbox": {"l": 136.8, "t": 348.64871, "r": 541.84814, "b": 357.86169, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "re-created to change the data access behavior for that table. Usage of the ", "bbox": {"l": 136.8, "t": 360.64853, "r": 463.4190699999999, "b": 369.86151, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "OR REPLACE", "bbox": {"l": 463.38042999999993, "t": 360.79791000000006, "r": 513.05994, "b": 369.6225, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": " clause ", "bbox": {"l": 513.05994, "t": 360.64853, "r": 547.19885, "b": 369.86151, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "on the ", "bbox": {"l": 136.80002, "t": 372.64834999999994, "r": 167.34138, "b": 381.86133, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "CREATE MASK", "bbox": {"l": 167.34036, "t": 372.79773, "r": 222.29962, "b": 381.62231, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": " and ", "bbox": {"l": 222.30063, "t": 372.64834999999994, "r": 244.62298999999996, "b": 381.86133, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "CREATE PERMISSION", "bbox": {"l": 244.56022999999996, "t": 372.79773, "r": 329.51904, "b": 381.62231, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": " SQL statements simplifies the re-creation ", "bbox": {"l": 329.52002, "t": 372.64834999999994, "r": 517.78992, "b": 381.86133, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "process by folding in the deletion of the existing RCAC definition.", "bbox": {"l": 136.8, "t": 384.64816, "r": 422.41983, "b": 393.86115, "coord_origin": "TOPLEFT"}}]}, "text": "After RCAC is activated for a table, the row permission and column mask definitions can be re-created to change the data access behavior for that table. Usage of the OR REPLACE clause on the CREATE MASK and CREATE PERMISSION SQL statements simplifies the re-creation process by folding in the deletion of the existing RCAC definition."}, {"label": "text", "id": 9, "page_no": 129, "cluster": {"id": 9, "label": "text", "bbox": {"l": 135.8429718017578, "t": 406.0337829589844, "r": 547.2923, "b": 452.2233581542969, "coord_origin": "TOPLEFT"}, "confidence": 0.9873954057693481, "cells": [{"id": 30, "text": "This capability makes it easy to change your RCAC definitions as you test the controls with ", "bbox": {"l": 136.8, "t": 406.60797, "r": 539.65204, "b": 415.82095, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "your applications and identify tweaks that must be made to your RCAC implementation. ", "bbox": {"l": 136.79999, "t": 418.60779, "r": 524.70508, "b": 427.82077, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "However, re-creation of RCAC definitions does require an exclusive lock to be acquired on the ", "bbox": {"l": 136.79999, "t": 430.6076, "r": 547.2923, "b": 439.82059, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "table during the process.", "bbox": {"l": 136.79999, "t": 442.60742, "r": 245.98248, "b": 451.82040000000006, "coord_origin": "TOPLEFT"}}]}, "text": "This capability makes it easy to change your RCAC definitions as you test the controls with your applications and identify tweaks that must be made to your RCAC implementation. However, re-creation of RCAC definitions does require an exclusive lock to be acquired on the table during the process."}, {"label": "section_header", "id": 10, "page_no": 129, "cluster": {"id": 10, "label": "section_header", "bbox": {"l": 64.0130844116211, "t": 471.7661437988281, "r": 214.6126708984375, "b": 484.9178771972656, "coord_origin": "TOPLEFT"}, "confidence": 0.9660051465034485, "cells": [{"id": 34, "text": "7.1.3", "bbox": {"l": 64.800003, "t": 472.49472, "r": 94.159073, "b": 484.4827, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Turning on and off", "bbox": {"l": 97.828957, "t": 472.49472, "r": 214.43356, "b": 484.4827, "coord_origin": "TOPLEFT"}}]}, "text": "7.1.3 Turning on and off"}, {"label": "text", "id": 11, "page_no": 129, "cluster": {"id": 11, "label": "text", "bbox": {"l": 136.03684997558594, "t": 498.14910888671875, "r": 547.18286, "b": 556.083740234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9864468574523926, "cells": [{"id": 36, "text": "As described in 3.1.2, \u201cEnabling and activating RCAC\u201d on page 16, the SQL ", "bbox": {"l": 136.8, "t": 498.64862, "r": 473.00781, "b": 507.8616, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "ALTER", "bbox": {"l": 472.92017, "t": 498.798, "r": 497.9397000000001, "b": 507.62259, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": " statement ", "bbox": {"l": 497.9397000000001, "t": 498.64862, "r": 547.18286, "b": 507.8616, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "can turn on and off row permissions and column masks. The ", "bbox": {"l": 136.80008, "t": 510.64844, "r": 406.95114, "b": 519.86142, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ALTER MASK", "bbox": {"l": 406.98001, "t": 510.79782, "r": 456.89954000000006, "b": 519.62241, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": " and A", "bbox": {"l": 456.9603, "t": 510.64844, "r": 485.8443, "b": 519.86142, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "LTER ", "bbox": {"l": 485.8204, "t": 510.79782, "r": 510.78018, "b": 519.62241, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "PERMISSION", "bbox": {"l": 136.80011, "t": 522.79764, "r": 186.71962, "b": 531.62222, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": " statements allow an individual row permission or column mask to be turned off ", "bbox": {"l": 186.78038, "t": 522.64825, "r": 538.5675, "b": 531.86124, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "with the ", "bbox": {"l": 136.80011, "t": 534.64804, "r": 174.01068, "b": 543.86105, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "DISABLE", "bbox": {"l": 173.99971, "t": 534.79745, "r": 208.97923, "b": 543.62201, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": " option and back on with the ", "bbox": {"l": 208.97923, "t": 534.64804, "r": 336.03802, "b": 543.86105, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ENABLE", "bbox": {"l": 336.05887, "t": 534.79745, "r": 366.05838, "b": 543.62201, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": " option. The ", "bbox": {"l": 365.99863, "t": 534.64804, "r": 421.61823, "b": 543.86105, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ALTER TABLE", "bbox": {"l": 421.5585, "t": 534.79745, "r": 476.51778999999993, "b": 543.62201, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": " statement can ", "bbox": {"l": 476.57855, "t": 534.64804, "r": 544.97375, "b": 543.86105, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "deactivate enforcement of all the row permissions and column masks for a single table.", "bbox": {"l": 136.79816, "t": 546.64786, "r": 520.03705, "b": 555.86086, "coord_origin": "TOPLEFT"}}]}, "text": "As described in 3.1.2, \u201cEnabling and activating RCAC\u201d on page 16, the SQL ALTER statement can turn on and off row permissions and column masks. The ALTER MASK and A LTER PERMISSION statements allow an individual row permission or column mask to be turned off with the DISABLE option and back on with the ENABLE option. The ALTER TABLE statement can deactivate enforcement of all the row permissions and column masks for a single table."}, {"label": "section_header", "id": 12, "page_no": 129, "cluster": {"id": 12, "label": "section_header", "bbox": {"l": 64.14586639404297, "t": 644.4866333007812, "r": 183.93999, "b": 657.650634765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9669332504272461, "cells": [{"id": 53, "text": "7.1.4", "bbox": {"l": 64.800003, "t": 645.47462, "r": 94.598396, "b": 657.46263, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "Regenerating", "bbox": {"l": 98.323196, "t": 645.47462, "r": 183.93999, "b": 657.46263, "coord_origin": "TOPLEFT"}}]}, "text": "7.1.4 Regenerating"}, {"label": "text", "id": 13, "page_no": 129, "cluster": {"id": 13, "label": "text", "bbox": {"l": 136.13162231445312, "t": 670.6488647460938, "r": 547.32727, "b": 692.8422241210938, "coord_origin": "TOPLEFT"}, "confidence": 0.9813348054885864, "cells": [{"id": 55, "text": "DB2 also can regenerate an existing row permission or column mask. This regenerate option ", "bbox": {"l": 136.8, "t": 671.62862, "r": 547.32727, "b": 680.84162, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "can be useful with more complex RCAC definitions that reference other DB2 objects.", "bbox": {"l": 136.8, "t": 683.62843, "r": 509.6644600000001, "b": 692.8414310000001, "coord_origin": "TOPLEFT"}}]}, "text": "DB2 also can regenerate an existing row permission or column mask. This regenerate option can be useful with more complex RCAC definitions that reference other DB2 objects."}, {"label": "text", "id": 14, "page_no": 129, "cluster": {"id": 14, "label": "text", "bbox": {"l": 142.16134643554688, "t": 573.9788818359375, "r": 541.13116, "b": 620.4790649414062, "coord_origin": "TOPLEFT"}, "confidence": 0.9856665730476379, "cells": [{"id": 57, "text": "Important:", "bbox": {"l": 142.8, "t": 574.66862, "r": 192.41673, "b": 583.88162, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": " Although these capabilities make it easy to temporarily turn off RCAC security ", "bbox": {"l": 192.41974, "t": 574.66862, "r": 541.13116, "b": 583.88162, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "so that you can make environment or application changes, these processes require an ", "bbox": {"l": 142.799, "t": 586.66843, "r": 526.54175, "b": 595.8814199999999, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "exclusive lock to be obtained on a table. Therefore, this activity must be planned carefully ", "bbox": {"l": 142.799, "t": 598.66823, "r": 538.427, "b": 607.88123, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "to avoid disruptions and outages.", "bbox": {"l": 142.799, "t": 610.66803, "r": 289.06061, "b": 619.88103, "coord_origin": "TOPLEFT"}}]}, "text": "Important: Although these capabilities make it easy to temporarily turn off RCAC security so that you can make environment or application changes, these processes require an exclusive lock to be obtained on a table. Therefore, this activity must be planned carefully to avoid disruptions and outages."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 129, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.35222625732422, "t": 754.2322998046875, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9273734092712402, "cells": [{"id": 0, "text": "114 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "114"}, {"label": "page_footer", "id": 1, "page_no": 129, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.60916137695312, "t": 754.7075805664062, "r": 339.81958, "b": 763.9705200195312, "coord_origin": "TOPLEFT"}, "confidence": 0.9511194229125977, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 130, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 7. Row and Column Access Control management ", "bbox": {"l": 284.39999, "t": 755.538002, "r": 518.01208, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "115", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "For example, consider a row permission on an ACCOUNTS table ", "bbox": {"l": 136.8002, "t": 71.50903000000005, "r": 426.74084, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "(PERMISSION1_ON_ACCOUNTS). The ACCOUNTS table row permission references and ", "bbox": {"l": 136.8002, "t": 83.50885000000017, "r": 541.2251, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "compares columns in the CUSTOMERS table. When the definition of the CUSTOMERS table ", "bbox": {"l": 136.8002, "t": 95.50867000000005, "r": 547.20105, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "changes, DB2 does not check to determine whether the change to the CUSTOMERS table ", "bbox": {"l": 136.8002, "t": 107.50847999999996, "r": 539.45013, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "breaks the ACCOUNTS table row permission. If this table definition change does break the ", "bbox": {"l": 136.8002, "t": 119.50829999999996, "r": 540.14032, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "row permission, an error does not surface until an application tries to read rows from the ", "bbox": {"l": 136.8002, "t": 131.50811999999996, "r": 528.31085, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "ACCOUNTS table.", "bbox": {"l": 136.8002, "t": 143.50793, "r": 219.39151, "b": 152.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Instead of waiting for an application to detect this error, the ", "bbox": {"l": 136.8002, "t": 165.52752999999996, "r": 395.05807, "b": 174.74054, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "REGENERATE", "bbox": {"l": 394.98032, "t": 165.67693999999995, "r": 444.95959, "b": 174.50153, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": " option can be used on ", "bbox": {"l": 444.9606, "t": 165.52752999999996, "r": 547.16022, "b": 174.74054, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "the ACCOUNTS row permission. The ", "bbox": {"l": 136.8002, "t": 177.52733999999998, "r": 304.96188, "b": 186.74036, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "REGENERATE", "bbox": {"l": 304.86029, "t": 177.67675999999994, "r": 354.83957, "b": 186.50134000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " option returns an error if the change in the ", "bbox": {"l": 354.84058, "t": 177.52733999999998, "r": 546.79071, "b": 186.74036, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "CUSTOMERS table definition causes the row permission to be invalid. In this way, the row ", "bbox": {"l": 136.80025, "t": 189.52715999999998, "r": 536.28687, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "permission can be proactively corrected before an application discovers the error.", "bbox": {"l": 136.80025, "t": 201.52697999999998, "r": 495.64507999999995, "b": 210.73999000000003, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "7.2", "bbox": {"l": 64.800003, "t": 239.22058000000004, "r": 87.193398, "b": 253.98357999999996, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Managing tables with row permissions and column masks", "bbox": {"l": 91.672058, "t": 239.22058000000004, "r": 536.6239, "b": 253.98357999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "This section examines the object management considerations after RCAC is added to a DB2 ", "bbox": {"l": 136.8, "t": 271.48870999999997, "r": 547.26471, "b": 280.70172, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "table.", "bbox": {"l": 136.8, "t": 283.48856, "r": 160.85938, "b": 292.70154, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "7.2.1", "bbox": {"l": 64.800003, "t": 313.37473, "r": 94.395134, "b": 325.36269999999996, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Save and restore", "bbox": {"l": 98.094528, "t": 313.37473, "r": 205.33696, "b": 325.36269999999996, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Row permissions and column masks are stored in the DB2 table object itself, so they are ", "bbox": {"l": 136.8, "t": 339.52872, "r": 530.53082, "b": 348.7417, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "automatically saved and restored when the DB2 table object is saved and restored. ", "bbox": {"l": 136.8, "t": 351.52853, "r": 505.7432600000001, "b": 360.74152, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Therefore, no adjustments must be made to your database backup process to accommodate ", "bbox": {"l": 136.8, "t": 363.52835, "r": 547.16217, "b": 372.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "RCAC.", "bbox": {"l": 136.8, "t": 375.52817, "r": 167.29852, "b": 384.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Save and restore processing works fine with RCAC if the RCAC definition does not reference ", "bbox": {"l": 136.8, "t": 397.48798, "r": 547.22571, "b": 406.70096, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "other DB2 objects other than the table over which they are defined. When the RCAC definition ", "bbox": {"l": 136.8, "t": 409.48779, "r": 547.14392, "b": 418.70078, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "has dependencies on other DB2 objects, the restore process is much more challenging.", "bbox": {"l": 136.8, "t": 421.48761, "r": 523.84241, "b": 430.70059000000003, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 283.8012390136719, "t": 754.84130859375, "r": 518.01208, "b": 764.0040283203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9527303576469421, "cells": [{"id": 0, "text": "Chapter 7. Row and Column Access Control management ", "bbox": {"l": 284.39999, "t": 755.538002, "r": 518.01208, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 530.0354614257812, "t": 754.32568359375, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9183745980262756, "cells": [{"id": 1, "text": "115", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.9884796142578, "t": 70.43203735351562, "r": 547.20105, "b": 152.72095000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9827796220779419, "cells": [{"id": 2, "text": "For example, consider a row permission on an ACCOUNTS table ", "bbox": {"l": 136.8002, "t": 71.50903000000005, "r": 426.74084, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "(PERMISSION1_ON_ACCOUNTS). The ACCOUNTS table row permission references and ", "bbox": {"l": 136.8002, "t": 83.50885000000017, "r": 541.2251, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "compares columns in the CUSTOMERS table. When the definition of the CUSTOMERS table ", "bbox": {"l": 136.8002, "t": 95.50867000000005, "r": 547.20105, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "changes, DB2 does not check to determine whether the change to the CUSTOMERS table ", "bbox": {"l": 136.8002, "t": 107.50847999999996, "r": 539.45013, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "breaks the ACCOUNTS table row permission. If this table definition change does break the ", "bbox": {"l": 136.8002, "t": 119.50829999999996, "r": 540.14032, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "row permission, an error does not surface until an application tries to read rows from the ", "bbox": {"l": 136.8002, "t": 131.50811999999996, "r": 528.31085, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "ACCOUNTS table.", "bbox": {"l": 136.8002, "t": 143.50793, "r": 219.39151, "b": 152.72095000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.99624633789062, "t": 164.5958709716797, "r": 547.16022, "b": 211.07290649414062, "coord_origin": "TOPLEFT"}, "confidence": 0.9867848753929138, "cells": [{"id": 9, "text": "Instead of waiting for an application to detect this error, the ", "bbox": {"l": 136.8002, "t": 165.52752999999996, "r": 395.05807, "b": 174.74054, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "REGENERATE", "bbox": {"l": 394.98032, "t": 165.67693999999995, "r": 444.95959, "b": 174.50153, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": " option can be used on ", "bbox": {"l": 444.9606, "t": 165.52752999999996, "r": 547.16022, "b": 174.74054, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "the ACCOUNTS row permission. The ", "bbox": {"l": 136.8002, "t": 177.52733999999998, "r": 304.96188, "b": 186.74036, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "REGENERATE", "bbox": {"l": 304.86029, "t": 177.67675999999994, "r": 354.83957, "b": 186.50134000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " option returns an error if the change in the ", "bbox": {"l": 354.84058, "t": 177.52733999999998, "r": 546.79071, "b": 186.74036, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "CUSTOMERS table definition causes the row permission to be invalid. In this way, the row ", "bbox": {"l": 136.80025, "t": 189.52715999999998, "r": 536.28687, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "permission can be proactively corrected before an application discovers the error.", "bbox": {"l": 136.80025, "t": 201.52697999999998, "r": 495.64507999999995, "b": 210.73999000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 63.91755676269531, "t": 238.19967651367188, "r": 536.6239, "b": 254.27833557128906, "coord_origin": "TOPLEFT"}, "confidence": 0.9644711017608643, "cells": [{"id": 17, "text": "7.2", "bbox": {"l": 64.800003, "t": 239.22058000000004, "r": 87.193398, "b": 253.98357999999996, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Managing tables with row permissions and column masks", "bbox": {"l": 91.672058, "t": 239.22058000000004, "r": 536.6239, "b": 253.98357999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.8260498046875, "t": 270.5757751464844, "r": 547.26471, "b": 292.70154, "coord_origin": "TOPLEFT"}, "confidence": 0.9742122888565063, "cells": [{"id": 19, "text": "This section examines the object management considerations after RCAC is added to a DB2 ", "bbox": {"l": 136.8, "t": 271.48870999999997, "r": 547.26471, "b": 280.70172, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "table.", "bbox": {"l": 136.8, "t": 283.48856, "r": 160.85938, "b": 292.70154, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "section_header", "bbox": {"l": 63.97272872924805, "t": 312.4022216796875, "r": 205.33696, "b": 325.36269999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.955165684223175, "cells": [{"id": 21, "text": "7.2.1", "bbox": {"l": 64.800003, "t": 313.37473, "r": 94.395134, "b": 325.36269999999996, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Save and restore", "bbox": {"l": 98.094528, "t": 313.37473, "r": 205.33696, "b": 325.36269999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 135.9362335205078, "t": 338.6729431152344, "r": 547.16217, "b": 384.74115000000006, "coord_origin": "TOPLEFT"}, "confidence": 0.9810709357261658, "cells": [{"id": 23, "text": "Row permissions and column masks are stored in the DB2 table object itself, so they are ", "bbox": {"l": 136.8, "t": 339.52872, "r": 530.53082, "b": 348.7417, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "automatically saved and restored when the DB2 table object is saved and restored. ", "bbox": {"l": 136.8, "t": 351.52853, "r": 505.7432600000001, "b": 360.74152, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Therefore, no adjustments must be made to your database backup process to accommodate ", "bbox": {"l": 136.8, "t": 363.52835, "r": 547.16217, "b": 372.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "RCAC.", "bbox": {"l": 136.8, "t": 375.52817, "r": 167.29852, "b": 384.74115000000006, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 135.97621154785156, "t": 396.52679443359375, "r": 547.22571, "b": 430.947021484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9845772385597229, "cells": [{"id": 27, "text": "Save and restore processing works fine with RCAC if the RCAC definition does not reference ", "bbox": {"l": 136.8, "t": 397.48798, "r": 547.22571, "b": 406.70096, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "other DB2 objects other than the table over which they are defined. When the RCAC definition ", "bbox": {"l": 136.8, "t": 409.48779, "r": 547.14392, "b": 418.70078, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "has dependencies on other DB2 objects, the restore process is much more challenging.", "bbox": {"l": 136.8, "t": 421.48761, "r": 523.84241, "b": 430.70059000000003, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 130, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 283.8012390136719, "t": 754.84130859375, "r": 518.01208, "b": 764.0040283203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9527303576469421, "cells": [{"id": 0, "text": "Chapter 7. Row and Column Access Control management ", "bbox": {"l": 284.39999, "t": 755.538002, "r": 518.01208, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 7. Row and Column Access Control management"}, {"label": "page_footer", "id": 1, "page_no": 130, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.0354614257812, "t": 754.32568359375, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9183745980262756, "cells": [{"id": 1, "text": "115", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "115"}, {"label": "text", "id": 2, "page_no": 130, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.9884796142578, "t": 70.43203735351562, "r": 547.20105, "b": 152.72095000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9827796220779419, "cells": [{"id": 2, "text": "For example, consider a row permission on an ACCOUNTS table ", "bbox": {"l": 136.8002, "t": 71.50903000000005, "r": 426.74084, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "(PERMISSION1_ON_ACCOUNTS). The ACCOUNTS table row permission references and ", "bbox": {"l": 136.8002, "t": 83.50885000000017, "r": 541.2251, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "compares columns in the CUSTOMERS table. When the definition of the CUSTOMERS table ", "bbox": {"l": 136.8002, "t": 95.50867000000005, "r": 547.20105, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "changes, DB2 does not check to determine whether the change to the CUSTOMERS table ", "bbox": {"l": 136.8002, "t": 107.50847999999996, "r": 539.45013, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "breaks the ACCOUNTS table row permission. If this table definition change does break the ", "bbox": {"l": 136.8002, "t": 119.50829999999996, "r": 540.14032, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "row permission, an error does not surface until an application tries to read rows from the ", "bbox": {"l": 136.8002, "t": 131.50811999999996, "r": 528.31085, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "ACCOUNTS table.", "bbox": {"l": 136.8002, "t": 143.50793, "r": 219.39151, "b": 152.72095000000002, "coord_origin": "TOPLEFT"}}]}, "text": "For example, consider a row permission on an ACCOUNTS table (PERMISSION1_ON_ACCOUNTS). The ACCOUNTS table row permission references and compares columns in the CUSTOMERS table. When the definition of the CUSTOMERS table changes, DB2 does not check to determine whether the change to the CUSTOMERS table breaks the ACCOUNTS table row permission. If this table definition change does break the row permission, an error does not surface until an application tries to read rows from the ACCOUNTS table."}, {"label": "text", "id": 3, "page_no": 130, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.99624633789062, "t": 164.5958709716797, "r": 547.16022, "b": 211.07290649414062, "coord_origin": "TOPLEFT"}, "confidence": 0.9867848753929138, "cells": [{"id": 9, "text": "Instead of waiting for an application to detect this error, the ", "bbox": {"l": 136.8002, "t": 165.52752999999996, "r": 395.05807, "b": 174.74054, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "REGENERATE", "bbox": {"l": 394.98032, "t": 165.67693999999995, "r": 444.95959, "b": 174.50153, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": " option can be used on ", "bbox": {"l": 444.9606, "t": 165.52752999999996, "r": 547.16022, "b": 174.74054, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "the ACCOUNTS row permission. The ", "bbox": {"l": 136.8002, "t": 177.52733999999998, "r": 304.96188, "b": 186.74036, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "REGENERATE", "bbox": {"l": 304.86029, "t": 177.67675999999994, "r": 354.83957, "b": 186.50134000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " option returns an error if the change in the ", "bbox": {"l": 354.84058, "t": 177.52733999999998, "r": 546.79071, "b": 186.74036, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "CUSTOMERS table definition causes the row permission to be invalid. In this way, the row ", "bbox": {"l": 136.80025, "t": 189.52715999999998, "r": 536.28687, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "permission can be proactively corrected before an application discovers the error.", "bbox": {"l": 136.80025, "t": 201.52697999999998, "r": 495.64507999999995, "b": 210.73999000000003, "coord_origin": "TOPLEFT"}}]}, "text": "Instead of waiting for an application to detect this error, the REGENERATE option can be used on the ACCOUNTS row permission. The REGENERATE option returns an error if the change in the CUSTOMERS table definition causes the row permission to be invalid. In this way, the row permission can be proactively corrected before an application discovers the error."}, {"label": "section_header", "id": 4, "page_no": 130, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 63.91755676269531, "t": 238.19967651367188, "r": 536.6239, "b": 254.27833557128906, "coord_origin": "TOPLEFT"}, "confidence": 0.9644711017608643, "cells": [{"id": 17, "text": "7.2", "bbox": {"l": 64.800003, "t": 239.22058000000004, "r": 87.193398, "b": 253.98357999999996, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Managing tables with row permissions and column masks", "bbox": {"l": 91.672058, "t": 239.22058000000004, "r": 536.6239, "b": 253.98357999999996, "coord_origin": "TOPLEFT"}}]}, "text": "7.2 Managing tables with row permissions and column masks"}, {"label": "text", "id": 5, "page_no": 130, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.8260498046875, "t": 270.5757751464844, "r": 547.26471, "b": 292.70154, "coord_origin": "TOPLEFT"}, "confidence": 0.9742122888565063, "cells": [{"id": 19, "text": "This section examines the object management considerations after RCAC is added to a DB2 ", "bbox": {"l": 136.8, "t": 271.48870999999997, "r": 547.26471, "b": 280.70172, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "table.", "bbox": {"l": 136.8, "t": 283.48856, "r": 160.85938, "b": 292.70154, "coord_origin": "TOPLEFT"}}]}, "text": "This section examines the object management considerations after RCAC is added to a DB2 table."}, {"label": "section_header", "id": 6, "page_no": 130, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 63.97272872924805, "t": 312.4022216796875, "r": 205.33696, "b": 325.36269999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.955165684223175, "cells": [{"id": 21, "text": "7.2.1", "bbox": {"l": 64.800003, "t": 313.37473, "r": 94.395134, "b": 325.36269999999996, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Save and restore", "bbox": {"l": 98.094528, "t": 313.37473, "r": 205.33696, "b": 325.36269999999996, "coord_origin": "TOPLEFT"}}]}, "text": "7.2.1 Save and restore"}, {"label": "text", "id": 7, "page_no": 130, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.9362335205078, "t": 338.6729431152344, "r": 547.16217, "b": 384.74115000000006, "coord_origin": "TOPLEFT"}, "confidence": 0.9810709357261658, "cells": [{"id": 23, "text": "Row permissions and column masks are stored in the DB2 table object itself, so they are ", "bbox": {"l": 136.8, "t": 339.52872, "r": 530.53082, "b": 348.7417, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "automatically saved and restored when the DB2 table object is saved and restored. ", "bbox": {"l": 136.8, "t": 351.52853, "r": 505.7432600000001, "b": 360.74152, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Therefore, no adjustments must be made to your database backup process to accommodate ", "bbox": {"l": 136.8, "t": 363.52835, "r": 547.16217, "b": 372.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "RCAC.", "bbox": {"l": 136.8, "t": 375.52817, "r": 167.29852, "b": 384.74115000000006, "coord_origin": "TOPLEFT"}}]}, "text": "Row permissions and column masks are stored in the DB2 table object itself, so they are automatically saved and restored when the DB2 table object is saved and restored. Therefore, no adjustments must be made to your database backup process to accommodate RCAC."}, {"label": "text", "id": 8, "page_no": 130, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.97621154785156, "t": 396.52679443359375, "r": 547.22571, "b": 430.947021484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9845772385597229, "cells": [{"id": 27, "text": "Save and restore processing works fine with RCAC if the RCAC definition does not reference ", "bbox": {"l": 136.8, "t": 397.48798, "r": 547.22571, "b": 406.70096, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "other DB2 objects other than the table over which they are defined. When the RCAC definition ", "bbox": {"l": 136.8, "t": 409.48779, "r": 547.14392, "b": 418.70078, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "has dependencies on other DB2 objects, the restore process is much more challenging.", "bbox": {"l": 136.8, "t": 421.48761, "r": 523.84241, "b": 430.70059000000003, "coord_origin": "TOPLEFT"}}]}, "text": "Save and restore processing works fine with RCAC if the RCAC definition does not reference other DB2 objects other than the table over which they are defined. When the RCAC definition has dependencies on other DB2 objects, the restore process is much more challenging."}], "body": [{"label": "text", "id": 2, "page_no": 130, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.9884796142578, "t": 70.43203735351562, "r": 547.20105, "b": 152.72095000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9827796220779419, "cells": [{"id": 2, "text": "For example, consider a row permission on an ACCOUNTS table ", "bbox": {"l": 136.8002, "t": 71.50903000000005, "r": 426.74084, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "(PERMISSION1_ON_ACCOUNTS). The ACCOUNTS table row permission references and ", "bbox": {"l": 136.8002, "t": 83.50885000000017, "r": 541.2251, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "compares columns in the CUSTOMERS table. When the definition of the CUSTOMERS table ", "bbox": {"l": 136.8002, "t": 95.50867000000005, "r": 547.20105, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "changes, DB2 does not check to determine whether the change to the CUSTOMERS table ", "bbox": {"l": 136.8002, "t": 107.50847999999996, "r": 539.45013, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "breaks the ACCOUNTS table row permission. If this table definition change does break the ", "bbox": {"l": 136.8002, "t": 119.50829999999996, "r": 540.14032, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "row permission, an error does not surface until an application tries to read rows from the ", "bbox": {"l": 136.8002, "t": 131.50811999999996, "r": 528.31085, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "ACCOUNTS table.", "bbox": {"l": 136.8002, "t": 143.50793, "r": 219.39151, "b": 152.72095000000002, "coord_origin": "TOPLEFT"}}]}, "text": "For example, consider a row permission on an ACCOUNTS table (PERMISSION1_ON_ACCOUNTS). The ACCOUNTS table row permission references and compares columns in the CUSTOMERS table. When the definition of the CUSTOMERS table changes, DB2 does not check to determine whether the change to the CUSTOMERS table breaks the ACCOUNTS table row permission. If this table definition change does break the row permission, an error does not surface until an application tries to read rows from the ACCOUNTS table."}, {"label": "text", "id": 3, "page_no": 130, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.99624633789062, "t": 164.5958709716797, "r": 547.16022, "b": 211.07290649414062, "coord_origin": "TOPLEFT"}, "confidence": 0.9867848753929138, "cells": [{"id": 9, "text": "Instead of waiting for an application to detect this error, the ", "bbox": {"l": 136.8002, "t": 165.52752999999996, "r": 395.05807, "b": 174.74054, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "REGENERATE", "bbox": {"l": 394.98032, "t": 165.67693999999995, "r": 444.95959, "b": 174.50153, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": " option can be used on ", "bbox": {"l": 444.9606, "t": 165.52752999999996, "r": 547.16022, "b": 174.74054, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "the ACCOUNTS row permission. The ", "bbox": {"l": 136.8002, "t": 177.52733999999998, "r": 304.96188, "b": 186.74036, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "REGENERATE", "bbox": {"l": 304.86029, "t": 177.67675999999994, "r": 354.83957, "b": 186.50134000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": " option returns an error if the change in the ", "bbox": {"l": 354.84058, "t": 177.52733999999998, "r": 546.79071, "b": 186.74036, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "CUSTOMERS table definition causes the row permission to be invalid. In this way, the row ", "bbox": {"l": 136.80025, "t": 189.52715999999998, "r": 536.28687, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "permission can be proactively corrected before an application discovers the error.", "bbox": {"l": 136.80025, "t": 201.52697999999998, "r": 495.64507999999995, "b": 210.73999000000003, "coord_origin": "TOPLEFT"}}]}, "text": "Instead of waiting for an application to detect this error, the REGENERATE option can be used on the ACCOUNTS row permission. The REGENERATE option returns an error if the change in the CUSTOMERS table definition causes the row permission to be invalid. In this way, the row permission can be proactively corrected before an application discovers the error."}, {"label": "section_header", "id": 4, "page_no": 130, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 63.91755676269531, "t": 238.19967651367188, "r": 536.6239, "b": 254.27833557128906, "coord_origin": "TOPLEFT"}, "confidence": 0.9644711017608643, "cells": [{"id": 17, "text": "7.2", "bbox": {"l": 64.800003, "t": 239.22058000000004, "r": 87.193398, "b": 253.98357999999996, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Managing tables with row permissions and column masks", "bbox": {"l": 91.672058, "t": 239.22058000000004, "r": 536.6239, "b": 253.98357999999996, "coord_origin": "TOPLEFT"}}]}, "text": "7.2 Managing tables with row permissions and column masks"}, {"label": "text", "id": 5, "page_no": 130, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.8260498046875, "t": 270.5757751464844, "r": 547.26471, "b": 292.70154, "coord_origin": "TOPLEFT"}, "confidence": 0.9742122888565063, "cells": [{"id": 19, "text": "This section examines the object management considerations after RCAC is added to a DB2 ", "bbox": {"l": 136.8, "t": 271.48870999999997, "r": 547.26471, "b": 280.70172, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "table.", "bbox": {"l": 136.8, "t": 283.48856, "r": 160.85938, "b": 292.70154, "coord_origin": "TOPLEFT"}}]}, "text": "This section examines the object management considerations after RCAC is added to a DB2 table."}, {"label": "section_header", "id": 6, "page_no": 130, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 63.97272872924805, "t": 312.4022216796875, "r": 205.33696, "b": 325.36269999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.955165684223175, "cells": [{"id": 21, "text": "7.2.1", "bbox": {"l": 64.800003, "t": 313.37473, "r": 94.395134, "b": 325.36269999999996, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Save and restore", "bbox": {"l": 98.094528, "t": 313.37473, "r": 205.33696, "b": 325.36269999999996, "coord_origin": "TOPLEFT"}}]}, "text": "7.2.1 Save and restore"}, {"label": "text", "id": 7, "page_no": 130, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.9362335205078, "t": 338.6729431152344, "r": 547.16217, "b": 384.74115000000006, "coord_origin": "TOPLEFT"}, "confidence": 0.9810709357261658, "cells": [{"id": 23, "text": "Row permissions and column masks are stored in the DB2 table object itself, so they are ", "bbox": {"l": 136.8, "t": 339.52872, "r": 530.53082, "b": 348.7417, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "automatically saved and restored when the DB2 table object is saved and restored. ", "bbox": {"l": 136.8, "t": 351.52853, "r": 505.7432600000001, "b": 360.74152, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Therefore, no adjustments must be made to your database backup process to accommodate ", "bbox": {"l": 136.8, "t": 363.52835, "r": 547.16217, "b": 372.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "RCAC.", "bbox": {"l": 136.8, "t": 375.52817, "r": 167.29852, "b": 384.74115000000006, "coord_origin": "TOPLEFT"}}]}, "text": "Row permissions and column masks are stored in the DB2 table object itself, so they are automatically saved and restored when the DB2 table object is saved and restored. Therefore, no adjustments must be made to your database backup process to accommodate RCAC."}, {"label": "text", "id": 8, "page_no": 130, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.97621154785156, "t": 396.52679443359375, "r": 547.22571, "b": 430.947021484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9845772385597229, "cells": [{"id": 27, "text": "Save and restore processing works fine with RCAC if the RCAC definition does not reference ", "bbox": {"l": 136.8, "t": 397.48798, "r": 547.22571, "b": 406.70096, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "other DB2 objects other than the table over which they are defined. When the RCAC definition ", "bbox": {"l": 136.8, "t": 409.48779, "r": 547.14392, "b": 418.70078, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "has dependencies on other DB2 objects, the restore process is much more challenging.", "bbox": {"l": 136.8, "t": 421.48761, "r": 523.84241, "b": 430.70059000000003, "coord_origin": "TOPLEFT"}}]}, "text": "Save and restore processing works fine with RCAC if the RCAC definition does not reference other DB2 objects other than the table over which they are defined. When the RCAC definition has dependencies on other DB2 objects, the restore process is much more challenging."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 130, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 283.8012390136719, "t": 754.84130859375, "r": 518.01208, "b": 764.0040283203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9527303576469421, "cells": [{"id": 0, "text": "Chapter 7. Row and Column Access Control management ", "bbox": {"l": 284.39999, "t": 755.538002, "r": 518.01208, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 7. Row and Column Access Control management"}, {"label": "page_footer", "id": 1, "page_no": 130, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.0354614257812, "t": 754.32568359375, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9183745980262756, "cells": [{"id": 1, "text": "115", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "115"}]}}, {"page_no": 131, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "116 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "For example, assume that the BANKSCHEMA library (which is the system name or short ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 531.61835, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "name for the schema long name of BANK_SCHEMA) is saved and restored into a library ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 530.71289, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "named BANK_TEST. Recall from the example in 7.1.4, \u201cRegenerating\u201d on page 114 that the ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 545.21863, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "row permission on the ACCOUNTS table references the CUSTOMERS table (\u2026", "bbox": {"l": 136.8, "t": 107.50811999999996, "r": 490.46466, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "SELECT ", "bbox": {"l": 490.43976000000004, "t": 107.65752999999995, "r": 525.3595, "b": 116.48212000000001, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "C.CUSTOMER_ID FROM CUSTOMERS C", "bbox": {"l": 136.79999, "t": 119.65734999999995, "r": 286.67804, "b": 128.48193000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "\u2026). After the restore operation, the ACCOUNTS row ", "bbox": {"l": 286.73981, "t": 119.50792999999999, "r": 521.1106, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "permission still references the CUSTOMERS table in BANK_SCHEMA because DB2 ", "bbox": {"l": 136.79997, "t": 131.50775, "r": 513.90448, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "explicitly qualifies all object references when the row permission or column mask is created. ", "bbox": {"l": 136.79996, "t": 143.50757, "r": 544.04651, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "The restore processing does not change the explicit qualification from BANK_SCHEMA to ", "bbox": {"l": 136.79996, "t": 155.50739, "r": 535.98975, "b": 164.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "BANK_TEST. As a result, the restored ACCOUNTS row permission now depends on DB2 ", "bbox": {"l": 136.79996, "t": 167.5072, "r": 535.21295, "b": 176.72020999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "objects residing in a different schema, even though it was not created that way originally. For ", "bbox": {"l": 136.79996, "t": 179.50702, "r": 546.44183, "b": 188.72002999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "more details, see Figure 7-1.", "bbox": {"l": 136.79996, "t": 191.50684, "r": 263.8049, "b": 200.71984999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Figure 7-1 Restoring tables to different schemas", "bbox": {"l": 136.8, "t": 457.27798, "r": 333.25101, "b": 465.603, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "The only way to fix this issue is to re-create the row permission or column mask after the ", "bbox": {"l": 136.8, "t": 483.22873, "r": 529.77881, "b": 492.44171, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "restore operation. Re-creation of the row permission or column mask is required only for ", "bbox": {"l": 136.8, "t": 495.22855, "r": 528.1543, "b": 504.44153, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "definitions that reference other DB2 objects, but it is simpler to re-create all of the RCAC ", "bbox": {"l": 136.8, "t": 507.22836, "r": 528.0686, "b": 516.44135, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "definitions instead of a subset. For example, generate the SQL using System i Navigator, ", "bbox": {"l": 136.8, "t": 519.2281800000001, "r": 531.37744, "b": 528.4411600000001, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "clear the \u201cSchema qualify names for objects\u201d and select the \u201cOR REPLACE clause\u201d, and then ", "bbox": {"l": 136.8, "t": 531.22797, "r": 547.26556, "b": 540.44098, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "run the generated script.", "bbox": {"l": 136.8, "t": 543.22778, "r": 245.34109, "b": 552.44078, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "7.2.2", "bbox": {"l": 64.800003, "t": 573.11472, "r": 94.223091, "b": 585.10272, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Table migration", "bbox": {"l": 97.90097, "t": 573.11472, "r": 196.4101, "b": 585.10272, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "There are several IBM i CL commands, such as Move Object (", "bbox": {"l": 136.8, "t": 599.26872, "r": 411.69705, "b": 608.48172, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "MOVOBJ", "bbox": {"l": 411.66016, "t": 599.41812, "r": 441.59990999999997, "b": 608.2426800000001, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "), Create Duplicate ", "bbox": {"l": 441.65967, "t": 599.26872, "r": 527.79877, "b": 608.48172, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Object (", "bbox": {"l": 136.79999, "t": 611.2685200000001, "r": 171.80441, "b": 620.48152, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "CRTDUPOBJ", "bbox": {"l": 171.77951, "t": 611.41792, "r": 216.71902, "b": 620.24248, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "), and Copy Library (", "bbox": {"l": 216.77979, "t": 611.2685200000001, "r": 307.79428, "b": 620.48152, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CPYLIB", "bbox": {"l": 307.73947, "t": 611.41792, "r": 337.73901, "b": 620.24248, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "), which are used to migrate a table from one ", "bbox": {"l": 337.73999, "t": 611.2685200000001, "r": 538.52258, "b": 620.48152, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "library to another one. Often, this migration is done to create different versions of the table ", "bbox": {"l": 136.79997, "t": 623.26833, "r": 535.95691, "b": 632.48132, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "that can be used for development or testing purposes. ", "bbox": {"l": 136.79997, "t": 635.26813, "r": 377.78326, "b": 644.48112, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "The migration of a table with RCAC has the same challenges as restore processing. If the ", "bbox": {"l": 136.79997, "t": 657.22794, "r": 535.00952, "b": 666.44093, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "RCAC definition references other DB2 objects, then IBM i CL commands do not change the ", "bbox": {"l": 136.79997, "t": 669.22774, "r": 542.69781, "b": 678.44074, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "schema names that are explicitly qualified by the DB2 internal RCAC processing.", "bbox": {"l": 136.79997, "t": 681.22755, "r": 494.12694999999997, "b": 690.44055, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Again, re-creating the row permission or column mask is the only way to fix the issue of ", "bbox": {"l": 136.79997, "t": 703.247116, "r": 524.25989, "b": 712.460121, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "references to DB2 objects in other schemas. ", "bbox": {"l": 136.79997, "t": 715.246925, "r": 335.79077, "b": 724.45993, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Move", "bbox": {"l": 316.2662, "t": 220.88775999999996, "r": 344.72815, "b": 231.39691000000005, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Copy", "bbox": {"l": 318.01773, "t": 235.63744999999994, "r": 342.92993, "b": 246.14661, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "BANK SCHEMA", "bbox": {"l": 196.3947, "t": 287.32263000000006, "r": 273.97681, "b": 297.83176, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "BANK TEST", "bbox": {"l": 397.38919, "t": 286.03204, "r": 454.81213, "b": 296.54117, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Duplicate", "bbox": {"l": 306.95551, "t": 250.38702, "r": 354.05246, "b": 260.89617999999996, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Restore", "bbox": {"l": 311.56479, "t": 265.13671999999997, "r": 349.3006, "b": 275.64586999999995, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "BANK_SCHEMA", "bbox": {"l": 196.3947, "t": 287.32263000000006, "r": 273.95575, "b": 297.83176, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "BANK_TEST", "bbox": {"l": 397.38919, "t": 286.03204, "r": 454.89566, "b": 296.54117, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "ACCOUNTS", "bbox": {"l": 161.9789, "t": 307.9545, "r": 208.89331, "b": 316.71362, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ACCOUNTS", "bbox": {"l": 352.83301, "t": 307.9545, "r": 399.74747, "b": 316.71362, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "CUSTOMERS", "bbox": {"l": 257.8822, "t": 354.96887, "r": 310.7991, "b": 363.728, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Pe", "bbox": {"l": 198.0847, "t": 334.38089, "r": 208.51683, "b": 343.14001, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "rmission", "bbox": {"l": 208.52605, "t": 334.38089, "r": 244.6942, "b": 343.14001, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "CUSTOMERS", "bbox": {"l": 449.93481, "t": 355.27618, "r": 502.85172000000006, "b": 364.03531, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "Pe", "bbox": {"l": 390.1373, "t": 334.68817, "r": 400.56946, "b": 343.4473, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "rmission", "bbox": {"l": 400.57867, "t": 334.68817, "r": 436.74683, "b": 343.4473, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "References BANK_SCHEMA.CUSTOMERS", "bbox": {"l": 158.7216, "t": 431.38046, "r": 311.55884, "b": 439.62183, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "References BANK_SCHEMA.CUSTOMERS", "bbox": {"l": 350.7742, "t": 431.68777, "r": 503.61142000000007, "b": 439.92914, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.29827880859375, "t": 754.2285766601562, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9285372495651245, "cells": [{"id": 0, "text": "116 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 98.44544219970703, "t": 754.6015625, "r": 339.8977355957031, "b": 763.9843139648438, "coord_origin": "TOPLEFT"}, "confidence": 0.954731285572052, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.94534301757812, "t": 70.57475280761719, "r": 546.44183, "b": 200.73284912109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9859393835067749, "cells": [{"id": 2, "text": "For example, assume that the BANKSCHEMA library (which is the system name or short ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 531.61835, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "name for the schema long name of BANK_SCHEMA) is saved and restored into a library ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 530.71289, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "named BANK_TEST. Recall from the example in 7.1.4, \u201cRegenerating\u201d on page 114 that the ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 545.21863, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "row permission on the ACCOUNTS table references the CUSTOMERS table (\u2026", "bbox": {"l": 136.8, "t": 107.50811999999996, "r": 490.46466, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "SELECT ", "bbox": {"l": 490.43976000000004, "t": 107.65752999999995, "r": 525.3595, "b": 116.48212000000001, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "C.CUSTOMER_ID FROM CUSTOMERS C", "bbox": {"l": 136.79999, "t": 119.65734999999995, "r": 286.67804, "b": 128.48193000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "\u2026). After the restore operation, the ACCOUNTS row ", "bbox": {"l": 286.73981, "t": 119.50792999999999, "r": 521.1106, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "permission still references the CUSTOMERS table in BANK_SCHEMA because DB2 ", "bbox": {"l": 136.79997, "t": 131.50775, "r": 513.90448, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "explicitly qualifies all object references when the row permission or column mask is created. ", "bbox": {"l": 136.79996, "t": 143.50757, "r": 544.04651, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "The restore processing does not change the explicit qualification from BANK_SCHEMA to ", "bbox": {"l": 136.79996, "t": 155.50739, "r": 535.98975, "b": 164.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "BANK_TEST. As a result, the restored ACCOUNTS row permission now depends on DB2 ", "bbox": {"l": 136.79996, "t": 167.5072, "r": 535.21295, "b": 176.72020999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "objects residing in a different schema, even though it was not created that way originally. For ", "bbox": {"l": 136.79996, "t": 179.50702, "r": 546.44183, "b": 188.72002999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "more details, see Figure 7-1.", "bbox": {"l": 136.79996, "t": 191.50684, "r": 263.8049, "b": 200.71984999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 135.7970428466797, "t": 456.8849182128906, "r": 333.88006591796875, "b": 466.27325439453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9470012187957764, "cells": [{"id": 15, "text": "Figure 7-1 Restoring tables to different schemas", "bbox": {"l": 136.8, "t": 457.27798, "r": 333.25101, "b": 465.603, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.7681427001953, "t": 482.7886657714844, "r": 547.26556, "b": 553.0422973632812, "coord_origin": "TOPLEFT"}, "confidence": 0.986469030380249, "cells": [{"id": 16, "text": "The only way to fix this issue is to re-create the row permission or column mask after the ", "bbox": {"l": 136.8, "t": 483.22873, "r": 529.77881, "b": 492.44171, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "restore operation. Re-creation of the row permission or column mask is required only for ", "bbox": {"l": 136.8, "t": 495.22855, "r": 528.1543, "b": 504.44153, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "definitions that reference other DB2 objects, but it is simpler to re-create all of the RCAC ", "bbox": {"l": 136.8, "t": 507.22836, "r": 528.0686, "b": 516.44135, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "definitions instead of a subset. For example, generate the SQL using System i Navigator, ", "bbox": {"l": 136.8, "t": 519.2281800000001, "r": 531.37744, "b": 528.4411600000001, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "clear the \u201cSchema qualify names for objects\u201d and select the \u201cOR REPLACE clause\u201d, and then ", "bbox": {"l": 136.8, "t": 531.22797, "r": 547.26556, "b": 540.44098, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "run the generated script.", "bbox": {"l": 136.8, "t": 543.22778, "r": 245.34109, "b": 552.44078, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "section_header", "bbox": {"l": 63.921077728271484, "t": 572.3475952148438, "r": 196.4101, "b": 585.6023559570312, "coord_origin": "TOPLEFT"}, "confidence": 0.9667927026748657, "cells": [{"id": 22, "text": "7.2.2", "bbox": {"l": 64.800003, "t": 573.11472, "r": 94.223091, "b": 585.10272, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Table migration", "bbox": {"l": 97.90097, "t": 573.11472, "r": 196.4101, "b": 585.10272, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 135.8064727783203, "t": 598.497802734375, "r": 538.52258, "b": 645.066162109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9866422414779663, "cells": [{"id": 24, "text": "There are several IBM i CL commands, such as Move Object (", "bbox": {"l": 136.8, "t": 599.26872, "r": 411.69705, "b": 608.48172, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "MOVOBJ", "bbox": {"l": 411.66016, "t": 599.41812, "r": 441.59990999999997, "b": 608.2426800000001, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "), Create Duplicate ", "bbox": {"l": 441.65967, "t": 599.26872, "r": 527.79877, "b": 608.48172, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Object (", "bbox": {"l": 136.79999, "t": 611.2685200000001, "r": 171.80441, "b": 620.48152, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "CRTDUPOBJ", "bbox": {"l": 171.77951, "t": 611.41792, "r": 216.71902, "b": 620.24248, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "), and Copy Library (", "bbox": {"l": 216.77979, "t": 611.2685200000001, "r": 307.79428, "b": 620.48152, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CPYLIB", "bbox": {"l": 307.73947, "t": 611.41792, "r": 337.73901, "b": 620.24248, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "), which are used to migrate a table from one ", "bbox": {"l": 337.73999, "t": 611.2685200000001, "r": 538.52258, "b": 620.48152, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "library to another one. Often, this migration is done to create different versions of the table ", "bbox": {"l": 136.79997, "t": 623.26833, "r": 535.95691, "b": 632.48132, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "that can be used for development or testing purposes. ", "bbox": {"l": 136.79997, "t": 635.26813, "r": 377.78326, "b": 644.48112, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 135.9099884033203, "t": 656.6238403320312, "r": 542.69781, "b": 691.0518188476562, "coord_origin": "TOPLEFT"}, "confidence": 0.9842554926872253, "cells": [{"id": 34, "text": "The migration of a table with RCAC has the same challenges as restore processing. If the ", "bbox": {"l": 136.79997, "t": 657.22794, "r": 535.00952, "b": 666.44093, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "RCAC definition references other DB2 objects, then IBM i CL commands do not change the ", "bbox": {"l": 136.79997, "t": 669.22774, "r": 542.69781, "b": 678.44074, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "schema names that are explicitly qualified by the DB2 internal RCAC processing.", "bbox": {"l": 136.79997, "t": 681.22755, "r": 494.12694999999997, "b": 690.44055, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 135.79965209960938, "t": 702.5816040039062, "r": 524.25989, "b": 724.7844848632812, "coord_origin": "TOPLEFT"}, "confidence": 0.97635817527771, "cells": [{"id": 37, "text": "Again, re-creating the row permission or column mask is the only way to fix the issue of ", "bbox": {"l": 136.79997, "t": 703.247116, "r": 524.25989, "b": 712.460121, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "references to DB2 objects in other schemas. ", "bbox": {"l": 136.79997, "t": 715.246925, "r": 335.79077, "b": 724.45993, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "picture", "bbox": {"l": 136.1027374267578, "t": 215.22740173339844, "r": 522.8739013671875, "b": 453.6589050292969, "coord_origin": "TOPLEFT"}, "confidence": 0.9824627637863159, "cells": [{"id": 39, "text": "Move", "bbox": {"l": 316.2662, "t": 220.88775999999996, "r": 344.72815, "b": 231.39691000000005, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Copy", "bbox": {"l": 318.01773, "t": 235.63744999999994, "r": 342.92993, "b": 246.14661, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "BANK SCHEMA", "bbox": {"l": 196.3947, "t": 287.32263000000006, "r": 273.97681, "b": 297.83176, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "BANK TEST", "bbox": {"l": 397.38919, "t": 286.03204, "r": 454.81213, "b": 296.54117, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Duplicate", "bbox": {"l": 306.95551, "t": 250.38702, "r": 354.05246, "b": 260.89617999999996, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Restore", "bbox": {"l": 311.56479, "t": 265.13671999999997, "r": 349.3006, "b": 275.64586999999995, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "BANK_SCHEMA", "bbox": {"l": 196.3947, "t": 287.32263000000006, "r": 273.95575, "b": 297.83176, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "BANK_TEST", "bbox": {"l": 397.38919, "t": 286.03204, "r": 454.89566, "b": 296.54117, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "ACCOUNTS", "bbox": {"l": 161.9789, "t": 307.9545, "r": 208.89331, "b": 316.71362, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ACCOUNTS", "bbox": {"l": 352.83301, "t": 307.9545, "r": 399.74747, "b": 316.71362, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "CUSTOMERS", "bbox": {"l": 257.8822, "t": 354.96887, "r": 310.7991, "b": 363.728, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Pe", "bbox": {"l": 198.0847, "t": 334.38089, "r": 208.51683, "b": 343.14001, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "rmission", "bbox": {"l": 208.52605, "t": 334.38089, "r": 244.6942, "b": 343.14001, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "CUSTOMERS", "bbox": {"l": 449.93481, "t": 355.27618, "r": 502.85172000000006, "b": 364.03531, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "Pe", "bbox": {"l": 390.1373, "t": 334.68817, "r": 400.56946, "b": 343.4473, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "rmission", "bbox": {"l": 400.57867, "t": 334.68817, "r": 436.74683, "b": 343.4473, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "References BANK_SCHEMA.CUSTOMERS", "bbox": {"l": 158.7216, "t": 431.38046, "r": 311.55884, "b": 439.62183, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "References BANK_SCHEMA.CUSTOMERS", "bbox": {"l": 350.7742, "t": 431.68777, "r": 503.61142000000007, "b": 439.92914, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 131, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.29827880859375, "t": 754.2285766601562, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9285372495651245, "cells": [{"id": 0, "text": "116 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "116"}, {"label": "page_footer", "id": 1, "page_no": 131, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.44544219970703, "t": 754.6015625, "r": 339.8977355957031, "b": 763.9843139648438, "coord_origin": "TOPLEFT"}, "confidence": 0.954731285572052, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 2, "page_no": 131, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.94534301757812, "t": 70.57475280761719, "r": 546.44183, "b": 200.73284912109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9859393835067749, "cells": [{"id": 2, "text": "For example, assume that the BANKSCHEMA library (which is the system name or short ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 531.61835, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "name for the schema long name of BANK_SCHEMA) is saved and restored into a library ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 530.71289, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "named BANK_TEST. Recall from the example in 7.1.4, \u201cRegenerating\u201d on page 114 that the ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 545.21863, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "row permission on the ACCOUNTS table references the CUSTOMERS table (\u2026", "bbox": {"l": 136.8, "t": 107.50811999999996, "r": 490.46466, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "SELECT ", "bbox": {"l": 490.43976000000004, "t": 107.65752999999995, "r": 525.3595, "b": 116.48212000000001, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "C.CUSTOMER_ID FROM CUSTOMERS C", "bbox": {"l": 136.79999, "t": 119.65734999999995, "r": 286.67804, "b": 128.48193000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "\u2026). After the restore operation, the ACCOUNTS row ", "bbox": {"l": 286.73981, "t": 119.50792999999999, "r": 521.1106, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "permission still references the CUSTOMERS table in BANK_SCHEMA because DB2 ", "bbox": {"l": 136.79997, "t": 131.50775, "r": 513.90448, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "explicitly qualifies all object references when the row permission or column mask is created. ", "bbox": {"l": 136.79996, "t": 143.50757, "r": 544.04651, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "The restore processing does not change the explicit qualification from BANK_SCHEMA to ", "bbox": {"l": 136.79996, "t": 155.50739, "r": 535.98975, "b": 164.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "BANK_TEST. As a result, the restored ACCOUNTS row permission now depends on DB2 ", "bbox": {"l": 136.79996, "t": 167.5072, "r": 535.21295, "b": 176.72020999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "objects residing in a different schema, even though it was not created that way originally. For ", "bbox": {"l": 136.79996, "t": 179.50702, "r": 546.44183, "b": 188.72002999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "more details, see Figure 7-1.", "bbox": {"l": 136.79996, "t": 191.50684, "r": 263.8049, "b": 200.71984999999995, "coord_origin": "TOPLEFT"}}]}, "text": "For example, assume that the BANKSCHEMA library (which is the system name or short name for the schema long name of BANK_SCHEMA) is saved and restored into a library named BANK_TEST. Recall from the example in 7.1.4, \u201cRegenerating\u201d on page 114 that the row permission on the ACCOUNTS table references the CUSTOMERS table (\u2026 SELECT C.CUSTOMER_ID FROM CUSTOMERS C \u2026). After the restore operation, the ACCOUNTS row permission still references the CUSTOMERS table in BANK_SCHEMA because DB2 explicitly qualifies all object references when the row permission or column mask is created. The restore processing does not change the explicit qualification from BANK_SCHEMA to BANK_TEST. As a result, the restored ACCOUNTS row permission now depends on DB2 objects residing in a different schema, even though it was not created that way originally. For more details, see Figure 7-1."}, {"label": "caption", "id": 3, "page_no": 131, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.7970428466797, "t": 456.8849182128906, "r": 333.88006591796875, "b": 466.27325439453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9470012187957764, "cells": [{"id": 15, "text": "Figure 7-1 Restoring tables to different schemas", "bbox": {"l": 136.8, "t": 457.27798, "r": 333.25101, "b": 465.603, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 7-1 Restoring tables to different schemas"}, {"label": "text", "id": 4, "page_no": 131, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.7681427001953, "t": 482.7886657714844, "r": 547.26556, "b": 553.0422973632812, "coord_origin": "TOPLEFT"}, "confidence": 0.986469030380249, "cells": [{"id": 16, "text": "The only way to fix this issue is to re-create the row permission or column mask after the ", "bbox": {"l": 136.8, "t": 483.22873, "r": 529.77881, "b": 492.44171, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "restore operation. Re-creation of the row permission or column mask is required only for ", "bbox": {"l": 136.8, "t": 495.22855, "r": 528.1543, "b": 504.44153, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "definitions that reference other DB2 objects, but it is simpler to re-create all of the RCAC ", "bbox": {"l": 136.8, "t": 507.22836, "r": 528.0686, "b": 516.44135, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "definitions instead of a subset. For example, generate the SQL using System i Navigator, ", "bbox": {"l": 136.8, "t": 519.2281800000001, "r": 531.37744, "b": 528.4411600000001, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "clear the \u201cSchema qualify names for objects\u201d and select the \u201cOR REPLACE clause\u201d, and then ", "bbox": {"l": 136.8, "t": 531.22797, "r": 547.26556, "b": 540.44098, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "run the generated script.", "bbox": {"l": 136.8, "t": 543.22778, "r": 245.34109, "b": 552.44078, "coord_origin": "TOPLEFT"}}]}, "text": "The only way to fix this issue is to re-create the row permission or column mask after the restore operation. Re-creation of the row permission or column mask is required only for definitions that reference other DB2 objects, but it is simpler to re-create all of the RCAC definitions instead of a subset. For example, generate the SQL using System i Navigator, clear the \u201cSchema qualify names for objects\u201d and select the \u201cOR REPLACE clause\u201d, and then run the generated script."}, {"label": "section_header", "id": 5, "page_no": 131, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 63.921077728271484, "t": 572.3475952148438, "r": 196.4101, "b": 585.6023559570312, "coord_origin": "TOPLEFT"}, "confidence": 0.9667927026748657, "cells": [{"id": 22, "text": "7.2.2", "bbox": {"l": 64.800003, "t": 573.11472, "r": 94.223091, "b": 585.10272, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Table migration", "bbox": {"l": 97.90097, "t": 573.11472, "r": 196.4101, "b": 585.10272, "coord_origin": "TOPLEFT"}}]}, "text": "7.2.2 Table migration"}, {"label": "text", "id": 6, "page_no": 131, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.8064727783203, "t": 598.497802734375, "r": 538.52258, "b": 645.066162109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9866422414779663, "cells": [{"id": 24, "text": "There are several IBM i CL commands, such as Move Object (", "bbox": {"l": 136.8, "t": 599.26872, "r": 411.69705, "b": 608.48172, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "MOVOBJ", "bbox": {"l": 411.66016, "t": 599.41812, "r": 441.59990999999997, "b": 608.2426800000001, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "), Create Duplicate ", "bbox": {"l": 441.65967, "t": 599.26872, "r": 527.79877, "b": 608.48172, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Object (", "bbox": {"l": 136.79999, "t": 611.2685200000001, "r": 171.80441, "b": 620.48152, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "CRTDUPOBJ", "bbox": {"l": 171.77951, "t": 611.41792, "r": 216.71902, "b": 620.24248, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "), and Copy Library (", "bbox": {"l": 216.77979, "t": 611.2685200000001, "r": 307.79428, "b": 620.48152, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CPYLIB", "bbox": {"l": 307.73947, "t": 611.41792, "r": 337.73901, "b": 620.24248, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "), which are used to migrate a table from one ", "bbox": {"l": 337.73999, "t": 611.2685200000001, "r": 538.52258, "b": 620.48152, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "library to another one. Often, this migration is done to create different versions of the table ", "bbox": {"l": 136.79997, "t": 623.26833, "r": 535.95691, "b": 632.48132, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "that can be used for development or testing purposes. ", "bbox": {"l": 136.79997, "t": 635.26813, "r": 377.78326, "b": 644.48112, "coord_origin": "TOPLEFT"}}]}, "text": "There are several IBM i CL commands, such as Move Object ( MOVOBJ ), Create Duplicate Object ( CRTDUPOBJ ), and Copy Library ( CPYLIB ), which are used to migrate a table from one library to another one. Often, this migration is done to create different versions of the table that can be used for development or testing purposes."}, {"label": "text", "id": 7, "page_no": 131, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.9099884033203, "t": 656.6238403320312, "r": 542.69781, "b": 691.0518188476562, "coord_origin": "TOPLEFT"}, "confidence": 0.9842554926872253, "cells": [{"id": 34, "text": "The migration of a table with RCAC has the same challenges as restore processing. If the ", "bbox": {"l": 136.79997, "t": 657.22794, "r": 535.00952, "b": 666.44093, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "RCAC definition references other DB2 objects, then IBM i CL commands do not change the ", "bbox": {"l": 136.79997, "t": 669.22774, "r": 542.69781, "b": 678.44074, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "schema names that are explicitly qualified by the DB2 internal RCAC processing.", "bbox": {"l": 136.79997, "t": 681.22755, "r": 494.12694999999997, "b": 690.44055, "coord_origin": "TOPLEFT"}}]}, "text": "The migration of a table with RCAC has the same challenges as restore processing. If the RCAC definition references other DB2 objects, then IBM i CL commands do not change the schema names that are explicitly qualified by the DB2 internal RCAC processing."}, {"label": "text", "id": 8, "page_no": 131, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.79965209960938, "t": 702.5816040039062, "r": 524.25989, "b": 724.7844848632812, "coord_origin": "TOPLEFT"}, "confidence": 0.97635817527771, "cells": [{"id": 37, "text": "Again, re-creating the row permission or column mask is the only way to fix the issue of ", "bbox": {"l": 136.79997, "t": 703.247116, "r": 524.25989, "b": 712.460121, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "references to DB2 objects in other schemas. ", "bbox": {"l": 136.79997, "t": 715.246925, "r": 335.79077, "b": 724.45993, "coord_origin": "TOPLEFT"}}]}, "text": "Again, re-creating the row permission or column mask is the only way to fix the issue of references to DB2 objects in other schemas."}, {"label": "picture", "id": 9, "page_no": 131, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 136.1027374267578, "t": 215.22740173339844, "r": 522.8739013671875, "b": 453.6589050292969, "coord_origin": "TOPLEFT"}, "confidence": 0.9824627637863159, "cells": [{"id": 39, "text": "Move", "bbox": {"l": 316.2662, "t": 220.88775999999996, "r": 344.72815, "b": 231.39691000000005, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Copy", "bbox": {"l": 318.01773, "t": 235.63744999999994, "r": 342.92993, "b": 246.14661, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "BANK SCHEMA", "bbox": {"l": 196.3947, "t": 287.32263000000006, "r": 273.97681, "b": 297.83176, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "BANK TEST", "bbox": {"l": 397.38919, "t": 286.03204, "r": 454.81213, "b": 296.54117, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Duplicate", "bbox": {"l": 306.95551, "t": 250.38702, "r": 354.05246, "b": 260.89617999999996, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Restore", "bbox": {"l": 311.56479, "t": 265.13671999999997, "r": 349.3006, "b": 275.64586999999995, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "BANK_SCHEMA", "bbox": {"l": 196.3947, "t": 287.32263000000006, "r": 273.95575, "b": 297.83176, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "BANK_TEST", "bbox": {"l": 397.38919, "t": 286.03204, "r": 454.89566, "b": 296.54117, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "ACCOUNTS", "bbox": {"l": 161.9789, "t": 307.9545, "r": 208.89331, "b": 316.71362, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ACCOUNTS", "bbox": {"l": 352.83301, "t": 307.9545, "r": 399.74747, "b": 316.71362, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "CUSTOMERS", "bbox": {"l": 257.8822, "t": 354.96887, "r": 310.7991, "b": 363.728, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Pe", "bbox": {"l": 198.0847, "t": 334.38089, "r": 208.51683, "b": 343.14001, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "rmission", "bbox": {"l": 208.52605, "t": 334.38089, "r": 244.6942, "b": 343.14001, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "CUSTOMERS", "bbox": {"l": 449.93481, "t": 355.27618, "r": 502.85172000000006, "b": 364.03531, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "Pe", "bbox": {"l": 390.1373, "t": 334.68817, "r": 400.56946, "b": 343.4473, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "rmission", "bbox": {"l": 400.57867, "t": 334.68817, "r": 436.74683, "b": 343.4473, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "References BANK_SCHEMA.CUSTOMERS", "bbox": {"l": 158.7216, "t": 431.38046, "r": 311.55884, "b": 439.62183, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "References BANK_SCHEMA.CUSTOMERS", "bbox": {"l": 350.7742, "t": 431.68777, "r": 503.61142000000007, "b": 439.92914, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 131, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.94534301757812, "t": 70.57475280761719, "r": 546.44183, "b": 200.73284912109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9859393835067749, "cells": [{"id": 2, "text": "For example, assume that the BANKSCHEMA library (which is the system name or short ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 531.61835, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "name for the schema long name of BANK_SCHEMA) is saved and restored into a library ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 530.71289, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "named BANK_TEST. Recall from the example in 7.1.4, \u201cRegenerating\u201d on page 114 that the ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 545.21863, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "row permission on the ACCOUNTS table references the CUSTOMERS table (\u2026", "bbox": {"l": 136.8, "t": 107.50811999999996, "r": 490.46466, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "SELECT ", "bbox": {"l": 490.43976000000004, "t": 107.65752999999995, "r": 525.3595, "b": 116.48212000000001, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "C.CUSTOMER_ID FROM CUSTOMERS C", "bbox": {"l": 136.79999, "t": 119.65734999999995, "r": 286.67804, "b": 128.48193000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "\u2026). After the restore operation, the ACCOUNTS row ", "bbox": {"l": 286.73981, "t": 119.50792999999999, "r": 521.1106, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "permission still references the CUSTOMERS table in BANK_SCHEMA because DB2 ", "bbox": {"l": 136.79997, "t": 131.50775, "r": 513.90448, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "explicitly qualifies all object references when the row permission or column mask is created. ", "bbox": {"l": 136.79996, "t": 143.50757, "r": 544.04651, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "The restore processing does not change the explicit qualification from BANK_SCHEMA to ", "bbox": {"l": 136.79996, "t": 155.50739, "r": 535.98975, "b": 164.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "BANK_TEST. As a result, the restored ACCOUNTS row permission now depends on DB2 ", "bbox": {"l": 136.79996, "t": 167.5072, "r": 535.21295, "b": 176.72020999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "objects residing in a different schema, even though it was not created that way originally. For ", "bbox": {"l": 136.79996, "t": 179.50702, "r": 546.44183, "b": 188.72002999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "more details, see Figure 7-1.", "bbox": {"l": 136.79996, "t": 191.50684, "r": 263.8049, "b": 200.71984999999995, "coord_origin": "TOPLEFT"}}]}, "text": "For example, assume that the BANKSCHEMA library (which is the system name or short name for the schema long name of BANK_SCHEMA) is saved and restored into a library named BANK_TEST. Recall from the example in 7.1.4, \u201cRegenerating\u201d on page 114 that the row permission on the ACCOUNTS table references the CUSTOMERS table (\u2026 SELECT C.CUSTOMER_ID FROM CUSTOMERS C \u2026). After the restore operation, the ACCOUNTS row permission still references the CUSTOMERS table in BANK_SCHEMA because DB2 explicitly qualifies all object references when the row permission or column mask is created. The restore processing does not change the explicit qualification from BANK_SCHEMA to BANK_TEST. As a result, the restored ACCOUNTS row permission now depends on DB2 objects residing in a different schema, even though it was not created that way originally. For more details, see Figure 7-1."}, {"label": "caption", "id": 3, "page_no": 131, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.7970428466797, "t": 456.8849182128906, "r": 333.88006591796875, "b": 466.27325439453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9470012187957764, "cells": [{"id": 15, "text": "Figure 7-1 Restoring tables to different schemas", "bbox": {"l": 136.8, "t": 457.27798, "r": 333.25101, "b": 465.603, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 7-1 Restoring tables to different schemas"}, {"label": "text", "id": 4, "page_no": 131, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.7681427001953, "t": 482.7886657714844, "r": 547.26556, "b": 553.0422973632812, "coord_origin": "TOPLEFT"}, "confidence": 0.986469030380249, "cells": [{"id": 16, "text": "The only way to fix this issue is to re-create the row permission or column mask after the ", "bbox": {"l": 136.8, "t": 483.22873, "r": 529.77881, "b": 492.44171, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "restore operation. Re-creation of the row permission or column mask is required only for ", "bbox": {"l": 136.8, "t": 495.22855, "r": 528.1543, "b": 504.44153, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "definitions that reference other DB2 objects, but it is simpler to re-create all of the RCAC ", "bbox": {"l": 136.8, "t": 507.22836, "r": 528.0686, "b": 516.44135, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "definitions instead of a subset. For example, generate the SQL using System i Navigator, ", "bbox": {"l": 136.8, "t": 519.2281800000001, "r": 531.37744, "b": 528.4411600000001, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "clear the \u201cSchema qualify names for objects\u201d and select the \u201cOR REPLACE clause\u201d, and then ", "bbox": {"l": 136.8, "t": 531.22797, "r": 547.26556, "b": 540.44098, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "run the generated script.", "bbox": {"l": 136.8, "t": 543.22778, "r": 245.34109, "b": 552.44078, "coord_origin": "TOPLEFT"}}]}, "text": "The only way to fix this issue is to re-create the row permission or column mask after the restore operation. Re-creation of the row permission or column mask is required only for definitions that reference other DB2 objects, but it is simpler to re-create all of the RCAC definitions instead of a subset. For example, generate the SQL using System i Navigator, clear the \u201cSchema qualify names for objects\u201d and select the \u201cOR REPLACE clause\u201d, and then run the generated script."}, {"label": "section_header", "id": 5, "page_no": 131, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 63.921077728271484, "t": 572.3475952148438, "r": 196.4101, "b": 585.6023559570312, "coord_origin": "TOPLEFT"}, "confidence": 0.9667927026748657, "cells": [{"id": 22, "text": "7.2.2", "bbox": {"l": 64.800003, "t": 573.11472, "r": 94.223091, "b": 585.10272, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Table migration", "bbox": {"l": 97.90097, "t": 573.11472, "r": 196.4101, "b": 585.10272, "coord_origin": "TOPLEFT"}}]}, "text": "7.2.2 Table migration"}, {"label": "text", "id": 6, "page_no": 131, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.8064727783203, "t": 598.497802734375, "r": 538.52258, "b": 645.066162109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9866422414779663, "cells": [{"id": 24, "text": "There are several IBM i CL commands, such as Move Object (", "bbox": {"l": 136.8, "t": 599.26872, "r": 411.69705, "b": 608.48172, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "MOVOBJ", "bbox": {"l": 411.66016, "t": 599.41812, "r": 441.59990999999997, "b": 608.2426800000001, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "), Create Duplicate ", "bbox": {"l": 441.65967, "t": 599.26872, "r": 527.79877, "b": 608.48172, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Object (", "bbox": {"l": 136.79999, "t": 611.2685200000001, "r": 171.80441, "b": 620.48152, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "CRTDUPOBJ", "bbox": {"l": 171.77951, "t": 611.41792, "r": 216.71902, "b": 620.24248, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "), and Copy Library (", "bbox": {"l": 216.77979, "t": 611.2685200000001, "r": 307.79428, "b": 620.48152, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CPYLIB", "bbox": {"l": 307.73947, "t": 611.41792, "r": 337.73901, "b": 620.24248, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "), which are used to migrate a table from one ", "bbox": {"l": 337.73999, "t": 611.2685200000001, "r": 538.52258, "b": 620.48152, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "library to another one. Often, this migration is done to create different versions of the table ", "bbox": {"l": 136.79997, "t": 623.26833, "r": 535.95691, "b": 632.48132, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "that can be used for development or testing purposes. ", "bbox": {"l": 136.79997, "t": 635.26813, "r": 377.78326, "b": 644.48112, "coord_origin": "TOPLEFT"}}]}, "text": "There are several IBM i CL commands, such as Move Object ( MOVOBJ ), Create Duplicate Object ( CRTDUPOBJ ), and Copy Library ( CPYLIB ), which are used to migrate a table from one library to another one. Often, this migration is done to create different versions of the table that can be used for development or testing purposes."}, {"label": "text", "id": 7, "page_no": 131, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.9099884033203, "t": 656.6238403320312, "r": 542.69781, "b": 691.0518188476562, "coord_origin": "TOPLEFT"}, "confidence": 0.9842554926872253, "cells": [{"id": 34, "text": "The migration of a table with RCAC has the same challenges as restore processing. If the ", "bbox": {"l": 136.79997, "t": 657.22794, "r": 535.00952, "b": 666.44093, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "RCAC definition references other DB2 objects, then IBM i CL commands do not change the ", "bbox": {"l": 136.79997, "t": 669.22774, "r": 542.69781, "b": 678.44074, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "schema names that are explicitly qualified by the DB2 internal RCAC processing.", "bbox": {"l": 136.79997, "t": 681.22755, "r": 494.12694999999997, "b": 690.44055, "coord_origin": "TOPLEFT"}}]}, "text": "The migration of a table with RCAC has the same challenges as restore processing. If the RCAC definition references other DB2 objects, then IBM i CL commands do not change the schema names that are explicitly qualified by the DB2 internal RCAC processing."}, {"label": "text", "id": 8, "page_no": 131, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.79965209960938, "t": 702.5816040039062, "r": 524.25989, "b": 724.7844848632812, "coord_origin": "TOPLEFT"}, "confidence": 0.97635817527771, "cells": [{"id": 37, "text": "Again, re-creating the row permission or column mask is the only way to fix the issue of ", "bbox": {"l": 136.79997, "t": 703.247116, "r": 524.25989, "b": 712.460121, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "references to DB2 objects in other schemas. ", "bbox": {"l": 136.79997, "t": 715.246925, "r": 335.79077, "b": 724.45993, "coord_origin": "TOPLEFT"}}]}, "text": "Again, re-creating the row permission or column mask is the only way to fix the issue of references to DB2 objects in other schemas."}, {"label": "picture", "id": 9, "page_no": 131, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 136.1027374267578, "t": 215.22740173339844, "r": 522.8739013671875, "b": 453.6589050292969, "coord_origin": "TOPLEFT"}, "confidence": 0.9824627637863159, "cells": [{"id": 39, "text": "Move", "bbox": {"l": 316.2662, "t": 220.88775999999996, "r": 344.72815, "b": 231.39691000000005, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Copy", "bbox": {"l": 318.01773, "t": 235.63744999999994, "r": 342.92993, "b": 246.14661, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "BANK SCHEMA", "bbox": {"l": 196.3947, "t": 287.32263000000006, "r": 273.97681, "b": 297.83176, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "BANK TEST", "bbox": {"l": 397.38919, "t": 286.03204, "r": 454.81213, "b": 296.54117, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Duplicate", "bbox": {"l": 306.95551, "t": 250.38702, "r": 354.05246, "b": 260.89617999999996, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Restore", "bbox": {"l": 311.56479, "t": 265.13671999999997, "r": 349.3006, "b": 275.64586999999995, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "BANK_SCHEMA", "bbox": {"l": 196.3947, "t": 287.32263000000006, "r": 273.95575, "b": 297.83176, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "BANK_TEST", "bbox": {"l": 397.38919, "t": 286.03204, "r": 454.89566, "b": 296.54117, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "ACCOUNTS", "bbox": {"l": 161.9789, "t": 307.9545, "r": 208.89331, "b": 316.71362, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ACCOUNTS", "bbox": {"l": 352.83301, "t": 307.9545, "r": 399.74747, "b": 316.71362, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "CUSTOMERS", "bbox": {"l": 257.8822, "t": 354.96887, "r": 310.7991, "b": 363.728, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Pe", "bbox": {"l": 198.0847, "t": 334.38089, "r": 208.51683, "b": 343.14001, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "rmission", "bbox": {"l": 208.52605, "t": 334.38089, "r": 244.6942, "b": 343.14001, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "CUSTOMERS", "bbox": {"l": 449.93481, "t": 355.27618, "r": 502.85172000000006, "b": 364.03531, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "Pe", "bbox": {"l": 390.1373, "t": 334.68817, "r": 400.56946, "b": 343.4473, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "rmission", "bbox": {"l": 400.57867, "t": 334.68817, "r": 436.74683, "b": 343.4473, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "References BANK_SCHEMA.CUSTOMERS", "bbox": {"l": 158.7216, "t": 431.38046, "r": 311.55884, "b": 439.62183, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "References BANK_SCHEMA.CUSTOMERS", "bbox": {"l": 350.7742, "t": 431.68777, "r": 503.61142000000007, "b": 439.92914, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 131, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.29827880859375, "t": 754.2285766601562, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9285372495651245, "cells": [{"id": 0, "text": "116 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "116"}, {"label": "page_footer", "id": 1, "page_no": 131, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.44544219970703, "t": 754.6015625, "r": 339.8977355957031, "b": 763.9843139648438, "coord_origin": "TOPLEFT"}, "confidence": 0.954731285572052, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 132, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 7. Row and Column Access Control management ", "bbox": {"l": 284.39999, "t": 755.538002, "r": 518.01208, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "117", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "7.3", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 87.32769, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Monitoring and auditing function usage", "bbox": {"l": 91.833237, "t": 71.22069999999997, "r": 396.18387, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "While establishing proper roles for users, separating duties using function usage IDs, and ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 533.2309, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "defining RCAC policies allows you to implement an effective and pervasive data access ", "bbox": {"l": 136.8, "t": 115.48852999999997, "r": 524.80878, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "control scheme. How do you monitor and audit everyone who is involved in the ", "bbox": {"l": 136.8, "t": 127.48834000000011, "r": 485.689, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "implementation of that scheme? The answer is to use IBM i journaling. A special journal that ", "bbox": {"l": 136.8, "t": 139.48816, "r": 546.32922, "b": 148.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "is called QAUDJRN, also known as the ", "bbox": {"l": 136.8, "t": 151.48798, "r": 311.74442, "b": 160.70099000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "audit journal", "bbox": {"l": 311.64001, "t": 150.96497, "r": 369.36407, "b": 161.02270999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": ", can provide a record and audit trail of ", "bbox": {"l": 369.35999, "t": 151.48870999999997, "r": 542.42297, "b": 160.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "many security relevant events that occur on the system, including RCAC-related events.", "bbox": {"l": 136.79996, "t": 163.48852999999997, "r": 523.64832, "b": 172.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "The tasks and operations of security administrators and database engineers who are ", "bbox": {"l": 136.79996, "t": 185.50811999999996, "r": 514.04791, "b": 194.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "collaborating can (and should) be effectively monitored and audited to ensure that the ", "bbox": {"l": 136.79996, "t": 197.50793, "r": 516.71832, "b": 206.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "organization\u2019s data access control and governance policies are in place and enabled. For ", "bbox": {"l": 136.79996, "t": 209.50775, "r": 532.58826, "b": 218.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "example, the Database Engineers can be involved in designing and developing functions and ", "bbox": {"l": 136.79996, "t": 221.50757, "r": 547.29333, "b": 230.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "triggers that must be secured using the SECURE attribute. Otherwise, without properly ", "bbox": {"l": 136.79996, "t": 233.50739, "r": 522.2171, "b": 242.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "securing functions and triggers, the RCAC controls can be bypassed.", "bbox": {"l": 136.79996, "t": 245.5072, "r": 442.06406, "b": 254.72020999999995, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "A new journal entry type of \u201cAX\u201d for journal entry code \u201cT\u201d (audit trail) is now used for RCAC. ", "bbox": {"l": 136.79996, "t": 267.52679, "r": 546.21472, "b": 276.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "More information about the journaling of RCAC operations can be found in the following ", "bbox": {"l": 136.79996, "t": 279.52661, "r": 525.30579, "b": 288.73962, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "documents:", "bbox": {"l": 136.79996, "t": 291.52646, "r": 188.45851, "b": 300.73944, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "GLYPH", "bbox": {"l": 136.79996, "t": 308.65564, "r": 141.77995, "b": 317.43042, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "IBM i Version 7.2 Journal Management Guide", "bbox": {"l": 151.20012, "t": 308.50626, "r": 352.84631, "b": 317.71924, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": ", found at:", "bbox": {"l": 352.67999, "t": 308.50626, "r": 396.89444, "b": 317.71924, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzaki/rzakiprintthis", "bbox": {"l": 151.20013, "t": 325.63544, "r": 545.99457, "b": 334.41022, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": ".htm?lang=en", "bbox": {"l": 151.20013, "t": 337.63525000000004, "r": 211.1394, "b": 346.41003, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "GLYPH", "bbox": {"l": 136.79997, "t": 354.67484, "r": 141.77997, "b": 363.44962, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "IBM i Version 7.2 Security Reference Guide", "bbox": {"l": 151.20013, "t": 354.52545, "r": 343.57654, "b": 363.73842999999994, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": ", found at:", "bbox": {"l": 343.38031, "t": 354.52545, "r": 387.59177, "b": 363.73842999999994, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzarl/rzarlkickoff.h", "bbox": {"l": 151.20012, "t": 371.65463, "r": 545.99451, "b": 380.42941, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "tm?lang=en", "bbox": {"l": 151.20012, "t": 383.65445, "r": 201.11963, "b": 392.42923, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 283.7824401855469, "t": 754.8123779296875, "r": 518.01208, "b": 764.00732421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9508650898933411, "cells": [{"id": 0, "text": "Chapter 7. Row and Column Access Control management ", "bbox": {"l": 284.39999, "t": 755.538002, "r": 518.01208, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 530.0186157226562, "t": 754.230224609375, "r": 547.265380859375, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9163357019424438, "cells": [{"id": 1, "text": "117", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.03428649902344, "t": 70.103271484375, "r": 396.18387, "b": 86.66415405273438, "coord_origin": "TOPLEFT"}, "confidence": 0.9635764956474304, "cells": [{"id": 2, "text": "7.3", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 87.32769, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Monitoring and auditing function usage", "bbox": {"l": 91.833237, "t": 71.22069999999997, "r": 396.18387, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.9032745361328, "t": 102.72404479980469, "r": 546.32922, "b": 172.8615264892578, "coord_origin": "TOPLEFT"}, "confidence": 0.9850849509239197, "cells": [{"id": 4, "text": "While establishing proper roles for users, separating duties using function usage IDs, and ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 533.2309, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "defining RCAC policies allows you to implement an effective and pervasive data access ", "bbox": {"l": 136.8, "t": 115.48852999999997, "r": 524.80878, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "control scheme. How do you monitor and audit everyone who is involved in the ", "bbox": {"l": 136.8, "t": 127.48834000000011, "r": 485.689, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "implementation of that scheme? The answer is to use IBM i journaling. A special journal that ", "bbox": {"l": 136.8, "t": 139.48816, "r": 546.32922, "b": 148.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "is called QAUDJRN, also known as the ", "bbox": {"l": 136.8, "t": 151.48798, "r": 311.74442, "b": 160.70099000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "audit journal", "bbox": {"l": 311.64001, "t": 150.96497, "r": 369.36407, "b": 161.02270999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": ", can provide a record and audit trail of ", "bbox": {"l": 369.35999, "t": 151.48870999999997, "r": 542.42297, "b": 160.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "many security relevant events that occur on the system, including RCAC-related events.", "bbox": {"l": 136.79996, "t": 163.48852999999997, "r": 523.64832, "b": 172.70154000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.86427307128906, "t": 184.6098175048828, "r": 547.29333, "b": 255.25311279296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9875213503837585, "cells": [{"id": 12, "text": "The tasks and operations of security administrators and database engineers who are ", "bbox": {"l": 136.79996, "t": 185.50811999999996, "r": 514.04791, "b": 194.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "collaborating can (and should) be effectively monitored and audited to ensure that the ", "bbox": {"l": 136.79996, "t": 197.50793, "r": 516.71832, "b": 206.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "organization\u2019s data access control and governance policies are in place and enabled. For ", "bbox": {"l": 136.79996, "t": 209.50775, "r": 532.58826, "b": 218.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "example, the Database Engineers can be involved in designing and developing functions and ", "bbox": {"l": 136.79996, "t": 221.50757, "r": 547.29333, "b": 230.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "triggers that must be secured using the SECURE attribute. Otherwise, without properly ", "bbox": {"l": 136.79996, "t": 233.50739, "r": 522.2171, "b": 242.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "securing functions and triggers, the RCAC controls can be bypassed.", "bbox": {"l": 136.79996, "t": 245.5072, "r": 442.06406, "b": 254.72020999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.72532653808594, "t": 266.5744934082031, "r": 546.21472, "b": 300.73944, "coord_origin": "TOPLEFT"}, "confidence": 0.9673486948013306, "cells": [{"id": 18, "text": "A new journal entry type of \u201cAX\u201d for journal entry code \u201cT\u201d (audit trail) is now used for RCAC. ", "bbox": {"l": 136.79996, "t": 267.52679, "r": 546.21472, "b": 276.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "More information about the journaling of RCAC operations can be found in the following ", "bbox": {"l": 136.79996, "t": 279.52661, "r": 525.30579, "b": 288.73962, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "documents:", "bbox": {"l": 136.79996, "t": 291.52646, "r": 188.45851, "b": 300.73944, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.6563262939453, "t": 307.4368591308594, "r": 396.89444, "b": 317.71924, "coord_origin": "TOPLEFT"}, "confidence": 0.910222053527832, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.79996, "t": 308.65564, "r": 141.77995, "b": 317.43042, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "IBM i Version 7.2 Journal Management Guide", "bbox": {"l": 151.20012, "t": 308.50626, "r": 352.84631, "b": 317.71924, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": ", found at:", "bbox": {"l": 352.67999, "t": 308.50626, "r": 396.89444, "b": 317.71924, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 150.67897033691406, "t": 324.8032531738281, "r": 545.99457, "b": 346.948974609375, "coord_origin": "TOPLEFT"}, "confidence": 0.8444021940231323, "cells": [{"id": 24, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzaki/rzakiprintthis", "bbox": {"l": 151.20013, "t": 325.63544, "r": 545.99457, "b": 334.41022, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": ".htm?lang=en", "bbox": {"l": 151.20013, "t": 337.63525000000004, "r": 211.1394, "b": 346.41003, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.60202026367188, "t": 353.90203857421875, "r": 387.59177, "b": 364.74249267578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9257392883300781, "cells": [{"id": 26, "text": "GLYPH", "bbox": {"l": 136.79997, "t": 354.67484, "r": 141.77997, "b": 363.44962, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "IBM i Version 7.2 Security Reference Guide", "bbox": {"l": 151.20013, "t": 354.52545, "r": 343.57654, "b": 363.73842999999994, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": ", found at:", "bbox": {"l": 343.38031, "t": 354.52545, "r": 387.59177, "b": 363.73842999999994, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 150.6260986328125, "t": 370.6153259277344, "r": 546.2595825195312, "b": 392.73980712890625, "coord_origin": "TOPLEFT"}, "confidence": 0.7952681183815002, "cells": [{"id": 29, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzarl/rzarlkickoff.h", "bbox": {"l": 151.20012, "t": 371.65463, "r": 545.99451, "b": 380.42941, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "tm?lang=en", "bbox": {"l": 151.20012, "t": 383.65445, "r": 201.11963, "b": 392.42923, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 132, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 283.7824401855469, "t": 754.8123779296875, "r": 518.01208, "b": 764.00732421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9508650898933411, "cells": [{"id": 0, "text": "Chapter 7. Row and Column Access Control management ", "bbox": {"l": 284.39999, "t": 755.538002, "r": 518.01208, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 7. Row and Column Access Control management"}, {"label": "page_footer", "id": 1, "page_no": 132, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.0186157226562, "t": 754.230224609375, "r": 547.265380859375, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9163357019424438, "cells": [{"id": 1, "text": "117", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "117"}, {"label": "section_header", "id": 2, "page_no": 132, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.03428649902344, "t": 70.103271484375, "r": 396.18387, "b": 86.66415405273438, "coord_origin": "TOPLEFT"}, "confidence": 0.9635764956474304, "cells": [{"id": 2, "text": "7.3", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 87.32769, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Monitoring and auditing function usage", "bbox": {"l": 91.833237, "t": 71.22069999999997, "r": 396.18387, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, "text": "7.3 Monitoring and auditing function usage"}, {"label": "text", "id": 3, "page_no": 132, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.9032745361328, "t": 102.72404479980469, "r": 546.32922, "b": 172.8615264892578, "coord_origin": "TOPLEFT"}, "confidence": 0.9850849509239197, "cells": [{"id": 4, "text": "While establishing proper roles for users, separating duties using function usage IDs, and ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 533.2309, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "defining RCAC policies allows you to implement an effective and pervasive data access ", "bbox": {"l": 136.8, "t": 115.48852999999997, "r": 524.80878, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "control scheme. How do you monitor and audit everyone who is involved in the ", "bbox": {"l": 136.8, "t": 127.48834000000011, "r": 485.689, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "implementation of that scheme? The answer is to use IBM i journaling. A special journal that ", "bbox": {"l": 136.8, "t": 139.48816, "r": 546.32922, "b": 148.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "is called QAUDJRN, also known as the ", "bbox": {"l": 136.8, "t": 151.48798, "r": 311.74442, "b": 160.70099000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "audit journal", "bbox": {"l": 311.64001, "t": 150.96497, "r": 369.36407, "b": 161.02270999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": ", can provide a record and audit trail of ", "bbox": {"l": 369.35999, "t": 151.48870999999997, "r": 542.42297, "b": 160.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "many security relevant events that occur on the system, including RCAC-related events.", "bbox": {"l": 136.79996, "t": 163.48852999999997, "r": 523.64832, "b": 172.70154000000002, "coord_origin": "TOPLEFT"}}]}, "text": "While establishing proper roles for users, separating duties using function usage IDs, and defining RCAC policies allows you to implement an effective and pervasive data access control scheme. How do you monitor and audit everyone who is involved in the implementation of that scheme? The answer is to use IBM i journaling. A special journal that is called QAUDJRN, also known as the audit journal , can provide a record and audit trail of many security relevant events that occur on the system, including RCAC-related events."}, {"label": "text", "id": 4, "page_no": 132, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.86427307128906, "t": 184.6098175048828, "r": 547.29333, "b": 255.25311279296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9875213503837585, "cells": [{"id": 12, "text": "The tasks and operations of security administrators and database engineers who are ", "bbox": {"l": 136.79996, "t": 185.50811999999996, "r": 514.04791, "b": 194.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "collaborating can (and should) be effectively monitored and audited to ensure that the ", "bbox": {"l": 136.79996, "t": 197.50793, "r": 516.71832, "b": 206.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "organization\u2019s data access control and governance policies are in place and enabled. For ", "bbox": {"l": 136.79996, "t": 209.50775, "r": 532.58826, "b": 218.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "example, the Database Engineers can be involved in designing and developing functions and ", "bbox": {"l": 136.79996, "t": 221.50757, "r": 547.29333, "b": 230.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "triggers that must be secured using the SECURE attribute. Otherwise, without properly ", "bbox": {"l": 136.79996, "t": 233.50739, "r": 522.2171, "b": 242.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "securing functions and triggers, the RCAC controls can be bypassed.", "bbox": {"l": 136.79996, "t": 245.5072, "r": 442.06406, "b": 254.72020999999995, "coord_origin": "TOPLEFT"}}]}, "text": "The tasks and operations of security administrators and database engineers who are collaborating can (and should) be effectively monitored and audited to ensure that the organization\u2019s data access control and governance policies are in place and enabled. For example, the Database Engineers can be involved in designing and developing functions and triggers that must be secured using the SECURE attribute. Otherwise, without properly securing functions and triggers, the RCAC controls can be bypassed."}, {"label": "text", "id": 5, "page_no": 132, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.72532653808594, "t": 266.5744934082031, "r": 546.21472, "b": 300.73944, "coord_origin": "TOPLEFT"}, "confidence": 0.9673486948013306, "cells": [{"id": 18, "text": "A new journal entry type of \u201cAX\u201d for journal entry code \u201cT\u201d (audit trail) is now used for RCAC. ", "bbox": {"l": 136.79996, "t": 267.52679, "r": 546.21472, "b": 276.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "More information about the journaling of RCAC operations can be found in the following ", "bbox": {"l": 136.79996, "t": 279.52661, "r": 525.30579, "b": 288.73962, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "documents:", "bbox": {"l": 136.79996, "t": 291.52646, "r": 188.45851, "b": 300.73944, "coord_origin": "TOPLEFT"}}]}, "text": "A new journal entry type of \u201cAX\u201d for journal entry code \u201cT\u201d (audit trail) is now used for RCAC. More information about the journaling of RCAC operations can be found in the following documents:"}, {"label": "list_item", "id": 6, "page_no": 132, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.6563262939453, "t": 307.4368591308594, "r": 396.89444, "b": 317.71924, "coord_origin": "TOPLEFT"}, "confidence": 0.910222053527832, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.79996, "t": 308.65564, "r": 141.77995, "b": 317.43042, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "IBM i Version 7.2 Journal Management Guide", "bbox": {"l": 151.20012, "t": 308.50626, "r": 352.84631, "b": 317.71924, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": ", found at:", "bbox": {"l": 352.67999, "t": 308.50626, "r": 396.89444, "b": 317.71924, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH IBM i Version 7.2 Journal Management Guide , found at:"}, {"label": "list_item", "id": 7, "page_no": 132, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 150.67897033691406, "t": 324.8032531738281, "r": 545.99457, "b": 346.948974609375, "coord_origin": "TOPLEFT"}, "confidence": 0.8444021940231323, "cells": [{"id": 24, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzaki/rzakiprintthis", "bbox": {"l": 151.20013, "t": 325.63544, "r": 545.99457, "b": 334.41022, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": ".htm?lang=en", "bbox": {"l": 151.20013, "t": 337.63525000000004, "r": 211.1394, "b": 346.41003, "coord_origin": "TOPLEFT"}}]}, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzaki/rzakiprintthis .htm?lang=en"}, {"label": "list_item", "id": 8, "page_no": 132, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.60202026367188, "t": 353.90203857421875, "r": 387.59177, "b": 364.74249267578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9257392883300781, "cells": [{"id": 26, "text": "GLYPH", "bbox": {"l": 136.79997, "t": 354.67484, "r": 141.77997, "b": 363.44962, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "IBM i Version 7.2 Security Reference Guide", "bbox": {"l": 151.20013, "t": 354.52545, "r": 343.57654, "b": 363.73842999999994, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": ", found at:", "bbox": {"l": 343.38031, "t": 354.52545, "r": 387.59177, "b": 363.73842999999994, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH IBM i Version 7.2 Security Reference Guide , found at:"}, {"label": "list_item", "id": 9, "page_no": 132, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 150.6260986328125, "t": 370.6153259277344, "r": 546.2595825195312, "b": 392.73980712890625, "coord_origin": "TOPLEFT"}, "confidence": 0.7952681183815002, "cells": [{"id": 29, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzarl/rzarlkickoff.h", "bbox": {"l": 151.20012, "t": 371.65463, "r": 545.99451, "b": 380.42941, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "tm?lang=en", "bbox": {"l": 151.20012, "t": 383.65445, "r": 201.11963, "b": 392.42923, "coord_origin": "TOPLEFT"}}]}, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzarl/rzarlkickoff.h tm?lang=en"}], "body": [{"label": "section_header", "id": 2, "page_no": 132, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.03428649902344, "t": 70.103271484375, "r": 396.18387, "b": 86.66415405273438, "coord_origin": "TOPLEFT"}, "confidence": 0.9635764956474304, "cells": [{"id": 2, "text": "7.3", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 87.32769, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Monitoring and auditing function usage", "bbox": {"l": 91.833237, "t": 71.22069999999997, "r": 396.18387, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, "text": "7.3 Monitoring and auditing function usage"}, {"label": "text", "id": 3, "page_no": 132, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.9032745361328, "t": 102.72404479980469, "r": 546.32922, "b": 172.8615264892578, "coord_origin": "TOPLEFT"}, "confidence": 0.9850849509239197, "cells": [{"id": 4, "text": "While establishing proper roles for users, separating duties using function usage IDs, and ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 533.2309, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "defining RCAC policies allows you to implement an effective and pervasive data access ", "bbox": {"l": 136.8, "t": 115.48852999999997, "r": 524.80878, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "control scheme. How do you monitor and audit everyone who is involved in the ", "bbox": {"l": 136.8, "t": 127.48834000000011, "r": 485.689, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "implementation of that scheme? The answer is to use IBM i journaling. A special journal that ", "bbox": {"l": 136.8, "t": 139.48816, "r": 546.32922, "b": 148.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "is called QAUDJRN, also known as the ", "bbox": {"l": 136.8, "t": 151.48798, "r": 311.74442, "b": 160.70099000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "audit journal", "bbox": {"l": 311.64001, "t": 150.96497, "r": 369.36407, "b": 161.02270999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": ", can provide a record and audit trail of ", "bbox": {"l": 369.35999, "t": 151.48870999999997, "r": 542.42297, "b": 160.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "many security relevant events that occur on the system, including RCAC-related events.", "bbox": {"l": 136.79996, "t": 163.48852999999997, "r": 523.64832, "b": 172.70154000000002, "coord_origin": "TOPLEFT"}}]}, "text": "While establishing proper roles for users, separating duties using function usage IDs, and defining RCAC policies allows you to implement an effective and pervasive data access control scheme. How do you monitor and audit everyone who is involved in the implementation of that scheme? The answer is to use IBM i journaling. A special journal that is called QAUDJRN, also known as the audit journal , can provide a record and audit trail of many security relevant events that occur on the system, including RCAC-related events."}, {"label": "text", "id": 4, "page_no": 132, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.86427307128906, "t": 184.6098175048828, "r": 547.29333, "b": 255.25311279296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9875213503837585, "cells": [{"id": 12, "text": "The tasks and operations of security administrators and database engineers who are ", "bbox": {"l": 136.79996, "t": 185.50811999999996, "r": 514.04791, "b": 194.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "collaborating can (and should) be effectively monitored and audited to ensure that the ", "bbox": {"l": 136.79996, "t": 197.50793, "r": 516.71832, "b": 206.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "organization\u2019s data access control and governance policies are in place and enabled. For ", "bbox": {"l": 136.79996, "t": 209.50775, "r": 532.58826, "b": 218.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "example, the Database Engineers can be involved in designing and developing functions and ", "bbox": {"l": 136.79996, "t": 221.50757, "r": 547.29333, "b": 230.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "triggers that must be secured using the SECURE attribute. Otherwise, without properly ", "bbox": {"l": 136.79996, "t": 233.50739, "r": 522.2171, "b": 242.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "securing functions and triggers, the RCAC controls can be bypassed.", "bbox": {"l": 136.79996, "t": 245.5072, "r": 442.06406, "b": 254.72020999999995, "coord_origin": "TOPLEFT"}}]}, "text": "The tasks and operations of security administrators and database engineers who are collaborating can (and should) be effectively monitored and audited to ensure that the organization\u2019s data access control and governance policies are in place and enabled. For example, the Database Engineers can be involved in designing and developing functions and triggers that must be secured using the SECURE attribute. Otherwise, without properly securing functions and triggers, the RCAC controls can be bypassed."}, {"label": "text", "id": 5, "page_no": 132, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.72532653808594, "t": 266.5744934082031, "r": 546.21472, "b": 300.73944, "coord_origin": "TOPLEFT"}, "confidence": 0.9673486948013306, "cells": [{"id": 18, "text": "A new journal entry type of \u201cAX\u201d for journal entry code \u201cT\u201d (audit trail) is now used for RCAC. ", "bbox": {"l": 136.79996, "t": 267.52679, "r": 546.21472, "b": 276.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "More information about the journaling of RCAC operations can be found in the following ", "bbox": {"l": 136.79996, "t": 279.52661, "r": 525.30579, "b": 288.73962, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "documents:", "bbox": {"l": 136.79996, "t": 291.52646, "r": 188.45851, "b": 300.73944, "coord_origin": "TOPLEFT"}}]}, "text": "A new journal entry type of \u201cAX\u201d for journal entry code \u201cT\u201d (audit trail) is now used for RCAC. More information about the journaling of RCAC operations can be found in the following documents:"}, {"label": "list_item", "id": 6, "page_no": 132, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.6563262939453, "t": 307.4368591308594, "r": 396.89444, "b": 317.71924, "coord_origin": "TOPLEFT"}, "confidence": 0.910222053527832, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.79996, "t": 308.65564, "r": 141.77995, "b": 317.43042, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "IBM i Version 7.2 Journal Management Guide", "bbox": {"l": 151.20012, "t": 308.50626, "r": 352.84631, "b": 317.71924, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": ", found at:", "bbox": {"l": 352.67999, "t": 308.50626, "r": 396.89444, "b": 317.71924, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH IBM i Version 7.2 Journal Management Guide , found at:"}, {"label": "list_item", "id": 7, "page_no": 132, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 150.67897033691406, "t": 324.8032531738281, "r": 545.99457, "b": 346.948974609375, "coord_origin": "TOPLEFT"}, "confidence": 0.8444021940231323, "cells": [{"id": 24, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzaki/rzakiprintthis", "bbox": {"l": 151.20013, "t": 325.63544, "r": 545.99457, "b": 334.41022, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": ".htm?lang=en", "bbox": {"l": 151.20013, "t": 337.63525000000004, "r": 211.1394, "b": 346.41003, "coord_origin": "TOPLEFT"}}]}, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzaki/rzakiprintthis .htm?lang=en"}, {"label": "list_item", "id": 8, "page_no": 132, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.60202026367188, "t": 353.90203857421875, "r": 387.59177, "b": 364.74249267578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9257392883300781, "cells": [{"id": 26, "text": "GLYPH", "bbox": {"l": 136.79997, "t": 354.67484, "r": 141.77997, "b": 363.44962, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "IBM i Version 7.2 Security Reference Guide", "bbox": {"l": 151.20013, "t": 354.52545, "r": 343.57654, "b": 363.73842999999994, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": ", found at:", "bbox": {"l": 343.38031, "t": 354.52545, "r": 387.59177, "b": 363.73842999999994, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH IBM i Version 7.2 Security Reference Guide , found at:"}, {"label": "list_item", "id": 9, "page_no": 132, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 150.6260986328125, "t": 370.6153259277344, "r": 546.2595825195312, "b": 392.73980712890625, "coord_origin": "TOPLEFT"}, "confidence": 0.7952681183815002, "cells": [{"id": 29, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzarl/rzarlkickoff.h", "bbox": {"l": 151.20012, "t": 371.65463, "r": 545.99451, "b": 380.42941, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "tm?lang=en", "bbox": {"l": 151.20012, "t": 383.65445, "r": 201.11963, "b": 392.42923, "coord_origin": "TOPLEFT"}}]}, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzarl/rzarlkickoff.h tm?lang=en"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 132, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 283.7824401855469, "t": 754.8123779296875, "r": 518.01208, "b": 764.00732421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9508650898933411, "cells": [{"id": 0, "text": "Chapter 7. Row and Column Access Control management ", "bbox": {"l": 284.39999, "t": 755.538002, "r": 518.01208, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 7. Row and Column Access Control management"}, {"label": "page_footer", "id": 1, "page_no": 132, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.0186157226562, "t": 754.230224609375, "r": 547.265380859375, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9163357019424438, "cells": [{"id": 1, "text": "117", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "117"}]}}, {"page_no": 133, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "118 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.53031158447266, "t": 754.076416015625, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9196769595146179, "cells": [{"id": 0, "text": "118 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 98.5851821899414, "t": 754.4262084960938, "r": 340.1449890136719, "b": 764.1357421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9428929090499878, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 133, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.53031158447266, "t": 754.076416015625, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9196769595146179, "cells": [{"id": 0, "text": "118 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "118"}, {"label": "page_footer", "id": 1, "page_no": 133, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.5851821899414, "t": 754.4262084960938, "r": 340.1449890136719, "b": 764.1357421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9428929090499878, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}], "body": [], "headers": [{"label": "page_footer", "id": 0, "page_no": 133, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.53031158447266, "t": 754.076416015625, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9196769595146179, "cells": [{"id": 0, "text": "118 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "118"}, {"label": "page_footer", "id": 1, "page_no": 133, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.5851821899414, "t": 754.4262084960938, "r": 340.1449890136719, "b": 764.1357421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9428929090499878, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 134, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "119", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Chapter 8.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Designing and planning for ", "bbox": {"l": 136.8, "t": 254.88635, "r": 479.93341, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "success", "bbox": {"l": 136.8, "t": 285.84671, "r": 239.39761, "b": 309.8782, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Although successfully implementing Row and Column Access Control (RCAC) is based on ", "bbox": {"l": 136.8, "t": 348.70871, "r": 538.46985, "b": 357.92169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "knowledge and skills, designing and planning are fundamental aspects. This chapter ", "bbox": {"l": 136.79999, "t": 360.70853, "r": 511.88861, "b": 369.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "describes the need for a deep understanding of the technology, and good design, proper ", "bbox": {"l": 136.79996, "t": 372.7083400000001, "r": 529.5744, "b": 381.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "planning, and adequate testing.", "bbox": {"l": 136.79996, "t": 384.70816, "r": 276.33261, "b": 393.92114, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "The following topics are covered in this chapter:", "bbox": {"l": 136.79996, "t": 406.7277199999999, "r": 347.41208, "b": 415.9407, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "GLYPH", "bbox": {"l": 136.79996, "t": 423.85689999999994, "r": 141.77995, "b": 432.63168, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Implementing RCAC with good design and proper planning", "bbox": {"l": 151.20012, "t": 423.70752, "r": 411.53955, "b": 432.9205, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "GLYPH", "bbox": {"l": 136.79996, "t": 435.85672000000005, "r": 141.77995, "b": 444.63149999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "DB2 for i Center of Excellence", "bbox": {"l": 151.20012, "t": 435.70733999999993, "r": 284.81952, "b": 444.92032, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "8", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.695404052734375, "t": 754.7307739257812, "r": 257.24335, "b": 764.0828247070312, "coord_origin": "TOPLEFT"}, "confidence": 0.9506158828735352, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 530.0399169921875, "t": 754.2144165039062, "r": 547.2623901367188, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.925187349319458, "cells": [{"id": 1, "text": "119", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 8.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "section_header", "bbox": {"l": 136.7628173828125, "t": 253.29893493652344, "r": 479.93341, "b": 309.8782, "coord_origin": "TOPLEFT"}, "confidence": 0.9399341940879822, "cells": [{"id": 3, "text": "Designing and planning for ", "bbox": {"l": 136.8, "t": 254.88635, "r": 479.93341, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "success", "bbox": {"l": 136.8, "t": 285.84671, "r": 239.39761, "b": 309.8782, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.9272003173828, "t": 347.94287109375, "r": 538.46985, "b": 394.585205078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9859251379966736, "cells": [{"id": 5, "text": "Although successfully implementing Row and Column Access Control (RCAC) is based on ", "bbox": {"l": 136.8, "t": 348.70871, "r": 538.46985, "b": 357.92169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "knowledge and skills, designing and planning are fundamental aspects. This chapter ", "bbox": {"l": 136.79999, "t": 360.70853, "r": 511.88861, "b": 369.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "describes the need for a deep understanding of the technology, and good design, proper ", "bbox": {"l": 136.79996, "t": 372.7083400000001, "r": 529.5744, "b": 381.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "planning, and adequate testing.", "bbox": {"l": 136.79996, "t": 384.70816, "r": 276.33261, "b": 393.92114, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.9006805419922, "t": 406.127197265625, "r": 347.41208, "b": 416.26715087890625, "coord_origin": "TOPLEFT"}, "confidence": 0.945638120174408, "cells": [{"id": 9, "text": "The following topics are covered in this chapter:", "bbox": {"l": 136.79996, "t": 406.7277199999999, "r": 347.41208, "b": 415.9407, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.63284301757812, "t": 422.662109375, "r": 411.53955, "b": 432.9858703613281, "coord_origin": "TOPLEFT"}, "confidence": 0.9510299563407898, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.79996, "t": 423.85689999999994, "r": 141.77995, "b": 432.63168, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Implementing RCAC with good design and proper planning", "bbox": {"l": 151.20012, "t": 423.70752, "r": 411.53955, "b": 432.9205, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.8564910888672, "t": 434.4798278808594, "r": 284.81952, "b": 444.92032, "coord_origin": "TOPLEFT"}, "confidence": 0.9291093945503235, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.79996, "t": 435.85672000000005, "r": 141.77995, "b": 444.63149999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "DB2 for i Center of Excellence", "bbox": {"l": 151.20012, "t": 435.70733999999993, "r": 284.81952, "b": 444.92032, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 500.39999, "t": 93.13899230957031, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.7733241319656372, "cells": [{"id": 14, "text": "8", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "picture", "bbox": {"l": 32.17782974243164, "t": 70.58657836914062, "r": 238.9773712158203, "b": 238.30882263183594, "coord_origin": "TOPLEFT"}, "confidence": 0.722669243812561, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 134, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.695404052734375, "t": 754.7307739257812, "r": 257.24335, "b": 764.0828247070312, "coord_origin": "TOPLEFT"}, "confidence": 0.9506158828735352, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 134, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.0399169921875, "t": 754.2144165039062, "r": 547.2623901367188, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.925187349319458, "cells": [{"id": 1, "text": "119", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "119"}, {"label": "text", "id": 2, "page_no": 134, "cluster": {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 8.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 8."}, {"label": "section_header", "id": 3, "page_no": 134, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 136.7628173828125, "t": 253.29893493652344, "r": 479.93341, "b": 309.8782, "coord_origin": "TOPLEFT"}, "confidence": 0.9399341940879822, "cells": [{"id": 3, "text": "Designing and planning for ", "bbox": {"l": 136.8, "t": 254.88635, "r": 479.93341, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "success", "bbox": {"l": 136.8, "t": 285.84671, "r": 239.39761, "b": 309.8782, "coord_origin": "TOPLEFT"}}]}, "text": "Designing and planning for success"}, {"label": "text", "id": 4, "page_no": 134, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.9272003173828, "t": 347.94287109375, "r": 538.46985, "b": 394.585205078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9859251379966736, "cells": [{"id": 5, "text": "Although successfully implementing Row and Column Access Control (RCAC) is based on ", "bbox": {"l": 136.8, "t": 348.70871, "r": 538.46985, "b": 357.92169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "knowledge and skills, designing and planning are fundamental aspects. This chapter ", "bbox": {"l": 136.79999, "t": 360.70853, "r": 511.88861, "b": 369.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "describes the need for a deep understanding of the technology, and good design, proper ", "bbox": {"l": 136.79996, "t": 372.7083400000001, "r": 529.5744, "b": 381.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "planning, and adequate testing.", "bbox": {"l": 136.79996, "t": 384.70816, "r": 276.33261, "b": 393.92114, "coord_origin": "TOPLEFT"}}]}, "text": "Although successfully implementing Row and Column Access Control (RCAC) is based on knowledge and skills, designing and planning are fundamental aspects. This chapter describes the need for a deep understanding of the technology, and good design, proper planning, and adequate testing."}, {"label": "text", "id": 5, "page_no": 134, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.9006805419922, "t": 406.127197265625, "r": 347.41208, "b": 416.26715087890625, "coord_origin": "TOPLEFT"}, "confidence": 0.945638120174408, "cells": [{"id": 9, "text": "The following topics are covered in this chapter:", "bbox": {"l": 136.79996, "t": 406.7277199999999, "r": 347.41208, "b": 415.9407, "coord_origin": "TOPLEFT"}}]}, "text": "The following topics are covered in this chapter:"}, {"label": "list_item", "id": 6, "page_no": 134, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.63284301757812, "t": 422.662109375, "r": 411.53955, "b": 432.9858703613281, "coord_origin": "TOPLEFT"}, "confidence": 0.9510299563407898, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.79996, "t": 423.85689999999994, "r": 141.77995, "b": 432.63168, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Implementing RCAC with good design and proper planning", "bbox": {"l": 151.20012, "t": 423.70752, "r": 411.53955, "b": 432.9205, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Implementing RCAC with good design and proper planning"}, {"label": "list_item", "id": 7, "page_no": 134, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.8564910888672, "t": 434.4798278808594, "r": 284.81952, "b": 444.92032, "coord_origin": "TOPLEFT"}, "confidence": 0.9291093945503235, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.79996, "t": 435.85672000000005, "r": 141.77995, "b": 444.63149999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "DB2 for i Center of Excellence", "bbox": {"l": 151.20012, "t": 435.70733999999993, "r": 284.81952, "b": 444.92032, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH DB2 for i Center of Excellence"}, {"label": "text", "id": 8, "page_no": 134, "cluster": {"id": 8, "label": "text", "bbox": {"l": 500.39999, "t": 93.13899230957031, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.7733241319656372, "cells": [{"id": 14, "text": "8", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, "text": "8"}, {"label": "picture", "id": 9, "page_no": 134, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 32.17782974243164, "t": 70.58657836914062, "r": 238.9773712158203, "b": 238.30882263183594, "coord_origin": "TOPLEFT"}, "confidence": 0.722669243812561, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 134, "cluster": {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 8.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 8."}, {"label": "section_header", "id": 3, "page_no": 134, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 136.7628173828125, "t": 253.29893493652344, "r": 479.93341, "b": 309.8782, "coord_origin": "TOPLEFT"}, "confidence": 0.9399341940879822, "cells": [{"id": 3, "text": "Designing and planning for ", "bbox": {"l": 136.8, "t": 254.88635, "r": 479.93341, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "success", "bbox": {"l": 136.8, "t": 285.84671, "r": 239.39761, "b": 309.8782, "coord_origin": "TOPLEFT"}}]}, "text": "Designing and planning for success"}, {"label": "text", "id": 4, "page_no": 134, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.9272003173828, "t": 347.94287109375, "r": 538.46985, "b": 394.585205078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9859251379966736, "cells": [{"id": 5, "text": "Although successfully implementing Row and Column Access Control (RCAC) is based on ", "bbox": {"l": 136.8, "t": 348.70871, "r": 538.46985, "b": 357.92169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "knowledge and skills, designing and planning are fundamental aspects. This chapter ", "bbox": {"l": 136.79999, "t": 360.70853, "r": 511.88861, "b": 369.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "describes the need for a deep understanding of the technology, and good design, proper ", "bbox": {"l": 136.79996, "t": 372.7083400000001, "r": 529.5744, "b": 381.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "planning, and adequate testing.", "bbox": {"l": 136.79996, "t": 384.70816, "r": 276.33261, "b": 393.92114, "coord_origin": "TOPLEFT"}}]}, "text": "Although successfully implementing Row and Column Access Control (RCAC) is based on knowledge and skills, designing and planning are fundamental aspects. This chapter describes the need for a deep understanding of the technology, and good design, proper planning, and adequate testing."}, {"label": "text", "id": 5, "page_no": 134, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.9006805419922, "t": 406.127197265625, "r": 347.41208, "b": 416.26715087890625, "coord_origin": "TOPLEFT"}, "confidence": 0.945638120174408, "cells": [{"id": 9, "text": "The following topics are covered in this chapter:", "bbox": {"l": 136.79996, "t": 406.7277199999999, "r": 347.41208, "b": 415.9407, "coord_origin": "TOPLEFT"}}]}, "text": "The following topics are covered in this chapter:"}, {"label": "list_item", "id": 6, "page_no": 134, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.63284301757812, "t": 422.662109375, "r": 411.53955, "b": 432.9858703613281, "coord_origin": "TOPLEFT"}, "confidence": 0.9510299563407898, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.79996, "t": 423.85689999999994, "r": 141.77995, "b": 432.63168, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Implementing RCAC with good design and proper planning", "bbox": {"l": 151.20012, "t": 423.70752, "r": 411.53955, "b": 432.9205, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Implementing RCAC with good design and proper planning"}, {"label": "list_item", "id": 7, "page_no": 134, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.8564910888672, "t": 434.4798278808594, "r": 284.81952, "b": 444.92032, "coord_origin": "TOPLEFT"}, "confidence": 0.9291093945503235, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.79996, "t": 435.85672000000005, "r": 141.77995, "b": 444.63149999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "DB2 for i Center of Excellence", "bbox": {"l": 151.20012, "t": 435.70733999999993, "r": 284.81952, "b": 444.92032, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH DB2 for i Center of Excellence"}, {"label": "text", "id": 8, "page_no": 134, "cluster": {"id": 8, "label": "text", "bbox": {"l": 500.39999, "t": 93.13899230957031, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.7733241319656372, "cells": [{"id": 14, "text": "8", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, "text": "8"}, {"label": "picture", "id": 9, "page_no": 134, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 32.17782974243164, "t": 70.58657836914062, "r": 238.9773712158203, "b": 238.30882263183594, "coord_origin": "TOPLEFT"}, "confidence": 0.722669243812561, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 134, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.695404052734375, "t": 754.7307739257812, "r": 257.24335, "b": 764.0828247070312, "coord_origin": "TOPLEFT"}, "confidence": 0.9506158828735352, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 134, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.0399169921875, "t": 754.2144165039062, "r": 547.2623901367188, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.925187349319458, "cells": [{"id": 1, "text": "119", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "119"}]}}, {"page_no": 135, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "120 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "8.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.191185, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Implementing RCAC with good design and proper planning", "bbox": {"l": 91.669403, "t": 74.34069999999997, "r": 544.55121, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "By using RCAC, the row and column data that is returned to the requester can be controlled ", "bbox": {"l": 136.8, "t": 106.6087, "r": 544.7099, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "and governed by a set of data-centric policies that are defined with SQL and implemented ", "bbox": {"l": 136.80002, "t": 118.60852, "r": 535.37122, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "within DB2 for i.", "bbox": {"l": 136.80002, "t": 130.60834, "r": 206.53296, "b": 139.82135000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "RCAC provides fine-grained access control and is complementary to IBM i object-level ", "bbox": {"l": 136.80002, "t": 152.62793, "r": 520.39148, "b": 161.84094000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "security. With the new RCAC feature of DB2 for i, the database engineer, in partnership with ", "bbox": {"l": 136.80002, "t": 164.62775, "r": 544.76562, "b": 173.84076000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "the data owner and security officer, can ensure that users have access to the data based on ", "bbox": {"l": 136.80002, "t": 176.62756000000002, "r": 545.35938, "b": 185.84058000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "their level of authorization and responsibility.", "bbox": {"l": 136.80002, "t": 188.62738000000002, "r": 332.01102, "b": 197.84038999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "This situation also can include separation of duties, such as allowing the application ", "bbox": {"l": 136.80002, "t": 210.64697, "r": 508.75708, "b": 219.85999000000004, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "developers to design and implement the solutions, but restricting them from accessing the ", "bbox": {"l": 136.80002, "t": 222.64679, "r": 535.40131, "b": 231.85979999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "production data based on policy. Just because someone writes and owns the program, it does ", "bbox": {"l": 136.80002, "t": 234.64661, "r": 547.25061, "b": 243.85961999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "not mean that they have access to all the sensitive data that their program can potentially ", "bbox": {"l": 136.80002, "t": 246.64642000000003, "r": 532.39722, "b": 255.85943999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "read.", "bbox": {"l": 136.80002, "t": 258.64624000000003, "r": 159.58949, "b": 267.85925, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "This paper has described the following pervasive power and advantages of RCAC:", "bbox": {"l": 136.80002, "t": 280.60608, "r": 500.55725, "b": 289.81906000000004, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 297.79504, "r": 141.78001, "b": 306.56982, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Access can be controlled through simple or sophisticated logic.", "bbox": {"l": 151.20018, "t": 297.64566, "r": 429.45065, "b": 306.85864, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "GLYPH", "bbox": {"l": 136.80101, "t": 309.79486, "r": 141.78101, "b": 318.56964, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Virtually no application changes are required.", "bbox": {"l": 151.20117, "t": 309.64548, "r": 351.64917, "b": 318.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "GLYPH", "bbox": {"l": 136.80101, "t": 321.79468, "r": 141.78101, "b": 330.56946, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "The implementation of the access policy is part of the DB2 data access layer.", "bbox": {"l": 151.20117, "t": 321.64529000000005, "r": 491.77822999999995, "b": 330.85828000000004, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "GLYPH", "bbox": {"l": 136.80101, "t": 333.79449, "r": 141.78101, "b": 342.56927, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Table data is protected regardless of the interface that is used.", "bbox": {"l": 151.20117, "t": 333.64511, "r": 426.24567, "b": 342.85809, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "GLYPH", "bbox": {"l": 136.80101, "t": 345.79431, "r": 141.78101, "b": 354.56909, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "No user is inherently exempted from the access control policies.", "bbox": {"l": 151.20117, "t": 345.64493, "r": 433.24645999999996, "b": 354.85791, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 357.79413, "r": 141.78099, "b": 366.56891, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Groups of users can share policies and permissions.", "bbox": {"l": 151.20116, "t": 357.64474, "r": 383.57187, "b": 366.85773, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "A deep understanding of the technology, and proper planning, good design, adequate testing, ", "bbox": {"l": 136.80099, "t": 379.60454999999996, "r": 547.24536, "b": 388.81753999999995, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "and monitored deployment are critical for success. This includes the usage of quality ", "bbox": {"l": 136.80099, "t": 391.60437, "r": 512.45325, "b": 400.81735, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "assurance testing, and realistic performance and scalability exercises that serve to ", "bbox": {"l": 136.80099, "t": 403.60419, "r": 503.2384, "b": 412.81717, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "demonstrate that all of your requirements are being met. As part of the verification process, ", "bbox": {"l": 136.802, "t": 415.60400000000004, "r": 541.73065, "b": 424.81699000000003, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "the usage of in-depth proofs of concepts and proofs of technology are recommended, if not ", "bbox": {"l": 136.802, "t": 427.60382, "r": 541.32037, "b": 436.8168, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "essential. When RCAC is activated, the results of queries can change. Anticipating this ", "bbox": {"l": 136.802, "t": 439.60364, "r": 522.3526, "b": 448.81662, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "change and realizing the effects of RCAC before going live are of the utmost importance.", "bbox": {"l": 136.802, "t": 451.60345, "r": 528.17004, "b": 460.81644, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "With the ever-growing value of data, and the vast and varied database technology that is ", "bbox": {"l": 136.802, "t": 473.62302, "r": 529.30786, "b": 482.836, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "available today, it is crucial to have a person or persons on staff who specialize in data-centric ", "bbox": {"l": 136.802, "t": 485.62283, "r": 547.11536, "b": 494.83582, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "design, development, and deployment. This role and responsibility falls on the database ", "bbox": {"l": 136.802, "t": 497.62265, "r": 526.18219, "b": 506.83563, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "engineer. With the availability of DB2 RCAC, the importance of full-time database engineering ", "bbox": {"l": 136.802, "t": 509.62247, "r": 547.1958, "b": 518.83545, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "has grown.", "bbox": {"l": 136.802, "t": 521.62228, "r": 185.39784, "b": 530.83527, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "8.2", "bbox": {"l": 64.800003, "t": 559.3207199999999, "r": 87.389702, "b": 574.08372, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "DB2 for i Center of Excellence", "bbox": {"l": 91.907631, "t": 559.3207199999999, "r": 324.01276, "b": 574.08372, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "To further assist you with understanding and implementing RCAC, the DB2 for i Center of ", "bbox": {"l": 136.8, "t": 591.64862, "r": 532.66528, "b": 600.86162, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Excellence team offers an RCAC education and consulting workshop. In addition to ", "bbox": {"l": 136.8, "t": 603.64842, "r": 506.34979, "b": 612.8614200000001, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "knowledge transfer, a working session allows for a review of your data access control ", "bbox": {"l": 136.8, "t": 615.64822, "r": 514.10956, "b": 624.86122, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "requirements, review of the current environment, solution ideation, and high-level solution ", "bbox": {"l": 136.8, "t": 627.6480300000001, "r": 533.23181, "b": 636.86102, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "design. ", "bbox": {"l": 136.8, "t": 639.64783, "r": 171.82933, "b": 648.86082, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "If you are interested in engaging with the DB2 for i Center of Excellence, contact Mike Cain at ", "bbox": {"l": 136.8, "t": 661.6673900000001, "r": 547.2406, "b": 670.88039, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "mcain@us.ibm.com", "bbox": {"l": 136.8, "t": 673.8166, "r": 216.71902, "b": 682.59136, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": ".", "bbox": {"l": 216.7798, "t": 673.6672, "r": 219.54867999999996, "b": 682.8802000000001, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.42459869384766, "t": 754.2553100585938, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.930542528629303, "cells": [{"id": 0, "text": "120 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 98.57987976074219, "t": 754.646240234375, "r": 339.84716796875, "b": 764.02783203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9501276612281799, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.5673599243164, "t": 73.4725112915039, "r": 544.55121, "b": 90.01676940917969, "coord_origin": "TOPLEFT"}, "confidence": 0.9646757245063782, "cells": [{"id": 2, "text": "8.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.191185, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Implementing RCAC with good design and proper planning", "bbox": {"l": 91.669403, "t": 74.34069999999997, "r": 544.55121, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.9280242919922, "t": 105.88225555419922, "r": 544.7099, "b": 139.82135000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9831311702728271, "cells": [{"id": 4, "text": "By using RCAC, the row and column data that is returned to the requester can be controlled ", "bbox": {"l": 136.8, "t": 106.6087, "r": 544.7099, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "and governed by a set of data-centric policies that are defined with SQL and implemented ", "bbox": {"l": 136.80002, "t": 118.60852, "r": 535.37122, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "within DB2 for i.", "bbox": {"l": 136.80002, "t": 130.60834, "r": 206.53296, "b": 139.82135000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 136.055419921875, "t": 151.780517578125, "r": 545.35938, "b": 198.01513671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9863764643669128, "cells": [{"id": 7, "text": "RCAC provides fine-grained access control and is complementary to IBM i object-level ", "bbox": {"l": 136.80002, "t": 152.62793, "r": 520.39148, "b": 161.84094000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "security. With the new RCAC feature of DB2 for i, the database engineer, in partnership with ", "bbox": {"l": 136.80002, "t": 164.62775, "r": 544.76562, "b": 173.84076000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "the data owner and security officer, can ensure that users have access to the data based on ", "bbox": {"l": 136.80002, "t": 176.62756000000002, "r": 545.35938, "b": 185.84058000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "their level of authorization and responsibility.", "bbox": {"l": 136.80002, "t": 188.62738000000002, "r": 332.01102, "b": 197.84038999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.8184356689453, "t": 209.97195434570312, "r": 547.25061, "b": 267.85925, "coord_origin": "TOPLEFT"}, "confidence": 0.988143265247345, "cells": [{"id": 11, "text": "This situation also can include separation of duties, such as allowing the application ", "bbox": {"l": 136.80002, "t": 210.64697, "r": 508.75708, "b": 219.85999000000004, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "developers to design and implement the solutions, but restricting them from accessing the ", "bbox": {"l": 136.80002, "t": 222.64679, "r": 535.40131, "b": 231.85979999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "production data based on policy. Just because someone writes and owns the program, it does ", "bbox": {"l": 136.80002, "t": 234.64661, "r": 547.25061, "b": 243.85961999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "not mean that they have access to all the sensitive data that their program can potentially ", "bbox": {"l": 136.80002, "t": 246.64642000000003, "r": 532.39722, "b": 255.85943999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "read.", "bbox": {"l": 136.80002, "t": 258.64624000000003, "r": 159.58949, "b": 267.85925, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 135.80397033691406, "t": 280.05120849609375, "r": 500.55725, "b": 290.4837951660156, "coord_origin": "TOPLEFT"}, "confidence": 0.9292261004447937, "cells": [{"id": 16, "text": "This paper has described the following pervasive power and advantages of RCAC:", "bbox": {"l": 136.80002, "t": 280.60608, "r": 500.55725, "b": 289.81906000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.56689453125, "t": 296.6219787597656, "r": 429.45065, "b": 307.35797119140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9498389363288879, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 297.79504, "r": 141.78001, "b": 306.56982, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Access can be controlled through simple or sophisticated logic.", "bbox": {"l": 151.20018, "t": 297.64566, "r": 429.45065, "b": 306.85864, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.60137939453125, "t": 308.7406311035156, "r": 351.64917, "b": 319.1260070800781, "coord_origin": "TOPLEFT"}, "confidence": 0.942351758480072, "cells": [{"id": 19, "text": "GLYPH", "bbox": {"l": 136.80101, "t": 309.79486, "r": 141.78101, "b": 318.56964, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Virtually no application changes are required.", "bbox": {"l": 151.20117, "t": 309.64548, "r": 351.64917, "b": 318.8584599999999, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.644775390625, "t": 320.5731201171875, "r": 491.77822999999995, "b": 331.0446472167969, "coord_origin": "TOPLEFT"}, "confidence": 0.9509508013725281, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.80101, "t": 321.79468, "r": 141.78101, "b": 330.56946, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "The implementation of the access policy is part of the DB2 data access layer.", "bbox": {"l": 151.20117, "t": 321.64529000000005, "r": 491.77822999999995, "b": 330.85828000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 135.75515747070312, "t": 332.263427734375, "r": 426.24567, "b": 343.17962646484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9367370009422302, "cells": [{"id": 23, "text": "GLYPH", "bbox": {"l": 136.80101, "t": 333.79449, "r": 141.78101, "b": 342.56927, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Table data is protected regardless of the interface that is used.", "bbox": {"l": 151.20117, "t": 333.64511, "r": 426.24567, "b": 342.85809, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 135.80447387695312, "t": 344.1607666015625, "r": 433.24645999999996, "b": 355.1954040527344, "coord_origin": "TOPLEFT"}, "confidence": 0.9496915936470032, "cells": [{"id": 25, "text": "GLYPH", "bbox": {"l": 136.80101, "t": 345.79431, "r": 141.78101, "b": 354.56909, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "No user is inherently exempted from the access control policies.", "bbox": {"l": 151.20117, "t": 345.64493, "r": 433.24645999999996, "b": 354.85791, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "list_item", "bbox": {"l": 135.60531616210938, "t": 356.711669921875, "r": 383.57187, "b": 367.0285339355469, "coord_origin": "TOPLEFT"}, "confidence": 0.9547297358512878, "cells": [{"id": 27, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 357.79413, "r": 141.78099, "b": 366.56891, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Groups of users can share policies and permissions.", "bbox": {"l": 151.20116, "t": 357.64474, "r": 383.57187, "b": 366.85773, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 135.60353088378906, "t": 378.73797607421875, "r": 547.24536, "b": 461.1492614746094, "coord_origin": "TOPLEFT"}, "confidence": 0.9838752746582031, "cells": [{"id": 29, "text": "A deep understanding of the technology, and proper planning, good design, adequate testing, ", "bbox": {"l": 136.80099, "t": 379.60454999999996, "r": 547.24536, "b": 388.81753999999995, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "and monitored deployment are critical for success. This includes the usage of quality ", "bbox": {"l": 136.80099, "t": 391.60437, "r": 512.45325, "b": 400.81735, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "assurance testing, and realistic performance and scalability exercises that serve to ", "bbox": {"l": 136.80099, "t": 403.60419, "r": 503.2384, "b": 412.81717, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "demonstrate that all of your requirements are being met. As part of the verification process, ", "bbox": {"l": 136.802, "t": 415.60400000000004, "r": 541.73065, "b": 424.81699000000003, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "the usage of in-depth proofs of concepts and proofs of technology are recommended, if not ", "bbox": {"l": 136.802, "t": 427.60382, "r": 541.32037, "b": 436.8168, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "essential. When RCAC is activated, the results of queries can change. Anticipating this ", "bbox": {"l": 136.802, "t": 439.60364, "r": 522.3526, "b": 448.81662, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "change and realizing the effects of RCAC before going live are of the utmost importance.", "bbox": {"l": 136.802, "t": 451.60345, "r": 528.17004, "b": 460.81644, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "text", "bbox": {"l": 135.79904174804688, "t": 472.91790771484375, "r": 547.1958, "b": 531.1986694335938, "coord_origin": "TOPLEFT"}, "confidence": 0.9882535934448242, "cells": [{"id": 36, "text": "With the ever-growing value of data, and the vast and varied database technology that is ", "bbox": {"l": 136.802, "t": 473.62302, "r": 529.30786, "b": 482.836, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "available today, it is crucial to have a person or persons on staff who specialize in data-centric ", "bbox": {"l": 136.802, "t": 485.62283, "r": 547.11536, "b": 494.83582, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "design, development, and deployment. This role and responsibility falls on the database ", "bbox": {"l": 136.802, "t": 497.62265, "r": 526.18219, "b": 506.83563, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "engineer. With the availability of DB2 RCAC, the importance of full-time database engineering ", "bbox": {"l": 136.802, "t": 509.62247, "r": 547.1958, "b": 518.83545, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "has grown.", "bbox": {"l": 136.802, "t": 521.62228, "r": 185.39784, "b": 530.83527, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "section_header", "bbox": {"l": 64.42830657958984, "t": 558.0595703125, "r": 324.01276, "b": 574.08372, "coord_origin": "TOPLEFT"}, "confidence": 0.9633642435073853, "cells": [{"id": 41, "text": "8.2", "bbox": {"l": 64.800003, "t": 559.3207199999999, "r": 87.389702, "b": 574.08372, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "DB2 for i Center of Excellence", "bbox": {"l": 91.907631, "t": 559.3207199999999, "r": 324.01276, "b": 574.08372, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "text", "bbox": {"l": 135.96109008789062, "t": 590.4443359375, "r": 533.23181, "b": 649.4010009765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9875909090042114, "cells": [{"id": 43, "text": "To further assist you with understanding and implementing RCAC, the DB2 for i Center of ", "bbox": {"l": 136.8, "t": 591.64862, "r": 532.66528, "b": 600.86162, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Excellence team offers an RCAC education and consulting workshop. In addition to ", "bbox": {"l": 136.8, "t": 603.64842, "r": 506.34979, "b": 612.8614200000001, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "knowledge transfer, a working session allows for a review of your data access control ", "bbox": {"l": 136.8, "t": 615.64822, "r": 514.10956, "b": 624.86122, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "requirements, review of the current environment, solution ideation, and high-level solution ", "bbox": {"l": 136.8, "t": 627.6480300000001, "r": 533.23181, "b": 636.86102, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "design. ", "bbox": {"l": 136.8, "t": 639.64783, "r": 171.82933, "b": 648.86082, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "text", "bbox": {"l": 136.06277465820312, "t": 660.7098999023438, "r": 547.2406, "b": 682.8802000000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9721947908401489, "cells": [{"id": 48, "text": "If you are interested in engaging with the DB2 for i Center of Excellence, contact Mike Cain at ", "bbox": {"l": 136.8, "t": 661.6673900000001, "r": 547.2406, "b": 670.88039, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "mcain@us.ibm.com", "bbox": {"l": 136.8, "t": 673.8166, "r": 216.71902, "b": 682.59136, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": ".", "bbox": {"l": 216.7798, "t": 673.6672, "r": 219.54867999999996, "b": 682.8802000000001, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 135, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.42459869384766, "t": 754.2553100585938, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.930542528629303, "cells": [{"id": 0, "text": "120 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "120"}, {"label": "page_footer", "id": 1, "page_no": 135, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.57987976074219, "t": 754.646240234375, "r": 339.84716796875, "b": 764.02783203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9501276612281799, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "section_header", "id": 2, "page_no": 135, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.5673599243164, "t": 73.4725112915039, "r": 544.55121, "b": 90.01676940917969, "coord_origin": "TOPLEFT"}, "confidence": 0.9646757245063782, "cells": [{"id": 2, "text": "8.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.191185, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Implementing RCAC with good design and proper planning", "bbox": {"l": 91.669403, "t": 74.34069999999997, "r": 544.55121, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, "text": "8.1 Implementing RCAC with good design and proper planning"}, {"label": "text", "id": 3, "page_no": 135, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.9280242919922, "t": 105.88225555419922, "r": 544.7099, "b": 139.82135000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9831311702728271, "cells": [{"id": 4, "text": "By using RCAC, the row and column data that is returned to the requester can be controlled ", "bbox": {"l": 136.8, "t": 106.6087, "r": 544.7099, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "and governed by a set of data-centric policies that are defined with SQL and implemented ", "bbox": {"l": 136.80002, "t": 118.60852, "r": 535.37122, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "within DB2 for i.", "bbox": {"l": 136.80002, "t": 130.60834, "r": 206.53296, "b": 139.82135000000005, "coord_origin": "TOPLEFT"}}]}, "text": "By using RCAC, the row and column data that is returned to the requester can be controlled and governed by a set of data-centric policies that are defined with SQL and implemented within DB2 for i."}, {"label": "text", "id": 4, "page_no": 135, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.055419921875, "t": 151.780517578125, "r": 545.35938, "b": 198.01513671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9863764643669128, "cells": [{"id": 7, "text": "RCAC provides fine-grained access control and is complementary to IBM i object-level ", "bbox": {"l": 136.80002, "t": 152.62793, "r": 520.39148, "b": 161.84094000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "security. With the new RCAC feature of DB2 for i, the database engineer, in partnership with ", "bbox": {"l": 136.80002, "t": 164.62775, "r": 544.76562, "b": 173.84076000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "the data owner and security officer, can ensure that users have access to the data based on ", "bbox": {"l": 136.80002, "t": 176.62756000000002, "r": 545.35938, "b": 185.84058000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "their level of authorization and responsibility.", "bbox": {"l": 136.80002, "t": 188.62738000000002, "r": 332.01102, "b": 197.84038999999996, "coord_origin": "TOPLEFT"}}]}, "text": "RCAC provides fine-grained access control and is complementary to IBM i object-level security. With the new RCAC feature of DB2 for i, the database engineer, in partnership with the data owner and security officer, can ensure that users have access to the data based on their level of authorization and responsibility."}, {"label": "text", "id": 5, "page_no": 135, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.8184356689453, "t": 209.97195434570312, "r": 547.25061, "b": 267.85925, "coord_origin": "TOPLEFT"}, "confidence": 0.988143265247345, "cells": [{"id": 11, "text": "This situation also can include separation of duties, such as allowing the application ", "bbox": {"l": 136.80002, "t": 210.64697, "r": 508.75708, "b": 219.85999000000004, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "developers to design and implement the solutions, but restricting them from accessing the ", "bbox": {"l": 136.80002, "t": 222.64679, "r": 535.40131, "b": 231.85979999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "production data based on policy. Just because someone writes and owns the program, it does ", "bbox": {"l": 136.80002, "t": 234.64661, "r": 547.25061, "b": 243.85961999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "not mean that they have access to all the sensitive data that their program can potentially ", "bbox": {"l": 136.80002, "t": 246.64642000000003, "r": 532.39722, "b": 255.85943999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "read.", "bbox": {"l": 136.80002, "t": 258.64624000000003, "r": 159.58949, "b": 267.85925, "coord_origin": "TOPLEFT"}}]}, "text": "This situation also can include separation of duties, such as allowing the application developers to design and implement the solutions, but restricting them from accessing the production data based on policy. Just because someone writes and owns the program, it does not mean that they have access to all the sensitive data that their program can potentially read."}, {"label": "text", "id": 6, "page_no": 135, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.80397033691406, "t": 280.05120849609375, "r": 500.55725, "b": 290.4837951660156, "coord_origin": "TOPLEFT"}, "confidence": 0.9292261004447937, "cells": [{"id": 16, "text": "This paper has described the following pervasive power and advantages of RCAC:", "bbox": {"l": 136.80002, "t": 280.60608, "r": 500.55725, "b": 289.81906000000004, "coord_origin": "TOPLEFT"}}]}, "text": "This paper has described the following pervasive power and advantages of RCAC:"}, {"label": "list_item", "id": 7, "page_no": 135, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.56689453125, "t": 296.6219787597656, "r": 429.45065, "b": 307.35797119140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9498389363288879, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 297.79504, "r": 141.78001, "b": 306.56982, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Access can be controlled through simple or sophisticated logic.", "bbox": {"l": 151.20018, "t": 297.64566, "r": 429.45065, "b": 306.85864, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Access can be controlled through simple or sophisticated logic."}, {"label": "list_item", "id": 8, "page_no": 135, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.60137939453125, "t": 308.7406311035156, "r": 351.64917, "b": 319.1260070800781, "coord_origin": "TOPLEFT"}, "confidence": 0.942351758480072, "cells": [{"id": 19, "text": "GLYPH", "bbox": {"l": 136.80101, "t": 309.79486, "r": 141.78101, "b": 318.56964, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Virtually no application changes are required.", "bbox": {"l": 151.20117, "t": 309.64548, "r": 351.64917, "b": 318.8584599999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Virtually no application changes are required."}, {"label": "list_item", "id": 9, "page_no": 135, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.644775390625, "t": 320.5731201171875, "r": 491.77822999999995, "b": 331.0446472167969, "coord_origin": "TOPLEFT"}, "confidence": 0.9509508013725281, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.80101, "t": 321.79468, "r": 141.78101, "b": 330.56946, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "The implementation of the access policy is part of the DB2 data access layer.", "bbox": {"l": 151.20117, "t": 321.64529000000005, "r": 491.77822999999995, "b": 330.85828000000004, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The implementation of the access policy is part of the DB2 data access layer."}, {"label": "list_item", "id": 10, "page_no": 135, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.75515747070312, "t": 332.263427734375, "r": 426.24567, "b": 343.17962646484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9367370009422302, "cells": [{"id": 23, "text": "GLYPH", "bbox": {"l": 136.80101, "t": 333.79449, "r": 141.78101, "b": 342.56927, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Table data is protected regardless of the interface that is used.", "bbox": {"l": 151.20117, "t": 333.64511, "r": 426.24567, "b": 342.85809, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Table data is protected regardless of the interface that is used."}, {"label": "list_item", "id": 11, "page_no": 135, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.80447387695312, "t": 344.1607666015625, "r": 433.24645999999996, "b": 355.1954040527344, "coord_origin": "TOPLEFT"}, "confidence": 0.9496915936470032, "cells": [{"id": 25, "text": "GLYPH", "bbox": {"l": 136.80101, "t": 345.79431, "r": 141.78101, "b": 354.56909, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "No user is inherently exempted from the access control policies.", "bbox": {"l": 151.20117, "t": 345.64493, "r": 433.24645999999996, "b": 354.85791, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH No user is inherently exempted from the access control policies."}, {"label": "list_item", "id": 12, "page_no": 135, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 135.60531616210938, "t": 356.711669921875, "r": 383.57187, "b": 367.0285339355469, "coord_origin": "TOPLEFT"}, "confidence": 0.9547297358512878, "cells": [{"id": 27, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 357.79413, "r": 141.78099, "b": 366.56891, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Groups of users can share policies and permissions.", "bbox": {"l": 151.20116, "t": 357.64474, "r": 383.57187, "b": 366.85773, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Groups of users can share policies and permissions."}, {"label": "text", "id": 13, "page_no": 135, "cluster": {"id": 13, "label": "text", "bbox": {"l": 135.60353088378906, "t": 378.73797607421875, "r": 547.24536, "b": 461.1492614746094, "coord_origin": "TOPLEFT"}, "confidence": 0.9838752746582031, "cells": [{"id": 29, "text": "A deep understanding of the technology, and proper planning, good design, adequate testing, ", "bbox": {"l": 136.80099, "t": 379.60454999999996, "r": 547.24536, "b": 388.81753999999995, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "and monitored deployment are critical for success. This includes the usage of quality ", "bbox": {"l": 136.80099, "t": 391.60437, "r": 512.45325, "b": 400.81735, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "assurance testing, and realistic performance and scalability exercises that serve to ", "bbox": {"l": 136.80099, "t": 403.60419, "r": 503.2384, "b": 412.81717, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "demonstrate that all of your requirements are being met. As part of the verification process, ", "bbox": {"l": 136.802, "t": 415.60400000000004, "r": 541.73065, "b": 424.81699000000003, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "the usage of in-depth proofs of concepts and proofs of technology are recommended, if not ", "bbox": {"l": 136.802, "t": 427.60382, "r": 541.32037, "b": 436.8168, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "essential. When RCAC is activated, the results of queries can change. Anticipating this ", "bbox": {"l": 136.802, "t": 439.60364, "r": 522.3526, "b": 448.81662, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "change and realizing the effects of RCAC before going live are of the utmost importance.", "bbox": {"l": 136.802, "t": 451.60345, "r": 528.17004, "b": 460.81644, "coord_origin": "TOPLEFT"}}]}, "text": "A deep understanding of the technology, and proper planning, good design, adequate testing, and monitored deployment are critical for success. This includes the usage of quality assurance testing, and realistic performance and scalability exercises that serve to demonstrate that all of your requirements are being met. As part of the verification process, the usage of in-depth proofs of concepts and proofs of technology are recommended, if not essential. When RCAC is activated, the results of queries can change. Anticipating this change and realizing the effects of RCAC before going live are of the utmost importance."}, {"label": "text", "id": 14, "page_no": 135, "cluster": {"id": 14, "label": "text", "bbox": {"l": 135.79904174804688, "t": 472.91790771484375, "r": 547.1958, "b": 531.1986694335938, "coord_origin": "TOPLEFT"}, "confidence": 0.9882535934448242, "cells": [{"id": 36, "text": "With the ever-growing value of data, and the vast and varied database technology that is ", "bbox": {"l": 136.802, "t": 473.62302, "r": 529.30786, "b": 482.836, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "available today, it is crucial to have a person or persons on staff who specialize in data-centric ", "bbox": {"l": 136.802, "t": 485.62283, "r": 547.11536, "b": 494.83582, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "design, development, and deployment. This role and responsibility falls on the database ", "bbox": {"l": 136.802, "t": 497.62265, "r": 526.18219, "b": 506.83563, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "engineer. With the availability of DB2 RCAC, the importance of full-time database engineering ", "bbox": {"l": 136.802, "t": 509.62247, "r": 547.1958, "b": 518.83545, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "has grown.", "bbox": {"l": 136.802, "t": 521.62228, "r": 185.39784, "b": 530.83527, "coord_origin": "TOPLEFT"}}]}, "text": "With the ever-growing value of data, and the vast and varied database technology that is available today, it is crucial to have a person or persons on staff who specialize in data-centric design, development, and deployment. This role and responsibility falls on the database engineer. With the availability of DB2 RCAC, the importance of full-time database engineering has grown."}, {"label": "section_header", "id": 15, "page_no": 135, "cluster": {"id": 15, "label": "section_header", "bbox": {"l": 64.42830657958984, "t": 558.0595703125, "r": 324.01276, "b": 574.08372, "coord_origin": "TOPLEFT"}, "confidence": 0.9633642435073853, "cells": [{"id": 41, "text": "8.2", "bbox": {"l": 64.800003, "t": 559.3207199999999, "r": 87.389702, "b": 574.08372, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "DB2 for i Center of Excellence", "bbox": {"l": 91.907631, "t": 559.3207199999999, "r": 324.01276, "b": 574.08372, "coord_origin": "TOPLEFT"}}]}, "text": "8.2 DB2 for i Center of Excellence"}, {"label": "text", "id": 16, "page_no": 135, "cluster": {"id": 16, "label": "text", "bbox": {"l": 135.96109008789062, "t": 590.4443359375, "r": 533.23181, "b": 649.4010009765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9875909090042114, "cells": [{"id": 43, "text": "To further assist you with understanding and implementing RCAC, the DB2 for i Center of ", "bbox": {"l": 136.8, "t": 591.64862, "r": 532.66528, "b": 600.86162, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Excellence team offers an RCAC education and consulting workshop. In addition to ", "bbox": {"l": 136.8, "t": 603.64842, "r": 506.34979, "b": 612.8614200000001, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "knowledge transfer, a working session allows for a review of your data access control ", "bbox": {"l": 136.8, "t": 615.64822, "r": 514.10956, "b": 624.86122, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "requirements, review of the current environment, solution ideation, and high-level solution ", "bbox": {"l": 136.8, "t": 627.6480300000001, "r": 533.23181, "b": 636.86102, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "design. ", "bbox": {"l": 136.8, "t": 639.64783, "r": 171.82933, "b": 648.86082, "coord_origin": "TOPLEFT"}}]}, "text": "To further assist you with understanding and implementing RCAC, the DB2 for i Center of Excellence team offers an RCAC education and consulting workshop. In addition to knowledge transfer, a working session allows for a review of your data access control requirements, review of the current environment, solution ideation, and high-level solution design."}, {"label": "text", "id": 17, "page_no": 135, "cluster": {"id": 17, "label": "text", "bbox": {"l": 136.06277465820312, "t": 660.7098999023438, "r": 547.2406, "b": 682.8802000000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9721947908401489, "cells": [{"id": 48, "text": "If you are interested in engaging with the DB2 for i Center of Excellence, contact Mike Cain at ", "bbox": {"l": 136.8, "t": 661.6673900000001, "r": 547.2406, "b": 670.88039, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "mcain@us.ibm.com", "bbox": {"l": 136.8, "t": 673.8166, "r": 216.71902, "b": 682.59136, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": ".", "bbox": {"l": 216.7798, "t": 673.6672, "r": 219.54867999999996, "b": 682.8802000000001, "coord_origin": "TOPLEFT"}}]}, "text": "If you are interested in engaging with the DB2 for i Center of Excellence, contact Mike Cain at mcain@us.ibm.com ."}], "body": [{"label": "section_header", "id": 2, "page_no": 135, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.5673599243164, "t": 73.4725112915039, "r": 544.55121, "b": 90.01676940917969, "coord_origin": "TOPLEFT"}, "confidence": 0.9646757245063782, "cells": [{"id": 2, "text": "8.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.191185, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Implementing RCAC with good design and proper planning", "bbox": {"l": 91.669403, "t": 74.34069999999997, "r": 544.55121, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, "text": "8.1 Implementing RCAC with good design and proper planning"}, {"label": "text", "id": 3, "page_no": 135, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.9280242919922, "t": 105.88225555419922, "r": 544.7099, "b": 139.82135000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9831311702728271, "cells": [{"id": 4, "text": "By using RCAC, the row and column data that is returned to the requester can be controlled ", "bbox": {"l": 136.8, "t": 106.6087, "r": 544.7099, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "and governed by a set of data-centric policies that are defined with SQL and implemented ", "bbox": {"l": 136.80002, "t": 118.60852, "r": 535.37122, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "within DB2 for i.", "bbox": {"l": 136.80002, "t": 130.60834, "r": 206.53296, "b": 139.82135000000005, "coord_origin": "TOPLEFT"}}]}, "text": "By using RCAC, the row and column data that is returned to the requester can be controlled and governed by a set of data-centric policies that are defined with SQL and implemented within DB2 for i."}, {"label": "text", "id": 4, "page_no": 135, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.055419921875, "t": 151.780517578125, "r": 545.35938, "b": 198.01513671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9863764643669128, "cells": [{"id": 7, "text": "RCAC provides fine-grained access control and is complementary to IBM i object-level ", "bbox": {"l": 136.80002, "t": 152.62793, "r": 520.39148, "b": 161.84094000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "security. With the new RCAC feature of DB2 for i, the database engineer, in partnership with ", "bbox": {"l": 136.80002, "t": 164.62775, "r": 544.76562, "b": 173.84076000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "the data owner and security officer, can ensure that users have access to the data based on ", "bbox": {"l": 136.80002, "t": 176.62756000000002, "r": 545.35938, "b": 185.84058000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "their level of authorization and responsibility.", "bbox": {"l": 136.80002, "t": 188.62738000000002, "r": 332.01102, "b": 197.84038999999996, "coord_origin": "TOPLEFT"}}]}, "text": "RCAC provides fine-grained access control and is complementary to IBM i object-level security. With the new RCAC feature of DB2 for i, the database engineer, in partnership with the data owner and security officer, can ensure that users have access to the data based on their level of authorization and responsibility."}, {"label": "text", "id": 5, "page_no": 135, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.8184356689453, "t": 209.97195434570312, "r": 547.25061, "b": 267.85925, "coord_origin": "TOPLEFT"}, "confidence": 0.988143265247345, "cells": [{"id": 11, "text": "This situation also can include separation of duties, such as allowing the application ", "bbox": {"l": 136.80002, "t": 210.64697, "r": 508.75708, "b": 219.85999000000004, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "developers to design and implement the solutions, but restricting them from accessing the ", "bbox": {"l": 136.80002, "t": 222.64679, "r": 535.40131, "b": 231.85979999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "production data based on policy. Just because someone writes and owns the program, it does ", "bbox": {"l": 136.80002, "t": 234.64661, "r": 547.25061, "b": 243.85961999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "not mean that they have access to all the sensitive data that their program can potentially ", "bbox": {"l": 136.80002, "t": 246.64642000000003, "r": 532.39722, "b": 255.85943999999995, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "read.", "bbox": {"l": 136.80002, "t": 258.64624000000003, "r": 159.58949, "b": 267.85925, "coord_origin": "TOPLEFT"}}]}, "text": "This situation also can include separation of duties, such as allowing the application developers to design and implement the solutions, but restricting them from accessing the production data based on policy. Just because someone writes and owns the program, it does not mean that they have access to all the sensitive data that their program can potentially read."}, {"label": "text", "id": 6, "page_no": 135, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.80397033691406, "t": 280.05120849609375, "r": 500.55725, "b": 290.4837951660156, "coord_origin": "TOPLEFT"}, "confidence": 0.9292261004447937, "cells": [{"id": 16, "text": "This paper has described the following pervasive power and advantages of RCAC:", "bbox": {"l": 136.80002, "t": 280.60608, "r": 500.55725, "b": 289.81906000000004, "coord_origin": "TOPLEFT"}}]}, "text": "This paper has described the following pervasive power and advantages of RCAC:"}, {"label": "list_item", "id": 7, "page_no": 135, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.56689453125, "t": 296.6219787597656, "r": 429.45065, "b": 307.35797119140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9498389363288879, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 297.79504, "r": 141.78001, "b": 306.56982, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Access can be controlled through simple or sophisticated logic.", "bbox": {"l": 151.20018, "t": 297.64566, "r": 429.45065, "b": 306.85864, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Access can be controlled through simple or sophisticated logic."}, {"label": "list_item", "id": 8, "page_no": 135, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.60137939453125, "t": 308.7406311035156, "r": 351.64917, "b": 319.1260070800781, "coord_origin": "TOPLEFT"}, "confidence": 0.942351758480072, "cells": [{"id": 19, "text": "GLYPH", "bbox": {"l": 136.80101, "t": 309.79486, "r": 141.78101, "b": 318.56964, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Virtually no application changes are required.", "bbox": {"l": 151.20117, "t": 309.64548, "r": 351.64917, "b": 318.8584599999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Virtually no application changes are required."}, {"label": "list_item", "id": 9, "page_no": 135, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.644775390625, "t": 320.5731201171875, "r": 491.77822999999995, "b": 331.0446472167969, "coord_origin": "TOPLEFT"}, "confidence": 0.9509508013725281, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.80101, "t": 321.79468, "r": 141.78101, "b": 330.56946, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "The implementation of the access policy is part of the DB2 data access layer.", "bbox": {"l": 151.20117, "t": 321.64529000000005, "r": 491.77822999999995, "b": 330.85828000000004, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The implementation of the access policy is part of the DB2 data access layer."}, {"label": "list_item", "id": 10, "page_no": 135, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.75515747070312, "t": 332.263427734375, "r": 426.24567, "b": 343.17962646484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9367370009422302, "cells": [{"id": 23, "text": "GLYPH", "bbox": {"l": 136.80101, "t": 333.79449, "r": 141.78101, "b": 342.56927, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Table data is protected regardless of the interface that is used.", "bbox": {"l": 151.20117, "t": 333.64511, "r": 426.24567, "b": 342.85809, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Table data is protected regardless of the interface that is used."}, {"label": "list_item", "id": 11, "page_no": 135, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.80447387695312, "t": 344.1607666015625, "r": 433.24645999999996, "b": 355.1954040527344, "coord_origin": "TOPLEFT"}, "confidence": 0.9496915936470032, "cells": [{"id": 25, "text": "GLYPH", "bbox": {"l": 136.80101, "t": 345.79431, "r": 141.78101, "b": 354.56909, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "No user is inherently exempted from the access control policies.", "bbox": {"l": 151.20117, "t": 345.64493, "r": 433.24645999999996, "b": 354.85791, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH No user is inherently exempted from the access control policies."}, {"label": "list_item", "id": 12, "page_no": 135, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 135.60531616210938, "t": 356.711669921875, "r": 383.57187, "b": 367.0285339355469, "coord_origin": "TOPLEFT"}, "confidence": 0.9547297358512878, "cells": [{"id": 27, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 357.79413, "r": 141.78099, "b": 366.56891, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Groups of users can share policies and permissions.", "bbox": {"l": 151.20116, "t": 357.64474, "r": 383.57187, "b": 366.85773, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Groups of users can share policies and permissions."}, {"label": "text", "id": 13, "page_no": 135, "cluster": {"id": 13, "label": "text", "bbox": {"l": 135.60353088378906, "t": 378.73797607421875, "r": 547.24536, "b": 461.1492614746094, "coord_origin": "TOPLEFT"}, "confidence": 0.9838752746582031, "cells": [{"id": 29, "text": "A deep understanding of the technology, and proper planning, good design, adequate testing, ", "bbox": {"l": 136.80099, "t": 379.60454999999996, "r": 547.24536, "b": 388.81753999999995, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "and monitored deployment are critical for success. This includes the usage of quality ", "bbox": {"l": 136.80099, "t": 391.60437, "r": 512.45325, "b": 400.81735, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "assurance testing, and realistic performance and scalability exercises that serve to ", "bbox": {"l": 136.80099, "t": 403.60419, "r": 503.2384, "b": 412.81717, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "demonstrate that all of your requirements are being met. As part of the verification process, ", "bbox": {"l": 136.802, "t": 415.60400000000004, "r": 541.73065, "b": 424.81699000000003, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "the usage of in-depth proofs of concepts and proofs of technology are recommended, if not ", "bbox": {"l": 136.802, "t": 427.60382, "r": 541.32037, "b": 436.8168, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "essential. When RCAC is activated, the results of queries can change. Anticipating this ", "bbox": {"l": 136.802, "t": 439.60364, "r": 522.3526, "b": 448.81662, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "change and realizing the effects of RCAC before going live are of the utmost importance.", "bbox": {"l": 136.802, "t": 451.60345, "r": 528.17004, "b": 460.81644, "coord_origin": "TOPLEFT"}}]}, "text": "A deep understanding of the technology, and proper planning, good design, adequate testing, and monitored deployment are critical for success. This includes the usage of quality assurance testing, and realistic performance and scalability exercises that serve to demonstrate that all of your requirements are being met. As part of the verification process, the usage of in-depth proofs of concepts and proofs of technology are recommended, if not essential. When RCAC is activated, the results of queries can change. Anticipating this change and realizing the effects of RCAC before going live are of the utmost importance."}, {"label": "text", "id": 14, "page_no": 135, "cluster": {"id": 14, "label": "text", "bbox": {"l": 135.79904174804688, "t": 472.91790771484375, "r": 547.1958, "b": 531.1986694335938, "coord_origin": "TOPLEFT"}, "confidence": 0.9882535934448242, "cells": [{"id": 36, "text": "With the ever-growing value of data, and the vast and varied database technology that is ", "bbox": {"l": 136.802, "t": 473.62302, "r": 529.30786, "b": 482.836, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "available today, it is crucial to have a person or persons on staff who specialize in data-centric ", "bbox": {"l": 136.802, "t": 485.62283, "r": 547.11536, "b": 494.83582, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "design, development, and deployment. This role and responsibility falls on the database ", "bbox": {"l": 136.802, "t": 497.62265, "r": 526.18219, "b": 506.83563, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "engineer. With the availability of DB2 RCAC, the importance of full-time database engineering ", "bbox": {"l": 136.802, "t": 509.62247, "r": 547.1958, "b": 518.83545, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "has grown.", "bbox": {"l": 136.802, "t": 521.62228, "r": 185.39784, "b": 530.83527, "coord_origin": "TOPLEFT"}}]}, "text": "With the ever-growing value of data, and the vast and varied database technology that is available today, it is crucial to have a person or persons on staff who specialize in data-centric design, development, and deployment. This role and responsibility falls on the database engineer. With the availability of DB2 RCAC, the importance of full-time database engineering has grown."}, {"label": "section_header", "id": 15, "page_no": 135, "cluster": {"id": 15, "label": "section_header", "bbox": {"l": 64.42830657958984, "t": 558.0595703125, "r": 324.01276, "b": 574.08372, "coord_origin": "TOPLEFT"}, "confidence": 0.9633642435073853, "cells": [{"id": 41, "text": "8.2", "bbox": {"l": 64.800003, "t": 559.3207199999999, "r": 87.389702, "b": 574.08372, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "DB2 for i Center of Excellence", "bbox": {"l": 91.907631, "t": 559.3207199999999, "r": 324.01276, "b": 574.08372, "coord_origin": "TOPLEFT"}}]}, "text": "8.2 DB2 for i Center of Excellence"}, {"label": "text", "id": 16, "page_no": 135, "cluster": {"id": 16, "label": "text", "bbox": {"l": 135.96109008789062, "t": 590.4443359375, "r": 533.23181, "b": 649.4010009765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9875909090042114, "cells": [{"id": 43, "text": "To further assist you with understanding and implementing RCAC, the DB2 for i Center of ", "bbox": {"l": 136.8, "t": 591.64862, "r": 532.66528, "b": 600.86162, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Excellence team offers an RCAC education and consulting workshop. In addition to ", "bbox": {"l": 136.8, "t": 603.64842, "r": 506.34979, "b": 612.8614200000001, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "knowledge transfer, a working session allows for a review of your data access control ", "bbox": {"l": 136.8, "t": 615.64822, "r": 514.10956, "b": 624.86122, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "requirements, review of the current environment, solution ideation, and high-level solution ", "bbox": {"l": 136.8, "t": 627.6480300000001, "r": 533.23181, "b": 636.86102, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "design. ", "bbox": {"l": 136.8, "t": 639.64783, "r": 171.82933, "b": 648.86082, "coord_origin": "TOPLEFT"}}]}, "text": "To further assist you with understanding and implementing RCAC, the DB2 for i Center of Excellence team offers an RCAC education and consulting workshop. In addition to knowledge transfer, a working session allows for a review of your data access control requirements, review of the current environment, solution ideation, and high-level solution design."}, {"label": "text", "id": 17, "page_no": 135, "cluster": {"id": 17, "label": "text", "bbox": {"l": 136.06277465820312, "t": 660.7098999023438, "r": 547.2406, "b": 682.8802000000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9721947908401489, "cells": [{"id": 48, "text": "If you are interested in engaging with the DB2 for i Center of Excellence, contact Mike Cain at ", "bbox": {"l": 136.8, "t": 661.6673900000001, "r": 547.2406, "b": 670.88039, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "mcain@us.ibm.com", "bbox": {"l": 136.8, "t": 673.8166, "r": 216.71902, "b": 682.59136, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": ".", "bbox": {"l": 216.7798, "t": 673.6672, "r": 219.54867999999996, "b": 682.8802000000001, "coord_origin": "TOPLEFT"}}]}, "text": "If you are interested in engaging with the DB2 for i Center of Excellence, contact Mike Cain at mcain@us.ibm.com ."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 135, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.42459869384766, "t": 754.2553100585938, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.930542528629303, "cells": [{"id": 0, "text": "120 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "120"}, {"label": "page_footer", "id": 1, "page_no": 135, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.57987976074219, "t": 754.646240234375, "r": 339.84716796875, "b": 764.02783203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9501276612281799, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 136, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "121", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Appendix A.", "bbox": {"l": 74.400002, "t": 268.54272000000003, "r": 115.15289, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Database definitions for the ", "bbox": {"l": 136.8, "t": 254.88635, "r": 485.79715000000004, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "RCAC banking example", "bbox": {"l": 136.8, "t": 285.84671, "r": 428.4878499999999, "b": 309.8782, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "This appendix provides the database definitions or DDLs to re-create the Row and Column ", "bbox": {"l": 136.8, "t": 348.70871, "r": 539.84735, "b": 357.92169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Access Control (RCAC) scenario that is described in Chapter 4, \u201cImplementing Row and ", "bbox": {"l": 136.8, "t": 360.70853, "r": 528.8894, "b": 369.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Column Access Control: Banking example\u201d on page 37. The script that is shown in ", "bbox": {"l": 136.8, "t": 372.7083400000001, "r": 503.20746, "b": 381.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Example A-1 is the DDL script that is used to implement this example.", "bbox": {"l": 136.8, "t": 384.70816, "r": 445.51532, "b": 393.92114, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Example A-1 DDL script to implement the RCAC banking example", "bbox": {"l": 64.800003, "t": 406.75800000000004, "r": 332.5787, "b": 415.08301, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "/* Database Definitions for RCAC Bank Scenario */", "bbox": {"l": 64.800003, "t": 423.87332, "r": 284.99847, "b": 431.80231000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "/* Schema */", "bbox": {"l": 64.800003, "t": 434.85333, "r": 118.7397, "b": 442.78232, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CREATE SCHEMA BANK_SCHEMA FOR SCHEMA BANKSCHEMA ; ", "bbox": {"l": 64.800003, "t": 445.89365, "r": 289.49847, "b": 453.82263000000006, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "/* Global Variable */", "bbox": {"l": 64.800003, "t": 467.85364, "r": 159.1794, "b": 475.78262, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "CREATE VARIABLE BANK_SCHEMA.CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800003, "t": 478.89395, "r": 271.49847, "b": 486.82294, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "VARCHAR( 30) ; ", "bbox": {"l": 79.200005, "t": 489.87396, "r": 146.57941, "b": 497.80295, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "LABEL ON VARIABLE BANK_SCHEMA.CUSTOMER_LOGIN_ID IS 'Customer''s log in value passed by web application' ; ", "bbox": {"l": 64.800003, "t": 511.89426, "r": 541.13666, "b": 519.8232399999999, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "/* Tables */", "bbox": {"l": 64.800003, "t": 533.85425, "r": 118.7397, "b": 541.78326, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "CREATE TABLE BANK_SCHEMA.CUSTOMERS ( ", "bbox": {"l": 64.800003, "t": 555.8745700000001, "r": 231.05878999999996, "b": 563.80357, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "CUSTOMER_ID FOR COLUMN CUSTO00001 INTEGER GENERATED ALWAYS AS IDENTITY ( ", "bbox": {"l": 79.200005, "t": 566.85457, "r": 407.21759, "b": 574.78357, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "START WITH 1 INCREMENT BY 1 ", "bbox": {"l": 79.200005, "t": 577.89487, "r": 205.0191, "b": 585.8238699999999, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "NO MINVALUE NO MAXVALUE ", "bbox": {"l": 79.200005, "t": 588.87486, "r": 187.0191, "b": 596.80386, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "NO CYCLE NO ORDER ", "bbox": {"l": 79.200005, "t": 599.85486, "r": 160.07941, "b": 607.78386, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "CACHE 20 ), ", "bbox": {"l": 79.200005, "t": 610.89516, "r": 133.13971, "b": 618.82416, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "CUSTOMER_NAME FOR COLUMN CUSTO00002 VARCHAR(30) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 621.87515, "r": 384.77789, "b": 629.8041499999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "CUSTOMER_ADDRESS FOR COLUMN CUSTO00003 VARCHAR(30) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 632.85515, "r": 398.27789, "b": 640.78415, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "CUSTOMER_CITY FOR COLUMN CUSTO00004 VARCHAR(30) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 643.89545, "r": 384.77789, "b": 651.8244500000001, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "CUSTOMER_STATE FOR COLUMN CUSTO00005 CHAR(2) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 654.87544, "r": 371.27789, "b": 662.80444, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "CUSTOMER_PHONE FOR COLUMN CUSTO00006 CHAR(10) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 665.85544, "r": 375.77789, "b": 673.78444, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "CUSTOMER_EMAIL FOR COLUMN CUSTO00007 VARCHAR(30) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 676.89574, "r": 389.27789, "b": 684.82474, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CUSTOMER_TAX_ID FOR COLUMN CUSTO00008 CHAR(11) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 687.87574, "r": 380.27789, "b": 695.804741, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER FOR COLUMN CUSTO00012 CHAR(13) CCSID 37 DEFAULT NULL , ", "bbox": {"l": 79.200005, "t": 698.916039, "r": 470.15729, "b": 706.845039, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CUSTOMER_LOGIN_ID FOR COLUMN CUSTO00009 VARCHAR(30) CCSID 37 DEFAULT NULL , ", "bbox": {"l": 79.200005, "t": 709.896042, "r": 420.71759, "b": 717.825043, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "CUSTOMER_SECURITY_QUESTION FOR COLUMN CUSTO00010 VARCHAR(100) CCSID 37 DEFAULT NULL , ", "bbox": {"l": 79.200005, "t": 720.876045, "r": 465.65729, "b": 728.80505, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "A", "bbox": {"l": 497.03989, "t": 93.16870000000006, "r": 525.89099, "b": 130.13171, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.67854309082031, "t": 754.6529541015625, "r": 257.24335, "b": 764.1146850585938, "coord_origin": "TOPLEFT"}, "confidence": 0.9381327033042908, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 530.0882568359375, "t": 754.2919311523438, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9215134382247925, "cells": [{"id": 1, "text": "121", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 74.400002, "t": 268.54272000000003, "r": 115.15289, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Appendix A.", "bbox": {"l": 74.400002, "t": 268.54272000000003, "r": 115.15289, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "section_header", "bbox": {"l": 136.8, "t": 253.2744140625, "r": 485.79715000000004, "b": 310.868896484375, "coord_origin": "TOPLEFT"}, "confidence": 0.931329607963562, "cells": [{"id": 3, "text": "Database definitions for the ", "bbox": {"l": 136.8, "t": 254.88635, "r": 485.79715000000004, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "RCAC banking example", "bbox": {"l": 136.8, "t": 285.84671, "r": 428.4878499999999, "b": 309.8782, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.599853515625, "t": 347.8815612792969, "r": 539.84735, "b": 394.2618408203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9735324382781982, "cells": [{"id": 5, "text": "This appendix provides the database definitions or DDLs to re-create the Row and Column ", "bbox": {"l": 136.8, "t": 348.70871, "r": 539.84735, "b": 357.92169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Access Control (RCAC) scenario that is described in Chapter 4, \u201cImplementing Row and ", "bbox": {"l": 136.8, "t": 360.70853, "r": 528.8894, "b": 369.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Column Access Control: Banking example\u201d on page 37. The script that is shown in ", "bbox": {"l": 136.8, "t": 372.7083400000001, "r": 503.20746, "b": 381.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Example A-1 is the DDL script that is used to implement this example.", "bbox": {"l": 136.8, "t": 384.70816, "r": 445.51532, "b": 393.92114, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 64.52754211425781, "t": 405.9345397949219, "r": 332.9858703613281, "b": 415.5800476074219, "coord_origin": "TOPLEFT"}, "confidence": 0.7840588688850403, "cells": [{"id": 9, "text": "Example A-1 DDL script to implement the RCAC banking example", "bbox": {"l": 64.800003, "t": 406.75800000000004, "r": 332.5787, "b": 415.08301, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "code", "bbox": {"l": 62.520992279052734, "t": 420.8819580078125, "r": 541.13666, "b": 730.4379272460938, "coord_origin": "TOPLEFT"}, "confidence": 0.8016359806060791, "cells": [{"id": 10, "text": "/* Database Definitions for RCAC Bank Scenario */", "bbox": {"l": 64.800003, "t": 423.87332, "r": 284.99847, "b": 431.80231000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "/* Schema */", "bbox": {"l": 64.800003, "t": 434.85333, "r": 118.7397, "b": 442.78232, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CREATE SCHEMA BANK_SCHEMA FOR SCHEMA BANKSCHEMA ; ", "bbox": {"l": 64.800003, "t": 445.89365, "r": 289.49847, "b": 453.82263000000006, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "/* Global Variable */", "bbox": {"l": 64.800003, "t": 467.85364, "r": 159.1794, "b": 475.78262, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "CREATE VARIABLE BANK_SCHEMA.CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800003, "t": 478.89395, "r": 271.49847, "b": 486.82294, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "VARCHAR( 30) ; ", "bbox": {"l": 79.200005, "t": 489.87396, "r": 146.57941, "b": 497.80295, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "LABEL ON VARIABLE BANK_SCHEMA.CUSTOMER_LOGIN_ID IS 'Customer''s log in value passed by web application' ; ", "bbox": {"l": 64.800003, "t": 511.89426, "r": 541.13666, "b": 519.8232399999999, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "/* Tables */", "bbox": {"l": 64.800003, "t": 533.85425, "r": 118.7397, "b": 541.78326, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "CREATE TABLE BANK_SCHEMA.CUSTOMERS ( ", "bbox": {"l": 64.800003, "t": 555.8745700000001, "r": 231.05878999999996, "b": 563.80357, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "CUSTOMER_ID FOR COLUMN CUSTO00001 INTEGER GENERATED ALWAYS AS IDENTITY ( ", "bbox": {"l": 79.200005, "t": 566.85457, "r": 407.21759, "b": 574.78357, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "START WITH 1 INCREMENT BY 1 ", "bbox": {"l": 79.200005, "t": 577.89487, "r": 205.0191, "b": 585.8238699999999, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "NO MINVALUE NO MAXVALUE ", "bbox": {"l": 79.200005, "t": 588.87486, "r": 187.0191, "b": 596.80386, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "NO CYCLE NO ORDER ", "bbox": {"l": 79.200005, "t": 599.85486, "r": 160.07941, "b": 607.78386, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "CACHE 20 ), ", "bbox": {"l": 79.200005, "t": 610.89516, "r": 133.13971, "b": 618.82416, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "CUSTOMER_NAME FOR COLUMN CUSTO00002 VARCHAR(30) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 621.87515, "r": 384.77789, "b": 629.8041499999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "CUSTOMER_ADDRESS FOR COLUMN CUSTO00003 VARCHAR(30) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 632.85515, "r": 398.27789, "b": 640.78415, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "CUSTOMER_CITY FOR COLUMN CUSTO00004 VARCHAR(30) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 643.89545, "r": 384.77789, "b": 651.8244500000001, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "CUSTOMER_STATE FOR COLUMN CUSTO00005 CHAR(2) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 654.87544, "r": 371.27789, "b": 662.80444, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "CUSTOMER_PHONE FOR COLUMN CUSTO00006 CHAR(10) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 665.85544, "r": 375.77789, "b": 673.78444, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "CUSTOMER_EMAIL FOR COLUMN CUSTO00007 VARCHAR(30) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 676.89574, "r": 389.27789, "b": 684.82474, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CUSTOMER_TAX_ID FOR COLUMN CUSTO00008 CHAR(11) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 687.87574, "r": 380.27789, "b": 695.804741, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER FOR COLUMN CUSTO00012 CHAR(13) CCSID 37 DEFAULT NULL , ", "bbox": {"l": 79.200005, "t": 698.916039, "r": 470.15729, "b": 706.845039, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CUSTOMER_LOGIN_ID FOR COLUMN CUSTO00009 VARCHAR(30) CCSID 37 DEFAULT NULL , ", "bbox": {"l": 79.200005, "t": 709.896042, "r": 420.71759, "b": 717.825043, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "CUSTOMER_SECURITY_QUESTION FOR COLUMN CUSTO00010 VARCHAR(100) CCSID 37 DEFAULT NULL , ", "bbox": {"l": 79.200005, "t": 720.876045, "r": 465.65729, "b": 728.80505, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 496.9212951660156, "t": 92.56521606445312, "r": 526.1300659179688, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.6984182596206665, "cells": [{"id": 34, "text": "A", "bbox": {"l": 497.03989, "t": 93.16870000000006, "r": 525.89099, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 31.834123611450195, "t": 70.96026611328125, "r": 238.2196044921875, "b": 238.40943908691406, "coord_origin": "TOPLEFT"}, "confidence": 0.6705455780029297, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 136, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.67854309082031, "t": 754.6529541015625, "r": 257.24335, "b": 764.1146850585938, "coord_origin": "TOPLEFT"}, "confidence": 0.9381327033042908, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 136, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.0882568359375, "t": 754.2919311523438, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9215134382247925, "cells": [{"id": 1, "text": "121", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "121"}, {"label": "text", "id": 2, "page_no": 136, "cluster": {"id": 2, "label": "text", "bbox": {"l": 74.400002, "t": 268.54272000000003, "r": 115.15289, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Appendix A.", "bbox": {"l": 74.400002, "t": 268.54272000000003, "r": 115.15289, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Appendix A."}, {"label": "section_header", "id": 3, "page_no": 136, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 136.8, "t": 253.2744140625, "r": 485.79715000000004, "b": 310.868896484375, "coord_origin": "TOPLEFT"}, "confidence": 0.931329607963562, "cells": [{"id": 3, "text": "Database definitions for the ", "bbox": {"l": 136.8, "t": 254.88635, "r": 485.79715000000004, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "RCAC banking example", "bbox": {"l": 136.8, "t": 285.84671, "r": 428.4878499999999, "b": 309.8782, "coord_origin": "TOPLEFT"}}]}, "text": "Database definitions for the RCAC banking example"}, {"label": "text", "id": 4, "page_no": 136, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.599853515625, "t": 347.8815612792969, "r": 539.84735, "b": 394.2618408203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9735324382781982, "cells": [{"id": 5, "text": "This appendix provides the database definitions or DDLs to re-create the Row and Column ", "bbox": {"l": 136.8, "t": 348.70871, "r": 539.84735, "b": 357.92169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Access Control (RCAC) scenario that is described in Chapter 4, \u201cImplementing Row and ", "bbox": {"l": 136.8, "t": 360.70853, "r": 528.8894, "b": 369.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Column Access Control: Banking example\u201d on page 37. The script that is shown in ", "bbox": {"l": 136.8, "t": 372.7083400000001, "r": 503.20746, "b": 381.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Example A-1 is the DDL script that is used to implement this example.", "bbox": {"l": 136.8, "t": 384.70816, "r": 445.51532, "b": 393.92114, "coord_origin": "TOPLEFT"}}]}, "text": "This appendix provides the database definitions or DDLs to re-create the Row and Column Access Control (RCAC) scenario that is described in Chapter 4, \u201cImplementing Row and Column Access Control: Banking example\u201d on page 37. The script that is shown in Example A-1 is the DDL script that is used to implement this example."}, {"label": "caption", "id": 5, "page_no": 136, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.52754211425781, "t": 405.9345397949219, "r": 332.9858703613281, "b": 415.5800476074219, "coord_origin": "TOPLEFT"}, "confidence": 0.7840588688850403, "cells": [{"id": 9, "text": "Example A-1 DDL script to implement the RCAC banking example", "bbox": {"l": 64.800003, "t": 406.75800000000004, "r": 332.5787, "b": 415.08301, "coord_origin": "TOPLEFT"}}]}, "text": "Example A-1 DDL script to implement the RCAC banking example"}, {"label": "code", "id": 6, "page_no": 136, "cluster": {"id": 6, "label": "code", "bbox": {"l": 62.520992279052734, "t": 420.8819580078125, "r": 541.13666, "b": 730.4379272460938, "coord_origin": "TOPLEFT"}, "confidence": 0.8016359806060791, "cells": [{"id": 10, "text": "/* Database Definitions for RCAC Bank Scenario */", "bbox": {"l": 64.800003, "t": 423.87332, "r": 284.99847, "b": 431.80231000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "/* Schema */", "bbox": {"l": 64.800003, "t": 434.85333, "r": 118.7397, "b": 442.78232, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CREATE SCHEMA BANK_SCHEMA FOR SCHEMA BANKSCHEMA ; ", "bbox": {"l": 64.800003, "t": 445.89365, "r": 289.49847, "b": 453.82263000000006, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "/* Global Variable */", "bbox": {"l": 64.800003, "t": 467.85364, "r": 159.1794, "b": 475.78262, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "CREATE VARIABLE BANK_SCHEMA.CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800003, "t": 478.89395, "r": 271.49847, "b": 486.82294, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "VARCHAR( 30) ; ", "bbox": {"l": 79.200005, "t": 489.87396, "r": 146.57941, "b": 497.80295, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "LABEL ON VARIABLE BANK_SCHEMA.CUSTOMER_LOGIN_ID IS 'Customer''s log in value passed by web application' ; ", "bbox": {"l": 64.800003, "t": 511.89426, "r": 541.13666, "b": 519.8232399999999, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "/* Tables */", "bbox": {"l": 64.800003, "t": 533.85425, "r": 118.7397, "b": 541.78326, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "CREATE TABLE BANK_SCHEMA.CUSTOMERS ( ", "bbox": {"l": 64.800003, "t": 555.8745700000001, "r": 231.05878999999996, "b": 563.80357, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "CUSTOMER_ID FOR COLUMN CUSTO00001 INTEGER GENERATED ALWAYS AS IDENTITY ( ", "bbox": {"l": 79.200005, "t": 566.85457, "r": 407.21759, "b": 574.78357, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "START WITH 1 INCREMENT BY 1 ", "bbox": {"l": 79.200005, "t": 577.89487, "r": 205.0191, "b": 585.8238699999999, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "NO MINVALUE NO MAXVALUE ", "bbox": {"l": 79.200005, "t": 588.87486, "r": 187.0191, "b": 596.80386, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "NO CYCLE NO ORDER ", "bbox": {"l": 79.200005, "t": 599.85486, "r": 160.07941, "b": 607.78386, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "CACHE 20 ), ", "bbox": {"l": 79.200005, "t": 610.89516, "r": 133.13971, "b": 618.82416, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "CUSTOMER_NAME FOR COLUMN CUSTO00002 VARCHAR(30) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 621.87515, "r": 384.77789, "b": 629.8041499999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "CUSTOMER_ADDRESS FOR COLUMN CUSTO00003 VARCHAR(30) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 632.85515, "r": 398.27789, "b": 640.78415, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "CUSTOMER_CITY FOR COLUMN CUSTO00004 VARCHAR(30) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 643.89545, "r": 384.77789, "b": 651.8244500000001, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "CUSTOMER_STATE FOR COLUMN CUSTO00005 CHAR(2) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 654.87544, "r": 371.27789, "b": 662.80444, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "CUSTOMER_PHONE FOR COLUMN CUSTO00006 CHAR(10) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 665.85544, "r": 375.77789, "b": 673.78444, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "CUSTOMER_EMAIL FOR COLUMN CUSTO00007 VARCHAR(30) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 676.89574, "r": 389.27789, "b": 684.82474, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CUSTOMER_TAX_ID FOR COLUMN CUSTO00008 CHAR(11) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 687.87574, "r": 380.27789, "b": 695.804741, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER FOR COLUMN CUSTO00012 CHAR(13) CCSID 37 DEFAULT NULL , ", "bbox": {"l": 79.200005, "t": 698.916039, "r": 470.15729, "b": 706.845039, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CUSTOMER_LOGIN_ID FOR COLUMN CUSTO00009 VARCHAR(30) CCSID 37 DEFAULT NULL , ", "bbox": {"l": 79.200005, "t": 709.896042, "r": 420.71759, "b": 717.825043, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "CUSTOMER_SECURITY_QUESTION FOR COLUMN CUSTO00010 VARCHAR(100) CCSID 37 DEFAULT NULL , ", "bbox": {"l": 79.200005, "t": 720.876045, "r": 465.65729, "b": 728.80505, "coord_origin": "TOPLEFT"}}]}, "text": "/* Database Definitions for RCAC Bank Scenario */ /* Schema */ CREATE SCHEMA BANK_SCHEMA FOR SCHEMA BANKSCHEMA ; /* Global Variable */ CREATE VARIABLE BANK_SCHEMA.CUSTOMER_LOGIN_ID VARCHAR( 30) ; LABEL ON VARIABLE BANK_SCHEMA.CUSTOMER_LOGIN_ID IS 'Customer''s log in value passed by web application' ; /* Tables */ CREATE TABLE BANK_SCHEMA.CUSTOMERS ( CUSTOMER_ID FOR COLUMN CUSTO00001 INTEGER GENERATED ALWAYS AS IDENTITY ( START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE NO CYCLE NO ORDER CACHE 20 ), CUSTOMER_NAME FOR COLUMN CUSTO00002 VARCHAR(30) CCSID 37 NOT NULL , CUSTOMER_ADDRESS FOR COLUMN CUSTO00003 VARCHAR(30) CCSID 37 NOT NULL , CUSTOMER_CITY FOR COLUMN CUSTO00004 VARCHAR(30) CCSID 37 NOT NULL , CUSTOMER_STATE FOR COLUMN CUSTO00005 CHAR(2) CCSID 37 NOT NULL , CUSTOMER_PHONE FOR COLUMN CUSTO00006 CHAR(10) CCSID 37 NOT NULL , CUSTOMER_EMAIL FOR COLUMN CUSTO00007 VARCHAR(30) CCSID 37 NOT NULL , CUSTOMER_TAX_ID FOR COLUMN CUSTO00008 CHAR(11) CCSID 37 NOT NULL , CUSTOMER_DRIVERS_LICENSE_NUMBER FOR COLUMN CUSTO00012 CHAR(13) CCSID 37 DEFAULT NULL , CUSTOMER_LOGIN_ID FOR COLUMN CUSTO00009 VARCHAR(30) CCSID 37 DEFAULT NULL , CUSTOMER_SECURITY_QUESTION FOR COLUMN CUSTO00010 VARCHAR(100) CCSID 37 DEFAULT NULL ,"}, {"label": "text", "id": 7, "page_no": 136, "cluster": {"id": 7, "label": "text", "bbox": {"l": 496.9212951660156, "t": 92.56521606445312, "r": 526.1300659179688, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.6984182596206665, "cells": [{"id": 34, "text": "A", "bbox": {"l": 497.03989, "t": 93.16870000000006, "r": 525.89099, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, "text": "A"}, {"label": "picture", "id": 8, "page_no": 136, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 31.834123611450195, "t": 70.96026611328125, "r": 238.2196044921875, "b": 238.40943908691406, "coord_origin": "TOPLEFT"}, "confidence": 0.6705455780029297, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 136, "cluster": {"id": 2, "label": "text", "bbox": {"l": 74.400002, "t": 268.54272000000003, "r": 115.15289, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Appendix A.", "bbox": {"l": 74.400002, "t": 268.54272000000003, "r": 115.15289, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Appendix A."}, {"label": "section_header", "id": 3, "page_no": 136, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 136.8, "t": 253.2744140625, "r": 485.79715000000004, "b": 310.868896484375, "coord_origin": "TOPLEFT"}, "confidence": 0.931329607963562, "cells": [{"id": 3, "text": "Database definitions for the ", "bbox": {"l": 136.8, "t": 254.88635, "r": 485.79715000000004, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "RCAC banking example", "bbox": {"l": 136.8, "t": 285.84671, "r": 428.4878499999999, "b": 309.8782, "coord_origin": "TOPLEFT"}}]}, "text": "Database definitions for the RCAC banking example"}, {"label": "text", "id": 4, "page_no": 136, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.599853515625, "t": 347.8815612792969, "r": 539.84735, "b": 394.2618408203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9735324382781982, "cells": [{"id": 5, "text": "This appendix provides the database definitions or DDLs to re-create the Row and Column ", "bbox": {"l": 136.8, "t": 348.70871, "r": 539.84735, "b": 357.92169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Access Control (RCAC) scenario that is described in Chapter 4, \u201cImplementing Row and ", "bbox": {"l": 136.8, "t": 360.70853, "r": 528.8894, "b": 369.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Column Access Control: Banking example\u201d on page 37. The script that is shown in ", "bbox": {"l": 136.8, "t": 372.7083400000001, "r": 503.20746, "b": 381.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Example A-1 is the DDL script that is used to implement this example.", "bbox": {"l": 136.8, "t": 384.70816, "r": 445.51532, "b": 393.92114, "coord_origin": "TOPLEFT"}}]}, "text": "This appendix provides the database definitions or DDLs to re-create the Row and Column Access Control (RCAC) scenario that is described in Chapter 4, \u201cImplementing Row and Column Access Control: Banking example\u201d on page 37. The script that is shown in Example A-1 is the DDL script that is used to implement this example."}, {"label": "caption", "id": 5, "page_no": 136, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.52754211425781, "t": 405.9345397949219, "r": 332.9858703613281, "b": 415.5800476074219, "coord_origin": "TOPLEFT"}, "confidence": 0.7840588688850403, "cells": [{"id": 9, "text": "Example A-1 DDL script to implement the RCAC banking example", "bbox": {"l": 64.800003, "t": 406.75800000000004, "r": 332.5787, "b": 415.08301, "coord_origin": "TOPLEFT"}}]}, "text": "Example A-1 DDL script to implement the RCAC banking example"}, {"label": "code", "id": 6, "page_no": 136, "cluster": {"id": 6, "label": "code", "bbox": {"l": 62.520992279052734, "t": 420.8819580078125, "r": 541.13666, "b": 730.4379272460938, "coord_origin": "TOPLEFT"}, "confidence": 0.8016359806060791, "cells": [{"id": 10, "text": "/* Database Definitions for RCAC Bank Scenario */", "bbox": {"l": 64.800003, "t": 423.87332, "r": 284.99847, "b": 431.80231000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "/* Schema */", "bbox": {"l": 64.800003, "t": 434.85333, "r": 118.7397, "b": 442.78232, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CREATE SCHEMA BANK_SCHEMA FOR SCHEMA BANKSCHEMA ; ", "bbox": {"l": 64.800003, "t": 445.89365, "r": 289.49847, "b": 453.82263000000006, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "/* Global Variable */", "bbox": {"l": 64.800003, "t": 467.85364, "r": 159.1794, "b": 475.78262, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "CREATE VARIABLE BANK_SCHEMA.CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800003, "t": 478.89395, "r": 271.49847, "b": 486.82294, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "VARCHAR( 30) ; ", "bbox": {"l": 79.200005, "t": 489.87396, "r": 146.57941, "b": 497.80295, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "LABEL ON VARIABLE BANK_SCHEMA.CUSTOMER_LOGIN_ID IS 'Customer''s log in value passed by web application' ; ", "bbox": {"l": 64.800003, "t": 511.89426, "r": 541.13666, "b": 519.8232399999999, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "/* Tables */", "bbox": {"l": 64.800003, "t": 533.85425, "r": 118.7397, "b": 541.78326, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "CREATE TABLE BANK_SCHEMA.CUSTOMERS ( ", "bbox": {"l": 64.800003, "t": 555.8745700000001, "r": 231.05878999999996, "b": 563.80357, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "CUSTOMER_ID FOR COLUMN CUSTO00001 INTEGER GENERATED ALWAYS AS IDENTITY ( ", "bbox": {"l": 79.200005, "t": 566.85457, "r": 407.21759, "b": 574.78357, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "START WITH 1 INCREMENT BY 1 ", "bbox": {"l": 79.200005, "t": 577.89487, "r": 205.0191, "b": 585.8238699999999, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "NO MINVALUE NO MAXVALUE ", "bbox": {"l": 79.200005, "t": 588.87486, "r": 187.0191, "b": 596.80386, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "NO CYCLE NO ORDER ", "bbox": {"l": 79.200005, "t": 599.85486, "r": 160.07941, "b": 607.78386, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "CACHE 20 ), ", "bbox": {"l": 79.200005, "t": 610.89516, "r": 133.13971, "b": 618.82416, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "CUSTOMER_NAME FOR COLUMN CUSTO00002 VARCHAR(30) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 621.87515, "r": 384.77789, "b": 629.8041499999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "CUSTOMER_ADDRESS FOR COLUMN CUSTO00003 VARCHAR(30) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 632.85515, "r": 398.27789, "b": 640.78415, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "CUSTOMER_CITY FOR COLUMN CUSTO00004 VARCHAR(30) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 643.89545, "r": 384.77789, "b": 651.8244500000001, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "CUSTOMER_STATE FOR COLUMN CUSTO00005 CHAR(2) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 654.87544, "r": 371.27789, "b": 662.80444, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "CUSTOMER_PHONE FOR COLUMN CUSTO00006 CHAR(10) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 665.85544, "r": 375.77789, "b": 673.78444, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "CUSTOMER_EMAIL FOR COLUMN CUSTO00007 VARCHAR(30) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 676.89574, "r": 389.27789, "b": 684.82474, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CUSTOMER_TAX_ID FOR COLUMN CUSTO00008 CHAR(11) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 687.87574, "r": 380.27789, "b": 695.804741, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "CUSTOMER_DRIVERS_LICENSE_NUMBER FOR COLUMN CUSTO00012 CHAR(13) CCSID 37 DEFAULT NULL , ", "bbox": {"l": 79.200005, "t": 698.916039, "r": 470.15729, "b": 706.845039, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CUSTOMER_LOGIN_ID FOR COLUMN CUSTO00009 VARCHAR(30) CCSID 37 DEFAULT NULL , ", "bbox": {"l": 79.200005, "t": 709.896042, "r": 420.71759, "b": 717.825043, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "CUSTOMER_SECURITY_QUESTION FOR COLUMN CUSTO00010 VARCHAR(100) CCSID 37 DEFAULT NULL , ", "bbox": {"l": 79.200005, "t": 720.876045, "r": 465.65729, "b": 728.80505, "coord_origin": "TOPLEFT"}}]}, "text": "/* Database Definitions for RCAC Bank Scenario */ /* Schema */ CREATE SCHEMA BANK_SCHEMA FOR SCHEMA BANKSCHEMA ; /* Global Variable */ CREATE VARIABLE BANK_SCHEMA.CUSTOMER_LOGIN_ID VARCHAR( 30) ; LABEL ON VARIABLE BANK_SCHEMA.CUSTOMER_LOGIN_ID IS 'Customer''s log in value passed by web application' ; /* Tables */ CREATE TABLE BANK_SCHEMA.CUSTOMERS ( CUSTOMER_ID FOR COLUMN CUSTO00001 INTEGER GENERATED ALWAYS AS IDENTITY ( START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE NO CYCLE NO ORDER CACHE 20 ), CUSTOMER_NAME FOR COLUMN CUSTO00002 VARCHAR(30) CCSID 37 NOT NULL , CUSTOMER_ADDRESS FOR COLUMN CUSTO00003 VARCHAR(30) CCSID 37 NOT NULL , CUSTOMER_CITY FOR COLUMN CUSTO00004 VARCHAR(30) CCSID 37 NOT NULL , CUSTOMER_STATE FOR COLUMN CUSTO00005 CHAR(2) CCSID 37 NOT NULL , CUSTOMER_PHONE FOR COLUMN CUSTO00006 CHAR(10) CCSID 37 NOT NULL , CUSTOMER_EMAIL FOR COLUMN CUSTO00007 VARCHAR(30) CCSID 37 NOT NULL , CUSTOMER_TAX_ID FOR COLUMN CUSTO00008 CHAR(11) CCSID 37 NOT NULL , CUSTOMER_DRIVERS_LICENSE_NUMBER FOR COLUMN CUSTO00012 CHAR(13) CCSID 37 DEFAULT NULL , CUSTOMER_LOGIN_ID FOR COLUMN CUSTO00009 VARCHAR(30) CCSID 37 DEFAULT NULL , CUSTOMER_SECURITY_QUESTION FOR COLUMN CUSTO00010 VARCHAR(100) CCSID 37 DEFAULT NULL ,"}, {"label": "text", "id": 7, "page_no": 136, "cluster": {"id": 7, "label": "text", "bbox": {"l": 496.9212951660156, "t": 92.56521606445312, "r": 526.1300659179688, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.6984182596206665, "cells": [{"id": 34, "text": "A", "bbox": {"l": 497.03989, "t": 93.16870000000006, "r": 525.89099, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, "text": "A"}, {"label": "picture", "id": 8, "page_no": 136, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 31.834123611450195, "t": 70.96026611328125, "r": 238.2196044921875, "b": 238.40943908691406, "coord_origin": "TOPLEFT"}, "confidence": 0.6705455780029297, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 136, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.67854309082031, "t": 754.6529541015625, "r": 257.24335, "b": 764.1146850585938, "coord_origin": "TOPLEFT"}, "confidence": 0.9381327033042908, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 136, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.0882568359375, "t": 754.2919311523438, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9215134382247925, "cells": [{"id": 1, "text": "121", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "121"}]}}, {"page_no": 137, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "122 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER FOR COLUMN CUSTO00011 VARCHAR(100) CCSID 37 DEFAULT NULL , ", "bbox": {"l": 79.200302, "t": 71.67296999999996, "r": 497.09729000000004, "b": 79.60199, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "INSERT_TIMESTAMP FOR COLUMN INSER00001 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , ", "bbox": {"l": 79.200302, "t": 82.65295000000015, "r": 546.53699, "b": 90.58196999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "UPDATE_TIMESTAMP FOR COLUMN UPDAT00001 TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE ", "bbox": {"l": 79.200302, "t": 93.63292999999999, "r": 479.15759, "b": 101.56195000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , ", "bbox": {"l": 75.257675, "t": 104.67322000000001, "r": 352.37817, "b": 112.60222999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "CONSTRAINT BANK_SCHEMA.CUSTOMER_ID_PK PRIMARY KEY( CUSTOMER_ID ) ) ; ", "bbox": {"l": 79.200302, "t": 115.65319999999997, "r": 389.2782, "b": 123.58220999999992, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 137.67352000000005, "r": 217.55908, "b": 145.60253999999998, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_LOGIN_ID_UK ", "bbox": {"l": 79.200302, "t": 148.6535, "r": 294.8988, "b": 156.58252000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "UNIQUE( CUSTOMER_LOGIN_ID ) ; ", "bbox": {"l": 79.200302, "t": 159.69379000000004, "r": 214.01939, "b": 167.62279999999998, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 181.65381000000002, "r": 217.55908, "b": 189.58281999999997, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_DRIVERS_LICENSE_CHECK ", "bbox": {"l": 79.200302, "t": 192.69408999999996, "r": 339.8385, "b": 200.62311, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CHECK( CUSTOMER_DRIVERS_LICENSE_NUMBER <> '*************' ) ", "bbox": {"l": 79.200302, "t": 203.67407000000003, "r": 357.8385, "b": 211.60308999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "ON UPDATE VIOLATION PRESERVE CUSTOMER_DRIVERS_LICENSE_NUMBER ; ", "bbox": {"l": 79.200302, "t": 214.65404999999998, "r": 366.7782, "b": 222.58307000000002, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 236.67438000000004, "r": 217.55908, "b": 244.60339, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_EMAIL_CHECK ", "bbox": {"l": 79.200302, "t": 247.65436, "r": 294.8988, "b": 255.58336999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "CHECK( CUSTOMER_EMAIL <> '****@****' ) ", "bbox": {"l": 79.200302, "t": 258.69464000000005, "r": 263.45911, "b": 266.62366, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "ON UPDATE VIOLATION PRESERVE CUSTOMER_EMAIL ; ", "bbox": {"l": 79.200302, "t": 269.67462, "r": 290.3988, "b": 277.60364000000004, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 291.69495, "r": 217.55908, "b": 299.62393, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_LOGIN_ID_CHECK ", "bbox": {"l": 79.200302, "t": 302.67496, "r": 308.3988, "b": 310.60393999999997, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "CHECK( CUSTOMER_LOGIN_ID <> '*****' ) ", "bbox": {"l": 79.200302, "t": 313.65497, "r": 258.95911, "b": 321.58395, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "ON INSERT VIOLATION SET CUSTOMER_LOGIN_ID = DEFAULT", "bbox": {"l": 79.200302, "t": 324.6952800000001, "r": 317.01254, "b": 332.62427, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "ON UPDATE VIOLATION PRESERVE CUSTOMER_LOGIN_ID ; ", "bbox": {"l": 79.200302, "t": 335.67529, "r": 303.8988, "b": 343.60428, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 357.69559, "r": 217.55908, "b": 365.62457, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_SECURITY_QUESTION_CHECK ", "bbox": {"l": 79.200302, "t": 368.6756, "r": 348.8385, "b": 376.60458, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "CHECK( CUSTOMER_SECURITY_QUESTION_ANSWER <> '*****' ) ", "bbox": {"l": 79.200302, "t": 379.65561, "r": 330.8385, "b": 387.58459, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ON INSERT VIOLATION SET CUSTOMER_SECURITY_QUESTION_ANSWER = DEFAULT ", "bbox": {"l": 79.200302, "t": 390.69592, "r": 398.2782, "b": 398.62491000000006, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "ON UPDATE VIOLATION PRESERVE CUSTOMER_SECURITY_QUESTION_ANSWER ; ", "bbox": {"l": 79.200302, "t": 401.67592999999994, "r": 375.7782, "b": 409.60492, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 423.69622999999996, "r": 217.55908, "b": 431.6252099999999, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 79.200302, "t": 434.67624, "r": 353.3385, "b": 442.60522, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CHECK( CUSTOMER_SECURITY_QUESTION <> '*****' ) ", "bbox": {"l": 79.200302, "t": 445.65625, "r": 299.3988, "b": 453.58524, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "ON INSERT VIOLATION SET CUSTOMER_SECURITY_QUESTION = DEFAULT", "bbox": {"l": 79.200302, "t": 456.69656, "r": 357.50146, "b": 464.62555, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "ON UPDATE VIOLATION PRESERVE CUSTOMER_SECURITY_QUESTION ; ", "bbox": {"l": 79.200302, "t": 467.67657, "r": 344.3385, "b": 475.60556, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 489.69687, "r": 217.55908, "b": 497.62585, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_TAX_ID_CHECK ", "bbox": {"l": 79.200302, "t": 500.67688, "r": 299.3988, "b": 508.60587, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "CHECK( CUSTOMER_TAX_ID <> 'XXX-XX-XXXX' AND SUBSTR ( CUSTOMER_TAX_ID , 1 , 7 ) <> 'XXX-XX-' ) ", "bbox": {"l": 79.200302, "t": 511.65689, "r": 510.59729000000004, "b": 519.58588, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "ON UPDATE VIOLATION PRESERVE CUSTOMER_TAX_ID ; ", "bbox": {"l": 79.200302, "t": 522.6972000000001, "r": 294.8988, "b": 530.62619, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "CREATE TABLE BANK_SCHEMA.ACCOUNTS ( ", "bbox": {"l": 64.800301, "t": 544.65721, "r": 226.55908, "b": 552.5862099999999, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "ACCOUNT_ID INTEGER GENERATED ALWAYS AS IDENTITY ( ", "bbox": {"l": 79.200302, "t": 555.69751, "r": 303.8988, "b": 563.62651, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "START WITH 1 INCREMENT BY 1 ", "bbox": {"l": 79.200302, "t": 566.67751, "r": 205.01939, "b": 574.6065100000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "NO MINVALUE NO MAXVALUE ", "bbox": {"l": 79.200302, "t": 577.6575, "r": 187.01939, "b": 585.5865, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "NO CYCLE NO ORDER ", "bbox": {"l": 79.200302, "t": 588.6978, "r": 160.0797, "b": 596.6268, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CACHE 20 ), ", "bbox": {"l": 79.200302, "t": 599.6777999999999, "r": 133.14, "b": 607.6068, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "CUSTOMER_ID FOR COLUMN CUSTID", "bbox": {"l": 79.200302, "t": 610.65779, "r": 217.35544, "b": 618.5867900000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "INTEGER NOT NULL , ", "bbox": {"l": 226.88337999999996, "t": 610.65779, "r": 317.3988, "b": 618.5867900000001, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "ACCOUNT_NUMBER FOR COLUMN ACCOUNTNO VARCHAR(50) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200302, "t": 621.69809, "r": 389.2782, "b": 629.62709, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "ACCOUNT_NAME FOR COLUMN ACCOUNTNAM CHAR(12) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200302, "t": 632.67809, "r": 366.7782, "b": 640.60709, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "ACCOUNT_DATE_OPENED FOR COLUMN OPENDATE DATE DEFAULT CURRENT_DATE , ", "bbox": {"l": 79.200302, "t": 643.71838, "r": 393.7782, "b": 651.64738, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ACCOUNT_DATE_CLOSED FOR COLUMN CLOSEDATE DATE DEFAULT NULL , ", "bbox": {"l": 79.200302, "t": 654.69838, "r": 357.8385, "b": 662.62738, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "ACCOUNT_CURRENT_BALANCE FOR COLUMN ACCTBAL", "bbox": {"l": 79.200302, "t": 665.6783800000001, "r": 272.67203, "b": 673.60738, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "DECIMAL(11, 2) NOT NULL DEFAULT 0 , ", "bbox": {"l": 281.88498, "t": 665.6783800000001, "r": 447.71789999999993, "b": 673.60738, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "INSERT_TIMESTAMP FOR COLUMN INSDATE TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , ", "bbox": {"l": 79.200302, "t": 676.71867, "r": 546.53699, "b": 684.6476700000001, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "UPDATE_TIMESTAMP FOR COLUMN UPDDATE TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE ", "bbox": {"l": 79.200302, "t": 687.69868, "r": 479.15759, "b": 695.6276780000001, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , ", "bbox": {"l": 75.257675, "t": 698.67868, "r": 352.37817, "b": 706.607681, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "CONSTRAINT BANK_SCHEMA.ACCOUNT_ID_PK PRIMARY KEY( ACCOUNT_ID ) ); ", "bbox": {"l": 79.200302, "t": 709.718979, "r": 375.7782, "b": 717.64798, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.49662017822266, "t": 754.4017944335938, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9092414379119873, "cells": [{"id": 0, "text": "122 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 98.57022857666016, "t": 754.6959228515625, "r": 339.9194030761719, "b": 764.0059204101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9339437484741211, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "code", "bbox": {"l": 63.45902633666992, "t": 70.63676452636719, "r": 546.53699, "b": 721.98095703125, "coord_origin": "TOPLEFT"}, "confidence": 0.7888815402984619, "cells": [{"id": 2, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER FOR COLUMN CUSTO00011 VARCHAR(100) CCSID 37 DEFAULT NULL , ", "bbox": {"l": 79.200302, "t": 71.67296999999996, "r": 497.09729000000004, "b": 79.60199, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "INSERT_TIMESTAMP FOR COLUMN INSER00001 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , ", "bbox": {"l": 79.200302, "t": 82.65295000000015, "r": 546.53699, "b": 90.58196999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "UPDATE_TIMESTAMP FOR COLUMN UPDAT00001 TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE ", "bbox": {"l": 79.200302, "t": 93.63292999999999, "r": 479.15759, "b": 101.56195000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , ", "bbox": {"l": 75.257675, "t": 104.67322000000001, "r": 352.37817, "b": 112.60222999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "CONSTRAINT BANK_SCHEMA.CUSTOMER_ID_PK PRIMARY KEY( CUSTOMER_ID ) ) ; ", "bbox": {"l": 79.200302, "t": 115.65319999999997, "r": 389.2782, "b": 123.58220999999992, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 137.67352000000005, "r": 217.55908, "b": 145.60253999999998, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_LOGIN_ID_UK ", "bbox": {"l": 79.200302, "t": 148.6535, "r": 294.8988, "b": 156.58252000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "UNIQUE( CUSTOMER_LOGIN_ID ) ; ", "bbox": {"l": 79.200302, "t": 159.69379000000004, "r": 214.01939, "b": 167.62279999999998, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 181.65381000000002, "r": 217.55908, "b": 189.58281999999997, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_DRIVERS_LICENSE_CHECK ", "bbox": {"l": 79.200302, "t": 192.69408999999996, "r": 339.8385, "b": 200.62311, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CHECK( CUSTOMER_DRIVERS_LICENSE_NUMBER <> '*************' ) ", "bbox": {"l": 79.200302, "t": 203.67407000000003, "r": 357.8385, "b": 211.60308999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "ON UPDATE VIOLATION PRESERVE CUSTOMER_DRIVERS_LICENSE_NUMBER ; ", "bbox": {"l": 79.200302, "t": 214.65404999999998, "r": 366.7782, "b": 222.58307000000002, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 236.67438000000004, "r": 217.55908, "b": 244.60339, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_EMAIL_CHECK ", "bbox": {"l": 79.200302, "t": 247.65436, "r": 294.8988, "b": 255.58336999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "CHECK( CUSTOMER_EMAIL <> '****@****' ) ", "bbox": {"l": 79.200302, "t": 258.69464000000005, "r": 263.45911, "b": 266.62366, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "ON UPDATE VIOLATION PRESERVE CUSTOMER_EMAIL ; ", "bbox": {"l": 79.200302, "t": 269.67462, "r": 290.3988, "b": 277.60364000000004, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 291.69495, "r": 217.55908, "b": 299.62393, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_LOGIN_ID_CHECK ", "bbox": {"l": 79.200302, "t": 302.67496, "r": 308.3988, "b": 310.60393999999997, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "CHECK( CUSTOMER_LOGIN_ID <> '*****' ) ", "bbox": {"l": 79.200302, "t": 313.65497, "r": 258.95911, "b": 321.58395, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "ON INSERT VIOLATION SET CUSTOMER_LOGIN_ID = DEFAULT", "bbox": {"l": 79.200302, "t": 324.6952800000001, "r": 317.01254, "b": 332.62427, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "ON UPDATE VIOLATION PRESERVE CUSTOMER_LOGIN_ID ; ", "bbox": {"l": 79.200302, "t": 335.67529, "r": 303.8988, "b": 343.60428, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 357.69559, "r": 217.55908, "b": 365.62457, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_SECURITY_QUESTION_CHECK ", "bbox": {"l": 79.200302, "t": 368.6756, "r": 348.8385, "b": 376.60458, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "CHECK( CUSTOMER_SECURITY_QUESTION_ANSWER <> '*****' ) ", "bbox": {"l": 79.200302, "t": 379.65561, "r": 330.8385, "b": 387.58459, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ON INSERT VIOLATION SET CUSTOMER_SECURITY_QUESTION_ANSWER = DEFAULT ", "bbox": {"l": 79.200302, "t": 390.69592, "r": 398.2782, "b": 398.62491000000006, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "ON UPDATE VIOLATION PRESERVE CUSTOMER_SECURITY_QUESTION_ANSWER ; ", "bbox": {"l": 79.200302, "t": 401.67592999999994, "r": 375.7782, "b": 409.60492, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 423.69622999999996, "r": 217.55908, "b": 431.6252099999999, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 79.200302, "t": 434.67624, "r": 353.3385, "b": 442.60522, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CHECK( CUSTOMER_SECURITY_QUESTION <> '*****' ) ", "bbox": {"l": 79.200302, "t": 445.65625, "r": 299.3988, "b": 453.58524, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "ON INSERT VIOLATION SET CUSTOMER_SECURITY_QUESTION = DEFAULT", "bbox": {"l": 79.200302, "t": 456.69656, "r": 357.50146, "b": 464.62555, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "ON UPDATE VIOLATION PRESERVE CUSTOMER_SECURITY_QUESTION ; ", "bbox": {"l": 79.200302, "t": 467.67657, "r": 344.3385, "b": 475.60556, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 489.69687, "r": 217.55908, "b": 497.62585, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_TAX_ID_CHECK ", "bbox": {"l": 79.200302, "t": 500.67688, "r": 299.3988, "b": 508.60587, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "CHECK( CUSTOMER_TAX_ID <> 'XXX-XX-XXXX' AND SUBSTR ( CUSTOMER_TAX_ID , 1 , 7 ) <> 'XXX-XX-' ) ", "bbox": {"l": 79.200302, "t": 511.65689, "r": 510.59729000000004, "b": 519.58588, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "ON UPDATE VIOLATION PRESERVE CUSTOMER_TAX_ID ; ", "bbox": {"l": 79.200302, "t": 522.6972000000001, "r": 294.8988, "b": 530.62619, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "CREATE TABLE BANK_SCHEMA.ACCOUNTS ( ", "bbox": {"l": 64.800301, "t": 544.65721, "r": 226.55908, "b": 552.5862099999999, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "ACCOUNT_ID INTEGER GENERATED ALWAYS AS IDENTITY ( ", "bbox": {"l": 79.200302, "t": 555.69751, "r": 303.8988, "b": 563.62651, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "START WITH 1 INCREMENT BY 1 ", "bbox": {"l": 79.200302, "t": 566.67751, "r": 205.01939, "b": 574.6065100000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "NO MINVALUE NO MAXVALUE ", "bbox": {"l": 79.200302, "t": 577.6575, "r": 187.01939, "b": 585.5865, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "NO CYCLE NO ORDER ", "bbox": {"l": 79.200302, "t": 588.6978, "r": 160.0797, "b": 596.6268, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CACHE 20 ), ", "bbox": {"l": 79.200302, "t": 599.6777999999999, "r": 133.14, "b": 607.6068, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "CUSTOMER_ID FOR COLUMN CUSTID", "bbox": {"l": 79.200302, "t": 610.65779, "r": 217.35544, "b": 618.5867900000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "INTEGER NOT NULL , ", "bbox": {"l": 226.88337999999996, "t": 610.65779, "r": 317.3988, "b": 618.5867900000001, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "ACCOUNT_NUMBER FOR COLUMN ACCOUNTNO VARCHAR(50) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200302, "t": 621.69809, "r": 389.2782, "b": 629.62709, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "ACCOUNT_NAME FOR COLUMN ACCOUNTNAM CHAR(12) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200302, "t": 632.67809, "r": 366.7782, "b": 640.60709, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "ACCOUNT_DATE_OPENED FOR COLUMN OPENDATE DATE DEFAULT CURRENT_DATE , ", "bbox": {"l": 79.200302, "t": 643.71838, "r": 393.7782, "b": 651.64738, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ACCOUNT_DATE_CLOSED FOR COLUMN CLOSEDATE DATE DEFAULT NULL , ", "bbox": {"l": 79.200302, "t": 654.69838, "r": 357.8385, "b": 662.62738, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "ACCOUNT_CURRENT_BALANCE FOR COLUMN ACCTBAL", "bbox": {"l": 79.200302, "t": 665.6783800000001, "r": 272.67203, "b": 673.60738, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "DECIMAL(11, 2) NOT NULL DEFAULT 0 , ", "bbox": {"l": 281.88498, "t": 665.6783800000001, "r": 447.71789999999993, "b": 673.60738, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "INSERT_TIMESTAMP FOR COLUMN INSDATE TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , ", "bbox": {"l": 79.200302, "t": 676.71867, "r": 546.53699, "b": 684.6476700000001, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "UPDATE_TIMESTAMP FOR COLUMN UPDDATE TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE ", "bbox": {"l": 79.200302, "t": 687.69868, "r": 479.15759, "b": 695.6276780000001, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , ", "bbox": {"l": 75.257675, "t": 698.67868, "r": 352.37817, "b": 706.607681, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "CONSTRAINT BANK_SCHEMA.ACCOUNT_ID_PK PRIMARY KEY( ACCOUNT_ID ) ); ", "bbox": {"l": 79.200302, "t": 709.718979, "r": 375.7782, "b": 717.64798, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 137, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.49662017822266, "t": 754.4017944335938, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9092414379119873, "cells": [{"id": 0, "text": "122 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "122"}, {"label": "page_footer", "id": 1, "page_no": 137, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.57022857666016, "t": 754.6959228515625, "r": 339.9194030761719, "b": 764.0059204101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9339437484741211, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "code", "id": 2, "page_no": 137, "cluster": {"id": 2, "label": "code", "bbox": {"l": 63.45902633666992, "t": 70.63676452636719, "r": 546.53699, "b": 721.98095703125, "coord_origin": "TOPLEFT"}, "confidence": 0.7888815402984619, "cells": [{"id": 2, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER FOR COLUMN CUSTO00011 VARCHAR(100) CCSID 37 DEFAULT NULL , ", "bbox": {"l": 79.200302, "t": 71.67296999999996, "r": 497.09729000000004, "b": 79.60199, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "INSERT_TIMESTAMP FOR COLUMN INSER00001 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , ", "bbox": {"l": 79.200302, "t": 82.65295000000015, "r": 546.53699, "b": 90.58196999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "UPDATE_TIMESTAMP FOR COLUMN UPDAT00001 TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE ", "bbox": {"l": 79.200302, "t": 93.63292999999999, "r": 479.15759, "b": 101.56195000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , ", "bbox": {"l": 75.257675, "t": 104.67322000000001, "r": 352.37817, "b": 112.60222999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "CONSTRAINT BANK_SCHEMA.CUSTOMER_ID_PK PRIMARY KEY( CUSTOMER_ID ) ) ; ", "bbox": {"l": 79.200302, "t": 115.65319999999997, "r": 389.2782, "b": 123.58220999999992, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 137.67352000000005, "r": 217.55908, "b": 145.60253999999998, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_LOGIN_ID_UK ", "bbox": {"l": 79.200302, "t": 148.6535, "r": 294.8988, "b": 156.58252000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "UNIQUE( CUSTOMER_LOGIN_ID ) ; ", "bbox": {"l": 79.200302, "t": 159.69379000000004, "r": 214.01939, "b": 167.62279999999998, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 181.65381000000002, "r": 217.55908, "b": 189.58281999999997, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_DRIVERS_LICENSE_CHECK ", "bbox": {"l": 79.200302, "t": 192.69408999999996, "r": 339.8385, "b": 200.62311, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CHECK( CUSTOMER_DRIVERS_LICENSE_NUMBER <> '*************' ) ", "bbox": {"l": 79.200302, "t": 203.67407000000003, "r": 357.8385, "b": 211.60308999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "ON UPDATE VIOLATION PRESERVE CUSTOMER_DRIVERS_LICENSE_NUMBER ; ", "bbox": {"l": 79.200302, "t": 214.65404999999998, "r": 366.7782, "b": 222.58307000000002, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 236.67438000000004, "r": 217.55908, "b": 244.60339, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_EMAIL_CHECK ", "bbox": {"l": 79.200302, "t": 247.65436, "r": 294.8988, "b": 255.58336999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "CHECK( CUSTOMER_EMAIL <> '****@****' ) ", "bbox": {"l": 79.200302, "t": 258.69464000000005, "r": 263.45911, "b": 266.62366, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "ON UPDATE VIOLATION PRESERVE CUSTOMER_EMAIL ; ", "bbox": {"l": 79.200302, "t": 269.67462, "r": 290.3988, "b": 277.60364000000004, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 291.69495, "r": 217.55908, "b": 299.62393, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_LOGIN_ID_CHECK ", "bbox": {"l": 79.200302, "t": 302.67496, "r": 308.3988, "b": 310.60393999999997, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "CHECK( CUSTOMER_LOGIN_ID <> '*****' ) ", "bbox": {"l": 79.200302, "t": 313.65497, "r": 258.95911, "b": 321.58395, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "ON INSERT VIOLATION SET CUSTOMER_LOGIN_ID = DEFAULT", "bbox": {"l": 79.200302, "t": 324.6952800000001, "r": 317.01254, "b": 332.62427, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "ON UPDATE VIOLATION PRESERVE CUSTOMER_LOGIN_ID ; ", "bbox": {"l": 79.200302, "t": 335.67529, "r": 303.8988, "b": 343.60428, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 357.69559, "r": 217.55908, "b": 365.62457, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_SECURITY_QUESTION_CHECK ", "bbox": {"l": 79.200302, "t": 368.6756, "r": 348.8385, "b": 376.60458, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "CHECK( CUSTOMER_SECURITY_QUESTION_ANSWER <> '*****' ) ", "bbox": {"l": 79.200302, "t": 379.65561, "r": 330.8385, "b": 387.58459, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ON INSERT VIOLATION SET CUSTOMER_SECURITY_QUESTION_ANSWER = DEFAULT ", "bbox": {"l": 79.200302, "t": 390.69592, "r": 398.2782, "b": 398.62491000000006, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "ON UPDATE VIOLATION PRESERVE CUSTOMER_SECURITY_QUESTION_ANSWER ; ", "bbox": {"l": 79.200302, "t": 401.67592999999994, "r": 375.7782, "b": 409.60492, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 423.69622999999996, "r": 217.55908, "b": 431.6252099999999, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 79.200302, "t": 434.67624, "r": 353.3385, "b": 442.60522, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CHECK( CUSTOMER_SECURITY_QUESTION <> '*****' ) ", "bbox": {"l": 79.200302, "t": 445.65625, "r": 299.3988, "b": 453.58524, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "ON INSERT VIOLATION SET CUSTOMER_SECURITY_QUESTION = DEFAULT", "bbox": {"l": 79.200302, "t": 456.69656, "r": 357.50146, "b": 464.62555, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "ON UPDATE VIOLATION PRESERVE CUSTOMER_SECURITY_QUESTION ; ", "bbox": {"l": 79.200302, "t": 467.67657, "r": 344.3385, "b": 475.60556, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 489.69687, "r": 217.55908, "b": 497.62585, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_TAX_ID_CHECK ", "bbox": {"l": 79.200302, "t": 500.67688, "r": 299.3988, "b": 508.60587, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "CHECK( CUSTOMER_TAX_ID <> 'XXX-XX-XXXX' AND SUBSTR ( CUSTOMER_TAX_ID , 1 , 7 ) <> 'XXX-XX-' ) ", "bbox": {"l": 79.200302, "t": 511.65689, "r": 510.59729000000004, "b": 519.58588, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "ON UPDATE VIOLATION PRESERVE CUSTOMER_TAX_ID ; ", "bbox": {"l": 79.200302, "t": 522.6972000000001, "r": 294.8988, "b": 530.62619, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "CREATE TABLE BANK_SCHEMA.ACCOUNTS ( ", "bbox": {"l": 64.800301, "t": 544.65721, "r": 226.55908, "b": 552.5862099999999, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "ACCOUNT_ID INTEGER GENERATED ALWAYS AS IDENTITY ( ", "bbox": {"l": 79.200302, "t": 555.69751, "r": 303.8988, "b": 563.62651, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "START WITH 1 INCREMENT BY 1 ", "bbox": {"l": 79.200302, "t": 566.67751, "r": 205.01939, "b": 574.6065100000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "NO MINVALUE NO MAXVALUE ", "bbox": {"l": 79.200302, "t": 577.6575, "r": 187.01939, "b": 585.5865, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "NO CYCLE NO ORDER ", "bbox": {"l": 79.200302, "t": 588.6978, "r": 160.0797, "b": 596.6268, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CACHE 20 ), ", "bbox": {"l": 79.200302, "t": 599.6777999999999, "r": 133.14, "b": 607.6068, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "CUSTOMER_ID FOR COLUMN CUSTID", "bbox": {"l": 79.200302, "t": 610.65779, "r": 217.35544, "b": 618.5867900000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "INTEGER NOT NULL , ", "bbox": {"l": 226.88337999999996, "t": 610.65779, "r": 317.3988, "b": 618.5867900000001, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "ACCOUNT_NUMBER FOR COLUMN ACCOUNTNO VARCHAR(50) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200302, "t": 621.69809, "r": 389.2782, "b": 629.62709, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "ACCOUNT_NAME FOR COLUMN ACCOUNTNAM CHAR(12) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200302, "t": 632.67809, "r": 366.7782, "b": 640.60709, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "ACCOUNT_DATE_OPENED FOR COLUMN OPENDATE DATE DEFAULT CURRENT_DATE , ", "bbox": {"l": 79.200302, "t": 643.71838, "r": 393.7782, "b": 651.64738, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ACCOUNT_DATE_CLOSED FOR COLUMN CLOSEDATE DATE DEFAULT NULL , ", "bbox": {"l": 79.200302, "t": 654.69838, "r": 357.8385, "b": 662.62738, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "ACCOUNT_CURRENT_BALANCE FOR COLUMN ACCTBAL", "bbox": {"l": 79.200302, "t": 665.6783800000001, "r": 272.67203, "b": 673.60738, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "DECIMAL(11, 2) NOT NULL DEFAULT 0 , ", "bbox": {"l": 281.88498, "t": 665.6783800000001, "r": 447.71789999999993, "b": 673.60738, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "INSERT_TIMESTAMP FOR COLUMN INSDATE TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , ", "bbox": {"l": 79.200302, "t": 676.71867, "r": 546.53699, "b": 684.6476700000001, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "UPDATE_TIMESTAMP FOR COLUMN UPDDATE TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE ", "bbox": {"l": 79.200302, "t": 687.69868, "r": 479.15759, "b": 695.6276780000001, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , ", "bbox": {"l": 75.257675, "t": 698.67868, "r": 352.37817, "b": 706.607681, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "CONSTRAINT BANK_SCHEMA.ACCOUNT_ID_PK PRIMARY KEY( ACCOUNT_ID ) ); ", "bbox": {"l": 79.200302, "t": 709.718979, "r": 375.7782, "b": 717.64798, "coord_origin": "TOPLEFT"}}]}, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER FOR COLUMN CUSTO00011 VARCHAR(100) CCSID 37 DEFAULT NULL , INSERT_TIMESTAMP FOR COLUMN INSER00001 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , UPDATE_TIMESTAMP FOR COLUMN UPDAT00001 TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , CONSTRAINT BANK_SCHEMA.CUSTOMER_ID_PK PRIMARY KEY( CUSTOMER_ID ) ) ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_LOGIN_ID_UK UNIQUE( CUSTOMER_LOGIN_ID ) ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_DRIVERS_LICENSE_CHECK CHECK( CUSTOMER_DRIVERS_LICENSE_NUMBER <> '*************' ) ON UPDATE VIOLATION PRESERVE CUSTOMER_DRIVERS_LICENSE_NUMBER ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_EMAIL_CHECK CHECK( CUSTOMER_EMAIL <> '****@****' ) ON UPDATE VIOLATION PRESERVE CUSTOMER_EMAIL ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_LOGIN_ID_CHECK CHECK( CUSTOMER_LOGIN_ID <> '*****' ) ON INSERT VIOLATION SET CUSTOMER_LOGIN_ID = DEFAULT ON UPDATE VIOLATION PRESERVE CUSTOMER_LOGIN_ID ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_SECURITY_QUESTION_CHECK CHECK( CUSTOMER_SECURITY_QUESTION_ANSWER <> '*****' ) ON INSERT VIOLATION SET CUSTOMER_SECURITY_QUESTION_ANSWER = DEFAULT ON UPDATE VIOLATION PRESERVE CUSTOMER_SECURITY_QUESTION_ANSWER ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_SECURITY_QUESTION_ANSWER CHECK( CUSTOMER_SECURITY_QUESTION <> '*****' ) ON INSERT VIOLATION SET CUSTOMER_SECURITY_QUESTION = DEFAULT ON UPDATE VIOLATION PRESERVE CUSTOMER_SECURITY_QUESTION ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_TAX_ID_CHECK CHECK( CUSTOMER_TAX_ID <> 'XXX-XX-XXXX' AND SUBSTR ( CUSTOMER_TAX_ID , 1 , 7 ) <> 'XXX-XX-' ) ON UPDATE VIOLATION PRESERVE CUSTOMER_TAX_ID ; CREATE TABLE BANK_SCHEMA.ACCOUNTS ( ACCOUNT_ID INTEGER GENERATED ALWAYS AS IDENTITY ( START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE NO CYCLE NO ORDER CACHE 20 ), CUSTOMER_ID FOR COLUMN CUSTID INTEGER NOT NULL , ACCOUNT_NUMBER FOR COLUMN ACCOUNTNO VARCHAR(50) CCSID 37 NOT NULL , ACCOUNT_NAME FOR COLUMN ACCOUNTNAM CHAR(12) CCSID 37 NOT NULL , ACCOUNT_DATE_OPENED FOR COLUMN OPENDATE DATE DEFAULT CURRENT_DATE , ACCOUNT_DATE_CLOSED FOR COLUMN CLOSEDATE DATE DEFAULT NULL , ACCOUNT_CURRENT_BALANCE FOR COLUMN ACCTBAL DECIMAL(11, 2) NOT NULL DEFAULT 0 , INSERT_TIMESTAMP FOR COLUMN INSDATE TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , UPDATE_TIMESTAMP FOR COLUMN UPDDATE TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , CONSTRAINT BANK_SCHEMA.ACCOUNT_ID_PK PRIMARY KEY( ACCOUNT_ID ) );"}], "body": [{"label": "code", "id": 2, "page_no": 137, "cluster": {"id": 2, "label": "code", "bbox": {"l": 63.45902633666992, "t": 70.63676452636719, "r": 546.53699, "b": 721.98095703125, "coord_origin": "TOPLEFT"}, "confidence": 0.7888815402984619, "cells": [{"id": 2, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER FOR COLUMN CUSTO00011 VARCHAR(100) CCSID 37 DEFAULT NULL , ", "bbox": {"l": 79.200302, "t": 71.67296999999996, "r": 497.09729000000004, "b": 79.60199, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "INSERT_TIMESTAMP FOR COLUMN INSER00001 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , ", "bbox": {"l": 79.200302, "t": 82.65295000000015, "r": 546.53699, "b": 90.58196999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "UPDATE_TIMESTAMP FOR COLUMN UPDAT00001 TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE ", "bbox": {"l": 79.200302, "t": 93.63292999999999, "r": 479.15759, "b": 101.56195000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , ", "bbox": {"l": 75.257675, "t": 104.67322000000001, "r": 352.37817, "b": 112.60222999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "CONSTRAINT BANK_SCHEMA.CUSTOMER_ID_PK PRIMARY KEY( CUSTOMER_ID ) ) ; ", "bbox": {"l": 79.200302, "t": 115.65319999999997, "r": 389.2782, "b": 123.58220999999992, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 137.67352000000005, "r": 217.55908, "b": 145.60253999999998, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_LOGIN_ID_UK ", "bbox": {"l": 79.200302, "t": 148.6535, "r": 294.8988, "b": 156.58252000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "UNIQUE( CUSTOMER_LOGIN_ID ) ; ", "bbox": {"l": 79.200302, "t": 159.69379000000004, "r": 214.01939, "b": 167.62279999999998, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 181.65381000000002, "r": 217.55908, "b": 189.58281999999997, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_DRIVERS_LICENSE_CHECK ", "bbox": {"l": 79.200302, "t": 192.69408999999996, "r": 339.8385, "b": 200.62311, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CHECK( CUSTOMER_DRIVERS_LICENSE_NUMBER <> '*************' ) ", "bbox": {"l": 79.200302, "t": 203.67407000000003, "r": 357.8385, "b": 211.60308999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "ON UPDATE VIOLATION PRESERVE CUSTOMER_DRIVERS_LICENSE_NUMBER ; ", "bbox": {"l": 79.200302, "t": 214.65404999999998, "r": 366.7782, "b": 222.58307000000002, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 236.67438000000004, "r": 217.55908, "b": 244.60339, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_EMAIL_CHECK ", "bbox": {"l": 79.200302, "t": 247.65436, "r": 294.8988, "b": 255.58336999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "CHECK( CUSTOMER_EMAIL <> '****@****' ) ", "bbox": {"l": 79.200302, "t": 258.69464000000005, "r": 263.45911, "b": 266.62366, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "ON UPDATE VIOLATION PRESERVE CUSTOMER_EMAIL ; ", "bbox": {"l": 79.200302, "t": 269.67462, "r": 290.3988, "b": 277.60364000000004, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 291.69495, "r": 217.55908, "b": 299.62393, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_LOGIN_ID_CHECK ", "bbox": {"l": 79.200302, "t": 302.67496, "r": 308.3988, "b": 310.60393999999997, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "CHECK( CUSTOMER_LOGIN_ID <> '*****' ) ", "bbox": {"l": 79.200302, "t": 313.65497, "r": 258.95911, "b": 321.58395, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "ON INSERT VIOLATION SET CUSTOMER_LOGIN_ID = DEFAULT", "bbox": {"l": 79.200302, "t": 324.6952800000001, "r": 317.01254, "b": 332.62427, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "ON UPDATE VIOLATION PRESERVE CUSTOMER_LOGIN_ID ; ", "bbox": {"l": 79.200302, "t": 335.67529, "r": 303.8988, "b": 343.60428, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 357.69559, "r": 217.55908, "b": 365.62457, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_SECURITY_QUESTION_CHECK ", "bbox": {"l": 79.200302, "t": 368.6756, "r": 348.8385, "b": 376.60458, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "CHECK( CUSTOMER_SECURITY_QUESTION_ANSWER <> '*****' ) ", "bbox": {"l": 79.200302, "t": 379.65561, "r": 330.8385, "b": 387.58459, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ON INSERT VIOLATION SET CUSTOMER_SECURITY_QUESTION_ANSWER = DEFAULT ", "bbox": {"l": 79.200302, "t": 390.69592, "r": 398.2782, "b": 398.62491000000006, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "ON UPDATE VIOLATION PRESERVE CUSTOMER_SECURITY_QUESTION_ANSWER ; ", "bbox": {"l": 79.200302, "t": 401.67592999999994, "r": 375.7782, "b": 409.60492, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 423.69622999999996, "r": 217.55908, "b": 431.6252099999999, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 79.200302, "t": 434.67624, "r": 353.3385, "b": 442.60522, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "CHECK( CUSTOMER_SECURITY_QUESTION <> '*****' ) ", "bbox": {"l": 79.200302, "t": 445.65625, "r": 299.3988, "b": 453.58524, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "ON INSERT VIOLATION SET CUSTOMER_SECURITY_QUESTION = DEFAULT", "bbox": {"l": 79.200302, "t": 456.69656, "r": 357.50146, "b": 464.62555, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "ON UPDATE VIOLATION PRESERVE CUSTOMER_SECURITY_QUESTION ; ", "bbox": {"l": 79.200302, "t": 467.67657, "r": 344.3385, "b": 475.60556, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800301, "t": 489.69687, "r": 217.55908, "b": 497.62585, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_TAX_ID_CHECK ", "bbox": {"l": 79.200302, "t": 500.67688, "r": 299.3988, "b": 508.60587, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "CHECK( CUSTOMER_TAX_ID <> 'XXX-XX-XXXX' AND SUBSTR ( CUSTOMER_TAX_ID , 1 , 7 ) <> 'XXX-XX-' ) ", "bbox": {"l": 79.200302, "t": 511.65689, "r": 510.59729000000004, "b": 519.58588, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "ON UPDATE VIOLATION PRESERVE CUSTOMER_TAX_ID ; ", "bbox": {"l": 79.200302, "t": 522.6972000000001, "r": 294.8988, "b": 530.62619, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "CREATE TABLE BANK_SCHEMA.ACCOUNTS ( ", "bbox": {"l": 64.800301, "t": 544.65721, "r": 226.55908, "b": 552.5862099999999, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "ACCOUNT_ID INTEGER GENERATED ALWAYS AS IDENTITY ( ", "bbox": {"l": 79.200302, "t": 555.69751, "r": 303.8988, "b": 563.62651, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "START WITH 1 INCREMENT BY 1 ", "bbox": {"l": 79.200302, "t": 566.67751, "r": 205.01939, "b": 574.6065100000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "NO MINVALUE NO MAXVALUE ", "bbox": {"l": 79.200302, "t": 577.6575, "r": 187.01939, "b": 585.5865, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "NO CYCLE NO ORDER ", "bbox": {"l": 79.200302, "t": 588.6978, "r": 160.0797, "b": 596.6268, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CACHE 20 ), ", "bbox": {"l": 79.200302, "t": 599.6777999999999, "r": 133.14, "b": 607.6068, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "CUSTOMER_ID FOR COLUMN CUSTID", "bbox": {"l": 79.200302, "t": 610.65779, "r": 217.35544, "b": 618.5867900000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "INTEGER NOT NULL , ", "bbox": {"l": 226.88337999999996, "t": 610.65779, "r": 317.3988, "b": 618.5867900000001, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "ACCOUNT_NUMBER FOR COLUMN ACCOUNTNO VARCHAR(50) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200302, "t": 621.69809, "r": 389.2782, "b": 629.62709, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "ACCOUNT_NAME FOR COLUMN ACCOUNTNAM CHAR(12) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200302, "t": 632.67809, "r": 366.7782, "b": 640.60709, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "ACCOUNT_DATE_OPENED FOR COLUMN OPENDATE DATE DEFAULT CURRENT_DATE , ", "bbox": {"l": 79.200302, "t": 643.71838, "r": 393.7782, "b": 651.64738, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ACCOUNT_DATE_CLOSED FOR COLUMN CLOSEDATE DATE DEFAULT NULL , ", "bbox": {"l": 79.200302, "t": 654.69838, "r": 357.8385, "b": 662.62738, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "ACCOUNT_CURRENT_BALANCE FOR COLUMN ACCTBAL", "bbox": {"l": 79.200302, "t": 665.6783800000001, "r": 272.67203, "b": 673.60738, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "DECIMAL(11, 2) NOT NULL DEFAULT 0 , ", "bbox": {"l": 281.88498, "t": 665.6783800000001, "r": 447.71789999999993, "b": 673.60738, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "INSERT_TIMESTAMP FOR COLUMN INSDATE TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , ", "bbox": {"l": 79.200302, "t": 676.71867, "r": 546.53699, "b": 684.6476700000001, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "UPDATE_TIMESTAMP FOR COLUMN UPDDATE TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE ", "bbox": {"l": 79.200302, "t": 687.69868, "r": 479.15759, "b": 695.6276780000001, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , ", "bbox": {"l": 75.257675, "t": 698.67868, "r": 352.37817, "b": 706.607681, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "CONSTRAINT BANK_SCHEMA.ACCOUNT_ID_PK PRIMARY KEY( ACCOUNT_ID ) ); ", "bbox": {"l": 79.200302, "t": 709.718979, "r": 375.7782, "b": 717.64798, "coord_origin": "TOPLEFT"}}]}, "text": "CUSTOMER_SECURITY_QUESTION_ANSWER FOR COLUMN CUSTO00011 VARCHAR(100) CCSID 37 DEFAULT NULL , INSERT_TIMESTAMP FOR COLUMN INSER00001 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , UPDATE_TIMESTAMP FOR COLUMN UPDAT00001 TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , CONSTRAINT BANK_SCHEMA.CUSTOMER_ID_PK PRIMARY KEY( CUSTOMER_ID ) ) ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_LOGIN_ID_UK UNIQUE( CUSTOMER_LOGIN_ID ) ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_DRIVERS_LICENSE_CHECK CHECK( CUSTOMER_DRIVERS_LICENSE_NUMBER <> '*************' ) ON UPDATE VIOLATION PRESERVE CUSTOMER_DRIVERS_LICENSE_NUMBER ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_EMAIL_CHECK CHECK( CUSTOMER_EMAIL <> '****@****' ) ON UPDATE VIOLATION PRESERVE CUSTOMER_EMAIL ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_LOGIN_ID_CHECK CHECK( CUSTOMER_LOGIN_ID <> '*****' ) ON INSERT VIOLATION SET CUSTOMER_LOGIN_ID = DEFAULT ON UPDATE VIOLATION PRESERVE CUSTOMER_LOGIN_ID ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_SECURITY_QUESTION_CHECK CHECK( CUSTOMER_SECURITY_QUESTION_ANSWER <> '*****' ) ON INSERT VIOLATION SET CUSTOMER_SECURITY_QUESTION_ANSWER = DEFAULT ON UPDATE VIOLATION PRESERVE CUSTOMER_SECURITY_QUESTION_ANSWER ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_SECURITY_QUESTION_ANSWER CHECK( CUSTOMER_SECURITY_QUESTION <> '*****' ) ON INSERT VIOLATION SET CUSTOMER_SECURITY_QUESTION = DEFAULT ON UPDATE VIOLATION PRESERVE CUSTOMER_SECURITY_QUESTION ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ADD CONSTRAINT BANK_SCHEMA.CUSTOMER_TAX_ID_CHECK CHECK( CUSTOMER_TAX_ID <> 'XXX-XX-XXXX' AND SUBSTR ( CUSTOMER_TAX_ID , 1 , 7 ) <> 'XXX-XX-' ) ON UPDATE VIOLATION PRESERVE CUSTOMER_TAX_ID ; CREATE TABLE BANK_SCHEMA.ACCOUNTS ( ACCOUNT_ID INTEGER GENERATED ALWAYS AS IDENTITY ( START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE NO CYCLE NO ORDER CACHE 20 ), CUSTOMER_ID FOR COLUMN CUSTID INTEGER NOT NULL , ACCOUNT_NUMBER FOR COLUMN ACCOUNTNO VARCHAR(50) CCSID 37 NOT NULL , ACCOUNT_NAME FOR COLUMN ACCOUNTNAM CHAR(12) CCSID 37 NOT NULL , ACCOUNT_DATE_OPENED FOR COLUMN OPENDATE DATE DEFAULT CURRENT_DATE , ACCOUNT_DATE_CLOSED FOR COLUMN CLOSEDATE DATE DEFAULT NULL , ACCOUNT_CURRENT_BALANCE FOR COLUMN ACCTBAL DECIMAL(11, 2) NOT NULL DEFAULT 0 , INSERT_TIMESTAMP FOR COLUMN INSDATE TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , UPDATE_TIMESTAMP FOR COLUMN UPDDATE TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , CONSTRAINT BANK_SCHEMA.ACCOUNT_ID_PK PRIMARY KEY( ACCOUNT_ID ) );"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 137, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.49662017822266, "t": 754.4017944335938, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9092414379119873, "cells": [{"id": 0, "text": "122 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "122"}, {"label": "page_footer", "id": 1, "page_no": 137, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.57022857666016, "t": 754.6959228515625, "r": 339.9194030761719, "b": 764.0059204101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9339437484741211, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 138, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Appendix A. Database definitions for the RCAC banking example ", "bbox": {"l": 257.57999, "t": 755.538002, "r": 517.90582, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "123", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "ALTER TABLE BANK_SCHEMA.ACCOUNTS ", "bbox": {"l": 64.800003, "t": 71.67296999999996, "r": 213.11909, "b": 79.60199, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "ADD CONSTRAINT BANK_SCHEMA.ACCOUNT_CUSTOMER_ID_FK ", "bbox": {"l": 79.200005, "t": 82.65295000000015, "r": 303.8985, "b": 90.58196999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "FOREIGN KEY( CUSTOMER_ID ) ", "bbox": {"l": 79.200005, "t": 93.63292999999999, "r": 200.5191, "b": 101.56195000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "REFERENCES BANK_SCHEMA.CUSTOMERS ( CUSTO00001 ) ", "bbox": {"l": 79.200005, "t": 104.67322000000001, "r": 294.8985, "b": 112.60222999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "ON DELETE RESTRICT ", "bbox": {"l": 79.200005, "t": 115.65319999999997, "r": 164.5191, "b": 123.58220999999992, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ON UPDATE RESTRICT ; ", "bbox": {"l": 79.200005, "t": 126.63318000000015, "r": 173.57941, "b": 134.56219, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "ALTER TABLE BANK_SCHEMA.ACCOUNTS ", "bbox": {"l": 64.800003, "t": 148.6535, "r": 213.11909, "b": 156.58252000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "ADD CONSTRAINT BANK_SCHEMA.ACCOUNT_NUMBER_CHECK ", "bbox": {"l": 79.200005, "t": 159.69379000000004, "r": 294.8985, "b": 167.62279999999998, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "CHECK( ACCOUNT_NUMBER <> '*****' ) ", "bbox": {"l": 79.200005, "t": 170.67377, "r": 245.4588, "b": 178.60278000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ON UPDATE VIOLATION PRESERVE ACCOUNT_NUMBER ;", "bbox": {"l": 79.200005, "t": 181.65374999999995, "r": 285.8985, "b": 189.58276, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CREATE TABLE BANK_SCHEMA.TRANSACTIONS FOR SYSTEM NAME TRANS ( ", "bbox": {"l": 64.800003, "t": 203.67407000000003, "r": 343.43817, "b": 211.60308999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "TRANSACTION_ID FOR COLUMN TRANS00001 INTEGER GENERATED ALWAYS AS IDENTITY ( ", "bbox": {"l": 79.200005, "t": 214.65404999999998, "r": 420.71759, "b": 222.58307000000002, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "START WITH 1 INCREMENT BY 1 ", "bbox": {"l": 79.200005, "t": 225.69434, "r": 205.0191, "b": 233.62334999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "NO MINVALUE NO MAXVALUE ", "bbox": {"l": 79.200005, "t": 236.67431999999997, "r": 187.0191, "b": 244.60333000000003, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "NO CYCLE NO ORDER ", "bbox": {"l": 79.200005, "t": 247.65430000000003, "r": 160.07941, "b": 255.58330999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "CACHE 20 ), ", "bbox": {"l": 79.200005, "t": 258.69458, "r": 133.13971, "b": 266.6236, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ACCOUNT_ID INTEGER NOT NULL , ", "bbox": {"l": 79.200005, "t": 269.67456000000004, "r": 214.0191, "b": 277.60357999999997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "TRANSACTION_TYPE FOR COLUMN TRANS00002 CHAR(1) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 280.6546000000001, "r": 380.27789, "b": 288.58359, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "TRANSACTION_DATE FOR COLUMN TRANS00003 DATE NOT NULL DEFAULT CURRENT_DATE , ", "bbox": {"l": 79.200005, "t": 291.69492, "r": 420.71759, "b": 299.6239, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "TRANSACTION_TIME FOR COLUMN TRANS00004 TIME NOT NULL DEFAULT CURRENT_TIME , ", "bbox": {"l": 79.200005, "t": 302.67493, "r": 420.71759, "b": 310.60391, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "TRANSACTION_AMOUNT FOR COLUMN TRANS00005 DECIMAL(11, 2) NOT NULL , ", "bbox": {"l": 79.200005, "t": 313.65494, "r": 380.27789, "b": 321.58392, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "INSERT_TIMESTAMP FOR COLUMN INSER00001 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , ", "bbox": {"l": 79.200005, "t": 324.69525, "r": 546.53668, "b": 332.62424000000004, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "UPDATE_TIMESTAMP FOR COLUMN UPDAT00001 TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE ", "bbox": {"l": 79.200005, "t": 335.6752599999999, "r": 479.15729, "b": 343.60425, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , ", "bbox": {"l": 75.257378, "t": 346.65527, "r": 352.37787, "b": 354.58426, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "CONSTRAINT BANK_SCHEMA.TRANSACTION_ID_PK PRIMARY KEY( TRANSACTION_ID ) ) ; ", "bbox": {"l": 79.200005, "t": 357.69559, "r": 416.21759, "b": 365.62457, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "ALTER TABLE BANK_SCHEMA.TRANSACTIONS ", "bbox": {"l": 64.800003, "t": 379.65558, "r": 231.05878999999996, "b": 387.58456, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "ADD CONSTRAINT BANK_SCHEMA.TRANSACTIONS_ACCOUNT_ID_FK ", "bbox": {"l": 79.200005, "t": 390.69589, "r": 321.8382, "b": 398.62488, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "FOREIGN KEY( ACCOUNT_ID ) ", "bbox": {"l": 79.200005, "t": 401.6759, "r": 196.0191, "b": 409.60489, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "REFERENCES BANK_SCHEMA.ACCOUNTS ( ACCOUNT_ID ) ", "bbox": {"l": 79.200005, "t": 412.65591, "r": 290.3985, "b": 420.58490000000006, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "ON DELETE RESTRICT ", "bbox": {"l": 79.200005, "t": 423.69622999999996, "r": 164.5191, "b": 431.6252099999999, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "ON UPDATE RESTRICT ;", "bbox": {"l": 79.200005, "t": 434.67624, "r": 169.07941, "b": 442.60522, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "/* Permissions and Masks */", "bbox": {"l": 64.800003, "t": 456.69653, "r": 186.11909, "b": 464.62552, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800003, "t": 478.65652, "r": 446.75726000000003, "b": 486.58551, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) ", "bbox": {"l": 79.200005, "t": 489.69684, "r": 528.59698, "b": 497.62582, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "OR ", "bbox": {"l": 64.800003, "t": 500.67685, "r": 78.300003, "b": 508.60583, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800003, "t": 511.65686, "r": 361.37787, "b": 519.5858499999999, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "AND ( C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ) ) ", "bbox": {"l": 64.800003, "t": 522.69717, "r": 374.87787, "b": 530.62616, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ENFORCED FOR ALL ACCESS ", "bbox": {"l": 79.200005, "t": 533.67715, "r": 196.0191, "b": 541.60617, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ENABLE ; ", "bbox": {"l": 79.200005, "t": 544.65717, "r": 124.1397, "b": 552.58617, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "CREATE MASK BANK_SCHEMA.MASK_EMAIL_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800003, "t": 566.67746, "r": 415.31757, "b": 574.60646, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "FOR COLUMN CUSTOMER_EMAIL ", "bbox": {"l": 79.200005, "t": 577.6574599999999, "r": 196.0191, "b": 585.58646, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "RETURN CASE ", "bbox": {"l": 79.200005, "t": 588.69775, "r": 137.63971, "b": 596.62675, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800003, "t": 599.67775, "r": 361.37787, "b": 607.60675, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "THEN C . CUSTOMER_EMAIL ", "bbox": {"l": 64.800003, "t": 610.65775, "r": 172.61909, "b": 618.5867499999999, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800003, "t": 621.69804, "r": 374.87787, "b": 629.62704, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "THEN C . CUSTOMER_EMAIL ", "bbox": {"l": 64.800003, "t": 632.67804, "r": 172.61909, "b": 640.60704, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ELSE '****@****' ", "bbox": {"l": 64.800003, "t": 643.71834, "r": 141.1794, "b": 651.64734, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "END ", "bbox": {"l": 64.800003, "t": 654.6983299999999, "r": 96.2397, "b": 662.62733, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ENABLE ; ", "bbox": {"l": 79.200005, "t": 665.67833, "r": 124.1397, "b": 673.60733, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "CREATE MASK BANK_SCHEMA.MASK_TAX_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800003, "t": 687.69863, "r": 419.81757, "b": 695.627632, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "FOR COLUMN CUSTOMER_TAX_ID ", "bbox": {"l": 79.200005, "t": 698.678635, "r": 200.5191, "b": 706.607635, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "RETURN CASE ", "bbox": {"l": 79.200005, "t": 709.718933, "r": 137.63971, "b": 717.647934, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800003, "t": 720.698936, "r": 361.37787, "b": 728.627941, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 256.79608154296875, "t": 754.73193359375, "r": 517.90582, "b": 763.9072265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9521042704582214, "cells": [{"id": 0, "text": "Appendix A. Database definitions for the RCAC banking example ", "bbox": {"l": 257.57999, "t": 755.538002, "r": 517.90582, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 530.0982055664062, "t": 754.3765869140625, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9163233041763306, "cells": [{"id": 1, "text": "123", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "code", "bbox": {"l": 62.7338981628418, "t": 71.67296999999996, "r": 546.53668, "b": 730.2366943359375, "coord_origin": "TOPLEFT"}, "confidence": 0.7971411347389221, "cells": [{"id": 2, "text": "ALTER TABLE BANK_SCHEMA.ACCOUNTS ", "bbox": {"l": 64.800003, "t": 71.67296999999996, "r": 213.11909, "b": 79.60199, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "ADD CONSTRAINT BANK_SCHEMA.ACCOUNT_CUSTOMER_ID_FK ", "bbox": {"l": 79.200005, "t": 82.65295000000015, "r": 303.8985, "b": 90.58196999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "FOREIGN KEY( CUSTOMER_ID ) ", "bbox": {"l": 79.200005, "t": 93.63292999999999, "r": 200.5191, "b": 101.56195000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "REFERENCES BANK_SCHEMA.CUSTOMERS ( CUSTO00001 ) ", "bbox": {"l": 79.200005, "t": 104.67322000000001, "r": 294.8985, "b": 112.60222999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "ON DELETE RESTRICT ", "bbox": {"l": 79.200005, "t": 115.65319999999997, "r": 164.5191, "b": 123.58220999999992, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ON UPDATE RESTRICT ; ", "bbox": {"l": 79.200005, "t": 126.63318000000015, "r": 173.57941, "b": 134.56219, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "ALTER TABLE BANK_SCHEMA.ACCOUNTS ", "bbox": {"l": 64.800003, "t": 148.6535, "r": 213.11909, "b": 156.58252000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "ADD CONSTRAINT BANK_SCHEMA.ACCOUNT_NUMBER_CHECK ", "bbox": {"l": 79.200005, "t": 159.69379000000004, "r": 294.8985, "b": 167.62279999999998, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "CHECK( ACCOUNT_NUMBER <> '*****' ) ", "bbox": {"l": 79.200005, "t": 170.67377, "r": 245.4588, "b": 178.60278000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ON UPDATE VIOLATION PRESERVE ACCOUNT_NUMBER ;", "bbox": {"l": 79.200005, "t": 181.65374999999995, "r": 285.8985, "b": 189.58276, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CREATE TABLE BANK_SCHEMA.TRANSACTIONS FOR SYSTEM NAME TRANS ( ", "bbox": {"l": 64.800003, "t": 203.67407000000003, "r": 343.43817, "b": 211.60308999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "TRANSACTION_ID FOR COLUMN TRANS00001 INTEGER GENERATED ALWAYS AS IDENTITY ( ", "bbox": {"l": 79.200005, "t": 214.65404999999998, "r": 420.71759, "b": 222.58307000000002, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "START WITH 1 INCREMENT BY 1 ", "bbox": {"l": 79.200005, "t": 225.69434, "r": 205.0191, "b": 233.62334999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "NO MINVALUE NO MAXVALUE ", "bbox": {"l": 79.200005, "t": 236.67431999999997, "r": 187.0191, "b": 244.60333000000003, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "NO CYCLE NO ORDER ", "bbox": {"l": 79.200005, "t": 247.65430000000003, "r": 160.07941, "b": 255.58330999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "CACHE 20 ), ", "bbox": {"l": 79.200005, "t": 258.69458, "r": 133.13971, "b": 266.6236, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ACCOUNT_ID INTEGER NOT NULL , ", "bbox": {"l": 79.200005, "t": 269.67456000000004, "r": 214.0191, "b": 277.60357999999997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "TRANSACTION_TYPE FOR COLUMN TRANS00002 CHAR(1) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 280.6546000000001, "r": 380.27789, "b": 288.58359, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "TRANSACTION_DATE FOR COLUMN TRANS00003 DATE NOT NULL DEFAULT CURRENT_DATE , ", "bbox": {"l": 79.200005, "t": 291.69492, "r": 420.71759, "b": 299.6239, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "TRANSACTION_TIME FOR COLUMN TRANS00004 TIME NOT NULL DEFAULT CURRENT_TIME , ", "bbox": {"l": 79.200005, "t": 302.67493, "r": 420.71759, "b": 310.60391, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "TRANSACTION_AMOUNT FOR COLUMN TRANS00005 DECIMAL(11, 2) NOT NULL , ", "bbox": {"l": 79.200005, "t": 313.65494, "r": 380.27789, "b": 321.58392, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "INSERT_TIMESTAMP FOR COLUMN INSER00001 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , ", "bbox": {"l": 79.200005, "t": 324.69525, "r": 546.53668, "b": 332.62424000000004, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "UPDATE_TIMESTAMP FOR COLUMN UPDAT00001 TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE ", "bbox": {"l": 79.200005, "t": 335.6752599999999, "r": 479.15729, "b": 343.60425, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , ", "bbox": {"l": 75.257378, "t": 346.65527, "r": 352.37787, "b": 354.58426, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "CONSTRAINT BANK_SCHEMA.TRANSACTION_ID_PK PRIMARY KEY( TRANSACTION_ID ) ) ; ", "bbox": {"l": 79.200005, "t": 357.69559, "r": 416.21759, "b": 365.62457, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "ALTER TABLE BANK_SCHEMA.TRANSACTIONS ", "bbox": {"l": 64.800003, "t": 379.65558, "r": 231.05878999999996, "b": 387.58456, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "ADD CONSTRAINT BANK_SCHEMA.TRANSACTIONS_ACCOUNT_ID_FK ", "bbox": {"l": 79.200005, "t": 390.69589, "r": 321.8382, "b": 398.62488, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "FOREIGN KEY( ACCOUNT_ID ) ", "bbox": {"l": 79.200005, "t": 401.6759, "r": 196.0191, "b": 409.60489, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "REFERENCES BANK_SCHEMA.ACCOUNTS ( ACCOUNT_ID ) ", "bbox": {"l": 79.200005, "t": 412.65591, "r": 290.3985, "b": 420.58490000000006, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "ON DELETE RESTRICT ", "bbox": {"l": 79.200005, "t": 423.69622999999996, "r": 164.5191, "b": 431.6252099999999, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "ON UPDATE RESTRICT ;", "bbox": {"l": 79.200005, "t": 434.67624, "r": 169.07941, "b": 442.60522, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "/* Permissions and Masks */", "bbox": {"l": 64.800003, "t": 456.69653, "r": 186.11909, "b": 464.62552, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800003, "t": 478.65652, "r": 446.75726000000003, "b": 486.58551, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) ", "bbox": {"l": 79.200005, "t": 489.69684, "r": 528.59698, "b": 497.62582, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "OR ", "bbox": {"l": 64.800003, "t": 500.67685, "r": 78.300003, "b": 508.60583, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800003, "t": 511.65686, "r": 361.37787, "b": 519.5858499999999, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "AND ( C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ) ) ", "bbox": {"l": 64.800003, "t": 522.69717, "r": 374.87787, "b": 530.62616, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ENFORCED FOR ALL ACCESS ", "bbox": {"l": 79.200005, "t": 533.67715, "r": 196.0191, "b": 541.60617, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ENABLE ; ", "bbox": {"l": 79.200005, "t": 544.65717, "r": 124.1397, "b": 552.58617, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "CREATE MASK BANK_SCHEMA.MASK_EMAIL_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800003, "t": 566.67746, "r": 415.31757, "b": 574.60646, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "FOR COLUMN CUSTOMER_EMAIL ", "bbox": {"l": 79.200005, "t": 577.6574599999999, "r": 196.0191, "b": 585.58646, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "RETURN CASE ", "bbox": {"l": 79.200005, "t": 588.69775, "r": 137.63971, "b": 596.62675, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800003, "t": 599.67775, "r": 361.37787, "b": 607.60675, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "THEN C . CUSTOMER_EMAIL ", "bbox": {"l": 64.800003, "t": 610.65775, "r": 172.61909, "b": 618.5867499999999, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800003, "t": 621.69804, "r": 374.87787, "b": 629.62704, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "THEN C . CUSTOMER_EMAIL ", "bbox": {"l": 64.800003, "t": 632.67804, "r": 172.61909, "b": 640.60704, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ELSE '****@****' ", "bbox": {"l": 64.800003, "t": 643.71834, "r": 141.1794, "b": 651.64734, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "END ", "bbox": {"l": 64.800003, "t": 654.6983299999999, "r": 96.2397, "b": 662.62733, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ENABLE ; ", "bbox": {"l": 79.200005, "t": 665.67833, "r": 124.1397, "b": 673.60733, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "CREATE MASK BANK_SCHEMA.MASK_TAX_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800003, "t": 687.69863, "r": 419.81757, "b": 695.627632, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "FOR COLUMN CUSTOMER_TAX_ID ", "bbox": {"l": 79.200005, "t": 698.678635, "r": 200.5191, "b": 706.607635, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "RETURN CASE ", "bbox": {"l": 79.200005, "t": 709.718933, "r": 137.63971, "b": 717.647934, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800003, "t": 720.698936, "r": 361.37787, "b": 728.627941, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 138, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 256.79608154296875, "t": 754.73193359375, "r": 517.90582, "b": 763.9072265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9521042704582214, "cells": [{"id": 0, "text": "Appendix A. Database definitions for the RCAC banking example ", "bbox": {"l": 257.57999, "t": 755.538002, "r": 517.90582, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Appendix A. Database definitions for the RCAC banking example"}, {"label": "page_footer", "id": 1, "page_no": 138, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.0982055664062, "t": 754.3765869140625, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9163233041763306, "cells": [{"id": 1, "text": "123", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "123"}, {"label": "code", "id": 2, "page_no": 138, "cluster": {"id": 2, "label": "code", "bbox": {"l": 62.7338981628418, "t": 71.67296999999996, "r": 546.53668, "b": 730.2366943359375, "coord_origin": "TOPLEFT"}, "confidence": 0.7971411347389221, "cells": [{"id": 2, "text": "ALTER TABLE BANK_SCHEMA.ACCOUNTS ", "bbox": {"l": 64.800003, "t": 71.67296999999996, "r": 213.11909, "b": 79.60199, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "ADD CONSTRAINT BANK_SCHEMA.ACCOUNT_CUSTOMER_ID_FK ", "bbox": {"l": 79.200005, "t": 82.65295000000015, "r": 303.8985, "b": 90.58196999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "FOREIGN KEY( CUSTOMER_ID ) ", "bbox": {"l": 79.200005, "t": 93.63292999999999, "r": 200.5191, "b": 101.56195000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "REFERENCES BANK_SCHEMA.CUSTOMERS ( CUSTO00001 ) ", "bbox": {"l": 79.200005, "t": 104.67322000000001, "r": 294.8985, "b": 112.60222999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "ON DELETE RESTRICT ", "bbox": {"l": 79.200005, "t": 115.65319999999997, "r": 164.5191, "b": 123.58220999999992, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ON UPDATE RESTRICT ; ", "bbox": {"l": 79.200005, "t": 126.63318000000015, "r": 173.57941, "b": 134.56219, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "ALTER TABLE BANK_SCHEMA.ACCOUNTS ", "bbox": {"l": 64.800003, "t": 148.6535, "r": 213.11909, "b": 156.58252000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "ADD CONSTRAINT BANK_SCHEMA.ACCOUNT_NUMBER_CHECK ", "bbox": {"l": 79.200005, "t": 159.69379000000004, "r": 294.8985, "b": 167.62279999999998, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "CHECK( ACCOUNT_NUMBER <> '*****' ) ", "bbox": {"l": 79.200005, "t": 170.67377, "r": 245.4588, "b": 178.60278000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ON UPDATE VIOLATION PRESERVE ACCOUNT_NUMBER ;", "bbox": {"l": 79.200005, "t": 181.65374999999995, "r": 285.8985, "b": 189.58276, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CREATE TABLE BANK_SCHEMA.TRANSACTIONS FOR SYSTEM NAME TRANS ( ", "bbox": {"l": 64.800003, "t": 203.67407000000003, "r": 343.43817, "b": 211.60308999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "TRANSACTION_ID FOR COLUMN TRANS00001 INTEGER GENERATED ALWAYS AS IDENTITY ( ", "bbox": {"l": 79.200005, "t": 214.65404999999998, "r": 420.71759, "b": 222.58307000000002, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "START WITH 1 INCREMENT BY 1 ", "bbox": {"l": 79.200005, "t": 225.69434, "r": 205.0191, "b": 233.62334999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "NO MINVALUE NO MAXVALUE ", "bbox": {"l": 79.200005, "t": 236.67431999999997, "r": 187.0191, "b": 244.60333000000003, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "NO CYCLE NO ORDER ", "bbox": {"l": 79.200005, "t": 247.65430000000003, "r": 160.07941, "b": 255.58330999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "CACHE 20 ), ", "bbox": {"l": 79.200005, "t": 258.69458, "r": 133.13971, "b": 266.6236, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ACCOUNT_ID INTEGER NOT NULL , ", "bbox": {"l": 79.200005, "t": 269.67456000000004, "r": 214.0191, "b": 277.60357999999997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "TRANSACTION_TYPE FOR COLUMN TRANS00002 CHAR(1) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 280.6546000000001, "r": 380.27789, "b": 288.58359, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "TRANSACTION_DATE FOR COLUMN TRANS00003 DATE NOT NULL DEFAULT CURRENT_DATE , ", "bbox": {"l": 79.200005, "t": 291.69492, "r": 420.71759, "b": 299.6239, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "TRANSACTION_TIME FOR COLUMN TRANS00004 TIME NOT NULL DEFAULT CURRENT_TIME , ", "bbox": {"l": 79.200005, "t": 302.67493, "r": 420.71759, "b": 310.60391, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "TRANSACTION_AMOUNT FOR COLUMN TRANS00005 DECIMAL(11, 2) NOT NULL , ", "bbox": {"l": 79.200005, "t": 313.65494, "r": 380.27789, "b": 321.58392, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "INSERT_TIMESTAMP FOR COLUMN INSER00001 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , ", "bbox": {"l": 79.200005, "t": 324.69525, "r": 546.53668, "b": 332.62424000000004, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "UPDATE_TIMESTAMP FOR COLUMN UPDAT00001 TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE ", "bbox": {"l": 79.200005, "t": 335.6752599999999, "r": 479.15729, "b": 343.60425, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , ", "bbox": {"l": 75.257378, "t": 346.65527, "r": 352.37787, "b": 354.58426, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "CONSTRAINT BANK_SCHEMA.TRANSACTION_ID_PK PRIMARY KEY( TRANSACTION_ID ) ) ; ", "bbox": {"l": 79.200005, "t": 357.69559, "r": 416.21759, "b": 365.62457, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "ALTER TABLE BANK_SCHEMA.TRANSACTIONS ", "bbox": {"l": 64.800003, "t": 379.65558, "r": 231.05878999999996, "b": 387.58456, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "ADD CONSTRAINT BANK_SCHEMA.TRANSACTIONS_ACCOUNT_ID_FK ", "bbox": {"l": 79.200005, "t": 390.69589, "r": 321.8382, "b": 398.62488, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "FOREIGN KEY( ACCOUNT_ID ) ", "bbox": {"l": 79.200005, "t": 401.6759, "r": 196.0191, "b": 409.60489, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "REFERENCES BANK_SCHEMA.ACCOUNTS ( ACCOUNT_ID ) ", "bbox": {"l": 79.200005, "t": 412.65591, "r": 290.3985, "b": 420.58490000000006, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "ON DELETE RESTRICT ", "bbox": {"l": 79.200005, "t": 423.69622999999996, "r": 164.5191, "b": 431.6252099999999, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "ON UPDATE RESTRICT ;", "bbox": {"l": 79.200005, "t": 434.67624, "r": 169.07941, "b": 442.60522, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "/* Permissions and Masks */", "bbox": {"l": 64.800003, "t": 456.69653, "r": 186.11909, "b": 464.62552, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800003, "t": 478.65652, "r": 446.75726000000003, "b": 486.58551, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) ", "bbox": {"l": 79.200005, "t": 489.69684, "r": 528.59698, "b": 497.62582, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "OR ", "bbox": {"l": 64.800003, "t": 500.67685, "r": 78.300003, "b": 508.60583, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800003, "t": 511.65686, "r": 361.37787, "b": 519.5858499999999, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "AND ( C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ) ) ", "bbox": {"l": 64.800003, "t": 522.69717, "r": 374.87787, "b": 530.62616, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ENFORCED FOR ALL ACCESS ", "bbox": {"l": 79.200005, "t": 533.67715, "r": 196.0191, "b": 541.60617, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ENABLE ; ", "bbox": {"l": 79.200005, "t": 544.65717, "r": 124.1397, "b": 552.58617, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "CREATE MASK BANK_SCHEMA.MASK_EMAIL_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800003, "t": 566.67746, "r": 415.31757, "b": 574.60646, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "FOR COLUMN CUSTOMER_EMAIL ", "bbox": {"l": 79.200005, "t": 577.6574599999999, "r": 196.0191, "b": 585.58646, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "RETURN CASE ", "bbox": {"l": 79.200005, "t": 588.69775, "r": 137.63971, "b": 596.62675, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800003, "t": 599.67775, "r": 361.37787, "b": 607.60675, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "THEN C . CUSTOMER_EMAIL ", "bbox": {"l": 64.800003, "t": 610.65775, "r": 172.61909, "b": 618.5867499999999, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800003, "t": 621.69804, "r": 374.87787, "b": 629.62704, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "THEN C . CUSTOMER_EMAIL ", "bbox": {"l": 64.800003, "t": 632.67804, "r": 172.61909, "b": 640.60704, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ELSE '****@****' ", "bbox": {"l": 64.800003, "t": 643.71834, "r": 141.1794, "b": 651.64734, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "END ", "bbox": {"l": 64.800003, "t": 654.6983299999999, "r": 96.2397, "b": 662.62733, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ENABLE ; ", "bbox": {"l": 79.200005, "t": 665.67833, "r": 124.1397, "b": 673.60733, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "CREATE MASK BANK_SCHEMA.MASK_TAX_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800003, "t": 687.69863, "r": 419.81757, "b": 695.627632, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "FOR COLUMN CUSTOMER_TAX_ID ", "bbox": {"l": 79.200005, "t": 698.678635, "r": 200.5191, "b": 706.607635, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "RETURN CASE ", "bbox": {"l": 79.200005, "t": 709.718933, "r": 137.63971, "b": 717.647934, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800003, "t": 720.698936, "r": 361.37787, "b": 728.627941, "coord_origin": "TOPLEFT"}}]}, "text": "ALTER TABLE BANK_SCHEMA.ACCOUNTS ADD CONSTRAINT BANK_SCHEMA.ACCOUNT_CUSTOMER_ID_FK FOREIGN KEY( CUSTOMER_ID ) REFERENCES BANK_SCHEMA.CUSTOMERS ( CUSTO00001 ) ON DELETE RESTRICT ON UPDATE RESTRICT ; ALTER TABLE BANK_SCHEMA.ACCOUNTS ADD CONSTRAINT BANK_SCHEMA.ACCOUNT_NUMBER_CHECK CHECK( ACCOUNT_NUMBER <> '*****' ) ON UPDATE VIOLATION PRESERVE ACCOUNT_NUMBER ; CREATE TABLE BANK_SCHEMA.TRANSACTIONS FOR SYSTEM NAME TRANS ( TRANSACTION_ID FOR COLUMN TRANS00001 INTEGER GENERATED ALWAYS AS IDENTITY ( START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE NO CYCLE NO ORDER CACHE 20 ), ACCOUNT_ID INTEGER NOT NULL , TRANSACTION_TYPE FOR COLUMN TRANS00002 CHAR(1) CCSID 37 NOT NULL , TRANSACTION_DATE FOR COLUMN TRANS00003 DATE NOT NULL DEFAULT CURRENT_DATE , TRANSACTION_TIME FOR COLUMN TRANS00004 TIME NOT NULL DEFAULT CURRENT_TIME , TRANSACTION_AMOUNT FOR COLUMN TRANS00005 DECIMAL(11, 2) NOT NULL , INSERT_TIMESTAMP FOR COLUMN INSER00001 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , UPDATE_TIMESTAMP FOR COLUMN UPDAT00001 TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , CONSTRAINT BANK_SCHEMA.TRANSACTION_ID_PK PRIMARY KEY( TRANSACTION_ID ) ) ; ALTER TABLE BANK_SCHEMA.TRANSACTIONS ADD CONSTRAINT BANK_SCHEMA.TRANSACTIONS_ACCOUNT_ID_FK FOREIGN KEY( ACCOUNT_ID ) REFERENCES BANK_SCHEMA.ACCOUNTS ( ACCOUNT_ID ) ON DELETE RESTRICT ON UPDATE RESTRICT ; /* Permissions and Masks */ CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) OR ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 AND ( C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ) ) ENFORCED FOR ALL ACCESS ENABLE ; CREATE MASK BANK_SCHEMA.MASK_EMAIL_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_EMAIL RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_EMAIL WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_EMAIL ELSE '****@****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_TAX_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_TAX_ID RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1"}], "body": [{"label": "code", "id": 2, "page_no": 138, "cluster": {"id": 2, "label": "code", "bbox": {"l": 62.7338981628418, "t": 71.67296999999996, "r": 546.53668, "b": 730.2366943359375, "coord_origin": "TOPLEFT"}, "confidence": 0.7971411347389221, "cells": [{"id": 2, "text": "ALTER TABLE BANK_SCHEMA.ACCOUNTS ", "bbox": {"l": 64.800003, "t": 71.67296999999996, "r": 213.11909, "b": 79.60199, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "ADD CONSTRAINT BANK_SCHEMA.ACCOUNT_CUSTOMER_ID_FK ", "bbox": {"l": 79.200005, "t": 82.65295000000015, "r": 303.8985, "b": 90.58196999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "FOREIGN KEY( CUSTOMER_ID ) ", "bbox": {"l": 79.200005, "t": 93.63292999999999, "r": 200.5191, "b": 101.56195000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "REFERENCES BANK_SCHEMA.CUSTOMERS ( CUSTO00001 ) ", "bbox": {"l": 79.200005, "t": 104.67322000000001, "r": 294.8985, "b": 112.60222999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "ON DELETE RESTRICT ", "bbox": {"l": 79.200005, "t": 115.65319999999997, "r": 164.5191, "b": 123.58220999999992, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ON UPDATE RESTRICT ; ", "bbox": {"l": 79.200005, "t": 126.63318000000015, "r": 173.57941, "b": 134.56219, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "ALTER TABLE BANK_SCHEMA.ACCOUNTS ", "bbox": {"l": 64.800003, "t": 148.6535, "r": 213.11909, "b": 156.58252000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "ADD CONSTRAINT BANK_SCHEMA.ACCOUNT_NUMBER_CHECK ", "bbox": {"l": 79.200005, "t": 159.69379000000004, "r": 294.8985, "b": 167.62279999999998, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "CHECK( ACCOUNT_NUMBER <> '*****' ) ", "bbox": {"l": 79.200005, "t": 170.67377, "r": 245.4588, "b": 178.60278000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ON UPDATE VIOLATION PRESERVE ACCOUNT_NUMBER ;", "bbox": {"l": 79.200005, "t": 181.65374999999995, "r": 285.8985, "b": 189.58276, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CREATE TABLE BANK_SCHEMA.TRANSACTIONS FOR SYSTEM NAME TRANS ( ", "bbox": {"l": 64.800003, "t": 203.67407000000003, "r": 343.43817, "b": 211.60308999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "TRANSACTION_ID FOR COLUMN TRANS00001 INTEGER GENERATED ALWAYS AS IDENTITY ( ", "bbox": {"l": 79.200005, "t": 214.65404999999998, "r": 420.71759, "b": 222.58307000000002, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "START WITH 1 INCREMENT BY 1 ", "bbox": {"l": 79.200005, "t": 225.69434, "r": 205.0191, "b": 233.62334999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "NO MINVALUE NO MAXVALUE ", "bbox": {"l": 79.200005, "t": 236.67431999999997, "r": 187.0191, "b": 244.60333000000003, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "NO CYCLE NO ORDER ", "bbox": {"l": 79.200005, "t": 247.65430000000003, "r": 160.07941, "b": 255.58330999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "CACHE 20 ), ", "bbox": {"l": 79.200005, "t": 258.69458, "r": 133.13971, "b": 266.6236, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ACCOUNT_ID INTEGER NOT NULL , ", "bbox": {"l": 79.200005, "t": 269.67456000000004, "r": 214.0191, "b": 277.60357999999997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "TRANSACTION_TYPE FOR COLUMN TRANS00002 CHAR(1) CCSID 37 NOT NULL , ", "bbox": {"l": 79.200005, "t": 280.6546000000001, "r": 380.27789, "b": 288.58359, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "TRANSACTION_DATE FOR COLUMN TRANS00003 DATE NOT NULL DEFAULT CURRENT_DATE , ", "bbox": {"l": 79.200005, "t": 291.69492, "r": 420.71759, "b": 299.6239, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "TRANSACTION_TIME FOR COLUMN TRANS00004 TIME NOT NULL DEFAULT CURRENT_TIME , ", "bbox": {"l": 79.200005, "t": 302.67493, "r": 420.71759, "b": 310.60391, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "TRANSACTION_AMOUNT FOR COLUMN TRANS00005 DECIMAL(11, 2) NOT NULL , ", "bbox": {"l": 79.200005, "t": 313.65494, "r": 380.27789, "b": 321.58392, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "INSERT_TIMESTAMP FOR COLUMN INSER00001 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , ", "bbox": {"l": 79.200005, "t": 324.69525, "r": 546.53668, "b": 332.62424000000004, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "UPDATE_TIMESTAMP FOR COLUMN UPDAT00001 TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE ", "bbox": {"l": 79.200005, "t": 335.6752599999999, "r": 479.15729, "b": 343.60425, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , ", "bbox": {"l": 75.257378, "t": 346.65527, "r": 352.37787, "b": 354.58426, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "CONSTRAINT BANK_SCHEMA.TRANSACTION_ID_PK PRIMARY KEY( TRANSACTION_ID ) ) ; ", "bbox": {"l": 79.200005, "t": 357.69559, "r": 416.21759, "b": 365.62457, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "ALTER TABLE BANK_SCHEMA.TRANSACTIONS ", "bbox": {"l": 64.800003, "t": 379.65558, "r": 231.05878999999996, "b": 387.58456, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "ADD CONSTRAINT BANK_SCHEMA.TRANSACTIONS_ACCOUNT_ID_FK ", "bbox": {"l": 79.200005, "t": 390.69589, "r": 321.8382, "b": 398.62488, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "FOREIGN KEY( ACCOUNT_ID ) ", "bbox": {"l": 79.200005, "t": 401.6759, "r": 196.0191, "b": 409.60489, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "REFERENCES BANK_SCHEMA.ACCOUNTS ( ACCOUNT_ID ) ", "bbox": {"l": 79.200005, "t": 412.65591, "r": 290.3985, "b": 420.58490000000006, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "ON DELETE RESTRICT ", "bbox": {"l": 79.200005, "t": 423.69622999999996, "r": 164.5191, "b": 431.6252099999999, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "ON UPDATE RESTRICT ;", "bbox": {"l": 79.200005, "t": 434.67624, "r": 169.07941, "b": 442.60522, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "/* Permissions and Masks */", "bbox": {"l": 64.800003, "t": 456.69653, "r": 186.11909, "b": 464.62552, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800003, "t": 478.65652, "r": 446.75726000000003, "b": 486.58551, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) ", "bbox": {"l": 79.200005, "t": 489.69684, "r": 528.59698, "b": 497.62582, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "OR ", "bbox": {"l": 64.800003, "t": 500.67685, "r": 78.300003, "b": 508.60583, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800003, "t": 511.65686, "r": 361.37787, "b": 519.5858499999999, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "AND ( C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ) ) ", "bbox": {"l": 64.800003, "t": 522.69717, "r": 374.87787, "b": 530.62616, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ENFORCED FOR ALL ACCESS ", "bbox": {"l": 79.200005, "t": 533.67715, "r": 196.0191, "b": 541.60617, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ENABLE ; ", "bbox": {"l": 79.200005, "t": 544.65717, "r": 124.1397, "b": 552.58617, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "CREATE MASK BANK_SCHEMA.MASK_EMAIL_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800003, "t": 566.67746, "r": 415.31757, "b": 574.60646, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "FOR COLUMN CUSTOMER_EMAIL ", "bbox": {"l": 79.200005, "t": 577.6574599999999, "r": 196.0191, "b": 585.58646, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "RETURN CASE ", "bbox": {"l": 79.200005, "t": 588.69775, "r": 137.63971, "b": 596.62675, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800003, "t": 599.67775, "r": 361.37787, "b": 607.60675, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "THEN C . CUSTOMER_EMAIL ", "bbox": {"l": 64.800003, "t": 610.65775, "r": 172.61909, "b": 618.5867499999999, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800003, "t": 621.69804, "r": 374.87787, "b": 629.62704, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "THEN C . CUSTOMER_EMAIL ", "bbox": {"l": 64.800003, "t": 632.67804, "r": 172.61909, "b": 640.60704, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "ELSE '****@****' ", "bbox": {"l": 64.800003, "t": 643.71834, "r": 141.1794, "b": 651.64734, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "END ", "bbox": {"l": 64.800003, "t": 654.6983299999999, "r": 96.2397, "b": 662.62733, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ENABLE ; ", "bbox": {"l": 79.200005, "t": 665.67833, "r": 124.1397, "b": 673.60733, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "CREATE MASK BANK_SCHEMA.MASK_TAX_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800003, "t": 687.69863, "r": 419.81757, "b": 695.627632, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "FOR COLUMN CUSTOMER_TAX_ID ", "bbox": {"l": 79.200005, "t": 698.678635, "r": 200.5191, "b": 706.607635, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "RETURN CASE ", "bbox": {"l": 79.200005, "t": 709.718933, "r": 137.63971, "b": 717.647934, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800003, "t": 720.698936, "r": 361.37787, "b": 728.627941, "coord_origin": "TOPLEFT"}}]}, "text": "ALTER TABLE BANK_SCHEMA.ACCOUNTS ADD CONSTRAINT BANK_SCHEMA.ACCOUNT_CUSTOMER_ID_FK FOREIGN KEY( CUSTOMER_ID ) REFERENCES BANK_SCHEMA.CUSTOMERS ( CUSTO00001 ) ON DELETE RESTRICT ON UPDATE RESTRICT ; ALTER TABLE BANK_SCHEMA.ACCOUNTS ADD CONSTRAINT BANK_SCHEMA.ACCOUNT_NUMBER_CHECK CHECK( ACCOUNT_NUMBER <> '*****' ) ON UPDATE VIOLATION PRESERVE ACCOUNT_NUMBER ; CREATE TABLE BANK_SCHEMA.TRANSACTIONS FOR SYSTEM NAME TRANS ( TRANSACTION_ID FOR COLUMN TRANS00001 INTEGER GENERATED ALWAYS AS IDENTITY ( START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE NO CYCLE NO ORDER CACHE 20 ), ACCOUNT_ID INTEGER NOT NULL , TRANSACTION_TYPE FOR COLUMN TRANS00002 CHAR(1) CCSID 37 NOT NULL , TRANSACTION_DATE FOR COLUMN TRANS00003 DATE NOT NULL DEFAULT CURRENT_DATE , TRANSACTION_TIME FOR COLUMN TRANS00004 TIME NOT NULL DEFAULT CURRENT_TIME , TRANSACTION_AMOUNT FOR COLUMN TRANS00005 DECIMAL(11, 2) NOT NULL , INSERT_TIMESTAMP FOR COLUMN INSER00001 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP IMPLICITLY HIDDEN , UPDATE_TIMESTAMP FOR COLUMN UPDAT00001 TIMESTAMP GENERATED ALWAYS FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP NOT NULL IMPLICITLY HIDDEN , CONSTRAINT BANK_SCHEMA.TRANSACTION_ID_PK PRIMARY KEY( TRANSACTION_ID ) ) ; ALTER TABLE BANK_SCHEMA.TRANSACTIONS ADD CONSTRAINT BANK_SCHEMA.TRANSACTIONS_ACCOUNT_ID_FK FOREIGN KEY( ACCOUNT_ID ) REFERENCES BANK_SCHEMA.ACCOUNTS ( ACCOUNT_ID ) ON DELETE RESTRICT ON UPDATE RESTRICT ; /* Permissions and Masks */ CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) OR ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 AND ( C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ) ) ENFORCED FOR ALL ACCESS ENABLE ; CREATE MASK BANK_SCHEMA.MASK_EMAIL_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_EMAIL RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_EMAIL WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_EMAIL ELSE '****@****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_TAX_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_TAX_ID RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 138, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 256.79608154296875, "t": 754.73193359375, "r": 517.90582, "b": 763.9072265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9521042704582214, "cells": [{"id": 0, "text": "Appendix A. Database definitions for the RCAC banking example ", "bbox": {"l": 257.57999, "t": 755.538002, "r": 517.90582, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Appendix A. Database definitions for the RCAC banking example"}, {"label": "page_footer", "id": 1, "page_no": 138, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.0982055664062, "t": 754.3765869140625, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9163233041763306, "cells": [{"id": 1, "text": "123", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "123"}]}}, {"page_no": 139, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "124 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "THEN C . CUSTOMER_TAX_ID ", "bbox": {"l": 64.800308, "t": 71.67296999999996, "r": 177.1194, "b": 79.60199, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 ", "bbox": {"l": 64.800308, "t": 82.65295000000015, "r": 365.87817, "b": 90.58196999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( C . CUSTOMER_TAX_ID , 8 , 4 ) ) ", "bbox": {"l": 64.800308, "t": 93.63292999999999, "r": 392.81787, "b": 101.56195000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 104.67322000000001, "r": 374.87817, "b": 112.60222999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "THEN C . CUSTOMER_TAX_ID ", "bbox": {"l": 64.800308, "t": 115.65319999999997, "r": 177.1194, "b": 123.58220999999992, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ELSE 'XXX-XX-XXXX' ", "bbox": {"l": 64.800308, "t": 126.63318000000015, "r": 150.1797, "b": 134.56219, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "END ", "bbox": {"l": 64.800308, "t": 137.67345999999998, "r": 96.240005, "b": 145.60248, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 148.65344000000005, "r": 124.14001, "b": 156.58245999999997, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "CREATE MASK BANK_SCHEMA.MASK_DRIVERS_LICENSE_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 170.67377, "r": 460.25757, "b": 178.60278000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "FOR COLUMN CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 79.20031, "t": 181.65374999999995, "r": 272.45911, "b": 189.58276, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 192.69403, "r": 137.64001, "b": 200.62305000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 203.67400999999995, "r": 361.37817, "b": 211.60303, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 64.800308, "t": 214.65399000000002, "r": 249.0591, "b": 222.58300999999994, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 ", "bbox": {"l": 64.800308, "t": 225.69426999999996, "r": 365.87817, "b": 233.62329, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 64.800308, "t": 236.67426, "r": 249.0591, "b": 244.60326999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 247.65423999999996, "r": 374.87817, "b": 255.58325000000002, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 64.800308, "t": 258.69452, "r": 249.0591, "b": 266.62354000000005, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ELSE '*************' ", "bbox": {"l": 64.800308, "t": 269.67449999999997, "r": 159.1797, "b": 277.60352, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "END ", "bbox": {"l": 64.800308, "t": 280.65454, "r": 96.240005, "b": 288.58353, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 291.69485000000003, "r": 124.14001, "b": 299.62384, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "CREATE MASK BANK_SCHEMA.MASK_LOGIN_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 313.65485, "r": 428.81786999999997, "b": 321.58383, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "FOR COLUMN CUSTOMER_LOGIN_ID ", "bbox": {"l": 79.20031, "t": 324.69516, "r": 209.51941, "b": 332.62415, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 335.67517, "r": 137.64001, "b": 343.6041599999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 346.65518, "r": 361.37817, "b": 354.58417, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "THEN C . CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800308, "t": 357.69550000000004, "r": 186.1194, "b": 365.62448, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 368.67551, "r": 374.87817, "b": 376.60449, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "THEN C . CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800308, "t": 379.65552, "r": 186.1194, "b": 387.5845, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "ELSE '*****' ", "bbox": {"l": 64.800308, "t": 390.69583, "r": 123.24001, "b": 398.62482, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "END ", "bbox": {"l": 64.800308, "t": 401.67584, "r": 96.240005, "b": 409.60482999999994, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 412.65585, "r": 124.14001, "b": 420.58484, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 434.67615, "r": 469.25757, "b": 442.60513, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "FOR COLUMN CUSTOMER_SECURITY_QUESTION ", "bbox": {"l": 79.20031, "t": 445.65616000000006, "r": 249.95911, "b": 453.58514, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 456.6964699999999, "r": 137.64001, "b": 464.62546, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 467.67648, "r": 361.37817, "b": 475.60547, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "THEN C . CUSTOMER_SECURITY_QUESTION ", "bbox": {"l": 64.800308, "t": 478.65649, "r": 226.5591, "b": 486.58548, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 489.69681, "r": 374.87817, "b": 497.62579, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "THEN C . CUSTOMER_SECURITY_QUESTION ", "bbox": {"l": 64.800308, "t": 500.67682, "r": 226.5591, "b": 508.6058, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ELSE '*****' ", "bbox": {"l": 64.800308, "t": 511.65683, "r": 123.24001, "b": 519.58582, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "END ", "bbox": {"l": 64.800308, "t": 522.69714, "r": 96.240005, "b": 530.62613, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 533.6771200000001, "r": 124.14001, "b": 541.60614, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 555.69745, "r": 500.69727, "b": 563.62645, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "FOR COLUMN CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 79.20031, "t": 566.6774399999999, "r": 281.3988, "b": 574.60645, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 577.65744, "r": 137.64001, "b": 585.58644, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 588.6977400000001, "r": 361.37817, "b": 596.62674, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 64.800308, "t": 599.67773, "r": 258.05908, "b": 607.60674, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 610.65773, "r": 374.87817, "b": 618.58673, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 64.800308, "t": 621.69803, "r": 258.05908, "b": 629.62703, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "ELSE '*****' ", "bbox": {"l": 64.800308, "t": 632.6780200000001, "r": 123.24001, "b": 640.60703, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "END ", "bbox": {"l": 64.800308, "t": 643.71832, "r": 96.240005, "b": 651.64732, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 654.69832, "r": 124.14001, "b": 662.62732, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800308, "t": 676.71861, "r": 226.5591, "b": 684.64761, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ACTIVATE ROW ACCESS CONTROL ", "bbox": {"l": 79.20031, "t": 687.69862, "r": 214.01941, "b": 695.627617, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "ACTIVATE COLUMN ACCESS CONTROL ;", "bbox": {"l": 79.20031, "t": 698.678619, "r": 223.01941, "b": 706.60762, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.50080871582031, "t": 754.5338745117188, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8994000554084778, "cells": [{"id": 0, "text": "124 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 98.63966369628906, "t": 754.71435546875, "r": 339.882080078125, "b": 764.0100708007812, "coord_origin": "TOPLEFT"}, "confidence": 0.9430771470069885, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "code", "bbox": {"l": 62.60613250732422, "t": 69.35981750488281, "r": 500.69727, "b": 707.7635498046875, "coord_origin": "TOPLEFT"}, "confidence": 0.763217568397522, "cells": [{"id": 2, "text": "THEN C . CUSTOMER_TAX_ID ", "bbox": {"l": 64.800308, "t": 71.67296999999996, "r": 177.1194, "b": 79.60199, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 ", "bbox": {"l": 64.800308, "t": 82.65295000000015, "r": 365.87817, "b": 90.58196999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( C . CUSTOMER_TAX_ID , 8 , 4 ) ) ", "bbox": {"l": 64.800308, "t": 93.63292999999999, "r": 392.81787, "b": 101.56195000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 104.67322000000001, "r": 374.87817, "b": 112.60222999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "THEN C . CUSTOMER_TAX_ID ", "bbox": {"l": 64.800308, "t": 115.65319999999997, "r": 177.1194, "b": 123.58220999999992, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ELSE 'XXX-XX-XXXX' ", "bbox": {"l": 64.800308, "t": 126.63318000000015, "r": 150.1797, "b": 134.56219, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "END ", "bbox": {"l": 64.800308, "t": 137.67345999999998, "r": 96.240005, "b": 145.60248, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 148.65344000000005, "r": 124.14001, "b": 156.58245999999997, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "CREATE MASK BANK_SCHEMA.MASK_DRIVERS_LICENSE_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 170.67377, "r": 460.25757, "b": 178.60278000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "FOR COLUMN CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 79.20031, "t": 181.65374999999995, "r": 272.45911, "b": 189.58276, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 192.69403, "r": 137.64001, "b": 200.62305000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 203.67400999999995, "r": 361.37817, "b": 211.60303, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 64.800308, "t": 214.65399000000002, "r": 249.0591, "b": 222.58300999999994, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 ", "bbox": {"l": 64.800308, "t": 225.69426999999996, "r": 365.87817, "b": 233.62329, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 64.800308, "t": 236.67426, "r": 249.0591, "b": 244.60326999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 247.65423999999996, "r": 374.87817, "b": 255.58325000000002, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 64.800308, "t": 258.69452, "r": 249.0591, "b": 266.62354000000005, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ELSE '*************' ", "bbox": {"l": 64.800308, "t": 269.67449999999997, "r": 159.1797, "b": 277.60352, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "END ", "bbox": {"l": 64.800308, "t": 280.65454, "r": 96.240005, "b": 288.58353, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 291.69485000000003, "r": 124.14001, "b": 299.62384, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "CREATE MASK BANK_SCHEMA.MASK_LOGIN_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 313.65485, "r": 428.81786999999997, "b": 321.58383, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "FOR COLUMN CUSTOMER_LOGIN_ID ", "bbox": {"l": 79.20031, "t": 324.69516, "r": 209.51941, "b": 332.62415, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 335.67517, "r": 137.64001, "b": 343.6041599999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 346.65518, "r": 361.37817, "b": 354.58417, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "THEN C . CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800308, "t": 357.69550000000004, "r": 186.1194, "b": 365.62448, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 368.67551, "r": 374.87817, "b": 376.60449, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "THEN C . CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800308, "t": 379.65552, "r": 186.1194, "b": 387.5845, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "ELSE '*****' ", "bbox": {"l": 64.800308, "t": 390.69583, "r": 123.24001, "b": 398.62482, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "END ", "bbox": {"l": 64.800308, "t": 401.67584, "r": 96.240005, "b": 409.60482999999994, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 412.65585, "r": 124.14001, "b": 420.58484, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 434.67615, "r": 469.25757, "b": 442.60513, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "FOR COLUMN CUSTOMER_SECURITY_QUESTION ", "bbox": {"l": 79.20031, "t": 445.65616000000006, "r": 249.95911, "b": 453.58514, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 456.6964699999999, "r": 137.64001, "b": 464.62546, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 467.67648, "r": 361.37817, "b": 475.60547, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "THEN C . CUSTOMER_SECURITY_QUESTION ", "bbox": {"l": 64.800308, "t": 478.65649, "r": 226.5591, "b": 486.58548, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 489.69681, "r": 374.87817, "b": 497.62579, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "THEN C . CUSTOMER_SECURITY_QUESTION ", "bbox": {"l": 64.800308, "t": 500.67682, "r": 226.5591, "b": 508.6058, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ELSE '*****' ", "bbox": {"l": 64.800308, "t": 511.65683, "r": 123.24001, "b": 519.58582, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "END ", "bbox": {"l": 64.800308, "t": 522.69714, "r": 96.240005, "b": 530.62613, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 533.6771200000001, "r": 124.14001, "b": 541.60614, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 555.69745, "r": 500.69727, "b": 563.62645, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "FOR COLUMN CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 79.20031, "t": 566.6774399999999, "r": 281.3988, "b": 574.60645, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 577.65744, "r": 137.64001, "b": 585.58644, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 588.6977400000001, "r": 361.37817, "b": 596.62674, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 64.800308, "t": 599.67773, "r": 258.05908, "b": 607.60674, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 610.65773, "r": 374.87817, "b": 618.58673, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 64.800308, "t": 621.69803, "r": 258.05908, "b": 629.62703, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "ELSE '*****' ", "bbox": {"l": 64.800308, "t": 632.6780200000001, "r": 123.24001, "b": 640.60703, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "END ", "bbox": {"l": 64.800308, "t": 643.71832, "r": 96.240005, "b": 651.64732, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 654.69832, "r": 124.14001, "b": 662.62732, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800308, "t": 676.71861, "r": 226.5591, "b": 684.64761, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ACTIVATE ROW ACCESS CONTROL ", "bbox": {"l": 79.20031, "t": 687.69862, "r": 214.01941, "b": 695.627617, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "ACTIVATE COLUMN ACCESS CONTROL ;", "bbox": {"l": 79.20031, "t": 698.678619, "r": 223.01941, "b": 706.60762, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 139, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.50080871582031, "t": 754.5338745117188, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8994000554084778, "cells": [{"id": 0, "text": "124 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "124"}, {"label": "page_footer", "id": 1, "page_no": 139, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.63966369628906, "t": 754.71435546875, "r": 339.882080078125, "b": 764.0100708007812, "coord_origin": "TOPLEFT"}, "confidence": 0.9430771470069885, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "code", "id": 2, "page_no": 139, "cluster": {"id": 2, "label": "code", "bbox": {"l": 62.60613250732422, "t": 69.35981750488281, "r": 500.69727, "b": 707.7635498046875, "coord_origin": "TOPLEFT"}, "confidence": 0.763217568397522, "cells": [{"id": 2, "text": "THEN C . CUSTOMER_TAX_ID ", "bbox": {"l": 64.800308, "t": 71.67296999999996, "r": 177.1194, "b": 79.60199, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 ", "bbox": {"l": 64.800308, "t": 82.65295000000015, "r": 365.87817, "b": 90.58196999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( C . CUSTOMER_TAX_ID , 8 , 4 ) ) ", "bbox": {"l": 64.800308, "t": 93.63292999999999, "r": 392.81787, "b": 101.56195000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 104.67322000000001, "r": 374.87817, "b": 112.60222999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "THEN C . CUSTOMER_TAX_ID ", "bbox": {"l": 64.800308, "t": 115.65319999999997, "r": 177.1194, "b": 123.58220999999992, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ELSE 'XXX-XX-XXXX' ", "bbox": {"l": 64.800308, "t": 126.63318000000015, "r": 150.1797, "b": 134.56219, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "END ", "bbox": {"l": 64.800308, "t": 137.67345999999998, "r": 96.240005, "b": 145.60248, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 148.65344000000005, "r": 124.14001, "b": 156.58245999999997, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "CREATE MASK BANK_SCHEMA.MASK_DRIVERS_LICENSE_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 170.67377, "r": 460.25757, "b": 178.60278000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "FOR COLUMN CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 79.20031, "t": 181.65374999999995, "r": 272.45911, "b": 189.58276, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 192.69403, "r": 137.64001, "b": 200.62305000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 203.67400999999995, "r": 361.37817, "b": 211.60303, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 64.800308, "t": 214.65399000000002, "r": 249.0591, "b": 222.58300999999994, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 ", "bbox": {"l": 64.800308, "t": 225.69426999999996, "r": 365.87817, "b": 233.62329, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 64.800308, "t": 236.67426, "r": 249.0591, "b": 244.60326999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 247.65423999999996, "r": 374.87817, "b": 255.58325000000002, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 64.800308, "t": 258.69452, "r": 249.0591, "b": 266.62354000000005, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ELSE '*************' ", "bbox": {"l": 64.800308, "t": 269.67449999999997, "r": 159.1797, "b": 277.60352, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "END ", "bbox": {"l": 64.800308, "t": 280.65454, "r": 96.240005, "b": 288.58353, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 291.69485000000003, "r": 124.14001, "b": 299.62384, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "CREATE MASK BANK_SCHEMA.MASK_LOGIN_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 313.65485, "r": 428.81786999999997, "b": 321.58383, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "FOR COLUMN CUSTOMER_LOGIN_ID ", "bbox": {"l": 79.20031, "t": 324.69516, "r": 209.51941, "b": 332.62415, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 335.67517, "r": 137.64001, "b": 343.6041599999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 346.65518, "r": 361.37817, "b": 354.58417, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "THEN C . CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800308, "t": 357.69550000000004, "r": 186.1194, "b": 365.62448, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 368.67551, "r": 374.87817, "b": 376.60449, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "THEN C . CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800308, "t": 379.65552, "r": 186.1194, "b": 387.5845, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "ELSE '*****' ", "bbox": {"l": 64.800308, "t": 390.69583, "r": 123.24001, "b": 398.62482, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "END ", "bbox": {"l": 64.800308, "t": 401.67584, "r": 96.240005, "b": 409.60482999999994, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 412.65585, "r": 124.14001, "b": 420.58484, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 434.67615, "r": 469.25757, "b": 442.60513, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "FOR COLUMN CUSTOMER_SECURITY_QUESTION ", "bbox": {"l": 79.20031, "t": 445.65616000000006, "r": 249.95911, "b": 453.58514, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 456.6964699999999, "r": 137.64001, "b": 464.62546, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 467.67648, "r": 361.37817, "b": 475.60547, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "THEN C . CUSTOMER_SECURITY_QUESTION ", "bbox": {"l": 64.800308, "t": 478.65649, "r": 226.5591, "b": 486.58548, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 489.69681, "r": 374.87817, "b": 497.62579, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "THEN C . CUSTOMER_SECURITY_QUESTION ", "bbox": {"l": 64.800308, "t": 500.67682, "r": 226.5591, "b": 508.6058, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ELSE '*****' ", "bbox": {"l": 64.800308, "t": 511.65683, "r": 123.24001, "b": 519.58582, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "END ", "bbox": {"l": 64.800308, "t": 522.69714, "r": 96.240005, "b": 530.62613, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 533.6771200000001, "r": 124.14001, "b": 541.60614, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 555.69745, "r": 500.69727, "b": 563.62645, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "FOR COLUMN CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 79.20031, "t": 566.6774399999999, "r": 281.3988, "b": 574.60645, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 577.65744, "r": 137.64001, "b": 585.58644, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 588.6977400000001, "r": 361.37817, "b": 596.62674, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 64.800308, "t": 599.67773, "r": 258.05908, "b": 607.60674, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 610.65773, "r": 374.87817, "b": 618.58673, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 64.800308, "t": 621.69803, "r": 258.05908, "b": 629.62703, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "ELSE '*****' ", "bbox": {"l": 64.800308, "t": 632.6780200000001, "r": 123.24001, "b": 640.60703, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "END ", "bbox": {"l": 64.800308, "t": 643.71832, "r": 96.240005, "b": 651.64732, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 654.69832, "r": 124.14001, "b": 662.62732, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800308, "t": 676.71861, "r": 226.5591, "b": 684.64761, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ACTIVATE ROW ACCESS CONTROL ", "bbox": {"l": 79.20031, "t": 687.69862, "r": 214.01941, "b": 695.627617, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "ACTIVATE COLUMN ACCESS CONTROL ;", "bbox": {"l": 79.20031, "t": 698.678619, "r": 223.01941, "b": 706.60762, "coord_origin": "TOPLEFT"}}]}, "text": "THEN C . CUSTOMER_TAX_ID WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( C . CUSTOMER_TAX_ID , 8 , 4 ) ) WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_TAX_ID ELSE 'XXX-XX-XXXX' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_DRIVERS_LICENSE_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_DRIVERS_LICENSE_NUMBER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ELSE '*************' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_LOGIN_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_LOGIN_ID RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_LOGIN_ID WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_LOGIN_ID ELSE '*****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_SECURITY_QUESTION RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION ELSE '*****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_SECURITY_QUESTION_ANSWER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ELSE '*****' END ENABLE ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL ;"}], "body": [{"label": "code", "id": 2, "page_no": 139, "cluster": {"id": 2, "label": "code", "bbox": {"l": 62.60613250732422, "t": 69.35981750488281, "r": 500.69727, "b": 707.7635498046875, "coord_origin": "TOPLEFT"}, "confidence": 0.763217568397522, "cells": [{"id": 2, "text": "THEN C . CUSTOMER_TAX_ID ", "bbox": {"l": 64.800308, "t": 71.67296999999996, "r": 177.1194, "b": 79.60199, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 ", "bbox": {"l": 64.800308, "t": 82.65295000000015, "r": 365.87817, "b": 90.58196999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( C . CUSTOMER_TAX_ID , 8 , 4 ) ) ", "bbox": {"l": 64.800308, "t": 93.63292999999999, "r": 392.81787, "b": 101.56195000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 104.67322000000001, "r": 374.87817, "b": 112.60222999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "THEN C . CUSTOMER_TAX_ID ", "bbox": {"l": 64.800308, "t": 115.65319999999997, "r": 177.1194, "b": 123.58220999999992, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ELSE 'XXX-XX-XXXX' ", "bbox": {"l": 64.800308, "t": 126.63318000000015, "r": 150.1797, "b": 134.56219, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "END ", "bbox": {"l": 64.800308, "t": 137.67345999999998, "r": 96.240005, "b": 145.60248, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 148.65344000000005, "r": 124.14001, "b": 156.58245999999997, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "CREATE MASK BANK_SCHEMA.MASK_DRIVERS_LICENSE_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 170.67377, "r": 460.25757, "b": 178.60278000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "FOR COLUMN CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 79.20031, "t": 181.65374999999995, "r": 272.45911, "b": 189.58276, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 192.69403, "r": 137.64001, "b": 200.62305000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 203.67400999999995, "r": 361.37817, "b": 211.60303, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 64.800308, "t": 214.65399000000002, "r": 249.0591, "b": 222.58300999999994, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 ", "bbox": {"l": 64.800308, "t": 225.69426999999996, "r": 365.87817, "b": 233.62329, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 64.800308, "t": 236.67426, "r": 249.0591, "b": 244.60326999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 247.65423999999996, "r": 374.87817, "b": 255.58325000000002, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 64.800308, "t": 258.69452, "r": 249.0591, "b": 266.62354000000005, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ELSE '*************' ", "bbox": {"l": 64.800308, "t": 269.67449999999997, "r": 159.1797, "b": 277.60352, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "END ", "bbox": {"l": 64.800308, "t": 280.65454, "r": 96.240005, "b": 288.58353, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 291.69485000000003, "r": 124.14001, "b": 299.62384, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "CREATE MASK BANK_SCHEMA.MASK_LOGIN_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 313.65485, "r": 428.81786999999997, "b": 321.58383, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "FOR COLUMN CUSTOMER_LOGIN_ID ", "bbox": {"l": 79.20031, "t": 324.69516, "r": 209.51941, "b": 332.62415, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 335.67517, "r": 137.64001, "b": 343.6041599999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 346.65518, "r": 361.37817, "b": 354.58417, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "THEN C . CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800308, "t": 357.69550000000004, "r": 186.1194, "b": 365.62448, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 368.67551, "r": 374.87817, "b": 376.60449, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "THEN C . CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800308, "t": 379.65552, "r": 186.1194, "b": 387.5845, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "ELSE '*****' ", "bbox": {"l": 64.800308, "t": 390.69583, "r": 123.24001, "b": 398.62482, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "END ", "bbox": {"l": 64.800308, "t": 401.67584, "r": 96.240005, "b": 409.60482999999994, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 412.65585, "r": 124.14001, "b": 420.58484, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 434.67615, "r": 469.25757, "b": 442.60513, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "FOR COLUMN CUSTOMER_SECURITY_QUESTION ", "bbox": {"l": 79.20031, "t": 445.65616000000006, "r": 249.95911, "b": 453.58514, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 456.6964699999999, "r": 137.64001, "b": 464.62546, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 467.67648, "r": 361.37817, "b": 475.60547, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "THEN C . CUSTOMER_SECURITY_QUESTION ", "bbox": {"l": 64.800308, "t": 478.65649, "r": 226.5591, "b": 486.58548, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 489.69681, "r": 374.87817, "b": 497.62579, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "THEN C . CUSTOMER_SECURITY_QUESTION ", "bbox": {"l": 64.800308, "t": 500.67682, "r": 226.5591, "b": 508.6058, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ELSE '*****' ", "bbox": {"l": 64.800308, "t": 511.65683, "r": 123.24001, "b": 519.58582, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "END ", "bbox": {"l": 64.800308, "t": 522.69714, "r": 96.240005, "b": 530.62613, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 533.6771200000001, "r": 124.14001, "b": 541.60614, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 555.69745, "r": 500.69727, "b": 563.62645, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "FOR COLUMN CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 79.20031, "t": 566.6774399999999, "r": 281.3988, "b": 574.60645, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 577.65744, "r": 137.64001, "b": 585.58644, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 588.6977400000001, "r": 361.37817, "b": 596.62674, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 64.800308, "t": 599.67773, "r": 258.05908, "b": 607.60674, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 610.65773, "r": 374.87817, "b": 618.58673, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 64.800308, "t": 621.69803, "r": 258.05908, "b": 629.62703, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "ELSE '*****' ", "bbox": {"l": 64.800308, "t": 632.6780200000001, "r": 123.24001, "b": 640.60703, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "END ", "bbox": {"l": 64.800308, "t": 643.71832, "r": 96.240005, "b": 651.64732, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 654.69832, "r": 124.14001, "b": 662.62732, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800308, "t": 676.71861, "r": 226.5591, "b": 684.64761, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ACTIVATE ROW ACCESS CONTROL ", "bbox": {"l": 79.20031, "t": 687.69862, "r": 214.01941, "b": 695.627617, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "ACTIVATE COLUMN ACCESS CONTROL ;", "bbox": {"l": 79.20031, "t": 698.678619, "r": 223.01941, "b": 706.60762, "coord_origin": "TOPLEFT"}}]}, "text": "THEN C . CUSTOMER_TAX_ID WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( C . CUSTOMER_TAX_ID , 8 , 4 ) ) WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_TAX_ID ELSE 'XXX-XX-XXXX' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_DRIVERS_LICENSE_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_DRIVERS_LICENSE_NUMBER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ELSE '*************' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_LOGIN_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_LOGIN_ID RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_LOGIN_ID WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_LOGIN_ID ELSE '*****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_SECURITY_QUESTION RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION ELSE '*****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_SECURITY_QUESTION_ANSWER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ELSE '*****' END ENABLE ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL ;"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 139, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.50080871582031, "t": 754.5338745117188, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8994000554084778, "cells": [{"id": 0, "text": "124 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "124"}, {"label": "page_footer", "id": 1, "page_no": 139, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.63966369628906, "t": 754.71435546875, "r": 339.882080078125, "b": 764.0100708007812, "coord_origin": "TOPLEFT"}, "confidence": 0.9430771470069885, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 140, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Appendix A. Database definitions for the RCAC banking example ", "bbox": {"l": 257.57999, "t": 755.538002, "r": 517.90582, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "125", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_ACCOUNTS ON BANK_SCHEMA.ACCOUNTS AS A ", "bbox": {"l": 64.800003, "t": 71.67296999999996, "r": 437.75726000000003, "b": 79.60199, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) ", "bbox": {"l": 79.200005, "t": 82.65295000000015, "r": 528.59698, "b": 90.58196999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "OR ", "bbox": {"l": 64.800003, "t": 93.63292999999999, "r": 78.300003, "b": 101.56195000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800003, "t": 104.67322000000001, "r": 361.37787, "b": 112.60222999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "AND ( A . CUSTOMER_ID IN ( ", "bbox": {"l": 64.800003, "t": 115.65319999999997, "r": 186.11909, "b": 123.58220999999992, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "SELECT C . CUSTOMER_ID ", "bbox": {"l": 64.800003, "t": 126.63318000000015, "r": 168.1794, "b": 134.56219, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "FROM BANK_SCHEMA . CUSTOMERS C ", "bbox": {"l": 64.800003, "t": 137.67345999999998, "r": 204.11909, "b": 145.60248, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "WHERE C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800003, "t": 148.65344000000005, "r": 343.43817, "b": 156.58245999999997, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "ENFORCED FOR ALL ACCESS ", "bbox": {"l": 79.200005, "t": 170.67377, "r": 196.0191, "b": 178.60278000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ENABLE ; ", "bbox": {"l": 79.200005, "t": 181.65374999999995, "r": 124.1397, "b": 189.58276, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CREATE MASK BANK_SCHEMA.MASK_ACCOUNT_NUMBER_ON_ACCOUNTS ON BANK_SCHEMA.ACCOUNTS AS A ", "bbox": {"l": 64.800003, "t": 203.67407000000003, "r": 446.75726000000003, "b": 211.60308999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "FOR COLUMN ACCOUNT_NUMBER ", "bbox": {"l": 79.200005, "t": 214.65404999999998, "r": 196.0191, "b": 222.58307000000002, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "RETURN CASE ", "bbox": {"l": 79.200005, "t": 225.69434, "r": 137.63971, "b": 233.62334999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800003, "t": 236.67431999999997, "r": 361.37787, "b": 244.60333000000003, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "THEN A . ACCOUNT_NUMBER ", "bbox": {"l": 64.800003, "t": 247.65430000000003, "r": 172.61909, "b": 255.58330999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 ", "bbox": {"l": 64.800003, "t": 258.69458, "r": 365.87787, "b": 266.6236, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "THEN A . ACCOUNT_NUMBER ", "bbox": {"l": 64.800003, "t": 269.67456000000004, "r": 172.61909, "b": 277.60357999999997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800003, "t": 280.6546000000001, "r": 374.87787, "b": 288.58359, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "THEN A . ACCOUNT_NUMBER ", "bbox": {"l": 64.800003, "t": 291.69492, "r": 172.61909, "b": 299.6239, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "ELSE '*****' ", "bbox": {"l": 64.800003, "t": 302.67493, "r": 123.2397, "b": 310.60391, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "END ", "bbox": {"l": 64.800003, "t": 313.65494, "r": 96.2397, "b": 321.58392, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ENABLE ; ", "bbox": {"l": 79.200005, "t": 324.69525, "r": 124.1397, "b": 332.62424000000004, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "ALTER TABLE BANK_SCHEMA.ACCOUNTS", "bbox": {"l": 64.800003, "t": 346.65524, "r": 212.80827, "b": 354.58423000000005, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "ACTIVATE ROW ACCESS CONTROL ", "bbox": {"l": 79.200005, "t": 357.69555999999994, "r": 214.0191, "b": 365.62454, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ACTIVATE COLUMN ACCESS CONTROL ;", "bbox": {"l": 79.200005, "t": 368.67557, "r": 223.01909999999998, "b": 376.60454999999996, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_TRANSACTIONS ON BANK_SCHEMA.TRANSACTIONS AS T ", "bbox": {"l": 64.800003, "t": 390.69586, "r": 473.75726000000003, "b": 398.62485, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) ", "bbox": {"l": 79.200005, "t": 401.67587000000003, "r": 528.59698, "b": 409.60486, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "OR ", "bbox": {"l": 64.800003, "t": 412.65588, "r": 78.300003, "b": 420.58487, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800003, "t": 423.6962, "r": 361.37787, "b": 431.62518, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "AND ( T . ACCOUNT_ID IN ( ", "bbox": {"l": 64.800003, "t": 434.67621, "r": 181.61909, "b": 442.60519, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "SELECT A . ACCOUNT_ID ", "bbox": {"l": 64.800003, "t": 445.65621999999996, "r": 163.6794, "b": 453.58521, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "FROM BANK_SCHEMA . ACCOUNTS A ", "bbox": {"l": 64.800003, "t": 456.69653, "r": 199.61909, "b": 464.62552, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "WHERE A . CUSTOMER_ID IN ( ", "bbox": {"l": 64.800003, "t": 467.67654, "r": 186.11909, "b": 475.60553, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "SELECT C . CUSTOMER_ID ", "bbox": {"l": 64.800003, "t": 478.65656, "r": 168.1794, "b": 486.58554, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "FROM BANK_SCHEMA . CUSTOMERS C ", "bbox": {"l": 64.800003, "t": 489.69687, "r": 204.11909, "b": 497.62585, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "WHERE C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800003, "t": 500.67688, "r": 343.43817, "b": 508.60587, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "ENFORCED FOR ALL ACCESS ", "bbox": {"l": 79.200005, "t": 522.69717, "r": 196.0191, "b": 530.62616, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ENABLE ; ", "bbox": {"l": 79.200005, "t": 533.67715, "r": 124.1397, "b": 541.60617, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ALTER TABLE BANK_SCHEMA.TRANSACTIONS ", "bbox": {"l": 64.800003, "t": 555.69748, "r": 240.05878999999996, "b": 563.62648, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "ACTIVATE ROW ACCESS CONTROL ;", "bbox": {"l": 79.200005, "t": 566.67747, "r": 209.5191, "b": 574.6064799999999, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "/* END */", "bbox": {"l": 64.800003, "t": 588.69778, "r": 105.2397, "b": 596.62679, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 256.8621520996094, "t": 754.7630004882812, "r": 517.90582, "b": 763.9440307617188, "coord_origin": "TOPLEFT"}, "confidence": 0.9532458186149597, "cells": [{"id": 0, "text": "Appendix A. Database definitions for the RCAC banking example ", "bbox": {"l": 257.57999, "t": 755.538002, "r": 517.90582, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 530.1473999023438, "t": 754.3292846679688, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9204425811767578, "cells": [{"id": 1, "text": "125", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "code", "bbox": {"l": 63.12764358520508, "t": 70.03921508789062, "r": 528.59698, "b": 600.8012084960938, "coord_origin": "TOPLEFT"}, "confidence": 0.867974579334259, "cells": [{"id": 2, "text": "CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_ACCOUNTS ON BANK_SCHEMA.ACCOUNTS AS A ", "bbox": {"l": 64.800003, "t": 71.67296999999996, "r": 437.75726000000003, "b": 79.60199, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) ", "bbox": {"l": 79.200005, "t": 82.65295000000015, "r": 528.59698, "b": 90.58196999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "OR ", "bbox": {"l": 64.800003, "t": 93.63292999999999, "r": 78.300003, "b": 101.56195000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800003, "t": 104.67322000000001, "r": 361.37787, "b": 112.60222999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "AND ( A . CUSTOMER_ID IN ( ", "bbox": {"l": 64.800003, "t": 115.65319999999997, "r": 186.11909, "b": 123.58220999999992, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "SELECT C . CUSTOMER_ID ", "bbox": {"l": 64.800003, "t": 126.63318000000015, "r": 168.1794, "b": 134.56219, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "FROM BANK_SCHEMA . CUSTOMERS C ", "bbox": {"l": 64.800003, "t": 137.67345999999998, "r": 204.11909, "b": 145.60248, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "WHERE C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800003, "t": 148.65344000000005, "r": 343.43817, "b": 156.58245999999997, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "ENFORCED FOR ALL ACCESS ", "bbox": {"l": 79.200005, "t": 170.67377, "r": 196.0191, "b": 178.60278000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ENABLE ; ", "bbox": {"l": 79.200005, "t": 181.65374999999995, "r": 124.1397, "b": 189.58276, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CREATE MASK BANK_SCHEMA.MASK_ACCOUNT_NUMBER_ON_ACCOUNTS ON BANK_SCHEMA.ACCOUNTS AS A ", "bbox": {"l": 64.800003, "t": 203.67407000000003, "r": 446.75726000000003, "b": 211.60308999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "FOR COLUMN ACCOUNT_NUMBER ", "bbox": {"l": 79.200005, "t": 214.65404999999998, "r": 196.0191, "b": 222.58307000000002, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "RETURN CASE ", "bbox": {"l": 79.200005, "t": 225.69434, "r": 137.63971, "b": 233.62334999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800003, "t": 236.67431999999997, "r": 361.37787, "b": 244.60333000000003, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "THEN A . ACCOUNT_NUMBER ", "bbox": {"l": 64.800003, "t": 247.65430000000003, "r": 172.61909, "b": 255.58330999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 ", "bbox": {"l": 64.800003, "t": 258.69458, "r": 365.87787, "b": 266.6236, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "THEN A . ACCOUNT_NUMBER ", "bbox": {"l": 64.800003, "t": 269.67456000000004, "r": 172.61909, "b": 277.60357999999997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800003, "t": 280.6546000000001, "r": 374.87787, "b": 288.58359, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "THEN A . ACCOUNT_NUMBER ", "bbox": {"l": 64.800003, "t": 291.69492, "r": 172.61909, "b": 299.6239, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "ELSE '*****' ", "bbox": {"l": 64.800003, "t": 302.67493, "r": 123.2397, "b": 310.60391, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "END ", "bbox": {"l": 64.800003, "t": 313.65494, "r": 96.2397, "b": 321.58392, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ENABLE ; ", "bbox": {"l": 79.200005, "t": 324.69525, "r": 124.1397, "b": 332.62424000000004, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "ALTER TABLE BANK_SCHEMA.ACCOUNTS", "bbox": {"l": 64.800003, "t": 346.65524, "r": 212.80827, "b": 354.58423000000005, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "ACTIVATE ROW ACCESS CONTROL ", "bbox": {"l": 79.200005, "t": 357.69555999999994, "r": 214.0191, "b": 365.62454, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ACTIVATE COLUMN ACCESS CONTROL ;", "bbox": {"l": 79.200005, "t": 368.67557, "r": 223.01909999999998, "b": 376.60454999999996, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_TRANSACTIONS ON BANK_SCHEMA.TRANSACTIONS AS T ", "bbox": {"l": 64.800003, "t": 390.69586, "r": 473.75726000000003, "b": 398.62485, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) ", "bbox": {"l": 79.200005, "t": 401.67587000000003, "r": 528.59698, "b": 409.60486, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "OR ", "bbox": {"l": 64.800003, "t": 412.65588, "r": 78.300003, "b": 420.58487, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800003, "t": 423.6962, "r": 361.37787, "b": 431.62518, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "AND ( T . ACCOUNT_ID IN ( ", "bbox": {"l": 64.800003, "t": 434.67621, "r": 181.61909, "b": 442.60519, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "SELECT A . ACCOUNT_ID ", "bbox": {"l": 64.800003, "t": 445.65621999999996, "r": 163.6794, "b": 453.58521, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "FROM BANK_SCHEMA . ACCOUNTS A ", "bbox": {"l": 64.800003, "t": 456.69653, "r": 199.61909, "b": 464.62552, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "WHERE A . CUSTOMER_ID IN ( ", "bbox": {"l": 64.800003, "t": 467.67654, "r": 186.11909, "b": 475.60553, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "SELECT C . CUSTOMER_ID ", "bbox": {"l": 64.800003, "t": 478.65656, "r": 168.1794, "b": 486.58554, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "FROM BANK_SCHEMA . CUSTOMERS C ", "bbox": {"l": 64.800003, "t": 489.69687, "r": 204.11909, "b": 497.62585, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "WHERE C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800003, "t": 500.67688, "r": 343.43817, "b": 508.60587, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "ENFORCED FOR ALL ACCESS ", "bbox": {"l": 79.200005, "t": 522.69717, "r": 196.0191, "b": 530.62616, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ENABLE ; ", "bbox": {"l": 79.200005, "t": 533.67715, "r": 124.1397, "b": 541.60617, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ALTER TABLE BANK_SCHEMA.TRANSACTIONS ", "bbox": {"l": 64.800003, "t": 555.69748, "r": 240.05878999999996, "b": 563.62648, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "ACTIVATE ROW ACCESS CONTROL ;", "bbox": {"l": 79.200005, "t": 566.67747, "r": 209.5191, "b": 574.6064799999999, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "/* END */", "bbox": {"l": 64.800003, "t": 588.69778, "r": 105.2397, "b": 596.62679, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 140, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 256.8621520996094, "t": 754.7630004882812, "r": 517.90582, "b": 763.9440307617188, "coord_origin": "TOPLEFT"}, "confidence": 0.9532458186149597, "cells": [{"id": 0, "text": "Appendix A. Database definitions for the RCAC banking example ", "bbox": {"l": 257.57999, "t": 755.538002, "r": 517.90582, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Appendix A. Database definitions for the RCAC banking example"}, {"label": "page_footer", "id": 1, "page_no": 140, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.1473999023438, "t": 754.3292846679688, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9204425811767578, "cells": [{"id": 1, "text": "125", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "125"}, {"label": "code", "id": 2, "page_no": 140, "cluster": {"id": 2, "label": "code", "bbox": {"l": 63.12764358520508, "t": 70.03921508789062, "r": 528.59698, "b": 600.8012084960938, "coord_origin": "TOPLEFT"}, "confidence": 0.867974579334259, "cells": [{"id": 2, "text": "CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_ACCOUNTS ON BANK_SCHEMA.ACCOUNTS AS A ", "bbox": {"l": 64.800003, "t": 71.67296999999996, "r": 437.75726000000003, "b": 79.60199, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) ", "bbox": {"l": 79.200005, "t": 82.65295000000015, "r": 528.59698, "b": 90.58196999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "OR ", "bbox": {"l": 64.800003, "t": 93.63292999999999, "r": 78.300003, "b": 101.56195000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800003, "t": 104.67322000000001, "r": 361.37787, "b": 112.60222999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "AND ( A . CUSTOMER_ID IN ( ", "bbox": {"l": 64.800003, "t": 115.65319999999997, "r": 186.11909, "b": 123.58220999999992, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "SELECT C . CUSTOMER_ID ", "bbox": {"l": 64.800003, "t": 126.63318000000015, "r": 168.1794, "b": 134.56219, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "FROM BANK_SCHEMA . CUSTOMERS C ", "bbox": {"l": 64.800003, "t": 137.67345999999998, "r": 204.11909, "b": 145.60248, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "WHERE C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800003, "t": 148.65344000000005, "r": 343.43817, "b": 156.58245999999997, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "ENFORCED FOR ALL ACCESS ", "bbox": {"l": 79.200005, "t": 170.67377, "r": 196.0191, "b": 178.60278000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ENABLE ; ", "bbox": {"l": 79.200005, "t": 181.65374999999995, "r": 124.1397, "b": 189.58276, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CREATE MASK BANK_SCHEMA.MASK_ACCOUNT_NUMBER_ON_ACCOUNTS ON BANK_SCHEMA.ACCOUNTS AS A ", "bbox": {"l": 64.800003, "t": 203.67407000000003, "r": 446.75726000000003, "b": 211.60308999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "FOR COLUMN ACCOUNT_NUMBER ", "bbox": {"l": 79.200005, "t": 214.65404999999998, "r": 196.0191, "b": 222.58307000000002, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "RETURN CASE ", "bbox": {"l": 79.200005, "t": 225.69434, "r": 137.63971, "b": 233.62334999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800003, "t": 236.67431999999997, "r": 361.37787, "b": 244.60333000000003, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "THEN A . ACCOUNT_NUMBER ", "bbox": {"l": 64.800003, "t": 247.65430000000003, "r": 172.61909, "b": 255.58330999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 ", "bbox": {"l": 64.800003, "t": 258.69458, "r": 365.87787, "b": 266.6236, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "THEN A . ACCOUNT_NUMBER ", "bbox": {"l": 64.800003, "t": 269.67456000000004, "r": 172.61909, "b": 277.60357999999997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800003, "t": 280.6546000000001, "r": 374.87787, "b": 288.58359, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "THEN A . ACCOUNT_NUMBER ", "bbox": {"l": 64.800003, "t": 291.69492, "r": 172.61909, "b": 299.6239, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "ELSE '*****' ", "bbox": {"l": 64.800003, "t": 302.67493, "r": 123.2397, "b": 310.60391, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "END ", "bbox": {"l": 64.800003, "t": 313.65494, "r": 96.2397, "b": 321.58392, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ENABLE ; ", "bbox": {"l": 79.200005, "t": 324.69525, "r": 124.1397, "b": 332.62424000000004, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "ALTER TABLE BANK_SCHEMA.ACCOUNTS", "bbox": {"l": 64.800003, "t": 346.65524, "r": 212.80827, "b": 354.58423000000005, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "ACTIVATE ROW ACCESS CONTROL ", "bbox": {"l": 79.200005, "t": 357.69555999999994, "r": 214.0191, "b": 365.62454, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ACTIVATE COLUMN ACCESS CONTROL ;", "bbox": {"l": 79.200005, "t": 368.67557, "r": 223.01909999999998, "b": 376.60454999999996, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_TRANSACTIONS ON BANK_SCHEMA.TRANSACTIONS AS T ", "bbox": {"l": 64.800003, "t": 390.69586, "r": 473.75726000000003, "b": 398.62485, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) ", "bbox": {"l": 79.200005, "t": 401.67587000000003, "r": 528.59698, "b": 409.60486, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "OR ", "bbox": {"l": 64.800003, "t": 412.65588, "r": 78.300003, "b": 420.58487, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800003, "t": 423.6962, "r": 361.37787, "b": 431.62518, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "AND ( T . ACCOUNT_ID IN ( ", "bbox": {"l": 64.800003, "t": 434.67621, "r": 181.61909, "b": 442.60519, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "SELECT A . ACCOUNT_ID ", "bbox": {"l": 64.800003, "t": 445.65621999999996, "r": 163.6794, "b": 453.58521, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "FROM BANK_SCHEMA . ACCOUNTS A ", "bbox": {"l": 64.800003, "t": 456.69653, "r": 199.61909, "b": 464.62552, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "WHERE A . CUSTOMER_ID IN ( ", "bbox": {"l": 64.800003, "t": 467.67654, "r": 186.11909, "b": 475.60553, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "SELECT C . CUSTOMER_ID ", "bbox": {"l": 64.800003, "t": 478.65656, "r": 168.1794, "b": 486.58554, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "FROM BANK_SCHEMA . CUSTOMERS C ", "bbox": {"l": 64.800003, "t": 489.69687, "r": 204.11909, "b": 497.62585, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "WHERE C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800003, "t": 500.67688, "r": 343.43817, "b": 508.60587, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "ENFORCED FOR ALL ACCESS ", "bbox": {"l": 79.200005, "t": 522.69717, "r": 196.0191, "b": 530.62616, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ENABLE ; ", "bbox": {"l": 79.200005, "t": 533.67715, "r": 124.1397, "b": 541.60617, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ALTER TABLE BANK_SCHEMA.TRANSACTIONS ", "bbox": {"l": 64.800003, "t": 555.69748, "r": 240.05878999999996, "b": 563.62648, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "ACTIVATE ROW ACCESS CONTROL ;", "bbox": {"l": 79.200005, "t": 566.67747, "r": 209.5191, "b": 574.6064799999999, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "/* END */", "bbox": {"l": 64.800003, "t": 588.69778, "r": 105.2397, "b": 596.62679, "coord_origin": "TOPLEFT"}}]}, "text": "CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_ACCOUNTS ON BANK_SCHEMA.ACCOUNTS AS A FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) OR ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 AND ( A . CUSTOMER_ID IN ( SELECT C . CUSTOMER_ID FROM BANK_SCHEMA . CUSTOMERS C WHERE C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ENFORCED FOR ALL ACCESS ENABLE ; CREATE MASK BANK_SCHEMA.MASK_ACCOUNT_NUMBER_ON_ACCOUNTS ON BANK_SCHEMA.ACCOUNTS AS A FOR COLUMN ACCOUNT_NUMBER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN A . ACCOUNT_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN A . ACCOUNT_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN A . ACCOUNT_NUMBER ELSE '*****' END ENABLE ; ALTER TABLE BANK_SCHEMA.ACCOUNTS ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL ; CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_TRANSACTIONS ON BANK_SCHEMA.TRANSACTIONS AS T FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) OR ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 AND ( T . ACCOUNT_ID IN ( SELECT A . ACCOUNT_ID FROM BANK_SCHEMA . ACCOUNTS A WHERE A . CUSTOMER_ID IN ( SELECT C . CUSTOMER_ID FROM BANK_SCHEMA . CUSTOMERS C WHERE C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ENFORCED FOR ALL ACCESS ENABLE ; ALTER TABLE BANK_SCHEMA.TRANSACTIONS ACTIVATE ROW ACCESS CONTROL ; /* END */"}], "body": [{"label": "code", "id": 2, "page_no": 140, "cluster": {"id": 2, "label": "code", "bbox": {"l": 63.12764358520508, "t": 70.03921508789062, "r": 528.59698, "b": 600.8012084960938, "coord_origin": "TOPLEFT"}, "confidence": 0.867974579334259, "cells": [{"id": 2, "text": "CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_ACCOUNTS ON BANK_SCHEMA.ACCOUNTS AS A ", "bbox": {"l": 64.800003, "t": 71.67296999999996, "r": 437.75726000000003, "b": 79.60199, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) ", "bbox": {"l": 79.200005, "t": 82.65295000000015, "r": 528.59698, "b": 90.58196999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "OR ", "bbox": {"l": 64.800003, "t": 93.63292999999999, "r": 78.300003, "b": 101.56195000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800003, "t": 104.67322000000001, "r": 361.37787, "b": 112.60222999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "AND ( A . CUSTOMER_ID IN ( ", "bbox": {"l": 64.800003, "t": 115.65319999999997, "r": 186.11909, "b": 123.58220999999992, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "SELECT C . CUSTOMER_ID ", "bbox": {"l": 64.800003, "t": 126.63318000000015, "r": 168.1794, "b": 134.56219, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "FROM BANK_SCHEMA . CUSTOMERS C ", "bbox": {"l": 64.800003, "t": 137.67345999999998, "r": 204.11909, "b": 145.60248, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "WHERE C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800003, "t": 148.65344000000005, "r": 343.43817, "b": 156.58245999999997, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "ENFORCED FOR ALL ACCESS ", "bbox": {"l": 79.200005, "t": 170.67377, "r": 196.0191, "b": 178.60278000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ENABLE ; ", "bbox": {"l": 79.200005, "t": 181.65374999999995, "r": 124.1397, "b": 189.58276, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CREATE MASK BANK_SCHEMA.MASK_ACCOUNT_NUMBER_ON_ACCOUNTS ON BANK_SCHEMA.ACCOUNTS AS A ", "bbox": {"l": 64.800003, "t": 203.67407000000003, "r": 446.75726000000003, "b": 211.60308999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "FOR COLUMN ACCOUNT_NUMBER ", "bbox": {"l": 79.200005, "t": 214.65404999999998, "r": 196.0191, "b": 222.58307000000002, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "RETURN CASE ", "bbox": {"l": 79.200005, "t": 225.69434, "r": 137.63971, "b": 233.62334999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800003, "t": 236.67431999999997, "r": 361.37787, "b": 244.60333000000003, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "THEN A . ACCOUNT_NUMBER ", "bbox": {"l": 64.800003, "t": 247.65430000000003, "r": 172.61909, "b": 255.58330999999998, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 ", "bbox": {"l": 64.800003, "t": 258.69458, "r": 365.87787, "b": 266.6236, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "THEN A . ACCOUNT_NUMBER ", "bbox": {"l": 64.800003, "t": 269.67456000000004, "r": 172.61909, "b": 277.60357999999997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800003, "t": 280.6546000000001, "r": 374.87787, "b": 288.58359, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "THEN A . ACCOUNT_NUMBER ", "bbox": {"l": 64.800003, "t": 291.69492, "r": 172.61909, "b": 299.6239, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "ELSE '*****' ", "bbox": {"l": 64.800003, "t": 302.67493, "r": 123.2397, "b": 310.60391, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "END ", "bbox": {"l": 64.800003, "t": 313.65494, "r": 96.2397, "b": 321.58392, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ENABLE ; ", "bbox": {"l": 79.200005, "t": 324.69525, "r": 124.1397, "b": 332.62424000000004, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "ALTER TABLE BANK_SCHEMA.ACCOUNTS", "bbox": {"l": 64.800003, "t": 346.65524, "r": 212.80827, "b": 354.58423000000005, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "ACTIVATE ROW ACCESS CONTROL ", "bbox": {"l": 79.200005, "t": 357.69555999999994, "r": 214.0191, "b": 365.62454, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ACTIVATE COLUMN ACCESS CONTROL ;", "bbox": {"l": 79.200005, "t": 368.67557, "r": 223.01909999999998, "b": 376.60454999999996, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_TRANSACTIONS ON BANK_SCHEMA.TRANSACTIONS AS T ", "bbox": {"l": 64.800003, "t": 390.69586, "r": 473.75726000000003, "b": 398.62485, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) ", "bbox": {"l": 79.200005, "t": 401.67587000000003, "r": 528.59698, "b": 409.60486, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "OR ", "bbox": {"l": 64.800003, "t": 412.65588, "r": 78.300003, "b": 420.58487, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800003, "t": 423.6962, "r": 361.37787, "b": 431.62518, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "AND ( T . ACCOUNT_ID IN ( ", "bbox": {"l": 64.800003, "t": 434.67621, "r": 181.61909, "b": 442.60519, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "SELECT A . ACCOUNT_ID ", "bbox": {"l": 64.800003, "t": 445.65621999999996, "r": 163.6794, "b": 453.58521, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "FROM BANK_SCHEMA . ACCOUNTS A ", "bbox": {"l": 64.800003, "t": 456.69653, "r": 199.61909, "b": 464.62552, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "WHERE A . CUSTOMER_ID IN ( ", "bbox": {"l": 64.800003, "t": 467.67654, "r": 186.11909, "b": 475.60553, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "SELECT C . CUSTOMER_ID ", "bbox": {"l": 64.800003, "t": 478.65656, "r": 168.1794, "b": 486.58554, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "FROM BANK_SCHEMA . CUSTOMERS C ", "bbox": {"l": 64.800003, "t": 489.69687, "r": 204.11909, "b": 497.62585, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "WHERE C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800003, "t": 500.67688, "r": 343.43817, "b": 508.60587, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "ENFORCED FOR ALL ACCESS ", "bbox": {"l": 79.200005, "t": 522.69717, "r": 196.0191, "b": 530.62616, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ENABLE ; ", "bbox": {"l": 79.200005, "t": 533.67715, "r": 124.1397, "b": 541.60617, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ALTER TABLE BANK_SCHEMA.TRANSACTIONS ", "bbox": {"l": 64.800003, "t": 555.69748, "r": 240.05878999999996, "b": 563.62648, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "ACTIVATE ROW ACCESS CONTROL ;", "bbox": {"l": 79.200005, "t": 566.67747, "r": 209.5191, "b": 574.6064799999999, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "/* END */", "bbox": {"l": 64.800003, "t": 588.69778, "r": 105.2397, "b": 596.62679, "coord_origin": "TOPLEFT"}}]}, "text": "CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_ACCOUNTS ON BANK_SCHEMA.ACCOUNTS AS A FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) OR ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 AND ( A . CUSTOMER_ID IN ( SELECT C . CUSTOMER_ID FROM BANK_SCHEMA . CUSTOMERS C WHERE C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ENFORCED FOR ALL ACCESS ENABLE ; CREATE MASK BANK_SCHEMA.MASK_ACCOUNT_NUMBER_ON_ACCOUNTS ON BANK_SCHEMA.ACCOUNTS AS A FOR COLUMN ACCOUNT_NUMBER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN A . ACCOUNT_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN A . ACCOUNT_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN A . ACCOUNT_NUMBER ELSE '*****' END ENABLE ; ALTER TABLE BANK_SCHEMA.ACCOUNTS ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL ; CREATE PERMISSION BANK_SCHEMA.PERMISSION1_ON_TRANSACTIONS ON BANK_SCHEMA.TRANSACTIONS AS T FOR ROWS WHERE ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'DBE' , 'ADMIN' , 'TELLER' ) = 1 ) OR ( QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 AND ( T . ACCOUNT_ID IN ( SELECT A . ACCOUNT_ID FROM BANK_SCHEMA . ACCOUNTS A WHERE A . CUSTOMER_ID IN ( SELECT C . CUSTOMER_ID FROM BANK_SCHEMA . CUSTOMERS C WHERE C . CUSTOMER_LOGIN_ID = BANK_SCHEMA . CUSTOMER_LOGIN_ID ENFORCED FOR ALL ACCESS ENABLE ; ALTER TABLE BANK_SCHEMA.TRANSACTIONS ACTIVATE ROW ACCESS CONTROL ; /* END */"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 140, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 256.8621520996094, "t": 754.7630004882812, "r": 517.90582, "b": 763.9440307617188, "coord_origin": "TOPLEFT"}, "confidence": 0.9532458186149597, "cells": [{"id": 0, "text": "Appendix A. Database definitions for the RCAC banking example ", "bbox": {"l": 257.57999, "t": 755.538002, "r": 517.90582, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Appendix A. Database definitions for the RCAC banking example"}, {"label": "page_footer", "id": 1, "page_no": 140, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.1473999023438, "t": 754.3292846679688, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9204425811767578, "cells": [{"id": 1, "text": "125", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "125"}]}}, {"page_no": 141, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "126 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.55541229248047, "t": 754.0760498046875, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.922152578830719, "cells": [{"id": 0, "text": "126 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 98.59571838378906, "t": 754.413818359375, "r": 340.1140441894531, "b": 764.1231079101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9446555376052856, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 141, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.55541229248047, "t": 754.0760498046875, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.922152578830719, "cells": [{"id": 0, "text": "126 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "126"}, {"label": "page_footer", "id": 1, "page_no": 141, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.59571838378906, "t": 754.413818359375, "r": 340.1140441894531, "b": 764.1231079101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9446555376052856, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}], "body": [], "headers": [{"label": "page_footer", "id": 0, "page_no": 141, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.55541229248047, "t": 754.0760498046875, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.922152578830719, "cells": [{"id": 0, "text": "126 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "126"}, {"label": "page_footer", "id": 1, "page_no": 141, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.59571838378906, "t": 754.413818359375, "r": 340.1140441894531, "b": 764.1231079101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9446555376052856, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 142, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "127", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Related publications", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 299.20081, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "The publications that are listed in this section are considered suitable for a more detailed ", "bbox": {"l": 136.8, "t": 132.64862000000005, "r": 530.0675, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "description of the topics that are covered in this paper.", "bbox": {"l": 136.8, "t": 144.64844000000005, "r": 376.55719, "b": 153.86145, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Other publications", "bbox": {"l": 64.800003, "t": 182.34069999999997, "r": 205.97418, "b": 197.1037, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "These publications are relevant as further information sources:", "bbox": {"l": 136.8, "t": 214.6087, "r": 413.18115, "b": 223.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "GLYPH", "bbox": {"l": 136.8, "t": 231.79767000000004, "r": 141.78, "b": 240.57245, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "IBM DB2 for i indexing methods and strategies", "bbox": {"l": 151.20016, "t": 231.64824999999996, "r": 356.53046, "b": 240.86127, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": " white paper:", "bbox": {"l": 356.58035, "t": 231.64824999999996, "r": 414.05658, "b": 240.86127, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "http://www.ibm.com/partnerworld/wps/servlet/ContentHandler/stg_ast_sys_wp_db2_i", "bbox": {"l": 151.20016, "t": 248.77747, "r": 545.99457, "b": 257.55224999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "_indexing_methods_strategies", "bbox": {"l": 151.20016, "t": 260.77728, "r": 291.11823, "b": 269.55206, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "GLYPH", "bbox": {"l": 136.8, "t": 277.75708, "r": 141.78, "b": 286.53186, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "IBM i Memo to Users Version 7.2", "bbox": {"l": 151.20016, "t": 277.60767, "r": 297.0036, "b": 286.8206799999999, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ":", "bbox": {"l": 297.00061, "t": 277.60767, "r": 299.7695, "b": 286.8206799999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgmtu.htm", "bbox": {"l": 151.20015, "t": 294.79666, "r": 535.97485, "b": 303.57144, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 311.77646, "r": 141.77998, "b": 320.55124, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "IBM i Version 7.2 DB2 for i SQL Reference Guide", "bbox": {"l": 151.20015, "t": 311.62708, "r": 368.68774, "b": 320.84006, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": ":", "bbox": {"l": 368.63989, "t": 311.62708, "r": 371.40878, "b": 320.84006, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/db2/rbafzintro.htm?l", "bbox": {"l": 151.20013, "t": 328.75626, "r": 545.99457, "b": 337.5310400000001, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "ang=en", "bbox": {"l": 151.20013, "t": 340.75607, "r": 181.13989, "b": 349.53085, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "GLYPH", "bbox": {"l": 136.79997, "t": 357.79565, "r": 141.77997, "b": 366.57043, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "IBM i Version 7.2 Journal Management Guide", "bbox": {"l": 151.20013, "t": 357.64627, "r": 352.84634, "b": 366.8592499999999, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": ":", "bbox": {"l": 352.86026, "t": 357.64627, "r": 355.62915, "b": 366.8592499999999, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzaki/rzakiprintthis", "bbox": {"l": 151.20013, "t": 374.77545, "r": 545.99457, "b": 383.55023, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": ".htm?lang=en", "bbox": {"l": 151.20013, "t": 386.77527, "r": 211.1394, "b": 395.55005, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "GLYPH", "bbox": {"l": 136.79997, "t": 403.75507, "r": 141.77997, "b": 412.52985, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "IBM i Version 7.2 Security Reference Guide", "bbox": {"l": 151.20013, "t": 403.60568, "r": 343.57654, "b": 412.81866, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": ":", "bbox": {"l": 343.56061, "t": 403.60568, "r": 346.3295, "b": 412.81866, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzarl/rzarlkickoff.h", "bbox": {"l": 151.20015, "t": 420.79465, "r": 545.99457, "b": 429.56943, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "tm?lang=en", "bbox": {"l": 151.20015, "t": 432.79446, "r": 201.17941, "b": 441.5692399999999, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Online resources", "bbox": {"l": 64.800003, "t": 470.3407, "r": 195.13574, "b": 485.1037, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "These websites are relevant as further information sources:", "bbox": {"l": 136.8, "t": 502.60861, "r": 399.36154, "b": 511.82159, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "GLYPH", "bbox": {"l": 136.8, "t": 519.7975799999999, "r": 141.78, "b": 528.57236, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Database programming topic of the IBM i 7.2 IBM Knowledge Center:", "bbox": {"l": 151.20016, "t": 519.64819, "r": 457.80386, "b": 528.86118, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgdbp.htm?l", "bbox": {"l": 151.20016, "t": 536.7774, "r": 545.99457, "b": 545.55215, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "ang=en", "bbox": {"l": 151.20016, "t": 548.77721, "r": 181.13992, "b": 557.55196, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "GLYPH", "bbox": {"l": 136.8, "t": 565.81677, "r": 141.78, "b": 574.59152, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Identity Theft Resource Center", "bbox": {"l": 151.20016, "t": 565.66737, "r": 287.27969, "b": 574.88037, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "http://www.idtheftcenter.org", "bbox": {"l": 151.20016, "t": 582.79659, "r": 291.11823, "b": 591.57133, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "GLYPH", "bbox": {"l": 136.8, "t": 599.7764, "r": 141.78, "b": 608.55115, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Ponemon Institute", "bbox": {"l": 151.20016, "t": 599.627, "r": 231.24367, "b": 608.84, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "http://www.ponemon.org/", "bbox": {"l": 151.20016, "t": 616.81596, "r": 266.09869, "b": 625.59071, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.680240631103516, "t": 754.7608032226562, "r": 257.24335, "b": 764.109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9499529600143433, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 530.1651000976562, "t": 754.2824096679688, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9230133295059204, "cells": [{"id": 1, "text": "127", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.800003, "t": 72.91483306884766, "r": 299.20081, "b": 96.60542297363281, "coord_origin": "TOPLEFT"}, "confidence": 0.9644432663917542, "cells": [{"id": 2, "text": "Related publications", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 299.20081, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.75408935546875, "t": 132.06002807617188, "r": 530.0675, "b": 154.35791015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9717119932174683, "cells": [{"id": 3, "text": "The publications that are listed in this section are considered suitable for a more detailed ", "bbox": {"l": 136.8, "t": 132.64862000000005, "r": 530.0675, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "description of the topics that are covered in this paper.", "bbox": {"l": 136.8, "t": 144.64844000000005, "r": 376.55719, "b": 153.86145, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 64.5552978515625, "t": 181.37648010253906, "r": 205.97418, "b": 197.83837890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9622768759727478, "cells": [{"id": 5, "text": "Other publications", "bbox": {"l": 64.800003, "t": 182.34069999999997, "r": 205.97418, "b": 197.1037, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.73150634765625, "t": 213.93795776367188, "r": 413.18115, "b": 224.1931915283203, "coord_origin": "TOPLEFT"}, "confidence": 0.9328869581222534, "cells": [{"id": 6, "text": "These publications are relevant as further information sources:", "bbox": {"l": 136.8, "t": 214.6087, "r": 413.18115, "b": 223.82172000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.81341552734375, "t": 230.74234008789062, "r": 414.05658, "b": 240.96536254882812, "coord_origin": "TOPLEFT"}, "confidence": 0.9425700902938843, "cells": [{"id": 7, "text": "GLYPH", "bbox": {"l": 136.8, "t": 231.79767000000004, "r": 141.78, "b": 240.57245, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "IBM DB2 for i indexing methods and strategies", "bbox": {"l": 151.20016, "t": 231.64824999999996, "r": 356.53046, "b": 240.86127, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": " white paper:", "bbox": {"l": 356.58035, "t": 231.64824999999996, "r": 414.05658, "b": 240.86127, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 150.4676513671875, "t": 248.0777587890625, "r": 545.99457, "b": 270.6806945800781, "coord_origin": "TOPLEFT"}, "confidence": 0.7933239340782166, "cells": [{"id": 10, "text": "http://www.ibm.com/partnerworld/wps/servlet/ContentHandler/stg_ast_sys_wp_db2_i", "bbox": {"l": 151.20016, "t": 248.77747, "r": 545.99457, "b": 257.55224999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "_indexing_methods_strategies", "bbox": {"l": 151.20016, "t": 260.77728, "r": 291.11823, "b": 269.55206, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.8154296875, "t": 276.60491943359375, "r": 299.7695, "b": 286.8206799999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9148671627044678, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.8, "t": 277.75708, "r": 141.78, "b": 286.53186, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "IBM i Memo to Users Version 7.2", "bbox": {"l": 151.20016, "t": 277.60767, "r": 297.0036, "b": 286.8206799999999, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ":", "bbox": {"l": 297.00061, "t": 277.60767, "r": 299.7695, "b": 286.8206799999999, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 150.4538116455078, "t": 294.1251525878906, "r": 536.3565673828125, "b": 304.4701232910156, "coord_origin": "TOPLEFT"}, "confidence": 0.7976768016815186, "cells": [{"id": 15, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgmtu.htm", "bbox": {"l": 151.20015, "t": 294.79666, "r": 535.97485, "b": 303.57144, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 135.64071655273438, "t": 310.49432373046875, "r": 371.40878, "b": 320.84006, "coord_origin": "TOPLEFT"}, "confidence": 0.9118204712867737, "cells": [{"id": 16, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 311.77646, "r": 141.77998, "b": 320.55124, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "IBM i Version 7.2 DB2 for i SQL Reference Guide", "bbox": {"l": 151.20015, "t": 311.62708, "r": 368.68774, "b": 320.84006, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": ":", "bbox": {"l": 368.63989, "t": 311.62708, "r": 371.40878, "b": 320.84006, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 150.3872833251953, "t": 328.0414123535156, "r": 545.99457, "b": 349.66357421875, "coord_origin": "TOPLEFT"}, "confidence": 0.7908105850219727, "cells": [{"id": 19, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/db2/rbafzintro.htm?l", "bbox": {"l": 151.20013, "t": 328.75626, "r": 545.99457, "b": 337.5310400000001, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "ang=en", "bbox": {"l": 151.20013, "t": 340.75607, "r": 181.13989, "b": 349.53085, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "list_item", "bbox": {"l": 135.63323974609375, "t": 356.6874694824219, "r": 355.62915, "b": 366.8592499999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9359384179115295, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.79997, "t": 357.79565, "r": 141.77997, "b": 366.57043, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "IBM i Version 7.2 Journal Management Guide", "bbox": {"l": 151.20013, "t": 357.64627, "r": 352.84634, "b": 366.8592499999999, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": ":", "bbox": {"l": 352.86026, "t": 357.64627, "r": 355.62915, "b": 366.8592499999999, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "list_item", "bbox": {"l": 150.4163360595703, "t": 374.12347412109375, "r": 545.99457, "b": 396.02581787109375, "coord_origin": "TOPLEFT"}, "confidence": 0.7968815565109253, "cells": [{"id": 24, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzaki/rzakiprintthis", "bbox": {"l": 151.20013, "t": 374.77545, "r": 545.99457, "b": 383.55023, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": ".htm?lang=en", "bbox": {"l": 151.20013, "t": 386.77527, "r": 211.1394, "b": 395.55005, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "list_item", "bbox": {"l": 135.4580078125, "t": 402.4890441894531, "r": 346.3946838378906, "b": 413.17169189453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9383506178855896, "cells": [{"id": 26, "text": "GLYPH", "bbox": {"l": 136.79997, "t": 403.75507, "r": 141.77997, "b": 412.52985, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "IBM i Version 7.2 Security Reference Guide", "bbox": {"l": 151.20013, "t": 403.60568, "r": 343.57654, "b": 412.81866, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": ":", "bbox": {"l": 343.56061, "t": 403.60568, "r": 346.3295, "b": 412.81866, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "list_item", "bbox": {"l": 150.8020477294922, "t": 419.9049377441406, "r": 546.1087036132812, "b": 442.11077880859375, "coord_origin": "TOPLEFT"}, "confidence": 0.7104644179344177, "cells": [{"id": 29, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzarl/rzarlkickoff.h", "bbox": {"l": 151.20015, "t": 420.79465, "r": 545.99457, "b": 429.56943, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "tm?lang=en", "bbox": {"l": 151.20015, "t": 432.79446, "r": 201.17941, "b": 441.5692399999999, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "section_header", "bbox": {"l": 64.61199188232422, "t": 469.3950500488281, "r": 195.13574, "b": 485.1037, "coord_origin": "TOPLEFT"}, "confidence": 0.9526883959770203, "cells": [{"id": 31, "text": "Online resources", "bbox": {"l": 64.800003, "t": 470.3407, "r": 195.13574, "b": 485.1037, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "text", "bbox": {"l": 135.812255859375, "t": 501.83233642578125, "r": 399.36154, "b": 511.82159, "coord_origin": "TOPLEFT"}, "confidence": 0.9205816388130188, "cells": [{"id": 32, "text": "These websites are relevant as further information sources:", "bbox": {"l": 136.8, "t": 502.60861, "r": 399.36154, "b": 511.82159, "coord_origin": "TOPLEFT"}}]}, {"id": 18, "label": "list_item", "bbox": {"l": 135.69252014160156, "t": 518.7003784179688, "r": 457.80386, "b": 528.908203125, "coord_origin": "TOPLEFT"}, "confidence": 0.928091824054718, "cells": [{"id": 33, "text": "GLYPH", "bbox": {"l": 136.8, "t": 519.7975799999999, "r": 141.78, "b": 528.57236, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Database programming topic of the IBM i 7.2 IBM Knowledge Center:", "bbox": {"l": 151.20016, "t": 519.64819, "r": 457.80386, "b": 528.86118, "coord_origin": "TOPLEFT"}}]}, {"id": 19, "label": "list_item", "bbox": {"l": 150.2280731201172, "t": 536.205322265625, "r": 545.99457, "b": 557.8463745117188, "coord_origin": "TOPLEFT"}, "confidence": 0.7536969184875488, "cells": [{"id": 35, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgdbp.htm?l", "bbox": {"l": 151.20016, "t": 536.7774, "r": 545.99457, "b": 545.55215, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "ang=en", "bbox": {"l": 151.20016, "t": 548.77721, "r": 181.13992, "b": 557.55196, "coord_origin": "TOPLEFT"}}]}, {"id": 20, "label": "list_item", "bbox": {"l": 135.60523986816406, "t": 564.5147705078125, "r": 287.6324768066406, "b": 575.3772583007812, "coord_origin": "TOPLEFT"}, "confidence": 0.9084469079971313, "cells": [{"id": 37, "text": "GLYPH", "bbox": {"l": 136.8, "t": 565.81677, "r": 141.78, "b": 574.59152, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Identity Theft Resource Center", "bbox": {"l": 151.20016, "t": 565.66737, "r": 287.27969, "b": 574.88037, "coord_origin": "TOPLEFT"}}]}, {"id": 21, "label": "list_item", "bbox": {"l": 150.68099975585938, "t": 582.1913452148438, "r": 291.11823, "b": 592.1077880859375, "coord_origin": "TOPLEFT"}, "confidence": 0.6532412171363831, "cells": [{"id": 39, "text": "http://www.idtheftcenter.org", "bbox": {"l": 151.20016, "t": 582.79659, "r": 291.11823, "b": 591.57133, "coord_origin": "TOPLEFT"}}]}, {"id": 22, "label": "list_item", "bbox": {"l": 135.6503448486328, "t": 598.7340698242188, "r": 231.24367, "b": 608.84, "coord_origin": "TOPLEFT"}, "confidence": 0.9109565615653992, "cells": [{"id": 40, "text": "GLYPH", "bbox": {"l": 136.8, "t": 599.7764, "r": 141.78, "b": 608.55115, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Ponemon Institute", "bbox": {"l": 151.20016, "t": 599.627, "r": 231.24367, "b": 608.84, "coord_origin": "TOPLEFT"}}]}, {"id": 23, "label": "list_item", "bbox": {"l": 150.75747680664062, "t": 615.7659912109375, "r": 266.09869, "b": 625.9202880859375, "coord_origin": "TOPLEFT"}, "confidence": 0.6917186975479126, "cells": [{"id": 42, "text": "http://www.ponemon.org/", "bbox": {"l": 151.20016, "t": 616.81596, "r": 266.09869, "b": 625.59071, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 142, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.680240631103516, "t": 754.7608032226562, "r": 257.24335, "b": 764.109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9499529600143433, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 142, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.1651000976562, "t": 754.2824096679688, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9230133295059204, "cells": [{"id": 1, "text": "127", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "127"}, {"label": "section_header", "id": 2, "page_no": 142, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.800003, "t": 72.91483306884766, "r": 299.20081, "b": 96.60542297363281, "coord_origin": "TOPLEFT"}, "confidence": 0.9644432663917542, "cells": [{"id": 2, "text": "Related publications", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 299.20081, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Related publications"}, {"label": "text", "id": 3, "page_no": 142, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.75408935546875, "t": 132.06002807617188, "r": 530.0675, "b": 154.35791015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9717119932174683, "cells": [{"id": 3, "text": "The publications that are listed in this section are considered suitable for a more detailed ", "bbox": {"l": 136.8, "t": 132.64862000000005, "r": 530.0675, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "description of the topics that are covered in this paper.", "bbox": {"l": 136.8, "t": 144.64844000000005, "r": 376.55719, "b": 153.86145, "coord_origin": "TOPLEFT"}}]}, "text": "The publications that are listed in this section are considered suitable for a more detailed description of the topics that are covered in this paper."}, {"label": "section_header", "id": 4, "page_no": 142, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.5552978515625, "t": 181.37648010253906, "r": 205.97418, "b": 197.83837890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9622768759727478, "cells": [{"id": 5, "text": "Other publications", "bbox": {"l": 64.800003, "t": 182.34069999999997, "r": 205.97418, "b": 197.1037, "coord_origin": "TOPLEFT"}}]}, "text": "Other publications"}, {"label": "text", "id": 5, "page_no": 142, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.73150634765625, "t": 213.93795776367188, "r": 413.18115, "b": 224.1931915283203, "coord_origin": "TOPLEFT"}, "confidence": 0.9328869581222534, "cells": [{"id": 6, "text": "These publications are relevant as further information sources:", "bbox": {"l": 136.8, "t": 214.6087, "r": 413.18115, "b": 223.82172000000003, "coord_origin": "TOPLEFT"}}]}, "text": "These publications are relevant as further information sources:"}, {"label": "list_item", "id": 6, "page_no": 142, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.81341552734375, "t": 230.74234008789062, "r": 414.05658, "b": 240.96536254882812, "coord_origin": "TOPLEFT"}, "confidence": 0.9425700902938843, "cells": [{"id": 7, "text": "GLYPH", "bbox": {"l": 136.8, "t": 231.79767000000004, "r": 141.78, "b": 240.57245, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "IBM DB2 for i indexing methods and strategies", "bbox": {"l": 151.20016, "t": 231.64824999999996, "r": 356.53046, "b": 240.86127, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": " white paper:", "bbox": {"l": 356.58035, "t": 231.64824999999996, "r": 414.05658, "b": 240.86127, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH IBM DB2 for i indexing methods and strategies white paper:"}, {"label": "list_item", "id": 7, "page_no": 142, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 150.4676513671875, "t": 248.0777587890625, "r": 545.99457, "b": 270.6806945800781, "coord_origin": "TOPLEFT"}, "confidence": 0.7933239340782166, "cells": [{"id": 10, "text": "http://www.ibm.com/partnerworld/wps/servlet/ContentHandler/stg_ast_sys_wp_db2_i", "bbox": {"l": 151.20016, "t": 248.77747, "r": 545.99457, "b": 257.55224999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "_indexing_methods_strategies", "bbox": {"l": 151.20016, "t": 260.77728, "r": 291.11823, "b": 269.55206, "coord_origin": "TOPLEFT"}}]}, "text": "http://www.ibm.com/partnerworld/wps/servlet/ContentHandler/stg_ast_sys_wp_db2_i _indexing_methods_strategies"}, {"label": "list_item", "id": 8, "page_no": 142, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.8154296875, "t": 276.60491943359375, "r": 299.7695, "b": 286.8206799999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9148671627044678, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.8, "t": 277.75708, "r": 141.78, "b": 286.53186, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "IBM i Memo to Users Version 7.2", "bbox": {"l": 151.20016, "t": 277.60767, "r": 297.0036, "b": 286.8206799999999, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ":", "bbox": {"l": 297.00061, "t": 277.60767, "r": 299.7695, "b": 286.8206799999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH IBM i Memo to Users Version 7.2 :"}, {"label": "list_item", "id": 9, "page_no": 142, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 150.4538116455078, "t": 294.1251525878906, "r": 536.3565673828125, "b": 304.4701232910156, "coord_origin": "TOPLEFT"}, "confidence": 0.7976768016815186, "cells": [{"id": 15, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgmtu.htm", "bbox": {"l": 151.20015, "t": 294.79666, "r": 535.97485, "b": 303.57144, "coord_origin": "TOPLEFT"}}]}, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgmtu.htm"}, {"label": "list_item", "id": 10, "page_no": 142, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.64071655273438, "t": 310.49432373046875, "r": 371.40878, "b": 320.84006, "coord_origin": "TOPLEFT"}, "confidence": 0.9118204712867737, "cells": [{"id": 16, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 311.77646, "r": 141.77998, "b": 320.55124, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "IBM i Version 7.2 DB2 for i SQL Reference Guide", "bbox": {"l": 151.20015, "t": 311.62708, "r": 368.68774, "b": 320.84006, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": ":", "bbox": {"l": 368.63989, "t": 311.62708, "r": 371.40878, "b": 320.84006, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH IBM i Version 7.2 DB2 for i SQL Reference Guide :"}, {"label": "list_item", "id": 11, "page_no": 142, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 150.3872833251953, "t": 328.0414123535156, "r": 545.99457, "b": 349.66357421875, "coord_origin": "TOPLEFT"}, "confidence": 0.7908105850219727, "cells": [{"id": 19, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/db2/rbafzintro.htm?l", "bbox": {"l": 151.20013, "t": 328.75626, "r": 545.99457, "b": 337.5310400000001, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "ang=en", "bbox": {"l": 151.20013, "t": 340.75607, "r": 181.13989, "b": 349.53085, "coord_origin": "TOPLEFT"}}]}, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/db2/rbafzintro.htm?l ang=en"}, {"label": "list_item", "id": 12, "page_no": 142, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 135.63323974609375, "t": 356.6874694824219, "r": 355.62915, "b": 366.8592499999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9359384179115295, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.79997, "t": 357.79565, "r": 141.77997, "b": 366.57043, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "IBM i Version 7.2 Journal Management Guide", "bbox": {"l": 151.20013, "t": 357.64627, "r": 352.84634, "b": 366.8592499999999, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": ":", "bbox": {"l": 352.86026, "t": 357.64627, "r": 355.62915, "b": 366.8592499999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH IBM i Version 7.2 Journal Management Guide :"}, {"label": "list_item", "id": 13, "page_no": 142, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 150.4163360595703, "t": 374.12347412109375, "r": 545.99457, "b": 396.02581787109375, "coord_origin": "TOPLEFT"}, "confidence": 0.7968815565109253, "cells": [{"id": 24, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzaki/rzakiprintthis", "bbox": {"l": 151.20013, "t": 374.77545, "r": 545.99457, "b": 383.55023, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": ".htm?lang=en", "bbox": {"l": 151.20013, "t": 386.77527, "r": 211.1394, "b": 395.55005, "coord_origin": "TOPLEFT"}}]}, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzaki/rzakiprintthis .htm?lang=en"}, {"label": "list_item", "id": 14, "page_no": 142, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 135.4580078125, "t": 402.4890441894531, "r": 346.3946838378906, "b": 413.17169189453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9383506178855896, "cells": [{"id": 26, "text": "GLYPH", "bbox": {"l": 136.79997, "t": 403.75507, "r": 141.77997, "b": 412.52985, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "IBM i Version 7.2 Security Reference Guide", "bbox": {"l": 151.20013, "t": 403.60568, "r": 343.57654, "b": 412.81866, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": ":", "bbox": {"l": 343.56061, "t": 403.60568, "r": 346.3295, "b": 412.81866, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH IBM i Version 7.2 Security Reference Guide :"}, {"label": "list_item", "id": 15, "page_no": 142, "cluster": {"id": 15, "label": "list_item", "bbox": {"l": 150.8020477294922, "t": 419.9049377441406, "r": 546.1087036132812, "b": 442.11077880859375, "coord_origin": "TOPLEFT"}, "confidence": 0.7104644179344177, "cells": [{"id": 29, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzarl/rzarlkickoff.h", "bbox": {"l": 151.20015, "t": 420.79465, "r": 545.99457, "b": 429.56943, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "tm?lang=en", "bbox": {"l": 151.20015, "t": 432.79446, "r": 201.17941, "b": 441.5692399999999, "coord_origin": "TOPLEFT"}}]}, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzarl/rzarlkickoff.h tm?lang=en"}, {"label": "section_header", "id": 16, "page_no": 142, "cluster": {"id": 16, "label": "section_header", "bbox": {"l": 64.61199188232422, "t": 469.3950500488281, "r": 195.13574, "b": 485.1037, "coord_origin": "TOPLEFT"}, "confidence": 0.9526883959770203, "cells": [{"id": 31, "text": "Online resources", "bbox": {"l": 64.800003, "t": 470.3407, "r": 195.13574, "b": 485.1037, "coord_origin": "TOPLEFT"}}]}, "text": "Online resources"}, {"label": "text", "id": 17, "page_no": 142, "cluster": {"id": 17, "label": "text", "bbox": {"l": 135.812255859375, "t": 501.83233642578125, "r": 399.36154, "b": 511.82159, "coord_origin": "TOPLEFT"}, "confidence": 0.9205816388130188, "cells": [{"id": 32, "text": "These websites are relevant as further information sources:", "bbox": {"l": 136.8, "t": 502.60861, "r": 399.36154, "b": 511.82159, "coord_origin": "TOPLEFT"}}]}, "text": "These websites are relevant as further information sources:"}, {"label": "list_item", "id": 18, "page_no": 142, "cluster": {"id": 18, "label": "list_item", "bbox": {"l": 135.69252014160156, "t": 518.7003784179688, "r": 457.80386, "b": 528.908203125, "coord_origin": "TOPLEFT"}, "confidence": 0.928091824054718, "cells": [{"id": 33, "text": "GLYPH", "bbox": {"l": 136.8, "t": 519.7975799999999, "r": 141.78, "b": 528.57236, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Database programming topic of the IBM i 7.2 IBM Knowledge Center:", "bbox": {"l": 151.20016, "t": 519.64819, "r": 457.80386, "b": 528.86118, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Database programming topic of the IBM i 7.2 IBM Knowledge Center:"}, {"label": "list_item", "id": 19, "page_no": 142, "cluster": {"id": 19, "label": "list_item", "bbox": {"l": 150.2280731201172, "t": 536.205322265625, "r": 545.99457, "b": 557.8463745117188, "coord_origin": "TOPLEFT"}, "confidence": 0.7536969184875488, "cells": [{"id": 35, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgdbp.htm?l", "bbox": {"l": 151.20016, "t": 536.7774, "r": 545.99457, "b": 545.55215, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "ang=en", "bbox": {"l": 151.20016, "t": 548.77721, "r": 181.13992, "b": 557.55196, "coord_origin": "TOPLEFT"}}]}, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgdbp.htm?l ang=en"}, {"label": "list_item", "id": 20, "page_no": 142, "cluster": {"id": 20, "label": "list_item", "bbox": {"l": 135.60523986816406, "t": 564.5147705078125, "r": 287.6324768066406, "b": 575.3772583007812, "coord_origin": "TOPLEFT"}, "confidence": 0.9084469079971313, "cells": [{"id": 37, "text": "GLYPH", "bbox": {"l": 136.8, "t": 565.81677, "r": 141.78, "b": 574.59152, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Identity Theft Resource Center", "bbox": {"l": 151.20016, "t": 565.66737, "r": 287.27969, "b": 574.88037, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Identity Theft Resource Center"}, {"label": "list_item", "id": 21, "page_no": 142, "cluster": {"id": 21, "label": "list_item", "bbox": {"l": 150.68099975585938, "t": 582.1913452148438, "r": 291.11823, "b": 592.1077880859375, "coord_origin": "TOPLEFT"}, "confidence": 0.6532412171363831, "cells": [{"id": 39, "text": "http://www.idtheftcenter.org", "bbox": {"l": 151.20016, "t": 582.79659, "r": 291.11823, "b": 591.57133, "coord_origin": "TOPLEFT"}}]}, "text": "http://www.idtheftcenter.org"}, {"label": "list_item", "id": 22, "page_no": 142, "cluster": {"id": 22, "label": "list_item", "bbox": {"l": 135.6503448486328, "t": 598.7340698242188, "r": 231.24367, "b": 608.84, "coord_origin": "TOPLEFT"}, "confidence": 0.9109565615653992, "cells": [{"id": 40, "text": "GLYPH", "bbox": {"l": 136.8, "t": 599.7764, "r": 141.78, "b": 608.55115, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Ponemon Institute", "bbox": {"l": 151.20016, "t": 599.627, "r": 231.24367, "b": 608.84, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Ponemon Institute"}, {"label": "list_item", "id": 23, "page_no": 142, "cluster": {"id": 23, "label": "list_item", "bbox": {"l": 150.75747680664062, "t": 615.7659912109375, "r": 266.09869, "b": 625.9202880859375, "coord_origin": "TOPLEFT"}, "confidence": 0.6917186975479126, "cells": [{"id": 42, "text": "http://www.ponemon.org/", "bbox": {"l": 151.20016, "t": 616.81596, "r": 266.09869, "b": 625.59071, "coord_origin": "TOPLEFT"}}]}, "text": "http://www.ponemon.org/"}], "body": [{"label": "section_header", "id": 2, "page_no": 142, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.800003, "t": 72.91483306884766, "r": 299.20081, "b": 96.60542297363281, "coord_origin": "TOPLEFT"}, "confidence": 0.9644432663917542, "cells": [{"id": 2, "text": "Related publications", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 299.20081, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Related publications"}, {"label": "text", "id": 3, "page_no": 142, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.75408935546875, "t": 132.06002807617188, "r": 530.0675, "b": 154.35791015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9717119932174683, "cells": [{"id": 3, "text": "The publications that are listed in this section are considered suitable for a more detailed ", "bbox": {"l": 136.8, "t": 132.64862000000005, "r": 530.0675, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "description of the topics that are covered in this paper.", "bbox": {"l": 136.8, "t": 144.64844000000005, "r": 376.55719, "b": 153.86145, "coord_origin": "TOPLEFT"}}]}, "text": "The publications that are listed in this section are considered suitable for a more detailed description of the topics that are covered in this paper."}, {"label": "section_header", "id": 4, "page_no": 142, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.5552978515625, "t": 181.37648010253906, "r": 205.97418, "b": 197.83837890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9622768759727478, "cells": [{"id": 5, "text": "Other publications", "bbox": {"l": 64.800003, "t": 182.34069999999997, "r": 205.97418, "b": 197.1037, "coord_origin": "TOPLEFT"}}]}, "text": "Other publications"}, {"label": "text", "id": 5, "page_no": 142, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.73150634765625, "t": 213.93795776367188, "r": 413.18115, "b": 224.1931915283203, "coord_origin": "TOPLEFT"}, "confidence": 0.9328869581222534, "cells": [{"id": 6, "text": "These publications are relevant as further information sources:", "bbox": {"l": 136.8, "t": 214.6087, "r": 413.18115, "b": 223.82172000000003, "coord_origin": "TOPLEFT"}}]}, "text": "These publications are relevant as further information sources:"}, {"label": "list_item", "id": 6, "page_no": 142, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.81341552734375, "t": 230.74234008789062, "r": 414.05658, "b": 240.96536254882812, "coord_origin": "TOPLEFT"}, "confidence": 0.9425700902938843, "cells": [{"id": 7, "text": "GLYPH", "bbox": {"l": 136.8, "t": 231.79767000000004, "r": 141.78, "b": 240.57245, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "IBM DB2 for i indexing methods and strategies", "bbox": {"l": 151.20016, "t": 231.64824999999996, "r": 356.53046, "b": 240.86127, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": " white paper:", "bbox": {"l": 356.58035, "t": 231.64824999999996, "r": 414.05658, "b": 240.86127, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH IBM DB2 for i indexing methods and strategies white paper:"}, {"label": "list_item", "id": 7, "page_no": 142, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 150.4676513671875, "t": 248.0777587890625, "r": 545.99457, "b": 270.6806945800781, "coord_origin": "TOPLEFT"}, "confidence": 0.7933239340782166, "cells": [{"id": 10, "text": "http://www.ibm.com/partnerworld/wps/servlet/ContentHandler/stg_ast_sys_wp_db2_i", "bbox": {"l": 151.20016, "t": 248.77747, "r": 545.99457, "b": 257.55224999999996, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "_indexing_methods_strategies", "bbox": {"l": 151.20016, "t": 260.77728, "r": 291.11823, "b": 269.55206, "coord_origin": "TOPLEFT"}}]}, "text": "http://www.ibm.com/partnerworld/wps/servlet/ContentHandler/stg_ast_sys_wp_db2_i _indexing_methods_strategies"}, {"label": "list_item", "id": 8, "page_no": 142, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.8154296875, "t": 276.60491943359375, "r": 299.7695, "b": 286.8206799999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9148671627044678, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.8, "t": 277.75708, "r": 141.78, "b": 286.53186, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "IBM i Memo to Users Version 7.2", "bbox": {"l": 151.20016, "t": 277.60767, "r": 297.0036, "b": 286.8206799999999, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ":", "bbox": {"l": 297.00061, "t": 277.60767, "r": 299.7695, "b": 286.8206799999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH IBM i Memo to Users Version 7.2 :"}, {"label": "list_item", "id": 9, "page_no": 142, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 150.4538116455078, "t": 294.1251525878906, "r": 536.3565673828125, "b": 304.4701232910156, "coord_origin": "TOPLEFT"}, "confidence": 0.7976768016815186, "cells": [{"id": 15, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgmtu.htm", "bbox": {"l": 151.20015, "t": 294.79666, "r": 535.97485, "b": 303.57144, "coord_origin": "TOPLEFT"}}]}, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgmtu.htm"}, {"label": "list_item", "id": 10, "page_no": 142, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.64071655273438, "t": 310.49432373046875, "r": 371.40878, "b": 320.84006, "coord_origin": "TOPLEFT"}, "confidence": 0.9118204712867737, "cells": [{"id": 16, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 311.77646, "r": 141.77998, "b": 320.55124, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "IBM i Version 7.2 DB2 for i SQL Reference Guide", "bbox": {"l": 151.20015, "t": 311.62708, "r": 368.68774, "b": 320.84006, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": ":", "bbox": {"l": 368.63989, "t": 311.62708, "r": 371.40878, "b": 320.84006, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH IBM i Version 7.2 DB2 for i SQL Reference Guide :"}, {"label": "list_item", "id": 11, "page_no": 142, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 150.3872833251953, "t": 328.0414123535156, "r": 545.99457, "b": 349.66357421875, "coord_origin": "TOPLEFT"}, "confidence": 0.7908105850219727, "cells": [{"id": 19, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/db2/rbafzintro.htm?l", "bbox": {"l": 151.20013, "t": 328.75626, "r": 545.99457, "b": 337.5310400000001, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "ang=en", "bbox": {"l": 151.20013, "t": 340.75607, "r": 181.13989, "b": 349.53085, "coord_origin": "TOPLEFT"}}]}, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/db2/rbafzintro.htm?l ang=en"}, {"label": "list_item", "id": 12, "page_no": 142, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 135.63323974609375, "t": 356.6874694824219, "r": 355.62915, "b": 366.8592499999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9359384179115295, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.79997, "t": 357.79565, "r": 141.77997, "b": 366.57043, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "IBM i Version 7.2 Journal Management Guide", "bbox": {"l": 151.20013, "t": 357.64627, "r": 352.84634, "b": 366.8592499999999, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": ":", "bbox": {"l": 352.86026, "t": 357.64627, "r": 355.62915, "b": 366.8592499999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH IBM i Version 7.2 Journal Management Guide :"}, {"label": "list_item", "id": 13, "page_no": 142, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 150.4163360595703, "t": 374.12347412109375, "r": 545.99457, "b": 396.02581787109375, "coord_origin": "TOPLEFT"}, "confidence": 0.7968815565109253, "cells": [{"id": 24, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzaki/rzakiprintthis", "bbox": {"l": 151.20013, "t": 374.77545, "r": 545.99457, "b": 383.55023, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": ".htm?lang=en", "bbox": {"l": 151.20013, "t": 386.77527, "r": 211.1394, "b": 395.55005, "coord_origin": "TOPLEFT"}}]}, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzaki/rzakiprintthis .htm?lang=en"}, {"label": "list_item", "id": 14, "page_no": 142, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 135.4580078125, "t": 402.4890441894531, "r": 346.3946838378906, "b": 413.17169189453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9383506178855896, "cells": [{"id": 26, "text": "GLYPH", "bbox": {"l": 136.79997, "t": 403.75507, "r": 141.77997, "b": 412.52985, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "IBM i Version 7.2 Security Reference Guide", "bbox": {"l": 151.20013, "t": 403.60568, "r": 343.57654, "b": 412.81866, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": ":", "bbox": {"l": 343.56061, "t": 403.60568, "r": 346.3295, "b": 412.81866, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH IBM i Version 7.2 Security Reference Guide :"}, {"label": "list_item", "id": 15, "page_no": 142, "cluster": {"id": 15, "label": "list_item", "bbox": {"l": 150.8020477294922, "t": 419.9049377441406, "r": 546.1087036132812, "b": 442.11077880859375, "coord_origin": "TOPLEFT"}, "confidence": 0.7104644179344177, "cells": [{"id": 29, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzarl/rzarlkickoff.h", "bbox": {"l": 151.20015, "t": 420.79465, "r": 545.99457, "b": 429.56943, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "tm?lang=en", "bbox": {"l": 151.20015, "t": 432.79446, "r": 201.17941, "b": 441.5692399999999, "coord_origin": "TOPLEFT"}}]}, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzarl/rzarlkickoff.h tm?lang=en"}, {"label": "section_header", "id": 16, "page_no": 142, "cluster": {"id": 16, "label": "section_header", "bbox": {"l": 64.61199188232422, "t": 469.3950500488281, "r": 195.13574, "b": 485.1037, "coord_origin": "TOPLEFT"}, "confidence": 0.9526883959770203, "cells": [{"id": 31, "text": "Online resources", "bbox": {"l": 64.800003, "t": 470.3407, "r": 195.13574, "b": 485.1037, "coord_origin": "TOPLEFT"}}]}, "text": "Online resources"}, {"label": "text", "id": 17, "page_no": 142, "cluster": {"id": 17, "label": "text", "bbox": {"l": 135.812255859375, "t": 501.83233642578125, "r": 399.36154, "b": 511.82159, "coord_origin": "TOPLEFT"}, "confidence": 0.9205816388130188, "cells": [{"id": 32, "text": "These websites are relevant as further information sources:", "bbox": {"l": 136.8, "t": 502.60861, "r": 399.36154, "b": 511.82159, "coord_origin": "TOPLEFT"}}]}, "text": "These websites are relevant as further information sources:"}, {"label": "list_item", "id": 18, "page_no": 142, "cluster": {"id": 18, "label": "list_item", "bbox": {"l": 135.69252014160156, "t": 518.7003784179688, "r": 457.80386, "b": 528.908203125, "coord_origin": "TOPLEFT"}, "confidence": 0.928091824054718, "cells": [{"id": 33, "text": "GLYPH", "bbox": {"l": 136.8, "t": 519.7975799999999, "r": 141.78, "b": 528.57236, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Database programming topic of the IBM i 7.2 IBM Knowledge Center:", "bbox": {"l": 151.20016, "t": 519.64819, "r": 457.80386, "b": 528.86118, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Database programming topic of the IBM i 7.2 IBM Knowledge Center:"}, {"label": "list_item", "id": 19, "page_no": 142, "cluster": {"id": 19, "label": "list_item", "bbox": {"l": 150.2280731201172, "t": 536.205322265625, "r": 545.99457, "b": 557.8463745117188, "coord_origin": "TOPLEFT"}, "confidence": 0.7536969184875488, "cells": [{"id": 35, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgdbp.htm?l", "bbox": {"l": 151.20016, "t": 536.7774, "r": 545.99457, "b": 545.55215, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "ang=en", "bbox": {"l": 151.20016, "t": 548.77721, "r": 181.13992, "b": 557.55196, "coord_origin": "TOPLEFT"}}]}, "text": "http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzahg/rzahgdbp.htm?l ang=en"}, {"label": "list_item", "id": 20, "page_no": 142, "cluster": {"id": 20, "label": "list_item", "bbox": {"l": 135.60523986816406, "t": 564.5147705078125, "r": 287.6324768066406, "b": 575.3772583007812, "coord_origin": "TOPLEFT"}, "confidence": 0.9084469079971313, "cells": [{"id": 37, "text": "GLYPH", "bbox": {"l": 136.8, "t": 565.81677, "r": 141.78, "b": 574.59152, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Identity Theft Resource Center", "bbox": {"l": 151.20016, "t": 565.66737, "r": 287.27969, "b": 574.88037, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Identity Theft Resource Center"}, {"label": "list_item", "id": 21, "page_no": 142, "cluster": {"id": 21, "label": "list_item", "bbox": {"l": 150.68099975585938, "t": 582.1913452148438, "r": 291.11823, "b": 592.1077880859375, "coord_origin": "TOPLEFT"}, "confidence": 0.6532412171363831, "cells": [{"id": 39, "text": "http://www.idtheftcenter.org", "bbox": {"l": 151.20016, "t": 582.79659, "r": 291.11823, "b": 591.57133, "coord_origin": "TOPLEFT"}}]}, "text": "http://www.idtheftcenter.org"}, {"label": "list_item", "id": 22, "page_no": 142, "cluster": {"id": 22, "label": "list_item", "bbox": {"l": 135.6503448486328, "t": 598.7340698242188, "r": 231.24367, "b": 608.84, "coord_origin": "TOPLEFT"}, "confidence": 0.9109565615653992, "cells": [{"id": 40, "text": "GLYPH", "bbox": {"l": 136.8, "t": 599.7764, "r": 141.78, "b": 608.55115, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Ponemon Institute", "bbox": {"l": 151.20016, "t": 599.627, "r": 231.24367, "b": 608.84, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Ponemon Institute"}, {"label": "list_item", "id": 23, "page_no": 142, "cluster": {"id": 23, "label": "list_item", "bbox": {"l": 150.75747680664062, "t": 615.7659912109375, "r": 266.09869, "b": 625.9202880859375, "coord_origin": "TOPLEFT"}, "confidence": 0.6917186975479126, "cells": [{"id": 42, "text": "http://www.ponemon.org/", "bbox": {"l": 151.20016, "t": 616.81596, "r": 266.09869, "b": 625.59071, "coord_origin": "TOPLEFT"}}]}, "text": "http://www.ponemon.org/"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 142, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.680240631103516, "t": 754.7608032226562, "r": 257.24335, "b": 764.109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9499529600143433, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 142, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 530.1651000976562, "t": 754.2824096679688, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9230133295059204, "cells": [{"id": 1, "text": "127", "bbox": {"l": 530.52002, "t": 754.848721, "r": 547.25879, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "127"}]}}, {"page_no": 143, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "128 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Help from IBM", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 172.86197, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "IBM Support and downloads", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 262.60373, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "ibm.com", "bbox": {"l": 136.8, "t": 120.67767000000003, "r": 171.77951, "b": 129.50225999999998, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "/support", "bbox": {"l": 171.77953, "t": 120.67767000000003, "r": 211.73904, "b": 129.45245, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "IBM Global Services", "bbox": {"l": 136.8, "t": 142.48803999999996, "r": 227.63222, "b": 151.70105, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ibm.com", "bbox": {"l": 136.8, "t": 159.67700000000002, "r": 171.77951, "b": 168.50158999999996, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "/services", "bbox": {"l": 171.77953, "t": 159.67700000000002, "r": 216.71904000000004, "b": 168.45177999999999, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.5219497680664, "t": 754.391845703125, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9169230461120605, "cells": [{"id": 0, "text": "128 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 98.66630554199219, "t": 754.5946655273438, "r": 339.9003601074219, "b": 764.0750732421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9336705803871155, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.73175811767578, "t": 70.09744262695312, "r": 172.86197, "b": 86.14898681640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9345404505729675, "cells": [{"id": 2, "text": "Help from IBM", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 172.86197, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 136.51719665527344, "t": 102.7090072631836, "r": 262.60373, "b": 113.38191986083984, "coord_origin": "TOPLEFT"}, "confidence": 0.8567046523094177, "cells": [{"id": 3, "text": "IBM Support and downloads", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 262.60373, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 136.8, "t": 120.41547393798828, "r": 211.73904, "b": 130.2474365234375, "coord_origin": "TOPLEFT"}, "confidence": 0.8032501339912415, "cells": [{"id": 4, "text": "ibm.com", "bbox": {"l": 136.8, "t": 120.67767000000003, "r": 171.77951, "b": 129.50225999999998, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "/support", "bbox": {"l": 171.77953, "t": 120.67767000000003, "r": 211.73904, "b": 129.45245, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.5938720703125, "t": 141.32887268066406, "r": 227.63222, "b": 151.70105, "coord_origin": "TOPLEFT"}, "confidence": 0.7982341051101685, "cells": [{"id": 6, "text": "IBM Global Services", "bbox": {"l": 136.8, "t": 142.48803999999996, "r": 227.63222, "b": 151.70105, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 136.8, "t": 159.01025390625, "r": 216.71904000000004, "b": 168.50158999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.8333450555801392, "cells": [{"id": 7, "text": "ibm.com", "bbox": {"l": 136.8, "t": 159.67700000000002, "r": 171.77951, "b": 168.50158999999996, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "/services", "bbox": {"l": 171.77953, "t": 159.67700000000002, "r": 216.71904000000004, "b": 168.45177999999999, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 143, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.5219497680664, "t": 754.391845703125, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9169230461120605, "cells": [{"id": 0, "text": "128 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "128"}, {"label": "page_footer", "id": 1, "page_no": 143, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.66630554199219, "t": 754.5946655273438, "r": 339.9003601074219, "b": 764.0750732421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9336705803871155, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "section_header", "id": 2, "page_no": 143, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.73175811767578, "t": 70.09744262695312, "r": 172.86197, "b": 86.14898681640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9345404505729675, "cells": [{"id": 2, "text": "Help from IBM", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 172.86197, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, "text": "Help from IBM"}, {"label": "text", "id": 3, "page_no": 143, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.51719665527344, "t": 102.7090072631836, "r": 262.60373, "b": 113.38191986083984, "coord_origin": "TOPLEFT"}, "confidence": 0.8567046523094177, "cells": [{"id": 3, "text": "IBM Support and downloads", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 262.60373, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Support and downloads"}, {"label": "text", "id": 4, "page_no": 143, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.8, "t": 120.41547393798828, "r": 211.73904, "b": 130.2474365234375, "coord_origin": "TOPLEFT"}, "confidence": 0.8032501339912415, "cells": [{"id": 4, "text": "ibm.com", "bbox": {"l": 136.8, "t": 120.67767000000003, "r": 171.77951, "b": 129.50225999999998, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "/support", "bbox": {"l": 171.77953, "t": 120.67767000000003, "r": 211.73904, "b": 129.45245, "coord_origin": "TOPLEFT"}}]}, "text": "ibm.com /support"}, {"label": "text", "id": 5, "page_no": 143, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.5938720703125, "t": 141.32887268066406, "r": 227.63222, "b": 151.70105, "coord_origin": "TOPLEFT"}, "confidence": 0.7982341051101685, "cells": [{"id": 6, "text": "IBM Global Services", "bbox": {"l": 136.8, "t": 142.48803999999996, "r": 227.63222, "b": 151.70105, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Global Services"}, {"label": "text", "id": 6, "page_no": 143, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.8, "t": 159.01025390625, "r": 216.71904000000004, "b": 168.50158999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.8333450555801392, "cells": [{"id": 7, "text": "ibm.com", "bbox": {"l": 136.8, "t": 159.67700000000002, "r": 171.77951, "b": 168.50158999999996, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "/services", "bbox": {"l": 171.77953, "t": 159.67700000000002, "r": 216.71904000000004, "b": 168.45177999999999, "coord_origin": "TOPLEFT"}}]}, "text": "ibm.com /services"}], "body": [{"label": "section_header", "id": 2, "page_no": 143, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.73175811767578, "t": 70.09744262695312, "r": 172.86197, "b": 86.14898681640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9345404505729675, "cells": [{"id": 2, "text": "Help from IBM", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 172.86197, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, "text": "Help from IBM"}, {"label": "text", "id": 3, "page_no": 143, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.51719665527344, "t": 102.7090072631836, "r": 262.60373, "b": 113.38191986083984, "coord_origin": "TOPLEFT"}, "confidence": 0.8567046523094177, "cells": [{"id": 3, "text": "IBM Support and downloads", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 262.60373, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Support and downloads"}, {"label": "text", "id": 4, "page_no": 143, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.8, "t": 120.41547393798828, "r": 211.73904, "b": 130.2474365234375, "coord_origin": "TOPLEFT"}, "confidence": 0.8032501339912415, "cells": [{"id": 4, "text": "ibm.com", "bbox": {"l": 136.8, "t": 120.67767000000003, "r": 171.77951, "b": 129.50225999999998, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "/support", "bbox": {"l": 171.77953, "t": 120.67767000000003, "r": 211.73904, "b": 129.45245, "coord_origin": "TOPLEFT"}}]}, "text": "ibm.com /support"}, {"label": "text", "id": 5, "page_no": 143, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.5938720703125, "t": 141.32887268066406, "r": 227.63222, "b": 151.70105, "coord_origin": "TOPLEFT"}, "confidence": 0.7982341051101685, "cells": [{"id": 6, "text": "IBM Global Services", "bbox": {"l": 136.8, "t": 142.48803999999996, "r": 227.63222, "b": 151.70105, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Global Services"}, {"label": "text", "id": 6, "page_no": 143, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.8, "t": 159.01025390625, "r": 216.71904000000004, "b": 168.50158999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.8333450555801392, "cells": [{"id": 7, "text": "ibm.com", "bbox": {"l": 136.8, "t": 159.67700000000002, "r": 171.77951, "b": 168.50158999999996, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "/services", "bbox": {"l": 171.77953, "t": 159.67700000000002, "r": 216.71904000000004, "b": 168.45177999999999, "coord_origin": "TOPLEFT"}}]}, "text": "ibm.com /services"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 143, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.5219497680664, "t": 754.391845703125, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9169230461120605, "cells": [{"id": 0, "text": "128 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "128"}, {"label": "page_footer", "id": 1, "page_no": 143, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.66630554199219, "t": 754.5946655273438, "r": 339.9003601074219, "b": 764.0750732421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9336705803871155, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 144, "size": {"width": 612.0, "height": 792.0}, "cells": [], "predictions": {"layout": {"clusters": []}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [], "body": [], "headers": []}}, {"page_no": 145, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "fi", "bbox": {"l": 558.11987, "t": 45.468689999999924, "r": 565.46039, "b": 54.68169999999998, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "REDP-5110-00", "bbox": {"l": 171.0, "t": 631.338, "r": 231.88769999999997, "b": 639.66301, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "INTERNATIONAL ", "bbox": {"l": 467.3399999999999, "t": 247.71831999999995, "r": 559.80933, "b": 260.16052, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "TECHNICAL", "bbox": {"l": 467.3399999999999, "t": 261.75842, "r": 529.50208, "b": 274.20061999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "SUPPORT", "bbox": {"l": 467.3399999999999, "t": 275.73839999999996, "r": 518.93317, "b": 288.1806, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "ORGANIZATION", "bbox": {"l": 467.3399999999999, "t": 289.71841, "r": 550.7475, "b": 302.16061, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "BUILDING TECHNICAL ", "bbox": {"l": 467.3399999999999, "t": 351.79199, "r": 571.70758, "b": 362.47198, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "INFORMATION BASED ON ", "bbox": {"l": 467.3399999999999, "t": 363.79199, "r": 587.38916, "b": 374.47198, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "PRACTICAL EXPERIENCE", "bbox": {"l": 467.3399999999999, "t": 375.79199, "r": 582.5556, "b": 386.47198, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "IBM Redbooks are developed ", "bbox": {"l": 467.3399999999999, "t": 399.8602900000001, "r": 587.46674, "b": 409.63251, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "by the IBM International ", "bbox": {"l": 467.3399999999999, "t": 410.90067, "r": 566.34229, "b": 420.67285, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Technical Support ", "bbox": {"l": 467.3399999999999, "t": 421.88068, "r": 543.20404, "b": 431.65289, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Organization. Experts from ", "bbox": {"l": 467.3399999999999, "t": 432.8606899999999, "r": 577.76697, "b": 442.63287, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "IBM, Customers and Partners ", "bbox": {"l": 467.3399999999999, "t": 443.90106, "r": 587.40948, "b": 453.67328, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "from around the world create ", "bbox": {"l": 467.3399999999999, "t": 454.88107, "r": 587.52051, "b": 464.65326, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "timely technical information ", "bbox": {"l": 467.3399999999999, "t": 465.86108, "r": 582.67505, "b": 475.6333, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "based on realistic scenarios. ", "bbox": {"l": 467.3399999999999, "t": 476.90146, "r": 585.46722, "b": 486.67365, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Specific recommendations ", "bbox": {"l": 467.3399999999999, "t": 487.88147, "r": 577.70874, "b": 497.65369, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "are provided to help you ", "bbox": {"l": 467.3399999999999, "t": 498.86148, "r": 568.03546, "b": 508.63367, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "implement IT solutions more ", "bbox": {"l": 467.3399999999999, "t": 509.90186, "r": 585.44525, "b": 519.67407, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "effectively in your ", "bbox": {"l": 467.3399999999999, "t": 520.8818699999999, "r": 541.4967, "b": 530.65405, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "environment.", "bbox": {"l": 467.3399999999999, "t": 531.8618799999999, "r": 520.64893, "b": 541.63406, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "For more information:", "bbox": {"l": 467.3399999999999, "t": 578.83191, "r": 570.948, "b": 589.5119, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ibm.com", "bbox": {"l": 467.3399999999999, "t": 590.83191, "r": 508.59961, "b": 601.5119, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "/redbooks", "bbox": {"l": 508.56000000000006, "t": 590.83191, "r": 552.74518, "b": 601.5119, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Redpaper", "bbox": {"l": 474.60001, "t": 164.05658000000005, "r": 580.88989, "b": 188.94097999999997, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "\u2122", "bbox": {"l": 582.53992, "t": 172.32714999999996, "r": 592.13989, "b": 181.20714999999996, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Row and Column Access Control ", "bbox": {"l": 27.0, "t": 73.63799999999992, "r": 447.36002, "b": 103.00800000000004, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Support in IBM DB2 for i", "bbox": {"l": 27.0, "t": 113.76000999999997, "r": 314.43002, "b": 140.46002, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Implement roles and ", "bbox": {"l": 26.700001, "t": 242.17200000000003, "r": 127.4436, "b": 252.85199, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "separation of duties", "bbox": {"l": 26.700001, "t": 256.15198, "r": 121.6608, "b": 266.83196999999996, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Leverage row ", "bbox": {"l": 26.700001, "t": 284.17197, "r": 93.970795, "b": 294.85196, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "permissions on the ", "bbox": {"l": 26.700001, "t": 298.15198000000004, "r": 120.28319999999998, "b": 308.83197, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "database", "bbox": {"l": 26.700001, "t": 312.19199000000003, "r": 70.413605, "b": 322.87198, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Protect columns by ", "bbox": {"l": 26.700001, "t": 340.15198000000004, "r": 121.44960000000002, "b": 350.83197, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "defining column ", "bbox": {"l": 26.700001, "t": 354.19199000000003, "r": 106.5696, "b": 364.87198, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "masks", "bbox": {"l": 26.700001, "t": 368.1720000000001, "r": 58.194, "b": 378.85199, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "This IBM Redpaper publication provides information about the IBM i 7.2 ", "bbox": {"l": 152.94, "t": 242.72857999999997, "r": 413.99057, "b": 251.59295999999995, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "feature of IBM DB2 for i Row and Column Access Control (RCAC). It ", "bbox": {"l": 152.94002, "t": 254.72839, "r": 401.85635, "b": 263.59277, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "offers a broad description of the function and advantages of controlling ", "bbox": {"l": 152.94002, "t": 266.72821, "r": 414.08423, "b": 275.59259, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "access to data in a comprehensive and transparent way. This ", "bbox": {"l": 152.94002, "t": 278.72803, "r": 381.24014, "b": 287.59244, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "publication helps you understand the capabilities of RCAC and provides ", "bbox": {"l": 152.94002, "t": 290.72784, "r": 414.07031, "b": 299.59225, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "examples of defining, creating, and implementing the row permissions ", "bbox": {"l": 152.94002, "t": 302.72766, "r": 414.05447, "b": 311.59207, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "and column masks in a relational database environment.", "bbox": {"l": 152.94002, "t": 314.72747999999996, "r": 362.3291, "b": 323.59189, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "This paper is intended for database engineers, data-centric application ", "bbox": {"l": 152.94002, "t": 331.70728, "r": 414.17383, "b": 340.57169, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "developers, and security officers who want to design and implement ", "bbox": {"l": 152.94002, "t": 343.70709, "r": 407.61029, "b": 352.5715, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "RCAC as a part of their data control and governance policy. A solid ", "bbox": {"l": 152.94002, "t": 355.70691, "r": 399.29565, "b": 364.57132, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "background in IBM i object level security, DB2 for i relational database ", "bbox": {"l": 152.94002, "t": 367.70673, "r": 414.0603, "b": 376.57114, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "concepts, and SQL is assumed.", "bbox": {"l": 152.94002, "t": 379.70654, "r": 268.86945, "b": 388.57095, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Back cover", "bbox": {"l": 287.22, "t": 28.54803000000004, "r": 414.24481, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "picture", "bbox": {"l": 485.1698303222656, "t": 25.259197235107422, "r": 566.2962036132812, "b": 54.68169999999998, "coord_origin": "TOPLEFT"}, "confidence": 0.9404253363609314, "cells": [{"id": 0, "text": "fi", "bbox": {"l": 558.11987, "t": 45.468689999999924, "r": 565.46039, "b": 54.68169999999998, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 170.78512573242188, "t": 630.505859375, "r": 232.11270141601562, "b": 639.66301, "coord_origin": "TOPLEFT"}, "confidence": 0.7700248956680298, "cells": [{"id": 1, "text": "REDP-5110-00", "bbox": {"l": 171.0, "t": 631.338, "r": 231.88769999999997, "b": 639.66301, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 466.3692626953125, "t": 247.39378356933594, "r": 559.80933, "b": 302.16061, "coord_origin": "TOPLEFT"}, "confidence": 0.8532671332359314, "cells": [{"id": 2, "text": "INTERNATIONAL ", "bbox": {"l": 467.3399999999999, "t": 247.71831999999995, "r": 559.80933, "b": 260.16052, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "TECHNICAL", "bbox": {"l": 467.3399999999999, "t": 261.75842, "r": 529.50208, "b": 274.20061999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "SUPPORT", "bbox": {"l": 467.3399999999999, "t": 275.73839999999996, "r": 518.93317, "b": 288.1806, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "ORGANIZATION", "bbox": {"l": 467.3399999999999, "t": 289.71841, "r": 550.7475, "b": 302.16061, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 466.3262939453125, "t": 351.4299011230469, "r": 587.38916, "b": 386.47198, "coord_origin": "TOPLEFT"}, "confidence": 0.7157137989997864, "cells": [{"id": 6, "text": "BUILDING TECHNICAL ", "bbox": {"l": 467.3399999999999, "t": 351.79199, "r": 571.70758, "b": 362.47198, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "INFORMATION BASED ON ", "bbox": {"l": 467.3399999999999, "t": 363.79199, "r": 587.38916, "b": 374.47198, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "PRACTICAL EXPERIENCE", "bbox": {"l": 467.3399999999999, "t": 375.79199, "r": 582.5556, "b": 386.47198, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 466.1037292480469, "t": 398.81231689453125, "r": 587.52051, "b": 541.63406, "coord_origin": "TOPLEFT"}, "confidence": 0.9518945813179016, "cells": [{"id": 9, "text": "IBM Redbooks are developed ", "bbox": {"l": 467.3399999999999, "t": 399.8602900000001, "r": 587.46674, "b": 409.63251, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "by the IBM International ", "bbox": {"l": 467.3399999999999, "t": 410.90067, "r": 566.34229, "b": 420.67285, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Technical Support ", "bbox": {"l": 467.3399999999999, "t": 421.88068, "r": 543.20404, "b": 431.65289, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Organization. Experts from ", "bbox": {"l": 467.3399999999999, "t": 432.8606899999999, "r": 577.76697, "b": 442.63287, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "IBM, Customers and Partners ", "bbox": {"l": 467.3399999999999, "t": 443.90106, "r": 587.40948, "b": 453.67328, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "from around the world create ", "bbox": {"l": 467.3399999999999, "t": 454.88107, "r": 587.52051, "b": 464.65326, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "timely technical information ", "bbox": {"l": 467.3399999999999, "t": 465.86108, "r": 582.67505, "b": 475.6333, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "based on realistic scenarios. ", "bbox": {"l": 467.3399999999999, "t": 476.90146, "r": 585.46722, "b": 486.67365, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Specific recommendations ", "bbox": {"l": 467.3399999999999, "t": 487.88147, "r": 577.70874, "b": 497.65369, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "are provided to help you ", "bbox": {"l": 467.3399999999999, "t": 498.86148, "r": 568.03546, "b": 508.63367, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "implement IT solutions more ", "bbox": {"l": 467.3399999999999, "t": 509.90186, "r": 585.44525, "b": 519.67407, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "effectively in your ", "bbox": {"l": 467.3399999999999, "t": 520.8818699999999, "r": 541.4967, "b": 530.65405, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "environment.", "bbox": {"l": 467.3399999999999, "t": 531.8618799999999, "r": 520.64893, "b": 541.63406, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 466.66748046875, "t": 577.88818359375, "r": 571.0052490234375, "b": 601.5119, "coord_origin": "TOPLEFT"}, "confidence": 0.8230004906654358, "cells": [{"id": 22, "text": "For more information:", "bbox": {"l": 467.3399999999999, "t": 578.83191, "r": 570.948, "b": 589.5119, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ibm.com", "bbox": {"l": 467.3399999999999, "t": 590.83191, "r": 508.59961, "b": 601.5119, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "/redbooks", "bbox": {"l": 508.56000000000006, "t": 590.83191, "r": 552.74518, "b": 601.5119, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "picture", "bbox": {"l": 474.35540771484375, "t": 80.05133819580078, "r": 592.2726440429688, "b": 189.8126220703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9696109890937805, "cells": [{"id": 25, "text": "Redpaper", "bbox": {"l": 474.60001, "t": 164.05658000000005, "r": 580.88989, "b": 188.94097999999997, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "\u2122", "bbox": {"l": 582.53992, "t": 172.32714999999996, "r": 592.13989, "b": 181.20714999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "section_header", "bbox": {"l": 26.454715728759766, "t": 71.63792419433594, "r": 447.36002, "b": 141.0381317138672, "coord_origin": "TOPLEFT"}, "confidence": 0.7128154635429382, "cells": [{"id": 27, "text": "Row and Column Access Control ", "bbox": {"l": 27.0, "t": 73.63799999999992, "r": 447.36002, "b": 103.00800000000004, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Support in IBM DB2 for i", "bbox": {"l": 27.0, "t": 113.76000999999997, "r": 314.43002, "b": 140.46002, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 26.35322380065918, "t": 240.97860717773438, "r": 127.4436, "b": 267.21185302734375, "coord_origin": "TOPLEFT"}, "confidence": 0.8400375843048096, "cells": [{"id": 29, "text": "Implement roles and ", "bbox": {"l": 26.700001, "t": 242.17200000000003, "r": 127.4436, "b": 252.85199, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "separation of duties", "bbox": {"l": 26.700001, "t": 256.15198, "r": 121.6608, "b": 266.83196999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 26.22105598449707, "t": 283.7095947265625, "r": 120.28319999999998, "b": 322.87198, "coord_origin": "TOPLEFT"}, "confidence": 0.8828509449958801, "cells": [{"id": 31, "text": "Leverage row ", "bbox": {"l": 26.700001, "t": 284.17197, "r": 93.970795, "b": 294.85196, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "permissions on the ", "bbox": {"l": 26.700001, "t": 298.15198000000004, "r": 120.28319999999998, "b": 308.83197, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "database", "bbox": {"l": 26.700001, "t": 312.19199000000003, "r": 70.413605, "b": 322.87198, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 26.226221084594727, "t": 339.11865234375, "r": 121.44960000000002, "b": 378.85199, "coord_origin": "TOPLEFT"}, "confidence": 0.9064874649047852, "cells": [{"id": 34, "text": "Protect columns by ", "bbox": {"l": 26.700001, "t": 340.15198000000004, "r": 121.44960000000002, "b": 350.83197, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "defining column ", "bbox": {"l": 26.700001, "t": 354.19199000000003, "r": 106.5696, "b": 364.87198, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "masks", "bbox": {"l": 26.700001, "t": 368.1720000000001, "r": 58.194, "b": 378.85199, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 152.25205993652344, "t": 241.8492889404297, "r": 414.08423, "b": 323.59189, "coord_origin": "TOPLEFT"}, "confidence": 0.9789718389511108, "cells": [{"id": 37, "text": "This IBM Redpaper publication provides information about the IBM i 7.2 ", "bbox": {"l": 152.94, "t": 242.72857999999997, "r": 413.99057, "b": 251.59295999999995, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "feature of IBM DB2 for i Row and Column Access Control (RCAC). It ", "bbox": {"l": 152.94002, "t": 254.72839, "r": 401.85635, "b": 263.59277, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "offers a broad description of the function and advantages of controlling ", "bbox": {"l": 152.94002, "t": 266.72821, "r": 414.08423, "b": 275.59259, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "access to data in a comprehensive and transparent way. This ", "bbox": {"l": 152.94002, "t": 278.72803, "r": 381.24014, "b": 287.59244, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "publication helps you understand the capabilities of RCAC and provides ", "bbox": {"l": 152.94002, "t": 290.72784, "r": 414.07031, "b": 299.59225, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "examples of defining, creating, and implementing the row permissions ", "bbox": {"l": 152.94002, "t": 302.72766, "r": 414.05447, "b": 311.59207, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "and column masks in a relational database environment.", "bbox": {"l": 152.94002, "t": 314.72747999999996, "r": 362.3291, "b": 323.59189, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 152.3572540283203, "t": 330.5283203125, "r": 414.17383, "b": 388.909912109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9799743890762329, "cells": [{"id": 44, "text": "This paper is intended for database engineers, data-centric application ", "bbox": {"l": 152.94002, "t": 331.70728, "r": 414.17383, "b": 340.57169, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "developers, and security officers who want to design and implement ", "bbox": {"l": 152.94002, "t": 343.70709, "r": 407.61029, "b": 352.5715, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "RCAC as a part of their data control and governance policy. A solid ", "bbox": {"l": 152.94002, "t": 355.70691, "r": 399.29565, "b": 364.57132, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "background in IBM i object level security, DB2 for i relational database ", "bbox": {"l": 152.94002, "t": 367.70673, "r": 414.0603, "b": 376.57114, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "concepts, and SQL is assumed.", "bbox": {"l": 152.94002, "t": 379.70654, "r": 268.86945, "b": 388.57095, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 287.22, "t": 28.54803000000004, "r": 414.24481, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 49, "text": "Back cover", "bbox": {"l": 287.22, "t": 28.54803000000004, "r": 414.24481, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "picture", "id": 0, "page_no": 145, "cluster": {"id": 0, "label": "picture", "bbox": {"l": 485.1698303222656, "t": 25.259197235107422, "r": 566.2962036132812, "b": 54.68169999999998, "coord_origin": "TOPLEFT"}, "confidence": 0.9404253363609314, "cells": [{"id": 0, "text": "fi", "bbox": {"l": 558.11987, "t": 45.468689999999924, "r": 565.46039, "b": 54.68169999999998, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "page_footer", "id": 1, "page_no": 145, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 170.78512573242188, "t": 630.505859375, "r": 232.11270141601562, "b": 639.66301, "coord_origin": "TOPLEFT"}, "confidence": 0.7700248956680298, "cells": [{"id": 1, "text": "REDP-5110-00", "bbox": {"l": 171.0, "t": 631.338, "r": 231.88769999999997, "b": 639.66301, "coord_origin": "TOPLEFT"}}]}, "text": "REDP-5110-00"}, {"label": "text", "id": 2, "page_no": 145, "cluster": {"id": 2, "label": "text", "bbox": {"l": 466.3692626953125, "t": 247.39378356933594, "r": 559.80933, "b": 302.16061, "coord_origin": "TOPLEFT"}, "confidence": 0.8532671332359314, "cells": [{"id": 2, "text": "INTERNATIONAL ", "bbox": {"l": 467.3399999999999, "t": 247.71831999999995, "r": 559.80933, "b": 260.16052, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "TECHNICAL", "bbox": {"l": 467.3399999999999, "t": 261.75842, "r": 529.50208, "b": 274.20061999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "SUPPORT", "bbox": {"l": 467.3399999999999, "t": 275.73839999999996, "r": 518.93317, "b": 288.1806, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "ORGANIZATION", "bbox": {"l": 467.3399999999999, "t": 289.71841, "r": 550.7475, "b": 302.16061, "coord_origin": "TOPLEFT"}}]}, "text": "INTERNATIONAL TECHNICAL SUPPORT ORGANIZATION"}, {"label": "text", "id": 3, "page_no": 145, "cluster": {"id": 3, "label": "text", "bbox": {"l": 466.3262939453125, "t": 351.4299011230469, "r": 587.38916, "b": 386.47198, "coord_origin": "TOPLEFT"}, "confidence": 0.7157137989997864, "cells": [{"id": 6, "text": "BUILDING TECHNICAL ", "bbox": {"l": 467.3399999999999, "t": 351.79199, "r": 571.70758, "b": 362.47198, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "INFORMATION BASED ON ", "bbox": {"l": 467.3399999999999, "t": 363.79199, "r": 587.38916, "b": 374.47198, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "PRACTICAL EXPERIENCE", "bbox": {"l": 467.3399999999999, "t": 375.79199, "r": 582.5556, "b": 386.47198, "coord_origin": "TOPLEFT"}}]}, "text": "BUILDING TECHNICAL INFORMATION BASED ON PRACTICAL EXPERIENCE"}, {"label": "text", "id": 4, "page_no": 145, "cluster": {"id": 4, "label": "text", "bbox": {"l": 466.1037292480469, "t": 398.81231689453125, "r": 587.52051, "b": 541.63406, "coord_origin": "TOPLEFT"}, "confidence": 0.9518945813179016, "cells": [{"id": 9, "text": "IBM Redbooks are developed ", "bbox": {"l": 467.3399999999999, "t": 399.8602900000001, "r": 587.46674, "b": 409.63251, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "by the IBM International ", "bbox": {"l": 467.3399999999999, "t": 410.90067, "r": 566.34229, "b": 420.67285, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Technical Support ", "bbox": {"l": 467.3399999999999, "t": 421.88068, "r": 543.20404, "b": 431.65289, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Organization. Experts from ", "bbox": {"l": 467.3399999999999, "t": 432.8606899999999, "r": 577.76697, "b": 442.63287, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "IBM, Customers and Partners ", "bbox": {"l": 467.3399999999999, "t": 443.90106, "r": 587.40948, "b": 453.67328, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "from around the world create ", "bbox": {"l": 467.3399999999999, "t": 454.88107, "r": 587.52051, "b": 464.65326, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "timely technical information ", "bbox": {"l": 467.3399999999999, "t": 465.86108, "r": 582.67505, "b": 475.6333, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "based on realistic scenarios. ", "bbox": {"l": 467.3399999999999, "t": 476.90146, "r": 585.46722, "b": 486.67365, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Specific recommendations ", "bbox": {"l": 467.3399999999999, "t": 487.88147, "r": 577.70874, "b": 497.65369, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "are provided to help you ", "bbox": {"l": 467.3399999999999, "t": 498.86148, "r": 568.03546, "b": 508.63367, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "implement IT solutions more ", "bbox": {"l": 467.3399999999999, "t": 509.90186, "r": 585.44525, "b": 519.67407, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "effectively in your ", "bbox": {"l": 467.3399999999999, "t": 520.8818699999999, "r": 541.4967, "b": 530.65405, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "environment.", "bbox": {"l": 467.3399999999999, "t": 531.8618799999999, "r": 520.64893, "b": 541.63406, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Redbooks are developed by the IBM International Technical Support Organization. Experts from IBM, Customers and Partners from around the world create timely technical information based on realistic scenarios. Specific recommendations are provided to help you implement IT solutions more effectively in your environment."}, {"label": "text", "id": 5, "page_no": 145, "cluster": {"id": 5, "label": "text", "bbox": {"l": 466.66748046875, "t": 577.88818359375, "r": 571.0052490234375, "b": 601.5119, "coord_origin": "TOPLEFT"}, "confidence": 0.8230004906654358, "cells": [{"id": 22, "text": "For more information:", "bbox": {"l": 467.3399999999999, "t": 578.83191, "r": 570.948, "b": 589.5119, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ibm.com", "bbox": {"l": 467.3399999999999, "t": 590.83191, "r": 508.59961, "b": 601.5119, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "/redbooks", "bbox": {"l": 508.56000000000006, "t": 590.83191, "r": 552.74518, "b": 601.5119, "coord_origin": "TOPLEFT"}}]}, "text": "For more information: ibm.com /redbooks"}, {"label": "picture", "id": 6, "page_no": 145, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 474.35540771484375, "t": 80.05133819580078, "r": 592.2726440429688, "b": 189.8126220703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9696109890937805, "cells": [{"id": 25, "text": "Redpaper", "bbox": {"l": 474.60001, "t": 164.05658000000005, "r": 580.88989, "b": 188.94097999999997, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "\u2122", "bbox": {"l": 582.53992, "t": 172.32714999999996, "r": 592.13989, "b": 181.20714999999996, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "section_header", "id": 7, "page_no": 145, "cluster": {"id": 7, "label": "section_header", "bbox": {"l": 26.454715728759766, "t": 71.63792419433594, "r": 447.36002, "b": 141.0381317138672, "coord_origin": "TOPLEFT"}, "confidence": 0.7128154635429382, "cells": [{"id": 27, "text": "Row and Column Access Control ", "bbox": {"l": 27.0, "t": 73.63799999999992, "r": 447.36002, "b": 103.00800000000004, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Support in IBM DB2 for i", "bbox": {"l": 27.0, "t": 113.76000999999997, "r": 314.43002, "b": 140.46002, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 8, "page_no": 145, "cluster": {"id": 8, "label": "text", "bbox": {"l": 26.35322380065918, "t": 240.97860717773438, "r": 127.4436, "b": 267.21185302734375, "coord_origin": "TOPLEFT"}, "confidence": 0.8400375843048096, "cells": [{"id": 29, "text": "Implement roles and ", "bbox": {"l": 26.700001, "t": 242.17200000000003, "r": 127.4436, "b": 252.85199, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "separation of duties", "bbox": {"l": 26.700001, "t": 256.15198, "r": 121.6608, "b": 266.83196999999996, "coord_origin": "TOPLEFT"}}]}, "text": "Implement roles and separation of duties"}, {"label": "text", "id": 9, "page_no": 145, "cluster": {"id": 9, "label": "text", "bbox": {"l": 26.22105598449707, "t": 283.7095947265625, "r": 120.28319999999998, "b": 322.87198, "coord_origin": "TOPLEFT"}, "confidence": 0.8828509449958801, "cells": [{"id": 31, "text": "Leverage row ", "bbox": {"l": 26.700001, "t": 284.17197, "r": 93.970795, "b": 294.85196, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "permissions on the ", "bbox": {"l": 26.700001, "t": 298.15198000000004, "r": 120.28319999999998, "b": 308.83197, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "database", "bbox": {"l": 26.700001, "t": 312.19199000000003, "r": 70.413605, "b": 322.87198, "coord_origin": "TOPLEFT"}}]}, "text": "Leverage row permissions on the database"}, {"label": "text", "id": 10, "page_no": 145, "cluster": {"id": 10, "label": "text", "bbox": {"l": 26.226221084594727, "t": 339.11865234375, "r": 121.44960000000002, "b": 378.85199, "coord_origin": "TOPLEFT"}, "confidence": 0.9064874649047852, "cells": [{"id": 34, "text": "Protect columns by ", "bbox": {"l": 26.700001, "t": 340.15198000000004, "r": 121.44960000000002, "b": 350.83197, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "defining column ", "bbox": {"l": 26.700001, "t": 354.19199000000003, "r": 106.5696, "b": 364.87198, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "masks", "bbox": {"l": 26.700001, "t": 368.1720000000001, "r": 58.194, "b": 378.85199, "coord_origin": "TOPLEFT"}}]}, "text": "Protect columns by defining column masks"}, {"label": "text", "id": 11, "page_no": 145, "cluster": {"id": 11, "label": "text", "bbox": {"l": 152.25205993652344, "t": 241.8492889404297, "r": 414.08423, "b": 323.59189, "coord_origin": "TOPLEFT"}, "confidence": 0.9789718389511108, "cells": [{"id": 37, "text": "This IBM Redpaper publication provides information about the IBM i 7.2 ", "bbox": {"l": 152.94, "t": 242.72857999999997, "r": 413.99057, "b": 251.59295999999995, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "feature of IBM DB2 for i Row and Column Access Control (RCAC). It ", "bbox": {"l": 152.94002, "t": 254.72839, "r": 401.85635, "b": 263.59277, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "offers a broad description of the function and advantages of controlling ", "bbox": {"l": 152.94002, "t": 266.72821, "r": 414.08423, "b": 275.59259, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "access to data in a comprehensive and transparent way. This ", "bbox": {"l": 152.94002, "t": 278.72803, "r": 381.24014, "b": 287.59244, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "publication helps you understand the capabilities of RCAC and provides ", "bbox": {"l": 152.94002, "t": 290.72784, "r": 414.07031, "b": 299.59225, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "examples of defining, creating, and implementing the row permissions ", "bbox": {"l": 152.94002, "t": 302.72766, "r": 414.05447, "b": 311.59207, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "and column masks in a relational database environment.", "bbox": {"l": 152.94002, "t": 314.72747999999996, "r": 362.3291, "b": 323.59189, "coord_origin": "TOPLEFT"}}]}, "text": "This IBM Redpaper publication provides information about the IBM i 7.2 feature of IBM DB2 for i Row and Column Access Control (RCAC). It offers a broad description of the function and advantages of controlling access to data in a comprehensive and transparent way. This publication helps you understand the capabilities of RCAC and provides examples of defining, creating, and implementing the row permissions and column masks in a relational database environment."}, {"label": "text", "id": 12, "page_no": 145, "cluster": {"id": 12, "label": "text", "bbox": {"l": 152.3572540283203, "t": 330.5283203125, "r": 414.17383, "b": 388.909912109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9799743890762329, "cells": [{"id": 44, "text": "This paper is intended for database engineers, data-centric application ", "bbox": {"l": 152.94002, "t": 331.70728, "r": 414.17383, "b": 340.57169, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "developers, and security officers who want to design and implement ", "bbox": {"l": 152.94002, "t": 343.70709, "r": 407.61029, "b": 352.5715, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "RCAC as a part of their data control and governance policy. A solid ", "bbox": {"l": 152.94002, "t": 355.70691, "r": 399.29565, "b": 364.57132, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "background in IBM i object level security, DB2 for i relational database ", "bbox": {"l": 152.94002, "t": 367.70673, "r": 414.0603, "b": 376.57114, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "concepts, and SQL is assumed.", "bbox": {"l": 152.94002, "t": 379.70654, "r": 268.86945, "b": 388.57095, "coord_origin": "TOPLEFT"}}]}, "text": "This paper is intended for database engineers, data-centric application developers, and security officers who want to design and implement RCAC as a part of their data control and governance policy. A solid background in IBM i object level security, DB2 for i relational database concepts, and SQL is assumed."}, {"label": "text", "id": 13, "page_no": 145, "cluster": {"id": 13, "label": "text", "bbox": {"l": 287.22, "t": 28.54803000000004, "r": 414.24481, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 49, "text": "Back cover", "bbox": {"l": 287.22, "t": 28.54803000000004, "r": 414.24481, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}}]}, "text": "Back cover"}], "body": [{"label": "picture", "id": 0, "page_no": 145, "cluster": {"id": 0, "label": "picture", "bbox": {"l": 485.1698303222656, "t": 25.259197235107422, "r": 566.2962036132812, "b": 54.68169999999998, "coord_origin": "TOPLEFT"}, "confidence": 0.9404253363609314, "cells": [{"id": 0, "text": "fi", "bbox": {"l": 558.11987, "t": 45.468689999999924, "r": 565.46039, "b": 54.68169999999998, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "text", "id": 2, "page_no": 145, "cluster": {"id": 2, "label": "text", "bbox": {"l": 466.3692626953125, "t": 247.39378356933594, "r": 559.80933, "b": 302.16061, "coord_origin": "TOPLEFT"}, "confidence": 0.8532671332359314, "cells": [{"id": 2, "text": "INTERNATIONAL ", "bbox": {"l": 467.3399999999999, "t": 247.71831999999995, "r": 559.80933, "b": 260.16052, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "TECHNICAL", "bbox": {"l": 467.3399999999999, "t": 261.75842, "r": 529.50208, "b": 274.20061999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "SUPPORT", "bbox": {"l": 467.3399999999999, "t": 275.73839999999996, "r": 518.93317, "b": 288.1806, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "ORGANIZATION", "bbox": {"l": 467.3399999999999, "t": 289.71841, "r": 550.7475, "b": 302.16061, "coord_origin": "TOPLEFT"}}]}, "text": "INTERNATIONAL TECHNICAL SUPPORT ORGANIZATION"}, {"label": "text", "id": 3, "page_no": 145, "cluster": {"id": 3, "label": "text", "bbox": {"l": 466.3262939453125, "t": 351.4299011230469, "r": 587.38916, "b": 386.47198, "coord_origin": "TOPLEFT"}, "confidence": 0.7157137989997864, "cells": [{"id": 6, "text": "BUILDING TECHNICAL ", "bbox": {"l": 467.3399999999999, "t": 351.79199, "r": 571.70758, "b": 362.47198, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "INFORMATION BASED ON ", "bbox": {"l": 467.3399999999999, "t": 363.79199, "r": 587.38916, "b": 374.47198, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "PRACTICAL EXPERIENCE", "bbox": {"l": 467.3399999999999, "t": 375.79199, "r": 582.5556, "b": 386.47198, "coord_origin": "TOPLEFT"}}]}, "text": "BUILDING TECHNICAL INFORMATION BASED ON PRACTICAL EXPERIENCE"}, {"label": "text", "id": 4, "page_no": 145, "cluster": {"id": 4, "label": "text", "bbox": {"l": 466.1037292480469, "t": 398.81231689453125, "r": 587.52051, "b": 541.63406, "coord_origin": "TOPLEFT"}, "confidence": 0.9518945813179016, "cells": [{"id": 9, "text": "IBM Redbooks are developed ", "bbox": {"l": 467.3399999999999, "t": 399.8602900000001, "r": 587.46674, "b": 409.63251, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "by the IBM International ", "bbox": {"l": 467.3399999999999, "t": 410.90067, "r": 566.34229, "b": 420.67285, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Technical Support ", "bbox": {"l": 467.3399999999999, "t": 421.88068, "r": 543.20404, "b": 431.65289, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Organization. Experts from ", "bbox": {"l": 467.3399999999999, "t": 432.8606899999999, "r": 577.76697, "b": 442.63287, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "IBM, Customers and Partners ", "bbox": {"l": 467.3399999999999, "t": 443.90106, "r": 587.40948, "b": 453.67328, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "from around the world create ", "bbox": {"l": 467.3399999999999, "t": 454.88107, "r": 587.52051, "b": 464.65326, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "timely technical information ", "bbox": {"l": 467.3399999999999, "t": 465.86108, "r": 582.67505, "b": 475.6333, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "based on realistic scenarios. ", "bbox": {"l": 467.3399999999999, "t": 476.90146, "r": 585.46722, "b": 486.67365, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Specific recommendations ", "bbox": {"l": 467.3399999999999, "t": 487.88147, "r": 577.70874, "b": 497.65369, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "are provided to help you ", "bbox": {"l": 467.3399999999999, "t": 498.86148, "r": 568.03546, "b": 508.63367, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "implement IT solutions more ", "bbox": {"l": 467.3399999999999, "t": 509.90186, "r": 585.44525, "b": 519.67407, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "effectively in your ", "bbox": {"l": 467.3399999999999, "t": 520.8818699999999, "r": 541.4967, "b": 530.65405, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "environment.", "bbox": {"l": 467.3399999999999, "t": 531.8618799999999, "r": 520.64893, "b": 541.63406, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Redbooks are developed by the IBM International Technical Support Organization. Experts from IBM, Customers and Partners from around the world create timely technical information based on realistic scenarios. Specific recommendations are provided to help you implement IT solutions more effectively in your environment."}, {"label": "text", "id": 5, "page_no": 145, "cluster": {"id": 5, "label": "text", "bbox": {"l": 466.66748046875, "t": 577.88818359375, "r": 571.0052490234375, "b": 601.5119, "coord_origin": "TOPLEFT"}, "confidence": 0.8230004906654358, "cells": [{"id": 22, "text": "For more information:", "bbox": {"l": 467.3399999999999, "t": 578.83191, "r": 570.948, "b": 589.5119, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ibm.com", "bbox": {"l": 467.3399999999999, "t": 590.83191, "r": 508.59961, "b": 601.5119, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "/redbooks", "bbox": {"l": 508.56000000000006, "t": 590.83191, "r": 552.74518, "b": 601.5119, "coord_origin": "TOPLEFT"}}]}, "text": "For more information: ibm.com /redbooks"}, {"label": "picture", "id": 6, "page_no": 145, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 474.35540771484375, "t": 80.05133819580078, "r": 592.2726440429688, "b": 189.8126220703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9696109890937805, "cells": [{"id": 25, "text": "Redpaper", "bbox": {"l": 474.60001, "t": 164.05658000000005, "r": 580.88989, "b": 188.94097999999997, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "\u2122", "bbox": {"l": 582.53992, "t": 172.32714999999996, "r": 592.13989, "b": 181.20714999999996, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "section_header", "id": 7, "page_no": 145, "cluster": {"id": 7, "label": "section_header", "bbox": {"l": 26.454715728759766, "t": 71.63792419433594, "r": 447.36002, "b": 141.0381317138672, "coord_origin": "TOPLEFT"}, "confidence": 0.7128154635429382, "cells": [{"id": 27, "text": "Row and Column Access Control ", "bbox": {"l": 27.0, "t": 73.63799999999992, "r": 447.36002, "b": 103.00800000000004, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Support in IBM DB2 for i", "bbox": {"l": 27.0, "t": 113.76000999999997, "r": 314.43002, "b": 140.46002, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 8, "page_no": 145, "cluster": {"id": 8, "label": "text", "bbox": {"l": 26.35322380065918, "t": 240.97860717773438, "r": 127.4436, "b": 267.21185302734375, "coord_origin": "TOPLEFT"}, "confidence": 0.8400375843048096, "cells": [{"id": 29, "text": "Implement roles and ", "bbox": {"l": 26.700001, "t": 242.17200000000003, "r": 127.4436, "b": 252.85199, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "separation of duties", "bbox": {"l": 26.700001, "t": 256.15198, "r": 121.6608, "b": 266.83196999999996, "coord_origin": "TOPLEFT"}}]}, "text": "Implement roles and separation of duties"}, {"label": "text", "id": 9, "page_no": 145, "cluster": {"id": 9, "label": "text", "bbox": {"l": 26.22105598449707, "t": 283.7095947265625, "r": 120.28319999999998, "b": 322.87198, "coord_origin": "TOPLEFT"}, "confidence": 0.8828509449958801, "cells": [{"id": 31, "text": "Leverage row ", "bbox": {"l": 26.700001, "t": 284.17197, "r": 93.970795, "b": 294.85196, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "permissions on the ", "bbox": {"l": 26.700001, "t": 298.15198000000004, "r": 120.28319999999998, "b": 308.83197, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "database", "bbox": {"l": 26.700001, "t": 312.19199000000003, "r": 70.413605, "b": 322.87198, "coord_origin": "TOPLEFT"}}]}, "text": "Leverage row permissions on the database"}, {"label": "text", "id": 10, "page_no": 145, "cluster": {"id": 10, "label": "text", "bbox": {"l": 26.226221084594727, "t": 339.11865234375, "r": 121.44960000000002, "b": 378.85199, "coord_origin": "TOPLEFT"}, "confidence": 0.9064874649047852, "cells": [{"id": 34, "text": "Protect columns by ", "bbox": {"l": 26.700001, "t": 340.15198000000004, "r": 121.44960000000002, "b": 350.83197, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "defining column ", "bbox": {"l": 26.700001, "t": 354.19199000000003, "r": 106.5696, "b": 364.87198, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "masks", "bbox": {"l": 26.700001, "t": 368.1720000000001, "r": 58.194, "b": 378.85199, "coord_origin": "TOPLEFT"}}]}, "text": "Protect columns by defining column masks"}, {"label": "text", "id": 11, "page_no": 145, "cluster": {"id": 11, "label": "text", "bbox": {"l": 152.25205993652344, "t": 241.8492889404297, "r": 414.08423, "b": 323.59189, "coord_origin": "TOPLEFT"}, "confidence": 0.9789718389511108, "cells": [{"id": 37, "text": "This IBM Redpaper publication provides information about the IBM i 7.2 ", "bbox": {"l": 152.94, "t": 242.72857999999997, "r": 413.99057, "b": 251.59295999999995, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "feature of IBM DB2 for i Row and Column Access Control (RCAC). It ", "bbox": {"l": 152.94002, "t": 254.72839, "r": 401.85635, "b": 263.59277, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "offers a broad description of the function and advantages of controlling ", "bbox": {"l": 152.94002, "t": 266.72821, "r": 414.08423, "b": 275.59259, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "access to data in a comprehensive and transparent way. This ", "bbox": {"l": 152.94002, "t": 278.72803, "r": 381.24014, "b": 287.59244, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "publication helps you understand the capabilities of RCAC and provides ", "bbox": {"l": 152.94002, "t": 290.72784, "r": 414.07031, "b": 299.59225, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "examples of defining, creating, and implementing the row permissions ", "bbox": {"l": 152.94002, "t": 302.72766, "r": 414.05447, "b": 311.59207, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "and column masks in a relational database environment.", "bbox": {"l": 152.94002, "t": 314.72747999999996, "r": 362.3291, "b": 323.59189, "coord_origin": "TOPLEFT"}}]}, "text": "This IBM Redpaper publication provides information about the IBM i 7.2 feature of IBM DB2 for i Row and Column Access Control (RCAC). It offers a broad description of the function and advantages of controlling access to data in a comprehensive and transparent way. This publication helps you understand the capabilities of RCAC and provides examples of defining, creating, and implementing the row permissions and column masks in a relational database environment."}, {"label": "text", "id": 12, "page_no": 145, "cluster": {"id": 12, "label": "text", "bbox": {"l": 152.3572540283203, "t": 330.5283203125, "r": 414.17383, "b": 388.909912109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9799743890762329, "cells": [{"id": 44, "text": "This paper is intended for database engineers, data-centric application ", "bbox": {"l": 152.94002, "t": 331.70728, "r": 414.17383, "b": 340.57169, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "developers, and security officers who want to design and implement ", "bbox": {"l": 152.94002, "t": 343.70709, "r": 407.61029, "b": 352.5715, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "RCAC as a part of their data control and governance policy. A solid ", "bbox": {"l": 152.94002, "t": 355.70691, "r": 399.29565, "b": 364.57132, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "background in IBM i object level security, DB2 for i relational database ", "bbox": {"l": 152.94002, "t": 367.70673, "r": 414.0603, "b": 376.57114, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "concepts, and SQL is assumed.", "bbox": {"l": 152.94002, "t": 379.70654, "r": 268.86945, "b": 388.57095, "coord_origin": "TOPLEFT"}}]}, "text": "This paper is intended for database engineers, data-centric application developers, and security officers who want to design and implement RCAC as a part of their data control and governance policy. A solid background in IBM i object level security, DB2 for i relational database concepts, and SQL is assumed."}, {"label": "text", "id": 13, "page_no": 145, "cluster": {"id": 13, "label": "text", "bbox": {"l": 287.22, "t": 28.54803000000004, "r": 414.24481, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 49, "text": "Back cover", "bbox": {"l": 287.22, "t": 28.54803000000004, "r": 414.24481, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}}]}, "text": "Back cover"}], "headers": [{"label": "page_footer", "id": 1, "page_no": 145, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 170.78512573242188, "t": 630.505859375, "r": 232.11270141601562, "b": 639.66301, "coord_origin": "TOPLEFT"}, "confidence": 0.7700248956680298, "cells": [{"id": 1, "text": "REDP-5110-00", "bbox": {"l": 171.0, "t": 631.338, "r": 231.88769999999997, "b": 639.66301, "coord_origin": "TOPLEFT"}}]}, "text": "REDP-5110-00"}]}}] \ No newline at end of file diff --git a/tests/data/groundtruth/docling_v2/redp5110_sampled.doctags.txt b/tests/data/groundtruth/docling_v2/redp5110_sampled.doctags.txt new file mode 100644 index 00000000..e3454a06 --- /dev/null +++ b/tests/data/groundtruth/docling_v2/redp5110_sampled.doctags.txt @@ -0,0 +1,299 @@ + +Front cover +
+ +
+Row and Column Access Control Support in IBM DB2 for i +Implement roles and separation of duties +Leverage row permissions on the database +Protect columns by defining column masks +Jim Bainbridge Hernando Bedoya Rob Bestgen Mike Cain Dan Cruikshank Jim Denton Doug Mack Tom McKinley Kent Milligan +Redpaper +Contents + + +Notices. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii +Trademarks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii +DB2 for i Center of Excellence. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix +Preface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi +Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi +Now you can become a published author, too!. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii +Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xiii +Stay connected to IBM Redbooks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv +Chapter 1. Securing and protecting IBM DB2 data . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 +1.1 Security fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 +1.2 Current state of IBM i security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2 +1.3 DB2 for i security controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 +1.3.1 Existing row and column control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4 +1.3.2 New controls: Row and Column Access Control. . . . . . . . . . . . . . . . . . . . . . . . . . .5 +Chapter 2. Roles and separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7 +2.1 Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8 +2.1.1 DDM and DRDA application server access: QIBM_DB_DDMDRDA . . . . . . . . . . .8 +2.1.2 Toolbox application server access: QIBM_DB_ZDA. . . . . . . . . . . . . . . . . . . . . . . .8 +2.1.3 Database Administrator function: QIBM_DB_SQLADM . . . . . . . . . . . . . . . . . . . . .9 +2.1.4 Database Information function: QIBM_DB_SYSMON. . . . . . . . . . . . . . . . . . . . . . 9 +2.1.5 Security Administrator function: QIBM_DB_SECADM . . . . . . . . . . . . . . . . . . . . . .9 +2.1.6 Change Function Usage CL command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10 +2.1.7 Verifying function usage IDs for RCAC with the FUNCTION_USAGE view . . . . .10 +2.2 Separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 +Chapter 3. Row and Column Access Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13 +3.1 Explanation of RCAC and the concept of access control . . . . . . . . . . . . . . . . . . . . . . .14 +3.1.1 Row permission and column mask definitions. . . . . . . . . . . . . . . . . . . . . . . . . . . 14 +3.1.2 Enabling and activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16 +3.2 Special registers and built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18 +3.2.1 Special registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18 +3.2.2 Built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .19 +3.3 VERIFY_GROUP_FOR_USER function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20 +3.4 Establishing and controlling accessibility by using the RCAC rule text . . . . . . . . . . . . .21 +. . . . . . . . . . . . . . . . . . . . . . . . 22 +3.5 SELECT, INSERT, and UPDATE behavior with RCAC +3.6.1 Assigning the QIBM_DB_SECADM function ID to the consultants. . . . . . . . . . . .23 +3.6.2 Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .23 +3.6.3 Demonstrating data access without RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24 +3.6.4 Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25 +3.6.5 Defining and creating column masks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 +3.6.6 Activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28 +3.6.7 Demonstrating data access with RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29 +3.6.8 Demonstrating data access with a view and RCAC . . . . . . . . . . . . . . . . . . . . . . .32 +
+DB2 for i Center of Excellence +Solution Brief IBM Systems Lab Services and Training +
+ +
+Highlights +GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH +GLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH +GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH +GLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH +
+ +
+Power Services +DB2 for i Center of Excellence +Expert help to achieve your business requirements +We build confident, satisfied clients +No one else has the vast consulting experiences, skills sharing and renown service offerings to do what we can do for you. +Because no one else is IBM. +With combined experiences and direct access to development groups, we're the experts in IBM DB2® for i. The DB2 for i Center of Excellence (CoE) can help you achieve-perhaps reexamine and exceed-your business requirements and gain more confidence and satisfaction in IBM product data management products and solutions. +Who we are, some of what we do +Global CoE engagements cover topics including: +r Database performance and scalability +r Advanced SQL knowledge and skills transfer +r Business intelligence and analytics +r DB2 Web Query +r Query/400 modernization for better reporting and analysis capabilities +r Database modernization and re-engineering +r Data-centric architecture and design +r Extremely large database and overcoming limits to growth +r ISV education and enablement +Preface +This IBMfi Redpaper™ publication provides information about the IBM i 7.2 feature of IBM DB2fi for i Row and Column Access Control (RCAC). It offers a broad description of the function and advantages of controlling access to data in a comprehensive and transparent way. This publication helps you understand the capabilities of RCAC and provides examples of defining, creating, and implementing the row permissions and column masks in a relational database environment. +This paper is intended for database engineers, data-centric application developers, and security officers who want to design and implement RCAC as a part of their data control and governance policy. A solid background in IBM i object level security, DB2 for i relational database concepts, and SQL is assumed. +This paper was produced by the IBM DB2 for i Center of Excellence team in partnership with the International Technical Support Organization (ITSO), Rochester, Minnesota US. +
+ +
+
+ +
+Jim Bainbridge is a senior DB2 consultant on the DB2 for i Center of Excellence team in the IBM Lab Services and Training organization. His primary role is training and implementation services for IBM DB2 Web Query for i and business analytics. Jim began his career with IBM 30 years ago in the IBM Rochester Development Lab, where he developed cooperative processing products that paired IBM PCs with IBM S/36 and AS/.400 systems. In the years since, Jim has held numerous technical roles, including independent software vendors technical support on a broad range of IBM technologies and products, and supporting customers in the IBM Executive Briefing Center and IBM Project Office. +Hernando Bedoya is a Senior IT Specialist at STG Lab Services and Training in Rochester, Minnesota. He writes extensively and teaches IBM classes worldwide in all areas of DB2 for i. Before joining STG Lab Services, he worked in the ITSO for nine years writing multiple IBM Redbooksfi publications. He also worked for IBM Colombia as an IBM AS/400fi IT Specialist doing presales support for the Andean countries. He has 28 years of experience in the computing field and has taught database classes in Colombian universities. He holds a Master's degree in Computer Science from EAFIT, Colombia. His areas of expertise are database technology, performance, and data warehousing. Hernando can be contacted at hbedoya@us.ibm.com . +Authors +
+ +
+Chapter 1. +1 +Securing and protecting IBM DB2 data +Recent news headlines are filled with reports of data breaches and cyber-attacks impacting global businesses of all sizes. The Identity Theft Resource Center$^{1}$ reports that almost 5000 data breaches have occurred since 2005, exposing over 600 million records of data. The financial cost of these data breaches is skyrocketing. Studies from the Ponemon Institute$^{2}$ revealed that the average cost of a data breach increased in 2013 by 15% globally and resulted in a brand equity loss of $9.4 million per attack. The average cost that is incurred for each lost record containing sensitive information increased more than 9% to $145 per record. +Businesses must make a serious effort to secure their data and recognize that securing information assets is a cost of doing business. In many parts of the world and in many industries, securing the data is required by law and subject to audits. Data security is no longer an option; it is a requirement. +This chapter describes how you can secure and protect data in DB2 for i. The following topics are covered in this chapter: +GLYPH Security fundamentals +GLYPH Current state of IBM i security +GLYPH DB2 for i security controls +1.1 Security fundamentals +Before reviewing database security techniques, there are two fundamental steps in securing information assets that must be described: +GLYPH First, and most important, is the definition of a company's security policy . Without a security policy, there is no definition of what are acceptable practices for using, accessing, and storing information by who, what, when, where, and how. A security policy should minimally address three things: confidentiality, integrity, and availability. +The monitoring and assessment of adherence to the security policy determines whether your security strategy is working. Often, IBM security consultants are asked to perform security assessments for companies without regard to the security policy. Although these assessments can be useful for observing how the system is defined and how data is being accessed, they cannot determine the level of security without a security policy. Without a security policy, it really is not an assessment as much as it is a baseline for monitoring the changes in the security settings that are captured. +A security policy is what defines whether the system and its settings are secure (or not). +GLYPH The second fundamental in securing data assets is the use of resource security . If implemented properly, resource security prevents data breaches from both internal and external intrusions. Resource security controls are closely tied to the part of the security policy that defines who should have access to what information resources. A hacker might be good enough to get through your company firewalls and sift his way through to your system, but if they do not have explicit access to your database, the hacker cannot compromise your information assets. +With your eyes now open to the importance of securing information assets, the rest of this chapter reviews the methods that are available for securing database resources on IBM i. +1.2 Current state of IBM i security +Because of the inherently secure nature of IBM i, many clients rely on the default system settings to protect their business data that is stored in DB2 for i. In most cases, this means no data protection because the default setting for the Create default public authority (QCRTAUT) system value is *CHANGE. +Even more disturbing is that many IBM i clients remain in this state, despite the news headlines and the significant costs that are involved with databases being compromised. This default security configuration makes it quite challenging to implement basic security policies. A tighter implementation is required if you really want to protect one of your company's most valuable assets, which is the data. +Traditionally, IBM i applications have employed menu-based security to counteract this default configuration that gives all users access to the data. The theory is that data is protected by the menu options controlling what database operations that the user can perform. This approach is ineffective, even if the user profile is restricted from running interactive commands. The reason is that in today's connected world there are a multitude of interfaces into the system, from web browsers to PC clients, that bypass application menus. If there are no object-level controls, users of these newer interfaces have an open door to your data. +Many businesses are trying to limit data access to a need-to-know basis. This security goal means that users should be given access only to the minimum set of data that is required to perform their job. Often, users with object-level access are given access to row and column values that are beyond what their business task requires because that object-level security provides an all-or-nothing solution. For example, object-level controls allow a manager to access data about all employees. Most security policies limit a manager to accessing data only for the employees that they manage. +1.3.1 Existing row and column control +Some IBM i clients have tried augmenting the all-or-nothing object-level security with SQL views (or logical files) and application logic, as shown in Figure 1-2. However, application-based logic is easy to bypass with all of the different data access interfaces that are provided by the IBM i operating system, such as Open Database Connectivity (ODBC) and System i Navigator. +Using SQL views to limit access to a subset of the data in a table also has its own set of challenges. First, there is the complexity of managing all of the SQL view objects that are used for securing data access. Second, scaling a view-based security solution can be difficult as the amount of data grows and the number of users increases. +Even if you are willing to live with these performance and management issues, a user with *ALLOBJ access still can directly access all of the data in the underlying DB2 table and easily bypass the security controls that are built into an SQL view. +Figure 1-2 Existing row and column controls +
+ +Figure 1-2 Existing row and column controls +
+2.1.6 Change Function Usage CL command +The following CL commands can be used to work with, display, or change function usage IDs: +GLYPH Work Function Usage ( WRKFCNUSG ) +GLYPH Change Function Usage ( CHGFCNUSG ) +GLYPH Display Function Usage ( DSPFCNUSG ) +For example, the following CHGFCNUSG command shows granting authorization to user HBEDOYA to administer and manage RCAC rules: +CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED) +2.1.7 Verifying function usage IDs for RCAC with the FUNCTION_USAGE view +The FUNCTION_USAGE view contains function usage configuration details. Table 2-1 describes the columns in the FUNCTION_USAGE view. +Table 2-1 FUNCTION_USAGE view + + + +Column nameData typeDescription +FUNCTION_IDVARCHAR(30)ID of the function. +USER_NAMEVARCHAR(10)Name of the user profile that has a usage setting for this function. +USAGEVARCHAR(7)Usage setting: GLYPH ALLOWED: The user profile is allowed to use the function. GLYPH DENIED: The user profile is not allowed to use the function. +USER_TYPEVARCHAR(5)Type of user profile: GLYPH USER: The user profile is a user. GLYPH GROUP: The user profile is a group. +
Table 2-1 FUNCTION_USAGE view
+To discover who has authorization to define and manage RCAC, you can use the query that is shown in Example 2-1. +Example 2-1 Query to determine who has authority to define and manage RCAC +SELECT function_id, user_name, usage, user_type FROM function_usage WHERE function_id='QIBM_DB_SECADM' ORDER BY user_name; +2.2 Separation of duties +Separation of duties helps businesses comply with industry regulations or organizational requirements and simplifies the management of authorities. Separation of duties is commonly used to prevent fraudulent activities or errors by a single person. It provides the ability for administrative functions to be divided across individuals without overlapping responsibilities, so that one user does not possess unlimited authority, such as with the *ALLOBJ authority. +For example, assume that a business has assigned the duty to manage security on IBM i to Theresa. Before release IBM i 7.2, to grant privileges, Theresa had to have the same privileges Theresa was granting to others. Therefore, to grant *USE privileges to the PAYROLL table, Theresa had to have *OBJMGT and *USE authority (or a higher level of authority, such as *ALLOBJ). This requirement allowed Theresa to access the data in the PAYROLL table even though Theresa's job description was only to manage its security. +In IBM i 7.2, the QIBM_DB_SECADM function usage grants authorities, revokes authorities, changes ownership, or changes the primary group without giving access to the object or, in the case of a database table, to the data that is in the table or allowing other operations on the table. +QIBM_DB_SECADM function usage can be granted only by a user with *SECADM special authority and can be given to a user or a group. +QIBM_DB_SECADM also is responsible for administering RCAC, which restricts which rows a user is allowed to access in a table and whether a user is allowed to see information in certain columns of a table. +A preferred practice is that the RCAC administrator has the QIBM_DB_SECADM function usage ID, but absolutely no other data privileges. The result is that the RCAC administrator can deploy and maintain the RCAC constructs, but cannot grant themselves unauthorized access to data itself. +Table 2-2 shows a comparison of the different function usage IDs and *JOBCTL authority to the different CL commands and DB2 for i tools. +Table 2-2 Comparison of the different function usage IDs and *JOBCTL authority + + + +User action*JOBCTLQIBM_DB_SECADMQIBM_DB_SQLADMQIBM_DB_SYSMONNo Authority +SET CURRENT DEGREE (SQL statement)XX +CHGQRYA command targeting a different user's jobXX +STRDBMON or ENDDBMON commands targeting a different user's jobXX +STRDBMON or ENDDBMON commands targeting a job that matches the current userXXXX +QUSRJOBI() API format 900 or System i Navigator's SQL Details for JobXXX +Visual Explain within Run SQL scriptsXXXX +Visual Explain outside of Run SQL scriptsXX +ANALYZE PLAN CACHE procedureXX +DUMP PLAN CACHE procedureXX +MODIFY PLAN CACHE procedureXX +MODIFY PLAN CACHE PROPERTIES procedure (currently does not check authority)XX +CHANGE PLAN CACHE SIZE procedure (currently does not check authority)XX +
Table 2-2 Comparison of the different function usage IDs and *JOBCTL authority
+The SQL CREATE PERMISSION statement that is shown in Figure 3-1 is used to define and initially enable or disable the row access rules. +Figure 3-1 CREATE PERMISSION SQL statement +
+ +The SQL CREATE PERMISSION statement that is shown in Figure 3-1 is used to define and initially enable or disable the row access rules.Figure 3-1 CREATE PERMISSION SQL statement +
+Column mask +A column mask is a database object that manifests a column value access control rule for a specific column in a specific table. It uses a CASE expression that describes what you see when you access the column. For example, a teller can see only the last four digits of a tax identification number. +Table 3-1 summarizes these special registers and their values. +Table 3-1 Special registers and their corresponding values + + + +Special registerCorresponding value +USER or SESSION_USERThe effective user of the thread excluding adopted authority. +CURRENT_USERThe effective user of the thread including adopted authority. When no adopted authority is present, this has the same value as USER. +SYSTEM_USERThe authorization ID that initiated the connection. +
Table 3-1 Special registers and their corresponding values
+Figure 3-5 shows the difference in the special register values when an adopted authority is used: +GLYPH A user connects to the server using the user profile ALICE. +GLYPH USER and CURRENT USER initially have the same value of ALICE. +GLYPH ALICE calls an SQL procedure that is named proc1, which is owned by user profile JOE and was created to adopt JOE's authority when it is called. +GLYPH While the procedure is running, the special register USER still contains the value of ALICE because it excludes any adopted authority. The special register CURRENT USER contains the value of JOE because it includes any adopted authority. +GLYPH When proc1 ends, the session reverts to its original state with both USER and CURRENT USER having the value of ALICE. +Figure 3-5 Special registers and adopted authority +
+ +Figure 3-5 Special registers and adopted authority +
+3.2.2 Built-in global variables +Built-in global variables are provided with the database manager and are used in SQL statements to retrieve scalar values that are associated with the variables. +IBM DB2 for i supports nine different built-in global variables that are read only and maintained by the system. These global variables can be used to identify attributes of the database connection and used as part of the RCAC logic. +Table 3-2 lists the nine built-in global variables. +Table 3-2 Built-in global variables + + + +Global variableTypeDescription +CLIENT_HOSTVARCHAR(255)Host name of the current client as returned by the system +CLIENT_IPADDRVARCHAR(128)IP address of the current client as returned by the system +CLIENT_PORTINTEGERPort used by the current client to communicate with the server +PACKAGE_NAMEVARCHAR(128)Name of the currently running package +PACKAGE_SCHEMAVARCHAR(128)Schema name of the currently running package +PACKAGE_VERSIONVARCHAR(64)Version identifier of the currently running package +ROUTINE_SCHEMAVARCHAR(128)Schema name of the currently running routine +ROUTINE_SPECIFIC_NAMEVARCHAR(128)Name of the currently running routine +ROUTINE_TYPECHAR(1)Type of the currently running routine +
Table 3-2 Built-in global variables
+3.3 VERIFY_GROUP_FOR_USER function +The VERIFY_GROUP_FOR_USER function was added in IBM i 7.2. Although it is primarily intended for use with RCAC permissions and masks, it can be used in other SQL statements. The first parameter must be one of these three special registers: SESSION_USER, USER, or CURRENT_USER. The second and subsequent parameters are a list of user or group profiles. Each of these values must be 1 - 10 characters in length. These values are not validated for their existence, which means that you can specify the names of user profiles that do not exist without receiving any kind of error. +If a special register value is in the list of user profiles or it is a member of a group profile included in the list, the function returns a long integer value of 1. Otherwise, it returns a value of 0. It never returns the null value. +Here is an example of using the VERIFY_GROUP_FOR_USER function: +1. There are user profiles for MGR, JANE, JUDY, and TONY. +2. The user profile JANE specifies a group profile of MGR. +3. If a user is connected to the server using user profile JANE, all of the following function invocations return a value of 1: +VERIFY_GROUP_FOR_USER (CURRENT_USER, 'MGR') VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR') VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR', 'STEVE') The following function invocation returns a value of 0: VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JUDY', 'TONY') +RETURN CASE +WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR', 'EMP' ) = 1 THEN EMPLOYEES . DATE_OF_BIRTH WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER = EMPLOYEES . USER_ID THEN EMPLOYEES . DATE_OF_BIRTH WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER <> EMPLOYEES . USER_ID THEN ( 9999 || '-' || MONTH ( EMPLOYEES . DATE_OF_BIRTH ) || '-' || DAY (EMPLOYEES.DATE_OF_BIRTH )) ELSE NULL END ENABLE ; +2. The other column to mask in this example is the TAX_ID information. In this example, the rules to enforce include the following ones: +-Human Resources can see the unmasked TAX_ID of the employees. +-Employees can see only their own unmasked TAX_ID. +-Managers see a masked version of TAX_ID with the first five characters replaced with the X character (for example, XXX-XX-1234). +-Any other person sees the entire TAX_ID as masked, for example, XXX-XX-XXXX. +To implement this column mask, run the SQL statement that is shown in Example 3-9. +Example 3-9 Creating a mask on the TAX_ID column +CREATE MASK HR_SCHEMA.MASK_TAX_ID_ON_EMPLOYEES ON HR_SCHEMA.EMPLOYEES AS EMPLOYEES FOR COLUMN TAX_ID RETURN CASE WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1 THEN EMPLOYEES . TAX_ID WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER = EMPLOYEES . USER_ID THEN EMPLOYEES . TAX_ID WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER <> EMPLOYEES . USER_ID THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( EMPLOYEES . TAX_ID , 8 , 4 ) ) WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1 THEN EMPLOYEES . TAX_ID ELSE 'XXX-XX-XXXX' END ENABLE ; +3. Figure 3-10 shows the masks that are created in the HR_SCHEMA. +Figure 3-10 Column masks shown in System i Navigator +
+ +Figure 3-10 Column masks shown in System i Navigator +
+3.6.6 Activating RCAC +Now that you have created the row permission and the two column masks, RCAC must be activated. The row permission and the two column masks are enabled (last clause in the scripts), but now you must activate RCAC on the table. To do so, complete the following steps: +1. Run the SQL statements that are shown in Example 3-10. +Example 3-10 Activating RCAC on the EMPLOYEES table +/* Active Row Access Control (permissions) */ +/* Active Column Access Control (masks) ALTER TABLE HR_SCHEMA.EMPLOYEES ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL; +*/ +2. Look at the definition of the EMPLOYEE table, as shown in Figure 3-11. To do this, from the main navigation pane of System i Navigator, click Schemas  HR_SCHEMA  Tables , right-click the EMPLOYEES table, and click Definition . +Figure 3-11 Selecting the EMPLOYEES table from System i Navigator +
+ +Figure 3-11 Selecting the EMPLOYEES table from System i Navigator +
+2. Figure 4-68 shows the Visual Explain of the same SQL statement, but with RCAC enabled. It is clear that the implementation of the SQL statement is more complex because the row permission rule becomes part of the WHERE clause. +Figure 4-68 Visual Explain with RCAC enabled +
+ +Figure 4-68 Visual Explain with RCAC enabled +
+3. Compare the advised indexes that are provided by the Optimizer without RCAC and with RCAC enabled. Figure 4-69 shows the index advice for the SQL statement without RCAC enabled. The index being advised is for the ORDER BY clause. +Figure 4-69 Index advice with no RCAC +
+ +Figure 4-69 Index advice with no RCAC +
+THEN C . CUSTOMER_TAX_ID WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( C . CUSTOMER_TAX_ID , 8 , 4 ) ) WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_TAX_ID ELSE 'XXX-XX-XXXX' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_DRIVERS_LICENSE_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_DRIVERS_LICENSE_NUMBER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ELSE '*************' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_LOGIN_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_LOGIN_ID RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_LOGIN_ID WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_LOGIN_ID ELSE '*****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_SECURITY_QUESTION RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION ELSE '*****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_SECURITY_QUESTION_ANSWER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ELSE '*****' END ENABLE ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL ; +Back cover +Row and Column Access Control Support in IBM DB2 for i +Implement roles and separation of duties +Leverage row permissions on the database +Protect columns by defining column masks +This IBM Redpaper publication provides information about the IBM i 7.2 feature of IBM DB2 for i Row and Column Access Control (RCAC). It offers a broad description of the function and advantages of controlling access to data in a comprehensive and transparent way. This publication helps you understand the capabilities of RCAC and provides examples of defining, creating, and implementing the row permissions and column masks in a relational database environment. +This paper is intended for database engineers, data-centric application developers, and security officers who want to design and implement RCAC as a part of their data control and governance policy. A solid background in IBM i object level security, DB2 for i relational database concepts, and SQL is assumed. +
+ +
+
+ +
+INTERNATIONAL TECHNICAL SUPPORT ORGANIZATION +BUILDING TECHNICAL INFORMATION BASED ON PRACTICAL EXPERIENCE +IBM Redbooks are developed by the IBM International Technical Support Organization. Experts from IBM, Customers and Partners from around the world create timely technical information based on realistic scenarios. Specific recommendations are provided to help you implement IT solutions more effectively in your environment. +For more information: ibm.com /redbooks +
\ No newline at end of file diff --git a/tests/data/groundtruth/docling_v2/redp5110_sampled.json b/tests/data/groundtruth/docling_v2/redp5110_sampled.json new file mode 100644 index 00000000..3ae34bfc --- /dev/null +++ b/tests/data/groundtruth/docling_v2/redp5110_sampled.json @@ -0,0 +1 @@ +{"schema_name": "DoclingDocument", "version": "1.0.0", "name": "redp5110_sampled", "origin": {"mimetype": "application/pdf", "binary_hash": 12110913468886801317, "filename": "redp5110_sampled.pdf", "uri": null}, "furniture": {"self_ref": "#/furniture", "parent": null, "children": [], "name": "_root_", "label": "unspecified"}, "body": {"self_ref": "#/body", "parent": null, "children": [{"cref": "#/texts/0"}, {"cref": "#/pictures/0"}, {"cref": "#/texts/1"}, {"cref": "#/texts/2"}, {"cref": "#/texts/3"}, {"cref": "#/texts/4"}, {"cref": "#/texts/5"}, {"cref": "#/texts/6"}, {"cref": "#/texts/7"}, {"cref": "#/texts/8"}, {"cref": "#/tables/0"}, {"cref": "#/texts/9"}, {"cref": "#/texts/10"}, {"cref": "#/texts/11"}, {"cref": "#/texts/12"}, {"cref": "#/pictures/1"}, {"cref": "#/texts/13"}, {"cref": "#/groups/0"}, {"cref": "#/pictures/2"}, {"cref": "#/texts/18"}, {"cref": "#/texts/19"}, {"cref": "#/texts/20"}, {"cref": "#/texts/21"}, {"cref": "#/texts/22"}, {"cref": "#/texts/23"}, {"cref": "#/texts/24"}, {"cref": "#/texts/25"}, {"cref": "#/texts/26"}, {"cref": "#/groups/1"}, {"cref": "#/texts/36"}, {"cref": "#/texts/37"}, {"cref": "#/texts/38"}, {"cref": "#/texts/39"}, {"cref": "#/pictures/3"}, {"cref": "#/pictures/4"}, {"cref": "#/texts/40"}, {"cref": "#/texts/41"}, {"cref": "#/texts/42"}, {"cref": "#/texts/43"}, {"cref": "#/texts/44"}, {"cref": "#/pictures/5"}, {"cref": "#/texts/45"}, {"cref": "#/texts/46"}, {"cref": "#/texts/47"}, {"cref": "#/texts/48"}, {"cref": "#/texts/49"}, {"cref": "#/texts/50"}, {"cref": "#/groups/2"}, {"cref": "#/texts/54"}, {"cref": "#/texts/55"}, {"cref": "#/texts/56"}, {"cref": "#/texts/57"}, {"cref": "#/texts/58"}, {"cref": "#/texts/59"}, {"cref": "#/groups/3"}, {"cref": "#/texts/62"}, {"cref": "#/groups/4"}, {"cref": "#/texts/64"}, {"cref": "#/texts/65"}, {"cref": "#/texts/66"}, {"cref": "#/texts/67"}, {"cref": "#/texts/68"}, {"cref": "#/texts/69"}, {"cref": "#/texts/70"}, {"cref": "#/texts/71"}, {"cref": "#/texts/72"}, {"cref": "#/texts/73"}, {"cref": "#/texts/74"}, {"cref": "#/texts/75"}, {"cref": "#/texts/76"}, {"cref": "#/texts/77"}, {"cref": "#/texts/78"}, {"cref": "#/pictures/6"}, {"cref": "#/texts/79"}, {"cref": "#/texts/80"}, {"cref": "#/groups/5"}, {"cref": "#/texts/84"}, {"cref": "#/texts/85"}, {"cref": "#/texts/86"}, {"cref": "#/texts/87"}, {"cref": "#/texts/88"}, {"cref": "#/tables/1"}, {"cref": "#/texts/89"}, {"cref": "#/texts/90"}, {"cref": "#/texts/91"}, {"cref": "#/texts/92"}, {"cref": "#/texts/93"}, {"cref": "#/texts/94"}, {"cref": "#/texts/95"}, {"cref": "#/texts/96"}, {"cref": "#/texts/97"}, {"cref": "#/texts/98"}, {"cref": "#/texts/99"}, {"cref": "#/texts/100"}, {"cref": "#/texts/101"}, {"cref": "#/texts/102"}, {"cref": "#/tables/2"}, {"cref": "#/texts/103"}, {"cref": "#/texts/104"}, {"cref": "#/texts/105"}, {"cref": "#/texts/106"}, {"cref": "#/pictures/7"}, {"cref": "#/texts/107"}, {"cref": "#/texts/108"}, {"cref": "#/texts/109"}, {"cref": "#/texts/110"}, {"cref": "#/texts/111"}, {"cref": "#/texts/112"}, {"cref": "#/tables/3"}, {"cref": "#/texts/113"}, {"cref": "#/groups/6"}, {"cref": "#/texts/119"}, {"cref": "#/pictures/8"}, {"cref": "#/texts/120"}, {"cref": "#/texts/121"}, {"cref": "#/texts/122"}, {"cref": "#/texts/123"}, {"cref": "#/texts/124"}, {"cref": "#/texts/125"}, {"cref": "#/texts/126"}, {"cref": "#/texts/127"}, {"cref": "#/texts/128"}, {"cref": "#/tables/4"}, {"cref": "#/texts/129"}, {"cref": "#/texts/130"}, {"cref": "#/texts/131"}, {"cref": "#/texts/132"}, {"cref": "#/groups/7"}, {"cref": "#/texts/136"}, {"cref": "#/texts/137"}, {"cref": "#/texts/138"}, {"cref": "#/groups/8"}, {"cref": "#/texts/145"}, {"cref": "#/texts/146"}, {"cref": "#/texts/147"}, {"cref": "#/texts/148"}, {"cref": "#/groups/9"}, {"cref": "#/texts/150"}, {"cref": "#/pictures/9"}, {"cref": "#/texts/151"}, {"cref": "#/texts/152"}, {"cref": "#/groups/10"}, {"cref": "#/texts/154"}, {"cref": "#/groups/11"}, {"cref": "#/texts/156"}, {"cref": "#/texts/157"}, {"cref": "#/groups/12"}, {"cref": "#/texts/159"}, {"cref": "#/pictures/10"}, {"cref": "#/texts/160"}, {"cref": "#/texts/161"}, {"cref": "#/groups/13"}, {"cref": "#/texts/163"}, {"cref": "#/pictures/11"}, {"cref": "#/groups/14"}, {"cref": "#/texts/165"}, {"cref": "#/pictures/12"}, {"cref": "#/texts/166"}, {"cref": "#/texts/167"}, {"cref": "#/texts/168"}, {"cref": "#/texts/169"}, {"cref": "#/texts/170"}, {"cref": "#/texts/171"}, {"cref": "#/texts/172"}, {"cref": "#/texts/173"}, {"cref": "#/texts/174"}, {"cref": "#/texts/175"}, {"cref": "#/texts/176"}, {"cref": "#/texts/177"}, {"cref": "#/texts/178"}, {"cref": "#/pictures/13"}, {"cref": "#/pictures/14"}, {"cref": "#/texts/179"}, {"cref": "#/texts/180"}, {"cref": "#/texts/181"}, {"cref": "#/texts/182"}], "name": "_root_", "label": "unspecified"}, "groups": [{"self_ref": "#/groups/0", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/14"}, {"cref": "#/texts/15"}, {"cref": "#/texts/16"}, {"cref": "#/texts/17"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/1", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/27"}, {"cref": "#/texts/28"}, {"cref": "#/texts/29"}, {"cref": "#/texts/30"}, {"cref": "#/texts/31"}, {"cref": "#/texts/32"}, {"cref": "#/texts/33"}, {"cref": "#/texts/34"}, {"cref": "#/texts/35"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/2", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/51"}, {"cref": "#/texts/52"}, {"cref": "#/texts/53"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/3", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/60"}, {"cref": "#/texts/61"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/4", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/63"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/5", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/81"}, {"cref": "#/texts/82"}, {"cref": "#/texts/83"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/6", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/114"}, {"cref": "#/texts/115"}, {"cref": "#/texts/116"}, {"cref": "#/texts/117"}, {"cref": "#/texts/118"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/7", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/133"}, {"cref": "#/texts/134"}, {"cref": "#/texts/135"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/8", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/139"}, {"cref": "#/texts/140"}, {"cref": "#/texts/141"}, {"cref": "#/texts/142"}, {"cref": "#/texts/143"}, {"cref": "#/texts/144"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/9", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/149"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/10", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/153"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/11", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/155"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/12", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/158"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/13", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/162"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/14", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/164"}], "name": "list", "label": "list"}], "texts": [{"self_ref": "#/texts/0", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 1, "bbox": {"l": 287.82000732421875, "t": 763.4519653320312, "r": 418.83355712890625, "b": 741.251953125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 11]}], "orig": "Front cover", "text": "Front cover"}, {"self_ref": "#/texts/1", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 1, "bbox": {"l": 35.68840408325195, "t": 709.605712890625, "r": 584.6428833007812, "b": 625.594482421875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i", "level": 1}, {"self_ref": "#/texts/2", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 1, "bbox": {"l": 35.0073127746582, "t": 497.2061767578125, "r": 216.00064086914062, "b": 466.4394226074219, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 40]}], "orig": "Implement roles and separation of duties", "text": "Implement roles and separation of duties"}, {"self_ref": "#/texts/3", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 1, "bbox": {"l": 34.56448745727539, "t": 443.0459289550781, "r": 202.45404052734375, "b": 412.4388732910156, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 40]}], "orig": "Leverage row permissions on the database", "text": "Leverage row permissions on the database"}, {"self_ref": "#/texts/4", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 1, "bbox": {"l": 35.171409606933594, "t": 389.3459167480469, "r": 195.27529907226562, "b": 358.4383239746094, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 40]}], "orig": "Protect columns by defining column masks", "text": "Protect columns by defining column masks"}, {"self_ref": "#/texts/5", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 1, "bbox": {"l": 36.894657135009766, "t": 42.1337890625, "r": 164.45849609375, "b": 26.895000457763672, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 17]}], "orig": "ibm.com /redbooks", "text": "ibm.com /redbooks"}, {"self_ref": "#/texts/6", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 1, "bbox": {"l": 497.0279846191406, "t": 218.1163330078125, "r": 581.8246459960938, "b": 92.828369140625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 115]}], "orig": "Jim Bainbridge Hernando Bedoya Rob Bestgen Mike Cain Dan Cruikshank Jim Denton Doug Mack Tom McKinley Kent Milligan", "text": "Jim Bainbridge Hernando Bedoya Rob Bestgen Mike Cain Dan Cruikshank Jim Denton Doug Mack Tom McKinley Kent Milligan"}, {"self_ref": "#/texts/7", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 1, "bbox": {"l": 314.70001220703125, "t": 80.49143981933594, "r": 580.52001953125, "b": 18.227041244506836, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 8]}], "orig": "Redpaper", "text": "Redpaper"}, {"self_ref": "#/texts/8", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 2, "bbox": {"l": 64.6857681274414, "t": 718.98193359375, "r": 168.73440551757812, "b": 695.9519653320312, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 8]}], "orig": "Contents", "text": "Contents", "level": 1}, {"self_ref": "#/texts/9", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 2, "bbox": {"l": 63.751060485839844, "t": 37.30303955078125, "r": 257.24334716796875, "b": 27.8984375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 48]}], "orig": "' Copyright IBM Corp. 2014. All rights reserved.", "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"self_ref": "#/texts/10", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 2, "bbox": {"l": 538.3257446289062, "t": 37.91693115234375, "r": 547.25927734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 3]}], "orig": "iii", "text": "iii"}, {"self_ref": "#/texts/11", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 3, "bbox": {"l": 64.80000305175781, "t": 717.5160522460938, "r": 235.86239624023438, "b": 706.416015625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 30]}], "orig": "DB2 for i Center of Excellence", "text": "DB2 for i Center of Excellence"}, {"self_ref": "#/texts/12", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 3, "bbox": {"l": 93.67039489746094, "t": 654.3631591796875, "r": 233.99972534179688, "b": 636.66357421875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 52]}], "orig": "Solution Brief IBM Systems Lab Services and Training", "text": "Solution Brief IBM Systems Lab Services and Training"}, {"self_ref": "#/texts/13", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 3, "bbox": {"l": 144.19781494140625, "t": 464.93798828125, "r": 188.74681091308594, "b": 454.64495849609375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 10]}], "orig": "Highlights", "text": "Highlights", "level": 1}, {"self_ref": "#/texts/14", "parent": {"cref": "#/groups/0"}, "children": [], "label": "list_item", "prov": [{"page_no": 3, "bbox": {"l": 144.4553985595703, "t": 447.962890625, "r": 242.87388610839844, "b": 433.3105773925781, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 532]}], "orig": "GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "text": "GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/15", "parent": {"cref": "#/groups/0"}, "children": [], "label": "list_item", "prov": [{"page_no": 3, "bbox": {"l": 144.40879821777344, "t": 425.3538513183594, "r": 259.22869873046875, "b": 402.7626953125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 876]}], "orig": "GLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "text": "GLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/16", "parent": {"cref": "#/groups/0"}, "children": [], "label": "list_item", "prov": [{"page_no": 3, "bbox": {"l": 144.23313903808594, "t": 394.8355407714844, "r": 249.8356170654297, "b": 379.6138916015625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 672]}], "orig": "GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "text": "GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/17", "parent": {"cref": "#/groups/0"}, "children": [], "label": "list_item", "prov": [{"page_no": 3, "bbox": {"l": 144.35208129882812, "t": 371.82550048828125, "r": 234.2516326904297, "b": 357.3323669433594, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 613]}], "orig": "GLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "text": "GLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/18", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 3, "bbox": {"l": 460.8193359375, "t": 653.661376953125, "r": 506.26177978515625, "b": 646.5781860351562, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 14]}], "orig": "Power Services", "text": "Power Services"}, {"self_ref": "#/texts/19", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 3, "bbox": {"l": 280.07391357421875, "t": 554.2871704101562, "r": 463.8094177246094, "b": 515.3794555664062, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 30]}], "orig": "DB2 for i Center of Excellence", "text": "DB2 for i Center of Excellence", "level": 1}, {"self_ref": "#/texts/20", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 3, "bbox": {"l": 279.51953125, "t": 514.842529296875, "r": 483.7276916503906, "b": 503.36505126953125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 49]}], "orig": "Expert help to achieve your business requirements", "text": "Expert help to achieve your business requirements"}, {"self_ref": "#/texts/21", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 3, "bbox": {"l": 279.468994140625, "t": 476.9213562011719, "r": 443.375732421875, "b": 467.1043395996094, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 37]}], "orig": "We build confident, satisfied clients", "text": "We build confident, satisfied clients", "level": 1}, {"self_ref": "#/texts/22", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 3, "bbox": {"l": 279.530517578125, "t": 464.73529052734375, "r": 488.1546630859375, "b": 446.4922790527344, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 122]}], "orig": "No one else has the vast consulting experiences, skills sharing and renown service offerings to do what we can do for you.", "text": "No one else has the vast consulting experiences, skills sharing and renown service offerings to do what we can do for you."}, {"self_ref": "#/texts/23", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 3, "bbox": {"l": 280.0453186035156, "t": 435.4290466308594, "r": 367.8602294921875, "b": 427.2699890136719, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 27]}], "orig": "Because no one else is IBM.", "text": "Because no one else is IBM."}, {"self_ref": "#/texts/24", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 3, "bbox": {"l": 279.70794677734375, "t": 415.73895263671875, "r": 500.321044921875, "b": 366.6907958984375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 318]}], "orig": "With combined experiences and direct access to development groups, we're the experts in IBM DB2\u00ae for i. The DB2 for i Center of Excellence (CoE) can help you achieve-perhaps reexamine and exceed-your business requirements and gain more confidence and satisfaction in IBM product data management products and solutions.", "text": "With combined experiences and direct access to development groups, we're the experts in IBM DB2\u00ae for i. The DB2 for i Center of Excellence (CoE) can help you achieve-perhaps reexamine and exceed-your business requirements and gain more confidence and satisfaction in IBM product data management products and solutions."}, {"self_ref": "#/texts/25", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 3, "bbox": {"l": 279.6336669921875, "t": 354.8772277832031, "r": 435.1236572265625, "b": 345.1319274902344, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 30]}], "orig": "Who we are, some of what we do", "text": "Who we are, some of what we do", "level": 1}, {"self_ref": "#/texts/26", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 3, "bbox": {"l": 279.4736328125, "t": 342.7397766113281, "r": 434.56317138671875, "b": 334.5338134765625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 46]}], "orig": "Global CoE engagements cover topics including:", "text": "Global CoE engagements cover topics including:"}, {"self_ref": "#/texts/27", "parent": {"cref": "#/groups/1"}, "children": [], "label": "list_item", "prov": [{"page_no": 3, "bbox": {"l": 279.74200439453125, "t": 323.6339416503906, "r": 402.1675109863281, "b": 315.4241027832031, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 38]}], "orig": "r Database performance and scalability", "text": "r Database performance and scalability", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/28", "parent": {"cref": "#/groups/1"}, "children": [], "label": "list_item", "prov": [{"page_no": 3, "bbox": {"l": 279.7657165527344, "t": 313.35101318359375, "r": 424.9964599609375, "b": 305.21771240234375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 44]}], "orig": "r Advanced SQL knowledge and skills transfer", "text": "r Advanced SQL knowledge and skills transfer", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/29", "parent": {"cref": "#/groups/1"}, "children": [], "label": "list_item", "prov": [{"page_no": 3, "bbox": {"l": 279.9660339355469, "t": 302.5164489746094, "r": 392.2996520996094, "b": 294.8087158203125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 37]}], "orig": "r Business intelligence and analytics", "text": "r Business intelligence and analytics", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/30", "parent": {"cref": "#/groups/1"}, "children": [], "label": "list_item", "prov": [{"page_no": 3, "bbox": {"l": 279.9432067871094, "t": 292.4297180175781, "r": 339.94354248046875, "b": 284.7392272949219, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 15]}], "orig": "r DB2 Web Query", "text": "r DB2 Web Query", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/31", "parent": {"cref": "#/groups/1"}, "children": [], "label": "list_item", "prov": [{"page_no": 3, "bbox": {"l": 279.68328857421875, "t": 282.5703125, "r": 504.21795654296875, "b": 274.50201416015625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 72]}], "orig": "r Query/400 modernization for better reporting and analysis capabilities", "text": "r Query/400 modernization for better reporting and analysis capabilities", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/32", "parent": {"cref": "#/groups/1"}, "children": [], "label": "list_item", "prov": [{"page_no": 3, "bbox": {"l": 279.66998291015625, "t": 271.96844482421875, "r": 423.002197265625, "b": 263.96942138671875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 43]}], "orig": "r Database modernization and re-engineering", "text": "r Database modernization and re-engineering", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/33", "parent": {"cref": "#/groups/1"}, "children": [], "label": "list_item", "prov": [{"page_no": 3, "bbox": {"l": 279.7203674316406, "t": 262.03643798828125, "r": 400.07391357421875, "b": 254.12164306640625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 38]}], "orig": "r Data-centric architecture and design", "text": "r Data-centric architecture and design", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/34", "parent": {"cref": "#/groups/1"}, "children": [], "label": "list_item", "prov": [{"page_no": 3, "bbox": {"l": 279.7815856933594, "t": 252.1336669921875, "r": 467.2125549316406, "b": 244.1992645263672, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 58]}], "orig": "r Extremely large database and overcoming limits to growth", "text": "r Extremely large database and overcoming limits to growth", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/35", "parent": {"cref": "#/groups/1"}, "children": [], "label": "list_item", "prov": [{"page_no": 3, "bbox": {"l": 279.89080810546875, "t": 241.97698974609375, "r": 382.3631591796875, "b": 234.0165557861328, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 30]}], "orig": "r ISV education and enablement", "text": "r ISV education and enablement", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/36", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 4, "bbox": {"l": 64.80000305175781, "t": 718.8968505859375, "r": 151.46160888671875, "b": 695.9519653320312, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 7]}], "orig": "Preface", "text": "Preface", "level": 1}, {"self_ref": "#/texts/37", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 4, "bbox": {"l": 135.75503540039062, "t": 660.085693359375, "r": 547.3082275390625, "b": 590.1392822265625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 469]}], "orig": "This IBMfi Redpaper\u2122 publication provides information about the IBM i 7.2 feature of IBM DB2fi for i Row and Column Access Control (RCAC). It offers a broad description of the function and advantages of controlling access to data in a comprehensive and transparent way. This publication helps you understand the capabilities of RCAC and provides examples of defining, creating, and implementing the row permissions and column masks in a relational database environment.", "text": "This IBMfi Redpaper\u2122 publication provides information about the IBM i 7.2 feature of IBM DB2fi for i Row and Column Access Control (RCAC). It offers a broad description of the function and advantages of controlling access to data in a comprehensive and transparent way. This publication helps you understand the capabilities of RCAC and provides examples of defining, creating, and implementing the row permissions and column masks in a relational database environment."}, {"self_ref": "#/texts/38", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 4, "bbox": {"l": 135.94647216796875, "t": 577.9362182617188, "r": 546.4656982421875, "b": 531.8143310546875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 309]}], "orig": "This paper is intended for database engineers, data-centric application developers, and security officers who want to design and implement RCAC as a part of their data control and governance policy. A solid background in IBM i object level security, DB2 for i relational database concepts, and SQL is assumed.", "text": "This paper is intended for database engineers, data-centric application developers, and security officers who want to design and implement RCAC as a part of their data control and governance policy. A solid background in IBM i object level security, DB2 for i relational database concepts, and SQL is assumed."}, {"self_ref": "#/texts/39", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 4, "bbox": {"l": 135.71319580078125, "t": 472.1881408691406, "r": 547.2366943359375, "b": 449.8482971191406, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 172]}], "orig": "This paper was produced by the IBM DB2 for i Center of Excellence team in partnership with the International Technical Support Organization (ITSO), Rochester, Minnesota US.", "text": "This paper was produced by the IBM DB2 for i Center of Excellence team in partnership with the International Technical Support Organization (ITSO), Rochester, Minnesota US."}, {"self_ref": "#/texts/40", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 4, "bbox": {"l": 63.724002838134766, "t": 37.29620361328125, "r": 257.24334716796875, "b": 27.89178466796875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 48]}], "orig": "' Copyright IBM Corp. 2014. All rights reserved.", "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"self_ref": "#/texts/41", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 4, "bbox": {"l": 538.058349609375, "t": 37.60198974609375, "r": 547.2503051757812, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "xi", "text": "xi"}, {"self_ref": "#/texts/42", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 4, "bbox": {"l": 262.6522521972656, "t": 417.312744140625, "r": 541.2507934570312, "b": 275.06854248046875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 684]}], "orig": "Jim Bainbridge is a senior DB2 consultant on the DB2 for i Center of Excellence team in the IBM Lab Services and Training organization. His primary role is training and implementation services for IBM DB2 Web Query for i and business analytics. Jim began his career with IBM 30 years ago in the IBM Rochester Development Lab, where he developed cooperative processing products that paired IBM PCs with IBM S/36 and AS/.400 systems. In the years since, Jim has held numerous technical roles, including independent software vendors technical support on a broad range of IBM technologies and products, and supporting customers in the IBM Executive Briefing Center and IBM Project Office.", "text": "Jim Bainbridge is a senior DB2 consultant on the DB2 for i Center of Excellence team in the IBM Lab Services and Training organization. His primary role is training and implementation services for IBM DB2 Web Query for i and business analytics. Jim began his career with IBM 30 years ago in the IBM Rochester Development Lab, where he developed cooperative processing products that paired IBM PCs with IBM S/36 and AS/.400 systems. In the years since, Jim has held numerous technical roles, including independent software vendors technical support on a broad range of IBM technologies and products, and supporting customers in the IBM Executive Briefing Center and IBM Project Office."}, {"self_ref": "#/texts/43", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 4, "bbox": {"l": 262.4736328125, "t": 265.49169921875, "r": 541.2737426757812, "b": 111.162841796875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 726]}], "orig": "Hernando Bedoya is a Senior IT Specialist at STG Lab Services and Training in Rochester, Minnesota. He writes extensively and teaches IBM classes worldwide in all areas of DB2 for i. Before joining STG Lab Services, he worked in the ITSO for nine years writing multiple IBM Redbooksfi publications. He also worked for IBM Colombia as an IBM AS/400fi IT Specialist doing presales support for the Andean countries. He has 28 years of experience in the computing field and has taught database classes in Colombian universities. He holds a Master's degree in Computer Science from EAFIT, Colombia. His areas of expertise are database technology, performance, and data warehousing. Hernando can be contacted at hbedoya@us.ibm.com .", "text": "Hernando Bedoya is a Senior IT Specialist at STG Lab Services and Training in Rochester, Minnesota. He writes extensively and teaches IBM classes worldwide in all areas of DB2 for i. Before joining STG Lab Services, he worked in the ITSO for nine years writing multiple IBM Redbooksfi publications. He also worked for IBM Colombia as an IBM AS/400fi IT Specialist doing presales support for the Andean countries. He has 28 years of experience in the computing field and has taught database classes in Colombian universities. He holds a Master's degree in Computer Science from EAFIT, Colombia. His areas of expertise are database technology, performance, and data warehousing. Hernando can be contacted at hbedoya@us.ibm.com ."}, {"self_ref": "#/texts/44", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 4, "bbox": {"l": 64.22550201416016, "t": 504.8105773925781, "r": 125.36660766601562, "b": 488.9364013671875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 7]}], "orig": "Authors", "text": "Authors", "level": 1}, {"self_ref": "#/texts/45", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 5, "bbox": {"l": 81.0, "t": 523.457275390625, "r": 115.13253021240234, "b": 517.019287109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 10]}], "orig": "Chapter 1.", "text": "Chapter 1."}, {"self_ref": "#/texts/46", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 5, "bbox": {"l": 500.3999938964844, "t": 699.3392333984375, "r": 522.6177368164062, "b": 661.8682861328125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 1]}], "orig": "1", "text": "1"}, {"self_ref": "#/texts/47", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 5, "bbox": {"l": 136.68006896972656, "t": 538.7101440429688, "r": 547.3047485351562, "b": 482.1217956542969, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 36]}], "orig": "Securing and protecting IBM DB2 data", "text": "Securing and protecting IBM DB2 data", "level": 1}, {"self_ref": "#/texts/48", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 5, "bbox": {"l": 136.15219116210938, "t": 444.024658203125, "r": 547.2540283203125, "b": 361.62640380859375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 648]}], "orig": "Recent news headlines are filled with reports of data breaches and cyber-attacks impacting global businesses of all sizes. The Identity Theft Resource Center$^{1}$ reports that almost 5000 data breaches have occurred since 2005, exposing over 600 million records of data. The financial cost of these data breaches is skyrocketing. Studies from the Ponemon Institute$^{2}$ revealed that the average cost of a data breach increased in 2013 by 15% globally and resulted in a brand equity loss of $9.4 million per attack. The average cost that is incurred for each lost record containing sensitive information increased more than 9% to $145 per record.", "text": "Recent news headlines are filled with reports of data breaches and cyber-attacks impacting global businesses of all sizes. The Identity Theft Resource Center$^{1}$ reports that almost 5000 data breaches have occurred since 2005, exposing over 600 million records of data. The financial cost of these data breaches is skyrocketing. Studies from the Ponemon Institute$^{2}$ revealed that the average cost of a data breach increased in 2013 by 15% globally and resulted in a brand equity loss of $9.4 million per attack. The average cost that is incurred for each lost record containing sensitive information increased more than 9% to $145 per record."}, {"self_ref": "#/texts/49", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 5, "bbox": {"l": 136.05917358398438, "t": 349.8846435546875, "r": 527.206298828125, "b": 303.55853271484375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 304]}], "orig": "Businesses must make a serious effort to secure their data and recognize that securing information assets is a cost of doing business. In many parts of the world and in many industries, securing the data is required by law and subject to audits. Data security is no longer an option; it is a requirement.", "text": "Businesses must make a serious effort to secure their data and recognize that securing information assets is a cost of doing business. In many parts of the world and in many industries, securing the data is required by law and subject to audits. Data security is no longer an option; it is a requirement."}, {"self_ref": "#/texts/50", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 5, "bbox": {"l": 135.5961456298828, "t": 291.9596862792969, "r": 547.1551513671875, "b": 270.1002197265625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 122]}], "orig": "This chapter describes how you can secure and protect data in DB2 for i. The following topics are covered in this chapter:", "text": "This chapter describes how you can secure and protect data in DB2 for i. The following topics are covered in this chapter:"}, {"self_ref": "#/texts/51", "parent": {"cref": "#/groups/2"}, "children": [], "label": "list_item", "prov": [{"page_no": 5, "bbox": {"l": 135.86915588378906, "t": 263.29638671875, "r": 250.23167419433594, "b": 252.9566650390625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 37]}], "orig": "GLYPH Security fundamentals", "text": "GLYPH Security fundamentals", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/52", "parent": {"cref": "#/groups/2"}, "children": [], "label": "list_item", "prov": [{"page_no": 5, "bbox": {"l": 135.742431640625, "t": 251.2857666015625, "r": 282.98114013671875, "b": 240.626708984375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 47]}], "orig": "GLYPH Current state of IBM i security", "text": "GLYPH Current state of IBM i security", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/53", "parent": {"cref": "#/groups/2"}, "children": [], "label": "list_item", "prov": [{"page_no": 5, "bbox": {"l": 135.86570739746094, "t": 239.55108642578125, "r": 264.8818664550781, "b": 229.06103515625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 43]}], "orig": "GLYPH DB2 for i security controls", "text": "GLYPH DB2 for i security controls", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/54", "parent": {"cref": "#/body"}, "children": [], "label": "footnote", "prov": [{"page_no": 5, "bbox": {"l": 135.7418975830078, "t": 75.71832275390625, "r": 258.362548828125, "b": 66.45916748046875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 35]}], "orig": "$^{1 }$http://www.idtheftcenter.org", "text": "$^{1 }$http://www.idtheftcenter.org"}, {"self_ref": "#/texts/55", "parent": {"cref": "#/body"}, "children": [], "label": "footnote", "prov": [{"page_no": 5, "bbox": {"l": 136.19522094726562, "t": 66.703857421875, "r": 234.42526245117188, "b": 56.73187255859375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 31]}], "orig": "$^{2 }$http://www.ponemon.org /", "text": "$^{2 }$http://www.ponemon.org /"}, {"self_ref": "#/texts/56", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 5, "bbox": {"l": 63.68400573730469, "t": 37.3408203125, "r": 257.24334716796875, "b": 27.85699462890625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 48]}], "orig": "' Copyright IBM Corp. 2014. All rights reserved.", "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"self_ref": "#/texts/57", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 5, "bbox": {"l": 541.2396240234375, "t": 37.7130126953125, "r": 547.2176513671875, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 1]}], "orig": "1", "text": "1"}, {"self_ref": "#/texts/58", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 6, "bbox": {"l": 64.33735656738281, "t": 718.60302734375, "r": 267.40582275390625, "b": 702.3842163085938, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 25]}], "orig": "1.1 Security fundamentals", "text": "1.1 Security fundamentals", "level": 1}, {"self_ref": "#/texts/59", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 6, "bbox": {"l": 136.23556518554688, "t": 685.97265625, "r": 545.0048217773438, "b": 664.178466796875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 133]}], "orig": "Before reviewing database security techniques, there are two fundamental steps in securing information assets that must be described:", "text": "Before reviewing database security techniques, there are two fundamental steps in securing information assets that must be described:"}, {"self_ref": "#/texts/60", "parent": {"cref": "#/groups/3"}, "children": [], "label": "list_item", "prov": [{"page_no": 6, "bbox": {"l": 135.66490173339844, "t": 657.3309326171875, "r": 547.1642456054688, "b": 610.8453369140625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 361]}], "orig": "GLYPH First, and most important, is the definition of a company's security policy . Without a security policy, there is no definition of what are acceptable practices for using, accessing, and storing information by who, what, when, where, and how. A security policy should minimally address three things: confidentiality, integrity, and availability.", "text": "GLYPH First, and most important, is the definition of a company's security policy . Without a security policy, there is no definition of what are acceptable practices for using, accessing, and storing information by who, what, when, where, and how. A security policy should minimally address three things: confidentiality, integrity, and availability.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/61", "parent": {"cref": "#/groups/3"}, "children": [], "label": "list_item", "prov": [{"page_no": 6, "bbox": {"l": 150.2132110595703, "t": 604.0206298828125, "r": 547.2608642578125, "b": 521.4625244140625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 587]}], "orig": "The monitoring and assessment of adherence to the security policy determines whether your security strategy is working. Often, IBM security consultants are asked to perform security assessments for companies without regard to the security policy. Although these assessments can be useful for observing how the system is defined and how data is being accessed, they cannot determine the level of security without a security policy. Without a security policy, it really is not an assessment as much as it is a baseline for monitoring the changes in the security settings that are captured.", "text": "The monitoring and assessment of adherence to the security policy determines whether your security strategy is working. Often, IBM security consultants are asked to perform security assessments for companies without regard to the security policy. Although these assessments can be useful for observing how the system is defined and how data is being accessed, they cannot determine the level of security without a security policy. Without a security policy, it really is not an assessment as much as it is a baseline for monitoring the changes in the security settings that are captured.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/62", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 6, "bbox": {"l": 150.1995086669922, "t": 515.2373657226562, "r": 541.9920043945312, "b": 504.9290466308594, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 90]}], "orig": "A security policy is what defines whether the system and its settings are secure (or not).", "text": "A security policy is what defines whether the system and its settings are secure (or not)."}, {"self_ref": "#/texts/63", "parent": {"cref": "#/groups/4"}, "children": [], "label": "list_item", "prov": [{"page_no": 6, "bbox": {"l": 135.4777374267578, "t": 498.18560791015625, "r": 547.1582641601562, "b": 415.4546203613281, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 573]}], "orig": "GLYPH The second fundamental in securing data assets is the use of resource security . If implemented properly, resource security prevents data breaches from both internal and external intrusions. Resource security controls are closely tied to the part of the security policy that defines who should have access to what information resources. A hacker might be good enough to get through your company firewalls and sift his way through to your system, but if they do not have explicit access to your database, the hacker cannot compromise your information assets.", "text": "GLYPH The second fundamental in securing data assets is the use of resource security . If implemented properly, resource security prevents data breaches from both internal and external intrusions. Resource security controls are closely tied to the part of the security policy that defines who should have access to what information resources. A hacker might be good enough to get through your company firewalls and sift his way through to your system, but if they do not have explicit access to your database, the hacker cannot compromise your information assets.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/64", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 6, "bbox": {"l": 135.90879821777344, "t": 403.87713623046875, "r": 535.3616943359375, "b": 381.6918640136719, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 179]}], "orig": "With your eyes now open to the importance of securing information assets, the rest of this chapter reviews the methods that are available for securing database resources on IBM i.", "text": "With your eyes now open to the importance of securing information assets, the rest of this chapter reviews the methods that are available for securing database resources on IBM i."}, {"self_ref": "#/texts/65", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 6, "bbox": {"l": 64.44733428955078, "t": 354.5881042480469, "r": 323.3839111328125, "b": 338.3087158203125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 35]}], "orig": "1.2 Current state of IBM i security", "text": "1.2 Current state of IBM i security", "level": 1}, {"self_ref": "#/texts/66", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 6, "bbox": {"l": 136.1368408203125, "t": 322.23028564453125, "r": 547.3182373046875, "b": 275.52197265625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 306]}], "orig": "Because of the inherently secure nature of IBM i, many clients rely on the default system settings to protect their business data that is stored in DB2 for i. In most cases, this means no data protection because the default setting for the Create default public authority (QCRTAUT) system value is *CHANGE.", "text": "Because of the inherently secure nature of IBM i, many clients rely on the default system settings to protect their business data that is stored in DB2 for i. In most cases, this means no data protection because the default setting for the Create default public authority (QCRTAUT) system value is *CHANGE."}, {"self_ref": "#/texts/67", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 6, "bbox": {"l": 135.79974365234375, "t": 264.12274169921875, "r": 547.284423828125, "b": 206.1400604248047, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 405]}], "orig": "Even more disturbing is that many IBM i clients remain in this state, despite the news headlines and the significant costs that are involved with databases being compromised. This default security configuration makes it quite challenging to implement basic security policies. A tighter implementation is required if you really want to protect one of your company's most valuable assets, which is the data.", "text": "Even more disturbing is that many IBM i clients remain in this state, despite the news headlines and the significant costs that are involved with databases being compromised. This default security configuration makes it quite challenging to implement basic security policies. A tighter implementation is required if you really want to protect one of your company's most valuable assets, which is the data."}, {"self_ref": "#/texts/68", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 6, "bbox": {"l": 135.8997802734375, "t": 193.8753662109375, "r": 547.2832641601562, "b": 111.57879638671875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 640]}], "orig": "Traditionally, IBM i applications have employed menu-based security to counteract this default configuration that gives all users access to the data. The theory is that data is protected by the menu options controlling what database operations that the user can perform. This approach is ineffective, even if the user profile is restricted from running interactive commands. The reason is that in today's connected world there are a multitude of interfaces into the system, from web browsers to PC clients, that bypass application menus. If there are no object-level controls, users of these newer interfaces have an open door to your data.", "text": "Traditionally, IBM i applications have employed menu-based security to counteract this default configuration that gives all users access to the data. The theory is that data is protected by the menu options controlling what database operations that the user can perform. This approach is ineffective, even if the user profile is restricted from running interactive commands. The reason is that in today's connected world there are a multitude of interfaces into the system, from web browsers to PC clients, that bypass application menus. If there are no object-level controls, users of these newer interfaces have an open door to your data."}, {"self_ref": "#/texts/69", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 6, "bbox": {"l": 63.92394256591797, "t": 37.713134765625, "r": 72.8219985961914, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 1]}], "orig": "2", "text": "2"}, {"self_ref": "#/texts/70", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 6, "bbox": {"l": 87.81553649902344, "t": 37.31463623046875, "r": 328.7253723144531, "b": 28.03179931640625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/71", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 7, "bbox": {"l": 64.09014129638672, "t": 37.92034912109375, "r": 72.8219985961914, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 1]}], "orig": "4", "text": "4"}, {"self_ref": "#/texts/72", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 7, "bbox": {"l": 87.84030151367188, "t": 37.3697509765625, "r": 328.7253723144531, "b": 28.01824951171875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/73", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 7, "bbox": {"l": 135.9996337890625, "t": 721.3639526367188, "r": 544.3033447265625, "b": 638.906982421875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 589]}], "orig": "Many businesses are trying to limit data access to a need-to-know basis. This security goal means that users should be given access only to the minimum set of data that is required to perform their job. Often, users with object-level access are given access to row and column values that are beyond what their business task requires because that object-level security provides an all-or-nothing solution. For example, object-level controls allow a manager to access data about all employees. Most security policies limit a manager to accessing data only for the employees that they manage.", "text": "Many businesses are trying to limit data access to a need-to-know basis. This security goal means that users should be given access only to the minimum set of data that is required to perform their job. Often, users with object-level access are given access to row and column values that are beyond what their business task requires because that object-level security provides an all-or-nothing solution. For example, object-level controls allow a manager to access data about all employees. Most security policies limit a manager to accessing data only for the employees that they manage."}, {"self_ref": "#/texts/74", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 7, "bbox": {"l": 64.4480209350586, "t": 619.7714233398438, "r": 301.4690246582031, "b": 606.2725830078125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 37]}], "orig": "1.3.1 Existing row and column control", "text": "1.3.1 Existing row and column control", "level": 1}, {"self_ref": "#/texts/75", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 7, "bbox": {"l": 135.77957153320312, "t": 593.479248046875, "r": 541.5673828125, "b": 534.8919677734375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 377]}], "orig": "Some IBM i clients have tried augmenting the all-or-nothing object-level security with SQL views (or logical files) and application logic, as shown in Figure 1-2. However, application-based logic is easy to bypass with all of the different data access interfaces that are provided by the IBM i operating system, such as Open Database Connectivity (ODBC) and System i Navigator.", "text": "Some IBM i clients have tried augmenting the all-or-nothing object-level security with SQL views (or logical files) and application logic, as shown in Figure 1-2. However, application-based logic is easy to bypass with all of the different data access interfaces that are provided by the IBM i operating system, such as Open Database Connectivity (ODBC) and System i Navigator."}, {"self_ref": "#/texts/76", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 7, "bbox": {"l": 135.9119110107422, "t": 523.368896484375, "r": 547.4407958984375, "b": 477.10101318359375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 340]}], "orig": "Using SQL views to limit access to a subset of the data in a table also has its own set of challenges. First, there is the complexity of managing all of the SQL view objects that are used for securing data access. Second, scaling a view-based security solution can be difficult as the amount of data grows and the number of users increases.", "text": "Using SQL views to limit access to a subset of the data in a table also has its own set of challenges. First, there is the complexity of managing all of the SQL view objects that are used for securing data access. Second, scaling a view-based security solution can be difficult as the amount of data grows and the number of users increases."}, {"self_ref": "#/texts/77", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 7, "bbox": {"l": 136.0379638671875, "t": 465.39056396484375, "r": 547.232666015625, "b": 430.80120849609375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 247]}], "orig": "Even if you are willing to live with these performance and management issues, a user with *ALLOBJ access still can directly access all of the data in the underlying DB2 table and easily bypass the security controls that are built into an SQL view.", "text": "Even if you are willing to live with these performance and management issues, a user with *ALLOBJ access still can directly access all of the data in the underlying DB2 table and easily bypass the security controls that are built into an SQL view."}, {"self_ref": "#/texts/78", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 7, "bbox": {"l": 136.23910522460938, "t": 101.11260986328125, "r": 317.073486328125, "b": 91.83807373046875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 43]}], "orig": "Figure 1-2 Existing row and column controls", "text": "Figure 1-2 Existing row and column controls"}, {"self_ref": "#/texts/79", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 8, "bbox": {"l": 64.09011840820312, "t": 721.8206787109375, "r": 335.4955139160156, "b": 708.0057373046875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 38]}], "orig": "2.1.6 Change Function Usage CL command", "text": "2.1.6 Change Function Usage CL command", "level": 1}, {"self_ref": "#/texts/80", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 8, "bbox": {"l": 135.83584594726562, "t": 695.3712768554688, "r": 547.284423828125, "b": 684.7753295898438, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 90]}], "orig": "The following CL commands can be used to work with, display, or change function usage IDs:", "text": "The following CL commands can be used to work with, display, or change function usage IDs:"}, {"self_ref": "#/texts/81", "parent": {"cref": "#/groups/5"}, "children": [], "label": "list_item", "prov": [{"page_no": 8, "bbox": {"l": 135.6907196044922, "t": 678.259765625, "r": 301.5174865722656, "b": 667.4461669921875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 49]}], "orig": "GLYPH Work Function Usage ( WRKFCNUSG )", "text": "GLYPH Work Function Usage ( WRKFCNUSG )", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/82", "parent": {"cref": "#/groups/5"}, "children": [], "label": "list_item", "prov": [{"page_no": 8, "bbox": {"l": 135.7242889404297, "t": 666.0692138671875, "r": 313.39776611328125, "b": 655.3120727539062, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 51]}], "orig": "GLYPH Change Function Usage ( CHGFCNUSG )", "text": "GLYPH Change Function Usage ( CHGFCNUSG )", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/83", "parent": {"cref": "#/groups/5"}, "children": [], "label": "list_item", "prov": [{"page_no": 8, "bbox": {"l": 135.71124267578125, "t": 654.0370483398438, "r": 310.8171081542969, "b": 643.400390625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 52]}], "orig": "GLYPH Display Function Usage ( DSPFCNUSG )", "text": "GLYPH Display Function Usage ( DSPFCNUSG )", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/84", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 8, "bbox": {"l": 136.30247497558594, "t": 632.781494140625, "r": 512.5380249023438, "b": 610.2994995117188, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 126]}], "orig": "For example, the following CHGFCNUSG command shows granting authorization to user HBEDOYA to administer and manage RCAC rules:", "text": "For example, the following CHGFCNUSG command shows granting authorization to user HBEDOYA to administer and manage RCAC rules:"}, {"self_ref": "#/texts/85", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 8, "bbox": {"l": 136.3306427001953, "t": 604.0092163085938, "r": 441.59686279296875, "b": 593.1199951171875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 61]}], "orig": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED)", "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED)"}, {"self_ref": "#/texts/86", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 8, "bbox": {"l": 63.9356689453125, "t": 573.8617553710938, "r": 544.4754638671875, "b": 559.875732421875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 72]}], "orig": "2.1.7 Verifying function usage IDs for RCAC with the FUNCTION_USAGE view", "text": "2.1.7 Verifying function usage IDs for RCAC with the FUNCTION_USAGE view", "level": 1}, {"self_ref": "#/texts/87", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 8, "bbox": {"l": 135.84828186035156, "t": 547.4229736328125, "r": 519.5179443359375, "b": 525.2785034179688, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 130]}], "orig": "The FUNCTION_USAGE view contains function usage configuration details. Table 2-1 describes the columns in the FUNCTION_USAGE view.", "text": "The FUNCTION_USAGE view contains function usage configuration details. Table 2-1 describes the columns in the FUNCTION_USAGE view."}, {"self_ref": "#/texts/88", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 8, "bbox": {"l": 136.8000030517578, "t": 513.490478515625, "r": 284.9328308105469, "b": 504.11700439453125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 29]}], "orig": "Table 2-1 FUNCTION_USAGE view", "text": "Table 2-1 FUNCTION_USAGE view"}, {"self_ref": "#/texts/89", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 8, "bbox": {"l": 135.81077575683594, "t": 340.671142578125, "r": 547.2803955078125, "b": 318.2784729003906, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 112]}], "orig": "To discover who has authorization to define and manage RCAC, you can use the query that is shown in Example 2-1.", "text": "To discover who has authorization to define and manage RCAC, you can use the query that is shown in Example 2-1."}, {"self_ref": "#/texts/90", "parent": {"cref": "#/body"}, "children": [], "label": "paragraph", "prov": [{"page_no": 8, "bbox": {"l": 136.28225708007812, "t": 306.23565673828125, "r": 462.98095703125, "b": 296.11798095703125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 74]}], "orig": "Example 2-1 Query to determine who has authority to define and manage RCAC", "text": "Example 2-1 Query to determine who has authority to define and manage RCAC"}, {"self_ref": "#/texts/91", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 8, "bbox": {"l": 136.8000030517578, "t": 288.34197998046875, "r": 331.67730712890625, "b": 207.56837463378906, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 122]}], "orig": "SELECT function_id, user_name, usage, user_type FROM function_usage WHERE function_id='QIBM_DB_SECADM' ORDER BY user_name;", "text": "SELECT function_id, user_name, usage, user_type FROM function_usage WHERE function_id='QIBM_DB_SECADM' ORDER BY user_name;"}, {"self_ref": "#/texts/92", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 8, "bbox": {"l": 64.18024444580078, "t": 172.6075439453125, "r": 249.59605407714844, "b": 156.3486328125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 24]}], "orig": "2.2 Separation of duties", "text": "2.2 Separation of duties", "level": 1}, {"self_ref": "#/texts/93", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 8, "bbox": {"l": 136.1588592529297, "t": 140.1129150390625, "r": 547.2234497070312, "b": 81.817626953125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 463]}], "orig": "Separation of duties helps businesses comply with industry regulations or organizational requirements and simplifies the management of authorities. Separation of duties is commonly used to prevent fraudulent activities or errors by a single person. It provides the ability for administrative functions to be divided across individuals without overlapping responsibilities, so that one user does not possess unlimited authority, such as with the *ALLOBJ authority.", "text": "Separation of duties helps businesses comply with industry regulations or organizational requirements and simplifies the management of authorities. Separation of duties is commonly used to prevent fraudulent activities or errors by a single person. It provides the ability for administrative functions to be divided across individuals without overlapping responsibilities, so that one user does not possess unlimited authority, such as with the *ALLOBJ authority."}, {"self_ref": "#/texts/94", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 8, "bbox": {"l": 64.4488525390625, "t": 37.581298828125, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "10", "text": "10"}, {"self_ref": "#/texts/95", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 8, "bbox": {"l": 93.35774993896484, "t": 37.31072998046875, "r": 334.4214172363281, "b": 28.04144287109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/96", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 9, "bbox": {"l": 135.92747497558594, "t": 721.3446044921875, "r": 542.6943359375, "b": 650.9638671875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 516]}], "orig": "For example, assume that a business has assigned the duty to manage security on IBM i to Theresa. Before release IBM i 7.2, to grant privileges, Theresa had to have the same privileges Theresa was granting to others. Therefore, to grant *USE privileges to the PAYROLL table, Theresa had to have *OBJMGT and *USE authority (or a higher level of authority, such as *ALLOBJ). This requirement allowed Theresa to access the data in the PAYROLL table even though Theresa's job description was only to manage its security.", "text": "For example, assume that a business has assigned the duty to manage security on IBM i to Theresa. Before release IBM i 7.2, to grant privileges, Theresa had to have the same privileges Theresa was granting to others. Therefore, to grant *USE privileges to the PAYROLL table, Theresa had to have *OBJMGT and *USE authority (or a higher level of authority, such as *ALLOBJ). This requirement allowed Theresa to access the data in the PAYROLL table even though Theresa's job description was only to manage its security."}, {"self_ref": "#/texts/97", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 9, "bbox": {"l": 136.04833984375, "t": 639.4869384765625, "r": 547.303955078125, "b": 593.2598266601562, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 285]}], "orig": "In IBM i 7.2, the QIBM_DB_SECADM function usage grants authorities, revokes authorities, changes ownership, or changes the primary group without giving access to the object or, in the case of a database table, to the data that is in the table or allowing other operations on the table.", "text": "In IBM i 7.2, the QIBM_DB_SECADM function usage grants authorities, revokes authorities, changes ownership, or changes the primary group without giving access to the object or, in the case of a database table, to the data that is in the table or allowing other operations on the table."}, {"self_ref": "#/texts/98", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 9, "bbox": {"l": 136.00685119628906, "t": 581.5885009765625, "r": 538.6507568359375, "b": 558.9195556640625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 129]}], "orig": "QIBM_DB_SECADM function usage can be granted only by a user with *SECADM special authority and can be given to a user or a group.", "text": "QIBM_DB_SECADM function usage can be granted only by a user with *SECADM special authority and can be given to a user or a group."}, {"self_ref": "#/texts/99", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 9, "bbox": {"l": 135.68702697753906, "t": 547.4618530273438, "r": 545.7960205078125, "b": 513.281005859375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 204]}], "orig": "QIBM_DB_SECADM also is responsible for administering RCAC, which restricts which rows a user is allowed to access in a table and whether a user is allowed to see information in certain columns of a table.", "text": "QIBM_DB_SECADM also is responsible for administering RCAC, which restricts which rows a user is allowed to access in a table and whether a user is allowed to see information in certain columns of a table."}, {"self_ref": "#/texts/100", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 9, "bbox": {"l": 135.86065673828125, "t": 501.3948669433594, "r": 539.80712890625, "b": 455.2619934082031, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 285]}], "orig": "A preferred practice is that the RCAC administrator has the QIBM_DB_SECADM function usage ID, but absolutely no other data privileges. The result is that the RCAC administrator can deploy and maintain the RCAC constructs, but cannot grant themselves unauthorized access to data itself.", "text": "A preferred practice is that the RCAC administrator has the QIBM_DB_SECADM function usage ID, but absolutely no other data privileges. The result is that the RCAC administrator can deploy and maintain the RCAC constructs, but cannot grant themselves unauthorized access to data itself."}, {"self_ref": "#/texts/101", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 9, "bbox": {"l": 135.7205352783203, "t": 443.39068603515625, "r": 543.067138671875, "b": 421.3023681640625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 136]}], "orig": "Table 2-2 shows a comparison of the different function usage IDs and *JOBCTL authority to the different CL commands and DB2 for i tools.", "text": "Table 2-2 shows a comparison of the different function usage IDs and *JOBCTL authority to the different CL commands and DB2 for i tools."}, {"self_ref": "#/texts/102", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 9, "bbox": {"l": 64.80000305175781, "t": 409.4712829589844, "r": 392.4624328613281, "b": 399.74505615234375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 78]}], "orig": "Table 2-2 Comparison of the different function usage IDs and *JOBCTL authority", "text": "Table 2-2 Comparison of the different function usage IDs and *JOBCTL authority"}, {"self_ref": "#/texts/103", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 9, "bbox": {"l": 354.4815673828125, "t": 37.05841064453125, "r": 523.5407104492188, "b": 27.89447021484375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 41]}], "orig": "Chapter 2. Roles and separation of duties", "text": "Chapter 2. Roles and separation of duties"}, {"self_ref": "#/texts/104", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 9, "bbox": {"l": 536.0808715820312, "t": 37.7674560546875, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "11", "text": "11"}, {"self_ref": "#/texts/105", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 10, "bbox": {"l": 135.73501586914062, "t": 721.5136108398438, "r": 528.7305908203125, "b": 699.0009765625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 135]}], "orig": "The SQL CREATE PERMISSION statement that is shown in Figure 3-1 is used to define and initially enable or disable the row access rules.", "text": "The SQL CREATE PERMISSION statement that is shown in Figure 3-1 is used to define and initially enable or disable the row access rules."}, {"self_ref": "#/texts/106", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 10, "bbox": {"l": 136.3166961669922, "t": 378.73248291015625, "r": 342.55548095703125, "b": 369.1156921386719, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 42]}], "orig": "Figure 3-1 CREATE PERMISSION SQL statement", "text": "Figure 3-1 CREATE PERMISSION SQL statement"}, {"self_ref": "#/texts/107", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 10, "bbox": {"l": 136.24984741210938, "t": 353.2656555175781, "r": 215.88082885742188, "b": 340.95599365234375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 11]}], "orig": "Column mask", "text": "Column mask", "level": 1}, {"self_ref": "#/texts/108", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 10, "bbox": {"l": 135.803466796875, "t": 338.0789489746094, "r": 542.7664794921875, "b": 291.6988525390625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 297]}], "orig": "A column mask is a database object that manifests a column value access control rule for a specific column in a specific table. It uses a CASE expression that describes what you see when you access the column. For example, a teller can see only the last four digits of a tax identification number.", "text": "A column mask is a database object that manifests a column value access control rule for a specific column in a specific table. It uses a CASE expression that describes what you see when you access the column. For example, a teller can see only the last four digits of a tax identification number."}, {"self_ref": "#/texts/109", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 10, "bbox": {"l": 344.5666809082031, "t": 37.281982421875, "r": 523.6016235351562, "b": 27.9176025390625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 40]}], "orig": "Chapter 3. Row and Column Access Control", "text": "Chapter 3. Row and Column Access Control"}, {"self_ref": "#/texts/110", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 10, "bbox": {"l": 536.0999755859375, "t": 37.689697265625, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "15", "text": "15"}, {"self_ref": "#/texts/111", "parent": {"cref": "#/body"}, "children": [], "label": "paragraph", "prov": [{"page_no": 11, "bbox": {"l": 135.82176208496094, "t": 721.317138671875, "r": 412.20758056640625, "b": 711.1845703125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 62]}], "orig": "Table 3-1 summarizes these special registers and their values.", "text": "Table 3-1 summarizes these special registers and their values."}, {"self_ref": "#/texts/112", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 11, "bbox": {"l": 136.8000030517578, "t": 699.2779541015625, "r": 372.7710876464844, "b": 690.0601806640625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 58]}], "orig": "Table 3-1 Special registers and their corresponding values", "text": "Table 3-1 Special registers and their corresponding values"}, {"self_ref": "#/texts/113", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 11, "bbox": {"l": 136.3730926513672, "t": 578.6343383789062, "r": 538.493896484375, "b": 556.2984619140625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 97]}], "orig": "Figure 3-5 shows the difference in the special register values when an adopted authority is used:", "text": "Figure 3-5 shows the difference in the special register values when an adopted authority is used:"}, {"self_ref": "#/texts/114", "parent": {"cref": "#/groups/6"}, "children": [], "label": "list_item", "prov": [{"page_no": 11, "bbox": {"l": 135.5663299560547, "t": 549.454345703125, "r": 411.36138916015625, "b": 539.2213134765625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 75]}], "orig": "GLYPH A user connects to the server using the user profile ALICE.", "text": "GLYPH A user connects to the server using the user profile ALICE.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/115", "parent": {"cref": "#/groups/6"}, "children": [], "label": "list_item", "prov": [{"page_no": 11, "bbox": {"l": 135.5452880859375, "t": 532.7073974609375, "r": 453.2580871582031, "b": 522.2791137695312, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 77]}], "orig": "GLYPH USER and CURRENT USER initially have the same value of ALICE.", "text": "GLYPH USER and CURRENT USER initially have the same value of ALICE.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/116", "parent": {"cref": "#/groups/6"}, "children": [], "label": "list_item", "prov": [{"page_no": 11, "bbox": {"l": 135.3970947265625, "t": 515.4821166992188, "r": 541.4498291015625, "b": 493.01019287109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 160]}], "orig": "GLYPH ALICE calls an SQL procedure that is named proc1, which is owned by user profile JOE and was created to adopt JOE's authority when it is called.", "text": "GLYPH ALICE calls an SQL procedure that is named proc1, which is owned by user profile JOE and was created to adopt JOE's authority when it is called.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/117", "parent": {"cref": "#/groups/6"}, "children": [], "label": "list_item", "prov": [{"page_no": 11, "bbox": {"l": 135.5677947998047, "t": 486.18145751953125, "r": 547.2167358398438, "b": 451.4921875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 253]}], "orig": "GLYPH While the procedure is running, the special register USER still contains the value of ALICE because it excludes any adopted authority. The special register CURRENT USER contains the value of JOE because it includes any adopted authority.", "text": "GLYPH While the procedure is running, the special register USER still contains the value of ALICE because it excludes any adopted authority. The special register CURRENT USER contains the value of JOE because it includes any adopted authority.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/118", "parent": {"cref": "#/groups/6"}, "children": [], "label": "list_item", "prov": [{"page_no": 11, "bbox": {"l": 135.56973266601562, "t": 445.5053405761719, "r": 547.3540649414062, "b": 423.0643615722656, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 133]}], "orig": "GLYPH When proc1 ends, the session reverts to its original state with both USER and CURRENT USER having the value of ALICE.", "text": "GLYPH When proc1 ends, the session reverts to its original state with both USER and CURRENT USER having the value of ALICE.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/119", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 11, "bbox": {"l": 136.22442626953125, "t": 195.81939697265625, "r": 342.349853515625, "b": 186.25537109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 50]}], "orig": "Figure 3-5 Special registers and adopted authority", "text": "Figure 3-5 Special registers and adopted authority"}, {"self_ref": "#/texts/120", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 11, "bbox": {"l": 64.079833984375, "t": 167.67864990234375, "r": 247.02536010742188, "b": 154.15521240234375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 31]}], "orig": "3.2.2 Built-in global variables", "text": "3.2.2 Built-in global variables", "level": 1}, {"self_ref": "#/texts/121", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 11, "bbox": {"l": 136.3346710205078, "t": 141.24090576171875, "r": 518.0011596679688, "b": 119.0784683227539, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 161]}], "orig": "Built-in global variables are provided with the database manager and are used in SQL statements to retrieve scalar values that are associated with the variables.", "text": "Built-in global variables are provided with the database manager and are used in SQL statements to retrieve scalar values that are associated with the variables."}, {"self_ref": "#/texts/122", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 11, "bbox": {"l": 136.17970275878906, "t": 107.37139892578125, "r": 532.3385009765625, "b": 72.93243408203125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 233]}], "orig": "IBM DB2 for i supports nine different built-in global variables that are read only and maintained by the system. These global variables can be used to identify attributes of the database connection and used as part of the RCAC logic.", "text": "IBM DB2 for i supports nine different built-in global variables that are read only and maintained by the system. These global variables can be used to identify attributes of the database connection and used as part of the RCAC logic."}, {"self_ref": "#/texts/123", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 11, "bbox": {"l": 344.5751037597656, "t": 37.29559326171875, "r": 523.6016235351562, "b": 27.93109130859375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 40]}], "orig": "Chapter 3. Row and Column Access Control", "text": "Chapter 3. Row and Column Access Control"}, {"self_ref": "#/texts/124", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 11, "bbox": {"l": 536.0416870117188, "t": 37.7122802734375, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "19", "text": "19"}, {"self_ref": "#/texts/125", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 12, "bbox": {"l": 63.85088348388672, "t": 37.62542724609375, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "20", "text": "20"}, {"self_ref": "#/texts/126", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 12, "bbox": {"l": 93.31550598144531, "t": 37.3028564453125, "r": 334.4214172363281, "b": 28.02935791015625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/127", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 12, "bbox": {"l": 135.74647521972656, "t": 721.3251953125, "r": 342.5477294921875, "b": 711.1533813476562, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 51]}], "orig": "Table 3-2 lists the nine built-in global variables.", "text": "Table 3-2 lists the nine built-in global variables."}, {"self_ref": "#/texts/128", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 12, "bbox": {"l": 64.80000305175781, "t": 699.1653442382812, "r": 201.82247924804688, "b": 690.177001953125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 35]}], "orig": "Table 3-2 Built-in global variables", "text": "Table 3-2 Built-in global variables"}, {"self_ref": "#/texts/129", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 12, "bbox": {"l": 64.34713745117188, "t": 471.380859375, "r": 384.3638916015625, "b": 455.0362854003906, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 34]}], "orig": "3.3 VERIFY_GROUP_FOR_USER function", "text": "3.3 VERIFY_GROUP_FOR_USER function", "level": 1}, {"self_ref": "#/texts/130", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 12, "bbox": {"l": 135.8567352294922, "t": 438.1376037597656, "r": 547.2347412109375, "b": 355.704833984375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 576]}], "orig": "The VERIFY_GROUP_FOR_USER function was added in IBM i 7.2. Although it is primarily intended for use with RCAC permissions and masks, it can be used in other SQL statements. The first parameter must be one of these three special registers: SESSION_USER, USER, or CURRENT_USER. The second and subsequent parameters are a list of user or group profiles. Each of these values must be 1 - 10 characters in length. These values are not validated for their existence, which means that you can specify the names of user profiles that do not exist without receiving any kind of error.", "text": "The VERIFY_GROUP_FOR_USER function was added in IBM i 7.2. Although it is primarily intended for use with RCAC permissions and masks, it can be used in other SQL statements. The first parameter must be one of these three special registers: SESSION_USER, USER, or CURRENT_USER. The second and subsequent parameters are a list of user or group profiles. Each of these values must be 1 - 10 characters in length. These values are not validated for their existence, which means that you can specify the names of user profiles that do not exist without receiving any kind of error."}, {"self_ref": "#/texts/131", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 12, "bbox": {"l": 136.01950073242188, "t": 344.5970458984375, "r": 547.2573852539062, "b": 310.2999572753906, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 235]}], "orig": "If a special register value is in the list of user profiles or it is a member of a group profile included in the list, the function returns a long integer value of 1. Otherwise, it returns a value of 0. It never returns the null value.", "text": "If a special register value is in the list of user profiles or it is a member of a group profile included in the list, the function returns a long integer value of 1. Otherwise, it returns a value of 0. It never returns the null value."}, {"self_ref": "#/texts/132", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 12, "bbox": {"l": 136.42428588867188, "t": 298.8746337890625, "r": 458.44525146484375, "b": 288.2803955078125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 63]}], "orig": "Here is an example of using the VERIFY_GROUP_FOR_USER function:", "text": "Here is an example of using the VERIFY_GROUP_FOR_USER function:"}, {"self_ref": "#/texts/133", "parent": {"cref": "#/groups/7"}, "children": [], "label": "list_item", "prov": [{"page_no": 12, "bbox": {"l": 136.80001831054688, "t": 281.4947204589844, "r": 406.0775146484375, "b": 271.2408142089844, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 57]}], "orig": "1. There are user profiles for MGR, JANE, JUDY, and TONY.", "text": "1. There are user profiles for MGR, JANE, JUDY, and TONY.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/134", "parent": {"cref": "#/groups/7"}, "children": [], "label": "list_item", "prov": [{"page_no": 12, "bbox": {"l": 135.8521728515625, "t": 264.1617431640625, "r": 396.9881591796875, "b": 253.80572509765625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 58]}], "orig": "2. The user profile JANE specifies a group profile of MGR.", "text": "2. The user profile JANE specifies a group profile of MGR.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/135", "parent": {"cref": "#/groups/7"}, "children": [], "label": "list_item", "prov": [{"page_no": 12, "bbox": {"l": 136.08595275878906, "t": 247.357666015625, "r": 536.568603515625, "b": 225.28138732910156, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 127]}], "orig": "3. If a user is connected to the server using user profile JANE, all of the following function invocations return a value of 1:", "text": "3. If a user is connected to the server using user profile JANE, all of the following function invocations return a value of 1:", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/136", "parent": {"cref": "#/body"}, "children": [], "label": "code", "prov": [{"page_no": 12, "bbox": {"l": 149.8811798095703, "t": 217.68408203125, "r": 451.01605224609375, "b": 150.09063720703125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 265]}], "orig": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'MGR') VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR') VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR', 'STEVE') The following function invocation returns a value of 0: VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JUDY', 'TONY')", "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'MGR') VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR') VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR', 'STEVE') The following function invocation returns a value of 0: VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JUDY', 'TONY')"}, {"self_ref": "#/texts/137", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 13, "bbox": {"l": 136.79959106445312, "t": 720.341552734375, "r": 166.73934936523438, "b": 699.5669555664062, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 11]}], "orig": "RETURN CASE", "text": "RETURN CASE"}, {"self_ref": "#/texts/138", "parent": {"cref": "#/body"}, "children": [], "label": "code", "prov": [{"page_no": 13, "bbox": {"l": 136.79959106445312, "t": 700.2308349609375, "r": 521.5742797851562, "b": 530.429443359375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 437]}], "orig": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR', 'EMP' ) = 1 THEN EMPLOYEES . DATE_OF_BIRTH WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER = EMPLOYEES . USER_ID THEN EMPLOYEES . DATE_OF_BIRTH WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER <> EMPLOYEES . USER_ID THEN ( 9999 || '-' || MONTH ( EMPLOYEES . DATE_OF_BIRTH ) || '-' || DAY (EMPLOYEES.DATE_OF_BIRTH )) ELSE NULL END ENABLE ;", "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR', 'EMP' ) = 1 THEN EMPLOYEES . DATE_OF_BIRTH WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER = EMPLOYEES . USER_ID THEN EMPLOYEES . DATE_OF_BIRTH WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER <> EMPLOYEES . USER_ID THEN ( 9999 || '-' || MONTH ( EMPLOYEES . DATE_OF_BIRTH ) || '-' || DAY (EMPLOYEES.DATE_OF_BIRTH )) ELSE NULL END ENABLE ;"}, {"self_ref": "#/texts/139", "parent": {"cref": "#/groups/8"}, "children": [], "label": "list_item", "prov": [{"page_no": 13, "bbox": {"l": 135.86044311523438, "t": 517.5462646484375, "r": 547.2122192382812, "b": 495.22808837890625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 136]}], "orig": "2. The other column to mask in this example is the TAX_ID information. In this example, the rules to enforce include the following ones:", "text": "2. The other column to mask in this example is the TAX_ID information. In this example, the rules to enforce include the following ones:", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/140", "parent": {"cref": "#/groups/8"}, "children": [], "label": "list_item", "prov": [{"page_no": 13, "bbox": {"l": 151.1599578857422, "t": 488.6722717285156, "r": 469.1528015136719, "b": 478.3014831542969, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 62]}], "orig": "-Human Resources can see the unmasked TAX_ID of the employees.", "text": "-Human Resources can see the unmasked TAX_ID of the employees.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/141", "parent": {"cref": "#/groups/8"}, "children": [], "label": "list_item", "prov": [{"page_no": 13, "bbox": {"l": 151.2740936279297, "t": 471.45074462890625, "r": 403.95953369140625, "b": 461.1424560546875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 50]}], "orig": "-Employees can see only their own unmasked TAX_ID.", "text": "-Employees can see only their own unmasked TAX_ID.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/142", "parent": {"cref": "#/groups/8"}, "children": [], "label": "list_item", "prov": [{"page_no": 13, "bbox": {"l": 151.4427947998047, "t": 454.6841735839844, "r": 545.16845703125, "b": 432.28228759765625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 129]}], "orig": "-Managers see a masked version of TAX_ID with the first five characters replaced with the X character (for example, XXX-XX-1234).", "text": "-Managers see a masked version of TAX_ID with the first five characters replaced with the X character (for example, XXX-XX-1234).", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/143", "parent": {"cref": "#/groups/8"}, "children": [], "label": "list_item", "prov": [{"page_no": 13, "bbox": {"l": 151.51747131347656, "t": 425.3660888671875, "r": 529.463623046875, "b": 414.8310852050781, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 77]}], "orig": "-Any other person sees the entire TAX_ID as masked, for example, XXX-XX-XXXX.", "text": "-Any other person sees the entire TAX_ID as masked, for example, XXX-XX-XXXX.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/144", "parent": {"cref": "#/groups/8"}, "children": [], "label": "list_item", "prov": [{"page_no": 13, "bbox": {"l": 150.69093322753906, "t": 408.19866943359375, "r": 530.060302734375, "b": 397.82440185546875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 82]}], "orig": "To implement this column mask, run the SQL statement that is shown in Example 3-9.", "text": "To implement this column mask, run the SQL statement that is shown in Example 3-9.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/145", "parent": {"cref": "#/body"}, "children": [], "label": "paragraph", "prov": [{"page_no": 13, "bbox": {"l": 136.25662231445312, "t": 386.553955078125, "r": 352.31475830078125, "b": 376.9618835449219, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 48]}], "orig": "Example 3-9 Creating a mask on the TAX_ID column", "text": "Example 3-9 Creating a mask on the TAX_ID column"}, {"self_ref": "#/texts/146", "parent": {"cref": "#/body"}, "children": [], "label": "code", "prov": [{"page_no": 13, "bbox": {"l": 135.95343017578125, "t": 373.4818115234375, "r": 535.87548828125, "b": 103.45672607421875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 590]}], "orig": "CREATE MASK HR_SCHEMA.MASK_TAX_ID_ON_EMPLOYEES ON HR_SCHEMA.EMPLOYEES AS EMPLOYEES FOR COLUMN TAX_ID RETURN CASE WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1 THEN EMPLOYEES . TAX_ID WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER = EMPLOYEES . USER_ID THEN EMPLOYEES . TAX_ID WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER <> EMPLOYEES . USER_ID THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( EMPLOYEES . TAX_ID , 8 , 4 ) ) WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1 THEN EMPLOYEES . TAX_ID ELSE 'XXX-XX-XXXX' END ENABLE ;", "text": "CREATE MASK HR_SCHEMA.MASK_TAX_ID_ON_EMPLOYEES ON HR_SCHEMA.EMPLOYEES AS EMPLOYEES FOR COLUMN TAX_ID RETURN CASE WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1 THEN EMPLOYEES . TAX_ID WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER = EMPLOYEES . USER_ID THEN EMPLOYEES . TAX_ID WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER <> EMPLOYEES . USER_ID THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( EMPLOYEES . TAX_ID , 8 , 4 ) ) WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1 THEN EMPLOYEES . TAX_ID ELSE 'XXX-XX-XXXX' END ENABLE ;"}, {"self_ref": "#/texts/147", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 13, "bbox": {"l": 344.5617370605469, "t": 37.32916259765625, "r": 523.6016235351562, "b": 27.86419677734375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 40]}], "orig": "Chapter 3. Row and Column Access Control", "text": "Chapter 3. Row and Column Access Control"}, {"self_ref": "#/texts/148", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 13, "bbox": {"l": 535.6422729492188, "t": 37.82464599609375, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "27", "text": "27"}, {"self_ref": "#/texts/149", "parent": {"cref": "#/groups/9"}, "children": [], "label": "list_item", "prov": [{"page_no": 14, "bbox": {"l": 136.14459228515625, "t": 721.3890380859375, "r": 449.952392578125, "b": 710.7732543945312, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 65]}], "orig": "3. Figure 3-10 shows the masks that are created in the HR_SCHEMA.", "text": "3. Figure 3-10 shows the masks that are created in the HR_SCHEMA.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/150", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 14, "bbox": {"l": 64.17350769042969, "t": 619.2543334960938, "r": 294.42578125, "b": 610.1016235351562, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 52]}], "orig": "Figure 3-10 Column masks shown in System i Navigator", "text": "Figure 3-10 Column masks shown in System i Navigator"}, {"self_ref": "#/texts/151", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 14, "bbox": {"l": 64.29059600830078, "t": 590.3381958007812, "r": 203.98521423339844, "b": 577.004638671875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 21]}], "orig": "3.6.6 Activating RCAC", "text": "3.6.6 Activating RCAC", "level": 1}, {"self_ref": "#/texts/152", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 14, "bbox": {"l": 136.1686553955078, "t": 563.902587890625, "r": 547.2256469726562, "b": 529.5360107421875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 265]}], "orig": "Now that you have created the row permission and the two column masks, RCAC must be activated. The row permission and the two column masks are enabled (last clause in the scripts), but now you must activate RCAC on the table. To do so, complete the following steps:", "text": "Now that you have created the row permission and the two column masks, RCAC must be activated. The row permission and the two column masks are enabled (last clause in the scripts), but now you must activate RCAC on the table. To do so, complete the following steps:"}, {"self_ref": "#/texts/153", "parent": {"cref": "#/groups/10"}, "children": [], "label": "list_item", "prov": [{"page_no": 14, "bbox": {"l": 136.5933074951172, "t": 523.4700317382812, "r": 409.4788818359375, "b": 513.1278076171875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 57]}], "orig": "1. Run the SQL statements that are shown in Example 3-10.", "text": "1. Run the SQL statements that are shown in Example 3-10.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/154", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 14, "bbox": {"l": 136.31597900390625, "t": 501.5721435546875, "r": 375.2909851074219, "b": 491.5029296875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 51]}], "orig": "Example 3-10 Activating RCAC on the EMPLOYEES table", "text": "Example 3-10 Activating RCAC on the EMPLOYEES table", "level": 1}, {"self_ref": "#/texts/155", "parent": {"cref": "#/groups/11"}, "children": [], "label": "list_item", "prov": [{"page_no": 14, "bbox": {"l": 135.7803192138672, "t": 484.90777587890625, "r": 376.6766052246094, "b": 473.9972839355469, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 45]}], "orig": "/* Active Row Access Control (permissions) */", "text": "/* Active Row Access Control (permissions) */", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/156", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 14, "bbox": {"l": 136.8000030517578, "t": 471.3420715332031, "r": 354.86962890625, "b": 426.5678405761719, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 131]}], "orig": "/* Active Column Access Control (masks) ALTER TABLE HR_SCHEMA.EMPLOYEES ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL;", "text": "/* Active Column Access Control (masks) ALTER TABLE HR_SCHEMA.EMPLOYEES ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL;"}, {"self_ref": "#/texts/157", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 14, "bbox": {"l": 365.77313232421875, "t": 471.3420715332031, "r": 376.6766052246094, "b": 462.5672912597656, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "*/", "text": "*/"}, {"self_ref": "#/texts/158", "parent": {"cref": "#/groups/12"}, "children": [], "label": "list_item", "prov": [{"page_no": 14, "bbox": {"l": 135.87640380859375, "t": 412.6735534667969, "r": 540.8014526367188, "b": 378.27978515625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 231]}], "orig": "2. Look at the definition of the EMPLOYEE table, as shown in Figure 3-11. To do this, from the main navigation pane of System i Navigator, click Schemas \uf0ae HR_SCHEMA \uf0ae Tables , right-click the EMPLOYEES table, and click Definition .", "text": "2. Look at the definition of the EMPLOYEE table, as shown in Figure 3-11. To do this, from the main navigation pane of System i Navigator, click Schemas \uf0ae HR_SCHEMA \uf0ae Tables , right-click the EMPLOYEES table, and click Definition .", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/159", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 14, "bbox": {"l": 64.33819580078125, "t": 143.758056640625, "r": 348.354736328125, "b": 134.59954833984375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 65]}], "orig": "Figure 3-11 Selecting the EMPLOYEES table from System i Navigator", "text": "Figure 3-11 Selecting the EMPLOYEES table from System i Navigator"}, {"self_ref": "#/texts/160", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 14, "bbox": {"l": 63.84088897705078, "t": 37.61041259765625, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "28", "text": "28"}, {"self_ref": "#/texts/161", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 14, "bbox": {"l": 93.28304290771484, "t": 37.27587890625, "r": 334.4214172363281, "b": 28.056396484375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/162", "parent": {"cref": "#/groups/13"}, "children": [], "label": "list_item", "prov": [{"page_no": 15, "bbox": {"l": 136.00341796875, "t": 721.5369873046875, "r": 514.048583984375, "b": 687.1716918945312, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 228]}], "orig": "2. Figure 4-68 shows the Visual Explain of the same SQL statement, but with RCAC enabled. It is clear that the implementation of the SQL statement is more complex because the row permission rule becomes part of the WHERE clause.", "text": "2. Figure 4-68 shows the Visual Explain of the same SQL statement, but with RCAC enabled. It is clear that the implementation of the SQL statement is more complex because the row permission rule becomes part of the WHERE clause.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/163", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 15, "bbox": {"l": 135.9990692138672, "t": 311.7919921875, "r": 327.9913635253906, "b": 302.78125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 44]}], "orig": "Figure 4-68 Visual Explain with RCAC enabled", "text": "Figure 4-68 Visual Explain with RCAC enabled"}, {"self_ref": "#/texts/164", "parent": {"cref": "#/groups/14"}, "children": [], "label": "list_item", "prov": [{"page_no": 15, "bbox": {"l": 136.2928924560547, "t": 286.0349426269531, "r": 547.2394409179688, "b": 251.98651123046875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 232]}], "orig": "3. Compare the advised indexes that are provided by the Optimizer without RCAC and with RCAC enabled. Figure 4-69 shows the index advice for the SQL statement without RCAC enabled. The index being advised is for the ORDER BY clause.", "text": "3. Compare the advised indexes that are provided by the Optimizer without RCAC and with RCAC enabled. Figure 4-69 shows the index advice for the SQL statement without RCAC enabled. The index being advised is for the ORDER BY clause.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/165", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 15, "bbox": {"l": 64.35660552978516, "t": 125.32025146484375, "r": 227.347412109375, "b": 116.0611572265625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 37]}], "orig": "Figure 4-69 Index advice with no RCAC", "text": "Figure 4-69 Index advice with no RCAC"}, {"self_ref": "#/texts/166", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 15, "bbox": {"l": 214.30316162109375, "t": 37.2801513671875, "r": 523.5935668945312, "b": 27.9913330078125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 70]}], "orig": "Chapter 4. Implementing Row and Column Access Control: Banking example", "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"self_ref": "#/texts/167", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 15, "bbox": {"l": 535.3654174804688, "t": 37.719970703125, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "77", "text": "77"}, {"self_ref": "#/texts/168", "parent": {"cref": "#/body"}, "children": [], "label": "code", "prov": [{"page_no": 16, "bbox": {"l": 62.60613250732422, "t": 722.6401977539062, "r": 500.697265625, "b": 84.2364501953125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 1998]}], "orig": "THEN C . CUSTOMER_TAX_ID WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( C . CUSTOMER_TAX_ID , 8 , 4 ) ) WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_TAX_ID ELSE 'XXX-XX-XXXX' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_DRIVERS_LICENSE_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_DRIVERS_LICENSE_NUMBER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ELSE '*************' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_LOGIN_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_LOGIN_ID RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_LOGIN_ID WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_LOGIN_ID ELSE '*****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_SECURITY_QUESTION RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION ELSE '*****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_SECURITY_QUESTION_ANSWER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ELSE '*****' END ENABLE ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL ;", "text": "THEN C . CUSTOMER_TAX_ID WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( C . CUSTOMER_TAX_ID , 8 , 4 ) ) WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_TAX_ID ELSE 'XXX-XX-XXXX' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_DRIVERS_LICENSE_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_DRIVERS_LICENSE_NUMBER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ELSE '*************' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_LOGIN_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_LOGIN_ID RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_LOGIN_ID WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_LOGIN_ID ELSE '*****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_SECURITY_QUESTION RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION ELSE '*****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_SECURITY_QUESTION_ANSWER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ELSE '*****' END ENABLE ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL ;"}, {"self_ref": "#/texts/169", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 16, "bbox": {"l": 64.50080871582031, "t": 37.46612548828125, "r": 83.98200225830078, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 3]}], "orig": "124", "text": "124"}, {"self_ref": "#/texts/170", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 16, "bbox": {"l": 98.63966369628906, "t": 37.28564453125, "r": 339.882080078125, "b": 27.98992919921875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"self_ref": "#/texts/171", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 18, "bbox": {"l": 287.2200012207031, "t": 763.4519653320312, "r": 414.24481201171875, "b": 741.251953125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 10]}], "orig": "Back cover", "text": "Back cover"}, {"self_ref": "#/texts/172", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 18, "bbox": {"l": 26.454715728759766, "t": 720.362060546875, "r": 447.3600158691406, "b": 650.9618530273438, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Row and Column Access Control Support in IBM DB2 for i", "text": "Row and Column Access Control Support in IBM DB2 for i", "level": 1}, {"self_ref": "#/texts/173", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 18, "bbox": {"l": 26.35322380065918, "t": 551.0213623046875, "r": 127.443603515625, "b": 524.7881469726562, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 40]}], "orig": "Implement roles and separation of duties", "text": "Implement roles and separation of duties"}, {"self_ref": "#/texts/174", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 18, "bbox": {"l": 26.22105598449707, "t": 508.2904052734375, "r": 120.283203125, "b": 469.1280212402344, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 40]}], "orig": "Leverage row permissions on the database", "text": "Leverage row permissions on the database"}, {"self_ref": "#/texts/175", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 18, "bbox": {"l": 26.226221084594727, "t": 452.88134765625, "r": 121.44960021972656, "b": 413.14801025390625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 40]}], "orig": "Protect columns by defining column masks", "text": "Protect columns by defining column masks"}, {"self_ref": "#/texts/176", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 18, "bbox": {"l": 152.25205993652344, "t": 550.1506958007812, "r": 414.084228515625, "b": 468.4081115722656, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 464]}], "orig": "This IBM Redpaper publication provides information about the IBM i 7.2 feature of IBM DB2 for i Row and Column Access Control (RCAC). It offers a broad description of the function and advantages of controlling access to data in a comprehensive and transparent way. This publication helps you understand the capabilities of RCAC and provides examples of defining, creating, and implementing the row permissions and column masks in a relational database environment.", "text": "This IBM Redpaper publication provides information about the IBM i 7.2 feature of IBM DB2 for i Row and Column Access Control (RCAC). It offers a broad description of the function and advantages of controlling access to data in a comprehensive and transparent way. This publication helps you understand the capabilities of RCAC and provides examples of defining, creating, and implementing the row permissions and column masks in a relational database environment."}, {"self_ref": "#/texts/177", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 18, "bbox": {"l": 152.3572540283203, "t": 461.4716796875, "r": 414.173828125, "b": 403.090087890625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 309]}], "orig": "This paper is intended for database engineers, data-centric application developers, and security officers who want to design and implement RCAC as a part of their data control and governance policy. A solid background in IBM i object level security, DB2 for i relational database concepts, and SQL is assumed.", "text": "This paper is intended for database engineers, data-centric application developers, and security officers who want to design and implement RCAC as a part of their data control and governance policy. A solid background in IBM i object level security, DB2 for i relational database concepts, and SQL is assumed."}, {"self_ref": "#/texts/178", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 18, "bbox": {"l": 170.78512573242188, "t": 161.494140625, "r": 232.11270141601562, "b": 152.3369903564453, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 12]}], "orig": "REDP-5110-00", "text": "REDP-5110-00"}, {"self_ref": "#/texts/179", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 18, "bbox": {"l": 466.3692626953125, "t": 544.606201171875, "r": 559.809326171875, "b": 489.8393859863281, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 44]}], "orig": "INTERNATIONAL TECHNICAL SUPPORT ORGANIZATION", "text": "INTERNATIONAL TECHNICAL SUPPORT ORGANIZATION"}, {"self_ref": "#/texts/180", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 18, "bbox": {"l": 466.3262939453125, "t": 440.5700988769531, "r": 587.38916015625, "b": 405.52801513671875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 60]}], "orig": "BUILDING TECHNICAL INFORMATION BASED ON PRACTICAL EXPERIENCE", "text": "BUILDING TECHNICAL INFORMATION BASED ON PRACTICAL EXPERIENCE"}, {"self_ref": "#/texts/181", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 18, "bbox": {"l": 466.1037292480469, "t": 393.18768310546875, "r": 587.5205078125, "b": 250.36593627929688, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 323]}], "orig": "IBM Redbooks are developed by the IBM International Technical Support Organization. Experts from IBM, Customers and Partners from around the world create timely technical information based on realistic scenarios. Specific recommendations are provided to help you implement IT solutions more effectively in your environment.", "text": "IBM Redbooks are developed by the IBM International Technical Support Organization. Experts from IBM, Customers and Partners from around the world create timely technical information based on realistic scenarios. Specific recommendations are provided to help you implement IT solutions more effectively in your environment."}, {"self_ref": "#/texts/182", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 18, "bbox": {"l": 466.66748046875, "t": 214.11181640625, "r": 571.0052490234375, "b": 190.48809814453125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 39]}], "orig": "For more information: ibm.com /redbooks", "text": "For more information: ibm.com /redbooks"}], "pictures": [{"self_ref": "#/pictures/0", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 1, "bbox": {"l": 513.4560546875, "t": 765.9149169921875, "r": 586.1583251953125, "b": 737.1808471679688, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/1", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 3, "bbox": {"l": 143.39866638183594, "t": 521.7388916015625, "r": 179.56256103515625, "b": 506.378662109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/2", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 3, "bbox": {"l": 64.16704559326172, "t": 188.49365234375, "r": 258.77435302734375, "b": 103.87176513671875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/3", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 4, "bbox": {"l": 142.52883911132812, "t": 416.9550476074219, "r": 251.47850036621094, "b": 288.79351806640625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/4", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 4, "bbox": {"l": 145.41448974609375, "t": 264.7552490234375, "r": 252.08840942382812, "b": 156.616943359375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/5", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 5, "bbox": {"l": 32.05508804321289, "t": 721.5736083984375, "r": 239.62692260742188, "b": 553.958984375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/6", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 7, "bbox": {"l": 135.92466735839844, "t": 416.0727844238281, "r": 546.4456176757812, "b": 103.39019775390625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 43]}], "captions": [{"cref": "#/texts/78"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/7", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 10, "bbox": {"l": 135.9717559814453, "t": 684.5892944335938, "r": 545.4180908203125, "b": 381.39068603515625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 177]}], "captions": [{"cref": "#/texts/105"}, {"cref": "#/texts/106"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/8", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 11, "bbox": {"l": 135.64837646484375, "t": 407.8262939453125, "r": 301.2367248535156, "b": 197.24334716796875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 50]}], "captions": [{"cref": "#/texts/119"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/9", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 14, "bbox": {"l": 63.801902770996094, "t": 696.6175537109375, "r": 547.11474609375, "b": 621.9678955078125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 52]}], "captions": [{"cref": "#/texts/150"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/10", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 14, "bbox": {"l": 63.98516845703125, "t": 364.0950012207031, "r": 530.0479125976562, "b": 145.86041259765625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 65]}], "captions": [{"cref": "#/texts/159"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/11", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 15, "bbox": {"l": 136.5016632080078, "t": 672.7508544921875, "r": 545.4508666992188, "b": 314.4587707519531, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 44]}], "captions": [{"cref": "#/texts/163"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/12", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 15, "bbox": {"l": 64.27847290039062, "t": 238.41864013671875, "r": 506.39263916015625, "b": 127.9129638671875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 37]}], "captions": [{"cref": "#/texts/165"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/13", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 18, "bbox": {"l": 485.1698303222656, "t": 766.7407836914062, "r": 566.2962036132812, "b": 737.3182983398438, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/14", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 18, "bbox": {"l": 474.35540771484375, "t": 711.9486694335938, "r": 592.2726440429688, "b": 602.1873779296875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [], "references": [], "footnotes": [], "image": null, "annotations": []}], "tables": [{"self_ref": "#/tables/0", "parent": {"cref": "#/body"}, "children": [], "label": "table", "prov": [{"page_no": 2, "bbox": {"l": 136.15103149414062, "t": 659.9697265625, "r": 549.8472290039062, "b": 76.34722900390625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [], "references": [], "footnotes": [], "image": null, "data": {"table_cells": [{"bbox": {"l": 136.8000030517578, "t": 659.3513793945312, "r": 172.89404296875, "b": 650.1383666992188, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Notices", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 175.01951599121094, "t": 659.3513793945312, "r": 547.1898193359375, "b": 650.1383666992188, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79901123046875, "t": 646.8715209960938, "r": 189.86537170410156, "b": 637.6585083007812, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Trademarks", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 195.3968505859375, "t": 646.8715209960938, "r": 547.182861328125, "b": 637.6585083007812, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79901123046875, "t": 624.3718872070312, "r": 279.3973083496094, "b": 615.1588745117188, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "DB2 for i Center of Excellence", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 280.6194152832031, "t": 624.3718872070312, "r": 547.1907958984375, "b": 615.1588745117188, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79901123046875, "t": 601.8722534179688, "r": 172.84423828125, "b": 592.6592407226562, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Preface", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 175.01852416992188, "t": 601.8722534179688, "r": 547.182861328125, "b": 592.6592407226562, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79803466796875, "t": 589.3923950195312, "r": 547.1808471679688, "b": 580.1793823242188, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79803466796875, "t": 576.852783203125, "r": 339.18292236328125, "b": 567.6397705078125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Now you can become a published author, too!", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 344.714111328125, "t": 576.852783203125, "r": 547.1387939453125, "b": 567.6397705078125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79803466796875, "t": 564.3729248046875, "r": 529.9950561523438, "b": 555.159912109375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 535.5494995117188, "t": 564.3729248046875, "r": 547.1978759765625, "b": 555.159912109375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "xiii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79806518554688, "t": 551.89306640625, "r": 284.0286560058594, "b": 542.6800537109375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Stay connected to IBM Redbooks", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.54449462890625, "t": 551.89306640625, "r": 547.1211547851562, "b": 542.6800537109375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79806518554688, "t": 529.3934326171875, "r": 536.0958862304688, "b": 520.180419921875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 1. Securing and protecting IBM DB2 data . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.6468505859375, "t": 529.3934326171875, "r": 547.1978149414062, "b": 520.180419921875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "1", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79808044433594, "t": 517.3936157226562, "r": 549.8472290039062, "b": 508.18060302734375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.1 Security fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79806518554688, "t": 504.85394287109375, "r": 536.1293334960938, "b": 495.6409606933594, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.2 Current state of IBM i security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.6611328125, "t": 504.85394287109375, "r": 547.19287109375, "b": 495.6409606933594, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "2", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79806518554688, "t": 492.3740539550781, "r": 549.8472290039062, "b": 483.16107177734375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.3 DB2 for i security controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19720458984375, "t": 479.8941650390625, "r": 536.0551147460938, "b": 470.6811828613281, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.3.1 Existing row and column control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.6015014648438, "t": 479.8941650390625, "r": 547.14794921875, "b": 470.6811828613281, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "4", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19720458984375, "t": 467.3545227050781, "r": 536.080078125, "b": 458.14154052734375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.3.2 New controls: Row and Column Access Control. . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.635498046875, "t": 467.3545227050781, "r": 547.19091796875, "b": 458.14154052734375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "5", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.7970428466797, "t": 444.8548889160156, "r": 536.0908813476562, "b": 435.64190673828125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 2. Roles and separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.642822265625, "t": 444.8548889160156, "r": 547.1947631835938, "b": 435.64190673828125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "7", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.7970428466797, "t": 432.8550720214844, "r": 536.1271362304688, "b": 423.64208984375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1 Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.6658935546875, "t": 432.8550720214844, "r": 547.2047119140625, "b": 423.64208984375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "8", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19720458984375, "t": 420.37518310546875, "r": 535.9526977539062, "b": 411.1622009277344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.1 DDM and DRDA application server access: QIBM_DB_DDMDRDA . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.5558471679688, "t": 420.37518310546875, "r": 547.1590576171875, "b": 411.1622009277344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "8", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19720458984375, "t": 407.8952941894531, "r": 536.0410766601562, "b": 398.68231201171875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.2 Toolbox application server access: QIBM_DB_ZDA. . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.595947265625, "t": 407.8952941894531, "r": 547.1508178710938, "b": 398.68231201171875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "8", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19720458984375, "t": 395.35565185546875, "r": 536.0748901367188, "b": 386.1426696777344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.3 Database Administrator function: QIBM_DB_SQLADM . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.6302490234375, "t": 395.35565185546875, "r": 547.1856079101562, "b": 386.1426696777344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "9", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19720458984375, "t": 382.8757629394531, "r": 411.2704772949219, "b": 373.66278076171875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.4 Database Information function: QIBM_DB_SYSMON", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 416.8177490234375, "t": 382.8757629394531, "r": 547.1786499023438, "b": 373.66278076171875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . 9", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19720458984375, "t": 370.3958740234375, "r": 536.035888671875, "b": 361.1828918457031, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.5 Security Administrator function: QIBM_DB_SECADM . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.5989379882812, "t": 370.3958740234375, "r": 547.1619262695312, "b": 361.1828918457031, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "9", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19720458984375, "t": 357.8562316894531, "r": 530.5731811523438, "b": 348.64324951171875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.6 Change Function Usage CL command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.1044311523438, "t": 357.8562316894531, "r": 547.1668701171875, "b": 348.64324951171875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19720458984375, "t": 345.3763427734375, "r": 530.5352172851562, "b": 336.1633605957031, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 22, "end_row_offset_idx": 23, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.7 Verifying function usage IDs for RCAC with the FUNCTION_USAGE view . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0755004882812, "t": 345.3763427734375, "r": 547.156005859375, "b": 336.1633605957031, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 22, "end_row_offset_idx": 23, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.7970428466797, "t": 332.8964538574219, "r": 547.256591796875, "b": 323.6834716796875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 23, "end_row_offset_idx": 24, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.2 Separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 23, "end_row_offset_idx": 24, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79702758789062, "t": 310.3968200683594, "r": 530.5396118164062, "b": 301.183837890625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 24, "end_row_offset_idx": 25, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 3. Row and Column Access Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0916748046875, "t": 310.3968200683594, "r": 547.19580078125, "b": 301.183837890625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 24, "end_row_offset_idx": 25, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "13", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79702758789062, "t": 298.3970031738281, "r": 530.4808959960938, "b": 289.18402099609375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 25, "end_row_offset_idx": 26, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.1 Explanation of RCAC and the concept of access control . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.04248046875, "t": 298.3970031738281, "r": 547.1657104492188, "b": 289.18402099609375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 25, "end_row_offset_idx": 26, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "14", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1971893310547, "t": 285.85736083984375, "r": 378.2078552246094, "b": 276.6443786621094, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 26, "end_row_offset_idx": 27, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.1.1 Row permission and column mask definitions", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 383.74713134765625, "t": 285.85736083984375, "r": 547.15576171875, "b": 276.6443786621094, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 26, "end_row_offset_idx": 27, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . 14", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1971893310547, "t": 273.3774719238281, "r": 530.4347534179688, "b": 264.16448974609375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 27, "end_row_offset_idx": 28, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.1.2 Enabling and activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 535.9962158203125, "t": 273.3774719238281, "r": 547.1190795898438, "b": 264.16448974609375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 27, "end_row_offset_idx": 28, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "16", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79702758789062, "t": 260.83782958984375, "r": 530.528076171875, "b": 251.6248321533203, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 28, "end_row_offset_idx": 29, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.2 Special registers and built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0670166015625, "t": 260.83782958984375, "r": 547.1448364257812, "b": 251.6248321533203, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 28, "end_row_offset_idx": 29, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "18", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1971893310547, "t": 248.3579559326172, "r": 530.4978637695312, "b": 239.14495849609375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 29, "end_row_offset_idx": 30, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.2.1 Special registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0518798828125, "t": 248.3579559326172, "r": 547.159912109375, "b": 239.14495849609375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 29, "end_row_offset_idx": 30, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "18", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1971893310547, "t": 235.87808227539062, "r": 530.5602416992188, "b": 226.6650848388672, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 30, "end_row_offset_idx": 31, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.2.2 Built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.09912109375, "t": 235.87808227539062, "r": 547.1768798828125, "b": 226.6650848388672, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 30, "end_row_offset_idx": 31, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "19", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79702758789062, "t": 223.33843994140625, "r": 530.5302734375, "b": 214.1254425048828, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 31, "end_row_offset_idx": 32, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.3 VERIFY_GROUP_FOR_USER function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0615234375, "t": 223.33843994140625, "r": 547.1240234375, "b": 214.1254425048828, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 31, "end_row_offset_idx": 32, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "20", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79702758789062, "t": 210.8585662841797, "r": 530.6299438476562, "b": 201.64556884765625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 32, "end_row_offset_idx": 33, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.4 Establishing and controlling accessibility by using the RCAC rule text . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.1631469726562, "t": 210.8585662841797, "r": 547.2295532226562, "b": 201.64556884765625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 32, "end_row_offset_idx": 33, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "21", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 33, "end_row_offset_idx": 34, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 400.3206481933594, "t": 198.37869262695312, "r": 547.10009765625, "b": 189.1656951904297, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 33, "end_row_offset_idx": 34, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . 22", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79701232910156, "t": 198.37869262695312, "r": 394.78179931640625, "b": 189.1656951904297, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 34, "end_row_offset_idx": 35, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.5 SELECT, INSERT, and UPDATE behavior with RCAC", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 34, "end_row_offset_idx": 35, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717407226562, "t": 173.3591766357422, "r": 530.4913940429688, "b": 164.14617919921875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 35, "end_row_offset_idx": 36, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.1 Assigning the QIBM_DB_SECADM function ID to the consultants. . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0463256835938, "t": 173.3591766357422, "r": 547.1561889648438, "b": 164.14617919921875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 35, "end_row_offset_idx": 36, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "23", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717407226562, "t": 160.87930297851562, "r": 530.5645751953125, "b": 151.6663055419922, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 36, "end_row_offset_idx": 37, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.2 Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0960083007812, "t": 160.87930297851562, "r": 547.1587524414062, "b": 151.6663055419922, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 36, "end_row_offset_idx": 37, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "23", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717407226562, "t": 148.33966064453125, "r": 530.5569458007812, "b": 139.1266632080078, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 37, "end_row_offset_idx": 38, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.3 Demonstrating data access without RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0881958007812, "t": 148.33966064453125, "r": 547.1507568359375, "b": 139.1266632080078, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 37, "end_row_offset_idx": 38, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "24", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717407226562, "t": 135.8597869873047, "r": 530.5341186523438, "b": 126.64678955078125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 38, "end_row_offset_idx": 39, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.4 Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.072998046875, "t": 135.8597869873047, "r": 547.15087890625, "b": 126.64678955078125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 38, "end_row_offset_idx": 39, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "25", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717407226562, "t": 123.37991333007812, "r": 339.4510498046875, "b": 114.16690826416016, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 39, "end_row_offset_idx": 40, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.5 Defining and creating column masks", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 344.9899597167969, "t": 123.37991333007812, "r": 547.160888671875, "b": 114.16690826416016, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 39, "end_row_offset_idx": 40, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717407226562, "t": 110.84027099609375, "r": 530.541015625, "b": 101.62727355957031, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 40, "end_row_offset_idx": 41, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.6 Activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.087646484375, "t": 110.84027099609375, "r": 547.1808471679688, "b": 101.62727355957031, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 40, "end_row_offset_idx": 41, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "28", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717407226562, "t": 98.36038970947266, "r": 530.5750732421875, "b": 89.14738464355469, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 41, "end_row_offset_idx": 42, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.7 Demonstrating data access with RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.1066284179688, "t": 98.36038970947266, "r": 547.169677734375, "b": 89.14738464355469, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 41, "end_row_offset_idx": 42, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "29", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717407226562, "t": 85.88050842285156, "r": 530.436279296875, "b": 76.6675033569336, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 42, "end_row_offset_idx": 43, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.8 Demonstrating data access with a view and RCAC . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 535.9984741210938, "t": 85.88050842285156, "r": 547.1228637695312, "b": 76.6675033569336, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 42, "end_row_offset_idx": 43, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "32", "column_header": false, "row_header": false, "row_section": false}], "num_rows": 43, "num_cols": 2, "grid": [[{"bbox": {"l": 136.8000030517578, "t": 659.3513793945312, "r": 172.89404296875, "b": 650.1383666992188, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Notices", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 175.01951599121094, "t": 659.3513793945312, "r": 547.1898193359375, "b": 650.1383666992188, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.79901123046875, "t": 646.8715209960938, "r": 189.86537170410156, "b": 637.6585083007812, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Trademarks", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 195.3968505859375, "t": 646.8715209960938, "r": 547.182861328125, "b": 637.6585083007812, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.79901123046875, "t": 624.3718872070312, "r": 279.3973083496094, "b": 615.1588745117188, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "DB2 for i Center of Excellence", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 280.6194152832031, "t": 624.3718872070312, "r": 547.1907958984375, "b": 615.1588745117188, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.79901123046875, "t": 601.8722534179688, "r": 172.84423828125, "b": 592.6592407226562, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Preface", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 175.01852416992188, "t": 601.8722534179688, "r": 547.182861328125, "b": 592.6592407226562, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.79803466796875, "t": 589.3923950195312, "r": 547.1808471679688, "b": 580.1793823242188, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.79803466796875, "t": 576.852783203125, "r": 339.18292236328125, "b": 567.6397705078125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Now you can become a published author, too!", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 344.714111328125, "t": 576.852783203125, "r": 547.1387939453125, "b": 567.6397705078125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.79803466796875, "t": 564.3729248046875, "r": 529.9950561523438, "b": 555.159912109375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 535.5494995117188, "t": 564.3729248046875, "r": 547.1978759765625, "b": 555.159912109375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "xiii", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.79806518554688, "t": 551.89306640625, "r": 284.0286560058594, "b": 542.6800537109375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Stay connected to IBM Redbooks", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.54449462890625, "t": 551.89306640625, "r": 547.1211547851562, "b": 542.6800537109375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.79806518554688, "t": 529.3934326171875, "r": 536.0958862304688, "b": 520.180419921875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 1. Securing and protecting IBM DB2 data . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.6468505859375, "t": 529.3934326171875, "r": 547.1978149414062, "b": 520.180419921875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "1", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.79808044433594, "t": 517.3936157226562, "r": 549.8472290039062, "b": 508.18060302734375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.1 Security fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.79806518554688, "t": 504.85394287109375, "r": 536.1293334960938, "b": 495.6409606933594, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.2 Current state of IBM i security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.6611328125, "t": 504.85394287109375, "r": 547.19287109375, "b": 495.6409606933594, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "2", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.79806518554688, "t": 492.3740539550781, "r": 549.8472290039062, "b": 483.16107177734375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.3 DB2 for i security controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.19720458984375, "t": 479.8941650390625, "r": 536.0551147460938, "b": 470.6811828613281, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.3.1 Existing row and column control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.6015014648438, "t": 479.8941650390625, "r": 547.14794921875, "b": 470.6811828613281, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "4", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.19720458984375, "t": 467.3545227050781, "r": 536.080078125, "b": 458.14154052734375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.3.2 New controls: Row and Column Access Control. . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.635498046875, "t": 467.3545227050781, "r": 547.19091796875, "b": 458.14154052734375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "5", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.7970428466797, "t": 444.8548889160156, "r": 536.0908813476562, "b": 435.64190673828125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 2. Roles and separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.642822265625, "t": 444.8548889160156, "r": 547.1947631835938, "b": 435.64190673828125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "7", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.7970428466797, "t": 432.8550720214844, "r": 536.1271362304688, "b": 423.64208984375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1 Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.6658935546875, "t": 432.8550720214844, "r": 547.2047119140625, "b": 423.64208984375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "8", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.19720458984375, "t": 420.37518310546875, "r": 535.9526977539062, "b": 411.1622009277344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.1 DDM and DRDA application server access: QIBM_DB_DDMDRDA . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.5558471679688, "t": 420.37518310546875, "r": 547.1590576171875, "b": 411.1622009277344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "8", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.19720458984375, "t": 407.8952941894531, "r": 536.0410766601562, "b": 398.68231201171875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.2 Toolbox application server access: QIBM_DB_ZDA. . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.595947265625, "t": 407.8952941894531, "r": 547.1508178710938, "b": 398.68231201171875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "8", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.19720458984375, "t": 395.35565185546875, "r": 536.0748901367188, "b": 386.1426696777344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.3 Database Administrator function: QIBM_DB_SQLADM . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.6302490234375, "t": 395.35565185546875, "r": 547.1856079101562, "b": 386.1426696777344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "9", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.19720458984375, "t": 382.8757629394531, "r": 411.2704772949219, "b": 373.66278076171875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.4 Database Information function: QIBM_DB_SYSMON", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 416.8177490234375, "t": 382.8757629394531, "r": 547.1786499023438, "b": 373.66278076171875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . 9", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.19720458984375, "t": 370.3958740234375, "r": 536.035888671875, "b": 361.1828918457031, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.5 Security Administrator function: QIBM_DB_SECADM . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.5989379882812, "t": 370.3958740234375, "r": 547.1619262695312, "b": 361.1828918457031, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "9", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.19720458984375, "t": 357.8562316894531, "r": 530.5731811523438, "b": 348.64324951171875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.6 Change Function Usage CL command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.1044311523438, "t": 357.8562316894531, "r": 547.1668701171875, "b": 348.64324951171875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "10", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.19720458984375, "t": 345.3763427734375, "r": 530.5352172851562, "b": 336.1633605957031, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 22, "end_row_offset_idx": 23, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.7 Verifying function usage IDs for RCAC with the FUNCTION_USAGE view . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0755004882812, "t": 345.3763427734375, "r": 547.156005859375, "b": 336.1633605957031, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 22, "end_row_offset_idx": 23, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "10", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.7970428466797, "t": 332.8964538574219, "r": 547.256591796875, "b": 323.6834716796875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 23, "end_row_offset_idx": 24, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.2 Separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 23, "end_row_offset_idx": 24, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.79702758789062, "t": 310.3968200683594, "r": 530.5396118164062, "b": 301.183837890625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 24, "end_row_offset_idx": 25, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 3. Row and Column Access Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0916748046875, "t": 310.3968200683594, "r": 547.19580078125, "b": 301.183837890625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 24, "end_row_offset_idx": 25, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "13", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.79702758789062, "t": 298.3970031738281, "r": 530.4808959960938, "b": 289.18402099609375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 25, "end_row_offset_idx": 26, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.1 Explanation of RCAC and the concept of access control . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.04248046875, "t": 298.3970031738281, "r": 547.1657104492188, "b": 289.18402099609375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 25, "end_row_offset_idx": 26, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "14", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.1971893310547, "t": 285.85736083984375, "r": 378.2078552246094, "b": 276.6443786621094, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 26, "end_row_offset_idx": 27, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.1.1 Row permission and column mask definitions", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 383.74713134765625, "t": 285.85736083984375, "r": 547.15576171875, "b": 276.6443786621094, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 26, "end_row_offset_idx": 27, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . 14", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.1971893310547, "t": 273.3774719238281, "r": 530.4347534179688, "b": 264.16448974609375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 27, "end_row_offset_idx": 28, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.1.2 Enabling and activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 535.9962158203125, "t": 273.3774719238281, "r": 547.1190795898438, "b": 264.16448974609375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 27, "end_row_offset_idx": 28, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "16", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.79702758789062, "t": 260.83782958984375, "r": 530.528076171875, "b": 251.6248321533203, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 28, "end_row_offset_idx": 29, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.2 Special registers and built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0670166015625, "t": 260.83782958984375, "r": 547.1448364257812, "b": 251.6248321533203, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 28, "end_row_offset_idx": 29, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "18", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.1971893310547, "t": 248.3579559326172, "r": 530.4978637695312, "b": 239.14495849609375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 29, "end_row_offset_idx": 30, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.2.1 Special registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0518798828125, "t": 248.3579559326172, "r": 547.159912109375, "b": 239.14495849609375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 29, "end_row_offset_idx": 30, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "18", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.1971893310547, "t": 235.87808227539062, "r": 530.5602416992188, "b": 226.6650848388672, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 30, "end_row_offset_idx": 31, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.2.2 Built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.09912109375, "t": 235.87808227539062, "r": 547.1768798828125, "b": 226.6650848388672, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 30, "end_row_offset_idx": 31, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "19", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.79702758789062, "t": 223.33843994140625, "r": 530.5302734375, "b": 214.1254425048828, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 31, "end_row_offset_idx": 32, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.3 VERIFY_GROUP_FOR_USER function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0615234375, "t": 223.33843994140625, "r": 547.1240234375, "b": 214.1254425048828, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 31, "end_row_offset_idx": 32, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "20", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.79702758789062, "t": 210.8585662841797, "r": 530.6299438476562, "b": 201.64556884765625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 32, "end_row_offset_idx": 33, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.4 Establishing and controlling accessibility by using the RCAC rule text . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.1631469726562, "t": 210.8585662841797, "r": 547.2295532226562, "b": 201.64556884765625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 32, "end_row_offset_idx": 33, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "21", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 33, "end_row_offset_idx": 34, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 400.3206481933594, "t": 198.37869262695312, "r": 547.10009765625, "b": 189.1656951904297, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 33, "end_row_offset_idx": 34, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . 22", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 136.79701232910156, "t": 198.37869262695312, "r": 394.78179931640625, "b": 189.1656951904297, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 34, "end_row_offset_idx": 35, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.5 SELECT, INSERT, and UPDATE behavior with RCAC", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 34, "end_row_offset_idx": 35, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.19717407226562, "t": 173.3591766357422, "r": 530.4913940429688, "b": 164.14617919921875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 35, "end_row_offset_idx": 36, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.1 Assigning the QIBM_DB_SECADM function ID to the consultants. . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0463256835938, "t": 173.3591766357422, "r": 547.1561889648438, "b": 164.14617919921875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 35, "end_row_offset_idx": 36, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "23", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.19717407226562, "t": 160.87930297851562, "r": 530.5645751953125, "b": 151.6663055419922, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 36, "end_row_offset_idx": 37, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.2 Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0960083007812, "t": 160.87930297851562, "r": 547.1587524414062, "b": 151.6663055419922, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 36, "end_row_offset_idx": 37, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "23", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.19717407226562, "t": 148.33966064453125, "r": 530.5569458007812, "b": 139.1266632080078, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 37, "end_row_offset_idx": 38, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.3 Demonstrating data access without RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0881958007812, "t": 148.33966064453125, "r": 547.1507568359375, "b": 139.1266632080078, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 37, "end_row_offset_idx": 38, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "24", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.19717407226562, "t": 135.8597869873047, "r": 530.5341186523438, "b": 126.64678955078125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 38, "end_row_offset_idx": 39, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.4 Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.072998046875, "t": 135.8597869873047, "r": 547.15087890625, "b": 126.64678955078125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 38, "end_row_offset_idx": 39, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "25", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.19717407226562, "t": 123.37991333007812, "r": 339.4510498046875, "b": 114.16690826416016, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 39, "end_row_offset_idx": 40, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.5 Defining and creating column masks", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 344.9899597167969, "t": 123.37991333007812, "r": 547.160888671875, "b": 114.16690826416016, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 39, "end_row_offset_idx": 40, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.19717407226562, "t": 110.84027099609375, "r": 530.541015625, "b": 101.62727355957031, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 40, "end_row_offset_idx": 41, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.6 Activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.087646484375, "t": 110.84027099609375, "r": 547.1808471679688, "b": 101.62727355957031, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 40, "end_row_offset_idx": 41, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "28", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.19717407226562, "t": 98.36038970947266, "r": 530.5750732421875, "b": 89.14738464355469, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 41, "end_row_offset_idx": 42, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.7 Demonstrating data access with RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.1066284179688, "t": 98.36038970947266, "r": 547.169677734375, "b": 89.14738464355469, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 41, "end_row_offset_idx": 42, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "29", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 151.19717407226562, "t": 85.88050842285156, "r": 530.436279296875, "b": 76.6675033569336, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 42, "end_row_offset_idx": 43, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.8 Demonstrating data access with a view and RCAC . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 535.9984741210938, "t": 85.88050842285156, "r": 547.1228637695312, "b": 76.6675033569336, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 42, "end_row_offset_idx": 43, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "32", "column_header": false, "row_header": false, "row_section": false}]]}}, {"self_ref": "#/tables/1", "parent": {"cref": "#/body"}, "children": [], "label": "table", "prov": [{"page_no": 8, "bbox": {"l": 135.52508544921875, "t": 502.2750244140625, "r": 545.87060546875, "b": 349.9494934082031, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [{"cref": "#/texts/88"}], "references": [], "footnotes": [], "image": null, "data": {"table_cells": [{"bbox": {"l": 142.8000030517578, "t": 495.4620056152344, "r": 202.2449951171875, "b": 487.1369934082031, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Column name", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 216.8087921142578, "t": 495.4620056152344, "r": 257.210693359375, "b": 487.1369934082031, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Data type", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 289.47479248046875, "t": 495.4620056152344, "r": 338.8946838378906, "b": 487.1369934082031, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Description", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8000030517578, "t": 476.4422912597656, "r": 203.2322998046875, "b": 468.1172790527344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "FUNCTION_ID", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.785400390625, "t": 476.4422912597656, "r": 276.00360107421875, "b": 468.1172790527344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(30)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.45770263671875, "t": 476.4422912597656, "r": 359.85394287109375, "b": 468.1172790527344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "ID of the function.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8000030517578, "t": 457.48199462890625, "r": 198.66929626464844, "b": 449.156982421875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USER_NAME", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.74130249023438, "t": 457.48199462890625, "r": 275.9234924316406, "b": 449.156982421875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(10)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.382080078125, "t": 457.48199462890625, "r": 515.0535888671875, "b": 438.1166687011719, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Name of the user profile that has a usage setting for this function.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.79998779296875, "t": 427.48138427734375, "r": 173.98318481445312, "b": 419.1563720703125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USAGE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.773681640625, "t": 427.48138427734375, "r": 270.9797668457031, "b": 419.1563720703125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(7)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.416259765625, "t": 427.48138427734375, "r": 539.1071166992188, "b": 397.13604736328125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Usage setting: GLYPH ALLOWED: The user profile is allowed to use the function. GLYPH DENIED: The user profile is not allowed to use the function.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8000030517578, "t": 386.44134521484375, "r": 196.2248992919922, "b": 378.1163330078125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USER_TYPE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.75210571289062, "t": 386.44134521484375, "r": 270.99871826171875, "b": 378.1163330078125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(5)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.4316101074219, "t": 386.44134521484375, "r": 448.11962890625, "b": 356.15631103515625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Type of user profile: GLYPH USER: The user profile is a user. GLYPH GROUP: The user profile is a group.", "column_header": false, "row_header": false, "row_section": false}], "num_rows": 5, "num_cols": 3, "grid": [[{"bbox": {"l": 142.8000030517578, "t": 495.4620056152344, "r": 202.2449951171875, "b": 487.1369934082031, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Column name", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 216.8087921142578, "t": 495.4620056152344, "r": 257.210693359375, "b": 487.1369934082031, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Data type", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 289.47479248046875, "t": 495.4620056152344, "r": 338.8946838378906, "b": 487.1369934082031, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Description", "column_header": true, "row_header": false, "row_section": false}], [{"bbox": {"l": 142.8000030517578, "t": 476.4422912597656, "r": 203.2322998046875, "b": 468.1172790527344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "FUNCTION_ID", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.785400390625, "t": 476.4422912597656, "r": 276.00360107421875, "b": 468.1172790527344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(30)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.45770263671875, "t": 476.4422912597656, "r": 359.85394287109375, "b": 468.1172790527344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "ID of the function.", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 142.8000030517578, "t": 457.48199462890625, "r": 198.66929626464844, "b": 449.156982421875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USER_NAME", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.74130249023438, "t": 457.48199462890625, "r": 275.9234924316406, "b": 449.156982421875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(10)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.382080078125, "t": 457.48199462890625, "r": 515.0535888671875, "b": 438.1166687011719, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Name of the user profile that has a usage setting for this function.", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 142.79998779296875, "t": 427.48138427734375, "r": 173.98318481445312, "b": 419.1563720703125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USAGE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.773681640625, "t": 427.48138427734375, "r": 270.9797668457031, "b": 419.1563720703125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(7)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.416259765625, "t": 427.48138427734375, "r": 539.1071166992188, "b": 397.13604736328125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Usage setting: GLYPH ALLOWED: The user profile is allowed to use the function. GLYPH DENIED: The user profile is not allowed to use the function.", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 142.8000030517578, "t": 386.44134521484375, "r": 196.2248992919922, "b": 378.1163330078125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USER_TYPE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.75210571289062, "t": 386.44134521484375, "r": 270.99871826171875, "b": 378.1163330078125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(5)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.4316101074219, "t": 386.44134521484375, "r": 448.11962890625, "b": 356.15631103515625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Type of user profile: GLYPH USER: The user profile is a user. GLYPH GROUP: The user profile is a group.", "column_header": false, "row_header": false, "row_section": false}]]}}, {"self_ref": "#/tables/2", "parent": {"cref": "#/body"}, "children": [], "label": "table", "prov": [{"page_no": 9, "bbox": {"l": 64.41139221191406, "t": 398.3863525390625, "r": 547.3950805664062, "b": 70.39208984375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [{"cref": "#/texts/102"}], "references": [], "footnotes": [], "image": null, "data": {"table_cells": [{"bbox": {"l": 70.80030059814453, "t": 391.4817199707031, "r": 119.78550720214844, "b": 383.1567077636719, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "User action", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 424.93804931640625, "t": 344.4774475097656, "r": 433.2629699707031, "b": 304.9800109863281, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "*JOBCTL", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 450.1380615234375, "t": 390.3999328613281, "r": 458.4629821777344, "b": 304.9800109863281, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "QIBM_DB_SECADM", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 475.9383544921875, "t": 390.465576171875, "r": 484.2632751464844, "b": 304.9800109863281, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "QIBM_DB_SQLADM", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 501.13836669921875, "t": 390.385498046875, "r": 509.4632873535156, "b": 304.9800109863281, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "QIBM_DB_SYSMON", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 526.3986206054688, "t": 359.2005615234375, "r": 534.7235717773438, "b": 304.9799499511719, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "No Authority", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.80000305175781, "t": 293.4420166015625, "r": 220.1568145751953, "b": 285.11700439453125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "SET CURRENT DEGREE (SQL statement)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0, "t": 293.4420166015625, "r": 435.00299072265625, "b": 285.11700439453125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00030517578125, "t": 293.4420166015625, "r": 486.0032958984375, "b": 285.11700439453125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.80001831054688, "t": 274.4817199707031, "r": 264.5538024902344, "b": 266.1567077636719, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CHGQRYA command targeting a different user's job", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000305175781, "t": 274.4817199707031, "r": 435.0030212402344, "b": 266.1567077636719, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0003356933594, "t": 274.4817199707031, "r": 486.0033264160156, "b": 266.1567077636719, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800048828125, "t": 255.46202087402344, "r": 322.5057373046875, "b": 247.1370086669922, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "STRDBMON or ENDDBMON commands targeting a different user's job", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000305175781, "t": 255.46202087402344, "r": 435.0030212402344, "b": 247.1370086669922, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0003356933594, "t": 255.46202087402344, "r": 486.0033264160156, "b": 247.1370086669922, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800048828125, "t": 236.44232177734375, "r": 381.0218505859375, "b": 228.1173095703125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "STRDBMON or ENDDBMON commands targeting a job that matches the current user", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000305175781, "t": 236.44232177734375, "r": 435.0030212402344, "b": 228.1173095703125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0003356933594, "t": 236.44232177734375, "r": 486.0033264160156, "b": 228.1173095703125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 505.2606201171875, "t": 236.44232177734375, "r": 511.26361083984375, "b": 228.1173095703125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.7603149414062, "t": 236.44232177734375, "r": 536.7633056640625, "b": 228.1173095703125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800048828125, "t": 217.48202514648438, "r": 359.5173645019531, "b": 209.15701293945312, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "QUSRJOBI() API format 900 or System i Navigator's SQL Details for Job", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00006103515625, "t": 217.48202514648438, "r": 435.0030517578125, "b": 209.15701293945312, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0003662109375, "t": 217.48202514648438, "r": 486.00335693359375, "b": 209.15701293945312, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 505.26068115234375, "t": 217.48202514648438, "r": 511.263671875, "b": 209.15701293945312, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.80007934570312, "t": 198.4623260498047, "r": 220.7517852783203, "b": 190.13731384277344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Visual Explain within Run SQL scripts", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00006103515625, "t": 198.4623260498047, "r": 435.0030517578125, "b": 190.13731384277344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0003662109375, "t": 198.4623260498047, "r": 486.00335693359375, "b": 190.13731384277344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 505.26068115234375, "t": 198.4623260498047, "r": 511.263671875, "b": 190.13731384277344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.7603759765625, "t": 198.4623260498047, "r": 536.7633666992188, "b": 190.13731384277344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.80007934570312, "t": 179.442626953125, "r": 236.65480041503906, "b": 171.11761474609375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Visual Explain outside of Run SQL scripts", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00006103515625, "t": 179.442626953125, "r": 435.0030517578125, "b": 171.11761474609375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0003662109375, "t": 179.442626953125, "r": 486.00335693359375, "b": 171.11761474609375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.80007934570312, "t": 160.48233032226562, "r": 213.1296844482422, "b": 152.15731811523438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ANALYZE PLAN CACHE procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00006103515625, "t": 160.48233032226562, "r": 435.0030517578125, "b": 152.15731811523438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0003662109375, "t": 160.48233032226562, "r": 486.00335693359375, "b": 152.15731811523438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.80007934570312, "t": 141.46263122558594, "r": 199.87808227539062, "b": 133.1376190185547, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "DUMP PLAN CACHE procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00006103515625, "t": 141.46263122558594, "r": 435.0030517578125, "b": 133.1376190185547, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0003662109375, "t": 141.46263122558594, "r": 486.00335693359375, "b": 133.1376190185547, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.80007934570312, "t": 122.44291687011719, "r": 208.36776733398438, "b": 114.11792755126953, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "MODIFY PLAN CACHE procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00006103515625, "t": 122.44291687011719, "r": 435.0030517578125, "b": 114.11792755126953, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0003662109375, "t": 122.44291687011719, "r": 486.00335693359375, "b": 114.11792755126953, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.80007934570312, "t": 103.42323303222656, "r": 411.20263671875, "b": 95.09822845458984, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "MODIFY PLAN CACHE PROPERTIES procedure (currently does not check authority)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00006103515625, "t": 103.42323303222656, "r": 435.0030517578125, "b": 95.09822845458984, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0003662109375, "t": 103.42323303222656, "r": 486.00335693359375, "b": 95.09822845458984, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.80007934570312, "t": 84.46292877197266, "r": 377.1258544921875, "b": 76.13793182373047, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CHANGE PLAN CACHE SIZE procedure (currently does not check authority)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00006103515625, "t": 84.46292877197266, "r": 435.0030517578125, "b": 76.13793182373047, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0003662109375, "t": 84.46292877197266, "r": 486.00335693359375, "b": 76.13793182373047, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}], "num_rows": 13, "num_cols": 6, "grid": [[{"bbox": {"l": 70.80030059814453, "t": 391.4817199707031, "r": 119.78550720214844, "b": 383.1567077636719, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "User action", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 424.93804931640625, "t": 344.4774475097656, "r": 433.2629699707031, "b": 304.9800109863281, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "*JOBCTL", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 450.1380615234375, "t": 390.3999328613281, "r": 458.4629821777344, "b": 304.9800109863281, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "QIBM_DB_SECADM", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 475.9383544921875, "t": 390.465576171875, "r": 484.2632751464844, "b": 304.9800109863281, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "QIBM_DB_SQLADM", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 501.13836669921875, "t": 390.385498046875, "r": 509.4632873535156, "b": 304.9800109863281, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "QIBM_DB_SYSMON", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 526.3986206054688, "t": 359.2005615234375, "r": 534.7235717773438, "b": 304.9799499511719, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "No Authority", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.80000305175781, "t": 293.4420166015625, "r": 220.1568145751953, "b": 285.11700439453125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "SET CURRENT DEGREE (SQL statement)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0, "t": 293.4420166015625, "r": 435.00299072265625, "b": 285.11700439453125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00030517578125, "t": 293.4420166015625, "r": 486.0032958984375, "b": 285.11700439453125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.80001831054688, "t": 274.4817199707031, "r": 264.5538024902344, "b": 266.1567077636719, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CHGQRYA command targeting a different user's job", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000305175781, "t": 274.4817199707031, "r": 435.0030212402344, "b": 266.1567077636719, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0003356933594, "t": 274.4817199707031, "r": 486.0033264160156, "b": 266.1567077636719, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.800048828125, "t": 255.46202087402344, "r": 322.5057373046875, "b": 247.1370086669922, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "STRDBMON or ENDDBMON commands targeting a different user's job", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000305175781, "t": 255.46202087402344, "r": 435.0030212402344, "b": 247.1370086669922, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0003356933594, "t": 255.46202087402344, "r": 486.0033264160156, "b": 247.1370086669922, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.800048828125, "t": 236.44232177734375, "r": 381.0218505859375, "b": 228.1173095703125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "STRDBMON or ENDDBMON commands targeting a job that matches the current user", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000305175781, "t": 236.44232177734375, "r": 435.0030212402344, "b": 228.1173095703125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0003356933594, "t": 236.44232177734375, "r": 486.0033264160156, "b": 228.1173095703125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 505.2606201171875, "t": 236.44232177734375, "r": 511.26361083984375, "b": 228.1173095703125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.7603149414062, "t": 236.44232177734375, "r": 536.7633056640625, "b": 228.1173095703125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "X", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.800048828125, "t": 217.48202514648438, "r": 359.5173645019531, "b": 209.15701293945312, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "QUSRJOBI() API format 900 or System i Navigator's SQL Details for Job", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00006103515625, "t": 217.48202514648438, "r": 435.0030517578125, "b": 209.15701293945312, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0003662109375, "t": 217.48202514648438, "r": 486.00335693359375, "b": 209.15701293945312, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 505.26068115234375, "t": 217.48202514648438, "r": 511.263671875, "b": 209.15701293945312, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.80007934570312, "t": 198.4623260498047, "r": 220.7517852783203, "b": 190.13731384277344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Visual Explain within Run SQL scripts", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00006103515625, "t": 198.4623260498047, "r": 435.0030517578125, "b": 190.13731384277344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0003662109375, "t": 198.4623260498047, "r": 486.00335693359375, "b": 190.13731384277344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 505.26068115234375, "t": 198.4623260498047, "r": 511.263671875, "b": 190.13731384277344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.7603759765625, "t": 198.4623260498047, "r": 536.7633666992188, "b": 190.13731384277344, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "X", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.80007934570312, "t": 179.442626953125, "r": 236.65480041503906, "b": 171.11761474609375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Visual Explain outside of Run SQL scripts", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00006103515625, "t": 179.442626953125, "r": 435.0030517578125, "b": 171.11761474609375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0003662109375, "t": 179.442626953125, "r": 486.00335693359375, "b": 171.11761474609375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.80007934570312, "t": 160.48233032226562, "r": 213.1296844482422, "b": 152.15731811523438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ANALYZE PLAN CACHE procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00006103515625, "t": 160.48233032226562, "r": 435.0030517578125, "b": 152.15731811523438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0003662109375, "t": 160.48233032226562, "r": 486.00335693359375, "b": 152.15731811523438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.80007934570312, "t": 141.46263122558594, "r": 199.87808227539062, "b": 133.1376190185547, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "DUMP PLAN CACHE procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00006103515625, "t": 141.46263122558594, "r": 435.0030517578125, "b": 133.1376190185547, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0003662109375, "t": 141.46263122558594, "r": 486.00335693359375, "b": 133.1376190185547, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.80007934570312, "t": 122.44291687011719, "r": 208.36776733398438, "b": 114.11792755126953, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "MODIFY PLAN CACHE procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00006103515625, "t": 122.44291687011719, "r": 435.0030517578125, "b": 114.11792755126953, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0003662109375, "t": 122.44291687011719, "r": 486.00335693359375, "b": 114.11792755126953, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.80007934570312, "t": 103.42323303222656, "r": 411.20263671875, "b": 95.09822845458984, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "MODIFY PLAN CACHE PROPERTIES procedure (currently does not check authority)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00006103515625, "t": 103.42323303222656, "r": 435.0030517578125, "b": 95.09822845458984, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0003662109375, "t": 103.42323303222656, "r": 486.00335693359375, "b": 95.09822845458984, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.80007934570312, "t": 84.46292877197266, "r": 377.1258544921875, "b": 76.13793182373047, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CHANGE PLAN CACHE SIZE procedure (currently does not check authority)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00006103515625, "t": 84.46292877197266, "r": 435.0030517578125, "b": 76.13793182373047, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.0003662109375, "t": 84.46292877197266, "r": 486.00335693359375, "b": 76.13793182373047, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "", "column_header": false, "row_header": false, "row_section": false}, {"bbox": null, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "", "column_header": false, "row_header": false, "row_section": false}]]}}, {"self_ref": "#/tables/3", "parent": {"cref": "#/body"}, "children": [], "label": "table", "prov": [{"page_no": 11, "bbox": {"l": 134.54624938964844, "t": 688.5811157226562, "r": 542.0460815429688, "b": 587.7283935546875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [{"cref": "#/texts/112"}], "references": [], "footnotes": [], "image": null, "data": {"table_cells": [{"bbox": {"l": 142.8000030517578, "t": 681.4619750976562, "r": 209.67091369628906, "b": 673.1370239257812, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Special register", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 230.18911743164062, "t": 681.4619750976562, "r": 319.9352722167969, "b": 673.1370239257812, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Corresponding value", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 142.80001831054688, "t": 662.5016479492188, "r": 212.7012176513672, "b": 643.1364135742188, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USER or SESSION_USER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 230.2197265625, "t": 662.5016479492188, "r": 467.9906921386719, "b": 654.1766967773438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "The effective user of the thread excluding adopted authority.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.80003356933594, "t": 632.441650390625, "r": 216.63963317871094, "b": 624.11669921875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CURRENT_USER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 230.19813537597656, "t": 632.441650390625, "r": 535.6508178710938, "b": 613.13671875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "The effective user of the thread including adopted authority. When no adopted authority is present, this has the same value as USER.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8009033203125, "t": 602.4419555664062, "r": 209.73570251464844, "b": 594.1170043945312, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "SYSTEM_USER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 230.24490356445312, "t": 602.4419555664062, "r": 425.64569091796875, "b": 594.1170043945312, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "The authorization ID that initiated the connection.", "column_header": false, "row_header": false, "row_section": false}], "num_rows": 4, "num_cols": 2, "grid": [[{"bbox": {"l": 142.8000030517578, "t": 681.4619750976562, "r": 209.67091369628906, "b": 673.1370239257812, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Special register", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 230.18911743164062, "t": 681.4619750976562, "r": 319.9352722167969, "b": 673.1370239257812, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Corresponding value", "column_header": true, "row_header": false, "row_section": false}], [{"bbox": {"l": 142.80001831054688, "t": 662.5016479492188, "r": 212.7012176513672, "b": 643.1364135742188, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USER or SESSION_USER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 230.2197265625, "t": 662.5016479492188, "r": 467.9906921386719, "b": 654.1766967773438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "The effective user of the thread excluding adopted authority.", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 142.80003356933594, "t": 632.441650390625, "r": 216.63963317871094, "b": 624.11669921875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CURRENT_USER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 230.19813537597656, "t": 632.441650390625, "r": 535.6508178710938, "b": 613.13671875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "The effective user of the thread including adopted authority. When no adopted authority is present, this has the same value as USER.", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 142.8009033203125, "t": 602.4419555664062, "r": 209.73570251464844, "b": 594.1170043945312, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "SYSTEM_USER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 230.24490356445312, "t": 602.4419555664062, "r": 425.64569091796875, "b": 594.1170043945312, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "The authorization ID that initiated the connection.", "column_header": false, "row_header": false, "row_section": false}]]}}, {"self_ref": "#/tables/4", "parent": {"cref": "#/body"}, "children": [], "label": "table", "prov": [{"page_no": 12, "bbox": {"l": 63.556331634521484, "t": 687.76611328125, "r": 548.5687255859375, "b": 495.7753601074219, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [{"cref": "#/texts/128"}], "references": [], "footnotes": [], "image": null, "data": {"table_cells": [{"bbox": {"l": 70.80000305175781, "t": 681.4619750976562, "r": 134.99070739746094, "b": 673.1370239257812, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Global variable", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 202.889404296875, "t": 681.4619750976562, "r": 223.34640502929688, "b": 673.1370239257812, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Type", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 281.8247985839844, "t": 681.4619750976562, "r": 331.3428039550781, "b": 673.1370239257812, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Description", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 70.80000305175781, "t": 662.5016479492188, "r": 132.7209014892578, "b": 654.1766967773438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CLIENT_HOST", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.89028930664062, "t": 662.5016479492188, "r": 267.0765075683594, "b": 654.1766967773438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(255)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.8473205566406, "t": 662.5016479492188, "r": 510.17547607421875, "b": 654.1766967773438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Host name of the current client as returned by the system", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.80001831054688, "t": 643.48193359375, "r": 140.66522216796875, "b": 635.156982421875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CLIENT_IPADDR", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.872314453125, "t": 643.48193359375, "r": 267.077392578125, "b": 635.156982421875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.8454895019531, "t": 643.48193359375, "r": 509.6058349609375, "b": 635.156982421875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "IP address of the current client as returned by the system", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.80001831054688, "t": 624.4622192382812, "r": 134.98263549804688, "b": 616.1372680664062, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CLIENT_PORT", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.90293884277344, "t": 624.4622192382812, "r": 242.80084228515625, "b": 616.1372680664062, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "INTEGER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.7978515625, "t": 624.4622192382812, "r": 527.5922241210938, "b": 616.1372680664062, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Port used by the current client to communicate with the server", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.80001831054688, "t": 605.4425048828125, "r": 143.50924682617188, "b": 597.1175537109375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PACKAGE_NAME", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.80575561523438, "t": 605.4425048828125, "r": 267.0693664550781, "b": 597.1175537109375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.85186767578125, "t": 605.4425048828125, "r": 436.5726013183594, "b": 597.1175537109375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Name of the currently running package", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.80001831054688, "t": 586.482177734375, "r": 156.01654052734375, "b": 578.1572265625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PACKAGE_SCHEMA", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.83544921875, "t": 586.482177734375, "r": 267.0864562988281, "b": 578.1572265625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.8707580566406, "t": 586.482177734375, "r": 470.44677734375, "b": 578.1572265625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Schema name of the currently running package", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.80001831054688, "t": 567.4624633789062, "r": 157.89932250976562, "b": 559.1375122070312, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PACKAGE_VERSION", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.72471618652344, "t": 567.4624633789062, "r": 261.9825439453125, "b": 559.1375122070312, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(64)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.7492370605469, "t": 567.4624633789062, "r": 478.84381103515625, "b": 559.1375122070312, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Version identifier of the currently running package", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.80001831054688, "t": 548.4427490234375, "r": 154.419921875, "b": 540.1177978515625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ROUTINE_SCHEMA", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.79312133789062, "t": 548.4427490234375, "r": 267.0927429199219, "b": 540.1177978515625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.87164306640625, "t": 548.4427490234375, "r": 464.2602233886719, "b": 540.1177978515625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Schema name of the currently running routine", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.80001831054688, "t": 529.482421875, "r": 188.43991088867188, "b": 521.157470703125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ROUTINE_SPECIFIC_NAME", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.8444061279297, "t": 529.482421875, "r": 267.03692626953125, "b": 521.157470703125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.80682373046875, "t": 529.482421875, "r": 430.40045166015625, "b": 521.157470703125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Name of the currently running routine", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.80003356933594, "t": 510.4627380371094, "r": 139.4313507080078, "b": 502.1377258300781, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ROUTINE_TYPE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.74635314941406, "t": 510.4627380371094, "r": 239.2899627685547, "b": 502.1377258300781, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "CHAR(1)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.7906494140625, "t": 510.4627380371094, "r": 425.09130859375, "b": 502.1377258300781, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Type of the currently running routine", "column_header": false, "row_header": false, "row_section": false}], "num_rows": 10, "num_cols": 3, "grid": [[{"bbox": {"l": 70.80000305175781, "t": 681.4619750976562, "r": 134.99070739746094, "b": 673.1370239257812, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Global variable", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 202.889404296875, "t": 681.4619750976562, "r": 223.34640502929688, "b": 673.1370239257812, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Type", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 281.8247985839844, "t": 681.4619750976562, "r": 331.3428039550781, "b": 673.1370239257812, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Description", "column_header": true, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.80000305175781, "t": 662.5016479492188, "r": 132.7209014892578, "b": 654.1766967773438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CLIENT_HOST", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.89028930664062, "t": 662.5016479492188, "r": 267.0765075683594, "b": 654.1766967773438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(255)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.8473205566406, "t": 662.5016479492188, "r": 510.17547607421875, "b": 654.1766967773438, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Host name of the current client as returned by the system", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.80001831054688, "t": 643.48193359375, "r": 140.66522216796875, "b": 635.156982421875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CLIENT_IPADDR", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.872314453125, "t": 643.48193359375, "r": 267.077392578125, "b": 635.156982421875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.8454895019531, "t": 643.48193359375, "r": 509.6058349609375, "b": 635.156982421875, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "IP address of the current client as returned by the system", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.80001831054688, "t": 624.4622192382812, "r": 134.98263549804688, "b": 616.1372680664062, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CLIENT_PORT", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.90293884277344, "t": 624.4622192382812, "r": 242.80084228515625, "b": 616.1372680664062, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "INTEGER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.7978515625, "t": 624.4622192382812, "r": 527.5922241210938, "b": 616.1372680664062, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Port used by the current client to communicate with the server", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.80001831054688, "t": 605.4425048828125, "r": 143.50924682617188, "b": 597.1175537109375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PACKAGE_NAME", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.80575561523438, "t": 605.4425048828125, "r": 267.0693664550781, "b": 597.1175537109375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.85186767578125, "t": 605.4425048828125, "r": 436.5726013183594, "b": 597.1175537109375, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Name of the currently running package", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.80001831054688, "t": 586.482177734375, "r": 156.01654052734375, "b": 578.1572265625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PACKAGE_SCHEMA", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.83544921875, "t": 586.482177734375, "r": 267.0864562988281, "b": 578.1572265625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.8707580566406, "t": 586.482177734375, "r": 470.44677734375, "b": 578.1572265625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Schema name of the currently running package", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.80001831054688, "t": 567.4624633789062, "r": 157.89932250976562, "b": 559.1375122070312, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PACKAGE_VERSION", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.72471618652344, "t": 567.4624633789062, "r": 261.9825439453125, "b": 559.1375122070312, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(64)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.7492370605469, "t": 567.4624633789062, "r": 478.84381103515625, "b": 559.1375122070312, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Version identifier of the currently running package", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.80001831054688, "t": 548.4427490234375, "r": 154.419921875, "b": 540.1177978515625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ROUTINE_SCHEMA", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.79312133789062, "t": 548.4427490234375, "r": 267.0927429199219, "b": 540.1177978515625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.87164306640625, "t": 548.4427490234375, "r": 464.2602233886719, "b": 540.1177978515625, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Schema name of the currently running routine", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.80001831054688, "t": 529.482421875, "r": 188.43991088867188, "b": 521.157470703125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ROUTINE_SPECIFIC_NAME", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.8444061279297, "t": 529.482421875, "r": 267.03692626953125, "b": 521.157470703125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.80682373046875, "t": 529.482421875, "r": 430.40045166015625, "b": 521.157470703125, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Name of the currently running routine", "column_header": false, "row_header": false, "row_section": false}], [{"bbox": {"l": 70.80003356933594, "t": 510.4627380371094, "r": 139.4313507080078, "b": 502.1377258300781, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ROUTINE_TYPE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.74635314941406, "t": 510.4627380371094, "r": 239.2899627685547, "b": 502.1377258300781, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "CHAR(1)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.7906494140625, "t": 510.4627380371094, "r": 425.09130859375, "b": 502.1377258300781, "coord_origin": "BOTTOMLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Type of the currently running routine", "column_header": false, "row_header": false, "row_section": false}]]}}], "key_value_items": [], "pages": {"1": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 1}, "2": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 2}, "3": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 3}, "4": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 4}, "5": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 5}, "6": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 6}, "7": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 7}, "8": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 8}, "9": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 9}, "10": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 10}, "11": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 11}, "12": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 12}, "13": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 13}, "14": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 14}, "15": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 15}, "16": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 16}, "17": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 17}, "18": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 18}}} \ No newline at end of file diff --git a/tests/data/groundtruth/docling_v2/redp5110_sampled.md b/tests/data/groundtruth/docling_v2/redp5110_sampled.md new file mode 100644 index 00000000..87e9fd59 --- /dev/null +++ b/tests/data/groundtruth/docling_v2/redp5110_sampled.md @@ -0,0 +1,395 @@ +Front cover + + + +## Row and Column Access Control Support in IBM DB2 for i + +Implement roles and separation of duties + +Leverage row permissions on the database + +Protect columns by defining column masks + +Jim Bainbridge Hernando Bedoya Rob Bestgen Mike Cain Dan Cruikshank Jim Denton Doug Mack Tom McKinley Kent Milligan + +Redpaper + +## Contents + +| Notices | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii | +|------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------| +| Trademarks | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii | +| DB2 for i Center of Excellence | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix | +| Preface | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi | +| Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi | | +| Now you can become a published author, too! | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii | +| Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | xiii | +| Stay connected to IBM Redbooks | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv | +| Chapter 1. Securing and protecting IBM DB2 data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 1 | +| 1.1 Security fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 | | +| 1.2 Current state of IBM i security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 2 | +| 1.3 DB2 for i security controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | | +| 1.3.1 Existing row and column control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 4 | +| 1.3.2 New controls: Row and Column Access Control. . . . . . . . . . . . . . . . . . . . . . . . . . . | 5 | +| Chapter 2. Roles and separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 7 | +| 2.1 Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 8 | +| 2.1.1 DDM and DRDA application server access: QIBM\_DB\_DDMDRDA . . . . . . . . . . . | 8 | +| 2.1.2 Toolbox application server access: QIBM\_DB\_ZDA. . . . . . . . . . . . . . . . . . . . . . . . | 8 | +| 2.1.3 Database Administrator function: QIBM\_DB\_SQLADM . . . . . . . . . . . . . . . . . . . . . | 9 | +| 2.1.4 Database Information function: QIBM\_DB\_SYSMON | . . . . . . . . . . . . . . . . . . . . . . 9 | +| 2.1.5 Security Administrator function: QIBM\_DB\_SECADM . . . . . . . . . . . . . . . . . . . . . . | 9 | +| 2.1.6 Change Function Usage CL command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 10 | +| 2.1.7 Verifying function usage IDs for RCAC with the FUNCTION\_USAGE view . . . . . | 10 | +| 2.2 Separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 | | +| Chapter 3. Row and Column Access Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 13 | +| 3.1 Explanation of RCAC and the concept of access control . . . . . . . . . . . . . . . . . . . . . . . | 14 | +| 3.1.1 Row permission and column mask definitions | . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 | +| 3.1.2 Enabling and activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 16 | +| 3.2 Special registers and built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 18 | +| 3.2.1 Special registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 18 | +| 3.2.2 Built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 19 | +| 3.3 VERIFY\_GROUP\_FOR\_USER function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 20 | +| 3.4 Establishing and controlling accessibility by using the RCAC rule text . . . . . . . . . . . . . | 21 | +| | . . . . . . . . . . . . . . . . . . . . . . . . 22 | +| 3.5 SELECT, INSERT, and UPDATE behavior with RCAC | | +| 3.6.1 Assigning the QIBM\_DB\_SECADM function ID to the consultants. . . . . . . . . . . . | 23 | +| 3.6.2 Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . . | 23 | +| 3.6.3 Demonstrating data access without RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 24 | +| 3.6.4 Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 25 | +| 3.6.5 Defining and creating column masks | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 | +| 3.6.6 Activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 28 | +| 3.6.7 Demonstrating data access with RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 29 | +| 3.6.8 Demonstrating data access with a view and RCAC . . . . . . . . . . . . . . . . . . . . . . . | 32 | + +DB2 for i Center of Excellence + +Solution Brief IBM Systems Lab Services and Training + + + +## Highlights + +- GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH +- GLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH +- GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH +- GLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH + + + +Power Services + +## DB2 for i Center of Excellence + +Expert help to achieve your business requirements + +## We build confident, satisfied clients + +No one else has the vast consulting experiences, skills sharing and renown service offerings to do what we can do for you. + +Because no one else is IBM. + +With combined experiences and direct access to development groups, we're the experts in IBM DB2® for i. The DB2 for i Center of Excellence (CoE) can help you achieve-perhaps reexamine and exceed-your business requirements and gain more confidence and satisfaction in IBM product data management products and solutions. + +## Who we are, some of what we do + +Global CoE engagements cover topics including: + +- r Database performance and scalability +- r Advanced SQL knowledge and skills transfer +- r Business intelligence and analytics +- r DB2 Web Query +- r Query/400 modernization for better reporting and analysis capabilities +- r Database modernization and re-engineering +- r Data-centric architecture and design +- r Extremely large database and overcoming limits to growth +- r ISV education and enablement + +## Preface + +This IBMfi Redpaper™ publication provides information about the IBM i 7.2 feature of IBM DB2fi for i Row and Column Access Control (RCAC). It offers a broad description of the function and advantages of controlling access to data in a comprehensive and transparent way. This publication helps you understand the capabilities of RCAC and provides examples of defining, creating, and implementing the row permissions and column masks in a relational database environment. + +This paper is intended for database engineers, data-centric application developers, and security officers who want to design and implement RCAC as a part of their data control and governance policy. A solid background in IBM i object level security, DB2 for i relational database concepts, and SQL is assumed. + +This paper was produced by the IBM DB2 for i Center of Excellence team in partnership with the International Technical Support Organization (ITSO), Rochester, Minnesota US. + + + + + +Jim Bainbridge is a senior DB2 consultant on the DB2 for i Center of Excellence team in the IBM Lab Services and Training organization. His primary role is training and implementation services for IBM DB2 Web Query for i and business analytics. Jim began his career with IBM 30 years ago in the IBM Rochester Development Lab, where he developed cooperative processing products that paired IBM PCs with IBM S/36 and AS/.400 systems. In the years since, Jim has held numerous technical roles, including independent software vendors technical support on a broad range of IBM technologies and products, and supporting customers in the IBM Executive Briefing Center and IBM Project Office. + +Hernando Bedoya is a Senior IT Specialist at STG Lab Services and Training in Rochester, Minnesota. He writes extensively and teaches IBM classes worldwide in all areas of DB2 for i. Before joining STG Lab Services, he worked in the ITSO for nine years writing multiple IBM Redbooksfi publications. He also worked for IBM Colombia as an IBM AS/400fi IT Specialist doing presales support for the Andean countries. He has 28 years of experience in the computing field and has taught database classes in Colombian universities. He holds a Master's degree in Computer Science from EAFIT, Colombia. His areas of expertise are database technology, performance, and data warehousing. Hernando can be contacted at hbedoya@us.ibm.com . + +## Authors + + + +Chapter 1. + +1 + +## Securing and protecting IBM DB2 data + +Recent news headlines are filled with reports of data breaches and cyber-attacks impacting global businesses of all sizes. The Identity Theft Resource Center$^{1}$ reports that almost 5000 data breaches have occurred since 2005, exposing over 600 million records of data. The financial cost of these data breaches is skyrocketing. Studies from the Ponemon Institute$^{2}$ revealed that the average cost of a data breach increased in 2013 by 15% globally and resulted in a brand equity loss of $9.4 million per attack. The average cost that is incurred for each lost record containing sensitive information increased more than 9% to $145 per record. + +Businesses must make a serious effort to secure their data and recognize that securing information assets is a cost of doing business. In many parts of the world and in many industries, securing the data is required by law and subject to audits. Data security is no longer an option; it is a requirement. + +This chapter describes how you can secure and protect data in DB2 for i. The following topics are covered in this chapter: + +- GLYPH Security fundamentals +- GLYPH Current state of IBM i security +- GLYPH DB2 for i security controls + +## 1.1 Security fundamentals + +Before reviewing database security techniques, there are two fundamental steps in securing information assets that must be described: + +- GLYPH First, and most important, is the definition of a company's security policy . Without a security policy, there is no definition of what are acceptable practices for using, accessing, and storing information by who, what, when, where, and how. A security policy should minimally address three things: confidentiality, integrity, and availability. +- The monitoring and assessment of adherence to the security policy determines whether your security strategy is working. Often, IBM security consultants are asked to perform security assessments for companies without regard to the security policy. Although these assessments can be useful for observing how the system is defined and how data is being accessed, they cannot determine the level of security without a security policy. Without a security policy, it really is not an assessment as much as it is a baseline for monitoring the changes in the security settings that are captured. + +A security policy is what defines whether the system and its settings are secure (or not). + +- GLYPH The second fundamental in securing data assets is the use of resource security . If implemented properly, resource security prevents data breaches from both internal and external intrusions. Resource security controls are closely tied to the part of the security policy that defines who should have access to what information resources. A hacker might be good enough to get through your company firewalls and sift his way through to your system, but if they do not have explicit access to your database, the hacker cannot compromise your information assets. + +With your eyes now open to the importance of securing information assets, the rest of this chapter reviews the methods that are available for securing database resources on IBM i. + +## 1.2 Current state of IBM i security + +Because of the inherently secure nature of IBM i, many clients rely on the default system settings to protect their business data that is stored in DB2 for i. In most cases, this means no data protection because the default setting for the Create default public authority (QCRTAUT) system value is *CHANGE. + +Even more disturbing is that many IBM i clients remain in this state, despite the news headlines and the significant costs that are involved with databases being compromised. This default security configuration makes it quite challenging to implement basic security policies. A tighter implementation is required if you really want to protect one of your company's most valuable assets, which is the data. + +Traditionally, IBM i applications have employed menu-based security to counteract this default configuration that gives all users access to the data. The theory is that data is protected by the menu options controlling what database operations that the user can perform. This approach is ineffective, even if the user profile is restricted from running interactive commands. The reason is that in today's connected world there are a multitude of interfaces into the system, from web browsers to PC clients, that bypass application menus. If there are no object-level controls, users of these newer interfaces have an open door to your data. + +Many businesses are trying to limit data access to a need-to-know basis. This security goal means that users should be given access only to the minimum set of data that is required to perform their job. Often, users with object-level access are given access to row and column values that are beyond what their business task requires because that object-level security provides an all-or-nothing solution. For example, object-level controls allow a manager to access data about all employees. Most security policies limit a manager to accessing data only for the employees that they manage. + +## 1.3.1 Existing row and column control + +Some IBM i clients have tried augmenting the all-or-nothing object-level security with SQL views (or logical files) and application logic, as shown in Figure 1-2. However, application-based logic is easy to bypass with all of the different data access interfaces that are provided by the IBM i operating system, such as Open Database Connectivity (ODBC) and System i Navigator. + +Using SQL views to limit access to a subset of the data in a table also has its own set of challenges. First, there is the complexity of managing all of the SQL view objects that are used for securing data access. Second, scaling a view-based security solution can be difficult as the amount of data grows and the number of users increases. + +Even if you are willing to live with these performance and management issues, a user with *ALLOBJ access still can directly access all of the data in the underlying DB2 table and easily bypass the security controls that are built into an SQL view. + +Figure 1-2 Existing row and column controls + + + +## 2.1.6 Change Function Usage CL command + +The following CL commands can be used to work with, display, or change function usage IDs: + +- GLYPH Work Function Usage ( WRKFCNUSG ) +- GLYPH Change Function Usage ( CHGFCNUSG ) +- GLYPH Display Function Usage ( DSPFCNUSG ) + +For example, the following CHGFCNUSG command shows granting authorization to user HBEDOYA to administer and manage RCAC rules: + +CHGFCNUSG FCNID(QIBM\_DB\_SECADM) USER(HBEDOYA) USAGE(*ALLOWED) + +## 2.1.7 Verifying function usage IDs for RCAC with the FUNCTION\_USAGE view + +The FUNCTION\_USAGE view contains function usage configuration details. Table 2-1 describes the columns in the FUNCTION\_USAGE view. + +Table 2-1 FUNCTION\_USAGE view + +| Column name | Data type | Description | +|---------------|-------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| FUNCTION\_ID | VARCHAR(30) | ID of the function. | +| USER\_NAME | VARCHAR(10) | Name of the user profile that has a usage setting for this function. | +| USAGE | VARCHAR(7) | Usage setting: GLYPH ALLOWED: The user profile is allowed to use the function. GLYPH DENIED: The user profile is not allowed to use the function. | +| USER\_TYPE | VARCHAR(5) | Type of user profile: GLYPH USER: The user profile is a user. GLYPH GROUP: The user profile is a group. | + +To discover who has authorization to define and manage RCAC, you can use the query that is shown in Example 2-1. + +Example 2-1 Query to determine who has authority to define and manage RCAC + +SELECT function\_id, user\_name, usage, user\_type FROM function\_usage WHERE function\_id='QIBM\_DB\_SECADM' ORDER BY user\_name; + +## 2.2 Separation of duties + +Separation of duties helps businesses comply with industry regulations or organizational requirements and simplifies the management of authorities. Separation of duties is commonly used to prevent fraudulent activities or errors by a single person. It provides the ability for administrative functions to be divided across individuals without overlapping responsibilities, so that one user does not possess unlimited authority, such as with the *ALLOBJ authority. + +For example, assume that a business has assigned the duty to manage security on IBM i to Theresa. Before release IBM i 7.2, to grant privileges, Theresa had to have the same privileges Theresa was granting to others. Therefore, to grant *USE privileges to the PAYROLL table, Theresa had to have *OBJMGT and *USE authority (or a higher level of authority, such as *ALLOBJ). This requirement allowed Theresa to access the data in the PAYROLL table even though Theresa's job description was only to manage its security. + +In IBM i 7.2, the QIBM\_DB\_SECADM function usage grants authorities, revokes authorities, changes ownership, or changes the primary group without giving access to the object or, in the case of a database table, to the data that is in the table or allowing other operations on the table. + +QIBM\_DB\_SECADM function usage can be granted only by a user with *SECADM special authority and can be given to a user or a group. + +QIBM\_DB\_SECADM also is responsible for administering RCAC, which restricts which rows a user is allowed to access in a table and whether a user is allowed to see information in certain columns of a table. + +A preferred practice is that the RCAC administrator has the QIBM\_DB\_SECADM function usage ID, but absolutely no other data privileges. The result is that the RCAC administrator can deploy and maintain the RCAC constructs, but cannot grant themselves unauthorized access to data itself. + +Table 2-2 shows a comparison of the different function usage IDs and *JOBCTL authority to the different CL commands and DB2 for i tools. + +Table 2-2 Comparison of the different function usage IDs and *JOBCTL authority + +| User action | *JOBCTL | QIBM\_DB\_SECADM | QIBM\_DB\_SQLADM | QIBM\_DB\_SYSMON | No Authority | +|--------------------------------------------------------------------------------|-----------|------------------|------------------|------------------|----------------| +| SET CURRENT DEGREE (SQL statement) | X | | X | | | +| CHGQRYA command targeting a different user's job | X | | X | | | +| STRDBMON or ENDDBMON commands targeting a different user's job | X | | X | | | +| STRDBMON or ENDDBMON commands targeting a job that matches the current user | X | | X | X | X | +| QUSRJOBI() API format 900 or System i Navigator's SQL Details for Job | X | | X | X | | +| Visual Explain within Run SQL scripts | X | | X | X | X | +| Visual Explain outside of Run SQL scripts | X | | X | | | +| ANALYZE PLAN CACHE procedure | X | | X | | | +| DUMP PLAN CACHE procedure | X | | X | | | +| MODIFY PLAN CACHE procedure | X | | X | | | +| MODIFY PLAN CACHE PROPERTIES procedure (currently does not check authority) | X | | X | | | +| CHANGE PLAN CACHE SIZE procedure (currently does not check authority) | X | | X | | | + +The SQL CREATE PERMISSION statement that is shown in Figure 3-1 is used to define and initially enable or disable the row access rules.Figure 3-1 CREATE PERMISSION SQL statement + + + +## Column mask + +A column mask is a database object that manifests a column value access control rule for a specific column in a specific table. It uses a CASE expression that describes what you see when you access the column. For example, a teller can see only the last four digits of a tax identification number. + +Table 3-1 summarizes these special registers and their values. + +Table 3-1 Special registers and their corresponding values + +| Special register | Corresponding value | +|----------------------|---------------------------------------------------------------------------------------------------------------------------------------| +| USER or SESSION\_USER | The effective user of the thread excluding adopted authority. | +| CURRENT\_USER | The effective user of the thread including adopted authority. When no adopted authority is present, this has the same value as USER. | +| SYSTEM\_USER | The authorization ID that initiated the connection. | + +Figure 3-5 shows the difference in the special register values when an adopted authority is used: + +- GLYPH A user connects to the server using the user profile ALICE. +- GLYPH USER and CURRENT USER initially have the same value of ALICE. +- GLYPH ALICE calls an SQL procedure that is named proc1, which is owned by user profile JOE and was created to adopt JOE's authority when it is called. +- GLYPH While the procedure is running, the special register USER still contains the value of ALICE because it excludes any adopted authority. The special register CURRENT USER contains the value of JOE because it includes any adopted authority. +- GLYPH When proc1 ends, the session reverts to its original state with both USER and CURRENT USER having the value of ALICE. + +Figure 3-5 Special registers and adopted authority + + + +## 3.2.2 Built-in global variables + +Built-in global variables are provided with the database manager and are used in SQL statements to retrieve scalar values that are associated with the variables. + +IBM DB2 for i supports nine different built-in global variables that are read only and maintained by the system. These global variables can be used to identify attributes of the database connection and used as part of the RCAC logic. + +Table 3-2 lists the nine built-in global variables. + +Table 3-2 Built-in global variables + +| Global variable | Type | Description | +|-----------------------|--------------|----------------------------------------------------------------| +| CLIENT\_HOST | VARCHAR(255) | Host name of the current client as returned by the system | +| CLIENT\_IPADDR | VARCHAR(128) | IP address of the current client as returned by the system | +| CLIENT\_PORT | INTEGER | Port used by the current client to communicate with the server | +| PACKAGE\_NAME | VARCHAR(128) | Name of the currently running package | +| PACKAGE\_SCHEMA | VARCHAR(128) | Schema name of the currently running package | +| PACKAGE\_VERSION | VARCHAR(64) | Version identifier of the currently running package | +| ROUTINE\_SCHEMA | VARCHAR(128) | Schema name of the currently running routine | +| ROUTINE\_SPECIFIC\_NAME | VARCHAR(128) | Name of the currently running routine | +| ROUTINE\_TYPE | CHAR(1) | Type of the currently running routine | + +## 3.3 VERIFY\_GROUP\_FOR\_USER function + +The VERIFY\_GROUP\_FOR\_USER function was added in IBM i 7.2. Although it is primarily intended for use with RCAC permissions and masks, it can be used in other SQL statements. The first parameter must be one of these three special registers: SESSION\_USER, USER, or CURRENT\_USER. The second and subsequent parameters are a list of user or group profiles. Each of these values must be 1 - 10 characters in length. These values are not validated for their existence, which means that you can specify the names of user profiles that do not exist without receiving any kind of error. + +If a special register value is in the list of user profiles or it is a member of a group profile included in the list, the function returns a long integer value of 1. Otherwise, it returns a value of 0. It never returns the null value. + +Here is an example of using the VERIFY\_GROUP\_FOR\_USER function: + +- 1. There are user profiles for MGR, JANE, JUDY, and TONY. +- 2. The user profile JANE specifies a group profile of MGR. +- 3. If a user is connected to the server using user profile JANE, all of the following function invocations return a value of 1: + +``` +VERIFY\_GROUP\_FOR\_USER (CURRENT\_USER, 'MGR') VERIFY\_GROUP\_FOR\_USER (CURRENT\_USER, 'JANE', 'MGR') VERIFY\_GROUP\_FOR\_USER (CURRENT\_USER, 'JANE', 'MGR', 'STEVE') The following function invocation returns a value of 0: VERIFY\_GROUP\_FOR\_USER (CURRENT\_USER, 'JUDY', 'TONY') +``` + +RETURN CASE + +``` +WHEN VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'HR', 'EMP' ) = 1 THEN EMPLOYEES . DATE\_OF\_BIRTH WHEN VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'MGR' ) = 1 AND SESSION\_USER = EMPLOYEES . USER\_ID THEN EMPLOYEES . DATE\_OF\_BIRTH WHEN VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'MGR' ) = 1 AND SESSION\_USER <> EMPLOYEES . USER\_ID THEN ( 9999 || '-' || MONTH ( EMPLOYEES . DATE\_OF\_BIRTH ) || '-' || DAY (EMPLOYEES.DATE\_OF\_BIRTH )) ELSE NULL END ENABLE ; +``` + +- 2. The other column to mask in this example is the TAX\_ID information. In this example, the rules to enforce include the following ones: +- -Human Resources can see the unmasked TAX\_ID of the employees. +- -Employees can see only their own unmasked TAX\_ID. +- -Managers see a masked version of TAX\_ID with the first five characters replaced with the X character (for example, XXX-XX-1234). +- -Any other person sees the entire TAX\_ID as masked, for example, XXX-XX-XXXX. +- To implement this column mask, run the SQL statement that is shown in Example 3-9. + +Example 3-9 Creating a mask on the TAX\_ID column + +``` +CREATE MASK HR\_SCHEMA.MASK\_TAX\_ID\_ON\_EMPLOYEES ON HR\_SCHEMA.EMPLOYEES AS EMPLOYEES FOR COLUMN TAX\_ID RETURN CASE WHEN VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'HR' ) = 1 THEN EMPLOYEES . TAX\_ID WHEN VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'MGR' ) = 1 AND SESSION\_USER = EMPLOYEES . USER\_ID THEN EMPLOYEES . TAX\_ID WHEN VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'MGR' ) = 1 AND SESSION\_USER <> EMPLOYEES . USER\_ID THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( EMPLOYEES . TAX\_ID , 8 , 4 ) ) WHEN VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'EMP' ) = 1 THEN EMPLOYEES . TAX\_ID ELSE 'XXX-XX-XXXX' END ENABLE ; +``` + +- 3. Figure 3-10 shows the masks that are created in the HR\_SCHEMA. + +Figure 3-10 Column masks shown in System i Navigator + + + +## 3.6.6 Activating RCAC + +Now that you have created the row permission and the two column masks, RCAC must be activated. The row permission and the two column masks are enabled (last clause in the scripts), but now you must activate RCAC on the table. To do so, complete the following steps: + +- 1. Run the SQL statements that are shown in Example 3-10. + +## Example 3-10 Activating RCAC on the EMPLOYEES table + +- /* Active Row Access Control (permissions) */ + +/* Active Column Access Control (masks) ALTER TABLE HR\_SCHEMA.EMPLOYEES ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL; + +*/ + +- 2. Look at the definition of the EMPLOYEE table, as shown in Figure 3-11. To do this, from the main navigation pane of System i Navigator, click Schemas  HR\_SCHEMA  Tables , right-click the EMPLOYEES table, and click Definition . + +Figure 3-11 Selecting the EMPLOYEES table from System i Navigator + + + +- 2. Figure 4-68 shows the Visual Explain of the same SQL statement, but with RCAC enabled. It is clear that the implementation of the SQL statement is more complex because the row permission rule becomes part of the WHERE clause. + +Figure 4-68 Visual Explain with RCAC enabled + + + +- 3. Compare the advised indexes that are provided by the Optimizer without RCAC and with RCAC enabled. Figure 4-69 shows the index advice for the SQL statement without RCAC enabled. The index being advised is for the ORDER BY clause. + +Figure 4-69 Index advice with no RCAC + + + +``` +THEN C . CUSTOMER\_TAX\_ID WHEN QSYS2 . VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'TELLER' ) = 1 THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( C . CUSTOMER\_TAX\_ID , 8 , 4 ) ) WHEN QSYS2 . VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER\_TAX\_ID ELSE 'XXX-XX-XXXX' END ENABLE ; CREATE MASK BANK\_SCHEMA.MASK\_DRIVERS\_LICENSE\_ON\_CUSTOMERS ON BANK\_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER\_DRIVERS\_LICENSE\_NUMBER RETURN CASE WHEN QSYS2 . VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER\_DRIVERS\_LICENSE\_NUMBER WHEN QSYS2 . VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'TELLER' ) = 1 THEN C . CUSTOMER\_DRIVERS\_LICENSE\_NUMBER WHEN QSYS2 . VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER\_DRIVERS\_LICENSE\_NUMBER ELSE '*************' END ENABLE ; CREATE MASK BANK\_SCHEMA.MASK\_LOGIN\_ID\_ON\_CUSTOMERS ON BANK\_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER\_LOGIN\_ID RETURN CASE WHEN QSYS2 . VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER\_LOGIN\_ID WHEN QSYS2 . VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER\_LOGIN\_ID ELSE '*****' END ENABLE ; CREATE MASK BANK\_SCHEMA.MASK\_SECURITY\_QUESTION\_ON\_CUSTOMERS ON BANK\_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER\_SECURITY\_QUESTION RETURN CASE WHEN QSYS2 . VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER\_SECURITY\_QUESTION WHEN QSYS2 . VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER\_SECURITY\_QUESTION ELSE '*****' END ENABLE ; CREATE MASK BANK\_SCHEMA.MASK\_SECURITY\_QUESTION\_ANSWER\_ON\_CUSTOMERS ON BANK\_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER\_SECURITY\_QUESTION\_ANSWER RETURN CASE WHEN QSYS2 . VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER\_SECURITY\_QUESTION\_ANSWER WHEN QSYS2 . VERIFY\_GROUP\_FOR\_USER ( SESSION\_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER\_SECURITY\_QUESTION\_ANSWER ELSE '*****' END ENABLE ; ALTER TABLE BANK\_SCHEMA.CUSTOMERS ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL ; +``` + +Back cover + +## Row and Column Access Control Support in IBM DB2 for i + +Implement roles and separation of duties + +Leverage row permissions on the database + +Protect columns by defining column masks + +This IBM Redpaper publication provides information about the IBM i 7.2 feature of IBM DB2 for i Row and Column Access Control (RCAC). It offers a broad description of the function and advantages of controlling access to data in a comprehensive and transparent way. This publication helps you understand the capabilities of RCAC and provides examples of defining, creating, and implementing the row permissions and column masks in a relational database environment. + +This paper is intended for database engineers, data-centric application developers, and security officers who want to design and implement RCAC as a part of their data control and governance policy. A solid background in IBM i object level security, DB2 for i relational database concepts, and SQL is assumed. + + + + + +INTERNATIONAL TECHNICAL SUPPORT ORGANIZATION + +BUILDING TECHNICAL INFORMATION BASED ON PRACTICAL EXPERIENCE + +IBM Redbooks are developed by the IBM International Technical Support Organization. Experts from IBM, Customers and Partners from around the world create timely technical information based on realistic scenarios. Specific recommendations are provided to help you implement IT solutions more effectively in your environment. + +For more information: ibm.com /redbooks \ No newline at end of file diff --git a/tests/data/groundtruth/docling_v2/redp5110_sampled.pages.json b/tests/data/groundtruth/docling_v2/redp5110_sampled.pages.json new file mode 100644 index 00000000..5765cb25 --- /dev/null +++ b/tests/data/groundtruth/docling_v2/redp5110_sampled.pages.json @@ -0,0 +1 @@ +[{"page_no": 0, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "ibm.com", "bbox": {"l": 36.900002, "t": 751.23, "r": 98.600998, "b": 765.105, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "/redbooks", "bbox": {"l": 98.580002, "t": 751.23, "r": 164.4585, "b": 765.105, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Redpaper", "bbox": {"l": 314.70001, "t": 711.50856, "r": 580.52002, "b": 773.772959, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Front cover", "bbox": {"l": 287.82001, "t": 28.54803000000004, "r": 418.83356, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Row and Column Access Control ", "bbox": {"l": 35.700001, "t": 84.58654999999987, "r": 584.64288, "b": 122.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Support in IBM DB2 for i", "bbox": {"l": 35.700001, "t": 127.60668999999996, "r": 447.66919000000007, "b": 165.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Jim Bainbridge", "bbox": {"l": 509.22, "t": 575.71201, "r": 581.34119, "b": 586.392, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Hernando Bedoya", "bbox": {"l": 497.70001, "t": 589.752, "r": 581.3736, "b": 600.43199, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Rob Bestgen", "bbox": {"l": 521.40002, "t": 603.73199, "r": 581.34003, "b": 614.4119900000001, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Mike Cain", "bbox": {"l": 534.12, "t": 617.71199, "r": 581.31598, "b": 628.39198, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Dan Cruikshank", "bbox": {"l": 505.43999999999994, "t": 631.75198, "r": 581.29077, "b": 642.4319800000001, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Jim Denton", "bbox": {"l": 527.22003, "t": 645.73198, "r": 581.29926, "b": 656.41197, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Doug Mack", "bbox": {"l": 527.64001, "t": 659.71198, "r": 581.30884, "b": 670.39197, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Tom McKinley", "bbox": {"l": 514.38, "t": 673.75197, "r": 581.38678, "b": 684.43197, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Kent Milligan", "bbox": {"l": 518.82001, "t": 687.73197, "r": 581.33759, "b": 698.411972, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Implement roles and separation ", "bbox": {"l": 36.119999, "t": 296.13828, "r": 216.00064, "b": 308.58047, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "of duties", "bbox": {"l": 36.119999, "t": 313.11838000000006, "r": 84.527145, "b": 325.56058, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Leverage", "bbox": {"l": 35.759315, "t": 350.13881999999995, "r": 80.409691, "b": 362.58102, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "row permissions on ", "bbox": {"l": 151.8503, "t": 350.13881999999995, "r": 202.45404, "b": 362.58102, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "the", "bbox": {"l": 35.759315, "t": 367.11893, "r": 50.758106, "b": 379.56112999999993, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "database", "bbox": {"l": 86.755211, "t": 367.11893, "r": 107.75352000000001, "b": 379.56112999999993, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Protect", "bbox": {"l": 36.059887, "t": 404.13937, "r": 73.020607, "b": 416.58157, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "columns by defining ", "bbox": {"l": 152.62831, "t": 404.13937, "r": 195.2753, "b": 416.58157, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "column", "bbox": {"l": 36.059887, "t": 421.11948, "r": 73.311806, "b": 433.56167999999997, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "masks", "bbox": {"l": 73.311806, "t": 421.11948, "r": 117.33681, "b": 433.56167999999997, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 36.894657135009766, "t": 749.8662109375, "r": 164.4585, "b": 765.105, "coord_origin": "TOPLEFT"}, "confidence": 0.7180292010307312, "cells": [{"id": 0, "text": "ibm.com", "bbox": {"l": 36.900002, "t": 751.23, "r": 98.600998, "b": 765.105, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "/redbooks", "bbox": {"l": 98.580002, "t": 751.23, "r": 164.4585, "b": 765.105, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "text", "bbox": {"l": 314.70001, "t": 711.50856, "r": 580.52002, "b": 773.772959, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Redpaper", "bbox": {"l": 314.70001, "t": 711.50856, "r": 580.52002, "b": 773.772959, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 287.82001, "t": 28.54803000000004, "r": 418.83356, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 3, "text": "Front cover", "bbox": {"l": 287.82001, "t": 28.54803000000004, "r": 418.83356, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "section_header", "bbox": {"l": 35.68840408325195, "t": 82.3943099975586, "r": 584.64288, "b": 166.40553283691406, "coord_origin": "TOPLEFT"}, "confidence": 0.8281131386756897, "cells": [{"id": 4, "text": "Row and Column Access Control ", "bbox": {"l": 35.700001, "t": 84.58654999999987, "r": 584.64288, "b": 122.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Support in IBM DB2 for i", "bbox": {"l": 35.700001, "t": 127.60668999999996, "r": 447.66919000000007, "b": 165.84113000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 497.0279846191406, "t": 573.8836669921875, "r": 581.8246459960938, "b": 699.171630859375, "coord_origin": "TOPLEFT"}, "confidence": 0.7621812224388123, "cells": [{"id": 6, "text": "Jim Bainbridge", "bbox": {"l": 509.22, "t": 575.71201, "r": 581.34119, "b": 586.392, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Hernando Bedoya", "bbox": {"l": 497.70001, "t": 589.752, "r": 581.3736, "b": 600.43199, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Rob Bestgen", "bbox": {"l": 521.40002, "t": 603.73199, "r": 581.34003, "b": 614.4119900000001, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Mike Cain", "bbox": {"l": 534.12, "t": 617.71199, "r": 581.31598, "b": 628.39198, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Dan Cruikshank", "bbox": {"l": 505.43999999999994, "t": 631.75198, "r": 581.29077, "b": 642.4319800000001, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Jim Denton", "bbox": {"l": 527.22003, "t": 645.73198, "r": 581.29926, "b": 656.41197, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Doug Mack", "bbox": {"l": 527.64001, "t": 659.71198, "r": 581.30884, "b": 670.39197, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Tom McKinley", "bbox": {"l": 514.38, "t": 673.75197, "r": 581.38678, "b": 684.43197, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Kent Milligan", "bbox": {"l": 518.82001, "t": 687.73197, "r": 581.33759, "b": 698.411972, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 35.0073127746582, "t": 294.7938232421875, "r": 216.00064, "b": 325.56058, "coord_origin": "TOPLEFT"}, "confidence": 0.8502883315086365, "cells": [{"id": 15, "text": "Implement roles and separation ", "bbox": {"l": 36.119999, "t": 296.13828, "r": 216.00064, "b": 308.58047, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "of duties", "bbox": {"l": 36.119999, "t": 313.11838000000006, "r": 84.527145, "b": 325.56058, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 34.56448745727539, "t": 348.9540710449219, "r": 202.45404, "b": 379.56112999999993, "coord_origin": "TOPLEFT"}, "confidence": 0.8639552593231201, "cells": [{"id": 17, "text": "Leverage", "bbox": {"l": 35.759315, "t": 350.13881999999995, "r": 80.409691, "b": 362.58102, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "row permissions on ", "bbox": {"l": 151.8503, "t": 350.13881999999995, "r": 202.45404, "b": 362.58102, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "the", "bbox": {"l": 35.759315, "t": 367.11893, "r": 50.758106, "b": 379.56112999999993, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "database", "bbox": {"l": 86.755211, "t": 367.11893, "r": 107.75352000000001, "b": 379.56112999999993, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 35.171409606933594, "t": 402.6540832519531, "r": 195.2753, "b": 433.56167999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.842113196849823, "cells": [{"id": 21, "text": "Protect", "bbox": {"l": 36.059887, "t": 404.13937, "r": 73.020607, "b": 416.58157, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "columns by defining ", "bbox": {"l": 152.62831, "t": 404.13937, "r": 195.2753, "b": 416.58157, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "column", "bbox": {"l": 36.059887, "t": 421.11948, "r": 73.311806, "b": 433.56167999999997, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "masks", "bbox": {"l": 73.311806, "t": 421.11948, "r": 117.33681, "b": 433.56167999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 513.4560546875, "t": 26.085098266601562, "r": 586.1583251953125, "b": 54.81915283203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9272357225418091, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 0, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 36.894657135009766, "t": 749.8662109375, "r": 164.4585, "b": 765.105, "coord_origin": "TOPLEFT"}, "confidence": 0.7180292010307312, "cells": [{"id": 0, "text": "ibm.com", "bbox": {"l": 36.900002, "t": 751.23, "r": 98.600998, "b": 765.105, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "/redbooks", "bbox": {"l": 98.580002, "t": 751.23, "r": 164.4585, "b": 765.105, "coord_origin": "TOPLEFT"}}]}, "text": "ibm.com /redbooks"}, {"label": "text", "id": 1, "page_no": 0, "cluster": {"id": 1, "label": "text", "bbox": {"l": 314.70001, "t": 711.50856, "r": 580.52002, "b": 773.772959, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Redpaper", "bbox": {"l": 314.70001, "t": 711.50856, "r": 580.52002, "b": 773.772959, "coord_origin": "TOPLEFT"}}]}, "text": "Redpaper"}, {"label": "text", "id": 2, "page_no": 0, "cluster": {"id": 2, "label": "text", "bbox": {"l": 287.82001, "t": 28.54803000000004, "r": 418.83356, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 3, "text": "Front cover", "bbox": {"l": 287.82001, "t": 28.54803000000004, "r": 418.83356, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}}]}, "text": "Front cover"}, {"label": "section_header", "id": 3, "page_no": 0, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 35.68840408325195, "t": 82.3943099975586, "r": 584.64288, "b": 166.40553283691406, "coord_origin": "TOPLEFT"}, "confidence": 0.8281131386756897, "cells": [{"id": 4, "text": "Row and Column Access Control ", "bbox": {"l": 35.700001, "t": 84.58654999999987, "r": 584.64288, "b": 122.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Support in IBM DB2 for i", "bbox": {"l": 35.700001, "t": 127.60668999999996, "r": 447.66919000000007, "b": 165.84113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 4, "page_no": 0, "cluster": {"id": 4, "label": "text", "bbox": {"l": 497.0279846191406, "t": 573.8836669921875, "r": 581.8246459960938, "b": 699.171630859375, "coord_origin": "TOPLEFT"}, "confidence": 0.7621812224388123, "cells": [{"id": 6, "text": "Jim Bainbridge", "bbox": {"l": 509.22, "t": 575.71201, "r": 581.34119, "b": 586.392, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Hernando Bedoya", "bbox": {"l": 497.70001, "t": 589.752, "r": 581.3736, "b": 600.43199, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Rob Bestgen", "bbox": {"l": 521.40002, "t": 603.73199, "r": 581.34003, "b": 614.4119900000001, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Mike Cain", "bbox": {"l": 534.12, "t": 617.71199, "r": 581.31598, "b": 628.39198, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Dan Cruikshank", "bbox": {"l": 505.43999999999994, "t": 631.75198, "r": 581.29077, "b": 642.4319800000001, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Jim Denton", "bbox": {"l": 527.22003, "t": 645.73198, "r": 581.29926, "b": 656.41197, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Doug Mack", "bbox": {"l": 527.64001, "t": 659.71198, "r": 581.30884, "b": 670.39197, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Tom McKinley", "bbox": {"l": 514.38, "t": 673.75197, "r": 581.38678, "b": 684.43197, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Kent Milligan", "bbox": {"l": 518.82001, "t": 687.73197, "r": 581.33759, "b": 698.411972, "coord_origin": "TOPLEFT"}}]}, "text": "Jim Bainbridge Hernando Bedoya Rob Bestgen Mike Cain Dan Cruikshank Jim Denton Doug Mack Tom McKinley Kent Milligan"}, {"label": "text", "id": 5, "page_no": 0, "cluster": {"id": 5, "label": "text", "bbox": {"l": 35.0073127746582, "t": 294.7938232421875, "r": 216.00064, "b": 325.56058, "coord_origin": "TOPLEFT"}, "confidence": 0.8502883315086365, "cells": [{"id": 15, "text": "Implement roles and separation ", "bbox": {"l": 36.119999, "t": 296.13828, "r": 216.00064, "b": 308.58047, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "of duties", "bbox": {"l": 36.119999, "t": 313.11838000000006, "r": 84.527145, "b": 325.56058, "coord_origin": "TOPLEFT"}}]}, "text": "Implement roles and separation of duties"}, {"label": "text", "id": 6, "page_no": 0, "cluster": {"id": 6, "label": "text", "bbox": {"l": 34.56448745727539, "t": 348.9540710449219, "r": 202.45404, "b": 379.56112999999993, "coord_origin": "TOPLEFT"}, "confidence": 0.8639552593231201, "cells": [{"id": 17, "text": "Leverage", "bbox": {"l": 35.759315, "t": 350.13881999999995, "r": 80.409691, "b": 362.58102, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "row permissions on ", "bbox": {"l": 151.8503, "t": 350.13881999999995, "r": 202.45404, "b": 362.58102, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "the", "bbox": {"l": 35.759315, "t": 367.11893, "r": 50.758106, "b": 379.56112999999993, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "database", "bbox": {"l": 86.755211, "t": 367.11893, "r": 107.75352000000001, "b": 379.56112999999993, "coord_origin": "TOPLEFT"}}]}, "text": "Leverage row permissions on the database"}, {"label": "text", "id": 7, "page_no": 0, "cluster": {"id": 7, "label": "text", "bbox": {"l": 35.171409606933594, "t": 402.6540832519531, "r": 195.2753, "b": 433.56167999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.842113196849823, "cells": [{"id": 21, "text": "Protect", "bbox": {"l": 36.059887, "t": 404.13937, "r": 73.020607, "b": 416.58157, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "columns by defining ", "bbox": {"l": 152.62831, "t": 404.13937, "r": 195.2753, "b": 416.58157, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "column", "bbox": {"l": 36.059887, "t": 421.11948, "r": 73.311806, "b": 433.56167999999997, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "masks", "bbox": {"l": 73.311806, "t": 421.11948, "r": 117.33681, "b": 433.56167999999997, "coord_origin": "TOPLEFT"}}]}, "text": "Protect columns by defining column masks"}, {"label": "picture", "id": 8, "page_no": 0, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 513.4560546875, "t": 26.085098266601562, "r": 586.1583251953125, "b": 54.81915283203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9272357225418091, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 1, "page_no": 0, "cluster": {"id": 1, "label": "text", "bbox": {"l": 314.70001, "t": 711.50856, "r": 580.52002, "b": 773.772959, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Redpaper", "bbox": {"l": 314.70001, "t": 711.50856, "r": 580.52002, "b": 773.772959, "coord_origin": "TOPLEFT"}}]}, "text": "Redpaper"}, {"label": "text", "id": 2, "page_no": 0, "cluster": {"id": 2, "label": "text", "bbox": {"l": 287.82001, "t": 28.54803000000004, "r": 418.83356, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 3, "text": "Front cover", "bbox": {"l": 287.82001, "t": 28.54803000000004, "r": 418.83356, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}}]}, "text": "Front cover"}, {"label": "section_header", "id": 3, "page_no": 0, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 35.68840408325195, "t": 82.3943099975586, "r": 584.64288, "b": 166.40553283691406, "coord_origin": "TOPLEFT"}, "confidence": 0.8281131386756897, "cells": [{"id": 4, "text": "Row and Column Access Control ", "bbox": {"l": 35.700001, "t": 84.58654999999987, "r": 584.64288, "b": 122.82097999999996, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Support in IBM DB2 for i", "bbox": {"l": 35.700001, "t": 127.60668999999996, "r": 447.66919000000007, "b": 165.84113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 4, "page_no": 0, "cluster": {"id": 4, "label": "text", "bbox": {"l": 497.0279846191406, "t": 573.8836669921875, "r": 581.8246459960938, "b": 699.171630859375, "coord_origin": "TOPLEFT"}, "confidence": 0.7621812224388123, "cells": [{"id": 6, "text": "Jim Bainbridge", "bbox": {"l": 509.22, "t": 575.71201, "r": 581.34119, "b": 586.392, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Hernando Bedoya", "bbox": {"l": 497.70001, "t": 589.752, "r": 581.3736, "b": 600.43199, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Rob Bestgen", "bbox": {"l": 521.40002, "t": 603.73199, "r": 581.34003, "b": 614.4119900000001, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Mike Cain", "bbox": {"l": 534.12, "t": 617.71199, "r": 581.31598, "b": 628.39198, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Dan Cruikshank", "bbox": {"l": 505.43999999999994, "t": 631.75198, "r": 581.29077, "b": 642.4319800000001, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Jim Denton", "bbox": {"l": 527.22003, "t": 645.73198, "r": 581.29926, "b": 656.41197, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Doug Mack", "bbox": {"l": 527.64001, "t": 659.71198, "r": 581.30884, "b": 670.39197, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Tom McKinley", "bbox": {"l": 514.38, "t": 673.75197, "r": 581.38678, "b": 684.43197, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Kent Milligan", "bbox": {"l": 518.82001, "t": 687.73197, "r": 581.33759, "b": 698.411972, "coord_origin": "TOPLEFT"}}]}, "text": "Jim Bainbridge Hernando Bedoya Rob Bestgen Mike Cain Dan Cruikshank Jim Denton Doug Mack Tom McKinley Kent Milligan"}, {"label": "text", "id": 5, "page_no": 0, "cluster": {"id": 5, "label": "text", "bbox": {"l": 35.0073127746582, "t": 294.7938232421875, "r": 216.00064, "b": 325.56058, "coord_origin": "TOPLEFT"}, "confidence": 0.8502883315086365, "cells": [{"id": 15, "text": "Implement roles and separation ", "bbox": {"l": 36.119999, "t": 296.13828, "r": 216.00064, "b": 308.58047, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "of duties", "bbox": {"l": 36.119999, "t": 313.11838000000006, "r": 84.527145, "b": 325.56058, "coord_origin": "TOPLEFT"}}]}, "text": "Implement roles and separation of duties"}, {"label": "text", "id": 6, "page_no": 0, "cluster": {"id": 6, "label": "text", "bbox": {"l": 34.56448745727539, "t": 348.9540710449219, "r": 202.45404, "b": 379.56112999999993, "coord_origin": "TOPLEFT"}, "confidence": 0.8639552593231201, "cells": [{"id": 17, "text": "Leverage", "bbox": {"l": 35.759315, "t": 350.13881999999995, "r": 80.409691, "b": 362.58102, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "row permissions on ", "bbox": {"l": 151.8503, "t": 350.13881999999995, "r": 202.45404, "b": 362.58102, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "the", "bbox": {"l": 35.759315, "t": 367.11893, "r": 50.758106, "b": 379.56112999999993, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "database", "bbox": {"l": 86.755211, "t": 367.11893, "r": 107.75352000000001, "b": 379.56112999999993, "coord_origin": "TOPLEFT"}}]}, "text": "Leverage row permissions on the database"}, {"label": "text", "id": 7, "page_no": 0, "cluster": {"id": 7, "label": "text", "bbox": {"l": 35.171409606933594, "t": 402.6540832519531, "r": 195.2753, "b": 433.56167999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.842113196849823, "cells": [{"id": 21, "text": "Protect", "bbox": {"l": 36.059887, "t": 404.13937, "r": 73.020607, "b": 416.58157, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "columns by defining ", "bbox": {"l": 152.62831, "t": 404.13937, "r": 195.2753, "b": 416.58157, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "column", "bbox": {"l": 36.059887, "t": 421.11948, "r": 73.311806, "b": 433.56167999999997, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "masks", "bbox": {"l": 73.311806, "t": 421.11948, "r": 117.33681, "b": 433.56167999999997, "coord_origin": "TOPLEFT"}}]}, "text": "Protect columns by defining column masks"}, {"label": "picture", "id": 8, "page_no": 0, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 513.4560546875, "t": 26.085098266601562, "r": 586.1583251953125, "b": 54.81915283203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9272357225418091, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 0, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 36.894657135009766, "t": 749.8662109375, "r": 164.4585, "b": 765.105, "coord_origin": "TOPLEFT"}, "confidence": 0.7180292010307312, "cells": [{"id": 0, "text": "ibm.com", "bbox": {"l": 36.900002, "t": 751.23, "r": 98.600998, "b": 765.105, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "/redbooks", "bbox": {"l": 98.580002, "t": 751.23, "r": 164.4585, "b": 765.105, "coord_origin": "TOPLEFT"}}]}, "text": "ibm.com /redbooks"}]}}, {"page_no": 1, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "iii", "bbox": {"l": 538.85999, "t": 754.848721, "r": 547.25928, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Contents", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 168.73441, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Notices", "bbox": {"l": 136.8, "t": 132.64862000000005, "r": 172.89404, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii", "bbox": {"l": 175.01952, "t": 132.64862000000005, "r": 547.18982, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Trademarks", "bbox": {"l": 136.79901, "t": 145.12847999999997, "r": 189.86537, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 195.39685, "t": 145.12847999999997, "r": 530.05121, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "viii", "bbox": {"l": 535.5827, "t": 145.12847999999997, "r": 547.18286, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "DB2 for i Center of Excellence", "bbox": {"l": 136.79901, "t": 167.62811, "r": 279.39731, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix", "bbox": {"l": 280.61942, "t": 167.62811, "r": 547.1908, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Preface", "bbox": {"l": 136.79901, "t": 190.12775, "r": 172.84424, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "bbox": {"l": 175.01852, "t": 190.12775, "r": 547.18286, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "bbox": {"l": 136.79803, "t": 202.60760000000005, "r": 547.18085, "b": 211.82061999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Now you can become a published author, too!", "bbox": {"l": 136.79803, "t": 215.14721999999995, "r": 339.18292, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.71411, "t": 215.14721999999995, "r": 530.00812, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "xiii", "bbox": {"l": 535.53925, "t": 215.14721999999995, "r": 547.13879, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 136.79803, "t": 227.62707999999998, "r": 529.99506, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "xiii", "bbox": {"l": 535.5495, "t": 227.62707999999998, "r": 547.19788, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Stay connected to IBM Redbooks", "bbox": {"l": 136.79807, "t": 240.10693000000003, "r": 284.02866, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 289.54449, "t": 240.10693000000003, "r": 529.48242, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "xiv", "bbox": {"l": 534.99829, "t": 240.10693000000003, "r": 547.12115, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Chapter 1. Securing and protecting IBM DB2 data", "bbox": {"l": 136.79807, "t": 262.60657000000003, "r": 373.17566, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 375.11798, "t": 262.60657000000003, "r": 536.09589, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "1", "bbox": {"l": 541.64685, "t": 262.60657000000003, "r": 547.19781, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "1.1", "bbox": {"l": 136.79808, "t": 274.60637999999994, "r": 150.88702, "b": 283.8194, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Security fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2", "bbox": {"l": 156.5226, "t": 274.60637999999994, "r": 549.84723, "b": 283.8194, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "1.2", "bbox": {"l": 136.79807, "t": 287.14606000000003, "r": 150.62746, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Current state of IBM i security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.15923, "t": 287.14606000000003, "r": 536.12933, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "2", "bbox": {"l": 541.66113, "t": 287.14606000000003, "r": 547.19287, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "1.3", "bbox": {"l": 136.79807, "t": 299.62595, "r": 150.84943, "b": 308.83893, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "DB2 for i security controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3", "bbox": {"l": 156.46996, "t": 299.62595, "r": 549.84723, "b": 308.83893, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "1.3.1", "bbox": {"l": 151.1972, "t": 312.1058300000001, "r": 173.38289, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Existing row and column control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.92932, "t": 312.1058300000001, "r": 536.05511, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "4", "bbox": {"l": 541.6015, "t": 312.1058300000001, "r": 547.14795, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "1.3.2", "bbox": {"l": 151.1972, "t": 324.64548, "r": 173.4189, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "New controls: Row and Column Access Control. . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97432, "t": 324.64548, "r": 536.08008, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "5", "bbox": {"l": 541.6355, "t": 324.64548, "r": 547.19092, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Chapter 2. Roles and separation of duties", "bbox": {"l": 136.79704, "t": 347.14511, "r": 336.82071, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 338.99701, "t": 347.14511, "r": 536.09088, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "7", "bbox": {"l": 541.64282, "t": 347.14511, "r": 547.19476, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "2.1", "bbox": {"l": 136.79704, "t": 359.14493, "r": 150.644, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18277, "t": 359.14493, "r": 536.12714, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "8", "bbox": {"l": 541.66589, "t": 359.14493, "r": 547.20471, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "2.1.1", "bbox": {"l": 151.1972, "t": 371.62482, "r": 173.60995, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "DDM and DRDA application server access: QIBM_DB_DDMDRDA . . . . . . . . . . .", "bbox": {"l": 176.41154, "t": 371.62482, "r": 535.9527, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "8", "bbox": {"l": 541.55585, "t": 371.62482, "r": 547.15906, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "2.1.2", "bbox": {"l": 151.1972, "t": 384.10470999999995, "r": 173.41664, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Toolbox application server access: QIBM_DB_ZDA. . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97151, "t": 384.10470999999995, "r": 536.04108, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "8", "bbox": {"l": 541.59595, "t": 384.10470999999995, "r": 547.15082, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "2.1.3", "bbox": {"l": 151.1972, "t": 396.64435, "r": 173.41859, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Database Administrator function: QIBM_DB_SQLADM . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97394, "t": 396.64435, "r": 536.07489, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "9", "bbox": {"l": 541.63025, "t": 396.64435, "r": 547.18561, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "2.1.4", "bbox": {"l": 151.1972, "t": 409.12424000000004, "r": 173.38629, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "Database Information function: QIBM_DB_SYSMON", "bbox": {"l": 178.93356, "t": 409.12424000000004, "r": 411.27048, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": ". . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 416.81775, "t": 409.12424000000004, "r": 536.08411, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "9", "bbox": {"l": 541.63135, "t": 409.12424000000004, "r": 547.17865, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "2.1.5", "bbox": {"l": 151.1972, "t": 421.60413, "r": 173.44926, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "Security Administrator function: QIBM_DB_SECADM . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01228, "t": 421.60413, "r": 536.03589, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "9", "bbox": {"l": 541.59894, "t": 421.60413, "r": 547.16193, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "2.1.6", "bbox": {"l": 151.1972, "t": 434.1437700000001, "r": 173.32208, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Change Function Usage CL command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8533, "t": 434.1437700000001, "r": 530.57318, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "10", "bbox": {"l": 536.10443, "t": 434.1437700000001, "r": 547.16687, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "2.1.7", "bbox": {"l": 151.1972, "t": 446.62366, "r": 173.35822, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "Verifying function usage IDs for RCAC with the FUNCTION_USAGE view . . . . .", "bbox": {"l": 178.89848, "t": 446.62366, "r": 530.53522, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "10", "bbox": {"l": 536.0755, "t": 446.62366, "r": 547.15601, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "2.2", "bbox": {"l": 136.79704, "t": 459.10355, "r": 150.85457, "b": 468.31653, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "Separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10", "bbox": {"l": 156.47758, "t": 459.10355, "r": 547.25659, "b": 468.31653, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Chapter 3. Row and Column Access Control", "bbox": {"l": 136.79703, "t": 481.60318, "r": 348.68503, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 350.09741, "t": 481.60318, "r": 530.53961, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "13", "bbox": {"l": 536.09167, "t": 481.60318, "r": 547.1958, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "3.1", "bbox": {"l": 136.79703, "t": 493.603, "r": 150.70105, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "Explanation of RCAC and the concept of access control . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26266, "t": 493.603, "r": 530.4809, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "14", "bbox": {"l": 536.04248, "t": 493.603, "r": 547.16571, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "3.1.1", "bbox": {"l": 151.19719, "t": 506.14264, "r": 173.35429, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "Row permission and column mask definitions", "bbox": {"l": 178.89357, "t": 506.14264, "r": 378.20786, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 383.74713, "t": 506.14264, "r": 530.5379, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "14", "bbox": {"l": 536.07721, "t": 506.14264, "r": 547.15576, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "3.1.2", "bbox": {"l": 151.19719, "t": 518.62253, "r": 173.44292, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "Enabling and activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00435, "t": 518.62253, "r": 530.43475, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "16", "bbox": {"l": 535.99622, "t": 518.62253, "r": 547.11908, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "3.2", "bbox": {"l": 136.79703, "t": 531.1621700000001, "r": 150.64432, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "Special registers and built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18323, "t": 531.1621700000001, "r": 530.52808, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "18", "bbox": {"l": 536.06702, "t": 531.1621700000001, "r": 547.14484, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "3.2.1", "bbox": {"l": 151.19719, "t": 543.64204, "r": 173.41321, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "Special registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.96722, "t": 543.64204, "r": 530.49786, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "18", "bbox": {"l": 536.05188, "t": 543.64204, "r": 547.15991, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 86, "text": "3.2.2", "bbox": {"l": 151.19719, "t": 556.12192, "r": 173.35269, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 87, "text": "Built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89156, "t": 556.12192, "r": 530.56024, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 88, "text": "19", "bbox": {"l": 536.09912, "t": 556.12192, "r": 547.17688, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 89, "text": "3.3", "bbox": {"l": 136.79703, "t": 568.66156, "r": 150.62514, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 90, "text": "VERIFY_GROUP_FOR_USER function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.15639, "t": 568.66156, "r": 530.53027, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 91, "text": "20", "bbox": {"l": 536.06152, "t": 568.66156, "r": 547.12402, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 92, "text": "3.4", "bbox": {"l": 136.79703, "t": 581.14143, "r": 150.63004, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 93, "text": "Establishing and controlling accessibility by using the RCAC rule text . . . . . . . . . . . . .", "bbox": {"l": 156.16325, "t": 581.14143, "r": 530.62994, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 94, "text": "21", "bbox": {"l": 536.16315, "t": 581.14143, "r": 547.22955, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 95, "text": "3.5", "bbox": {"l": 136.79701, "t": 593.62131, "r": 150.64413, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 96, "text": "SELECT, INSERT, and UPDATE behavior with RCAC", "bbox": {"l": 156.18298, "t": 593.62131, "r": 394.7818, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 97, "text": ". . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 400.32065, "t": 593.62131, "r": 530.48358, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 98, "text": "22", "bbox": {"l": 536.0224, "t": 593.62131, "r": 547.1001, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 99, "text": "3.6", "bbox": {"l": 136.79701, "t": 606.16095, "r": 150.6642, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 100, "text": "Human resources example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.21107, "t": 606.16095, "r": 530.56512, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 101, "text": "22", "bbox": {"l": 536.112, "t": 606.16095, "r": 547.20575, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 102, "text": "3.6.1", "bbox": {"l": 151.19717, "t": 618.64082, "r": 173.41692, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 103, "text": "Assigning the QIBM_DB_SECADM function ID to the consultants. . . . . . . . . . . .", "bbox": {"l": 178.97185, "t": 618.64082, "r": 530.49139, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 104, "text": "23", "bbox": {"l": 536.04633, "t": 618.64082, "r": 547.15619, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 105, "text": "3.6.2", "bbox": {"l": 151.19717, "t": 631.1206999999999, "r": 173.32271, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 106, "text": "Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8541, "t": 631.1206999999999, "r": 530.56458, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 107, "text": "23", "bbox": {"l": 536.09601, "t": 631.1206999999999, "r": 547.15875, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 108, "text": "3.6.3", "bbox": {"l": 151.19717, "t": 643.66034, "r": 173.32227, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 109, "text": "Demonstrating data access without RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85353, "t": 643.66034, "r": 530.55695, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 110, "text": "24", "bbox": {"l": 536.0882, "t": 643.66034, "r": 547.15076, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 111, "text": "3.6.4", "bbox": {"l": 151.19717, "t": 656.14021, "r": 173.35289, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 112, "text": "Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89182, "t": 656.14021, "r": 530.53412, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 113, "text": "25", "bbox": {"l": 536.073, "t": 656.14021, "r": 547.15088, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 114, "text": "3.6.5", "bbox": {"l": 151.19717, "t": 668.62009, "r": 173.35289, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 115, "text": "Defining and creating column masks", "bbox": {"l": 178.89182, "t": 668.62009, "r": 339.45105, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 116, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.98996, "t": 668.62009, "r": 530.54413, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 117, "text": "26", "bbox": {"l": 536.08301, "t": 668.62009, "r": 547.16089, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 118, "text": "3.6.6", "bbox": {"l": 151.19717, "t": 681.15973, "r": 173.38359, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 119, "text": "Activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.93019, "t": 681.15973, "r": 530.54102, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 120, "text": "28", "bbox": {"l": 536.08765, "t": 681.15973, "r": 547.18085, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 121, "text": "3.6.7", "bbox": {"l": 151.19717, "t": 693.63961, "r": 173.32332, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 122, "text": "Demonstrating data access with RCAC", "bbox": {"l": 178.85486, "t": 693.63961, "r": 350.80011, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 123, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 356.33163, "t": 693.63961, "r": 530.57507, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 124, "text": "29", "bbox": {"l": 536.10663, "t": 693.63961, "r": 547.16968, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 125, "text": "3.6.8", "bbox": {"l": 151.19717, "t": 706.119492, "r": 173.44592, "b": 715.332497, "coord_origin": "TOPLEFT"}}, {"id": 126, "text": "Demonstrating data access with a view and RCAC . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00812, "t": 706.119492, "r": 530.43628, "b": 715.332497, "coord_origin": "TOPLEFT"}}, {"id": 127, "text": "32", "bbox": {"l": 535.99847, "t": 706.119492, "r": 547.12286, "b": 715.332497, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.751060485839844, "t": 754.6969604492188, "r": 257.24335, "b": 764.1015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9473134875297546, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 538.3257446289062, "t": 754.0830688476562, "r": 547.25928, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.892595112323761, "cells": [{"id": 1, "text": "iii", "bbox": {"l": 538.85999, "t": 754.848721, "r": 547.25928, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.6857681274414, "t": 73.01808166503906, "r": 168.73441, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9508246779441833, "cells": [{"id": 2, "text": "Contents", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 168.73441, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "table", "bbox": {"l": 136.15103149414062, "t": 132.03030395507812, "r": 549.84723, "b": 715.6527709960938, "coord_origin": "TOPLEFT"}, "confidence": 0.9803490042686462, "cells": [{"id": 3, "text": "Notices", "bbox": {"l": 136.8, "t": 132.64862000000005, "r": 172.89404, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii", "bbox": {"l": 175.01952, "t": 132.64862000000005, "r": 547.18982, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Trademarks", "bbox": {"l": 136.79901, "t": 145.12847999999997, "r": 189.86537, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 195.39685, "t": 145.12847999999997, "r": 530.05121, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "viii", "bbox": {"l": 535.5827, "t": 145.12847999999997, "r": 547.18286, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "DB2 for i Center of Excellence", "bbox": {"l": 136.79901, "t": 167.62811, "r": 279.39731, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix", "bbox": {"l": 280.61942, "t": 167.62811, "r": 547.1908, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Preface", "bbox": {"l": 136.79901, "t": 190.12775, "r": 172.84424, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "bbox": {"l": 175.01852, "t": 190.12775, "r": 547.18286, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "bbox": {"l": 136.79803, "t": 202.60760000000005, "r": 547.18085, "b": 211.82061999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Now you can become a published author, too!", "bbox": {"l": 136.79803, "t": 215.14721999999995, "r": 339.18292, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.71411, "t": 215.14721999999995, "r": 530.00812, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "xiii", "bbox": {"l": 535.53925, "t": 215.14721999999995, "r": 547.13879, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 136.79803, "t": 227.62707999999998, "r": 529.99506, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "xiii", "bbox": {"l": 535.5495, "t": 227.62707999999998, "r": 547.19788, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Stay connected to IBM Redbooks", "bbox": {"l": 136.79807, "t": 240.10693000000003, "r": 284.02866, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 289.54449, "t": 240.10693000000003, "r": 529.48242, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "xiv", "bbox": {"l": 534.99829, "t": 240.10693000000003, "r": 547.12115, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Chapter 1. Securing and protecting IBM DB2 data", "bbox": {"l": 136.79807, "t": 262.60657000000003, "r": 373.17566, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 375.11798, "t": 262.60657000000003, "r": 536.09589, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "1", "bbox": {"l": 541.64685, "t": 262.60657000000003, "r": 547.19781, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "1.1", "bbox": {"l": 136.79808, "t": 274.60637999999994, "r": 150.88702, "b": 283.8194, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Security fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2", "bbox": {"l": 156.5226, "t": 274.60637999999994, "r": 549.84723, "b": 283.8194, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "1.2", "bbox": {"l": 136.79807, "t": 287.14606000000003, "r": 150.62746, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Current state of IBM i security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.15923, "t": 287.14606000000003, "r": 536.12933, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "2", "bbox": {"l": 541.66113, "t": 287.14606000000003, "r": 547.19287, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "1.3", "bbox": {"l": 136.79807, "t": 299.62595, "r": 150.84943, "b": 308.83893, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "DB2 for i security controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3", "bbox": {"l": 156.46996, "t": 299.62595, "r": 549.84723, "b": 308.83893, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "1.3.1", "bbox": {"l": 151.1972, "t": 312.1058300000001, "r": 173.38289, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Existing row and column control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.92932, "t": 312.1058300000001, "r": 536.05511, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "4", "bbox": {"l": 541.6015, "t": 312.1058300000001, "r": 547.14795, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "1.3.2", "bbox": {"l": 151.1972, "t": 324.64548, "r": 173.4189, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "New controls: Row and Column Access Control. . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97432, "t": 324.64548, "r": 536.08008, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "5", "bbox": {"l": 541.6355, "t": 324.64548, "r": 547.19092, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Chapter 2. Roles and separation of duties", "bbox": {"l": 136.79704, "t": 347.14511, "r": 336.82071, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 338.99701, "t": 347.14511, "r": 536.09088, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "7", "bbox": {"l": 541.64282, "t": 347.14511, "r": 547.19476, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "2.1", "bbox": {"l": 136.79704, "t": 359.14493, "r": 150.644, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18277, "t": 359.14493, "r": 536.12714, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "8", "bbox": {"l": 541.66589, "t": 359.14493, "r": 547.20471, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "2.1.1", "bbox": {"l": 151.1972, "t": 371.62482, "r": 173.60995, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "DDM and DRDA application server access: QIBM_DB_DDMDRDA . . . . . . . . . . .", "bbox": {"l": 176.41154, "t": 371.62482, "r": 535.9527, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "8", "bbox": {"l": 541.55585, "t": 371.62482, "r": 547.15906, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "2.1.2", "bbox": {"l": 151.1972, "t": 384.10470999999995, "r": 173.41664, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Toolbox application server access: QIBM_DB_ZDA. . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97151, "t": 384.10470999999995, "r": 536.04108, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "8", "bbox": {"l": 541.59595, "t": 384.10470999999995, "r": 547.15082, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "2.1.3", "bbox": {"l": 151.1972, "t": 396.64435, "r": 173.41859, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Database Administrator function: QIBM_DB_SQLADM . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97394, "t": 396.64435, "r": 536.07489, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "9", "bbox": {"l": 541.63025, "t": 396.64435, "r": 547.18561, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "2.1.4", "bbox": {"l": 151.1972, "t": 409.12424000000004, "r": 173.38629, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "Database Information function: QIBM_DB_SYSMON", "bbox": {"l": 178.93356, "t": 409.12424000000004, "r": 411.27048, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": ". . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 416.81775, "t": 409.12424000000004, "r": 536.08411, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "9", "bbox": {"l": 541.63135, "t": 409.12424000000004, "r": 547.17865, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "2.1.5", "bbox": {"l": 151.1972, "t": 421.60413, "r": 173.44926, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "Security Administrator function: QIBM_DB_SECADM . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01228, "t": 421.60413, "r": 536.03589, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "9", "bbox": {"l": 541.59894, "t": 421.60413, "r": 547.16193, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "2.1.6", "bbox": {"l": 151.1972, "t": 434.1437700000001, "r": 173.32208, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Change Function Usage CL command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8533, "t": 434.1437700000001, "r": 530.57318, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "10", "bbox": {"l": 536.10443, "t": 434.1437700000001, "r": 547.16687, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "2.1.7", "bbox": {"l": 151.1972, "t": 446.62366, "r": 173.35822, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "Verifying function usage IDs for RCAC with the FUNCTION_USAGE view . . . . .", "bbox": {"l": 178.89848, "t": 446.62366, "r": 530.53522, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "10", "bbox": {"l": 536.0755, "t": 446.62366, "r": 547.15601, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "2.2", "bbox": {"l": 136.79704, "t": 459.10355, "r": 150.85457, "b": 468.31653, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "Separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10", "bbox": {"l": 156.47758, "t": 459.10355, "r": 547.25659, "b": 468.31653, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Chapter 3. Row and Column Access Control", "bbox": {"l": 136.79703, "t": 481.60318, "r": 348.68503, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 350.09741, "t": 481.60318, "r": 530.53961, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "13", "bbox": {"l": 536.09167, "t": 481.60318, "r": 547.1958, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "3.1", "bbox": {"l": 136.79703, "t": 493.603, "r": 150.70105, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "Explanation of RCAC and the concept of access control . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26266, "t": 493.603, "r": 530.4809, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "14", "bbox": {"l": 536.04248, "t": 493.603, "r": 547.16571, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "3.1.1", "bbox": {"l": 151.19719, "t": 506.14264, "r": 173.35429, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "Row permission and column mask definitions", "bbox": {"l": 178.89357, "t": 506.14264, "r": 378.20786, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 383.74713, "t": 506.14264, "r": 530.5379, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "14", "bbox": {"l": 536.07721, "t": 506.14264, "r": 547.15576, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "3.1.2", "bbox": {"l": 151.19719, "t": 518.62253, "r": 173.44292, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "Enabling and activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00435, "t": 518.62253, "r": 530.43475, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "16", "bbox": {"l": 535.99622, "t": 518.62253, "r": 547.11908, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "3.2", "bbox": {"l": 136.79703, "t": 531.1621700000001, "r": 150.64432, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "Special registers and built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18323, "t": 531.1621700000001, "r": 530.52808, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "18", "bbox": {"l": 536.06702, "t": 531.1621700000001, "r": 547.14484, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "3.2.1", "bbox": {"l": 151.19719, "t": 543.64204, "r": 173.41321, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "Special registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.96722, "t": 543.64204, "r": 530.49786, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "18", "bbox": {"l": 536.05188, "t": 543.64204, "r": 547.15991, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 86, "text": "3.2.2", "bbox": {"l": 151.19719, "t": 556.12192, "r": 173.35269, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 87, "text": "Built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89156, "t": 556.12192, "r": 530.56024, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 88, "text": "19", "bbox": {"l": 536.09912, "t": 556.12192, "r": 547.17688, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 89, "text": "3.3", "bbox": {"l": 136.79703, "t": 568.66156, "r": 150.62514, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 90, "text": "VERIFY_GROUP_FOR_USER function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.15639, "t": 568.66156, "r": 530.53027, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 91, "text": "20", "bbox": {"l": 536.06152, "t": 568.66156, "r": 547.12402, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 92, "text": "3.4", "bbox": {"l": 136.79703, "t": 581.14143, "r": 150.63004, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 93, "text": "Establishing and controlling accessibility by using the RCAC rule text . . . . . . . . . . . . .", "bbox": {"l": 156.16325, "t": 581.14143, "r": 530.62994, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 94, "text": "21", "bbox": {"l": 536.16315, "t": 581.14143, "r": 547.22955, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 95, "text": "3.5", "bbox": {"l": 136.79701, "t": 593.62131, "r": 150.64413, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 96, "text": "SELECT, INSERT, and UPDATE behavior with RCAC", "bbox": {"l": 156.18298, "t": 593.62131, "r": 394.7818, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 97, "text": ". . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 400.32065, "t": 593.62131, "r": 530.48358, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 98, "text": "22", "bbox": {"l": 536.0224, "t": 593.62131, "r": 547.1001, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 99, "text": "3.6", "bbox": {"l": 136.79701, "t": 606.16095, "r": 150.6642, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 100, "text": "Human resources example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.21107, "t": 606.16095, "r": 530.56512, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 101, "text": "22", "bbox": {"l": 536.112, "t": 606.16095, "r": 547.20575, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 102, "text": "3.6.1", "bbox": {"l": 151.19717, "t": 618.64082, "r": 173.41692, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 103, "text": "Assigning the QIBM_DB_SECADM function ID to the consultants. . . . . . . . . . . .", "bbox": {"l": 178.97185, "t": 618.64082, "r": 530.49139, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 104, "text": "23", "bbox": {"l": 536.04633, "t": 618.64082, "r": 547.15619, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 105, "text": "3.6.2", "bbox": {"l": 151.19717, "t": 631.1206999999999, "r": 173.32271, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 106, "text": "Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8541, "t": 631.1206999999999, "r": 530.56458, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 107, "text": "23", "bbox": {"l": 536.09601, "t": 631.1206999999999, "r": 547.15875, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 108, "text": "3.6.3", "bbox": {"l": 151.19717, "t": 643.66034, "r": 173.32227, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 109, "text": "Demonstrating data access without RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85353, "t": 643.66034, "r": 530.55695, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 110, "text": "24", "bbox": {"l": 536.0882, "t": 643.66034, "r": 547.15076, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 111, "text": "3.6.4", "bbox": {"l": 151.19717, "t": 656.14021, "r": 173.35289, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 112, "text": "Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89182, "t": 656.14021, "r": 530.53412, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 113, "text": "25", "bbox": {"l": 536.073, "t": 656.14021, "r": 547.15088, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 114, "text": "3.6.5", "bbox": {"l": 151.19717, "t": 668.62009, "r": 173.35289, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 115, "text": "Defining and creating column masks", "bbox": {"l": 178.89182, "t": 668.62009, "r": 339.45105, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 116, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.98996, "t": 668.62009, "r": 530.54413, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 117, "text": "26", "bbox": {"l": 536.08301, "t": 668.62009, "r": 547.16089, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 118, "text": "3.6.6", "bbox": {"l": 151.19717, "t": 681.15973, "r": 173.38359, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 119, "text": "Activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.93019, "t": 681.15973, "r": 530.54102, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 120, "text": "28", "bbox": {"l": 536.08765, "t": 681.15973, "r": 547.18085, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 121, "text": "3.6.7", "bbox": {"l": 151.19717, "t": 693.63961, "r": 173.32332, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 122, "text": "Demonstrating data access with RCAC", "bbox": {"l": 178.85486, "t": 693.63961, "r": 350.80011, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 123, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 356.33163, "t": 693.63961, "r": 530.57507, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 124, "text": "29", "bbox": {"l": 536.10663, "t": 693.63961, "r": 547.16968, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 125, "text": "3.6.8", "bbox": {"l": 151.19717, "t": 706.119492, "r": 173.44592, "b": 715.332497, "coord_origin": "TOPLEFT"}}, {"id": 126, "text": "Demonstrating data access with a view and RCAC . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00812, "t": 706.119492, "r": 530.43628, "b": 715.332497, "coord_origin": "TOPLEFT"}}, {"id": 127, "text": "32", "bbox": {"l": 535.99847, "t": 706.119492, "r": 547.12286, "b": 715.332497, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {"3": {"label": "table", "id": 3, "page_no": 1, "cluster": {"id": 3, "label": "table", "bbox": {"l": 136.15103149414062, "t": 132.03030395507812, "r": 549.84723, "b": 715.6527709960938, "coord_origin": "TOPLEFT"}, "confidence": 0.9803490042686462, "cells": [{"id": 3, "text": "Notices", "bbox": {"l": 136.8, "t": 132.64862000000005, "r": 172.89404, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii", "bbox": {"l": 175.01952, "t": 132.64862000000005, "r": 547.18982, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Trademarks", "bbox": {"l": 136.79901, "t": 145.12847999999997, "r": 189.86537, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 195.39685, "t": 145.12847999999997, "r": 530.05121, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "viii", "bbox": {"l": 535.5827, "t": 145.12847999999997, "r": 547.18286, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "DB2 for i Center of Excellence", "bbox": {"l": 136.79901, "t": 167.62811, "r": 279.39731, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix", "bbox": {"l": 280.61942, "t": 167.62811, "r": 547.1908, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Preface", "bbox": {"l": 136.79901, "t": 190.12775, "r": 172.84424, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "bbox": {"l": 175.01852, "t": 190.12775, "r": 547.18286, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "bbox": {"l": 136.79803, "t": 202.60760000000005, "r": 547.18085, "b": 211.82061999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Now you can become a published author, too!", "bbox": {"l": 136.79803, "t": 215.14721999999995, "r": 339.18292, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.71411, "t": 215.14721999999995, "r": 530.00812, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "xiii", "bbox": {"l": 535.53925, "t": 215.14721999999995, "r": 547.13879, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 136.79803, "t": 227.62707999999998, "r": 529.99506, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "xiii", "bbox": {"l": 535.5495, "t": 227.62707999999998, "r": 547.19788, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Stay connected to IBM Redbooks", "bbox": {"l": 136.79807, "t": 240.10693000000003, "r": 284.02866, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 289.54449, "t": 240.10693000000003, "r": 529.48242, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "xiv", "bbox": {"l": 534.99829, "t": 240.10693000000003, "r": 547.12115, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Chapter 1. Securing and protecting IBM DB2 data", "bbox": {"l": 136.79807, "t": 262.60657000000003, "r": 373.17566, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 375.11798, "t": 262.60657000000003, "r": 536.09589, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "1", "bbox": {"l": 541.64685, "t": 262.60657000000003, "r": 547.19781, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "1.1", "bbox": {"l": 136.79808, "t": 274.60637999999994, "r": 150.88702, "b": 283.8194, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Security fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2", "bbox": {"l": 156.5226, "t": 274.60637999999994, "r": 549.84723, "b": 283.8194, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "1.2", "bbox": {"l": 136.79807, "t": 287.14606000000003, "r": 150.62746, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Current state of IBM i security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.15923, "t": 287.14606000000003, "r": 536.12933, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "2", "bbox": {"l": 541.66113, "t": 287.14606000000003, "r": 547.19287, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "1.3", "bbox": {"l": 136.79807, "t": 299.62595, "r": 150.84943, "b": 308.83893, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "DB2 for i security controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3", "bbox": {"l": 156.46996, "t": 299.62595, "r": 549.84723, "b": 308.83893, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "1.3.1", "bbox": {"l": 151.1972, "t": 312.1058300000001, "r": 173.38289, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Existing row and column control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.92932, "t": 312.1058300000001, "r": 536.05511, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "4", "bbox": {"l": 541.6015, "t": 312.1058300000001, "r": 547.14795, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "1.3.2", "bbox": {"l": 151.1972, "t": 324.64548, "r": 173.4189, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "New controls: Row and Column Access Control. . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97432, "t": 324.64548, "r": 536.08008, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "5", "bbox": {"l": 541.6355, "t": 324.64548, "r": 547.19092, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Chapter 2. Roles and separation of duties", "bbox": {"l": 136.79704, "t": 347.14511, "r": 336.82071, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 338.99701, "t": 347.14511, "r": 536.09088, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "7", "bbox": {"l": 541.64282, "t": 347.14511, "r": 547.19476, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "2.1", "bbox": {"l": 136.79704, "t": 359.14493, "r": 150.644, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18277, "t": 359.14493, "r": 536.12714, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "8", "bbox": {"l": 541.66589, "t": 359.14493, "r": 547.20471, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "2.1.1", "bbox": {"l": 151.1972, "t": 371.62482, "r": 173.60995, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "DDM and DRDA application server access: QIBM_DB_DDMDRDA . . . . . . . . . . .", "bbox": {"l": 176.41154, "t": 371.62482, "r": 535.9527, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "8", "bbox": {"l": 541.55585, "t": 371.62482, "r": 547.15906, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "2.1.2", "bbox": {"l": 151.1972, "t": 384.10470999999995, "r": 173.41664, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Toolbox application server access: QIBM_DB_ZDA. . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97151, "t": 384.10470999999995, "r": 536.04108, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "8", "bbox": {"l": 541.59595, "t": 384.10470999999995, "r": 547.15082, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "2.1.3", "bbox": {"l": 151.1972, "t": 396.64435, "r": 173.41859, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Database Administrator function: QIBM_DB_SQLADM . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97394, "t": 396.64435, "r": 536.07489, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "9", "bbox": {"l": 541.63025, "t": 396.64435, "r": 547.18561, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "2.1.4", "bbox": {"l": 151.1972, "t": 409.12424000000004, "r": 173.38629, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "Database Information function: QIBM_DB_SYSMON", "bbox": {"l": 178.93356, "t": 409.12424000000004, "r": 411.27048, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": ". . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 416.81775, "t": 409.12424000000004, "r": 536.08411, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "9", "bbox": {"l": 541.63135, "t": 409.12424000000004, "r": 547.17865, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "2.1.5", "bbox": {"l": 151.1972, "t": 421.60413, "r": 173.44926, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "Security Administrator function: QIBM_DB_SECADM . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01228, "t": 421.60413, "r": 536.03589, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "9", "bbox": {"l": 541.59894, "t": 421.60413, "r": 547.16193, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "2.1.6", "bbox": {"l": 151.1972, "t": 434.1437700000001, "r": 173.32208, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Change Function Usage CL command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8533, "t": 434.1437700000001, "r": 530.57318, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "10", "bbox": {"l": 536.10443, "t": 434.1437700000001, "r": 547.16687, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "2.1.7", "bbox": {"l": 151.1972, "t": 446.62366, "r": 173.35822, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "Verifying function usage IDs for RCAC with the FUNCTION_USAGE view . . . . .", "bbox": {"l": 178.89848, "t": 446.62366, "r": 530.53522, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "10", "bbox": {"l": 536.0755, "t": 446.62366, "r": 547.15601, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "2.2", "bbox": {"l": 136.79704, "t": 459.10355, "r": 150.85457, "b": 468.31653, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "Separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10", "bbox": {"l": 156.47758, "t": 459.10355, "r": 547.25659, "b": 468.31653, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Chapter 3. Row and Column Access Control", "bbox": {"l": 136.79703, "t": 481.60318, "r": 348.68503, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 350.09741, "t": 481.60318, "r": 530.53961, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "13", "bbox": {"l": 536.09167, "t": 481.60318, "r": 547.1958, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "3.1", "bbox": {"l": 136.79703, "t": 493.603, "r": 150.70105, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "Explanation of RCAC and the concept of access control . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26266, "t": 493.603, "r": 530.4809, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "14", "bbox": {"l": 536.04248, "t": 493.603, "r": 547.16571, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "3.1.1", "bbox": {"l": 151.19719, "t": 506.14264, "r": 173.35429, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "Row permission and column mask definitions", "bbox": {"l": 178.89357, "t": 506.14264, "r": 378.20786, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 383.74713, "t": 506.14264, "r": 530.5379, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "14", "bbox": {"l": 536.07721, "t": 506.14264, "r": 547.15576, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "3.1.2", "bbox": {"l": 151.19719, "t": 518.62253, "r": 173.44292, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "Enabling and activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00435, "t": 518.62253, "r": 530.43475, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "16", "bbox": {"l": 535.99622, "t": 518.62253, "r": 547.11908, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "3.2", "bbox": {"l": 136.79703, "t": 531.1621700000001, "r": 150.64432, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "Special registers and built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18323, "t": 531.1621700000001, "r": 530.52808, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "18", "bbox": {"l": 536.06702, "t": 531.1621700000001, "r": 547.14484, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "3.2.1", "bbox": {"l": 151.19719, "t": 543.64204, "r": 173.41321, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "Special registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.96722, "t": 543.64204, "r": 530.49786, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "18", "bbox": {"l": 536.05188, "t": 543.64204, "r": 547.15991, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 86, "text": "3.2.2", "bbox": {"l": 151.19719, "t": 556.12192, "r": 173.35269, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 87, "text": "Built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89156, "t": 556.12192, "r": 530.56024, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 88, "text": "19", "bbox": {"l": 536.09912, "t": 556.12192, "r": 547.17688, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 89, "text": "3.3", "bbox": {"l": 136.79703, "t": 568.66156, "r": 150.62514, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 90, "text": "VERIFY_GROUP_FOR_USER function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.15639, "t": 568.66156, "r": 530.53027, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 91, "text": "20", "bbox": {"l": 536.06152, "t": 568.66156, "r": 547.12402, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 92, "text": "3.4", "bbox": {"l": 136.79703, "t": 581.14143, "r": 150.63004, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 93, "text": "Establishing and controlling accessibility by using the RCAC rule text . . . . . . . . . . . . .", "bbox": {"l": 156.16325, "t": 581.14143, "r": 530.62994, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 94, "text": "21", "bbox": {"l": 536.16315, "t": 581.14143, "r": 547.22955, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 95, "text": "3.5", "bbox": {"l": 136.79701, "t": 593.62131, "r": 150.64413, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 96, "text": "SELECT, INSERT, and UPDATE behavior with RCAC", "bbox": {"l": 156.18298, "t": 593.62131, "r": 394.7818, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 97, "text": ". . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 400.32065, "t": 593.62131, "r": 530.48358, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 98, "text": "22", "bbox": {"l": 536.0224, "t": 593.62131, "r": 547.1001, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 99, "text": "3.6", "bbox": {"l": 136.79701, "t": 606.16095, "r": 150.6642, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 100, "text": "Human resources example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.21107, "t": 606.16095, "r": 530.56512, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 101, "text": "22", "bbox": {"l": 536.112, "t": 606.16095, "r": 547.20575, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 102, "text": "3.6.1", "bbox": {"l": 151.19717, "t": 618.64082, "r": 173.41692, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 103, "text": "Assigning the QIBM_DB_SECADM function ID to the consultants. . . . . . . . . . . .", "bbox": {"l": 178.97185, "t": 618.64082, "r": 530.49139, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 104, "text": "23", "bbox": {"l": 536.04633, "t": 618.64082, "r": 547.15619, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 105, "text": "3.6.2", "bbox": {"l": 151.19717, "t": 631.1206999999999, "r": 173.32271, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 106, "text": "Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8541, "t": 631.1206999999999, "r": 530.56458, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 107, "text": "23", "bbox": {"l": 536.09601, "t": 631.1206999999999, "r": 547.15875, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 108, "text": "3.6.3", "bbox": {"l": 151.19717, "t": 643.66034, "r": 173.32227, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 109, "text": "Demonstrating data access without RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85353, "t": 643.66034, "r": 530.55695, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 110, "text": "24", "bbox": {"l": 536.0882, "t": 643.66034, "r": 547.15076, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 111, "text": "3.6.4", "bbox": {"l": 151.19717, "t": 656.14021, "r": 173.35289, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 112, "text": "Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89182, "t": 656.14021, "r": 530.53412, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 113, "text": "25", "bbox": {"l": 536.073, "t": 656.14021, "r": 547.15088, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 114, "text": "3.6.5", "bbox": {"l": 151.19717, "t": 668.62009, "r": 173.35289, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 115, "text": "Defining and creating column masks", "bbox": {"l": 178.89182, "t": 668.62009, "r": 339.45105, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 116, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.98996, "t": 668.62009, "r": 530.54413, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 117, "text": "26", "bbox": {"l": 536.08301, "t": 668.62009, "r": 547.16089, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 118, "text": "3.6.6", "bbox": {"l": 151.19717, "t": 681.15973, "r": 173.38359, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 119, "text": "Activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.93019, "t": 681.15973, "r": 530.54102, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 120, "text": "28", "bbox": {"l": 536.08765, "t": 681.15973, "r": 547.18085, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 121, "text": "3.6.7", "bbox": {"l": 151.19717, "t": 693.63961, "r": 173.32332, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 122, "text": "Demonstrating data access with RCAC", "bbox": {"l": 178.85486, "t": 693.63961, "r": 350.80011, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 123, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 356.33163, "t": 693.63961, "r": 530.57507, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 124, "text": "29", "bbox": {"l": 536.10663, "t": 693.63961, "r": 547.16968, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 125, "text": "3.6.8", "bbox": {"l": 151.19717, "t": 706.119492, "r": 173.44592, "b": 715.332497, "coord_origin": "TOPLEFT"}}, {"id": 126, "text": "Demonstrating data access with a view and RCAC . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00812, "t": 706.119492, "r": 530.43628, "b": 715.332497, "coord_origin": "TOPLEFT"}}, {"id": 127, "text": "32", "bbox": {"l": 535.99847, "t": 706.119492, "r": 547.12286, "b": 715.332497, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl"], "num_rows": 43, "num_cols": 2, "table_cells": [{"bbox": {"l": 136.8, "t": 132.64862000000005, "r": 172.89404, "b": 141.86163, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Notices", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 175.01952, "t": 132.64862000000005, "r": 547.18982, "b": 141.86163, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79901, "t": 145.12847999999997, "r": 189.86537, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Trademarks", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 195.39685, "t": 145.12847999999997, "r": 547.18286, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79901, "t": 167.62811, "r": 279.39731, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "DB2 for i Center of Excellence", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 280.61942, "t": 167.62811, "r": 547.1908, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79901, "t": 190.12775, "r": 172.84424, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Preface", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 175.01852, "t": 190.12775, "r": 547.18286, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79803, "t": 202.60760000000005, "r": 547.18085, "b": 211.82061999999996, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79803, "t": 215.14721999999995, "r": 339.18292, "b": 224.36023, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Now you can become a published author, too!", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 344.71411, "t": 215.14721999999995, "r": 547.13879, "b": 224.36023, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79803, "t": 227.62707999999998, "r": 529.99506, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 535.5495, "t": 227.62707999999998, "r": 547.19788, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "xiii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79807, "t": 240.10693000000003, "r": 284.02866, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Stay connected to IBM Redbooks", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.54449, "t": 240.10693000000003, "r": 547.12115, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79807, "t": 262.60657000000003, "r": 536.09589, "b": 271.81958, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 1. Securing and protecting IBM DB2 data . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.64685, "t": 262.60657000000003, "r": 547.19781, "b": 271.81958, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "1", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79808, "t": 274.60637999999994, "r": 549.84723, "b": 283.8194, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.1 Security fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79807, "t": 287.14606000000003, "r": 536.12933, "b": 296.35904, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.2 Current state of IBM i security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.66113, "t": 287.14606000000003, "r": 547.19287, "b": 296.35904, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "2", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79807, "t": 299.62595, "r": 549.84723, "b": 308.83893, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.3 DB2 for i security controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 312.1058300000001, "r": 536.05511, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.3.1 Existing row and column control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.6015, "t": 312.1058300000001, "r": 547.14795, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "4", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 324.64548, "r": 536.08008, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.3.2 New controls: Row and Column Access Control. . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.6355, "t": 324.64548, "r": 547.19092, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "5", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79704, "t": 347.14511, "r": 536.09088, "b": 356.35809, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 2. Roles and separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.64282, "t": 347.14511, "r": 547.19476, "b": 356.35809, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "7", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79704, "t": 359.14493, "r": 536.12714, "b": 368.35791, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1 Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.66589, "t": 359.14493, "r": 547.20471, "b": 368.35791, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "8", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 371.62482, "r": 535.9527, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.1 DDM and DRDA application server access: QIBM_DB_DDMDRDA . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.55585, "t": 371.62482, "r": 547.15906, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "8", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 384.10470999999995, "r": 536.04108, "b": 393.31769, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.2 Toolbox application server access: QIBM_DB_ZDA. . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.59595, "t": 384.10470999999995, "r": 547.15082, "b": 393.31769, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "8", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 396.64435, "r": 536.07489, "b": 405.85733, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.3 Database Administrator function: QIBM_DB_SQLADM . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.63025, "t": 396.64435, "r": 547.18561, "b": 405.85733, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "9", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 409.12424000000004, "r": 411.27048, "b": 418.33722, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.4 Database Information function: QIBM_DB_SYSMON", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 416.81775, "t": 409.12424000000004, "r": 547.17865, "b": 418.33722, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . 9", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 421.60413, "r": 536.03589, "b": 430.81711, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.5 Security Administrator function: QIBM_DB_SECADM . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.59894, "t": 421.60413, "r": 547.16193, "b": 430.81711, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "9", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 434.1437700000001, "r": 530.57318, "b": 443.35675, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.6 Change Function Usage CL command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.10443, "t": 434.1437700000001, "r": 547.16687, "b": 443.35675, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 446.62366, "r": 530.53522, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 22, "end_row_offset_idx": 23, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.7 Verifying function usage IDs for RCAC with the FUNCTION_USAGE view . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0755, "t": 446.62366, "r": 547.15601, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 22, "end_row_offset_idx": 23, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79704, "t": 459.10355, "r": 547.25659, "b": 468.31653, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 23, "end_row_offset_idx": 24, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.2 Separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 481.60318, "r": 530.53961, "b": 490.81616, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 24, "end_row_offset_idx": 25, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 3. Row and Column Access Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.09167, "t": 481.60318, "r": 547.1958, "b": 490.81616, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 24, "end_row_offset_idx": 25, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "13", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 493.603, "r": 530.4809, "b": 502.81598, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 25, "end_row_offset_idx": 26, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.1 Explanation of RCAC and the concept of access control . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.04248, "t": 493.603, "r": 547.16571, "b": 502.81598, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 25, "end_row_offset_idx": 26, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "14", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19719, "t": 506.14264, "r": 378.20786, "b": 515.35562, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 26, "end_row_offset_idx": 27, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.1.1 Row permission and column mask definitions", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 383.74713, "t": 506.14264, "r": 547.15576, "b": 515.35562, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 26, "end_row_offset_idx": 27, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . 14", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19719, "t": 518.62253, "r": 530.43475, "b": 527.83551, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 27, "end_row_offset_idx": 28, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.1.2 Enabling and activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 535.99622, "t": 518.62253, "r": 547.11908, "b": 527.83551, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 27, "end_row_offset_idx": 28, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "16", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 531.1621700000001, "r": 530.52808, "b": 540.37517, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 28, "end_row_offset_idx": 29, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.2 Special registers and built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.06702, "t": 531.1621700000001, "r": 547.14484, "b": 540.37517, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 28, "end_row_offset_idx": 29, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "18", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19719, "t": 543.64204, "r": 530.49786, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 29, "end_row_offset_idx": 30, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.2.1 Special registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.05188, "t": 543.64204, "r": 547.15991, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 29, "end_row_offset_idx": 30, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "18", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19719, "t": 556.12192, "r": 530.56024, "b": 565.33492, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 30, "end_row_offset_idx": 31, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.2.2 Built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.09912, "t": 556.12192, "r": 547.17688, "b": 565.33492, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 30, "end_row_offset_idx": 31, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "19", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 568.66156, "r": 530.53027, "b": 577.87456, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 31, "end_row_offset_idx": 32, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.3 VERIFY_GROUP_FOR_USER function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.06152, "t": 568.66156, "r": 547.12402, "b": 577.87456, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 31, "end_row_offset_idx": 32, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "20", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 581.14143, "r": 530.62994, "b": 590.35443, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 32, "end_row_offset_idx": 33, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.4 Establishing and controlling accessibility by using the RCAC rule text . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.16315, "t": 581.14143, "r": 547.22955, "b": 590.35443, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 32, "end_row_offset_idx": 33, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "21", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79701, "t": 593.62131, "r": 394.7818, "b": 602.8343, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 34, "end_row_offset_idx": 35, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.5 SELECT, INSERT, and UPDATE behavior with RCAC", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 400.32065, "t": 593.62131, "r": 547.1001, "b": 602.8343, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 33, "end_row_offset_idx": 34, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . 22", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 618.64082, "r": 530.49139, "b": 627.85382, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 35, "end_row_offset_idx": 36, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.1 Assigning the QIBM_DB_SECADM function ID to the consultants. . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.04633, "t": 618.64082, "r": 547.15619, "b": 627.85382, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 35, "end_row_offset_idx": 36, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "23", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 631.1206999999999, "r": 530.56458, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 36, "end_row_offset_idx": 37, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.2 Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.09601, "t": 631.1206999999999, "r": 547.15875, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 36, "end_row_offset_idx": 37, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "23", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 643.66034, "r": 530.55695, "b": 652.87334, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 37, "end_row_offset_idx": 38, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.3 Demonstrating data access without RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0882, "t": 643.66034, "r": 547.15076, "b": 652.87334, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 37, "end_row_offset_idx": 38, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "24", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 656.14021, "r": 530.53412, "b": 665.35321, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 38, "end_row_offset_idx": 39, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.4 Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.073, "t": 656.14021, "r": 547.15088, "b": 665.35321, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 38, "end_row_offset_idx": 39, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "25", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 668.62009, "r": 339.45105, "b": 677.83309, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 39, "end_row_offset_idx": 40, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.5 Defining and creating column masks", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 344.98996, "t": 668.62009, "r": 547.16089, "b": 677.83309, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 39, "end_row_offset_idx": 40, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 681.15973, "r": 530.54102, "b": 690.37273, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 40, "end_row_offset_idx": 41, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.6 Activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.08765, "t": 681.15973, "r": 547.18085, "b": 690.37273, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 40, "end_row_offset_idx": 41, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "28", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 693.63961, "r": 530.57507, "b": 702.852615, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 41, "end_row_offset_idx": 42, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.7 Demonstrating data access with RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.10663, "t": 693.63961, "r": 547.16968, "b": 702.852615, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 41, "end_row_offset_idx": 42, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "29", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 706.119492, "r": 530.43628, "b": 715.332497, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 42, "end_row_offset_idx": 43, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.8 Demonstrating data access with a view and RCAC . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 535.99847, "t": 706.119492, "r": 547.12286, "b": 715.332497, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 42, "end_row_offset_idx": 43, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "32", "column_header": false, "row_header": false, "row_section": false}]}}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 1, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.751060485839844, "t": 754.6969604492188, "r": 257.24335, "b": 764.1015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9473134875297546, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 1, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 538.3257446289062, "t": 754.0830688476562, "r": 547.25928, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.892595112323761, "cells": [{"id": 1, "text": "iii", "bbox": {"l": 538.85999, "t": 754.848721, "r": 547.25928, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "iii"}, {"label": "section_header", "id": 2, "page_no": 1, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.6857681274414, "t": 73.01808166503906, "r": 168.73441, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9508246779441833, "cells": [{"id": 2, "text": "Contents", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 168.73441, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Contents"}, {"label": "table", "id": 3, "page_no": 1, "cluster": {"id": 3, "label": "table", "bbox": {"l": 136.15103149414062, "t": 132.03030395507812, "r": 549.84723, "b": 715.6527709960938, "coord_origin": "TOPLEFT"}, "confidence": 0.9803490042686462, "cells": [{"id": 3, "text": "Notices", "bbox": {"l": 136.8, "t": 132.64862000000005, "r": 172.89404, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii", "bbox": {"l": 175.01952, "t": 132.64862000000005, "r": 547.18982, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Trademarks", "bbox": {"l": 136.79901, "t": 145.12847999999997, "r": 189.86537, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 195.39685, "t": 145.12847999999997, "r": 530.05121, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "viii", "bbox": {"l": 535.5827, "t": 145.12847999999997, "r": 547.18286, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "DB2 for i Center of Excellence", "bbox": {"l": 136.79901, "t": 167.62811, "r": 279.39731, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix", "bbox": {"l": 280.61942, "t": 167.62811, "r": 547.1908, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Preface", "bbox": {"l": 136.79901, "t": 190.12775, "r": 172.84424, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "bbox": {"l": 175.01852, "t": 190.12775, "r": 547.18286, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "bbox": {"l": 136.79803, "t": 202.60760000000005, "r": 547.18085, "b": 211.82061999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Now you can become a published author, too!", "bbox": {"l": 136.79803, "t": 215.14721999999995, "r": 339.18292, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.71411, "t": 215.14721999999995, "r": 530.00812, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "xiii", "bbox": {"l": 535.53925, "t": 215.14721999999995, "r": 547.13879, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 136.79803, "t": 227.62707999999998, "r": 529.99506, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "xiii", "bbox": {"l": 535.5495, "t": 227.62707999999998, "r": 547.19788, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Stay connected to IBM Redbooks", "bbox": {"l": 136.79807, "t": 240.10693000000003, "r": 284.02866, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 289.54449, "t": 240.10693000000003, "r": 529.48242, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "xiv", "bbox": {"l": 534.99829, "t": 240.10693000000003, "r": 547.12115, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Chapter 1. Securing and protecting IBM DB2 data", "bbox": {"l": 136.79807, "t": 262.60657000000003, "r": 373.17566, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 375.11798, "t": 262.60657000000003, "r": 536.09589, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "1", "bbox": {"l": 541.64685, "t": 262.60657000000003, "r": 547.19781, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "1.1", "bbox": {"l": 136.79808, "t": 274.60637999999994, "r": 150.88702, "b": 283.8194, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Security fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2", "bbox": {"l": 156.5226, "t": 274.60637999999994, "r": 549.84723, "b": 283.8194, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "1.2", "bbox": {"l": 136.79807, "t": 287.14606000000003, "r": 150.62746, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Current state of IBM i security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.15923, "t": 287.14606000000003, "r": 536.12933, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "2", "bbox": {"l": 541.66113, "t": 287.14606000000003, "r": 547.19287, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "1.3", "bbox": {"l": 136.79807, "t": 299.62595, "r": 150.84943, "b": 308.83893, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "DB2 for i security controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3", "bbox": {"l": 156.46996, "t": 299.62595, "r": 549.84723, "b": 308.83893, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "1.3.1", "bbox": {"l": 151.1972, "t": 312.1058300000001, "r": 173.38289, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Existing row and column control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.92932, "t": 312.1058300000001, "r": 536.05511, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "4", "bbox": {"l": 541.6015, "t": 312.1058300000001, "r": 547.14795, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "1.3.2", "bbox": {"l": 151.1972, "t": 324.64548, "r": 173.4189, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "New controls: Row and Column Access Control. . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97432, "t": 324.64548, "r": 536.08008, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "5", "bbox": {"l": 541.6355, "t": 324.64548, "r": 547.19092, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Chapter 2. Roles and separation of duties", "bbox": {"l": 136.79704, "t": 347.14511, "r": 336.82071, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 338.99701, "t": 347.14511, "r": 536.09088, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "7", "bbox": {"l": 541.64282, "t": 347.14511, "r": 547.19476, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "2.1", "bbox": {"l": 136.79704, "t": 359.14493, "r": 150.644, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18277, "t": 359.14493, "r": 536.12714, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "8", "bbox": {"l": 541.66589, "t": 359.14493, "r": 547.20471, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "2.1.1", "bbox": {"l": 151.1972, "t": 371.62482, "r": 173.60995, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "DDM and DRDA application server access: QIBM_DB_DDMDRDA . . . . . . . . . . .", "bbox": {"l": 176.41154, "t": 371.62482, "r": 535.9527, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "8", "bbox": {"l": 541.55585, "t": 371.62482, "r": 547.15906, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "2.1.2", "bbox": {"l": 151.1972, "t": 384.10470999999995, "r": 173.41664, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Toolbox application server access: QIBM_DB_ZDA. . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97151, "t": 384.10470999999995, "r": 536.04108, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "8", "bbox": {"l": 541.59595, "t": 384.10470999999995, "r": 547.15082, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "2.1.3", "bbox": {"l": 151.1972, "t": 396.64435, "r": 173.41859, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Database Administrator function: QIBM_DB_SQLADM . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97394, "t": 396.64435, "r": 536.07489, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "9", "bbox": {"l": 541.63025, "t": 396.64435, "r": 547.18561, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "2.1.4", "bbox": {"l": 151.1972, "t": 409.12424000000004, "r": 173.38629, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "Database Information function: QIBM_DB_SYSMON", "bbox": {"l": 178.93356, "t": 409.12424000000004, "r": 411.27048, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": ". . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 416.81775, "t": 409.12424000000004, "r": 536.08411, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "9", "bbox": {"l": 541.63135, "t": 409.12424000000004, "r": 547.17865, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "2.1.5", "bbox": {"l": 151.1972, "t": 421.60413, "r": 173.44926, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "Security Administrator function: QIBM_DB_SECADM . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01228, "t": 421.60413, "r": 536.03589, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "9", "bbox": {"l": 541.59894, "t": 421.60413, "r": 547.16193, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "2.1.6", "bbox": {"l": 151.1972, "t": 434.1437700000001, "r": 173.32208, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Change Function Usage CL command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8533, "t": 434.1437700000001, "r": 530.57318, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "10", "bbox": {"l": 536.10443, "t": 434.1437700000001, "r": 547.16687, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "2.1.7", "bbox": {"l": 151.1972, "t": 446.62366, "r": 173.35822, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "Verifying function usage IDs for RCAC with the FUNCTION_USAGE view . . . . .", "bbox": {"l": 178.89848, "t": 446.62366, "r": 530.53522, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "10", "bbox": {"l": 536.0755, "t": 446.62366, "r": 547.15601, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "2.2", "bbox": {"l": 136.79704, "t": 459.10355, "r": 150.85457, "b": 468.31653, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "Separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10", "bbox": {"l": 156.47758, "t": 459.10355, "r": 547.25659, "b": 468.31653, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Chapter 3. Row and Column Access Control", "bbox": {"l": 136.79703, "t": 481.60318, "r": 348.68503, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 350.09741, "t": 481.60318, "r": 530.53961, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "13", "bbox": {"l": 536.09167, "t": 481.60318, "r": 547.1958, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "3.1", "bbox": {"l": 136.79703, "t": 493.603, "r": 150.70105, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "Explanation of RCAC and the concept of access control . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26266, "t": 493.603, "r": 530.4809, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "14", "bbox": {"l": 536.04248, "t": 493.603, "r": 547.16571, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "3.1.1", "bbox": {"l": 151.19719, "t": 506.14264, "r": 173.35429, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "Row permission and column mask definitions", "bbox": {"l": 178.89357, "t": 506.14264, "r": 378.20786, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 383.74713, "t": 506.14264, "r": 530.5379, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "14", "bbox": {"l": 536.07721, "t": 506.14264, "r": 547.15576, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "3.1.2", "bbox": {"l": 151.19719, "t": 518.62253, "r": 173.44292, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "Enabling and activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00435, "t": 518.62253, "r": 530.43475, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "16", "bbox": {"l": 535.99622, "t": 518.62253, "r": 547.11908, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "3.2", "bbox": {"l": 136.79703, "t": 531.1621700000001, "r": 150.64432, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "Special registers and built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18323, "t": 531.1621700000001, "r": 530.52808, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "18", "bbox": {"l": 536.06702, "t": 531.1621700000001, "r": 547.14484, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "3.2.1", "bbox": {"l": 151.19719, "t": 543.64204, "r": 173.41321, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "Special registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.96722, "t": 543.64204, "r": 530.49786, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "18", "bbox": {"l": 536.05188, "t": 543.64204, "r": 547.15991, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 86, "text": "3.2.2", "bbox": {"l": 151.19719, "t": 556.12192, "r": 173.35269, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 87, "text": "Built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89156, "t": 556.12192, "r": 530.56024, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 88, "text": "19", "bbox": {"l": 536.09912, "t": 556.12192, "r": 547.17688, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 89, "text": "3.3", "bbox": {"l": 136.79703, "t": 568.66156, "r": 150.62514, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 90, "text": "VERIFY_GROUP_FOR_USER function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.15639, "t": 568.66156, "r": 530.53027, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 91, "text": "20", "bbox": {"l": 536.06152, "t": 568.66156, "r": 547.12402, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 92, "text": "3.4", "bbox": {"l": 136.79703, "t": 581.14143, "r": 150.63004, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 93, "text": "Establishing and controlling accessibility by using the RCAC rule text . . . . . . . . . . . . .", "bbox": {"l": 156.16325, "t": 581.14143, "r": 530.62994, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 94, "text": "21", "bbox": {"l": 536.16315, "t": 581.14143, "r": 547.22955, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 95, "text": "3.5", "bbox": {"l": 136.79701, "t": 593.62131, "r": 150.64413, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 96, "text": "SELECT, INSERT, and UPDATE behavior with RCAC", "bbox": {"l": 156.18298, "t": 593.62131, "r": 394.7818, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 97, "text": ". . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 400.32065, "t": 593.62131, "r": 530.48358, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 98, "text": "22", "bbox": {"l": 536.0224, "t": 593.62131, "r": 547.1001, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 99, "text": "3.6", "bbox": {"l": 136.79701, "t": 606.16095, "r": 150.6642, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 100, "text": "Human resources example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.21107, "t": 606.16095, "r": 530.56512, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 101, "text": "22", "bbox": {"l": 536.112, "t": 606.16095, "r": 547.20575, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 102, "text": "3.6.1", "bbox": {"l": 151.19717, "t": 618.64082, "r": 173.41692, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 103, "text": "Assigning the QIBM_DB_SECADM function ID to the consultants. . . . . . . . . . . .", "bbox": {"l": 178.97185, "t": 618.64082, "r": 530.49139, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 104, "text": "23", "bbox": {"l": 536.04633, "t": 618.64082, "r": 547.15619, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 105, "text": "3.6.2", "bbox": {"l": 151.19717, "t": 631.1206999999999, "r": 173.32271, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 106, "text": "Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8541, "t": 631.1206999999999, "r": 530.56458, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 107, "text": "23", "bbox": {"l": 536.09601, "t": 631.1206999999999, "r": 547.15875, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 108, "text": "3.6.3", "bbox": {"l": 151.19717, "t": 643.66034, "r": 173.32227, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 109, "text": "Demonstrating data access without RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85353, "t": 643.66034, "r": 530.55695, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 110, "text": "24", "bbox": {"l": 536.0882, "t": 643.66034, "r": 547.15076, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 111, "text": "3.6.4", "bbox": {"l": 151.19717, "t": 656.14021, "r": 173.35289, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 112, "text": "Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89182, "t": 656.14021, "r": 530.53412, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 113, "text": "25", "bbox": {"l": 536.073, "t": 656.14021, "r": 547.15088, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 114, "text": "3.6.5", "bbox": {"l": 151.19717, "t": 668.62009, "r": 173.35289, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 115, "text": "Defining and creating column masks", "bbox": {"l": 178.89182, "t": 668.62009, "r": 339.45105, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 116, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.98996, "t": 668.62009, "r": 530.54413, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 117, "text": "26", "bbox": {"l": 536.08301, "t": 668.62009, "r": 547.16089, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 118, "text": "3.6.6", "bbox": {"l": 151.19717, "t": 681.15973, "r": 173.38359, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 119, "text": "Activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.93019, "t": 681.15973, "r": 530.54102, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 120, "text": "28", "bbox": {"l": 536.08765, "t": 681.15973, "r": 547.18085, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 121, "text": "3.6.7", "bbox": {"l": 151.19717, "t": 693.63961, "r": 173.32332, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 122, "text": "Demonstrating data access with RCAC", "bbox": {"l": 178.85486, "t": 693.63961, "r": 350.80011, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 123, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 356.33163, "t": 693.63961, "r": 530.57507, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 124, "text": "29", "bbox": {"l": 536.10663, "t": 693.63961, "r": 547.16968, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 125, "text": "3.6.8", "bbox": {"l": 151.19717, "t": 706.119492, "r": 173.44592, "b": 715.332497, "coord_origin": "TOPLEFT"}}, {"id": 126, "text": "Demonstrating data access with a view and RCAC . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00812, "t": 706.119492, "r": 530.43628, "b": 715.332497, "coord_origin": "TOPLEFT"}}, {"id": 127, "text": "32", "bbox": {"l": 535.99847, "t": 706.119492, "r": 547.12286, "b": 715.332497, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl"], "num_rows": 43, "num_cols": 2, "table_cells": [{"bbox": {"l": 136.8, "t": 132.64862000000005, "r": 172.89404, "b": 141.86163, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Notices", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 175.01952, "t": 132.64862000000005, "r": 547.18982, "b": 141.86163, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79901, "t": 145.12847999999997, "r": 189.86537, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Trademarks", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 195.39685, "t": 145.12847999999997, "r": 547.18286, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79901, "t": 167.62811, "r": 279.39731, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "DB2 for i Center of Excellence", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 280.61942, "t": 167.62811, "r": 547.1908, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79901, "t": 190.12775, "r": 172.84424, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Preface", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 175.01852, "t": 190.12775, "r": 547.18286, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79803, "t": 202.60760000000005, "r": 547.18085, "b": 211.82061999999996, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79803, "t": 215.14721999999995, "r": 339.18292, "b": 224.36023, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Now you can become a published author, too!", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 344.71411, "t": 215.14721999999995, "r": 547.13879, "b": 224.36023, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79803, "t": 227.62707999999998, "r": 529.99506, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 535.5495, "t": 227.62707999999998, "r": 547.19788, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "xiii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79807, "t": 240.10693000000003, "r": 284.02866, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Stay connected to IBM Redbooks", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.54449, "t": 240.10693000000003, "r": 547.12115, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79807, "t": 262.60657000000003, "r": 536.09589, "b": 271.81958, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 1. Securing and protecting IBM DB2 data . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.64685, "t": 262.60657000000003, "r": 547.19781, "b": 271.81958, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "1", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79808, "t": 274.60637999999994, "r": 549.84723, "b": 283.8194, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.1 Security fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79807, "t": 287.14606000000003, "r": 536.12933, "b": 296.35904, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.2 Current state of IBM i security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.66113, "t": 287.14606000000003, "r": 547.19287, "b": 296.35904, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "2", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79807, "t": 299.62595, "r": 549.84723, "b": 308.83893, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.3 DB2 for i security controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 312.1058300000001, "r": 536.05511, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.3.1 Existing row and column control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.6015, "t": 312.1058300000001, "r": 547.14795, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "4", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 324.64548, "r": 536.08008, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.3.2 New controls: Row and Column Access Control. . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.6355, "t": 324.64548, "r": 547.19092, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "5", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79704, "t": 347.14511, "r": 536.09088, "b": 356.35809, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 2. Roles and separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.64282, "t": 347.14511, "r": 547.19476, "b": 356.35809, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "7", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79704, "t": 359.14493, "r": 536.12714, "b": 368.35791, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1 Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.66589, "t": 359.14493, "r": 547.20471, "b": 368.35791, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "8", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 371.62482, "r": 535.9527, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.1 DDM and DRDA application server access: QIBM_DB_DDMDRDA . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.55585, "t": 371.62482, "r": 547.15906, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "8", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 384.10470999999995, "r": 536.04108, "b": 393.31769, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.2 Toolbox application server access: QIBM_DB_ZDA. . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.59595, "t": 384.10470999999995, "r": 547.15082, "b": 393.31769, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "8", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 396.64435, "r": 536.07489, "b": 405.85733, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.3 Database Administrator function: QIBM_DB_SQLADM . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.63025, "t": 396.64435, "r": 547.18561, "b": 405.85733, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "9", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 409.12424000000004, "r": 411.27048, "b": 418.33722, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.4 Database Information function: QIBM_DB_SYSMON", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 416.81775, "t": 409.12424000000004, "r": 547.17865, "b": 418.33722, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . 9", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 421.60413, "r": 536.03589, "b": 430.81711, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.5 Security Administrator function: QIBM_DB_SECADM . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.59894, "t": 421.60413, "r": 547.16193, "b": 430.81711, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "9", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 434.1437700000001, "r": 530.57318, "b": 443.35675, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.6 Change Function Usage CL command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.10443, "t": 434.1437700000001, "r": 547.16687, "b": 443.35675, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 446.62366, "r": 530.53522, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 22, "end_row_offset_idx": 23, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.7 Verifying function usage IDs for RCAC with the FUNCTION_USAGE view . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0755, "t": 446.62366, "r": 547.15601, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 22, "end_row_offset_idx": 23, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79704, "t": 459.10355, "r": 547.25659, "b": 468.31653, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 23, "end_row_offset_idx": 24, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.2 Separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 481.60318, "r": 530.53961, "b": 490.81616, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 24, "end_row_offset_idx": 25, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 3. Row and Column Access Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.09167, "t": 481.60318, "r": 547.1958, "b": 490.81616, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 24, "end_row_offset_idx": 25, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "13", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 493.603, "r": 530.4809, "b": 502.81598, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 25, "end_row_offset_idx": 26, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.1 Explanation of RCAC and the concept of access control . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.04248, "t": 493.603, "r": 547.16571, "b": 502.81598, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 25, "end_row_offset_idx": 26, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "14", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19719, "t": 506.14264, "r": 378.20786, "b": 515.35562, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 26, "end_row_offset_idx": 27, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.1.1 Row permission and column mask definitions", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 383.74713, "t": 506.14264, "r": 547.15576, "b": 515.35562, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 26, "end_row_offset_idx": 27, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . 14", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19719, "t": 518.62253, "r": 530.43475, "b": 527.83551, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 27, "end_row_offset_idx": 28, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.1.2 Enabling and activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 535.99622, "t": 518.62253, "r": 547.11908, "b": 527.83551, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 27, "end_row_offset_idx": 28, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "16", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 531.1621700000001, "r": 530.52808, "b": 540.37517, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 28, "end_row_offset_idx": 29, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.2 Special registers and built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.06702, "t": 531.1621700000001, "r": 547.14484, "b": 540.37517, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 28, "end_row_offset_idx": 29, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "18", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19719, "t": 543.64204, "r": 530.49786, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 29, "end_row_offset_idx": 30, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.2.1 Special registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.05188, "t": 543.64204, "r": 547.15991, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 29, "end_row_offset_idx": 30, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "18", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19719, "t": 556.12192, "r": 530.56024, "b": 565.33492, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 30, "end_row_offset_idx": 31, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.2.2 Built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.09912, "t": 556.12192, "r": 547.17688, "b": 565.33492, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 30, "end_row_offset_idx": 31, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "19", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 568.66156, "r": 530.53027, "b": 577.87456, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 31, "end_row_offset_idx": 32, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.3 VERIFY_GROUP_FOR_USER function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.06152, "t": 568.66156, "r": 547.12402, "b": 577.87456, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 31, "end_row_offset_idx": 32, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "20", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 581.14143, "r": 530.62994, "b": 590.35443, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 32, "end_row_offset_idx": 33, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.4 Establishing and controlling accessibility by using the RCAC rule text . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.16315, "t": 581.14143, "r": 547.22955, "b": 590.35443, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 32, "end_row_offset_idx": 33, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "21", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79701, "t": 593.62131, "r": 394.7818, "b": 602.8343, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 34, "end_row_offset_idx": 35, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.5 SELECT, INSERT, and UPDATE behavior with RCAC", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 400.32065, "t": 593.62131, "r": 547.1001, "b": 602.8343, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 33, "end_row_offset_idx": 34, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . 22", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 618.64082, "r": 530.49139, "b": 627.85382, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 35, "end_row_offset_idx": 36, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.1 Assigning the QIBM_DB_SECADM function ID to the consultants. . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.04633, "t": 618.64082, "r": 547.15619, "b": 627.85382, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 35, "end_row_offset_idx": 36, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "23", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 631.1206999999999, "r": 530.56458, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 36, "end_row_offset_idx": 37, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.2 Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.09601, "t": 631.1206999999999, "r": 547.15875, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 36, "end_row_offset_idx": 37, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "23", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 643.66034, "r": 530.55695, "b": 652.87334, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 37, "end_row_offset_idx": 38, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.3 Demonstrating data access without RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0882, "t": 643.66034, "r": 547.15076, "b": 652.87334, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 37, "end_row_offset_idx": 38, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "24", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 656.14021, "r": 530.53412, "b": 665.35321, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 38, "end_row_offset_idx": 39, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.4 Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.073, "t": 656.14021, "r": 547.15088, "b": 665.35321, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 38, "end_row_offset_idx": 39, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "25", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 668.62009, "r": 339.45105, "b": 677.83309, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 39, "end_row_offset_idx": 40, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.5 Defining and creating column masks", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 344.98996, "t": 668.62009, "r": 547.16089, "b": 677.83309, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 39, "end_row_offset_idx": 40, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 681.15973, "r": 530.54102, "b": 690.37273, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 40, "end_row_offset_idx": 41, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.6 Activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.08765, "t": 681.15973, "r": 547.18085, "b": 690.37273, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 40, "end_row_offset_idx": 41, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "28", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 693.63961, "r": 530.57507, "b": 702.852615, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 41, "end_row_offset_idx": 42, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.7 Demonstrating data access with RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.10663, "t": 693.63961, "r": 547.16968, "b": 702.852615, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 41, "end_row_offset_idx": 42, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "29", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 706.119492, "r": 530.43628, "b": 715.332497, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 42, "end_row_offset_idx": 43, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.8 Demonstrating data access with a view and RCAC . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 535.99847, "t": 706.119492, "r": 547.12286, "b": 715.332497, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 42, "end_row_offset_idx": 43, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "32", "column_header": false, "row_header": false, "row_section": false}]}], "body": [{"label": "section_header", "id": 2, "page_no": 1, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.6857681274414, "t": 73.01808166503906, "r": 168.73441, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9508246779441833, "cells": [{"id": 2, "text": "Contents", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 168.73441, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Contents"}, {"label": "table", "id": 3, "page_no": 1, "cluster": {"id": 3, "label": "table", "bbox": {"l": 136.15103149414062, "t": 132.03030395507812, "r": 549.84723, "b": 715.6527709960938, "coord_origin": "TOPLEFT"}, "confidence": 0.9803490042686462, "cells": [{"id": 3, "text": "Notices", "bbox": {"l": 136.8, "t": 132.64862000000005, "r": 172.89404, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii", "bbox": {"l": 175.01952, "t": 132.64862000000005, "r": 547.18982, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Trademarks", "bbox": {"l": 136.79901, "t": 145.12847999999997, "r": 189.86537, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 195.39685, "t": 145.12847999999997, "r": 530.05121, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "viii", "bbox": {"l": 535.5827, "t": 145.12847999999997, "r": 547.18286, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "DB2 for i Center of Excellence", "bbox": {"l": 136.79901, "t": 167.62811, "r": 279.39731, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix", "bbox": {"l": 280.61942, "t": 167.62811, "r": 547.1908, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Preface", "bbox": {"l": 136.79901, "t": 190.12775, "r": 172.84424, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "bbox": {"l": 175.01852, "t": 190.12775, "r": 547.18286, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "bbox": {"l": 136.79803, "t": 202.60760000000005, "r": 547.18085, "b": 211.82061999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Now you can become a published author, too!", "bbox": {"l": 136.79803, "t": 215.14721999999995, "r": 339.18292, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.71411, "t": 215.14721999999995, "r": 530.00812, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "xiii", "bbox": {"l": 535.53925, "t": 215.14721999999995, "r": 547.13879, "b": 224.36023, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 136.79803, "t": 227.62707999999998, "r": 529.99506, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "xiii", "bbox": {"l": 535.5495, "t": 227.62707999999998, "r": 547.19788, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Stay connected to IBM Redbooks", "bbox": {"l": 136.79807, "t": 240.10693000000003, "r": 284.02866, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 289.54449, "t": 240.10693000000003, "r": 529.48242, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "xiv", "bbox": {"l": 534.99829, "t": 240.10693000000003, "r": 547.12115, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Chapter 1. Securing and protecting IBM DB2 data", "bbox": {"l": 136.79807, "t": 262.60657000000003, "r": 373.17566, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": " . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 375.11798, "t": 262.60657000000003, "r": 536.09589, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "1", "bbox": {"l": 541.64685, "t": 262.60657000000003, "r": 547.19781, "b": 271.81958, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "1.1", "bbox": {"l": 136.79808, "t": 274.60637999999994, "r": 150.88702, "b": 283.8194, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Security fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2", "bbox": {"l": 156.5226, "t": 274.60637999999994, "r": 549.84723, "b": 283.8194, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "1.2", "bbox": {"l": 136.79807, "t": 287.14606000000003, "r": 150.62746, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Current state of IBM i security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.15923, "t": 287.14606000000003, "r": 536.12933, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "2", "bbox": {"l": 541.66113, "t": 287.14606000000003, "r": 547.19287, "b": 296.35904, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "1.3", "bbox": {"l": 136.79807, "t": 299.62595, "r": 150.84943, "b": 308.83893, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "DB2 for i security controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3", "bbox": {"l": 156.46996, "t": 299.62595, "r": 549.84723, "b": 308.83893, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "1.3.1", "bbox": {"l": 151.1972, "t": 312.1058300000001, "r": 173.38289, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Existing row and column control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.92932, "t": 312.1058300000001, "r": 536.05511, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "4", "bbox": {"l": 541.6015, "t": 312.1058300000001, "r": 547.14795, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "1.3.2", "bbox": {"l": 151.1972, "t": 324.64548, "r": 173.4189, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "New controls: Row and Column Access Control. . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97432, "t": 324.64548, "r": 536.08008, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "5", "bbox": {"l": 541.6355, "t": 324.64548, "r": 547.19092, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Chapter 2. Roles and separation of duties", "bbox": {"l": 136.79704, "t": 347.14511, "r": 336.82071, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 338.99701, "t": 347.14511, "r": 536.09088, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "7", "bbox": {"l": 541.64282, "t": 347.14511, "r": 547.19476, "b": 356.35809, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "2.1", "bbox": {"l": 136.79704, "t": 359.14493, "r": 150.644, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18277, "t": 359.14493, "r": 536.12714, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "8", "bbox": {"l": 541.66589, "t": 359.14493, "r": 547.20471, "b": 368.35791, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "2.1.1", "bbox": {"l": 151.1972, "t": 371.62482, "r": 173.60995, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "DDM and DRDA application server access: QIBM_DB_DDMDRDA . . . . . . . . . . .", "bbox": {"l": 176.41154, "t": 371.62482, "r": 535.9527, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "8", "bbox": {"l": 541.55585, "t": 371.62482, "r": 547.15906, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "2.1.2", "bbox": {"l": 151.1972, "t": 384.10470999999995, "r": 173.41664, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "Toolbox application server access: QIBM_DB_ZDA. . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97151, "t": 384.10470999999995, "r": 536.04108, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "8", "bbox": {"l": 541.59595, "t": 384.10470999999995, "r": 547.15082, "b": 393.31769, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "2.1.3", "bbox": {"l": 151.1972, "t": 396.64435, "r": 173.41859, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Database Administrator function: QIBM_DB_SQLADM . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.97394, "t": 396.64435, "r": 536.07489, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "9", "bbox": {"l": 541.63025, "t": 396.64435, "r": 547.18561, "b": 405.85733, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "2.1.4", "bbox": {"l": 151.1972, "t": 409.12424000000004, "r": 173.38629, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "Database Information function: QIBM_DB_SYSMON", "bbox": {"l": 178.93356, "t": 409.12424000000004, "r": 411.27048, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": ". . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 416.81775, "t": 409.12424000000004, "r": 536.08411, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "9", "bbox": {"l": 541.63135, "t": 409.12424000000004, "r": 547.17865, "b": 418.33722, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "2.1.5", "bbox": {"l": 151.1972, "t": 421.60413, "r": 173.44926, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "Security Administrator function: QIBM_DB_SECADM . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.01228, "t": 421.60413, "r": 536.03589, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "9", "bbox": {"l": 541.59894, "t": 421.60413, "r": 547.16193, "b": 430.81711, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "2.1.6", "bbox": {"l": 151.1972, "t": 434.1437700000001, "r": 173.32208, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Change Function Usage CL command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8533, "t": 434.1437700000001, "r": 530.57318, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "10", "bbox": {"l": 536.10443, "t": 434.1437700000001, "r": 547.16687, "b": 443.35675, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "2.1.7", "bbox": {"l": 151.1972, "t": 446.62366, "r": 173.35822, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "Verifying function usage IDs for RCAC with the FUNCTION_USAGE view . . . . .", "bbox": {"l": 178.89848, "t": 446.62366, "r": 530.53522, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "10", "bbox": {"l": 536.0755, "t": 446.62366, "r": 547.15601, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "2.2", "bbox": {"l": 136.79704, "t": 459.10355, "r": 150.85457, "b": 468.31653, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "Separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10", "bbox": {"l": 156.47758, "t": 459.10355, "r": 547.25659, "b": 468.31653, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Chapter 3. Row and Column Access Control", "bbox": {"l": 136.79703, "t": 481.60318, "r": 348.68503, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 350.09741, "t": 481.60318, "r": 530.53961, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "13", "bbox": {"l": 536.09167, "t": 481.60318, "r": 547.1958, "b": 490.81616, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "3.1", "bbox": {"l": 136.79703, "t": 493.603, "r": 150.70105, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "Explanation of RCAC and the concept of access control . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.26266, "t": 493.603, "r": 530.4809, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "14", "bbox": {"l": 536.04248, "t": 493.603, "r": 547.16571, "b": 502.81598, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "3.1.1", "bbox": {"l": 151.19719, "t": 506.14264, "r": 173.35429, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "Row permission and column mask definitions", "bbox": {"l": 178.89357, "t": 506.14264, "r": 378.20786, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 383.74713, "t": 506.14264, "r": 530.5379, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "14", "bbox": {"l": 536.07721, "t": 506.14264, "r": 547.15576, "b": 515.35562, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "3.1.2", "bbox": {"l": 151.19719, "t": 518.62253, "r": 173.44292, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "Enabling and activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00435, "t": 518.62253, "r": 530.43475, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "16", "bbox": {"l": 535.99622, "t": 518.62253, "r": 547.11908, "b": 527.83551, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "3.2", "bbox": {"l": 136.79703, "t": 531.1621700000001, "r": 150.64432, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 81, "text": "Special registers and built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.18323, "t": 531.1621700000001, "r": 530.52808, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 82, "text": "18", "bbox": {"l": 536.06702, "t": 531.1621700000001, "r": 547.14484, "b": 540.37517, "coord_origin": "TOPLEFT"}}, {"id": 83, "text": "3.2.1", "bbox": {"l": 151.19719, "t": 543.64204, "r": 173.41321, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 84, "text": "Special registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.96722, "t": 543.64204, "r": 530.49786, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 85, "text": "18", "bbox": {"l": 536.05188, "t": 543.64204, "r": 547.15991, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}}, {"id": 86, "text": "3.2.2", "bbox": {"l": 151.19719, "t": 556.12192, "r": 173.35269, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 87, "text": "Built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89156, "t": 556.12192, "r": 530.56024, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 88, "text": "19", "bbox": {"l": 536.09912, "t": 556.12192, "r": 547.17688, "b": 565.33492, "coord_origin": "TOPLEFT"}}, {"id": 89, "text": "3.3", "bbox": {"l": 136.79703, "t": 568.66156, "r": 150.62514, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 90, "text": "VERIFY_GROUP_FOR_USER function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.15639, "t": 568.66156, "r": 530.53027, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 91, "text": "20", "bbox": {"l": 536.06152, "t": 568.66156, "r": 547.12402, "b": 577.87456, "coord_origin": "TOPLEFT"}}, {"id": 92, "text": "3.4", "bbox": {"l": 136.79703, "t": 581.14143, "r": 150.63004, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 93, "text": "Establishing and controlling accessibility by using the RCAC rule text . . . . . . . . . . . . .", "bbox": {"l": 156.16325, "t": 581.14143, "r": 530.62994, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 94, "text": "21", "bbox": {"l": 536.16315, "t": 581.14143, "r": 547.22955, "b": 590.35443, "coord_origin": "TOPLEFT"}}, {"id": 95, "text": "3.5", "bbox": {"l": 136.79701, "t": 593.62131, "r": 150.64413, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 96, "text": "SELECT, INSERT, and UPDATE behavior with RCAC", "bbox": {"l": 156.18298, "t": 593.62131, "r": 394.7818, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 97, "text": ". . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 400.32065, "t": 593.62131, "r": 530.48358, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 98, "text": "22", "bbox": {"l": 536.0224, "t": 593.62131, "r": 547.1001, "b": 602.8343, "coord_origin": "TOPLEFT"}}, {"id": 99, "text": "3.6", "bbox": {"l": 136.79701, "t": 606.16095, "r": 150.6642, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 100, "text": "Human resources example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 156.21107, "t": 606.16095, "r": 530.56512, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 101, "text": "22", "bbox": {"l": 536.112, "t": 606.16095, "r": 547.20575, "b": 615.37395, "coord_origin": "TOPLEFT"}}, {"id": 102, "text": "3.6.1", "bbox": {"l": 151.19717, "t": 618.64082, "r": 173.41692, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 103, "text": "Assigning the QIBM_DB_SECADM function ID to the consultants. . . . . . . . . . . .", "bbox": {"l": 178.97185, "t": 618.64082, "r": 530.49139, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 104, "text": "23", "bbox": {"l": 536.04633, "t": 618.64082, "r": 547.15619, "b": 627.85382, "coord_origin": "TOPLEFT"}}, {"id": 105, "text": "3.6.2", "bbox": {"l": 151.19717, "t": 631.1206999999999, "r": 173.32271, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 106, "text": "Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.8541, "t": 631.1206999999999, "r": 530.56458, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 107, "text": "23", "bbox": {"l": 536.09601, "t": 631.1206999999999, "r": 547.15875, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}}, {"id": 108, "text": "3.6.3", "bbox": {"l": 151.19717, "t": 643.66034, "r": 173.32227, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 109, "text": "Demonstrating data access without RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.85353, "t": 643.66034, "r": 530.55695, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 110, "text": "24", "bbox": {"l": 536.0882, "t": 643.66034, "r": 547.15076, "b": 652.87334, "coord_origin": "TOPLEFT"}}, {"id": 111, "text": "3.6.4", "bbox": {"l": 151.19717, "t": 656.14021, "r": 173.35289, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 112, "text": "Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.89182, "t": 656.14021, "r": 530.53412, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 113, "text": "25", "bbox": {"l": 536.073, "t": 656.14021, "r": 547.15088, "b": 665.35321, "coord_origin": "TOPLEFT"}}, {"id": 114, "text": "3.6.5", "bbox": {"l": 151.19717, "t": 668.62009, "r": 173.35289, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 115, "text": "Defining and creating column masks", "bbox": {"l": 178.89182, "t": 668.62009, "r": 339.45105, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 116, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 344.98996, "t": 668.62009, "r": 530.54413, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 117, "text": "26", "bbox": {"l": 536.08301, "t": 668.62009, "r": 547.16089, "b": 677.83309, "coord_origin": "TOPLEFT"}}, {"id": 118, "text": "3.6.6", "bbox": {"l": 151.19717, "t": 681.15973, "r": 173.38359, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 119, "text": "Activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 178.93019, "t": 681.15973, "r": 530.54102, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 120, "text": "28", "bbox": {"l": 536.08765, "t": 681.15973, "r": 547.18085, "b": 690.37273, "coord_origin": "TOPLEFT"}}, {"id": 121, "text": "3.6.7", "bbox": {"l": 151.19717, "t": 693.63961, "r": 173.32332, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 122, "text": "Demonstrating data access with RCAC", "bbox": {"l": 178.85486, "t": 693.63961, "r": 350.80011, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 123, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 356.33163, "t": 693.63961, "r": 530.57507, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 124, "text": "29", "bbox": {"l": 536.10663, "t": 693.63961, "r": 547.16968, "b": 702.852615, "coord_origin": "TOPLEFT"}}, {"id": 125, "text": "3.6.8", "bbox": {"l": 151.19717, "t": 706.119492, "r": 173.44592, "b": 715.332497, "coord_origin": "TOPLEFT"}}, {"id": 126, "text": "Demonstrating data access with a view and RCAC . . . . . . . . . . . . . . . . . . . . . . .", "bbox": {"l": 179.00812, "t": 706.119492, "r": 530.43628, "b": 715.332497, "coord_origin": "TOPLEFT"}}, {"id": 127, "text": "32", "bbox": {"l": 535.99847, "t": 706.119492, "r": 547.12286, "b": 715.332497, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl"], "num_rows": 43, "num_cols": 2, "table_cells": [{"bbox": {"l": 136.8, "t": 132.64862000000005, "r": 172.89404, "b": 141.86163, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Notices", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 175.01952, "t": 132.64862000000005, "r": 547.18982, "b": 141.86163, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79901, "t": 145.12847999999997, "r": 189.86537, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Trademarks", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 195.39685, "t": 145.12847999999997, "r": 547.18286, "b": 154.34149000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79901, "t": 167.62811, "r": 279.39731, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "DB2 for i Center of Excellence", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 280.61942, "t": 167.62811, "r": 547.1908, "b": 176.84113000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79901, "t": 190.12775, "r": 172.84424, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Preface", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 175.01852, "t": 190.12775, "r": 547.18286, "b": 199.34076000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79803, "t": 202.60760000000005, "r": 547.18085, "b": 211.82061999999996, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79803, "t": 215.14721999999995, "r": 339.18292, "b": 224.36023, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Now you can become a published author, too!", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 344.71411, "t": 215.14721999999995, "r": 547.13879, "b": 224.36023, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79803, "t": 227.62707999999998, "r": 529.99506, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 535.5495, "t": 227.62707999999998, "r": 547.19788, "b": 236.84009000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "xiii", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79807, "t": 240.10693000000003, "r": 284.02866, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Stay connected to IBM Redbooks", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.54449, "t": 240.10693000000003, "r": 547.12115, "b": 249.31994999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79807, "t": 262.60657000000003, "r": 536.09589, "b": 271.81958, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 1. Securing and protecting IBM DB2 data . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.64685, "t": 262.60657000000003, "r": 547.19781, "b": 271.81958, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "1", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79808, "t": 274.60637999999994, "r": 549.84723, "b": 283.8194, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.1 Security fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79807, "t": 287.14606000000003, "r": 536.12933, "b": 296.35904, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.2 Current state of IBM i security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.66113, "t": 287.14606000000003, "r": 547.19287, "b": 296.35904, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "2", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79807, "t": 299.62595, "r": 549.84723, "b": 308.83893, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.3 DB2 for i security controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 312.1058300000001, "r": 536.05511, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.3.1 Existing row and column control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.6015, "t": 312.1058300000001, "r": 547.14795, "b": 321.3188200000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "4", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 324.64548, "r": 536.08008, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "1.3.2 New controls: Row and Column Access Control. . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.6355, "t": 324.64548, "r": 547.19092, "b": 333.8584599999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 13, "end_row_offset_idx": 14, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "5", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79704, "t": 347.14511, "r": 536.09088, "b": 356.35809, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 2. Roles and separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.64282, "t": 347.14511, "r": 547.19476, "b": 356.35809, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 14, "end_row_offset_idx": 15, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "7", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79704, "t": 359.14493, "r": 536.12714, "b": 368.35791, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1 Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.66589, "t": 359.14493, "r": 547.20471, "b": 368.35791, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 15, "end_row_offset_idx": 16, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "8", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 371.62482, "r": 535.9527, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.1 DDM and DRDA application server access: QIBM_DB_DDMDRDA . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.55585, "t": 371.62482, "r": 547.15906, "b": 380.8378000000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 16, "end_row_offset_idx": 17, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "8", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 384.10470999999995, "r": 536.04108, "b": 393.31769, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.2 Toolbox application server access: QIBM_DB_ZDA. . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.59595, "t": 384.10470999999995, "r": 547.15082, "b": 393.31769, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 17, "end_row_offset_idx": 18, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "8", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 396.64435, "r": 536.07489, "b": 405.85733, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.3 Database Administrator function: QIBM_DB_SQLADM . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.63025, "t": 396.64435, "r": 547.18561, "b": 405.85733, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 18, "end_row_offset_idx": 19, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "9", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 409.12424000000004, "r": 411.27048, "b": 418.33722, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.4 Database Information function: QIBM_DB_SYSMON", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 416.81775, "t": 409.12424000000004, "r": 547.17865, "b": 418.33722, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 19, "end_row_offset_idx": 20, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . 9", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 421.60413, "r": 536.03589, "b": 430.81711, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.5 Security Administrator function: QIBM_DB_SECADM . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 541.59894, "t": 421.60413, "r": 547.16193, "b": 430.81711, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 20, "end_row_offset_idx": 21, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "9", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 434.1437700000001, "r": 530.57318, "b": 443.35675, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.6 Change Function Usage CL command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.10443, "t": 434.1437700000001, "r": 547.16687, "b": 443.35675, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 21, "end_row_offset_idx": 22, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.1972, "t": 446.62366, "r": 530.53522, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 22, "end_row_offset_idx": 23, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.1.7 Verifying function usage IDs for RCAC with the FUNCTION_USAGE view . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0755, "t": 446.62366, "r": 547.15601, "b": 455.83663999999993, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 22, "end_row_offset_idx": 23, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79704, "t": 459.10355, "r": 547.25659, "b": 468.31653, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 23, "end_row_offset_idx": 24, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "2.2 Separation of duties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 481.60318, "r": 530.53961, "b": 490.81616, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 24, "end_row_offset_idx": 25, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Chapter 3. Row and Column Access Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.09167, "t": 481.60318, "r": 547.1958, "b": 490.81616, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 24, "end_row_offset_idx": 25, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "13", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 493.603, "r": 530.4809, "b": 502.81598, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 25, "end_row_offset_idx": 26, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.1 Explanation of RCAC and the concept of access control . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.04248, "t": 493.603, "r": 547.16571, "b": 502.81598, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 25, "end_row_offset_idx": 26, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "14", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19719, "t": 506.14264, "r": 378.20786, "b": 515.35562, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 26, "end_row_offset_idx": 27, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.1.1 Row permission and column mask definitions", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 383.74713, "t": 506.14264, "r": 547.15576, "b": 515.35562, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 26, "end_row_offset_idx": 27, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . 14", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19719, "t": 518.62253, "r": 530.43475, "b": 527.83551, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 27, "end_row_offset_idx": 28, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.1.2 Enabling and activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 535.99622, "t": 518.62253, "r": 547.11908, "b": 527.83551, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 27, "end_row_offset_idx": 28, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "16", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 531.1621700000001, "r": 530.52808, "b": 540.37517, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 28, "end_row_offset_idx": 29, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.2 Special registers and built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.06702, "t": 531.1621700000001, "r": 547.14484, "b": 540.37517, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 28, "end_row_offset_idx": 29, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "18", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19719, "t": 543.64204, "r": 530.49786, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 29, "end_row_offset_idx": 30, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.2.1 Special registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.05188, "t": 543.64204, "r": 547.15991, "b": 552.8550399999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 29, "end_row_offset_idx": 30, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "18", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19719, "t": 556.12192, "r": 530.56024, "b": 565.33492, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 30, "end_row_offset_idx": 31, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.2.2 Built-in global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.09912, "t": 556.12192, "r": 547.17688, "b": 565.33492, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 30, "end_row_offset_idx": 31, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "19", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 568.66156, "r": 530.53027, "b": 577.87456, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 31, "end_row_offset_idx": 32, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.3 VERIFY_GROUP_FOR_USER function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.06152, "t": 568.66156, "r": 547.12402, "b": 577.87456, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 31, "end_row_offset_idx": 32, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "20", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79703, "t": 581.14143, "r": 530.62994, "b": 590.35443, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 32, "end_row_offset_idx": 33, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.4 Establishing and controlling accessibility by using the RCAC rule text . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.16315, "t": 581.14143, "r": 547.22955, "b": 590.35443, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 32, "end_row_offset_idx": 33, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "21", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 136.79701, "t": 593.62131, "r": 394.7818, "b": 602.8343, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 34, "end_row_offset_idx": 35, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.5 SELECT, INSERT, and UPDATE behavior with RCAC", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 400.32065, "t": 593.62131, "r": 547.1001, "b": 602.8343, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 33, "end_row_offset_idx": 34, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . 22", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 618.64082, "r": 530.49139, "b": 627.85382, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 35, "end_row_offset_idx": 36, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.1 Assigning the QIBM_DB_SECADM function ID to the consultants. . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.04633, "t": 618.64082, "r": 547.15619, "b": 627.85382, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 35, "end_row_offset_idx": 36, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "23", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 631.1206999999999, "r": 530.56458, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 36, "end_row_offset_idx": 37, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.2 Creating group profiles for the users and their roles . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.09601, "t": 631.1206999999999, "r": 547.15875, "b": 640.3336899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 36, "end_row_offset_idx": 37, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "23", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 643.66034, "r": 530.55695, "b": 652.87334, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 37, "end_row_offset_idx": 38, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.3 Demonstrating data access without RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.0882, "t": 643.66034, "r": 547.15076, "b": 652.87334, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 37, "end_row_offset_idx": 38, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "24", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 656.14021, "r": 530.53412, "b": 665.35321, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 38, "end_row_offset_idx": 39, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.4 Defining and creating row permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.073, "t": 656.14021, "r": 547.15088, "b": 665.35321, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 38, "end_row_offset_idx": 39, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "25", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 668.62009, "r": 339.45105, "b": 677.83309, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 39, "end_row_offset_idx": 40, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.5 Defining and creating column masks", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 344.98996, "t": 668.62009, "r": 547.16089, "b": 677.83309, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 39, "end_row_offset_idx": 40, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 681.15973, "r": 530.54102, "b": 690.37273, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 40, "end_row_offset_idx": 41, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.6 Activating RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.08765, "t": 681.15973, "r": 547.18085, "b": 690.37273, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 40, "end_row_offset_idx": 41, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "28", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 693.63961, "r": 530.57507, "b": 702.852615, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 41, "end_row_offset_idx": 42, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.7 Demonstrating data access with RCAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 536.10663, "t": 693.63961, "r": 547.16968, "b": 702.852615, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 41, "end_row_offset_idx": 42, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "29", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 151.19717, "t": 706.119492, "r": 530.43628, "b": 715.332497, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 42, "end_row_offset_idx": 43, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "3.6.8 Demonstrating data access with a view and RCAC . . . . . . . . . . . . . . . . . . . . . . .", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 535.99847, "t": 706.119492, "r": 547.12286, "b": 715.332497, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 42, "end_row_offset_idx": 43, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "32", "column_header": false, "row_header": false, "row_section": false}]}], "headers": [{"label": "page_footer", "id": 0, "page_no": 1, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.751060485839844, "t": 754.6969604492188, "r": 257.24335, "b": 764.1015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9473134875297546, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 1, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 538.3257446289062, "t": 754.0830688476562, "r": 547.25928, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.892595112323761, "cells": [{"id": 1, "text": "iii", "bbox": {"l": 538.85999, "t": 754.848721, "r": 547.25928, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "iii"}]}}, {"page_no": 2, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "DB2 for i Center of Excellence", "bbox": {"l": 64.800003, "t": 74.48395000000005, "r": 235.8624, "b": 85.58398, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Solution Brief", "bbox": {"l": 94.132698, "t": 148.63933999999995, "r": 139.54634, "b": 155.33642999999995, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "IBM Systems Lab Services and Training", "bbox": {"l": 94.134933, "t": 138.45012999999994, "r": 233.99973, "b": 145.22162000000003, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Power Services", "bbox": {"l": 461.08859000000007, "t": 138.40752999999995, "r": 506.26178, "b": 145.42181000000005, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "DB2 for i", "bbox": {"l": 280.24011, "t": 239.34265000000005, "r": 354.57022, "b": 256.26153999999997, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Center of Excellence ", "bbox": {"l": 280.24011, "t": 259.70165999999995, "r": 463.80942, "b": 276.62054, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Expert help to achieve your business requirements", "bbox": {"l": 280.24011, "t": 277.59027000000003, "r": 483.29572, "b": 287.45959, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "We build confident, satisfied clients", "bbox": {"l": 280.24011, "t": 315.88161999999994, "r": 443.28210000000007, "b": 324.89566, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "No one else has the vast consulting experiences, skills sharing and ", "bbox": {"l": 280.24011, "t": 327.37595, "r": 488.15466, "b": 334.77994, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "renown service offerings to do what we can do for you.", "bbox": {"l": 280.24011, "t": 337.55551, "r": 452.34018, "b": 344.9595, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Because no one else is IBM.", "bbox": {"l": 280.24011, "t": 357.3260200000001, "r": 367.86023, "b": 364.73001, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "With combined experiences and direct access to development groups, ", "bbox": {"l": 280.24011, "t": 377.09801999999996, "r": 500.32104000000004, "b": 384.50201, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "we\u2019re the experts in IBM DB2\u00ae for i. The DB2 for i Center of ", "bbox": {"l": 280.24011, "t": 387.27759, "r": 479.25497, "b": 394.68158, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Excellence (CoE) can help you achieve-perhaps reexamine and ", "bbox": {"l": 280.24011, "t": 397.45715, "r": 483.4667400000001, "b": 404.86115, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "exceed-your business requirements and gain more confidence and ", "bbox": {"l": 280.24011, "t": 407.63672, "r": 492.97656, "b": 415.04071000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "satisfaction in IBM product data management products and solutions.", "bbox": {"l": 280.24011, "t": 417.81628, "r": 498.87, "b": 425.22027999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Who we are, some of what we do", "bbox": {"l": 280.24011, "t": 437.85403, "r": 434.83205999999996, "b": 446.86807, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Global CoE engagements cover topics including:", "bbox": {"l": 280.24011, "t": 449.34824000000003, "r": 434.56316999999996, "b": 456.75223, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "r ", "bbox": {"l": 280.24011, "t": 470.95236, "r": 284.0993, "b": 476.16074, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Database performance and scalability", "bbox": {"l": 287.28961, "t": 469.11826, "r": 401.56412, "b": 476.52225, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "r ", "bbox": {"l": 280.24011, "t": 481.13507, "r": 284.0993, "b": 486.34344, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Advanced SQL knowledge and skills transfer", "bbox": {"l": 287.28961, "t": 479.30096, "r": 424.99646, "b": 486.70496, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "r ", "bbox": {"l": 280.24011, "t": 491.31766, "r": 284.0993, "b": 496.52603, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Business intelligence and analytics", "bbox": {"l": 287.28961, "t": 489.48355, "r": 392.15845, "b": 496.88754, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "r ", "bbox": {"l": 280.24011, "t": 501.50037, "r": 284.0993, "b": 506.70874, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "DB2 Web Query", "bbox": {"l": 287.28961, "t": 499.66626, "r": 339.94354, "b": 507.07025, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "r ", "bbox": {"l": 280.24011, "t": 511.68295, "r": 284.0993, "b": 516.8913299999999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Query/400 modernization for better reporting and analysis capabilities", "bbox": {"l": 287.28961, "t": 509.84885, "r": 504.19314999999995, "b": 517.25284, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "r ", "bbox": {"l": 280.24011, "t": 521.8656599999999, "r": 284.0993, "b": 527.07404, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Database modernization and re-engineering", "bbox": {"l": 287.28961, "t": 520.03156, "r": 423.0022, "b": 527.4355499999999, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "r ", "bbox": {"l": 280.24011, "t": 532.04825, "r": 284.0993, "b": 537.2566400000001, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Data-centric architecture and design", "bbox": {"l": 287.28961, "t": 530.21414, "r": 399.65173, "b": 537.61813, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "r ", "bbox": {"l": 280.24011, "t": 542.23083, "r": 284.0993, "b": 547.43924, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Extremely large database and overcoming limits to growth", "bbox": {"l": 287.28961, "t": 540.39674, "r": 466.77881, "b": 547.80074, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "r ", "bbox": {"l": 280.24011, "t": 552.41354, "r": 284.0993, "b": 557.62195, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "ISV education and enablement", "bbox": {"l": 287.28961, "t": 550.5794500000001, "r": 382.20956, "b": 557.98344, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Highlights ", "bbox": {"l": 144.88921, "t": 327.46163999999993, "r": 188.74681, "b": 336.81406, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 346.01953, "r": 148.68732, "b": 350.60168, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.9388, "t": 345.21707, "r": 177.25424, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 176.9472, "t": 345.21707, "r": 187.11098, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 186.7914, "t": 345.21707, "r": 222.95989999999998, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 222.65912, "t": 345.21707, "r": 229.55193999999997, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "GLYPHGLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 229.2261, "t": 345.21707, "r": 242.87389000000002, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 353.04984, "r": 178.77066, "b": 358.68942, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 178.46362, "t": 353.04984, "r": 207.16908, "b": 358.68942, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 368.73465, "r": 148.68732, "b": 373.3168, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "GLYPHGLYPHGLYPH GLYPHGLYPH", "bbox": {"l": 151.9388, "t": 367.93219, "r": 166.05655, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 165.73697, "t": 367.93219, "r": 186.40289, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPH", "bbox": {"l": 186.09586, "t": 367.93219, "r": 203.61617, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 203.30286, "t": 367.93219, "r": 211.82489, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 211.49905, "t": 367.93219, "r": 218.16002, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 217.83418, "t": 367.93219, "r": 241.30737, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 375.76495, "r": 174.46577, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 174.15874, "t": 375.76495, "r": 214.4128, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 214.11829, "t": 375.76495, "r": 221.01110999999997, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 220.68527, "t": 375.76495, "r": 247.52341000000004, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "GLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 247.21637, "t": 375.76495, "r": 259.2287, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 383.59772, "r": 184.61703, "b": 389.2373, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 399.28265, "r": 148.68732, "b": 403.86481000000003, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "GLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.9388, "t": 398.48019, "r": 165.36099, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 165.04141, "t": 398.48019, "r": 173.56345, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 173.23761, "t": 398.48019, "r": 185.95174, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 185.63216, "t": 398.48019, "r": 204.42448, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 204.11118, "t": 398.48019, "r": 235.29178, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 234.99099999999999, "t": 398.48019, "r": 249.83562, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 406.31296, "r": 173.41306, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 173.10602, "t": 406.31296, "r": 185.0118, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 184.69221, "t": 406.31296, "r": 206.3858, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 206.07249, "t": 406.31296, "r": 228.24231000000003, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 421.99773999999996, "r": 148.68732, "b": 426.5799, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "GLYPH", "bbox": {"l": 151.9388, "t": 421.1952800000001, "r": 155.43533, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 154.73979, "t": 421.1952800000001, "r": 166.06282, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 165.74324, "t": 421.1952800000001, "r": 195.84607, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 195.53903, "t": 421.1952800000001, "r": 202.43185, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 202.10602, "t": 421.1952800000001, "r": 222.87220999999997, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 222.55890000000002, "t": 421.1952800000001, "r": 229.57077, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "GLYPH GLYPH", "bbox": {"l": 229.24492999999998, "t": 421.1952800000001, "r": 234.25163000000003, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.92627, "t": 429.02805, "r": 181.42754, "b": 434.66763, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 181.1205, "t": 429.02805, "r": 201.07835, "b": 434.66763, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 200.76505, "t": 429.02805, "r": 207.65787, "b": 434.66763, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 207.33203, "t": 429.02805, "r": 232.07098000000002, "b": 434.66763, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "text", "bbox": {"l": 64.800003, "t": 74.48395000000005, "r": 235.8624, "b": 85.58398, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 0, "text": "DB2 for i Center of Excellence", "bbox": {"l": 64.800003, "t": 74.48395000000005, "r": 235.8624, "b": 85.58398, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "text", "bbox": {"l": 93.67039489746094, "t": 137.6368408203125, "r": 233.99973, "b": 155.33642999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.7431555986404419, "cells": [{"id": 1, "text": "Solution Brief", "bbox": {"l": 94.132698, "t": 148.63933999999995, "r": 139.54634, "b": 155.33642999999995, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "IBM Systems Lab Services and Training", "bbox": {"l": 94.134933, "t": 138.45012999999994, "r": 233.99973, "b": 145.22162000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 460.8193359375, "t": 138.33865356445312, "r": 506.26178, "b": 145.42181000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.7798991203308105, "cells": [{"id": 3, "text": "Power Services", "bbox": {"l": 461.08859000000007, "t": 138.40752999999995, "r": 506.26178, "b": 145.42181000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "section_header", "bbox": {"l": 280.07391357421875, "t": 237.7128143310547, "r": 463.80942, "b": 276.62054, "coord_origin": "TOPLEFT"}, "confidence": 0.7587877511978149, "cells": [{"id": 4, "text": "DB2 for i", "bbox": {"l": 280.24011, "t": 239.34265000000005, "r": 354.57022, "b": 256.26153999999997, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Center of Excellence ", "bbox": {"l": 280.24011, "t": 259.70165999999995, "r": 463.80942, "b": 276.62054, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 279.51953125, "t": 277.1574401855469, "r": 483.7276916503906, "b": 288.63494873046875, "coord_origin": "TOPLEFT"}, "confidence": 0.7965629696846008, "cells": [{"id": 6, "text": "Expert help to achieve your business requirements", "bbox": {"l": 280.24011, "t": 277.59027000000003, "r": 483.29572, "b": 287.45959, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "section_header", "bbox": {"l": 279.468994140625, "t": 315.0786437988281, "r": 443.375732421875, "b": 324.89566, "coord_origin": "TOPLEFT"}, "confidence": 0.891353964805603, "cells": [{"id": 7, "text": "We build confident, satisfied clients", "bbox": {"l": 280.24011, "t": 315.88161999999994, "r": 443.28210000000007, "b": 324.89566, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 279.530517578125, "t": 327.26470947265625, "r": 488.15466, "b": 345.5077209472656, "coord_origin": "TOPLEFT"}, "confidence": 0.9560743570327759, "cells": [{"id": 8, "text": "No one else has the vast consulting experiences, skills sharing and ", "bbox": {"l": 280.24011, "t": 327.37595, "r": 488.15466, "b": 334.77994, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "renown service offerings to do what we can do for you.", "bbox": {"l": 280.24011, "t": 337.55551, "r": 452.34018, "b": 344.9595, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 280.0453186035156, "t": 356.5709533691406, "r": 367.86023, "b": 364.73001, "coord_origin": "TOPLEFT"}, "confidence": 0.8260757923126221, "cells": [{"id": 10, "text": "Because no one else is IBM.", "bbox": {"l": 280.24011, "t": 357.3260200000001, "r": 367.86023, "b": 364.73001, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 279.70794677734375, "t": 376.26104736328125, "r": 500.32104000000004, "b": 425.3092041015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9764720797538757, "cells": [{"id": 11, "text": "With combined experiences and direct access to development groups, ", "bbox": {"l": 280.24011, "t": 377.09801999999996, "r": 500.32104000000004, "b": 384.50201, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "we\u2019re the experts in IBM DB2\u00ae for i. The DB2 for i Center of ", "bbox": {"l": 280.24011, "t": 387.27759, "r": 479.25497, "b": 394.68158, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Excellence (CoE) can help you achieve-perhaps reexamine and ", "bbox": {"l": 280.24011, "t": 397.45715, "r": 483.4667400000001, "b": 404.86115, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "exceed-your business requirements and gain more confidence and ", "bbox": {"l": 280.24011, "t": 407.63672, "r": 492.97656, "b": 415.04071000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "satisfaction in IBM product data management products and solutions.", "bbox": {"l": 280.24011, "t": 417.81628, "r": 498.87, "b": 425.22027999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "section_header", "bbox": {"l": 279.6336669921875, "t": 437.1227722167969, "r": 435.1236572265625, "b": 446.86807, "coord_origin": "TOPLEFT"}, "confidence": 0.8492124676704407, "cells": [{"id": 16, "text": "Who we are, some of what we do", "bbox": {"l": 280.24011, "t": 437.85403, "r": 434.83205999999996, "b": 446.86807, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 279.4736328125, "t": 449.2602233886719, "r": 434.56316999999996, "b": 457.4661865234375, "coord_origin": "TOPLEFT"}, "confidence": 0.8440341353416443, "cells": [{"id": 17, "text": "Global CoE engagements cover topics including:", "bbox": {"l": 280.24011, "t": 449.34824000000003, "r": 434.56316999999996, "b": 456.75223, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 279.74200439453125, "t": 468.3660583496094, "r": 402.1675109863281, "b": 476.5758972167969, "coord_origin": "TOPLEFT"}, "confidence": 0.9239599108695984, "cells": [{"id": 18, "text": "r ", "bbox": {"l": 280.24011, "t": 470.95236, "r": 284.0993, "b": 476.16074, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Database performance and scalability", "bbox": {"l": 287.28961, "t": 469.11826, "r": 401.56412, "b": 476.52225, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "list_item", "bbox": {"l": 279.7657165527344, "t": 478.64898681640625, "r": 424.99646, "b": 486.78228759765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9239722490310669, "cells": [{"id": 20, "text": "r ", "bbox": {"l": 280.24011, "t": 481.13507, "r": 284.0993, "b": 486.34344, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Advanced SQL knowledge and skills transfer", "bbox": {"l": 287.28961, "t": 479.30096, "r": 424.99646, "b": 486.70496, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "list_item", "bbox": {"l": 279.9660339355469, "t": 489.48355, "r": 392.2996520996094, "b": 497.1912841796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9157897233963013, "cells": [{"id": 22, "text": "r ", "bbox": {"l": 280.24011, "t": 491.31766, "r": 284.0993, "b": 496.52603, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Business intelligence and analytics", "bbox": {"l": 287.28961, "t": 489.48355, "r": 392.15845, "b": 496.88754, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "list_item", "bbox": {"l": 279.9432067871094, "t": 499.5702819824219, "r": 339.94354, "b": 507.2607727050781, "coord_origin": "TOPLEFT"}, "confidence": 0.8733457922935486, "cells": [{"id": 24, "text": "r ", "bbox": {"l": 280.24011, "t": 501.50037, "r": 284.0993, "b": 506.70874, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "DB2 Web Query", "bbox": {"l": 287.28961, "t": 499.66626, "r": 339.94354, "b": 507.07025, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "list_item", "bbox": {"l": 279.68328857421875, "t": 509.4296875, "r": 504.21795654296875, "b": 517.4979858398438, "coord_origin": "TOPLEFT"}, "confidence": 0.924924373626709, "cells": [{"id": 26, "text": "r ", "bbox": {"l": 280.24011, "t": 511.68295, "r": 284.0993, "b": 516.8913299999999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Query/400 modernization for better reporting and analysis capabilities", "bbox": {"l": 287.28961, "t": 509.84885, "r": 504.19314999999995, "b": 517.25284, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "list_item", "bbox": {"l": 279.66998291015625, "t": 520.03156, "r": 423.0022, "b": 528.0305786132812, "coord_origin": "TOPLEFT"}, "confidence": 0.9109311103820801, "cells": [{"id": 28, "text": "r ", "bbox": {"l": 280.24011, "t": 521.8656599999999, "r": 284.0993, "b": 527.07404, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Database modernization and re-engineering", "bbox": {"l": 287.28961, "t": 520.03156, "r": 423.0022, "b": 527.4355499999999, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "list_item", "bbox": {"l": 279.7203674316406, "t": 529.9635620117188, "r": 400.07391357421875, "b": 537.8783569335938, "coord_origin": "TOPLEFT"}, "confidence": 0.8977466225624084, "cells": [{"id": 30, "text": "r ", "bbox": {"l": 280.24011, "t": 532.04825, "r": 284.0993, "b": 537.2566400000001, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Data-centric architecture and design", "bbox": {"l": 287.28961, "t": 530.21414, "r": 399.65173, "b": 537.61813, "coord_origin": "TOPLEFT"}}]}, {"id": 18, "label": "list_item", "bbox": {"l": 279.7815856933594, "t": 539.8663330078125, "r": 467.2125549316406, "b": 547.80074, "coord_origin": "TOPLEFT"}, "confidence": 0.9218330383300781, "cells": [{"id": 32, "text": "r ", "bbox": {"l": 280.24011, "t": 542.23083, "r": 284.0993, "b": 547.43924, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Extremely large database and overcoming limits to growth", "bbox": {"l": 287.28961, "t": 540.39674, "r": 466.77881, "b": 547.80074, "coord_origin": "TOPLEFT"}}]}, {"id": 19, "label": "list_item", "bbox": {"l": 279.89080810546875, "t": 550.0230102539062, "r": 382.3631591796875, "b": 557.98344, "coord_origin": "TOPLEFT"}, "confidence": 0.9075438976287842, "cells": [{"id": 34, "text": "r ", "bbox": {"l": 280.24011, "t": 552.41354, "r": 284.0993, "b": 557.62195, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "ISV education and enablement", "bbox": {"l": 287.28961, "t": 550.5794500000001, "r": 382.20956, "b": 557.98344, "coord_origin": "TOPLEFT"}}]}, {"id": 20, "label": "section_header", "bbox": {"l": 144.19781494140625, "t": 327.06201171875, "r": 188.74681, "b": 337.35504150390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9098501205444336, "cells": [{"id": 36, "text": "Highlights ", "bbox": {"l": 144.88921, "t": 327.46163999999993, "r": 188.74681, "b": 336.81406, "coord_origin": "TOPLEFT"}}]}, {"id": 21, "label": "list_item", "bbox": {"l": 144.4553985595703, "t": 344.037109375, "r": 242.87389000000002, "b": 358.68942, "coord_origin": "TOPLEFT"}, "confidence": 0.9571698904037476, "cells": [{"id": 37, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 346.01953, "r": 148.68732, "b": 350.60168, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.9388, "t": 345.21707, "r": 177.25424, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 176.9472, "t": 345.21707, "r": 187.11098, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 186.7914, "t": 345.21707, "r": 222.95989999999998, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 222.65912, "t": 345.21707, "r": 229.55193999999997, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "GLYPHGLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 229.2261, "t": 345.21707, "r": 242.87389000000002, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 353.04984, "r": 178.77066, "b": 358.68942, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 178.46362, "t": 353.04984, "r": 207.16908, "b": 358.68942, "coord_origin": "TOPLEFT"}}]}, {"id": 22, "label": "list_item", "bbox": {"l": 144.40879821777344, "t": 366.6461486816406, "r": 259.2287, "b": 389.2373, "coord_origin": "TOPLEFT"}, "confidence": 0.9634581804275513, "cells": [{"id": 45, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 368.73465, "r": 148.68732, "b": 373.3168, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "GLYPHGLYPHGLYPH GLYPHGLYPH", "bbox": {"l": 151.9388, "t": 367.93219, "r": 166.05655, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 165.73697, "t": 367.93219, "r": 186.40289, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPH", "bbox": {"l": 186.09586, "t": 367.93219, "r": 203.61617, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 203.30286, "t": 367.93219, "r": 211.82489, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 211.49905, "t": 367.93219, "r": 218.16002, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 217.83418, "t": 367.93219, "r": 241.30737, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 375.76495, "r": 174.46577, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 174.15874, "t": 375.76495, "r": 214.4128, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 214.11829, "t": 375.76495, "r": 221.01110999999997, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 220.68527, "t": 375.76495, "r": 247.52341000000004, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "GLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 247.21637, "t": 375.76495, "r": 259.2287, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 383.59772, "r": 184.61703, "b": 389.2373, "coord_origin": "TOPLEFT"}}]}, {"id": 23, "label": "list_item", "bbox": {"l": 144.23313903808594, "t": 397.1644592285156, "r": 249.83562, "b": 412.3861083984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9541196823120117, "cells": [{"id": 58, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 399.28265, "r": 148.68732, "b": 403.86481000000003, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "GLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.9388, "t": 398.48019, "r": 165.36099, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 165.04141, "t": 398.48019, "r": 173.56345, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 173.23761, "t": 398.48019, "r": 185.95174, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 185.63216, "t": 398.48019, "r": 204.42448, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 204.11118, "t": 398.48019, "r": 235.29178, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 234.99099999999999, "t": 398.48019, "r": 249.83562, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 406.31296, "r": 173.41306, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 173.10602, "t": 406.31296, "r": 185.0118, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 184.69221, "t": 406.31296, "r": 206.3858, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 206.07249, "t": 406.31296, "r": 228.24231000000003, "b": 411.95255, "coord_origin": "TOPLEFT"}}]}, {"id": 24, "label": "list_item", "bbox": {"l": 144.35208129882812, "t": 420.17449951171875, "r": 234.25163000000003, "b": 434.66763, "coord_origin": "TOPLEFT"}, "confidence": 0.9440370798110962, "cells": [{"id": 69, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 421.99773999999996, "r": 148.68732, "b": 426.5799, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "GLYPH", "bbox": {"l": 151.9388, "t": 421.1952800000001, "r": 155.43533, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 154.73979, "t": 421.1952800000001, "r": 166.06282, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 165.74324, "t": 421.1952800000001, "r": 195.84607, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 195.53903, "t": 421.1952800000001, "r": 202.43185, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 202.10602, "t": 421.1952800000001, "r": 222.87220999999997, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 222.55890000000002, "t": 421.1952800000001, "r": 229.57077, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "GLYPH GLYPH", "bbox": {"l": 229.24492999999998, "t": 421.1952800000001, "r": 234.25163000000003, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.92627, "t": 429.02805, "r": 181.42754, "b": 434.66763, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 181.1205, "t": 429.02805, "r": 201.07835, "b": 434.66763, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 200.76505, "t": 429.02805, "r": 207.65787, "b": 434.66763, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 207.33203, "t": 429.02805, "r": 232.07098000000002, "b": 434.66763, "coord_origin": "TOPLEFT"}}]}, {"id": 25, "label": "picture", "bbox": {"l": 64.16704559326172, "t": 603.50634765625, "r": 258.77435302734375, "b": 688.1282348632812, "coord_origin": "TOPLEFT"}, "confidence": 0.8925828337669373, "cells": []}, {"id": 26, "label": "picture", "bbox": {"l": 143.39866638183594, "t": 270.2610778808594, "r": 179.56256103515625, "b": 285.621337890625, "coord_origin": "TOPLEFT"}, "confidence": 0.7491760849952698, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "text", "id": 0, "page_no": 2, "cluster": {"id": 0, "label": "text", "bbox": {"l": 64.800003, "t": 74.48395000000005, "r": 235.8624, "b": 85.58398, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 0, "text": "DB2 for i Center of Excellence", "bbox": {"l": 64.800003, "t": 74.48395000000005, "r": 235.8624, "b": 85.58398, "coord_origin": "TOPLEFT"}}]}, "text": "DB2 for i Center of Excellence"}, {"label": "text", "id": 1, "page_no": 2, "cluster": {"id": 1, "label": "text", "bbox": {"l": 93.67039489746094, "t": 137.6368408203125, "r": 233.99973, "b": 155.33642999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.7431555986404419, "cells": [{"id": 1, "text": "Solution Brief", "bbox": {"l": 94.132698, "t": 148.63933999999995, "r": 139.54634, "b": 155.33642999999995, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "IBM Systems Lab Services and Training", "bbox": {"l": 94.134933, "t": 138.45012999999994, "r": 233.99973, "b": 145.22162000000003, "coord_origin": "TOPLEFT"}}]}, "text": "Solution Brief IBM Systems Lab Services and Training"}, {"label": "text", "id": 2, "page_no": 2, "cluster": {"id": 2, "label": "text", "bbox": {"l": 460.8193359375, "t": 138.33865356445312, "r": 506.26178, "b": 145.42181000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.7798991203308105, "cells": [{"id": 3, "text": "Power Services", "bbox": {"l": 461.08859000000007, "t": 138.40752999999995, "r": 506.26178, "b": 145.42181000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Power Services"}, {"label": "section_header", "id": 3, "page_no": 2, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 280.07391357421875, "t": 237.7128143310547, "r": 463.80942, "b": 276.62054, "coord_origin": "TOPLEFT"}, "confidence": 0.7587877511978149, "cells": [{"id": 4, "text": "DB2 for i", "bbox": {"l": 280.24011, "t": 239.34265000000005, "r": 354.57022, "b": 256.26153999999997, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Center of Excellence ", "bbox": {"l": 280.24011, "t": 259.70165999999995, "r": 463.80942, "b": 276.62054, "coord_origin": "TOPLEFT"}}]}, "text": "DB2 for i Center of Excellence"}, {"label": "text", "id": 4, "page_no": 2, "cluster": {"id": 4, "label": "text", "bbox": {"l": 279.51953125, "t": 277.1574401855469, "r": 483.7276916503906, "b": 288.63494873046875, "coord_origin": "TOPLEFT"}, "confidence": 0.7965629696846008, "cells": [{"id": 6, "text": "Expert help to achieve your business requirements", "bbox": {"l": 280.24011, "t": 277.59027000000003, "r": 483.29572, "b": 287.45959, "coord_origin": "TOPLEFT"}}]}, "text": "Expert help to achieve your business requirements"}, {"label": "section_header", "id": 5, "page_no": 2, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 279.468994140625, "t": 315.0786437988281, "r": 443.375732421875, "b": 324.89566, "coord_origin": "TOPLEFT"}, "confidence": 0.891353964805603, "cells": [{"id": 7, "text": "We build confident, satisfied clients", "bbox": {"l": 280.24011, "t": 315.88161999999994, "r": 443.28210000000007, "b": 324.89566, "coord_origin": "TOPLEFT"}}]}, "text": "We build confident, satisfied clients"}, {"label": "text", "id": 6, "page_no": 2, "cluster": {"id": 6, "label": "text", "bbox": {"l": 279.530517578125, "t": 327.26470947265625, "r": 488.15466, "b": 345.5077209472656, "coord_origin": "TOPLEFT"}, "confidence": 0.9560743570327759, "cells": [{"id": 8, "text": "No one else has the vast consulting experiences, skills sharing and ", "bbox": {"l": 280.24011, "t": 327.37595, "r": 488.15466, "b": 334.77994, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "renown service offerings to do what we can do for you.", "bbox": {"l": 280.24011, "t": 337.55551, "r": 452.34018, "b": 344.9595, "coord_origin": "TOPLEFT"}}]}, "text": "No one else has the vast consulting experiences, skills sharing and renown service offerings to do what we can do for you."}, {"label": "text", "id": 7, "page_no": 2, "cluster": {"id": 7, "label": "text", "bbox": {"l": 280.0453186035156, "t": 356.5709533691406, "r": 367.86023, "b": 364.73001, "coord_origin": "TOPLEFT"}, "confidence": 0.8260757923126221, "cells": [{"id": 10, "text": "Because no one else is IBM.", "bbox": {"l": 280.24011, "t": 357.3260200000001, "r": 367.86023, "b": 364.73001, "coord_origin": "TOPLEFT"}}]}, "text": "Because no one else is IBM."}, {"label": "text", "id": 8, "page_no": 2, "cluster": {"id": 8, "label": "text", "bbox": {"l": 279.70794677734375, "t": 376.26104736328125, "r": 500.32104000000004, "b": 425.3092041015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9764720797538757, "cells": [{"id": 11, "text": "With combined experiences and direct access to development groups, ", "bbox": {"l": 280.24011, "t": 377.09801999999996, "r": 500.32104000000004, "b": 384.50201, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "we\u2019re the experts in IBM DB2\u00ae for i. The DB2 for i Center of ", "bbox": {"l": 280.24011, "t": 387.27759, "r": 479.25497, "b": 394.68158, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Excellence (CoE) can help you achieve-perhaps reexamine and ", "bbox": {"l": 280.24011, "t": 397.45715, "r": 483.4667400000001, "b": 404.86115, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "exceed-your business requirements and gain more confidence and ", "bbox": {"l": 280.24011, "t": 407.63672, "r": 492.97656, "b": 415.04071000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "satisfaction in IBM product data management products and solutions.", "bbox": {"l": 280.24011, "t": 417.81628, "r": 498.87, "b": 425.22027999999995, "coord_origin": "TOPLEFT"}}]}, "text": "With combined experiences and direct access to development groups, we\u2019re the experts in IBM DB2\u00ae for i. The DB2 for i Center of Excellence (CoE) can help you achieve-perhaps reexamine and exceed-your business requirements and gain more confidence and satisfaction in IBM product data management products and solutions."}, {"label": "section_header", "id": 9, "page_no": 2, "cluster": {"id": 9, "label": "section_header", "bbox": {"l": 279.6336669921875, "t": 437.1227722167969, "r": 435.1236572265625, "b": 446.86807, "coord_origin": "TOPLEFT"}, "confidence": 0.8492124676704407, "cells": [{"id": 16, "text": "Who we are, some of what we do", "bbox": {"l": 280.24011, "t": 437.85403, "r": 434.83205999999996, "b": 446.86807, "coord_origin": "TOPLEFT"}}]}, "text": "Who we are, some of what we do"}, {"label": "text", "id": 10, "page_no": 2, "cluster": {"id": 10, "label": "text", "bbox": {"l": 279.4736328125, "t": 449.2602233886719, "r": 434.56316999999996, "b": 457.4661865234375, "coord_origin": "TOPLEFT"}, "confidence": 0.8440341353416443, "cells": [{"id": 17, "text": "Global CoE engagements cover topics including:", "bbox": {"l": 280.24011, "t": 449.34824000000003, "r": 434.56316999999996, "b": 456.75223, "coord_origin": "TOPLEFT"}}]}, "text": "Global CoE engagements cover topics including:"}, {"label": "list_item", "id": 11, "page_no": 2, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 279.74200439453125, "t": 468.3660583496094, "r": 402.1675109863281, "b": 476.5758972167969, "coord_origin": "TOPLEFT"}, "confidence": 0.9239599108695984, "cells": [{"id": 18, "text": "r ", "bbox": {"l": 280.24011, "t": 470.95236, "r": 284.0993, "b": 476.16074, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Database performance and scalability", "bbox": {"l": 287.28961, "t": 469.11826, "r": 401.56412, "b": 476.52225, "coord_origin": "TOPLEFT"}}]}, "text": "r Database performance and scalability"}, {"label": "list_item", "id": 12, "page_no": 2, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 279.7657165527344, "t": 478.64898681640625, "r": 424.99646, "b": 486.78228759765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9239722490310669, "cells": [{"id": 20, "text": "r ", "bbox": {"l": 280.24011, "t": 481.13507, "r": 284.0993, "b": 486.34344, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Advanced SQL knowledge and skills transfer", "bbox": {"l": 287.28961, "t": 479.30096, "r": 424.99646, "b": 486.70496, "coord_origin": "TOPLEFT"}}]}, "text": "r Advanced SQL knowledge and skills transfer"}, {"label": "list_item", "id": 13, "page_no": 2, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 279.9660339355469, "t": 489.48355, "r": 392.2996520996094, "b": 497.1912841796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9157897233963013, "cells": [{"id": 22, "text": "r ", "bbox": {"l": 280.24011, "t": 491.31766, "r": 284.0993, "b": 496.52603, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Business intelligence and analytics", "bbox": {"l": 287.28961, "t": 489.48355, "r": 392.15845, "b": 496.88754, "coord_origin": "TOPLEFT"}}]}, "text": "r Business intelligence and analytics"}, {"label": "list_item", "id": 14, "page_no": 2, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 279.9432067871094, "t": 499.5702819824219, "r": 339.94354, "b": 507.2607727050781, "coord_origin": "TOPLEFT"}, "confidence": 0.8733457922935486, "cells": [{"id": 24, "text": "r ", "bbox": {"l": 280.24011, "t": 501.50037, "r": 284.0993, "b": 506.70874, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "DB2 Web Query", "bbox": {"l": 287.28961, "t": 499.66626, "r": 339.94354, "b": 507.07025, "coord_origin": "TOPLEFT"}}]}, "text": "r DB2 Web Query"}, {"label": "list_item", "id": 15, "page_no": 2, "cluster": {"id": 15, "label": "list_item", "bbox": {"l": 279.68328857421875, "t": 509.4296875, "r": 504.21795654296875, "b": 517.4979858398438, "coord_origin": "TOPLEFT"}, "confidence": 0.924924373626709, "cells": [{"id": 26, "text": "r ", "bbox": {"l": 280.24011, "t": 511.68295, "r": 284.0993, "b": 516.8913299999999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Query/400 modernization for better reporting and analysis capabilities", "bbox": {"l": 287.28961, "t": 509.84885, "r": 504.19314999999995, "b": 517.25284, "coord_origin": "TOPLEFT"}}]}, "text": "r Query/400 modernization for better reporting and analysis capabilities"}, {"label": "list_item", "id": 16, "page_no": 2, "cluster": {"id": 16, "label": "list_item", "bbox": {"l": 279.66998291015625, "t": 520.03156, "r": 423.0022, "b": 528.0305786132812, "coord_origin": "TOPLEFT"}, "confidence": 0.9109311103820801, "cells": [{"id": 28, "text": "r ", "bbox": {"l": 280.24011, "t": 521.8656599999999, "r": 284.0993, "b": 527.07404, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Database modernization and re-engineering", "bbox": {"l": 287.28961, "t": 520.03156, "r": 423.0022, "b": 527.4355499999999, "coord_origin": "TOPLEFT"}}]}, "text": "r Database modernization and re-engineering"}, {"label": "list_item", "id": 17, "page_no": 2, "cluster": {"id": 17, "label": "list_item", "bbox": {"l": 279.7203674316406, "t": 529.9635620117188, "r": 400.07391357421875, "b": 537.8783569335938, "coord_origin": "TOPLEFT"}, "confidence": 0.8977466225624084, "cells": [{"id": 30, "text": "r ", "bbox": {"l": 280.24011, "t": 532.04825, "r": 284.0993, "b": 537.2566400000001, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Data-centric architecture and design", "bbox": {"l": 287.28961, "t": 530.21414, "r": 399.65173, "b": 537.61813, "coord_origin": "TOPLEFT"}}]}, "text": "r Data-centric architecture and design"}, {"label": "list_item", "id": 18, "page_no": 2, "cluster": {"id": 18, "label": "list_item", "bbox": {"l": 279.7815856933594, "t": 539.8663330078125, "r": 467.2125549316406, "b": 547.80074, "coord_origin": "TOPLEFT"}, "confidence": 0.9218330383300781, "cells": [{"id": 32, "text": "r ", "bbox": {"l": 280.24011, "t": 542.23083, "r": 284.0993, "b": 547.43924, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Extremely large database and overcoming limits to growth", "bbox": {"l": 287.28961, "t": 540.39674, "r": 466.77881, "b": 547.80074, "coord_origin": "TOPLEFT"}}]}, "text": "r Extremely large database and overcoming limits to growth"}, {"label": "list_item", "id": 19, "page_no": 2, "cluster": {"id": 19, "label": "list_item", "bbox": {"l": 279.89080810546875, "t": 550.0230102539062, "r": 382.3631591796875, "b": 557.98344, "coord_origin": "TOPLEFT"}, "confidence": 0.9075438976287842, "cells": [{"id": 34, "text": "r ", "bbox": {"l": 280.24011, "t": 552.41354, "r": 284.0993, "b": 557.62195, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "ISV education and enablement", "bbox": {"l": 287.28961, "t": 550.5794500000001, "r": 382.20956, "b": 557.98344, "coord_origin": "TOPLEFT"}}]}, "text": "r ISV education and enablement"}, {"label": "section_header", "id": 20, "page_no": 2, "cluster": {"id": 20, "label": "section_header", "bbox": {"l": 144.19781494140625, "t": 327.06201171875, "r": 188.74681, "b": 337.35504150390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9098501205444336, "cells": [{"id": 36, "text": "Highlights ", "bbox": {"l": 144.88921, "t": 327.46163999999993, "r": 188.74681, "b": 336.81406, "coord_origin": "TOPLEFT"}}]}, "text": "Highlights"}, {"label": "list_item", "id": 21, "page_no": 2, "cluster": {"id": 21, "label": "list_item", "bbox": {"l": 144.4553985595703, "t": 344.037109375, "r": 242.87389000000002, "b": 358.68942, "coord_origin": "TOPLEFT"}, "confidence": 0.9571698904037476, "cells": [{"id": 37, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 346.01953, "r": 148.68732, "b": 350.60168, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.9388, "t": 345.21707, "r": 177.25424, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 176.9472, "t": 345.21707, "r": 187.11098, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 186.7914, "t": 345.21707, "r": 222.95989999999998, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 222.65912, "t": 345.21707, "r": 229.55193999999997, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "GLYPHGLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 229.2261, "t": 345.21707, "r": 242.87389000000002, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 353.04984, "r": 178.77066, "b": 358.68942, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 178.46362, "t": 353.04984, "r": 207.16908, "b": 358.68942, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH"}, {"label": "list_item", "id": 22, "page_no": 2, "cluster": {"id": 22, "label": "list_item", "bbox": {"l": 144.40879821777344, "t": 366.6461486816406, "r": 259.2287, "b": 389.2373, "coord_origin": "TOPLEFT"}, "confidence": 0.9634581804275513, "cells": [{"id": 45, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 368.73465, "r": 148.68732, "b": 373.3168, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "GLYPHGLYPHGLYPH GLYPHGLYPH", "bbox": {"l": 151.9388, "t": 367.93219, "r": 166.05655, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 165.73697, "t": 367.93219, "r": 186.40289, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPH", "bbox": {"l": 186.09586, "t": 367.93219, "r": 203.61617, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 203.30286, "t": 367.93219, "r": 211.82489, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 211.49905, "t": 367.93219, "r": 218.16002, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 217.83418, "t": 367.93219, "r": 241.30737, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 375.76495, "r": 174.46577, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 174.15874, "t": 375.76495, "r": 214.4128, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 214.11829, "t": 375.76495, "r": 221.01110999999997, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 220.68527, "t": 375.76495, "r": 247.52341000000004, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "GLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 247.21637, "t": 375.76495, "r": 259.2287, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 383.59772, "r": 184.61703, "b": 389.2373, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH"}, {"label": "list_item", "id": 23, "page_no": 2, "cluster": {"id": 23, "label": "list_item", "bbox": {"l": 144.23313903808594, "t": 397.1644592285156, "r": 249.83562, "b": 412.3861083984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9541196823120117, "cells": [{"id": 58, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 399.28265, "r": 148.68732, "b": 403.86481000000003, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "GLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.9388, "t": 398.48019, "r": 165.36099, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 165.04141, "t": 398.48019, "r": 173.56345, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 173.23761, "t": 398.48019, "r": 185.95174, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 185.63216, "t": 398.48019, "r": 204.42448, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 204.11118, "t": 398.48019, "r": 235.29178, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 234.99099999999999, "t": 398.48019, "r": 249.83562, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 406.31296, "r": 173.41306, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 173.10602, "t": 406.31296, "r": 185.0118, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 184.69221, "t": 406.31296, "r": 206.3858, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 206.07249, "t": 406.31296, "r": 228.24231000000003, "b": 411.95255, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH"}, {"label": "list_item", "id": 24, "page_no": 2, "cluster": {"id": 24, "label": "list_item", "bbox": {"l": 144.35208129882812, "t": 420.17449951171875, "r": 234.25163000000003, "b": 434.66763, "coord_origin": "TOPLEFT"}, "confidence": 0.9440370798110962, "cells": [{"id": 69, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 421.99773999999996, "r": 148.68732, "b": 426.5799, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "GLYPH", "bbox": {"l": 151.9388, "t": 421.1952800000001, "r": 155.43533, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 154.73979, "t": 421.1952800000001, "r": 166.06282, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 165.74324, "t": 421.1952800000001, "r": 195.84607, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 195.53903, "t": 421.1952800000001, "r": 202.43185, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 202.10602, "t": 421.1952800000001, "r": 222.87220999999997, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 222.55890000000002, "t": 421.1952800000001, "r": 229.57077, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "GLYPH GLYPH", "bbox": {"l": 229.24492999999998, "t": 421.1952800000001, "r": 234.25163000000003, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.92627, "t": 429.02805, "r": 181.42754, "b": 434.66763, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 181.1205, "t": 429.02805, "r": 201.07835, "b": 434.66763, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 200.76505, "t": 429.02805, "r": 207.65787, "b": 434.66763, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 207.33203, "t": 429.02805, "r": 232.07098000000002, "b": 434.66763, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH"}, {"label": "picture", "id": 25, "page_no": 2, "cluster": {"id": 25, "label": "picture", "bbox": {"l": 64.16704559326172, "t": 603.50634765625, "r": 258.77435302734375, "b": 688.1282348632812, "coord_origin": "TOPLEFT"}, "confidence": 0.8925828337669373, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 26, "page_no": 2, "cluster": {"id": 26, "label": "picture", "bbox": {"l": 143.39866638183594, "t": 270.2610778808594, "r": 179.56256103515625, "b": 285.621337890625, "coord_origin": "TOPLEFT"}, "confidence": 0.7491760849952698, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 0, "page_no": 2, "cluster": {"id": 0, "label": "text", "bbox": {"l": 64.800003, "t": 74.48395000000005, "r": 235.8624, "b": 85.58398, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 0, "text": "DB2 for i Center of Excellence", "bbox": {"l": 64.800003, "t": 74.48395000000005, "r": 235.8624, "b": 85.58398, "coord_origin": "TOPLEFT"}}]}, "text": "DB2 for i Center of Excellence"}, {"label": "text", "id": 1, "page_no": 2, "cluster": {"id": 1, "label": "text", "bbox": {"l": 93.67039489746094, "t": 137.6368408203125, "r": 233.99973, "b": 155.33642999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.7431555986404419, "cells": [{"id": 1, "text": "Solution Brief", "bbox": {"l": 94.132698, "t": 148.63933999999995, "r": 139.54634, "b": 155.33642999999995, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "IBM Systems Lab Services and Training", "bbox": {"l": 94.134933, "t": 138.45012999999994, "r": 233.99973, "b": 145.22162000000003, "coord_origin": "TOPLEFT"}}]}, "text": "Solution Brief IBM Systems Lab Services and Training"}, {"label": "text", "id": 2, "page_no": 2, "cluster": {"id": 2, "label": "text", "bbox": {"l": 460.8193359375, "t": 138.33865356445312, "r": 506.26178, "b": 145.42181000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.7798991203308105, "cells": [{"id": 3, "text": "Power Services", "bbox": {"l": 461.08859000000007, "t": 138.40752999999995, "r": 506.26178, "b": 145.42181000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Power Services"}, {"label": "section_header", "id": 3, "page_no": 2, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 280.07391357421875, "t": 237.7128143310547, "r": 463.80942, "b": 276.62054, "coord_origin": "TOPLEFT"}, "confidence": 0.7587877511978149, "cells": [{"id": 4, "text": "DB2 for i", "bbox": {"l": 280.24011, "t": 239.34265000000005, "r": 354.57022, "b": 256.26153999999997, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Center of Excellence ", "bbox": {"l": 280.24011, "t": 259.70165999999995, "r": 463.80942, "b": 276.62054, "coord_origin": "TOPLEFT"}}]}, "text": "DB2 for i Center of Excellence"}, {"label": "text", "id": 4, "page_no": 2, "cluster": {"id": 4, "label": "text", "bbox": {"l": 279.51953125, "t": 277.1574401855469, "r": 483.7276916503906, "b": 288.63494873046875, "coord_origin": "TOPLEFT"}, "confidence": 0.7965629696846008, "cells": [{"id": 6, "text": "Expert help to achieve your business requirements", "bbox": {"l": 280.24011, "t": 277.59027000000003, "r": 483.29572, "b": 287.45959, "coord_origin": "TOPLEFT"}}]}, "text": "Expert help to achieve your business requirements"}, {"label": "section_header", "id": 5, "page_no": 2, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 279.468994140625, "t": 315.0786437988281, "r": 443.375732421875, "b": 324.89566, "coord_origin": "TOPLEFT"}, "confidence": 0.891353964805603, "cells": [{"id": 7, "text": "We build confident, satisfied clients", "bbox": {"l": 280.24011, "t": 315.88161999999994, "r": 443.28210000000007, "b": 324.89566, "coord_origin": "TOPLEFT"}}]}, "text": "We build confident, satisfied clients"}, {"label": "text", "id": 6, "page_no": 2, "cluster": {"id": 6, "label": "text", "bbox": {"l": 279.530517578125, "t": 327.26470947265625, "r": 488.15466, "b": 345.5077209472656, "coord_origin": "TOPLEFT"}, "confidence": 0.9560743570327759, "cells": [{"id": 8, "text": "No one else has the vast consulting experiences, skills sharing and ", "bbox": {"l": 280.24011, "t": 327.37595, "r": 488.15466, "b": 334.77994, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "renown service offerings to do what we can do for you.", "bbox": {"l": 280.24011, "t": 337.55551, "r": 452.34018, "b": 344.9595, "coord_origin": "TOPLEFT"}}]}, "text": "No one else has the vast consulting experiences, skills sharing and renown service offerings to do what we can do for you."}, {"label": "text", "id": 7, "page_no": 2, "cluster": {"id": 7, "label": "text", "bbox": {"l": 280.0453186035156, "t": 356.5709533691406, "r": 367.86023, "b": 364.73001, "coord_origin": "TOPLEFT"}, "confidence": 0.8260757923126221, "cells": [{"id": 10, "text": "Because no one else is IBM.", "bbox": {"l": 280.24011, "t": 357.3260200000001, "r": 367.86023, "b": 364.73001, "coord_origin": "TOPLEFT"}}]}, "text": "Because no one else is IBM."}, {"label": "text", "id": 8, "page_no": 2, "cluster": {"id": 8, "label": "text", "bbox": {"l": 279.70794677734375, "t": 376.26104736328125, "r": 500.32104000000004, "b": 425.3092041015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9764720797538757, "cells": [{"id": 11, "text": "With combined experiences and direct access to development groups, ", "bbox": {"l": 280.24011, "t": 377.09801999999996, "r": 500.32104000000004, "b": 384.50201, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "we\u2019re the experts in IBM DB2\u00ae for i. The DB2 for i Center of ", "bbox": {"l": 280.24011, "t": 387.27759, "r": 479.25497, "b": 394.68158, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Excellence (CoE) can help you achieve-perhaps reexamine and ", "bbox": {"l": 280.24011, "t": 397.45715, "r": 483.4667400000001, "b": 404.86115, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "exceed-your business requirements and gain more confidence and ", "bbox": {"l": 280.24011, "t": 407.63672, "r": 492.97656, "b": 415.04071000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "satisfaction in IBM product data management products and solutions.", "bbox": {"l": 280.24011, "t": 417.81628, "r": 498.87, "b": 425.22027999999995, "coord_origin": "TOPLEFT"}}]}, "text": "With combined experiences and direct access to development groups, we\u2019re the experts in IBM DB2\u00ae for i. The DB2 for i Center of Excellence (CoE) can help you achieve-perhaps reexamine and exceed-your business requirements and gain more confidence and satisfaction in IBM product data management products and solutions."}, {"label": "section_header", "id": 9, "page_no": 2, "cluster": {"id": 9, "label": "section_header", "bbox": {"l": 279.6336669921875, "t": 437.1227722167969, "r": 435.1236572265625, "b": 446.86807, "coord_origin": "TOPLEFT"}, "confidence": 0.8492124676704407, "cells": [{"id": 16, "text": "Who we are, some of what we do", "bbox": {"l": 280.24011, "t": 437.85403, "r": 434.83205999999996, "b": 446.86807, "coord_origin": "TOPLEFT"}}]}, "text": "Who we are, some of what we do"}, {"label": "text", "id": 10, "page_no": 2, "cluster": {"id": 10, "label": "text", "bbox": {"l": 279.4736328125, "t": 449.2602233886719, "r": 434.56316999999996, "b": 457.4661865234375, "coord_origin": "TOPLEFT"}, "confidence": 0.8440341353416443, "cells": [{"id": 17, "text": "Global CoE engagements cover topics including:", "bbox": {"l": 280.24011, "t": 449.34824000000003, "r": 434.56316999999996, "b": 456.75223, "coord_origin": "TOPLEFT"}}]}, "text": "Global CoE engagements cover topics including:"}, {"label": "list_item", "id": 11, "page_no": 2, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 279.74200439453125, "t": 468.3660583496094, "r": 402.1675109863281, "b": 476.5758972167969, "coord_origin": "TOPLEFT"}, "confidence": 0.9239599108695984, "cells": [{"id": 18, "text": "r ", "bbox": {"l": 280.24011, "t": 470.95236, "r": 284.0993, "b": 476.16074, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Database performance and scalability", "bbox": {"l": 287.28961, "t": 469.11826, "r": 401.56412, "b": 476.52225, "coord_origin": "TOPLEFT"}}]}, "text": "r Database performance and scalability"}, {"label": "list_item", "id": 12, "page_no": 2, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 279.7657165527344, "t": 478.64898681640625, "r": 424.99646, "b": 486.78228759765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9239722490310669, "cells": [{"id": 20, "text": "r ", "bbox": {"l": 280.24011, "t": 481.13507, "r": 284.0993, "b": 486.34344, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Advanced SQL knowledge and skills transfer", "bbox": {"l": 287.28961, "t": 479.30096, "r": 424.99646, "b": 486.70496, "coord_origin": "TOPLEFT"}}]}, "text": "r Advanced SQL knowledge and skills transfer"}, {"label": "list_item", "id": 13, "page_no": 2, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 279.9660339355469, "t": 489.48355, "r": 392.2996520996094, "b": 497.1912841796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9157897233963013, "cells": [{"id": 22, "text": "r ", "bbox": {"l": 280.24011, "t": 491.31766, "r": 284.0993, "b": 496.52603, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Business intelligence and analytics", "bbox": {"l": 287.28961, "t": 489.48355, "r": 392.15845, "b": 496.88754, "coord_origin": "TOPLEFT"}}]}, "text": "r Business intelligence and analytics"}, {"label": "list_item", "id": 14, "page_no": 2, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 279.9432067871094, "t": 499.5702819824219, "r": 339.94354, "b": 507.2607727050781, "coord_origin": "TOPLEFT"}, "confidence": 0.8733457922935486, "cells": [{"id": 24, "text": "r ", "bbox": {"l": 280.24011, "t": 501.50037, "r": 284.0993, "b": 506.70874, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "DB2 Web Query", "bbox": {"l": 287.28961, "t": 499.66626, "r": 339.94354, "b": 507.07025, "coord_origin": "TOPLEFT"}}]}, "text": "r DB2 Web Query"}, {"label": "list_item", "id": 15, "page_no": 2, "cluster": {"id": 15, "label": "list_item", "bbox": {"l": 279.68328857421875, "t": 509.4296875, "r": 504.21795654296875, "b": 517.4979858398438, "coord_origin": "TOPLEFT"}, "confidence": 0.924924373626709, "cells": [{"id": 26, "text": "r ", "bbox": {"l": 280.24011, "t": 511.68295, "r": 284.0993, "b": 516.8913299999999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Query/400 modernization for better reporting and analysis capabilities", "bbox": {"l": 287.28961, "t": 509.84885, "r": 504.19314999999995, "b": 517.25284, "coord_origin": "TOPLEFT"}}]}, "text": "r Query/400 modernization for better reporting and analysis capabilities"}, {"label": "list_item", "id": 16, "page_no": 2, "cluster": {"id": 16, "label": "list_item", "bbox": {"l": 279.66998291015625, "t": 520.03156, "r": 423.0022, "b": 528.0305786132812, "coord_origin": "TOPLEFT"}, "confidence": 0.9109311103820801, "cells": [{"id": 28, "text": "r ", "bbox": {"l": 280.24011, "t": 521.8656599999999, "r": 284.0993, "b": 527.07404, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Database modernization and re-engineering", "bbox": {"l": 287.28961, "t": 520.03156, "r": 423.0022, "b": 527.4355499999999, "coord_origin": "TOPLEFT"}}]}, "text": "r Database modernization and re-engineering"}, {"label": "list_item", "id": 17, "page_no": 2, "cluster": {"id": 17, "label": "list_item", "bbox": {"l": 279.7203674316406, "t": 529.9635620117188, "r": 400.07391357421875, "b": 537.8783569335938, "coord_origin": "TOPLEFT"}, "confidence": 0.8977466225624084, "cells": [{"id": 30, "text": "r ", "bbox": {"l": 280.24011, "t": 532.04825, "r": 284.0993, "b": 537.2566400000001, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Data-centric architecture and design", "bbox": {"l": 287.28961, "t": 530.21414, "r": 399.65173, "b": 537.61813, "coord_origin": "TOPLEFT"}}]}, "text": "r Data-centric architecture and design"}, {"label": "list_item", "id": 18, "page_no": 2, "cluster": {"id": 18, "label": "list_item", "bbox": {"l": 279.7815856933594, "t": 539.8663330078125, "r": 467.2125549316406, "b": 547.80074, "coord_origin": "TOPLEFT"}, "confidence": 0.9218330383300781, "cells": [{"id": 32, "text": "r ", "bbox": {"l": 280.24011, "t": 542.23083, "r": 284.0993, "b": 547.43924, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Extremely large database and overcoming limits to growth", "bbox": {"l": 287.28961, "t": 540.39674, "r": 466.77881, "b": 547.80074, "coord_origin": "TOPLEFT"}}]}, "text": "r Extremely large database and overcoming limits to growth"}, {"label": "list_item", "id": 19, "page_no": 2, "cluster": {"id": 19, "label": "list_item", "bbox": {"l": 279.89080810546875, "t": 550.0230102539062, "r": 382.3631591796875, "b": 557.98344, "coord_origin": "TOPLEFT"}, "confidence": 0.9075438976287842, "cells": [{"id": 34, "text": "r ", "bbox": {"l": 280.24011, "t": 552.41354, "r": 284.0993, "b": 557.62195, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "ISV education and enablement", "bbox": {"l": 287.28961, "t": 550.5794500000001, "r": 382.20956, "b": 557.98344, "coord_origin": "TOPLEFT"}}]}, "text": "r ISV education and enablement"}, {"label": "section_header", "id": 20, "page_no": 2, "cluster": {"id": 20, "label": "section_header", "bbox": {"l": 144.19781494140625, "t": 327.06201171875, "r": 188.74681, "b": 337.35504150390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9098501205444336, "cells": [{"id": 36, "text": "Highlights ", "bbox": {"l": 144.88921, "t": 327.46163999999993, "r": 188.74681, "b": 336.81406, "coord_origin": "TOPLEFT"}}]}, "text": "Highlights"}, {"label": "list_item", "id": 21, "page_no": 2, "cluster": {"id": 21, "label": "list_item", "bbox": {"l": 144.4553985595703, "t": 344.037109375, "r": 242.87389000000002, "b": 358.68942, "coord_origin": "TOPLEFT"}, "confidence": 0.9571698904037476, "cells": [{"id": 37, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 346.01953, "r": 148.68732, "b": 350.60168, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.9388, "t": 345.21707, "r": 177.25424, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 176.9472, "t": 345.21707, "r": 187.11098, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 186.7914, "t": 345.21707, "r": 222.95989999999998, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 222.65912, "t": 345.21707, "r": 229.55193999999997, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "GLYPHGLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 229.2261, "t": 345.21707, "r": 242.87389000000002, "b": 350.85666, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 353.04984, "r": 178.77066, "b": 358.68942, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 178.46362, "t": 353.04984, "r": 207.16908, "b": 358.68942, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH"}, {"label": "list_item", "id": 22, "page_no": 2, "cluster": {"id": 22, "label": "list_item", "bbox": {"l": 144.40879821777344, "t": 366.6461486816406, "r": 259.2287, "b": 389.2373, "coord_origin": "TOPLEFT"}, "confidence": 0.9634581804275513, "cells": [{"id": 45, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 368.73465, "r": 148.68732, "b": 373.3168, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "GLYPHGLYPHGLYPH GLYPHGLYPH", "bbox": {"l": 151.9388, "t": 367.93219, "r": 166.05655, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 165.73697, "t": 367.93219, "r": 186.40289, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPH", "bbox": {"l": 186.09586, "t": 367.93219, "r": 203.61617, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 203.30286, "t": 367.93219, "r": 211.82489, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 211.49905, "t": 367.93219, "r": 218.16002, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 217.83418, "t": 367.93219, "r": 241.30737, "b": 373.57178, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 375.76495, "r": 174.46577, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 174.15874, "t": 375.76495, "r": 214.4128, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 214.11829, "t": 375.76495, "r": 221.01110999999997, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 220.68527, "t": 375.76495, "r": 247.52341000000004, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "GLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 247.21637, "t": 375.76495, "r": 259.2287, "b": 381.40454, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 383.59772, "r": 184.61703, "b": 389.2373, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH"}, {"label": "list_item", "id": 23, "page_no": 2, "cluster": {"id": 23, "label": "list_item", "bbox": {"l": 144.23313903808594, "t": 397.1644592285156, "r": 249.83562, "b": 412.3861083984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9541196823120117, "cells": [{"id": 58, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 399.28265, "r": 148.68732, "b": 403.86481000000003, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "GLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.9388, "t": 398.48019, "r": 165.36099, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 165.04141, "t": 398.48019, "r": 173.56345, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 173.23761, "t": 398.48019, "r": 185.95174, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 185.63216, "t": 398.48019, "r": 204.42448, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 204.11118, "t": 398.48019, "r": 235.29178, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH", "bbox": {"l": 234.99099999999999, "t": 398.48019, "r": 249.83562, "b": 404.11978, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.93253, "t": 406.31296, "r": 173.41306, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 173.10602, "t": 406.31296, "r": 185.0118, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 184.69221, "t": 406.31296, "r": 206.3858, "b": 411.95255, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 206.07249, "t": 406.31296, "r": 228.24231000000003, "b": 411.95255, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH"}, {"label": "list_item", "id": 24, "page_no": 2, "cluster": {"id": 24, "label": "list_item", "bbox": {"l": 144.35208129882812, "t": 420.17449951171875, "r": 234.25163000000003, "b": 434.66763, "coord_origin": "TOPLEFT"}, "confidence": 0.9440370798110962, "cells": [{"id": 69, "text": "GLYPHGLYPH", "bbox": {"l": 144.88921, "t": 421.99773999999996, "r": 148.68732, "b": 426.5799, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "GLYPH", "bbox": {"l": 151.9388, "t": 421.1952800000001, "r": 155.43533, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "GLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 154.73979, "t": 421.1952800000001, "r": 166.06282, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 165.74324, "t": 421.1952800000001, "r": 195.84607, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 195.53903, "t": 421.1952800000001, "r": 202.43185, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 202.10602, "t": 421.1952800000001, "r": 222.87220999999997, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 222.55890000000002, "t": 421.1952800000001, "r": 229.57077, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "GLYPH GLYPH", "bbox": {"l": 229.24492999999998, "t": 421.1952800000001, "r": 234.25163000000003, "b": 426.83487, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 151.92627, "t": 429.02805, "r": 181.42754, "b": 434.66763, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 181.1205, "t": 429.02805, "r": 201.07835, "b": 434.66763, "coord_origin": "TOPLEFT"}}, {"id": 79, "text": "GLYPHGLYPHGLYPH", "bbox": {"l": 200.76505, "t": 429.02805, "r": 207.65787, "b": 434.66763, "coord_origin": "TOPLEFT"}}, {"id": 80, "text": "GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH", "bbox": {"l": 207.33203, "t": 429.02805, "r": 232.07098000000002, "b": 434.66763, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPHGLYPH GLYPH GLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPH GLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH GLYPHGLYPHGLYPH GLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPHGLYPH"}, {"label": "picture", "id": 25, "page_no": 2, "cluster": {"id": 25, "label": "picture", "bbox": {"l": 64.16704559326172, "t": 603.50634765625, "r": 258.77435302734375, "b": 688.1282348632812, "coord_origin": "TOPLEFT"}, "confidence": 0.8925828337669373, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 26, "page_no": 2, "cluster": {"id": 26, "label": "picture", "bbox": {"l": 143.39866638183594, "t": 270.2610778808594, "r": 179.56256103515625, "b": 285.621337890625, "coord_origin": "TOPLEFT"}, "confidence": 0.7491760849952698, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": []}}, {"page_no": 3, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "xi", "bbox": {"l": 538.85999, "t": 754.848721, "r": 547.25031, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Preface", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 151.46161, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "This IBMfi Redpaper\u2122 publication provides information about the IBM i 7.2 feature of IBM ", "bbox": {"l": 136.8, "t": 132.64862000000005, "r": 542.91888, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "DB2fi for i Row and Column Access Control (RCAC). It offers a broad description of the ", "bbox": {"l": 136.79984, "t": 144.64844000000005, "r": 526.65509, "b": 153.86145, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "function and advantages of controlling access to data in a comprehensive and transparent ", "bbox": {"l": 136.79984, "t": 156.64824999999996, "r": 536.82135, "b": 165.86127, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "way. This publication helps you understand the capabilities of RCAC and provides examples ", "bbox": {"l": 136.79987, "t": 168.64806999999996, "r": 544.67975, "b": 177.86108000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "of defining, creating, and implementing the row permissions and column masks in a relational ", "bbox": {"l": 136.79987, "t": 180.64788999999996, "r": 547.30823, "b": 189.86090000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "database environment.", "bbox": {"l": 136.79987, "t": 192.64770999999996, "r": 238.32117, "b": 201.86072000000001, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "This paper is intended for database engineers, data-centric application developers, and ", "bbox": {"l": 136.79987, "t": 214.60748, "r": 524.18518, "b": 223.82050000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "security officers who want to design and implement RCAC as a part of their data control and ", "bbox": {"l": 136.79987, "t": 226.6073, "r": 546.4657, "b": 235.82030999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "governance policy. A solid background in IBM i object level security, DB2 for i relational ", "bbox": {"l": 136.79987, "t": 238.60712, "r": 521.25488, "b": 247.82012999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "database concepts, and SQL is assumed.", "bbox": {"l": 136.79987, "t": 250.60693000000003, "r": 321.69434, "b": 259.81994999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Authors", "bbox": {"l": 64.800003, "t": 288.3006, "r": 125.36661, "b": 303.0636, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "This paper was produced by the IBM DB2 for i Center of Excellence team in partnership with ", "bbox": {"l": 136.8, "t": 320.62871999999993, "r": 547.23669, "b": 329.8417099999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "the International Technical Support Organization (ITSO), Rochester, Minnesota US.", "bbox": {"l": 136.8, "t": 332.62854, "r": 505.05518, "b": 341.84152, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Jim Bainbridge", "bbox": {"l": 263.39957, "t": 375.64877, "r": 335.7251, "b": 384.86176, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": " is a senior DB2 consultant on the DB2 for i ", "bbox": {"l": 335.69922, "t": 375.64877, "r": 529.34259, "b": 384.86176, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Center of Excellence team in the IBM Lab Services and ", "bbox": {"l": 263.3996, "t": 387.64859, "r": 511.50717, "b": 396.86157, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Training organization. His primary role is training and ", "bbox": {"l": 263.3996, "t": 399.64841, "r": 499.077, "b": 408.86139, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "implementation services for IBM DB2 Web Query for i and ", "bbox": {"l": 263.3996, "t": 411.64822, "r": 522.51996, "b": 420.86121, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "business analytics. Jim began his career with IBM 30 years ago ", "bbox": {"l": 263.3996, "t": 423.64804, "r": 541.25079, "b": 432.86102, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "in the IBM Rochester Development Lab, where he developed ", "bbox": {"l": 263.3996, "t": 435.64786, "r": 534.71411, "b": 444.86084, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "cooperative processing products that paired IBM PCs with IBM ", "bbox": {"l": 263.3996, "t": 447.64767, "r": 541.22375, "b": 456.86066, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "S/36 and AS/.400 systems. In the years since, Jim has held ", "bbox": {"l": 263.3996, "t": 459.64749, "r": 528.91016, "b": 468.86047, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "numerous technical roles, including independent software ", "bbox": {"l": 263.3996, "t": 471.64731, "r": 520.24207, "b": 480.86029, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "vendors technical support on a broad range of IBM ", "bbox": {"l": 263.3996, "t": 483.64713, "r": 490.6967200000001, "b": 492.86011, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "technologies and products, and supporting customers in the ", "bbox": {"l": 263.3996, "t": 495.64694, "r": 530.95514, "b": 504.85992, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IBM Executive Briefing Center and IBM Project Office.", "bbox": {"l": 263.3996, "t": 507.64676, "r": 501.62973, "b": 516.85974, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Hernando Bedoya", "bbox": {"l": 263.3996, "t": 527.62653, "r": 348.38229, "b": 536.83952, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": " is a Senior IT Specialist at STG Lab ", "bbox": {"l": 348.41916, "t": 527.62653, "r": 512.3429, "b": 536.83952, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Services and Training in Rochester, Minnesota. He writes ", "bbox": {"l": 263.3996, "t": 539.62633, "r": 519.26306, "b": 548.83932, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "extensively and teaches IBM classes worldwide in all areas of ", "bbox": {"l": 263.3996, "t": 551.62613, "r": 538.40308, "b": 560.8391300000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "DB2 for i. Before joining STG Lab Services, he worked in the ", "bbox": {"l": 263.3996, "t": 563.62593, "r": 533.95715, "b": 572.83893, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "ITSO for nine years writing multiple IBM Redbooksfi ", "bbox": {"l": 263.3996, "t": 575.62573, "r": 496.94464, "b": 584.8387299999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "publications. He also worked for IBM Colombia as an IBM ", "bbox": {"l": 263.3996, "t": 587.62553, "r": 520.38562, "b": 596.83853, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "AS/400fi IT Specialist doing presales support for the Andean ", "bbox": {"l": 263.3996, "t": 599.62534, "r": 535.99078, "b": 608.83833, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "countries. He has 28 years of experience in the computing field ", "bbox": {"l": 263.3996, "t": 611.62514, "r": 541.27374, "b": 620.83813, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "and has taught database classes in Colombian universities. He ", "bbox": {"l": 263.3996, "t": 623.62494, "r": 541.26465, "b": 632.83794, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "holds a Master\u2019s degree in Computer Science from EAFIT, ", "bbox": {"l": 263.3996, "t": 635.62474, "r": 523.22211, "b": 644.8377399999999, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Colombia. His areas of expertise are database technology, ", "bbox": {"l": 263.3996, "t": 647.62454, "r": 524.77386, "b": 656.83754, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "performance, and data warehousing. Hernando can be ", "bbox": {"l": 263.3996, "t": 659.62434, "r": 508.27124, "b": 668.83735, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "contacted at ", "bbox": {"l": 263.3996, "t": 671.62415, "r": 320.63568, "b": 680.83716, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "hbedoya@us.ibm.com", "bbox": {"l": 320.63971, "t": 671.77356, "r": 410.57852, "b": 680.54832, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": ".", "bbox": {"l": 410.5795, "t": 671.62415, "r": 413.34839, "b": 680.83716, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.724002838134766, "t": 754.7037963867188, "r": 257.24335, "b": 764.1082153320312, "coord_origin": "TOPLEFT"}, "confidence": 0.9469243884086609, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 538.058349609375, "t": 754.3980102539062, "r": 547.25031, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9040942788124084, "cells": [{"id": 1, "text": "xi", "bbox": {"l": 538.85999, "t": 754.848721, "r": 547.25031, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.800003, "t": 73.10313415527344, "r": 151.46161, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9174708724021912, "cells": [{"id": 2, "text": "Preface", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 151.46161, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.75503540039062, "t": 131.914306640625, "r": 547.30823, "b": 201.86072000000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9869155883789062, "cells": [{"id": 3, "text": "This IBMfi Redpaper\u2122 publication provides information about the IBM i 7.2 feature of IBM ", "bbox": {"l": 136.8, "t": 132.64862000000005, "r": 542.91888, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "DB2fi for i Row and Column Access Control (RCAC). It offers a broad description of the ", "bbox": {"l": 136.79984, "t": 144.64844000000005, "r": 526.65509, "b": 153.86145, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "function and advantages of controlling access to data in a comprehensive and transparent ", "bbox": {"l": 136.79984, "t": 156.64824999999996, "r": 536.82135, "b": 165.86127, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "way. This publication helps you understand the capabilities of RCAC and provides examples ", "bbox": {"l": 136.79987, "t": 168.64806999999996, "r": 544.67975, "b": 177.86108000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "of defining, creating, and implementing the row permissions and column masks in a relational ", "bbox": {"l": 136.79987, "t": 180.64788999999996, "r": 547.30823, "b": 189.86090000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "database environment.", "bbox": {"l": 136.79987, "t": 192.64770999999996, "r": 238.32117, "b": 201.86072000000001, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.94647216796875, "t": 214.0637664794922, "r": 546.4657, "b": 260.1856384277344, "coord_origin": "TOPLEFT"}, "confidence": 0.987220287322998, "cells": [{"id": 9, "text": "This paper is intended for database engineers, data-centric application developers, and ", "bbox": {"l": 136.79987, "t": 214.60748, "r": 524.18518, "b": 223.82050000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "security officers who want to design and implement RCAC as a part of their data control and ", "bbox": {"l": 136.79987, "t": 226.6073, "r": 546.4657, "b": 235.82030999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "governance policy. A solid background in IBM i object level security, DB2 for i relational ", "bbox": {"l": 136.79987, "t": 238.60712, "r": 521.25488, "b": 247.82012999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "database concepts, and SQL is assumed.", "bbox": {"l": 136.79987, "t": 250.60693000000003, "r": 321.69434, "b": 259.81994999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "section_header", "bbox": {"l": 64.22550201416016, "t": 287.1894226074219, "r": 125.36661, "b": 303.0636, "coord_origin": "TOPLEFT"}, "confidence": 0.9255504608154297, "cells": [{"id": 13, "text": "Authors", "bbox": {"l": 64.800003, "t": 288.3006, "r": 125.36661, "b": 303.0636, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 135.71319580078125, "t": 319.8118591308594, "r": 547.23669, "b": 342.1517028808594, "coord_origin": "TOPLEFT"}, "confidence": 0.9713318347930908, "cells": [{"id": 14, "text": "This paper was produced by the IBM DB2 for i Center of Excellence team in partnership with ", "bbox": {"l": 136.8, "t": 320.62871999999993, "r": 547.23669, "b": 329.8417099999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "the International Technical Support Organization (ITSO), Rochester, Minnesota US.", "bbox": {"l": 136.8, "t": 332.62854, "r": 505.05518, "b": 341.84152, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 262.6522521972656, "t": 374.687255859375, "r": 541.25079, "b": 516.9314575195312, "coord_origin": "TOPLEFT"}, "confidence": 0.9842760562896729, "cells": [{"id": 16, "text": "Jim Bainbridge", "bbox": {"l": 263.39957, "t": 375.64877, "r": 335.7251, "b": 384.86176, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": " is a senior DB2 consultant on the DB2 for i ", "bbox": {"l": 335.69922, "t": 375.64877, "r": 529.34259, "b": 384.86176, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Center of Excellence team in the IBM Lab Services and ", "bbox": {"l": 263.3996, "t": 387.64859, "r": 511.50717, "b": 396.86157, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Training organization. His primary role is training and ", "bbox": {"l": 263.3996, "t": 399.64841, "r": 499.077, "b": 408.86139, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "implementation services for IBM DB2 Web Query for i and ", "bbox": {"l": 263.3996, "t": 411.64822, "r": 522.51996, "b": 420.86121, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "business analytics. Jim began his career with IBM 30 years ago ", "bbox": {"l": 263.3996, "t": 423.64804, "r": 541.25079, "b": 432.86102, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "in the IBM Rochester Development Lab, where he developed ", "bbox": {"l": 263.3996, "t": 435.64786, "r": 534.71411, "b": 444.86084, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "cooperative processing products that paired IBM PCs with IBM ", "bbox": {"l": 263.3996, "t": 447.64767, "r": 541.22375, "b": 456.86066, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "S/36 and AS/.400 systems. In the years since, Jim has held ", "bbox": {"l": 263.3996, "t": 459.64749, "r": 528.91016, "b": 468.86047, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "numerous technical roles, including independent software ", "bbox": {"l": 263.3996, "t": 471.64731, "r": 520.24207, "b": 480.86029, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "vendors technical support on a broad range of IBM ", "bbox": {"l": 263.3996, "t": 483.64713, "r": 490.6967200000001, "b": 492.86011, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "technologies and products, and supporting customers in the ", "bbox": {"l": 263.3996, "t": 495.64694, "r": 530.95514, "b": 504.85992, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IBM Executive Briefing Center and IBM Project Office.", "bbox": {"l": 263.3996, "t": 507.64676, "r": 501.62973, "b": 516.85974, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 262.4736328125, "t": 526.50830078125, "r": 541.27374, "b": 680.83716, "coord_origin": "TOPLEFT"}, "confidence": 0.9823779463768005, "cells": [{"id": 29, "text": "Hernando Bedoya", "bbox": {"l": 263.3996, "t": 527.62653, "r": 348.38229, "b": 536.83952, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": " is a Senior IT Specialist at STG Lab ", "bbox": {"l": 348.41916, "t": 527.62653, "r": 512.3429, "b": 536.83952, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Services and Training in Rochester, Minnesota. He writes ", "bbox": {"l": 263.3996, "t": 539.62633, "r": 519.26306, "b": 548.83932, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "extensively and teaches IBM classes worldwide in all areas of ", "bbox": {"l": 263.3996, "t": 551.62613, "r": 538.40308, "b": 560.8391300000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "DB2 for i. Before joining STG Lab Services, he worked in the ", "bbox": {"l": 263.3996, "t": 563.62593, "r": 533.95715, "b": 572.83893, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "ITSO for nine years writing multiple IBM Redbooksfi ", "bbox": {"l": 263.3996, "t": 575.62573, "r": 496.94464, "b": 584.8387299999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "publications. He also worked for IBM Colombia as an IBM ", "bbox": {"l": 263.3996, "t": 587.62553, "r": 520.38562, "b": 596.83853, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "AS/400fi IT Specialist doing presales support for the Andean ", "bbox": {"l": 263.3996, "t": 599.62534, "r": 535.99078, "b": 608.83833, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "countries. He has 28 years of experience in the computing field ", "bbox": {"l": 263.3996, "t": 611.62514, "r": 541.27374, "b": 620.83813, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "and has taught database classes in Colombian universities. He ", "bbox": {"l": 263.3996, "t": 623.62494, "r": 541.26465, "b": 632.83794, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "holds a Master\u2019s degree in Computer Science from EAFIT, ", "bbox": {"l": 263.3996, "t": 635.62474, "r": 523.22211, "b": 644.8377399999999, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Colombia. His areas of expertise are database technology, ", "bbox": {"l": 263.3996, "t": 647.62454, "r": 524.77386, "b": 656.83754, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "performance, and data warehousing. Hernando can be ", "bbox": {"l": 263.3996, "t": 659.62434, "r": 508.27124, "b": 668.83735, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "contacted at ", "bbox": {"l": 263.3996, "t": 671.62415, "r": 320.63568, "b": 680.83716, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "hbedoya@us.ibm.com", "bbox": {"l": 320.63971, "t": 671.77356, "r": 410.57852, "b": 680.54832, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": ".", "bbox": {"l": 410.5795, "t": 671.62415, "r": 413.34839, "b": 680.83716, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "picture", "bbox": {"l": 145.41448974609375, "t": 527.2447509765625, "r": 252.08840942382812, "b": 635.383056640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9871657490730286, "cells": []}, {"id": 10, "label": "picture", "bbox": {"l": 142.52883911132812, "t": 375.0449523925781, "r": 251.47850036621094, "b": 503.20648193359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9862572550773621, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 3, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.724002838134766, "t": 754.7037963867188, "r": 257.24335, "b": 764.1082153320312, "coord_origin": "TOPLEFT"}, "confidence": 0.9469243884086609, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 3, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 538.058349609375, "t": 754.3980102539062, "r": 547.25031, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9040942788124084, "cells": [{"id": 1, "text": "xi", "bbox": {"l": 538.85999, "t": 754.848721, "r": 547.25031, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "xi"}, {"label": "section_header", "id": 2, "page_no": 3, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.800003, "t": 73.10313415527344, "r": 151.46161, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9174708724021912, "cells": [{"id": 2, "text": "Preface", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 151.46161, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Preface"}, {"label": "text", "id": 3, "page_no": 3, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.75503540039062, "t": 131.914306640625, "r": 547.30823, "b": 201.86072000000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9869155883789062, "cells": [{"id": 3, "text": "This IBMfi Redpaper\u2122 publication provides information about the IBM i 7.2 feature of IBM ", "bbox": {"l": 136.8, "t": 132.64862000000005, "r": 542.91888, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "DB2fi for i Row and Column Access Control (RCAC). It offers a broad description of the ", "bbox": {"l": 136.79984, "t": 144.64844000000005, "r": 526.65509, "b": 153.86145, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "function and advantages of controlling access to data in a comprehensive and transparent ", "bbox": {"l": 136.79984, "t": 156.64824999999996, "r": 536.82135, "b": 165.86127, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "way. This publication helps you understand the capabilities of RCAC and provides examples ", "bbox": {"l": 136.79987, "t": 168.64806999999996, "r": 544.67975, "b": 177.86108000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "of defining, creating, and implementing the row permissions and column masks in a relational ", "bbox": {"l": 136.79987, "t": 180.64788999999996, "r": 547.30823, "b": 189.86090000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "database environment.", "bbox": {"l": 136.79987, "t": 192.64770999999996, "r": 238.32117, "b": 201.86072000000001, "coord_origin": "TOPLEFT"}}]}, "text": "This IBMfi Redpaper\u2122 publication provides information about the IBM i 7.2 feature of IBM DB2fi for i Row and Column Access Control (RCAC). It offers a broad description of the function and advantages of controlling access to data in a comprehensive and transparent way. This publication helps you understand the capabilities of RCAC and provides examples of defining, creating, and implementing the row permissions and column masks in a relational database environment."}, {"label": "text", "id": 4, "page_no": 3, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.94647216796875, "t": 214.0637664794922, "r": 546.4657, "b": 260.1856384277344, "coord_origin": "TOPLEFT"}, "confidence": 0.987220287322998, "cells": [{"id": 9, "text": "This paper is intended for database engineers, data-centric application developers, and ", "bbox": {"l": 136.79987, "t": 214.60748, "r": 524.18518, "b": 223.82050000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "security officers who want to design and implement RCAC as a part of their data control and ", "bbox": {"l": 136.79987, "t": 226.6073, "r": 546.4657, "b": 235.82030999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "governance policy. A solid background in IBM i object level security, DB2 for i relational ", "bbox": {"l": 136.79987, "t": 238.60712, "r": 521.25488, "b": 247.82012999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "database concepts, and SQL is assumed.", "bbox": {"l": 136.79987, "t": 250.60693000000003, "r": 321.69434, "b": 259.81994999999995, "coord_origin": "TOPLEFT"}}]}, "text": "This paper is intended for database engineers, data-centric application developers, and security officers who want to design and implement RCAC as a part of their data control and governance policy. A solid background in IBM i object level security, DB2 for i relational database concepts, and SQL is assumed."}, {"label": "section_header", "id": 5, "page_no": 3, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 64.22550201416016, "t": 287.1894226074219, "r": 125.36661, "b": 303.0636, "coord_origin": "TOPLEFT"}, "confidence": 0.9255504608154297, "cells": [{"id": 13, "text": "Authors", "bbox": {"l": 64.800003, "t": 288.3006, "r": 125.36661, "b": 303.0636, "coord_origin": "TOPLEFT"}}]}, "text": "Authors"}, {"label": "text", "id": 6, "page_no": 3, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.71319580078125, "t": 319.8118591308594, "r": 547.23669, "b": 342.1517028808594, "coord_origin": "TOPLEFT"}, "confidence": 0.9713318347930908, "cells": [{"id": 14, "text": "This paper was produced by the IBM DB2 for i Center of Excellence team in partnership with ", "bbox": {"l": 136.8, "t": 320.62871999999993, "r": 547.23669, "b": 329.8417099999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "the International Technical Support Organization (ITSO), Rochester, Minnesota US.", "bbox": {"l": 136.8, "t": 332.62854, "r": 505.05518, "b": 341.84152, "coord_origin": "TOPLEFT"}}]}, "text": "This paper was produced by the IBM DB2 for i Center of Excellence team in partnership with the International Technical Support Organization (ITSO), Rochester, Minnesota US."}, {"label": "text", "id": 7, "page_no": 3, "cluster": {"id": 7, "label": "text", "bbox": {"l": 262.6522521972656, "t": 374.687255859375, "r": 541.25079, "b": 516.9314575195312, "coord_origin": "TOPLEFT"}, "confidence": 0.9842760562896729, "cells": [{"id": 16, "text": "Jim Bainbridge", "bbox": {"l": 263.39957, "t": 375.64877, "r": 335.7251, "b": 384.86176, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": " is a senior DB2 consultant on the DB2 for i ", "bbox": {"l": 335.69922, "t": 375.64877, "r": 529.34259, "b": 384.86176, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Center of Excellence team in the IBM Lab Services and ", "bbox": {"l": 263.3996, "t": 387.64859, "r": 511.50717, "b": 396.86157, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Training organization. His primary role is training and ", "bbox": {"l": 263.3996, "t": 399.64841, "r": 499.077, "b": 408.86139, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "implementation services for IBM DB2 Web Query for i and ", "bbox": {"l": 263.3996, "t": 411.64822, "r": 522.51996, "b": 420.86121, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "business analytics. Jim began his career with IBM 30 years ago ", "bbox": {"l": 263.3996, "t": 423.64804, "r": 541.25079, "b": 432.86102, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "in the IBM Rochester Development Lab, where he developed ", "bbox": {"l": 263.3996, "t": 435.64786, "r": 534.71411, "b": 444.86084, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "cooperative processing products that paired IBM PCs with IBM ", "bbox": {"l": 263.3996, "t": 447.64767, "r": 541.22375, "b": 456.86066, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "S/36 and AS/.400 systems. In the years since, Jim has held ", "bbox": {"l": 263.3996, "t": 459.64749, "r": 528.91016, "b": 468.86047, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "numerous technical roles, including independent software ", "bbox": {"l": 263.3996, "t": 471.64731, "r": 520.24207, "b": 480.86029, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "vendors technical support on a broad range of IBM ", "bbox": {"l": 263.3996, "t": 483.64713, "r": 490.6967200000001, "b": 492.86011, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "technologies and products, and supporting customers in the ", "bbox": {"l": 263.3996, "t": 495.64694, "r": 530.95514, "b": 504.85992, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IBM Executive Briefing Center and IBM Project Office.", "bbox": {"l": 263.3996, "t": 507.64676, "r": 501.62973, "b": 516.85974, "coord_origin": "TOPLEFT"}}]}, "text": "Jim Bainbridge is a senior DB2 consultant on the DB2 for i Center of Excellence team in the IBM Lab Services and Training organization. His primary role is training and implementation services for IBM DB2 Web Query for i and business analytics. Jim began his career with IBM 30 years ago in the IBM Rochester Development Lab, where he developed cooperative processing products that paired IBM PCs with IBM S/36 and AS/.400 systems. In the years since, Jim has held numerous technical roles, including independent software vendors technical support on a broad range of IBM technologies and products, and supporting customers in the IBM Executive Briefing Center and IBM Project Office."}, {"label": "text", "id": 8, "page_no": 3, "cluster": {"id": 8, "label": "text", "bbox": {"l": 262.4736328125, "t": 526.50830078125, "r": 541.27374, "b": 680.83716, "coord_origin": "TOPLEFT"}, "confidence": 0.9823779463768005, "cells": [{"id": 29, "text": "Hernando Bedoya", "bbox": {"l": 263.3996, "t": 527.62653, "r": 348.38229, "b": 536.83952, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": " is a Senior IT Specialist at STG Lab ", "bbox": {"l": 348.41916, "t": 527.62653, "r": 512.3429, "b": 536.83952, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Services and Training in Rochester, Minnesota. He writes ", "bbox": {"l": 263.3996, "t": 539.62633, "r": 519.26306, "b": 548.83932, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "extensively and teaches IBM classes worldwide in all areas of ", "bbox": {"l": 263.3996, "t": 551.62613, "r": 538.40308, "b": 560.8391300000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "DB2 for i. Before joining STG Lab Services, he worked in the ", "bbox": {"l": 263.3996, "t": 563.62593, "r": 533.95715, "b": 572.83893, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "ITSO for nine years writing multiple IBM Redbooksfi ", "bbox": {"l": 263.3996, "t": 575.62573, "r": 496.94464, "b": 584.8387299999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "publications. He also worked for IBM Colombia as an IBM ", "bbox": {"l": 263.3996, "t": 587.62553, "r": 520.38562, "b": 596.83853, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "AS/400fi IT Specialist doing presales support for the Andean ", "bbox": {"l": 263.3996, "t": 599.62534, "r": 535.99078, "b": 608.83833, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "countries. He has 28 years of experience in the computing field ", "bbox": {"l": 263.3996, "t": 611.62514, "r": 541.27374, "b": 620.83813, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "and has taught database classes in Colombian universities. He ", "bbox": {"l": 263.3996, "t": 623.62494, "r": 541.26465, "b": 632.83794, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "holds a Master\u2019s degree in Computer Science from EAFIT, ", "bbox": {"l": 263.3996, "t": 635.62474, "r": 523.22211, "b": 644.8377399999999, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Colombia. His areas of expertise are database technology, ", "bbox": {"l": 263.3996, "t": 647.62454, "r": 524.77386, "b": 656.83754, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "performance, and data warehousing. Hernando can be ", "bbox": {"l": 263.3996, "t": 659.62434, "r": 508.27124, "b": 668.83735, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "contacted at ", "bbox": {"l": 263.3996, "t": 671.62415, "r": 320.63568, "b": 680.83716, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "hbedoya@us.ibm.com", "bbox": {"l": 320.63971, "t": 671.77356, "r": 410.57852, "b": 680.54832, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": ".", "bbox": {"l": 410.5795, "t": 671.62415, "r": 413.34839, "b": 680.83716, "coord_origin": "TOPLEFT"}}]}, "text": "Hernando Bedoya is a Senior IT Specialist at STG Lab Services and Training in Rochester, Minnesota. He writes extensively and teaches IBM classes worldwide in all areas of DB2 for i. Before joining STG Lab Services, he worked in the ITSO for nine years writing multiple IBM Redbooksfi publications. He also worked for IBM Colombia as an IBM AS/400fi IT Specialist doing presales support for the Andean countries. He has 28 years of experience in the computing field and has taught database classes in Colombian universities. He holds a Master\u2019s degree in Computer Science from EAFIT, Colombia. His areas of expertise are database technology, performance, and data warehousing. Hernando can be contacted at hbedoya@us.ibm.com ."}, {"label": "picture", "id": 9, "page_no": 3, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 145.41448974609375, "t": 527.2447509765625, "r": 252.08840942382812, "b": 635.383056640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9871657490730286, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 10, "page_no": 3, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 142.52883911132812, "t": 375.0449523925781, "r": 251.47850036621094, "b": 503.20648193359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9862572550773621, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "section_header", "id": 2, "page_no": 3, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.800003, "t": 73.10313415527344, "r": 151.46161, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9174708724021912, "cells": [{"id": 2, "text": "Preface", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 151.46161, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Preface"}, {"label": "text", "id": 3, "page_no": 3, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.75503540039062, "t": 131.914306640625, "r": 547.30823, "b": 201.86072000000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9869155883789062, "cells": [{"id": 3, "text": "This IBMfi Redpaper\u2122 publication provides information about the IBM i 7.2 feature of IBM ", "bbox": {"l": 136.8, "t": 132.64862000000005, "r": 542.91888, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "DB2fi for i Row and Column Access Control (RCAC). It offers a broad description of the ", "bbox": {"l": 136.79984, "t": 144.64844000000005, "r": 526.65509, "b": 153.86145, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "function and advantages of controlling access to data in a comprehensive and transparent ", "bbox": {"l": 136.79984, "t": 156.64824999999996, "r": 536.82135, "b": 165.86127, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "way. This publication helps you understand the capabilities of RCAC and provides examples ", "bbox": {"l": 136.79987, "t": 168.64806999999996, "r": 544.67975, "b": 177.86108000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "of defining, creating, and implementing the row permissions and column masks in a relational ", "bbox": {"l": 136.79987, "t": 180.64788999999996, "r": 547.30823, "b": 189.86090000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "database environment.", "bbox": {"l": 136.79987, "t": 192.64770999999996, "r": 238.32117, "b": 201.86072000000001, "coord_origin": "TOPLEFT"}}]}, "text": "This IBMfi Redpaper\u2122 publication provides information about the IBM i 7.2 feature of IBM DB2fi for i Row and Column Access Control (RCAC). It offers a broad description of the function and advantages of controlling access to data in a comprehensive and transparent way. This publication helps you understand the capabilities of RCAC and provides examples of defining, creating, and implementing the row permissions and column masks in a relational database environment."}, {"label": "text", "id": 4, "page_no": 3, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.94647216796875, "t": 214.0637664794922, "r": 546.4657, "b": 260.1856384277344, "coord_origin": "TOPLEFT"}, "confidence": 0.987220287322998, "cells": [{"id": 9, "text": "This paper is intended for database engineers, data-centric application developers, and ", "bbox": {"l": 136.79987, "t": 214.60748, "r": 524.18518, "b": 223.82050000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "security officers who want to design and implement RCAC as a part of their data control and ", "bbox": {"l": 136.79987, "t": 226.6073, "r": 546.4657, "b": 235.82030999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "governance policy. A solid background in IBM i object level security, DB2 for i relational ", "bbox": {"l": 136.79987, "t": 238.60712, "r": 521.25488, "b": 247.82012999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "database concepts, and SQL is assumed.", "bbox": {"l": 136.79987, "t": 250.60693000000003, "r": 321.69434, "b": 259.81994999999995, "coord_origin": "TOPLEFT"}}]}, "text": "This paper is intended for database engineers, data-centric application developers, and security officers who want to design and implement RCAC as a part of their data control and governance policy. A solid background in IBM i object level security, DB2 for i relational database concepts, and SQL is assumed."}, {"label": "section_header", "id": 5, "page_no": 3, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 64.22550201416016, "t": 287.1894226074219, "r": 125.36661, "b": 303.0636, "coord_origin": "TOPLEFT"}, "confidence": 0.9255504608154297, "cells": [{"id": 13, "text": "Authors", "bbox": {"l": 64.800003, "t": 288.3006, "r": 125.36661, "b": 303.0636, "coord_origin": "TOPLEFT"}}]}, "text": "Authors"}, {"label": "text", "id": 6, "page_no": 3, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.71319580078125, "t": 319.8118591308594, "r": 547.23669, "b": 342.1517028808594, "coord_origin": "TOPLEFT"}, "confidence": 0.9713318347930908, "cells": [{"id": 14, "text": "This paper was produced by the IBM DB2 for i Center of Excellence team in partnership with ", "bbox": {"l": 136.8, "t": 320.62871999999993, "r": 547.23669, "b": 329.8417099999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "the International Technical Support Organization (ITSO), Rochester, Minnesota US.", "bbox": {"l": 136.8, "t": 332.62854, "r": 505.05518, "b": 341.84152, "coord_origin": "TOPLEFT"}}]}, "text": "This paper was produced by the IBM DB2 for i Center of Excellence team in partnership with the International Technical Support Organization (ITSO), Rochester, Minnesota US."}, {"label": "text", "id": 7, "page_no": 3, "cluster": {"id": 7, "label": "text", "bbox": {"l": 262.6522521972656, "t": 374.687255859375, "r": 541.25079, "b": 516.9314575195312, "coord_origin": "TOPLEFT"}, "confidence": 0.9842760562896729, "cells": [{"id": 16, "text": "Jim Bainbridge", "bbox": {"l": 263.39957, "t": 375.64877, "r": 335.7251, "b": 384.86176, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": " is a senior DB2 consultant on the DB2 for i ", "bbox": {"l": 335.69922, "t": 375.64877, "r": 529.34259, "b": 384.86176, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Center of Excellence team in the IBM Lab Services and ", "bbox": {"l": 263.3996, "t": 387.64859, "r": 511.50717, "b": 396.86157, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Training organization. His primary role is training and ", "bbox": {"l": 263.3996, "t": 399.64841, "r": 499.077, "b": 408.86139, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "implementation services for IBM DB2 Web Query for i and ", "bbox": {"l": 263.3996, "t": 411.64822, "r": 522.51996, "b": 420.86121, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "business analytics. Jim began his career with IBM 30 years ago ", "bbox": {"l": 263.3996, "t": 423.64804, "r": 541.25079, "b": 432.86102, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "in the IBM Rochester Development Lab, where he developed ", "bbox": {"l": 263.3996, "t": 435.64786, "r": 534.71411, "b": 444.86084, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "cooperative processing products that paired IBM PCs with IBM ", "bbox": {"l": 263.3996, "t": 447.64767, "r": 541.22375, "b": 456.86066, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "S/36 and AS/.400 systems. In the years since, Jim has held ", "bbox": {"l": 263.3996, "t": 459.64749, "r": 528.91016, "b": 468.86047, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "numerous technical roles, including independent software ", "bbox": {"l": 263.3996, "t": 471.64731, "r": 520.24207, "b": 480.86029, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "vendors technical support on a broad range of IBM ", "bbox": {"l": 263.3996, "t": 483.64713, "r": 490.6967200000001, "b": 492.86011, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "technologies and products, and supporting customers in the ", "bbox": {"l": 263.3996, "t": 495.64694, "r": 530.95514, "b": 504.85992, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IBM Executive Briefing Center and IBM Project Office.", "bbox": {"l": 263.3996, "t": 507.64676, "r": 501.62973, "b": 516.85974, "coord_origin": "TOPLEFT"}}]}, "text": "Jim Bainbridge is a senior DB2 consultant on the DB2 for i Center of Excellence team in the IBM Lab Services and Training organization. His primary role is training and implementation services for IBM DB2 Web Query for i and business analytics. Jim began his career with IBM 30 years ago in the IBM Rochester Development Lab, where he developed cooperative processing products that paired IBM PCs with IBM S/36 and AS/.400 systems. In the years since, Jim has held numerous technical roles, including independent software vendors technical support on a broad range of IBM technologies and products, and supporting customers in the IBM Executive Briefing Center and IBM Project Office."}, {"label": "text", "id": 8, "page_no": 3, "cluster": {"id": 8, "label": "text", "bbox": {"l": 262.4736328125, "t": 526.50830078125, "r": 541.27374, "b": 680.83716, "coord_origin": "TOPLEFT"}, "confidence": 0.9823779463768005, "cells": [{"id": 29, "text": "Hernando Bedoya", "bbox": {"l": 263.3996, "t": 527.62653, "r": 348.38229, "b": 536.83952, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": " is a Senior IT Specialist at STG Lab ", "bbox": {"l": 348.41916, "t": 527.62653, "r": 512.3429, "b": 536.83952, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Services and Training in Rochester, Minnesota. He writes ", "bbox": {"l": 263.3996, "t": 539.62633, "r": 519.26306, "b": 548.83932, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "extensively and teaches IBM classes worldwide in all areas of ", "bbox": {"l": 263.3996, "t": 551.62613, "r": 538.40308, "b": 560.8391300000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "DB2 for i. Before joining STG Lab Services, he worked in the ", "bbox": {"l": 263.3996, "t": 563.62593, "r": 533.95715, "b": 572.83893, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "ITSO for nine years writing multiple IBM Redbooksfi ", "bbox": {"l": 263.3996, "t": 575.62573, "r": 496.94464, "b": 584.8387299999999, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "publications. He also worked for IBM Colombia as an IBM ", "bbox": {"l": 263.3996, "t": 587.62553, "r": 520.38562, "b": 596.83853, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "AS/400fi IT Specialist doing presales support for the Andean ", "bbox": {"l": 263.3996, "t": 599.62534, "r": 535.99078, "b": 608.83833, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "countries. He has 28 years of experience in the computing field ", "bbox": {"l": 263.3996, "t": 611.62514, "r": 541.27374, "b": 620.83813, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "and has taught database classes in Colombian universities. He ", "bbox": {"l": 263.3996, "t": 623.62494, "r": 541.26465, "b": 632.83794, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "holds a Master\u2019s degree in Computer Science from EAFIT, ", "bbox": {"l": 263.3996, "t": 635.62474, "r": 523.22211, "b": 644.8377399999999, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Colombia. His areas of expertise are database technology, ", "bbox": {"l": 263.3996, "t": 647.62454, "r": 524.77386, "b": 656.83754, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "performance, and data warehousing. Hernando can be ", "bbox": {"l": 263.3996, "t": 659.62434, "r": 508.27124, "b": 668.83735, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "contacted at ", "bbox": {"l": 263.3996, "t": 671.62415, "r": 320.63568, "b": 680.83716, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "hbedoya@us.ibm.com", "bbox": {"l": 320.63971, "t": 671.77356, "r": 410.57852, "b": 680.54832, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": ".", "bbox": {"l": 410.5795, "t": 671.62415, "r": 413.34839, "b": 680.83716, "coord_origin": "TOPLEFT"}}]}, "text": "Hernando Bedoya is a Senior IT Specialist at STG Lab Services and Training in Rochester, Minnesota. He writes extensively and teaches IBM classes worldwide in all areas of DB2 for i. Before joining STG Lab Services, he worked in the ITSO for nine years writing multiple IBM Redbooksfi publications. He also worked for IBM Colombia as an IBM AS/400fi IT Specialist doing presales support for the Andean countries. He has 28 years of experience in the computing field and has taught database classes in Colombian universities. He holds a Master\u2019s degree in Computer Science from EAFIT, Colombia. His areas of expertise are database technology, performance, and data warehousing. Hernando can be contacted at hbedoya@us.ibm.com ."}, {"label": "picture", "id": 9, "page_no": 3, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 145.41448974609375, "t": 527.2447509765625, "r": 252.08840942382812, "b": 635.383056640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9871657490730286, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 10, "page_no": 3, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 142.52883911132812, "t": 375.0449523925781, "r": 251.47850036621094, "b": 503.20648193359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9862572550773621, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 3, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.724002838134766, "t": 754.7037963867188, "r": 257.24335, "b": 764.1082153320312, "coord_origin": "TOPLEFT"}, "confidence": 0.9469243884086609, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 3, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 538.058349609375, "t": 754.3980102539062, "r": 547.25031, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9040942788124084, "cells": [{"id": 1, "text": "xi", "bbox": {"l": 538.85999, "t": 754.848721, "r": 547.25031, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "xi"}]}}, {"page_no": 4, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "1", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Chapter 1.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Securing and protecting IBM DB2 ", "bbox": {"l": 136.8, "t": 254.88635, "r": 547.30475, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "data", "bbox": {"l": 136.8, "t": 285.84671, "r": 190.29802, "b": 309.8782, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Recent news headlines are filled with reports of data breaches and cyber-attacks impacting ", "bbox": {"l": 136.8, "t": 348.70871, "r": 542.25665, "b": 357.92169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "global businesses of all sizes. The Identity Theft Resource Center$^{1}$ reports that almost 5000 ", "bbox": {"l": 136.80096, "t": 360.70853, "r": 544.96643, "b": 369.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "data breaches have occurred since 2005, exposing over 600 million records of data. The ", "bbox": {"l": 136.79965, "t": 372.70853, "r": 529.53839, "b": 381.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "financial cost of these data breaches is skyrocketing. Studies from the Ponemon Institute$^{2}$ ", "bbox": {"l": 136.79965, "t": 384.7083400000001, "r": 535.32874, "b": 393.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "revealed that the average cost of a data breach increased in 2013 by 15% globally and ", "bbox": {"l": 136.80026, "t": 396.70853, "r": 521.64374, "b": 405.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "resulted in a brand equity loss of $9.4 million per attack. The average cost that is incurred for ", "bbox": {"l": 136.80026, "t": 408.7083400000001, "r": 547.13135, "b": 417.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "each lost record containing sensitive information increased more than 9% to $145 per record. ", "bbox": {"l": 136.80023, "t": 420.70816, "r": 547.25403, "b": 429.92114, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Businesses must make a serious effort to secure their data and recognize that securing ", "bbox": {"l": 136.80023, "t": 442.7277199999999, "r": 525.06482, "b": 451.9407, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "information assets is a cost of doing business. In many parts of the world and in many ", "bbox": {"l": 136.80025, "t": 454.72754000000003, "r": 518.26825, "b": 463.94052, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "industries, securing the data is required by law and subject to audits. Data security is no ", "bbox": {"l": 136.80025, "t": 466.72736, "r": 527.2063, "b": 475.94034, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "longer an option; it is a requirement.", "bbox": {"l": 136.80025, "t": 478.72717, "r": 296.31067, "b": 487.94016, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "This chapter describes how you can secure and protect data in DB2 for i. The following topics ", "bbox": {"l": 136.80025, "t": 500.68698, "r": 547.15515, "b": 509.89996, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "are covered in this chapter:", "bbox": {"l": 136.80025, "t": 512.6868, "r": 257.28036, "b": 521.89978, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "GLYPH", "bbox": {"l": 136.80025, "t": 529.87576, "r": 141.78024, "b": 538.6505099999999, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Security fundamentals", "bbox": {"l": 151.20041, "t": 529.72635, "r": 250.23166999999998, "b": 538.93936, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "GLYPH", "bbox": {"l": 136.80025, "t": 541.87556, "r": 141.78024, "b": 550.65031, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Current state of IBM i security", "bbox": {"l": 151.20041, "t": 541.72617, "r": 282.98114, "b": 550.93916, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "GLYPH", "bbox": {"l": 136.80025, "t": 553.87537, "r": 141.78024, "b": 562.65012, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "DB2 for i security controls", "bbox": {"l": 151.20041, "t": 553.72597, "r": 264.88187, "b": 562.93896, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "1", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "$^{1 }$http://www.idtheftcenter.org", "bbox": {"l": 136.8, "t": 717.750061, "r": 258.36255, "b": 724.780441, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "$^{2 }$http://www.ponemon.org", "bbox": {"l": 136.8, "t": 727.709961, "r": 231.90257, "b": 734.740341, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "/", "bbox": {"l": 231.84036, "t": 727.590263, "r": 234.05881, "b": 734.97176, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.68400573730469, "t": 754.6591796875, "r": 257.24335, "b": 764.1430053710938, "coord_origin": "TOPLEFT"}, "confidence": 0.9370514154434204, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 541.2396240234375, "t": 754.2869873046875, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8513588309288025, "cells": [{"id": 1, "text": "1", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 1.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "section_header", "bbox": {"l": 136.68006896972656, "t": 253.28985595703125, "r": 547.30475, "b": 309.8782, "coord_origin": "TOPLEFT"}, "confidence": 0.9377049207687378, "cells": [{"id": 3, "text": "Securing and protecting IBM DB2 ", "bbox": {"l": 136.8, "t": 254.88635, "r": 547.30475, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "data", "bbox": {"l": 136.8, "t": 285.84671, "r": 190.29802, "b": 309.8782, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 136.15219116210938, "t": 347.975341796875, "r": 547.25403, "b": 430.37359619140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9868757724761963, "cells": [{"id": 5, "text": "Recent news headlines are filled with reports of data breaches and cyber-attacks impacting ", "bbox": {"l": 136.8, "t": 348.70871, "r": 542.25665, "b": 357.92169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "global businesses of all sizes. The Identity Theft Resource Center$^{1}$ reports that almost 5000 ", "bbox": {"l": 136.80096, "t": 360.70853, "r": 544.96643, "b": 369.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "data breaches have occurred since 2005, exposing over 600 million records of data. The ", "bbox": {"l": 136.79965, "t": 372.70853, "r": 529.53839, "b": 381.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "financial cost of these data breaches is skyrocketing. Studies from the Ponemon Institute$^{2}$ ", "bbox": {"l": 136.79965, "t": 384.7083400000001, "r": 535.32874, "b": 393.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "revealed that the average cost of a data breach increased in 2013 by 15% globally and ", "bbox": {"l": 136.80026, "t": 396.70853, "r": 521.64374, "b": 405.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "resulted in a brand equity loss of $9.4 million per attack. The average cost that is incurred for ", "bbox": {"l": 136.80026, "t": 408.7083400000001, "r": 547.13135, "b": 417.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "each lost record containing sensitive information increased more than 9% to $145 per record. ", "bbox": {"l": 136.80023, "t": 420.70816, "r": 547.25403, "b": 429.92114, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.05917358398438, "t": 442.1153564453125, "r": 527.2063, "b": 488.44146728515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9865864515304565, "cells": [{"id": 12, "text": "Businesses must make a serious effort to secure their data and recognize that securing ", "bbox": {"l": 136.80023, "t": 442.7277199999999, "r": 525.06482, "b": 451.9407, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "information assets is a cost of doing business. In many parts of the world and in many ", "bbox": {"l": 136.80025, "t": 454.72754000000003, "r": 518.26825, "b": 463.94052, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "industries, securing the data is required by law and subject to audits. Data security is no ", "bbox": {"l": 136.80025, "t": 466.72736, "r": 527.2063, "b": 475.94034, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "longer an option; it is a requirement.", "bbox": {"l": 136.80025, "t": 478.72717, "r": 296.31067, "b": 487.94016, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 135.5961456298828, "t": 500.0403137207031, "r": 547.15515, "b": 521.89978, "coord_origin": "TOPLEFT"}, "confidence": 0.9734498858451843, "cells": [{"id": 16, "text": "This chapter describes how you can secure and protect data in DB2 for i. The following topics ", "bbox": {"l": 136.80025, "t": 500.68698, "r": 547.15515, "b": 509.89996, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "are covered in this chapter:", "bbox": {"l": 136.80025, "t": 512.6868, "r": 257.28036, "b": 521.89978, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.86915588378906, "t": 528.70361328125, "r": 250.23166999999998, "b": 539.0433349609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9374465346336365, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.80025, "t": 529.87576, "r": 141.78024, "b": 538.6505099999999, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Security fundamentals", "bbox": {"l": 151.20041, "t": 529.72635, "r": 250.23166999999998, "b": 538.93936, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.742431640625, "t": 540.7142333984375, "r": 282.98114, "b": 551.373291015625, "coord_origin": "TOPLEFT"}, "confidence": 0.933772087097168, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.80025, "t": 541.87556, "r": 141.78024, "b": 550.65031, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Current state of IBM i security", "bbox": {"l": 151.20041, "t": 541.72617, "r": 282.98114, "b": 550.93916, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.86570739746094, "t": 552.4489135742188, "r": 264.88187, "b": 562.93896, "coord_origin": "TOPLEFT"}, "confidence": 0.946319043636322, "cells": [{"id": 22, "text": "GLYPH", "bbox": {"l": 136.80025, "t": 553.87537, "r": 141.78024, "b": 562.65012, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "DB2 for i security controls", "bbox": {"l": 151.20041, "t": 553.72597, "r": 264.88187, "b": 562.93896, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 500.39999, "t": 92.66075897216797, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.7054197788238525, "cells": [{"id": 24, "text": "1", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "footnote", "bbox": {"l": 135.7418975830078, "t": 716.2816772460938, "r": 258.36255, "b": 725.5408325195312, "coord_origin": "TOPLEFT"}, "confidence": 0.7673327326774597, "cells": [{"id": 25, "text": "$^{1 }$http://www.idtheftcenter.org", "bbox": {"l": 136.8, "t": 717.750061, "r": 258.36255, "b": 724.780441, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "footnote", "bbox": {"l": 136.19522094726562, "t": 725.296142578125, "r": 234.42526245117188, "b": 735.2681274414062, "coord_origin": "TOPLEFT"}, "confidence": 0.7980051636695862, "cells": [{"id": 26, "text": "$^{2 }$http://www.ponemon.org", "bbox": {"l": 136.8, "t": 727.709961, "r": 231.90257, "b": 734.740341, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "/", "bbox": {"l": 231.84036, "t": 727.590263, "r": 234.05881, "b": 734.97176, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "picture", "bbox": {"l": 32.05508804321289, "t": 70.42637634277344, "r": 239.62692260742188, "b": 238.041015625, "coord_origin": "TOPLEFT"}, "confidence": 0.7604197263717651, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 4, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.68400573730469, "t": 754.6591796875, "r": 257.24335, "b": 764.1430053710938, "coord_origin": "TOPLEFT"}, "confidence": 0.9370514154434204, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 4, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 541.2396240234375, "t": 754.2869873046875, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8513588309288025, "cells": [{"id": 1, "text": "1", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "1"}, {"label": "text", "id": 2, "page_no": 4, "cluster": {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 1.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 1."}, {"label": "section_header", "id": 3, "page_no": 4, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 136.68006896972656, "t": 253.28985595703125, "r": 547.30475, "b": 309.8782, "coord_origin": "TOPLEFT"}, "confidence": 0.9377049207687378, "cells": [{"id": 3, "text": "Securing and protecting IBM DB2 ", "bbox": {"l": 136.8, "t": 254.88635, "r": 547.30475, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "data", "bbox": {"l": 136.8, "t": 285.84671, "r": 190.29802, "b": 309.8782, "coord_origin": "TOPLEFT"}}]}, "text": "Securing and protecting IBM DB2 data"}, {"label": "text", "id": 4, "page_no": 4, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.15219116210938, "t": 347.975341796875, "r": 547.25403, "b": 430.37359619140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9868757724761963, "cells": [{"id": 5, "text": "Recent news headlines are filled with reports of data breaches and cyber-attacks impacting ", "bbox": {"l": 136.8, "t": 348.70871, "r": 542.25665, "b": 357.92169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "global businesses of all sizes. The Identity Theft Resource Center$^{1}$ reports that almost 5000 ", "bbox": {"l": 136.80096, "t": 360.70853, "r": 544.96643, "b": 369.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "data breaches have occurred since 2005, exposing over 600 million records of data. The ", "bbox": {"l": 136.79965, "t": 372.70853, "r": 529.53839, "b": 381.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "financial cost of these data breaches is skyrocketing. Studies from the Ponemon Institute$^{2}$ ", "bbox": {"l": 136.79965, "t": 384.7083400000001, "r": 535.32874, "b": 393.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "revealed that the average cost of a data breach increased in 2013 by 15% globally and ", "bbox": {"l": 136.80026, "t": 396.70853, "r": 521.64374, "b": 405.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "resulted in a brand equity loss of $9.4 million per attack. The average cost that is incurred for ", "bbox": {"l": 136.80026, "t": 408.7083400000001, "r": 547.13135, "b": 417.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "each lost record containing sensitive information increased more than 9% to $145 per record. ", "bbox": {"l": 136.80023, "t": 420.70816, "r": 547.25403, "b": 429.92114, "coord_origin": "TOPLEFT"}}]}, "text": "Recent news headlines are filled with reports of data breaches and cyber-attacks impacting global businesses of all sizes. The Identity Theft Resource Center$^{1}$ reports that almost 5000 data breaches have occurred since 2005, exposing over 600 million records of data. The financial cost of these data breaches is skyrocketing. Studies from the Ponemon Institute$^{2}$ revealed that the average cost of a data breach increased in 2013 by 15% globally and resulted in a brand equity loss of $9.4 million per attack. The average cost that is incurred for each lost record containing sensitive information increased more than 9% to $145 per record."}, {"label": "text", "id": 5, "page_no": 4, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.05917358398438, "t": 442.1153564453125, "r": 527.2063, "b": 488.44146728515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9865864515304565, "cells": [{"id": 12, "text": "Businesses must make a serious effort to secure their data and recognize that securing ", "bbox": {"l": 136.80023, "t": 442.7277199999999, "r": 525.06482, "b": 451.9407, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "information assets is a cost of doing business. In many parts of the world and in many ", "bbox": {"l": 136.80025, "t": 454.72754000000003, "r": 518.26825, "b": 463.94052, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "industries, securing the data is required by law and subject to audits. Data security is no ", "bbox": {"l": 136.80025, "t": 466.72736, "r": 527.2063, "b": 475.94034, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "longer an option; it is a requirement.", "bbox": {"l": 136.80025, "t": 478.72717, "r": 296.31067, "b": 487.94016, "coord_origin": "TOPLEFT"}}]}, "text": "Businesses must make a serious effort to secure their data and recognize that securing information assets is a cost of doing business. In many parts of the world and in many industries, securing the data is required by law and subject to audits. Data security is no longer an option; it is a requirement."}, {"label": "text", "id": 6, "page_no": 4, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.5961456298828, "t": 500.0403137207031, "r": 547.15515, "b": 521.89978, "coord_origin": "TOPLEFT"}, "confidence": 0.9734498858451843, "cells": [{"id": 16, "text": "This chapter describes how you can secure and protect data in DB2 for i. The following topics ", "bbox": {"l": 136.80025, "t": 500.68698, "r": 547.15515, "b": 509.89996, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "are covered in this chapter:", "bbox": {"l": 136.80025, "t": 512.6868, "r": 257.28036, "b": 521.89978, "coord_origin": "TOPLEFT"}}]}, "text": "This chapter describes how you can secure and protect data in DB2 for i. The following topics are covered in this chapter:"}, {"label": "list_item", "id": 7, "page_no": 4, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.86915588378906, "t": 528.70361328125, "r": 250.23166999999998, "b": 539.0433349609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9374465346336365, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.80025, "t": 529.87576, "r": 141.78024, "b": 538.6505099999999, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Security fundamentals", "bbox": {"l": 151.20041, "t": 529.72635, "r": 250.23166999999998, "b": 538.93936, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Security fundamentals"}, {"label": "list_item", "id": 8, "page_no": 4, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.742431640625, "t": 540.7142333984375, "r": 282.98114, "b": 551.373291015625, "coord_origin": "TOPLEFT"}, "confidence": 0.933772087097168, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.80025, "t": 541.87556, "r": 141.78024, "b": 550.65031, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Current state of IBM i security", "bbox": {"l": 151.20041, "t": 541.72617, "r": 282.98114, "b": 550.93916, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Current state of IBM i security"}, {"label": "list_item", "id": 9, "page_no": 4, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.86570739746094, "t": 552.4489135742188, "r": 264.88187, "b": 562.93896, "coord_origin": "TOPLEFT"}, "confidence": 0.946319043636322, "cells": [{"id": 22, "text": "GLYPH", "bbox": {"l": 136.80025, "t": 553.87537, "r": 141.78024, "b": 562.65012, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "DB2 for i security controls", "bbox": {"l": 151.20041, "t": 553.72597, "r": 264.88187, "b": 562.93896, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH DB2 for i security controls"}, {"label": "text", "id": 10, "page_no": 4, "cluster": {"id": 10, "label": "text", "bbox": {"l": 500.39999, "t": 92.66075897216797, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.7054197788238525, "cells": [{"id": 24, "text": "1", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, "text": "1"}, {"label": "footnote", "id": 11, "page_no": 4, "cluster": {"id": 11, "label": "footnote", "bbox": {"l": 135.7418975830078, "t": 716.2816772460938, "r": 258.36255, "b": 725.5408325195312, "coord_origin": "TOPLEFT"}, "confidence": 0.7673327326774597, "cells": [{"id": 25, "text": "$^{1 }$http://www.idtheftcenter.org", "bbox": {"l": 136.8, "t": 717.750061, "r": 258.36255, "b": 724.780441, "coord_origin": "TOPLEFT"}}]}, "text": "$^{1 }$http://www.idtheftcenter.org"}, {"label": "footnote", "id": 12, "page_no": 4, "cluster": {"id": 12, "label": "footnote", "bbox": {"l": 136.19522094726562, "t": 725.296142578125, "r": 234.42526245117188, "b": 735.2681274414062, "coord_origin": "TOPLEFT"}, "confidence": 0.7980051636695862, "cells": [{"id": 26, "text": "$^{2 }$http://www.ponemon.org", "bbox": {"l": 136.8, "t": 727.709961, "r": 231.90257, "b": 734.740341, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "/", "bbox": {"l": 231.84036, "t": 727.590263, "r": 234.05881, "b": 734.97176, "coord_origin": "TOPLEFT"}}]}, "text": "$^{2 }$http://www.ponemon.org /"}, {"label": "picture", "id": 13, "page_no": 4, "cluster": {"id": 13, "label": "picture", "bbox": {"l": 32.05508804321289, "t": 70.42637634277344, "r": 239.62692260742188, "b": 238.041015625, "coord_origin": "TOPLEFT"}, "confidence": 0.7604197263717651, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 4, "cluster": {"id": 2, "label": "text", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Chapter 1.", "bbox": {"l": 81.0, "t": 268.54272000000003, "r": 115.13253, "b": 274.98071000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 1."}, {"label": "section_header", "id": 3, "page_no": 4, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 136.68006896972656, "t": 253.28985595703125, "r": 547.30475, "b": 309.8782, "coord_origin": "TOPLEFT"}, "confidence": 0.9377049207687378, "cells": [{"id": 3, "text": "Securing and protecting IBM DB2 ", "bbox": {"l": 136.8, "t": 254.88635, "r": 547.30475, "b": 278.91785000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "data", "bbox": {"l": 136.8, "t": 285.84671, "r": 190.29802, "b": 309.8782, "coord_origin": "TOPLEFT"}}]}, "text": "Securing and protecting IBM DB2 data"}, {"label": "text", "id": 4, "page_no": 4, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.15219116210938, "t": 347.975341796875, "r": 547.25403, "b": 430.37359619140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9868757724761963, "cells": [{"id": 5, "text": "Recent news headlines are filled with reports of data breaches and cyber-attacks impacting ", "bbox": {"l": 136.8, "t": 348.70871, "r": 542.25665, "b": 357.92169, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "global businesses of all sizes. The Identity Theft Resource Center$^{1}$ reports that almost 5000 ", "bbox": {"l": 136.80096, "t": 360.70853, "r": 544.96643, "b": 369.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "data breaches have occurred since 2005, exposing over 600 million records of data. The ", "bbox": {"l": 136.79965, "t": 372.70853, "r": 529.53839, "b": 381.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "financial cost of these data breaches is skyrocketing. Studies from the Ponemon Institute$^{2}$ ", "bbox": {"l": 136.79965, "t": 384.7083400000001, "r": 535.32874, "b": 393.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "revealed that the average cost of a data breach increased in 2013 by 15% globally and ", "bbox": {"l": 136.80026, "t": 396.70853, "r": 521.64374, "b": 405.92150999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "resulted in a brand equity loss of $9.4 million per attack. The average cost that is incurred for ", "bbox": {"l": 136.80026, "t": 408.7083400000001, "r": 547.13135, "b": 417.92133000000007, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "each lost record containing sensitive information increased more than 9% to $145 per record. ", "bbox": {"l": 136.80023, "t": 420.70816, "r": 547.25403, "b": 429.92114, "coord_origin": "TOPLEFT"}}]}, "text": "Recent news headlines are filled with reports of data breaches and cyber-attacks impacting global businesses of all sizes. The Identity Theft Resource Center$^{1}$ reports that almost 5000 data breaches have occurred since 2005, exposing over 600 million records of data. The financial cost of these data breaches is skyrocketing. Studies from the Ponemon Institute$^{2}$ revealed that the average cost of a data breach increased in 2013 by 15% globally and resulted in a brand equity loss of $9.4 million per attack. The average cost that is incurred for each lost record containing sensitive information increased more than 9% to $145 per record."}, {"label": "text", "id": 5, "page_no": 4, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.05917358398438, "t": 442.1153564453125, "r": 527.2063, "b": 488.44146728515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9865864515304565, "cells": [{"id": 12, "text": "Businesses must make a serious effort to secure their data and recognize that securing ", "bbox": {"l": 136.80023, "t": 442.7277199999999, "r": 525.06482, "b": 451.9407, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "information assets is a cost of doing business. In many parts of the world and in many ", "bbox": {"l": 136.80025, "t": 454.72754000000003, "r": 518.26825, "b": 463.94052, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "industries, securing the data is required by law and subject to audits. Data security is no ", "bbox": {"l": 136.80025, "t": 466.72736, "r": 527.2063, "b": 475.94034, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "longer an option; it is a requirement.", "bbox": {"l": 136.80025, "t": 478.72717, "r": 296.31067, "b": 487.94016, "coord_origin": "TOPLEFT"}}]}, "text": "Businesses must make a serious effort to secure their data and recognize that securing information assets is a cost of doing business. In many parts of the world and in many industries, securing the data is required by law and subject to audits. Data security is no longer an option; it is a requirement."}, {"label": "text", "id": 6, "page_no": 4, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.5961456298828, "t": 500.0403137207031, "r": 547.15515, "b": 521.89978, "coord_origin": "TOPLEFT"}, "confidence": 0.9734498858451843, "cells": [{"id": 16, "text": "This chapter describes how you can secure and protect data in DB2 for i. The following topics ", "bbox": {"l": 136.80025, "t": 500.68698, "r": 547.15515, "b": 509.89996, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "are covered in this chapter:", "bbox": {"l": 136.80025, "t": 512.6868, "r": 257.28036, "b": 521.89978, "coord_origin": "TOPLEFT"}}]}, "text": "This chapter describes how you can secure and protect data in DB2 for i. The following topics are covered in this chapter:"}, {"label": "list_item", "id": 7, "page_no": 4, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.86915588378906, "t": 528.70361328125, "r": 250.23166999999998, "b": 539.0433349609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9374465346336365, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.80025, "t": 529.87576, "r": 141.78024, "b": 538.6505099999999, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Security fundamentals", "bbox": {"l": 151.20041, "t": 529.72635, "r": 250.23166999999998, "b": 538.93936, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Security fundamentals"}, {"label": "list_item", "id": 8, "page_no": 4, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.742431640625, "t": 540.7142333984375, "r": 282.98114, "b": 551.373291015625, "coord_origin": "TOPLEFT"}, "confidence": 0.933772087097168, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.80025, "t": 541.87556, "r": 141.78024, "b": 550.65031, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Current state of IBM i security", "bbox": {"l": 151.20041, "t": 541.72617, "r": 282.98114, "b": 550.93916, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Current state of IBM i security"}, {"label": "list_item", "id": 9, "page_no": 4, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.86570739746094, "t": 552.4489135742188, "r": 264.88187, "b": 562.93896, "coord_origin": "TOPLEFT"}, "confidence": 0.946319043636322, "cells": [{"id": 22, "text": "GLYPH", "bbox": {"l": 136.80025, "t": 553.87537, "r": 141.78024, "b": 562.65012, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "DB2 for i security controls", "bbox": {"l": 151.20041, "t": 553.72597, "r": 264.88187, "b": 562.93896, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH DB2 for i security controls"}, {"label": "text", "id": 10, "page_no": 4, "cluster": {"id": 10, "label": "text", "bbox": {"l": 500.39999, "t": 92.66075897216797, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}, "confidence": 0.7054197788238525, "cells": [{"id": 24, "text": "1", "bbox": {"l": 500.39999, "t": 93.16870000000006, "r": 522.61774, "b": 130.13171, "coord_origin": "TOPLEFT"}}]}, "text": "1"}, {"label": "footnote", "id": 11, "page_no": 4, "cluster": {"id": 11, "label": "footnote", "bbox": {"l": 135.7418975830078, "t": 716.2816772460938, "r": 258.36255, "b": 725.5408325195312, "coord_origin": "TOPLEFT"}, "confidence": 0.7673327326774597, "cells": [{"id": 25, "text": "$^{1 }$http://www.idtheftcenter.org", "bbox": {"l": 136.8, "t": 717.750061, "r": 258.36255, "b": 724.780441, "coord_origin": "TOPLEFT"}}]}, "text": "$^{1 }$http://www.idtheftcenter.org"}, {"label": "footnote", "id": 12, "page_no": 4, "cluster": {"id": 12, "label": "footnote", "bbox": {"l": 136.19522094726562, "t": 725.296142578125, "r": 234.42526245117188, "b": 735.2681274414062, "coord_origin": "TOPLEFT"}, "confidence": 0.7980051636695862, "cells": [{"id": 26, "text": "$^{2 }$http://www.ponemon.org", "bbox": {"l": 136.8, "t": 727.709961, "r": 231.90257, "b": 734.740341, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "/", "bbox": {"l": 231.84036, "t": 727.590263, "r": 234.05881, "b": 734.97176, "coord_origin": "TOPLEFT"}}]}, "text": "$^{2 }$http://www.ponemon.org /"}, {"label": "picture", "id": 13, "page_no": 4, "cluster": {"id": 13, "label": "picture", "bbox": {"l": 32.05508804321289, "t": 70.42637634277344, "r": 239.62692260742188, "b": 238.041015625, "coord_origin": "TOPLEFT"}, "confidence": 0.7604197263717651, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 4, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.68400573730469, "t": 754.6591796875, "r": 257.24335, "b": 764.1430053710938, "coord_origin": "TOPLEFT"}, "confidence": 0.9370514154434204, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2014. All rights reserved.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 257.24335, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2014. All rights reserved."}, {"label": "page_footer", "id": 1, "page_no": 4, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 541.2396240234375, "t": 754.2869873046875, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8513588309288025, "cells": [{"id": 1, "text": "1", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "1"}]}}, {"page_no": 5, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "2 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 87.840302, "t": 755.538002, "r": 328.72537, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "1.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.524292, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Security fundamentals", "bbox": {"l": 92.069145, "t": 74.34069999999997, "r": 267.40582, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Before reviewing database security techniques, there are two fundamental steps in securing ", "bbox": {"l": 136.8, "t": 106.6087, "r": 545.00482, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "information assets that must be described:", "bbox": {"l": 136.8, "t": 118.60852, "r": 324.47229, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 135.79749000000004, "r": 141.78, "b": 144.57227, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "First, and most important, is the definition of a company\u2019s ", "bbox": {"l": 151.20016, "t": 135.64806999999996, "r": 406.67715, "b": 144.86108000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "security policy", "bbox": {"l": 406.67999, "t": 135.12487999999996, "r": 471.03815, "b": 145.18262000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": ". Without a ", "bbox": {"l": 470.04001000000005, "t": 135.64862000000005, "r": 520.59796, "b": 144.86163, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "security policy, there is no definition of what are acceptable practices for using, accessing, ", "bbox": {"l": 151.19949, "t": 147.64844000000005, "r": 547.16425, "b": 156.86145, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "and storing information by who, what, when, where, and how. A security policy should ", "bbox": {"l": 151.19948, "t": 159.64824999999996, "r": 531.02008, "b": 168.86127, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "minimally address three things: confidentiality, integrity, and availability.", "bbox": {"l": 151.19948, "t": 171.64806999999996, "r": 463.3578499999999, "b": 180.86108000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "The monitoring and assessment of adherence to the security policy determines whether ", "bbox": {"l": 151.19948, "t": 188.62787000000003, "r": 541.70514, "b": 197.84087999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "your security strategy is working. Often, IBM security consultants are asked to perform ", "bbox": {"l": 151.19948, "t": 200.62769000000003, "r": 534.83002, "b": 209.84069999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "security assessments for companies without regard to the security policy. Although these ", "bbox": {"l": 151.19948, "t": 212.62750000000005, "r": 545.79773, "b": 221.84051999999997, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "assessments can be useful for observing how the system is defined and how data is being ", "bbox": {"l": 151.19948, "t": 224.62732000000005, "r": 547.26086, "b": 233.84033, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "accessed, they cannot determine the level of security without a security policy. Without a ", "bbox": {"l": 151.19948, "t": 236.62714000000005, "r": 543.91528, "b": 245.84015, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "security policy, it really is not an assessment as much as it is a baseline for monitoring the ", "bbox": {"l": 151.19948, "t": 248.62694999999997, "r": 547.25989, "b": 257.83997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "changes in the security settings that are captured.", "bbox": {"l": 151.19946, "t": 260.62676999999996, "r": 371.8692, "b": 269.83978, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "A security policy is what defines whether the system and its settings are secure (or not). ", "bbox": {"l": 151.19946, "t": 277.60657000000003, "r": 541.992, "b": 286.81958, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "GLYPH", "bbox": {"l": 136.7993, "t": 294.7955600000001, "r": 141.7793, "b": 303.57034, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "The second fundamental in securing data assets is the use of ", "bbox": {"l": 151.19946, "t": 294.64618, "r": 425.86029, "b": 303.85916, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "resource security", "bbox": {"l": 425.82001, "t": 294.12496999999996, "r": 501.60065, "b": 304.18265, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": ". If ", "bbox": {"l": 500.64001, "t": 294.64871, "r": 514.49933, "b": 303.86169, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "implemented properly, resource security prevents data breaches from both internal and ", "bbox": {"l": 151.20038, "t": 306.64853, "r": 537.87421, "b": 315.86151, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "external intrusions. Resource security controls are closely tied to the part of the security ", "bbox": {"l": 151.20038, "t": 318.64834999999994, "r": 541.33636, "b": 327.86133, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "policy that defines who should have access to what information resources. A hacker might ", "bbox": {"l": 151.20038, "t": 330.64816, "r": 547.15826, "b": 339.86115, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "be good enough to get through your company firewalls and sift his way through to your ", "bbox": {"l": 151.20038, "t": 342.64798, "r": 534.86066, "b": 351.86096, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "system, but if they do not have explicit access to your database, the hacker cannot ", "bbox": {"l": 151.20038, "t": 354.6478, "r": 517.00739, "b": 363.86078, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "compromise your information assets.", "bbox": {"l": 151.20038, "t": 366.64761, "r": 314.03534, "b": 375.8606, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "With your eyes now open to the importance of securing information assets, the rest of this ", "bbox": {"l": 136.80022, "t": 388.60742, "r": 535.36169, "b": 397.82040000000006, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "chapter reviews the methods that are available for securing database resources on IBM i. ", "bbox": {"l": 136.80022, "t": 400.60724, "r": 532.755, "b": 409.82022, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "1.2", "bbox": {"l": 64.800003, "t": 438.30072, "r": 87.415726, "b": 453.06372, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Current state of IBM i security", "bbox": {"l": 91.93885, "t": 438.30072, "r": 323.38391, "b": 453.06372, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Because of the inherently secure nature of IBM i, many clients rely on the default system ", "bbox": {"l": 136.8, "t": 470.62872, "r": 530.30463, "b": 479.84171, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "settings to protect their business data that is stored in DB2 for i. In most cases, this means no ", "bbox": {"l": 136.8, "t": 482.62854, "r": 547.31824, "b": 491.84152, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "data protection because the default setting for the Create default public authority (QCRTAUT) ", "bbox": {"l": 136.8, "t": 494.62836, "r": 547.19586, "b": 503.84134, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "system value is *CHANGE.", "bbox": {"l": 136.8, "t": 506.62817, "r": 257.04709, "b": 515.84116, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Even more disturbing is that many IBM i clients remain in this state, despite the news ", "bbox": {"l": 136.8, "t": 528.64774, "r": 513.90448, "b": 537.86073, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "headlines and the significant costs that are involved with databases being compromised. This ", "bbox": {"l": 136.8, "t": 540.6475399999999, "r": 547.28442, "b": 549.86053, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "default security configuration makes it quite challenging to implement basic security policies. ", "bbox": {"l": 136.8, "t": 552.64734, "r": 546.27533, "b": 561.86034, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "A tighter implementation is required if you really want to protect one of your company\u2019s most ", "bbox": {"l": 136.8, "t": 564.64714, "r": 545.08014, "b": 573.86014, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "valuable assets, which is the data.", "bbox": {"l": 136.8, "t": 576.64694, "r": 287.80057, "b": 585.85994, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Traditionally, IBM i applications have employed menu-based security to counteract this default ", "bbox": {"l": 136.8, "t": 598.6665, "r": 547.28326, "b": 607.8795, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "configuration that gives all users access to the data. The theory is that data is protected by ", "bbox": {"l": 136.8, "t": 610.6663100000001, "r": 538.6767, "b": 619.8793000000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "the menu options controlling what database operations that the user can perform. This ", "bbox": {"l": 136.8, "t": 622.66611, "r": 520.35364, "b": 631.8791, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "approach is ineffective, even if the user profile is restricted from running interactive ", "bbox": {"l": 136.80002, "t": 634.6659099999999, "r": 502.77115000000003, "b": 643.87891, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "commands. The reason is that in today\u2019s connected world there are a multitude of interfaces ", "bbox": {"l": 136.80002, "t": 646.66571, "r": 545.16492, "b": 655.87871, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "into the system, from web browsers to PC clients, that bypass application menus. If there are ", "bbox": {"l": 136.80002, "t": 658.66551, "r": 547.23376, "b": 667.87852, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "no object-level controls, users of these newer interfaces have an open door to your data.", "bbox": {"l": 136.80002, "t": 670.66532, "r": 526.04187, "b": 679.87833, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.92394256591797, "t": 754.286865234375, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8889444470405579, "cells": [{"id": 0, "text": "2 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 87.81553649902344, "t": 754.6853637695312, "r": 328.72537, "b": 763.9682006835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9476423859596252, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 87.840302, "t": 755.538002, "r": 328.72537, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.33735656738281, "t": 73.39700317382812, "r": 267.40582, "b": 89.61579895019531, "coord_origin": "TOPLEFT"}, "confidence": 0.9651358127593994, "cells": [{"id": 2, "text": "1.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.524292, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Security fundamentals", "bbox": {"l": 92.069145, "t": 74.34069999999997, "r": 267.40582, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 136.23556518554688, "t": 106.02731323242188, "r": 545.00482, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9663435220718384, "cells": [{"id": 4, "text": "Before reviewing database security techniques, there are two fundamental steps in securing ", "bbox": {"l": 136.8, "t": 106.6087, "r": 545.00482, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "information assets that must be described:", "bbox": {"l": 136.8, "t": 118.60852, "r": 324.47229, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 135.66490173339844, "t": 134.66909790039062, "r": 547.16425, "b": 181.15467834472656, "coord_origin": "TOPLEFT"}, "confidence": 0.9835494756698608, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 135.79749000000004, "r": 141.78, "b": 144.57227, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "First, and most important, is the definition of a company\u2019s ", "bbox": {"l": 151.20016, "t": 135.64806999999996, "r": 406.67715, "b": 144.86108000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "security policy", "bbox": {"l": 406.67999, "t": 135.12487999999996, "r": 471.03815, "b": 145.18262000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": ". Without a ", "bbox": {"l": 470.04001000000005, "t": 135.64862000000005, "r": 520.59796, "b": 144.86163, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "security policy, there is no definition of what are acceptable practices for using, accessing, ", "bbox": {"l": 151.19949, "t": 147.64844000000005, "r": 547.16425, "b": 156.86145, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "and storing information by who, what, when, where, and how. A security policy should ", "bbox": {"l": 151.19948, "t": 159.64824999999996, "r": 531.02008, "b": 168.86127, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "minimally address three things: confidentiality, integrity, and availability.", "bbox": {"l": 151.19948, "t": 171.64806999999996, "r": 463.3578499999999, "b": 180.86108000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 150.2132110595703, "t": 187.9793701171875, "r": 547.26086, "b": 270.5374450683594, "coord_origin": "TOPLEFT"}, "confidence": 0.8077321648597717, "cells": [{"id": 13, "text": "The monitoring and assessment of adherence to the security policy determines whether ", "bbox": {"l": 151.19948, "t": 188.62787000000003, "r": 541.70514, "b": 197.84087999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "your security strategy is working. Often, IBM security consultants are asked to perform ", "bbox": {"l": 151.19948, "t": 200.62769000000003, "r": 534.83002, "b": 209.84069999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "security assessments for companies without regard to the security policy. Although these ", "bbox": {"l": 151.19948, "t": 212.62750000000005, "r": 545.79773, "b": 221.84051999999997, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "assessments can be useful for observing how the system is defined and how data is being ", "bbox": {"l": 151.19948, "t": 224.62732000000005, "r": 547.26086, "b": 233.84033, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "accessed, they cannot determine the level of security without a security policy. Without a ", "bbox": {"l": 151.19948, "t": 236.62714000000005, "r": 543.91528, "b": 245.84015, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "security policy, it really is not an assessment as much as it is a baseline for monitoring the ", "bbox": {"l": 151.19948, "t": 248.62694999999997, "r": 547.25989, "b": 257.83997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "changes in the security settings that are captured.", "bbox": {"l": 151.19946, "t": 260.62676999999996, "r": 371.8692, "b": 269.83978, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 150.1995086669922, "t": 276.76263427734375, "r": 541.992, "b": 287.0709533691406, "coord_origin": "TOPLEFT"}, "confidence": 0.7967227697372437, "cells": [{"id": 20, "text": "A security policy is what defines whether the system and its settings are secure (or not). ", "bbox": {"l": 151.19946, "t": 277.60657000000003, "r": 541.992, "b": 286.81958, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.4777374267578, "t": 293.81439208984375, "r": 547.15826, "b": 376.5453796386719, "coord_origin": "TOPLEFT"}, "confidence": 0.9837487936019897, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.7993, "t": 294.7955600000001, "r": 141.7793, "b": 303.57034, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "The second fundamental in securing data assets is the use of ", "bbox": {"l": 151.19946, "t": 294.64618, "r": 425.86029, "b": 303.85916, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "resource security", "bbox": {"l": 425.82001, "t": 294.12496999999996, "r": 501.60065, "b": 304.18265, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": ". If ", "bbox": {"l": 500.64001, "t": 294.64871, "r": 514.49933, "b": 303.86169, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "implemented properly, resource security prevents data breaches from both internal and ", "bbox": {"l": 151.20038, "t": 306.64853, "r": 537.87421, "b": 315.86151, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "external intrusions. Resource security controls are closely tied to the part of the security ", "bbox": {"l": 151.20038, "t": 318.64834999999994, "r": 541.33636, "b": 327.86133, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "policy that defines who should have access to what information resources. A hacker might ", "bbox": {"l": 151.20038, "t": 330.64816, "r": 547.15826, "b": 339.86115, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "be good enough to get through your company firewalls and sift his way through to your ", "bbox": {"l": 151.20038, "t": 342.64798, "r": 534.86066, "b": 351.86096, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "system, but if they do not have explicit access to your database, the hacker cannot ", "bbox": {"l": 151.20038, "t": 354.6478, "r": 517.00739, "b": 363.86078, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "compromise your information assets.", "bbox": {"l": 151.20038, "t": 366.64761, "r": 314.03534, "b": 375.8606, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 135.90879821777344, "t": 388.12286376953125, "r": 535.36169, "b": 410.3081359863281, "coord_origin": "TOPLEFT"}, "confidence": 0.9622000455856323, "cells": [{"id": 31, "text": "With your eyes now open to the importance of securing information assets, the rest of this ", "bbox": {"l": 136.80022, "t": 388.60742, "r": 535.36169, "b": 397.82040000000006, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "chapter reviews the methods that are available for securing database resources on IBM i. ", "bbox": {"l": 136.80022, "t": 400.60724, "r": 532.755, "b": 409.82022, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "section_header", "bbox": {"l": 64.44733428955078, "t": 437.4118957519531, "r": 323.38391, "b": 453.6912841796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9650285243988037, "cells": [{"id": 33, "text": "1.2", "bbox": {"l": 64.800003, "t": 438.30072, "r": 87.415726, "b": 453.06372, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Current state of IBM i security", "bbox": {"l": 91.93885, "t": 438.30072, "r": 323.38391, "b": 453.06372, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 136.1368408203125, "t": 469.76971435546875, "r": 547.31824, "b": 516.47802734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9848750233650208, "cells": [{"id": 35, "text": "Because of the inherently secure nature of IBM i, many clients rely on the default system ", "bbox": {"l": 136.8, "t": 470.62872, "r": 530.30463, "b": 479.84171, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "settings to protect their business data that is stored in DB2 for i. In most cases, this means no ", "bbox": {"l": 136.8, "t": 482.62854, "r": 547.31824, "b": 491.84152, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "data protection because the default setting for the Create default public authority (QCRTAUT) ", "bbox": {"l": 136.8, "t": 494.62836, "r": 547.19586, "b": 503.84134, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "system value is *CHANGE.", "bbox": {"l": 136.8, "t": 506.62817, "r": 257.04709, "b": 515.84116, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 135.79974365234375, "t": 527.8772583007812, "r": 547.28442, "b": 585.85994, "coord_origin": "TOPLEFT"}, "confidence": 0.9848474860191345, "cells": [{"id": 39, "text": "Even more disturbing is that many IBM i clients remain in this state, despite the news ", "bbox": {"l": 136.8, "t": 528.64774, "r": 513.90448, "b": 537.86073, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "headlines and the significant costs that are involved with databases being compromised. This ", "bbox": {"l": 136.8, "t": 540.6475399999999, "r": 547.28442, "b": 549.86053, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "default security configuration makes it quite challenging to implement basic security policies. ", "bbox": {"l": 136.8, "t": 552.64734, "r": 546.27533, "b": 561.86034, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "A tighter implementation is required if you really want to protect one of your company\u2019s most ", "bbox": {"l": 136.8, "t": 564.64714, "r": 545.08014, "b": 573.86014, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "valuable assets, which is the data.", "bbox": {"l": 136.8, "t": 576.64694, "r": 287.80057, "b": 585.85994, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 135.8997802734375, "t": 598.1246337890625, "r": 547.28326, "b": 680.4212036132812, "coord_origin": "TOPLEFT"}, "confidence": 0.9870820045471191, "cells": [{"id": 44, "text": "Traditionally, IBM i applications have employed menu-based security to counteract this default ", "bbox": {"l": 136.8, "t": 598.6665, "r": 547.28326, "b": 607.8795, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "configuration that gives all users access to the data. The theory is that data is protected by ", "bbox": {"l": 136.8, "t": 610.6663100000001, "r": 538.6767, "b": 619.8793000000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "the menu options controlling what database operations that the user can perform. This ", "bbox": {"l": 136.8, "t": 622.66611, "r": 520.35364, "b": 631.8791, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "approach is ineffective, even if the user profile is restricted from running interactive ", "bbox": {"l": 136.80002, "t": 634.6659099999999, "r": 502.77115000000003, "b": 643.87891, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "commands. The reason is that in today\u2019s connected world there are a multitude of interfaces ", "bbox": {"l": 136.80002, "t": 646.66571, "r": 545.16492, "b": 655.87871, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "into the system, from web browsers to PC clients, that bypass application menus. If there are ", "bbox": {"l": 136.80002, "t": 658.66551, "r": 547.23376, "b": 667.87852, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "no object-level controls, users of these newer interfaces have an open door to your data.", "bbox": {"l": 136.80002, "t": 670.66532, "r": 526.04187, "b": 679.87833, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 5, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.92394256591797, "t": 754.286865234375, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8889444470405579, "cells": [{"id": 0, "text": "2 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "2"}, {"label": "page_footer", "id": 1, "page_no": 5, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 87.81553649902344, "t": 754.6853637695312, "r": 328.72537, "b": 763.9682006835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9476423859596252, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 87.840302, "t": 755.538002, "r": 328.72537, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "section_header", "id": 2, "page_no": 5, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.33735656738281, "t": 73.39700317382812, "r": 267.40582, "b": 89.61579895019531, "coord_origin": "TOPLEFT"}, "confidence": 0.9651358127593994, "cells": [{"id": 2, "text": "1.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.524292, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Security fundamentals", "bbox": {"l": 92.069145, "t": 74.34069999999997, "r": 267.40582, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, "text": "1.1 Security fundamentals"}, {"label": "text", "id": 3, "page_no": 5, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.23556518554688, "t": 106.02731323242188, "r": 545.00482, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9663435220718384, "cells": [{"id": 4, "text": "Before reviewing database security techniques, there are two fundamental steps in securing ", "bbox": {"l": 136.8, "t": 106.6087, "r": 545.00482, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "information assets that must be described:", "bbox": {"l": 136.8, "t": 118.60852, "r": 324.47229, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Before reviewing database security techniques, there are two fundamental steps in securing information assets that must be described:"}, {"label": "list_item", "id": 4, "page_no": 5, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.66490173339844, "t": 134.66909790039062, "r": 547.16425, "b": 181.15467834472656, "coord_origin": "TOPLEFT"}, "confidence": 0.9835494756698608, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 135.79749000000004, "r": 141.78, "b": 144.57227, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "First, and most important, is the definition of a company\u2019s ", "bbox": {"l": 151.20016, "t": 135.64806999999996, "r": 406.67715, "b": 144.86108000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "security policy", "bbox": {"l": 406.67999, "t": 135.12487999999996, "r": 471.03815, "b": 145.18262000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": ". Without a ", "bbox": {"l": 470.04001000000005, "t": 135.64862000000005, "r": 520.59796, "b": 144.86163, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "security policy, there is no definition of what are acceptable practices for using, accessing, ", "bbox": {"l": 151.19949, "t": 147.64844000000005, "r": 547.16425, "b": 156.86145, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "and storing information by who, what, when, where, and how. A security policy should ", "bbox": {"l": 151.19948, "t": 159.64824999999996, "r": 531.02008, "b": 168.86127, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "minimally address three things: confidentiality, integrity, and availability.", "bbox": {"l": 151.19948, "t": 171.64806999999996, "r": 463.3578499999999, "b": 180.86108000000002, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH First, and most important, is the definition of a company\u2019s security policy . Without a security policy, there is no definition of what are acceptable practices for using, accessing, and storing information by who, what, when, where, and how. A security policy should minimally address three things: confidentiality, integrity, and availability."}, {"label": "list_item", "id": 5, "page_no": 5, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 150.2132110595703, "t": 187.9793701171875, "r": 547.26086, "b": 270.5374450683594, "coord_origin": "TOPLEFT"}, "confidence": 0.8077321648597717, "cells": [{"id": 13, "text": "The monitoring and assessment of adherence to the security policy determines whether ", "bbox": {"l": 151.19948, "t": 188.62787000000003, "r": 541.70514, "b": 197.84087999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "your security strategy is working. Often, IBM security consultants are asked to perform ", "bbox": {"l": 151.19948, "t": 200.62769000000003, "r": 534.83002, "b": 209.84069999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "security assessments for companies without regard to the security policy. Although these ", "bbox": {"l": 151.19948, "t": 212.62750000000005, "r": 545.79773, "b": 221.84051999999997, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "assessments can be useful for observing how the system is defined and how data is being ", "bbox": {"l": 151.19948, "t": 224.62732000000005, "r": 547.26086, "b": 233.84033, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "accessed, they cannot determine the level of security without a security policy. Without a ", "bbox": {"l": 151.19948, "t": 236.62714000000005, "r": 543.91528, "b": 245.84015, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "security policy, it really is not an assessment as much as it is a baseline for monitoring the ", "bbox": {"l": 151.19948, "t": 248.62694999999997, "r": 547.25989, "b": 257.83997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "changes in the security settings that are captured.", "bbox": {"l": 151.19946, "t": 260.62676999999996, "r": 371.8692, "b": 269.83978, "coord_origin": "TOPLEFT"}}]}, "text": "The monitoring and assessment of adherence to the security policy determines whether your security strategy is working. Often, IBM security consultants are asked to perform security assessments for companies without regard to the security policy. Although these assessments can be useful for observing how the system is defined and how data is being accessed, they cannot determine the level of security without a security policy. Without a security policy, it really is not an assessment as much as it is a baseline for monitoring the changes in the security settings that are captured."}, {"label": "text", "id": 6, "page_no": 5, "cluster": {"id": 6, "label": "text", "bbox": {"l": 150.1995086669922, "t": 276.76263427734375, "r": 541.992, "b": 287.0709533691406, "coord_origin": "TOPLEFT"}, "confidence": 0.7967227697372437, "cells": [{"id": 20, "text": "A security policy is what defines whether the system and its settings are secure (or not). ", "bbox": {"l": 151.19946, "t": 277.60657000000003, "r": 541.992, "b": 286.81958, "coord_origin": "TOPLEFT"}}]}, "text": "A security policy is what defines whether the system and its settings are secure (or not)."}, {"label": "list_item", "id": 7, "page_no": 5, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.4777374267578, "t": 293.81439208984375, "r": 547.15826, "b": 376.5453796386719, "coord_origin": "TOPLEFT"}, "confidence": 0.9837487936019897, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.7993, "t": 294.7955600000001, "r": 141.7793, "b": 303.57034, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "The second fundamental in securing data assets is the use of ", "bbox": {"l": 151.19946, "t": 294.64618, "r": 425.86029, "b": 303.85916, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "resource security", "bbox": {"l": 425.82001, "t": 294.12496999999996, "r": 501.60065, "b": 304.18265, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": ". If ", "bbox": {"l": 500.64001, "t": 294.64871, "r": 514.49933, "b": 303.86169, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "implemented properly, resource security prevents data breaches from both internal and ", "bbox": {"l": 151.20038, "t": 306.64853, "r": 537.87421, "b": 315.86151, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "external intrusions. Resource security controls are closely tied to the part of the security ", "bbox": {"l": 151.20038, "t": 318.64834999999994, "r": 541.33636, "b": 327.86133, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "policy that defines who should have access to what information resources. A hacker might ", "bbox": {"l": 151.20038, "t": 330.64816, "r": 547.15826, "b": 339.86115, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "be good enough to get through your company firewalls and sift his way through to your ", "bbox": {"l": 151.20038, "t": 342.64798, "r": 534.86066, "b": 351.86096, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "system, but if they do not have explicit access to your database, the hacker cannot ", "bbox": {"l": 151.20038, "t": 354.6478, "r": 517.00739, "b": 363.86078, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "compromise your information assets.", "bbox": {"l": 151.20038, "t": 366.64761, "r": 314.03534, "b": 375.8606, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The second fundamental in securing data assets is the use of resource security . If implemented properly, resource security prevents data breaches from both internal and external intrusions. Resource security controls are closely tied to the part of the security policy that defines who should have access to what information resources. A hacker might be good enough to get through your company firewalls and sift his way through to your system, but if they do not have explicit access to your database, the hacker cannot compromise your information assets."}, {"label": "text", "id": 8, "page_no": 5, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.90879821777344, "t": 388.12286376953125, "r": 535.36169, "b": 410.3081359863281, "coord_origin": "TOPLEFT"}, "confidence": 0.9622000455856323, "cells": [{"id": 31, "text": "With your eyes now open to the importance of securing information assets, the rest of this ", "bbox": {"l": 136.80022, "t": 388.60742, "r": 535.36169, "b": 397.82040000000006, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "chapter reviews the methods that are available for securing database resources on IBM i. ", "bbox": {"l": 136.80022, "t": 400.60724, "r": 532.755, "b": 409.82022, "coord_origin": "TOPLEFT"}}]}, "text": "With your eyes now open to the importance of securing information assets, the rest of this chapter reviews the methods that are available for securing database resources on IBM i."}, {"label": "section_header", "id": 9, "page_no": 5, "cluster": {"id": 9, "label": "section_header", "bbox": {"l": 64.44733428955078, "t": 437.4118957519531, "r": 323.38391, "b": 453.6912841796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9650285243988037, "cells": [{"id": 33, "text": "1.2", "bbox": {"l": 64.800003, "t": 438.30072, "r": 87.415726, "b": 453.06372, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Current state of IBM i security", "bbox": {"l": 91.93885, "t": 438.30072, "r": 323.38391, "b": 453.06372, "coord_origin": "TOPLEFT"}}]}, "text": "1.2 Current state of IBM i security"}, {"label": "text", "id": 10, "page_no": 5, "cluster": {"id": 10, "label": "text", "bbox": {"l": 136.1368408203125, "t": 469.76971435546875, "r": 547.31824, "b": 516.47802734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9848750233650208, "cells": [{"id": 35, "text": "Because of the inherently secure nature of IBM i, many clients rely on the default system ", "bbox": {"l": 136.8, "t": 470.62872, "r": 530.30463, "b": 479.84171, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "settings to protect their business data that is stored in DB2 for i. In most cases, this means no ", "bbox": {"l": 136.8, "t": 482.62854, "r": 547.31824, "b": 491.84152, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "data protection because the default setting for the Create default public authority (QCRTAUT) ", "bbox": {"l": 136.8, "t": 494.62836, "r": 547.19586, "b": 503.84134, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "system value is *CHANGE.", "bbox": {"l": 136.8, "t": 506.62817, "r": 257.04709, "b": 515.84116, "coord_origin": "TOPLEFT"}}]}, "text": "Because of the inherently secure nature of IBM i, many clients rely on the default system settings to protect their business data that is stored in DB2 for i. In most cases, this means no data protection because the default setting for the Create default public authority (QCRTAUT) system value is *CHANGE."}, {"label": "text", "id": 11, "page_no": 5, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.79974365234375, "t": 527.8772583007812, "r": 547.28442, "b": 585.85994, "coord_origin": "TOPLEFT"}, "confidence": 0.9848474860191345, "cells": [{"id": 39, "text": "Even more disturbing is that many IBM i clients remain in this state, despite the news ", "bbox": {"l": 136.8, "t": 528.64774, "r": 513.90448, "b": 537.86073, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "headlines and the significant costs that are involved with databases being compromised. This ", "bbox": {"l": 136.8, "t": 540.6475399999999, "r": 547.28442, "b": 549.86053, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "default security configuration makes it quite challenging to implement basic security policies. ", "bbox": {"l": 136.8, "t": 552.64734, "r": 546.27533, "b": 561.86034, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "A tighter implementation is required if you really want to protect one of your company\u2019s most ", "bbox": {"l": 136.8, "t": 564.64714, "r": 545.08014, "b": 573.86014, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "valuable assets, which is the data.", "bbox": {"l": 136.8, "t": 576.64694, "r": 287.80057, "b": 585.85994, "coord_origin": "TOPLEFT"}}]}, "text": "Even more disturbing is that many IBM i clients remain in this state, despite the news headlines and the significant costs that are involved with databases being compromised. This default security configuration makes it quite challenging to implement basic security policies. A tighter implementation is required if you really want to protect one of your company\u2019s most valuable assets, which is the data."}, {"label": "text", "id": 12, "page_no": 5, "cluster": {"id": 12, "label": "text", "bbox": {"l": 135.8997802734375, "t": 598.1246337890625, "r": 547.28326, "b": 680.4212036132812, "coord_origin": "TOPLEFT"}, "confidence": 0.9870820045471191, "cells": [{"id": 44, "text": "Traditionally, IBM i applications have employed menu-based security to counteract this default ", "bbox": {"l": 136.8, "t": 598.6665, "r": 547.28326, "b": 607.8795, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "configuration that gives all users access to the data. The theory is that data is protected by ", "bbox": {"l": 136.8, "t": 610.6663100000001, "r": 538.6767, "b": 619.8793000000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "the menu options controlling what database operations that the user can perform. This ", "bbox": {"l": 136.8, "t": 622.66611, "r": 520.35364, "b": 631.8791, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "approach is ineffective, even if the user profile is restricted from running interactive ", "bbox": {"l": 136.80002, "t": 634.6659099999999, "r": 502.77115000000003, "b": 643.87891, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "commands. The reason is that in today\u2019s connected world there are a multitude of interfaces ", "bbox": {"l": 136.80002, "t": 646.66571, "r": 545.16492, "b": 655.87871, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "into the system, from web browsers to PC clients, that bypass application menus. If there are ", "bbox": {"l": 136.80002, "t": 658.66551, "r": 547.23376, "b": 667.87852, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "no object-level controls, users of these newer interfaces have an open door to your data.", "bbox": {"l": 136.80002, "t": 670.66532, "r": 526.04187, "b": 679.87833, "coord_origin": "TOPLEFT"}}]}, "text": "Traditionally, IBM i applications have employed menu-based security to counteract this default configuration that gives all users access to the data. The theory is that data is protected by the menu options controlling what database operations that the user can perform. This approach is ineffective, even if the user profile is restricted from running interactive commands. The reason is that in today\u2019s connected world there are a multitude of interfaces into the system, from web browsers to PC clients, that bypass application menus. If there are no object-level controls, users of these newer interfaces have an open door to your data."}], "body": [{"label": "section_header", "id": 2, "page_no": 5, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.33735656738281, "t": 73.39700317382812, "r": 267.40582, "b": 89.61579895019531, "coord_origin": "TOPLEFT"}, "confidence": 0.9651358127593994, "cells": [{"id": 2, "text": "1.1", "bbox": {"l": 64.800003, "t": 74.34069999999997, "r": 87.524292, "b": 89.1037, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Security fundamentals", "bbox": {"l": 92.069145, "t": 74.34069999999997, "r": 267.40582, "b": 89.1037, "coord_origin": "TOPLEFT"}}]}, "text": "1.1 Security fundamentals"}, {"label": "text", "id": 3, "page_no": 5, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.23556518554688, "t": 106.02731323242188, "r": 545.00482, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9663435220718384, "cells": [{"id": 4, "text": "Before reviewing database security techniques, there are two fundamental steps in securing ", "bbox": {"l": 136.8, "t": 106.6087, "r": 545.00482, "b": 115.82172000000003, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "information assets that must be described:", "bbox": {"l": 136.8, "t": 118.60852, "r": 324.47229, "b": 127.82153000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Before reviewing database security techniques, there are two fundamental steps in securing information assets that must be described:"}, {"label": "list_item", "id": 4, "page_no": 5, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.66490173339844, "t": 134.66909790039062, "r": 547.16425, "b": 181.15467834472656, "coord_origin": "TOPLEFT"}, "confidence": 0.9835494756698608, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 135.79749000000004, "r": 141.78, "b": 144.57227, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "First, and most important, is the definition of a company\u2019s ", "bbox": {"l": 151.20016, "t": 135.64806999999996, "r": 406.67715, "b": 144.86108000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "security policy", "bbox": {"l": 406.67999, "t": 135.12487999999996, "r": 471.03815, "b": 145.18262000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": ". Without a ", "bbox": {"l": 470.04001000000005, "t": 135.64862000000005, "r": 520.59796, "b": 144.86163, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "security policy, there is no definition of what are acceptable practices for using, accessing, ", "bbox": {"l": 151.19949, "t": 147.64844000000005, "r": 547.16425, "b": 156.86145, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "and storing information by who, what, when, where, and how. A security policy should ", "bbox": {"l": 151.19948, "t": 159.64824999999996, "r": 531.02008, "b": 168.86127, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "minimally address three things: confidentiality, integrity, and availability.", "bbox": {"l": 151.19948, "t": 171.64806999999996, "r": 463.3578499999999, "b": 180.86108000000002, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH First, and most important, is the definition of a company\u2019s security policy . Without a security policy, there is no definition of what are acceptable practices for using, accessing, and storing information by who, what, when, where, and how. A security policy should minimally address three things: confidentiality, integrity, and availability."}, {"label": "list_item", "id": 5, "page_no": 5, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 150.2132110595703, "t": 187.9793701171875, "r": 547.26086, "b": 270.5374450683594, "coord_origin": "TOPLEFT"}, "confidence": 0.8077321648597717, "cells": [{"id": 13, "text": "The monitoring and assessment of adherence to the security policy determines whether ", "bbox": {"l": 151.19948, "t": 188.62787000000003, "r": 541.70514, "b": 197.84087999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "your security strategy is working. Often, IBM security consultants are asked to perform ", "bbox": {"l": 151.19948, "t": 200.62769000000003, "r": 534.83002, "b": 209.84069999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "security assessments for companies without regard to the security policy. Although these ", "bbox": {"l": 151.19948, "t": 212.62750000000005, "r": 545.79773, "b": 221.84051999999997, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "assessments can be useful for observing how the system is defined and how data is being ", "bbox": {"l": 151.19948, "t": 224.62732000000005, "r": 547.26086, "b": 233.84033, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "accessed, they cannot determine the level of security without a security policy. Without a ", "bbox": {"l": 151.19948, "t": 236.62714000000005, "r": 543.91528, "b": 245.84015, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "security policy, it really is not an assessment as much as it is a baseline for monitoring the ", "bbox": {"l": 151.19948, "t": 248.62694999999997, "r": 547.25989, "b": 257.83997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "changes in the security settings that are captured.", "bbox": {"l": 151.19946, "t": 260.62676999999996, "r": 371.8692, "b": 269.83978, "coord_origin": "TOPLEFT"}}]}, "text": "The monitoring and assessment of adherence to the security policy determines whether your security strategy is working. Often, IBM security consultants are asked to perform security assessments for companies without regard to the security policy. Although these assessments can be useful for observing how the system is defined and how data is being accessed, they cannot determine the level of security without a security policy. Without a security policy, it really is not an assessment as much as it is a baseline for monitoring the changes in the security settings that are captured."}, {"label": "text", "id": 6, "page_no": 5, "cluster": {"id": 6, "label": "text", "bbox": {"l": 150.1995086669922, "t": 276.76263427734375, "r": 541.992, "b": 287.0709533691406, "coord_origin": "TOPLEFT"}, "confidence": 0.7967227697372437, "cells": [{"id": 20, "text": "A security policy is what defines whether the system and its settings are secure (or not). ", "bbox": {"l": 151.19946, "t": 277.60657000000003, "r": 541.992, "b": 286.81958, "coord_origin": "TOPLEFT"}}]}, "text": "A security policy is what defines whether the system and its settings are secure (or not)."}, {"label": "list_item", "id": 7, "page_no": 5, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.4777374267578, "t": 293.81439208984375, "r": 547.15826, "b": 376.5453796386719, "coord_origin": "TOPLEFT"}, "confidence": 0.9837487936019897, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.7993, "t": 294.7955600000001, "r": 141.7793, "b": 303.57034, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "The second fundamental in securing data assets is the use of ", "bbox": {"l": 151.19946, "t": 294.64618, "r": 425.86029, "b": 303.85916, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "resource security", "bbox": {"l": 425.82001, "t": 294.12496999999996, "r": 501.60065, "b": 304.18265, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": ". If ", "bbox": {"l": 500.64001, "t": 294.64871, "r": 514.49933, "b": 303.86169, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "implemented properly, resource security prevents data breaches from both internal and ", "bbox": {"l": 151.20038, "t": 306.64853, "r": 537.87421, "b": 315.86151, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "external intrusions. Resource security controls are closely tied to the part of the security ", "bbox": {"l": 151.20038, "t": 318.64834999999994, "r": 541.33636, "b": 327.86133, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "policy that defines who should have access to what information resources. A hacker might ", "bbox": {"l": 151.20038, "t": 330.64816, "r": 547.15826, "b": 339.86115, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "be good enough to get through your company firewalls and sift his way through to your ", "bbox": {"l": 151.20038, "t": 342.64798, "r": 534.86066, "b": 351.86096, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "system, but if they do not have explicit access to your database, the hacker cannot ", "bbox": {"l": 151.20038, "t": 354.6478, "r": 517.00739, "b": 363.86078, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "compromise your information assets.", "bbox": {"l": 151.20038, "t": 366.64761, "r": 314.03534, "b": 375.8606, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The second fundamental in securing data assets is the use of resource security . If implemented properly, resource security prevents data breaches from both internal and external intrusions. Resource security controls are closely tied to the part of the security policy that defines who should have access to what information resources. A hacker might be good enough to get through your company firewalls and sift his way through to your system, but if they do not have explicit access to your database, the hacker cannot compromise your information assets."}, {"label": "text", "id": 8, "page_no": 5, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.90879821777344, "t": 388.12286376953125, "r": 535.36169, "b": 410.3081359863281, "coord_origin": "TOPLEFT"}, "confidence": 0.9622000455856323, "cells": [{"id": 31, "text": "With your eyes now open to the importance of securing information assets, the rest of this ", "bbox": {"l": 136.80022, "t": 388.60742, "r": 535.36169, "b": 397.82040000000006, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "chapter reviews the methods that are available for securing database resources on IBM i. ", "bbox": {"l": 136.80022, "t": 400.60724, "r": 532.755, "b": 409.82022, "coord_origin": "TOPLEFT"}}]}, "text": "With your eyes now open to the importance of securing information assets, the rest of this chapter reviews the methods that are available for securing database resources on IBM i."}, {"label": "section_header", "id": 9, "page_no": 5, "cluster": {"id": 9, "label": "section_header", "bbox": {"l": 64.44733428955078, "t": 437.4118957519531, "r": 323.38391, "b": 453.6912841796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9650285243988037, "cells": [{"id": 33, "text": "1.2", "bbox": {"l": 64.800003, "t": 438.30072, "r": 87.415726, "b": 453.06372, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Current state of IBM i security", "bbox": {"l": 91.93885, "t": 438.30072, "r": 323.38391, "b": 453.06372, "coord_origin": "TOPLEFT"}}]}, "text": "1.2 Current state of IBM i security"}, {"label": "text", "id": 10, "page_no": 5, "cluster": {"id": 10, "label": "text", "bbox": {"l": 136.1368408203125, "t": 469.76971435546875, "r": 547.31824, "b": 516.47802734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9848750233650208, "cells": [{"id": 35, "text": "Because of the inherently secure nature of IBM i, many clients rely on the default system ", "bbox": {"l": 136.8, "t": 470.62872, "r": 530.30463, "b": 479.84171, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "settings to protect their business data that is stored in DB2 for i. In most cases, this means no ", "bbox": {"l": 136.8, "t": 482.62854, "r": 547.31824, "b": 491.84152, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "data protection because the default setting for the Create default public authority (QCRTAUT) ", "bbox": {"l": 136.8, "t": 494.62836, "r": 547.19586, "b": 503.84134, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "system value is *CHANGE.", "bbox": {"l": 136.8, "t": 506.62817, "r": 257.04709, "b": 515.84116, "coord_origin": "TOPLEFT"}}]}, "text": "Because of the inherently secure nature of IBM i, many clients rely on the default system settings to protect their business data that is stored in DB2 for i. In most cases, this means no data protection because the default setting for the Create default public authority (QCRTAUT) system value is *CHANGE."}, {"label": "text", "id": 11, "page_no": 5, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.79974365234375, "t": 527.8772583007812, "r": 547.28442, "b": 585.85994, "coord_origin": "TOPLEFT"}, "confidence": 0.9848474860191345, "cells": [{"id": 39, "text": "Even more disturbing is that many IBM i clients remain in this state, despite the news ", "bbox": {"l": 136.8, "t": 528.64774, "r": 513.90448, "b": 537.86073, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "headlines and the significant costs that are involved with databases being compromised. This ", "bbox": {"l": 136.8, "t": 540.6475399999999, "r": 547.28442, "b": 549.86053, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "default security configuration makes it quite challenging to implement basic security policies. ", "bbox": {"l": 136.8, "t": 552.64734, "r": 546.27533, "b": 561.86034, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "A tighter implementation is required if you really want to protect one of your company\u2019s most ", "bbox": {"l": 136.8, "t": 564.64714, "r": 545.08014, "b": 573.86014, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "valuable assets, which is the data.", "bbox": {"l": 136.8, "t": 576.64694, "r": 287.80057, "b": 585.85994, "coord_origin": "TOPLEFT"}}]}, "text": "Even more disturbing is that many IBM i clients remain in this state, despite the news headlines and the significant costs that are involved with databases being compromised. This default security configuration makes it quite challenging to implement basic security policies. A tighter implementation is required if you really want to protect one of your company\u2019s most valuable assets, which is the data."}, {"label": "text", "id": 12, "page_no": 5, "cluster": {"id": 12, "label": "text", "bbox": {"l": 135.8997802734375, "t": 598.1246337890625, "r": 547.28326, "b": 680.4212036132812, "coord_origin": "TOPLEFT"}, "confidence": 0.9870820045471191, "cells": [{"id": 44, "text": "Traditionally, IBM i applications have employed menu-based security to counteract this default ", "bbox": {"l": 136.8, "t": 598.6665, "r": 547.28326, "b": 607.8795, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "configuration that gives all users access to the data. The theory is that data is protected by ", "bbox": {"l": 136.8, "t": 610.6663100000001, "r": 538.6767, "b": 619.8793000000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "the menu options controlling what database operations that the user can perform. This ", "bbox": {"l": 136.8, "t": 622.66611, "r": 520.35364, "b": 631.8791, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "approach is ineffective, even if the user profile is restricted from running interactive ", "bbox": {"l": 136.80002, "t": 634.6659099999999, "r": 502.77115000000003, "b": 643.87891, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "commands. The reason is that in today\u2019s connected world there are a multitude of interfaces ", "bbox": {"l": 136.80002, "t": 646.66571, "r": 545.16492, "b": 655.87871, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "into the system, from web browsers to PC clients, that bypass application menus. If there are ", "bbox": {"l": 136.80002, "t": 658.66551, "r": 547.23376, "b": 667.87852, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "no object-level controls, users of these newer interfaces have an open door to your data.", "bbox": {"l": 136.80002, "t": 670.66532, "r": 526.04187, "b": 679.87833, "coord_origin": "TOPLEFT"}}]}, "text": "Traditionally, IBM i applications have employed menu-based security to counteract this default configuration that gives all users access to the data. The theory is that data is protected by the menu options controlling what database operations that the user can perform. This approach is ineffective, even if the user profile is restricted from running interactive commands. The reason is that in today\u2019s connected world there are a multitude of interfaces into the system, from web browsers to PC clients, that bypass application menus. If there are no object-level controls, users of these newer interfaces have an open door to your data."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 5, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.92394256591797, "t": 754.286865234375, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8889444470405579, "cells": [{"id": 0, "text": "2 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "2"}, {"label": "page_footer", "id": 1, "page_no": 5, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 87.81553649902344, "t": 754.6853637695312, "r": 328.72537, "b": 763.9682006835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9476423859596252, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 87.840302, "t": 755.538002, "r": 328.72537, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 6, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "4 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 87.840302, "t": 755.538002, "r": 328.72537, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Many businesses are trying to limit data access to a need-to-know basis. This security goal ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 541.19006, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "means that users should be given access only to the minimum set of data that is required to ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 544.30334, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "perform their job. Often, users with object-level access are given access to row and column ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 540.94299, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "values that are beyond what their business task requires because that object-level security ", "bbox": {"l": 136.80002, "t": 107.50811999999996, "r": 538.27454, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "provides an all-or-nothing solution. For example, object-level controls allow a manager to ", "bbox": {"l": 136.80002, "t": 119.50792999999999, "r": 530.23004, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "access data about all employees. Most security policies limit a manager to accessing data ", "bbox": {"l": 136.80002, "t": 131.50775, "r": 536.26263, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "only for the employees that they manage.", "bbox": {"l": 136.80002, "t": 143.50757, "r": 319.04318, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "1.3.1", "bbox": {"l": 64.800003, "t": 173.33471999999995, "r": 94.033653, "b": 185.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Existing row and column control", "bbox": {"l": 97.687859, "t": 173.33471999999995, "r": 301.46902, "b": 185.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Some IBM i clients have tried augmenting the all-or-nothing object-level security with SQL ", "bbox": {"l": 136.8, "t": 199.48870999999997, "r": 534.90112, "b": 208.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "views (or logical files) and application logic, as shown in Figure 1-2. However, ", "bbox": {"l": 136.8, "t": 211.48852999999997, "r": 480.47281000000004, "b": 220.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "application-based logic is easy to bypass with all of the different data access interfaces that ", "bbox": {"l": 136.8, "t": 223.48834, "r": 541.56738, "b": 232.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "are provided by the IBM i operating system, such as Open Database Connectivity (ODBC) ", "bbox": {"l": 136.8, "t": 235.48816, "r": 537.39423, "b": 244.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "and System i Navigator.", "bbox": {"l": 136.79999, "t": 247.48798, "r": 242.24352000000002, "b": 256.70099000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Using SQL views to limit access to a subset of the data in a table also has its own set of ", "bbox": {"l": 136.79999, "t": 269.50757, "r": 526.88428, "b": 278.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "challenges. First, there is the complexity of managing all of the SQL view objects that are ", "bbox": {"l": 136.79999, "t": 281.50742, "r": 531.77087, "b": 290.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "used for securing data access. Second, scaling a view-based security solution can be difficult ", "bbox": {"l": 136.79999, "t": 293.50723000000005, "r": 547.4408, "b": 302.72021, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "as the amount of data grows and the number of users increases.", "bbox": {"l": 136.79999, "t": 305.50705, "r": 421.86725, "b": 314.72003, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Even if you are willing to live with these performance and management issues, a user with ", "bbox": {"l": 136.79999, "t": 327.52661, "r": 536.46692, "b": 336.7395900000001, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "*ALLOBJ access still can directly access all of the data in the underlying DB2 table and easily ", "bbox": {"l": 136.79999, "t": 339.52643, "r": 547.23267, "b": 348.73941, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "bypass the security controls that are built into an SQL view.", "bbox": {"l": 136.79999, "t": 351.52624999999995, "r": 397.88553, "b": 360.73923, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Figure 1-2 Existing row and column controls", "bbox": {"l": 136.8, "t": 691.818, "r": 316.44727, "b": 700.142998, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "User with", "bbox": {"l": 180.95911, "t": 383.45612, "r": 209.08017, "b": 389.0784, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "*ALLOBJ access", "bbox": {"l": 170.00624, "t": 390.95251, "r": 220.10355, "b": 396.57480000000004, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.09014129638672, "t": 754.0796508789062, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8578534126281738, "cells": [{"id": 0, "text": "4 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 87.840302, "t": 754.6302490234375, "r": 328.72537, "b": 763.9817504882812, "coord_origin": "TOPLEFT"}, "confidence": 0.9491621851921082, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 87.840302, "t": 755.538002, "r": 328.72537, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.9996337890625, "t": 70.63605499267578, "r": 544.30334, "b": 153.09298706054688, "coord_origin": "TOPLEFT"}, "confidence": 0.9872740507125854, "cells": [{"id": 2, "text": "Many businesses are trying to limit data access to a need-to-know basis. This security goal ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 541.19006, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "means that users should be given access only to the minimum set of data that is required to ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 544.30334, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "perform their job. Often, users with object-level access are given access to row and column ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 540.94299, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "values that are beyond what their business task requires because that object-level security ", "bbox": {"l": 136.80002, "t": 107.50811999999996, "r": 538.27454, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "provides an all-or-nothing solution. For example, object-level controls allow a manager to ", "bbox": {"l": 136.80002, "t": 119.50792999999999, "r": 530.23004, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "access data about all employees. Most security policies limit a manager to accessing data ", "bbox": {"l": 136.80002, "t": 131.50775, "r": 536.26263, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "only for the employees that they manage.", "bbox": {"l": 136.80002, "t": 143.50757, "r": 319.04318, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "section_header", "bbox": {"l": 64.4480209350586, "t": 172.2285919189453, "r": 301.46902, "b": 185.72744750976562, "coord_origin": "TOPLEFT"}, "confidence": 0.9626136422157288, "cells": [{"id": 9, "text": "1.3.1", "bbox": {"l": 64.800003, "t": 173.33471999999995, "r": 94.033653, "b": 185.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Existing row and column control", "bbox": {"l": 97.687859, "t": 173.33471999999995, "r": 301.46902, "b": 185.32275000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.77957153320312, "t": 198.52076721191406, "r": 541.56738, "b": 257.1080322265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9858148097991943, "cells": [{"id": 11, "text": "Some IBM i clients have tried augmenting the all-or-nothing object-level security with SQL ", "bbox": {"l": 136.8, "t": 199.48870999999997, "r": 534.90112, "b": 208.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "views (or logical files) and application logic, as shown in Figure 1-2. However, ", "bbox": {"l": 136.8, "t": 211.48852999999997, "r": 480.47281000000004, "b": 220.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "application-based logic is easy to bypass with all of the different data access interfaces that ", "bbox": {"l": 136.8, "t": 223.48834, "r": 541.56738, "b": 232.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "are provided by the IBM i operating system, such as Open Database Connectivity (ODBC) ", "bbox": {"l": 136.8, "t": 235.48816, "r": 537.39423, "b": 244.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "and System i Navigator.", "bbox": {"l": 136.79999, "t": 247.48798, "r": 242.24352000000002, "b": 256.70099000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.9119110107422, "t": 268.6311340332031, "r": 547.4408, "b": 314.89898681640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9875384569168091, "cells": [{"id": 16, "text": "Using SQL views to limit access to a subset of the data in a table also has its own set of ", "bbox": {"l": 136.79999, "t": 269.50757, "r": 526.88428, "b": 278.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "challenges. First, there is the complexity of managing all of the SQL view objects that are ", "bbox": {"l": 136.79999, "t": 281.50742, "r": 531.77087, "b": 290.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "used for securing data access. Second, scaling a view-based security solution can be difficult ", "bbox": {"l": 136.79999, "t": 293.50723000000005, "r": 547.4408, "b": 302.72021, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "as the amount of data grows and the number of users increases.", "bbox": {"l": 136.79999, "t": 305.50705, "r": 421.86725, "b": 314.72003, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 136.0379638671875, "t": 326.60943603515625, "r": 547.23267, "b": 361.19879150390625, "coord_origin": "TOPLEFT"}, "confidence": 0.975760281085968, "cells": [{"id": 20, "text": "Even if you are willing to live with these performance and management issues, a user with ", "bbox": {"l": 136.79999, "t": 327.52661, "r": 536.46692, "b": 336.7395900000001, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "*ALLOBJ access still can directly access all of the data in the underlying DB2 table and easily ", "bbox": {"l": 136.79999, "t": 339.52643, "r": 547.23267, "b": 348.73941, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "bypass the security controls that are built into an SQL view.", "bbox": {"l": 136.79999, "t": 351.52624999999995, "r": 397.88553, "b": 360.73923, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "caption", "bbox": {"l": 136.23910522460938, "t": 690.8873901367188, "r": 317.073486328125, "b": 700.1619262695312, "coord_origin": "TOPLEFT"}, "confidence": 0.9457826614379883, "cells": [{"id": 23, "text": "Figure 1-2 Existing row and column controls", "bbox": {"l": 136.8, "t": 691.818, "r": 316.44727, "b": 700.142998, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 135.92466735839844, "t": 375.9272155761719, "r": 546.4456176757812, "b": 688.6098022460938, "coord_origin": "TOPLEFT"}, "confidence": 0.9838992357254028, "cells": [{"id": 24, "text": "User with", "bbox": {"l": 180.95911, "t": 383.45612, "r": 209.08017, "b": 389.0784, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "*ALLOBJ access", "bbox": {"l": 170.00624, "t": 390.95251, "r": 220.10355, "b": 396.57480000000004, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 6, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.09014129638672, "t": 754.0796508789062, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8578534126281738, "cells": [{"id": 0, "text": "4 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "4"}, {"label": "page_footer", "id": 1, "page_no": 6, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 87.840302, "t": 754.6302490234375, "r": 328.72537, "b": 763.9817504882812, "coord_origin": "TOPLEFT"}, "confidence": 0.9491621851921082, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 87.840302, "t": 755.538002, "r": 328.72537, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 2, "page_no": 6, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.9996337890625, "t": 70.63605499267578, "r": 544.30334, "b": 153.09298706054688, "coord_origin": "TOPLEFT"}, "confidence": 0.9872740507125854, "cells": [{"id": 2, "text": "Many businesses are trying to limit data access to a need-to-know basis. This security goal ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 541.19006, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "means that users should be given access only to the minimum set of data that is required to ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 544.30334, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "perform their job. Often, users with object-level access are given access to row and column ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 540.94299, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "values that are beyond what their business task requires because that object-level security ", "bbox": {"l": 136.80002, "t": 107.50811999999996, "r": 538.27454, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "provides an all-or-nothing solution. For example, object-level controls allow a manager to ", "bbox": {"l": 136.80002, "t": 119.50792999999999, "r": 530.23004, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "access data about all employees. Most security policies limit a manager to accessing data ", "bbox": {"l": 136.80002, "t": 131.50775, "r": 536.26263, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "only for the employees that they manage.", "bbox": {"l": 136.80002, "t": 143.50757, "r": 319.04318, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Many businesses are trying to limit data access to a need-to-know basis. This security goal means that users should be given access only to the minimum set of data that is required to perform their job. Often, users with object-level access are given access to row and column values that are beyond what their business task requires because that object-level security provides an all-or-nothing solution. For example, object-level controls allow a manager to access data about all employees. Most security policies limit a manager to accessing data only for the employees that they manage."}, {"label": "section_header", "id": 3, "page_no": 6, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 64.4480209350586, "t": 172.2285919189453, "r": 301.46902, "b": 185.72744750976562, "coord_origin": "TOPLEFT"}, "confidence": 0.9626136422157288, "cells": [{"id": 9, "text": "1.3.1", "bbox": {"l": 64.800003, "t": 173.33471999999995, "r": 94.033653, "b": 185.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Existing row and column control", "bbox": {"l": 97.687859, "t": 173.33471999999995, "r": 301.46902, "b": 185.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "1.3.1 Existing row and column control"}, {"label": "text", "id": 4, "page_no": 6, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.77957153320312, "t": 198.52076721191406, "r": 541.56738, "b": 257.1080322265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9858148097991943, "cells": [{"id": 11, "text": "Some IBM i clients have tried augmenting the all-or-nothing object-level security with SQL ", "bbox": {"l": 136.8, "t": 199.48870999999997, "r": 534.90112, "b": 208.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "views (or logical files) and application logic, as shown in Figure 1-2. However, ", "bbox": {"l": 136.8, "t": 211.48852999999997, "r": 480.47281000000004, "b": 220.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "application-based logic is easy to bypass with all of the different data access interfaces that ", "bbox": {"l": 136.8, "t": 223.48834, "r": 541.56738, "b": 232.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "are provided by the IBM i operating system, such as Open Database Connectivity (ODBC) ", "bbox": {"l": 136.8, "t": 235.48816, "r": 537.39423, "b": 244.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "and System i Navigator.", "bbox": {"l": 136.79999, "t": 247.48798, "r": 242.24352000000002, "b": 256.70099000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Some IBM i clients have tried augmenting the all-or-nothing object-level security with SQL views (or logical files) and application logic, as shown in Figure 1-2. However, application-based logic is easy to bypass with all of the different data access interfaces that are provided by the IBM i operating system, such as Open Database Connectivity (ODBC) and System i Navigator."}, {"label": "text", "id": 5, "page_no": 6, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.9119110107422, "t": 268.6311340332031, "r": 547.4408, "b": 314.89898681640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9875384569168091, "cells": [{"id": 16, "text": "Using SQL views to limit access to a subset of the data in a table also has its own set of ", "bbox": {"l": 136.79999, "t": 269.50757, "r": 526.88428, "b": 278.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "challenges. First, there is the complexity of managing all of the SQL view objects that are ", "bbox": {"l": 136.79999, "t": 281.50742, "r": 531.77087, "b": 290.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "used for securing data access. Second, scaling a view-based security solution can be difficult ", "bbox": {"l": 136.79999, "t": 293.50723000000005, "r": 547.4408, "b": 302.72021, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "as the amount of data grows and the number of users increases.", "bbox": {"l": 136.79999, "t": 305.50705, "r": 421.86725, "b": 314.72003, "coord_origin": "TOPLEFT"}}]}, "text": "Using SQL views to limit access to a subset of the data in a table also has its own set of challenges. First, there is the complexity of managing all of the SQL view objects that are used for securing data access. Second, scaling a view-based security solution can be difficult as the amount of data grows and the number of users increases."}, {"label": "text", "id": 6, "page_no": 6, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.0379638671875, "t": 326.60943603515625, "r": 547.23267, "b": 361.19879150390625, "coord_origin": "TOPLEFT"}, "confidence": 0.975760281085968, "cells": [{"id": 20, "text": "Even if you are willing to live with these performance and management issues, a user with ", "bbox": {"l": 136.79999, "t": 327.52661, "r": 536.46692, "b": 336.7395900000001, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "*ALLOBJ access still can directly access all of the data in the underlying DB2 table and easily ", "bbox": {"l": 136.79999, "t": 339.52643, "r": 547.23267, "b": 348.73941, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "bypass the security controls that are built into an SQL view.", "bbox": {"l": 136.79999, "t": 351.52624999999995, "r": 397.88553, "b": 360.73923, "coord_origin": "TOPLEFT"}}]}, "text": "Even if you are willing to live with these performance and management issues, a user with *ALLOBJ access still can directly access all of the data in the underlying DB2 table and easily bypass the security controls that are built into an SQL view."}, {"label": "caption", "id": 7, "page_no": 6, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 136.23910522460938, "t": 690.8873901367188, "r": 317.073486328125, "b": 700.1619262695312, "coord_origin": "TOPLEFT"}, "confidence": 0.9457826614379883, "cells": [{"id": 23, "text": "Figure 1-2 Existing row and column controls", "bbox": {"l": 136.8, "t": 691.818, "r": 316.44727, "b": 700.142998, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 1-2 Existing row and column controls"}, {"label": "picture", "id": 8, "page_no": 6, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 135.92466735839844, "t": 375.9272155761719, "r": 546.4456176757812, "b": 688.6098022460938, "coord_origin": "TOPLEFT"}, "confidence": 0.9838992357254028, "cells": [{"id": 24, "text": "User with", "bbox": {"l": 180.95911, "t": 383.45612, "r": 209.08017, "b": 389.0784, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "*ALLOBJ access", "bbox": {"l": 170.00624, "t": 390.95251, "r": 220.10355, "b": 396.57480000000004, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 6, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.9996337890625, "t": 70.63605499267578, "r": 544.30334, "b": 153.09298706054688, "coord_origin": "TOPLEFT"}, "confidence": 0.9872740507125854, "cells": [{"id": 2, "text": "Many businesses are trying to limit data access to a need-to-know basis. This security goal ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 541.19006, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "means that users should be given access only to the minimum set of data that is required to ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 544.30334, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "perform their job. Often, users with object-level access are given access to row and column ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 540.94299, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "values that are beyond what their business task requires because that object-level security ", "bbox": {"l": 136.80002, "t": 107.50811999999996, "r": 538.27454, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "provides an all-or-nothing solution. For example, object-level controls allow a manager to ", "bbox": {"l": 136.80002, "t": 119.50792999999999, "r": 530.23004, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "access data about all employees. Most security policies limit a manager to accessing data ", "bbox": {"l": 136.80002, "t": 131.50775, "r": 536.26263, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "only for the employees that they manage.", "bbox": {"l": 136.80002, "t": 143.50757, "r": 319.04318, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Many businesses are trying to limit data access to a need-to-know basis. This security goal means that users should be given access only to the minimum set of data that is required to perform their job. Often, users with object-level access are given access to row and column values that are beyond what their business task requires because that object-level security provides an all-or-nothing solution. For example, object-level controls allow a manager to access data about all employees. Most security policies limit a manager to accessing data only for the employees that they manage."}, {"label": "section_header", "id": 3, "page_no": 6, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 64.4480209350586, "t": 172.2285919189453, "r": 301.46902, "b": 185.72744750976562, "coord_origin": "TOPLEFT"}, "confidence": 0.9626136422157288, "cells": [{"id": 9, "text": "1.3.1", "bbox": {"l": 64.800003, "t": 173.33471999999995, "r": 94.033653, "b": 185.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Existing row and column control", "bbox": {"l": 97.687859, "t": 173.33471999999995, "r": 301.46902, "b": 185.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "1.3.1 Existing row and column control"}, {"label": "text", "id": 4, "page_no": 6, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.77957153320312, "t": 198.52076721191406, "r": 541.56738, "b": 257.1080322265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9858148097991943, "cells": [{"id": 11, "text": "Some IBM i clients have tried augmenting the all-or-nothing object-level security with SQL ", "bbox": {"l": 136.8, "t": 199.48870999999997, "r": 534.90112, "b": 208.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "views (or logical files) and application logic, as shown in Figure 1-2. However, ", "bbox": {"l": 136.8, "t": 211.48852999999997, "r": 480.47281000000004, "b": 220.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "application-based logic is easy to bypass with all of the different data access interfaces that ", "bbox": {"l": 136.8, "t": 223.48834, "r": 541.56738, "b": 232.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "are provided by the IBM i operating system, such as Open Database Connectivity (ODBC) ", "bbox": {"l": 136.8, "t": 235.48816, "r": 537.39423, "b": 244.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "and System i Navigator.", "bbox": {"l": 136.79999, "t": 247.48798, "r": 242.24352000000002, "b": 256.70099000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Some IBM i clients have tried augmenting the all-or-nothing object-level security with SQL views (or logical files) and application logic, as shown in Figure 1-2. However, application-based logic is easy to bypass with all of the different data access interfaces that are provided by the IBM i operating system, such as Open Database Connectivity (ODBC) and System i Navigator."}, {"label": "text", "id": 5, "page_no": 6, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.9119110107422, "t": 268.6311340332031, "r": 547.4408, "b": 314.89898681640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9875384569168091, "cells": [{"id": 16, "text": "Using SQL views to limit access to a subset of the data in a table also has its own set of ", "bbox": {"l": 136.79999, "t": 269.50757, "r": 526.88428, "b": 278.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "challenges. First, there is the complexity of managing all of the SQL view objects that are ", "bbox": {"l": 136.79999, "t": 281.50742, "r": 531.77087, "b": 290.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "used for securing data access. Second, scaling a view-based security solution can be difficult ", "bbox": {"l": 136.79999, "t": 293.50723000000005, "r": 547.4408, "b": 302.72021, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "as the amount of data grows and the number of users increases.", "bbox": {"l": 136.79999, "t": 305.50705, "r": 421.86725, "b": 314.72003, "coord_origin": "TOPLEFT"}}]}, "text": "Using SQL views to limit access to a subset of the data in a table also has its own set of challenges. First, there is the complexity of managing all of the SQL view objects that are used for securing data access. Second, scaling a view-based security solution can be difficult as the amount of data grows and the number of users increases."}, {"label": "text", "id": 6, "page_no": 6, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.0379638671875, "t": 326.60943603515625, "r": 547.23267, "b": 361.19879150390625, "coord_origin": "TOPLEFT"}, "confidence": 0.975760281085968, "cells": [{"id": 20, "text": "Even if you are willing to live with these performance and management issues, a user with ", "bbox": {"l": 136.79999, "t": 327.52661, "r": 536.46692, "b": 336.7395900000001, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "*ALLOBJ access still can directly access all of the data in the underlying DB2 table and easily ", "bbox": {"l": 136.79999, "t": 339.52643, "r": 547.23267, "b": 348.73941, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "bypass the security controls that are built into an SQL view.", "bbox": {"l": 136.79999, "t": 351.52624999999995, "r": 397.88553, "b": 360.73923, "coord_origin": "TOPLEFT"}}]}, "text": "Even if you are willing to live with these performance and management issues, a user with *ALLOBJ access still can directly access all of the data in the underlying DB2 table and easily bypass the security controls that are built into an SQL view."}, {"label": "caption", "id": 7, "page_no": 6, "cluster": {"id": 7, "label": "caption", "bbox": {"l": 136.23910522460938, "t": 690.8873901367188, "r": 317.073486328125, "b": 700.1619262695312, "coord_origin": "TOPLEFT"}, "confidence": 0.9457826614379883, "cells": [{"id": 23, "text": "Figure 1-2 Existing row and column controls", "bbox": {"l": 136.8, "t": 691.818, "r": 316.44727, "b": 700.142998, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 1-2 Existing row and column controls"}, {"label": "picture", "id": 8, "page_no": 6, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 135.92466735839844, "t": 375.9272155761719, "r": 546.4456176757812, "b": 688.6098022460938, "coord_origin": "TOPLEFT"}, "confidence": 0.9838992357254028, "cells": [{"id": 24, "text": "User with", "bbox": {"l": 180.95911, "t": 383.45612, "r": 209.08017, "b": 389.0784, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "*ALLOBJ access", "bbox": {"l": 170.00624, "t": 390.95251, "r": 220.10355, "b": 396.57480000000004, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 6, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.09014129638672, "t": 754.0796508789062, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8578534126281738, "cells": [{"id": 0, "text": "4 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "4"}, {"label": "page_footer", "id": 1, "page_no": 6, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 87.840302, "t": 754.6302490234375, "r": 328.72537, "b": 763.9817504882812, "coord_origin": "TOPLEFT"}, "confidence": 0.9491621851921082, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 87.840302, "t": 755.538002, "r": 328.72537, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 7, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "10 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "2.1.6", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 94.081459, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Change Function Usage CL command", "bbox": {"l": 97.741661, "t": 71.33471999999995, "r": 335.49551, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "The following CL commands can be used to work with, display, or change function usage IDs:", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 547.28442, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 114.67767000000003, "r": 141.78, "b": 123.45245, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Work Function Usage (", "bbox": {"l": 151.20016, "t": 114.52826000000005, "r": 253.26227000000003, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "WRKFCNUSG", "bbox": {"l": 253.26028, "t": 114.67767000000003, "r": 298.1998, "b": 123.50225999999998, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": ")", "bbox": {"l": 298.20081, "t": 114.52826000000005, "r": 301.51749, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 126.67749000000003, "r": 141.78099, "b": 135.45227, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Change Function Usage (", "bbox": {"l": 151.20116, "t": 126.52808000000005, "r": 265.13354, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "CHGFCNUSG", "bbox": {"l": 265.08081, "t": 126.67749000000003, "r": 310.02032, "b": 135.50207999999998, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": ")", "bbox": {"l": 310.08109, "t": 126.52808000000005, "r": 313.39777, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "GLYPH", "bbox": {"l": 136.80098, "t": 138.67731000000003, "r": 141.78098, "b": 147.45209, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Display Function Usage (", "bbox": {"l": 151.20114, "t": 138.52788999999996, "r": 262.5639, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "DSPFCNUSG", "bbox": {"l": 262.56091, "t": 138.67731000000003, "r": 307.50043, "b": 147.50189, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ")", "bbox": {"l": 307.50043, "t": 138.52788999999996, "r": 310.81711, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "For example, the following ", "bbox": {"l": 136.79997, "t": 160.48766999999998, "r": 255.09984000000003, "b": 169.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "CHGFCNUSG", "bbox": {"l": 255.00027, "t": 160.63707999999997, "r": 299.99957, "b": 169.46167000000003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": " command shows granting authorization to user ", "bbox": {"l": 300.00055, "t": 160.48766999999998, "r": 512.53802, "b": 169.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "HBEDOYA to administer and manage RCAC rules:", "bbox": {"l": 136.80096, "t": 172.48748999999998, "r": 360.41989, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED)", "bbox": {"l": 136.80096, "t": 189.67645000000005, "r": 441.59686, "b": 198.45123, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "2.1.7", "bbox": {"l": 64.800003, "t": 219.35468000000003, "r": 93.757614, "b": 231.34271, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Verifying function usage IDs for RCAC with the FUNCTION_USAGE view", "bbox": {"l": 97.377296, "t": 219.35468000000003, "r": 544.47546, "b": 231.34271, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "The FUNCTION_USAGE view contains function usage configuration details. Table 2-1 ", "bbox": {"l": 136.8, "t": 245.50867000000005, "r": 519.51794, "b": 254.72168, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "describes the columns in the FUNCTION_USAGE view.", "bbox": {"l": 136.8, "t": 257.50847999999996, "r": 382.94443, "b": 266.7215, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Table 2-1 FUNCTION_USAGE view", "bbox": {"l": 136.8, "t": 279.55798000000004, "r": 283.96805, "b": 287.88300000000004, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "To discover who has authorization to define and manage RCAC, you can use the query that is ", "bbox": {"l": 136.8, "t": 452.50872999999996, "r": 547.2804, "b": 461.72171, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "shown in Example 2-1.", "bbox": {"l": 136.8, "t": 464.50854, "r": 237.76951999999997, "b": 473.72153, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Example 2-1 Query to determine who has authority to define and manage RCAC", "bbox": {"l": 136.8, "t": 486.55798, "r": 462.35419, "b": 494.883, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "SELECT", "bbox": {"l": 136.8, "t": 503.65802, "r": 171.26956, "b": 512.4328, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "function_id,", "bbox": {"l": 182.75941, "t": 503.65802, "r": 251.69853, "b": 512.4328, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "user_name,", "bbox": {"l": 166.78244, "t": 515.6578400000001, "r": 241.73852999999997, "b": 524.43262, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "usage,", "bbox": {"l": 170.75961, "t": 527.65765, "r": 221.69901999999996, "b": 536.43242, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "user_type", "bbox": {"l": 167.53809, "t": 539.65747, "r": 236.69878, "b": 548.43222, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "FROM", "bbox": {"l": 136.8, "t": 551.65727, "r": 160.59396, "b": 560.43202, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "function_usage", "bbox": {"l": 178.43944, "t": 551.65727, "r": 261.71829, "b": 560.43202, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "WHERE", "bbox": {"l": 136.8, "t": 563.65707, "r": 162.44176, "b": 572.43182, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "function_id=\u2019QIBM_DB_SECADM\u2019", "bbox": {"l": 177.8268, "t": 563.65707, "r": 331.67731, "b": 572.43182, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ORDER BY", "bbox": {"l": 136.8, "t": 575.65688, "r": 178.77542, "b": 584.43163, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "user_name;", "bbox": {"l": 189.26929, "t": 575.65688, "r": 241.73856, "b": 584.43163, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "2.2", "bbox": {"l": 64.800003, "t": 620.22063, "r": 87.569839, "b": 634.98363, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Separation of duties", "bbox": {"l": 92.123802, "t": 620.22063, "r": 249.59605000000002, "b": 634.98363, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Separation of duties helps businesses comply with industry regulations or organizational ", "bbox": {"l": 136.8, "t": 652.54872, "r": 529.09357, "b": 661.76172, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "requirements and simplifies the management of authorities. Separation of duties is commonly ", "bbox": {"l": 136.8, "t": 664.54852, "r": 547.22345, "b": 673.76153, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "used to prevent fraudulent activities or errors by a single person. It provides the ability for ", "bbox": {"l": 136.8, "t": 676.54833, "r": 530.89716, "b": 685.76134, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "administrative functions to be divided across individuals without overlapping responsibilities, ", "bbox": {"l": 136.80002, "t": 688.54814, "r": 544.33832, "b": 697.7611469999999, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "so that one user does not possess unlimited authority, such as with the *ALLOBJ authority.", "bbox": {"l": 136.80002, "t": 700.547951, "r": 536.28363, "b": 709.760956, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "Column name", "bbox": {"l": 142.8, "t": 296.5379899999999, "r": 202.245, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Data type", "bbox": {"l": 216.80878999999996, "t": 296.5379899999999, "r": 257.21069, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Description", "bbox": {"l": 289.47479, "t": 296.5379899999999, "r": 338.89468, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "FUNCTION_ID", "bbox": {"l": 142.8, "t": 315.55771, "r": 203.2323, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "VARCHAR(30)", "bbox": {"l": 216.7854, "t": 315.55771, "r": 276.0036, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ID of the function.", "bbox": {"l": 289.4577, "t": 315.55771, "r": 359.85394, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "USER_NAME", "bbox": {"l": 142.8, "t": 334.51801, "r": 198.6693, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "VARCHAR(10)", "bbox": {"l": 216.74129999999997, "t": 334.51801, "r": 275.92349, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "Name of the user profile that has a usage setting for this ", "bbox": {"l": 289.38208, "t": 334.51801, "r": 515.05359, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "function.", "bbox": {"l": 289.4397, "t": 345.55832, "r": 323.43362, "b": 353.88333, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "USAGE", "bbox": {"l": 142.79999, "t": 364.51862, "r": 173.98318, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "VARCHAR(7)", "bbox": {"l": 216.77367999999998, "t": 364.51862, "r": 270.97977, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Usage setting:", "bbox": {"l": 289.41626, "t": 364.51862, "r": 346.88757, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 375.69394000000005, "r": 293.9397, "b": 383.62292, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "ALLOWED: The user profile is allowed to use the function.", "bbox": {"l": 303.83969, "t": 375.55893, "r": 535.16766, "b": 383.88394, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 386.67395, "r": 293.9397, "b": 394.60294, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "DENIED: The user profile is not allowed to use the function.", "bbox": {"l": 303.83969, "t": 386.53894, "r": 539.10712, "b": 394.86395, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "USER_TYPE", "bbox": {"l": 142.8, "t": 405.55865, "r": 196.2249, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "VARCHAR(5)", "bbox": {"l": 216.75211, "t": 405.55865, "r": 270.99872, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Type of user profile:", "bbox": {"l": 289.43161, "t": 405.55865, "r": 367.8009, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 416.67368000000005, "r": 293.9397, "b": 424.60266, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "USER: The user profile is a user.", "bbox": {"l": 303.83969, "t": 416.53867, "r": 434.78159, "b": 424.86368, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 427.65369, "r": 293.9397, "b": 435.58267000000006, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "GROUP: The user profile is a group.", "bbox": {"l": 303.83969, "t": 427.51868, "r": 448.11963000000003, "b": 435.84369, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.4488525390625, "t": 754.418701171875, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9166076183319092, "cells": [{"id": 0, "text": "10 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.35774993896484, "t": 754.6892700195312, "r": 334.42142, "b": 763.9585571289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9529878497123718, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.09011840820312, "t": 70.1792984008789, "r": 335.49551, "b": 83.9942626953125, "coord_origin": "TOPLEFT"}, "confidence": 0.969738245010376, "cells": [{"id": 2, "text": "2.1.6", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 94.081459, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Change Function Usage CL command", "bbox": {"l": 97.741661, "t": 71.33471999999995, "r": 335.49551, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.83584594726562, "t": 96.62870788574219, "r": 547.28442, "b": 107.22466278076172, "coord_origin": "TOPLEFT"}, "confidence": 0.9551490545272827, "cells": [{"id": 4, "text": "The following CL commands can be used to work with, display, or change function usage IDs:", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 547.28442, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 135.6907196044922, "t": 113.74026489257812, "r": 301.51749, "b": 124.55382537841797, "coord_origin": "TOPLEFT"}, "confidence": 0.9410473704338074, "cells": [{"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 114.67767000000003, "r": 141.78, "b": 123.45245, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Work Function Usage (", "bbox": {"l": 151.20016, "t": 114.52826000000005, "r": 253.26227000000003, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "WRKFCNUSG", "bbox": {"l": 253.26028, "t": 114.67767000000003, "r": 298.1998, "b": 123.50225999999998, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": ")", "bbox": {"l": 298.20081, "t": 114.52826000000005, "r": 301.51749, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 135.7242889404297, "t": 125.93077850341797, "r": 313.39777, "b": 136.68792724609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9417493939399719, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 126.67749000000003, "r": 141.78099, "b": 135.45227, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Change Function Usage (", "bbox": {"l": 151.20116, "t": 126.52808000000005, "r": 265.13354, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "CHGFCNUSG", "bbox": {"l": 265.08081, "t": 126.67749000000003, "r": 310.02032, "b": 135.50207999999998, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": ")", "bbox": {"l": 310.08109, "t": 126.52808000000005, "r": 313.39777, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.71124267578125, "t": 137.9629364013672, "r": 310.81711, "b": 148.59957885742188, "coord_origin": "TOPLEFT"}, "confidence": 0.9562166929244995, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.80098, "t": 138.67731000000003, "r": 141.78098, "b": 147.45209, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Display Function Usage (", "bbox": {"l": 151.20114, "t": 138.52788999999996, "r": 262.5639, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "DSPFCNUSG", "bbox": {"l": 262.56091, "t": 138.67731000000003, "r": 307.50043, "b": 147.50189, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ")", "bbox": {"l": 307.50043, "t": 138.52788999999996, "r": 310.81711, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 136.30247497558594, "t": 159.218505859375, "r": 512.53802, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9682289958000183, "cells": [{"id": 17, "text": "For example, the following ", "bbox": {"l": 136.79997, "t": 160.48766999999998, "r": 255.09984000000003, "b": 169.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "CHGFCNUSG", "bbox": {"l": 255.00027, "t": 160.63707999999997, "r": 299.99957, "b": 169.46167000000003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": " command shows granting authorization to user ", "bbox": {"l": 300.00055, "t": 160.48766999999998, "r": 512.53802, "b": 169.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "HBEDOYA to administer and manage RCAC rules:", "bbox": {"l": 136.80096, "t": 172.48748999999998, "r": 360.41989, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 136.3306427001953, "t": 187.99078369140625, "r": 441.59686, "b": 198.88003540039062, "coord_origin": "TOPLEFT"}, "confidence": 0.9056942462921143, "cells": [{"id": 21, "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED)", "bbox": {"l": 136.80096, "t": 189.67645000000005, "r": 441.59686, "b": 198.45123, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "section_header", "bbox": {"l": 63.9356689453125, "t": 218.1382598876953, "r": 544.47546, "b": 232.12425231933594, "coord_origin": "TOPLEFT"}, "confidence": 0.9636377096176147, "cells": [{"id": 22, "text": "2.1.7", "bbox": {"l": 64.800003, "t": 219.35468000000003, "r": 93.757614, "b": 231.34271, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Verifying function usage IDs for RCAC with the FUNCTION_USAGE view", "bbox": {"l": 97.377296, "t": 219.35468000000003, "r": 544.47546, "b": 231.34271, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 135.84828186035156, "t": 244.5770263671875, "r": 519.51794, "b": 266.7215, "coord_origin": "TOPLEFT"}, "confidence": 0.9737265110015869, "cells": [{"id": 24, "text": "The FUNCTION_USAGE view contains function usage configuration details. Table 2-1 ", "bbox": {"l": 136.8, "t": 245.50867000000005, "r": 519.51794, "b": 254.72168, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "describes the columns in the FUNCTION_USAGE view.", "bbox": {"l": 136.8, "t": 257.50847999999996, "r": 382.94443, "b": 266.7215, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "caption", "bbox": {"l": 136.8, "t": 278.509521484375, "r": 284.9328308105469, "b": 287.88300000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.919783353805542, "cells": [{"id": 26, "text": "Table 2-1 FUNCTION_USAGE view", "bbox": {"l": 136.8, "t": 279.55798000000004, "r": 283.96805, "b": 287.88300000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 135.81077575683594, "t": 451.328857421875, "r": 547.2804, "b": 473.72153, "coord_origin": "TOPLEFT"}, "confidence": 0.9647641777992249, "cells": [{"id": 27, "text": "To discover who has authorization to define and manage RCAC, you can use the query that is ", "bbox": {"l": 136.8, "t": 452.50872999999996, "r": 547.2804, "b": 461.72171, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "shown in Example 2-1.", "bbox": {"l": 136.8, "t": 464.50854, "r": 237.76951999999997, "b": 473.72153, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "caption", "bbox": {"l": 136.28225708007812, "t": 485.76434326171875, "r": 462.98095703125, "b": 495.88201904296875, "coord_origin": "TOPLEFT"}, "confidence": 0.8165032267570496, "cells": [{"id": 29, "text": "Example 2-1 Query to determine who has authority to define and manage RCAC", "bbox": {"l": 136.8, "t": 486.55798, "r": 462.35419, "b": 494.883, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "text", "bbox": {"l": 136.8, "t": 503.65802, "r": 331.67731, "b": 584.43163, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 30, "text": "SELECT", "bbox": {"l": 136.8, "t": 503.65802, "r": 171.26956, "b": 512.4328, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "function_id,", "bbox": {"l": 182.75941, "t": 503.65802, "r": 251.69853, "b": 512.4328, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "user_name,", "bbox": {"l": 166.78244, "t": 515.6578400000001, "r": 241.73852999999997, "b": 524.43262, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "usage,", "bbox": {"l": 170.75961, "t": 527.65765, "r": 221.69901999999996, "b": 536.43242, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "user_type", "bbox": {"l": 167.53809, "t": 539.65747, "r": 236.69878, "b": 548.43222, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "FROM", "bbox": {"l": 136.8, "t": 551.65727, "r": 160.59396, "b": 560.43202, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "function_usage", "bbox": {"l": 178.43944, "t": 551.65727, "r": 261.71829, "b": 560.43202, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "WHERE", "bbox": {"l": 136.8, "t": 563.65707, "r": 162.44176, "b": 572.43182, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "function_id=\u2019QIBM_DB_SECADM\u2019", "bbox": {"l": 177.8268, "t": 563.65707, "r": 331.67731, "b": 572.43182, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ORDER BY", "bbox": {"l": 136.8, "t": 575.65688, "r": 178.77542, "b": 584.43163, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "user_name;", "bbox": {"l": 189.26929, "t": 575.65688, "r": 241.73856, "b": 584.43163, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "section_header", "bbox": {"l": 64.18024444580078, "t": 619.3924560546875, "r": 249.59605000000002, "b": 635.6513671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9656643271446228, "cells": [{"id": 41, "text": "2.2", "bbox": {"l": 64.800003, "t": 620.22063, "r": 87.569839, "b": 634.98363, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Separation of duties", "bbox": {"l": 92.123802, "t": 620.22063, "r": 249.59605000000002, "b": 634.98363, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "text", "bbox": {"l": 136.1588592529297, "t": 651.8870849609375, "r": 547.22345, "b": 710.182373046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9853105545043945, "cells": [{"id": 43, "text": "Separation of duties helps businesses comply with industry regulations or organizational ", "bbox": {"l": 136.8, "t": 652.54872, "r": 529.09357, "b": 661.76172, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "requirements and simplifies the management of authorities. Separation of duties is commonly ", "bbox": {"l": 136.8, "t": 664.54852, "r": 547.22345, "b": 673.76153, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "used to prevent fraudulent activities or errors by a single person. It provides the ability for ", "bbox": {"l": 136.8, "t": 676.54833, "r": 530.89716, "b": 685.76134, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "administrative functions to be divided across individuals without overlapping responsibilities, ", "bbox": {"l": 136.80002, "t": 688.54814, "r": 544.33832, "b": 697.7611469999999, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "so that one user does not possess unlimited authority, such as with the *ALLOBJ authority.", "bbox": {"l": 136.80002, "t": 700.547951, "r": 536.28363, "b": 709.760956, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "table", "bbox": {"l": 135.52508544921875, "t": 289.7249755859375, "r": 545.87060546875, "b": 442.0505065917969, "coord_origin": "TOPLEFT"}, "confidence": 0.985169529914856, "cells": [{"id": 48, "text": "Column name", "bbox": {"l": 142.8, "t": 296.5379899999999, "r": 202.245, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Data type", "bbox": {"l": 216.80878999999996, "t": 296.5379899999999, "r": 257.21069, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Description", "bbox": {"l": 289.47479, "t": 296.5379899999999, "r": 338.89468, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "FUNCTION_ID", "bbox": {"l": 142.8, "t": 315.55771, "r": 203.2323, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "VARCHAR(30)", "bbox": {"l": 216.7854, "t": 315.55771, "r": 276.0036, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ID of the function.", "bbox": {"l": 289.4577, "t": 315.55771, "r": 359.85394, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "USER_NAME", "bbox": {"l": 142.8, "t": 334.51801, "r": 198.6693, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "VARCHAR(10)", "bbox": {"l": 216.74129999999997, "t": 334.51801, "r": 275.92349, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "Name of the user profile that has a usage setting for this ", "bbox": {"l": 289.38208, "t": 334.51801, "r": 515.05359, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "function.", "bbox": {"l": 289.4397, "t": 345.55832, "r": 323.43362, "b": 353.88333, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "USAGE", "bbox": {"l": 142.79999, "t": 364.51862, "r": 173.98318, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "VARCHAR(7)", "bbox": {"l": 216.77367999999998, "t": 364.51862, "r": 270.97977, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Usage setting:", "bbox": {"l": 289.41626, "t": 364.51862, "r": 346.88757, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 375.69394000000005, "r": 293.9397, "b": 383.62292, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "ALLOWED: The user profile is allowed to use the function.", "bbox": {"l": 303.83969, "t": 375.55893, "r": 535.16766, "b": 383.88394, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 386.67395, "r": 293.9397, "b": 394.60294, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "DENIED: The user profile is not allowed to use the function.", "bbox": {"l": 303.83969, "t": 386.53894, "r": 539.10712, "b": 394.86395, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "USER_TYPE", "bbox": {"l": 142.8, "t": 405.55865, "r": 196.2249, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "VARCHAR(5)", "bbox": {"l": 216.75211, "t": 405.55865, "r": 270.99872, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Type of user profile:", "bbox": {"l": 289.43161, "t": 405.55865, "r": 367.8009, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 416.67368000000005, "r": 293.9397, "b": 424.60266, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "USER: The user profile is a user.", "bbox": {"l": 303.83969, "t": 416.53867, "r": 434.78159, "b": 424.86368, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 427.65369, "r": 293.9397, "b": 435.58267000000006, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "GROUP: The user profile is a group.", "bbox": {"l": 303.83969, "t": 427.51868, "r": 448.11963000000003, "b": 435.84369, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {"17": {"label": "table", "id": 17, "page_no": 7, "cluster": {"id": 17, "label": "table", "bbox": {"l": 135.52508544921875, "t": 289.7249755859375, "r": 545.87060546875, "b": 442.0505065917969, "coord_origin": "TOPLEFT"}, "confidence": 0.985169529914856, "cells": [{"id": 48, "text": "Column name", "bbox": {"l": 142.8, "t": 296.5379899999999, "r": 202.245, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Data type", "bbox": {"l": 216.80878999999996, "t": 296.5379899999999, "r": 257.21069, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Description", "bbox": {"l": 289.47479, "t": 296.5379899999999, "r": 338.89468, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "FUNCTION_ID", "bbox": {"l": 142.8, "t": 315.55771, "r": 203.2323, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "VARCHAR(30)", "bbox": {"l": 216.7854, "t": 315.55771, "r": 276.0036, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ID of the function.", "bbox": {"l": 289.4577, "t": 315.55771, "r": 359.85394, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "USER_NAME", "bbox": {"l": 142.8, "t": 334.51801, "r": 198.6693, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "VARCHAR(10)", "bbox": {"l": 216.74129999999997, "t": 334.51801, "r": 275.92349, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "Name of the user profile that has a usage setting for this ", "bbox": {"l": 289.38208, "t": 334.51801, "r": 515.05359, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "function.", "bbox": {"l": 289.4397, "t": 345.55832, "r": 323.43362, "b": 353.88333, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "USAGE", "bbox": {"l": 142.79999, "t": 364.51862, "r": 173.98318, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "VARCHAR(7)", "bbox": {"l": 216.77367999999998, "t": 364.51862, "r": 270.97977, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Usage setting:", "bbox": {"l": 289.41626, "t": 364.51862, "r": 346.88757, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 375.69394000000005, "r": 293.9397, "b": 383.62292, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "ALLOWED: The user profile is allowed to use the function.", "bbox": {"l": 303.83969, "t": 375.55893, "r": 535.16766, "b": 383.88394, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 386.67395, "r": 293.9397, "b": 394.60294, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "DENIED: The user profile is not allowed to use the function.", "bbox": {"l": 303.83969, "t": 386.53894, "r": 539.10712, "b": 394.86395, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "USER_TYPE", "bbox": {"l": 142.8, "t": 405.55865, "r": 196.2249, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "VARCHAR(5)", "bbox": {"l": 216.75211, "t": 405.55865, "r": 270.99872, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Type of user profile:", "bbox": {"l": 289.43161, "t": 405.55865, "r": 367.8009, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 416.67368000000005, "r": 293.9397, "b": 424.60266, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "USER: The user profile is a user.", "bbox": {"l": 303.83969, "t": 416.53867, "r": 434.78159, "b": 424.86368, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 427.65369, "r": 293.9397, "b": 435.58267000000006, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "GROUP: The user profile is a group.", "bbox": {"l": 303.83969, "t": 427.51868, "r": 448.11963000000003, "b": 435.84369, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "ched", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl"], "num_rows": 5, "num_cols": 3, "table_cells": [{"bbox": {"l": 142.8, "t": 296.5379899999999, "r": 202.245, "b": 304.86301, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Column name", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 216.80878999999996, "t": 296.5379899999999, "r": 257.21069, "b": 304.86301, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Data type", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 289.47479, "t": 296.5379899999999, "r": 338.89468, "b": 304.86301, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Description", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8, "t": 315.55771, "r": 203.2323, "b": 323.88272, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "FUNCTION_ID", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.7854, "t": 315.55771, "r": 276.0036, "b": 323.88272, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(30)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.4577, "t": 315.55771, "r": 359.85394, "b": 323.88272, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "ID of the function.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8, "t": 334.51801, "r": 198.6693, "b": 342.84302, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USER_NAME", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.74129999999997, "t": 334.51801, "r": 275.92349, "b": 342.84302, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(10)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.38208, "t": 334.51801, "r": 515.05359, "b": 353.88333, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Name of the user profile that has a usage setting for this function.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.79999, "t": 364.51862, "r": 173.98318, "b": 372.84363, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USAGE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.77367999999998, "t": 364.51862, "r": 270.97977, "b": 372.84363, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(7)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.41626, "t": 364.51862, "r": 539.10712, "b": 394.86395, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Usage setting: GLYPH ALLOWED: The user profile is allowed to use the function. GLYPH DENIED: The user profile is not allowed to use the function.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8, "t": 405.55865, "r": 196.2249, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USER_TYPE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.75211, "t": 405.55865, "r": 270.99872, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(5)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.43161, "t": 405.55865, "r": 448.11963000000003, "b": 435.84369, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Type of user profile: GLYPH USER: The user profile is a user. GLYPH GROUP: The user profile is a group.", "column_header": false, "row_header": false, "row_section": false}]}}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 7, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.4488525390625, "t": 754.418701171875, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9166076183319092, "cells": [{"id": 0, "text": "10 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "10"}, {"label": "page_footer", "id": 1, "page_no": 7, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.35774993896484, "t": 754.6892700195312, "r": 334.42142, "b": 763.9585571289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9529878497123718, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "section_header", "id": 2, "page_no": 7, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.09011840820312, "t": 70.1792984008789, "r": 335.49551, "b": 83.9942626953125, "coord_origin": "TOPLEFT"}, "confidence": 0.969738245010376, "cells": [{"id": 2, "text": "2.1.6", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 94.081459, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Change Function Usage CL command", "bbox": {"l": 97.741661, "t": 71.33471999999995, "r": 335.49551, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "2.1.6 Change Function Usage CL command"}, {"label": "text", "id": 3, "page_no": 7, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.83584594726562, "t": 96.62870788574219, "r": 547.28442, "b": 107.22466278076172, "coord_origin": "TOPLEFT"}, "confidence": 0.9551490545272827, "cells": [{"id": 4, "text": "The following CL commands can be used to work with, display, or change function usage IDs:", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 547.28442, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}]}, "text": "The following CL commands can be used to work with, display, or change function usage IDs:"}, {"label": "list_item", "id": 4, "page_no": 7, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.6907196044922, "t": 113.74026489257812, "r": 301.51749, "b": 124.55382537841797, "coord_origin": "TOPLEFT"}, "confidence": 0.9410473704338074, "cells": [{"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 114.67767000000003, "r": 141.78, "b": 123.45245, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Work Function Usage (", "bbox": {"l": 151.20016, "t": 114.52826000000005, "r": 253.26227000000003, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "WRKFCNUSG", "bbox": {"l": 253.26028, "t": 114.67767000000003, "r": 298.1998, "b": 123.50225999999998, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": ")", "bbox": {"l": 298.20081, "t": 114.52826000000005, "r": 301.51749, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Work Function Usage ( WRKFCNUSG )"}, {"label": "list_item", "id": 5, "page_no": 7, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.7242889404297, "t": 125.93077850341797, "r": 313.39777, "b": 136.68792724609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9417493939399719, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 126.67749000000003, "r": 141.78099, "b": 135.45227, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Change Function Usage (", "bbox": {"l": 151.20116, "t": 126.52808000000005, "r": 265.13354, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "CHGFCNUSG", "bbox": {"l": 265.08081, "t": 126.67749000000003, "r": 310.02032, "b": 135.50207999999998, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": ")", "bbox": {"l": 310.08109, "t": 126.52808000000005, "r": 313.39777, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Change Function Usage ( CHGFCNUSG )"}, {"label": "list_item", "id": 6, "page_no": 7, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.71124267578125, "t": 137.9629364013672, "r": 310.81711, "b": 148.59957885742188, "coord_origin": "TOPLEFT"}, "confidence": 0.9562166929244995, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.80098, "t": 138.67731000000003, "r": 141.78098, "b": 147.45209, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Display Function Usage (", "bbox": {"l": 151.20114, "t": 138.52788999999996, "r": 262.5639, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "DSPFCNUSG", "bbox": {"l": 262.56091, "t": 138.67731000000003, "r": 307.50043, "b": 147.50189, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ")", "bbox": {"l": 307.50043, "t": 138.52788999999996, "r": 310.81711, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Display Function Usage ( DSPFCNUSG )"}, {"label": "text", "id": 7, "page_no": 7, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.30247497558594, "t": 159.218505859375, "r": 512.53802, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9682289958000183, "cells": [{"id": 17, "text": "For example, the following ", "bbox": {"l": 136.79997, "t": 160.48766999999998, "r": 255.09984000000003, "b": 169.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "CHGFCNUSG", "bbox": {"l": 255.00027, "t": 160.63707999999997, "r": 299.99957, "b": 169.46167000000003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": " command shows granting authorization to user ", "bbox": {"l": 300.00055, "t": 160.48766999999998, "r": 512.53802, "b": 169.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "HBEDOYA to administer and manage RCAC rules:", "bbox": {"l": 136.80096, "t": 172.48748999999998, "r": 360.41989, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}}]}, "text": "For example, the following CHGFCNUSG command shows granting authorization to user HBEDOYA to administer and manage RCAC rules:"}, {"label": "text", "id": 8, "page_no": 7, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.3306427001953, "t": 187.99078369140625, "r": 441.59686, "b": 198.88003540039062, "coord_origin": "TOPLEFT"}, "confidence": 0.9056942462921143, "cells": [{"id": 21, "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED)", "bbox": {"l": 136.80096, "t": 189.67645000000005, "r": 441.59686, "b": 198.45123, "coord_origin": "TOPLEFT"}}]}, "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED)"}, {"label": "section_header", "id": 9, "page_no": 7, "cluster": {"id": 9, "label": "section_header", "bbox": {"l": 63.9356689453125, "t": 218.1382598876953, "r": 544.47546, "b": 232.12425231933594, "coord_origin": "TOPLEFT"}, "confidence": 0.9636377096176147, "cells": [{"id": 22, "text": "2.1.7", "bbox": {"l": 64.800003, "t": 219.35468000000003, "r": 93.757614, "b": 231.34271, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Verifying function usage IDs for RCAC with the FUNCTION_USAGE view", "bbox": {"l": 97.377296, "t": 219.35468000000003, "r": 544.47546, "b": 231.34271, "coord_origin": "TOPLEFT"}}]}, "text": "2.1.7 Verifying function usage IDs for RCAC with the FUNCTION_USAGE view"}, {"label": "text", "id": 10, "page_no": 7, "cluster": {"id": 10, "label": "text", "bbox": {"l": 135.84828186035156, "t": 244.5770263671875, "r": 519.51794, "b": 266.7215, "coord_origin": "TOPLEFT"}, "confidence": 0.9737265110015869, "cells": [{"id": 24, "text": "The FUNCTION_USAGE view contains function usage configuration details. Table 2-1 ", "bbox": {"l": 136.8, "t": 245.50867000000005, "r": 519.51794, "b": 254.72168, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "describes the columns in the FUNCTION_USAGE view.", "bbox": {"l": 136.8, "t": 257.50847999999996, "r": 382.94443, "b": 266.7215, "coord_origin": "TOPLEFT"}}]}, "text": "The FUNCTION_USAGE view contains function usage configuration details. Table 2-1 describes the columns in the FUNCTION_USAGE view."}, {"label": "caption", "id": 11, "page_no": 7, "cluster": {"id": 11, "label": "caption", "bbox": {"l": 136.8, "t": 278.509521484375, "r": 284.9328308105469, "b": 287.88300000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.919783353805542, "cells": [{"id": 26, "text": "Table 2-1 FUNCTION_USAGE view", "bbox": {"l": 136.8, "t": 279.55798000000004, "r": 283.96805, "b": 287.88300000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Table 2-1 FUNCTION_USAGE view"}, {"label": "text", "id": 12, "page_no": 7, "cluster": {"id": 12, "label": "text", "bbox": {"l": 135.81077575683594, "t": 451.328857421875, "r": 547.2804, "b": 473.72153, "coord_origin": "TOPLEFT"}, "confidence": 0.9647641777992249, "cells": [{"id": 27, "text": "To discover who has authorization to define and manage RCAC, you can use the query that is ", "bbox": {"l": 136.8, "t": 452.50872999999996, "r": 547.2804, "b": 461.72171, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "shown in Example 2-1.", "bbox": {"l": 136.8, "t": 464.50854, "r": 237.76951999999997, "b": 473.72153, "coord_origin": "TOPLEFT"}}]}, "text": "To discover who has authorization to define and manage RCAC, you can use the query that is shown in Example 2-1."}, {"label": "caption", "id": 13, "page_no": 7, "cluster": {"id": 13, "label": "caption", "bbox": {"l": 136.28225708007812, "t": 485.76434326171875, "r": 462.98095703125, "b": 495.88201904296875, "coord_origin": "TOPLEFT"}, "confidence": 0.8165032267570496, "cells": [{"id": 29, "text": "Example 2-1 Query to determine who has authority to define and manage RCAC", "bbox": {"l": 136.8, "t": 486.55798, "r": 462.35419, "b": 494.883, "coord_origin": "TOPLEFT"}}]}, "text": "Example 2-1 Query to determine who has authority to define and manage RCAC"}, {"label": "text", "id": 14, "page_no": 7, "cluster": {"id": 14, "label": "text", "bbox": {"l": 136.8, "t": 503.65802, "r": 331.67731, "b": 584.43163, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 30, "text": "SELECT", "bbox": {"l": 136.8, "t": 503.65802, "r": 171.26956, "b": 512.4328, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "function_id,", "bbox": {"l": 182.75941, "t": 503.65802, "r": 251.69853, "b": 512.4328, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "user_name,", "bbox": {"l": 166.78244, "t": 515.6578400000001, "r": 241.73852999999997, "b": 524.43262, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "usage,", "bbox": {"l": 170.75961, "t": 527.65765, "r": 221.69901999999996, "b": 536.43242, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "user_type", "bbox": {"l": 167.53809, "t": 539.65747, "r": 236.69878, "b": 548.43222, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "FROM", "bbox": {"l": 136.8, "t": 551.65727, "r": 160.59396, "b": 560.43202, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "function_usage", "bbox": {"l": 178.43944, "t": 551.65727, "r": 261.71829, "b": 560.43202, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "WHERE", "bbox": {"l": 136.8, "t": 563.65707, "r": 162.44176, "b": 572.43182, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "function_id=\u2019QIBM_DB_SECADM\u2019", "bbox": {"l": 177.8268, "t": 563.65707, "r": 331.67731, "b": 572.43182, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ORDER BY", "bbox": {"l": 136.8, "t": 575.65688, "r": 178.77542, "b": 584.43163, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "user_name;", "bbox": {"l": 189.26929, "t": 575.65688, "r": 241.73856, "b": 584.43163, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT function_id, user_name, usage, user_type FROM function_usage WHERE function_id=\u2019QIBM_DB_SECADM\u2019 ORDER BY user_name;"}, {"label": "section_header", "id": 15, "page_no": 7, "cluster": {"id": 15, "label": "section_header", "bbox": {"l": 64.18024444580078, "t": 619.3924560546875, "r": 249.59605000000002, "b": 635.6513671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9656643271446228, "cells": [{"id": 41, "text": "2.2", "bbox": {"l": 64.800003, "t": 620.22063, "r": 87.569839, "b": 634.98363, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Separation of duties", "bbox": {"l": 92.123802, "t": 620.22063, "r": 249.59605000000002, "b": 634.98363, "coord_origin": "TOPLEFT"}}]}, "text": "2.2 Separation of duties"}, {"label": "text", "id": 16, "page_no": 7, "cluster": {"id": 16, "label": "text", "bbox": {"l": 136.1588592529297, "t": 651.8870849609375, "r": 547.22345, "b": 710.182373046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9853105545043945, "cells": [{"id": 43, "text": "Separation of duties helps businesses comply with industry regulations or organizational ", "bbox": {"l": 136.8, "t": 652.54872, "r": 529.09357, "b": 661.76172, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "requirements and simplifies the management of authorities. Separation of duties is commonly ", "bbox": {"l": 136.8, "t": 664.54852, "r": 547.22345, "b": 673.76153, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "used to prevent fraudulent activities or errors by a single person. It provides the ability for ", "bbox": {"l": 136.8, "t": 676.54833, "r": 530.89716, "b": 685.76134, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "administrative functions to be divided across individuals without overlapping responsibilities, ", "bbox": {"l": 136.80002, "t": 688.54814, "r": 544.33832, "b": 697.7611469999999, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "so that one user does not possess unlimited authority, such as with the *ALLOBJ authority.", "bbox": {"l": 136.80002, "t": 700.547951, "r": 536.28363, "b": 709.760956, "coord_origin": "TOPLEFT"}}]}, "text": "Separation of duties helps businesses comply with industry regulations or organizational requirements and simplifies the management of authorities. Separation of duties is commonly used to prevent fraudulent activities or errors by a single person. It provides the ability for administrative functions to be divided across individuals without overlapping responsibilities, so that one user does not possess unlimited authority, such as with the *ALLOBJ authority."}, {"label": "table", "id": 17, "page_no": 7, "cluster": {"id": 17, "label": "table", "bbox": {"l": 135.52508544921875, "t": 289.7249755859375, "r": 545.87060546875, "b": 442.0505065917969, "coord_origin": "TOPLEFT"}, "confidence": 0.985169529914856, "cells": [{"id": 48, "text": "Column name", "bbox": {"l": 142.8, "t": 296.5379899999999, "r": 202.245, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Data type", "bbox": {"l": 216.80878999999996, "t": 296.5379899999999, "r": 257.21069, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Description", "bbox": {"l": 289.47479, "t": 296.5379899999999, "r": 338.89468, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "FUNCTION_ID", "bbox": {"l": 142.8, "t": 315.55771, "r": 203.2323, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "VARCHAR(30)", "bbox": {"l": 216.7854, "t": 315.55771, "r": 276.0036, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ID of the function.", "bbox": {"l": 289.4577, "t": 315.55771, "r": 359.85394, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "USER_NAME", "bbox": {"l": 142.8, "t": 334.51801, "r": 198.6693, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "VARCHAR(10)", "bbox": {"l": 216.74129999999997, "t": 334.51801, "r": 275.92349, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "Name of the user profile that has a usage setting for this ", "bbox": {"l": 289.38208, "t": 334.51801, "r": 515.05359, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "function.", "bbox": {"l": 289.4397, "t": 345.55832, "r": 323.43362, "b": 353.88333, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "USAGE", "bbox": {"l": 142.79999, "t": 364.51862, "r": 173.98318, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "VARCHAR(7)", "bbox": {"l": 216.77367999999998, "t": 364.51862, "r": 270.97977, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Usage setting:", "bbox": {"l": 289.41626, "t": 364.51862, "r": 346.88757, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 375.69394000000005, "r": 293.9397, "b": 383.62292, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "ALLOWED: The user profile is allowed to use the function.", "bbox": {"l": 303.83969, "t": 375.55893, "r": 535.16766, "b": 383.88394, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 386.67395, "r": 293.9397, "b": 394.60294, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "DENIED: The user profile is not allowed to use the function.", "bbox": {"l": 303.83969, "t": 386.53894, "r": 539.10712, "b": 394.86395, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "USER_TYPE", "bbox": {"l": 142.8, "t": 405.55865, "r": 196.2249, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "VARCHAR(5)", "bbox": {"l": 216.75211, "t": 405.55865, "r": 270.99872, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Type of user profile:", "bbox": {"l": 289.43161, "t": 405.55865, "r": 367.8009, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 416.67368000000005, "r": 293.9397, "b": 424.60266, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "USER: The user profile is a user.", "bbox": {"l": 303.83969, "t": 416.53867, "r": 434.78159, "b": 424.86368, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 427.65369, "r": 293.9397, "b": 435.58267000000006, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "GROUP: The user profile is a group.", "bbox": {"l": 303.83969, "t": 427.51868, "r": 448.11963000000003, "b": 435.84369, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "ched", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl"], "num_rows": 5, "num_cols": 3, "table_cells": [{"bbox": {"l": 142.8, "t": 296.5379899999999, "r": 202.245, "b": 304.86301, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Column name", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 216.80878999999996, "t": 296.5379899999999, "r": 257.21069, "b": 304.86301, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Data type", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 289.47479, "t": 296.5379899999999, "r": 338.89468, "b": 304.86301, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Description", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8, "t": 315.55771, "r": 203.2323, "b": 323.88272, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "FUNCTION_ID", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.7854, "t": 315.55771, "r": 276.0036, "b": 323.88272, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(30)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.4577, "t": 315.55771, "r": 359.85394, "b": 323.88272, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "ID of the function.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8, "t": 334.51801, "r": 198.6693, "b": 342.84302, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USER_NAME", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.74129999999997, "t": 334.51801, "r": 275.92349, "b": 342.84302, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(10)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.38208, "t": 334.51801, "r": 515.05359, "b": 353.88333, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Name of the user profile that has a usage setting for this function.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.79999, "t": 364.51862, "r": 173.98318, "b": 372.84363, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USAGE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.77367999999998, "t": 364.51862, "r": 270.97977, "b": 372.84363, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(7)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.41626, "t": 364.51862, "r": 539.10712, "b": 394.86395, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Usage setting: GLYPH ALLOWED: The user profile is allowed to use the function. GLYPH DENIED: The user profile is not allowed to use the function.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8, "t": 405.55865, "r": 196.2249, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USER_TYPE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.75211, "t": 405.55865, "r": 270.99872, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(5)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.43161, "t": 405.55865, "r": 448.11963000000003, "b": 435.84369, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Type of user profile: GLYPH USER: The user profile is a user. GLYPH GROUP: The user profile is a group.", "column_header": false, "row_header": false, "row_section": false}]}], "body": [{"label": "section_header", "id": 2, "page_no": 7, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.09011840820312, "t": 70.1792984008789, "r": 335.49551, "b": 83.9942626953125, "coord_origin": "TOPLEFT"}, "confidence": 0.969738245010376, "cells": [{"id": 2, "text": "2.1.6", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 94.081459, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Change Function Usage CL command", "bbox": {"l": 97.741661, "t": 71.33471999999995, "r": 335.49551, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "2.1.6 Change Function Usage CL command"}, {"label": "text", "id": 3, "page_no": 7, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.83584594726562, "t": 96.62870788574219, "r": 547.28442, "b": 107.22466278076172, "coord_origin": "TOPLEFT"}, "confidence": 0.9551490545272827, "cells": [{"id": 4, "text": "The following CL commands can be used to work with, display, or change function usage IDs:", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 547.28442, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}]}, "text": "The following CL commands can be used to work with, display, or change function usage IDs:"}, {"label": "list_item", "id": 4, "page_no": 7, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.6907196044922, "t": 113.74026489257812, "r": 301.51749, "b": 124.55382537841797, "coord_origin": "TOPLEFT"}, "confidence": 0.9410473704338074, "cells": [{"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 114.67767000000003, "r": 141.78, "b": 123.45245, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Work Function Usage (", "bbox": {"l": 151.20016, "t": 114.52826000000005, "r": 253.26227000000003, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "WRKFCNUSG", "bbox": {"l": 253.26028, "t": 114.67767000000003, "r": 298.1998, "b": 123.50225999999998, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": ")", "bbox": {"l": 298.20081, "t": 114.52826000000005, "r": 301.51749, "b": 123.74126999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Work Function Usage ( WRKFCNUSG )"}, {"label": "list_item", "id": 5, "page_no": 7, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.7242889404297, "t": 125.93077850341797, "r": 313.39777, "b": 136.68792724609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9417493939399719, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.80099, "t": 126.67749000000003, "r": 141.78099, "b": 135.45227, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Change Function Usage (", "bbox": {"l": 151.20116, "t": 126.52808000000005, "r": 265.13354, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "CHGFCNUSG", "bbox": {"l": 265.08081, "t": 126.67749000000003, "r": 310.02032, "b": 135.50207999999998, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": ")", "bbox": {"l": 310.08109, "t": 126.52808000000005, "r": 313.39777, "b": 135.74108999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Change Function Usage ( CHGFCNUSG )"}, {"label": "list_item", "id": 6, "page_no": 7, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.71124267578125, "t": 137.9629364013672, "r": 310.81711, "b": 148.59957885742188, "coord_origin": "TOPLEFT"}, "confidence": 0.9562166929244995, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.80098, "t": 138.67731000000003, "r": 141.78098, "b": 147.45209, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Display Function Usage (", "bbox": {"l": 151.20114, "t": 138.52788999999996, "r": 262.5639, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "DSPFCNUSG", "bbox": {"l": 262.56091, "t": 138.67731000000003, "r": 307.50043, "b": 147.50189, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": ")", "bbox": {"l": 307.50043, "t": 138.52788999999996, "r": 310.81711, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Display Function Usage ( DSPFCNUSG )"}, {"label": "text", "id": 7, "page_no": 7, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.30247497558594, "t": 159.218505859375, "r": 512.53802, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9682289958000183, "cells": [{"id": 17, "text": "For example, the following ", "bbox": {"l": 136.79997, "t": 160.48766999999998, "r": 255.09984000000003, "b": 169.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "CHGFCNUSG", "bbox": {"l": 255.00027, "t": 160.63707999999997, "r": 299.99957, "b": 169.46167000000003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": " command shows granting authorization to user ", "bbox": {"l": 300.00055, "t": 160.48766999999998, "r": 512.53802, "b": 169.70068000000003, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "HBEDOYA to administer and manage RCAC rules:", "bbox": {"l": 136.80096, "t": 172.48748999999998, "r": 360.41989, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}}]}, "text": "For example, the following CHGFCNUSG command shows granting authorization to user HBEDOYA to administer and manage RCAC rules:"}, {"label": "text", "id": 8, "page_no": 7, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.3306427001953, "t": 187.99078369140625, "r": 441.59686, "b": 198.88003540039062, "coord_origin": "TOPLEFT"}, "confidence": 0.9056942462921143, "cells": [{"id": 21, "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED)", "bbox": {"l": 136.80096, "t": 189.67645000000005, "r": 441.59686, "b": 198.45123, "coord_origin": "TOPLEFT"}}]}, "text": "CHGFCNUSG FCNID(QIBM_DB_SECADM) USER(HBEDOYA) USAGE(*ALLOWED)"}, {"label": "section_header", "id": 9, "page_no": 7, "cluster": {"id": 9, "label": "section_header", "bbox": {"l": 63.9356689453125, "t": 218.1382598876953, "r": 544.47546, "b": 232.12425231933594, "coord_origin": "TOPLEFT"}, "confidence": 0.9636377096176147, "cells": [{"id": 22, "text": "2.1.7", "bbox": {"l": 64.800003, "t": 219.35468000000003, "r": 93.757614, "b": 231.34271, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Verifying function usage IDs for RCAC with the FUNCTION_USAGE view", "bbox": {"l": 97.377296, "t": 219.35468000000003, "r": 544.47546, "b": 231.34271, "coord_origin": "TOPLEFT"}}]}, "text": "2.1.7 Verifying function usage IDs for RCAC with the FUNCTION_USAGE view"}, {"label": "text", "id": 10, "page_no": 7, "cluster": {"id": 10, "label": "text", "bbox": {"l": 135.84828186035156, "t": 244.5770263671875, "r": 519.51794, "b": 266.7215, "coord_origin": "TOPLEFT"}, "confidence": 0.9737265110015869, "cells": [{"id": 24, "text": "The FUNCTION_USAGE view contains function usage configuration details. Table 2-1 ", "bbox": {"l": 136.8, "t": 245.50867000000005, "r": 519.51794, "b": 254.72168, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "describes the columns in the FUNCTION_USAGE view.", "bbox": {"l": 136.8, "t": 257.50847999999996, "r": 382.94443, "b": 266.7215, "coord_origin": "TOPLEFT"}}]}, "text": "The FUNCTION_USAGE view contains function usage configuration details. Table 2-1 describes the columns in the FUNCTION_USAGE view."}, {"label": "caption", "id": 11, "page_no": 7, "cluster": {"id": 11, "label": "caption", "bbox": {"l": 136.8, "t": 278.509521484375, "r": 284.9328308105469, "b": 287.88300000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.919783353805542, "cells": [{"id": 26, "text": "Table 2-1 FUNCTION_USAGE view", "bbox": {"l": 136.8, "t": 279.55798000000004, "r": 283.96805, "b": 287.88300000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Table 2-1 FUNCTION_USAGE view"}, {"label": "text", "id": 12, "page_no": 7, "cluster": {"id": 12, "label": "text", "bbox": {"l": 135.81077575683594, "t": 451.328857421875, "r": 547.2804, "b": 473.72153, "coord_origin": "TOPLEFT"}, "confidence": 0.9647641777992249, "cells": [{"id": 27, "text": "To discover who has authorization to define and manage RCAC, you can use the query that is ", "bbox": {"l": 136.8, "t": 452.50872999999996, "r": 547.2804, "b": 461.72171, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "shown in Example 2-1.", "bbox": {"l": 136.8, "t": 464.50854, "r": 237.76951999999997, "b": 473.72153, "coord_origin": "TOPLEFT"}}]}, "text": "To discover who has authorization to define and manage RCAC, you can use the query that is shown in Example 2-1."}, {"label": "caption", "id": 13, "page_no": 7, "cluster": {"id": 13, "label": "caption", "bbox": {"l": 136.28225708007812, "t": 485.76434326171875, "r": 462.98095703125, "b": 495.88201904296875, "coord_origin": "TOPLEFT"}, "confidence": 0.8165032267570496, "cells": [{"id": 29, "text": "Example 2-1 Query to determine who has authority to define and manage RCAC", "bbox": {"l": 136.8, "t": 486.55798, "r": 462.35419, "b": 494.883, "coord_origin": "TOPLEFT"}}]}, "text": "Example 2-1 Query to determine who has authority to define and manage RCAC"}, {"label": "text", "id": 14, "page_no": 7, "cluster": {"id": 14, "label": "text", "bbox": {"l": 136.8, "t": 503.65802, "r": 331.67731, "b": 584.43163, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 30, "text": "SELECT", "bbox": {"l": 136.8, "t": 503.65802, "r": 171.26956, "b": 512.4328, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "function_id,", "bbox": {"l": 182.75941, "t": 503.65802, "r": 251.69853, "b": 512.4328, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "user_name,", "bbox": {"l": 166.78244, "t": 515.6578400000001, "r": 241.73852999999997, "b": 524.43262, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "usage,", "bbox": {"l": 170.75961, "t": 527.65765, "r": 221.69901999999996, "b": 536.43242, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "user_type", "bbox": {"l": 167.53809, "t": 539.65747, "r": 236.69878, "b": 548.43222, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "FROM", "bbox": {"l": 136.8, "t": 551.65727, "r": 160.59396, "b": 560.43202, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "function_usage", "bbox": {"l": 178.43944, "t": 551.65727, "r": 261.71829, "b": 560.43202, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "WHERE", "bbox": {"l": 136.8, "t": 563.65707, "r": 162.44176, "b": 572.43182, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "function_id=\u2019QIBM_DB_SECADM\u2019", "bbox": {"l": 177.8268, "t": 563.65707, "r": 331.67731, "b": 572.43182, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ORDER BY", "bbox": {"l": 136.8, "t": 575.65688, "r": 178.77542, "b": 584.43163, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "user_name;", "bbox": {"l": 189.26929, "t": 575.65688, "r": 241.73856, "b": 584.43163, "coord_origin": "TOPLEFT"}}]}, "text": "SELECT function_id, user_name, usage, user_type FROM function_usage WHERE function_id=\u2019QIBM_DB_SECADM\u2019 ORDER BY user_name;"}, {"label": "section_header", "id": 15, "page_no": 7, "cluster": {"id": 15, "label": "section_header", "bbox": {"l": 64.18024444580078, "t": 619.3924560546875, "r": 249.59605000000002, "b": 635.6513671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9656643271446228, "cells": [{"id": 41, "text": "2.2", "bbox": {"l": 64.800003, "t": 620.22063, "r": 87.569839, "b": 634.98363, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Separation of duties", "bbox": {"l": 92.123802, "t": 620.22063, "r": 249.59605000000002, "b": 634.98363, "coord_origin": "TOPLEFT"}}]}, "text": "2.2 Separation of duties"}, {"label": "text", "id": 16, "page_no": 7, "cluster": {"id": 16, "label": "text", "bbox": {"l": 136.1588592529297, "t": 651.8870849609375, "r": 547.22345, "b": 710.182373046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9853105545043945, "cells": [{"id": 43, "text": "Separation of duties helps businesses comply with industry regulations or organizational ", "bbox": {"l": 136.8, "t": 652.54872, "r": 529.09357, "b": 661.76172, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "requirements and simplifies the management of authorities. Separation of duties is commonly ", "bbox": {"l": 136.8, "t": 664.54852, "r": 547.22345, "b": 673.76153, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "used to prevent fraudulent activities or errors by a single person. It provides the ability for ", "bbox": {"l": 136.8, "t": 676.54833, "r": 530.89716, "b": 685.76134, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "administrative functions to be divided across individuals without overlapping responsibilities, ", "bbox": {"l": 136.80002, "t": 688.54814, "r": 544.33832, "b": 697.7611469999999, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "so that one user does not possess unlimited authority, such as with the *ALLOBJ authority.", "bbox": {"l": 136.80002, "t": 700.547951, "r": 536.28363, "b": 709.760956, "coord_origin": "TOPLEFT"}}]}, "text": "Separation of duties helps businesses comply with industry regulations or organizational requirements and simplifies the management of authorities. Separation of duties is commonly used to prevent fraudulent activities or errors by a single person. It provides the ability for administrative functions to be divided across individuals without overlapping responsibilities, so that one user does not possess unlimited authority, such as with the *ALLOBJ authority."}, {"label": "table", "id": 17, "page_no": 7, "cluster": {"id": 17, "label": "table", "bbox": {"l": 135.52508544921875, "t": 289.7249755859375, "r": 545.87060546875, "b": 442.0505065917969, "coord_origin": "TOPLEFT"}, "confidence": 0.985169529914856, "cells": [{"id": 48, "text": "Column name", "bbox": {"l": 142.8, "t": 296.5379899999999, "r": 202.245, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Data type", "bbox": {"l": 216.80878999999996, "t": 296.5379899999999, "r": 257.21069, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "Description", "bbox": {"l": 289.47479, "t": 296.5379899999999, "r": 338.89468, "b": 304.86301, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "FUNCTION_ID", "bbox": {"l": 142.8, "t": 315.55771, "r": 203.2323, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "VARCHAR(30)", "bbox": {"l": 216.7854, "t": 315.55771, "r": 276.0036, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ID of the function.", "bbox": {"l": 289.4577, "t": 315.55771, "r": 359.85394, "b": 323.88272, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "USER_NAME", "bbox": {"l": 142.8, "t": 334.51801, "r": 198.6693, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "VARCHAR(10)", "bbox": {"l": 216.74129999999997, "t": 334.51801, "r": 275.92349, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "Name of the user profile that has a usage setting for this ", "bbox": {"l": 289.38208, "t": 334.51801, "r": 515.05359, "b": 342.84302, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "function.", "bbox": {"l": 289.4397, "t": 345.55832, "r": 323.43362, "b": 353.88333, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "USAGE", "bbox": {"l": 142.79999, "t": 364.51862, "r": 173.98318, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "VARCHAR(7)", "bbox": {"l": 216.77367999999998, "t": 364.51862, "r": 270.97977, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "Usage setting:", "bbox": {"l": 289.41626, "t": 364.51862, "r": 346.88757, "b": 372.84363, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 375.69394000000005, "r": 293.9397, "b": 383.62292, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "ALLOWED: The user profile is allowed to use the function.", "bbox": {"l": 303.83969, "t": 375.55893, "r": 535.16766, "b": 383.88394, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 386.67395, "r": 293.9397, "b": 394.60294, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "DENIED: The user profile is not allowed to use the function.", "bbox": {"l": 303.83969, "t": 386.53894, "r": 539.10712, "b": 394.86395, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "USER_TYPE", "bbox": {"l": 142.8, "t": 405.55865, "r": 196.2249, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "VARCHAR(5)", "bbox": {"l": 216.75211, "t": 405.55865, "r": 270.99872, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "Type of user profile:", "bbox": {"l": 289.43161, "t": 405.55865, "r": 367.8009, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 416.67368000000005, "r": 293.9397, "b": 424.60266, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "USER: The user profile is a user.", "bbox": {"l": 303.83969, "t": 416.53867, "r": 434.78159, "b": 424.86368, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "GLYPH", "bbox": {"l": 289.4397, "t": 427.65369, "r": 293.9397, "b": 435.58267000000006, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "GROUP: The user profile is a group.", "bbox": {"l": 303.83969, "t": 427.51868, "r": 448.11963000000003, "b": 435.84369, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "ched", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl"], "num_rows": 5, "num_cols": 3, "table_cells": [{"bbox": {"l": 142.8, "t": 296.5379899999999, "r": 202.245, "b": 304.86301, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Column name", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 216.80878999999996, "t": 296.5379899999999, "r": 257.21069, "b": 304.86301, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Data type", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 289.47479, "t": 296.5379899999999, "r": 338.89468, "b": 304.86301, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Description", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8, "t": 315.55771, "r": 203.2323, "b": 323.88272, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "FUNCTION_ID", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.7854, "t": 315.55771, "r": 276.0036, "b": 323.88272, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(30)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.4577, "t": 315.55771, "r": 359.85394, "b": 323.88272, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "ID of the function.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8, "t": 334.51801, "r": 198.6693, "b": 342.84302, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USER_NAME", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.74129999999997, "t": 334.51801, "r": 275.92349, "b": 342.84302, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(10)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.38208, "t": 334.51801, "r": 515.05359, "b": 353.88333, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Name of the user profile that has a usage setting for this function.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.79999, "t": 364.51862, "r": 173.98318, "b": 372.84363, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USAGE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.77367999999998, "t": 364.51862, "r": 270.97977, "b": 372.84363, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(7)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.41626, "t": 364.51862, "r": 539.10712, "b": 394.86395, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Usage setting: GLYPH ALLOWED: The user profile is allowed to use the function. GLYPH DENIED: The user profile is not allowed to use the function.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8, "t": 405.55865, "r": 196.2249, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USER_TYPE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 216.75211, "t": 405.55865, "r": 270.99872, "b": 413.88367000000005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(5)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 289.43161, "t": 405.55865, "r": 448.11963000000003, "b": 435.84369, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Type of user profile: GLYPH USER: The user profile is a user. GLYPH GROUP: The user profile is a group.", "column_header": false, "row_header": false, "row_section": false}]}], "headers": [{"label": "page_footer", "id": 0, "page_no": 7, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.4488525390625, "t": 754.418701171875, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9166076183319092, "cells": [{"id": 0, "text": "10 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "10"}, {"label": "page_footer", "id": 1, "page_no": 7, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.35774993896484, "t": 754.6892700195312, "r": 334.42142, "b": 763.9585571289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9529878497123718, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 8, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 2. Roles and separation of duties ", "bbox": {"l": 355.32001, "t": 755.538002, "r": 523.54071, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "11", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "For example, assume that a business has assigned the duty to manage security on IBM i to ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 542.69434, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Theresa. Before release IBM i 7.2, to grant privileges, Theresa had to have the same ", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 513.67804, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "privileges Theresa was granting to others. Therefore, to grant *USE privileges to the ", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 509.71902, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "PAYROLL table, Theresa had to have *OBJMGT and *USE authority (or a higher level of ", "bbox": {"l": 136.79959, "t": 107.50847999999996, "r": 528.20184, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "authority, such as *ALLOBJ). This requirement allowed Theresa to access the data in the ", "bbox": {"l": 136.79959, "t": 119.50829999999996, "r": 531.84015, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "PAYROLL table even though Theresa\u2019s job description was only to manage its security.", "bbox": {"l": 136.79959, "t": 131.50811999999996, "r": 519.24982, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "In IBM i 7.2, the QIBM_DB_SECADM function usage grants authorities, revokes authorities, ", "bbox": {"l": 136.79959, "t": 153.52770999999996, "r": 544.16064, "b": 162.74072, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "changes ownership, or changes the primary group without giving access to the object or, in ", "bbox": {"l": 136.79959, "t": 165.52752999999996, "r": 540.66156, "b": 174.74054, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "the case of a database table, to the data that is in the table or allowing other operations on the ", "bbox": {"l": 136.79959, "t": 177.52733999999998, "r": 547.30396, "b": 186.74036, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "table. ", "bbox": {"l": 136.79959, "t": 189.52715999999998, "r": 163.6189, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "QIBM_DB_SECADM function usage can be granted only by a user with *SECADM special ", "bbox": {"l": 136.79959, "t": 211.48694, "r": 538.65076, "b": 220.69994999999994, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "authority and can be given to a user or a group.", "bbox": {"l": 136.79959, "t": 223.48676, "r": 346.34808, "b": 232.69976999999994, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "QIBM_DB_SECADM also is responsible for administering RCAC, which restricts which rows ", "bbox": {"l": 136.79959, "t": 245.50635, "r": 545.79602, "b": 254.71936000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "a user is allowed to access in a table and whether a user is allowed to see information in ", "bbox": {"l": 136.79959, "t": 257.50616, "r": 529.46149, "b": 266.71918000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "certain columns of a table.", "bbox": {"l": 136.79959, "t": 269.50598, "r": 253.47696999999997, "b": 278.71898999999996, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "A preferred practice is that the RCAC administrator has the QIBM_DB_SECADM function ", "bbox": {"l": 136.79959, "t": 291.52557, "r": 533.78137, "b": 300.73856, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "usage ID, but absolutely no other data privileges. The result is that the RCAC administrator ", "bbox": {"l": 136.79959, "t": 303.52539, "r": 539.80713, "b": 312.73837000000003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "can deploy and maintain the RCAC constructs, but cannot grant themselves unauthorized ", "bbox": {"l": 136.79959, "t": 315.52521, "r": 534.5741, "b": 324.73819, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "access to data itself.", "bbox": {"l": 136.79959, "t": 327.52502, "r": 227.02324, "b": 336.73801, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Table 2-2 shows a comparison of the different function usage IDs and *JOBCTL authority to ", "bbox": {"l": 136.79959, "t": 349.48483, "r": 543.06714, "b": 358.69780999999995, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "the different CL commands and DB2 for i tools.", "bbox": {"l": 136.79959, "t": 361.48465, "r": 343.79236, "b": 370.69763000000006, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Table 2-2 Comparison of the different function usage IDs and *JOBCTL authority", "bbox": {"l": 64.800003, "t": 383.5379899999999, "r": 391.75464, "b": 391.86301, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "User action", "bbox": {"l": 70.800301, "t": 400.51827999999995, "r": 119.78551, "b": 408.84329, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "*JOBCTL", "bbox": {"l": 424.93805, "t": 447.52255, "r": 433.26297000000005, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "QIBM_DB_SECADM", "bbox": {"l": 450.13806, "t": 401.6000700000001, "r": 458.46298, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "QIBM_DB_SQLADM", "bbox": {"l": 475.93835000000007, "t": 401.53442, "r": 484.26327999999995, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "QIBM_DB_SYSMON", "bbox": {"l": 501.13837, "t": 401.6145, "r": 509.46329, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "No Authority", "bbox": {"l": 526.39862, "t": 432.79944, "r": 534.72357, "b": 487.02005, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "SET CURRENT DEGREE", "bbox": {"l": 70.800003, "t": 498.69299, "r": 151.6794, "b": 506.66699, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " (SQL statement)", "bbox": {"l": 151.6803, "t": 498.55798, "r": 220.15681000000004, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "X", "bbox": {"l": 429.0, "t": 498.55798, "r": 435.00299000000007, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "X", "bbox": {"l": 480.00031, "t": 498.55798, "r": 486.0033, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "CHGQRYA", "bbox": {"l": 70.800018, "t": 517.65329, "r": 102.23972, "b": 525.62729, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": " command targeting a different user\u2019s job", "bbox": {"l": 102.23972, "t": 517.51828, "r": 264.5538, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "X", "bbox": {"l": 429.00003, "t": 517.51828, "r": 435.00302000000005, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "X", "bbox": {"l": 480.00034, "t": 517.51828, "r": 486.00333, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "STRDBMON", "bbox": {"l": 70.800049, "t": 536.67299, "r": 106.73975, "b": 544.64699, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": " or ", "bbox": {"l": 106.73975, "t": 536.5379800000001, "r": 119.77895, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ENDDBMON", "bbox": {"l": 119.69975000000001, "t": 536.67299, "r": 155.69974, "b": 544.64699, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": " commands targeting a different user\u2019s job", "bbox": {"l": 155.69974, "t": 536.5379800000001, "r": 322.50574, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "X", "bbox": {"l": 429.00003, "t": 536.5379800000001, "r": 435.00302000000005, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "X", "bbox": {"l": 480.00034, "t": 536.5379800000001, "r": 486.00333, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "STRDBMON", "bbox": {"l": 70.800049, "t": 555.69269, "r": 106.73975, "b": 563.66669, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": " or ", "bbox": {"l": 106.73975, "t": 555.55768, "r": 119.77895, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "ENDDBMON", "bbox": {"l": 119.69975000000001, "t": 555.69269, "r": 155.69974, "b": 563.66669, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": " commands targeting a job that matches the current user", "bbox": {"l": 155.69974, "t": 555.55768, "r": 381.02185, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "X", "bbox": {"l": 429.00003, "t": 555.55768, "r": 435.00302000000005, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "X", "bbox": {"l": 480.00034, "t": 555.55768, "r": 486.00333, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "X", "bbox": {"l": 505.26061999999996, "t": 555.55768, "r": 511.26361, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "X", "bbox": {"l": 530.76031, "t": 555.55768, "r": 536.76331, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "QUSRJOBI() API format 900 or System i Navigator\u2019s SQL Details for Job", "bbox": {"l": 70.800049, "t": 574.51797, "r": 359.51736, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "X", "bbox": {"l": 429.0000600000001, "t": 574.51797, "r": 435.00305000000003, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "X", "bbox": {"l": 480.00037, "t": 574.51797, "r": 486.00335999999993, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "X", "bbox": {"l": 505.2606799999999, "t": 574.51797, "r": 511.26367, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "Visual Explain within Run SQL scripts", "bbox": {"l": 70.800079, "t": 593.5376699999999, "r": 220.75178999999997, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "X", "bbox": {"l": 429.0000600000001, "t": 593.5376699999999, "r": 435.00305000000003, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "X", "bbox": {"l": 480.00037, "t": 593.5376699999999, "r": 486.00335999999993, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "X", "bbox": {"l": 505.2606799999999, "t": 593.5376699999999, "r": 511.26367, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "X", "bbox": {"l": 530.76038, "t": 593.5376699999999, "r": 536.76337, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Visual Explain outside of Run SQL scripts", "bbox": {"l": 70.800079, "t": 612.55737, "r": 236.6548, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "X", "bbox": {"l": 429.0000600000001, "t": 612.55737, "r": 435.00305000000003, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "X", "bbox": {"l": 480.00037, "t": 612.55737, "r": 486.00335999999993, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "ANALYZE PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 631.51767, "r": 213.12968, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "X", "bbox": {"l": 429.0000600000001, "t": 631.51767, "r": 435.00305000000003, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "X", "bbox": {"l": 480.00037, "t": 631.51767, "r": 486.00335999999993, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "DUMP PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 650.53737, "r": 199.87808, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "X", "bbox": {"l": 429.0000600000001, "t": 650.53737, "r": 435.00305000000003, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "X", "bbox": {"l": 480.00037, "t": 650.53737, "r": 486.00335999999993, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "MODIFY PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 669.55708, "r": 208.36777, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "X", "bbox": {"l": 429.0000600000001, "t": 669.55708, "r": 435.00305000000003, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "X", "bbox": {"l": 480.00037, "t": 669.55708, "r": 486.00335999999993, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "MODIFY PLAN CACHE PROPERTIES procedure (currently does not check authority)", "bbox": {"l": 70.800079, "t": 688.57677, "r": 411.20264, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "X", "bbox": {"l": 429.0000600000001, "t": 688.57677, "r": 435.00305000000003, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "X", "bbox": {"l": 480.00037, "t": 688.57677, "r": 486.00335999999993, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "CHANGE PLAN CACHE SIZE procedure (currently does not check authority)", "bbox": {"l": 70.800079, "t": 707.537071, "r": 377.12585, "b": 715.862068, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "X", "bbox": {"l": 429.0000600000001, "t": 707.537071, "r": 435.00305000000003, "b": 715.862068, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "X", "bbox": {"l": 480.00037, "t": 707.537071, "r": 486.00335999999993, "b": 715.862068, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 354.4815673828125, "t": 754.9415893554688, "r": 523.54071, "b": 764.1055297851562, "coord_origin": "TOPLEFT"}, "confidence": 0.9508126378059387, "cells": [{"id": 0, "text": "Chapter 2. Roles and separation of duties ", "bbox": {"l": 355.32001, "t": 755.538002, "r": 523.54071, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 536.0808715820312, "t": 754.2325439453125, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8987302780151367, "cells": [{"id": 1, "text": "11", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.92747497558594, "t": 70.65541076660156, "r": 542.69434, "b": 141.03610229492188, "coord_origin": "TOPLEFT"}, "confidence": 0.9789126515388489, "cells": [{"id": 2, "text": "For example, assume that a business has assigned the duty to manage security on IBM i to ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 542.69434, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Theresa. Before release IBM i 7.2, to grant privileges, Theresa had to have the same ", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 513.67804, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "privileges Theresa was granting to others. Therefore, to grant *USE privileges to the ", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 509.71902, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "PAYROLL table, Theresa had to have *OBJMGT and *USE authority (or a higher level of ", "bbox": {"l": 136.79959, "t": 107.50847999999996, "r": 528.20184, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "authority, such as *ALLOBJ). This requirement allowed Theresa to access the data in the ", "bbox": {"l": 136.79959, "t": 119.50829999999996, "r": 531.84015, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "PAYROLL table even though Theresa\u2019s job description was only to manage its security.", "bbox": {"l": 136.79959, "t": 131.50811999999996, "r": 519.24982, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 136.04833984375, "t": 152.51307678222656, "r": 547.30396, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9665539860725403, "cells": [{"id": 8, "text": "In IBM i 7.2, the QIBM_DB_SECADM function usage grants authorities, revokes authorities, ", "bbox": {"l": 136.79959, "t": 153.52770999999996, "r": 544.16064, "b": 162.74072, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "changes ownership, or changes the primary group without giving access to the object or, in ", "bbox": {"l": 136.79959, "t": 165.52752999999996, "r": 540.66156, "b": 174.74054, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "the case of a database table, to the data that is in the table or allowing other operations on the ", "bbox": {"l": 136.79959, "t": 177.52733999999998, "r": 547.30396, "b": 186.74036, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "table. ", "bbox": {"l": 136.79959, "t": 189.52715999999998, "r": 163.6189, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 136.00685119628906, "t": 210.41148376464844, "r": 538.65076, "b": 233.08047485351562, "coord_origin": "TOPLEFT"}, "confidence": 0.9691813588142395, "cells": [{"id": 12, "text": "QIBM_DB_SECADM function usage can be granted only by a user with *SECADM special ", "bbox": {"l": 136.79959, "t": 211.48694, "r": 538.65076, "b": 220.69994999999994, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "authority and can be given to a user or a group.", "bbox": {"l": 136.79959, "t": 223.48676, "r": 346.34808, "b": 232.69976999999994, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.68702697753906, "t": 244.5381622314453, "r": 545.79602, "b": 278.71898999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.9729602932929993, "cells": [{"id": 14, "text": "QIBM_DB_SECADM also is responsible for administering RCAC, which restricts which rows ", "bbox": {"l": 136.79959, "t": 245.50635, "r": 545.79602, "b": 254.71936000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "a user is allowed to access in a table and whether a user is allowed to see information in ", "bbox": {"l": 136.79959, "t": 257.50616, "r": 529.46149, "b": 266.71918000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "certain columns of a table.", "bbox": {"l": 136.79959, "t": 269.50598, "r": 253.47696999999997, "b": 278.71898999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 135.86065673828125, "t": 290.6051330566406, "r": 539.80713, "b": 336.73801, "coord_origin": "TOPLEFT"}, "confidence": 0.9815152883529663, "cells": [{"id": 17, "text": "A preferred practice is that the RCAC administrator has the QIBM_DB_SECADM function ", "bbox": {"l": 136.79959, "t": 291.52557, "r": 533.78137, "b": 300.73856, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "usage ID, but absolutely no other data privileges. The result is that the RCAC administrator ", "bbox": {"l": 136.79959, "t": 303.52539, "r": 539.80713, "b": 312.73837000000003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "can deploy and maintain the RCAC constructs, but cannot grant themselves unauthorized ", "bbox": {"l": 136.79959, "t": 315.52521, "r": 534.5741, "b": 324.73819, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "access to data itself.", "bbox": {"l": 136.79959, "t": 327.52502, "r": 227.02324, "b": 336.73801, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 135.7205352783203, "t": 348.60931396484375, "r": 543.06714, "b": 370.69763000000006, "coord_origin": "TOPLEFT"}, "confidence": 0.9672255516052246, "cells": [{"id": 21, "text": "Table 2-2 shows a comparison of the different function usage IDs and *JOBCTL authority to ", "bbox": {"l": 136.79959, "t": 349.48483, "r": 543.06714, "b": 358.69780999999995, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "the different CL commands and DB2 for i tools.", "bbox": {"l": 136.79959, "t": 361.48465, "r": 343.79236, "b": 370.69763000000006, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "caption", "bbox": {"l": 64.800003, "t": 382.5287170410156, "r": 392.4624328613281, "b": 392.25494384765625, "coord_origin": "TOPLEFT"}, "confidence": 0.933719277381897, "cells": [{"id": 23, "text": "Table 2-2 Comparison of the different function usage IDs and *JOBCTL authority", "bbox": {"l": 64.800003, "t": 383.5379899999999, "r": 391.75464, "b": 391.86301, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "table", "bbox": {"l": 64.41139221191406, "t": 393.6136474609375, "r": 547.3950805664062, "b": 721.60791015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9899571537971497, "cells": [{"id": 24, "text": "User action", "bbox": {"l": 70.800301, "t": 400.51827999999995, "r": 119.78551, "b": 408.84329, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "*JOBCTL", "bbox": {"l": 424.93805, "t": 447.52255, "r": 433.26297000000005, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "QIBM_DB_SECADM", "bbox": {"l": 450.13806, "t": 401.6000700000001, "r": 458.46298, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "QIBM_DB_SQLADM", "bbox": {"l": 475.93835000000007, "t": 401.53442, "r": 484.26327999999995, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "QIBM_DB_SYSMON", "bbox": {"l": 501.13837, "t": 401.6145, "r": 509.46329, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "No Authority", "bbox": {"l": 526.39862, "t": 432.79944, "r": 534.72357, "b": 487.02005, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "SET CURRENT DEGREE", "bbox": {"l": 70.800003, "t": 498.69299, "r": 151.6794, "b": 506.66699, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " (SQL statement)", "bbox": {"l": 151.6803, "t": 498.55798, "r": 220.15681000000004, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "X", "bbox": {"l": 429.0, "t": 498.55798, "r": 435.00299000000007, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "X", "bbox": {"l": 480.00031, "t": 498.55798, "r": 486.0033, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "CHGQRYA", "bbox": {"l": 70.800018, "t": 517.65329, "r": 102.23972, "b": 525.62729, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": " command targeting a different user\u2019s job", "bbox": {"l": 102.23972, "t": 517.51828, "r": 264.5538, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "X", "bbox": {"l": 429.00003, "t": 517.51828, "r": 435.00302000000005, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "X", "bbox": {"l": 480.00034, "t": 517.51828, "r": 486.00333, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "STRDBMON", "bbox": {"l": 70.800049, "t": 536.67299, "r": 106.73975, "b": 544.64699, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": " or ", "bbox": {"l": 106.73975, "t": 536.5379800000001, "r": 119.77895, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ENDDBMON", "bbox": {"l": 119.69975000000001, "t": 536.67299, "r": 155.69974, "b": 544.64699, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": " commands targeting a different user\u2019s job", "bbox": {"l": 155.69974, "t": 536.5379800000001, "r": 322.50574, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "X", "bbox": {"l": 429.00003, "t": 536.5379800000001, "r": 435.00302000000005, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "X", "bbox": {"l": 480.00034, "t": 536.5379800000001, "r": 486.00333, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "STRDBMON", "bbox": {"l": 70.800049, "t": 555.69269, "r": 106.73975, "b": 563.66669, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": " or ", "bbox": {"l": 106.73975, "t": 555.55768, "r": 119.77895, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "ENDDBMON", "bbox": {"l": 119.69975000000001, "t": 555.69269, "r": 155.69974, "b": 563.66669, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": " commands targeting a job that matches the current user", "bbox": {"l": 155.69974, "t": 555.55768, "r": 381.02185, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "X", "bbox": {"l": 429.00003, "t": 555.55768, "r": 435.00302000000005, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "X", "bbox": {"l": 480.00034, "t": 555.55768, "r": 486.00333, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "X", "bbox": {"l": 505.26061999999996, "t": 555.55768, "r": 511.26361, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "X", "bbox": {"l": 530.76031, "t": 555.55768, "r": 536.76331, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "QUSRJOBI() API format 900 or System i Navigator\u2019s SQL Details for Job", "bbox": {"l": 70.800049, "t": 574.51797, "r": 359.51736, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "X", "bbox": {"l": 429.0000600000001, "t": 574.51797, "r": 435.00305000000003, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "X", "bbox": {"l": 480.00037, "t": 574.51797, "r": 486.00335999999993, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "X", "bbox": {"l": 505.2606799999999, "t": 574.51797, "r": 511.26367, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "Visual Explain within Run SQL scripts", "bbox": {"l": 70.800079, "t": 593.5376699999999, "r": 220.75178999999997, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "X", "bbox": {"l": 429.0000600000001, "t": 593.5376699999999, "r": 435.00305000000003, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "X", "bbox": {"l": 480.00037, "t": 593.5376699999999, "r": 486.00335999999993, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "X", "bbox": {"l": 505.2606799999999, "t": 593.5376699999999, "r": 511.26367, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "X", "bbox": {"l": 530.76038, "t": 593.5376699999999, "r": 536.76337, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Visual Explain outside of Run SQL scripts", "bbox": {"l": 70.800079, "t": 612.55737, "r": 236.6548, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "X", "bbox": {"l": 429.0000600000001, "t": 612.55737, "r": 435.00305000000003, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "X", "bbox": {"l": 480.00037, "t": 612.55737, "r": 486.00335999999993, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "ANALYZE PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 631.51767, "r": 213.12968, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "X", "bbox": {"l": 429.0000600000001, "t": 631.51767, "r": 435.00305000000003, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "X", "bbox": {"l": 480.00037, "t": 631.51767, "r": 486.00335999999993, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "DUMP PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 650.53737, "r": 199.87808, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "X", "bbox": {"l": 429.0000600000001, "t": 650.53737, "r": 435.00305000000003, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "X", "bbox": {"l": 480.00037, "t": 650.53737, "r": 486.00335999999993, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "MODIFY PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 669.55708, "r": 208.36777, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "X", "bbox": {"l": 429.0000600000001, "t": 669.55708, "r": 435.00305000000003, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "X", "bbox": {"l": 480.00037, "t": 669.55708, "r": 486.00335999999993, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "MODIFY PLAN CACHE PROPERTIES procedure (currently does not check authority)", "bbox": {"l": 70.800079, "t": 688.57677, "r": 411.20264, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "X", "bbox": {"l": 429.0000600000001, "t": 688.57677, "r": 435.00305000000003, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "X", "bbox": {"l": 480.00037, "t": 688.57677, "r": 486.00335999999993, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "CHANGE PLAN CACHE SIZE procedure (currently does not check authority)", "bbox": {"l": 70.800079, "t": 707.537071, "r": 377.12585, "b": 715.862068, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "X", "bbox": {"l": 429.0000600000001, "t": 707.537071, "r": 435.00305000000003, "b": 715.862068, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "X", "bbox": {"l": 480.00037, "t": 707.537071, "r": 486.00335999999993, "b": 715.862068, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {"9": {"label": "table", "id": 9, "page_no": 8, "cluster": {"id": 9, "label": "table", "bbox": {"l": 64.41139221191406, "t": 393.6136474609375, "r": 547.3950805664062, "b": 721.60791015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9899571537971497, "cells": [{"id": 24, "text": "User action", "bbox": {"l": 70.800301, "t": 400.51827999999995, "r": 119.78551, "b": 408.84329, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "*JOBCTL", "bbox": {"l": 424.93805, "t": 447.52255, "r": 433.26297000000005, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "QIBM_DB_SECADM", "bbox": {"l": 450.13806, "t": 401.6000700000001, "r": 458.46298, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "QIBM_DB_SQLADM", "bbox": {"l": 475.93835000000007, "t": 401.53442, "r": 484.26327999999995, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "QIBM_DB_SYSMON", "bbox": {"l": 501.13837, "t": 401.6145, "r": 509.46329, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "No Authority", "bbox": {"l": 526.39862, "t": 432.79944, "r": 534.72357, "b": 487.02005, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "SET CURRENT DEGREE", "bbox": {"l": 70.800003, "t": 498.69299, "r": 151.6794, "b": 506.66699, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " (SQL statement)", "bbox": {"l": 151.6803, "t": 498.55798, "r": 220.15681000000004, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "X", "bbox": {"l": 429.0, "t": 498.55798, "r": 435.00299000000007, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "X", "bbox": {"l": 480.00031, "t": 498.55798, "r": 486.0033, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "CHGQRYA", "bbox": {"l": 70.800018, "t": 517.65329, "r": 102.23972, "b": 525.62729, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": " command targeting a different user\u2019s job", "bbox": {"l": 102.23972, "t": 517.51828, "r": 264.5538, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "X", "bbox": {"l": 429.00003, "t": 517.51828, "r": 435.00302000000005, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "X", "bbox": {"l": 480.00034, "t": 517.51828, "r": 486.00333, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "STRDBMON", "bbox": {"l": 70.800049, "t": 536.67299, "r": 106.73975, "b": 544.64699, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": " or ", "bbox": {"l": 106.73975, "t": 536.5379800000001, "r": 119.77895, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ENDDBMON", "bbox": {"l": 119.69975000000001, "t": 536.67299, "r": 155.69974, "b": 544.64699, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": " commands targeting a different user\u2019s job", "bbox": {"l": 155.69974, "t": 536.5379800000001, "r": 322.50574, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "X", "bbox": {"l": 429.00003, "t": 536.5379800000001, "r": 435.00302000000005, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "X", "bbox": {"l": 480.00034, "t": 536.5379800000001, "r": 486.00333, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "STRDBMON", "bbox": {"l": 70.800049, "t": 555.69269, "r": 106.73975, "b": 563.66669, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": " or ", "bbox": {"l": 106.73975, "t": 555.55768, "r": 119.77895, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "ENDDBMON", "bbox": {"l": 119.69975000000001, "t": 555.69269, "r": 155.69974, "b": 563.66669, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": " commands targeting a job that matches the current user", "bbox": {"l": 155.69974, "t": 555.55768, "r": 381.02185, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "X", "bbox": {"l": 429.00003, "t": 555.55768, "r": 435.00302000000005, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "X", "bbox": {"l": 480.00034, "t": 555.55768, "r": 486.00333, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "X", "bbox": {"l": 505.26061999999996, "t": 555.55768, "r": 511.26361, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "X", "bbox": {"l": 530.76031, "t": 555.55768, "r": 536.76331, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "QUSRJOBI() API format 900 or System i Navigator\u2019s SQL Details for Job", "bbox": {"l": 70.800049, "t": 574.51797, "r": 359.51736, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "X", "bbox": {"l": 429.0000600000001, "t": 574.51797, "r": 435.00305000000003, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "X", "bbox": {"l": 480.00037, "t": 574.51797, "r": 486.00335999999993, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "X", "bbox": {"l": 505.2606799999999, "t": 574.51797, "r": 511.26367, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "Visual Explain within Run SQL scripts", "bbox": {"l": 70.800079, "t": 593.5376699999999, "r": 220.75178999999997, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "X", "bbox": {"l": 429.0000600000001, "t": 593.5376699999999, "r": 435.00305000000003, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "X", "bbox": {"l": 480.00037, "t": 593.5376699999999, "r": 486.00335999999993, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "X", "bbox": {"l": 505.2606799999999, "t": 593.5376699999999, "r": 511.26367, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "X", "bbox": {"l": 530.76038, "t": 593.5376699999999, "r": 536.76337, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Visual Explain outside of Run SQL scripts", "bbox": {"l": 70.800079, "t": 612.55737, "r": 236.6548, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "X", "bbox": {"l": 429.0000600000001, "t": 612.55737, "r": 435.00305000000003, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "X", "bbox": {"l": 480.00037, "t": 612.55737, "r": 486.00335999999993, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "ANALYZE PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 631.51767, "r": 213.12968, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "X", "bbox": {"l": 429.0000600000001, "t": 631.51767, "r": 435.00305000000003, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "X", "bbox": {"l": 480.00037, "t": 631.51767, "r": 486.00335999999993, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "DUMP PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 650.53737, "r": 199.87808, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "X", "bbox": {"l": 429.0000600000001, "t": 650.53737, "r": 435.00305000000003, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "X", "bbox": {"l": 480.00037, "t": 650.53737, "r": 486.00335999999993, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "MODIFY PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 669.55708, "r": 208.36777, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "X", "bbox": {"l": 429.0000600000001, "t": 669.55708, "r": 435.00305000000003, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "X", "bbox": {"l": 480.00037, "t": 669.55708, "r": 486.00335999999993, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "MODIFY PLAN CACHE PROPERTIES procedure (currently does not check authority)", "bbox": {"l": 70.800079, "t": 688.57677, "r": 411.20264, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "X", "bbox": {"l": 429.0000600000001, "t": 688.57677, "r": 435.00305000000003, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "X", "bbox": {"l": 480.00037, "t": 688.57677, "r": 486.00335999999993, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "CHANGE PLAN CACHE SIZE procedure (currently does not check authority)", "bbox": {"l": 70.800079, "t": 707.537071, "r": 377.12585, "b": 715.862068, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "X", "bbox": {"l": 429.0000600000001, "t": 707.537071, "r": 435.00305000000003, "b": 715.862068, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "X", "bbox": {"l": 480.00037, "t": 707.537071, "r": 486.00335999999993, "b": 715.862068, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["rhed", "fcel", "fcel", "fcel", "fcel", "fcel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "fcel", "fcel", "nl", "rhed", "fcel", "ecel", "fcel", "fcel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "fcel", "fcel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl"], "num_rows": 13, "num_cols": 6, "table_cells": [{"bbox": {"l": 70.800301, "t": 400.51827999999995, "r": 119.78551, "b": 408.84329, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "User action", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 424.93805, "t": 447.52255, "r": 433.26297000000005, "b": 487.01999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "*JOBCTL", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 450.13806, "t": 401.6000700000001, "r": 458.46298, "b": 487.01999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "QIBM_DB_SECADM", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 475.93835000000007, "t": 401.53442, "r": 484.26327999999995, "b": 487.01999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "QIBM_DB_SQLADM", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 501.13837, "t": 401.6145, "r": 509.46329, "b": 487.01999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "QIBM_DB_SYSMON", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 526.39862, "t": 432.79944, "r": 534.72357, "b": 487.02005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "No Authority", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800003, "t": 498.55798, "r": 220.15681000000004, "b": 506.883, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "SET CURRENT DEGREE (SQL statement)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0, "t": 498.55798, "r": 435.00299000000007, "b": 506.883, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00031, "t": 498.55798, "r": 486.0033, "b": 506.883, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 517.51828, "r": 264.5538, "b": 525.84329, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CHGQRYA command targeting a different user\u2019s job", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00003, "t": 517.51828, "r": 435.00302000000005, "b": 525.84329, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00034, "t": 517.51828, "r": 486.00333, "b": 525.84329, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800049, "t": 536.5379800000001, "r": 322.50574, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "STRDBMON or ENDDBMON commands targeting a different user\u2019s job", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00003, "t": 536.5379800000001, "r": 435.00302000000005, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00034, "t": 536.5379800000001, "r": 486.00333, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800049, "t": 555.55768, "r": 381.02185, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "STRDBMON or ENDDBMON commands targeting a job that matches the current user", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00003, "t": 555.55768, "r": 435.00302000000005, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00034, "t": 555.55768, "r": 486.00333, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 505.26061999999996, "t": 555.55768, "r": 511.26361, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.76031, "t": 555.55768, "r": 536.76331, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800049, "t": 574.51797, "r": 359.51736, "b": 582.84299, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "QUSRJOBI() API format 900 or System i Navigator\u2019s SQL Details for Job", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 574.51797, "r": 435.00305000000003, "b": 582.84299, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 574.51797, "r": 486.00335999999993, "b": 582.84299, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 505.2606799999999, "t": 574.51797, "r": 511.26367, "b": 582.84299, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 593.5376699999999, "r": 220.75178999999997, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Visual Explain within Run SQL scripts", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 593.5376699999999, "r": 435.00305000000003, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 593.5376699999999, "r": 486.00335999999993, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 505.2606799999999, "t": 593.5376699999999, "r": 511.26367, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.76038, "t": 593.5376699999999, "r": 536.76337, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 612.55737, "r": 236.6548, "b": 620.88239, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Visual Explain outside of Run SQL scripts", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 612.55737, "r": 435.00305000000003, "b": 620.88239, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 612.55737, "r": 486.00335999999993, "b": 620.88239, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 631.51767, "r": 213.12968, "b": 639.84268, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ANALYZE PLAN CACHE procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 631.51767, "r": 435.00305000000003, "b": 639.84268, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 631.51767, "r": 486.00335999999993, "b": 639.84268, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 650.53737, "r": 199.87808, "b": 658.86238, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "DUMP PLAN CACHE procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 650.53737, "r": 435.00305000000003, "b": 658.86238, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 650.53737, "r": 486.00335999999993, "b": 658.86238, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 669.55708, "r": 208.36777, "b": 677.88207, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "MODIFY PLAN CACHE procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 669.55708, "r": 435.00305000000003, "b": 677.88207, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 669.55708, "r": 486.00335999999993, "b": 677.88207, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 688.57677, "r": 411.20264, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "MODIFY PLAN CACHE PROPERTIES procedure (currently does not check authority)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 688.57677, "r": 435.00305000000003, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 688.57677, "r": 486.00335999999993, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 707.537071, "r": 377.12585, "b": 715.862068, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CHANGE PLAN CACHE SIZE procedure (currently does not check authority)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 707.537071, "r": 435.00305000000003, "b": 715.862068, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 707.537071, "r": 486.00335999999993, "b": 715.862068, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}]}}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 8, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 354.4815673828125, "t": 754.9415893554688, "r": 523.54071, "b": 764.1055297851562, "coord_origin": "TOPLEFT"}, "confidence": 0.9508126378059387, "cells": [{"id": 0, "text": "Chapter 2. Roles and separation of duties ", "bbox": {"l": 355.32001, "t": 755.538002, "r": 523.54071, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 2. Roles and separation of duties"}, {"label": "page_footer", "id": 1, "page_no": 8, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 536.0808715820312, "t": 754.2325439453125, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8987302780151367, "cells": [{"id": 1, "text": "11", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "11"}, {"label": "text", "id": 2, "page_no": 8, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.92747497558594, "t": 70.65541076660156, "r": 542.69434, "b": 141.03610229492188, "coord_origin": "TOPLEFT"}, "confidence": 0.9789126515388489, "cells": [{"id": 2, "text": "For example, assume that a business has assigned the duty to manage security on IBM i to ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 542.69434, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Theresa. Before release IBM i 7.2, to grant privileges, Theresa had to have the same ", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 513.67804, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "privileges Theresa was granting to others. Therefore, to grant *USE privileges to the ", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 509.71902, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "PAYROLL table, Theresa had to have *OBJMGT and *USE authority (or a higher level of ", "bbox": {"l": 136.79959, "t": 107.50847999999996, "r": 528.20184, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "authority, such as *ALLOBJ). This requirement allowed Theresa to access the data in the ", "bbox": {"l": 136.79959, "t": 119.50829999999996, "r": 531.84015, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "PAYROLL table even though Theresa\u2019s job description was only to manage its security.", "bbox": {"l": 136.79959, "t": 131.50811999999996, "r": 519.24982, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "For example, assume that a business has assigned the duty to manage security on IBM i to Theresa. Before release IBM i 7.2, to grant privileges, Theresa had to have the same privileges Theresa was granting to others. Therefore, to grant *USE privileges to the PAYROLL table, Theresa had to have *OBJMGT and *USE authority (or a higher level of authority, such as *ALLOBJ). This requirement allowed Theresa to access the data in the PAYROLL table even though Theresa\u2019s job description was only to manage its security."}, {"label": "text", "id": 3, "page_no": 8, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.04833984375, "t": 152.51307678222656, "r": 547.30396, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9665539860725403, "cells": [{"id": 8, "text": "In IBM i 7.2, the QIBM_DB_SECADM function usage grants authorities, revokes authorities, ", "bbox": {"l": 136.79959, "t": 153.52770999999996, "r": 544.16064, "b": 162.74072, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "changes ownership, or changes the primary group without giving access to the object or, in ", "bbox": {"l": 136.79959, "t": 165.52752999999996, "r": 540.66156, "b": 174.74054, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "the case of a database table, to the data that is in the table or allowing other operations on the ", "bbox": {"l": 136.79959, "t": 177.52733999999998, "r": 547.30396, "b": 186.74036, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "table. ", "bbox": {"l": 136.79959, "t": 189.52715999999998, "r": 163.6189, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}}]}, "text": "In IBM i 7.2, the QIBM_DB_SECADM function usage grants authorities, revokes authorities, changes ownership, or changes the primary group without giving access to the object or, in the case of a database table, to the data that is in the table or allowing other operations on the table."}, {"label": "text", "id": 4, "page_no": 8, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.00685119628906, "t": 210.41148376464844, "r": 538.65076, "b": 233.08047485351562, "coord_origin": "TOPLEFT"}, "confidence": 0.9691813588142395, "cells": [{"id": 12, "text": "QIBM_DB_SECADM function usage can be granted only by a user with *SECADM special ", "bbox": {"l": 136.79959, "t": 211.48694, "r": 538.65076, "b": 220.69994999999994, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "authority and can be given to a user or a group.", "bbox": {"l": 136.79959, "t": 223.48676, "r": 346.34808, "b": 232.69976999999994, "coord_origin": "TOPLEFT"}}]}, "text": "QIBM_DB_SECADM function usage can be granted only by a user with *SECADM special authority and can be given to a user or a group."}, {"label": "text", "id": 5, "page_no": 8, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.68702697753906, "t": 244.5381622314453, "r": 545.79602, "b": 278.71898999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.9729602932929993, "cells": [{"id": 14, "text": "QIBM_DB_SECADM also is responsible for administering RCAC, which restricts which rows ", "bbox": {"l": 136.79959, "t": 245.50635, "r": 545.79602, "b": 254.71936000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "a user is allowed to access in a table and whether a user is allowed to see information in ", "bbox": {"l": 136.79959, "t": 257.50616, "r": 529.46149, "b": 266.71918000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "certain columns of a table.", "bbox": {"l": 136.79959, "t": 269.50598, "r": 253.47696999999997, "b": 278.71898999999996, "coord_origin": "TOPLEFT"}}]}, "text": "QIBM_DB_SECADM also is responsible for administering RCAC, which restricts which rows a user is allowed to access in a table and whether a user is allowed to see information in certain columns of a table."}, {"label": "text", "id": 6, "page_no": 8, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.86065673828125, "t": 290.6051330566406, "r": 539.80713, "b": 336.73801, "coord_origin": "TOPLEFT"}, "confidence": 0.9815152883529663, "cells": [{"id": 17, "text": "A preferred practice is that the RCAC administrator has the QIBM_DB_SECADM function ", "bbox": {"l": 136.79959, "t": 291.52557, "r": 533.78137, "b": 300.73856, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "usage ID, but absolutely no other data privileges. The result is that the RCAC administrator ", "bbox": {"l": 136.79959, "t": 303.52539, "r": 539.80713, "b": 312.73837000000003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "can deploy and maintain the RCAC constructs, but cannot grant themselves unauthorized ", "bbox": {"l": 136.79959, "t": 315.52521, "r": 534.5741, "b": 324.73819, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "access to data itself.", "bbox": {"l": 136.79959, "t": 327.52502, "r": 227.02324, "b": 336.73801, "coord_origin": "TOPLEFT"}}]}, "text": "A preferred practice is that the RCAC administrator has the QIBM_DB_SECADM function usage ID, but absolutely no other data privileges. The result is that the RCAC administrator can deploy and maintain the RCAC constructs, but cannot grant themselves unauthorized access to data itself."}, {"label": "text", "id": 7, "page_no": 8, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.7205352783203, "t": 348.60931396484375, "r": 543.06714, "b": 370.69763000000006, "coord_origin": "TOPLEFT"}, "confidence": 0.9672255516052246, "cells": [{"id": 21, "text": "Table 2-2 shows a comparison of the different function usage IDs and *JOBCTL authority to ", "bbox": {"l": 136.79959, "t": 349.48483, "r": 543.06714, "b": 358.69780999999995, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "the different CL commands and DB2 for i tools.", "bbox": {"l": 136.79959, "t": 361.48465, "r": 343.79236, "b": 370.69763000000006, "coord_origin": "TOPLEFT"}}]}, "text": "Table 2-2 shows a comparison of the different function usage IDs and *JOBCTL authority to the different CL commands and DB2 for i tools."}, {"label": "caption", "id": 8, "page_no": 8, "cluster": {"id": 8, "label": "caption", "bbox": {"l": 64.800003, "t": 382.5287170410156, "r": 392.4624328613281, "b": 392.25494384765625, "coord_origin": "TOPLEFT"}, "confidence": 0.933719277381897, "cells": [{"id": 23, "text": "Table 2-2 Comparison of the different function usage IDs and *JOBCTL authority", "bbox": {"l": 64.800003, "t": 383.5379899999999, "r": 391.75464, "b": 391.86301, "coord_origin": "TOPLEFT"}}]}, "text": "Table 2-2 Comparison of the different function usage IDs and *JOBCTL authority"}, {"label": "table", "id": 9, "page_no": 8, "cluster": {"id": 9, "label": "table", "bbox": {"l": 64.41139221191406, "t": 393.6136474609375, "r": 547.3950805664062, "b": 721.60791015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9899571537971497, "cells": [{"id": 24, "text": "User action", "bbox": {"l": 70.800301, "t": 400.51827999999995, "r": 119.78551, "b": 408.84329, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "*JOBCTL", "bbox": {"l": 424.93805, "t": 447.52255, "r": 433.26297000000005, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "QIBM_DB_SECADM", "bbox": {"l": 450.13806, "t": 401.6000700000001, "r": 458.46298, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "QIBM_DB_SQLADM", "bbox": {"l": 475.93835000000007, "t": 401.53442, "r": 484.26327999999995, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "QIBM_DB_SYSMON", "bbox": {"l": 501.13837, "t": 401.6145, "r": 509.46329, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "No Authority", "bbox": {"l": 526.39862, "t": 432.79944, "r": 534.72357, "b": 487.02005, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "SET CURRENT DEGREE", "bbox": {"l": 70.800003, "t": 498.69299, "r": 151.6794, "b": 506.66699, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " (SQL statement)", "bbox": {"l": 151.6803, "t": 498.55798, "r": 220.15681000000004, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "X", "bbox": {"l": 429.0, "t": 498.55798, "r": 435.00299000000007, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "X", "bbox": {"l": 480.00031, "t": 498.55798, "r": 486.0033, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "CHGQRYA", "bbox": {"l": 70.800018, "t": 517.65329, "r": 102.23972, "b": 525.62729, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": " command targeting a different user\u2019s job", "bbox": {"l": 102.23972, "t": 517.51828, "r": 264.5538, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "X", "bbox": {"l": 429.00003, "t": 517.51828, "r": 435.00302000000005, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "X", "bbox": {"l": 480.00034, "t": 517.51828, "r": 486.00333, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "STRDBMON", "bbox": {"l": 70.800049, "t": 536.67299, "r": 106.73975, "b": 544.64699, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": " or ", "bbox": {"l": 106.73975, "t": 536.5379800000001, "r": 119.77895, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ENDDBMON", "bbox": {"l": 119.69975000000001, "t": 536.67299, "r": 155.69974, "b": 544.64699, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": " commands targeting a different user\u2019s job", "bbox": {"l": 155.69974, "t": 536.5379800000001, "r": 322.50574, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "X", "bbox": {"l": 429.00003, "t": 536.5379800000001, "r": 435.00302000000005, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "X", "bbox": {"l": 480.00034, "t": 536.5379800000001, "r": 486.00333, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "STRDBMON", "bbox": {"l": 70.800049, "t": 555.69269, "r": 106.73975, "b": 563.66669, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": " or ", "bbox": {"l": 106.73975, "t": 555.55768, "r": 119.77895, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "ENDDBMON", "bbox": {"l": 119.69975000000001, "t": 555.69269, "r": 155.69974, "b": 563.66669, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": " commands targeting a job that matches the current user", "bbox": {"l": 155.69974, "t": 555.55768, "r": 381.02185, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "X", "bbox": {"l": 429.00003, "t": 555.55768, "r": 435.00302000000005, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "X", "bbox": {"l": 480.00034, "t": 555.55768, "r": 486.00333, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "X", "bbox": {"l": 505.26061999999996, "t": 555.55768, "r": 511.26361, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "X", "bbox": {"l": 530.76031, "t": 555.55768, "r": 536.76331, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "QUSRJOBI() API format 900 or System i Navigator\u2019s SQL Details for Job", "bbox": {"l": 70.800049, "t": 574.51797, "r": 359.51736, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "X", "bbox": {"l": 429.0000600000001, "t": 574.51797, "r": 435.00305000000003, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "X", "bbox": {"l": 480.00037, "t": 574.51797, "r": 486.00335999999993, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "X", "bbox": {"l": 505.2606799999999, "t": 574.51797, "r": 511.26367, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "Visual Explain within Run SQL scripts", "bbox": {"l": 70.800079, "t": 593.5376699999999, "r": 220.75178999999997, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "X", "bbox": {"l": 429.0000600000001, "t": 593.5376699999999, "r": 435.00305000000003, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "X", "bbox": {"l": 480.00037, "t": 593.5376699999999, "r": 486.00335999999993, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "X", "bbox": {"l": 505.2606799999999, "t": 593.5376699999999, "r": 511.26367, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "X", "bbox": {"l": 530.76038, "t": 593.5376699999999, "r": 536.76337, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Visual Explain outside of Run SQL scripts", "bbox": {"l": 70.800079, "t": 612.55737, "r": 236.6548, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "X", "bbox": {"l": 429.0000600000001, "t": 612.55737, "r": 435.00305000000003, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "X", "bbox": {"l": 480.00037, "t": 612.55737, "r": 486.00335999999993, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "ANALYZE PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 631.51767, "r": 213.12968, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "X", "bbox": {"l": 429.0000600000001, "t": 631.51767, "r": 435.00305000000003, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "X", "bbox": {"l": 480.00037, "t": 631.51767, "r": 486.00335999999993, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "DUMP PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 650.53737, "r": 199.87808, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "X", "bbox": {"l": 429.0000600000001, "t": 650.53737, "r": 435.00305000000003, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "X", "bbox": {"l": 480.00037, "t": 650.53737, "r": 486.00335999999993, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "MODIFY PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 669.55708, "r": 208.36777, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "X", "bbox": {"l": 429.0000600000001, "t": 669.55708, "r": 435.00305000000003, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "X", "bbox": {"l": 480.00037, "t": 669.55708, "r": 486.00335999999993, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "MODIFY PLAN CACHE PROPERTIES procedure (currently does not check authority)", "bbox": {"l": 70.800079, "t": 688.57677, "r": 411.20264, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "X", "bbox": {"l": 429.0000600000001, "t": 688.57677, "r": 435.00305000000003, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "X", "bbox": {"l": 480.00037, "t": 688.57677, "r": 486.00335999999993, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "CHANGE PLAN CACHE SIZE procedure (currently does not check authority)", "bbox": {"l": 70.800079, "t": 707.537071, "r": 377.12585, "b": 715.862068, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "X", "bbox": {"l": 429.0000600000001, "t": 707.537071, "r": 435.00305000000003, "b": 715.862068, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "X", "bbox": {"l": 480.00037, "t": 707.537071, "r": 486.00335999999993, "b": 715.862068, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["rhed", "fcel", "fcel", "fcel", "fcel", "fcel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "fcel", "fcel", "nl", "rhed", "fcel", "ecel", "fcel", "fcel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "fcel", "fcel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl"], "num_rows": 13, "num_cols": 6, "table_cells": [{"bbox": {"l": 70.800301, "t": 400.51827999999995, "r": 119.78551, "b": 408.84329, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "User action", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 424.93805, "t": 447.52255, "r": 433.26297000000005, "b": 487.01999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "*JOBCTL", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 450.13806, "t": 401.6000700000001, "r": 458.46298, "b": 487.01999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "QIBM_DB_SECADM", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 475.93835000000007, "t": 401.53442, "r": 484.26327999999995, "b": 487.01999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "QIBM_DB_SQLADM", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 501.13837, "t": 401.6145, "r": 509.46329, "b": 487.01999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "QIBM_DB_SYSMON", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 526.39862, "t": 432.79944, "r": 534.72357, "b": 487.02005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "No Authority", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800003, "t": 498.55798, "r": 220.15681000000004, "b": 506.883, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "SET CURRENT DEGREE (SQL statement)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0, "t": 498.55798, "r": 435.00299000000007, "b": 506.883, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00031, "t": 498.55798, "r": 486.0033, "b": 506.883, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 517.51828, "r": 264.5538, "b": 525.84329, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CHGQRYA command targeting a different user\u2019s job", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00003, "t": 517.51828, "r": 435.00302000000005, "b": 525.84329, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00034, "t": 517.51828, "r": 486.00333, "b": 525.84329, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800049, "t": 536.5379800000001, "r": 322.50574, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "STRDBMON or ENDDBMON commands targeting a different user\u2019s job", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00003, "t": 536.5379800000001, "r": 435.00302000000005, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00034, "t": 536.5379800000001, "r": 486.00333, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800049, "t": 555.55768, "r": 381.02185, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "STRDBMON or ENDDBMON commands targeting a job that matches the current user", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00003, "t": 555.55768, "r": 435.00302000000005, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00034, "t": 555.55768, "r": 486.00333, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 505.26061999999996, "t": 555.55768, "r": 511.26361, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.76031, "t": 555.55768, "r": 536.76331, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800049, "t": 574.51797, "r": 359.51736, "b": 582.84299, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "QUSRJOBI() API format 900 or System i Navigator\u2019s SQL Details for Job", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 574.51797, "r": 435.00305000000003, "b": 582.84299, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 574.51797, "r": 486.00335999999993, "b": 582.84299, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 505.2606799999999, "t": 574.51797, "r": 511.26367, "b": 582.84299, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 593.5376699999999, "r": 220.75178999999997, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Visual Explain within Run SQL scripts", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 593.5376699999999, "r": 435.00305000000003, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 593.5376699999999, "r": 486.00335999999993, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 505.2606799999999, "t": 593.5376699999999, "r": 511.26367, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.76038, "t": 593.5376699999999, "r": 536.76337, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 612.55737, "r": 236.6548, "b": 620.88239, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Visual Explain outside of Run SQL scripts", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 612.55737, "r": 435.00305000000003, "b": 620.88239, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 612.55737, "r": 486.00335999999993, "b": 620.88239, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 631.51767, "r": 213.12968, "b": 639.84268, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ANALYZE PLAN CACHE procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 631.51767, "r": 435.00305000000003, "b": 639.84268, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 631.51767, "r": 486.00335999999993, "b": 639.84268, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 650.53737, "r": 199.87808, "b": 658.86238, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "DUMP PLAN CACHE procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 650.53737, "r": 435.00305000000003, "b": 658.86238, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 650.53737, "r": 486.00335999999993, "b": 658.86238, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 669.55708, "r": 208.36777, "b": 677.88207, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "MODIFY PLAN CACHE procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 669.55708, "r": 435.00305000000003, "b": 677.88207, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 669.55708, "r": 486.00335999999993, "b": 677.88207, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 688.57677, "r": 411.20264, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "MODIFY PLAN CACHE PROPERTIES procedure (currently does not check authority)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 688.57677, "r": 435.00305000000003, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 688.57677, "r": 486.00335999999993, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 707.537071, "r": 377.12585, "b": 715.862068, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CHANGE PLAN CACHE SIZE procedure (currently does not check authority)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 707.537071, "r": 435.00305000000003, "b": 715.862068, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 707.537071, "r": 486.00335999999993, "b": 715.862068, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}]}], "body": [{"label": "text", "id": 2, "page_no": 8, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.92747497558594, "t": 70.65541076660156, "r": 542.69434, "b": 141.03610229492188, "coord_origin": "TOPLEFT"}, "confidence": 0.9789126515388489, "cells": [{"id": 2, "text": "For example, assume that a business has assigned the duty to manage security on IBM i to ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 542.69434, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Theresa. Before release IBM i 7.2, to grant privileges, Theresa had to have the same ", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 513.67804, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "privileges Theresa was granting to others. Therefore, to grant *USE privileges to the ", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 509.71902, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "PAYROLL table, Theresa had to have *OBJMGT and *USE authority (or a higher level of ", "bbox": {"l": 136.79959, "t": 107.50847999999996, "r": 528.20184, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "authority, such as *ALLOBJ). This requirement allowed Theresa to access the data in the ", "bbox": {"l": 136.79959, "t": 119.50829999999996, "r": 531.84015, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "PAYROLL table even though Theresa\u2019s job description was only to manage its security.", "bbox": {"l": 136.79959, "t": 131.50811999999996, "r": 519.24982, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "For example, assume that a business has assigned the duty to manage security on IBM i to Theresa. Before release IBM i 7.2, to grant privileges, Theresa had to have the same privileges Theresa was granting to others. Therefore, to grant *USE privileges to the PAYROLL table, Theresa had to have *OBJMGT and *USE authority (or a higher level of authority, such as *ALLOBJ). This requirement allowed Theresa to access the data in the PAYROLL table even though Theresa\u2019s job description was only to manage its security."}, {"label": "text", "id": 3, "page_no": 8, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.04833984375, "t": 152.51307678222656, "r": 547.30396, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9665539860725403, "cells": [{"id": 8, "text": "In IBM i 7.2, the QIBM_DB_SECADM function usage grants authorities, revokes authorities, ", "bbox": {"l": 136.79959, "t": 153.52770999999996, "r": 544.16064, "b": 162.74072, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "changes ownership, or changes the primary group without giving access to the object or, in ", "bbox": {"l": 136.79959, "t": 165.52752999999996, "r": 540.66156, "b": 174.74054, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "the case of a database table, to the data that is in the table or allowing other operations on the ", "bbox": {"l": 136.79959, "t": 177.52733999999998, "r": 547.30396, "b": 186.74036, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "table. ", "bbox": {"l": 136.79959, "t": 189.52715999999998, "r": 163.6189, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}}]}, "text": "In IBM i 7.2, the QIBM_DB_SECADM function usage grants authorities, revokes authorities, changes ownership, or changes the primary group without giving access to the object or, in the case of a database table, to the data that is in the table or allowing other operations on the table."}, {"label": "text", "id": 4, "page_no": 8, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.00685119628906, "t": 210.41148376464844, "r": 538.65076, "b": 233.08047485351562, "coord_origin": "TOPLEFT"}, "confidence": 0.9691813588142395, "cells": [{"id": 12, "text": "QIBM_DB_SECADM function usage can be granted only by a user with *SECADM special ", "bbox": {"l": 136.79959, "t": 211.48694, "r": 538.65076, "b": 220.69994999999994, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "authority and can be given to a user or a group.", "bbox": {"l": 136.79959, "t": 223.48676, "r": 346.34808, "b": 232.69976999999994, "coord_origin": "TOPLEFT"}}]}, "text": "QIBM_DB_SECADM function usage can be granted only by a user with *SECADM special authority and can be given to a user or a group."}, {"label": "text", "id": 5, "page_no": 8, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.68702697753906, "t": 244.5381622314453, "r": 545.79602, "b": 278.71898999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.9729602932929993, "cells": [{"id": 14, "text": "QIBM_DB_SECADM also is responsible for administering RCAC, which restricts which rows ", "bbox": {"l": 136.79959, "t": 245.50635, "r": 545.79602, "b": 254.71936000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "a user is allowed to access in a table and whether a user is allowed to see information in ", "bbox": {"l": 136.79959, "t": 257.50616, "r": 529.46149, "b": 266.71918000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "certain columns of a table.", "bbox": {"l": 136.79959, "t": 269.50598, "r": 253.47696999999997, "b": 278.71898999999996, "coord_origin": "TOPLEFT"}}]}, "text": "QIBM_DB_SECADM also is responsible for administering RCAC, which restricts which rows a user is allowed to access in a table and whether a user is allowed to see information in certain columns of a table."}, {"label": "text", "id": 6, "page_no": 8, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.86065673828125, "t": 290.6051330566406, "r": 539.80713, "b": 336.73801, "coord_origin": "TOPLEFT"}, "confidence": 0.9815152883529663, "cells": [{"id": 17, "text": "A preferred practice is that the RCAC administrator has the QIBM_DB_SECADM function ", "bbox": {"l": 136.79959, "t": 291.52557, "r": 533.78137, "b": 300.73856, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "usage ID, but absolutely no other data privileges. The result is that the RCAC administrator ", "bbox": {"l": 136.79959, "t": 303.52539, "r": 539.80713, "b": 312.73837000000003, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "can deploy and maintain the RCAC constructs, but cannot grant themselves unauthorized ", "bbox": {"l": 136.79959, "t": 315.52521, "r": 534.5741, "b": 324.73819, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "access to data itself.", "bbox": {"l": 136.79959, "t": 327.52502, "r": 227.02324, "b": 336.73801, "coord_origin": "TOPLEFT"}}]}, "text": "A preferred practice is that the RCAC administrator has the QIBM_DB_SECADM function usage ID, but absolutely no other data privileges. The result is that the RCAC administrator can deploy and maintain the RCAC constructs, but cannot grant themselves unauthorized access to data itself."}, {"label": "text", "id": 7, "page_no": 8, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.7205352783203, "t": 348.60931396484375, "r": 543.06714, "b": 370.69763000000006, "coord_origin": "TOPLEFT"}, "confidence": 0.9672255516052246, "cells": [{"id": 21, "text": "Table 2-2 shows a comparison of the different function usage IDs and *JOBCTL authority to ", "bbox": {"l": 136.79959, "t": 349.48483, "r": 543.06714, "b": 358.69780999999995, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "the different CL commands and DB2 for i tools.", "bbox": {"l": 136.79959, "t": 361.48465, "r": 343.79236, "b": 370.69763000000006, "coord_origin": "TOPLEFT"}}]}, "text": "Table 2-2 shows a comparison of the different function usage IDs and *JOBCTL authority to the different CL commands and DB2 for i tools."}, {"label": "caption", "id": 8, "page_no": 8, "cluster": {"id": 8, "label": "caption", "bbox": {"l": 64.800003, "t": 382.5287170410156, "r": 392.4624328613281, "b": 392.25494384765625, "coord_origin": "TOPLEFT"}, "confidence": 0.933719277381897, "cells": [{"id": 23, "text": "Table 2-2 Comparison of the different function usage IDs and *JOBCTL authority", "bbox": {"l": 64.800003, "t": 383.5379899999999, "r": 391.75464, "b": 391.86301, "coord_origin": "TOPLEFT"}}]}, "text": "Table 2-2 Comparison of the different function usage IDs and *JOBCTL authority"}, {"label": "table", "id": 9, "page_no": 8, "cluster": {"id": 9, "label": "table", "bbox": {"l": 64.41139221191406, "t": 393.6136474609375, "r": 547.3950805664062, "b": 721.60791015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9899571537971497, "cells": [{"id": 24, "text": "User action", "bbox": {"l": 70.800301, "t": 400.51827999999995, "r": 119.78551, "b": 408.84329, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "*JOBCTL", "bbox": {"l": 424.93805, "t": 447.52255, "r": 433.26297000000005, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "QIBM_DB_SECADM", "bbox": {"l": 450.13806, "t": 401.6000700000001, "r": 458.46298, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "QIBM_DB_SQLADM", "bbox": {"l": 475.93835000000007, "t": 401.53442, "r": 484.26327999999995, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "QIBM_DB_SYSMON", "bbox": {"l": 501.13837, "t": 401.6145, "r": 509.46329, "b": 487.01999, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "No Authority", "bbox": {"l": 526.39862, "t": 432.79944, "r": 534.72357, "b": 487.02005, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "SET CURRENT DEGREE", "bbox": {"l": 70.800003, "t": 498.69299, "r": 151.6794, "b": 506.66699, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " (SQL statement)", "bbox": {"l": 151.6803, "t": 498.55798, "r": 220.15681000000004, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "X", "bbox": {"l": 429.0, "t": 498.55798, "r": 435.00299000000007, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "X", "bbox": {"l": 480.00031, "t": 498.55798, "r": 486.0033, "b": 506.883, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "CHGQRYA", "bbox": {"l": 70.800018, "t": 517.65329, "r": 102.23972, "b": 525.62729, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": " command targeting a different user\u2019s job", "bbox": {"l": 102.23972, "t": 517.51828, "r": 264.5538, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "X", "bbox": {"l": 429.00003, "t": 517.51828, "r": 435.00302000000005, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "X", "bbox": {"l": 480.00034, "t": 517.51828, "r": 486.00333, "b": 525.84329, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "STRDBMON", "bbox": {"l": 70.800049, "t": 536.67299, "r": 106.73975, "b": 544.64699, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": " or ", "bbox": {"l": 106.73975, "t": 536.5379800000001, "r": 119.77895, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "ENDDBMON", "bbox": {"l": 119.69975000000001, "t": 536.67299, "r": 155.69974, "b": 544.64699, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": " commands targeting a different user\u2019s job", "bbox": {"l": 155.69974, "t": 536.5379800000001, "r": 322.50574, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "X", "bbox": {"l": 429.00003, "t": 536.5379800000001, "r": 435.00302000000005, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "X", "bbox": {"l": 480.00034, "t": 536.5379800000001, "r": 486.00333, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "STRDBMON", "bbox": {"l": 70.800049, "t": 555.69269, "r": 106.73975, "b": 563.66669, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": " or ", "bbox": {"l": 106.73975, "t": 555.55768, "r": 119.77895, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "ENDDBMON", "bbox": {"l": 119.69975000000001, "t": 555.69269, "r": 155.69974, "b": 563.66669, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": " commands targeting a job that matches the current user", "bbox": {"l": 155.69974, "t": 555.55768, "r": 381.02185, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "X", "bbox": {"l": 429.00003, "t": 555.55768, "r": 435.00302000000005, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "X", "bbox": {"l": 480.00034, "t": 555.55768, "r": 486.00333, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "X", "bbox": {"l": 505.26061999999996, "t": 555.55768, "r": 511.26361, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "X", "bbox": {"l": 530.76031, "t": 555.55768, "r": 536.76331, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "QUSRJOBI() API format 900 or System i Navigator\u2019s SQL Details for Job", "bbox": {"l": 70.800049, "t": 574.51797, "r": 359.51736, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "X", "bbox": {"l": 429.0000600000001, "t": 574.51797, "r": 435.00305000000003, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "X", "bbox": {"l": 480.00037, "t": 574.51797, "r": 486.00335999999993, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "X", "bbox": {"l": 505.2606799999999, "t": 574.51797, "r": 511.26367, "b": 582.84299, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "Visual Explain within Run SQL scripts", "bbox": {"l": 70.800079, "t": 593.5376699999999, "r": 220.75178999999997, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "X", "bbox": {"l": 429.0000600000001, "t": 593.5376699999999, "r": 435.00305000000003, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "X", "bbox": {"l": 480.00037, "t": 593.5376699999999, "r": 486.00335999999993, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "X", "bbox": {"l": 505.2606799999999, "t": 593.5376699999999, "r": 511.26367, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 60, "text": "X", "bbox": {"l": 530.76038, "t": 593.5376699999999, "r": 536.76337, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}}, {"id": 61, "text": "Visual Explain outside of Run SQL scripts", "bbox": {"l": 70.800079, "t": 612.55737, "r": 236.6548, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 62, "text": "X", "bbox": {"l": 429.0000600000001, "t": 612.55737, "r": 435.00305000000003, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 63, "text": "X", "bbox": {"l": 480.00037, "t": 612.55737, "r": 486.00335999999993, "b": 620.88239, "coord_origin": "TOPLEFT"}}, {"id": 64, "text": "ANALYZE PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 631.51767, "r": 213.12968, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 65, "text": "X", "bbox": {"l": 429.0000600000001, "t": 631.51767, "r": 435.00305000000003, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 66, "text": "X", "bbox": {"l": 480.00037, "t": 631.51767, "r": 486.00335999999993, "b": 639.84268, "coord_origin": "TOPLEFT"}}, {"id": 67, "text": "DUMP PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 650.53737, "r": 199.87808, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 68, "text": "X", "bbox": {"l": 429.0000600000001, "t": 650.53737, "r": 435.00305000000003, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 69, "text": "X", "bbox": {"l": 480.00037, "t": 650.53737, "r": 486.00335999999993, "b": 658.86238, "coord_origin": "TOPLEFT"}}, {"id": 70, "text": "MODIFY PLAN CACHE procedure", "bbox": {"l": 70.800079, "t": 669.55708, "r": 208.36777, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 71, "text": "X", "bbox": {"l": 429.0000600000001, "t": 669.55708, "r": 435.00305000000003, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 72, "text": "X", "bbox": {"l": 480.00037, "t": 669.55708, "r": 486.00335999999993, "b": 677.88207, "coord_origin": "TOPLEFT"}}, {"id": 73, "text": "MODIFY PLAN CACHE PROPERTIES procedure (currently does not check authority)", "bbox": {"l": 70.800079, "t": 688.57677, "r": 411.20264, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 74, "text": "X", "bbox": {"l": 429.0000600000001, "t": 688.57677, "r": 435.00305000000003, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 75, "text": "X", "bbox": {"l": 480.00037, "t": 688.57677, "r": 486.00335999999993, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}}, {"id": 76, "text": "CHANGE PLAN CACHE SIZE procedure (currently does not check authority)", "bbox": {"l": 70.800079, "t": 707.537071, "r": 377.12585, "b": 715.862068, "coord_origin": "TOPLEFT"}}, {"id": 77, "text": "X", "bbox": {"l": 429.0000600000001, "t": 707.537071, "r": 435.00305000000003, "b": 715.862068, "coord_origin": "TOPLEFT"}}, {"id": 78, "text": "X", "bbox": {"l": 480.00037, "t": 707.537071, "r": 486.00335999999993, "b": 715.862068, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["rhed", "fcel", "fcel", "fcel", "fcel", "fcel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "fcel", "fcel", "nl", "rhed", "fcel", "ecel", "fcel", "fcel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "fcel", "fcel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl", "rhed", "fcel", "ecel", "fcel", "ecel", "ecel", "nl"], "num_rows": 13, "num_cols": 6, "table_cells": [{"bbox": {"l": 70.800301, "t": 400.51827999999995, "r": 119.78551, "b": 408.84329, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "User action", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 424.93805, "t": 447.52255, "r": 433.26297000000005, "b": 487.01999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "*JOBCTL", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 450.13806, "t": 401.6000700000001, "r": 458.46298, "b": 487.01999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "QIBM_DB_SECADM", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 475.93835000000007, "t": 401.53442, "r": 484.26327999999995, "b": 487.01999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "QIBM_DB_SQLADM", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 501.13837, "t": 401.6145, "r": 509.46329, "b": 487.01999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "QIBM_DB_SYSMON", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 526.39862, "t": 432.79944, "r": 534.72357, "b": 487.02005, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "No Authority", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800003, "t": 498.55798, "r": 220.15681000000004, "b": 506.883, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "SET CURRENT DEGREE (SQL statement)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0, "t": 498.55798, "r": 435.00299000000007, "b": 506.883, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00031, "t": 498.55798, "r": 486.0033, "b": 506.883, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 517.51828, "r": 264.5538, "b": 525.84329, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CHGQRYA command targeting a different user\u2019s job", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00003, "t": 517.51828, "r": 435.00302000000005, "b": 525.84329, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00034, "t": 517.51828, "r": 486.00333, "b": 525.84329, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800049, "t": 536.5379800000001, "r": 322.50574, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "STRDBMON or ENDDBMON commands targeting a different user\u2019s job", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00003, "t": 536.5379800000001, "r": 435.00302000000005, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00034, "t": 536.5379800000001, "r": 486.00333, "b": 544.8629900000001, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800049, "t": 555.55768, "r": 381.02185, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "STRDBMON or ENDDBMON commands targeting a job that matches the current user", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.00003, "t": 555.55768, "r": 435.00302000000005, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00034, "t": 555.55768, "r": 486.00333, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 505.26061999999996, "t": 555.55768, "r": 511.26361, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.76031, "t": 555.55768, "r": 536.76331, "b": 563.8826899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800049, "t": 574.51797, "r": 359.51736, "b": 582.84299, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "QUSRJOBI() API format 900 or System i Navigator\u2019s SQL Details for Job", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 574.51797, "r": 435.00305000000003, "b": 582.84299, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 574.51797, "r": 486.00335999999993, "b": 582.84299, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 505.2606799999999, "t": 574.51797, "r": 511.26367, "b": 582.84299, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 593.5376699999999, "r": 220.75178999999997, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Visual Explain within Run SQL scripts", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 593.5376699999999, "r": 435.00305000000003, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 593.5376699999999, "r": 486.00335999999993, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 505.2606799999999, "t": 593.5376699999999, "r": 511.26367, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 4, "end_col_offset_idx": 5, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 530.76038, "t": 593.5376699999999, "r": 536.76337, "b": 601.8626899999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 5, "end_col_offset_idx": 6, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 612.55737, "r": 236.6548, "b": 620.88239, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Visual Explain outside of Run SQL scripts", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 612.55737, "r": 435.00305000000003, "b": 620.88239, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 612.55737, "r": 486.00335999999993, "b": 620.88239, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 631.51767, "r": 213.12968, "b": 639.84268, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ANALYZE PLAN CACHE procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 631.51767, "r": 435.00305000000003, "b": 639.84268, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 631.51767, "r": 486.00335999999993, "b": 639.84268, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 650.53737, "r": 199.87808, "b": 658.86238, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "DUMP PLAN CACHE procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 650.53737, "r": 435.00305000000003, "b": 658.86238, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 650.53737, "r": 486.00335999999993, "b": 658.86238, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 669.55708, "r": 208.36777, "b": 677.88207, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "MODIFY PLAN CACHE procedure", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 669.55708, "r": 435.00305000000003, "b": 677.88207, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 669.55708, "r": 486.00335999999993, "b": 677.88207, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 10, "end_row_offset_idx": 11, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 688.57677, "r": 411.20264, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "MODIFY PLAN CACHE PROPERTIES procedure (currently does not check authority)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 688.57677, "r": 435.00305000000003, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 688.57677, "r": 486.00335999999993, "b": 696.9017719999999, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 11, "end_row_offset_idx": 12, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800079, "t": 707.537071, "r": 377.12585, "b": 715.862068, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CHANGE PLAN CACHE SIZE procedure (currently does not check authority)", "column_header": false, "row_header": true, "row_section": false}, {"bbox": {"l": 429.0000600000001, "t": 707.537071, "r": 435.00305000000003, "b": 715.862068, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "X", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 480.00037, "t": 707.537071, "r": 486.00335999999993, "b": 715.862068, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 12, "end_row_offset_idx": 13, "start_col_offset_idx": 3, "end_col_offset_idx": 4, "text": "X", "column_header": false, "row_header": false, "row_section": false}]}], "headers": [{"label": "page_footer", "id": 0, "page_no": 8, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 354.4815673828125, "t": 754.9415893554688, "r": 523.54071, "b": 764.1055297851562, "coord_origin": "TOPLEFT"}, "confidence": 0.9508126378059387, "cells": [{"id": 0, "text": "Chapter 2. Roles and separation of duties ", "bbox": {"l": 355.32001, "t": 755.538002, "r": 523.54071, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 2. Roles and separation of duties"}, {"label": "page_footer", "id": 1, "page_no": 8, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 536.0808715820312, "t": 754.2325439453125, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8987302780151367, "cells": [{"id": 1, "text": "11", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "11"}]}}, {"page_no": 9, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "15", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "The SQL ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 179.58179, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "CREATE PERMISSION", "bbox": {"l": 179.57977, "t": 71.65845000000002, "r": 264.47879, "b": 80.48302999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " statement that is shown in Figure 3-1 is used to define and ", "bbox": {"l": 264.53955, "t": 71.50903000000005, "r": 528.73059, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "initially enable or disable the row access rules.", "bbox": {"l": 136.79956, "t": 83.50885000000017, "r": 341.71762, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Figure 3-1 CREATE PERMISSION SQL statement", "bbox": {"l": 136.8, "t": 414.138, "r": 341.97659, "b": 422.46301, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Column mask", "bbox": {"l": 136.8, "t": 439.94399999999996, "r": 215.37601, "b": 451.04401, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "A column mask is a database object that manifests a column value access control rule for a ", "bbox": {"l": 136.8, "t": 455.08871000000005, "r": 542.76648, "b": 464.3017, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "specific column in a specific table. It uses a CASE expression that describes what you see ", "bbox": {"l": 136.8, "t": 467.08853, "r": 537.84125, "b": 476.30151, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "when you access the column. For example, a teller can see only the last four digits of a tax ", "bbox": {"l": 136.8, "t": 479.08835, "r": 538.80927, "b": 488.30133, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "identification number.", "bbox": {"l": 136.8, "t": 491.08817, "r": 231.20888, "b": 500.30115, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "CREATE PERMISSION", "bbox": {"l": 148.1337, "t": 139.67969000000005, "r": 246.7961, "b": 149.50982999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "<", "bbox": {"l": 251.86685, "t": 139.67969000000005, "r": 257.58578, "b": 149.49834999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "permission name", "bbox": {"l": 257.59152, "t": 139.67969000000005, "r": 336.99741, "b": 149.50982999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": ">", "bbox": {"l": 337.01233, "t": 139.67969000000005, "r": 342.73126, "b": 149.49834999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Names the row permission for row access control", "bbox": {"l": 346.56491, "t": 121.46252000000004, "r": 530.74371, "b": 129.33507999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "ON", "bbox": {"l": 148.1337, "t": 181.06255999999996, "r": 163.45079, "b": 190.8927, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "<", "bbox": {"l": 168.58405, "t": 181.06255999999996, "r": 174.30298, "b": 190.88122999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "table name", "bbox": {"l": 174.30872, "t": 181.06255999999996, "r": 226.86777, "b": 190.8927, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": ">", "bbox": {"l": 226.86548000000002, "t": 181.06255999999996, "r": 232.58441, "b": 190.88122999999996, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Identifies the table on which the row ", "bbox": {"l": 311.3204, "t": 166.29413, "r": 450.77191000000005, "b": 174.16669000000002, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "permission is created", "bbox": {"l": 450.86123999999995, "t": 166.29413, "r": 529.93134, "b": 174.16669000000002, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "AS ", "bbox": {"l": 148.1337, "t": 222.44550000000004, "r": 163.10973, "b": 232.27562999999998, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "<", "bbox": {"l": 165.68669, "t": 222.44550000000004, "r": 171.40562, "b": 232.26415999999995, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "correlation name", "bbox": {"l": 171.41136, "t": 222.44550000000004, "r": 251.20424000000003, "b": 232.27562999999998, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": ">", "bbox": {"l": 251.21115, "t": 222.44550000000004, "r": 256.93008, "b": 232.26415999999995, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Specifies an optional correlation name that ca", "bbox": {"l": 235.79649, "t": 204.22839, "r": 406.62051, "b": 212.10095, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "be used within search-condition", "bbox": {"l": 480.53094, "t": 204.22839, "r": 532.89496, "b": 212.10095, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "FOR ROWS", "bbox": {"l": 148.1337, "t": 263.82836999999995, "r": 199.72467, "b": 273.65851, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Indicates that a row permission is cr", "bbox": {"l": 321.56271, "t": 246.09411999999998, "r": 455.3432, "b": 253.96667000000002, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "eated", "bbox": {"l": 455.20786000000004, "t": 246.09411999999998, "r": 476.48404, "b": 253.96667000000002, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Specifies a condition that can be ", "bbox": {"l": 321.5972, "t": 266.30267000000003, "r": 444.0292400000001, "b": 274.17523000000006, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "true,", "bbox": {"l": 444.07986, "t": 266.30267000000003, "r": 459.08678999999995, "b": 274.17523000000006, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "false, or unknown", "bbox": {"l": 464.2088, "t": 266.30267000000003, "r": 530.94897, "b": 274.17523000000006, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "WHERE", "bbox": {"l": 148.1337, "t": 291.41708, "r": 183.42342, "b": 301.24722, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "<", "bbox": {"l": 188.61984, "t": 291.41708, "r": 194.33878, "b": 301.23572, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "logic to test: user and/or group and/or column value", "bbox": {"l": 194.34451, "t": 291.41708, "r": 437.04659999999996, "b": 301.24722, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": ">", "bbox": {"l": 437.09020999999996, "t": 291.41708, "r": 442.80914000000007, "b": 301.23572, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ENFORCED FOR ALL ACCESS", "bbox": {"l": 148.1337, "t": 332.79999, "r": 278.77805, "b": 342.63013, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Specifies that the row permission applies to all ref", "bbox": {"l": 271.55829, "t": 314.58276, "r": 457.4451, "b": 322.45535, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "erences of the table", "bbox": {"l": 457.19281, "t": 314.58276, "r": 531.74939, "b": 322.45535, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "ENABLE", "bbox": {"l": 148.1337, "t": 374.18289, "r": 185.17584, "b": 384.01302999999996, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Specifies that the row permission is to", "bbox": {"l": 312.28601, "t": 355.96576000000005, "r": 454.33505, "b": 363.83835, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": " be initially enabled", "bbox": {"l": 454.3461, "t": 355.96576000000005, "r": 527.05286, "b": 363.83835, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "S", "bbox": {"l": 311.73431, "t": 376.65717, "r": 315.94684, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "ifith t th", "bbox": {"l": 329.28326, "t": 376.65717, "r": 371.71786, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "i", "bbox": {"l": 415.0014, "t": 376.65717, "r": 417.09616, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "i", "bbox": {"l": 424.27356, "t": 376.65717, "r": 426.36832, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "i", "bbox": {"l": 438.13208, "t": 376.65717, "r": 440.2268399999999, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "t", "bbox": {"l": 445.88681, "t": 376.65717, "r": 448.95757999999995, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "b", "bbox": {"l": 455.8532400000001, "t": 376.65717, "r": 460.67346000000003, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "i", "bbox": {"l": 467.36746, "t": 376.65717, "r": 470.06998000000004, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "iti ll", "bbox": {"l": 472.73705999999993, "t": 376.65717, "r": 490.1676, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "di", "bbox": {"l": 496.33661, "t": 376.65717, "r": 503.2608, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "bl d", "bbox": {"l": 511.26138, "t": 376.65717, "r": 527.59674, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "DISABLE", "bbox": {"l": 148.1337, "t": 387.9772, "r": 187.6265, "b": 397.80734000000007, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": ";", "bbox": {"l": 187.58514, "t": 387.9772, "r": 190.6628, "b": 397.79583999999994, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Specifies that the row permission is to ", "bbox": {"l": 311.73431, "t": 376.65717, "r": 455.83047000000005, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "be initially disabled", "bbox": {"l": 455.8848, "t": 376.65717, "r": 527.62122, "b": 384.52975, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 344.5666809082031, "t": 754.718017578125, "r": 523.60162, "b": 764.0823974609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9526246786117554, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 536.09998, "t": 754.310302734375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.907107949256897, "cells": [{"id": 1, "text": "15", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "caption", "bbox": {"l": 135.73501586914062, "t": 70.48638153076172, "r": 528.73059, "b": 92.9990234375, "coord_origin": "TOPLEFT"}, "confidence": 0.872844934463501, "cells": [{"id": 2, "text": "The SQL ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 179.58179, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "CREATE PERMISSION", "bbox": {"l": 179.57977, "t": 71.65845000000002, "r": 264.47879, "b": 80.48302999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " statement that is shown in Figure 3-1 is used to define and ", "bbox": {"l": 264.53955, "t": 71.50903000000005, "r": 528.73059, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "initially enable or disable the row access rules.", "bbox": {"l": 136.79956, "t": 83.50885000000017, "r": 341.71762, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.3166961669922, "t": 413.26751708984375, "r": 342.55548095703125, "b": 422.8843078613281, "coord_origin": "TOPLEFT"}, "confidence": 0.9387834072113037, "cells": [{"id": 6, "text": "Figure 3-1 CREATE PERMISSION SQL statement", "bbox": {"l": 136.8, "t": 414.138, "r": 341.97659, "b": 422.46301, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 136.24984741210938, "t": 438.7343444824219, "r": 215.88082885742188, "b": 451.04401, "coord_origin": "TOPLEFT"}, "confidence": 0.9477567076683044, "cells": [{"id": 7, "text": "Column mask", "bbox": {"l": 136.8, "t": 439.94399999999996, "r": 215.37601, "b": 451.04401, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.803466796875, "t": 453.9210510253906, "r": 542.76648, "b": 500.30115, "coord_origin": "TOPLEFT"}, "confidence": 0.9843975901603699, "cells": [{"id": 8, "text": "A column mask is a database object that manifests a column value access control rule for a ", "bbox": {"l": 136.8, "t": 455.08871000000005, "r": 542.76648, "b": 464.3017, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "specific column in a specific table. It uses a CASE expression that describes what you see ", "bbox": {"l": 136.8, "t": 467.08853, "r": 537.84125, "b": 476.30151, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "when you access the column. For example, a teller can see only the last four digits of a tax ", "bbox": {"l": 136.8, "t": 479.08835, "r": 538.80927, "b": 488.30133, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "identification number.", "bbox": {"l": 136.8, "t": 491.08817, "r": 231.20888, "b": 500.30115, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "picture", "bbox": {"l": 135.9717559814453, "t": 107.41072845458984, "r": 545.4180908203125, "b": 410.60931396484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9788318872451782, "cells": [{"id": 12, "text": "CREATE PERMISSION", "bbox": {"l": 148.1337, "t": 139.67969000000005, "r": 246.7961, "b": 149.50982999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "<", "bbox": {"l": 251.86685, "t": 139.67969000000005, "r": 257.58578, "b": 149.49834999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "permission name", "bbox": {"l": 257.59152, "t": 139.67969000000005, "r": 336.99741, "b": 149.50982999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": ">", "bbox": {"l": 337.01233, "t": 139.67969000000005, "r": 342.73126, "b": 149.49834999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Names the row permission for row access control", "bbox": {"l": 346.56491, "t": 121.46252000000004, "r": 530.74371, "b": 129.33507999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "ON", "bbox": {"l": 148.1337, "t": 181.06255999999996, "r": 163.45079, "b": 190.8927, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "<", "bbox": {"l": 168.58405, "t": 181.06255999999996, "r": 174.30298, "b": 190.88122999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "table name", "bbox": {"l": 174.30872, "t": 181.06255999999996, "r": 226.86777, "b": 190.8927, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": ">", "bbox": {"l": 226.86548000000002, "t": 181.06255999999996, "r": 232.58441, "b": 190.88122999999996, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Identifies the table on which the row ", "bbox": {"l": 311.3204, "t": 166.29413, "r": 450.77191000000005, "b": 174.16669000000002, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "permission is created", "bbox": {"l": 450.86123999999995, "t": 166.29413, "r": 529.93134, "b": 174.16669000000002, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "AS ", "bbox": {"l": 148.1337, "t": 222.44550000000004, "r": 163.10973, "b": 232.27562999999998, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "<", "bbox": {"l": 165.68669, "t": 222.44550000000004, "r": 171.40562, "b": 232.26415999999995, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "correlation name", "bbox": {"l": 171.41136, "t": 222.44550000000004, "r": 251.20424000000003, "b": 232.27562999999998, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": ">", "bbox": {"l": 251.21115, "t": 222.44550000000004, "r": 256.93008, "b": 232.26415999999995, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Specifies an optional correlation name that ca", "bbox": {"l": 235.79649, "t": 204.22839, "r": 406.62051, "b": 212.10095, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "be used within search-condition", "bbox": {"l": 480.53094, "t": 204.22839, "r": 532.89496, "b": 212.10095, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "FOR ROWS", "bbox": {"l": 148.1337, "t": 263.82836999999995, "r": 199.72467, "b": 273.65851, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Indicates that a row permission is cr", "bbox": {"l": 321.56271, "t": 246.09411999999998, "r": 455.3432, "b": 253.96667000000002, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "eated", "bbox": {"l": 455.20786000000004, "t": 246.09411999999998, "r": 476.48404, "b": 253.96667000000002, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Specifies a condition that can be ", "bbox": {"l": 321.5972, "t": 266.30267000000003, "r": 444.0292400000001, "b": 274.17523000000006, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "true,", "bbox": {"l": 444.07986, "t": 266.30267000000003, "r": 459.08678999999995, "b": 274.17523000000006, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "false, or unknown", "bbox": {"l": 464.2088, "t": 266.30267000000003, "r": 530.94897, "b": 274.17523000000006, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "WHERE", "bbox": {"l": 148.1337, "t": 291.41708, "r": 183.42342, "b": 301.24722, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "<", "bbox": {"l": 188.61984, "t": 291.41708, "r": 194.33878, "b": 301.23572, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "logic to test: user and/or group and/or column value", "bbox": {"l": 194.34451, "t": 291.41708, "r": 437.04659999999996, "b": 301.24722, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": ">", "bbox": {"l": 437.09020999999996, "t": 291.41708, "r": 442.80914000000007, "b": 301.23572, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ENFORCED FOR ALL ACCESS", "bbox": {"l": 148.1337, "t": 332.79999, "r": 278.77805, "b": 342.63013, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Specifies that the row permission applies to all ref", "bbox": {"l": 271.55829, "t": 314.58276, "r": 457.4451, "b": 322.45535, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "erences of the table", "bbox": {"l": 457.19281, "t": 314.58276, "r": 531.74939, "b": 322.45535, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "ENABLE", "bbox": {"l": 148.1337, "t": 374.18289, "r": 185.17584, "b": 384.01302999999996, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Specifies that the row permission is to", "bbox": {"l": 312.28601, "t": 355.96576000000005, "r": 454.33505, "b": 363.83835, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": " be initially enabled", "bbox": {"l": 454.3461, "t": 355.96576000000005, "r": 527.05286, "b": 363.83835, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "S", "bbox": {"l": 311.73431, "t": 376.65717, "r": 315.94684, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "ifith t th", "bbox": {"l": 329.28326, "t": 376.65717, "r": 371.71786, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "i", "bbox": {"l": 415.0014, "t": 376.65717, "r": 417.09616, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "i", "bbox": {"l": 424.27356, "t": 376.65717, "r": 426.36832, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "i", "bbox": {"l": 438.13208, "t": 376.65717, "r": 440.2268399999999, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "t", "bbox": {"l": 445.88681, "t": 376.65717, "r": 448.95757999999995, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "b", "bbox": {"l": 455.8532400000001, "t": 376.65717, "r": 460.67346000000003, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "i", "bbox": {"l": 467.36746, "t": 376.65717, "r": 470.06998000000004, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "iti ll", "bbox": {"l": 472.73705999999993, "t": 376.65717, "r": 490.1676, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "di", "bbox": {"l": 496.33661, "t": 376.65717, "r": 503.2608, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "bl d", "bbox": {"l": 511.26138, "t": 376.65717, "r": 527.59674, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "DISABLE", "bbox": {"l": 148.1337, "t": 387.9772, "r": 187.6265, "b": 397.80734000000007, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": ";", "bbox": {"l": 187.58514, "t": 387.9772, "r": 190.6628, "b": 397.79583999999994, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Specifies that the row permission is to ", "bbox": {"l": 311.73431, "t": 376.65717, "r": 455.83047000000005, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "be initially disabled", "bbox": {"l": 455.8848, "t": 376.65717, "r": 527.62122, "b": 384.52975, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 9, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.5666809082031, "t": 754.718017578125, "r": 523.60162, "b": 764.0823974609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9526246786117554, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 9, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 536.09998, "t": 754.310302734375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.907107949256897, "cells": [{"id": 1, "text": "15", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "15"}, {"label": "caption", "id": 2, "page_no": 9, "cluster": {"id": 2, "label": "caption", "bbox": {"l": 135.73501586914062, "t": 70.48638153076172, "r": 528.73059, "b": 92.9990234375, "coord_origin": "TOPLEFT"}, "confidence": 0.872844934463501, "cells": [{"id": 2, "text": "The SQL ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 179.58179, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "CREATE PERMISSION", "bbox": {"l": 179.57977, "t": 71.65845000000002, "r": 264.47879, "b": 80.48302999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " statement that is shown in Figure 3-1 is used to define and ", "bbox": {"l": 264.53955, "t": 71.50903000000005, "r": 528.73059, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "initially enable or disable the row access rules.", "bbox": {"l": 136.79956, "t": 83.50885000000017, "r": 341.71762, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "The SQL CREATE PERMISSION statement that is shown in Figure 3-1 is used to define and initially enable or disable the row access rules."}, {"label": "caption", "id": 3, "page_no": 9, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.3166961669922, "t": 413.26751708984375, "r": 342.55548095703125, "b": 422.8843078613281, "coord_origin": "TOPLEFT"}, "confidence": 0.9387834072113037, "cells": [{"id": 6, "text": "Figure 3-1 CREATE PERMISSION SQL statement", "bbox": {"l": 136.8, "t": 414.138, "r": 341.97659, "b": 422.46301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-1 CREATE PERMISSION SQL statement"}, {"label": "section_header", "id": 4, "page_no": 9, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 136.24984741210938, "t": 438.7343444824219, "r": 215.88082885742188, "b": 451.04401, "coord_origin": "TOPLEFT"}, "confidence": 0.9477567076683044, "cells": [{"id": 7, "text": "Column mask", "bbox": {"l": 136.8, "t": 439.94399999999996, "r": 215.37601, "b": 451.04401, "coord_origin": "TOPLEFT"}}]}, "text": "Column mask"}, {"label": "text", "id": 5, "page_no": 9, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.803466796875, "t": 453.9210510253906, "r": 542.76648, "b": 500.30115, "coord_origin": "TOPLEFT"}, "confidence": 0.9843975901603699, "cells": [{"id": 8, "text": "A column mask is a database object that manifests a column value access control rule for a ", "bbox": {"l": 136.8, "t": 455.08871000000005, "r": 542.76648, "b": 464.3017, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "specific column in a specific table. It uses a CASE expression that describes what you see ", "bbox": {"l": 136.8, "t": 467.08853, "r": 537.84125, "b": 476.30151, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "when you access the column. For example, a teller can see only the last four digits of a tax ", "bbox": {"l": 136.8, "t": 479.08835, "r": 538.80927, "b": 488.30133, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "identification number.", "bbox": {"l": 136.8, "t": 491.08817, "r": 231.20888, "b": 500.30115, "coord_origin": "TOPLEFT"}}]}, "text": "A column mask is a database object that manifests a column value access control rule for a specific column in a specific table. It uses a CASE expression that describes what you see when you access the column. For example, a teller can see only the last four digits of a tax identification number."}, {"label": "picture", "id": 6, "page_no": 9, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 135.9717559814453, "t": 107.41072845458984, "r": 545.4180908203125, "b": 410.60931396484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9788318872451782, "cells": [{"id": 12, "text": "CREATE PERMISSION", "bbox": {"l": 148.1337, "t": 139.67969000000005, "r": 246.7961, "b": 149.50982999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "<", "bbox": {"l": 251.86685, "t": 139.67969000000005, "r": 257.58578, "b": 149.49834999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "permission name", "bbox": {"l": 257.59152, "t": 139.67969000000005, "r": 336.99741, "b": 149.50982999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": ">", "bbox": {"l": 337.01233, "t": 139.67969000000005, "r": 342.73126, "b": 149.49834999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Names the row permission for row access control", "bbox": {"l": 346.56491, "t": 121.46252000000004, "r": 530.74371, "b": 129.33507999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "ON", "bbox": {"l": 148.1337, "t": 181.06255999999996, "r": 163.45079, "b": 190.8927, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "<", "bbox": {"l": 168.58405, "t": 181.06255999999996, "r": 174.30298, "b": 190.88122999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "table name", "bbox": {"l": 174.30872, "t": 181.06255999999996, "r": 226.86777, "b": 190.8927, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": ">", "bbox": {"l": 226.86548000000002, "t": 181.06255999999996, "r": 232.58441, "b": 190.88122999999996, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Identifies the table on which the row ", "bbox": {"l": 311.3204, "t": 166.29413, "r": 450.77191000000005, "b": 174.16669000000002, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "permission is created", "bbox": {"l": 450.86123999999995, "t": 166.29413, "r": 529.93134, "b": 174.16669000000002, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "AS ", "bbox": {"l": 148.1337, "t": 222.44550000000004, "r": 163.10973, "b": 232.27562999999998, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "<", "bbox": {"l": 165.68669, "t": 222.44550000000004, "r": 171.40562, "b": 232.26415999999995, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "correlation name", "bbox": {"l": 171.41136, "t": 222.44550000000004, "r": 251.20424000000003, "b": 232.27562999999998, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": ">", "bbox": {"l": 251.21115, "t": 222.44550000000004, "r": 256.93008, "b": 232.26415999999995, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Specifies an optional correlation name that ca", "bbox": {"l": 235.79649, "t": 204.22839, "r": 406.62051, "b": 212.10095, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "be used within search-condition", "bbox": {"l": 480.53094, "t": 204.22839, "r": 532.89496, "b": 212.10095, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "FOR ROWS", "bbox": {"l": 148.1337, "t": 263.82836999999995, "r": 199.72467, "b": 273.65851, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Indicates that a row permission is cr", "bbox": {"l": 321.56271, "t": 246.09411999999998, "r": 455.3432, "b": 253.96667000000002, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "eated", "bbox": {"l": 455.20786000000004, "t": 246.09411999999998, "r": 476.48404, "b": 253.96667000000002, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Specifies a condition that can be ", "bbox": {"l": 321.5972, "t": 266.30267000000003, "r": 444.0292400000001, "b": 274.17523000000006, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "true,", "bbox": {"l": 444.07986, "t": 266.30267000000003, "r": 459.08678999999995, "b": 274.17523000000006, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "false, or unknown", "bbox": {"l": 464.2088, "t": 266.30267000000003, "r": 530.94897, "b": 274.17523000000006, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "WHERE", "bbox": {"l": 148.1337, "t": 291.41708, "r": 183.42342, "b": 301.24722, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "<", "bbox": {"l": 188.61984, "t": 291.41708, "r": 194.33878, "b": 301.23572, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "logic to test: user and/or group and/or column value", "bbox": {"l": 194.34451, "t": 291.41708, "r": 437.04659999999996, "b": 301.24722, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": ">", "bbox": {"l": 437.09020999999996, "t": 291.41708, "r": 442.80914000000007, "b": 301.23572, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ENFORCED FOR ALL ACCESS", "bbox": {"l": 148.1337, "t": 332.79999, "r": 278.77805, "b": 342.63013, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Specifies that the row permission applies to all ref", "bbox": {"l": 271.55829, "t": 314.58276, "r": 457.4451, "b": 322.45535, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "erences of the table", "bbox": {"l": 457.19281, "t": 314.58276, "r": 531.74939, "b": 322.45535, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "ENABLE", "bbox": {"l": 148.1337, "t": 374.18289, "r": 185.17584, "b": 384.01302999999996, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Specifies that the row permission is to", "bbox": {"l": 312.28601, "t": 355.96576000000005, "r": 454.33505, "b": 363.83835, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": " be initially enabled", "bbox": {"l": 454.3461, "t": 355.96576000000005, "r": 527.05286, "b": 363.83835, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "S", "bbox": {"l": 311.73431, "t": 376.65717, "r": 315.94684, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "ifith t th", "bbox": {"l": 329.28326, "t": 376.65717, "r": 371.71786, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "i", "bbox": {"l": 415.0014, "t": 376.65717, "r": 417.09616, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "i", "bbox": {"l": 424.27356, "t": 376.65717, "r": 426.36832, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "i", "bbox": {"l": 438.13208, "t": 376.65717, "r": 440.2268399999999, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "t", "bbox": {"l": 445.88681, "t": 376.65717, "r": 448.95757999999995, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "b", "bbox": {"l": 455.8532400000001, "t": 376.65717, "r": 460.67346000000003, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "i", "bbox": {"l": 467.36746, "t": 376.65717, "r": 470.06998000000004, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "iti ll", "bbox": {"l": 472.73705999999993, "t": 376.65717, "r": 490.1676, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "di", "bbox": {"l": 496.33661, "t": 376.65717, "r": 503.2608, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "bl d", "bbox": {"l": 511.26138, "t": 376.65717, "r": 527.59674, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "DISABLE", "bbox": {"l": 148.1337, "t": 387.9772, "r": 187.6265, "b": 397.80734000000007, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": ";", "bbox": {"l": 187.58514, "t": 387.9772, "r": 190.6628, "b": 397.79583999999994, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Specifies that the row permission is to ", "bbox": {"l": 311.73431, "t": 376.65717, "r": 455.83047000000005, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "be initially disabled", "bbox": {"l": 455.8848, "t": 376.65717, "r": 527.62122, "b": 384.52975, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "caption", "id": 2, "page_no": 9, "cluster": {"id": 2, "label": "caption", "bbox": {"l": 135.73501586914062, "t": 70.48638153076172, "r": 528.73059, "b": 92.9990234375, "coord_origin": "TOPLEFT"}, "confidence": 0.872844934463501, "cells": [{"id": 2, "text": "The SQL ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 179.58179, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "CREATE PERMISSION", "bbox": {"l": 179.57977, "t": 71.65845000000002, "r": 264.47879, "b": 80.48302999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": " statement that is shown in Figure 3-1 is used to define and ", "bbox": {"l": 264.53955, "t": 71.50903000000005, "r": 528.73059, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "initially enable or disable the row access rules.", "bbox": {"l": 136.79956, "t": 83.50885000000017, "r": 341.71762, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "The SQL CREATE PERMISSION statement that is shown in Figure 3-1 is used to define and initially enable or disable the row access rules."}, {"label": "caption", "id": 3, "page_no": 9, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.3166961669922, "t": 413.26751708984375, "r": 342.55548095703125, "b": 422.8843078613281, "coord_origin": "TOPLEFT"}, "confidence": 0.9387834072113037, "cells": [{"id": 6, "text": "Figure 3-1 CREATE PERMISSION SQL statement", "bbox": {"l": 136.8, "t": 414.138, "r": 341.97659, "b": 422.46301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-1 CREATE PERMISSION SQL statement"}, {"label": "section_header", "id": 4, "page_no": 9, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 136.24984741210938, "t": 438.7343444824219, "r": 215.88082885742188, "b": 451.04401, "coord_origin": "TOPLEFT"}, "confidence": 0.9477567076683044, "cells": [{"id": 7, "text": "Column mask", "bbox": {"l": 136.8, "t": 439.94399999999996, "r": 215.37601, "b": 451.04401, "coord_origin": "TOPLEFT"}}]}, "text": "Column mask"}, {"label": "text", "id": 5, "page_no": 9, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.803466796875, "t": 453.9210510253906, "r": 542.76648, "b": 500.30115, "coord_origin": "TOPLEFT"}, "confidence": 0.9843975901603699, "cells": [{"id": 8, "text": "A column mask is a database object that manifests a column value access control rule for a ", "bbox": {"l": 136.8, "t": 455.08871000000005, "r": 542.76648, "b": 464.3017, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "specific column in a specific table. It uses a CASE expression that describes what you see ", "bbox": {"l": 136.8, "t": 467.08853, "r": 537.84125, "b": 476.30151, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "when you access the column. For example, a teller can see only the last four digits of a tax ", "bbox": {"l": 136.8, "t": 479.08835, "r": 538.80927, "b": 488.30133, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "identification number.", "bbox": {"l": 136.8, "t": 491.08817, "r": 231.20888, "b": 500.30115, "coord_origin": "TOPLEFT"}}]}, "text": "A column mask is a database object that manifests a column value access control rule for a specific column in a specific table. It uses a CASE expression that describes what you see when you access the column. For example, a teller can see only the last four digits of a tax identification number."}, {"label": "picture", "id": 6, "page_no": 9, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 135.9717559814453, "t": 107.41072845458984, "r": 545.4180908203125, "b": 410.60931396484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9788318872451782, "cells": [{"id": 12, "text": "CREATE PERMISSION", "bbox": {"l": 148.1337, "t": 139.67969000000005, "r": 246.7961, "b": 149.50982999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "<", "bbox": {"l": 251.86685, "t": 139.67969000000005, "r": 257.58578, "b": 149.49834999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "permission name", "bbox": {"l": 257.59152, "t": 139.67969000000005, "r": 336.99741, "b": 149.50982999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": ">", "bbox": {"l": 337.01233, "t": 139.67969000000005, "r": 342.73126, "b": 149.49834999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Names the row permission for row access control", "bbox": {"l": 346.56491, "t": 121.46252000000004, "r": 530.74371, "b": 129.33507999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "ON", "bbox": {"l": 148.1337, "t": 181.06255999999996, "r": 163.45079, "b": 190.8927, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "<", "bbox": {"l": 168.58405, "t": 181.06255999999996, "r": 174.30298, "b": 190.88122999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "table name", "bbox": {"l": 174.30872, "t": 181.06255999999996, "r": 226.86777, "b": 190.8927, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": ">", "bbox": {"l": 226.86548000000002, "t": 181.06255999999996, "r": 232.58441, "b": 190.88122999999996, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Identifies the table on which the row ", "bbox": {"l": 311.3204, "t": 166.29413, "r": 450.77191000000005, "b": 174.16669000000002, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "permission is created", "bbox": {"l": 450.86123999999995, "t": 166.29413, "r": 529.93134, "b": 174.16669000000002, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "AS ", "bbox": {"l": 148.1337, "t": 222.44550000000004, "r": 163.10973, "b": 232.27562999999998, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "<", "bbox": {"l": 165.68669, "t": 222.44550000000004, "r": 171.40562, "b": 232.26415999999995, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "correlation name", "bbox": {"l": 171.41136, "t": 222.44550000000004, "r": 251.20424000000003, "b": 232.27562999999998, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": ">", "bbox": {"l": 251.21115, "t": 222.44550000000004, "r": 256.93008, "b": 232.26415999999995, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Specifies an optional correlation name that ca", "bbox": {"l": 235.79649, "t": 204.22839, "r": 406.62051, "b": 212.10095, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "be used within search-condition", "bbox": {"l": 480.53094, "t": 204.22839, "r": 532.89496, "b": 212.10095, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "FOR ROWS", "bbox": {"l": 148.1337, "t": 263.82836999999995, "r": 199.72467, "b": 273.65851, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Indicates that a row permission is cr", "bbox": {"l": 321.56271, "t": 246.09411999999998, "r": 455.3432, "b": 253.96667000000002, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "eated", "bbox": {"l": 455.20786000000004, "t": 246.09411999999998, "r": 476.48404, "b": 253.96667000000002, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Specifies a condition that can be ", "bbox": {"l": 321.5972, "t": 266.30267000000003, "r": 444.0292400000001, "b": 274.17523000000006, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "true,", "bbox": {"l": 444.07986, "t": 266.30267000000003, "r": 459.08678999999995, "b": 274.17523000000006, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "false, or unknown", "bbox": {"l": 464.2088, "t": 266.30267000000003, "r": 530.94897, "b": 274.17523000000006, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "WHERE", "bbox": {"l": 148.1337, "t": 291.41708, "r": 183.42342, "b": 301.24722, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "<", "bbox": {"l": 188.61984, "t": 291.41708, "r": 194.33878, "b": 301.23572, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "logic to test: user and/or group and/or column value", "bbox": {"l": 194.34451, "t": 291.41708, "r": 437.04659999999996, "b": 301.24722, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": ">", "bbox": {"l": 437.09020999999996, "t": 291.41708, "r": 442.80914000000007, "b": 301.23572, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ENFORCED FOR ALL ACCESS", "bbox": {"l": 148.1337, "t": 332.79999, "r": 278.77805, "b": 342.63013, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Specifies that the row permission applies to all ref", "bbox": {"l": 271.55829, "t": 314.58276, "r": 457.4451, "b": 322.45535, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "erences of the table", "bbox": {"l": 457.19281, "t": 314.58276, "r": 531.74939, "b": 322.45535, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "ENABLE", "bbox": {"l": 148.1337, "t": 374.18289, "r": 185.17584, "b": 384.01302999999996, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Specifies that the row permission is to", "bbox": {"l": 312.28601, "t": 355.96576000000005, "r": 454.33505, "b": 363.83835, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": " be initially enabled", "bbox": {"l": 454.3461, "t": 355.96576000000005, "r": 527.05286, "b": 363.83835, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "S", "bbox": {"l": 311.73431, "t": 376.65717, "r": 315.94684, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "ifith t th", "bbox": {"l": 329.28326, "t": 376.65717, "r": 371.71786, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "i", "bbox": {"l": 415.0014, "t": 376.65717, "r": 417.09616, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "i", "bbox": {"l": 424.27356, "t": 376.65717, "r": 426.36832, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "i", "bbox": {"l": 438.13208, "t": 376.65717, "r": 440.2268399999999, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "t", "bbox": {"l": 445.88681, "t": 376.65717, "r": 448.95757999999995, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "b", "bbox": {"l": 455.8532400000001, "t": 376.65717, "r": 460.67346000000003, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "i", "bbox": {"l": 467.36746, "t": 376.65717, "r": 470.06998000000004, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "iti ll", "bbox": {"l": 472.73705999999993, "t": 376.65717, "r": 490.1676, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "di", "bbox": {"l": 496.33661, "t": 376.65717, "r": 503.2608, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "bl d", "bbox": {"l": 511.26138, "t": 376.65717, "r": 527.59674, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "DISABLE", "bbox": {"l": 148.1337, "t": 387.9772, "r": 187.6265, "b": 397.80734000000007, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": ";", "bbox": {"l": 187.58514, "t": 387.9772, "r": 190.6628, "b": 397.79583999999994, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Specifies that the row permission is to ", "bbox": {"l": 311.73431, "t": 376.65717, "r": 455.83047000000005, "b": 384.52975, "coord_origin": "TOPLEFT"}}, {"id": 59, "text": "be initially disabled", "bbox": {"l": 455.8848, "t": 376.65717, "r": 527.62122, "b": 384.52975, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 9, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.5666809082031, "t": 754.718017578125, "r": 523.60162, "b": 764.0823974609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9526246786117554, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 9, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 536.09998, "t": 754.310302734375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.907107949256897, "cells": [{"id": 1, "text": "15", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "15"}]}}, {"page_no": 10, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "19", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Table 3-1 summarizes these special registers and their values.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 412.20758, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Table 3-1 Special registers and their corresponding values", "bbox": {"l": 136.8, "t": 93.49805000000003, "r": 372.60364, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 3-5 shows the difference in the special register values when an adopted authority is ", "bbox": {"l": 136.8, "t": 214.48870999999997, "r": 538.4939, "b": 223.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "used:", "bbox": {"l": 136.8, "t": 226.48852999999997, "r": 161.20995, "b": 235.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 243.67749000000003, "r": 141.78, "b": 252.45227, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "A user connects to the server using the user profile ALICE.", "bbox": {"l": 151.20016, "t": 243.52808000000005, "r": 411.36139, "b": 252.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "GLYPH", "bbox": {"l": 136.8, "t": 260.65729, "r": 141.78, "b": 269.43206999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "USER and CURRENT USER initially have the same value of ALICE.", "bbox": {"l": 151.20016, "t": 260.50787, "r": 453.2580899999999, "b": 269.72089000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "GLYPH", "bbox": {"l": 136.8, "t": 277.63707999999997, "r": 141.78, "b": 286.41187, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ALICE calls an SQL procedure that is named proc1, which is owned by user profile JOE ", "bbox": {"l": 151.20016, "t": 277.48767, "r": 541.44983, "b": 286.70068, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "and was created to adopt JOE\u2019s authority when it is called.", "bbox": {"l": 151.20016, "t": 289.4875200000001, "r": 409.82953, "b": 298.7005, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 306.67647999999997, "r": 141.78, "b": 315.45126000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "While the procedure is running, the special register USER still contains the value of ALICE ", "bbox": {"l": 151.20016, "t": 306.5271, "r": 547.21674, "b": 315.74008, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "because it excludes any adopted authority. The special register CURRENT USER ", "bbox": {"l": 151.20117, "t": 318.52691999999996, "r": 514.32971, "b": 327.7399, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "contains the value of JOE because it includes any adopted authority.", "bbox": {"l": 151.20117, "t": 330.52673, "r": 453.3249200000001, "b": 339.73972, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "GLYPH", "bbox": {"l": 136.80101, "t": 347.65591, "r": 141.78101, "b": 356.43069, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "When proc1 ends, the session reverts to its original state with both USER and CURRENT ", "bbox": {"l": 151.20117, "t": 347.50653, "r": 547.35406, "b": 356.71950999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "USER having the value of ALICE.", "bbox": {"l": 151.20117, "t": 359.50635, "r": 299.57532, "b": 368.71933000000007, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Figure 3-5 Special registers and adopted authority", "bbox": {"l": 136.8, "t": 596.7179, "r": 341.25662, "b": 605.04291, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "3.2.2", "bbox": {"l": 64.800003, "t": 625.55472, "r": 94.20356, "b": 637.54272, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Built-in global variables", "bbox": {"l": 97.879005, "t": 625.55472, "r": 247.02536, "b": 637.54272, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Built-in global variables are provided with the database manager and are used in SQL ", "bbox": {"l": 136.8, "t": 651.70872, "r": 518.00116, "b": 660.92172, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "statements to retrieve scalar values that are associated with the variables.", "bbox": {"l": 136.8, "t": 663.70853, "r": 462.81759999999997, "b": 672.92153, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "IBM DB2 for i supports nine different built-in global variables that are read only and ", "bbox": {"l": 136.8, "t": 685.7281, "r": 504.44669, "b": 694.941101, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "maintained by the system. These global variables can be used to identify attributes of the ", "bbox": {"l": 136.8, "t": 697.727905, "r": 532.3385, "b": 706.94091, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "database connection and used as part of the RCAC logic.", "bbox": {"l": 136.8, "t": 709.727715, "r": 391.38257, "b": 718.94072, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Special register", "bbox": {"l": 142.8, "t": 110.53801999999985, "r": 209.67091, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Corresponding value", "bbox": {"l": 230.18912000000003, "t": 110.53801999999985, "r": 319.93527, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "USER or", "bbox": {"l": 142.80002, "t": 129.49834999999996, "r": 178.26361, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "SESSION_USER", "bbox": {"l": 142.80002, "t": 140.53864, "r": 212.70122, "b": 148.86359000000004, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "The effective user of the thread excluding adopted authority.", "bbox": {"l": 230.21973000000003, "t": 129.49834999999996, "r": 467.99069000000003, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "CURRENT_USER", "bbox": {"l": 142.80003, "t": 159.55835000000002, "r": 216.63962999999998, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "The effective user of the thread including adopted authority. When no adopted ", "bbox": {"l": 230.19814, "t": 159.55835000000002, "r": 535.65082, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "authority is present, this has the same value as USER.", "bbox": {"l": 230.22061, "t": 170.53832999999997, "r": 447.36533, "b": 178.86328000000003, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "SYSTEM_USER", "bbox": {"l": 142.8009, "t": 189.55804, "r": 209.7357, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "The authorization ID that initiated the connection.", "bbox": {"l": 230.2449, "t": 189.55804, "r": 425.64569, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "SignedonasALICE", "bbox": {"l": 140.7323, "t": 386.98453, "r": 218.71170000000004, "b": 395.49527, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Signed on as ALICE", "bbox": {"l": 140.7323, "t": 386.98453, "r": 216.40009, "b": 395.49527, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "USER = ALICE", "bbox": {"l": 138.476, "t": 410.87441999999993, "r": 191.70256, "b": 419.38516, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "CURRENT USER = ALICE", "bbox": {"l": 138.476, "t": 422.81934, "r": 232.56117, "b": 431.33008, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CALL proc1", "bbox": {"l": 138.476, "t": 446.70923000000005, "r": 183.26944, "b": 455.21997, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "P1", "bbox": {"l": 148.4301, "t": 473.58524, "r": 184.17328, "b": 482.09598, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Proc1:", "bbox": {"l": 148.4301, "t": 473.58524, "r": 174.05859, "b": 482.09598, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Owner = JOE", "bbox": {"l": 157.52185, "t": 485.53015, "r": 209.103, "b": 494.04089, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "SET OPTION USRPRF=*OWNER", "bbox": {"l": 157.52185, "t": 497.47507, "r": 281.68927, "b": 505.98581, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "USER = ALICE", "bbox": {"l": 148.4301, "t": 521.36493, "r": 201.65666, "b": 529.87567, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "CURRENT USER = JOE", "bbox": {"l": 148.4301, "t": 533.30984, "r": 234.57686999999999, "b": 541.82059, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "USER = ALICE", "bbox": {"l": 138.476, "t": 566.15842, "r": 191.70256, "b": 574.66917, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "CURRENT USER = ALICE", "bbox": {"l": 138.476, "t": 578.10333, "r": 232.56117, "b": 586.61409, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 344.5751037597656, "t": 754.7044067382812, "r": 523.60162, "b": 764.0689086914062, "coord_origin": "TOPLEFT"}, "confidence": 0.9557498693466187, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 536.0416870117188, "t": 754.2877197265625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9130511283874512, "cells": [{"id": 1, "text": "19", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "caption", "bbox": {"l": 135.82176208496094, "t": 70.68284606933594, "r": 412.20758, "b": 80.81541442871094, "coord_origin": "TOPLEFT"}, "confidence": 0.7875164747238159, "cells": [{"id": 2, "text": "Table 3-1 summarizes these special registers and their values.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 412.20758, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.8, "t": 92.7220458984375, "r": 372.7710876464844, "b": 101.9398422241211, "coord_origin": "TOPLEFT"}, "confidence": 0.9253708720207214, "cells": [{"id": 3, "text": "Table 3-1 Special registers and their corresponding values", "bbox": {"l": 136.8, "t": 93.49805000000003, "r": 372.60364, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 136.3730926513672, "t": 213.3656463623047, "r": 538.4939, "b": 235.70154000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9466656446456909, "cells": [{"id": 4, "text": "Figure 3-5 shows the difference in the special register values when an adopted authority is ", "bbox": {"l": 136.8, "t": 214.48870999999997, "r": 538.4939, "b": 223.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "used:", "bbox": {"l": 136.8, "t": 226.48852999999997, "r": 161.20995, "b": 235.70154000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 135.5663299560547, "t": 242.545654296875, "r": 411.36139, "b": 252.77870178222656, "coord_origin": "TOPLEFT"}, "confidence": 0.9504424333572388, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 243.67749000000003, "r": 141.78, "b": 252.45227, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "A user connects to the server using the user profile ALICE.", "bbox": {"l": 151.20016, "t": 243.52808000000005, "r": 411.36139, "b": 252.74108999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.5452880859375, "t": 259.2925720214844, "r": 453.2580899999999, "b": 269.72089000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9445974230766296, "cells": [{"id": 8, "text": "GLYPH", "bbox": {"l": 136.8, "t": 260.65729, "r": 141.78, "b": 269.43206999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "USER and CURRENT USER initially have the same value of ALICE.", "bbox": {"l": 151.20016, "t": 260.50787, "r": 453.2580899999999, "b": 269.72089000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.3970947265625, "t": 276.51788330078125, "r": 541.44983, "b": 298.98980712890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9742953777313232, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.8, "t": 277.63707999999997, "r": 141.78, "b": 286.41187, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ALICE calls an SQL procedure that is named proc1, which is owned by user profile JOE ", "bbox": {"l": 151.20016, "t": 277.48767, "r": 541.44983, "b": 286.70068, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "and was created to adopt JOE\u2019s authority when it is called.", "bbox": {"l": 151.20016, "t": 289.4875200000001, "r": 409.82953, "b": 298.7005, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.5677947998047, "t": 305.81854248046875, "r": 547.21674, "b": 340.5078125, "coord_origin": "TOPLEFT"}, "confidence": 0.981132447719574, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 306.67647999999997, "r": 141.78, "b": 315.45126000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "While the procedure is running, the special register USER still contains the value of ALICE ", "bbox": {"l": 151.20016, "t": 306.5271, "r": 547.21674, "b": 315.74008, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "because it excludes any adopted authority. The special register CURRENT USER ", "bbox": {"l": 151.20117, "t": 318.52691999999996, "r": 514.32971, "b": 327.7399, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "contains the value of JOE because it includes any adopted authority.", "bbox": {"l": 151.20117, "t": 330.52673, "r": 453.3249200000001, "b": 339.73972, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.56973266601562, "t": 346.4946594238281, "r": 547.35406, "b": 368.9356384277344, "coord_origin": "TOPLEFT"}, "confidence": 0.9748278260231018, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.80101, "t": 347.65591, "r": 141.78101, "b": 356.43069, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "When proc1 ends, the session reverts to its original state with both USER and CURRENT ", "bbox": {"l": 151.20117, "t": 347.50653, "r": 547.35406, "b": 356.71950999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "USER having the value of ALICE.", "bbox": {"l": 151.20117, "t": 359.50635, "r": 299.57532, "b": 368.71933000000007, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "caption", "bbox": {"l": 136.22442626953125, "t": 596.1806030273438, "r": 342.349853515625, "b": 605.74462890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9274528622627258, "cells": [{"id": 20, "text": "Figure 3-5 Special registers and adopted authority", "bbox": {"l": 136.8, "t": 596.7179, "r": 341.25662, "b": 605.04291, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "section_header", "bbox": {"l": 64.079833984375, "t": 624.3213500976562, "r": 247.02536, "b": 637.8447875976562, "coord_origin": "TOPLEFT"}, "confidence": 0.9659212827682495, "cells": [{"id": 21, "text": "3.2.2", "bbox": {"l": 64.800003, "t": 625.55472, "r": 94.20356, "b": 637.54272, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Built-in global variables", "bbox": {"l": 97.879005, "t": 625.55472, "r": 247.02536, "b": 637.54272, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 136.3346710205078, "t": 650.7590942382812, "r": 518.00116, "b": 672.92153, "coord_origin": "TOPLEFT"}, "confidence": 0.9696776866912842, "cells": [{"id": 23, "text": "Built-in global variables are provided with the database manager and are used in SQL ", "bbox": {"l": 136.8, "t": 651.70872, "r": 518.00116, "b": 660.92172, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "statements to retrieve scalar values that are associated with the variables.", "bbox": {"l": 136.8, "t": 663.70853, "r": 462.81759999999997, "b": 672.92153, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 136.17970275878906, "t": 684.6286010742188, "r": 532.3385, "b": 719.0675659179688, "coord_origin": "TOPLEFT"}, "confidence": 0.9783982038497925, "cells": [{"id": 25, "text": "IBM DB2 for i supports nine different built-in global variables that are read only and ", "bbox": {"l": 136.8, "t": 685.7281, "r": 504.44669, "b": 694.941101, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "maintained by the system. These global variables can be used to identify attributes of the ", "bbox": {"l": 136.8, "t": 697.727905, "r": 532.3385, "b": 706.94091, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "database connection and used as part of the RCAC logic.", "bbox": {"l": 136.8, "t": 709.727715, "r": 391.38257, "b": 718.94072, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "table", "bbox": {"l": 134.54624938964844, "t": 103.41889190673828, "r": 542.0460815429688, "b": 204.2716064453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9731298685073853, "cells": [{"id": 28, "text": "Special register", "bbox": {"l": 142.8, "t": 110.53801999999985, "r": 209.67091, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Corresponding value", "bbox": {"l": 230.18912000000003, "t": 110.53801999999985, "r": 319.93527, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "USER or", "bbox": {"l": 142.80002, "t": 129.49834999999996, "r": 178.26361, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "SESSION_USER", "bbox": {"l": 142.80002, "t": 140.53864, "r": 212.70122, "b": 148.86359000000004, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "The effective user of the thread excluding adopted authority.", "bbox": {"l": 230.21973000000003, "t": 129.49834999999996, "r": 467.99069000000003, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "CURRENT_USER", "bbox": {"l": 142.80003, "t": 159.55835000000002, "r": 216.63962999999998, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "The effective user of the thread including adopted authority. When no adopted ", "bbox": {"l": 230.19814, "t": 159.55835000000002, "r": 535.65082, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "authority is present, this has the same value as USER.", "bbox": {"l": 230.22061, "t": 170.53832999999997, "r": 447.36533, "b": 178.86328000000003, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "SYSTEM_USER", "bbox": {"l": 142.8009, "t": 189.55804, "r": 209.7357, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "The authorization ID that initiated the connection.", "bbox": {"l": 230.2449, "t": 189.55804, "r": 425.64569, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "picture", "bbox": {"l": 135.64837646484375, "t": 384.1737060546875, "r": 301.2367248535156, "b": 594.7566528320312, "coord_origin": "TOPLEFT"}, "confidence": 0.7221464514732361, "cells": [{"id": 39, "text": "Signed on as ALICE", "bbox": {"l": 140.7323, "t": 386.98453, "r": 216.40009, "b": 395.49527, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "USER = ALICE", "bbox": {"l": 138.476, "t": 410.87441999999993, "r": 191.70256, "b": 419.38516, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "CURRENT USER = ALICE", "bbox": {"l": 138.476, "t": 422.81934, "r": 232.56117, "b": 431.33008, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CALL proc1", "bbox": {"l": 138.476, "t": 446.70923000000005, "r": 183.26944, "b": 455.21997, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "P1", "bbox": {"l": 148.4301, "t": 473.58524, "r": 184.17328, "b": 482.09598, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Proc1:", "bbox": {"l": 148.4301, "t": 473.58524, "r": 174.05859, "b": 482.09598, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Owner = JOE", "bbox": {"l": 157.52185, "t": 485.53015, "r": 209.103, "b": 494.04089, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "SET OPTION USRPRF=*OWNER", "bbox": {"l": 157.52185, "t": 497.47507, "r": 281.68927, "b": 505.98581, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "USER = ALICE", "bbox": {"l": 148.4301, "t": 521.36493, "r": 201.65666, "b": 529.87567, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "CURRENT USER = JOE", "bbox": {"l": 148.4301, "t": 533.30984, "r": 234.57686999999999, "b": 541.82059, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "USER = ALICE", "bbox": {"l": 138.476, "t": 566.15842, "r": 191.70256, "b": 574.66917, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "CURRENT USER = ALICE", "bbox": {"l": 138.476, "t": 578.10333, "r": 232.56117, "b": 586.61409, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {"14": {"label": "table", "id": 14, "page_no": 10, "cluster": {"id": 14, "label": "table", "bbox": {"l": 134.54624938964844, "t": 103.41889190673828, "r": 542.0460815429688, "b": 204.2716064453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9731298685073853, "cells": [{"id": 28, "text": "Special register", "bbox": {"l": 142.8, "t": 110.53801999999985, "r": 209.67091, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Corresponding value", "bbox": {"l": 230.18912000000003, "t": 110.53801999999985, "r": 319.93527, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "USER or", "bbox": {"l": 142.80002, "t": 129.49834999999996, "r": 178.26361, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "SESSION_USER", "bbox": {"l": 142.80002, "t": 140.53864, "r": 212.70122, "b": 148.86359000000004, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "The effective user of the thread excluding adopted authority.", "bbox": {"l": 230.21973000000003, "t": 129.49834999999996, "r": 467.99069000000003, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "CURRENT_USER", "bbox": {"l": 142.80003, "t": 159.55835000000002, "r": 216.63962999999998, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "The effective user of the thread including adopted authority. When no adopted ", "bbox": {"l": 230.19814, "t": 159.55835000000002, "r": 535.65082, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "authority is present, this has the same value as USER.", "bbox": {"l": 230.22061, "t": 170.53832999999997, "r": 447.36533, "b": 178.86328000000003, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "SYSTEM_USER", "bbox": {"l": 142.8009, "t": 189.55804, "r": 209.7357, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "The authorization ID that initiated the connection.", "bbox": {"l": 230.2449, "t": 189.55804, "r": 425.64569, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl"], "num_rows": 4, "num_cols": 2, "table_cells": [{"bbox": {"l": 142.8, "t": 110.53801999999985, "r": 209.67091, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Special register", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 230.18912000000003, "t": 110.53801999999985, "r": 319.93527, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Corresponding value", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 142.80002, "t": 129.49834999999996, "r": 212.70122, "b": 148.86359000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USER or SESSION_USER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 230.21973000000003, "t": 129.49834999999996, "r": 467.99069000000003, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "The effective user of the thread excluding adopted authority.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.80003, "t": 159.55835000000002, "r": 216.63962999999998, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CURRENT_USER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 230.19814, "t": 159.55835000000002, "r": 535.65082, "b": 178.86328000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "The effective user of the thread including adopted authority. When no adopted authority is present, this has the same value as USER.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8009, "t": 189.55804, "r": 209.7357, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "SYSTEM_USER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 230.2449, "t": 189.55804, "r": 425.64569, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "The authorization ID that initiated the connection.", "column_header": false, "row_header": false, "row_section": false}]}}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 10, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.5751037597656, "t": 754.7044067382812, "r": 523.60162, "b": 764.0689086914062, "coord_origin": "TOPLEFT"}, "confidence": 0.9557498693466187, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 10, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 536.0416870117188, "t": 754.2877197265625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9130511283874512, "cells": [{"id": 1, "text": "19", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "19"}, {"label": "caption", "id": 2, "page_no": 10, "cluster": {"id": 2, "label": "caption", "bbox": {"l": 135.82176208496094, "t": 70.68284606933594, "r": 412.20758, "b": 80.81541442871094, "coord_origin": "TOPLEFT"}, "confidence": 0.7875164747238159, "cells": [{"id": 2, "text": "Table 3-1 summarizes these special registers and their values.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 412.20758, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}]}, "text": "Table 3-1 summarizes these special registers and their values."}, {"label": "caption", "id": 3, "page_no": 10, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.8, "t": 92.7220458984375, "r": 372.7710876464844, "b": 101.9398422241211, "coord_origin": "TOPLEFT"}, "confidence": 0.9253708720207214, "cells": [{"id": 3, "text": "Table 3-1 Special registers and their corresponding values", "bbox": {"l": 136.8, "t": 93.49805000000003, "r": 372.60364, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}}]}, "text": "Table 3-1 Special registers and their corresponding values"}, {"label": "text", "id": 4, "page_no": 10, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.3730926513672, "t": 213.3656463623047, "r": 538.4939, "b": 235.70154000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9466656446456909, "cells": [{"id": 4, "text": "Figure 3-5 shows the difference in the special register values when an adopted authority is ", "bbox": {"l": 136.8, "t": 214.48870999999997, "r": 538.4939, "b": 223.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "used:", "bbox": {"l": 136.8, "t": 226.48852999999997, "r": 161.20995, "b": 235.70154000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-5 shows the difference in the special register values when an adopted authority is used:"}, {"label": "list_item", "id": 5, "page_no": 10, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.5663299560547, "t": 242.545654296875, "r": 411.36139, "b": 252.77870178222656, "coord_origin": "TOPLEFT"}, "confidence": 0.9504424333572388, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 243.67749000000003, "r": 141.78, "b": 252.45227, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "A user connects to the server using the user profile ALICE.", "bbox": {"l": 151.20016, "t": 243.52808000000005, "r": 411.36139, "b": 252.74108999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH A user connects to the server using the user profile ALICE."}, {"label": "list_item", "id": 6, "page_no": 10, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.5452880859375, "t": 259.2925720214844, "r": 453.2580899999999, "b": 269.72089000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9445974230766296, "cells": [{"id": 8, "text": "GLYPH", "bbox": {"l": 136.8, "t": 260.65729, "r": 141.78, "b": 269.43206999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "USER and CURRENT USER initially have the same value of ALICE.", "bbox": {"l": 151.20016, "t": 260.50787, "r": 453.2580899999999, "b": 269.72089000000005, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH USER and CURRENT USER initially have the same value of ALICE."}, {"label": "list_item", "id": 7, "page_no": 10, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.3970947265625, "t": 276.51788330078125, "r": 541.44983, "b": 298.98980712890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9742953777313232, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.8, "t": 277.63707999999997, "r": 141.78, "b": 286.41187, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ALICE calls an SQL procedure that is named proc1, which is owned by user profile JOE ", "bbox": {"l": 151.20016, "t": 277.48767, "r": 541.44983, "b": 286.70068, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "and was created to adopt JOE\u2019s authority when it is called.", "bbox": {"l": 151.20016, "t": 289.4875200000001, "r": 409.82953, "b": 298.7005, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH ALICE calls an SQL procedure that is named proc1, which is owned by user profile JOE and was created to adopt JOE\u2019s authority when it is called."}, {"label": "list_item", "id": 8, "page_no": 10, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.5677947998047, "t": 305.81854248046875, "r": 547.21674, "b": 340.5078125, "coord_origin": "TOPLEFT"}, "confidence": 0.981132447719574, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 306.67647999999997, "r": 141.78, "b": 315.45126000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "While the procedure is running, the special register USER still contains the value of ALICE ", "bbox": {"l": 151.20016, "t": 306.5271, "r": 547.21674, "b": 315.74008, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "because it excludes any adopted authority. The special register CURRENT USER ", "bbox": {"l": 151.20117, "t": 318.52691999999996, "r": 514.32971, "b": 327.7399, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "contains the value of JOE because it includes any adopted authority.", "bbox": {"l": 151.20117, "t": 330.52673, "r": 453.3249200000001, "b": 339.73972, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH While the procedure is running, the special register USER still contains the value of ALICE because it excludes any adopted authority. The special register CURRENT USER contains the value of JOE because it includes any adopted authority."}, {"label": "list_item", "id": 9, "page_no": 10, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.56973266601562, "t": 346.4946594238281, "r": 547.35406, "b": 368.9356384277344, "coord_origin": "TOPLEFT"}, "confidence": 0.9748278260231018, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.80101, "t": 347.65591, "r": 141.78101, "b": 356.43069, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "When proc1 ends, the session reverts to its original state with both USER and CURRENT ", "bbox": {"l": 151.20117, "t": 347.50653, "r": 547.35406, "b": 356.71950999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "USER having the value of ALICE.", "bbox": {"l": 151.20117, "t": 359.50635, "r": 299.57532, "b": 368.71933000000007, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH When proc1 ends, the session reverts to its original state with both USER and CURRENT USER having the value of ALICE."}, {"label": "caption", "id": 10, "page_no": 10, "cluster": {"id": 10, "label": "caption", "bbox": {"l": 136.22442626953125, "t": 596.1806030273438, "r": 342.349853515625, "b": 605.74462890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9274528622627258, "cells": [{"id": 20, "text": "Figure 3-5 Special registers and adopted authority", "bbox": {"l": 136.8, "t": 596.7179, "r": 341.25662, "b": 605.04291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-5 Special registers and adopted authority"}, {"label": "section_header", "id": 11, "page_no": 10, "cluster": {"id": 11, "label": "section_header", "bbox": {"l": 64.079833984375, "t": 624.3213500976562, "r": 247.02536, "b": 637.8447875976562, "coord_origin": "TOPLEFT"}, "confidence": 0.9659212827682495, "cells": [{"id": 21, "text": "3.2.2", "bbox": {"l": 64.800003, "t": 625.55472, "r": 94.20356, "b": 637.54272, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Built-in global variables", "bbox": {"l": 97.879005, "t": 625.55472, "r": 247.02536, "b": 637.54272, "coord_origin": "TOPLEFT"}}]}, "text": "3.2.2 Built-in global variables"}, {"label": "text", "id": 12, "page_no": 10, "cluster": {"id": 12, "label": "text", "bbox": {"l": 136.3346710205078, "t": 650.7590942382812, "r": 518.00116, "b": 672.92153, "coord_origin": "TOPLEFT"}, "confidence": 0.9696776866912842, "cells": [{"id": 23, "text": "Built-in global variables are provided with the database manager and are used in SQL ", "bbox": {"l": 136.8, "t": 651.70872, "r": 518.00116, "b": 660.92172, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "statements to retrieve scalar values that are associated with the variables.", "bbox": {"l": 136.8, "t": 663.70853, "r": 462.81759999999997, "b": 672.92153, "coord_origin": "TOPLEFT"}}]}, "text": "Built-in global variables are provided with the database manager and are used in SQL statements to retrieve scalar values that are associated with the variables."}, {"label": "text", "id": 13, "page_no": 10, "cluster": {"id": 13, "label": "text", "bbox": {"l": 136.17970275878906, "t": 684.6286010742188, "r": 532.3385, "b": 719.0675659179688, "coord_origin": "TOPLEFT"}, "confidence": 0.9783982038497925, "cells": [{"id": 25, "text": "IBM DB2 for i supports nine different built-in global variables that are read only and ", "bbox": {"l": 136.8, "t": 685.7281, "r": 504.44669, "b": 694.941101, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "maintained by the system. These global variables can be used to identify attributes of the ", "bbox": {"l": 136.8, "t": 697.727905, "r": 532.3385, "b": 706.94091, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "database connection and used as part of the RCAC logic.", "bbox": {"l": 136.8, "t": 709.727715, "r": 391.38257, "b": 718.94072, "coord_origin": "TOPLEFT"}}]}, "text": "IBM DB2 for i supports nine different built-in global variables that are read only and maintained by the system. These global variables can be used to identify attributes of the database connection and used as part of the RCAC logic."}, {"label": "table", "id": 14, "page_no": 10, "cluster": {"id": 14, "label": "table", "bbox": {"l": 134.54624938964844, "t": 103.41889190673828, "r": 542.0460815429688, "b": 204.2716064453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9731298685073853, "cells": [{"id": 28, "text": "Special register", "bbox": {"l": 142.8, "t": 110.53801999999985, "r": 209.67091, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Corresponding value", "bbox": {"l": 230.18912000000003, "t": 110.53801999999985, "r": 319.93527, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "USER or", "bbox": {"l": 142.80002, "t": 129.49834999999996, "r": 178.26361, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "SESSION_USER", "bbox": {"l": 142.80002, "t": 140.53864, "r": 212.70122, "b": 148.86359000000004, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "The effective user of the thread excluding adopted authority.", "bbox": {"l": 230.21973000000003, "t": 129.49834999999996, "r": 467.99069000000003, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "CURRENT_USER", "bbox": {"l": 142.80003, "t": 159.55835000000002, "r": 216.63962999999998, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "The effective user of the thread including adopted authority. When no adopted ", "bbox": {"l": 230.19814, "t": 159.55835000000002, "r": 535.65082, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "authority is present, this has the same value as USER.", "bbox": {"l": 230.22061, "t": 170.53832999999997, "r": 447.36533, "b": 178.86328000000003, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "SYSTEM_USER", "bbox": {"l": 142.8009, "t": 189.55804, "r": 209.7357, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "The authorization ID that initiated the connection.", "bbox": {"l": 230.2449, "t": 189.55804, "r": 425.64569, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl"], "num_rows": 4, "num_cols": 2, "table_cells": [{"bbox": {"l": 142.8, "t": 110.53801999999985, "r": 209.67091, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Special register", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 230.18912000000003, "t": 110.53801999999985, "r": 319.93527, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Corresponding value", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 142.80002, "t": 129.49834999999996, "r": 212.70122, "b": 148.86359000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USER or SESSION_USER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 230.21973000000003, "t": 129.49834999999996, "r": 467.99069000000003, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "The effective user of the thread excluding adopted authority.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.80003, "t": 159.55835000000002, "r": 216.63962999999998, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CURRENT_USER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 230.19814, "t": 159.55835000000002, "r": 535.65082, "b": 178.86328000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "The effective user of the thread including adopted authority. When no adopted authority is present, this has the same value as USER.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8009, "t": 189.55804, "r": 209.7357, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "SYSTEM_USER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 230.2449, "t": 189.55804, "r": 425.64569, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "The authorization ID that initiated the connection.", "column_header": false, "row_header": false, "row_section": false}]}, {"label": "picture", "id": 15, "page_no": 10, "cluster": {"id": 15, "label": "picture", "bbox": {"l": 135.64837646484375, "t": 384.1737060546875, "r": 301.2367248535156, "b": 594.7566528320312, "coord_origin": "TOPLEFT"}, "confidence": 0.7221464514732361, "cells": [{"id": 39, "text": "Signed on as ALICE", "bbox": {"l": 140.7323, "t": 386.98453, "r": 216.40009, "b": 395.49527, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "USER = ALICE", "bbox": {"l": 138.476, "t": 410.87441999999993, "r": 191.70256, "b": 419.38516, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "CURRENT USER = ALICE", "bbox": {"l": 138.476, "t": 422.81934, "r": 232.56117, "b": 431.33008, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CALL proc1", "bbox": {"l": 138.476, "t": 446.70923000000005, "r": 183.26944, "b": 455.21997, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "P1", "bbox": {"l": 148.4301, "t": 473.58524, "r": 184.17328, "b": 482.09598, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Proc1:", "bbox": {"l": 148.4301, "t": 473.58524, "r": 174.05859, "b": 482.09598, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Owner = JOE", "bbox": {"l": 157.52185, "t": 485.53015, "r": 209.103, "b": 494.04089, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "SET OPTION USRPRF=*OWNER", "bbox": {"l": 157.52185, "t": 497.47507, "r": 281.68927, "b": 505.98581, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "USER = ALICE", "bbox": {"l": 148.4301, "t": 521.36493, "r": 201.65666, "b": 529.87567, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "CURRENT USER = JOE", "bbox": {"l": 148.4301, "t": 533.30984, "r": 234.57686999999999, "b": 541.82059, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "USER = ALICE", "bbox": {"l": 138.476, "t": 566.15842, "r": 191.70256, "b": 574.66917, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "CURRENT USER = ALICE", "bbox": {"l": 138.476, "t": 578.10333, "r": 232.56117, "b": 586.61409, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "caption", "id": 2, "page_no": 10, "cluster": {"id": 2, "label": "caption", "bbox": {"l": 135.82176208496094, "t": 70.68284606933594, "r": 412.20758, "b": 80.81541442871094, "coord_origin": "TOPLEFT"}, "confidence": 0.7875164747238159, "cells": [{"id": 2, "text": "Table 3-1 summarizes these special registers and their values.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 412.20758, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}]}, "text": "Table 3-1 summarizes these special registers and their values."}, {"label": "caption", "id": 3, "page_no": 10, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.8, "t": 92.7220458984375, "r": 372.7710876464844, "b": 101.9398422241211, "coord_origin": "TOPLEFT"}, "confidence": 0.9253708720207214, "cells": [{"id": 3, "text": "Table 3-1 Special registers and their corresponding values", "bbox": {"l": 136.8, "t": 93.49805000000003, "r": 372.60364, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}}]}, "text": "Table 3-1 Special registers and their corresponding values"}, {"label": "text", "id": 4, "page_no": 10, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.3730926513672, "t": 213.3656463623047, "r": 538.4939, "b": 235.70154000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9466656446456909, "cells": [{"id": 4, "text": "Figure 3-5 shows the difference in the special register values when an adopted authority is ", "bbox": {"l": 136.8, "t": 214.48870999999997, "r": 538.4939, "b": 223.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "used:", "bbox": {"l": 136.8, "t": 226.48852999999997, "r": 161.20995, "b": 235.70154000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-5 shows the difference in the special register values when an adopted authority is used:"}, {"label": "list_item", "id": 5, "page_no": 10, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.5663299560547, "t": 242.545654296875, "r": 411.36139, "b": 252.77870178222656, "coord_origin": "TOPLEFT"}, "confidence": 0.9504424333572388, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 243.67749000000003, "r": 141.78, "b": 252.45227, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "A user connects to the server using the user profile ALICE.", "bbox": {"l": 151.20016, "t": 243.52808000000005, "r": 411.36139, "b": 252.74108999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH A user connects to the server using the user profile ALICE."}, {"label": "list_item", "id": 6, "page_no": 10, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.5452880859375, "t": 259.2925720214844, "r": 453.2580899999999, "b": 269.72089000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9445974230766296, "cells": [{"id": 8, "text": "GLYPH", "bbox": {"l": 136.8, "t": 260.65729, "r": 141.78, "b": 269.43206999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "USER and CURRENT USER initially have the same value of ALICE.", "bbox": {"l": 151.20016, "t": 260.50787, "r": 453.2580899999999, "b": 269.72089000000005, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH USER and CURRENT USER initially have the same value of ALICE."}, {"label": "list_item", "id": 7, "page_no": 10, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.3970947265625, "t": 276.51788330078125, "r": 541.44983, "b": 298.98980712890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9742953777313232, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.8, "t": 277.63707999999997, "r": 141.78, "b": 286.41187, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ALICE calls an SQL procedure that is named proc1, which is owned by user profile JOE ", "bbox": {"l": 151.20016, "t": 277.48767, "r": 541.44983, "b": 286.70068, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "and was created to adopt JOE\u2019s authority when it is called.", "bbox": {"l": 151.20016, "t": 289.4875200000001, "r": 409.82953, "b": 298.7005, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH ALICE calls an SQL procedure that is named proc1, which is owned by user profile JOE and was created to adopt JOE\u2019s authority when it is called."}, {"label": "list_item", "id": 8, "page_no": 10, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.5677947998047, "t": 305.81854248046875, "r": 547.21674, "b": 340.5078125, "coord_origin": "TOPLEFT"}, "confidence": 0.981132447719574, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 306.67647999999997, "r": 141.78, "b": 315.45126000000005, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "While the procedure is running, the special register USER still contains the value of ALICE ", "bbox": {"l": 151.20016, "t": 306.5271, "r": 547.21674, "b": 315.74008, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "because it excludes any adopted authority. The special register CURRENT USER ", "bbox": {"l": 151.20117, "t": 318.52691999999996, "r": 514.32971, "b": 327.7399, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "contains the value of JOE because it includes any adopted authority.", "bbox": {"l": 151.20117, "t": 330.52673, "r": 453.3249200000001, "b": 339.73972, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH While the procedure is running, the special register USER still contains the value of ALICE because it excludes any adopted authority. The special register CURRENT USER contains the value of JOE because it includes any adopted authority."}, {"label": "list_item", "id": 9, "page_no": 10, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.56973266601562, "t": 346.4946594238281, "r": 547.35406, "b": 368.9356384277344, "coord_origin": "TOPLEFT"}, "confidence": 0.9748278260231018, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.80101, "t": 347.65591, "r": 141.78101, "b": 356.43069, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "When proc1 ends, the session reverts to its original state with both USER and CURRENT ", "bbox": {"l": 151.20117, "t": 347.50653, "r": 547.35406, "b": 356.71950999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "USER having the value of ALICE.", "bbox": {"l": 151.20117, "t": 359.50635, "r": 299.57532, "b": 368.71933000000007, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH When proc1 ends, the session reverts to its original state with both USER and CURRENT USER having the value of ALICE."}, {"label": "caption", "id": 10, "page_no": 10, "cluster": {"id": 10, "label": "caption", "bbox": {"l": 136.22442626953125, "t": 596.1806030273438, "r": 342.349853515625, "b": 605.74462890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9274528622627258, "cells": [{"id": 20, "text": "Figure 3-5 Special registers and adopted authority", "bbox": {"l": 136.8, "t": 596.7179, "r": 341.25662, "b": 605.04291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-5 Special registers and adopted authority"}, {"label": "section_header", "id": 11, "page_no": 10, "cluster": {"id": 11, "label": "section_header", "bbox": {"l": 64.079833984375, "t": 624.3213500976562, "r": 247.02536, "b": 637.8447875976562, "coord_origin": "TOPLEFT"}, "confidence": 0.9659212827682495, "cells": [{"id": 21, "text": "3.2.2", "bbox": {"l": 64.800003, "t": 625.55472, "r": 94.20356, "b": 637.54272, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Built-in global variables", "bbox": {"l": 97.879005, "t": 625.55472, "r": 247.02536, "b": 637.54272, "coord_origin": "TOPLEFT"}}]}, "text": "3.2.2 Built-in global variables"}, {"label": "text", "id": 12, "page_no": 10, "cluster": {"id": 12, "label": "text", "bbox": {"l": 136.3346710205078, "t": 650.7590942382812, "r": 518.00116, "b": 672.92153, "coord_origin": "TOPLEFT"}, "confidence": 0.9696776866912842, "cells": [{"id": 23, "text": "Built-in global variables are provided with the database manager and are used in SQL ", "bbox": {"l": 136.8, "t": 651.70872, "r": 518.00116, "b": 660.92172, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "statements to retrieve scalar values that are associated with the variables.", "bbox": {"l": 136.8, "t": 663.70853, "r": 462.81759999999997, "b": 672.92153, "coord_origin": "TOPLEFT"}}]}, "text": "Built-in global variables are provided with the database manager and are used in SQL statements to retrieve scalar values that are associated with the variables."}, {"label": "text", "id": 13, "page_no": 10, "cluster": {"id": 13, "label": "text", "bbox": {"l": 136.17970275878906, "t": 684.6286010742188, "r": 532.3385, "b": 719.0675659179688, "coord_origin": "TOPLEFT"}, "confidence": 0.9783982038497925, "cells": [{"id": 25, "text": "IBM DB2 for i supports nine different built-in global variables that are read only and ", "bbox": {"l": 136.8, "t": 685.7281, "r": 504.44669, "b": 694.941101, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "maintained by the system. These global variables can be used to identify attributes of the ", "bbox": {"l": 136.8, "t": 697.727905, "r": 532.3385, "b": 706.94091, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "database connection and used as part of the RCAC logic.", "bbox": {"l": 136.8, "t": 709.727715, "r": 391.38257, "b": 718.94072, "coord_origin": "TOPLEFT"}}]}, "text": "IBM DB2 for i supports nine different built-in global variables that are read only and maintained by the system. These global variables can be used to identify attributes of the database connection and used as part of the RCAC logic."}, {"label": "table", "id": 14, "page_no": 10, "cluster": {"id": 14, "label": "table", "bbox": {"l": 134.54624938964844, "t": 103.41889190673828, "r": 542.0460815429688, "b": 204.2716064453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9731298685073853, "cells": [{"id": 28, "text": "Special register", "bbox": {"l": 142.8, "t": 110.53801999999985, "r": 209.67091, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Corresponding value", "bbox": {"l": 230.18912000000003, "t": 110.53801999999985, "r": 319.93527, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "USER or", "bbox": {"l": 142.80002, "t": 129.49834999999996, "r": 178.26361, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "SESSION_USER", "bbox": {"l": 142.80002, "t": 140.53864, "r": 212.70122, "b": 148.86359000000004, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "The effective user of the thread excluding adopted authority.", "bbox": {"l": 230.21973000000003, "t": 129.49834999999996, "r": 467.99069000000003, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "CURRENT_USER", "bbox": {"l": 142.80003, "t": 159.55835000000002, "r": 216.63962999999998, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "The effective user of the thread including adopted authority. When no adopted ", "bbox": {"l": 230.19814, "t": 159.55835000000002, "r": 535.65082, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "authority is present, this has the same value as USER.", "bbox": {"l": 230.22061, "t": 170.53832999999997, "r": 447.36533, "b": 178.86328000000003, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "SYSTEM_USER", "bbox": {"l": 142.8009, "t": 189.55804, "r": 209.7357, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "The authorization ID that initiated the connection.", "bbox": {"l": 230.2449, "t": 189.55804, "r": 425.64569, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl", "fcel", "fcel", "nl"], "num_rows": 4, "num_cols": 2, "table_cells": [{"bbox": {"l": 142.8, "t": 110.53801999999985, "r": 209.67091, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Special register", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 230.18912000000003, "t": 110.53801999999985, "r": 319.93527, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Corresponding value", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 142.80002, "t": 129.49834999999996, "r": 212.70122, "b": 148.86359000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "USER or SESSION_USER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 230.21973000000003, "t": 129.49834999999996, "r": 467.99069000000003, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "The effective user of the thread excluding adopted authority.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.80003, "t": 159.55835000000002, "r": 216.63962999999998, "b": 167.88329999999996, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CURRENT_USER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 230.19814, "t": 159.55835000000002, "r": 535.65082, "b": 178.86328000000003, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "The effective user of the thread including adopted authority. When no adopted authority is present, this has the same value as USER.", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 142.8009, "t": 189.55804, "r": 209.7357, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "SYSTEM_USER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 230.2449, "t": 189.55804, "r": 425.64569, "b": 197.88300000000004, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "The authorization ID that initiated the connection.", "column_header": false, "row_header": false, "row_section": false}]}, {"label": "picture", "id": 15, "page_no": 10, "cluster": {"id": 15, "label": "picture", "bbox": {"l": 135.64837646484375, "t": 384.1737060546875, "r": 301.2367248535156, "b": 594.7566528320312, "coord_origin": "TOPLEFT"}, "confidence": 0.7221464514732361, "cells": [{"id": 39, "text": "Signed on as ALICE", "bbox": {"l": 140.7323, "t": 386.98453, "r": 216.40009, "b": 395.49527, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "USER = ALICE", "bbox": {"l": 138.476, "t": 410.87441999999993, "r": 191.70256, "b": 419.38516, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "CURRENT USER = ALICE", "bbox": {"l": 138.476, "t": 422.81934, "r": 232.56117, "b": 431.33008, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CALL proc1", "bbox": {"l": 138.476, "t": 446.70923000000005, "r": 183.26944, "b": 455.21997, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "P1", "bbox": {"l": 148.4301, "t": 473.58524, "r": 184.17328, "b": 482.09598, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Proc1:", "bbox": {"l": 148.4301, "t": 473.58524, "r": 174.05859, "b": 482.09598, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Owner = JOE", "bbox": {"l": 157.52185, "t": 485.53015, "r": 209.103, "b": 494.04089, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "SET OPTION USRPRF=*OWNER", "bbox": {"l": 157.52185, "t": 497.47507, "r": 281.68927, "b": 505.98581, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "USER = ALICE", "bbox": {"l": 148.4301, "t": 521.36493, "r": 201.65666, "b": 529.87567, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "CURRENT USER = JOE", "bbox": {"l": 148.4301, "t": 533.30984, "r": 234.57686999999999, "b": 541.82059, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "USER = ALICE", "bbox": {"l": 138.476, "t": 566.15842, "r": 191.70256, "b": 574.66917, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "CURRENT USER = ALICE", "bbox": {"l": 138.476, "t": 578.10333, "r": 232.56117, "b": 586.61409, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 10, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.5751037597656, "t": 754.7044067382812, "r": 523.60162, "b": 764.0689086914062, "coord_origin": "TOPLEFT"}, "confidence": 0.9557498693466187, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 10, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 536.0416870117188, "t": 754.2877197265625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9130511283874512, "cells": [{"id": 1, "text": "19", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "19"}]}}, {"page_no": 11, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "20 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Table 3-2 lists the nine built-in global variables.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 342.54773, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Table 3-2 Built-in global variables", "bbox": {"l": 64.800003, "t": 93.49805000000003, "r": 201.18147, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "3.3", "bbox": {"l": 64.800003, "t": 322.20071, "r": 87.318192, "b": 336.96371000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "VERIFY_GROUP_FOR_USER function", "bbox": {"l": 91.821815, "t": 322.20071, "r": 384.36389, "b": 336.96371000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "The VERIFY_GROUP_FOR_USER function was added in IBM i 7.2. Although it is primarily ", "bbox": {"l": 136.8, "t": 354.52872, "r": 542.83539, "b": 363.7417, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "intended for use with RCAC permissions and masks, it can be used in other SQL statements. ", "bbox": {"l": 136.8, "t": 366.52853, "r": 547.14783, "b": 375.74152, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "The first parameter must be one of these three special registers: SESSION_USER, USER, or ", "bbox": {"l": 136.8, "t": 378.52835, "r": 547.15106, "b": 387.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CURRENT_USER. The second and subsequent parameters are a list of user or group ", "bbox": {"l": 136.80002, "t": 390.52817, "r": 520.62958, "b": 399.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "profiles. Each of these values must be 1 - 10 characters in length. These values are not ", "bbox": {"l": 136.80002, "t": 402.52798, "r": 524.88824, "b": 411.74097, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "validated for their existence, which means that you can specify the names of user profiles that ", "bbox": {"l": 136.80002, "t": 414.5278, "r": 547.23474, "b": 423.7407799999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "do not exist without receiving any kind of error.", "bbox": {"l": 136.80002, "t": 426.52762, "r": 342.04672, "b": 435.74060000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "If a special register value is in the list of user profiles or it is a member of a group profile ", "bbox": {"l": 136.80002, "t": 448.48743, "r": 525.1474, "b": 457.70041, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "included in the list, the function returns a long integer value of 1. Otherwise, it returns a value ", "bbox": {"l": 136.80002, "t": 460.48724, "r": 547.25739, "b": 469.70023, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "of 0. It never returns the null value.", "bbox": {"l": 136.80002, "t": 472.48706, "r": 289.84335, "b": 481.70004, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Here is an example of using the VERIFY_GROUP_FOR_USER function:", "bbox": {"l": 136.80002, "t": 494.50662, "r": 458.44525000000004, "b": 503.7196, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "1.", "bbox": {"l": 136.80002, "t": 511.5462, "r": 145.09804, "b": 520.75919, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "There are user profiles for MGR, JANE, JUDY, and TONY.", "bbox": {"l": 147.86403, "t": 511.5462, "r": 406.07751, "b": 520.75919, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "2.", "bbox": {"l": 136.80002, "t": 528.5260000000001, "r": 145.23297, "b": 537.739, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "The user profile JANE specifies a group profile of MGR.", "bbox": {"l": 148.04396, "t": 528.5260000000001, "r": 396.98816, "b": 537.739, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "3.", "bbox": {"l": 136.80002, "t": 545.50581, "r": 145.18951, "b": 554.71881, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "If a user is connected to the server using user profile JANE, all of the following function ", "bbox": {"l": 147.98601, "t": 545.50581, "r": 536.5686, "b": 554.71881, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "invocations return a value of 1:", "bbox": {"l": 151.20018, "t": 557.50562, "r": 286.84641, "b": 566.71861, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'MGR')", "bbox": {"l": 151.20018, "t": 574.69458, "r": 366.05725, "b": 583.46933, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR')", "bbox": {"l": 151.20018, "t": 586.69438, "r": 406.01678, "b": 595.46913, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR', 'STEVE')", "bbox": {"l": 151.20018, "t": 598.69418, "r": 451.01605, "b": 607.46893, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "The following function invocation returns a value of 0:", "bbox": {"l": 151.20018, "t": 615.5246, "r": 385.87271, "b": 624.73759, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JUDY', 'TONY')", "bbox": {"l": 151.20018, "t": 632.65381, "r": 411.05655, "b": 641.4285600000001, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Global variable", "bbox": {"l": 70.800003, "t": 110.53801999999985, "r": 134.99071, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Type", "bbox": {"l": 202.8894, "t": 110.53801999999985, "r": 223.34641, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Description", "bbox": {"l": 281.8248, "t": 110.53801999999985, "r": 331.3428, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CLIENT_HOST", "bbox": {"l": 70.800003, "t": 129.49834999999996, "r": 132.7209, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "VARCHAR(255)", "bbox": {"l": 202.89029, "t": 129.49834999999996, "r": 267.07651, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Host name of the current client as returned by the system", "bbox": {"l": 281.84732, "t": 129.49834999999996, "r": 510.17548, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "CLIENT_IPADDR", "bbox": {"l": 70.800018, "t": 148.51806999999997, "r": 140.66522, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "VARCHAR(128)", "bbox": {"l": 202.87231, "t": 148.51806999999997, "r": 267.07739, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "IP address of the current client as returned by the system", "bbox": {"l": 281.84549, "t": 148.51806999999997, "r": 509.60583, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "CLIENT_PORT ", "bbox": {"l": 70.800018, "t": 167.53778, "r": 134.98264, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "INTEGER", "bbox": {"l": 202.90294, "t": 167.53778, "r": 242.80084, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Port used by the current client to communicate with the server", "bbox": {"l": 281.79785, "t": 167.53778, "r": 527.59222, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "PACKAGE_NAME", "bbox": {"l": 70.800018, "t": 186.5575, "r": 143.50925, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "VARCHAR(128)", "bbox": {"l": 202.80576, "t": 186.5575, "r": 267.06937, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Name of the currently running package", "bbox": {"l": 281.85187, "t": 186.5575, "r": 436.57259999999997, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "PACKAGE_SCHEMA", "bbox": {"l": 70.800018, "t": 205.51782000000003, "r": 156.01654, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "VARCHAR(128)", "bbox": {"l": 202.83545, "t": 205.51782000000003, "r": 267.08646, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Schema name of the currently running package", "bbox": {"l": 281.87076, "t": 205.51782000000003, "r": 470.44678, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "PACKAGE_VERSION", "bbox": {"l": 70.800018, "t": 224.53754000000004, "r": 157.89932, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "VARCHAR(64)", "bbox": {"l": 202.72472, "t": 224.53754000000004, "r": 261.98254, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Version identifier of the currently running package", "bbox": {"l": 281.74924, "t": 224.53754000000004, "r": 478.8438100000001, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ROUTINE_SCHEMA", "bbox": {"l": 70.800018, "t": 243.55724999999995, "r": 154.41992, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "VARCHAR(128)", "bbox": {"l": 202.79312, "t": 243.55724999999995, "r": 267.09274, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Schema name of the currently running routine", "bbox": {"l": 281.87164, "t": 243.55724999999995, "r": 464.26022, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ROUTINE_SPECIFIC_NAME", "bbox": {"l": 70.800018, "t": 262.51757999999995, "r": 188.43991, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "VARCHAR(128)", "bbox": {"l": 202.84441, "t": 262.51757999999995, "r": 267.03693, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Name of the currently running routine", "bbox": {"l": 281.80682, "t": 262.51757999999995, "r": 430.40045, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "ROUTINE_TYPE", "bbox": {"l": 70.800034, "t": 281.53726, "r": 139.43135, "b": 289.86227, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "CHAR(1)", "bbox": {"l": 202.74635, "t": 281.53726, "r": 239.28996000000004, "b": 289.86227, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Type of the currently running routine", "bbox": {"l": 281.79065, "t": 281.53726, "r": 425.09131, "b": 289.86227, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.85088348388672, "t": 754.3745727539062, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9187920093536377, "cells": [{"id": 0, "text": "20 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.31550598144531, "t": 754.6971435546875, "r": 334.42142, "b": 763.9706420898438, "coord_origin": "TOPLEFT"}, "confidence": 0.9505078196525574, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.74647521972656, "t": 70.67481994628906, "r": 342.54773, "b": 80.84661102294922, "coord_origin": "TOPLEFT"}, "confidence": 0.8370974659919739, "cells": [{"id": 2, "text": "Table 3-2 lists the nine built-in global variables.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 342.54773, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.800003, "t": 92.83466339111328, "r": 201.82247924804688, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}, "confidence": 0.913235604763031, "cells": [{"id": 3, "text": "Table 3-2 Built-in global variables", "bbox": {"l": 64.800003, "t": 93.49805000000003, "r": 201.18147, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 64.34713745117188, "t": 320.619140625, "r": 384.36389, "b": 336.96371000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9645339846611023, "cells": [{"id": 4, "text": "3.3", "bbox": {"l": 64.800003, "t": 322.20071, "r": 87.318192, "b": 336.96371000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "VERIFY_GROUP_FOR_USER function", "bbox": {"l": 91.821815, "t": 322.20071, "r": 384.36389, "b": 336.96371000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.8567352294922, "t": 353.8623962402344, "r": 547.23474, "b": 436.295166015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9864333868026733, "cells": [{"id": 6, "text": "The VERIFY_GROUP_FOR_USER function was added in IBM i 7.2. Although it is primarily ", "bbox": {"l": 136.8, "t": 354.52872, "r": 542.83539, "b": 363.7417, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "intended for use with RCAC permissions and masks, it can be used in other SQL statements. ", "bbox": {"l": 136.8, "t": 366.52853, "r": 547.14783, "b": 375.74152, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "The first parameter must be one of these three special registers: SESSION_USER, USER, or ", "bbox": {"l": 136.8, "t": 378.52835, "r": 547.15106, "b": 387.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CURRENT_USER. The second and subsequent parameters are a list of user or group ", "bbox": {"l": 136.80002, "t": 390.52817, "r": 520.62958, "b": 399.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "profiles. Each of these values must be 1 - 10 characters in length. These values are not ", "bbox": {"l": 136.80002, "t": 402.52798, "r": 524.88824, "b": 411.74097, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "validated for their existence, which means that you can specify the names of user profiles that ", "bbox": {"l": 136.80002, "t": 414.5278, "r": 547.23474, "b": 423.7407799999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "do not exist without receiving any kind of error.", "bbox": {"l": 136.80002, "t": 426.52762, "r": 342.04672, "b": 435.74060000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 136.01950073242188, "t": 447.4029541015625, "r": 547.25739, "b": 481.70004, "coord_origin": "TOPLEFT"}, "confidence": 0.9807308912277222, "cells": [{"id": 13, "text": "If a special register value is in the list of user profiles or it is a member of a group profile ", "bbox": {"l": 136.80002, "t": 448.48743, "r": 525.1474, "b": 457.70041, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "included in the list, the function returns a long integer value of 1. Otherwise, it returns a value ", "bbox": {"l": 136.80002, "t": 460.48724, "r": 547.25739, "b": 469.70023, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "of 0. It never returns the null value.", "bbox": {"l": 136.80002, "t": 472.48706, "r": 289.84335, "b": 481.70004, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 136.42428588867188, "t": 493.1253662109375, "r": 458.44525000000004, "b": 503.7196, "coord_origin": "TOPLEFT"}, "confidence": 0.9237534403800964, "cells": [{"id": 16, "text": "Here is an example of using the VERIFY_GROUP_FOR_USER function:", "bbox": {"l": 136.80002, "t": 494.50662, "r": 458.44525000000004, "b": 503.7196, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 136.80002, "t": 510.5052795410156, "r": 406.07751, "b": 520.75919, "coord_origin": "TOPLEFT"}, "confidence": 0.9338629841804504, "cells": [{"id": 17, "text": "1.", "bbox": {"l": 136.80002, "t": 511.5462, "r": 145.09804, "b": 520.75919, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "There are user profiles for MGR, JANE, JUDY, and TONY.", "bbox": {"l": 147.86403, "t": 511.5462, "r": 406.07751, "b": 520.75919, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.8521728515625, "t": 527.8382568359375, "r": 396.98816, "b": 538.1942749023438, "coord_origin": "TOPLEFT"}, "confidence": 0.9514460563659668, "cells": [{"id": 19, "text": "2.", "bbox": {"l": 136.80002, "t": 528.5260000000001, "r": 145.23297, "b": 537.739, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "The user profile JANE specifies a group profile of MGR.", "bbox": {"l": 148.04396, "t": 528.5260000000001, "r": 396.98816, "b": 537.739, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 136.08595275878906, "t": 544.642333984375, "r": 536.5686, "b": 566.71861, "coord_origin": "TOPLEFT"}, "confidence": 0.951230525970459, "cells": [{"id": 21, "text": "3.", "bbox": {"l": 136.80002, "t": 545.50581, "r": 145.18951, "b": 554.71881, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "If a user is connected to the server using user profile JANE, all of the following function ", "bbox": {"l": 147.98601, "t": 545.50581, "r": 536.5686, "b": 554.71881, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "invocations return a value of 1:", "bbox": {"l": 151.20018, "t": 557.50562, "r": 286.84641, "b": 566.71861, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "code", "bbox": {"l": 149.8811798095703, "t": 574.31591796875, "r": 451.01605, "b": 641.9093627929688, "coord_origin": "TOPLEFT"}, "confidence": 0.7066468000411987, "cells": [{"id": 24, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'MGR')", "bbox": {"l": 151.20018, "t": 574.69458, "r": 366.05725, "b": 583.46933, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR')", "bbox": {"l": 151.20018, "t": 586.69438, "r": 406.01678, "b": 595.46913, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR', 'STEVE')", "bbox": {"l": 151.20018, "t": 598.69418, "r": 451.01605, "b": 607.46893, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "The following function invocation returns a value of 0:", "bbox": {"l": 151.20018, "t": 615.5246, "r": 385.87271, "b": 624.73759, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JUDY', 'TONY')", "bbox": {"l": 151.20018, "t": 632.65381, "r": 411.05655, "b": 641.4285600000001, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "table", "bbox": {"l": 63.556331634521484, "t": 104.23389434814453, "r": 548.5687255859375, "b": 296.2246398925781, "coord_origin": "TOPLEFT"}, "confidence": 0.9868634939193726, "cells": [{"id": 29, "text": "Global variable", "bbox": {"l": 70.800003, "t": 110.53801999999985, "r": 134.99071, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Type", "bbox": {"l": 202.8894, "t": 110.53801999999985, "r": 223.34641, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Description", "bbox": {"l": 281.8248, "t": 110.53801999999985, "r": 331.3428, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CLIENT_HOST", "bbox": {"l": 70.800003, "t": 129.49834999999996, "r": 132.7209, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "VARCHAR(255)", "bbox": {"l": 202.89029, "t": 129.49834999999996, "r": 267.07651, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Host name of the current client as returned by the system", "bbox": {"l": 281.84732, "t": 129.49834999999996, "r": 510.17548, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "CLIENT_IPADDR", "bbox": {"l": 70.800018, "t": 148.51806999999997, "r": 140.66522, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "VARCHAR(128)", "bbox": {"l": 202.87231, "t": 148.51806999999997, "r": 267.07739, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "IP address of the current client as returned by the system", "bbox": {"l": 281.84549, "t": 148.51806999999997, "r": 509.60583, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "CLIENT_PORT ", "bbox": {"l": 70.800018, "t": 167.53778, "r": 134.98264, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "INTEGER", "bbox": {"l": 202.90294, "t": 167.53778, "r": 242.80084, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Port used by the current client to communicate with the server", "bbox": {"l": 281.79785, "t": 167.53778, "r": 527.59222, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "PACKAGE_NAME", "bbox": {"l": 70.800018, "t": 186.5575, "r": 143.50925, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "VARCHAR(128)", "bbox": {"l": 202.80576, "t": 186.5575, "r": 267.06937, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Name of the currently running package", "bbox": {"l": 281.85187, "t": 186.5575, "r": 436.57259999999997, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "PACKAGE_SCHEMA", "bbox": {"l": 70.800018, "t": 205.51782000000003, "r": 156.01654, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "VARCHAR(128)", "bbox": {"l": 202.83545, "t": 205.51782000000003, "r": 267.08646, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Schema name of the currently running package", "bbox": {"l": 281.87076, "t": 205.51782000000003, "r": 470.44678, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "PACKAGE_VERSION", "bbox": {"l": 70.800018, "t": 224.53754000000004, "r": 157.89932, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "VARCHAR(64)", "bbox": {"l": 202.72472, "t": 224.53754000000004, "r": 261.98254, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Version identifier of the currently running package", "bbox": {"l": 281.74924, "t": 224.53754000000004, "r": 478.8438100000001, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ROUTINE_SCHEMA", "bbox": {"l": 70.800018, "t": 243.55724999999995, "r": 154.41992, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "VARCHAR(128)", "bbox": {"l": 202.79312, "t": 243.55724999999995, "r": 267.09274, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Schema name of the currently running routine", "bbox": {"l": 281.87164, "t": 243.55724999999995, "r": 464.26022, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ROUTINE_SPECIFIC_NAME", "bbox": {"l": 70.800018, "t": 262.51757999999995, "r": 188.43991, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "VARCHAR(128)", "bbox": {"l": 202.84441, "t": 262.51757999999995, "r": 267.03693, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Name of the currently running routine", "bbox": {"l": 281.80682, "t": 262.51757999999995, "r": 430.40045, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "ROUTINE_TYPE", "bbox": {"l": 70.800034, "t": 281.53726, "r": 139.43135, "b": 289.86227, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "CHAR(1)", "bbox": {"l": 202.74635, "t": 281.53726, "r": 239.28996000000004, "b": 289.86227, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Type of the currently running routine", "bbox": {"l": 281.79065, "t": 281.53726, "r": 425.09131, "b": 289.86227, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {"12": {"label": "table", "id": 12, "page_no": 11, "cluster": {"id": 12, "label": "table", "bbox": {"l": 63.556331634521484, "t": 104.23389434814453, "r": 548.5687255859375, "b": 296.2246398925781, "coord_origin": "TOPLEFT"}, "confidence": 0.9868634939193726, "cells": [{"id": 29, "text": "Global variable", "bbox": {"l": 70.800003, "t": 110.53801999999985, "r": 134.99071, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Type", "bbox": {"l": 202.8894, "t": 110.53801999999985, "r": 223.34641, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Description", "bbox": {"l": 281.8248, "t": 110.53801999999985, "r": 331.3428, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CLIENT_HOST", "bbox": {"l": 70.800003, "t": 129.49834999999996, "r": 132.7209, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "VARCHAR(255)", "bbox": {"l": 202.89029, "t": 129.49834999999996, "r": 267.07651, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Host name of the current client as returned by the system", "bbox": {"l": 281.84732, "t": 129.49834999999996, "r": 510.17548, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "CLIENT_IPADDR", "bbox": {"l": 70.800018, "t": 148.51806999999997, "r": 140.66522, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "VARCHAR(128)", "bbox": {"l": 202.87231, "t": 148.51806999999997, "r": 267.07739, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "IP address of the current client as returned by the system", "bbox": {"l": 281.84549, "t": 148.51806999999997, "r": 509.60583, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "CLIENT_PORT ", "bbox": {"l": 70.800018, "t": 167.53778, "r": 134.98264, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "INTEGER", "bbox": {"l": 202.90294, "t": 167.53778, "r": 242.80084, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Port used by the current client to communicate with the server", "bbox": {"l": 281.79785, "t": 167.53778, "r": 527.59222, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "PACKAGE_NAME", "bbox": {"l": 70.800018, "t": 186.5575, "r": 143.50925, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "VARCHAR(128)", "bbox": {"l": 202.80576, "t": 186.5575, "r": 267.06937, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Name of the currently running package", "bbox": {"l": 281.85187, "t": 186.5575, "r": 436.57259999999997, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "PACKAGE_SCHEMA", "bbox": {"l": 70.800018, "t": 205.51782000000003, "r": 156.01654, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "VARCHAR(128)", "bbox": {"l": 202.83545, "t": 205.51782000000003, "r": 267.08646, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Schema name of the currently running package", "bbox": {"l": 281.87076, "t": 205.51782000000003, "r": 470.44678, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "PACKAGE_VERSION", "bbox": {"l": 70.800018, "t": 224.53754000000004, "r": 157.89932, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "VARCHAR(64)", "bbox": {"l": 202.72472, "t": 224.53754000000004, "r": 261.98254, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Version identifier of the currently running package", "bbox": {"l": 281.74924, "t": 224.53754000000004, "r": 478.8438100000001, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ROUTINE_SCHEMA", "bbox": {"l": 70.800018, "t": 243.55724999999995, "r": 154.41992, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "VARCHAR(128)", "bbox": {"l": 202.79312, "t": 243.55724999999995, "r": 267.09274, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Schema name of the currently running routine", "bbox": {"l": 281.87164, "t": 243.55724999999995, "r": 464.26022, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ROUTINE_SPECIFIC_NAME", "bbox": {"l": 70.800018, "t": 262.51757999999995, "r": 188.43991, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "VARCHAR(128)", "bbox": {"l": 202.84441, "t": 262.51757999999995, "r": 267.03693, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Name of the currently running routine", "bbox": {"l": 281.80682, "t": 262.51757999999995, "r": 430.40045, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "ROUTINE_TYPE", "bbox": {"l": 70.800034, "t": 281.53726, "r": 139.43135, "b": 289.86227, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "CHAR(1)", "bbox": {"l": 202.74635, "t": 281.53726, "r": 239.28996000000004, "b": 289.86227, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Type of the currently running routine", "bbox": {"l": 281.79065, "t": 281.53726, "r": 425.09131, "b": 289.86227, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "ched", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl"], "num_rows": 10, "num_cols": 3, "table_cells": [{"bbox": {"l": 70.800003, "t": 110.53801999999985, "r": 134.99071, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Global variable", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 202.8894, "t": 110.53801999999985, "r": 223.34641, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Type", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 281.8248, "t": 110.53801999999985, "r": 331.3428, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Description", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800003, "t": 129.49834999999996, "r": 132.7209, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CLIENT_HOST", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.89029, "t": 129.49834999999996, "r": 267.07651, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(255)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.84732, "t": 129.49834999999996, "r": 510.17548, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Host name of the current client as returned by the system", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 148.51806999999997, "r": 140.66522, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CLIENT_IPADDR", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.87231, "t": 148.51806999999997, "r": 267.07739, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.84549, "t": 148.51806999999997, "r": 509.60583, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "IP address of the current client as returned by the system", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 167.53778, "r": 134.98264, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CLIENT_PORT", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.90294, "t": 167.53778, "r": 242.80084, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "INTEGER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.79785, "t": 167.53778, "r": 527.59222, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Port used by the current client to communicate with the server", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 186.5575, "r": 143.50925, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PACKAGE_NAME", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.80576, "t": 186.5575, "r": 267.06937, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.85187, "t": 186.5575, "r": 436.57259999999997, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Name of the currently running package", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 205.51782000000003, "r": 156.01654, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PACKAGE_SCHEMA", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.83545, "t": 205.51782000000003, "r": 267.08646, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.87076, "t": 205.51782000000003, "r": 470.44678, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Schema name of the currently running package", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 224.53754000000004, "r": 157.89932, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PACKAGE_VERSION", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.72472, "t": 224.53754000000004, "r": 261.98254, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(64)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.74924, "t": 224.53754000000004, "r": 478.8438100000001, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Version identifier of the currently running package", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 243.55724999999995, "r": 154.41992, "b": 251.8822, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ROUTINE_SCHEMA", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.79312, "t": 243.55724999999995, "r": 267.09274, "b": 251.8822, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.87164, "t": 243.55724999999995, "r": 464.26022, "b": 251.8822, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Schema name of the currently running routine", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 262.51757999999995, "r": 188.43991, "b": 270.84253, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ROUTINE_SPECIFIC_NAME", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.84441, "t": 262.51757999999995, "r": 267.03693, "b": 270.84253, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.80682, "t": 262.51757999999995, "r": 430.40045, "b": 270.84253, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Name of the currently running routine", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800034, "t": 281.53726, "r": 139.43135, "b": 289.86227, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ROUTINE_TYPE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.74635, "t": 281.53726, "r": 239.28996000000004, "b": 289.86227, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "CHAR(1)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.79065, "t": 281.53726, "r": 425.09131, "b": 289.86227, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Type of the currently running routine", "column_header": false, "row_header": false, "row_section": false}]}}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 11, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.85088348388672, "t": 754.3745727539062, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9187920093536377, "cells": [{"id": 0, "text": "20 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "20"}, {"label": "page_footer", "id": 1, "page_no": 11, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.31550598144531, "t": 754.6971435546875, "r": 334.42142, "b": 763.9706420898438, "coord_origin": "TOPLEFT"}, "confidence": 0.9505078196525574, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 2, "page_no": 11, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.74647521972656, "t": 70.67481994628906, "r": 342.54773, "b": 80.84661102294922, "coord_origin": "TOPLEFT"}, "confidence": 0.8370974659919739, "cells": [{"id": 2, "text": "Table 3-2 lists the nine built-in global variables.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 342.54773, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Table 3-2 lists the nine built-in global variables."}, {"label": "caption", "id": 3, "page_no": 11, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.800003, "t": 92.83466339111328, "r": 201.82247924804688, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}, "confidence": 0.913235604763031, "cells": [{"id": 3, "text": "Table 3-2 Built-in global variables", "bbox": {"l": 64.800003, "t": 93.49805000000003, "r": 201.18147, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}}]}, "text": "Table 3-2 Built-in global variables"}, {"label": "section_header", "id": 4, "page_no": 11, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.34713745117188, "t": 320.619140625, "r": 384.36389, "b": 336.96371000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9645339846611023, "cells": [{"id": 4, "text": "3.3", "bbox": {"l": 64.800003, "t": 322.20071, "r": 87.318192, "b": 336.96371000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "VERIFY_GROUP_FOR_USER function", "bbox": {"l": 91.821815, "t": 322.20071, "r": 384.36389, "b": 336.96371000000005, "coord_origin": "TOPLEFT"}}]}, "text": "3.3 VERIFY_GROUP_FOR_USER function"}, {"label": "text", "id": 5, "page_no": 11, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.8567352294922, "t": 353.8623962402344, "r": 547.23474, "b": 436.295166015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9864333868026733, "cells": [{"id": 6, "text": "The VERIFY_GROUP_FOR_USER function was added in IBM i 7.2. Although it is primarily ", "bbox": {"l": 136.8, "t": 354.52872, "r": 542.83539, "b": 363.7417, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "intended for use with RCAC permissions and masks, it can be used in other SQL statements. ", "bbox": {"l": 136.8, "t": 366.52853, "r": 547.14783, "b": 375.74152, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "The first parameter must be one of these three special registers: SESSION_USER, USER, or ", "bbox": {"l": 136.8, "t": 378.52835, "r": 547.15106, "b": 387.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CURRENT_USER. The second and subsequent parameters are a list of user or group ", "bbox": {"l": 136.80002, "t": 390.52817, "r": 520.62958, "b": 399.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "profiles. Each of these values must be 1 - 10 characters in length. These values are not ", "bbox": {"l": 136.80002, "t": 402.52798, "r": 524.88824, "b": 411.74097, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "validated for their existence, which means that you can specify the names of user profiles that ", "bbox": {"l": 136.80002, "t": 414.5278, "r": 547.23474, "b": 423.7407799999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "do not exist without receiving any kind of error.", "bbox": {"l": 136.80002, "t": 426.52762, "r": 342.04672, "b": 435.74060000000003, "coord_origin": "TOPLEFT"}}]}, "text": "The VERIFY_GROUP_FOR_USER function was added in IBM i 7.2. Although it is primarily intended for use with RCAC permissions and masks, it can be used in other SQL statements. The first parameter must be one of these three special registers: SESSION_USER, USER, or CURRENT_USER. The second and subsequent parameters are a list of user or group profiles. Each of these values must be 1 - 10 characters in length. These values are not validated for their existence, which means that you can specify the names of user profiles that do not exist without receiving any kind of error."}, {"label": "text", "id": 6, "page_no": 11, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.01950073242188, "t": 447.4029541015625, "r": 547.25739, "b": 481.70004, "coord_origin": "TOPLEFT"}, "confidence": 0.9807308912277222, "cells": [{"id": 13, "text": "If a special register value is in the list of user profiles or it is a member of a group profile ", "bbox": {"l": 136.80002, "t": 448.48743, "r": 525.1474, "b": 457.70041, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "included in the list, the function returns a long integer value of 1. Otherwise, it returns a value ", "bbox": {"l": 136.80002, "t": 460.48724, "r": 547.25739, "b": 469.70023, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "of 0. It never returns the null value.", "bbox": {"l": 136.80002, "t": 472.48706, "r": 289.84335, "b": 481.70004, "coord_origin": "TOPLEFT"}}]}, "text": "If a special register value is in the list of user profiles or it is a member of a group profile included in the list, the function returns a long integer value of 1. Otherwise, it returns a value of 0. It never returns the null value."}, {"label": "text", "id": 7, "page_no": 11, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.42428588867188, "t": 493.1253662109375, "r": 458.44525000000004, "b": 503.7196, "coord_origin": "TOPLEFT"}, "confidence": 0.9237534403800964, "cells": [{"id": 16, "text": "Here is an example of using the VERIFY_GROUP_FOR_USER function:", "bbox": {"l": 136.80002, "t": 494.50662, "r": 458.44525000000004, "b": 503.7196, "coord_origin": "TOPLEFT"}}]}, "text": "Here is an example of using the VERIFY_GROUP_FOR_USER function:"}, {"label": "list_item", "id": 8, "page_no": 11, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 136.80002, "t": 510.5052795410156, "r": 406.07751, "b": 520.75919, "coord_origin": "TOPLEFT"}, "confidence": 0.9338629841804504, "cells": [{"id": 17, "text": "1.", "bbox": {"l": 136.80002, "t": 511.5462, "r": 145.09804, "b": 520.75919, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "There are user profiles for MGR, JANE, JUDY, and TONY.", "bbox": {"l": 147.86403, "t": 511.5462, "r": 406.07751, "b": 520.75919, "coord_origin": "TOPLEFT"}}]}, "text": "1. There are user profiles for MGR, JANE, JUDY, and TONY."}, {"label": "list_item", "id": 9, "page_no": 11, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.8521728515625, "t": 527.8382568359375, "r": 396.98816, "b": 538.1942749023438, "coord_origin": "TOPLEFT"}, "confidence": 0.9514460563659668, "cells": [{"id": 19, "text": "2.", "bbox": {"l": 136.80002, "t": 528.5260000000001, "r": 145.23297, "b": 537.739, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "The user profile JANE specifies a group profile of MGR.", "bbox": {"l": 148.04396, "t": 528.5260000000001, "r": 396.98816, "b": 537.739, "coord_origin": "TOPLEFT"}}]}, "text": "2. The user profile JANE specifies a group profile of MGR."}, {"label": "list_item", "id": 10, "page_no": 11, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 136.08595275878906, "t": 544.642333984375, "r": 536.5686, "b": 566.71861, "coord_origin": "TOPLEFT"}, "confidence": 0.951230525970459, "cells": [{"id": 21, "text": "3.", "bbox": {"l": 136.80002, "t": 545.50581, "r": 145.18951, "b": 554.71881, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "If a user is connected to the server using user profile JANE, all of the following function ", "bbox": {"l": 147.98601, "t": 545.50581, "r": 536.5686, "b": 554.71881, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "invocations return a value of 1:", "bbox": {"l": 151.20018, "t": 557.50562, "r": 286.84641, "b": 566.71861, "coord_origin": "TOPLEFT"}}]}, "text": "3. If a user is connected to the server using user profile JANE, all of the following function invocations return a value of 1:"}, {"label": "code", "id": 11, "page_no": 11, "cluster": {"id": 11, "label": "code", "bbox": {"l": 149.8811798095703, "t": 574.31591796875, "r": 451.01605, "b": 641.9093627929688, "coord_origin": "TOPLEFT"}, "confidence": 0.7066468000411987, "cells": [{"id": 24, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'MGR')", "bbox": {"l": 151.20018, "t": 574.69458, "r": 366.05725, "b": 583.46933, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR')", "bbox": {"l": 151.20018, "t": 586.69438, "r": 406.01678, "b": 595.46913, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR', 'STEVE')", "bbox": {"l": 151.20018, "t": 598.69418, "r": 451.01605, "b": 607.46893, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "The following function invocation returns a value of 0:", "bbox": {"l": 151.20018, "t": 615.5246, "r": 385.87271, "b": 624.73759, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JUDY', 'TONY')", "bbox": {"l": 151.20018, "t": 632.65381, "r": 411.05655, "b": 641.4285600000001, "coord_origin": "TOPLEFT"}}]}, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'MGR') VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR') VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR', 'STEVE') The following function invocation returns a value of 0: VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JUDY', 'TONY')"}, {"label": "table", "id": 12, "page_no": 11, "cluster": {"id": 12, "label": "table", "bbox": {"l": 63.556331634521484, "t": 104.23389434814453, "r": 548.5687255859375, "b": 296.2246398925781, "coord_origin": "TOPLEFT"}, "confidence": 0.9868634939193726, "cells": [{"id": 29, "text": "Global variable", "bbox": {"l": 70.800003, "t": 110.53801999999985, "r": 134.99071, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Type", "bbox": {"l": 202.8894, "t": 110.53801999999985, "r": 223.34641, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Description", "bbox": {"l": 281.8248, "t": 110.53801999999985, "r": 331.3428, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CLIENT_HOST", "bbox": {"l": 70.800003, "t": 129.49834999999996, "r": 132.7209, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "VARCHAR(255)", "bbox": {"l": 202.89029, "t": 129.49834999999996, "r": 267.07651, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Host name of the current client as returned by the system", "bbox": {"l": 281.84732, "t": 129.49834999999996, "r": 510.17548, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "CLIENT_IPADDR", "bbox": {"l": 70.800018, "t": 148.51806999999997, "r": 140.66522, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "VARCHAR(128)", "bbox": {"l": 202.87231, "t": 148.51806999999997, "r": 267.07739, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "IP address of the current client as returned by the system", "bbox": {"l": 281.84549, "t": 148.51806999999997, "r": 509.60583, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "CLIENT_PORT ", "bbox": {"l": 70.800018, "t": 167.53778, "r": 134.98264, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "INTEGER", "bbox": {"l": 202.90294, "t": 167.53778, "r": 242.80084, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Port used by the current client to communicate with the server", "bbox": {"l": 281.79785, "t": 167.53778, "r": 527.59222, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "PACKAGE_NAME", "bbox": {"l": 70.800018, "t": 186.5575, "r": 143.50925, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "VARCHAR(128)", "bbox": {"l": 202.80576, "t": 186.5575, "r": 267.06937, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Name of the currently running package", "bbox": {"l": 281.85187, "t": 186.5575, "r": 436.57259999999997, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "PACKAGE_SCHEMA", "bbox": {"l": 70.800018, "t": 205.51782000000003, "r": 156.01654, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "VARCHAR(128)", "bbox": {"l": 202.83545, "t": 205.51782000000003, "r": 267.08646, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Schema name of the currently running package", "bbox": {"l": 281.87076, "t": 205.51782000000003, "r": 470.44678, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "PACKAGE_VERSION", "bbox": {"l": 70.800018, "t": 224.53754000000004, "r": 157.89932, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "VARCHAR(64)", "bbox": {"l": 202.72472, "t": 224.53754000000004, "r": 261.98254, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Version identifier of the currently running package", "bbox": {"l": 281.74924, "t": 224.53754000000004, "r": 478.8438100000001, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ROUTINE_SCHEMA", "bbox": {"l": 70.800018, "t": 243.55724999999995, "r": 154.41992, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "VARCHAR(128)", "bbox": {"l": 202.79312, "t": 243.55724999999995, "r": 267.09274, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Schema name of the currently running routine", "bbox": {"l": 281.87164, "t": 243.55724999999995, "r": 464.26022, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ROUTINE_SPECIFIC_NAME", "bbox": {"l": 70.800018, "t": 262.51757999999995, "r": 188.43991, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "VARCHAR(128)", "bbox": {"l": 202.84441, "t": 262.51757999999995, "r": 267.03693, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Name of the currently running routine", "bbox": {"l": 281.80682, "t": 262.51757999999995, "r": 430.40045, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "ROUTINE_TYPE", "bbox": {"l": 70.800034, "t": 281.53726, "r": 139.43135, "b": 289.86227, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "CHAR(1)", "bbox": {"l": 202.74635, "t": 281.53726, "r": 239.28996000000004, "b": 289.86227, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Type of the currently running routine", "bbox": {"l": 281.79065, "t": 281.53726, "r": 425.09131, "b": 289.86227, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "ched", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl"], "num_rows": 10, "num_cols": 3, "table_cells": [{"bbox": {"l": 70.800003, "t": 110.53801999999985, "r": 134.99071, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Global variable", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 202.8894, "t": 110.53801999999985, "r": 223.34641, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Type", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 281.8248, "t": 110.53801999999985, "r": 331.3428, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Description", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800003, "t": 129.49834999999996, "r": 132.7209, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CLIENT_HOST", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.89029, "t": 129.49834999999996, "r": 267.07651, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(255)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.84732, "t": 129.49834999999996, "r": 510.17548, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Host name of the current client as returned by the system", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 148.51806999999997, "r": 140.66522, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CLIENT_IPADDR", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.87231, "t": 148.51806999999997, "r": 267.07739, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.84549, "t": 148.51806999999997, "r": 509.60583, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "IP address of the current client as returned by the system", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 167.53778, "r": 134.98264, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CLIENT_PORT", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.90294, "t": 167.53778, "r": 242.80084, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "INTEGER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.79785, "t": 167.53778, "r": 527.59222, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Port used by the current client to communicate with the server", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 186.5575, "r": 143.50925, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PACKAGE_NAME", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.80576, "t": 186.5575, "r": 267.06937, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.85187, "t": 186.5575, "r": 436.57259999999997, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Name of the currently running package", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 205.51782000000003, "r": 156.01654, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PACKAGE_SCHEMA", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.83545, "t": 205.51782000000003, "r": 267.08646, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.87076, "t": 205.51782000000003, "r": 470.44678, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Schema name of the currently running package", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 224.53754000000004, "r": 157.89932, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PACKAGE_VERSION", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.72472, "t": 224.53754000000004, "r": 261.98254, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(64)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.74924, "t": 224.53754000000004, "r": 478.8438100000001, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Version identifier of the currently running package", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 243.55724999999995, "r": 154.41992, "b": 251.8822, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ROUTINE_SCHEMA", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.79312, "t": 243.55724999999995, "r": 267.09274, "b": 251.8822, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.87164, "t": 243.55724999999995, "r": 464.26022, "b": 251.8822, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Schema name of the currently running routine", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 262.51757999999995, "r": 188.43991, "b": 270.84253, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ROUTINE_SPECIFIC_NAME", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.84441, "t": 262.51757999999995, "r": 267.03693, "b": 270.84253, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.80682, "t": 262.51757999999995, "r": 430.40045, "b": 270.84253, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Name of the currently running routine", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800034, "t": 281.53726, "r": 139.43135, "b": 289.86227, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ROUTINE_TYPE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.74635, "t": 281.53726, "r": 239.28996000000004, "b": 289.86227, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "CHAR(1)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.79065, "t": 281.53726, "r": 425.09131, "b": 289.86227, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Type of the currently running routine", "column_header": false, "row_header": false, "row_section": false}]}], "body": [{"label": "text", "id": 2, "page_no": 11, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.74647521972656, "t": 70.67481994628906, "r": 342.54773, "b": 80.84661102294922, "coord_origin": "TOPLEFT"}, "confidence": 0.8370974659919739, "cells": [{"id": 2, "text": "Table 3-2 lists the nine built-in global variables.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 342.54773, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Table 3-2 lists the nine built-in global variables."}, {"label": "caption", "id": 3, "page_no": 11, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.800003, "t": 92.83466339111328, "r": 201.82247924804688, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}, "confidence": 0.913235604763031, "cells": [{"id": 3, "text": "Table 3-2 Built-in global variables", "bbox": {"l": 64.800003, "t": 93.49805000000003, "r": 201.18147, "b": 101.82299999999998, "coord_origin": "TOPLEFT"}}]}, "text": "Table 3-2 Built-in global variables"}, {"label": "section_header", "id": 4, "page_no": 11, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.34713745117188, "t": 320.619140625, "r": 384.36389, "b": 336.96371000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9645339846611023, "cells": [{"id": 4, "text": "3.3", "bbox": {"l": 64.800003, "t": 322.20071, "r": 87.318192, "b": 336.96371000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "VERIFY_GROUP_FOR_USER function", "bbox": {"l": 91.821815, "t": 322.20071, "r": 384.36389, "b": 336.96371000000005, "coord_origin": "TOPLEFT"}}]}, "text": "3.3 VERIFY_GROUP_FOR_USER function"}, {"label": "text", "id": 5, "page_no": 11, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.8567352294922, "t": 353.8623962402344, "r": 547.23474, "b": 436.295166015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9864333868026733, "cells": [{"id": 6, "text": "The VERIFY_GROUP_FOR_USER function was added in IBM i 7.2. Although it is primarily ", "bbox": {"l": 136.8, "t": 354.52872, "r": 542.83539, "b": 363.7417, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "intended for use with RCAC permissions and masks, it can be used in other SQL statements. ", "bbox": {"l": 136.8, "t": 366.52853, "r": 547.14783, "b": 375.74152, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "The first parameter must be one of these three special registers: SESSION_USER, USER, or ", "bbox": {"l": 136.8, "t": 378.52835, "r": 547.15106, "b": 387.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CURRENT_USER. The second and subsequent parameters are a list of user or group ", "bbox": {"l": 136.80002, "t": 390.52817, "r": 520.62958, "b": 399.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "profiles. Each of these values must be 1 - 10 characters in length. These values are not ", "bbox": {"l": 136.80002, "t": 402.52798, "r": 524.88824, "b": 411.74097, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "validated for their existence, which means that you can specify the names of user profiles that ", "bbox": {"l": 136.80002, "t": 414.5278, "r": 547.23474, "b": 423.7407799999999, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "do not exist without receiving any kind of error.", "bbox": {"l": 136.80002, "t": 426.52762, "r": 342.04672, "b": 435.74060000000003, "coord_origin": "TOPLEFT"}}]}, "text": "The VERIFY_GROUP_FOR_USER function was added in IBM i 7.2. Although it is primarily intended for use with RCAC permissions and masks, it can be used in other SQL statements. The first parameter must be one of these three special registers: SESSION_USER, USER, or CURRENT_USER. The second and subsequent parameters are a list of user or group profiles. Each of these values must be 1 - 10 characters in length. These values are not validated for their existence, which means that you can specify the names of user profiles that do not exist without receiving any kind of error."}, {"label": "text", "id": 6, "page_no": 11, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.01950073242188, "t": 447.4029541015625, "r": 547.25739, "b": 481.70004, "coord_origin": "TOPLEFT"}, "confidence": 0.9807308912277222, "cells": [{"id": 13, "text": "If a special register value is in the list of user profiles or it is a member of a group profile ", "bbox": {"l": 136.80002, "t": 448.48743, "r": 525.1474, "b": 457.70041, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "included in the list, the function returns a long integer value of 1. Otherwise, it returns a value ", "bbox": {"l": 136.80002, "t": 460.48724, "r": 547.25739, "b": 469.70023, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "of 0. It never returns the null value.", "bbox": {"l": 136.80002, "t": 472.48706, "r": 289.84335, "b": 481.70004, "coord_origin": "TOPLEFT"}}]}, "text": "If a special register value is in the list of user profiles or it is a member of a group profile included in the list, the function returns a long integer value of 1. Otherwise, it returns a value of 0. It never returns the null value."}, {"label": "text", "id": 7, "page_no": 11, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.42428588867188, "t": 493.1253662109375, "r": 458.44525000000004, "b": 503.7196, "coord_origin": "TOPLEFT"}, "confidence": 0.9237534403800964, "cells": [{"id": 16, "text": "Here is an example of using the VERIFY_GROUP_FOR_USER function:", "bbox": {"l": 136.80002, "t": 494.50662, "r": 458.44525000000004, "b": 503.7196, "coord_origin": "TOPLEFT"}}]}, "text": "Here is an example of using the VERIFY_GROUP_FOR_USER function:"}, {"label": "list_item", "id": 8, "page_no": 11, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 136.80002, "t": 510.5052795410156, "r": 406.07751, "b": 520.75919, "coord_origin": "TOPLEFT"}, "confidence": 0.9338629841804504, "cells": [{"id": 17, "text": "1.", "bbox": {"l": 136.80002, "t": 511.5462, "r": 145.09804, "b": 520.75919, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "There are user profiles for MGR, JANE, JUDY, and TONY.", "bbox": {"l": 147.86403, "t": 511.5462, "r": 406.07751, "b": 520.75919, "coord_origin": "TOPLEFT"}}]}, "text": "1. There are user profiles for MGR, JANE, JUDY, and TONY."}, {"label": "list_item", "id": 9, "page_no": 11, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.8521728515625, "t": 527.8382568359375, "r": 396.98816, "b": 538.1942749023438, "coord_origin": "TOPLEFT"}, "confidence": 0.9514460563659668, "cells": [{"id": 19, "text": "2.", "bbox": {"l": 136.80002, "t": 528.5260000000001, "r": 145.23297, "b": 537.739, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "The user profile JANE specifies a group profile of MGR.", "bbox": {"l": 148.04396, "t": 528.5260000000001, "r": 396.98816, "b": 537.739, "coord_origin": "TOPLEFT"}}]}, "text": "2. The user profile JANE specifies a group profile of MGR."}, {"label": "list_item", "id": 10, "page_no": 11, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 136.08595275878906, "t": 544.642333984375, "r": 536.5686, "b": 566.71861, "coord_origin": "TOPLEFT"}, "confidence": 0.951230525970459, "cells": [{"id": 21, "text": "3.", "bbox": {"l": 136.80002, "t": 545.50581, "r": 145.18951, "b": 554.71881, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "If a user is connected to the server using user profile JANE, all of the following function ", "bbox": {"l": 147.98601, "t": 545.50581, "r": 536.5686, "b": 554.71881, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "invocations return a value of 1:", "bbox": {"l": 151.20018, "t": 557.50562, "r": 286.84641, "b": 566.71861, "coord_origin": "TOPLEFT"}}]}, "text": "3. If a user is connected to the server using user profile JANE, all of the following function invocations return a value of 1:"}, {"label": "code", "id": 11, "page_no": 11, "cluster": {"id": 11, "label": "code", "bbox": {"l": 149.8811798095703, "t": 574.31591796875, "r": 451.01605, "b": 641.9093627929688, "coord_origin": "TOPLEFT"}, "confidence": 0.7066468000411987, "cells": [{"id": 24, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'MGR')", "bbox": {"l": 151.20018, "t": 574.69458, "r": 366.05725, "b": 583.46933, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR')", "bbox": {"l": 151.20018, "t": 586.69438, "r": 406.01678, "b": 595.46913, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR', 'STEVE')", "bbox": {"l": 151.20018, "t": 598.69418, "r": 451.01605, "b": 607.46893, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "The following function invocation returns a value of 0:", "bbox": {"l": 151.20018, "t": 615.5246, "r": 385.87271, "b": 624.73759, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JUDY', 'TONY')", "bbox": {"l": 151.20018, "t": 632.65381, "r": 411.05655, "b": 641.4285600000001, "coord_origin": "TOPLEFT"}}]}, "text": "VERIFY_GROUP_FOR_USER (CURRENT_USER, 'MGR') VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR') VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JANE', 'MGR', 'STEVE') The following function invocation returns a value of 0: VERIFY_GROUP_FOR_USER (CURRENT_USER, 'JUDY', 'TONY')"}, {"label": "table", "id": 12, "page_no": 11, "cluster": {"id": 12, "label": "table", "bbox": {"l": 63.556331634521484, "t": 104.23389434814453, "r": 548.5687255859375, "b": 296.2246398925781, "coord_origin": "TOPLEFT"}, "confidence": 0.9868634939193726, "cells": [{"id": 29, "text": "Global variable", "bbox": {"l": 70.800003, "t": 110.53801999999985, "r": 134.99071, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Type", "bbox": {"l": 202.8894, "t": 110.53801999999985, "r": 223.34641, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Description", "bbox": {"l": 281.8248, "t": 110.53801999999985, "r": 331.3428, "b": 118.86298, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CLIENT_HOST", "bbox": {"l": 70.800003, "t": 129.49834999999996, "r": 132.7209, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "VARCHAR(255)", "bbox": {"l": 202.89029, "t": 129.49834999999996, "r": 267.07651, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Host name of the current client as returned by the system", "bbox": {"l": 281.84732, "t": 129.49834999999996, "r": 510.17548, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "CLIENT_IPADDR", "bbox": {"l": 70.800018, "t": 148.51806999999997, "r": 140.66522, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "VARCHAR(128)", "bbox": {"l": 202.87231, "t": 148.51806999999997, "r": 267.07739, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "IP address of the current client as returned by the system", "bbox": {"l": 281.84549, "t": 148.51806999999997, "r": 509.60583, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "CLIENT_PORT ", "bbox": {"l": 70.800018, "t": 167.53778, "r": 134.98264, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "INTEGER", "bbox": {"l": 202.90294, "t": 167.53778, "r": 242.80084, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Port used by the current client to communicate with the server", "bbox": {"l": 281.79785, "t": 167.53778, "r": 527.59222, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "PACKAGE_NAME", "bbox": {"l": 70.800018, "t": 186.5575, "r": 143.50925, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "VARCHAR(128)", "bbox": {"l": 202.80576, "t": 186.5575, "r": 267.06937, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "Name of the currently running package", "bbox": {"l": 281.85187, "t": 186.5575, "r": 436.57259999999997, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "PACKAGE_SCHEMA", "bbox": {"l": 70.800018, "t": 205.51782000000003, "r": 156.01654, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "VARCHAR(128)", "bbox": {"l": 202.83545, "t": 205.51782000000003, "r": 267.08646, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Schema name of the currently running package", "bbox": {"l": 281.87076, "t": 205.51782000000003, "r": 470.44678, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "PACKAGE_VERSION", "bbox": {"l": 70.800018, "t": 224.53754000000004, "r": 157.89932, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "VARCHAR(64)", "bbox": {"l": 202.72472, "t": 224.53754000000004, "r": 261.98254, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Version identifier of the currently running package", "bbox": {"l": 281.74924, "t": 224.53754000000004, "r": 478.8438100000001, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ROUTINE_SCHEMA", "bbox": {"l": 70.800018, "t": 243.55724999999995, "r": 154.41992, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "VARCHAR(128)", "bbox": {"l": 202.79312, "t": 243.55724999999995, "r": 267.09274, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "Schema name of the currently running routine", "bbox": {"l": 281.87164, "t": 243.55724999999995, "r": 464.26022, "b": 251.8822, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ROUTINE_SPECIFIC_NAME", "bbox": {"l": 70.800018, "t": 262.51757999999995, "r": 188.43991, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "VARCHAR(128)", "bbox": {"l": 202.84441, "t": 262.51757999999995, "r": 267.03693, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 55, "text": "Name of the currently running routine", "bbox": {"l": 281.80682, "t": 262.51757999999995, "r": 430.40045, "b": 270.84253, "coord_origin": "TOPLEFT"}}, {"id": 56, "text": "ROUTINE_TYPE", "bbox": {"l": 70.800034, "t": 281.53726, "r": 139.43135, "b": 289.86227, "coord_origin": "TOPLEFT"}}, {"id": 57, "text": "CHAR(1)", "bbox": {"l": 202.74635, "t": 281.53726, "r": 239.28996000000004, "b": 289.86227, "coord_origin": "TOPLEFT"}}, {"id": 58, "text": "Type of the currently running routine", "bbox": {"l": 281.79065, "t": 281.53726, "r": 425.09131, "b": 289.86227, "coord_origin": "TOPLEFT"}}]}, "text": null, "otsl_seq": ["ched", "ched", "ched", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl", "fcel", "fcel", "fcel", "nl"], "num_rows": 10, "num_cols": 3, "table_cells": [{"bbox": {"l": 70.800003, "t": 110.53801999999985, "r": 134.99071, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "Global variable", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 202.8894, "t": 110.53801999999985, "r": 223.34641, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "Type", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 281.8248, "t": 110.53801999999985, "r": 331.3428, "b": 118.86298, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 0, "end_row_offset_idx": 1, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Description", "column_header": true, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800003, "t": 129.49834999999996, "r": 132.7209, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CLIENT_HOST", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.89029, "t": 129.49834999999996, "r": 267.07651, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(255)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.84732, "t": 129.49834999999996, "r": 510.17548, "b": 137.82330000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 1, "end_row_offset_idx": 2, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Host name of the current client as returned by the system", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 148.51806999999997, "r": 140.66522, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CLIENT_IPADDR", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.87231, "t": 148.51806999999997, "r": 267.07739, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.84549, "t": 148.51806999999997, "r": 509.60583, "b": 156.84302000000002, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 2, "end_row_offset_idx": 3, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "IP address of the current client as returned by the system", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 167.53778, "r": 134.98264, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "CLIENT_PORT", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.90294, "t": 167.53778, "r": 242.80084, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "INTEGER", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.79785, "t": 167.53778, "r": 527.59222, "b": 175.86273000000006, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 3, "end_row_offset_idx": 4, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Port used by the current client to communicate with the server", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 186.5575, "r": 143.50925, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PACKAGE_NAME", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.80576, "t": 186.5575, "r": 267.06937, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.85187, "t": 186.5575, "r": 436.57259999999997, "b": 194.88244999999995, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 4, "end_row_offset_idx": 5, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Name of the currently running package", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 205.51782000000003, "r": 156.01654, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PACKAGE_SCHEMA", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.83545, "t": 205.51782000000003, "r": 267.08646, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.87076, "t": 205.51782000000003, "r": 470.44678, "b": 213.84276999999997, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 5, "end_row_offset_idx": 6, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Schema name of the currently running package", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 224.53754000000004, "r": 157.89932, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "PACKAGE_VERSION", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.72472, "t": 224.53754000000004, "r": 261.98254, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(64)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.74924, "t": 224.53754000000004, "r": 478.8438100000001, "b": 232.86248999999998, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 6, "end_row_offset_idx": 7, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Version identifier of the currently running package", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 243.55724999999995, "r": 154.41992, "b": 251.8822, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ROUTINE_SCHEMA", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.79312, "t": 243.55724999999995, "r": 267.09274, "b": 251.8822, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.87164, "t": 243.55724999999995, "r": 464.26022, "b": 251.8822, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 7, "end_row_offset_idx": 8, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Schema name of the currently running routine", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800018, "t": 262.51757999999995, "r": 188.43991, "b": 270.84253, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ROUTINE_SPECIFIC_NAME", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.84441, "t": 262.51757999999995, "r": 267.03693, "b": 270.84253, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "VARCHAR(128)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.80682, "t": 262.51757999999995, "r": 430.40045, "b": 270.84253, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 8, "end_row_offset_idx": 9, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Name of the currently running routine", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 70.800034, "t": 281.53726, "r": 139.43135, "b": 289.86227, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 0, "end_col_offset_idx": 1, "text": "ROUTINE_TYPE", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 202.74635, "t": 281.53726, "r": 239.28996000000004, "b": 289.86227, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 1, "end_col_offset_idx": 2, "text": "CHAR(1)", "column_header": false, "row_header": false, "row_section": false}, {"bbox": {"l": 281.79065, "t": 281.53726, "r": 425.09131, "b": 289.86227, "coord_origin": "TOPLEFT"}, "row_span": 1, "col_span": 1, "start_row_offset_idx": 9, "end_row_offset_idx": 10, "start_col_offset_idx": 2, "end_col_offset_idx": 3, "text": "Type of the currently running routine", "column_header": false, "row_header": false, "row_section": false}]}], "headers": [{"label": "page_footer", "id": 0, "page_no": 11, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.85088348388672, "t": 754.3745727539062, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9187920093536377, "cells": [{"id": 0, "text": "20 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "20"}, {"label": "page_footer", "id": 1, "page_no": 11, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.31550598144531, "t": 754.6971435546875, "r": 334.42142, "b": 763.9706420898438, "coord_origin": "TOPLEFT"}, "confidence": 0.9505078196525574, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 12, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "27", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "RETURN", "bbox": {"l": 136.79959, "t": 71.65845000000002, "r": 166.73935, "b": 80.43322999999998, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "CASE", "bbox": {"l": 136.79959, "t": 83.65826000000004, "r": 156.77934, "b": 92.43304, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR', 'EMP' ) = 1", "bbox": {"l": 147.26993, "t": 95.65808000000015, "r": 466.61502, "b": 104.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "THEN EMPLOYEES . DATE_OF_BIRTH", "bbox": {"l": 147.73068, "t": 107.65790000000004, "r": 311.69717, "b": 116.43268, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 147.31944, "t": 131.65752999999995, "r": 436.61547999999993, "b": 140.43231000000003, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "AND SESSION_USER = EMPLOYEES . USER_ID", "bbox": {"l": 147.54245, "t": 143.65734999999995, "r": 351.65668, "b": 152.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "THEN EMPLOYEES . DATE_OF_BIRTH", "bbox": {"l": 147.73068, "t": 155.65716999999995, "r": 311.69717, "b": 164.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 147.31944, "t": 179.65679999999998, "r": 436.61547999999993, "b": 188.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "AND SESSION_USER <> EMPLOYEES . USER_ID", "bbox": {"l": 147.52335, "t": 191.65661999999998, "r": 356.63669, "b": 200.43140000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "THEN ( 9999 || '-' ||", "bbox": {"l": 147.63832, "t": 203.65643, "r": 261.44492, "b": 212.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "MONTH ( EMPLOYEES . DATE_OF_BIRTH ) || '-'", "bbox": {"l": 272.28363, "t": 203.65643, "r": 499.89682, "b": 212.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "||", "bbox": {"l": 510.73557, "t": 203.65643, "r": 521.57428, "b": 212.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "DAY (EMPLOYEES.DATE_OF_BIRTH ))", "bbox": {"l": 160.78555, "t": 215.65625, "r": 346.6767, "b": 224.43102999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "ELSE NULL", "bbox": {"l": 149.51941, "t": 227.65607, "r": 206.75861, "b": 236.43084999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": " END", "bbox": {"l": 136.79959, "t": 239.65588000000002, "r": 156.77934, "b": 248.43066, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": " ENABLE ;", "bbox": {"l": 136.79959, "t": 251.65570000000002, "r": 186.7191, "b": 260.43048, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "2.", "bbox": {"l": 136.79959, "t": 275.50591999999995, "r": 145.18994, "b": 284.7189, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "The other column to mask in this example is the TAX_ID information. In this example, the ", "bbox": {"l": 147.98672, "t": 275.50591999999995, "r": 547.21222, "b": 284.7189, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "rules to enforce include the following ones:", "bbox": {"l": 151.19977, "t": 287.50574, "r": 339.37903, "b": 296.71871999999996, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "-", "bbox": {"l": 152.0394, "t": 304.48553000000004, "r": 157.61201, "b": 313.69852000000003, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Human Resources can see the unmasked TAX_ID of the employees.", "bbox": {"l": 165.59894, "t": 304.48553000000004, "r": 469.1528, "b": 313.69852000000003, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "-", "bbox": {"l": 152.0394, "t": 321.52512, "r": 157.60504, "b": 330.7381, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Employees can see only their own unmasked TAX_ID.", "bbox": {"l": 165.59894, "t": 321.52512, "r": 403.95953, "b": 330.7381, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "-", "bbox": {"l": 152.0394, "t": 338.50491, "r": 157.57019, "b": 347.7179, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Managers see a masked version of TAX_ID with the first five characters replaced with ", "bbox": {"l": 165.59894, "t": 338.50491, "r": 545.16846, "b": 347.7179, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "the X character (for example, XXX-XX-1234).", "bbox": {"l": 165.59894, "t": 350.50473, "r": 364.67947, "b": 359.71771, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "-", "bbox": {"l": 152.0394, "t": 367.48453, "r": 157.59309, "b": 376.6975100000001, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Any other person sees the entire TAX_ID as masked, for example, XXX-XX-XXXX.", "bbox": {"l": 165.59995, "t": 367.48453, "r": 529.46362, "b": 376.6975100000001, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "To implement this column mask, run the SQL statement that is shown in Example 3-9.", "bbox": {"l": 151.19978, "t": 384.52411, "r": 530.0603, "b": 393.73709, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Example 3-9 Creating a mask on the TAX_ID column", "bbox": {"l": 136.8, "t": 406.51801, "r": 351.9873, "b": 414.84302, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CREATE MASK", "bbox": {"l": 136.8, "t": 423.67810000000003, "r": 192.91296, "b": 432.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "HR_SCHEMA.MASK_TAX_ID_ON_EMPLOYEES ", "bbox": {"l": 203.11533, "t": 423.67810000000003, "r": 381.65659, "b": 432.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "ON", "bbox": {"l": 136.8, "t": 435.67792, "r": 148.54184, "b": 444.45270000000005, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "HR_SCHEMA.EMPLOYEES AS EMPLOYEES ", "bbox": {"l": 177.89645, "t": 435.67792, "r": 371.63684, "b": 444.45270000000005, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "FOR COLUMN", "bbox": {"l": 136.8, "t": 447.67773, "r": 199.25916, "b": 456.45251, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "TAX_ID", "bbox": {"l": 211.75098, "t": 447.67773, "r": 249.22647, "b": 456.45251, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "RETURN ", "bbox": {"l": 136.8, "t": 459.67755, "r": 176.75952, "b": 468.45233, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "CASE ", "bbox": {"l": 136.8, "t": 471.67737, "r": 161.75977, "b": 480.45215, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1", "bbox": {"l": 152.84189, "t": 483.67719, "r": 441.59589, "b": 492.45197, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "THEN EMPLOYEES . TAX_ID ", "bbox": {"l": 154.01309, "t": 495.677, "r": 291.7178, "b": 504.45178, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 ", "bbox": {"l": 152.80757, "t": 519.67661, "r": 451.6156, "b": 528.45139, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "AND SESSION_USER = EMPLOYEES . USER_ID ", "bbox": {"l": 153.21835, "t": 531.67642, "r": 366.65683, "b": 540.45117, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "THEN EMPLOYEES . TAX_ID", "bbox": {"l": 154.09363, "t": 543.6762200000001, "r": 286.67804, "b": 552.45097, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 152.82599, "t": 567.67583, "r": 446.63561999999996, "b": 576.45058, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "AND SESSION_USER <> EMPLOYEES . USER_ID ", "bbox": {"l": 153.18398, "t": 579.67563, "r": 371.63684, "b": 588.45038, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( EMPLOYEES . TAX_ID , 8 , 4 ) )", "bbox": {"l": 152.60088, "t": 591.67543, "r": 526.55469, "b": 600.45018, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1 ", "bbox": {"l": 152.80757, "t": 615.67505, "r": 451.6156, "b": 624.4498, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "THEN EMPLOYEES . TAX_ID ", "bbox": {"l": 154.01309, "t": 627.67485, "r": 291.7178, "b": 636.4496, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ELSE 'XXX-XX-XXXX' ", "bbox": {"l": 154.5134, "t": 651.67447, "r": 266.69827, "b": 660.44922, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "END", "bbox": {"l": 136.8, "t": 663.67427, "r": 157.7877, "b": 672.44904, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "ENABLE ;", "bbox": {"l": 136.8, "t": 675.67409, "r": 181.73952, "b": 684.44884, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 344.5617370605469, "t": 754.6708374023438, "r": 523.60162, "b": 764.1358032226562, "coord_origin": "TOPLEFT"}, "confidence": 0.9556928277015686, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.6422729492188, "t": 754.1753540039062, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9105784296989441, "cells": [{"id": 1, "text": "27", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 136.79959, "t": 71.65845000000002, "r": 166.73935, "b": 92.43304, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "RETURN", "bbox": {"l": 136.79959, "t": 71.65845000000002, "r": 166.73935, "b": 80.43322999999998, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "CASE", "bbox": {"l": 136.79959, "t": 83.65826000000004, "r": 156.77934, "b": 92.43304, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "code", "bbox": {"l": 136.79959, "t": 91.76913452148438, "r": 521.57428, "b": 261.5705871582031, "coord_origin": "TOPLEFT"}, "confidence": 0.778520941734314, "cells": [{"id": 4, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR', 'EMP' ) = 1", "bbox": {"l": 147.26993, "t": 95.65808000000015, "r": 466.61502, "b": 104.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "THEN EMPLOYEES . DATE_OF_BIRTH", "bbox": {"l": 147.73068, "t": 107.65790000000004, "r": 311.69717, "b": 116.43268, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 147.31944, "t": 131.65752999999995, "r": 436.61547999999993, "b": 140.43231000000003, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "AND SESSION_USER = EMPLOYEES . USER_ID", "bbox": {"l": 147.54245, "t": 143.65734999999995, "r": 351.65668, "b": 152.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "THEN EMPLOYEES . DATE_OF_BIRTH", "bbox": {"l": 147.73068, "t": 155.65716999999995, "r": 311.69717, "b": 164.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 147.31944, "t": 179.65679999999998, "r": 436.61547999999993, "b": 188.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "AND SESSION_USER <> EMPLOYEES . USER_ID", "bbox": {"l": 147.52335, "t": 191.65661999999998, "r": 356.63669, "b": 200.43140000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "THEN ( 9999 || '-' ||", "bbox": {"l": 147.63832, "t": 203.65643, "r": 261.44492, "b": 212.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "MONTH ( EMPLOYEES . DATE_OF_BIRTH ) || '-'", "bbox": {"l": 272.28363, "t": 203.65643, "r": 499.89682, "b": 212.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "||", "bbox": {"l": 510.73557, "t": 203.65643, "r": 521.57428, "b": 212.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "DAY (EMPLOYEES.DATE_OF_BIRTH ))", "bbox": {"l": 160.78555, "t": 215.65625, "r": 346.6767, "b": 224.43102999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "ELSE NULL", "bbox": {"l": 149.51941, "t": 227.65607, "r": 206.75861, "b": 236.43084999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": " END", "bbox": {"l": 136.79959, "t": 239.65588000000002, "r": 156.77934, "b": 248.43066, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": " ENABLE ;", "bbox": {"l": 136.79959, "t": 251.65570000000002, "r": 186.7191, "b": 260.43048, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 135.86044311523438, "t": 274.4537353515625, "r": 547.21222, "b": 296.77191162109375, "coord_origin": "TOPLEFT"}, "confidence": 0.8678946495056152, "cells": [{"id": 18, "text": "2.", "bbox": {"l": 136.79959, "t": 275.50591999999995, "r": 145.18994, "b": 284.7189, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "The other column to mask in this example is the TAX_ID information. In this example, the ", "bbox": {"l": 147.98672, "t": 275.50591999999995, "r": 547.21222, "b": 284.7189, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "rules to enforce include the following ones:", "bbox": {"l": 151.19977, "t": 287.50574, "r": 339.37903, "b": 296.71871999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 151.1599578857422, "t": 303.3277282714844, "r": 469.1528, "b": 313.69852000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9461130499839783, "cells": [{"id": 21, "text": "-", "bbox": {"l": 152.0394, "t": 304.48553000000004, "r": 157.61201, "b": 313.69852000000003, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Human Resources can see the unmasked TAX_ID of the employees.", "bbox": {"l": 165.59894, "t": 304.48553000000004, "r": 469.1528, "b": 313.69852000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 151.2740936279297, "t": 320.54925537109375, "r": 403.95953, "b": 330.8575439453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9467734694480896, "cells": [{"id": 23, "text": "-", "bbox": {"l": 152.0394, "t": 321.52512, "r": 157.60504, "b": 330.7381, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Employees can see only their own unmasked TAX_ID.", "bbox": {"l": 165.59894, "t": 321.52512, "r": 403.95953, "b": 330.7381, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 151.4427947998047, "t": 337.3158264160156, "r": 545.16846, "b": 359.71771, "coord_origin": "TOPLEFT"}, "confidence": 0.9705167412757874, "cells": [{"id": 25, "text": "-", "bbox": {"l": 152.0394, "t": 338.50491, "r": 157.57019, "b": 347.7179, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Managers see a masked version of TAX_ID with the first five characters replaced with ", "bbox": {"l": 165.59894, "t": 338.50491, "r": 545.16846, "b": 347.7179, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "the X character (for example, XXX-XX-1234).", "bbox": {"l": 165.59894, "t": 350.50473, "r": 364.67947, "b": 359.71771, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 151.51747131347656, "t": 366.6339111328125, "r": 529.46362, "b": 377.1689147949219, "coord_origin": "TOPLEFT"}, "confidence": 0.9469640254974365, "cells": [{"id": 28, "text": "-", "bbox": {"l": 152.0394, "t": 367.48453, "r": 157.59309, "b": 376.6975100000001, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Any other person sees the entire TAX_ID as masked, for example, XXX-XX-XXXX.", "bbox": {"l": 165.59995, "t": 367.48453, "r": 529.46362, "b": 376.6975100000001, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 150.69093322753906, "t": 383.80133056640625, "r": 530.0603, "b": 394.17559814453125, "coord_origin": "TOPLEFT"}, "confidence": 0.7003507614135742, "cells": [{"id": 30, "text": "To implement this column mask, run the SQL statement that is shown in Example 3-9.", "bbox": {"l": 151.19978, "t": 384.52411, "r": 530.0603, "b": 393.73709, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "caption", "bbox": {"l": 136.25662231445312, "t": 405.446044921875, "r": 352.31475830078125, "b": 415.0381164550781, "coord_origin": "TOPLEFT"}, "confidence": 0.8488205075263977, "cells": [{"id": 31, "text": "Example 3-9 Creating a mask on the TAX_ID column", "bbox": {"l": 136.8, "t": 406.51801, "r": 351.9873, "b": 414.84302, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "code", "bbox": {"l": 135.95343017578125, "t": 418.5181884765625, "r": 535.87548828125, "b": 688.5432739257812, "coord_origin": "TOPLEFT"}, "confidence": 0.8411229848861694, "cells": [{"id": 32, "text": "CREATE MASK", "bbox": {"l": 136.8, "t": 423.67810000000003, "r": 192.91296, "b": 432.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "HR_SCHEMA.MASK_TAX_ID_ON_EMPLOYEES ", "bbox": {"l": 203.11533, "t": 423.67810000000003, "r": 381.65659, "b": 432.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "ON", "bbox": {"l": 136.8, "t": 435.67792, "r": 148.54184, "b": 444.45270000000005, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "HR_SCHEMA.EMPLOYEES AS EMPLOYEES ", "bbox": {"l": 177.89645, "t": 435.67792, "r": 371.63684, "b": 444.45270000000005, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "FOR COLUMN", "bbox": {"l": 136.8, "t": 447.67773, "r": 199.25916, "b": 456.45251, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "TAX_ID", "bbox": {"l": 211.75098, "t": 447.67773, "r": 249.22647, "b": 456.45251, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "RETURN ", "bbox": {"l": 136.8, "t": 459.67755, "r": 176.75952, "b": 468.45233, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "CASE ", "bbox": {"l": 136.8, "t": 471.67737, "r": 161.75977, "b": 480.45215, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1", "bbox": {"l": 152.84189, "t": 483.67719, "r": 441.59589, "b": 492.45197, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "THEN EMPLOYEES . TAX_ID ", "bbox": {"l": 154.01309, "t": 495.677, "r": 291.7178, "b": 504.45178, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 ", "bbox": {"l": 152.80757, "t": 519.67661, "r": 451.6156, "b": 528.45139, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "AND SESSION_USER = EMPLOYEES . USER_ID ", "bbox": {"l": 153.21835, "t": 531.67642, "r": 366.65683, "b": 540.45117, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "THEN EMPLOYEES . TAX_ID", "bbox": {"l": 154.09363, "t": 543.6762200000001, "r": 286.67804, "b": 552.45097, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 152.82599, "t": 567.67583, "r": 446.63561999999996, "b": 576.45058, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "AND SESSION_USER <> EMPLOYEES . USER_ID ", "bbox": {"l": 153.18398, "t": 579.67563, "r": 371.63684, "b": 588.45038, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( EMPLOYEES . TAX_ID , 8 , 4 ) )", "bbox": {"l": 152.60088, "t": 591.67543, "r": 526.55469, "b": 600.45018, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1 ", "bbox": {"l": 152.80757, "t": 615.67505, "r": 451.6156, "b": 624.4498, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "THEN EMPLOYEES . TAX_ID ", "bbox": {"l": 154.01309, "t": 627.67485, "r": 291.7178, "b": 636.4496, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ELSE 'XXX-XX-XXXX' ", "bbox": {"l": 154.5134, "t": 651.67447, "r": 266.69827, "b": 660.44922, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "END", "bbox": {"l": 136.8, "t": 663.67427, "r": 157.7877, "b": 672.44904, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "ENABLE ;", "bbox": {"l": 136.8, "t": 675.67409, "r": 181.73952, "b": 684.44884, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 12, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.5617370605469, "t": 754.6708374023438, "r": 523.60162, "b": 764.1358032226562, "coord_origin": "TOPLEFT"}, "confidence": 0.9556928277015686, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 12, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6422729492188, "t": 754.1753540039062, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9105784296989441, "cells": [{"id": 1, "text": "27", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "27"}, {"label": "text", "id": 2, "page_no": 12, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.79959, "t": 71.65845000000002, "r": 166.73935, "b": 92.43304, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "RETURN", "bbox": {"l": 136.79959, "t": 71.65845000000002, "r": 166.73935, "b": 80.43322999999998, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "CASE", "bbox": {"l": 136.79959, "t": 83.65826000000004, "r": 156.77934, "b": 92.43304, "coord_origin": "TOPLEFT"}}]}, "text": "RETURN CASE"}, {"label": "code", "id": 3, "page_no": 12, "cluster": {"id": 3, "label": "code", "bbox": {"l": 136.79959, "t": 91.76913452148438, "r": 521.57428, "b": 261.5705871582031, "coord_origin": "TOPLEFT"}, "confidence": 0.778520941734314, "cells": [{"id": 4, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR', 'EMP' ) = 1", "bbox": {"l": 147.26993, "t": 95.65808000000015, "r": 466.61502, "b": 104.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "THEN EMPLOYEES . DATE_OF_BIRTH", "bbox": {"l": 147.73068, "t": 107.65790000000004, "r": 311.69717, "b": 116.43268, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 147.31944, "t": 131.65752999999995, "r": 436.61547999999993, "b": 140.43231000000003, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "AND SESSION_USER = EMPLOYEES . USER_ID", "bbox": {"l": 147.54245, "t": 143.65734999999995, "r": 351.65668, "b": 152.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "THEN EMPLOYEES . DATE_OF_BIRTH", "bbox": {"l": 147.73068, "t": 155.65716999999995, "r": 311.69717, "b": 164.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 147.31944, "t": 179.65679999999998, "r": 436.61547999999993, "b": 188.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "AND SESSION_USER <> EMPLOYEES . USER_ID", "bbox": {"l": 147.52335, "t": 191.65661999999998, "r": 356.63669, "b": 200.43140000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "THEN ( 9999 || '-' ||", "bbox": {"l": 147.63832, "t": 203.65643, "r": 261.44492, "b": 212.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "MONTH ( EMPLOYEES . DATE_OF_BIRTH ) || '-'", "bbox": {"l": 272.28363, "t": 203.65643, "r": 499.89682, "b": 212.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "||", "bbox": {"l": 510.73557, "t": 203.65643, "r": 521.57428, "b": 212.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "DAY (EMPLOYEES.DATE_OF_BIRTH ))", "bbox": {"l": 160.78555, "t": 215.65625, "r": 346.6767, "b": 224.43102999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "ELSE NULL", "bbox": {"l": 149.51941, "t": 227.65607, "r": 206.75861, "b": 236.43084999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": " END", "bbox": {"l": 136.79959, "t": 239.65588000000002, "r": 156.77934, "b": 248.43066, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": " ENABLE ;", "bbox": {"l": 136.79959, "t": 251.65570000000002, "r": 186.7191, "b": 260.43048, "coord_origin": "TOPLEFT"}}]}, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR', 'EMP' ) = 1 THEN EMPLOYEES . DATE_OF_BIRTH WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER = EMPLOYEES . USER_ID THEN EMPLOYEES . DATE_OF_BIRTH WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER <> EMPLOYEES . USER_ID THEN ( 9999 || '-' || MONTH ( EMPLOYEES . DATE_OF_BIRTH ) || '-' || DAY (EMPLOYEES.DATE_OF_BIRTH )) ELSE NULL END ENABLE ;"}, {"label": "list_item", "id": 4, "page_no": 12, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.86044311523438, "t": 274.4537353515625, "r": 547.21222, "b": 296.77191162109375, "coord_origin": "TOPLEFT"}, "confidence": 0.8678946495056152, "cells": [{"id": 18, "text": "2.", "bbox": {"l": 136.79959, "t": 275.50591999999995, "r": 145.18994, "b": 284.7189, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "The other column to mask in this example is the TAX_ID information. In this example, the ", "bbox": {"l": 147.98672, "t": 275.50591999999995, "r": 547.21222, "b": 284.7189, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "rules to enforce include the following ones:", "bbox": {"l": 151.19977, "t": 287.50574, "r": 339.37903, "b": 296.71871999999996, "coord_origin": "TOPLEFT"}}]}, "text": "2. The other column to mask in this example is the TAX_ID information. In this example, the rules to enforce include the following ones:"}, {"label": "list_item", "id": 5, "page_no": 12, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 151.1599578857422, "t": 303.3277282714844, "r": 469.1528, "b": 313.69852000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9461130499839783, "cells": [{"id": 21, "text": "-", "bbox": {"l": 152.0394, "t": 304.48553000000004, "r": 157.61201, "b": 313.69852000000003, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Human Resources can see the unmasked TAX_ID of the employees.", "bbox": {"l": 165.59894, "t": 304.48553000000004, "r": 469.1528, "b": 313.69852000000003, "coord_origin": "TOPLEFT"}}]}, "text": "-Human Resources can see the unmasked TAX_ID of the employees."}, {"label": "list_item", "id": 6, "page_no": 12, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 151.2740936279297, "t": 320.54925537109375, "r": 403.95953, "b": 330.8575439453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9467734694480896, "cells": [{"id": 23, "text": "-", "bbox": {"l": 152.0394, "t": 321.52512, "r": 157.60504, "b": 330.7381, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Employees can see only their own unmasked TAX_ID.", "bbox": {"l": 165.59894, "t": 321.52512, "r": 403.95953, "b": 330.7381, "coord_origin": "TOPLEFT"}}]}, "text": "-Employees can see only their own unmasked TAX_ID."}, {"label": "list_item", "id": 7, "page_no": 12, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 151.4427947998047, "t": 337.3158264160156, "r": 545.16846, "b": 359.71771, "coord_origin": "TOPLEFT"}, "confidence": 0.9705167412757874, "cells": [{"id": 25, "text": "-", "bbox": {"l": 152.0394, "t": 338.50491, "r": 157.57019, "b": 347.7179, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Managers see a masked version of TAX_ID with the first five characters replaced with ", "bbox": {"l": 165.59894, "t": 338.50491, "r": 545.16846, "b": 347.7179, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "the X character (for example, XXX-XX-1234).", "bbox": {"l": 165.59894, "t": 350.50473, "r": 364.67947, "b": 359.71771, "coord_origin": "TOPLEFT"}}]}, "text": "-Managers see a masked version of TAX_ID with the first five characters replaced with the X character (for example, XXX-XX-1234)."}, {"label": "list_item", "id": 8, "page_no": 12, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 151.51747131347656, "t": 366.6339111328125, "r": 529.46362, "b": 377.1689147949219, "coord_origin": "TOPLEFT"}, "confidence": 0.9469640254974365, "cells": [{"id": 28, "text": "-", "bbox": {"l": 152.0394, "t": 367.48453, "r": 157.59309, "b": 376.6975100000001, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Any other person sees the entire TAX_ID as masked, for example, XXX-XX-XXXX.", "bbox": {"l": 165.59995, "t": 367.48453, "r": 529.46362, "b": 376.6975100000001, "coord_origin": "TOPLEFT"}}]}, "text": "-Any other person sees the entire TAX_ID as masked, for example, XXX-XX-XXXX."}, {"label": "list_item", "id": 9, "page_no": 12, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 150.69093322753906, "t": 383.80133056640625, "r": 530.0603, "b": 394.17559814453125, "coord_origin": "TOPLEFT"}, "confidence": 0.7003507614135742, "cells": [{"id": 30, "text": "To implement this column mask, run the SQL statement that is shown in Example 3-9.", "bbox": {"l": 151.19978, "t": 384.52411, "r": 530.0603, "b": 393.73709, "coord_origin": "TOPLEFT"}}]}, "text": "To implement this column mask, run the SQL statement that is shown in Example 3-9."}, {"label": "caption", "id": 10, "page_no": 12, "cluster": {"id": 10, "label": "caption", "bbox": {"l": 136.25662231445312, "t": 405.446044921875, "r": 352.31475830078125, "b": 415.0381164550781, "coord_origin": "TOPLEFT"}, "confidence": 0.8488205075263977, "cells": [{"id": 31, "text": "Example 3-9 Creating a mask on the TAX_ID column", "bbox": {"l": 136.8, "t": 406.51801, "r": 351.9873, "b": 414.84302, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-9 Creating a mask on the TAX_ID column"}, {"label": "code", "id": 11, "page_no": 12, "cluster": {"id": 11, "label": "code", "bbox": {"l": 135.95343017578125, "t": 418.5181884765625, "r": 535.87548828125, "b": 688.5432739257812, "coord_origin": "TOPLEFT"}, "confidence": 0.8411229848861694, "cells": [{"id": 32, "text": "CREATE MASK", "bbox": {"l": 136.8, "t": 423.67810000000003, "r": 192.91296, "b": 432.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "HR_SCHEMA.MASK_TAX_ID_ON_EMPLOYEES ", "bbox": {"l": 203.11533, "t": 423.67810000000003, "r": 381.65659, "b": 432.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "ON", "bbox": {"l": 136.8, "t": 435.67792, "r": 148.54184, "b": 444.45270000000005, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "HR_SCHEMA.EMPLOYEES AS EMPLOYEES ", "bbox": {"l": 177.89645, "t": 435.67792, "r": 371.63684, "b": 444.45270000000005, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "FOR COLUMN", "bbox": {"l": 136.8, "t": 447.67773, "r": 199.25916, "b": 456.45251, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "TAX_ID", "bbox": {"l": 211.75098, "t": 447.67773, "r": 249.22647, "b": 456.45251, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "RETURN ", "bbox": {"l": 136.8, "t": 459.67755, "r": 176.75952, "b": 468.45233, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "CASE ", "bbox": {"l": 136.8, "t": 471.67737, "r": 161.75977, "b": 480.45215, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1", "bbox": {"l": 152.84189, "t": 483.67719, "r": 441.59589, "b": 492.45197, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "THEN EMPLOYEES . TAX_ID ", "bbox": {"l": 154.01309, "t": 495.677, "r": 291.7178, "b": 504.45178, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 ", "bbox": {"l": 152.80757, "t": 519.67661, "r": 451.6156, "b": 528.45139, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "AND SESSION_USER = EMPLOYEES . USER_ID ", "bbox": {"l": 153.21835, "t": 531.67642, "r": 366.65683, "b": 540.45117, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "THEN EMPLOYEES . TAX_ID", "bbox": {"l": 154.09363, "t": 543.6762200000001, "r": 286.67804, "b": 552.45097, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 152.82599, "t": 567.67583, "r": 446.63561999999996, "b": 576.45058, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "AND SESSION_USER <> EMPLOYEES . USER_ID ", "bbox": {"l": 153.18398, "t": 579.67563, "r": 371.63684, "b": 588.45038, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( EMPLOYEES . TAX_ID , 8 , 4 ) )", "bbox": {"l": 152.60088, "t": 591.67543, "r": 526.55469, "b": 600.45018, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1 ", "bbox": {"l": 152.80757, "t": 615.67505, "r": 451.6156, "b": 624.4498, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "THEN EMPLOYEES . TAX_ID ", "bbox": {"l": 154.01309, "t": 627.67485, "r": 291.7178, "b": 636.4496, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ELSE 'XXX-XX-XXXX' ", "bbox": {"l": 154.5134, "t": 651.67447, "r": 266.69827, "b": 660.44922, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "END", "bbox": {"l": 136.8, "t": 663.67427, "r": 157.7877, "b": 672.44904, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "ENABLE ;", "bbox": {"l": 136.8, "t": 675.67409, "r": 181.73952, "b": 684.44884, "coord_origin": "TOPLEFT"}}]}, "text": "CREATE MASK HR_SCHEMA.MASK_TAX_ID_ON_EMPLOYEES ON HR_SCHEMA.EMPLOYEES AS EMPLOYEES FOR COLUMN TAX_ID RETURN CASE WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1 THEN EMPLOYEES . TAX_ID WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER = EMPLOYEES . USER_ID THEN EMPLOYEES . TAX_ID WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER <> EMPLOYEES . USER_ID THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( EMPLOYEES . TAX_ID , 8 , 4 ) ) WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1 THEN EMPLOYEES . TAX_ID ELSE 'XXX-XX-XXXX' END ENABLE ;"}], "body": [{"label": "text", "id": 2, "page_no": 12, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.79959, "t": 71.65845000000002, "r": 166.73935, "b": 92.43304, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "RETURN", "bbox": {"l": 136.79959, "t": 71.65845000000002, "r": 166.73935, "b": 80.43322999999998, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "CASE", "bbox": {"l": 136.79959, "t": 83.65826000000004, "r": 156.77934, "b": 92.43304, "coord_origin": "TOPLEFT"}}]}, "text": "RETURN CASE"}, {"label": "code", "id": 3, "page_no": 12, "cluster": {"id": 3, "label": "code", "bbox": {"l": 136.79959, "t": 91.76913452148438, "r": 521.57428, "b": 261.5705871582031, "coord_origin": "TOPLEFT"}, "confidence": 0.778520941734314, "cells": [{"id": 4, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR', 'EMP' ) = 1", "bbox": {"l": 147.26993, "t": 95.65808000000015, "r": 466.61502, "b": 104.43286000000012, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "THEN EMPLOYEES . DATE_OF_BIRTH", "bbox": {"l": 147.73068, "t": 107.65790000000004, "r": 311.69717, "b": 116.43268, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 147.31944, "t": 131.65752999999995, "r": 436.61547999999993, "b": 140.43231000000003, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "AND SESSION_USER = EMPLOYEES . USER_ID", "bbox": {"l": 147.54245, "t": 143.65734999999995, "r": 351.65668, "b": 152.43213000000003, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "THEN EMPLOYEES . DATE_OF_BIRTH", "bbox": {"l": 147.73068, "t": 155.65716999999995, "r": 311.69717, "b": 164.43195000000003, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 147.31944, "t": 179.65679999999998, "r": 436.61547999999993, "b": 188.43158000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "AND SESSION_USER <> EMPLOYEES . USER_ID", "bbox": {"l": 147.52335, "t": 191.65661999999998, "r": 356.63669, "b": 200.43140000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "THEN ( 9999 || '-' ||", "bbox": {"l": 147.63832, "t": 203.65643, "r": 261.44492, "b": 212.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "MONTH ( EMPLOYEES . DATE_OF_BIRTH ) || '-'", "bbox": {"l": 272.28363, "t": 203.65643, "r": 499.89682, "b": 212.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "||", "bbox": {"l": 510.73557, "t": 203.65643, "r": 521.57428, "b": 212.43120999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "DAY (EMPLOYEES.DATE_OF_BIRTH ))", "bbox": {"l": 160.78555, "t": 215.65625, "r": 346.6767, "b": 224.43102999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "ELSE NULL", "bbox": {"l": 149.51941, "t": 227.65607, "r": 206.75861, "b": 236.43084999999996, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": " END", "bbox": {"l": 136.79959, "t": 239.65588000000002, "r": 156.77934, "b": 248.43066, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": " ENABLE ;", "bbox": {"l": 136.79959, "t": 251.65570000000002, "r": 186.7191, "b": 260.43048, "coord_origin": "TOPLEFT"}}]}, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR', 'EMP' ) = 1 THEN EMPLOYEES . DATE_OF_BIRTH WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER = EMPLOYEES . USER_ID THEN EMPLOYEES . DATE_OF_BIRTH WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER <> EMPLOYEES . USER_ID THEN ( 9999 || '-' || MONTH ( EMPLOYEES . DATE_OF_BIRTH ) || '-' || DAY (EMPLOYEES.DATE_OF_BIRTH )) ELSE NULL END ENABLE ;"}, {"label": "list_item", "id": 4, "page_no": 12, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.86044311523438, "t": 274.4537353515625, "r": 547.21222, "b": 296.77191162109375, "coord_origin": "TOPLEFT"}, "confidence": 0.8678946495056152, "cells": [{"id": 18, "text": "2.", "bbox": {"l": 136.79959, "t": 275.50591999999995, "r": 145.18994, "b": 284.7189, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "The other column to mask in this example is the TAX_ID information. In this example, the ", "bbox": {"l": 147.98672, "t": 275.50591999999995, "r": 547.21222, "b": 284.7189, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "rules to enforce include the following ones:", "bbox": {"l": 151.19977, "t": 287.50574, "r": 339.37903, "b": 296.71871999999996, "coord_origin": "TOPLEFT"}}]}, "text": "2. The other column to mask in this example is the TAX_ID information. In this example, the rules to enforce include the following ones:"}, {"label": "list_item", "id": 5, "page_no": 12, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 151.1599578857422, "t": 303.3277282714844, "r": 469.1528, "b": 313.69852000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9461130499839783, "cells": [{"id": 21, "text": "-", "bbox": {"l": 152.0394, "t": 304.48553000000004, "r": 157.61201, "b": 313.69852000000003, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Human Resources can see the unmasked TAX_ID of the employees.", "bbox": {"l": 165.59894, "t": 304.48553000000004, "r": 469.1528, "b": 313.69852000000003, "coord_origin": "TOPLEFT"}}]}, "text": "-Human Resources can see the unmasked TAX_ID of the employees."}, {"label": "list_item", "id": 6, "page_no": 12, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 151.2740936279297, "t": 320.54925537109375, "r": 403.95953, "b": 330.8575439453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9467734694480896, "cells": [{"id": 23, "text": "-", "bbox": {"l": 152.0394, "t": 321.52512, "r": 157.60504, "b": 330.7381, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Employees can see only their own unmasked TAX_ID.", "bbox": {"l": 165.59894, "t": 321.52512, "r": 403.95953, "b": 330.7381, "coord_origin": "TOPLEFT"}}]}, "text": "-Employees can see only their own unmasked TAX_ID."}, {"label": "list_item", "id": 7, "page_no": 12, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 151.4427947998047, "t": 337.3158264160156, "r": 545.16846, "b": 359.71771, "coord_origin": "TOPLEFT"}, "confidence": 0.9705167412757874, "cells": [{"id": 25, "text": "-", "bbox": {"l": 152.0394, "t": 338.50491, "r": 157.57019, "b": 347.7179, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Managers see a masked version of TAX_ID with the first five characters replaced with ", "bbox": {"l": 165.59894, "t": 338.50491, "r": 545.16846, "b": 347.7179, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "the X character (for example, XXX-XX-1234).", "bbox": {"l": 165.59894, "t": 350.50473, "r": 364.67947, "b": 359.71771, "coord_origin": "TOPLEFT"}}]}, "text": "-Managers see a masked version of TAX_ID with the first five characters replaced with the X character (for example, XXX-XX-1234)."}, {"label": "list_item", "id": 8, "page_no": 12, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 151.51747131347656, "t": 366.6339111328125, "r": 529.46362, "b": 377.1689147949219, "coord_origin": "TOPLEFT"}, "confidence": 0.9469640254974365, "cells": [{"id": 28, "text": "-", "bbox": {"l": 152.0394, "t": 367.48453, "r": 157.59309, "b": 376.6975100000001, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Any other person sees the entire TAX_ID as masked, for example, XXX-XX-XXXX.", "bbox": {"l": 165.59995, "t": 367.48453, "r": 529.46362, "b": 376.6975100000001, "coord_origin": "TOPLEFT"}}]}, "text": "-Any other person sees the entire TAX_ID as masked, for example, XXX-XX-XXXX."}, {"label": "list_item", "id": 9, "page_no": 12, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 150.69093322753906, "t": 383.80133056640625, "r": 530.0603, "b": 394.17559814453125, "coord_origin": "TOPLEFT"}, "confidence": 0.7003507614135742, "cells": [{"id": 30, "text": "To implement this column mask, run the SQL statement that is shown in Example 3-9.", "bbox": {"l": 151.19978, "t": 384.52411, "r": 530.0603, "b": 393.73709, "coord_origin": "TOPLEFT"}}]}, "text": "To implement this column mask, run the SQL statement that is shown in Example 3-9."}, {"label": "caption", "id": 10, "page_no": 12, "cluster": {"id": 10, "label": "caption", "bbox": {"l": 136.25662231445312, "t": 405.446044921875, "r": 352.31475830078125, "b": 415.0381164550781, "coord_origin": "TOPLEFT"}, "confidence": 0.8488205075263977, "cells": [{"id": 31, "text": "Example 3-9 Creating a mask on the TAX_ID column", "bbox": {"l": 136.8, "t": 406.51801, "r": 351.9873, "b": 414.84302, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-9 Creating a mask on the TAX_ID column"}, {"label": "code", "id": 11, "page_no": 12, "cluster": {"id": 11, "label": "code", "bbox": {"l": 135.95343017578125, "t": 418.5181884765625, "r": 535.87548828125, "b": 688.5432739257812, "coord_origin": "TOPLEFT"}, "confidence": 0.8411229848861694, "cells": [{"id": 32, "text": "CREATE MASK", "bbox": {"l": 136.8, "t": 423.67810000000003, "r": 192.91296, "b": 432.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "HR_SCHEMA.MASK_TAX_ID_ON_EMPLOYEES ", "bbox": {"l": 203.11533, "t": 423.67810000000003, "r": 381.65659, "b": 432.45287999999994, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "ON", "bbox": {"l": 136.8, "t": 435.67792, "r": 148.54184, "b": 444.45270000000005, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "HR_SCHEMA.EMPLOYEES AS EMPLOYEES ", "bbox": {"l": 177.89645, "t": 435.67792, "r": 371.63684, "b": 444.45270000000005, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "FOR COLUMN", "bbox": {"l": 136.8, "t": 447.67773, "r": 199.25916, "b": 456.45251, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "TAX_ID", "bbox": {"l": 211.75098, "t": 447.67773, "r": 249.22647, "b": 456.45251, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "RETURN ", "bbox": {"l": 136.8, "t": 459.67755, "r": 176.75952, "b": 468.45233, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "CASE ", "bbox": {"l": 136.8, "t": 471.67737, "r": 161.75977, "b": 480.45215, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1", "bbox": {"l": 152.84189, "t": 483.67719, "r": 441.59589, "b": 492.45197, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "THEN EMPLOYEES . TAX_ID ", "bbox": {"l": 154.01309, "t": 495.677, "r": 291.7178, "b": 504.45178, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 ", "bbox": {"l": 152.80757, "t": 519.67661, "r": 451.6156, "b": 528.45139, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "AND SESSION_USER = EMPLOYEES . USER_ID ", "bbox": {"l": 153.21835, "t": 531.67642, "r": 366.65683, "b": 540.45117, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "THEN EMPLOYEES . TAX_ID", "bbox": {"l": 154.09363, "t": 543.6762200000001, "r": 286.67804, "b": 552.45097, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1", "bbox": {"l": 152.82599, "t": 567.67583, "r": 446.63561999999996, "b": 576.45058, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "AND SESSION_USER <> EMPLOYEES . USER_ID ", "bbox": {"l": 153.18398, "t": 579.67563, "r": 371.63684, "b": 588.45038, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( EMPLOYEES . TAX_ID , 8 , 4 ) )", "bbox": {"l": 152.60088, "t": 591.67543, "r": 526.55469, "b": 600.45018, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1 ", "bbox": {"l": 152.80757, "t": 615.67505, "r": 451.6156, "b": 624.4498, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "THEN EMPLOYEES . TAX_ID ", "bbox": {"l": 154.01309, "t": 627.67485, "r": 291.7178, "b": 636.4496, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "ELSE 'XXX-XX-XXXX' ", "bbox": {"l": 154.5134, "t": 651.67447, "r": 266.69827, "b": 660.44922, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "END", "bbox": {"l": 136.8, "t": 663.67427, "r": 157.7877, "b": 672.44904, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "ENABLE ;", "bbox": {"l": 136.8, "t": 675.67409, "r": 181.73952, "b": 684.44884, "coord_origin": "TOPLEFT"}}]}, "text": "CREATE MASK HR_SCHEMA.MASK_TAX_ID_ON_EMPLOYEES ON HR_SCHEMA.EMPLOYEES AS EMPLOYEES FOR COLUMN TAX_ID RETURN CASE WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'HR' ) = 1 THEN EMPLOYEES . TAX_ID WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER = EMPLOYEES . USER_ID THEN EMPLOYEES . TAX_ID WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'MGR' ) = 1 AND SESSION_USER <> EMPLOYEES . USER_ID THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( EMPLOYEES . TAX_ID , 8 , 4 ) ) WHEN VERIFY_GROUP_FOR_USER ( SESSION_USER , 'EMP' ) = 1 THEN EMPLOYEES . TAX_ID ELSE 'XXX-XX-XXXX' END ENABLE ;"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 12, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 344.5617370605469, "t": 754.6708374023438, "r": 523.60162, "b": 764.1358032226562, "coord_origin": "TOPLEFT"}, "confidence": 0.9556928277015686, "cells": [{"id": 0, "text": "Chapter 3. Row and Column Access Control ", "bbox": {"l": 344.94, "t": 755.538002, "r": 523.60162, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 3. Row and Column Access Control"}, {"label": "page_footer", "id": 1, "page_no": 12, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6422729492188, "t": 754.1753540039062, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9105784296989441, "cells": [{"id": 1, "text": "27", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "27"}]}}, {"page_no": 13, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "28 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "3.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.22156, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 3-10 shows the masks that are created in the HR_SCHEMA.", "bbox": {"l": 148.02872, "t": 71.50867000000005, "r": 449.9523899999999, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 3-10 Column masks shown in System i Navigator", "bbox": {"l": 64.800003, "t": 173.53801999999996, "r": 293.13809, "b": 181.86298, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "3.6.6", "bbox": {"l": 64.800003, "t": 202.37469, "r": 94.275139, "b": 214.36273000000006, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Activating RCAC", "bbox": {"l": 97.959534, "t": 202.37469, "r": 203.98521, "b": 214.36273000000006, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Now that you have created the row permission and the two column masks, RCAC must be ", "bbox": {"l": 136.8, "t": 228.52868999999998, "r": 537.09131, "b": 237.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "activated. The row permission and the two column masks are enabled (last clause in the ", "bbox": {"l": 136.8, "t": 240.5285, "r": 529.20422, "b": 249.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "scripts), but now you must activate RCAC on the table. To do so, complete the following steps:", "bbox": {"l": 136.8, "t": 252.52832, "r": 547.22565, "b": 261.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "1.", "bbox": {"l": 136.8, "t": 269.50811999999996, "r": 145.32378, "b": 278.72113, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Run the SQL statements that are shown in Example 3-10.", "bbox": {"l": 148.16501, "t": 269.50811999999996, "r": 409.47888, "b": 278.72113, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Example 3-10 Activating RCAC on the EMPLOYEES table ", "bbox": {"l": 136.8, "t": 291.55798, "r": 375.29099, "b": 299.88300000000004, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "/*", "bbox": {"l": 136.8, "t": 308.65811, "r": 147.22942, "b": 317.43289, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Active Row Access Control (permissions) */", "bbox": {"l": 157.65884, "t": 308.65811, "r": 376.67661, "b": 317.43289, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "/*", "bbox": {"l": 136.8, "t": 320.65793, "r": 147.70349, "b": 329.43271, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Active Column Access Control (masks)", "bbox": {"l": 158.60696, "t": 320.65793, "r": 354.86963, "b": 329.43271, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "*/", "bbox": {"l": 365.77313, "t": 320.65793, "r": 376.67661, "b": 329.43271, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ALTER TABLE HR_SCHEMA.EMPLOYEES", "bbox": {"l": 136.8, "t": 332.65775, "r": 291.7178, "b": 341.43253, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ACTIVATE ROW ACCESS CONTROL", "bbox": {"l": 136.8, "t": 344.65756, "r": 271.67831, "b": 353.43234000000007, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "ACTIVATE COLUMN ACCESS CONTROL;", "bbox": {"l": 136.8, "t": 356.65738, "r": 291.7178, "b": 365.43216, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "2.", "bbox": {"l": 136.8, "t": 380.5076, "r": 145.14954, "b": 389.72058, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Look at the definition of the EMPLOYEE table, as shown in Figure 3-11. To do this, from ", "bbox": {"l": 147.93271, "t": 380.5076, "r": 540.80145, "b": 389.72058, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "the main navigation pane of System i Navigator, click ", "bbox": {"l": 151.20013, "t": 392.50742, "r": 387.36169, "b": 401.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Schemas", "bbox": {"l": 387.29993, "t": 392.50742, "r": 431.07614, "b": 401.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "\uf0ae", "bbox": {"l": 433.85992000000005, "t": 389.64889999999997, "r": 443.69043, "b": 401.83994, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "HR_SCHEMA", "bbox": {"l": 446.51906999999994, "t": 392.50742, "r": 509.73618000000005, "b": 401.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "\uf0ae", "bbox": {"l": 512.5788, "t": 389.64889999999997, "r": 522.4093, "b": 401.83994, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Tables", "bbox": {"l": 151.19812, "t": 404.50723000000005, "r": 181.12892, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ", right-click the ", "bbox": {"l": 181.79823, "t": 404.50723000000005, "r": 248.99638, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "EMPLOYEES", "bbox": {"l": 248.93860000000004, "t": 404.50723000000005, "r": 310.44357, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " table, and click ", "bbox": {"l": 310.49835, "t": 404.50723000000005, "r": 381.53305, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Definition", "bbox": {"l": 381.59882, "t": 404.50723000000005, "r": 427.68176, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": ".", "bbox": {"l": 427.67877, "t": 404.50723000000005, "r": 430.4476599999999, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Figure 3-11 Selecting the EMPLOYEES table from System i Navigator", "bbox": {"l": 64.800003, "t": 649.0378900000001, "r": 347.43054, "b": 657.3629, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.84088897705078, "t": 754.3895874023438, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9162001013755798, "cells": [{"id": 0, "text": "28 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.28304290771484, "t": 754.72412109375, "r": 334.42142, "b": 763.943603515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9540064334869385, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 136.14459228515625, "t": 70.61093139648438, "r": 449.9523899999999, "b": 81.22673034667969, "coord_origin": "TOPLEFT"}, "confidence": 0.8751051425933838, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.22156, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 3-10 shows the masks that are created in the HR_SCHEMA.", "bbox": {"l": 148.02872, "t": 71.50867000000005, "r": 449.9523899999999, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.17350769042969, "t": 172.7456512451172, "r": 294.42578125, "b": 181.8983612060547, "coord_origin": "TOPLEFT"}, "confidence": 0.944426953792572, "cells": [{"id": 4, "text": "Figure 3-10 Column masks shown in System i Navigator", "bbox": {"l": 64.800003, "t": 173.53801999999996, "r": 293.13809, "b": 181.86298, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 64.29059600830078, "t": 201.6618194580078, "r": 203.98521, "b": 214.99534606933594, "coord_origin": "TOPLEFT"}, "confidence": 0.9645015001296997, "cells": [{"id": 5, "text": "3.6.6", "bbox": {"l": 64.800003, "t": 202.37469, "r": 94.275139, "b": 214.36273000000006, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Activating RCAC", "bbox": {"l": 97.959534, "t": 202.37469, "r": 203.98521, "b": 214.36273000000006, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.1686553955078, "t": 228.097412109375, "r": 547.22565, "b": 262.4639587402344, "coord_origin": "TOPLEFT"}, "confidence": 0.9768573045730591, "cells": [{"id": 7, "text": "Now that you have created the row permission and the two column masks, RCAC must be ", "bbox": {"l": 136.8, "t": 228.52868999999998, "r": 537.09131, "b": 237.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "activated. The row permission and the two column masks are enabled (last clause in the ", "bbox": {"l": 136.8, "t": 240.5285, "r": 529.20422, "b": 249.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "scripts), but now you must activate RCAC on the table. To do so, complete the following steps:", "bbox": {"l": 136.8, "t": 252.52832, "r": 547.22565, "b": 261.74132999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 136.5933074951172, "t": 268.52996826171875, "r": 409.47888, "b": 278.8722229003906, "coord_origin": "TOPLEFT"}, "confidence": 0.9059442281723022, "cells": [{"id": 10, "text": "1.", "bbox": {"l": 136.8, "t": 269.50811999999996, "r": 145.32378, "b": 278.72113, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Run the SQL statements that are shown in Example 3-10.", "bbox": {"l": 148.16501, "t": 269.50811999999996, "r": 409.47888, "b": 278.72113, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "section_header", "bbox": {"l": 136.31597900390625, "t": 290.4278564453125, "r": 375.29099, "b": 300.4970703125, "coord_origin": "TOPLEFT"}, "confidence": 0.6570106148719788, "cells": [{"id": 12, "text": "Example 3-10 Activating RCAC on the EMPLOYEES table ", "bbox": {"l": 136.8, "t": 291.55798, "r": 375.29099, "b": 299.88300000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.7803192138672, "t": 307.09222412109375, "r": 376.67661, "b": 318.0027160644531, "coord_origin": "TOPLEFT"}, "confidence": 0.6002406477928162, "cells": [{"id": 13, "text": "/*", "bbox": {"l": 136.8, "t": 308.65811, "r": 147.22942, "b": 317.43289, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Active Row Access Control (permissions) */", "bbox": {"l": 157.65884, "t": 308.65811, "r": 376.67661, "b": 317.43289, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 136.8, "t": 320.65793, "r": 354.86963, "b": 365.43216, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 15, "text": "/*", "bbox": {"l": 136.8, "t": 320.65793, "r": 147.70349, "b": 329.43271, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Active Column Access Control (masks)", "bbox": {"l": 158.60696, "t": 320.65793, "r": 354.86963, "b": 329.43271, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ALTER TABLE HR_SCHEMA.EMPLOYEES", "bbox": {"l": 136.8, "t": 332.65775, "r": 291.7178, "b": 341.43253, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ACTIVATE ROW ACCESS CONTROL", "bbox": {"l": 136.8, "t": 344.65756, "r": 271.67831, "b": 353.43234000000007, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "ACTIVATE COLUMN ACCESS CONTROL;", "bbox": {"l": 136.8, "t": 356.65738, "r": 291.7178, "b": 365.43216, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 365.77313, "t": 320.65793, "r": 376.67661, "b": 329.43271, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 17, "text": "*/", "bbox": {"l": 365.77313, "t": 320.65793, "r": 376.67661, "b": 329.43271, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 135.87640380859375, "t": 379.3264465332031, "r": 540.80145, "b": 413.72021, "coord_origin": "TOPLEFT"}, "confidence": 0.9449256658554077, "cells": [{"id": 21, "text": "2.", "bbox": {"l": 136.8, "t": 380.5076, "r": 145.14954, "b": 389.72058, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Look at the definition of the EMPLOYEE table, as shown in Figure 3-11. To do this, from ", "bbox": {"l": 147.93271, "t": 380.5076, "r": 540.80145, "b": 389.72058, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "the main navigation pane of System i Navigator, click ", "bbox": {"l": 151.20013, "t": 392.50742, "r": 387.36169, "b": 401.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Schemas", "bbox": {"l": 387.29993, "t": 392.50742, "r": 431.07614, "b": 401.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "\uf0ae", "bbox": {"l": 433.85992000000005, "t": 389.64889999999997, "r": 443.69043, "b": 401.83994, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "HR_SCHEMA", "bbox": {"l": 446.51906999999994, "t": 392.50742, "r": 509.73618000000005, "b": 401.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "\uf0ae", "bbox": {"l": 512.5788, "t": 389.64889999999997, "r": 522.4093, "b": 401.83994, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Tables", "bbox": {"l": 151.19812, "t": 404.50723000000005, "r": 181.12892, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ", right-click the ", "bbox": {"l": 181.79823, "t": 404.50723000000005, "r": 248.99638, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "EMPLOYEES", "bbox": {"l": 248.93860000000004, "t": 404.50723000000005, "r": 310.44357, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " table, and click ", "bbox": {"l": 310.49835, "t": 404.50723000000005, "r": 381.53305, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Definition", "bbox": {"l": 381.59882, "t": 404.50723000000005, "r": 427.68176, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": ".", "bbox": {"l": 427.67877, "t": 404.50723000000005, "r": 430.4476599999999, "b": 413.72021, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "caption", "bbox": {"l": 64.33819580078125, "t": 648.241943359375, "r": 348.354736328125, "b": 657.4004516601562, "coord_origin": "TOPLEFT"}, "confidence": 0.9499983787536621, "cells": [{"id": 34, "text": "Figure 3-11 Selecting the EMPLOYEES table from System i Navigator", "bbox": {"l": 64.800003, "t": 649.0378900000001, "r": 347.43054, "b": 657.3629, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "picture", "bbox": {"l": 63.98516845703125, "t": 427.9049987792969, "r": 530.0479125976562, "b": 646.1395874023438, "coord_origin": "TOPLEFT"}, "confidence": 0.9801459908485413, "cells": []}, {"id": 14, "label": "picture", "bbox": {"l": 63.801902770996094, "t": 95.38243103027344, "r": 547.11474609375, "b": 170.03213500976562, "coord_origin": "TOPLEFT"}, "confidence": 0.9635391235351562, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 13, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.84088897705078, "t": 754.3895874023438, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9162001013755798, "cells": [{"id": 0, "text": "28 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "28"}, {"label": "page_footer", "id": 1, "page_no": 13, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.28304290771484, "t": 754.72412109375, "r": 334.42142, "b": 763.943603515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9540064334869385, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "list_item", "id": 2, "page_no": 13, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.14459228515625, "t": 70.61093139648438, "r": 449.9523899999999, "b": 81.22673034667969, "coord_origin": "TOPLEFT"}, "confidence": 0.8751051425933838, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.22156, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 3-10 shows the masks that are created in the HR_SCHEMA.", "bbox": {"l": 148.02872, "t": 71.50867000000005, "r": 449.9523899999999, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "3. Figure 3-10 shows the masks that are created in the HR_SCHEMA."}, {"label": "caption", "id": 3, "page_no": 13, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.17350769042969, "t": 172.7456512451172, "r": 294.42578125, "b": 181.8983612060547, "coord_origin": "TOPLEFT"}, "confidence": 0.944426953792572, "cells": [{"id": 4, "text": "Figure 3-10 Column masks shown in System i Navigator", "bbox": {"l": 64.800003, "t": 173.53801999999996, "r": 293.13809, "b": 181.86298, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-10 Column masks shown in System i Navigator"}, {"label": "section_header", "id": 4, "page_no": 13, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.29059600830078, "t": 201.6618194580078, "r": 203.98521, "b": 214.99534606933594, "coord_origin": "TOPLEFT"}, "confidence": 0.9645015001296997, "cells": [{"id": 5, "text": "3.6.6", "bbox": {"l": 64.800003, "t": 202.37469, "r": 94.275139, "b": 214.36273000000006, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Activating RCAC", "bbox": {"l": 97.959534, "t": 202.37469, "r": 203.98521, "b": 214.36273000000006, "coord_origin": "TOPLEFT"}}]}, "text": "3.6.6 Activating RCAC"}, {"label": "text", "id": 5, "page_no": 13, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.1686553955078, "t": 228.097412109375, "r": 547.22565, "b": 262.4639587402344, "coord_origin": "TOPLEFT"}, "confidence": 0.9768573045730591, "cells": [{"id": 7, "text": "Now that you have created the row permission and the two column masks, RCAC must be ", "bbox": {"l": 136.8, "t": 228.52868999999998, "r": 537.09131, "b": 237.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "activated. The row permission and the two column masks are enabled (last clause in the ", "bbox": {"l": 136.8, "t": 240.5285, "r": 529.20422, "b": 249.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "scripts), but now you must activate RCAC on the table. To do so, complete the following steps:", "bbox": {"l": 136.8, "t": 252.52832, "r": 547.22565, "b": 261.74132999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Now that you have created the row permission and the two column masks, RCAC must be activated. The row permission and the two column masks are enabled (last clause in the scripts), but now you must activate RCAC on the table. To do so, complete the following steps:"}, {"label": "list_item", "id": 6, "page_no": 13, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.5933074951172, "t": 268.52996826171875, "r": 409.47888, "b": 278.8722229003906, "coord_origin": "TOPLEFT"}, "confidence": 0.9059442281723022, "cells": [{"id": 10, "text": "1.", "bbox": {"l": 136.8, "t": 269.50811999999996, "r": 145.32378, "b": 278.72113, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Run the SQL statements that are shown in Example 3-10.", "bbox": {"l": 148.16501, "t": 269.50811999999996, "r": 409.47888, "b": 278.72113, "coord_origin": "TOPLEFT"}}]}, "text": "1. Run the SQL statements that are shown in Example 3-10."}, {"label": "section_header", "id": 7, "page_no": 13, "cluster": {"id": 7, "label": "section_header", "bbox": {"l": 136.31597900390625, "t": 290.4278564453125, "r": 375.29099, "b": 300.4970703125, "coord_origin": "TOPLEFT"}, "confidence": 0.6570106148719788, "cells": [{"id": 12, "text": "Example 3-10 Activating RCAC on the EMPLOYEES table ", "bbox": {"l": 136.8, "t": 291.55798, "r": 375.29099, "b": 299.88300000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-10 Activating RCAC on the EMPLOYEES table"}, {"label": "list_item", "id": 8, "page_no": 13, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.7803192138672, "t": 307.09222412109375, "r": 376.67661, "b": 318.0027160644531, "coord_origin": "TOPLEFT"}, "confidence": 0.6002406477928162, "cells": [{"id": 13, "text": "/*", "bbox": {"l": 136.8, "t": 308.65811, "r": 147.22942, "b": 317.43289, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Active Row Access Control (permissions) */", "bbox": {"l": 157.65884, "t": 308.65811, "r": 376.67661, "b": 317.43289, "coord_origin": "TOPLEFT"}}]}, "text": "/* Active Row Access Control (permissions) */"}, {"label": "text", "id": 9, "page_no": 13, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.8, "t": 320.65793, "r": 354.86963, "b": 365.43216, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 15, "text": "/*", "bbox": {"l": 136.8, "t": 320.65793, "r": 147.70349, "b": 329.43271, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Active Column Access Control (masks)", "bbox": {"l": 158.60696, "t": 320.65793, "r": 354.86963, "b": 329.43271, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ALTER TABLE HR_SCHEMA.EMPLOYEES", "bbox": {"l": 136.8, "t": 332.65775, "r": 291.7178, "b": 341.43253, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ACTIVATE ROW ACCESS CONTROL", "bbox": {"l": 136.8, "t": 344.65756, "r": 271.67831, "b": 353.43234000000007, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "ACTIVATE COLUMN ACCESS CONTROL;", "bbox": {"l": 136.8, "t": 356.65738, "r": 291.7178, "b": 365.43216, "coord_origin": "TOPLEFT"}}]}, "text": "/* Active Column Access Control (masks) ALTER TABLE HR_SCHEMA.EMPLOYEES ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL;"}, {"label": "text", "id": 10, "page_no": 13, "cluster": {"id": 10, "label": "text", "bbox": {"l": 365.77313, "t": 320.65793, "r": 376.67661, "b": 329.43271, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 17, "text": "*/", "bbox": {"l": 365.77313, "t": 320.65793, "r": 376.67661, "b": 329.43271, "coord_origin": "TOPLEFT"}}]}, "text": "*/"}, {"label": "list_item", "id": 11, "page_no": 13, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.87640380859375, "t": 379.3264465332031, "r": 540.80145, "b": 413.72021, "coord_origin": "TOPLEFT"}, "confidence": 0.9449256658554077, "cells": [{"id": 21, "text": "2.", "bbox": {"l": 136.8, "t": 380.5076, "r": 145.14954, "b": 389.72058, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Look at the definition of the EMPLOYEE table, as shown in Figure 3-11. To do this, from ", "bbox": {"l": 147.93271, "t": 380.5076, "r": 540.80145, "b": 389.72058, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "the main navigation pane of System i Navigator, click ", "bbox": {"l": 151.20013, "t": 392.50742, "r": 387.36169, "b": 401.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Schemas", "bbox": {"l": 387.29993, "t": 392.50742, "r": 431.07614, "b": 401.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "\uf0ae", "bbox": {"l": 433.85992000000005, "t": 389.64889999999997, "r": 443.69043, "b": 401.83994, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "HR_SCHEMA", "bbox": {"l": 446.51906999999994, "t": 392.50742, "r": 509.73618000000005, "b": 401.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "\uf0ae", "bbox": {"l": 512.5788, "t": 389.64889999999997, "r": 522.4093, "b": 401.83994, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Tables", "bbox": {"l": 151.19812, "t": 404.50723000000005, "r": 181.12892, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ", right-click the ", "bbox": {"l": 181.79823, "t": 404.50723000000005, "r": 248.99638, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "EMPLOYEES", "bbox": {"l": 248.93860000000004, "t": 404.50723000000005, "r": 310.44357, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " table, and click ", "bbox": {"l": 310.49835, "t": 404.50723000000005, "r": 381.53305, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Definition", "bbox": {"l": 381.59882, "t": 404.50723000000005, "r": 427.68176, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": ".", "bbox": {"l": 427.67877, "t": 404.50723000000005, "r": 430.4476599999999, "b": 413.72021, "coord_origin": "TOPLEFT"}}]}, "text": "2. Look at the definition of the EMPLOYEE table, as shown in Figure 3-11. To do this, from the main navigation pane of System i Navigator, click Schemas \uf0ae HR_SCHEMA \uf0ae Tables , right-click the EMPLOYEES table, and click Definition ."}, {"label": "caption", "id": 12, "page_no": 13, "cluster": {"id": 12, "label": "caption", "bbox": {"l": 64.33819580078125, "t": 648.241943359375, "r": 348.354736328125, "b": 657.4004516601562, "coord_origin": "TOPLEFT"}, "confidence": 0.9499983787536621, "cells": [{"id": 34, "text": "Figure 3-11 Selecting the EMPLOYEES table from System i Navigator", "bbox": {"l": 64.800003, "t": 649.0378900000001, "r": 347.43054, "b": 657.3629, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-11 Selecting the EMPLOYEES table from System i Navigator"}, {"label": "picture", "id": 13, "page_no": 13, "cluster": {"id": 13, "label": "picture", "bbox": {"l": 63.98516845703125, "t": 427.9049987792969, "r": 530.0479125976562, "b": 646.1395874023438, "coord_origin": "TOPLEFT"}, "confidence": 0.9801459908485413, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 14, "page_no": 13, "cluster": {"id": 14, "label": "picture", "bbox": {"l": 63.801902770996094, "t": 95.38243103027344, "r": 547.11474609375, "b": 170.03213500976562, "coord_origin": "TOPLEFT"}, "confidence": 0.9635391235351562, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 13, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.14459228515625, "t": 70.61093139648438, "r": 449.9523899999999, "b": 81.22673034667969, "coord_origin": "TOPLEFT"}, "confidence": 0.8751051425933838, "cells": [{"id": 2, "text": "3.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.22156, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 3-10 shows the masks that are created in the HR_SCHEMA.", "bbox": {"l": 148.02872, "t": 71.50867000000005, "r": 449.9523899999999, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "3. Figure 3-10 shows the masks that are created in the HR_SCHEMA."}, {"label": "caption", "id": 3, "page_no": 13, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.17350769042969, "t": 172.7456512451172, "r": 294.42578125, "b": 181.8983612060547, "coord_origin": "TOPLEFT"}, "confidence": 0.944426953792572, "cells": [{"id": 4, "text": "Figure 3-10 Column masks shown in System i Navigator", "bbox": {"l": 64.800003, "t": 173.53801999999996, "r": 293.13809, "b": 181.86298, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-10 Column masks shown in System i Navigator"}, {"label": "section_header", "id": 4, "page_no": 13, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.29059600830078, "t": 201.6618194580078, "r": 203.98521, "b": 214.99534606933594, "coord_origin": "TOPLEFT"}, "confidence": 0.9645015001296997, "cells": [{"id": 5, "text": "3.6.6", "bbox": {"l": 64.800003, "t": 202.37469, "r": 94.275139, "b": 214.36273000000006, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Activating RCAC", "bbox": {"l": 97.959534, "t": 202.37469, "r": 203.98521, "b": 214.36273000000006, "coord_origin": "TOPLEFT"}}]}, "text": "3.6.6 Activating RCAC"}, {"label": "text", "id": 5, "page_no": 13, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.1686553955078, "t": 228.097412109375, "r": 547.22565, "b": 262.4639587402344, "coord_origin": "TOPLEFT"}, "confidence": 0.9768573045730591, "cells": [{"id": 7, "text": "Now that you have created the row permission and the two column masks, RCAC must be ", "bbox": {"l": 136.8, "t": 228.52868999999998, "r": 537.09131, "b": 237.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "activated. The row permission and the two column masks are enabled (last clause in the ", "bbox": {"l": 136.8, "t": 240.5285, "r": 529.20422, "b": 249.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "scripts), but now you must activate RCAC on the table. To do so, complete the following steps:", "bbox": {"l": 136.8, "t": 252.52832, "r": 547.22565, "b": 261.74132999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Now that you have created the row permission and the two column masks, RCAC must be activated. The row permission and the two column masks are enabled (last clause in the scripts), but now you must activate RCAC on the table. To do so, complete the following steps:"}, {"label": "list_item", "id": 6, "page_no": 13, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.5933074951172, "t": 268.52996826171875, "r": 409.47888, "b": 278.8722229003906, "coord_origin": "TOPLEFT"}, "confidence": 0.9059442281723022, "cells": [{"id": 10, "text": "1.", "bbox": {"l": 136.8, "t": 269.50811999999996, "r": 145.32378, "b": 278.72113, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Run the SQL statements that are shown in Example 3-10.", "bbox": {"l": 148.16501, "t": 269.50811999999996, "r": 409.47888, "b": 278.72113, "coord_origin": "TOPLEFT"}}]}, "text": "1. Run the SQL statements that are shown in Example 3-10."}, {"label": "section_header", "id": 7, "page_no": 13, "cluster": {"id": 7, "label": "section_header", "bbox": {"l": 136.31597900390625, "t": 290.4278564453125, "r": 375.29099, "b": 300.4970703125, "coord_origin": "TOPLEFT"}, "confidence": 0.6570106148719788, "cells": [{"id": 12, "text": "Example 3-10 Activating RCAC on the EMPLOYEES table ", "bbox": {"l": 136.8, "t": 291.55798, "r": 375.29099, "b": 299.88300000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Example 3-10 Activating RCAC on the EMPLOYEES table"}, {"label": "list_item", "id": 8, "page_no": 13, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.7803192138672, "t": 307.09222412109375, "r": 376.67661, "b": 318.0027160644531, "coord_origin": "TOPLEFT"}, "confidence": 0.6002406477928162, "cells": [{"id": 13, "text": "/*", "bbox": {"l": 136.8, "t": 308.65811, "r": 147.22942, "b": 317.43289, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Active Row Access Control (permissions) */", "bbox": {"l": 157.65884, "t": 308.65811, "r": 376.67661, "b": 317.43289, "coord_origin": "TOPLEFT"}}]}, "text": "/* Active Row Access Control (permissions) */"}, {"label": "text", "id": 9, "page_no": 13, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.8, "t": 320.65793, "r": 354.86963, "b": 365.43216, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 15, "text": "/*", "bbox": {"l": 136.8, "t": 320.65793, "r": 147.70349, "b": 329.43271, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Active Column Access Control (masks)", "bbox": {"l": 158.60696, "t": 320.65793, "r": 354.86963, "b": 329.43271, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "ALTER TABLE HR_SCHEMA.EMPLOYEES", "bbox": {"l": 136.8, "t": 332.65775, "r": 291.7178, "b": 341.43253, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ACTIVATE ROW ACCESS CONTROL", "bbox": {"l": 136.8, "t": 344.65756, "r": 271.67831, "b": 353.43234000000007, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "ACTIVATE COLUMN ACCESS CONTROL;", "bbox": {"l": 136.8, "t": 356.65738, "r": 291.7178, "b": 365.43216, "coord_origin": "TOPLEFT"}}]}, "text": "/* Active Column Access Control (masks) ALTER TABLE HR_SCHEMA.EMPLOYEES ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL;"}, {"label": "text", "id": 10, "page_no": 13, "cluster": {"id": 10, "label": "text", "bbox": {"l": 365.77313, "t": 320.65793, "r": 376.67661, "b": 329.43271, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 17, "text": "*/", "bbox": {"l": 365.77313, "t": 320.65793, "r": 376.67661, "b": 329.43271, "coord_origin": "TOPLEFT"}}]}, "text": "*/"}, {"label": "list_item", "id": 11, "page_no": 13, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.87640380859375, "t": 379.3264465332031, "r": 540.80145, "b": 413.72021, "coord_origin": "TOPLEFT"}, "confidence": 0.9449256658554077, "cells": [{"id": 21, "text": "2.", "bbox": {"l": 136.8, "t": 380.5076, "r": 145.14954, "b": 389.72058, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Look at the definition of the EMPLOYEE table, as shown in Figure 3-11. To do this, from ", "bbox": {"l": 147.93271, "t": 380.5076, "r": 540.80145, "b": 389.72058, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "the main navigation pane of System i Navigator, click ", "bbox": {"l": 151.20013, "t": 392.50742, "r": 387.36169, "b": 401.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Schemas", "bbox": {"l": 387.29993, "t": 392.50742, "r": 431.07614, "b": 401.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "\uf0ae", "bbox": {"l": 433.85992000000005, "t": 389.64889999999997, "r": 443.69043, "b": 401.83994, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "HR_SCHEMA", "bbox": {"l": 446.51906999999994, "t": 392.50742, "r": 509.73618000000005, "b": 401.7203999999999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "\uf0ae", "bbox": {"l": 512.5788, "t": 389.64889999999997, "r": 522.4093, "b": 401.83994, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Tables", "bbox": {"l": 151.19812, "t": 404.50723000000005, "r": 181.12892, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": ", right-click the ", "bbox": {"l": 181.79823, "t": 404.50723000000005, "r": 248.99638, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "EMPLOYEES", "bbox": {"l": 248.93860000000004, "t": 404.50723000000005, "r": 310.44357, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": " table, and click ", "bbox": {"l": 310.49835, "t": 404.50723000000005, "r": 381.53305, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Definition", "bbox": {"l": 381.59882, "t": 404.50723000000005, "r": 427.68176, "b": 413.72021, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": ".", "bbox": {"l": 427.67877, "t": 404.50723000000005, "r": 430.4476599999999, "b": 413.72021, "coord_origin": "TOPLEFT"}}]}, "text": "2. Look at the definition of the EMPLOYEE table, as shown in Figure 3-11. To do this, from the main navigation pane of System i Navigator, click Schemas \uf0ae HR_SCHEMA \uf0ae Tables , right-click the EMPLOYEES table, and click Definition ."}, {"label": "caption", "id": 12, "page_no": 13, "cluster": {"id": 12, "label": "caption", "bbox": {"l": 64.33819580078125, "t": 648.241943359375, "r": 348.354736328125, "b": 657.4004516601562, "coord_origin": "TOPLEFT"}, "confidence": 0.9499983787536621, "cells": [{"id": 34, "text": "Figure 3-11 Selecting the EMPLOYEES table from System i Navigator", "bbox": {"l": 64.800003, "t": 649.0378900000001, "r": 347.43054, "b": 657.3629, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3-11 Selecting the EMPLOYEES table from System i Navigator"}, {"label": "picture", "id": 13, "page_no": 13, "cluster": {"id": 13, "label": "picture", "bbox": {"l": 63.98516845703125, "t": 427.9049987792969, "r": 530.0479125976562, "b": 646.1395874023438, "coord_origin": "TOPLEFT"}, "confidence": 0.9801459908485413, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 14, "page_no": 13, "cluster": {"id": 14, "label": "picture", "bbox": {"l": 63.801902770996094, "t": 95.38243103027344, "r": 547.11474609375, "b": 170.03213500976562, "coord_origin": "TOPLEFT"}, "confidence": 0.9635391235351562, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 13, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.84088897705078, "t": 754.3895874023438, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9162001013755798, "cells": [{"id": 0, "text": "28 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "28"}, {"label": "page_footer", "id": 1, "page_no": 13, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.28304290771484, "t": 754.72412109375, "r": 334.42142, "b": 763.943603515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9540064334869385, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 93.420303, "t": 755.538002, "r": 334.42142, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 14, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "77", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.19554, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 4-68 shows the Visual Explain of the same SQL statement, but with RCAC ", "bbox": {"l": 147.9942, "t": 71.50903000000005, "r": 513.35919, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "enabled. It is clear that the implementation of the SQL statement is more complex ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 514.04858, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "because the row permission rule becomes part of the ", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 389.64822, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "WHERE", "bbox": {"l": 389.57941, "t": 95.65808000000015, "r": 414.53918, "b": 104.48266999999998, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " clause.", "bbox": {"l": 414.59991, "t": 95.50867000000005, "r": 448.8892200000001, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Figure 4-68 Visual Explain with RCAC enabled", "bbox": {"l": 136.8, "t": 480.55798, "r": 327.09329, "b": 488.883, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "3.", "bbox": {"l": 136.8, "t": 506.56863, "r": 145.17432, "b": 515.78162, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Compare the advised indexes that are provided by the Optimizer without RCAC and with ", "bbox": {"l": 147.96574, "t": 506.56863, "r": 543.63715, "b": 515.78162, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "RCAC enabled. Figure 4-69 shows the index advice for the SQL statement without RCAC ", "bbox": {"l": 151.20016, "t": 518.56845, "r": 547.23944, "b": 527.78143, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "enabled. The index being advised is for the ORDER BY clause.", "bbox": {"l": 151.20016, "t": 530.5682400000001, "r": 430.28333, "b": 539.78125, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Figure 4-69 Index advice with no RCAC", "bbox": {"l": 64.800003, "t": 667.5179, "r": 227.10149, "b": 675.8429, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 214.30316162109375, "t": 754.7198486328125, "r": 523.59357, "b": 764.0086669921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9557602405548096, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.3654174804688, "t": 754.280029296875, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9056527614593506, "cells": [{"id": 1, "text": "77", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 136.00341796875, "t": 70.4630355834961, "r": 514.04858, "b": 104.82832336425781, "coord_origin": "TOPLEFT"}, "confidence": 0.9761855006217957, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.19554, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 4-68 shows the Visual Explain of the same SQL statement, but with RCAC ", "bbox": {"l": 147.9942, "t": 71.50903000000005, "r": 513.35919, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "enabled. It is clear that the implementation of the SQL statement is more complex ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 514.04858, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "because the row permission rule becomes part of the ", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 389.64822, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "WHERE", "bbox": {"l": 389.57941, "t": 95.65808000000015, "r": 414.53918, "b": 104.48266999999998, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " clause.", "bbox": {"l": 414.59991, "t": 95.50867000000005, "r": 448.8892200000001, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 135.9990692138672, "t": 480.2080078125, "r": 327.9913635253906, "b": 489.21875, "coord_origin": "TOPLEFT"}, "confidence": 0.9529653191566467, "cells": [{"id": 8, "text": "Figure 4-68 Visual Explain with RCAC enabled", "bbox": {"l": 136.8, "t": 480.55798, "r": 327.09329, "b": 488.883, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 136.2928924560547, "t": 505.9650573730469, "r": 547.23944, "b": 540.0134887695312, "coord_origin": "TOPLEFT"}, "confidence": 0.9766737818717957, "cells": [{"id": 9, "text": "3.", "bbox": {"l": 136.8, "t": 506.56863, "r": 145.17432, "b": 515.78162, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Compare the advised indexes that are provided by the Optimizer without RCAC and with ", "bbox": {"l": 147.96574, "t": 506.56863, "r": 543.63715, "b": 515.78162, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "RCAC enabled. Figure 4-69 shows the index advice for the SQL statement without RCAC ", "bbox": {"l": 151.20016, "t": 518.56845, "r": 547.23944, "b": 527.78143, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "enabled. The index being advised is for the ORDER BY clause.", "bbox": {"l": 151.20016, "t": 530.5682400000001, "r": 430.28333, "b": 539.78125, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 64.35660552978516, "t": 666.6797485351562, "r": 227.347412109375, "b": 675.9388427734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9514287114143372, "cells": [{"id": 13, "text": "Figure 4-69 Index advice with no RCAC", "bbox": {"l": 64.800003, "t": 667.5179, "r": 227.10149, "b": 675.8429, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "picture", "bbox": {"l": 136.5016632080078, "t": 119.2491226196289, "r": 545.4508666992188, "b": 477.5412292480469, "coord_origin": "TOPLEFT"}, "confidence": 0.9864527583122253, "cells": []}, {"id": 7, "label": "picture", "bbox": {"l": 64.27847290039062, "t": 553.5813598632812, "r": 506.39263916015625, "b": 664.0870361328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9797717928886414, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 14, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.30316162109375, "t": 754.7198486328125, "r": 523.59357, "b": 764.0086669921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9557602405548096, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 14, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.3654174804688, "t": 754.280029296875, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9056527614593506, "cells": [{"id": 1, "text": "77", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "77"}, {"label": "list_item", "id": 2, "page_no": 14, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.00341796875, "t": 70.4630355834961, "r": 514.04858, "b": 104.82832336425781, "coord_origin": "TOPLEFT"}, "confidence": 0.9761855006217957, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.19554, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 4-68 shows the Visual Explain of the same SQL statement, but with RCAC ", "bbox": {"l": 147.9942, "t": 71.50903000000005, "r": 513.35919, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "enabled. It is clear that the implementation of the SQL statement is more complex ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 514.04858, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "because the row permission rule becomes part of the ", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 389.64822, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "WHERE", "bbox": {"l": 389.57941, "t": 95.65808000000015, "r": 414.53918, "b": 104.48266999999998, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " clause.", "bbox": {"l": 414.59991, "t": 95.50867000000005, "r": 448.8892200000001, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "2. Figure 4-68 shows the Visual Explain of the same SQL statement, but with RCAC enabled. It is clear that the implementation of the SQL statement is more complex because the row permission rule becomes part of the WHERE clause."}, {"label": "caption", "id": 3, "page_no": 14, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.9990692138672, "t": 480.2080078125, "r": 327.9913635253906, "b": 489.21875, "coord_origin": "TOPLEFT"}, "confidence": 0.9529653191566467, "cells": [{"id": 8, "text": "Figure 4-68 Visual Explain with RCAC enabled", "bbox": {"l": 136.8, "t": 480.55798, "r": 327.09329, "b": 488.883, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-68 Visual Explain with RCAC enabled"}, {"label": "list_item", "id": 4, "page_no": 14, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.2928924560547, "t": 505.9650573730469, "r": 547.23944, "b": 540.0134887695312, "coord_origin": "TOPLEFT"}, "confidence": 0.9766737818717957, "cells": [{"id": 9, "text": "3.", "bbox": {"l": 136.8, "t": 506.56863, "r": 145.17432, "b": 515.78162, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Compare the advised indexes that are provided by the Optimizer without RCAC and with ", "bbox": {"l": 147.96574, "t": 506.56863, "r": 543.63715, "b": 515.78162, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "RCAC enabled. Figure 4-69 shows the index advice for the SQL statement without RCAC ", "bbox": {"l": 151.20016, "t": 518.56845, "r": 547.23944, "b": 527.78143, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "enabled. The index being advised is for the ORDER BY clause.", "bbox": {"l": 151.20016, "t": 530.5682400000001, "r": 430.28333, "b": 539.78125, "coord_origin": "TOPLEFT"}}]}, "text": "3. Compare the advised indexes that are provided by the Optimizer without RCAC and with RCAC enabled. Figure 4-69 shows the index advice for the SQL statement without RCAC enabled. The index being advised is for the ORDER BY clause."}, {"label": "caption", "id": 5, "page_no": 14, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.35660552978516, "t": 666.6797485351562, "r": 227.347412109375, "b": 675.9388427734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9514287114143372, "cells": [{"id": 13, "text": "Figure 4-69 Index advice with no RCAC", "bbox": {"l": 64.800003, "t": 667.5179, "r": 227.10149, "b": 675.8429, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-69 Index advice with no RCAC"}, {"label": "picture", "id": 6, "page_no": 14, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 136.5016632080078, "t": 119.2491226196289, "r": 545.4508666992188, "b": 477.5412292480469, "coord_origin": "TOPLEFT"}, "confidence": 0.9864527583122253, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 7, "page_no": 14, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 64.27847290039062, "t": 553.5813598632812, "r": 506.39263916015625, "b": 664.0870361328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9797717928886414, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 14, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.00341796875, "t": 70.4630355834961, "r": 514.04858, "b": 104.82832336425781, "coord_origin": "TOPLEFT"}, "confidence": 0.9761855006217957, "cells": [{"id": 2, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.19554, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 4-68 shows the Visual Explain of the same SQL statement, but with RCAC ", "bbox": {"l": 147.9942, "t": 71.50903000000005, "r": 513.35919, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "enabled. It is clear that the implementation of the SQL statement is more complex ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 514.04858, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "because the row permission rule becomes part of the ", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 389.64822, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "WHERE", "bbox": {"l": 389.57941, "t": 95.65808000000015, "r": 414.53918, "b": 104.48266999999998, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": " clause.", "bbox": {"l": 414.59991, "t": 95.50867000000005, "r": 448.8892200000001, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "2. Figure 4-68 shows the Visual Explain of the same SQL statement, but with RCAC enabled. It is clear that the implementation of the SQL statement is more complex because the row permission rule becomes part of the WHERE clause."}, {"label": "caption", "id": 3, "page_no": 14, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 135.9990692138672, "t": 480.2080078125, "r": 327.9913635253906, "b": 489.21875, "coord_origin": "TOPLEFT"}, "confidence": 0.9529653191566467, "cells": [{"id": 8, "text": "Figure 4-68 Visual Explain with RCAC enabled", "bbox": {"l": 136.8, "t": 480.55798, "r": 327.09329, "b": 488.883, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-68 Visual Explain with RCAC enabled"}, {"label": "list_item", "id": 4, "page_no": 14, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.2928924560547, "t": 505.9650573730469, "r": 547.23944, "b": 540.0134887695312, "coord_origin": "TOPLEFT"}, "confidence": 0.9766737818717957, "cells": [{"id": 9, "text": "3.", "bbox": {"l": 136.8, "t": 506.56863, "r": 145.17432, "b": 515.78162, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Compare the advised indexes that are provided by the Optimizer without RCAC and with ", "bbox": {"l": 147.96574, "t": 506.56863, "r": 543.63715, "b": 515.78162, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "RCAC enabled. Figure 4-69 shows the index advice for the SQL statement without RCAC ", "bbox": {"l": 151.20016, "t": 518.56845, "r": 547.23944, "b": 527.78143, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "enabled. The index being advised is for the ORDER BY clause.", "bbox": {"l": 151.20016, "t": 530.5682400000001, "r": 430.28333, "b": 539.78125, "coord_origin": "TOPLEFT"}}]}, "text": "3. Compare the advised indexes that are provided by the Optimizer without RCAC and with RCAC enabled. Figure 4-69 shows the index advice for the SQL statement without RCAC enabled. The index being advised is for the ORDER BY clause."}, {"label": "caption", "id": 5, "page_no": 14, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.35660552978516, "t": 666.6797485351562, "r": 227.347412109375, "b": 675.9388427734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9514287114143372, "cells": [{"id": 13, "text": "Figure 4-69 Index advice with no RCAC", "bbox": {"l": 64.800003, "t": 667.5179, "r": 227.10149, "b": 675.8429, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4-69 Index advice with no RCAC"}, {"label": "picture", "id": 6, "page_no": 14, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 136.5016632080078, "t": 119.2491226196289, "r": 545.4508666992188, "b": 477.5412292480469, "coord_origin": "TOPLEFT"}, "confidence": 0.9864527583122253, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 7, "page_no": 14, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 64.27847290039062, "t": 553.5813598632812, "r": 506.39263916015625, "b": 664.0870361328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9797717928886414, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 14, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 214.30316162109375, "t": 754.7198486328125, "r": 523.59357, "b": 764.0086669921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9557602405548096, "cells": [{"id": 0, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example ", "bbox": {"l": 214.8, "t": 755.538002, "r": 523.59357, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Chapter 4. Implementing Row and Column Access Control: Banking example"}, {"label": "page_footer", "id": 1, "page_no": 14, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.3654174804688, "t": 754.280029296875, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9056527614593506, "cells": [{"id": 1, "text": "77", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "77"}]}}, {"page_no": 15, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "124 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "THEN C . CUSTOMER_TAX_ID ", "bbox": {"l": 64.800308, "t": 71.67296999999996, "r": 177.1194, "b": 79.60199, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 ", "bbox": {"l": 64.800308, "t": 82.65295000000015, "r": 365.87817, "b": 90.58196999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( C . CUSTOMER_TAX_ID , 8 , 4 ) ) ", "bbox": {"l": 64.800308, "t": 93.63292999999999, "r": 392.81787, "b": 101.56195000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 104.67322000000001, "r": 374.87817, "b": 112.60222999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "THEN C . CUSTOMER_TAX_ID ", "bbox": {"l": 64.800308, "t": 115.65319999999997, "r": 177.1194, "b": 123.58220999999992, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ELSE 'XXX-XX-XXXX' ", "bbox": {"l": 64.800308, "t": 126.63318000000015, "r": 150.1797, "b": 134.56219, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "END ", "bbox": {"l": 64.800308, "t": 137.67345999999998, "r": 96.240005, "b": 145.60248, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 148.65344000000005, "r": 124.14001, "b": 156.58245999999997, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "CREATE MASK BANK_SCHEMA.MASK_DRIVERS_LICENSE_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 170.67377, "r": 460.25757, "b": 178.60278000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "FOR COLUMN CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 79.20031, "t": 181.65374999999995, "r": 272.45911, "b": 189.58276, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 192.69403, "r": 137.64001, "b": 200.62305000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 203.67400999999995, "r": 361.37817, "b": 211.60303, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 64.800308, "t": 214.65399000000002, "r": 249.0591, "b": 222.58300999999994, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 ", "bbox": {"l": 64.800308, "t": 225.69426999999996, "r": 365.87817, "b": 233.62329, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 64.800308, "t": 236.67426, "r": 249.0591, "b": 244.60326999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 247.65423999999996, "r": 374.87817, "b": 255.58325000000002, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 64.800308, "t": 258.69452, "r": 249.0591, "b": 266.62354000000005, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ELSE '*************' ", "bbox": {"l": 64.800308, "t": 269.67449999999997, "r": 159.1797, "b": 277.60352, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "END ", "bbox": {"l": 64.800308, "t": 280.65454, "r": 96.240005, "b": 288.58353, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 291.69485000000003, "r": 124.14001, "b": 299.62384, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "CREATE MASK BANK_SCHEMA.MASK_LOGIN_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 313.65485, "r": 428.81786999999997, "b": 321.58383, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "FOR COLUMN CUSTOMER_LOGIN_ID ", "bbox": {"l": 79.20031, "t": 324.69516, "r": 209.51941, "b": 332.62415, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 335.67517, "r": 137.64001, "b": 343.6041599999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 346.65518, "r": 361.37817, "b": 354.58417, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "THEN C . CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800308, "t": 357.69550000000004, "r": 186.1194, "b": 365.62448, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 368.67551, "r": 374.87817, "b": 376.60449, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "THEN C . CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800308, "t": 379.65552, "r": 186.1194, "b": 387.5845, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "ELSE '*****' ", "bbox": {"l": 64.800308, "t": 390.69583, "r": 123.24001, "b": 398.62482, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "END ", "bbox": {"l": 64.800308, "t": 401.67584, "r": 96.240005, "b": 409.60482999999994, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 412.65585, "r": 124.14001, "b": 420.58484, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 434.67615, "r": 469.25757, "b": 442.60513, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "FOR COLUMN CUSTOMER_SECURITY_QUESTION ", "bbox": {"l": 79.20031, "t": 445.65616000000006, "r": 249.95911, "b": 453.58514, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 456.6964699999999, "r": 137.64001, "b": 464.62546, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 467.67648, "r": 361.37817, "b": 475.60547, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "THEN C . CUSTOMER_SECURITY_QUESTION ", "bbox": {"l": 64.800308, "t": 478.65649, "r": 226.5591, "b": 486.58548, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 489.69681, "r": 374.87817, "b": 497.62579, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "THEN C . CUSTOMER_SECURITY_QUESTION ", "bbox": {"l": 64.800308, "t": 500.67682, "r": 226.5591, "b": 508.6058, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ELSE '*****' ", "bbox": {"l": 64.800308, "t": 511.65683, "r": 123.24001, "b": 519.58582, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "END ", "bbox": {"l": 64.800308, "t": 522.69714, "r": 96.240005, "b": 530.62613, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 533.6771200000001, "r": 124.14001, "b": 541.60614, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 555.69745, "r": 500.69727, "b": 563.62645, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "FOR COLUMN CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 79.20031, "t": 566.6774399999999, "r": 281.3988, "b": 574.60645, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 577.65744, "r": 137.64001, "b": 585.58644, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 588.6977400000001, "r": 361.37817, "b": 596.62674, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 64.800308, "t": 599.67773, "r": 258.05908, "b": 607.60674, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 610.65773, "r": 374.87817, "b": 618.58673, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 64.800308, "t": 621.69803, "r": 258.05908, "b": 629.62703, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "ELSE '*****' ", "bbox": {"l": 64.800308, "t": 632.6780200000001, "r": 123.24001, "b": 640.60703, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "END ", "bbox": {"l": 64.800308, "t": 643.71832, "r": 96.240005, "b": 651.64732, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 654.69832, "r": 124.14001, "b": 662.62732, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800308, "t": 676.71861, "r": 226.5591, "b": 684.64761, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ACTIVATE ROW ACCESS CONTROL ", "bbox": {"l": 79.20031, "t": 687.69862, "r": 214.01941, "b": 695.627617, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "ACTIVATE COLUMN ACCESS CONTROL ;", "bbox": {"l": 79.20031, "t": 698.678619, "r": 223.01941, "b": 706.60762, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.50080871582031, "t": 754.5338745117188, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8994000554084778, "cells": [{"id": 0, "text": "124 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 98.63966369628906, "t": 754.71435546875, "r": 339.882080078125, "b": 764.0100708007812, "coord_origin": "TOPLEFT"}, "confidence": 0.9430771470069885, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "code", "bbox": {"l": 62.60613250732422, "t": 69.35981750488281, "r": 500.69727, "b": 707.7635498046875, "coord_origin": "TOPLEFT"}, "confidence": 0.763217568397522, "cells": [{"id": 2, "text": "THEN C . CUSTOMER_TAX_ID ", "bbox": {"l": 64.800308, "t": 71.67296999999996, "r": 177.1194, "b": 79.60199, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 ", "bbox": {"l": 64.800308, "t": 82.65295000000015, "r": 365.87817, "b": 90.58196999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( C . CUSTOMER_TAX_ID , 8 , 4 ) ) ", "bbox": {"l": 64.800308, "t": 93.63292999999999, "r": 392.81787, "b": 101.56195000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 104.67322000000001, "r": 374.87817, "b": 112.60222999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "THEN C . CUSTOMER_TAX_ID ", "bbox": {"l": 64.800308, "t": 115.65319999999997, "r": 177.1194, "b": 123.58220999999992, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ELSE 'XXX-XX-XXXX' ", "bbox": {"l": 64.800308, "t": 126.63318000000015, "r": 150.1797, "b": 134.56219, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "END ", "bbox": {"l": 64.800308, "t": 137.67345999999998, "r": 96.240005, "b": 145.60248, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 148.65344000000005, "r": 124.14001, "b": 156.58245999999997, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "CREATE MASK BANK_SCHEMA.MASK_DRIVERS_LICENSE_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 170.67377, "r": 460.25757, "b": 178.60278000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "FOR COLUMN CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 79.20031, "t": 181.65374999999995, "r": 272.45911, "b": 189.58276, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 192.69403, "r": 137.64001, "b": 200.62305000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 203.67400999999995, "r": 361.37817, "b": 211.60303, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 64.800308, "t": 214.65399000000002, "r": 249.0591, "b": 222.58300999999994, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 ", "bbox": {"l": 64.800308, "t": 225.69426999999996, "r": 365.87817, "b": 233.62329, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 64.800308, "t": 236.67426, "r": 249.0591, "b": 244.60326999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 247.65423999999996, "r": 374.87817, "b": 255.58325000000002, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 64.800308, "t": 258.69452, "r": 249.0591, "b": 266.62354000000005, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ELSE '*************' ", "bbox": {"l": 64.800308, "t": 269.67449999999997, "r": 159.1797, "b": 277.60352, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "END ", "bbox": {"l": 64.800308, "t": 280.65454, "r": 96.240005, "b": 288.58353, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 291.69485000000003, "r": 124.14001, "b": 299.62384, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "CREATE MASK BANK_SCHEMA.MASK_LOGIN_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 313.65485, "r": 428.81786999999997, "b": 321.58383, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "FOR COLUMN CUSTOMER_LOGIN_ID ", "bbox": {"l": 79.20031, "t": 324.69516, "r": 209.51941, "b": 332.62415, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 335.67517, "r": 137.64001, "b": 343.6041599999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 346.65518, "r": 361.37817, "b": 354.58417, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "THEN C . CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800308, "t": 357.69550000000004, "r": 186.1194, "b": 365.62448, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 368.67551, "r": 374.87817, "b": 376.60449, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "THEN C . CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800308, "t": 379.65552, "r": 186.1194, "b": 387.5845, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "ELSE '*****' ", "bbox": {"l": 64.800308, "t": 390.69583, "r": 123.24001, "b": 398.62482, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "END ", "bbox": {"l": 64.800308, "t": 401.67584, "r": 96.240005, "b": 409.60482999999994, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 412.65585, "r": 124.14001, "b": 420.58484, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 434.67615, "r": 469.25757, "b": 442.60513, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "FOR COLUMN CUSTOMER_SECURITY_QUESTION ", "bbox": {"l": 79.20031, "t": 445.65616000000006, "r": 249.95911, "b": 453.58514, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 456.6964699999999, "r": 137.64001, "b": 464.62546, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 467.67648, "r": 361.37817, "b": 475.60547, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "THEN C . CUSTOMER_SECURITY_QUESTION ", "bbox": {"l": 64.800308, "t": 478.65649, "r": 226.5591, "b": 486.58548, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 489.69681, "r": 374.87817, "b": 497.62579, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "THEN C . CUSTOMER_SECURITY_QUESTION ", "bbox": {"l": 64.800308, "t": 500.67682, "r": 226.5591, "b": 508.6058, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ELSE '*****' ", "bbox": {"l": 64.800308, "t": 511.65683, "r": 123.24001, "b": 519.58582, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "END ", "bbox": {"l": 64.800308, "t": 522.69714, "r": 96.240005, "b": 530.62613, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 533.6771200000001, "r": 124.14001, "b": 541.60614, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 555.69745, "r": 500.69727, "b": 563.62645, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "FOR COLUMN CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 79.20031, "t": 566.6774399999999, "r": 281.3988, "b": 574.60645, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 577.65744, "r": 137.64001, "b": 585.58644, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 588.6977400000001, "r": 361.37817, "b": 596.62674, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 64.800308, "t": 599.67773, "r": 258.05908, "b": 607.60674, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 610.65773, "r": 374.87817, "b": 618.58673, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 64.800308, "t": 621.69803, "r": 258.05908, "b": 629.62703, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "ELSE '*****' ", "bbox": {"l": 64.800308, "t": 632.6780200000001, "r": 123.24001, "b": 640.60703, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "END ", "bbox": {"l": 64.800308, "t": 643.71832, "r": 96.240005, "b": 651.64732, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 654.69832, "r": 124.14001, "b": 662.62732, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800308, "t": 676.71861, "r": 226.5591, "b": 684.64761, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ACTIVATE ROW ACCESS CONTROL ", "bbox": {"l": 79.20031, "t": 687.69862, "r": 214.01941, "b": 695.627617, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "ACTIVATE COLUMN ACCESS CONTROL ;", "bbox": {"l": 79.20031, "t": 698.678619, "r": 223.01941, "b": 706.60762, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 15, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.50080871582031, "t": 754.5338745117188, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8994000554084778, "cells": [{"id": 0, "text": "124 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "124"}, {"label": "page_footer", "id": 1, "page_no": 15, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.63966369628906, "t": 754.71435546875, "r": 339.882080078125, "b": 764.0100708007812, "coord_origin": "TOPLEFT"}, "confidence": 0.9430771470069885, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "code", "id": 2, "page_no": 15, "cluster": {"id": 2, "label": "code", "bbox": {"l": 62.60613250732422, "t": 69.35981750488281, "r": 500.69727, "b": 707.7635498046875, "coord_origin": "TOPLEFT"}, "confidence": 0.763217568397522, "cells": [{"id": 2, "text": "THEN C . CUSTOMER_TAX_ID ", "bbox": {"l": 64.800308, "t": 71.67296999999996, "r": 177.1194, "b": 79.60199, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 ", "bbox": {"l": 64.800308, "t": 82.65295000000015, "r": 365.87817, "b": 90.58196999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( C . CUSTOMER_TAX_ID , 8 , 4 ) ) ", "bbox": {"l": 64.800308, "t": 93.63292999999999, "r": 392.81787, "b": 101.56195000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 104.67322000000001, "r": 374.87817, "b": 112.60222999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "THEN C . CUSTOMER_TAX_ID ", "bbox": {"l": 64.800308, "t": 115.65319999999997, "r": 177.1194, "b": 123.58220999999992, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ELSE 'XXX-XX-XXXX' ", "bbox": {"l": 64.800308, "t": 126.63318000000015, "r": 150.1797, "b": 134.56219, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "END ", "bbox": {"l": 64.800308, "t": 137.67345999999998, "r": 96.240005, "b": 145.60248, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 148.65344000000005, "r": 124.14001, "b": 156.58245999999997, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "CREATE MASK BANK_SCHEMA.MASK_DRIVERS_LICENSE_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 170.67377, "r": 460.25757, "b": 178.60278000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "FOR COLUMN CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 79.20031, "t": 181.65374999999995, "r": 272.45911, "b": 189.58276, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 192.69403, "r": 137.64001, "b": 200.62305000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 203.67400999999995, "r": 361.37817, "b": 211.60303, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 64.800308, "t": 214.65399000000002, "r": 249.0591, "b": 222.58300999999994, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 ", "bbox": {"l": 64.800308, "t": 225.69426999999996, "r": 365.87817, "b": 233.62329, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 64.800308, "t": 236.67426, "r": 249.0591, "b": 244.60326999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 247.65423999999996, "r": 374.87817, "b": 255.58325000000002, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 64.800308, "t": 258.69452, "r": 249.0591, "b": 266.62354000000005, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ELSE '*************' ", "bbox": {"l": 64.800308, "t": 269.67449999999997, "r": 159.1797, "b": 277.60352, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "END ", "bbox": {"l": 64.800308, "t": 280.65454, "r": 96.240005, "b": 288.58353, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 291.69485000000003, "r": 124.14001, "b": 299.62384, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "CREATE MASK BANK_SCHEMA.MASK_LOGIN_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 313.65485, "r": 428.81786999999997, "b": 321.58383, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "FOR COLUMN CUSTOMER_LOGIN_ID ", "bbox": {"l": 79.20031, "t": 324.69516, "r": 209.51941, "b": 332.62415, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 335.67517, "r": 137.64001, "b": 343.6041599999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 346.65518, "r": 361.37817, "b": 354.58417, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "THEN C . CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800308, "t": 357.69550000000004, "r": 186.1194, "b": 365.62448, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 368.67551, "r": 374.87817, "b": 376.60449, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "THEN C . CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800308, "t": 379.65552, "r": 186.1194, "b": 387.5845, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "ELSE '*****' ", "bbox": {"l": 64.800308, "t": 390.69583, "r": 123.24001, "b": 398.62482, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "END ", "bbox": {"l": 64.800308, "t": 401.67584, "r": 96.240005, "b": 409.60482999999994, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 412.65585, "r": 124.14001, "b": 420.58484, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 434.67615, "r": 469.25757, "b": 442.60513, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "FOR COLUMN CUSTOMER_SECURITY_QUESTION ", "bbox": {"l": 79.20031, "t": 445.65616000000006, "r": 249.95911, "b": 453.58514, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 456.6964699999999, "r": 137.64001, "b": 464.62546, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 467.67648, "r": 361.37817, "b": 475.60547, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "THEN C . CUSTOMER_SECURITY_QUESTION ", "bbox": {"l": 64.800308, "t": 478.65649, "r": 226.5591, "b": 486.58548, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 489.69681, "r": 374.87817, "b": 497.62579, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "THEN C . CUSTOMER_SECURITY_QUESTION ", "bbox": {"l": 64.800308, "t": 500.67682, "r": 226.5591, "b": 508.6058, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ELSE '*****' ", "bbox": {"l": 64.800308, "t": 511.65683, "r": 123.24001, "b": 519.58582, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "END ", "bbox": {"l": 64.800308, "t": 522.69714, "r": 96.240005, "b": 530.62613, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 533.6771200000001, "r": 124.14001, "b": 541.60614, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 555.69745, "r": 500.69727, "b": 563.62645, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "FOR COLUMN CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 79.20031, "t": 566.6774399999999, "r": 281.3988, "b": 574.60645, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 577.65744, "r": 137.64001, "b": 585.58644, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 588.6977400000001, "r": 361.37817, "b": 596.62674, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 64.800308, "t": 599.67773, "r": 258.05908, "b": 607.60674, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 610.65773, "r": 374.87817, "b": 618.58673, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 64.800308, "t": 621.69803, "r": 258.05908, "b": 629.62703, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "ELSE '*****' ", "bbox": {"l": 64.800308, "t": 632.6780200000001, "r": 123.24001, "b": 640.60703, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "END ", "bbox": {"l": 64.800308, "t": 643.71832, "r": 96.240005, "b": 651.64732, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 654.69832, "r": 124.14001, "b": 662.62732, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800308, "t": 676.71861, "r": 226.5591, "b": 684.64761, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ACTIVATE ROW ACCESS CONTROL ", "bbox": {"l": 79.20031, "t": 687.69862, "r": 214.01941, "b": 695.627617, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "ACTIVATE COLUMN ACCESS CONTROL ;", "bbox": {"l": 79.20031, "t": 698.678619, "r": 223.01941, "b": 706.60762, "coord_origin": "TOPLEFT"}}]}, "text": "THEN C . CUSTOMER_TAX_ID WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( C . CUSTOMER_TAX_ID , 8 , 4 ) ) WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_TAX_ID ELSE 'XXX-XX-XXXX' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_DRIVERS_LICENSE_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_DRIVERS_LICENSE_NUMBER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ELSE '*************' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_LOGIN_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_LOGIN_ID RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_LOGIN_ID WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_LOGIN_ID ELSE '*****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_SECURITY_QUESTION RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION ELSE '*****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_SECURITY_QUESTION_ANSWER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ELSE '*****' END ENABLE ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL ;"}], "body": [{"label": "code", "id": 2, "page_no": 15, "cluster": {"id": 2, "label": "code", "bbox": {"l": 62.60613250732422, "t": 69.35981750488281, "r": 500.69727, "b": 707.7635498046875, "coord_origin": "TOPLEFT"}, "confidence": 0.763217568397522, "cells": [{"id": 2, "text": "THEN C . CUSTOMER_TAX_ID ", "bbox": {"l": 64.800308, "t": 71.67296999999996, "r": 177.1194, "b": 79.60199, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 ", "bbox": {"l": 64.800308, "t": 82.65295000000015, "r": 365.87817, "b": 90.58196999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( C . CUSTOMER_TAX_ID , 8 , 4 ) ) ", "bbox": {"l": 64.800308, "t": 93.63292999999999, "r": 392.81787, "b": 101.56195000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 104.67322000000001, "r": 374.87817, "b": 112.60222999999996, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "THEN C . CUSTOMER_TAX_ID ", "bbox": {"l": 64.800308, "t": 115.65319999999997, "r": 177.1194, "b": 123.58220999999992, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "ELSE 'XXX-XX-XXXX' ", "bbox": {"l": 64.800308, "t": 126.63318000000015, "r": 150.1797, "b": 134.56219, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "END ", "bbox": {"l": 64.800308, "t": 137.67345999999998, "r": 96.240005, "b": 145.60248, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 148.65344000000005, "r": 124.14001, "b": 156.58245999999997, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "CREATE MASK BANK_SCHEMA.MASK_DRIVERS_LICENSE_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 170.67377, "r": 460.25757, "b": 178.60278000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "FOR COLUMN CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 79.20031, "t": 181.65374999999995, "r": 272.45911, "b": 189.58276, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 192.69403, "r": 137.64001, "b": 200.62305000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 203.67400999999995, "r": 361.37817, "b": 211.60303, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 64.800308, "t": 214.65399000000002, "r": 249.0591, "b": 222.58300999999994, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 ", "bbox": {"l": 64.800308, "t": 225.69426999999996, "r": 365.87817, "b": 233.62329, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 64.800308, "t": 236.67426, "r": 249.0591, "b": 244.60326999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 247.65423999999996, "r": 374.87817, "b": 255.58325000000002, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ", "bbox": {"l": 64.800308, "t": 258.69452, "r": 249.0591, "b": 266.62354000000005, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "ELSE '*************' ", "bbox": {"l": 64.800308, "t": 269.67449999999997, "r": 159.1797, "b": 277.60352, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "END ", "bbox": {"l": 64.800308, "t": 280.65454, "r": 96.240005, "b": 288.58353, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 291.69485000000003, "r": 124.14001, "b": 299.62384, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "CREATE MASK BANK_SCHEMA.MASK_LOGIN_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 313.65485, "r": 428.81786999999997, "b": 321.58383, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "FOR COLUMN CUSTOMER_LOGIN_ID ", "bbox": {"l": 79.20031, "t": 324.69516, "r": 209.51941, "b": 332.62415, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 335.67517, "r": 137.64001, "b": 343.6041599999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 346.65518, "r": 361.37817, "b": 354.58417, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "THEN C . CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800308, "t": 357.69550000000004, "r": 186.1194, "b": 365.62448, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 368.67551, "r": 374.87817, "b": 376.60449, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "THEN C . CUSTOMER_LOGIN_ID ", "bbox": {"l": 64.800308, "t": 379.65552, "r": 186.1194, "b": 387.5845, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "ELSE '*****' ", "bbox": {"l": 64.800308, "t": 390.69583, "r": 123.24001, "b": 398.62482, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "END ", "bbox": {"l": 64.800308, "t": 401.67584, "r": 96.240005, "b": 409.60482999999994, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 412.65585, "r": 124.14001, "b": 420.58484, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 434.67615, "r": 469.25757, "b": 442.60513, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "FOR COLUMN CUSTOMER_SECURITY_QUESTION ", "bbox": {"l": 79.20031, "t": 445.65616000000006, "r": 249.95911, "b": 453.58514, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 456.6964699999999, "r": 137.64001, "b": 464.62546, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 467.67648, "r": 361.37817, "b": 475.60547, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "THEN C . CUSTOMER_SECURITY_QUESTION ", "bbox": {"l": 64.800308, "t": 478.65649, "r": 226.5591, "b": 486.58548, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 489.69681, "r": 374.87817, "b": 497.62579, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "THEN C . CUSTOMER_SECURITY_QUESTION ", "bbox": {"l": 64.800308, "t": 500.67682, "r": 226.5591, "b": 508.6058, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "ELSE '*****' ", "bbox": {"l": 64.800308, "t": 511.65683, "r": 123.24001, "b": 519.58582, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "END ", "bbox": {"l": 64.800308, "t": 522.69714, "r": 96.240005, "b": 530.62613, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 533.6771200000001, "r": 124.14001, "b": 541.60614, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C ", "bbox": {"l": 64.800308, "t": 555.69745, "r": 500.69727, "b": 563.62645, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "FOR COLUMN CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 79.20031, "t": 566.6774399999999, "r": 281.3988, "b": 574.60645, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "RETURN CASE ", "bbox": {"l": 79.20031, "t": 577.65744, "r": 137.64001, "b": 585.58644, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 ", "bbox": {"l": 64.800308, "t": 588.6977400000001, "r": 361.37817, "b": 596.62674, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 64.800308, "t": 599.67773, "r": 258.05908, "b": 607.60674, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 ", "bbox": {"l": 64.800308, "t": 610.65773, "r": 374.87817, "b": 618.58673, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ", "bbox": {"l": 64.800308, "t": 621.69803, "r": 258.05908, "b": 629.62703, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "ELSE '*****' ", "bbox": {"l": 64.800308, "t": 632.6780200000001, "r": 123.24001, "b": 640.60703, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "END ", "bbox": {"l": 64.800308, "t": 643.71832, "r": 96.240005, "b": 651.64732, "coord_origin": "TOPLEFT"}}, {"id": 51, "text": "ENABLE ; ", "bbox": {"l": 79.20031, "t": 654.69832, "r": 124.14001, "b": 662.62732, "coord_origin": "TOPLEFT"}}, {"id": 52, "text": "ALTER TABLE BANK_SCHEMA.CUSTOMERS ", "bbox": {"l": 64.800308, "t": 676.71861, "r": 226.5591, "b": 684.64761, "coord_origin": "TOPLEFT"}}, {"id": 53, "text": "ACTIVATE ROW ACCESS CONTROL ", "bbox": {"l": 79.20031, "t": 687.69862, "r": 214.01941, "b": 695.627617, "coord_origin": "TOPLEFT"}}, {"id": 54, "text": "ACTIVATE COLUMN ACCESS CONTROL ;", "bbox": {"l": 79.20031, "t": 698.678619, "r": 223.01941, "b": 706.60762, "coord_origin": "TOPLEFT"}}]}, "text": "THEN C . CUSTOMER_TAX_ID WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN ( 'XXX-XX-' CONCAT QSYS2 . SUBSTR ( C . CUSTOMER_TAX_ID , 8 , 4 ) ) WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_TAX_ID ELSE 'XXX-XX-XXXX' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_DRIVERS_LICENSE_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_DRIVERS_LICENSE_NUMBER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'TELLER' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_DRIVERS_LICENSE_NUMBER ELSE '*************' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_LOGIN_ID_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_LOGIN_ID RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_LOGIN_ID WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_LOGIN_ID ELSE '*****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_SECURITY_QUESTION RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION ELSE '*****' END ENABLE ; CREATE MASK BANK_SCHEMA.MASK_SECURITY_QUESTION_ANSWER_ON_CUSTOMERS ON BANK_SCHEMA.CUSTOMERS AS C FOR COLUMN CUSTOMER_SECURITY_QUESTION_ANSWER RETURN CASE WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'ADMIN' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER WHEN QSYS2 . VERIFY_GROUP_FOR_USER ( SESSION_USER , 'CUSTOMER' ) = 1 THEN C . CUSTOMER_SECURITY_QUESTION_ANSWER ELSE '*****' END ENABLE ; ALTER TABLE BANK_SCHEMA.CUSTOMERS ACTIVATE ROW ACCESS CONTROL ACTIVATE COLUMN ACCESS CONTROL ;"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 15, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.50080871582031, "t": 754.5338745117188, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8994000554084778, "cells": [{"id": 0, "text": "124 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 83.982002, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "124"}, {"label": "page_footer", "id": 1, "page_no": 15, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 98.63966369628906, "t": 754.71435546875, "r": 339.882080078125, "b": 764.0100708007812, "coord_origin": "TOPLEFT"}, "confidence": 0.9430771470069885, "cells": [{"id": 1, "text": "Row and Column Access Control Support in IBM DB2 for i", "bbox": {"l": 98.940002, "t": 755.538002, "r": 339.81958, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}]}}, {"page_no": 16, "size": {"width": 612.0, "height": 792.0}, "cells": [], "predictions": {"layout": {"clusters": []}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [], "body": [], "headers": []}}, {"page_no": 17, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "fi", "bbox": {"l": 558.11987, "t": 45.468689999999924, "r": 565.46039, "b": 54.68169999999998, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "REDP-5110-00", "bbox": {"l": 171.0, "t": 631.338, "r": 231.88769999999997, "b": 639.66301, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "INTERNATIONAL ", "bbox": {"l": 467.3399999999999, "t": 247.71831999999995, "r": 559.80933, "b": 260.16052, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "TECHNICAL", "bbox": {"l": 467.3399999999999, "t": 261.75842, "r": 529.50208, "b": 274.20061999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "SUPPORT", "bbox": {"l": 467.3399999999999, "t": 275.73839999999996, "r": 518.93317, "b": 288.1806, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "ORGANIZATION", "bbox": {"l": 467.3399999999999, "t": 289.71841, "r": 550.7475, "b": 302.16061, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "BUILDING TECHNICAL ", "bbox": {"l": 467.3399999999999, "t": 351.79199, "r": 571.70758, "b": 362.47198, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "INFORMATION BASED ON ", "bbox": {"l": 467.3399999999999, "t": 363.79199, "r": 587.38916, "b": 374.47198, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "PRACTICAL EXPERIENCE", "bbox": {"l": 467.3399999999999, "t": 375.79199, "r": 582.5556, "b": 386.47198, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "IBM Redbooks are developed ", "bbox": {"l": 467.3399999999999, "t": 399.8602900000001, "r": 587.46674, "b": 409.63251, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "by the IBM International ", "bbox": {"l": 467.3399999999999, "t": 410.90067, "r": 566.34229, "b": 420.67285, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Technical Support ", "bbox": {"l": 467.3399999999999, "t": 421.88068, "r": 543.20404, "b": 431.65289, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Organization. Experts from ", "bbox": {"l": 467.3399999999999, "t": 432.8606899999999, "r": 577.76697, "b": 442.63287, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "IBM, Customers and Partners ", "bbox": {"l": 467.3399999999999, "t": 443.90106, "r": 587.40948, "b": 453.67328, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "from around the world create ", "bbox": {"l": 467.3399999999999, "t": 454.88107, "r": 587.52051, "b": 464.65326, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "timely technical information ", "bbox": {"l": 467.3399999999999, "t": 465.86108, "r": 582.67505, "b": 475.6333, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "based on realistic scenarios. ", "bbox": {"l": 467.3399999999999, "t": 476.90146, "r": 585.46722, "b": 486.67365, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Specific recommendations ", "bbox": {"l": 467.3399999999999, "t": 487.88147, "r": 577.70874, "b": 497.65369, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "are provided to help you ", "bbox": {"l": 467.3399999999999, "t": 498.86148, "r": 568.03546, "b": 508.63367, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "implement IT solutions more ", "bbox": {"l": 467.3399999999999, "t": 509.90186, "r": 585.44525, "b": 519.67407, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "effectively in your ", "bbox": {"l": 467.3399999999999, "t": 520.8818699999999, "r": 541.4967, "b": 530.65405, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "environment.", "bbox": {"l": 467.3399999999999, "t": 531.8618799999999, "r": 520.64893, "b": 541.63406, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "For more information:", "bbox": {"l": 467.3399999999999, "t": 578.83191, "r": 570.948, "b": 589.5119, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ibm.com", "bbox": {"l": 467.3399999999999, "t": 590.83191, "r": 508.59961, "b": 601.5119, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "/redbooks", "bbox": {"l": 508.56000000000006, "t": 590.83191, "r": 552.74518, "b": 601.5119, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Redpaper", "bbox": {"l": 474.60001, "t": 164.05658000000005, "r": 580.88989, "b": 188.94097999999997, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "\u2122", "bbox": {"l": 582.53992, "t": 172.32714999999996, "r": 592.13989, "b": 181.20714999999996, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Row and Column Access Control ", "bbox": {"l": 27.0, "t": 73.63799999999992, "r": 447.36002, "b": 103.00800000000004, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Support in IBM DB2 for i", "bbox": {"l": 27.0, "t": 113.76000999999997, "r": 314.43002, "b": 140.46002, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Implement roles and ", "bbox": {"l": 26.700001, "t": 242.17200000000003, "r": 127.4436, "b": 252.85199, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "separation of duties", "bbox": {"l": 26.700001, "t": 256.15198, "r": 121.6608, "b": 266.83196999999996, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Leverage row ", "bbox": {"l": 26.700001, "t": 284.17197, "r": 93.970795, "b": 294.85196, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "permissions on the ", "bbox": {"l": 26.700001, "t": 298.15198000000004, "r": 120.28319999999998, "b": 308.83197, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "database", "bbox": {"l": 26.700001, "t": 312.19199000000003, "r": 70.413605, "b": 322.87198, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Protect columns by ", "bbox": {"l": 26.700001, "t": 340.15198000000004, "r": 121.44960000000002, "b": 350.83197, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "defining column ", "bbox": {"l": 26.700001, "t": 354.19199000000003, "r": 106.5696, "b": 364.87198, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "masks", "bbox": {"l": 26.700001, "t": 368.1720000000001, "r": 58.194, "b": 378.85199, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "This IBM Redpaper publication provides information about the IBM i 7.2 ", "bbox": {"l": 152.94, "t": 242.72857999999997, "r": 413.99057, "b": 251.59295999999995, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "feature of IBM DB2 for i Row and Column Access Control (RCAC). It ", "bbox": {"l": 152.94002, "t": 254.72839, "r": 401.85635, "b": 263.59277, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "offers a broad description of the function and advantages of controlling ", "bbox": {"l": 152.94002, "t": 266.72821, "r": 414.08423, "b": 275.59259, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "access to data in a comprehensive and transparent way. This ", "bbox": {"l": 152.94002, "t": 278.72803, "r": 381.24014, "b": 287.59244, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "publication helps you understand the capabilities of RCAC and provides ", "bbox": {"l": 152.94002, "t": 290.72784, "r": 414.07031, "b": 299.59225, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "examples of defining, creating, and implementing the row permissions ", "bbox": {"l": 152.94002, "t": 302.72766, "r": 414.05447, "b": 311.59207, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "and column masks in a relational database environment.", "bbox": {"l": 152.94002, "t": 314.72747999999996, "r": 362.3291, "b": 323.59189, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "This paper is intended for database engineers, data-centric application ", "bbox": {"l": 152.94002, "t": 331.70728, "r": 414.17383, "b": 340.57169, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "developers, and security officers who want to design and implement ", "bbox": {"l": 152.94002, "t": 343.70709, "r": 407.61029, "b": 352.5715, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "RCAC as a part of their data control and governance policy. A solid ", "bbox": {"l": 152.94002, "t": 355.70691, "r": 399.29565, "b": 364.57132, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "background in IBM i object level security, DB2 for i relational database ", "bbox": {"l": 152.94002, "t": 367.70673, "r": 414.0603, "b": 376.57114, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "concepts, and SQL is assumed.", "bbox": {"l": 152.94002, "t": 379.70654, "r": 268.86945, "b": 388.57095, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "Back cover", "bbox": {"l": 287.22, "t": 28.54803000000004, "r": 414.24481, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "picture", "bbox": {"l": 485.1698303222656, "t": 25.259197235107422, "r": 566.2962036132812, "b": 54.68169999999998, "coord_origin": "TOPLEFT"}, "confidence": 0.9404253363609314, "cells": [{"id": 0, "text": "fi", "bbox": {"l": 558.11987, "t": 45.468689999999924, "r": 565.46039, "b": 54.68169999999998, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 170.78512573242188, "t": 630.505859375, "r": 232.11270141601562, "b": 639.66301, "coord_origin": "TOPLEFT"}, "confidence": 0.7700248956680298, "cells": [{"id": 1, "text": "REDP-5110-00", "bbox": {"l": 171.0, "t": 631.338, "r": 231.88769999999997, "b": 639.66301, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 466.3692626953125, "t": 247.39378356933594, "r": 559.80933, "b": 302.16061, "coord_origin": "TOPLEFT"}, "confidence": 0.8532671332359314, "cells": [{"id": 2, "text": "INTERNATIONAL ", "bbox": {"l": 467.3399999999999, "t": 247.71831999999995, "r": 559.80933, "b": 260.16052, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "TECHNICAL", "bbox": {"l": 467.3399999999999, "t": 261.75842, "r": 529.50208, "b": 274.20061999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "SUPPORT", "bbox": {"l": 467.3399999999999, "t": 275.73839999999996, "r": 518.93317, "b": 288.1806, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "ORGANIZATION", "bbox": {"l": 467.3399999999999, "t": 289.71841, "r": 550.7475, "b": 302.16061, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 466.3262939453125, "t": 351.4299011230469, "r": 587.38916, "b": 386.47198, "coord_origin": "TOPLEFT"}, "confidence": 0.7157137989997864, "cells": [{"id": 6, "text": "BUILDING TECHNICAL ", "bbox": {"l": 467.3399999999999, "t": 351.79199, "r": 571.70758, "b": 362.47198, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "INFORMATION BASED ON ", "bbox": {"l": 467.3399999999999, "t": 363.79199, "r": 587.38916, "b": 374.47198, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "PRACTICAL EXPERIENCE", "bbox": {"l": 467.3399999999999, "t": 375.79199, "r": 582.5556, "b": 386.47198, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 466.1037292480469, "t": 398.81231689453125, "r": 587.52051, "b": 541.63406, "coord_origin": "TOPLEFT"}, "confidence": 0.9518945813179016, "cells": [{"id": 9, "text": "IBM Redbooks are developed ", "bbox": {"l": 467.3399999999999, "t": 399.8602900000001, "r": 587.46674, "b": 409.63251, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "by the IBM International ", "bbox": {"l": 467.3399999999999, "t": 410.90067, "r": 566.34229, "b": 420.67285, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Technical Support ", "bbox": {"l": 467.3399999999999, "t": 421.88068, "r": 543.20404, "b": 431.65289, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Organization. Experts from ", "bbox": {"l": 467.3399999999999, "t": 432.8606899999999, "r": 577.76697, "b": 442.63287, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "IBM, Customers and Partners ", "bbox": {"l": 467.3399999999999, "t": 443.90106, "r": 587.40948, "b": 453.67328, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "from around the world create ", "bbox": {"l": 467.3399999999999, "t": 454.88107, "r": 587.52051, "b": 464.65326, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "timely technical information ", "bbox": {"l": 467.3399999999999, "t": 465.86108, "r": 582.67505, "b": 475.6333, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "based on realistic scenarios. ", "bbox": {"l": 467.3399999999999, "t": 476.90146, "r": 585.46722, "b": 486.67365, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Specific recommendations ", "bbox": {"l": 467.3399999999999, "t": 487.88147, "r": 577.70874, "b": 497.65369, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "are provided to help you ", "bbox": {"l": 467.3399999999999, "t": 498.86148, "r": 568.03546, "b": 508.63367, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "implement IT solutions more ", "bbox": {"l": 467.3399999999999, "t": 509.90186, "r": 585.44525, "b": 519.67407, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "effectively in your ", "bbox": {"l": 467.3399999999999, "t": 520.8818699999999, "r": 541.4967, "b": 530.65405, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "environment.", "bbox": {"l": 467.3399999999999, "t": 531.8618799999999, "r": 520.64893, "b": 541.63406, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 466.66748046875, "t": 577.88818359375, "r": 571.0052490234375, "b": 601.5119, "coord_origin": "TOPLEFT"}, "confidence": 0.8230004906654358, "cells": [{"id": 22, "text": "For more information:", "bbox": {"l": 467.3399999999999, "t": 578.83191, "r": 570.948, "b": 589.5119, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ibm.com", "bbox": {"l": 467.3399999999999, "t": 590.83191, "r": 508.59961, "b": 601.5119, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "/redbooks", "bbox": {"l": 508.56000000000006, "t": 590.83191, "r": 552.74518, "b": 601.5119, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "picture", "bbox": {"l": 474.35540771484375, "t": 80.05133819580078, "r": 592.2726440429688, "b": 189.8126220703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9696109890937805, "cells": [{"id": 25, "text": "Redpaper", "bbox": {"l": 474.60001, "t": 164.05658000000005, "r": 580.88989, "b": 188.94097999999997, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "\u2122", "bbox": {"l": 582.53992, "t": 172.32714999999996, "r": 592.13989, "b": 181.20714999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "section_header", "bbox": {"l": 26.454715728759766, "t": 71.63792419433594, "r": 447.36002, "b": 141.0381317138672, "coord_origin": "TOPLEFT"}, "confidence": 0.7128154635429382, "cells": [{"id": 27, "text": "Row and Column Access Control ", "bbox": {"l": 27.0, "t": 73.63799999999992, "r": 447.36002, "b": 103.00800000000004, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Support in IBM DB2 for i", "bbox": {"l": 27.0, "t": 113.76000999999997, "r": 314.43002, "b": 140.46002, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 26.35322380065918, "t": 240.97860717773438, "r": 127.4436, "b": 267.21185302734375, "coord_origin": "TOPLEFT"}, "confidence": 0.8400375843048096, "cells": [{"id": 29, "text": "Implement roles and ", "bbox": {"l": 26.700001, "t": 242.17200000000003, "r": 127.4436, "b": 252.85199, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "separation of duties", "bbox": {"l": 26.700001, "t": 256.15198, "r": 121.6608, "b": 266.83196999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 26.22105598449707, "t": 283.7095947265625, "r": 120.28319999999998, "b": 322.87198, "coord_origin": "TOPLEFT"}, "confidence": 0.8828509449958801, "cells": [{"id": 31, "text": "Leverage row ", "bbox": {"l": 26.700001, "t": 284.17197, "r": 93.970795, "b": 294.85196, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "permissions on the ", "bbox": {"l": 26.700001, "t": 298.15198000000004, "r": 120.28319999999998, "b": 308.83197, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "database", "bbox": {"l": 26.700001, "t": 312.19199000000003, "r": 70.413605, "b": 322.87198, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 26.226221084594727, "t": 339.11865234375, "r": 121.44960000000002, "b": 378.85199, "coord_origin": "TOPLEFT"}, "confidence": 0.9064874649047852, "cells": [{"id": 34, "text": "Protect columns by ", "bbox": {"l": 26.700001, "t": 340.15198000000004, "r": 121.44960000000002, "b": 350.83197, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "defining column ", "bbox": {"l": 26.700001, "t": 354.19199000000003, "r": 106.5696, "b": 364.87198, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "masks", "bbox": {"l": 26.700001, "t": 368.1720000000001, "r": 58.194, "b": 378.85199, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 152.25205993652344, "t": 241.8492889404297, "r": 414.08423, "b": 323.59189, "coord_origin": "TOPLEFT"}, "confidence": 0.9789718389511108, "cells": [{"id": 37, "text": "This IBM Redpaper publication provides information about the IBM i 7.2 ", "bbox": {"l": 152.94, "t": 242.72857999999997, "r": 413.99057, "b": 251.59295999999995, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "feature of IBM DB2 for i Row and Column Access Control (RCAC). It ", "bbox": {"l": 152.94002, "t": 254.72839, "r": 401.85635, "b": 263.59277, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "offers a broad description of the function and advantages of controlling ", "bbox": {"l": 152.94002, "t": 266.72821, "r": 414.08423, "b": 275.59259, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "access to data in a comprehensive and transparent way. This ", "bbox": {"l": 152.94002, "t": 278.72803, "r": 381.24014, "b": 287.59244, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "publication helps you understand the capabilities of RCAC and provides ", "bbox": {"l": 152.94002, "t": 290.72784, "r": 414.07031, "b": 299.59225, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "examples of defining, creating, and implementing the row permissions ", "bbox": {"l": 152.94002, "t": 302.72766, "r": 414.05447, "b": 311.59207, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "and column masks in a relational database environment.", "bbox": {"l": 152.94002, "t": 314.72747999999996, "r": 362.3291, "b": 323.59189, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 152.3572540283203, "t": 330.5283203125, "r": 414.17383, "b": 388.909912109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9799743890762329, "cells": [{"id": 44, "text": "This paper is intended for database engineers, data-centric application ", "bbox": {"l": 152.94002, "t": 331.70728, "r": 414.17383, "b": 340.57169, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "developers, and security officers who want to design and implement ", "bbox": {"l": 152.94002, "t": 343.70709, "r": 407.61029, "b": 352.5715, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "RCAC as a part of their data control and governance policy. A solid ", "bbox": {"l": 152.94002, "t": 355.70691, "r": 399.29565, "b": 364.57132, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "background in IBM i object level security, DB2 for i relational database ", "bbox": {"l": 152.94002, "t": 367.70673, "r": 414.0603, "b": 376.57114, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "concepts, and SQL is assumed.", "bbox": {"l": 152.94002, "t": 379.70654, "r": 268.86945, "b": 388.57095, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 287.22, "t": 28.54803000000004, "r": 414.24481, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 49, "text": "Back cover", "bbox": {"l": 287.22, "t": 28.54803000000004, "r": 414.24481, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "picture", "id": 0, "page_no": 17, "cluster": {"id": 0, "label": "picture", "bbox": {"l": 485.1698303222656, "t": 25.259197235107422, "r": 566.2962036132812, "b": 54.68169999999998, "coord_origin": "TOPLEFT"}, "confidence": 0.9404253363609314, "cells": [{"id": 0, "text": "fi", "bbox": {"l": 558.11987, "t": 45.468689999999924, "r": 565.46039, "b": 54.68169999999998, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "page_footer", "id": 1, "page_no": 17, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 170.78512573242188, "t": 630.505859375, "r": 232.11270141601562, "b": 639.66301, "coord_origin": "TOPLEFT"}, "confidence": 0.7700248956680298, "cells": [{"id": 1, "text": "REDP-5110-00", "bbox": {"l": 171.0, "t": 631.338, "r": 231.88769999999997, "b": 639.66301, "coord_origin": "TOPLEFT"}}]}, "text": "REDP-5110-00"}, {"label": "text", "id": 2, "page_no": 17, "cluster": {"id": 2, "label": "text", "bbox": {"l": 466.3692626953125, "t": 247.39378356933594, "r": 559.80933, "b": 302.16061, "coord_origin": "TOPLEFT"}, "confidence": 0.8532671332359314, "cells": [{"id": 2, "text": "INTERNATIONAL ", "bbox": {"l": 467.3399999999999, "t": 247.71831999999995, "r": 559.80933, "b": 260.16052, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "TECHNICAL", "bbox": {"l": 467.3399999999999, "t": 261.75842, "r": 529.50208, "b": 274.20061999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "SUPPORT", "bbox": {"l": 467.3399999999999, "t": 275.73839999999996, "r": 518.93317, "b": 288.1806, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "ORGANIZATION", "bbox": {"l": 467.3399999999999, "t": 289.71841, "r": 550.7475, "b": 302.16061, "coord_origin": "TOPLEFT"}}]}, "text": "INTERNATIONAL TECHNICAL SUPPORT ORGANIZATION"}, {"label": "text", "id": 3, "page_no": 17, "cluster": {"id": 3, "label": "text", "bbox": {"l": 466.3262939453125, "t": 351.4299011230469, "r": 587.38916, "b": 386.47198, "coord_origin": "TOPLEFT"}, "confidence": 0.7157137989997864, "cells": [{"id": 6, "text": "BUILDING TECHNICAL ", "bbox": {"l": 467.3399999999999, "t": 351.79199, "r": 571.70758, "b": 362.47198, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "INFORMATION BASED ON ", "bbox": {"l": 467.3399999999999, "t": 363.79199, "r": 587.38916, "b": 374.47198, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "PRACTICAL EXPERIENCE", "bbox": {"l": 467.3399999999999, "t": 375.79199, "r": 582.5556, "b": 386.47198, "coord_origin": "TOPLEFT"}}]}, "text": "BUILDING TECHNICAL INFORMATION BASED ON PRACTICAL EXPERIENCE"}, {"label": "text", "id": 4, "page_no": 17, "cluster": {"id": 4, "label": "text", "bbox": {"l": 466.1037292480469, "t": 398.81231689453125, "r": 587.52051, "b": 541.63406, "coord_origin": "TOPLEFT"}, "confidence": 0.9518945813179016, "cells": [{"id": 9, "text": "IBM Redbooks are developed ", "bbox": {"l": 467.3399999999999, "t": 399.8602900000001, "r": 587.46674, "b": 409.63251, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "by the IBM International ", "bbox": {"l": 467.3399999999999, "t": 410.90067, "r": 566.34229, "b": 420.67285, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Technical Support ", "bbox": {"l": 467.3399999999999, "t": 421.88068, "r": 543.20404, "b": 431.65289, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Organization. Experts from ", "bbox": {"l": 467.3399999999999, "t": 432.8606899999999, "r": 577.76697, "b": 442.63287, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "IBM, Customers and Partners ", "bbox": {"l": 467.3399999999999, "t": 443.90106, "r": 587.40948, "b": 453.67328, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "from around the world create ", "bbox": {"l": 467.3399999999999, "t": 454.88107, "r": 587.52051, "b": 464.65326, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "timely technical information ", "bbox": {"l": 467.3399999999999, "t": 465.86108, "r": 582.67505, "b": 475.6333, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "based on realistic scenarios. ", "bbox": {"l": 467.3399999999999, "t": 476.90146, "r": 585.46722, "b": 486.67365, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Specific recommendations ", "bbox": {"l": 467.3399999999999, "t": 487.88147, "r": 577.70874, "b": 497.65369, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "are provided to help you ", "bbox": {"l": 467.3399999999999, "t": 498.86148, "r": 568.03546, "b": 508.63367, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "implement IT solutions more ", "bbox": {"l": 467.3399999999999, "t": 509.90186, "r": 585.44525, "b": 519.67407, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "effectively in your ", "bbox": {"l": 467.3399999999999, "t": 520.8818699999999, "r": 541.4967, "b": 530.65405, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "environment.", "bbox": {"l": 467.3399999999999, "t": 531.8618799999999, "r": 520.64893, "b": 541.63406, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Redbooks are developed by the IBM International Technical Support Organization. Experts from IBM, Customers and Partners from around the world create timely technical information based on realistic scenarios. Specific recommendations are provided to help you implement IT solutions more effectively in your environment."}, {"label": "text", "id": 5, "page_no": 17, "cluster": {"id": 5, "label": "text", "bbox": {"l": 466.66748046875, "t": 577.88818359375, "r": 571.0052490234375, "b": 601.5119, "coord_origin": "TOPLEFT"}, "confidence": 0.8230004906654358, "cells": [{"id": 22, "text": "For more information:", "bbox": {"l": 467.3399999999999, "t": 578.83191, "r": 570.948, "b": 589.5119, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ibm.com", "bbox": {"l": 467.3399999999999, "t": 590.83191, "r": 508.59961, "b": 601.5119, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "/redbooks", "bbox": {"l": 508.56000000000006, "t": 590.83191, "r": 552.74518, "b": 601.5119, "coord_origin": "TOPLEFT"}}]}, "text": "For more information: ibm.com /redbooks"}, {"label": "picture", "id": 6, "page_no": 17, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 474.35540771484375, "t": 80.05133819580078, "r": 592.2726440429688, "b": 189.8126220703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9696109890937805, "cells": [{"id": 25, "text": "Redpaper", "bbox": {"l": 474.60001, "t": 164.05658000000005, "r": 580.88989, "b": 188.94097999999997, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "\u2122", "bbox": {"l": 582.53992, "t": 172.32714999999996, "r": 592.13989, "b": 181.20714999999996, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "section_header", "id": 7, "page_no": 17, "cluster": {"id": 7, "label": "section_header", "bbox": {"l": 26.454715728759766, "t": 71.63792419433594, "r": 447.36002, "b": 141.0381317138672, "coord_origin": "TOPLEFT"}, "confidence": 0.7128154635429382, "cells": [{"id": 27, "text": "Row and Column Access Control ", "bbox": {"l": 27.0, "t": 73.63799999999992, "r": 447.36002, "b": 103.00800000000004, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Support in IBM DB2 for i", "bbox": {"l": 27.0, "t": 113.76000999999997, "r": 314.43002, "b": 140.46002, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 8, "page_no": 17, "cluster": {"id": 8, "label": "text", "bbox": {"l": 26.35322380065918, "t": 240.97860717773438, "r": 127.4436, "b": 267.21185302734375, "coord_origin": "TOPLEFT"}, "confidence": 0.8400375843048096, "cells": [{"id": 29, "text": "Implement roles and ", "bbox": {"l": 26.700001, "t": 242.17200000000003, "r": 127.4436, "b": 252.85199, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "separation of duties", "bbox": {"l": 26.700001, "t": 256.15198, "r": 121.6608, "b": 266.83196999999996, "coord_origin": "TOPLEFT"}}]}, "text": "Implement roles and separation of duties"}, {"label": "text", "id": 9, "page_no": 17, "cluster": {"id": 9, "label": "text", "bbox": {"l": 26.22105598449707, "t": 283.7095947265625, "r": 120.28319999999998, "b": 322.87198, "coord_origin": "TOPLEFT"}, "confidence": 0.8828509449958801, "cells": [{"id": 31, "text": "Leverage row ", "bbox": {"l": 26.700001, "t": 284.17197, "r": 93.970795, "b": 294.85196, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "permissions on the ", "bbox": {"l": 26.700001, "t": 298.15198000000004, "r": 120.28319999999998, "b": 308.83197, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "database", "bbox": {"l": 26.700001, "t": 312.19199000000003, "r": 70.413605, "b": 322.87198, "coord_origin": "TOPLEFT"}}]}, "text": "Leverage row permissions on the database"}, {"label": "text", "id": 10, "page_no": 17, "cluster": {"id": 10, "label": "text", "bbox": {"l": 26.226221084594727, "t": 339.11865234375, "r": 121.44960000000002, "b": 378.85199, "coord_origin": "TOPLEFT"}, "confidence": 0.9064874649047852, "cells": [{"id": 34, "text": "Protect columns by ", "bbox": {"l": 26.700001, "t": 340.15198000000004, "r": 121.44960000000002, "b": 350.83197, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "defining column ", "bbox": {"l": 26.700001, "t": 354.19199000000003, "r": 106.5696, "b": 364.87198, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "masks", "bbox": {"l": 26.700001, "t": 368.1720000000001, "r": 58.194, "b": 378.85199, "coord_origin": "TOPLEFT"}}]}, "text": "Protect columns by defining column masks"}, {"label": "text", "id": 11, "page_no": 17, "cluster": {"id": 11, "label": "text", "bbox": {"l": 152.25205993652344, "t": 241.8492889404297, "r": 414.08423, "b": 323.59189, "coord_origin": "TOPLEFT"}, "confidence": 0.9789718389511108, "cells": [{"id": 37, "text": "This IBM Redpaper publication provides information about the IBM i 7.2 ", "bbox": {"l": 152.94, "t": 242.72857999999997, "r": 413.99057, "b": 251.59295999999995, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "feature of IBM DB2 for i Row and Column Access Control (RCAC). It ", "bbox": {"l": 152.94002, "t": 254.72839, "r": 401.85635, "b": 263.59277, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "offers a broad description of the function and advantages of controlling ", "bbox": {"l": 152.94002, "t": 266.72821, "r": 414.08423, "b": 275.59259, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "access to data in a comprehensive and transparent way. This ", "bbox": {"l": 152.94002, "t": 278.72803, "r": 381.24014, "b": 287.59244, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "publication helps you understand the capabilities of RCAC and provides ", "bbox": {"l": 152.94002, "t": 290.72784, "r": 414.07031, "b": 299.59225, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "examples of defining, creating, and implementing the row permissions ", "bbox": {"l": 152.94002, "t": 302.72766, "r": 414.05447, "b": 311.59207, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "and column masks in a relational database environment.", "bbox": {"l": 152.94002, "t": 314.72747999999996, "r": 362.3291, "b": 323.59189, "coord_origin": "TOPLEFT"}}]}, "text": "This IBM Redpaper publication provides information about the IBM i 7.2 feature of IBM DB2 for i Row and Column Access Control (RCAC). It offers a broad description of the function and advantages of controlling access to data in a comprehensive and transparent way. This publication helps you understand the capabilities of RCAC and provides examples of defining, creating, and implementing the row permissions and column masks in a relational database environment."}, {"label": "text", "id": 12, "page_no": 17, "cluster": {"id": 12, "label": "text", "bbox": {"l": 152.3572540283203, "t": 330.5283203125, "r": 414.17383, "b": 388.909912109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9799743890762329, "cells": [{"id": 44, "text": "This paper is intended for database engineers, data-centric application ", "bbox": {"l": 152.94002, "t": 331.70728, "r": 414.17383, "b": 340.57169, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "developers, and security officers who want to design and implement ", "bbox": {"l": 152.94002, "t": 343.70709, "r": 407.61029, "b": 352.5715, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "RCAC as a part of their data control and governance policy. A solid ", "bbox": {"l": 152.94002, "t": 355.70691, "r": 399.29565, "b": 364.57132, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "background in IBM i object level security, DB2 for i relational database ", "bbox": {"l": 152.94002, "t": 367.70673, "r": 414.0603, "b": 376.57114, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "concepts, and SQL is assumed.", "bbox": {"l": 152.94002, "t": 379.70654, "r": 268.86945, "b": 388.57095, "coord_origin": "TOPLEFT"}}]}, "text": "This paper is intended for database engineers, data-centric application developers, and security officers who want to design and implement RCAC as a part of their data control and governance policy. A solid background in IBM i object level security, DB2 for i relational database concepts, and SQL is assumed."}, {"label": "text", "id": 13, "page_no": 17, "cluster": {"id": 13, "label": "text", "bbox": {"l": 287.22, "t": 28.54803000000004, "r": 414.24481, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 49, "text": "Back cover", "bbox": {"l": 287.22, "t": 28.54803000000004, "r": 414.24481, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}}]}, "text": "Back cover"}], "body": [{"label": "picture", "id": 0, "page_no": 17, "cluster": {"id": 0, "label": "picture", "bbox": {"l": 485.1698303222656, "t": 25.259197235107422, "r": 566.2962036132812, "b": 54.68169999999998, "coord_origin": "TOPLEFT"}, "confidence": 0.9404253363609314, "cells": [{"id": 0, "text": "fi", "bbox": {"l": 558.11987, "t": 45.468689999999924, "r": 565.46039, "b": 54.68169999999998, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "text", "id": 2, "page_no": 17, "cluster": {"id": 2, "label": "text", "bbox": {"l": 466.3692626953125, "t": 247.39378356933594, "r": 559.80933, "b": 302.16061, "coord_origin": "TOPLEFT"}, "confidence": 0.8532671332359314, "cells": [{"id": 2, "text": "INTERNATIONAL ", "bbox": {"l": 467.3399999999999, "t": 247.71831999999995, "r": 559.80933, "b": 260.16052, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "TECHNICAL", "bbox": {"l": 467.3399999999999, "t": 261.75842, "r": 529.50208, "b": 274.20061999999996, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "SUPPORT", "bbox": {"l": 467.3399999999999, "t": 275.73839999999996, "r": 518.93317, "b": 288.1806, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "ORGANIZATION", "bbox": {"l": 467.3399999999999, "t": 289.71841, "r": 550.7475, "b": 302.16061, "coord_origin": "TOPLEFT"}}]}, "text": "INTERNATIONAL TECHNICAL SUPPORT ORGANIZATION"}, {"label": "text", "id": 3, "page_no": 17, "cluster": {"id": 3, "label": "text", "bbox": {"l": 466.3262939453125, "t": 351.4299011230469, "r": 587.38916, "b": 386.47198, "coord_origin": "TOPLEFT"}, "confidence": 0.7157137989997864, "cells": [{"id": 6, "text": "BUILDING TECHNICAL ", "bbox": {"l": 467.3399999999999, "t": 351.79199, "r": 571.70758, "b": 362.47198, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "INFORMATION BASED ON ", "bbox": {"l": 467.3399999999999, "t": 363.79199, "r": 587.38916, "b": 374.47198, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "PRACTICAL EXPERIENCE", "bbox": {"l": 467.3399999999999, "t": 375.79199, "r": 582.5556, "b": 386.47198, "coord_origin": "TOPLEFT"}}]}, "text": "BUILDING TECHNICAL INFORMATION BASED ON PRACTICAL EXPERIENCE"}, {"label": "text", "id": 4, "page_no": 17, "cluster": {"id": 4, "label": "text", "bbox": {"l": 466.1037292480469, "t": 398.81231689453125, "r": 587.52051, "b": 541.63406, "coord_origin": "TOPLEFT"}, "confidence": 0.9518945813179016, "cells": [{"id": 9, "text": "IBM Redbooks are developed ", "bbox": {"l": 467.3399999999999, "t": 399.8602900000001, "r": 587.46674, "b": 409.63251, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "by the IBM International ", "bbox": {"l": 467.3399999999999, "t": 410.90067, "r": 566.34229, "b": 420.67285, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Technical Support ", "bbox": {"l": 467.3399999999999, "t": 421.88068, "r": 543.20404, "b": 431.65289, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Organization. Experts from ", "bbox": {"l": 467.3399999999999, "t": 432.8606899999999, "r": 577.76697, "b": 442.63287, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "IBM, Customers and Partners ", "bbox": {"l": 467.3399999999999, "t": 443.90106, "r": 587.40948, "b": 453.67328, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "from around the world create ", "bbox": {"l": 467.3399999999999, "t": 454.88107, "r": 587.52051, "b": 464.65326, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "timely technical information ", "bbox": {"l": 467.3399999999999, "t": 465.86108, "r": 582.67505, "b": 475.6333, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "based on realistic scenarios. ", "bbox": {"l": 467.3399999999999, "t": 476.90146, "r": 585.46722, "b": 486.67365, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Specific recommendations ", "bbox": {"l": 467.3399999999999, "t": 487.88147, "r": 577.70874, "b": 497.65369, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "are provided to help you ", "bbox": {"l": 467.3399999999999, "t": 498.86148, "r": 568.03546, "b": 508.63367, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "implement IT solutions more ", "bbox": {"l": 467.3399999999999, "t": 509.90186, "r": 585.44525, "b": 519.67407, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "effectively in your ", "bbox": {"l": 467.3399999999999, "t": 520.8818699999999, "r": 541.4967, "b": 530.65405, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "environment.", "bbox": {"l": 467.3399999999999, "t": 531.8618799999999, "r": 520.64893, "b": 541.63406, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Redbooks are developed by the IBM International Technical Support Organization. Experts from IBM, Customers and Partners from around the world create timely technical information based on realistic scenarios. Specific recommendations are provided to help you implement IT solutions more effectively in your environment."}, {"label": "text", "id": 5, "page_no": 17, "cluster": {"id": 5, "label": "text", "bbox": {"l": 466.66748046875, "t": 577.88818359375, "r": 571.0052490234375, "b": 601.5119, "coord_origin": "TOPLEFT"}, "confidence": 0.8230004906654358, "cells": [{"id": 22, "text": "For more information:", "bbox": {"l": 467.3399999999999, "t": 578.83191, "r": 570.948, "b": 589.5119, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "ibm.com", "bbox": {"l": 467.3399999999999, "t": 590.83191, "r": 508.59961, "b": 601.5119, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "/redbooks", "bbox": {"l": 508.56000000000006, "t": 590.83191, "r": 552.74518, "b": 601.5119, "coord_origin": "TOPLEFT"}}]}, "text": "For more information: ibm.com /redbooks"}, {"label": "picture", "id": 6, "page_no": 17, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 474.35540771484375, "t": 80.05133819580078, "r": 592.2726440429688, "b": 189.8126220703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9696109890937805, "cells": [{"id": 25, "text": "Redpaper", "bbox": {"l": 474.60001, "t": 164.05658000000005, "r": 580.88989, "b": 188.94097999999997, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "\u2122", "bbox": {"l": 582.53992, "t": 172.32714999999996, "r": 592.13989, "b": 181.20714999999996, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "section_header", "id": 7, "page_no": 17, "cluster": {"id": 7, "label": "section_header", "bbox": {"l": 26.454715728759766, "t": 71.63792419433594, "r": 447.36002, "b": 141.0381317138672, "coord_origin": "TOPLEFT"}, "confidence": 0.7128154635429382, "cells": [{"id": 27, "text": "Row and Column Access Control ", "bbox": {"l": 27.0, "t": 73.63799999999992, "r": 447.36002, "b": 103.00800000000004, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Support in IBM DB2 for i", "bbox": {"l": 27.0, "t": 113.76000999999997, "r": 314.43002, "b": 140.46002, "coord_origin": "TOPLEFT"}}]}, "text": "Row and Column Access Control Support in IBM DB2 for i"}, {"label": "text", "id": 8, "page_no": 17, "cluster": {"id": 8, "label": "text", "bbox": {"l": 26.35322380065918, "t": 240.97860717773438, "r": 127.4436, "b": 267.21185302734375, "coord_origin": "TOPLEFT"}, "confidence": 0.8400375843048096, "cells": [{"id": 29, "text": "Implement roles and ", "bbox": {"l": 26.700001, "t": 242.17200000000003, "r": 127.4436, "b": 252.85199, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "separation of duties", "bbox": {"l": 26.700001, "t": 256.15198, "r": 121.6608, "b": 266.83196999999996, "coord_origin": "TOPLEFT"}}]}, "text": "Implement roles and separation of duties"}, {"label": "text", "id": 9, "page_no": 17, "cluster": {"id": 9, "label": "text", "bbox": {"l": 26.22105598449707, "t": 283.7095947265625, "r": 120.28319999999998, "b": 322.87198, "coord_origin": "TOPLEFT"}, "confidence": 0.8828509449958801, "cells": [{"id": 31, "text": "Leverage row ", "bbox": {"l": 26.700001, "t": 284.17197, "r": 93.970795, "b": 294.85196, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "permissions on the ", "bbox": {"l": 26.700001, "t": 298.15198000000004, "r": 120.28319999999998, "b": 308.83197, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "database", "bbox": {"l": 26.700001, "t": 312.19199000000003, "r": 70.413605, "b": 322.87198, "coord_origin": "TOPLEFT"}}]}, "text": "Leverage row permissions on the database"}, {"label": "text", "id": 10, "page_no": 17, "cluster": {"id": 10, "label": "text", "bbox": {"l": 26.226221084594727, "t": 339.11865234375, "r": 121.44960000000002, "b": 378.85199, "coord_origin": "TOPLEFT"}, "confidence": 0.9064874649047852, "cells": [{"id": 34, "text": "Protect columns by ", "bbox": {"l": 26.700001, "t": 340.15198000000004, "r": 121.44960000000002, "b": 350.83197, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "defining column ", "bbox": {"l": 26.700001, "t": 354.19199000000003, "r": 106.5696, "b": 364.87198, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "masks", "bbox": {"l": 26.700001, "t": 368.1720000000001, "r": 58.194, "b": 378.85199, "coord_origin": "TOPLEFT"}}]}, "text": "Protect columns by defining column masks"}, {"label": "text", "id": 11, "page_no": 17, "cluster": {"id": 11, "label": "text", "bbox": {"l": 152.25205993652344, "t": 241.8492889404297, "r": 414.08423, "b": 323.59189, "coord_origin": "TOPLEFT"}, "confidence": 0.9789718389511108, "cells": [{"id": 37, "text": "This IBM Redpaper publication provides information about the IBM i 7.2 ", "bbox": {"l": 152.94, "t": 242.72857999999997, "r": 413.99057, "b": 251.59295999999995, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "feature of IBM DB2 for i Row and Column Access Control (RCAC). It ", "bbox": {"l": 152.94002, "t": 254.72839, "r": 401.85635, "b": 263.59277, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "offers a broad description of the function and advantages of controlling ", "bbox": {"l": 152.94002, "t": 266.72821, "r": 414.08423, "b": 275.59259, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "access to data in a comprehensive and transparent way. This ", "bbox": {"l": 152.94002, "t": 278.72803, "r": 381.24014, "b": 287.59244, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "publication helps you understand the capabilities of RCAC and provides ", "bbox": {"l": 152.94002, "t": 290.72784, "r": 414.07031, "b": 299.59225, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "examples of defining, creating, and implementing the row permissions ", "bbox": {"l": 152.94002, "t": 302.72766, "r": 414.05447, "b": 311.59207, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "and column masks in a relational database environment.", "bbox": {"l": 152.94002, "t": 314.72747999999996, "r": 362.3291, "b": 323.59189, "coord_origin": "TOPLEFT"}}]}, "text": "This IBM Redpaper publication provides information about the IBM i 7.2 feature of IBM DB2 for i Row and Column Access Control (RCAC). It offers a broad description of the function and advantages of controlling access to data in a comprehensive and transparent way. This publication helps you understand the capabilities of RCAC and provides examples of defining, creating, and implementing the row permissions and column masks in a relational database environment."}, {"label": "text", "id": 12, "page_no": 17, "cluster": {"id": 12, "label": "text", "bbox": {"l": 152.3572540283203, "t": 330.5283203125, "r": 414.17383, "b": 388.909912109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9799743890762329, "cells": [{"id": 44, "text": "This paper is intended for database engineers, data-centric application ", "bbox": {"l": 152.94002, "t": 331.70728, "r": 414.17383, "b": 340.57169, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "developers, and security officers who want to design and implement ", "bbox": {"l": 152.94002, "t": 343.70709, "r": 407.61029, "b": 352.5715, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "RCAC as a part of their data control and governance policy. A solid ", "bbox": {"l": 152.94002, "t": 355.70691, "r": 399.29565, "b": 364.57132, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "background in IBM i object level security, DB2 for i relational database ", "bbox": {"l": 152.94002, "t": 367.70673, "r": 414.0603, "b": 376.57114, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "concepts, and SQL is assumed.", "bbox": {"l": 152.94002, "t": 379.70654, "r": 268.86945, "b": 388.57095, "coord_origin": "TOPLEFT"}}]}, "text": "This paper is intended for database engineers, data-centric application developers, and security officers who want to design and implement RCAC as a part of their data control and governance policy. A solid background in IBM i object level security, DB2 for i relational database concepts, and SQL is assumed."}, {"label": "text", "id": 13, "page_no": 17, "cluster": {"id": 13, "label": "text", "bbox": {"l": 287.22, "t": 28.54803000000004, "r": 414.24481, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 49, "text": "Back cover", "bbox": {"l": 287.22, "t": 28.54803000000004, "r": 414.24481, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}}]}, "text": "Back cover"}], "headers": [{"label": "page_footer", "id": 1, "page_no": 17, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 170.78512573242188, "t": 630.505859375, "r": 232.11270141601562, "b": 639.66301, "coord_origin": "TOPLEFT"}, "confidence": 0.7700248956680298, "cells": [{"id": 1, "text": "REDP-5110-00", "bbox": {"l": 171.0, "t": 631.338, "r": 231.88769999999997, "b": 639.66301, "coord_origin": "TOPLEFT"}}]}, "text": "REDP-5110-00"}]}}] diff --git a/tests/data/groundtruth/docling_v2/redp5695.doctags.txt b/tests/data/groundtruth/docling_v2/redp5695.doctags.txt deleted file mode 100644 index e13f2ef2..00000000 --- a/tests/data/groundtruth/docling_v2/redp5695.doctags.txt +++ /dev/null @@ -1,460 +0,0 @@ - -Front cover -
- -
-IBM Cloud Pak for Data on IBM Z -Jasmeet Bhatia -Ravi Gummadi -Chandra Shekhar Reddy Potula -Srirama Sharma -Data and AI -
- -
-
- -
-
- -
-Executive overview -Most industries are susceptible to fraud, which poses a risk to both businesses and consumers. According to The National Health Care Anti-Fraud Association, health care fraud alone causes the nation around $68 billion annually.$^{1}$ This statistic does not include the numerous other industries where fraudulent activities occur daily. In addition, the growing amount of data that enterprises own makes it difficult for them to detect fraud. Businesses can benefit by using an analytical platform to fully integrate their data with artificial intelligence (AI) technology. -With IBM Cloud Pakfi for Data on IBM Z, enterprises can modernize their data infrastructure, develop, and deploy machine learning (ML) and AI models, and instantiate highly efficient analytics deployment on IBM LinuxONE. Enterprises can create cutting-edge, intelligent, and interactive applications with embedded AI, colocate data with commercial applications, and use AI to make inferences. -This IBM Redguide publication presents a high-level overview of IBM Z. It describes IBM Cloud Pak for Data (CP4D) on IBM Z and IBM LinuxONE, the different features that are supported on the platform, and how the associated features can help enterprise customers in building AI and ML models by using core transactional data, which results in decreased latency and increased throughput. -This publication highlights real-time CP4D on IBM Z use cases. Real-time Clearing and Settlement Transactions, Trustworthy AI and its Role in Day-To-Day Monitoring, and the Prevention of Retail Crimes are use cases that are described in this publication. Using CP4D on IBM Z and LinuxONE, this publication shows how businesses can implement a highly efficient analytics deployment that minimizes latency, cost inefficiencies, and potential security exposures that are connected with data transportation. -IBM Z: An overview -Ever wonder how many transactions a bank processes per day? What about the pace at which these transactions happen? According to an IBMfi report, 44 of 50 of the world's top banks use IBM Z mainframes for these daily transactions.$^{2}$ IBM Z is a platform that is designed for voluminous data, maximum security, real-time transaction analysis, and cost efficiency. -The most recent platform for IBM Z is IBM z16™. The IBM z16 supports the following features: -GLYPH On-chip AI acceleration -GLYPH Quantum-safe crypto discovery -GLYPH Simplified compliance -GLYPH Flexible capacity -GLYPH Modernization of applications -GLYPH Sustainability -With these features, enterprises can upgrade applications while preserving secure and resilient data. -To learn more about these features, see the IBM z16 product page. -Figure 1 on page 3 shows a picture of the IBM z16 mainframe. -Figure 1 IBM z16 -
- -Figure 1 IBM z16 -
-IBM z16 and IBM LinuxONE Emperor 4 features -IBM Z are based on enterprise mainframe technology. Starting with transaction-based workloads and databases, IBM Z has undergone tremendous transformations in its system design for many generations to build servers that cater to Linux-based workloads and security with a cyberresilient system, and support quantum computing and modernization by using a hybrid cloud with a focus on data and AI. -Figure 2 provides a snapshot of the IBM Z processor roadmap, which depicts the journey of transformation and improvement. -Figure 2 IBM Z: Processor roadmap -
- -Figure 2 IBM Z: Processor roadmap -
-The IBM z16 and IBM LinuxONE Emperor 4 are the latest of the IBM Z, and they are developed with a 'built to build' focus to provide a powerful, cyberresilient, open, and secure platform for business with an extra focus on sustainability to help build sustainable data centers. Although the z16 server can host both IBM z/OSfi and Linux workloads, LinuxONE Emperor 4 is built to host Linux only workloads with a focus on consolidation and resiliency. Depending on the workload, consolidation from numerous x86 servers into a LinuxONE Emperor 4 can help reduce energy consumption by 75% and data center floor space by 50%, which helps to achieve the sustainability goals of the organization. -Figure 3 on page 5 shows a summary of the system design of IBM LinuxONE Emperor 4 with the IBM Telum™ processor. The IBM Telum processor chip is designed to run enterprise applications efficiently where their data resides to embed AI with super low latency. The support for higher bandwidth and I/O rates is supported through FCP Express cards with an endpoint security solution. The memory subsystem supports up to 40 TB of memory. -Figure 3 System design of IBM z16 LinuxONE Emperor 4 -
- -Figure 3 System design of IBM z16 LinuxONE Emperor 4 -
-The IBM z16 and IBM LinuxONE Emperor 4 servers are built with 7-nm technology at a 5.2 GHz speed. They consist of four dual-chip modules (DCMs) per central processor complex (CPC) drawer, each of which is built with two 8-core Telum processor chips that has "first in the industry" on-chip acceleration for mid-transaction, real-time AI inferencing, which supports many different use cases, including fraud detection. -Each core has access to a huge private 32 MB L2 cache where up to 16 MB of the L2 cache of an inactive core can be used as virtual cache (L3 / L4) by neighboring active cores on the chip. This cache helps address translation and access checking by prefetching the same virtual cache into the L2 cache. The virtual cache also includes Neural Network Processing Assist instructions and direct memory access with protection, and per chip GZIP compression. -Figure 4 provides more information about the features of AI Accelerator integration with the IBM Z processor cores. -Figure 4 IBM z16 on-chip AI Accelerator integration with IBM Z processor cores -
- -Figure 4 IBM z16 on-chip AI Accelerator integration with IBM Z processor cores -
-The IBM z16 and IBM LinuxONE Emperor 4 server platforms are built with the hardware features that are shown in Figure 4 with addressing data and AI workloads in mind. Regardless of where the ML and deep learning (DL) frameworks are used to build and train data and AI models, the inferencing on existing enterprise application data can happen along currently running enterprise business applications. CP4D 4.6 supports Tensorflow and IBM Snap ML frameworks, which are optimized to use the on-chip AI Accelerator during inferencing. Support for various other frameworks is planned for future releases. -Figure 5 on page 7 shows the seamless integration of AI into existing enterprises workloads on the IBM z16 while leveraging the underlying hardware capabilities. -Figure 5 Seamless integration -
- -Figure 5 Seamless integration -
-What is Cloud Pak for Data on IBM Z -IBM Cloud Pak for Data allows enterprises to simplify, unify, and automate the delivery of data and AI. It categorizes the activities within the journey to AI as four rungs of the AI Ladder: Collect, Organize, Analyze, and Infuse. For more information about each of the AI Ladder rungs, see Become Data Driven with IBM Z Infused Data Fabric , REDP-5680. -CP4D on IBM Z provides enterprises with a resilient and secure private cloud platform. You can use it to create ML and AI models that may be included into modern intelligent applications. You also can use it to use and construct applications for mission-critical data. With CP4D on IBM Z, enterprises can lower data movement latency, cost inefficiencies, and potential security exposures. Enterprises can safely store and access their most important company data, and leverage their current infrastructure by using cutting-edge hybrid cloud applications. Enterprises can combine their current database applications without any rewrites, which results in reduced cost and complexity. Lastly, by using CP4D on IBM Z, enterprises can update their database infrastructure to benefit from easier management, a quicker time to value, and lower operating expenses. -Figure 6 shows a solution overview of CP4D. The infrastructure alternatives are shown at the bottom, and they include IBM Z and LinuxONE. They all leverage Red Hat OpenShift. Common Foundational Services come next, which offer clarity throughout the data and AI lifecycle, that is, from user access management to monitoring and service provisioning. A high-level view of the services is shown in the middle section. The services have several different capabilities that span the AI hierarchy. The platform can be expanded, and it offers a seamless user experience for all distinct personas across the AI lifecycle, from data gathering through AI infusion. -Figure 6 Solution overview of Cloud Pak for Data -
- -Figure 6 Solution overview of Cloud Pak for Data -
-We highlight the four main pillars that make IBM Z the correct infrastructure for CP4D: -GLYPH Performance and Scale -GLYPH Embedded Accelerators -GLYPH Reliability and Availability -GLYPH Security and Governance. -From a performance perspective, CP4D on IBM Z provides your data and AI with high transaction processing and a powerful infrastructure. From the embedded accelerators perspective, CP4D on IBM Z can investigate each transaction thanks to a cutting-edge DL inference technology even in the most demanding, sensitive, and latency-prone real-time workloads. From a reliability perspective, CP4D on IBM Z provides high availability and resiliency. Lastly from the security perspective, CP4D on IBM Z is suitable for protecting sensitive data and AI models for enterprises in highly regulated industries or those industries that are worried about security. -Cloud Pak for Data capabilities on IBM Z and IBM LinuxONE -With CP4D on IBM Z and IBM LinuxONE, users can develop, train, and deploy AI and ML models. Users can accomplish this task by using the CP4D IBM Watsonfi Studio and IBM Watson Machine Learning (WLM) services. By using these two fundamental services, users can accomplish the following tasks: -GLYPH Provision various containerized databases. -GLYPH Explore, clean, shape, and alter data by using Data Refinery. -GLYPH Use project-specific data that is uploaded, or connect to distant data. -GLYPH Create Spark run times and applications. -GLYPH Create, build, evaluate, and deploy analytics and ML models with trust and transparency. -GLYPH Leverage the AI Integrated Accelerator for TensorFlow 2.7.2 and Snap ML 1.9. -For more information about the specifics of these capabilities, see Capabilities on Linux on IBM Z and IBM LinuxONE. -Open-source ecosystem -These days, innovation and product development are not limited to closed doors within an organization. In any industry sector, the solutions include a mix of proprietary code addressing the core business solution that is supported or integrated into other software components from open source. In some cases, enterprises business solutions also are built from open-source community offerings. Thus, open-source software becomes an important ingredient in modern-day solution building. -IBM actively participates in various open-source communities as part of steering boards defining the roadmap of the community, and also in contributing code to make the community a better place for everyone to participate. Red Hat also actively participates in various open-source communities and makes extensive contributions. In open-source communities, although most open-source development happens on x86 / amd64 or the Intel architecture, the same open-source software is used by other architectures, such as IBM Power (ppc64le), IBM Z and IBM LInuxONE (s390x), ARM, and Sparc. So, the availability of an open-source ecosystem on any architecture is key and critical to business. -On IBM Z and IBM LinuxONE (s390x) architecture, there is a huge open-source support ecosystem that ranges from operating systems such as Linux; application run times; cloud and container services; DevOps and automation; big data; observability; analytics; databases; and storage. The ecosystem on IBM Z and IBM LinuxONE is growing. -IBM Z and IBM LinuxONE include much open-source software in their ecosystem. You can see the growing list of open-source software for IBM Z and LinuxONE at The Growing Ecosystem of Open-Source Software for IBM Z and LinuxONE. -IBM Z and IBM LinuxONE are available to various communities to include support for s390x builds as part of their community's continuous integration and continuous delivery (CI/CD). Also, for open-source community developers, infrastructure resources are available on a no-charge basis through the IBM LinuxONE community cloud. -CP4D includes a mix of open-source and proprietary data and AI runtime databases; open-source run times like Python; open-source data platforms like Anaconda; ML and DL frameworks like Pytorch and Tensorflow; and thousands of reusable Python packages. All of them are available and supported on s390x architecture to provide seamless parity with x86 architecture and a seamless experience for enterprise data scientists, architects, and data and AI solution developers on IBM Z and IBM LinuxONE platforms. -Anaconda is one of the open-source data platforms that provide Python and R based data science ML frameworks; analytics and data visualization tools; and open-source data science tools and libraries like Conda, XGBoost, and SciKit-Learn. Anaconda runs natively on Linux on IBM Z and IBM LinuxONE, and on IBM z/OS Container Extensions (zcX) on z/OS. For more information, see Announcing Anaconda for Linux on IBM Z and LinuxONE. -In addition to strong, open-source ecosystem support for application development on Linux and enterprise operating systems, a new generation of IBM Z and IBM LinuxONE servers (IBM z16™) also have strong platform support, and AI acceleration capabilities that can be leveraged by open-source software to perform better on the server infrastructure. For example, the recently released CP4D 4.6 has Tensorflow and IBM SnapML frameworks that leverage the AI accelerators when running on an IBM z16 server. -So, to summarize, there is a huge, growing data and AI open source ecosystem that is supported and optimized on IBM Z and IBM LinuxONE servers. -Why AI on IBM Z -Data and AI playing a major role in the modernization story to enable the digital transformation journey of every organization. Many organizations recognize the business value of infusing AI into their infrastructure. CP4D provides the cloud-native solution to put your data to work. With CP4D, all your data users can collaborate from a single, unified interface that supports many services that work together, including collecting data, organizing the data, analyzing the data, and infusing AI. -Traditional ML models' power most of today's ML applications in business and among AI practitioners. CP4D supports traditional ML frameworks for training and inferencing, such as Scikit-learn, Snap ML, and XGBoost. Snap ML is a library that provides high-speed training and inferencing of ML models that leverage the AI accelerator while running on an IBM z16 (Linux on IBM Z). CP4D supports DL frameworks such as TensorFlow and PyTorch. TensorFlow is a DL framework that leverages the AI accelerator while running on an IBM z16 (Linux on IBM Z). -Figure 7 on page 11 provides an overview of the components that are supported on CP4D on IBM Z. You can leverage Watson Studio for model building, training, and validation, and WML for deployment of the model. Eventually, applications can use the AI inference endpoint to score the model. -Figure 7 Developing, training, and deploying an AI model on Cloud Pak for Data on IBM Z and IBM LinuxONE -
- -Figure 7 Developing, training, and deploying an AI model on Cloud Pak for Data on IBM Z and IBM LinuxONE -
-In summary, here are some of the reasons why you should choose AI on IBM Z: -GLYPH World-class AI inference platform for enterprise workloads: --Embedded accelerators: A centralized on-chip AI accelerator that is shared by all cores. --Industry standard AI ecosystem: Many industry open-source data science frameworks are available on the platform. --Seamlessly integrate AI into existing enterprise workload stacks: Train anywhere, and then deploy on IBM Z. -GLYPH Security: Encrypted memory, and improved trusted execution environments. -GLYPH Sustainability: Reduce your energy consumption with real-time monitoring tools about the energy consumption of the system. -AI use cases -With billions of transactions per day in many of today's industries, it is key to get real-time insights about what is happening in your data. AI on the IBM Z stack understands these situations, and it delivers in-transaction inference in real time and at scale. -Core banking solutions running on IBM Z that are involved in processing inbound transactions need real-time fraud detection to prevent fraud. Other types of possible use cases might be credit risk analysis, anti-money laundering, loan approval, fraud detection in payments, and instant payments. -For insurance companies, a pressing use case would be claims processing. For markets and trading, clearing and settlement use cases are paramount. -For the health care industry, medical image processing (such as MRIs and x-rays), skin cancer detection, and patient monitoring activities such as infant motion analysis, is important. -For the airline industry, processes such as air traffic management, flight management systems, and flight maintenance predictions are use cases that are ideal candidates for using AI on IBM Z. -In the following sections, we describe the following use cases: -GLYPH "Use case 1: Responsible AI augmented with risk and regulatory compliance" on page 12 AI model lifecycle governance, risk management, and regulatory compliance are key to the success of the enterprises. It is imperative to adopt a typical AI model lifecycle to protect new end-to-end risks. -GLYPH "Use case 2: Credit default risk assessment" on page 22 -Core banking solutions running on IBM Z that are involved in processing inbound transactions need real-time fraud detection to prevent fraud. Other types of possible use cases might be credit risk analysis, anti-money laundering, loan approval, fraud detection in payments, and instant payments. -GLYPH "Use case 3: Clearing and settlement" on page 25 -The use of AI can help to predict which trades or transactions have high risk exposures, and propose solutions for a more efficient settlement process. -GLYPH "Use case 4: Remaining Useful Life of an aircraft engine" on page 27 -We describe how AI can help to avoid unplanned aircraft downtime by determining the remaining time or cycles that an aircraft engine is likely to operate before failure. -GLYPH "Use case 5: AI-powered video analytics on an infant's motions for health prediction" on page 30 -In this section, we describe how AI can predict an infant's health conditions by monitoring real-time body movements. -Use case 1: Responsible AI augmented with risk and regulatory compliance -Advancement in AI is changing the world, and organizations must adopt AI to embrace new challenges daily. Many enterprises see tremendous value in adopting AI and ML technologies while establishing organization trust in the models, underlying data, and the process to be followed. An AI model lifecycle can be a daunting task. -How mature is your AI governance? In this section, we provide a use case demonstrating the trustworthiness of AI and its importance in daily monitoring. -Industry challenges -Here are the three main reasons why organizations struggle with the adoption of AI: -GLYPH Scaling with growing regulations -GLYPH Lack of confidence in operationalized AI (making responsible AI) -GLYPH Challenges around managing the risk throughout the entire AI workflow -Scaling with growing regulations -Laws and regulations in the data and AI space are accelerating, and many countries are proposing strict AI policies. Countries are monitoring adherence of these policies by the enterprises and imposing fines for any violations. Responding to these regulations are challenging global organizations where multiple regulations apply. For enterprises, it is important to adopt AI policies when there is change, and to validate explainable models to protect against discrimination. -Responsible AI -Responsible AI protects against loss of data privacy, and reduced customer loyalty and trust. A data scientist cannot maximize accuracy and model performance above all other concerns. Practicing responsible AI is a best practice, and you must establish protection and validation to ensure that any models that are placed into production are fair and explainable. -Risks throughout the entire AI workflow -Organizations need to mitigate risk of the following items: -GLYPH Deciding not to use certain technologies or practices -GLYPH Using personal information when needed and with a user's consent -GLYPH Ensuring automated decisions are free from bias -GLYPH Customer confidence by providing explanations for business decisions -GLYPH Fraud to the organization and to customer's accounts -GLYPH Delays in putting models into production -In fact, in a recent survey, these concerns were echoed by real AI adopters when asked what aspects of trust are most important to them. Although explaining how AI decides is the primary concern, all of these concerns are important. -The key point here is that risk exists throughout the entire AI lifecycle starting with the underlying data and the business justification behind the "why" of the project and continuing into production. Without a formalized process, there is no way to mitigate these risks to unlock the scale that is required to make automated decisions profitable. With these decisions, the business can operate proactively instead of reactively. -For example, a business can start testing a model before production for fairness metrics. For this task, enterprises need an end-to-end workflow with approvals to mitigate these risks and increase the scale of AI investments, as shown in Figure 8, which presents a typical AI model lifecycle in an enterprise. -Figure 8 Typical AI model lifecycle -
- -Figure 8 Typical AI model lifecycle -
-Due to regulations, more stakeholders adopt the typical AI model lifecycle to protect their brand from new end-to-end risks. To ensure various aspects of both regulatory compliance and security, the personas that must be involved include the chief financial officer (CFO), chief marketing officer (CMO), chief data officer (CDO), HR, and chief regulatory officer (CRO), along with the data engineers, data scientists, and business analysts, who build AI workflows. -IBM governance solution for IBM Z -AI model lifecycle governance, risk management, and regulatory compliance are key to the success of enterprises. -AI governance is a comprehensive framework that uses a set of automated processes, methodologies, and tools to manage an organization's use of AI. Consistent principles guiding the design, development, deployment, and monitoring of models are critical in driving responsible and trustworthy AI. AI governance includes processes that trace and record the origin of data, models (including associated metadata), and pipelines for audits. The details of entry should include the techniques that trained each model, the hyperparameters that were used, and the metrics from testing phases. These details provide increased transparency into the model's behavior throughout the lifecycle, the data that was influential in its development, and the possible risks. -In a world where trust, transparency and explainable AI matters, every organization wants compliance along with the comfort of understanding how analytic insights and decisions are made. The following sections describe some of the principles and organizational requirements for AI governance. -Lifecycle governance -Lifecycle governance helps you manage your business information throughout its lifecycle, that is, from creation to deletion. IBM AI governance addresses the problems that challenge records managements: -GLYPH Monitor, catalog, and govern AI models from anywhere throughout the AI lifecycle. -GLYPH Automate the capture of model metadata for report generation. -GLYPH Drive transparent and explainable AI at scale. -GLYPH Increase accuracy of predictions by identifying how AI is used and where it is lagging. -Risk management -Risk management is used in IBM AI governance to identify, manage, monitor, and report on risk and compliance initiatives at scale: -GLYPH Automate facts and workflow management to comply with business standards. -GLYPH Use dynamic dashboards for clear and concise customizable results. -GLYPH Enhanced collaboration across multiple regions and geographies. -Regulatory compliance -Regulatory compliance is a set of rules that organizations must follow to protect sensitive information and ensure human safety. Any business that works with digital assets, consumer data, health regulations, employee safety, and private communications is subject to regulatory compliance.$^{3}$ The IBM AI governance solution for IBM Z includes the following tasks: -GLYPH Help adhere to external AI regulations for audit and compliance. -GLYPH Convert external AI regulations into policies for automatic enforcement. -GLYPH Use dynamic dashboards for compliance status across policies and regulations. -Enterprises can develop AI models and deploy them by using IBM Watson Studio or WML on CP4D on Red Hat OpenShift on a virtual machine that is based on IBM z/VM or Red Hat Enterprise Linux KVM on IBM Z. AI governance on IBM LinuxONE is supported in the following two ways: -GLYPH Monitor the AI models with Watson OpenScale on CP4D on Red Hat OpenShift on a virtual machine on IBM Z. -GLYPH Enterprises can develop AI models by creating and training models by using Watson Studio and development tools such as Jupyter Notebook or JupyterLab, and then deploying the model onto WML on CP4D on Red Hat OpenShift on a virtual machine on IBM Z. Then, these enterprises can achieve end-end AI governance by running AI Factsheets, IBM Watson OpenScale, and IBM Watson OpenPagesfi on CP4D on x86. -Figure 9 on page 16 shows the end-to-end flow for a remote AI governance solution. -Figure 9 Remote AI governance solution end-to-end flow -
- -Figure 9 Remote AI governance solution end-to-end flow -
-To achieve end-to-end AI governance, complete the following steps: -1. Create a model entry in IBM OpenPages by using CP4D on a x86 platform, as shown in Figure 10. -Figure 10 Creating a model entry in IBM OpenPages -
- -Figure 10 Creating a model entry in IBM OpenPages -
-2. Train a model by using Watson Studio and by using development tools such as Jupyter Notebook or JupyterLab on CP4D on Red Hat OpenShift on a virtual machine on IBM Z, as shown in Figure 11. -Figure 11 Training an AI model by using Watson Studio -
- -Figure 11 Training an AI model by using Watson Studio -
-3. Deploy the model by using WML on CP4D on Red Hat OpenShift on a virtual machine on IBM Z, as shown in Figure 12. -Figure 12 Deploying an AI model by using WML on Cloud Pak for Data -
- -Figure 12 Deploying an AI model by using WML on Cloud Pak for Data -
-4. Track the external model lifecycle by browsing through the Catalogs/Platform assets catalog by using AI Factsheets and OpenPages while using CP4D on an x86 platform, as shown in Figure 13. The external model (deployed on CP4D on Red Hat OpenShift on a virtual machine on IBM Z) is saved as a platform asset catalog on the x86 platform. -Figure 13 External model -
- -Figure 13 External model -
-You can track the model through each stage of the model lifecycle, as shown in Figure 14, by using AI Factsheets and OpenPages. -Figure 14 Tracking the model -
- -Figure 14 Tracking the model -
-You can see that the model facts are tracked and synchronized to IBM OpenPages for risk management, as shown in Figure 15. -Figure 15 Model facts that are tracked and synchronized to IBM OpenPages on an x86 platform -
- -Figure 15 Model facts that are tracked and synchronized to IBM OpenPages on an x86 platform -
-5. Create an external model by using IBM OpenScale on the x86 platform, as shown in Figure 16. -Figure 16 Creating an external model on an x86 platform -
- -Figure 16 Creating an external model on an x86 platform -
-IBM OpenScale provides a comprehensive dashboard that tracks fairness, quality monitoring, drift, and explainability of a model. Fairness determines whether your model produces biased outcomes. Quality determines how well your model predicts outcomes. Drift is the degradation of predictive performance over time. A sample is shown in Figure 17 on page 21. -Figure 17 IBM OpenScale dashboard that is used to monitor the external model -
- -Figure 17 IBM OpenScale dashboard that is used to monitor the external model -
-You developed and deployed the AI model by using Watson Studio, WML on CP4D on Red Hat OpenShift on a virtual machine on IBM Z, and end-to-end AI model governance by leveraging AI Factsheets, OpenScale, and OpenPages on CP4D on a x86 platform. Figure 18 shows end-to-end AI governance when using IBM OpenPages, AI Factsheets, and OpenScale. -Figure 18 Final result: End-to-end AI governance when using IBM OpenPages, AI Factsheets, and OpenScale -
- -Figure 18 Final result: End-to-end AI governance when using IBM OpenPages, AI Factsheets, and OpenScale -
-Use case 2: Credit default risk assessment -In today's world, many individuals or businesses seeking loans to meet their growing business needs often look to financial institutions. Financial institutions can offer loans to individuals or businesses and charge interest based on the current market situations. -Industry challenges -Financial institutions must make an accurate decision about whether to sanction a loan or not, and judging the likelihood of default is the difference between a successful and unsuccessful loan portfolio. In a traditional scenario, an experienced banker can judge someone's likelihood of default, but that is not an efficient method for judgment as a business grows. -Predictions of credit default risk assessment -In the modern world, growing business institutions can no longer rely on only experienced bankers to decide whether to sanction a loan knowing that there is a probability that the borrower might default on their loans. A better choice is to rely on technological advancements that can help with reasoning based on facts, such as leveraging credit risk modeling techniques to process the historical data of past borrowers to understand their credit behavior and make a more informed decision about whether to lend money, how much money, and decide on the tenure to close the loan. -Financial institutions can leverage AI solutions by using ML techniques to predict the credit risk. Applying AI to credit risk modeling techniques can benefit institutions in decision-making, and thus can help better manage the exposure to credit risk. -Figure 19 on page 23 shows a sample architecture about how to design and develop an AI model for credit risk assessment on IBM Z. An IBM WebSpherefi Application Server is used for handling in-bound transactions, and CP4D is used for AI model lifecycle management that includes building, training, and deploying the model. -Figure 19 Architecture for credit risk prediction by using an ML AI model on IBM Z -
- -Figure 19 Architecture for credit risk prediction by using an ML AI model on IBM Z -
-A data scientist can leverage Watson Studio to develop and train an AI model and WML to deploy and score the model. In this sample architecture, the WML Python run time leverages the ML framework, IBM Snap Machine Learning (Snap ML), for scoring, can leverage an integrated AI accelerator at the time of model import. -Then, the banking loan approval team can send a loan applicant request to the IBM WebSphere Application Server, which can make a request to the AI inference endpoint. The AI inference engine scores the transaction and sends the result back to the loan approval team. Based on the results, the approval team can decide on whether to approve a loan or not, and also decide how much they can lend, timelines, and other factors. -The transaction system that is shown in Figure 19 uses IBM WebSphere Liberty as an application server, but you also can use an IBM Open Libertyfi application server or any application server that can send RESTful API communications. -Models are frequently developed and tested in many platforms and languages, such as Python, Scala, R, and Go. Models can leverage ML frameworks like scikit-learn, Snap ML, or XGBoost, or DL frameworks like TensorFlow or PyTorch. Training a model can be done on any platform if you have enough computing power for complex models, but moving that model into production requires careful testing to ensure that transactions are not delayed, especially if you plan to run the model within a transaction. -We showed how IBM Z enable customers to use AI frameworks to detect credit risk. Now, we look at how you can leverage CP4D and TensorFlow on IBM Z to detect the credit risk. -Figure 20 shows an architecture for predicting credit risk by using DL on IBM Z. -Figure 20 Architecture for credit risk prediction by using DL on IBM Z -
- -Figure 20 Architecture for credit risk prediction by using DL on IBM Z -
-Data scientists can start creating and training a DL AI model by using a Jupyter Notebook instance and Watson Studio. Then, they can deploy the model by using WML on CP4D running on IBM Z, which provides an endpoint. Other applications, including the IBM WebSphere server, can produce credit risk results by using the model's endpoint. -In summary, here are some considerations for developing real-time AI models, such as credit risk assessment: -GLYPH A preference for in-platform run times of the model, such as faster execution results. -GLYPH Less overhead in the end-to-end flows might improve scoring time. -GLYPH If you are using models that are not deployable, CP4D offers a custom Python run time to build your own stack if they are not available on the platform. -GLYPH AI inferencing based on ML or DL models can increase the accuracy of better credit risk assessment. -GLYPH Using IBM z16 and on-chip AI acceleration with the Telum chip that is embedded with regular Integrated Facility for Linux (IFLs) provides an execution speed for your transactions that cannot be achieved by other means. -Use case 3: Clearing and settlement -Clearing and settlements involve banks or financial institutions sending and receiving wire transfers by using secure interbank payments networks that can clear or settle numerous transactions. When an individual or business entity initiates a wire transfer, clearing begins the fund delivery process. Banks can begin the settlement phase either immediately after clearing takes place or later, mostly at the end of the business day. -Industry challenge -Banks and financial institutions must deal with high-risk transactions that can lead to loss. Moreover, these transactions can lead to regulatory violations and extra compliance costs. -Clearing and settlement solution -Use AI to predict which trades or transactions have high risk exposures, and propose solutions for a more efficient settlement process. The expedited remediation of questionable transactions can prevent costly consequences, regulatory violations, and negative business impacts. -In financial institutions, finding which financial transactions are legitimate and which transactions are fraudulent is of paramount importance. In this section, we go through a use case where we use AI to predict which trades or transactions have high risk exposures, and propose solutions for a more efficient settlement process. The expedited remediation of questionable transactions can prevent costly consequences, regulatory violations, and negative business impacts to financial institutions. -The goal is to predict in real time whether the transaction being processed might be a fraudulent transaction or not. To achieve this goal, we build an ML model that can do this prediction for the financial institution. Because there would be many transactions being processed at any point by the financial institution, it is important to perform this prediction of fraudulent transactions in near-real time in a few milliseconds. -One possible solution is to build and train a TensorFlow based DL model that learns from the historical data and predicts the fraudulent transactions. CP4D on IBM Z and IBM LinuxONE is a suitable product where this task can be achieved and the model deployed, and coming up with a serving endpoint. -Figure 21 provides a high-level diagram of a clearing and settlement use case for financial transactions that uses CP4D on IBM Z and IBM LinuxONE. -Figure 21 Clearing and settlement use case for financial transactions by using Cloud Pak for Data -
- -Figure 21 Clearing and settlement use case for financial transactions by using Cloud Pak for Data -
-Here are the steps of the high-level process flow: -1. Create a connection to a database (for example, an IBM Db2fi database) where the historical data will be used for ML model building. -2. Read the data from the database and prepare the data for AI by using the Data Refinery tool in CP4D. -3. A Jupyter Notebook or JupyterLab IDE that is provided by the Watson Studio component in CP4D helps us build and train the AI model. The trained model can be saved into a WML repository. -4. Deploy the saved model into a deployment space for batch deployment. -5. Create a batch deployment by using any of these interfaces: -a. Watson Studio user interface from an Analytics deployment space. -b. WML Python client. -c. WML REST APIs. -6. A hardware configuration can be chosen for the deployment. -7. A batch deployment processes input data from a file, data connection, or connected data in a storage bucket, and writes the output to a selected destination. -8. One way to run batch deployment to predict or score is to create and run a batch deployment job. -9. Provide an input data type: -a. Inline data for entering a JSON format payload. -b. Select Data asset , click Select data source , and then specify your asset. -10.The output data type can be a new output file or a connected data asset. -11.A Kubernetes admin can change the maximum number of concurrent batch jobs that can be run. -12.Get the deployment endpoint URL. For more information, see Getting the deployment endpoint URL. -Summary -With this use case, we attempted to demonstrate how to predict, in real time, whether the transaction that is being processed might be a fraudulent transaction or not. By using the method, you have the following advantages: -GLYPH No Impact to SLAs and the batch process window. -GLYPH Proactively stop losses, and lower operational, regulatory, and compliance costs. -GLYPH The solution is using a DL framework like TensorFlow for high-performing, low latency scoring. -Use case 4: Remaining Useful Life of an aircraft engine -In this use case, we describe how an airline can deploy an AI model for inferencing by using IBMfi zSystems. -Remaining Useful Life (RUL) is the remaining time or cycles that an aircraft engine is likely to operate without any failure. In this case, it is the equivalent of the number of flights remaining for the engine after the last flight. By estimating RUL, the operator can decide on the next maintenance schedule and avoid unplanned downtime. -Figure 22 provides an overview of the inferencing architecture for the RUL of an aircraft engine when using IBM Z. -Figure 22 Inferencing architecture on IBM Z -
- -Figure 22 Inferencing architecture on IBM Z -
-Because we are looking into data-driven model development, the data set of our target is the run-to-failure data of the engine. We are looking into a supervised learning problem, and we use regression techniques to learn from the data. DL techniques such as Long Short-Term Memory (LSTM) or Gated Recurrent Units (GRU) are our choice because we are looking into a time series data set. TensorFlow or PyTorch frameworks are leveraged to create models. AI governance monitors the data and model drift to maintain the model quality throughout the model's life. -Open-source data from NASA was used to build the AI model, which then was deployed on CP4D. CP4D enables the data-scientist's journey from modeling to deployment in a seamless process. Data engineers leverage Db2 to host the data set, which includes the training, testing, and validation of a data set. Since data is hosted on Db2, you can expect low latency while retrieving the data and serve data security needs because Db2 is hosted on the IBM Z platform. Data is fetched by the data refinery to do the necessary pre-processing and data imputations. You can use the programming languages Golang or C++ for real-time predictions, depending on customer needs. For more information about this topic, see "Use case 3: Clearing and settlement" on page 25. -Model building is done on Watson Studio, leveraging the high-performance computing hardware on IBM Z. You can train the model anywhere (on your own hardware or the cloud) and bring the model directly into CP4D, which provides data scientists with the flexibility of implementation choices. -We used LSTM to build the AI model and used the training data. The model was continuously evaluated to model convergence. The final model is tested with the test data, which is never exposed at the time of training to make sure that the model works. -This model is deployed on WML on CP4D and runs on IBM Z. If required, the trained model can be converted to the Open Neural Network Exchange (ONNX) format before deployment. Based on project requirements, IBM Z supports high-throughput, low latency inference requirements by leveraging an AI accelerator. -For decision-making about an aircraft engine's life, it is important to be able to explain the model predictions from end to end. This explainability may be global or local. Global explainability enables decision-makers to evaluate the trained model in general from the subject matter expert (SME) point of view. Local explainability enables the operator to validate the reasons behind the present inference and relate it to the past data points, which are an indicative cause of the prediction. -The AI governance components such as IBM OpenScale on CP4D support explainability and manages the drifts in data and concept. OpenPages and AI FactSheet together can alert the stakeholders about important events through a dashboard and allow course correction at any point. -Client-side applications can invoke a REST apiserver that handles some preprocessing of an incoming request before initiating the inference pipeline. Efficiencies might be needed in real-time applications, and inference response time can be reduced by adopting low-level programming while components are communicating. -Figure 23 on page 29 provides a more in-depth view of the architecture of an AI-based predictive maintenance application. -Figure 23 In-depth architectural view -
- -Figure 23 In-depth architectural view -
-In summary, consider the following points while developing an AI-based predictive maintenance application: -GLYPH CP4D offers a Python run time to build a custom solution stack, but also supports different components like Watson Studio, WML, Db2, Data Refinery, OpenScale, AI Factsheets, and OpenPages. -GLYPH The trustworthiness of the predicted output is important for critical use cases. -GLYPH IBM Z provides high data security and low latency requirements at scale for the critical applications. -GLYPH A data scientist can choose to train the model and deploy it on CP4D seamlessly with the latest tech stack that is available. -GLYPH The AIOps and MLOps supported by CP4D to track AI model and data lifecycle throughout the application lifecycle. -Use case 5: AI-powered video analytics on an infant's motions for health prediction -Each year, approximately 5 million newborns worldwide are suffering from a neuro-developmental disorder. Due to the lack of early diagnoses and intervention, many infants are disabled and abandoned, especially in countries with limited numbers of pediatricians with extensive experience in neuro-developmental disorders. This situation is a conundrum that plagues many families around the world. -Infant motion analysis plays critical importance to understanding and comprehending healthy childhood development. In infants, monitoring their poses provides information about their health that can lead to a better prediction of early developmental risk assessment and diagnosis. -Adults use different techniques and methods to express their feelings (like sick, happy, stressed, or hungry), but this case is usually different for infants who cannot express their feelings. Based on the baby movements, AI can predict their expression or health. -In this use case, we examine how AI-powered video analytics can assist new parents and hospitals by addressing pose-based real-time body movements of the infants (such as arching back, head banging, kicking legs, rubbing eyes, stretching, and sucking fingers). During the initial months of a baby's life, spontaneous movements might indicate later developmental disorders, such as cerebral palsy, Rett syndrome, and autism spectrum disorders. -Industry challenges -There are video surveillance systems that are installed for monitoring an infant's movement in many hospitals or homes so that any problem can be witnessed and potentially even stopped before they take place. These systems require much manual work to monitor the real-stream videos and intervene when a problem is detected. -There is a certain amount of trust that you must place on the person who monitors a surveillance system to ensure that the job is being done effectively and efficiently, and that the surveillance system is being vigilantly watched. Because of the dependency on these manual efforts, you need something "smart" that monitors constantly the surveillance system and detect problems effectively. -AI is shaping the controls of surveillance that can map and track occurrences with self-learning abilities, AI can improve on human operations and analyze video footage in real time to alert the hospitals or parents if any anomalies are identified. -Video processing a stream of data from surveillance systems and then performing advance analytics and detecting anomalies quickly is a significant challenge in the industry. -Infant motion analytics in real time -AI is the current "market trend evolution" in video analytics and advancing the decision-making capabilities of the human mind. DL-based computer vision AI techniques are being widely adopted by various industries to solve real-time problems. These techniques improve the detection and prediction accuracy without increasing the hardware cost exponentially. For users, AI greatly reduces the workload of the monitoring staff and provides benefits by detecting unusual incidents and solving many video forensic problems. -CP4D was used to build and deploy the AI-powered video analytics on infant's motion for health prediction use case on IBM Z. IBM Z with AI accelerator enables faster inference for detecting face and body movements and performing angle analytics in real time. -Figure 24 shows an architectural diagram about how to design and develop an AI model for real-time body pose detection on IBM Z. A deep convolutional neural network architecture was trained on the task of infant pose estimation on the custom data set by leveraging IBM Cloud Pak for Data. -Figure 24 Architecture for AI-powered video analytics -
- -Figure 24 Architecture for AI-powered video analytics -
-Live camera feeds or recorded videos of an infant's movement are the inputs for a pose detection model. This video streaming data was stored in IBM Cloudfi Object Storage for image processing. Video data must be transformed into frames so that the infant's body poses can be detected. These post-estimation components of the pipeline predict the location of all 17-person key points with 3 degrees of freedom each (x, y location and visibility) plus two virtual alignment key points. This approach also embraces a compute-intensive heat map prediction of infant body posture. -When changes in body posture or movement happen, analytics can be performed, and a threshold can be set for the angle of the body and posture movements. An analysis can be performed on movement that is based on that threshold to help to predict an infant's health index in the output video stream by leveraging the IBM z16 on-chip AI acceleration, which provides an execution speed in real time on an edge device, which cannot be achieved by other means. -We can leverage the following AI technology stack for this use case: -GLYPH Convolutional neural network: Build an artificial neural network model on video streaming and images. -GLYPH TensorFlow: A DL back-end framework that is based on TensorFlow. -GLYPH Mediapipe: A library that helps with video streaming processing and prediction of human pose estimation. -GLYPH OpenCV: A real-time computer vision library that helps perform image processing. -WML was used for deployment of the pose detection model and generated notifications to users with web and mobile applications, and it integrates with Fitbit for push notifications so that hospitals and parents can take preventive actions. -Additional resources -GLYPH The Cloud Pak for Data 4.5 on IBM Z Overview Demo video provides an overview of some of the more important features of CP4D on IBM Z. -GLYPH IBM Cloud Pak for Data Tutorials. -GLYPH Here are some additional use cases that use the data science frameworks that are available as part of CP4D on IBM Z and IBM LinuxONE: --Payment Card Fraud Detection by using TensorFlow on CP4D on IBM Z and IBM LinuxONE is a payment card fraud detection use case. --Fashion-MNIST clothing classification with PyTorch on Cloud Pak for Data on IBM Z and IBM LinuxONE is a Fashion-MNIST clothing classification use case. --Payment Card Fraud Prevention by using Snap ML on IBM Cloud Pak for Data on Red Hat OpenShift on a virtual machine on IBM Z and IBM LinuxONE, which leverage the z16 integrated AI accelerator describes a use case that uses Snap Machine Learning in Cloud Pak for Data on IBM Z and IBM LinuxONE. It is a Snap ML use case. -A companion video can be found at Credit Card Fraud Detection by using Snap ML on IBM Cloud Pak for Data on IBM Z and IBM LinuxONE. -Summary -This IBM Redbooksfi publication presented an overview of how IBM Cloud Pak for Data on IBM Z can modernize your data infrastructure; develop and deploy ML and AI models; and instantiate highly efficient analytics deployment on IBM LinuxONE. This publication demonstrated these tasks by guiding the reader through five common use cases where CP4D on IBM Z and IBM LinuxONE uses the different features that are supported on the platform, and showing how the associated features can help an enterprise to build AI and ML models with core transactional data, which results in a highly efficient analytics deployment that minimizes latency, cost inefficiencies, and potential security exposures that are connected with data transportation. -Authors -This publication was produced by a team of specialists from around the world working with the IBM Redbooks team: -Jasmeet Bhatia is an AI on IBM Z Product Manager who supports CP4D on IBM Z. She has 2.5 years of combined experience as a data scientist and a product manager. Jasmeet lives in San Francisco, California and holds a Bachelor of Arts degree in Data Science. She is working on her Master of Science degree in Data Science. Her area of expertise includes AI, data science, and product management. -Ravi Gummadi is a Technical Leader for CP4D on Linux on IBM Z and IBM LinuxONE in India. He has 18+ years of experience in the design and development of enterprise software for various platforms, including IBM Z and IBM LinuxONE. He holds a master's degree in computer science and engineering from the Indian Institute of Technology Madras (IIT Madras). His areas of expertise include compilers, virtualization, big data analytics, containers, data, and AI, with a special focus on open-source ecosystems. -Chandra Shekhar Reddy Potula is a Lead AI on zSystems team Architect for Linux on IBM Z and LinuxONE in India. He has 18+ years of experience in the design and development of enterprise software and firmware for various platforms, including IBM Z and LinuxONE. He holds a degree in computer science of engineering from Jawaharlal Nehru Technological University (JNTU). His areas of expertise include networking, virtualization, containers, data, and AI, with a special focus on open-source ecosystems. -Srirama Sharma is a Lead Technical Architect for IBM Cloud Pak, IBM Instanafi, IBM Turbonomicfi, and Red Hat Advanced Cluster Management for Kubernetes (RHACM) on IBM Z and LinuxONE. He has 18+ years of experience in UNIX and Linux application and device driver development. He designs ISV solutions on IBM Systems and IBM Blockchainfi. He also works on cloud-native adoption of enterprise solutions on IBM Z and LinuxONE. Srirama holds a Bachelor of Engineering degree in computer science from Visvesvaraya Technological University (VTU). He lives in Bangalore, Karnataka. His areas of expertise include UNIX and Linux systems programming, virtualization, performance benchmarking of Financial Services Sector (FSS) industry solutions, open-source ecosystems, server infrastructure, and cloud-native adoption and modernization. -Thanks to the following people for their contributions to this project: -Lydia Parziale, Project Manager IBM Redbooks, Poughkeepsie Center -Shin Kelly Yang, AI on IBM Z Product Management IBM US -Tom Ramey, Anna Shugol, Andrew Sica, Jonathan Sloan, Elpida Tzortzatos, Meeta Vouk, IBM -Now you can become a published author, too! -Here's an opportunity to spotlight your skills, grow your career, and become a published author-all at the same time! Join an IBM Redbooks residency project and help write a book in your area of expertise, while honing your experience using leading-edge technologies. Your efforts will help to increase product acceptance and customer satisfaction, as you expand your network of technical contacts and relationships. Residencies run from two to six weeks in length, and you can participate either in person or as a remote resident working from your home base. -Find out more about the residency program, browse the residency index, and apply online at: -ibm.com /redbooks/residencies.html -Stay connected to IBM Redbooks -GLYPH Find us on LinkedIn: -http://www.linkedin.com/groups?home=&gid=2130806 -GLYPH Explore new Redbooks publications, residencies, and workshops with the IBM Redbooks weekly newsletter: -https://www.redbooks.ibm.com/Redbooks.nsf/subscribe?OpenForm -GLYPH Stay current on recent Redbooks publications with RSS Feeds: -http://www.redbooks.ibm.com/rss.html -Notices -This information was developed for products and services offered in the US. This material might be available from IBM in other languages. However, you may be required to own a copy of the product or product version in that language in order to access it. -IBM may not offer the products, services, or features discussed in this document in other countries. Consult your local IBM representative for information on the products and services currently available in your area. Any reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, program, or service may be used. Any functionally equivalent product, program, or service that does not infringe any IBM intellectual property right may be used instead. However, it is the user's responsibility to evaluate and verify the operation of any non-IBM product, program, or service. -IBM may have patents or pending patent applications covering subject matter described in this document. The furnishing of this document does not grant you any license to these patents. You can send license inquiries, in writing, to: -IBM Director of Licensing, IBM Corporation, North Castle Drive, MD-NC119, Armonk, NY 10504-1785, US -INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some jurisdictions do not allow disclaimer of express or implied warranties in certain transactions, therefore, this statement may not apply to you. -This information could include technical inaccuracies or typographical errors. Changes are periodically made to the information herein; these changes will be incorporated in new editions of the publication. IBM may make improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time without notice. -Any references in this information to non-IBM websites are provided for convenience only and do not in any manner serve as an endorsement of those websites. The materials at those websites are not part of the materials for this IBM product and use of those websites is at your own risk. -IBM may use or distribute any of the information you provide in any way it believes appropriate without incurring any obligation to you. -The performance data and client examples cited are presented for illustrative purposes only. Actual performance results may vary depending on specific configurations and operating conditions. -Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly available sources. IBM has not tested those products and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products. -Statements regarding IBM's future direction or intent are subject to change or withdrawal without notice, and represent goals and objectives only. -This information contains examples of data and reports used in daily business operations. To illustrate them as completely as possible, the examples include the names of individuals, companies, brands, and products. All of these names are fictitious and any similarity to actual people or business enterprises is entirely coincidental. -COPYRIGHT LICENSE: -This information contains sample application programs in source language, which illustrate programming techniques on various operating platforms. You may copy, modify, and distribute these sample programs in any form without payment to IBM, for the purposes of developing, using, marketing or distributing application programs conforming to the application programming interface for the operating platform for which the sample programs are written. These examples have not been thoroughly tested under all conditions. IBM, therefore, cannot guarantee or imply reliability, serviceability, or function of these programs. The sample programs are provided "AS IS", without warranty of any kind. IBM shall not be liable for any damages arising out of your use of the sample programs. -Trademarks -IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines Corporation, registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the web at "Copyright and trademark information" at http://www.ibm.com/legal/copytrade.shtml -The following terms are trademarks or registered trademarks of International Business Machines Corporation, and might also be trademarks or registered trademarks in other countries. -Db2fi IBMfi -IBM Blockchainfi -IBM Cloudfi IBM Clou -d Pakfi -IBM Telum™ -IBM Watsonfi -IBM z16™ -Instanafi -Open Libertyfi -OpenPagesfi -Redbooksfi -The following terms are trademarks of other companies: -Intel, Intel logo, Intel Inside logo, and Intel Centrino logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries. -The registered trademark Linuxfi is used pursuant to a sublicense from the Linux Foundation, the exclusive licensee of Linus Torvalds, owner of the mark on a worldwide basis. -Red Hat and OpenShift are trademarks or registered trademarks of Red Hat, Inc. or its subsidiaries in the United States and other countries. -UNIX is a registered trademark of The Open Group in the United States and other countries. -Other company, product, or service names may be trademarks or service marks of others. -Redbooks (log o) fi Turbon -omicfi -WebSpherefi -z/OSfi -z16™ -
- -
-Back cover -
- -
-REDP-5695-00 -ISBN 0738461067 -
- -
-
\ No newline at end of file diff --git a/tests/data/groundtruth/docling_v2/redp5695.json b/tests/data/groundtruth/docling_v2/redp5695.json deleted file mode 100644 index b845a0b7..00000000 --- a/tests/data/groundtruth/docling_v2/redp5695.json +++ /dev/null @@ -1 +0,0 @@ -{"schema_name": "DoclingDocument", "version": "1.0.0", "name": "redp5695", "origin": {"mimetype": "application/pdf", "binary_hash": 3842331695335452030, "filename": "redp5695.pdf", "uri": null}, "furniture": {"self_ref": "#/furniture", "parent": null, "children": [], "name": "_root_", "label": "unspecified"}, "body": {"self_ref": "#/body", "parent": null, "children": [{"cref": "#/texts/0"}, {"cref": "#/pictures/0"}, {"cref": "#/texts/1"}, {"cref": "#/texts/2"}, {"cref": "#/texts/3"}, {"cref": "#/texts/4"}, {"cref": "#/texts/5"}, {"cref": "#/texts/6"}, {"cref": "#/pictures/1"}, {"cref": "#/pictures/2"}, {"cref": "#/pictures/3"}, {"cref": "#/texts/7"}, {"cref": "#/texts/8"}, {"cref": "#/texts/9"}, {"cref": "#/texts/10"}, {"cref": "#/texts/11"}, {"cref": "#/texts/12"}, {"cref": "#/texts/13"}, {"cref": "#/texts/14"}, {"cref": "#/texts/15"}, {"cref": "#/texts/16"}, {"cref": "#/texts/17"}, {"cref": "#/groups/0"}, {"cref": "#/texts/24"}, {"cref": "#/texts/25"}, {"cref": "#/texts/26"}, {"cref": "#/texts/27"}, {"cref": "#/texts/28"}, {"cref": "#/texts/29"}, {"cref": "#/texts/30"}, {"cref": "#/pictures/4"}, {"cref": "#/texts/31"}, {"cref": "#/texts/32"}, {"cref": "#/texts/33"}, {"cref": "#/texts/34"}, {"cref": "#/texts/35"}, {"cref": "#/texts/36"}, {"cref": "#/texts/37"}, {"cref": "#/pictures/5"}, {"cref": "#/texts/38"}, {"cref": "#/texts/39"}, {"cref": "#/texts/40"}, {"cref": "#/pictures/6"}, {"cref": "#/texts/41"}, {"cref": "#/texts/42"}, {"cref": "#/texts/43"}, {"cref": "#/texts/44"}, {"cref": "#/texts/45"}, {"cref": "#/texts/46"}, {"cref": "#/texts/47"}, {"cref": "#/pictures/7"}, {"cref": "#/texts/48"}, {"cref": "#/texts/49"}, {"cref": "#/texts/50"}, {"cref": "#/pictures/8"}, {"cref": "#/texts/51"}, {"cref": "#/texts/52"}, {"cref": "#/texts/53"}, {"cref": "#/texts/54"}, {"cref": "#/texts/55"}, {"cref": "#/texts/56"}, {"cref": "#/texts/57"}, {"cref": "#/texts/58"}, {"cref": "#/pictures/9"}, {"cref": "#/texts/59"}, {"cref": "#/groups/1"}, {"cref": "#/texts/64"}, {"cref": "#/texts/65"}, {"cref": "#/texts/66"}, {"cref": "#/groups/2"}, {"cref": "#/texts/73"}, {"cref": "#/texts/74"}, {"cref": "#/texts/75"}, {"cref": "#/texts/76"}, {"cref": "#/texts/77"}, {"cref": "#/texts/78"}, {"cref": "#/texts/79"}, {"cref": "#/texts/80"}, {"cref": "#/texts/81"}, {"cref": "#/texts/82"}, {"cref": "#/texts/83"}, {"cref": "#/texts/84"}, {"cref": "#/texts/85"}, {"cref": "#/texts/86"}, {"cref": "#/texts/87"}, {"cref": "#/texts/88"}, {"cref": "#/texts/89"}, {"cref": "#/texts/90"}, {"cref": "#/texts/91"}, {"cref": "#/pictures/10"}, {"cref": "#/texts/92"}, {"cref": "#/groups/3"}, {"cref": "#/texts/99"}, {"cref": "#/texts/100"}, {"cref": "#/texts/101"}, {"cref": "#/texts/102"}, {"cref": "#/texts/103"}, {"cref": "#/texts/104"}, {"cref": "#/texts/105"}, {"cref": "#/texts/106"}, {"cref": "#/texts/107"}, {"cref": "#/texts/108"}, {"cref": "#/groups/4"}, {"cref": "#/texts/118"}, {"cref": "#/texts/119"}, {"cref": "#/texts/120"}, {"cref": "#/texts/121"}, {"cref": "#/texts/122"}, {"cref": "#/groups/5"}, {"cref": "#/texts/126"}, {"cref": "#/texts/127"}, {"cref": "#/texts/128"}, {"cref": "#/texts/129"}, {"cref": "#/texts/130"}, {"cref": "#/texts/131"}, {"cref": "#/groups/6"}, {"cref": "#/texts/138"}, {"cref": "#/texts/139"}, {"cref": "#/texts/140"}, {"cref": "#/texts/141"}, {"cref": "#/texts/142"}, {"cref": "#/texts/143"}, {"cref": "#/texts/144"}, {"cref": "#/pictures/11"}, {"cref": "#/texts/145"}, {"cref": "#/texts/146"}, {"cref": "#/texts/147"}, {"cref": "#/texts/148"}, {"cref": "#/texts/149"}, {"cref": "#/texts/150"}, {"cref": "#/texts/151"}, {"cref": "#/groups/7"}, {"cref": "#/texts/156"}, {"cref": "#/texts/157"}, {"cref": "#/groups/8"}, {"cref": "#/texts/161"}, {"cref": "#/texts/162"}, {"cref": "#/groups/9"}, {"cref": "#/texts/166"}, {"cref": "#/groups/10"}, {"cref": "#/texts/169"}, {"cref": "#/texts/170"}, {"cref": "#/texts/171"}, {"cref": "#/texts/172"}, {"cref": "#/pictures/12"}, {"cref": "#/texts/173"}, {"cref": "#/groups/11"}, {"cref": "#/texts/175"}, {"cref": "#/pictures/13"}, {"cref": "#/texts/176"}, {"cref": "#/texts/177"}, {"cref": "#/groups/12"}, {"cref": "#/texts/179"}, {"cref": "#/pictures/14"}, {"cref": "#/groups/13"}, {"cref": "#/texts/181"}, {"cref": "#/pictures/15"}, {"cref": "#/texts/182"}, {"cref": "#/groups/14"}, {"cref": "#/texts/184"}, {"cref": "#/pictures/16"}, {"cref": "#/texts/185"}, {"cref": "#/texts/186"}, {"cref": "#/pictures/17"}, {"cref": "#/texts/187"}, {"cref": "#/texts/188"}, {"cref": "#/texts/189"}, {"cref": "#/texts/190"}, {"cref": "#/pictures/18"}, {"cref": "#/texts/191"}, {"cref": "#/groups/15"}, {"cref": "#/texts/193"}, {"cref": "#/pictures/19"}, {"cref": "#/texts/194"}, {"cref": "#/texts/195"}, {"cref": "#/texts/196"}, {"cref": "#/texts/197"}, {"cref": "#/pictures/20"}, {"cref": "#/texts/198"}, {"cref": "#/texts/199"}, {"cref": "#/pictures/21"}, {"cref": "#/texts/200"}, {"cref": "#/texts/201"}, {"cref": "#/texts/202"}, {"cref": "#/texts/203"}, {"cref": "#/texts/204"}, {"cref": "#/texts/205"}, {"cref": "#/texts/206"}, {"cref": "#/texts/207"}, {"cref": "#/texts/208"}, {"cref": "#/texts/209"}, {"cref": "#/texts/210"}, {"cref": "#/texts/211"}, {"cref": "#/pictures/22"}, {"cref": "#/texts/212"}, {"cref": "#/texts/213"}, {"cref": "#/texts/214"}, {"cref": "#/texts/215"}, {"cref": "#/texts/216"}, {"cref": "#/texts/217"}, {"cref": "#/texts/218"}, {"cref": "#/texts/219"}, {"cref": "#/texts/220"}, {"cref": "#/texts/221"}, {"cref": "#/pictures/23"}, {"cref": "#/texts/222"}, {"cref": "#/texts/223"}, {"cref": "#/groups/16"}, {"cref": "#/texts/229"}, {"cref": "#/texts/230"}, {"cref": "#/texts/231"}, {"cref": "#/texts/232"}, {"cref": "#/texts/233"}, {"cref": "#/texts/234"}, {"cref": "#/texts/235"}, {"cref": "#/texts/236"}, {"cref": "#/texts/237"}, {"cref": "#/texts/238"}, {"cref": "#/texts/239"}, {"cref": "#/texts/240"}, {"cref": "#/texts/241"}, {"cref": "#/texts/242"}, {"cref": "#/pictures/24"}, {"cref": "#/texts/243"}, {"cref": "#/groups/17"}, {"cref": "#/texts/261"}, {"cref": "#/texts/262"}, {"cref": "#/groups/18"}, {"cref": "#/texts/266"}, {"cref": "#/texts/267"}, {"cref": "#/texts/268"}, {"cref": "#/texts/269"}, {"cref": "#/texts/270"}, {"cref": "#/pictures/25"}, {"cref": "#/texts/271"}, {"cref": "#/texts/272"}, {"cref": "#/texts/273"}, {"cref": "#/texts/274"}, {"cref": "#/texts/275"}, {"cref": "#/texts/276"}, {"cref": "#/texts/277"}, {"cref": "#/texts/278"}, {"cref": "#/texts/279"}, {"cref": "#/texts/280"}, {"cref": "#/texts/281"}, {"cref": "#/texts/282"}, {"cref": "#/texts/283"}, {"cref": "#/pictures/26"}, {"cref": "#/texts/284"}, {"cref": "#/groups/19"}, {"cref": "#/texts/290"}, {"cref": "#/texts/291"}, {"cref": "#/texts/292"}, {"cref": "#/texts/293"}, {"cref": "#/texts/294"}, {"cref": "#/texts/295"}, {"cref": "#/texts/296"}, {"cref": "#/texts/297"}, {"cref": "#/texts/298"}, {"cref": "#/texts/299"}, {"cref": "#/texts/300"}, {"cref": "#/texts/301"}, {"cref": "#/texts/302"}, {"cref": "#/texts/303"}, {"cref": "#/texts/304"}, {"cref": "#/texts/305"}, {"cref": "#/texts/306"}, {"cref": "#/texts/307"}, {"cref": "#/pictures/27"}, {"cref": "#/texts/308"}, {"cref": "#/texts/309"}, {"cref": "#/texts/310"}, {"cref": "#/groups/20"}, {"cref": "#/texts/315"}, {"cref": "#/texts/316"}, {"cref": "#/texts/317"}, {"cref": "#/groups/21"}, {"cref": "#/texts/324"}, {"cref": "#/texts/325"}, {"cref": "#/texts/326"}, {"cref": "#/texts/327"}, {"cref": "#/texts/328"}, {"cref": "#/texts/329"}, {"cref": "#/texts/330"}, {"cref": "#/texts/331"}, {"cref": "#/texts/332"}, {"cref": "#/texts/333"}, {"cref": "#/texts/334"}, {"cref": "#/texts/335"}, {"cref": "#/texts/336"}, {"cref": "#/texts/337"}, {"cref": "#/texts/338"}, {"cref": "#/texts/339"}, {"cref": "#/texts/340"}, {"cref": "#/texts/341"}, {"cref": "#/texts/342"}, {"cref": "#/texts/343"}, {"cref": "#/texts/344"}, {"cref": "#/groups/22"}, {"cref": "#/texts/346"}, {"cref": "#/groups/23"}, {"cref": "#/texts/350"}, {"cref": "#/texts/351"}, {"cref": "#/texts/352"}, {"cref": "#/texts/353"}, {"cref": "#/texts/354"}, {"cref": "#/texts/355"}, {"cref": "#/texts/356"}, {"cref": "#/texts/357"}, {"cref": "#/texts/358"}, {"cref": "#/texts/359"}, {"cref": "#/texts/360"}, {"cref": "#/texts/361"}, {"cref": "#/texts/362"}, {"cref": "#/texts/363"}, {"cref": "#/texts/364"}, {"cref": "#/texts/365"}, {"cref": "#/texts/366"}, {"cref": "#/texts/367"}, {"cref": "#/texts/368"}, {"cref": "#/texts/369"}, {"cref": "#/texts/370"}, {"cref": "#/texts/371"}, {"cref": "#/texts/372"}, {"cref": "#/texts/373"}, {"cref": "#/texts/374"}, {"cref": "#/texts/375"}, {"cref": "#/texts/376"}, {"cref": "#/texts/377"}, {"cref": "#/texts/378"}, {"cref": "#/texts/379"}, {"cref": "#/texts/380"}, {"cref": "#/texts/381"}, {"cref": "#/texts/382"}, {"cref": "#/texts/383"}, {"cref": "#/texts/384"}, {"cref": "#/texts/385"}, {"cref": "#/texts/386"}, {"cref": "#/texts/387"}, {"cref": "#/texts/388"}, {"cref": "#/texts/389"}, {"cref": "#/texts/390"}, {"cref": "#/texts/391"}, {"cref": "#/texts/392"}, {"cref": "#/texts/393"}, {"cref": "#/texts/394"}, {"cref": "#/texts/395"}, {"cref": "#/texts/396"}, {"cref": "#/pictures/28"}, {"cref": "#/texts/397"}, {"cref": "#/pictures/29"}, {"cref": "#/texts/398"}, {"cref": "#/texts/399"}, {"cref": "#/texts/400"}, {"cref": "#/pictures/30"}], "name": "_root_", "label": "unspecified"}, "groups": [{"self_ref": "#/groups/0", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/18"}, {"cref": "#/texts/19"}, {"cref": "#/texts/20"}, {"cref": "#/texts/21"}, {"cref": "#/texts/22"}, {"cref": "#/texts/23"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/1", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/60"}, {"cref": "#/texts/61"}, {"cref": "#/texts/62"}, {"cref": "#/texts/63"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/2", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/67"}, {"cref": "#/texts/68"}, {"cref": "#/texts/69"}, {"cref": "#/texts/70"}, {"cref": "#/texts/71"}, {"cref": "#/texts/72"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/3", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/93"}, {"cref": "#/texts/94"}, {"cref": "#/texts/95"}, {"cref": "#/texts/96"}, {"cref": "#/texts/97"}, {"cref": "#/texts/98"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/4", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/109"}, {"cref": "#/texts/110"}, {"cref": "#/texts/111"}, {"cref": "#/texts/112"}, {"cref": "#/texts/113"}, {"cref": "#/texts/114"}, {"cref": "#/texts/115"}, {"cref": "#/texts/116"}, {"cref": "#/texts/117"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/5", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/123"}, {"cref": "#/texts/124"}, {"cref": "#/texts/125"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/6", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/132"}, {"cref": "#/texts/133"}, {"cref": "#/texts/134"}, {"cref": "#/texts/135"}, {"cref": "#/texts/136"}, {"cref": "#/texts/137"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/7", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/152"}, {"cref": "#/texts/153"}, {"cref": "#/texts/154"}, {"cref": "#/texts/155"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/8", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/158"}, {"cref": "#/texts/159"}, {"cref": "#/texts/160"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/9", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/163"}, {"cref": "#/texts/164"}, {"cref": "#/texts/165"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/10", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/167"}, {"cref": "#/texts/168"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/11", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/174"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/12", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/178"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/13", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/180"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/14", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/183"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/15", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/192"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/16", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/224"}, {"cref": "#/texts/225"}, {"cref": "#/texts/226"}, {"cref": "#/texts/227"}, {"cref": "#/texts/228"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/17", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/244"}, {"cref": "#/texts/245"}, {"cref": "#/texts/246"}, {"cref": "#/texts/247"}, {"cref": "#/texts/248"}, {"cref": "#/texts/249"}, {"cref": "#/texts/250"}, {"cref": "#/texts/251"}, {"cref": "#/texts/252"}, {"cref": "#/texts/253"}, {"cref": "#/texts/254"}, {"cref": "#/texts/255"}, {"cref": "#/texts/256"}, {"cref": "#/texts/257"}, {"cref": "#/texts/258"}, {"cref": "#/texts/259"}, {"cref": "#/texts/260"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/18", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/263"}, {"cref": "#/texts/264"}, {"cref": "#/texts/265"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/19", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/285"}, {"cref": "#/texts/286"}, {"cref": "#/texts/287"}, {"cref": "#/texts/288"}, {"cref": "#/texts/289"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/20", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/311"}, {"cref": "#/texts/312"}, {"cref": "#/texts/313"}, {"cref": "#/texts/314"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/21", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/318"}, {"cref": "#/texts/319"}, {"cref": "#/texts/320"}, {"cref": "#/texts/321"}, {"cref": "#/texts/322"}, {"cref": "#/texts/323"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/22", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/345"}], "name": "list", "label": "list"}, {"self_ref": "#/groups/23", "parent": {"cref": "#/body"}, "children": [{"cref": "#/texts/347"}, {"cref": "#/texts/348"}, {"cref": "#/texts/349"}], "name": "list", "label": "list"}], "texts": [{"self_ref": "#/texts/0", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 1, "bbox": {"l": 285.9599914550781, "t": 782.77197265625, "r": 417.8999938964844, "b": 760.5719604492188, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 11]}], "orig": "Front cover", "text": "Front cover"}, {"self_ref": "#/texts/1", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 1, "bbox": {"l": 44.81999969482422, "t": 683.473876953125, "r": 535.7647094726562, "b": 595.87158203125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 31]}], "orig": "IBM Cloud Pak for Data on IBM Z", "text": "IBM Cloud Pak for Data on IBM Z", "level": 1}, {"self_ref": "#/texts/2", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 1, "bbox": {"l": 43.98441696166992, "t": 491.095947265625, "r": 124.95372772216797, "b": 477.7195129394531, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 14]}], "orig": "Jasmeet Bhatia", "text": "Jasmeet Bhatia"}, {"self_ref": "#/texts/3", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 1, "bbox": {"l": 44.41876983642578, "t": 465.8930969238281, "r": 119.91647338867188, "b": 452.2200012207031, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 12]}], "orig": "Ravi Gummadi", "text": "Ravi Gummadi"}, {"self_ref": "#/texts/4", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 1, "bbox": {"l": 44.286624908447266, "t": 440.6647644042969, "r": 204.99734497070312, "b": 426.2153015136719, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 28]}], "orig": "Chandra Shekhar Reddy Potula", "text": "Chandra Shekhar Reddy Potula"}, {"self_ref": "#/texts/5", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 1, "bbox": {"l": 44.1224250793457, "t": 415.3961181640625, "r": 128.9265899658203, "b": 401.2209777832031, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 14]}], "orig": "Srirama Sharma", "text": "Srirama Sharma"}, {"self_ref": "#/texts/6", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 1, "bbox": {"l": 41.496700286865234, "t": 163.001953125, "r": 138.0545654296875, "b": 139.77430725097656, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 11]}], "orig": "Data and AI", "text": "Data and AI"}, {"self_ref": "#/texts/7", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 3, "bbox": {"l": 64.80000305175781, "t": 535.0673217773438, "r": 292.852783203125, "b": 511.6919860839844, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 18]}], "orig": "Executive overview", "text": "Executive overview", "level": 1}, {"self_ref": "#/texts/8", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 3, "bbox": {"l": 135.93707275390625, "t": 476.0090637207031, "r": 547.2804565429688, "b": 393.32940673828125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 573]}], "orig": "Most industries are susceptible to fraud, which poses a risk to both businesses and consumers. According to The National Health Care Anti-Fraud Association, health care fraud alone causes the nation around $68 billion annually.$^{1}$ This statistic does not include the numerous other industries where fraudulent activities occur daily. In addition, the growing amount of data that enterprises own makes it difficult for them to detect fraud. Businesses can benefit by using an analytical platform to fully integrate their data with artificial intelligence (AI) technology.", "text": "Most industries are susceptible to fraud, which poses a risk to both businesses and consumers. According to The National Health Care Anti-Fraud Association, health care fraud alone causes the nation around $68 billion annually.$^{1}$ This statistic does not include the numerous other industries where fraudulent activities occur daily. In addition, the growing amount of data that enterprises own makes it difficult for them to detect fraud. Businesses can benefit by using an analytical platform to fully integrate their data with artificial intelligence (AI) technology."}, {"self_ref": "#/texts/9", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 3, "bbox": {"l": 135.84193420410156, "t": 381.958984375, "r": 547.349853515625, "b": 323.9799499511719, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 392]}], "orig": "With IBM Cloud Pakfi for Data on IBM Z, enterprises can modernize their data infrastructure, develop, and deploy machine learning (ML) and AI models, and instantiate highly efficient analytics deployment on IBM LinuxONE. Enterprises can create cutting-edge, intelligent, and interactive applications with embedded AI, colocate data with commercial applications, and use AI to make inferences.", "text": "With IBM Cloud Pakfi for Data on IBM Z, enterprises can modernize their data infrastructure, develop, and deploy machine learning (ML) and AI models, and instantiate highly efficient analytics deployment on IBM LinuxONE. Enterprises can create cutting-edge, intelligent, and interactive applications with embedded AI, colocate data with commercial applications, and use AI to make inferences."}, {"self_ref": "#/texts/10", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 3, "bbox": {"l": 135.86183166503906, "t": 312.0947265625, "r": 547.2882690429688, "b": 253.34674072265625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 385]}], "orig": "This IBM Redguide publication presents a high-level overview of IBM Z. It describes IBM Cloud Pak for Data (CP4D) on IBM Z and IBM LinuxONE, the different features that are supported on the platform, and how the associated features can help enterprise customers in building AI and ML models by using core transactional data, which results in decreased latency and increased throughput.", "text": "This IBM Redguide publication presents a high-level overview of IBM Z. It describes IBM Cloud Pak for Data (CP4D) on IBM Z and IBM LinuxONE, the different features that are supported on the platform, and how the associated features can help enterprise customers in building AI and ML models by using core transactional data, which results in decreased latency and increased throughput."}, {"self_ref": "#/texts/11", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 3, "bbox": {"l": 135.76502990722656, "t": 242.08624267578125, "r": 547.2760009765625, "b": 171.91412353515625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 503]}], "orig": "This publication highlights real-time CP4D on IBM Z use cases. Real-time Clearing and Settlement Transactions, Trustworthy AI and its Role in Day-To-Day Monitoring, and the Prevention of Retail Crimes are use cases that are described in this publication. Using CP4D on IBM Z and LinuxONE, this publication shows how businesses can implement a highly efficient analytics deployment that minimizes latency, cost inefficiencies, and potential security exposures that are connected with data transportation.", "text": "This publication highlights real-time CP4D on IBM Z use cases. Real-time Clearing and Settlement Transactions, Trustworthy AI and its Role in Day-To-Day Monitoring, and the Prevention of Retail Crimes are use cases that are described in this publication. Using CP4D on IBM Z and LinuxONE, this publication shows how businesses can implement a highly efficient analytics deployment that minimizes latency, cost inefficiencies, and potential security exposures that are connected with data transportation."}, {"self_ref": "#/texts/12", "parent": {"cref": "#/body"}, "children": [], "label": "footnote", "prov": [{"page_no": 3, "bbox": {"l": 136.8000030517578, "t": 66.7349853515625, "r": 387.7856140136719, "b": 57.0750732421875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 68]}], "orig": "$^{1 }$https://www.bcbsm.com/health-care-fraud/fraud-statistics.html", "text": "$^{1 }$https://www.bcbsm.com/health-care-fraud/fraud-statistics.html"}, {"self_ref": "#/texts/13", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 3, "bbox": {"l": 63.59157943725586, "t": 37.41259765625, "r": 180.34423828125, "b": 27.9246826171875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 27]}], "orig": "' Copyright IBM Corp. 2023.", "text": "' Copyright IBM Corp. 2023."}, {"self_ref": "#/texts/14", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 3, "bbox": {"l": 541.2573852539062, "t": 37.69696044921875, "r": 547.2176513671875, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 1]}], "orig": "1", "text": "1"}, {"self_ref": "#/texts/15", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 4, "bbox": {"l": 64.69976043701172, "t": 721.8857421875, "r": 212.3214874267578, "b": 706.0162963867188, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 18]}], "orig": "IBM Z: An overview", "text": "IBM Z: An overview", "level": 1}, {"self_ref": "#/texts/16", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 4, "bbox": {"l": 136.16062927246094, "t": 689.2479858398438, "r": 539.5514526367188, "b": 630.7666015625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 365]}], "orig": "Ever wonder how many transactions a bank processes per day? What about the pace at which these transactions happen? According to an IBMfi report, 44 of 50 of the world's top banks use IBM Z mainframes for these daily transactions.$^{2}$ IBM Z is a platform that is designed for voluminous data, maximum security, real-time transaction analysis, and cost efficiency.", "text": "Ever wonder how many transactions a bank processes per day? What about the pace at which these transactions happen? According to an IBMfi report, 44 of 50 of the world's top banks use IBM Z mainframes for these daily transactions.$^{2}$ IBM Z is a platform that is designed for voluminous data, maximum security, real-time transaction analysis, and cost efficiency."}, {"self_ref": "#/texts/17", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 4, "bbox": {"l": 135.83799743652344, "t": 619.38916015625, "r": 515.6898803710938, "b": 597.2792358398438, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 92]}], "orig": "The most recent platform for IBM Z is IBM z16\u2122. The IBM z16 supports the following features:", "text": "The most recent platform for IBM Z is IBM z16\u2122. The IBM z16 supports the following features:"}, {"self_ref": "#/texts/18", "parent": {"cref": "#/groups/0"}, "children": [], "label": "list_item", "prov": [{"page_no": 4, "bbox": {"l": 135.797607421875, "t": 590.7014770507812, "r": 255.07154846191406, "b": 580.2049560546875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 39]}], "orig": "GLYPH On-chip AI acceleration", "text": "GLYPH On-chip AI acceleration", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/19", "parent": {"cref": "#/groups/0"}, "children": [], "label": "list_item", "prov": [{"page_no": 4, "bbox": {"l": 135.7379150390625, "t": 573.1817626953125, "r": 289.6485290527344, "b": 562.7115478515625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 45]}], "orig": "GLYPH Quantum-safe crypto discovery", "text": "GLYPH Quantum-safe crypto discovery", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/20", "parent": {"cref": "#/groups/0"}, "children": [], "label": "list_item", "prov": [{"page_no": 4, "bbox": {"l": 135.6077423095703, "t": 556.6842041015625, "r": 247.8863983154297, "b": 546.2800903320312, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 37]}], "orig": "GLYPH Simplified compliance", "text": "GLYPH Simplified compliance", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/21", "parent": {"cref": "#/groups/0"}, "children": [], "label": "list_item", "prov": [{"page_no": 4, "bbox": {"l": 135.57025146484375, "t": 539.3775634765625, "r": 225.32553100585938, "b": 528.6082763671875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 33]}], "orig": "GLYPH Flexible capacity", "text": "GLYPH Flexible capacity", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/22", "parent": {"cref": "#/groups/0"}, "children": [], "label": "list_item", "prov": [{"page_no": 4, "bbox": {"l": 135.6380615234375, "t": 522.0386962890625, "r": 280.60699462890625, "b": 511.7322692871094, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 45]}], "orig": "GLYPH Modernization of applications", "text": "GLYPH Modernization of applications", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/23", "parent": {"cref": "#/groups/0"}, "children": [], "label": "list_item", "prov": [{"page_no": 4, "bbox": {"l": 135.63339233398438, "t": 505.2599792480469, "r": 210.07028198242188, "b": 494.9269104003906, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 30]}], "orig": "GLYPH Sustainability", "text": "GLYPH Sustainability", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/24", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 4, "bbox": {"l": 136.1382598876953, "t": 483.1922607421875, "r": 521.9436645507812, "b": 461.2615661621094, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 101]}], "orig": "With these features, enterprises can upgrade applications while preserving secure and resilient data.", "text": "With these features, enterprises can upgrade applications while preserving secure and resilient data."}, {"self_ref": "#/texts/25", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 4, "bbox": {"l": 135.73519897460938, "t": 449.32598876953125, "r": 434.5896301269531, "b": 438.9506530761719, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 65]}], "orig": "To learn more about these features, see the IBM z16 product page.", "text": "To learn more about these features, see the IBM z16 product page."}, {"self_ref": "#/texts/26", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 4, "bbox": {"l": 136.62892150878906, "t": 427.2217712402344, "r": 415.693603515625, "b": 417.04669189453125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 60]}], "orig": "Figure 1 on page 3 shows a picture of the IBM z16 mainframe.", "text": "Figure 1 on page 3 shows a picture of the IBM z16 mainframe."}, {"self_ref": "#/texts/27", "parent": {"cref": "#/body"}, "children": [], "label": "footnote", "prov": [{"page_no": 4, "bbox": {"l": 136.5249786376953, "t": 66.81658935546875, "r": 311.82391357421875, "b": 57.0806884765625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 49]}], "orig": "$^{2 }$https://www.ibm.com/case-studies/bankwest/", "text": "$^{2 }$https://www.ibm.com/case-studies/bankwest/"}, {"self_ref": "#/texts/28", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 4, "bbox": {"l": 63.95490646362305, "t": 37.72607421875, "r": 72.8219985961914, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 1]}], "orig": "2", "text": "2"}, {"self_ref": "#/texts/29", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 4, "bbox": {"l": 87.65045166015625, "t": 37.3072509765625, "r": 261.53851318359375, "b": 28.08099365234375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 38]}], "orig": "IBM Cloud Pak for Data on IBM zSystems", "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"self_ref": "#/texts/30", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 5, "bbox": {"l": 135.89208984375, "t": 343.65899658203125, "r": 211.0067596435547, "b": 333.9317321777344, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 16]}], "orig": "Figure 1 IBM z16", "text": "Figure 1 IBM z16"}, {"self_ref": "#/texts/31", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 5, "bbox": {"l": 64.32122039794922, "t": 314.8720397949219, "r": 355.6016540527344, "b": 301.7572937011719, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 43]}], "orig": "IBM z16 and IBM LinuxONE Emperor 4 features", "text": "IBM z16 and IBM LinuxONE Emperor 4 features", "level": 1}, {"self_ref": "#/texts/32", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 5, "bbox": {"l": 135.82815551757812, "t": 288.6673583984375, "r": 547.1771240234375, "b": 230.37913513183594, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 394]}], "orig": "IBM Z are based on enterprise mainframe technology. Starting with transaction-based workloads and databases, IBM Z has undergone tremendous transformations in its system design for many generations to build servers that cater to Linux-based workloads and security with a cyberresilient system, and support quantum computing and modernization by using a hybrid cloud with a focus on data and AI.", "text": "IBM Z are based on enterprise mainframe technology. Starting with transaction-based workloads and databases, IBM Z has undergone tremendous transformations in its system design for many generations to build servers that cater to Linux-based workloads and security with a cyberresilient system, and support quantum computing and modernization by using a hybrid cloud with a focus on data and AI."}, {"self_ref": "#/texts/33", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 5, "bbox": {"l": 541.0438232421875, "t": 37.53704833984375, "r": 547.2176513671875, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 1]}], "orig": "3", "text": "3"}, {"self_ref": "#/texts/34", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 6, "bbox": {"l": 64.14278411865234, "t": 37.86651611328125, "r": 72.8219985961914, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 1]}], "orig": "4", "text": "4"}, {"self_ref": "#/texts/35", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 6, "bbox": {"l": 87.67771911621094, "t": 37.247314453125, "r": 261.53851318359375, "b": 28.11907958984375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 38]}], "orig": "IBM Cloud Pak for Data on IBM zSystems", "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"self_ref": "#/texts/36", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 6, "bbox": {"l": 136.2760009765625, "t": 721.6217041015625, "r": 543.5195922851562, "b": 699.1505126953125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 121]}], "orig": "Figure 2 provides a snapshot of the IBM Z processor roadmap, which depicts the journey of transformation and improvement.", "text": "Figure 2 provides a snapshot of the IBM Z processor roadmap, which depicts the journey of transformation and improvement."}, {"self_ref": "#/texts/37", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 6, "bbox": {"l": 64.39653778076172, "t": 413.2160949707031, "r": 213.14488220214844, "b": 403.9766540527344, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 33]}], "orig": "Figure 2 IBM Z: Processor roadmap", "text": "Figure 2 IBM Z: Processor roadmap"}, {"self_ref": "#/texts/38", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 6, "bbox": {"l": 136.178955078125, "t": 391.21533203125, "r": 547.256591796875, "b": 297.0632019042969, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 689]}], "orig": "The IBM z16 and IBM LinuxONE Emperor 4 are the latest of the IBM Z, and they are developed with a 'built to build' focus to provide a powerful, cyberresilient, open, and secure platform for business with an extra focus on sustainability to help build sustainable data centers. Although the z16 server can host both IBM z/OSfi and Linux workloads, LinuxONE Emperor 4 is built to host Linux only workloads with a focus on consolidation and resiliency. Depending on the workload, consolidation from numerous x86 servers into a LinuxONE Emperor 4 can help reduce energy consumption by 75% and data center floor space by 50%, which helps to achieve the sustainability goals of the organization.", "text": "The IBM z16 and IBM LinuxONE Emperor 4 are the latest of the IBM Z, and they are developed with a 'built to build' focus to provide a powerful, cyberresilient, open, and secure platform for business with an extra focus on sustainability to help build sustainable data centers. Although the z16 server can host both IBM z/OSfi and Linux workloads, LinuxONE Emperor 4 is built to host Linux only workloads with a focus on consolidation and resiliency. Depending on the workload, consolidation from numerous x86 servers into a LinuxONE Emperor 4 can help reduce energy consumption by 75% and data center floor space by 50%, which helps to achieve the sustainability goals of the organization."}, {"self_ref": "#/texts/39", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 6, "bbox": {"l": 136.1420135498047, "t": 285.2823181152344, "r": 547.257568359375, "b": 226.8505859375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 432]}], "orig": "Figure 3 on page 5 shows a summary of the system design of IBM LinuxONE Emperor 4 with the IBM Telum\u2122 processor. The IBM Telum processor chip is designed to run enterprise applications efficiently where their data resides to embed AI with super low latency. The support for higher bandwidth and I/O rates is supported through FCP Express cards with an endpoint security solution. The memory subsystem supports up to 40 TB of memory.", "text": "Figure 3 on page 5 shows a summary of the system design of IBM LinuxONE Emperor 4 with the IBM Telum\u2122 processor. The IBM Telum processor chip is designed to run enterprise applications efficiently where their data resides to embed AI with super low latency. The support for higher bandwidth and I/O rates is supported through FCP Express cards with an endpoint security solution. The memory subsystem supports up to 40 TB of memory."}, {"self_ref": "#/texts/40", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 7, "bbox": {"l": 64.30784606933594, "t": 439.85430908203125, "r": 297.72265625, "b": 430.6064758300781, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 52]}], "orig": "Figure 3 System design of IBM z16 LinuxONE Emperor 4", "text": "Figure 3 System design of IBM z16 LinuxONE Emperor 4"}, {"self_ref": "#/texts/41", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 7, "bbox": {"l": 135.62088012695312, "t": 417.83917236328125, "r": 547.2974243164062, "b": 359.75799560546875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 417]}], "orig": "The IBM z16 and IBM LinuxONE Emperor 4 servers are built with 7-nm technology at a 5.2 GHz speed. They consist of four dual-chip modules (DCMs) per central processor complex (CPC) drawer, each of which is built with two 8-core Telum processor chips that has \"first in the industry\" on-chip acceleration for mid-transaction, real-time AI inferencing, which supports many different use cases, including fraud detection.", "text": "The IBM z16 and IBM LinuxONE Emperor 4 servers are built with 7-nm technology at a 5.2 GHz speed. They consist of four dual-chip modules (DCMs) per central processor complex (CPC) drawer, each of which is built with two 8-core Telum processor chips that has \"first in the industry\" on-chip acceleration for mid-transaction, real-time AI inferencing, which supports many different use cases, including fraud detection."}, {"self_ref": "#/texts/42", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 7, "bbox": {"l": 135.72621154785156, "t": 347.9376525878906, "r": 547.322265625, "b": 277.82769775390625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 452]}], "orig": "Each core has access to a huge private 32 MB L2 cache where up to 16 MB of the L2 cache of an inactive core can be used as virtual cache (L3 / L4) by neighboring active cores on the chip. This cache helps address translation and access checking by prefetching the same virtual cache into the L2 cache. The virtual cache also includes Neural Network Processing Assist instructions and direct memory access with protection, and per chip GZIP compression.", "text": "Each core has access to a huge private 32 MB L2 cache where up to 16 MB of the L2 cache of an inactive core can be used as virtual cache (L3 / L4) by neighboring active cores on the chip. This cache helps address translation and access checking by prefetching the same virtual cache into the L2 cache. The virtual cache also includes Neural Network Processing Assist instructions and direct memory access with protection, and per chip GZIP compression."}, {"self_ref": "#/texts/43", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 7, "bbox": {"l": 541.200439453125, "t": 37.50384521484375, "r": 547.2176513671875, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 1]}], "orig": "5", "text": "5"}, {"self_ref": "#/texts/44", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 8, "bbox": {"l": 64.22818756103516, "t": 37.7176513671875, "r": 72.8219985961914, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 1]}], "orig": "6", "text": "6"}, {"self_ref": "#/texts/45", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 8, "bbox": {"l": 87.59947204589844, "t": 37.28045654296875, "r": 261.53851318359375, "b": 28.08074951171875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 38]}], "orig": "IBM Cloud Pak for Data on IBM zSystems", "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"self_ref": "#/texts/46", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 8, "bbox": {"l": 136.43333435058594, "t": 721.4392700195312, "r": 541.310546875, "b": 698.982421875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 115]}], "orig": "Figure 4 provides more information about the features of AI Accelerator integration with the IBM Z processor cores.", "text": "Figure 4 provides more information about the features of AI Accelerator integration with the IBM Z processor cores."}, {"self_ref": "#/texts/47", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 8, "bbox": {"l": 64.16301727294922, "t": 427.9372253417969, "r": 387.3546142578125, "b": 418.5439453125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 78]}], "orig": "Figure 4 IBM z16 on-chip AI Accelerator integration with IBM Z processor cores", "text": "Figure 4 IBM z16 on-chip AI Accelerator integration with IBM Z processor cores"}, {"self_ref": "#/texts/48", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 8, "bbox": {"l": 135.82852172851562, "t": 406.03216552734375, "r": 547.2345581054688, "b": 323.50567626953125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 600]}], "orig": "The IBM z16 and IBM LinuxONE Emperor 4 server platforms are built with the hardware features that are shown in Figure 4 with addressing data and AI workloads in mind. Regardless of where the ML and deep learning (DL) frameworks are used to build and train data and AI models, the inferencing on existing enterprise application data can happen along currently running enterprise business applications. CP4D 4.6 supports Tensorflow and IBM Snap ML frameworks, which are optimized to use the on-chip AI Accelerator during inferencing. Support for various other frameworks is planned for future releases.", "text": "The IBM z16 and IBM LinuxONE Emperor 4 server platforms are built with the hardware features that are shown in Figure 4 with addressing data and AI workloads in mind. Regardless of where the ML and deep learning (DL) frameworks are used to build and train data and AI models, the inferencing on existing enterprise application data can happen along currently running enterprise business applications. CP4D 4.6 supports Tensorflow and IBM Snap ML frameworks, which are optimized to use the on-chip AI Accelerator during inferencing. Support for various other frameworks is planned for future releases."}, {"self_ref": "#/texts/49", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 8, "bbox": {"l": 136.02378845214844, "t": 312.1341857910156, "r": 544.6222534179688, "b": 289.4884948730469, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 161]}], "orig": "Figure 5 on page 7 shows the seamless integration of AI into existing enterprises workloads on the IBM z16 while leveraging the underlying hardware capabilities.", "text": "Figure 5 on page 7 shows the seamless integration of AI into existing enterprises workloads on the IBM z16 while leveraging the underlying hardware capabilities."}, {"self_ref": "#/texts/50", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 9, "bbox": {"l": 64.26493072509766, "t": 490.24163818359375, "r": 189.6370086669922, "b": 481.2569885253906, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 29]}], "orig": "Figure 5 Seamless integration", "text": "Figure 5 Seamless integration"}, {"self_ref": "#/texts/51", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 9, "bbox": {"l": 64.28071594238281, "t": 453.8793029785156, "r": 341.6769714355469, "b": 438.1763000488281, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 35]}], "orig": "What is Cloud Pak for Data on IBM Z", "text": "What is Cloud Pak for Data on IBM Z", "level": 1}, {"self_ref": "#/texts/52", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 9, "bbox": {"l": 135.9339141845703, "t": 421.42291259765625, "r": 547.132080078125, "b": 375.2855224609375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 353]}], "orig": "IBM Cloud Pak for Data allows enterprises to simplify, unify, and automate the delivery of data and AI. It categorizes the activities within the journey to AI as four rungs of the AI Ladder: Collect, Organize, Analyze, and Infuse. For more information about each of the AI Ladder rungs, see Become Data Driven with IBM Z Infused Data Fabric , REDP-5680.", "text": "IBM Cloud Pak for Data allows enterprises to simplify, unify, and automate the delivery of data and AI. It categorizes the activities within the journey to AI as four rungs of the AI Ladder: Collect, Organize, Analyze, and Infuse. For more information about each of the AI Ladder rungs, see Become Data Driven with IBM Z Infused Data Fabric , REDP-5680."}, {"self_ref": "#/texts/53", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 9, "bbox": {"l": 135.8167266845703, "t": 363.46099853515625, "r": 545.086181640625, "b": 245.02374267578125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 857]}], "orig": "CP4D on IBM Z provides enterprises with a resilient and secure private cloud platform. You can use it to create ML and AI models that may be included into modern intelligent applications. You also can use it to use and construct applications for mission-critical data. With CP4D on IBM Z, enterprises can lower data movement latency, cost inefficiencies, and potential security exposures. Enterprises can safely store and access their most important company data, and leverage their current infrastructure by using cutting-edge hybrid cloud applications. Enterprises can combine their current database applications without any rewrites, which results in reduced cost and complexity. Lastly, by using CP4D on IBM Z, enterprises can update their database infrastructure to benefit from easier management, a quicker time to value, and lower operating expenses.", "text": "CP4D on IBM Z provides enterprises with a resilient and secure private cloud platform. You can use it to create ML and AI models that may be included into modern intelligent applications. You also can use it to use and construct applications for mission-critical data. With CP4D on IBM Z, enterprises can lower data movement latency, cost inefficiencies, and potential security exposures. Enterprises can safely store and access their most important company data, and leverage their current infrastructure by using cutting-edge hybrid cloud applications. Enterprises can combine their current database applications without any rewrites, which results in reduced cost and complexity. Lastly, by using CP4D on IBM Z, enterprises can update their database infrastructure to benefit from easier management, a quicker time to value, and lower operating expenses."}, {"self_ref": "#/texts/54", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 9, "bbox": {"l": 540.8759155273438, "t": 37.7607421875, "r": 547.2176513671875, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 1]}], "orig": "7", "text": "7"}, {"self_ref": "#/texts/55", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 10, "bbox": {"l": 64.2588882446289, "t": 37.802001953125, "r": 72.8219985961914, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 1]}], "orig": "8", "text": "8"}, {"self_ref": "#/texts/56", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 10, "bbox": {"l": 87.62134552001953, "t": 37.26226806640625, "r": 261.53851318359375, "b": 28.1259765625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 38]}], "orig": "IBM Cloud Pak for Data on IBM zSystems", "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"self_ref": "#/texts/57", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 10, "bbox": {"l": 136.00271606445312, "t": 721.300537109375, "r": 547.2805786132812, "b": 627.116455078125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 655]}], "orig": "Figure 6 shows a solution overview of CP4D. The infrastructure alternatives are shown at the bottom, and they include IBM Z and LinuxONE. They all leverage Red Hat OpenShift. Common Foundational Services come next, which offer clarity throughout the data and AI lifecycle, that is, from user access management to monitoring and service provisioning. A high-level view of the services is shown in the middle section. The services have several different capabilities that span the AI hierarchy. The platform can be expanded, and it offers a seamless user experience for all distinct personas across the AI lifecycle, from data gathering through AI infusion.", "text": "Figure 6 shows a solution overview of CP4D. The infrastructure alternatives are shown at the bottom, and they include IBM Z and LinuxONE. They all leverage Red Hat OpenShift. Common Foundational Services come next, which offer clarity throughout the data and AI lifecycle, that is, from user access management to monitoring and service provisioning. A high-level view of the services is shown in the middle section. The services have several different capabilities that span the AI hierarchy. The platform can be expanded, and it offers a seamless user experience for all distinct personas across the AI lifecycle, from data gathering through AI infusion."}, {"self_ref": "#/texts/58", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 10, "bbox": {"l": 64.43482208251953, "t": 308.513671875, "r": 264.0491943359375, "b": 299.04669189453125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 48]}], "orig": "Figure 6 Solution overview of Cloud Pak for Data", "text": "Figure 6 Solution overview of Cloud Pak for Data"}, {"self_ref": "#/texts/59", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 10, "bbox": {"l": 135.67288208007812, "t": 286.730712890625, "r": 518.3954467773438, "b": 276.31103515625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 87]}], "orig": "We highlight the four main pillars that make IBM Z the correct infrastructure for CP4D:", "text": "We highlight the four main pillars that make IBM Z the correct infrastructure for CP4D:"}, {"self_ref": "#/texts/60", "parent": {"cref": "#/groups/1"}, "children": [], "label": "list_item", "prov": [{"page_no": 10, "bbox": {"l": 135.7481231689453, "t": 269.4034423828125, "r": 255.66061401367188, "b": 259.4186096191406, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 37]}], "orig": "GLYPH Performance and Scale", "text": "GLYPH Performance and Scale", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/61", "parent": {"cref": "#/groups/1"}, "children": [], "label": "list_item", "prov": [{"page_no": 10, "bbox": {"l": 135.7166748046875, "t": 252.60040283203125, "r": 257.89263916015625, "b": 242.43878173828125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 37]}], "orig": "GLYPH Embedded Accelerators", "text": "GLYPH Embedded Accelerators", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/62", "parent": {"cref": "#/groups/1"}, "children": [], "label": "list_item", "prov": [{"page_no": 10, "bbox": {"l": 135.57183837890625, "t": 235.25732421875, "r": 263.64544677734375, "b": 224.7489013671875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 44]}], "orig": "GLYPH Reliability and Availability", "text": "GLYPH Reliability and Availability", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/63", "parent": {"cref": "#/groups/1"}, "children": [], "label": "list_item", "prov": [{"page_no": 10, "bbox": {"l": 135.74082946777344, "t": 218.43896484375, "r": 269.5468444824219, "b": 208.41940307617188, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 40]}], "orig": "GLYPH Security and Governance.", "text": "GLYPH Security and Governance.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/64", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 10, "bbox": {"l": 136.00941467285156, "t": 196.88873291015625, "r": 547.2814331054688, "b": 102.2265625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 650]}], "orig": "From a performance perspective, CP4D on IBM Z provides your data and AI with high transaction processing and a powerful infrastructure. From the embedded accelerators perspective, CP4D on IBM Z can investigate each transaction thanks to a cutting-edge DL inference technology even in the most demanding, sensitive, and latency-prone real-time workloads. From a reliability perspective, CP4D on IBM Z provides high availability and resiliency. Lastly from the security perspective, CP4D on IBM Z is suitable for protecting sensitive data and AI models for enterprises in highly regulated industries or those industries that are worried about security.", "text": "From a performance perspective, CP4D on IBM Z provides your data and AI with high transaction processing and a powerful infrastructure. From the embedded accelerators perspective, CP4D on IBM Z can investigate each transaction thanks to a cutting-edge DL inference technology even in the most demanding, sensitive, and latency-prone real-time workloads. From a reliability perspective, CP4D on IBM Z provides high availability and resiliency. Lastly from the security perspective, CP4D on IBM Z is suitable for protecting sensitive data and AI models for enterprises in highly regulated industries or those industries that are worried about security."}, {"self_ref": "#/texts/65", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 11, "bbox": {"l": 64.78146362304688, "t": 721.9649047851562, "r": 519.7557983398438, "b": 705.7388916015625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 57]}], "orig": "Cloud Pak for Data capabilities on IBM Z and IBM LinuxONE", "text": "Cloud Pak for Data capabilities on IBM Z and IBM LinuxONE", "level": 1}, {"self_ref": "#/texts/66", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 11, "bbox": {"l": 135.4989776611328, "t": 689.4481201171875, "r": 544.5404052734375, "b": 643.1683959960938, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 291]}], "orig": "With CP4D on IBM Z and IBM LinuxONE, users can develop, train, and deploy AI and ML models. Users can accomplish this task by using the CP4D IBM Watsonfi Studio and IBM Watson Machine Learning (WLM) services. By using these two fundamental services, users can accomplish the following tasks:", "text": "With CP4D on IBM Z and IBM LinuxONE, users can develop, train, and deploy AI and ML models. Users can accomplish this task by using the CP4D IBM Watsonfi Studio and IBM Watson Machine Learning (WLM) services. By using these two fundamental services, users can accomplish the following tasks:"}, {"self_ref": "#/texts/67", "parent": {"cref": "#/groups/2"}, "children": [], "label": "list_item", "prov": [{"page_no": 11, "bbox": {"l": 135.4654083251953, "t": 636.006103515625, "r": 341.2695007324219, "b": 626.25927734375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 58]}], "orig": "GLYPH Provision various containerized databases.", "text": "GLYPH Provision various containerized databases.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/68", "parent": {"cref": "#/groups/2"}, "children": [], "label": "list_item", "prov": [{"page_no": 11, "bbox": {"l": 135.58457946777344, "t": 619.3070068359375, "r": 423.5125427246094, "b": 609.0025024414062, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 77]}], "orig": "GLYPH Explore, clean, shape, and alter data by using Data Refinery.", "text": "GLYPH Explore, clean, shape, and alter data by using Data Refinery.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/69", "parent": {"cref": "#/groups/2"}, "children": [], "label": "list_item", "prov": [{"page_no": 11, "bbox": {"l": 135.65841674804688, "t": 602.6298828125, "r": 454.5639343261719, "b": 592.2996826171875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 87]}], "orig": "GLYPH Use project-specific data that is uploaded, or connect to distant data.", "text": "GLYPH Use project-specific data that is uploaded, or connect to distant data.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/70", "parent": {"cref": "#/groups/2"}, "children": [], "label": "list_item", "prov": [{"page_no": 11, "bbox": {"l": 135.5748748779297, "t": 585.3611450195312, "r": 331.7221984863281, "b": 575.02197265625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 56]}], "orig": "GLYPH Create Spark run times and applications.", "text": "GLYPH Create Spark run times and applications.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/71", "parent": {"cref": "#/groups/2"}, "children": [], "label": "list_item", "prov": [{"page_no": 11, "bbox": {"l": 135.54833984375, "t": 568.562255859375, "r": 544.107177734375, "b": 558.2803344726562, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 104]}], "orig": "GLYPH Create, build, evaluate, and deploy analytics and ML models with trust and transparency.", "text": "GLYPH Create, build, evaluate, and deploy analytics and ML models with trust and transparency.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/72", "parent": {"cref": "#/groups/2"}, "children": [], "label": "list_item", "prov": [{"page_no": 11, "bbox": {"l": 135.70672607421875, "t": 551.1715087890625, "r": 499.1278381347656, "b": 540.80126953125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 92]}], "orig": "GLYPH Leverage the AI Integrated Accelerator for TensorFlow 2.7.2 and Snap ML 1.9.", "text": "GLYPH Leverage the AI Integrated Accelerator for TensorFlow 2.7.2 and Snap ML 1.9.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/73", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 11, "bbox": {"l": 136.2892303466797, "t": 529.4622802734375, "r": 538.98681640625, "b": 507.2811279296875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 116]}], "orig": "For more information about the specifics of these capabilities, see Capabilities on Linux on IBM Z and IBM LinuxONE.", "text": "For more information about the specifics of these capabilities, see Capabilities on Linux on IBM Z and IBM LinuxONE."}, {"self_ref": "#/texts/74", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 11, "bbox": {"l": 64.76227569580078, "t": 479.44775390625, "r": 250.52972412109375, "b": 463.779541015625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 21]}], "orig": "Open-source ecosystem", "text": "Open-source ecosystem", "level": 1}, {"self_ref": "#/texts/75", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 11, "bbox": {"l": 135.97999572753906, "t": 447.332275390625, "r": 543.4259643554688, "b": 376.9634094238281, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 484]}], "orig": "These days, innovation and product development are not limited to closed doors within an organization. In any industry sector, the solutions include a mix of proprietary code addressing the core business solution that is supported or integrated into other software components from open source. In some cases, enterprises business solutions also are built from open-source community offerings. Thus, open-source software becomes an important ingredient in modern-day solution building.", "text": "These days, innovation and product development are not limited to closed doors within an organization. In any industry sector, the solutions include a mix of proprietary code addressing the core business solution that is supported or integrated into other software components from open source. In some cases, enterprises business solutions also are built from open-source community offerings. Thus, open-source software becomes an important ingredient in modern-day solution building."}, {"self_ref": "#/texts/76", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 11, "bbox": {"l": 135.85617065429688, "t": 365.35247802734375, "r": 547.2396850585938, "b": 271.137939453125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 684]}], "orig": "IBM actively participates in various open-source communities as part of steering boards defining the roadmap of the community, and also in contributing code to make the community a better place for everyone to participate. Red Hat also actively participates in various open-source communities and makes extensive contributions. In open-source communities, although most open-source development happens on x86 / amd64 or the Intel architecture, the same open-source software is used by other architectures, such as IBM Power (ppc64le), IBM Z and IBM LInuxONE (s390x), ARM, and Sparc. So, the availability of an open-source ecosystem on any architecture is key and critical to business.", "text": "IBM actively participates in various open-source communities as part of steering boards defining the roadmap of the community, and also in contributing code to make the community a better place for everyone to participate. Red Hat also actively participates in various open-source communities and makes extensive contributions. In open-source communities, although most open-source development happens on x86 / amd64 or the Intel architecture, the same open-source software is used by other architectures, such as IBM Power (ppc64le), IBM Z and IBM LInuxONE (s390x), ARM, and Sparc. So, the availability of an open-source ecosystem on any architecture is key and critical to business."}, {"self_ref": "#/texts/77", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 11, "bbox": {"l": 135.98208618164062, "t": 259.3095703125, "r": 537.3534545898438, "b": 213.03485107421875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 331]}], "orig": "On IBM Z and IBM LinuxONE (s390x) architecture, there is a huge open-source support ecosystem that ranges from operating systems such as Linux; application run times; cloud and container services; DevOps and automation; big data; observability; analytics; databases; and storage. The ecosystem on IBM Z and IBM LinuxONE is growing.", "text": "On IBM Z and IBM LinuxONE (s390x) architecture, there is a huge open-source support ecosystem that ranges from operating systems such as Linux; application run times; cloud and container services; DevOps and automation; big data; observability; analytics; databases; and storage. The ecosystem on IBM Z and IBM LinuxONE is growing."}, {"self_ref": "#/texts/78", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 11, "bbox": {"l": 136.20474243164062, "t": 201.47296142578125, "r": 540.7626342773438, "b": 167.01544189453125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 225]}], "orig": "IBM Z and IBM LinuxONE include much open-source software in their ecosystem. You can see the growing list of open-source software for IBM Z and LinuxONE at The Growing Ecosystem of Open-Source Software for IBM Z and LinuxONE.", "text": "IBM Z and IBM LinuxONE include much open-source software in their ecosystem. You can see the growing list of open-source software for IBM Z and LinuxONE at The Growing Ecosystem of Open-Source Software for IBM Z and LinuxONE."}, {"self_ref": "#/texts/79", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 11, "bbox": {"l": 136.00357055664062, "t": 155.3272705078125, "r": 544.6069946289062, "b": 108.96240234375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 326]}], "orig": "IBM Z and IBM LinuxONE are available to various communities to include support for s390x builds as part of their community's continuous integration and continuous delivery (CI/CD). Also, for open-source community developers, infrastructure resources are available on a no-charge basis through the IBM LinuxONE community cloud.", "text": "IBM Z and IBM LinuxONE are available to various communities to include support for s390x builds as part of their community's continuous integration and continuous delivery (CI/CD). Also, for open-source community developers, infrastructure resources are available on a no-charge basis through the IBM LinuxONE community cloud."}, {"self_ref": "#/texts/80", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 11, "bbox": {"l": 540.9940795898438, "t": 37.6314697265625, "r": 547.2176513671875, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 1]}], "orig": "9", "text": "9"}, {"self_ref": "#/texts/81", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 12, "bbox": {"l": 64.45117950439453, "t": 37.56591796875, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "10", "text": "10"}, {"self_ref": "#/texts/82", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 12, "bbox": {"l": 93.23697662353516, "t": 37.23699951171875, "r": 267.07440185546875, "b": 27.87896728515625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 38]}], "orig": "IBM Cloud Pak for Data on IBM zSystems", "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"self_ref": "#/texts/83", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 12, "bbox": {"l": 136.01052856445312, "t": 721.534912109375, "r": 547.312255859375, "b": 651.1951904296875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 505]}], "orig": "CP4D includes a mix of open-source and proprietary data and AI runtime databases; open-source run times like Python; open-source data platforms like Anaconda; ML and DL frameworks like Pytorch and Tensorflow; and thousands of reusable Python packages. All of them are available and supported on s390x architecture to provide seamless parity with x86 architecture and a seamless experience for enterprise data scientists, architects, and data and AI solution developers on IBM Z and IBM LinuxONE platforms.", "text": "CP4D includes a mix of open-source and proprietary data and AI runtime databases; open-source run times like Python; open-source data platforms like Anaconda; ML and DL frameworks like Pytorch and Tensorflow; and thousands of reusable Python packages. All of them are available and supported on s390x architecture to provide seamless parity with x86 architecture and a seamless experience for enterprise data scientists, architects, and data and AI solution developers on IBM Z and IBM LinuxONE platforms."}, {"self_ref": "#/texts/84", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 12, "bbox": {"l": 135.78475952148438, "t": 639.2750244140625, "r": 547.3501586914062, "b": 581.2603759765625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 427]}], "orig": "Anaconda is one of the open-source data platforms that provide Python and R based data science ML frameworks; analytics and data visualization tools; and open-source data science tools and libraries like Conda, XGBoost, and SciKit-Learn. Anaconda runs natively on Linux on IBM Z and IBM LinuxONE, and on IBM z/OS Container Extensions (zcX) on z/OS. For more information, see Announcing Anaconda for Linux on IBM Z and LinuxONE.", "text": "Anaconda is one of the open-source data platforms that provide Python and R based data science ML frameworks; analytics and data visualization tools; and open-source data science tools and libraries like Conda, XGBoost, and SciKit-Learn. Anaconda runs natively on Linux on IBM Z and IBM LinuxONE, and on IBM z/OS Container Extensions (zcX) on z/OS. For more information, see Announcing Anaconda for Linux on IBM Z and LinuxONE."}, {"self_ref": "#/texts/85", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 12, "bbox": {"l": 135.8437957763672, "t": 569.2590942382812, "r": 546.230712890625, "b": 499.2002258300781, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 501]}], "orig": "In addition to strong, open-source ecosystem support for application development on Linux and enterprise operating systems, a new generation of IBM Z and IBM LinuxONE servers (IBM z16\u2122) also have strong platform support, and AI acceleration capabilities that can be leveraged by open-source software to perform better on the server infrastructure. For example, the recently released CP4D 4.6 has Tensorflow and IBM SnapML frameworks that leverage the AI accelerators when running on an IBM z16 server.", "text": "In addition to strong, open-source ecosystem support for application development on Linux and enterprise operating systems, a new generation of IBM Z and IBM LinuxONE servers (IBM z16\u2122) also have strong platform support, and AI acceleration capabilities that can be leveraged by open-source software to perform better on the server infrastructure. For example, the recently released CP4D 4.6 has Tensorflow and IBM SnapML frameworks that leverage the AI accelerators when running on an IBM z16 server."}, {"self_ref": "#/texts/86", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 12, "bbox": {"l": 136.206298828125, "t": 487.1847839355469, "r": 521.3436889648438, "b": 464.8299255371094, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 143]}], "orig": "So, to summarize, there is a huge, growing data and AI open source ecosystem that is supported and optimized on IBM Z and IBM LinuxONE servers.", "text": "So, to summarize, there is a huge, growing data and AI open source ecosystem that is supported and optimized on IBM Z and IBM LinuxONE servers."}, {"self_ref": "#/texts/87", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 12, "bbox": {"l": 64.09524536132812, "t": 437.7701110839844, "r": 191.27430725097656, "b": 421.95269775390625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 15]}], "orig": "Why AI on IBM Z", "text": "Why AI on IBM Z", "level": 1}, {"self_ref": "#/texts/88", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 12, "bbox": {"l": 135.68882751464844, "t": 405.32257080078125, "r": 547.2586059570312, "b": 334.8733825683594, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 496]}], "orig": "Data and AI playing a major role in the modernization story to enable the digital transformation journey of every organization. Many organizations recognize the business value of infusing AI into their infrastructure. CP4D provides the cloud-native solution to put your data to work. With CP4D, all your data users can collaborate from a single, unified interface that supports many services that work together, including collecting data, organizing the data, analyzing the data, and infusing AI.", "text": "Data and AI playing a major role in the modernization story to enable the digital transformation journey of every organization. Many organizations recognize the business value of infusing AI into their infrastructure. CP4D provides the cloud-native solution to put your data to work. With CP4D, all your data users can collaborate from a single, unified interface that supports many services that work together, including collecting data, organizing the data, analyzing the data, and infusing AI."}, {"self_ref": "#/texts/89", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 12, "bbox": {"l": 135.5255584716797, "t": 323.26287841796875, "r": 547.2825317382812, "b": 240.78839111328125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 546]}], "orig": "Traditional ML models' power most of today's ML applications in business and among AI practitioners. CP4D supports traditional ML frameworks for training and inferencing, such as Scikit-learn, Snap ML, and XGBoost. Snap ML is a library that provides high-speed training and inferencing of ML models that leverage the AI accelerator while running on an IBM z16 (Linux on IBM Z). CP4D supports DL frameworks such as TensorFlow and PyTorch. TensorFlow is a DL framework that leverages the AI accelerator while running on an IBM z16 (Linux on IBM Z).", "text": "Traditional ML models' power most of today's ML applications in business and among AI practitioners. CP4D supports traditional ML frameworks for training and inferencing, such as Scikit-learn, Snap ML, and XGBoost. Snap ML is a library that provides high-speed training and inferencing of ML models that leverage the AI accelerator while running on an IBM z16 (Linux on IBM Z). CP4D supports DL frameworks such as TensorFlow and PyTorch. TensorFlow is a DL framework that leverages the AI accelerator while running on an IBM z16 (Linux on IBM Z)."}, {"self_ref": "#/texts/90", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 12, "bbox": {"l": 136.04042053222656, "t": 229.3817138671875, "r": 547.3233032226562, "b": 183.20733642578125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 288]}], "orig": "Figure 7 on page 11 provides an overview of the components that are supported on CP4D on IBM Z. You can leverage Watson Studio for model building, training, and validation, and WML for deployment of the model. Eventually, applications can use the AI inference endpoint to score the model.", "text": "Figure 7 on page 11 provides an overview of the components that are supported on CP4D on IBM Z. You can leverage Watson Studio for model building, training, and validation, and WML for deployment of the model. Eventually, applications can use the AI inference endpoint to score the model."}, {"self_ref": "#/texts/91", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 13, "bbox": {"l": 64.15190887451172, "t": 438.59246826171875, "r": 506.3805236816406, "b": 429.0500793457031, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 104]}], "orig": "Figure 7 Developing, training, and deploying an AI model on Cloud Pak for Data on IBM Z and IBM LinuxONE", "text": "Figure 7 Developing, training, and deploying an AI model on Cloud Pak for Data on IBM Z and IBM LinuxONE"}, {"self_ref": "#/texts/92", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 13, "bbox": {"l": 136.55064392089844, "t": 416.5304260253906, "r": 492.9408264160156, "b": 406.53900146484375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 75]}], "orig": "In summary, here are some of the reasons why you should choose AI on IBM Z:", "text": "In summary, here are some of the reasons why you should choose AI on IBM Z:"}, {"self_ref": "#/texts/93", "parent": {"cref": "#/groups/3"}, "children": [], "label": "list_item", "prov": [{"page_no": 13, "bbox": {"l": 135.7388458251953, "t": 399.8339538574219, "r": 413.4001770019531, "b": 389.7225341796875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 75]}], "orig": "GLYPH World-class AI inference platform for enterprise workloads:", "text": "GLYPH World-class AI inference platform for enterprise workloads:", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/94", "parent": {"cref": "#/groups/3"}, "children": [], "label": "list_item", "prov": [{"page_no": 13, "bbox": {"l": 151.22914123535156, "t": 382.5239562988281, "r": 526.1881103515625, "b": 360.75909423828125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 89]}], "orig": "-Embedded accelerators: A centralized on-chip AI accelerator that is shared by all cores.", "text": "-Embedded accelerators: A centralized on-chip AI accelerator that is shared by all cores.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/95", "parent": {"cref": "#/groups/3"}, "children": [], "label": "list_item", "prov": [{"page_no": 13, "bbox": {"l": 151.42306518554688, "t": 353.90643310546875, "r": 547.2465209960938, "b": 331.77947998046875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 113]}], "orig": "-Industry standard AI ecosystem: Many industry open-source data science frameworks are available on the platform.", "text": "-Industry standard AI ecosystem: Many industry open-source data science frameworks are available on the platform.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/96", "parent": {"cref": "#/groups/3"}, "children": [], "label": "list_item", "prov": [{"page_no": 13, "bbox": {"l": 151.33360290527344, "t": 324.48516845703125, "r": 546.7576904296875, "b": 302.7483825683594, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 108]}], "orig": "-Seamlessly integrate AI into existing enterprise workload stacks: Train anywhere, and then deploy on IBM Z.", "text": "-Seamlessly integrate AI into existing enterprise workload stacks: Train anywhere, and then deploy on IBM Z.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/97", "parent": {"cref": "#/groups/3"}, "children": [], "label": "list_item", "prov": [{"page_no": 13, "bbox": {"l": 135.7086639404297, "t": 295.7892761230469, "r": 490.0331726074219, "b": 285.60894775390625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 88]}], "orig": "GLYPH Security: Encrypted memory, and improved trusted execution environments.", "text": "GLYPH Security: Encrypted memory, and improved trusted execution environments.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/98", "parent": {"cref": "#/groups/3"}, "children": [], "label": "list_item", "prov": [{"page_no": 13, "bbox": {"l": 135.6390838623047, "t": 278.46600341796875, "r": 547.2705078125, "b": 256.23675537109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 138]}], "orig": "GLYPH Sustainability: Reduce your energy consumption with real-time monitoring tools about the energy consumption of the system.", "text": "GLYPH Sustainability: Reduce your energy consumption with real-time monitoring tools about the energy consumption of the system.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/99", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 13, "bbox": {"l": 64.31088256835938, "t": 229.1109619140625, "r": 161.7474365234375, "b": 213.536376953125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 12]}], "orig": "AI use cases", "text": "AI use cases", "level": 1}, {"self_ref": "#/texts/100", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 13, "bbox": {"l": 135.98568725585938, "t": 196.73095703125, "r": 533.9012451171875, "b": 162.75877380371094, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 262]}], "orig": "With billions of transactions per day in many of today's industries, it is key to get real-time insights about what is happening in your data. AI on the IBM Z stack understands these situations, and it delivers in-transaction inference in real time and at scale.", "text": "With billions of transactions per day in many of today's industries, it is key to get real-time insights about what is happening in your data. AI on the IBM Z stack understands these situations, and it delivers in-transaction inference in real time and at scale."}, {"self_ref": "#/texts/101", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 13, "bbox": {"l": 135.95875549316406, "t": 150.69287109375, "r": 547.2466430664062, "b": 104.7108154296875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 295]}], "orig": "Core banking solutions running on IBM Z that are involved in processing inbound transactions need real-time fraud detection to prevent fraud. Other types of possible use cases might be credit risk analysis, anti-money laundering, loan approval, fraud detection in payments, and instant payments.", "text": "Core banking solutions running on IBM Z that are involved in processing inbound transactions need real-time fraud detection to prevent fraud. Other types of possible use cases might be credit risk analysis, anti-money laundering, loan approval, fraud detection in payments, and instant payments."}, {"self_ref": "#/texts/102", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 13, "bbox": {"l": 136.34823608398438, "t": 92.72308349609375, "r": 547.311279296875, "b": 70.34014892578125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 146]}], "orig": "For insurance companies, a pressing use case would be claims processing. For markets and trading, clearing and settlement use cases are paramount.", "text": "For insurance companies, a pressing use case would be claims processing. For markets and trading, clearing and settlement use cases are paramount."}, {"self_ref": "#/texts/103", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 13, "bbox": {"l": 535.8191528320312, "t": 37.69769287109375, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "11", "text": "11"}, {"self_ref": "#/texts/104", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 14, "bbox": {"l": 64.53218078613281, "t": 37.490966796875, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "12", "text": "12"}, {"self_ref": "#/texts/105", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 14, "bbox": {"l": 93.2241439819336, "t": 37.23846435546875, "r": 267.07440185546875, "b": 27.8603515625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 38]}], "orig": "IBM Cloud Pak for Data on IBM zSystems", "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"self_ref": "#/texts/106", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 14, "bbox": {"l": 136.15476989746094, "t": 721.3535766601562, "r": 525.1851196289062, "b": 687.272216796875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 184]}], "orig": "For the health care industry, medical image processing (such as MRIs and x-rays), skin cancer detection, and patient monitoring activities such as infant motion analysis, is important.", "text": "For the health care industry, medical image processing (such as MRIs and x-rays), skin cancer detection, and patient monitoring activities such as infant motion analysis, is important."}, {"self_ref": "#/texts/107", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 14, "bbox": {"l": 135.8750762939453, "t": 675.216796875, "r": 547.3113403320312, "b": 641.2594604492188, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 192]}], "orig": "For the airline industry, processes such as air traffic management, flight management systems, and flight maintenance predictions are use cases that are ideal candidates for using AI on IBM Z.", "text": "For the airline industry, processes such as air traffic management, flight management systems, and flight maintenance predictions are use cases that are ideal candidates for using AI on IBM Z."}, {"self_ref": "#/texts/108", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 14, "bbox": {"l": 136.158935546875, "t": 629.2716674804688, "r": 413.4231262207031, "b": 619.072021484375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 63]}], "orig": "In the following sections, we describe the following use cases:", "text": "In the following sections, we describe the following use cases:"}, {"self_ref": "#/texts/109", "parent": {"cref": "#/groups/4"}, "children": [], "label": "list_item", "prov": [{"page_no": 14, "bbox": {"l": 135.51185607910156, "t": 611.6864624023438, "r": 545.1838989257812, "b": 561.1438598632812, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 306]}], "orig": "GLYPH \"Use case 1: Responsible AI augmented with risk and regulatory compliance\" on page 12 AI model lifecycle governance, risk management, and regulatory compliance are key to the success of the enterprises. It is imperative to adopt a typical AI model lifecycle to protect new end-to-end risks.", "text": "GLYPH \"Use case 1: Responsible AI augmented with risk and regulatory compliance\" on page 12 AI model lifecycle governance, risk management, and regulatory compliance are key to the success of the enterprises. It is imperative to adopt a typical AI model lifecycle to protect new end-to-end risks.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/110", "parent": {"cref": "#/groups/4"}, "children": [], "label": "list_item", "prov": [{"page_no": 14, "bbox": {"l": 135.6671600341797, "t": 554.774658203125, "r": 402.90234375, "b": 544.2023315429688, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 71]}], "orig": "GLYPH \"Use case 2: Credit default risk assessment\" on page 22", "text": "GLYPH \"Use case 2: Credit default risk assessment\" on page 22", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/111", "parent": {"cref": "#/groups/4"}, "children": [], "label": "list_item", "prov": [{"page_no": 14, "bbox": {"l": 150.19342041015625, "t": 537.3115234375, "r": 547.2406005859375, "b": 490.9925842285156, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 295]}], "orig": "Core banking solutions running on IBM Z that are involved in processing inbound transactions need real-time fraud detection to prevent fraud. Other types of possible use cases might be credit risk analysis, anti-money laundering, loan approval, fraud detection in payments, and instant payments.", "text": "Core banking solutions running on IBM Z that are involved in processing inbound transactions need real-time fraud detection to prevent fraud. Other types of possible use cases might be credit risk analysis, anti-money laundering, loan approval, fraud detection in payments, and instant payments.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/112", "parent": {"cref": "#/groups/4"}, "children": [], "label": "list_item", "prov": [{"page_no": 14, "bbox": {"l": 135.68087768554688, "t": 484.5167236328125, "r": 371.79620361328125, "b": 474.0491638183594, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 64]}], "orig": "GLYPH \"Use case 3: Clearing and settlement\" on page 25", "text": "GLYPH \"Use case 3: Clearing and settlement\" on page 25", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/113", "parent": {"cref": "#/groups/4"}, "children": [], "label": "list_item", "prov": [{"page_no": 14, "bbox": {"l": 150.48846435546875, "t": 467.4772033691406, "r": 541.1401977539062, "b": 445.0339660644531, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 151]}], "orig": "The use of AI can help to predict which trades or transactions have high risk exposures, and propose solutions for a more efficient settlement process.", "text": "The use of AI can help to predict which trades or transactions have high risk exposures, and propose solutions for a more efficient settlement process.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/114", "parent": {"cref": "#/groups/4"}, "children": [], "label": "list_item", "prov": [{"page_no": 14, "bbox": {"l": 135.71913146972656, "t": 438.1060485839844, "r": 455.3772277832031, "b": 427.7883605957031, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 84]}], "orig": "GLYPH \"Use case 4: Remaining Useful Life of an aircraft engine\" on page 27", "text": "GLYPH \"Use case 4: Remaining Useful Life of an aircraft engine\" on page 27", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/115", "parent": {"cref": "#/groups/4"}, "children": [], "label": "list_item", "prov": [{"page_no": 14, "bbox": {"l": 150.2084197998047, "t": 421.3099365234375, "r": 534.64013671875, "b": 399.0348205566406, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 169]}], "orig": "We describe how AI can help to avoid unplanned aircraft downtime by determining the remaining time or cycles that an aircraft engine is likely to operate before failure.", "text": "We describe how AI can help to avoid unplanned aircraft downtime by determining the remaining time or cycles that an aircraft engine is likely to operate before failure.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/116", "parent": {"cref": "#/groups/4"}, "children": [], "label": "list_item", "prov": [{"page_no": 14, "bbox": {"l": 135.66246032714844, "t": 392.64227294921875, "r": 539.6531372070312, "b": 370.3010559082031, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 112]}], "orig": "GLYPH \"Use case 5: AI-powered video analytics on an infant's motions for health prediction\" on page 30", "text": "GLYPH \"Use case 5: AI-powered video analytics on an infant's motions for health prediction\" on page 30", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/117", "parent": {"cref": "#/groups/4"}, "children": [], "label": "list_item", "prov": [{"page_no": 14, "bbox": {"l": 150.8683624267578, "t": 363.34478759765625, "r": 547.24267578125, "b": 340.944091796875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 117]}], "orig": "In this section, we describe how AI can predict an infant's health conditions by monitoring real-time body movements.", "text": "In this section, we describe how AI can predict an infant's health conditions by monitoring real-time body movements.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/118", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 14, "bbox": {"l": 64.4876708984375, "t": 313.88934326171875, "r": 547.2564697265625, "b": 278.525634765625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 72]}], "orig": "Use case 1: Responsible AI augmented with risk and regulatory compliance", "text": "Use case 1: Responsible AI augmented with risk and regulatory compliance", "level": 1}, {"self_ref": "#/texts/119", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 14, "bbox": {"l": 135.6639404296875, "t": 262.65277099609375, "r": 547.1787719726562, "b": 216.21588134765625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 326]}], "orig": "Advancement in AI is changing the world, and organizations must adopt AI to embrace new challenges daily. Many enterprises see tremendous value in adopting AI and ML technologies while establishing organization trust in the models, underlying data, and the process to be followed. An AI model lifecycle can be a daunting task.", "text": "Advancement in AI is changing the world, and organizations must adopt AI to embrace new challenges daily. Many enterprises see tremendous value in adopting AI and ML technologies while establishing organization trust in the models, underlying data, and the process to be followed. An AI model lifecycle can be a daunting task."}, {"self_ref": "#/texts/120", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 14, "bbox": {"l": 136.313232421875, "t": 203.98114013671875, "r": 547.2424926757812, "b": 181.63140869140625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 152]}], "orig": "How mature is your AI governance? In this section, we provide a use case demonstrating the trustworthiness of AI and its importance in daily monitoring.", "text": "How mature is your AI governance? In this section, we provide a use case demonstrating the trustworthiness of AI and its importance in daily monitoring."}, {"self_ref": "#/texts/121", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 14, "bbox": {"l": 64.53734588623047, "t": 162.76495361328125, "r": 186.71859741210938, "b": 149.578857421875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 19]}], "orig": "Industry challenges", "text": "Industry challenges", "level": 1}, {"self_ref": "#/texts/122", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 14, "bbox": {"l": 136.22996520996094, "t": 136.4630126953125, "r": 508.98724365234375, "b": 126.27838134765625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 83]}], "orig": "Here are the three main reasons why organizations struggle with the adoption of AI:", "text": "Here are the three main reasons why organizations struggle with the adoption of AI:"}, {"self_ref": "#/texts/123", "parent": {"cref": "#/groups/5"}, "children": [], "label": "list_item", "prov": [{"page_no": 14, "bbox": {"l": 135.8061065673828, "t": 119.39752197265625, "r": 293.9800720214844, "b": 109.0609130859375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 48]}], "orig": "GLYPH Scaling with growing regulations", "text": "GLYPH Scaling with growing regulations", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/124", "parent": {"cref": "#/groups/5"}, "children": [], "label": "list_item", "prov": [{"page_no": 14, "bbox": {"l": 135.63792419433594, "t": 102.025390625, "r": 435.7274475097656, "b": 91.513916015625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 80]}], "orig": "GLYPH Lack of confidence in operationalized AI (making responsible AI)", "text": "GLYPH Lack of confidence in operationalized AI (making responsible AI)", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/125", "parent": {"cref": "#/groups/5"}, "children": [], "label": "list_item", "prov": [{"page_no": 14, "bbox": {"l": 135.60543823242188, "t": 85.32098388671875, "r": 466.06842041015625, "b": 74.8839111328125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 85]}], "orig": "GLYPH Challenges around managing the risk throughout the entire AI workflow", "text": "GLYPH Challenges around managing the risk throughout the entire AI workflow", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/126", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 15, "bbox": {"l": 136.29180908203125, "t": 721.60595703125, "r": 324.71160888671875, "b": 709.186767578125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 32]}], "orig": "Scaling with growing regulations", "text": "Scaling with growing regulations", "level": 1}, {"self_ref": "#/texts/127", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 15, "bbox": {"l": 135.92501831054688, "t": 706.7998046875, "r": 536.3155517578125, "b": 636.2792358398438, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 476]}], "orig": "Laws and regulations in the data and AI space are accelerating, and many countries are proposing strict AI policies. Countries are monitoring adherence of these policies by the enterprises and imposing fines for any violations. Responding to these regulations are challenging global organizations where multiple regulations apply. For enterprises, it is important to adopt AI policies when there is change, and to validate explainable models to protect against discrimination.", "text": "Laws and regulations in the data and AI space are accelerating, and many countries are proposing strict AI policies. Countries are monitoring adherence of these policies by the enterprises and imposing fines for any violations. Responding to these regulations are challenging global organizations where multiple regulations apply. For enterprises, it is important to adopt AI policies when there is change, and to validate explainable models to protect against discrimination."}, {"self_ref": "#/texts/128", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 15, "bbox": {"l": 136.52218627929688, "t": 620.21044921875, "r": 223.41616821289062, "b": 608.3349609375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 14]}], "orig": "Responsible AI", "text": "Responsible AI", "level": 1}, {"self_ref": "#/texts/129", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 15, "bbox": {"l": 135.9759521484375, "t": 605.3233642578125, "r": 547.3283081054688, "b": 558.9086303710938, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 362]}], "orig": "Responsible AI protects against loss of data privacy, and reduced customer loyalty and trust. A data scientist cannot maximize accuracy and model performance above all other concerns. Practicing responsible AI is a best practice, and you must establish protection and validation to ensure that any models that are placed into production are fair and explainable.", "text": "Responsible AI protects against loss of data privacy, and reduced customer loyalty and trust. A data scientist cannot maximize accuracy and model performance above all other concerns. Practicing responsible AI is a best practice, and you must establish protection and validation to ensure that any models that are placed into production are fair and explainable."}, {"self_ref": "#/texts/130", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 15, "bbox": {"l": 136.5354461669922, "t": 543.5475463867188, "r": 364.06561279296875, "b": 531.4407348632812, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 39]}], "orig": "Risks throughout the entire AI workflow", "text": "Risks throughout the entire AI workflow", "level": 1}, {"self_ref": "#/texts/131", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 15, "bbox": {"l": 136.28106689453125, "t": 528.0078735351562, "r": 389.47918701171875, "b": 517.4302978515625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 59]}], "orig": "Organizations need to mitigate risk of the following items:", "text": "Organizations need to mitigate risk of the following items:"}, {"self_ref": "#/texts/132", "parent": {"cref": "#/groups/6"}, "children": [], "label": "list_item", "prov": [{"page_no": 15, "bbox": {"l": 135.77525329589844, "t": 511.2773742675781, "r": 382.91455078125, "b": 501.0934753417969, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 69]}], "orig": "GLYPH Deciding not to use certain technologies or practices", "text": "GLYPH Deciding not to use certain technologies or practices", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/133", "parent": {"cref": "#/groups/6"}, "children": [], "label": "list_item", "prov": [{"page_no": 15, "bbox": {"l": 135.74273681640625, "t": 494.5668640136719, "r": 450.990234375, "b": 483.94232177734375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 80]}], "orig": "GLYPH Using personal information when needed and with a user's consent", "text": "GLYPH Using personal information when needed and with a user's consent", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/134", "parent": {"cref": "#/groups/6"}, "children": [], "label": "list_item", "prov": [{"page_no": 15, "bbox": {"l": 135.5438995361328, "t": 477.4102478027344, "r": 366.2126770019531, "b": 467.1396484375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 63]}], "orig": "GLYPH Ensuring automated decisions are free from bias", "text": "GLYPH Ensuring automated decisions are free from bias", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/135", "parent": {"cref": "#/groups/6"}, "children": [], "label": "list_item", "prov": [{"page_no": 15, "bbox": {"l": 135.47459411621094, "t": 460.52044677734375, "r": 462.3146057128906, "b": 450.2794494628906, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 84]}], "orig": "GLYPH Customer confidence by providing explanations for business decisions", "text": "GLYPH Customer confidence by providing explanations for business decisions", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/136", "parent": {"cref": "#/groups/6"}, "children": [], "label": "list_item", "prov": [{"page_no": 15, "bbox": {"l": 135.48123168945312, "t": 443.2645263671875, "r": 386.45635986328125, "b": 433.125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 68]}], "orig": "GLYPH Fraud to the organization and to customer's accounts", "text": "GLYPH Fraud to the organization and to customer's accounts", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/137", "parent": {"cref": "#/groups/6"}, "children": [], "label": "list_item", "prov": [{"page_no": 15, "bbox": {"l": 135.62051391601562, "t": 425.9614562988281, "r": 331.2491149902344, "b": 415.7923278808594, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 56]}], "orig": "GLYPH Delays in putting models into production", "text": "GLYPH Delays in putting models into production", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/138", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 15, "bbox": {"l": 136.05039978027344, "t": 404.44390869140625, "r": 547.186767578125, "b": 370.3006286621094, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 232]}], "orig": "In fact, in a recent survey, these concerns were echoed by real AI adopters when asked what aspects of trust are most important to them. Although explaining how AI decides is the primary concern, all of these concerns are important.", "text": "In fact, in a recent survey, these concerns were echoed by real AI adopters when asked what aspects of trust are most important to them. Although explaining how AI decides is the primary concern, all of these concerns are important."}, {"self_ref": "#/texts/139", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 15, "bbox": {"l": 135.85047912597656, "t": 358.5035705566406, "r": 547.24658203125, "b": 300.28179931640625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 431]}], "orig": "The key point here is that risk exists throughout the entire AI lifecycle starting with the underlying data and the business justification behind the \"why\" of the project and continuing into production. Without a formalized process, there is no way to mitigate these risks to unlock the scale that is required to make automated decisions profitable. With these decisions, the business can operate proactively instead of reactively.", "text": "The key point here is that risk exists throughout the entire AI lifecycle starting with the underlying data and the business justification behind the \"why\" of the project and continuing into production. Without a formalized process, there is no way to mitigate these risks to unlock the scale that is required to make automated decisions profitable. With these decisions, the business can operate proactively instead of reactively."}, {"self_ref": "#/texts/140", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 15, "bbox": {"l": 535.9011840820312, "t": 37.63787841796875, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "13", "text": "13"}, {"self_ref": "#/texts/141", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 16, "bbox": {"l": 64.407470703125, "t": 37.68829345703125, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "14", "text": "14"}, {"self_ref": "#/texts/142", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 16, "bbox": {"l": 93.1883316040039, "t": 37.2742919921875, "r": 267.07440185546875, "b": 27.84478759765625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 38]}], "orig": "IBM Cloud Pak for Data on IBM zSystems", "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"self_ref": "#/texts/143", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 16, "bbox": {"l": 136.13604736328125, "t": 721.3720703125, "r": 547.3073120117188, "b": 674.9320678710938, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 309]}], "orig": "For example, a business can start testing a model before production for fairness metrics. For this task, enterprises need an end-to-end workflow with approvals to mitigate these risks and increase the scale of AI investments, as shown in Figure 8, which presents a typical AI model lifecycle in an enterprise.", "text": "For example, a business can start testing a model before production for fairness metrics. For this task, enterprises need an end-to-end workflow with approvals to mitigate these risks and increase the scale of AI investments, as shown in Figure 8, which presents a typical AI model lifecycle in an enterprise."}, {"self_ref": "#/texts/144", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 16, "bbox": {"l": 64.17765808105469, "t": 459.9346618652344, "r": 206.827880859375, "b": 450.5130310058594, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 35]}], "orig": "Figure 8 Typical AI model lifecycle", "text": "Figure 8 Typical AI model lifecycle"}, {"self_ref": "#/texts/145", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 16, "bbox": {"l": 135.79885864257812, "t": 437.8577880859375, "r": 540.1202392578125, "b": 367.7792053222656, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 464]}], "orig": "Due to regulations, more stakeholders adopt the typical AI model lifecycle to protect their brand from new end-to-end risks. To ensure various aspects of both regulatory compliance and security, the personas that must be involved include the chief financial officer (CFO), chief marketing officer (CMO), chief data officer (CDO), HR, and chief regulatory officer (CRO), along with the data engineers, data scientists, and business analysts, who build AI workflows.", "text": "Due to regulations, more stakeholders adopt the typical AI model lifecycle to protect their brand from new end-to-end risks. To ensure various aspects of both regulatory compliance and security, the personas that must be involved include the chief financial officer (CFO), chief marketing officer (CMO), chief data officer (CDO), HR, and chief regulatory officer (CRO), along with the data engineers, data scientists, and business analysts, who build AI workflows."}, {"self_ref": "#/texts/146", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 16, "bbox": {"l": 64.70143127441406, "t": 348.428955078125, "r": 279.45147705078125, "b": 335.1172790527344, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 33]}], "orig": "IBM governance solution for IBM Z", "text": "IBM governance solution for IBM Z", "level": 1}, {"self_ref": "#/texts/147", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 16, "bbox": {"l": 135.8342742919922, "t": 322.05352783203125, "r": 540.66015625, "b": 299.73846435546875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 112]}], "orig": "AI model lifecycle governance, risk management, and regulatory compliance are key to the success of enterprises.", "text": "AI model lifecycle governance, risk management, and regulatory compliance are key to the success of enterprises."}, {"self_ref": "#/texts/148", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 16, "bbox": {"l": 135.8035888671875, "t": 288.0574645996094, "r": 547.3551025390625, "b": 181.78021240234375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 755]}], "orig": "AI governance is a comprehensive framework that uses a set of automated processes, methodologies, and tools to manage an organization's use of AI. Consistent principles guiding the design, development, deployment, and monitoring of models are critical in driving responsible and trustworthy AI. AI governance includes processes that trace and record the origin of data, models (including associated metadata), and pipelines for audits. The details of entry should include the techniques that trained each model, the hyperparameters that were used, and the metrics from testing phases. These details provide increased transparency into the model's behavior throughout the lifecycle, the data that was influential in its development, and the possible risks.", "text": "AI governance is a comprehensive framework that uses a set of automated processes, methodologies, and tools to manage an organization's use of AI. Consistent principles guiding the design, development, deployment, and monitoring of models are critical in driving responsible and trustworthy AI. AI governance includes processes that trace and record the origin of data, models (including associated metadata), and pipelines for audits. The details of entry should include the techniques that trained each model, the hyperparameters that were used, and the metrics from testing phases. These details provide increased transparency into the model's behavior throughout the lifecycle, the data that was influential in its development, and the possible risks."}, {"self_ref": "#/texts/149", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 16, "bbox": {"l": 135.9875030517578, "t": 170.0089111328125, "r": 543.354248046875, "b": 123.76123809814453, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 292]}], "orig": "In a world where trust, transparency and explainable AI matters, every organization wants compliance along with the comfort of understanding how analytic insights and decisions are made. The following sections describe some of the principles and organizational requirements for AI governance.", "text": "In a world where trust, transparency and explainable AI matters, every organization wants compliance along with the comfort of understanding how analytic insights and decisions are made. The following sections describe some of the principles and organizational requirements for AI governance."}, {"self_ref": "#/texts/150", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 17, "bbox": {"l": 136.3389434814453, "t": 721.6488037109375, "r": 249.09483337402344, "b": 710.2207641601562, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 20]}], "orig": "Lifecycle governance", "text": "Lifecycle governance", "level": 1}, {"self_ref": "#/texts/151", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 17, "bbox": {"l": 135.980224609375, "t": 706.5272827148438, "r": 544.0435791015625, "b": 672.2786865234375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 202]}], "orig": "Lifecycle governance helps you manage your business information throughout its lifecycle, that is, from creation to deletion. IBM AI governance addresses the problems that challenge records managements:", "text": "Lifecycle governance helps you manage your business information throughout its lifecycle, that is, from creation to deletion. IBM AI governance addresses the problems that challenge records managements:"}, {"self_ref": "#/texts/152", "parent": {"cref": "#/groups/7"}, "children": [], "label": "list_item", "prov": [{"page_no": 17, "bbox": {"l": 135.69290161132812, "t": 665.34814453125, "r": 517.3616333007812, "b": 654.88720703125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 97]}], "orig": "GLYPH Monitor, catalog, and govern AI models from anywhere throughout the AI lifecycle.", "text": "GLYPH Monitor, catalog, and govern AI models from anywhere throughout the AI lifecycle.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/153", "parent": {"cref": "#/groups/7"}, "children": [], "label": "list_item", "prov": [{"page_no": 17, "bbox": {"l": 135.61203002929688, "t": 647.9351806640625, "r": 428.482666015625, "b": 637.7196655273438, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 77]}], "orig": "GLYPH Automate the capture of model metadata for report generation.", "text": "GLYPH Automate the capture of model metadata for report generation.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/154", "parent": {"cref": "#/groups/7"}, "children": [], "label": "list_item", "prov": [{"page_no": 17, "bbox": {"l": 135.6266632080078, "t": 631.390380859375, "r": 352.8333740234375, "b": 621.0405883789062, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 62]}], "orig": "GLYPH Drive transparent and explainable AI at scale.", "text": "GLYPH Drive transparent and explainable AI at scale.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/155", "parent": {"cref": "#/groups/7"}, "children": [], "label": "list_item", "prov": [{"page_no": 17, "bbox": {"l": 135.69007873535156, "t": 614.5416259765625, "r": 531.1472778320312, "b": 604.1846923828125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 103]}], "orig": "GLYPH Increase accuracy of predictions by identifying how AI is used and where it is lagging.", "text": "GLYPH Increase accuracy of predictions by identifying how AI is used and where it is lagging.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/156", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 17, "bbox": {"l": 136.56716918945312, "t": 591.5065307617188, "r": 231.8074951171875, "b": 580.2343139648438, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 15]}], "orig": "Risk management", "text": "Risk management", "level": 1}, {"self_ref": "#/texts/157", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 17, "bbox": {"l": 136.1630859375, "t": 575.9500122070312, "r": 544.0723266601562, "b": 554.0730590820312, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 130]}], "orig": "Risk management is used in IBM AI governance to identify, manage, monitor, and report on risk and compliance initiatives at scale:", "text": "Risk management is used in IBM AI governance to identify, manage, monitor, and report on risk and compliance initiatives at scale:"}, {"self_ref": "#/texts/158", "parent": {"cref": "#/groups/8"}, "children": [], "label": "list_item", "prov": [{"page_no": 17, "bbox": {"l": 135.6591033935547, "t": 547.224853515625, "r": 497.7820739746094, "b": 537.1072998046875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 89]}], "orig": "GLYPH Automate facts and workflow management to comply with business standards.", "text": "GLYPH Automate facts and workflow management to comply with business standards.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/159", "parent": {"cref": "#/groups/8"}, "children": [], "label": "list_item", "prov": [{"page_no": 17, "bbox": {"l": 135.6646270751953, "t": 530.64794921875, "r": 455.0130310058594, "b": 520.2988891601562, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 82]}], "orig": "GLYPH Use dynamic dashboards for clear and concise customizable results.", "text": "GLYPH Use dynamic dashboards for clear and concise customizable results.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/160", "parent": {"cref": "#/groups/8"}, "children": [], "label": "list_item", "prov": [{"page_no": 17, "bbox": {"l": 135.5814971923828, "t": 513.4422607421875, "r": 440.54815673828125, "b": 503.1455383300781, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 79]}], "orig": "GLYPH Enhanced collaboration across multiple regions and geographies.", "text": "GLYPH Enhanced collaboration across multiple regions and geographies.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/161", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 17, "bbox": {"l": 136.37454223632812, "t": 490.6622314453125, "r": 258.3398742675781, "b": 479.4071350097656, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 21]}], "orig": "Regulatory compliance", "text": "Regulatory compliance", "level": 1}, {"self_ref": "#/texts/162", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 17, "bbox": {"l": 135.9670867919922, "t": 475.1661071777344, "r": 547.2466430664062, "b": 428.6660461425781, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 366]}], "orig": "Regulatory compliance is a set of rules that organizations must follow to protect sensitive information and ensure human safety. Any business that works with digital assets, consumer data, health regulations, employee safety, and private communications is subject to regulatory compliance.$^{3}$ The IBM AI governance solution for IBM Z includes the following tasks:", "text": "Regulatory compliance is a set of rules that organizations must follow to protect sensitive information and ensure human safety. Any business that works with digital assets, consumer data, health regulations, employee safety, and private communications is subject to regulatory compliance.$^{3}$ The IBM AI governance solution for IBM Z includes the following tasks:"}, {"self_ref": "#/texts/163", "parent": {"cref": "#/groups/9"}, "children": [], "label": "list_item", "prov": [{"page_no": 17, "bbox": {"l": 135.71563720703125, "t": 422.6202392578125, "r": 433.3389892578125, "b": 412.0512390136719, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 80]}], "orig": "GLYPH Help adhere to external AI regulations for audit and compliance.", "text": "GLYPH Help adhere to external AI regulations for audit and compliance.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/164", "parent": {"cref": "#/groups/9"}, "children": [], "label": "list_item", "prov": [{"page_no": 17, "bbox": {"l": 135.65516662597656, "t": 405.3585205078125, "r": 465.02978515625, "b": 394.9600830078125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 88]}], "orig": "GLYPH Convert external AI regulations into policies for automatic enforcement.", "text": "GLYPH Convert external AI regulations into policies for automatic enforcement.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/165", "parent": {"cref": "#/groups/9"}, "children": [], "label": "list_item", "prov": [{"page_no": 17, "bbox": {"l": 135.6472930908203, "t": 388.6190490722656, "r": 503.326171875, "b": 378.27911376953125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 93]}], "orig": "GLYPH Use dynamic dashboards for compliance status across policies and regulations.", "text": "GLYPH Use dynamic dashboards for compliance status across policies and regulations.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/166", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 17, "bbox": {"l": 136.04916381835938, "t": 366.0682067871094, "r": 547.2515869140625, "b": 319.36859130859375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 271]}], "orig": "Enterprises can develop AI models and deploy them by using IBM Watson Studio or WML on CP4D on Red Hat OpenShift on a virtual machine that is based on IBM z/VM or Red Hat Enterprise Linux KVM on IBM Z. AI governance on IBM LinuxONE is supported in the following two ways:", "text": "Enterprises can develop AI models and deploy them by using IBM Watson Studio or WML on CP4D on Red Hat OpenShift on a virtual machine that is based on IBM z/VM or Red Hat Enterprise Linux KVM on IBM Z. AI governance on IBM LinuxONE is supported in the following two ways:"}, {"self_ref": "#/texts/167", "parent": {"cref": "#/groups/10"}, "children": [], "label": "list_item", "prov": [{"page_no": 17, "bbox": {"l": 135.6191864013672, "t": 313.45947265625, "r": 526.8416137695312, "b": 291.2804870605469, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 119]}], "orig": "GLYPH Monitor the AI models with Watson OpenScale on CP4D on Red Hat OpenShift on a virtual machine on IBM Z.", "text": "GLYPH Monitor the AI models with Watson OpenScale on CP4D on Red Hat OpenShift on a virtual machine on IBM Z.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/168", "parent": {"cref": "#/groups/10"}, "children": [], "label": "list_item", "prov": [{"page_no": 17, "bbox": {"l": 135.48377990722656, "t": 284.0699462890625, "r": 541.8055419921875, "b": 225.61773681640625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 413]}], "orig": "GLYPH Enterprises can develop AI models by creating and training models by using Watson Studio and development tools such as Jupyter Notebook or JupyterLab, and then deploying the model onto WML on CP4D on Red Hat OpenShift on a virtual machine on IBM Z. Then, these enterprises can achieve end-end AI governance by running AI Factsheets, IBM Watson OpenScale, and IBM Watson OpenPagesfi on CP4D on x86.", "text": "GLYPH Enterprises can develop AI models by creating and training models by using Watson Studio and development tools such as Jupyter Notebook or JupyterLab, and then deploying the model onto WML on CP4D on Red Hat OpenShift on a virtual machine on IBM Z. Then, these enterprises can achieve end-end AI governance by running AI Factsheets, IBM Watson OpenScale, and IBM Watson OpenPagesfi on CP4D on x86.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/169", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 17, "bbox": {"l": 136.42056274414062, "t": 214.4039306640625, "r": 512.4911499023438, "b": 204.2818603515625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 82]}], "orig": "Figure 9 on page 16 shows the end-to-end flow for a remote AI governance solution.", "text": "Figure 9 on page 16 shows the end-to-end flow for a remote AI governance solution."}, {"self_ref": "#/texts/170", "parent": {"cref": "#/body"}, "children": [], "label": "footnote", "prov": [{"page_no": 17, "bbox": {"l": 136.24427795410156, "t": 66.9732666015625, "r": 418.4429931640625, "b": 56.91937255859375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 75]}], "orig": "$^{3 }$https://www.proofpoint.com/us/threat-reference/regulatory-compliance", "text": "$^{3 }$https://www.proofpoint.com/us/threat-reference/regulatory-compliance"}, {"self_ref": "#/texts/171", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 17, "bbox": {"l": 535.963623046875, "t": 37.68475341796875, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "15", "text": "15"}, {"self_ref": "#/texts/172", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 18, "bbox": {"l": 64.34585571289062, "t": 498.58984375, "r": 295.9040222167969, "b": 489.1927490234375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Figure 9 Remote AI governance solution end-to-end flow", "text": "Figure 9 Remote AI governance solution end-to-end flow"}, {"self_ref": "#/texts/173", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 18, "bbox": {"l": 136.1533203125, "t": 476.65362548828125, "r": 438.0164794921875, "b": 466.38671875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 66]}], "orig": "To achieve end-to-end AI governance, complete the following steps:", "text": "To achieve end-to-end AI governance, complete the following steps:"}, {"self_ref": "#/texts/174", "parent": {"cref": "#/groups/11"}, "children": [], "label": "list_item", "prov": [{"page_no": 18, "bbox": {"l": 136.8000030517578, "t": 460.077880859375, "r": 541.7039184570312, "b": 437.72967529296875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 96]}], "orig": "1. Create a model entry in IBM OpenPages by using CP4D on a x86 platform, as shown in Figure 10.", "text": "1. Create a model entry in IBM OpenPages by using CP4D on a x86 platform, as shown in Figure 10.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/175", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 18, "bbox": {"l": 64.25994873046875, "t": 123.18603515625, "r": 279.38360595703125, "b": 113.96868896484375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 49]}], "orig": "Figure 10 Creating a model entry in IBM OpenPages", "text": "Figure 10 Creating a model entry in IBM OpenPages"}, {"self_ref": "#/texts/176", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 18, "bbox": {"l": 64.45965576171875, "t": 37.55645751953125, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "16", "text": "16"}, {"self_ref": "#/texts/177", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 18, "bbox": {"l": 93.34640502929688, "t": 37.273681640625, "r": 267.07440185546875, "b": 27.83563232421875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 38]}], "orig": "IBM Cloud Pak for Data on IBM zSystems", "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"self_ref": "#/texts/178", "parent": {"cref": "#/groups/12"}, "children": [], "label": "list_item", "prov": [{"page_no": 19, "bbox": {"l": 135.98834228515625, "t": 721.23388671875, "r": 542.9114379882812, "b": 686.9762573242188, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 192]}], "orig": "2. Train a model by using Watson Studio and by using development tools such as Jupyter Notebook or JupyterLab on CP4D on Red Hat OpenShift on a virtual machine on IBM Z, as shown in Figure 11.", "text": "2. Train a model by using Watson Studio and by using development tools such as Jupyter Notebook or JupyterLab on CP4D on Red Hat OpenShift on a virtual machine on IBM Z, as shown in Figure 11.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/179", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 19, "bbox": {"l": 64.27749633789062, "t": 375.8592834472656, "r": 290.4153137207031, "b": 366.48577880859375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 53]}], "orig": "Figure 11 Training an AI model by using Watson Studio", "text": "Figure 11 Training an AI model by using Watson Studio"}, {"self_ref": "#/texts/180", "parent": {"cref": "#/groups/13"}, "children": [], "label": "list_item", "prov": [{"page_no": 19, "bbox": {"l": 136.21717834472656, "t": 353.99700927734375, "r": 547.2686767578125, "b": 331.84283447265625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 115]}], "orig": "3. Deploy the model by using WML on CP4D on Red Hat OpenShift on a virtual machine on IBM Z, as shown in Figure 12.", "text": "3. Deploy the model by using WML on CP4D on Red Hat OpenShift on a virtual machine on IBM Z, as shown in Figure 12.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/181", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 19, "bbox": {"l": 64.3975601196289, "t": 65.911376953125, "r": 351.1659851074219, "b": 56.48388671875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 66]}], "orig": "Figure 12 Deploying an AI model by using WML on Cloud Pak for Data", "text": "Figure 12 Deploying an AI model by using WML on Cloud Pak for Data"}, {"self_ref": "#/texts/182", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 19, "bbox": {"l": 535.8695068359375, "t": 37.5572509765625, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "17", "text": "17"}, {"self_ref": "#/texts/183", "parent": {"cref": "#/groups/14"}, "children": [], "label": "list_item", "prov": [{"page_no": 20, "bbox": {"l": 135.78439331054688, "t": 721.399658203125, "r": 547.24560546875, "b": 674.989501953125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 338]}], "orig": "4. Track the external model lifecycle by browsing through the Catalogs/Platform assets catalog by using AI Factsheets and OpenPages while using CP4D on an x86 platform, as shown in Figure 13. The external model (deployed on CP4D on Red Hat OpenShift on a virtual machine on IBM Z) is saved as a platform asset catalog on the x86 platform.", "text": "4. Track the external model lifecycle by browsing through the Catalogs/Platform assets catalog by using AI Factsheets and OpenPages while using CP4D on an x86 platform, as shown in Figure 13. The external model (deployed on CP4D on Red Hat OpenShift on a virtual machine on IBM Z) is saved as a platform asset catalog on the x86 platform.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/184", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 20, "bbox": {"l": 136.2765350341797, "t": 403.81927490234375, "r": 242.76724243164062, "b": 394.5011291503906, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 24]}], "orig": "Figure 13 External model", "text": "Figure 13 External model"}, {"self_ref": "#/texts/185", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 20, "bbox": {"l": 150.45053100585938, "t": 382.123291015625, "r": 547.290283203125, "b": 359.73297119140625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 127]}], "orig": "You can track the model through each stage of the model lifecycle, as shown in Figure 14, by using AI Factsheets and OpenPages.", "text": "You can track the model through each stage of the model lifecycle, as shown in Figure 14, by using AI Factsheets and OpenPages."}, {"self_ref": "#/texts/186", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 20, "bbox": {"l": 64.26177978515625, "t": 81.8817138671875, "r": 187.44825744628906, "b": 72.2799072265625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 28]}], "orig": "Figure 14 Tracking the model", "text": "Figure 14 Tracking the model"}, {"self_ref": "#/texts/187", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 20, "bbox": {"l": 64.46235656738281, "t": 37.5947265625, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "18", "text": "18"}, {"self_ref": "#/texts/188", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 20, "bbox": {"l": 93.31233978271484, "t": 37.3203125, "r": 267.07440185546875, "b": 27.7569580078125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 38]}], "orig": "IBM Cloud Pak for Data on IBM zSystems", "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"self_ref": "#/texts/189", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 21, "bbox": {"l": 150.36676025390625, "t": 721.2769165039062, "r": 547.2222290039062, "b": 699.0984497070312, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 122]}], "orig": "You can see that the model facts are tracked and synchronized to IBM OpenPages for risk management, as shown in Figure 15.", "text": "You can see that the model facts are tracked and synchronized to IBM OpenPages for risk management, as shown in Figure 15."}, {"self_ref": "#/texts/190", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 21, "bbox": {"l": 64.23995208740234, "t": 377.292236328125, "r": 450.36871337890625, "b": 368.12579345703125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 91]}], "orig": "Figure 15 Model facts that are tracked and synchronized to IBM OpenPages on an x86 platform", "text": "Figure 15 Model facts that are tracked and synchronized to IBM OpenPages on an x86 platform"}, {"self_ref": "#/texts/191", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 21, "bbox": {"l": 535.8822631835938, "t": 37.6324462890625, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "19", "text": "19"}, {"self_ref": "#/texts/192", "parent": {"cref": "#/groups/15"}, "children": [], "label": "list_item", "prov": [{"page_no": 22, "bbox": {"l": 136.09112548828125, "t": 721.4546508789062, "r": 525.693115234375, "b": 698.8700561523438, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 94]}], "orig": "5. Create an external model by using IBM OpenScale on the x86 platform, as shown in Figure 16.", "text": "5. Create an external model by using IBM OpenScale on the x86 platform, as shown in Figure 16.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/193", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 22, "bbox": {"l": 64.40975189208984, "t": 407.9462585449219, "r": 295.9855651855469, "b": 398.55523681640625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 55]}], "orig": "Figure 16 Creating an external model on an x86 platform", "text": "Figure 16 Creating an external model on an x86 platform"}, {"self_ref": "#/texts/194", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 22, "bbox": {"l": 135.78622436523438, "t": 386.0187683105469, "r": 547.329345703125, "b": 339.69549560546875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 356]}], "orig": "IBM OpenScale provides a comprehensive dashboard that tracks fairness, quality monitoring, drift, and explainability of a model. Fairness determines whether your model produces biased outcomes. Quality determines how well your model predicts outcomes. Drift is the degradation of predictive performance over time. A sample is shown in Figure 17 on page 21.", "text": "IBM OpenScale provides a comprehensive dashboard that tracks fairness, quality monitoring, drift, and explainability of a model. Fairness determines whether your model produces biased outcomes. Quality determines how well your model predicts outcomes. Drift is the degradation of predictive performance over time. A sample is shown in Figure 17 on page 21."}, {"self_ref": "#/texts/195", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 22, "bbox": {"l": 63.867469787597656, "t": 37.66998291015625, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "20", "text": "20"}, {"self_ref": "#/texts/196", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 22, "bbox": {"l": 93.32005310058594, "t": 37.29931640625, "r": 267.07440185546875, "b": 27.82635498046875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 38]}], "orig": "IBM Cloud Pak for Data on IBM zSystems", "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"self_ref": "#/texts/197", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 23, "bbox": {"l": 64.26493835449219, "t": 438.6904602050781, "r": 386.60101318359375, "b": 429.2548522949219, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 76]}], "orig": "Figure 17 IBM OpenScale dashboard that is used to monitor the external model", "text": "Figure 17 IBM OpenScale dashboard that is used to monitor the external model"}, {"self_ref": "#/texts/198", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 23, "bbox": {"l": 135.85134887695312, "t": 416.78009033203125, "r": 547.2167358398438, "b": 358.6399230957031, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 340]}], "orig": "You developed and deployed the AI model by using Watson Studio, WML on CP4D on Red Hat OpenShift on a virtual machine on IBM Z, and end-to-end AI model governance by leveraging AI Factsheets, OpenScale, and OpenPages on CP4D on a x86 platform. Figure 18 shows end-to-end AI governance when using IBM OpenPages, AI Factsheets, and OpenScale.", "text": "You developed and deployed the AI model by using Watson Studio, WML on CP4D on Red Hat OpenShift on a virtual machine on IBM Z, and end-to-end AI model governance by leveraging AI Factsheets, OpenScale, and OpenPages on CP4D on a x86 platform. Figure 18 shows end-to-end AI governance when using IBM OpenPages, AI Factsheets, and OpenScale."}, {"self_ref": "#/texts/199", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 23, "bbox": {"l": 64.34110260009766, "t": 67.2464599609375, "r": 507.7935485839844, "b": 57.9146728515625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 103]}], "orig": "Figure 18 Final result: End-to-end AI governance when using IBM OpenPages, AI Factsheets, and OpenScale", "text": "Figure 18 Final result: End-to-end AI governance when using IBM OpenPages, AI Factsheets, and OpenScale"}, {"self_ref": "#/texts/200", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 23, "bbox": {"l": 535.4277954101562, "t": 37.76495361328125, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "21", "text": "21"}, {"self_ref": "#/texts/201", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 24, "bbox": {"l": 64.80000305175781, "t": 721.75732421875, "r": 389.5157470703125, "b": 706.0162963867188, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 42]}], "orig": "Use case 2: Credit default risk assessment", "text": "Use case 2: Credit default risk assessment", "level": 1}, {"self_ref": "#/texts/202", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 24, "bbox": {"l": 136.07400512695312, "t": 689.2387084960938, "r": 547.2247314453125, "b": 655.279296875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 265]}], "orig": "In today's world, many individuals or businesses seeking loans to meet their growing business needs often look to financial institutions. Financial institutions can offer loans to individuals or businesses and charge interest based on the current market situations.", "text": "In today's world, many individuals or businesses seeking loans to meet their growing business needs often look to financial institutions. Financial institutions can offer loans to individuals or businesses and charge interest based on the current market situations."}, {"self_ref": "#/texts/203", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 24, "bbox": {"l": 64.54896545410156, "t": 635.5101318359375, "r": 186.71859741210938, "b": 622.16162109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 19]}], "orig": "Industry challenges", "text": "Industry challenges", "level": 1}, {"self_ref": "#/texts/204", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 24, "bbox": {"l": 136.15374755859375, "t": 609.3872680664062, "r": 547.2955322265625, "b": 563.0860595703125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 366]}], "orig": "Financial institutions must make an accurate decision about whether to sanction a loan or not, and judging the likelihood of default is the difference between a successful and unsuccessful loan portfolio. In a traditional scenario, an experienced banker can judge someone's likelihood of default, but that is not an efficient method for judgment as a business grows.", "text": "Financial institutions must make an accurate decision about whether to sanction a loan or not, and judging the likelihood of default is the difference between a successful and unsuccessful loan portfolio. In a traditional scenario, an experienced banker can judge someone's likelihood of default, but that is not an efficient method for judgment as a business grows."}, {"self_ref": "#/texts/205", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 24, "bbox": {"l": 64.6235122680664, "t": 543.4171142578125, "r": 341.16033935546875, "b": 530.6572875976562, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 45]}], "orig": "Predictions of credit default risk assessment", "text": "Predictions of credit default risk assessment", "level": 1}, {"self_ref": "#/texts/206", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 24, "bbox": {"l": 135.9077606201172, "t": 517.2838745117188, "r": 547.2635498046875, "b": 435.2793884277344, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 579]}], "orig": "In the modern world, growing business institutions can no longer rely on only experienced bankers to decide whether to sanction a loan knowing that there is a probability that the borrower might default on their loans. A better choice is to rely on technological advancements that can help with reasoning based on facts, such as leveraging credit risk modeling techniques to process the historical data of past borrowers to understand their credit behavior and make a more informed decision about whether to lend money, how much money, and decide on the tenure to close the loan.", "text": "In the modern world, growing business institutions can no longer rely on only experienced bankers to decide whether to sanction a loan knowing that there is a probability that the borrower might default on their loans. A better choice is to rely on technological advancements that can help with reasoning based on facts, such as leveraging credit risk modeling techniques to process the historical data of past borrowers to understand their credit behavior and make a more informed decision about whether to lend money, how much money, and decide on the tenure to close the loan."}, {"self_ref": "#/texts/207", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 24, "bbox": {"l": 136.04486083984375, "t": 423.1811218261719, "r": 547.1471557617188, "b": 389.1506042480469, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 252]}], "orig": "Financial institutions can leverage AI solutions by using ML techniques to predict the credit risk. Applying AI to credit risk modeling techniques can benefit institutions in decision-making, and thus can help better manage the exposure to credit risk.", "text": "Financial institutions can leverage AI solutions by using ML techniques to predict the credit risk. Applying AI to credit risk modeling techniques can benefit institutions in decision-making, and thus can help better manage the exposure to credit risk."}, {"self_ref": "#/texts/208", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 24, "bbox": {"l": 136.09634399414062, "t": 377.2167663574219, "r": 547.2008666992188, "b": 330.975341796875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 321]}], "orig": "Figure 19 on page 23 shows a sample architecture about how to design and develop an AI model for credit risk assessment on IBM Z. An IBM WebSpherefi Application Server is used for handling in-bound transactions, and CP4D is used for AI model lifecycle management that includes building, training, and deploying the model.", "text": "Figure 19 on page 23 shows a sample architecture about how to design and develop an AI model for credit risk assessment on IBM Z. An IBM WebSpherefi Application Server is used for handling in-bound transactions, and CP4D is used for AI model lifecycle management that includes building, training, and deploying the model."}, {"self_ref": "#/texts/209", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 24, "bbox": {"l": 63.85818862915039, "t": 37.5885009765625, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "22", "text": "22"}, {"self_ref": "#/texts/210", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 24, "bbox": {"l": 93.21298217773438, "t": 37.21533203125, "r": 267.07440185546875, "b": 27.90716552734375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 38]}], "orig": "IBM Cloud Pak for Data on IBM zSystems", "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"self_ref": "#/texts/211", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 25, "bbox": {"l": 64.25103759765625, "t": 448.5760498046875, "r": 395.7005615234375, "b": 439.3569641113281, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 82]}], "orig": "Figure 19 Architecture for credit risk prediction by using an ML AI model on IBM Z", "text": "Figure 19 Architecture for credit risk prediction by using an ML AI model on IBM Z"}, {"self_ref": "#/texts/212", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 25, "bbox": {"l": 135.72901916503906, "t": 426.48486328125, "r": 547.34521484375, "b": 380.574951171875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 317]}], "orig": "A data scientist can leverage Watson Studio to develop and train an AI model and WML to deploy and score the model. In this sample architecture, the WML Python run time leverages the ML framework, IBM Snap Machine Learning (Snap ML), for scoring, can leverage an integrated AI accelerator at the time of model import.", "text": "A data scientist can leverage Watson Studio to develop and train an AI model and WML to deploy and score the model. In this sample architecture, the WML Python run time leverages the ML framework, IBM Snap Machine Learning (Snap ML), for scoring, can leverage an integrated AI accelerator at the time of model import."}, {"self_ref": "#/texts/213", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 25, "bbox": {"l": 135.47738647460938, "t": 368.5098876953125, "r": 545.5831909179688, "b": 310.60186767578125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 424]}], "orig": "Then, the banking loan approval team can send a loan applicant request to the IBM WebSphere Application Server, which can make a request to the AI inference endpoint. The AI inference engine scores the transaction and sends the result back to the loan approval team. Based on the results, the approval team can decide on whether to approve a loan or not, and also decide how much they can lend, timelines, and other factors.", "text": "Then, the banking loan approval team can send a loan applicant request to the IBM WebSphere Application Server, which can make a request to the AI inference endpoint. The AI inference engine scores the transaction and sends the result back to the loan approval team. Based on the results, the approval team can decide on whether to approve a loan or not, and also decide how much they can lend, timelines, and other factors."}, {"self_ref": "#/texts/214", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 25, "bbox": {"l": 135.9343719482422, "t": 298.35601806640625, "r": 528.6572875976562, "b": 264.64080810546875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 232]}], "orig": "The transaction system that is shown in Figure 19 uses IBM WebSphere Liberty as an application server, but you also can use an IBM Open Libertyfi application server or any application server that can send RESTful API communications.", "text": "The transaction system that is shown in Figure 19 uses IBM WebSphere Liberty as an application server, but you also can use an IBM Open Libertyfi application server or any application server that can send RESTful API communications."}, {"self_ref": "#/texts/215", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 25, "bbox": {"l": 135.85601806640625, "t": 252.58935546875, "r": 547.310546875, "b": 182.3758544921875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 498]}], "orig": "Models are frequently developed and tested in many platforms and languages, such as Python, Scala, R, and Go. Models can leverage ML frameworks like scikit-learn, Snap ML, or XGBoost, or DL frameworks like TensorFlow or PyTorch. Training a model can be done on any platform if you have enough computing power for complex models, but moving that model into production requires careful testing to ensure that transactions are not delayed, especially if you plan to run the model within a transaction.", "text": "Models are frequently developed and tested in many platforms and languages, such as Python, Scala, R, and Go. Models can leverage ML frameworks like scikit-learn, Snap ML, or XGBoost, or DL frameworks like TensorFlow or PyTorch. Training a model can be done on any platform if you have enough computing power for complex models, but moving that model into production requires careful testing to ensure that transactions are not delayed, especially if you plan to run the model within a transaction."}, {"self_ref": "#/texts/216", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 25, "bbox": {"l": 135.7754364013672, "t": 170.63201904296875, "r": 547.2376708984375, "b": 148.32958984375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 173]}], "orig": "We showed how IBM Z enable customers to use AI frameworks to detect credit risk. Now, we look at how you can leverage CP4D and TensorFlow on IBM Z to detect the credit risk.", "text": "We showed how IBM Z enable customers to use AI frameworks to detect credit risk. Now, we look at how you can leverage CP4D and TensorFlow on IBM Z to detect the credit risk."}, {"self_ref": "#/texts/217", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 25, "bbox": {"l": 535.4268188476562, "t": 37.6199951171875, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "23", "text": "23"}, {"self_ref": "#/texts/218", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 26, "bbox": {"l": 63.90467071533203, "t": 37.68109130859375, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "24", "text": "24"}, {"self_ref": "#/texts/219", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 26, "bbox": {"l": 93.28766632080078, "t": 37.2451171875, "r": 267.07440185546875, "b": 27.8919677734375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 38]}], "orig": "IBM Cloud Pak for Data on IBM zSystems", "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"self_ref": "#/texts/220", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 26, "bbox": {"l": 136.43939208984375, "t": 721.3068237304688, "r": 489.5701599121094, "b": 710.9625244140625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 80]}], "orig": "Figure 20 shows an architecture for predicting credit risk by using DL on IBM Z.", "text": "Figure 20 shows an architecture for predicting credit risk by using DL on IBM Z."}, {"self_ref": "#/texts/221", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 26, "bbox": {"l": 64.37335968017578, "t": 430.6827697753906, "r": 344.09613037109375, "b": 421.3126220703125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 70]}], "orig": "Figure 20 Architecture for credit risk prediction by using DL on IBM Z", "text": "Figure 20 Architecture for credit risk prediction by using DL on IBM Z"}, {"self_ref": "#/texts/222", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 26, "bbox": {"l": 136.12535095214844, "t": 408.48529052734375, "r": 534.5686645507812, "b": 362.44940185546875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 335]}], "orig": "Data scientists can start creating and training a DL AI model by using a Jupyter Notebook instance and Watson Studio. Then, they can deploy the model by using WML on CP4D running on IBM Z, which provides an endpoint. Other applications, including the IBM WebSphere server, can produce credit risk results by using the model's endpoint.", "text": "Data scientists can start creating and training a DL AI model by using a Jupyter Notebook instance and Watson Studio. Then, they can deploy the model by using WML on CP4D running on IBM Z, which provides an endpoint. Other applications, including the IBM WebSphere server, can produce credit risk results by using the model's endpoint."}, {"self_ref": "#/texts/223", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 26, "bbox": {"l": 136.19705200195312, "t": 350.4607849121094, "r": 547.2158813476562, "b": 328.7194519042969, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 108]}], "orig": "In summary, here are some considerations for developing real-time AI models, such as credit risk assessment:", "text": "In summary, here are some considerations for developing real-time AI models, such as credit risk assessment:"}, {"self_ref": "#/texts/224", "parent": {"cref": "#/groups/16"}, "children": [], "label": "list_item", "prov": [{"page_no": 26, "bbox": {"l": 135.6735076904297, "t": 322.04962158203125, "r": 522.9054565429688, "b": 311.7396545410156, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 102]}], "orig": "GLYPH A preference for in-platform run times of the model, such as faster execution results.", "text": "GLYPH A preference for in-platform run times of the model, such as faster execution results.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/225", "parent": {"cref": "#/groups/16"}, "children": [], "label": "list_item", "prov": [{"page_no": 26, "bbox": {"l": 135.52078247070312, "t": 304.5061340332031, "r": 445.5369873046875, "b": 294.32757568359375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 81]}], "orig": "GLYPH Less overhead in the end-to-end flows might improve scoring time.", "text": "GLYPH Less overhead in the end-to-end flows might improve scoring time.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/226", "parent": {"cref": "#/groups/16"}, "children": [], "label": "list_item", "prov": [{"page_no": 26, "bbox": {"l": 135.63246154785156, "t": 287.9996643066406, "r": 547.3232421875, "b": 265.68341064453125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 168]}], "orig": "GLYPH If you are using models that are not deployable, CP4D offers a custom Python run time to build your own stack if they are not available on the platform.", "text": "GLYPH If you are using models that are not deployable, CP4D offers a custom Python run time to build your own stack if they are not available on the platform.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/227", "parent": {"cref": "#/groups/16"}, "children": [], "label": "list_item", "prov": [{"page_no": 26, "bbox": {"l": 135.62271118164062, "t": 258.63983154296875, "r": 541.7804565429688, "b": 236.74082946777344, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 115]}], "orig": "GLYPH AI inferencing based on ML or DL models can increase the accuracy of better credit risk assessment.", "text": "GLYPH AI inferencing based on ML or DL models can increase the accuracy of better credit risk assessment.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/228", "parent": {"cref": "#/groups/16"}, "children": [], "label": "list_item", "prov": [{"page_no": 26, "bbox": {"l": 135.50205993652344, "t": 230.15380859375, "r": 531.8067626953125, "b": 195.76141357421875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 234]}], "orig": "GLYPH Using IBM z16 and on-chip AI acceleration with the Telum chip that is embedded with regular Integrated Facility for Linux (IFLs) provides an execution speed for your transactions that cannot be achieved by other means.", "text": "GLYPH Using IBM z16 and on-chip AI acceleration with the Telum chip that is embedded with regular Integrated Facility for Linux (IFLs) provides an execution speed for your transactions that cannot be achieved by other means.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/229", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 27, "bbox": {"l": 64.79078674316406, "t": 721.92333984375, "r": 338.5379638671875, "b": 705.6964721679688, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 35]}], "orig": "Use case 3: Clearing and settlement", "text": "Use case 3: Clearing and settlement", "level": 1}, {"self_ref": "#/texts/230", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 27, "bbox": {"l": 135.91648864746094, "t": 689.2892456054688, "r": 539.5654907226562, "b": 630.9378051757812, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 433]}], "orig": "Clearing and settlements involve banks or financial institutions sending and receiving wire transfers by using secure interbank payments networks that can clear or settle numerous transactions. When an individual or business entity initiates a wire transfer, clearing begins the fund delivery process. Banks can begin the settlement phase either immediately after clearing takes place or later, mostly at the end of the business day.", "text": "Clearing and settlements involve banks or financial institutions sending and receiving wire transfers by using secure interbank payments networks that can clear or settle numerous transactions. When an individual or business entity initiates a wire transfer, clearing begins the fund delivery process. Banks can begin the settlement phase either immediately after clearing takes place or later, mostly at the end of the business day."}, {"self_ref": "#/texts/231", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 27, "bbox": {"l": 64.3849868774414, "t": 611.3507690429688, "r": 179.53228759765625, "b": 598.3488159179688, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 18]}], "orig": "Industry challenge", "text": "Industry challenge", "level": 1}, {"self_ref": "#/texts/232", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 27, "bbox": {"l": 136.17025756835938, "t": 585.2027587890625, "r": 538.4359130859375, "b": 563.2137451171875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 184]}], "orig": "Banks and financial institutions must deal with high-risk transactions that can lead to loss. Moreover, these transactions can lead to regulatory violations and extra compliance costs.", "text": "Banks and financial institutions must deal with high-risk transactions that can lead to loss. Moreover, these transactions can lead to regulatory violations and extra compliance costs."}, {"self_ref": "#/texts/233", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 27, "bbox": {"l": 64.63189697265625, "t": 543.4601440429688, "r": 266.077880859375, "b": 530.2203369140625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 32]}], "orig": "Clearing and settlement solution", "text": "Clearing and settlement solution", "level": 1}, {"self_ref": "#/texts/234", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 27, "bbox": {"l": 135.968505859375, "t": 517.2374267578125, "r": 545.6968383789062, "b": 470.9981994628906, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 277]}], "orig": "Use AI to predict which trades or transactions have high risk exposures, and propose solutions for a more efficient settlement process. The expedited remediation of questionable transactions can prevent costly consequences, regulatory violations, and negative business impacts.", "text": "Use AI to predict which trades or transactions have high risk exposures, and propose solutions for a more efficient settlement process. The expedited remediation of questionable transactions can prevent costly consequences, regulatory violations, and negative business impacts."}, {"self_ref": "#/texts/235", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 27, "bbox": {"l": 135.97213745117188, "t": 459.1885681152344, "r": 544.662109375, "b": 389.1208190917969, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 499]}], "orig": "In financial institutions, finding which financial transactions are legitimate and which transactions are fraudulent is of paramount importance. In this section, we go through a use case where we use AI to predict which trades or transactions have high risk exposures, and propose solutions for a more efficient settlement process. The expedited remediation of questionable transactions can prevent costly consequences, regulatory violations, and negative business impacts to financial institutions.", "text": "In financial institutions, finding which financial transactions are legitimate and which transactions are fraudulent is of paramount importance. In this section, we go through a use case where we use AI to predict which trades or transactions have high risk exposures, and propose solutions for a more efficient settlement process. The expedited remediation of questionable transactions can prevent costly consequences, regulatory violations, and negative business impacts to financial institutions."}, {"self_ref": "#/texts/236", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 27, "bbox": {"l": 135.8656463623047, "t": 377.083740234375, "r": 543.3472900390625, "b": 319.3011169433594, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 430]}], "orig": "The goal is to predict in real time whether the transaction being processed might be a fraudulent transaction or not. To achieve this goal, we build an ML model that can do this prediction for the financial institution. Because there would be many transactions being processed at any point by the financial institution, it is important to perform this prediction of fraudulent transactions in near-real time in a few milliseconds.", "text": "The goal is to predict in real time whether the transaction being processed might be a fraudulent transaction or not. To achieve this goal, we build an ML model that can do this prediction for the financial institution. Because there would be many transactions being processed at any point by the financial institution, it is important to perform this prediction of fraudulent transactions in near-real time in a few milliseconds."}, {"self_ref": "#/texts/237", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 27, "bbox": {"l": 135.92105102539062, "t": 307.17913818359375, "r": 547.2335815429688, "b": 261.00042724609375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 298]}], "orig": "One possible solution is to build and train a TensorFlow based DL model that learns from the historical data and predicts the fraudulent transactions. CP4D on IBM Z and IBM LinuxONE is a suitable product where this task can be achieved and the model deployed, and coming up with a serving endpoint.", "text": "One possible solution is to build and train a TensorFlow based DL model that learns from the historical data and predicts the fraudulent transactions. CP4D on IBM Z and IBM LinuxONE is a suitable product where this task can be achieved and the model deployed, and coming up with a serving endpoint."}, {"self_ref": "#/texts/238", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 27, "bbox": {"l": 535.565673828125, "t": 37.67999267578125, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "25", "text": "25"}, {"self_ref": "#/texts/239", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 28, "bbox": {"l": 63.89773941040039, "t": 37.6005859375, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "26", "text": "26"}, {"self_ref": "#/texts/240", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 28, "bbox": {"l": 93.21942138671875, "t": 37.2734375, "r": 267.07440185546875, "b": 27.8814697265625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 38]}], "orig": "IBM Cloud Pak for Data on IBM zSystems", "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"self_ref": "#/texts/241", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 28, "bbox": {"l": 136.25498962402344, "t": 721.3104858398438, "r": 537.352294921875, "b": 699.2785034179688, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 146]}], "orig": "Figure 21 provides a high-level diagram of a clearing and settlement use case for financial transactions that uses CP4D on IBM Z and IBM LinuxONE.", "text": "Figure 21 provides a high-level diagram of a clearing and settlement use case for financial transactions that uses CP4D on IBM Z and IBM LinuxONE."}, {"self_ref": "#/texts/242", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 28, "bbox": {"l": 64.17871856689453, "t": 477.33721923828125, "r": 459.98809814453125, "b": 467.9989013671875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 97]}], "orig": "Figure 21 Clearing and settlement use case for financial transactions by using Cloud Pak for Data", "text": "Figure 21 Clearing and settlement use case for financial transactions by using Cloud Pak for Data"}, {"self_ref": "#/texts/243", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 28, "bbox": {"l": 136.43458557128906, "t": 455.203369140625, "r": 353.37115478515625, "b": 445.08782958984375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 50]}], "orig": "Here are the steps of the high-level process flow:", "text": "Here are the steps of the high-level process flow:"}, {"self_ref": "#/texts/244", "parent": {"cref": "#/groups/17"}, "children": [], "label": "list_item", "prov": [{"page_no": 28, "bbox": {"l": 136.8000030517578, "t": 437.9080505371094, "r": 524.740966796875, "b": 415.95501708984375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 135]}], "orig": "1. Create a connection to a database (for example, an IBM Db2fi database) where the historical data will be used for ML model building.", "text": "1. Create a connection to a database (for example, an IBM Db2fi database) where the historical data will be used for ML model building.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/245", "parent": {"cref": "#/groups/17"}, "children": [], "label": "list_item", "prov": [{"page_no": 28, "bbox": {"l": 136.05679321289062, "t": 409.4246826171875, "r": 542.9837646484375, "b": 387.2192687988281, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 103]}], "orig": "2. Read the data from the database and prepare the data for AI by using the Data Refinery tool in CP4D.", "text": "2. Read the data from the database and prepare the data for AI by using the Data Refinery tool in CP4D.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/246", "parent": {"cref": "#/groups/17"}, "children": [], "label": "list_item", "prov": [{"page_no": 28, "bbox": {"l": 136.27484130859375, "t": 380.01947021484375, "r": 545.7424926757812, "b": 345.4718933105469, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 188]}], "orig": "3. A Jupyter Notebook or JupyterLab IDE that is provided by the Watson Studio component in CP4D helps us build and train the AI model. The trained model can be saved into a WML repository.", "text": "3. A Jupyter Notebook or JupyterLab IDE that is provided by the Watson Studio component in CP4D helps us build and train the AI model. The trained model can be saved into a WML repository.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/247", "parent": {"cref": "#/groups/17"}, "children": [], "label": "list_item", "prov": [{"page_no": 28, "bbox": {"l": 136.03822326660156, "t": 339.3093566894531, "r": 468.5547790527344, "b": 328.7619323730469, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 71]}], "orig": "4. Deploy the saved model into a deployment space for batch deployment.", "text": "4. Deploy the saved model into a deployment space for batch deployment.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/248", "parent": {"cref": "#/groups/17"}, "children": [], "label": "list_item", "prov": [{"page_no": 28, "bbox": {"l": 136.39476013183594, "t": 321.93609619140625, "r": 417.2825622558594, "b": 311.90350341796875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 62]}], "orig": "5. Create a batch deployment by using any of these interfaces:", "text": "5. Create a batch deployment by using any of these interfaces:", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/249", "parent": {"cref": "#/groups/17"}, "children": [], "label": "list_item", "prov": [{"page_no": 28, "bbox": {"l": 150.49728393554688, "t": 305.3652038574219, "r": 460.12939453125, "b": 295.11468505859375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 67]}], "orig": "a. Watson Studio user interface from an Analytics deployment space.", "text": "a. Watson Studio user interface from an Analytics deployment space.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/250", "parent": {"cref": "#/groups/17"}, "children": [], "label": "list_item", "prov": [{"page_no": 28, "bbox": {"l": 150.5271759033203, "t": 288.0757751464844, "r": 251.6896209716797, "b": 277.79693603515625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 21]}], "orig": "b. WML Python client.", "text": "b. WML Python client.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/251", "parent": {"cref": "#/groups/17"}, "children": [], "label": "list_item", "prov": [{"page_no": 28, "bbox": {"l": 150.59584045410156, "t": 271.8419189453125, "r": 244.95565795898438, "b": 261.2212829589844, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 17]}], "orig": "c. WML REST APIs.", "text": "c. WML REST APIs.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/252", "parent": {"cref": "#/groups/17"}, "children": [], "label": "list_item", "prov": [{"page_no": 28, "bbox": {"l": 136.3202667236328, "t": 254.1214599609375, "r": 418.506591796875, "b": 243.8004150390625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 61]}], "orig": "6. A hardware configuration can be chosen for the deployment.", "text": "6. A hardware configuration can be chosen for the deployment.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/253", "parent": {"cref": "#/groups/17"}, "children": [], "label": "list_item", "prov": [{"page_no": 28, "bbox": {"l": 136.2103271484375, "t": 237.25958251953125, "r": 545.685791015625, "b": 214.9263916015625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 160]}], "orig": "7. A batch deployment processes input data from a file, data connection, or connected data in a storage bucket, and writes the output to a selected destination.", "text": "7. A batch deployment processes input data from a file, data connection, or connected data in a storage bucket, and writes the output to a selected destination.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/254", "parent": {"cref": "#/groups/17"}, "children": [], "label": "list_item", "prov": [{"page_no": 28, "bbox": {"l": 136.31875610351562, "t": 208.01806640625, "r": 510.0397033691406, "b": 185.52032470703125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 99]}], "orig": "8. One way to run batch deployment to predict or score is to create and run a batch deployment job.", "text": "8. One way to run batch deployment to predict or score is to create and run a batch deployment job.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/255", "parent": {"cref": "#/groups/17"}, "children": [], "label": "list_item", "prov": [{"page_no": 28, "bbox": {"l": 136.13897705078125, "t": 179.425048828125, "r": 270.1285705566406, "b": 168.968994140625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 30]}], "orig": "9. Provide an input data type:", "text": "9. Provide an input data type:", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/256", "parent": {"cref": "#/groups/17"}, "children": [], "label": "list_item", "prov": [{"page_no": 28, "bbox": {"l": 150.43360900878906, "t": 161.90948486328125, "r": 374.55621337890625, "b": 151.4150390625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 50]}], "orig": "a. Inline data for entering a JSON format payload.", "text": "a. Inline data for entering a JSON format payload.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/257", "parent": {"cref": "#/groups/17"}, "children": [], "label": "list_item", "prov": [{"page_no": 28, "bbox": {"l": 150.56649780273438, "t": 145.2796630859375, "r": 492.3292236328125, "b": 135.2022705078125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 78]}], "orig": "b. Select Data asset , click Select data source , and then specify your asset.", "text": "b. Select Data asset , click Select data source , and then specify your asset.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/258", "parent": {"cref": "#/groups/17"}, "children": [], "label": "list_item", "prov": [{"page_no": 28, "bbox": {"l": 136.80201721191406, "t": 127.86083984375, "r": 471.90997314453125, "b": 117.6864013671875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 75]}], "orig": "10.The output data type can be a new output file or a connected data asset.", "text": "10.The output data type can be a new output file or a connected data asset.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/259", "parent": {"cref": "#/groups/17"}, "children": [], "label": "list_item", "prov": [{"page_no": 28, "bbox": {"l": 136.80201721191406, "t": 111.1422119140625, "r": 546.2705688476562, "b": 89.26384735107422, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 93]}], "orig": "11.A Kubernetes admin can change the maximum number of concurrent batch jobs that can be run.", "text": "11.A Kubernetes admin can change the maximum number of concurrent batch jobs that can be run.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/260", "parent": {"cref": "#/groups/17"}, "children": [], "label": "list_item", "prov": [{"page_no": 28, "bbox": {"l": 136.71322631835938, "t": 82.11285400390625, "r": 531.2200927734375, "b": 59.8948974609375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 98]}], "orig": "12.Get the deployment endpoint URL. For more information, see Getting the deployment endpoint URL.", "text": "12.Get the deployment endpoint URL. For more information, see Getting the deployment endpoint URL.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/261", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 29, "bbox": {"l": 64.4560546875, "t": 721.5007934570312, "r": 124.18352508544922, "b": 708.4141845703125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 7]}], "orig": "Summary", "text": "Summary", "level": 1}, {"self_ref": "#/texts/262", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 29, "bbox": {"l": 135.6417999267578, "t": 695.3091430664062, "r": 532.9658813476562, "b": 660.84716796875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 223]}], "orig": "With this use case, we attempted to demonstrate how to predict, in real time, whether the transaction that is being processed might be a fraudulent transaction or not. By using the method, you have the following advantages:", "text": "With this use case, we attempted to demonstrate how to predict, in real time, whether the transaction that is being processed might be a fraudulent transaction or not. By using the method, you have the following advantages:"}, {"self_ref": "#/texts/263", "parent": {"cref": "#/groups/18"}, "children": [], "label": "list_item", "prov": [{"page_no": 29, "bbox": {"l": 135.6079559326172, "t": 654.12255859375, "r": 374.5103454589844, "b": 643.5902099609375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 63]}], "orig": "GLYPH No Impact to SLAs and the batch process window.", "text": "GLYPH No Impact to SLAs and the batch process window.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/264", "parent": {"cref": "#/groups/18"}, "children": [], "label": "list_item", "prov": [{"page_no": 29, "bbox": {"l": 135.4309844970703, "t": 637.3343505859375, "r": 508.5062255859375, "b": 626.9100952148438, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 97]}], "orig": "GLYPH Proactively stop losses, and lower operational, regulatory, and compliance costs.", "text": "GLYPH Proactively stop losses, and lower operational, regulatory, and compliance costs.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/265", "parent": {"cref": "#/groups/18"}, "children": [], "label": "list_item", "prov": [{"page_no": 29, "bbox": {"l": 135.6011199951172, "t": 620.6939697265625, "r": 533.5338134765625, "b": 598.2996826171875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 110]}], "orig": "GLYPH The solution is using a DL framework like TensorFlow for high-performing, low latency scoring.", "text": "GLYPH The solution is using a DL framework like TensorFlow for high-performing, low latency scoring.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/266", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 29, "bbox": {"l": 64.69216918945312, "t": 571.3740844726562, "r": 482.53704833984375, "b": 554.8306884765625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 55]}], "orig": "Use case 4: Remaining Useful Life of an aircraft engine", "text": "Use case 4: Remaining Useful Life of an aircraft engine", "level": 1}, {"self_ref": "#/texts/267", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 29, "bbox": {"l": 136.27346801757812, "t": 538.683349609375, "r": 545.7247314453125, "b": 516.2785034179688, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 108]}], "orig": "In this use case, we describe how an airline can deploy an AI model for inferencing by using IBMfi zSystems.", "text": "In this use case, we describe how an airline can deploy an AI model for inferencing by using IBMfi zSystems."}, {"self_ref": "#/texts/268", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 29, "bbox": {"l": 136.0217742919922, "t": 504.0582580566406, "r": 547.2705688476562, "b": 458.0208740234375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 339]}], "orig": "Remaining Useful Life (RUL) is the remaining time or cycles that an aircraft engine is likely to operate without any failure. In this case, it is the equivalent of the number of flights remaining for the engine after the last flight. By estimating RUL, the operator can decide on the next maintenance schedule and avoid unplanned downtime.", "text": "Remaining Useful Life (RUL) is the remaining time or cycles that an aircraft engine is likely to operate without any failure. In this case, it is the equivalent of the number of flights remaining for the engine after the last flight. By estimating RUL, the operator can decide on the next maintenance schedule and avoid unplanned downtime."}, {"self_ref": "#/texts/269", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 29, "bbox": {"l": 136.3080596923828, "t": 446.7120056152344, "r": 525.1622924804688, "b": 424.2519226074219, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 114]}], "orig": "Figure 22 provides an overview of the inferencing architecture for the RUL of an aircraft engine when using IBM Z.", "text": "Figure 22 provides an overview of the inferencing architecture for the RUL of an aircraft engine when using IBM Z."}, {"self_ref": "#/texts/270", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 29, "bbox": {"l": 64.39527893066406, "t": 170.691650390625, "r": 244.8438262939453, "b": 161.38043212890625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 43]}], "orig": "Figure 22 Inferencing architecture on IBM Z", "text": "Figure 22 Inferencing architecture on IBM Z"}, {"self_ref": "#/texts/271", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 29, "bbox": {"l": 136.10833740234375, "t": 148.54931640625, "r": 547.2557373046875, "b": 66.6394271850586, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 557]}], "orig": "Because we are looking into data-driven model development, the data set of our target is the run-to-failure data of the engine. We are looking into a supervised learning problem, and we use regression techniques to learn from the data. DL techniques such as Long Short-Term Memory (LSTM) or Gated Recurrent Units (GRU) are our choice because we are looking into a time series data set. TensorFlow or PyTorch frameworks are leveraged to create models. AI governance monitors the data and model drift to maintain the model quality throughout the model's life.", "text": "Because we are looking into data-driven model development, the data set of our target is the run-to-failure data of the engine. We are looking into a supervised learning problem, and we use regression techniques to learn from the data. DL techniques such as Long Short-Term Memory (LSTM) or Gated Recurrent Units (GRU) are our choice because we are looking into a time series data set. TensorFlow or PyTorch frameworks are leveraged to create models. AI governance monitors the data and model drift to maintain the model quality throughout the model's life."}, {"self_ref": "#/texts/272", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 29, "bbox": {"l": 535.5003051757812, "t": 37.801513671875, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "27", "text": "27"}, {"self_ref": "#/texts/273", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 30, "bbox": {"l": 63.85002517700195, "t": 37.60455322265625, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "28", "text": "28"}, {"self_ref": "#/texts/274", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 30, "bbox": {"l": 93.15624237060547, "t": 37.27899169921875, "r": 267.07440185546875, "b": 27.85723876953125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 38]}], "orig": "IBM Cloud Pak for Data on IBM zSystems", "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"self_ref": "#/texts/275", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 30, "bbox": {"l": 135.91494750976562, "t": 721.306396484375, "r": 547.2824096679688, "b": 615.0191040039062, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 754]}], "orig": "Open-source data from NASA was used to build the AI model, which then was deployed on CP4D. CP4D enables the data-scientist's journey from modeling to deployment in a seamless process. Data engineers leverage Db2 to host the data set, which includes the training, testing, and validation of a data set. Since data is hosted on Db2, you can expect low latency while retrieving the data and serve data security needs because Db2 is hosted on the IBM Z platform. Data is fetched by the data refinery to do the necessary pre-processing and data imputations. You can use the programming languages Golang or C++ for real-time predictions, depending on customer needs. For more information about this topic, see \"Use case 3: Clearing and settlement\" on page 25.", "text": "Open-source data from NASA was used to build the AI model, which then was deployed on CP4D. CP4D enables the data-scientist's journey from modeling to deployment in a seamless process. Data engineers leverage Db2 to host the data set, which includes the training, testing, and validation of a data set. Since data is hosted on Db2, you can expect low latency while retrieving the data and serve data security needs because Db2 is hosted on the IBM Z platform. Data is fetched by the data refinery to do the necessary pre-processing and data imputations. You can use the programming languages Golang or C++ for real-time predictions, depending on customer needs. For more information about this topic, see \"Use case 3: Clearing and settlement\" on page 25."}, {"self_ref": "#/texts/276", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 30, "bbox": {"l": 135.84686279296875, "t": 603.3901977539062, "r": 545.1770629882812, "b": 557.2607421875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 289]}], "orig": "Model building is done on Watson Studio, leveraging the high-performance computing hardware on IBM Z. You can train the model anywhere (on your own hardware or the cloud) and bring the model directly into CP4D, which provides data scientists with the flexibility of implementation choices.", "text": "Model building is done on Watson Studio, leveraging the high-performance computing hardware on IBM Z. You can train the model anywhere (on your own hardware or the cloud) and bring the model directly into CP4D, which provides data scientists with the flexibility of implementation choices."}, {"self_ref": "#/texts/277", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 30, "bbox": {"l": 135.91741943359375, "t": 545.34765625, "r": 547.212890625, "b": 510.9693298339844, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 249]}], "orig": "We used LSTM to build the AI model and used the training data. The model was continuously evaluated to model convergence. The final model is tested with the test data, which is never exposed at the time of training to make sure that the model works.", "text": "We used LSTM to build the AI model and used the training data. The model was continuously evaluated to model convergence. The final model is tested with the test data, which is never exposed at the time of training to make sure that the model works."}, {"self_ref": "#/texts/278", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 30, "bbox": {"l": 135.88528442382812, "t": 499.3803405761719, "r": 547.3082885742188, "b": 452.83648681640625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 304]}], "orig": "This model is deployed on WML on CP4D and runs on IBM Z. If required, the trained model can be converted to the Open Neural Network Exchange (ONNX) format before deployment. Based on project requirements, IBM Z supports high-throughput, low latency inference requirements by leveraging an AI accelerator.", "text": "This model is deployed on WML on CP4D and runs on IBM Z. If required, the trained model can be converted to the Open Neural Network Exchange (ONNX) format before deployment. Based on project requirements, IBM Z supports high-throughput, low latency inference requirements by leveraging an AI accelerator."}, {"self_ref": "#/texts/279", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 30, "bbox": {"l": 135.9976348876953, "t": 441.36517333984375, "r": 547.282470703125, "b": 371.1309814453125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 495]}], "orig": "For decision-making about an aircraft engine's life, it is important to be able to explain the model predictions from end to end. This explainability may be global or local. Global explainability enables decision-makers to evaluate the trained model in general from the subject matter expert (SME) point of view. Local explainability enables the operator to validate the reasons behind the present inference and relate it to the past data points, which are an indicative cause of the prediction.", "text": "For decision-making about an aircraft engine's life, it is important to be able to explain the model predictions from end to end. This explainability may be global or local. Global explainability enables decision-makers to evaluate the trained model in general from the subject matter expert (SME) point of view. Local explainability enables the operator to validate the reasons behind the present inference and relate it to the past data points, which are an indicative cause of the prediction."}, {"self_ref": "#/texts/280", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 30, "bbox": {"l": 135.7574462890625, "t": 359.3186950683594, "r": 547.32421875, "b": 313.1587829589844, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 273]}], "orig": "The AI governance components such as IBM OpenScale on CP4D support explainability and manages the drifts in data and concept. OpenPages and AI FactSheet together can alert the stakeholders about important events through a dashboard and allow course correction at any point.", "text": "The AI governance components such as IBM OpenScale on CP4D support explainability and manages the drifts in data and concept. OpenPages and AI FactSheet together can alert the stakeholders about important events through a dashboard and allow course correction at any point."}, {"self_ref": "#/texts/281", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 30, "bbox": {"l": 136.12620544433594, "t": 301.5126953125, "r": 547.2745361328125, "b": 254.95623779296875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 318]}], "orig": "Client-side applications can invoke a REST apiserver that handles some preprocessing of an incoming request before initiating the inference pipeline. Efficiencies might be needed in real-time applications, and inference response time can be reduced by adopting low-level programming while components are communicating.", "text": "Client-side applications can invoke a REST apiserver that handles some preprocessing of an incoming request before initiating the inference pipeline. Efficiencies might be needed in real-time applications, and inference response time can be reduced by adopting low-level programming while components are communicating."}, {"self_ref": "#/texts/282", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 30, "bbox": {"l": 136.40904235839844, "t": 243.3863525390625, "r": 521.204345703125, "b": 221.0084228515625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 121]}], "orig": "Figure 23 on page 29 provides a more in-depth view of the architecture of an AI-based predictive maintenance application.", "text": "Figure 23 on page 29 provides a more in-depth view of the architecture of an AI-based predictive maintenance application."}, {"self_ref": "#/texts/283", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 31, "bbox": {"l": 64.29751586914062, "t": 349.6379699707031, "r": 216.1868438720703, "b": 340.3518371582031, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 37]}], "orig": "Figure 23 In-depth architectural view", "text": "Figure 23 In-depth architectural view"}, {"self_ref": "#/texts/284", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 31, "bbox": {"l": 136.26695251464844, "t": 327.9122314453125, "r": 501.76422119140625, "b": 306.0186462402344, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 106]}], "orig": "In summary, consider the following points while developing an AI-based predictive maintenance application:", "text": "In summary, consider the following points while developing an AI-based predictive maintenance application:"}, {"self_ref": "#/texts/285", "parent": {"cref": "#/groups/19"}, "children": [], "label": "list_item", "prov": [{"page_no": 31, "bbox": {"l": 135.49343872070312, "t": 299.4659423828125, "r": 547.3203125, "b": 265.08624267578125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 204]}], "orig": "GLYPH CP4D offers a Python run time to build a custom solution stack, but also supports different components like Watson Studio, WML, Db2, Data Refinery, OpenScale, AI Factsheets, and OpenPages.", "text": "GLYPH CP4D offers a Python run time to build a custom solution stack, but also supports different components like Watson Studio, WML, Db2, Data Refinery, OpenScale, AI Factsheets, and OpenPages.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/286", "parent": {"cref": "#/groups/19"}, "children": [], "label": "list_item", "prov": [{"page_no": 31, "bbox": {"l": 135.57691955566406, "t": 257.9407958984375, "r": 491.34027099609375, "b": 247.70538330078125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 96]}], "orig": "GLYPH The trustworthiness of the predicted output is important for critical use cases.", "text": "GLYPH The trustworthiness of the predicted output is important for critical use cases.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/287", "parent": {"cref": "#/groups/19"}, "children": [], "label": "list_item", "prov": [{"page_no": 31, "bbox": {"l": 135.67471313476562, "t": 241.30987548828125, "r": 534.4998779296875, "b": 219.09210205078125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 118]}], "orig": "GLYPH IBM Z provides high data security and low latency requirements at scale for the critical applications.", "text": "GLYPH IBM Z provides high data security and low latency requirements at scale for the critical applications.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/288", "parent": {"cref": "#/groups/19"}, "children": [], "label": "list_item", "prov": [{"page_no": 31, "bbox": {"l": 135.61285400390625, "t": 212.05743408203125, "r": 547.2156982421875, "b": 190.240234375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 141]}], "orig": "GLYPH A data scientist can choose to train the model and deploy it on CP4D seamlessly with the latest tech stack that is available.", "text": "GLYPH A data scientist can choose to train the model and deploy it on CP4D seamlessly with the latest tech stack that is available.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/289", "parent": {"cref": "#/groups/19"}, "children": [], "label": "list_item", "prov": [{"page_no": 31, "bbox": {"l": 135.52349853515625, "t": 183.47650146484375, "r": 504.0291748046875, "b": 160.86175537109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 128]}], "orig": "GLYPH The AIOps and MLOps supported by CP4D to track AI model and data lifecycle throughout the application lifecycle.", "text": "GLYPH The AIOps and MLOps supported by CP4D to track AI model and data lifecycle throughout the application lifecycle.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/290", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 31, "bbox": {"l": 535.4804077148438, "t": 37.7464599609375, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "29", "text": "29"}, {"self_ref": "#/texts/291", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 32, "bbox": {"l": 64.292236328125, "t": 721.9068603515625, "r": 542.2593994140625, "b": 686.99609375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 83]}], "orig": "Use case 5: AI-powered video analytics on an infant's motions for health prediction", "text": "Use case 5: AI-powered video analytics on an infant's motions for health prediction", "level": 1}, {"self_ref": "#/texts/292", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 32, "bbox": {"l": 136.04208374023438, "t": 670.8692016601562, "r": 546.6989135742188, "b": 612.2630004882812, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 395]}], "orig": "Each year, approximately 5 million newborns worldwide are suffering from a neuro-developmental disorder. Due to the lack of early diagnoses and intervention, many infants are disabled and abandoned, especially in countries with limited numbers of pediatricians with extensive experience in neuro-developmental disorders. This situation is a conundrum that plagues many families around the world.", "text": "Each year, approximately 5 million newborns worldwide are suffering from a neuro-developmental disorder. Due to the lack of early diagnoses and intervention, many infants are disabled and abandoned, especially in countries with limited numbers of pediatricians with extensive experience in neuro-developmental disorders. This situation is a conundrum that plagues many families around the world."}, {"self_ref": "#/texts/293", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 32, "bbox": {"l": 135.93234252929688, "t": 600.051025390625, "r": 547.3121948242188, "b": 553.6912231445312, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 280]}], "orig": "Infant motion analysis plays critical importance to understanding and comprehending healthy childhood development. In infants, monitoring their poses provides information about their health that can lead to a better prediction of early developmental risk assessment and diagnosis.", "text": "Infant motion analysis plays critical importance to understanding and comprehending healthy childhood development. In infants, monitoring their poses provides information about their health that can lead to a better prediction of early developmental risk assessment and diagnosis."}, {"self_ref": "#/texts/294", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 32, "bbox": {"l": 136.01303100585938, "t": 542.4129638671875, "r": 533.3443603515625, "b": 508.30059814453125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 264]}], "orig": "Adults use different techniques and methods to express their feelings (like sick, happy, stressed, or hungry), but this case is usually different for infants who cannot express their feelings. Based on the baby movements, AI can predict their expression or health.", "text": "Adults use different techniques and methods to express their feelings (like sick, happy, stressed, or hungry), but this case is usually different for infants who cannot express their feelings. Based on the baby movements, AI can predict their expression or health."}, {"self_ref": "#/texts/295", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 32, "bbox": {"l": 135.85812377929688, "t": 496.4077453613281, "r": 535.1302490234375, "b": 426.2819519042969, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 442]}], "orig": "In this use case, we examine how AI-powered video analytics can assist new parents and hospitals by addressing pose-based real-time body movements of the infants (such as arching back, head banging, kicking legs, rubbing eyes, stretching, and sucking fingers). During the initial months of a baby's life, spontaneous movements might indicate later developmental disorders, such as cerebral palsy, Rett syndrome, and autism spectrum disorders.", "text": "In this use case, we examine how AI-powered video analytics can assist new parents and hospitals by addressing pose-based real-time body movements of the infants (such as arching back, head banging, kicking legs, rubbing eyes, stretching, and sucking fingers). During the initial months of a baby's life, spontaneous movements might indicate later developmental disorders, such as cerebral palsy, Rett syndrome, and autism spectrum disorders."}, {"self_ref": "#/texts/296", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 32, "bbox": {"l": 64.58500671386719, "t": 406.79620361328125, "r": 186.71859741210938, "b": 393.4929504394531, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 19]}], "orig": "Industry challenges", "text": "Industry challenges", "level": 1}, {"self_ref": "#/texts/297", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 32, "bbox": {"l": 135.78916931152344, "t": 380.6932067871094, "r": 547.2576293945312, "b": 334.298828125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 323]}], "orig": "There are video surveillance systems that are installed for monitoring an infant's movement in many hospitals or homes so that any problem can be witnessed and potentially even stopped before they take place. These systems require much manual work to monitor the real-stream videos and intervene when a problem is detected.", "text": "There are video surveillance systems that are installed for monitoring an infant's movement in many hospitals or homes so that any problem can be witnessed and potentially even stopped before they take place. These systems require much manual work to monitor the real-stream videos and intervene when a problem is detected."}, {"self_ref": "#/texts/298", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 32, "bbox": {"l": 135.95849609375, "t": 322.5081787109375, "r": 547.2775268554688, "b": 264.06689453125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 391]}], "orig": "There is a certain amount of trust that you must place on the person who monitors a surveillance system to ensure that the job is being done effectively and efficiently, and that the surveillance system is being vigilantly watched. Because of the dependency on these manual efforts, you need something \"smart\" that monitors constantly the surveillance system and detect problems effectively.", "text": "There is a certain amount of trust that you must place on the person who monitors a surveillance system to ensure that the job is being done effectively and efficiently, and that the surveillance system is being vigilantly watched. Because of the dependency on these manual efforts, you need something \"smart\" that monitors constantly the surveillance system and detect problems effectively."}, {"self_ref": "#/texts/299", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 32, "bbox": {"l": 135.81661987304688, "t": 251.96868896484375, "r": 547.2385864257812, "b": 218.02496337890625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 248]}], "orig": "AI is shaping the controls of surveillance that can map and track occurrences with self-learning abilities, AI can improve on human operations and analyze video footage in real time to alert the hospitals or parents if any anomalies are identified.", "text": "AI is shaping the controls of surveillance that can map and track occurrences with self-learning abilities, AI can improve on human operations and analyze video footage in real time to alert the hospitals or parents if any anomalies are identified."}, {"self_ref": "#/texts/300", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 32, "bbox": {"l": 136.16104125976562, "t": 205.88714599609375, "r": 541.7665405273438, "b": 183.468017578125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 173]}], "orig": "Video processing a stream of data from surveillance systems and then performing advance analytics and detecting anomalies quickly is a significant challenge in the industry.", "text": "Video processing a stream of data from surveillance systems and then performing advance analytics and detecting anomalies quickly is a significant challenge in the industry."}, {"self_ref": "#/texts/301", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 32, "bbox": {"l": 64.49705505371094, "t": 164.32861328125, "r": 278.4443054199219, "b": 150.97406005859375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 36]}], "orig": "Infant motion analytics in real time", "text": "Infant motion analytics in real time", "level": 1}, {"self_ref": "#/texts/302", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 32, "bbox": {"l": 135.9631805419922, "t": 137.95867919921875, "r": 547.2257080078125, "b": 67.82470703125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 519]}], "orig": "AI is the current \"market trend evolution\" in video analytics and advancing the decision-making capabilities of the human mind. DL-based computer vision AI techniques are being widely adopted by various industries to solve real-time problems. These techniques improve the detection and prediction accuracy without increasing the hardware cost exponentially. For users, AI greatly reduces the workload of the monitoring staff and provides benefits by detecting unusual incidents and solving many video forensic problems.", "text": "AI is the current \"market trend evolution\" in video analytics and advancing the decision-making capabilities of the human mind. DL-based computer vision AI techniques are being widely adopted by various industries to solve real-time problems. These techniques improve the detection and prediction accuracy without increasing the hardware cost exponentially. For users, AI greatly reduces the workload of the monitoring staff and provides benefits by detecting unusual incidents and solving many video forensic problems."}, {"self_ref": "#/texts/303", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 32, "bbox": {"l": 64.11967468261719, "t": 37.5791015625, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "30", "text": "30"}, {"self_ref": "#/texts/304", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 32, "bbox": {"l": 93.19580841064453, "t": 37.26409912109375, "r": 267.07440185546875, "b": 27.85504150390625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 38]}], "orig": "IBM Cloud Pak for Data on IBM zSystems", "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"self_ref": "#/texts/305", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 33, "bbox": {"l": 135.8349609375, "t": 721.387451171875, "r": 540.1576538085938, "b": 687.23095703125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 258]}], "orig": "CP4D was used to build and deploy the AI-powered video analytics on infant's motion for health prediction use case on IBM Z. IBM Z with AI accelerator enables faster inference for detecting face and body movements and performing angle analytics in real time.", "text": "CP4D was used to build and deploy the AI-powered video analytics on infant's motion for health prediction use case on IBM Z. IBM Z with AI accelerator enables faster inference for detecting face and body movements and performing angle analytics in real time."}, {"self_ref": "#/texts/306", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 33, "bbox": {"l": 136.0093536376953, "t": 675.2120971679688, "r": 542.9444580078125, "b": 629.25927734375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 288]}], "orig": "Figure 24 shows an architectural diagram about how to design and develop an AI model for real-time body pose detection on IBM Z. A deep convolutional neural network architecture was trained on the task of infant pose estimation on the custom data set by leveraging IBM Cloud Pak for Data.", "text": "Figure 24 shows an architectural diagram about how to design and develop an AI model for real-time body pose detection on IBM Z. A deep convolutional neural network architecture was trained on the task of infant pose estimation on the custom data set by leveraging IBM Cloud Pak for Data."}, {"self_ref": "#/texts/307", "parent": {"cref": "#/body"}, "children": [], "label": "caption", "prov": [{"page_no": 33, "bbox": {"l": 64.36393737792969, "t": 378.4368591308594, "r": 281.63330078125, "b": 369.383544921875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 53]}], "orig": "Figure 24 Architecture for AI-powered video analytics", "text": "Figure 24 Architecture for AI-powered video analytics"}, {"self_ref": "#/texts/308", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 33, "bbox": {"l": 135.9974822998047, "t": 356.6090087890625, "r": 547.311279296875, "b": 274.28826904296875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 575]}], "orig": "Live camera feeds or recorded videos of an infant's movement are the inputs for a pose detection model. This video streaming data was stored in IBM Cloudfi Object Storage for image processing. Video data must be transformed into frames so that the infant's body poses can be detected. These post-estimation components of the pipeline predict the location of all 17-person key points with 3 degrees of freedom each (x, y location and visibility) plus two virtual alignment key points. This approach also embraces a compute-intensive heat map prediction of infant body posture.", "text": "Live camera feeds or recorded videos of an infant's movement are the inputs for a pose detection model. This video streaming data was stored in IBM Cloudfi Object Storage for image processing. Video data must be transformed into frames so that the infant's body poses can be detected. These post-estimation components of the pipeline predict the location of all 17-person key points with 3 degrees of freedom each (x, y location and visibility) plus two virtual alignment key points. This approach also embraces a compute-intensive heat map prediction of infant body posture."}, {"self_ref": "#/texts/309", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 33, "bbox": {"l": 135.75706481933594, "t": 262.49298095703125, "r": 539.9171752929688, "b": 192.76055908203125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 454]}], "orig": "When changes in body posture or movement happen, analytics can be performed, and a threshold can be set for the angle of the body and posture movements. An analysis can be performed on movement that is based on that threshold to help to predict an infant's health index in the output video stream by leveraging the IBM z16 on-chip AI acceleration, which provides an execution speed in real time on an edge device, which cannot be achieved by other means.", "text": "When changes in body posture or movement happen, analytics can be performed, and a threshold can be set for the angle of the body and posture movements. An analysis can be performed on movement that is based on that threshold to help to predict an infant's health index in the output video stream by leveraging the IBM z16 on-chip AI acceleration, which provides an execution speed in real time on an edge device, which cannot be achieved by other means."}, {"self_ref": "#/texts/310", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 33, "bbox": {"l": 135.83775329589844, "t": 180.63201904296875, "r": 437.95953369140625, "b": 170.34564208984375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 68]}], "orig": "We can leverage the following AI technology stack for this use case:", "text": "We can leverage the following AI technology stack for this use case:"}, {"self_ref": "#/texts/311", "parent": {"cref": "#/groups/20"}, "children": [], "label": "list_item", "prov": [{"page_no": 33, "bbox": {"l": 135.53660583496094, "t": 164.04058837890625, "r": 546.6869506835938, "b": 141.7152099609375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 117]}], "orig": "GLYPH Convolutional neural network: Build an artificial neural network model on video streaming and images.", "text": "GLYPH Convolutional neural network: Build an artificial neural network model on video streaming and images.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/312", "parent": {"cref": "#/groups/20"}, "children": [], "label": "list_item", "prov": [{"page_no": 33, "bbox": {"l": 135.43955993652344, "t": 134.6781005859375, "r": 455.69329833984375, "b": 124.72181701660156, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 80]}], "orig": "GLYPH TensorFlow: A DL back-end framework that is based on TensorFlow.", "text": "GLYPH TensorFlow: A DL back-end framework that is based on TensorFlow.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/313", "parent": {"cref": "#/groups/20"}, "children": [], "label": "list_item", "prov": [{"page_no": 33, "bbox": {"l": 135.51890563964844, "t": 118.01629638671875, "r": 543.4529418945312, "b": 95.74219512939453, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 120]}], "orig": "GLYPH Mediapipe: A library that helps with video streaming processing and prediction of human pose estimation.", "text": "GLYPH Mediapipe: A library that helps with video streaming processing and prediction of human pose estimation.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/314", "parent": {"cref": "#/groups/20"}, "children": [], "label": "list_item", "prov": [{"page_no": 33, "bbox": {"l": 135.43861389160156, "t": 88.65191650390625, "r": 516.3308715820312, "b": 78.37835693359375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 96]}], "orig": "GLYPH OpenCV: A real-time computer vision library that helps perform image processing.", "text": "GLYPH OpenCV: A real-time computer vision library that helps perform image processing.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/315", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 33, "bbox": {"l": 535.5228881835938, "t": 37.67767333984375, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "31", "text": "31"}, {"self_ref": "#/texts/316", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 34, "bbox": {"l": 135.99948120117188, "t": 721.2702026367188, "r": 542.3601684570312, "b": 687.2371826171875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 238]}], "orig": "WML was used for deployment of the pose detection model and generated notifications to users with web and mobile applications, and it integrates with Fitbit for push notifications so that hospitals and parents can take preventive actions.", "text": "WML was used for deployment of the pose detection model and generated notifications to users with web and mobile applications, and it integrates with Fitbit for push notifications so that hospitals and parents can take preventive actions."}, {"self_ref": "#/texts/317", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 34, "bbox": {"l": 64.3565673828125, "t": 659.8582763671875, "r": 223.8605499267578, "b": 644.0363159179688, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 20]}], "orig": "Additional resources", "text": "Additional resources", "level": 1}, {"self_ref": "#/texts/318", "parent": {"cref": "#/groups/21"}, "children": [], "label": "list_item", "prov": [{"page_no": 34, "bbox": {"l": 135.6084747314453, "t": 627.3983154296875, "r": 547.2325439453125, "b": 605.2584838867188, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 149]}], "orig": "GLYPH The Cloud Pak for Data 4.5 on IBM Z Overview Demo video provides an overview of some of the more important features of CP4D on IBM Z.", "text": "GLYPH The Cloud Pak for Data 4.5 on IBM Z Overview Demo video provides an overview of some of the more important features of CP4D on IBM Z.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/319", "parent": {"cref": "#/groups/21"}, "children": [], "label": "list_item", "prov": [{"page_no": 34, "bbox": {"l": 135.61322021484375, "t": 598.4909057617188, "r": 300.0693054199219, "b": 588.2786865234375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 49]}], "orig": "GLYPH IBM Cloud Pak for Data Tutorials.", "text": "GLYPH IBM Cloud Pak for Data Tutorials.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/320", "parent": {"cref": "#/groups/21"}, "children": [], "label": "list_item", "prov": [{"page_no": 34, "bbox": {"l": 135.7628173828125, "t": 581.2073974609375, "r": 518.558837890625, "b": 559.299072265625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 149]}], "orig": "GLYPH Here are some additional use cases that use the data science frameworks that are available as part of CP4D on IBM Z and IBM LinuxONE:", "text": "GLYPH Here are some additional use cases that use the data science frameworks that are available as part of CP4D on IBM Z and IBM LinuxONE:", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/321", "parent": {"cref": "#/groups/21"}, "children": [], "label": "list_item", "prov": [{"page_no": 34, "bbox": {"l": 151.3540802001953, "t": 551.8923950195312, "r": 527.840576171875, "b": 530.036376953125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 127]}], "orig": "-Payment Card Fraud Detection by using TensorFlow on CP4D on IBM Z and IBM LinuxONE is a payment card fraud detection use case.", "text": "-Payment Card Fraud Detection by using TensorFlow on CP4D on IBM Z and IBM LinuxONE is a payment card fraud detection use case.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/322", "parent": {"cref": "#/groups/21"}, "children": [], "label": "list_item", "prov": [{"page_no": 34, "bbox": {"l": 151.2523193359375, "t": 523.225341796875, "r": 539.9617919921875, "b": 501.28009033203125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 152]}], "orig": "-Fashion-MNIST clothing classification with PyTorch on Cloud Pak for Data on IBM Z and IBM LinuxONE is a Fashion-MNIST clothing classification use case.", "text": "-Fashion-MNIST clothing classification with PyTorch on Cloud Pak for Data on IBM Z and IBM LinuxONE is a Fashion-MNIST clothing classification use case.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/323", "parent": {"cref": "#/groups/21"}, "children": [], "label": "list_item", "prov": [{"page_no": 34, "bbox": {"l": 151.19593811035156, "t": 494.5711669921875, "r": 547.2676391601562, "b": 448.30084228515625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 319]}], "orig": "-Payment Card Fraud Prevention by using Snap ML on IBM Cloud Pak for Data on Red Hat OpenShift on a virtual machine on IBM Z and IBM LinuxONE, which leverage the z16 integrated AI accelerator describes a use case that uses Snap Machine Learning in Cloud Pak for Data on IBM Z and IBM LinuxONE. It is a Snap ML use case.", "text": "-Payment Card Fraud Prevention by using Snap ML on IBM Cloud Pak for Data on Red Hat OpenShift on a virtual machine on IBM Z and IBM LinuxONE, which leverage the z16 integrated AI accelerator describes a use case that uses Snap Machine Learning in Cloud Pak for Data on IBM Z and IBM LinuxONE. It is a Snap ML use case.", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/324", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 34, "bbox": {"l": 165.18856811523438, "t": 441.26715087890625, "r": 547.1928100585938, "b": 419.2614440917969, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 131]}], "orig": "A companion video can be found at Credit Card Fraud Detection by using Snap ML on IBM Cloud Pak for Data on IBM Z and IBM LinuxONE.", "text": "A companion video can be found at Credit Card Fraud Detection by using Snap ML on IBM Cloud Pak for Data on IBM Z and IBM LinuxONE."}, {"self_ref": "#/texts/325", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 34, "bbox": {"l": 64.41288757324219, "t": 391.7469787597656, "r": 137.74366760253906, "b": 375.7332763671875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 7]}], "orig": "Summary", "text": "Summary", "level": 1}, {"self_ref": "#/texts/326", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 34, "bbox": {"l": 135.86285400390625, "t": 359.3092956542969, "r": 547.1648559570312, "b": 253.18939208984375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 734]}], "orig": "This IBM Redbooksfi publication presented an overview of how IBM Cloud Pak for Data on IBM Z can modernize your data infrastructure; develop and deploy ML and AI models; and instantiate highly efficient analytics deployment on IBM LinuxONE. This publication demonstrated these tasks by guiding the reader through five common use cases where CP4D on IBM Z and IBM LinuxONE uses the different features that are supported on the platform, and showing how the associated features can help an enterprise to build AI and ML models with core transactional data, which results in a highly efficient analytics deployment that minimizes latency, cost inefficiencies, and potential security exposures that are connected with data transportation.", "text": "This IBM Redbooksfi publication presented an overview of how IBM Cloud Pak for Data on IBM Z can modernize your data infrastructure; develop and deploy ML and AI models; and instantiate highly efficient analytics deployment on IBM LinuxONE. This publication demonstrated these tasks by guiding the reader through five common use cases where CP4D on IBM Z and IBM LinuxONE uses the different features that are supported on the platform, and showing how the associated features can help an enterprise to build AI and ML models with core transactional data, which results in a highly efficient analytics deployment that minimizes latency, cost inefficiencies, and potential security exposures that are connected with data transportation."}, {"self_ref": "#/texts/327", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 34, "bbox": {"l": 64.06120300292969, "t": 233.67156982421875, "r": 114.58550262451172, "b": 220.6373748779297, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 7]}], "orig": "Authors", "text": "Authors", "level": 1}, {"self_ref": "#/texts/328", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 34, "bbox": {"l": 64.16203308105469, "t": 37.50299072265625, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "32", "text": "32"}, {"self_ref": "#/texts/329", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 34, "bbox": {"l": 93.21607208251953, "t": 37.19580078125, "r": 267.07440185546875, "b": 27.91644287109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 38]}], "orig": "IBM Cloud Pak for Data on IBM zSystems", "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"self_ref": "#/texts/330", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 34, "bbox": {"l": 135.81004333496094, "t": 207.376953125, "r": 538.573486328125, "b": 185.25857543945312, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 112]}], "orig": "This publication was produced by a team of specialists from around the world working with the IBM Redbooks team:", "text": "This publication was produced by a team of specialists from around the world working with the IBM Redbooks team:"}, {"self_ref": "#/texts/331", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 34, "bbox": {"l": 135.75830078125, "t": 173.5089111328125, "r": 547.2435913085938, "b": 115.14935302734375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 393]}], "orig": "Jasmeet Bhatia is an AI on IBM Z Product Manager who supports CP4D on IBM Z. She has 2.5 years of combined experience as a data scientist and a product manager. Jasmeet lives in San Francisco, California and holds a Bachelor of Arts degree in Data Science. She is working on her Master of Science degree in Data Science. Her area of expertise includes AI, data science, and product management.", "text": "Jasmeet Bhatia is an AI on IBM Z Product Manager who supports CP4D on IBM Z. She has 2.5 years of combined experience as a data scientist and a product manager. Jasmeet lives in San Francisco, California and holds a Bachelor of Arts degree in Data Science. She is working on her Master of Science degree in Data Science. Her area of expertise includes AI, data science, and product management."}, {"self_ref": "#/texts/332", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 35, "bbox": {"l": 136.0478515625, "t": 721.465576171875, "r": 546.0402221679688, "b": 651.166748046875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 505]}], "orig": "Ravi Gummadi is a Technical Leader for CP4D on Linux on IBM Z and IBM LinuxONE in India. He has 18+ years of experience in the design and development of enterprise software for various platforms, including IBM Z and IBM LinuxONE. He holds a master's degree in computer science and engineering from the Indian Institute of Technology Madras (IIT Madras). His areas of expertise include compilers, virtualization, big data analytics, containers, data, and AI, with a special focus on open-source ecosystems.", "text": "Ravi Gummadi is a Technical Leader for CP4D on Linux on IBM Z and IBM LinuxONE in India. He has 18+ years of experience in the design and development of enterprise software for various platforms, including IBM Z and IBM LinuxONE. He holds a master's degree in computer science and engineering from the Indian Institute of Technology Madras (IIT Madras). His areas of expertise include compilers, virtualization, big data analytics, containers, data, and AI, with a special focus on open-source ecosystems."}, {"self_ref": "#/texts/333", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 35, "bbox": {"l": 135.68675231933594, "t": 639.4677734375, "r": 546.8887329101562, "b": 569.0224609375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 501]}], "orig": "Chandra Shekhar Reddy Potula is a Lead AI on zSystems team Architect for Linux on IBM Z and LinuxONE in India. He has 18+ years of experience in the design and development of enterprise software and firmware for various platforms, including IBM Z and LinuxONE. He holds a degree in computer science of engineering from Jawaharlal Nehru Technological University (JNTU). His areas of expertise include networking, virtualization, containers, data, and AI, with a special focus on open-source ecosystems.", "text": "Chandra Shekhar Reddy Potula is a Lead AI on zSystems team Architect for Linux on IBM Z and LinuxONE in India. He has 18+ years of experience in the design and development of enterprise software and firmware for various platforms, including IBM Z and LinuxONE. He holds a degree in computer science of engineering from Jawaharlal Nehru Technological University (JNTU). His areas of expertise include networking, virtualization, containers, data, and AI, with a special focus on open-source ecosystems."}, {"self_ref": "#/texts/334", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 35, "bbox": {"l": 135.7921600341797, "t": 557.3799438476562, "r": 547.256103515625, "b": 438.8973693847656, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 828]}], "orig": "Srirama Sharma is a Lead Technical Architect for IBM Cloud Pak, IBM Instanafi, IBM Turbonomicfi, and Red Hat Advanced Cluster Management for Kubernetes (RHACM) on IBM Z and LinuxONE. He has 18+ years of experience in UNIX and Linux application and device driver development. He designs ISV solutions on IBM Systems and IBM Blockchainfi. He also works on cloud-native adoption of enterprise solutions on IBM Z and LinuxONE. Srirama holds a Bachelor of Engineering degree in computer science from Visvesvaraya Technological University (VTU). He lives in Bangalore, Karnataka. His areas of expertise include UNIX and Linux systems programming, virtualization, performance benchmarking of Financial Services Sector (FSS) industry solutions, open-source ecosystems, server infrastructure, and cloud-native adoption and modernization.", "text": "Srirama Sharma is a Lead Technical Architect for IBM Cloud Pak, IBM Instanafi, IBM Turbonomicfi, and Red Hat Advanced Cluster Management for Kubernetes (RHACM) on IBM Z and LinuxONE. He has 18+ years of experience in UNIX and Linux application and device driver development. He designs ISV solutions on IBM Systems and IBM Blockchainfi. He also works on cloud-native adoption of enterprise solutions on IBM Z and LinuxONE. Srirama holds a Bachelor of Engineering degree in computer science from Visvesvaraya Technological University (VTU). He lives in Bangalore, Karnataka. His areas of expertise include UNIX and Linux systems programming, virtualization, performance benchmarking of Financial Services Sector (FSS) industry solutions, open-source ecosystems, server infrastructure, and cloud-native adoption and modernization."}, {"self_ref": "#/texts/335", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 35, "bbox": {"l": 135.95065307617188, "t": 427.2441711425781, "r": 432.8396301269531, "b": 417.0667419433594, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 71]}], "orig": "Thanks to the following people for their contributions to this project:", "text": "Thanks to the following people for their contributions to this project:"}, {"self_ref": "#/texts/336", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 35, "bbox": {"l": 136.16671752929688, "t": 405.195556640625, "r": 314.3034973144531, "b": 383.0773620605469, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 65]}], "orig": "Lydia Parziale, Project Manager IBM Redbooks, Poughkeepsie Center", "text": "Lydia Parziale, Project Manager IBM Redbooks, Poughkeepsie Center"}, {"self_ref": "#/texts/337", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 35, "bbox": {"l": 136.28025817871094, "t": 371.7374572753906, "r": 364.17230224609375, "b": 349.3034973144531, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "Shin Kelly Yang, AI on IBM Z Product Management IBM US", "text": "Shin Kelly Yang, AI on IBM Z Product Management IBM US"}, {"self_ref": "#/texts/338", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 35, "bbox": {"l": 135.87332153320312, "t": 337.4849853515625, "r": 537.7623291015625, "b": 315.28411865234375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 87]}], "orig": "Tom Ramey, Anna Shugol, Andrew Sica, Jonathan Sloan, Elpida Tzortzatos, Meeta Vouk, IBM", "text": "Tom Ramey, Anna Shugol, Andrew Sica, Jonathan Sloan, Elpida Tzortzatos, Meeta Vouk, IBM"}, {"self_ref": "#/texts/339", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 35, "bbox": {"l": 64.67491912841797, "t": 295.62060546875, "r": 349.12164306640625, "b": 282.3042297363281, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 43]}], "orig": "Now you can become a published author, too!", "text": "Now you can become a published author, too!", "level": 1}, {"self_ref": "#/texts/340", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 35, "bbox": {"l": 135.876953125, "t": 269.32843017578125, "r": 547.3480224609375, "b": 187.2394561767578, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 559]}], "orig": "Here's an opportunity to spotlight your skills, grow your career, and become a published author-all at the same time! Join an IBM Redbooks residency project and help write a book in your area of expertise, while honing your experience using leading-edge technologies. Your efforts will help to increase product acceptance and customer satisfaction, as you expand your network of technical contacts and relationships. Residencies run from two to six weeks in length, and you can participate either in person or as a remote resident working from your home base.", "text": "Here's an opportunity to spotlight your skills, grow your career, and become a published author-all at the same time! Join an IBM Redbooks residency project and help write a book in your area of expertise, while honing your experience using leading-edge technologies. Your efforts will help to increase product acceptance and customer satisfaction, as you expand your network of technical contacts and relationships. Residencies run from two to six weeks in length, and you can participate either in person or as a remote resident working from your home base."}, {"self_ref": "#/texts/341", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 35, "bbox": {"l": 136.39222717285156, "t": 175.36004638671875, "r": 547.3431396484375, "b": 165.0889892578125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 91]}], "orig": "Find out more about the residency program, browse the residency index, and apply online at:", "text": "Find out more about the residency program, browse the residency index, and apply online at:"}, {"self_ref": "#/texts/342", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 35, "bbox": {"l": 136.80099487304688, "t": 157.7542724609375, "r": 301.6788024902344, "b": 148.4791259765625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 34]}], "orig": "ibm.com /redbooks/residencies.html", "text": "ibm.com /redbooks/residencies.html"}, {"self_ref": "#/texts/343", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 35, "bbox": {"l": 535.5333251953125, "t": 37.59283447265625, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "33", "text": "33"}, {"self_ref": "#/texts/344", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 36, "bbox": {"l": 64.4889907836914, "t": 721.6314086914062, "r": 270.4855651855469, "b": 708.357421875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 30]}], "orig": "Stay connected to IBM Redbooks", "text": "Stay connected to IBM Redbooks", "level": 1}, {"self_ref": "#/texts/345", "parent": {"cref": "#/groups/22"}, "children": [], "label": "list_item", "prov": [{"page_no": 36, "bbox": {"l": 135.56192016601562, "t": 695.48486328125, "r": 241.2664794921875, "b": 685.2982788085938, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 36]}], "orig": "GLYPH Find us on LinkedIn:", "text": "GLYPH Find us on LinkedIn:", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/346", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 36, "bbox": {"l": 150.71234130859375, "t": 677.8062744140625, "r": 391.0767822265625, "b": 668.0650024414062, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 48]}], "orig": "http://www.linkedin.com/groups?home=&gid=2130806", "text": "http://www.linkedin.com/groups?home=&gid=2130806"}, {"self_ref": "#/texts/347", "parent": {"cref": "#/groups/23"}, "children": [], "label": "list_item", "prov": [{"page_no": 36, "bbox": {"l": 135.51414489746094, "t": 661.1776733398438, "r": 546.8383178710938, "b": 639.2791137695312, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 118]}], "orig": "GLYPH Explore new Redbooks publications, residencies, and workshops with the IBM Redbooks weekly newsletter:", "text": "GLYPH Explore new Redbooks publications, residencies, and workshops with the IBM Redbooks weekly newsletter:", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/348", "parent": {"cref": "#/groups/23"}, "children": [], "label": "list_item", "prov": [{"page_no": 36, "bbox": {"l": 150.69110107421875, "t": 632.6083984375, "r": 451.35418701171875, "b": 622.588134765625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 60]}], "orig": "https://www.redbooks.ibm.com/Redbooks.nsf/subscribe?OpenForm", "text": "https://www.redbooks.ibm.com/Redbooks.nsf/subscribe?OpenForm", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/349", "parent": {"cref": "#/groups/23"}, "children": [], "label": "list_item", "prov": [{"page_no": 36, "bbox": {"l": 135.90457153320312, "t": 615.35009765625, "r": 430.1478271484375, "b": 604.872802734375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 76]}], "orig": "GLYPH Stay current on recent Redbooks publications with RSS Feeds:", "text": "GLYPH Stay current on recent Redbooks publications with RSS Feeds:", "enumerated": false, "marker": "-"}, {"self_ref": "#/texts/350", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 36, "bbox": {"l": 150.6310272216797, "t": 598.2605590820312, "r": 331.0777282714844, "b": 588.5687866210938, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 36]}], "orig": "http://www.redbooks.ibm.com/rss.html", "text": "http://www.redbooks.ibm.com/rss.html"}, {"self_ref": "#/texts/351", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 36, "bbox": {"l": 64.23326110839844, "t": 37.54473876953125, "r": 78.4020004272461, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "34", "text": "34"}, {"self_ref": "#/texts/352", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 36, "bbox": {"l": 93.27912139892578, "t": 37.2301025390625, "r": 267.07440185546875, "b": 27.87841796875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 38]}], "orig": "IBM Cloud Pak for Data on IBM zSystems", "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"self_ref": "#/texts/353", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 37, "bbox": {"l": 64.80000305175781, "t": 719.029296875, "r": 151.5048065185547, "b": 695.9519653320312, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 7]}], "orig": "Notices", "text": "Notices", "level": 1}, {"self_ref": "#/texts/354", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 37, "bbox": {"l": 64.05133819580078, "t": 659.9757080078125, "r": 547.2454833984375, "b": 629.731201171875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 254]}], "orig": "This information was developed for products and services offered in the US. This material might be available from IBM in other languages. However, you may be required to own a copy of the product or product version in that language in order to access it.", "text": "This information was developed for products and services offered in the US. This material might be available from IBM in other languages. However, you may be required to own a copy of the product or product version in that language in order to access it."}, {"self_ref": "#/texts/355", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 37, "bbox": {"l": 64.02767944335938, "t": 619.982666015625, "r": 547.1796875, "b": 559.5601196289062, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 625]}], "orig": "IBM may not offer the products, services, or features discussed in this document in other countries. Consult your local IBM representative for information on the products and services currently available in your area. Any reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, program, or service may be used. Any functionally equivalent product, program, or service that does not infringe any IBM intellectual property right may be used instead. However, it is the user's responsibility to evaluate and verify the operation of any non-IBM product, program, or service.", "text": "IBM may not offer the products, services, or features discussed in this document in other countries. Consult your local IBM representative for information on the products and services currently available in your area. Any reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, program, or service may be used. Any functionally equivalent product, program, or service that does not infringe any IBM intellectual property right may be used instead. However, it is the user's responsibility to evaluate and verify the operation of any non-IBM product, program, or service."}, {"self_ref": "#/texts/356", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 37, "bbox": {"l": 64.14295196533203, "t": 550.154052734375, "r": 547.3560180664062, "b": 520.18017578125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 232]}], "orig": "IBM may have patents or pending patent applications covering subject matter described in this document. The furnishing of this document does not grant you any license to these patents. You can send license inquiries, in writing, to:", "text": "IBM may have patents or pending patent applications covering subject matter described in this document. The furnishing of this document does not grant you any license to these patents. You can send license inquiries, in writing, to:"}, {"self_ref": "#/texts/357", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 37, "bbox": {"l": 64.09358215332031, "t": 520.0274658203125, "r": 535.3104248046875, "b": 509.72900390625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 99]}], "orig": "IBM Director of Licensing, IBM Corporation, North Castle Drive, MD-NC119, Armonk, NY 10504-1785, US", "text": "IBM Director of Licensing, IBM Corporation, North Castle Drive, MD-NC119, Armonk, NY 10504-1785, US"}, {"self_ref": "#/texts/358", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 37, "bbox": {"l": 63.77083969116211, "t": 500.6291198730469, "r": 545.7673950195312, "b": 449.74090576171875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 411]}], "orig": "INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some jurisdictions do not allow disclaimer of express or implied warranties in certain transactions, therefore, this statement may not apply to you.", "text": "INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some jurisdictions do not allow disclaimer of express or implied warranties in certain transactions, therefore, this statement may not apply to you."}, {"self_ref": "#/texts/359", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 37, "bbox": {"l": 63.76580810546875, "t": 439.9736022949219, "r": 547.2484130859375, "b": 400.1820983886719, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 345]}], "orig": "This information could include technical inaccuracies or typographical errors. Changes are periodically made to the information herein; these changes will be incorporated in new editions of the publication. IBM may make improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time without notice.", "text": "This information could include technical inaccuracies or typographical errors. Changes are periodically made to the information herein; these changes will be incorporated in new editions of the publication. IBM may make improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time without notice."}, {"self_ref": "#/texts/360", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 37, "bbox": {"l": 63.99868392944336, "t": 390.02362060546875, "r": 541.5413208007812, "b": 360.0369567871094, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 286]}], "orig": "Any references in this information to non-IBM websites are provided for convenience only and do not in any manner serve as an endorsement of those websites. The materials at those websites are not part of the materials for this IBM product and use of those websites is at your own risk.", "text": "Any references in this information to non-IBM websites are provided for convenience only and do not in any manner serve as an endorsement of those websites. The materials at those websites are not part of the materials for this IBM product and use of those websites is at your own risk."}, {"self_ref": "#/texts/361", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 37, "bbox": {"l": 64.16744995117188, "t": 349.7569580078125, "r": 519.2667846679688, "b": 329.5712890625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 136]}], "orig": "IBM may use or distribute any of the information you provide in any way it believes appropriate without incurring any obligation to you.", "text": "IBM may use or distribute any of the information you provide in any way it believes appropriate without incurring any obligation to you."}, {"self_ref": "#/texts/362", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 37, "bbox": {"l": 63.904296875, "t": 319.8106994628906, "r": 505.2710266113281, "b": 299.6888427734375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 191]}], "orig": "The performance data and client examples cited are presented for illustrative purposes only. Actual performance results may vary depending on specific configurations and operating conditions.", "text": "The performance data and client examples cited are presented for illustrative purposes only. Actual performance results may vary depending on specific configurations and operating conditions."}, {"self_ref": "#/texts/363", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 37, "bbox": {"l": 64.10684204101562, "t": 289.8807373046875, "r": 547.2424926757812, "b": 249.8016357421875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 408]}], "orig": "Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly available sources. IBM has not tested those products and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products.", "text": "Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly available sources. IBM has not tested those products and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products."}, {"self_ref": "#/texts/364", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 37, "bbox": {"l": 64.23661041259766, "t": 239.82928466796875, "r": 544.685791015625, "b": 219.7401123046875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 146]}], "orig": "Statements regarding IBM's future direction or intent are subject to change or withdrawal without notice, and represent goals and objectives only.", "text": "Statements regarding IBM's future direction or intent are subject to change or withdrawal without notice, and represent goals and objectives only."}, {"self_ref": "#/texts/365", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 37, "bbox": {"l": 63.82798385620117, "t": 209.76708984375, "r": 547.016357421875, "b": 170.14593505859375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 335]}], "orig": "This information contains examples of data and reports used in daily business operations. To illustrate them as completely as possible, the examples include the names of individuals, companies, brands, and products. All of these names are fictitious and any similarity to actual people or business enterprises is entirely coincidental.", "text": "This information contains examples of data and reports used in daily business operations. To illustrate them as completely as possible, the examples include the names of individuals, companies, brands, and products. All of these names are fictitious and any similarity to actual people or business enterprises is entirely coincidental."}, {"self_ref": "#/texts/366", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 37, "bbox": {"l": 64.29706573486328, "t": 160.24713134765625, "r": 172.50048828125, "b": 150.16616821289062, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 18]}], "orig": "COPYRIGHT LICENSE:", "text": "COPYRIGHT LICENSE:", "level": 1}, {"self_ref": "#/texts/367", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 37, "bbox": {"l": 63.95261001586914, "t": 140.04864501953125, "r": 547.3580932617188, "b": 59.9888916015625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 779]}], "orig": "This information contains sample application programs in source language, which illustrate programming techniques on various operating platforms. You may copy, modify, and distribute these sample programs in any form without payment to IBM, for the purposes of developing, using, marketing or distributing application programs conforming to the application programming interface for the operating platform for which the sample programs are written. These examples have not been thoroughly tested under all conditions. IBM, therefore, cannot guarantee or imply reliability, serviceability, or function of these programs. The sample programs are provided \"AS IS\", without warranty of any kind. IBM shall not be liable for any damages arising out of your use of the sample programs.", "text": "This information contains sample application programs in source language, which illustrate programming techniques on various operating platforms. You may copy, modify, and distribute these sample programs in any form without payment to IBM, for the purposes of developing, using, marketing or distributing application programs conforming to the application programming interface for the operating platform for which the sample programs are written. These examples have not been thoroughly tested under all conditions. IBM, therefore, cannot guarantee or imply reliability, serviceability, or function of these programs. The sample programs are provided \"AS IS\", without warranty of any kind. IBM shall not be liable for any damages arising out of your use of the sample programs."}, {"self_ref": "#/texts/368", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 37, "bbox": {"l": 63.60262680053711, "t": 37.3072509765625, "r": 180.32760620117188, "b": 27.9490966796875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 27]}], "orig": "' Copyright IBM Corp. 2023.", "text": "' Copyright IBM Corp. 2023."}, {"self_ref": "#/texts/369", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 37, "bbox": {"l": 535.6251220703125, "t": 37.6282958984375, "r": 547.2591552734375, "b": 27.93828010559082, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "35", "text": "35"}, {"self_ref": "#/texts/370", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 38, "bbox": {"l": 64.03144836425781, "t": 721.8876953125, "r": 155.489501953125, "b": 706.0162963867188, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 10]}], "orig": "Trademarks", "text": "Trademarks", "level": 1}, {"self_ref": "#/texts/371", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 38, "bbox": {"l": 64.0931396484375, "t": 689.2715454101562, "r": 547.2343139648438, "b": 649.2987060546875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 383]}], "orig": "IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines Corporation, registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the web at \"Copyright and trademark information\" at http://www.ibm.com/legal/copytrade.shtml", "text": "IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines Corporation, registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the web at \"Copyright and trademark information\" at http://www.ibm.com/legal/copytrade.shtml"}, {"self_ref": "#/texts/372", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 38, "bbox": {"l": 63.78811264038086, "t": 639.4071044921875, "r": 547.241455078125, "b": 619.1767578125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 181]}], "orig": "The following terms are trademarks or registered trademarks of International Business Machines Corporation, and might also be trademarks or registered trademarks in other countries.", "text": "The following terms are trademarks or registered trademarks of International Business Machines Corporation, and might also be trademarks or registered trademarks in other countries."}, {"self_ref": "#/texts/373", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 38, "bbox": {"l": 75.5999984741211, "t": 610.3914184570312, "r": 99.15697479248047, "b": 601.1370239257812, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 11]}], "orig": "Db2fi IBMfi", "text": "Db2fi IBMfi"}, {"self_ref": "#/texts/374", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 38, "bbox": {"l": 75.5999984741211, "t": 588.5880737304688, "r": 144.71075439453125, "b": 579.1167602539062, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 16]}], "orig": "IBM Blockchainfi", "text": "IBM Blockchainfi"}, {"self_ref": "#/texts/375", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 38, "bbox": {"l": 75.5999984741211, "t": 577.4935302734375, "r": 124.25857543945312, "b": 568.1367797851562, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 20]}], "orig": "IBM Cloudfi IBM Clou", "text": "IBM Cloudfi IBM Clou"}, {"self_ref": "#/texts/376", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 38, "bbox": {"l": 75.47257232666016, "t": 567.2310791015625, "r": 142.73785400390625, "b": 557.1567993164062, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 7]}], "orig": "d Pakfi", "text": "d Pakfi"}, {"self_ref": "#/texts/377", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 38, "bbox": {"l": 75.5999984741211, "t": 556.1326904296875, "r": 128.0511016845703, "b": 546.1165161132812, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 10]}], "orig": "IBM Telum\u2122", "text": "IBM Telum\u2122"}, {"self_ref": "#/texts/378", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 38, "bbox": {"l": 235.9648895263672, "t": 610.4598388671875, "r": 292.5691833496094, "b": 601.13623046875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 12]}], "orig": "IBM Watsonfi", "text": "IBM Watsonfi"}, {"self_ref": "#/texts/379", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 38, "bbox": {"l": 235.9771270751953, "t": 600.0650634765625, "r": 278.3294982910156, "b": 590.15625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 8]}], "orig": "IBM z16\u2122", "text": "IBM z16\u2122"}, {"self_ref": "#/texts/380", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 38, "bbox": {"l": 235.92138671875, "t": 588.3995361328125, "r": 272.8687744140625, "b": 579.115966796875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 9]}], "orig": "Instanafi", "text": "Instanafi"}, {"self_ref": "#/texts/381", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 38, "bbox": {"l": 235.9377899169922, "t": 577.7839965820312, "r": 294.80047607421875, "b": 567.6576538085938, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 14]}], "orig": "Open Libertyfi", "text": "Open Libertyfi"}, {"self_ref": "#/texts/382", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 38, "bbox": {"l": 235.86184692382812, "t": 566.484619140625, "r": 290.5615539550781, "b": 557.100341796875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 11]}], "orig": "OpenPagesfi", "text": "OpenPagesfi"}, {"self_ref": "#/texts/383", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 38, "bbox": {"l": 236.06265258789062, "t": 555.6954345703125, "r": 283.79803466796875, "b": 546.11572265625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 10]}], "orig": "Redbooksfi", "text": "Redbooksfi"}, {"self_ref": "#/texts/384", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 38, "bbox": {"l": 64.08106994628906, "t": 533.9868774414062, "r": 312.0052490234375, "b": 523.8305053710938, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "orig": "The following terms are trademarks of other companies:", "text": "The following terms are trademarks of other companies:"}, {"self_ref": "#/texts/385", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 38, "bbox": {"l": 64.17213439941406, "t": 514.7268676757812, "r": 528.6849365234375, "b": 493.8155212402344, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 184]}], "orig": "Intel, Intel logo, Intel Inside logo, and Intel Centrino logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries.", "text": "Intel, Intel logo, Intel Inside logo, and Intel Centrino logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries."}, {"self_ref": "#/texts/386", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 38, "bbox": {"l": 63.988487243652344, "t": 484.4936828613281, "r": 541.6887817382812, "b": 464.2257080078125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 174]}], "orig": "The registered trademark Linuxfi is used pursuant to a sublicense from the Linux Foundation, the exclusive licensee of Linus Torvalds, owner of the mark on a worldwide basis.", "text": "The registered trademark Linuxfi is used pursuant to a sublicense from the Linux Foundation, the exclusive licensee of Linus Torvalds, owner of the mark on a worldwide basis."}, {"self_ref": "#/texts/387", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 38, "bbox": {"l": 64.36927795410156, "t": 454.6313781738281, "r": 531.9806518554688, "b": 434.2598876953125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 140]}], "orig": "Red Hat and OpenShift are trademarks or registered trademarks of Red Hat, Inc. or its subsidiaries in the United States and other countries.", "text": "Red Hat and OpenShift are trademarks or registered trademarks of Red Hat, Inc. or its subsidiaries in the United States and other countries."}, {"self_ref": "#/texts/388", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 38, "bbox": {"l": 64.39899444580078, "t": 424.5513916015625, "r": 472.0943908691406, "b": 414.2801208496094, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 90]}], "orig": "UNIX is a registered trademark of The Open Group in the United States and other countries.", "text": "UNIX is a registered trademark of The Open Group in the United States and other countries."}, {"self_ref": "#/texts/389", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 38, "bbox": {"l": 64.1666259765625, "t": 404.60601806640625, "r": 465.3721618652344, "b": 394.30035400390625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 86]}], "orig": "Other company, product, or service names may be trademarks or service marks of others.", "text": "Other company, product, or service names may be trademarks or service marks of others."}, {"self_ref": "#/texts/390", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 38, "bbox": {"l": 64.26212310791016, "t": 36.5125732421875, "r": 78.4020004272461, "b": 26.91827964782715, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 2]}], "orig": "36", "text": "36"}, {"self_ref": "#/texts/391", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 38, "bbox": {"l": 93.35021209716797, "t": 36.15057373046875, "r": 267.07440185546875, "b": 26.59393310546875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 38]}], "orig": "IBM Cloud Pak for Data on IBM zSystems", "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"self_ref": "#/texts/392", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 38, "bbox": {"l": 396.7199401855469, "t": 610.1947631835938, "r": 464.44384765625, "b": 600.8096313476562, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 26]}], "orig": "Redbooks (log o) fi Turbon", "text": "Redbooks (log o) fi Turbon"}, {"self_ref": "#/texts/393", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 38, "bbox": {"l": 396.71099853515625, "t": 599.5802001953125, "r": 452.03265380859375, "b": 590.1554565429688, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 6]}], "orig": "omicfi", "text": "omicfi"}, {"self_ref": "#/texts/394", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 38, "bbox": {"l": 396.258544921875, "t": 588.4796142578125, "r": 451.70428466796875, "b": 579.1151733398438, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 11]}], "orig": "WebSpherefi", "text": "WebSpherefi"}, {"self_ref": "#/texts/395", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 38, "bbox": {"l": 396.62286376953125, "t": 577.8291015625, "r": 424.4446716308594, "b": 568.1351928710938, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 6]}], "orig": "z/OSfi", "text": "z/OSfi"}, {"self_ref": "#/texts/396", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 38, "bbox": {"l": 396.6561584472656, "t": 566.7672119140625, "r": 420.6365966796875, "b": 557.1552124023438, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 4]}], "orig": "z16\u2122", "text": "z16\u2122"}, {"self_ref": "#/texts/397", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 40, "bbox": {"l": 287.2200012207031, "t": 763.4519653320312, "r": 415.20721435546875, "b": 741.251953125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 10]}], "orig": "Back cover", "text": "Back cover"}, {"self_ref": "#/texts/398", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 40, "bbox": {"l": 495.9403076171875, "t": 680.78173828125, "r": 564.1664428710938, "b": 670.4779663085938, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 12]}], "orig": "REDP-5695-00", "text": "REDP-5695-00"}, {"self_ref": "#/texts/399", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 40, "bbox": {"l": 482.8758239746094, "t": 659.2940063476562, "r": 564.6472778320312, "b": 649.478271484375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 15]}], "orig": "ISBN 0738461067", "text": "ISBN 0738461067"}, {"self_ref": "#/texts/400", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 40, "bbox": {"l": 497.23223876953125, "t": 99.3863525390625, "r": 564.1887817382812, "b": 89.81710052490234, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 17]}], "orig": "Printed in U.S.A.", "text": "Printed in U.S.A."}], "pictures": [{"self_ref": "#/pictures/0", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 1, "bbox": {"l": 408.87640380859375, "t": 757.6637573242188, "r": 569.0722045898438, "b": 713.802490234375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/1", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 1, "bbox": {"l": 46.60354995727539, "t": 59.40655517578125, "r": 127.91421508789062, "b": 26.44677734375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/2", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 1, "bbox": {"l": 467.1597595214844, "t": 51.5799560546875, "r": 571.5428466796875, "b": 23.5855712890625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/3", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 3, "bbox": {"l": 32.92374801635742, "t": 721.5759887695312, "r": 239.95321655273438, "b": 555.397705078125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/4", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 5, "bbox": {"l": 136.13192749023438, "t": 714.4678955078125, "r": 435.85162353515625, "b": 345.68524169921875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 16]}], "captions": [{"cref": "#/texts/30"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/5", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 6, "bbox": {"l": 63.98974609375, "t": 685.0554809570312, "r": 547.5855102539062, "b": 416.2847595214844, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 33]}], "captions": [{"cref": "#/texts/37"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/6", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 7, "bbox": {"l": 65.5059585571289, "t": 712.4261474609375, "r": 547.4702758789062, "b": 441.6483154296875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 52]}], "captions": [{"cref": "#/texts/40"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/7", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 8, "bbox": {"l": 65.81348419189453, "t": 683.7611694335938, "r": 547.791259765625, "b": 430.7156677246094, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 78]}], "captions": [{"cref": "#/texts/47"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/8", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 9, "bbox": {"l": 63.88162612915039, "t": 714.5304565429688, "r": 547.2862548828125, "b": 492.099609375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 29]}], "captions": [{"cref": "#/texts/50"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/9", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 10, "bbox": {"l": 63.72787094116211, "t": 612.8547973632812, "r": 547.3121948242188, "b": 311.20458984375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 48]}], "captions": [{"cref": "#/texts/58"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/10", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 13, "bbox": {"l": 63.857383728027344, "t": 714.5877685546875, "r": 547.4847412109375, "b": 441.6200256347656, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 104]}], "captions": [{"cref": "#/texts/91"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/11", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 16, "bbox": {"l": 63.77848434448242, "t": 660.74267578125, "r": 546.8060302734375, "b": 462.53985595703125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 35]}], "captions": [{"cref": "#/texts/144"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/12", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 18, "bbox": {"l": 64.32939147949219, "t": 714.298583984375, "r": 547.455810546875, "b": 501.2001647949219, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 54]}], "captions": [{"cref": "#/texts/172"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/13", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 18, "bbox": {"l": 63.88758850097656, "t": 423.3321228027344, "r": 547.6134033203125, "b": 125.8853759765625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 49]}], "captions": [{"cref": "#/texts/175"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/14", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 19, "bbox": {"l": 63.96794891357422, "t": 672.72021484375, "r": 547.4464111328125, "b": 379.33050537109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 53]}], "captions": [{"cref": "#/texts/179"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/15", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 19, "bbox": {"l": 64.33274841308594, "t": 318.6211242675781, "r": 547.9761962890625, "b": 68.50238037109375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 66]}], "captions": [{"cref": "#/texts/181"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/16", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 20, "bbox": {"l": 136.07406616210938, "t": 661.1522216796875, "r": 533.5489501953125, "b": 407.510986328125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 24]}], "captions": [{"cref": "#/texts/184"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/17", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 20, "bbox": {"l": 64.0412368774414, "t": 346.5400390625, "r": 547.8551635742188, "b": 84.3487548828125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 28]}], "captions": [{"cref": "#/texts/186"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/18", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 21, "bbox": {"l": 64.23773956298828, "t": 684.8828125, "r": 547.417236328125, "b": 380.84503173828125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 91]}], "captions": [{"cref": "#/texts/190"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/19", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 22, "bbox": {"l": 63.799659729003906, "t": 684.6780395507812, "r": 547.7122192382812, "b": 410.76275634765625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 55]}], "captions": [{"cref": "#/texts/193"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/20", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 23, "bbox": {"l": 63.62750244140625, "t": 714.3441772460938, "r": 547.6529541015625, "b": 441.46466064453125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 76]}], "captions": [{"cref": "#/texts/197"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/21", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 23, "bbox": {"l": 64.15648651123047, "t": 344.8665466308594, "r": 547.9522705078125, "b": 70.03009033203125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 103]}], "captions": [{"cref": "#/texts/199"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/22", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 25, "bbox": {"l": 64.85054016113281, "t": 714.330810546875, "r": 545.2755126953125, "b": 451.7115173339844, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 82]}], "captions": [{"cref": "#/texts/211"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/23", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 26, "bbox": {"l": 65.03783416748047, "t": 697.0615234375, "r": 547.6334838867188, "b": 432.6387634277344, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 70]}], "captions": [{"cref": "#/texts/221"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/24", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 28, "bbox": {"l": 64.01190948486328, "t": 684.6367797851562, "r": 542.310546875, "b": 480.45562744140625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 97]}], "captions": [{"cref": "#/texts/242"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/25", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 29, "bbox": {"l": 63.826560974121094, "t": 410.2887268066406, "r": 539.9069213867188, "b": 173.48193359375, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 43]}], "captions": [{"cref": "#/texts/270"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/26", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 31, "bbox": {"l": 63.6925048828125, "t": 714.6727294921875, "r": 547.7992553710938, "b": 352.7718200683594, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 37]}], "captions": [{"cref": "#/texts/283"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/27", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 33, "bbox": {"l": 64.15681457519531, "t": 623.4725341796875, "r": 542.2742309570312, "b": 381.83746337890625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 53]}], "captions": [{"cref": "#/texts/307"}], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/28", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 40, "bbox": {"l": 42.63053512573242, "t": 42.7210693359375, "r": 68.95333862304688, "b": 15.95574951171875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/29", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 40, "bbox": {"l": 475.4501647949219, "t": 747.644287109375, "r": 565.7938232421875, "b": 712.610595703125, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [], "references": [], "footnotes": [], "image": null, "annotations": []}, {"self_ref": "#/pictures/30", "parent": {"cref": "#/body"}, "children": [], "label": "picture", "prov": [{"page_no": 40, "bbox": {"l": 433.6951904296875, "t": 55.36602783203125, "r": 572.0396728515625, "b": 19.161434173583984, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 0]}], "captions": [], "references": [], "footnotes": [], "image": null, "annotations": []}], "tables": [], "key_value_items": [], "pages": {"1": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 1}, "2": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 2}, "3": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 3}, "4": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 4}, "5": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 5}, "6": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 6}, "7": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 7}, "8": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 8}, "9": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 9}, "10": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 10}, "11": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 11}, "12": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 12}, "13": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 13}, "14": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 14}, "15": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 15}, "16": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 16}, "17": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 17}, "18": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 18}, "19": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 19}, "20": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 20}, "21": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 21}, "22": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 22}, "23": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 23}, "24": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 24}, "25": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 25}, "26": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 26}, "27": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 27}, "28": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 28}, "29": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 29}, "30": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 30}, "31": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 31}, "32": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 32}, "33": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 33}, "34": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 34}, "35": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 35}, "36": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 36}, "37": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 37}, "38": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 38}, "39": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 39}, "40": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 40}}} \ No newline at end of file diff --git a/tests/data/groundtruth/docling_v2/redp5695.md b/tests/data/groundtruth/docling_v2/redp5695.md deleted file mode 100644 index 64e6099b..00000000 --- a/tests/data/groundtruth/docling_v2/redp5695.md +++ /dev/null @@ -1,666 +0,0 @@ -Front cover - - - -## IBM Cloud Pak for Data on IBM Z - -Jasmeet Bhatia - -Ravi Gummadi - -Chandra Shekhar Reddy Potula - -Srirama Sharma - -Data and AI - - - - - - - -## Executive overview - -Most industries are susceptible to fraud, which poses a risk to both businesses and consumers. According to The National Health Care Anti-Fraud Association, health care fraud alone causes the nation around $68 billion annually.$^{1}$ This statistic does not include the numerous other industries where fraudulent activities occur daily. In addition, the growing amount of data that enterprises own makes it difficult for them to detect fraud. Businesses can benefit by using an analytical platform to fully integrate their data with artificial intelligence (AI) technology. - -With IBM Cloud Pakfi for Data on IBM Z, enterprises can modernize their data infrastructure, develop, and deploy machine learning (ML) and AI models, and instantiate highly efficient analytics deployment on IBM LinuxONE. Enterprises can create cutting-edge, intelligent, and interactive applications with embedded AI, colocate data with commercial applications, and use AI to make inferences. - -This IBM Redguide publication presents a high-level overview of IBM Z. It describes IBM Cloud Pak for Data (CP4D) on IBM Z and IBM LinuxONE, the different features that are supported on the platform, and how the associated features can help enterprise customers in building AI and ML models by using core transactional data, which results in decreased latency and increased throughput. - -This publication highlights real-time CP4D on IBM Z use cases. Real-time Clearing and Settlement Transactions, Trustworthy AI and its Role in Day-To-Day Monitoring, and the Prevention of Retail Crimes are use cases that are described in this publication. Using CP4D on IBM Z and LinuxONE, this publication shows how businesses can implement a highly efficient analytics deployment that minimizes latency, cost inefficiencies, and potential security exposures that are connected with data transportation. - -## IBM Z: An overview - -Ever wonder how many transactions a bank processes per day? What about the pace at which these transactions happen? According to an IBMfi report, 44 of 50 of the world's top banks use IBM Z mainframes for these daily transactions.$^{2}$ IBM Z is a platform that is designed for voluminous data, maximum security, real-time transaction analysis, and cost efficiency. - -The most recent platform for IBM Z is IBM z16™. The IBM z16 supports the following features: - -- GLYPH On-chip AI acceleration -- GLYPH Quantum-safe crypto discovery -- GLYPH Simplified compliance -- GLYPH Flexible capacity -- GLYPH Modernization of applications -- GLYPH Sustainability - -With these features, enterprises can upgrade applications while preserving secure and resilient data. - -To learn more about these features, see the IBM z16 product page. - -Figure 1 on page 3 shows a picture of the IBM z16 mainframe. - -Figure 1 IBM z16 - - - -## IBM z16 and IBM LinuxONE Emperor 4 features - -IBM Z are based on enterprise mainframe technology. Starting with transaction-based workloads and databases, IBM Z has undergone tremendous transformations in its system design for many generations to build servers that cater to Linux-based workloads and security with a cyberresilient system, and support quantum computing and modernization by using a hybrid cloud with a focus on data and AI. - -Figure 2 provides a snapshot of the IBM Z processor roadmap, which depicts the journey of transformation and improvement. - -Figure 2 IBM Z: Processor roadmap - - - -The IBM z16 and IBM LinuxONE Emperor 4 are the latest of the IBM Z, and they are developed with a 'built to build' focus to provide a powerful, cyberresilient, open, and secure platform for business with an extra focus on sustainability to help build sustainable data centers. Although the z16 server can host both IBM z/OSfi and Linux workloads, LinuxONE Emperor 4 is built to host Linux only workloads with a focus on consolidation and resiliency. Depending on the workload, consolidation from numerous x86 servers into a LinuxONE Emperor 4 can help reduce energy consumption by 75% and data center floor space by 50%, which helps to achieve the sustainability goals of the organization. - -Figure 3 on page 5 shows a summary of the system design of IBM LinuxONE Emperor 4 with the IBM Telum™ processor. The IBM Telum processor chip is designed to run enterprise applications efficiently where their data resides to embed AI with super low latency. The support for higher bandwidth and I/O rates is supported through FCP Express cards with an endpoint security solution. The memory subsystem supports up to 40 TB of memory. - -Figure 3 System design of IBM z16 LinuxONE Emperor 4 - - - -The IBM z16 and IBM LinuxONE Emperor 4 servers are built with 7-nm technology at a 5.2 GHz speed. They consist of four dual-chip modules (DCMs) per central processor complex (CPC) drawer, each of which is built with two 8-core Telum processor chips that has "first in the industry" on-chip acceleration for mid-transaction, real-time AI inferencing, which supports many different use cases, including fraud detection. - -Each core has access to a huge private 32 MB L2 cache where up to 16 MB of the L2 cache of an inactive core can be used as virtual cache (L3 / L4) by neighboring active cores on the chip. This cache helps address translation and access checking by prefetching the same virtual cache into the L2 cache. The virtual cache also includes Neural Network Processing Assist instructions and direct memory access with protection, and per chip GZIP compression. - -Figure 4 provides more information about the features of AI Accelerator integration with the IBM Z processor cores. - -Figure 4 IBM z16 on-chip AI Accelerator integration with IBM Z processor cores - - - -The IBM z16 and IBM LinuxONE Emperor 4 server platforms are built with the hardware features that are shown in Figure 4 with addressing data and AI workloads in mind. Regardless of where the ML and deep learning (DL) frameworks are used to build and train data and AI models, the inferencing on existing enterprise application data can happen along currently running enterprise business applications. CP4D 4.6 supports Tensorflow and IBM Snap ML frameworks, which are optimized to use the on-chip AI Accelerator during inferencing. Support for various other frameworks is planned for future releases. - -Figure 5 on page 7 shows the seamless integration of AI into existing enterprises workloads on the IBM z16 while leveraging the underlying hardware capabilities. - -Figure 5 Seamless integration - - - -## What is Cloud Pak for Data on IBM Z - -IBM Cloud Pak for Data allows enterprises to simplify, unify, and automate the delivery of data and AI. It categorizes the activities within the journey to AI as four rungs of the AI Ladder: Collect, Organize, Analyze, and Infuse. For more information about each of the AI Ladder rungs, see Become Data Driven with IBM Z Infused Data Fabric , REDP-5680. - -CP4D on IBM Z provides enterprises with a resilient and secure private cloud platform. You can use it to create ML and AI models that may be included into modern intelligent applications. You also can use it to use and construct applications for mission-critical data. With CP4D on IBM Z, enterprises can lower data movement latency, cost inefficiencies, and potential security exposures. Enterprises can safely store and access their most important company data, and leverage their current infrastructure by using cutting-edge hybrid cloud applications. Enterprises can combine their current database applications without any rewrites, which results in reduced cost and complexity. Lastly, by using CP4D on IBM Z, enterprises can update their database infrastructure to benefit from easier management, a quicker time to value, and lower operating expenses. - -Figure 6 shows a solution overview of CP4D. The infrastructure alternatives are shown at the bottom, and they include IBM Z and LinuxONE. They all leverage Red Hat OpenShift. Common Foundational Services come next, which offer clarity throughout the data and AI lifecycle, that is, from user access management to monitoring and service provisioning. A high-level view of the services is shown in the middle section. The services have several different capabilities that span the AI hierarchy. The platform can be expanded, and it offers a seamless user experience for all distinct personas across the AI lifecycle, from data gathering through AI infusion. - -Figure 6 Solution overview of Cloud Pak for Data - - - -We highlight the four main pillars that make IBM Z the correct infrastructure for CP4D: - -- GLYPH Performance and Scale -- GLYPH Embedded Accelerators -- GLYPH Reliability and Availability -- GLYPH Security and Governance. - -From a performance perspective, CP4D on IBM Z provides your data and AI with high transaction processing and a powerful infrastructure. From the embedded accelerators perspective, CP4D on IBM Z can investigate each transaction thanks to a cutting-edge DL inference technology even in the most demanding, sensitive, and latency-prone real-time workloads. From a reliability perspective, CP4D on IBM Z provides high availability and resiliency. Lastly from the security perspective, CP4D on IBM Z is suitable for protecting sensitive data and AI models for enterprises in highly regulated industries or those industries that are worried about security. - -## Cloud Pak for Data capabilities on IBM Z and IBM LinuxONE - -With CP4D on IBM Z and IBM LinuxONE, users can develop, train, and deploy AI and ML models. Users can accomplish this task by using the CP4D IBM Watsonfi Studio and IBM Watson Machine Learning (WLM) services. By using these two fundamental services, users can accomplish the following tasks: - -- GLYPH Provision various containerized databases. -- GLYPH Explore, clean, shape, and alter data by using Data Refinery. -- GLYPH Use project-specific data that is uploaded, or connect to distant data. -- GLYPH Create Spark run times and applications. -- GLYPH Create, build, evaluate, and deploy analytics and ML models with trust and transparency. -- GLYPH Leverage the AI Integrated Accelerator for TensorFlow 2.7.2 and Snap ML 1.9. - -For more information about the specifics of these capabilities, see Capabilities on Linux on IBM Z and IBM LinuxONE. - -## Open-source ecosystem - -These days, innovation and product development are not limited to closed doors within an organization. In any industry sector, the solutions include a mix of proprietary code addressing the core business solution that is supported or integrated into other software components from open source. In some cases, enterprises business solutions also are built from open-source community offerings. Thus, open-source software becomes an important ingredient in modern-day solution building. - -IBM actively participates in various open-source communities as part of steering boards defining the roadmap of the community, and also in contributing code to make the community a better place for everyone to participate. Red Hat also actively participates in various open-source communities and makes extensive contributions. In open-source communities, although most open-source development happens on x86 / amd64 or the Intel architecture, the same open-source software is used by other architectures, such as IBM Power (ppc64le), IBM Z and IBM LInuxONE (s390x), ARM, and Sparc. So, the availability of an open-source ecosystem on any architecture is key and critical to business. - -On IBM Z and IBM LinuxONE (s390x) architecture, there is a huge open-source support ecosystem that ranges from operating systems such as Linux; application run times; cloud and container services; DevOps and automation; big data; observability; analytics; databases; and storage. The ecosystem on IBM Z and IBM LinuxONE is growing. - -IBM Z and IBM LinuxONE include much open-source software in their ecosystem. You can see the growing list of open-source software for IBM Z and LinuxONE at The Growing Ecosystem of Open-Source Software for IBM Z and LinuxONE. - -IBM Z and IBM LinuxONE are available to various communities to include support for s390x builds as part of their community's continuous integration and continuous delivery (CI/CD). Also, for open-source community developers, infrastructure resources are available on a no-charge basis through the IBM LinuxONE community cloud. - -CP4D includes a mix of open-source and proprietary data and AI runtime databases; open-source run times like Python; open-source data platforms like Anaconda; ML and DL frameworks like Pytorch and Tensorflow; and thousands of reusable Python packages. All of them are available and supported on s390x architecture to provide seamless parity with x86 architecture and a seamless experience for enterprise data scientists, architects, and data and AI solution developers on IBM Z and IBM LinuxONE platforms. - -Anaconda is one of the open-source data platforms that provide Python and R based data science ML frameworks; analytics and data visualization tools; and open-source data science tools and libraries like Conda, XGBoost, and SciKit-Learn. Anaconda runs natively on Linux on IBM Z and IBM LinuxONE, and on IBM z/OS Container Extensions (zcX) on z/OS. For more information, see Announcing Anaconda for Linux on IBM Z and LinuxONE. - -In addition to strong, open-source ecosystem support for application development on Linux and enterprise operating systems, a new generation of IBM Z and IBM LinuxONE servers (IBM z16™) also have strong platform support, and AI acceleration capabilities that can be leveraged by open-source software to perform better on the server infrastructure. For example, the recently released CP4D 4.6 has Tensorflow and IBM SnapML frameworks that leverage the AI accelerators when running on an IBM z16 server. - -So, to summarize, there is a huge, growing data and AI open source ecosystem that is supported and optimized on IBM Z and IBM LinuxONE servers. - -## Why AI on IBM Z - -Data and AI playing a major role in the modernization story to enable the digital transformation journey of every organization. Many organizations recognize the business value of infusing AI into their infrastructure. CP4D provides the cloud-native solution to put your data to work. With CP4D, all your data users can collaborate from a single, unified interface that supports many services that work together, including collecting data, organizing the data, analyzing the data, and infusing AI. - -Traditional ML models' power most of today's ML applications in business and among AI practitioners. CP4D supports traditional ML frameworks for training and inferencing, such as Scikit-learn, Snap ML, and XGBoost. Snap ML is a library that provides high-speed training and inferencing of ML models that leverage the AI accelerator while running on an IBM z16 (Linux on IBM Z). CP4D supports DL frameworks such as TensorFlow and PyTorch. TensorFlow is a DL framework that leverages the AI accelerator while running on an IBM z16 (Linux on IBM Z). - -Figure 7 on page 11 provides an overview of the components that are supported on CP4D on IBM Z. You can leverage Watson Studio for model building, training, and validation, and WML for deployment of the model. Eventually, applications can use the AI inference endpoint to score the model. - -Figure 7 Developing, training, and deploying an AI model on Cloud Pak for Data on IBM Z and IBM LinuxONE - - - -In summary, here are some of the reasons why you should choose AI on IBM Z: - -- GLYPH World-class AI inference platform for enterprise workloads: -- -Embedded accelerators: A centralized on-chip AI accelerator that is shared by all cores. -- -Industry standard AI ecosystem: Many industry open-source data science frameworks are available on the platform. -- -Seamlessly integrate AI into existing enterprise workload stacks: Train anywhere, and then deploy on IBM Z. -- GLYPH Security: Encrypted memory, and improved trusted execution environments. -- GLYPH Sustainability: Reduce your energy consumption with real-time monitoring tools about the energy consumption of the system. - -## AI use cases - -With billions of transactions per day in many of today's industries, it is key to get real-time insights about what is happening in your data. AI on the IBM Z stack understands these situations, and it delivers in-transaction inference in real time and at scale. - -Core banking solutions running on IBM Z that are involved in processing inbound transactions need real-time fraud detection to prevent fraud. Other types of possible use cases might be credit risk analysis, anti-money laundering, loan approval, fraud detection in payments, and instant payments. - -For insurance companies, a pressing use case would be claims processing. For markets and trading, clearing and settlement use cases are paramount. - -For the health care industry, medical image processing (such as MRIs and x-rays), skin cancer detection, and patient monitoring activities such as infant motion analysis, is important. - -For the airline industry, processes such as air traffic management, flight management systems, and flight maintenance predictions are use cases that are ideal candidates for using AI on IBM Z. - -In the following sections, we describe the following use cases: - -- GLYPH "Use case 1: Responsible AI augmented with risk and regulatory compliance" on page 12 AI model lifecycle governance, risk management, and regulatory compliance are key to the success of the enterprises. It is imperative to adopt a typical AI model lifecycle to protect new end-to-end risks. -- GLYPH "Use case 2: Credit default risk assessment" on page 22 -- Core banking solutions running on IBM Z that are involved in processing inbound transactions need real-time fraud detection to prevent fraud. Other types of possible use cases might be credit risk analysis, anti-money laundering, loan approval, fraud detection in payments, and instant payments. -- GLYPH "Use case 3: Clearing and settlement" on page 25 -- The use of AI can help to predict which trades or transactions have high risk exposures, and propose solutions for a more efficient settlement process. -- GLYPH "Use case 4: Remaining Useful Life of an aircraft engine" on page 27 -- We describe how AI can help to avoid unplanned aircraft downtime by determining the remaining time or cycles that an aircraft engine is likely to operate before failure. -- GLYPH "Use case 5: AI-powered video analytics on an infant's motions for health prediction" on page 30 -- In this section, we describe how AI can predict an infant's health conditions by monitoring real-time body movements. - -## Use case 1: Responsible AI augmented with risk and regulatory compliance - -Advancement in AI is changing the world, and organizations must adopt AI to embrace new challenges daily. Many enterprises see tremendous value in adopting AI and ML technologies while establishing organization trust in the models, underlying data, and the process to be followed. An AI model lifecycle can be a daunting task. - -How mature is your AI governance? In this section, we provide a use case demonstrating the trustworthiness of AI and its importance in daily monitoring. - -## Industry challenges - -Here are the three main reasons why organizations struggle with the adoption of AI: - -- GLYPH Scaling with growing regulations -- GLYPH Lack of confidence in operationalized AI (making responsible AI) -- GLYPH Challenges around managing the risk throughout the entire AI workflow - -## Scaling with growing regulations - -Laws and regulations in the data and AI space are accelerating, and many countries are proposing strict AI policies. Countries are monitoring adherence of these policies by the enterprises and imposing fines for any violations. Responding to these regulations are challenging global organizations where multiple regulations apply. For enterprises, it is important to adopt AI policies when there is change, and to validate explainable models to protect against discrimination. - -## Responsible AI - -Responsible AI protects against loss of data privacy, and reduced customer loyalty and trust. A data scientist cannot maximize accuracy and model performance above all other concerns. Practicing responsible AI is a best practice, and you must establish protection and validation to ensure that any models that are placed into production are fair and explainable. - -## Risks throughout the entire AI workflow - -Organizations need to mitigate risk of the following items: - -- GLYPH Deciding not to use certain technologies or practices -- GLYPH Using personal information when needed and with a user's consent -- GLYPH Ensuring automated decisions are free from bias -- GLYPH Customer confidence by providing explanations for business decisions -- GLYPH Fraud to the organization and to customer's accounts -- GLYPH Delays in putting models into production - -In fact, in a recent survey, these concerns were echoed by real AI adopters when asked what aspects of trust are most important to them. Although explaining how AI decides is the primary concern, all of these concerns are important. - -The key point here is that risk exists throughout the entire AI lifecycle starting with the underlying data and the business justification behind the "why" of the project and continuing into production. Without a formalized process, there is no way to mitigate these risks to unlock the scale that is required to make automated decisions profitable. With these decisions, the business can operate proactively instead of reactively. - -For example, a business can start testing a model before production for fairness metrics. For this task, enterprises need an end-to-end workflow with approvals to mitigate these risks and increase the scale of AI investments, as shown in Figure 8, which presents a typical AI model lifecycle in an enterprise. - -Figure 8 Typical AI model lifecycle - - - -Due to regulations, more stakeholders adopt the typical AI model lifecycle to protect their brand from new end-to-end risks. To ensure various aspects of both regulatory compliance and security, the personas that must be involved include the chief financial officer (CFO), chief marketing officer (CMO), chief data officer (CDO), HR, and chief regulatory officer (CRO), along with the data engineers, data scientists, and business analysts, who build AI workflows. - -## IBM governance solution for IBM Z - -AI model lifecycle governance, risk management, and regulatory compliance are key to the success of enterprises. - -AI governance is a comprehensive framework that uses a set of automated processes, methodologies, and tools to manage an organization's use of AI. Consistent principles guiding the design, development, deployment, and monitoring of models are critical in driving responsible and trustworthy AI. AI governance includes processes that trace and record the origin of data, models (including associated metadata), and pipelines for audits. The details of entry should include the techniques that trained each model, the hyperparameters that were used, and the metrics from testing phases. These details provide increased transparency into the model's behavior throughout the lifecycle, the data that was influential in its development, and the possible risks. - -In a world where trust, transparency and explainable AI matters, every organization wants compliance along with the comfort of understanding how analytic insights and decisions are made. The following sections describe some of the principles and organizational requirements for AI governance. - -## Lifecycle governance - -Lifecycle governance helps you manage your business information throughout its lifecycle, that is, from creation to deletion. IBM AI governance addresses the problems that challenge records managements: - -- GLYPH Monitor, catalog, and govern AI models from anywhere throughout the AI lifecycle. -- GLYPH Automate the capture of model metadata for report generation. -- GLYPH Drive transparent and explainable AI at scale. -- GLYPH Increase accuracy of predictions by identifying how AI is used and where it is lagging. - -## Risk management - -Risk management is used in IBM AI governance to identify, manage, monitor, and report on risk and compliance initiatives at scale: - -- GLYPH Automate facts and workflow management to comply with business standards. -- GLYPH Use dynamic dashboards for clear and concise customizable results. -- GLYPH Enhanced collaboration across multiple regions and geographies. - -## Regulatory compliance - -Regulatory compliance is a set of rules that organizations must follow to protect sensitive information and ensure human safety. Any business that works with digital assets, consumer data, health regulations, employee safety, and private communications is subject to regulatory compliance.$^{3}$ The IBM AI governance solution for IBM Z includes the following tasks: - -- GLYPH Help adhere to external AI regulations for audit and compliance. -- GLYPH Convert external AI regulations into policies for automatic enforcement. -- GLYPH Use dynamic dashboards for compliance status across policies and regulations. - -Enterprises can develop AI models and deploy them by using IBM Watson Studio or WML on CP4D on Red Hat OpenShift on a virtual machine that is based on IBM z/VM or Red Hat Enterprise Linux KVM on IBM Z. AI governance on IBM LinuxONE is supported in the following two ways: - -- GLYPH Monitor the AI models with Watson OpenScale on CP4D on Red Hat OpenShift on a virtual machine on IBM Z. -- GLYPH Enterprises can develop AI models by creating and training models by using Watson Studio and development tools such as Jupyter Notebook or JupyterLab, and then deploying the model onto WML on CP4D on Red Hat OpenShift on a virtual machine on IBM Z. Then, these enterprises can achieve end-end AI governance by running AI Factsheets, IBM Watson OpenScale, and IBM Watson OpenPagesfi on CP4D on x86. - -Figure 9 on page 16 shows the end-to-end flow for a remote AI governance solution. - -Figure 9 Remote AI governance solution end-to-end flow - - - -To achieve end-to-end AI governance, complete the following steps: - -- 1. Create a model entry in IBM OpenPages by using CP4D on a x86 platform, as shown in Figure 10. - -Figure 10 Creating a model entry in IBM OpenPages - - - -- 2. Train a model by using Watson Studio and by using development tools such as Jupyter Notebook or JupyterLab on CP4D on Red Hat OpenShift on a virtual machine on IBM Z, as shown in Figure 11. - -Figure 11 Training an AI model by using Watson Studio - - - -- 3. Deploy the model by using WML on CP4D on Red Hat OpenShift on a virtual machine on IBM Z, as shown in Figure 12. - -Figure 12 Deploying an AI model by using WML on Cloud Pak for Data - - - -- 4. Track the external model lifecycle by browsing through the Catalogs/Platform assets catalog by using AI Factsheets and OpenPages while using CP4D on an x86 platform, as shown in Figure 13. The external model (deployed on CP4D on Red Hat OpenShift on a virtual machine on IBM Z) is saved as a platform asset catalog on the x86 platform. - -Figure 13 External model - - - -You can track the model through each stage of the model lifecycle, as shown in Figure 14, by using AI Factsheets and OpenPages. - -Figure 14 Tracking the model - - - -You can see that the model facts are tracked and synchronized to IBM OpenPages for risk management, as shown in Figure 15. - -Figure 15 Model facts that are tracked and synchronized to IBM OpenPages on an x86 platform - - - -- 5. Create an external model by using IBM OpenScale on the x86 platform, as shown in Figure 16. - -Figure 16 Creating an external model on an x86 platform - - - -IBM OpenScale provides a comprehensive dashboard that tracks fairness, quality monitoring, drift, and explainability of a model. Fairness determines whether your model produces biased outcomes. Quality determines how well your model predicts outcomes. Drift is the degradation of predictive performance over time. A sample is shown in Figure 17 on page 21. - -Figure 17 IBM OpenScale dashboard that is used to monitor the external model - - - -You developed and deployed the AI model by using Watson Studio, WML on CP4D on Red Hat OpenShift on a virtual machine on IBM Z, and end-to-end AI model governance by leveraging AI Factsheets, OpenScale, and OpenPages on CP4D on a x86 platform. Figure 18 shows end-to-end AI governance when using IBM OpenPages, AI Factsheets, and OpenScale. - -Figure 18 Final result: End-to-end AI governance when using IBM OpenPages, AI Factsheets, and OpenScale - - - -## Use case 2: Credit default risk assessment - -In today's world, many individuals or businesses seeking loans to meet their growing business needs often look to financial institutions. Financial institutions can offer loans to individuals or businesses and charge interest based on the current market situations. - -## Industry challenges - -Financial institutions must make an accurate decision about whether to sanction a loan or not, and judging the likelihood of default is the difference between a successful and unsuccessful loan portfolio. In a traditional scenario, an experienced banker can judge someone's likelihood of default, but that is not an efficient method for judgment as a business grows. - -## Predictions of credit default risk assessment - -In the modern world, growing business institutions can no longer rely on only experienced bankers to decide whether to sanction a loan knowing that there is a probability that the borrower might default on their loans. A better choice is to rely on technological advancements that can help with reasoning based on facts, such as leveraging credit risk modeling techniques to process the historical data of past borrowers to understand their credit behavior and make a more informed decision about whether to lend money, how much money, and decide on the tenure to close the loan. - -Financial institutions can leverage AI solutions by using ML techniques to predict the credit risk. Applying AI to credit risk modeling techniques can benefit institutions in decision-making, and thus can help better manage the exposure to credit risk. - -Figure 19 on page 23 shows a sample architecture about how to design and develop an AI model for credit risk assessment on IBM Z. An IBM WebSpherefi Application Server is used for handling in-bound transactions, and CP4D is used for AI model lifecycle management that includes building, training, and deploying the model. - -Figure 19 Architecture for credit risk prediction by using an ML AI model on IBM Z - - - -A data scientist can leverage Watson Studio to develop and train an AI model and WML to deploy and score the model. In this sample architecture, the WML Python run time leverages the ML framework, IBM Snap Machine Learning (Snap ML), for scoring, can leverage an integrated AI accelerator at the time of model import. - -Then, the banking loan approval team can send a loan applicant request to the IBM WebSphere Application Server, which can make a request to the AI inference endpoint. The AI inference engine scores the transaction and sends the result back to the loan approval team. Based on the results, the approval team can decide on whether to approve a loan or not, and also decide how much they can lend, timelines, and other factors. - -The transaction system that is shown in Figure 19 uses IBM WebSphere Liberty as an application server, but you also can use an IBM Open Libertyfi application server or any application server that can send RESTful API communications. - -Models are frequently developed and tested in many platforms and languages, such as Python, Scala, R, and Go. Models can leverage ML frameworks like scikit-learn, Snap ML, or XGBoost, or DL frameworks like TensorFlow or PyTorch. Training a model can be done on any platform if you have enough computing power for complex models, but moving that model into production requires careful testing to ensure that transactions are not delayed, especially if you plan to run the model within a transaction. - -We showed how IBM Z enable customers to use AI frameworks to detect credit risk. Now, we look at how you can leverage CP4D and TensorFlow on IBM Z to detect the credit risk. - -Figure 20 shows an architecture for predicting credit risk by using DL on IBM Z. - -Figure 20 Architecture for credit risk prediction by using DL on IBM Z - - - -Data scientists can start creating and training a DL AI model by using a Jupyter Notebook instance and Watson Studio. Then, they can deploy the model by using WML on CP4D running on IBM Z, which provides an endpoint. Other applications, including the IBM WebSphere server, can produce credit risk results by using the model's endpoint. - -In summary, here are some considerations for developing real-time AI models, such as credit risk assessment: - -- GLYPH A preference for in-platform run times of the model, such as faster execution results. -- GLYPH Less overhead in the end-to-end flows might improve scoring time. -- GLYPH If you are using models that are not deployable, CP4D offers a custom Python run time to build your own stack if they are not available on the platform. -- GLYPH AI inferencing based on ML or DL models can increase the accuracy of better credit risk assessment. -- GLYPH Using IBM z16 and on-chip AI acceleration with the Telum chip that is embedded with regular Integrated Facility for Linux (IFLs) provides an execution speed for your transactions that cannot be achieved by other means. - -## Use case 3: Clearing and settlement - -Clearing and settlements involve banks or financial institutions sending and receiving wire transfers by using secure interbank payments networks that can clear or settle numerous transactions. When an individual or business entity initiates a wire transfer, clearing begins the fund delivery process. Banks can begin the settlement phase either immediately after clearing takes place or later, mostly at the end of the business day. - -## Industry challenge - -Banks and financial institutions must deal with high-risk transactions that can lead to loss. Moreover, these transactions can lead to regulatory violations and extra compliance costs. - -## Clearing and settlement solution - -Use AI to predict which trades or transactions have high risk exposures, and propose solutions for a more efficient settlement process. The expedited remediation of questionable transactions can prevent costly consequences, regulatory violations, and negative business impacts. - -In financial institutions, finding which financial transactions are legitimate and which transactions are fraudulent is of paramount importance. In this section, we go through a use case where we use AI to predict which trades or transactions have high risk exposures, and propose solutions for a more efficient settlement process. The expedited remediation of questionable transactions can prevent costly consequences, regulatory violations, and negative business impacts to financial institutions. - -The goal is to predict in real time whether the transaction being processed might be a fraudulent transaction or not. To achieve this goal, we build an ML model that can do this prediction for the financial institution. Because there would be many transactions being processed at any point by the financial institution, it is important to perform this prediction of fraudulent transactions in near-real time in a few milliseconds. - -One possible solution is to build and train a TensorFlow based DL model that learns from the historical data and predicts the fraudulent transactions. CP4D on IBM Z and IBM LinuxONE is a suitable product where this task can be achieved and the model deployed, and coming up with a serving endpoint. - -Figure 21 provides a high-level diagram of a clearing and settlement use case for financial transactions that uses CP4D on IBM Z and IBM LinuxONE. - -Figure 21 Clearing and settlement use case for financial transactions by using Cloud Pak for Data - - - -Here are the steps of the high-level process flow: - -- 1. Create a connection to a database (for example, an IBM Db2fi database) where the historical data will be used for ML model building. -- 2. Read the data from the database and prepare the data for AI by using the Data Refinery tool in CP4D. -- 3. A Jupyter Notebook or JupyterLab IDE that is provided by the Watson Studio component in CP4D helps us build and train the AI model. The trained model can be saved into a WML repository. -- 4. Deploy the saved model into a deployment space for batch deployment. -- 5. Create a batch deployment by using any of these interfaces: -- a. Watson Studio user interface from an Analytics deployment space. -- b. WML Python client. -- c. WML REST APIs. -- 6. A hardware configuration can be chosen for the deployment. -- 7. A batch deployment processes input data from a file, data connection, or connected data in a storage bucket, and writes the output to a selected destination. -- 8. One way to run batch deployment to predict or score is to create and run a batch deployment job. -- 9. Provide an input data type: -- a. Inline data for entering a JSON format payload. -- b. Select Data asset , click Select data source , and then specify your asset. -- 10.The output data type can be a new output file or a connected data asset. -- 11.A Kubernetes admin can change the maximum number of concurrent batch jobs that can be run. -- 12.Get the deployment endpoint URL. For more information, see Getting the deployment endpoint URL. - -## Summary - -With this use case, we attempted to demonstrate how to predict, in real time, whether the transaction that is being processed might be a fraudulent transaction or not. By using the method, you have the following advantages: - -- GLYPH No Impact to SLAs and the batch process window. -- GLYPH Proactively stop losses, and lower operational, regulatory, and compliance costs. -- GLYPH The solution is using a DL framework like TensorFlow for high-performing, low latency scoring. - -## Use case 4: Remaining Useful Life of an aircraft engine - -In this use case, we describe how an airline can deploy an AI model for inferencing by using IBMfi zSystems. - -Remaining Useful Life (RUL) is the remaining time or cycles that an aircraft engine is likely to operate without any failure. In this case, it is the equivalent of the number of flights remaining for the engine after the last flight. By estimating RUL, the operator can decide on the next maintenance schedule and avoid unplanned downtime. - -Figure 22 provides an overview of the inferencing architecture for the RUL of an aircraft engine when using IBM Z. - -Figure 22 Inferencing architecture on IBM Z - - - -Because we are looking into data-driven model development, the data set of our target is the run-to-failure data of the engine. We are looking into a supervised learning problem, and we use regression techniques to learn from the data. DL techniques such as Long Short-Term Memory (LSTM) or Gated Recurrent Units (GRU) are our choice because we are looking into a time series data set. TensorFlow or PyTorch frameworks are leveraged to create models. AI governance monitors the data and model drift to maintain the model quality throughout the model's life. - -Open-source data from NASA was used to build the AI model, which then was deployed on CP4D. CP4D enables the data-scientist's journey from modeling to deployment in a seamless process. Data engineers leverage Db2 to host the data set, which includes the training, testing, and validation of a data set. Since data is hosted on Db2, you can expect low latency while retrieving the data and serve data security needs because Db2 is hosted on the IBM Z platform. Data is fetched by the data refinery to do the necessary pre-processing and data imputations. You can use the programming languages Golang or C++ for real-time predictions, depending on customer needs. For more information about this topic, see "Use case 3: Clearing and settlement" on page 25. - -Model building is done on Watson Studio, leveraging the high-performance computing hardware on IBM Z. You can train the model anywhere (on your own hardware or the cloud) and bring the model directly into CP4D, which provides data scientists with the flexibility of implementation choices. - -We used LSTM to build the AI model and used the training data. The model was continuously evaluated to model convergence. The final model is tested with the test data, which is never exposed at the time of training to make sure that the model works. - -This model is deployed on WML on CP4D and runs on IBM Z. If required, the trained model can be converted to the Open Neural Network Exchange (ONNX) format before deployment. Based on project requirements, IBM Z supports high-throughput, low latency inference requirements by leveraging an AI accelerator. - -For decision-making about an aircraft engine's life, it is important to be able to explain the model predictions from end to end. This explainability may be global or local. Global explainability enables decision-makers to evaluate the trained model in general from the subject matter expert (SME) point of view. Local explainability enables the operator to validate the reasons behind the present inference and relate it to the past data points, which are an indicative cause of the prediction. - -The AI governance components such as IBM OpenScale on CP4D support explainability and manages the drifts in data and concept. OpenPages and AI FactSheet together can alert the stakeholders about important events through a dashboard and allow course correction at any point. - -Client-side applications can invoke a REST apiserver that handles some preprocessing of an incoming request before initiating the inference pipeline. Efficiencies might be needed in real-time applications, and inference response time can be reduced by adopting low-level programming while components are communicating. - -Figure 23 on page 29 provides a more in-depth view of the architecture of an AI-based predictive maintenance application. - -Figure 23 In-depth architectural view - - - -In summary, consider the following points while developing an AI-based predictive maintenance application: - -- GLYPH CP4D offers a Python run time to build a custom solution stack, but also supports different components like Watson Studio, WML, Db2, Data Refinery, OpenScale, AI Factsheets, and OpenPages. -- GLYPH The trustworthiness of the predicted output is important for critical use cases. -- GLYPH IBM Z provides high data security and low latency requirements at scale for the critical applications. -- GLYPH A data scientist can choose to train the model and deploy it on CP4D seamlessly with the latest tech stack that is available. -- GLYPH The AIOps and MLOps supported by CP4D to track AI model and data lifecycle throughout the application lifecycle. - -## Use case 5: AI-powered video analytics on an infant's motions for health prediction - -Each year, approximately 5 million newborns worldwide are suffering from a neuro-developmental disorder. Due to the lack of early diagnoses and intervention, many infants are disabled and abandoned, especially in countries with limited numbers of pediatricians with extensive experience in neuro-developmental disorders. This situation is a conundrum that plagues many families around the world. - -Infant motion analysis plays critical importance to understanding and comprehending healthy childhood development. In infants, monitoring their poses provides information about their health that can lead to a better prediction of early developmental risk assessment and diagnosis. - -Adults use different techniques and methods to express their feelings (like sick, happy, stressed, or hungry), but this case is usually different for infants who cannot express their feelings. Based on the baby movements, AI can predict their expression or health. - -In this use case, we examine how AI-powered video analytics can assist new parents and hospitals by addressing pose-based real-time body movements of the infants (such as arching back, head banging, kicking legs, rubbing eyes, stretching, and sucking fingers). During the initial months of a baby's life, spontaneous movements might indicate later developmental disorders, such as cerebral palsy, Rett syndrome, and autism spectrum disorders. - -## Industry challenges - -There are video surveillance systems that are installed for monitoring an infant's movement in many hospitals or homes so that any problem can be witnessed and potentially even stopped before they take place. These systems require much manual work to monitor the real-stream videos and intervene when a problem is detected. - -There is a certain amount of trust that you must place on the person who monitors a surveillance system to ensure that the job is being done effectively and efficiently, and that the surveillance system is being vigilantly watched. Because of the dependency on these manual efforts, you need something "smart" that monitors constantly the surveillance system and detect problems effectively. - -AI is shaping the controls of surveillance that can map and track occurrences with self-learning abilities, AI can improve on human operations and analyze video footage in real time to alert the hospitals or parents if any anomalies are identified. - -Video processing a stream of data from surveillance systems and then performing advance analytics and detecting anomalies quickly is a significant challenge in the industry. - -## Infant motion analytics in real time - -AI is the current "market trend evolution" in video analytics and advancing the decision-making capabilities of the human mind. DL-based computer vision AI techniques are being widely adopted by various industries to solve real-time problems. These techniques improve the detection and prediction accuracy without increasing the hardware cost exponentially. For users, AI greatly reduces the workload of the monitoring staff and provides benefits by detecting unusual incidents and solving many video forensic problems. - -CP4D was used to build and deploy the AI-powered video analytics on infant's motion for health prediction use case on IBM Z. IBM Z with AI accelerator enables faster inference for detecting face and body movements and performing angle analytics in real time. - -Figure 24 shows an architectural diagram about how to design and develop an AI model for real-time body pose detection on IBM Z. A deep convolutional neural network architecture was trained on the task of infant pose estimation on the custom data set by leveraging IBM Cloud Pak for Data. - -Figure 24 Architecture for AI-powered video analytics - - - -Live camera feeds or recorded videos of an infant's movement are the inputs for a pose detection model. This video streaming data was stored in IBM Cloudfi Object Storage for image processing. Video data must be transformed into frames so that the infant's body poses can be detected. These post-estimation components of the pipeline predict the location of all 17-person key points with 3 degrees of freedom each (x, y location and visibility) plus two virtual alignment key points. This approach also embraces a compute-intensive heat map prediction of infant body posture. - -When changes in body posture or movement happen, analytics can be performed, and a threshold can be set for the angle of the body and posture movements. An analysis can be performed on movement that is based on that threshold to help to predict an infant's health index in the output video stream by leveraging the IBM z16 on-chip AI acceleration, which provides an execution speed in real time on an edge device, which cannot be achieved by other means. - -We can leverage the following AI technology stack for this use case: - -- GLYPH Convolutional neural network: Build an artificial neural network model on video streaming and images. -- GLYPH TensorFlow: A DL back-end framework that is based on TensorFlow. -- GLYPH Mediapipe: A library that helps with video streaming processing and prediction of human pose estimation. -- GLYPH OpenCV: A real-time computer vision library that helps perform image processing. - -WML was used for deployment of the pose detection model and generated notifications to users with web and mobile applications, and it integrates with Fitbit for push notifications so that hospitals and parents can take preventive actions. - -## Additional resources - -- GLYPH The Cloud Pak for Data 4.5 on IBM Z Overview Demo video provides an overview of some of the more important features of CP4D on IBM Z. -- GLYPH IBM Cloud Pak for Data Tutorials. -- GLYPH Here are some additional use cases that use the data science frameworks that are available as part of CP4D on IBM Z and IBM LinuxONE: -- -Payment Card Fraud Detection by using TensorFlow on CP4D on IBM Z and IBM LinuxONE is a payment card fraud detection use case. -- -Fashion-MNIST clothing classification with PyTorch on Cloud Pak for Data on IBM Z and IBM LinuxONE is a Fashion-MNIST clothing classification use case. -- -Payment Card Fraud Prevention by using Snap ML on IBM Cloud Pak for Data on Red Hat OpenShift on a virtual machine on IBM Z and IBM LinuxONE, which leverage the z16 integrated AI accelerator describes a use case that uses Snap Machine Learning in Cloud Pak for Data on IBM Z and IBM LinuxONE. It is a Snap ML use case. - -A companion video can be found at Credit Card Fraud Detection by using Snap ML on IBM Cloud Pak for Data on IBM Z and IBM LinuxONE. - -## Summary - -This IBM Redbooksfi publication presented an overview of how IBM Cloud Pak for Data on IBM Z can modernize your data infrastructure; develop and deploy ML and AI models; and instantiate highly efficient analytics deployment on IBM LinuxONE. This publication demonstrated these tasks by guiding the reader through five common use cases where CP4D on IBM Z and IBM LinuxONE uses the different features that are supported on the platform, and showing how the associated features can help an enterprise to build AI and ML models with core transactional data, which results in a highly efficient analytics deployment that minimizes latency, cost inefficiencies, and potential security exposures that are connected with data transportation. - -## Authors - -This publication was produced by a team of specialists from around the world working with the IBM Redbooks team: - -Jasmeet Bhatia is an AI on IBM Z Product Manager who supports CP4D on IBM Z. She has 2.5 years of combined experience as a data scientist and a product manager. Jasmeet lives in San Francisco, California and holds a Bachelor of Arts degree in Data Science. She is working on her Master of Science degree in Data Science. Her area of expertise includes AI, data science, and product management. - -Ravi Gummadi is a Technical Leader for CP4D on Linux on IBM Z and IBM LinuxONE in India. He has 18+ years of experience in the design and development of enterprise software for various platforms, including IBM Z and IBM LinuxONE. He holds a master's degree in computer science and engineering from the Indian Institute of Technology Madras (IIT Madras). His areas of expertise include compilers, virtualization, big data analytics, containers, data, and AI, with a special focus on open-source ecosystems. - -Chandra Shekhar Reddy Potula is a Lead AI on zSystems team Architect for Linux on IBM Z and LinuxONE in India. He has 18+ years of experience in the design and development of enterprise software and firmware for various platforms, including IBM Z and LinuxONE. He holds a degree in computer science of engineering from Jawaharlal Nehru Technological University (JNTU). His areas of expertise include networking, virtualization, containers, data, and AI, with a special focus on open-source ecosystems. - -Srirama Sharma is a Lead Technical Architect for IBM Cloud Pak, IBM Instanafi, IBM Turbonomicfi, and Red Hat Advanced Cluster Management for Kubernetes (RHACM) on IBM Z and LinuxONE. He has 18+ years of experience in UNIX and Linux application and device driver development. He designs ISV solutions on IBM Systems and IBM Blockchainfi. He also works on cloud-native adoption of enterprise solutions on IBM Z and LinuxONE. Srirama holds a Bachelor of Engineering degree in computer science from Visvesvaraya Technological University (VTU). He lives in Bangalore, Karnataka. His areas of expertise include UNIX and Linux systems programming, virtualization, performance benchmarking of Financial Services Sector (FSS) industry solutions, open-source ecosystems, server infrastructure, and cloud-native adoption and modernization. - -Thanks to the following people for their contributions to this project: - -Lydia Parziale, Project Manager IBM Redbooks, Poughkeepsie Center - -Shin Kelly Yang, AI on IBM Z Product Management IBM US - -Tom Ramey, Anna Shugol, Andrew Sica, Jonathan Sloan, Elpida Tzortzatos, Meeta Vouk, IBM - -## Now you can become a published author, too! - -Here's an opportunity to spotlight your skills, grow your career, and become a published author-all at the same time! Join an IBM Redbooks residency project and help write a book in your area of expertise, while honing your experience using leading-edge technologies. Your efforts will help to increase product acceptance and customer satisfaction, as you expand your network of technical contacts and relationships. Residencies run from two to six weeks in length, and you can participate either in person or as a remote resident working from your home base. - -Find out more about the residency program, browse the residency index, and apply online at: - -ibm.com /redbooks/residencies.html - -## Stay connected to IBM Redbooks - -- GLYPH Find us on LinkedIn: - -http://www.linkedin.com/groups?home=&gid=2130806 - -- GLYPH Explore new Redbooks publications, residencies, and workshops with the IBM Redbooks weekly newsletter: -- https://www.redbooks.ibm.com/Redbooks.nsf/subscribe?OpenForm -- GLYPH Stay current on recent Redbooks publications with RSS Feeds: - -http://www.redbooks.ibm.com/rss.html - -## Notices - -This information was developed for products and services offered in the US. This material might be available from IBM in other languages. However, you may be required to own a copy of the product or product version in that language in order to access it. - -IBM may not offer the products, services, or features discussed in this document in other countries. Consult your local IBM representative for information on the products and services currently available in your area. Any reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, program, or service may be used. Any functionally equivalent product, program, or service that does not infringe any IBM intellectual property right may be used instead. However, it is the user's responsibility to evaluate and verify the operation of any non-IBM product, program, or service. - -IBM may have patents or pending patent applications covering subject matter described in this document. The furnishing of this document does not grant you any license to these patents. You can send license inquiries, in writing, to: - -IBM Director of Licensing, IBM Corporation, North Castle Drive, MD-NC119, Armonk, NY 10504-1785, US - -INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some jurisdictions do not allow disclaimer of express or implied warranties in certain transactions, therefore, this statement may not apply to you. - -This information could include technical inaccuracies or typographical errors. Changes are periodically made to the information herein; these changes will be incorporated in new editions of the publication. IBM may make improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time without notice. - -Any references in this information to non-IBM websites are provided for convenience only and do not in any manner serve as an endorsement of those websites. The materials at those websites are not part of the materials for this IBM product and use of those websites is at your own risk. - -IBM may use or distribute any of the information you provide in any way it believes appropriate without incurring any obligation to you. - -The performance data and client examples cited are presented for illustrative purposes only. Actual performance results may vary depending on specific configurations and operating conditions. - -Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly available sources. IBM has not tested those products and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products. - -Statements regarding IBM's future direction or intent are subject to change or withdrawal without notice, and represent goals and objectives only. - -This information contains examples of data and reports used in daily business operations. To illustrate them as completely as possible, the examples include the names of individuals, companies, brands, and products. All of these names are fictitious and any similarity to actual people or business enterprises is entirely coincidental. - -## COPYRIGHT LICENSE: - -This information contains sample application programs in source language, which illustrate programming techniques on various operating platforms. You may copy, modify, and distribute these sample programs in any form without payment to IBM, for the purposes of developing, using, marketing or distributing application programs conforming to the application programming interface for the operating platform for which the sample programs are written. These examples have not been thoroughly tested under all conditions. IBM, therefore, cannot guarantee or imply reliability, serviceability, or function of these programs. The sample programs are provided "AS IS", without warranty of any kind. IBM shall not be liable for any damages arising out of your use of the sample programs. - -## Trademarks - -IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines Corporation, registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the web at "Copyright and trademark information" at http://www.ibm.com/legal/copytrade.shtml - -The following terms are trademarks or registered trademarks of International Business Machines Corporation, and might also be trademarks or registered trademarks in other countries. - -Db2fi IBMfi - -IBM Blockchainfi - -IBM Cloudfi IBM Clou - -d Pakfi - -IBM Telum™ - -IBM Watsonfi - -IBM z16™ - -Instanafi - -Open Libertyfi - -OpenPagesfi - -Redbooksfi - -The following terms are trademarks of other companies: - -Intel, Intel logo, Intel Inside logo, and Intel Centrino logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries. - -The registered trademark Linuxfi is used pursuant to a sublicense from the Linux Foundation, the exclusive licensee of Linus Torvalds, owner of the mark on a worldwide basis. - -Red Hat and OpenShift are trademarks or registered trademarks of Red Hat, Inc. or its subsidiaries in the United States and other countries. - -UNIX is a registered trademark of The Open Group in the United States and other countries. - -Other company, product, or service names may be trademarks or service marks of others. - -Redbooks (log o) fi Turbon - -omicfi - -WebSpherefi - -z/OSfi - -z16™ - - - -Back cover - - - -REDP-5695-00 - -ISBN 0738461067 - - \ No newline at end of file diff --git a/tests/data/groundtruth/docling_v2/redp5695.pages.json b/tests/data/groundtruth/docling_v2/redp5695.pages.json deleted file mode 100644 index 9c82cd2d..00000000 --- a/tests/data/groundtruth/docling_v2/redp5695.pages.json +++ /dev/null @@ -1 +0,0 @@ -[{"page_no": 0, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Redguide", "bbox": {"l": 467.28, "t": 742.816563, "r": 571.54285, "b": 767.70096, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Data and AI", "bbox": {"l": 41.4967, "t": 630.4333300000001, "r": 138.05457, "b": 652.22569, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Front cover", "bbox": {"l": 285.95999, "t": 9.22802999999999, "r": 417.89999, "b": 31.42804000000001, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "IBM Cloud Pak for Data on ", "bbox": {"l": 44.82, "t": 110.22455000000002, "r": 535.76471, "b": 151.12896999999998, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "IBM Z", "bbox": {"l": 44.82, "t": 155.22400000000005, "r": 149.55365, "b": 196.12842, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Jasmeet Bhatia", "bbox": {"l": 44.759998, "t": 301.83829, "r": 124.83324, "b": 314.28049000000004, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Ravi Gummadi", "bbox": {"l": 44.759998, "t": 327.3378000000001, "r": 119.91647, "b": 339.7799999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Chandra Shekhar Reddy Potula", "bbox": {"l": 44.759998, "t": 352.83730999999995, "r": 204.99734, "b": 365.27951, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Srirama Sharma", "bbox": {"l": 44.759998, "t": 378.33682, "r": 128.92659, "b": 390.77902, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "picture", "bbox": {"l": 467.1597595214844, "t": 740.4200439453125, "r": 571.54285, "b": 768.4144287109375, "coord_origin": "TOPLEFT"}, "confidence": 0.779976487159729, "cells": [{"id": 0, "text": "Redguide", "bbox": {"l": 467.28, "t": 742.816563, "r": 571.54285, "b": 767.70096, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "text", "bbox": {"l": 41.4967, "t": 628.998046875, "r": 138.05457, "b": 652.22569, "coord_origin": "TOPLEFT"}, "confidence": 0.7684483528137207, "cells": [{"id": 1, "text": "Data and AI", "bbox": {"l": 41.4967, "t": 630.4333300000001, "r": 138.05457, "b": 652.22569, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 285.95999, "t": 9.22802999999999, "r": 417.89999, "b": 31.42804000000001, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Front cover", "bbox": {"l": 285.95999, "t": 9.22802999999999, "r": 417.89999, "b": 31.42804000000001, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "section_header", "bbox": {"l": 44.82, "t": 108.52611541748047, "r": 535.76471, "b": 196.12842, "coord_origin": "TOPLEFT"}, "confidence": 0.722160816192627, "cells": [{"id": 3, "text": "IBM Cloud Pak for Data on ", "bbox": {"l": 44.82, "t": 110.22455000000002, "r": 535.76471, "b": 151.12896999999998, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "IBM Z", "bbox": {"l": 44.82, "t": 155.22400000000005, "r": 149.55365, "b": 196.12842, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 43.98441696166992, "t": 300.904052734375, "r": 124.95372772216797, "b": 314.28049000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.8301644325256348, "cells": [{"id": 5, "text": "Jasmeet Bhatia", "bbox": {"l": 44.759998, "t": 301.83829, "r": 124.83324, "b": 314.28049000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 44.41876983642578, "t": 326.1069030761719, "r": 119.91647, "b": 339.7799999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.8449194431304932, "cells": [{"id": 6, "text": "Ravi Gummadi", "bbox": {"l": 44.759998, "t": 327.3378000000001, "r": 119.91647, "b": 339.7799999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 44.286624908447266, "t": 351.3352355957031, "r": 204.99734, "b": 365.7846984863281, "coord_origin": "TOPLEFT"}, "confidence": 0.7996292114257812, "cells": [{"id": 7, "text": "Chandra Shekhar Reddy Potula", "bbox": {"l": 44.759998, "t": 352.83730999999995, "r": 204.99734, "b": 365.27951, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 44.1224250793457, "t": 376.6038818359375, "r": 128.92659, "b": 390.77902, "coord_origin": "TOPLEFT"}, "confidence": 0.8224513530731201, "cells": [{"id": 8, "text": "Srirama Sharma", "bbox": {"l": 44.759998, "t": 378.33682, "r": 128.92659, "b": 390.77902, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 408.87640380859375, "t": 34.33623504638672, "r": 569.0722045898438, "b": 78.19747924804688, "coord_origin": "TOPLEFT"}, "confidence": 0.9278379678726196, "cells": []}, {"id": 9, "label": "picture", "bbox": {"l": 46.60354995727539, "t": 732.5934448242188, "r": 127.91421508789062, "b": 765.55322265625, "coord_origin": "TOPLEFT"}, "confidence": 0.8796597719192505, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "picture", "id": 0, "page_no": 0, "cluster": {"id": 0, "label": "picture", "bbox": {"l": 467.1597595214844, "t": 740.4200439453125, "r": 571.54285, "b": 768.4144287109375, "coord_origin": "TOPLEFT"}, "confidence": 0.779976487159729, "cells": [{"id": 0, "text": "Redguide", "bbox": {"l": 467.28, "t": 742.816563, "r": 571.54285, "b": 767.70096, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "text", "id": 1, "page_no": 0, "cluster": {"id": 1, "label": "text", "bbox": {"l": 41.4967, "t": 628.998046875, "r": 138.05457, "b": 652.22569, "coord_origin": "TOPLEFT"}, "confidence": 0.7684483528137207, "cells": [{"id": 1, "text": "Data and AI", "bbox": {"l": 41.4967, "t": 630.4333300000001, "r": 138.05457, "b": 652.22569, "coord_origin": "TOPLEFT"}}]}, "text": "Data and AI"}, {"label": "text", "id": 2, "page_no": 0, "cluster": {"id": 2, "label": "text", "bbox": {"l": 285.95999, "t": 9.22802999999999, "r": 417.89999, "b": 31.42804000000001, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Front cover", "bbox": {"l": 285.95999, "t": 9.22802999999999, "r": 417.89999, "b": 31.42804000000001, "coord_origin": "TOPLEFT"}}]}, "text": "Front cover"}, {"label": "section_header", "id": 3, "page_no": 0, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 44.82, "t": 108.52611541748047, "r": 535.76471, "b": 196.12842, "coord_origin": "TOPLEFT"}, "confidence": 0.722160816192627, "cells": [{"id": 3, "text": "IBM Cloud Pak for Data on ", "bbox": {"l": 44.82, "t": 110.22455000000002, "r": 535.76471, "b": 151.12896999999998, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "IBM Z", "bbox": {"l": 44.82, "t": 155.22400000000005, "r": 149.55365, "b": 196.12842, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM Z"}, {"label": "text", "id": 4, "page_no": 0, "cluster": {"id": 4, "label": "text", "bbox": {"l": 43.98441696166992, "t": 300.904052734375, "r": 124.95372772216797, "b": 314.28049000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.8301644325256348, "cells": [{"id": 5, "text": "Jasmeet Bhatia", "bbox": {"l": 44.759998, "t": 301.83829, "r": 124.83324, "b": 314.28049000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Jasmeet Bhatia"}, {"label": "text", "id": 5, "page_no": 0, "cluster": {"id": 5, "label": "text", "bbox": {"l": 44.41876983642578, "t": 326.1069030761719, "r": 119.91647, "b": 339.7799999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.8449194431304932, "cells": [{"id": 6, "text": "Ravi Gummadi", "bbox": {"l": 44.759998, "t": 327.3378000000001, "r": 119.91647, "b": 339.7799999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Ravi Gummadi"}, {"label": "text", "id": 6, "page_no": 0, "cluster": {"id": 6, "label": "text", "bbox": {"l": 44.286624908447266, "t": 351.3352355957031, "r": 204.99734, "b": 365.7846984863281, "coord_origin": "TOPLEFT"}, "confidence": 0.7996292114257812, "cells": [{"id": 7, "text": "Chandra Shekhar Reddy Potula", "bbox": {"l": 44.759998, "t": 352.83730999999995, "r": 204.99734, "b": 365.27951, "coord_origin": "TOPLEFT"}}]}, "text": "Chandra Shekhar Reddy Potula"}, {"label": "text", "id": 7, "page_no": 0, "cluster": {"id": 7, "label": "text", "bbox": {"l": 44.1224250793457, "t": 376.6038818359375, "r": 128.92659, "b": 390.77902, "coord_origin": "TOPLEFT"}, "confidence": 0.8224513530731201, "cells": [{"id": 8, "text": "Srirama Sharma", "bbox": {"l": 44.759998, "t": 378.33682, "r": 128.92659, "b": 390.77902, "coord_origin": "TOPLEFT"}}]}, "text": "Srirama Sharma"}, {"label": "picture", "id": 8, "page_no": 0, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 408.87640380859375, "t": 34.33623504638672, "r": 569.0722045898438, "b": 78.19747924804688, "coord_origin": "TOPLEFT"}, "confidence": 0.9278379678726196, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 9, "page_no": 0, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 46.60354995727539, "t": 732.5934448242188, "r": 127.91421508789062, "b": 765.55322265625, "coord_origin": "TOPLEFT"}, "confidence": 0.8796597719192505, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "picture", "id": 0, "page_no": 0, "cluster": {"id": 0, "label": "picture", "bbox": {"l": 467.1597595214844, "t": 740.4200439453125, "r": 571.54285, "b": 768.4144287109375, "coord_origin": "TOPLEFT"}, "confidence": 0.779976487159729, "cells": [{"id": 0, "text": "Redguide", "bbox": {"l": 467.28, "t": 742.816563, "r": 571.54285, "b": 767.70096, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "text", "id": 1, "page_no": 0, "cluster": {"id": 1, "label": "text", "bbox": {"l": 41.4967, "t": 628.998046875, "r": 138.05457, "b": 652.22569, "coord_origin": "TOPLEFT"}, "confidence": 0.7684483528137207, "cells": [{"id": 1, "text": "Data and AI", "bbox": {"l": 41.4967, "t": 630.4333300000001, "r": 138.05457, "b": 652.22569, "coord_origin": "TOPLEFT"}}]}, "text": "Data and AI"}, {"label": "text", "id": 2, "page_no": 0, "cluster": {"id": 2, "label": "text", "bbox": {"l": 285.95999, "t": 9.22802999999999, "r": 417.89999, "b": 31.42804000000001, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 2, "text": "Front cover", "bbox": {"l": 285.95999, "t": 9.22802999999999, "r": 417.89999, "b": 31.42804000000001, "coord_origin": "TOPLEFT"}}]}, "text": "Front cover"}, {"label": "section_header", "id": 3, "page_no": 0, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 44.82, "t": 108.52611541748047, "r": 535.76471, "b": 196.12842, "coord_origin": "TOPLEFT"}, "confidence": 0.722160816192627, "cells": [{"id": 3, "text": "IBM Cloud Pak for Data on ", "bbox": {"l": 44.82, "t": 110.22455000000002, "r": 535.76471, "b": 151.12896999999998, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "IBM Z", "bbox": {"l": 44.82, "t": 155.22400000000005, "r": 149.55365, "b": 196.12842, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM Z"}, {"label": "text", "id": 4, "page_no": 0, "cluster": {"id": 4, "label": "text", "bbox": {"l": 43.98441696166992, "t": 300.904052734375, "r": 124.95372772216797, "b": 314.28049000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.8301644325256348, "cells": [{"id": 5, "text": "Jasmeet Bhatia", "bbox": {"l": 44.759998, "t": 301.83829, "r": 124.83324, "b": 314.28049000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Jasmeet Bhatia"}, {"label": "text", "id": 5, "page_no": 0, "cluster": {"id": 5, "label": "text", "bbox": {"l": 44.41876983642578, "t": 326.1069030761719, "r": 119.91647, "b": 339.7799999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.8449194431304932, "cells": [{"id": 6, "text": "Ravi Gummadi", "bbox": {"l": 44.759998, "t": 327.3378000000001, "r": 119.91647, "b": 339.7799999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Ravi Gummadi"}, {"label": "text", "id": 6, "page_no": 0, "cluster": {"id": 6, "label": "text", "bbox": {"l": 44.286624908447266, "t": 351.3352355957031, "r": 204.99734, "b": 365.7846984863281, "coord_origin": "TOPLEFT"}, "confidence": 0.7996292114257812, "cells": [{"id": 7, "text": "Chandra Shekhar Reddy Potula", "bbox": {"l": 44.759998, "t": 352.83730999999995, "r": 204.99734, "b": 365.27951, "coord_origin": "TOPLEFT"}}]}, "text": "Chandra Shekhar Reddy Potula"}, {"label": "text", "id": 7, "page_no": 0, "cluster": {"id": 7, "label": "text", "bbox": {"l": 44.1224250793457, "t": 376.6038818359375, "r": 128.92659, "b": 390.77902, "coord_origin": "TOPLEFT"}, "confidence": 0.8224513530731201, "cells": [{"id": 8, "text": "Srirama Sharma", "bbox": {"l": 44.759998, "t": 378.33682, "r": 128.92659, "b": 390.77902, "coord_origin": "TOPLEFT"}}]}, "text": "Srirama Sharma"}, {"label": "picture", "id": 8, "page_no": 0, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 408.87640380859375, "t": 34.33623504638672, "r": 569.0722045898438, "b": 78.19747924804688, "coord_origin": "TOPLEFT"}, "confidence": 0.9278379678726196, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 9, "page_no": 0, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 46.60354995727539, "t": 732.5934448242188, "r": 127.91421508789062, "b": 765.55322265625, "coord_origin": "TOPLEFT"}, "confidence": 0.8796597719192505, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": []}}, {"page_no": 1, "size": {"width": 612.0, "height": 792.0}, "cells": [], "predictions": {"layout": {"clusters": []}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [], "body": [], "headers": []}}, {"page_no": 2, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2023.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 180.32761, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "1", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Executive overview ", "bbox": {"l": 64.800003, "t": 258.10803, "r": 292.85278, "b": 280.30800999999997, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Most industries are susceptible to fraud, which poses a risk to both businesses and ", "bbox": {"l": 136.8, "t": 316.84872, "r": 506.27911, "b": 326.06171, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "consumers. According to The National Health Care Anti-Fraud Association, health care fraud ", "bbox": {"l": 136.8, "t": 328.84854, "r": 547.28046, "b": 338.06152, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "alone causes the nation around $68 billion annually.$^{1}$ This statistic does not include the ", "bbox": {"l": 136.8, "t": 340.84836, "r": 524.11841, "b": 350.06134, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "numerous other industries where fraudulent activities occur daily. In addition, the growing ", "bbox": {"l": 136.79968, "t": 352.84854, "r": 532.83832, "b": 362.06152, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "amount of data that enterprises own makes it difficult for them to detect fraud. Businesses ", "bbox": {"l": 136.79968, "t": 364.84836, "r": 535.57996, "b": 374.06134, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "can benefit by using an analytical platform to fully integrate their data with artificial intelligence ", "bbox": {"l": 136.79968, "t": 376.84817999999996, "r": 547.19049, "b": 386.06116, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "(AI) technology. ", "bbox": {"l": 136.80066, "t": 388.84799, "r": 209.60324, "b": 398.06097000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "With IBM Cloud Pakfi for Data on IBM Z, enterprises can modernize their data infrastructure, ", "bbox": {"l": 136.80066, "t": 410.8078, "r": 547.34985, "b": 420.02078, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "develop, and deploy machine learning (ML) and AI models, and instantiate highly efficient ", "bbox": {"l": 136.80066, "t": 422.80761999999993, "r": 534.58722, "b": 432.0206, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "analytics deployment on IBM LinuxONE. Enterprises can create cutting-edge, intelligent, and ", "bbox": {"l": 136.80066, "t": 434.80743, "r": 547.26221, "b": 444.02042, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "interactive applications with embedded AI, colocate data with commercial applications, and ", "bbox": {"l": 136.80167, "t": 446.80725, "r": 540.7652, "b": 456.02022999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "use AI to make inferences. ", "bbox": {"l": 136.80167, "t": 458.80707, "r": 257.92322, "b": 468.02005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "This IBM Redguide publication presents a high-level overview of IBM Z. It describes IBM ", "bbox": {"l": 136.80167, "t": 480.82663, "r": 529.99939, "b": 490.03961, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Cloud Pak for Data (CP4D) on IBM Z and IBM LinuxONE, the different features that are ", "bbox": {"l": 136.80165, "t": 492.82645, "r": 525.74866, "b": 502.03943, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "supported on the platform, and how the associated features can help enterprise customers in ", "bbox": {"l": 136.80165, "t": 504.82626, "r": 547.28827, "b": 514.03925, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "building AI and ML models by using core transactional data, which results in decreased ", "bbox": {"l": 136.80165, "t": 516.82608, "r": 524.57123, "b": 526.0390600000001, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "latency and increased throughput. ", "bbox": {"l": 136.80165, "t": 528.8259, "r": 290.11591, "b": 538.03889, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "This publication highlights real-time CP4D on IBM Z use cases. Real-time Clearing and ", "bbox": {"l": 136.80165, "t": 550.84546, "r": 523.98566, "b": 560.05846, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Settlement Transactions, Trustworthy AI and its Role in Day-To-Day Monitoring, and the ", "bbox": {"l": 136.80165, "t": 562.84526, "r": 528.39105, "b": 572.05826, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Prevention of Retail Crimes are use cases that are described in this publication. Using CP4D ", "bbox": {"l": 136.80165, "t": 574.84506, "r": 547.276, "b": 584.0580600000001, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "on IBM Z and LinuxONE, this publication shows how businesses can implement a highly ", "bbox": {"l": 136.80165, "t": 586.84486, "r": 529.57623, "b": 596.05786, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "efficient analytics deployment that minimizes latency, cost inefficiencies, and potential ", "bbox": {"l": 136.80164, "t": 598.84467, "r": 517.91602, "b": 608.0576599999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "security exposures that are connected with data transportation.", "bbox": {"l": 136.80164, "t": 610.84447, "r": 415.15964, "b": 620.05746, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "$^{1 }$https://www.bcbsm.com/health-care-fraud/fraud-statistics.html", "bbox": {"l": 136.8, "t": 727.709961, "r": 387.78561, "b": 734.740341, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.59157943725586, "t": 754.58740234375, "r": 180.34423828125, "b": 764.0753173828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9356479644775391, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2023.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 180.32761, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 541.2573852539062, "t": 754.3030395507812, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8480042219161987, "cells": [{"id": 1, "text": "1", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.800003, "t": 256.93267822265625, "r": 292.85278, "b": 280.30800999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.939366340637207, "cells": [{"id": 2, "text": "Executive overview ", "bbox": {"l": 64.800003, "t": 258.10803, "r": 292.85278, "b": 280.30800999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.93707275390625, "t": 315.9909362792969, "r": 547.28046, "b": 398.67059326171875, "coord_origin": "TOPLEFT"}, "confidence": 0.9878793358802795, "cells": [{"id": 3, "text": "Most industries are susceptible to fraud, which poses a risk to both businesses and ", "bbox": {"l": 136.8, "t": 316.84872, "r": 506.27911, "b": 326.06171, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "consumers. According to The National Health Care Anti-Fraud Association, health care fraud ", "bbox": {"l": 136.8, "t": 328.84854, "r": 547.28046, "b": 338.06152, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "alone causes the nation around $68 billion annually.$^{1}$ This statistic does not include the ", "bbox": {"l": 136.8, "t": 340.84836, "r": 524.11841, "b": 350.06134, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "numerous other industries where fraudulent activities occur daily. In addition, the growing ", "bbox": {"l": 136.79968, "t": 352.84854, "r": 532.83832, "b": 362.06152, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "amount of data that enterprises own makes it difficult for them to detect fraud. Businesses ", "bbox": {"l": 136.79968, "t": 364.84836, "r": 535.57996, "b": 374.06134, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "can benefit by using an analytical platform to fully integrate their data with artificial intelligence ", "bbox": {"l": 136.79968, "t": 376.84817999999996, "r": 547.19049, "b": 386.06116, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "(AI) technology. ", "bbox": {"l": 136.80066, "t": 388.84799, "r": 209.60324, "b": 398.06097000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.84193420410156, "t": 410.041015625, "r": 547.34985, "b": 468.02005, "coord_origin": "TOPLEFT"}, "confidence": 0.9871250987052917, "cells": [{"id": 10, "text": "With IBM Cloud Pakfi for Data on IBM Z, enterprises can modernize their data infrastructure, ", "bbox": {"l": 136.80066, "t": 410.8078, "r": 547.34985, "b": 420.02078, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "develop, and deploy machine learning (ML) and AI models, and instantiate highly efficient ", "bbox": {"l": 136.80066, "t": 422.80761999999993, "r": 534.58722, "b": 432.0206, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "analytics deployment on IBM LinuxONE. Enterprises can create cutting-edge, intelligent, and ", "bbox": {"l": 136.80066, "t": 434.80743, "r": 547.26221, "b": 444.02042, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "interactive applications with embedded AI, colocate data with commercial applications, and ", "bbox": {"l": 136.80167, "t": 446.80725, "r": 540.7652, "b": 456.02022999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "use AI to make inferences. ", "bbox": {"l": 136.80167, "t": 458.80707, "r": 257.92322, "b": 468.02005, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.86183166503906, "t": 479.9052734375, "r": 547.28827, "b": 538.6532592773438, "coord_origin": "TOPLEFT"}, "confidence": 0.9879317879676819, "cells": [{"id": 15, "text": "This IBM Redguide publication presents a high-level overview of IBM Z. It describes IBM ", "bbox": {"l": 136.80167, "t": 480.82663, "r": 529.99939, "b": 490.03961, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Cloud Pak for Data (CP4D) on IBM Z and IBM LinuxONE, the different features that are ", "bbox": {"l": 136.80165, "t": 492.82645, "r": 525.74866, "b": 502.03943, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "supported on the platform, and how the associated features can help enterprise customers in ", "bbox": {"l": 136.80165, "t": 504.82626, "r": 547.28827, "b": 514.03925, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "building AI and ML models by using core transactional data, which results in decreased ", "bbox": {"l": 136.80165, "t": 516.82608, "r": 524.57123, "b": 526.0390600000001, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "latency and increased throughput. ", "bbox": {"l": 136.80165, "t": 528.8259, "r": 290.11591, "b": 538.03889, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 135.76502990722656, "t": 549.9137573242188, "r": 547.276, "b": 620.0858764648438, "coord_origin": "TOPLEFT"}, "confidence": 0.9879330992698669, "cells": [{"id": 20, "text": "This publication highlights real-time CP4D on IBM Z use cases. Real-time Clearing and ", "bbox": {"l": 136.80165, "t": 550.84546, "r": 523.98566, "b": 560.05846, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Settlement Transactions, Trustworthy AI and its Role in Day-To-Day Monitoring, and the ", "bbox": {"l": 136.80165, "t": 562.84526, "r": 528.39105, "b": 572.05826, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Prevention of Retail Crimes are use cases that are described in this publication. Using CP4D ", "bbox": {"l": 136.80165, "t": 574.84506, "r": 547.276, "b": 584.0580600000001, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "on IBM Z and LinuxONE, this publication shows how businesses can implement a highly ", "bbox": {"l": 136.80165, "t": 586.84486, "r": 529.57623, "b": 596.05786, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "efficient analytics deployment that minimizes latency, cost inefficiencies, and potential ", "bbox": {"l": 136.80164, "t": 598.84467, "r": 517.91602, "b": 608.0576599999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "security exposures that are connected with data transportation.", "bbox": {"l": 136.80164, "t": 610.84447, "r": 415.15964, "b": 620.05746, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "footnote", "bbox": {"l": 136.8, "t": 725.2650146484375, "r": 387.78561, "b": 734.9249267578125, "coord_origin": "TOPLEFT"}, "confidence": 0.8821995854377747, "cells": [{"id": 26, "text": "$^{1 }$https://www.bcbsm.com/health-care-fraud/fraud-statistics.html", "bbox": {"l": 136.8, "t": 727.709961, "r": 387.78561, "b": 734.740341, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 32.92374801635742, "t": 70.42400360107422, "r": 239.95321655273438, "b": 236.60231018066406, "coord_origin": "TOPLEFT"}, "confidence": 0.8423530459403992, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 2, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.59157943725586, "t": 754.58740234375, "r": 180.34423828125, "b": 764.0753173828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9356479644775391, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2023.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 180.32761, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2023."}, {"label": "page_footer", "id": 1, "page_no": 2, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 541.2573852539062, "t": 754.3030395507812, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8480042219161987, "cells": [{"id": 1, "text": "1", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "1"}, {"label": "section_header", "id": 2, "page_no": 2, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.800003, "t": 256.93267822265625, "r": 292.85278, "b": 280.30800999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.939366340637207, "cells": [{"id": 2, "text": "Executive overview ", "bbox": {"l": 64.800003, "t": 258.10803, "r": 292.85278, "b": 280.30800999999997, "coord_origin": "TOPLEFT"}}]}, "text": "Executive overview"}, {"label": "text", "id": 3, "page_no": 2, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.93707275390625, "t": 315.9909362792969, "r": 547.28046, "b": 398.67059326171875, "coord_origin": "TOPLEFT"}, "confidence": 0.9878793358802795, "cells": [{"id": 3, "text": "Most industries are susceptible to fraud, which poses a risk to both businesses and ", "bbox": {"l": 136.8, "t": 316.84872, "r": 506.27911, "b": 326.06171, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "consumers. According to The National Health Care Anti-Fraud Association, health care fraud ", "bbox": {"l": 136.8, "t": 328.84854, "r": 547.28046, "b": 338.06152, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "alone causes the nation around $68 billion annually.$^{1}$ This statistic does not include the ", "bbox": {"l": 136.8, "t": 340.84836, "r": 524.11841, "b": 350.06134, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "numerous other industries where fraudulent activities occur daily. In addition, the growing ", "bbox": {"l": 136.79968, "t": 352.84854, "r": 532.83832, "b": 362.06152, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "amount of data that enterprises own makes it difficult for them to detect fraud. Businesses ", "bbox": {"l": 136.79968, "t": 364.84836, "r": 535.57996, "b": 374.06134, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "can benefit by using an analytical platform to fully integrate their data with artificial intelligence ", "bbox": {"l": 136.79968, "t": 376.84817999999996, "r": 547.19049, "b": 386.06116, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "(AI) technology. ", "bbox": {"l": 136.80066, "t": 388.84799, "r": 209.60324, "b": 398.06097000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Most industries are susceptible to fraud, which poses a risk to both businesses and consumers. According to The National Health Care Anti-Fraud Association, health care fraud alone causes the nation around $68 billion annually.$^{1}$ This statistic does not include the numerous other industries where fraudulent activities occur daily. In addition, the growing amount of data that enterprises own makes it difficult for them to detect fraud. Businesses can benefit by using an analytical platform to fully integrate their data with artificial intelligence (AI) technology."}, {"label": "text", "id": 4, "page_no": 2, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.84193420410156, "t": 410.041015625, "r": 547.34985, "b": 468.02005, "coord_origin": "TOPLEFT"}, "confidence": 0.9871250987052917, "cells": [{"id": 10, "text": "With IBM Cloud Pakfi for Data on IBM Z, enterprises can modernize their data infrastructure, ", "bbox": {"l": 136.80066, "t": 410.8078, "r": 547.34985, "b": 420.02078, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "develop, and deploy machine learning (ML) and AI models, and instantiate highly efficient ", "bbox": {"l": 136.80066, "t": 422.80761999999993, "r": 534.58722, "b": 432.0206, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "analytics deployment on IBM LinuxONE. Enterprises can create cutting-edge, intelligent, and ", "bbox": {"l": 136.80066, "t": 434.80743, "r": 547.26221, "b": 444.02042, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "interactive applications with embedded AI, colocate data with commercial applications, and ", "bbox": {"l": 136.80167, "t": 446.80725, "r": 540.7652, "b": 456.02022999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "use AI to make inferences. ", "bbox": {"l": 136.80167, "t": 458.80707, "r": 257.92322, "b": 468.02005, "coord_origin": "TOPLEFT"}}]}, "text": "With IBM Cloud Pakfi for Data on IBM Z, enterprises can modernize their data infrastructure, develop, and deploy machine learning (ML) and AI models, and instantiate highly efficient analytics deployment on IBM LinuxONE. Enterprises can create cutting-edge, intelligent, and interactive applications with embedded AI, colocate data with commercial applications, and use AI to make inferences."}, {"label": "text", "id": 5, "page_no": 2, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.86183166503906, "t": 479.9052734375, "r": 547.28827, "b": 538.6532592773438, "coord_origin": "TOPLEFT"}, "confidence": 0.9879317879676819, "cells": [{"id": 15, "text": "This IBM Redguide publication presents a high-level overview of IBM Z. It describes IBM ", "bbox": {"l": 136.80167, "t": 480.82663, "r": 529.99939, "b": 490.03961, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Cloud Pak for Data (CP4D) on IBM Z and IBM LinuxONE, the different features that are ", "bbox": {"l": 136.80165, "t": 492.82645, "r": 525.74866, "b": 502.03943, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "supported on the platform, and how the associated features can help enterprise customers in ", "bbox": {"l": 136.80165, "t": 504.82626, "r": 547.28827, "b": 514.03925, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "building AI and ML models by using core transactional data, which results in decreased ", "bbox": {"l": 136.80165, "t": 516.82608, "r": 524.57123, "b": 526.0390600000001, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "latency and increased throughput. ", "bbox": {"l": 136.80165, "t": 528.8259, "r": 290.11591, "b": 538.03889, "coord_origin": "TOPLEFT"}}]}, "text": "This IBM Redguide publication presents a high-level overview of IBM Z. It describes IBM Cloud Pak for Data (CP4D) on IBM Z and IBM LinuxONE, the different features that are supported on the platform, and how the associated features can help enterprise customers in building AI and ML models by using core transactional data, which results in decreased latency and increased throughput."}, {"label": "text", "id": 6, "page_no": 2, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.76502990722656, "t": 549.9137573242188, "r": 547.276, "b": 620.0858764648438, "coord_origin": "TOPLEFT"}, "confidence": 0.9879330992698669, "cells": [{"id": 20, "text": "This publication highlights real-time CP4D on IBM Z use cases. Real-time Clearing and ", "bbox": {"l": 136.80165, "t": 550.84546, "r": 523.98566, "b": 560.05846, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Settlement Transactions, Trustworthy AI and its Role in Day-To-Day Monitoring, and the ", "bbox": {"l": 136.80165, "t": 562.84526, "r": 528.39105, "b": 572.05826, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Prevention of Retail Crimes are use cases that are described in this publication. Using CP4D ", "bbox": {"l": 136.80165, "t": 574.84506, "r": 547.276, "b": 584.0580600000001, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "on IBM Z and LinuxONE, this publication shows how businesses can implement a highly ", "bbox": {"l": 136.80165, "t": 586.84486, "r": 529.57623, "b": 596.05786, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "efficient analytics deployment that minimizes latency, cost inefficiencies, and potential ", "bbox": {"l": 136.80164, "t": 598.84467, "r": 517.91602, "b": 608.0576599999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "security exposures that are connected with data transportation.", "bbox": {"l": 136.80164, "t": 610.84447, "r": 415.15964, "b": 620.05746, "coord_origin": "TOPLEFT"}}]}, "text": "This publication highlights real-time CP4D on IBM Z use cases. Real-time Clearing and Settlement Transactions, Trustworthy AI and its Role in Day-To-Day Monitoring, and the Prevention of Retail Crimes are use cases that are described in this publication. Using CP4D on IBM Z and LinuxONE, this publication shows how businesses can implement a highly efficient analytics deployment that minimizes latency, cost inefficiencies, and potential security exposures that are connected with data transportation."}, {"label": "footnote", "id": 7, "page_no": 2, "cluster": {"id": 7, "label": "footnote", "bbox": {"l": 136.8, "t": 725.2650146484375, "r": 387.78561, "b": 734.9249267578125, "coord_origin": "TOPLEFT"}, "confidence": 0.8821995854377747, "cells": [{"id": 26, "text": "$^{1 }$https://www.bcbsm.com/health-care-fraud/fraud-statistics.html", "bbox": {"l": 136.8, "t": 727.709961, "r": 387.78561, "b": 734.740341, "coord_origin": "TOPLEFT"}}]}, "text": "$^{1 }$https://www.bcbsm.com/health-care-fraud/fraud-statistics.html"}, {"label": "picture", "id": 8, "page_no": 2, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 32.92374801635742, "t": 70.42400360107422, "r": 239.95321655273438, "b": 236.60231018066406, "coord_origin": "TOPLEFT"}, "confidence": 0.8423530459403992, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "section_header", "id": 2, "page_no": 2, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.800003, "t": 256.93267822265625, "r": 292.85278, "b": 280.30800999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.939366340637207, "cells": [{"id": 2, "text": "Executive overview ", "bbox": {"l": 64.800003, "t": 258.10803, "r": 292.85278, "b": 280.30800999999997, "coord_origin": "TOPLEFT"}}]}, "text": "Executive overview"}, {"label": "text", "id": 3, "page_no": 2, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.93707275390625, "t": 315.9909362792969, "r": 547.28046, "b": 398.67059326171875, "coord_origin": "TOPLEFT"}, "confidence": 0.9878793358802795, "cells": [{"id": 3, "text": "Most industries are susceptible to fraud, which poses a risk to both businesses and ", "bbox": {"l": 136.8, "t": 316.84872, "r": 506.27911, "b": 326.06171, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "consumers. According to The National Health Care Anti-Fraud Association, health care fraud ", "bbox": {"l": 136.8, "t": 328.84854, "r": 547.28046, "b": 338.06152, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "alone causes the nation around $68 billion annually.$^{1}$ This statistic does not include the ", "bbox": {"l": 136.8, "t": 340.84836, "r": 524.11841, "b": 350.06134, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "numerous other industries where fraudulent activities occur daily. In addition, the growing ", "bbox": {"l": 136.79968, "t": 352.84854, "r": 532.83832, "b": 362.06152, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "amount of data that enterprises own makes it difficult for them to detect fraud. Businesses ", "bbox": {"l": 136.79968, "t": 364.84836, "r": 535.57996, "b": 374.06134, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "can benefit by using an analytical platform to fully integrate their data with artificial intelligence ", "bbox": {"l": 136.79968, "t": 376.84817999999996, "r": 547.19049, "b": 386.06116, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "(AI) technology. ", "bbox": {"l": 136.80066, "t": 388.84799, "r": 209.60324, "b": 398.06097000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Most industries are susceptible to fraud, which poses a risk to both businesses and consumers. According to The National Health Care Anti-Fraud Association, health care fraud alone causes the nation around $68 billion annually.$^{1}$ This statistic does not include the numerous other industries where fraudulent activities occur daily. In addition, the growing amount of data that enterprises own makes it difficult for them to detect fraud. Businesses can benefit by using an analytical platform to fully integrate their data with artificial intelligence (AI) technology."}, {"label": "text", "id": 4, "page_no": 2, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.84193420410156, "t": 410.041015625, "r": 547.34985, "b": 468.02005, "coord_origin": "TOPLEFT"}, "confidence": 0.9871250987052917, "cells": [{"id": 10, "text": "With IBM Cloud Pakfi for Data on IBM Z, enterprises can modernize their data infrastructure, ", "bbox": {"l": 136.80066, "t": 410.8078, "r": 547.34985, "b": 420.02078, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "develop, and deploy machine learning (ML) and AI models, and instantiate highly efficient ", "bbox": {"l": 136.80066, "t": 422.80761999999993, "r": 534.58722, "b": 432.0206, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "analytics deployment on IBM LinuxONE. Enterprises can create cutting-edge, intelligent, and ", "bbox": {"l": 136.80066, "t": 434.80743, "r": 547.26221, "b": 444.02042, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "interactive applications with embedded AI, colocate data with commercial applications, and ", "bbox": {"l": 136.80167, "t": 446.80725, "r": 540.7652, "b": 456.02022999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "use AI to make inferences. ", "bbox": {"l": 136.80167, "t": 458.80707, "r": 257.92322, "b": 468.02005, "coord_origin": "TOPLEFT"}}]}, "text": "With IBM Cloud Pakfi for Data on IBM Z, enterprises can modernize their data infrastructure, develop, and deploy machine learning (ML) and AI models, and instantiate highly efficient analytics deployment on IBM LinuxONE. Enterprises can create cutting-edge, intelligent, and interactive applications with embedded AI, colocate data with commercial applications, and use AI to make inferences."}, {"label": "text", "id": 5, "page_no": 2, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.86183166503906, "t": 479.9052734375, "r": 547.28827, "b": 538.6532592773438, "coord_origin": "TOPLEFT"}, "confidence": 0.9879317879676819, "cells": [{"id": 15, "text": "This IBM Redguide publication presents a high-level overview of IBM Z. It describes IBM ", "bbox": {"l": 136.80167, "t": 480.82663, "r": 529.99939, "b": 490.03961, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Cloud Pak for Data (CP4D) on IBM Z and IBM LinuxONE, the different features that are ", "bbox": {"l": 136.80165, "t": 492.82645, "r": 525.74866, "b": 502.03943, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "supported on the platform, and how the associated features can help enterprise customers in ", "bbox": {"l": 136.80165, "t": 504.82626, "r": 547.28827, "b": 514.03925, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "building AI and ML models by using core transactional data, which results in decreased ", "bbox": {"l": 136.80165, "t": 516.82608, "r": 524.57123, "b": 526.0390600000001, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "latency and increased throughput. ", "bbox": {"l": 136.80165, "t": 528.8259, "r": 290.11591, "b": 538.03889, "coord_origin": "TOPLEFT"}}]}, "text": "This IBM Redguide publication presents a high-level overview of IBM Z. It describes IBM Cloud Pak for Data (CP4D) on IBM Z and IBM LinuxONE, the different features that are supported on the platform, and how the associated features can help enterprise customers in building AI and ML models by using core transactional data, which results in decreased latency and increased throughput."}, {"label": "text", "id": 6, "page_no": 2, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.76502990722656, "t": 549.9137573242188, "r": 547.276, "b": 620.0858764648438, "coord_origin": "TOPLEFT"}, "confidence": 0.9879330992698669, "cells": [{"id": 20, "text": "This publication highlights real-time CP4D on IBM Z use cases. Real-time Clearing and ", "bbox": {"l": 136.80165, "t": 550.84546, "r": 523.98566, "b": 560.05846, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Settlement Transactions, Trustworthy AI and its Role in Day-To-Day Monitoring, and the ", "bbox": {"l": 136.80165, "t": 562.84526, "r": 528.39105, "b": 572.05826, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Prevention of Retail Crimes are use cases that are described in this publication. Using CP4D ", "bbox": {"l": 136.80165, "t": 574.84506, "r": 547.276, "b": 584.0580600000001, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "on IBM Z and LinuxONE, this publication shows how businesses can implement a highly ", "bbox": {"l": 136.80165, "t": 586.84486, "r": 529.57623, "b": 596.05786, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "efficient analytics deployment that minimizes latency, cost inefficiencies, and potential ", "bbox": {"l": 136.80164, "t": 598.84467, "r": 517.91602, "b": 608.0576599999999, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "security exposures that are connected with data transportation.", "bbox": {"l": 136.80164, "t": 610.84447, "r": 415.15964, "b": 620.05746, "coord_origin": "TOPLEFT"}}]}, "text": "This publication highlights real-time CP4D on IBM Z use cases. Real-time Clearing and Settlement Transactions, Trustworthy AI and its Role in Day-To-Day Monitoring, and the Prevention of Retail Crimes are use cases that are described in this publication. Using CP4D on IBM Z and LinuxONE, this publication shows how businesses can implement a highly efficient analytics deployment that minimizes latency, cost inefficiencies, and potential security exposures that are connected with data transportation."}, {"label": "footnote", "id": 7, "page_no": 2, "cluster": {"id": 7, "label": "footnote", "bbox": {"l": 136.8, "t": 725.2650146484375, "r": 387.78561, "b": 734.9249267578125, "coord_origin": "TOPLEFT"}, "confidence": 0.8821995854377747, "cells": [{"id": 26, "text": "$^{1 }$https://www.bcbsm.com/health-care-fraud/fraud-statistics.html", "bbox": {"l": 136.8, "t": 727.709961, "r": 387.78561, "b": 734.740341, "coord_origin": "TOPLEFT"}}]}, "text": "$^{1 }$https://www.bcbsm.com/health-care-fraud/fraud-statistics.html"}, {"label": "picture", "id": 8, "page_no": 2, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 32.92374801635742, "t": 70.42400360107422, "r": 239.95321655273438, "b": 236.60231018066406, "coord_origin": "TOPLEFT"}, "confidence": 0.8423530459403992, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 2, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.59157943725586, "t": 754.58740234375, "r": 180.34423828125, "b": 764.0753173828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9356479644775391, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2023.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 180.32761, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2023."}, {"label": "page_footer", "id": 1, "page_no": 2, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 541.2573852539062, "t": 754.3030395507812, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8480042219161987, "cells": [{"id": 1, "text": "1", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "1"}]}}, {"page_no": 3, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "2 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 87.840302, "t": 755.538002, "r": 261.53851, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "IBM Z: An overview", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 212.32149, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Ever wonder how many transactions a bank processes per day? What about the pace at ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 529.59741, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "which these transactions happen? According to an IBMfi report, 44 of 50 of the world\u2019s top ", "bbox": {"l": 136.8, "t": 115.48852999999997, "r": 539.55145, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "banks use IBM Z mainframes for these daily transactions.$^{2}$ IBM Z is a platform that is ", "bbox": {"l": 136.8, "t": 127.48834000000011, "r": 514.55249, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "designed for voluminous data, maximum security, real-time transaction analysis, and cost ", "bbox": {"l": 136.79953, "t": 139.48852999999997, "r": 534.53912, "b": 148.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "efficiency. ", "bbox": {"l": 136.79955, "t": 151.48834, "r": 183.94521, "b": 160.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "The most recent platform for IBM Z is IBM z16\u2122. The IBM z16 supports the following ", "bbox": {"l": 136.79955, "t": 173.50793, "r": 515.68988, "b": 182.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "features: ", "bbox": {"l": 136.79955, "t": 185.50775, "r": 178.43532, "b": 194.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "GLYPH", "bbox": {"l": 136.79955, "t": 202.63696000000004, "r": 141.77954, "b": 211.41174, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "On-chip AI acceleration", "bbox": {"l": 151.19971, "t": 202.48755000000006, "r": 255.07155, "b": 211.70056, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "GLYPH", "bbox": {"l": 136.79955, "t": 219.67651, "r": 141.77954, "b": 228.45128999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Quantum-safe crypto discovery", "bbox": {"l": 151.19971, "t": 219.52710000000002, "r": 289.5531, "b": 228.74010999999996, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "GLYPH", "bbox": {"l": 136.79955, "t": 236.65630999999996, "r": 141.77954, "b": 245.43109000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Simplified compliance", "bbox": {"l": 151.19971, "t": 236.50689999999997, "r": 247.85254, "b": 245.71991000000003, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "GLYPH", "bbox": {"l": 136.79955, "t": 253.63611000000003, "r": 141.77954, "b": 262.41089, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Flexible capacity", "bbox": {"l": 151.19971, "t": 253.48668999999995, "r": 225.05908, "b": 262.69971, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "GLYPH", "bbox": {"l": 136.79955, "t": 270.67566, "r": 141.77954, "b": 279.45043999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Modernization of applications", "bbox": {"l": 151.19971, "t": 270.52625, "r": 280.60699, "b": 279.73925999999994, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "GLYPH", "bbox": {"l": 136.80054, "t": 287.65546, "r": 141.78053, "b": 296.43024, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Sustainability", "bbox": {"l": 151.2007, "t": 287.50607, "r": 210.07028, "b": 296.71906, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "With these features, enterprises can upgrade applications while preserving secure and ", "bbox": {"l": 136.80054, "t": 309.52563, "r": 521.94366, "b": 318.73862, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "resilient data.", "bbox": {"l": 136.80054, "t": 321.52545, "r": 196.20497, "b": 330.73842999999994, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "To learn more about these features, see the IBM z16 product page.", "bbox": {"l": 136.80054, "t": 343.48526, "r": 434.58963000000006, "b": 352.69824, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Figure 1 on page 3 shows a picture of the IBM z16 mainframe. ", "bbox": {"l": 136.80057, "t": 365.50482, "r": 415.6936, "b": 374.7178, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "$^{2 }$https://www.ibm.com/case-studies/bankwest/", "bbox": {"l": 136.8, "t": 727.709961, "r": 311.82391, "b": 734.740341, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.95490646362305, "t": 754.27392578125, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8809324502944946, "cells": [{"id": 0, "text": "2 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 87.65045166015625, "t": 754.6927490234375, "r": 261.53851, "b": 763.9190063476562, "coord_origin": "TOPLEFT"}, "confidence": 0.9455875754356384, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 87.840302, "t": 755.538002, "r": 261.53851, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.69976043701172, "t": 70.11424255371094, "r": 212.32149, "b": 85.9837, "coord_origin": "TOPLEFT"}, "confidence": 0.96026211977005, "cells": [{"id": 2, "text": "IBM Z: An overview", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 212.32149, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 136.16062927246094, "t": 102.75202941894531, "r": 539.55145, "b": 161.23336791992188, "coord_origin": "TOPLEFT"}, "confidence": 0.9878602623939514, "cells": [{"id": 3, "text": "Ever wonder how many transactions a bank processes per day? What about the pace at ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 529.59741, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "which these transactions happen? According to an IBMfi report, 44 of 50 of the world\u2019s top ", "bbox": {"l": 136.8, "t": 115.48852999999997, "r": 539.55145, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "banks use IBM Z mainframes for these daily transactions.$^{2}$ IBM Z is a platform that is ", "bbox": {"l": 136.8, "t": 127.48834000000011, "r": 514.55249, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "designed for voluminous data, maximum security, real-time transaction analysis, and cost ", "bbox": {"l": 136.79953, "t": 139.48852999999997, "r": 534.53912, "b": 148.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "efficiency. ", "bbox": {"l": 136.79955, "t": 151.48834, "r": 183.94521, "b": 160.70135000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.83799743652344, "t": 172.61083984375, "r": 515.68988, "b": 194.72076000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9694333076477051, "cells": [{"id": 8, "text": "The most recent platform for IBM Z is IBM z16\u2122. The IBM z16 supports the following ", "bbox": {"l": 136.79955, "t": 173.50793, "r": 515.68988, "b": 182.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "features: ", "bbox": {"l": 136.79955, "t": 185.50775, "r": 178.43532, "b": 194.72076000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 135.797607421875, "t": 201.2985076904297, "r": 255.07155, "b": 211.79501342773438, "coord_origin": "TOPLEFT"}, "confidence": 0.9466004967689514, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.79955, "t": 202.63696000000004, "r": 141.77954, "b": 211.41174, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "On-chip AI acceleration", "bbox": {"l": 151.19971, "t": 202.48755000000006, "r": 255.07155, "b": 211.70056, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.7379150390625, "t": 218.8182373046875, "r": 289.6485290527344, "b": 229.28843688964844, "coord_origin": "TOPLEFT"}, "confidence": 0.951557457447052, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.79955, "t": 219.67651, "r": 141.77954, "b": 228.45128999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Quantum-safe crypto discovery", "bbox": {"l": 151.19971, "t": 219.52710000000002, "r": 289.5531, "b": 228.74010999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.6077423095703, "t": 235.31582641601562, "r": 247.8863983154297, "b": 245.71991000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9488750696182251, "cells": [{"id": 14, "text": "GLYPH", "bbox": {"l": 136.79955, "t": 236.65630999999996, "r": 141.77954, "b": 245.43109000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Simplified compliance", "bbox": {"l": 151.19971, "t": 236.50689999999997, "r": 247.85254, "b": 245.71991000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.57025146484375, "t": 252.62242126464844, "r": 225.32553100585938, "b": 263.3917236328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9447478652000427, "cells": [{"id": 16, "text": "GLYPH", "bbox": {"l": 136.79955, "t": 253.63611000000003, "r": 141.77954, "b": 262.41089, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Flexible capacity", "bbox": {"l": 151.19971, "t": 253.48668999999995, "r": 225.05908, "b": 262.69971, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.6380615234375, "t": 269.9613342285156, "r": 280.60699, "b": 280.2677307128906, "coord_origin": "TOPLEFT"}, "confidence": 0.9515380263328552, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.79955, "t": 270.67566, "r": 141.77954, "b": 279.45043999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Modernization of applications", "bbox": {"l": 151.19971, "t": 270.52625, "r": 280.60699, "b": 279.73925999999994, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 135.63339233398438, "t": 286.7400207519531, "r": 210.07028, "b": 297.0730895996094, "coord_origin": "TOPLEFT"}, "confidence": 0.9383591413497925, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.80054, "t": 287.65546, "r": 141.78053, "b": 296.43024, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Sustainability", "bbox": {"l": 151.2007, "t": 287.50607, "r": 210.07028, "b": 296.71906, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 136.1382598876953, "t": 308.8077392578125, "r": 521.94366, "b": 330.73842999999994, "coord_origin": "TOPLEFT"}, "confidence": 0.972258448600769, "cells": [{"id": 22, "text": "With these features, enterprises can upgrade applications while preserving secure and ", "bbox": {"l": 136.80054, "t": 309.52563, "r": 521.94366, "b": 318.73862, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "resilient data.", "bbox": {"l": 136.80054, "t": 321.52545, "r": 196.20497, "b": 330.73842999999994, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 135.73519897460938, "t": 342.67401123046875, "r": 434.58963000000006, "b": 353.0493469238281, "coord_origin": "TOPLEFT"}, "confidence": 0.9527294039726257, "cells": [{"id": 24, "text": "To learn more about these features, see the IBM z16 product page.", "bbox": {"l": 136.80054, "t": 343.48526, "r": 434.58963000000006, "b": 352.69824, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 136.62892150878906, "t": 364.7782287597656, "r": 415.6936, "b": 374.95330810546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9560132622718811, "cells": [{"id": 25, "text": "Figure 1 on page 3 shows a picture of the IBM z16 mainframe. ", "bbox": {"l": 136.80057, "t": 365.50482, "r": 415.6936, "b": 374.7178, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "footnote", "bbox": {"l": 136.5249786376953, "t": 725.1834106445312, "r": 311.82391, "b": 734.9193115234375, "coord_origin": "TOPLEFT"}, "confidence": 0.8997626900672913, "cells": [{"id": 26, "text": "$^{2 }$https://www.ibm.com/case-studies/bankwest/", "bbox": {"l": 136.8, "t": 727.709961, "r": 311.82391, "b": 734.740341, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 3, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.95490646362305, "t": 754.27392578125, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8809324502944946, "cells": [{"id": 0, "text": "2 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "2"}, {"label": "page_footer", "id": 1, "page_no": 3, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 87.65045166015625, "t": 754.6927490234375, "r": 261.53851, "b": 763.9190063476562, "coord_origin": "TOPLEFT"}, "confidence": 0.9455875754356384, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 87.840302, "t": 755.538002, "r": 261.53851, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"label": "section_header", "id": 2, "page_no": 3, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.69976043701172, "t": 70.11424255371094, "r": 212.32149, "b": 85.9837, "coord_origin": "TOPLEFT"}, "confidence": 0.96026211977005, "cells": [{"id": 2, "text": "IBM Z: An overview", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 212.32149, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Z: An overview"}, {"label": "text", "id": 3, "page_no": 3, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.16062927246094, "t": 102.75202941894531, "r": 539.55145, "b": 161.23336791992188, "coord_origin": "TOPLEFT"}, "confidence": 0.9878602623939514, "cells": [{"id": 3, "text": "Ever wonder how many transactions a bank processes per day? What about the pace at ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 529.59741, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "which these transactions happen? According to an IBMfi report, 44 of 50 of the world\u2019s top ", "bbox": {"l": 136.8, "t": 115.48852999999997, "r": 539.55145, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "banks use IBM Z mainframes for these daily transactions.$^{2}$ IBM Z is a platform that is ", "bbox": {"l": 136.8, "t": 127.48834000000011, "r": 514.55249, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "designed for voluminous data, maximum security, real-time transaction analysis, and cost ", "bbox": {"l": 136.79953, "t": 139.48852999999997, "r": 534.53912, "b": 148.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "efficiency. ", "bbox": {"l": 136.79955, "t": 151.48834, "r": 183.94521, "b": 160.70135000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Ever wonder how many transactions a bank processes per day? What about the pace at which these transactions happen? According to an IBMfi report, 44 of 50 of the world\u2019s top banks use IBM Z mainframes for these daily transactions.$^{2}$ IBM Z is a platform that is designed for voluminous data, maximum security, real-time transaction analysis, and cost efficiency."}, {"label": "text", "id": 4, "page_no": 3, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.83799743652344, "t": 172.61083984375, "r": 515.68988, "b": 194.72076000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9694333076477051, "cells": [{"id": 8, "text": "The most recent platform for IBM Z is IBM z16\u2122. The IBM z16 supports the following ", "bbox": {"l": 136.79955, "t": 173.50793, "r": 515.68988, "b": 182.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "features: ", "bbox": {"l": 136.79955, "t": 185.50775, "r": 178.43532, "b": 194.72076000000004, "coord_origin": "TOPLEFT"}}]}, "text": "The most recent platform for IBM Z is IBM z16\u2122. The IBM z16 supports the following features:"}, {"label": "list_item", "id": 5, "page_no": 3, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.797607421875, "t": 201.2985076904297, "r": 255.07155, "b": 211.79501342773438, "coord_origin": "TOPLEFT"}, "confidence": 0.9466004967689514, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.79955, "t": 202.63696000000004, "r": 141.77954, "b": 211.41174, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "On-chip AI acceleration", "bbox": {"l": 151.19971, "t": 202.48755000000006, "r": 255.07155, "b": 211.70056, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH On-chip AI acceleration"}, {"label": "list_item", "id": 6, "page_no": 3, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.7379150390625, "t": 218.8182373046875, "r": 289.6485290527344, "b": 229.28843688964844, "coord_origin": "TOPLEFT"}, "confidence": 0.951557457447052, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.79955, "t": 219.67651, "r": 141.77954, "b": 228.45128999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Quantum-safe crypto discovery", "bbox": {"l": 151.19971, "t": 219.52710000000002, "r": 289.5531, "b": 228.74010999999996, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Quantum-safe crypto discovery"}, {"label": "list_item", "id": 7, "page_no": 3, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.6077423095703, "t": 235.31582641601562, "r": 247.8863983154297, "b": 245.71991000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9488750696182251, "cells": [{"id": 14, "text": "GLYPH", "bbox": {"l": 136.79955, "t": 236.65630999999996, "r": 141.77954, "b": 245.43109000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Simplified compliance", "bbox": {"l": 151.19971, "t": 236.50689999999997, "r": 247.85254, "b": 245.71991000000003, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Simplified compliance"}, {"label": "list_item", "id": 8, "page_no": 3, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.57025146484375, "t": 252.62242126464844, "r": 225.32553100585938, "b": 263.3917236328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9447478652000427, "cells": [{"id": 16, "text": "GLYPH", "bbox": {"l": 136.79955, "t": 253.63611000000003, "r": 141.77954, "b": 262.41089, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Flexible capacity", "bbox": {"l": 151.19971, "t": 253.48668999999995, "r": 225.05908, "b": 262.69971, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Flexible capacity"}, {"label": "list_item", "id": 9, "page_no": 3, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.6380615234375, "t": 269.9613342285156, "r": 280.60699, "b": 280.2677307128906, "coord_origin": "TOPLEFT"}, "confidence": 0.9515380263328552, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.79955, "t": 270.67566, "r": 141.77954, "b": 279.45043999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Modernization of applications", "bbox": {"l": 151.19971, "t": 270.52625, "r": 280.60699, "b": 279.73925999999994, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Modernization of applications"}, {"label": "list_item", "id": 10, "page_no": 3, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.63339233398438, "t": 286.7400207519531, "r": 210.07028, "b": 297.0730895996094, "coord_origin": "TOPLEFT"}, "confidence": 0.9383591413497925, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.80054, "t": 287.65546, "r": 141.78053, "b": 296.43024, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Sustainability", "bbox": {"l": 151.2007, "t": 287.50607, "r": 210.07028, "b": 296.71906, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Sustainability"}, {"label": "text", "id": 11, "page_no": 3, "cluster": {"id": 11, "label": "text", "bbox": {"l": 136.1382598876953, "t": 308.8077392578125, "r": 521.94366, "b": 330.73842999999994, "coord_origin": "TOPLEFT"}, "confidence": 0.972258448600769, "cells": [{"id": 22, "text": "With these features, enterprises can upgrade applications while preserving secure and ", "bbox": {"l": 136.80054, "t": 309.52563, "r": 521.94366, "b": 318.73862, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "resilient data.", "bbox": {"l": 136.80054, "t": 321.52545, "r": 196.20497, "b": 330.73842999999994, "coord_origin": "TOPLEFT"}}]}, "text": "With these features, enterprises can upgrade applications while preserving secure and resilient data."}, {"label": "text", "id": 12, "page_no": 3, "cluster": {"id": 12, "label": "text", "bbox": {"l": 135.73519897460938, "t": 342.67401123046875, "r": 434.58963000000006, "b": 353.0493469238281, "coord_origin": "TOPLEFT"}, "confidence": 0.9527294039726257, "cells": [{"id": 24, "text": "To learn more about these features, see the IBM z16 product page.", "bbox": {"l": 136.80054, "t": 343.48526, "r": 434.58963000000006, "b": 352.69824, "coord_origin": "TOPLEFT"}}]}, "text": "To learn more about these features, see the IBM z16 product page."}, {"label": "text", "id": 13, "page_no": 3, "cluster": {"id": 13, "label": "text", "bbox": {"l": 136.62892150878906, "t": 364.7782287597656, "r": 415.6936, "b": 374.95330810546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9560132622718811, "cells": [{"id": 25, "text": "Figure 1 on page 3 shows a picture of the IBM z16 mainframe. ", "bbox": {"l": 136.80057, "t": 365.50482, "r": 415.6936, "b": 374.7178, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 1 on page 3 shows a picture of the IBM z16 mainframe."}, {"label": "footnote", "id": 14, "page_no": 3, "cluster": {"id": 14, "label": "footnote", "bbox": {"l": 136.5249786376953, "t": 725.1834106445312, "r": 311.82391, "b": 734.9193115234375, "coord_origin": "TOPLEFT"}, "confidence": 0.8997626900672913, "cells": [{"id": 26, "text": "$^{2 }$https://www.ibm.com/case-studies/bankwest/", "bbox": {"l": 136.8, "t": 727.709961, "r": 311.82391, "b": 734.740341, "coord_origin": "TOPLEFT"}}]}, "text": "$^{2 }$https://www.ibm.com/case-studies/bankwest/"}], "body": [{"label": "section_header", "id": 2, "page_no": 3, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.69976043701172, "t": 70.11424255371094, "r": 212.32149, "b": 85.9837, "coord_origin": "TOPLEFT"}, "confidence": 0.96026211977005, "cells": [{"id": 2, "text": "IBM Z: An overview", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 212.32149, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Z: An overview"}, {"label": "text", "id": 3, "page_no": 3, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.16062927246094, "t": 102.75202941894531, "r": 539.55145, "b": 161.23336791992188, "coord_origin": "TOPLEFT"}, "confidence": 0.9878602623939514, "cells": [{"id": 3, "text": "Ever wonder how many transactions a bank processes per day? What about the pace at ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 529.59741, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "which these transactions happen? According to an IBMfi report, 44 of 50 of the world\u2019s top ", "bbox": {"l": 136.8, "t": 115.48852999999997, "r": 539.55145, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "banks use IBM Z mainframes for these daily transactions.$^{2}$ IBM Z is a platform that is ", "bbox": {"l": 136.8, "t": 127.48834000000011, "r": 514.55249, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "designed for voluminous data, maximum security, real-time transaction analysis, and cost ", "bbox": {"l": 136.79953, "t": 139.48852999999997, "r": 534.53912, "b": 148.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "efficiency. ", "bbox": {"l": 136.79955, "t": 151.48834, "r": 183.94521, "b": 160.70135000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Ever wonder how many transactions a bank processes per day? What about the pace at which these transactions happen? According to an IBMfi report, 44 of 50 of the world\u2019s top banks use IBM Z mainframes for these daily transactions.$^{2}$ IBM Z is a platform that is designed for voluminous data, maximum security, real-time transaction analysis, and cost efficiency."}, {"label": "text", "id": 4, "page_no": 3, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.83799743652344, "t": 172.61083984375, "r": 515.68988, "b": 194.72076000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9694333076477051, "cells": [{"id": 8, "text": "The most recent platform for IBM Z is IBM z16\u2122. The IBM z16 supports the following ", "bbox": {"l": 136.79955, "t": 173.50793, "r": 515.68988, "b": 182.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "features: ", "bbox": {"l": 136.79955, "t": 185.50775, "r": 178.43532, "b": 194.72076000000004, "coord_origin": "TOPLEFT"}}]}, "text": "The most recent platform for IBM Z is IBM z16\u2122. The IBM z16 supports the following features:"}, {"label": "list_item", "id": 5, "page_no": 3, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.797607421875, "t": 201.2985076904297, "r": 255.07155, "b": 211.79501342773438, "coord_origin": "TOPLEFT"}, "confidence": 0.9466004967689514, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.79955, "t": 202.63696000000004, "r": 141.77954, "b": 211.41174, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "On-chip AI acceleration", "bbox": {"l": 151.19971, "t": 202.48755000000006, "r": 255.07155, "b": 211.70056, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH On-chip AI acceleration"}, {"label": "list_item", "id": 6, "page_no": 3, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.7379150390625, "t": 218.8182373046875, "r": 289.6485290527344, "b": 229.28843688964844, "coord_origin": "TOPLEFT"}, "confidence": 0.951557457447052, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.79955, "t": 219.67651, "r": 141.77954, "b": 228.45128999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Quantum-safe crypto discovery", "bbox": {"l": 151.19971, "t": 219.52710000000002, "r": 289.5531, "b": 228.74010999999996, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Quantum-safe crypto discovery"}, {"label": "list_item", "id": 7, "page_no": 3, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.6077423095703, "t": 235.31582641601562, "r": 247.8863983154297, "b": 245.71991000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9488750696182251, "cells": [{"id": 14, "text": "GLYPH", "bbox": {"l": 136.79955, "t": 236.65630999999996, "r": 141.77954, "b": 245.43109000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Simplified compliance", "bbox": {"l": 151.19971, "t": 236.50689999999997, "r": 247.85254, "b": 245.71991000000003, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Simplified compliance"}, {"label": "list_item", "id": 8, "page_no": 3, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.57025146484375, "t": 252.62242126464844, "r": 225.32553100585938, "b": 263.3917236328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9447478652000427, "cells": [{"id": 16, "text": "GLYPH", "bbox": {"l": 136.79955, "t": 253.63611000000003, "r": 141.77954, "b": 262.41089, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Flexible capacity", "bbox": {"l": 151.19971, "t": 253.48668999999995, "r": 225.05908, "b": 262.69971, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Flexible capacity"}, {"label": "list_item", "id": 9, "page_no": 3, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.6380615234375, "t": 269.9613342285156, "r": 280.60699, "b": 280.2677307128906, "coord_origin": "TOPLEFT"}, "confidence": 0.9515380263328552, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.79955, "t": 270.67566, "r": 141.77954, "b": 279.45043999999996, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Modernization of applications", "bbox": {"l": 151.19971, "t": 270.52625, "r": 280.60699, "b": 279.73925999999994, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Modernization of applications"}, {"label": "list_item", "id": 10, "page_no": 3, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.63339233398438, "t": 286.7400207519531, "r": 210.07028, "b": 297.0730895996094, "coord_origin": "TOPLEFT"}, "confidence": 0.9383591413497925, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.80054, "t": 287.65546, "r": 141.78053, "b": 296.43024, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Sustainability", "bbox": {"l": 151.2007, "t": 287.50607, "r": 210.07028, "b": 296.71906, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Sustainability"}, {"label": "text", "id": 11, "page_no": 3, "cluster": {"id": 11, "label": "text", "bbox": {"l": 136.1382598876953, "t": 308.8077392578125, "r": 521.94366, "b": 330.73842999999994, "coord_origin": "TOPLEFT"}, "confidence": 0.972258448600769, "cells": [{"id": 22, "text": "With these features, enterprises can upgrade applications while preserving secure and ", "bbox": {"l": 136.80054, "t": 309.52563, "r": 521.94366, "b": 318.73862, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "resilient data.", "bbox": {"l": 136.80054, "t": 321.52545, "r": 196.20497, "b": 330.73842999999994, "coord_origin": "TOPLEFT"}}]}, "text": "With these features, enterprises can upgrade applications while preserving secure and resilient data."}, {"label": "text", "id": 12, "page_no": 3, "cluster": {"id": 12, "label": "text", "bbox": {"l": 135.73519897460938, "t": 342.67401123046875, "r": 434.58963000000006, "b": 353.0493469238281, "coord_origin": "TOPLEFT"}, "confidence": 0.9527294039726257, "cells": [{"id": 24, "text": "To learn more about these features, see the IBM z16 product page.", "bbox": {"l": 136.80054, "t": 343.48526, "r": 434.58963000000006, "b": 352.69824, "coord_origin": "TOPLEFT"}}]}, "text": "To learn more about these features, see the IBM z16 product page."}, {"label": "text", "id": 13, "page_no": 3, "cluster": {"id": 13, "label": "text", "bbox": {"l": 136.62892150878906, "t": 364.7782287597656, "r": 415.6936, "b": 374.95330810546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9560132622718811, "cells": [{"id": 25, "text": "Figure 1 on page 3 shows a picture of the IBM z16 mainframe. ", "bbox": {"l": 136.80057, "t": 365.50482, "r": 415.6936, "b": 374.7178, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 1 on page 3 shows a picture of the IBM z16 mainframe."}, {"label": "footnote", "id": 14, "page_no": 3, "cluster": {"id": 14, "label": "footnote", "bbox": {"l": 136.5249786376953, "t": 725.1834106445312, "r": 311.82391, "b": 734.9193115234375, "coord_origin": "TOPLEFT"}, "confidence": 0.8997626900672913, "cells": [{"id": 26, "text": "$^{2 }$https://www.ibm.com/case-studies/bankwest/", "bbox": {"l": 136.8, "t": 727.709961, "r": 311.82391, "b": 734.740341, "coord_origin": "TOPLEFT"}}]}, "text": "$^{2 }$https://www.ibm.com/case-studies/bankwest/"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 3, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.95490646362305, "t": 754.27392578125, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8809324502944946, "cells": [{"id": 0, "text": "2 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "2"}, {"label": "page_footer", "id": 1, "page_no": 3, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 87.65045166015625, "t": 754.6927490234375, "r": 261.53851, "b": 763.9190063476562, "coord_origin": "TOPLEFT"}, "confidence": 0.9455875754356384, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 87.840302, "t": 755.538002, "r": 261.53851, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}]}}, {"page_no": 4, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "3", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Figure 1 IBM z16", "bbox": {"l": 136.8, "t": 449.41799999999995, "r": 210.1689, "b": 457.74301, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "IBM z16 and IBM LinuxONE Emperor 4 features", "bbox": {"l": 64.800003, "t": 478.25473, "r": 355.60165, "b": 490.24271, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "IBM Z are based on enterprise mainframe technology. Starting with transaction-based ", "bbox": {"l": 136.8, "t": 504.40863, "r": 518.50519, "b": 513.6216099999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "workloads and databases, IBM Z has undergone tremendous transformations in its system ", "bbox": {"l": 136.8, "t": 516.40845, "r": 539.5545, "b": 525.6214299999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "design for many generations to build servers that cater to Linux-based workloads and security ", "bbox": {"l": 136.8, "t": 528.4082599999999, "r": 547.17712, "b": 537.62126, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "with a cyberresilient system, and support quantum computing and modernization by using a ", "bbox": {"l": 136.8, "t": 540.40807, "r": 543.91998, "b": 549.6210599999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "hybrid cloud with a focus on data and AI. ", "bbox": {"l": 136.8, "t": 552.40787, "r": 319.59286, "b": 561.62086, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 541.0438232421875, "t": 754.4629516601562, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8937394618988037, "cells": [{"id": 0, "text": "3", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "caption", "bbox": {"l": 135.89208984375, "t": 448.34100341796875, "r": 211.0067596435547, "b": 458.0682678222656, "coord_origin": "TOPLEFT"}, "confidence": 0.9125407934188843, "cells": [{"id": 1, "text": "Figure 1 IBM z16", "bbox": {"l": 136.8, "t": 449.41799999999995, "r": 210.1689, "b": 457.74301, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.32122039794922, "t": 477.1279602050781, "r": 355.60165, "b": 490.24271, "coord_origin": "TOPLEFT"}, "confidence": 0.9492653012275696, "cells": [{"id": 2, "text": "IBM z16 and IBM LinuxONE Emperor 4 features", "bbox": {"l": 64.800003, "t": 478.25473, "r": 355.60165, "b": 490.24271, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.82815551757812, "t": 503.3326416015625, "r": 547.17712, "b": 561.62086, "coord_origin": "TOPLEFT"}, "confidence": 0.977308452129364, "cells": [{"id": 3, "text": "IBM Z are based on enterprise mainframe technology. Starting with transaction-based ", "bbox": {"l": 136.8, "t": 504.40863, "r": 518.50519, "b": 513.6216099999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "workloads and databases, IBM Z has undergone tremendous transformations in its system ", "bbox": {"l": 136.8, "t": 516.40845, "r": 539.5545, "b": 525.6214299999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "design for many generations to build servers that cater to Linux-based workloads and security ", "bbox": {"l": 136.8, "t": 528.4082599999999, "r": 547.17712, "b": 537.62126, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "with a cyberresilient system, and support quantum computing and modernization by using a ", "bbox": {"l": 136.8, "t": 540.40807, "r": 543.91998, "b": 549.6210599999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "hybrid cloud with a focus on data and AI. ", "bbox": {"l": 136.8, "t": 552.40787, "r": 319.59286, "b": 561.62086, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "picture", "bbox": {"l": 136.13192749023438, "t": 77.53209686279297, "r": 435.85162353515625, "b": 446.31475830078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9853245615959167, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 4, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 541.0438232421875, "t": 754.4629516601562, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8937394618988037, "cells": [{"id": 0, "text": "3", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "3"}, {"label": "caption", "id": 1, "page_no": 4, "cluster": {"id": 1, "label": "caption", "bbox": {"l": 135.89208984375, "t": 448.34100341796875, "r": 211.0067596435547, "b": 458.0682678222656, "coord_origin": "TOPLEFT"}, "confidence": 0.9125407934188843, "cells": [{"id": 1, "text": "Figure 1 IBM z16", "bbox": {"l": 136.8, "t": 449.41799999999995, "r": 210.1689, "b": 457.74301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 1 IBM z16"}, {"label": "section_header", "id": 2, "page_no": 4, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.32122039794922, "t": 477.1279602050781, "r": 355.60165, "b": 490.24271, "coord_origin": "TOPLEFT"}, "confidence": 0.9492653012275696, "cells": [{"id": 2, "text": "IBM z16 and IBM LinuxONE Emperor 4 features", "bbox": {"l": 64.800003, "t": 478.25473, "r": 355.60165, "b": 490.24271, "coord_origin": "TOPLEFT"}}]}, "text": "IBM z16 and IBM LinuxONE Emperor 4 features"}, {"label": "text", "id": 3, "page_no": 4, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.82815551757812, "t": 503.3326416015625, "r": 547.17712, "b": 561.62086, "coord_origin": "TOPLEFT"}, "confidence": 0.977308452129364, "cells": [{"id": 3, "text": "IBM Z are based on enterprise mainframe technology. Starting with transaction-based ", "bbox": {"l": 136.8, "t": 504.40863, "r": 518.50519, "b": 513.6216099999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "workloads and databases, IBM Z has undergone tremendous transformations in its system ", "bbox": {"l": 136.8, "t": 516.40845, "r": 539.5545, "b": 525.6214299999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "design for many generations to build servers that cater to Linux-based workloads and security ", "bbox": {"l": 136.8, "t": 528.4082599999999, "r": 547.17712, "b": 537.62126, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "with a cyberresilient system, and support quantum computing and modernization by using a ", "bbox": {"l": 136.8, "t": 540.40807, "r": 543.91998, "b": 549.6210599999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "hybrid cloud with a focus on data and AI. ", "bbox": {"l": 136.8, "t": 552.40787, "r": 319.59286, "b": 561.62086, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Z are based on enterprise mainframe technology. Starting with transaction-based workloads and databases, IBM Z has undergone tremendous transformations in its system design for many generations to build servers that cater to Linux-based workloads and security with a cyberresilient system, and support quantum computing and modernization by using a hybrid cloud with a focus on data and AI."}, {"label": "picture", "id": 4, "page_no": 4, "cluster": {"id": 4, "label": "picture", "bbox": {"l": 136.13192749023438, "t": 77.53209686279297, "r": 435.85162353515625, "b": 446.31475830078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9853245615959167, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "caption", "id": 1, "page_no": 4, "cluster": {"id": 1, "label": "caption", "bbox": {"l": 135.89208984375, "t": 448.34100341796875, "r": 211.0067596435547, "b": 458.0682678222656, "coord_origin": "TOPLEFT"}, "confidence": 0.9125407934188843, "cells": [{"id": 1, "text": "Figure 1 IBM z16", "bbox": {"l": 136.8, "t": 449.41799999999995, "r": 210.1689, "b": 457.74301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 1 IBM z16"}, {"label": "section_header", "id": 2, "page_no": 4, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.32122039794922, "t": 477.1279602050781, "r": 355.60165, "b": 490.24271, "coord_origin": "TOPLEFT"}, "confidence": 0.9492653012275696, "cells": [{"id": 2, "text": "IBM z16 and IBM LinuxONE Emperor 4 features", "bbox": {"l": 64.800003, "t": 478.25473, "r": 355.60165, "b": 490.24271, "coord_origin": "TOPLEFT"}}]}, "text": "IBM z16 and IBM LinuxONE Emperor 4 features"}, {"label": "text", "id": 3, "page_no": 4, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.82815551757812, "t": 503.3326416015625, "r": 547.17712, "b": 561.62086, "coord_origin": "TOPLEFT"}, "confidence": 0.977308452129364, "cells": [{"id": 3, "text": "IBM Z are based on enterprise mainframe technology. Starting with transaction-based ", "bbox": {"l": 136.8, "t": 504.40863, "r": 518.50519, "b": 513.6216099999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "workloads and databases, IBM Z has undergone tremendous transformations in its system ", "bbox": {"l": 136.8, "t": 516.40845, "r": 539.5545, "b": 525.6214299999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "design for many generations to build servers that cater to Linux-based workloads and security ", "bbox": {"l": 136.8, "t": 528.4082599999999, "r": 547.17712, "b": 537.62126, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "with a cyberresilient system, and support quantum computing and modernization by using a ", "bbox": {"l": 136.8, "t": 540.40807, "r": 543.91998, "b": 549.6210599999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "hybrid cloud with a focus on data and AI. ", "bbox": {"l": 136.8, "t": 552.40787, "r": 319.59286, "b": 561.62086, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Z are based on enterprise mainframe technology. Starting with transaction-based workloads and databases, IBM Z has undergone tremendous transformations in its system design for many generations to build servers that cater to Linux-based workloads and security with a cyberresilient system, and support quantum computing and modernization by using a hybrid cloud with a focus on data and AI."}, {"label": "picture", "id": 4, "page_no": 4, "cluster": {"id": 4, "label": "picture", "bbox": {"l": 136.13192749023438, "t": 77.53209686279297, "r": 435.85162353515625, "b": 446.31475830078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9853245615959167, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 4, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 541.0438232421875, "t": 754.4629516601562, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8937394618988037, "cells": [{"id": 0, "text": "3", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "3"}]}}, {"page_no": 5, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "4 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 87.840302, "t": 755.538002, "r": 261.53851, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Figure 2 provides a snapshot of the IBM Z processor roadmap, which depicts the journey of ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 543.51959, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "transformation and improvement. ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 286.23691, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 2 IBM Z: Processor roadmap", "bbox": {"l": 64.800003, "t": 379.45801, "r": 212.60968, "b": 387.78302, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "The IBM z16 and IBM LinuxONE Emperor 4 are the latest of the IBM Z, and they are ", "bbox": {"l": 136.8, "t": 401.38873, "r": 512.94336, "b": 410.60172, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "developed with a \u2018built to build\u2019 focus to provide a powerful, cyberresilient, open, and secure ", "bbox": {"l": 136.8, "t": 413.38855, "r": 544.58929, "b": 422.6015300000001, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "platform for business with an extra focus on sustainability to help build sustainable data ", "bbox": {"l": 136.8, "t": 425.38837, "r": 524.4342, "b": 434.60135, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "centers. Although the z16 server can host both IBM z/OSfi and Linux workloads, LinuxONE ", "bbox": {"l": 136.80002, "t": 437.38818, "r": 544.23865, "b": 446.60117, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Emperor 4 is built to host Linux only workloads with a focus on consolidation and resiliency. ", "bbox": {"l": 136.80002, "t": 449.388, "r": 542.95471, "b": 458.60098000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Depending on the workload, consolidation from numerous x86 servers into a LinuxONE ", "bbox": {"l": 136.80002, "t": 461.38782, "r": 525.11334, "b": 470.6008, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Emperor 4 can help reduce energy consumption by 75% and data center floor space by 50%, ", "bbox": {"l": 136.80002, "t": 473.38763, "r": 547.25659, "b": 482.60062, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "which helps to achieve the sustainability goals of the organization.", "bbox": {"l": 136.80002, "t": 485.38745, "r": 428.53240999999997, "b": 494.60043, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Figure 3 on page 5 shows a summary of the system design of IBM LinuxONE Emperor 4 with ", "bbox": {"l": 136.80101, "t": 507.40701, "r": 547.25757, "b": 516.62, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "the IBM Telum\u2122 processor. The IBM Telum processor chip is designed to run enterprise ", "bbox": {"l": 136.80101, "t": 519.40683, "r": 531.66705, "b": 528.6198099999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "applications efficiently where their data resides to embed AI with super low latency. The ", "bbox": {"l": 136.80101, "t": 531.40662, "r": 526.3158, "b": 540.61963, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "support for higher bandwidth and I/O rates is supported through FCP Express cards with an ", "bbox": {"l": 136.80101, "t": 543.40643, "r": 544.12909, "b": 552.61943, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "endpoint security solution. The memory subsystem supports up to 40 TB of memory.", "bbox": {"l": 136.80101, "t": 555.40623, "r": 510.1834999999999, "b": 564.61923, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.14278411865234, "t": 754.1334838867188, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8598024249076843, "cells": [{"id": 0, "text": "4 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 87.67771911621094, "t": 754.752685546875, "r": 261.53851, "b": 763.8809204101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9530899524688721, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 87.840302, "t": 755.538002, "r": 261.53851, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 136.2760009765625, "t": 70.37826538085938, "r": 543.51959, "b": 92.84950256347656, "coord_origin": "TOPLEFT"}, "confidence": 0.8470332026481628, "cells": [{"id": 2, "text": "Figure 2 provides a snapshot of the IBM Z processor roadmap, which depicts the journey of ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 543.51959, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "transformation and improvement. ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 286.23691, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.39653778076172, "t": 378.7839050292969, "r": 213.14488220214844, "b": 388.0233459472656, "coord_origin": "TOPLEFT"}, "confidence": 0.9416331648826599, "cells": [{"id": 4, "text": "Figure 2 IBM Z: Processor roadmap", "bbox": {"l": 64.800003, "t": 379.45801, "r": 212.60968, "b": 387.78302, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 136.178955078125, "t": 400.78466796875, "r": 547.25659, "b": 494.9367980957031, "coord_origin": "TOPLEFT"}, "confidence": 0.9834467768669128, "cells": [{"id": 5, "text": "The IBM z16 and IBM LinuxONE Emperor 4 are the latest of the IBM Z, and they are ", "bbox": {"l": 136.8, "t": 401.38873, "r": 512.94336, "b": 410.60172, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "developed with a \u2018built to build\u2019 focus to provide a powerful, cyberresilient, open, and secure ", "bbox": {"l": 136.8, "t": 413.38855, "r": 544.58929, "b": 422.6015300000001, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "platform for business with an extra focus on sustainability to help build sustainable data ", "bbox": {"l": 136.8, "t": 425.38837, "r": 524.4342, "b": 434.60135, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "centers. Although the z16 server can host both IBM z/OSfi and Linux workloads, LinuxONE ", "bbox": {"l": 136.80002, "t": 437.38818, "r": 544.23865, "b": 446.60117, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Emperor 4 is built to host Linux only workloads with a focus on consolidation and resiliency. ", "bbox": {"l": 136.80002, "t": 449.388, "r": 542.95471, "b": 458.60098000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Depending on the workload, consolidation from numerous x86 servers into a LinuxONE ", "bbox": {"l": 136.80002, "t": 461.38782, "r": 525.11334, "b": 470.6008, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Emperor 4 can help reduce energy consumption by 75% and data center floor space by 50%, ", "bbox": {"l": 136.80002, "t": 473.38763, "r": 547.25659, "b": 482.60062, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "which helps to achieve the sustainability goals of the organization.", "bbox": {"l": 136.80002, "t": 485.38745, "r": 428.53240999999997, "b": 494.60043, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.1420135498047, "t": 506.7176818847656, "r": 547.25757, "b": 565.1494140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9871375560760498, "cells": [{"id": 13, "text": "Figure 3 on page 5 shows a summary of the system design of IBM LinuxONE Emperor 4 with ", "bbox": {"l": 136.80101, "t": 507.40701, "r": 547.25757, "b": 516.62, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "the IBM Telum\u2122 processor. The IBM Telum processor chip is designed to run enterprise ", "bbox": {"l": 136.80101, "t": 519.40683, "r": 531.66705, "b": 528.6198099999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "applications efficiently where their data resides to embed AI with super low latency. The ", "bbox": {"l": 136.80101, "t": 531.40662, "r": 526.3158, "b": 540.61963, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "support for higher bandwidth and I/O rates is supported through FCP Express cards with an ", "bbox": {"l": 136.80101, "t": 543.40643, "r": 544.12909, "b": 552.61943, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "endpoint security solution. The memory subsystem supports up to 40 TB of memory.", "bbox": {"l": 136.80101, "t": 555.40623, "r": 510.1834999999999, "b": 564.61923, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "picture", "bbox": {"l": 63.98974609375, "t": 106.94452667236328, "r": 547.5855102539062, "b": 375.7152404785156, "coord_origin": "TOPLEFT"}, "confidence": 0.9836835265159607, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 5, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.14278411865234, "t": 754.1334838867188, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8598024249076843, "cells": [{"id": 0, "text": "4 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "4"}, {"label": "page_footer", "id": 1, "page_no": 5, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 87.67771911621094, "t": 754.752685546875, "r": 261.53851, "b": 763.8809204101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9530899524688721, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 87.840302, "t": 755.538002, "r": 261.53851, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"label": "text", "id": 2, "page_no": 5, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.2760009765625, "t": 70.37826538085938, "r": 543.51959, "b": 92.84950256347656, "coord_origin": "TOPLEFT"}, "confidence": 0.8470332026481628, "cells": [{"id": 2, "text": "Figure 2 provides a snapshot of the IBM Z processor roadmap, which depicts the journey of ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 543.51959, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "transformation and improvement. ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 286.23691, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 2 provides a snapshot of the IBM Z processor roadmap, which depicts the journey of transformation and improvement."}, {"label": "caption", "id": 3, "page_no": 5, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.39653778076172, "t": 378.7839050292969, "r": 213.14488220214844, "b": 388.0233459472656, "coord_origin": "TOPLEFT"}, "confidence": 0.9416331648826599, "cells": [{"id": 4, "text": "Figure 2 IBM Z: Processor roadmap", "bbox": {"l": 64.800003, "t": 379.45801, "r": 212.60968, "b": 387.78302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 2 IBM Z: Processor roadmap"}, {"label": "text", "id": 4, "page_no": 5, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.178955078125, "t": 400.78466796875, "r": 547.25659, "b": 494.9367980957031, "coord_origin": "TOPLEFT"}, "confidence": 0.9834467768669128, "cells": [{"id": 5, "text": "The IBM z16 and IBM LinuxONE Emperor 4 are the latest of the IBM Z, and they are ", "bbox": {"l": 136.8, "t": 401.38873, "r": 512.94336, "b": 410.60172, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "developed with a \u2018built to build\u2019 focus to provide a powerful, cyberresilient, open, and secure ", "bbox": {"l": 136.8, "t": 413.38855, "r": 544.58929, "b": 422.6015300000001, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "platform for business with an extra focus on sustainability to help build sustainable data ", "bbox": {"l": 136.8, "t": 425.38837, "r": 524.4342, "b": 434.60135, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "centers. Although the z16 server can host both IBM z/OSfi and Linux workloads, LinuxONE ", "bbox": {"l": 136.80002, "t": 437.38818, "r": 544.23865, "b": 446.60117, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Emperor 4 is built to host Linux only workloads with a focus on consolidation and resiliency. ", "bbox": {"l": 136.80002, "t": 449.388, "r": 542.95471, "b": 458.60098000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Depending on the workload, consolidation from numerous x86 servers into a LinuxONE ", "bbox": {"l": 136.80002, "t": 461.38782, "r": 525.11334, "b": 470.6008, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Emperor 4 can help reduce energy consumption by 75% and data center floor space by 50%, ", "bbox": {"l": 136.80002, "t": 473.38763, "r": 547.25659, "b": 482.60062, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "which helps to achieve the sustainability goals of the organization.", "bbox": {"l": 136.80002, "t": 485.38745, "r": 428.53240999999997, "b": 494.60043, "coord_origin": "TOPLEFT"}}]}, "text": "The IBM z16 and IBM LinuxONE Emperor 4 are the latest of the IBM Z, and they are developed with a \u2018built to build\u2019 focus to provide a powerful, cyberresilient, open, and secure platform for business with an extra focus on sustainability to help build sustainable data centers. Although the z16 server can host both IBM z/OSfi and Linux workloads, LinuxONE Emperor 4 is built to host Linux only workloads with a focus on consolidation and resiliency. Depending on the workload, consolidation from numerous x86 servers into a LinuxONE Emperor 4 can help reduce energy consumption by 75% and data center floor space by 50%, which helps to achieve the sustainability goals of the organization."}, {"label": "text", "id": 5, "page_no": 5, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.1420135498047, "t": 506.7176818847656, "r": 547.25757, "b": 565.1494140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9871375560760498, "cells": [{"id": 13, "text": "Figure 3 on page 5 shows a summary of the system design of IBM LinuxONE Emperor 4 with ", "bbox": {"l": 136.80101, "t": 507.40701, "r": 547.25757, "b": 516.62, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "the IBM Telum\u2122 processor. The IBM Telum processor chip is designed to run enterprise ", "bbox": {"l": 136.80101, "t": 519.40683, "r": 531.66705, "b": 528.6198099999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "applications efficiently where their data resides to embed AI with super low latency. The ", "bbox": {"l": 136.80101, "t": 531.40662, "r": 526.3158, "b": 540.61963, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "support for higher bandwidth and I/O rates is supported through FCP Express cards with an ", "bbox": {"l": 136.80101, "t": 543.40643, "r": 544.12909, "b": 552.61943, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "endpoint security solution. The memory subsystem supports up to 40 TB of memory.", "bbox": {"l": 136.80101, "t": 555.40623, "r": 510.1834999999999, "b": 564.61923, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3 on page 5 shows a summary of the system design of IBM LinuxONE Emperor 4 with the IBM Telum\u2122 processor. The IBM Telum processor chip is designed to run enterprise applications efficiently where their data resides to embed AI with super low latency. The support for higher bandwidth and I/O rates is supported through FCP Express cards with an endpoint security solution. The memory subsystem supports up to 40 TB of memory."}, {"label": "picture", "id": 6, "page_no": 5, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 63.98974609375, "t": 106.94452667236328, "r": 547.5855102539062, "b": 375.7152404785156, "coord_origin": "TOPLEFT"}, "confidence": 0.9836835265159607, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 5, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.2760009765625, "t": 70.37826538085938, "r": 543.51959, "b": 92.84950256347656, "coord_origin": "TOPLEFT"}, "confidence": 0.8470332026481628, "cells": [{"id": 2, "text": "Figure 2 provides a snapshot of the IBM Z processor roadmap, which depicts the journey of ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 543.51959, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "transformation and improvement. ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 286.23691, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 2 provides a snapshot of the IBM Z processor roadmap, which depicts the journey of transformation and improvement."}, {"label": "caption", "id": 3, "page_no": 5, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.39653778076172, "t": 378.7839050292969, "r": 213.14488220214844, "b": 388.0233459472656, "coord_origin": "TOPLEFT"}, "confidence": 0.9416331648826599, "cells": [{"id": 4, "text": "Figure 2 IBM Z: Processor roadmap", "bbox": {"l": 64.800003, "t": 379.45801, "r": 212.60968, "b": 387.78302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 2 IBM Z: Processor roadmap"}, {"label": "text", "id": 4, "page_no": 5, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.178955078125, "t": 400.78466796875, "r": 547.25659, "b": 494.9367980957031, "coord_origin": "TOPLEFT"}, "confidence": 0.9834467768669128, "cells": [{"id": 5, "text": "The IBM z16 and IBM LinuxONE Emperor 4 are the latest of the IBM Z, and they are ", "bbox": {"l": 136.8, "t": 401.38873, "r": 512.94336, "b": 410.60172, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "developed with a \u2018built to build\u2019 focus to provide a powerful, cyberresilient, open, and secure ", "bbox": {"l": 136.8, "t": 413.38855, "r": 544.58929, "b": 422.6015300000001, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "platform for business with an extra focus on sustainability to help build sustainable data ", "bbox": {"l": 136.8, "t": 425.38837, "r": 524.4342, "b": 434.60135, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "centers. Although the z16 server can host both IBM z/OSfi and Linux workloads, LinuxONE ", "bbox": {"l": 136.80002, "t": 437.38818, "r": 544.23865, "b": 446.60117, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Emperor 4 is built to host Linux only workloads with a focus on consolidation and resiliency. ", "bbox": {"l": 136.80002, "t": 449.388, "r": 542.95471, "b": 458.60098000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Depending on the workload, consolidation from numerous x86 servers into a LinuxONE ", "bbox": {"l": 136.80002, "t": 461.38782, "r": 525.11334, "b": 470.6008, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Emperor 4 can help reduce energy consumption by 75% and data center floor space by 50%, ", "bbox": {"l": 136.80002, "t": 473.38763, "r": 547.25659, "b": 482.60062, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "which helps to achieve the sustainability goals of the organization.", "bbox": {"l": 136.80002, "t": 485.38745, "r": 428.53240999999997, "b": 494.60043, "coord_origin": "TOPLEFT"}}]}, "text": "The IBM z16 and IBM LinuxONE Emperor 4 are the latest of the IBM Z, and they are developed with a \u2018built to build\u2019 focus to provide a powerful, cyberresilient, open, and secure platform for business with an extra focus on sustainability to help build sustainable data centers. Although the z16 server can host both IBM z/OSfi and Linux workloads, LinuxONE Emperor 4 is built to host Linux only workloads with a focus on consolidation and resiliency. Depending on the workload, consolidation from numerous x86 servers into a LinuxONE Emperor 4 can help reduce energy consumption by 75% and data center floor space by 50%, which helps to achieve the sustainability goals of the organization."}, {"label": "text", "id": 5, "page_no": 5, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.1420135498047, "t": 506.7176818847656, "r": 547.25757, "b": 565.1494140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9871375560760498, "cells": [{"id": 13, "text": "Figure 3 on page 5 shows a summary of the system design of IBM LinuxONE Emperor 4 with ", "bbox": {"l": 136.80101, "t": 507.40701, "r": 547.25757, "b": 516.62, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "the IBM Telum\u2122 processor. The IBM Telum processor chip is designed to run enterprise ", "bbox": {"l": 136.80101, "t": 519.40683, "r": 531.66705, "b": 528.6198099999999, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "applications efficiently where their data resides to embed AI with super low latency. The ", "bbox": {"l": 136.80101, "t": 531.40662, "r": 526.3158, "b": 540.61963, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "support for higher bandwidth and I/O rates is supported through FCP Express cards with an ", "bbox": {"l": 136.80101, "t": 543.40643, "r": 544.12909, "b": 552.61943, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "endpoint security solution. The memory subsystem supports up to 40 TB of memory.", "bbox": {"l": 136.80101, "t": 555.40623, "r": 510.1834999999999, "b": 564.61923, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3 on page 5 shows a summary of the system design of IBM LinuxONE Emperor 4 with the IBM Telum\u2122 processor. The IBM Telum processor chip is designed to run enterprise applications efficiently where their data resides to embed AI with super low latency. The support for higher bandwidth and I/O rates is supported through FCP Express cards with an endpoint security solution. The memory subsystem supports up to 40 TB of memory."}, {"label": "picture", "id": 6, "page_no": 5, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 63.98974609375, "t": 106.94452667236328, "r": 547.5855102539062, "b": 375.7152404785156, "coord_origin": "TOPLEFT"}, "confidence": 0.9836835265159607, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 5, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.14278411865234, "t": 754.1334838867188, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8598024249076843, "cells": [{"id": 0, "text": "4 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "4"}, {"label": "page_footer", "id": 1, "page_no": 5, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 87.67771911621094, "t": 754.752685546875, "r": 261.53851, "b": 763.8809204101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9530899524688721, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 87.840302, "t": 755.538002, "r": 261.53851, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}]}}, {"page_no": 6, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "5", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Figure 3 System design of IBM z16 LinuxONE Emperor 4", "bbox": {"l": 64.800003, "t": 352.81799, "r": 297.52286, "b": 361.14301, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "The IBM z16 and IBM LinuxONE Emperor 4 servers are built with 7-nm technology at a ", "bbox": {"l": 136.8, "t": 374.80872, "r": 524.61151, "b": 384.0217, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "5.2", "bbox": {"l": 136.8, "t": 386.80853, "r": 150.69597, "b": 396.02151, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "GHz speed. They consist of four dual-chip modules (DCMs) per central processor ", "bbox": {"l": 153.47516, "t": 386.80853, "r": 516.81982, "b": 396.02151, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "complex (CPC) drawer, each of which is built with two 8-core Telum processor chips that has ", "bbox": {"l": 136.8, "t": 398.80835, "r": 547.29742, "b": 408.02133, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "\u201cfirst in the industry\u201d on-chip acceleration for mid-transaction, real-time AI inferencing, which ", "bbox": {"l": 136.8, "t": 410.80816999999996, "r": 544.5694, "b": 420.02115, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "supports many different use cases, including fraud detection. ", "bbox": {"l": 136.80103, "t": 422.80798, "r": 408.50385, "b": 432.02097, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Each core has access to a huge private 32 MB L2 cache where up to 16 MB of the L2 cache ", "bbox": {"l": 136.80103, "t": 444.82755, "r": 547.32227, "b": 454.04053, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "of an inactive core can be used as virtual cache (L3 / L4) by neighboring active cores on the ", "bbox": {"l": 136.80103, "t": 456.82736, "r": 545.1839, "b": 466.04034, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "chip. This cache helps address translation and access checking by prefetching the same ", "bbox": {"l": 136.80103, "t": 468.82718, "r": 530.6084, "b": 478.04016, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "virtual cache into the L2 cache. The virtual cache also includes Neural Network Processing ", "bbox": {"l": 136.80104, "t": 480.827, "r": 540.67108, "b": 490.03998, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Assist instructions and direct memory access with protection, and per chip GZIP ", "bbox": {"l": 136.80104, "t": 492.82681, "r": 492.88702, "b": 502.03979, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "compression.", "bbox": {"l": 136.80103, "t": 504.82663, "r": 196.24731, "b": 514.03961, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 541.200439453125, "t": 754.4961547851562, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8813691735267639, "cells": [{"id": 0, "text": "5", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "caption", "bbox": {"l": 64.30784606933594, "t": 352.14569091796875, "r": 297.72265625, "b": 361.3935241699219, "coord_origin": "TOPLEFT"}, "confidence": 0.9315948486328125, "cells": [{"id": 1, "text": "Figure 3 System design of IBM z16 LinuxONE Emperor 4", "bbox": {"l": 64.800003, "t": 352.81799, "r": 297.52286, "b": 361.14301, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.62088012695312, "t": 374.16082763671875, "r": 547.29742, "b": 432.24200439453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9837573170661926, "cells": [{"id": 2, "text": "The IBM z16 and IBM LinuxONE Emperor 4 servers are built with 7-nm technology at a ", "bbox": {"l": 136.8, "t": 374.80872, "r": 524.61151, "b": 384.0217, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "5.2", "bbox": {"l": 136.8, "t": 386.80853, "r": 150.69597, "b": 396.02151, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "GHz speed. They consist of four dual-chip modules (DCMs) per central processor ", "bbox": {"l": 153.47516, "t": 386.80853, "r": 516.81982, "b": 396.02151, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "complex (CPC) drawer, each of which is built with two 8-core Telum processor chips that has ", "bbox": {"l": 136.8, "t": 398.80835, "r": 547.29742, "b": 408.02133, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "\u201cfirst in the industry\u201d on-chip acceleration for mid-transaction, real-time AI inferencing, which ", "bbox": {"l": 136.8, "t": 410.80816999999996, "r": 544.5694, "b": 420.02115, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "supports many different use cases, including fraud detection. ", "bbox": {"l": 136.80103, "t": 422.80798, "r": 408.50385, "b": 432.02097, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.72621154785156, "t": 444.0623474121094, "r": 547.32227, "b": 514.1723022460938, "coord_origin": "TOPLEFT"}, "confidence": 0.9840249419212341, "cells": [{"id": 8, "text": "Each core has access to a huge private 32 MB L2 cache where up to 16 MB of the L2 cache ", "bbox": {"l": 136.80103, "t": 444.82755, "r": 547.32227, "b": 454.04053, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "of an inactive core can be used as virtual cache (L3 / L4) by neighboring active cores on the ", "bbox": {"l": 136.80103, "t": 456.82736, "r": 545.1839, "b": 466.04034, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "chip. This cache helps address translation and access checking by prefetching the same ", "bbox": {"l": 136.80103, "t": 468.82718, "r": 530.6084, "b": 478.04016, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "virtual cache into the L2 cache. The virtual cache also includes Neural Network Processing ", "bbox": {"l": 136.80104, "t": 480.827, "r": 540.67108, "b": 490.03998, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Assist instructions and direct memory access with protection, and per chip GZIP ", "bbox": {"l": 136.80104, "t": 492.82681, "r": 492.88702, "b": 502.03979, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "compression.", "bbox": {"l": 136.80103, "t": 504.82663, "r": 196.24731, "b": 514.03961, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "picture", "bbox": {"l": 65.5059585571289, "t": 79.5738296508789, "r": 547.4702758789062, "b": 350.3516845703125, "coord_origin": "TOPLEFT"}, "confidence": 0.6088427901268005, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 6, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 541.200439453125, "t": 754.4961547851562, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8813691735267639, "cells": [{"id": 0, "text": "5", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "5"}, {"label": "caption", "id": 1, "page_no": 6, "cluster": {"id": 1, "label": "caption", "bbox": {"l": 64.30784606933594, "t": 352.14569091796875, "r": 297.72265625, "b": 361.3935241699219, "coord_origin": "TOPLEFT"}, "confidence": 0.9315948486328125, "cells": [{"id": 1, "text": "Figure 3 System design of IBM z16 LinuxONE Emperor 4", "bbox": {"l": 64.800003, "t": 352.81799, "r": 297.52286, "b": 361.14301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3 System design of IBM z16 LinuxONE Emperor 4"}, {"label": "text", "id": 2, "page_no": 6, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.62088012695312, "t": 374.16082763671875, "r": 547.29742, "b": 432.24200439453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9837573170661926, "cells": [{"id": 2, "text": "The IBM z16 and IBM LinuxONE Emperor 4 servers are built with 7-nm technology at a ", "bbox": {"l": 136.8, "t": 374.80872, "r": 524.61151, "b": 384.0217, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "5.2", "bbox": {"l": 136.8, "t": 386.80853, "r": 150.69597, "b": 396.02151, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "GHz speed. They consist of four dual-chip modules (DCMs) per central processor ", "bbox": {"l": 153.47516, "t": 386.80853, "r": 516.81982, "b": 396.02151, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "complex (CPC) drawer, each of which is built with two 8-core Telum processor chips that has ", "bbox": {"l": 136.8, "t": 398.80835, "r": 547.29742, "b": 408.02133, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "\u201cfirst in the industry\u201d on-chip acceleration for mid-transaction, real-time AI inferencing, which ", "bbox": {"l": 136.8, "t": 410.80816999999996, "r": 544.5694, "b": 420.02115, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "supports many different use cases, including fraud detection. ", "bbox": {"l": 136.80103, "t": 422.80798, "r": 408.50385, "b": 432.02097, "coord_origin": "TOPLEFT"}}]}, "text": "The IBM z16 and IBM LinuxONE Emperor 4 servers are built with 7-nm technology at a 5.2 GHz speed. They consist of four dual-chip modules (DCMs) per central processor complex (CPC) drawer, each of which is built with two 8-core Telum processor chips that has \u201cfirst in the industry\u201d on-chip acceleration for mid-transaction, real-time AI inferencing, which supports many different use cases, including fraud detection."}, {"label": "text", "id": 3, "page_no": 6, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.72621154785156, "t": 444.0623474121094, "r": 547.32227, "b": 514.1723022460938, "coord_origin": "TOPLEFT"}, "confidence": 0.9840249419212341, "cells": [{"id": 8, "text": "Each core has access to a huge private 32 MB L2 cache where up to 16 MB of the L2 cache ", "bbox": {"l": 136.80103, "t": 444.82755, "r": 547.32227, "b": 454.04053, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "of an inactive core can be used as virtual cache (L3 / L4) by neighboring active cores on the ", "bbox": {"l": 136.80103, "t": 456.82736, "r": 545.1839, "b": 466.04034, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "chip. This cache helps address translation and access checking by prefetching the same ", "bbox": {"l": 136.80103, "t": 468.82718, "r": 530.6084, "b": 478.04016, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "virtual cache into the L2 cache. The virtual cache also includes Neural Network Processing ", "bbox": {"l": 136.80104, "t": 480.827, "r": 540.67108, "b": 490.03998, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Assist instructions and direct memory access with protection, and per chip GZIP ", "bbox": {"l": 136.80104, "t": 492.82681, "r": 492.88702, "b": 502.03979, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "compression.", "bbox": {"l": 136.80103, "t": 504.82663, "r": 196.24731, "b": 514.03961, "coord_origin": "TOPLEFT"}}]}, "text": "Each core has access to a huge private 32 MB L2 cache where up to 16 MB of the L2 cache of an inactive core can be used as virtual cache (L3 / L4) by neighboring active cores on the chip. This cache helps address translation and access checking by prefetching the same virtual cache into the L2 cache. The virtual cache also includes Neural Network Processing Assist instructions and direct memory access with protection, and per chip GZIP compression."}, {"label": "picture", "id": 4, "page_no": 6, "cluster": {"id": 4, "label": "picture", "bbox": {"l": 65.5059585571289, "t": 79.5738296508789, "r": 547.4702758789062, "b": 350.3516845703125, "coord_origin": "TOPLEFT"}, "confidence": 0.6088427901268005, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "caption", "id": 1, "page_no": 6, "cluster": {"id": 1, "label": "caption", "bbox": {"l": 64.30784606933594, "t": 352.14569091796875, "r": 297.72265625, "b": 361.3935241699219, "coord_origin": "TOPLEFT"}, "confidence": 0.9315948486328125, "cells": [{"id": 1, "text": "Figure 3 System design of IBM z16 LinuxONE Emperor 4", "bbox": {"l": 64.800003, "t": 352.81799, "r": 297.52286, "b": 361.14301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 3 System design of IBM z16 LinuxONE Emperor 4"}, {"label": "text", "id": 2, "page_no": 6, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.62088012695312, "t": 374.16082763671875, "r": 547.29742, "b": 432.24200439453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9837573170661926, "cells": [{"id": 2, "text": "The IBM z16 and IBM LinuxONE Emperor 4 servers are built with 7-nm technology at a ", "bbox": {"l": 136.8, "t": 374.80872, "r": 524.61151, "b": 384.0217, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "5.2", "bbox": {"l": 136.8, "t": 386.80853, "r": 150.69597, "b": 396.02151, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "GHz speed. They consist of four dual-chip modules (DCMs) per central processor ", "bbox": {"l": 153.47516, "t": 386.80853, "r": 516.81982, "b": 396.02151, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "complex (CPC) drawer, each of which is built with two 8-core Telum processor chips that has ", "bbox": {"l": 136.8, "t": 398.80835, "r": 547.29742, "b": 408.02133, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "\u201cfirst in the industry\u201d on-chip acceleration for mid-transaction, real-time AI inferencing, which ", "bbox": {"l": 136.8, "t": 410.80816999999996, "r": 544.5694, "b": 420.02115, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "supports many different use cases, including fraud detection. ", "bbox": {"l": 136.80103, "t": 422.80798, "r": 408.50385, "b": 432.02097, "coord_origin": "TOPLEFT"}}]}, "text": "The IBM z16 and IBM LinuxONE Emperor 4 servers are built with 7-nm technology at a 5.2 GHz speed. They consist of four dual-chip modules (DCMs) per central processor complex (CPC) drawer, each of which is built with two 8-core Telum processor chips that has \u201cfirst in the industry\u201d on-chip acceleration for mid-transaction, real-time AI inferencing, which supports many different use cases, including fraud detection."}, {"label": "text", "id": 3, "page_no": 6, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.72621154785156, "t": 444.0623474121094, "r": 547.32227, "b": 514.1723022460938, "coord_origin": "TOPLEFT"}, "confidence": 0.9840249419212341, "cells": [{"id": 8, "text": "Each core has access to a huge private 32 MB L2 cache where up to 16 MB of the L2 cache ", "bbox": {"l": 136.80103, "t": 444.82755, "r": 547.32227, "b": 454.04053, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "of an inactive core can be used as virtual cache (L3 / L4) by neighboring active cores on the ", "bbox": {"l": 136.80103, "t": 456.82736, "r": 545.1839, "b": 466.04034, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "chip. This cache helps address translation and access checking by prefetching the same ", "bbox": {"l": 136.80103, "t": 468.82718, "r": 530.6084, "b": 478.04016, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "virtual cache into the L2 cache. The virtual cache also includes Neural Network Processing ", "bbox": {"l": 136.80104, "t": 480.827, "r": 540.67108, "b": 490.03998, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Assist instructions and direct memory access with protection, and per chip GZIP ", "bbox": {"l": 136.80104, "t": 492.82681, "r": 492.88702, "b": 502.03979, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "compression.", "bbox": {"l": 136.80103, "t": 504.82663, "r": 196.24731, "b": 514.03961, "coord_origin": "TOPLEFT"}}]}, "text": "Each core has access to a huge private 32 MB L2 cache where up to 16 MB of the L2 cache of an inactive core can be used as virtual cache (L3 / L4) by neighboring active cores on the chip. This cache helps address translation and access checking by prefetching the same virtual cache into the L2 cache. The virtual cache also includes Neural Network Processing Assist instructions and direct memory access with protection, and per chip GZIP compression."}, {"label": "picture", "id": 4, "page_no": 6, "cluster": {"id": 4, "label": "picture", "bbox": {"l": 65.5059585571289, "t": 79.5738296508789, "r": 547.4702758789062, "b": 350.3516845703125, "coord_origin": "TOPLEFT"}, "confidence": 0.6088427901268005, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 6, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 541.200439453125, "t": 754.4961547851562, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8813691735267639, "cells": [{"id": 0, "text": "5", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "5"}]}}, {"page_no": 7, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "6 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 87.840302, "t": 755.538002, "r": 261.53851, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Figure 4 provides more information about the features of AI Accelerator integration with the ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 541.31055, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "IBM Z processor cores. ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 242.90685999999997, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 4", "bbox": {"l": 64.800003, "t": 365.05798, "r": 97.754448, "b": 373.38300000000004, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "IBM z16 on-chip AI Accelerator integration with IBM Z processor cores ", "bbox": {"l": 105.24736, "t": 365.05798, "r": 387.35461, "b": 373.38300000000004, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "The IBM z16 and IBM LinuxONE Emperor 4 server platforms are built with the hardware ", "bbox": {"l": 136.8, "t": 387.04873999999995, "r": 528.51288, "b": 396.26172, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "features that are shown in Figure 4 with addressing data and AI workloads in mind. ", "bbox": {"l": 136.8, "t": 399.04855, "r": 505.67551, "b": 408.26154, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Regardless of where the ML and deep learning (DL) frameworks are used to build and train ", "bbox": {"l": 136.8, "t": 411.04837, "r": 542.40015, "b": 420.26135, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "data and AI models, the inferencing on existing enterprise application data can happen along ", "bbox": {"l": 136.8, "t": 423.0481899999999, "r": 547.23456, "b": 432.26117, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "currently running enterprise business applications. CP4D 4.6 supports Tensorflow and IBM ", "bbox": {"l": 136.8, "t": 435.048, "r": 540.64105, "b": 444.26099, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Snap ML frameworks, which are optimized to use the on-chip AI Accelerator during ", "bbox": {"l": 136.8, "t": 447.04782, "r": 506.2542700000001, "b": 456.26079999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "inferencing. Support for various other frameworks is planned for future releases.", "bbox": {"l": 136.8, "t": 459.04764, "r": 490.18079000000006, "b": 468.26062, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Figure 5 on page 7 shows the seamless integration of AI into existing enterprises workloads ", "bbox": {"l": 136.8, "t": 481.00745, "r": 544.62225, "b": 490.22043, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "on the IBM z16 while leveraging the underlying hardware capabilities. ", "bbox": {"l": 136.8, "t": 493.00726, "r": 446.24227999999994, "b": 502.22025, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.22818756103516, "t": 754.2823486328125, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8751445412635803, "cells": [{"id": 0, "text": "6 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 87.59947204589844, "t": 754.7195434570312, "r": 261.53851, "b": 763.9192504882812, "coord_origin": "TOPLEFT"}, "confidence": 0.9498522877693176, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 87.840302, "t": 755.538002, "r": 261.53851, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 136.43333435058594, "t": 70.56073760986328, "r": 541.31055, "b": 93.01757049560547, "coord_origin": "TOPLEFT"}, "confidence": 0.90760338306427, "cells": [{"id": 2, "text": "Figure 4 provides more information about the features of AI Accelerator integration with the ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 541.31055, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "IBM Z processor cores. ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 242.90685999999997, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.16301727294922, "t": 364.0627746582031, "r": 387.35461, "b": 373.4560546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9267767071723938, "cells": [{"id": 4, "text": "Figure 4", "bbox": {"l": 64.800003, "t": 365.05798, "r": 97.754448, "b": 373.38300000000004, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "IBM z16 on-chip AI Accelerator integration with IBM Z processor cores ", "bbox": {"l": 105.24736, "t": 365.05798, "r": 387.35461, "b": 373.38300000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.82852172851562, "t": 385.96783447265625, "r": 547.23456, "b": 468.49432373046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9764872193336487, "cells": [{"id": 6, "text": "The IBM z16 and IBM LinuxONE Emperor 4 server platforms are built with the hardware ", "bbox": {"l": 136.8, "t": 387.04873999999995, "r": 528.51288, "b": 396.26172, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "features that are shown in Figure 4 with addressing data and AI workloads in mind. ", "bbox": {"l": 136.8, "t": 399.04855, "r": 505.67551, "b": 408.26154, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Regardless of where the ML and deep learning (DL) frameworks are used to build and train ", "bbox": {"l": 136.8, "t": 411.04837, "r": 542.40015, "b": 420.26135, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "data and AI models, the inferencing on existing enterprise application data can happen along ", "bbox": {"l": 136.8, "t": 423.0481899999999, "r": 547.23456, "b": 432.26117, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "currently running enterprise business applications. CP4D 4.6 supports Tensorflow and IBM ", "bbox": {"l": 136.8, "t": 435.048, "r": 540.64105, "b": 444.26099, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Snap ML frameworks, which are optimized to use the on-chip AI Accelerator during ", "bbox": {"l": 136.8, "t": 447.04782, "r": 506.2542700000001, "b": 456.26079999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "inferencing. Support for various other frameworks is planned for future releases.", "bbox": {"l": 136.8, "t": 459.04764, "r": 490.18079000000006, "b": 468.26062, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.02378845214844, "t": 479.8658142089844, "r": 544.62225, "b": 502.5115051269531, "coord_origin": "TOPLEFT"}, "confidence": 0.9691742062568665, "cells": [{"id": 13, "text": "Figure 5 on page 7 shows the seamless integration of AI into existing enterprises workloads ", "bbox": {"l": 136.8, "t": 481.00745, "r": 544.62225, "b": 490.22043, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "on the IBM z16 while leveraging the underlying hardware capabilities. ", "bbox": {"l": 136.8, "t": 493.00726, "r": 446.24227999999994, "b": 502.22025, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "picture", "bbox": {"l": 65.81348419189453, "t": 108.23880767822266, "r": 547.791259765625, "b": 361.2843322753906, "coord_origin": "TOPLEFT"}, "confidence": 0.668588399887085, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 7, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.22818756103516, "t": 754.2823486328125, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8751445412635803, "cells": [{"id": 0, "text": "6 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "6"}, {"label": "page_footer", "id": 1, "page_no": 7, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 87.59947204589844, "t": 754.7195434570312, "r": 261.53851, "b": 763.9192504882812, "coord_origin": "TOPLEFT"}, "confidence": 0.9498522877693176, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 87.840302, "t": 755.538002, "r": 261.53851, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"label": "text", "id": 2, "page_no": 7, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.43333435058594, "t": 70.56073760986328, "r": 541.31055, "b": 93.01757049560547, "coord_origin": "TOPLEFT"}, "confidence": 0.90760338306427, "cells": [{"id": 2, "text": "Figure 4 provides more information about the features of AI Accelerator integration with the ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 541.31055, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "IBM Z processor cores. ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 242.90685999999997, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4 provides more information about the features of AI Accelerator integration with the IBM Z processor cores."}, {"label": "caption", "id": 3, "page_no": 7, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.16301727294922, "t": 364.0627746582031, "r": 387.35461, "b": 373.4560546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9267767071723938, "cells": [{"id": 4, "text": "Figure 4", "bbox": {"l": 64.800003, "t": 365.05798, "r": 97.754448, "b": 373.38300000000004, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "IBM z16 on-chip AI Accelerator integration with IBM Z processor cores ", "bbox": {"l": 105.24736, "t": 365.05798, "r": 387.35461, "b": 373.38300000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4 IBM z16 on-chip AI Accelerator integration with IBM Z processor cores"}, {"label": "text", "id": 4, "page_no": 7, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.82852172851562, "t": 385.96783447265625, "r": 547.23456, "b": 468.49432373046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9764872193336487, "cells": [{"id": 6, "text": "The IBM z16 and IBM LinuxONE Emperor 4 server platforms are built with the hardware ", "bbox": {"l": 136.8, "t": 387.04873999999995, "r": 528.51288, "b": 396.26172, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "features that are shown in Figure 4 with addressing data and AI workloads in mind. ", "bbox": {"l": 136.8, "t": 399.04855, "r": 505.67551, "b": 408.26154, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Regardless of where the ML and deep learning (DL) frameworks are used to build and train ", "bbox": {"l": 136.8, "t": 411.04837, "r": 542.40015, "b": 420.26135, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "data and AI models, the inferencing on existing enterprise application data can happen along ", "bbox": {"l": 136.8, "t": 423.0481899999999, "r": 547.23456, "b": 432.26117, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "currently running enterprise business applications. CP4D 4.6 supports Tensorflow and IBM ", "bbox": {"l": 136.8, "t": 435.048, "r": 540.64105, "b": 444.26099, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Snap ML frameworks, which are optimized to use the on-chip AI Accelerator during ", "bbox": {"l": 136.8, "t": 447.04782, "r": 506.2542700000001, "b": 456.26079999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "inferencing. Support for various other frameworks is planned for future releases.", "bbox": {"l": 136.8, "t": 459.04764, "r": 490.18079000000006, "b": 468.26062, "coord_origin": "TOPLEFT"}}]}, "text": "The IBM z16 and IBM LinuxONE Emperor 4 server platforms are built with the hardware features that are shown in Figure 4 with addressing data and AI workloads in mind. Regardless of where the ML and deep learning (DL) frameworks are used to build and train data and AI models, the inferencing on existing enterprise application data can happen along currently running enterprise business applications. CP4D 4.6 supports Tensorflow and IBM Snap ML frameworks, which are optimized to use the on-chip AI Accelerator during inferencing. Support for various other frameworks is planned for future releases."}, {"label": "text", "id": 5, "page_no": 7, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.02378845214844, "t": 479.8658142089844, "r": 544.62225, "b": 502.5115051269531, "coord_origin": "TOPLEFT"}, "confidence": 0.9691742062568665, "cells": [{"id": 13, "text": "Figure 5 on page 7 shows the seamless integration of AI into existing enterprises workloads ", "bbox": {"l": 136.8, "t": 481.00745, "r": 544.62225, "b": 490.22043, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "on the IBM z16 while leveraging the underlying hardware capabilities. ", "bbox": {"l": 136.8, "t": 493.00726, "r": 446.24227999999994, "b": 502.22025, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 5 on page 7 shows the seamless integration of AI into existing enterprises workloads on the IBM z16 while leveraging the underlying hardware capabilities."}, {"label": "picture", "id": 6, "page_no": 7, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 65.81348419189453, "t": 108.23880767822266, "r": 547.791259765625, "b": 361.2843322753906, "coord_origin": "TOPLEFT"}, "confidence": 0.668588399887085, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 7, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.43333435058594, "t": 70.56073760986328, "r": 541.31055, "b": 93.01757049560547, "coord_origin": "TOPLEFT"}, "confidence": 0.90760338306427, "cells": [{"id": 2, "text": "Figure 4 provides more information about the features of AI Accelerator integration with the ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 541.31055, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "IBM Z processor cores. ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 242.90685999999997, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4 provides more information about the features of AI Accelerator integration with the IBM Z processor cores."}, {"label": "caption", "id": 3, "page_no": 7, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.16301727294922, "t": 364.0627746582031, "r": 387.35461, "b": 373.4560546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9267767071723938, "cells": [{"id": 4, "text": "Figure 4", "bbox": {"l": 64.800003, "t": 365.05798, "r": 97.754448, "b": 373.38300000000004, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "IBM z16 on-chip AI Accelerator integration with IBM Z processor cores ", "bbox": {"l": 105.24736, "t": 365.05798, "r": 387.35461, "b": 373.38300000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 4 IBM z16 on-chip AI Accelerator integration with IBM Z processor cores"}, {"label": "text", "id": 4, "page_no": 7, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.82852172851562, "t": 385.96783447265625, "r": 547.23456, "b": 468.49432373046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9764872193336487, "cells": [{"id": 6, "text": "The IBM z16 and IBM LinuxONE Emperor 4 server platforms are built with the hardware ", "bbox": {"l": 136.8, "t": 387.04873999999995, "r": 528.51288, "b": 396.26172, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "features that are shown in Figure 4 with addressing data and AI workloads in mind. ", "bbox": {"l": 136.8, "t": 399.04855, "r": 505.67551, "b": 408.26154, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Regardless of where the ML and deep learning (DL) frameworks are used to build and train ", "bbox": {"l": 136.8, "t": 411.04837, "r": 542.40015, "b": 420.26135, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "data and AI models, the inferencing on existing enterprise application data can happen along ", "bbox": {"l": 136.8, "t": 423.0481899999999, "r": 547.23456, "b": 432.26117, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "currently running enterprise business applications. CP4D 4.6 supports Tensorflow and IBM ", "bbox": {"l": 136.8, "t": 435.048, "r": 540.64105, "b": 444.26099, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Snap ML frameworks, which are optimized to use the on-chip AI Accelerator during ", "bbox": {"l": 136.8, "t": 447.04782, "r": 506.2542700000001, "b": 456.26079999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "inferencing. Support for various other frameworks is planned for future releases.", "bbox": {"l": 136.8, "t": 459.04764, "r": 490.18079000000006, "b": 468.26062, "coord_origin": "TOPLEFT"}}]}, "text": "The IBM z16 and IBM LinuxONE Emperor 4 server platforms are built with the hardware features that are shown in Figure 4 with addressing data and AI workloads in mind. Regardless of where the ML and deep learning (DL) frameworks are used to build and train data and AI models, the inferencing on existing enterprise application data can happen along currently running enterprise business applications. CP4D 4.6 supports Tensorflow and IBM Snap ML frameworks, which are optimized to use the on-chip AI Accelerator during inferencing. Support for various other frameworks is planned for future releases."}, {"label": "text", "id": 5, "page_no": 7, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.02378845214844, "t": 479.8658142089844, "r": 544.62225, "b": 502.5115051269531, "coord_origin": "TOPLEFT"}, "confidence": 0.9691742062568665, "cells": [{"id": 13, "text": "Figure 5 on page 7 shows the seamless integration of AI into existing enterprises workloads ", "bbox": {"l": 136.8, "t": 481.00745, "r": 544.62225, "b": 490.22043, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "on the IBM z16 while leveraging the underlying hardware capabilities. ", "bbox": {"l": 136.8, "t": 493.00726, "r": 446.24227999999994, "b": 502.22025, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 5 on page 7 shows the seamless integration of AI into existing enterprises workloads on the IBM z16 while leveraging the underlying hardware capabilities."}, {"label": "picture", "id": 6, "page_no": 7, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 65.81348419189453, "t": 108.23880767822266, "r": 547.791259765625, "b": 361.2843322753906, "coord_origin": "TOPLEFT"}, "confidence": 0.668588399887085, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 7, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.22818756103516, "t": 754.2823486328125, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8751445412635803, "cells": [{"id": 0, "text": "6 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "6"}, {"label": "page_footer", "id": 1, "page_no": 7, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 87.59947204589844, "t": 754.7195434570312, "r": 261.53851, "b": 763.9192504882812, "coord_origin": "TOPLEFT"}, "confidence": 0.9498522877693176, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 87.840302, "t": 755.538002, "r": 261.53851, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}]}}, {"page_no": 8, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "7", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Figure 5 Seamless integration", "bbox": {"l": 64.800003, "t": 302.41799999999995, "r": 189.15477, "b": 310.74301, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "What is Cloud Pak for Data on IBM Z", "bbox": {"l": 64.800003, "t": 339.0607, "r": 341.13141, "b": 353.8236999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "IBM Cloud Pak for Data allows enterprises to simplify, unify, and automate the delivery of data ", "bbox": {"l": 136.8, "t": 371.38873, "r": 547.13208, "b": 380.60172, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "and AI. It categorizes the activities within the journey to AI as four rungs of the AI Ladder: ", "bbox": {"l": 136.8, "t": 383.38855, "r": 532.961, "b": 392.6015300000001, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Collect, Organize, Analyze, and Infuse. For more information about each of the AI Ladder ", "bbox": {"l": 136.8, "t": 395.38837, "r": 534.08069, "b": 404.60135, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "rungs, see ", "bbox": {"l": 136.8, "t": 407.38818, "r": 186.25638, "b": 416.60117, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Become Data Driven with IBM Z Infused Data Fabric", "bbox": {"l": 186.24045, "t": 407.38818, "r": 418.34933, "b": 416.60117, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": ", REDP-5680. ", "bbox": {"l": 418.44092, "t": 407.38818, "r": 482.83331, "b": 416.60117, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "CP4D on IBM Z provides enterprises with a resilient and secure private cloud platform. You ", "bbox": {"l": 136.80099, "t": 429.40775, "r": 542.388, "b": 438.62073000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "can use it to create ML and AI models that may be included into modern intelligent ", "bbox": {"l": 136.80099, "t": 441.40756, "r": 502.96643, "b": 450.62054, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "applications. You also can use it to use and construct applications for mission-critical data. ", "bbox": {"l": 136.79999, "t": 453.40738, "r": 538.49261, "b": 462.62036, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "With CP4D on IBM Z, enterprises can lower data movement latency, cost inefficiencies, and ", "bbox": {"l": 136.79997, "t": 465.4072, "r": 545.08618, "b": 474.62018, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "potential security exposures. Enterprises can safely store and access their most important ", "bbox": {"l": 136.79997, "t": 477.40701, "r": 536.80255, "b": 486.62, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "company data, and leverage their current infrastructure by using cutting-edge hybrid cloud ", "bbox": {"l": 136.79997, "t": 489.40683, "r": 537.39636, "b": 498.61981, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "applications. Enterprises can combine their current database applications without any ", "bbox": {"l": 136.79997, "t": 501.40665, "r": 516.77905, "b": 510.61963, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "rewrites, which results in reduced cost and complexity. Lastly, by using CP4D on IBM Z, ", "bbox": {"l": 136.79997, "t": 513.4064599999999, "r": 527.8623, "b": 522.6194499999999, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "enterprises can update their database infrastructure to benefit from easier management, a ", "bbox": {"l": 136.79997, "t": 525.4062799999999, "r": 537.32935, "b": 534.6192599999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "quicker time to value, and lower operating expenses.", "bbox": {"l": 136.79997, "t": 537.40608, "r": 370.20856, "b": 546.6190799999999, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 540.8759155273438, "t": 754.2392578125, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8702407479286194, "cells": [{"id": 0, "text": "7", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "caption", "bbox": {"l": 64.26493072509766, "t": 301.75836181640625, "r": 189.6370086669922, "b": 310.74301, "coord_origin": "TOPLEFT"}, "confidence": 0.9447076320648193, "cells": [{"id": 1, "text": "Figure 5 Seamless integration", "bbox": {"l": 64.800003, "t": 302.41799999999995, "r": 189.15477, "b": 310.74301, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.28071594238281, "t": 338.1206970214844, "r": 341.6769714355469, "b": 353.8236999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9576840996742249, "cells": [{"id": 2, "text": "What is Cloud Pak for Data on IBM Z", "bbox": {"l": 64.800003, "t": 339.0607, "r": 341.13141, "b": 353.8236999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.9339141845703, "t": 370.57708740234375, "r": 547.13208, "b": 416.7144775390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9846300482749939, "cells": [{"id": 3, "text": "IBM Cloud Pak for Data allows enterprises to simplify, unify, and automate the delivery of data ", "bbox": {"l": 136.8, "t": 371.38873, "r": 547.13208, "b": 380.60172, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "and AI. It categorizes the activities within the journey to AI as four rungs of the AI Ladder: ", "bbox": {"l": 136.8, "t": 383.38855, "r": 532.961, "b": 392.6015300000001, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Collect, Organize, Analyze, and Infuse. For more information about each of the AI Ladder ", "bbox": {"l": 136.8, "t": 395.38837, "r": 534.08069, "b": 404.60135, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "rungs, see ", "bbox": {"l": 136.8, "t": 407.38818, "r": 186.25638, "b": 416.60117, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Become Data Driven with IBM Z Infused Data Fabric", "bbox": {"l": 186.24045, "t": 407.38818, "r": 418.34933, "b": 416.60117, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": ", REDP-5680. ", "bbox": {"l": 418.44092, "t": 407.38818, "r": 482.83331, "b": 416.60117, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.8167266845703, "t": 428.53900146484375, "r": 545.08618, "b": 546.9762573242188, "coord_origin": "TOPLEFT"}, "confidence": 0.9876003265380859, "cells": [{"id": 9, "text": "CP4D on IBM Z provides enterprises with a resilient and secure private cloud platform. You ", "bbox": {"l": 136.80099, "t": 429.40775, "r": 542.388, "b": 438.62073000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "can use it to create ML and AI models that may be included into modern intelligent ", "bbox": {"l": 136.80099, "t": 441.40756, "r": 502.96643, "b": 450.62054, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "applications. You also can use it to use and construct applications for mission-critical data. ", "bbox": {"l": 136.79999, "t": 453.40738, "r": 538.49261, "b": 462.62036, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "With CP4D on IBM Z, enterprises can lower data movement latency, cost inefficiencies, and ", "bbox": {"l": 136.79997, "t": 465.4072, "r": 545.08618, "b": 474.62018, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "potential security exposures. Enterprises can safely store and access their most important ", "bbox": {"l": 136.79997, "t": 477.40701, "r": 536.80255, "b": 486.62, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "company data, and leverage their current infrastructure by using cutting-edge hybrid cloud ", "bbox": {"l": 136.79997, "t": 489.40683, "r": 537.39636, "b": 498.61981, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "applications. Enterprises can combine their current database applications without any ", "bbox": {"l": 136.79997, "t": 501.40665, "r": 516.77905, "b": 510.61963, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "rewrites, which results in reduced cost and complexity. Lastly, by using CP4D on IBM Z, ", "bbox": {"l": 136.79997, "t": 513.4064599999999, "r": 527.8623, "b": 522.6194499999999, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "enterprises can update their database infrastructure to benefit from easier management, a ", "bbox": {"l": 136.79997, "t": 525.4062799999999, "r": 537.32935, "b": 534.6192599999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "quicker time to value, and lower operating expenses.", "bbox": {"l": 136.79997, "t": 537.40608, "r": 370.20856, "b": 546.6190799999999, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "picture", "bbox": {"l": 63.88162612915039, "t": 77.46954345703125, "r": 547.2862548828125, "b": 299.900390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9817203283309937, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 8, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 540.8759155273438, "t": 754.2392578125, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8702407479286194, "cells": [{"id": 0, "text": "7", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "7"}, {"label": "caption", "id": 1, "page_no": 8, "cluster": {"id": 1, "label": "caption", "bbox": {"l": 64.26493072509766, "t": 301.75836181640625, "r": 189.6370086669922, "b": 310.74301, "coord_origin": "TOPLEFT"}, "confidence": 0.9447076320648193, "cells": [{"id": 1, "text": "Figure 5 Seamless integration", "bbox": {"l": 64.800003, "t": 302.41799999999995, "r": 189.15477, "b": 310.74301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 5 Seamless integration"}, {"label": "section_header", "id": 2, "page_no": 8, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.28071594238281, "t": 338.1206970214844, "r": 341.6769714355469, "b": 353.8236999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9576840996742249, "cells": [{"id": 2, "text": "What is Cloud Pak for Data on IBM Z", "bbox": {"l": 64.800003, "t": 339.0607, "r": 341.13141, "b": 353.8236999999999, "coord_origin": "TOPLEFT"}}]}, "text": "What is Cloud Pak for Data on IBM Z"}, {"label": "text", "id": 3, "page_no": 8, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.9339141845703, "t": 370.57708740234375, "r": 547.13208, "b": 416.7144775390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9846300482749939, "cells": [{"id": 3, "text": "IBM Cloud Pak for Data allows enterprises to simplify, unify, and automate the delivery of data ", "bbox": {"l": 136.8, "t": 371.38873, "r": 547.13208, "b": 380.60172, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "and AI. It categorizes the activities within the journey to AI as four rungs of the AI Ladder: ", "bbox": {"l": 136.8, "t": 383.38855, "r": 532.961, "b": 392.6015300000001, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Collect, Organize, Analyze, and Infuse. For more information about each of the AI Ladder ", "bbox": {"l": 136.8, "t": 395.38837, "r": 534.08069, "b": 404.60135, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "rungs, see ", "bbox": {"l": 136.8, "t": 407.38818, "r": 186.25638, "b": 416.60117, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Become Data Driven with IBM Z Infused Data Fabric", "bbox": {"l": 186.24045, "t": 407.38818, "r": 418.34933, "b": 416.60117, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": ", REDP-5680. ", "bbox": {"l": 418.44092, "t": 407.38818, "r": 482.83331, "b": 416.60117, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data allows enterprises to simplify, unify, and automate the delivery of data and AI. It categorizes the activities within the journey to AI as four rungs of the AI Ladder: Collect, Organize, Analyze, and Infuse. For more information about each of the AI Ladder rungs, see Become Data Driven with IBM Z Infused Data Fabric , REDP-5680."}, {"label": "text", "id": 4, "page_no": 8, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.8167266845703, "t": 428.53900146484375, "r": 545.08618, "b": 546.9762573242188, "coord_origin": "TOPLEFT"}, "confidence": 0.9876003265380859, "cells": [{"id": 9, "text": "CP4D on IBM Z provides enterprises with a resilient and secure private cloud platform. You ", "bbox": {"l": 136.80099, "t": 429.40775, "r": 542.388, "b": 438.62073000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "can use it to create ML and AI models that may be included into modern intelligent ", "bbox": {"l": 136.80099, "t": 441.40756, "r": 502.96643, "b": 450.62054, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "applications. You also can use it to use and construct applications for mission-critical data. ", "bbox": {"l": 136.79999, "t": 453.40738, "r": 538.49261, "b": 462.62036, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "With CP4D on IBM Z, enterprises can lower data movement latency, cost inefficiencies, and ", "bbox": {"l": 136.79997, "t": 465.4072, "r": 545.08618, "b": 474.62018, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "potential security exposures. Enterprises can safely store and access their most important ", "bbox": {"l": 136.79997, "t": 477.40701, "r": 536.80255, "b": 486.62, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "company data, and leverage their current infrastructure by using cutting-edge hybrid cloud ", "bbox": {"l": 136.79997, "t": 489.40683, "r": 537.39636, "b": 498.61981, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "applications. Enterprises can combine their current database applications without any ", "bbox": {"l": 136.79997, "t": 501.40665, "r": 516.77905, "b": 510.61963, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "rewrites, which results in reduced cost and complexity. Lastly, by using CP4D on IBM Z, ", "bbox": {"l": 136.79997, "t": 513.4064599999999, "r": 527.8623, "b": 522.6194499999999, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "enterprises can update their database infrastructure to benefit from easier management, a ", "bbox": {"l": 136.79997, "t": 525.4062799999999, "r": 537.32935, "b": 534.6192599999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "quicker time to value, and lower operating expenses.", "bbox": {"l": 136.79997, "t": 537.40608, "r": 370.20856, "b": 546.6190799999999, "coord_origin": "TOPLEFT"}}]}, "text": "CP4D on IBM Z provides enterprises with a resilient and secure private cloud platform. You can use it to create ML and AI models that may be included into modern intelligent applications. You also can use it to use and construct applications for mission-critical data. With CP4D on IBM Z, enterprises can lower data movement latency, cost inefficiencies, and potential security exposures. Enterprises can safely store and access their most important company data, and leverage their current infrastructure by using cutting-edge hybrid cloud applications. Enterprises can combine their current database applications without any rewrites, which results in reduced cost and complexity. Lastly, by using CP4D on IBM Z, enterprises can update their database infrastructure to benefit from easier management, a quicker time to value, and lower operating expenses."}, {"label": "picture", "id": 5, "page_no": 8, "cluster": {"id": 5, "label": "picture", "bbox": {"l": 63.88162612915039, "t": 77.46954345703125, "r": 547.2862548828125, "b": 299.900390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9817203283309937, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "caption", "id": 1, "page_no": 8, "cluster": {"id": 1, "label": "caption", "bbox": {"l": 64.26493072509766, "t": 301.75836181640625, "r": 189.6370086669922, "b": 310.74301, "coord_origin": "TOPLEFT"}, "confidence": 0.9447076320648193, "cells": [{"id": 1, "text": "Figure 5 Seamless integration", "bbox": {"l": 64.800003, "t": 302.41799999999995, "r": 189.15477, "b": 310.74301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 5 Seamless integration"}, {"label": "section_header", "id": 2, "page_no": 8, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.28071594238281, "t": 338.1206970214844, "r": 341.6769714355469, "b": 353.8236999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9576840996742249, "cells": [{"id": 2, "text": "What is Cloud Pak for Data on IBM Z", "bbox": {"l": 64.800003, "t": 339.0607, "r": 341.13141, "b": 353.8236999999999, "coord_origin": "TOPLEFT"}}]}, "text": "What is Cloud Pak for Data on IBM Z"}, {"label": "text", "id": 3, "page_no": 8, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.9339141845703, "t": 370.57708740234375, "r": 547.13208, "b": 416.7144775390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9846300482749939, "cells": [{"id": 3, "text": "IBM Cloud Pak for Data allows enterprises to simplify, unify, and automate the delivery of data ", "bbox": {"l": 136.8, "t": 371.38873, "r": 547.13208, "b": 380.60172, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "and AI. It categorizes the activities within the journey to AI as four rungs of the AI Ladder: ", "bbox": {"l": 136.8, "t": 383.38855, "r": 532.961, "b": 392.6015300000001, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Collect, Organize, Analyze, and Infuse. For more information about each of the AI Ladder ", "bbox": {"l": 136.8, "t": 395.38837, "r": 534.08069, "b": 404.60135, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "rungs, see ", "bbox": {"l": 136.8, "t": 407.38818, "r": 186.25638, "b": 416.60117, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Become Data Driven with IBM Z Infused Data Fabric", "bbox": {"l": 186.24045, "t": 407.38818, "r": 418.34933, "b": 416.60117, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": ", REDP-5680. ", "bbox": {"l": 418.44092, "t": 407.38818, "r": 482.83331, "b": 416.60117, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data allows enterprises to simplify, unify, and automate the delivery of data and AI. It categorizes the activities within the journey to AI as four rungs of the AI Ladder: Collect, Organize, Analyze, and Infuse. For more information about each of the AI Ladder rungs, see Become Data Driven with IBM Z Infused Data Fabric , REDP-5680."}, {"label": "text", "id": 4, "page_no": 8, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.8167266845703, "t": 428.53900146484375, "r": 545.08618, "b": 546.9762573242188, "coord_origin": "TOPLEFT"}, "confidence": 0.9876003265380859, "cells": [{"id": 9, "text": "CP4D on IBM Z provides enterprises with a resilient and secure private cloud platform. You ", "bbox": {"l": 136.80099, "t": 429.40775, "r": 542.388, "b": 438.62073000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "can use it to create ML and AI models that may be included into modern intelligent ", "bbox": {"l": 136.80099, "t": 441.40756, "r": 502.96643, "b": 450.62054, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "applications. You also can use it to use and construct applications for mission-critical data. ", "bbox": {"l": 136.79999, "t": 453.40738, "r": 538.49261, "b": 462.62036, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "With CP4D on IBM Z, enterprises can lower data movement latency, cost inefficiencies, and ", "bbox": {"l": 136.79997, "t": 465.4072, "r": 545.08618, "b": 474.62018, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "potential security exposures. Enterprises can safely store and access their most important ", "bbox": {"l": 136.79997, "t": 477.40701, "r": 536.80255, "b": 486.62, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "company data, and leverage their current infrastructure by using cutting-edge hybrid cloud ", "bbox": {"l": 136.79997, "t": 489.40683, "r": 537.39636, "b": 498.61981, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "applications. Enterprises can combine their current database applications without any ", "bbox": {"l": 136.79997, "t": 501.40665, "r": 516.77905, "b": 510.61963, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "rewrites, which results in reduced cost and complexity. Lastly, by using CP4D on IBM Z, ", "bbox": {"l": 136.79997, "t": 513.4064599999999, "r": 527.8623, "b": 522.6194499999999, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "enterprises can update their database infrastructure to benefit from easier management, a ", "bbox": {"l": 136.79997, "t": 525.4062799999999, "r": 537.32935, "b": 534.6192599999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "quicker time to value, and lower operating expenses.", "bbox": {"l": 136.79997, "t": 537.40608, "r": 370.20856, "b": 546.6190799999999, "coord_origin": "TOPLEFT"}}]}, "text": "CP4D on IBM Z provides enterprises with a resilient and secure private cloud platform. You can use it to create ML and AI models that may be included into modern intelligent applications. You also can use it to use and construct applications for mission-critical data. With CP4D on IBM Z, enterprises can lower data movement latency, cost inefficiencies, and potential security exposures. Enterprises can safely store and access their most important company data, and leverage their current infrastructure by using cutting-edge hybrid cloud applications. Enterprises can combine their current database applications without any rewrites, which results in reduced cost and complexity. Lastly, by using CP4D on IBM Z, enterprises can update their database infrastructure to benefit from easier management, a quicker time to value, and lower operating expenses."}, {"label": "picture", "id": 5, "page_no": 8, "cluster": {"id": 5, "label": "picture", "bbox": {"l": 63.88162612915039, "t": 77.46954345703125, "r": 547.2862548828125, "b": 299.900390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9817203283309937, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 8, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 540.8759155273438, "t": 754.2392578125, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8702407479286194, "cells": [{"id": 0, "text": "7", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "7"}]}}, {"page_no": 9, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "8 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 87.840302, "t": 755.538002, "r": 261.53851, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Figure 6 shows a solution overview of CP4D. The infrastructure alternatives are shown at the ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 547.24561, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "bottom, and they include IBM Z and LinuxONE. They all leverage Red Hat OpenShift. ", "bbox": {"l": 136.80002, "t": 83.50847999999996, "r": 516.8139, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Common Foundational Services come next, which offer clarity throughout the data and AI ", "bbox": {"l": 136.80002, "t": 95.50829999999996, "r": 534.69507, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "lifecycle, that is, from user access management to monitoring and service provisioning. A ", "bbox": {"l": 136.80002, "t": 107.50811999999996, "r": 532.9491, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "high-level view of the services is shown in the middle section. The services have several ", "bbox": {"l": 136.80003, "t": 119.50792999999999, "r": 529.53284, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "different capabilities that span the AI hierarchy. The platform can be expanded, and it offers a ", "bbox": {"l": 136.80005, "t": 131.50775, "r": 547.28058, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "seamless user experience for all distinct personas across the AI lifecycle, from data gathering ", "bbox": {"l": 136.80005, "t": 143.50757, "r": 547.19391, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "through AI infusion. ", "bbox": {"l": 136.80008, "t": 155.50739, "r": 225.63828, "b": 164.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Figure 6 Solution overview of Cloud Pak for Data", "bbox": {"l": 64.800003, "t": 484.39798, "r": 264.04919, "b": 492.72299, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "We highlight the four main pillars that make IBM Z the correct infrastructure for CP4D: ", "bbox": {"l": 136.8, "t": 506.38861, "r": 518.39545, "b": 515.60159, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 523.51779, "r": 141.78096, "b": 532.2925700000001, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Performance and Scale", "bbox": {"l": 151.20113, "t": 523.36841, "r": 255.66061, "b": 532.58139, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 540.49762, "r": 141.78096, "b": 549.27237, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Embedded Accelerators", "bbox": {"l": 151.20113, "t": 540.34822, "r": 257.89264, "b": 549.56122, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 557.53719, "r": 141.78096, "b": 566.31194, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Reliability and Availability", "bbox": {"l": 151.20113, "t": 557.38779, "r": 263.38062, "b": 566.60078, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 574.517, "r": 141.78096, "b": 583.29175, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Security and Governance. ", "bbox": {"l": 151.20113, "t": 574.3676, "r": 269.54684, "b": 583.5806, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "From a performance perspective, CP4D on IBM Z provides your data and AI with high ", "bbox": {"l": 136.80096, "t": 596.38716, "r": 518.51489, "b": 605.60016, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "transaction processing and a powerful infrastructure. From the embedded accelerators ", "bbox": {"l": 136.80096, "t": 608.38696, "r": 521.82758, "b": 617.59996, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "perspective, CP4D on IBM Z can investigate each transaction thanks to a cutting-edge DL ", "bbox": {"l": 136.80096, "t": 620.38676, "r": 536.88837, "b": 629.5997600000001, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "inference technology even in the most demanding, sensitive, and latency-prone real-time ", "bbox": {"l": 136.80096, "t": 632.38657, "r": 531.82153, "b": 641.59956, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "workloads. From a reliability perspective, CP4D on IBM Z provides high availability and ", "bbox": {"l": 136.80095, "t": 644.3863699999999, "r": 523.38043, "b": 653.59937, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "resiliency. Lastly from the security perspective, CP4D on IBM Z is suitable for protecting ", "bbox": {"l": 136.80096, "t": 656.38617, "r": 527.28973, "b": 665.59917, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "sensitive data and AI models for enterprises in highly regulated industries or those industries ", "bbox": {"l": 136.80098, "t": 668.38597, "r": 547.28143, "b": 677.59898, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "that are worried about security.", "bbox": {"l": 136.80098, "t": 680.38578, "r": 274.02484, "b": 689.59879, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.2588882446289, "t": 754.197998046875, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8762364983558655, "cells": [{"id": 0, "text": "8 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 87.62134552001953, "t": 754.7377319335938, "r": 261.53851, "b": 763.8740234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9511485695838928, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 87.840302, "t": 755.538002, "r": 261.53851, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 136.00271606445312, "t": 70.69949340820312, "r": 547.28058, "b": 164.883544921875, "coord_origin": "TOPLEFT"}, "confidence": 0.984743595123291, "cells": [{"id": 2, "text": "Figure 6 shows a solution overview of CP4D. The infrastructure alternatives are shown at the ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 547.24561, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "bottom, and they include IBM Z and LinuxONE. They all leverage Red Hat OpenShift. ", "bbox": {"l": 136.80002, "t": 83.50847999999996, "r": 516.8139, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Common Foundational Services come next, which offer clarity throughout the data and AI ", "bbox": {"l": 136.80002, "t": 95.50829999999996, "r": 534.69507, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "lifecycle, that is, from user access management to monitoring and service provisioning. A ", "bbox": {"l": 136.80002, "t": 107.50811999999996, "r": 532.9491, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "high-level view of the services is shown in the middle section. The services have several ", "bbox": {"l": 136.80003, "t": 119.50792999999999, "r": 529.53284, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "different capabilities that span the AI hierarchy. The platform can be expanded, and it offers a ", "bbox": {"l": 136.80005, "t": 131.50775, "r": 547.28058, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "seamless user experience for all distinct personas across the AI lifecycle, from data gathering ", "bbox": {"l": 136.80005, "t": 143.50757, "r": 547.19391, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "through AI infusion. ", "bbox": {"l": 136.80008, "t": 155.50739, "r": 225.63828, "b": 164.72040000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.43482208251953, "t": 483.486328125, "r": 264.04919, "b": 492.95330810546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9446989297866821, "cells": [{"id": 10, "text": "Figure 6 Solution overview of Cloud Pak for Data", "bbox": {"l": 64.800003, "t": 484.39798, "r": 264.04919, "b": 492.72299, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.67288208007812, "t": 505.269287109375, "r": 518.39545, "b": 515.68896484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9399420619010925, "cells": [{"id": 11, "text": "We highlight the four main pillars that make IBM Z the correct infrastructure for CP4D: ", "bbox": {"l": 136.8, "t": 506.38861, "r": 518.39545, "b": 515.60159, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 135.7481231689453, "t": 522.5965576171875, "r": 255.66061, "b": 532.58139, "coord_origin": "TOPLEFT"}, "confidence": 0.9303468465805054, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 523.51779, "r": 141.78096, "b": 532.2925700000001, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Performance and Scale", "bbox": {"l": 151.20113, "t": 523.36841, "r": 255.66061, "b": 532.58139, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.7166748046875, "t": 539.3995971679688, "r": 257.89264, "b": 549.56122, "coord_origin": "TOPLEFT"}, "confidence": 0.923041820526123, "cells": [{"id": 14, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 540.49762, "r": 141.78096, "b": 549.27237, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Embedded Accelerators", "bbox": {"l": 151.20113, "t": 540.34822, "r": 257.89264, "b": 549.56122, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.57183837890625, "t": 556.74267578125, "r": 263.64544677734375, "b": 567.2510986328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9483156800270081, "cells": [{"id": 16, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 557.53719, "r": 141.78096, "b": 566.31194, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Reliability and Availability", "bbox": {"l": 151.20113, "t": 557.38779, "r": 263.38062, "b": 566.60078, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.74082946777344, "t": 573.56103515625, "r": 269.54684, "b": 583.5806, "coord_origin": "TOPLEFT"}, "confidence": 0.9437612891197205, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 574.517, "r": 141.78096, "b": 583.29175, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Security and Governance. ", "bbox": {"l": 151.20113, "t": 574.3676, "r": 269.54684, "b": 583.5806, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 136.00941467285156, "t": 595.1112670898438, "r": 547.28143, "b": 689.7734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9868659377098083, "cells": [{"id": 20, "text": "From a performance perspective, CP4D on IBM Z provides your data and AI with high ", "bbox": {"l": 136.80096, "t": 596.38716, "r": 518.51489, "b": 605.60016, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "transaction processing and a powerful infrastructure. From the embedded accelerators ", "bbox": {"l": 136.80096, "t": 608.38696, "r": 521.82758, "b": 617.59996, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "perspective, CP4D on IBM Z can investigate each transaction thanks to a cutting-edge DL ", "bbox": {"l": 136.80096, "t": 620.38676, "r": 536.88837, "b": 629.5997600000001, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "inference technology even in the most demanding, sensitive, and latency-prone real-time ", "bbox": {"l": 136.80096, "t": 632.38657, "r": 531.82153, "b": 641.59956, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "workloads. From a reliability perspective, CP4D on IBM Z provides high availability and ", "bbox": {"l": 136.80095, "t": 644.3863699999999, "r": 523.38043, "b": 653.59937, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "resiliency. Lastly from the security perspective, CP4D on IBM Z is suitable for protecting ", "bbox": {"l": 136.80096, "t": 656.38617, "r": 527.28973, "b": 665.59917, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "sensitive data and AI models for enterprises in highly regulated industries or those industries ", "bbox": {"l": 136.80098, "t": 668.38597, "r": 547.28143, "b": 677.59898, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "that are worried about security.", "bbox": {"l": 136.80098, "t": 680.38578, "r": 274.02484, "b": 689.59879, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "picture", "bbox": {"l": 63.72787094116211, "t": 179.1451873779297, "r": 547.3121948242188, "b": 480.79541015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9759865999221802, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 9, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.2588882446289, "t": 754.197998046875, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8762364983558655, "cells": [{"id": 0, "text": "8 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "8"}, {"label": "page_footer", "id": 1, "page_no": 9, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 87.62134552001953, "t": 754.7377319335938, "r": 261.53851, "b": 763.8740234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9511485695838928, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 87.840302, "t": 755.538002, "r": 261.53851, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"label": "text", "id": 2, "page_no": 9, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.00271606445312, "t": 70.69949340820312, "r": 547.28058, "b": 164.883544921875, "coord_origin": "TOPLEFT"}, "confidence": 0.984743595123291, "cells": [{"id": 2, "text": "Figure 6 shows a solution overview of CP4D. The infrastructure alternatives are shown at the ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 547.24561, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "bottom, and they include IBM Z and LinuxONE. They all leverage Red Hat OpenShift. ", "bbox": {"l": 136.80002, "t": 83.50847999999996, "r": 516.8139, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Common Foundational Services come next, which offer clarity throughout the data and AI ", "bbox": {"l": 136.80002, "t": 95.50829999999996, "r": 534.69507, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "lifecycle, that is, from user access management to monitoring and service provisioning. A ", "bbox": {"l": 136.80002, "t": 107.50811999999996, "r": 532.9491, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "high-level view of the services is shown in the middle section. The services have several ", "bbox": {"l": 136.80003, "t": 119.50792999999999, "r": 529.53284, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "different capabilities that span the AI hierarchy. The platform can be expanded, and it offers a ", "bbox": {"l": 136.80005, "t": 131.50775, "r": 547.28058, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "seamless user experience for all distinct personas across the AI lifecycle, from data gathering ", "bbox": {"l": 136.80005, "t": 143.50757, "r": 547.19391, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "through AI infusion. ", "bbox": {"l": 136.80008, "t": 155.50739, "r": 225.63828, "b": 164.72040000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6 shows a solution overview of CP4D. The infrastructure alternatives are shown at the bottom, and they include IBM Z and LinuxONE. They all leverage Red Hat OpenShift. Common Foundational Services come next, which offer clarity throughout the data and AI lifecycle, that is, from user access management to monitoring and service provisioning. A high-level view of the services is shown in the middle section. The services have several different capabilities that span the AI hierarchy. The platform can be expanded, and it offers a seamless user experience for all distinct personas across the AI lifecycle, from data gathering through AI infusion."}, {"label": "caption", "id": 3, "page_no": 9, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.43482208251953, "t": 483.486328125, "r": 264.04919, "b": 492.95330810546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9446989297866821, "cells": [{"id": 10, "text": "Figure 6 Solution overview of Cloud Pak for Data", "bbox": {"l": 64.800003, "t": 484.39798, "r": 264.04919, "b": 492.72299, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6 Solution overview of Cloud Pak for Data"}, {"label": "text", "id": 4, "page_no": 9, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.67288208007812, "t": 505.269287109375, "r": 518.39545, "b": 515.68896484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9399420619010925, "cells": [{"id": 11, "text": "We highlight the four main pillars that make IBM Z the correct infrastructure for CP4D: ", "bbox": {"l": 136.8, "t": 506.38861, "r": 518.39545, "b": 515.60159, "coord_origin": "TOPLEFT"}}]}, "text": "We highlight the four main pillars that make IBM Z the correct infrastructure for CP4D:"}, {"label": "list_item", "id": 5, "page_no": 9, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.7481231689453, "t": 522.5965576171875, "r": 255.66061, "b": 532.58139, "coord_origin": "TOPLEFT"}, "confidence": 0.9303468465805054, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 523.51779, "r": 141.78096, "b": 532.2925700000001, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Performance and Scale", "bbox": {"l": 151.20113, "t": 523.36841, "r": 255.66061, "b": 532.58139, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Performance and Scale"}, {"label": "list_item", "id": 6, "page_no": 9, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.7166748046875, "t": 539.3995971679688, "r": 257.89264, "b": 549.56122, "coord_origin": "TOPLEFT"}, "confidence": 0.923041820526123, "cells": [{"id": 14, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 540.49762, "r": 141.78096, "b": 549.27237, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Embedded Accelerators", "bbox": {"l": 151.20113, "t": 540.34822, "r": 257.89264, "b": 549.56122, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Embedded Accelerators"}, {"label": "list_item", "id": 7, "page_no": 9, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.57183837890625, "t": 556.74267578125, "r": 263.64544677734375, "b": 567.2510986328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9483156800270081, "cells": [{"id": 16, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 557.53719, "r": 141.78096, "b": 566.31194, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Reliability and Availability", "bbox": {"l": 151.20113, "t": 557.38779, "r": 263.38062, "b": 566.60078, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Reliability and Availability"}, {"label": "list_item", "id": 8, "page_no": 9, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.74082946777344, "t": 573.56103515625, "r": 269.54684, "b": 583.5806, "coord_origin": "TOPLEFT"}, "confidence": 0.9437612891197205, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 574.517, "r": 141.78096, "b": 583.29175, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Security and Governance. ", "bbox": {"l": 151.20113, "t": 574.3676, "r": 269.54684, "b": 583.5806, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Security and Governance."}, {"label": "text", "id": 9, "page_no": 9, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.00941467285156, "t": 595.1112670898438, "r": 547.28143, "b": 689.7734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9868659377098083, "cells": [{"id": 20, "text": "From a performance perspective, CP4D on IBM Z provides your data and AI with high ", "bbox": {"l": 136.80096, "t": 596.38716, "r": 518.51489, "b": 605.60016, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "transaction processing and a powerful infrastructure. From the embedded accelerators ", "bbox": {"l": 136.80096, "t": 608.38696, "r": 521.82758, "b": 617.59996, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "perspective, CP4D on IBM Z can investigate each transaction thanks to a cutting-edge DL ", "bbox": {"l": 136.80096, "t": 620.38676, "r": 536.88837, "b": 629.5997600000001, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "inference technology even in the most demanding, sensitive, and latency-prone real-time ", "bbox": {"l": 136.80096, "t": 632.38657, "r": 531.82153, "b": 641.59956, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "workloads. From a reliability perspective, CP4D on IBM Z provides high availability and ", "bbox": {"l": 136.80095, "t": 644.3863699999999, "r": 523.38043, "b": 653.59937, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "resiliency. Lastly from the security perspective, CP4D on IBM Z is suitable for protecting ", "bbox": {"l": 136.80096, "t": 656.38617, "r": 527.28973, "b": 665.59917, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "sensitive data and AI models for enterprises in highly regulated industries or those industries ", "bbox": {"l": 136.80098, "t": 668.38597, "r": 547.28143, "b": 677.59898, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "that are worried about security.", "bbox": {"l": 136.80098, "t": 680.38578, "r": 274.02484, "b": 689.59879, "coord_origin": "TOPLEFT"}}]}, "text": "From a performance perspective, CP4D on IBM Z provides your data and AI with high transaction processing and a powerful infrastructure. From the embedded accelerators perspective, CP4D on IBM Z can investigate each transaction thanks to a cutting-edge DL inference technology even in the most demanding, sensitive, and latency-prone real-time workloads. From a reliability perspective, CP4D on IBM Z provides high availability and resiliency. Lastly from the security perspective, CP4D on IBM Z is suitable for protecting sensitive data and AI models for enterprises in highly regulated industries or those industries that are worried about security."}, {"label": "picture", "id": 10, "page_no": 9, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 63.72787094116211, "t": 179.1451873779297, "r": 547.3121948242188, "b": 480.79541015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9759865999221802, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 9, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.00271606445312, "t": 70.69949340820312, "r": 547.28058, "b": 164.883544921875, "coord_origin": "TOPLEFT"}, "confidence": 0.984743595123291, "cells": [{"id": 2, "text": "Figure 6 shows a solution overview of CP4D. The infrastructure alternatives are shown at the ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 547.24561, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "bottom, and they include IBM Z and LinuxONE. They all leverage Red Hat OpenShift. ", "bbox": {"l": 136.80002, "t": 83.50847999999996, "r": 516.8139, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Common Foundational Services come next, which offer clarity throughout the data and AI ", "bbox": {"l": 136.80002, "t": 95.50829999999996, "r": 534.69507, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "lifecycle, that is, from user access management to monitoring and service provisioning. A ", "bbox": {"l": 136.80002, "t": 107.50811999999996, "r": 532.9491, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "high-level view of the services is shown in the middle section. The services have several ", "bbox": {"l": 136.80003, "t": 119.50792999999999, "r": 529.53284, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "different capabilities that span the AI hierarchy. The platform can be expanded, and it offers a ", "bbox": {"l": 136.80005, "t": 131.50775, "r": 547.28058, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "seamless user experience for all distinct personas across the AI lifecycle, from data gathering ", "bbox": {"l": 136.80005, "t": 143.50757, "r": 547.19391, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "through AI infusion. ", "bbox": {"l": 136.80008, "t": 155.50739, "r": 225.63828, "b": 164.72040000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6 shows a solution overview of CP4D. The infrastructure alternatives are shown at the bottom, and they include IBM Z and LinuxONE. They all leverage Red Hat OpenShift. Common Foundational Services come next, which offer clarity throughout the data and AI lifecycle, that is, from user access management to monitoring and service provisioning. A high-level view of the services is shown in the middle section. The services have several different capabilities that span the AI hierarchy. The platform can be expanded, and it offers a seamless user experience for all distinct personas across the AI lifecycle, from data gathering through AI infusion."}, {"label": "caption", "id": 3, "page_no": 9, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.43482208251953, "t": 483.486328125, "r": 264.04919, "b": 492.95330810546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9446989297866821, "cells": [{"id": 10, "text": "Figure 6 Solution overview of Cloud Pak for Data", "bbox": {"l": 64.800003, "t": 484.39798, "r": 264.04919, "b": 492.72299, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 6 Solution overview of Cloud Pak for Data"}, {"label": "text", "id": 4, "page_no": 9, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.67288208007812, "t": 505.269287109375, "r": 518.39545, "b": 515.68896484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9399420619010925, "cells": [{"id": 11, "text": "We highlight the four main pillars that make IBM Z the correct infrastructure for CP4D: ", "bbox": {"l": 136.8, "t": 506.38861, "r": 518.39545, "b": 515.60159, "coord_origin": "TOPLEFT"}}]}, "text": "We highlight the four main pillars that make IBM Z the correct infrastructure for CP4D:"}, {"label": "list_item", "id": 5, "page_no": 9, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.7481231689453, "t": 522.5965576171875, "r": 255.66061, "b": 532.58139, "coord_origin": "TOPLEFT"}, "confidence": 0.9303468465805054, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 523.51779, "r": 141.78096, "b": 532.2925700000001, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Performance and Scale", "bbox": {"l": 151.20113, "t": 523.36841, "r": 255.66061, "b": 532.58139, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Performance and Scale"}, {"label": "list_item", "id": 6, "page_no": 9, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.7166748046875, "t": 539.3995971679688, "r": 257.89264, "b": 549.56122, "coord_origin": "TOPLEFT"}, "confidence": 0.923041820526123, "cells": [{"id": 14, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 540.49762, "r": 141.78096, "b": 549.27237, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Embedded Accelerators", "bbox": {"l": 151.20113, "t": 540.34822, "r": 257.89264, "b": 549.56122, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Embedded Accelerators"}, {"label": "list_item", "id": 7, "page_no": 9, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.57183837890625, "t": 556.74267578125, "r": 263.64544677734375, "b": 567.2510986328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9483156800270081, "cells": [{"id": 16, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 557.53719, "r": 141.78096, "b": 566.31194, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Reliability and Availability", "bbox": {"l": 151.20113, "t": 557.38779, "r": 263.38062, "b": 566.60078, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Reliability and Availability"}, {"label": "list_item", "id": 8, "page_no": 9, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.74082946777344, "t": 573.56103515625, "r": 269.54684, "b": 583.5806, "coord_origin": "TOPLEFT"}, "confidence": 0.9437612891197205, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.80096, "t": 574.517, "r": 141.78096, "b": 583.29175, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Security and Governance. ", "bbox": {"l": 151.20113, "t": 574.3676, "r": 269.54684, "b": 583.5806, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Security and Governance."}, {"label": "text", "id": 9, "page_no": 9, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.00941467285156, "t": 595.1112670898438, "r": 547.28143, "b": 689.7734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9868659377098083, "cells": [{"id": 20, "text": "From a performance perspective, CP4D on IBM Z provides your data and AI with high ", "bbox": {"l": 136.80096, "t": 596.38716, "r": 518.51489, "b": 605.60016, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "transaction processing and a powerful infrastructure. From the embedded accelerators ", "bbox": {"l": 136.80096, "t": 608.38696, "r": 521.82758, "b": 617.59996, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "perspective, CP4D on IBM Z can investigate each transaction thanks to a cutting-edge DL ", "bbox": {"l": 136.80096, "t": 620.38676, "r": 536.88837, "b": 629.5997600000001, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "inference technology even in the most demanding, sensitive, and latency-prone real-time ", "bbox": {"l": 136.80096, "t": 632.38657, "r": 531.82153, "b": 641.59956, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "workloads. From a reliability perspective, CP4D on IBM Z provides high availability and ", "bbox": {"l": 136.80095, "t": 644.3863699999999, "r": 523.38043, "b": 653.59937, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "resiliency. Lastly from the security perspective, CP4D on IBM Z is suitable for protecting ", "bbox": {"l": 136.80096, "t": 656.38617, "r": 527.28973, "b": 665.59917, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "sensitive data and AI models for enterprises in highly regulated industries or those industries ", "bbox": {"l": 136.80098, "t": 668.38597, "r": 547.28143, "b": 677.59898, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "that are worried about security.", "bbox": {"l": 136.80098, "t": 680.38578, "r": 274.02484, "b": 689.59879, "coord_origin": "TOPLEFT"}}]}, "text": "From a performance perspective, CP4D on IBM Z provides your data and AI with high transaction processing and a powerful infrastructure. From the embedded accelerators perspective, CP4D on IBM Z can investigate each transaction thanks to a cutting-edge DL inference technology even in the most demanding, sensitive, and latency-prone real-time workloads. From a reliability perspective, CP4D on IBM Z provides high availability and resiliency. Lastly from the security perspective, CP4D on IBM Z is suitable for protecting sensitive data and AI models for enterprises in highly regulated industries or those industries that are worried about security."}, {"label": "picture", "id": 10, "page_no": 9, "cluster": {"id": 10, "label": "picture", "bbox": {"l": 63.72787094116211, "t": 179.1451873779297, "r": 547.3121948242188, "b": 480.79541015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9759865999221802, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 9, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.2588882446289, "t": 754.197998046875, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8762364983558655, "cells": [{"id": 0, "text": "8 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 72.821999, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "8"}, {"label": "page_footer", "id": 1, "page_no": 9, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 87.62134552001953, "t": 754.7377319335938, "r": 261.53851, "b": 763.8740234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9511485695838928, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 87.840302, "t": 755.538002, "r": 261.53851, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}]}}, {"page_no": 10, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "9", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Cloud Pak for Data capabilities on IBM Z and IBM LinuxONE", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 519.7558, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "With CP4D on IBM Z and IBM LinuxONE, users can develop, train, and deploy AI and ML ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 535.20593, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "models. Users can accomplish this task by using the CP4D IBM Watsonfi Studio and IBM ", "bbox": {"l": 136.79999, "t": 115.48852999999997, "r": 536.32245, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Watson Machine Learning (WLM) services. By using these two fundamental services, users ", "bbox": {"l": 136.8, "t": 127.48834000000011, "r": 544.54041, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "can accomplish the following tasks:", "bbox": {"l": 136.80002, "t": 139.48816, "r": 292.84833, "b": 148.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 156.67711999999995, "r": 141.78001, "b": 165.45190000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Provision various containerized databases.", "bbox": {"l": 151.20018, "t": 156.52770999999996, "r": 341.24393, "b": 165.74072, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 173.65692, "r": 141.78001, "b": 182.43169999999998, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Explore, clean, shape, and alter data by using Data Refinery. ", "bbox": {"l": 151.20018, "t": 173.50751000000002, "r": 423.51254, "b": 182.72051999999996, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 190.63671999999997, "r": 141.78001, "b": 199.41150000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Use project-specific data that is uploaded, or connect to distant data.", "bbox": {"l": 151.20018, "t": 190.4873, "r": 454.56392999999997, "b": 199.70032000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "GLYPH", "bbox": {"l": 136.8, "t": 207.67627000000005, "r": 141.78, "b": 216.45105, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Create Spark run times and applications.", "bbox": {"l": 151.20016, "t": 207.52686000000006, "r": 331.7222, "b": 216.73987, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "GLYPH", "bbox": {"l": 136.8, "t": 224.65607, "r": 141.78, "b": 233.43084999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Create, build, evaluate, and deploy analytics and ML models with trust and transparency.", "bbox": {"l": 151.20016, "t": 224.50665000000004, "r": 544.10718, "b": 233.71966999999995, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "GLYPH", "bbox": {"l": 136.8, "t": 241.63585999999998, "r": 141.78, "b": 250.41063999999994, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Leverage the AI Integrated Accelerator for TensorFlow 2.7.2 and Snap ML 1.9.", "bbox": {"l": 151.20016, "t": 241.48645, "r": 499.12784, "b": 250.69946000000004, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "For more information about the specifics of these capabilities, see Capabilities on Linux on ", "bbox": {"l": 136.8, "t": 263.50604, "r": 538.98682, "b": 272.71906, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "IBM Z and IBM LinuxONE.", "bbox": {"l": 136.79999, "t": 275.50586, "r": 254.52917, "b": 284.71887, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Open-source ecosystem", "bbox": {"l": 64.800003, "t": 313.20071, "r": 250.52972000000003, "b": 327.96371000000005, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "These days, innovation and product development are not limited to closed doors within an ", "bbox": {"l": 136.8, "t": 345.52872, "r": 536.28241, "b": 354.7417, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "organization. In any industry sector, the solutions include a mix of proprietary code ", "bbox": {"l": 136.79999, "t": 357.52853, "r": 503.47137, "b": 366.74152, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "addressing the core business solution that is supported or integrated into other software ", "bbox": {"l": 136.79999, "t": 369.52835, "r": 527.47821, "b": 378.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "components from open source. In some cases, enterprises business solutions also are built ", "bbox": {"l": 136.79999, "t": 381.52817, "r": 543.42596, "b": 390.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "from open-source community offerings. Thus, open-source software becomes an important ", "bbox": {"l": 136.79999, "t": 393.52798, "r": 541.23053, "b": 402.74097, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ingredient in modern-day solution building. ", "bbox": {"l": 136.79999, "t": 405.5278, "r": 327.38654, "b": 414.7407799999999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "IBM actively participates in various open-source communities as part of steering boards ", "bbox": {"l": 136.79999, "t": 427.48761, "r": 526.17334, "b": 436.70059000000003, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "defining the roadmap of the community, and also in contributing code to make the community ", "bbox": {"l": 136.8, "t": 439.48743, "r": 547.23969, "b": 448.70041, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "a better place for everyone to participate. Red Hat also actively participates in various ", "bbox": {"l": 136.8, "t": 451.48724, "r": 517.25299, "b": 460.70023, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "open-source communities and makes extensive contributions. In open-source communities, ", "bbox": {"l": 136.8, "t": 463.48706, "r": 544.01959, "b": 472.70004, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "although most open-source development happens on x86 / amd64 or the Intel architecture, ", "bbox": {"l": 136.8, "t": 475.48688, "r": 541.23773, "b": 484.69986, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "the same open-source software is used by other architectures, such as IBM Power (ppc64le), ", "bbox": {"l": 136.8, "t": 487.54645, "r": 547.14795, "b": 496.75943, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "IBM Z and IBM LInuxONE (s390x), ARM, and Sparc. So, the availability of an open-source ", "bbox": {"l": 136.8, "t": 499.54626, "r": 539.51367, "b": 508.75925, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "ecosystem on any architecture is key and critical to business.", "bbox": {"l": 136.79901, "t": 511.54608, "r": 407.2449, "b": 520.75906, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "On IBM Z and IBM LinuxONE (s390x) architecture, there is a huge open-source support ", "bbox": {"l": 136.79901, "t": 533.50589, "r": 527.90936, "b": 542.71889, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "ecosystem that ranges from operating systems such as Linux; application run times; cloud ", "bbox": {"l": 136.79901, "t": 545.50569, "r": 537.35345, "b": 554.71869, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "and container services; DevOps and automation; big data; observability; analytics; ", "bbox": {"l": 136.79901, "t": 557.50549, "r": 502.30115, "b": 566.71849, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "databases; and storage. The ecosystem on IBM Z and IBM LinuxONE is growing.", "bbox": {"l": 136.79803, "t": 569.5052900000001, "r": 496.86108, "b": 578.71829, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "IBM Z and IBM LinuxONE include much open-source software in their ecosystem. You can ", "bbox": {"l": 136.79803, "t": 591.52486, "r": 540.76263, "b": 600.73785, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "see the growing list of open-source software for IBM Z and LinuxONE at The Growing ", "bbox": {"l": 136.79803, "t": 603.52466, "r": 517.90955, "b": 612.73766, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Ecosystem of Open-Source Software for IBM Z and LinuxONE.", "bbox": {"l": 136.79803, "t": 615.52446, "r": 415.62726, "b": 624.73746, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "IBM Z and IBM LinuxONE are available to various communities to include support for s390x ", "bbox": {"l": 136.79803, "t": 637.54402, "r": 544.60699, "b": 646.75702, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "builds as part of their community\u2019s continuous integration and continuous delivery (CI/CD). ", "bbox": {"l": 136.79803, "t": 649.54382, "r": 538.40308, "b": 658.7568200000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Also, for open-source community developers, infrastructure resources are available on a ", "bbox": {"l": 136.79802, "t": 661.54362, "r": 529.5954, "b": 670.75663, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "no-charge basis through the IBM LinuxONE community cloud. ", "bbox": {"l": 136.79802, "t": 673.54343, "r": 413.47775, "b": 682.75644, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 540.9940795898438, "t": 754.3685302734375, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8976032733917236, "cells": [{"id": 0, "text": "9", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "section_header", "bbox": {"l": 64.78146362304688, "t": 70.03508758544922, "r": 519.7558, "b": 86.2610855102539, "coord_origin": "TOPLEFT"}, "confidence": 0.9496250748634338, "cells": [{"id": 1, "text": "Cloud Pak for Data capabilities on IBM Z and IBM LinuxONE", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 519.7558, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.4989776611328, "t": 102.55187225341797, "r": 544.54041, "b": 148.83160400390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9850783348083496, "cells": [{"id": 2, "text": "With CP4D on IBM Z and IBM LinuxONE, users can develop, train, and deploy AI and ML ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 535.20593, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "models. Users can accomplish this task by using the CP4D IBM Watsonfi Studio and IBM ", "bbox": {"l": 136.79999, "t": 115.48852999999997, "r": 536.32245, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Watson Machine Learning (WLM) services. By using these two fundamental services, users ", "bbox": {"l": 136.8, "t": 127.48834000000011, "r": 544.54041, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "can accomplish the following tasks:", "bbox": {"l": 136.80002, "t": 139.48816, "r": 292.84833, "b": 148.70117000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "list_item", "bbox": {"l": 135.4654083251953, "t": 155.99386596679688, "r": 341.2695007324219, "b": 165.74072, "coord_origin": "TOPLEFT"}, "confidence": 0.9414460062980652, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 156.67711999999995, "r": 141.78001, "b": 165.45190000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Provision various containerized databases.", "bbox": {"l": 151.20018, "t": 156.52770999999996, "r": 341.24393, "b": 165.74072, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 135.58457946777344, "t": 172.69300842285156, "r": 423.51254, "b": 182.9974822998047, "coord_origin": "TOPLEFT"}, "confidence": 0.9599420428276062, "cells": [{"id": 8, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 173.65692, "r": 141.78001, "b": 182.43169999999998, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Explore, clean, shape, and alter data by using Data Refinery. ", "bbox": {"l": 151.20018, "t": 173.50751000000002, "r": 423.51254, "b": 182.72051999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 135.65841674804688, "t": 189.37014770507812, "r": 454.56392999999997, "b": 199.70032000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9574293494224548, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 190.63671999999997, "r": 141.78001, "b": 199.41150000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Use project-specific data that is uploaded, or connect to distant data.", "bbox": {"l": 151.20018, "t": 190.4873, "r": 454.56392999999997, "b": 199.70032000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.5748748779297, "t": 206.63885498046875, "r": 331.7222, "b": 216.97801208496094, "coord_origin": "TOPLEFT"}, "confidence": 0.9566726684570312, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.8, "t": 207.67627000000005, "r": 141.78, "b": 216.45105, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Create Spark run times and applications.", "bbox": {"l": 151.20016, "t": 207.52686000000006, "r": 331.7222, "b": 216.73987, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.54833984375, "t": 223.43775939941406, "r": 544.10718, "b": 233.71966999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9559329748153687, "cells": [{"id": 14, "text": "GLYPH", "bbox": {"l": 136.8, "t": 224.65607, "r": 141.78, "b": 233.43084999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Create, build, evaluate, and deploy analytics and ML models with trust and transparency.", "bbox": {"l": 151.20016, "t": 224.50665000000004, "r": 544.10718, "b": 233.71966999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.70672607421875, "t": 240.82850646972656, "r": 499.12784, "b": 251.19873046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9593135714530945, "cells": [{"id": 16, "text": "GLYPH", "bbox": {"l": 136.8, "t": 241.63585999999998, "r": 141.78, "b": 250.41063999999994, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Leverage the AI Integrated Accelerator for TensorFlow 2.7.2 and Snap ML 1.9.", "bbox": {"l": 151.20016, "t": 241.48645, "r": 499.12784, "b": 250.69946000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 136.2892303466797, "t": 262.5376892089844, "r": 538.98682, "b": 284.71887, "coord_origin": "TOPLEFT"}, "confidence": 0.9708739519119263, "cells": [{"id": 18, "text": "For more information about the specifics of these capabilities, see Capabilities on Linux on ", "bbox": {"l": 136.8, "t": 263.50604, "r": 538.98682, "b": 272.71906, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "IBM Z and IBM LinuxONE.", "bbox": {"l": 136.79999, "t": 275.50586, "r": 254.52917, "b": 284.71887, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "section_header", "bbox": {"l": 64.76227569580078, "t": 312.55224609375, "r": 250.52972000000003, "b": 328.220458984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9684263467788696, "cells": [{"id": 20, "text": "Open-source ecosystem", "bbox": {"l": 64.800003, "t": 313.20071, "r": 250.52972000000003, "b": 327.96371000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 135.97999572753906, "t": 344.667724609375, "r": 543.42596, "b": 415.0365905761719, "coord_origin": "TOPLEFT"}, "confidence": 0.988315224647522, "cells": [{"id": 21, "text": "These days, innovation and product development are not limited to closed doors within an ", "bbox": {"l": 136.8, "t": 345.52872, "r": 536.28241, "b": 354.7417, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "organization. In any industry sector, the solutions include a mix of proprietary code ", "bbox": {"l": 136.79999, "t": 357.52853, "r": 503.47137, "b": 366.74152, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "addressing the core business solution that is supported or integrated into other software ", "bbox": {"l": 136.79999, "t": 369.52835, "r": 527.47821, "b": 378.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "components from open source. In some cases, enterprises business solutions also are built ", "bbox": {"l": 136.79999, "t": 381.52817, "r": 543.42596, "b": 390.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "from open-source community offerings. Thus, open-source software becomes an important ", "bbox": {"l": 136.79999, "t": 393.52798, "r": 541.23053, "b": 402.74097, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ingredient in modern-day solution building. ", "bbox": {"l": 136.79999, "t": 405.5278, "r": 327.38654, "b": 414.7407799999999, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 135.85617065429688, "t": 426.64752197265625, "r": 547.23969, "b": 520.862060546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9870705008506775, "cells": [{"id": 27, "text": "IBM actively participates in various open-source communities as part of steering boards ", "bbox": {"l": 136.79999, "t": 427.48761, "r": 526.17334, "b": 436.70059000000003, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "defining the roadmap of the community, and also in contributing code to make the community ", "bbox": {"l": 136.8, "t": 439.48743, "r": 547.23969, "b": 448.70041, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "a better place for everyone to participate. Red Hat also actively participates in various ", "bbox": {"l": 136.8, "t": 451.48724, "r": 517.25299, "b": 460.70023, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "open-source communities and makes extensive contributions. In open-source communities, ", "bbox": {"l": 136.8, "t": 463.48706, "r": 544.01959, "b": 472.70004, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "although most open-source development happens on x86 / amd64 or the Intel architecture, ", "bbox": {"l": 136.8, "t": 475.48688, "r": 541.23773, "b": 484.69986, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "the same open-source software is used by other architectures, such as IBM Power (ppc64le), ", "bbox": {"l": 136.8, "t": 487.54645, "r": 547.14795, "b": 496.75943, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "IBM Z and IBM LInuxONE (s390x), ARM, and Sparc. So, the availability of an open-source ", "bbox": {"l": 136.8, "t": 499.54626, "r": 539.51367, "b": 508.75925, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "ecosystem on any architecture is key and critical to business.", "bbox": {"l": 136.79901, "t": 511.54608, "r": 407.2449, "b": 520.75906, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 135.98208618164062, "t": 532.6904296875, "r": 537.35345, "b": 578.9651489257812, "coord_origin": "TOPLEFT"}, "confidence": 0.9855135083198547, "cells": [{"id": 35, "text": "On IBM Z and IBM LinuxONE (s390x) architecture, there is a huge open-source support ", "bbox": {"l": 136.79901, "t": 533.50589, "r": 527.90936, "b": 542.71889, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "ecosystem that ranges from operating systems such as Linux; application run times; cloud ", "bbox": {"l": 136.79901, "t": 545.50569, "r": 537.35345, "b": 554.71869, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "and container services; DevOps and automation; big data; observability; analytics; ", "bbox": {"l": 136.79901, "t": 557.50549, "r": 502.30115, "b": 566.71849, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "databases; and storage. The ecosystem on IBM Z and IBM LinuxONE is growing.", "bbox": {"l": 136.79803, "t": 569.5052900000001, "r": 496.86108, "b": 578.71829, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "text", "bbox": {"l": 136.20474243164062, "t": 590.5270385742188, "r": 540.76263, "b": 624.9845581054688, "coord_origin": "TOPLEFT"}, "confidence": 0.9835407137870789, "cells": [{"id": 39, "text": "IBM Z and IBM LinuxONE include much open-source software in their ecosystem. You can ", "bbox": {"l": 136.79803, "t": 591.52486, "r": 540.76263, "b": 600.73785, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "see the growing list of open-source software for IBM Z and LinuxONE at The Growing ", "bbox": {"l": 136.79803, "t": 603.52466, "r": 517.90955, "b": 612.73766, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Ecosystem of Open-Source Software for IBM Z and LinuxONE.", "bbox": {"l": 136.79803, "t": 615.52446, "r": 415.62726, "b": 624.73746, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "text", "bbox": {"l": 136.00357055664062, "t": 636.6727294921875, "r": 544.60699, "b": 683.03759765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9842023849487305, "cells": [{"id": 42, "text": "IBM Z and IBM LinuxONE are available to various communities to include support for s390x ", "bbox": {"l": 136.79803, "t": 637.54402, "r": 544.60699, "b": 646.75702, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "builds as part of their community\u2019s continuous integration and continuous delivery (CI/CD). ", "bbox": {"l": 136.79803, "t": 649.54382, "r": 538.40308, "b": 658.7568200000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Also, for open-source community developers, infrastructure resources are available on a ", "bbox": {"l": 136.79802, "t": 661.54362, "r": 529.5954, "b": 670.75663, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "no-charge basis through the IBM LinuxONE community cloud. ", "bbox": {"l": 136.79802, "t": 673.54343, "r": 413.47775, "b": 682.75644, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 10, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 540.9940795898438, "t": 754.3685302734375, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8976032733917236, "cells": [{"id": 0, "text": "9", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "9"}, {"label": "section_header", "id": 1, "page_no": 10, "cluster": {"id": 1, "label": "section_header", "bbox": {"l": 64.78146362304688, "t": 70.03508758544922, "r": 519.7558, "b": 86.2610855102539, "coord_origin": "TOPLEFT"}, "confidence": 0.9496250748634338, "cells": [{"id": 1, "text": "Cloud Pak for Data capabilities on IBM Z and IBM LinuxONE", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 519.7558, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, "text": "Cloud Pak for Data capabilities on IBM Z and IBM LinuxONE"}, {"label": "text", "id": 2, "page_no": 10, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.4989776611328, "t": 102.55187225341797, "r": 544.54041, "b": 148.83160400390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9850783348083496, "cells": [{"id": 2, "text": "With CP4D on IBM Z and IBM LinuxONE, users can develop, train, and deploy AI and ML ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 535.20593, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "models. Users can accomplish this task by using the CP4D IBM Watsonfi Studio and IBM ", "bbox": {"l": 136.79999, "t": 115.48852999999997, "r": 536.32245, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Watson Machine Learning (WLM) services. By using these two fundamental services, users ", "bbox": {"l": 136.8, "t": 127.48834000000011, "r": 544.54041, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "can accomplish the following tasks:", "bbox": {"l": 136.80002, "t": 139.48816, "r": 292.84833, "b": 148.70117000000005, "coord_origin": "TOPLEFT"}}]}, "text": "With CP4D on IBM Z and IBM LinuxONE, users can develop, train, and deploy AI and ML models. Users can accomplish this task by using the CP4D IBM Watsonfi Studio and IBM Watson Machine Learning (WLM) services. By using these two fundamental services, users can accomplish the following tasks:"}, {"label": "list_item", "id": 3, "page_no": 10, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 135.4654083251953, "t": 155.99386596679688, "r": 341.2695007324219, "b": 165.74072, "coord_origin": "TOPLEFT"}, "confidence": 0.9414460062980652, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 156.67711999999995, "r": 141.78001, "b": 165.45190000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Provision various containerized databases.", "bbox": {"l": 151.20018, "t": 156.52770999999996, "r": 341.24393, "b": 165.74072, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Provision various containerized databases."}, {"label": "list_item", "id": 4, "page_no": 10, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.58457946777344, "t": 172.69300842285156, "r": 423.51254, "b": 182.9974822998047, "coord_origin": "TOPLEFT"}, "confidence": 0.9599420428276062, "cells": [{"id": 8, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 173.65692, "r": 141.78001, "b": 182.43169999999998, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Explore, clean, shape, and alter data by using Data Refinery. ", "bbox": {"l": 151.20018, "t": 173.50751000000002, "r": 423.51254, "b": 182.72051999999996, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Explore, clean, shape, and alter data by using Data Refinery."}, {"label": "list_item", "id": 5, "page_no": 10, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.65841674804688, "t": 189.37014770507812, "r": 454.56392999999997, "b": 199.70032000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9574293494224548, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 190.63671999999997, "r": 141.78001, "b": 199.41150000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Use project-specific data that is uploaded, or connect to distant data.", "bbox": {"l": 151.20018, "t": 190.4873, "r": 454.56392999999997, "b": 199.70032000000003, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Use project-specific data that is uploaded, or connect to distant data."}, {"label": "list_item", "id": 6, "page_no": 10, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.5748748779297, "t": 206.63885498046875, "r": 331.7222, "b": 216.97801208496094, "coord_origin": "TOPLEFT"}, "confidence": 0.9566726684570312, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.8, "t": 207.67627000000005, "r": 141.78, "b": 216.45105, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Create Spark run times and applications.", "bbox": {"l": 151.20016, "t": 207.52686000000006, "r": 331.7222, "b": 216.73987, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Create Spark run times and applications."}, {"label": "list_item", "id": 7, "page_no": 10, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.54833984375, "t": 223.43775939941406, "r": 544.10718, "b": 233.71966999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9559329748153687, "cells": [{"id": 14, "text": "GLYPH", "bbox": {"l": 136.8, "t": 224.65607, "r": 141.78, "b": 233.43084999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Create, build, evaluate, and deploy analytics and ML models with trust and transparency.", "bbox": {"l": 151.20016, "t": 224.50665000000004, "r": 544.10718, "b": 233.71966999999995, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Create, build, evaluate, and deploy analytics and ML models with trust and transparency."}, {"label": "list_item", "id": 8, "page_no": 10, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.70672607421875, "t": 240.82850646972656, "r": 499.12784, "b": 251.19873046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9593135714530945, "cells": [{"id": 16, "text": "GLYPH", "bbox": {"l": 136.8, "t": 241.63585999999998, "r": 141.78, "b": 250.41063999999994, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Leverage the AI Integrated Accelerator for TensorFlow 2.7.2 and Snap ML 1.9.", "bbox": {"l": 151.20016, "t": 241.48645, "r": 499.12784, "b": 250.69946000000004, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Leverage the AI Integrated Accelerator for TensorFlow 2.7.2 and Snap ML 1.9."}, {"label": "text", "id": 9, "page_no": 10, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.2892303466797, "t": 262.5376892089844, "r": 538.98682, "b": 284.71887, "coord_origin": "TOPLEFT"}, "confidence": 0.9708739519119263, "cells": [{"id": 18, "text": "For more information about the specifics of these capabilities, see Capabilities on Linux on ", "bbox": {"l": 136.8, "t": 263.50604, "r": 538.98682, "b": 272.71906, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "IBM Z and IBM LinuxONE.", "bbox": {"l": 136.79999, "t": 275.50586, "r": 254.52917, "b": 284.71887, "coord_origin": "TOPLEFT"}}]}, "text": "For more information about the specifics of these capabilities, see Capabilities on Linux on IBM Z and IBM LinuxONE."}, {"label": "section_header", "id": 10, "page_no": 10, "cluster": {"id": 10, "label": "section_header", "bbox": {"l": 64.76227569580078, "t": 312.55224609375, "r": 250.52972000000003, "b": 328.220458984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9684263467788696, "cells": [{"id": 20, "text": "Open-source ecosystem", "bbox": {"l": 64.800003, "t": 313.20071, "r": 250.52972000000003, "b": 327.96371000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Open-source ecosystem"}, {"label": "text", "id": 11, "page_no": 10, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.97999572753906, "t": 344.667724609375, "r": 543.42596, "b": 415.0365905761719, "coord_origin": "TOPLEFT"}, "confidence": 0.988315224647522, "cells": [{"id": 21, "text": "These days, innovation and product development are not limited to closed doors within an ", "bbox": {"l": 136.8, "t": 345.52872, "r": 536.28241, "b": 354.7417, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "organization. In any industry sector, the solutions include a mix of proprietary code ", "bbox": {"l": 136.79999, "t": 357.52853, "r": 503.47137, "b": 366.74152, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "addressing the core business solution that is supported or integrated into other software ", "bbox": {"l": 136.79999, "t": 369.52835, "r": 527.47821, "b": 378.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "components from open source. In some cases, enterprises business solutions also are built ", "bbox": {"l": 136.79999, "t": 381.52817, "r": 543.42596, "b": 390.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "from open-source community offerings. Thus, open-source software becomes an important ", "bbox": {"l": 136.79999, "t": 393.52798, "r": 541.23053, "b": 402.74097, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ingredient in modern-day solution building. ", "bbox": {"l": 136.79999, "t": 405.5278, "r": 327.38654, "b": 414.7407799999999, "coord_origin": "TOPLEFT"}}]}, "text": "These days, innovation and product development are not limited to closed doors within an organization. In any industry sector, the solutions include a mix of proprietary code addressing the core business solution that is supported or integrated into other software components from open source. In some cases, enterprises business solutions also are built from open-source community offerings. Thus, open-source software becomes an important ingredient in modern-day solution building."}, {"label": "text", "id": 12, "page_no": 10, "cluster": {"id": 12, "label": "text", "bbox": {"l": 135.85617065429688, "t": 426.64752197265625, "r": 547.23969, "b": 520.862060546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9870705008506775, "cells": [{"id": 27, "text": "IBM actively participates in various open-source communities as part of steering boards ", "bbox": {"l": 136.79999, "t": 427.48761, "r": 526.17334, "b": 436.70059000000003, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "defining the roadmap of the community, and also in contributing code to make the community ", "bbox": {"l": 136.8, "t": 439.48743, "r": 547.23969, "b": 448.70041, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "a better place for everyone to participate. Red Hat also actively participates in various ", "bbox": {"l": 136.8, "t": 451.48724, "r": 517.25299, "b": 460.70023, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "open-source communities and makes extensive contributions. In open-source communities, ", "bbox": {"l": 136.8, "t": 463.48706, "r": 544.01959, "b": 472.70004, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "although most open-source development happens on x86 / amd64 or the Intel architecture, ", "bbox": {"l": 136.8, "t": 475.48688, "r": 541.23773, "b": 484.69986, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "the same open-source software is used by other architectures, such as IBM Power (ppc64le), ", "bbox": {"l": 136.8, "t": 487.54645, "r": 547.14795, "b": 496.75943, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "IBM Z and IBM LInuxONE (s390x), ARM, and Sparc. So, the availability of an open-source ", "bbox": {"l": 136.8, "t": 499.54626, "r": 539.51367, "b": 508.75925, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "ecosystem on any architecture is key and critical to business.", "bbox": {"l": 136.79901, "t": 511.54608, "r": 407.2449, "b": 520.75906, "coord_origin": "TOPLEFT"}}]}, "text": "IBM actively participates in various open-source communities as part of steering boards defining the roadmap of the community, and also in contributing code to make the community a better place for everyone to participate. Red Hat also actively participates in various open-source communities and makes extensive contributions. In open-source communities, although most open-source development happens on x86 / amd64 or the Intel architecture, the same open-source software is used by other architectures, such as IBM Power (ppc64le), IBM Z and IBM LInuxONE (s390x), ARM, and Sparc. So, the availability of an open-source ecosystem on any architecture is key and critical to business."}, {"label": "text", "id": 13, "page_no": 10, "cluster": {"id": 13, "label": "text", "bbox": {"l": 135.98208618164062, "t": 532.6904296875, "r": 537.35345, "b": 578.9651489257812, "coord_origin": "TOPLEFT"}, "confidence": 0.9855135083198547, "cells": [{"id": 35, "text": "On IBM Z and IBM LinuxONE (s390x) architecture, there is a huge open-source support ", "bbox": {"l": 136.79901, "t": 533.50589, "r": 527.90936, "b": 542.71889, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "ecosystem that ranges from operating systems such as Linux; application run times; cloud ", "bbox": {"l": 136.79901, "t": 545.50569, "r": 537.35345, "b": 554.71869, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "and container services; DevOps and automation; big data; observability; analytics; ", "bbox": {"l": 136.79901, "t": 557.50549, "r": 502.30115, "b": 566.71849, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "databases; and storage. The ecosystem on IBM Z and IBM LinuxONE is growing.", "bbox": {"l": 136.79803, "t": 569.5052900000001, "r": 496.86108, "b": 578.71829, "coord_origin": "TOPLEFT"}}]}, "text": "On IBM Z and IBM LinuxONE (s390x) architecture, there is a huge open-source support ecosystem that ranges from operating systems such as Linux; application run times; cloud and container services; DevOps and automation; big data; observability; analytics; databases; and storage. The ecosystem on IBM Z and IBM LinuxONE is growing."}, {"label": "text", "id": 14, "page_no": 10, "cluster": {"id": 14, "label": "text", "bbox": {"l": 136.20474243164062, "t": 590.5270385742188, "r": 540.76263, "b": 624.9845581054688, "coord_origin": "TOPLEFT"}, "confidence": 0.9835407137870789, "cells": [{"id": 39, "text": "IBM Z and IBM LinuxONE include much open-source software in their ecosystem. You can ", "bbox": {"l": 136.79803, "t": 591.52486, "r": 540.76263, "b": 600.73785, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "see the growing list of open-source software for IBM Z and LinuxONE at The Growing ", "bbox": {"l": 136.79803, "t": 603.52466, "r": 517.90955, "b": 612.73766, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Ecosystem of Open-Source Software for IBM Z and LinuxONE.", "bbox": {"l": 136.79803, "t": 615.52446, "r": 415.62726, "b": 624.73746, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Z and IBM LinuxONE include much open-source software in their ecosystem. You can see the growing list of open-source software for IBM Z and LinuxONE at The Growing Ecosystem of Open-Source Software for IBM Z and LinuxONE."}, {"label": "text", "id": 15, "page_no": 10, "cluster": {"id": 15, "label": "text", "bbox": {"l": 136.00357055664062, "t": 636.6727294921875, "r": 544.60699, "b": 683.03759765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9842023849487305, "cells": [{"id": 42, "text": "IBM Z and IBM LinuxONE are available to various communities to include support for s390x ", "bbox": {"l": 136.79803, "t": 637.54402, "r": 544.60699, "b": 646.75702, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "builds as part of their community\u2019s continuous integration and continuous delivery (CI/CD). ", "bbox": {"l": 136.79803, "t": 649.54382, "r": 538.40308, "b": 658.7568200000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Also, for open-source community developers, infrastructure resources are available on a ", "bbox": {"l": 136.79802, "t": 661.54362, "r": 529.5954, "b": 670.75663, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "no-charge basis through the IBM LinuxONE community cloud. ", "bbox": {"l": 136.79802, "t": 673.54343, "r": 413.47775, "b": 682.75644, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Z and IBM LinuxONE are available to various communities to include support for s390x builds as part of their community\u2019s continuous integration and continuous delivery (CI/CD). Also, for open-source community developers, infrastructure resources are available on a no-charge basis through the IBM LinuxONE community cloud."}], "body": [{"label": "section_header", "id": 1, "page_no": 10, "cluster": {"id": 1, "label": "section_header", "bbox": {"l": 64.78146362304688, "t": 70.03508758544922, "r": 519.7558, "b": 86.2610855102539, "coord_origin": "TOPLEFT"}, "confidence": 0.9496250748634338, "cells": [{"id": 1, "text": "Cloud Pak for Data capabilities on IBM Z and IBM LinuxONE", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 519.7558, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, "text": "Cloud Pak for Data capabilities on IBM Z and IBM LinuxONE"}, {"label": "text", "id": 2, "page_no": 10, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.4989776611328, "t": 102.55187225341797, "r": 544.54041, "b": 148.83160400390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9850783348083496, "cells": [{"id": 2, "text": "With CP4D on IBM Z and IBM LinuxONE, users can develop, train, and deploy AI and ML ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 535.20593, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "models. Users can accomplish this task by using the CP4D IBM Watsonfi Studio and IBM ", "bbox": {"l": 136.79999, "t": 115.48852999999997, "r": 536.32245, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Watson Machine Learning (WLM) services. By using these two fundamental services, users ", "bbox": {"l": 136.8, "t": 127.48834000000011, "r": 544.54041, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "can accomplish the following tasks:", "bbox": {"l": 136.80002, "t": 139.48816, "r": 292.84833, "b": 148.70117000000005, "coord_origin": "TOPLEFT"}}]}, "text": "With CP4D on IBM Z and IBM LinuxONE, users can develop, train, and deploy AI and ML models. Users can accomplish this task by using the CP4D IBM Watsonfi Studio and IBM Watson Machine Learning (WLM) services. By using these two fundamental services, users can accomplish the following tasks:"}, {"label": "list_item", "id": 3, "page_no": 10, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 135.4654083251953, "t": 155.99386596679688, "r": 341.2695007324219, "b": 165.74072, "coord_origin": "TOPLEFT"}, "confidence": 0.9414460062980652, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 156.67711999999995, "r": 141.78001, "b": 165.45190000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Provision various containerized databases.", "bbox": {"l": 151.20018, "t": 156.52770999999996, "r": 341.24393, "b": 165.74072, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Provision various containerized databases."}, {"label": "list_item", "id": 4, "page_no": 10, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.58457946777344, "t": 172.69300842285156, "r": 423.51254, "b": 182.9974822998047, "coord_origin": "TOPLEFT"}, "confidence": 0.9599420428276062, "cells": [{"id": 8, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 173.65692, "r": 141.78001, "b": 182.43169999999998, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Explore, clean, shape, and alter data by using Data Refinery. ", "bbox": {"l": 151.20018, "t": 173.50751000000002, "r": 423.51254, "b": 182.72051999999996, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Explore, clean, shape, and alter data by using Data Refinery."}, {"label": "list_item", "id": 5, "page_no": 10, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.65841674804688, "t": 189.37014770507812, "r": 454.56392999999997, "b": 199.70032000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9574293494224548, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 190.63671999999997, "r": 141.78001, "b": 199.41150000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Use project-specific data that is uploaded, or connect to distant data.", "bbox": {"l": 151.20018, "t": 190.4873, "r": 454.56392999999997, "b": 199.70032000000003, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Use project-specific data that is uploaded, or connect to distant data."}, {"label": "list_item", "id": 6, "page_no": 10, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.5748748779297, "t": 206.63885498046875, "r": 331.7222, "b": 216.97801208496094, "coord_origin": "TOPLEFT"}, "confidence": 0.9566726684570312, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.8, "t": 207.67627000000005, "r": 141.78, "b": 216.45105, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Create Spark run times and applications.", "bbox": {"l": 151.20016, "t": 207.52686000000006, "r": 331.7222, "b": 216.73987, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Create Spark run times and applications."}, {"label": "list_item", "id": 7, "page_no": 10, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.54833984375, "t": 223.43775939941406, "r": 544.10718, "b": 233.71966999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9559329748153687, "cells": [{"id": 14, "text": "GLYPH", "bbox": {"l": 136.8, "t": 224.65607, "r": 141.78, "b": 233.43084999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Create, build, evaluate, and deploy analytics and ML models with trust and transparency.", "bbox": {"l": 151.20016, "t": 224.50665000000004, "r": 544.10718, "b": 233.71966999999995, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Create, build, evaluate, and deploy analytics and ML models with trust and transparency."}, {"label": "list_item", "id": 8, "page_no": 10, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.70672607421875, "t": 240.82850646972656, "r": 499.12784, "b": 251.19873046875, "coord_origin": "TOPLEFT"}, "confidence": 0.9593135714530945, "cells": [{"id": 16, "text": "GLYPH", "bbox": {"l": 136.8, "t": 241.63585999999998, "r": 141.78, "b": 250.41063999999994, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Leverage the AI Integrated Accelerator for TensorFlow 2.7.2 and Snap ML 1.9.", "bbox": {"l": 151.20016, "t": 241.48645, "r": 499.12784, "b": 250.69946000000004, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Leverage the AI Integrated Accelerator for TensorFlow 2.7.2 and Snap ML 1.9."}, {"label": "text", "id": 9, "page_no": 10, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.2892303466797, "t": 262.5376892089844, "r": 538.98682, "b": 284.71887, "coord_origin": "TOPLEFT"}, "confidence": 0.9708739519119263, "cells": [{"id": 18, "text": "For more information about the specifics of these capabilities, see Capabilities on Linux on ", "bbox": {"l": 136.8, "t": 263.50604, "r": 538.98682, "b": 272.71906, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "IBM Z and IBM LinuxONE.", "bbox": {"l": 136.79999, "t": 275.50586, "r": 254.52917, "b": 284.71887, "coord_origin": "TOPLEFT"}}]}, "text": "For more information about the specifics of these capabilities, see Capabilities on Linux on IBM Z and IBM LinuxONE."}, {"label": "section_header", "id": 10, "page_no": 10, "cluster": {"id": 10, "label": "section_header", "bbox": {"l": 64.76227569580078, "t": 312.55224609375, "r": 250.52972000000003, "b": 328.220458984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9684263467788696, "cells": [{"id": 20, "text": "Open-source ecosystem", "bbox": {"l": 64.800003, "t": 313.20071, "r": 250.52972000000003, "b": 327.96371000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Open-source ecosystem"}, {"label": "text", "id": 11, "page_no": 10, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.97999572753906, "t": 344.667724609375, "r": 543.42596, "b": 415.0365905761719, "coord_origin": "TOPLEFT"}, "confidence": 0.988315224647522, "cells": [{"id": 21, "text": "These days, innovation and product development are not limited to closed doors within an ", "bbox": {"l": 136.8, "t": 345.52872, "r": 536.28241, "b": 354.7417, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "organization. In any industry sector, the solutions include a mix of proprietary code ", "bbox": {"l": 136.79999, "t": 357.52853, "r": 503.47137, "b": 366.74152, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "addressing the core business solution that is supported or integrated into other software ", "bbox": {"l": 136.79999, "t": 369.52835, "r": 527.47821, "b": 378.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "components from open source. In some cases, enterprises business solutions also are built ", "bbox": {"l": 136.79999, "t": 381.52817, "r": 543.42596, "b": 390.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "from open-source community offerings. Thus, open-source software becomes an important ", "bbox": {"l": 136.79999, "t": 393.52798, "r": 541.23053, "b": 402.74097, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ingredient in modern-day solution building. ", "bbox": {"l": 136.79999, "t": 405.5278, "r": 327.38654, "b": 414.7407799999999, "coord_origin": "TOPLEFT"}}]}, "text": "These days, innovation and product development are not limited to closed doors within an organization. In any industry sector, the solutions include a mix of proprietary code addressing the core business solution that is supported or integrated into other software components from open source. In some cases, enterprises business solutions also are built from open-source community offerings. Thus, open-source software becomes an important ingredient in modern-day solution building."}, {"label": "text", "id": 12, "page_no": 10, "cluster": {"id": 12, "label": "text", "bbox": {"l": 135.85617065429688, "t": 426.64752197265625, "r": 547.23969, "b": 520.862060546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9870705008506775, "cells": [{"id": 27, "text": "IBM actively participates in various open-source communities as part of steering boards ", "bbox": {"l": 136.79999, "t": 427.48761, "r": 526.17334, "b": 436.70059000000003, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "defining the roadmap of the community, and also in contributing code to make the community ", "bbox": {"l": 136.8, "t": 439.48743, "r": 547.23969, "b": 448.70041, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "a better place for everyone to participate. Red Hat also actively participates in various ", "bbox": {"l": 136.8, "t": 451.48724, "r": 517.25299, "b": 460.70023, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "open-source communities and makes extensive contributions. In open-source communities, ", "bbox": {"l": 136.8, "t": 463.48706, "r": 544.01959, "b": 472.70004, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "although most open-source development happens on x86 / amd64 or the Intel architecture, ", "bbox": {"l": 136.8, "t": 475.48688, "r": 541.23773, "b": 484.69986, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "the same open-source software is used by other architectures, such as IBM Power (ppc64le), ", "bbox": {"l": 136.8, "t": 487.54645, "r": 547.14795, "b": 496.75943, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "IBM Z and IBM LInuxONE (s390x), ARM, and Sparc. So, the availability of an open-source ", "bbox": {"l": 136.8, "t": 499.54626, "r": 539.51367, "b": 508.75925, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "ecosystem on any architecture is key and critical to business.", "bbox": {"l": 136.79901, "t": 511.54608, "r": 407.2449, "b": 520.75906, "coord_origin": "TOPLEFT"}}]}, "text": "IBM actively participates in various open-source communities as part of steering boards defining the roadmap of the community, and also in contributing code to make the community a better place for everyone to participate. Red Hat also actively participates in various open-source communities and makes extensive contributions. In open-source communities, although most open-source development happens on x86 / amd64 or the Intel architecture, the same open-source software is used by other architectures, such as IBM Power (ppc64le), IBM Z and IBM LInuxONE (s390x), ARM, and Sparc. So, the availability of an open-source ecosystem on any architecture is key and critical to business."}, {"label": "text", "id": 13, "page_no": 10, "cluster": {"id": 13, "label": "text", "bbox": {"l": 135.98208618164062, "t": 532.6904296875, "r": 537.35345, "b": 578.9651489257812, "coord_origin": "TOPLEFT"}, "confidence": 0.9855135083198547, "cells": [{"id": 35, "text": "On IBM Z and IBM LinuxONE (s390x) architecture, there is a huge open-source support ", "bbox": {"l": 136.79901, "t": 533.50589, "r": 527.90936, "b": 542.71889, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "ecosystem that ranges from operating systems such as Linux; application run times; cloud ", "bbox": {"l": 136.79901, "t": 545.50569, "r": 537.35345, "b": 554.71869, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "and container services; DevOps and automation; big data; observability; analytics; ", "bbox": {"l": 136.79901, "t": 557.50549, "r": 502.30115, "b": 566.71849, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "databases; and storage. The ecosystem on IBM Z and IBM LinuxONE is growing.", "bbox": {"l": 136.79803, "t": 569.5052900000001, "r": 496.86108, "b": 578.71829, "coord_origin": "TOPLEFT"}}]}, "text": "On IBM Z and IBM LinuxONE (s390x) architecture, there is a huge open-source support ecosystem that ranges from operating systems such as Linux; application run times; cloud and container services; DevOps and automation; big data; observability; analytics; databases; and storage. The ecosystem on IBM Z and IBM LinuxONE is growing."}, {"label": "text", "id": 14, "page_no": 10, "cluster": {"id": 14, "label": "text", "bbox": {"l": 136.20474243164062, "t": 590.5270385742188, "r": 540.76263, "b": 624.9845581054688, "coord_origin": "TOPLEFT"}, "confidence": 0.9835407137870789, "cells": [{"id": 39, "text": "IBM Z and IBM LinuxONE include much open-source software in their ecosystem. You can ", "bbox": {"l": 136.79803, "t": 591.52486, "r": 540.76263, "b": 600.73785, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "see the growing list of open-source software for IBM Z and LinuxONE at The Growing ", "bbox": {"l": 136.79803, "t": 603.52466, "r": 517.90955, "b": 612.73766, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Ecosystem of Open-Source Software for IBM Z and LinuxONE.", "bbox": {"l": 136.79803, "t": 615.52446, "r": 415.62726, "b": 624.73746, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Z and IBM LinuxONE include much open-source software in their ecosystem. You can see the growing list of open-source software for IBM Z and LinuxONE at The Growing Ecosystem of Open-Source Software for IBM Z and LinuxONE."}, {"label": "text", "id": 15, "page_no": 10, "cluster": {"id": 15, "label": "text", "bbox": {"l": 136.00357055664062, "t": 636.6727294921875, "r": 544.60699, "b": 683.03759765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9842023849487305, "cells": [{"id": 42, "text": "IBM Z and IBM LinuxONE are available to various communities to include support for s390x ", "bbox": {"l": 136.79803, "t": 637.54402, "r": 544.60699, "b": 646.75702, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "builds as part of their community\u2019s continuous integration and continuous delivery (CI/CD). ", "bbox": {"l": 136.79803, "t": 649.54382, "r": 538.40308, "b": 658.7568200000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Also, for open-source community developers, infrastructure resources are available on a ", "bbox": {"l": 136.79802, "t": 661.54362, "r": 529.5954, "b": 670.75663, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "no-charge basis through the IBM LinuxONE community cloud. ", "bbox": {"l": 136.79802, "t": 673.54343, "r": 413.47775, "b": 682.75644, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Z and IBM LinuxONE are available to various communities to include support for s390x builds as part of their community\u2019s continuous integration and continuous delivery (CI/CD). Also, for open-source community developers, infrastructure resources are available on a no-charge basis through the IBM LinuxONE community cloud."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 10, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 540.9940795898438, "t": 754.3685302734375, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.8976032733917236, "cells": [{"id": 0, "text": "9", "bbox": {"l": 541.67987, "t": 754.848721, "r": 547.21765, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "9"}]}}, {"page_no": 11, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "10 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "CP4D includes a mix of open-source and proprietary data and AI runtime databases; ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 513.53369, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "open-source run times like Python; open-source data platforms like Anaconda; ML and DL ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 537.95197, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "frameworks like Pytorch and Tensorflow; and thousands of reusable Python packages. All of ", "bbox": {"l": 136.79999, "t": 95.50829999999996, "r": 547.31226, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "them are available and supported on s390x architecture to provide seamless parity with x86 ", "bbox": {"l": 136.79999, "t": 107.50811999999996, "r": 544.53857, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "architecture and a seamless experience for enterprise data scientists, architects, and data ", "bbox": {"l": 136.79999, "t": 119.50792999999999, "r": 536.82458, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "and AI solution developers on IBM Z and IBM LinuxONE platforms.", "bbox": {"l": 136.79999, "t": 131.50775, "r": 432.89679, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Anaconda is one of the open-source data platforms that provide Python and R based data ", "bbox": {"l": 136.79999, "t": 153.52733999999998, "r": 536.9231, "b": 162.74036, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "science ML frameworks; analytics and data visualization tools; and open-source data science ", "bbox": {"l": 136.79999, "t": 165.52715999999998, "r": 547.35016, "b": 174.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "tools and libraries like Conda, XGBoost, and SciKit-Learn. Anaconda runs natively on Linux ", "bbox": {"l": 136.79999, "t": 177.52697999999998, "r": 542.97577, "b": 186.73999000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "on IBM Z and IBM LinuxONE, and on IBM z/OS Container Extensions (zcX) on z/OS. For ", "bbox": {"l": 136.79999, "t": 189.52679, "r": 533.46613, "b": 198.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "more information, see Announcing Anaconda for Linux on IBM Z and LinuxONE.", "bbox": {"l": 136.8, "t": 201.52661, "r": 491.7684300000001, "b": 210.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "In addition to strong, open-source ecosystem support for application development on Linux ", "bbox": {"l": 136.79901, "t": 223.48639000000003, "r": 540.69092, "b": 232.69939999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "and enterprise operating systems, a new generation of IBM Z and IBM LinuxONE servers ", "bbox": {"l": 136.79901, "t": 235.48621000000003, "r": 534.01886, "b": 244.69921999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "(IBM z16\u2122) also have strong platform support, and AI acceleration capabilities that can be ", "bbox": {"l": 136.79901, "t": 247.48602000000005, "r": 539.51672, "b": 256.69903999999997, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "leveraged by open-source software to perform better on the server infrastructure. For ", "bbox": {"l": 136.80002, "t": 259.48584000000005, "r": 515.11157, "b": 268.69885, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "example, the recently released CP4D 4.6 has Tensorflow and IBM SnapML frameworks that ", "bbox": {"l": 136.80002, "t": 271.48566000000005, "r": 546.23071, "b": 280.69867, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "leverage the AI accelerators when running on an IBM z16 server.", "bbox": {"l": 136.80003, "t": 283.4855, "r": 424.7088, "b": 292.69849, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "So, to summarize, there is a huge, growing data and AI open source ecosystem that is ", "bbox": {"l": 136.80003, "t": 305.50507, "r": 521.34369, "b": 314.71804999999995, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "supported and optimized on IBM Z and IBM LinuxONE servers.", "bbox": {"l": 136.80003, "t": 317.50488000000007, "r": 416.28656, "b": 326.71786, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Why AI on IBM Z", "bbox": {"l": 64.800003, "t": 355.20071, "r": 191.0069, "b": 369.96371000000005, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Data and AI playing a major role in the modernization story to enable the digital ", "bbox": {"l": 136.8, "t": 387.52872, "r": 489.0134, "b": 396.7417, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "transformation journey of every organization. Many organizations recognize the business ", "bbox": {"l": 136.8, "t": 399.52853, "r": 531.73199, "b": 408.74152, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "value of infusing AI into their infrastructure. CP4D provides the cloud-native solution to put ", "bbox": {"l": 136.8, "t": 411.52835, "r": 537.43396, "b": 420.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "your data to work. With CP4D, all your data users can collaborate from a single, unified ", "bbox": {"l": 136.8, "t": 423.52817, "r": 524.1084, "b": 432.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "interface that supports many services that work together, including collecting data, organizing ", "bbox": {"l": 136.8, "t": 435.52798, "r": 547.25861, "b": 444.74097, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "the data, analyzing the data, and infusing AI.", "bbox": {"l": 136.8, "t": 447.5278, "r": 334.1156, "b": 456.7407799999999, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Traditional ML models\u2019 power most of today\u2019s ML applications in business and among AI ", "bbox": {"l": 136.8, "t": 469.48761, "r": 529.47882, "b": 478.70059, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "practitioners. CP4D supports traditional ML frameworks for training and inferencing, such as ", "bbox": {"l": 136.8, "t": 481.48743, "r": 545.62219, "b": 490.70041, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Scikit-learn, Snap ML, and XGBoost. Snap ML is a library that provides high-speed training ", "bbox": {"l": 136.80002, "t": 493.547, "r": 541.26062, "b": 502.75998, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "and inferencing of ML models that leverage the AI accelerator while running on an IBM z16 ", "bbox": {"l": 136.80002, "t": 505.54681, "r": 541.28766, "b": 514.7598, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "(Linux on IBM Z). CP4D supports DL frameworks such as TensorFlow and PyTorch. ", "bbox": {"l": 136.80002, "t": 517.54663, "r": 511.26416, "b": 526.7596100000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "TensorFlow is a DL framework that leverages the AI accelerator while running on an IBM z16 ", "bbox": {"l": 136.80002, "t": 529.54642, "r": 547.28253, "b": 538.7594300000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "(Linux on IBM Z).", "bbox": {"l": 136.80002, "t": 541.54623, "r": 213.4173, "b": 550.75923, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Figure 7 on page 11 provides an overview of the components that are supported on ", "bbox": {"l": 136.80002, "t": 563.50604, "r": 508.50827000000004, "b": 572.7190400000001, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "CP4D on IBM Z. You can leverage Watson Studio for model building, training, and validation, ", "bbox": {"l": 136.80002, "t": 575.50584, "r": 547.3233, "b": 584.71884, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "and WML for deployment of the model. Eventually, applications can use the AI inference ", "bbox": {"l": 136.80002, "t": 587.5056500000001, "r": 529.62152, "b": 596.71864, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "endpoint to score the model. ", "bbox": {"l": 136.80002, "t": 599.50545, "r": 265.69339, "b": 608.71844, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.45117950439453, "t": 754.43408203125, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9155402183532715, "cells": [{"id": 0, "text": "10 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.23697662353516, "t": 754.7630004882812, "r": 267.0744, "b": 764.1210327148438, "coord_origin": "TOPLEFT"}, "confidence": 0.9532065987586975, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 136.01052856445312, "t": 70.46507263183594, "r": 547.31226, "b": 140.8048095703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9860562086105347, "cells": [{"id": 2, "text": "CP4D includes a mix of open-source and proprietary data and AI runtime databases; ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 513.53369, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "open-source run times like Python; open-source data platforms like Anaconda; ML and DL ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 537.95197, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "frameworks like Pytorch and Tensorflow; and thousands of reusable Python packages. All of ", "bbox": {"l": 136.79999, "t": 95.50829999999996, "r": 547.31226, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "them are available and supported on s390x architecture to provide seamless parity with x86 ", "bbox": {"l": 136.79999, "t": 107.50811999999996, "r": 544.53857, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "architecture and a seamless experience for enterprise data scientists, architects, and data ", "bbox": {"l": 136.79999, "t": 119.50792999999999, "r": 536.82458, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "and AI solution developers on IBM Z and IBM LinuxONE platforms.", "bbox": {"l": 136.79999, "t": 131.50775, "r": 432.89679, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.78475952148438, "t": 152.72494506835938, "r": 547.35016, "b": 210.73961999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9879527688026428, "cells": [{"id": 8, "text": "Anaconda is one of the open-source data platforms that provide Python and R based data ", "bbox": {"l": 136.79999, "t": 153.52733999999998, "r": 536.9231, "b": 162.74036, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "science ML frameworks; analytics and data visualization tools; and open-source data science ", "bbox": {"l": 136.79999, "t": 165.52715999999998, "r": 547.35016, "b": 174.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "tools and libraries like Conda, XGBoost, and SciKit-Learn. Anaconda runs natively on Linux ", "bbox": {"l": 136.79999, "t": 177.52697999999998, "r": 542.97577, "b": 186.73999000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "on IBM Z and IBM LinuxONE, and on IBM z/OS Container Extensions (zcX) on z/OS. For ", "bbox": {"l": 136.79999, "t": 189.52679, "r": 533.46613, "b": 198.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "more information, see Announcing Anaconda for Linux on IBM Z and LinuxONE.", "bbox": {"l": 136.8, "t": 201.52661, "r": 491.7684300000001, "b": 210.73961999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.8437957763672, "t": 222.7408905029297, "r": 546.23071, "b": 292.7997741699219, "coord_origin": "TOPLEFT"}, "confidence": 0.988102376461029, "cells": [{"id": 13, "text": "In addition to strong, open-source ecosystem support for application development on Linux ", "bbox": {"l": 136.79901, "t": 223.48639000000003, "r": 540.69092, "b": 232.69939999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "and enterprise operating systems, a new generation of IBM Z and IBM LinuxONE servers ", "bbox": {"l": 136.79901, "t": 235.48621000000003, "r": 534.01886, "b": 244.69921999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "(IBM z16\u2122) also have strong platform support, and AI acceleration capabilities that can be ", "bbox": {"l": 136.79901, "t": 247.48602000000005, "r": 539.51672, "b": 256.69903999999997, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "leveraged by open-source software to perform better on the server infrastructure. For ", "bbox": {"l": 136.80002, "t": 259.48584000000005, "r": 515.11157, "b": 268.69885, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "example, the recently released CP4D 4.6 has Tensorflow and IBM SnapML frameworks that ", "bbox": {"l": 136.80002, "t": 271.48566000000005, "r": 546.23071, "b": 280.69867, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "leverage the AI accelerators when running on an IBM z16 server.", "bbox": {"l": 136.80003, "t": 283.4855, "r": 424.7088, "b": 292.69849, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.206298828125, "t": 304.8152160644531, "r": 521.34369, "b": 327.1700744628906, "coord_origin": "TOPLEFT"}, "confidence": 0.9795346260070801, "cells": [{"id": 19, "text": "So, to summarize, there is a huge, growing data and AI open source ecosystem that is ", "bbox": {"l": 136.80003, "t": 305.50507, "r": 521.34369, "b": 314.71804999999995, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "supported and optimized on IBM Z and IBM LinuxONE servers.", "bbox": {"l": 136.80003, "t": 317.50488000000007, "r": 416.28656, "b": 326.71786, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "section_header", "bbox": {"l": 64.09524536132812, "t": 354.2298889160156, "r": 191.27430725097656, "b": 370.04730224609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9598572254180908, "cells": [{"id": 21, "text": "Why AI on IBM Z", "bbox": {"l": 64.800003, "t": 355.20071, "r": 191.0069, "b": 369.96371000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 135.68882751464844, "t": 386.67742919921875, "r": 547.25861, "b": 457.1266174316406, "coord_origin": "TOPLEFT"}, "confidence": 0.9882671236991882, "cells": [{"id": 22, "text": "Data and AI playing a major role in the modernization story to enable the digital ", "bbox": {"l": 136.8, "t": 387.52872, "r": 489.0134, "b": 396.7417, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "transformation journey of every organization. Many organizations recognize the business ", "bbox": {"l": 136.8, "t": 399.52853, "r": 531.73199, "b": 408.74152, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "value of infusing AI into their infrastructure. CP4D provides the cloud-native solution to put ", "bbox": {"l": 136.8, "t": 411.52835, "r": 537.43396, "b": 420.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "your data to work. With CP4D, all your data users can collaborate from a single, unified ", "bbox": {"l": 136.8, "t": 423.52817, "r": 524.1084, "b": 432.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "interface that supports many services that work together, including collecting data, organizing ", "bbox": {"l": 136.8, "t": 435.52798, "r": 547.25861, "b": 444.74097, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "the data, analyzing the data, and infusing AI.", "bbox": {"l": 136.8, "t": 447.5278, "r": 334.1156, "b": 456.7407799999999, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 135.5255584716797, "t": 468.73712158203125, "r": 547.28253, "b": 551.2116088867188, "coord_origin": "TOPLEFT"}, "confidence": 0.9885222911834717, "cells": [{"id": 28, "text": "Traditional ML models\u2019 power most of today\u2019s ML applications in business and among AI ", "bbox": {"l": 136.8, "t": 469.48761, "r": 529.47882, "b": 478.70059, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "practitioners. CP4D supports traditional ML frameworks for training and inferencing, such as ", "bbox": {"l": 136.8, "t": 481.48743, "r": 545.62219, "b": 490.70041, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Scikit-learn, Snap ML, and XGBoost. Snap ML is a library that provides high-speed training ", "bbox": {"l": 136.80002, "t": 493.547, "r": 541.26062, "b": 502.75998, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "and inferencing of ML models that leverage the AI accelerator while running on an IBM z16 ", "bbox": {"l": 136.80002, "t": 505.54681, "r": 541.28766, "b": 514.7598, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "(Linux on IBM Z). CP4D supports DL frameworks such as TensorFlow and PyTorch. ", "bbox": {"l": 136.80002, "t": 517.54663, "r": 511.26416, "b": 526.7596100000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "TensorFlow is a DL framework that leverages the AI accelerator while running on an IBM z16 ", "bbox": {"l": 136.80002, "t": 529.54642, "r": 547.28253, "b": 538.7594300000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "(Linux on IBM Z).", "bbox": {"l": 136.80002, "t": 541.54623, "r": 213.4173, "b": 550.75923, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 136.04042053222656, "t": 562.6182861328125, "r": 547.3233, "b": 608.7926635742188, "coord_origin": "TOPLEFT"}, "confidence": 0.9859467148780823, "cells": [{"id": 35, "text": "Figure 7 on page 11 provides an overview of the components that are supported on ", "bbox": {"l": 136.80002, "t": 563.50604, "r": 508.50827000000004, "b": 572.7190400000001, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "CP4D on IBM Z. You can leverage Watson Studio for model building, training, and validation, ", "bbox": {"l": 136.80002, "t": 575.50584, "r": 547.3233, "b": 584.71884, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "and WML for deployment of the model. Eventually, applications can use the AI inference ", "bbox": {"l": 136.80002, "t": 587.5056500000001, "r": 529.62152, "b": 596.71864, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "endpoint to score the model. ", "bbox": {"l": 136.80002, "t": 599.50545, "r": 265.69339, "b": 608.71844, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 11, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.45117950439453, "t": 754.43408203125, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9155402183532715, "cells": [{"id": 0, "text": "10 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "10"}, {"label": "page_footer", "id": 1, "page_no": 11, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.23697662353516, "t": 754.7630004882812, "r": 267.0744, "b": 764.1210327148438, "coord_origin": "TOPLEFT"}, "confidence": 0.9532065987586975, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"label": "text", "id": 2, "page_no": 11, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.01052856445312, "t": 70.46507263183594, "r": 547.31226, "b": 140.8048095703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9860562086105347, "cells": [{"id": 2, "text": "CP4D includes a mix of open-source and proprietary data and AI runtime databases; ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 513.53369, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "open-source run times like Python; open-source data platforms like Anaconda; ML and DL ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 537.95197, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "frameworks like Pytorch and Tensorflow; and thousands of reusable Python packages. All of ", "bbox": {"l": 136.79999, "t": 95.50829999999996, "r": 547.31226, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "them are available and supported on s390x architecture to provide seamless parity with x86 ", "bbox": {"l": 136.79999, "t": 107.50811999999996, "r": 544.53857, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "architecture and a seamless experience for enterprise data scientists, architects, and data ", "bbox": {"l": 136.79999, "t": 119.50792999999999, "r": 536.82458, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "and AI solution developers on IBM Z and IBM LinuxONE platforms.", "bbox": {"l": 136.79999, "t": 131.50775, "r": 432.89679, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}]}, "text": "CP4D includes a mix of open-source and proprietary data and AI runtime databases; open-source run times like Python; open-source data platforms like Anaconda; ML and DL frameworks like Pytorch and Tensorflow; and thousands of reusable Python packages. All of them are available and supported on s390x architecture to provide seamless parity with x86 architecture and a seamless experience for enterprise data scientists, architects, and data and AI solution developers on IBM Z and IBM LinuxONE platforms."}, {"label": "text", "id": 3, "page_no": 11, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.78475952148438, "t": 152.72494506835938, "r": 547.35016, "b": 210.73961999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9879527688026428, "cells": [{"id": 8, "text": "Anaconda is one of the open-source data platforms that provide Python and R based data ", "bbox": {"l": 136.79999, "t": 153.52733999999998, "r": 536.9231, "b": 162.74036, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "science ML frameworks; analytics and data visualization tools; and open-source data science ", "bbox": {"l": 136.79999, "t": 165.52715999999998, "r": 547.35016, "b": 174.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "tools and libraries like Conda, XGBoost, and SciKit-Learn. Anaconda runs natively on Linux ", "bbox": {"l": 136.79999, "t": 177.52697999999998, "r": 542.97577, "b": 186.73999000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "on IBM Z and IBM LinuxONE, and on IBM z/OS Container Extensions (zcX) on z/OS. For ", "bbox": {"l": 136.79999, "t": 189.52679, "r": 533.46613, "b": 198.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "more information, see Announcing Anaconda for Linux on IBM Z and LinuxONE.", "bbox": {"l": 136.8, "t": 201.52661, "r": 491.7684300000001, "b": 210.73961999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Anaconda is one of the open-source data platforms that provide Python and R based data science ML frameworks; analytics and data visualization tools; and open-source data science tools and libraries like Conda, XGBoost, and SciKit-Learn. Anaconda runs natively on Linux on IBM Z and IBM LinuxONE, and on IBM z/OS Container Extensions (zcX) on z/OS. For more information, see Announcing Anaconda for Linux on IBM Z and LinuxONE."}, {"label": "text", "id": 4, "page_no": 11, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.8437957763672, "t": 222.7408905029297, "r": 546.23071, "b": 292.7997741699219, "coord_origin": "TOPLEFT"}, "confidence": 0.988102376461029, "cells": [{"id": 13, "text": "In addition to strong, open-source ecosystem support for application development on Linux ", "bbox": {"l": 136.79901, "t": 223.48639000000003, "r": 540.69092, "b": 232.69939999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "and enterprise operating systems, a new generation of IBM Z and IBM LinuxONE servers ", "bbox": {"l": 136.79901, "t": 235.48621000000003, "r": 534.01886, "b": 244.69921999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "(IBM z16\u2122) also have strong platform support, and AI acceleration capabilities that can be ", "bbox": {"l": 136.79901, "t": 247.48602000000005, "r": 539.51672, "b": 256.69903999999997, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "leveraged by open-source software to perform better on the server infrastructure. For ", "bbox": {"l": 136.80002, "t": 259.48584000000005, "r": 515.11157, "b": 268.69885, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "example, the recently released CP4D 4.6 has Tensorflow and IBM SnapML frameworks that ", "bbox": {"l": 136.80002, "t": 271.48566000000005, "r": 546.23071, "b": 280.69867, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "leverage the AI accelerators when running on an IBM z16 server.", "bbox": {"l": 136.80003, "t": 283.4855, "r": 424.7088, "b": 292.69849, "coord_origin": "TOPLEFT"}}]}, "text": "In addition to strong, open-source ecosystem support for application development on Linux and enterprise operating systems, a new generation of IBM Z and IBM LinuxONE servers (IBM z16\u2122) also have strong platform support, and AI acceleration capabilities that can be leveraged by open-source software to perform better on the server infrastructure. For example, the recently released CP4D 4.6 has Tensorflow and IBM SnapML frameworks that leverage the AI accelerators when running on an IBM z16 server."}, {"label": "text", "id": 5, "page_no": 11, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.206298828125, "t": 304.8152160644531, "r": 521.34369, "b": 327.1700744628906, "coord_origin": "TOPLEFT"}, "confidence": 0.9795346260070801, "cells": [{"id": 19, "text": "So, to summarize, there is a huge, growing data and AI open source ecosystem that is ", "bbox": {"l": 136.80003, "t": 305.50507, "r": 521.34369, "b": 314.71804999999995, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "supported and optimized on IBM Z and IBM LinuxONE servers.", "bbox": {"l": 136.80003, "t": 317.50488000000007, "r": 416.28656, "b": 326.71786, "coord_origin": "TOPLEFT"}}]}, "text": "So, to summarize, there is a huge, growing data and AI open source ecosystem that is supported and optimized on IBM Z and IBM LinuxONE servers."}, {"label": "section_header", "id": 6, "page_no": 11, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 64.09524536132812, "t": 354.2298889160156, "r": 191.27430725097656, "b": 370.04730224609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9598572254180908, "cells": [{"id": 21, "text": "Why AI on IBM Z", "bbox": {"l": 64.800003, "t": 355.20071, "r": 191.0069, "b": 369.96371000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Why AI on IBM Z"}, {"label": "text", "id": 7, "page_no": 11, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.68882751464844, "t": 386.67742919921875, "r": 547.25861, "b": 457.1266174316406, "coord_origin": "TOPLEFT"}, "confidence": 0.9882671236991882, "cells": [{"id": 22, "text": "Data and AI playing a major role in the modernization story to enable the digital ", "bbox": {"l": 136.8, "t": 387.52872, "r": 489.0134, "b": 396.7417, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "transformation journey of every organization. Many organizations recognize the business ", "bbox": {"l": 136.8, "t": 399.52853, "r": 531.73199, "b": 408.74152, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "value of infusing AI into their infrastructure. CP4D provides the cloud-native solution to put ", "bbox": {"l": 136.8, "t": 411.52835, "r": 537.43396, "b": 420.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "your data to work. With CP4D, all your data users can collaborate from a single, unified ", "bbox": {"l": 136.8, "t": 423.52817, "r": 524.1084, "b": 432.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "interface that supports many services that work together, including collecting data, organizing ", "bbox": {"l": 136.8, "t": 435.52798, "r": 547.25861, "b": 444.74097, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "the data, analyzing the data, and infusing AI.", "bbox": {"l": 136.8, "t": 447.5278, "r": 334.1156, "b": 456.7407799999999, "coord_origin": "TOPLEFT"}}]}, "text": "Data and AI playing a major role in the modernization story to enable the digital transformation journey of every organization. Many organizations recognize the business value of infusing AI into their infrastructure. CP4D provides the cloud-native solution to put your data to work. With CP4D, all your data users can collaborate from a single, unified interface that supports many services that work together, including collecting data, organizing the data, analyzing the data, and infusing AI."}, {"label": "text", "id": 8, "page_no": 11, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.5255584716797, "t": 468.73712158203125, "r": 547.28253, "b": 551.2116088867188, "coord_origin": "TOPLEFT"}, "confidence": 0.9885222911834717, "cells": [{"id": 28, "text": "Traditional ML models\u2019 power most of today\u2019s ML applications in business and among AI ", "bbox": {"l": 136.8, "t": 469.48761, "r": 529.47882, "b": 478.70059, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "practitioners. CP4D supports traditional ML frameworks for training and inferencing, such as ", "bbox": {"l": 136.8, "t": 481.48743, "r": 545.62219, "b": 490.70041, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Scikit-learn, Snap ML, and XGBoost. Snap ML is a library that provides high-speed training ", "bbox": {"l": 136.80002, "t": 493.547, "r": 541.26062, "b": 502.75998, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "and inferencing of ML models that leverage the AI accelerator while running on an IBM z16 ", "bbox": {"l": 136.80002, "t": 505.54681, "r": 541.28766, "b": 514.7598, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "(Linux on IBM Z). CP4D supports DL frameworks such as TensorFlow and PyTorch. ", "bbox": {"l": 136.80002, "t": 517.54663, "r": 511.26416, "b": 526.7596100000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "TensorFlow is a DL framework that leverages the AI accelerator while running on an IBM z16 ", "bbox": {"l": 136.80002, "t": 529.54642, "r": 547.28253, "b": 538.7594300000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "(Linux on IBM Z).", "bbox": {"l": 136.80002, "t": 541.54623, "r": 213.4173, "b": 550.75923, "coord_origin": "TOPLEFT"}}]}, "text": "Traditional ML models\u2019 power most of today\u2019s ML applications in business and among AI practitioners. CP4D supports traditional ML frameworks for training and inferencing, such as Scikit-learn, Snap ML, and XGBoost. Snap ML is a library that provides high-speed training and inferencing of ML models that leverage the AI accelerator while running on an IBM z16 (Linux on IBM Z). CP4D supports DL frameworks such as TensorFlow and PyTorch. TensorFlow is a DL framework that leverages the AI accelerator while running on an IBM z16 (Linux on IBM Z)."}, {"label": "text", "id": 9, "page_no": 11, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.04042053222656, "t": 562.6182861328125, "r": 547.3233, "b": 608.7926635742188, "coord_origin": "TOPLEFT"}, "confidence": 0.9859467148780823, "cells": [{"id": 35, "text": "Figure 7 on page 11 provides an overview of the components that are supported on ", "bbox": {"l": 136.80002, "t": 563.50604, "r": 508.50827000000004, "b": 572.7190400000001, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "CP4D on IBM Z. You can leverage Watson Studio for model building, training, and validation, ", "bbox": {"l": 136.80002, "t": 575.50584, "r": 547.3233, "b": 584.71884, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "and WML for deployment of the model. Eventually, applications can use the AI inference ", "bbox": {"l": 136.80002, "t": 587.5056500000001, "r": 529.62152, "b": 596.71864, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "endpoint to score the model. ", "bbox": {"l": 136.80002, "t": 599.50545, "r": 265.69339, "b": 608.71844, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 7 on page 11 provides an overview of the components that are supported on CP4D on IBM Z. You can leverage Watson Studio for model building, training, and validation, and WML for deployment of the model. Eventually, applications can use the AI inference endpoint to score the model."}], "body": [{"label": "text", "id": 2, "page_no": 11, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.01052856445312, "t": 70.46507263183594, "r": 547.31226, "b": 140.8048095703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9860562086105347, "cells": [{"id": 2, "text": "CP4D includes a mix of open-source and proprietary data and AI runtime databases; ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 513.53369, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "open-source run times like Python; open-source data platforms like Anaconda; ML and DL ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 537.95197, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "frameworks like Pytorch and Tensorflow; and thousands of reusable Python packages. All of ", "bbox": {"l": 136.79999, "t": 95.50829999999996, "r": 547.31226, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "them are available and supported on s390x architecture to provide seamless parity with x86 ", "bbox": {"l": 136.79999, "t": 107.50811999999996, "r": 544.53857, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "architecture and a seamless experience for enterprise data scientists, architects, and data ", "bbox": {"l": 136.79999, "t": 119.50792999999999, "r": 536.82458, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "and AI solution developers on IBM Z and IBM LinuxONE platforms.", "bbox": {"l": 136.79999, "t": 131.50775, "r": 432.89679, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}]}, "text": "CP4D includes a mix of open-source and proprietary data and AI runtime databases; open-source run times like Python; open-source data platforms like Anaconda; ML and DL frameworks like Pytorch and Tensorflow; and thousands of reusable Python packages. All of them are available and supported on s390x architecture to provide seamless parity with x86 architecture and a seamless experience for enterprise data scientists, architects, and data and AI solution developers on IBM Z and IBM LinuxONE platforms."}, {"label": "text", "id": 3, "page_no": 11, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.78475952148438, "t": 152.72494506835938, "r": 547.35016, "b": 210.73961999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9879527688026428, "cells": [{"id": 8, "text": "Anaconda is one of the open-source data platforms that provide Python and R based data ", "bbox": {"l": 136.79999, "t": 153.52733999999998, "r": 536.9231, "b": 162.74036, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "science ML frameworks; analytics and data visualization tools; and open-source data science ", "bbox": {"l": 136.79999, "t": 165.52715999999998, "r": 547.35016, "b": 174.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "tools and libraries like Conda, XGBoost, and SciKit-Learn. Anaconda runs natively on Linux ", "bbox": {"l": 136.79999, "t": 177.52697999999998, "r": 542.97577, "b": 186.73999000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "on IBM Z and IBM LinuxONE, and on IBM z/OS Container Extensions (zcX) on z/OS. For ", "bbox": {"l": 136.79999, "t": 189.52679, "r": 533.46613, "b": 198.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "more information, see Announcing Anaconda for Linux on IBM Z and LinuxONE.", "bbox": {"l": 136.8, "t": 201.52661, "r": 491.7684300000001, "b": 210.73961999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Anaconda is one of the open-source data platforms that provide Python and R based data science ML frameworks; analytics and data visualization tools; and open-source data science tools and libraries like Conda, XGBoost, and SciKit-Learn. Anaconda runs natively on Linux on IBM Z and IBM LinuxONE, and on IBM z/OS Container Extensions (zcX) on z/OS. For more information, see Announcing Anaconda for Linux on IBM Z and LinuxONE."}, {"label": "text", "id": 4, "page_no": 11, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.8437957763672, "t": 222.7408905029297, "r": 546.23071, "b": 292.7997741699219, "coord_origin": "TOPLEFT"}, "confidence": 0.988102376461029, "cells": [{"id": 13, "text": "In addition to strong, open-source ecosystem support for application development on Linux ", "bbox": {"l": 136.79901, "t": 223.48639000000003, "r": 540.69092, "b": 232.69939999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "and enterprise operating systems, a new generation of IBM Z and IBM LinuxONE servers ", "bbox": {"l": 136.79901, "t": 235.48621000000003, "r": 534.01886, "b": 244.69921999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "(IBM z16\u2122) also have strong platform support, and AI acceleration capabilities that can be ", "bbox": {"l": 136.79901, "t": 247.48602000000005, "r": 539.51672, "b": 256.69903999999997, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "leveraged by open-source software to perform better on the server infrastructure. For ", "bbox": {"l": 136.80002, "t": 259.48584000000005, "r": 515.11157, "b": 268.69885, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "example, the recently released CP4D 4.6 has Tensorflow and IBM SnapML frameworks that ", "bbox": {"l": 136.80002, "t": 271.48566000000005, "r": 546.23071, "b": 280.69867, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "leverage the AI accelerators when running on an IBM z16 server.", "bbox": {"l": 136.80003, "t": 283.4855, "r": 424.7088, "b": 292.69849, "coord_origin": "TOPLEFT"}}]}, "text": "In addition to strong, open-source ecosystem support for application development on Linux and enterprise operating systems, a new generation of IBM Z and IBM LinuxONE servers (IBM z16\u2122) also have strong platform support, and AI acceleration capabilities that can be leveraged by open-source software to perform better on the server infrastructure. For example, the recently released CP4D 4.6 has Tensorflow and IBM SnapML frameworks that leverage the AI accelerators when running on an IBM z16 server."}, {"label": "text", "id": 5, "page_no": 11, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.206298828125, "t": 304.8152160644531, "r": 521.34369, "b": 327.1700744628906, "coord_origin": "TOPLEFT"}, "confidence": 0.9795346260070801, "cells": [{"id": 19, "text": "So, to summarize, there is a huge, growing data and AI open source ecosystem that is ", "bbox": {"l": 136.80003, "t": 305.50507, "r": 521.34369, "b": 314.71804999999995, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "supported and optimized on IBM Z and IBM LinuxONE servers.", "bbox": {"l": 136.80003, "t": 317.50488000000007, "r": 416.28656, "b": 326.71786, "coord_origin": "TOPLEFT"}}]}, "text": "So, to summarize, there is a huge, growing data and AI open source ecosystem that is supported and optimized on IBM Z and IBM LinuxONE servers."}, {"label": "section_header", "id": 6, "page_no": 11, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 64.09524536132812, "t": 354.2298889160156, "r": 191.27430725097656, "b": 370.04730224609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9598572254180908, "cells": [{"id": 21, "text": "Why AI on IBM Z", "bbox": {"l": 64.800003, "t": 355.20071, "r": 191.0069, "b": 369.96371000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Why AI on IBM Z"}, {"label": "text", "id": 7, "page_no": 11, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.68882751464844, "t": 386.67742919921875, "r": 547.25861, "b": 457.1266174316406, "coord_origin": "TOPLEFT"}, "confidence": 0.9882671236991882, "cells": [{"id": 22, "text": "Data and AI playing a major role in the modernization story to enable the digital ", "bbox": {"l": 136.8, "t": 387.52872, "r": 489.0134, "b": 396.7417, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "transformation journey of every organization. Many organizations recognize the business ", "bbox": {"l": 136.8, "t": 399.52853, "r": 531.73199, "b": 408.74152, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "value of infusing AI into their infrastructure. CP4D provides the cloud-native solution to put ", "bbox": {"l": 136.8, "t": 411.52835, "r": 537.43396, "b": 420.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "your data to work. With CP4D, all your data users can collaborate from a single, unified ", "bbox": {"l": 136.8, "t": 423.52817, "r": 524.1084, "b": 432.74115000000006, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "interface that supports many services that work together, including collecting data, organizing ", "bbox": {"l": 136.8, "t": 435.52798, "r": 547.25861, "b": 444.74097, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "the data, analyzing the data, and infusing AI.", "bbox": {"l": 136.8, "t": 447.5278, "r": 334.1156, "b": 456.7407799999999, "coord_origin": "TOPLEFT"}}]}, "text": "Data and AI playing a major role in the modernization story to enable the digital transformation journey of every organization. Many organizations recognize the business value of infusing AI into their infrastructure. CP4D provides the cloud-native solution to put your data to work. With CP4D, all your data users can collaborate from a single, unified interface that supports many services that work together, including collecting data, organizing the data, analyzing the data, and infusing AI."}, {"label": "text", "id": 8, "page_no": 11, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.5255584716797, "t": 468.73712158203125, "r": 547.28253, "b": 551.2116088867188, "coord_origin": "TOPLEFT"}, "confidence": 0.9885222911834717, "cells": [{"id": 28, "text": "Traditional ML models\u2019 power most of today\u2019s ML applications in business and among AI ", "bbox": {"l": 136.8, "t": 469.48761, "r": 529.47882, "b": 478.70059, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "practitioners. CP4D supports traditional ML frameworks for training and inferencing, such as ", "bbox": {"l": 136.8, "t": 481.48743, "r": 545.62219, "b": 490.70041, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Scikit-learn, Snap ML, and XGBoost. Snap ML is a library that provides high-speed training ", "bbox": {"l": 136.80002, "t": 493.547, "r": 541.26062, "b": 502.75998, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "and inferencing of ML models that leverage the AI accelerator while running on an IBM z16 ", "bbox": {"l": 136.80002, "t": 505.54681, "r": 541.28766, "b": 514.7598, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "(Linux on IBM Z). CP4D supports DL frameworks such as TensorFlow and PyTorch. ", "bbox": {"l": 136.80002, "t": 517.54663, "r": 511.26416, "b": 526.7596100000001, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "TensorFlow is a DL framework that leverages the AI accelerator while running on an IBM z16 ", "bbox": {"l": 136.80002, "t": 529.54642, "r": 547.28253, "b": 538.7594300000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "(Linux on IBM Z).", "bbox": {"l": 136.80002, "t": 541.54623, "r": 213.4173, "b": 550.75923, "coord_origin": "TOPLEFT"}}]}, "text": "Traditional ML models\u2019 power most of today\u2019s ML applications in business and among AI practitioners. CP4D supports traditional ML frameworks for training and inferencing, such as Scikit-learn, Snap ML, and XGBoost. Snap ML is a library that provides high-speed training and inferencing of ML models that leverage the AI accelerator while running on an IBM z16 (Linux on IBM Z). CP4D supports DL frameworks such as TensorFlow and PyTorch. TensorFlow is a DL framework that leverages the AI accelerator while running on an IBM z16 (Linux on IBM Z)."}, {"label": "text", "id": 9, "page_no": 11, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.04042053222656, "t": 562.6182861328125, "r": 547.3233, "b": 608.7926635742188, "coord_origin": "TOPLEFT"}, "confidence": 0.9859467148780823, "cells": [{"id": 35, "text": "Figure 7 on page 11 provides an overview of the components that are supported on ", "bbox": {"l": 136.80002, "t": 563.50604, "r": 508.50827000000004, "b": 572.7190400000001, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "CP4D on IBM Z. You can leverage Watson Studio for model building, training, and validation, ", "bbox": {"l": 136.80002, "t": 575.50584, "r": 547.3233, "b": 584.71884, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "and WML for deployment of the model. Eventually, applications can use the AI inference ", "bbox": {"l": 136.80002, "t": 587.5056500000001, "r": 529.62152, "b": 596.71864, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "endpoint to score the model. ", "bbox": {"l": 136.80002, "t": 599.50545, "r": 265.69339, "b": 608.71844, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 7 on page 11 provides an overview of the components that are supported on CP4D on IBM Z. You can leverage Watson Studio for model building, training, and validation, and WML for deployment of the model. Eventually, applications can use the AI inference endpoint to score the model."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 11, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.45117950439453, "t": 754.43408203125, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9155402183532715, "cells": [{"id": 0, "text": "10 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "10"}, {"label": "page_footer", "id": 1, "page_no": 11, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.23697662353516, "t": 754.7630004882812, "r": 267.0744, "b": 764.1210327148438, "coord_origin": "TOPLEFT"}, "confidence": 0.9532065987586975, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}]}}, {"page_no": 12, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "11", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Figure 7 Developing, training, and deploying an AI model on Cloud Pak for Data on IBM Z and IBM LinuxONE", "bbox": {"l": 64.800003, "t": 354.01801, "r": 505.42822, "b": 362.34302, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "In summary, here are some of the reasons why you should choose AI on IBM Z: ", "bbox": {"l": 136.8, "t": 376.00872999999996, "r": 492.94083, "b": 385.22171, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "GLYPH", "bbox": {"l": 136.8, "t": 393.13791, "r": 141.78, "b": 401.91269000000005, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "World-class AI inference platform for enterprise workloads: ", "bbox": {"l": 151.20016, "t": 392.98853, "r": 413.40018, "b": 402.20151, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "-", "bbox": {"l": 152.03979, "t": 410.02811, "r": 157.60942, "b": 419.24109, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Embedded accelerators: A centralized on-chip AI accelerator that is shared by all ", "bbox": {"l": 165.59933, "t": 410.02811, "r": 526.18811, "b": 419.24109, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "cores.", "bbox": {"l": 165.59933, "t": 422.02792, "r": 192.78615, "b": 431.24091, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "-", "bbox": {"l": 152.03979, "t": 439.00772, "r": 157.61043, "b": 448.2207, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Industry standard AI ecosystem: Many industry open-source data science frameworks ", "bbox": {"l": 165.59935, "t": 439.00772, "r": 547.24652, "b": 448.2207, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "are available on the platform.", "bbox": {"l": 165.59933, "t": 451.00754, "r": 294.55841, "b": 460.22052, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "-", "bbox": {"l": 152.03979, "t": 467.98734, "r": 157.60843, "b": 477.20032, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Seamlessly integrate AI into existing enterprise workload stacks: Train anywhere, and ", "bbox": {"l": 165.59933, "t": 467.98734, "r": 546.75769, "b": 477.20032, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "then deploy on IBM Z.", "bbox": {"l": 165.59933, "t": 479.98715, "r": 263.37762, "b": 489.20013, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "GLYPH", "bbox": {"l": 136.799, "t": 497.17612, "r": 141.77899, "b": 505.9509, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Security: Encrypted memory, and improved trusted execution environments. ", "bbox": {"l": 151.19916, "t": 497.02673, "r": 490.03317, "b": 506.23972, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "GLYPH", "bbox": {"l": 136.799, "t": 514.15591, "r": 141.77899, "b": 522.93069, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Sustainability: Reduce your energy consumption with real-time monitoring tools about the ", "bbox": {"l": 151.19916, "t": 514.00653, "r": 547.27051, "b": 523.21951, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "energy consumption of the system.", "bbox": {"l": 151.19916, "t": 526.00635, "r": 306.23645, "b": 535.21933, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "AI use cases", "bbox": {"l": 64.800003, "t": 563.70062, "r": 161.74744, "b": 578.46362, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "With billions of transactions per day in many of today\u2019s industries, it is key to get real-time ", "bbox": {"l": 136.8, "t": 596.02863, "r": 533.90125, "b": 605.24162, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "insights about what is happening in your data. AI on the IBM Z stack understands these ", "bbox": {"l": 136.79999, "t": 608.02843, "r": 525.72296, "b": 617.2414200000001, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "situations, and it delivers in-transaction inference in real time and at scale.", "bbox": {"l": 136.79999, "t": 620.02823, "r": 463.9240699999999, "b": 629.24123, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Core banking solutions running on IBM Z that are involved in processing inbound transactions ", "bbox": {"l": 136.79999, "t": 641.98804, "r": 547.24664, "b": 651.20103, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "need real-time fraud detection to prevent fraud. Other types of possible use cases might be ", "bbox": {"l": 136.79999, "t": 653.98784, "r": 541.79242, "b": 663.20084, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "credit risk analysis, anti-money laundering, loan approval, fraud detection in payments, and ", "bbox": {"l": 136.79999, "t": 665.98764, "r": 541.78253, "b": 675.20065, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "instant payments. ", "bbox": {"l": 136.79999, "t": 677.98745, "r": 217.88634, "b": 687.20045, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "For insurance companies, a pressing use case would be claims processing. For markets and ", "bbox": {"l": 136.79999, "t": 700.007019, "r": 547.31128, "b": 709.220024, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "trading, clearing and settlement use cases are paramount. ", "bbox": {"l": 136.79999, "t": 712.006828, "r": 397.38748, "b": 721.219833, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 535.8191528320312, "t": 754.3023071289062, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9041211009025574, "cells": [{"id": 0, "text": "11", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "caption", "bbox": {"l": 64.15190887451172, "t": 353.40753173828125, "r": 506.3805236816406, "b": 362.9499206542969, "coord_origin": "TOPLEFT"}, "confidence": 0.9419980049133301, "cells": [{"id": 1, "text": "Figure 7 Developing, training, and deploying an AI model on Cloud Pak for Data on IBM Z and IBM LinuxONE", "bbox": {"l": 64.800003, "t": 354.01801, "r": 505.42822, "b": 362.34302, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 136.55064392089844, "t": 375.4695739746094, "r": 492.94083, "b": 385.46099853515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9363874197006226, "cells": [{"id": 2, "text": "In summary, here are some of the reasons why you should choose AI on IBM Z: ", "bbox": {"l": 136.8, "t": 376.00872999999996, "r": 492.94083, "b": 385.22171, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "list_item", "bbox": {"l": 135.7388458251953, "t": 392.1660461425781, "r": 413.40018, "b": 402.2774658203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9464669823646545, "cells": [{"id": 3, "text": "GLYPH", "bbox": {"l": 136.8, "t": 393.13791, "r": 141.78, "b": 401.91269000000005, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "World-class AI inference platform for enterprise workloads: ", "bbox": {"l": 151.20016, "t": 392.98853, "r": 413.40018, "b": 402.20151, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 151.22914123535156, "t": 409.4760437011719, "r": 526.18811, "b": 431.24091, "coord_origin": "TOPLEFT"}, "confidence": 0.9700906872749329, "cells": [{"id": 5, "text": "-", "bbox": {"l": 152.03979, "t": 410.02811, "r": 157.60942, "b": 419.24109, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Embedded accelerators: A centralized on-chip AI accelerator that is shared by all ", "bbox": {"l": 165.59933, "t": 410.02811, "r": 526.18811, "b": 419.24109, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "cores.", "bbox": {"l": 165.59933, "t": 422.02792, "r": 192.78615, "b": 431.24091, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 151.42306518554688, "t": 438.09356689453125, "r": 547.24652, "b": 460.22052, "coord_origin": "TOPLEFT"}, "confidence": 0.9732586741447449, "cells": [{"id": 8, "text": "-", "bbox": {"l": 152.03979, "t": 439.00772, "r": 157.61043, "b": 448.2207, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Industry standard AI ecosystem: Many industry open-source data science frameworks ", "bbox": {"l": 165.59935, "t": 439.00772, "r": 547.24652, "b": 448.2207, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "are available on the platform.", "bbox": {"l": 165.59933, "t": 451.00754, "r": 294.55841, "b": 460.22052, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 151.33360290527344, "t": 467.51483154296875, "r": 546.75769, "b": 489.2516174316406, "coord_origin": "TOPLEFT"}, "confidence": 0.9748732447624207, "cells": [{"id": 11, "text": "-", "bbox": {"l": 152.03979, "t": 467.98734, "r": 157.60843, "b": 477.20032, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Seamlessly integrate AI into existing enterprise workload stacks: Train anywhere, and ", "bbox": {"l": 165.59933, "t": 467.98734, "r": 546.75769, "b": 477.20032, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "then deploy on IBM Z.", "bbox": {"l": 165.59933, "t": 479.98715, "r": 263.37762, "b": 489.20013, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.7086639404297, "t": 496.2107238769531, "r": 490.03317, "b": 506.39105224609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9550834894180298, "cells": [{"id": 14, "text": "GLYPH", "bbox": {"l": 136.799, "t": 497.17612, "r": 141.77899, "b": 505.9509, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Security: Encrypted memory, and improved trusted execution environments. ", "bbox": {"l": 151.19916, "t": 497.02673, "r": 490.03317, "b": 506.23972, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.6390838623047, "t": 513.5339965820312, "r": 547.27051, "b": 535.7632446289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9789533019065857, "cells": [{"id": 16, "text": "GLYPH", "bbox": {"l": 136.799, "t": 514.15591, "r": 141.77899, "b": 522.93069, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Sustainability: Reduce your energy consumption with real-time monitoring tools about the ", "bbox": {"l": 151.19916, "t": 514.00653, "r": 547.27051, "b": 523.21951, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "energy consumption of the system.", "bbox": {"l": 151.19916, "t": 526.00635, "r": 306.23645, "b": 535.21933, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "section_header", "bbox": {"l": 64.31088256835938, "t": 562.8890380859375, "r": 161.74744, "b": 578.46362, "coord_origin": "TOPLEFT"}, "confidence": 0.9544580578804016, "cells": [{"id": 19, "text": "AI use cases", "bbox": {"l": 64.800003, "t": 563.70062, "r": 161.74744, "b": 578.46362, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 135.98568725585938, "t": 595.26904296875, "r": 533.90125, "b": 629.24123, "coord_origin": "TOPLEFT"}, "confidence": 0.9852948188781738, "cells": [{"id": 20, "text": "With billions of transactions per day in many of today\u2019s industries, it is key to get real-time ", "bbox": {"l": 136.8, "t": 596.02863, "r": 533.90125, "b": 605.24162, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "insights about what is happening in your data. AI on the IBM Z stack understands these ", "bbox": {"l": 136.79999, "t": 608.02843, "r": 525.72296, "b": 617.2414200000001, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "situations, and it delivers in-transaction inference in real time and at scale.", "bbox": {"l": 136.79999, "t": 620.02823, "r": 463.9240699999999, "b": 629.24123, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 135.95875549316406, "t": 641.30712890625, "r": 547.24664, "b": 687.2891845703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9874392151832581, "cells": [{"id": 23, "text": "Core banking solutions running on IBM Z that are involved in processing inbound transactions ", "bbox": {"l": 136.79999, "t": 641.98804, "r": 547.24664, "b": 651.20103, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "need real-time fraud detection to prevent fraud. Other types of possible use cases might be ", "bbox": {"l": 136.79999, "t": 653.98784, "r": 541.79242, "b": 663.20084, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "credit risk analysis, anti-money laundering, loan approval, fraud detection in payments, and ", "bbox": {"l": 136.79999, "t": 665.98764, "r": 541.78253, "b": 675.20065, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "instant payments. ", "bbox": {"l": 136.79999, "t": 677.98745, "r": 217.88634, "b": 687.20045, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 136.34823608398438, "t": 699.2769165039062, "r": 547.31128, "b": 721.6598510742188, "coord_origin": "TOPLEFT"}, "confidence": 0.9817102551460266, "cells": [{"id": 27, "text": "For insurance companies, a pressing use case would be claims processing. For markets and ", "bbox": {"l": 136.79999, "t": 700.007019, "r": 547.31128, "b": 709.220024, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "trading, clearing and settlement use cases are paramount. ", "bbox": {"l": 136.79999, "t": 712.006828, "r": 397.38748, "b": 721.219833, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "picture", "bbox": {"l": 63.857383728027344, "t": 77.41220092773438, "r": 547.4847412109375, "b": 350.3799743652344, "coord_origin": "TOPLEFT"}, "confidence": 0.9851271510124207, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 12, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 535.8191528320312, "t": 754.3023071289062, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9041211009025574, "cells": [{"id": 0, "text": "11", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "11"}, {"label": "caption", "id": 1, "page_no": 12, "cluster": {"id": 1, "label": "caption", "bbox": {"l": 64.15190887451172, "t": 353.40753173828125, "r": 506.3805236816406, "b": 362.9499206542969, "coord_origin": "TOPLEFT"}, "confidence": 0.9419980049133301, "cells": [{"id": 1, "text": "Figure 7 Developing, training, and deploying an AI model on Cloud Pak for Data on IBM Z and IBM LinuxONE", "bbox": {"l": 64.800003, "t": 354.01801, "r": 505.42822, "b": 362.34302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 7 Developing, training, and deploying an AI model on Cloud Pak for Data on IBM Z and IBM LinuxONE"}, {"label": "text", "id": 2, "page_no": 12, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.55064392089844, "t": 375.4695739746094, "r": 492.94083, "b": 385.46099853515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9363874197006226, "cells": [{"id": 2, "text": "In summary, here are some of the reasons why you should choose AI on IBM Z: ", "bbox": {"l": 136.8, "t": 376.00872999999996, "r": 492.94083, "b": 385.22171, "coord_origin": "TOPLEFT"}}]}, "text": "In summary, here are some of the reasons why you should choose AI on IBM Z:"}, {"label": "list_item", "id": 3, "page_no": 12, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 135.7388458251953, "t": 392.1660461425781, "r": 413.40018, "b": 402.2774658203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9464669823646545, "cells": [{"id": 3, "text": "GLYPH", "bbox": {"l": 136.8, "t": 393.13791, "r": 141.78, "b": 401.91269000000005, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "World-class AI inference platform for enterprise workloads: ", "bbox": {"l": 151.20016, "t": 392.98853, "r": 413.40018, "b": 402.20151, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH World-class AI inference platform for enterprise workloads:"}, {"label": "list_item", "id": 4, "page_no": 12, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 151.22914123535156, "t": 409.4760437011719, "r": 526.18811, "b": 431.24091, "coord_origin": "TOPLEFT"}, "confidence": 0.9700906872749329, "cells": [{"id": 5, "text": "-", "bbox": {"l": 152.03979, "t": 410.02811, "r": 157.60942, "b": 419.24109, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Embedded accelerators: A centralized on-chip AI accelerator that is shared by all ", "bbox": {"l": 165.59933, "t": 410.02811, "r": 526.18811, "b": 419.24109, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "cores.", "bbox": {"l": 165.59933, "t": 422.02792, "r": 192.78615, "b": 431.24091, "coord_origin": "TOPLEFT"}}]}, "text": "-Embedded accelerators: A centralized on-chip AI accelerator that is shared by all cores."}, {"label": "list_item", "id": 5, "page_no": 12, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 151.42306518554688, "t": 438.09356689453125, "r": 547.24652, "b": 460.22052, "coord_origin": "TOPLEFT"}, "confidence": 0.9732586741447449, "cells": [{"id": 8, "text": "-", "bbox": {"l": 152.03979, "t": 439.00772, "r": 157.61043, "b": 448.2207, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Industry standard AI ecosystem: Many industry open-source data science frameworks ", "bbox": {"l": 165.59935, "t": 439.00772, "r": 547.24652, "b": 448.2207, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "are available on the platform.", "bbox": {"l": 165.59933, "t": 451.00754, "r": 294.55841, "b": 460.22052, "coord_origin": "TOPLEFT"}}]}, "text": "-Industry standard AI ecosystem: Many industry open-source data science frameworks are available on the platform."}, {"label": "list_item", "id": 6, "page_no": 12, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 151.33360290527344, "t": 467.51483154296875, "r": 546.75769, "b": 489.2516174316406, "coord_origin": "TOPLEFT"}, "confidence": 0.9748732447624207, "cells": [{"id": 11, "text": "-", "bbox": {"l": 152.03979, "t": 467.98734, "r": 157.60843, "b": 477.20032, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Seamlessly integrate AI into existing enterprise workload stacks: Train anywhere, and ", "bbox": {"l": 165.59933, "t": 467.98734, "r": 546.75769, "b": 477.20032, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "then deploy on IBM Z.", "bbox": {"l": 165.59933, "t": 479.98715, "r": 263.37762, "b": 489.20013, "coord_origin": "TOPLEFT"}}]}, "text": "-Seamlessly integrate AI into existing enterprise workload stacks: Train anywhere, and then deploy on IBM Z."}, {"label": "list_item", "id": 7, "page_no": 12, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.7086639404297, "t": 496.2107238769531, "r": 490.03317, "b": 506.39105224609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9550834894180298, "cells": [{"id": 14, "text": "GLYPH", "bbox": {"l": 136.799, "t": 497.17612, "r": 141.77899, "b": 505.9509, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Security: Encrypted memory, and improved trusted execution environments. ", "bbox": {"l": 151.19916, "t": 497.02673, "r": 490.03317, "b": 506.23972, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Security: Encrypted memory, and improved trusted execution environments."}, {"label": "list_item", "id": 8, "page_no": 12, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.6390838623047, "t": 513.5339965820312, "r": 547.27051, "b": 535.7632446289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9789533019065857, "cells": [{"id": 16, "text": "GLYPH", "bbox": {"l": 136.799, "t": 514.15591, "r": 141.77899, "b": 522.93069, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Sustainability: Reduce your energy consumption with real-time monitoring tools about the ", "bbox": {"l": 151.19916, "t": 514.00653, "r": 547.27051, "b": 523.21951, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "energy consumption of the system.", "bbox": {"l": 151.19916, "t": 526.00635, "r": 306.23645, "b": 535.21933, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Sustainability: Reduce your energy consumption with real-time monitoring tools about the energy consumption of the system."}, {"label": "section_header", "id": 9, "page_no": 12, "cluster": {"id": 9, "label": "section_header", "bbox": {"l": 64.31088256835938, "t": 562.8890380859375, "r": 161.74744, "b": 578.46362, "coord_origin": "TOPLEFT"}, "confidence": 0.9544580578804016, "cells": [{"id": 19, "text": "AI use cases", "bbox": {"l": 64.800003, "t": 563.70062, "r": 161.74744, "b": 578.46362, "coord_origin": "TOPLEFT"}}]}, "text": "AI use cases"}, {"label": "text", "id": 10, "page_no": 12, "cluster": {"id": 10, "label": "text", "bbox": {"l": 135.98568725585938, "t": 595.26904296875, "r": 533.90125, "b": 629.24123, "coord_origin": "TOPLEFT"}, "confidence": 0.9852948188781738, "cells": [{"id": 20, "text": "With billions of transactions per day in many of today\u2019s industries, it is key to get real-time ", "bbox": {"l": 136.8, "t": 596.02863, "r": 533.90125, "b": 605.24162, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "insights about what is happening in your data. AI on the IBM Z stack understands these ", "bbox": {"l": 136.79999, "t": 608.02843, "r": 525.72296, "b": 617.2414200000001, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "situations, and it delivers in-transaction inference in real time and at scale.", "bbox": {"l": 136.79999, "t": 620.02823, "r": 463.9240699999999, "b": 629.24123, "coord_origin": "TOPLEFT"}}]}, "text": "With billions of transactions per day in many of today\u2019s industries, it is key to get real-time insights about what is happening in your data. AI on the IBM Z stack understands these situations, and it delivers in-transaction inference in real time and at scale."}, {"label": "text", "id": 11, "page_no": 12, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.95875549316406, "t": 641.30712890625, "r": 547.24664, "b": 687.2891845703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9874392151832581, "cells": [{"id": 23, "text": "Core banking solutions running on IBM Z that are involved in processing inbound transactions ", "bbox": {"l": 136.79999, "t": 641.98804, "r": 547.24664, "b": 651.20103, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "need real-time fraud detection to prevent fraud. Other types of possible use cases might be ", "bbox": {"l": 136.79999, "t": 653.98784, "r": 541.79242, "b": 663.20084, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "credit risk analysis, anti-money laundering, loan approval, fraud detection in payments, and ", "bbox": {"l": 136.79999, "t": 665.98764, "r": 541.78253, "b": 675.20065, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "instant payments. ", "bbox": {"l": 136.79999, "t": 677.98745, "r": 217.88634, "b": 687.20045, "coord_origin": "TOPLEFT"}}]}, "text": "Core banking solutions running on IBM Z that are involved in processing inbound transactions need real-time fraud detection to prevent fraud. Other types of possible use cases might be credit risk analysis, anti-money laundering, loan approval, fraud detection in payments, and instant payments."}, {"label": "text", "id": 12, "page_no": 12, "cluster": {"id": 12, "label": "text", "bbox": {"l": 136.34823608398438, "t": 699.2769165039062, "r": 547.31128, "b": 721.6598510742188, "coord_origin": "TOPLEFT"}, "confidence": 0.9817102551460266, "cells": [{"id": 27, "text": "For insurance companies, a pressing use case would be claims processing. For markets and ", "bbox": {"l": 136.79999, "t": 700.007019, "r": 547.31128, "b": 709.220024, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "trading, clearing and settlement use cases are paramount. ", "bbox": {"l": 136.79999, "t": 712.006828, "r": 397.38748, "b": 721.219833, "coord_origin": "TOPLEFT"}}]}, "text": "For insurance companies, a pressing use case would be claims processing. For markets and trading, clearing and settlement use cases are paramount."}, {"label": "picture", "id": 13, "page_no": 12, "cluster": {"id": 13, "label": "picture", "bbox": {"l": 63.857383728027344, "t": 77.41220092773438, "r": 547.4847412109375, "b": 350.3799743652344, "coord_origin": "TOPLEFT"}, "confidence": 0.9851271510124207, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "caption", "id": 1, "page_no": 12, "cluster": {"id": 1, "label": "caption", "bbox": {"l": 64.15190887451172, "t": 353.40753173828125, "r": 506.3805236816406, "b": 362.9499206542969, "coord_origin": "TOPLEFT"}, "confidence": 0.9419980049133301, "cells": [{"id": 1, "text": "Figure 7 Developing, training, and deploying an AI model on Cloud Pak for Data on IBM Z and IBM LinuxONE", "bbox": {"l": 64.800003, "t": 354.01801, "r": 505.42822, "b": 362.34302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 7 Developing, training, and deploying an AI model on Cloud Pak for Data on IBM Z and IBM LinuxONE"}, {"label": "text", "id": 2, "page_no": 12, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.55064392089844, "t": 375.4695739746094, "r": 492.94083, "b": 385.46099853515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9363874197006226, "cells": [{"id": 2, "text": "In summary, here are some of the reasons why you should choose AI on IBM Z: ", "bbox": {"l": 136.8, "t": 376.00872999999996, "r": 492.94083, "b": 385.22171, "coord_origin": "TOPLEFT"}}]}, "text": "In summary, here are some of the reasons why you should choose AI on IBM Z:"}, {"label": "list_item", "id": 3, "page_no": 12, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 135.7388458251953, "t": 392.1660461425781, "r": 413.40018, "b": 402.2774658203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9464669823646545, "cells": [{"id": 3, "text": "GLYPH", "bbox": {"l": 136.8, "t": 393.13791, "r": 141.78, "b": 401.91269000000005, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "World-class AI inference platform for enterprise workloads: ", "bbox": {"l": 151.20016, "t": 392.98853, "r": 413.40018, "b": 402.20151, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH World-class AI inference platform for enterprise workloads:"}, {"label": "list_item", "id": 4, "page_no": 12, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 151.22914123535156, "t": 409.4760437011719, "r": 526.18811, "b": 431.24091, "coord_origin": "TOPLEFT"}, "confidence": 0.9700906872749329, "cells": [{"id": 5, "text": "-", "bbox": {"l": 152.03979, "t": 410.02811, "r": 157.60942, "b": 419.24109, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Embedded accelerators: A centralized on-chip AI accelerator that is shared by all ", "bbox": {"l": 165.59933, "t": 410.02811, "r": 526.18811, "b": 419.24109, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "cores.", "bbox": {"l": 165.59933, "t": 422.02792, "r": 192.78615, "b": 431.24091, "coord_origin": "TOPLEFT"}}]}, "text": "-Embedded accelerators: A centralized on-chip AI accelerator that is shared by all cores."}, {"label": "list_item", "id": 5, "page_no": 12, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 151.42306518554688, "t": 438.09356689453125, "r": 547.24652, "b": 460.22052, "coord_origin": "TOPLEFT"}, "confidence": 0.9732586741447449, "cells": [{"id": 8, "text": "-", "bbox": {"l": 152.03979, "t": 439.00772, "r": 157.61043, "b": 448.2207, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Industry standard AI ecosystem: Many industry open-source data science frameworks ", "bbox": {"l": 165.59935, "t": 439.00772, "r": 547.24652, "b": 448.2207, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "are available on the platform.", "bbox": {"l": 165.59933, "t": 451.00754, "r": 294.55841, "b": 460.22052, "coord_origin": "TOPLEFT"}}]}, "text": "-Industry standard AI ecosystem: Many industry open-source data science frameworks are available on the platform."}, {"label": "list_item", "id": 6, "page_no": 12, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 151.33360290527344, "t": 467.51483154296875, "r": 546.75769, "b": 489.2516174316406, "coord_origin": "TOPLEFT"}, "confidence": 0.9748732447624207, "cells": [{"id": 11, "text": "-", "bbox": {"l": 152.03979, "t": 467.98734, "r": 157.60843, "b": 477.20032, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Seamlessly integrate AI into existing enterprise workload stacks: Train anywhere, and ", "bbox": {"l": 165.59933, "t": 467.98734, "r": 546.75769, "b": 477.20032, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "then deploy on IBM Z.", "bbox": {"l": 165.59933, "t": 479.98715, "r": 263.37762, "b": 489.20013, "coord_origin": "TOPLEFT"}}]}, "text": "-Seamlessly integrate AI into existing enterprise workload stacks: Train anywhere, and then deploy on IBM Z."}, {"label": "list_item", "id": 7, "page_no": 12, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.7086639404297, "t": 496.2107238769531, "r": 490.03317, "b": 506.39105224609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9550834894180298, "cells": [{"id": 14, "text": "GLYPH", "bbox": {"l": 136.799, "t": 497.17612, "r": 141.77899, "b": 505.9509, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Security: Encrypted memory, and improved trusted execution environments. ", "bbox": {"l": 151.19916, "t": 497.02673, "r": 490.03317, "b": 506.23972, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Security: Encrypted memory, and improved trusted execution environments."}, {"label": "list_item", "id": 8, "page_no": 12, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.6390838623047, "t": 513.5339965820312, "r": 547.27051, "b": 535.7632446289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9789533019065857, "cells": [{"id": 16, "text": "GLYPH", "bbox": {"l": 136.799, "t": 514.15591, "r": 141.77899, "b": 522.93069, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Sustainability: Reduce your energy consumption with real-time monitoring tools about the ", "bbox": {"l": 151.19916, "t": 514.00653, "r": 547.27051, "b": 523.21951, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "energy consumption of the system.", "bbox": {"l": 151.19916, "t": 526.00635, "r": 306.23645, "b": 535.21933, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Sustainability: Reduce your energy consumption with real-time monitoring tools about the energy consumption of the system."}, {"label": "section_header", "id": 9, "page_no": 12, "cluster": {"id": 9, "label": "section_header", "bbox": {"l": 64.31088256835938, "t": 562.8890380859375, "r": 161.74744, "b": 578.46362, "coord_origin": "TOPLEFT"}, "confidence": 0.9544580578804016, "cells": [{"id": 19, "text": "AI use cases", "bbox": {"l": 64.800003, "t": 563.70062, "r": 161.74744, "b": 578.46362, "coord_origin": "TOPLEFT"}}]}, "text": "AI use cases"}, {"label": "text", "id": 10, "page_no": 12, "cluster": {"id": 10, "label": "text", "bbox": {"l": 135.98568725585938, "t": 595.26904296875, "r": 533.90125, "b": 629.24123, "coord_origin": "TOPLEFT"}, "confidence": 0.9852948188781738, "cells": [{"id": 20, "text": "With billions of transactions per day in many of today\u2019s industries, it is key to get real-time ", "bbox": {"l": 136.8, "t": 596.02863, "r": 533.90125, "b": 605.24162, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "insights about what is happening in your data. AI on the IBM Z stack understands these ", "bbox": {"l": 136.79999, "t": 608.02843, "r": 525.72296, "b": 617.2414200000001, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "situations, and it delivers in-transaction inference in real time and at scale.", "bbox": {"l": 136.79999, "t": 620.02823, "r": 463.9240699999999, "b": 629.24123, "coord_origin": "TOPLEFT"}}]}, "text": "With billions of transactions per day in many of today\u2019s industries, it is key to get real-time insights about what is happening in your data. AI on the IBM Z stack understands these situations, and it delivers in-transaction inference in real time and at scale."}, {"label": "text", "id": 11, "page_no": 12, "cluster": {"id": 11, "label": "text", "bbox": {"l": 135.95875549316406, "t": 641.30712890625, "r": 547.24664, "b": 687.2891845703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9874392151832581, "cells": [{"id": 23, "text": "Core banking solutions running on IBM Z that are involved in processing inbound transactions ", "bbox": {"l": 136.79999, "t": 641.98804, "r": 547.24664, "b": 651.20103, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "need real-time fraud detection to prevent fraud. Other types of possible use cases might be ", "bbox": {"l": 136.79999, "t": 653.98784, "r": 541.79242, "b": 663.20084, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "credit risk analysis, anti-money laundering, loan approval, fraud detection in payments, and ", "bbox": {"l": 136.79999, "t": 665.98764, "r": 541.78253, "b": 675.20065, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "instant payments. ", "bbox": {"l": 136.79999, "t": 677.98745, "r": 217.88634, "b": 687.20045, "coord_origin": "TOPLEFT"}}]}, "text": "Core banking solutions running on IBM Z that are involved in processing inbound transactions need real-time fraud detection to prevent fraud. Other types of possible use cases might be credit risk analysis, anti-money laundering, loan approval, fraud detection in payments, and instant payments."}, {"label": "text", "id": 12, "page_no": 12, "cluster": {"id": 12, "label": "text", "bbox": {"l": 136.34823608398438, "t": 699.2769165039062, "r": 547.31128, "b": 721.6598510742188, "coord_origin": "TOPLEFT"}, "confidence": 0.9817102551460266, "cells": [{"id": 27, "text": "For insurance companies, a pressing use case would be claims processing. For markets and ", "bbox": {"l": 136.79999, "t": 700.007019, "r": 547.31128, "b": 709.220024, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "trading, clearing and settlement use cases are paramount. ", "bbox": {"l": 136.79999, "t": 712.006828, "r": 397.38748, "b": 721.219833, "coord_origin": "TOPLEFT"}}]}, "text": "For insurance companies, a pressing use case would be claims processing. For markets and trading, clearing and settlement use cases are paramount."}, {"label": "picture", "id": 13, "page_no": 12, "cluster": {"id": 13, "label": "picture", "bbox": {"l": 63.857383728027344, "t": 77.41220092773438, "r": 547.4847412109375, "b": 350.3799743652344, "coord_origin": "TOPLEFT"}, "confidence": 0.9851271510124207, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 12, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 535.8191528320312, "t": 754.3023071289062, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9041211009025574, "cells": [{"id": 0, "text": "11", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "11"}]}}, {"page_no": 13, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "12 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "For the health care industry, medical image processing (such as MRIs and x-rays), skin ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 525.18512, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "cancer detection, and patient monitoring activities such as infant motion analysis, is ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 507.30304, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "important. ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 183.95863, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "For the airline industry, processes such as air traffic management, flight management ", "bbox": {"l": 136.8, "t": 117.52788999999996, "r": 516.80676, "b": 126.74090999999987, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "systems, and flight maintenance predictions are use cases that are ideal candidates for using ", "bbox": {"l": 136.8, "t": 129.52770999999996, "r": 547.31134, "b": 138.74072, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "AI on IBM Z. ", "bbox": {"l": 136.8, "t": 141.52752999999996, "r": 195.16162, "b": 150.74054, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "In the following sections, we describe the following use cases: ", "bbox": {"l": 136.8, "t": 163.4873, "r": 413.42313, "b": 172.70032000000003, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 180.67627000000005, "r": 141.78, "b": 189.45105, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "\u201cUse case 1: Responsible AI augmented with risk and regulatory compliance\u201d on page 12", "bbox": {"l": 151.20016, "t": 180.52686000000006, "r": 545.1839, "b": 189.73987, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "AI model lifecycle governance, risk management, and regulatory compliance are key to ", "bbox": {"l": 151.20016, "t": 197.50665000000004, "r": 538.44098, "b": 206.71966999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "the success of the enterprises. It is imperative to adopt a typical AI model lifecycle to ", "bbox": {"l": 151.20016, "t": 209.50647000000004, "r": 526.64929, "b": 218.71947999999998, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "protect new end-to-end risks. ", "bbox": {"l": 151.20016, "t": 221.50629000000004, "r": 282.7309, "b": 230.71929999999998, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "GLYPH", "bbox": {"l": 136.8, "t": 238.63549999999998, "r": 141.78, "b": 247.41027999999994, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "\u201cUse case 2: Credit default risk assessment\u201d on page 22 ", "bbox": {"l": 151.20016, "t": 238.48608000000002, "r": 402.90234, "b": 247.69910000000004, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Core banking solutions running on IBM Z that are involved in processing inbound ", "bbox": {"l": 151.20016, "t": 255.52562999999998, "r": 511.25512999999995, "b": 264.73865, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "transactions need real-time fraud detection to prevent fraud. Other types of possible use ", "bbox": {"l": 151.20016, "t": 267.52545, "r": 542.90094, "b": 276.73846000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "cases might be credit risk analysis, anti-money laundering, loan approval, fraud detection ", "bbox": {"l": 151.20016, "t": 279.52527, "r": 547.2406, "b": 288.73828, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "in payments, and instant payments.", "bbox": {"l": 151.20016, "t": 291.52512, "r": 308.37991, "b": 300.7381, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "GLYPH", "bbox": {"l": 136.8, "t": 308.6543, "r": 141.78, "b": 317.42908, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "\u201cUse case 3: Clearing and settlement\u201d on page 25", "bbox": {"l": 151.20016, "t": 308.50491, "r": 371.7962, "b": 317.7179, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "The use of AI can help to predict which trades or transactions have high risk exposures, ", "bbox": {"l": 151.20016, "t": 325.48471, "r": 541.1402, "b": 334.69768999999997, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "and propose solutions for a more efficient settlement process.", "bbox": {"l": 151.20018, "t": 337.48453, "r": 424.07242, "b": 346.6975100000001, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 354.67349, "r": 141.78001, "b": 363.44827, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "\u201cUse case 4: Remaining Useful Life of an aircraft engine\u201d on page 27", "bbox": {"l": 151.20018, "t": 354.52411, "r": 455.18243, "b": 363.73709, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "We describe how AI can help to avoid unplanned aircraft downtime by determining the ", "bbox": {"l": 151.20018, "t": 371.50391, "r": 534.64014, "b": 380.71689, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "remaining time or cycles that an aircraft engine is likely to operate before failure.", "bbox": {"l": 151.20018, "t": 383.50371999999993, "r": 505.18069, "b": 392.7167099999999, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 400.63290000000006, "r": 141.78001, "b": 409.40767999999997, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "\u201cUse case 5: AI-powered video analytics on an infant\u2019s motions for health prediction\u201d on ", "bbox": {"l": 151.20018, "t": 400.48352, "r": 539.65314, "b": 409.6965, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "page 30", "bbox": {"l": 151.20018, "t": 412.48333999999994, "r": 187.31914, "b": 421.69632, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "In this section, we describe how AI can predict an infant\u2019s health conditions by monitoring ", "bbox": {"l": 151.20018, "t": 429.52292, "r": 547.24268, "b": 438.7359, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "real-time body movements.", "bbox": {"l": 151.20018, "t": 441.52274, "r": 271.72714, "b": 450.73572, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Use case 1: Responsible AI augmented with risk and regulatory ", "bbox": {"l": 64.800003, "t": 479.2207, "r": 547.25647, "b": 493.9837, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "compliance", "bbox": {"l": 64.800003, "t": 498.24023, "r": 152.77151, "b": 513.00323, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Advancement in AI is changing the world, and organizations must adopt AI to embrace new ", "bbox": {"l": 136.8, "t": 530.50861, "r": 542.87628, "b": 539.72162, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "challenges daily. Many enterprises see tremendous value in adopting AI and ML technologies ", "bbox": {"l": 136.8, "t": 542.50842, "r": 547.17877, "b": 551.72142, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "while establishing organization trust in the models, underlying data, and the process to be ", "bbox": {"l": 136.79999, "t": 554.5082199999999, "r": 535.17603, "b": 563.72122, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "followed. An AI model lifecycle can be a daunting task.", "bbox": {"l": 136.79999, "t": 566.50803, "r": 377.95047, "b": 575.72102, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "How mature is your AI governance? In this section, we provide a use case demonstrating the ", "bbox": {"l": 136.79999, "t": 588.52759, "r": 547.24249, "b": 597.74059, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "trustworthiness of AI and its importance in daily monitoring. ", "bbox": {"l": 136.79999, "t": 600.52739, "r": 400.68033, "b": 609.7403899999999, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Industry challenges", "bbox": {"l": 64.800003, "t": 630.35472, "r": 186.7186, "b": 642.34273, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Here are the three main reasons why organizations struggle with the adoption of AI: ", "bbox": {"l": 136.8, "t": 656.5086200000001, "r": 508.98724000000004, "b": 665.72162, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "GLYPH", "bbox": {"l": 136.8, "t": 673.69759, "r": 141.78, "b": 682.47234, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Scaling with growing regulations", "bbox": {"l": 151.20016, "t": 673.54818, "r": 293.96283, "b": 682.76118, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "GLYPH", "bbox": {"l": 136.8, "t": 690.6774, "r": 141.78, "b": 699.4521560000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Lack of confidence in operationalized AI (making responsible AI)", "bbox": {"l": 151.20016, "t": 690.52799, "r": 435.72745, "b": 699.740997, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "GLYPH", "bbox": {"l": 136.8, "t": 707.657211, "r": 141.78, "b": 716.431969, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "Challenges around managing the risk throughout the entire AI workflow", "bbox": {"l": 151.20016, "t": 707.507805, "r": 465.6782799999999, "b": 716.72081, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.53218078613281, "t": 754.509033203125, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9160951375961304, "cells": [{"id": 0, "text": "12 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.2241439819336, "t": 754.7615356445312, "r": 267.0744, "b": 764.1396484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9570255279541016, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 136.15476989746094, "t": 70.64640045166016, "r": 525.18512, "b": 104.7277603149414, "coord_origin": "TOPLEFT"}, "confidence": 0.9839752912521362, "cells": [{"id": 2, "text": "For the health care industry, medical image processing (such as MRIs and x-rays), skin ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 525.18512, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "cancer detection, and patient monitoring activities such as infant motion analysis, is ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 507.30304, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "important. ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 183.95863, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.8750762939453, "t": 116.78321838378906, "r": 547.31134, "b": 150.74054, "coord_origin": "TOPLEFT"}, "confidence": 0.9775494337081909, "cells": [{"id": 5, "text": "For the airline industry, processes such as air traffic management, flight management ", "bbox": {"l": 136.8, "t": 117.52788999999996, "r": 516.80676, "b": 126.74090999999987, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "systems, and flight maintenance predictions are use cases that are ideal candidates for using ", "bbox": {"l": 136.8, "t": 129.52770999999996, "r": 547.31134, "b": 138.74072, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "AI on IBM Z. ", "bbox": {"l": 136.8, "t": 141.52752999999996, "r": 195.16162, "b": 150.74054, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 136.158935546875, "t": 162.72833251953125, "r": 413.42313, "b": 172.92796325683594, "coord_origin": "TOPLEFT"}, "confidence": 0.9381385445594788, "cells": [{"id": 8, "text": "In the following sections, we describe the following use cases: ", "bbox": {"l": 136.8, "t": 163.4873, "r": 413.42313, "b": 172.70032000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 135.51185607910156, "t": 180.31353759765625, "r": 545.1839, "b": 230.8561553955078, "coord_origin": "TOPLEFT"}, "confidence": 0.700736403465271, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 180.67627000000005, "r": 141.78, "b": 189.45105, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "\u201cUse case 1: Responsible AI augmented with risk and regulatory compliance\u201d on page 12", "bbox": {"l": 151.20016, "t": 180.52686000000006, "r": 545.1839, "b": 189.73987, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "AI model lifecycle governance, risk management, and regulatory compliance are key to ", "bbox": {"l": 151.20016, "t": 197.50665000000004, "r": 538.44098, "b": 206.71966999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "the success of the enterprises. It is imperative to adopt a typical AI model lifecycle to ", "bbox": {"l": 151.20016, "t": 209.50647000000004, "r": 526.64929, "b": 218.71947999999998, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "protect new end-to-end risks. ", "bbox": {"l": 151.20016, "t": 221.50629000000004, "r": 282.7309, "b": 230.71929999999998, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.6671600341797, "t": 237.22537231445312, "r": 402.90234, "b": 247.7976837158203, "coord_origin": "TOPLEFT"}, "confidence": 0.927428662776947, "cells": [{"id": 14, "text": "GLYPH", "bbox": {"l": 136.8, "t": 238.63549999999998, "r": 141.78, "b": 247.41027999999994, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "\u201cUse case 2: Credit default risk assessment\u201d on page 22 ", "bbox": {"l": 151.20016, "t": 238.48608000000002, "r": 402.90234, "b": 247.69910000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 150.19342041015625, "t": 254.68844604492188, "r": 547.2406, "b": 301.0074157714844, "coord_origin": "TOPLEFT"}, "confidence": 0.817919135093689, "cells": [{"id": 16, "text": "Core banking solutions running on IBM Z that are involved in processing inbound ", "bbox": {"l": 151.20016, "t": 255.52562999999998, "r": 511.25512999999995, "b": 264.73865, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "transactions need real-time fraud detection to prevent fraud. Other types of possible use ", "bbox": {"l": 151.20016, "t": 267.52545, "r": 542.90094, "b": 276.73846000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "cases might be credit risk analysis, anti-money laundering, loan approval, fraud detection ", "bbox": {"l": 151.20016, "t": 279.52527, "r": 547.2406, "b": 288.73828, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "in payments, and instant payments.", "bbox": {"l": 151.20016, "t": 291.52512, "r": 308.37991, "b": 300.7381, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.68087768554688, "t": 307.4832763671875, "r": 371.7962, "b": 317.9508361816406, "coord_origin": "TOPLEFT"}, "confidence": 0.9381933212280273, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.8, "t": 308.6543, "r": 141.78, "b": 317.42908, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "\u201cUse case 3: Clearing and settlement\u201d on page 25", "bbox": {"l": 151.20016, "t": 308.50491, "r": 371.7962, "b": 317.7179, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 150.48846435546875, "t": 324.5227966308594, "r": 541.1402, "b": 346.9660339355469, "coord_origin": "TOPLEFT"}, "confidence": 0.7946481108665466, "cells": [{"id": 22, "text": "The use of AI can help to predict which trades or transactions have high risk exposures, ", "bbox": {"l": 151.20016, "t": 325.48471, "r": 541.1402, "b": 334.69768999999997, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "and propose solutions for a more efficient settlement process.", "bbox": {"l": 151.20018, "t": 337.48453, "r": 424.07242, "b": 346.6975100000001, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 135.71913146972656, "t": 353.8939514160156, "r": 455.3772277832031, "b": 364.2116394042969, "coord_origin": "TOPLEFT"}, "confidence": 0.896625280380249, "cells": [{"id": 24, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 354.67349, "r": 141.78001, "b": 363.44827, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "\u201cUse case 4: Remaining Useful Life of an aircraft engine\u201d on page 27", "bbox": {"l": 151.20018, "t": 354.52411, "r": 455.18243, "b": 363.73709, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 150.2084197998047, "t": 370.6900634765625, "r": 534.64014, "b": 392.9651794433594, "coord_origin": "TOPLEFT"}, "confidence": 0.7541017532348633, "cells": [{"id": 26, "text": "We describe how AI can help to avoid unplanned aircraft downtime by determining the ", "bbox": {"l": 151.20018, "t": 371.50391, "r": 534.64014, "b": 380.71689, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "remaining time or cycles that an aircraft engine is likely to operate before failure.", "bbox": {"l": 151.20018, "t": 383.50371999999993, "r": 505.18069, "b": 392.7167099999999, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "list_item", "bbox": {"l": 135.66246032714844, "t": 399.35772705078125, "r": 539.65314, "b": 421.6989440917969, "coord_origin": "TOPLEFT"}, "confidence": 0.9588227868080139, "cells": [{"id": 28, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 400.63290000000006, "r": 141.78001, "b": 409.40767999999997, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "\u201cUse case 5: AI-powered video analytics on an infant\u2019s motions for health prediction\u201d on ", "bbox": {"l": 151.20018, "t": 400.48352, "r": 539.65314, "b": 409.6965, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "page 30", "bbox": {"l": 151.20018, "t": 412.48333999999994, "r": 187.31914, "b": 421.69632, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "list_item", "bbox": {"l": 150.8683624267578, "t": 428.65521240234375, "r": 547.24268, "b": 451.055908203125, "coord_origin": "TOPLEFT"}, "confidence": 0.7970486879348755, "cells": [{"id": 31, "text": "In this section, we describe how AI can predict an infant\u2019s health conditions by monitoring ", "bbox": {"l": 151.20018, "t": 429.52292, "r": 547.24268, "b": 438.7359, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "real-time body movements.", "bbox": {"l": 151.20018, "t": 441.52274, "r": 271.72714, "b": 450.73572, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "section_header", "bbox": {"l": 64.4876708984375, "t": 478.11065673828125, "r": 547.25647, "b": 513.474365234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9484166502952576, "cells": [{"id": 33, "text": "Use case 1: Responsible AI augmented with risk and regulatory ", "bbox": {"l": 64.800003, "t": 479.2207, "r": 547.25647, "b": 493.9837, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "compliance", "bbox": {"l": 64.800003, "t": 498.24023, "r": 152.77151, "b": 513.00323, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "text", "bbox": {"l": 135.6639404296875, "t": 529.3472290039062, "r": 547.17877, "b": 575.7841186523438, "coord_origin": "TOPLEFT"}, "confidence": 0.9858030080795288, "cells": [{"id": 35, "text": "Advancement in AI is changing the world, and organizations must adopt AI to embrace new ", "bbox": {"l": 136.8, "t": 530.50861, "r": 542.87628, "b": 539.72162, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "challenges daily. Many enterprises see tremendous value in adopting AI and ML technologies ", "bbox": {"l": 136.8, "t": 542.50842, "r": 547.17877, "b": 551.72142, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "while establishing organization trust in the models, underlying data, and the process to be ", "bbox": {"l": 136.79999, "t": 554.5082199999999, "r": 535.17603, "b": 563.72122, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "followed. An AI model lifecycle can be a daunting task.", "bbox": {"l": 136.79999, "t": 566.50803, "r": 377.95047, "b": 575.72102, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "text", "bbox": {"l": 136.313232421875, "t": 588.0188598632812, "r": 547.24249, "b": 610.3685913085938, "coord_origin": "TOPLEFT"}, "confidence": 0.9748781323432922, "cells": [{"id": 39, "text": "How mature is your AI governance? In this section, we provide a use case demonstrating the ", "bbox": {"l": 136.79999, "t": 588.52759, "r": 547.24249, "b": 597.74059, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "trustworthiness of AI and its importance in daily monitoring. ", "bbox": {"l": 136.79999, "t": 600.52739, "r": 400.68033, "b": 609.7403899999999, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "section_header", "bbox": {"l": 64.53734588623047, "t": 629.2350463867188, "r": 186.7186, "b": 642.421142578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9630159139633179, "cells": [{"id": 41, "text": "Industry challenges", "bbox": {"l": 64.800003, "t": 630.35472, "r": 186.7186, "b": 642.34273, "coord_origin": "TOPLEFT"}}]}, {"id": 18, "label": "text", "bbox": {"l": 136.22996520996094, "t": 655.5369873046875, "r": 508.98724000000004, "b": 665.72162, "coord_origin": "TOPLEFT"}, "confidence": 0.9516966938972473, "cells": [{"id": 42, "text": "Here are the three main reasons why organizations struggle with the adoption of AI: ", "bbox": {"l": 136.8, "t": 656.5086200000001, "r": 508.98724000000004, "b": 665.72162, "coord_origin": "TOPLEFT"}}]}, {"id": 19, "label": "list_item", "bbox": {"l": 135.8061065673828, "t": 672.6024780273438, "r": 293.9800720214844, "b": 682.9390869140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9561625123023987, "cells": [{"id": 43, "text": "GLYPH", "bbox": {"l": 136.8, "t": 673.69759, "r": 141.78, "b": 682.47234, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Scaling with growing regulations", "bbox": {"l": 151.20016, "t": 673.54818, "r": 293.96283, "b": 682.76118, "coord_origin": "TOPLEFT"}}]}, {"id": 20, "label": "list_item", "bbox": {"l": 135.63792419433594, "t": 689.974609375, "r": 435.72745, "b": 700.486083984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9557024240493774, "cells": [{"id": 45, "text": "GLYPH", "bbox": {"l": 136.8, "t": 690.6774, "r": 141.78, "b": 699.4521560000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Lack of confidence in operationalized AI (making responsible AI)", "bbox": {"l": 151.20016, "t": 690.52799, "r": 435.72745, "b": 699.740997, "coord_origin": "TOPLEFT"}}]}, {"id": 21, "label": "list_item", "bbox": {"l": 135.60543823242188, "t": 706.6790161132812, "r": 466.06842041015625, "b": 717.1160888671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9607930183410645, "cells": [{"id": 47, "text": "GLYPH", "bbox": {"l": 136.8, "t": 707.657211, "r": 141.78, "b": 716.431969, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "Challenges around managing the risk throughout the entire AI workflow", "bbox": {"l": 151.20016, "t": 707.507805, "r": 465.6782799999999, "b": 716.72081, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 13, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.53218078613281, "t": 754.509033203125, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9160951375961304, "cells": [{"id": 0, "text": "12 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "12"}, {"label": "page_footer", "id": 1, "page_no": 13, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.2241439819336, "t": 754.7615356445312, "r": 267.0744, "b": 764.1396484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9570255279541016, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"label": "text", "id": 2, "page_no": 13, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.15476989746094, "t": 70.64640045166016, "r": 525.18512, "b": 104.7277603149414, "coord_origin": "TOPLEFT"}, "confidence": 0.9839752912521362, "cells": [{"id": 2, "text": "For the health care industry, medical image processing (such as MRIs and x-rays), skin ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 525.18512, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "cancer detection, and patient monitoring activities such as infant motion analysis, is ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 507.30304, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "important. ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 183.95863, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}]}, "text": "For the health care industry, medical image processing (such as MRIs and x-rays), skin cancer detection, and patient monitoring activities such as infant motion analysis, is important."}, {"label": "text", "id": 3, "page_no": 13, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.8750762939453, "t": 116.78321838378906, "r": 547.31134, "b": 150.74054, "coord_origin": "TOPLEFT"}, "confidence": 0.9775494337081909, "cells": [{"id": 5, "text": "For the airline industry, processes such as air traffic management, flight management ", "bbox": {"l": 136.8, "t": 117.52788999999996, "r": 516.80676, "b": 126.74090999999987, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "systems, and flight maintenance predictions are use cases that are ideal candidates for using ", "bbox": {"l": 136.8, "t": 129.52770999999996, "r": 547.31134, "b": 138.74072, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "AI on IBM Z. ", "bbox": {"l": 136.8, "t": 141.52752999999996, "r": 195.16162, "b": 150.74054, "coord_origin": "TOPLEFT"}}]}, "text": "For the airline industry, processes such as air traffic management, flight management systems, and flight maintenance predictions are use cases that are ideal candidates for using AI on IBM Z."}, {"label": "text", "id": 4, "page_no": 13, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.158935546875, "t": 162.72833251953125, "r": 413.42313, "b": 172.92796325683594, "coord_origin": "TOPLEFT"}, "confidence": 0.9381385445594788, "cells": [{"id": 8, "text": "In the following sections, we describe the following use cases: ", "bbox": {"l": 136.8, "t": 163.4873, "r": 413.42313, "b": 172.70032000000003, "coord_origin": "TOPLEFT"}}]}, "text": "In the following sections, we describe the following use cases:"}, {"label": "list_item", "id": 5, "page_no": 13, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.51185607910156, "t": 180.31353759765625, "r": 545.1839, "b": 230.8561553955078, "coord_origin": "TOPLEFT"}, "confidence": 0.700736403465271, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 180.67627000000005, "r": 141.78, "b": 189.45105, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "\u201cUse case 1: Responsible AI augmented with risk and regulatory compliance\u201d on page 12", "bbox": {"l": 151.20016, "t": 180.52686000000006, "r": 545.1839, "b": 189.73987, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "AI model lifecycle governance, risk management, and regulatory compliance are key to ", "bbox": {"l": 151.20016, "t": 197.50665000000004, "r": 538.44098, "b": 206.71966999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "the success of the enterprises. It is imperative to adopt a typical AI model lifecycle to ", "bbox": {"l": 151.20016, "t": 209.50647000000004, "r": 526.64929, "b": 218.71947999999998, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "protect new end-to-end risks. ", "bbox": {"l": 151.20016, "t": 221.50629000000004, "r": 282.7309, "b": 230.71929999999998, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH \u201cUse case 1: Responsible AI augmented with risk and regulatory compliance\u201d on page 12 AI model lifecycle governance, risk management, and regulatory compliance are key to the success of the enterprises. It is imperative to adopt a typical AI model lifecycle to protect new end-to-end risks."}, {"label": "list_item", "id": 6, "page_no": 13, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.6671600341797, "t": 237.22537231445312, "r": 402.90234, "b": 247.7976837158203, "coord_origin": "TOPLEFT"}, "confidence": 0.927428662776947, "cells": [{"id": 14, "text": "GLYPH", "bbox": {"l": 136.8, "t": 238.63549999999998, "r": 141.78, "b": 247.41027999999994, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "\u201cUse case 2: Credit default risk assessment\u201d on page 22 ", "bbox": {"l": 151.20016, "t": 238.48608000000002, "r": 402.90234, "b": 247.69910000000004, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH \u201cUse case 2: Credit default risk assessment\u201d on page 22"}, {"label": "list_item", "id": 7, "page_no": 13, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 150.19342041015625, "t": 254.68844604492188, "r": 547.2406, "b": 301.0074157714844, "coord_origin": "TOPLEFT"}, "confidence": 0.817919135093689, "cells": [{"id": 16, "text": "Core banking solutions running on IBM Z that are involved in processing inbound ", "bbox": {"l": 151.20016, "t": 255.52562999999998, "r": 511.25512999999995, "b": 264.73865, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "transactions need real-time fraud detection to prevent fraud. Other types of possible use ", "bbox": {"l": 151.20016, "t": 267.52545, "r": 542.90094, "b": 276.73846000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "cases might be credit risk analysis, anti-money laundering, loan approval, fraud detection ", "bbox": {"l": 151.20016, "t": 279.52527, "r": 547.2406, "b": 288.73828, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "in payments, and instant payments.", "bbox": {"l": 151.20016, "t": 291.52512, "r": 308.37991, "b": 300.7381, "coord_origin": "TOPLEFT"}}]}, "text": "Core banking solutions running on IBM Z that are involved in processing inbound transactions need real-time fraud detection to prevent fraud. Other types of possible use cases might be credit risk analysis, anti-money laundering, loan approval, fraud detection in payments, and instant payments."}, {"label": "list_item", "id": 8, "page_no": 13, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.68087768554688, "t": 307.4832763671875, "r": 371.7962, "b": 317.9508361816406, "coord_origin": "TOPLEFT"}, "confidence": 0.9381933212280273, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.8, "t": 308.6543, "r": 141.78, "b": 317.42908, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "\u201cUse case 3: Clearing and settlement\u201d on page 25", "bbox": {"l": 151.20016, "t": 308.50491, "r": 371.7962, "b": 317.7179, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH \u201cUse case 3: Clearing and settlement\u201d on page 25"}, {"label": "list_item", "id": 9, "page_no": 13, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 150.48846435546875, "t": 324.5227966308594, "r": 541.1402, "b": 346.9660339355469, "coord_origin": "TOPLEFT"}, "confidence": 0.7946481108665466, "cells": [{"id": 22, "text": "The use of AI can help to predict which trades or transactions have high risk exposures, ", "bbox": {"l": 151.20016, "t": 325.48471, "r": 541.1402, "b": 334.69768999999997, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "and propose solutions for a more efficient settlement process.", "bbox": {"l": 151.20018, "t": 337.48453, "r": 424.07242, "b": 346.6975100000001, "coord_origin": "TOPLEFT"}}]}, "text": "The use of AI can help to predict which trades or transactions have high risk exposures, and propose solutions for a more efficient settlement process."}, {"label": "list_item", "id": 10, "page_no": 13, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.71913146972656, "t": 353.8939514160156, "r": 455.3772277832031, "b": 364.2116394042969, "coord_origin": "TOPLEFT"}, "confidence": 0.896625280380249, "cells": [{"id": 24, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 354.67349, "r": 141.78001, "b": 363.44827, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "\u201cUse case 4: Remaining Useful Life of an aircraft engine\u201d on page 27", "bbox": {"l": 151.20018, "t": 354.52411, "r": 455.18243, "b": 363.73709, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH \u201cUse case 4: Remaining Useful Life of an aircraft engine\u201d on page 27"}, {"label": "list_item", "id": 11, "page_no": 13, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 150.2084197998047, "t": 370.6900634765625, "r": 534.64014, "b": 392.9651794433594, "coord_origin": "TOPLEFT"}, "confidence": 0.7541017532348633, "cells": [{"id": 26, "text": "We describe how AI can help to avoid unplanned aircraft downtime by determining the ", "bbox": {"l": 151.20018, "t": 371.50391, "r": 534.64014, "b": 380.71689, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "remaining time or cycles that an aircraft engine is likely to operate before failure.", "bbox": {"l": 151.20018, "t": 383.50371999999993, "r": 505.18069, "b": 392.7167099999999, "coord_origin": "TOPLEFT"}}]}, "text": "We describe how AI can help to avoid unplanned aircraft downtime by determining the remaining time or cycles that an aircraft engine is likely to operate before failure."}, {"label": "list_item", "id": 12, "page_no": 13, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 135.66246032714844, "t": 399.35772705078125, "r": 539.65314, "b": 421.6989440917969, "coord_origin": "TOPLEFT"}, "confidence": 0.9588227868080139, "cells": [{"id": 28, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 400.63290000000006, "r": 141.78001, "b": 409.40767999999997, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "\u201cUse case 5: AI-powered video analytics on an infant\u2019s motions for health prediction\u201d on ", "bbox": {"l": 151.20018, "t": 400.48352, "r": 539.65314, "b": 409.6965, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "page 30", "bbox": {"l": 151.20018, "t": 412.48333999999994, "r": 187.31914, "b": 421.69632, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH \u201cUse case 5: AI-powered video analytics on an infant\u2019s motions for health prediction\u201d on page 30"}, {"label": "list_item", "id": 13, "page_no": 13, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 150.8683624267578, "t": 428.65521240234375, "r": 547.24268, "b": 451.055908203125, "coord_origin": "TOPLEFT"}, "confidence": 0.7970486879348755, "cells": [{"id": 31, "text": "In this section, we describe how AI can predict an infant\u2019s health conditions by monitoring ", "bbox": {"l": 151.20018, "t": 429.52292, "r": 547.24268, "b": 438.7359, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "real-time body movements.", "bbox": {"l": 151.20018, "t": 441.52274, "r": 271.72714, "b": 450.73572, "coord_origin": "TOPLEFT"}}]}, "text": "In this section, we describe how AI can predict an infant\u2019s health conditions by monitoring real-time body movements."}, {"label": "section_header", "id": 14, "page_no": 13, "cluster": {"id": 14, "label": "section_header", "bbox": {"l": 64.4876708984375, "t": 478.11065673828125, "r": 547.25647, "b": 513.474365234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9484166502952576, "cells": [{"id": 33, "text": "Use case 1: Responsible AI augmented with risk and regulatory ", "bbox": {"l": 64.800003, "t": 479.2207, "r": 547.25647, "b": 493.9837, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "compliance", "bbox": {"l": 64.800003, "t": 498.24023, "r": 152.77151, "b": 513.00323, "coord_origin": "TOPLEFT"}}]}, "text": "Use case 1: Responsible AI augmented with risk and regulatory compliance"}, {"label": "text", "id": 15, "page_no": 13, "cluster": {"id": 15, "label": "text", "bbox": {"l": 135.6639404296875, "t": 529.3472290039062, "r": 547.17877, "b": 575.7841186523438, "coord_origin": "TOPLEFT"}, "confidence": 0.9858030080795288, "cells": [{"id": 35, "text": "Advancement in AI is changing the world, and organizations must adopt AI to embrace new ", "bbox": {"l": 136.8, "t": 530.50861, "r": 542.87628, "b": 539.72162, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "challenges daily. Many enterprises see tremendous value in adopting AI and ML technologies ", "bbox": {"l": 136.8, "t": 542.50842, "r": 547.17877, "b": 551.72142, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "while establishing organization trust in the models, underlying data, and the process to be ", "bbox": {"l": 136.79999, "t": 554.5082199999999, "r": 535.17603, "b": 563.72122, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "followed. An AI model lifecycle can be a daunting task.", "bbox": {"l": 136.79999, "t": 566.50803, "r": 377.95047, "b": 575.72102, "coord_origin": "TOPLEFT"}}]}, "text": "Advancement in AI is changing the world, and organizations must adopt AI to embrace new challenges daily. Many enterprises see tremendous value in adopting AI and ML technologies while establishing organization trust in the models, underlying data, and the process to be followed. An AI model lifecycle can be a daunting task."}, {"label": "text", "id": 16, "page_no": 13, "cluster": {"id": 16, "label": "text", "bbox": {"l": 136.313232421875, "t": 588.0188598632812, "r": 547.24249, "b": 610.3685913085938, "coord_origin": "TOPLEFT"}, "confidence": 0.9748781323432922, "cells": [{"id": 39, "text": "How mature is your AI governance? In this section, we provide a use case demonstrating the ", "bbox": {"l": 136.79999, "t": 588.52759, "r": 547.24249, "b": 597.74059, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "trustworthiness of AI and its importance in daily monitoring. ", "bbox": {"l": 136.79999, "t": 600.52739, "r": 400.68033, "b": 609.7403899999999, "coord_origin": "TOPLEFT"}}]}, "text": "How mature is your AI governance? In this section, we provide a use case demonstrating the trustworthiness of AI and its importance in daily monitoring."}, {"label": "section_header", "id": 17, "page_no": 13, "cluster": {"id": 17, "label": "section_header", "bbox": {"l": 64.53734588623047, "t": 629.2350463867188, "r": 186.7186, "b": 642.421142578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9630159139633179, "cells": [{"id": 41, "text": "Industry challenges", "bbox": {"l": 64.800003, "t": 630.35472, "r": 186.7186, "b": 642.34273, "coord_origin": "TOPLEFT"}}]}, "text": "Industry challenges"}, {"label": "text", "id": 18, "page_no": 13, "cluster": {"id": 18, "label": "text", "bbox": {"l": 136.22996520996094, "t": 655.5369873046875, "r": 508.98724000000004, "b": 665.72162, "coord_origin": "TOPLEFT"}, "confidence": 0.9516966938972473, "cells": [{"id": 42, "text": "Here are the three main reasons why organizations struggle with the adoption of AI: ", "bbox": {"l": 136.8, "t": 656.5086200000001, "r": 508.98724000000004, "b": 665.72162, "coord_origin": "TOPLEFT"}}]}, "text": "Here are the three main reasons why organizations struggle with the adoption of AI:"}, {"label": "list_item", "id": 19, "page_no": 13, "cluster": {"id": 19, "label": "list_item", "bbox": {"l": 135.8061065673828, "t": 672.6024780273438, "r": 293.9800720214844, "b": 682.9390869140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9561625123023987, "cells": [{"id": 43, "text": "GLYPH", "bbox": {"l": 136.8, "t": 673.69759, "r": 141.78, "b": 682.47234, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Scaling with growing regulations", "bbox": {"l": 151.20016, "t": 673.54818, "r": 293.96283, "b": 682.76118, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Scaling with growing regulations"}, {"label": "list_item", "id": 20, "page_no": 13, "cluster": {"id": 20, "label": "list_item", "bbox": {"l": 135.63792419433594, "t": 689.974609375, "r": 435.72745, "b": 700.486083984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9557024240493774, "cells": [{"id": 45, "text": "GLYPH", "bbox": {"l": 136.8, "t": 690.6774, "r": 141.78, "b": 699.4521560000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Lack of confidence in operationalized AI (making responsible AI)", "bbox": {"l": 151.20016, "t": 690.52799, "r": 435.72745, "b": 699.740997, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Lack of confidence in operationalized AI (making responsible AI)"}, {"label": "list_item", "id": 21, "page_no": 13, "cluster": {"id": 21, "label": "list_item", "bbox": {"l": 135.60543823242188, "t": 706.6790161132812, "r": 466.06842041015625, "b": 717.1160888671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9607930183410645, "cells": [{"id": 47, "text": "GLYPH", "bbox": {"l": 136.8, "t": 707.657211, "r": 141.78, "b": 716.431969, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "Challenges around managing the risk throughout the entire AI workflow", "bbox": {"l": 151.20016, "t": 707.507805, "r": 465.6782799999999, "b": 716.72081, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Challenges around managing the risk throughout the entire AI workflow"}], "body": [{"label": "text", "id": 2, "page_no": 13, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.15476989746094, "t": 70.64640045166016, "r": 525.18512, "b": 104.7277603149414, "coord_origin": "TOPLEFT"}, "confidence": 0.9839752912521362, "cells": [{"id": 2, "text": "For the health care industry, medical image processing (such as MRIs and x-rays), skin ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 525.18512, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "cancer detection, and patient monitoring activities such as infant motion analysis, is ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 507.30304, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "important. ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 183.95863, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}]}, "text": "For the health care industry, medical image processing (such as MRIs and x-rays), skin cancer detection, and patient monitoring activities such as infant motion analysis, is important."}, {"label": "text", "id": 3, "page_no": 13, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.8750762939453, "t": 116.78321838378906, "r": 547.31134, "b": 150.74054, "coord_origin": "TOPLEFT"}, "confidence": 0.9775494337081909, "cells": [{"id": 5, "text": "For the airline industry, processes such as air traffic management, flight management ", "bbox": {"l": 136.8, "t": 117.52788999999996, "r": 516.80676, "b": 126.74090999999987, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "systems, and flight maintenance predictions are use cases that are ideal candidates for using ", "bbox": {"l": 136.8, "t": 129.52770999999996, "r": 547.31134, "b": 138.74072, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "AI on IBM Z. ", "bbox": {"l": 136.8, "t": 141.52752999999996, "r": 195.16162, "b": 150.74054, "coord_origin": "TOPLEFT"}}]}, "text": "For the airline industry, processes such as air traffic management, flight management systems, and flight maintenance predictions are use cases that are ideal candidates for using AI on IBM Z."}, {"label": "text", "id": 4, "page_no": 13, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.158935546875, "t": 162.72833251953125, "r": 413.42313, "b": 172.92796325683594, "coord_origin": "TOPLEFT"}, "confidence": 0.9381385445594788, "cells": [{"id": 8, "text": "In the following sections, we describe the following use cases: ", "bbox": {"l": 136.8, "t": 163.4873, "r": 413.42313, "b": 172.70032000000003, "coord_origin": "TOPLEFT"}}]}, "text": "In the following sections, we describe the following use cases:"}, {"label": "list_item", "id": 5, "page_no": 13, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.51185607910156, "t": 180.31353759765625, "r": 545.1839, "b": 230.8561553955078, "coord_origin": "TOPLEFT"}, "confidence": 0.700736403465271, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 180.67627000000005, "r": 141.78, "b": 189.45105, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "\u201cUse case 1: Responsible AI augmented with risk and regulatory compliance\u201d on page 12", "bbox": {"l": 151.20016, "t": 180.52686000000006, "r": 545.1839, "b": 189.73987, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "AI model lifecycle governance, risk management, and regulatory compliance are key to ", "bbox": {"l": 151.20016, "t": 197.50665000000004, "r": 538.44098, "b": 206.71966999999995, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "the success of the enterprises. It is imperative to adopt a typical AI model lifecycle to ", "bbox": {"l": 151.20016, "t": 209.50647000000004, "r": 526.64929, "b": 218.71947999999998, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "protect new end-to-end risks. ", "bbox": {"l": 151.20016, "t": 221.50629000000004, "r": 282.7309, "b": 230.71929999999998, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH \u201cUse case 1: Responsible AI augmented with risk and regulatory compliance\u201d on page 12 AI model lifecycle governance, risk management, and regulatory compliance are key to the success of the enterprises. It is imperative to adopt a typical AI model lifecycle to protect new end-to-end risks."}, {"label": "list_item", "id": 6, "page_no": 13, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.6671600341797, "t": 237.22537231445312, "r": 402.90234, "b": 247.7976837158203, "coord_origin": "TOPLEFT"}, "confidence": 0.927428662776947, "cells": [{"id": 14, "text": "GLYPH", "bbox": {"l": 136.8, "t": 238.63549999999998, "r": 141.78, "b": 247.41027999999994, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "\u201cUse case 2: Credit default risk assessment\u201d on page 22 ", "bbox": {"l": 151.20016, "t": 238.48608000000002, "r": 402.90234, "b": 247.69910000000004, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH \u201cUse case 2: Credit default risk assessment\u201d on page 22"}, {"label": "list_item", "id": 7, "page_no": 13, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 150.19342041015625, "t": 254.68844604492188, "r": 547.2406, "b": 301.0074157714844, "coord_origin": "TOPLEFT"}, "confidence": 0.817919135093689, "cells": [{"id": 16, "text": "Core banking solutions running on IBM Z that are involved in processing inbound ", "bbox": {"l": 151.20016, "t": 255.52562999999998, "r": 511.25512999999995, "b": 264.73865, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "transactions need real-time fraud detection to prevent fraud. Other types of possible use ", "bbox": {"l": 151.20016, "t": 267.52545, "r": 542.90094, "b": 276.73846000000003, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "cases might be credit risk analysis, anti-money laundering, loan approval, fraud detection ", "bbox": {"l": 151.20016, "t": 279.52527, "r": 547.2406, "b": 288.73828, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "in payments, and instant payments.", "bbox": {"l": 151.20016, "t": 291.52512, "r": 308.37991, "b": 300.7381, "coord_origin": "TOPLEFT"}}]}, "text": "Core banking solutions running on IBM Z that are involved in processing inbound transactions need real-time fraud detection to prevent fraud. Other types of possible use cases might be credit risk analysis, anti-money laundering, loan approval, fraud detection in payments, and instant payments."}, {"label": "list_item", "id": 8, "page_no": 13, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.68087768554688, "t": 307.4832763671875, "r": 371.7962, "b": 317.9508361816406, "coord_origin": "TOPLEFT"}, "confidence": 0.9381933212280273, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.8, "t": 308.6543, "r": 141.78, "b": 317.42908, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "\u201cUse case 3: Clearing and settlement\u201d on page 25", "bbox": {"l": 151.20016, "t": 308.50491, "r": 371.7962, "b": 317.7179, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH \u201cUse case 3: Clearing and settlement\u201d on page 25"}, {"label": "list_item", "id": 9, "page_no": 13, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 150.48846435546875, "t": 324.5227966308594, "r": 541.1402, "b": 346.9660339355469, "coord_origin": "TOPLEFT"}, "confidence": 0.7946481108665466, "cells": [{"id": 22, "text": "The use of AI can help to predict which trades or transactions have high risk exposures, ", "bbox": {"l": 151.20016, "t": 325.48471, "r": 541.1402, "b": 334.69768999999997, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "and propose solutions for a more efficient settlement process.", "bbox": {"l": 151.20018, "t": 337.48453, "r": 424.07242, "b": 346.6975100000001, "coord_origin": "TOPLEFT"}}]}, "text": "The use of AI can help to predict which trades or transactions have high risk exposures, and propose solutions for a more efficient settlement process."}, {"label": "list_item", "id": 10, "page_no": 13, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.71913146972656, "t": 353.8939514160156, "r": 455.3772277832031, "b": 364.2116394042969, "coord_origin": "TOPLEFT"}, "confidence": 0.896625280380249, "cells": [{"id": 24, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 354.67349, "r": 141.78001, "b": 363.44827, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "\u201cUse case 4: Remaining Useful Life of an aircraft engine\u201d on page 27", "bbox": {"l": 151.20018, "t": 354.52411, "r": 455.18243, "b": 363.73709, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH \u201cUse case 4: Remaining Useful Life of an aircraft engine\u201d on page 27"}, {"label": "list_item", "id": 11, "page_no": 13, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 150.2084197998047, "t": 370.6900634765625, "r": 534.64014, "b": 392.9651794433594, "coord_origin": "TOPLEFT"}, "confidence": 0.7541017532348633, "cells": [{"id": 26, "text": "We describe how AI can help to avoid unplanned aircraft downtime by determining the ", "bbox": {"l": 151.20018, "t": 371.50391, "r": 534.64014, "b": 380.71689, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "remaining time or cycles that an aircraft engine is likely to operate before failure.", "bbox": {"l": 151.20018, "t": 383.50371999999993, "r": 505.18069, "b": 392.7167099999999, "coord_origin": "TOPLEFT"}}]}, "text": "We describe how AI can help to avoid unplanned aircraft downtime by determining the remaining time or cycles that an aircraft engine is likely to operate before failure."}, {"label": "list_item", "id": 12, "page_no": 13, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 135.66246032714844, "t": 399.35772705078125, "r": 539.65314, "b": 421.6989440917969, "coord_origin": "TOPLEFT"}, "confidence": 0.9588227868080139, "cells": [{"id": 28, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 400.63290000000006, "r": 141.78001, "b": 409.40767999999997, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "\u201cUse case 5: AI-powered video analytics on an infant\u2019s motions for health prediction\u201d on ", "bbox": {"l": 151.20018, "t": 400.48352, "r": 539.65314, "b": 409.6965, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "page 30", "bbox": {"l": 151.20018, "t": 412.48333999999994, "r": 187.31914, "b": 421.69632, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH \u201cUse case 5: AI-powered video analytics on an infant\u2019s motions for health prediction\u201d on page 30"}, {"label": "list_item", "id": 13, "page_no": 13, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 150.8683624267578, "t": 428.65521240234375, "r": 547.24268, "b": 451.055908203125, "coord_origin": "TOPLEFT"}, "confidence": 0.7970486879348755, "cells": [{"id": 31, "text": "In this section, we describe how AI can predict an infant\u2019s health conditions by monitoring ", "bbox": {"l": 151.20018, "t": 429.52292, "r": 547.24268, "b": 438.7359, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "real-time body movements.", "bbox": {"l": 151.20018, "t": 441.52274, "r": 271.72714, "b": 450.73572, "coord_origin": "TOPLEFT"}}]}, "text": "In this section, we describe how AI can predict an infant\u2019s health conditions by monitoring real-time body movements."}, {"label": "section_header", "id": 14, "page_no": 13, "cluster": {"id": 14, "label": "section_header", "bbox": {"l": 64.4876708984375, "t": 478.11065673828125, "r": 547.25647, "b": 513.474365234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9484166502952576, "cells": [{"id": 33, "text": "Use case 1: Responsible AI augmented with risk and regulatory ", "bbox": {"l": 64.800003, "t": 479.2207, "r": 547.25647, "b": 493.9837, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "compliance", "bbox": {"l": 64.800003, "t": 498.24023, "r": 152.77151, "b": 513.00323, "coord_origin": "TOPLEFT"}}]}, "text": "Use case 1: Responsible AI augmented with risk and regulatory compliance"}, {"label": "text", "id": 15, "page_no": 13, "cluster": {"id": 15, "label": "text", "bbox": {"l": 135.6639404296875, "t": 529.3472290039062, "r": 547.17877, "b": 575.7841186523438, "coord_origin": "TOPLEFT"}, "confidence": 0.9858030080795288, "cells": [{"id": 35, "text": "Advancement in AI is changing the world, and organizations must adopt AI to embrace new ", "bbox": {"l": 136.8, "t": 530.50861, "r": 542.87628, "b": 539.72162, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "challenges daily. Many enterprises see tremendous value in adopting AI and ML technologies ", "bbox": {"l": 136.8, "t": 542.50842, "r": 547.17877, "b": 551.72142, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "while establishing organization trust in the models, underlying data, and the process to be ", "bbox": {"l": 136.79999, "t": 554.5082199999999, "r": 535.17603, "b": 563.72122, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "followed. An AI model lifecycle can be a daunting task.", "bbox": {"l": 136.79999, "t": 566.50803, "r": 377.95047, "b": 575.72102, "coord_origin": "TOPLEFT"}}]}, "text": "Advancement in AI is changing the world, and organizations must adopt AI to embrace new challenges daily. Many enterprises see tremendous value in adopting AI and ML technologies while establishing organization trust in the models, underlying data, and the process to be followed. An AI model lifecycle can be a daunting task."}, {"label": "text", "id": 16, "page_no": 13, "cluster": {"id": 16, "label": "text", "bbox": {"l": 136.313232421875, "t": 588.0188598632812, "r": 547.24249, "b": 610.3685913085938, "coord_origin": "TOPLEFT"}, "confidence": 0.9748781323432922, "cells": [{"id": 39, "text": "How mature is your AI governance? In this section, we provide a use case demonstrating the ", "bbox": {"l": 136.79999, "t": 588.52759, "r": 547.24249, "b": 597.74059, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "trustworthiness of AI and its importance in daily monitoring. ", "bbox": {"l": 136.79999, "t": 600.52739, "r": 400.68033, "b": 609.7403899999999, "coord_origin": "TOPLEFT"}}]}, "text": "How mature is your AI governance? In this section, we provide a use case demonstrating the trustworthiness of AI and its importance in daily monitoring."}, {"label": "section_header", "id": 17, "page_no": 13, "cluster": {"id": 17, "label": "section_header", "bbox": {"l": 64.53734588623047, "t": 629.2350463867188, "r": 186.7186, "b": 642.421142578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9630159139633179, "cells": [{"id": 41, "text": "Industry challenges", "bbox": {"l": 64.800003, "t": 630.35472, "r": 186.7186, "b": 642.34273, "coord_origin": "TOPLEFT"}}]}, "text": "Industry challenges"}, {"label": "text", "id": 18, "page_no": 13, "cluster": {"id": 18, "label": "text", "bbox": {"l": 136.22996520996094, "t": 655.5369873046875, "r": 508.98724000000004, "b": 665.72162, "coord_origin": "TOPLEFT"}, "confidence": 0.9516966938972473, "cells": [{"id": 42, "text": "Here are the three main reasons why organizations struggle with the adoption of AI: ", "bbox": {"l": 136.8, "t": 656.5086200000001, "r": 508.98724000000004, "b": 665.72162, "coord_origin": "TOPLEFT"}}]}, "text": "Here are the three main reasons why organizations struggle with the adoption of AI:"}, {"label": "list_item", "id": 19, "page_no": 13, "cluster": {"id": 19, "label": "list_item", "bbox": {"l": 135.8061065673828, "t": 672.6024780273438, "r": 293.9800720214844, "b": 682.9390869140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9561625123023987, "cells": [{"id": 43, "text": "GLYPH", "bbox": {"l": 136.8, "t": 673.69759, "r": 141.78, "b": 682.47234, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Scaling with growing regulations", "bbox": {"l": 151.20016, "t": 673.54818, "r": 293.96283, "b": 682.76118, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Scaling with growing regulations"}, {"label": "list_item", "id": 20, "page_no": 13, "cluster": {"id": 20, "label": "list_item", "bbox": {"l": 135.63792419433594, "t": 689.974609375, "r": 435.72745, "b": 700.486083984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9557024240493774, "cells": [{"id": 45, "text": "GLYPH", "bbox": {"l": 136.8, "t": 690.6774, "r": 141.78, "b": 699.4521560000001, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Lack of confidence in operationalized AI (making responsible AI)", "bbox": {"l": 151.20016, "t": 690.52799, "r": 435.72745, "b": 699.740997, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Lack of confidence in operationalized AI (making responsible AI)"}, {"label": "list_item", "id": 21, "page_no": 13, "cluster": {"id": 21, "label": "list_item", "bbox": {"l": 135.60543823242188, "t": 706.6790161132812, "r": 466.06842041015625, "b": 717.1160888671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9607930183410645, "cells": [{"id": 47, "text": "GLYPH", "bbox": {"l": 136.8, "t": 707.657211, "r": 141.78, "b": 716.431969, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "Challenges around managing the risk throughout the entire AI workflow", "bbox": {"l": 151.20016, "t": 707.507805, "r": 465.6782799999999, "b": 716.72081, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Challenges around managing the risk throughout the entire AI workflow"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 13, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.53218078613281, "t": 754.509033203125, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9160951375961304, "cells": [{"id": 0, "text": "12 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "12"}, {"label": "page_footer", "id": 1, "page_no": 13, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.2241439819336, "t": 754.7615356445312, "r": 267.0744, "b": 764.1396484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9570255279541016, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}]}}, {"page_no": 14, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "13", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Scaling with growing regulations", "bbox": {"l": 136.8, "t": 71.36395000000005, "r": 324.71161, "b": 82.46398999999997, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Laws and regulations in the data and AI space are accelerating, and many countries are ", "bbox": {"l": 136.8, "t": 86.50867000000005, "r": 528.54681, "b": 95.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "proposing strict AI policies. Countries are monitoring adherence of these policies by the ", "bbox": {"l": 136.8, "t": 98.50847999999996, "r": 525.13123, "b": 107.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "enterprises and imposing fines for any violations. Responding to these regulations are ", "bbox": {"l": 136.8, "t": 110.50829999999996, "r": 519.0838, "b": 119.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "challenging global organizations where multiple regulations apply. For enterprises, it is ", "bbox": {"l": 136.8, "t": 122.50811999999996, "r": 520.57288, "b": 131.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "important to adopt AI policies when there is change, and to validate explainable models to ", "bbox": {"l": 136.8, "t": 134.50793, "r": 536.31555, "b": 143.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "protect against discrimination.", "bbox": {"l": 136.8, "t": 146.50775, "r": 269.03491, "b": 155.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Responsible AI", "bbox": {"l": 136.8, "t": 172.40399000000002, "r": 223.38721, "b": 183.50402999999994, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Responsible AI protects against loss of data privacy, and reduced customer loyalty and trust. ", "bbox": {"l": 136.8, "t": 187.48870999999997, "r": 547.32831, "b": 196.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "A data scientist cannot maximize accuracy and model performance above all other concerns. ", "bbox": {"l": 136.8, "t": 199.48852999999997, "r": 547.25458, "b": 208.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Practicing responsible AI is a best practice, and you must establish protection and validation ", "bbox": {"l": 136.79999, "t": 211.48834, "r": 546.10297, "b": 220.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "to ensure that any models that are placed into production are fair and explainable.", "bbox": {"l": 136.79999, "t": 223.48816, "r": 498.54129, "b": 232.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Risks throughout the entire AI workflow", "bbox": {"l": 136.8, "t": 249.38396999999998, "r": 364.06561, "b": 260.48401, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Organizations need to mitigate risk of the following items:", "bbox": {"l": 136.8, "t": 264.52855999999997, "r": 389.47919, "b": 273.74158, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 281.65777999999995, "r": 141.78, "b": 290.43256, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Deciding not to use certain technologies or practices", "bbox": {"l": 151.20016, "t": 281.50839, "r": 382.91455, "b": 290.72137, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "GLYPH", "bbox": {"l": 136.8, "t": 298.63757, "r": 141.78, "b": 307.41235, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Using personal information when needed and with a user\u2019s consent ", "bbox": {"l": 151.20016, "t": 298.48819, "r": 450.99023, "b": 307.70117, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "GLYPH", "bbox": {"l": 136.8, "t": 315.67715, "r": 141.78, "b": 324.45193000000006, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Ensuring automated decisions are free from bias", "bbox": {"l": 151.20016, "t": 315.5277699999999, "r": 366.21268, "b": 324.74075, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "GLYPH", "bbox": {"l": 136.8, "t": 332.65695000000005, "r": 141.78, "b": 341.43172999999996, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Customer confidence by providing explanations for business decisions", "bbox": {"l": 151.20016, "t": 332.50757, "r": 462.31461, "b": 341.72055, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 349.63674999999995, "r": 141.77998, "b": 358.41153, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Fraud to the organization and to customer\u2019s accounts", "bbox": {"l": 151.20015, "t": 349.48737, "r": 386.45636, "b": 358.70035000000007, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 366.67633, "r": 141.77998, "b": 375.45111, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Delays in putting models into production ", "bbox": {"l": 151.20015, "t": 366.52695, "r": 331.24911, "b": 375.73993, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "In fact, in a recent survey, these concerns were echoed by real AI adopters when asked what ", "bbox": {"l": 136.79999, "t": 388.48676, "r": 547.18677, "b": 397.6997400000001, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "aspects of trust are most important to them. Although explaining how AI decides is the ", "bbox": {"l": 136.79999, "t": 400.48657, "r": 519.48199, "b": 409.69955, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "primary concern, all of these concerns are important. ", "bbox": {"l": 136.79999, "t": 412.48639, "r": 372.96661, "b": 421.69937, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "The key point here is that risk exists throughout the entire AI lifecycle starting with the ", "bbox": {"l": 136.79999, "t": 434.5059499999999, "r": 516.63068, "b": 443.71893, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "underlying data and the business justification behind the \u201cwhy\u201d of the project and continuing ", "bbox": {"l": 136.79999, "t": 446.50577000000004, "r": 543.4837, "b": 455.71875, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "into production. Without a formalized process, there is no way to mitigate these risks to unlock ", "bbox": {"l": 136.79999, "t": 458.50558, "r": 547.24658, "b": 467.71857, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "the scale that is required to make automated decisions profitable. With these decisions, the ", "bbox": {"l": 136.79999, "t": 470.5054, "r": 541.69409, "b": 479.71838, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "business can operate proactively instead of reactively. ", "bbox": {"l": 136.79999, "t": 482.50522, "r": 378.89471, "b": 491.7182, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 535.9011840820312, "t": 754.3621215820312, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.915951669216156, "cells": [{"id": 0, "text": "13", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "section_header", "bbox": {"l": 136.29180908203125, "t": 70.39407348632812, "r": 324.71161, "b": 82.81320190429688, "coord_origin": "TOPLEFT"}, "confidence": 0.9631897211074829, "cells": [{"id": 1, "text": "Scaling with growing regulations", "bbox": {"l": 136.8, "t": 71.36395000000005, "r": 324.71161, "b": 82.46398999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.92501831054688, "t": 85.20021057128906, "r": 536.31555, "b": 155.72076000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.988149106502533, "cells": [{"id": 2, "text": "Laws and regulations in the data and AI space are accelerating, and many countries are ", "bbox": {"l": 136.8, "t": 86.50867000000005, "r": 528.54681, "b": 95.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "proposing strict AI policies. Countries are monitoring adherence of these policies by the ", "bbox": {"l": 136.8, "t": 98.50847999999996, "r": 525.13123, "b": 107.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "enterprises and imposing fines for any violations. Responding to these regulations are ", "bbox": {"l": 136.8, "t": 110.50829999999996, "r": 519.0838, "b": 119.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "challenging global organizations where multiple regulations apply. For enterprises, it is ", "bbox": {"l": 136.8, "t": 122.50811999999996, "r": 520.57288, "b": 131.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "important to adopt AI policies when there is change, and to validate explainable models to ", "bbox": {"l": 136.8, "t": 134.50793, "r": 536.31555, "b": 143.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "protect against discrimination.", "bbox": {"l": 136.8, "t": 146.50775, "r": 269.03491, "b": 155.72076000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "section_header", "bbox": {"l": 136.52218627929688, "t": 171.78952026367188, "r": 223.41616821289062, "b": 183.66505432128906, "coord_origin": "TOPLEFT"}, "confidence": 0.9572980999946594, "cells": [{"id": 8, "text": "Responsible AI", "bbox": {"l": 136.8, "t": 172.40399000000002, "r": 223.38721, "b": 183.50402999999994, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.9759521484375, "t": 186.67660522460938, "r": 547.32831, "b": 233.0913543701172, "coord_origin": "TOPLEFT"}, "confidence": 0.9755564332008362, "cells": [{"id": 9, "text": "Responsible AI protects against loss of data privacy, and reduced customer loyalty and trust. ", "bbox": {"l": 136.8, "t": 187.48870999999997, "r": 547.32831, "b": 196.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "A data scientist cannot maximize accuracy and model performance above all other concerns. ", "bbox": {"l": 136.8, "t": 199.48852999999997, "r": 547.25458, "b": 208.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Practicing responsible AI is a best practice, and you must establish protection and validation ", "bbox": {"l": 136.79999, "t": 211.48834, "r": 546.10297, "b": 220.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "to ensure that any models that are placed into production are fair and explainable.", "bbox": {"l": 136.79999, "t": 223.48816, "r": 498.54129, "b": 232.70117000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "section_header", "bbox": {"l": 136.5354461669922, "t": 248.45245361328125, "r": 364.06561, "b": 260.55926513671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9580543637275696, "cells": [{"id": 13, "text": "Risks throughout the entire AI workflow", "bbox": {"l": 136.8, "t": 249.38396999999998, "r": 364.06561, "b": 260.48401, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 136.28106689453125, "t": 263.99212646484375, "r": 389.47919, "b": 274.5697326660156, "coord_origin": "TOPLEFT"}, "confidence": 0.9462679028511047, "cells": [{"id": 14, "text": "Organizations need to mitigate risk of the following items:", "bbox": {"l": 136.8, "t": 264.52855999999997, "r": 389.47919, "b": 273.74158, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.77525329589844, "t": 280.7226257324219, "r": 382.91455, "b": 290.9065246582031, "coord_origin": "TOPLEFT"}, "confidence": 0.9557760953903198, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 281.65777999999995, "r": 141.78, "b": 290.43256, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Deciding not to use certain technologies or practices", "bbox": {"l": 151.20016, "t": 281.50839, "r": 382.91455, "b": 290.72137, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.74273681640625, "t": 297.4331359863281, "r": 450.99023, "b": 308.05767822265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9605316519737244, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.8, "t": 298.63757, "r": 141.78, "b": 307.41235, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Using personal information when needed and with a user\u2019s consent ", "bbox": {"l": 151.20016, "t": 298.48819, "r": 450.99023, "b": 307.70117, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.5438995361328, "t": 314.5897521972656, "r": 366.21268, "b": 324.8603515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9523881077766418, "cells": [{"id": 19, "text": "GLYPH", "bbox": {"l": 136.8, "t": 315.67715, "r": 141.78, "b": 324.45193000000006, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Ensuring automated decisions are free from bias", "bbox": {"l": 151.20016, "t": 315.5277699999999, "r": 366.21268, "b": 324.74075, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 135.47459411621094, "t": 331.47955322265625, "r": 462.31461, "b": 341.72055, "coord_origin": "TOPLEFT"}, "confidence": 0.9583740830421448, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.8, "t": 332.65695000000005, "r": 141.78, "b": 341.43172999999996, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Customer confidence by providing explanations for business decisions", "bbox": {"l": 151.20016, "t": 332.50757, "r": 462.31461, "b": 341.72055, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 135.48123168945312, "t": 348.7354736328125, "r": 386.45636, "b": 358.875, "coord_origin": "TOPLEFT"}, "confidence": 0.9537600874900818, "cells": [{"id": 23, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 349.63674999999995, "r": 141.77998, "b": 358.41153, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Fraud to the organization and to customer\u2019s accounts", "bbox": {"l": 151.20015, "t": 349.48737, "r": 386.45636, "b": 358.70035000000007, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "list_item", "bbox": {"l": 135.62051391601562, "t": 366.0385437011719, "r": 331.24911, "b": 376.2076721191406, "coord_origin": "TOPLEFT"}, "confidence": 0.9608153700828552, "cells": [{"id": 25, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 366.67633, "r": 141.77998, "b": 375.45111, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Delays in putting models into production ", "bbox": {"l": 151.20015, "t": 366.52695, "r": 331.24911, "b": 375.73993, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 136.05039978027344, "t": 387.55609130859375, "r": 547.18677, "b": 421.69937, "coord_origin": "TOPLEFT"}, "confidence": 0.9833502769470215, "cells": [{"id": 27, "text": "In fact, in a recent survey, these concerns were echoed by real AI adopters when asked what ", "bbox": {"l": 136.79999, "t": 388.48676, "r": 547.18677, "b": 397.6997400000001, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "aspects of trust are most important to them. Although explaining how AI decides is the ", "bbox": {"l": 136.79999, "t": 400.48657, "r": 519.48199, "b": 409.69955, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "primary concern, all of these concerns are important. ", "bbox": {"l": 136.79999, "t": 412.48639, "r": 372.96661, "b": 421.69937, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "text", "bbox": {"l": 135.85047912597656, "t": 433.4964294433594, "r": 547.24658, "b": 491.7182, "coord_origin": "TOPLEFT"}, "confidence": 0.9875410199165344, "cells": [{"id": 30, "text": "The key point here is that risk exists throughout the entire AI lifecycle starting with the ", "bbox": {"l": 136.79999, "t": 434.5059499999999, "r": 516.63068, "b": 443.71893, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "underlying data and the business justification behind the \u201cwhy\u201d of the project and continuing ", "bbox": {"l": 136.79999, "t": 446.50577000000004, "r": 543.4837, "b": 455.71875, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "into production. Without a formalized process, there is no way to mitigate these risks to unlock ", "bbox": {"l": 136.79999, "t": 458.50558, "r": 547.24658, "b": 467.71857, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "the scale that is required to make automated decisions profitable. With these decisions, the ", "bbox": {"l": 136.79999, "t": 470.5054, "r": 541.69409, "b": 479.71838, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "business can operate proactively instead of reactively. ", "bbox": {"l": 136.79999, "t": 482.50522, "r": 378.89471, "b": 491.7182, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 14, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 535.9011840820312, "t": 754.3621215820312, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.915951669216156, "cells": [{"id": 0, "text": "13", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "13"}, {"label": "section_header", "id": 1, "page_no": 14, "cluster": {"id": 1, "label": "section_header", "bbox": {"l": 136.29180908203125, "t": 70.39407348632812, "r": 324.71161, "b": 82.81320190429688, "coord_origin": "TOPLEFT"}, "confidence": 0.9631897211074829, "cells": [{"id": 1, "text": "Scaling with growing regulations", "bbox": {"l": 136.8, "t": 71.36395000000005, "r": 324.71161, "b": 82.46398999999997, "coord_origin": "TOPLEFT"}}]}, "text": "Scaling with growing regulations"}, {"label": "text", "id": 2, "page_no": 14, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.92501831054688, "t": 85.20021057128906, "r": 536.31555, "b": 155.72076000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.988149106502533, "cells": [{"id": 2, "text": "Laws and regulations in the data and AI space are accelerating, and many countries are ", "bbox": {"l": 136.8, "t": 86.50867000000005, "r": 528.54681, "b": 95.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "proposing strict AI policies. Countries are monitoring adherence of these policies by the ", "bbox": {"l": 136.8, "t": 98.50847999999996, "r": 525.13123, "b": 107.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "enterprises and imposing fines for any violations. Responding to these regulations are ", "bbox": {"l": 136.8, "t": 110.50829999999996, "r": 519.0838, "b": 119.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "challenging global organizations where multiple regulations apply. For enterprises, it is ", "bbox": {"l": 136.8, "t": 122.50811999999996, "r": 520.57288, "b": 131.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "important to adopt AI policies when there is change, and to validate explainable models to ", "bbox": {"l": 136.8, "t": 134.50793, "r": 536.31555, "b": 143.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "protect against discrimination.", "bbox": {"l": 136.8, "t": 146.50775, "r": 269.03491, "b": 155.72076000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Laws and regulations in the data and AI space are accelerating, and many countries are proposing strict AI policies. Countries are monitoring adherence of these policies by the enterprises and imposing fines for any violations. Responding to these regulations are challenging global organizations where multiple regulations apply. For enterprises, it is important to adopt AI policies when there is change, and to validate explainable models to protect against discrimination."}, {"label": "section_header", "id": 3, "page_no": 14, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 136.52218627929688, "t": 171.78952026367188, "r": 223.41616821289062, "b": 183.66505432128906, "coord_origin": "TOPLEFT"}, "confidence": 0.9572980999946594, "cells": [{"id": 8, "text": "Responsible AI", "bbox": {"l": 136.8, "t": 172.40399000000002, "r": 223.38721, "b": 183.50402999999994, "coord_origin": "TOPLEFT"}}]}, "text": "Responsible AI"}, {"label": "text", "id": 4, "page_no": 14, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.9759521484375, "t": 186.67660522460938, "r": 547.32831, "b": 233.0913543701172, "coord_origin": "TOPLEFT"}, "confidence": 0.9755564332008362, "cells": [{"id": 9, "text": "Responsible AI protects against loss of data privacy, and reduced customer loyalty and trust. ", "bbox": {"l": 136.8, "t": 187.48870999999997, "r": 547.32831, "b": 196.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "A data scientist cannot maximize accuracy and model performance above all other concerns. ", "bbox": {"l": 136.8, "t": 199.48852999999997, "r": 547.25458, "b": 208.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Practicing responsible AI is a best practice, and you must establish protection and validation ", "bbox": {"l": 136.79999, "t": 211.48834, "r": 546.10297, "b": 220.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "to ensure that any models that are placed into production are fair and explainable.", "bbox": {"l": 136.79999, "t": 223.48816, "r": 498.54129, "b": 232.70117000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Responsible AI protects against loss of data privacy, and reduced customer loyalty and trust. A data scientist cannot maximize accuracy and model performance above all other concerns. Practicing responsible AI is a best practice, and you must establish protection and validation to ensure that any models that are placed into production are fair and explainable."}, {"label": "section_header", "id": 5, "page_no": 14, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 136.5354461669922, "t": 248.45245361328125, "r": 364.06561, "b": 260.55926513671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9580543637275696, "cells": [{"id": 13, "text": "Risks throughout the entire AI workflow", "bbox": {"l": 136.8, "t": 249.38396999999998, "r": 364.06561, "b": 260.48401, "coord_origin": "TOPLEFT"}}]}, "text": "Risks throughout the entire AI workflow"}, {"label": "text", "id": 6, "page_no": 14, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.28106689453125, "t": 263.99212646484375, "r": 389.47919, "b": 274.5697326660156, "coord_origin": "TOPLEFT"}, "confidence": 0.9462679028511047, "cells": [{"id": 14, "text": "Organizations need to mitigate risk of the following items:", "bbox": {"l": 136.8, "t": 264.52855999999997, "r": 389.47919, "b": 273.74158, "coord_origin": "TOPLEFT"}}]}, "text": "Organizations need to mitigate risk of the following items:"}, {"label": "list_item", "id": 7, "page_no": 14, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.77525329589844, "t": 280.7226257324219, "r": 382.91455, "b": 290.9065246582031, "coord_origin": "TOPLEFT"}, "confidence": 0.9557760953903198, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 281.65777999999995, "r": 141.78, "b": 290.43256, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Deciding not to use certain technologies or practices", "bbox": {"l": 151.20016, "t": 281.50839, "r": 382.91455, "b": 290.72137, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Deciding not to use certain technologies or practices"}, {"label": "list_item", "id": 8, "page_no": 14, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.74273681640625, "t": 297.4331359863281, "r": 450.99023, "b": 308.05767822265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9605316519737244, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.8, "t": 298.63757, "r": 141.78, "b": 307.41235, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Using personal information when needed and with a user\u2019s consent ", "bbox": {"l": 151.20016, "t": 298.48819, "r": 450.99023, "b": 307.70117, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Using personal information when needed and with a user\u2019s consent"}, {"label": "list_item", "id": 9, "page_no": 14, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.5438995361328, "t": 314.5897521972656, "r": 366.21268, "b": 324.8603515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9523881077766418, "cells": [{"id": 19, "text": "GLYPH", "bbox": {"l": 136.8, "t": 315.67715, "r": 141.78, "b": 324.45193000000006, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Ensuring automated decisions are free from bias", "bbox": {"l": 151.20016, "t": 315.5277699999999, "r": 366.21268, "b": 324.74075, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Ensuring automated decisions are free from bias"}, {"label": "list_item", "id": 10, "page_no": 14, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.47459411621094, "t": 331.47955322265625, "r": 462.31461, "b": 341.72055, "coord_origin": "TOPLEFT"}, "confidence": 0.9583740830421448, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.8, "t": 332.65695000000005, "r": 141.78, "b": 341.43172999999996, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Customer confidence by providing explanations for business decisions", "bbox": {"l": 151.20016, "t": 332.50757, "r": 462.31461, "b": 341.72055, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Customer confidence by providing explanations for business decisions"}, {"label": "list_item", "id": 11, "page_no": 14, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.48123168945312, "t": 348.7354736328125, "r": 386.45636, "b": 358.875, "coord_origin": "TOPLEFT"}, "confidence": 0.9537600874900818, "cells": [{"id": 23, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 349.63674999999995, "r": 141.77998, "b": 358.41153, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Fraud to the organization and to customer\u2019s accounts", "bbox": {"l": 151.20015, "t": 349.48737, "r": 386.45636, "b": 358.70035000000007, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Fraud to the organization and to customer\u2019s accounts"}, {"label": "list_item", "id": 12, "page_no": 14, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 135.62051391601562, "t": 366.0385437011719, "r": 331.24911, "b": 376.2076721191406, "coord_origin": "TOPLEFT"}, "confidence": 0.9608153700828552, "cells": [{"id": 25, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 366.67633, "r": 141.77998, "b": 375.45111, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Delays in putting models into production ", "bbox": {"l": 151.20015, "t": 366.52695, "r": 331.24911, "b": 375.73993, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Delays in putting models into production"}, {"label": "text", "id": 13, "page_no": 14, "cluster": {"id": 13, "label": "text", "bbox": {"l": 136.05039978027344, "t": 387.55609130859375, "r": 547.18677, "b": 421.69937, "coord_origin": "TOPLEFT"}, "confidence": 0.9833502769470215, "cells": [{"id": 27, "text": "In fact, in a recent survey, these concerns were echoed by real AI adopters when asked what ", "bbox": {"l": 136.79999, "t": 388.48676, "r": 547.18677, "b": 397.6997400000001, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "aspects of trust are most important to them. Although explaining how AI decides is the ", "bbox": {"l": 136.79999, "t": 400.48657, "r": 519.48199, "b": 409.69955, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "primary concern, all of these concerns are important. ", "bbox": {"l": 136.79999, "t": 412.48639, "r": 372.96661, "b": 421.69937, "coord_origin": "TOPLEFT"}}]}, "text": "In fact, in a recent survey, these concerns were echoed by real AI adopters when asked what aspects of trust are most important to them. Although explaining how AI decides is the primary concern, all of these concerns are important."}, {"label": "text", "id": 14, "page_no": 14, "cluster": {"id": 14, "label": "text", "bbox": {"l": 135.85047912597656, "t": 433.4964294433594, "r": 547.24658, "b": 491.7182, "coord_origin": "TOPLEFT"}, "confidence": 0.9875410199165344, "cells": [{"id": 30, "text": "The key point here is that risk exists throughout the entire AI lifecycle starting with the ", "bbox": {"l": 136.79999, "t": 434.5059499999999, "r": 516.63068, "b": 443.71893, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "underlying data and the business justification behind the \u201cwhy\u201d of the project and continuing ", "bbox": {"l": 136.79999, "t": 446.50577000000004, "r": 543.4837, "b": 455.71875, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "into production. Without a formalized process, there is no way to mitigate these risks to unlock ", "bbox": {"l": 136.79999, "t": 458.50558, "r": 547.24658, "b": 467.71857, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "the scale that is required to make automated decisions profitable. With these decisions, the ", "bbox": {"l": 136.79999, "t": 470.5054, "r": 541.69409, "b": 479.71838, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "business can operate proactively instead of reactively. ", "bbox": {"l": 136.79999, "t": 482.50522, "r": 378.89471, "b": 491.7182, "coord_origin": "TOPLEFT"}}]}, "text": "The key point here is that risk exists throughout the entire AI lifecycle starting with the underlying data and the business justification behind the \u201cwhy\u201d of the project and continuing into production. Without a formalized process, there is no way to mitigate these risks to unlock the scale that is required to make automated decisions profitable. With these decisions, the business can operate proactively instead of reactively."}], "body": [{"label": "section_header", "id": 1, "page_no": 14, "cluster": {"id": 1, "label": "section_header", "bbox": {"l": 136.29180908203125, "t": 70.39407348632812, "r": 324.71161, "b": 82.81320190429688, "coord_origin": "TOPLEFT"}, "confidence": 0.9631897211074829, "cells": [{"id": 1, "text": "Scaling with growing regulations", "bbox": {"l": 136.8, "t": 71.36395000000005, "r": 324.71161, "b": 82.46398999999997, "coord_origin": "TOPLEFT"}}]}, "text": "Scaling with growing regulations"}, {"label": "text", "id": 2, "page_no": 14, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.92501831054688, "t": 85.20021057128906, "r": 536.31555, "b": 155.72076000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.988149106502533, "cells": [{"id": 2, "text": "Laws and regulations in the data and AI space are accelerating, and many countries are ", "bbox": {"l": 136.8, "t": 86.50867000000005, "r": 528.54681, "b": 95.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "proposing strict AI policies. Countries are monitoring adherence of these policies by the ", "bbox": {"l": 136.8, "t": 98.50847999999996, "r": 525.13123, "b": 107.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "enterprises and imposing fines for any violations. Responding to these regulations are ", "bbox": {"l": 136.8, "t": 110.50829999999996, "r": 519.0838, "b": 119.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "challenging global organizations where multiple regulations apply. For enterprises, it is ", "bbox": {"l": 136.8, "t": 122.50811999999996, "r": 520.57288, "b": 131.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "important to adopt AI policies when there is change, and to validate explainable models to ", "bbox": {"l": 136.8, "t": 134.50793, "r": 536.31555, "b": 143.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "protect against discrimination.", "bbox": {"l": 136.8, "t": 146.50775, "r": 269.03491, "b": 155.72076000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Laws and regulations in the data and AI space are accelerating, and many countries are proposing strict AI policies. Countries are monitoring adherence of these policies by the enterprises and imposing fines for any violations. Responding to these regulations are challenging global organizations where multiple regulations apply. For enterprises, it is important to adopt AI policies when there is change, and to validate explainable models to protect against discrimination."}, {"label": "section_header", "id": 3, "page_no": 14, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 136.52218627929688, "t": 171.78952026367188, "r": 223.41616821289062, "b": 183.66505432128906, "coord_origin": "TOPLEFT"}, "confidence": 0.9572980999946594, "cells": [{"id": 8, "text": "Responsible AI", "bbox": {"l": 136.8, "t": 172.40399000000002, "r": 223.38721, "b": 183.50402999999994, "coord_origin": "TOPLEFT"}}]}, "text": "Responsible AI"}, {"label": "text", "id": 4, "page_no": 14, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.9759521484375, "t": 186.67660522460938, "r": 547.32831, "b": 233.0913543701172, "coord_origin": "TOPLEFT"}, "confidence": 0.9755564332008362, "cells": [{"id": 9, "text": "Responsible AI protects against loss of data privacy, and reduced customer loyalty and trust. ", "bbox": {"l": 136.8, "t": 187.48870999999997, "r": 547.32831, "b": 196.70172000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "A data scientist cannot maximize accuracy and model performance above all other concerns. ", "bbox": {"l": 136.8, "t": 199.48852999999997, "r": 547.25458, "b": 208.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Practicing responsible AI is a best practice, and you must establish protection and validation ", "bbox": {"l": 136.79999, "t": 211.48834, "r": 546.10297, "b": 220.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "to ensure that any models that are placed into production are fair and explainable.", "bbox": {"l": 136.79999, "t": 223.48816, "r": 498.54129, "b": 232.70117000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Responsible AI protects against loss of data privacy, and reduced customer loyalty and trust. A data scientist cannot maximize accuracy and model performance above all other concerns. Practicing responsible AI is a best practice, and you must establish protection and validation to ensure that any models that are placed into production are fair and explainable."}, {"label": "section_header", "id": 5, "page_no": 14, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 136.5354461669922, "t": 248.45245361328125, "r": 364.06561, "b": 260.55926513671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9580543637275696, "cells": [{"id": 13, "text": "Risks throughout the entire AI workflow", "bbox": {"l": 136.8, "t": 249.38396999999998, "r": 364.06561, "b": 260.48401, "coord_origin": "TOPLEFT"}}]}, "text": "Risks throughout the entire AI workflow"}, {"label": "text", "id": 6, "page_no": 14, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.28106689453125, "t": 263.99212646484375, "r": 389.47919, "b": 274.5697326660156, "coord_origin": "TOPLEFT"}, "confidence": 0.9462679028511047, "cells": [{"id": 14, "text": "Organizations need to mitigate risk of the following items:", "bbox": {"l": 136.8, "t": 264.52855999999997, "r": 389.47919, "b": 273.74158, "coord_origin": "TOPLEFT"}}]}, "text": "Organizations need to mitigate risk of the following items:"}, {"label": "list_item", "id": 7, "page_no": 14, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.77525329589844, "t": 280.7226257324219, "r": 382.91455, "b": 290.9065246582031, "coord_origin": "TOPLEFT"}, "confidence": 0.9557760953903198, "cells": [{"id": 15, "text": "GLYPH", "bbox": {"l": 136.8, "t": 281.65777999999995, "r": 141.78, "b": 290.43256, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "Deciding not to use certain technologies or practices", "bbox": {"l": 151.20016, "t": 281.50839, "r": 382.91455, "b": 290.72137, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Deciding not to use certain technologies or practices"}, {"label": "list_item", "id": 8, "page_no": 14, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.74273681640625, "t": 297.4331359863281, "r": 450.99023, "b": 308.05767822265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9605316519737244, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.8, "t": 298.63757, "r": 141.78, "b": 307.41235, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Using personal information when needed and with a user\u2019s consent ", "bbox": {"l": 151.20016, "t": 298.48819, "r": 450.99023, "b": 307.70117, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Using personal information when needed and with a user\u2019s consent"}, {"label": "list_item", "id": 9, "page_no": 14, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.5438995361328, "t": 314.5897521972656, "r": 366.21268, "b": 324.8603515625, "coord_origin": "TOPLEFT"}, "confidence": 0.9523881077766418, "cells": [{"id": 19, "text": "GLYPH", "bbox": {"l": 136.8, "t": 315.67715, "r": 141.78, "b": 324.45193000000006, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Ensuring automated decisions are free from bias", "bbox": {"l": 151.20016, "t": 315.5277699999999, "r": 366.21268, "b": 324.74075, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Ensuring automated decisions are free from bias"}, {"label": "list_item", "id": 10, "page_no": 14, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.47459411621094, "t": 331.47955322265625, "r": 462.31461, "b": 341.72055, "coord_origin": "TOPLEFT"}, "confidence": 0.9583740830421448, "cells": [{"id": 21, "text": "GLYPH", "bbox": {"l": 136.8, "t": 332.65695000000005, "r": 141.78, "b": 341.43172999999996, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Customer confidence by providing explanations for business decisions", "bbox": {"l": 151.20016, "t": 332.50757, "r": 462.31461, "b": 341.72055, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Customer confidence by providing explanations for business decisions"}, {"label": "list_item", "id": 11, "page_no": 14, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.48123168945312, "t": 348.7354736328125, "r": 386.45636, "b": 358.875, "coord_origin": "TOPLEFT"}, "confidence": 0.9537600874900818, "cells": [{"id": 23, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 349.63674999999995, "r": 141.77998, "b": 358.41153, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Fraud to the organization and to customer\u2019s accounts", "bbox": {"l": 151.20015, "t": 349.48737, "r": 386.45636, "b": 358.70035000000007, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Fraud to the organization and to customer\u2019s accounts"}, {"label": "list_item", "id": 12, "page_no": 14, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 135.62051391601562, "t": 366.0385437011719, "r": 331.24911, "b": 376.2076721191406, "coord_origin": "TOPLEFT"}, "confidence": 0.9608153700828552, "cells": [{"id": 25, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 366.67633, "r": 141.77998, "b": 375.45111, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Delays in putting models into production ", "bbox": {"l": 151.20015, "t": 366.52695, "r": 331.24911, "b": 375.73993, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Delays in putting models into production"}, {"label": "text", "id": 13, "page_no": 14, "cluster": {"id": 13, "label": "text", "bbox": {"l": 136.05039978027344, "t": 387.55609130859375, "r": 547.18677, "b": 421.69937, "coord_origin": "TOPLEFT"}, "confidence": 0.9833502769470215, "cells": [{"id": 27, "text": "In fact, in a recent survey, these concerns were echoed by real AI adopters when asked what ", "bbox": {"l": 136.79999, "t": 388.48676, "r": 547.18677, "b": 397.6997400000001, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "aspects of trust are most important to them. Although explaining how AI decides is the ", "bbox": {"l": 136.79999, "t": 400.48657, "r": 519.48199, "b": 409.69955, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "primary concern, all of these concerns are important. ", "bbox": {"l": 136.79999, "t": 412.48639, "r": 372.96661, "b": 421.69937, "coord_origin": "TOPLEFT"}}]}, "text": "In fact, in a recent survey, these concerns were echoed by real AI adopters when asked what aspects of trust are most important to them. Although explaining how AI decides is the primary concern, all of these concerns are important."}, {"label": "text", "id": 14, "page_no": 14, "cluster": {"id": 14, "label": "text", "bbox": {"l": 135.85047912597656, "t": 433.4964294433594, "r": 547.24658, "b": 491.7182, "coord_origin": "TOPLEFT"}, "confidence": 0.9875410199165344, "cells": [{"id": 30, "text": "The key point here is that risk exists throughout the entire AI lifecycle starting with the ", "bbox": {"l": 136.79999, "t": 434.5059499999999, "r": 516.63068, "b": 443.71893, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "underlying data and the business justification behind the \u201cwhy\u201d of the project and continuing ", "bbox": {"l": 136.79999, "t": 446.50577000000004, "r": 543.4837, "b": 455.71875, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "into production. Without a formalized process, there is no way to mitigate these risks to unlock ", "bbox": {"l": 136.79999, "t": 458.50558, "r": 547.24658, "b": 467.71857, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "the scale that is required to make automated decisions profitable. With these decisions, the ", "bbox": {"l": 136.79999, "t": 470.5054, "r": 541.69409, "b": 479.71838, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "business can operate proactively instead of reactively. ", "bbox": {"l": 136.79999, "t": 482.50522, "r": 378.89471, "b": 491.7182, "coord_origin": "TOPLEFT"}}]}, "text": "The key point here is that risk exists throughout the entire AI lifecycle starting with the underlying data and the business justification behind the \u201cwhy\u201d of the project and continuing into production. Without a formalized process, there is no way to mitigate these risks to unlock the scale that is required to make automated decisions profitable. With these decisions, the business can operate proactively instead of reactively."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 14, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 535.9011840820312, "t": 754.3621215820312, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.915951669216156, "cells": [{"id": 0, "text": "13", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "13"}]}}, {"page_no": 15, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "14 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "For example, a business can start testing a model before production for fairness metrics. For ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 547.12024, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "this task, enterprises need an end-to-end workflow with approvals to mitigate these risks and ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 547.30731, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "increase the scale of AI investments, as shown in Figure 8, which presents a typical AI model ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 547.28247, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "lifecycle in an enterprise. ", "bbox": {"l": 136.8, "t": 107.50811999999996, "r": 249.57208, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Figure 8 Typical AI model lifecycle", "bbox": {"l": 64.800003, "t": 333.0779999999999, "r": 206.07208, "b": 341.40302, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Due to regulations, more stakeholders adopt the typical AI model lifecycle to protect their ", "bbox": {"l": 136.8, "t": 355.00872999999996, "r": 531.15924, "b": 364.22171, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "brand from new end-to-end risks. To ensure various aspects of both regulatory compliance ", "bbox": {"l": 136.80002, "t": 367.00854, "r": 540.12024, "b": 376.22153, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "and security, the personas that must be involved include the chief financial officer (CFO), ", "bbox": {"l": 136.80002, "t": 379.00836, "r": 531.84265, "b": 388.22134, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "chief marketing officer (CMO), chief data officer (CDO), HR, and chief regulatory officer ", "bbox": {"l": 136.80002, "t": 391.0081799999999, "r": 523.93213, "b": 400.22116, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "(CRO), along with the data engineers, data scientists, and business analysts, who build AI ", "bbox": {"l": 136.80002, "t": 403.00800000000004, "r": 537.40796, "b": 412.22098, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "workflows. ", "bbox": {"l": 136.80002, "t": 415.00781, "r": 186.17273, "b": 424.2207900000001, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "IBM governance solution for IBM Z", "bbox": {"l": 64.800003, "t": 444.89474, "r": 279.09619, "b": 456.88272, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "AI model lifecycle governance, risk management, and regulatory compliance are key to the ", "bbox": {"l": 136.8, "t": 471.04874, "r": 540.66016, "b": 480.26172, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "success of enterprises.", "bbox": {"l": 136.8, "t": 483.04855, "r": 238.91193000000004, "b": 492.26154, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "AI governance is a comprehensive framework that uses a set of automated processes, ", "bbox": {"l": 136.8, "t": 505.00836, "r": 522.28375, "b": 514.22134, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "methodologies, and tools to manage an organization\u2019s use of AI. Consistent principles ", "bbox": {"l": 136.8, "t": 517.00818, "r": 518.83173, "b": 526.22116, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "guiding the design, development, deployment, and monitoring of models are critical in driving ", "bbox": {"l": 136.8, "t": 529.00797, "r": 547.24677, "b": 538.22098, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "responsible and trustworthy AI. AI governance includes processes that trace and record the ", "bbox": {"l": 136.8, "t": 541.00778, "r": 543.55243, "b": 550.22078, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "origin of data, models (including associated metadata), and pipelines for audits. The details of ", "bbox": {"l": 136.8, "t": 553.00758, "r": 547.3551, "b": 562.22058, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "entry should include the techniques that trained each model, the hyperparameters that were ", "bbox": {"l": 136.8, "t": 565.00739, "r": 545.16895, "b": 574.22038, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "used, and the metrics from testing phases. These details provide increased transparency into ", "bbox": {"l": 136.8, "t": 577.00719, "r": 547.3075, "b": 586.22018, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "the model\u2019s behavior throughout the lifecycle, the data that was influential in its development, ", "bbox": {"l": 136.8, "t": 589.00699, "r": 547.27661, "b": 598.21999, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "and the possible risks.", "bbox": {"l": 136.8, "t": 601.00679, "r": 235.71976, "b": 610.21979, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "In a world where trust, transparency and explainable AI matters, every organization wants ", "bbox": {"l": 136.8, "t": 623.02635, "r": 535.70215, "b": 632.2393500000001, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "compliance along with the comfort of understanding how analytic insights and decisions are ", "bbox": {"l": 136.8, "t": 635.02615, "r": 543.35425, "b": 644.23915, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "made. The following sections describe some of the principles and organizational ", "bbox": {"l": 136.8, "t": 647.0259599999999, "r": 493.54346000000004, "b": 656.2389499999999, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "requirements for AI governance. ", "bbox": {"l": 136.8, "t": 659.02576, "r": 282.2887, "b": 668.23876, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.407470703125, "t": 754.3117065429688, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9113772511482239, "cells": [{"id": 0, "text": "14 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.1883316040039, "t": 754.7257080078125, "r": 267.0744, "b": 764.1552124023438, "coord_origin": "TOPLEFT"}, "confidence": 0.9578691720962524, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 136.13604736328125, "t": 70.62796020507812, "r": 547.30731, "b": 117.06792449951172, "coord_origin": "TOPLEFT"}, "confidence": 0.9846124053001404, "cells": [{"id": 2, "text": "For example, a business can start testing a model before production for fairness metrics. For ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 547.12024, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "this task, enterprises need an end-to-end workflow with approvals to mitigate these risks and ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 547.30731, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "increase the scale of AI investments, as shown in Figure 8, which presents a typical AI model ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 547.28247, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "lifecycle in an enterprise. ", "bbox": {"l": 136.8, "t": 107.50811999999996, "r": 249.57208, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.17765808105469, "t": 332.0653381347656, "r": 206.827880859375, "b": 341.4869689941406, "coord_origin": "TOPLEFT"}, "confidence": 0.952994704246521, "cells": [{"id": 6, "text": "Figure 8 Typical AI model lifecycle", "bbox": {"l": 64.800003, "t": 333.0779999999999, "r": 206.07208, "b": 341.40302, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.79885864257812, "t": 354.1422119140625, "r": 540.12024, "b": 424.2207900000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9863293766975403, "cells": [{"id": 7, "text": "Due to regulations, more stakeholders adopt the typical AI model lifecycle to protect their ", "bbox": {"l": 136.8, "t": 355.00872999999996, "r": 531.15924, "b": 364.22171, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "brand from new end-to-end risks. To ensure various aspects of both regulatory compliance ", "bbox": {"l": 136.80002, "t": 367.00854, "r": 540.12024, "b": 376.22153, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "and security, the personas that must be involved include the chief financial officer (CFO), ", "bbox": {"l": 136.80002, "t": 379.00836, "r": 531.84265, "b": 388.22134, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "chief marketing officer (CMO), chief data officer (CDO), HR, and chief regulatory officer ", "bbox": {"l": 136.80002, "t": 391.0081799999999, "r": 523.93213, "b": 400.22116, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "(CRO), along with the data engineers, data scientists, and business analysts, who build AI ", "bbox": {"l": 136.80002, "t": 403.00800000000004, "r": 537.40796, "b": 412.22098, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "workflows. ", "bbox": {"l": 136.80002, "t": 415.00781, "r": 186.17273, "b": 424.2207900000001, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "section_header", "bbox": {"l": 64.70143127441406, "t": 443.571044921875, "r": 279.45147705078125, "b": 456.88272, "coord_origin": "TOPLEFT"}, "confidence": 0.9659296274185181, "cells": [{"id": 13, "text": "IBM governance solution for IBM Z", "bbox": {"l": 64.800003, "t": 444.89474, "r": 279.09619, "b": 456.88272, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 135.8342742919922, "t": 469.94647216796875, "r": 540.66016, "b": 492.26154, "coord_origin": "TOPLEFT"}, "confidence": 0.9788194298744202, "cells": [{"id": 14, "text": "AI model lifecycle governance, risk management, and regulatory compliance are key to the ", "bbox": {"l": 136.8, "t": 471.04874, "r": 540.66016, "b": 480.26172, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "success of enterprises.", "bbox": {"l": 136.8, "t": 483.04855, "r": 238.91193000000004, "b": 492.26154, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 135.8035888671875, "t": 503.9425354003906, "r": 547.3551, "b": 610.21979, "coord_origin": "TOPLEFT"}, "confidence": 0.9855291247367859, "cells": [{"id": 16, "text": "AI governance is a comprehensive framework that uses a set of automated processes, ", "bbox": {"l": 136.8, "t": 505.00836, "r": 522.28375, "b": 514.22134, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "methodologies, and tools to manage an organization\u2019s use of AI. Consistent principles ", "bbox": {"l": 136.8, "t": 517.00818, "r": 518.83173, "b": 526.22116, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "guiding the design, development, deployment, and monitoring of models are critical in driving ", "bbox": {"l": 136.8, "t": 529.00797, "r": 547.24677, "b": 538.22098, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "responsible and trustworthy AI. AI governance includes processes that trace and record the ", "bbox": {"l": 136.8, "t": 541.00778, "r": 543.55243, "b": 550.22078, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "origin of data, models (including associated metadata), and pipelines for audits. The details of ", "bbox": {"l": 136.8, "t": 553.00758, "r": 547.3551, "b": 562.22058, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "entry should include the techniques that trained each model, the hyperparameters that were ", "bbox": {"l": 136.8, "t": 565.00739, "r": 545.16895, "b": 574.22038, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "used, and the metrics from testing phases. These details provide increased transparency into ", "bbox": {"l": 136.8, "t": 577.00719, "r": 547.3075, "b": 586.22018, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "the model\u2019s behavior throughout the lifecycle, the data that was influential in its development, ", "bbox": {"l": 136.8, "t": 589.00699, "r": 547.27661, "b": 598.21999, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "and the possible risks.", "bbox": {"l": 136.8, "t": 601.00679, "r": 235.71976, "b": 610.21979, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 135.9875030517578, "t": 621.9910888671875, "r": 543.35425, "b": 668.23876, "coord_origin": "TOPLEFT"}, "confidence": 0.9869634509086609, "cells": [{"id": 25, "text": "In a world where trust, transparency and explainable AI matters, every organization wants ", "bbox": {"l": 136.8, "t": 623.02635, "r": 535.70215, "b": 632.2393500000001, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "compliance along with the comfort of understanding how analytic insights and decisions are ", "bbox": {"l": 136.8, "t": 635.02615, "r": 543.35425, "b": 644.23915, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "made. The following sections describe some of the principles and organizational ", "bbox": {"l": 136.8, "t": 647.0259599999999, "r": 493.54346000000004, "b": 656.2389499999999, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "requirements for AI governance. ", "bbox": {"l": 136.8, "t": 659.02576, "r": 282.2887, "b": 668.23876, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "picture", "bbox": {"l": 63.77848434448242, "t": 131.25733947753906, "r": 546.8060302734375, "b": 329.46014404296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9830358028411865, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 15, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.407470703125, "t": 754.3117065429688, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9113772511482239, "cells": [{"id": 0, "text": "14 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "14"}, {"label": "page_footer", "id": 1, "page_no": 15, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.1883316040039, "t": 754.7257080078125, "r": 267.0744, "b": 764.1552124023438, "coord_origin": "TOPLEFT"}, "confidence": 0.9578691720962524, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"label": "text", "id": 2, "page_no": 15, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.13604736328125, "t": 70.62796020507812, "r": 547.30731, "b": 117.06792449951172, "coord_origin": "TOPLEFT"}, "confidence": 0.9846124053001404, "cells": [{"id": 2, "text": "For example, a business can start testing a model before production for fairness metrics. For ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 547.12024, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "this task, enterprises need an end-to-end workflow with approvals to mitigate these risks and ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 547.30731, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "increase the scale of AI investments, as shown in Figure 8, which presents a typical AI model ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 547.28247, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "lifecycle in an enterprise. ", "bbox": {"l": 136.8, "t": 107.50811999999996, "r": 249.57208, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "For example, a business can start testing a model before production for fairness metrics. For this task, enterprises need an end-to-end workflow with approvals to mitigate these risks and increase the scale of AI investments, as shown in Figure 8, which presents a typical AI model lifecycle in an enterprise."}, {"label": "caption", "id": 3, "page_no": 15, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.17765808105469, "t": 332.0653381347656, "r": 206.827880859375, "b": 341.4869689941406, "coord_origin": "TOPLEFT"}, "confidence": 0.952994704246521, "cells": [{"id": 6, "text": "Figure 8 Typical AI model lifecycle", "bbox": {"l": 64.800003, "t": 333.0779999999999, "r": 206.07208, "b": 341.40302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 8 Typical AI model lifecycle"}, {"label": "text", "id": 4, "page_no": 15, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.79885864257812, "t": 354.1422119140625, "r": 540.12024, "b": 424.2207900000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9863293766975403, "cells": [{"id": 7, "text": "Due to regulations, more stakeholders adopt the typical AI model lifecycle to protect their ", "bbox": {"l": 136.8, "t": 355.00872999999996, "r": 531.15924, "b": 364.22171, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "brand from new end-to-end risks. To ensure various aspects of both regulatory compliance ", "bbox": {"l": 136.80002, "t": 367.00854, "r": 540.12024, "b": 376.22153, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "and security, the personas that must be involved include the chief financial officer (CFO), ", "bbox": {"l": 136.80002, "t": 379.00836, "r": 531.84265, "b": 388.22134, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "chief marketing officer (CMO), chief data officer (CDO), HR, and chief regulatory officer ", "bbox": {"l": 136.80002, "t": 391.0081799999999, "r": 523.93213, "b": 400.22116, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "(CRO), along with the data engineers, data scientists, and business analysts, who build AI ", "bbox": {"l": 136.80002, "t": 403.00800000000004, "r": 537.40796, "b": 412.22098, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "workflows. ", "bbox": {"l": 136.80002, "t": 415.00781, "r": 186.17273, "b": 424.2207900000001, "coord_origin": "TOPLEFT"}}]}, "text": "Due to regulations, more stakeholders adopt the typical AI model lifecycle to protect their brand from new end-to-end risks. To ensure various aspects of both regulatory compliance and security, the personas that must be involved include the chief financial officer (CFO), chief marketing officer (CMO), chief data officer (CDO), HR, and chief regulatory officer (CRO), along with the data engineers, data scientists, and business analysts, who build AI workflows."}, {"label": "section_header", "id": 5, "page_no": 15, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 64.70143127441406, "t": 443.571044921875, "r": 279.45147705078125, "b": 456.88272, "coord_origin": "TOPLEFT"}, "confidence": 0.9659296274185181, "cells": [{"id": 13, "text": "IBM governance solution for IBM Z", "bbox": {"l": 64.800003, "t": 444.89474, "r": 279.09619, "b": 456.88272, "coord_origin": "TOPLEFT"}}]}, "text": "IBM governance solution for IBM Z"}, {"label": "text", "id": 6, "page_no": 15, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.8342742919922, "t": 469.94647216796875, "r": 540.66016, "b": 492.26154, "coord_origin": "TOPLEFT"}, "confidence": 0.9788194298744202, "cells": [{"id": 14, "text": "AI model lifecycle governance, risk management, and regulatory compliance are key to the ", "bbox": {"l": 136.8, "t": 471.04874, "r": 540.66016, "b": 480.26172, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "success of enterprises.", "bbox": {"l": 136.8, "t": 483.04855, "r": 238.91193000000004, "b": 492.26154, "coord_origin": "TOPLEFT"}}]}, "text": "AI model lifecycle governance, risk management, and regulatory compliance are key to the success of enterprises."}, {"label": "text", "id": 7, "page_no": 15, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.8035888671875, "t": 503.9425354003906, "r": 547.3551, "b": 610.21979, "coord_origin": "TOPLEFT"}, "confidence": 0.9855291247367859, "cells": [{"id": 16, "text": "AI governance is a comprehensive framework that uses a set of automated processes, ", "bbox": {"l": 136.8, "t": 505.00836, "r": 522.28375, "b": 514.22134, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "methodologies, and tools to manage an organization\u2019s use of AI. Consistent principles ", "bbox": {"l": 136.8, "t": 517.00818, "r": 518.83173, "b": 526.22116, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "guiding the design, development, deployment, and monitoring of models are critical in driving ", "bbox": {"l": 136.8, "t": 529.00797, "r": 547.24677, "b": 538.22098, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "responsible and trustworthy AI. AI governance includes processes that trace and record the ", "bbox": {"l": 136.8, "t": 541.00778, "r": 543.55243, "b": 550.22078, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "origin of data, models (including associated metadata), and pipelines for audits. The details of ", "bbox": {"l": 136.8, "t": 553.00758, "r": 547.3551, "b": 562.22058, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "entry should include the techniques that trained each model, the hyperparameters that were ", "bbox": {"l": 136.8, "t": 565.00739, "r": 545.16895, "b": 574.22038, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "used, and the metrics from testing phases. These details provide increased transparency into ", "bbox": {"l": 136.8, "t": 577.00719, "r": 547.3075, "b": 586.22018, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "the model\u2019s behavior throughout the lifecycle, the data that was influential in its development, ", "bbox": {"l": 136.8, "t": 589.00699, "r": 547.27661, "b": 598.21999, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "and the possible risks.", "bbox": {"l": 136.8, "t": 601.00679, "r": 235.71976, "b": 610.21979, "coord_origin": "TOPLEFT"}}]}, "text": "AI governance is a comprehensive framework that uses a set of automated processes, methodologies, and tools to manage an organization\u2019s use of AI. Consistent principles guiding the design, development, deployment, and monitoring of models are critical in driving responsible and trustworthy AI. AI governance includes processes that trace and record the origin of data, models (including associated metadata), and pipelines for audits. The details of entry should include the techniques that trained each model, the hyperparameters that were used, and the metrics from testing phases. These details provide increased transparency into the model\u2019s behavior throughout the lifecycle, the data that was influential in its development, and the possible risks."}, {"label": "text", "id": 8, "page_no": 15, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.9875030517578, "t": 621.9910888671875, "r": 543.35425, "b": 668.23876, "coord_origin": "TOPLEFT"}, "confidence": 0.9869634509086609, "cells": [{"id": 25, "text": "In a world where trust, transparency and explainable AI matters, every organization wants ", "bbox": {"l": 136.8, "t": 623.02635, "r": 535.70215, "b": 632.2393500000001, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "compliance along with the comfort of understanding how analytic insights and decisions are ", "bbox": {"l": 136.8, "t": 635.02615, "r": 543.35425, "b": 644.23915, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "made. The following sections describe some of the principles and organizational ", "bbox": {"l": 136.8, "t": 647.0259599999999, "r": 493.54346000000004, "b": 656.2389499999999, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "requirements for AI governance. ", "bbox": {"l": 136.8, "t": 659.02576, "r": 282.2887, "b": 668.23876, "coord_origin": "TOPLEFT"}}]}, "text": "In a world where trust, transparency and explainable AI matters, every organization wants compliance along with the comfort of understanding how analytic insights and decisions are made. The following sections describe some of the principles and organizational requirements for AI governance."}, {"label": "picture", "id": 9, "page_no": 15, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 63.77848434448242, "t": 131.25733947753906, "r": 546.8060302734375, "b": 329.46014404296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9830358028411865, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 15, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.13604736328125, "t": 70.62796020507812, "r": 547.30731, "b": 117.06792449951172, "coord_origin": "TOPLEFT"}, "confidence": 0.9846124053001404, "cells": [{"id": 2, "text": "For example, a business can start testing a model before production for fairness metrics. For ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 547.12024, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "this task, enterprises need an end-to-end workflow with approvals to mitigate these risks and ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 547.30731, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "increase the scale of AI investments, as shown in Figure 8, which presents a typical AI model ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 547.28247, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "lifecycle in an enterprise. ", "bbox": {"l": 136.8, "t": 107.50811999999996, "r": 249.57208, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "For example, a business can start testing a model before production for fairness metrics. For this task, enterprises need an end-to-end workflow with approvals to mitigate these risks and increase the scale of AI investments, as shown in Figure 8, which presents a typical AI model lifecycle in an enterprise."}, {"label": "caption", "id": 3, "page_no": 15, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.17765808105469, "t": 332.0653381347656, "r": 206.827880859375, "b": 341.4869689941406, "coord_origin": "TOPLEFT"}, "confidence": 0.952994704246521, "cells": [{"id": 6, "text": "Figure 8 Typical AI model lifecycle", "bbox": {"l": 64.800003, "t": 333.0779999999999, "r": 206.07208, "b": 341.40302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 8 Typical AI model lifecycle"}, {"label": "text", "id": 4, "page_no": 15, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.79885864257812, "t": 354.1422119140625, "r": 540.12024, "b": 424.2207900000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9863293766975403, "cells": [{"id": 7, "text": "Due to regulations, more stakeholders adopt the typical AI model lifecycle to protect their ", "bbox": {"l": 136.8, "t": 355.00872999999996, "r": 531.15924, "b": 364.22171, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "brand from new end-to-end risks. To ensure various aspects of both regulatory compliance ", "bbox": {"l": 136.80002, "t": 367.00854, "r": 540.12024, "b": 376.22153, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "and security, the personas that must be involved include the chief financial officer (CFO), ", "bbox": {"l": 136.80002, "t": 379.00836, "r": 531.84265, "b": 388.22134, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "chief marketing officer (CMO), chief data officer (CDO), HR, and chief regulatory officer ", "bbox": {"l": 136.80002, "t": 391.0081799999999, "r": 523.93213, "b": 400.22116, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "(CRO), along with the data engineers, data scientists, and business analysts, who build AI ", "bbox": {"l": 136.80002, "t": 403.00800000000004, "r": 537.40796, "b": 412.22098, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "workflows. ", "bbox": {"l": 136.80002, "t": 415.00781, "r": 186.17273, "b": 424.2207900000001, "coord_origin": "TOPLEFT"}}]}, "text": "Due to regulations, more stakeholders adopt the typical AI model lifecycle to protect their brand from new end-to-end risks. To ensure various aspects of both regulatory compliance and security, the personas that must be involved include the chief financial officer (CFO), chief marketing officer (CMO), chief data officer (CDO), HR, and chief regulatory officer (CRO), along with the data engineers, data scientists, and business analysts, who build AI workflows."}, {"label": "section_header", "id": 5, "page_no": 15, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 64.70143127441406, "t": 443.571044921875, "r": 279.45147705078125, "b": 456.88272, "coord_origin": "TOPLEFT"}, "confidence": 0.9659296274185181, "cells": [{"id": 13, "text": "IBM governance solution for IBM Z", "bbox": {"l": 64.800003, "t": 444.89474, "r": 279.09619, "b": 456.88272, "coord_origin": "TOPLEFT"}}]}, "text": "IBM governance solution for IBM Z"}, {"label": "text", "id": 6, "page_no": 15, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.8342742919922, "t": 469.94647216796875, "r": 540.66016, "b": 492.26154, "coord_origin": "TOPLEFT"}, "confidence": 0.9788194298744202, "cells": [{"id": 14, "text": "AI model lifecycle governance, risk management, and regulatory compliance are key to the ", "bbox": {"l": 136.8, "t": 471.04874, "r": 540.66016, "b": 480.26172, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "success of enterprises.", "bbox": {"l": 136.8, "t": 483.04855, "r": 238.91193000000004, "b": 492.26154, "coord_origin": "TOPLEFT"}}]}, "text": "AI model lifecycle governance, risk management, and regulatory compliance are key to the success of enterprises."}, {"label": "text", "id": 7, "page_no": 15, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.8035888671875, "t": 503.9425354003906, "r": 547.3551, "b": 610.21979, "coord_origin": "TOPLEFT"}, "confidence": 0.9855291247367859, "cells": [{"id": 16, "text": "AI governance is a comprehensive framework that uses a set of automated processes, ", "bbox": {"l": 136.8, "t": 505.00836, "r": 522.28375, "b": 514.22134, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "methodologies, and tools to manage an organization\u2019s use of AI. Consistent principles ", "bbox": {"l": 136.8, "t": 517.00818, "r": 518.83173, "b": 526.22116, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "guiding the design, development, deployment, and monitoring of models are critical in driving ", "bbox": {"l": 136.8, "t": 529.00797, "r": 547.24677, "b": 538.22098, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "responsible and trustworthy AI. AI governance includes processes that trace and record the ", "bbox": {"l": 136.8, "t": 541.00778, "r": 543.55243, "b": 550.22078, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "origin of data, models (including associated metadata), and pipelines for audits. The details of ", "bbox": {"l": 136.8, "t": 553.00758, "r": 547.3551, "b": 562.22058, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "entry should include the techniques that trained each model, the hyperparameters that were ", "bbox": {"l": 136.8, "t": 565.00739, "r": 545.16895, "b": 574.22038, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "used, and the metrics from testing phases. These details provide increased transparency into ", "bbox": {"l": 136.8, "t": 577.00719, "r": 547.3075, "b": 586.22018, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "the model\u2019s behavior throughout the lifecycle, the data that was influential in its development, ", "bbox": {"l": 136.8, "t": 589.00699, "r": 547.27661, "b": 598.21999, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "and the possible risks.", "bbox": {"l": 136.8, "t": 601.00679, "r": 235.71976, "b": 610.21979, "coord_origin": "TOPLEFT"}}]}, "text": "AI governance is a comprehensive framework that uses a set of automated processes, methodologies, and tools to manage an organization\u2019s use of AI. Consistent principles guiding the design, development, deployment, and monitoring of models are critical in driving responsible and trustworthy AI. AI governance includes processes that trace and record the origin of data, models (including associated metadata), and pipelines for audits. The details of entry should include the techniques that trained each model, the hyperparameters that were used, and the metrics from testing phases. These details provide increased transparency into the model\u2019s behavior throughout the lifecycle, the data that was influential in its development, and the possible risks."}, {"label": "text", "id": 8, "page_no": 15, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.9875030517578, "t": 621.9910888671875, "r": 543.35425, "b": 668.23876, "coord_origin": "TOPLEFT"}, "confidence": 0.9869634509086609, "cells": [{"id": 25, "text": "In a world where trust, transparency and explainable AI matters, every organization wants ", "bbox": {"l": 136.8, "t": 623.02635, "r": 535.70215, "b": 632.2393500000001, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "compliance along with the comfort of understanding how analytic insights and decisions are ", "bbox": {"l": 136.8, "t": 635.02615, "r": 543.35425, "b": 644.23915, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "made. The following sections describe some of the principles and organizational ", "bbox": {"l": 136.8, "t": 647.0259599999999, "r": 493.54346000000004, "b": 656.2389499999999, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "requirements for AI governance. ", "bbox": {"l": 136.8, "t": 659.02576, "r": 282.2887, "b": 668.23876, "coord_origin": "TOPLEFT"}}]}, "text": "In a world where trust, transparency and explainable AI matters, every organization wants compliance along with the comfort of understanding how analytic insights and decisions are made. The following sections describe some of the principles and organizational requirements for AI governance."}, {"label": "picture", "id": 9, "page_no": 15, "cluster": {"id": 9, "label": "picture", "bbox": {"l": 63.77848434448242, "t": 131.25733947753906, "r": 546.8060302734375, "b": 329.46014404296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9830358028411865, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 15, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.407470703125, "t": 754.3117065429688, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9113772511482239, "cells": [{"id": 0, "text": "14 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "14"}, {"label": "page_footer", "id": 1, "page_no": 15, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.1883316040039, "t": 754.7257080078125, "r": 267.0744, "b": 764.1552124023438, "coord_origin": "TOPLEFT"}, "confidence": 0.9578691720962524, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}]}}, {"page_no": 16, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "15", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Lifecycle governance", "bbox": {"l": 136.8, "t": 71.43622000000005, "r": 248.5215, "b": 81.59276999999997, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Lifecycle governance helps you manage your business information throughout its lifecycle, ", "bbox": {"l": 136.8, "t": 86.50867000000005, "r": 539.15723, "b": 95.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "that is, from creation to deletion. IBM AI governance addresses the problems that challenge ", "bbox": {"l": 136.8, "t": 98.50847999999996, "r": 544.04358, "b": 107.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "records managements: ", "bbox": {"l": 136.8, "t": 110.50829999999996, "r": 241.75150000000002, "b": 119.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 127.63751000000002, "r": 141.78, "b": 136.41228999999998, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Monitor, catalog, and govern AI models from anywhere throughout the AI lifecycle. ", "bbox": {"l": 151.20016, "t": 127.48810000000014, "r": 517.36163, "b": 136.70110999999997, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "GLYPH", "bbox": {"l": 136.8, "t": 144.67705999999998, "r": 141.78, "b": 153.45183999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Automate the capture of model metadata for report generation.", "bbox": {"l": 151.20016, "t": 144.52765, "r": 428.48267, "b": 153.74066000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 161.65686000000005, "r": 141.78, "b": 170.43164000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Drive transparent and explainable AI at scale.", "bbox": {"l": 151.20016, "t": 161.50744999999995, "r": 352.83337, "b": 170.72046, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "GLYPH", "bbox": {"l": 136.8, "t": 178.63666, "r": 141.78, "b": 187.41143999999997, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Increase accuracy of predictions by identifying how AI is used and where it is lagging. ", "bbox": {"l": 151.20016, "t": 178.48724000000004, "r": 531.14728, "b": 187.70025999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Risk management", "bbox": {"l": 136.8, "t": 201.45636000000002, "r": 230.82613, "b": 211.61292000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Risk management is used in IBM AI governance to identify, manage, monitor, and report on ", "bbox": {"l": 136.8, "t": 216.52868999999998, "r": 544.07233, "b": 225.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "risk and compliance initiatives at scale: ", "bbox": {"l": 136.8, "t": 228.5285, "r": 311.84103, "b": 237.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "GLYPH", "bbox": {"l": 136.8, "t": 245.65770999999995, "r": 141.78, "b": 254.4325, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Automate facts and workflow management to comply with business standards.", "bbox": {"l": 151.20016, "t": 245.50829999999996, "r": 497.78207, "b": 254.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "GLYPH", "bbox": {"l": 136.8, "t": 262.63751, "r": 141.78, "b": 271.41229, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Use dynamic dashboards for clear and concise customizable results.", "bbox": {"l": 151.20016, "t": 262.48810000000003, "r": 455.01303, "b": 271.70110999999997, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "GLYPH", "bbox": {"l": 136.8, "t": 279.67711999999995, "r": 141.78, "b": 288.45187, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Enhanced collaboration across multiple regions and geographies.", "bbox": {"l": 151.20016, "t": 279.52770999999996, "r": 440.54816000000005, "b": 288.74069, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Regulatory compliance", "bbox": {"l": 136.8, "t": 302.43637, "r": 257.70956, "b": 312.59286, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "Regulatory compliance is a set of rules that organizations must follow to protect sensitive ", "bbox": {"l": 136.8, "t": 317.50872999999996, "r": 531.79254, "b": 326.72171, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "information and ensure human safety. Any business that works with digital assets, consumer ", "bbox": {"l": 136.8, "t": 329.50854, "r": 547.24664, "b": 338.72153, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "data, health regulations, employee safety, and private communications is subject to regulatory ", "bbox": {"l": 136.8, "t": 341.50836, "r": 547.24664, "b": 350.72134, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "compliance.$^{3}$ The IBM AI governance solution for IBM Z includes the following tasks:", "bbox": {"l": 136.80002, "t": 353.5081799999999, "r": 510.17843999999997, "b": 362.72116, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "GLYPH", "bbox": {"l": 136.80005, "t": 370.63791, "r": 141.78004, "b": 379.41269000000005, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Help adhere to external AI regulations for audit and compliance.", "bbox": {"l": 151.20021, "t": 370.48853, "r": 433.33899, "b": 379.70151, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "GLYPH", "bbox": {"l": 136.80005, "t": 387.6774899999999, "r": 141.78004, "b": 396.45227, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Convert external AI regulations into policies for automatic enforcement.", "bbox": {"l": 151.20021, "t": 387.52811, "r": 465.02979000000005, "b": 396.74109, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "GLYPH", "bbox": {"l": 136.80005, "t": 404.65729, "r": 141.78004, "b": 413.43207, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Use dynamic dashboards for compliance status across policies and regulations.", "bbox": {"l": 151.20021, "t": 404.50790000000006, "r": 503.32617, "b": 413.72089000000005, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Enterprises can develop AI models and deploy them by using IBM Watson Studio or WML on ", "bbox": {"l": 136.80003, "t": 426.52747, "r": 547.25159, "b": 435.74045, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "CP4D on Red Hat OpenShift on a virtual machine that is based on IBM z/VM or Red Hat ", "bbox": {"l": 136.80003, "t": 438.52728, "r": 529.5835, "b": 447.74026, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Enterprise Linux KVM on IBM Z. AI governance on IBM LinuxONE is supported in the ", "bbox": {"l": 136.80003, "t": 450.5271, "r": 516.83972, "b": 459.74008, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "following two ways: ", "bbox": {"l": 136.80003, "t": 462.52692, "r": 225.04564000000002, "b": 471.7399, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "GLYPH", "bbox": {"l": 136.80003, "t": 479.6561, "r": 141.78003, "b": 488.43088, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Monitor the AI models with Watson OpenScale on CP4D on Red Hat OpenShift on a ", "bbox": {"l": 151.2002, "t": 479.50671, "r": 526.84161, "b": 488.7197, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "virtual machine on IBM Z.", "bbox": {"l": 151.2002, "t": 491.50653, "r": 264.54898, "b": 500.71951, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "GLYPH", "bbox": {"l": 136.80003, "t": 508.6955, "r": 141.78003, "b": 517.47028, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Enterprises can develop AI models by creating and training models by using Watson ", "bbox": {"l": 151.2002, "t": 508.54611, "r": 526.73706, "b": 517.75909, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Studio and development tools such as Jupyter Notebook or JupyterLab, and then ", "bbox": {"l": 151.2002, "t": 520.54593, "r": 512.31305, "b": 529.75891, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "deploying the model onto WML on CP4D on Red Hat OpenShift on a virtual machine on ", "bbox": {"l": 151.2002, "t": 532.5457200000001, "r": 541.80554, "b": 541.75873, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "IBM Z. Then, these enterprises can achieve end-end AI governance by running AI ", "bbox": {"l": 151.2002, "t": 544.54553, "r": 515.66156, "b": 553.7585300000001, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Factsheets, IBM Watson OpenScale, and IBM Watson OpenPagesfi on CP4D on x86.", "bbox": {"l": 151.2002, "t": 556.54533, "r": 533.65723, "b": 565.75833, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "Figure 9 on page 16 shows the end-to-end flow for a remote AI governance solution. ", "bbox": {"l": 136.80003, "t": 578.50514, "r": 512.49115, "b": 587.71814, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "$^{3 }$https://www.proofpoint.com/us/threat-reference/regulatory-compliance", "bbox": {"l": 136.8, "t": 727.709961, "r": 418.26596, "b": 734.740341, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 535.963623046875, "t": 754.3152465820312, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9105063676834106, "cells": [{"id": 0, "text": "15", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "section_header", "bbox": {"l": 136.3389434814453, "t": 70.3511962890625, "r": 249.09483337402344, "b": 81.77921295166016, "coord_origin": "TOPLEFT"}, "confidence": 0.9597545266151428, "cells": [{"id": 1, "text": "Lifecycle governance", "bbox": {"l": 136.8, "t": 71.43622000000005, "r": 248.5215, "b": 81.59276999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.980224609375, "t": 85.47271728515625, "r": 544.04358, "b": 119.72131000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9820835590362549, "cells": [{"id": 2, "text": "Lifecycle governance helps you manage your business information throughout its lifecycle, ", "bbox": {"l": 136.8, "t": 86.50867000000005, "r": 539.15723, "b": 95.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "that is, from creation to deletion. IBM AI governance addresses the problems that challenge ", "bbox": {"l": 136.8, "t": 98.50847999999996, "r": 544.04358, "b": 107.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "records managements: ", "bbox": {"l": 136.8, "t": 110.50829999999996, "r": 241.75150000000002, "b": 119.72131000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "list_item", "bbox": {"l": 135.69290161132812, "t": 126.65188598632812, "r": 517.36163, "b": 137.11279296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9599407315254211, "cells": [{"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 127.63751000000002, "r": 141.78, "b": 136.41228999999998, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Monitor, catalog, and govern AI models from anywhere throughout the AI lifecycle. ", "bbox": {"l": 151.20016, "t": 127.48810000000014, "r": 517.36163, "b": 136.70110999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 135.61203002929688, "t": 144.06478881835938, "r": 428.48267, "b": 154.2803192138672, "coord_origin": "TOPLEFT"}, "confidence": 0.9574074745178223, "cells": [{"id": 7, "text": "GLYPH", "bbox": {"l": 136.8, "t": 144.67705999999998, "r": 141.78, "b": 153.45183999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Automate the capture of model metadata for report generation.", "bbox": {"l": 151.20016, "t": 144.52765, "r": 428.48267, "b": 153.74066000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 135.6266632080078, "t": 160.60958862304688, "r": 352.83337, "b": 170.9593963623047, "coord_origin": "TOPLEFT"}, "confidence": 0.9567543864250183, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 161.65686000000005, "r": 141.78, "b": 170.43164000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Drive transparent and explainable AI at scale.", "bbox": {"l": 151.20016, "t": 161.50744999999995, "r": 352.83337, "b": 170.72046, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.69007873535156, "t": 177.45838928222656, "r": 531.14728, "b": 187.81533813476562, "coord_origin": "TOPLEFT"}, "confidence": 0.9560735821723938, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.8, "t": 178.63666, "r": 141.78, "b": 187.41143999999997, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Increase accuracy of predictions by identifying how AI is used and where it is lagging. ", "bbox": {"l": 151.20016, "t": 178.48724000000004, "r": 531.14728, "b": 187.70025999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "section_header", "bbox": {"l": 136.56716918945312, "t": 200.49346923828125, "r": 231.8074951171875, "b": 211.7656707763672, "coord_origin": "TOPLEFT"}, "confidence": 0.9554390907287598, "cells": [{"id": 13, "text": "Risk management", "bbox": {"l": 136.8, "t": 201.45636000000002, "r": 230.82613, "b": 211.61292000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 136.1630859375, "t": 216.0500030517578, "r": 544.07233, "b": 237.92694091796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9777550101280212, "cells": [{"id": 14, "text": "Risk management is used in IBM AI governance to identify, manage, monitor, and report on ", "bbox": {"l": 136.8, "t": 216.52868999999998, "r": 544.07233, "b": 225.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "risk and compliance initiatives at scale: ", "bbox": {"l": 136.8, "t": 228.5285, "r": 311.84103, "b": 237.74152000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.6591033935547, "t": 244.775146484375, "r": 497.78207, "b": 254.89271545410156, "coord_origin": "TOPLEFT"}, "confidence": 0.9544404745101929, "cells": [{"id": 16, "text": "GLYPH", "bbox": {"l": 136.8, "t": 245.65770999999995, "r": 141.78, "b": 254.4325, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Automate facts and workflow management to comply with business standards.", "bbox": {"l": 151.20016, "t": 245.50829999999996, "r": 497.78207, "b": 254.72131000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 135.6646270751953, "t": 261.35205078125, "r": 455.01303, "b": 271.70110999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9548507332801819, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.8, "t": 262.63751, "r": 141.78, "b": 271.41229, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Use dynamic dashboards for clear and concise customizable results.", "bbox": {"l": 151.20016, "t": 262.48810000000003, "r": 455.01303, "b": 271.70110999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 135.5814971923828, "t": 278.5577087402344, "r": 440.54816000000005, "b": 288.8544616699219, "coord_origin": "TOPLEFT"}, "confidence": 0.9628311991691589, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.8, "t": 279.67711999999995, "r": 141.78, "b": 288.45187, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Enhanced collaboration across multiple regions and geographies.", "bbox": {"l": 151.20016, "t": 279.52770999999996, "r": 440.54816000000005, "b": 288.74069, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "section_header", "bbox": {"l": 136.37454223632812, "t": 301.3377685546875, "r": 258.3398742675781, "b": 312.59286, "coord_origin": "TOPLEFT"}, "confidence": 0.9562974572181702, "cells": [{"id": 22, "text": "Regulatory compliance", "bbox": {"l": 136.8, "t": 302.43637, "r": 257.70956, "b": 312.59286, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 135.9670867919922, "t": 316.8338928222656, "r": 547.24664, "b": 363.3339538574219, "coord_origin": "TOPLEFT"}, "confidence": 0.9852515459060669, "cells": [{"id": 23, "text": "Regulatory compliance is a set of rules that organizations must follow to protect sensitive ", "bbox": {"l": 136.8, "t": 317.50872999999996, "r": 531.79254, "b": 326.72171, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "information and ensure human safety. Any business that works with digital assets, consumer ", "bbox": {"l": 136.8, "t": 329.50854, "r": 547.24664, "b": 338.72153, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "data, health regulations, employee safety, and private communications is subject to regulatory ", "bbox": {"l": 136.8, "t": 341.50836, "r": 547.24664, "b": 350.72134, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "compliance.$^{3}$ The IBM AI governance solution for IBM Z includes the following tasks:", "bbox": {"l": 136.80002, "t": 353.5081799999999, "r": 510.17843999999997, "b": 362.72116, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "list_item", "bbox": {"l": 135.71563720703125, "t": 369.3797607421875, "r": 433.33899, "b": 379.9487609863281, "coord_origin": "TOPLEFT"}, "confidence": 0.9577170014381409, "cells": [{"id": 27, "text": "GLYPH", "bbox": {"l": 136.80005, "t": 370.63791, "r": 141.78004, "b": 379.41269000000005, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Help adhere to external AI regulations for audit and compliance.", "bbox": {"l": 151.20021, "t": 370.48853, "r": 433.33899, "b": 379.70151, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "list_item", "bbox": {"l": 135.65516662597656, "t": 386.6414794921875, "r": 465.02979000000005, "b": 397.0399169921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9534773826599121, "cells": [{"id": 29, "text": "GLYPH", "bbox": {"l": 136.80005, "t": 387.6774899999999, "r": 141.78004, "b": 396.45227, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Convert external AI regulations into policies for automatic enforcement.", "bbox": {"l": 151.20021, "t": 387.52811, "r": 465.02979000000005, "b": 396.74109, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "list_item", "bbox": {"l": 135.6472930908203, "t": 403.3809509277344, "r": 503.32617, "b": 413.72089000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9609959721565247, "cells": [{"id": 31, "text": "GLYPH", "bbox": {"l": 136.80005, "t": 404.65729, "r": 141.78004, "b": 413.43207, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Use dynamic dashboards for compliance status across policies and regulations.", "bbox": {"l": 151.20021, "t": 404.50790000000006, "r": 503.32617, "b": 413.72089000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "text", "bbox": {"l": 136.04916381835938, "t": 425.9317932128906, "r": 547.25159, "b": 472.63140869140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9851271510124207, "cells": [{"id": 33, "text": "Enterprises can develop AI models and deploy them by using IBM Watson Studio or WML on ", "bbox": {"l": 136.80003, "t": 426.52747, "r": 547.25159, "b": 435.74045, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "CP4D on Red Hat OpenShift on a virtual machine that is based on IBM z/VM or Red Hat ", "bbox": {"l": 136.80003, "t": 438.52728, "r": 529.5835, "b": 447.74026, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Enterprise Linux KVM on IBM Z. AI governance on IBM LinuxONE is supported in the ", "bbox": {"l": 136.80003, "t": 450.5271, "r": 516.83972, "b": 459.74008, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "following two ways: ", "bbox": {"l": 136.80003, "t": 462.52692, "r": 225.04564000000002, "b": 471.7399, "coord_origin": "TOPLEFT"}}]}, {"id": 18, "label": "list_item", "bbox": {"l": 135.6191864013672, "t": 478.54052734375, "r": 526.84161, "b": 500.71951, "coord_origin": "TOPLEFT"}, "confidence": 0.9704018831253052, "cells": [{"id": 37, "text": "GLYPH", "bbox": {"l": 136.80003, "t": 479.6561, "r": 141.78003, "b": 488.43088, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Monitor the AI models with Watson OpenScale on CP4D on Red Hat OpenShift on a ", "bbox": {"l": 151.2002, "t": 479.50671, "r": 526.84161, "b": 488.7197, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "virtual machine on IBM Z.", "bbox": {"l": 151.2002, "t": 491.50653, "r": 264.54898, "b": 500.71951, "coord_origin": "TOPLEFT"}}]}, {"id": 19, "label": "list_item", "bbox": {"l": 135.48377990722656, "t": 507.9300537109375, "r": 541.80554, "b": 566.3822631835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9851728677749634, "cells": [{"id": 40, "text": "GLYPH", "bbox": {"l": 136.80003, "t": 508.6955, "r": 141.78003, "b": 517.47028, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Enterprises can develop AI models by creating and training models by using Watson ", "bbox": {"l": 151.2002, "t": 508.54611, "r": 526.73706, "b": 517.75909, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Studio and development tools such as Jupyter Notebook or JupyterLab, and then ", "bbox": {"l": 151.2002, "t": 520.54593, "r": 512.31305, "b": 529.75891, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "deploying the model onto WML on CP4D on Red Hat OpenShift on a virtual machine on ", "bbox": {"l": 151.2002, "t": 532.5457200000001, "r": 541.80554, "b": 541.75873, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "IBM Z. Then, these enterprises can achieve end-end AI governance by running AI ", "bbox": {"l": 151.2002, "t": 544.54553, "r": 515.66156, "b": 553.7585300000001, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Factsheets, IBM Watson OpenScale, and IBM Watson OpenPagesfi on CP4D on x86.", "bbox": {"l": 151.2002, "t": 556.54533, "r": 533.65723, "b": 565.75833, "coord_origin": "TOPLEFT"}}]}, {"id": 20, "label": "text", "bbox": {"l": 136.42056274414062, "t": 577.5960693359375, "r": 512.49115, "b": 587.71814, "coord_origin": "TOPLEFT"}, "confidence": 0.9513794779777527, "cells": [{"id": 46, "text": "Figure 9 on page 16 shows the end-to-end flow for a remote AI governance solution. ", "bbox": {"l": 136.80003, "t": 578.50514, "r": 512.49115, "b": 587.71814, "coord_origin": "TOPLEFT"}}]}, {"id": 21, "label": "footnote", "bbox": {"l": 136.24427795410156, "t": 725.0267333984375, "r": 418.4429931640625, "b": 735.0806274414062, "coord_origin": "TOPLEFT"}, "confidence": 0.9410406947135925, "cells": [{"id": 47, "text": "$^{3 }$https://www.proofpoint.com/us/threat-reference/regulatory-compliance", "bbox": {"l": 136.8, "t": 727.709961, "r": 418.26596, "b": 734.740341, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 16, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 535.963623046875, "t": 754.3152465820312, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9105063676834106, "cells": [{"id": 0, "text": "15", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "15"}, {"label": "section_header", "id": 1, "page_no": 16, "cluster": {"id": 1, "label": "section_header", "bbox": {"l": 136.3389434814453, "t": 70.3511962890625, "r": 249.09483337402344, "b": 81.77921295166016, "coord_origin": "TOPLEFT"}, "confidence": 0.9597545266151428, "cells": [{"id": 1, "text": "Lifecycle governance", "bbox": {"l": 136.8, "t": 71.43622000000005, "r": 248.5215, "b": 81.59276999999997, "coord_origin": "TOPLEFT"}}]}, "text": "Lifecycle governance"}, {"label": "text", "id": 2, "page_no": 16, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.980224609375, "t": 85.47271728515625, "r": 544.04358, "b": 119.72131000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9820835590362549, "cells": [{"id": 2, "text": "Lifecycle governance helps you manage your business information throughout its lifecycle, ", "bbox": {"l": 136.8, "t": 86.50867000000005, "r": 539.15723, "b": 95.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "that is, from creation to deletion. IBM AI governance addresses the problems that challenge ", "bbox": {"l": 136.8, "t": 98.50847999999996, "r": 544.04358, "b": 107.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "records managements: ", "bbox": {"l": 136.8, "t": 110.50829999999996, "r": 241.75150000000002, "b": 119.72131000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Lifecycle governance helps you manage your business information throughout its lifecycle, that is, from creation to deletion. IBM AI governance addresses the problems that challenge records managements:"}, {"label": "list_item", "id": 3, "page_no": 16, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 135.69290161132812, "t": 126.65188598632812, "r": 517.36163, "b": 137.11279296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9599407315254211, "cells": [{"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 127.63751000000002, "r": 141.78, "b": 136.41228999999998, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Monitor, catalog, and govern AI models from anywhere throughout the AI lifecycle. ", "bbox": {"l": 151.20016, "t": 127.48810000000014, "r": 517.36163, "b": 136.70110999999997, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Monitor, catalog, and govern AI models from anywhere throughout the AI lifecycle."}, {"label": "list_item", "id": 4, "page_no": 16, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.61203002929688, "t": 144.06478881835938, "r": 428.48267, "b": 154.2803192138672, "coord_origin": "TOPLEFT"}, "confidence": 0.9574074745178223, "cells": [{"id": 7, "text": "GLYPH", "bbox": {"l": 136.8, "t": 144.67705999999998, "r": 141.78, "b": 153.45183999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Automate the capture of model metadata for report generation.", "bbox": {"l": 151.20016, "t": 144.52765, "r": 428.48267, "b": 153.74066000000005, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Automate the capture of model metadata for report generation."}, {"label": "list_item", "id": 5, "page_no": 16, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.6266632080078, "t": 160.60958862304688, "r": 352.83337, "b": 170.9593963623047, "coord_origin": "TOPLEFT"}, "confidence": 0.9567543864250183, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 161.65686000000005, "r": 141.78, "b": 170.43164000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Drive transparent and explainable AI at scale.", "bbox": {"l": 151.20016, "t": 161.50744999999995, "r": 352.83337, "b": 170.72046, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Drive transparent and explainable AI at scale."}, {"label": "list_item", "id": 6, "page_no": 16, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.69007873535156, "t": 177.45838928222656, "r": 531.14728, "b": 187.81533813476562, "coord_origin": "TOPLEFT"}, "confidence": 0.9560735821723938, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.8, "t": 178.63666, "r": 141.78, "b": 187.41143999999997, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Increase accuracy of predictions by identifying how AI is used and where it is lagging. ", "bbox": {"l": 151.20016, "t": 178.48724000000004, "r": 531.14728, "b": 187.70025999999996, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Increase accuracy of predictions by identifying how AI is used and where it is lagging."}, {"label": "section_header", "id": 7, "page_no": 16, "cluster": {"id": 7, "label": "section_header", "bbox": {"l": 136.56716918945312, "t": 200.49346923828125, "r": 231.8074951171875, "b": 211.7656707763672, "coord_origin": "TOPLEFT"}, "confidence": 0.9554390907287598, "cells": [{"id": 13, "text": "Risk management", "bbox": {"l": 136.8, "t": 201.45636000000002, "r": 230.82613, "b": 211.61292000000003, "coord_origin": "TOPLEFT"}}]}, "text": "Risk management"}, {"label": "text", "id": 8, "page_no": 16, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.1630859375, "t": 216.0500030517578, "r": 544.07233, "b": 237.92694091796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9777550101280212, "cells": [{"id": 14, "text": "Risk management is used in IBM AI governance to identify, manage, monitor, and report on ", "bbox": {"l": 136.8, "t": 216.52868999999998, "r": 544.07233, "b": 225.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "risk and compliance initiatives at scale: ", "bbox": {"l": 136.8, "t": 228.5285, "r": 311.84103, "b": 237.74152000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Risk management is used in IBM AI governance to identify, manage, monitor, and report on risk and compliance initiatives at scale:"}, {"label": "list_item", "id": 9, "page_no": 16, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.6591033935547, "t": 244.775146484375, "r": 497.78207, "b": 254.89271545410156, "coord_origin": "TOPLEFT"}, "confidence": 0.9544404745101929, "cells": [{"id": 16, "text": "GLYPH", "bbox": {"l": 136.8, "t": 245.65770999999995, "r": 141.78, "b": 254.4325, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Automate facts and workflow management to comply with business standards.", "bbox": {"l": 151.20016, "t": 245.50829999999996, "r": 497.78207, "b": 254.72131000000002, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Automate facts and workflow management to comply with business standards."}, {"label": "list_item", "id": 10, "page_no": 16, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.6646270751953, "t": 261.35205078125, "r": 455.01303, "b": 271.70110999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9548507332801819, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.8, "t": 262.63751, "r": 141.78, "b": 271.41229, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Use dynamic dashboards for clear and concise customizable results.", "bbox": {"l": 151.20016, "t": 262.48810000000003, "r": 455.01303, "b": 271.70110999999997, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Use dynamic dashboards for clear and concise customizable results."}, {"label": "list_item", "id": 11, "page_no": 16, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.5814971923828, "t": 278.5577087402344, "r": 440.54816000000005, "b": 288.8544616699219, "coord_origin": "TOPLEFT"}, "confidence": 0.9628311991691589, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.8, "t": 279.67711999999995, "r": 141.78, "b": 288.45187, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Enhanced collaboration across multiple regions and geographies.", "bbox": {"l": 151.20016, "t": 279.52770999999996, "r": 440.54816000000005, "b": 288.74069, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Enhanced collaboration across multiple regions and geographies."}, {"label": "section_header", "id": 12, "page_no": 16, "cluster": {"id": 12, "label": "section_header", "bbox": {"l": 136.37454223632812, "t": 301.3377685546875, "r": 258.3398742675781, "b": 312.59286, "coord_origin": "TOPLEFT"}, "confidence": 0.9562974572181702, "cells": [{"id": 22, "text": "Regulatory compliance", "bbox": {"l": 136.8, "t": 302.43637, "r": 257.70956, "b": 312.59286, "coord_origin": "TOPLEFT"}}]}, "text": "Regulatory compliance"}, {"label": "text", "id": 13, "page_no": 16, "cluster": {"id": 13, "label": "text", "bbox": {"l": 135.9670867919922, "t": 316.8338928222656, "r": 547.24664, "b": 363.3339538574219, "coord_origin": "TOPLEFT"}, "confidence": 0.9852515459060669, "cells": [{"id": 23, "text": "Regulatory compliance is a set of rules that organizations must follow to protect sensitive ", "bbox": {"l": 136.8, "t": 317.50872999999996, "r": 531.79254, "b": 326.72171, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "information and ensure human safety. Any business that works with digital assets, consumer ", "bbox": {"l": 136.8, "t": 329.50854, "r": 547.24664, "b": 338.72153, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "data, health regulations, employee safety, and private communications is subject to regulatory ", "bbox": {"l": 136.8, "t": 341.50836, "r": 547.24664, "b": 350.72134, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "compliance.$^{3}$ The IBM AI governance solution for IBM Z includes the following tasks:", "bbox": {"l": 136.80002, "t": 353.5081799999999, "r": 510.17843999999997, "b": 362.72116, "coord_origin": "TOPLEFT"}}]}, "text": "Regulatory compliance is a set of rules that organizations must follow to protect sensitive information and ensure human safety. Any business that works with digital assets, consumer data, health regulations, employee safety, and private communications is subject to regulatory compliance.$^{3}$ The IBM AI governance solution for IBM Z includes the following tasks:"}, {"label": "list_item", "id": 14, "page_no": 16, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 135.71563720703125, "t": 369.3797607421875, "r": 433.33899, "b": 379.9487609863281, "coord_origin": "TOPLEFT"}, "confidence": 0.9577170014381409, "cells": [{"id": 27, "text": "GLYPH", "bbox": {"l": 136.80005, "t": 370.63791, "r": 141.78004, "b": 379.41269000000005, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Help adhere to external AI regulations for audit and compliance.", "bbox": {"l": 151.20021, "t": 370.48853, "r": 433.33899, "b": 379.70151, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Help adhere to external AI regulations for audit and compliance."}, {"label": "list_item", "id": 15, "page_no": 16, "cluster": {"id": 15, "label": "list_item", "bbox": {"l": 135.65516662597656, "t": 386.6414794921875, "r": 465.02979000000005, "b": 397.0399169921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9534773826599121, "cells": [{"id": 29, "text": "GLYPH", "bbox": {"l": 136.80005, "t": 387.6774899999999, "r": 141.78004, "b": 396.45227, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Convert external AI regulations into policies for automatic enforcement.", "bbox": {"l": 151.20021, "t": 387.52811, "r": 465.02979000000005, "b": 396.74109, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Convert external AI regulations into policies for automatic enforcement."}, {"label": "list_item", "id": 16, "page_no": 16, "cluster": {"id": 16, "label": "list_item", "bbox": {"l": 135.6472930908203, "t": 403.3809509277344, "r": 503.32617, "b": 413.72089000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9609959721565247, "cells": [{"id": 31, "text": "GLYPH", "bbox": {"l": 136.80005, "t": 404.65729, "r": 141.78004, "b": 413.43207, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Use dynamic dashboards for compliance status across policies and regulations.", "bbox": {"l": 151.20021, "t": 404.50790000000006, "r": 503.32617, "b": 413.72089000000005, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Use dynamic dashboards for compliance status across policies and regulations."}, {"label": "text", "id": 17, "page_no": 16, "cluster": {"id": 17, "label": "text", "bbox": {"l": 136.04916381835938, "t": 425.9317932128906, "r": 547.25159, "b": 472.63140869140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9851271510124207, "cells": [{"id": 33, "text": "Enterprises can develop AI models and deploy them by using IBM Watson Studio or WML on ", "bbox": {"l": 136.80003, "t": 426.52747, "r": 547.25159, "b": 435.74045, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "CP4D on Red Hat OpenShift on a virtual machine that is based on IBM z/VM or Red Hat ", "bbox": {"l": 136.80003, "t": 438.52728, "r": 529.5835, "b": 447.74026, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Enterprise Linux KVM on IBM Z. AI governance on IBM LinuxONE is supported in the ", "bbox": {"l": 136.80003, "t": 450.5271, "r": 516.83972, "b": 459.74008, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "following two ways: ", "bbox": {"l": 136.80003, "t": 462.52692, "r": 225.04564000000002, "b": 471.7399, "coord_origin": "TOPLEFT"}}]}, "text": "Enterprises can develop AI models and deploy them by using IBM Watson Studio or WML on CP4D on Red Hat OpenShift on a virtual machine that is based on IBM z/VM or Red Hat Enterprise Linux KVM on IBM Z. AI governance on IBM LinuxONE is supported in the following two ways:"}, {"label": "list_item", "id": 18, "page_no": 16, "cluster": {"id": 18, "label": "list_item", "bbox": {"l": 135.6191864013672, "t": 478.54052734375, "r": 526.84161, "b": 500.71951, "coord_origin": "TOPLEFT"}, "confidence": 0.9704018831253052, "cells": [{"id": 37, "text": "GLYPH", "bbox": {"l": 136.80003, "t": 479.6561, "r": 141.78003, "b": 488.43088, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Monitor the AI models with Watson OpenScale on CP4D on Red Hat OpenShift on a ", "bbox": {"l": 151.2002, "t": 479.50671, "r": 526.84161, "b": 488.7197, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "virtual machine on IBM Z.", "bbox": {"l": 151.2002, "t": 491.50653, "r": 264.54898, "b": 500.71951, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Monitor the AI models with Watson OpenScale on CP4D on Red Hat OpenShift on a virtual machine on IBM Z."}, {"label": "list_item", "id": 19, "page_no": 16, "cluster": {"id": 19, "label": "list_item", "bbox": {"l": 135.48377990722656, "t": 507.9300537109375, "r": 541.80554, "b": 566.3822631835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9851728677749634, "cells": [{"id": 40, "text": "GLYPH", "bbox": {"l": 136.80003, "t": 508.6955, "r": 141.78003, "b": 517.47028, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Enterprises can develop AI models by creating and training models by using Watson ", "bbox": {"l": 151.2002, "t": 508.54611, "r": 526.73706, "b": 517.75909, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Studio and development tools such as Jupyter Notebook or JupyterLab, and then ", "bbox": {"l": 151.2002, "t": 520.54593, "r": 512.31305, "b": 529.75891, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "deploying the model onto WML on CP4D on Red Hat OpenShift on a virtual machine on ", "bbox": {"l": 151.2002, "t": 532.5457200000001, "r": 541.80554, "b": 541.75873, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "IBM Z. Then, these enterprises can achieve end-end AI governance by running AI ", "bbox": {"l": 151.2002, "t": 544.54553, "r": 515.66156, "b": 553.7585300000001, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Factsheets, IBM Watson OpenScale, and IBM Watson OpenPagesfi on CP4D on x86.", "bbox": {"l": 151.2002, "t": 556.54533, "r": 533.65723, "b": 565.75833, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Enterprises can develop AI models by creating and training models by using Watson Studio and development tools such as Jupyter Notebook or JupyterLab, and then deploying the model onto WML on CP4D on Red Hat OpenShift on a virtual machine on IBM Z. Then, these enterprises can achieve end-end AI governance by running AI Factsheets, IBM Watson OpenScale, and IBM Watson OpenPagesfi on CP4D on x86."}, {"label": "text", "id": 20, "page_no": 16, "cluster": {"id": 20, "label": "text", "bbox": {"l": 136.42056274414062, "t": 577.5960693359375, "r": 512.49115, "b": 587.71814, "coord_origin": "TOPLEFT"}, "confidence": 0.9513794779777527, "cells": [{"id": 46, "text": "Figure 9 on page 16 shows the end-to-end flow for a remote AI governance solution. ", "bbox": {"l": 136.80003, "t": 578.50514, "r": 512.49115, "b": 587.71814, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 9 on page 16 shows the end-to-end flow for a remote AI governance solution."}, {"label": "footnote", "id": 21, "page_no": 16, "cluster": {"id": 21, "label": "footnote", "bbox": {"l": 136.24427795410156, "t": 725.0267333984375, "r": 418.4429931640625, "b": 735.0806274414062, "coord_origin": "TOPLEFT"}, "confidence": 0.9410406947135925, "cells": [{"id": 47, "text": "$^{3 }$https://www.proofpoint.com/us/threat-reference/regulatory-compliance", "bbox": {"l": 136.8, "t": 727.709961, "r": 418.26596, "b": 734.740341, "coord_origin": "TOPLEFT"}}]}, "text": "$^{3 }$https://www.proofpoint.com/us/threat-reference/regulatory-compliance"}], "body": [{"label": "section_header", "id": 1, "page_no": 16, "cluster": {"id": 1, "label": "section_header", "bbox": {"l": 136.3389434814453, "t": 70.3511962890625, "r": 249.09483337402344, "b": 81.77921295166016, "coord_origin": "TOPLEFT"}, "confidence": 0.9597545266151428, "cells": [{"id": 1, "text": "Lifecycle governance", "bbox": {"l": 136.8, "t": 71.43622000000005, "r": 248.5215, "b": 81.59276999999997, "coord_origin": "TOPLEFT"}}]}, "text": "Lifecycle governance"}, {"label": "text", "id": 2, "page_no": 16, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.980224609375, "t": 85.47271728515625, "r": 544.04358, "b": 119.72131000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.9820835590362549, "cells": [{"id": 2, "text": "Lifecycle governance helps you manage your business information throughout its lifecycle, ", "bbox": {"l": 136.8, "t": 86.50867000000005, "r": 539.15723, "b": 95.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "that is, from creation to deletion. IBM AI governance addresses the problems that challenge ", "bbox": {"l": 136.8, "t": 98.50847999999996, "r": 544.04358, "b": 107.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "records managements: ", "bbox": {"l": 136.8, "t": 110.50829999999996, "r": 241.75150000000002, "b": 119.72131000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Lifecycle governance helps you manage your business information throughout its lifecycle, that is, from creation to deletion. IBM AI governance addresses the problems that challenge records managements:"}, {"label": "list_item", "id": 3, "page_no": 16, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 135.69290161132812, "t": 126.65188598632812, "r": 517.36163, "b": 137.11279296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9599407315254211, "cells": [{"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 127.63751000000002, "r": 141.78, "b": 136.41228999999998, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Monitor, catalog, and govern AI models from anywhere throughout the AI lifecycle. ", "bbox": {"l": 151.20016, "t": 127.48810000000014, "r": 517.36163, "b": 136.70110999999997, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Monitor, catalog, and govern AI models from anywhere throughout the AI lifecycle."}, {"label": "list_item", "id": 4, "page_no": 16, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.61203002929688, "t": 144.06478881835938, "r": 428.48267, "b": 154.2803192138672, "coord_origin": "TOPLEFT"}, "confidence": 0.9574074745178223, "cells": [{"id": 7, "text": "GLYPH", "bbox": {"l": 136.8, "t": 144.67705999999998, "r": 141.78, "b": 153.45183999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Automate the capture of model metadata for report generation.", "bbox": {"l": 151.20016, "t": 144.52765, "r": 428.48267, "b": 153.74066000000005, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Automate the capture of model metadata for report generation."}, {"label": "list_item", "id": 5, "page_no": 16, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.6266632080078, "t": 160.60958862304688, "r": 352.83337, "b": 170.9593963623047, "coord_origin": "TOPLEFT"}, "confidence": 0.9567543864250183, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 161.65686000000005, "r": 141.78, "b": 170.43164000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Drive transparent and explainable AI at scale.", "bbox": {"l": 151.20016, "t": 161.50744999999995, "r": 352.83337, "b": 170.72046, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Drive transparent and explainable AI at scale."}, {"label": "list_item", "id": 6, "page_no": 16, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.69007873535156, "t": 177.45838928222656, "r": 531.14728, "b": 187.81533813476562, "coord_origin": "TOPLEFT"}, "confidence": 0.9560735821723938, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.8, "t": 178.63666, "r": 141.78, "b": 187.41143999999997, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Increase accuracy of predictions by identifying how AI is used and where it is lagging. ", "bbox": {"l": 151.20016, "t": 178.48724000000004, "r": 531.14728, "b": 187.70025999999996, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Increase accuracy of predictions by identifying how AI is used and where it is lagging."}, {"label": "section_header", "id": 7, "page_no": 16, "cluster": {"id": 7, "label": "section_header", "bbox": {"l": 136.56716918945312, "t": 200.49346923828125, "r": 231.8074951171875, "b": 211.7656707763672, "coord_origin": "TOPLEFT"}, "confidence": 0.9554390907287598, "cells": [{"id": 13, "text": "Risk management", "bbox": {"l": 136.8, "t": 201.45636000000002, "r": 230.82613, "b": 211.61292000000003, "coord_origin": "TOPLEFT"}}]}, "text": "Risk management"}, {"label": "text", "id": 8, "page_no": 16, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.1630859375, "t": 216.0500030517578, "r": 544.07233, "b": 237.92694091796875, "coord_origin": "TOPLEFT"}, "confidence": 0.9777550101280212, "cells": [{"id": 14, "text": "Risk management is used in IBM AI governance to identify, manage, monitor, and report on ", "bbox": {"l": 136.8, "t": 216.52868999999998, "r": 544.07233, "b": 225.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "risk and compliance initiatives at scale: ", "bbox": {"l": 136.8, "t": 228.5285, "r": 311.84103, "b": 237.74152000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Risk management is used in IBM AI governance to identify, manage, monitor, and report on risk and compliance initiatives at scale:"}, {"label": "list_item", "id": 9, "page_no": 16, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.6591033935547, "t": 244.775146484375, "r": 497.78207, "b": 254.89271545410156, "coord_origin": "TOPLEFT"}, "confidence": 0.9544404745101929, "cells": [{"id": 16, "text": "GLYPH", "bbox": {"l": 136.8, "t": 245.65770999999995, "r": 141.78, "b": 254.4325, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Automate facts and workflow management to comply with business standards.", "bbox": {"l": 151.20016, "t": 245.50829999999996, "r": 497.78207, "b": 254.72131000000002, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Automate facts and workflow management to comply with business standards."}, {"label": "list_item", "id": 10, "page_no": 16, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.6646270751953, "t": 261.35205078125, "r": 455.01303, "b": 271.70110999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9548507332801819, "cells": [{"id": 18, "text": "GLYPH", "bbox": {"l": 136.8, "t": 262.63751, "r": 141.78, "b": 271.41229, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Use dynamic dashboards for clear and concise customizable results.", "bbox": {"l": 151.20016, "t": 262.48810000000003, "r": 455.01303, "b": 271.70110999999997, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Use dynamic dashboards for clear and concise customizable results."}, {"label": "list_item", "id": 11, "page_no": 16, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.5814971923828, "t": 278.5577087402344, "r": 440.54816000000005, "b": 288.8544616699219, "coord_origin": "TOPLEFT"}, "confidence": 0.9628311991691589, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.8, "t": 279.67711999999995, "r": 141.78, "b": 288.45187, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Enhanced collaboration across multiple regions and geographies.", "bbox": {"l": 151.20016, "t": 279.52770999999996, "r": 440.54816000000005, "b": 288.74069, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Enhanced collaboration across multiple regions and geographies."}, {"label": "section_header", "id": 12, "page_no": 16, "cluster": {"id": 12, "label": "section_header", "bbox": {"l": 136.37454223632812, "t": 301.3377685546875, "r": 258.3398742675781, "b": 312.59286, "coord_origin": "TOPLEFT"}, "confidence": 0.9562974572181702, "cells": [{"id": 22, "text": "Regulatory compliance", "bbox": {"l": 136.8, "t": 302.43637, "r": 257.70956, "b": 312.59286, "coord_origin": "TOPLEFT"}}]}, "text": "Regulatory compliance"}, {"label": "text", "id": 13, "page_no": 16, "cluster": {"id": 13, "label": "text", "bbox": {"l": 135.9670867919922, "t": 316.8338928222656, "r": 547.24664, "b": 363.3339538574219, "coord_origin": "TOPLEFT"}, "confidence": 0.9852515459060669, "cells": [{"id": 23, "text": "Regulatory compliance is a set of rules that organizations must follow to protect sensitive ", "bbox": {"l": 136.8, "t": 317.50872999999996, "r": 531.79254, "b": 326.72171, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "information and ensure human safety. Any business that works with digital assets, consumer ", "bbox": {"l": 136.8, "t": 329.50854, "r": 547.24664, "b": 338.72153, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "data, health regulations, employee safety, and private communications is subject to regulatory ", "bbox": {"l": 136.8, "t": 341.50836, "r": 547.24664, "b": 350.72134, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "compliance.$^{3}$ The IBM AI governance solution for IBM Z includes the following tasks:", "bbox": {"l": 136.80002, "t": 353.5081799999999, "r": 510.17843999999997, "b": 362.72116, "coord_origin": "TOPLEFT"}}]}, "text": "Regulatory compliance is a set of rules that organizations must follow to protect sensitive information and ensure human safety. Any business that works with digital assets, consumer data, health regulations, employee safety, and private communications is subject to regulatory compliance.$^{3}$ The IBM AI governance solution for IBM Z includes the following tasks:"}, {"label": "list_item", "id": 14, "page_no": 16, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 135.71563720703125, "t": 369.3797607421875, "r": 433.33899, "b": 379.9487609863281, "coord_origin": "TOPLEFT"}, "confidence": 0.9577170014381409, "cells": [{"id": 27, "text": "GLYPH", "bbox": {"l": 136.80005, "t": 370.63791, "r": 141.78004, "b": 379.41269000000005, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Help adhere to external AI regulations for audit and compliance.", "bbox": {"l": 151.20021, "t": 370.48853, "r": 433.33899, "b": 379.70151, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Help adhere to external AI regulations for audit and compliance."}, {"label": "list_item", "id": 15, "page_no": 16, "cluster": {"id": 15, "label": "list_item", "bbox": {"l": 135.65516662597656, "t": 386.6414794921875, "r": 465.02979000000005, "b": 397.0399169921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9534773826599121, "cells": [{"id": 29, "text": "GLYPH", "bbox": {"l": 136.80005, "t": 387.6774899999999, "r": 141.78004, "b": 396.45227, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Convert external AI regulations into policies for automatic enforcement.", "bbox": {"l": 151.20021, "t": 387.52811, "r": 465.02979000000005, "b": 396.74109, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Convert external AI regulations into policies for automatic enforcement."}, {"label": "list_item", "id": 16, "page_no": 16, "cluster": {"id": 16, "label": "list_item", "bbox": {"l": 135.6472930908203, "t": 403.3809509277344, "r": 503.32617, "b": 413.72089000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9609959721565247, "cells": [{"id": 31, "text": "GLYPH", "bbox": {"l": 136.80005, "t": 404.65729, "r": 141.78004, "b": 413.43207, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Use dynamic dashboards for compliance status across policies and regulations.", "bbox": {"l": 151.20021, "t": 404.50790000000006, "r": 503.32617, "b": 413.72089000000005, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Use dynamic dashboards for compliance status across policies and regulations."}, {"label": "text", "id": 17, "page_no": 16, "cluster": {"id": 17, "label": "text", "bbox": {"l": 136.04916381835938, "t": 425.9317932128906, "r": 547.25159, "b": 472.63140869140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9851271510124207, "cells": [{"id": 33, "text": "Enterprises can develop AI models and deploy them by using IBM Watson Studio or WML on ", "bbox": {"l": 136.80003, "t": 426.52747, "r": 547.25159, "b": 435.74045, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "CP4D on Red Hat OpenShift on a virtual machine that is based on IBM z/VM or Red Hat ", "bbox": {"l": 136.80003, "t": 438.52728, "r": 529.5835, "b": 447.74026, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Enterprise Linux KVM on IBM Z. AI governance on IBM LinuxONE is supported in the ", "bbox": {"l": 136.80003, "t": 450.5271, "r": 516.83972, "b": 459.74008, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "following two ways: ", "bbox": {"l": 136.80003, "t": 462.52692, "r": 225.04564000000002, "b": 471.7399, "coord_origin": "TOPLEFT"}}]}, "text": "Enterprises can develop AI models and deploy them by using IBM Watson Studio or WML on CP4D on Red Hat OpenShift on a virtual machine that is based on IBM z/VM or Red Hat Enterprise Linux KVM on IBM Z. AI governance on IBM LinuxONE is supported in the following two ways:"}, {"label": "list_item", "id": 18, "page_no": 16, "cluster": {"id": 18, "label": "list_item", "bbox": {"l": 135.6191864013672, "t": 478.54052734375, "r": 526.84161, "b": 500.71951, "coord_origin": "TOPLEFT"}, "confidence": 0.9704018831253052, "cells": [{"id": 37, "text": "GLYPH", "bbox": {"l": 136.80003, "t": 479.6561, "r": 141.78003, "b": 488.43088, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Monitor the AI models with Watson OpenScale on CP4D on Red Hat OpenShift on a ", "bbox": {"l": 151.2002, "t": 479.50671, "r": 526.84161, "b": 488.7197, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "virtual machine on IBM Z.", "bbox": {"l": 151.2002, "t": 491.50653, "r": 264.54898, "b": 500.71951, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Monitor the AI models with Watson OpenScale on CP4D on Red Hat OpenShift on a virtual machine on IBM Z."}, {"label": "list_item", "id": 19, "page_no": 16, "cluster": {"id": 19, "label": "list_item", "bbox": {"l": 135.48377990722656, "t": 507.9300537109375, "r": 541.80554, "b": 566.3822631835938, "coord_origin": "TOPLEFT"}, "confidence": 0.9851728677749634, "cells": [{"id": 40, "text": "GLYPH", "bbox": {"l": 136.80003, "t": 508.6955, "r": 141.78003, "b": 517.47028, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Enterprises can develop AI models by creating and training models by using Watson ", "bbox": {"l": 151.2002, "t": 508.54611, "r": 526.73706, "b": 517.75909, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Studio and development tools such as Jupyter Notebook or JupyterLab, and then ", "bbox": {"l": 151.2002, "t": 520.54593, "r": 512.31305, "b": 529.75891, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "deploying the model onto WML on CP4D on Red Hat OpenShift on a virtual machine on ", "bbox": {"l": 151.2002, "t": 532.5457200000001, "r": 541.80554, "b": 541.75873, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "IBM Z. Then, these enterprises can achieve end-end AI governance by running AI ", "bbox": {"l": 151.2002, "t": 544.54553, "r": 515.66156, "b": 553.7585300000001, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Factsheets, IBM Watson OpenScale, and IBM Watson OpenPagesfi on CP4D on x86.", "bbox": {"l": 151.2002, "t": 556.54533, "r": 533.65723, "b": 565.75833, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Enterprises can develop AI models by creating and training models by using Watson Studio and development tools such as Jupyter Notebook or JupyterLab, and then deploying the model onto WML on CP4D on Red Hat OpenShift on a virtual machine on IBM Z. Then, these enterprises can achieve end-end AI governance by running AI Factsheets, IBM Watson OpenScale, and IBM Watson OpenPagesfi on CP4D on x86."}, {"label": "text", "id": 20, "page_no": 16, "cluster": {"id": 20, "label": "text", "bbox": {"l": 136.42056274414062, "t": 577.5960693359375, "r": 512.49115, "b": 587.71814, "coord_origin": "TOPLEFT"}, "confidence": 0.9513794779777527, "cells": [{"id": 46, "text": "Figure 9 on page 16 shows the end-to-end flow for a remote AI governance solution. ", "bbox": {"l": 136.80003, "t": 578.50514, "r": 512.49115, "b": 587.71814, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 9 on page 16 shows the end-to-end flow for a remote AI governance solution."}, {"label": "footnote", "id": 21, "page_no": 16, "cluster": {"id": 21, "label": "footnote", "bbox": {"l": 136.24427795410156, "t": 725.0267333984375, "r": 418.4429931640625, "b": 735.0806274414062, "coord_origin": "TOPLEFT"}, "confidence": 0.9410406947135925, "cells": [{"id": 47, "text": "$^{3 }$https://www.proofpoint.com/us/threat-reference/regulatory-compliance", "bbox": {"l": 136.8, "t": 727.709961, "r": 418.26596, "b": 734.740341, "coord_origin": "TOPLEFT"}}]}, "text": "$^{3 }$https://www.proofpoint.com/us/threat-reference/regulatory-compliance"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 16, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 535.963623046875, "t": 754.3152465820312, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9105063676834106, "cells": [{"id": 0, "text": "15", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "15"}]}}, {"page_no": 17, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "16 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Figure 9 Remote AI governance solution end-to-end flow", "bbox": {"l": 64.800301, "t": 294.07828, "r": 295.07071, "b": 302.40329, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "To achieve end-to-end AI governance, complete the following steps:", "bbox": {"l": 136.8, "t": 316.00872999999996, "r": 438.01648, "b": 325.22171, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "1.", "bbox": {"l": 136.8, "t": 333.04831, "r": 145.20338, "b": 342.26129, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Create a model entry in IBM OpenPages by using CP4D on a x86 platform, as shown in ", "bbox": {"l": 148.0045, "t": 333.04831, "r": 541.70392, "b": 342.26129, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Figure 10.", "bbox": {"l": 151.20015, "t": 345.04813, "r": 196.25023, "b": 354.26111, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Figure 10 Creating a model entry in IBM OpenPages", "bbox": {"l": 64.800003, "t": 669.3179, "r": 279.02966, "b": 677.6429, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.45965576171875, "t": 754.4435424804688, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9134598970413208, "cells": [{"id": 0, "text": "16 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.34640502929688, "t": 754.726318359375, "r": 267.0744, "b": 764.1643676757812, "coord_origin": "TOPLEFT"}, "confidence": 0.9585385322570801, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "caption", "bbox": {"l": 64.34585571289062, "t": 293.41015625, "r": 295.9040222167969, "b": 302.8072509765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9478130340576172, "cells": [{"id": 2, "text": "Figure 9 Remote AI governance solution end-to-end flow", "bbox": {"l": 64.800301, "t": 294.07828, "r": 295.07071, "b": 302.40329, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 136.1533203125, "t": 315.34637451171875, "r": 438.01648, "b": 325.61328125, "coord_origin": "TOPLEFT"}, "confidence": 0.8973822593688965, "cells": [{"id": 3, "text": "To achieve end-to-end AI governance, complete the following steps:", "bbox": {"l": 136.8, "t": 316.00872999999996, "r": 438.01648, "b": 325.22171, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 136.8, "t": 331.922119140625, "r": 541.70392, "b": 354.27032470703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9647595286369324, "cells": [{"id": 4, "text": "1.", "bbox": {"l": 136.8, "t": 333.04831, "r": 145.20338, "b": 342.26129, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Create a model entry in IBM OpenPages by using CP4D on a x86 platform, as shown in ", "bbox": {"l": 148.0045, "t": 333.04831, "r": 541.70392, "b": 342.26129, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Figure 10.", "bbox": {"l": 151.20015, "t": 345.04813, "r": 196.25023, "b": 354.26111, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 64.25994873046875, "t": 668.81396484375, "r": 279.38360595703125, "b": 678.0313110351562, "coord_origin": "TOPLEFT"}, "confidence": 0.9575855135917664, "cells": [{"id": 7, "text": "Figure 10 Creating a model entry in IBM OpenPages", "bbox": {"l": 64.800003, "t": 669.3179, "r": 279.02966, "b": 677.6429, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "picture", "bbox": {"l": 63.88758850097656, "t": 368.6678771972656, "r": 547.6134033203125, "b": 666.1146240234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9861761927604675, "cells": []}, {"id": 7, "label": "picture", "bbox": {"l": 64.32939147949219, "t": 77.701416015625, "r": 547.455810546875, "b": 290.7998352050781, "coord_origin": "TOPLEFT"}, "confidence": 0.9852413535118103, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 17, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.45965576171875, "t": 754.4435424804688, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9134598970413208, "cells": [{"id": 0, "text": "16 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "16"}, {"label": "page_footer", "id": 1, "page_no": 17, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.34640502929688, "t": 754.726318359375, "r": 267.0744, "b": 764.1643676757812, "coord_origin": "TOPLEFT"}, "confidence": 0.9585385322570801, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"label": "caption", "id": 2, "page_no": 17, "cluster": {"id": 2, "label": "caption", "bbox": {"l": 64.34585571289062, "t": 293.41015625, "r": 295.9040222167969, "b": 302.8072509765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9478130340576172, "cells": [{"id": 2, "text": "Figure 9 Remote AI governance solution end-to-end flow", "bbox": {"l": 64.800301, "t": 294.07828, "r": 295.07071, "b": 302.40329, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 9 Remote AI governance solution end-to-end flow"}, {"label": "text", "id": 3, "page_no": 17, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.1533203125, "t": 315.34637451171875, "r": 438.01648, "b": 325.61328125, "coord_origin": "TOPLEFT"}, "confidence": 0.8973822593688965, "cells": [{"id": 3, "text": "To achieve end-to-end AI governance, complete the following steps:", "bbox": {"l": 136.8, "t": 316.00872999999996, "r": 438.01648, "b": 325.22171, "coord_origin": "TOPLEFT"}}]}, "text": "To achieve end-to-end AI governance, complete the following steps:"}, {"label": "list_item", "id": 4, "page_no": 17, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.8, "t": 331.922119140625, "r": 541.70392, "b": 354.27032470703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9647595286369324, "cells": [{"id": 4, "text": "1.", "bbox": {"l": 136.8, "t": 333.04831, "r": 145.20338, "b": 342.26129, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Create a model entry in IBM OpenPages by using CP4D on a x86 platform, as shown in ", "bbox": {"l": 148.0045, "t": 333.04831, "r": 541.70392, "b": 342.26129, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Figure 10.", "bbox": {"l": 151.20015, "t": 345.04813, "r": 196.25023, "b": 354.26111, "coord_origin": "TOPLEFT"}}]}, "text": "1. Create a model entry in IBM OpenPages by using CP4D on a x86 platform, as shown in Figure 10."}, {"label": "caption", "id": 5, "page_no": 17, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.25994873046875, "t": 668.81396484375, "r": 279.38360595703125, "b": 678.0313110351562, "coord_origin": "TOPLEFT"}, "confidence": 0.9575855135917664, "cells": [{"id": 7, "text": "Figure 10 Creating a model entry in IBM OpenPages", "bbox": {"l": 64.800003, "t": 669.3179, "r": 279.02966, "b": 677.6429, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 10 Creating a model entry in IBM OpenPages"}, {"label": "picture", "id": 6, "page_no": 17, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 63.88758850097656, "t": 368.6678771972656, "r": 547.6134033203125, "b": 666.1146240234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9861761927604675, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 7, "page_no": 17, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 64.32939147949219, "t": 77.701416015625, "r": 547.455810546875, "b": 290.7998352050781, "coord_origin": "TOPLEFT"}, "confidence": 0.9852413535118103, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "caption", "id": 2, "page_no": 17, "cluster": {"id": 2, "label": "caption", "bbox": {"l": 64.34585571289062, "t": 293.41015625, "r": 295.9040222167969, "b": 302.8072509765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9478130340576172, "cells": [{"id": 2, "text": "Figure 9 Remote AI governance solution end-to-end flow", "bbox": {"l": 64.800301, "t": 294.07828, "r": 295.07071, "b": 302.40329, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 9 Remote AI governance solution end-to-end flow"}, {"label": "text", "id": 3, "page_no": 17, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.1533203125, "t": 315.34637451171875, "r": 438.01648, "b": 325.61328125, "coord_origin": "TOPLEFT"}, "confidence": 0.8973822593688965, "cells": [{"id": 3, "text": "To achieve end-to-end AI governance, complete the following steps:", "bbox": {"l": 136.8, "t": 316.00872999999996, "r": 438.01648, "b": 325.22171, "coord_origin": "TOPLEFT"}}]}, "text": "To achieve end-to-end AI governance, complete the following steps:"}, {"label": "list_item", "id": 4, "page_no": 17, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 136.8, "t": 331.922119140625, "r": 541.70392, "b": 354.27032470703125, "coord_origin": "TOPLEFT"}, "confidence": 0.9647595286369324, "cells": [{"id": 4, "text": "1.", "bbox": {"l": 136.8, "t": 333.04831, "r": 145.20338, "b": 342.26129, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Create a model entry in IBM OpenPages by using CP4D on a x86 platform, as shown in ", "bbox": {"l": 148.0045, "t": 333.04831, "r": 541.70392, "b": 342.26129, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Figure 10.", "bbox": {"l": 151.20015, "t": 345.04813, "r": 196.25023, "b": 354.26111, "coord_origin": "TOPLEFT"}}]}, "text": "1. Create a model entry in IBM OpenPages by using CP4D on a x86 platform, as shown in Figure 10."}, {"label": "caption", "id": 5, "page_no": 17, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.25994873046875, "t": 668.81396484375, "r": 279.38360595703125, "b": 678.0313110351562, "coord_origin": "TOPLEFT"}, "confidence": 0.9575855135917664, "cells": [{"id": 7, "text": "Figure 10 Creating a model entry in IBM OpenPages", "bbox": {"l": 64.800003, "t": 669.3179, "r": 279.02966, "b": 677.6429, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 10 Creating a model entry in IBM OpenPages"}, {"label": "picture", "id": 6, "page_no": 17, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 63.88758850097656, "t": 368.6678771972656, "r": 547.6134033203125, "b": 666.1146240234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9861761927604675, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 7, "page_no": 17, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 64.32939147949219, "t": 77.701416015625, "r": 547.455810546875, "b": 290.7998352050781, "coord_origin": "TOPLEFT"}, "confidence": 0.9852413535118103, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 17, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.45965576171875, "t": 754.4435424804688, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9134598970413208, "cells": [{"id": 0, "text": "16 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "16"}, {"label": "page_footer", "id": 1, "page_no": 17, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.34640502929688, "t": 754.726318359375, "r": 267.0744, "b": 764.1643676757812, "coord_origin": "TOPLEFT"}, "confidence": 0.9585385322570801, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}]}}, {"page_no": 18, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "17", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.20468, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Train a model by using Watson Studio and by using development tools such as Jupyter ", "bbox": {"l": 148.00638, "t": 71.50903000000005, "r": 538.99438, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Notebook or JupyterLab on CP4D on Red Hat OpenShift on a virtual machine on IBM Z, ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 542.91144, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "as shown in Figure 11.", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 251.74993999999998, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Figure 11 Training an AI model by using Watson Studio", "bbox": {"l": 64.800003, "t": 416.59799, "r": 290.02679, "b": 424.923, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "3.", "bbox": {"l": 136.8, "t": 438.58871000000005, "r": 145.19128, "b": 447.80170000000004, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Deploy the model by using WML on CP4D on Red Hat OpenShift on a virtual machine on ", "bbox": {"l": 147.98837, "t": 438.58871000000005, "r": 547.26868, "b": 447.80170000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "IBM Z, as shown in Figure 12.", "bbox": {"l": 151.20016, "t": 450.58853, "r": 283.89426, "b": 459.80151, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Figure 12 Deploying an AI model by using WML on Cloud Pak for Data", "bbox": {"l": 64.800003, "t": 726.618004, "r": 351.0603, "b": 734.943001, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 535.8695068359375, "t": 754.4427490234375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9015737175941467, "cells": [{"id": 0, "text": "17", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "list_item", "bbox": {"l": 135.98834228515625, "t": 70.76612854003906, "r": 542.91144, "b": 105.02376556396484, "coord_origin": "TOPLEFT"}, "confidence": 0.9786083102226257, "cells": [{"id": 1, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.20468, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Train a model by using Watson Studio and by using development tools such as Jupyter ", "bbox": {"l": 148.00638, "t": 71.50903000000005, "r": 538.99438, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Notebook or JupyterLab on CP4D on Red Hat OpenShift on a virtual machine on IBM Z, ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 542.91144, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "as shown in Figure 11.", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 251.74993999999998, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "caption", "bbox": {"l": 64.27749633789062, "t": 416.1407165527344, "r": 290.4153137207031, "b": 425.51422119140625, "coord_origin": "TOPLEFT"}, "confidence": 0.956462562084198, "cells": [{"id": 5, "text": "Figure 11 Training an AI model by using Watson Studio", "bbox": {"l": 64.800003, "t": 416.59799, "r": 290.02679, "b": 424.923, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "list_item", "bbox": {"l": 136.21717834472656, "t": 438.00299072265625, "r": 547.26868, "b": 460.15716552734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9648804664611816, "cells": [{"id": 6, "text": "3.", "bbox": {"l": 136.8, "t": 438.58871000000005, "r": 145.19128, "b": 447.80170000000004, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Deploy the model by using WML on CP4D on Red Hat OpenShift on a virtual machine on ", "bbox": {"l": 147.98837, "t": 438.58871000000005, "r": 547.26868, "b": 447.80170000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "IBM Z, as shown in Figure 12.", "bbox": {"l": 151.20016, "t": 450.58853, "r": 283.89426, "b": 459.80151, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "caption", "bbox": {"l": 64.3975601196289, "t": 726.088623046875, "r": 351.1659851074219, "b": 735.51611328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9549134373664856, "cells": [{"id": 9, "text": "Figure 12 Deploying an AI model by using WML on Cloud Pak for Data", "bbox": {"l": 64.800003, "t": 726.618004, "r": 351.0603, "b": 734.943001, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "picture", "bbox": {"l": 63.96794891357422, "t": 119.27977752685547, "r": 547.4464111328125, "b": 412.66949462890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9853487610816956, "cells": []}, {"id": 6, "label": "picture", "bbox": {"l": 64.33274841308594, "t": 473.3788757324219, "r": 547.9761962890625, "b": 723.4976196289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9851948618888855, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 18, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 535.8695068359375, "t": 754.4427490234375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9015737175941467, "cells": [{"id": 0, "text": "17", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "17"}, {"label": "list_item", "id": 1, "page_no": 18, "cluster": {"id": 1, "label": "list_item", "bbox": {"l": 135.98834228515625, "t": 70.76612854003906, "r": 542.91144, "b": 105.02376556396484, "coord_origin": "TOPLEFT"}, "confidence": 0.9786083102226257, "cells": [{"id": 1, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.20468, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Train a model by using Watson Studio and by using development tools such as Jupyter ", "bbox": {"l": 148.00638, "t": 71.50903000000005, "r": 538.99438, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Notebook or JupyterLab on CP4D on Red Hat OpenShift on a virtual machine on IBM Z, ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 542.91144, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "as shown in Figure 11.", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 251.74993999999998, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "2. Train a model by using Watson Studio and by using development tools such as Jupyter Notebook or JupyterLab on CP4D on Red Hat OpenShift on a virtual machine on IBM Z, as shown in Figure 11."}, {"label": "caption", "id": 2, "page_no": 18, "cluster": {"id": 2, "label": "caption", "bbox": {"l": 64.27749633789062, "t": 416.1407165527344, "r": 290.4153137207031, "b": 425.51422119140625, "coord_origin": "TOPLEFT"}, "confidence": 0.956462562084198, "cells": [{"id": 5, "text": "Figure 11 Training an AI model by using Watson Studio", "bbox": {"l": 64.800003, "t": 416.59799, "r": 290.02679, "b": 424.923, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 11 Training an AI model by using Watson Studio"}, {"label": "list_item", "id": 3, "page_no": 18, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 136.21717834472656, "t": 438.00299072265625, "r": 547.26868, "b": 460.15716552734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9648804664611816, "cells": [{"id": 6, "text": "3.", "bbox": {"l": 136.8, "t": 438.58871000000005, "r": 145.19128, "b": 447.80170000000004, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Deploy the model by using WML on CP4D on Red Hat OpenShift on a virtual machine on ", "bbox": {"l": 147.98837, "t": 438.58871000000005, "r": 547.26868, "b": 447.80170000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "IBM Z, as shown in Figure 12.", "bbox": {"l": 151.20016, "t": 450.58853, "r": 283.89426, "b": 459.80151, "coord_origin": "TOPLEFT"}}]}, "text": "3. Deploy the model by using WML on CP4D on Red Hat OpenShift on a virtual machine on IBM Z, as shown in Figure 12."}, {"label": "caption", "id": 4, "page_no": 18, "cluster": {"id": 4, "label": "caption", "bbox": {"l": 64.3975601196289, "t": 726.088623046875, "r": 351.1659851074219, "b": 735.51611328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9549134373664856, "cells": [{"id": 9, "text": "Figure 12 Deploying an AI model by using WML on Cloud Pak for Data", "bbox": {"l": 64.800003, "t": 726.618004, "r": 351.0603, "b": 734.943001, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 12 Deploying an AI model by using WML on Cloud Pak for Data"}, {"label": "picture", "id": 5, "page_no": 18, "cluster": {"id": 5, "label": "picture", "bbox": {"l": 63.96794891357422, "t": 119.27977752685547, "r": 547.4464111328125, "b": 412.66949462890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9853487610816956, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 6, "page_no": 18, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 64.33274841308594, "t": 473.3788757324219, "r": 547.9761962890625, "b": 723.4976196289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9851948618888855, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 1, "page_no": 18, "cluster": {"id": 1, "label": "list_item", "bbox": {"l": 135.98834228515625, "t": 70.76612854003906, "r": 542.91144, "b": 105.02376556396484, "coord_origin": "TOPLEFT"}, "confidence": 0.9786083102226257, "cells": [{"id": 1, "text": "2.", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 145.20468, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Train a model by using Watson Studio and by using development tools such as Jupyter ", "bbox": {"l": 148.00638, "t": 71.50903000000005, "r": 538.99438, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Notebook or JupyterLab on CP4D on Red Hat OpenShift on a virtual machine on IBM Z, ", "bbox": {"l": 151.19975, "t": 83.50885000000017, "r": 542.91144, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "as shown in Figure 11.", "bbox": {"l": 151.19975, "t": 95.50867000000005, "r": 251.74993999999998, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "2. Train a model by using Watson Studio and by using development tools such as Jupyter Notebook or JupyterLab on CP4D on Red Hat OpenShift on a virtual machine on IBM Z, as shown in Figure 11."}, {"label": "caption", "id": 2, "page_no": 18, "cluster": {"id": 2, "label": "caption", "bbox": {"l": 64.27749633789062, "t": 416.1407165527344, "r": 290.4153137207031, "b": 425.51422119140625, "coord_origin": "TOPLEFT"}, "confidence": 0.956462562084198, "cells": [{"id": 5, "text": "Figure 11 Training an AI model by using Watson Studio", "bbox": {"l": 64.800003, "t": 416.59799, "r": 290.02679, "b": 424.923, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 11 Training an AI model by using Watson Studio"}, {"label": "list_item", "id": 3, "page_no": 18, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 136.21717834472656, "t": 438.00299072265625, "r": 547.26868, "b": 460.15716552734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9648804664611816, "cells": [{"id": 6, "text": "3.", "bbox": {"l": 136.8, "t": 438.58871000000005, "r": 145.19128, "b": 447.80170000000004, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Deploy the model by using WML on CP4D on Red Hat OpenShift on a virtual machine on ", "bbox": {"l": 147.98837, "t": 438.58871000000005, "r": 547.26868, "b": 447.80170000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "IBM Z, as shown in Figure 12.", "bbox": {"l": 151.20016, "t": 450.58853, "r": 283.89426, "b": 459.80151, "coord_origin": "TOPLEFT"}}]}, "text": "3. Deploy the model by using WML on CP4D on Red Hat OpenShift on a virtual machine on IBM Z, as shown in Figure 12."}, {"label": "caption", "id": 4, "page_no": 18, "cluster": {"id": 4, "label": "caption", "bbox": {"l": 64.3975601196289, "t": 726.088623046875, "r": 351.1659851074219, "b": 735.51611328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9549134373664856, "cells": [{"id": 9, "text": "Figure 12 Deploying an AI model by using WML on Cloud Pak for Data", "bbox": {"l": 64.800003, "t": 726.618004, "r": 351.0603, "b": 734.943001, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 12 Deploying an AI model by using WML on Cloud Pak for Data"}, {"label": "picture", "id": 5, "page_no": 18, "cluster": {"id": 5, "label": "picture", "bbox": {"l": 63.96794891357422, "t": 119.27977752685547, "r": 547.4464111328125, "b": 412.66949462890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9853487610816956, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 6, "page_no": 18, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 64.33274841308594, "t": 473.3788757324219, "r": 547.9761962890625, "b": 723.4976196289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9851948618888855, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 18, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 535.8695068359375, "t": 754.4427490234375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9015737175941467, "cells": [{"id": 0, "text": "17", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "17"}]}}, {"page_no": 19, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "18 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "4.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.20747, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Track the external model lifecycle by browsing through the Catalogs/Platform assets ", "bbox": {"l": 148.00995, "t": 71.50867000000005, "r": 525.63037, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "catalog by using AI Factsheets and OpenPages while using CP4D on an x86 platform, as ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 547.24561, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "shown in Figure 13. The external model (deployed on CP4D on Red Hat OpenShift on a ", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 542.44379, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "virtual machine on IBM Z) is saved as a platform asset catalog on the x86 platform.", "bbox": {"l": 151.20016, "t": 107.50811999999996, "r": 517.94836, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Figure 13 External model", "bbox": {"l": 136.8, "t": 388.698, "r": 242.17379999999997, "b": 397.02301, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "You can track the model through each stage of the model lifecycle, as shown in Figure 14, ", "bbox": {"l": 151.2, "t": 410.68872, "r": 547.29028, "b": 419.90170000000006, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "by using AI Factsheets and OpenPages.", "bbox": {"l": 151.2, "t": 422.68854, "r": 330.03784, "b": 431.90152, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Figure 14 Tracking the model", "bbox": {"l": 64.800003, "t": 711.197899, "r": 186.63029, "b": 719.522896, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.46235656738281, "t": 754.4052734375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9125085473060608, "cells": [{"id": 0, "text": "18 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.31233978271484, "t": 754.6796875, "r": 267.0744, "b": 764.2430419921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9569898843765259, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 135.78439331054688, "t": 70.60037231445312, "r": 547.24561, "b": 117.01048278808594, "coord_origin": "TOPLEFT"}, "confidence": 0.9820504188537598, "cells": [{"id": 2, "text": "4.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.20747, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Track the external model lifecycle by browsing through the Catalogs/Platform assets ", "bbox": {"l": 148.00995, "t": 71.50867000000005, "r": 525.63037, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "catalog by using AI Factsheets and OpenPages while using CP4D on an x86 platform, as ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 547.24561, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "shown in Figure 13. The external model (deployed on CP4D on Red Hat OpenShift on a ", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 542.44379, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "virtual machine on IBM Z) is saved as a platform asset catalog on the x86 platform.", "bbox": {"l": 151.20016, "t": 107.50811999999996, "r": 517.94836, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 136.2765350341797, "t": 388.18072509765625, "r": 242.76724243164062, "b": 397.4988708496094, "coord_origin": "TOPLEFT"}, "confidence": 0.9542616605758667, "cells": [{"id": 7, "text": "Figure 13 External model", "bbox": {"l": 136.8, "t": 388.698, "r": 242.17379999999997, "b": 397.02301, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 150.45053100585938, "t": 409.876708984375, "r": 547.29028, "b": 432.26702880859375, "coord_origin": "TOPLEFT"}, "confidence": 0.9414600729942322, "cells": [{"id": 8, "text": "You can track the model through each stage of the model lifecycle, as shown in Figure 14, ", "bbox": {"l": 151.2, "t": 410.68872, "r": 547.29028, "b": 419.90170000000006, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "by using AI Factsheets and OpenPages.", "bbox": {"l": 151.2, "t": 422.68854, "r": 330.03784, "b": 431.90152, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "caption", "bbox": {"l": 64.26177978515625, "t": 710.1182861328125, "r": 187.44825744628906, "b": 719.7200927734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9529473781585693, "cells": [{"id": 10, "text": "Figure 14 Tracking the model", "bbox": {"l": 64.800003, "t": 711.197899, "r": 186.63029, "b": 719.522896, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "picture", "bbox": {"l": 136.07406616210938, "t": 130.84774780273438, "r": 533.5489501953125, "b": 384.489013671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9865854978561401, "cells": []}, {"id": 7, "label": "picture", "bbox": {"l": 64.0412368774414, "t": 445.4599609375, "r": 547.8551635742188, "b": 707.6512451171875, "coord_origin": "TOPLEFT"}, "confidence": 0.9851176738739014, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 19, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.46235656738281, "t": 754.4052734375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9125085473060608, "cells": [{"id": 0, "text": "18 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "18"}, {"label": "page_footer", "id": 1, "page_no": 19, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.31233978271484, "t": 754.6796875, "r": 267.0744, "b": 764.2430419921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9569898843765259, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"label": "list_item", "id": 2, "page_no": 19, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.78439331054688, "t": 70.60037231445312, "r": 547.24561, "b": 117.01048278808594, "coord_origin": "TOPLEFT"}, "confidence": 0.9820504188537598, "cells": [{"id": 2, "text": "4.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.20747, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Track the external model lifecycle by browsing through the Catalogs/Platform assets ", "bbox": {"l": 148.00995, "t": 71.50867000000005, "r": 525.63037, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "catalog by using AI Factsheets and OpenPages while using CP4D on an x86 platform, as ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 547.24561, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "shown in Figure 13. The external model (deployed on CP4D on Red Hat OpenShift on a ", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 542.44379, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "virtual machine on IBM Z) is saved as a platform asset catalog on the x86 platform.", "bbox": {"l": 151.20016, "t": 107.50811999999996, "r": 517.94836, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "4. Track the external model lifecycle by browsing through the Catalogs/Platform assets catalog by using AI Factsheets and OpenPages while using CP4D on an x86 platform, as shown in Figure 13. The external model (deployed on CP4D on Red Hat OpenShift on a virtual machine on IBM Z) is saved as a platform asset catalog on the x86 platform."}, {"label": "caption", "id": 3, "page_no": 19, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.2765350341797, "t": 388.18072509765625, "r": 242.76724243164062, "b": 397.4988708496094, "coord_origin": "TOPLEFT"}, "confidence": 0.9542616605758667, "cells": [{"id": 7, "text": "Figure 13 External model", "bbox": {"l": 136.8, "t": 388.698, "r": 242.17379999999997, "b": 397.02301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 13 External model"}, {"label": "text", "id": 4, "page_no": 19, "cluster": {"id": 4, "label": "text", "bbox": {"l": 150.45053100585938, "t": 409.876708984375, "r": 547.29028, "b": 432.26702880859375, "coord_origin": "TOPLEFT"}, "confidence": 0.9414600729942322, "cells": [{"id": 8, "text": "You can track the model through each stage of the model lifecycle, as shown in Figure 14, ", "bbox": {"l": 151.2, "t": 410.68872, "r": 547.29028, "b": 419.90170000000006, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "by using AI Factsheets and OpenPages.", "bbox": {"l": 151.2, "t": 422.68854, "r": 330.03784, "b": 431.90152, "coord_origin": "TOPLEFT"}}]}, "text": "You can track the model through each stage of the model lifecycle, as shown in Figure 14, by using AI Factsheets and OpenPages."}, {"label": "caption", "id": 5, "page_no": 19, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.26177978515625, "t": 710.1182861328125, "r": 187.44825744628906, "b": 719.7200927734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9529473781585693, "cells": [{"id": 10, "text": "Figure 14 Tracking the model", "bbox": {"l": 64.800003, "t": 711.197899, "r": 186.63029, "b": 719.522896, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 14 Tracking the model"}, {"label": "picture", "id": 6, "page_no": 19, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 136.07406616210938, "t": 130.84774780273438, "r": 533.5489501953125, "b": 384.489013671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9865854978561401, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 7, "page_no": 19, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 64.0412368774414, "t": 445.4599609375, "r": 547.8551635742188, "b": 707.6512451171875, "coord_origin": "TOPLEFT"}, "confidence": 0.9851176738739014, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 19, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 135.78439331054688, "t": 70.60037231445312, "r": 547.24561, "b": 117.01048278808594, "coord_origin": "TOPLEFT"}, "confidence": 0.9820504188537598, "cells": [{"id": 2, "text": "4.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.20747, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Track the external model lifecycle by browsing through the Catalogs/Platform assets ", "bbox": {"l": 148.00995, "t": 71.50867000000005, "r": 525.63037, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "catalog by using AI Factsheets and OpenPages while using CP4D on an x86 platform, as ", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 547.24561, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "shown in Figure 13. The external model (deployed on CP4D on Red Hat OpenShift on a ", "bbox": {"l": 151.20016, "t": 95.50829999999996, "r": 542.44379, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "virtual machine on IBM Z) is saved as a platform asset catalog on the x86 platform.", "bbox": {"l": 151.20016, "t": 107.50811999999996, "r": 517.94836, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "4. Track the external model lifecycle by browsing through the Catalogs/Platform assets catalog by using AI Factsheets and OpenPages while using CP4D on an x86 platform, as shown in Figure 13. The external model (deployed on CP4D on Red Hat OpenShift on a virtual machine on IBM Z) is saved as a platform asset catalog on the x86 platform."}, {"label": "caption", "id": 3, "page_no": 19, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 136.2765350341797, "t": 388.18072509765625, "r": 242.76724243164062, "b": 397.4988708496094, "coord_origin": "TOPLEFT"}, "confidence": 0.9542616605758667, "cells": [{"id": 7, "text": "Figure 13 External model", "bbox": {"l": 136.8, "t": 388.698, "r": 242.17379999999997, "b": 397.02301, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 13 External model"}, {"label": "text", "id": 4, "page_no": 19, "cluster": {"id": 4, "label": "text", "bbox": {"l": 150.45053100585938, "t": 409.876708984375, "r": 547.29028, "b": 432.26702880859375, "coord_origin": "TOPLEFT"}, "confidence": 0.9414600729942322, "cells": [{"id": 8, "text": "You can track the model through each stage of the model lifecycle, as shown in Figure 14, ", "bbox": {"l": 151.2, "t": 410.68872, "r": 547.29028, "b": 419.90170000000006, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "by using AI Factsheets and OpenPages.", "bbox": {"l": 151.2, "t": 422.68854, "r": 330.03784, "b": 431.90152, "coord_origin": "TOPLEFT"}}]}, "text": "You can track the model through each stage of the model lifecycle, as shown in Figure 14, by using AI Factsheets and OpenPages."}, {"label": "caption", "id": 5, "page_no": 19, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 64.26177978515625, "t": 710.1182861328125, "r": 187.44825744628906, "b": 719.7200927734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9529473781585693, "cells": [{"id": 10, "text": "Figure 14 Tracking the model", "bbox": {"l": 64.800003, "t": 711.197899, "r": 186.63029, "b": 719.522896, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 14 Tracking the model"}, {"label": "picture", "id": 6, "page_no": 19, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 136.07406616210938, "t": 130.84774780273438, "r": 533.5489501953125, "b": 384.489013671875, "coord_origin": "TOPLEFT"}, "confidence": 0.9865854978561401, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 7, "page_no": 19, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 64.0412368774414, "t": 445.4599609375, "r": 547.8551635742188, "b": 707.6512451171875, "coord_origin": "TOPLEFT"}, "confidence": 0.9851176738739014, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 19, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.46235656738281, "t": 754.4052734375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9125085473060608, "cells": [{"id": 0, "text": "18 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "18"}, {"label": "page_footer", "id": 1, "page_no": 19, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.31233978271484, "t": 754.6796875, "r": 267.0744, "b": 764.2430419921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9569898843765259, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}]}}, {"page_no": 20, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "19", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "You can see that the model facts are tracked and synchronized to IBM OpenPages for risk ", "bbox": {"l": 151.19977, "t": 71.50903000000005, "r": 547.22223, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "management, as shown in Figure 15. ", "bbox": {"l": 151.19977, "t": 83.50885000000017, "r": 318.41922, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 15 Model facts that are tracked and synchronized to IBM OpenPages on an x86 platform", "bbox": {"l": 64.800003, "t": 415.33797999999996, "r": 449.53204, "b": 423.6629899999999, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 535.8822631835938, "t": 754.3675537109375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9091770052909851, "cells": [{"id": 0, "text": "19", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "text", "bbox": {"l": 150.36676025390625, "t": 70.72309875488281, "r": 547.22223, "b": 92.90152740478516, "coord_origin": "TOPLEFT"}, "confidence": 0.8821508288383484, "cells": [{"id": 1, "text": "You can see that the model facts are tracked and synchronized to IBM OpenPages for risk ", "bbox": {"l": 151.19977, "t": 71.50903000000005, "r": 547.22223, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "management, as shown in Figure 15. ", "bbox": {"l": 151.19977, "t": 83.50885000000017, "r": 318.41922, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "caption", "bbox": {"l": 64.23995208740234, "t": 414.707763671875, "r": 450.36871337890625, "b": 423.87420654296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9387805461883545, "cells": [{"id": 3, "text": "Figure 15 Model facts that are tracked and synchronized to IBM OpenPages on an x86 platform", "bbox": {"l": 64.800003, "t": 415.33797999999996, "r": 449.53204, "b": 423.6629899999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "picture", "bbox": {"l": 64.23773956298828, "t": 107.1172103881836, "r": 547.417236328125, "b": 411.15496826171875, "coord_origin": "TOPLEFT"}, "confidence": 0.9859113693237305, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 20, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 535.8822631835938, "t": 754.3675537109375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9091770052909851, "cells": [{"id": 0, "text": "19", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "19"}, {"label": "text", "id": 1, "page_no": 20, "cluster": {"id": 1, "label": "text", "bbox": {"l": 150.36676025390625, "t": 70.72309875488281, "r": 547.22223, "b": 92.90152740478516, "coord_origin": "TOPLEFT"}, "confidence": 0.8821508288383484, "cells": [{"id": 1, "text": "You can see that the model facts are tracked and synchronized to IBM OpenPages for risk ", "bbox": {"l": 151.19977, "t": 71.50903000000005, "r": 547.22223, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "management, as shown in Figure 15. ", "bbox": {"l": 151.19977, "t": 83.50885000000017, "r": 318.41922, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "You can see that the model facts are tracked and synchronized to IBM OpenPages for risk management, as shown in Figure 15."}, {"label": "caption", "id": 2, "page_no": 20, "cluster": {"id": 2, "label": "caption", "bbox": {"l": 64.23995208740234, "t": 414.707763671875, "r": 450.36871337890625, "b": 423.87420654296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9387805461883545, "cells": [{"id": 3, "text": "Figure 15 Model facts that are tracked and synchronized to IBM OpenPages on an x86 platform", "bbox": {"l": 64.800003, "t": 415.33797999999996, "r": 449.53204, "b": 423.6629899999999, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 15 Model facts that are tracked and synchronized to IBM OpenPages on an x86 platform"}, {"label": "picture", "id": 3, "page_no": 20, "cluster": {"id": 3, "label": "picture", "bbox": {"l": 64.23773956298828, "t": 107.1172103881836, "r": 547.417236328125, "b": 411.15496826171875, "coord_origin": "TOPLEFT"}, "confidence": 0.9859113693237305, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 1, "page_no": 20, "cluster": {"id": 1, "label": "text", "bbox": {"l": 150.36676025390625, "t": 70.72309875488281, "r": 547.22223, "b": 92.90152740478516, "coord_origin": "TOPLEFT"}, "confidence": 0.8821508288383484, "cells": [{"id": 1, "text": "You can see that the model facts are tracked and synchronized to IBM OpenPages for risk ", "bbox": {"l": 151.19977, "t": 71.50903000000005, "r": 547.22223, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "management, as shown in Figure 15. ", "bbox": {"l": 151.19977, "t": 83.50885000000017, "r": 318.41922, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}]}, "text": "You can see that the model facts are tracked and synchronized to IBM OpenPages for risk management, as shown in Figure 15."}, {"label": "caption", "id": 2, "page_no": 20, "cluster": {"id": 2, "label": "caption", "bbox": {"l": 64.23995208740234, "t": 414.707763671875, "r": 450.36871337890625, "b": 423.87420654296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9387805461883545, "cells": [{"id": 3, "text": "Figure 15 Model facts that are tracked and synchronized to IBM OpenPages on an x86 platform", "bbox": {"l": 64.800003, "t": 415.33797999999996, "r": 449.53204, "b": 423.6629899999999, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 15 Model facts that are tracked and synchronized to IBM OpenPages on an x86 platform"}, {"label": "picture", "id": 3, "page_no": 20, "cluster": {"id": 3, "label": "picture", "bbox": {"l": 64.23773956298828, "t": 107.1172103881836, "r": 547.417236328125, "b": 411.15496826171875, "coord_origin": "TOPLEFT"}, "confidence": 0.9859113693237305, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 20, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 535.8822631835938, "t": 754.3675537109375, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9091770052909851, "cells": [{"id": 0, "text": "19", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "19"}]}}, {"page_no": 21, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "20 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "5.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.20818, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Create an external model by using IBM OpenScale on the x86 platform, as shown in ", "bbox": {"l": 148.01088, "t": 71.50867000000005, "r": 525.69312, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 16.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 196.25024, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Figure 16 Creating an external model on an x86 platform", "bbox": {"l": 64.800003, "t": 384.798, "r": 295.03442, "b": 393.12302, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "IBM OpenScale provides a comprehensive dashboard that tracks fairness, quality monitoring, ", "bbox": {"l": 136.8, "t": 406.78873, "r": 547.29736, "b": 416.00171, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "drift, and explainability of a model. Fairness determines whether your model produces biased ", "bbox": {"l": 136.8, "t": 418.78853999999995, "r": 547.13806, "b": 428.00152999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "outcomes. Quality determines how well your model predicts outcomes. Drift is the ", "bbox": {"l": 136.79999, "t": 430.78836000000007, "r": 499.57693, "b": 440.00134, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "degradation of predictive performance over time. A sample is shown in Figure 17 on page 21.", "bbox": {"l": 136.8, "t": 442.78818, "r": 547.32935, "b": 452.00116, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.867469787597656, "t": 754.3300170898438, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9187637567520142, "cells": [{"id": 0, "text": "20 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.32005310058594, "t": 754.70068359375, "r": 267.0744, "b": 764.1736450195312, "coord_origin": "TOPLEFT"}, "confidence": 0.957935094833374, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "list_item", "bbox": {"l": 136.09112548828125, "t": 70.54534149169922, "r": 525.69312, "b": 93.12995147705078, "coord_origin": "TOPLEFT"}, "confidence": 0.9633587598800659, "cells": [{"id": 2, "text": "5.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.20818, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Create an external model by using IBM OpenScale on the x86 platform, as shown in ", "bbox": {"l": 148.01088, "t": 71.50867000000005, "r": 525.69312, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 16.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 196.25024, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.40975189208984, "t": 384.0537414550781, "r": 295.9855651855469, "b": 393.44476318359375, "coord_origin": "TOPLEFT"}, "confidence": 0.950371503829956, "cells": [{"id": 5, "text": "Figure 16 Creating an external model on an x86 platform", "bbox": {"l": 64.800003, "t": 384.798, "r": 295.03442, "b": 393.12302, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.78622436523438, "t": 405.9812316894531, "r": 547.32935, "b": 452.30450439453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9535754323005676, "cells": [{"id": 6, "text": "IBM OpenScale provides a comprehensive dashboard that tracks fairness, quality monitoring, ", "bbox": {"l": 136.8, "t": 406.78873, "r": 547.29736, "b": 416.00171, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "drift, and explainability of a model. Fairness determines whether your model produces biased ", "bbox": {"l": 136.8, "t": 418.78853999999995, "r": 547.13806, "b": 428.00152999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "outcomes. Quality determines how well your model predicts outcomes. Drift is the ", "bbox": {"l": 136.79999, "t": 430.78836000000007, "r": 499.57693, "b": 440.00134, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "degradation of predictive performance over time. A sample is shown in Figure 17 on page 21.", "bbox": {"l": 136.8, "t": 442.78818, "r": 547.32935, "b": 452.00116, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "picture", "bbox": {"l": 63.799659729003906, "t": 107.32193756103516, "r": 547.7122192382812, "b": 381.23724365234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9833127856254578, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 21, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.867469787597656, "t": 754.3300170898438, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9187637567520142, "cells": [{"id": 0, "text": "20 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "20"}, {"label": "page_footer", "id": 1, "page_no": 21, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.32005310058594, "t": 754.70068359375, "r": 267.0744, "b": 764.1736450195312, "coord_origin": "TOPLEFT"}, "confidence": 0.957935094833374, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"label": "list_item", "id": 2, "page_no": 21, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.09112548828125, "t": 70.54534149169922, "r": 525.69312, "b": 93.12995147705078, "coord_origin": "TOPLEFT"}, "confidence": 0.9633587598800659, "cells": [{"id": 2, "text": "5.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.20818, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Create an external model by using IBM OpenScale on the x86 platform, as shown in ", "bbox": {"l": 148.01088, "t": 71.50867000000005, "r": 525.69312, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 16.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 196.25024, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "5. Create an external model by using IBM OpenScale on the x86 platform, as shown in Figure 16."}, {"label": "caption", "id": 3, "page_no": 21, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.40975189208984, "t": 384.0537414550781, "r": 295.9855651855469, "b": 393.44476318359375, "coord_origin": "TOPLEFT"}, "confidence": 0.950371503829956, "cells": [{"id": 5, "text": "Figure 16 Creating an external model on an x86 platform", "bbox": {"l": 64.800003, "t": 384.798, "r": 295.03442, "b": 393.12302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 16 Creating an external model on an x86 platform"}, {"label": "text", "id": 4, "page_no": 21, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.78622436523438, "t": 405.9812316894531, "r": 547.32935, "b": 452.30450439453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9535754323005676, "cells": [{"id": 6, "text": "IBM OpenScale provides a comprehensive dashboard that tracks fairness, quality monitoring, ", "bbox": {"l": 136.8, "t": 406.78873, "r": 547.29736, "b": 416.00171, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "drift, and explainability of a model. Fairness determines whether your model produces biased ", "bbox": {"l": 136.8, "t": 418.78853999999995, "r": 547.13806, "b": 428.00152999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "outcomes. Quality determines how well your model predicts outcomes. Drift is the ", "bbox": {"l": 136.79999, "t": 430.78836000000007, "r": 499.57693, "b": 440.00134, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "degradation of predictive performance over time. A sample is shown in Figure 17 on page 21.", "bbox": {"l": 136.8, "t": 442.78818, "r": 547.32935, "b": 452.00116, "coord_origin": "TOPLEFT"}}]}, "text": "IBM OpenScale provides a comprehensive dashboard that tracks fairness, quality monitoring, drift, and explainability of a model. Fairness determines whether your model produces biased outcomes. Quality determines how well your model predicts outcomes. Drift is the degradation of predictive performance over time. A sample is shown in Figure 17 on page 21."}, {"label": "picture", "id": 5, "page_no": 21, "cluster": {"id": 5, "label": "picture", "bbox": {"l": 63.799659729003906, "t": 107.32193756103516, "r": 547.7122192382812, "b": 381.23724365234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9833127856254578, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "list_item", "id": 2, "page_no": 21, "cluster": {"id": 2, "label": "list_item", "bbox": {"l": 136.09112548828125, "t": 70.54534149169922, "r": 525.69312, "b": 93.12995147705078, "coord_origin": "TOPLEFT"}, "confidence": 0.9633587598800659, "cells": [{"id": 2, "text": "5.", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 145.20818, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Create an external model by using IBM OpenScale on the x86 platform, as shown in ", "bbox": {"l": 148.01088, "t": 71.50867000000005, "r": 525.69312, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 16.", "bbox": {"l": 151.20016, "t": 83.50847999999996, "r": 196.25024, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "5. Create an external model by using IBM OpenScale on the x86 platform, as shown in Figure 16."}, {"label": "caption", "id": 3, "page_no": 21, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.40975189208984, "t": 384.0537414550781, "r": 295.9855651855469, "b": 393.44476318359375, "coord_origin": "TOPLEFT"}, "confidence": 0.950371503829956, "cells": [{"id": 5, "text": "Figure 16 Creating an external model on an x86 platform", "bbox": {"l": 64.800003, "t": 384.798, "r": 295.03442, "b": 393.12302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 16 Creating an external model on an x86 platform"}, {"label": "text", "id": 4, "page_no": 21, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.78622436523438, "t": 405.9812316894531, "r": 547.32935, "b": 452.30450439453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9535754323005676, "cells": [{"id": 6, "text": "IBM OpenScale provides a comprehensive dashboard that tracks fairness, quality monitoring, ", "bbox": {"l": 136.8, "t": 406.78873, "r": 547.29736, "b": 416.00171, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "drift, and explainability of a model. Fairness determines whether your model produces biased ", "bbox": {"l": 136.8, "t": 418.78853999999995, "r": 547.13806, "b": 428.00152999999995, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "outcomes. Quality determines how well your model predicts outcomes. Drift is the ", "bbox": {"l": 136.79999, "t": 430.78836000000007, "r": 499.57693, "b": 440.00134, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "degradation of predictive performance over time. A sample is shown in Figure 17 on page 21.", "bbox": {"l": 136.8, "t": 442.78818, "r": 547.32935, "b": 452.00116, "coord_origin": "TOPLEFT"}}]}, "text": "IBM OpenScale provides a comprehensive dashboard that tracks fairness, quality monitoring, drift, and explainability of a model. Fairness determines whether your model produces biased outcomes. Quality determines how well your model predicts outcomes. Drift is the degradation of predictive performance over time. A sample is shown in Figure 17 on page 21."}, {"label": "picture", "id": 5, "page_no": 21, "cluster": {"id": 5, "label": "picture", "bbox": {"l": 63.799659729003906, "t": 107.32193756103516, "r": 547.7122192382812, "b": 381.23724365234375, "coord_origin": "TOPLEFT"}, "confidence": 0.9833127856254578, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 21, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.867469787597656, "t": 754.3300170898438, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9187637567520142, "cells": [{"id": 0, "text": "20 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "20"}, {"label": "page_footer", "id": 1, "page_no": 21, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.32005310058594, "t": 754.70068359375, "r": 267.0744, "b": 764.1736450195312, "coord_origin": "TOPLEFT"}, "confidence": 0.957935094833374, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}]}}, {"page_no": 22, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "21", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Figure 17 IBM OpenScale dashboard that is used to monitor the external model", "bbox": {"l": 64.800003, "t": 354.01801, "r": 385.45013, "b": 362.34302, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "You developed and deployed the AI model by using Watson Studio, WML on CP4D on Red ", "bbox": {"l": 136.8, "t": 376.00872999999996, "r": 542.91388, "b": 385.22171, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Hat OpenShift on a virtual machine on IBM Z, and end-to-end AI model governance by ", "bbox": {"l": 136.8, "t": 388.00854, "r": 521.86963, "b": 397.22153, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "leveraging AI Factsheets, OpenScale, and OpenPages on CP4D on a x86 platform. Figure 18 ", "bbox": {"l": 136.8, "t": 400.00836, "r": 547.21674, "b": 409.22134, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "shows end-to-end AI governance when using IBM OpenPages, AI Factsheets, and ", "bbox": {"l": 136.8, "t": 412.0081799999999, "r": 504.60781999999995, "b": 421.22116, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "OpenScale. ", "bbox": {"l": 136.8, "t": 424.00800000000004, "r": 191.81007, "b": 433.22098, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Figure 18 Final result: End-to-end AI governance when using IBM OpenPages, AI Factsheets, and OpenScale", "bbox": {"l": 64.800003, "t": 725.297897, "r": 507.3417400000001, "b": 733.622898, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 535.4277954101562, "t": 754.2350463867188, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9060306549072266, "cells": [{"id": 0, "text": "21", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "caption", "bbox": {"l": 64.26493835449219, "t": 353.3095397949219, "r": 386.60101318359375, "b": 362.7451477050781, "coord_origin": "TOPLEFT"}, "confidence": 0.9381591081619263, "cells": [{"id": 1, "text": "Figure 17 IBM OpenScale dashboard that is used to monitor the external model", "bbox": {"l": 64.800003, "t": 354.01801, "r": 385.45013, "b": 362.34302, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.85134887695312, "t": 375.21990966796875, "r": 547.21674, "b": 433.3600769042969, "coord_origin": "TOPLEFT"}, "confidence": 0.9801287055015564, "cells": [{"id": 2, "text": "You developed and deployed the AI model by using Watson Studio, WML on CP4D on Red ", "bbox": {"l": 136.8, "t": 376.00872999999996, "r": 542.91388, "b": 385.22171, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Hat OpenShift on a virtual machine on IBM Z, and end-to-end AI model governance by ", "bbox": {"l": 136.8, "t": 388.00854, "r": 521.86963, "b": 397.22153, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "leveraging AI Factsheets, OpenScale, and OpenPages on CP4D on a x86 platform. Figure 18 ", "bbox": {"l": 136.8, "t": 400.00836, "r": 547.21674, "b": 409.22134, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "shows end-to-end AI governance when using IBM OpenPages, AI Factsheets, and ", "bbox": {"l": 136.8, "t": 412.0081799999999, "r": 504.60781999999995, "b": 421.22116, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "OpenScale. ", "bbox": {"l": 136.8, "t": 424.00800000000004, "r": 191.81007, "b": 433.22098, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.34110260009766, "t": 724.7535400390625, "r": 507.7935485839844, "b": 734.0853271484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9460791945457458, "cells": [{"id": 7, "text": "Figure 18 Final result: End-to-end AI governance when using IBM OpenPages, AI Factsheets, and OpenScale", "bbox": {"l": 64.800003, "t": 725.297897, "r": 507.3417400000001, "b": 733.622898, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "picture", "bbox": {"l": 64.15648651123047, "t": 447.1334533691406, "r": 547.9522705078125, "b": 721.9699096679688, "coord_origin": "TOPLEFT"}, "confidence": 0.9854127764701843, "cells": []}, {"id": 5, "label": "picture", "bbox": {"l": 63.62750244140625, "t": 77.65582275390625, "r": 547.6529541015625, "b": 350.53533935546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9835888147354126, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 22, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 535.4277954101562, "t": 754.2350463867188, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9060306549072266, "cells": [{"id": 0, "text": "21", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "21"}, {"label": "caption", "id": 1, "page_no": 22, "cluster": {"id": 1, "label": "caption", "bbox": {"l": 64.26493835449219, "t": 353.3095397949219, "r": 386.60101318359375, "b": 362.7451477050781, "coord_origin": "TOPLEFT"}, "confidence": 0.9381591081619263, "cells": [{"id": 1, "text": "Figure 17 IBM OpenScale dashboard that is used to monitor the external model", "bbox": {"l": 64.800003, "t": 354.01801, "r": 385.45013, "b": 362.34302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 17 IBM OpenScale dashboard that is used to monitor the external model"}, {"label": "text", "id": 2, "page_no": 22, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.85134887695312, "t": 375.21990966796875, "r": 547.21674, "b": 433.3600769042969, "coord_origin": "TOPLEFT"}, "confidence": 0.9801287055015564, "cells": [{"id": 2, "text": "You developed and deployed the AI model by using Watson Studio, WML on CP4D on Red ", "bbox": {"l": 136.8, "t": 376.00872999999996, "r": 542.91388, "b": 385.22171, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Hat OpenShift on a virtual machine on IBM Z, and end-to-end AI model governance by ", "bbox": {"l": 136.8, "t": 388.00854, "r": 521.86963, "b": 397.22153, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "leveraging AI Factsheets, OpenScale, and OpenPages on CP4D on a x86 platform. Figure 18 ", "bbox": {"l": 136.8, "t": 400.00836, "r": 547.21674, "b": 409.22134, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "shows end-to-end AI governance when using IBM OpenPages, AI Factsheets, and ", "bbox": {"l": 136.8, "t": 412.0081799999999, "r": 504.60781999999995, "b": 421.22116, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "OpenScale. ", "bbox": {"l": 136.8, "t": 424.00800000000004, "r": 191.81007, "b": 433.22098, "coord_origin": "TOPLEFT"}}]}, "text": "You developed and deployed the AI model by using Watson Studio, WML on CP4D on Red Hat OpenShift on a virtual machine on IBM Z, and end-to-end AI model governance by leveraging AI Factsheets, OpenScale, and OpenPages on CP4D on a x86 platform. Figure 18 shows end-to-end AI governance when using IBM OpenPages, AI Factsheets, and OpenScale."}, {"label": "caption", "id": 3, "page_no": 22, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.34110260009766, "t": 724.7535400390625, "r": 507.7935485839844, "b": 734.0853271484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9460791945457458, "cells": [{"id": 7, "text": "Figure 18 Final result: End-to-end AI governance when using IBM OpenPages, AI Factsheets, and OpenScale", "bbox": {"l": 64.800003, "t": 725.297897, "r": 507.3417400000001, "b": 733.622898, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 18 Final result: End-to-end AI governance when using IBM OpenPages, AI Factsheets, and OpenScale"}, {"label": "picture", "id": 4, "page_no": 22, "cluster": {"id": 4, "label": "picture", "bbox": {"l": 64.15648651123047, "t": 447.1334533691406, "r": 547.9522705078125, "b": 721.9699096679688, "coord_origin": "TOPLEFT"}, "confidence": 0.9854127764701843, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 5, "page_no": 22, "cluster": {"id": 5, "label": "picture", "bbox": {"l": 63.62750244140625, "t": 77.65582275390625, "r": 547.6529541015625, "b": 350.53533935546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9835888147354126, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "caption", "id": 1, "page_no": 22, "cluster": {"id": 1, "label": "caption", "bbox": {"l": 64.26493835449219, "t": 353.3095397949219, "r": 386.60101318359375, "b": 362.7451477050781, "coord_origin": "TOPLEFT"}, "confidence": 0.9381591081619263, "cells": [{"id": 1, "text": "Figure 17 IBM OpenScale dashboard that is used to monitor the external model", "bbox": {"l": 64.800003, "t": 354.01801, "r": 385.45013, "b": 362.34302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 17 IBM OpenScale dashboard that is used to monitor the external model"}, {"label": "text", "id": 2, "page_no": 22, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.85134887695312, "t": 375.21990966796875, "r": 547.21674, "b": 433.3600769042969, "coord_origin": "TOPLEFT"}, "confidence": 0.9801287055015564, "cells": [{"id": 2, "text": "You developed and deployed the AI model by using Watson Studio, WML on CP4D on Red ", "bbox": {"l": 136.8, "t": 376.00872999999996, "r": 542.91388, "b": 385.22171, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Hat OpenShift on a virtual machine on IBM Z, and end-to-end AI model governance by ", "bbox": {"l": 136.8, "t": 388.00854, "r": 521.86963, "b": 397.22153, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "leveraging AI Factsheets, OpenScale, and OpenPages on CP4D on a x86 platform. Figure 18 ", "bbox": {"l": 136.8, "t": 400.00836, "r": 547.21674, "b": 409.22134, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "shows end-to-end AI governance when using IBM OpenPages, AI Factsheets, and ", "bbox": {"l": 136.8, "t": 412.0081799999999, "r": 504.60781999999995, "b": 421.22116, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "OpenScale. ", "bbox": {"l": 136.8, "t": 424.00800000000004, "r": 191.81007, "b": 433.22098, "coord_origin": "TOPLEFT"}}]}, "text": "You developed and deployed the AI model by using Watson Studio, WML on CP4D on Red Hat OpenShift on a virtual machine on IBM Z, and end-to-end AI model governance by leveraging AI Factsheets, OpenScale, and OpenPages on CP4D on a x86 platform. Figure 18 shows end-to-end AI governance when using IBM OpenPages, AI Factsheets, and OpenScale."}, {"label": "caption", "id": 3, "page_no": 22, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.34110260009766, "t": 724.7535400390625, "r": 507.7935485839844, "b": 734.0853271484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9460791945457458, "cells": [{"id": 7, "text": "Figure 18 Final result: End-to-end AI governance when using IBM OpenPages, AI Factsheets, and OpenScale", "bbox": {"l": 64.800003, "t": 725.297897, "r": 507.3417400000001, "b": 733.622898, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 18 Final result: End-to-end AI governance when using IBM OpenPages, AI Factsheets, and OpenScale"}, {"label": "picture", "id": 4, "page_no": 22, "cluster": {"id": 4, "label": "picture", "bbox": {"l": 64.15648651123047, "t": 447.1334533691406, "r": 547.9522705078125, "b": 721.9699096679688, "coord_origin": "TOPLEFT"}, "confidence": 0.9854127764701843, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 5, "page_no": 22, "cluster": {"id": 5, "label": "picture", "bbox": {"l": 63.62750244140625, "t": 77.65582275390625, "r": 547.6529541015625, "b": 350.53533935546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9835888147354126, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 22, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 535.4277954101562, "t": 754.2350463867188, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9060306549072266, "cells": [{"id": 0, "text": "21", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "21"}]}}, {"page_no": 23, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "22 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Use case 2: Credit default risk assessment", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 389.15826, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "In today\u2019s world, many individuals or businesses seeking loans to meet their growing business ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 547.22473, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "needs often look to financial institutions. Financial institutions can offer loans to individuals or ", "bbox": {"l": 136.80002, "t": 115.48852999999997, "r": 547.20685, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "businesses and charge interest based on the current market situations.", "bbox": {"l": 136.80002, "t": 127.48834000000011, "r": 450.76300000000003, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Industry challenges", "bbox": {"l": 64.800003, "t": 157.37469, "r": 186.7186, "b": 169.36273000000006, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Financial institutions must make an accurate decision about whether to sanction a loan or not, ", "bbox": {"l": 136.8, "t": 183.52868999999998, "r": 547.15698, "b": 192.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "and judging the likelihood of default is the difference between a successful and unsuccessful ", "bbox": {"l": 136.8, "t": 195.5285, "r": 547.27142, "b": 204.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "loan portfolio. In a traditional scenario, an experienced banker can judge someone\u2019s likelihood ", "bbox": {"l": 136.8, "t": 207.52832, "r": 547.29553, "b": 216.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "of default, but that is not an efficient method for judgment as a business grows. ", "bbox": {"l": 136.8, "t": 219.52814, "r": 487.93381, "b": 228.74114999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Predictions of credit default risk assessment", "bbox": {"l": 64.800003, "t": 249.35468000000003, "r": 341.16034, "b": 261.34271, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "In the modern world, growing business institutions can no longer rely on only experienced ", "bbox": {"l": 136.8, "t": 275.50873, "r": 535.18909, "b": 284.72171, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "bankers to decide whether to sanction a loan knowing that there is a probability that the ", "bbox": {"l": 136.8, "t": 287.50854, "r": 525.13245, "b": 296.72153, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "borrower might default on their loans. A better choice is to rely on technological ", "bbox": {"l": 136.80002, "t": 299.50836, "r": 489.06039, "b": 308.72134, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "advancements that can help with reasoning based on facts, such as leveraging credit risk ", "bbox": {"l": 136.80002, "t": 311.5081799999999, "r": 534.11041, "b": 320.72116, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "modeling techniques to process the historical data of past borrowers to understand their ", "bbox": {"l": 136.80002, "t": 323.50800000000004, "r": 527.39343, "b": 332.72098, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "credit behavior and make a more informed decision about whether to lend money, how much ", "bbox": {"l": 136.80002, "t": 335.50781, "r": 547.26355, "b": 344.7207900000001, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "money, and decide on the tenure to close the loan. ", "bbox": {"l": 136.80002, "t": 347.50763, "r": 364.10812, "b": 356.72061, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Financial institutions can leverage AI solutions by using ML techniques to predict the credit ", "bbox": {"l": 136.80002, "t": 369.52719, "r": 539.61719, "b": 378.74017, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "risk. Applying AI to credit risk modeling techniques can benefit institutions in decision-making, ", "bbox": {"l": 136.80002, "t": 381.52701, "r": 547.14716, "b": 390.7399899999999, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "and thus can help better manage the exposure to credit risk.", "bbox": {"l": 136.80002, "t": 393.52682000000004, "r": 403.00879, "b": 402.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Figure 19 on page 23 shows a sample architecture about how to design and develop an AI ", "bbox": {"l": 136.80002, "t": 415.48663, "r": 539.76471, "b": 424.69962, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "model for credit risk assessment on IBM Z. An IBM WebSpherefi Application Server is used ", "bbox": {"l": 136.80002, "t": 427.48645, "r": 545.84222, "b": 436.69943, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "for handling in-bound transactions, and CP4D is used for AI model lifecycle management that ", "bbox": {"l": 136.80002, "t": 439.48627, "r": 547.20087, "b": 448.69924999999995, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "includes building, training, and deploying the model. ", "bbox": {"l": 136.80002, "t": 451.4860800000001, "r": 369.01248, "b": 460.69907000000006, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.85818862915039, "t": 754.4114990234375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9204315543174744, "cells": [{"id": 0, "text": "22 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.21298217773438, "t": 754.78466796875, "r": 267.0744, "b": 764.0928344726562, "coord_origin": "TOPLEFT"}, "confidence": 0.9566571712493896, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.800003, "t": 70.24270629882812, "r": 389.5157470703125, "b": 85.9837, "coord_origin": "TOPLEFT"}, "confidence": 0.9576336145401001, "cells": [{"id": 2, "text": "Use case 2: Credit default risk assessment", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 389.15826, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 136.07400512695312, "t": 102.76129150390625, "r": 547.22473, "b": 136.72068786621094, "coord_origin": "TOPLEFT"}, "confidence": 0.985734224319458, "cells": [{"id": 3, "text": "In today\u2019s world, many individuals or businesses seeking loans to meet their growing business ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 547.22473, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "needs often look to financial institutions. Financial institutions can offer loans to individuals or ", "bbox": {"l": 136.80002, "t": 115.48852999999997, "r": 547.20685, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "businesses and charge interest based on the current market situations.", "bbox": {"l": 136.80002, "t": 127.48834000000011, "r": 450.76300000000003, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "section_header", "bbox": {"l": 64.54896545410156, "t": 156.48988342285156, "r": 186.7186, "b": 169.83836364746094, "coord_origin": "TOPLEFT"}, "confidence": 0.964301347732544, "cells": [{"id": 6, "text": "Industry challenges", "bbox": {"l": 64.800003, "t": 157.37469, "r": 186.7186, "b": 169.36273000000006, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.15374755859375, "t": 182.6127166748047, "r": 547.29553, "b": 228.91392517089844, "coord_origin": "TOPLEFT"}, "confidence": 0.9875076413154602, "cells": [{"id": 7, "text": "Financial institutions must make an accurate decision about whether to sanction a loan or not, ", "bbox": {"l": 136.8, "t": 183.52868999999998, "r": 547.15698, "b": 192.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "and judging the likelihood of default is the difference between a successful and unsuccessful ", "bbox": {"l": 136.8, "t": 195.5285, "r": 547.27142, "b": 204.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "loan portfolio. In a traditional scenario, an experienced banker can judge someone\u2019s likelihood ", "bbox": {"l": 136.8, "t": 207.52832, "r": 547.29553, "b": 216.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "of default, but that is not an efficient method for judgment as a business grows. ", "bbox": {"l": 136.8, "t": 219.52814, "r": 487.93381, "b": 228.74114999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "section_header", "bbox": {"l": 64.6235122680664, "t": 248.58290100097656, "r": 341.16034, "b": 261.34271, "coord_origin": "TOPLEFT"}, "confidence": 0.9595711827278137, "cells": [{"id": 11, "text": "Predictions of credit default risk assessment", "bbox": {"l": 64.800003, "t": 249.35468000000003, "r": 341.16034, "b": 261.34271, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 135.9077606201172, "t": 274.71612548828125, "r": 547.26355, "b": 356.72061, "coord_origin": "TOPLEFT"}, "confidence": 0.9880195260047913, "cells": [{"id": 12, "text": "In the modern world, growing business institutions can no longer rely on only experienced ", "bbox": {"l": 136.8, "t": 275.50873, "r": 535.18909, "b": 284.72171, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "bankers to decide whether to sanction a loan knowing that there is a probability that the ", "bbox": {"l": 136.8, "t": 287.50854, "r": 525.13245, "b": 296.72153, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "borrower might default on their loans. A better choice is to rely on technological ", "bbox": {"l": 136.80002, "t": 299.50836, "r": 489.06039, "b": 308.72134, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "advancements that can help with reasoning based on facts, such as leveraging credit risk ", "bbox": {"l": 136.80002, "t": 311.5081799999999, "r": 534.11041, "b": 320.72116, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "modeling techniques to process the historical data of past borrowers to understand their ", "bbox": {"l": 136.80002, "t": 323.50800000000004, "r": 527.39343, "b": 332.72098, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "credit behavior and make a more informed decision about whether to lend money, how much ", "bbox": {"l": 136.80002, "t": 335.50781, "r": 547.26355, "b": 344.7207900000001, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "money, and decide on the tenure to close the loan. ", "bbox": {"l": 136.80002, "t": 347.50763, "r": 364.10812, "b": 356.72061, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 136.04486083984375, "t": 368.8188781738281, "r": 547.14716, "b": 402.8493957519531, "coord_origin": "TOPLEFT"}, "confidence": 0.9847903847694397, "cells": [{"id": 19, "text": "Financial institutions can leverage AI solutions by using ML techniques to predict the credit ", "bbox": {"l": 136.80002, "t": 369.52719, "r": 539.61719, "b": 378.74017, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "risk. Applying AI to credit risk modeling techniques can benefit institutions in decision-making, ", "bbox": {"l": 136.80002, "t": 381.52701, "r": 547.14716, "b": 390.7399899999999, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "and thus can help better manage the exposure to credit risk.", "bbox": {"l": 136.80002, "t": 393.52682000000004, "r": 403.00879, "b": 402.73981000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 136.09634399414062, "t": 414.7832336425781, "r": 547.20087, "b": 461.024658203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9877332448959351, "cells": [{"id": 22, "text": "Figure 19 on page 23 shows a sample architecture about how to design and develop an AI ", "bbox": {"l": 136.80002, "t": 415.48663, "r": 539.76471, "b": 424.69962, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "model for credit risk assessment on IBM Z. An IBM WebSpherefi Application Server is used ", "bbox": {"l": 136.80002, "t": 427.48645, "r": 545.84222, "b": 436.69943, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "for handling in-bound transactions, and CP4D is used for AI model lifecycle management that ", "bbox": {"l": 136.80002, "t": 439.48627, "r": 547.20087, "b": 448.69924999999995, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "includes building, training, and deploying the model. ", "bbox": {"l": 136.80002, "t": 451.4860800000001, "r": 369.01248, "b": 460.69907000000006, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 23, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.85818862915039, "t": 754.4114990234375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9204315543174744, "cells": [{"id": 0, "text": "22 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "22"}, {"label": "page_footer", "id": 1, "page_no": 23, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.21298217773438, "t": 754.78466796875, "r": 267.0744, "b": 764.0928344726562, "coord_origin": "TOPLEFT"}, "confidence": 0.9566571712493896, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"label": "section_header", "id": 2, "page_no": 23, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.800003, "t": 70.24270629882812, "r": 389.5157470703125, "b": 85.9837, "coord_origin": "TOPLEFT"}, "confidence": 0.9576336145401001, "cells": [{"id": 2, "text": "Use case 2: Credit default risk assessment", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 389.15826, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, "text": "Use case 2: Credit default risk assessment"}, {"label": "text", "id": 3, "page_no": 23, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.07400512695312, "t": 102.76129150390625, "r": 547.22473, "b": 136.72068786621094, "coord_origin": "TOPLEFT"}, "confidence": 0.985734224319458, "cells": [{"id": 3, "text": "In today\u2019s world, many individuals or businesses seeking loans to meet their growing business ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 547.22473, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "needs often look to financial institutions. Financial institutions can offer loans to individuals or ", "bbox": {"l": 136.80002, "t": 115.48852999999997, "r": 547.20685, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "businesses and charge interest based on the current market situations.", "bbox": {"l": 136.80002, "t": 127.48834000000011, "r": 450.76300000000003, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}]}, "text": "In today\u2019s world, many individuals or businesses seeking loans to meet their growing business needs often look to financial institutions. Financial institutions can offer loans to individuals or businesses and charge interest based on the current market situations."}, {"label": "section_header", "id": 4, "page_no": 23, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.54896545410156, "t": 156.48988342285156, "r": 186.7186, "b": 169.83836364746094, "coord_origin": "TOPLEFT"}, "confidence": 0.964301347732544, "cells": [{"id": 6, "text": "Industry challenges", "bbox": {"l": 64.800003, "t": 157.37469, "r": 186.7186, "b": 169.36273000000006, "coord_origin": "TOPLEFT"}}]}, "text": "Industry challenges"}, {"label": "text", "id": 5, "page_no": 23, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.15374755859375, "t": 182.6127166748047, "r": 547.29553, "b": 228.91392517089844, "coord_origin": "TOPLEFT"}, "confidence": 0.9875076413154602, "cells": [{"id": 7, "text": "Financial institutions must make an accurate decision about whether to sanction a loan or not, ", "bbox": {"l": 136.8, "t": 183.52868999999998, "r": 547.15698, "b": 192.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "and judging the likelihood of default is the difference between a successful and unsuccessful ", "bbox": {"l": 136.8, "t": 195.5285, "r": 547.27142, "b": 204.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "loan portfolio. In a traditional scenario, an experienced banker can judge someone\u2019s likelihood ", "bbox": {"l": 136.8, "t": 207.52832, "r": 547.29553, "b": 216.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "of default, but that is not an efficient method for judgment as a business grows. ", "bbox": {"l": 136.8, "t": 219.52814, "r": 487.93381, "b": 228.74114999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Financial institutions must make an accurate decision about whether to sanction a loan or not, and judging the likelihood of default is the difference between a successful and unsuccessful loan portfolio. In a traditional scenario, an experienced banker can judge someone\u2019s likelihood of default, but that is not an efficient method for judgment as a business grows."}, {"label": "section_header", "id": 6, "page_no": 23, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 64.6235122680664, "t": 248.58290100097656, "r": 341.16034, "b": 261.34271, "coord_origin": "TOPLEFT"}, "confidence": 0.9595711827278137, "cells": [{"id": 11, "text": "Predictions of credit default risk assessment", "bbox": {"l": 64.800003, "t": 249.35468000000003, "r": 341.16034, "b": 261.34271, "coord_origin": "TOPLEFT"}}]}, "text": "Predictions of credit default risk assessment"}, {"label": "text", "id": 7, "page_no": 23, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.9077606201172, "t": 274.71612548828125, "r": 547.26355, "b": 356.72061, "coord_origin": "TOPLEFT"}, "confidence": 0.9880195260047913, "cells": [{"id": 12, "text": "In the modern world, growing business institutions can no longer rely on only experienced ", "bbox": {"l": 136.8, "t": 275.50873, "r": 535.18909, "b": 284.72171, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "bankers to decide whether to sanction a loan knowing that there is a probability that the ", "bbox": {"l": 136.8, "t": 287.50854, "r": 525.13245, "b": 296.72153, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "borrower might default on their loans. A better choice is to rely on technological ", "bbox": {"l": 136.80002, "t": 299.50836, "r": 489.06039, "b": 308.72134, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "advancements that can help with reasoning based on facts, such as leveraging credit risk ", "bbox": {"l": 136.80002, "t": 311.5081799999999, "r": 534.11041, "b": 320.72116, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "modeling techniques to process the historical data of past borrowers to understand their ", "bbox": {"l": 136.80002, "t": 323.50800000000004, "r": 527.39343, "b": 332.72098, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "credit behavior and make a more informed decision about whether to lend money, how much ", "bbox": {"l": 136.80002, "t": 335.50781, "r": 547.26355, "b": 344.7207900000001, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "money, and decide on the tenure to close the loan. ", "bbox": {"l": 136.80002, "t": 347.50763, "r": 364.10812, "b": 356.72061, "coord_origin": "TOPLEFT"}}]}, "text": "In the modern world, growing business institutions can no longer rely on only experienced bankers to decide whether to sanction a loan knowing that there is a probability that the borrower might default on their loans. A better choice is to rely on technological advancements that can help with reasoning based on facts, such as leveraging credit risk modeling techniques to process the historical data of past borrowers to understand their credit behavior and make a more informed decision about whether to lend money, how much money, and decide on the tenure to close the loan."}, {"label": "text", "id": 8, "page_no": 23, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.04486083984375, "t": 368.8188781738281, "r": 547.14716, "b": 402.8493957519531, "coord_origin": "TOPLEFT"}, "confidence": 0.9847903847694397, "cells": [{"id": 19, "text": "Financial institutions can leverage AI solutions by using ML techniques to predict the credit ", "bbox": {"l": 136.80002, "t": 369.52719, "r": 539.61719, "b": 378.74017, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "risk. Applying AI to credit risk modeling techniques can benefit institutions in decision-making, ", "bbox": {"l": 136.80002, "t": 381.52701, "r": 547.14716, "b": 390.7399899999999, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "and thus can help better manage the exposure to credit risk.", "bbox": {"l": 136.80002, "t": 393.52682000000004, "r": 403.00879, "b": 402.73981000000003, "coord_origin": "TOPLEFT"}}]}, "text": "Financial institutions can leverage AI solutions by using ML techniques to predict the credit risk. Applying AI to credit risk modeling techniques can benefit institutions in decision-making, and thus can help better manage the exposure to credit risk."}, {"label": "text", "id": 9, "page_no": 23, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.09634399414062, "t": 414.7832336425781, "r": 547.20087, "b": 461.024658203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9877332448959351, "cells": [{"id": 22, "text": "Figure 19 on page 23 shows a sample architecture about how to design and develop an AI ", "bbox": {"l": 136.80002, "t": 415.48663, "r": 539.76471, "b": 424.69962, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "model for credit risk assessment on IBM Z. An IBM WebSpherefi Application Server is used ", "bbox": {"l": 136.80002, "t": 427.48645, "r": 545.84222, "b": 436.69943, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "for handling in-bound transactions, and CP4D is used for AI model lifecycle management that ", "bbox": {"l": 136.80002, "t": 439.48627, "r": 547.20087, "b": 448.69924999999995, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "includes building, training, and deploying the model. ", "bbox": {"l": 136.80002, "t": 451.4860800000001, "r": 369.01248, "b": 460.69907000000006, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 19 on page 23 shows a sample architecture about how to design and develop an AI model for credit risk assessment on IBM Z. An IBM WebSpherefi Application Server is used for handling in-bound transactions, and CP4D is used for AI model lifecycle management that includes building, training, and deploying the model."}], "body": [{"label": "section_header", "id": 2, "page_no": 23, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.800003, "t": 70.24270629882812, "r": 389.5157470703125, "b": 85.9837, "coord_origin": "TOPLEFT"}, "confidence": 0.9576336145401001, "cells": [{"id": 2, "text": "Use case 2: Credit default risk assessment", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 389.15826, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, "text": "Use case 2: Credit default risk assessment"}, {"label": "text", "id": 3, "page_no": 23, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.07400512695312, "t": 102.76129150390625, "r": 547.22473, "b": 136.72068786621094, "coord_origin": "TOPLEFT"}, "confidence": 0.985734224319458, "cells": [{"id": 3, "text": "In today\u2019s world, many individuals or businesses seeking loans to meet their growing business ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 547.22473, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "needs often look to financial institutions. Financial institutions can offer loans to individuals or ", "bbox": {"l": 136.80002, "t": 115.48852999999997, "r": 547.20685, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "businesses and charge interest based on the current market situations.", "bbox": {"l": 136.80002, "t": 127.48834000000011, "r": 450.76300000000003, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}]}, "text": "In today\u2019s world, many individuals or businesses seeking loans to meet their growing business needs often look to financial institutions. Financial institutions can offer loans to individuals or businesses and charge interest based on the current market situations."}, {"label": "section_header", "id": 4, "page_no": 23, "cluster": {"id": 4, "label": "section_header", "bbox": {"l": 64.54896545410156, "t": 156.48988342285156, "r": 186.7186, "b": 169.83836364746094, "coord_origin": "TOPLEFT"}, "confidence": 0.964301347732544, "cells": [{"id": 6, "text": "Industry challenges", "bbox": {"l": 64.800003, "t": 157.37469, "r": 186.7186, "b": 169.36273000000006, "coord_origin": "TOPLEFT"}}]}, "text": "Industry challenges"}, {"label": "text", "id": 5, "page_no": 23, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.15374755859375, "t": 182.6127166748047, "r": 547.29553, "b": 228.91392517089844, "coord_origin": "TOPLEFT"}, "confidence": 0.9875076413154602, "cells": [{"id": 7, "text": "Financial institutions must make an accurate decision about whether to sanction a loan or not, ", "bbox": {"l": 136.8, "t": 183.52868999999998, "r": 547.15698, "b": 192.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "and judging the likelihood of default is the difference between a successful and unsuccessful ", "bbox": {"l": 136.8, "t": 195.5285, "r": 547.27142, "b": 204.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "loan portfolio. In a traditional scenario, an experienced banker can judge someone\u2019s likelihood ", "bbox": {"l": 136.8, "t": 207.52832, "r": 547.29553, "b": 216.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "of default, but that is not an efficient method for judgment as a business grows. ", "bbox": {"l": 136.8, "t": 219.52814, "r": 487.93381, "b": 228.74114999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Financial institutions must make an accurate decision about whether to sanction a loan or not, and judging the likelihood of default is the difference between a successful and unsuccessful loan portfolio. In a traditional scenario, an experienced banker can judge someone\u2019s likelihood of default, but that is not an efficient method for judgment as a business grows."}, {"label": "section_header", "id": 6, "page_no": 23, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 64.6235122680664, "t": 248.58290100097656, "r": 341.16034, "b": 261.34271, "coord_origin": "TOPLEFT"}, "confidence": 0.9595711827278137, "cells": [{"id": 11, "text": "Predictions of credit default risk assessment", "bbox": {"l": 64.800003, "t": 249.35468000000003, "r": 341.16034, "b": 261.34271, "coord_origin": "TOPLEFT"}}]}, "text": "Predictions of credit default risk assessment"}, {"label": "text", "id": 7, "page_no": 23, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.9077606201172, "t": 274.71612548828125, "r": 547.26355, "b": 356.72061, "coord_origin": "TOPLEFT"}, "confidence": 0.9880195260047913, "cells": [{"id": 12, "text": "In the modern world, growing business institutions can no longer rely on only experienced ", "bbox": {"l": 136.8, "t": 275.50873, "r": 535.18909, "b": 284.72171, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "bankers to decide whether to sanction a loan knowing that there is a probability that the ", "bbox": {"l": 136.8, "t": 287.50854, "r": 525.13245, "b": 296.72153, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "borrower might default on their loans. A better choice is to rely on technological ", "bbox": {"l": 136.80002, "t": 299.50836, "r": 489.06039, "b": 308.72134, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "advancements that can help with reasoning based on facts, such as leveraging credit risk ", "bbox": {"l": 136.80002, "t": 311.5081799999999, "r": 534.11041, "b": 320.72116, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "modeling techniques to process the historical data of past borrowers to understand their ", "bbox": {"l": 136.80002, "t": 323.50800000000004, "r": 527.39343, "b": 332.72098, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "credit behavior and make a more informed decision about whether to lend money, how much ", "bbox": {"l": 136.80002, "t": 335.50781, "r": 547.26355, "b": 344.7207900000001, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "money, and decide on the tenure to close the loan. ", "bbox": {"l": 136.80002, "t": 347.50763, "r": 364.10812, "b": 356.72061, "coord_origin": "TOPLEFT"}}]}, "text": "In the modern world, growing business institutions can no longer rely on only experienced bankers to decide whether to sanction a loan knowing that there is a probability that the borrower might default on their loans. A better choice is to rely on technological advancements that can help with reasoning based on facts, such as leveraging credit risk modeling techniques to process the historical data of past borrowers to understand their credit behavior and make a more informed decision about whether to lend money, how much money, and decide on the tenure to close the loan."}, {"label": "text", "id": 8, "page_no": 23, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.04486083984375, "t": 368.8188781738281, "r": 547.14716, "b": 402.8493957519531, "coord_origin": "TOPLEFT"}, "confidence": 0.9847903847694397, "cells": [{"id": 19, "text": "Financial institutions can leverage AI solutions by using ML techniques to predict the credit ", "bbox": {"l": 136.80002, "t": 369.52719, "r": 539.61719, "b": 378.74017, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "risk. Applying AI to credit risk modeling techniques can benefit institutions in decision-making, ", "bbox": {"l": 136.80002, "t": 381.52701, "r": 547.14716, "b": 390.7399899999999, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "and thus can help better manage the exposure to credit risk.", "bbox": {"l": 136.80002, "t": 393.52682000000004, "r": 403.00879, "b": 402.73981000000003, "coord_origin": "TOPLEFT"}}]}, "text": "Financial institutions can leverage AI solutions by using ML techniques to predict the credit risk. Applying AI to credit risk modeling techniques can benefit institutions in decision-making, and thus can help better manage the exposure to credit risk."}, {"label": "text", "id": 9, "page_no": 23, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.09634399414062, "t": 414.7832336425781, "r": 547.20087, "b": 461.024658203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9877332448959351, "cells": [{"id": 22, "text": "Figure 19 on page 23 shows a sample architecture about how to design and develop an AI ", "bbox": {"l": 136.80002, "t": 415.48663, "r": 539.76471, "b": 424.69962, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "model for credit risk assessment on IBM Z. An IBM WebSpherefi Application Server is used ", "bbox": {"l": 136.80002, "t": 427.48645, "r": 545.84222, "b": 436.69943, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "for handling in-bound transactions, and CP4D is used for AI model lifecycle management that ", "bbox": {"l": 136.80002, "t": 439.48627, "r": 547.20087, "b": 448.69924999999995, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "includes building, training, and deploying the model. ", "bbox": {"l": 136.80002, "t": 451.4860800000001, "r": 369.01248, "b": 460.69907000000006, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 19 on page 23 shows a sample architecture about how to design and develop an AI model for credit risk assessment on IBM Z. An IBM WebSpherefi Application Server is used for handling in-bound transactions, and CP4D is used for AI model lifecycle management that includes building, training, and deploying the model."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 23, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.85818862915039, "t": 754.4114990234375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9204315543174744, "cells": [{"id": 0, "text": "22 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "22"}, {"label": "page_footer", "id": 1, "page_no": 23, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.21298217773438, "t": 754.78466796875, "r": 267.0744, "b": 764.0928344726562, "coord_origin": "TOPLEFT"}, "confidence": 0.9566571712493896, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}]}}, {"page_no": 24, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "23", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Figure 19 Architecture for credit risk prediction by using an ML AI model on IBM Z", "bbox": {"l": 64.800003, "t": 344.11798, "r": 394.03705, "b": 352.44299, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "A data scientist can leverage Watson Studio to develop and train an AI model and WML to ", "bbox": {"l": 136.8, "t": 366.10873, "r": 538.54846, "b": 375.3217200000001, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "deploy and score the model. In this sample architecture, the WML Python run time leverages ", "bbox": {"l": 136.8, "t": 378.10855, "r": 547.34521, "b": 387.32153, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "the ML framework, IBM Snap Machine Learning (Snap ML), for scoring, can leverage an ", "bbox": {"l": 136.8, "t": 390.10837, "r": 529.53766, "b": 399.32134999999994, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "integrated AI accelerator at the time of model import. ", "bbox": {"l": 136.8, "t": 402.10818000000006, "r": 372.28036, "b": 411.32117000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Then, the banking loan approval team can send a loan applicant request to the IBM ", "bbox": {"l": 136.8, "t": 424.12775, "r": 507.99618999999996, "b": 433.34073, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "WebSphere Application Server, which can make a request to the AI inference endpoint. The ", "bbox": {"l": 136.8, "t": 436.12756, "r": 545.58319, "b": 445.34055, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "AI inference engine scores the transaction and sends the result back to the loan approval ", "bbox": {"l": 136.8, "t": 448.12738, "r": 533.52386, "b": 457.34036, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "team. Based on the results, the approval team can decide on whether to approve a loan or ", "bbox": {"l": 136.8, "t": 460.12719999999996, "r": 539.06445, "b": 469.34018, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "not, and also decide how much they can lend, timelines, and other factors. ", "bbox": {"l": 136.8, "t": 472.12701, "r": 467.96204000000006, "b": 481.34, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "The transaction system that is shown in Figure 19 uses IBM WebSphere Liberty as an ", "bbox": {"l": 136.8, "t": 494.14658, "r": 519.58179, "b": 503.35956, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "application server, but you also can use an IBM Open Libertyfi application server or any ", "bbox": {"l": 136.8, "t": 506.14639, "r": 528.65729, "b": 515.35938, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "application server that can send RESTful API communications. ", "bbox": {"l": 136.80002, "t": 518.14621, "r": 417.46875, "b": 527.35919, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Models are frequently developed and tested in many platforms and languages, such as ", "bbox": {"l": 136.80002, "t": 540.10602, "r": 524.06476, "b": 549.31902, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Python, Scala, R, and Go. Models can leverage ML frameworks like scikit-learn, Snap ML, or ", "bbox": {"l": 136.80002, "t": 552.10582, "r": 547.19678, "b": 561.31882, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "XGBoost, or DL frameworks like TensorFlow or PyTorch. Training a model can be done on ", "bbox": {"l": 136.80002, "t": 564.10562, "r": 540.16803, "b": 573.31862, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "any platform if you have enough computing power for complex models, but moving that model ", "bbox": {"l": 136.80002, "t": 576.10542, "r": 547.23364, "b": 585.3184200000001, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "into production requires careful testing to ensure that transactions are not delayed, especially ", "bbox": {"l": 136.80002, "t": 588.10522, "r": 547.31055, "b": 597.31822, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "if you plan to run the model within a transaction.", "bbox": {"l": 136.80002, "t": 600.1050299999999, "r": 348.49084, "b": 609.3180199999999, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "We showed how IBM Z enable customers to use AI frameworks to detect credit risk. Now, we ", "bbox": {"l": 136.80002, "t": 622.12459, "r": 547.23767, "b": 631.33759, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "look at how you can leverage CP4D and TensorFlow on IBM Z to detect the credit risk. ", "bbox": {"l": 136.80002, "t": 634.12439, "r": 522.35748, "b": 643.33739, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 535.4268188476562, "t": 754.3800048828125, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9180097579956055, "cells": [{"id": 0, "text": "23", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "caption", "bbox": {"l": 64.25103759765625, "t": 343.4239501953125, "r": 395.7005615234375, "b": 352.6430358886719, "coord_origin": "TOPLEFT"}, "confidence": 0.945114016532898, "cells": [{"id": 1, "text": "Figure 19 Architecture for credit risk prediction by using an ML AI model on IBM Z", "bbox": {"l": 64.800003, "t": 344.11798, "r": 394.03705, "b": 352.44299, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.72901916503906, "t": 365.51513671875, "r": 547.34521, "b": 411.425048828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9854235053062439, "cells": [{"id": 2, "text": "A data scientist can leverage Watson Studio to develop and train an AI model and WML to ", "bbox": {"l": 136.8, "t": 366.10873, "r": 538.54846, "b": 375.3217200000001, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "deploy and score the model. In this sample architecture, the WML Python run time leverages ", "bbox": {"l": 136.8, "t": 378.10855, "r": 547.34521, "b": 387.32153, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "the ML framework, IBM Snap Machine Learning (Snap ML), for scoring, can leverage an ", "bbox": {"l": 136.8, "t": 390.10837, "r": 529.53766, "b": 399.32134999999994, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "integrated AI accelerator at the time of model import. ", "bbox": {"l": 136.8, "t": 402.10818000000006, "r": 372.28036, "b": 411.32117000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.47738647460938, "t": 423.4901123046875, "r": 545.58319, "b": 481.39813232421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9868801832199097, "cells": [{"id": 6, "text": "Then, the banking loan approval team can send a loan applicant request to the IBM ", "bbox": {"l": 136.8, "t": 424.12775, "r": 507.99618999999996, "b": 433.34073, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "WebSphere Application Server, which can make a request to the AI inference endpoint. The ", "bbox": {"l": 136.8, "t": 436.12756, "r": 545.58319, "b": 445.34055, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "AI inference engine scores the transaction and sends the result back to the loan approval ", "bbox": {"l": 136.8, "t": 448.12738, "r": 533.52386, "b": 457.34036, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "team. Based on the results, the approval team can decide on whether to approve a loan or ", "bbox": {"l": 136.8, "t": 460.12719999999996, "r": 539.06445, "b": 469.34018, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "not, and also decide how much they can lend, timelines, and other factors. ", "bbox": {"l": 136.8, "t": 472.12701, "r": 467.96204000000006, "b": 481.34, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.9343719482422, "t": 493.64398193359375, "r": 528.65729, "b": 527.35919, "coord_origin": "TOPLEFT"}, "confidence": 0.9839997887611389, "cells": [{"id": 11, "text": "The transaction system that is shown in Figure 19 uses IBM WebSphere Liberty as an ", "bbox": {"l": 136.8, "t": 494.14658, "r": 519.58179, "b": 503.35956, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "application server, but you also can use an IBM Open Libertyfi application server or any ", "bbox": {"l": 136.8, "t": 506.14639, "r": 528.65729, "b": 515.35938, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "application server that can send RESTful API communications. ", "bbox": {"l": 136.80002, "t": 518.14621, "r": 417.46875, "b": 527.35919, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.85601806640625, "t": 539.41064453125, "r": 547.31055, "b": 609.6241455078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9883375763893127, "cells": [{"id": 14, "text": "Models are frequently developed and tested in many platforms and languages, such as ", "bbox": {"l": 136.80002, "t": 540.10602, "r": 524.06476, "b": 549.31902, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Python, Scala, R, and Go. Models can leverage ML frameworks like scikit-learn, Snap ML, or ", "bbox": {"l": 136.80002, "t": 552.10582, "r": 547.19678, "b": 561.31882, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "XGBoost, or DL frameworks like TensorFlow or PyTorch. Training a model can be done on ", "bbox": {"l": 136.80002, "t": 564.10562, "r": 540.16803, "b": 573.31862, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "any platform if you have enough computing power for complex models, but moving that model ", "bbox": {"l": 136.80002, "t": 576.10542, "r": 547.23364, "b": 585.3184200000001, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "into production requires careful testing to ensure that transactions are not delayed, especially ", "bbox": {"l": 136.80002, "t": 588.10522, "r": 547.31055, "b": 597.31822, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "if you plan to run the model within a transaction.", "bbox": {"l": 136.80002, "t": 600.1050299999999, "r": 348.49084, "b": 609.3180199999999, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 135.7754364013672, "t": 621.3679809570312, "r": 547.23767, "b": 643.67041015625, "coord_origin": "TOPLEFT"}, "confidence": 0.981151282787323, "cells": [{"id": 20, "text": "We showed how IBM Z enable customers to use AI frameworks to detect credit risk. Now, we ", "bbox": {"l": 136.80002, "t": 622.12459, "r": 547.23767, "b": 631.33759, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "look at how you can leverage CP4D and TensorFlow on IBM Z to detect the credit risk. ", "bbox": {"l": 136.80002, "t": 634.12439, "r": 522.35748, "b": 643.33739, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "picture", "bbox": {"l": 64.85054016113281, "t": 77.66917419433594, "r": 545.2755126953125, "b": 340.2884826660156, "coord_origin": "TOPLEFT"}, "confidence": 0.9836614727973938, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 24, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 535.4268188476562, "t": 754.3800048828125, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9180097579956055, "cells": [{"id": 0, "text": "23", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "23"}, {"label": "caption", "id": 1, "page_no": 24, "cluster": {"id": 1, "label": "caption", "bbox": {"l": 64.25103759765625, "t": 343.4239501953125, "r": 395.7005615234375, "b": 352.6430358886719, "coord_origin": "TOPLEFT"}, "confidence": 0.945114016532898, "cells": [{"id": 1, "text": "Figure 19 Architecture for credit risk prediction by using an ML AI model on IBM Z", "bbox": {"l": 64.800003, "t": 344.11798, "r": 394.03705, "b": 352.44299, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 19 Architecture for credit risk prediction by using an ML AI model on IBM Z"}, {"label": "text", "id": 2, "page_no": 24, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.72901916503906, "t": 365.51513671875, "r": 547.34521, "b": 411.425048828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9854235053062439, "cells": [{"id": 2, "text": "A data scientist can leverage Watson Studio to develop and train an AI model and WML to ", "bbox": {"l": 136.8, "t": 366.10873, "r": 538.54846, "b": 375.3217200000001, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "deploy and score the model. In this sample architecture, the WML Python run time leverages ", "bbox": {"l": 136.8, "t": 378.10855, "r": 547.34521, "b": 387.32153, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "the ML framework, IBM Snap Machine Learning (Snap ML), for scoring, can leverage an ", "bbox": {"l": 136.8, "t": 390.10837, "r": 529.53766, "b": 399.32134999999994, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "integrated AI accelerator at the time of model import. ", "bbox": {"l": 136.8, "t": 402.10818000000006, "r": 372.28036, "b": 411.32117000000005, "coord_origin": "TOPLEFT"}}]}, "text": "A data scientist can leverage Watson Studio to develop and train an AI model and WML to deploy and score the model. In this sample architecture, the WML Python run time leverages the ML framework, IBM Snap Machine Learning (Snap ML), for scoring, can leverage an integrated AI accelerator at the time of model import."}, {"label": "text", "id": 3, "page_no": 24, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.47738647460938, "t": 423.4901123046875, "r": 545.58319, "b": 481.39813232421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9868801832199097, "cells": [{"id": 6, "text": "Then, the banking loan approval team can send a loan applicant request to the IBM ", "bbox": {"l": 136.8, "t": 424.12775, "r": 507.99618999999996, "b": 433.34073, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "WebSphere Application Server, which can make a request to the AI inference endpoint. The ", "bbox": {"l": 136.8, "t": 436.12756, "r": 545.58319, "b": 445.34055, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "AI inference engine scores the transaction and sends the result back to the loan approval ", "bbox": {"l": 136.8, "t": 448.12738, "r": 533.52386, "b": 457.34036, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "team. Based on the results, the approval team can decide on whether to approve a loan or ", "bbox": {"l": 136.8, "t": 460.12719999999996, "r": 539.06445, "b": 469.34018, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "not, and also decide how much they can lend, timelines, and other factors. ", "bbox": {"l": 136.8, "t": 472.12701, "r": 467.96204000000006, "b": 481.34, "coord_origin": "TOPLEFT"}}]}, "text": "Then, the banking loan approval team can send a loan applicant request to the IBM WebSphere Application Server, which can make a request to the AI inference endpoint. The AI inference engine scores the transaction and sends the result back to the loan approval team. Based on the results, the approval team can decide on whether to approve a loan or not, and also decide how much they can lend, timelines, and other factors."}, {"label": "text", "id": 4, "page_no": 24, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.9343719482422, "t": 493.64398193359375, "r": 528.65729, "b": 527.35919, "coord_origin": "TOPLEFT"}, "confidence": 0.9839997887611389, "cells": [{"id": 11, "text": "The transaction system that is shown in Figure 19 uses IBM WebSphere Liberty as an ", "bbox": {"l": 136.8, "t": 494.14658, "r": 519.58179, "b": 503.35956, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "application server, but you also can use an IBM Open Libertyfi application server or any ", "bbox": {"l": 136.8, "t": 506.14639, "r": 528.65729, "b": 515.35938, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "application server that can send RESTful API communications. ", "bbox": {"l": 136.80002, "t": 518.14621, "r": 417.46875, "b": 527.35919, "coord_origin": "TOPLEFT"}}]}, "text": "The transaction system that is shown in Figure 19 uses IBM WebSphere Liberty as an application server, but you also can use an IBM Open Libertyfi application server or any application server that can send RESTful API communications."}, {"label": "text", "id": 5, "page_no": 24, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.85601806640625, "t": 539.41064453125, "r": 547.31055, "b": 609.6241455078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9883375763893127, "cells": [{"id": 14, "text": "Models are frequently developed and tested in many platforms and languages, such as ", "bbox": {"l": 136.80002, "t": 540.10602, "r": 524.06476, "b": 549.31902, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Python, Scala, R, and Go. Models can leverage ML frameworks like scikit-learn, Snap ML, or ", "bbox": {"l": 136.80002, "t": 552.10582, "r": 547.19678, "b": 561.31882, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "XGBoost, or DL frameworks like TensorFlow or PyTorch. Training a model can be done on ", "bbox": {"l": 136.80002, "t": 564.10562, "r": 540.16803, "b": 573.31862, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "any platform if you have enough computing power for complex models, but moving that model ", "bbox": {"l": 136.80002, "t": 576.10542, "r": 547.23364, "b": 585.3184200000001, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "into production requires careful testing to ensure that transactions are not delayed, especially ", "bbox": {"l": 136.80002, "t": 588.10522, "r": 547.31055, "b": 597.31822, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "if you plan to run the model within a transaction.", "bbox": {"l": 136.80002, "t": 600.1050299999999, "r": 348.49084, "b": 609.3180199999999, "coord_origin": "TOPLEFT"}}]}, "text": "Models are frequently developed and tested in many platforms and languages, such as Python, Scala, R, and Go. Models can leverage ML frameworks like scikit-learn, Snap ML, or XGBoost, or DL frameworks like TensorFlow or PyTorch. Training a model can be done on any platform if you have enough computing power for complex models, but moving that model into production requires careful testing to ensure that transactions are not delayed, especially if you plan to run the model within a transaction."}, {"label": "text", "id": 6, "page_no": 24, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.7754364013672, "t": 621.3679809570312, "r": 547.23767, "b": 643.67041015625, "coord_origin": "TOPLEFT"}, "confidence": 0.981151282787323, "cells": [{"id": 20, "text": "We showed how IBM Z enable customers to use AI frameworks to detect credit risk. Now, we ", "bbox": {"l": 136.80002, "t": 622.12459, "r": 547.23767, "b": 631.33759, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "look at how you can leverage CP4D and TensorFlow on IBM Z to detect the credit risk. ", "bbox": {"l": 136.80002, "t": 634.12439, "r": 522.35748, "b": 643.33739, "coord_origin": "TOPLEFT"}}]}, "text": "We showed how IBM Z enable customers to use AI frameworks to detect credit risk. Now, we look at how you can leverage CP4D and TensorFlow on IBM Z to detect the credit risk."}, {"label": "picture", "id": 7, "page_no": 24, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 64.85054016113281, "t": 77.66917419433594, "r": 545.2755126953125, "b": 340.2884826660156, "coord_origin": "TOPLEFT"}, "confidence": 0.9836614727973938, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "caption", "id": 1, "page_no": 24, "cluster": {"id": 1, "label": "caption", "bbox": {"l": 64.25103759765625, "t": 343.4239501953125, "r": 395.7005615234375, "b": 352.6430358886719, "coord_origin": "TOPLEFT"}, "confidence": 0.945114016532898, "cells": [{"id": 1, "text": "Figure 19 Architecture for credit risk prediction by using an ML AI model on IBM Z", "bbox": {"l": 64.800003, "t": 344.11798, "r": 394.03705, "b": 352.44299, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 19 Architecture for credit risk prediction by using an ML AI model on IBM Z"}, {"label": "text", "id": 2, "page_no": 24, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.72901916503906, "t": 365.51513671875, "r": 547.34521, "b": 411.425048828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9854235053062439, "cells": [{"id": 2, "text": "A data scientist can leverage Watson Studio to develop and train an AI model and WML to ", "bbox": {"l": 136.8, "t": 366.10873, "r": 538.54846, "b": 375.3217200000001, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "deploy and score the model. In this sample architecture, the WML Python run time leverages ", "bbox": {"l": 136.8, "t": 378.10855, "r": 547.34521, "b": 387.32153, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "the ML framework, IBM Snap Machine Learning (Snap ML), for scoring, can leverage an ", "bbox": {"l": 136.8, "t": 390.10837, "r": 529.53766, "b": 399.32134999999994, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "integrated AI accelerator at the time of model import. ", "bbox": {"l": 136.8, "t": 402.10818000000006, "r": 372.28036, "b": 411.32117000000005, "coord_origin": "TOPLEFT"}}]}, "text": "A data scientist can leverage Watson Studio to develop and train an AI model and WML to deploy and score the model. In this sample architecture, the WML Python run time leverages the ML framework, IBM Snap Machine Learning (Snap ML), for scoring, can leverage an integrated AI accelerator at the time of model import."}, {"label": "text", "id": 3, "page_no": 24, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.47738647460938, "t": 423.4901123046875, "r": 545.58319, "b": 481.39813232421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9868801832199097, "cells": [{"id": 6, "text": "Then, the banking loan approval team can send a loan applicant request to the IBM ", "bbox": {"l": 136.8, "t": 424.12775, "r": 507.99618999999996, "b": 433.34073, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "WebSphere Application Server, which can make a request to the AI inference endpoint. The ", "bbox": {"l": 136.8, "t": 436.12756, "r": 545.58319, "b": 445.34055, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "AI inference engine scores the transaction and sends the result back to the loan approval ", "bbox": {"l": 136.8, "t": 448.12738, "r": 533.52386, "b": 457.34036, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "team. Based on the results, the approval team can decide on whether to approve a loan or ", "bbox": {"l": 136.8, "t": 460.12719999999996, "r": 539.06445, "b": 469.34018, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "not, and also decide how much they can lend, timelines, and other factors. ", "bbox": {"l": 136.8, "t": 472.12701, "r": 467.96204000000006, "b": 481.34, "coord_origin": "TOPLEFT"}}]}, "text": "Then, the banking loan approval team can send a loan applicant request to the IBM WebSphere Application Server, which can make a request to the AI inference endpoint. The AI inference engine scores the transaction and sends the result back to the loan approval team. Based on the results, the approval team can decide on whether to approve a loan or not, and also decide how much they can lend, timelines, and other factors."}, {"label": "text", "id": 4, "page_no": 24, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.9343719482422, "t": 493.64398193359375, "r": 528.65729, "b": 527.35919, "coord_origin": "TOPLEFT"}, "confidence": 0.9839997887611389, "cells": [{"id": 11, "text": "The transaction system that is shown in Figure 19 uses IBM WebSphere Liberty as an ", "bbox": {"l": 136.8, "t": 494.14658, "r": 519.58179, "b": 503.35956, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "application server, but you also can use an IBM Open Libertyfi application server or any ", "bbox": {"l": 136.8, "t": 506.14639, "r": 528.65729, "b": 515.35938, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "application server that can send RESTful API communications. ", "bbox": {"l": 136.80002, "t": 518.14621, "r": 417.46875, "b": 527.35919, "coord_origin": "TOPLEFT"}}]}, "text": "The transaction system that is shown in Figure 19 uses IBM WebSphere Liberty as an application server, but you also can use an IBM Open Libertyfi application server or any application server that can send RESTful API communications."}, {"label": "text", "id": 5, "page_no": 24, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.85601806640625, "t": 539.41064453125, "r": 547.31055, "b": 609.6241455078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9883375763893127, "cells": [{"id": 14, "text": "Models are frequently developed and tested in many platforms and languages, such as ", "bbox": {"l": 136.80002, "t": 540.10602, "r": 524.06476, "b": 549.31902, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Python, Scala, R, and Go. Models can leverage ML frameworks like scikit-learn, Snap ML, or ", "bbox": {"l": 136.80002, "t": 552.10582, "r": 547.19678, "b": 561.31882, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "XGBoost, or DL frameworks like TensorFlow or PyTorch. Training a model can be done on ", "bbox": {"l": 136.80002, "t": 564.10562, "r": 540.16803, "b": 573.31862, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "any platform if you have enough computing power for complex models, but moving that model ", "bbox": {"l": 136.80002, "t": 576.10542, "r": 547.23364, "b": 585.3184200000001, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "into production requires careful testing to ensure that transactions are not delayed, especially ", "bbox": {"l": 136.80002, "t": 588.10522, "r": 547.31055, "b": 597.31822, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "if you plan to run the model within a transaction.", "bbox": {"l": 136.80002, "t": 600.1050299999999, "r": 348.49084, "b": 609.3180199999999, "coord_origin": "TOPLEFT"}}]}, "text": "Models are frequently developed and tested in many platforms and languages, such as Python, Scala, R, and Go. Models can leverage ML frameworks like scikit-learn, Snap ML, or XGBoost, or DL frameworks like TensorFlow or PyTorch. Training a model can be done on any platform if you have enough computing power for complex models, but moving that model into production requires careful testing to ensure that transactions are not delayed, especially if you plan to run the model within a transaction."}, {"label": "text", "id": 6, "page_no": 24, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.7754364013672, "t": 621.3679809570312, "r": 547.23767, "b": 643.67041015625, "coord_origin": "TOPLEFT"}, "confidence": 0.981151282787323, "cells": [{"id": 20, "text": "We showed how IBM Z enable customers to use AI frameworks to detect credit risk. Now, we ", "bbox": {"l": 136.80002, "t": 622.12459, "r": 547.23767, "b": 631.33759, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "look at how you can leverage CP4D and TensorFlow on IBM Z to detect the credit risk. ", "bbox": {"l": 136.80002, "t": 634.12439, "r": 522.35748, "b": 643.33739, "coord_origin": "TOPLEFT"}}]}, "text": "We showed how IBM Z enable customers to use AI frameworks to detect credit risk. Now, we look at how you can leverage CP4D and TensorFlow on IBM Z to detect the credit risk."}, {"label": "picture", "id": 7, "page_no": 24, "cluster": {"id": 7, "label": "picture", "bbox": {"l": 64.85054016113281, "t": 77.66917419433594, "r": 545.2755126953125, "b": 340.2884826660156, "coord_origin": "TOPLEFT"}, "confidence": 0.9836614727973938, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 24, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 535.4268188476562, "t": 754.3800048828125, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9180097579956055, "cells": [{"id": 0, "text": "23", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "23"}]}}, {"page_no": 25, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "24 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Figure 20 shows an architecture for predicting credit risk by using DL on IBM Z. ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 489.57016, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Figure 20 Architecture for credit risk prediction by using DL on IBM Z", "bbox": {"l": 64.800003, "t": 362.05798, "r": 342.49408, "b": 370.38300000000004, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Data scientists can start creating and training a DL AI model by using a Jupyter Notebook ", "bbox": {"l": 136.8, "t": 384.04873999999995, "r": 534.56866, "b": 393.26172, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "instance and Watson Studio. Then, they can deploy the model by using WML on CP4D ", "bbox": {"l": 136.8, "t": 396.04855, "r": 524.06879, "b": 405.26154, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "running on IBM Z, which provides an endpoint. Other applications, including the ", "bbox": {"l": 136.8, "t": 408.04837, "r": 490.8303199999999, "b": 417.26135, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "IBM WebSphere server, can produce credit risk results by using the model\u2019s endpoint.", "bbox": {"l": 136.8, "t": 420.0481899999999, "r": 516.49701, "b": 429.26117, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "In summary, here are some considerations for developing real-time AI models, such as credit ", "bbox": {"l": 136.8, "t": 442.06775, "r": 547.21588, "b": 451.28073, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "risk assessment:", "bbox": {"l": 136.80002, "t": 454.06757, "r": 211.19226, "b": 463.28055, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 471.19675, "r": 141.78001, "b": 479.97153, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "A preference for in-platform run times of the model, such as faster execution results.", "bbox": {"l": 151.20018, "t": 471.04736, "r": 522.90546, "b": 480.26035, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 488.17654, "r": 141.78001, "b": 496.95132, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Less overhead in the end-to-end flows might improve scoring time.", "bbox": {"l": 151.20018, "t": 488.02716, "r": 445.53699, "b": 497.24014, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 505.21613, "r": 141.78001, "b": 513.99091, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "If you are using models that are not deployable, CP4D offers a custom Python run time to ", "bbox": {"l": 151.20018, "t": 505.06674, "r": 547.32324, "b": 514.27972, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "build your own stack if they are not available on the platform.", "bbox": {"l": 151.2002, "t": 517.06656, "r": 419.67203, "b": 526.27954, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "GLYPH", "bbox": {"l": 136.80003, "t": 534.19577, "r": 141.78003, "b": 542.97052, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "AI inferencing based on ML or DL models can increase the accuracy of better credit risk ", "bbox": {"l": 151.2002, "t": 534.04636, "r": 541.78046, "b": 543.25937, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "assessment.", "bbox": {"l": 151.2002, "t": 546.0461700000001, "r": 207.28795, "b": 555.25917, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "GLYPH", "bbox": {"l": 136.80003, "t": 563.17538, "r": 141.78003, "b": 571.9501300000001, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Using IBM z16 and on-chip AI acceleration with the Telum chip that is embedded with ", "bbox": {"l": 151.2002, "t": 563.02599, "r": 531.80676, "b": 572.23898, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "regular Integrated Facility for Linux (IFLs) provides an execution speed for your ", "bbox": {"l": 151.2002, "t": 575.02579, "r": 503.30713000000003, "b": 584.23878, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "transactions that cannot be achieved by other means.", "bbox": {"l": 151.1992, "t": 587.02559, "r": 388.4444, "b": 596.2385899999999, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.90467071533203, "t": 754.3189086914062, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9163190722465515, "cells": [{"id": 0, "text": "24 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.28766632080078, "t": 754.7548828125, "r": 267.0744, "b": 764.1080322265625, "coord_origin": "TOPLEFT"}, "confidence": 0.95806485414505, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 136.43939208984375, "t": 70.69316101074219, "r": 489.57016, "b": 81.03749084472656, "coord_origin": "TOPLEFT"}, "confidence": 0.7741285562515259, "cells": [{"id": 2, "text": "Figure 20 shows an architecture for predicting credit risk by using DL on IBM Z. ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 489.57016, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.37335968017578, "t": 361.3172302246094, "r": 344.09613037109375, "b": 370.6873779296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9477778077125549, "cells": [{"id": 3, "text": "Figure 20 Architecture for credit risk prediction by using DL on IBM Z", "bbox": {"l": 64.800003, "t": 362.05798, "r": 342.49408, "b": 370.38300000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 136.12535095214844, "t": 383.51470947265625, "r": 534.56866, "b": 429.55059814453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9804685115814209, "cells": [{"id": 4, "text": "Data scientists can start creating and training a DL AI model by using a Jupyter Notebook ", "bbox": {"l": 136.8, "t": 384.04873999999995, "r": 534.56866, "b": 393.26172, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "instance and Watson Studio. Then, they can deploy the model by using WML on CP4D ", "bbox": {"l": 136.8, "t": 396.04855, "r": 524.06879, "b": 405.26154, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "running on IBM Z, which provides an endpoint. Other applications, including the ", "bbox": {"l": 136.8, "t": 408.04837, "r": 490.8303199999999, "b": 417.26135, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "IBM WebSphere server, can produce credit risk results by using the model\u2019s endpoint.", "bbox": {"l": 136.8, "t": 420.0481899999999, "r": 516.49701, "b": 429.26117, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.19705200195312, "t": 441.5392150878906, "r": 547.21588, "b": 463.28055, "coord_origin": "TOPLEFT"}, "confidence": 0.9671667814254761, "cells": [{"id": 8, "text": "In summary, here are some considerations for developing real-time AI models, such as credit ", "bbox": {"l": 136.8, "t": 442.06775, "r": 547.21588, "b": 451.28073, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "risk assessment:", "bbox": {"l": 136.80002, "t": 454.06757, "r": 211.19226, "b": 463.28055, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.6735076904297, "t": 469.95037841796875, "r": 522.90546, "b": 480.26035, "coord_origin": "TOPLEFT"}, "confidence": 0.955508291721344, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 471.19675, "r": 141.78001, "b": 479.97153, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "A preference for in-platform run times of the model, such as faster execution results.", "bbox": {"l": 151.20018, "t": 471.04736, "r": 522.90546, "b": 480.26035, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.52078247070312, "t": 487.4938659667969, "r": 445.53699, "b": 497.67242431640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9564528465270996, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 488.17654, "r": 141.78001, "b": 496.95132, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Less overhead in the end-to-end flows might improve scoring time.", "bbox": {"l": 151.20018, "t": 488.02716, "r": 445.53699, "b": 497.24014, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.63246154785156, "t": 504.0003356933594, "r": 547.32324, "b": 526.3165893554688, "coord_origin": "TOPLEFT"}, "confidence": 0.9790537357330322, "cells": [{"id": 14, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 505.21613, "r": 141.78001, "b": 513.99091, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "If you are using models that are not deployable, CP4D offers a custom Python run time to ", "bbox": {"l": 151.20018, "t": 505.06674, "r": 547.32324, "b": 514.27972, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "build your own stack if they are not available on the platform.", "bbox": {"l": 151.2002, "t": 517.06656, "r": 419.67203, "b": 526.27954, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.62271118164062, "t": 533.3601684570312, "r": 541.78046, "b": 555.25917, "coord_origin": "TOPLEFT"}, "confidence": 0.970277726650238, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.80003, "t": 534.19577, "r": 141.78003, "b": 542.97052, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "AI inferencing based on ML or DL models can increase the accuracy of better credit risk ", "bbox": {"l": 151.2002, "t": 534.04636, "r": 541.78046, "b": 543.25937, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "assessment.", "bbox": {"l": 151.2002, "t": 546.0461700000001, "r": 207.28795, "b": 555.25917, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 135.50205993652344, "t": 561.84619140625, "r": 531.80676, "b": 596.2385899999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9821013808250427, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.80003, "t": 563.17538, "r": 141.78003, "b": 571.9501300000001, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Using IBM z16 and on-chip AI acceleration with the Telum chip that is embedded with ", "bbox": {"l": 151.2002, "t": 563.02599, "r": 531.80676, "b": 572.23898, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "regular Integrated Facility for Linux (IFLs) provides an execution speed for your ", "bbox": {"l": 151.2002, "t": 575.02579, "r": 503.30713000000003, "b": 584.23878, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "transactions that cannot be achieved by other means.", "bbox": {"l": 151.1992, "t": 587.02559, "r": 388.4444, "b": 596.2385899999999, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "picture", "bbox": {"l": 65.03783416748047, "t": 94.93846130371094, "r": 547.6334838867188, "b": 359.3612365722656, "coord_origin": "TOPLEFT"}, "confidence": 0.984186589717865, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 25, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.90467071533203, "t": 754.3189086914062, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9163190722465515, "cells": [{"id": 0, "text": "24 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "24"}, {"label": "page_footer", "id": 1, "page_no": 25, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.28766632080078, "t": 754.7548828125, "r": 267.0744, "b": 764.1080322265625, "coord_origin": "TOPLEFT"}, "confidence": 0.95806485414505, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"label": "text", "id": 2, "page_no": 25, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.43939208984375, "t": 70.69316101074219, "r": 489.57016, "b": 81.03749084472656, "coord_origin": "TOPLEFT"}, "confidence": 0.7741285562515259, "cells": [{"id": 2, "text": "Figure 20 shows an architecture for predicting credit risk by using DL on IBM Z. ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 489.57016, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 20 shows an architecture for predicting credit risk by using DL on IBM Z."}, {"label": "caption", "id": 3, "page_no": 25, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.37335968017578, "t": 361.3172302246094, "r": 344.09613037109375, "b": 370.6873779296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9477778077125549, "cells": [{"id": 3, "text": "Figure 20 Architecture for credit risk prediction by using DL on IBM Z", "bbox": {"l": 64.800003, "t": 362.05798, "r": 342.49408, "b": 370.38300000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 20 Architecture for credit risk prediction by using DL on IBM Z"}, {"label": "text", "id": 4, "page_no": 25, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.12535095214844, "t": 383.51470947265625, "r": 534.56866, "b": 429.55059814453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9804685115814209, "cells": [{"id": 4, "text": "Data scientists can start creating and training a DL AI model by using a Jupyter Notebook ", "bbox": {"l": 136.8, "t": 384.04873999999995, "r": 534.56866, "b": 393.26172, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "instance and Watson Studio. Then, they can deploy the model by using WML on CP4D ", "bbox": {"l": 136.8, "t": 396.04855, "r": 524.06879, "b": 405.26154, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "running on IBM Z, which provides an endpoint. Other applications, including the ", "bbox": {"l": 136.8, "t": 408.04837, "r": 490.8303199999999, "b": 417.26135, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "IBM WebSphere server, can produce credit risk results by using the model\u2019s endpoint.", "bbox": {"l": 136.8, "t": 420.0481899999999, "r": 516.49701, "b": 429.26117, "coord_origin": "TOPLEFT"}}]}, "text": "Data scientists can start creating and training a DL AI model by using a Jupyter Notebook instance and Watson Studio. Then, they can deploy the model by using WML on CP4D running on IBM Z, which provides an endpoint. Other applications, including the IBM WebSphere server, can produce credit risk results by using the model\u2019s endpoint."}, {"label": "text", "id": 5, "page_no": 25, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.19705200195312, "t": 441.5392150878906, "r": 547.21588, "b": 463.28055, "coord_origin": "TOPLEFT"}, "confidence": 0.9671667814254761, "cells": [{"id": 8, "text": "In summary, here are some considerations for developing real-time AI models, such as credit ", "bbox": {"l": 136.8, "t": 442.06775, "r": 547.21588, "b": 451.28073, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "risk assessment:", "bbox": {"l": 136.80002, "t": 454.06757, "r": 211.19226, "b": 463.28055, "coord_origin": "TOPLEFT"}}]}, "text": "In summary, here are some considerations for developing real-time AI models, such as credit risk assessment:"}, {"label": "list_item", "id": 6, "page_no": 25, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.6735076904297, "t": 469.95037841796875, "r": 522.90546, "b": 480.26035, "coord_origin": "TOPLEFT"}, "confidence": 0.955508291721344, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 471.19675, "r": 141.78001, "b": 479.97153, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "A preference for in-platform run times of the model, such as faster execution results.", "bbox": {"l": 151.20018, "t": 471.04736, "r": 522.90546, "b": 480.26035, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH A preference for in-platform run times of the model, such as faster execution results."}, {"label": "list_item", "id": 7, "page_no": 25, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.52078247070312, "t": 487.4938659667969, "r": 445.53699, "b": 497.67242431640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9564528465270996, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 488.17654, "r": 141.78001, "b": 496.95132, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Less overhead in the end-to-end flows might improve scoring time.", "bbox": {"l": 151.20018, "t": 488.02716, "r": 445.53699, "b": 497.24014, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Less overhead in the end-to-end flows might improve scoring time."}, {"label": "list_item", "id": 8, "page_no": 25, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.63246154785156, "t": 504.0003356933594, "r": 547.32324, "b": 526.3165893554688, "coord_origin": "TOPLEFT"}, "confidence": 0.9790537357330322, "cells": [{"id": 14, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 505.21613, "r": 141.78001, "b": 513.99091, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "If you are using models that are not deployable, CP4D offers a custom Python run time to ", "bbox": {"l": 151.20018, "t": 505.06674, "r": 547.32324, "b": 514.27972, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "build your own stack if they are not available on the platform.", "bbox": {"l": 151.2002, "t": 517.06656, "r": 419.67203, "b": 526.27954, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH If you are using models that are not deployable, CP4D offers a custom Python run time to build your own stack if they are not available on the platform."}, {"label": "list_item", "id": 9, "page_no": 25, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.62271118164062, "t": 533.3601684570312, "r": 541.78046, "b": 555.25917, "coord_origin": "TOPLEFT"}, "confidence": 0.970277726650238, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.80003, "t": 534.19577, "r": 141.78003, "b": 542.97052, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "AI inferencing based on ML or DL models can increase the accuracy of better credit risk ", "bbox": {"l": 151.2002, "t": 534.04636, "r": 541.78046, "b": 543.25937, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "assessment.", "bbox": {"l": 151.2002, "t": 546.0461700000001, "r": 207.28795, "b": 555.25917, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH AI inferencing based on ML or DL models can increase the accuracy of better credit risk assessment."}, {"label": "list_item", "id": 10, "page_no": 25, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.50205993652344, "t": 561.84619140625, "r": 531.80676, "b": 596.2385899999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9821013808250427, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.80003, "t": 563.17538, "r": 141.78003, "b": 571.9501300000001, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Using IBM z16 and on-chip AI acceleration with the Telum chip that is embedded with ", "bbox": {"l": 151.2002, "t": 563.02599, "r": 531.80676, "b": 572.23898, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "regular Integrated Facility for Linux (IFLs) provides an execution speed for your ", "bbox": {"l": 151.2002, "t": 575.02579, "r": 503.30713000000003, "b": 584.23878, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "transactions that cannot be achieved by other means.", "bbox": {"l": 151.1992, "t": 587.02559, "r": 388.4444, "b": 596.2385899999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Using IBM z16 and on-chip AI acceleration with the Telum chip that is embedded with regular Integrated Facility for Linux (IFLs) provides an execution speed for your transactions that cannot be achieved by other means."}, {"label": "picture", "id": 11, "page_no": 25, "cluster": {"id": 11, "label": "picture", "bbox": {"l": 65.03783416748047, "t": 94.93846130371094, "r": 547.6334838867188, "b": 359.3612365722656, "coord_origin": "TOPLEFT"}, "confidence": 0.984186589717865, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 25, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.43939208984375, "t": 70.69316101074219, "r": 489.57016, "b": 81.03749084472656, "coord_origin": "TOPLEFT"}, "confidence": 0.7741285562515259, "cells": [{"id": 2, "text": "Figure 20 shows an architecture for predicting credit risk by using DL on IBM Z. ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 489.57016, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 20 shows an architecture for predicting credit risk by using DL on IBM Z."}, {"label": "caption", "id": 3, "page_no": 25, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.37335968017578, "t": 361.3172302246094, "r": 344.09613037109375, "b": 370.6873779296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9477778077125549, "cells": [{"id": 3, "text": "Figure 20 Architecture for credit risk prediction by using DL on IBM Z", "bbox": {"l": 64.800003, "t": 362.05798, "r": 342.49408, "b": 370.38300000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 20 Architecture for credit risk prediction by using DL on IBM Z"}, {"label": "text", "id": 4, "page_no": 25, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.12535095214844, "t": 383.51470947265625, "r": 534.56866, "b": 429.55059814453125, "coord_origin": "TOPLEFT"}, "confidence": 0.9804685115814209, "cells": [{"id": 4, "text": "Data scientists can start creating and training a DL AI model by using a Jupyter Notebook ", "bbox": {"l": 136.8, "t": 384.04873999999995, "r": 534.56866, "b": 393.26172, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "instance and Watson Studio. Then, they can deploy the model by using WML on CP4D ", "bbox": {"l": 136.8, "t": 396.04855, "r": 524.06879, "b": 405.26154, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "running on IBM Z, which provides an endpoint. Other applications, including the ", "bbox": {"l": 136.8, "t": 408.04837, "r": 490.8303199999999, "b": 417.26135, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "IBM WebSphere server, can produce credit risk results by using the model\u2019s endpoint.", "bbox": {"l": 136.8, "t": 420.0481899999999, "r": 516.49701, "b": 429.26117, "coord_origin": "TOPLEFT"}}]}, "text": "Data scientists can start creating and training a DL AI model by using a Jupyter Notebook instance and Watson Studio. Then, they can deploy the model by using WML on CP4D running on IBM Z, which provides an endpoint. Other applications, including the IBM WebSphere server, can produce credit risk results by using the model\u2019s endpoint."}, {"label": "text", "id": 5, "page_no": 25, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.19705200195312, "t": 441.5392150878906, "r": 547.21588, "b": 463.28055, "coord_origin": "TOPLEFT"}, "confidence": 0.9671667814254761, "cells": [{"id": 8, "text": "In summary, here are some considerations for developing real-time AI models, such as credit ", "bbox": {"l": 136.8, "t": 442.06775, "r": 547.21588, "b": 451.28073, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "risk assessment:", "bbox": {"l": 136.80002, "t": 454.06757, "r": 211.19226, "b": 463.28055, "coord_origin": "TOPLEFT"}}]}, "text": "In summary, here are some considerations for developing real-time AI models, such as credit risk assessment:"}, {"label": "list_item", "id": 6, "page_no": 25, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.6735076904297, "t": 469.95037841796875, "r": 522.90546, "b": 480.26035, "coord_origin": "TOPLEFT"}, "confidence": 0.955508291721344, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 471.19675, "r": 141.78001, "b": 479.97153, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "A preference for in-platform run times of the model, such as faster execution results.", "bbox": {"l": 151.20018, "t": 471.04736, "r": 522.90546, "b": 480.26035, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH A preference for in-platform run times of the model, such as faster execution results."}, {"label": "list_item", "id": 7, "page_no": 25, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.52078247070312, "t": 487.4938659667969, "r": 445.53699, "b": 497.67242431640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9564528465270996, "cells": [{"id": 12, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 488.17654, "r": 141.78001, "b": 496.95132, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Less overhead in the end-to-end flows might improve scoring time.", "bbox": {"l": 151.20018, "t": 488.02716, "r": 445.53699, "b": 497.24014, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Less overhead in the end-to-end flows might improve scoring time."}, {"label": "list_item", "id": 8, "page_no": 25, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.63246154785156, "t": 504.0003356933594, "r": 547.32324, "b": 526.3165893554688, "coord_origin": "TOPLEFT"}, "confidence": 0.9790537357330322, "cells": [{"id": 14, "text": "GLYPH", "bbox": {"l": 136.80002, "t": 505.21613, "r": 141.78001, "b": 513.99091, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "If you are using models that are not deployable, CP4D offers a custom Python run time to ", "bbox": {"l": 151.20018, "t": 505.06674, "r": 547.32324, "b": 514.27972, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "build your own stack if they are not available on the platform.", "bbox": {"l": 151.2002, "t": 517.06656, "r": 419.67203, "b": 526.27954, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH If you are using models that are not deployable, CP4D offers a custom Python run time to build your own stack if they are not available on the platform."}, {"label": "list_item", "id": 9, "page_no": 25, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.62271118164062, "t": 533.3601684570312, "r": 541.78046, "b": 555.25917, "coord_origin": "TOPLEFT"}, "confidence": 0.970277726650238, "cells": [{"id": 17, "text": "GLYPH", "bbox": {"l": 136.80003, "t": 534.19577, "r": 141.78003, "b": 542.97052, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "AI inferencing based on ML or DL models can increase the accuracy of better credit risk ", "bbox": {"l": 151.2002, "t": 534.04636, "r": 541.78046, "b": 543.25937, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "assessment.", "bbox": {"l": 151.2002, "t": 546.0461700000001, "r": 207.28795, "b": 555.25917, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH AI inferencing based on ML or DL models can increase the accuracy of better credit risk assessment."}, {"label": "list_item", "id": 10, "page_no": 25, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.50205993652344, "t": 561.84619140625, "r": 531.80676, "b": 596.2385899999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9821013808250427, "cells": [{"id": 20, "text": "GLYPH", "bbox": {"l": 136.80003, "t": 563.17538, "r": 141.78003, "b": 571.9501300000001, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Using IBM z16 and on-chip AI acceleration with the Telum chip that is embedded with ", "bbox": {"l": 151.2002, "t": 563.02599, "r": 531.80676, "b": 572.23898, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "regular Integrated Facility for Linux (IFLs) provides an execution speed for your ", "bbox": {"l": 151.2002, "t": 575.02579, "r": 503.30713000000003, "b": 584.23878, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "transactions that cannot be achieved by other means.", "bbox": {"l": 151.1992, "t": 587.02559, "r": 388.4444, "b": 596.2385899999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Using IBM z16 and on-chip AI acceleration with the Telum chip that is embedded with regular Integrated Facility for Linux (IFLs) provides an execution speed for your transactions that cannot be achieved by other means."}, {"label": "picture", "id": 11, "page_no": 25, "cluster": {"id": 11, "label": "picture", "bbox": {"l": 65.03783416748047, "t": 94.93846130371094, "r": 547.6334838867188, "b": 359.3612365722656, "coord_origin": "TOPLEFT"}, "confidence": 0.984186589717865, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 25, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.90467071533203, "t": 754.3189086914062, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9163190722465515, "cells": [{"id": 0, "text": "24 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "24"}, {"label": "page_footer", "id": 1, "page_no": 25, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.28766632080078, "t": 754.7548828125, "r": 267.0744, "b": 764.1080322265625, "coord_origin": "TOPLEFT"}, "confidence": 0.95806485414505, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}]}}, {"page_no": 26, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "25", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Use case 3: Clearing and settlement", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 338.53796, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Clearing and settlements involve banks or financial institutions sending and receiving wire ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 535.67212, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "transfers by using secure interbank payments networks that can clear or settle numerous ", "bbox": {"l": 136.80099, "t": 115.48852999999997, "r": 532.35547, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "transactions. When an individual or business entity initiates a wire transfer, clearing begins ", "bbox": {"l": 136.80099, "t": 127.48834000000011, "r": 539.56549, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "the fund delivery process. Banks can begin the settlement phase either immediately after ", "bbox": {"l": 136.80099, "t": 139.48816, "r": 532.37543, "b": 148.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "clearing takes place or later, mostly at the end of the business day.", "bbox": {"l": 136.80099, "t": 151.48798, "r": 432.38098, "b": 160.70099000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Industry challenge", "bbox": {"l": 64.800003, "t": 181.37469, "r": 179.53229, "b": 193.36273000000006, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Banks and financial institutions must deal with high-risk transactions that can lead to loss. ", "bbox": {"l": 136.8, "t": 207.52868999999998, "r": 534.60443, "b": 216.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Moreover, these transactions can lead to regulatory violations and extra compliance costs. ", "bbox": {"l": 136.8, "t": 219.5285, "r": 538.43591, "b": 228.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Clearing and settlement solution", "bbox": {"l": 64.800003, "t": 249.35468000000003, "r": 266.07788, "b": 261.34271, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Use AI to predict which trades or transactions have high risk exposures, and propose ", "bbox": {"l": 136.8, "t": 275.50873, "r": 515.18536, "b": 284.72171, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "solutions for a more efficient settlement process. The expedited remediation of questionable ", "bbox": {"l": 136.8, "t": 287.50854, "r": 545.69684, "b": 296.72153, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "transactions can prevent costly consequences, regulatory violations, and negative business ", "bbox": {"l": 136.8, "t": 299.50836, "r": 543.44592, "b": 308.72134, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "impacts.", "bbox": {"l": 136.8, "t": 311.5081799999999, "r": 174.01752, "b": 320.72116, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "In financial institutions, finding which financial transactions are legitimate and which ", "bbox": {"l": 136.8, "t": 333.52774, "r": 507.3628499999999, "b": 342.74072, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "transactions are fraudulent is of paramount importance. In this section, we go through a use ", "bbox": {"l": 136.80002, "t": 345.52756, "r": 544.66211, "b": 354.74053999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "case where we use AI to predict which trades or transactions have high risk exposures, and ", "bbox": {"l": 136.80002, "t": 357.5273700000001, "r": 544.02649, "b": 366.74036000000007, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "propose solutions for a more efficient settlement process. The expedited remediation of ", "bbox": {"l": 136.80003, "t": 369.52719, "r": 525.13257, "b": 378.74017, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "questionable transactions can prevent costly consequences, regulatory violations, and ", "bbox": {"l": 136.80003, "t": 381.52701, "r": 520.08868, "b": 390.7399899999999, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "negative business impacts to financial institutions.", "bbox": {"l": 136.80002, "t": 393.52682000000004, "r": 357.32925, "b": 402.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "The goal is to predict in real time whether the transaction being processed might be a ", "bbox": {"l": 136.80002, "t": 415.48663, "r": 516.24792, "b": 424.69962, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "fraudulent transaction or not. To achieve this goal, we build an ML model that can do this ", "bbox": {"l": 136.80002, "t": 427.48645, "r": 531.83636, "b": 436.69943, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "prediction for the financial institution. Because there would be many transactions being ", "bbox": {"l": 136.80002, "t": 439.48627, "r": 522.39142, "b": 448.69924999999995, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "processed at any point by the financial institution, it is important to perform this prediction of ", "bbox": {"l": 136.80002, "t": 451.4860800000001, "r": 543.34729, "b": 460.69907000000006, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "fraudulent transactions in near-real time in a few milliseconds.", "bbox": {"l": 136.80002, "t": 463.4859, "r": 410.05762, "b": 472.69888, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "One possible solution is to build and train a TensorFlow based DL model that learns from the ", "bbox": {"l": 136.79903, "t": 485.50546, "r": 547.16302, "b": 494.71844, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "historical data and predicts the fraudulent transactions. CP4D on IBM Z and ", "bbox": {"l": 136.79903, "t": 497.50528, "r": 474.12341, "b": 506.71826, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IBM LinuxONE is a suitable product where this task can be achieved and the model deployed, ", "bbox": {"l": 136.79903, "t": 509.5051, "r": 547.23358, "b": 518.71808, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "and coming up with a serving endpoint.", "bbox": {"l": 136.79903, "t": 521.50491, "r": 310.2305, "b": 530.7179, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 535.565673828125, "t": 754.3200073242188, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9160840511322021, "cells": [{"id": 0, "text": "25", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "section_header", "bbox": {"l": 64.79078674316406, "t": 70.07665252685547, "r": 338.53796, "b": 86.30354309082031, "coord_origin": "TOPLEFT"}, "confidence": 0.9623725414276123, "cells": [{"id": 1, "text": "Use case 3: Clearing and settlement", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 338.53796, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.91648864746094, "t": 102.71073150634766, "r": 539.56549, "b": 161.0622100830078, "coord_origin": "TOPLEFT"}, "confidence": 0.9869711399078369, "cells": [{"id": 2, "text": "Clearing and settlements involve banks or financial institutions sending and receiving wire ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 535.67212, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "transfers by using secure interbank payments networks that can clear or settle numerous ", "bbox": {"l": 136.80099, "t": 115.48852999999997, "r": 532.35547, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "transactions. When an individual or business entity initiates a wire transfer, clearing begins ", "bbox": {"l": 136.80099, "t": 127.48834000000011, "r": 539.56549, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "the fund delivery process. Banks can begin the settlement phase either immediately after ", "bbox": {"l": 136.80099, "t": 139.48816, "r": 532.37543, "b": 148.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "clearing takes place or later, mostly at the end of the business day.", "bbox": {"l": 136.80099, "t": 151.48798, "r": 432.38098, "b": 160.70099000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "section_header", "bbox": {"l": 64.3849868774414, "t": 180.6492462158203, "r": 179.53229, "b": 193.6511993408203, "coord_origin": "TOPLEFT"}, "confidence": 0.9618170857429504, "cells": [{"id": 7, "text": "Industry challenge", "bbox": {"l": 64.800003, "t": 181.37469, "r": 179.53229, "b": 193.36273000000006, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 136.17025756835938, "t": 206.79721069335938, "r": 538.43591, "b": 228.78622436523438, "coord_origin": "TOPLEFT"}, "confidence": 0.963640034198761, "cells": [{"id": 8, "text": "Banks and financial institutions must deal with high-risk transactions that can lead to loss. ", "bbox": {"l": 136.8, "t": 207.52868999999998, "r": 534.60443, "b": 216.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Moreover, these transactions can lead to regulatory violations and extra compliance costs. ", "bbox": {"l": 136.8, "t": 219.5285, "r": 538.43591, "b": 228.74152000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "section_header", "bbox": {"l": 64.63189697265625, "t": 248.53985595703125, "r": 266.07788, "b": 261.7796936035156, "coord_origin": "TOPLEFT"}, "confidence": 0.9650317430496216, "cells": [{"id": 10, "text": "Clearing and settlement solution", "bbox": {"l": 64.800003, "t": 249.35468000000003, "r": 266.07788, "b": 261.34271, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 135.968505859375, "t": 274.7626037597656, "r": 545.69684, "b": 321.0018005371094, "coord_origin": "TOPLEFT"}, "confidence": 0.9876250624656677, "cells": [{"id": 11, "text": "Use AI to predict which trades or transactions have high risk exposures, and propose ", "bbox": {"l": 136.8, "t": 275.50873, "r": 515.18536, "b": 284.72171, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "solutions for a more efficient settlement process. The expedited remediation of questionable ", "bbox": {"l": 136.8, "t": 287.50854, "r": 545.69684, "b": 296.72153, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "transactions can prevent costly consequences, regulatory violations, and negative business ", "bbox": {"l": 136.8, "t": 299.50836, "r": 543.44592, "b": 308.72134, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "impacts.", "bbox": {"l": 136.8, "t": 311.5081799999999, "r": 174.01752, "b": 320.72116, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 135.97213745117188, "t": 332.8114318847656, "r": 544.66211, "b": 402.8791809082031, "coord_origin": "TOPLEFT"}, "confidence": 0.9885076284408569, "cells": [{"id": 15, "text": "In financial institutions, finding which financial transactions are legitimate and which ", "bbox": {"l": 136.8, "t": 333.52774, "r": 507.3628499999999, "b": 342.74072, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "transactions are fraudulent is of paramount importance. In this section, we go through a use ", "bbox": {"l": 136.80002, "t": 345.52756, "r": 544.66211, "b": 354.74053999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "case where we use AI to predict which trades or transactions have high risk exposures, and ", "bbox": {"l": 136.80002, "t": 357.5273700000001, "r": 544.02649, "b": 366.74036000000007, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "propose solutions for a more efficient settlement process. The expedited remediation of ", "bbox": {"l": 136.80003, "t": 369.52719, "r": 525.13257, "b": 378.74017, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "questionable transactions can prevent costly consequences, regulatory violations, and ", "bbox": {"l": 136.80003, "t": 381.52701, "r": 520.08868, "b": 390.7399899999999, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "negative business impacts to financial institutions.", "bbox": {"l": 136.80002, "t": 393.52682000000004, "r": 357.32925, "b": 402.73981000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 135.8656463623047, "t": 414.916259765625, "r": 543.34729, "b": 472.69888, "coord_origin": "TOPLEFT"}, "confidence": 0.9878571033477783, "cells": [{"id": 21, "text": "The goal is to predict in real time whether the transaction being processed might be a ", "bbox": {"l": 136.80002, "t": 415.48663, "r": 516.24792, "b": 424.69962, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "fraudulent transaction or not. To achieve this goal, we build an ML model that can do this ", "bbox": {"l": 136.80002, "t": 427.48645, "r": 531.83636, "b": 436.69943, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "prediction for the financial institution. Because there would be many transactions being ", "bbox": {"l": 136.80002, "t": 439.48627, "r": 522.39142, "b": 448.69924999999995, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "processed at any point by the financial institution, it is important to perform this prediction of ", "bbox": {"l": 136.80002, "t": 451.4860800000001, "r": 543.34729, "b": 460.69907000000006, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "fraudulent transactions in near-real time in a few milliseconds.", "bbox": {"l": 136.80002, "t": 463.4859, "r": 410.05762, "b": 472.69888, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 135.92105102539062, "t": 484.82086181640625, "r": 547.23358, "b": 530.9995727539062, "coord_origin": "TOPLEFT"}, "confidence": 0.9847769737243652, "cells": [{"id": 26, "text": "One possible solution is to build and train a TensorFlow based DL model that learns from the ", "bbox": {"l": 136.79903, "t": 485.50546, "r": 547.16302, "b": 494.71844, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "historical data and predicts the fraudulent transactions. CP4D on IBM Z and ", "bbox": {"l": 136.79903, "t": 497.50528, "r": 474.12341, "b": 506.71826, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IBM LinuxONE is a suitable product where this task can be achieved and the model deployed, ", "bbox": {"l": 136.79903, "t": 509.5051, "r": 547.23358, "b": 518.71808, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "and coming up with a serving endpoint.", "bbox": {"l": 136.79903, "t": 521.50491, "r": 310.2305, "b": 530.7179, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 26, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 535.565673828125, "t": 754.3200073242188, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9160840511322021, "cells": [{"id": 0, "text": "25", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "25"}, {"label": "section_header", "id": 1, "page_no": 26, "cluster": {"id": 1, "label": "section_header", "bbox": {"l": 64.79078674316406, "t": 70.07665252685547, "r": 338.53796, "b": 86.30354309082031, "coord_origin": "TOPLEFT"}, "confidence": 0.9623725414276123, "cells": [{"id": 1, "text": "Use case 3: Clearing and settlement", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 338.53796, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, "text": "Use case 3: Clearing and settlement"}, {"label": "text", "id": 2, "page_no": 26, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.91648864746094, "t": 102.71073150634766, "r": 539.56549, "b": 161.0622100830078, "coord_origin": "TOPLEFT"}, "confidence": 0.9869711399078369, "cells": [{"id": 2, "text": "Clearing and settlements involve banks or financial institutions sending and receiving wire ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 535.67212, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "transfers by using secure interbank payments networks that can clear or settle numerous ", "bbox": {"l": 136.80099, "t": 115.48852999999997, "r": 532.35547, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "transactions. When an individual or business entity initiates a wire transfer, clearing begins ", "bbox": {"l": 136.80099, "t": 127.48834000000011, "r": 539.56549, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "the fund delivery process. Banks can begin the settlement phase either immediately after ", "bbox": {"l": 136.80099, "t": 139.48816, "r": 532.37543, "b": 148.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "clearing takes place or later, mostly at the end of the business day.", "bbox": {"l": 136.80099, "t": 151.48798, "r": 432.38098, "b": 160.70099000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Clearing and settlements involve banks or financial institutions sending and receiving wire transfers by using secure interbank payments networks that can clear or settle numerous transactions. When an individual or business entity initiates a wire transfer, clearing begins the fund delivery process. Banks can begin the settlement phase either immediately after clearing takes place or later, mostly at the end of the business day."}, {"label": "section_header", "id": 3, "page_no": 26, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 64.3849868774414, "t": 180.6492462158203, "r": 179.53229, "b": 193.6511993408203, "coord_origin": "TOPLEFT"}, "confidence": 0.9618170857429504, "cells": [{"id": 7, "text": "Industry challenge", "bbox": {"l": 64.800003, "t": 181.37469, "r": 179.53229, "b": 193.36273000000006, "coord_origin": "TOPLEFT"}}]}, "text": "Industry challenge"}, {"label": "text", "id": 4, "page_no": 26, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.17025756835938, "t": 206.79721069335938, "r": 538.43591, "b": 228.78622436523438, "coord_origin": "TOPLEFT"}, "confidence": 0.963640034198761, "cells": [{"id": 8, "text": "Banks and financial institutions must deal with high-risk transactions that can lead to loss. ", "bbox": {"l": 136.8, "t": 207.52868999999998, "r": 534.60443, "b": 216.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Moreover, these transactions can lead to regulatory violations and extra compliance costs. ", "bbox": {"l": 136.8, "t": 219.5285, "r": 538.43591, "b": 228.74152000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Banks and financial institutions must deal with high-risk transactions that can lead to loss. Moreover, these transactions can lead to regulatory violations and extra compliance costs."}, {"label": "section_header", "id": 5, "page_no": 26, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 64.63189697265625, "t": 248.53985595703125, "r": 266.07788, "b": 261.7796936035156, "coord_origin": "TOPLEFT"}, "confidence": 0.9650317430496216, "cells": [{"id": 10, "text": "Clearing and settlement solution", "bbox": {"l": 64.800003, "t": 249.35468000000003, "r": 266.07788, "b": 261.34271, "coord_origin": "TOPLEFT"}}]}, "text": "Clearing and settlement solution"}, {"label": "text", "id": 6, "page_no": 26, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.968505859375, "t": 274.7626037597656, "r": 545.69684, "b": 321.0018005371094, "coord_origin": "TOPLEFT"}, "confidence": 0.9876250624656677, "cells": [{"id": 11, "text": "Use AI to predict which trades or transactions have high risk exposures, and propose ", "bbox": {"l": 136.8, "t": 275.50873, "r": 515.18536, "b": 284.72171, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "solutions for a more efficient settlement process. The expedited remediation of questionable ", "bbox": {"l": 136.8, "t": 287.50854, "r": 545.69684, "b": 296.72153, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "transactions can prevent costly consequences, regulatory violations, and negative business ", "bbox": {"l": 136.8, "t": 299.50836, "r": 543.44592, "b": 308.72134, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "impacts.", "bbox": {"l": 136.8, "t": 311.5081799999999, "r": 174.01752, "b": 320.72116, "coord_origin": "TOPLEFT"}}]}, "text": "Use AI to predict which trades or transactions have high risk exposures, and propose solutions for a more efficient settlement process. The expedited remediation of questionable transactions can prevent costly consequences, regulatory violations, and negative business impacts."}, {"label": "text", "id": 7, "page_no": 26, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.97213745117188, "t": 332.8114318847656, "r": 544.66211, "b": 402.8791809082031, "coord_origin": "TOPLEFT"}, "confidence": 0.9885076284408569, "cells": [{"id": 15, "text": "In financial institutions, finding which financial transactions are legitimate and which ", "bbox": {"l": 136.8, "t": 333.52774, "r": 507.3628499999999, "b": 342.74072, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "transactions are fraudulent is of paramount importance. In this section, we go through a use ", "bbox": {"l": 136.80002, "t": 345.52756, "r": 544.66211, "b": 354.74053999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "case where we use AI to predict which trades or transactions have high risk exposures, and ", "bbox": {"l": 136.80002, "t": 357.5273700000001, "r": 544.02649, "b": 366.74036000000007, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "propose solutions for a more efficient settlement process. The expedited remediation of ", "bbox": {"l": 136.80003, "t": 369.52719, "r": 525.13257, "b": 378.74017, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "questionable transactions can prevent costly consequences, regulatory violations, and ", "bbox": {"l": 136.80003, "t": 381.52701, "r": 520.08868, "b": 390.7399899999999, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "negative business impacts to financial institutions.", "bbox": {"l": 136.80002, "t": 393.52682000000004, "r": 357.32925, "b": 402.73981000000003, "coord_origin": "TOPLEFT"}}]}, "text": "In financial institutions, finding which financial transactions are legitimate and which transactions are fraudulent is of paramount importance. In this section, we go through a use case where we use AI to predict which trades or transactions have high risk exposures, and propose solutions for a more efficient settlement process. The expedited remediation of questionable transactions can prevent costly consequences, regulatory violations, and negative business impacts to financial institutions."}, {"label": "text", "id": 8, "page_no": 26, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.8656463623047, "t": 414.916259765625, "r": 543.34729, "b": 472.69888, "coord_origin": "TOPLEFT"}, "confidence": 0.9878571033477783, "cells": [{"id": 21, "text": "The goal is to predict in real time whether the transaction being processed might be a ", "bbox": {"l": 136.80002, "t": 415.48663, "r": 516.24792, "b": 424.69962, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "fraudulent transaction or not. To achieve this goal, we build an ML model that can do this ", "bbox": {"l": 136.80002, "t": 427.48645, "r": 531.83636, "b": 436.69943, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "prediction for the financial institution. Because there would be many transactions being ", "bbox": {"l": 136.80002, "t": 439.48627, "r": 522.39142, "b": 448.69924999999995, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "processed at any point by the financial institution, it is important to perform this prediction of ", "bbox": {"l": 136.80002, "t": 451.4860800000001, "r": 543.34729, "b": 460.69907000000006, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "fraudulent transactions in near-real time in a few milliseconds.", "bbox": {"l": 136.80002, "t": 463.4859, "r": 410.05762, "b": 472.69888, "coord_origin": "TOPLEFT"}}]}, "text": "The goal is to predict in real time whether the transaction being processed might be a fraudulent transaction or not. To achieve this goal, we build an ML model that can do this prediction for the financial institution. Because there would be many transactions being processed at any point by the financial institution, it is important to perform this prediction of fraudulent transactions in near-real time in a few milliseconds."}, {"label": "text", "id": 9, "page_no": 26, "cluster": {"id": 9, "label": "text", "bbox": {"l": 135.92105102539062, "t": 484.82086181640625, "r": 547.23358, "b": 530.9995727539062, "coord_origin": "TOPLEFT"}, "confidence": 0.9847769737243652, "cells": [{"id": 26, "text": "One possible solution is to build and train a TensorFlow based DL model that learns from the ", "bbox": {"l": 136.79903, "t": 485.50546, "r": 547.16302, "b": 494.71844, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "historical data and predicts the fraudulent transactions. CP4D on IBM Z and ", "bbox": {"l": 136.79903, "t": 497.50528, "r": 474.12341, "b": 506.71826, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IBM LinuxONE is a suitable product where this task can be achieved and the model deployed, ", "bbox": {"l": 136.79903, "t": 509.5051, "r": 547.23358, "b": 518.71808, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "and coming up with a serving endpoint.", "bbox": {"l": 136.79903, "t": 521.50491, "r": 310.2305, "b": 530.7179, "coord_origin": "TOPLEFT"}}]}, "text": "One possible solution is to build and train a TensorFlow based DL model that learns from the historical data and predicts the fraudulent transactions. CP4D on IBM Z and IBM LinuxONE is a suitable product where this task can be achieved and the model deployed, and coming up with a serving endpoint."}], "body": [{"label": "section_header", "id": 1, "page_no": 26, "cluster": {"id": 1, "label": "section_header", "bbox": {"l": 64.79078674316406, "t": 70.07665252685547, "r": 338.53796, "b": 86.30354309082031, "coord_origin": "TOPLEFT"}, "confidence": 0.9623725414276123, "cells": [{"id": 1, "text": "Use case 3: Clearing and settlement", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 338.53796, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, "text": "Use case 3: Clearing and settlement"}, {"label": "text", "id": 2, "page_no": 26, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.91648864746094, "t": 102.71073150634766, "r": 539.56549, "b": 161.0622100830078, "coord_origin": "TOPLEFT"}, "confidence": 0.9869711399078369, "cells": [{"id": 2, "text": "Clearing and settlements involve banks or financial institutions sending and receiving wire ", "bbox": {"l": 136.8, "t": 103.48870999999997, "r": 535.67212, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "transfers by using secure interbank payments networks that can clear or settle numerous ", "bbox": {"l": 136.80099, "t": 115.48852999999997, "r": 532.35547, "b": 124.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "transactions. When an individual or business entity initiates a wire transfer, clearing begins ", "bbox": {"l": 136.80099, "t": 127.48834000000011, "r": 539.56549, "b": 136.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "the fund delivery process. Banks can begin the settlement phase either immediately after ", "bbox": {"l": 136.80099, "t": 139.48816, "r": 532.37543, "b": 148.70117000000005, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "clearing takes place or later, mostly at the end of the business day.", "bbox": {"l": 136.80099, "t": 151.48798, "r": 432.38098, "b": 160.70099000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Clearing and settlements involve banks or financial institutions sending and receiving wire transfers by using secure interbank payments networks that can clear or settle numerous transactions. When an individual or business entity initiates a wire transfer, clearing begins the fund delivery process. Banks can begin the settlement phase either immediately after clearing takes place or later, mostly at the end of the business day."}, {"label": "section_header", "id": 3, "page_no": 26, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 64.3849868774414, "t": 180.6492462158203, "r": 179.53229, "b": 193.6511993408203, "coord_origin": "TOPLEFT"}, "confidence": 0.9618170857429504, "cells": [{"id": 7, "text": "Industry challenge", "bbox": {"l": 64.800003, "t": 181.37469, "r": 179.53229, "b": 193.36273000000006, "coord_origin": "TOPLEFT"}}]}, "text": "Industry challenge"}, {"label": "text", "id": 4, "page_no": 26, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.17025756835938, "t": 206.79721069335938, "r": 538.43591, "b": 228.78622436523438, "coord_origin": "TOPLEFT"}, "confidence": 0.963640034198761, "cells": [{"id": 8, "text": "Banks and financial institutions must deal with high-risk transactions that can lead to loss. ", "bbox": {"l": 136.8, "t": 207.52868999999998, "r": 534.60443, "b": 216.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Moreover, these transactions can lead to regulatory violations and extra compliance costs. ", "bbox": {"l": 136.8, "t": 219.5285, "r": 538.43591, "b": 228.74152000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Banks and financial institutions must deal with high-risk transactions that can lead to loss. Moreover, these transactions can lead to regulatory violations and extra compliance costs."}, {"label": "section_header", "id": 5, "page_no": 26, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 64.63189697265625, "t": 248.53985595703125, "r": 266.07788, "b": 261.7796936035156, "coord_origin": "TOPLEFT"}, "confidence": 0.9650317430496216, "cells": [{"id": 10, "text": "Clearing and settlement solution", "bbox": {"l": 64.800003, "t": 249.35468000000003, "r": 266.07788, "b": 261.34271, "coord_origin": "TOPLEFT"}}]}, "text": "Clearing and settlement solution"}, {"label": "text", "id": 6, "page_no": 26, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.968505859375, "t": 274.7626037597656, "r": 545.69684, "b": 321.0018005371094, "coord_origin": "TOPLEFT"}, "confidence": 0.9876250624656677, "cells": [{"id": 11, "text": "Use AI to predict which trades or transactions have high risk exposures, and propose ", "bbox": {"l": 136.8, "t": 275.50873, "r": 515.18536, "b": 284.72171, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "solutions for a more efficient settlement process. The expedited remediation of questionable ", "bbox": {"l": 136.8, "t": 287.50854, "r": 545.69684, "b": 296.72153, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "transactions can prevent costly consequences, regulatory violations, and negative business ", "bbox": {"l": 136.8, "t": 299.50836, "r": 543.44592, "b": 308.72134, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "impacts.", "bbox": {"l": 136.8, "t": 311.5081799999999, "r": 174.01752, "b": 320.72116, "coord_origin": "TOPLEFT"}}]}, "text": "Use AI to predict which trades or transactions have high risk exposures, and propose solutions for a more efficient settlement process. The expedited remediation of questionable transactions can prevent costly consequences, regulatory violations, and negative business impacts."}, {"label": "text", "id": 7, "page_no": 26, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.97213745117188, "t": 332.8114318847656, "r": 544.66211, "b": 402.8791809082031, "coord_origin": "TOPLEFT"}, "confidence": 0.9885076284408569, "cells": [{"id": 15, "text": "In financial institutions, finding which financial transactions are legitimate and which ", "bbox": {"l": 136.8, "t": 333.52774, "r": 507.3628499999999, "b": 342.74072, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "transactions are fraudulent is of paramount importance. In this section, we go through a use ", "bbox": {"l": 136.80002, "t": 345.52756, "r": 544.66211, "b": 354.74053999999995, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "case where we use AI to predict which trades or transactions have high risk exposures, and ", "bbox": {"l": 136.80002, "t": 357.5273700000001, "r": 544.02649, "b": 366.74036000000007, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "propose solutions for a more efficient settlement process. The expedited remediation of ", "bbox": {"l": 136.80003, "t": 369.52719, "r": 525.13257, "b": 378.74017, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "questionable transactions can prevent costly consequences, regulatory violations, and ", "bbox": {"l": 136.80003, "t": 381.52701, "r": 520.08868, "b": 390.7399899999999, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "negative business impacts to financial institutions.", "bbox": {"l": 136.80002, "t": 393.52682000000004, "r": 357.32925, "b": 402.73981000000003, "coord_origin": "TOPLEFT"}}]}, "text": "In financial institutions, finding which financial transactions are legitimate and which transactions are fraudulent is of paramount importance. In this section, we go through a use case where we use AI to predict which trades or transactions have high risk exposures, and propose solutions for a more efficient settlement process. The expedited remediation of questionable transactions can prevent costly consequences, regulatory violations, and negative business impacts to financial institutions."}, {"label": "text", "id": 8, "page_no": 26, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.8656463623047, "t": 414.916259765625, "r": 543.34729, "b": 472.69888, "coord_origin": "TOPLEFT"}, "confidence": 0.9878571033477783, "cells": [{"id": 21, "text": "The goal is to predict in real time whether the transaction being processed might be a ", "bbox": {"l": 136.80002, "t": 415.48663, "r": 516.24792, "b": 424.69962, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "fraudulent transaction or not. To achieve this goal, we build an ML model that can do this ", "bbox": {"l": 136.80002, "t": 427.48645, "r": 531.83636, "b": 436.69943, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "prediction for the financial institution. Because there would be many transactions being ", "bbox": {"l": 136.80002, "t": 439.48627, "r": 522.39142, "b": 448.69924999999995, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "processed at any point by the financial institution, it is important to perform this prediction of ", "bbox": {"l": 136.80002, "t": 451.4860800000001, "r": 543.34729, "b": 460.69907000000006, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "fraudulent transactions in near-real time in a few milliseconds.", "bbox": {"l": 136.80002, "t": 463.4859, "r": 410.05762, "b": 472.69888, "coord_origin": "TOPLEFT"}}]}, "text": "The goal is to predict in real time whether the transaction being processed might be a fraudulent transaction or not. To achieve this goal, we build an ML model that can do this prediction for the financial institution. Because there would be many transactions being processed at any point by the financial institution, it is important to perform this prediction of fraudulent transactions in near-real time in a few milliseconds."}, {"label": "text", "id": 9, "page_no": 26, "cluster": {"id": 9, "label": "text", "bbox": {"l": 135.92105102539062, "t": 484.82086181640625, "r": 547.23358, "b": 530.9995727539062, "coord_origin": "TOPLEFT"}, "confidence": 0.9847769737243652, "cells": [{"id": 26, "text": "One possible solution is to build and train a TensorFlow based DL model that learns from the ", "bbox": {"l": 136.79903, "t": 485.50546, "r": 547.16302, "b": 494.71844, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "historical data and predicts the fraudulent transactions. CP4D on IBM Z and ", "bbox": {"l": 136.79903, "t": 497.50528, "r": 474.12341, "b": 506.71826, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IBM LinuxONE is a suitable product where this task can be achieved and the model deployed, ", "bbox": {"l": 136.79903, "t": 509.5051, "r": 547.23358, "b": 518.71808, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "and coming up with a serving endpoint.", "bbox": {"l": 136.79903, "t": 521.50491, "r": 310.2305, "b": 530.7179, "coord_origin": "TOPLEFT"}}]}, "text": "One possible solution is to build and train a TensorFlow based DL model that learns from the historical data and predicts the fraudulent transactions. CP4D on IBM Z and IBM LinuxONE is a suitable product where this task can be achieved and the model deployed, and coming up with a serving endpoint."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 26, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 535.565673828125, "t": 754.3200073242188, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9160840511322021, "cells": [{"id": 0, "text": "25", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "25"}]}}, {"page_no": 27, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "26 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Figure 21 provides a high-level diagram of a clearing and settlement use case for financial ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 537.35229, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "transactions that uses CP4D on IBM Z and IBM LinuxONE. ", "bbox": {"l": 136.80002, "t": 83.50847999999996, "r": 400.63745, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 21 Clearing and settlement use case for financial transactions by using Cloud Pak for Data ", "bbox": {"l": 64.800003, "t": 315.55798, "r": 459.9880999999999, "b": 323.88300000000004, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Here are the steps of the high-level process flow:", "bbox": {"l": 136.8, "t": 337.54873999999995, "r": 353.37115, "b": 346.76172, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "1.", "bbox": {"l": 136.8, "t": 354.52853, "r": 145.26041, "b": 363.74152, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Create a connection to a database (for example, an IBM Db2fi database) where the ", "bbox": {"l": 148.08052, "t": 354.52853, "r": 524.74097, "b": 363.74152, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "historical data will be used for ML model building.", "bbox": {"l": 151.20016, "t": 366.52835, "r": 369.07016, "b": 375.74132999999995, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "2.", "bbox": {"l": 136.80099, "t": 383.56793, "r": 145.20665, "b": 392.78091, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Read the data from the database and prepare the data for AI by using the Data Refinery ", "bbox": {"l": 148.00854, "t": 383.56793, "r": 542.98376, "b": 392.78091, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "tool in CP4D.", "bbox": {"l": 151.20116, "t": 395.56775, "r": 210.1524, "b": 404.78073, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "3.", "bbox": {"l": 136.80099, "t": 412.54755, "r": 145.20639, "b": 421.76053, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "A Jupyter Notebook or JupyterLab IDE that is provided by the Watson Studio component ", "bbox": {"l": 148.00818, "t": 412.54755, "r": 545.74249, "b": 421.76053, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "in CP4D helps us build and train the AI model. The trained model can be saved into a ", "bbox": {"l": 151.20116, "t": 424.54736, "r": 531.24298, "b": 433.76035, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "WML repository.", "bbox": {"l": 151.20116, "t": 436.54717999999997, "r": 223.98885, "b": 445.76016, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "4.", "bbox": {"l": 136.80099, "t": 453.52698000000004, "r": 145.2236, "b": 462.73996, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Deploy the saved model into a deployment space for batch deployment.", "bbox": {"l": 148.03114, "t": 453.52698000000004, "r": 468.55477999999994, "b": 462.73996, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "5.", "bbox": {"l": 136.80099, "t": 470.56656, "r": 145.23456, "b": 479.77954, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Create a batch deployment by using any of these interfaces:", "bbox": {"l": 148.04575, "t": 470.56656, "r": 417.28256, "b": 479.77954, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "a.", "bbox": {"l": 151.20116, "t": 487.54636, "r": 159.6295, "b": 496.75934, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Watson Studio user interface from an Analytics deployment space.", "bbox": {"l": 162.43896, "t": 487.54636, "r": 460.12939, "b": 496.75934, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "b.", "bbox": {"l": 151.20116, "t": 504.52615, "r": 159.81799, "b": 513.73914, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "WML Python client.", "bbox": {"l": 162.69028, "t": 504.52615, "r": 251.68962, "b": 513.73914, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "c.", "bbox": {"l": 151.20116, "t": 521.56573, "r": 159.30391, "b": 530.77872, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "WML REST APIs.", "bbox": {"l": 162.19923, "t": 521.56573, "r": 244.95566, "b": 530.77872, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "6.", "bbox": {"l": 136.80099, "t": 538.5455499999999, "r": 145.23759, "b": 547.75854, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "A hardware configuration can be chosen for the deployment.", "bbox": {"l": 148.04979, "t": 538.5455499999999, "r": 418.50659, "b": 547.75854, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "7.", "bbox": {"l": 136.80099, "t": 555.52536, "r": 145.2048, "b": 564.7383600000001, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "A batch deployment processes input data from a file, data connection, or connected data ", "bbox": {"l": 148.00607, "t": 555.52536, "r": 545.68579, "b": 564.7383600000001, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "in a storage bucket, and writes the output to a selected destination.", "bbox": {"l": 151.20117, "t": 567.52516, "r": 447.42055999999997, "b": 576.73816, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "8.", "bbox": {"l": 136.80101, "t": 584.56473, "r": 145.2097, "b": 593.77773, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "One way to run batch deployment to predict or score is to create and run a batch ", "bbox": {"l": 148.01257, "t": 584.56473, "r": 510.0397, "b": 593.77773, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "deployment job.", "bbox": {"l": 151.20117, "t": 596.56453, "r": 221.75086999999996, "b": 605.7775300000001, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "9.", "bbox": {"l": 136.80101, "t": 613.54434, "r": 145.34923, "b": 622.75734, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Provide an input data type:", "bbox": {"l": 148.19862, "t": 613.54434, "r": 270.12857, "b": 622.75734, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "a.", "bbox": {"l": 151.20117, "t": 630.52415, "r": 159.66412, "b": 639.73715, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Inline data for entering a JSON format payload.", "bbox": {"l": 162.48511, "t": 630.52415, "r": 374.55621, "b": 639.73715, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "b.", "bbox": {"l": 151.20117, "t": 647.56372, "r": 160.18944, "b": 656.7767200000001, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Select ", "bbox": {"l": 163.18553, "t": 647.56372, "r": 196.13173, "b": 656.7767200000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Data asset", "bbox": {"l": 196.14069, "t": 647.56372, "r": 246.17972, "b": 656.7767200000001, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": ", click ", "bbox": {"l": 246.12096, "t": 647.56372, "r": 273.91135, "b": 656.7767200000001, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Select data source", "bbox": {"l": 273.9014, "t": 647.56372, "r": 362.20071, "b": 656.7767200000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": ", and then specify your asset.", "bbox": {"l": 362.22171, "t": 647.56372, "r": 492.32922, "b": 656.7767200000001, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "10.The output data type can be a new output file or a connected data asset.", "bbox": {"l": 136.80202, "t": 664.54353, "r": 471.90997, "b": 673.75653, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "11.A Kubernetes admin can change the maximum number of concurrent batch jobs that can ", "bbox": {"l": 136.80202, "t": 681.52334, "r": 546.27057, "b": 690.73634, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "be run.", "bbox": {"l": 151.20218, "t": 693.523148, "r": 182.2774, "b": 702.7361530000001, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "12.Get the deployment endpoint URL. For more information, see Getting the deployment ", "bbox": {"l": 136.80202, "t": 710.562714, "r": 531.22009, "b": 719.775719, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "endpoint URL.", "bbox": {"l": 151.20218, "t": 722.562523, "r": 215.05075000000002, "b": 731.775528, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.89773941040039, "t": 754.3994140625, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9172815680503845, "cells": [{"id": 0, "text": "26 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.21942138671875, "t": 754.7265625, "r": 267.0744, "b": 764.1185302734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9594259858131409, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 136.25498962402344, "t": 70.68953704833984, "r": 537.35229, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.8348162174224854, "cells": [{"id": 2, "text": "Figure 21 provides a high-level diagram of a clearing and settlement use case for financial ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 537.35229, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "transactions that uses CP4D on IBM Z and IBM LinuxONE. ", "bbox": {"l": 136.80002, "t": 83.50847999999996, "r": 400.63745, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "caption", "bbox": {"l": 64.17871856689453, "t": 314.66278076171875, "r": 459.9880999999999, "b": 324.0010986328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9384534955024719, "cells": [{"id": 4, "text": "Figure 21 Clearing and settlement use case for financial transactions by using Cloud Pak for Data ", "bbox": {"l": 64.800003, "t": 315.55798, "r": 459.9880999999999, "b": 323.88300000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 136.43458557128906, "t": 336.796630859375, "r": 353.37115, "b": 346.91217041015625, "coord_origin": "TOPLEFT"}, "confidence": 0.8770962953567505, "cells": [{"id": 5, "text": "Here are the steps of the high-level process flow:", "bbox": {"l": 136.8, "t": 337.54873999999995, "r": 353.37115, "b": 346.76172, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 136.8, "t": 354.0919494628906, "r": 524.74097, "b": 376.04498291015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9748183488845825, "cells": [{"id": 6, "text": "1.", "bbox": {"l": 136.8, "t": 354.52853, "r": 145.26041, "b": 363.74152, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Create a connection to a database (for example, an IBM Db2fi database) where the ", "bbox": {"l": 148.08052, "t": 354.52853, "r": 524.74097, "b": 363.74152, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "historical data will be used for ML model building.", "bbox": {"l": 151.20016, "t": 366.52835, "r": 369.07016, "b": 375.74132999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 136.05679321289062, "t": 382.5753173828125, "r": 542.98376, "b": 404.78073, "coord_origin": "TOPLEFT"}, "confidence": 0.9745410680770874, "cells": [{"id": 9, "text": "2.", "bbox": {"l": 136.80099, "t": 383.56793, "r": 145.20665, "b": 392.78091, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Read the data from the database and prepare the data for AI by using the Data Refinery ", "bbox": {"l": 148.00854, "t": 383.56793, "r": 542.98376, "b": 392.78091, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "tool in CP4D.", "bbox": {"l": 151.20116, "t": 395.56775, "r": 210.1524, "b": 404.78073, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 136.27484130859375, "t": 411.98052978515625, "r": 545.74249, "b": 446.5281066894531, "coord_origin": "TOPLEFT"}, "confidence": 0.9805867671966553, "cells": [{"id": 12, "text": "3.", "bbox": {"l": 136.80099, "t": 412.54755, "r": 145.20639, "b": 421.76053, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "A Jupyter Notebook or JupyterLab IDE that is provided by the Watson Studio component ", "bbox": {"l": 148.00818, "t": 412.54755, "r": 545.74249, "b": 421.76053, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "in CP4D helps us build and train the AI model. The trained model can be saved into a ", "bbox": {"l": 151.20116, "t": 424.54736, "r": 531.24298, "b": 433.76035, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "WML repository.", "bbox": {"l": 151.20116, "t": 436.54717999999997, "r": 223.98885, "b": 445.76016, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 136.03822326660156, "t": 452.6906433105469, "r": 468.55477999999994, "b": 463.2380676269531, "coord_origin": "TOPLEFT"}, "confidence": 0.9558380842208862, "cells": [{"id": 16, "text": "4.", "bbox": {"l": 136.80099, "t": 453.52698000000004, "r": 145.2236, "b": 462.73996, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Deploy the saved model into a deployment space for batch deployment.", "bbox": {"l": 148.03114, "t": 453.52698000000004, "r": 468.55477999999994, "b": 462.73996, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 136.39476013183594, "t": 470.06390380859375, "r": 417.28256, "b": 480.09649658203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9519129395484924, "cells": [{"id": 18, "text": "5.", "bbox": {"l": 136.80099, "t": 470.56656, "r": 145.23456, "b": 479.77954, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Create a batch deployment by using any of these interfaces:", "bbox": {"l": 148.04575, "t": 470.56656, "r": 417.28256, "b": 479.77954, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 150.49728393554688, "t": 486.6347961425781, "r": 460.12939, "b": 496.88531494140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9560188055038452, "cells": [{"id": 20, "text": "a.", "bbox": {"l": 151.20116, "t": 487.54636, "r": 159.6295, "b": 496.75934, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Watson Studio user interface from an Analytics deployment space.", "bbox": {"l": 162.43896, "t": 487.54636, "r": 460.12939, "b": 496.75934, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 150.5271759033203, "t": 503.9242248535156, "r": 251.68962, "b": 514.2030639648438, "coord_origin": "TOPLEFT"}, "confidence": 0.9418551921844482, "cells": [{"id": 22, "text": "b.", "bbox": {"l": 151.20116, "t": 504.52615, "r": 159.81799, "b": 513.73914, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "WML Python client.", "bbox": {"l": 162.69028, "t": 504.52615, "r": 251.68962, "b": 513.73914, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "list_item", "bbox": {"l": 150.59584045410156, "t": 520.1580810546875, "r": 244.95566, "b": 530.77872, "coord_origin": "TOPLEFT"}, "confidence": 0.9270838499069214, "cells": [{"id": 24, "text": "c.", "bbox": {"l": 151.20116, "t": 521.56573, "r": 159.30391, "b": 530.77872, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "WML REST APIs.", "bbox": {"l": 162.19923, "t": 521.56573, "r": 244.95566, "b": 530.77872, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "list_item", "bbox": {"l": 136.3202667236328, "t": 537.8785400390625, "r": 418.50659, "b": 548.1995849609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9545198678970337, "cells": [{"id": 26, "text": "6.", "bbox": {"l": 136.80099, "t": 538.5455499999999, "r": 145.23759, "b": 547.75854, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "A hardware configuration can be chosen for the deployment.", "bbox": {"l": 148.04979, "t": 538.5455499999999, "r": 418.50659, "b": 547.75854, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "list_item", "bbox": {"l": 136.2103271484375, "t": 554.7404174804688, "r": 545.68579, "b": 577.0736083984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9779444336891174, "cells": [{"id": 28, "text": "7.", "bbox": {"l": 136.80099, "t": 555.52536, "r": 145.2048, "b": 564.7383600000001, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "A batch deployment processes input data from a file, data connection, or connected data ", "bbox": {"l": 148.00607, "t": 555.52536, "r": 545.68579, "b": 564.7383600000001, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "in a storage bucket, and writes the output to a selected destination.", "bbox": {"l": 151.20117, "t": 567.52516, "r": 447.42055999999997, "b": 576.73816, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "list_item", "bbox": {"l": 136.31875610351562, "t": 583.98193359375, "r": 510.0397, "b": 606.4796752929688, "coord_origin": "TOPLEFT"}, "confidence": 0.9764688014984131, "cells": [{"id": 31, "text": "8.", "bbox": {"l": 136.80101, "t": 584.56473, "r": 145.2097, "b": 593.77773, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "One way to run batch deployment to predict or score is to create and run a batch ", "bbox": {"l": 148.01257, "t": 584.56473, "r": 510.0397, "b": 593.77773, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "deployment job.", "bbox": {"l": 151.20117, "t": 596.56453, "r": 221.75086999999996, "b": 605.7775300000001, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "list_item", "bbox": {"l": 136.13897705078125, "t": 612.574951171875, "r": 270.12857, "b": 623.031005859375, "coord_origin": "TOPLEFT"}, "confidence": 0.946601152420044, "cells": [{"id": 34, "text": "9.", "bbox": {"l": 136.80101, "t": 613.54434, "r": 145.34923, "b": 622.75734, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Provide an input data type:", "bbox": {"l": 148.19862, "t": 613.54434, "r": 270.12857, "b": 622.75734, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "list_item", "bbox": {"l": 150.43360900878906, "t": 630.0905151367188, "r": 374.55621, "b": 640.5849609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9528450965881348, "cells": [{"id": 36, "text": "a.", "bbox": {"l": 151.20117, "t": 630.52415, "r": 159.66412, "b": 639.73715, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Inline data for entering a JSON format payload.", "bbox": {"l": 162.48511, "t": 630.52415, "r": 374.55621, "b": 639.73715, "coord_origin": "TOPLEFT"}}]}, {"id": 18, "label": "list_item", "bbox": {"l": 150.56649780273438, "t": 646.7203369140625, "r": 492.32922, "b": 656.7977294921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9529765248298645, "cells": [{"id": 38, "text": "b.", "bbox": {"l": 151.20117, "t": 647.56372, "r": 160.18944, "b": 656.7767200000001, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Select ", "bbox": {"l": 163.18553, "t": 647.56372, "r": 196.13173, "b": 656.7767200000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Data asset", "bbox": {"l": 196.14069, "t": 647.56372, "r": 246.17972, "b": 656.7767200000001, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": ", click ", "bbox": {"l": 246.12096, "t": 647.56372, "r": 273.91135, "b": 656.7767200000001, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Select data source", "bbox": {"l": 273.9014, "t": 647.56372, "r": 362.20071, "b": 656.7767200000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": ", and then specify your asset.", "bbox": {"l": 362.22171, "t": 647.56372, "r": 492.32922, "b": 656.7767200000001, "coord_origin": "TOPLEFT"}}]}, {"id": 19, "label": "list_item", "bbox": {"l": 136.80202, "t": 664.13916015625, "r": 471.90997, "b": 674.3135986328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9405826330184937, "cells": [{"id": 44, "text": "10.The output data type can be a new output file or a connected data asset.", "bbox": {"l": 136.80202, "t": 664.54353, "r": 471.90997, "b": 673.75653, "coord_origin": "TOPLEFT"}}]}, {"id": 20, "label": "list_item", "bbox": {"l": 136.80202, "t": 680.8577880859375, "r": 546.27057, "b": 702.7361530000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9651632308959961, "cells": [{"id": 45, "text": "11.A Kubernetes admin can change the maximum number of concurrent batch jobs that can ", "bbox": {"l": 136.80202, "t": 681.52334, "r": 546.27057, "b": 690.73634, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "be run.", "bbox": {"l": 151.20218, "t": 693.523148, "r": 182.2774, "b": 702.7361530000001, "coord_origin": "TOPLEFT"}}]}, {"id": 21, "label": "list_item", "bbox": {"l": 136.71322631835938, "t": 709.8871459960938, "r": 531.22009, "b": 732.1051025390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9538568258285522, "cells": [{"id": 47, "text": "12.Get the deployment endpoint URL. For more information, see Getting the deployment ", "bbox": {"l": 136.80202, "t": 710.562714, "r": 531.22009, "b": 719.775719, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "endpoint URL.", "bbox": {"l": 151.20218, "t": 722.562523, "r": 215.05075000000002, "b": 731.775528, "coord_origin": "TOPLEFT"}}]}, {"id": 22, "label": "picture", "bbox": {"l": 64.01190948486328, "t": 107.36324310302734, "r": 542.310546875, "b": 311.54437255859375, "coord_origin": "TOPLEFT"}, "confidence": 0.9792013168334961, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 27, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.89773941040039, "t": 754.3994140625, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9172815680503845, "cells": [{"id": 0, "text": "26 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "26"}, {"label": "page_footer", "id": 1, "page_no": 27, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.21942138671875, "t": 754.7265625, "r": 267.0744, "b": 764.1185302734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9594259858131409, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"label": "text", "id": 2, "page_no": 27, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.25498962402344, "t": 70.68953704833984, "r": 537.35229, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.8348162174224854, "cells": [{"id": 2, "text": "Figure 21 provides a high-level diagram of a clearing and settlement use case for financial ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 537.35229, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "transactions that uses CP4D on IBM Z and IBM LinuxONE. ", "bbox": {"l": 136.80002, "t": 83.50847999999996, "r": 400.63745, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 21 provides a high-level diagram of a clearing and settlement use case for financial transactions that uses CP4D on IBM Z and IBM LinuxONE."}, {"label": "caption", "id": 3, "page_no": 27, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.17871856689453, "t": 314.66278076171875, "r": 459.9880999999999, "b": 324.0010986328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9384534955024719, "cells": [{"id": 4, "text": "Figure 21 Clearing and settlement use case for financial transactions by using Cloud Pak for Data ", "bbox": {"l": 64.800003, "t": 315.55798, "r": 459.9880999999999, "b": 323.88300000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 21 Clearing and settlement use case for financial transactions by using Cloud Pak for Data"}, {"label": "text", "id": 4, "page_no": 27, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.43458557128906, "t": 336.796630859375, "r": 353.37115, "b": 346.91217041015625, "coord_origin": "TOPLEFT"}, "confidence": 0.8770962953567505, "cells": [{"id": 5, "text": "Here are the steps of the high-level process flow:", "bbox": {"l": 136.8, "t": 337.54873999999995, "r": 353.37115, "b": 346.76172, "coord_origin": "TOPLEFT"}}]}, "text": "Here are the steps of the high-level process flow:"}, {"label": "list_item", "id": 5, "page_no": 27, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 136.8, "t": 354.0919494628906, "r": 524.74097, "b": 376.04498291015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9748183488845825, "cells": [{"id": 6, "text": "1.", "bbox": {"l": 136.8, "t": 354.52853, "r": 145.26041, "b": 363.74152, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Create a connection to a database (for example, an IBM Db2fi database) where the ", "bbox": {"l": 148.08052, "t": 354.52853, "r": 524.74097, "b": 363.74152, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "historical data will be used for ML model building.", "bbox": {"l": 151.20016, "t": 366.52835, "r": 369.07016, "b": 375.74132999999995, "coord_origin": "TOPLEFT"}}]}, "text": "1. Create a connection to a database (for example, an IBM Db2fi database) where the historical data will be used for ML model building."}, {"label": "list_item", "id": 6, "page_no": 27, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.05679321289062, "t": 382.5753173828125, "r": 542.98376, "b": 404.78073, "coord_origin": "TOPLEFT"}, "confidence": 0.9745410680770874, "cells": [{"id": 9, "text": "2.", "bbox": {"l": 136.80099, "t": 383.56793, "r": 145.20665, "b": 392.78091, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Read the data from the database and prepare the data for AI by using the Data Refinery ", "bbox": {"l": 148.00854, "t": 383.56793, "r": 542.98376, "b": 392.78091, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "tool in CP4D.", "bbox": {"l": 151.20116, "t": 395.56775, "r": 210.1524, "b": 404.78073, "coord_origin": "TOPLEFT"}}]}, "text": "2. Read the data from the database and prepare the data for AI by using the Data Refinery tool in CP4D."}, {"label": "list_item", "id": 7, "page_no": 27, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 136.27484130859375, "t": 411.98052978515625, "r": 545.74249, "b": 446.5281066894531, "coord_origin": "TOPLEFT"}, "confidence": 0.9805867671966553, "cells": [{"id": 12, "text": "3.", "bbox": {"l": 136.80099, "t": 412.54755, "r": 145.20639, "b": 421.76053, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "A Jupyter Notebook or JupyterLab IDE that is provided by the Watson Studio component ", "bbox": {"l": 148.00818, "t": 412.54755, "r": 545.74249, "b": 421.76053, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "in CP4D helps us build and train the AI model. The trained model can be saved into a ", "bbox": {"l": 151.20116, "t": 424.54736, "r": 531.24298, "b": 433.76035, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "WML repository.", "bbox": {"l": 151.20116, "t": 436.54717999999997, "r": 223.98885, "b": 445.76016, "coord_origin": "TOPLEFT"}}]}, "text": "3. A Jupyter Notebook or JupyterLab IDE that is provided by the Watson Studio component in CP4D helps us build and train the AI model. The trained model can be saved into a WML repository."}, {"label": "list_item", "id": 8, "page_no": 27, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 136.03822326660156, "t": 452.6906433105469, "r": 468.55477999999994, "b": 463.2380676269531, "coord_origin": "TOPLEFT"}, "confidence": 0.9558380842208862, "cells": [{"id": 16, "text": "4.", "bbox": {"l": 136.80099, "t": 453.52698000000004, "r": 145.2236, "b": 462.73996, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Deploy the saved model into a deployment space for batch deployment.", "bbox": {"l": 148.03114, "t": 453.52698000000004, "r": 468.55477999999994, "b": 462.73996, "coord_origin": "TOPLEFT"}}]}, "text": "4. Deploy the saved model into a deployment space for batch deployment."}, {"label": "list_item", "id": 9, "page_no": 27, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 136.39476013183594, "t": 470.06390380859375, "r": 417.28256, "b": 480.09649658203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9519129395484924, "cells": [{"id": 18, "text": "5.", "bbox": {"l": 136.80099, "t": 470.56656, "r": 145.23456, "b": 479.77954, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Create a batch deployment by using any of these interfaces:", "bbox": {"l": 148.04575, "t": 470.56656, "r": 417.28256, "b": 479.77954, "coord_origin": "TOPLEFT"}}]}, "text": "5. Create a batch deployment by using any of these interfaces:"}, {"label": "list_item", "id": 10, "page_no": 27, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 150.49728393554688, "t": 486.6347961425781, "r": 460.12939, "b": 496.88531494140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9560188055038452, "cells": [{"id": 20, "text": "a.", "bbox": {"l": 151.20116, "t": 487.54636, "r": 159.6295, "b": 496.75934, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Watson Studio user interface from an Analytics deployment space.", "bbox": {"l": 162.43896, "t": 487.54636, "r": 460.12939, "b": 496.75934, "coord_origin": "TOPLEFT"}}]}, "text": "a. Watson Studio user interface from an Analytics deployment space."}, {"label": "list_item", "id": 11, "page_no": 27, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 150.5271759033203, "t": 503.9242248535156, "r": 251.68962, "b": 514.2030639648438, "coord_origin": "TOPLEFT"}, "confidence": 0.9418551921844482, "cells": [{"id": 22, "text": "b.", "bbox": {"l": 151.20116, "t": 504.52615, "r": 159.81799, "b": 513.73914, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "WML Python client.", "bbox": {"l": 162.69028, "t": 504.52615, "r": 251.68962, "b": 513.73914, "coord_origin": "TOPLEFT"}}]}, "text": "b. WML Python client."}, {"label": "list_item", "id": 12, "page_no": 27, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 150.59584045410156, "t": 520.1580810546875, "r": 244.95566, "b": 530.77872, "coord_origin": "TOPLEFT"}, "confidence": 0.9270838499069214, "cells": [{"id": 24, "text": "c.", "bbox": {"l": 151.20116, "t": 521.56573, "r": 159.30391, "b": 530.77872, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "WML REST APIs.", "bbox": {"l": 162.19923, "t": 521.56573, "r": 244.95566, "b": 530.77872, "coord_origin": "TOPLEFT"}}]}, "text": "c. WML REST APIs."}, {"label": "list_item", "id": 13, "page_no": 27, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 136.3202667236328, "t": 537.8785400390625, "r": 418.50659, "b": 548.1995849609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9545198678970337, "cells": [{"id": 26, "text": "6.", "bbox": {"l": 136.80099, "t": 538.5455499999999, "r": 145.23759, "b": 547.75854, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "A hardware configuration can be chosen for the deployment.", "bbox": {"l": 148.04979, "t": 538.5455499999999, "r": 418.50659, "b": 547.75854, "coord_origin": "TOPLEFT"}}]}, "text": "6. A hardware configuration can be chosen for the deployment."}, {"label": "list_item", "id": 14, "page_no": 27, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 136.2103271484375, "t": 554.7404174804688, "r": 545.68579, "b": 577.0736083984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9779444336891174, "cells": [{"id": 28, "text": "7.", "bbox": {"l": 136.80099, "t": 555.52536, "r": 145.2048, "b": 564.7383600000001, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "A batch deployment processes input data from a file, data connection, or connected data ", "bbox": {"l": 148.00607, "t": 555.52536, "r": 545.68579, "b": 564.7383600000001, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "in a storage bucket, and writes the output to a selected destination.", "bbox": {"l": 151.20117, "t": 567.52516, "r": 447.42055999999997, "b": 576.73816, "coord_origin": "TOPLEFT"}}]}, "text": "7. A batch deployment processes input data from a file, data connection, or connected data in a storage bucket, and writes the output to a selected destination."}, {"label": "list_item", "id": 15, "page_no": 27, "cluster": {"id": 15, "label": "list_item", "bbox": {"l": 136.31875610351562, "t": 583.98193359375, "r": 510.0397, "b": 606.4796752929688, "coord_origin": "TOPLEFT"}, "confidence": 0.9764688014984131, "cells": [{"id": 31, "text": "8.", "bbox": {"l": 136.80101, "t": 584.56473, "r": 145.2097, "b": 593.77773, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "One way to run batch deployment to predict or score is to create and run a batch ", "bbox": {"l": 148.01257, "t": 584.56473, "r": 510.0397, "b": 593.77773, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "deployment job.", "bbox": {"l": 151.20117, "t": 596.56453, "r": 221.75086999999996, "b": 605.7775300000001, "coord_origin": "TOPLEFT"}}]}, "text": "8. One way to run batch deployment to predict or score is to create and run a batch deployment job."}, {"label": "list_item", "id": 16, "page_no": 27, "cluster": {"id": 16, "label": "list_item", "bbox": {"l": 136.13897705078125, "t": 612.574951171875, "r": 270.12857, "b": 623.031005859375, "coord_origin": "TOPLEFT"}, "confidence": 0.946601152420044, "cells": [{"id": 34, "text": "9.", "bbox": {"l": 136.80101, "t": 613.54434, "r": 145.34923, "b": 622.75734, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Provide an input data type:", "bbox": {"l": 148.19862, "t": 613.54434, "r": 270.12857, "b": 622.75734, "coord_origin": "TOPLEFT"}}]}, "text": "9. Provide an input data type:"}, {"label": "list_item", "id": 17, "page_no": 27, "cluster": {"id": 17, "label": "list_item", "bbox": {"l": 150.43360900878906, "t": 630.0905151367188, "r": 374.55621, "b": 640.5849609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9528450965881348, "cells": [{"id": 36, "text": "a.", "bbox": {"l": 151.20117, "t": 630.52415, "r": 159.66412, "b": 639.73715, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Inline data for entering a JSON format payload.", "bbox": {"l": 162.48511, "t": 630.52415, "r": 374.55621, "b": 639.73715, "coord_origin": "TOPLEFT"}}]}, "text": "a. Inline data for entering a JSON format payload."}, {"label": "list_item", "id": 18, "page_no": 27, "cluster": {"id": 18, "label": "list_item", "bbox": {"l": 150.56649780273438, "t": 646.7203369140625, "r": 492.32922, "b": 656.7977294921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9529765248298645, "cells": [{"id": 38, "text": "b.", "bbox": {"l": 151.20117, "t": 647.56372, "r": 160.18944, "b": 656.7767200000001, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Select ", "bbox": {"l": 163.18553, "t": 647.56372, "r": 196.13173, "b": 656.7767200000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Data asset", "bbox": {"l": 196.14069, "t": 647.56372, "r": 246.17972, "b": 656.7767200000001, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": ", click ", "bbox": {"l": 246.12096, "t": 647.56372, "r": 273.91135, "b": 656.7767200000001, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Select data source", "bbox": {"l": 273.9014, "t": 647.56372, "r": 362.20071, "b": 656.7767200000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": ", and then specify your asset.", "bbox": {"l": 362.22171, "t": 647.56372, "r": 492.32922, "b": 656.7767200000001, "coord_origin": "TOPLEFT"}}]}, "text": "b. Select Data asset , click Select data source , and then specify your asset."}, {"label": "list_item", "id": 19, "page_no": 27, "cluster": {"id": 19, "label": "list_item", "bbox": {"l": 136.80202, "t": 664.13916015625, "r": 471.90997, "b": 674.3135986328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9405826330184937, "cells": [{"id": 44, "text": "10.The output data type can be a new output file or a connected data asset.", "bbox": {"l": 136.80202, "t": 664.54353, "r": 471.90997, "b": 673.75653, "coord_origin": "TOPLEFT"}}]}, "text": "10.The output data type can be a new output file or a connected data asset."}, {"label": "list_item", "id": 20, "page_no": 27, "cluster": {"id": 20, "label": "list_item", "bbox": {"l": 136.80202, "t": 680.8577880859375, "r": 546.27057, "b": 702.7361530000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9651632308959961, "cells": [{"id": 45, "text": "11.A Kubernetes admin can change the maximum number of concurrent batch jobs that can ", "bbox": {"l": 136.80202, "t": 681.52334, "r": 546.27057, "b": 690.73634, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "be run.", "bbox": {"l": 151.20218, "t": 693.523148, "r": 182.2774, "b": 702.7361530000001, "coord_origin": "TOPLEFT"}}]}, "text": "11.A Kubernetes admin can change the maximum number of concurrent batch jobs that can be run."}, {"label": "list_item", "id": 21, "page_no": 27, "cluster": {"id": 21, "label": "list_item", "bbox": {"l": 136.71322631835938, "t": 709.8871459960938, "r": 531.22009, "b": 732.1051025390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9538568258285522, "cells": [{"id": 47, "text": "12.Get the deployment endpoint URL. For more information, see Getting the deployment ", "bbox": {"l": 136.80202, "t": 710.562714, "r": 531.22009, "b": 719.775719, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "endpoint URL.", "bbox": {"l": 151.20218, "t": 722.562523, "r": 215.05075000000002, "b": 731.775528, "coord_origin": "TOPLEFT"}}]}, "text": "12.Get the deployment endpoint URL. For more information, see Getting the deployment endpoint URL."}, {"label": "picture", "id": 22, "page_no": 27, "cluster": {"id": 22, "label": "picture", "bbox": {"l": 64.01190948486328, "t": 107.36324310302734, "r": 542.310546875, "b": 311.54437255859375, "coord_origin": "TOPLEFT"}, "confidence": 0.9792013168334961, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "text", "id": 2, "page_no": 27, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.25498962402344, "t": 70.68953704833984, "r": 537.35229, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.8348162174224854, "cells": [{"id": 2, "text": "Figure 21 provides a high-level diagram of a clearing and settlement use case for financial ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 537.35229, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "transactions that uses CP4D on IBM Z and IBM LinuxONE. ", "bbox": {"l": 136.80002, "t": 83.50847999999996, "r": 400.63745, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 21 provides a high-level diagram of a clearing and settlement use case for financial transactions that uses CP4D on IBM Z and IBM LinuxONE."}, {"label": "caption", "id": 3, "page_no": 27, "cluster": {"id": 3, "label": "caption", "bbox": {"l": 64.17871856689453, "t": 314.66278076171875, "r": 459.9880999999999, "b": 324.0010986328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9384534955024719, "cells": [{"id": 4, "text": "Figure 21 Clearing and settlement use case for financial transactions by using Cloud Pak for Data ", "bbox": {"l": 64.800003, "t": 315.55798, "r": 459.9880999999999, "b": 323.88300000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 21 Clearing and settlement use case for financial transactions by using Cloud Pak for Data"}, {"label": "text", "id": 4, "page_no": 27, "cluster": {"id": 4, "label": "text", "bbox": {"l": 136.43458557128906, "t": 336.796630859375, "r": 353.37115, "b": 346.91217041015625, "coord_origin": "TOPLEFT"}, "confidence": 0.8770962953567505, "cells": [{"id": 5, "text": "Here are the steps of the high-level process flow:", "bbox": {"l": 136.8, "t": 337.54873999999995, "r": 353.37115, "b": 346.76172, "coord_origin": "TOPLEFT"}}]}, "text": "Here are the steps of the high-level process flow:"}, {"label": "list_item", "id": 5, "page_no": 27, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 136.8, "t": 354.0919494628906, "r": 524.74097, "b": 376.04498291015625, "coord_origin": "TOPLEFT"}, "confidence": 0.9748183488845825, "cells": [{"id": 6, "text": "1.", "bbox": {"l": 136.8, "t": 354.52853, "r": 145.26041, "b": 363.74152, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Create a connection to a database (for example, an IBM Db2fi database) where the ", "bbox": {"l": 148.08052, "t": 354.52853, "r": 524.74097, "b": 363.74152, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "historical data will be used for ML model building.", "bbox": {"l": 151.20016, "t": 366.52835, "r": 369.07016, "b": 375.74132999999995, "coord_origin": "TOPLEFT"}}]}, "text": "1. Create a connection to a database (for example, an IBM Db2fi database) where the historical data will be used for ML model building."}, {"label": "list_item", "id": 6, "page_no": 27, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 136.05679321289062, "t": 382.5753173828125, "r": 542.98376, "b": 404.78073, "coord_origin": "TOPLEFT"}, "confidence": 0.9745410680770874, "cells": [{"id": 9, "text": "2.", "bbox": {"l": 136.80099, "t": 383.56793, "r": 145.20665, "b": 392.78091, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Read the data from the database and prepare the data for AI by using the Data Refinery ", "bbox": {"l": 148.00854, "t": 383.56793, "r": 542.98376, "b": 392.78091, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "tool in CP4D.", "bbox": {"l": 151.20116, "t": 395.56775, "r": 210.1524, "b": 404.78073, "coord_origin": "TOPLEFT"}}]}, "text": "2. Read the data from the database and prepare the data for AI by using the Data Refinery tool in CP4D."}, {"label": "list_item", "id": 7, "page_no": 27, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 136.27484130859375, "t": 411.98052978515625, "r": 545.74249, "b": 446.5281066894531, "coord_origin": "TOPLEFT"}, "confidence": 0.9805867671966553, "cells": [{"id": 12, "text": "3.", "bbox": {"l": 136.80099, "t": 412.54755, "r": 145.20639, "b": 421.76053, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "A Jupyter Notebook or JupyterLab IDE that is provided by the Watson Studio component ", "bbox": {"l": 148.00818, "t": 412.54755, "r": 545.74249, "b": 421.76053, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "in CP4D helps us build and train the AI model. The trained model can be saved into a ", "bbox": {"l": 151.20116, "t": 424.54736, "r": 531.24298, "b": 433.76035, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "WML repository.", "bbox": {"l": 151.20116, "t": 436.54717999999997, "r": 223.98885, "b": 445.76016, "coord_origin": "TOPLEFT"}}]}, "text": "3. A Jupyter Notebook or JupyterLab IDE that is provided by the Watson Studio component in CP4D helps us build and train the AI model. The trained model can be saved into a WML repository."}, {"label": "list_item", "id": 8, "page_no": 27, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 136.03822326660156, "t": 452.6906433105469, "r": 468.55477999999994, "b": 463.2380676269531, "coord_origin": "TOPLEFT"}, "confidence": 0.9558380842208862, "cells": [{"id": 16, "text": "4.", "bbox": {"l": 136.80099, "t": 453.52698000000004, "r": 145.2236, "b": 462.73996, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Deploy the saved model into a deployment space for batch deployment.", "bbox": {"l": 148.03114, "t": 453.52698000000004, "r": 468.55477999999994, "b": 462.73996, "coord_origin": "TOPLEFT"}}]}, "text": "4. Deploy the saved model into a deployment space for batch deployment."}, {"label": "list_item", "id": 9, "page_no": 27, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 136.39476013183594, "t": 470.06390380859375, "r": 417.28256, "b": 480.09649658203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9519129395484924, "cells": [{"id": 18, "text": "5.", "bbox": {"l": 136.80099, "t": 470.56656, "r": 145.23456, "b": 479.77954, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Create a batch deployment by using any of these interfaces:", "bbox": {"l": 148.04575, "t": 470.56656, "r": 417.28256, "b": 479.77954, "coord_origin": "TOPLEFT"}}]}, "text": "5. Create a batch deployment by using any of these interfaces:"}, {"label": "list_item", "id": 10, "page_no": 27, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 150.49728393554688, "t": 486.6347961425781, "r": 460.12939, "b": 496.88531494140625, "coord_origin": "TOPLEFT"}, "confidence": 0.9560188055038452, "cells": [{"id": 20, "text": "a.", "bbox": {"l": 151.20116, "t": 487.54636, "r": 159.6295, "b": 496.75934, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Watson Studio user interface from an Analytics deployment space.", "bbox": {"l": 162.43896, "t": 487.54636, "r": 460.12939, "b": 496.75934, "coord_origin": "TOPLEFT"}}]}, "text": "a. Watson Studio user interface from an Analytics deployment space."}, {"label": "list_item", "id": 11, "page_no": 27, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 150.5271759033203, "t": 503.9242248535156, "r": 251.68962, "b": 514.2030639648438, "coord_origin": "TOPLEFT"}, "confidence": 0.9418551921844482, "cells": [{"id": 22, "text": "b.", "bbox": {"l": 151.20116, "t": 504.52615, "r": 159.81799, "b": 513.73914, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "WML Python client.", "bbox": {"l": 162.69028, "t": 504.52615, "r": 251.68962, "b": 513.73914, "coord_origin": "TOPLEFT"}}]}, "text": "b. WML Python client."}, {"label": "list_item", "id": 12, "page_no": 27, "cluster": {"id": 12, "label": "list_item", "bbox": {"l": 150.59584045410156, "t": 520.1580810546875, "r": 244.95566, "b": 530.77872, "coord_origin": "TOPLEFT"}, "confidence": 0.9270838499069214, "cells": [{"id": 24, "text": "c.", "bbox": {"l": 151.20116, "t": 521.56573, "r": 159.30391, "b": 530.77872, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "WML REST APIs.", "bbox": {"l": 162.19923, "t": 521.56573, "r": 244.95566, "b": 530.77872, "coord_origin": "TOPLEFT"}}]}, "text": "c. WML REST APIs."}, {"label": "list_item", "id": 13, "page_no": 27, "cluster": {"id": 13, "label": "list_item", "bbox": {"l": 136.3202667236328, "t": 537.8785400390625, "r": 418.50659, "b": 548.1995849609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9545198678970337, "cells": [{"id": 26, "text": "6.", "bbox": {"l": 136.80099, "t": 538.5455499999999, "r": 145.23759, "b": 547.75854, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "A hardware configuration can be chosen for the deployment.", "bbox": {"l": 148.04979, "t": 538.5455499999999, "r": 418.50659, "b": 547.75854, "coord_origin": "TOPLEFT"}}]}, "text": "6. A hardware configuration can be chosen for the deployment."}, {"label": "list_item", "id": 14, "page_no": 27, "cluster": {"id": 14, "label": "list_item", "bbox": {"l": 136.2103271484375, "t": 554.7404174804688, "r": 545.68579, "b": 577.0736083984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9779444336891174, "cells": [{"id": 28, "text": "7.", "bbox": {"l": 136.80099, "t": 555.52536, "r": 145.2048, "b": 564.7383600000001, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "A batch deployment processes input data from a file, data connection, or connected data ", "bbox": {"l": 148.00607, "t": 555.52536, "r": 545.68579, "b": 564.7383600000001, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "in a storage bucket, and writes the output to a selected destination.", "bbox": {"l": 151.20117, "t": 567.52516, "r": 447.42055999999997, "b": 576.73816, "coord_origin": "TOPLEFT"}}]}, "text": "7. A batch deployment processes input data from a file, data connection, or connected data in a storage bucket, and writes the output to a selected destination."}, {"label": "list_item", "id": 15, "page_no": 27, "cluster": {"id": 15, "label": "list_item", "bbox": {"l": 136.31875610351562, "t": 583.98193359375, "r": 510.0397, "b": 606.4796752929688, "coord_origin": "TOPLEFT"}, "confidence": 0.9764688014984131, "cells": [{"id": 31, "text": "8.", "bbox": {"l": 136.80101, "t": 584.56473, "r": 145.2097, "b": 593.77773, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "One way to run batch deployment to predict or score is to create and run a batch ", "bbox": {"l": 148.01257, "t": 584.56473, "r": 510.0397, "b": 593.77773, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "deployment job.", "bbox": {"l": 151.20117, "t": 596.56453, "r": 221.75086999999996, "b": 605.7775300000001, "coord_origin": "TOPLEFT"}}]}, "text": "8. One way to run batch deployment to predict or score is to create and run a batch deployment job."}, {"label": "list_item", "id": 16, "page_no": 27, "cluster": {"id": 16, "label": "list_item", "bbox": {"l": 136.13897705078125, "t": 612.574951171875, "r": 270.12857, "b": 623.031005859375, "coord_origin": "TOPLEFT"}, "confidence": 0.946601152420044, "cells": [{"id": 34, "text": "9.", "bbox": {"l": 136.80101, "t": 613.54434, "r": 145.34923, "b": 622.75734, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Provide an input data type:", "bbox": {"l": 148.19862, "t": 613.54434, "r": 270.12857, "b": 622.75734, "coord_origin": "TOPLEFT"}}]}, "text": "9. Provide an input data type:"}, {"label": "list_item", "id": 17, "page_no": 27, "cluster": {"id": 17, "label": "list_item", "bbox": {"l": 150.43360900878906, "t": 630.0905151367188, "r": 374.55621, "b": 640.5849609375, "coord_origin": "TOPLEFT"}, "confidence": 0.9528450965881348, "cells": [{"id": 36, "text": "a.", "bbox": {"l": 151.20117, "t": 630.52415, "r": 159.66412, "b": 639.73715, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Inline data for entering a JSON format payload.", "bbox": {"l": 162.48511, "t": 630.52415, "r": 374.55621, "b": 639.73715, "coord_origin": "TOPLEFT"}}]}, "text": "a. Inline data for entering a JSON format payload."}, {"label": "list_item", "id": 18, "page_no": 27, "cluster": {"id": 18, "label": "list_item", "bbox": {"l": 150.56649780273438, "t": 646.7203369140625, "r": 492.32922, "b": 656.7977294921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9529765248298645, "cells": [{"id": 38, "text": "b.", "bbox": {"l": 151.20117, "t": 647.56372, "r": 160.18944, "b": 656.7767200000001, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "Select ", "bbox": {"l": 163.18553, "t": 647.56372, "r": 196.13173, "b": 656.7767200000001, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Data asset", "bbox": {"l": 196.14069, "t": 647.56372, "r": 246.17972, "b": 656.7767200000001, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": ", click ", "bbox": {"l": 246.12096, "t": 647.56372, "r": 273.91135, "b": 656.7767200000001, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "Select data source", "bbox": {"l": 273.9014, "t": 647.56372, "r": 362.20071, "b": 656.7767200000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": ", and then specify your asset.", "bbox": {"l": 362.22171, "t": 647.56372, "r": 492.32922, "b": 656.7767200000001, "coord_origin": "TOPLEFT"}}]}, "text": "b. Select Data asset , click Select data source , and then specify your asset."}, {"label": "list_item", "id": 19, "page_no": 27, "cluster": {"id": 19, "label": "list_item", "bbox": {"l": 136.80202, "t": 664.13916015625, "r": 471.90997, "b": 674.3135986328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9405826330184937, "cells": [{"id": 44, "text": "10.The output data type can be a new output file or a connected data asset.", "bbox": {"l": 136.80202, "t": 664.54353, "r": 471.90997, "b": 673.75653, "coord_origin": "TOPLEFT"}}]}, "text": "10.The output data type can be a new output file or a connected data asset."}, {"label": "list_item", "id": 20, "page_no": 27, "cluster": {"id": 20, "label": "list_item", "bbox": {"l": 136.80202, "t": 680.8577880859375, "r": 546.27057, "b": 702.7361530000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9651632308959961, "cells": [{"id": 45, "text": "11.A Kubernetes admin can change the maximum number of concurrent batch jobs that can ", "bbox": {"l": 136.80202, "t": 681.52334, "r": 546.27057, "b": 690.73634, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "be run.", "bbox": {"l": 151.20218, "t": 693.523148, "r": 182.2774, "b": 702.7361530000001, "coord_origin": "TOPLEFT"}}]}, "text": "11.A Kubernetes admin can change the maximum number of concurrent batch jobs that can be run."}, {"label": "list_item", "id": 21, "page_no": 27, "cluster": {"id": 21, "label": "list_item", "bbox": {"l": 136.71322631835938, "t": 709.8871459960938, "r": 531.22009, "b": 732.1051025390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9538568258285522, "cells": [{"id": 47, "text": "12.Get the deployment endpoint URL. For more information, see Getting the deployment ", "bbox": {"l": 136.80202, "t": 710.562714, "r": 531.22009, "b": 719.775719, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "endpoint URL.", "bbox": {"l": 151.20218, "t": 722.562523, "r": 215.05075000000002, "b": 731.775528, "coord_origin": "TOPLEFT"}}]}, "text": "12.Get the deployment endpoint URL. For more information, see Getting the deployment endpoint URL."}, {"label": "picture", "id": 22, "page_no": 27, "cluster": {"id": 22, "label": "picture", "bbox": {"l": 64.01190948486328, "t": 107.36324310302734, "r": 542.310546875, "b": 311.54437255859375, "coord_origin": "TOPLEFT"}, "confidence": 0.9792013168334961, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 27, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.89773941040039, "t": 754.3994140625, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9172815680503845, "cells": [{"id": 0, "text": "26 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "26"}, {"label": "page_footer", "id": 1, "page_no": 27, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.21942138671875, "t": 754.7265625, "r": 267.0744, "b": 764.1185302734375, "coord_origin": "TOPLEFT"}, "confidence": 0.9594259858131409, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}]}}, {"page_no": 28, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "27", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Summary", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 123.98573, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "With this use case, we attempted to demonstrate how to predict, in real time, whether the ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 532.96588, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "transaction that is being processed might be a fraudulent transaction or not. By using the ", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 531.263, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "method, you have the following advantages:", "bbox": {"l": 136.8, "t": 121.48834000000011, "r": 331.94427, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 138.67731000000003, "r": 141.78, "b": 147.45209, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "No Impact to SLAs and the batch process window.", "bbox": {"l": 151.20016, "t": 138.52788999999996, "r": 374.51035, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "GLYPH", "bbox": {"l": 136.8, "t": 155.6571, "r": 141.78, "b": 164.43187999999998, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Proactively stop losses, and lower operational, regulatory, and compliance costs.", "bbox": {"l": 151.20016, "t": 155.50769000000003, "r": 508.50623, "b": 164.72069999999997, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 172.63689999999997, "r": 141.78, "b": 181.41168000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "The solution is using a DL framework like TensorFlow for high-performing, low latency ", "bbox": {"l": 151.20016, "t": 172.48748999999998, "r": 533.53381, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "scoring.", "bbox": {"l": 151.20016, "t": 184.4873, "r": 186.20558, "b": 193.70032000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Use case 4: Remaining Useful Life of an aircraft engine", "bbox": {"l": 64.800003, "t": 222.18073000000004, "r": 482.53705, "b": 236.94372999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "In this use case, we describe how an airline can deploy an AI model for inferencing by using ", "bbox": {"l": 136.8, "t": 254.50867000000005, "r": 545.72473, "b": 263.72168, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "IBMfi zSystems. ", "bbox": {"l": 136.8, "t": 266.50847999999996, "r": 213.51291, "b": 275.7215, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Remaining Useful Life (RUL) is the remaining time or cycles that an aircraft engine is likely to ", "bbox": {"l": 136.8, "t": 288.52808, "r": 547.26855, "b": 297.74106, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "operate without any failure. In this case, it is the equivalent of the number of flights remaining ", "bbox": {"l": 136.79999, "t": 300.52789, "r": 547.27057, "b": 309.74088, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "for the engine after the last flight. By estimating RUL, the operator can decide on the next ", "bbox": {"l": 136.79999, "t": 312.52771, "r": 533.55945, "b": 321.74069, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "maintenance schedule and avoid unplanned downtime.", "bbox": {"l": 136.79999, "t": 324.52753000000007, "r": 380.77405, "b": 333.74051, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "Figure 22 provides an overview of the inferencing architecture for the RUL of an aircraft ", "bbox": {"l": 136.79999, "t": 346.48734, "r": 525.16229, "b": 355.70032, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "engine when using IBM Z. ", "bbox": {"l": 136.79999, "t": 358.48714999999993, "r": 255.13271, "b": 367.70013, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Figure 22 Inferencing architecture on IBM Z", "bbox": {"l": 64.800003, "t": 622.2179, "r": 243.1971, "b": 630.54291, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Because we are looking into data-driven model development, the data set of our target is the ", "bbox": {"l": 136.8, "t": 644.14873, "r": 547.25574, "b": 653.36172, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "run-to-failure data of the engine. We are looking into a supervised learning problem, and we ", "bbox": {"l": 136.8, "t": 656.1485299999999, "r": 544.6261, "b": 665.36153, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "use regression techniques to learn from the data. DL techniques such as Long Short-Term ", "bbox": {"l": 136.8, "t": 668.14833, "r": 539.12225, "b": 677.36134, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Memory (LSTM) or Gated Recurrent Units (GRU) are our choice because we are looking into ", "bbox": {"l": 136.8, "t": 680.14814, "r": 547.20392, "b": 689.36115, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "a time series data set. TensorFlow or PyTorch frameworks are leveraged to create models. AI ", "bbox": {"l": 136.8, "t": 692.1479489999999, "r": 547.14288, "b": 701.360954, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "governance monitors the data and model drift to maintain the model quality throughout the ", "bbox": {"l": 136.8, "t": 704.147758, "r": 537.91998, "b": 713.360764, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "model\u2019s life. ", "bbox": {"l": 136.8, "t": 716.147568, "r": 192.27719, "b": 725.360573, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 535.5003051757812, "t": 754.198486328125, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9135285019874573, "cells": [{"id": 0, "text": "27", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "section_header", "bbox": {"l": 64.4560546875, "t": 70.49922180175781, "r": 124.18352508544922, "b": 83.58580017089844, "coord_origin": "TOPLEFT"}, "confidence": 0.9539816975593567, "cells": [{"id": 1, "text": "Summary", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 123.98573, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.6417999267578, "t": 96.69087219238281, "r": 532.96588, "b": 131.15280151367188, "coord_origin": "TOPLEFT"}, "confidence": 0.9826104044914246, "cells": [{"id": 2, "text": "With this use case, we attempted to demonstrate how to predict, in real time, whether the ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 532.96588, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "transaction that is being processed might be a fraudulent transaction or not. By using the ", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 531.263, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "method, you have the following advantages:", "bbox": {"l": 136.8, "t": 121.48834000000011, "r": 331.94427, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "list_item", "bbox": {"l": 135.6079559326172, "t": 137.87742614746094, "r": 374.51035, "b": 148.40980529785156, "coord_origin": "TOPLEFT"}, "confidence": 0.9520530700683594, "cells": [{"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 138.67731000000003, "r": 141.78, "b": 147.45209, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "No Impact to SLAs and the batch process window.", "bbox": {"l": 151.20016, "t": 138.52788999999996, "r": 374.51035, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 135.4309844970703, "t": 154.66566467285156, "r": 508.50623, "b": 165.0898895263672, "coord_origin": "TOPLEFT"}, "confidence": 0.9581583142280579, "cells": [{"id": 7, "text": "GLYPH", "bbox": {"l": 136.8, "t": 155.6571, "r": 141.78, "b": 164.43187999999998, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Proactively stop losses, and lower operational, regulatory, and compliance costs.", "bbox": {"l": 151.20016, "t": 155.50769000000003, "r": 508.50623, "b": 164.72069999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 135.6011199951172, "t": 171.30601501464844, "r": 533.53381, "b": 193.70032000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9762634634971619, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 172.63689999999997, "r": 141.78, "b": 181.41168000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "The solution is using a DL framework like TensorFlow for high-performing, low latency ", "bbox": {"l": 151.20016, "t": 172.48748999999998, "r": 533.53381, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "scoring.", "bbox": {"l": 151.20016, "t": 184.4873, "r": 186.20558, "b": 193.70032000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "section_header", "bbox": {"l": 64.69216918945312, "t": 220.6259307861328, "r": 482.53705, "b": 237.16929626464844, "coord_origin": "TOPLEFT"}, "confidence": 0.9682862162590027, "cells": [{"id": 12, "text": "Use case 4: Remaining Useful Life of an aircraft engine", "bbox": {"l": 64.800003, "t": 222.18073000000004, "r": 482.53705, "b": 236.94372999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 136.27346801757812, "t": 253.316650390625, "r": 545.72473, "b": 275.7215, "coord_origin": "TOPLEFT"}, "confidence": 0.9791228771209717, "cells": [{"id": 13, "text": "In this use case, we describe how an airline can deploy an AI model for inferencing by using ", "bbox": {"l": 136.8, "t": 254.50867000000005, "r": 545.72473, "b": 263.72168, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "IBMfi zSystems. ", "bbox": {"l": 136.8, "t": 266.50847999999996, "r": 213.51291, "b": 275.7215, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 136.0217742919922, "t": 287.9417419433594, "r": 547.27057, "b": 333.9791259765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9871094226837158, "cells": [{"id": 15, "text": "Remaining Useful Life (RUL) is the remaining time or cycles that an aircraft engine is likely to ", "bbox": {"l": 136.8, "t": 288.52808, "r": 547.26855, "b": 297.74106, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "operate without any failure. In this case, it is the equivalent of the number of flights remaining ", "bbox": {"l": 136.79999, "t": 300.52789, "r": 547.27057, "b": 309.74088, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "for the engine after the last flight. By estimating RUL, the operator can decide on the next ", "bbox": {"l": 136.79999, "t": 312.52771, "r": 533.55945, "b": 321.74069, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "maintenance schedule and avoid unplanned downtime.", "bbox": {"l": 136.79999, "t": 324.52753000000007, "r": 380.77405, "b": 333.74051, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 136.3080596923828, "t": 345.2879943847656, "r": 525.16229, "b": 367.7480773925781, "coord_origin": "TOPLEFT"}, "confidence": 0.9762709140777588, "cells": [{"id": 19, "text": "Figure 22 provides an overview of the inferencing architecture for the RUL of an aircraft ", "bbox": {"l": 136.79999, "t": 346.48734, "r": 525.16229, "b": 355.70032, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "engine when using IBM Z. ", "bbox": {"l": 136.79999, "t": 358.48714999999993, "r": 255.13271, "b": 367.70013, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "caption", "bbox": {"l": 64.39527893066406, "t": 621.308349609375, "r": 244.8438262939453, "b": 630.6195678710938, "coord_origin": "TOPLEFT"}, "confidence": 0.9493957161903381, "cells": [{"id": 21, "text": "Figure 22 Inferencing architecture on IBM Z", "bbox": {"l": 64.800003, "t": 622.2179, "r": 243.1971, "b": 630.54291, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 136.10833740234375, "t": 643.45068359375, "r": 547.25574, "b": 725.360573, "coord_origin": "TOPLEFT"}, "confidence": 0.9856446981430054, "cells": [{"id": 22, "text": "Because we are looking into data-driven model development, the data set of our target is the ", "bbox": {"l": 136.8, "t": 644.14873, "r": 547.25574, "b": 653.36172, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "run-to-failure data of the engine. We are looking into a supervised learning problem, and we ", "bbox": {"l": 136.8, "t": 656.1485299999999, "r": 544.6261, "b": 665.36153, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "use regression techniques to learn from the data. DL techniques such as Long Short-Term ", "bbox": {"l": 136.8, "t": 668.14833, "r": 539.12225, "b": 677.36134, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Memory (LSTM) or Gated Recurrent Units (GRU) are our choice because we are looking into ", "bbox": {"l": 136.8, "t": 680.14814, "r": 547.20392, "b": 689.36115, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "a time series data set. TensorFlow or PyTorch frameworks are leveraged to create models. AI ", "bbox": {"l": 136.8, "t": 692.1479489999999, "r": 547.14288, "b": 701.360954, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "governance monitors the data and model drift to maintain the model quality throughout the ", "bbox": {"l": 136.8, "t": 704.147758, "r": 537.91998, "b": 713.360764, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "model\u2019s life. ", "bbox": {"l": 136.8, "t": 716.147568, "r": 192.27719, "b": 725.360573, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "picture", "bbox": {"l": 63.826560974121094, "t": 381.7112731933594, "r": 539.9069213867188, "b": 618.51806640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9848758578300476, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 28, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 535.5003051757812, "t": 754.198486328125, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9135285019874573, "cells": [{"id": 0, "text": "27", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "27"}, {"label": "section_header", "id": 1, "page_no": 28, "cluster": {"id": 1, "label": "section_header", "bbox": {"l": 64.4560546875, "t": 70.49922180175781, "r": 124.18352508544922, "b": 83.58580017089844, "coord_origin": "TOPLEFT"}, "confidence": 0.9539816975593567, "cells": [{"id": 1, "text": "Summary", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 123.98573, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Summary"}, {"label": "text", "id": 2, "page_no": 28, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.6417999267578, "t": 96.69087219238281, "r": 532.96588, "b": 131.15280151367188, "coord_origin": "TOPLEFT"}, "confidence": 0.9826104044914246, "cells": [{"id": 2, "text": "With this use case, we attempted to demonstrate how to predict, in real time, whether the ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 532.96588, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "transaction that is being processed might be a fraudulent transaction or not. By using the ", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 531.263, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "method, you have the following advantages:", "bbox": {"l": 136.8, "t": 121.48834000000011, "r": 331.94427, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}]}, "text": "With this use case, we attempted to demonstrate how to predict, in real time, whether the transaction that is being processed might be a fraudulent transaction or not. By using the method, you have the following advantages:"}, {"label": "list_item", "id": 3, "page_no": 28, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 135.6079559326172, "t": 137.87742614746094, "r": 374.51035, "b": 148.40980529785156, "coord_origin": "TOPLEFT"}, "confidence": 0.9520530700683594, "cells": [{"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 138.67731000000003, "r": 141.78, "b": 147.45209, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "No Impact to SLAs and the batch process window.", "bbox": {"l": 151.20016, "t": 138.52788999999996, "r": 374.51035, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH No Impact to SLAs and the batch process window."}, {"label": "list_item", "id": 4, "page_no": 28, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.4309844970703, "t": 154.66566467285156, "r": 508.50623, "b": 165.0898895263672, "coord_origin": "TOPLEFT"}, "confidence": 0.9581583142280579, "cells": [{"id": 7, "text": "GLYPH", "bbox": {"l": 136.8, "t": 155.6571, "r": 141.78, "b": 164.43187999999998, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Proactively stop losses, and lower operational, regulatory, and compliance costs.", "bbox": {"l": 151.20016, "t": 155.50769000000003, "r": 508.50623, "b": 164.72069999999997, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Proactively stop losses, and lower operational, regulatory, and compliance costs."}, {"label": "list_item", "id": 5, "page_no": 28, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.6011199951172, "t": 171.30601501464844, "r": 533.53381, "b": 193.70032000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9762634634971619, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 172.63689999999997, "r": 141.78, "b": 181.41168000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "The solution is using a DL framework like TensorFlow for high-performing, low latency ", "bbox": {"l": 151.20016, "t": 172.48748999999998, "r": 533.53381, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "scoring.", "bbox": {"l": 151.20016, "t": 184.4873, "r": 186.20558, "b": 193.70032000000003, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The solution is using a DL framework like TensorFlow for high-performing, low latency scoring."}, {"label": "section_header", "id": 6, "page_no": 28, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 64.69216918945312, "t": 220.6259307861328, "r": 482.53705, "b": 237.16929626464844, "coord_origin": "TOPLEFT"}, "confidence": 0.9682862162590027, "cells": [{"id": 12, "text": "Use case 4: Remaining Useful Life of an aircraft engine", "bbox": {"l": 64.800003, "t": 222.18073000000004, "r": 482.53705, "b": 236.94372999999996, "coord_origin": "TOPLEFT"}}]}, "text": "Use case 4: Remaining Useful Life of an aircraft engine"}, {"label": "text", "id": 7, "page_no": 28, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.27346801757812, "t": 253.316650390625, "r": 545.72473, "b": 275.7215, "coord_origin": "TOPLEFT"}, "confidence": 0.9791228771209717, "cells": [{"id": 13, "text": "In this use case, we describe how an airline can deploy an AI model for inferencing by using ", "bbox": {"l": 136.8, "t": 254.50867000000005, "r": 545.72473, "b": 263.72168, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "IBMfi zSystems. ", "bbox": {"l": 136.8, "t": 266.50847999999996, "r": 213.51291, "b": 275.7215, "coord_origin": "TOPLEFT"}}]}, "text": "In this use case, we describe how an airline can deploy an AI model for inferencing by using IBMfi zSystems."}, {"label": "text", "id": 8, "page_no": 28, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.0217742919922, "t": 287.9417419433594, "r": 547.27057, "b": 333.9791259765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9871094226837158, "cells": [{"id": 15, "text": "Remaining Useful Life (RUL) is the remaining time or cycles that an aircraft engine is likely to ", "bbox": {"l": 136.8, "t": 288.52808, "r": 547.26855, "b": 297.74106, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "operate without any failure. In this case, it is the equivalent of the number of flights remaining ", "bbox": {"l": 136.79999, "t": 300.52789, "r": 547.27057, "b": 309.74088, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "for the engine after the last flight. By estimating RUL, the operator can decide on the next ", "bbox": {"l": 136.79999, "t": 312.52771, "r": 533.55945, "b": 321.74069, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "maintenance schedule and avoid unplanned downtime.", "bbox": {"l": 136.79999, "t": 324.52753000000007, "r": 380.77405, "b": 333.74051, "coord_origin": "TOPLEFT"}}]}, "text": "Remaining Useful Life (RUL) is the remaining time or cycles that an aircraft engine is likely to operate without any failure. In this case, it is the equivalent of the number of flights remaining for the engine after the last flight. By estimating RUL, the operator can decide on the next maintenance schedule and avoid unplanned downtime."}, {"label": "text", "id": 9, "page_no": 28, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.3080596923828, "t": 345.2879943847656, "r": 525.16229, "b": 367.7480773925781, "coord_origin": "TOPLEFT"}, "confidence": 0.9762709140777588, "cells": [{"id": 19, "text": "Figure 22 provides an overview of the inferencing architecture for the RUL of an aircraft ", "bbox": {"l": 136.79999, "t": 346.48734, "r": 525.16229, "b": 355.70032, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "engine when using IBM Z. ", "bbox": {"l": 136.79999, "t": 358.48714999999993, "r": 255.13271, "b": 367.70013, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 22 provides an overview of the inferencing architecture for the RUL of an aircraft engine when using IBM Z."}, {"label": "caption", "id": 10, "page_no": 28, "cluster": {"id": 10, "label": "caption", "bbox": {"l": 64.39527893066406, "t": 621.308349609375, "r": 244.8438262939453, "b": 630.6195678710938, "coord_origin": "TOPLEFT"}, "confidence": 0.9493957161903381, "cells": [{"id": 21, "text": "Figure 22 Inferencing architecture on IBM Z", "bbox": {"l": 64.800003, "t": 622.2179, "r": 243.1971, "b": 630.54291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 22 Inferencing architecture on IBM Z"}, {"label": "text", "id": 11, "page_no": 28, "cluster": {"id": 11, "label": "text", "bbox": {"l": 136.10833740234375, "t": 643.45068359375, "r": 547.25574, "b": 725.360573, "coord_origin": "TOPLEFT"}, "confidence": 0.9856446981430054, "cells": [{"id": 22, "text": "Because we are looking into data-driven model development, the data set of our target is the ", "bbox": {"l": 136.8, "t": 644.14873, "r": 547.25574, "b": 653.36172, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "run-to-failure data of the engine. We are looking into a supervised learning problem, and we ", "bbox": {"l": 136.8, "t": 656.1485299999999, "r": 544.6261, "b": 665.36153, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "use regression techniques to learn from the data. DL techniques such as Long Short-Term ", "bbox": {"l": 136.8, "t": 668.14833, "r": 539.12225, "b": 677.36134, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Memory (LSTM) or Gated Recurrent Units (GRU) are our choice because we are looking into ", "bbox": {"l": 136.8, "t": 680.14814, "r": 547.20392, "b": 689.36115, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "a time series data set. TensorFlow or PyTorch frameworks are leveraged to create models. AI ", "bbox": {"l": 136.8, "t": 692.1479489999999, "r": 547.14288, "b": 701.360954, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "governance monitors the data and model drift to maintain the model quality throughout the ", "bbox": {"l": 136.8, "t": 704.147758, "r": 537.91998, "b": 713.360764, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "model\u2019s life. ", "bbox": {"l": 136.8, "t": 716.147568, "r": 192.27719, "b": 725.360573, "coord_origin": "TOPLEFT"}}]}, "text": "Because we are looking into data-driven model development, the data set of our target is the run-to-failure data of the engine. We are looking into a supervised learning problem, and we use regression techniques to learn from the data. DL techniques such as Long Short-Term Memory (LSTM) or Gated Recurrent Units (GRU) are our choice because we are looking into a time series data set. TensorFlow or PyTorch frameworks are leveraged to create models. AI governance monitors the data and model drift to maintain the model quality throughout the model\u2019s life."}, {"label": "picture", "id": 12, "page_no": 28, "cluster": {"id": 12, "label": "picture", "bbox": {"l": 63.826560974121094, "t": 381.7112731933594, "r": 539.9069213867188, "b": 618.51806640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9848758578300476, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "section_header", "id": 1, "page_no": 28, "cluster": {"id": 1, "label": "section_header", "bbox": {"l": 64.4560546875, "t": 70.49922180175781, "r": 124.18352508544922, "b": 83.58580017089844, "coord_origin": "TOPLEFT"}, "confidence": 0.9539816975593567, "cells": [{"id": 1, "text": "Summary", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 123.98573, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Summary"}, {"label": "text", "id": 2, "page_no": 28, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.6417999267578, "t": 96.69087219238281, "r": 532.96588, "b": 131.15280151367188, "coord_origin": "TOPLEFT"}, "confidence": 0.9826104044914246, "cells": [{"id": 2, "text": "With this use case, we attempted to demonstrate how to predict, in real time, whether the ", "bbox": {"l": 136.8, "t": 97.48870999999997, "r": 532.96588, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "transaction that is being processed might be a fraudulent transaction or not. By using the ", "bbox": {"l": 136.8, "t": 109.48852999999997, "r": 531.263, "b": 118.70154000000002, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "method, you have the following advantages:", "bbox": {"l": 136.8, "t": 121.48834000000011, "r": 331.94427, "b": 130.70135000000005, "coord_origin": "TOPLEFT"}}]}, "text": "With this use case, we attempted to demonstrate how to predict, in real time, whether the transaction that is being processed might be a fraudulent transaction or not. By using the method, you have the following advantages:"}, {"label": "list_item", "id": 3, "page_no": 28, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 135.6079559326172, "t": 137.87742614746094, "r": 374.51035, "b": 148.40980529785156, "coord_origin": "TOPLEFT"}, "confidence": 0.9520530700683594, "cells": [{"id": 5, "text": "GLYPH", "bbox": {"l": 136.8, "t": 138.67731000000003, "r": 141.78, "b": 147.45209, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "No Impact to SLAs and the batch process window.", "bbox": {"l": 151.20016, "t": 138.52788999999996, "r": 374.51035, "b": 147.74090999999999, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH No Impact to SLAs and the batch process window."}, {"label": "list_item", "id": 4, "page_no": 28, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.4309844970703, "t": 154.66566467285156, "r": 508.50623, "b": 165.0898895263672, "coord_origin": "TOPLEFT"}, "confidence": 0.9581583142280579, "cells": [{"id": 7, "text": "GLYPH", "bbox": {"l": 136.8, "t": 155.6571, "r": 141.78, "b": 164.43187999999998, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Proactively stop losses, and lower operational, regulatory, and compliance costs.", "bbox": {"l": 151.20016, "t": 155.50769000000003, "r": 508.50623, "b": 164.72069999999997, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Proactively stop losses, and lower operational, regulatory, and compliance costs."}, {"label": "list_item", "id": 5, "page_no": 28, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.6011199951172, "t": 171.30601501464844, "r": 533.53381, "b": 193.70032000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.9762634634971619, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 172.63689999999997, "r": 141.78, "b": 181.41168000000005, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "The solution is using a DL framework like TensorFlow for high-performing, low latency ", "bbox": {"l": 151.20016, "t": 172.48748999999998, "r": 533.53381, "b": 181.70050000000003, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "scoring.", "bbox": {"l": 151.20016, "t": 184.4873, "r": 186.20558, "b": 193.70032000000003, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The solution is using a DL framework like TensorFlow for high-performing, low latency scoring."}, {"label": "section_header", "id": 6, "page_no": 28, "cluster": {"id": 6, "label": "section_header", "bbox": {"l": 64.69216918945312, "t": 220.6259307861328, "r": 482.53705, "b": 237.16929626464844, "coord_origin": "TOPLEFT"}, "confidence": 0.9682862162590027, "cells": [{"id": 12, "text": "Use case 4: Remaining Useful Life of an aircraft engine", "bbox": {"l": 64.800003, "t": 222.18073000000004, "r": 482.53705, "b": 236.94372999999996, "coord_origin": "TOPLEFT"}}]}, "text": "Use case 4: Remaining Useful Life of an aircraft engine"}, {"label": "text", "id": 7, "page_no": 28, "cluster": {"id": 7, "label": "text", "bbox": {"l": 136.27346801757812, "t": 253.316650390625, "r": 545.72473, "b": 275.7215, "coord_origin": "TOPLEFT"}, "confidence": 0.9791228771209717, "cells": [{"id": 13, "text": "In this use case, we describe how an airline can deploy an AI model for inferencing by using ", "bbox": {"l": 136.8, "t": 254.50867000000005, "r": 545.72473, "b": 263.72168, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "IBMfi zSystems. ", "bbox": {"l": 136.8, "t": 266.50847999999996, "r": 213.51291, "b": 275.7215, "coord_origin": "TOPLEFT"}}]}, "text": "In this use case, we describe how an airline can deploy an AI model for inferencing by using IBMfi zSystems."}, {"label": "text", "id": 8, "page_no": 28, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.0217742919922, "t": 287.9417419433594, "r": 547.27057, "b": 333.9791259765625, "coord_origin": "TOPLEFT"}, "confidence": 0.9871094226837158, "cells": [{"id": 15, "text": "Remaining Useful Life (RUL) is the remaining time or cycles that an aircraft engine is likely to ", "bbox": {"l": 136.8, "t": 288.52808, "r": 547.26855, "b": 297.74106, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "operate without any failure. In this case, it is the equivalent of the number of flights remaining ", "bbox": {"l": 136.79999, "t": 300.52789, "r": 547.27057, "b": 309.74088, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "for the engine after the last flight. By estimating RUL, the operator can decide on the next ", "bbox": {"l": 136.79999, "t": 312.52771, "r": 533.55945, "b": 321.74069, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "maintenance schedule and avoid unplanned downtime.", "bbox": {"l": 136.79999, "t": 324.52753000000007, "r": 380.77405, "b": 333.74051, "coord_origin": "TOPLEFT"}}]}, "text": "Remaining Useful Life (RUL) is the remaining time or cycles that an aircraft engine is likely to operate without any failure. In this case, it is the equivalent of the number of flights remaining for the engine after the last flight. By estimating RUL, the operator can decide on the next maintenance schedule and avoid unplanned downtime."}, {"label": "text", "id": 9, "page_no": 28, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.3080596923828, "t": 345.2879943847656, "r": 525.16229, "b": 367.7480773925781, "coord_origin": "TOPLEFT"}, "confidence": 0.9762709140777588, "cells": [{"id": 19, "text": "Figure 22 provides an overview of the inferencing architecture for the RUL of an aircraft ", "bbox": {"l": 136.79999, "t": 346.48734, "r": 525.16229, "b": 355.70032, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "engine when using IBM Z. ", "bbox": {"l": 136.79999, "t": 358.48714999999993, "r": 255.13271, "b": 367.70013, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 22 provides an overview of the inferencing architecture for the RUL of an aircraft engine when using IBM Z."}, {"label": "caption", "id": 10, "page_no": 28, "cluster": {"id": 10, "label": "caption", "bbox": {"l": 64.39527893066406, "t": 621.308349609375, "r": 244.8438262939453, "b": 630.6195678710938, "coord_origin": "TOPLEFT"}, "confidence": 0.9493957161903381, "cells": [{"id": 21, "text": "Figure 22 Inferencing architecture on IBM Z", "bbox": {"l": 64.800003, "t": 622.2179, "r": 243.1971, "b": 630.54291, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 22 Inferencing architecture on IBM Z"}, {"label": "text", "id": 11, "page_no": 28, "cluster": {"id": 11, "label": "text", "bbox": {"l": 136.10833740234375, "t": 643.45068359375, "r": 547.25574, "b": 725.360573, "coord_origin": "TOPLEFT"}, "confidence": 0.9856446981430054, "cells": [{"id": 22, "text": "Because we are looking into data-driven model development, the data set of our target is the ", "bbox": {"l": 136.8, "t": 644.14873, "r": 547.25574, "b": 653.36172, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "run-to-failure data of the engine. We are looking into a supervised learning problem, and we ", "bbox": {"l": 136.8, "t": 656.1485299999999, "r": 544.6261, "b": 665.36153, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "use regression techniques to learn from the data. DL techniques such as Long Short-Term ", "bbox": {"l": 136.8, "t": 668.14833, "r": 539.12225, "b": 677.36134, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Memory (LSTM) or Gated Recurrent Units (GRU) are our choice because we are looking into ", "bbox": {"l": 136.8, "t": 680.14814, "r": 547.20392, "b": 689.36115, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "a time series data set. TensorFlow or PyTorch frameworks are leveraged to create models. AI ", "bbox": {"l": 136.8, "t": 692.1479489999999, "r": 547.14288, "b": 701.360954, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "governance monitors the data and model drift to maintain the model quality throughout the ", "bbox": {"l": 136.8, "t": 704.147758, "r": 537.91998, "b": 713.360764, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "model\u2019s life. ", "bbox": {"l": 136.8, "t": 716.147568, "r": 192.27719, "b": 725.360573, "coord_origin": "TOPLEFT"}}]}, "text": "Because we are looking into data-driven model development, the data set of our target is the run-to-failure data of the engine. We are looking into a supervised learning problem, and we use regression techniques to learn from the data. DL techniques such as Long Short-Term Memory (LSTM) or Gated Recurrent Units (GRU) are our choice because we are looking into a time series data set. TensorFlow or PyTorch frameworks are leveraged to create models. AI governance monitors the data and model drift to maintain the model quality throughout the model\u2019s life."}, {"label": "picture", "id": 12, "page_no": 28, "cluster": {"id": 12, "label": "picture", "bbox": {"l": 63.826560974121094, "t": 381.7112731933594, "r": 539.9069213867188, "b": 618.51806640625, "coord_origin": "TOPLEFT"}, "confidence": 0.9848758578300476, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 28, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 535.5003051757812, "t": 754.198486328125, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9135285019874573, "cells": [{"id": 0, "text": "27", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "27"}]}}, {"page_no": 29, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "28 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Open-source data from NASA was used to build the AI model, which then was deployed on ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 542.39313, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "CP4D. CP4D enables the data-scientist\u2019s journey from modeling to deployment in a seamless ", "bbox": {"l": 136.80002, "t": 83.50847999999996, "r": 547.27655, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "process. Data engineers leverage Db2 to host the data set, which includes the training, ", "bbox": {"l": 136.80003, "t": 95.50829999999996, "r": 523.61969, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "testing, and validation of a data set. Since data is hosted on Db2, you can expect low latency ", "bbox": {"l": 136.80003, "t": 107.50811999999996, "r": 547.28241, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "while retrieving the data and serve data security needs because Db2 is hosted on the ", "bbox": {"l": 136.80003, "t": 119.50792999999999, "r": 516.43262, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "IBM Z platform. Data is fetched by the data refinery to do the necessary pre-processing and ", "bbox": {"l": 136.80003, "t": 131.50775, "r": 544.06757, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "data imputations. You can use the programming languages Golang or C++ for real-time ", "bbox": {"l": 136.80003, "t": 143.50757, "r": 525.77576, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "predictions, depending on customer needs. For more information about this topic, see \u201cUse ", "bbox": {"l": 136.80003, "t": 155.50739, "r": 541.80939, "b": 164.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "case 3: Clearing and settlement\u201d on page 25.", "bbox": {"l": 136.80003, "t": 167.5072, "r": 336.3446, "b": 176.72020999999995, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Model building is done on Watson Studio, leveraging the high-performance computing ", "bbox": {"l": 136.80003, "t": 189.52679, "r": 519.02582, "b": 198.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "hardware on IBM Z. You can train the model anywhere (on your own hardware or the cloud) ", "bbox": {"l": 136.80003, "t": 201.52661, "r": 545.17706, "b": 210.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "and bring the model directly into CP4D, which provides data scientists with the flexibility of ", "bbox": {"l": 136.80003, "t": 213.52643, "r": 537.34039, "b": 222.73943999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "implementation choices. ", "bbox": {"l": 136.80005, "t": 225.52625, "r": 246.82417, "b": 234.73925999999994, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "We used LSTM to build the AI model and used the training data. The model was continuously ", "bbox": {"l": 136.80005, "t": 247.48602000000005, "r": 547.21289, "b": 256.69903999999997, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "evaluated to model convergence. The final model is tested with the test data, which is never ", "bbox": {"l": 136.80005, "t": 259.48584000000005, "r": 545.17395, "b": 268.69885, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "exposed at the time of training to make sure that the model works. ", "bbox": {"l": 136.80005, "t": 271.48566000000005, "r": 431.79333, "b": 280.69867, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "This model is deployed on WML on CP4D and runs on IBM Z. If required, the trained model ", "bbox": {"l": 136.80005, "t": 293.50525, "r": 543.47888, "b": 302.71823, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "can be converted to the Open Neural Network Exchange (ONNX) format before deployment. ", "bbox": {"l": 136.80005, "t": 305.50507, "r": 547.30829, "b": 314.71804999999995, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Based on project requirements, IBM Z supports high-throughput, low latency inference ", "bbox": {"l": 136.80005, "t": 317.50488000000007, "r": 520.6048, "b": 326.71786, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "requirements by leveraging an AI accelerator.", "bbox": {"l": 136.80005, "t": 329.5047, "r": 338.49896, "b": 338.71768, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "For decision-making about an aircraft engine\u2019s life, it is important to be able to explain the ", "bbox": {"l": 136.80005, "t": 351.52426, "r": 533.88434, "b": 360.73724, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "model predictions from end to end. This explainability may be global or local. Global ", "bbox": {"l": 136.80005, "t": 363.52408, "r": 509.4176, "b": 372.73706, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "explainability enables decision-makers to evaluate the trained model in general from the ", "bbox": {"l": 136.80005, "t": 375.52389999999997, "r": 527.95715, "b": 384.73688, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "subject matter expert (SME) point of view. Local explainability enables the operator to validate ", "bbox": {"l": 136.80005, "t": 387.52371, "r": 547.28247, "b": 396.73669, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "the reasons behind the present inference and relate it to the past data points, which are an ", "bbox": {"l": 136.80005, "t": 399.52353, "r": 539.53656, "b": 408.73651, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "indicative cause of the prediction. ", "bbox": {"l": 136.80005, "t": 411.52334999999994, "r": 287.38629, "b": 420.73633, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "The AI governance components such as IBM OpenScale on CP4D support explainability and ", "bbox": {"l": 136.80005, "t": 433.48315, "r": 547.27649, "b": 442.69614, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "manages the drifts in data and concept. OpenPages and AI FactSheet together can alert the ", "bbox": {"l": 136.80005, "t": 445.48297, "r": 547.26263, "b": 454.69595, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "stakeholders about important events through a dashboard and allow course correction at any ", "bbox": {"l": 136.80005, "t": 457.48279, "r": 547.32422, "b": 466.69577, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "point. ", "bbox": {"l": 136.80005, "t": 469.4826, "r": 163.98486, "b": 478.69559, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Client-side applications can invoke a REST apiserver that handles some preprocessing of an ", "bbox": {"l": 136.80005, "t": 491.50217, "r": 547.27454, "b": 500.71515, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "incoming request before initiating the inference pipeline. Efficiencies might be needed in ", "bbox": {"l": 136.80005, "t": 503.50198, "r": 527.93903, "b": 512.71497, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "real-time applications, and inference response time can be reduced by adopting low-level ", "bbox": {"l": 136.80005, "t": 515.5018, "r": 533.50079, "b": 524.71478, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "programming while components are communicating.", "bbox": {"l": 136.80005, "t": 527.50162, "r": 368.46075, "b": 536.71461, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Figure 23 on page 29 provides a more in-depth view of the architecture of an AI-based ", "bbox": {"l": 136.80005, "t": 549.52118, "r": 521.20435, "b": 558.73418, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "predictive maintenance application. ", "bbox": {"l": 136.80005, "t": 561.52098, "r": 295.74277, "b": 570.73398, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.85002517700195, "t": 754.3954467773438, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9155879020690918, "cells": [{"id": 0, "text": "28 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.15624237060547, "t": 754.7210083007812, "r": 267.0744, "b": 764.1427612304688, "coord_origin": "TOPLEFT"}, "confidence": 0.9536111354827881, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.91494750976562, "t": 70.69358825683594, "r": 547.28241, "b": 176.9809112548828, "coord_origin": "TOPLEFT"}, "confidence": 0.9882624745368958, "cells": [{"id": 2, "text": "Open-source data from NASA was used to build the AI model, which then was deployed on ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 542.39313, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "CP4D. CP4D enables the data-scientist\u2019s journey from modeling to deployment in a seamless ", "bbox": {"l": 136.80002, "t": 83.50847999999996, "r": 547.27655, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "process. Data engineers leverage Db2 to host the data set, which includes the training, ", "bbox": {"l": 136.80003, "t": 95.50829999999996, "r": 523.61969, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "testing, and validation of a data set. Since data is hosted on Db2, you can expect low latency ", "bbox": {"l": 136.80003, "t": 107.50811999999996, "r": 547.28241, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "while retrieving the data and serve data security needs because Db2 is hosted on the ", "bbox": {"l": 136.80003, "t": 119.50792999999999, "r": 516.43262, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "IBM Z platform. Data is fetched by the data refinery to do the necessary pre-processing and ", "bbox": {"l": 136.80003, "t": 131.50775, "r": 544.06757, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "data imputations. You can use the programming languages Golang or C++ for real-time ", "bbox": {"l": 136.80003, "t": 143.50757, "r": 525.77576, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "predictions, depending on customer needs. For more information about this topic, see \u201cUse ", "bbox": {"l": 136.80003, "t": 155.50739, "r": 541.80939, "b": 164.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "case 3: Clearing and settlement\u201d on page 25.", "bbox": {"l": 136.80003, "t": 167.5072, "r": 336.3446, "b": 176.72020999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.84686279296875, "t": 188.6097869873047, "r": 545.17706, "b": 234.73925999999994, "coord_origin": "TOPLEFT"}, "confidence": 0.9868529438972473, "cells": [{"id": 11, "text": "Model building is done on Watson Studio, leveraging the high-performance computing ", "bbox": {"l": 136.80003, "t": 189.52679, "r": 519.02582, "b": 198.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "hardware on IBM Z. You can train the model anywhere (on your own hardware or the cloud) ", "bbox": {"l": 136.80003, "t": 201.52661, "r": 545.17706, "b": 210.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "and bring the model directly into CP4D, which provides data scientists with the flexibility of ", "bbox": {"l": 136.80003, "t": 213.52643, "r": 537.34039, "b": 222.73943999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "implementation choices. ", "bbox": {"l": 136.80005, "t": 225.52625, "r": 246.82417, "b": 234.73925999999994, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.91741943359375, "t": 246.65235900878906, "r": 547.21289, "b": 281.0306701660156, "coord_origin": "TOPLEFT"}, "confidence": 0.9854286313056946, "cells": [{"id": 15, "text": "We used LSTM to build the AI model and used the training data. The model was continuously ", "bbox": {"l": 136.80005, "t": 247.48602000000005, "r": 547.21289, "b": 256.69903999999997, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "evaluated to model convergence. The final model is tested with the test data, which is never ", "bbox": {"l": 136.80005, "t": 259.48584000000005, "r": 545.17395, "b": 268.69885, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "exposed at the time of training to make sure that the model works. ", "bbox": {"l": 136.80005, "t": 271.48566000000005, "r": 431.79333, "b": 280.69867, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.88528442382812, "t": 292.6196594238281, "r": 547.30829, "b": 339.16351318359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9867450594902039, "cells": [{"id": 18, "text": "This model is deployed on WML on CP4D and runs on IBM Z. If required, the trained model ", "bbox": {"l": 136.80005, "t": 293.50525, "r": 543.47888, "b": 302.71823, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "can be converted to the Open Neural Network Exchange (ONNX) format before deployment. ", "bbox": {"l": 136.80005, "t": 305.50507, "r": 547.30829, "b": 314.71804999999995, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Based on project requirements, IBM Z supports high-throughput, low latency inference ", "bbox": {"l": 136.80005, "t": 317.50488000000007, "r": 520.6048, "b": 326.71786, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "requirements by leveraging an AI accelerator.", "bbox": {"l": 136.80005, "t": 329.5047, "r": 338.49896, "b": 338.71768, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 135.9976348876953, "t": 350.63482666015625, "r": 547.28247, "b": 420.8690185546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9884775280952454, "cells": [{"id": 22, "text": "For decision-making about an aircraft engine\u2019s life, it is important to be able to explain the ", "bbox": {"l": 136.80005, "t": 351.52426, "r": 533.88434, "b": 360.73724, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "model predictions from end to end. This explainability may be global or local. Global ", "bbox": {"l": 136.80005, "t": 363.52408, "r": 509.4176, "b": 372.73706, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "explainability enables decision-makers to evaluate the trained model in general from the ", "bbox": {"l": 136.80005, "t": 375.52389999999997, "r": 527.95715, "b": 384.73688, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "subject matter expert (SME) point of view. Local explainability enables the operator to validate ", "bbox": {"l": 136.80005, "t": 387.52371, "r": 547.28247, "b": 396.73669, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "the reasons behind the present inference and relate it to the past data points, which are an ", "bbox": {"l": 136.80005, "t": 399.52353, "r": 539.53656, "b": 408.73651, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "indicative cause of the prediction. ", "bbox": {"l": 136.80005, "t": 411.52334999999994, "r": 287.38629, "b": 420.73633, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 135.7574462890625, "t": 432.6813049316406, "r": 547.32422, "b": 478.8412170410156, "coord_origin": "TOPLEFT"}, "confidence": 0.9873866438865662, "cells": [{"id": 28, "text": "The AI governance components such as IBM OpenScale on CP4D support explainability and ", "bbox": {"l": 136.80005, "t": 433.48315, "r": 547.27649, "b": 442.69614, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "manages the drifts in data and concept. OpenPages and AI FactSheet together can alert the ", "bbox": {"l": 136.80005, "t": 445.48297, "r": 547.26263, "b": 454.69595, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "stakeholders about important events through a dashboard and allow course correction at any ", "bbox": {"l": 136.80005, "t": 457.48279, "r": 547.32422, "b": 466.69577, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "point. ", "bbox": {"l": 136.80005, "t": 469.4826, "r": 163.98486, "b": 478.69559, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 136.12620544433594, "t": 490.4873046875, "r": 547.27454, "b": 537.0437622070312, "coord_origin": "TOPLEFT"}, "confidence": 0.9881239533424377, "cells": [{"id": 32, "text": "Client-side applications can invoke a REST apiserver that handles some preprocessing of an ", "bbox": {"l": 136.80005, "t": 491.50217, "r": 547.27454, "b": 500.71515, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "incoming request before initiating the inference pipeline. Efficiencies might be needed in ", "bbox": {"l": 136.80005, "t": 503.50198, "r": 527.93903, "b": 512.71497, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "real-time applications, and inference response time can be reduced by adopting low-level ", "bbox": {"l": 136.80005, "t": 515.5018, "r": 533.50079, "b": 524.71478, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "programming while components are communicating.", "bbox": {"l": 136.80005, "t": 527.50162, "r": 368.46075, "b": 536.71461, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 136.40904235839844, "t": 548.6136474609375, "r": 521.20435, "b": 570.9915771484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9769964814186096, "cells": [{"id": 36, "text": "Figure 23 on page 29 provides a more in-depth view of the architecture of an AI-based ", "bbox": {"l": 136.80005, "t": 549.52118, "r": 521.20435, "b": 558.73418, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "predictive maintenance application. ", "bbox": {"l": 136.80005, "t": 561.52098, "r": 295.74277, "b": 570.73398, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 29, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.85002517700195, "t": 754.3954467773438, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9155879020690918, "cells": [{"id": 0, "text": "28 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "28"}, {"label": "page_footer", "id": 1, "page_no": 29, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.15624237060547, "t": 754.7210083007812, "r": 267.0744, "b": 764.1427612304688, "coord_origin": "TOPLEFT"}, "confidence": 0.9536111354827881, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"label": "text", "id": 2, "page_no": 29, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.91494750976562, "t": 70.69358825683594, "r": 547.28241, "b": 176.9809112548828, "coord_origin": "TOPLEFT"}, "confidence": 0.9882624745368958, "cells": [{"id": 2, "text": "Open-source data from NASA was used to build the AI model, which then was deployed on ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 542.39313, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "CP4D. CP4D enables the data-scientist\u2019s journey from modeling to deployment in a seamless ", "bbox": {"l": 136.80002, "t": 83.50847999999996, "r": 547.27655, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "process. Data engineers leverage Db2 to host the data set, which includes the training, ", "bbox": {"l": 136.80003, "t": 95.50829999999996, "r": 523.61969, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "testing, and validation of a data set. Since data is hosted on Db2, you can expect low latency ", "bbox": {"l": 136.80003, "t": 107.50811999999996, "r": 547.28241, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "while retrieving the data and serve data security needs because Db2 is hosted on the ", "bbox": {"l": 136.80003, "t": 119.50792999999999, "r": 516.43262, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "IBM Z platform. Data is fetched by the data refinery to do the necessary pre-processing and ", "bbox": {"l": 136.80003, "t": 131.50775, "r": 544.06757, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "data imputations. You can use the programming languages Golang or C++ for real-time ", "bbox": {"l": 136.80003, "t": 143.50757, "r": 525.77576, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "predictions, depending on customer needs. For more information about this topic, see \u201cUse ", "bbox": {"l": 136.80003, "t": 155.50739, "r": 541.80939, "b": 164.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "case 3: Clearing and settlement\u201d on page 25.", "bbox": {"l": 136.80003, "t": 167.5072, "r": 336.3446, "b": 176.72020999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Open-source data from NASA was used to build the AI model, which then was deployed on CP4D. CP4D enables the data-scientist\u2019s journey from modeling to deployment in a seamless process. Data engineers leverage Db2 to host the data set, which includes the training, testing, and validation of a data set. Since data is hosted on Db2, you can expect low latency while retrieving the data and serve data security needs because Db2 is hosted on the IBM Z platform. Data is fetched by the data refinery to do the necessary pre-processing and data imputations. You can use the programming languages Golang or C++ for real-time predictions, depending on customer needs. For more information about this topic, see \u201cUse case 3: Clearing and settlement\u201d on page 25."}, {"label": "text", "id": 3, "page_no": 29, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.84686279296875, "t": 188.6097869873047, "r": 545.17706, "b": 234.73925999999994, "coord_origin": "TOPLEFT"}, "confidence": 0.9868529438972473, "cells": [{"id": 11, "text": "Model building is done on Watson Studio, leveraging the high-performance computing ", "bbox": {"l": 136.80003, "t": 189.52679, "r": 519.02582, "b": 198.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "hardware on IBM Z. You can train the model anywhere (on your own hardware or the cloud) ", "bbox": {"l": 136.80003, "t": 201.52661, "r": 545.17706, "b": 210.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "and bring the model directly into CP4D, which provides data scientists with the flexibility of ", "bbox": {"l": 136.80003, "t": 213.52643, "r": 537.34039, "b": 222.73943999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "implementation choices. ", "bbox": {"l": 136.80005, "t": 225.52625, "r": 246.82417, "b": 234.73925999999994, "coord_origin": "TOPLEFT"}}]}, "text": "Model building is done on Watson Studio, leveraging the high-performance computing hardware on IBM Z. You can train the model anywhere (on your own hardware or the cloud) and bring the model directly into CP4D, which provides data scientists with the flexibility of implementation choices."}, {"label": "text", "id": 4, "page_no": 29, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.91741943359375, "t": 246.65235900878906, "r": 547.21289, "b": 281.0306701660156, "coord_origin": "TOPLEFT"}, "confidence": 0.9854286313056946, "cells": [{"id": 15, "text": "We used LSTM to build the AI model and used the training data. The model was continuously ", "bbox": {"l": 136.80005, "t": 247.48602000000005, "r": 547.21289, "b": 256.69903999999997, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "evaluated to model convergence. The final model is tested with the test data, which is never ", "bbox": {"l": 136.80005, "t": 259.48584000000005, "r": 545.17395, "b": 268.69885, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "exposed at the time of training to make sure that the model works. ", "bbox": {"l": 136.80005, "t": 271.48566000000005, "r": 431.79333, "b": 280.69867, "coord_origin": "TOPLEFT"}}]}, "text": "We used LSTM to build the AI model and used the training data. The model was continuously evaluated to model convergence. The final model is tested with the test data, which is never exposed at the time of training to make sure that the model works."}, {"label": "text", "id": 5, "page_no": 29, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.88528442382812, "t": 292.6196594238281, "r": 547.30829, "b": 339.16351318359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9867450594902039, "cells": [{"id": 18, "text": "This model is deployed on WML on CP4D and runs on IBM Z. If required, the trained model ", "bbox": {"l": 136.80005, "t": 293.50525, "r": 543.47888, "b": 302.71823, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "can be converted to the Open Neural Network Exchange (ONNX) format before deployment. ", "bbox": {"l": 136.80005, "t": 305.50507, "r": 547.30829, "b": 314.71804999999995, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Based on project requirements, IBM Z supports high-throughput, low latency inference ", "bbox": {"l": 136.80005, "t": 317.50488000000007, "r": 520.6048, "b": 326.71786, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "requirements by leveraging an AI accelerator.", "bbox": {"l": 136.80005, "t": 329.5047, "r": 338.49896, "b": 338.71768, "coord_origin": "TOPLEFT"}}]}, "text": "This model is deployed on WML on CP4D and runs on IBM Z. If required, the trained model can be converted to the Open Neural Network Exchange (ONNX) format before deployment. Based on project requirements, IBM Z supports high-throughput, low latency inference requirements by leveraging an AI accelerator."}, {"label": "text", "id": 6, "page_no": 29, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.9976348876953, "t": 350.63482666015625, "r": 547.28247, "b": 420.8690185546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9884775280952454, "cells": [{"id": 22, "text": "For decision-making about an aircraft engine\u2019s life, it is important to be able to explain the ", "bbox": {"l": 136.80005, "t": 351.52426, "r": 533.88434, "b": 360.73724, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "model predictions from end to end. This explainability may be global or local. Global ", "bbox": {"l": 136.80005, "t": 363.52408, "r": 509.4176, "b": 372.73706, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "explainability enables decision-makers to evaluate the trained model in general from the ", "bbox": {"l": 136.80005, "t": 375.52389999999997, "r": 527.95715, "b": 384.73688, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "subject matter expert (SME) point of view. Local explainability enables the operator to validate ", "bbox": {"l": 136.80005, "t": 387.52371, "r": 547.28247, "b": 396.73669, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "the reasons behind the present inference and relate it to the past data points, which are an ", "bbox": {"l": 136.80005, "t": 399.52353, "r": 539.53656, "b": 408.73651, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "indicative cause of the prediction. ", "bbox": {"l": 136.80005, "t": 411.52334999999994, "r": 287.38629, "b": 420.73633, "coord_origin": "TOPLEFT"}}]}, "text": "For decision-making about an aircraft engine\u2019s life, it is important to be able to explain the model predictions from end to end. This explainability may be global or local. Global explainability enables decision-makers to evaluate the trained model in general from the subject matter expert (SME) point of view. Local explainability enables the operator to validate the reasons behind the present inference and relate it to the past data points, which are an indicative cause of the prediction."}, {"label": "text", "id": 7, "page_no": 29, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.7574462890625, "t": 432.6813049316406, "r": 547.32422, "b": 478.8412170410156, "coord_origin": "TOPLEFT"}, "confidence": 0.9873866438865662, "cells": [{"id": 28, "text": "The AI governance components such as IBM OpenScale on CP4D support explainability and ", "bbox": {"l": 136.80005, "t": 433.48315, "r": 547.27649, "b": 442.69614, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "manages the drifts in data and concept. OpenPages and AI FactSheet together can alert the ", "bbox": {"l": 136.80005, "t": 445.48297, "r": 547.26263, "b": 454.69595, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "stakeholders about important events through a dashboard and allow course correction at any ", "bbox": {"l": 136.80005, "t": 457.48279, "r": 547.32422, "b": 466.69577, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "point. ", "bbox": {"l": 136.80005, "t": 469.4826, "r": 163.98486, "b": 478.69559, "coord_origin": "TOPLEFT"}}]}, "text": "The AI governance components such as IBM OpenScale on CP4D support explainability and manages the drifts in data and concept. OpenPages and AI FactSheet together can alert the stakeholders about important events through a dashboard and allow course correction at any point."}, {"label": "text", "id": 8, "page_no": 29, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.12620544433594, "t": 490.4873046875, "r": 547.27454, "b": 537.0437622070312, "coord_origin": "TOPLEFT"}, "confidence": 0.9881239533424377, "cells": [{"id": 32, "text": "Client-side applications can invoke a REST apiserver that handles some preprocessing of an ", "bbox": {"l": 136.80005, "t": 491.50217, "r": 547.27454, "b": 500.71515, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "incoming request before initiating the inference pipeline. Efficiencies might be needed in ", "bbox": {"l": 136.80005, "t": 503.50198, "r": 527.93903, "b": 512.71497, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "real-time applications, and inference response time can be reduced by adopting low-level ", "bbox": {"l": 136.80005, "t": 515.5018, "r": 533.50079, "b": 524.71478, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "programming while components are communicating.", "bbox": {"l": 136.80005, "t": 527.50162, "r": 368.46075, "b": 536.71461, "coord_origin": "TOPLEFT"}}]}, "text": "Client-side applications can invoke a REST apiserver that handles some preprocessing of an incoming request before initiating the inference pipeline. Efficiencies might be needed in real-time applications, and inference response time can be reduced by adopting low-level programming while components are communicating."}, {"label": "text", "id": 9, "page_no": 29, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.40904235839844, "t": 548.6136474609375, "r": 521.20435, "b": 570.9915771484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9769964814186096, "cells": [{"id": 36, "text": "Figure 23 on page 29 provides a more in-depth view of the architecture of an AI-based ", "bbox": {"l": 136.80005, "t": 549.52118, "r": 521.20435, "b": 558.73418, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "predictive maintenance application. ", "bbox": {"l": 136.80005, "t": 561.52098, "r": 295.74277, "b": 570.73398, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 23 on page 29 provides a more in-depth view of the architecture of an AI-based predictive maintenance application."}], "body": [{"label": "text", "id": 2, "page_no": 29, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.91494750976562, "t": 70.69358825683594, "r": 547.28241, "b": 176.9809112548828, "coord_origin": "TOPLEFT"}, "confidence": 0.9882624745368958, "cells": [{"id": 2, "text": "Open-source data from NASA was used to build the AI model, which then was deployed on ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 542.39313, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "CP4D. CP4D enables the data-scientist\u2019s journey from modeling to deployment in a seamless ", "bbox": {"l": 136.80002, "t": 83.50847999999996, "r": 547.27655, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "process. Data engineers leverage Db2 to host the data set, which includes the training, ", "bbox": {"l": 136.80003, "t": 95.50829999999996, "r": 523.61969, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "testing, and validation of a data set. Since data is hosted on Db2, you can expect low latency ", "bbox": {"l": 136.80003, "t": 107.50811999999996, "r": 547.28241, "b": 116.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "while retrieving the data and serve data security needs because Db2 is hosted on the ", "bbox": {"l": 136.80003, "t": 119.50792999999999, "r": 516.43262, "b": 128.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "IBM Z platform. Data is fetched by the data refinery to do the necessary pre-processing and ", "bbox": {"l": 136.80003, "t": 131.50775, "r": 544.06757, "b": 140.72076000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "data imputations. You can use the programming languages Golang or C++ for real-time ", "bbox": {"l": 136.80003, "t": 143.50757, "r": 525.77576, "b": 152.72058000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "predictions, depending on customer needs. For more information about this topic, see \u201cUse ", "bbox": {"l": 136.80003, "t": 155.50739, "r": 541.80939, "b": 164.72040000000004, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "case 3: Clearing and settlement\u201d on page 25.", "bbox": {"l": 136.80003, "t": 167.5072, "r": 336.3446, "b": 176.72020999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Open-source data from NASA was used to build the AI model, which then was deployed on CP4D. CP4D enables the data-scientist\u2019s journey from modeling to deployment in a seamless process. Data engineers leverage Db2 to host the data set, which includes the training, testing, and validation of a data set. Since data is hosted on Db2, you can expect low latency while retrieving the data and serve data security needs because Db2 is hosted on the IBM Z platform. Data is fetched by the data refinery to do the necessary pre-processing and data imputations. You can use the programming languages Golang or C++ for real-time predictions, depending on customer needs. For more information about this topic, see \u201cUse case 3: Clearing and settlement\u201d on page 25."}, {"label": "text", "id": 3, "page_no": 29, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.84686279296875, "t": 188.6097869873047, "r": 545.17706, "b": 234.73925999999994, "coord_origin": "TOPLEFT"}, "confidence": 0.9868529438972473, "cells": [{"id": 11, "text": "Model building is done on Watson Studio, leveraging the high-performance computing ", "bbox": {"l": 136.80003, "t": 189.52679, "r": 519.02582, "b": 198.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "hardware on IBM Z. You can train the model anywhere (on your own hardware or the cloud) ", "bbox": {"l": 136.80003, "t": 201.52661, "r": 545.17706, "b": 210.73961999999995, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "and bring the model directly into CP4D, which provides data scientists with the flexibility of ", "bbox": {"l": 136.80003, "t": 213.52643, "r": 537.34039, "b": 222.73943999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "implementation choices. ", "bbox": {"l": 136.80005, "t": 225.52625, "r": 246.82417, "b": 234.73925999999994, "coord_origin": "TOPLEFT"}}]}, "text": "Model building is done on Watson Studio, leveraging the high-performance computing hardware on IBM Z. You can train the model anywhere (on your own hardware or the cloud) and bring the model directly into CP4D, which provides data scientists with the flexibility of implementation choices."}, {"label": "text", "id": 4, "page_no": 29, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.91741943359375, "t": 246.65235900878906, "r": 547.21289, "b": 281.0306701660156, "coord_origin": "TOPLEFT"}, "confidence": 0.9854286313056946, "cells": [{"id": 15, "text": "We used LSTM to build the AI model and used the training data. The model was continuously ", "bbox": {"l": 136.80005, "t": 247.48602000000005, "r": 547.21289, "b": 256.69903999999997, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "evaluated to model convergence. The final model is tested with the test data, which is never ", "bbox": {"l": 136.80005, "t": 259.48584000000005, "r": 545.17395, "b": 268.69885, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "exposed at the time of training to make sure that the model works. ", "bbox": {"l": 136.80005, "t": 271.48566000000005, "r": 431.79333, "b": 280.69867, "coord_origin": "TOPLEFT"}}]}, "text": "We used LSTM to build the AI model and used the training data. The model was continuously evaluated to model convergence. The final model is tested with the test data, which is never exposed at the time of training to make sure that the model works."}, {"label": "text", "id": 5, "page_no": 29, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.88528442382812, "t": 292.6196594238281, "r": 547.30829, "b": 339.16351318359375, "coord_origin": "TOPLEFT"}, "confidence": 0.9867450594902039, "cells": [{"id": 18, "text": "This model is deployed on WML on CP4D and runs on IBM Z. If required, the trained model ", "bbox": {"l": 136.80005, "t": 293.50525, "r": 543.47888, "b": 302.71823, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "can be converted to the Open Neural Network Exchange (ONNX) format before deployment. ", "bbox": {"l": 136.80005, "t": 305.50507, "r": 547.30829, "b": 314.71804999999995, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Based on project requirements, IBM Z supports high-throughput, low latency inference ", "bbox": {"l": 136.80005, "t": 317.50488000000007, "r": 520.6048, "b": 326.71786, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "requirements by leveraging an AI accelerator.", "bbox": {"l": 136.80005, "t": 329.5047, "r": 338.49896, "b": 338.71768, "coord_origin": "TOPLEFT"}}]}, "text": "This model is deployed on WML on CP4D and runs on IBM Z. If required, the trained model can be converted to the Open Neural Network Exchange (ONNX) format before deployment. Based on project requirements, IBM Z supports high-throughput, low latency inference requirements by leveraging an AI accelerator."}, {"label": "text", "id": 6, "page_no": 29, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.9976348876953, "t": 350.63482666015625, "r": 547.28247, "b": 420.8690185546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9884775280952454, "cells": [{"id": 22, "text": "For decision-making about an aircraft engine\u2019s life, it is important to be able to explain the ", "bbox": {"l": 136.80005, "t": 351.52426, "r": 533.88434, "b": 360.73724, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "model predictions from end to end. This explainability may be global or local. Global ", "bbox": {"l": 136.80005, "t": 363.52408, "r": 509.4176, "b": 372.73706, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "explainability enables decision-makers to evaluate the trained model in general from the ", "bbox": {"l": 136.80005, "t": 375.52389999999997, "r": 527.95715, "b": 384.73688, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "subject matter expert (SME) point of view. Local explainability enables the operator to validate ", "bbox": {"l": 136.80005, "t": 387.52371, "r": 547.28247, "b": 396.73669, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "the reasons behind the present inference and relate it to the past data points, which are an ", "bbox": {"l": 136.80005, "t": 399.52353, "r": 539.53656, "b": 408.73651, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "indicative cause of the prediction. ", "bbox": {"l": 136.80005, "t": 411.52334999999994, "r": 287.38629, "b": 420.73633, "coord_origin": "TOPLEFT"}}]}, "text": "For decision-making about an aircraft engine\u2019s life, it is important to be able to explain the model predictions from end to end. This explainability may be global or local. Global explainability enables decision-makers to evaluate the trained model in general from the subject matter expert (SME) point of view. Local explainability enables the operator to validate the reasons behind the present inference and relate it to the past data points, which are an indicative cause of the prediction."}, {"label": "text", "id": 7, "page_no": 29, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.7574462890625, "t": 432.6813049316406, "r": 547.32422, "b": 478.8412170410156, "coord_origin": "TOPLEFT"}, "confidence": 0.9873866438865662, "cells": [{"id": 28, "text": "The AI governance components such as IBM OpenScale on CP4D support explainability and ", "bbox": {"l": 136.80005, "t": 433.48315, "r": 547.27649, "b": 442.69614, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "manages the drifts in data and concept. OpenPages and AI FactSheet together can alert the ", "bbox": {"l": 136.80005, "t": 445.48297, "r": 547.26263, "b": 454.69595, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "stakeholders about important events through a dashboard and allow course correction at any ", "bbox": {"l": 136.80005, "t": 457.48279, "r": 547.32422, "b": 466.69577, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "point. ", "bbox": {"l": 136.80005, "t": 469.4826, "r": 163.98486, "b": 478.69559, "coord_origin": "TOPLEFT"}}]}, "text": "The AI governance components such as IBM OpenScale on CP4D support explainability and manages the drifts in data and concept. OpenPages and AI FactSheet together can alert the stakeholders about important events through a dashboard and allow course correction at any point."}, {"label": "text", "id": 8, "page_no": 29, "cluster": {"id": 8, "label": "text", "bbox": {"l": 136.12620544433594, "t": 490.4873046875, "r": 547.27454, "b": 537.0437622070312, "coord_origin": "TOPLEFT"}, "confidence": 0.9881239533424377, "cells": [{"id": 32, "text": "Client-side applications can invoke a REST apiserver that handles some preprocessing of an ", "bbox": {"l": 136.80005, "t": 491.50217, "r": 547.27454, "b": 500.71515, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "incoming request before initiating the inference pipeline. Efficiencies might be needed in ", "bbox": {"l": 136.80005, "t": 503.50198, "r": 527.93903, "b": 512.71497, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "real-time applications, and inference response time can be reduced by adopting low-level ", "bbox": {"l": 136.80005, "t": 515.5018, "r": 533.50079, "b": 524.71478, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "programming while components are communicating.", "bbox": {"l": 136.80005, "t": 527.50162, "r": 368.46075, "b": 536.71461, "coord_origin": "TOPLEFT"}}]}, "text": "Client-side applications can invoke a REST apiserver that handles some preprocessing of an incoming request before initiating the inference pipeline. Efficiencies might be needed in real-time applications, and inference response time can be reduced by adopting low-level programming while components are communicating."}, {"label": "text", "id": 9, "page_no": 29, "cluster": {"id": 9, "label": "text", "bbox": {"l": 136.40904235839844, "t": 548.6136474609375, "r": 521.20435, "b": 570.9915771484375, "coord_origin": "TOPLEFT"}, "confidence": 0.9769964814186096, "cells": [{"id": 36, "text": "Figure 23 on page 29 provides a more in-depth view of the architecture of an AI-based ", "bbox": {"l": 136.80005, "t": 549.52118, "r": 521.20435, "b": 558.73418, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "predictive maintenance application. ", "bbox": {"l": 136.80005, "t": 561.52098, "r": 295.74277, "b": 570.73398, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 23 on page 29 provides a more in-depth view of the architecture of an AI-based predictive maintenance application."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 29, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.85002517700195, "t": 754.3954467773438, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9155879020690918, "cells": [{"id": 0, "text": "28 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "28"}, {"label": "page_footer", "id": 1, "page_no": 29, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.15624237060547, "t": 754.7210083007812, "r": 267.0744, "b": 764.1427612304688, "coord_origin": "TOPLEFT"}, "confidence": 0.9536111354827881, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}]}}, {"page_no": 30, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "29", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Figure 23 In-depth architectural view", "bbox": {"l": 64.800003, "t": 442.5779999999999, "r": 215.16300999999999, "b": 450.90302, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "In summary, consider the following points while developing an AI-based predictive ", "bbox": {"l": 136.8, "t": 464.56873, "r": 501.7642200000001, "b": 473.78171, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "maintenance application:", "bbox": {"l": 136.8, "t": 476.56854, "r": 247.38886999999997, "b": 485.78152, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "GLYPH", "bbox": {"l": 136.8, "t": 493.69772, "r": 141.78, "b": 502.4725, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "CP4D offers a Python run time to build a custom solution stack, but also supports different ", "bbox": {"l": 151.20016, "t": 493.54834, "r": 547.32031, "b": 502.76132, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "components like Watson Studio, WML, Db2, Data Refinery, OpenScale, AI Factsheets, ", "bbox": {"l": 151.20016, "t": 505.54816, "r": 537.88837, "b": 514.7611400000001, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "and OpenPages.", "bbox": {"l": 151.20016, "t": 517.5479700000001, "r": 226.26571999999996, "b": 526.7609600000001, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "GLYPH", "bbox": {"l": 136.8, "t": 534.67719, "r": 141.78, "b": 543.45193, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "The trustworthiness of the predicted output is important for critical use cases.", "bbox": {"l": 151.20016, "t": 534.5277699999999, "r": 491.3402699999999, "b": 543.74078, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "GLYPH", "bbox": {"l": 136.8, "t": 551.71675, "r": 141.78, "b": 560.4915, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "IBM Z provides high data security and low latency requirements at scale for the critical ", "bbox": {"l": 151.20016, "t": 551.56735, "r": 534.49988, "b": 560.78035, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "applications.", "bbox": {"l": 151.20016, "t": 563.56715, "r": 206.73216, "b": 572.78015, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 580.69637, "r": 141.78, "b": 589.47112, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "A data scientist can choose to train the model and deploy it on CP4D seamlessly with the ", "bbox": {"l": 151.20016, "t": 580.54697, "r": 547.2157, "b": 589.75996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "latest tech stack that is available.", "bbox": {"l": 151.20016, "t": 592.54677, "r": 297.4169, "b": 601.75977, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "GLYPH", "bbox": {"l": 136.8, "t": 609.67598, "r": 141.78, "b": 618.45073, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "The AIOps and MLOps supported by CP4D to track AI model and data lifecycle ", "bbox": {"l": 151.20016, "t": 609.52658, "r": 504.02917, "b": 618.7395799999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "throughout the application lifecycle.", "bbox": {"l": 151.20016, "t": 621.52638, "r": 307.32214, "b": 630.73938, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 535.4804077148438, "t": 754.2535400390625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9163533449172974, "cells": [{"id": 0, "text": "29", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "caption", "bbox": {"l": 64.29751586914062, "t": 442.3620300292969, "r": 216.1868438720703, "b": 451.6481628417969, "coord_origin": "TOPLEFT"}, "confidence": 0.9474461078643799, "cells": [{"id": 1, "text": "Figure 23 In-depth architectural view", "bbox": {"l": 64.800003, "t": 442.5779999999999, "r": 215.16300999999999, "b": 450.90302, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 136.26695251464844, "t": 464.0877685546875, "r": 501.7642200000001, "b": 485.9813537597656, "coord_origin": "TOPLEFT"}, "confidence": 0.9469272494316101, "cells": [{"id": 2, "text": "In summary, consider the following points while developing an AI-based predictive ", "bbox": {"l": 136.8, "t": 464.56873, "r": 501.7642200000001, "b": 473.78171, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "maintenance application:", "bbox": {"l": 136.8, "t": 476.56854, "r": 247.38886999999997, "b": 485.78152, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "list_item", "bbox": {"l": 135.49343872070312, "t": 492.5340576171875, "r": 547.32031, "b": 526.9137573242188, "coord_origin": "TOPLEFT"}, "confidence": 0.9813073873519897, "cells": [{"id": 4, "text": "GLYPH", "bbox": {"l": 136.8, "t": 493.69772, "r": 141.78, "b": 502.4725, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "CP4D offers a Python run time to build a custom solution stack, but also supports different ", "bbox": {"l": 151.20016, "t": 493.54834, "r": 547.32031, "b": 502.76132, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "components like Watson Studio, WML, Db2, Data Refinery, OpenScale, AI Factsheets, ", "bbox": {"l": 151.20016, "t": 505.54816, "r": 537.88837, "b": 514.7611400000001, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "and OpenPages.", "bbox": {"l": 151.20016, "t": 517.5479700000001, "r": 226.26571999999996, "b": 526.7609600000001, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 135.57691955566406, "t": 534.0592041015625, "r": 491.3402699999999, "b": 544.2946166992188, "coord_origin": "TOPLEFT"}, "confidence": 0.9524359107017517, "cells": [{"id": 8, "text": "GLYPH", "bbox": {"l": 136.8, "t": 534.67719, "r": 141.78, "b": 543.45193, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "The trustworthiness of the predicted output is important for critical use cases.", "bbox": {"l": 151.20016, "t": 534.5277699999999, "r": 491.3402699999999, "b": 543.74078, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 135.67471313476562, "t": 550.6901245117188, "r": 534.49988, "b": 572.9078979492188, "coord_origin": "TOPLEFT"}, "confidence": 0.9742523431777954, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.8, "t": 551.71675, "r": 141.78, "b": 560.4915, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "IBM Z provides high data security and low latency requirements at scale for the critical ", "bbox": {"l": 151.20016, "t": 551.56735, "r": 534.49988, "b": 560.78035, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "applications.", "bbox": {"l": 151.20016, "t": 563.56715, "r": 206.73216, "b": 572.78015, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.61285400390625, "t": 579.9425659179688, "r": 547.2157, "b": 601.75977, "coord_origin": "TOPLEFT"}, "confidence": 0.9732432961463928, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 580.69637, "r": 141.78, "b": 589.47112, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "A data scientist can choose to train the model and deploy it on CP4D seamlessly with the ", "bbox": {"l": 151.20016, "t": 580.54697, "r": 547.2157, "b": 589.75996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "latest tech stack that is available.", "bbox": {"l": 151.20016, "t": 592.54677, "r": 297.4169, "b": 601.75977, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.52349853515625, "t": 608.5234985351562, "r": 504.02917, "b": 631.1382446289062, "coord_origin": "TOPLEFT"}, "confidence": 0.976965069770813, "cells": [{"id": 16, "text": "GLYPH", "bbox": {"l": 136.8, "t": 609.67598, "r": 141.78, "b": 618.45073, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "The AIOps and MLOps supported by CP4D to track AI model and data lifecycle ", "bbox": {"l": 151.20016, "t": 609.52658, "r": 504.02917, "b": 618.7395799999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "throughout the application lifecycle.", "bbox": {"l": 151.20016, "t": 621.52638, "r": 307.32214, "b": 630.73938, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "picture", "bbox": {"l": 63.6925048828125, "t": 77.32726287841797, "r": 547.7992553710938, "b": 439.2281799316406, "coord_origin": "TOPLEFT"}, "confidence": 0.9841210246086121, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 30, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 535.4804077148438, "t": 754.2535400390625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9163533449172974, "cells": [{"id": 0, "text": "29", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "29"}, {"label": "caption", "id": 1, "page_no": 30, "cluster": {"id": 1, "label": "caption", "bbox": {"l": 64.29751586914062, "t": 442.3620300292969, "r": 216.1868438720703, "b": 451.6481628417969, "coord_origin": "TOPLEFT"}, "confidence": 0.9474461078643799, "cells": [{"id": 1, "text": "Figure 23 In-depth architectural view", "bbox": {"l": 64.800003, "t": 442.5779999999999, "r": 215.16300999999999, "b": 450.90302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 23 In-depth architectural view"}, {"label": "text", "id": 2, "page_no": 30, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.26695251464844, "t": 464.0877685546875, "r": 501.7642200000001, "b": 485.9813537597656, "coord_origin": "TOPLEFT"}, "confidence": 0.9469272494316101, "cells": [{"id": 2, "text": "In summary, consider the following points while developing an AI-based predictive ", "bbox": {"l": 136.8, "t": 464.56873, "r": 501.7642200000001, "b": 473.78171, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "maintenance application:", "bbox": {"l": 136.8, "t": 476.56854, "r": 247.38886999999997, "b": 485.78152, "coord_origin": "TOPLEFT"}}]}, "text": "In summary, consider the following points while developing an AI-based predictive maintenance application:"}, {"label": "list_item", "id": 3, "page_no": 30, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 135.49343872070312, "t": 492.5340576171875, "r": 547.32031, "b": 526.9137573242188, "coord_origin": "TOPLEFT"}, "confidence": 0.9813073873519897, "cells": [{"id": 4, "text": "GLYPH", "bbox": {"l": 136.8, "t": 493.69772, "r": 141.78, "b": 502.4725, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "CP4D offers a Python run time to build a custom solution stack, but also supports different ", "bbox": {"l": 151.20016, "t": 493.54834, "r": 547.32031, "b": 502.76132, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "components like Watson Studio, WML, Db2, Data Refinery, OpenScale, AI Factsheets, ", "bbox": {"l": 151.20016, "t": 505.54816, "r": 537.88837, "b": 514.7611400000001, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "and OpenPages.", "bbox": {"l": 151.20016, "t": 517.5479700000001, "r": 226.26571999999996, "b": 526.7609600000001, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH CP4D offers a Python run time to build a custom solution stack, but also supports different components like Watson Studio, WML, Db2, Data Refinery, OpenScale, AI Factsheets, and OpenPages."}, {"label": "list_item", "id": 4, "page_no": 30, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.57691955566406, "t": 534.0592041015625, "r": 491.3402699999999, "b": 544.2946166992188, "coord_origin": "TOPLEFT"}, "confidence": 0.9524359107017517, "cells": [{"id": 8, "text": "GLYPH", "bbox": {"l": 136.8, "t": 534.67719, "r": 141.78, "b": 543.45193, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "The trustworthiness of the predicted output is important for critical use cases.", "bbox": {"l": 151.20016, "t": 534.5277699999999, "r": 491.3402699999999, "b": 543.74078, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The trustworthiness of the predicted output is important for critical use cases."}, {"label": "list_item", "id": 5, "page_no": 30, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.67471313476562, "t": 550.6901245117188, "r": 534.49988, "b": 572.9078979492188, "coord_origin": "TOPLEFT"}, "confidence": 0.9742523431777954, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.8, "t": 551.71675, "r": 141.78, "b": 560.4915, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "IBM Z provides high data security and low latency requirements at scale for the critical ", "bbox": {"l": 151.20016, "t": 551.56735, "r": 534.49988, "b": 560.78035, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "applications.", "bbox": {"l": 151.20016, "t": 563.56715, "r": 206.73216, "b": 572.78015, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH IBM Z provides high data security and low latency requirements at scale for the critical applications."}, {"label": "list_item", "id": 6, "page_no": 30, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.61285400390625, "t": 579.9425659179688, "r": 547.2157, "b": 601.75977, "coord_origin": "TOPLEFT"}, "confidence": 0.9732432961463928, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 580.69637, "r": 141.78, "b": 589.47112, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "A data scientist can choose to train the model and deploy it on CP4D seamlessly with the ", "bbox": {"l": 151.20016, "t": 580.54697, "r": 547.2157, "b": 589.75996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "latest tech stack that is available.", "bbox": {"l": 151.20016, "t": 592.54677, "r": 297.4169, "b": 601.75977, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH A data scientist can choose to train the model and deploy it on CP4D seamlessly with the latest tech stack that is available."}, {"label": "list_item", "id": 7, "page_no": 30, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.52349853515625, "t": 608.5234985351562, "r": 504.02917, "b": 631.1382446289062, "coord_origin": "TOPLEFT"}, "confidence": 0.976965069770813, "cells": [{"id": 16, "text": "GLYPH", "bbox": {"l": 136.8, "t": 609.67598, "r": 141.78, "b": 618.45073, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "The AIOps and MLOps supported by CP4D to track AI model and data lifecycle ", "bbox": {"l": 151.20016, "t": 609.52658, "r": 504.02917, "b": 618.7395799999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "throughout the application lifecycle.", "bbox": {"l": 151.20016, "t": 621.52638, "r": 307.32214, "b": 630.73938, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The AIOps and MLOps supported by CP4D to track AI model and data lifecycle throughout the application lifecycle."}, {"label": "picture", "id": 8, "page_no": 30, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 63.6925048828125, "t": 77.32726287841797, "r": 547.7992553710938, "b": 439.2281799316406, "coord_origin": "TOPLEFT"}, "confidence": 0.9841210246086121, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "caption", "id": 1, "page_no": 30, "cluster": {"id": 1, "label": "caption", "bbox": {"l": 64.29751586914062, "t": 442.3620300292969, "r": 216.1868438720703, "b": 451.6481628417969, "coord_origin": "TOPLEFT"}, "confidence": 0.9474461078643799, "cells": [{"id": 1, "text": "Figure 23 In-depth architectural view", "bbox": {"l": 64.800003, "t": 442.5779999999999, "r": 215.16300999999999, "b": 450.90302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 23 In-depth architectural view"}, {"label": "text", "id": 2, "page_no": 30, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.26695251464844, "t": 464.0877685546875, "r": 501.7642200000001, "b": 485.9813537597656, "coord_origin": "TOPLEFT"}, "confidence": 0.9469272494316101, "cells": [{"id": 2, "text": "In summary, consider the following points while developing an AI-based predictive ", "bbox": {"l": 136.8, "t": 464.56873, "r": 501.7642200000001, "b": 473.78171, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "maintenance application:", "bbox": {"l": 136.8, "t": 476.56854, "r": 247.38886999999997, "b": 485.78152, "coord_origin": "TOPLEFT"}}]}, "text": "In summary, consider the following points while developing an AI-based predictive maintenance application:"}, {"label": "list_item", "id": 3, "page_no": 30, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 135.49343872070312, "t": 492.5340576171875, "r": 547.32031, "b": 526.9137573242188, "coord_origin": "TOPLEFT"}, "confidence": 0.9813073873519897, "cells": [{"id": 4, "text": "GLYPH", "bbox": {"l": 136.8, "t": 493.69772, "r": 141.78, "b": 502.4725, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "CP4D offers a Python run time to build a custom solution stack, but also supports different ", "bbox": {"l": 151.20016, "t": 493.54834, "r": 547.32031, "b": 502.76132, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "components like Watson Studio, WML, Db2, Data Refinery, OpenScale, AI Factsheets, ", "bbox": {"l": 151.20016, "t": 505.54816, "r": 537.88837, "b": 514.7611400000001, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "and OpenPages.", "bbox": {"l": 151.20016, "t": 517.5479700000001, "r": 226.26571999999996, "b": 526.7609600000001, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH CP4D offers a Python run time to build a custom solution stack, but also supports different components like Watson Studio, WML, Db2, Data Refinery, OpenScale, AI Factsheets, and OpenPages."}, {"label": "list_item", "id": 4, "page_no": 30, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.57691955566406, "t": 534.0592041015625, "r": 491.3402699999999, "b": 544.2946166992188, "coord_origin": "TOPLEFT"}, "confidence": 0.9524359107017517, "cells": [{"id": 8, "text": "GLYPH", "bbox": {"l": 136.8, "t": 534.67719, "r": 141.78, "b": 543.45193, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "The trustworthiness of the predicted output is important for critical use cases.", "bbox": {"l": 151.20016, "t": 534.5277699999999, "r": 491.3402699999999, "b": 543.74078, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The trustworthiness of the predicted output is important for critical use cases."}, {"label": "list_item", "id": 5, "page_no": 30, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.67471313476562, "t": 550.6901245117188, "r": 534.49988, "b": 572.9078979492188, "coord_origin": "TOPLEFT"}, "confidence": 0.9742523431777954, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.8, "t": 551.71675, "r": 141.78, "b": 560.4915, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "IBM Z provides high data security and low latency requirements at scale for the critical ", "bbox": {"l": 151.20016, "t": 551.56735, "r": 534.49988, "b": 560.78035, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "applications.", "bbox": {"l": 151.20016, "t": 563.56715, "r": 206.73216, "b": 572.78015, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH IBM Z provides high data security and low latency requirements at scale for the critical applications."}, {"label": "list_item", "id": 6, "page_no": 30, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.61285400390625, "t": 579.9425659179688, "r": 547.2157, "b": 601.75977, "coord_origin": "TOPLEFT"}, "confidence": 0.9732432961463928, "cells": [{"id": 13, "text": "GLYPH", "bbox": {"l": 136.8, "t": 580.69637, "r": 141.78, "b": 589.47112, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "A data scientist can choose to train the model and deploy it on CP4D seamlessly with the ", "bbox": {"l": 151.20016, "t": 580.54697, "r": 547.2157, "b": 589.75996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "latest tech stack that is available.", "bbox": {"l": 151.20016, "t": 592.54677, "r": 297.4169, "b": 601.75977, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH A data scientist can choose to train the model and deploy it on CP4D seamlessly with the latest tech stack that is available."}, {"label": "list_item", "id": 7, "page_no": 30, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.52349853515625, "t": 608.5234985351562, "r": 504.02917, "b": 631.1382446289062, "coord_origin": "TOPLEFT"}, "confidence": 0.976965069770813, "cells": [{"id": 16, "text": "GLYPH", "bbox": {"l": 136.8, "t": 609.67598, "r": 141.78, "b": 618.45073, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "The AIOps and MLOps supported by CP4D to track AI model and data lifecycle ", "bbox": {"l": 151.20016, "t": 609.52658, "r": 504.02917, "b": 618.7395799999999, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "throughout the application lifecycle.", "bbox": {"l": 151.20016, "t": 621.52638, "r": 307.32214, "b": 630.73938, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The AIOps and MLOps supported by CP4D to track AI model and data lifecycle throughout the application lifecycle."}, {"label": "picture", "id": 8, "page_no": 30, "cluster": {"id": 8, "label": "picture", "bbox": {"l": 63.6925048828125, "t": 77.32726287841797, "r": 547.7992553710938, "b": 439.2281799316406, "coord_origin": "TOPLEFT"}, "confidence": 0.9841210246086121, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 0, "page_no": 30, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 535.4804077148438, "t": 754.2535400390625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9163533449172974, "cells": [{"id": 0, "text": "29", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "29"}]}}, {"page_no": 31, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "30 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Use case 5: AI-powered video analytics on an infant\u2019s motions ", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 542.2594, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "for health prediction", "bbox": {"l": 64.800003, "t": 90.18120999999985, "r": 219.41090000000003, "b": 104.94421, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Each year, approximately 5 million newborns worldwide are suffering from a ", "bbox": {"l": 136.8, "t": 122.50867000000005, "r": 474.4818399999999, "b": 131.72168, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "neuro-developmental disorder. Due to the lack of early diagnoses and intervention, many ", "bbox": {"l": 136.79999, "t": 134.50847999999996, "r": 532.30072, "b": 143.7215, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "infants are disabled and abandoned, especially in countries with limited numbers of ", "bbox": {"l": 136.8, "t": 146.50829999999996, "r": 506.92267000000004, "b": 155.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "pediatricians with extensive experience in neuro-developmental disorders. This situation is a ", "bbox": {"l": 136.8, "t": 158.50811999999996, "r": 546.69891, "b": 167.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "conundrum that plagues many families around the world.", "bbox": {"l": 136.8, "t": 170.50793, "r": 387.98224, "b": 179.72095000000002, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Infant motion analysis plays critical importance to understanding and comprehending healthy ", "bbox": {"l": 136.8, "t": 192.52752999999996, "r": 547.31219, "b": 201.74054, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "childhood development. In infants, monitoring their poses provides information about their ", "bbox": {"l": 136.8, "t": 204.52733999999998, "r": 535.15521, "b": 213.74036, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "health that can lead to a better prediction of early developmental risk assessment and ", "bbox": {"l": 136.8, "t": 216.52715999999998, "r": 517.90442, "b": 225.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "diagnosis. ", "bbox": {"l": 136.79999, "t": 228.52697999999998, "r": 184.63986, "b": 237.73999000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "Adults use different techniques and methods to express their feelings (like sick, happy, ", "bbox": {"l": 136.79999, "t": 250.48676, "r": 521.8656, "b": 259.69976999999994, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "stressed, or hungry), but this case is usually different for infants who cannot express their ", "bbox": {"l": 136.79997, "t": 262.48657000000003, "r": 533.34436, "b": 271.69957999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "feelings. Based on the baby movements, AI can predict their expression or health.", "bbox": {"l": 136.79997, "t": 274.48639000000003, "r": 499.15466, "b": 283.6994, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "In this use case, we examine how AI-powered video analytics can assist new parents and ", "bbox": {"l": 136.79997, "t": 296.50598, "r": 535.13025, "b": 305.7189599999999, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "hospitals by addressing pose-based real-time body movements of the infants (such as ", "bbox": {"l": 136.79997, "t": 308.5058, "r": 520.1662, "b": 317.71878000000004, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "arching back, head banging, kicking legs, rubbing eyes, stretching, and sucking fingers). ", "bbox": {"l": 136.79997, "t": 320.50562, "r": 529.04352, "b": 329.7186, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "During the initial months of a baby\u2019s life, spontaneous movements might indicate later ", "bbox": {"l": 136.79997, "t": 332.50543, "r": 517.4234, "b": 341.71841, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "developmental disorders, such as cerebral palsy, Rett syndrome, and autism spectrum ", "bbox": {"l": 136.79997, "t": 344.50525, "r": 522.46307, "b": 353.71823, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "disorders.", "bbox": {"l": 136.79997, "t": 356.50507, "r": 180.66779, "b": 365.71804999999995, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Industry challenges", "bbox": {"l": 64.800003, "t": 386.33475, "r": 186.7186, "b": 398.32272, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "There are video surveillance systems that are installed for monitoring an infant\u2019s movement in ", "bbox": {"l": 136.8, "t": 412.48874, "r": 547.20087, "b": 421.70172, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "many hospitals or homes so that any problem can be witnessed and potentially even stopped ", "bbox": {"l": 136.80002, "t": 424.48856, "r": 547.2226, "b": 433.70154, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "before they take place. These systems require much manual work to monitor the real-stream ", "bbox": {"l": 136.80002, "t": 436.48837000000003, "r": 547.25763, "b": 445.70135, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "videos and intervene when a problem is detected. ", "bbox": {"l": 136.80002, "t": 448.48819, "r": 359.689, "b": 457.70117, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "There is a certain amount of trust that you must place on the person who monitors a ", "bbox": {"l": 136.80002, "t": 470.50775, "r": 510.17957, "b": 479.72073, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "surveillance system to ensure that the job is being done effectively and efficiently, and that the ", "bbox": {"l": 136.80002, "t": 482.50757, "r": 547.27753, "b": 491.72055, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "surveillance system is being vigilantly watched. Because of the dependency on these manual ", "bbox": {"l": 136.80002, "t": 494.50739, "r": 547.22272, "b": 503.72037, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "efforts, you need something \u201csmart\u201d that monitors constantly the surveillance system and ", "bbox": {"l": 136.79999, "t": 506.5072, "r": 531.67511, "b": 515.72018, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "detect problems effectively. ", "bbox": {"l": 136.80096, "t": 518.50702, "r": 260.62772, "b": 527.72, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "AI is shaping the controls of surveillance that can map and track occurrences with ", "bbox": {"l": 136.80096, "t": 540.52658, "r": 500.10587, "b": 549.7395799999999, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "self-learning abilities, AI can improve on human operations and analyze video footage in real ", "bbox": {"l": 136.80095, "t": 552.52638, "r": 547.23859, "b": 561.73938, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "time to alert the hospitals or parents if any anomalies are identified.", "bbox": {"l": 136.79994, "t": 564.5261800000001, "r": 433.53322999999995, "b": 573.73918, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "Video processing a stream of data from surveillance systems and then performing advance ", "bbox": {"l": 136.79994, "t": 586.54575, "r": 541.76654, "b": 595.75874, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "analytics and detecting anomalies quickly is a significant challenge in the industry.", "bbox": {"l": 136.79993, "t": 598.5455499999999, "r": 499.08203, "b": 607.75854, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "Infant motion analytics in real time", "bbox": {"l": 64.800003, "t": 628.37462, "r": 278.44431, "b": 640.36263, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "AI is the current \u201cmarket trend evolution\u201d in video analytics and advancing the ", "bbox": {"l": 136.8, "t": 654.52872, "r": 481.38613999999995, "b": 663.74171, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "decision-making capabilities of the human mind. DL-based computer vision AI techniques are ", "bbox": {"l": 136.8, "t": 666.5285200000001, "r": 547.22571, "b": 675.74152, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "being widely adopted by various industries to solve real-time problems. These techniques ", "bbox": {"l": 136.80002, "t": 678.52833, "r": 534.54663, "b": 687.7413300000001, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "improve the detection and prediction accuracy without increasing the hardware cost ", "bbox": {"l": 136.8, "t": 690.52814, "r": 508.5957599999999, "b": 699.741142, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "exponentially. For users, AI greatly reduces the workload of the monitoring staff and provides ", "bbox": {"l": 136.8, "t": 702.5279459999999, "r": 547.14087, "b": 711.740952, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "benefits by detecting unusual incidents and solving many video forensic problems. ", "bbox": {"l": 136.8, "t": 714.527756, "r": 502.9895, "b": 723.740761, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.11967468261719, "t": 754.4208984375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9230456948280334, "cells": [{"id": 0, "text": "30 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.19580841064453, "t": 754.7359008789062, "r": 267.0744, "b": 764.1449584960938, "coord_origin": "TOPLEFT"}, "confidence": 0.956289529800415, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.292236328125, "t": 70.0931625366211, "r": 542.2594, "b": 105.00391387939453, "coord_origin": "TOPLEFT"}, "confidence": 0.9470060467720032, "cells": [{"id": 2, "text": "Use case 5: AI-powered video analytics on an infant\u2019s motions ", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 542.2594, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "for health prediction", "bbox": {"l": 64.800003, "t": 90.18120999999985, "r": 219.41090000000003, "b": 104.94421, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 136.04208374023438, "t": 121.13082122802734, "r": 546.69891, "b": 179.73699951171875, "coord_origin": "TOPLEFT"}, "confidence": 0.9872261881828308, "cells": [{"id": 4, "text": "Each year, approximately 5 million newborns worldwide are suffering from a ", "bbox": {"l": 136.8, "t": 122.50867000000005, "r": 474.4818399999999, "b": 131.72168, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "neuro-developmental disorder. Due to the lack of early diagnoses and intervention, many ", "bbox": {"l": 136.79999, "t": 134.50847999999996, "r": 532.30072, "b": 143.7215, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "infants are disabled and abandoned, especially in countries with limited numbers of ", "bbox": {"l": 136.8, "t": 146.50829999999996, "r": 506.92267000000004, "b": 155.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "pediatricians with extensive experience in neuro-developmental disorders. This situation is a ", "bbox": {"l": 136.8, "t": 158.50811999999996, "r": 546.69891, "b": 167.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "conundrum that plagues many families around the world.", "bbox": {"l": 136.8, "t": 170.50793, "r": 387.98224, "b": 179.72095000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.93234252929688, "t": 191.948974609375, "r": 547.31219, "b": 238.30877685546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9872615337371826, "cells": [{"id": 9, "text": "Infant motion analysis plays critical importance to understanding and comprehending healthy ", "bbox": {"l": 136.8, "t": 192.52752999999996, "r": 547.31219, "b": 201.74054, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "childhood development. In infants, monitoring their poses provides information about their ", "bbox": {"l": 136.8, "t": 204.52733999999998, "r": 535.15521, "b": 213.74036, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "health that can lead to a better prediction of early developmental risk assessment and ", "bbox": {"l": 136.8, "t": 216.52715999999998, "r": 517.90442, "b": 225.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "diagnosis. ", "bbox": {"l": 136.79999, "t": 228.52697999999998, "r": 184.63986, "b": 237.73999000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.01303100585938, "t": 249.5870361328125, "r": 533.34436, "b": 283.6994, "coord_origin": "TOPLEFT"}, "confidence": 0.9848974347114563, "cells": [{"id": 13, "text": "Adults use different techniques and methods to express their feelings (like sick, happy, ", "bbox": {"l": 136.79999, "t": 250.48676, "r": 521.8656, "b": 259.69976999999994, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "stressed, or hungry), but this case is usually different for infants who cannot express their ", "bbox": {"l": 136.79997, "t": 262.48657000000003, "r": 533.34436, "b": 271.69957999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "feelings. Based on the baby movements, AI can predict their expression or health.", "bbox": {"l": 136.79997, "t": 274.48639000000003, "r": 499.15466, "b": 283.6994, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 135.85812377929688, "t": 295.5922546386719, "r": 535.13025, "b": 365.71804999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9812631607055664, "cells": [{"id": 16, "text": "In this use case, we examine how AI-powered video analytics can assist new parents and ", "bbox": {"l": 136.79997, "t": 296.50598, "r": 535.13025, "b": 305.7189599999999, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "hospitals by addressing pose-based real-time body movements of the infants (such as ", "bbox": {"l": 136.79997, "t": 308.5058, "r": 520.1662, "b": 317.71878000000004, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "arching back, head banging, kicking legs, rubbing eyes, stretching, and sucking fingers). ", "bbox": {"l": 136.79997, "t": 320.50562, "r": 529.04352, "b": 329.7186, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "During the initial months of a baby\u2019s life, spontaneous movements might indicate later ", "bbox": {"l": 136.79997, "t": 332.50543, "r": 517.4234, "b": 341.71841, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "developmental disorders, such as cerebral palsy, Rett syndrome, and autism spectrum ", "bbox": {"l": 136.79997, "t": 344.50525, "r": 522.46307, "b": 353.71823, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "disorders.", "bbox": {"l": 136.79997, "t": 356.50507, "r": 180.66779, "b": 365.71804999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "section_header", "bbox": {"l": 64.58500671386719, "t": 385.20379638671875, "r": 186.7186, "b": 398.5070495605469, "coord_origin": "TOPLEFT"}, "confidence": 0.9640207886695862, "cells": [{"id": 22, "text": "Industry challenges", "bbox": {"l": 64.800003, "t": 386.33475, "r": 186.7186, "b": 398.32272, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 135.78916931152344, "t": 411.3067932128906, "r": 547.25763, "b": 457.70117, "coord_origin": "TOPLEFT"}, "confidence": 0.9876371622085571, "cells": [{"id": 23, "text": "There are video surveillance systems that are installed for monitoring an infant\u2019s movement in ", "bbox": {"l": 136.8, "t": 412.48874, "r": 547.20087, "b": 421.70172, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "many hospitals or homes so that any problem can be witnessed and potentially even stopped ", "bbox": {"l": 136.80002, "t": 424.48856, "r": 547.2226, "b": 433.70154, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "before they take place. These systems require much manual work to monitor the real-stream ", "bbox": {"l": 136.80002, "t": 436.48837000000003, "r": 547.25763, "b": 445.70135, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "videos and intervene when a problem is detected. ", "bbox": {"l": 136.80002, "t": 448.48819, "r": 359.689, "b": 457.70117, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 135.95849609375, "t": 469.4918212890625, "r": 547.27753, "b": 527.93310546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9885361194610596, "cells": [{"id": 27, "text": "There is a certain amount of trust that you must place on the person who monitors a ", "bbox": {"l": 136.80002, "t": 470.50775, "r": 510.17957, "b": 479.72073, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "surveillance system to ensure that the job is being done effectively and efficiently, and that the ", "bbox": {"l": 136.80002, "t": 482.50757, "r": 547.27753, "b": 491.72055, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "surveillance system is being vigilantly watched. Because of the dependency on these manual ", "bbox": {"l": 136.80002, "t": 494.50739, "r": 547.22272, "b": 503.72037, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "efforts, you need something \u201csmart\u201d that monitors constantly the surveillance system and ", "bbox": {"l": 136.79999, "t": 506.5072, "r": 531.67511, "b": 515.72018, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "detect problems effectively. ", "bbox": {"l": 136.80096, "t": 518.50702, "r": 260.62772, "b": 527.72, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 135.81661987304688, "t": 540.0313110351562, "r": 547.23859, "b": 573.9750366210938, "coord_origin": "TOPLEFT"}, "confidence": 0.9842253923416138, "cells": [{"id": 32, "text": "AI is shaping the controls of surveillance that can map and track occurrences with ", "bbox": {"l": 136.80096, "t": 540.52658, "r": 500.10587, "b": 549.7395799999999, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "self-learning abilities, AI can improve on human operations and analyze video footage in real ", "bbox": {"l": 136.80095, "t": 552.52638, "r": 547.23859, "b": 561.73938, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "time to alert the hospitals or parents if any anomalies are identified.", "bbox": {"l": 136.79994, "t": 564.5261800000001, "r": 433.53322999999995, "b": 573.73918, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 136.16104125976562, "t": 586.1128540039062, "r": 541.76654, "b": 608.531982421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9799899458885193, "cells": [{"id": 35, "text": "Video processing a stream of data from surveillance systems and then performing advance ", "bbox": {"l": 136.79994, "t": 586.54575, "r": 541.76654, "b": 595.75874, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "analytics and detecting anomalies quickly is a significant challenge in the industry.", "bbox": {"l": 136.79993, "t": 598.5455499999999, "r": 499.08203, "b": 607.75854, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "section_header", "bbox": {"l": 64.49705505371094, "t": 627.67138671875, "r": 278.44431, "b": 641.0259399414062, "coord_origin": "TOPLEFT"}, "confidence": 0.961360514163971, "cells": [{"id": 37, "text": "Infant motion analytics in real time", "bbox": {"l": 64.800003, "t": 628.37462, "r": 278.44431, "b": 640.36263, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 135.9631805419922, "t": 654.0413208007812, "r": 547.22571, "b": 724.17529296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9874605536460876, "cells": [{"id": 38, "text": "AI is the current \u201cmarket trend evolution\u201d in video analytics and advancing the ", "bbox": {"l": 136.8, "t": 654.52872, "r": 481.38613999999995, "b": 663.74171, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "decision-making capabilities of the human mind. DL-based computer vision AI techniques are ", "bbox": {"l": 136.8, "t": 666.5285200000001, "r": 547.22571, "b": 675.74152, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "being widely adopted by various industries to solve real-time problems. These techniques ", "bbox": {"l": 136.80002, "t": 678.52833, "r": 534.54663, "b": 687.7413300000001, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "improve the detection and prediction accuracy without increasing the hardware cost ", "bbox": {"l": 136.8, "t": 690.52814, "r": 508.5957599999999, "b": 699.741142, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "exponentially. For users, AI greatly reduces the workload of the monitoring staff and provides ", "bbox": {"l": 136.8, "t": 702.5279459999999, "r": 547.14087, "b": 711.740952, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "benefits by detecting unusual incidents and solving many video forensic problems. ", "bbox": {"l": 136.8, "t": 714.527756, "r": 502.9895, "b": 723.740761, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 31, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.11967468261719, "t": 754.4208984375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9230456948280334, "cells": [{"id": 0, "text": "30 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "30"}, {"label": "page_footer", "id": 1, "page_no": 31, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.19580841064453, "t": 754.7359008789062, "r": 267.0744, "b": 764.1449584960938, "coord_origin": "TOPLEFT"}, "confidence": 0.956289529800415, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"label": "section_header", "id": 2, "page_no": 31, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.292236328125, "t": 70.0931625366211, "r": 542.2594, "b": 105.00391387939453, "coord_origin": "TOPLEFT"}, "confidence": 0.9470060467720032, "cells": [{"id": 2, "text": "Use case 5: AI-powered video analytics on an infant\u2019s motions ", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 542.2594, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "for health prediction", "bbox": {"l": 64.800003, "t": 90.18120999999985, "r": 219.41090000000003, "b": 104.94421, "coord_origin": "TOPLEFT"}}]}, "text": "Use case 5: AI-powered video analytics on an infant\u2019s motions for health prediction"}, {"label": "text", "id": 3, "page_no": 31, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.04208374023438, "t": 121.13082122802734, "r": 546.69891, "b": 179.73699951171875, "coord_origin": "TOPLEFT"}, "confidence": 0.9872261881828308, "cells": [{"id": 4, "text": "Each year, approximately 5 million newborns worldwide are suffering from a ", "bbox": {"l": 136.8, "t": 122.50867000000005, "r": 474.4818399999999, "b": 131.72168, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "neuro-developmental disorder. Due to the lack of early diagnoses and intervention, many ", "bbox": {"l": 136.79999, "t": 134.50847999999996, "r": 532.30072, "b": 143.7215, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "infants are disabled and abandoned, especially in countries with limited numbers of ", "bbox": {"l": 136.8, "t": 146.50829999999996, "r": 506.92267000000004, "b": 155.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "pediatricians with extensive experience in neuro-developmental disorders. This situation is a ", "bbox": {"l": 136.8, "t": 158.50811999999996, "r": 546.69891, "b": 167.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "conundrum that plagues many families around the world.", "bbox": {"l": 136.8, "t": 170.50793, "r": 387.98224, "b": 179.72095000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Each year, approximately 5 million newborns worldwide are suffering from a neuro-developmental disorder. Due to the lack of early diagnoses and intervention, many infants are disabled and abandoned, especially in countries with limited numbers of pediatricians with extensive experience in neuro-developmental disorders. This situation is a conundrum that plagues many families around the world."}, {"label": "text", "id": 4, "page_no": 31, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.93234252929688, "t": 191.948974609375, "r": 547.31219, "b": 238.30877685546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9872615337371826, "cells": [{"id": 9, "text": "Infant motion analysis plays critical importance to understanding and comprehending healthy ", "bbox": {"l": 136.8, "t": 192.52752999999996, "r": 547.31219, "b": 201.74054, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "childhood development. In infants, monitoring their poses provides information about their ", "bbox": {"l": 136.8, "t": 204.52733999999998, "r": 535.15521, "b": 213.74036, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "health that can lead to a better prediction of early developmental risk assessment and ", "bbox": {"l": 136.8, "t": 216.52715999999998, "r": 517.90442, "b": 225.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "diagnosis. ", "bbox": {"l": 136.79999, "t": 228.52697999999998, "r": 184.63986, "b": 237.73999000000003, "coord_origin": "TOPLEFT"}}]}, "text": "Infant motion analysis plays critical importance to understanding and comprehending healthy childhood development. In infants, monitoring their poses provides information about their health that can lead to a better prediction of early developmental risk assessment and diagnosis."}, {"label": "text", "id": 5, "page_no": 31, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.01303100585938, "t": 249.5870361328125, "r": 533.34436, "b": 283.6994, "coord_origin": "TOPLEFT"}, "confidence": 0.9848974347114563, "cells": [{"id": 13, "text": "Adults use different techniques and methods to express their feelings (like sick, happy, ", "bbox": {"l": 136.79999, "t": 250.48676, "r": 521.8656, "b": 259.69976999999994, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "stressed, or hungry), but this case is usually different for infants who cannot express their ", "bbox": {"l": 136.79997, "t": 262.48657000000003, "r": 533.34436, "b": 271.69957999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "feelings. Based on the baby movements, AI can predict their expression or health.", "bbox": {"l": 136.79997, "t": 274.48639000000003, "r": 499.15466, "b": 283.6994, "coord_origin": "TOPLEFT"}}]}, "text": "Adults use different techniques and methods to express their feelings (like sick, happy, stressed, or hungry), but this case is usually different for infants who cannot express their feelings. Based on the baby movements, AI can predict their expression or health."}, {"label": "text", "id": 6, "page_no": 31, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.85812377929688, "t": 295.5922546386719, "r": 535.13025, "b": 365.71804999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9812631607055664, "cells": [{"id": 16, "text": "In this use case, we examine how AI-powered video analytics can assist new parents and ", "bbox": {"l": 136.79997, "t": 296.50598, "r": 535.13025, "b": 305.7189599999999, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "hospitals by addressing pose-based real-time body movements of the infants (such as ", "bbox": {"l": 136.79997, "t": 308.5058, "r": 520.1662, "b": 317.71878000000004, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "arching back, head banging, kicking legs, rubbing eyes, stretching, and sucking fingers). ", "bbox": {"l": 136.79997, "t": 320.50562, "r": 529.04352, "b": 329.7186, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "During the initial months of a baby\u2019s life, spontaneous movements might indicate later ", "bbox": {"l": 136.79997, "t": 332.50543, "r": 517.4234, "b": 341.71841, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "developmental disorders, such as cerebral palsy, Rett syndrome, and autism spectrum ", "bbox": {"l": 136.79997, "t": 344.50525, "r": 522.46307, "b": 353.71823, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "disorders.", "bbox": {"l": 136.79997, "t": 356.50507, "r": 180.66779, "b": 365.71804999999995, "coord_origin": "TOPLEFT"}}]}, "text": "In this use case, we examine how AI-powered video analytics can assist new parents and hospitals by addressing pose-based real-time body movements of the infants (such as arching back, head banging, kicking legs, rubbing eyes, stretching, and sucking fingers). During the initial months of a baby\u2019s life, spontaneous movements might indicate later developmental disorders, such as cerebral palsy, Rett syndrome, and autism spectrum disorders."}, {"label": "section_header", "id": 7, "page_no": 31, "cluster": {"id": 7, "label": "section_header", "bbox": {"l": 64.58500671386719, "t": 385.20379638671875, "r": 186.7186, "b": 398.5070495605469, "coord_origin": "TOPLEFT"}, "confidence": 0.9640207886695862, "cells": [{"id": 22, "text": "Industry challenges", "bbox": {"l": 64.800003, "t": 386.33475, "r": 186.7186, "b": 398.32272, "coord_origin": "TOPLEFT"}}]}, "text": "Industry challenges"}, {"label": "text", "id": 8, "page_no": 31, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.78916931152344, "t": 411.3067932128906, "r": 547.25763, "b": 457.70117, "coord_origin": "TOPLEFT"}, "confidence": 0.9876371622085571, "cells": [{"id": 23, "text": "There are video surveillance systems that are installed for monitoring an infant\u2019s movement in ", "bbox": {"l": 136.8, "t": 412.48874, "r": 547.20087, "b": 421.70172, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "many hospitals or homes so that any problem can be witnessed and potentially even stopped ", "bbox": {"l": 136.80002, "t": 424.48856, "r": 547.2226, "b": 433.70154, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "before they take place. These systems require much manual work to monitor the real-stream ", "bbox": {"l": 136.80002, "t": 436.48837000000003, "r": 547.25763, "b": 445.70135, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "videos and intervene when a problem is detected. ", "bbox": {"l": 136.80002, "t": 448.48819, "r": 359.689, "b": 457.70117, "coord_origin": "TOPLEFT"}}]}, "text": "There are video surveillance systems that are installed for monitoring an infant\u2019s movement in many hospitals or homes so that any problem can be witnessed and potentially even stopped before they take place. These systems require much manual work to monitor the real-stream videos and intervene when a problem is detected."}, {"label": "text", "id": 9, "page_no": 31, "cluster": {"id": 9, "label": "text", "bbox": {"l": 135.95849609375, "t": 469.4918212890625, "r": 547.27753, "b": 527.93310546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9885361194610596, "cells": [{"id": 27, "text": "There is a certain amount of trust that you must place on the person who monitors a ", "bbox": {"l": 136.80002, "t": 470.50775, "r": 510.17957, "b": 479.72073, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "surveillance system to ensure that the job is being done effectively and efficiently, and that the ", "bbox": {"l": 136.80002, "t": 482.50757, "r": 547.27753, "b": 491.72055, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "surveillance system is being vigilantly watched. Because of the dependency on these manual ", "bbox": {"l": 136.80002, "t": 494.50739, "r": 547.22272, "b": 503.72037, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "efforts, you need something \u201csmart\u201d that monitors constantly the surveillance system and ", "bbox": {"l": 136.79999, "t": 506.5072, "r": 531.67511, "b": 515.72018, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "detect problems effectively. ", "bbox": {"l": 136.80096, "t": 518.50702, "r": 260.62772, "b": 527.72, "coord_origin": "TOPLEFT"}}]}, "text": "There is a certain amount of trust that you must place on the person who monitors a surveillance system to ensure that the job is being done effectively and efficiently, and that the surveillance system is being vigilantly watched. Because of the dependency on these manual efforts, you need something \u201csmart\u201d that monitors constantly the surveillance system and detect problems effectively."}, {"label": "text", "id": 10, "page_no": 31, "cluster": {"id": 10, "label": "text", "bbox": {"l": 135.81661987304688, "t": 540.0313110351562, "r": 547.23859, "b": 573.9750366210938, "coord_origin": "TOPLEFT"}, "confidence": 0.9842253923416138, "cells": [{"id": 32, "text": "AI is shaping the controls of surveillance that can map and track occurrences with ", "bbox": {"l": 136.80096, "t": 540.52658, "r": 500.10587, "b": 549.7395799999999, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "self-learning abilities, AI can improve on human operations and analyze video footage in real ", "bbox": {"l": 136.80095, "t": 552.52638, "r": 547.23859, "b": 561.73938, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "time to alert the hospitals or parents if any anomalies are identified.", "bbox": {"l": 136.79994, "t": 564.5261800000001, "r": 433.53322999999995, "b": 573.73918, "coord_origin": "TOPLEFT"}}]}, "text": "AI is shaping the controls of surveillance that can map and track occurrences with self-learning abilities, AI can improve on human operations and analyze video footage in real time to alert the hospitals or parents if any anomalies are identified."}, {"label": "text", "id": 11, "page_no": 31, "cluster": {"id": 11, "label": "text", "bbox": {"l": 136.16104125976562, "t": 586.1128540039062, "r": 541.76654, "b": 608.531982421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9799899458885193, "cells": [{"id": 35, "text": "Video processing a stream of data from surveillance systems and then performing advance ", "bbox": {"l": 136.79994, "t": 586.54575, "r": 541.76654, "b": 595.75874, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "analytics and detecting anomalies quickly is a significant challenge in the industry.", "bbox": {"l": 136.79993, "t": 598.5455499999999, "r": 499.08203, "b": 607.75854, "coord_origin": "TOPLEFT"}}]}, "text": "Video processing a stream of data from surveillance systems and then performing advance analytics and detecting anomalies quickly is a significant challenge in the industry."}, {"label": "section_header", "id": 12, "page_no": 31, "cluster": {"id": 12, "label": "section_header", "bbox": {"l": 64.49705505371094, "t": 627.67138671875, "r": 278.44431, "b": 641.0259399414062, "coord_origin": "TOPLEFT"}, "confidence": 0.961360514163971, "cells": [{"id": 37, "text": "Infant motion analytics in real time", "bbox": {"l": 64.800003, "t": 628.37462, "r": 278.44431, "b": 640.36263, "coord_origin": "TOPLEFT"}}]}, "text": "Infant motion analytics in real time"}, {"label": "text", "id": 13, "page_no": 31, "cluster": {"id": 13, "label": "text", "bbox": {"l": 135.9631805419922, "t": 654.0413208007812, "r": 547.22571, "b": 724.17529296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9874605536460876, "cells": [{"id": 38, "text": "AI is the current \u201cmarket trend evolution\u201d in video analytics and advancing the ", "bbox": {"l": 136.8, "t": 654.52872, "r": 481.38613999999995, "b": 663.74171, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "decision-making capabilities of the human mind. DL-based computer vision AI techniques are ", "bbox": {"l": 136.8, "t": 666.5285200000001, "r": 547.22571, "b": 675.74152, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "being widely adopted by various industries to solve real-time problems. These techniques ", "bbox": {"l": 136.80002, "t": 678.52833, "r": 534.54663, "b": 687.7413300000001, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "improve the detection and prediction accuracy without increasing the hardware cost ", "bbox": {"l": 136.8, "t": 690.52814, "r": 508.5957599999999, "b": 699.741142, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "exponentially. For users, AI greatly reduces the workload of the monitoring staff and provides ", "bbox": {"l": 136.8, "t": 702.5279459999999, "r": 547.14087, "b": 711.740952, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "benefits by detecting unusual incidents and solving many video forensic problems. ", "bbox": {"l": 136.8, "t": 714.527756, "r": 502.9895, "b": 723.740761, "coord_origin": "TOPLEFT"}}]}, "text": "AI is the current \u201cmarket trend evolution\u201d in video analytics and advancing the decision-making capabilities of the human mind. DL-based computer vision AI techniques are being widely adopted by various industries to solve real-time problems. These techniques improve the detection and prediction accuracy without increasing the hardware cost exponentially. For users, AI greatly reduces the workload of the monitoring staff and provides benefits by detecting unusual incidents and solving many video forensic problems."}], "body": [{"label": "section_header", "id": 2, "page_no": 31, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.292236328125, "t": 70.0931625366211, "r": 542.2594, "b": 105.00391387939453, "coord_origin": "TOPLEFT"}, "confidence": 0.9470060467720032, "cells": [{"id": 2, "text": "Use case 5: AI-powered video analytics on an infant\u2019s motions ", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 542.2594, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "for health prediction", "bbox": {"l": 64.800003, "t": 90.18120999999985, "r": 219.41090000000003, "b": 104.94421, "coord_origin": "TOPLEFT"}}]}, "text": "Use case 5: AI-powered video analytics on an infant\u2019s motions for health prediction"}, {"label": "text", "id": 3, "page_no": 31, "cluster": {"id": 3, "label": "text", "bbox": {"l": 136.04208374023438, "t": 121.13082122802734, "r": 546.69891, "b": 179.73699951171875, "coord_origin": "TOPLEFT"}, "confidence": 0.9872261881828308, "cells": [{"id": 4, "text": "Each year, approximately 5 million newborns worldwide are suffering from a ", "bbox": {"l": 136.8, "t": 122.50867000000005, "r": 474.4818399999999, "b": 131.72168, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "neuro-developmental disorder. Due to the lack of early diagnoses and intervention, many ", "bbox": {"l": 136.79999, "t": 134.50847999999996, "r": 532.30072, "b": 143.7215, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "infants are disabled and abandoned, especially in countries with limited numbers of ", "bbox": {"l": 136.8, "t": 146.50829999999996, "r": 506.92267000000004, "b": 155.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "pediatricians with extensive experience in neuro-developmental disorders. This situation is a ", "bbox": {"l": 136.8, "t": 158.50811999999996, "r": 546.69891, "b": 167.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "conundrum that plagues many families around the world.", "bbox": {"l": 136.8, "t": 170.50793, "r": 387.98224, "b": 179.72095000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Each year, approximately 5 million newborns worldwide are suffering from a neuro-developmental disorder. Due to the lack of early diagnoses and intervention, many infants are disabled and abandoned, especially in countries with limited numbers of pediatricians with extensive experience in neuro-developmental disorders. This situation is a conundrum that plagues many families around the world."}, {"label": "text", "id": 4, "page_no": 31, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.93234252929688, "t": 191.948974609375, "r": 547.31219, "b": 238.30877685546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9872615337371826, "cells": [{"id": 9, "text": "Infant motion analysis plays critical importance to understanding and comprehending healthy ", "bbox": {"l": 136.8, "t": 192.52752999999996, "r": 547.31219, "b": 201.74054, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "childhood development. In infants, monitoring their poses provides information about their ", "bbox": {"l": 136.8, "t": 204.52733999999998, "r": 535.15521, "b": 213.74036, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "health that can lead to a better prediction of early developmental risk assessment and ", "bbox": {"l": 136.8, "t": 216.52715999999998, "r": 517.90442, "b": 225.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "diagnosis. ", "bbox": {"l": 136.79999, "t": 228.52697999999998, "r": 184.63986, "b": 237.73999000000003, "coord_origin": "TOPLEFT"}}]}, "text": "Infant motion analysis plays critical importance to understanding and comprehending healthy childhood development. In infants, monitoring their poses provides information about their health that can lead to a better prediction of early developmental risk assessment and diagnosis."}, {"label": "text", "id": 5, "page_no": 31, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.01303100585938, "t": 249.5870361328125, "r": 533.34436, "b": 283.6994, "coord_origin": "TOPLEFT"}, "confidence": 0.9848974347114563, "cells": [{"id": 13, "text": "Adults use different techniques and methods to express their feelings (like sick, happy, ", "bbox": {"l": 136.79999, "t": 250.48676, "r": 521.8656, "b": 259.69976999999994, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "stressed, or hungry), but this case is usually different for infants who cannot express their ", "bbox": {"l": 136.79997, "t": 262.48657000000003, "r": 533.34436, "b": 271.69957999999997, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "feelings. Based on the baby movements, AI can predict their expression or health.", "bbox": {"l": 136.79997, "t": 274.48639000000003, "r": 499.15466, "b": 283.6994, "coord_origin": "TOPLEFT"}}]}, "text": "Adults use different techniques and methods to express their feelings (like sick, happy, stressed, or hungry), but this case is usually different for infants who cannot express their feelings. Based on the baby movements, AI can predict their expression or health."}, {"label": "text", "id": 6, "page_no": 31, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.85812377929688, "t": 295.5922546386719, "r": 535.13025, "b": 365.71804999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9812631607055664, "cells": [{"id": 16, "text": "In this use case, we examine how AI-powered video analytics can assist new parents and ", "bbox": {"l": 136.79997, "t": 296.50598, "r": 535.13025, "b": 305.7189599999999, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "hospitals by addressing pose-based real-time body movements of the infants (such as ", "bbox": {"l": 136.79997, "t": 308.5058, "r": 520.1662, "b": 317.71878000000004, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "arching back, head banging, kicking legs, rubbing eyes, stretching, and sucking fingers). ", "bbox": {"l": 136.79997, "t": 320.50562, "r": 529.04352, "b": 329.7186, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "During the initial months of a baby\u2019s life, spontaneous movements might indicate later ", "bbox": {"l": 136.79997, "t": 332.50543, "r": 517.4234, "b": 341.71841, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "developmental disorders, such as cerebral palsy, Rett syndrome, and autism spectrum ", "bbox": {"l": 136.79997, "t": 344.50525, "r": 522.46307, "b": 353.71823, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "disorders.", "bbox": {"l": 136.79997, "t": 356.50507, "r": 180.66779, "b": 365.71804999999995, "coord_origin": "TOPLEFT"}}]}, "text": "In this use case, we examine how AI-powered video analytics can assist new parents and hospitals by addressing pose-based real-time body movements of the infants (such as arching back, head banging, kicking legs, rubbing eyes, stretching, and sucking fingers). During the initial months of a baby\u2019s life, spontaneous movements might indicate later developmental disorders, such as cerebral palsy, Rett syndrome, and autism spectrum disorders."}, {"label": "section_header", "id": 7, "page_no": 31, "cluster": {"id": 7, "label": "section_header", "bbox": {"l": 64.58500671386719, "t": 385.20379638671875, "r": 186.7186, "b": 398.5070495605469, "coord_origin": "TOPLEFT"}, "confidence": 0.9640207886695862, "cells": [{"id": 22, "text": "Industry challenges", "bbox": {"l": 64.800003, "t": 386.33475, "r": 186.7186, "b": 398.32272, "coord_origin": "TOPLEFT"}}]}, "text": "Industry challenges"}, {"label": "text", "id": 8, "page_no": 31, "cluster": {"id": 8, "label": "text", "bbox": {"l": 135.78916931152344, "t": 411.3067932128906, "r": 547.25763, "b": 457.70117, "coord_origin": "TOPLEFT"}, "confidence": 0.9876371622085571, "cells": [{"id": 23, "text": "There are video surveillance systems that are installed for monitoring an infant\u2019s movement in ", "bbox": {"l": 136.8, "t": 412.48874, "r": 547.20087, "b": 421.70172, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "many hospitals or homes so that any problem can be witnessed and potentially even stopped ", "bbox": {"l": 136.80002, "t": 424.48856, "r": 547.2226, "b": 433.70154, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "before they take place. These systems require much manual work to monitor the real-stream ", "bbox": {"l": 136.80002, "t": 436.48837000000003, "r": 547.25763, "b": 445.70135, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "videos and intervene when a problem is detected. ", "bbox": {"l": 136.80002, "t": 448.48819, "r": 359.689, "b": 457.70117, "coord_origin": "TOPLEFT"}}]}, "text": "There are video surveillance systems that are installed for monitoring an infant\u2019s movement in many hospitals or homes so that any problem can be witnessed and potentially even stopped before they take place. These systems require much manual work to monitor the real-stream videos and intervene when a problem is detected."}, {"label": "text", "id": 9, "page_no": 31, "cluster": {"id": 9, "label": "text", "bbox": {"l": 135.95849609375, "t": 469.4918212890625, "r": 547.27753, "b": 527.93310546875, "coord_origin": "TOPLEFT"}, "confidence": 0.9885361194610596, "cells": [{"id": 27, "text": "There is a certain amount of trust that you must place on the person who monitors a ", "bbox": {"l": 136.80002, "t": 470.50775, "r": 510.17957, "b": 479.72073, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "surveillance system to ensure that the job is being done effectively and efficiently, and that the ", "bbox": {"l": 136.80002, "t": 482.50757, "r": 547.27753, "b": 491.72055, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "surveillance system is being vigilantly watched. Because of the dependency on these manual ", "bbox": {"l": 136.80002, "t": 494.50739, "r": 547.22272, "b": 503.72037, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "efforts, you need something \u201csmart\u201d that monitors constantly the surveillance system and ", "bbox": {"l": 136.79999, "t": 506.5072, "r": 531.67511, "b": 515.72018, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "detect problems effectively. ", "bbox": {"l": 136.80096, "t": 518.50702, "r": 260.62772, "b": 527.72, "coord_origin": "TOPLEFT"}}]}, "text": "There is a certain amount of trust that you must place on the person who monitors a surveillance system to ensure that the job is being done effectively and efficiently, and that the surveillance system is being vigilantly watched. Because of the dependency on these manual efforts, you need something \u201csmart\u201d that monitors constantly the surveillance system and detect problems effectively."}, {"label": "text", "id": 10, "page_no": 31, "cluster": {"id": 10, "label": "text", "bbox": {"l": 135.81661987304688, "t": 540.0313110351562, "r": 547.23859, "b": 573.9750366210938, "coord_origin": "TOPLEFT"}, "confidence": 0.9842253923416138, "cells": [{"id": 32, "text": "AI is shaping the controls of surveillance that can map and track occurrences with ", "bbox": {"l": 136.80096, "t": 540.52658, "r": 500.10587, "b": 549.7395799999999, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "self-learning abilities, AI can improve on human operations and analyze video footage in real ", "bbox": {"l": 136.80095, "t": 552.52638, "r": 547.23859, "b": 561.73938, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "time to alert the hospitals or parents if any anomalies are identified.", "bbox": {"l": 136.79994, "t": 564.5261800000001, "r": 433.53322999999995, "b": 573.73918, "coord_origin": "TOPLEFT"}}]}, "text": "AI is shaping the controls of surveillance that can map and track occurrences with self-learning abilities, AI can improve on human operations and analyze video footage in real time to alert the hospitals or parents if any anomalies are identified."}, {"label": "text", "id": 11, "page_no": 31, "cluster": {"id": 11, "label": "text", "bbox": {"l": 136.16104125976562, "t": 586.1128540039062, "r": 541.76654, "b": 608.531982421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9799899458885193, "cells": [{"id": 35, "text": "Video processing a stream of data from surveillance systems and then performing advance ", "bbox": {"l": 136.79994, "t": 586.54575, "r": 541.76654, "b": 595.75874, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "analytics and detecting anomalies quickly is a significant challenge in the industry.", "bbox": {"l": 136.79993, "t": 598.5455499999999, "r": 499.08203, "b": 607.75854, "coord_origin": "TOPLEFT"}}]}, "text": "Video processing a stream of data from surveillance systems and then performing advance analytics and detecting anomalies quickly is a significant challenge in the industry."}, {"label": "section_header", "id": 12, "page_no": 31, "cluster": {"id": 12, "label": "section_header", "bbox": {"l": 64.49705505371094, "t": 627.67138671875, "r": 278.44431, "b": 641.0259399414062, "coord_origin": "TOPLEFT"}, "confidence": 0.961360514163971, "cells": [{"id": 37, "text": "Infant motion analytics in real time", "bbox": {"l": 64.800003, "t": 628.37462, "r": 278.44431, "b": 640.36263, "coord_origin": "TOPLEFT"}}]}, "text": "Infant motion analytics in real time"}, {"label": "text", "id": 13, "page_no": 31, "cluster": {"id": 13, "label": "text", "bbox": {"l": 135.9631805419922, "t": 654.0413208007812, "r": 547.22571, "b": 724.17529296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9874605536460876, "cells": [{"id": 38, "text": "AI is the current \u201cmarket trend evolution\u201d in video analytics and advancing the ", "bbox": {"l": 136.8, "t": 654.52872, "r": 481.38613999999995, "b": 663.74171, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "decision-making capabilities of the human mind. DL-based computer vision AI techniques are ", "bbox": {"l": 136.8, "t": 666.5285200000001, "r": 547.22571, "b": 675.74152, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "being widely adopted by various industries to solve real-time problems. These techniques ", "bbox": {"l": 136.80002, "t": 678.52833, "r": 534.54663, "b": 687.7413300000001, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "improve the detection and prediction accuracy without increasing the hardware cost ", "bbox": {"l": 136.8, "t": 690.52814, "r": 508.5957599999999, "b": 699.741142, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "exponentially. For users, AI greatly reduces the workload of the monitoring staff and provides ", "bbox": {"l": 136.8, "t": 702.5279459999999, "r": 547.14087, "b": 711.740952, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "benefits by detecting unusual incidents and solving many video forensic problems. ", "bbox": {"l": 136.8, "t": 714.527756, "r": 502.9895, "b": 723.740761, "coord_origin": "TOPLEFT"}}]}, "text": "AI is the current \u201cmarket trend evolution\u201d in video analytics and advancing the decision-making capabilities of the human mind. DL-based computer vision AI techniques are being widely adopted by various industries to solve real-time problems. These techniques improve the detection and prediction accuracy without increasing the hardware cost exponentially. For users, AI greatly reduces the workload of the monitoring staff and provides benefits by detecting unusual incidents and solving many video forensic problems."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 31, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.11967468261719, "t": 754.4208984375, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9230456948280334, "cells": [{"id": 0, "text": "30 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "30"}, {"label": "page_footer", "id": 1, "page_no": 31, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.19580841064453, "t": 754.7359008789062, "r": 267.0744, "b": 764.1449584960938, "coord_origin": "TOPLEFT"}, "confidence": 0.956289529800415, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}]}}, {"page_no": 32, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "31", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "CP4D was used to build and deploy the AI-powered video analytics on infant\u2019s motion for ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 532.08209, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "health prediction use case on IBM Z. IBM Z with AI accelerator enables faster inference for ", "bbox": {"l": 136.79961, "t": 83.50885000000017, "r": 540.15765, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "detecting face and body movements and performing angle analytics in real time.", "bbox": {"l": 136.79961, "t": 95.50867000000005, "r": 490.71939, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Figure 24 shows an architectural diagram about how to design and develop an AI model for ", "bbox": {"l": 136.79961, "t": 117.52826000000005, "r": 542.94446, "b": 126.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "real-time body pose detection on IBM Z. A deep convolutional neural network architecture ", "bbox": {"l": 136.79961, "t": 129.52808000000005, "r": 535.71661, "b": 138.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "was trained on the task of infant pose estimation on the custom data set by leveraging IBM ", "bbox": {"l": 136.79961, "t": 141.52788999999996, "r": 540.21545, "b": 150.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Cloud Pak for Data. ", "bbox": {"l": 136.79961, "t": 153.52770999999996, "r": 226.73041, "b": 162.74072, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "S", "bbox": {"l": 64.799759, "t": 168.52747, "r": 71.443077, "b": 177.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "Figure 24 Architecture for AI-powered video analytics", "bbox": {"l": 64.800003, "t": 414.0779999999999, "r": 281.03314, "b": 422.40302, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Live camera feeds or recorded videos of an infant\u2019s movement are the inputs for a pose ", "bbox": {"l": 136.8, "t": 436.06873, "r": 526.35754, "b": 445.28171, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "detection model. This video streaming data was stored in IBM Cloudfi Object Storage for ", "bbox": {"l": 136.8, "t": 448.06854, "r": 532.50073, "b": 457.28152, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "image processing. Video data must be transformed into frames so that the infant\u2019s body ", "bbox": {"l": 136.8, "t": 460.06836, "r": 526.34558, "b": 469.28134, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "poses can be detected. These post-estimation components of the pipeline predict the location ", "bbox": {"l": 136.8, "t": 472.06818, "r": 547.29852, "b": 481.28116, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "of all 17-person key points with 3 degrees of freedom each (x, y location and visibility) plus ", "bbox": {"l": 136.8, "t": 484.06799, "r": 538.93793, "b": 493.28098, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "two virtual alignment key points. This approach also embraces a compute-intensive heat map ", "bbox": {"l": 136.8, "t": 496.06781, "r": 547.31128, "b": 505.28079, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "prediction of infant body posture. ", "bbox": {"l": 136.8, "t": 508.06763, "r": 284.59744, "b": 517.28061, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "When changes in body posture or movement happen, analytics can be performed, and a ", "bbox": {"l": 136.8, "t": 530.0274400000001, "r": 530.72687, "b": 539.2404300000001, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "threshold can be set for the angle of the body and posture movements. An analysis can be ", "bbox": {"l": 136.8, "t": 542.02724, "r": 539.72699, "b": 551.24023, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "performed on movement that is based on that threshold to help to predict an infant\u2019s health ", "bbox": {"l": 136.8, "t": 554.0270399999999, "r": 539.91718, "b": 563.24004, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "index in the output video stream by leveraging the IBM z16 on-chip AI acceleration, which ", "bbox": {"l": 136.8, "t": 566.02684, "r": 535.18512, "b": 575.23984, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "provides an execution speed in real time on an edge device, which cannot be achieved by ", "bbox": {"l": 136.8, "t": 578.0266399999999, "r": 536.80255, "b": 587.23964, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "other means.", "bbox": {"l": 136.79901, "t": 590.0264400000001, "r": 195.10583, "b": 599.2394400000001, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "We can leverage the following AI technology stack for this use case:", "bbox": {"l": 136.79901, "t": 612.04601, "r": 437.9595299999999, "b": 621.259, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "GLYPH", "bbox": {"l": 136.79901, "t": 629.17522, "r": 141.77901, "b": 637.94997, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Convolutional neural network: Build an artificial neural network model on video streaming ", "bbox": {"l": 151.19917, "t": 629.0258200000001, "r": 546.68695, "b": 638.23882, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "and images.", "bbox": {"l": 151.19917, "t": 641.02562, "r": 205.66942, "b": 650.23862, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "GLYPH", "bbox": {"l": 136.79901, "t": 658.2145800000001, "r": 141.77901, "b": 666.98934, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "TensorFlow: A DL back-end framework that is based on TensorFlow.", "bbox": {"l": 151.19917, "t": 658.06519, "r": 455.6933, "b": 667.27818, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "GLYPH", "bbox": {"l": 136.79901, "t": 675.1944, "r": 141.77901, "b": 683.96915, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Mediapipe: A library that helps with video streaming processing and prediction of human ", "bbox": {"l": 151.19917, "t": 675.04499, "r": 543.45294, "b": 684.258, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "pose estimation.", "bbox": {"l": 151.19917, "t": 687.0448, "r": 223.97094999999996, "b": 696.257805, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "GLYPH", "bbox": {"l": 136.79901, "t": 704.174011, "r": 141.77901, "b": 712.948769, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "OpenCV: A real-time computer vision library that helps perform image processing. ", "bbox": {"l": 151.19917, "t": 704.024605, "r": 516.33087, "b": 713.23761, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 535.5228881835938, "t": 754.3223266601562, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9154198169708252, "cells": [{"id": 0, "text": "31", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "text", "bbox": {"l": 135.8349609375, "t": 70.61254119873047, "r": 540.15765, "b": 104.76904296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9836795926094055, "cells": [{"id": 1, "text": "CP4D was used to build and deploy the AI-powered video analytics on infant\u2019s motion for ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 532.08209, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "health prediction use case on IBM Z. IBM Z with AI accelerator enables faster inference for ", "bbox": {"l": 136.79961, "t": 83.50885000000017, "r": 540.15765, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "detecting face and body movements and performing angle analytics in real time.", "bbox": {"l": 136.79961, "t": 95.50867000000005, "r": 490.71939, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 136.0093536376953, "t": 116.78787994384766, "r": 542.94446, "b": 162.74072, "coord_origin": "TOPLEFT"}, "confidence": 0.9831726551055908, "cells": [{"id": 4, "text": "Figure 24 shows an architectural diagram about how to design and develop an AI model for ", "bbox": {"l": 136.79961, "t": 117.52826000000005, "r": 542.94446, "b": 126.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "real-time body pose detection on IBM Z. A deep convolutional neural network architecture ", "bbox": {"l": 136.79961, "t": 129.52808000000005, "r": 535.71661, "b": 138.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "was trained on the task of infant pose estimation on the custom data set by leveraging IBM ", "bbox": {"l": 136.79961, "t": 141.52788999999996, "r": 540.21545, "b": 150.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Cloud Pak for Data. ", "bbox": {"l": 136.79961, "t": 153.52770999999996, "r": 226.73041, "b": 162.74072, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "picture", "bbox": {"l": 64.15681457519531, "t": 168.52747, "r": 542.2742309570312, "b": 410.16253662109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9696220755577087, "cells": [{"id": 8, "text": "S", "bbox": {"l": 64.799759, "t": 168.52747, "r": 71.443077, "b": 177.74048000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "caption", "bbox": {"l": 64.36393737792969, "t": 413.5631408691406, "r": 281.63330078125, "b": 422.616455078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9496315121650696, "cells": [{"id": 9, "text": "Figure 24 Architecture for AI-powered video analytics", "bbox": {"l": 64.800003, "t": 414.0779999999999, "r": 281.03314, "b": 422.40302, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 135.9974822998047, "t": 435.3909912109375, "r": 547.31128, "b": 517.7117309570312, "coord_origin": "TOPLEFT"}, "confidence": 0.9883346557617188, "cells": [{"id": 10, "text": "Live camera feeds or recorded videos of an infant\u2019s movement are the inputs for a pose ", "bbox": {"l": 136.8, "t": 436.06873, "r": 526.35754, "b": 445.28171, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "detection model. This video streaming data was stored in IBM Cloudfi Object Storage for ", "bbox": {"l": 136.8, "t": 448.06854, "r": 532.50073, "b": 457.28152, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "image processing. Video data must be transformed into frames so that the infant\u2019s body ", "bbox": {"l": 136.8, "t": 460.06836, "r": 526.34558, "b": 469.28134, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "poses can be detected. These post-estimation components of the pipeline predict the location ", "bbox": {"l": 136.8, "t": 472.06818, "r": 547.29852, "b": 481.28116, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "of all 17-person key points with 3 degrees of freedom each (x, y location and visibility) plus ", "bbox": {"l": 136.8, "t": 484.06799, "r": 538.93793, "b": 493.28098, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "two virtual alignment key points. This approach also embraces a compute-intensive heat map ", "bbox": {"l": 136.8, "t": 496.06781, "r": 547.31128, "b": 505.28079, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "prediction of infant body posture. ", "bbox": {"l": 136.8, "t": 508.06763, "r": 284.59744, "b": 517.28061, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 135.75706481933594, "t": 529.5070190429688, "r": 539.91718, "b": 599.2394400000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9881454706192017, "cells": [{"id": 17, "text": "When changes in body posture or movement happen, analytics can be performed, and a ", "bbox": {"l": 136.8, "t": 530.0274400000001, "r": 530.72687, "b": 539.2404300000001, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "threshold can be set for the angle of the body and posture movements. An analysis can be ", "bbox": {"l": 136.8, "t": 542.02724, "r": 539.72699, "b": 551.24023, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "performed on movement that is based on that threshold to help to predict an infant\u2019s health ", "bbox": {"l": 136.8, "t": 554.0270399999999, "r": 539.91718, "b": 563.24004, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "index in the output video stream by leveraging the IBM z16 on-chip AI acceleration, which ", "bbox": {"l": 136.8, "t": 566.02684, "r": 535.18512, "b": 575.23984, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "provides an execution speed in real time on an edge device, which cannot be achieved by ", "bbox": {"l": 136.8, "t": 578.0266399999999, "r": 536.80255, "b": 587.23964, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "other means.", "bbox": {"l": 136.79901, "t": 590.0264400000001, "r": 195.10583, "b": 599.2394400000001, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 135.83775329589844, "t": 611.3679809570312, "r": 437.9595299999999, "b": 621.6543579101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9376599788665771, "cells": [{"id": 23, "text": "We can leverage the following AI technology stack for this use case:", "bbox": {"l": 136.79901, "t": 612.04601, "r": 437.9595299999999, "b": 621.259, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 135.53660583496094, "t": 627.9594116210938, "r": 546.68695, "b": 650.2847900390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9733057618141174, "cells": [{"id": 24, "text": "GLYPH", "bbox": {"l": 136.79901, "t": 629.17522, "r": 141.77901, "b": 637.94997, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Convolutional neural network: Build an artificial neural network model on video streaming ", "bbox": {"l": 151.19917, "t": 629.0258200000001, "r": 546.68695, "b": 638.23882, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "and images.", "bbox": {"l": 151.19917, "t": 641.02562, "r": 205.66942, "b": 650.23862, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 135.43955993652344, "t": 657.3218994140625, "r": 455.6933, "b": 667.27818, "coord_origin": "TOPLEFT"}, "confidence": 0.9471306204795837, "cells": [{"id": 27, "text": "GLYPH", "bbox": {"l": 136.79901, "t": 658.2145800000001, "r": 141.77901, "b": 666.98934, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "TensorFlow: A DL back-end framework that is based on TensorFlow.", "bbox": {"l": 151.19917, "t": 658.06519, "r": 455.6933, "b": 667.27818, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "list_item", "bbox": {"l": 135.51890563964844, "t": 673.9837036132812, "r": 543.45294, "b": 696.257805, "coord_origin": "TOPLEFT"}, "confidence": 0.9743932485580444, "cells": [{"id": 29, "text": "GLYPH", "bbox": {"l": 136.79901, "t": 675.1944, "r": 141.77901, "b": 683.96915, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Mediapipe: A library that helps with video streaming processing and prediction of human ", "bbox": {"l": 151.19917, "t": 675.04499, "r": 543.45294, "b": 684.258, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "pose estimation.", "bbox": {"l": 151.19917, "t": 687.0448, "r": 223.97094999999996, "b": 696.257805, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "list_item", "bbox": {"l": 135.43861389160156, "t": 703.3480834960938, "r": 516.33087, "b": 713.6216430664062, "coord_origin": "TOPLEFT"}, "confidence": 0.9642981290817261, "cells": [{"id": 32, "text": "GLYPH", "bbox": {"l": 136.79901, "t": 704.174011, "r": 141.77901, "b": 712.948769, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "OpenCV: A real-time computer vision library that helps perform image processing. ", "bbox": {"l": 151.19917, "t": 704.024605, "r": 516.33087, "b": 713.23761, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 32, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 535.5228881835938, "t": 754.3223266601562, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9154198169708252, "cells": [{"id": 0, "text": "31", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "31"}, {"label": "text", "id": 1, "page_no": 32, "cluster": {"id": 1, "label": "text", "bbox": {"l": 135.8349609375, "t": 70.61254119873047, "r": 540.15765, "b": 104.76904296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9836795926094055, "cells": [{"id": 1, "text": "CP4D was used to build and deploy the AI-powered video analytics on infant\u2019s motion for ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 532.08209, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "health prediction use case on IBM Z. IBM Z with AI accelerator enables faster inference for ", "bbox": {"l": 136.79961, "t": 83.50885000000017, "r": 540.15765, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "detecting face and body movements and performing angle analytics in real time.", "bbox": {"l": 136.79961, "t": 95.50867000000005, "r": 490.71939, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "CP4D was used to build and deploy the AI-powered video analytics on infant\u2019s motion for health prediction use case on IBM Z. IBM Z with AI accelerator enables faster inference for detecting face and body movements and performing angle analytics in real time."}, {"label": "text", "id": 2, "page_no": 32, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.0093536376953, "t": 116.78787994384766, "r": 542.94446, "b": 162.74072, "coord_origin": "TOPLEFT"}, "confidence": 0.9831726551055908, "cells": [{"id": 4, "text": "Figure 24 shows an architectural diagram about how to design and develop an AI model for ", "bbox": {"l": 136.79961, "t": 117.52826000000005, "r": 542.94446, "b": 126.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "real-time body pose detection on IBM Z. A deep convolutional neural network architecture ", "bbox": {"l": 136.79961, "t": 129.52808000000005, "r": 535.71661, "b": 138.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "was trained on the task of infant pose estimation on the custom data set by leveraging IBM ", "bbox": {"l": 136.79961, "t": 141.52788999999996, "r": 540.21545, "b": 150.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Cloud Pak for Data. ", "bbox": {"l": 136.79961, "t": 153.52770999999996, "r": 226.73041, "b": 162.74072, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 24 shows an architectural diagram about how to design and develop an AI model for real-time body pose detection on IBM Z. A deep convolutional neural network architecture was trained on the task of infant pose estimation on the custom data set by leveraging IBM Cloud Pak for Data."}, {"label": "picture", "id": 3, "page_no": 32, "cluster": {"id": 3, "label": "picture", "bbox": {"l": 64.15681457519531, "t": 168.52747, "r": 542.2742309570312, "b": 410.16253662109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9696220755577087, "cells": [{"id": 8, "text": "S", "bbox": {"l": 64.799759, "t": 168.52747, "r": 71.443077, "b": 177.74048000000005, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "caption", "id": 4, "page_no": 32, "cluster": {"id": 4, "label": "caption", "bbox": {"l": 64.36393737792969, "t": 413.5631408691406, "r": 281.63330078125, "b": 422.616455078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9496315121650696, "cells": [{"id": 9, "text": "Figure 24 Architecture for AI-powered video analytics", "bbox": {"l": 64.800003, "t": 414.0779999999999, "r": 281.03314, "b": 422.40302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 24 Architecture for AI-powered video analytics"}, {"label": "text", "id": 5, "page_no": 32, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.9974822998047, "t": 435.3909912109375, "r": 547.31128, "b": 517.7117309570312, "coord_origin": "TOPLEFT"}, "confidence": 0.9883346557617188, "cells": [{"id": 10, "text": "Live camera feeds or recorded videos of an infant\u2019s movement are the inputs for a pose ", "bbox": {"l": 136.8, "t": 436.06873, "r": 526.35754, "b": 445.28171, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "detection model. This video streaming data was stored in IBM Cloudfi Object Storage for ", "bbox": {"l": 136.8, "t": 448.06854, "r": 532.50073, "b": 457.28152, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "image processing. Video data must be transformed into frames so that the infant\u2019s body ", "bbox": {"l": 136.8, "t": 460.06836, "r": 526.34558, "b": 469.28134, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "poses can be detected. These post-estimation components of the pipeline predict the location ", "bbox": {"l": 136.8, "t": 472.06818, "r": 547.29852, "b": 481.28116, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "of all 17-person key points with 3 degrees of freedom each (x, y location and visibility) plus ", "bbox": {"l": 136.8, "t": 484.06799, "r": 538.93793, "b": 493.28098, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "two virtual alignment key points. This approach also embraces a compute-intensive heat map ", "bbox": {"l": 136.8, "t": 496.06781, "r": 547.31128, "b": 505.28079, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "prediction of infant body posture. ", "bbox": {"l": 136.8, "t": 508.06763, "r": 284.59744, "b": 517.28061, "coord_origin": "TOPLEFT"}}]}, "text": "Live camera feeds or recorded videos of an infant\u2019s movement are the inputs for a pose detection model. This video streaming data was stored in IBM Cloudfi Object Storage for image processing. Video data must be transformed into frames so that the infant\u2019s body poses can be detected. These post-estimation components of the pipeline predict the location of all 17-person key points with 3 degrees of freedom each (x, y location and visibility) plus two virtual alignment key points. This approach also embraces a compute-intensive heat map prediction of infant body posture."}, {"label": "text", "id": 6, "page_no": 32, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.75706481933594, "t": 529.5070190429688, "r": 539.91718, "b": 599.2394400000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9881454706192017, "cells": [{"id": 17, "text": "When changes in body posture or movement happen, analytics can be performed, and a ", "bbox": {"l": 136.8, "t": 530.0274400000001, "r": 530.72687, "b": 539.2404300000001, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "threshold can be set for the angle of the body and posture movements. An analysis can be ", "bbox": {"l": 136.8, "t": 542.02724, "r": 539.72699, "b": 551.24023, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "performed on movement that is based on that threshold to help to predict an infant\u2019s health ", "bbox": {"l": 136.8, "t": 554.0270399999999, "r": 539.91718, "b": 563.24004, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "index in the output video stream by leveraging the IBM z16 on-chip AI acceleration, which ", "bbox": {"l": 136.8, "t": 566.02684, "r": 535.18512, "b": 575.23984, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "provides an execution speed in real time on an edge device, which cannot be achieved by ", "bbox": {"l": 136.8, "t": 578.0266399999999, "r": 536.80255, "b": 587.23964, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "other means.", "bbox": {"l": 136.79901, "t": 590.0264400000001, "r": 195.10583, "b": 599.2394400000001, "coord_origin": "TOPLEFT"}}]}, "text": "When changes in body posture or movement happen, analytics can be performed, and a threshold can be set for the angle of the body and posture movements. An analysis can be performed on movement that is based on that threshold to help to predict an infant\u2019s health index in the output video stream by leveraging the IBM z16 on-chip AI acceleration, which provides an execution speed in real time on an edge device, which cannot be achieved by other means."}, {"label": "text", "id": 7, "page_no": 32, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.83775329589844, "t": 611.3679809570312, "r": 437.9595299999999, "b": 621.6543579101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9376599788665771, "cells": [{"id": 23, "text": "We can leverage the following AI technology stack for this use case:", "bbox": {"l": 136.79901, "t": 612.04601, "r": 437.9595299999999, "b": 621.259, "coord_origin": "TOPLEFT"}}]}, "text": "We can leverage the following AI technology stack for this use case:"}, {"label": "list_item", "id": 8, "page_no": 32, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.53660583496094, "t": 627.9594116210938, "r": 546.68695, "b": 650.2847900390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9733057618141174, "cells": [{"id": 24, "text": "GLYPH", "bbox": {"l": 136.79901, "t": 629.17522, "r": 141.77901, "b": 637.94997, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Convolutional neural network: Build an artificial neural network model on video streaming ", "bbox": {"l": 151.19917, "t": 629.0258200000001, "r": 546.68695, "b": 638.23882, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "and images.", "bbox": {"l": 151.19917, "t": 641.02562, "r": 205.66942, "b": 650.23862, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Convolutional neural network: Build an artificial neural network model on video streaming and images."}, {"label": "list_item", "id": 9, "page_no": 32, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.43955993652344, "t": 657.3218994140625, "r": 455.6933, "b": 667.27818, "coord_origin": "TOPLEFT"}, "confidence": 0.9471306204795837, "cells": [{"id": 27, "text": "GLYPH", "bbox": {"l": 136.79901, "t": 658.2145800000001, "r": 141.77901, "b": 666.98934, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "TensorFlow: A DL back-end framework that is based on TensorFlow.", "bbox": {"l": 151.19917, "t": 658.06519, "r": 455.6933, "b": 667.27818, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH TensorFlow: A DL back-end framework that is based on TensorFlow."}, {"label": "list_item", "id": 10, "page_no": 32, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.51890563964844, "t": 673.9837036132812, "r": 543.45294, "b": 696.257805, "coord_origin": "TOPLEFT"}, "confidence": 0.9743932485580444, "cells": [{"id": 29, "text": "GLYPH", "bbox": {"l": 136.79901, "t": 675.1944, "r": 141.77901, "b": 683.96915, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Mediapipe: A library that helps with video streaming processing and prediction of human ", "bbox": {"l": 151.19917, "t": 675.04499, "r": 543.45294, "b": 684.258, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "pose estimation.", "bbox": {"l": 151.19917, "t": 687.0448, "r": 223.97094999999996, "b": 696.257805, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Mediapipe: A library that helps with video streaming processing and prediction of human pose estimation."}, {"label": "list_item", "id": 11, "page_no": 32, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.43861389160156, "t": 703.3480834960938, "r": 516.33087, "b": 713.6216430664062, "coord_origin": "TOPLEFT"}, "confidence": 0.9642981290817261, "cells": [{"id": 32, "text": "GLYPH", "bbox": {"l": 136.79901, "t": 704.174011, "r": 141.77901, "b": 712.948769, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "OpenCV: A real-time computer vision library that helps perform image processing. ", "bbox": {"l": 151.19917, "t": 704.024605, "r": 516.33087, "b": 713.23761, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH OpenCV: A real-time computer vision library that helps perform image processing."}], "body": [{"label": "text", "id": 1, "page_no": 32, "cluster": {"id": 1, "label": "text", "bbox": {"l": 135.8349609375, "t": 70.61254119873047, "r": 540.15765, "b": 104.76904296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9836795926094055, "cells": [{"id": 1, "text": "CP4D was used to build and deploy the AI-powered video analytics on infant\u2019s motion for ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 532.08209, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "health prediction use case on IBM Z. IBM Z with AI accelerator enables faster inference for ", "bbox": {"l": 136.79961, "t": 83.50885000000017, "r": 540.15765, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "detecting face and body movements and performing angle analytics in real time.", "bbox": {"l": 136.79961, "t": 95.50867000000005, "r": 490.71939, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}]}, "text": "CP4D was used to build and deploy the AI-powered video analytics on infant\u2019s motion for health prediction use case on IBM Z. IBM Z with AI accelerator enables faster inference for detecting face and body movements and performing angle analytics in real time."}, {"label": "text", "id": 2, "page_no": 32, "cluster": {"id": 2, "label": "text", "bbox": {"l": 136.0093536376953, "t": 116.78787994384766, "r": 542.94446, "b": 162.74072, "coord_origin": "TOPLEFT"}, "confidence": 0.9831726551055908, "cells": [{"id": 4, "text": "Figure 24 shows an architectural diagram about how to design and develop an AI model for ", "bbox": {"l": 136.79961, "t": 117.52826000000005, "r": 542.94446, "b": 126.74126999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "real-time body pose detection on IBM Z. A deep convolutional neural network architecture ", "bbox": {"l": 136.79961, "t": 129.52808000000005, "r": 535.71661, "b": 138.74108999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "was trained on the task of infant pose estimation on the custom data set by leveraging IBM ", "bbox": {"l": 136.79961, "t": 141.52788999999996, "r": 540.21545, "b": 150.74090999999999, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Cloud Pak for Data. ", "bbox": {"l": 136.79961, "t": 153.52770999999996, "r": 226.73041, "b": 162.74072, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 24 shows an architectural diagram about how to design and develop an AI model for real-time body pose detection on IBM Z. A deep convolutional neural network architecture was trained on the task of infant pose estimation on the custom data set by leveraging IBM Cloud Pak for Data."}, {"label": "picture", "id": 3, "page_no": 32, "cluster": {"id": 3, "label": "picture", "bbox": {"l": 64.15681457519531, "t": 168.52747, "r": 542.2742309570312, "b": 410.16253662109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9696220755577087, "cells": [{"id": 8, "text": "S", "bbox": {"l": 64.799759, "t": 168.52747, "r": 71.443077, "b": 177.74048000000005, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "caption", "id": 4, "page_no": 32, "cluster": {"id": 4, "label": "caption", "bbox": {"l": 64.36393737792969, "t": 413.5631408691406, "r": 281.63330078125, "b": 422.616455078125, "coord_origin": "TOPLEFT"}, "confidence": 0.9496315121650696, "cells": [{"id": 9, "text": "Figure 24 Architecture for AI-powered video analytics", "bbox": {"l": 64.800003, "t": 414.0779999999999, "r": 281.03314, "b": 422.40302, "coord_origin": "TOPLEFT"}}]}, "text": "Figure 24 Architecture for AI-powered video analytics"}, {"label": "text", "id": 5, "page_no": 32, "cluster": {"id": 5, "label": "text", "bbox": {"l": 135.9974822998047, "t": 435.3909912109375, "r": 547.31128, "b": 517.7117309570312, "coord_origin": "TOPLEFT"}, "confidence": 0.9883346557617188, "cells": [{"id": 10, "text": "Live camera feeds or recorded videos of an infant\u2019s movement are the inputs for a pose ", "bbox": {"l": 136.8, "t": 436.06873, "r": 526.35754, "b": 445.28171, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "detection model. This video streaming data was stored in IBM Cloudfi Object Storage for ", "bbox": {"l": 136.8, "t": 448.06854, "r": 532.50073, "b": 457.28152, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "image processing. Video data must be transformed into frames so that the infant\u2019s body ", "bbox": {"l": 136.8, "t": 460.06836, "r": 526.34558, "b": 469.28134, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "poses can be detected. These post-estimation components of the pipeline predict the location ", "bbox": {"l": 136.8, "t": 472.06818, "r": 547.29852, "b": 481.28116, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "of all 17-person key points with 3 degrees of freedom each (x, y location and visibility) plus ", "bbox": {"l": 136.8, "t": 484.06799, "r": 538.93793, "b": 493.28098, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "two virtual alignment key points. This approach also embraces a compute-intensive heat map ", "bbox": {"l": 136.8, "t": 496.06781, "r": 547.31128, "b": 505.28079, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "prediction of infant body posture. ", "bbox": {"l": 136.8, "t": 508.06763, "r": 284.59744, "b": 517.28061, "coord_origin": "TOPLEFT"}}]}, "text": "Live camera feeds or recorded videos of an infant\u2019s movement are the inputs for a pose detection model. This video streaming data was stored in IBM Cloudfi Object Storage for image processing. Video data must be transformed into frames so that the infant\u2019s body poses can be detected. These post-estimation components of the pipeline predict the location of all 17-person key points with 3 degrees of freedom each (x, y location and visibility) plus two virtual alignment key points. This approach also embraces a compute-intensive heat map prediction of infant body posture."}, {"label": "text", "id": 6, "page_no": 32, "cluster": {"id": 6, "label": "text", "bbox": {"l": 135.75706481933594, "t": 529.5070190429688, "r": 539.91718, "b": 599.2394400000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9881454706192017, "cells": [{"id": 17, "text": "When changes in body posture or movement happen, analytics can be performed, and a ", "bbox": {"l": 136.8, "t": 530.0274400000001, "r": 530.72687, "b": 539.2404300000001, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "threshold can be set for the angle of the body and posture movements. An analysis can be ", "bbox": {"l": 136.8, "t": 542.02724, "r": 539.72699, "b": 551.24023, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "performed on movement that is based on that threshold to help to predict an infant\u2019s health ", "bbox": {"l": 136.8, "t": 554.0270399999999, "r": 539.91718, "b": 563.24004, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "index in the output video stream by leveraging the IBM z16 on-chip AI acceleration, which ", "bbox": {"l": 136.8, "t": 566.02684, "r": 535.18512, "b": 575.23984, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "provides an execution speed in real time on an edge device, which cannot be achieved by ", "bbox": {"l": 136.8, "t": 578.0266399999999, "r": 536.80255, "b": 587.23964, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "other means.", "bbox": {"l": 136.79901, "t": 590.0264400000001, "r": 195.10583, "b": 599.2394400000001, "coord_origin": "TOPLEFT"}}]}, "text": "When changes in body posture or movement happen, analytics can be performed, and a threshold can be set for the angle of the body and posture movements. An analysis can be performed on movement that is based on that threshold to help to predict an infant\u2019s health index in the output video stream by leveraging the IBM z16 on-chip AI acceleration, which provides an execution speed in real time on an edge device, which cannot be achieved by other means."}, {"label": "text", "id": 7, "page_no": 32, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.83775329589844, "t": 611.3679809570312, "r": 437.9595299999999, "b": 621.6543579101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9376599788665771, "cells": [{"id": 23, "text": "We can leverage the following AI technology stack for this use case:", "bbox": {"l": 136.79901, "t": 612.04601, "r": 437.9595299999999, "b": 621.259, "coord_origin": "TOPLEFT"}}]}, "text": "We can leverage the following AI technology stack for this use case:"}, {"label": "list_item", "id": 8, "page_no": 32, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 135.53660583496094, "t": 627.9594116210938, "r": 546.68695, "b": 650.2847900390625, "coord_origin": "TOPLEFT"}, "confidence": 0.9733057618141174, "cells": [{"id": 24, "text": "GLYPH", "bbox": {"l": 136.79901, "t": 629.17522, "r": 141.77901, "b": 637.94997, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Convolutional neural network: Build an artificial neural network model on video streaming ", "bbox": {"l": 151.19917, "t": 629.0258200000001, "r": 546.68695, "b": 638.23882, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "and images.", "bbox": {"l": 151.19917, "t": 641.02562, "r": 205.66942, "b": 650.23862, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Convolutional neural network: Build an artificial neural network model on video streaming and images."}, {"label": "list_item", "id": 9, "page_no": 32, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 135.43955993652344, "t": 657.3218994140625, "r": 455.6933, "b": 667.27818, "coord_origin": "TOPLEFT"}, "confidence": 0.9471306204795837, "cells": [{"id": 27, "text": "GLYPH", "bbox": {"l": 136.79901, "t": 658.2145800000001, "r": 141.77901, "b": 666.98934, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "TensorFlow: A DL back-end framework that is based on TensorFlow.", "bbox": {"l": 151.19917, "t": 658.06519, "r": 455.6933, "b": 667.27818, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH TensorFlow: A DL back-end framework that is based on TensorFlow."}, {"label": "list_item", "id": 10, "page_no": 32, "cluster": {"id": 10, "label": "list_item", "bbox": {"l": 135.51890563964844, "t": 673.9837036132812, "r": 543.45294, "b": 696.257805, "coord_origin": "TOPLEFT"}, "confidence": 0.9743932485580444, "cells": [{"id": 29, "text": "GLYPH", "bbox": {"l": 136.79901, "t": 675.1944, "r": 141.77901, "b": 683.96915, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Mediapipe: A library that helps with video streaming processing and prediction of human ", "bbox": {"l": 151.19917, "t": 675.04499, "r": 543.45294, "b": 684.258, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "pose estimation.", "bbox": {"l": 151.19917, "t": 687.0448, "r": 223.97094999999996, "b": 696.257805, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Mediapipe: A library that helps with video streaming processing and prediction of human pose estimation."}, {"label": "list_item", "id": 11, "page_no": 32, "cluster": {"id": 11, "label": "list_item", "bbox": {"l": 135.43861389160156, "t": 703.3480834960938, "r": 516.33087, "b": 713.6216430664062, "coord_origin": "TOPLEFT"}, "confidence": 0.9642981290817261, "cells": [{"id": 32, "text": "GLYPH", "bbox": {"l": 136.79901, "t": 704.174011, "r": 141.77901, "b": 712.948769, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "OpenCV: A real-time computer vision library that helps perform image processing. ", "bbox": {"l": 151.19917, "t": 704.024605, "r": 516.33087, "b": 713.23761, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH OpenCV: A real-time computer vision library that helps perform image processing."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 32, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 535.5228881835938, "t": 754.3223266601562, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9154198169708252, "cells": [{"id": 0, "text": "31", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "31"}]}}, {"page_no": 33, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "32 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "WML was used for deployment of the pose detection model and generated notifications to ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 536.31464, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "users with web and mobile applications, and it integrates with Fitbit for push notifications so ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 542.36017, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "that hospitals and parents can take preventive actions. ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 380.7294, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "Additional resources", "bbox": {"l": 64.800003, "t": 133.20068000000003, "r": 223.86055, "b": 147.96367999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 165.67809999999997, "r": 141.78, "b": 174.45288000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "The Cloud Pak for Data 4.5 on IBM Z Overview Demo video provides an overview of some ", "bbox": {"l": 151.20016, "t": 165.52868999999998, "r": 547.23254, "b": 174.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "of the more important features of CP4D on IBM Z. ", "bbox": {"l": 151.20016, "t": 177.5285, "r": 374.5701, "b": 186.74152000000004, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 194.65770999999995, "r": 141.78, "b": 203.4325, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "IBM Cloud Pak for Data Tutorials.", "bbox": {"l": 151.20016, "t": 194.50829999999996, "r": 300.06931, "b": 203.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 211.63751000000002, "r": 141.77998, "b": 220.41228999999998, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Here are some additional use cases that use the data science frameworks that are ", "bbox": {"l": 151.20015, "t": 211.48810000000003, "r": 518.55884, "b": 220.70110999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "available as part of CP4D on IBM Z and IBM LinuxONE:", "bbox": {"l": 151.20015, "t": 223.48792000000003, "r": 399.04178, "b": 232.70092999999997, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "-", "bbox": {"l": 152.03978, "t": 240.52747, "r": 157.60841, "b": 249.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Payment Card Fraud Detection by using TensorFlow on CP4D on IBM Z and IBM ", "bbox": {"l": 165.59932, "t": 240.52747, "r": 527.84058, "b": 249.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "LinuxONE is a payment card fraud detection use case.", "bbox": {"l": 165.6003, "t": 252.52728000000002, "r": 407.28174, "b": 261.74030000000005, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "-", "bbox": {"l": 152.04077, "t": 269.50708, "r": 157.57953, "b": 278.72009, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Fashion-MNIST clothing classification with PyTorch on Cloud Pak for Data on IBM Z ", "bbox": {"l": 165.60031, "t": 269.50708, "r": 539.96179, "b": 278.72009, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "and IBM LinuxONE is a Fashion-MNIST clothing classification use case.", "bbox": {"l": 165.60031, "t": 281.50693, "r": 484.39898999999997, "b": 290.71991, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "-", "bbox": {"l": 152.03976, "t": 298.48672, "r": 157.57753, "b": 307.69971, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Payment Card Fraud Prevention by using Snap ML on IBM Cloud Pak for Data on Red ", "bbox": {"l": 165.5993, "t": 298.48672, "r": 547.26764, "b": 307.69971, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Hat OpenShift on a virtual machine on IBM Z and IBM LinuxONE, which leverage the ", "bbox": {"l": 165.5993, "t": 310.48654, "r": 543.95587, "b": 319.69952, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "z16", "bbox": {"l": 165.5993, "t": 322.48635999999993, "r": 181.70822, "b": 331.69934, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "integrated AI accelerator describes a use case that uses Snap Machine Learning ", "bbox": {"l": 184.48631, "t": 322.48635999999993, "r": 544.4187, "b": 331.69934, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "in Cloud Pak for Data on IBM Z and IBM LinuxONE. It is a Snap ML use case.", "bbox": {"l": 165.5993, "t": 334.48618000000005, "r": 510.15149, "b": 343.69916, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "A companion video can be found at Credit Card Fraud Detection by using Snap ML on ", "bbox": {"l": 165.5993, "t": 351.52576, "r": 547.19281, "b": 360.73874, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "IBM Cloud Pak for Data on IBM Z and IBM LinuxONE.", "bbox": {"l": 165.59933, "t": 363.52557, "r": 405.00787, "b": 372.73856, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "Summary", "bbox": {"l": 64.800003, "t": 401.2207, "r": 137.60794, "b": 415.9837, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "This IBM Redbooksfi publication presented an overview of how IBM Cloud Pak for Data on ", "bbox": {"l": 136.8, "t": 433.48874, "r": 541.99463, "b": 442.70172, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "IBM Z can modernize your data infrastructure; develop and deploy ML and AI models; and ", "bbox": {"l": 136.8, "t": 445.48856, "r": 537.89514, "b": 454.70154, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "instantiate highly efficient analytics deployment on IBM LinuxONE. This publication ", "bbox": {"l": 136.8, "t": 457.48837000000003, "r": 505.11172000000005, "b": 466.70135, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "demonstrated these tasks by guiding the reader through five common use cases where CP4D ", "bbox": {"l": 136.8, "t": 469.48819, "r": 547.16486, "b": 478.70117, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "on IBM Z and IBM LinuxONE uses the different features that are supported on the platform, ", "bbox": {"l": 136.80002, "t": 481.54776, "r": 542.92505, "b": 490.76074, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "and showing how the associated features can help an enterprise to build AI and ML models ", "bbox": {"l": 136.80002, "t": 493.54758, "r": 542.98291, "b": 502.76056, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "with core transactional data, which results in a highly efficient analytics deployment that ", "bbox": {"l": 136.80002, "t": 505.54739, "r": 525.14935, "b": 514.7603799999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "minimizes latency, cost inefficiencies, and potential security exposures that are connected ", "bbox": {"l": 136.8, "t": 517.54721, "r": 536.83246, "b": 526.76019, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "with data transportation.", "bbox": {"l": 136.8, "t": 529.547, "r": 243.47458999999998, "b": 538.76001, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "Authors", "bbox": {"l": 64.800003, "t": 559.37462, "r": 114.55733, "b": 571.36263, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "This publication was produced by a team of specialists from around the world working with ", "bbox": {"l": 136.8, "t": 585.52863, "r": 538.57349, "b": 594.74162, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "the IBM Redbooks team:", "bbox": {"l": 136.8, "t": 597.52843, "r": 246.82411, "b": 606.7414200000001, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Jasmeet Bhatia is ", "bbox": {"l": 136.8, "t": 619.54799, "r": 223.98090000000002, "b": 628.76099, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "an AI on IBM Z Product Manager who supports CP4D on ", "bbox": {"l": 223.97989, "t": 619.54799, "r": 478.39406999999994, "b": 628.76099, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "IBM Z. She has 2.5 years of combined experience as a data scientist and a product manager. ", "bbox": {"l": 136.8, "t": 631.54779, "r": 547.24359, "b": 640.76079, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Jasmeet lives in San Francisco, California and holds a Bachelor of Arts degree in Data ", "bbox": {"l": 136.8, "t": 643.54759, "r": 521.87842, "b": 652.76059, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Science. She is working on her Master of Science degree in Data Science. Her area of ", "bbox": {"l": 136.8, "t": 655.54739, "r": 521.88837, "b": 664.76039, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "expertise includes AI, data science, and product management.", "bbox": {"l": 136.8, "t": 667.5472, "r": 413.00677, "b": 676.7601999999999, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.16203308105469, "t": 754.4970092773438, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9191343188285828, "cells": [{"id": 0, "text": "32 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.21607208251953, "t": 754.80419921875, "r": 267.0744, "b": 764.0835571289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9557995200157166, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.99948120117188, "t": 70.72982025146484, "r": 542.36017, "b": 104.7628173828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9821197390556335, "cells": [{"id": 2, "text": "WML was used for deployment of the pose detection model and generated notifications to ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 536.31464, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "users with web and mobile applications, and it integrates with Fitbit for push notifications so ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 542.36017, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "that hospitals and parents can take preventive actions. ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 380.7294, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "section_header", "bbox": {"l": 64.3565673828125, "t": 132.1417236328125, "r": 223.86055, "b": 147.96367999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9596555233001709, "cells": [{"id": 5, "text": "Additional resources", "bbox": {"l": 64.800003, "t": 133.20068000000003, "r": 223.86055, "b": 147.96367999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "list_item", "bbox": {"l": 135.6084747314453, "t": 164.60169982910156, "r": 547.23254, "b": 186.74152000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9761157631874084, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 165.67809999999997, "r": 141.78, "b": 174.45288000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "The Cloud Pak for Data 4.5 on IBM Z Overview Demo video provides an overview of some ", "bbox": {"l": 151.20016, "t": 165.52868999999998, "r": 547.23254, "b": 174.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "of the more important features of CP4D on IBM Z. ", "bbox": {"l": 151.20016, "t": 177.5285, "r": 374.5701, "b": 186.74152000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 135.61322021484375, "t": 193.5091094970703, "r": 300.06931, "b": 203.72131000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.925189197063446, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 194.65770999999995, "r": 141.78, "b": 203.4325, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "IBM Cloud Pak for Data Tutorials.", "bbox": {"l": 151.20016, "t": 194.50829999999996, "r": 300.06931, "b": 203.72131000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 135.7628173828125, "t": 210.79263305664062, "r": 518.55884, "b": 232.70092999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.977351188659668, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 211.63751000000002, "r": 141.77998, "b": 220.41228999999998, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Here are some additional use cases that use the data science frameworks that are ", "bbox": {"l": 151.20015, "t": 211.48810000000003, "r": 518.55884, "b": 220.70110999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "available as part of CP4D on IBM Z and IBM LinuxONE:", "bbox": {"l": 151.20015, "t": 223.48792000000003, "r": 399.04178, "b": 232.70092999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 151.3540802001953, "t": 240.1075897216797, "r": 527.84058, "b": 261.9636535644531, "coord_origin": "TOPLEFT"}, "confidence": 0.9783041477203369, "cells": [{"id": 14, "text": "-", "bbox": {"l": 152.03978, "t": 240.52747, "r": 157.60841, "b": 249.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Payment Card Fraud Detection by using TensorFlow on CP4D on IBM Z and IBM ", "bbox": {"l": 165.59932, "t": 240.52747, "r": 527.84058, "b": 249.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "LinuxONE is a payment card fraud detection use case.", "bbox": {"l": 165.6003, "t": 252.52728000000002, "r": 407.28174, "b": 261.74030000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "list_item", "bbox": {"l": 151.2523193359375, "t": 268.774658203125, "r": 539.96179, "b": 290.71991, "coord_origin": "TOPLEFT"}, "confidence": 0.976689338684082, "cells": [{"id": 17, "text": "-", "bbox": {"l": 152.04077, "t": 269.50708, "r": 157.57953, "b": 278.72009, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Fashion-MNIST clothing classification with PyTorch on Cloud Pak for Data on IBM Z ", "bbox": {"l": 165.60031, "t": 269.50708, "r": 539.96179, "b": 278.72009, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "and IBM LinuxONE is a Fashion-MNIST clothing classification use case.", "bbox": {"l": 165.60031, "t": 281.50693, "r": 484.39898999999997, "b": 290.71991, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "list_item", "bbox": {"l": 151.19593811035156, "t": 297.4288330078125, "r": 547.26764, "b": 343.69916, "coord_origin": "TOPLEFT"}, "confidence": 0.9813570976257324, "cells": [{"id": 20, "text": "-", "bbox": {"l": 152.03976, "t": 298.48672, "r": 157.57753, "b": 307.69971, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Payment Card Fraud Prevention by using Snap ML on IBM Cloud Pak for Data on Red ", "bbox": {"l": 165.5993, "t": 298.48672, "r": 547.26764, "b": 307.69971, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Hat OpenShift on a virtual machine on IBM Z and IBM LinuxONE, which leverage the ", "bbox": {"l": 165.5993, "t": 310.48654, "r": 543.95587, "b": 319.69952, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "z16", "bbox": {"l": 165.5993, "t": 322.48635999999993, "r": 181.70822, "b": 331.69934, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "integrated AI accelerator describes a use case that uses Snap Machine Learning ", "bbox": {"l": 184.48631, "t": 322.48635999999993, "r": 544.4187, "b": 331.69934, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "in Cloud Pak for Data on IBM Z and IBM LinuxONE. It is a Snap ML use case.", "bbox": {"l": 165.5993, "t": 334.48618000000005, "r": 510.15149, "b": 343.69916, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 165.18856811523438, "t": 350.73284912109375, "r": 547.19281, "b": 372.73856, "coord_origin": "TOPLEFT"}, "confidence": 0.9013206958770752, "cells": [{"id": 26, "text": "A companion video can be found at Credit Card Fraud Detection by using Snap ML on ", "bbox": {"l": 165.5993, "t": 351.52576, "r": 547.19281, "b": 360.73874, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "IBM Cloud Pak for Data on IBM Z and IBM LinuxONE.", "bbox": {"l": 165.59933, "t": 363.52557, "r": 405.00787, "b": 372.73856, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "section_header", "bbox": {"l": 64.41288757324219, "t": 400.2530212402344, "r": 137.74366760253906, "b": 416.2667236328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9588590264320374, "cells": [{"id": 28, "text": "Summary", "bbox": {"l": 64.800003, "t": 401.2207, "r": 137.60794, "b": 415.9837, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 135.86285400390625, "t": 432.6907043457031, "r": 547.16486, "b": 538.8106079101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9881507158279419, "cells": [{"id": 29, "text": "This IBM Redbooksfi publication presented an overview of how IBM Cloud Pak for Data on ", "bbox": {"l": 136.8, "t": 433.48874, "r": 541.99463, "b": 442.70172, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "IBM Z can modernize your data infrastructure; develop and deploy ML and AI models; and ", "bbox": {"l": 136.8, "t": 445.48856, "r": 537.89514, "b": 454.70154, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "instantiate highly efficient analytics deployment on IBM LinuxONE. This publication ", "bbox": {"l": 136.8, "t": 457.48837000000003, "r": 505.11172000000005, "b": 466.70135, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "demonstrated these tasks by guiding the reader through five common use cases where CP4D ", "bbox": {"l": 136.8, "t": 469.48819, "r": 547.16486, "b": 478.70117, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "on IBM Z and IBM LinuxONE uses the different features that are supported on the platform, ", "bbox": {"l": 136.80002, "t": 481.54776, "r": 542.92505, "b": 490.76074, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "and showing how the associated features can help an enterprise to build AI and ML models ", "bbox": {"l": 136.80002, "t": 493.54758, "r": 542.98291, "b": 502.76056, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "with core transactional data, which results in a highly efficient analytics deployment that ", "bbox": {"l": 136.80002, "t": 505.54739, "r": 525.14935, "b": 514.7603799999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "minimizes latency, cost inefficiencies, and potential security exposures that are connected ", "bbox": {"l": 136.8, "t": 517.54721, "r": 536.83246, "b": 526.76019, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "with data transportation.", "bbox": {"l": 136.8, "t": 529.547, "r": 243.47458999999998, "b": 538.76001, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "section_header", "bbox": {"l": 64.06120300292969, "t": 558.3284301757812, "r": 114.58550262451172, "b": 571.36263, "coord_origin": "TOPLEFT"}, "confidence": 0.9354433417320251, "cells": [{"id": 38, "text": "Authors", "bbox": {"l": 64.800003, "t": 559.37462, "r": 114.55733, "b": 571.36263, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "text", "bbox": {"l": 135.81004333496094, "t": 584.623046875, "r": 538.57349, "b": 606.7414200000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9726653099060059, "cells": [{"id": 39, "text": "This publication was produced by a team of specialists from around the world working with ", "bbox": {"l": 136.8, "t": 585.52863, "r": 538.57349, "b": 594.74162, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "the IBM Redbooks team:", "bbox": {"l": 136.8, "t": 597.52843, "r": 246.82411, "b": 606.7414200000001, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "text", "bbox": {"l": 135.75830078125, "t": 618.4910888671875, "r": 547.24359, "b": 676.8506469726562, "coord_origin": "TOPLEFT"}, "confidence": 0.9839816689491272, "cells": [{"id": 41, "text": "Jasmeet Bhatia is ", "bbox": {"l": 136.8, "t": 619.54799, "r": 223.98090000000002, "b": 628.76099, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "an AI on IBM Z Product Manager who supports CP4D on ", "bbox": {"l": 223.97989, "t": 619.54799, "r": 478.39406999999994, "b": 628.76099, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "IBM Z. She has 2.5 years of combined experience as a data scientist and a product manager. ", "bbox": {"l": 136.8, "t": 631.54779, "r": 547.24359, "b": 640.76079, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Jasmeet lives in San Francisco, California and holds a Bachelor of Arts degree in Data ", "bbox": {"l": 136.8, "t": 643.54759, "r": 521.87842, "b": 652.76059, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Science. She is working on her Master of Science degree in Data Science. Her area of ", "bbox": {"l": 136.8, "t": 655.54739, "r": 521.88837, "b": 664.76039, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "expertise includes AI, data science, and product management.", "bbox": {"l": 136.8, "t": 667.5472, "r": 413.00677, "b": 676.7601999999999, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 33, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.16203308105469, "t": 754.4970092773438, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9191343188285828, "cells": [{"id": 0, "text": "32 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "32"}, {"label": "page_footer", "id": 1, "page_no": 33, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.21607208251953, "t": 754.80419921875, "r": 267.0744, "b": 764.0835571289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9557995200157166, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"label": "text", "id": 2, "page_no": 33, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.99948120117188, "t": 70.72982025146484, "r": 542.36017, "b": 104.7628173828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9821197390556335, "cells": [{"id": 2, "text": "WML was used for deployment of the pose detection model and generated notifications to ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 536.31464, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "users with web and mobile applications, and it integrates with Fitbit for push notifications so ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 542.36017, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "that hospitals and parents can take preventive actions. ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 380.7294, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}]}, "text": "WML was used for deployment of the pose detection model and generated notifications to users with web and mobile applications, and it integrates with Fitbit for push notifications so that hospitals and parents can take preventive actions."}, {"label": "section_header", "id": 3, "page_no": 33, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 64.3565673828125, "t": 132.1417236328125, "r": 223.86055, "b": 147.96367999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9596555233001709, "cells": [{"id": 5, "text": "Additional resources", "bbox": {"l": 64.800003, "t": 133.20068000000003, "r": 223.86055, "b": 147.96367999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Additional resources"}, {"label": "list_item", "id": 4, "page_no": 33, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.6084747314453, "t": 164.60169982910156, "r": 547.23254, "b": 186.74152000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9761157631874084, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 165.67809999999997, "r": 141.78, "b": 174.45288000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "The Cloud Pak for Data 4.5 on IBM Z Overview Demo video provides an overview of some ", "bbox": {"l": 151.20016, "t": 165.52868999999998, "r": 547.23254, "b": 174.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "of the more important features of CP4D on IBM Z. ", "bbox": {"l": 151.20016, "t": 177.5285, "r": 374.5701, "b": 186.74152000000004, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The Cloud Pak for Data 4.5 on IBM Z Overview Demo video provides an overview of some of the more important features of CP4D on IBM Z."}, {"label": "list_item", "id": 5, "page_no": 33, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.61322021484375, "t": 193.5091094970703, "r": 300.06931, "b": 203.72131000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.925189197063446, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 194.65770999999995, "r": 141.78, "b": 203.4325, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "IBM Cloud Pak for Data Tutorials.", "bbox": {"l": 151.20016, "t": 194.50829999999996, "r": 300.06931, "b": 203.72131000000002, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH IBM Cloud Pak for Data Tutorials."}, {"label": "list_item", "id": 6, "page_no": 33, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.7628173828125, "t": 210.79263305664062, "r": 518.55884, "b": 232.70092999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.977351188659668, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 211.63751000000002, "r": 141.77998, "b": 220.41228999999998, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Here are some additional use cases that use the data science frameworks that are ", "bbox": {"l": 151.20015, "t": 211.48810000000003, "r": 518.55884, "b": 220.70110999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "available as part of CP4D on IBM Z and IBM LinuxONE:", "bbox": {"l": 151.20015, "t": 223.48792000000003, "r": 399.04178, "b": 232.70092999999997, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Here are some additional use cases that use the data science frameworks that are available as part of CP4D on IBM Z and IBM LinuxONE:"}, {"label": "list_item", "id": 7, "page_no": 33, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 151.3540802001953, "t": 240.1075897216797, "r": 527.84058, "b": 261.9636535644531, "coord_origin": "TOPLEFT"}, "confidence": 0.9783041477203369, "cells": [{"id": 14, "text": "-", "bbox": {"l": 152.03978, "t": 240.52747, "r": 157.60841, "b": 249.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Payment Card Fraud Detection by using TensorFlow on CP4D on IBM Z and IBM ", "bbox": {"l": 165.59932, "t": 240.52747, "r": 527.84058, "b": 249.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "LinuxONE is a payment card fraud detection use case.", "bbox": {"l": 165.6003, "t": 252.52728000000002, "r": 407.28174, "b": 261.74030000000005, "coord_origin": "TOPLEFT"}}]}, "text": "-Payment Card Fraud Detection by using TensorFlow on CP4D on IBM Z and IBM LinuxONE is a payment card fraud detection use case."}, {"label": "list_item", "id": 8, "page_no": 33, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 151.2523193359375, "t": 268.774658203125, "r": 539.96179, "b": 290.71991, "coord_origin": "TOPLEFT"}, "confidence": 0.976689338684082, "cells": [{"id": 17, "text": "-", "bbox": {"l": 152.04077, "t": 269.50708, "r": 157.57953, "b": 278.72009, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Fashion-MNIST clothing classification with PyTorch on Cloud Pak for Data on IBM Z ", "bbox": {"l": 165.60031, "t": 269.50708, "r": 539.96179, "b": 278.72009, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "and IBM LinuxONE is a Fashion-MNIST clothing classification use case.", "bbox": {"l": 165.60031, "t": 281.50693, "r": 484.39898999999997, "b": 290.71991, "coord_origin": "TOPLEFT"}}]}, "text": "-Fashion-MNIST clothing classification with PyTorch on Cloud Pak for Data on IBM Z and IBM LinuxONE is a Fashion-MNIST clothing classification use case."}, {"label": "list_item", "id": 9, "page_no": 33, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 151.19593811035156, "t": 297.4288330078125, "r": 547.26764, "b": 343.69916, "coord_origin": "TOPLEFT"}, "confidence": 0.9813570976257324, "cells": [{"id": 20, "text": "-", "bbox": {"l": 152.03976, "t": 298.48672, "r": 157.57753, "b": 307.69971, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Payment Card Fraud Prevention by using Snap ML on IBM Cloud Pak for Data on Red ", "bbox": {"l": 165.5993, "t": 298.48672, "r": 547.26764, "b": 307.69971, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Hat OpenShift on a virtual machine on IBM Z and IBM LinuxONE, which leverage the ", "bbox": {"l": 165.5993, "t": 310.48654, "r": 543.95587, "b": 319.69952, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "z16", "bbox": {"l": 165.5993, "t": 322.48635999999993, "r": 181.70822, "b": 331.69934, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "integrated AI accelerator describes a use case that uses Snap Machine Learning ", "bbox": {"l": 184.48631, "t": 322.48635999999993, "r": 544.4187, "b": 331.69934, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "in Cloud Pak for Data on IBM Z and IBM LinuxONE. It is a Snap ML use case.", "bbox": {"l": 165.5993, "t": 334.48618000000005, "r": 510.15149, "b": 343.69916, "coord_origin": "TOPLEFT"}}]}, "text": "-Payment Card Fraud Prevention by using Snap ML on IBM Cloud Pak for Data on Red Hat OpenShift on a virtual machine on IBM Z and IBM LinuxONE, which leverage the z16 integrated AI accelerator describes a use case that uses Snap Machine Learning in Cloud Pak for Data on IBM Z and IBM LinuxONE. It is a Snap ML use case."}, {"label": "text", "id": 10, "page_no": 33, "cluster": {"id": 10, "label": "text", "bbox": {"l": 165.18856811523438, "t": 350.73284912109375, "r": 547.19281, "b": 372.73856, "coord_origin": "TOPLEFT"}, "confidence": 0.9013206958770752, "cells": [{"id": 26, "text": "A companion video can be found at Credit Card Fraud Detection by using Snap ML on ", "bbox": {"l": 165.5993, "t": 351.52576, "r": 547.19281, "b": 360.73874, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "IBM Cloud Pak for Data on IBM Z and IBM LinuxONE.", "bbox": {"l": 165.59933, "t": 363.52557, "r": 405.00787, "b": 372.73856, "coord_origin": "TOPLEFT"}}]}, "text": "A companion video can be found at Credit Card Fraud Detection by using Snap ML on IBM Cloud Pak for Data on IBM Z and IBM LinuxONE."}, {"label": "section_header", "id": 11, "page_no": 33, "cluster": {"id": 11, "label": "section_header", "bbox": {"l": 64.41288757324219, "t": 400.2530212402344, "r": 137.74366760253906, "b": 416.2667236328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9588590264320374, "cells": [{"id": 28, "text": "Summary", "bbox": {"l": 64.800003, "t": 401.2207, "r": 137.60794, "b": 415.9837, "coord_origin": "TOPLEFT"}}]}, "text": "Summary"}, {"label": "text", "id": 12, "page_no": 33, "cluster": {"id": 12, "label": "text", "bbox": {"l": 135.86285400390625, "t": 432.6907043457031, "r": 547.16486, "b": 538.8106079101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9881507158279419, "cells": [{"id": 29, "text": "This IBM Redbooksfi publication presented an overview of how IBM Cloud Pak for Data on ", "bbox": {"l": 136.8, "t": 433.48874, "r": 541.99463, "b": 442.70172, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "IBM Z can modernize your data infrastructure; develop and deploy ML and AI models; and ", "bbox": {"l": 136.8, "t": 445.48856, "r": 537.89514, "b": 454.70154, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "instantiate highly efficient analytics deployment on IBM LinuxONE. This publication ", "bbox": {"l": 136.8, "t": 457.48837000000003, "r": 505.11172000000005, "b": 466.70135, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "demonstrated these tasks by guiding the reader through five common use cases where CP4D ", "bbox": {"l": 136.8, "t": 469.48819, "r": 547.16486, "b": 478.70117, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "on IBM Z and IBM LinuxONE uses the different features that are supported on the platform, ", "bbox": {"l": 136.80002, "t": 481.54776, "r": 542.92505, "b": 490.76074, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "and showing how the associated features can help an enterprise to build AI and ML models ", "bbox": {"l": 136.80002, "t": 493.54758, "r": 542.98291, "b": 502.76056, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "with core transactional data, which results in a highly efficient analytics deployment that ", "bbox": {"l": 136.80002, "t": 505.54739, "r": 525.14935, "b": 514.7603799999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "minimizes latency, cost inefficiencies, and potential security exposures that are connected ", "bbox": {"l": 136.8, "t": 517.54721, "r": 536.83246, "b": 526.76019, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "with data transportation.", "bbox": {"l": 136.8, "t": 529.547, "r": 243.47458999999998, "b": 538.76001, "coord_origin": "TOPLEFT"}}]}, "text": "This IBM Redbooksfi publication presented an overview of how IBM Cloud Pak for Data on IBM Z can modernize your data infrastructure; develop and deploy ML and AI models; and instantiate highly efficient analytics deployment on IBM LinuxONE. This publication demonstrated these tasks by guiding the reader through five common use cases where CP4D on IBM Z and IBM LinuxONE uses the different features that are supported on the platform, and showing how the associated features can help an enterprise to build AI and ML models with core transactional data, which results in a highly efficient analytics deployment that minimizes latency, cost inefficiencies, and potential security exposures that are connected with data transportation."}, {"label": "section_header", "id": 13, "page_no": 33, "cluster": {"id": 13, "label": "section_header", "bbox": {"l": 64.06120300292969, "t": 558.3284301757812, "r": 114.58550262451172, "b": 571.36263, "coord_origin": "TOPLEFT"}, "confidence": 0.9354433417320251, "cells": [{"id": 38, "text": "Authors", "bbox": {"l": 64.800003, "t": 559.37462, "r": 114.55733, "b": 571.36263, "coord_origin": "TOPLEFT"}}]}, "text": "Authors"}, {"label": "text", "id": 14, "page_no": 33, "cluster": {"id": 14, "label": "text", "bbox": {"l": 135.81004333496094, "t": 584.623046875, "r": 538.57349, "b": 606.7414200000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9726653099060059, "cells": [{"id": 39, "text": "This publication was produced by a team of specialists from around the world working with ", "bbox": {"l": 136.8, "t": 585.52863, "r": 538.57349, "b": 594.74162, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "the IBM Redbooks team:", "bbox": {"l": 136.8, "t": 597.52843, "r": 246.82411, "b": 606.7414200000001, "coord_origin": "TOPLEFT"}}]}, "text": "This publication was produced by a team of specialists from around the world working with the IBM Redbooks team:"}, {"label": "text", "id": 15, "page_no": 33, "cluster": {"id": 15, "label": "text", "bbox": {"l": 135.75830078125, "t": 618.4910888671875, "r": 547.24359, "b": 676.8506469726562, "coord_origin": "TOPLEFT"}, "confidence": 0.9839816689491272, "cells": [{"id": 41, "text": "Jasmeet Bhatia is ", "bbox": {"l": 136.8, "t": 619.54799, "r": 223.98090000000002, "b": 628.76099, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "an AI on IBM Z Product Manager who supports CP4D on ", "bbox": {"l": 223.97989, "t": 619.54799, "r": 478.39406999999994, "b": 628.76099, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "IBM Z. She has 2.5 years of combined experience as a data scientist and a product manager. ", "bbox": {"l": 136.8, "t": 631.54779, "r": 547.24359, "b": 640.76079, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Jasmeet lives in San Francisco, California and holds a Bachelor of Arts degree in Data ", "bbox": {"l": 136.8, "t": 643.54759, "r": 521.87842, "b": 652.76059, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Science. She is working on her Master of Science degree in Data Science. Her area of ", "bbox": {"l": 136.8, "t": 655.54739, "r": 521.88837, "b": 664.76039, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "expertise includes AI, data science, and product management.", "bbox": {"l": 136.8, "t": 667.5472, "r": 413.00677, "b": 676.7601999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Jasmeet Bhatia is an AI on IBM Z Product Manager who supports CP4D on IBM Z. She has 2.5 years of combined experience as a data scientist and a product manager. Jasmeet lives in San Francisco, California and holds a Bachelor of Arts degree in Data Science. She is working on her Master of Science degree in Data Science. Her area of expertise includes AI, data science, and product management."}], "body": [{"label": "text", "id": 2, "page_no": 33, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.99948120117188, "t": 70.72982025146484, "r": 542.36017, "b": 104.7628173828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9821197390556335, "cells": [{"id": 2, "text": "WML was used for deployment of the pose detection model and generated notifications to ", "bbox": {"l": 136.8, "t": 71.50867000000005, "r": 536.31464, "b": 80.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "users with web and mobile applications, and it integrates with Fitbit for push notifications so ", "bbox": {"l": 136.8, "t": 83.50847999999996, "r": 542.36017, "b": 92.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "that hospitals and parents can take preventive actions. ", "bbox": {"l": 136.8, "t": 95.50829999999996, "r": 380.7294, "b": 104.72131000000002, "coord_origin": "TOPLEFT"}}]}, "text": "WML was used for deployment of the pose detection model and generated notifications to users with web and mobile applications, and it integrates with Fitbit for push notifications so that hospitals and parents can take preventive actions."}, {"label": "section_header", "id": 3, "page_no": 33, "cluster": {"id": 3, "label": "section_header", "bbox": {"l": 64.3565673828125, "t": 132.1417236328125, "r": 223.86055, "b": 147.96367999999995, "coord_origin": "TOPLEFT"}, "confidence": 0.9596555233001709, "cells": [{"id": 5, "text": "Additional resources", "bbox": {"l": 64.800003, "t": 133.20068000000003, "r": 223.86055, "b": 147.96367999999995, "coord_origin": "TOPLEFT"}}]}, "text": "Additional resources"}, {"label": "list_item", "id": 4, "page_no": 33, "cluster": {"id": 4, "label": "list_item", "bbox": {"l": 135.6084747314453, "t": 164.60169982910156, "r": 547.23254, "b": 186.74152000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9761157631874084, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 165.67809999999997, "r": 141.78, "b": 174.45288000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "The Cloud Pak for Data 4.5 on IBM Z Overview Demo video provides an overview of some ", "bbox": {"l": 151.20016, "t": 165.52868999999998, "r": 547.23254, "b": 174.74170000000004, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "of the more important features of CP4D on IBM Z. ", "bbox": {"l": 151.20016, "t": 177.5285, "r": 374.5701, "b": 186.74152000000004, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH The Cloud Pak for Data 4.5 on IBM Z Overview Demo video provides an overview of some of the more important features of CP4D on IBM Z."}, {"label": "list_item", "id": 5, "page_no": 33, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.61322021484375, "t": 193.5091094970703, "r": 300.06931, "b": 203.72131000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.925189197063446, "cells": [{"id": 9, "text": "GLYPH", "bbox": {"l": 136.8, "t": 194.65770999999995, "r": 141.78, "b": 203.4325, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "IBM Cloud Pak for Data Tutorials.", "bbox": {"l": 151.20016, "t": 194.50829999999996, "r": 300.06931, "b": 203.72131000000002, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH IBM Cloud Pak for Data Tutorials."}, {"label": "list_item", "id": 6, "page_no": 33, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 135.7628173828125, "t": 210.79263305664062, "r": 518.55884, "b": 232.70092999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.977351188659668, "cells": [{"id": 11, "text": "GLYPH", "bbox": {"l": 136.79999, "t": 211.63751000000002, "r": 141.77998, "b": 220.41228999999998, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "Here are some additional use cases that use the data science frameworks that are ", "bbox": {"l": 151.20015, "t": 211.48810000000003, "r": 518.55884, "b": 220.70110999999997, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "available as part of CP4D on IBM Z and IBM LinuxONE:", "bbox": {"l": 151.20015, "t": 223.48792000000003, "r": 399.04178, "b": 232.70092999999997, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Here are some additional use cases that use the data science frameworks that are available as part of CP4D on IBM Z and IBM LinuxONE:"}, {"label": "list_item", "id": 7, "page_no": 33, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 151.3540802001953, "t": 240.1075897216797, "r": 527.84058, "b": 261.9636535644531, "coord_origin": "TOPLEFT"}, "confidence": 0.9783041477203369, "cells": [{"id": 14, "text": "-", "bbox": {"l": 152.03978, "t": 240.52747, "r": 157.60841, "b": 249.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Payment Card Fraud Detection by using TensorFlow on CP4D on IBM Z and IBM ", "bbox": {"l": 165.59932, "t": 240.52747, "r": 527.84058, "b": 249.74048000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "LinuxONE is a payment card fraud detection use case.", "bbox": {"l": 165.6003, "t": 252.52728000000002, "r": 407.28174, "b": 261.74030000000005, "coord_origin": "TOPLEFT"}}]}, "text": "-Payment Card Fraud Detection by using TensorFlow on CP4D on IBM Z and IBM LinuxONE is a payment card fraud detection use case."}, {"label": "list_item", "id": 8, "page_no": 33, "cluster": {"id": 8, "label": "list_item", "bbox": {"l": 151.2523193359375, "t": 268.774658203125, "r": 539.96179, "b": 290.71991, "coord_origin": "TOPLEFT"}, "confidence": 0.976689338684082, "cells": [{"id": 17, "text": "-", "bbox": {"l": 152.04077, "t": 269.50708, "r": 157.57953, "b": 278.72009, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Fashion-MNIST clothing classification with PyTorch on Cloud Pak for Data on IBM Z ", "bbox": {"l": 165.60031, "t": 269.50708, "r": 539.96179, "b": 278.72009, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "and IBM LinuxONE is a Fashion-MNIST clothing classification use case.", "bbox": {"l": 165.60031, "t": 281.50693, "r": 484.39898999999997, "b": 290.71991, "coord_origin": "TOPLEFT"}}]}, "text": "-Fashion-MNIST clothing classification with PyTorch on Cloud Pak for Data on IBM Z and IBM LinuxONE is a Fashion-MNIST clothing classification use case."}, {"label": "list_item", "id": 9, "page_no": 33, "cluster": {"id": 9, "label": "list_item", "bbox": {"l": 151.19593811035156, "t": 297.4288330078125, "r": 547.26764, "b": 343.69916, "coord_origin": "TOPLEFT"}, "confidence": 0.9813570976257324, "cells": [{"id": 20, "text": "-", "bbox": {"l": 152.03976, "t": 298.48672, "r": 157.57753, "b": 307.69971, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Payment Card Fraud Prevention by using Snap ML on IBM Cloud Pak for Data on Red ", "bbox": {"l": 165.5993, "t": 298.48672, "r": 547.26764, "b": 307.69971, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Hat OpenShift on a virtual machine on IBM Z and IBM LinuxONE, which leverage the ", "bbox": {"l": 165.5993, "t": 310.48654, "r": 543.95587, "b": 319.69952, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "z16", "bbox": {"l": 165.5993, "t": 322.48635999999993, "r": 181.70822, "b": 331.69934, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "integrated AI accelerator describes a use case that uses Snap Machine Learning ", "bbox": {"l": 184.48631, "t": 322.48635999999993, "r": 544.4187, "b": 331.69934, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "in Cloud Pak for Data on IBM Z and IBM LinuxONE. It is a Snap ML use case.", "bbox": {"l": 165.5993, "t": 334.48618000000005, "r": 510.15149, "b": 343.69916, "coord_origin": "TOPLEFT"}}]}, "text": "-Payment Card Fraud Prevention by using Snap ML on IBM Cloud Pak for Data on Red Hat OpenShift on a virtual machine on IBM Z and IBM LinuxONE, which leverage the z16 integrated AI accelerator describes a use case that uses Snap Machine Learning in Cloud Pak for Data on IBM Z and IBM LinuxONE. It is a Snap ML use case."}, {"label": "text", "id": 10, "page_no": 33, "cluster": {"id": 10, "label": "text", "bbox": {"l": 165.18856811523438, "t": 350.73284912109375, "r": 547.19281, "b": 372.73856, "coord_origin": "TOPLEFT"}, "confidence": 0.9013206958770752, "cells": [{"id": 26, "text": "A companion video can be found at Credit Card Fraud Detection by using Snap ML on ", "bbox": {"l": 165.5993, "t": 351.52576, "r": 547.19281, "b": 360.73874, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "IBM Cloud Pak for Data on IBM Z and IBM LinuxONE.", "bbox": {"l": 165.59933, "t": 363.52557, "r": 405.00787, "b": 372.73856, "coord_origin": "TOPLEFT"}}]}, "text": "A companion video can be found at Credit Card Fraud Detection by using Snap ML on IBM Cloud Pak for Data on IBM Z and IBM LinuxONE."}, {"label": "section_header", "id": 11, "page_no": 33, "cluster": {"id": 11, "label": "section_header", "bbox": {"l": 64.41288757324219, "t": 400.2530212402344, "r": 137.74366760253906, "b": 416.2667236328125, "coord_origin": "TOPLEFT"}, "confidence": 0.9588590264320374, "cells": [{"id": 28, "text": "Summary", "bbox": {"l": 64.800003, "t": 401.2207, "r": 137.60794, "b": 415.9837, "coord_origin": "TOPLEFT"}}]}, "text": "Summary"}, {"label": "text", "id": 12, "page_no": 33, "cluster": {"id": 12, "label": "text", "bbox": {"l": 135.86285400390625, "t": 432.6907043457031, "r": 547.16486, "b": 538.8106079101562, "coord_origin": "TOPLEFT"}, "confidence": 0.9881507158279419, "cells": [{"id": 29, "text": "This IBM Redbooksfi publication presented an overview of how IBM Cloud Pak for Data on ", "bbox": {"l": 136.8, "t": 433.48874, "r": 541.99463, "b": 442.70172, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "IBM Z can modernize your data infrastructure; develop and deploy ML and AI models; and ", "bbox": {"l": 136.8, "t": 445.48856, "r": 537.89514, "b": 454.70154, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "instantiate highly efficient analytics deployment on IBM LinuxONE. This publication ", "bbox": {"l": 136.8, "t": 457.48837000000003, "r": 505.11172000000005, "b": 466.70135, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "demonstrated these tasks by guiding the reader through five common use cases where CP4D ", "bbox": {"l": 136.8, "t": 469.48819, "r": 547.16486, "b": 478.70117, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "on IBM Z and IBM LinuxONE uses the different features that are supported on the platform, ", "bbox": {"l": 136.80002, "t": 481.54776, "r": 542.92505, "b": 490.76074, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "and showing how the associated features can help an enterprise to build AI and ML models ", "bbox": {"l": 136.80002, "t": 493.54758, "r": 542.98291, "b": 502.76056, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "with core transactional data, which results in a highly efficient analytics deployment that ", "bbox": {"l": 136.80002, "t": 505.54739, "r": 525.14935, "b": 514.7603799999999, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "minimizes latency, cost inefficiencies, and potential security exposures that are connected ", "bbox": {"l": 136.8, "t": 517.54721, "r": 536.83246, "b": 526.76019, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "with data transportation.", "bbox": {"l": 136.8, "t": 529.547, "r": 243.47458999999998, "b": 538.76001, "coord_origin": "TOPLEFT"}}]}, "text": "This IBM Redbooksfi publication presented an overview of how IBM Cloud Pak for Data on IBM Z can modernize your data infrastructure; develop and deploy ML and AI models; and instantiate highly efficient analytics deployment on IBM LinuxONE. This publication demonstrated these tasks by guiding the reader through five common use cases where CP4D on IBM Z and IBM LinuxONE uses the different features that are supported on the platform, and showing how the associated features can help an enterprise to build AI and ML models with core transactional data, which results in a highly efficient analytics deployment that minimizes latency, cost inefficiencies, and potential security exposures that are connected with data transportation."}, {"label": "section_header", "id": 13, "page_no": 33, "cluster": {"id": 13, "label": "section_header", "bbox": {"l": 64.06120300292969, "t": 558.3284301757812, "r": 114.58550262451172, "b": 571.36263, "coord_origin": "TOPLEFT"}, "confidence": 0.9354433417320251, "cells": [{"id": 38, "text": "Authors", "bbox": {"l": 64.800003, "t": 559.37462, "r": 114.55733, "b": 571.36263, "coord_origin": "TOPLEFT"}}]}, "text": "Authors"}, {"label": "text", "id": 14, "page_no": 33, "cluster": {"id": 14, "label": "text", "bbox": {"l": 135.81004333496094, "t": 584.623046875, "r": 538.57349, "b": 606.7414200000001, "coord_origin": "TOPLEFT"}, "confidence": 0.9726653099060059, "cells": [{"id": 39, "text": "This publication was produced by a team of specialists from around the world working with ", "bbox": {"l": 136.8, "t": 585.52863, "r": 538.57349, "b": 594.74162, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "the IBM Redbooks team:", "bbox": {"l": 136.8, "t": 597.52843, "r": 246.82411, "b": 606.7414200000001, "coord_origin": "TOPLEFT"}}]}, "text": "This publication was produced by a team of specialists from around the world working with the IBM Redbooks team:"}, {"label": "text", "id": 15, "page_no": 33, "cluster": {"id": 15, "label": "text", "bbox": {"l": 135.75830078125, "t": 618.4910888671875, "r": 547.24359, "b": 676.8506469726562, "coord_origin": "TOPLEFT"}, "confidence": 0.9839816689491272, "cells": [{"id": 41, "text": "Jasmeet Bhatia is ", "bbox": {"l": 136.8, "t": 619.54799, "r": 223.98090000000002, "b": 628.76099, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "an AI on IBM Z Product Manager who supports CP4D on ", "bbox": {"l": 223.97989, "t": 619.54799, "r": 478.39406999999994, "b": 628.76099, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "IBM Z. She has 2.5 years of combined experience as a data scientist and a product manager. ", "bbox": {"l": 136.8, "t": 631.54779, "r": 547.24359, "b": 640.76079, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "Jasmeet lives in San Francisco, California and holds a Bachelor of Arts degree in Data ", "bbox": {"l": 136.8, "t": 643.54759, "r": 521.87842, "b": 652.76059, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "Science. She is working on her Master of Science degree in Data Science. Her area of ", "bbox": {"l": 136.8, "t": 655.54739, "r": 521.88837, "b": 664.76039, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "expertise includes AI, data science, and product management.", "bbox": {"l": 136.8, "t": 667.5472, "r": 413.00677, "b": 676.7601999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Jasmeet Bhatia is an AI on IBM Z Product Manager who supports CP4D on IBM Z. She has 2.5 years of combined experience as a data scientist and a product manager. Jasmeet lives in San Francisco, California and holds a Bachelor of Arts degree in Data Science. She is working on her Master of Science degree in Data Science. Her area of expertise includes AI, data science, and product management."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 33, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.16203308105469, "t": 754.4970092773438, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9191343188285828, "cells": [{"id": 0, "text": "32 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "32"}, {"label": "page_footer", "id": 1, "page_no": 33, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.21607208251953, "t": 754.80419921875, "r": 267.0744, "b": 764.0835571289062, "coord_origin": "TOPLEFT"}, "confidence": 0.9557995200157166, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}]}}, {"page_no": 34, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "33", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Ravi Gummadi ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 209.51355, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "is a Technical Leader for CP4D on Linux on IBM Z and IBM LinuxONE in ", "bbox": {"l": 209.5793, "t": 71.50903000000005, "r": 534.02026, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "India. He has 18+ years of experience in the design and development of enterprise software ", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 546.04022, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "for various platforms, including IBM Z and IBM LinuxONE. He holds a master\u2019s degree in ", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 531.25623, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "computer science and engineering from the Indian Institute of Technology Madras (IIT ", "bbox": {"l": 136.79959, "t": 107.50847999999996, "r": 519.07434, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Madras). His areas of expertise include compilers, virtualization, big data analytics, ", "bbox": {"l": 136.79959, "t": 119.50829999999996, "r": 505.08148, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "containers, data, and AI, with a special focus on open-source ecosystems. ", "bbox": {"l": 136.79855, "t": 131.50811999999996, "r": 467.94659, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Chandra Shekhar Reddy Potula ", "bbox": {"l": 136.79855, "t": 153.52770999999996, "r": 288.96045, "b": 162.74072, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "is a Lead AI on zSystems team Architect for Linux on IBM ", "bbox": {"l": 288.95847, "t": 153.52770999999996, "r": 546.88873, "b": 162.74072, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Z and LinuxONE in India. He has 18+ years of experience in the design and development of ", "bbox": {"l": 136.79855, "t": 165.52752999999996, "r": 545.47125, "b": 174.74054, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "enterprise software and firmware for various platforms, including IBM Z and LinuxONE. He ", "bbox": {"l": 136.79857, "t": 177.52733999999998, "r": 538.87372, "b": 186.74036, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "holds a degree in computer science of engineering from Jawaharlal Nehru Technological ", "bbox": {"l": 136.79857, "t": 189.52715999999998, "r": 531.29541, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "University (JNTU). His areas of expertise include networking, virtualization, containers, data, ", "bbox": {"l": 136.79857, "t": 201.52697999999998, "r": 546.87366, "b": 210.73999000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "and AI, with a special focus on open-source ecosystems.", "bbox": {"l": 136.79857, "t": 213.52679, "r": 388.51468, "b": 222.73981000000003, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "Srirama Sharma ", "bbox": {"l": 136.79857, "t": 235.48657000000003, "r": 216.27138, "b": 244.69957999999997, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "is a Lead Technical Architect for IBM Cloud Pak, IBM Instanafi, ", "bbox": {"l": 216.23852999999997, "t": 235.48657000000003, "r": 499.78781, "b": 244.69957999999997, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "IBM Turbonomicfi, and Red Hat Advanced Cluster Management for Kubernetes (RHACM) on ", "bbox": {"l": 136.79855, "t": 247.48639000000003, "r": 547.2561, "b": 256.69939999999997, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "IBM Z and LinuxONE. He has 18+ years of experience in UNIX and Linux application and ", "bbox": {"l": 136.79855, "t": 259.48621, "r": 534.36774, "b": 268.69921999999997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "device driver development. He designs ISV solutions on IBM Systems and IBM Blockchainfi. ", "bbox": {"l": 136.79854, "t": 271.48602000000005, "r": 547.16455, "b": 280.69904, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "He also works on cloud-native adoption of enterprise solutions on IBM Z and LinuxONE. ", "bbox": {"l": 136.79854, "t": 283.48587, "r": 528.54132, "b": 292.69885, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Srirama holds a Bachelor of Engineering degree in computer science from Visvesvaraya ", "bbox": {"l": 136.79854, "t": 295.4856899999999, "r": 529.62482, "b": 304.69867, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Technological University (VTU). He lives in Bangalore, Karnataka. His areas of expertise ", "bbox": {"l": 136.79854, "t": 307.4855, "r": 530.67371, "b": 316.69849, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "include UNIX and Linux systems programming, virtualization, performance benchmarking of ", "bbox": {"l": 136.79854, "t": 319.48532, "r": 544.58588, "b": 328.69829999999996, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Financial Services Sector (FSS) industry solutions, open-source ecosystems, server ", "bbox": {"l": 136.79854, "t": 331.48514, "r": 511.23675999999995, "b": 340.69812, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "infrastructure, and cloud-native adoption and modernization.", "bbox": {"l": 136.79855, "t": 343.48495, "r": 402.9985, "b": 352.69794, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "Thanks to the following people for their contributions to this project:", "bbox": {"l": 136.79855, "t": 365.50452, "r": 432.83963000000006, "b": 374.7174999999999, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "Lydia Parziale, Project Manager", "bbox": {"l": 136.79855, "t": 387.52408, "r": 278.39786, "b": 396.73706, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IBM Redbooks, Poughkeepsie Center", "bbox": {"l": 136.79855, "t": 399.52389999999997, "r": 313.98096, "b": 408.73688, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Shin Kelly Yang, AI on IBM Z Product Management", "bbox": {"l": 136.79855, "t": 421.4837, "r": 364.06973, "b": 430.69669, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "IBM US", "bbox": {"l": 136.79855, "t": 433.48352, "r": 171.76115, "b": 442.6965, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "Tom Ramey, Anna Shugol, Andrew Sica, Jonathan Sloan, Elpida Tzortzatos, Meeta Vouk, ", "bbox": {"l": 136.79855, "t": 455.50308, "r": 537.76233, "b": 464.71606, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "IBM", "bbox": {"l": 136.79855, "t": 467.5029, "r": 155.05524, "b": 476.71588, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Now you can become a published author, too!", "bbox": {"l": 64.800003, "t": 497.39474, "r": 349.12164, "b": 509.38272, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Here\u2019s an opportunity to spotlight your skills, grow your career, and become a published ", "bbox": {"l": 136.8, "t": 523.54874, "r": 527.30768, "b": 532.76172, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "author-all at the same time! Join an IBM Redbooks residency project and help write a book ", "bbox": {"l": 136.80099, "t": 535.54852, "r": 546.79138, "b": 544.76154, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "in your area of expertise, while honing your experience using leading-edge technologies. Your ", "bbox": {"l": 136.80099, "t": 547.54834, "r": 547.34802, "b": 556.76134, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "efforts will help to increase product acceptance and customer satisfaction, as you expand ", "bbox": {"l": 136.80099, "t": 559.54814, "r": 533.99384, "b": 568.7611400000001, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "your network of technical contacts and relationships. Residencies run from two to six weeks ", "bbox": {"l": 136.80099, "t": 571.54794, "r": 544.09027, "b": 580.76094, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "in length, and you can participate either in person or as a remote resident working from your ", "bbox": {"l": 136.80099, "t": 583.54774, "r": 545.73767, "b": 592.7607399999999, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "home base. ", "bbox": {"l": 136.80099, "t": 595.54755, "r": 191.81908, "b": 604.76054, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "Find out more about the residency program, browse the residency index, and apply online at:", "bbox": {"l": 136.80099, "t": 617.50735, "r": 547.34314, "b": 626.72035, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "ibm.com", "bbox": {"l": 136.80099, "t": 634.69632, "r": 171.7805, "b": 643.5208700000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "/redbooks/residencies.html", "bbox": {"l": 171.78052, "t": 634.69632, "r": 301.6788, "b": 643.47107, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 535.5333251953125, "t": 754.4071655273438, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9167296290397644, "cells": [{"id": 0, "text": "33", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "text", "bbox": {"l": 136.0478515625, "t": 70.53443145751953, "r": 546.04022, "b": 140.83328247070312, "coord_origin": "TOPLEFT"}, "confidence": 0.9852789640426636, "cells": [{"id": 1, "text": "Ravi Gummadi ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 209.51355, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "is a Technical Leader for CP4D on Linux on IBM Z and IBM LinuxONE in ", "bbox": {"l": 209.5793, "t": 71.50903000000005, "r": 534.02026, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "India. He has 18+ years of experience in the design and development of enterprise software ", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 546.04022, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "for various platforms, including IBM Z and IBM LinuxONE. He holds a master\u2019s degree in ", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 531.25623, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "computer science and engineering from the Indian Institute of Technology Madras (IIT ", "bbox": {"l": 136.79959, "t": 107.50847999999996, "r": 519.07434, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Madras). His areas of expertise include compilers, virtualization, big data analytics, ", "bbox": {"l": 136.79959, "t": 119.50829999999996, "r": 505.08148, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "containers, data, and AI, with a special focus on open-source ecosystems. ", "bbox": {"l": 136.79855, "t": 131.50811999999996, "r": 467.94659, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 135.68675231933594, "t": 152.5322265625, "r": 546.88873, "b": 222.97750854492188, "coord_origin": "TOPLEFT"}, "confidence": 0.9867506623268127, "cells": [{"id": 8, "text": "Chandra Shekhar Reddy Potula ", "bbox": {"l": 136.79855, "t": 153.52770999999996, "r": 288.96045, "b": 162.74072, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "is a Lead AI on zSystems team Architect for Linux on IBM ", "bbox": {"l": 288.95847, "t": 153.52770999999996, "r": 546.88873, "b": 162.74072, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Z and LinuxONE in India. He has 18+ years of experience in the design and development of ", "bbox": {"l": 136.79855, "t": 165.52752999999996, "r": 545.47125, "b": 174.74054, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "enterprise software and firmware for various platforms, including IBM Z and LinuxONE. He ", "bbox": {"l": 136.79857, "t": 177.52733999999998, "r": 538.87372, "b": 186.74036, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "holds a degree in computer science of engineering from Jawaharlal Nehru Technological ", "bbox": {"l": 136.79857, "t": 189.52715999999998, "r": 531.29541, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "University (JNTU). His areas of expertise include networking, virtualization, containers, data, ", "bbox": {"l": 136.79857, "t": 201.52697999999998, "r": 546.87366, "b": 210.73999000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "and AI, with a special focus on open-source ecosystems.", "bbox": {"l": 136.79857, "t": 213.52679, "r": 388.51468, "b": 222.73981000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 135.7921600341797, "t": 234.6200714111328, "r": 547.2561, "b": 353.1026306152344, "coord_origin": "TOPLEFT"}, "confidence": 0.982275128364563, "cells": [{"id": 15, "text": "Srirama Sharma ", "bbox": {"l": 136.79857, "t": 235.48657000000003, "r": 216.27138, "b": 244.69957999999997, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "is a Lead Technical Architect for IBM Cloud Pak, IBM Instanafi, ", "bbox": {"l": 216.23852999999997, "t": 235.48657000000003, "r": 499.78781, "b": 244.69957999999997, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "IBM Turbonomicfi, and Red Hat Advanced Cluster Management for Kubernetes (RHACM) on ", "bbox": {"l": 136.79855, "t": 247.48639000000003, "r": 547.2561, "b": 256.69939999999997, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "IBM Z and LinuxONE. He has 18+ years of experience in UNIX and Linux application and ", "bbox": {"l": 136.79855, "t": 259.48621, "r": 534.36774, "b": 268.69921999999997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "device driver development. He designs ISV solutions on IBM Systems and IBM Blockchainfi. ", "bbox": {"l": 136.79854, "t": 271.48602000000005, "r": 547.16455, "b": 280.69904, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "He also works on cloud-native adoption of enterprise solutions on IBM Z and LinuxONE. ", "bbox": {"l": 136.79854, "t": 283.48587, "r": 528.54132, "b": 292.69885, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Srirama holds a Bachelor of Engineering degree in computer science from Visvesvaraya ", "bbox": {"l": 136.79854, "t": 295.4856899999999, "r": 529.62482, "b": 304.69867, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Technological University (VTU). He lives in Bangalore, Karnataka. His areas of expertise ", "bbox": {"l": 136.79854, "t": 307.4855, "r": 530.67371, "b": 316.69849, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "include UNIX and Linux systems programming, virtualization, performance benchmarking of ", "bbox": {"l": 136.79854, "t": 319.48532, "r": 544.58588, "b": 328.69829999999996, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Financial Services Sector (FSS) industry solutions, open-source ecosystems, server ", "bbox": {"l": 136.79854, "t": 331.48514, "r": 511.23675999999995, "b": 340.69812, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "infrastructure, and cloud-native adoption and modernization.", "bbox": {"l": 136.79855, "t": 343.48495, "r": 402.9985, "b": 352.69794, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 135.95065307617188, "t": 364.7558288574219, "r": 432.83963000000006, "b": 374.9332580566406, "coord_origin": "TOPLEFT"}, "confidence": 0.9391803741455078, "cells": [{"id": 26, "text": "Thanks to the following people for their contributions to this project:", "bbox": {"l": 136.79855, "t": 365.50452, "r": 432.83963000000006, "b": 374.7174999999999, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 136.16671752929688, "t": 386.804443359375, "r": 314.3034973144531, "b": 408.9226379394531, "coord_origin": "TOPLEFT"}, "confidence": 0.6201915740966797, "cells": [{"id": 27, "text": "Lydia Parziale, Project Manager", "bbox": {"l": 136.79855, "t": 387.52408, "r": 278.39786, "b": 396.73706, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IBM Redbooks, Poughkeepsie Center", "bbox": {"l": 136.79855, "t": 399.52389999999997, "r": 313.98096, "b": 408.73688, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 136.28025817871094, "t": 420.2625427246094, "r": 364.17230224609375, "b": 442.6965, "coord_origin": "TOPLEFT"}, "confidence": 0.6776076555252075, "cells": [{"id": 29, "text": "Shin Kelly Yang, AI on IBM Z Product Management", "bbox": {"l": 136.79855, "t": 421.4837, "r": 364.06973, "b": 430.69669, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "IBM US", "bbox": {"l": 136.79855, "t": 433.48352, "r": 171.76115, "b": 442.6965, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 135.87332153320312, "t": 454.5150146484375, "r": 537.76233, "b": 476.71588, "coord_origin": "TOPLEFT"}, "confidence": 0.9579671621322632, "cells": [{"id": 31, "text": "Tom Ramey, Anna Shugol, Andrew Sica, Jonathan Sloan, Elpida Tzortzatos, Meeta Vouk, ", "bbox": {"l": 136.79855, "t": 455.50308, "r": 537.76233, "b": 464.71606, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "IBM", "bbox": {"l": 136.79855, "t": 467.5029, "r": 155.05524, "b": 476.71588, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "section_header", "bbox": {"l": 64.67491912841797, "t": 496.37939453125, "r": 349.12164, "b": 509.6957702636719, "coord_origin": "TOPLEFT"}, "confidence": 0.9542936682701111, "cells": [{"id": 33, "text": "Now you can become a published author, too!", "bbox": {"l": 64.800003, "t": 497.39474, "r": 349.12164, "b": 509.38272, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 135.876953125, "t": 522.6715698242188, "r": 547.34802, "b": 604.76054, "coord_origin": "TOPLEFT"}, "confidence": 0.9869086146354675, "cells": [{"id": 34, "text": "Here\u2019s an opportunity to spotlight your skills, grow your career, and become a published ", "bbox": {"l": 136.8, "t": 523.54874, "r": 527.30768, "b": 532.76172, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "author-all at the same time! Join an IBM Redbooks residency project and help write a book ", "bbox": {"l": 136.80099, "t": 535.54852, "r": 546.79138, "b": 544.76154, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "in your area of expertise, while honing your experience using leading-edge technologies. Your ", "bbox": {"l": 136.80099, "t": 547.54834, "r": 547.34802, "b": 556.76134, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "efforts will help to increase product acceptance and customer satisfaction, as you expand ", "bbox": {"l": 136.80099, "t": 559.54814, "r": 533.99384, "b": 568.7611400000001, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "your network of technical contacts and relationships. Residencies run from two to six weeks ", "bbox": {"l": 136.80099, "t": 571.54794, "r": 544.09027, "b": 580.76094, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "in length, and you can participate either in person or as a remote resident working from your ", "bbox": {"l": 136.80099, "t": 583.54774, "r": 545.73767, "b": 592.7607399999999, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "home base. ", "bbox": {"l": 136.80099, "t": 595.54755, "r": 191.81908, "b": 604.76054, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 136.39222717285156, "t": 616.6399536132812, "r": 547.34314, "b": 626.9110107421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9211773872375488, "cells": [{"id": 41, "text": "Find out more about the residency program, browse the residency index, and apply online at:", "bbox": {"l": 136.80099, "t": 617.50735, "r": 547.34314, "b": 626.72035, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 136.80099, "t": 634.2457275390625, "r": 301.6788, "b": 643.5208700000001, "coord_origin": "TOPLEFT"}, "confidence": 0.8940768241882324, "cells": [{"id": 42, "text": "ibm.com", "bbox": {"l": 136.80099, "t": 634.69632, "r": 171.7805, "b": 643.5208700000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "/redbooks/residencies.html", "bbox": {"l": 171.78052, "t": 634.69632, "r": 301.6788, "b": 643.47107, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 34, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 535.5333251953125, "t": 754.4071655273438, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9167296290397644, "cells": [{"id": 0, "text": "33", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "33"}, {"label": "text", "id": 1, "page_no": 34, "cluster": {"id": 1, "label": "text", "bbox": {"l": 136.0478515625, "t": 70.53443145751953, "r": 546.04022, "b": 140.83328247070312, "coord_origin": "TOPLEFT"}, "confidence": 0.9852789640426636, "cells": [{"id": 1, "text": "Ravi Gummadi ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 209.51355, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "is a Technical Leader for CP4D on Linux on IBM Z and IBM LinuxONE in ", "bbox": {"l": 209.5793, "t": 71.50903000000005, "r": 534.02026, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "India. He has 18+ years of experience in the design and development of enterprise software ", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 546.04022, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "for various platforms, including IBM Z and IBM LinuxONE. He holds a master\u2019s degree in ", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 531.25623, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "computer science and engineering from the Indian Institute of Technology Madras (IIT ", "bbox": {"l": 136.79959, "t": 107.50847999999996, "r": 519.07434, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Madras). His areas of expertise include compilers, virtualization, big data analytics, ", "bbox": {"l": 136.79959, "t": 119.50829999999996, "r": 505.08148, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "containers, data, and AI, with a special focus on open-source ecosystems. ", "bbox": {"l": 136.79855, "t": 131.50811999999996, "r": 467.94659, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Ravi Gummadi is a Technical Leader for CP4D on Linux on IBM Z and IBM LinuxONE in India. He has 18+ years of experience in the design and development of enterprise software for various platforms, including IBM Z and IBM LinuxONE. He holds a master\u2019s degree in computer science and engineering from the Indian Institute of Technology Madras (IIT Madras). His areas of expertise include compilers, virtualization, big data analytics, containers, data, and AI, with a special focus on open-source ecosystems."}, {"label": "text", "id": 2, "page_no": 34, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.68675231933594, "t": 152.5322265625, "r": 546.88873, "b": 222.97750854492188, "coord_origin": "TOPLEFT"}, "confidence": 0.9867506623268127, "cells": [{"id": 8, "text": "Chandra Shekhar Reddy Potula ", "bbox": {"l": 136.79855, "t": 153.52770999999996, "r": 288.96045, "b": 162.74072, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "is a Lead AI on zSystems team Architect for Linux on IBM ", "bbox": {"l": 288.95847, "t": 153.52770999999996, "r": 546.88873, "b": 162.74072, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Z and LinuxONE in India. He has 18+ years of experience in the design and development of ", "bbox": {"l": 136.79855, "t": 165.52752999999996, "r": 545.47125, "b": 174.74054, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "enterprise software and firmware for various platforms, including IBM Z and LinuxONE. He ", "bbox": {"l": 136.79857, "t": 177.52733999999998, "r": 538.87372, "b": 186.74036, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "holds a degree in computer science of engineering from Jawaharlal Nehru Technological ", "bbox": {"l": 136.79857, "t": 189.52715999999998, "r": 531.29541, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "University (JNTU). His areas of expertise include networking, virtualization, containers, data, ", "bbox": {"l": 136.79857, "t": 201.52697999999998, "r": 546.87366, "b": 210.73999000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "and AI, with a special focus on open-source ecosystems.", "bbox": {"l": 136.79857, "t": 213.52679, "r": 388.51468, "b": 222.73981000000003, "coord_origin": "TOPLEFT"}}]}, "text": "Chandra Shekhar Reddy Potula is a Lead AI on zSystems team Architect for Linux on IBM Z and LinuxONE in India. He has 18+ years of experience in the design and development of enterprise software and firmware for various platforms, including IBM Z and LinuxONE. He holds a degree in computer science of engineering from Jawaharlal Nehru Technological University (JNTU). His areas of expertise include networking, virtualization, containers, data, and AI, with a special focus on open-source ecosystems."}, {"label": "text", "id": 3, "page_no": 34, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.7921600341797, "t": 234.6200714111328, "r": 547.2561, "b": 353.1026306152344, "coord_origin": "TOPLEFT"}, "confidence": 0.982275128364563, "cells": [{"id": 15, "text": "Srirama Sharma ", "bbox": {"l": 136.79857, "t": 235.48657000000003, "r": 216.27138, "b": 244.69957999999997, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "is a Lead Technical Architect for IBM Cloud Pak, IBM Instanafi, ", "bbox": {"l": 216.23852999999997, "t": 235.48657000000003, "r": 499.78781, "b": 244.69957999999997, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "IBM Turbonomicfi, and Red Hat Advanced Cluster Management for Kubernetes (RHACM) on ", "bbox": {"l": 136.79855, "t": 247.48639000000003, "r": 547.2561, "b": 256.69939999999997, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "IBM Z and LinuxONE. He has 18+ years of experience in UNIX and Linux application and ", "bbox": {"l": 136.79855, "t": 259.48621, "r": 534.36774, "b": 268.69921999999997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "device driver development. He designs ISV solutions on IBM Systems and IBM Blockchainfi. ", "bbox": {"l": 136.79854, "t": 271.48602000000005, "r": 547.16455, "b": 280.69904, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "He also works on cloud-native adoption of enterprise solutions on IBM Z and LinuxONE. ", "bbox": {"l": 136.79854, "t": 283.48587, "r": 528.54132, "b": 292.69885, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Srirama holds a Bachelor of Engineering degree in computer science from Visvesvaraya ", "bbox": {"l": 136.79854, "t": 295.4856899999999, "r": 529.62482, "b": 304.69867, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Technological University (VTU). He lives in Bangalore, Karnataka. His areas of expertise ", "bbox": {"l": 136.79854, "t": 307.4855, "r": 530.67371, "b": 316.69849, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "include UNIX and Linux systems programming, virtualization, performance benchmarking of ", "bbox": {"l": 136.79854, "t": 319.48532, "r": 544.58588, "b": 328.69829999999996, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Financial Services Sector (FSS) industry solutions, open-source ecosystems, server ", "bbox": {"l": 136.79854, "t": 331.48514, "r": 511.23675999999995, "b": 340.69812, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "infrastructure, and cloud-native adoption and modernization.", "bbox": {"l": 136.79855, "t": 343.48495, "r": 402.9985, "b": 352.69794, "coord_origin": "TOPLEFT"}}]}, "text": "Srirama Sharma is a Lead Technical Architect for IBM Cloud Pak, IBM Instanafi, IBM Turbonomicfi, and Red Hat Advanced Cluster Management for Kubernetes (RHACM) on IBM Z and LinuxONE. He has 18+ years of experience in UNIX and Linux application and device driver development. He designs ISV solutions on IBM Systems and IBM Blockchainfi. He also works on cloud-native adoption of enterprise solutions on IBM Z and LinuxONE. Srirama holds a Bachelor of Engineering degree in computer science from Visvesvaraya Technological University (VTU). He lives in Bangalore, Karnataka. His areas of expertise include UNIX and Linux systems programming, virtualization, performance benchmarking of Financial Services Sector (FSS) industry solutions, open-source ecosystems, server infrastructure, and cloud-native adoption and modernization."}, {"label": "text", "id": 4, "page_no": 34, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.95065307617188, "t": 364.7558288574219, "r": 432.83963000000006, "b": 374.9332580566406, "coord_origin": "TOPLEFT"}, "confidence": 0.9391803741455078, "cells": [{"id": 26, "text": "Thanks to the following people for their contributions to this project:", "bbox": {"l": 136.79855, "t": 365.50452, "r": 432.83963000000006, "b": 374.7174999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Thanks to the following people for their contributions to this project:"}, {"label": "text", "id": 5, "page_no": 34, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.16671752929688, "t": 386.804443359375, "r": 314.3034973144531, "b": 408.9226379394531, "coord_origin": "TOPLEFT"}, "confidence": 0.6201915740966797, "cells": [{"id": 27, "text": "Lydia Parziale, Project Manager", "bbox": {"l": 136.79855, "t": 387.52408, "r": 278.39786, "b": 396.73706, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IBM Redbooks, Poughkeepsie Center", "bbox": {"l": 136.79855, "t": 399.52389999999997, "r": 313.98096, "b": 408.73688, "coord_origin": "TOPLEFT"}}]}, "text": "Lydia Parziale, Project Manager IBM Redbooks, Poughkeepsie Center"}, {"label": "text", "id": 6, "page_no": 34, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.28025817871094, "t": 420.2625427246094, "r": 364.17230224609375, "b": 442.6965, "coord_origin": "TOPLEFT"}, "confidence": 0.6776076555252075, "cells": [{"id": 29, "text": "Shin Kelly Yang, AI on IBM Z Product Management", "bbox": {"l": 136.79855, "t": 421.4837, "r": 364.06973, "b": 430.69669, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "IBM US", "bbox": {"l": 136.79855, "t": 433.48352, "r": 171.76115, "b": 442.6965, "coord_origin": "TOPLEFT"}}]}, "text": "Shin Kelly Yang, AI on IBM Z Product Management IBM US"}, {"label": "text", "id": 7, "page_no": 34, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.87332153320312, "t": 454.5150146484375, "r": 537.76233, "b": 476.71588, "coord_origin": "TOPLEFT"}, "confidence": 0.9579671621322632, "cells": [{"id": 31, "text": "Tom Ramey, Anna Shugol, Andrew Sica, Jonathan Sloan, Elpida Tzortzatos, Meeta Vouk, ", "bbox": {"l": 136.79855, "t": 455.50308, "r": 537.76233, "b": 464.71606, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "IBM", "bbox": {"l": 136.79855, "t": 467.5029, "r": 155.05524, "b": 476.71588, "coord_origin": "TOPLEFT"}}]}, "text": "Tom Ramey, Anna Shugol, Andrew Sica, Jonathan Sloan, Elpida Tzortzatos, Meeta Vouk, IBM"}, {"label": "section_header", "id": 8, "page_no": 34, "cluster": {"id": 8, "label": "section_header", "bbox": {"l": 64.67491912841797, "t": 496.37939453125, "r": 349.12164, "b": 509.6957702636719, "coord_origin": "TOPLEFT"}, "confidence": 0.9542936682701111, "cells": [{"id": 33, "text": "Now you can become a published author, too!", "bbox": {"l": 64.800003, "t": 497.39474, "r": 349.12164, "b": 509.38272, "coord_origin": "TOPLEFT"}}]}, "text": "Now you can become a published author, too!"}, {"label": "text", "id": 9, "page_no": 34, "cluster": {"id": 9, "label": "text", "bbox": {"l": 135.876953125, "t": 522.6715698242188, "r": 547.34802, "b": 604.76054, "coord_origin": "TOPLEFT"}, "confidence": 0.9869086146354675, "cells": [{"id": 34, "text": "Here\u2019s an opportunity to spotlight your skills, grow your career, and become a published ", "bbox": {"l": 136.8, "t": 523.54874, "r": 527.30768, "b": 532.76172, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "author-all at the same time! Join an IBM Redbooks residency project and help write a book ", "bbox": {"l": 136.80099, "t": 535.54852, "r": 546.79138, "b": 544.76154, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "in your area of expertise, while honing your experience using leading-edge technologies. Your ", "bbox": {"l": 136.80099, "t": 547.54834, "r": 547.34802, "b": 556.76134, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "efforts will help to increase product acceptance and customer satisfaction, as you expand ", "bbox": {"l": 136.80099, "t": 559.54814, "r": 533.99384, "b": 568.7611400000001, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "your network of technical contacts and relationships. Residencies run from two to six weeks ", "bbox": {"l": 136.80099, "t": 571.54794, "r": 544.09027, "b": 580.76094, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "in length, and you can participate either in person or as a remote resident working from your ", "bbox": {"l": 136.80099, "t": 583.54774, "r": 545.73767, "b": 592.7607399999999, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "home base. ", "bbox": {"l": 136.80099, "t": 595.54755, "r": 191.81908, "b": 604.76054, "coord_origin": "TOPLEFT"}}]}, "text": "Here\u2019s an opportunity to spotlight your skills, grow your career, and become a published author-all at the same time! Join an IBM Redbooks residency project and help write a book in your area of expertise, while honing your experience using leading-edge technologies. Your efforts will help to increase product acceptance and customer satisfaction, as you expand your network of technical contacts and relationships. Residencies run from two to six weeks in length, and you can participate either in person or as a remote resident working from your home base."}, {"label": "text", "id": 10, "page_no": 34, "cluster": {"id": 10, "label": "text", "bbox": {"l": 136.39222717285156, "t": 616.6399536132812, "r": 547.34314, "b": 626.9110107421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9211773872375488, "cells": [{"id": 41, "text": "Find out more about the residency program, browse the residency index, and apply online at:", "bbox": {"l": 136.80099, "t": 617.50735, "r": 547.34314, "b": 626.72035, "coord_origin": "TOPLEFT"}}]}, "text": "Find out more about the residency program, browse the residency index, and apply online at:"}, {"label": "text", "id": 11, "page_no": 34, "cluster": {"id": 11, "label": "text", "bbox": {"l": 136.80099, "t": 634.2457275390625, "r": 301.6788, "b": 643.5208700000001, "coord_origin": "TOPLEFT"}, "confidence": 0.8940768241882324, "cells": [{"id": 42, "text": "ibm.com", "bbox": {"l": 136.80099, "t": 634.69632, "r": 171.7805, "b": 643.5208700000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "/redbooks/residencies.html", "bbox": {"l": 171.78052, "t": 634.69632, "r": 301.6788, "b": 643.47107, "coord_origin": "TOPLEFT"}}]}, "text": "ibm.com /redbooks/residencies.html"}], "body": [{"label": "text", "id": 1, "page_no": 34, "cluster": {"id": 1, "label": "text", "bbox": {"l": 136.0478515625, "t": 70.53443145751953, "r": 546.04022, "b": 140.83328247070312, "coord_origin": "TOPLEFT"}, "confidence": 0.9852789640426636, "cells": [{"id": 1, "text": "Ravi Gummadi ", "bbox": {"l": 136.79959, "t": 71.50903000000005, "r": 209.51355, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "is a Technical Leader for CP4D on Linux on IBM Z and IBM LinuxONE in ", "bbox": {"l": 209.5793, "t": 71.50903000000005, "r": 534.02026, "b": 80.72204999999985, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "India. He has 18+ years of experience in the design and development of enterprise software ", "bbox": {"l": 136.79959, "t": 83.50885000000017, "r": 546.04022, "b": 92.72185999999999, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "for various platforms, including IBM Z and IBM LinuxONE. He holds a master\u2019s degree in ", "bbox": {"l": 136.79959, "t": 95.50867000000005, "r": 531.25623, "b": 104.72167999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "computer science and engineering from the Indian Institute of Technology Madras (IIT ", "bbox": {"l": 136.79959, "t": 107.50847999999996, "r": 519.07434, "b": 116.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "Madras). His areas of expertise include compilers, virtualization, big data analytics, ", "bbox": {"l": 136.79959, "t": 119.50829999999996, "r": 505.08148, "b": 128.72131000000002, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "containers, data, and AI, with a special focus on open-source ecosystems. ", "bbox": {"l": 136.79855, "t": 131.50811999999996, "r": 467.94659, "b": 140.72113000000002, "coord_origin": "TOPLEFT"}}]}, "text": "Ravi Gummadi is a Technical Leader for CP4D on Linux on IBM Z and IBM LinuxONE in India. He has 18+ years of experience in the design and development of enterprise software for various platforms, including IBM Z and IBM LinuxONE. He holds a master\u2019s degree in computer science and engineering from the Indian Institute of Technology Madras (IIT Madras). His areas of expertise include compilers, virtualization, big data analytics, containers, data, and AI, with a special focus on open-source ecosystems."}, {"label": "text", "id": 2, "page_no": 34, "cluster": {"id": 2, "label": "text", "bbox": {"l": 135.68675231933594, "t": 152.5322265625, "r": 546.88873, "b": 222.97750854492188, "coord_origin": "TOPLEFT"}, "confidence": 0.9867506623268127, "cells": [{"id": 8, "text": "Chandra Shekhar Reddy Potula ", "bbox": {"l": 136.79855, "t": 153.52770999999996, "r": 288.96045, "b": 162.74072, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "is a Lead AI on zSystems team Architect for Linux on IBM ", "bbox": {"l": 288.95847, "t": 153.52770999999996, "r": 546.88873, "b": 162.74072, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Z and LinuxONE in India. He has 18+ years of experience in the design and development of ", "bbox": {"l": 136.79855, "t": 165.52752999999996, "r": 545.47125, "b": 174.74054, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "enterprise software and firmware for various platforms, including IBM Z and LinuxONE. He ", "bbox": {"l": 136.79857, "t": 177.52733999999998, "r": 538.87372, "b": 186.74036, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "holds a degree in computer science of engineering from Jawaharlal Nehru Technological ", "bbox": {"l": 136.79857, "t": 189.52715999999998, "r": 531.29541, "b": 198.74017000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "University (JNTU). His areas of expertise include networking, virtualization, containers, data, ", "bbox": {"l": 136.79857, "t": 201.52697999999998, "r": 546.87366, "b": 210.73999000000003, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "and AI, with a special focus on open-source ecosystems.", "bbox": {"l": 136.79857, "t": 213.52679, "r": 388.51468, "b": 222.73981000000003, "coord_origin": "TOPLEFT"}}]}, "text": "Chandra Shekhar Reddy Potula is a Lead AI on zSystems team Architect for Linux on IBM Z and LinuxONE in India. He has 18+ years of experience in the design and development of enterprise software and firmware for various platforms, including IBM Z and LinuxONE. He holds a degree in computer science of engineering from Jawaharlal Nehru Technological University (JNTU). His areas of expertise include networking, virtualization, containers, data, and AI, with a special focus on open-source ecosystems."}, {"label": "text", "id": 3, "page_no": 34, "cluster": {"id": 3, "label": "text", "bbox": {"l": 135.7921600341797, "t": 234.6200714111328, "r": 547.2561, "b": 353.1026306152344, "coord_origin": "TOPLEFT"}, "confidence": 0.982275128364563, "cells": [{"id": 15, "text": "Srirama Sharma ", "bbox": {"l": 136.79857, "t": 235.48657000000003, "r": 216.27138, "b": 244.69957999999997, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "is a Lead Technical Architect for IBM Cloud Pak, IBM Instanafi, ", "bbox": {"l": 216.23852999999997, "t": 235.48657000000003, "r": 499.78781, "b": 244.69957999999997, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "IBM Turbonomicfi, and Red Hat Advanced Cluster Management for Kubernetes (RHACM) on ", "bbox": {"l": 136.79855, "t": 247.48639000000003, "r": 547.2561, "b": 256.69939999999997, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "IBM Z and LinuxONE. He has 18+ years of experience in UNIX and Linux application and ", "bbox": {"l": 136.79855, "t": 259.48621, "r": 534.36774, "b": 268.69921999999997, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "device driver development. He designs ISV solutions on IBM Systems and IBM Blockchainfi. ", "bbox": {"l": 136.79854, "t": 271.48602000000005, "r": 547.16455, "b": 280.69904, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "He also works on cloud-native adoption of enterprise solutions on IBM Z and LinuxONE. ", "bbox": {"l": 136.79854, "t": 283.48587, "r": 528.54132, "b": 292.69885, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Srirama holds a Bachelor of Engineering degree in computer science from Visvesvaraya ", "bbox": {"l": 136.79854, "t": 295.4856899999999, "r": 529.62482, "b": 304.69867, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Technological University (VTU). He lives in Bangalore, Karnataka. His areas of expertise ", "bbox": {"l": 136.79854, "t": 307.4855, "r": 530.67371, "b": 316.69849, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "include UNIX and Linux systems programming, virtualization, performance benchmarking of ", "bbox": {"l": 136.79854, "t": 319.48532, "r": 544.58588, "b": 328.69829999999996, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "Financial Services Sector (FSS) industry solutions, open-source ecosystems, server ", "bbox": {"l": 136.79854, "t": 331.48514, "r": 511.23675999999995, "b": 340.69812, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "infrastructure, and cloud-native adoption and modernization.", "bbox": {"l": 136.79855, "t": 343.48495, "r": 402.9985, "b": 352.69794, "coord_origin": "TOPLEFT"}}]}, "text": "Srirama Sharma is a Lead Technical Architect for IBM Cloud Pak, IBM Instanafi, IBM Turbonomicfi, and Red Hat Advanced Cluster Management for Kubernetes (RHACM) on IBM Z and LinuxONE. He has 18+ years of experience in UNIX and Linux application and device driver development. He designs ISV solutions on IBM Systems and IBM Blockchainfi. He also works on cloud-native adoption of enterprise solutions on IBM Z and LinuxONE. Srirama holds a Bachelor of Engineering degree in computer science from Visvesvaraya Technological University (VTU). He lives in Bangalore, Karnataka. His areas of expertise include UNIX and Linux systems programming, virtualization, performance benchmarking of Financial Services Sector (FSS) industry solutions, open-source ecosystems, server infrastructure, and cloud-native adoption and modernization."}, {"label": "text", "id": 4, "page_no": 34, "cluster": {"id": 4, "label": "text", "bbox": {"l": 135.95065307617188, "t": 364.7558288574219, "r": 432.83963000000006, "b": 374.9332580566406, "coord_origin": "TOPLEFT"}, "confidence": 0.9391803741455078, "cells": [{"id": 26, "text": "Thanks to the following people for their contributions to this project:", "bbox": {"l": 136.79855, "t": 365.50452, "r": 432.83963000000006, "b": 374.7174999999999, "coord_origin": "TOPLEFT"}}]}, "text": "Thanks to the following people for their contributions to this project:"}, {"label": "text", "id": 5, "page_no": 34, "cluster": {"id": 5, "label": "text", "bbox": {"l": 136.16671752929688, "t": 386.804443359375, "r": 314.3034973144531, "b": 408.9226379394531, "coord_origin": "TOPLEFT"}, "confidence": 0.6201915740966797, "cells": [{"id": 27, "text": "Lydia Parziale, Project Manager", "bbox": {"l": 136.79855, "t": 387.52408, "r": 278.39786, "b": 396.73706, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IBM Redbooks, Poughkeepsie Center", "bbox": {"l": 136.79855, "t": 399.52389999999997, "r": 313.98096, "b": 408.73688, "coord_origin": "TOPLEFT"}}]}, "text": "Lydia Parziale, Project Manager IBM Redbooks, Poughkeepsie Center"}, {"label": "text", "id": 6, "page_no": 34, "cluster": {"id": 6, "label": "text", "bbox": {"l": 136.28025817871094, "t": 420.2625427246094, "r": 364.17230224609375, "b": 442.6965, "coord_origin": "TOPLEFT"}, "confidence": 0.6776076555252075, "cells": [{"id": 29, "text": "Shin Kelly Yang, AI on IBM Z Product Management", "bbox": {"l": 136.79855, "t": 421.4837, "r": 364.06973, "b": 430.69669, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "IBM US", "bbox": {"l": 136.79855, "t": 433.48352, "r": 171.76115, "b": 442.6965, "coord_origin": "TOPLEFT"}}]}, "text": "Shin Kelly Yang, AI on IBM Z Product Management IBM US"}, {"label": "text", "id": 7, "page_no": 34, "cluster": {"id": 7, "label": "text", "bbox": {"l": 135.87332153320312, "t": 454.5150146484375, "r": 537.76233, "b": 476.71588, "coord_origin": "TOPLEFT"}, "confidence": 0.9579671621322632, "cells": [{"id": 31, "text": "Tom Ramey, Anna Shugol, Andrew Sica, Jonathan Sloan, Elpida Tzortzatos, Meeta Vouk, ", "bbox": {"l": 136.79855, "t": 455.50308, "r": 537.76233, "b": 464.71606, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "IBM", "bbox": {"l": 136.79855, "t": 467.5029, "r": 155.05524, "b": 476.71588, "coord_origin": "TOPLEFT"}}]}, "text": "Tom Ramey, Anna Shugol, Andrew Sica, Jonathan Sloan, Elpida Tzortzatos, Meeta Vouk, IBM"}, {"label": "section_header", "id": 8, "page_no": 34, "cluster": {"id": 8, "label": "section_header", "bbox": {"l": 64.67491912841797, "t": 496.37939453125, "r": 349.12164, "b": 509.6957702636719, "coord_origin": "TOPLEFT"}, "confidence": 0.9542936682701111, "cells": [{"id": 33, "text": "Now you can become a published author, too!", "bbox": {"l": 64.800003, "t": 497.39474, "r": 349.12164, "b": 509.38272, "coord_origin": "TOPLEFT"}}]}, "text": "Now you can become a published author, too!"}, {"label": "text", "id": 9, "page_no": 34, "cluster": {"id": 9, "label": "text", "bbox": {"l": 135.876953125, "t": 522.6715698242188, "r": 547.34802, "b": 604.76054, "coord_origin": "TOPLEFT"}, "confidence": 0.9869086146354675, "cells": [{"id": 34, "text": "Here\u2019s an opportunity to spotlight your skills, grow your career, and become a published ", "bbox": {"l": 136.8, "t": 523.54874, "r": 527.30768, "b": 532.76172, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "author-all at the same time! Join an IBM Redbooks residency project and help write a book ", "bbox": {"l": 136.80099, "t": 535.54852, "r": 546.79138, "b": 544.76154, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "in your area of expertise, while honing your experience using leading-edge technologies. Your ", "bbox": {"l": 136.80099, "t": 547.54834, "r": 547.34802, "b": 556.76134, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "efforts will help to increase product acceptance and customer satisfaction, as you expand ", "bbox": {"l": 136.80099, "t": 559.54814, "r": 533.99384, "b": 568.7611400000001, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "your network of technical contacts and relationships. Residencies run from two to six weeks ", "bbox": {"l": 136.80099, "t": 571.54794, "r": 544.09027, "b": 580.76094, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "in length, and you can participate either in person or as a remote resident working from your ", "bbox": {"l": 136.80099, "t": 583.54774, "r": 545.73767, "b": 592.7607399999999, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "home base. ", "bbox": {"l": 136.80099, "t": 595.54755, "r": 191.81908, "b": 604.76054, "coord_origin": "TOPLEFT"}}]}, "text": "Here\u2019s an opportunity to spotlight your skills, grow your career, and become a published author-all at the same time! Join an IBM Redbooks residency project and help write a book in your area of expertise, while honing your experience using leading-edge technologies. Your efforts will help to increase product acceptance and customer satisfaction, as you expand your network of technical contacts and relationships. Residencies run from two to six weeks in length, and you can participate either in person or as a remote resident working from your home base."}, {"label": "text", "id": 10, "page_no": 34, "cluster": {"id": 10, "label": "text", "bbox": {"l": 136.39222717285156, "t": 616.6399536132812, "r": 547.34314, "b": 626.9110107421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9211773872375488, "cells": [{"id": 41, "text": "Find out more about the residency program, browse the residency index, and apply online at:", "bbox": {"l": 136.80099, "t": 617.50735, "r": 547.34314, "b": 626.72035, "coord_origin": "TOPLEFT"}}]}, "text": "Find out more about the residency program, browse the residency index, and apply online at:"}, {"label": "text", "id": 11, "page_no": 34, "cluster": {"id": 11, "label": "text", "bbox": {"l": 136.80099, "t": 634.2457275390625, "r": 301.6788, "b": 643.5208700000001, "coord_origin": "TOPLEFT"}, "confidence": 0.8940768241882324, "cells": [{"id": 42, "text": "ibm.com", "bbox": {"l": 136.80099, "t": 634.69632, "r": 171.7805, "b": 643.5208700000001, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "/redbooks/residencies.html", "bbox": {"l": 171.78052, "t": 634.69632, "r": 301.6788, "b": 643.47107, "coord_origin": "TOPLEFT"}}]}, "text": "ibm.com /redbooks/residencies.html"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 34, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 535.5333251953125, "t": 754.4071655273438, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9167296290397644, "cells": [{"id": 0, "text": "33", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "33"}]}}, {"page_no": 35, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "34 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Stay connected to IBM Redbooks", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 270.48557, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "GLYPH", "bbox": {"l": 136.8, "t": 97.63812000000007, "r": 141.78, "b": 106.41289999999992, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Find us on LinkedIn:", "bbox": {"l": 151.20016, "t": 97.48870999999997, "r": 241.26647999999997, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "http://www.linkedin.com/groups?home=&gid=2130806", "bbox": {"l": 151.20016, "t": 114.67767000000003, "r": 391.07678, "b": 123.45245, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 131.65747, "r": 141.78, "b": 140.43224999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Explore new Redbooks publications, residencies, and workshops with the IBM Redbooks ", "bbox": {"l": 151.20016, "t": 131.50806, "r": 546.83832, "b": 140.72107000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "weekly newsletter:", "bbox": {"l": 151.20016, "t": 143.50787000000003, "r": 232.75266, "b": 152.72089000000005, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "https://www.redbooks.ibm.com/Redbooks.nsf/subscribe?OpenForm", "bbox": {"l": 151.20016, "t": 160.63707999999997, "r": 451.01605, "b": 169.41187000000002, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "GLYPH", "bbox": {"l": 136.8, "t": 177.67664000000002, "r": 141.78, "b": 186.45141999999998, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Stay current on recent Redbooks publications with RSS Feeds:", "bbox": {"l": 151.20016, "t": 177.52722000000006, "r": 430.14783, "b": 186.74023, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "http://www.redbooks.ibm.com/rss.html", "bbox": {"l": 151.20016, "t": 194.65643, "r": 331.07773, "b": 203.43120999999996, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.23326110839844, "t": 754.4552612304688, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9102703928947449, "cells": [{"id": 0, "text": "34 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.27912139892578, "t": 754.7698974609375, "r": 267.0744, "b": 764.12158203125, "coord_origin": "TOPLEFT"}, "confidence": 0.950810968875885, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.4889907836914, "t": 70.36857604980469, "r": 270.48557, "b": 83.64260864257812, "coord_origin": "TOPLEFT"}, "confidence": 0.9555448889732361, "cells": [{"id": 2, "text": "Stay connected to IBM Redbooks", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 270.48557, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "list_item", "bbox": {"l": 135.56192016601562, "t": 96.5151596069336, "r": 241.26647999999997, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}, "confidence": 0.8996357917785645, "cells": [{"id": 3, "text": "GLYPH", "bbox": {"l": 136.8, "t": 97.63812000000007, "r": 141.78, "b": 106.41289999999992, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Find us on LinkedIn:", "bbox": {"l": 151.20016, "t": 97.48870999999997, "r": 241.26647999999997, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 150.71234130859375, "t": 114.1937255859375, "r": 391.07678, "b": 123.93498229980469, "coord_origin": "TOPLEFT"}, "confidence": 0.6805561184883118, "cells": [{"id": 5, "text": "http://www.linkedin.com/groups?home=&gid=2130806", "bbox": {"l": 151.20016, "t": 114.67767000000003, "r": 391.07678, "b": 123.45245, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "list_item", "bbox": {"l": 135.51414489746094, "t": 130.8223114013672, "r": 546.83832, "b": 152.72089000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9532178640365601, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 131.65747, "r": 141.78, "b": 140.43224999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Explore new Redbooks publications, residencies, and workshops with the IBM Redbooks ", "bbox": {"l": 151.20016, "t": 131.50806, "r": 546.83832, "b": 140.72107000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "weekly newsletter:", "bbox": {"l": 151.20016, "t": 143.50787000000003, "r": 232.75266, "b": 152.72089000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "list_item", "bbox": {"l": 150.69110107421875, "t": 159.39158630371094, "r": 451.35418701171875, "b": 169.41187000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.676043689250946, "cells": [{"id": 9, "text": "https://www.redbooks.ibm.com/Redbooks.nsf/subscribe?OpenForm", "bbox": {"l": 151.20016, "t": 160.63707999999997, "r": 451.01605, "b": 169.41187000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "list_item", "bbox": {"l": 135.90457153320312, "t": 176.64987182617188, "r": 430.14783, "b": 187.12718200683594, "coord_origin": "TOPLEFT"}, "confidence": 0.9175106287002563, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.8, "t": 177.67664000000002, "r": 141.78, "b": 186.45141999999998, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Stay current on recent Redbooks publications with RSS Feeds:", "bbox": {"l": 151.20016, "t": 177.52722000000006, "r": 430.14783, "b": 186.74023, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 150.6310272216797, "t": 193.73944091796875, "r": 331.07773, "b": 203.43120999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.7000716924667358, "cells": [{"id": 12, "text": "http://www.redbooks.ibm.com/rss.html", "bbox": {"l": 151.20016, "t": 194.65643, "r": 331.07773, "b": 203.43120999999996, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 35, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.23326110839844, "t": 754.4552612304688, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9102703928947449, "cells": [{"id": 0, "text": "34 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "34"}, {"label": "page_footer", "id": 1, "page_no": 35, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.27912139892578, "t": 754.7698974609375, "r": 267.0744, "b": 764.12158203125, "coord_origin": "TOPLEFT"}, "confidence": 0.950810968875885, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"label": "section_header", "id": 2, "page_no": 35, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.4889907836914, "t": 70.36857604980469, "r": 270.48557, "b": 83.64260864257812, "coord_origin": "TOPLEFT"}, "confidence": 0.9555448889732361, "cells": [{"id": 2, "text": "Stay connected to IBM Redbooks", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 270.48557, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Stay connected to IBM Redbooks"}, {"label": "list_item", "id": 3, "page_no": 35, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 135.56192016601562, "t": 96.5151596069336, "r": 241.26647999999997, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}, "confidence": 0.8996357917785645, "cells": [{"id": 3, "text": "GLYPH", "bbox": {"l": 136.8, "t": 97.63812000000007, "r": 141.78, "b": 106.41289999999992, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Find us on LinkedIn:", "bbox": {"l": 151.20016, "t": 97.48870999999997, "r": 241.26647999999997, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Find us on LinkedIn:"}, {"label": "text", "id": 4, "page_no": 35, "cluster": {"id": 4, "label": "text", "bbox": {"l": 150.71234130859375, "t": 114.1937255859375, "r": 391.07678, "b": 123.93498229980469, "coord_origin": "TOPLEFT"}, "confidence": 0.6805561184883118, "cells": [{"id": 5, "text": "http://www.linkedin.com/groups?home=&gid=2130806", "bbox": {"l": 151.20016, "t": 114.67767000000003, "r": 391.07678, "b": 123.45245, "coord_origin": "TOPLEFT"}}]}, "text": "http://www.linkedin.com/groups?home=&gid=2130806"}, {"label": "list_item", "id": 5, "page_no": 35, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.51414489746094, "t": 130.8223114013672, "r": 546.83832, "b": 152.72089000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9532178640365601, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 131.65747, "r": 141.78, "b": 140.43224999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Explore new Redbooks publications, residencies, and workshops with the IBM Redbooks ", "bbox": {"l": 151.20016, "t": 131.50806, "r": 546.83832, "b": 140.72107000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "weekly newsletter:", "bbox": {"l": 151.20016, "t": 143.50787000000003, "r": 232.75266, "b": 152.72089000000005, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Explore new Redbooks publications, residencies, and workshops with the IBM Redbooks weekly newsletter:"}, {"label": "list_item", "id": 6, "page_no": 35, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 150.69110107421875, "t": 159.39158630371094, "r": 451.35418701171875, "b": 169.41187000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.676043689250946, "cells": [{"id": 9, "text": "https://www.redbooks.ibm.com/Redbooks.nsf/subscribe?OpenForm", "bbox": {"l": 151.20016, "t": 160.63707999999997, "r": 451.01605, "b": 169.41187000000002, "coord_origin": "TOPLEFT"}}]}, "text": "https://www.redbooks.ibm.com/Redbooks.nsf/subscribe?OpenForm"}, {"label": "list_item", "id": 7, "page_no": 35, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.90457153320312, "t": 176.64987182617188, "r": 430.14783, "b": 187.12718200683594, "coord_origin": "TOPLEFT"}, "confidence": 0.9175106287002563, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.8, "t": 177.67664000000002, "r": 141.78, "b": 186.45141999999998, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Stay current on recent Redbooks publications with RSS Feeds:", "bbox": {"l": 151.20016, "t": 177.52722000000006, "r": 430.14783, "b": 186.74023, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Stay current on recent Redbooks publications with RSS Feeds:"}, {"label": "text", "id": 8, "page_no": 35, "cluster": {"id": 8, "label": "text", "bbox": {"l": 150.6310272216797, "t": 193.73944091796875, "r": 331.07773, "b": 203.43120999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.7000716924667358, "cells": [{"id": 12, "text": "http://www.redbooks.ibm.com/rss.html", "bbox": {"l": 151.20016, "t": 194.65643, "r": 331.07773, "b": 203.43120999999996, "coord_origin": "TOPLEFT"}}]}, "text": "http://www.redbooks.ibm.com/rss.html"}], "body": [{"label": "section_header", "id": 2, "page_no": 35, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.4889907836914, "t": 70.36857604980469, "r": 270.48557, "b": 83.64260864257812, "coord_origin": "TOPLEFT"}, "confidence": 0.9555448889732361, "cells": [{"id": 2, "text": "Stay connected to IBM Redbooks", "bbox": {"l": 64.800003, "t": 71.33471999999995, "r": 270.48557, "b": 83.32275000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Stay connected to IBM Redbooks"}, {"label": "list_item", "id": 3, "page_no": 35, "cluster": {"id": 3, "label": "list_item", "bbox": {"l": 135.56192016601562, "t": 96.5151596069336, "r": 241.26647999999997, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}, "confidence": 0.8996357917785645, "cells": [{"id": 3, "text": "GLYPH", "bbox": {"l": 136.8, "t": 97.63812000000007, "r": 141.78, "b": 106.41289999999992, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Find us on LinkedIn:", "bbox": {"l": 151.20016, "t": 97.48870999999997, "r": 241.26647999999997, "b": 106.70172000000014, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Find us on LinkedIn:"}, {"label": "text", "id": 4, "page_no": 35, "cluster": {"id": 4, "label": "text", "bbox": {"l": 150.71234130859375, "t": 114.1937255859375, "r": 391.07678, "b": 123.93498229980469, "coord_origin": "TOPLEFT"}, "confidence": 0.6805561184883118, "cells": [{"id": 5, "text": "http://www.linkedin.com/groups?home=&gid=2130806", "bbox": {"l": 151.20016, "t": 114.67767000000003, "r": 391.07678, "b": 123.45245, "coord_origin": "TOPLEFT"}}]}, "text": "http://www.linkedin.com/groups?home=&gid=2130806"}, {"label": "list_item", "id": 5, "page_no": 35, "cluster": {"id": 5, "label": "list_item", "bbox": {"l": 135.51414489746094, "t": 130.8223114013672, "r": 546.83832, "b": 152.72089000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9532178640365601, "cells": [{"id": 6, "text": "GLYPH", "bbox": {"l": 136.8, "t": 131.65747, "r": 141.78, "b": 140.43224999999995, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "Explore new Redbooks publications, residencies, and workshops with the IBM Redbooks ", "bbox": {"l": 151.20016, "t": 131.50806, "r": 546.83832, "b": 140.72107000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "weekly newsletter:", "bbox": {"l": 151.20016, "t": 143.50787000000003, "r": 232.75266, "b": 152.72089000000005, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Explore new Redbooks publications, residencies, and workshops with the IBM Redbooks weekly newsletter:"}, {"label": "list_item", "id": 6, "page_no": 35, "cluster": {"id": 6, "label": "list_item", "bbox": {"l": 150.69110107421875, "t": 159.39158630371094, "r": 451.35418701171875, "b": 169.41187000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.676043689250946, "cells": [{"id": 9, "text": "https://www.redbooks.ibm.com/Redbooks.nsf/subscribe?OpenForm", "bbox": {"l": 151.20016, "t": 160.63707999999997, "r": 451.01605, "b": 169.41187000000002, "coord_origin": "TOPLEFT"}}]}, "text": "https://www.redbooks.ibm.com/Redbooks.nsf/subscribe?OpenForm"}, {"label": "list_item", "id": 7, "page_no": 35, "cluster": {"id": 7, "label": "list_item", "bbox": {"l": 135.90457153320312, "t": 176.64987182617188, "r": 430.14783, "b": 187.12718200683594, "coord_origin": "TOPLEFT"}, "confidence": 0.9175106287002563, "cells": [{"id": 10, "text": "GLYPH", "bbox": {"l": 136.8, "t": 177.67664000000002, "r": 141.78, "b": 186.45141999999998, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "Stay current on recent Redbooks publications with RSS Feeds:", "bbox": {"l": 151.20016, "t": 177.52722000000006, "r": 430.14783, "b": 186.74023, "coord_origin": "TOPLEFT"}}]}, "text": "GLYPH Stay current on recent Redbooks publications with RSS Feeds:"}, {"label": "text", "id": 8, "page_no": 35, "cluster": {"id": 8, "label": "text", "bbox": {"l": 150.6310272216797, "t": 193.73944091796875, "r": 331.07773, "b": 203.43120999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.7000716924667358, "cells": [{"id": 12, "text": "http://www.redbooks.ibm.com/rss.html", "bbox": {"l": 151.20016, "t": 194.65643, "r": 331.07773, "b": 203.43120999999996, "coord_origin": "TOPLEFT"}}]}, "text": "http://www.redbooks.ibm.com/rss.html"}], "headers": [{"label": "page_footer", "id": 0, "page_no": 35, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.23326110839844, "t": 754.4552612304688, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9102703928947449, "cells": [{"id": 0, "text": "34 ", "bbox": {"l": 64.800003, "t": 754.848721, "r": 78.402, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "34"}, {"label": "page_footer", "id": 1, "page_no": 35, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.27912139892578, "t": 754.7698974609375, "r": 267.0744, "b": 764.12158203125, "coord_origin": "TOPLEFT"}, "confidence": 0.950810968875885, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 755.538002, "r": 267.0744, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}]}}, {"page_no": 36, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2023.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 180.32761, "b": 763.863001, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "35", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Notices", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 151.50481, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "This information was developed for products and services offered in the US. This material might be available ", "bbox": {"l": 64.800003, "t": 132.64862000000005, "r": 546.33118, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "from IBM in other languages. However, you may be required to own a copy of the product or product version in ", "bbox": {"l": 64.800995, "t": 142.60864000000004, "r": 547.24548, "b": 151.82165999999995, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "that language in order to access it. ", "bbox": {"l": 64.800995, "t": 152.62842, "r": 220.36324000000002, "b": 161.84142999999995, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "IBM may not offer the products, services, or features discussed in this document in other countries. Consult ", "bbox": {"l": 64.800995, "t": 172.60815000000002, "r": 541.46075, "b": 181.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "your local IBM representative for information on the products and services currently available in your area. Any ", "bbox": {"l": 64.800995, "t": 182.62793, "r": 547.17969, "b": 191.84094000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, ", "bbox": {"l": 64.800995, "t": 192.64770999999996, "r": 543.6261, "b": 201.86072000000001, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "program, or service may be used. Any functionally equivalent product, program, or service that does not ", "bbox": {"l": 64.800995, "t": 202.60772999999995, "r": 525.91608, "b": 211.82074, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "infringe any IBM intellectual property right may be used instead. However, it is the user\u2019s responsibility to ", "bbox": {"l": 64.800995, "t": 212.62750000000005, "r": 529.85132, "b": 221.84051999999997, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "evaluate and verify the operation of any non-IBM product, program, or service. ", "bbox": {"l": 64.801971, "t": 222.64728000000002, "r": 413.73868, "b": 231.86028999999996, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "IBM may have patents or pending patent applications covering subject matter described in this document. The ", "bbox": {"l": 64.801971, "t": 242.62701000000004, "r": 547.30017, "b": 251.84002999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "furnishing of this document does not grant you any license to these patents. You can send license inquiries, in ", "bbox": {"l": 64.801971, "t": 252.64679, "r": 547.35602, "b": 261.85979999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "writing, to:", "bbox": {"l": 64.801971, "t": 262.60681, "r": 110.40483000000002, "b": 271.81982000000005, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "IBM Director of Licensing, IBM Corporation, North Castle Drive, MD-NC119, Armonk, NY 10504-1785, US ", "bbox": {"l": 64.801971, "t": 272.62658999999996, "r": 535.31042, "b": 281.8396, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION \u201cAS IS\u201d ", "bbox": {"l": 64.801971, "t": 292.60638, "r": 518.07764, "b": 301.81937, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED ", "bbox": {"l": 64.801971, "t": 302.62613, "r": 545.7674, "b": 311.83911, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A ", "bbox": {"l": 64.801971, "t": 312.6459, "r": 535.5415, "b": 321.85889, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "PARTICULAR PURPOSE. Some jurisdictions do not allow disclaimer of express or implied warranties in ", "bbox": {"l": 64.801971, "t": 322.6059, "r": 527.50079, "b": 331.81888, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "certain transactions, therefore, this statement may not apply to you. ", "bbox": {"l": 64.801971, "t": 332.62564, "r": 365.39774, "b": 341.83862, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "This information could include technical inaccuracies or typographical errors. Changes are periodically made ", "bbox": {"l": 64.801971, "t": 352.60541, "r": 546.45966, "b": 361.81839, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "to the information herein; these changes will be incorporated in new editions of the publication. IBM may make ", "bbox": {"l": 64.801956, "t": 362.62515, "r": 547.13379, "b": 371.83813, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time ", "bbox": {"l": 64.800964, "t": 372.64493, "r": 547.24841, "b": 381.85791, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "without notice. ", "bbox": {"l": 64.800964, "t": 382.60492, "r": 131.4742, "b": 391.8179, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "Any references in this information to non-IBM websites are provided for convenience only and do not in any ", "bbox": {"l": 64.800964, "t": 402.64444, "r": 541.54132, "b": 411.85742, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "manner serve as an endorsement of those websites. The materials at those websites are not part of the ", "bbox": {"l": 64.80098, "t": 412.60443, "r": 524.91406, "b": 421.81741, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "materials for this IBM product and use of those websites is at your own risk. ", "bbox": {"l": 64.80098, "t": 422.62417999999997, "r": 401.4938, "b": 431.83716, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "IBM may use or distribute any of the information you provide in any way it believes appropriate without ", "bbox": {"l": 64.80098, "t": 442.60393999999997, "r": 519.26678, "b": 451.81692999999996, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "incurring any obligation to you. ", "bbox": {"l": 64.80098, "t": 452.62369, "r": 203.13445, "b": 461.83667, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "The performance data and client examples cited are presented for illustrative purposes only. Actual ", "bbox": {"l": 64.80098, "t": 472.60345, "r": 505.27103, "b": 481.81644, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "performance results may vary depending on specific configurations and operating conditions. ", "bbox": {"l": 64.800964, "t": 482.6232, "r": 478.22061, "b": 491.83618, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "Information concerning non-IBM products was obtained from the suppliers of those products, their published ", "bbox": {"l": 64.800964, "t": 502.60297, "r": 544.94849, "b": 511.81595, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "announcements or other publicly available sources. IBM has not tested those products and cannot confirm the ", "bbox": {"l": 64.800964, "t": 512.62271, "r": 547.24249, "b": 521.83569, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the ", "bbox": {"l": 64.800964, "t": 522.64249, "r": 532.51556, "b": 531.85547, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "capabilities of non-IBM products should be addressed to the suppliers of those products. ", "bbox": {"l": 64.800995, "t": 532.66223, "r": 458.02179, "b": 541.87524, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Statements regarding IBM\u2019s future direction or intent are subject to change or withdrawal without notice, and ", "bbox": {"l": 64.800995, "t": 552.64201, "r": 544.68579, "b": 561.85501, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "represent goals and objectives only. ", "bbox": {"l": 64.800995, "t": 562.6617699999999, "r": 226.96176, "b": 571.87477, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "This information contains examples of data and reports used in daily business operations. To illustrate them ", "bbox": {"l": 64.800995, "t": 582.64154, "r": 543.07227, "b": 591.85454, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "as completely as possible, the examples include the names of individuals, companies, brands, and products. ", "bbox": {"l": 64.800018, "t": 592.6613, "r": 547.01636, "b": 601.8743, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "All of these names are fictitious and any similarity to actual people or business enterprises is entirely ", "bbox": {"l": 64.801025, "t": 602.62131, "r": 510.27209, "b": 611.8343, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "coincidental. ", "bbox": {"l": 64.801025, "t": 612.64107, "r": 123.10986000000001, "b": 621.85406, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "COPYRIGHT LICENSE:", "bbox": {"l": 64.801025, "t": 632.6208300000001, "r": 172.50049, "b": 641.83383, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "This information contains sample application programs in source language, which illustrate programming ", "bbox": {"l": 64.801025, "t": 652.66035, "r": 529.14618, "b": 661.87335, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "techniques on various operating platforms. You may copy, modify, and distribute these sample programs in ", "bbox": {"l": 64.802032, "t": 662.62035, "r": 540.33325, "b": 671.83335, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "any form without payment to IBM, for the purposes of developing, using, marketing or distributing application ", "bbox": {"l": 64.802032, "t": 672.64011, "r": 546.02222, "b": 681.85311, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "programs conforming to the application programming interface for the operating platform for which the sample ", "bbox": {"l": 64.802032, "t": 682.65987, "r": 547.35809, "b": 691.87287, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "programs are written. These examples have not been thoroughly tested under all conditions. IBM, therefore, ", "bbox": {"l": 64.802032, "t": 692.619865, "r": 544.22968, "b": 701.83287, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "cannot guarantee or imply reliability, serviceability, or function of these programs. The sample programs are ", "bbox": {"l": 64.802048, "t": 702.639626, "r": 542.97467, "b": 711.852631, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "provided \u201cAS IS\u201d, without warranty of any kind. IBM shall not be liable for any damages arising out of your use ", "bbox": {"l": 64.802032, "t": 712.659386, "r": 547.25946, "b": 721.872391, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "of the sample programs. ", "bbox": {"l": 64.802032, "t": 722.619385, "r": 175.33412, "b": 731.83239, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 63.60262680053711, "t": 754.6927490234375, "r": 180.32761, "b": 764.0509033203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9509437084197998, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2023.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 180.32761, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 535.6251220703125, "t": 754.3717041015625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9176149368286133, "cells": [{"id": 1, "text": "35", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.800003, "t": 72.970703125, "r": 151.50481, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9600573778152466, "cells": [{"id": 2, "text": "Notices", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 151.50481, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 64.05133819580078, "t": 132.02426147460938, "r": 547.24548, "b": 162.26876831054688, "coord_origin": "TOPLEFT"}, "confidence": 0.9850678443908691, "cells": [{"id": 3, "text": "This information was developed for products and services offered in the US. This material might be available ", "bbox": {"l": 64.800003, "t": 132.64862000000005, "r": 546.33118, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "from IBM in other languages. However, you may be required to own a copy of the product or product version in ", "bbox": {"l": 64.800995, "t": 142.60864000000004, "r": 547.24548, "b": 151.82165999999995, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "that language in order to access it. ", "bbox": {"l": 64.800995, "t": 152.62842, "r": 220.36324000000002, "b": 161.84142999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 64.02767944335938, "t": 172.017333984375, "r": 547.17969, "b": 232.43988037109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9878805875778198, "cells": [{"id": 6, "text": "IBM may not offer the products, services, or features discussed in this document in other countries. Consult ", "bbox": {"l": 64.800995, "t": 172.60815000000002, "r": 541.46075, "b": 181.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "your local IBM representative for information on the products and services currently available in your area. Any ", "bbox": {"l": 64.800995, "t": 182.62793, "r": 547.17969, "b": 191.84094000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, ", "bbox": {"l": 64.800995, "t": 192.64770999999996, "r": 543.6261, "b": 201.86072000000001, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "program, or service may be used. Any functionally equivalent product, program, or service that does not ", "bbox": {"l": 64.800995, "t": 202.60772999999995, "r": 525.91608, "b": 211.82074, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "infringe any IBM intellectual property right may be used instead. However, it is the user\u2019s responsibility to ", "bbox": {"l": 64.800995, "t": 212.62750000000005, "r": 529.85132, "b": 221.84051999999997, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "evaluate and verify the operation of any non-IBM product, program, or service. ", "bbox": {"l": 64.801971, "t": 222.64728000000002, "r": 413.73868, "b": 231.86028999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 64.14295196533203, "t": 241.84597778320312, "r": 547.35602, "b": 271.81982000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9708325862884521, "cells": [{"id": 12, "text": "IBM may have patents or pending patent applications covering subject matter described in this document. The ", "bbox": {"l": 64.801971, "t": 242.62701000000004, "r": 547.30017, "b": 251.84002999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "furnishing of this document does not grant you any license to these patents. You can send license inquiries, in ", "bbox": {"l": 64.801971, "t": 252.64679, "r": 547.35602, "b": 261.85979999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "writing, to:", "bbox": {"l": 64.801971, "t": 262.60681, "r": 110.40483000000002, "b": 271.81982000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 64.09358215332031, "t": 271.9725036621094, "r": 535.31042, "b": 282.27099609375, "coord_origin": "TOPLEFT"}, "confidence": 0.90984046459198, "cells": [{"id": 15, "text": "IBM Director of Licensing, IBM Corporation, North Castle Drive, MD-NC119, Armonk, NY 10504-1785, US ", "bbox": {"l": 64.801971, "t": 272.62658999999996, "r": 535.31042, "b": 281.8396, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 63.77083969116211, "t": 291.3708801269531, "r": 545.7674, "b": 342.25909423828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9851772785186768, "cells": [{"id": 16, "text": "INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION \u201cAS IS\u201d ", "bbox": {"l": 64.801971, "t": 292.60638, "r": 518.07764, "b": 301.81937, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED ", "bbox": {"l": 64.801971, "t": 302.62613, "r": 545.7674, "b": 311.83911, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A ", "bbox": {"l": 64.801971, "t": 312.6459, "r": 535.5415, "b": 321.85889, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "PARTICULAR PURPOSE. Some jurisdictions do not allow disclaimer of express or implied warranties in ", "bbox": {"l": 64.801971, "t": 322.6059, "r": 527.50079, "b": 331.81888, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "certain transactions, therefore, this statement may not apply to you. ", "bbox": {"l": 64.801971, "t": 332.62564, "r": 365.39774, "b": 341.83862, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 63.76580810546875, "t": 352.0263977050781, "r": 547.24841, "b": 391.8179, "coord_origin": "TOPLEFT"}, "confidence": 0.9841977953910828, "cells": [{"id": 21, "text": "This information could include technical inaccuracies or typographical errors. Changes are periodically made ", "bbox": {"l": 64.801971, "t": 352.60541, "r": 546.45966, "b": 361.81839, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "to the information herein; these changes will be incorporated in new editions of the publication. IBM may make ", "bbox": {"l": 64.801956, "t": 362.62515, "r": 547.13379, "b": 371.83813, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time ", "bbox": {"l": 64.800964, "t": 372.64493, "r": 547.24841, "b": 381.85791, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "without notice. ", "bbox": {"l": 64.800964, "t": 382.60492, "r": 131.4742, "b": 391.8179, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 63.99868392944336, "t": 401.97637939453125, "r": 541.54132, "b": 431.9630432128906, "coord_origin": "TOPLEFT"}, "confidence": 0.9843890070915222, "cells": [{"id": 25, "text": "Any references in this information to non-IBM websites are provided for convenience only and do not in any ", "bbox": {"l": 64.800964, "t": 402.64444, "r": 541.54132, "b": 411.85742, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "manner serve as an endorsement of those websites. The materials at those websites are not part of the ", "bbox": {"l": 64.80098, "t": 412.60443, "r": 524.91406, "b": 421.81741, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "materials for this IBM product and use of those websites is at your own risk. ", "bbox": {"l": 64.80098, "t": 422.62417999999997, "r": 401.4938, "b": 431.83716, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 64.16744995117188, "t": 442.2430419921875, "r": 519.26678, "b": 462.4287109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9788233637809753, "cells": [{"id": 28, "text": "IBM may use or distribute any of the information you provide in any way it believes appropriate without ", "bbox": {"l": 64.80098, "t": 442.60393999999997, "r": 519.26678, "b": 451.81692999999996, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "incurring any obligation to you. ", "bbox": {"l": 64.80098, "t": 452.62369, "r": 203.13445, "b": 461.83667, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 63.904296875, "t": 472.1893005371094, "r": 505.27103, "b": 492.3111572265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9781931638717651, "cells": [{"id": 30, "text": "The performance data and client examples cited are presented for illustrative purposes only. Actual ", "bbox": {"l": 64.80098, "t": 472.60345, "r": 505.27103, "b": 481.81644, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "performance results may vary depending on specific configurations and operating conditions. ", "bbox": {"l": 64.800964, "t": 482.6232, "r": 478.22061, "b": 491.83618, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 64.10684204101562, "t": 502.1192626953125, "r": 547.24249, "b": 542.1983642578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9864881634712219, "cells": [{"id": 32, "text": "Information concerning non-IBM products was obtained from the suppliers of those products, their published ", "bbox": {"l": 64.800964, "t": 502.60297, "r": 544.94849, "b": 511.81595, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "announcements or other publicly available sources. IBM has not tested those products and cannot confirm the ", "bbox": {"l": 64.800964, "t": 512.62271, "r": 547.24249, "b": 521.83569, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the ", "bbox": {"l": 64.800964, "t": 522.64249, "r": 532.51556, "b": 531.85547, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "capabilities of non-IBM products should be addressed to the suppliers of those products. ", "bbox": {"l": 64.800995, "t": 532.66223, "r": 458.02179, "b": 541.87524, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 64.23661041259766, "t": 552.1707153320312, "r": 544.68579, "b": 572.2598876953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9780008792877197, "cells": [{"id": 36, "text": "Statements regarding IBM\u2019s future direction or intent are subject to change or withdrawal without notice, and ", "bbox": {"l": 64.800995, "t": 552.64201, "r": 544.68579, "b": 561.85501, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "represent goals and objectives only. ", "bbox": {"l": 64.800995, "t": 562.6617699999999, "r": 226.96176, "b": 571.87477, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "text", "bbox": {"l": 63.82798385620117, "t": 582.23291015625, "r": 547.01636, "b": 621.85406, "coord_origin": "TOPLEFT"}, "confidence": 0.981692910194397, "cells": [{"id": 38, "text": "This information contains examples of data and reports used in daily business operations. To illustrate them ", "bbox": {"l": 64.800995, "t": 582.64154, "r": 543.07227, "b": 591.85454, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "as completely as possible, the examples include the names of individuals, companies, brands, and products. ", "bbox": {"l": 64.800018, "t": 592.6613, "r": 547.01636, "b": 601.8743, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "All of these names are fictitious and any similarity to actual people or business enterprises is entirely ", "bbox": {"l": 64.801025, "t": 602.62131, "r": 510.27209, "b": 611.8343, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "coincidental. ", "bbox": {"l": 64.801025, "t": 612.64107, "r": 123.10986000000001, "b": 621.85406, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "section_header", "bbox": {"l": 64.29706573486328, "t": 631.7528686523438, "r": 172.50049, "b": 641.83383, "coord_origin": "TOPLEFT"}, "confidence": 0.8924005627632141, "cells": [{"id": 42, "text": "COPYRIGHT LICENSE:", "bbox": {"l": 64.801025, "t": 632.6208300000001, "r": 172.50049, "b": 641.83383, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "text", "bbox": {"l": 63.95261001586914, "t": 651.9513549804688, "r": 547.35809, "b": 732.0111083984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9879701137542725, "cells": [{"id": 43, "text": "This information contains sample application programs in source language, which illustrate programming ", "bbox": {"l": 64.801025, "t": 652.66035, "r": 529.14618, "b": 661.87335, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "techniques on various operating platforms. You may copy, modify, and distribute these sample programs in ", "bbox": {"l": 64.802032, "t": 662.62035, "r": 540.33325, "b": 671.83335, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "any form without payment to IBM, for the purposes of developing, using, marketing or distributing application ", "bbox": {"l": 64.802032, "t": 672.64011, "r": 546.02222, "b": 681.85311, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "programs conforming to the application programming interface for the operating platform for which the sample ", "bbox": {"l": 64.802032, "t": 682.65987, "r": 547.35809, "b": 691.87287, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "programs are written. These examples have not been thoroughly tested under all conditions. IBM, therefore, ", "bbox": {"l": 64.802032, "t": 692.619865, "r": 544.22968, "b": 701.83287, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "cannot guarantee or imply reliability, serviceability, or function of these programs. The sample programs are ", "bbox": {"l": 64.802048, "t": 702.639626, "r": 542.97467, "b": 711.852631, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "provided \u201cAS IS\u201d, without warranty of any kind. IBM shall not be liable for any damages arising out of your use ", "bbox": {"l": 64.802032, "t": 712.659386, "r": 547.25946, "b": 721.872391, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "of the sample programs. ", "bbox": {"l": 64.802032, "t": 722.619385, "r": 175.33412, "b": 731.83239, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 36, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.60262680053711, "t": 754.6927490234375, "r": 180.32761, "b": 764.0509033203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9509437084197998, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2023.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 180.32761, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2023."}, {"label": "page_footer", "id": 1, "page_no": 36, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6251220703125, "t": 754.3717041015625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9176149368286133, "cells": [{"id": 1, "text": "35", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "35"}, {"label": "section_header", "id": 2, "page_no": 36, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.800003, "t": 72.970703125, "r": 151.50481, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9600573778152466, "cells": [{"id": 2, "text": "Notices", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 151.50481, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Notices"}, {"label": "text", "id": 3, "page_no": 36, "cluster": {"id": 3, "label": "text", "bbox": {"l": 64.05133819580078, "t": 132.02426147460938, "r": 547.24548, "b": 162.26876831054688, "coord_origin": "TOPLEFT"}, "confidence": 0.9850678443908691, "cells": [{"id": 3, "text": "This information was developed for products and services offered in the US. This material might be available ", "bbox": {"l": 64.800003, "t": 132.64862000000005, "r": 546.33118, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "from IBM in other languages. However, you may be required to own a copy of the product or product version in ", "bbox": {"l": 64.800995, "t": 142.60864000000004, "r": 547.24548, "b": 151.82165999999995, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "that language in order to access it. ", "bbox": {"l": 64.800995, "t": 152.62842, "r": 220.36324000000002, "b": 161.84142999999995, "coord_origin": "TOPLEFT"}}]}, "text": "This information was developed for products and services offered in the US. This material might be available from IBM in other languages. However, you may be required to own a copy of the product or product version in that language in order to access it."}, {"label": "text", "id": 4, "page_no": 36, "cluster": {"id": 4, "label": "text", "bbox": {"l": 64.02767944335938, "t": 172.017333984375, "r": 547.17969, "b": 232.43988037109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9878805875778198, "cells": [{"id": 6, "text": "IBM may not offer the products, services, or features discussed in this document in other countries. Consult ", "bbox": {"l": 64.800995, "t": 172.60815000000002, "r": 541.46075, "b": 181.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "your local IBM representative for information on the products and services currently available in your area. Any ", "bbox": {"l": 64.800995, "t": 182.62793, "r": 547.17969, "b": 191.84094000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, ", "bbox": {"l": 64.800995, "t": 192.64770999999996, "r": 543.6261, "b": 201.86072000000001, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "program, or service may be used. Any functionally equivalent product, program, or service that does not ", "bbox": {"l": 64.800995, "t": 202.60772999999995, "r": 525.91608, "b": 211.82074, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "infringe any IBM intellectual property right may be used instead. However, it is the user\u2019s responsibility to ", "bbox": {"l": 64.800995, "t": 212.62750000000005, "r": 529.85132, "b": 221.84051999999997, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "evaluate and verify the operation of any non-IBM product, program, or service. ", "bbox": {"l": 64.801971, "t": 222.64728000000002, "r": 413.73868, "b": 231.86028999999996, "coord_origin": "TOPLEFT"}}]}, "text": "IBM may not offer the products, services, or features discussed in this document in other countries. Consult your local IBM representative for information on the products and services currently available in your area. Any reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, program, or service may be used. Any functionally equivalent product, program, or service that does not infringe any IBM intellectual property right may be used instead. However, it is the user\u2019s responsibility to evaluate and verify the operation of any non-IBM product, program, or service."}, {"label": "text", "id": 5, "page_no": 36, "cluster": {"id": 5, "label": "text", "bbox": {"l": 64.14295196533203, "t": 241.84597778320312, "r": 547.35602, "b": 271.81982000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9708325862884521, "cells": [{"id": 12, "text": "IBM may have patents or pending patent applications covering subject matter described in this document. The ", "bbox": {"l": 64.801971, "t": 242.62701000000004, "r": 547.30017, "b": 251.84002999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "furnishing of this document does not grant you any license to these patents. You can send license inquiries, in ", "bbox": {"l": 64.801971, "t": 252.64679, "r": 547.35602, "b": 261.85979999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "writing, to:", "bbox": {"l": 64.801971, "t": 262.60681, "r": 110.40483000000002, "b": 271.81982000000005, "coord_origin": "TOPLEFT"}}]}, "text": "IBM may have patents or pending patent applications covering subject matter described in this document. The furnishing of this document does not grant you any license to these patents. You can send license inquiries, in writing, to:"}, {"label": "text", "id": 6, "page_no": 36, "cluster": {"id": 6, "label": "text", "bbox": {"l": 64.09358215332031, "t": 271.9725036621094, "r": 535.31042, "b": 282.27099609375, "coord_origin": "TOPLEFT"}, "confidence": 0.90984046459198, "cells": [{"id": 15, "text": "IBM Director of Licensing, IBM Corporation, North Castle Drive, MD-NC119, Armonk, NY 10504-1785, US ", "bbox": {"l": 64.801971, "t": 272.62658999999996, "r": 535.31042, "b": 281.8396, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Director of Licensing, IBM Corporation, North Castle Drive, MD-NC119, Armonk, NY 10504-1785, US"}, {"label": "text", "id": 7, "page_no": 36, "cluster": {"id": 7, "label": "text", "bbox": {"l": 63.77083969116211, "t": 291.3708801269531, "r": 545.7674, "b": 342.25909423828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9851772785186768, "cells": [{"id": 16, "text": "INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION \u201cAS IS\u201d ", "bbox": {"l": 64.801971, "t": 292.60638, "r": 518.07764, "b": 301.81937, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED ", "bbox": {"l": 64.801971, "t": 302.62613, "r": 545.7674, "b": 311.83911, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A ", "bbox": {"l": 64.801971, "t": 312.6459, "r": 535.5415, "b": 321.85889, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "PARTICULAR PURPOSE. Some jurisdictions do not allow disclaimer of express or implied warranties in ", "bbox": {"l": 64.801971, "t": 322.6059, "r": 527.50079, "b": 331.81888, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "certain transactions, therefore, this statement may not apply to you. ", "bbox": {"l": 64.801971, "t": 332.62564, "r": 365.39774, "b": 341.83862, "coord_origin": "TOPLEFT"}}]}, "text": "INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION \u201cAS IS\u201d WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some jurisdictions do not allow disclaimer of express or implied warranties in certain transactions, therefore, this statement may not apply to you."}, {"label": "text", "id": 8, "page_no": 36, "cluster": {"id": 8, "label": "text", "bbox": {"l": 63.76580810546875, "t": 352.0263977050781, "r": 547.24841, "b": 391.8179, "coord_origin": "TOPLEFT"}, "confidence": 0.9841977953910828, "cells": [{"id": 21, "text": "This information could include technical inaccuracies or typographical errors. Changes are periodically made ", "bbox": {"l": 64.801971, "t": 352.60541, "r": 546.45966, "b": 361.81839, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "to the information herein; these changes will be incorporated in new editions of the publication. IBM may make ", "bbox": {"l": 64.801956, "t": 362.62515, "r": 547.13379, "b": 371.83813, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time ", "bbox": {"l": 64.800964, "t": 372.64493, "r": 547.24841, "b": 381.85791, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "without notice. ", "bbox": {"l": 64.800964, "t": 382.60492, "r": 131.4742, "b": 391.8179, "coord_origin": "TOPLEFT"}}]}, "text": "This information could include technical inaccuracies or typographical errors. Changes are periodically made to the information herein; these changes will be incorporated in new editions of the publication. IBM may make improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time without notice."}, {"label": "text", "id": 9, "page_no": 36, "cluster": {"id": 9, "label": "text", "bbox": {"l": 63.99868392944336, "t": 401.97637939453125, "r": 541.54132, "b": 431.9630432128906, "coord_origin": "TOPLEFT"}, "confidence": 0.9843890070915222, "cells": [{"id": 25, "text": "Any references in this information to non-IBM websites are provided for convenience only and do not in any ", "bbox": {"l": 64.800964, "t": 402.64444, "r": 541.54132, "b": 411.85742, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "manner serve as an endorsement of those websites. The materials at those websites are not part of the ", "bbox": {"l": 64.80098, "t": 412.60443, "r": 524.91406, "b": 421.81741, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "materials for this IBM product and use of those websites is at your own risk. ", "bbox": {"l": 64.80098, "t": 422.62417999999997, "r": 401.4938, "b": 431.83716, "coord_origin": "TOPLEFT"}}]}, "text": "Any references in this information to non-IBM websites are provided for convenience only and do not in any manner serve as an endorsement of those websites. The materials at those websites are not part of the materials for this IBM product and use of those websites is at your own risk."}, {"label": "text", "id": 10, "page_no": 36, "cluster": {"id": 10, "label": "text", "bbox": {"l": 64.16744995117188, "t": 442.2430419921875, "r": 519.26678, "b": 462.4287109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9788233637809753, "cells": [{"id": 28, "text": "IBM may use or distribute any of the information you provide in any way it believes appropriate without ", "bbox": {"l": 64.80098, "t": 442.60393999999997, "r": 519.26678, "b": 451.81692999999996, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "incurring any obligation to you. ", "bbox": {"l": 64.80098, "t": 452.62369, "r": 203.13445, "b": 461.83667, "coord_origin": "TOPLEFT"}}]}, "text": "IBM may use or distribute any of the information you provide in any way it believes appropriate without incurring any obligation to you."}, {"label": "text", "id": 11, "page_no": 36, "cluster": {"id": 11, "label": "text", "bbox": {"l": 63.904296875, "t": 472.1893005371094, "r": 505.27103, "b": 492.3111572265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9781931638717651, "cells": [{"id": 30, "text": "The performance data and client examples cited are presented for illustrative purposes only. Actual ", "bbox": {"l": 64.80098, "t": 472.60345, "r": 505.27103, "b": 481.81644, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "performance results may vary depending on specific configurations and operating conditions. ", "bbox": {"l": 64.800964, "t": 482.6232, "r": 478.22061, "b": 491.83618, "coord_origin": "TOPLEFT"}}]}, "text": "The performance data and client examples cited are presented for illustrative purposes only. Actual performance results may vary depending on specific configurations and operating conditions."}, {"label": "text", "id": 12, "page_no": 36, "cluster": {"id": 12, "label": "text", "bbox": {"l": 64.10684204101562, "t": 502.1192626953125, "r": 547.24249, "b": 542.1983642578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9864881634712219, "cells": [{"id": 32, "text": "Information concerning non-IBM products was obtained from the suppliers of those products, their published ", "bbox": {"l": 64.800964, "t": 502.60297, "r": 544.94849, "b": 511.81595, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "announcements or other publicly available sources. IBM has not tested those products and cannot confirm the ", "bbox": {"l": 64.800964, "t": 512.62271, "r": 547.24249, "b": 521.83569, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the ", "bbox": {"l": 64.800964, "t": 522.64249, "r": 532.51556, "b": 531.85547, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "capabilities of non-IBM products should be addressed to the suppliers of those products. ", "bbox": {"l": 64.800995, "t": 532.66223, "r": 458.02179, "b": 541.87524, "coord_origin": "TOPLEFT"}}]}, "text": "Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly available sources. IBM has not tested those products and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products."}, {"label": "text", "id": 13, "page_no": 36, "cluster": {"id": 13, "label": "text", "bbox": {"l": 64.23661041259766, "t": 552.1707153320312, "r": 544.68579, "b": 572.2598876953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9780008792877197, "cells": [{"id": 36, "text": "Statements regarding IBM\u2019s future direction or intent are subject to change or withdrawal without notice, and ", "bbox": {"l": 64.800995, "t": 552.64201, "r": 544.68579, "b": 561.85501, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "represent goals and objectives only. ", "bbox": {"l": 64.800995, "t": 562.6617699999999, "r": 226.96176, "b": 571.87477, "coord_origin": "TOPLEFT"}}]}, "text": "Statements regarding IBM\u2019s future direction or intent are subject to change or withdrawal without notice, and represent goals and objectives only."}, {"label": "text", "id": 14, "page_no": 36, "cluster": {"id": 14, "label": "text", "bbox": {"l": 63.82798385620117, "t": 582.23291015625, "r": 547.01636, "b": 621.85406, "coord_origin": "TOPLEFT"}, "confidence": 0.981692910194397, "cells": [{"id": 38, "text": "This information contains examples of data and reports used in daily business operations. To illustrate them ", "bbox": {"l": 64.800995, "t": 582.64154, "r": 543.07227, "b": 591.85454, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "as completely as possible, the examples include the names of individuals, companies, brands, and products. ", "bbox": {"l": 64.800018, "t": 592.6613, "r": 547.01636, "b": 601.8743, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "All of these names are fictitious and any similarity to actual people or business enterprises is entirely ", "bbox": {"l": 64.801025, "t": 602.62131, "r": 510.27209, "b": 611.8343, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "coincidental. ", "bbox": {"l": 64.801025, "t": 612.64107, "r": 123.10986000000001, "b": 621.85406, "coord_origin": "TOPLEFT"}}]}, "text": "This information contains examples of data and reports used in daily business operations. To illustrate them as completely as possible, the examples include the names of individuals, companies, brands, and products. All of these names are fictitious and any similarity to actual people or business enterprises is entirely coincidental."}, {"label": "section_header", "id": 15, "page_no": 36, "cluster": {"id": 15, "label": "section_header", "bbox": {"l": 64.29706573486328, "t": 631.7528686523438, "r": 172.50049, "b": 641.83383, "coord_origin": "TOPLEFT"}, "confidence": 0.8924005627632141, "cells": [{"id": 42, "text": "COPYRIGHT LICENSE:", "bbox": {"l": 64.801025, "t": 632.6208300000001, "r": 172.50049, "b": 641.83383, "coord_origin": "TOPLEFT"}}]}, "text": "COPYRIGHT LICENSE:"}, {"label": "text", "id": 16, "page_no": 36, "cluster": {"id": 16, "label": "text", "bbox": {"l": 63.95261001586914, "t": 651.9513549804688, "r": 547.35809, "b": 732.0111083984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9879701137542725, "cells": [{"id": 43, "text": "This information contains sample application programs in source language, which illustrate programming ", "bbox": {"l": 64.801025, "t": 652.66035, "r": 529.14618, "b": 661.87335, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "techniques on various operating platforms. You may copy, modify, and distribute these sample programs in ", "bbox": {"l": 64.802032, "t": 662.62035, "r": 540.33325, "b": 671.83335, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "any form without payment to IBM, for the purposes of developing, using, marketing or distributing application ", "bbox": {"l": 64.802032, "t": 672.64011, "r": 546.02222, "b": 681.85311, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "programs conforming to the application programming interface for the operating platform for which the sample ", "bbox": {"l": 64.802032, "t": 682.65987, "r": 547.35809, "b": 691.87287, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "programs are written. These examples have not been thoroughly tested under all conditions. IBM, therefore, ", "bbox": {"l": 64.802032, "t": 692.619865, "r": 544.22968, "b": 701.83287, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "cannot guarantee or imply reliability, serviceability, or function of these programs. The sample programs are ", "bbox": {"l": 64.802048, "t": 702.639626, "r": 542.97467, "b": 711.852631, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "provided \u201cAS IS\u201d, without warranty of any kind. IBM shall not be liable for any damages arising out of your use ", "bbox": {"l": 64.802032, "t": 712.659386, "r": 547.25946, "b": 721.872391, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "of the sample programs. ", "bbox": {"l": 64.802032, "t": 722.619385, "r": 175.33412, "b": 731.83239, "coord_origin": "TOPLEFT"}}]}, "text": "This information contains sample application programs in source language, which illustrate programming techniques on various operating platforms. You may copy, modify, and distribute these sample programs in any form without payment to IBM, for the purposes of developing, using, marketing or distributing application programs conforming to the application programming interface for the operating platform for which the sample programs are written. These examples have not been thoroughly tested under all conditions. IBM, therefore, cannot guarantee or imply reliability, serviceability, or function of these programs. The sample programs are provided \u201cAS IS\u201d, without warranty of any kind. IBM shall not be liable for any damages arising out of your use of the sample programs."}], "body": [{"label": "section_header", "id": 2, "page_no": 36, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.800003, "t": 72.970703125, "r": 151.50481, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}, "confidence": 0.9600573778152466, "cells": [{"id": 2, "text": "Notices", "bbox": {"l": 64.800003, "t": 73.84802000000002, "r": 151.50481, "b": 96.04803000000004, "coord_origin": "TOPLEFT"}}]}, "text": "Notices"}, {"label": "text", "id": 3, "page_no": 36, "cluster": {"id": 3, "label": "text", "bbox": {"l": 64.05133819580078, "t": 132.02426147460938, "r": 547.24548, "b": 162.26876831054688, "coord_origin": "TOPLEFT"}, "confidence": 0.9850678443908691, "cells": [{"id": 3, "text": "This information was developed for products and services offered in the US. This material might be available ", "bbox": {"l": 64.800003, "t": 132.64862000000005, "r": 546.33118, "b": 141.86163, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "from IBM in other languages. However, you may be required to own a copy of the product or product version in ", "bbox": {"l": 64.800995, "t": 142.60864000000004, "r": 547.24548, "b": 151.82165999999995, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "that language in order to access it. ", "bbox": {"l": 64.800995, "t": 152.62842, "r": 220.36324000000002, "b": 161.84142999999995, "coord_origin": "TOPLEFT"}}]}, "text": "This information was developed for products and services offered in the US. This material might be available from IBM in other languages. However, you may be required to own a copy of the product or product version in that language in order to access it."}, {"label": "text", "id": 4, "page_no": 36, "cluster": {"id": 4, "label": "text", "bbox": {"l": 64.02767944335938, "t": 172.017333984375, "r": 547.17969, "b": 232.43988037109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9878805875778198, "cells": [{"id": 6, "text": "IBM may not offer the products, services, or features discussed in this document in other countries. Consult ", "bbox": {"l": 64.800995, "t": 172.60815000000002, "r": 541.46075, "b": 181.82117000000005, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "your local IBM representative for information on the products and services currently available in your area. Any ", "bbox": {"l": 64.800995, "t": 182.62793, "r": 547.17969, "b": 191.84094000000005, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, ", "bbox": {"l": 64.800995, "t": 192.64770999999996, "r": 543.6261, "b": 201.86072000000001, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "program, or service may be used. Any functionally equivalent product, program, or service that does not ", "bbox": {"l": 64.800995, "t": 202.60772999999995, "r": 525.91608, "b": 211.82074, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "infringe any IBM intellectual property right may be used instead. However, it is the user\u2019s responsibility to ", "bbox": {"l": 64.800995, "t": 212.62750000000005, "r": 529.85132, "b": 221.84051999999997, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "evaluate and verify the operation of any non-IBM product, program, or service. ", "bbox": {"l": 64.801971, "t": 222.64728000000002, "r": 413.73868, "b": 231.86028999999996, "coord_origin": "TOPLEFT"}}]}, "text": "IBM may not offer the products, services, or features discussed in this document in other countries. Consult your local IBM representative for information on the products and services currently available in your area. Any reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, program, or service may be used. Any functionally equivalent product, program, or service that does not infringe any IBM intellectual property right may be used instead. However, it is the user\u2019s responsibility to evaluate and verify the operation of any non-IBM product, program, or service."}, {"label": "text", "id": 5, "page_no": 36, "cluster": {"id": 5, "label": "text", "bbox": {"l": 64.14295196533203, "t": 241.84597778320312, "r": 547.35602, "b": 271.81982000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.9708325862884521, "cells": [{"id": 12, "text": "IBM may have patents or pending patent applications covering subject matter described in this document. The ", "bbox": {"l": 64.801971, "t": 242.62701000000004, "r": 547.30017, "b": 251.84002999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "furnishing of this document does not grant you any license to these patents. You can send license inquiries, in ", "bbox": {"l": 64.801971, "t": 252.64679, "r": 547.35602, "b": 261.85979999999995, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "writing, to:", "bbox": {"l": 64.801971, "t": 262.60681, "r": 110.40483000000002, "b": 271.81982000000005, "coord_origin": "TOPLEFT"}}]}, "text": "IBM may have patents or pending patent applications covering subject matter described in this document. The furnishing of this document does not grant you any license to these patents. You can send license inquiries, in writing, to:"}, {"label": "text", "id": 6, "page_no": 36, "cluster": {"id": 6, "label": "text", "bbox": {"l": 64.09358215332031, "t": 271.9725036621094, "r": 535.31042, "b": 282.27099609375, "coord_origin": "TOPLEFT"}, "confidence": 0.90984046459198, "cells": [{"id": 15, "text": "IBM Director of Licensing, IBM Corporation, North Castle Drive, MD-NC119, Armonk, NY 10504-1785, US ", "bbox": {"l": 64.801971, "t": 272.62658999999996, "r": 535.31042, "b": 281.8396, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Director of Licensing, IBM Corporation, North Castle Drive, MD-NC119, Armonk, NY 10504-1785, US"}, {"label": "text", "id": 7, "page_no": 36, "cluster": {"id": 7, "label": "text", "bbox": {"l": 63.77083969116211, "t": 291.3708801269531, "r": 545.7674, "b": 342.25909423828125, "coord_origin": "TOPLEFT"}, "confidence": 0.9851772785186768, "cells": [{"id": 16, "text": "INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION \u201cAS IS\u201d ", "bbox": {"l": 64.801971, "t": 292.60638, "r": 518.07764, "b": 301.81937, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED ", "bbox": {"l": 64.801971, "t": 302.62613, "r": 545.7674, "b": 311.83911, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A ", "bbox": {"l": 64.801971, "t": 312.6459, "r": 535.5415, "b": 321.85889, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "PARTICULAR PURPOSE. Some jurisdictions do not allow disclaimer of express or implied warranties in ", "bbox": {"l": 64.801971, "t": 322.6059, "r": 527.50079, "b": 331.81888, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "certain transactions, therefore, this statement may not apply to you. ", "bbox": {"l": 64.801971, "t": 332.62564, "r": 365.39774, "b": 341.83862, "coord_origin": "TOPLEFT"}}]}, "text": "INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION \u201cAS IS\u201d WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some jurisdictions do not allow disclaimer of express or implied warranties in certain transactions, therefore, this statement may not apply to you."}, {"label": "text", "id": 8, "page_no": 36, "cluster": {"id": 8, "label": "text", "bbox": {"l": 63.76580810546875, "t": 352.0263977050781, "r": 547.24841, "b": 391.8179, "coord_origin": "TOPLEFT"}, "confidence": 0.9841977953910828, "cells": [{"id": 21, "text": "This information could include technical inaccuracies or typographical errors. Changes are periodically made ", "bbox": {"l": 64.801971, "t": 352.60541, "r": 546.45966, "b": 361.81839, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "to the information herein; these changes will be incorporated in new editions of the publication. IBM may make ", "bbox": {"l": 64.801956, "t": 362.62515, "r": 547.13379, "b": 371.83813, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time ", "bbox": {"l": 64.800964, "t": 372.64493, "r": 547.24841, "b": 381.85791, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "without notice. ", "bbox": {"l": 64.800964, "t": 382.60492, "r": 131.4742, "b": 391.8179, "coord_origin": "TOPLEFT"}}]}, "text": "This information could include technical inaccuracies or typographical errors. Changes are periodically made to the information herein; these changes will be incorporated in new editions of the publication. IBM may make improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time without notice."}, {"label": "text", "id": 9, "page_no": 36, "cluster": {"id": 9, "label": "text", "bbox": {"l": 63.99868392944336, "t": 401.97637939453125, "r": 541.54132, "b": 431.9630432128906, "coord_origin": "TOPLEFT"}, "confidence": 0.9843890070915222, "cells": [{"id": 25, "text": "Any references in this information to non-IBM websites are provided for convenience only and do not in any ", "bbox": {"l": 64.800964, "t": 402.64444, "r": 541.54132, "b": 411.85742, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "manner serve as an endorsement of those websites. The materials at those websites are not part of the ", "bbox": {"l": 64.80098, "t": 412.60443, "r": 524.91406, "b": 421.81741, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "materials for this IBM product and use of those websites is at your own risk. ", "bbox": {"l": 64.80098, "t": 422.62417999999997, "r": 401.4938, "b": 431.83716, "coord_origin": "TOPLEFT"}}]}, "text": "Any references in this information to non-IBM websites are provided for convenience only and do not in any manner serve as an endorsement of those websites. The materials at those websites are not part of the materials for this IBM product and use of those websites is at your own risk."}, {"label": "text", "id": 10, "page_no": 36, "cluster": {"id": 10, "label": "text", "bbox": {"l": 64.16744995117188, "t": 442.2430419921875, "r": 519.26678, "b": 462.4287109375, "coord_origin": "TOPLEFT"}, "confidence": 0.9788233637809753, "cells": [{"id": 28, "text": "IBM may use or distribute any of the information you provide in any way it believes appropriate without ", "bbox": {"l": 64.80098, "t": 442.60393999999997, "r": 519.26678, "b": 451.81692999999996, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "incurring any obligation to you. ", "bbox": {"l": 64.80098, "t": 452.62369, "r": 203.13445, "b": 461.83667, "coord_origin": "TOPLEFT"}}]}, "text": "IBM may use or distribute any of the information you provide in any way it believes appropriate without incurring any obligation to you."}, {"label": "text", "id": 11, "page_no": 36, "cluster": {"id": 11, "label": "text", "bbox": {"l": 63.904296875, "t": 472.1893005371094, "r": 505.27103, "b": 492.3111572265625, "coord_origin": "TOPLEFT"}, "confidence": 0.9781931638717651, "cells": [{"id": 30, "text": "The performance data and client examples cited are presented for illustrative purposes only. Actual ", "bbox": {"l": 64.80098, "t": 472.60345, "r": 505.27103, "b": 481.81644, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "performance results may vary depending on specific configurations and operating conditions. ", "bbox": {"l": 64.800964, "t": 482.6232, "r": 478.22061, "b": 491.83618, "coord_origin": "TOPLEFT"}}]}, "text": "The performance data and client examples cited are presented for illustrative purposes only. Actual performance results may vary depending on specific configurations and operating conditions."}, {"label": "text", "id": 12, "page_no": 36, "cluster": {"id": 12, "label": "text", "bbox": {"l": 64.10684204101562, "t": 502.1192626953125, "r": 547.24249, "b": 542.1983642578125, "coord_origin": "TOPLEFT"}, "confidence": 0.9864881634712219, "cells": [{"id": 32, "text": "Information concerning non-IBM products was obtained from the suppliers of those products, their published ", "bbox": {"l": 64.800964, "t": 502.60297, "r": 544.94849, "b": 511.81595, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "announcements or other publicly available sources. IBM has not tested those products and cannot confirm the ", "bbox": {"l": 64.800964, "t": 512.62271, "r": 547.24249, "b": 521.83569, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the ", "bbox": {"l": 64.800964, "t": 522.64249, "r": 532.51556, "b": 531.85547, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "capabilities of non-IBM products should be addressed to the suppliers of those products. ", "bbox": {"l": 64.800995, "t": 532.66223, "r": 458.02179, "b": 541.87524, "coord_origin": "TOPLEFT"}}]}, "text": "Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly available sources. IBM has not tested those products and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products."}, {"label": "text", "id": 13, "page_no": 36, "cluster": {"id": 13, "label": "text", "bbox": {"l": 64.23661041259766, "t": 552.1707153320312, "r": 544.68579, "b": 572.2598876953125, "coord_origin": "TOPLEFT"}, "confidence": 0.9780008792877197, "cells": [{"id": 36, "text": "Statements regarding IBM\u2019s future direction or intent are subject to change or withdrawal without notice, and ", "bbox": {"l": 64.800995, "t": 552.64201, "r": 544.68579, "b": 561.85501, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "represent goals and objectives only. ", "bbox": {"l": 64.800995, "t": 562.6617699999999, "r": 226.96176, "b": 571.87477, "coord_origin": "TOPLEFT"}}]}, "text": "Statements regarding IBM\u2019s future direction or intent are subject to change or withdrawal without notice, and represent goals and objectives only."}, {"label": "text", "id": 14, "page_no": 36, "cluster": {"id": 14, "label": "text", "bbox": {"l": 63.82798385620117, "t": 582.23291015625, "r": 547.01636, "b": 621.85406, "coord_origin": "TOPLEFT"}, "confidence": 0.981692910194397, "cells": [{"id": 38, "text": "This information contains examples of data and reports used in daily business operations. To illustrate them ", "bbox": {"l": 64.800995, "t": 582.64154, "r": 543.07227, "b": 591.85454, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "as completely as possible, the examples include the names of individuals, companies, brands, and products. ", "bbox": {"l": 64.800018, "t": 592.6613, "r": 547.01636, "b": 601.8743, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "All of these names are fictitious and any similarity to actual people or business enterprises is entirely ", "bbox": {"l": 64.801025, "t": 602.62131, "r": 510.27209, "b": 611.8343, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "coincidental. ", "bbox": {"l": 64.801025, "t": 612.64107, "r": 123.10986000000001, "b": 621.85406, "coord_origin": "TOPLEFT"}}]}, "text": "This information contains examples of data and reports used in daily business operations. To illustrate them as completely as possible, the examples include the names of individuals, companies, brands, and products. All of these names are fictitious and any similarity to actual people or business enterprises is entirely coincidental."}, {"label": "section_header", "id": 15, "page_no": 36, "cluster": {"id": 15, "label": "section_header", "bbox": {"l": 64.29706573486328, "t": 631.7528686523438, "r": 172.50049, "b": 641.83383, "coord_origin": "TOPLEFT"}, "confidence": 0.8924005627632141, "cells": [{"id": 42, "text": "COPYRIGHT LICENSE:", "bbox": {"l": 64.801025, "t": 632.6208300000001, "r": 172.50049, "b": 641.83383, "coord_origin": "TOPLEFT"}}]}, "text": "COPYRIGHT LICENSE:"}, {"label": "text", "id": 16, "page_no": 36, "cluster": {"id": 16, "label": "text", "bbox": {"l": 63.95261001586914, "t": 651.9513549804688, "r": 547.35809, "b": 732.0111083984375, "coord_origin": "TOPLEFT"}, "confidence": 0.9879701137542725, "cells": [{"id": 43, "text": "This information contains sample application programs in source language, which illustrate programming ", "bbox": {"l": 64.801025, "t": 652.66035, "r": 529.14618, "b": 661.87335, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "techniques on various operating platforms. You may copy, modify, and distribute these sample programs in ", "bbox": {"l": 64.802032, "t": 662.62035, "r": 540.33325, "b": 671.83335, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "any form without payment to IBM, for the purposes of developing, using, marketing or distributing application ", "bbox": {"l": 64.802032, "t": 672.64011, "r": 546.02222, "b": 681.85311, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "programs conforming to the application programming interface for the operating platform for which the sample ", "bbox": {"l": 64.802032, "t": 682.65987, "r": 547.35809, "b": 691.87287, "coord_origin": "TOPLEFT"}}, {"id": 47, "text": "programs are written. These examples have not been thoroughly tested under all conditions. IBM, therefore, ", "bbox": {"l": 64.802032, "t": 692.619865, "r": 544.22968, "b": 701.83287, "coord_origin": "TOPLEFT"}}, {"id": 48, "text": "cannot guarantee or imply reliability, serviceability, or function of these programs. The sample programs are ", "bbox": {"l": 64.802048, "t": 702.639626, "r": 542.97467, "b": 711.852631, "coord_origin": "TOPLEFT"}}, {"id": 49, "text": "provided \u201cAS IS\u201d, without warranty of any kind. IBM shall not be liable for any damages arising out of your use ", "bbox": {"l": 64.802032, "t": 712.659386, "r": 547.25946, "b": 721.872391, "coord_origin": "TOPLEFT"}}, {"id": 50, "text": "of the sample programs. ", "bbox": {"l": 64.802032, "t": 722.619385, "r": 175.33412, "b": 731.83239, "coord_origin": "TOPLEFT"}}]}, "text": "This information contains sample application programs in source language, which illustrate programming techniques on various operating platforms. You may copy, modify, and distribute these sample programs in any form without payment to IBM, for the purposes of developing, using, marketing or distributing application programs conforming to the application programming interface for the operating platform for which the sample programs are written. These examples have not been thoroughly tested under all conditions. IBM, therefore, cannot guarantee or imply reliability, serviceability, or function of these programs. The sample programs are provided \u201cAS IS\u201d, without warranty of any kind. IBM shall not be liable for any damages arising out of your use of the sample programs."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 36, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 63.60262680053711, "t": 754.6927490234375, "r": 180.32761, "b": 764.0509033203125, "coord_origin": "TOPLEFT"}, "confidence": 0.9509437084197998, "cells": [{"id": 0, "text": "' Copyright IBM Corp. 2023.", "bbox": {"l": 64.800003, "t": 755.538002, "r": 180.32761, "b": 763.863001, "coord_origin": "TOPLEFT"}}]}, "text": "' Copyright IBM Corp. 2023."}, {"label": "page_footer", "id": 1, "page_no": 36, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 535.6251220703125, "t": 754.3717041015625, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}, "confidence": 0.9176149368286133, "cells": [{"id": 1, "text": "35", "bbox": {"l": 536.09998, "t": 754.848721, "r": 547.25916, "b": 764.06172, "coord_origin": "TOPLEFT"}}]}, "text": "35"}]}}, {"page_no": 37, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "36 ", "bbox": {"l": 64.800003, "t": 755.868721, "r": 78.402, "b": 765.08172, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 756.557999, "r": 267.0744, "b": 764.883001, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Trademarks", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 155.4895, "b": 85.9837, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines ", "bbox": {"l": 64.800003, "t": 103.48870999999997, "r": 547.23431, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Corporation, registered in many jurisdictions worldwide. Other product and service names might be ", "bbox": {"l": 64.800018, "t": 113.50847999999996, "r": 504.22832999999997, "b": 122.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "trademarks of IBM or other companies. A current list of IBM trademarks is available on the web at \u201cCopyright ", "bbox": {"l": 64.800018, "t": 123.52826000000005, "r": 546.94568, "b": 132.74127, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "and trademark information\u201d at ", "bbox": {"l": 64.800018, "t": 133.48828000000003, "r": 198.67136, "b": 142.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "http://www.ibm.com/legal/copytrade.shtml", "bbox": {"l": 198.66043, "t": 133.6377, "r": 398.51779, "b": 142.41247999999996, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "The following terms are trademarks or registered trademarks of International Business Machines Corporation, ", "bbox": {"l": 64.800995, "t": 153.52881000000002, "r": 547.24146, "b": 162.74181999999996, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "and might also be trademarks or registered trademarks in other countries. ", "bbox": {"l": 64.800995, "t": 163.48883, "r": 393.13339, "b": 172.70183999999995, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "Db2fi IBMfi", "bbox": {"l": 75.599998, "t": 182.53801999999996, "r": 98.195404, "b": 190.86298, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "IBM Blockchainfi", "bbox": {"l": 75.599998, "t": 204.55829000000006, "r": 144.13049, "b": 212.88324, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "IBM Cloudfi IBM Clou", "bbox": {"l": 75.599998, "t": 215.53827, "r": 112.57558999999999, "b": 223.86321999999996, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "d Pakfi", "bbox": {"l": 112.60799, "t": 226.51824999999997, "r": 142.2117, "b": 234.84320000000002, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "IBM Telum\u2122", "bbox": {"l": 75.599998, "t": 237.55853000000002, "r": 128.0511, "b": 245.88347999999996, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "IBM Watsonfi", "bbox": {"l": 236.40029999999996, "t": 182.53882, "r": 292.00497, "b": 190.86377000000005, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "IBM z16\u2122", "bbox": {"l": 236.40029999999996, "t": 193.51880000000006, "r": 278.3295, "b": 201.84375, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "Instanafi", "bbox": {"l": 236.40029999999996, "t": 204.55908, "r": 272.4696, "b": 212.88403000000005, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "Open Libertyfi", "bbox": {"l": 236.40029999999996, "t": 215.53905999999995, "r": 294.38095, "b": 223.86401, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "OpenPagesfi", "bbox": {"l": 236.40029999999996, "t": 226.51904000000002, "r": 290.44708, "b": 234.84398999999996, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "Redbooksfi", "bbox": {"l": 236.40029999999996, "t": 237.55933000000005, "r": 283.47211, "b": 245.88428, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Redbooks (log", "bbox": {"l": 397.20059, "t": 182.53961000000004, "r": 455.12460000000004, "b": 190.86455999999998, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "o)", "bbox": {"l": 450.04388, "t": 182.53961000000004, "r": 455.17949999999996, "b": 190.86455999999998, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "fi Turbon", "bbox": {"l": 425.6424, "t": 182.53961000000004, "r": 448.43789999999996, "b": 190.86455999999998, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "omicfi", "bbox": {"l": 425.69009, "t": 193.51959, "r": 451.26357999999993, "b": 201.84454000000005, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "WebSpherefi", "bbox": {"l": 397.20059, "t": 204.55988000000002, "r": 451.25278000000003, "b": 212.88482999999997, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "z/OSfi", "bbox": {"l": 397.20059, "t": 215.53985999999998, "r": 423.8046, "b": 223.86481000000003, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "z16\u2122", "bbox": {"l": 397.20059, "t": 226.51984000000004, "r": 420.6366, "b": 234.84479, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "The following terms are trademarks of other companies:", "bbox": {"l": 64.800003, "t": 258.52855999999997, "r": 312.00525, "b": 267.74158, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "Intel, Intel logo, Intel Inside logo, and Intel Centrino logo are trademarks or registered trademarks of Intel ", "bbox": {"l": 64.800003, "t": 278.50836000000004, "r": 528.68494, "b": 287.72134, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Corporation or its subsidiaries in the United States and other countries.", "bbox": {"l": 64.800003, "t": 288.52811, "r": 378.13461, "b": 297.74109, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "The registered trademark Linuxfi is used pursuant to a sublicense from the Linux Foundation, the exclusive ", "bbox": {"l": 64.800003, "t": 308.50787, "r": 541.68878, "b": 317.72086, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "licensee of Linus Torvalds, owner of the mark on a worldwide basis.", "bbox": {"l": 64.800003, "t": 318.52762, "r": 364.17566, "b": 327.74060000000003, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "Red Hat and OpenShift are trademarks or registered trademarks of Red Hat, Inc. or its subsidiaries in the ", "bbox": {"l": 64.800003, "t": 338.50738999999993, "r": 531.98065, "b": 347.72037, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "United States and other countries.", "bbox": {"l": 64.800003, "t": 348.52713, "r": 215.95392, "b": 357.74011, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "UNIX is a registered trademark of The Open Group in the United States and other countries.", "bbox": {"l": 64.800003, "t": 368.5069, "r": 472.09439, "b": 377.71988, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "Other company, product, or service names may be trademarks or service marks of others. ", "bbox": {"l": 64.800003, "t": 388.48666, "r": 465.37216, "b": 397.69965, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "page_footer", "bbox": {"l": 64.26212310791016, "t": 755.4874267578125, "r": 78.402, "b": 765.08172, "coord_origin": "TOPLEFT"}, "confidence": 0.9160765409469604, "cells": [{"id": 0, "text": "36 ", "bbox": {"l": 64.800003, "t": 755.868721, "r": 78.402, "b": 765.08172, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 93.35021209716797, "t": 755.8494262695312, "r": 267.0744, "b": 765.4060668945312, "coord_origin": "TOPLEFT"}, "confidence": 0.9523178339004517, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 756.557999, "r": 267.0744, "b": 764.883001, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "section_header", "bbox": {"l": 64.03144836425781, "t": 70.1122817993164, "r": 155.4895, "b": 85.9837, "coord_origin": "TOPLEFT"}, "confidence": 0.954963743686676, "cells": [{"id": 2, "text": "Trademarks", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 155.4895, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 64.0931396484375, "t": 102.72844696044922, "r": 547.23431, "b": 142.70128999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9848971366882324, "cells": [{"id": 3, "text": "IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines ", "bbox": {"l": 64.800003, "t": 103.48870999999997, "r": 547.23431, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Corporation, registered in many jurisdictions worldwide. Other product and service names might be ", "bbox": {"l": 64.800018, "t": 113.50847999999996, "r": 504.22832999999997, "b": 122.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "trademarks of IBM or other companies. A current list of IBM trademarks is available on the web at \u201cCopyright ", "bbox": {"l": 64.800018, "t": 123.52826000000005, "r": 546.94568, "b": 132.74127, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "and trademark information\u201d at ", "bbox": {"l": 64.800018, "t": 133.48828000000003, "r": 198.67136, "b": 142.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "http://www.ibm.com/legal/copytrade.shtml", "bbox": {"l": 198.66043, "t": 133.6377, "r": 398.51779, "b": 142.41247999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 63.78811264038086, "t": 152.59286499023438, "r": 547.24146, "b": 172.8232421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9603025913238525, "cells": [{"id": 8, "text": "The following terms are trademarks or registered trademarks of International Business Machines Corporation, ", "bbox": {"l": 64.800995, "t": 153.52881000000002, "r": 547.24146, "b": 162.74181999999996, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "and might also be trademarks or registered trademarks in other countries. ", "bbox": {"l": 64.800995, "t": 163.48883, "r": 393.13339, "b": 172.70183999999995, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "text", "bbox": {"l": 75.599998, "t": 181.60858154296875, "r": 99.15697479248047, "b": 190.86298, "coord_origin": "TOPLEFT"}, "confidence": 0.8173197507858276, "cells": [{"id": 10, "text": "Db2fi IBMfi", "bbox": {"l": 75.599998, "t": 182.53801999999996, "r": 98.195404, "b": 190.86298, "coord_origin": "TOPLEFT"}}]}, {"id": 6, "label": "text", "bbox": {"l": 75.599998, "t": 203.4119110107422, "r": 144.71075439453125, "b": 212.88324, "coord_origin": "TOPLEFT"}, "confidence": 0.8817703127861023, "cells": [{"id": 11, "text": "IBM Blockchainfi", "bbox": {"l": 75.599998, "t": 204.55829000000006, "r": 144.13049, "b": 212.88324, "coord_origin": "TOPLEFT"}}]}, {"id": 7, "label": "text", "bbox": {"l": 75.599998, "t": 214.50650024414062, "r": 124.25857543945312, "b": 223.86321999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.8559992909431458, "cells": [{"id": 12, "text": "IBM Cloudfi IBM Clou", "bbox": {"l": 75.599998, "t": 215.53827, "r": 112.57558999999999, "b": 223.86321999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 8, "label": "text", "bbox": {"l": 75.47257232666016, "t": 224.76895141601562, "r": 142.73785400390625, "b": 234.84320000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.874781608581543, "cells": [{"id": 13, "text": "d Pakfi", "bbox": {"l": 112.60799, "t": 226.51824999999997, "r": 142.2117, "b": 234.84320000000002, "coord_origin": "TOPLEFT"}}]}, {"id": 9, "label": "text", "bbox": {"l": 75.599998, "t": 235.86727905273438, "r": 128.0511, "b": 245.88347999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.8794353008270264, "cells": [{"id": 14, "text": "IBM Telum\u2122", "bbox": {"l": 75.599998, "t": 237.55853000000002, "r": 128.0511, "b": 245.88347999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 10, "label": "text", "bbox": {"l": 235.9648895263672, "t": 181.54017639160156, "r": 292.5691833496094, "b": 190.86377000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.8140993118286133, "cells": [{"id": 15, "text": "IBM Watsonfi", "bbox": {"l": 236.40029999999996, "t": 182.53882, "r": 292.00497, "b": 190.86377000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 11, "label": "text", "bbox": {"l": 235.9771270751953, "t": 191.93496704101562, "r": 278.3295, "b": 201.84375, "coord_origin": "TOPLEFT"}, "confidence": 0.8634824752807617, "cells": [{"id": 16, "text": "IBM z16\u2122", "bbox": {"l": 236.40029999999996, "t": 193.51880000000006, "r": 278.3295, "b": 201.84375, "coord_origin": "TOPLEFT"}}]}, {"id": 12, "label": "text", "bbox": {"l": 235.92138671875, "t": 203.60043334960938, "r": 272.8687744140625, "b": 212.88403000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.8542282581329346, "cells": [{"id": 17, "text": "Instanafi", "bbox": {"l": 236.40029999999996, "t": 204.55908, "r": 272.4696, "b": 212.88403000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 13, "label": "text", "bbox": {"l": 235.9377899169922, "t": 214.2160186767578, "r": 294.80047607421875, "b": 224.3423614501953, "coord_origin": "TOPLEFT"}, "confidence": 0.861255943775177, "cells": [{"id": 18, "text": "Open Libertyfi", "bbox": {"l": 236.40029999999996, "t": 215.53905999999995, "r": 294.38095, "b": 223.86401, "coord_origin": "TOPLEFT"}}]}, {"id": 14, "label": "text", "bbox": {"l": 235.86184692382812, "t": 225.51539611816406, "r": 290.5615539550781, "b": 234.899658203125, "coord_origin": "TOPLEFT"}, "confidence": 0.8668359518051147, "cells": [{"id": 19, "text": "OpenPagesfi", "bbox": {"l": 236.40029999999996, "t": 226.51904000000002, "r": 290.44708, "b": 234.84398999999996, "coord_origin": "TOPLEFT"}}]}, {"id": 15, "label": "text", "bbox": {"l": 236.06265258789062, "t": 236.30458068847656, "r": 283.79803466796875, "b": 245.88428, "coord_origin": "TOPLEFT"}, "confidence": 0.8743909001350403, "cells": [{"id": 20, "text": "Redbooksfi", "bbox": {"l": 236.40029999999996, "t": 237.55933000000005, "r": 283.47211, "b": 245.88428, "coord_origin": "TOPLEFT"}}]}, {"id": 16, "label": "text", "bbox": {"l": 396.7199401855469, "t": 181.80523681640625, "r": 464.44384765625, "b": 191.1903533935547, "coord_origin": "TOPLEFT"}, "confidence": 0.6504887342453003, "cells": [{"id": 21, "text": "Redbooks (log", "bbox": {"l": 397.20059, "t": 182.53961000000004, "r": 455.12460000000004, "b": 190.86455999999998, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "o)", "bbox": {"l": 450.04388, "t": 182.53961000000004, "r": 455.17949999999996, "b": 190.86455999999998, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "fi Turbon", "bbox": {"l": 425.6424, "t": 182.53961000000004, "r": 448.43789999999996, "b": 190.86455999999998, "coord_origin": "TOPLEFT"}}]}, {"id": 17, "label": "text", "bbox": {"l": 396.71099853515625, "t": 192.41983032226562, "r": 452.03265380859375, "b": 201.84454000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.7500287890434265, "cells": [{"id": 24, "text": "omicfi", "bbox": {"l": 425.69009, "t": 193.51959, "r": 451.26357999999993, "b": 201.84454000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 18, "label": "text", "bbox": {"l": 396.258544921875, "t": 203.52040100097656, "r": 451.70428466796875, "b": 212.88482999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.7123883366584778, "cells": [{"id": 25, "text": "WebSpherefi", "bbox": {"l": 397.20059, "t": 204.55988000000002, "r": 451.25278000000003, "b": 212.88482999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 19, "label": "text", "bbox": {"l": 396.62286376953125, "t": 214.1708984375, "r": 424.4446716308594, "b": 223.86481000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.730349063873291, "cells": [{"id": 26, "text": "z/OSfi", "bbox": {"l": 397.20059, "t": 215.53985999999998, "r": 423.8046, "b": 223.86481000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 20, "label": "text", "bbox": {"l": 396.6561584472656, "t": 225.23277282714844, "r": 420.6366, "b": 234.84479, "coord_origin": "TOPLEFT"}, "confidence": 0.7374036312103271, "cells": [{"id": 27, "text": "z16\u2122", "bbox": {"l": 397.20059, "t": 226.51984000000004, "r": 420.6366, "b": 234.84479, "coord_origin": "TOPLEFT"}}]}, {"id": 21, "label": "text", "bbox": {"l": 64.08106994628906, "t": 258.01312255859375, "r": 312.00525, "b": 268.16949462890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9345569014549255, "cells": [{"id": 28, "text": "The following terms are trademarks of other companies:", "bbox": {"l": 64.800003, "t": 258.52855999999997, "r": 312.00525, "b": 267.74158, "coord_origin": "TOPLEFT"}}]}, {"id": 22, "label": "text", "bbox": {"l": 64.17213439941406, "t": 277.27313232421875, "r": 528.68494, "b": 298.1844787597656, "coord_origin": "TOPLEFT"}, "confidence": 0.9759830832481384, "cells": [{"id": 29, "text": "Intel, Intel logo, Intel Inside logo, and Intel Centrino logo are trademarks or registered trademarks of Intel ", "bbox": {"l": 64.800003, "t": 278.50836000000004, "r": 528.68494, "b": 287.72134, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Corporation or its subsidiaries in the United States and other countries.", "bbox": {"l": 64.800003, "t": 288.52811, "r": 378.13461, "b": 297.74109, "coord_origin": "TOPLEFT"}}]}, {"id": 23, "label": "text", "bbox": {"l": 63.988487243652344, "t": 307.5063171386719, "r": 541.68878, "b": 327.7742919921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9722592234611511, "cells": [{"id": 31, "text": "The registered trademark Linuxfi is used pursuant to a sublicense from the Linux Foundation, the exclusive ", "bbox": {"l": 64.800003, "t": 308.50787, "r": 541.68878, "b": 317.72086, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "licensee of Linus Torvalds, owner of the mark on a worldwide basis.", "bbox": {"l": 64.800003, "t": 318.52762, "r": 364.17566, "b": 327.74060000000003, "coord_origin": "TOPLEFT"}}]}, {"id": 24, "label": "text", "bbox": {"l": 64.36927795410156, "t": 337.3686218261719, "r": 531.98065, "b": 357.74011, "coord_origin": "TOPLEFT"}, "confidence": 0.9669205546379089, "cells": [{"id": 33, "text": "Red Hat and OpenShift are trademarks or registered trademarks of Red Hat, Inc. or its subsidiaries in the ", "bbox": {"l": 64.800003, "t": 338.50738999999993, "r": 531.98065, "b": 347.72037, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "United States and other countries.", "bbox": {"l": 64.800003, "t": 348.52713, "r": 215.95392, "b": 357.74011, "coord_origin": "TOPLEFT"}}]}, {"id": 25, "label": "text", "bbox": {"l": 64.39899444580078, "t": 367.4486083984375, "r": 472.09439, "b": 377.71988, "coord_origin": "TOPLEFT"}, "confidence": 0.9511570930480957, "cells": [{"id": 35, "text": "UNIX is a registered trademark of The Open Group in the United States and other countries.", "bbox": {"l": 64.800003, "t": 368.5069, "r": 472.09439, "b": 377.71988, "coord_origin": "TOPLEFT"}}]}, {"id": 26, "label": "text", "bbox": {"l": 64.1666259765625, "t": 387.39398193359375, "r": 465.37216, "b": 397.69965, "coord_origin": "TOPLEFT"}, "confidence": 0.9543401598930359, "cells": [{"id": 36, "text": "Other company, product, or service names may be trademarks or service marks of others. ", "bbox": {"l": 64.800003, "t": 388.48666, "r": 465.37216, "b": 397.69965, "coord_origin": "TOPLEFT"}}]}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "page_footer", "id": 0, "page_no": 37, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.26212310791016, "t": 755.4874267578125, "r": 78.402, "b": 765.08172, "coord_origin": "TOPLEFT"}, "confidence": 0.9160765409469604, "cells": [{"id": 0, "text": "36 ", "bbox": {"l": 64.800003, "t": 755.868721, "r": 78.402, "b": 765.08172, "coord_origin": "TOPLEFT"}}]}, "text": "36"}, {"label": "page_footer", "id": 1, "page_no": 37, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.35021209716797, "t": 755.8494262695312, "r": 267.0744, "b": 765.4060668945312, "coord_origin": "TOPLEFT"}, "confidence": 0.9523178339004517, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 756.557999, "r": 267.0744, "b": 764.883001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}, {"label": "section_header", "id": 2, "page_no": 37, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.03144836425781, "t": 70.1122817993164, "r": 155.4895, "b": 85.9837, "coord_origin": "TOPLEFT"}, "confidence": 0.954963743686676, "cells": [{"id": 2, "text": "Trademarks", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 155.4895, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, "text": "Trademarks"}, {"label": "text", "id": 3, "page_no": 37, "cluster": {"id": 3, "label": "text", "bbox": {"l": 64.0931396484375, "t": 102.72844696044922, "r": 547.23431, "b": 142.70128999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9848971366882324, "cells": [{"id": 3, "text": "IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines ", "bbox": {"l": 64.800003, "t": 103.48870999999997, "r": 547.23431, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Corporation, registered in many jurisdictions worldwide. Other product and service names might be ", "bbox": {"l": 64.800018, "t": 113.50847999999996, "r": 504.22832999999997, "b": 122.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "trademarks of IBM or other companies. A current list of IBM trademarks is available on the web at \u201cCopyright ", "bbox": {"l": 64.800018, "t": 123.52826000000005, "r": 546.94568, "b": 132.74127, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "and trademark information\u201d at ", "bbox": {"l": 64.800018, "t": 133.48828000000003, "r": 198.67136, "b": 142.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "http://www.ibm.com/legal/copytrade.shtml", "bbox": {"l": 198.66043, "t": 133.6377, "r": 398.51779, "b": 142.41247999999996, "coord_origin": "TOPLEFT"}}]}, "text": "IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines Corporation, registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the web at \u201cCopyright and trademark information\u201d at http://www.ibm.com/legal/copytrade.shtml"}, {"label": "text", "id": 4, "page_no": 37, "cluster": {"id": 4, "label": "text", "bbox": {"l": 63.78811264038086, "t": 152.59286499023438, "r": 547.24146, "b": 172.8232421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9603025913238525, "cells": [{"id": 8, "text": "The following terms are trademarks or registered trademarks of International Business Machines Corporation, ", "bbox": {"l": 64.800995, "t": 153.52881000000002, "r": 547.24146, "b": 162.74181999999996, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "and might also be trademarks or registered trademarks in other countries. ", "bbox": {"l": 64.800995, "t": 163.48883, "r": 393.13339, "b": 172.70183999999995, "coord_origin": "TOPLEFT"}}]}, "text": "The following terms are trademarks or registered trademarks of International Business Machines Corporation, and might also be trademarks or registered trademarks in other countries."}, {"label": "text", "id": 5, "page_no": 37, "cluster": {"id": 5, "label": "text", "bbox": {"l": 75.599998, "t": 181.60858154296875, "r": 99.15697479248047, "b": 190.86298, "coord_origin": "TOPLEFT"}, "confidence": 0.8173197507858276, "cells": [{"id": 10, "text": "Db2fi IBMfi", "bbox": {"l": 75.599998, "t": 182.53801999999996, "r": 98.195404, "b": 190.86298, "coord_origin": "TOPLEFT"}}]}, "text": "Db2fi IBMfi"}, {"label": "text", "id": 6, "page_no": 37, "cluster": {"id": 6, "label": "text", "bbox": {"l": 75.599998, "t": 203.4119110107422, "r": 144.71075439453125, "b": 212.88324, "coord_origin": "TOPLEFT"}, "confidence": 0.8817703127861023, "cells": [{"id": 11, "text": "IBM Blockchainfi", "bbox": {"l": 75.599998, "t": 204.55829000000006, "r": 144.13049, "b": 212.88324, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Blockchainfi"}, {"label": "text", "id": 7, "page_no": 37, "cluster": {"id": 7, "label": "text", "bbox": {"l": 75.599998, "t": 214.50650024414062, "r": 124.25857543945312, "b": 223.86321999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.8559992909431458, "cells": [{"id": 12, "text": "IBM Cloudfi IBM Clou", "bbox": {"l": 75.599998, "t": 215.53827, "r": 112.57558999999999, "b": 223.86321999999996, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloudfi IBM Clou"}, {"label": "text", "id": 8, "page_no": 37, "cluster": {"id": 8, "label": "text", "bbox": {"l": 75.47257232666016, "t": 224.76895141601562, "r": 142.73785400390625, "b": 234.84320000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.874781608581543, "cells": [{"id": 13, "text": "d Pakfi", "bbox": {"l": 112.60799, "t": 226.51824999999997, "r": 142.2117, "b": 234.84320000000002, "coord_origin": "TOPLEFT"}}]}, "text": "d Pakfi"}, {"label": "text", "id": 9, "page_no": 37, "cluster": {"id": 9, "label": "text", "bbox": {"l": 75.599998, "t": 235.86727905273438, "r": 128.0511, "b": 245.88347999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.8794353008270264, "cells": [{"id": 14, "text": "IBM Telum\u2122", "bbox": {"l": 75.599998, "t": 237.55853000000002, "r": 128.0511, "b": 245.88347999999996, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Telum\u2122"}, {"label": "text", "id": 10, "page_no": 37, "cluster": {"id": 10, "label": "text", "bbox": {"l": 235.9648895263672, "t": 181.54017639160156, "r": 292.5691833496094, "b": 190.86377000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.8140993118286133, "cells": [{"id": 15, "text": "IBM Watsonfi", "bbox": {"l": 236.40029999999996, "t": 182.53882, "r": 292.00497, "b": 190.86377000000005, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Watsonfi"}, {"label": "text", "id": 11, "page_no": 37, "cluster": {"id": 11, "label": "text", "bbox": {"l": 235.9771270751953, "t": 191.93496704101562, "r": 278.3295, "b": 201.84375, "coord_origin": "TOPLEFT"}, "confidence": 0.8634824752807617, "cells": [{"id": 16, "text": "IBM z16\u2122", "bbox": {"l": 236.40029999999996, "t": 193.51880000000006, "r": 278.3295, "b": 201.84375, "coord_origin": "TOPLEFT"}}]}, "text": "IBM z16\u2122"}, {"label": "text", "id": 12, "page_no": 37, "cluster": {"id": 12, "label": "text", "bbox": {"l": 235.92138671875, "t": 203.60043334960938, "r": 272.8687744140625, "b": 212.88403000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.8542282581329346, "cells": [{"id": 17, "text": "Instanafi", "bbox": {"l": 236.40029999999996, "t": 204.55908, "r": 272.4696, "b": 212.88403000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Instanafi"}, {"label": "text", "id": 13, "page_no": 37, "cluster": {"id": 13, "label": "text", "bbox": {"l": 235.9377899169922, "t": 214.2160186767578, "r": 294.80047607421875, "b": 224.3423614501953, "coord_origin": "TOPLEFT"}, "confidence": 0.861255943775177, "cells": [{"id": 18, "text": "Open Libertyfi", "bbox": {"l": 236.40029999999996, "t": 215.53905999999995, "r": 294.38095, "b": 223.86401, "coord_origin": "TOPLEFT"}}]}, "text": "Open Libertyfi"}, {"label": "text", "id": 14, "page_no": 37, "cluster": {"id": 14, "label": "text", "bbox": {"l": 235.86184692382812, "t": 225.51539611816406, "r": 290.5615539550781, "b": 234.899658203125, "coord_origin": "TOPLEFT"}, "confidence": 0.8668359518051147, "cells": [{"id": 19, "text": "OpenPagesfi", "bbox": {"l": 236.40029999999996, "t": 226.51904000000002, "r": 290.44708, "b": 234.84398999999996, "coord_origin": "TOPLEFT"}}]}, "text": "OpenPagesfi"}, {"label": "text", "id": 15, "page_no": 37, "cluster": {"id": 15, "label": "text", "bbox": {"l": 236.06265258789062, "t": 236.30458068847656, "r": 283.79803466796875, "b": 245.88428, "coord_origin": "TOPLEFT"}, "confidence": 0.8743909001350403, "cells": [{"id": 20, "text": "Redbooksfi", "bbox": {"l": 236.40029999999996, "t": 237.55933000000005, "r": 283.47211, "b": 245.88428, "coord_origin": "TOPLEFT"}}]}, "text": "Redbooksfi"}, {"label": "text", "id": 16, "page_no": 37, "cluster": {"id": 16, "label": "text", "bbox": {"l": 396.7199401855469, "t": 181.80523681640625, "r": 464.44384765625, "b": 191.1903533935547, "coord_origin": "TOPLEFT"}, "confidence": 0.6504887342453003, "cells": [{"id": 21, "text": "Redbooks (log", "bbox": {"l": 397.20059, "t": 182.53961000000004, "r": 455.12460000000004, "b": 190.86455999999998, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "o)", "bbox": {"l": 450.04388, "t": 182.53961000000004, "r": 455.17949999999996, "b": 190.86455999999998, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "fi Turbon", "bbox": {"l": 425.6424, "t": 182.53961000000004, "r": 448.43789999999996, "b": 190.86455999999998, "coord_origin": "TOPLEFT"}}]}, "text": "Redbooks (log o) fi Turbon"}, {"label": "text", "id": 17, "page_no": 37, "cluster": {"id": 17, "label": "text", "bbox": {"l": 396.71099853515625, "t": 192.41983032226562, "r": 452.03265380859375, "b": 201.84454000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.7500287890434265, "cells": [{"id": 24, "text": "omicfi", "bbox": {"l": 425.69009, "t": 193.51959, "r": 451.26357999999993, "b": 201.84454000000005, "coord_origin": "TOPLEFT"}}]}, "text": "omicfi"}, {"label": "text", "id": 18, "page_no": 37, "cluster": {"id": 18, "label": "text", "bbox": {"l": 396.258544921875, "t": 203.52040100097656, "r": 451.70428466796875, "b": 212.88482999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.7123883366584778, "cells": [{"id": 25, "text": "WebSpherefi", "bbox": {"l": 397.20059, "t": 204.55988000000002, "r": 451.25278000000003, "b": 212.88482999999997, "coord_origin": "TOPLEFT"}}]}, "text": "WebSpherefi"}, {"label": "text", "id": 19, "page_no": 37, "cluster": {"id": 19, "label": "text", "bbox": {"l": 396.62286376953125, "t": 214.1708984375, "r": 424.4446716308594, "b": 223.86481000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.730349063873291, "cells": [{"id": 26, "text": "z/OSfi", "bbox": {"l": 397.20059, "t": 215.53985999999998, "r": 423.8046, "b": 223.86481000000003, "coord_origin": "TOPLEFT"}}]}, "text": "z/OSfi"}, {"label": "text", "id": 20, "page_no": 37, "cluster": {"id": 20, "label": "text", "bbox": {"l": 396.6561584472656, "t": 225.23277282714844, "r": 420.6366, "b": 234.84479, "coord_origin": "TOPLEFT"}, "confidence": 0.7374036312103271, "cells": [{"id": 27, "text": "z16\u2122", "bbox": {"l": 397.20059, "t": 226.51984000000004, "r": 420.6366, "b": 234.84479, "coord_origin": "TOPLEFT"}}]}, "text": "z16\u2122"}, {"label": "text", "id": 21, "page_no": 37, "cluster": {"id": 21, "label": "text", "bbox": {"l": 64.08106994628906, "t": 258.01312255859375, "r": 312.00525, "b": 268.16949462890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9345569014549255, "cells": [{"id": 28, "text": "The following terms are trademarks of other companies:", "bbox": {"l": 64.800003, "t": 258.52855999999997, "r": 312.00525, "b": 267.74158, "coord_origin": "TOPLEFT"}}]}, "text": "The following terms are trademarks of other companies:"}, {"label": "text", "id": 22, "page_no": 37, "cluster": {"id": 22, "label": "text", "bbox": {"l": 64.17213439941406, "t": 277.27313232421875, "r": 528.68494, "b": 298.1844787597656, "coord_origin": "TOPLEFT"}, "confidence": 0.9759830832481384, "cells": [{"id": 29, "text": "Intel, Intel logo, Intel Inside logo, and Intel Centrino logo are trademarks or registered trademarks of Intel ", "bbox": {"l": 64.800003, "t": 278.50836000000004, "r": 528.68494, "b": 287.72134, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Corporation or its subsidiaries in the United States and other countries.", "bbox": {"l": 64.800003, "t": 288.52811, "r": 378.13461, "b": 297.74109, "coord_origin": "TOPLEFT"}}]}, "text": "Intel, Intel logo, Intel Inside logo, and Intel Centrino logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries."}, {"label": "text", "id": 23, "page_no": 37, "cluster": {"id": 23, "label": "text", "bbox": {"l": 63.988487243652344, "t": 307.5063171386719, "r": 541.68878, "b": 327.7742919921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9722592234611511, "cells": [{"id": 31, "text": "The registered trademark Linuxfi is used pursuant to a sublicense from the Linux Foundation, the exclusive ", "bbox": {"l": 64.800003, "t": 308.50787, "r": 541.68878, "b": 317.72086, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "licensee of Linus Torvalds, owner of the mark on a worldwide basis.", "bbox": {"l": 64.800003, "t": 318.52762, "r": 364.17566, "b": 327.74060000000003, "coord_origin": "TOPLEFT"}}]}, "text": "The registered trademark Linuxfi is used pursuant to a sublicense from the Linux Foundation, the exclusive licensee of Linus Torvalds, owner of the mark on a worldwide basis."}, {"label": "text", "id": 24, "page_no": 37, "cluster": {"id": 24, "label": "text", "bbox": {"l": 64.36927795410156, "t": 337.3686218261719, "r": 531.98065, "b": 357.74011, "coord_origin": "TOPLEFT"}, "confidence": 0.9669205546379089, "cells": [{"id": 33, "text": "Red Hat and OpenShift are trademarks or registered trademarks of Red Hat, Inc. or its subsidiaries in the ", "bbox": {"l": 64.800003, "t": 338.50738999999993, "r": 531.98065, "b": 347.72037, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "United States and other countries.", "bbox": {"l": 64.800003, "t": 348.52713, "r": 215.95392, "b": 357.74011, "coord_origin": "TOPLEFT"}}]}, "text": "Red Hat and OpenShift are trademarks or registered trademarks of Red Hat, Inc. or its subsidiaries in the United States and other countries."}, {"label": "text", "id": 25, "page_no": 37, "cluster": {"id": 25, "label": "text", "bbox": {"l": 64.39899444580078, "t": 367.4486083984375, "r": 472.09439, "b": 377.71988, "coord_origin": "TOPLEFT"}, "confidence": 0.9511570930480957, "cells": [{"id": 35, "text": "UNIX is a registered trademark of The Open Group in the United States and other countries.", "bbox": {"l": 64.800003, "t": 368.5069, "r": 472.09439, "b": 377.71988, "coord_origin": "TOPLEFT"}}]}, "text": "UNIX is a registered trademark of The Open Group in the United States and other countries."}, {"label": "text", "id": 26, "page_no": 37, "cluster": {"id": 26, "label": "text", "bbox": {"l": 64.1666259765625, "t": 387.39398193359375, "r": 465.37216, "b": 397.69965, "coord_origin": "TOPLEFT"}, "confidence": 0.9543401598930359, "cells": [{"id": 36, "text": "Other company, product, or service names may be trademarks or service marks of others. ", "bbox": {"l": 64.800003, "t": 388.48666, "r": 465.37216, "b": 397.69965, "coord_origin": "TOPLEFT"}}]}, "text": "Other company, product, or service names may be trademarks or service marks of others."}], "body": [{"label": "section_header", "id": 2, "page_no": 37, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 64.03144836425781, "t": 70.1122817993164, "r": 155.4895, "b": 85.9837, "coord_origin": "TOPLEFT"}, "confidence": 0.954963743686676, "cells": [{"id": 2, "text": "Trademarks", "bbox": {"l": 64.800003, "t": 71.22069999999997, "r": 155.4895, "b": 85.9837, "coord_origin": "TOPLEFT"}}]}, "text": "Trademarks"}, {"label": "text", "id": 3, "page_no": 37, "cluster": {"id": 3, "label": "text", "bbox": {"l": 64.0931396484375, "t": 102.72844696044922, "r": 547.23431, "b": 142.70128999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.9848971366882324, "cells": [{"id": 3, "text": "IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines ", "bbox": {"l": 64.800003, "t": 103.48870999999997, "r": 547.23431, "b": 112.70172000000014, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "Corporation, registered in many jurisdictions worldwide. Other product and service names might be ", "bbox": {"l": 64.800018, "t": 113.50847999999996, "r": 504.22832999999997, "b": 122.72149999999999, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "trademarks of IBM or other companies. A current list of IBM trademarks is available on the web at \u201cCopyright ", "bbox": {"l": 64.800018, "t": 123.52826000000005, "r": 546.94568, "b": 132.74127, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "and trademark information\u201d at ", "bbox": {"l": 64.800018, "t": 133.48828000000003, "r": 198.67136, "b": 142.70128999999997, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "http://www.ibm.com/legal/copytrade.shtml", "bbox": {"l": 198.66043, "t": 133.6377, "r": 398.51779, "b": 142.41247999999996, "coord_origin": "TOPLEFT"}}]}, "text": "IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines Corporation, registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the web at \u201cCopyright and trademark information\u201d at http://www.ibm.com/legal/copytrade.shtml"}, {"label": "text", "id": 4, "page_no": 37, "cluster": {"id": 4, "label": "text", "bbox": {"l": 63.78811264038086, "t": 152.59286499023438, "r": 547.24146, "b": 172.8232421875, "coord_origin": "TOPLEFT"}, "confidence": 0.9603025913238525, "cells": [{"id": 8, "text": "The following terms are trademarks or registered trademarks of International Business Machines Corporation, ", "bbox": {"l": 64.800995, "t": 153.52881000000002, "r": 547.24146, "b": 162.74181999999996, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "and might also be trademarks or registered trademarks in other countries. ", "bbox": {"l": 64.800995, "t": 163.48883, "r": 393.13339, "b": 172.70183999999995, "coord_origin": "TOPLEFT"}}]}, "text": "The following terms are trademarks or registered trademarks of International Business Machines Corporation, and might also be trademarks or registered trademarks in other countries."}, {"label": "text", "id": 5, "page_no": 37, "cluster": {"id": 5, "label": "text", "bbox": {"l": 75.599998, "t": 181.60858154296875, "r": 99.15697479248047, "b": 190.86298, "coord_origin": "TOPLEFT"}, "confidence": 0.8173197507858276, "cells": [{"id": 10, "text": "Db2fi IBMfi", "bbox": {"l": 75.599998, "t": 182.53801999999996, "r": 98.195404, "b": 190.86298, "coord_origin": "TOPLEFT"}}]}, "text": "Db2fi IBMfi"}, {"label": "text", "id": 6, "page_no": 37, "cluster": {"id": 6, "label": "text", "bbox": {"l": 75.599998, "t": 203.4119110107422, "r": 144.71075439453125, "b": 212.88324, "coord_origin": "TOPLEFT"}, "confidence": 0.8817703127861023, "cells": [{"id": 11, "text": "IBM Blockchainfi", "bbox": {"l": 75.599998, "t": 204.55829000000006, "r": 144.13049, "b": 212.88324, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Blockchainfi"}, {"label": "text", "id": 7, "page_no": 37, "cluster": {"id": 7, "label": "text", "bbox": {"l": 75.599998, "t": 214.50650024414062, "r": 124.25857543945312, "b": 223.86321999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.8559992909431458, "cells": [{"id": 12, "text": "IBM Cloudfi IBM Clou", "bbox": {"l": 75.599998, "t": 215.53827, "r": 112.57558999999999, "b": 223.86321999999996, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloudfi IBM Clou"}, {"label": "text", "id": 8, "page_no": 37, "cluster": {"id": 8, "label": "text", "bbox": {"l": 75.47257232666016, "t": 224.76895141601562, "r": 142.73785400390625, "b": 234.84320000000002, "coord_origin": "TOPLEFT"}, "confidence": 0.874781608581543, "cells": [{"id": 13, "text": "d Pakfi", "bbox": {"l": 112.60799, "t": 226.51824999999997, "r": 142.2117, "b": 234.84320000000002, "coord_origin": "TOPLEFT"}}]}, "text": "d Pakfi"}, {"label": "text", "id": 9, "page_no": 37, "cluster": {"id": 9, "label": "text", "bbox": {"l": 75.599998, "t": 235.86727905273438, "r": 128.0511, "b": 245.88347999999996, "coord_origin": "TOPLEFT"}, "confidence": 0.8794353008270264, "cells": [{"id": 14, "text": "IBM Telum\u2122", "bbox": {"l": 75.599998, "t": 237.55853000000002, "r": 128.0511, "b": 245.88347999999996, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Telum\u2122"}, {"label": "text", "id": 10, "page_no": 37, "cluster": {"id": 10, "label": "text", "bbox": {"l": 235.9648895263672, "t": 181.54017639160156, "r": 292.5691833496094, "b": 190.86377000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.8140993118286133, "cells": [{"id": 15, "text": "IBM Watsonfi", "bbox": {"l": 236.40029999999996, "t": 182.53882, "r": 292.00497, "b": 190.86377000000005, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Watsonfi"}, {"label": "text", "id": 11, "page_no": 37, "cluster": {"id": 11, "label": "text", "bbox": {"l": 235.9771270751953, "t": 191.93496704101562, "r": 278.3295, "b": 201.84375, "coord_origin": "TOPLEFT"}, "confidence": 0.8634824752807617, "cells": [{"id": 16, "text": "IBM z16\u2122", "bbox": {"l": 236.40029999999996, "t": 193.51880000000006, "r": 278.3295, "b": 201.84375, "coord_origin": "TOPLEFT"}}]}, "text": "IBM z16\u2122"}, {"label": "text", "id": 12, "page_no": 37, "cluster": {"id": 12, "label": "text", "bbox": {"l": 235.92138671875, "t": 203.60043334960938, "r": 272.8687744140625, "b": 212.88403000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.8542282581329346, "cells": [{"id": 17, "text": "Instanafi", "bbox": {"l": 236.40029999999996, "t": 204.55908, "r": 272.4696, "b": 212.88403000000005, "coord_origin": "TOPLEFT"}}]}, "text": "Instanafi"}, {"label": "text", "id": 13, "page_no": 37, "cluster": {"id": 13, "label": "text", "bbox": {"l": 235.9377899169922, "t": 214.2160186767578, "r": 294.80047607421875, "b": 224.3423614501953, "coord_origin": "TOPLEFT"}, "confidence": 0.861255943775177, "cells": [{"id": 18, "text": "Open Libertyfi", "bbox": {"l": 236.40029999999996, "t": 215.53905999999995, "r": 294.38095, "b": 223.86401, "coord_origin": "TOPLEFT"}}]}, "text": "Open Libertyfi"}, {"label": "text", "id": 14, "page_no": 37, "cluster": {"id": 14, "label": "text", "bbox": {"l": 235.86184692382812, "t": 225.51539611816406, "r": 290.5615539550781, "b": 234.899658203125, "coord_origin": "TOPLEFT"}, "confidence": 0.8668359518051147, "cells": [{"id": 19, "text": "OpenPagesfi", "bbox": {"l": 236.40029999999996, "t": 226.51904000000002, "r": 290.44708, "b": 234.84398999999996, "coord_origin": "TOPLEFT"}}]}, "text": "OpenPagesfi"}, {"label": "text", "id": 15, "page_no": 37, "cluster": {"id": 15, "label": "text", "bbox": {"l": 236.06265258789062, "t": 236.30458068847656, "r": 283.79803466796875, "b": 245.88428, "coord_origin": "TOPLEFT"}, "confidence": 0.8743909001350403, "cells": [{"id": 20, "text": "Redbooksfi", "bbox": {"l": 236.40029999999996, "t": 237.55933000000005, "r": 283.47211, "b": 245.88428, "coord_origin": "TOPLEFT"}}]}, "text": "Redbooksfi"}, {"label": "text", "id": 16, "page_no": 37, "cluster": {"id": 16, "label": "text", "bbox": {"l": 396.7199401855469, "t": 181.80523681640625, "r": 464.44384765625, "b": 191.1903533935547, "coord_origin": "TOPLEFT"}, "confidence": 0.6504887342453003, "cells": [{"id": 21, "text": "Redbooks (log", "bbox": {"l": 397.20059, "t": 182.53961000000004, "r": 455.12460000000004, "b": 190.86455999999998, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "o)", "bbox": {"l": 450.04388, "t": 182.53961000000004, "r": 455.17949999999996, "b": 190.86455999999998, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "fi Turbon", "bbox": {"l": 425.6424, "t": 182.53961000000004, "r": 448.43789999999996, "b": 190.86455999999998, "coord_origin": "TOPLEFT"}}]}, "text": "Redbooks (log o) fi Turbon"}, {"label": "text", "id": 17, "page_no": 37, "cluster": {"id": 17, "label": "text", "bbox": {"l": 396.71099853515625, "t": 192.41983032226562, "r": 452.03265380859375, "b": 201.84454000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.7500287890434265, "cells": [{"id": 24, "text": "omicfi", "bbox": {"l": 425.69009, "t": 193.51959, "r": 451.26357999999993, "b": 201.84454000000005, "coord_origin": "TOPLEFT"}}]}, "text": "omicfi"}, {"label": "text", "id": 18, "page_no": 37, "cluster": {"id": 18, "label": "text", "bbox": {"l": 396.258544921875, "t": 203.52040100097656, "r": 451.70428466796875, "b": 212.88482999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.7123883366584778, "cells": [{"id": 25, "text": "WebSpherefi", "bbox": {"l": 397.20059, "t": 204.55988000000002, "r": 451.25278000000003, "b": 212.88482999999997, "coord_origin": "TOPLEFT"}}]}, "text": "WebSpherefi"}, {"label": "text", "id": 19, "page_no": 37, "cluster": {"id": 19, "label": "text", "bbox": {"l": 396.62286376953125, "t": 214.1708984375, "r": 424.4446716308594, "b": 223.86481000000003, "coord_origin": "TOPLEFT"}, "confidence": 0.730349063873291, "cells": [{"id": 26, "text": "z/OSfi", "bbox": {"l": 397.20059, "t": 215.53985999999998, "r": 423.8046, "b": 223.86481000000003, "coord_origin": "TOPLEFT"}}]}, "text": "z/OSfi"}, {"label": "text", "id": 20, "page_no": 37, "cluster": {"id": 20, "label": "text", "bbox": {"l": 396.6561584472656, "t": 225.23277282714844, "r": 420.6366, "b": 234.84479, "coord_origin": "TOPLEFT"}, "confidence": 0.7374036312103271, "cells": [{"id": 27, "text": "z16\u2122", "bbox": {"l": 397.20059, "t": 226.51984000000004, "r": 420.6366, "b": 234.84479, "coord_origin": "TOPLEFT"}}]}, "text": "z16\u2122"}, {"label": "text", "id": 21, "page_no": 37, "cluster": {"id": 21, "label": "text", "bbox": {"l": 64.08106994628906, "t": 258.01312255859375, "r": 312.00525, "b": 268.16949462890625, "coord_origin": "TOPLEFT"}, "confidence": 0.9345569014549255, "cells": [{"id": 28, "text": "The following terms are trademarks of other companies:", "bbox": {"l": 64.800003, "t": 258.52855999999997, "r": 312.00525, "b": 267.74158, "coord_origin": "TOPLEFT"}}]}, "text": "The following terms are trademarks of other companies:"}, {"label": "text", "id": 22, "page_no": 37, "cluster": {"id": 22, "label": "text", "bbox": {"l": 64.17213439941406, "t": 277.27313232421875, "r": 528.68494, "b": 298.1844787597656, "coord_origin": "TOPLEFT"}, "confidence": 0.9759830832481384, "cells": [{"id": 29, "text": "Intel, Intel logo, Intel Inside logo, and Intel Centrino logo are trademarks or registered trademarks of Intel ", "bbox": {"l": 64.800003, "t": 278.50836000000004, "r": 528.68494, "b": 287.72134, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "Corporation or its subsidiaries in the United States and other countries.", "bbox": {"l": 64.800003, "t": 288.52811, "r": 378.13461, "b": 297.74109, "coord_origin": "TOPLEFT"}}]}, "text": "Intel, Intel logo, Intel Inside logo, and Intel Centrino logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries."}, {"label": "text", "id": 23, "page_no": 37, "cluster": {"id": 23, "label": "text", "bbox": {"l": 63.988487243652344, "t": 307.5063171386719, "r": 541.68878, "b": 327.7742919921875, "coord_origin": "TOPLEFT"}, "confidence": 0.9722592234611511, "cells": [{"id": 31, "text": "The registered trademark Linuxfi is used pursuant to a sublicense from the Linux Foundation, the exclusive ", "bbox": {"l": 64.800003, "t": 308.50787, "r": 541.68878, "b": 317.72086, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "licensee of Linus Torvalds, owner of the mark on a worldwide basis.", "bbox": {"l": 64.800003, "t": 318.52762, "r": 364.17566, "b": 327.74060000000003, "coord_origin": "TOPLEFT"}}]}, "text": "The registered trademark Linuxfi is used pursuant to a sublicense from the Linux Foundation, the exclusive licensee of Linus Torvalds, owner of the mark on a worldwide basis."}, {"label": "text", "id": 24, "page_no": 37, "cluster": {"id": 24, "label": "text", "bbox": {"l": 64.36927795410156, "t": 337.3686218261719, "r": 531.98065, "b": 357.74011, "coord_origin": "TOPLEFT"}, "confidence": 0.9669205546379089, "cells": [{"id": 33, "text": "Red Hat and OpenShift are trademarks or registered trademarks of Red Hat, Inc. or its subsidiaries in the ", "bbox": {"l": 64.800003, "t": 338.50738999999993, "r": 531.98065, "b": 347.72037, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "United States and other countries.", "bbox": {"l": 64.800003, "t": 348.52713, "r": 215.95392, "b": 357.74011, "coord_origin": "TOPLEFT"}}]}, "text": "Red Hat and OpenShift are trademarks or registered trademarks of Red Hat, Inc. or its subsidiaries in the United States and other countries."}, {"label": "text", "id": 25, "page_no": 37, "cluster": {"id": 25, "label": "text", "bbox": {"l": 64.39899444580078, "t": 367.4486083984375, "r": 472.09439, "b": 377.71988, "coord_origin": "TOPLEFT"}, "confidence": 0.9511570930480957, "cells": [{"id": 35, "text": "UNIX is a registered trademark of The Open Group in the United States and other countries.", "bbox": {"l": 64.800003, "t": 368.5069, "r": 472.09439, "b": 377.71988, "coord_origin": "TOPLEFT"}}]}, "text": "UNIX is a registered trademark of The Open Group in the United States and other countries."}, {"label": "text", "id": 26, "page_no": 37, "cluster": {"id": 26, "label": "text", "bbox": {"l": 64.1666259765625, "t": 387.39398193359375, "r": 465.37216, "b": 397.69965, "coord_origin": "TOPLEFT"}, "confidence": 0.9543401598930359, "cells": [{"id": 36, "text": "Other company, product, or service names may be trademarks or service marks of others. ", "bbox": {"l": 64.800003, "t": 388.48666, "r": 465.37216, "b": 397.69965, "coord_origin": "TOPLEFT"}}]}, "text": "Other company, product, or service names may be trademarks or service marks of others."}], "headers": [{"label": "page_footer", "id": 0, "page_no": 37, "cluster": {"id": 0, "label": "page_footer", "bbox": {"l": 64.26212310791016, "t": 755.4874267578125, "r": 78.402, "b": 765.08172, "coord_origin": "TOPLEFT"}, "confidence": 0.9160765409469604, "cells": [{"id": 0, "text": "36 ", "bbox": {"l": 64.800003, "t": 755.868721, "r": 78.402, "b": 765.08172, "coord_origin": "TOPLEFT"}}]}, "text": "36"}, {"label": "page_footer", "id": 1, "page_no": 37, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 93.35021209716797, "t": 755.8494262695312, "r": 267.0744, "b": 765.4060668945312, "coord_origin": "TOPLEFT"}, "confidence": 0.9523178339004517, "cells": [{"id": 1, "text": "IBM Cloud Pak for Data on IBM zSystems", "bbox": {"l": 93.420303, "t": 756.557999, "r": 267.0744, "b": 764.883001, "coord_origin": "TOPLEFT"}}]}, "text": "IBM Cloud Pak for Data on IBM zSystems"}]}}, {"page_no": 38, "size": {"width": 612.0, "height": 792.0}, "cells": [], "predictions": {"layout": {"clusters": []}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [], "body": [], "headers": []}}, {"page_no": 39, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "ibm.com", "bbox": {"l": 475.14240000000007, "t": 765.638296, "r": 507.02359, "b": 772.838566, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "/redbooks", "bbox": {"l": 507.02359, "t": 765.374287, "r": 542.70496, "b": 772.838566, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "Printed in U.S.A.", "bbox": {"l": 497.45998999999995, "t": 693.857903, "r": 564.18878, "b": 702.182899, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "Back cover", "bbox": {"l": 287.22, "t": 28.54803000000004, "r": 415.20721, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "ISBN 0738461067", "bbox": {"l": 482.88, "t": 133.30872, "r": 564.59991, "b": 142.52173000000005, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "REDP-5695-00", "bbox": {"l": 496.13974, "t": 112.30902000000003, "r": 563.94537, "b": 121.52202999999997, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "fi", "bbox": {"l": 564.35974, "t": 757.369411, "r": 571.70026, "b": 766.582411, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 0, "label": "picture", "bbox": {"l": 433.6951904296875, "t": 736.6339721679688, "r": 572.0396728515625, "b": 772.838566, "coord_origin": "TOPLEFT"}, "confidence": 0.9196886420249939, "cells": [{"id": 0, "text": "ibm.com", "bbox": {"l": 475.14240000000007, "t": 765.638296, "r": 507.02359, "b": 772.838566, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "/redbooks", "bbox": {"l": 507.02359, "t": 765.374287, "r": 542.70496, "b": 772.838566, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "fi", "bbox": {"l": 564.35974, "t": 757.369411, "r": 571.70026, "b": 766.582411, "coord_origin": "TOPLEFT"}}]}, {"id": 1, "label": "page_footer", "bbox": {"l": 497.23223876953125, "t": 692.6136474609375, "r": 564.18878, "b": 702.182899, "coord_origin": "TOPLEFT"}, "confidence": 0.7631505131721497, "cells": [{"id": 2, "text": "Printed in U.S.A.", "bbox": {"l": 497.45998999999995, "t": 693.857903, "r": 564.18878, "b": 702.182899, "coord_origin": "TOPLEFT"}}]}, {"id": 2, "label": "text", "bbox": {"l": 287.22, "t": 28.54803000000004, "r": 415.20721, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 3, "text": "Back cover", "bbox": {"l": 287.22, "t": 28.54803000000004, "r": 415.20721, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}}]}, {"id": 3, "label": "text", "bbox": {"l": 482.8758239746094, "t": 132.7060089111328, "r": 564.6472778320312, "b": 142.52173000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.6413159966468811, "cells": [{"id": 4, "text": "ISBN 0738461067", "bbox": {"l": 482.88, "t": 133.30872, "r": 564.59991, "b": 142.52173000000005, "coord_origin": "TOPLEFT"}}]}, {"id": 4, "label": "text", "bbox": {"l": 495.9403076171875, "t": 111.2182388305664, "r": 564.1664428710938, "b": 121.52202999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.7024716138839722, "cells": [{"id": 5, "text": "REDP-5695-00", "bbox": {"l": 496.13974, "t": 112.30902000000003, "r": 563.94537, "b": 121.52202999999997, "coord_origin": "TOPLEFT"}}]}, {"id": 5, "label": "picture", "bbox": {"l": 475.4501647949219, "t": 44.3557243347168, "r": 565.7938232421875, "b": 79.389404296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9275028109550476, "cells": []}, {"id": 6, "label": "picture", "bbox": {"l": 42.63053512573242, "t": 749.2789306640625, "r": 68.95333862304688, "b": 776.0442504882812, "coord_origin": "TOPLEFT"}, "confidence": 0.8069466352462769, "cells": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "picture", "id": 0, "page_no": 39, "cluster": {"id": 0, "label": "picture", "bbox": {"l": 433.6951904296875, "t": 736.6339721679688, "r": 572.0396728515625, "b": 772.838566, "coord_origin": "TOPLEFT"}, "confidence": 0.9196886420249939, "cells": [{"id": 0, "text": "ibm.com", "bbox": {"l": 475.14240000000007, "t": 765.638296, "r": 507.02359, "b": 772.838566, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "/redbooks", "bbox": {"l": 507.02359, "t": 765.374287, "r": 542.70496, "b": 772.838566, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "fi", "bbox": {"l": 564.35974, "t": 757.369411, "r": 571.70026, "b": 766.582411, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "page_footer", "id": 1, "page_no": 39, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 497.23223876953125, "t": 692.6136474609375, "r": 564.18878, "b": 702.182899, "coord_origin": "TOPLEFT"}, "confidence": 0.7631505131721497, "cells": [{"id": 2, "text": "Printed in U.S.A.", "bbox": {"l": 497.45998999999995, "t": 693.857903, "r": 564.18878, "b": 702.182899, "coord_origin": "TOPLEFT"}}]}, "text": "Printed in U.S.A."}, {"label": "text", "id": 2, "page_no": 39, "cluster": {"id": 2, "label": "text", "bbox": {"l": 287.22, "t": 28.54803000000004, "r": 415.20721, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 3, "text": "Back cover", "bbox": {"l": 287.22, "t": 28.54803000000004, "r": 415.20721, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}}]}, "text": "Back cover"}, {"label": "text", "id": 3, "page_no": 39, "cluster": {"id": 3, "label": "text", "bbox": {"l": 482.8758239746094, "t": 132.7060089111328, "r": 564.6472778320312, "b": 142.52173000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.6413159966468811, "cells": [{"id": 4, "text": "ISBN 0738461067", "bbox": {"l": 482.88, "t": 133.30872, "r": 564.59991, "b": 142.52173000000005, "coord_origin": "TOPLEFT"}}]}, "text": "ISBN 0738461067"}, {"label": "text", "id": 4, "page_no": 39, "cluster": {"id": 4, "label": "text", "bbox": {"l": 495.9403076171875, "t": 111.2182388305664, "r": 564.1664428710938, "b": 121.52202999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.7024716138839722, "cells": [{"id": 5, "text": "REDP-5695-00", "bbox": {"l": 496.13974, "t": 112.30902000000003, "r": 563.94537, "b": 121.52202999999997, "coord_origin": "TOPLEFT"}}]}, "text": "REDP-5695-00"}, {"label": "picture", "id": 5, "page_no": 39, "cluster": {"id": 5, "label": "picture", "bbox": {"l": 475.4501647949219, "t": 44.3557243347168, "r": 565.7938232421875, "b": 79.389404296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9275028109550476, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 6, "page_no": 39, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 42.63053512573242, "t": 749.2789306640625, "r": 68.95333862304688, "b": 776.0442504882812, "coord_origin": "TOPLEFT"}, "confidence": 0.8069466352462769, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "body": [{"label": "picture", "id": 0, "page_no": 39, "cluster": {"id": 0, "label": "picture", "bbox": {"l": 433.6951904296875, "t": 736.6339721679688, "r": 572.0396728515625, "b": 772.838566, "coord_origin": "TOPLEFT"}, "confidence": 0.9196886420249939, "cells": [{"id": 0, "text": "ibm.com", "bbox": {"l": 475.14240000000007, "t": 765.638296, "r": 507.02359, "b": 772.838566, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "/redbooks", "bbox": {"l": 507.02359, "t": 765.374287, "r": 542.70496, "b": 772.838566, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "fi", "bbox": {"l": 564.35974, "t": 757.369411, "r": 571.70026, "b": 766.582411, "coord_origin": "TOPLEFT"}}]}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "text", "id": 2, "page_no": 39, "cluster": {"id": 2, "label": "text", "bbox": {"l": 287.22, "t": 28.54803000000004, "r": 415.20721, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}, "confidence": -1.0, "cells": [{"id": 3, "text": "Back cover", "bbox": {"l": 287.22, "t": 28.54803000000004, "r": 415.20721, "b": 50.748050000000035, "coord_origin": "TOPLEFT"}}]}, "text": "Back cover"}, {"label": "text", "id": 3, "page_no": 39, "cluster": {"id": 3, "label": "text", "bbox": {"l": 482.8758239746094, "t": 132.7060089111328, "r": 564.6472778320312, "b": 142.52173000000005, "coord_origin": "TOPLEFT"}, "confidence": 0.6413159966468811, "cells": [{"id": 4, "text": "ISBN 0738461067", "bbox": {"l": 482.88, "t": 133.30872, "r": 564.59991, "b": 142.52173000000005, "coord_origin": "TOPLEFT"}}]}, "text": "ISBN 0738461067"}, {"label": "text", "id": 4, "page_no": 39, "cluster": {"id": 4, "label": "text", "bbox": {"l": 495.9403076171875, "t": 111.2182388305664, "r": 564.1664428710938, "b": 121.52202999999997, "coord_origin": "TOPLEFT"}, "confidence": 0.7024716138839722, "cells": [{"id": 5, "text": "REDP-5695-00", "bbox": {"l": 496.13974, "t": 112.30902000000003, "r": 563.94537, "b": 121.52202999999997, "coord_origin": "TOPLEFT"}}]}, "text": "REDP-5695-00"}, {"label": "picture", "id": 5, "page_no": 39, "cluster": {"id": 5, "label": "picture", "bbox": {"l": 475.4501647949219, "t": 44.3557243347168, "r": 565.7938232421875, "b": 79.389404296875, "coord_origin": "TOPLEFT"}, "confidence": 0.9275028109550476, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}, {"label": "picture", "id": 6, "page_no": 39, "cluster": {"id": 6, "label": "picture", "bbox": {"l": 42.63053512573242, "t": 749.2789306640625, "r": 68.95333862304688, "b": 776.0442504882812, "coord_origin": "TOPLEFT"}, "confidence": 0.8069466352462769, "cells": []}, "text": "", "annotations": [], "provenance": null, "predicted_class": null, "confidence": null}], "headers": [{"label": "page_footer", "id": 1, "page_no": 39, "cluster": {"id": 1, "label": "page_footer", "bbox": {"l": 497.23223876953125, "t": 692.6136474609375, "r": 564.18878, "b": 702.182899, "coord_origin": "TOPLEFT"}, "confidence": 0.7631505131721497, "cells": [{"id": 2, "text": "Printed in U.S.A.", "bbox": {"l": 497.45998999999995, "t": 693.857903, "r": 564.18878, "b": 702.182899, "coord_origin": "TOPLEFT"}}]}, "text": "Printed in U.S.A."}]}}] \ No newline at end of file diff --git a/tests/data/redp5110.pdf b/tests/data/redp5110.pdf deleted file mode 100644 index f4ff9a5f0b5898e61dd65feaa3045e745eec140b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3391005 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℘E zbyJp_OlM7A_skK;qC-j(2s7mh_ON3IEuuvGh}M8+b4Zg|->%z}unhj2kT9vbkuLz- z5da(WQnd%qr}~mrhZeP!_^t()o5D}$68BWS=&mcHjT}X7Subiq0CHM6NlZ@w(`p}M zgqNVGc}RAK_p_qUdNi#+S9V-%r?X4G#vOq5o5^S!gyy-yLcN!t@9k|+s!RLBUgbu! zCZ%pxtLYjZ(`_GrCtGIghCS2_BT_LdLEtOk>C#PQu{X;fNEOYk>_RYktMKL=-7|Ja zK~^Jsw@}Nko>{!5?^m%cX@zdZ^Q~&Mx+R6lsnIP&2Hgemc*((Z zxxNBv=6n}|OR5I9Z-DGI0Y7Lk$ojgPpI8^6SyledzcqYRXb}?JvHsc=d#5C7d4kO5 z1u#vP#TI9|(zm!-SV}`ww?yLiWS77TuVhJhSnQ%W3aQhM%ds?b?)InWj64z}huX%) znSxH|UQbbSRo^x2D3YJqeGm?*Ayh4GA+?Sf`}R?`PG6c0wQVE#&!H%^2n9Zq{s^NPN|2v%O^>

w$}NRoMwz*qB5Vn`utyxq&yG4 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

=Oo9dS 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

&%lOyb`$f`i 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 z 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 l+xNoHD2h^Iw^@HWeu5;~1 z3T7KFU*k0oSO^$5<1oF&782>EN~h?kfYcD!J9u6ghjiCi7*x9ne5Ml;+?egh^V zuKC1%BnzvvMF-u?#f;F07b(+qX&mtx#>@4@fBYn(%4>xJs;uf6QYb_Xq{lFe188(b ztV4tT)Qng6Vb+L}8k>-*@)sph!`znl&=-!yB3tm$blN>QDc$+IFN&XJQZ=cYF&4PT zH@1y0%EAHpx*ZU+eKjmWyJE5dJ(G|aU<_|dX)(Yiqg>$ML1rF~;B$ThW^IES+Q2*^?MPZ9EA*67qlQzms|EhHws)$gCIQ>@k(Nd@UJO zhf<2~r)znIX$!fnEo3X7!DW76mc`zSJXT2;EHx)IB*32`E|9-k@U8}^}5PAA( z8dXM-+C!&3iofIaRG`_}c_U#*WhsX_vruhFZ)l2ij!GrYmllHaN$1feDUGW#3Kctb zKrlA2lRK1GlnFfKnU4}O8ijNkZfI-5=O+ynpUWYbZ|SKT(UKkuh=hG4hed}>sa zocY2Z1WO6irhVcmhS$oYO+%N?GjSLZ+1VR)(B2=$Q=gg^kjgaoO@2tig|)OOB?~5u>hoJKv)FH1tj3aWCNZ9>xL*G1_p)w%G``F zP(Pf(;;Z93aZJ4()PaGl7j6Q_DtGNR3&ycGH<>!4BZ~#3an`x;OU4j?>4TFo?(>Um zbv=H5zEYB?wEOwY3y@c0 zH2h50(cJ0GL(7GpG3A-`Lw|Z&HmYr|#dqMJK$dr(k7?LfX!M zeNi;pfV}3(fo7J~;rpNL-#+Huw3!tsjM;>7o&!6-W63oQq59HrF~SHwL5P45Na zd8YUcou(lp^Q-!g*{l*JkV^Fa-&!J3Uf(-mrK&((8-D;Z^2y1jKv`MzdxnMp--Nol zYpz>r#_C1dqYpi0Uc+ZKAiZz?-Za+U?w;>3lo`OH9!Z%_L~&Q8sVcts)ThTX)&j zQM_ur^F8z}R(d0jGAQqphw%%@4Svf>Ms#*ff(g^bX6yF^L3oz&WyXy6MU^)2jIHrq z>tP#KNgFlc~(sZ4nUm*(n2X{o)+JM<2Zx^)G`1)f$RV_Ea3p|MBr$9 zfbDkwFPqkSF%S385+N#YC>d4FvxI#?SYuyxgQ7M>4Y#1G^Kf82z14V&3+=qS2k-oq zLwe!TEq8X^ty(#|t3nNq3(K18IZ59t52Cm4Z1UIz0 z%-si5#C@2pa?A7-d^}@3CNzvCU7_jGX)B1X44+#^h#6j2GIK_-zeQYB z{aTM}s9S8QsK7}E?pT(+$FuFn#ee@;yVT4;hBfDA*k7WkQ8%Z*S$$>Pw(>7%9)*@PDH9U%Zw*pT=CBHu}Ps19k))my?Ta$90Buu2cnq+vS5Vw~s7JEC?cUct>e zt!^Sdd)KzrUMf@lQ$utumBwQz&nUS_=8&cZ(pB$McNlD-Eukw_Dnl3W;+LFgPng*u{*-=UCl6j^qqD@*-rV!6 zsdcBO9H|*4c48{{p4)0^TzTT6dd#;F9bewouO;s6EcRj8A!#aa0m3K9cn{qdZf-s9 z#Dt6G@1EHp3R-t)%T@3H_*C=aHzKfh7|~nh(!>)9A->;ZOk*Uz6^|@Uwe{F+_cL-1 zx%0bSxZ=TNzZnElxJR2j7S!D2=|=4u%(jKp5%SLY98x!=>3EV1eLfa4mU^VL2YuVwlDx}V~cbp-P}#Yah1 zl$VRrI{N;k-{0YBLnUjpaPLN?)RRbR#i@zti#dY6{0m=WcmXEGQnL53XwNE(Of z9B`JTghm!Hj6Pig96t*dJbYdp)o58iL$K!#Sg0Rx!?yqU&)DtBM!g0EFA8F}NM7X( zTW@&8SszAO!>Zw(4}hFn#H-MPTq)h@pEgH3GLz2HAlQ*LJ%0Am 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%0D9v_=+$D$w>vBHCTn;;4c%Oq(vRim~~>!F)Hrc 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 z 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 z zt`v?Tac?0vVT`GChy5Y2hSyHAtb<|5lKeIVJ*4NcP|1P^p8h$SKra!pt(x4Q(-uO=kPYihSq3_h(|QKBLAw28ZpH#1^0=B5gej%%WeQ@cp-&IzzpNkCCk%99`REN-$pI+n?lJsI8ow`3*HBVGX^T& zxzXV%wy!J6+H+2b@5N|+{+@jYv!#tEwdeHrm;Lr3y+X*qFOG^=F)yrmtybdWNn8m! z_Fm<}o^NHJ4bA|eMMRv`#*9i}E-j9LtZPQtKEA+0ccZnsWq+}nR@6?0c-dc`Nu5Od zwn>9-%bYq`B;q)V5VxUS!#>^*_7XHwK#YCwAK*=`3LPy|3wMGW(*wC>Z~`3wK|wA3 zmya{nJl7%z{2Ks3;(xornSTbk&5Gy$@~JHV@0qa{sgY(2zykH`7ENjZ8tErEEWjdm z!TPqJ$CJ*Q(~x;Y7;j_mpD zesxR10A;r4&u8da|9p0-QEkSW01e(R6=3N44;k#g#+y!n=d2ZR2Cff`%4duf>*YpL zRBntkdX9FY?5yQ>(V^&yL%))k)xVnAr_wBs@d9*hEI}{@=gJDklGd^?kOT3$ELkWJ z&-;B$L}&;y2xKaSG&E9D^NQb#B7*dXaS?*$1LkltD)*usr2=CTbsLRg+yrxpgiP;? z5L)SS!?$7NS}Pz2#uyg{i1>}?=}uIwIo4=#)~70U|9g|Fg*D={eUu;3UN=~3HCFTm zF>DGkL;!2JhB_hiI~@Ef<-468LYBU!!t@(koi|#Mj_E!oHB%$Wfv^-_&_Zd|v91x! zUNBcaKjaz-BPSGP&8bAJDOZ3^*CNq0Iqra2o^;N}xQXvVS82UST1}M7*jikI2cfLY zHMUCaGwQ)nI170bL%i;X-{ODzE4*Nl?_`bwtBu9XK9yeG`D|)XTSlO;;!>T=W+%=e zRF2O9Q{ucn$R&SG+!Q%iq!VF2Nn&PH`4uRl63U8f6ZYZWDTJmdc|_>^MwY58p!f#I3|*BR#4yj_sl zr|VzTwz8+MDtA6Q=#0_{^C%HN>&HOTjL6cM^UGj`*@gnq7x1TBi~KxH2gc?=NcWFl zt_Pr6dIPxb1qcvuKD%-tRszf`K+X*oujHENSE$;WT0JAjj;}ShUPk8UYkSp`f5yS$T2ou z|d`vMGMYjz|4e;#VyZ+0Oqbm$uvNqTw z_8r?*lk^?=H^i|MC5AxZol`fVeHIEwrnv5g$I$yzKm^*8Dz^^_N^@0G8oHb-;x&V zSZ0i+>`Iccw30Oxh6)jS3Ke~R_w;;!f6=_n%_q3leYJ;wQN~})3+d@Q zAoZ!II|doHunhrxZv7~6gAQi%d$qmZ{aVyC73_VkW07iVB{R>P3``~`SeNBA7 zqeurMA7Fv;>>z2wq7=gE0?j50+*(c-8l1IAZ%tX?RvVre0-gJ_*yB5t76%6bNK$`t-C6^{iaKG)Rt?#B%$5}gR@+A1)dBv-r z$W*~)tY|@Cd%O+8;Z=xtk%GQNyYF`2Z(9AGK&N*j1r^X!HvP;y%EjFI-*hU#csciq@@w1mq}7~YY*91oX403 zlWb$TTaoKZFC!ERo;Y2Rl3XKMGu_*(RWJHF_uQ|l(}Eo@p!rYHhG4Grb$;jRQmkNL z{GXyieY}^u0;h_-v*S_m*``@i>U7kEiC~(y)W=u;;CkF}=Js=~TE*NaL{62>!H={C zaEh%AP`9->beA$J>{s)smj*(!VgYgCa1&K$C$9-D zp`6xM^_ZH2T<6JiTU%WxZ8Y0b?>-a#)jFP<+L$y=-tG+L;xNkCa?^+X7_F4Md;Z*X z7pZa4^^rN+T~5@OZ{X!wc8>GcBh{PE23j)42z_KC%l3y#H&h&}%=>ZDloQ*5Vp_&Q zpi_6t5`{@p${SnqDpMDF6@Lw6*698iF)3Ef93S-)9!kg- zk62GbfHvqV(=^baz@Z@HfH(liK4m6|E`z~9$kK(uP3#ANbLhy%Spx(yP|N;S68eR! zKth~GG+Pz)GJ*T0`-3~fr2mwj9P3|d9mk|VRR%xvZY0RJVJdfRFG4qu!H*4y7Q#4n&-ENN>qj0APb z!J;wSrr=^xWvoF}DyRM7`_^{TVSe*oA$4DtlXG8Yg5dT!B+-cjMBvNF`4(_v?pCNc zvFb(G^O*-JYcBk4em38MIk$YYKR1R>nhq<(`J@n5LEGPuzaz!?BkBkG1Bo*i6x4 zR|Y?ko6cp^y?cWQZ!R^qf{WMH@m-aYj<Jgd1$ zQMB_Lu7xp{F&~Na@OX)xa(@(){p&ysinnyZTz~%BwW>hdnDsi(WPm5uKUk>_ni*ql z=)^Zd?TwdJISi{ucjBgBlFtmE{kr6Bq|dI_va@cGk8E@f3IZhx3)lWIGuE_BtS3ka(e`U^ntq}mCi=*I-exlo-B zx<-cBj;Bk<^q1NJ>pcA*rTFhC(Sva&ZWcLD~n4~XtTH(h@F~YV}dCnwLIIg zVt`cc2!C1?aiJ)ueUFNG!D+5vtUb|~WYj8HwX9BM@syU z!Bn9JBh;H5yQd|<)a%4#i9sDT2CKJIL~$s;wgq(Y0Ks`$LjxZboS}Qp!#O}y`URE+ zrjr{Fzv^PY1Us$wW`fW&Ehrjcw_%ki^}@5`_hAbet#nH;ws7iWQN-zJS%-T&FrrqK zZ&-~0{$N+s;a)4dm53Il(pUCuJ>#bvzGO$cZ@)DLNCq*3*xcF*M?B|00=hksRC`7L z%jZv($mT5UUP1FL9m25n^1e+_gxQ+Ruy%)Oj=b3TQ_<;)F-#e)Xb+6tEwqw`YEjy( z|o0raevjhM8#4 z-9eoAbdmG6_^R;|5hG-p{{|uO^f)00K#Ruw53c{>Y7jE0rY6`4Z?~CA+VNWwmrN0L zL!VwR`+ck~P=zM7Go^X9vc&H<7{V)pNN2#XJQ2W-9KoNgjSVC@=D-j z197MtDtNE}`u&I`7K{pp{Wh1084Nar2c)HK%s&t_c%nEFI$!LRV>}VW zD#a=5sPIZejsQJc2$!fWZ~LI*fs|I(qnYGkBV+Cx)nhjnKf5XrEwe=;&pgYo z4mZ2tpPpI!Y*kI6M)^QNe+NHXh{qwzms!Tz z*=~p_IhcjX(A-lz7HvcgAZH^+HC`ZJHoTnNopt1HHGY@xJYC_F%ufm|^m?Co7d!9i z2%2lV4r#OCh=F55@^nN2kq0O~DvFo^a5(5ZrCx>HNp%fVbRu6O(+Rv{2q;e2rcyv{ zT!8jpix^)g^rXOyw?Jd+Z$kq@Z~V~J?7wG>MgfZU0lAM(h5i;naGr-hf(nMMgMzn( z^;4FC65c`Oo}f1yI_F`5;N5>E?MAGP1w-?0e^JxkPr+q2nv5h;-~40VLxI@U6OHxT zIEN*mYkGJh<({AQ=SsqQvEI%#SWZ<8x<1s}tRL`Ul~(`4Qz6fIpooFtm{Orjoaf=- z!4iT$&&k}tgI8kqK}{sFSifSyq57B4MFv97Wa_7i;7Rces(NF`9X=YaZ+f=2qz%GY zmD0+XL1EmsawwV}GO*Fl$cC>B4|KI+UDU5gKawcsI;ROEY6nfehTZZnsy-X0sR12G z=94=CLtKcOKV)vv)jLEP7G_izzU6+27mK%!UW7Sz=x1EHtXHMtD-~$?enkD3O63!S zPkMKAoWfRZ`QR^R?dxk1J=)4!Z!XyD+RX4UB4YqpGLi*@74$ z-HpW=ro5salM$vG#fFP$oFzQ;({Gv26Of7~@65rS`=;u$MhN?guh_?rcvx#UzpuS& zSUn{1onqgL3t@oD`Pt56*D5q9`k)S4V{} zcPN@%tS4e7$e0jpRP8}+5wQMstGU|vTrLvwMcOIu`LQqV^rM*?of-LdE;qt!O-^2} zc}ti&NY7Tp6-#fnk;$2cLmOYjPnNn%r#vhV=}pioN-AF$iESTjY;1yL{A^ItE!JT)Cbuzn_b*j1 z!%LCgoUN*d2Jo}9sOS@Ntjwn>SQ?u zU{r+y&}#+V!yM3cbvUH|{Q8(q$Uw2814>W`zaD_5Adr0R|7+dSRRo}m4+>Tn! zZI!;adr*LyR?6|JJ&8G6^Mq&+BTS;)HiO}q0&xhwA`3mw{=NZ~&?0y1$iARNu0B?9 zx^(XCU^~%HU)jCJF;omre0UKV6|H;{agN_$t7T~1npkK$Vg_AB9^Km)75V-waG)oU zQ7mhf8P4i(kJ}_J`k7x%L7*A7q$Y1ZWwL|I2+fhgh0$dd5Glq4u%O;4^ z_hS^LJ~^FmQmJRugEhaLfhh1s2Pa4Hh(=Tc>ZaF2XwOkP^-!=O0i9aS4hr4-b&T@ ze=OWMUzvunedo13UvTRJyPjmita6^|vnyPgfzamznqhLWE!dp9sXm>#_K#K6tTeRT zD6hVA4Z83^wxvwik4@?j96N36U{Ys}PBL~r>@4xMOsZ{=W@#W^&oOK~(VIe0;QXa> zJ~%|uwEOeXwtNWEreC@fQh#CSacdiTKKopZRN4piWR1`A#IwZT!yaZ|S9P)J&W_u{ z1r>_^bLYp}DxbGy|L)Jvy;;^$*COi3id`lFn5p@8s4xZh@70ZNN zTWfYO?#wOyG-muBYj`p{ZBg*|ci2x4YZ>*&rzF!{j+hUVGmK&ygX z!=)Q7A2ZA)+1LH(#~=)R1%{o527iciY}R`1;8 zxGtTGME(kj+Fz8LlI;Jg{xkS=eys=G#LPJb-`McMe{XvF)0M93UYIe&1e!QLs%r6J zPQcicYCBu-grj+*pJ3l7s_oZgrN z=Z}tk!3q5DaSlMS^wSP1>)+0CtHU0>-`_*;B4%h+&JyX(XbLSYM(K7(v!hw%v3EPF8CDNsoP5_+g-}(qx4shIbLr8)!*@=|(mc`!QiiMaP zaQ3npyq0vq9b>7&$Fho^W;xf3z5`qe!ldtpp9maU=tfCt+?_Si2}rF_)VCschP;|$ z^=-VpOCaw9pYWAVR}RL4^)hW1oiooS86spm814@TWZE#LJd?EaVDH-cDcp=HKeEj+U-ddHB?uj4Uk}c%G4a`xQ%4;prN(*0fz|Ew*FHn z>idOHfZ|!nm}c0-b~<^SJJ_^U1Z_+=K8=NOc>$j&LJun%o=MRG;8qTUu|bMD<&a)gUlPJO}e3acew_UDxpGa_j>l zLMuYOIp;v2e0|Pb4eG7}GpX^6;Y&&AnV>DMQSF4z`TtXYkGT;d^bZoQrkej{sHSjd zi(vm_f_c|_u_ZuKIN?|F@57m?5g+ z?(I6;CF-Rucgo2xo!{HdnKcjfNA3;HLaXAmwl;`3+F~yP5w*J`j4~83P=9^sdPWMx zyTQf@GZ*svbDTwDX*GofrQ^jq2%ijb!)9DKZd>9gotOU* zGt*>HHUPjoU$?a6Hl&DZ7+LH8?H`I=(#bXq8aYjl$s2B!u7vY+xZ>hOd(5yuH_G&U%xhs ziI*##+o^E0^vyAqpSo)MpfOQ0(B9_9Ge08RTSol^Hh;#WReelPr*rV6C%cq-+6VX& zZON{P^=|TO+i$HGj!VtM*mc%?ou+I26&OTX>ZBH# zB?T?5rOm7Pg}Y4$$Fn(L3y!TnmwXoo zovp_B(YhgP1jG4Q$lGEnHbFLOWi$r&AZ5B#U~O4YD{4;Fj&FB2bRCDF@l}jXmbb-+ zdlAojFkY%yQee06s^rpp6aFt1e$mVM+esV5@S_(We<#?CPaCr)sgEZ2rxUKHzvw&{ z`SPYo=JBv+PbLZjq%vN4e0XwJk{CD=Wbo&<L`UQ}FGp+G032bjJ;0QrVqQ>PKjeV`IXzk&1y zVdotIw~Ru}SYdmXf#r~={}vrmTY>XQ?^A3X{iUfni0wL<@v>1S)nNv_O4p>o`31UA zt7GIm-D$dOCpr!KtlPjMy z6fM14%!9`@N$_KjH38s*-!$_uzQlf^!@rNyS|J-Y7q(%pyf+&u%WN1u%9P9>wpPeJ z+xVV}#r{d@`lb0S$UOABF;tPi;2dwxnHGKdj!6x0B-O{1FcPY5X-@=UUV+m^TiLZ` zH(!J|Qq<-h^z;jkuZS|3Hyr#5;T^|AZ#%7PjyI~A-fZ{wa4-=|iCA||Abu!ynvi|) zP@nRp+&Z)AW9hXIcZY3*5IIiLVf?l{;?;`Cm~FQQh{sAH!g7;&vvdyX9t}bIN=?s!vf9wc9z!W`uMs`P4_Qy>+{#Zh;aNT$gH%p?PRwV=}E=3^Tr9Qxji1`N_Q`m$S zJdhGtn*VQkCKM54Ik>f)Hkqovi=VqArb$h|KJ$EMLz9=PUj)gS`V}!!BESooY9rrN ztV&ZmVKXR#+xICmx4e5BhP(8ERcbQ()rG)Nu2N+m$&gK5OO*D>##184+zS+T^<+4q zr`if8YuZ=Ohb1TTOA1b`kG6u^1HyS27Wf(G35LM%BK`|& zx)l32_#M6Kvy|xVH*9kd_7Qt1wCC}E)l8f~_k#99wLmcho$DXq2i>Cxj>9#8Ooygs zNegJYvjXTv2Y{l+@O=eG4MOoo&cG}pGii1F=y$F+B?|=eF1KZ|I``w(+I7B*hozFb z{e^osk1f8#+X;QGGT~~6C>pferopT!6=f040>ydd68Bg4m|@mi0@1X3kuTXs+V2ha z*edp^QU!jyM1x|O540MRe;C2iVXP*ME%%5P|Hj&;NYqB(Sye9UDMl-FYbhf}L$UQb z_xnJ9I;IL+AzfSgz*JhiC=%$8J%bD|4e!UQK23fp%P>7Hh*9D40#7xRTxBt}-~3LP z)N3$udMc!X=b+wne(A$(l z)7FH@=&QUE9_$%7piCK!yb=dTeFser<(pTx(O~H};*@F~9k#p7C`&xVpVbKc{2|EplN};+RUQO_dd!1Sp z3J=DZVm*}Zj(-zxfjdbu6!h+CDHOLof9~(f>Y7!(ta~9xvqsZ=>pKl=J(0KN%35_ofd3`(zLo1W+5$D*jJ#oT7VsX6Y_*Dt8t=u|wN`?E<>Q4MJ0y z{tb=j?HM|FB6KBck>l)PQSk6}97ZlyL5nOh>HAq>?|Ehr`?>9WOJfmQS_7fk(17jh zK+!e0PgPm0|KoTYn92M_yx98gUh|W9tX6xnEFx>+9sUHXVeY-N)QhZ*r`e4)+>eCL zC1{;s*?Y|{JavNir{rV;n>V9Ibhf}VfaF@tJf33b;i=j z)j6iIQJZY>H`TplnAo9pR){8oiN(S`Rq-jBiGSY%DW~q>X`LTNIt_mY_ipEg((wLV zcEtvJ^A&?dNra9Z>n}5W1vv!eB;9x$A$T=EoZ-u&EY&7XYZU#y^Mrr^rzwXMqOvNb zYs0+X(13kDE`lF3O&+`dQ&PAfo1p5vFK)`$Pp&|7>-bO{i`gPHw+sj*JXYhED%Nj( zm|_ZdL|zluSvIV9!y{^ZP zsOa8ajgqrmnz|95tgCv_-wsP0kHvs1a*_EhFAV%jy}}oqUU3eG|L)F9Gpyc+W)WGIGMOF5nKErYE}p)MyY5|0Osu zGC;4}0D!Xs{{zTXz_UY7j?P5WA zbczkSNfcVT*DbolHr@|-b)pur5zuV<%mN_kV(j{hSNY3C;+7P+E*nxa<$6Dwls!e6 zE#s8O3T_DEotf?*kWO<(z5_F6g53jrw~d%z!L$A9%Rij;w3$Vf4*MbR{b5LCiaU}J zt~Yb3LGbp!MVfG|G4A${$ZPUFY#xR$qhjs>uN-Tsj}WOMNe{MVP+ZcVt1%n({DsFQ zG2d*P=W0shNf=h!_CzI3`OKsI2?5vEnhz1cdGGP9X@CigctbPp``?Ier zFg+fn8h+0UuMjQo>EiG;U%OarnD4y5GYG4Rw-8mC#YBH8Fg(qAs=-Eax(jhdXde4?^-s{=YwJ@=V?Ig{jXv_LT!R+A3zhq#Lw4R z;yhgxYPEDC&iJ$;{-OspbLAx*&8G>Db5lK|m#H^gTbn?fpFgoewj0 z&2#ZiQb4?wTQFT5maRmy7vWxdSXZ<06&*`|@&aZuxSPrnNwo_X_#FCVs0($o!ynuA z05_9)a+p8BE>niF?{m9i+BkB8XFkTmx=T_%IQI>7?qgPho(#A2g5!KVX8<~0L(*}c(cC^XGvUnyF3&#OhvD09 zKa<5(1zC};WkQ1r%|Je680Iv8zug`zkP-1wm+1nV=vdW#Jdwxt_;w4bKdB@Wt~cLT zhu8AT9I_A`3zBvJT)bv!_3UNH_oqSIq35qmaho(P;Nv9j|McKyg+FfbyM8Lr=5F6u z)AxZvA{AN2-)E(w?CG!rqVT`81lr;_=Oemt(T(m+{L6PL8#w|>fiT3- znk6ygub(FDka`659XGj)?vcVxswjr@!>{(0qJDxNUyL&i{f)`nU@sRP$GwX#y=Y49 zvM-EePLzS9{&_xWhK&^aGxOvPG?g}fDm3Tr?+~?a&D7VD19vl^`}H6tIua<7+t%MY z`WyXva}J1t0>@Z!^Bu>`U&KuDF)l)@Oiq~By$C`YKDu<}>dt<@09Ho7Sn_S3-hsXW zqPoz$?E)kxWmp6ogMI(S9l_4l-G9fV(d_pAI^Hf%@>o%Wc>Gza-8dqx-Z}V5+AJ!= z$gOC55#~<#NOoRAp7LE_K(NgXjhk1TsQ!5A_IiOwgIJKhOxUr3$B8li!5977WO<)- zz_GSB4;bP+4L1_xhat`1I~o>_z-0cT01nuPQj{Hx1#+^N6V{KT0e4wXS|4)B>T-R_LXk5+0i8OMXw{Fp3xxS&!ev6A_kd(Jqd#X2ptB;5ZUDDoj<-i z+HxExJVbJy*zgTDwETWx1uV0`CFn_?-BY|01ZewLx_b&VqBlXget!(H5#vR%KLUB} zZ@K=P?GDIp^hq{)4kSr>8nrq!02>rQeLPzPXMpwq4+ly*7=sY+Q}ElS8?Auf5KPU{ z$EG&1JznYbp;1Q^tt11aR%LnxZveQlvJpM5E)0{KdY9<4dCXBZ^>(KGvvxJ5xm5-l z+e;d0`B}VVK`+BOM|MMH84|7&_WKKgEWGCZxl7(x*MEgzUq3$;E@rvIXmW|S?qJ!g z?A@J6z2eq`%nwKbi@iEm1+H}42}!~Q_ry@eg6Bw0~*^P(rn6j^N3Bp)@elI9*T3Vg7z4^!$1Di>meW0k9-tEP|L*KjM zch}Aw@5|L+;J@#Q)D$#AMSc11X(&If&mj{UDrSeQFA_^SaH;E4uc?*^o!vA$X6Tw8?HVOfT}SOYUD1#!2Z;{{(5?&K-@V#CfpRG!OsO|-i{<~m zYAH!XFmW)YUh7BmO?tg@1A`nUin8Z5Yd>5#uV~2*qq18TG2h@q3%uxhrXY&S`6-EV z_x`j6d)XN5qo6pA%f{l4a_dfK`j>jnP2UO*zan<^@VMq~dTzpj5N$j+%r9a(*(s#X zQ{zr}Xtr>KsRUb}I+fM>ffbmZic|%yl1Zwos>3T#ZULsF(-JX|)PNrrM2uS>$avEr zrhrLE7`)m90Iz>fFd!`miWLd~%osXqO!u^;59QIv{Q3?m--DS}IyuG&)8$?;gbKz? zjmUtBbcBN;=J;LkcWv}i4oLN1h)EhnuvtNd+x24@=9SMq%p!oLM19FQvX z*%v*+DkZd)Jb&*uf6*d3oKiY`GiZz4?{A>Au@dS@Pw>z@r&+?1>DRc6UorE>ykuW zhZIstpn|n>%k>T$v;NdZ6jix)a7+Iz6^q$g((yEk?_bAZnK57hv0kJU_1<8vt8y@e zEsdr5*iD-Q>;rvfFrra47zH><^Qx^C+)oe;T|OW$cd()>VJuq&7ZyQaJ4!*RLgzb7 z3dAQe7%K-V4OWQUQA5QXVKtKy)w^s=hTJPq*!B!NntJ%A)-0S;F<#?{ zG{z9I)^7264xc69IzP8)cO`6Goq}DF|J@YgHq|56rS;9?RL4KE)6oqlR6?%Up_wsP z84_yh50chrxDAs^#Sl9qPCS3ua z0&xn06SV8yet|}!!x0EU5V>U@4rFj~Jf4T%jiArYYyf^zvWtDZ3pfjy6YfK7Yyn$# zFukPH1sxIkfHd&y;HW%{VBP^1(j_pB7^eq4eX4#1%u7C2#TGc`JY#bDR8wL5#D4Ol zZ>eEM>C`Qc3t|M9EQWKTi|hubr%1A17TgvK@;OjNyd#ZWieYtlc%I4b+xat4PN;iP ze#*w^$bI873ftzGS5aaKi+w@oym z8|S#7dDw!=sOC#03MQ#a71@~|O5Y}vMOmOH{X%RMOa`A8MPG=5n;L$;>YP8xg~-Y7 zJeE2W>WODRV5A)TeT|xFTBCnxr7z!^W|2)Aw1%56F4ju1#xjTzn7{4)T!z>&*afuB zw}-VxtBKSI96Ok6=AmGjQnx1{3V|(^Ecty*d5i=OIc5OTDFAFZa+<3p7=SsX`$3#|Y8(mZZUk4h>Ro4%`&?VFp%; zk5xG=B4c!&%zZ0}jHA@l6rP^Wv`?$+``^or`)wbG=Tz`Nd(I zX~6)_p}_n$#;o6oairnoYlZ;dY^yWqw%p8|>$=)}1uz_oW5oGzqmyMSjr!-)y$MkB z0g8wt;6I@tFzMk-b$j9p`Fa3qG-U!{#F==&X~3L1aJ>M0N#6hvsRimjeg2SiP}ztD z4*UOGV1WHFO9opSz*(RljgT(jZJDj4Q+2?AK&~AExtfjv!l?lMwpu2%NRhzUVp=29b=L+1khIu?=Qr zKVZ~N^T8t_ul@<$XeIK3D2j-^HK*2NbJI6T>}N~;JqNO}O- zMFhLAzU`YmA)UcqLrba@-PPq_YtBAq(s~m56qzHtH8aqy3Gcf2%+Z&EIB&yhC6mY8 zY0IUVn$Vbul-Zjp)$M0xo0=7h}`sMF=c!+#e|>#fg&*iu%1% zbt}80`Q=^2CmOn~iA6z@{W>Njs(%#g>X4korAbPf^5cC^IDSkvHz*i#H~r;zs(-|! zMB4y42k>p-%Bc6@*wk=c&Hj?96u}Nem*C{JZ9>z>_OMD{69p>{=c%Um3VkdT4Mjo& zjBTBYxo0@@jLA^kAALiNfcbbTqkeV^k9ttQ`Z$n)rq~H9n?U}&%`=x-8)YJR{Q8m7 z{wx-(?Nb!?eqO$+qQ}eGqTQ{Zu?1H;~$$hG_Y#@zCA+VBX$~g0sTX zV-q+c=}RE~4&j41cEh`>f`>~EIUu%;z0#gI(9r@wpc^3S(!qifdip+~qlBh8`nCu# z!@G&1XIXk0?)*?ne?k|Mzygj&1c+=W*eq#+&|o>JAkS!d;<490w?VOxLA?=gMs|-^ z5k^&oh4B0S{2rCP|HOd8d&g}pqTnEJN>#Mo;ykoUDvQKyo1LvW%ebV9c{_T-$CM$t zS7;lT=c73ypl5XX2ru9LHB87NOL4vG$!yg544tx=&K+UE#*y7na^c%vF5G4DQ;a&3 zzkMKvRY8@e)Se}u$3<5ej%$JLXjZUyJo3 zS7sFiL{rX(`|$VjF^OPM0;)>+iYF@29J&lpYIb*(z78t1wc${u2G+0Q0ofHN`F8^9 zj8GdWW}wy2Vh%4H@3jwtHe{W?iByGB*=I%6YVVZAEE|})R50+t{bv(?O7>S>OwV;c zaB8-Z_qGAo+c`2Ezxv(NVa~*KW#Thf524lhth-W+l<(zUT)#6?gdZ#WL5%Z+V7nP7 z4u_y;99VJ_S`ehjKV4WmYaJT?b2#3$Pq@L4V(ZEt#u9w6Y#FKJm9~+1h^?|#T!`^N zzV#QXmle2{xU;bD|Y0GuU$F>w*(;T>Xd@nVtQQ?oRQL2!v>Sz*AqJ#_>pul8M z9VY&oZx>y$)iW?K_S&Kee10HN&JwF^KpORfB|H5UC1YUKc)-3g2GYSS3GfOM z+5&;~0L-BPg-~W{3YB8Xtz9C4di~q&nP1Z>TIKavq0p_IHTKdHVw!DNT(wzv6|@|j@gF|oY8;8kDxB8l~^4z0e7 zVkD8mXpYJLb1vuJlTKz?XI1g&=G;rY0>xo(BvlLi4}jkea>q0&aYQ$4uKTW~A*=1r z?LH{}S_H#KBp3Q-=1m5JbwU+$fmX_st4TF7fSBl4d-;V!>~Es|_cA5e2z3- z3Ik)e#8Indpp@vfrh~b+jp%!C`VJ`4sAR?_=o$OJ8;+C(d@f~M>o0J>FOqh2mCfm!|mCTa9c@0OD z;ntA{=vylc2b&S*$dF=&!ez;hmpc4bcP&q_q|s(l1C^L>w@aHC%%puxZ)dOn`EfV= z6YgKrOzzENe!M3ynpiL}Nu*?M>LC)e{odCcHF!Xu^>!@!kI_cvF=HRciDqY=stwB7!Wu(N0d#-wLLi(jL>xohOOMJZ(k{8c#)%*ZZ^$f#g z`1;~7v`VIqAvXWl&Z!d|2alpZlwyV8XZP#c!?6^2C=TvF=_q}X#jR(D`TiD?R^)oD zAbS6&SN#v{fzy`Foy10eZdUKT1cpR^7~dIp&@ckPd=wgm~4ePxp<64#5Vs2-nefzDG5wwL=Xa1Q@C zlt*b2!aO)3DX!?InlXv{IzFWxIqXCevyjq?v`kslSL?7-AxnkM%x}Bic4uzrfbImk z>tSRCaD{YBP~33M;{UV60Gz8s0$o)>ktzk)EAzxuX|oFd*k0lV5=uhHDW%6W;VQG2Aj zYwk2qy$D19mIt?0U``uu#`34u8^PE*hGT!zV9b$2aspbc=QLtN3%QUy2?%ZMt9GxR zgM?GE;j$tVO-p~Y<6W=U9CNC~Z8ndI%3roDX3NiZP5f&76?9D^Yn?dluGihY_Pg|} ztmT7;if8zvIX;S|2EXo;D?i>Rkbc*O=#(-Kh0|wcfdPfC!*7DH2IlTvfE~ahF%Y2b zNHK8j%U@^8_I(6c$@SaAF%kqLwz-;#{NGfC_#(6`3kBp-015yk0B-^?nZ85|OpQ}{ z=;B#502K5kVd?fz5b!Okj$mvS8-iH20^bI@1ZFU!_g(yaXSD??WqoPvOvId@#{x1w zW;P9X_ZPk9O@m_Jmj>gZ^)lE~IiD+6pVk}G?4v$nx-|Jv@`O+<+;Ui8k4%N z;IQk{A4`?BB6M5*?#Mq5rp~$X5CV!R2(I(n6LEYPd&7I|+V5`)CiR~< znpVCF&s9n0s36RCnw0WOUc89V+*HNH+mX6-f4%KO5ug&Qkxi!*(;+j#ouKqoYxteJ zCes0P5q6@QZ+|FHR0u+vKIM=}*gF};=|d`1m6X2MbH6-_(^~qmzdqFd`$UswTSksW z2kGpYfRmHq&Svv(A_7>H*gxE1OcfYRBG@*b8yh(L)qK8BL@5e`eZ(;3P<~z#_RfJn z%Biegm*-Q_FO?*eKVQCUBto?0D0+a=%iPr=c1r52W)u8f)wkXA)rv-w+nwWS&)+`X z4bgF|*vdy%NEH;p_Jy%_4pk)9b17De0U2wycE4J&z5ycKPj{#g^69C{0Roo$5-_ya z2?F7=ODE*KisId^Z-W&IY7G^VC%IeHT+E*mRk1k6^;SJ$p=oHIec1eAt96f!J_d8v zIc^Cd@`Dj&Gk|KUP7NtqYlNM9CUo-Y5$Tc^w&#Or7j zTB~Dmyjc`ub<=wC&*IP1b=#w=XAr%Jx2?!s*)cJ8gO&j>P5BJk^+yZz_`7(3BnE56 z)7>VW9UxvCu~YK&dA(Z1HvL$D)pPRzmw<^_uqFXG9(BOK6hcbr{0_`70Gk!?T>-fa zpptE8kg35|kWi=&ct3z9!leH?4^PDC#ulhDSXf5`+66!|QC|p^O@!DR!_sI03p4qu z@46NvYR2zOM*HnhXBU}j!|;O2ww|3Hs^;#mWx*mUaoy2BFVQ*e*@n#`g=0s$VQTE( z(ri@WB<9_-o>m;D{bc4i3`?~H~)moOS_Cr46(_JgPta5ht|3n;BJReR2>AREvvnr?J?UAu*GKcQn6*e z`)pE8mB?tdFM^nB{pQCYp4CA%3Ul! zTT#j^mV(A#DpM*|&B3oOtBb^$O}#{~xL zz#>RTn6anPlh>tu^raz|kpQTG*25#zGF^3(f&5)xGYHnATQ%(P^;q@lw&V{Hx-fb%>oi;KTYU6iUu2w zW()FDFFf*W*NM0=!H5}p%^+OZe)dXj|G{ad5t&Lqqu9rRdonu`@(WAI#$?)3YH&4! z9iM&Z)qHb*P(K`Srpso?!yTajYC7V~pv{j>HLiQlpK#xJLkUweky~S*^NEOT*tGe~&e1ll zd0vYEKWSqDtxr_hm!5IX$S|*tG#B zhz1J7lW{)!%QBvjm+`G);Xs`Hq~n-F^Ru+?EIhqOY)w!l{SD42@t&p2nVm%snMd#! zIGO_vy!Z_DG!9;I1G8<6&pHKL+;c=Kzxg9HTk0Zr?2m0c=a?W;$Klx3iLhAiT~u4hqUt1Y?%*!Wz%UM#l{(P__zi>YZ@Q{R@wc6mwg^pfsX-=j zv?iu3(|(Dr%ARmhNSqf1^|r0QBw1o5-aoiWvP@Y47i^>Ncl=osLZ}6*6S_=rJr_I` zmMT=E-2Zz?-zbl29m`XyaEb@@%_BBa*k3a}j5VIuE-er3h6I!NaIK%QsWUHe}J^Uv?!dtTOdW_(Np<=C_L!ssHe%D<3? zf=oMc3+z$8{bWqsa-afp7S;;Pm>>Wcp+gxE>GU2hy_wcj2iD-s0*wtUCtw463c;2d z`T|M&VelO6H*iI52L%IIPtW_az_0+0i2(SGp7zO)L7&cHM~V(#M5w3#Qpha&Mpb$X z4@|gtSQ>lbYrJlO^P>>OBK4IdSZiF5oOAp<_|>LAidk~>I3zsFkqD%PogppO_tqT0 zcuWw}c?I_MODBQ#%nxlLNz4wfT4h_5XPK3ZSUJ z@9m{w0jXW28zdDF5CQ32YJnwOI;Beq6_Jjm8xfH1mXwqZgA@d$QMwdF!tZ<6-+$g= z1{ijSVTR8=_nhZEAz2}!)~V}3kxQsxL`PfHWU{9!_FCl@Ljcd~$u7F$r?Nj1)|y8^qwn=kQDPjNG*MB|eX%kJNcnORPYWZOmNW@|mYM>G)IZ8>;0C z>t?ZXWS@uoT*VjUhxZy>aqs0K1Vg_X165sjf1ws$uS8LZ*+JKEkat6X7WVo1ZcbEiqHaaxpH5p7>U&b|M#IUBr;5X4Iic+|e zy1I=MFtUObu9bd^;Ub^Q7Wt*d=4UTmvvi-WzkVNWD^A}Nn=de^llB+c^W;HgI$<*1 z{`H3x#a?C8=xQ#(Ca&Sa+W8&-bEXFFs*d&#B1$_W-1SB7TKN>AK6o46ZuYTVye3|t ziUO{dFX*$ugKP^0Wg5h-VJ$OUuu4eKvjhVH7PcqZuQ%ET-mX~4xq{5l6m}1AcHXsO zNn$=&m#_ucJ@aGDW}xf<>MRCqr5-RN#=1CSdl>-n@q*t8Ytl08b~StlC>G!;$GVV# zpS8o-4>mY>@@gY+^M%6ID?U@qL2SBN&NBIfjBsq-{)LckmDa9>Fw}u54#U1nVhkp0tTwF8s=1OVHGURX9 z)Al=pfVhasCEb`%q=B~-Lx8C$v2#MPY&FZPmszM4Gky7MlcWLHCF)VasUZR zpQKoIVcHIX!bAwl7yFhEHxnq6e!y$x2*p8&5>H4lCi-y>;TCd!y&_Wj*^`KAMru5` zz9KRso6s3kP*N#bI!D63sBNm~`|eM_Bzq`8d|*ZqhO=rACsZ+1`nK+&gY!9GiC8X| ztCV*44e8mz(sS!o;x+!ULe4&rHs4`;QrPdu4M=2Oq z5e$a9h|(H9%|ko8Qe4M-0?S(?B7!a^@0^&lU~t0h!36`)?PV^~hh&--cdHs?P#QO5 zzI0O;LQh$p)Z_#B(jy86WZswdagn~@5@Ndh%WgTwowSS@m0c%JOY_pT`DddG$7qgH zsp1V@MJli#)Cb@+Cmc9HdVo>Y;}q-S2WC+)k-7z=#Q^$(MNs~M+TbDpG;&l4V2qpA z5cr;hnjgWx4{ix;yR%kvgdJGFV6OtOW;DTG2jDCCT(oi^=?W{hKEDG@tP)x0SAxT}s{7rRH zMPfjpFt7Gb1p93N6mEguY;@8v8pH_Sah}@5R4(+o|2QQU09hj^jE9$MKjv&w2c^Sp zO-8IFYVGmPvq@Yv%#+kh_7*($lLV7Q+FUHd6 zr+~nsb0~ly5$y=`D;eT=NErGClrZoOXLTu5aEBy$;zm`E zD2lLO%)$l&Dn;Vw%P(gl($KQFZ^&gJe_JbR?;#yU)JY4|KEk=h^b2bRW2nKM>o|=&9Dgy{F2#XrmZ19-oR+p%yim;@so< zjLf9wM&sgPxao~j&xPM5d?nY~S6(W&$xt+A#C~P>;ic}K^_phm_gH>3^Vdh$EUZ=f z%H1A|8{h0P1rfGMzZA!2Hk@Pxj6rLF%cDTleNm`78oH7g73vk8G+Ws6& zjL1qA>*psAH;!H=e;A z^S)Ab%_z3?Yq@1EX!&_W-N~~f7DI*J5>hWvC`Qxgom1)r+M6iBs5=xS< z-*mWkW98BY`vkT_8?jcprodl(uF@9ndDM$tpCA4s1p_;7?BWq?nvH$z0j>zB!af6r z>H{&Tf!n}CL&T^YyK~3#k<6FDwCcBmeIu*|Tmk06U4pQ&@q6_}Mg+&=uw+xC14 z2U!ZsEoYln<~za}(D+@Vl1N;#((x2pcWy{YN$y8SjR`lGzl+0gctnGqt<`CzP6!De zDhge_F07*~;^aU5_WoAu@1750>i9vnZhyt@CYK#1xZCp0 zavXPnv+C)22Dwmy-W-x|d7)T1pBc7CAVtxAYO95~{bk+VtZSr@3X`gDka7@WEo1Xp*bL*dXvj)JQwGwCFV&X}i5 z>Ab|cZ`0Vxb$sz`Ez%n{cg+c{|M0`V`>x(4AGIUF<1{0M)(5q@wHpyVM)Q!~tT1ofd$ZA7J_c`iU`Ez4HN7 zXS*4z-r!%t#uH%A0RVrh!LMWn>rkN8n4l{reZr9a?%d8UpTvbk@Zrasc@}?6g|m9! zv?EoF&(}r_ZL9K(Fom^RWEsPToRtjzH_j`z@Kf%I`WM7yY);`8RtHlPNkb_q3=F>H z{sIhNy4X+DuglMawglF^5MqMJGz9JAI_at7o`(VvN%90CDQzXce&46AIHHSr7OUw8 z0a?n8##H0s`_lFrfN$ba-I!b`bujp9vvsE7!*)fY>tPc(9QyUQQ%)4gIESjI(1;-s8}gf{Ofg% zrmcb|A`kbTtD{LnNnY_ST}vvROebhL9b?YWOC~*M06vBIG6%jOWH2<*q|HB?1Ck*p z@-K!~{HE?JR_wf$&vOy)<0LLk6p4*B&dWI+w!umn6S2iG+h-eBkVN&NAqXe`==X(J zqoIIcWy71G_zHlH7%n6dpX;2$%XTppYC-}!Ioh$kN%y?zkB9h{&#dl}jgMQ&X#!SvsYddz~ zXXRW+@Cn@=7$)KUI8`iVW%Ry9ProouqU7AyeBlxPWRP(o&bYPWx9RD7A1-audR49W zF*m)@LC<~x!$*Yr7kT~%pYTHw^@@}%(s&CD3cP93I+;9S+?~`fb zN0JT1P8rGm)Dib=IoF8#U>(aJk^H6kJFFU+w=YwP+!EH)RZ7{c(8K=j z%SqLa4O7JwFS`Q(2}|7p<}H9`FdpK0uZ-3+Sq+6^9h#o2lS(W{Q_XGb{05c+nMK-BI3*9UNy19xPryxo!rf4O)z$){vEKP!=CX+)+C4>&19~yPK|3@=asg zG9Zn=Lx%)E$dPbKPN;5@#Mr@tdtHpvTgoGjWBl-mu^&fdIH$+0Jg5iW}+ik|om(B6u-_4m;pg7@l|Xwg`AWp0)R) z^Jspu{uR;JN`o`CF4+A?eiq7J^AWA{lV1XHgRVZeShQ9QB#PKy-1p(!9uQbhR6|U8 z%+n$LOt~i`2-Me}eaU%IkM`0op z4?1XbT!1UFKzTTrYnMM`*R$Bx{hwMCyn>yPLC5bN3iq8EK<5n@{(IUZeR}~q-xJ9M z&dqIX=TpM#3yQqo6zGRc=>S-CL55uM(!>g<06B{nFcs=CXslo6|7f)btrde}zkA9a zvx+|5yP@1bT0UA`O1hdkFN5i@a+UxX*CH z@!vAwm`Ac?lGx$$KpY>wo5aZA3>SL~pOz62s-*EF)&WDCBA3xneGBIC_Yo<4AXE?X zt=kBSd~I6g;-S>Gt#jJ*fwRii*vizq-Jq^#%-?w^P6-D1pLVa?DI za15W}NW`T1a5_`zvV^pj8QmPNppzJ?pHKVa5uCjGtm6KC_Jn@oIsI3#0_t-DB)W5V z84leJe8^t~&8b{8z+x&eQ9P`^;wg;t%@eN;m+?Xa zA7O;2lKgX=i{qvut8@%qO5N_^if4Vv$2nrcUv8PdmkCPJt5%&fcJS#rSx9BM-;P4d*m2 z*ONR!0=Y~Uu0Tm4lIoI1t_rElMPE7MVhPUlU$X0rXzi75wj0_9PoXdS_&BNc)RTOM z_Y}}5N@v+CqqGP10&N4ZlD(=T|8*yX9ZUA+b0(zz!Y4&l)hvd1#!QLc)%+rO)TC||+Lb*q&D974JwB^EQ4w8;B_f$SU(b1`HZ% z0CEz?06#A*ftEg^bJr& zxk<(7MTf9VL9K)PnLk3|l3V-Ds-6hqM7t*!(ac+fJD~`Ld87_ZD zSM0S`Mv2O}1ojz%=dEAq-Y`c^}FM)YOv%HW*yK`+kf@t^Q2K{R?sQwY|^5O$hu z@H2@2nqhN6R`4_#3F#xB6$-@J?*U^H9K5{)xLqKAtnL717a!4vcrf#b_cz*}_9!o(t-` zpA0qpG0l@D%*p<+T-m@#e9i|qcMllqkyTMqzSZ1WoJzQ7WA?jjO$FvVz)Nx%OQHB- z;Pb&3aZ%d;AR!M_DF-LpPNmy)`#*j2&(ABpQhR0-US8gCgBwog_qa1Ko49$(wAE-W zmRPQ#5pPR+Em058G@I(+mXbf4L-Bz3P1CZ&OkC0S}D$ zUyATB29oxtNa$n`)mU3ET}`WZ-ia7t&gB}4_d(A#+D%{e`k9p-?U>I;#aXY(_Fn^v z8DAEr2)iAc&_3^-1gQTinj|BhymvtyFK57{4e}UQ(aJB}=*Z8i>HU^TX>(6)nM`Wg ze;!_WYdPUPttbl%*+At=$Hns&MZEB*?vbMzZxL$l=abj0J(!lRetM6P&0ynR@8CGz zM{PctC}jhEx->4|xmd9dZHapNl&lQIfys33H#6QAjq0}2{$rG@Lc!sp2xmOEn{X&< zx}utS9K{iy6?Tqkz(KxvPtT}*%SdWm0oPo0*z65LeW)6br9-cRj^)Y;Qxn23oOWf1Uk!()YdKVe9=$#ti(2xW;)n$C=?eA zMka>;GPb~N2;zLOS!*r-uFpB_h4{h?9L5U3`1~gy{s*mLn?{hW;)`t~F(7Yj0on{6 z`z6qsRs+9GEUp|*zM=`>0=O#}%xa3g{%M}D&g^7I$pg{F+C*b)`tbeb=_0Qyk=e)V zS~0?z{8!3x@3+4FjU@|JO9~{~E7|bRCUM$eLs3NS$(j_yU8t+MUYso~1D&GfokNLY z4e45sbosZ$QLswr_=;f2y8t1Jb4J|zjH?SZxM}us#I+XZ@TZHRmac|&MWR#30|bhq zN}{tRl>LQ5vOF;9-?ymqrJ7z(RCYobp;;b>Ne<S)Z2$brRb`4I@fp0PB@O@-Q z4D{1~ki!v(aQX2X0m+%3CADxEuUUV?{by>hSRy`i!}xEK1-O;JlD$xPFAQaeslB)| ztn#3j&{b%iIm!)vBab@hD(KfyrLOOe zZr3>9=X*Q{O$s;A)a*6(9@EM5yK)I;zZ&clSkJvQnmweLKlEuOieg>oMXRsPx)tEd) zy}nCZY2;}yM*npEku;?=-t5+Ur{bj${)2(n)x0?HV)R?{Sl07vL_ z$iiPqJ@x4?c8UCmr>>B-tEkIQ{85pHb~x&fl#pYSKp>Pijn7|;C+4#dmCyK`AvT6B zA;DbDIQnx5xA{(Y`>lGhYC0c$E4x>5PtlaA)Rhoz#!R9OFFpc`!HaPa~Nd9- z>Z@-#UjK?ZGFC&NA_)G{@y2T_JE|b6@p1j^&JJ(xL^HlR%lXBC4jq+5Xuc~1ye=&4sJg1Np4aYsC}`u#?4Xz{b_J~+beC-0-{MZv!W zaYWz3QLLuzHvavE-!%q|$kBV(O_q69hK{wN$a|LaV!)vj8>xn5TJGP#uCibK4RYZJd`b za%a~lRa9MAv4dK>_`MIwqCrn*O~FdWwR%oAnjY{=TplZOb8l>j;+fBV$(^fIN{|ZB z#~aT{y{f$Svg`W#5jFw!lr~y z)+U}a-a=d34AwSjemzV0jqqdhXz5~5v~aEAc6Z&=_~S5OMxB-L`)L07_D3`oK=S?-(PVz{}TCJi9i)SGjye^4W1X&x%)Nzb-QZfU6c@hdw+S9<0pz1; zKiu3L*t!IR)B>z$r7;;$Li`iu23}*Yz$aLf_TYao%sBYYR6>Cn^3m6Lczz`m4x(qP=c3dVMV6+E9%)kiiGax{Q z_;g{f6OFO40x`0B%1FCs0DlWkTbB(b01x!I_|j z#(o|FZUT|?^wF1id$nVL=;bX{&vp8MZ*>8@Td|v50HCuCu9ey+f)mgt&SwxuFO(}v zPpMPNE;G5Blda}5{*5nhBYs0<*`Z~RbqQB~v5)!m*#J6zHY}yKeM!vVwd) zgpfNtTtD@Ji@p~hc~yVcfdaEAcXHvU!t!#-iigkr>jk8Rp`!eQhvL$e>Fci0+NTr- zCr2ZYGLt90KeE#V2a9rkkLXXzGPCm`JXRx8)Vs%b5nd%?82t=YyfdfO1ZdvI6ykso z53au|rsllo5|Wq@ob0oNS?{Ce&wa(J2G}Ux>cdO2LnUIbl~tbdiz{rO^pvO7loXxr zu210_RBEo*8H{bidq$_|cnr=ye?a}Mk6|;2F`Wy>alBXka$&ew)U?4g>UzZ*0i`Jq(TA+=c9#mU27TDwrA)Jg1G(`xWq8p&NhE^ zo-r6vSduMPIC?OsjBzEL{??#vS%!GPW3zQv>i6*;B=Sm2|P`%PDU6DVl?Z>C_&e(NK>KM7nreLwGw z=}o^IHpAc+F(1Xc>R7$1{r)IzLxs>dHUj@dZ|ZO;sBn-Zu=|JH?PaG~D${S3Bm5J3 zT?}uaDO$?p4fj=qb7UopIv$cQ8cmDeHepe!n{T&|bjX~LnTif*$@|tDHS5Bz=-<%f zc;hNiiR01j@2eQ1O6D&e`H+n#m675{RjDIL&3-iw^n7O z^!@=0kAw;J{%;`wsc9&b)W{fVw&9J(!< z;3Y6Nqd%I|Ixy<6ti#6!!Kle?-vR!R{Xee#26)1HiOzMZa!);zaAs2=FD=9j`r-dU z`Y*(6s{O0fPAczRDckm#oCi~Q{V*4ZqnSxO;}Dg5NaqigK@J^sjNzaBOutWucQnWg zx%@;GTR1@8_q}xu7XSWDe+KJ&9Twa!{?nf?c3(a&#+=VAoRY~1tg~$D9=kUOeoE`M zp+(2~8xLl9|N7~dS;kkK^4GZZHVgdNesSUH+Ye-cLVQ6-tG9j)g|i5@rxyK`EpoP- z+_3cIVy&{(IM(%kbDra*QMGCL>?PW2)skkU>}sf_D*Ju9lure&+?t6b(wj5oBU&2g zA@QwxqrZ@qRSV&&cLz!AOzxC4b6J7!YVCRv6fW5>sy8wvbVmlHQ zNPipVRpRM5-qK%thrMk+(jx=>=}h*_1ho`(9~Ac49>~VBiEw*0LqrP6|AW}=TlSH2 zOp>Fy^-UPgLkQF^*@NB^L^&H8UHe<r>cOfWo3bUNWWN4P-`N#hB;cw78;Keb%|Sr>t#C*%?q7i95<{sL8wZ-?5&XiNQwQUPk&rI%+%KJ3(10i7M~I{)5Ci-u%nRNTz#Je{q&j+e-I8pyJaJ>MEL&IZ*Ia# z8AFb+>VJIj;p5NJvQV682T9cae-O2Ww$mrfGX9)BYW)6p(??@tJRn;+PVY+79jrZg zQV4To-xJNOJ1+iSyOOx@T35$deqV@F(#A-)le~})G_zBVpyYiq;_Gq zuoQgizG)u+#vSR_sCRl{%-wI|83F&n%sTQ;Yn*fYlac4l^M_hGMK2SbBWq-Z*w)Bw zevHv(G@qFL@!qe^h5wLvEp_zH@W3dQLf19hfz+&?CDwSF?EamxzQZxIXT=d}Pn{xzWE=f34=(=gd^RsA|1!99S{mWsPs?ywD2$Nuv@!e`Ma1ulJD)uk;RUDU-q0 z*Rr9RaHe6;^rUd3wMZ&ZOR$=Vh(QqTf)2!5E&#p>K%Tp@|D}q1VORG`m#aqTT5*i&2g;K_`ATq;xwCS%mu4J-AoW;m zcdCG=d{;HM_G?SwU7WR#N3o4IU&}T%=1oiFmT*oicg_59&%+-b232bPVs@0jHaQCO zN}bg_iGN$scN*n3I*-%2Id$P>FqCq7K`5>j#C)HzHN)+Wl3SA7?XIH zY)}mCC~F+)^~lTXQ07YEKZq@L!ffI(BcX7<*fW$)xl0jRAVuEXEs}LJlV~>MbSdr&8uNIg?gi`E%##8X0x5 zyuWrxc)^X8Q$cmSi}n8gRIyx__Hztzm3l9P1yVHT;GXM4DVE=rvxi5tQ zt_`r5`e_S?m7kiVyxcjN$8!9vGjR z6z8>7d7CZVvpqr(Epd7bQPAKKgpNrya=de>t5Q?nxI^+EBx2)DJS`8GIQNg7C!^vs zWm(++L45IVbRT&!;S&%l+_e6&ot#^p)#U3gbgin^XD2!(FwrgcM4jS7`LVojIc}bR zR{3zY>!8)gUvEBoa7fiwmwS4(k|iiy98(!2-a7j0_=mdtc&=sbnK*z9=NxM(_1dmh zuG+&;I|X{vf}ZM2*N!4ZUSY4%SH~waS;{t3wYLeTZCoDNnIx-^@Y8GFoUc&R@<*Hp z2klzsyqnq7AM7O+d%&XjDEW;p>`EB)AnxBq@c(-Je6Siql(nODmZq-$rTar5+$=Ln z4OWzG8fgBo_kB~Gx>(Vb(HAyE&$-xVWmb8~SNO5&XLTnBx$njHS?KL>yG=SB-hpeQ z4AC#QqNDt=S+cisC#$bt?_i1U zKM7BBv`Z`N^Zq!+vrfy0L@_sc@MN@#*! zvB-TSA7VBhO-KFtD!*)QvGEPuXWT+J7X9M9=;RV{15XEzYz)+7lh0apJNetyVPP zuO#^DjOVdjBj56#^Jj7Cv|HhqD*1?uiM~jA9DZ^~`JNlQsklNv{sv5~HvCi>TL=>J zNS7X#-_}SKx%~9!^-a^1*UTK95+mYG`R1Joub+&Ci`ivToU#Jk`F z$M<$iZ74%MV?sa-7gNS86P-vIFqRBM(@uV0PoeCu+rl{vCvFfYfuTgit966kYmk?` zD$|l@jUEs)?CyIOtk@$UiaBQ19V2L1K`=iw3E_Pnx*uNcbgMSN(D_Z20o>$2$TDj# zW$})T{~y)qmnl=CQer+fS5g}fZ&?^my47&EPJ7tWJe-50TI3u|BjAP}C&uN&>Qi={ zuJJ3DJEA0axHhMzqTHBl>r}SxGN=qgzmKc(4u*2NhJ@AqH0aG&vkV~XCFDgQPMZIN zGzf%o8$uJ}=A&->7~-LEvDkT9@=I|1_;29%?or`jSFKsyLPi0jj_$AL+d8NhB<|z!m&Zp3PHnt#4Y5>S$R>CC+stgkdeH` zc>r{lKV6h@HGQ1J|5kh+zU^7!6Itm^?bX|@_2d?PWs>uWA^Iz+oNLTL3cuE0o#M^6 z+|s2k!XHE9jiaV#p!FIbCEB6vWz!`#oQCN5TF`ep+b6~`?6KnN?HK|*peAm|Y!sMi z3D4^94k$R$1yvBZSoAG(&1#h@U)BG-QOM9HvJkn|KyA7WVJiCEHbN)yEoC84*(F|9 zdU$ptHZX3u&t8`7`OL;u_)MbSVN$?L- zPKs*YnP`^feoSUxx?uBuXX_Ia+^5W*BaCXAsgcnus>Z{59B5w4wmiSeOGY548czM} z31V1JyP(AXnXl(I8Yw9y6U59kYCkqJGDlK=M;U&DROyGJ6Aa z{SS=F9{^{skVKXW$qOyUXTOG%KV=SOHg45aqi^Y`gu`|EHy=yiH?eIeoED4PrxrIE z^^#68(3>jX?XuMvE2{XR>Hp}ah>(&i*n|>tNtzy~q&|w4PLqVv>{AtPaHZZr_~O4L z6A?tXRP0I%YP7dlUyIt+sUV(FUv;w~5b7CRYSs^n1mAWXiEik}^(je0j84HK~}vkhVr|Cz@X5+<%0E z1fMx-Ki|BY@%U9FWpyvhta4MtDs*A6swBTRUjFLSpBTQI5|V3DqLm9`EN1QasMOkT z>1&RkB<}DgBEMVtaI0@50+V1XV>d8WVu9LaSN_HoFf;~%D$@=(1&|To?qI2v^@avm zGNuQ%I$@J%_pogncnk0*#BzE3ur4!LXKY{!hc%j;`}b39ngbv|0KlkLeM}gyOF8Qi z-TWh$;xB0z-qCj6`Qf74LW&2xqJ=!il&vO%1d`X1LNdHAarY_qHo~H;dGSjQwLFQ< zGKVL)$siw?F6-DjO9 zgz4K%1kpFo>F3fx6?Y|v$}Mqpcaym5@F(diBzD)61VePcvkEqiz8({=T0Yo{+<%$c z^;c5CR??JFn-ukUz|H>FwW9EXC62Pn<^!*;JC&3~KPlxN4$cOZ%cY60-eGrCuUV!B z6fzEk)x(7$uX`E$)%rJ0!5W^tpWIzfX;WUAM&))~M$pA2 ze(retz5RKm=S3Q3gv%A~5Je#L%S|_LqjjQpWUscQb9S$Wx+{t$8?>YytLTY^v#xCA zs*>F3=MIzesYYwE3GJRX|XBrt}9v1n3o)_nM7032n(KkiKe~b-dt?#Rc_&vG+ zFRqLK-k|I}Gw1i4Za$TAYEes}4DWD(iw>q%3=^TJFTW*EbY@o_&OSiW6VVhM8)!7` zcj?A(y)t_=@;+?xaO?rGvsAm8diLZJCi49p>P?=VDD5KE&IOI)IAvky=T4dSD@1OYmtVbn6FYV^&U%x5zEZW;R zW)wQ2ryD16Ya2F1vejom<$L-cgukaHOS|ZLiFdwRjEL+{36b57+ihCa^!1fs{vKm1 z`CZ+BP+^m^&dq(BmBGmczOcG@e4;fAkawtk6g1CwCqcu7B#Ykvr}pbO;zi>cE!P>L zY4K{219s}(j^ap98C8u6y+-bwnU1>5jrg|&0{#0+2;2ZCGum;R;5UfLH6gaJ7uNEX zybI5!SMl@0M!!9f)bl^#GFaWw*w*6A;@e)%=t94c8mKAJxx2`Maw`+v&5IgH*E$}c z#|dS{Sx-w|Ci4wVh6_5hI^&GH&Cc18`orsNK+8zFkf4pihu41Qd;LTOA79E0lbaoq z_e)Nunyak3DfS*q&NQ3BUh|5rbu@u=g6>2=doM+%+|aGJdX4W)1p8}_gVeWl(JOU{ zwc>5BwO-K&PBKuWpFfOub-1`^DY%SE=T`mkxLL$LBL#N#@%%{w9}5>%v5@J|s@CY% z?wIh@uWj1V(c2Js2>13X-6(VFQ@(H8A$&Wkf3*4n$O~)SVzx4%M3+^6t8yi>Yw2L@!m8gHVSD-RsovsY4fG0l|*KRL?`!y5zJU9j`VC=9Psm0%>z>^E&+9286 zXX0#Bo&1j(9=F_M;*)J^iNYmeYPVNu<#<665&DuQ$u4gKZg6f*Y{KSXeu5}E8$-AS z!-BI$6siTnMA&b))^VMzTe`Oi&$4aphu?$v;$gi@P$DYIu=TbF_wMsR$;njiQ;+8T z+BJ)|qwQ;D(tv7f95%~0je(oO4q>m6Ud$UYksj|~~;dh^Fvf$cg zqcU1D5yJlln<=$BK7V*Y#jdk>izri^FyHJ5i@}F}YWbuSzGs_#3B=U!j2jTh8ThvdJ4GCAfsUOIKCno@>*{;tEPUA~x2&4+_=At#%<;2kv| z)@$AI-SHju@Z+cY3ZhYTr>we69bXxVD{v(Yr#xh|)|b7_cH@=VpEhAeZZGeU>$tZv zb$j>byX5vaXt>TaO-f>gnM@A5`mLS#gs$815N-=xP|BM(DbYPsW-X=Er?!jd6g1(% zd@Qw9*N^0>F5F160uj~SyyxNie7`n>#8W)vuSzHT8Kks!RaW6*yZ0tE(yG_DuOY%Z?kFWoD|eh@@GV!H>hwtbBB6({p5N!Q$N; zWo1j*p??v47b1+XjZ?M7SATUERi17>fAWmBWs~&A3h1YBWh{=$ksQ{`u+~ya?;ewl{U#<+va07vbEy#Or^TRIwOinF&ym= zAw=$FSU5%KV$w>L5>wr>xpiC+PIu2!Igk2c#W$ooXip^<)w{@ES~x@+$T~{wCR??D z+5+fgbYL@W(+aYxfGw`$>A!vm%k*?*0#wW<43iWHn!Nnza9U3{lZhg9~2}X5d_aC*~h%2-yJ2^Xbn!3Nk(+8-@@8@ z_|$~@YlrLcdhC?MCYLk{@qilh;`x}B^i*eGY`X8H4ML|Extr*%Qi9tHG_ z@enYYjRcVQU!-j(x@r~9U0Mkyc?shKqnyN3HXO@?$&Qit4*_#W4XzMk=N@#Z@3$A##mU2G zBK^M%LmpG!ioz1A8$v!(2)$+A?QT&B&eW)_ew`t79j{Jk9lv7)dJgfW&gk+I!94~o6WWH_?6bCK*}S+QLO?1gHS za`J*NOQ;&owFd5xSJz?Y#aiOUD@q2+yarhc zG~RL1i{#OZ)3bscS??R#KP;Ba>_0jGyXeFq%zVGw@?GmwF48-$CplTB^9oRmpmUit zdC(}A*?C-UTnTZ%tuqut;2FU!qd}E{NwS1)Wa{%!14en>0u)+V=JruUiR@}rQ z?VA3Hd?L_CvFPfZ$YpVV$!lxrbS&;{BH{nm)1hxtB8UgSjxf?^6i9VyplMd(ObblY z4;0!ClE`zXy`wj$F<2BJ`XV>=FxifJEJya1%^s%Y4V8HdQ2E4&a4~Kv8eEp#VDuy@ zKd$*oO&=Q-<3{-X^$FV5uu|z4X2Tz~L7cRCYQHL0OtdFb=`Lm4n*hI8KOXDJ`)z=5 z8xb(zl#CNRoM3)ijB6SiH^MwLyjmjT)|u^fhvSsF1=eF6-8xQ-ymzZag)g$Vd^;|( zJDxk_eE&0LpY3|E+Y?M|S2nO13;QJ}h)gjzO-sxinn+^LL?SAu4r|yG5dlN=FF5rT zmI!6k;%?B4Bw8=MIO#kn|M8J_gwt+nUx-cP;5>yvsGY^dB0L(6lYuamtPAG(8rP_7 z{HnaXT7ucT?gx($DIG9qfU);JZpie_e-D3i?{n5hfVe=~QBt>sy;@4;$VYzbF72{v zPV9VUx>kc-`vc&}0Ki7T_u`+~3zqo?Yy*JKXf4tMgU%l?#BL3Ny#O$*#Q-&`-!AqI zu3&D%(#8+dv2|+I*zXK0s{jcy;Q(#|)Pmp};9X`SAYrDwB%1hn&V~JbrdYnFJvL#B zZ*S?^k}N&k`NBk12&}`6k~KZ1a4TXQ>?=I>qllZLHYls>0SmuCDS~k=1erlOXjEj} zwm?c9Bs1(sir6b`Wx3CWj#4re;IopyHRX|4U%Erj_63zgY?PQaeXJL){)8ipZCl>u zCx|?VLBz&zJ8nP>y7*KTrb^AAn7AP=0zJo@X}Vg_*kEICshr_!lgcLE{&}Adh^9L< zA%s7yEmxDHzlBANcx;y5n(!e`xt=K#K>BOC%kAWvC%Q6tb@It_!{y{hNv)9CRX(Lk zv$P6#+EhGAq5gPbqGZpJ&4nn;+6QhA2OPp2T{AwTmJs!MOn8L^{CGsDr1{ehdeX@jvgn^w|>SZpK9_QT^nJpKTy@`;B?!gkZQ5)x zOF_$iQB>=dyqp?5f1-%O> zYb#+&Qrm^32zZ&Fj~j)&Hp*mFe9e#G@9!iUlsr_JTBcQZm};9TaFCZaD!fjt_9~hu z*z@4<9%Cn}m!tj*1H04^_!Ml14;a6qRdfFCizt7nn?gJ;rrmDD^H_b# zBvYXUZ3>2}IBJ?bGvlK^4Q}#^^yl4?Ycj9O543f6`))f8jf^lu4C?zO!bV_1^`xsQ zTSFBLT$UBOC*s2j-j4$gzw-yCx92TPd(6J_+SnES$tO+rTK@xJ1vPqsg3xM(H3|Xr zI;WG|AX6Cw}}R^<8NL6#_}UpY%EQnJ>@Xoq|5&RY=C)EgdXmflz* zfl)++5$>;s(c*K@tlnjqwF+EMCoJb1UQ8F)JIZR3eMBN}Ngb^4dxH@^ID~_!sOcNR z<3fqzD0HdlIWJ&h4GkYC`iH6<_mt<>s<~gapF!1l~6R-=$m6tIqKQ6#nncRt_pH!S*?w4pQB2jEt1rC4haAviL%zc zeB68#gOBvOW0R#0JdezGt044cA)_HGi${hS8sNw2e%j}vZh9F~tX7WVtVLwgCQ@&6 z+1b||b zxF`KFF5Gy&ao;`uY_sG2g%hgBWmOB#?5)3$a8VUx__1=X{r_k>^Ju8s|NoC=EMwP< z?7Pei3Lz2Mm$8juEMv*qZQsfgvM(9CkR%!Vkg;SD&&XHPJ z^m>f%`OTcA3cWLL&^@Ag2~OQ?AuN-Uw1s!tC{8o4MfhMu{~jERfEmC(AiX@%9 zb!zEw7^GVGYupOI(%WNk=dbD|Lv-`_V=Ma-5B+*M*;DKxDG)w`QDY1ej!Q{`Xu+=j zR5hCS&!aM_6EjYgFop4a9Om$H(a9!5S-z4XGy5ZxaM=Q@$=IavV~!TWP?%;%*Lj&o zhW35jCqJdMT%w`942)4?lRuyL&pn`QNZYwR9WtGeu@##c`ph8np`M%fk;M$=uK$*$ z{x0K9S5dYN_iyFJOof+y#1fxvj2LJpJLHB`R^+>H+U*O%qAaDl3)uoxFMc__dMr52 zx9|2;@RZR%ncs$g3u=-@1&HR=9>N-Rv0&1@fb3H99aL8fnP7nNRyHduNRmD$!3)y* zFb$(C^$6#B^R4^4{txWMk5RuOJo)v)lp2jR517km0HIoXoo9ty&#?$cPA zCNaCbd*PC54Aut7$>{jCmLVO?`=N4^i+R2iH}6k9SGY20)#3>{25<@mvAtgO^-_B6 zdTAb5vlG5k2>>3nM(k!mgIu=$tv{!{DVZoD_y-Tv2B>ip^uY$bM)*T)`Qxz!#Q~V) zrk@7A2*~@OgO&kYf`W4ItyR6Ka0Ycp<)F{$ynNBP(dzLJ!&1alHEu|;yl$rSnDT?a zb5G~*}9U=TllV&tCuXc9|Y5wE)LBmX|Jc8Nb~i9Q&V!E`DVKHucs6* zH*hP~cqB4)JM+&;cEWE~G`HDO6Nrhf?f2D13Qi8s-lTD6dl-o)`CtqVX^zW%0%kXQ z0`iK7i-?A8ViR`BY_&xh1N{|v^#^FAp9RQNLFc6#ngs;Jt&?|4U)|Pi?HAI|sa)Y* z+@GT6q)ZfKvQo6yFzAby6aVgViJ_&85}OL#@4>WVIP1ehx>Rst%T@KcoQ*~>Rr{lwntTe!PhkRZRSJECUdjd4ZfQ^XELEW{k*YQ zlb6#VYcGP0(HHe&O|D1Rzo|$_R77F}ot^kOP&%w5#t9V~cL=2i3Nx#cJlREjw47i( zwUe3AC@xAq^mT4~kO}#l@I7h4#8EHUL#NxB<4pO&kVK{|v_O-IuDB%MMoFn(<813# z&D!oj!lz(=mo(FLJL*vm-oVAE;D9MRhBD9AZD0X^k(phd|5oks!*aVKNh|A>IiSoQ z=$y_^!gAft8;zHi%PL^IR+A^IJh9JB`L}Px#)!)P*I*snUhBun3}3NE2wTHUYBQ2t zHcwD#2`pWHmi&$Vi7&|_sxBAV4Xb_|TMwDeh zOGBmy;?<;c*)f7}i1{rr!30@5pkN0u*0yFN55r7X+(4MD>P2+dsQ_Og*GHnaMGu{g zqvVm?SXcj%K6Q&-hb~Q6BY`_k_+`{20{JGZB!TG*D_l}8`Jd7>uRD&JX0j3W^D|6x z7TG>2>gfLBm0w&62{Vr}S0!3Mh5m8a|9$O;qhexso87*qWO zG6u}{hKnD|Iu#OBuMvf(E3WUoQzB@5QW_5YkfqW?z2JS{>c}N>eIhI&r*I`oCb+0R z?lzZ*9143UOd$=Vv?S{uMN% zmz>}Z9FZppG&Qd*Z=^Fx$PtzHcC9u|TfCWlWcwvMfJ}U=S>*wQZ8D;Vbfi zi!s7-pGQ-R29j_a16Zq4*oPhfY{n5^6Sj zN`>S4x$U1xRQt>3Rvf~Nu@HstInFEv!9A0k&I*by@rI1m0_ydL%!gEg-fG8+c_>PDuj1jv$-g| zDTK>SbFZ&6Jc60YH15f~Pm|M}_4W*XqQ{iCF*GRW6|LVcVSnjL(TDl-b(KE7PFFcn zr*Et@a}qXx3~ptcJ+lfhr}$<%%PM$!^(?|buF8G<5GZLmVegc|$!T}UL%CSdhh_la ziv`sv3M9vayRm7O%01E&1>j;WK=WD$(5S4r2*Ag|Ps! zc32oQowTbkyJl!29(SmBI3!(e3?sYDaG)Mugg_TsvY}*Wl2<#*20eJ(KnzT@m41t%d>!@Bk<@}!2PSn zI{tH8!xob8PhP7Wyn(+~E*RLRM>AH}Mjc<1GyG{a5Y=E1)>O-O-4~`IFJPHzrCU*T za~>8KHBwjNbY8X2h9AN@INzq2^3Fy)B$hZg3idAQ@EarL!83~ja^|xTfrdm;9BGUR z6EnkD6)E^?-KYL|phK?MX$kfwTK2?VQOw+mLXdVtRFCAi)w%lrAQuV(rG!E+s_b7^ zpJE)QI{TTkwj^?DjNjV3B+NG>VvKsih2*kHn74=WSXSQEKJw_C@ekc+Ihq`wZuEvE zhHwz@W+h1r10SQuUs?2`%adJ${k?Z)5`&-xw$bng03|ZFaodwqyqk}XIUJtixM=G} zwq$pB^&ez;>fT$^{V^1KJ%yoD@m$sDX|qfBOD9a1Tb)H8jwS0B1g!x$rM z6*+2PD2%N`>c202=BvHEx8}A$^j1vhko1(hG9Y`_A=t$w{z5q3;K}GOrP{@ree9~U z(f=}x%gu9W<;7GroYDzg?VRjjo2;#lm#<^^aqlfvN{A7Ka~_I`J@UkK`dUHM0jd=Q zCL1$j%WqEK_V)^~(#zV)4ogsA+u@n1bO71;Jqn zInm2BmJ{sIY5&&Ge7WaDq+<8`IEdp; zBoNXn^?1Q^zt6A2Y}>31u-{g|KrbtA^`Ya?-pF`~S8<#6ug4=P2;nq|6WxdiNVCmb zu@^{J#+i8&fjp)62)XL!8iu2zKA(biUlWAfW^;T+7?mUmO#Pn#*3Em>I+^24h$%OPao@6aG8G~~v$1Tp2NP1$<~ z59eSg%jvs;J1H|3=Bzz`ccbbmn;LcBg`FyP_xjsdjp@n;#^WyxmsWF;Ry6SC7FnA~ zR&G!<$_+IeLym{37`_cfn=@q%mQn(lWwF6iR5R8(HnqG*=w`(jAHALBIyb`@%GiConwj;e)m=v^eCBfy}6TL6NKa6 zu@o>In<)U4+Cs&uc7te~&XBu<3t!v5B4b-C?s{7rvLq$_BUFPV27)VlC;SLPOB zCv8ib*ku;s%?DzMfq<>oJBgWT?Fn)ych=L3<4Wh&s6~Haw*3eVB%%iG)ojNcQb&rZ z_6@U&Ir56y9hRY9WJ$bfBQ#k zed1qVFQ0bW{b#LoDt93aQ7=PUg!3l# z^Q}sbG)wD z0m^7NtnQ>lXgvOeuyE2lKh%LHF56s)3$^!^b)>hrS?FRcG=OD;wu#Fl253S21R0LQ zeNHGiKutX+T5s%)6lKo~Gxe&Ybq4m3_KqPQxxeF*l;wCcZxU%=1)J1GiF3PD;@a7l z2MA4vTjReRH`H`8yO9b3U5e4}fbn6nj)lSICVsBl@z#EFj9?HK6q0&6O{uvu>*I`S zpKp6tc3rTp(=@VK_!E+?!BwsHVc_MDvC;J_CTb%uZ{cL|>K8uv1wfS-+FK0vrW9Z| z-8*GyUd4*~3wZUW>3fPrCy9@$d{P)C4{!ldtnnyIrEGTIxv&ILoRGk6Bs`aFqNcX8 zrs=FYpy8DI%DjbF7(~tbfc<%q}pVHDChTOvS3Ki)8Ei%FS~6ORrQN~ zDrMx3>5T#ii7`DEn*$zgB^NRYSb_hMy2hQux&W-0`H9)&Z(Bq0_`o(3gzn+DVcf&> zsUZndV<>KaQ5jA3){xf}IF4G7ii?)WgG%w76~1X}36)}%Nimld&6b7#jn%eeBwt8^ zeUpjDmaJG>5ju@UDxA~)eo`7zy8hekeFdKNfV%j3J4v?qZ>N$Rz0D`XQl9cNTQ9xf zkNUraUk3&*$fE( zXa*2*M|$uRy_paN5SZ3@ECBPpfC3;{7I@&@0Ar046$KXefauik2@LN&^kX0hI+A^` zd;_AR5xT(+gz4BJfARQz*J{w~Cf1 zYUek2tZBIB;H?sMb+JK1C<g6?o+~|xK3N~LnBP%q&&7L_)mf^zYvb0(O3l5zAuoes%jXhH z1<0qOb{r&kwR4;hGpds0i|ilcj(m!EuR!z{V|QHH4GPW+h;h^Si$6ZRR_bB0?BF7Rib2*G4gHJse| z*XOk_Q!G&Dn!0m4n8Xld*JEdg`XrjCf$;jHM*F$;9Xnum&d5&q#IR#i0xCpS@p2kh z5?~-5t_{UjV5$ZTUbpza^a+-gl8YjPRR<&X!TI`kDhA?&PhIm~X%BFPTzB*uzCTcA zT8y_iWm9YBksf?0(bypLO=`WkSyThsN^88~)4GL^1_#79|KFRO<}siDsrdCZ=FN~V z&-T;y-twBMq{--~6>_I(*q54!`8o;>y!}7HmJxyP>4wv8c#9^mG60DRsXh7hb~^AM z_#c8oiLnU)9R6GfPJjLcc5zPd+W!bTjXx_UCvYO@mWNO1-7?Q+w4XCtZBxjBgW`f4*!*^Xff2&+5rvhbI0yP#nebi&x4s+P-*(eN)R_ zhAVb6)7Pa56#b}`0KwO-U18imG@!~^nV#Lu+OtYm+N(76yfEl>UE5iSO8#LuWep9O zKfDZs0_gVC3BY4<$n6E8jxuXY5Sy8FTdeBK+4W)zVY2v0FQWG`M~^;0i{xgEjs<_w z>|igJC&6oAyceudMrU6!Fo!NKR*g(b@9^vKz1W!^RMSz>H@?5*+_PSjkf80=*(j&@ z8j`%OWhbDgpb*50`D_XMoIk6}MEc!}NO(RQFEfa|G&a`*s@MW|OTqHI!~Lyfg@2L` zAi|U-|BdBdGpvh~kc}2CI9I9l8W_DyJP^P0ZJ22B*X^IBEcZIP)a1KO-s14lqAx5C zJ=-^DFGiU`%{Y0!K0fjFqg9~oqHNmp8%8i)K8zy_|JtGI^gqQ786eeZu$v)3i$Twt zu~GB6keLpbGNIvT&=x|t1hKTnnW``&@3@{Y!(BO#b!I*h9&oSvwnCs~O&LV%uwf=! z*pWYiaHwOpzsQEvbA3+DI#m%DzpprqOTiwA9U!I1(#$2lgWn8lHkm5>{?&ZKaF4;( zaMir=JmWJ(RiZV()$3iAa5F{L7tmUP%zsyr##DWd-gQ-!wWa6)K}`~>&`tWGWhbu%HMc@C0oI3Fl;I#Js@_`=w8MVK=TGp$v>r(6KNUX z`{`>`OJJ1*4DUz4!cD(3=$tTZn5)?^rA5Wi8%_aY2KMEf;ZH8wG>DErJ$a6^MO%d> zyI^|}dD_hOxN3BZirh>HpW7SZFA3mN+0^^7i7RwHs}wlLrf)~w&RUTjPMdyn$Tt`7 zBtwY75P8{_y3Lb~7hgOu&;wz#kI(e7G%%^16xM*B&Z)pOjVI_#xDsvK%EkXFs}p0x zj?`Qh*QM1tUgnHDq~g8b21GOGWisNcB@5!Un9`*r7<@S)jUvZ1XPJ`)kR;vbCMY)A zeA(-h&5=Js30~=i{ShLs^@g8|i4ye}lSN>^9|hz4PK-&>Zd7SDeap&3e?>6I#H`kJ znRQF>t+f5{N@;N*hs@3gr*q@o-TZh$cZR#$KQxV!KZN6DG{zV@cCfL(+Fa23PthrX zdN!VY!&6Kbl6e-OnXv^d%ylPTJnxZqif%#bI!mS`A?7%1!Q`c@zXhG9EhzhW#IO~a<;Wby2;9J~O!H7FD-03-!CYohtV0HTNI6-p}ZHW0;EE5)n7W%CU z*`BSy+E>^fk26wv&Xa97(y=F}1&3m*8>++t5}ayPtzeJePz8Kzh9=~1C;uv4_NLPn`kl=#_2zxL&T6MJh4E_;N zXMyEN8R)3FL_s_;@V>3UM21V-n(gWONV=mW2>pinoGWggY8!Pn){cq5)c)jO5w7_< z;NYUh(@5 zTjtnE&nkN5tL9N@D&mC^2+UfS6#!F-`PlEq+yXJI~8qhqlUuiv2#CD16 zJSVnwB#j;&(c-83%U-(XRK`Fqi(-jkkj^(v1mWyLzgLOheChT}JDBZWJDcuRoo>xq zX=x=~OUEGr#My}OA(`IXM-DETz*`+c(_pW2&HsZqZ92<%LGy+SwC_F?7DZ#E^e($w zjj_N%`a37GE4Ebj#G9_MrUQr68{ZbC)Afz#ZOzp7LB)k`>x#uymG6I}V!zl(yj6Se zUQ+-2hlm-Q!Hdb5S8mOHTipQ8lhRjYk155~_(DGSL@3M3IXVKDSJsDfD~r6vO_#ld z${#)C+PcYUFB9H}3v|ocF0yw$K?E@lhwCN2y&kJ)W{3-Cx0|HV?)~u(*QpA9=&=&@ z@59;pietPyKPphrbJOZ4v+{xHs-$7NMF4&V1L#Q_5BnMx$bt`QM-N}IV`eL9ZBmMN zu+i5SYCqeA{E+LMv6;ooh|CQ8=o_DEUpeqqpZ_-HB8;CElYihNPvYkC@BL01YkZsi zu{4;Uz1qu=Z=Ydfp+ET07spjt#BfFy=ilevq#Xx#3Etj~X4bQ6JJU(Oey%~8<)hBw zN*uP|l4rJrBi|VZpSf;Fx}RmGwoe5`4-9YGo(8h@MA!_HpZ2{;h7$ z?)kLR>Q+UhQS*tD8((*5E{Zv9 z=teIUsWg${fZp8$!iUYA4fa{*i_i?)$(UBHpph)Afxk20$Vq2?5@&RsE}!+hk`z>C zyak8)H5Q^F)~2fO`fi*8kxfEPu6EW%JBr~2X9oNSnMs_MRC6x|U?0}cLTb+#Nd=75 zcL9b(8sp^SxZn4STJu(u0_PBZD}{57J4AAKE&GmjS@jz(GqL2>0I!tk7iqt1h)O58 z7Et@t0(7Pw){mW{2rl1%F>HjkN4=|gj&Rw=w}G~rERM#&Z*QiV6q|)a(Ctgdf~6Yo z?v>%}o(l?p7ZUI+bPBvM3~kgtTI-yVo}mCNGwUKGM8T?mH>_RCef{rMX?01JQ`wl% z!%Z{qpitZC-gBCQvZ*_g+IDn^ImI?Or&#i$eb76Bs_jF~{YOjn+0;z?jx z4)m#S0J92kRfjX$nlk|R+b|MLXz}L&?-)3q3G_oSLiw=@*o>SoFti1@{4mn;eBHpG zOrho&P+Dz(Gvc=fI`J6#SQgY=*w0@y>qg2zoP@2w&7ZjDsLurzK^hw+0v5rVF#&x! zhWGdfW(t_Ew~A(Q&OMg15qO&+*(BNV^KwJIfE*uVQp$j}k`JoW?;2_m!5+MPTV(FW zVz=59yLetw#zs=R?}6sqW9U6k`?me;gSr2d!h2UxN_84^7--Nvv-*NzYykf%W`p zYb$G1r~TQIC4O#Hm%@&_-6h^~MOo zWYZw*BUGA?__{QO=nPf3_f`+wo);@&e}&q;yy_g(VqS637jT8cpiygj;P{1bplav4 zs!au&LnUoS#G>_Z6fMqfeFWP%m@JqSxTtaO3Ue0;&BYWGr=geeN)iw4^-3BLjDeUw zg%i-yuZ9rt`prl?;)%Fx<#$vrN_CqFbnuz|ePo(zGW>NUrEB(P`+Vf@XSROV*cv1Q zv@7SE1guZnJn0-RId67(Yq4Pv8BqnI2&N9vE4Csg9?K(}00MaEr#CO)da-L*SoZlxB!)Z^c;+Sa- z$}*T@lx*=&_D2pd%{GdB1-ovBIoULjWR4IM{$gvOUq68`mU^pS50aSEo#yu;yZYdq z^y$jrKcWuTNmdshwdR3jdnsAF_pZ)q<4{hhzrLQ{HpZjQ=<(F0ED3hCMk*?0%9OPx zMtp-jl5VzX4sYQ?eKRN3g=3Iv*3BjjC;E0Bf0$D_Mokc@_TSevqz9DY_X``7GZ$O+ z*Jj9*9UL-Il3&z+DMQf_r5~*~u_bO)oxNJgS{OWq*TB=fXP)%@{%yMZgz zsW-1yT(efe@1wwBK3o40uQC;LWlv*vO77GbrJsbiX0NO8vTKT&asOU-*rBwZx|?g6 zW9@5%jl3=Ad)gbw9l`j1p42))NA#|M@&~M^>7@>R6&*}`*a>2=S|q*!1qgVosV<9* zVwQM2SU;>M*`+lPIMNZ1z!++m*4z)sXuzfgvJ^cW_JF~PzQ=Prpj$$h(d*&hyYg_Y z{&g^@1s?zh4g3cD6RMxdn1@saCc17V$Tr{lZ8oT*RGy6Z-4t^DF611+sG-cr7^PWX zB5*0AYpYAStDtj|P~}jylb#$Tvrp@$V(0jw7vgfV%-GKRa_eLmmq?v{ZgoM+r+UQ9 zc5b{+1KHcdIB-E3t>Uv@vbXnrxZK#}(T#5;3If(Jy8)Qe!&4E#?yu*M)|-4?ZUY9p z`&l5mk+2G@l?i^1$Taz=VpZd*WQ||$KeLgHoOHK_sE|pdy*rFj}k3=tb{8CvDXtBp_J_L7~xlbbi+0#wR++R+yk70ttJ-O;*%b8u43{K;91j5ElR9w6bsBx_<{ zhl5xv?L8oCD%}U`iyp9%BhAx$il!w{{JV@an*q%}W6vBSG74~b4cqZ_zjG8|&wvfx zpQ$X!3027akprG{`sxFy4j;kh{zPiQfRY1*ae?F@kP{tFmrQ}P#tB=S11E2dh$j`- zM6gOB7k%W-f8V}Ju|H8ZoqL}4-v5<>muQ6Ad?rX6(P5|Zv-LX1c?Kv=&ayNx@-L=3 z>%3rmrgS*$pexpHC3nT*ccI~-7l#nEW+&$+xO2NC^3Z%uNiEtS2dIX1P2puwxIGq7 zp=M|Hs17A$`7Wd~y5QoY&FC??*xlKWDk!$zESB1t#0F@c(23U?+H+OA{>Npw8>Ur_ zAqE5f1}E!OQARS%0qAou+aV|IRm`b(?5C3Kzvh(By|=V4u@}G1*hGv%>&tpIEjgs| z3sw$Fgi#&t2e6K_ldALXB@I7$C(UwUaH5^8+3brq(=JutUZUMAl|*Oxrs2APayvp* z-<~7O7gnn}x9;AD#-xvBpcLe+dKl#QcmtQns(w)ubCpt;{dfacEY8Ru%Mt_LiOodM`rn!`^KT4Uc zyl0vxXViaIg!l=ZfnpK>4A<@@-p5_?OtW+D_=uvvtFob=7t3>RM$%g=i3@?%kIidFpepstb zLH%SO6X}PjzwIU07KF{hTNCr#)68f1UxR6*fSe`l*+ik_p*Ul2Q$ELX9;R8S$Nq>3Lh?xq(=vppoeh9h^ho9hLaG-`M{BN)4VhIioeZ}4U-IE^K2nsZCgzkfKEqwSE z{Tdnp+i=RC@h?cOdrUPzzt|j=R9{r62%e;BDRz(l5a(4GI4fSUikCI8vCQ(R6?>_! zwLYB5K2Lt%MioUS$i4rrDFkT_dnCQxx0BW^JR8D%MaJ=4dO}5tY?j?VXBYVd`vq#8 zhy7LAa;EQI#X+*TyDIoKV!S*_-4%~FU)#ZW;DzkTqW--jEo9hwF;Lva@0%HQz$4fj zTLN?r3p|k|vS2d>O)Z_2KS5jZ=-#X!weN^<{;AKK-?}-%CV;PCF^Aes!UH z@swoah05w#ewK~(`SNIq3krVc9GD?Xeq4ci=k}+VTR1(NDgQPlcLlz=Er$%eEo>B) zQZ-G~I{G@2t*>1BnCH7ukiy~m9T#~Jqh+vyU=>a_oJp*SSMr6b1p`Y?4%pU)>uJrv zamBB=T?%ZZStZ_z%fkdZ3#gijB(q?Cd9sYf|Bdm=V*Vg~w-_aV^;A;9xrLgl zsV)VBic=1uIbA405yzDY5&NJMOR+CaP+|3)E;){ICfwH_MXov}nK57e8SZ84(M)=eecF{+FTf#f zP%}S!JYU!2rF)vz1gmR$-KY+_FznqA6?*fb#JcF8V^K=a=ar1PuJ=qCLsPFcyohj@ zaT#6|yFJiB)2}&Am{)EHc)u%zHd-@S0!Jbb8F`L+dJ)jcqJvPto5k%Bj{t4;T z2A(mXrYhY!^Z@$7m}aM@I&Sp4aNs@xxQ%$QVvK?Yc{*&-skX_45sD_FX$BFdO}EL@ zvw?>xivTF(00NRlal2)thpS*#M%kuov04FP{?G8MIhm?&sdlWt7RFAC^R-JY$vy*2 z*sc6V2Qvq51Vn

  • q*aD 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

    WaGAcCZSq*&J~*s%E8?qtlvyb+ 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 z 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%0DmO`894K7{#WC*0|;&eKTA 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%0D6?-hn<#*U1mX6r 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 z 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

    M!aX^E1WT3j#5Pe9w*_B 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

    Rba%p-Y?sFq%YFn^P=&d^ug0J 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%0DXN01|a2f)O9;&`0ioUZ} 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¬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

    n5iguhRFO0aKqStL)r#3p7Oeg*6 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

    FeQc?oCk(&;hi9z$ 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

    tod?hv~x{}D7T?enO` zhw6R8xo#`@{EUW;nglIt#k_BO1o5IC5qsUd8Oj=QWr0X=T9n*y1Y?8Jd65BPn0Jaw zHFNkupg2qELu&kZ$)EW#;+;oJp;o(_uXmi#C(8=#RbncXE6=aUn3!JLa}^g}*EI4U z)2C(Qwr$(V zj&0kvZQHhO`=;vLTmOAHRe$w*=;zhlHCN9$zA=VJi*A_gQMaCb|0c-^4>&Bw1o&A0 zKrhbVK(LFASfP1s3su40ZE|>m{lsEM@$`9XB&r*?ZV~=}Z9AutL^fWPImO~3wByVep!w5QTt-MF5)PQ83}pZqY$^s7{y3@_J{AET+gSH@xd zez_cE!@=6Y)Z1{$S-LTk&z!>XNW{b1bhiCj7$?^v0|drIMTfY?5d`z{`DHy!)v{DfWLrG?2CBN zJ}GFsd(gf=akI^>`2%zBhH@tLM!~oG3H3has@3C_HU)tS0|OEuC@9>QnVFxDo#0zH zbMf@ndE_rA!>f~HzFbt+(ZqH@`uMk60Zg~cJqNXImPF>BE&B1DU@ZocEd)}KY+yui zh~P9i6-Q+)NPx++%6H{GGRf>K+F9hnzoRMIMjp07Dyb{$zD0%0D(R+u+$HNLQu76% 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

    $7EooqL+G9xeBRtC%>2CB9GSf{--QAEF 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

    AK_Bv)EC!N2FJwL&zy^?!U{ zmJMUZO&wdOenGeEaW>JYfF1{Wg0W> z;a8FHv57q61~*erL%I?85XDyU%?nUExA_ZP>{d$CUMC^`z<|y$j4mQOf)dXZP!W%# zPw!@4+>o`a;*OYxk>W&{nkC2(nPGM{6kDOKFMe22$1W1VsaKS=$!+X`o- zvh>j~-dyG^(p|*cLi*W%A*Fv+B)2T-yx8hpv|IO#{uyH_-Xpk!>jlRGLUC^@_>Zf_ z@xQC}e-48Gx1@@NnTzAU9RcdLYHF+Kd5Ik-Mf>O-2H7JcnRhk7WQTrFF8%K+dE$~FS%9ArxI4pIyF1@zoXMfN8iUBH|=KX*G*lf)^(Ha=>nr` zGC6+vhLPB!3+A%S%c?vYpgIX?yq|gbQSB9Y(tT{<=EYRK;68=LOO!3=)!1G~Oipem zn#yh_S;8S8X5$tJoK(y@y|7MU8No4UijdH2XV;9D;CFbgOzD~C@RQS0^3smwShh@Y zNLZL*p)R9!jEdRTvRiiXV7Jjsa)HfrMa*0MVb6-?USY#M8gI~v@#MDnAq?asJ50&^ zj$yOrJXvqNJcc`{#9v=gbB$WYVpj_*wXA}N5T~rL9p#pYW`Fu-DVSfVvxt#k6)lFI zvl?W}63?MfsM0Q7B=fXdiJLRCIhCZKVgJMShyBJXtGREk)VeM{gWcpNqK?0afBWfl zQM%K!(_0U$E&Lr3)-u0dKp?H|@$p&j!jpPszKBb=`7vi>e{YVu3sR%qjnxCOP8JLJ z#&vFXE<%$`39|OHJDMD^R}^d^gSsZ^U)Z@6l9SE5Z$^nPi~s?XwFq*)a!y_mV-)wG zjY3)uw=tKWm!oSwf>FXNJ{>qPHdB83uH=nh(E~Y?wSYW3NH$_*!aaWJ z+~C4`bKZ5O$-b!>q6aXDb)O1TGc#7!Es7rMJ0yy=JKs>T(q!a!*r(F)){n{ZxC86o zC=G;aezsmYZar|D)Ia?sMzoC2LkfQ<=?gP$<&;+NH*2{9tzSfgQ6S(61gDg97DPAJ z0xpps-0!%Q*9VAam0ZvjG$mXS|Ju4^(K&H*BVl(Jl?>6=0uab39x(?`Czh_^jgpO< zXMt}6y@?{QW$wYGKrmoAH>~_oP!Sn->&hr{V$xk9%j6KXFD;&voItfutUDw167;cgT{XCAJ8Hdz>Y@n4zMK98KX2JXbQ8jOT1+h z-qA9)nr|oacG>7=!^!98+1=cN`#(ZBKE`VsD>j}JdsHoL_E4EA0K}Z;ifX^MuWJp0 zl{BCXZVAK`!3S z*_3-xc~irqEk2@?=cv#u5W7+-&JjJxasc5DnOtgIXrmE4iCxjs|n4r_j`7mG9byn(jM` z*X47&Be3!|kUK-Kn8V!~x~0t?R1ZX28!2xZUpAh?Q_Ed9SScfRhM?~Ly6@++kD4oD z8j_P(QN$?aZRRN3<}y@S#ucg8vA-RlAsia;I9Pn2sRptjDp`vO+gld`=4p~3I|elF%q z0^OqwXsc=(7mAuoc-6_Xt5?nHSaIuax^%s#f_P}NKc*O2F6uiut^cN2xOtfQ2P}}n z=6qq2S~aKhN_{S8;yBaVoyAy3DnxfW!Afk`EcumQcg1@S3 zyLDAx(exCwM|R#nkd*OERYBV z2em*ZyQs+l<-{H|Wqri>Pd-n5{XtSmzv2|*G|#GNX7H=iFV11E#LBje-&+_Z5W=~s=JgNZ52WdV4=eAuviamh zCc~crm7+Bcou5?+$Q`w)!j1^TBxXDMS7dyhhAW*2yvp z7BM%Jggsv>U|S4Qxr_m9GP`*to*b4`-d&;%0DcuBwkL%Mn-ididUtn%*KPuuu=6&j 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%0ACn~#S6E)$L{Z)&hMLe251ZUJPaWp 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

    tCIapt&iE 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

    1p2kzRCt~PZ+NC{Q`4u^?;pmW|Km+) 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 z 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

    er#OpE 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

    C# zuQpuchR*s{65zsJ6?Hfi%L|nsdE-c*=9MLh!3$%N4z^qOOeFsnc_S<=EF}LtIg2}r zhJu@b?rsCqNh3_*uL3Ebj%9|CuTmnx-z7+LM||_0P<3dmh?Yck*lL(=Oj34o?Yqd} zs{0pN${5qj`wET z4sWS!(giaEi@|tL;l@PW@UJxN^_Hq>*7htn)p7Axlcul52CV9Qf%64Z$x4}W^ItHQ ziJVR1$Z0QQloFGlPAp1-*zmY^zK@`fbV!fMD^nRMwMcsL#etABLK3fVAzfSX z?!oXK3xdd(osz=sUfr8|I$xbi5D)XigVDEh5vSw+Rc${D=MD_3{&8I$jhA}?aWNwv z$lpw__O_comniyVW8?nAR&`KZ%MbJPotFyiYwM4+isM@S8efO~HJ_`R(DtKfq8XC8 zkWUJYbyltyde+u@Tpfkd8x`rM94u73d0io_U;Mj1m=nfQ9u9LSe|_NCNS3J~RjGoe zsfxP4@{k7x4k?dt9CvWj2LvFi|0Z2fItVaZ)`6vN$RRtPLqpIt(HQW6OuyIk zKzMiM5NC$FxHO~od;!DWJH!~=V*nu+5Dh@Q9?n1kXL60X-4lz0ar5K=A?fcj(k~J8 zR-gl#9X2+U@HMY@`D?)}yyRc6NI5*4+~AUWsG_3M5@p$Fcc1FxBZ6!l)6||24GrZ2 zNXyuODSVY|A*D#U!|##L+dPe}X1t^e!Vov=`*N-}IUDX^s*13Tl|B2BO;Q&5Ea`pQ z6HTJITlO=5emiH+=}ZtzC1-8;5f@mV6FjkO_@37PZzk`YN?q0lnLy~S^6wK`>?dW1 z)t1!1mC8H98SA!uLXu3E#F2DU=K}p((dK!Q{3YA&)j6ssEKiRI9LijuNlMyMClb#7 zp_+e@<3T_%f?=#?P{Y@WmMbvnl(c^Yu@lqt6V|OCsK0pebcJBbBgB{1$2IVHjJM3TR)`q!W1+_o#UZo}%NI+|Mb$zgAVuY;VfAFRyt)Fnp-z<2 zJreud4;)#NzSTai(I?ug=iXn|W)FMjBu$p>uF{yFe`}pr4^K8zk|6I6g;7DEKtR}& zc1Wq$gHve3dG!j`)c5|0$q#maKInZC(wc_r1M8ap=#}!)4$9YmwCxmb+k_?kwyS^| zq~DsWoAu>MqEUTRL=MFp7yZulz*kr&hBVmh`;}8rCaHynx|*Fdw=M~%m*UbA_r%=c zri=Z%4!@N!$DtQ&eByBWH#{dbN^j9os(mKb#)yU%iBhZzF+t?xjWBb!q?$LkpDKE= zMBfCd($8k3d3=j`6|C{_dS+)J;zLECD{^&>)5xr|ieMu3iD~!vkhjf`*$rl6j`S1G zi7Ts7dERsCX{Nd)1k(rQ@ ziEe|{%D<>`aVsNhw|G6t8RU8IPsgY2_Sur2PLz7RBav~#gv!mt-1~*Dad|CRrBpRm z`{hd-O5_}vA^{w<4p{HhKtF4ZyL8|@O~9}#_!#F0^$A>5vg5CDoPpMXT%eZ$7SayD zX{1#Hj(v6ZTildgtZutz7!Zp_h;2LSHUYVa5Yn!PSSY~-;Q@3PETlm^Rm3*>&8S_V zujv>Tjar3DW5MeLz}M$tk8mR06x=WSa5Nz^>Rj;JzZ~jgnK1DJFrOc2tOmR-2WCkn z4o*G(0XOEDIyZEsf{V&;BRjZb7E3Rz4%kAE&QcW=3Y|AE^a_^mj)^jzUH>Hi0#mz| zT=v`1Am^3NoXE!_+eO+`a6na{ain*?<0&PcbLV@Db%@3%W#)o`bqWxaifu+pk2Dzi0f--;F zpAmNire<=unj|R%jRdUdRZrYjYJc03{P$PBp=A=~ZFul~$9o%-LfEH8N>g5kBr4^vyvb_9FfI-COw$7|CTPO`=4>OtxAbvo?({f;v(8648f= zO{dO<_&#qKEd8zmM=W$-M9>zw-PUiVo{^J?N9KkLDKD78Gso@WY#Gl&dYsPagp~SV zZl9y7hCEX@M4f7Fb}8Q?6Pyqa+Eq%9+7y!s-0*20yL;}u-mcNAqzb-T<4b?xDvzvH zgm@U*^!{P{{AsVI+azAH9AX9)ToxzY;OaV>x|-P;=7OwSM+OQwOVrCAMDX2xo37y_ z!_rYwy8q&1uNKrezr$AF_)#ib?a~tO5a#Yk8z-_(>f$H@-%%Ekp;8yrbUdiHfyjBz z7f>Uy5&C=0B{uLXQ*dG5CziM^m4VN#d4siSTyim~m5+J3*tn`qpi`pyQ{;^9omO>f zYd$5*c4d=w5O&~!PsmuvifKaN0sW^V!iTvf(XC@nEfKGT$J^T@!NvSDrb2Z4Pdh`i z@UceCt2b%-T^=+S-)8hVbjv^Me6uaAbQ|~n2dWVbLy7dcwC0yrQAu6n>%gd?cIsdbv=hbr0kVYe0^`op5ln zS8E*8fqDU1+T5Rwv*rLuSd2JobTh`r=2#dxY(?aN0Y@F+0&)UK#Kuhx=S-z#G&t&D zyNa)ApKW4q$`hSAsFu)QRg#G}6feCPj45>%wbdG4m(Ms;F@(xSoqZ$3wy9?%tUYIm zIEX-Ey}a?zAz_+py9fz;gj_ zm00W(X^wzMN2>l?KNN9X%+W`i?`Rene+Qx!$l(8`8oB+XIs&x z?=|x+s=tP%&X!||B7{vcZl5*i4MZu;MY`UbG!)f_ZND8JH#CwFy5{u5o7tJD&l`WU zz;`jspp6!w|Vkl)UO>D^}{+o1{8DRH{)??eB$raN^SNKMKt$r0MPeSR} z-0kx0z)&Nftig$1;(5gK)`wdxQcPw=66PlQ`Hx>j6#rxSM`Wae>NkVlNO48-cSRDF zXDyzPMd46|MP59z^(4)yaOdH{v=!O-nn&e$l!&gkpY-|aC-Ki;ny3exW^sp8@&?z7 z^AgZDhVUfhcT;~C;L%F-czgLic=*G?DTM$R4`suR`_RQN8p?|C#oe=47RtkwANZWI z-ZwV$&dxr!N1D2qb5sS~5 zcW472waDFj>=hPPR;oz)$br=4C4C*g1{)%k@ooD)&3dnh+q4cDKG~*a{v{!ADOJE` zz0~s6(Po-UbhZ*Ce6~?_zTG30lH9hYDC=Qxbkx~X8GguAG(9{iYwLE7=mlxVShn&l zj3FgBa=m3UMwZyoEXsz-n7HcNinFo7ToIr4h&5G&53mFu?z*TKJ=#LnoeQ{c)lKQJ zP(6G!?M6SQcK-Y0TwR-k*-iep@3bX9zf}716_}4;9N-#lU-FqriSYi-=~WzMH= z=4uVKBaZ3^;hpa+>sFm3P`5`NBUJ{J%ia-bELw=J2E;5rye#3*t5027>R&Lnh|>Ag za>i@6edA*ytS-{`R-L>2LhEuYbqwlRfL0a}oCr`fK&iUdf6B>WieH~w8r%{mQ`UY= zwlB+q|G8J@4lh~hU6H5~D4S&~jK42{j{hlkUKi`)DiFiNX#{~M_kI7`$-_?|k?tO5 zF*B+4HGkh#>ty%$sZXBA8ZpnKyQ7{#Z$=)BQ;^^phbN8dwd%#bsZMa3Y@j1!7*%=L z5~9+pus~tjdP@0YqR4yZ+>_ZWdmXmMFPyqhi@7r=`PaVJz=+c-%4*uN+#QwC`qOfJ zjJe=G0^Rb-U?dI;JWJC&sy-SeWs>~(T9tceA-8gIxTc%3w>((ww$a}YZp{y`KRRv6BSG}aC;geYCy&AB%7V7T%D@*g90a<;UEG(8t&WEpFz=jZi$hM;YGjSvR@V;<&idzsF6&g?*xy7R z{OclO;yKH(y30iV_#Pj9%yt?3!aiwmz}QN2ooP(@xusND4;770iiZlMZj{qYz@PLW zBz9qja~DzXHkDkBPnl`-EI+MDVErh9*l=cTa3GWOY6IJ$SL~9hfLEN;H9{o6zG(%3KH|w=P5^mHhlv5a?{30 zSd%-gf|Msd3w&JZGe4e_q5k1<(b188))>*s06V!kJQhGl+@V zmsSU%lB(!>g)5Bh|JRRuMZv88!=b>|jHBjP34$)&<$wtQ*suq(gc#(xfUw+>|2R`a zIIqEdAhoev8ilFi$KVKwz()nl+BSxRP^pJN7Pq+s!`*Lvb%QYNRe~O<4vZbk1_n^| zX9&!M9+U=EfjxB7ijIl*prk$q!bN$UfIc1>gZ z^)oF$^i@SQ?GQ3x_YOn zywFR|1*92q-0vd7ZG)>t_odE95zC^aKdE~M$y6YxyzaB6!lo~>Rt4z8GhWlRG?jjz zd_i?Vcn51YUDA|FZLP}r1G{Fn#O<_5|6^5jNj;FU+|&FY{dcScFJ3Jq7Rgme{4+iB z{M!IzYrVc>$T1X=hTYk%$k{z_OGqoz*}Zt(4r6gqm^FlX8b@;zeqxjkky)HhHJxt_cXeDrLrkSM@#8s~+aXm{V9C-+Rb8h6R86)jR>Y>ZIV-!9;T4YJ2a(BA#xQ zA4f)Wk`^=~py#mrl8-rtK)SG^vB2egL~z?TV2DJ*@@S$nx^? zojZ0nT>_#oazpcE#sfdAGQD<7Yc<9_^xy9yl;ma!h3YSI5!Ba53BW(52t$Y3wY)j+ zuQ|B4@|oE=W1Yi}_^8KlChPs1aAd5QQ+^;pceGb{z@K~A*=)qvM?_oZCq#hc?wM1# zw#ew|l4|KYNEJiS17XY$g`QOh%z^957X89N}9e^;d8OJm}!Lcn=J+0wyX~S?< z6R02SK!*yr#DF4IKZRSOLHm^&HhU_&hI)s$j$COrBLtc_O>m-xQ^UInI{beD;0rLF zz|j4lTNTMd<=lVMHz5eLMSNnaEW`h`W=4nZ2yy^YxvugC5MbNT2rx%=AB_JWA7Ko- zs8}o)v8F{D`oRTFdousD&P2tyi>og#$zf8!$V&l#Bk4> zY7-Lg^cV;U%64E7JuH2pV$r;TI-d+G^(lZJ!7+QNMyNiqx9l~wO4Gu0_dG-QQ{KEm zU=Xn!I}n!!Yq)v1#Y&X=)2*qU+YwK z5{UcWXp>~4o+^7oR=xk@f0A~pRNBO6Ke-21Coe?KJ;)+&tjPN-dhLM+>({}nT2F{Z zvp*BBd=@};lxA!qSw;<|I-2pyTH+ms#(#X{p&>V);rEAPbo94_F=Sw;PP>L@T|r@C z(TzNSHrZ}AqT|<=PMng=z0=ZTLT}#)o!49ULNp4r8W_1qB`q}lv`Uw0@(5u{%aCki z*Rtrc3yyh$Xx`m1M&1)kyvWQ(JuXkpil|yY*Km%i?yW2sZ^!_q$KukrT~Fi|ad7HL zfyV6a-=|}X2x&h~-q}yYR*OCNl=!FOw@`hzSTeHlKI?QdLg1t|`j$PhL=7U5w>b$6 zzV%8j;cKmkw|CM5|jzGL+A^M+QqOLLkC)fTL>yx|!Y6+lJZAR#Bkm3GnBMz{H*N<>^ zxSxhCaW3aL4+vmbIRmYi1#xD$?G})YtdVXWNUv25cpMY(o>VzeMVnC~z}^bVhY9D# ztB35H$0eQtO22vCnl=-reb^e@bVhL0rl|+8AW6Wh0N%geu*ZNC1sb0LEZ_>(ZvN07K{3%Jn z7LH=o+&p`Y0I_~|lwy^c8Pc=l^~2Cx6k;_K zbzb7wU)iindpy+_xS9PtQYBkt{rYnLrqSG%v^xrj5$x_t#@*ta! ziUOJ~<0#>NbQW@o%FWiauNjszdM6Iq9uGKH?%;Sf>hSNFfn(&*5T6BUjV9lrySmo$ zmX>C`Rf1<$xIc}`655MYFN%kIQI9*qB;`o+j%skEp;2Fmw$gG*)!PoqzM7 zrEvUz8VGXI_FSbOh-y>c@UV{VL{hr68H3jHa8qCHTqR+OKJ6|Zm0N6Xo+W(owy6lL zU@BE#;dZy3ol~J@IUW*tK*(I~izDLk)cT7TWmBa`)1P5Rw0RQvtE<~%d}4&FI-9Y@Zyjrj@JGXWumPK}7FhSnmT*cmkmx z+h3`Al?dz&b_mLtPpth?p7{fwu{&u`Xp7dj*`e3!d6>r0F6mvR%2RmsyF;vIP{&otl z!Ca#RYSF3THExLK=z-*~FZppDL@Ba16&gYXCm5(loY5xem`0Rdn zH80pY#JKl6sYOogZRdSYl;mMp;$oL%G=cO{jHy#{S)q^c#0y!u?!e!08c8=~irJLa ztVoaTT*?uw_98OFGRTZ8gn#C}vB~y}dyCJabaZzBb6BBp7FL_AJo`Lq*13gUlb7HX zLz*t~0VV+iCFAZbvkna#;-K(w2`Q}`aUiY*eCW%Bu@OhUUa0hZ{vRKhscr^cF9|Ru z55NGdab`mLi>o>U9Vv1ZY@EPo1&|>25{*BvG^>K#0LTWW*2o0iRoINWASgB@07(|0EQlBBq` z=O?uh=SN2I+Dwc_pc8j=F$bH(#HSN2os&x8siN=Pku&p^fs!0w;+1v0_L+5BpBifp z$fWskmN&*w@SQ>5g(23#V!%w6M4>;2E zghSRRX3hF9#wx8()|*%l{q$5Ak>7?BR)S49Ed)QH?3V=_LEX6$bb$D2=S}SQb`QZe z^C`SramnBMzMrkZmtQg=q-vK^YhIuW00Kjp4|7I z71|3cZ0W=*dE}|@A@hw1GbYNbS*Y5_q&U4+zWZU63DS7(v)4$MjN?U~r%d+U4SP8i z^L}^a+NfeCYRn8aHMUC)O< zBiC7kGB1;rka5d?_ZWqgLsIN(4Yw5KA1&yP*K-!>>W+OxB|KVBrTIn>Z9gmwH4*Rr zvYyWx&r?K7uX;~-=*Oq580B#~E#d$oEQsR01V@(!9+=NAx-}3$Jr4Ek&8liR$tF;A z1CmhFOoNbRSP(#CG;w<(0Dl0R*AghNVTc9xCO~ee2W|;x!)8&N0Exx9l>tV>299|T z{EilY*D^JH&km=0p#*MeZOW^V27+=A$S0E+YZ7Ab5M(pXb~zC61AQ}?+Gg5kFO~|rpjs$<+A9R^lVVz zRC`K#a+E8bO}R+sIHx%Gdt1lz=g~rN(}zz>cNCI0#o`0RvJPR>%44RV%loh>RSz9; zW(zHzVE-}3eiYtB5M8^H=9;e)h5f5=4S^RNbT7q>9{Y|au~a;5IKLR1HZpq8%SorS zN~-|H!z!MgNmqVmT%H#>4BG)Nua&swb{o0;ac~yrfm3+Z*eQH4`6rQ7mXHuxji}I3K0}f>;8pe`F5AMa~P5u8zW2VUPu$jK-@y#1V;$`gnlI7BB#6=54&B#x6>h) z)kP^NhtOq7*XEWll-?(9ge1NfWHqd%LlIKQR?prUqHWUYq}(;f)UqcL8uV;<(F1bX zqL;J9Nl}>ib^ma(EyEoh7X1&=8_2>UQLwK?7=H9-iKvj)F|RFc92K#3e;HW7gQao0 zsL^*dHc`E!v|Vmn&_!@Jhtet%nq3@rs=dyv0Ph7^|bp^X!twruQtw653NKJ|zen3(kbV2lW_ z31La9$#dCz%p^2E^ z1Dpd>G9XAH3kFPEWIqXrb#R9Hv9|9a`@#4K@Elu0(8ZeZXHIGo4@Lw&#$glD4kk@c zyoVrAwHUz6N{+j-zTo-%!L=Gd5mQBC!s~nnF00WL_g~e^SD4)T0kJTxgoovmu2SI# zMcZGoMx3PTqP<%z(9!_Hf2g(lN$6M+;dkD?UNMEuN0=W~_5Kbo5tR+-8-4Mdlfmg@ zU&ILAvJf;fF2<@TAf%cl-ma1>%^(M+{{Rwf3{xvj!N7O)nidx+M=5ntg{7MLm$Byi zT_y>Js|T+XJ_B?GG?yNrh_~IC5)+(WkL#-6A_C-T3nWr+%-C2INWkPBqV1}xKl$M(Xv}HZKoj= zowOJ^4*B?qPd14-t$c4-LWxDKlqtU>Dcnkjqw#5qgz6RNSBy)M@}UI!kiamD1D-q9 zuFb#~GWR2%>?w@+U&tF5VG8*#0eXgd%H4sh-DT=dyWcXf3Y%~T{@N=E3e{^*qK%rR zb;hE}vBJ(=X*H_~h7U}HMd!}1zxdwu#Eu+&8#!Gwm&U6ldC?|P=35GN`6fNKPp!lJ znDvi?@i|-6-8+5Rm;hNt^9SmWt)v6O0zAS#a#~;YxxNmTII-1!sh6FEEU1y~z2`YU z(2PT-;x7oLTp@cJzrLP+G|mW!QVjf7@KN6K&|Y>5&aU_L+mBywOID`K7YzQ!RIUzp z>QA3Fx`mAjOkYq-W?mtWhdE_p)2;``w*1MRPkLXjQeoU~oxXLOquzC%EuUH>k(YO` zLn%ED*o>^98Z0~UF?kpiRuIL6^+cZIXTW!OXU+H{9KSZa5&YhNZ3<|rffa}v&SVu; zd7T#!c0iCx5qeMgG0)}6^7Ke1(_u} zmfopl$XQsx3q9Q-ldw8Ywm5C8#HN1w6V z8E!itun1ohd}WzgKiD8`ZmgnVN-d?kgDmg0oI19*f6Y$UWQiH>Wuu!|rz?C6@%{X= z!U>;Zh5%}(QDG#Cuo?5~{^>{N`ml$NjVKj<$ z*rL5l<07&B&Rj9sdrs^o^=`T{Q{tbGxYZA2hOFP4@$2!{Z z{EYt>k~)xdOF515sTs-~)u5h-k6s6Ii?_mx_@le5GJH`J;Ru9L%6!hhQST)45N_bf z1p^)MyURiMq8bKZ#-u0s`7HuKgy?P1HNfVBi3LzS2oF-kQ{T+U@toCZjGawY7bXT~ zCd6L@G|XTl0uUtSbPrZHfpQ*5CXEp_%J6x4{AY{tlb;80?7^D_;d73`w=k6e(qUvEBMT4NBoK}X zv7%eEvqVB4B%mlvFxMeztF23R8)u~nmT!=fwYDD8P6rn+D)nQnM9qkhMK{GOK@CrI zj~A~IPtH9yys54EXs zg4vY|oNV0=q_K_3noT1qZ(ek#2`1*cDWDfU?a67~X%Lz2tVtUA8U$f2_T=!1mkl!1 zoA`AZI6Lo-L^@AFMJw!{3%@7-qjIBJbZ?fHRtwnH1q*7+`o;c;Np<>1U0NiQGdrY- zZK9{Ibm|5P%j+L7F35xO;YMx+2Iqo%k;21Aj^q2TF-keEJ9iS>MU;%TgqU^xx(GA* zp6Q?z9^N>T-|bZ;SI(cKC!Lof>(u1n$`FW6l_Fo^SNtCGb?|BTTcxIh?;(%a?q;yp zJ1$GFp;~=-;&_sl{LbqHGM~Rxxgkl1YvPWpTnWrw@zN-kP(i!;2}i@AR|mNevSjU7 zx>T5VOjh(?b&@w8VSh5dO$f;XnZoPhiKLsM35~SNqD&$ybPN`_)%$|Ig=@kyfB!KT zvukZ}t5ctS9~4A$ebzRXyj&&wb{2{BqS9oQrU0!O}K; zFd$We;S3PNW8#6r%IOUY!rFCDeN-E-ZZurP&sM;QZd4di!h&B*DggGbHwH5nLT~C$ z6Ty5Q;B#lda7O&Y2sj1+Vhh42Gy%^Pt)cQn{&B>wOh3Svg%b=KK=XK-3m$dAnFAMi zw7(5@2>=WZ6+NKxKsGoFD5fUhA_9&8?SQ=stY{_hE|i%d1p=TE|4nk>(+20l$UVb* zrRApU49V^irG80rGF+jbWRr~2*=e6q4dj zm71(C+}U#G@(HCY`MI)9A$y$?FmoOp%F~}^`^eI_Fg+^y`O;z@43dPuOYR6;%pR>%T;eFd}5qB%zJz(ujVqkdX@ifl!=N{zk>!`8P zM+Ow+B;N*+>cR$$>~uvK;WZP0fJau78%$O8=RfGy%zTl0)@BG9FZ;w-!&)P9?drV> zWb75x+sa2{hLY~e7@kUFj@;!ra&_yMh`m^0wkbS2^5fBflP zw{d}7l*v@{sWky{>3hq6&<|(5Ak2nFOmc#SuhiAaSO@jBS0-QEIo55t4k;WE4P-kN ze1}Fe=49FYDjdsh*=76A`vSH-jEk3~s(5hu#EQyZ{c&XLHuDw@+ewk@wU6rI5GYys zj|g~N0*x%4QssqXc!}FF`%ypq;%V41y{aT`G;$MiY3o`d^NzzH_qy47b>bCZZm#@9Q zkll8}CVx+rym;NU@)JJ2Z=*Q(oLyw?(I#8Ni|#nc5D}Al=H~E)M@|J_nG!!*SOYkv z+Enp?3^jK405nPJK$xYE&1=^sFtw@eZbhQ7mQ#S zE7u6nUVxaXungYfiKlnsO;~{oI-q+uhy5QBg)fOO0Mqd`Rl{$L-UM6E1R!)1Ru%SO z{lMyEhUjPpD;4l`HNXc!c@XA+Ux64XysZ^zTmmO{`Pk!>fOo?)_mGs@xnCDbc6)j`hT3MzlS`fm8eQ^GTkHF&ASBRn~ zbE=-!`FH|C)0{5@{U+AN6dRO!V5eU-d_B*+Lj7l8Hv&&Ocf1^<~Aqe+C=rt63)G<{Y{!bzIW*%pZ9w zkgu}(N7CSQa=?D0zI~5@x4VLQyx?kDPOEh4=6(Ly^yNDZ9M8+NbGPKQ{>elTmRs>@ zM^QZ1v%rkt^x56cNBlmn)y*02TfyaK3J$KC`LY?lC|lM~Aj>A^(tL*@P9nxheYp^r zsxJA)&VG+B(=&Tu9d$0a989W|R;R4pw|DKR{iw1_AN8L0b)?xoM=)PYsUMG9!7a0w zb_$8Z=1w=itpz@J_4E-RCg16}_`3O)YWfE*A#*6>v2^wjn_At7;LA6Q>o>yPsu|q| zP7Omp-nV|OY22q+@;T>I-KUlTUoaf~pUSZWv43AQP6yXz?4yQ#N4?&E8_ORt&~+;{ zNeTPOq#MG+5l}}%>n9`1y8AX`UVFubUvCG6{jC5GHAasvHS$qcVjai4QPt>?O+Kw! zgof$tF#n5!QDo$@EQ(JzMM?H+hq}mZV$;#KH>V%QK4n>0lPAmy?k90H`2H%?4c`A; zx?;S|R*=k+`YyHRxu>Cz7%|&YVjZyozgs<6Q2=QJm}cnz1QA4PAbbF30w%99JeisW zk1G6EPR8gg=zZXCikJTZ#J~f8gj(XoyA+#i0rWru(xq^Y_g6WQqoRvl<1&Z{?OU z6^)NX)j}mBrQb8xxRy=`M|fBoSDKF z!;=}YO|?IaK?GCWni82*pKh?prPQy`$Z7djR_nMxQ;@wrv>p$IIlZ*!X{>@h3~qBD z`_UoH8lX(l6s5|usoFVw9EDeHU;HOg6mTUcCr^RsJIJR+dPsXQj;+6g?;C_~2M{rE zvAeU|dM460K1G-w0E0xiOs~<9$D%f64r;odya}Lm^ zWqjoVwyMQjkpA*&#lOQugfWh}itjgHB*zwV)>f%uy}rbA$d3rBacu`u+Bv2m;-C5o zTn?Sb94<0xVajjs(uTcCcDGIxZ2ZhfeEBvo6x(5J%vWFf&5%+zRelbj5Lo)u+1K~O zXk4zR3O(k|2q%GT%rTv;*g1$Kiy1GqHn*B{Dn;0J)T-adLgZN*0uf8YI{yIa-0?NZ08s;7?6GLts9HU43L z)m3p*a1rCjh;b{63Ou(#Yc`zGm@H?ukvJ*wk00Y4-%nL789*PHcX3dnY_J%JoOGiY z4(=9}sXT!rNjo+8Iy03$e}_KAS%CEPskYqrD-L1wm&_VFE12J>@NouaZApBfsl@N$%(U^e=GNyplcLjQj4Ie*(4!B) zDus7|X$K5v?u}@wsoq9D3m}{aWXB$C0_6g{*&Xlx1TMa39{jC8j0}SDR10vrt>SYh z1o~XO1_`SVdJb@N!*`yhXmh*+jrm_7MFgEiUL+LV84-3iPw2maP2CKzpED>1d%Rh`g=!LfVX-_$Egn^8Bk zF377l2D9{jl}nGl%}I@T#?Ict+OY`{S2x^v!sV%;Lb7ufqn_KGDx?~sr%&S*2=U$a z?d_R-s!`r@`Q1WO(RJ|fbc{rVo}3@k9V@Or22;cG^*}!%7Px6RImH*_+>Wm*c zFMbP@fD8<57`gDXK#rY4Dy8T4%bhQ^_;HUpwc@cfZ{IYzIFY?hMP&@G> zc||D2J$|*)+xZb1j`7XD@C%L7y4s5&(mKcbFiF+wX;(BIo^OIjpC8zLaSrua`G5tisBd zV+7^bLv>%=akcZ)rJw3GcdszjCs9XtdB*jw9>2cqZ+XTjH9g@K=$CzQxH|6wpZ)sB zT#TTh00oSvxDH%2gVJ51LeK4PJ<2HpqP+@FWDLG~ngJ3Hd?*0B0?(L0=T5;4AU}{@ zWxRNEe1OOiTN_z{kq&AB`3RhL&54{tF1kVHC8%8j3gWVq|4l-X!Eb@1{|kZ6$w-k8bJ z)a9BOD=C4#%^jy<+7xFDf2CGY>Oa6#K(=Kx;Nr-l{?!ZpBAfqXN%@#ootzN2-FvAx zRBZe@uQHRVLC9lMdTyJob~)Jjz|qp}Jl#Df_EvY*v!|Hdj(;J)_Xl$tDM%cuZhaWp zByzn7a*w;t&E=&7^~kEcn@RSx0z{$zC~Gyi!P&*`0Adfplc&ozQ?M=^iL?Mw#Io zeJ6fIzf+%T8=HNt-BhnJNzop!c40`l;eJ0LOmC``&ZIUHM|JOzpyTJ33Yoq8{)hWt zd9Ev)7HB>3j-y;ZoWCYlGwM=YU-v?Z(3d%F0P~NJz4Xwhlb(FLUv@6#o`vkacgN9> ztp9K80*Esf#sdqO`knlXeE&@*+svr;qsezzl0t($6;?ihMLAJR@2ylmn&cUs!|dDQu=yTl5}-!r}DP z2Si1<6ch5TaAZt$qR)lu%NysPa1h{N1xEK(1K zT+_WONE^t?wFZ(D(kB0fd`BTu{wHt;h=V(-`2cA0!1&gPN7&!(L{ot%+=U!aYKY!4 z_`C=D$FUW1z2YfvptXx2h_n|-n6YOaOlfcA@f^KFC>%!)# zHwP`LUqehj&%aA!so$D3DKq!AZ*jfiBzZoX=FwlC--tHrqWud}W%)M zw!g-IvtRkd{0q_QNc}0hohil1zR3_pM$boJ&6u`NQX23vYR5{%xT7%slKbc?Q68cl z;UIgxK-(eqF5hX>YL5H!Zu9`;LDq}F(ZpAUYkOf2=;c3M|5ohgOR@0vM(&L9T-{W7 zDWk7@aGc9ZMRuQZYk05ivPz>IE+=a^YgYsj&!VH(agvgHccoqL{BinG(iLkBWH1vO zcnEcm^$6XR;$3!a5GyCGwhaH-)8?GEXI!Iim_A4!lpHLY#4VZAm%yDXzstl+8WYUmh9x9z|cZi2`6JZP97V-s(NCT zfLN1rfUK+S#8kc;%;fa(}W@wnc&xl#>{2ca3>(}B#i}l;X#{K3oqWn;UG$utO~UTS@aeOvS>(e#5&a^y z`zxjKZ>zTqu%X77LXAG{ch zU@oC;_;UhafPl>p$OV?MsLJHPl7)&Rj|*-88gYBl6r& zB>6@7@Q5MJ8#5{1pS&*|^EC{~@?THy|m|(&p zIRu75ny?yazZFMZc{}ygVDRRLckv%Tu>LT~RxKPd&##mwMtn2HwWEdYsIH(4{p*-Dn)&!>KRK2Jb08rZ$A+gCCoI zsV*01yJ{7`Gwu-!qM=ktCSrOS>$Q-HbNyi8<>aY8!`5H8jPkW&zG$ zIMYf%)quGHo2MA~&ZMWJl>xMxRTzKDUIOQW4}d&nR0VU&02xs*K#aoRz1wi6L@*a0 zJjd4*DC_Y78qF;5tr~v((HhGE>Ju3L1HQ2YrsW2ziuquXvSMz*#PqiFtDg~aSUVq` zNzc+o=ISfA0B0>hShk@0%JYK`#)xC@sXvSqlz&5l{z`tDX-*T*UT^$dC-0_d6_mw( zBjkhvc^5P_FAdfq30Q4&xjb;Ok#Yh*mO@!6UXKc5|0Q+z)jO7-&K{ju0OW}0=DqGi zvDGt6hv|_AV^j2lJaoYtnh_KM1HZ~5jMI&jD&hjYD`4pK-KKMT$DAj{%5z&%n|c8m zDZD5AeQdFPtH>4F*r%!5z3w4NnracKjGA~jn~>V92lb*+!UfqYaX zZw70Bmu}F`WR5P3=dP?a;~mGHZ6`rj8}=JaZUc3Nmt~UH32L?vA)nh`uiS8kuLt%D zPNL<0%BvPa&xQGRmIs1|V;&IQvw3nM4CjToW{3YYx$R{bEsv@ug2Jmc!R+)OFo{uH zC@+I&oxZfJ9jSM2H#zN@ol&;4(t1eujjWZm1{SRN>#K;xY3!$)AKKSe1;=C5eU{r{ zDs_o9+&tB~Jq0kpdWvTTt_V*f%gzfX)`b!1?g}04UYN<2oRf?~GkSEHQtn~J3^>KX#dF>V0!xMl(V{&L2|ynWz?a41^E=S|*n;}*9T-ylu7i=IY6 z?sG|GrvRd+zkXBl#3u7+Uvdi0Xh%Il0o=f_$E&l1jq15$Hc~>R&lFF9;YuOhoXv|d zmA?$w61DYdvo=lNr|TvDBKb+Gn#Iut4vVjK#W*LH;Pb!35ur~hD$b~NY*!L{g=_w@ z#aHl(XVzJiycVx3?T0UcQ5WV*;`YWDe08S;*X#cp9vFZB$K3y~`+-Fg)c^)s zVIvSgQvp35BH5%@QBS zSX(++}o zy?f`Ch3a&f|Elr=1;)`}+VZol;6sHKe(D#j-Q~kV)L%yL;$E~VwH!LsLn}%{eaiR@ z(x`!P0hy0GyK4>bU$hUe6=n8YEb6&N2%UlOk}q;yyTMRWpFsKHLggr?*X>mJE-CM` z2AJqV$3r1w+74cWxT6ge-wpRQWkphLMc3oPBc1_DK4!8q$R9+YA2YiPaUB6PXtg3;>);qWM;1F7*;UqGdS>^meyCV+4TCivFR##qnM z@=a}5#kupfSHDbyj3=MWZW`**h2<*#*jf~LLE$u%qEv8d`H>-4(_Zn(jvdkDhjc$D zH>f}FX7NAP5LP$M7|k+?o^Z&poMVF$BLX3eK;VqfTPPR+=|GS3g^#hf!i+ybs@=+A z!MJ}R4@pkb&nyvaremvjd%8D#4KGBrWz5qLSM>Lu71`=gg2V7;ebIM7jfHS}cYd9P znQiG=vQ4AYiAL*>d#WIG@|_!9*l5e|)9y_Mn#eqiJ_Va3VCLz!|51idLv^N5SpH5$ z)Q6Z>pR(x^zQ>(ZI@%`{o}~|_*?`+Z;p`5eH<55q_49gQALZ%aMAl=K`L(8cJ3HWu zy6{IppcQW7dI0=YkgpBOrZI}iIs-5lBAw8mFpFf4JF%XN9paV!`M=qP*Os`k8#xgb ziGTi(StOd}3>xRuB})EvdivH$+(zeD79sTf;%@O?uP1*i?^xUU>dO&A^FZpbdGE;B zo%t{pDe2+9{7WYq#SIzs8FY1hpT+U2NfT<|{09^p44mwMkPL*f8Btb2%Sc>88PQ85 zp5Tr4TmleIz~!wM5U9X3O5&0SUta>B0*S_W(J9y`t9DSp_w33aQ-cYz0wjFA!mWe} z&sFw;Fh~-N=ZE8rw_8u6Rzuh-rKbx#|Anv}9i(Emm3w!3)&C}ognF(Ym%bgPUE2jt z=!&YLxvsz*14$N8X}R#puBAY2RoX&XAdDp*9uqjVj58s=s8zIbM>Y1uv?~+WQ&G=@ zNStBTb$-k1h^k9rBkFpP6*pGJ>-!TN61&w{g*EQ%lmGlJeWUZtMKbLDE#Eim&YurD zhU>_Z$5I6%t#6u9JU%qBQ;*HNvin2BQyxZHpmE;vBrxvF(i_@xq5b}s`Q-)Uf6J3B zq!hvfgPRJw_lR!*lJKB2K z)1Q^ojLPOR`cbjiwHyw87A|ONMK-&T|6z~CRsx#o{4a7tZ>a7NbCZy0q$3Nf zhi|*|$Sgn*#=LHlm$JWv7}Q4|8&_~Hf3F-*4mNNsdsAj+u6d`)@?~*L0lka(Pxc*Y#c13gFnzZgtXVH_YOAraSlNBw;{BCI3p6CK(}IV zlvxAOZ*UpD58pXbv1CDbt|~Y<0Olaq)l{(V*k*$EEbzvUjO2vzB*H`UbeH9-=Ed2i z5LQ^Z4V2M1L?u|anU)FyfWlgXnb(IBr5|c+$QDs!){U%5@X>8wC@VQIEFw}6MxMI< z{2`C3F9mk!!IZ5|h`=ieM9n8(!c1rtyq>CQU3??LM0a9C6OP%?It;^{VgI~|!x;>u z0M53QlH&p2P!Xt}E^Klz95^QsL>LjEsvrh1cVK3JKZe(gPZI&QvBlp2Q(-}PFx!HY zu3x7M!WX_Ia{*?Cas0I|q!u|a3@+SYb8G{|VIh?EcPn-_Vl6T<3+4KBO!R z{sQj`9y;wVHoh6FmV6N1RdJ~HlU!zgmf0w0Vi`{F)?NW!vKwdhSZZA* zfz1Tg8P&RUEP+uP}K1b8Vw#n^{tJhRA*`RHEn5IZpg=%C)%VwtM&ZOhRU9XaO)ZNfr7(kV`N;43@M}KySeis*gx}g!Z`I?H zI}D%IfqTF-)zt+B5;c@1#DFdw+nz0BGSxoFr#5ZkWA7o6R&%uA>@w;wPlh#r_YVK^ zyq%3%0x6Ng%Nne}W@#s{wz_H#VqUILd>Rsh%r?wh`5D&8%p)aRt+o%BN4i8b9 z+>L@6o5JLrnHtJ6%XPwhmnAs#zYKu4`%l?VZzLB2nm(m34le!~)by=Qin!T%ey;^) z<1>x&Ii7{KB=?YgGr06rz+JNpje@ym7nYK*Kfv*;ad<*52Epz{gv=1zorN{v&{`_P zFjt%^XAN@@02A)V{Q+2HcASBHySN0l`7&I4X`Ff-C%&#Hw*lT4y!zP=x$UuIDD{uD zubBwOS@hIhO=t>EFk#NsUy7kEh$!8WbDR2^Z71agGMHfky;>ps0Z}ikY;8Ba@dT5d z3gh{WY8C@FAmG@wRNiTeY94J51Yu_9(tex5$d7JnTfkCGm8@2xsAi5z`{&tmHYuwX zABwqRquo>EkFI0ZZGRbAZ2(vDTP@}3XcEi=OiKP$ye>vopc$0{ z*3=mgo}615U58JD$r`B6fLT0vieVoA9kM~-D5}*39JT@T*P#xbWdnmEa&jTkLpWph z+)nWWbAk4bEYc!>__giZ27fQBi|G+7p;mt_nyS7$?QC%*kiD+4+h6=$`8%_I`qp0@ zl`uG6U{LtmAHTlu5l(QN(g0|s*Y#t;F`W}j69Zog6^xb=Mz#afgR1eZDX7?AfTubo z0=$Lw>^a`Ks7j}ygSd{JleWO)Tk_`1Y1w7l`(u|{0Ug=jkKWk70);aEM~K^;L|9=T z&X>w()8RQH({69UO}c#J%cJ8x%MyEW2OqB*yJDSt1>#0xmQfyq^YX09r!U>Y9t$^B zR&(^ZiI=ZS=(z?`=sUp!x2a*KecaX84E5zsKCqeBHZSbNak;JEDwU4d7#-vJ z8na8)LhigEaUH)f@GtlwTV?rQAs9%HJs;fqVVEdUvH6dPa5@|A9^;w^{g8n}Yv zvR8yjQ?iTxZ_AfX`md*89_&MO2S;gz*RO) zKRpYEEO4COgilw&Kjb(f$AC7(#R%l1fGo2A(3?gANdi=DvS_Ha0~2ArJI`cw;5B1a zQQ6fdrM}DnvRqlA!>xeahumlFsgfp-RV|NHFjfsVn-dbWO|bu%C7Zy#R=c@$7MKdd z*YT-;vrLzOUf;;}vl0H?#__}k8~O#lg#qnBXBgVJWpK8KL`%AOB5{FqP2Q-g+0qBn zHSnO7VjVGucVVlI)Ca&3=z6Qpq1dl8jje0u@uzw8c68r#-(+i2JmzIA3We7>yg+#o zi;(=f@*ZKDv<-8qN6NOdVtyX{VldY8WeRTOt>v>J&f$YZ|;b-wzOdw>RJmqo^=X2xyFH|jJ9{px$hNhvjH)^Ki*ro2*Q6v2_4%V=A|m=YXV4`#4KwgRmc2{NVO$ zg;@H5N6GO2CFp|Z+C%09z3Ipwxnu;G7Mk3q<-vGvQgO5?BOal?YD2sg;*WuY9ey6) zElYiOP$eIZUmsAB(}j5vcNv-v?5T!EjIH%l!~g31n#76oTv4-^cAnblLfdz0^Mb1vn52LhUuF~Gr}G!gYeeo@2R&J9S|8{^l*yzoBjz!a zQ4JtqS$Dt}`sl$y;PF&psW^_B#|bQ8Eo0>-x=ZSxD?EzkkHGke9%s>C#d^SlR_|W> zWzLbyWMMklxtHlRC#!1>V)?e1)yL0o#HdlcxCMQyqNzJiOv;GZBFnO;+WN5YLJX!CExA; z)>CGC`@{30cp;%}1F2WxgvEt82vn=?!wd8`f}Q5-ubkF76fb-pJKA3lr%W=B{WhOO z8~HJ~Wo7tMS#?K@SbWmzFKT{Zhili7%zCLMGx?_e5Bskp(rlwW%+D#&B$D=W)VFvG zAw98RK>6RE{QqUr8O|+N2rBF|OFrRw6*<6^rZ(-0>QKIz`J0h@)yc{EMxKh!$+3^M z<04+w%6hb;YibS0PdQmuNYE~$;7tOfT)gQppFVuOy%z(d1T@Fi!|O};XCvpAleu&t1Z zGo?XQtu_Mr5$4=VBLZi-foe8j2G^J}m{Th-h5;b}gkWj`k|h$%hKYT$lbg@2$%Wfv z*)#4>Ey|gV(gLdg`WbYJm^vKRy`K-UJoY}HItoo7F8w`bHvG>kF8ct+iTp%0nZvGV zc%Cj^7ziXF;XoSoQ3`yS=R;LhxV<(g?7~9CcYCtpISLMO<`=?>5tXtSn8y(q#neh= zj7tYxV=niMJa>Q(>-ci40nF7AWx6_?8wVIZyitv0cPP#Pz0+_rkgB~FIqp&vG#-s} zboMO!^}+{=yXPiN1!1M;*V@;whtQdK;i$%&zOz58ZiN3zE7?^2BW%b$L^;%{;E1YM zB0cwGEG;eN(}@dX(Q|s)uA)ym&`+ zN?|O>DN0H(oDlC8yF4IjMtHcWo33_H{wF|X z9BoSEHy&*=b2X{N8CKtSb=fNTwT*}*$62U|62StpbHKP4`cUwIQJnCN`RhaU^YdMk zwlSm0LuusF*D$YRdba5J!c*!f!Wl@O?tjjtwTL+#Ym^yDSQ4)%^A@Vf1PIJ6Cic3p zuF=%YmyD&gN=|u*Ph^6Pj77!zI;Y?hBL-l9Mgwq7jtO9`wPn3)IP=Dd9WV=)!M{V; z+J!X`yVGpVMaV~c6|8`&@Q*sTn4}6%$sWDR`-Jy2lZ-m4Aq`HmMCotDlDWQ6w~(qf zFkjd0gjVTAAPj9Xf3YbNn5v0s5zaW?S`gaPEaT6(vXjLHCRFqsxg-qEuLiExf4EyW zqjZ8EEYp(NOpf&b7ZO#yMN=;HDRkgjGDk{%nek9D)qr|(aFo}%ytlU>YyP|Y-rn5A zx`mY+Q(Xjed3U&KGWwLVs{$m48fOH;jNc@jm0;A|9=$NQ+DPsW)(QSP5cl{|+xLX8 z=>iDI(?qKOM!^5avu%*F{Lb{NjAP@-^MER@Kna6^kd1hwfh*^!DzSWZ=b`CZU#TFJ z(VdJuDccGj>oJ&qMWxu!rrt4_qoL2aViC?vZDY(8(-e#-EDA4nT?zzHUifzLW&56@ zwP7y1lg(?_lkm{6DVV8N^4BW(s=?p^Gk7BU(s$E*=TLrt2UcjSZgjTX_>IUZ8IVO9 zrhUMhl0^C3w|oPqJ4JMiX@?SN8djn&xRQE--E%$U#z_#!6Li`XMrdQ&ol#?mYX&dx zqMfxfwouGOP6vxn3A*9F>xTEARV}bhmlpc&mho#D9;^XTDfNKo6s!y#dZ9md#XbOK z7_c5~#waERQZC2*k)1xo-GAG?Hw^Ov)R^i<5|2~h*aIHyqH&yH1d3G?|MDDz`89&k z8k6XWoao3ycmiM(uxC8+s%olPm}gg|%Bzd9veO`)2Y!h|pC2=DRDBE1B5fmreJme-Bb(=iAZpoc7xCJ&6e?b+->(%*zP@C(lCEC zwE}e8euZK(68h^9vc(7!=KQb2l+1A-`Ys^jucz^TD-%lz!3h8t~|_J|0y zl(42~6PrMPo0t*zEg-KYD!T&4Cnie35DY%${wmZJ~_9oyhOz^UV^{iEAp& zk+!~z3;lHqpBemS)YA34urS{S!r(X|uYWaxx?3##2w3WILJx2RKF%lvC#&f z5Dh}B0CLLp_h#Njbzy&)h7)bq3c{))Kxc@=l#4_Cdd~RFRBGE{@g>rLDOpHxII550e#=v|lWpATQi*G1xjX@o=jGq9j<5js1Ng&3Y)z2so)}L@vy$D*4 zo+!5fx3%w3C!@GB@C-t#IaEa#Vdj0~doTz{sU=x!aGr=cK{KtSdlWaZ#+vCiB+3&3 zAO^T9|E$(-Mlbo6^3Sm#CMp&$-vO%QvY6y@uGbcdwT6uc;3?x`@?{GWrJgfot?V?x zh+;Wka2twt-1J0-ODFMKP@K#C3o+BLNi|>7)SV!hZG>-gFj1dR!OA^Nj27DWjJ_!f zAU=j&M}Vb*8m}+gK;0w)0K7&Mj(QGH;qqYJ<+t|hsS?GRPXe1qswBLx705RMPrjk- z6qI{ryS4mJ?(?Rpul-z5C3eTfy6TR{8R4gYKP}j{|0OLuZc@%Xu}KKYkRQ2@O3T=a zrUnfGtU)9^g_Y8z@HPSygQj2#mx(~?b`a0&cWI397M6ToMl9h&2J^5uEaP*Cq|t;g zx}H-36RfCB$sb0ZD_YdOhk#Tad$wE!1^Fop`R94M^ZrrGzMu@qmNyQ5C_W|c%4Tp% zW`U3S;51rT5Vg8aD!3(2g+td06WRGI~X zVG(Zu&wYwMmGT(m^h@L}juL}XXj4)F@*T>O0*8z4{pu`DPp7FNs_{Mn2318(+y_LM z75guz>lvPDeV@p(PT%}>|6H%f;=jm68gUUHX{y zl~-6+qT2vY{9}FR7s}Bu^$*N6d83IP-;t(!Kw;3NhYloJPO0BGJ)AtjgwfguGN6UHEvHblE*N zQOOTyDQG@7B=#xcSJlcs=bg;kCeO<|_#As8gL%beBr1)s@vf=^ORHK%J3;yF1xAc@ zoFq7xnSGXD*3r{+6n`K8J&rj9m{+{az#0}r0ox_HAnLcBzcuyO2-B#1c?!2s47m~G z;CzgOGNo^UEIChpeZ$NA*x@qx7=4NF^`Ik0Y$H?Q$Ou*Eb>xh)M^L!(;Y=~Cp5^x? zPy8Pv;061w5G&4X0COtbQcwX-H4#n2g*bEEhl1H0K#bM`JgD& zn2%({k8vC9o|NO_04#)-+8Bh{f|vqKH@J4;H8Fs<@*ME8TtWQ7G$s~or8bz@A1ExC z-a#lsv``(uHi(L5)?)ep;o8e7v1R0Xw=%#gofSTqMyuf zj$8D7;XU1Lhz~4?aZ%j8(m)`GZ@$rZfV(yTM_ml-N-+vZM>fQuroaege&2YO(hweH;K-Vg|Xf?5+(0P zpeG=WFr8WO3g6|1%}*(-n-M$ZBT3zRRCni3tkm5Q%(252U17heERt44#LsRjyl$s0 zspFZOCPiwwJ*lrxBn23;`J1$id{zA*IGw0Bf$LV7JKC}1+jh)gn?^a7;n|x`FIDMV zvD{3|r9QF=GqHk+n;%Y?$@>-3SaS6HMwMo6NeI@OY2n~@>XjG)<}^>q?C%#+h3*^u zimR-+Wf3yEFtPo5TmHbuIg2)6+kyi}h57!TUDS84{hM+hFDAXE^`owiECYwq!r*~R z*vupSwcN?g<@71M^wmm`)NJ987pPk-8u-7a2{1Kd6IifXiy>aKS|fHj8dnHf6eqNB zAav#^eD^F{eLho-;MVS#_9)-_T4FQIOv}RAd<|{JPPoL!;C6@$&Z;Ahu3K!O9PnD_ zC=xF4Vt_A{fRZ48w-U5RTtJsOy$Fohm_xJSwrHeRH^w0^zT1-pjn{hWG~Aia81-2m zhlmPQp@-s@j=?~P%%}de%Tn}3?yTEA6}D&)dd= zP3R^NqfF`ZPPdQ-T)^RYxd8=kLWmXNu1xP$0A(BsI<$)cj~1|de9D6R1NQhoe+NVi z#MMszdDX}PO%D5e-i}RFX2LX*N;IbwUnImd&K7j*y9>3MqW(TZ2YTRbP&ZTOTe-;zPC&=U-P1&x63Z z0^J8wahd(Z2nOIFN6Bn(1mQLzlnO@^N1PxE-js88C%;aftYaZU)Hr4xT|3nt3X#%( zJ`SmY>78xCcT1P8tRpNmXauDc0noL4^9#TNv4R?t2o=l2qFM>1a~7z_7KfZQ;((`s zHXv_1By&OQhXwVcq?72W+o8m;oo&krEIf5N>!_x>uuv#wDu_Rda$*oViv z!qv|OPf)r`Ebhoj;Rosdo|5}LZ%5eA)LKH{y^Iq`?H=4K^7y$DsFXKs)}!>k^cMU_ zlr+(%ir1xM@vi5u^oa`Y?sWCo=Nj!cK6v@>+2=nnMO&|X&K*TF5A-*>-dnxw*v;Xp zxp(6>=rjw=-|jm=44ePi(Zo+`$UYJseUm;K*6wO`kgGjvJI8Wn({db2*!+B~-+>iS zA9G(@4=w(gQ&gCQ9NxI#uTplNw9a??FGegU>yhc~V0nL;tc(u-NDVRM;nomeqVv0= zT$NVdRV;3Fs!xdH+eqDDl-&Ed<1@pJ)vX7WT~>PCYp&NU95{ee5&ScUZMsAI zQGwn?eBkbNChM-ON4nQPo|}f+G~PK1vPe59^c*RFs_a6a@KAp}OlTvWwe|LvdON+- zM5~#koAduqV~P@>pQv%=ufmpB`v*fI4{djhb+#xtm#Fg(2q-$Wxeau~-%*I$ z-T^`M*oR`*5X{qLwbUxJouo*-_6A7sB<5w<;7k+qjKRT!*P;dtxY50Qg4F|Z3t;f9 z1liRl@L{!&fpE|`06ikQ1l|7U!T$7?rUCSO8G!nbYiJZ^Hj)kB^9*DYlbyb z!mb;(zSOVG*?#^I|Gn_}Hdi+MO(y{%=q{gs!iqu1Q$f~3aEVN`y z>!{mc8(w|{bLuGA3ghK ze&s_R*p(rFcA9!GVosY3mQ;fxH%5QVUjcygg;0x4T##|uPnP^VSyuY&N_g*$;<+|T z%Q3@F))(SWs|s0}>I6|RU9!?IWv+Fb1bVW)^*MAio;nm9fv+Vbm$wOKdYS7HbT186 z#`C|(7VRA@tlYm9qq%(Dh)3fjj0-er=;adMTnL;C* zWb*n_$eWs&U_`+^aSuDT=cms-w>{Nz`5(DUggg%4VX=@mbP@@*uZ{_H3p6&WV{>zS zY#f~TD~H$P$onidM=-tA{UH8Fz2VSb@8w^$W4y5sMpL`?FUt}KsI^3&X}c*1f3-)5 zZ1&a*9Z2fmh&m;uhi2Ba{l5Ob$f3-ZCN;+~>duHD+oe60h_lnMttW?3#tMv`{`n_Y zWEL2qx2LZET&_3JPG$Wd!t_L8a^w*0u+QuV*~F&5JBm^b)$CDojX6Hc)$n z`sY7k_v0;@u<4m)tk*UfI%CO4V1+C*e;Lem$J}%@9BwFtDn=}iv_Y$ti8xAp9){xnhaI{s-Z`1FX8d_?`YRDxS|#Zc+E|h0CUwCHjr-1pebK( z?sNb)VcebKh>k?lF{~1Vlie$e1wA#0M}h1{>-8ARJpvt#=hiHwPMRWO#Jw3J*>mJo z20Lcq*zUYdVGJn)ulsd$9Z<3fHd%DWMaxe-=SdOZT=qo{FC4Hagy zZZ|imV5HMDhs|6D*QF6BL~bW3?V_*|@G~K6<>JzzpS-z31)b}3cq`dpR8w^(DRFpn2q(%lHCpKl#SCYIdkaF zsXJjElkmrjjF?n6vSL!p^o!^V9d5lIJPoo^KVM1qF4yRI2`8Mia zt`Cw@roo?`+OP6m@W7ooo+Ed}Y@8(aR^s{B9tU18v}a2Ef0t;6p~UKI6OC)okEfVAWh-L6j4nxUS6j6R9JA(u+A1 z*R@7Pde|(l@hET(q5ocxz&}*nGNBDW-u9J%5U#{34SLC)kTNX{boH%uqhPi1gf*~* zwrLgG0{$3tEixo<=V9i_2v?di{K$bfM@ZWSzb6lTKm=(v03MX3Tqe4&qMJYLPG^Ay z#mEx6Ccv|ZIu>jf;2#V|x@Uvo9*||LU^teGqeUD!l&t90DQym~&=UgPBWBb^o^Vn- z7{32SpqkqRfzCAxV~1Ca5s*iB5_&@@IR zkE~Uvz)nrbVhjGjqG$6{>L>2uY-NO?XW%%bl*wu}lK#quIXr-jEGQR*Pr@;gday-| zG1ys{h#%j<&Vjb*2*ibrNCv#JFuQbuH~$~X44M;k{O|XV18Qxx+NFcL_M41Rs;A(7 zVn9$zf<0TuL9zF5wR|GlH0Zrho>A4j#=-PR5jin}rS z!Ysd0ap7wkmMmJf8u#%|W6P)FOEq#XlX~28RrQCfkEj%| zx7GXY)nwaHK>_fPo6E-T&&s5R$b3fH*g?HM3y!^QX?QmIKeCK{C9e?z{8zd^X({M`rowSt3#C;SuIVDv((CXfss zv)paIrZLq<-3>K|IjB2%8hn47sJ}w6=tAqw=R~C!)o9Q-T=*FdjB4BlPR$v>OZos~ zm9UD2su(b+z$Mm4E+XV=)g5=vS>T^p^H@#xrqW9s3cScNe1HnxXf{WKDm=?|BGuJY zNaB1p3Fc%Hw0bi@bsK)6?l*nnZ&O0^W1*L+K2FfYiSe?4HP|1OJwUt!3nI*5HxUX- zYr_fVW7B6~0{;@ufPvO^{YS=&zJ8Tbegx`4k?^CSPFQF9+E=505)yG9by*{`PA5r0~?$yC#3kNA{ev&IMG(pMd)_H){G`3 z{)M*8S&Tu3s|?m~4JhGiq2NOYaS?EAOt9ddfOCZH?`LiBt-QTA3zfs=w@pV@w&Y*_ zrS3SKxA%Q^!EWbKV#_$=qot%~X1)Wy@!(4eLp!p+W@9}nJ(fY;(jGV=lODlMglNcS zJAY~a-dE6nzK+Iw4oBro;I#dUVLz5I!3L9g6gFuW$w0MCrcE@}a;+9Yj83hB2zAvM zE8ZjA>@>*;AtT`!tlWR2IZpW7HDKS#%j3=e2ckC)g|oS9k2DZ3*3fre3>g3>p&|uO zcpfumCKAr#$;PpI@C4;R{!6hE5gnfQ6JWWbCQi9?F;GWXsDGgp9q6T)$R#Jzv=yJ0 zG+7-X}%vZj)- zj974e-g~^(7L%yR1b>duq+T(Weoan#9UB-QP4Ottjf$4qCj|5;U2UDC?90h@CQ znM9R>UrnR+_qLGU+`>d+> ziCIgy93(`zy>bU2-st#^RIyPUWneD81j0e?kantDQ?u%C{*;}}GVo;Yan||Dj z)C=Fe`jc{NvYLwDl&&){uzNR}$6S_@sa@@u<^kw!8{UJCim*?v?DG-sY8P_6W;C}g%1;qaNwgC*?FpHBditEfK8Q;2t+) z4mLK>NU<-kyp=TsUDf62o3jvU{_6*O1c@mFciq7#SgRq?J){LZ5hWOVmi(#Anq#BNV=_m@oF(xgA2%O zc_O-IMZjGnzX^~bJ>j2$Mffss0R1zyfv~6Pv&A1pd-||+Xvuiu$EWlw?Mz{`*x*kt zai7wnnTvGgcE9|{msNU?F|LD}tRMd)2bo8cxZ+?RYp3^@BgAZL?-PXeJMUw9AlK<|U52Y7#D&(}06Zo;SdEG4s1oR=pN-{D16IVJDZb zNdJB>8=yHo7XSXB<;c#}YJhcNh_Y4d@WaVPxaRcTw_!TLjn(S{+f!QCp0!Lh$82_{B(!5Gs zvDf9?OmNOo|KTlbWULu6s!P{tkL|H|ufMsP5NA#35JhMCig-Qayni|n$L7ClB~IAu z=e{c1!>7fRs3e%>_9|rJ`LETpeC&-&fqJzIF_DFVIhoSq5{;%8Jg|@grhPjrR&VP% zi^6r@w=oOSOy8{VH@rzUzXuzIXe#k?kiRpf*>n>XtB)MDAM%j`XrL<$?Y+lgm0uGx zw0+ow9~bPFF(p44;+mpw9eN2DUN>BSm+b$N+wn@6@A29@$EGCgQMv$!fXStcPU0m~ zQ=4%~G{KB#)OQ$|g_yWvHg-7O?w6vK$)~?OX>6$*qg*I;7FF%}HnfMZ$dIL87y6^| zG|)?)BTTOvGJRwqX^$-|C zLo(`BrN}ngV6_pnACc$;Rb@kh*>rB`(gM2f)sHr=P*_Wp1aDwmuIMrv()+#c7`Qk; zG0L4FAy{Q8;Ez>yF{n=c5*1xq9tEk}lh2MIVs<~JVjp5ePmGBWStq?2hzSXQ%AZ`` zUI%M_30>6(I)C`v+kqhySn_ivJ8*WjIvWLROyJbd_wd4PuxgSd5dHI{CcI056|1ea z32YtSIj>LK;6_g&%FdMpGet^DhSvmSo@ELK)Y7C#l$KjI6qUb8p*ErfH8!b4vS2;f z_}a){g1Mh<{dYi1cAhxhLd49*t4b3PV~!TbJ_IW@x~fhwu*U$+Q0O|4HH!GhYW5NT zAK;j{nm^7T7eWtfFg^h*eBe(Z0TrZN>~yu|)-Lf*SGYo9P*S&$va$8CC2B^DMnPJ?5mYdbYsNvJph_TLpDHNDn5u%K(n_Dob34~TxTpvSZU$YJim)l~pj9q?fo5M!AB00-TU49_i|(w&Z}=ESD7%GC^X36 z>F5~Tau@Fp#B-|L;gh{?CBu>-WOp`w2{Tsue9UpGnYQvJ$LMeL@ohZ>kKDE;^&4Tj z4xzOU;U0Q^gOppSe&UQ~*Dlw{9c<(%4;S4u?{ChAb(rzGUmxsFD$y@~cs`s@T4!B^ zJ;$U}QR~~hYx<;kv|h>t?4~T6j^cK1(hR!y?p3*6yvMB-R^8XtPZL?Yc|sCfD^Nn& zjv0wF0@R1k47YB_H+-9Cq><<8nZQ!RTbMVcfFBdv%m>hTiy+ayVmNr!4_8y8~= zq}Cn9EkQ)7*Wz1{P;)YQ0KV8Hy~qR`0rQ$w;4r}TP#Dm~TNOZE7&w25AAIc zkb)Ot@@E07>5+;g^h50N9sxB!N?s?dSF$iV1mG=AH}OtHA5QS-6n`=y^93fL!;F)W z(*eN{TC$B)VGt~{Ndtj^QxIl{oSFVxlYSya`~4evEVM~@TKNC8yn=Kt@hyC87V3Yn zB=XjW2w$t~2+L$Id@h=JtTtHByOiXtHce)!yjM?vug;A_>f{jV*cJMAUy9phqg1a* zsqvHNGT13Er9<3SzS^JPJu46t*2296p!~>RmPvF`(aerhq zfuP_lBt=UG*`zjPxQWAyUlag5wj*`9_HWgdx|!2ZwTtzJ#E=7-BCp+94DdPamlTu- zl5qM?q_PRRIs)?A=HE~?s1e(5)nAv^*CWgl+wV^VSHeZ(zgixMqT%LciDcZ4BXqh_-!il6NN{G=9yh=|eM_rp(IK;5eet+lO zL(XXyT`=+UNPb7VC%^UKZu~s~=DVYUDNS&#KU&B47y|=-=Q1nC`>CCn*``1A7)&B- z`Hze_)a)p{N&Cle{*zeaFNP>Ln8R}cW(Oy#pYP*b1H@T4H~U2udW((*X3D%jiS8w| z{!O+*>jhR5$-nPQ8jjb=2#6}Q7mS7$r96cM98?mI;A}AhuLaWXXfjj1x~i_i(dE8n zcZ1hc>em1jKN>~&X{Eu1Rx?6n3ZA=o>AwO%i8IO25mm(d!TG;VN?I z@`9>stpwlYGv*%jzRmZgP>ToAHu+d&vNbNQ687Eq2AeLwkb7rv%N^A4hiwhoS2%J5 zO>@_W`X6uq`0cOAY`4YBQv1_?WS1d_&h;bc>s0Iyue9qP6vJxY zjl5$+yUqdq9!Bj}a7?OcRih7Qq&lmFYgE|$ z*VO>9H}FDl-5hwu<<%QKgwEEABR)%t%xdo2qzM7n0J?5Kn252Wg=;(hR+Y_e-LiS9 zfI@oDnE4!hNtsK`UY(0T6*&$aGNGq_$QyvG`j`}6$rQUwhK>UgNn2iad!G$9{KC** zPs9V}a)Q$I-3?lC-&!DY$9)<21XW z{^g5jqh3ep8nMO{g0VZwQ00GTMAAI@B^s&Xv5llBuNnnL)epGJAv_O(jn)v30k9y( zk`hV7qpL!|rNTwWFk^1?{qQx$9RA7J1{@QPwj)rl zk-r;YDT{o!jIPs%8QTJjV+@|GWOW2^kY{`)r)mjTVESKwBaX``{TPLS$)%hJt!Xum zZeYC)q6%<2m0c44&a^Ma#bAOzbMIh%n;>kK_p^Yeeget?{Of?Qig$1Xmk(uQJrI?B z$DLjO<>PGc)T=AS>P}@>7_TtUOUj=Kh$*DMIB4(rq};LdO-{>eo@)=Tp>6f>K|m{g z?q$Wh#SV`Pxrf{WFGO12SnQW<>0ffS+)>jK%d2|LWY8R--kNOGDRWO@K0fk38@ZA5 zdzQOzJ*68JUh0{8zU%UizrFmkWv5r(iFw21x(H?@?ajqr_irC76KfXzlsfL+v6fXd z_S}AYZA#?RA6Ajnr{)v+3{Ck9oxU8aY4ant0!ilg9^UCU>+!v|;&J{a$3n?Ng>*%c z!KQheE7bPs_m>s&Qr$|#*hzu+F2N(u^VBgbcgx!S!!KRF<;JTGj|hvA4cu(ut8tW7w2wcN;Gz(?0Qy34pfq{ZJ;dG5CQHN*yX*_JAkNzaye z8GRvm=4g3|2^$b05fmUh>1bc&`Da{AN$x+g5+$y7;af?)uc1(~jB(;c#E(~7fas`q zKOF1S>JSzMtGW73Wx~B16sb5}J2))`7&SDdul&FFu$w#$dJk9}Brj2{1+v3E%GcJX zz*E(_7;uSRh4)DfnE`nDpl_JP;N{T%{_g0MF{hjd0|>sTfwaU<>m8nAi!w+0(F?5B&kn5+yS{S-Ffql^fdSVd|R+v%(?yO*cG^uIXT|z)al6jYc3j{XE zTASotKN~?GZ*Q#c1;((H#@Nxl^FEW01)LT!EcxzSFItyJpdpv&$9fqX*bSN*aJG>8 z_UP~Eau#q%99P8k}?0-EQ`z_o27cQ(9G$!Ev)cguL~m85pr+1DI` zbkr-~3VL$%9OY`MD~WucFZZyj0;Jv}=QpoGqK#fy`2MvTSaB- z*HQY&a>QE<2%^+sAx$J~D4;adD#;WDmf)QY}HrI3-&h}I#K{6QHA*DmC zzKWh|-X&}%L`~MkxJJR`WA+*o!gj;Fe!ZEpz(=5-2lUJIgbEf zs!+Qk4O5zt<=mdH4M#B0uP{5TD{!i)9Q9a9GXMFOM@ zqrm2a{$fQI_URidG}hLRtWCGcD!Wu8H!n$9v_-t{crthIinBwX_JClXA@%qBO2O(% zSs&D^Zu)d(@xB?WdwnZA{*oFES+|>;!@~zBy6YMJ`VJb@uiORhF=zFLzEvAga*cj4 zoT)urqh=$_+jzLb9?_TA`*GUJ8w8wk~JBHNT7-sV>_;(+NfhB$i>Z;dYeY2EbDHK#Sw z5#6HJ*XGy;z{zfxa*5|zPxEJX;2CeVrQ9s4(a#O`@Y0)C@uCqdt0N> zM6Y7);CL|!jC(57W&Aa_i(EnkB9@>v;d?+pFxzuiaL(J{lE;7Z~YT8H#iVXgPUL~k&2#%M+k_m3O3JNO%;64XB|mfjP1HkvP>NvQ4yXy)J39GDz5~E?2$h%xa4nAh zEo!veT>H@h!Nj&cQLX=A)+;Ou!ehh-pJ2_#MIb%NF6ajvRsR;9ru&z*xmkL=1&@R2 zAB{s%;o~Jme&kR~ZS>@ak&llz4+71Idda6(e85BO11Y` z)BRPzDykvNehr?57#ht$5b2#%vmE0ByUF=l=<0CvG6Au@a(~(#%|>hb&erY=F<9J?@Gt+h=d{@1^Z|H9Z(Cnu zAfSEL6MQnCN@Z!I?M=Hj-v50nwk^BTXSOUrW@IAVc4(R}w%o5|yGJUiJg(HqvBIsH(=u-h5+{MpXu77i_#os>e{dc6zHlMGA?Ez zl&J|a>>8R?B*33_mmr#2!~nWX$GCrF>mA}Afi}LqV^1V2tDwZc7Y!Ds>sKBuXr-zy z&wkk`ELYz}(5ERXL0w8<&j$MLF_}Dj0Oc-vDlAHg^%cB74GjY$%OjuYR^qK#?{-^@RNg>*`XjnOq^^H~j=CW8DQXrD4F~@YCe$t$s zDsoXi$L0Ef)%zbARhDMU9#^b{9e+Pqsnxpec3CM|SLpD))O^P$docwH?}FR8gqDGc z@pmopB>|+rB$8vQ{6pn{0Ev`ox``lIJj0W_XBt-YyzH{$J>~2!lXeFcQ;wzponWS95l~nO#a6a-?@1{60HcIhd~bGpZ&Mah=pS^VlSm)5}SzUCm*3N;L{-|(jIB}yB#@W+=Zj4S?#qb#<_K$jl8 zh%#<5Dn)Ti=b5L*GO-&XDy&jVCyq31@^*4j5Qpa_wTI22o8HpVIe8*E3r|92aL&5` z%GJoVFF%B=6Ef=?KLq&`)r(%8w~YZ3MD!)t-A4SYKyfiSARtS?S9SmvvxP{v!F~e^ zHUO@D6i0dyi~wj?OPAcxX*hLwQHAiUI2PtzJrLM=1*R?(~it`)dvP9{DZpz%sqP#-u)?V>vAj;}=^w+}-t+WfJv zULoDGEAowcoMjZd&2Jk2kZr$Dfes!5^0q?#ZK)D3tuV=2 z!)FTtc*HN1ZYdY`?8%FtS$qh48fkmsO;}t}RfWiqi$abqW~K)-DH-+t#_;YDJj9zq za&P?FW@cl=A)-0P_AvOl>r0(>$TaQyx{`vLH}bFl8VP>5JFs@Kgd#^1^QhUlBua2P z!_zi7uJ5JQ`0j0PGp~lrB}a+YUr{gOIV#so-ENG}TJH>4NttK7KWS6jOLJs-Yx^vn zL#;pOd21r+S?a#MQ^`!?-5KG^*^c%oE7Q#@%7#bD544{>EkKOal9!qVXb=xZ%pN{i z<^2739&Q&wIJsz z-miF`*%)vn_9%Oy0^fVNuJkq7t9)q2tl2 zLY+ArWE_41*1Jy^ZeFu{tDfO*S#fRI^T=L<-$8jgu4WHYS~~qe=6+aDbu@b9D9+hK ztux`Pd0*nMi#I9fDUS&l?PN=39?a{r$Cq+2BD6ib?Omm_aq9liamy)EOf@#AMUqnp%u zTsKp&F(Ohwb2tT{&*>tlUUszqM%O$xC8Jc3C*iR}+x)GBU@#a{6?j_wTLCaxF^r*` zG`S7XIi0bCZLm6c@eH-G-mBaTXgrF1Div00J!Y;kb#Wgi-=uX zS!Zs+EJUgWnyzd;`Zv_SsOl4W{TIgy5QNnt&!33><7px?o=?s4$zF1{gJvq(LjjW& zh3VWt7Z?eSQD3DKI{XFi45y?g4aBnW=UDV>XNr4S*%OnoSX9+6%55^^m2nh z=kH4nsWrB$Zhr*dm726+qlQ|c&Bzd-X96@O9pe14o1TC-xTOZLTYwQd0bK=c5w!4W zPm}U~wg7iyNzAcCcG%dr?QIuukQ8Qt+{P1x5Tq1%ub6j#yzJavM_;?2!O#pfG1SW( zsiUZ)`biFv)^^j>o523mEFS^&eS%@}?NLGwo_RpsD3j!A$Zz9ghz=xSpH`N;UyC$H zwE_f}dEN!f=sHRh{ugb^8n6l>r<|Ee#OLDCV^5tDI^fDN4>hwX;~uv)o(0RQhH9HK zp5_yq)TZ5IeNgh$?TRyyBjJ2YH`meZp)dweWoWc$P@Jt?46D>9pnTRNkr|`tp(pSg zLTzWlZ4lw*PieMmcd%hjk>7aYUw<`F>>7V5P*wE2%pKZI4){bISWYgPE7; za(Its7PXKA2wy=JU8zY6%~#{p3GV6l^XxUE8s4_i1?JorKjU1{iAG2|ntw-@igcmL z{%ZZXXP0DflU_(hjU$70#A3&_{N3(s2@0CqUr!UFb)PmB-Qh#slG_*LJz(#ZQ*i6& ztlzsGUqfg1?G_>Upd1@@ErwpRxQ$<`fAyhAW0>&nDN` z{|>!xm5St7Nm8+#G?qY--i=mKsOqakSh_CFIHpQPUZ!7sksAv2k6z>~aa|*g*hnPK zAJ;=xKkIdzB|X*B8JsH$ko4oY3nMAP_Q>(#h*%w?w$U&6Ey!VL0-C_uz{|T``&y2)P$=t*?(#$SdlJpy^lbq{Pm?qU{Q`8 z9->1pVE0GK@(}xhaw_G@`Z%Ud@G&fh>VB&n*AwxFMvkMJ2KPDi&On*kwZ#nEPFA5) zk9@=x13|Mem&@vgj%`0deddFaI@l7`OV?&&sPO_E{8B2BmlZXmU=Xl*1q3eE=-+Gy zVBL&bEF5t$)=3RN1RxfZ3#B9FRv4%Y-6`-^wTSKFsbH z1}{k`f0fP|?fL=P{?!;FMNha+}#UP5Hky_eA_k}vrN z!7RVLJ`Q$#)ehZ2*KR3jDX#r5dDa1S%iR4}zBU15PrwBDr+-u;jln;s|DzBW!xE3a zyzG_B4x6PL7w+k)=8_($@{uuxHsmwNQ9T8xj=ESkq@0XnfYM6al}Lot30}xQm&wPL zBiKlhg+A`Zp!hvh5`@7kP;d2T(6y)wq##tms_%tb+}8(0 zPF89nNYH-W1-_Lm^l&Ti>smGkSK!AUw!fYs>(C>DHf)uZ@s6_ib1E{;%fEo^fi*Qp@+|7k)io(SS`qO6x(=y zxs!cY7F_94Q55db^ytvOP=%1AF2(PudY?+SpQ8#i#ttnQ*YxuZ8uB2YA=k;og_ON>3 z_oz{TPrQd16;9*_hc=NZ6nn&O@Cqzps0aIoE3EVu z2dAC}6{RHyEJg0uP{7FmwbkHe1!y!}KRv8X&SZU;gd0;>?(!9Y68@MKLmemhxN)k6AV%Rre=Y#@l0S~) zkOmjBt-s=Gmc;Qtz{jx=0|pik0@9Zt`a%QNAn6IneNbO;U_c2-`iA@oa7NT&Kv>lR zBvwzmV4dyvYRMfJw1y;Ems4+T6*0FYYTp1!UGAMfAj^ zN`mkuNldVy^S=TDc*KVcMwQu%=3`e>{baBslVN=}Wrh>91|(glK$|qq514X*f#AAE zp0@>BjKSRwZfpQ(@3kUSL{bV~``=!g9#1D!Z;NIg|9$3fv;aQWSSpH}^YZ>9GzAjt zpA}cAglG@8zl@q6Evd()z#AB)ze$Ro-knyMcshSv=*l@0MWq60ZByNzN7=X=T#>a6 z;nQE0?PY%HnSixw#X--P;Hye@Z|A&d!@m7AZ`&DYm+Y$&O^vq?@4YuZ{Nkr#;+>!j z7iy#D^Z_#J^mbMFcSr3zjAkbi+Z$;elMYg!zEp~m_v^o^-dgF`J^vlYaYw0in>~72 zL_qP6KyI2<@n)|9 z@cqCL+sJkB%5A`0s>qzeH_qtnQ^-9=S$Jo)?}PedzBj$hZ$sHKizZeW zOUVzI`}bi=0{w1}dqo;}7Hwm~NrIxRv+$Nw;=>ACetc>FvRU7rWU6*cJtG(8VRrRB zkuG*`cK-(hj%_#}YtJCM)MTAMax|HAV(ot?kHU(6<}zn!M=ITj&nKKdd+#zjc&N&- zvcF!eyC~ev^HUZ$29LZb1Vg;6f6!Ov&amLD**N^v8y^aw%AHHWw5X4oe6D2U)>$VHr*>&U06DhcA5wS^tk6xwP z1E*1>@ITRz6XSFS+EH*L_T8Xx57#6;EtZM$3V0s3%CNu~Y`DDh@XebAdN;TK<#)o^^1H z0AMWytY>{;6I2b@J%F+!fW(YAk`~@#Fas)(q2|CQh6G_ZTyML~9_x&$Df#9Hi2?bs zSjy0~k{y?MPHP@?mI$-8S_}o6gpJ9MJ7g@quNxXJu4azP_C(TLSkpT!>S|R8_Ea-- zwM;MST!$YaXCV@%AiCec5pN4>Zu!ft*ag8az-$D@EKQT=G?h(w}W&<-W8iz&sxY*3ZLp%a^><|BAX6CALwPyga{^ zW;?HQd557uOpLp>Hg)m$nS7A{)Z?uEhu!?j9$y*zlvH;t@j;7pPQO0iaGnWV8|?VP zGa7a8c<}2}dZHh!xb$OD(JLjB?^%k4?q3-2rs(x&e{a3>nwM{Pj?GlQPvEz)=WibO@>5=F-`dEgweU1{ zK&Wm0y|5C9oJu#ix_yRNkxy<;{+z#@r_}5pJ?Aw$v%KlwuUvVkaTI~;KNVkGcoJ>Y zT`P*PP(9YwJ3>re6p`9b0OOIfGv^TT0rhrVd*7sQE(?K8nfb=EZqfJA1=49X8@N{M z9m_^%oiPid*6{o^_hw_`#;<$yaRmaqY5}~E;31UndojFs250)JQ)S1h<sndE#@^Q5x1_8n6X;GV?Bo{bub z=QZ=jb#^ef#`Yro-AmR8^%U6+!kx&>2xqMoxtF~WExJkXkW0oH-#d?U#_7# z1od4kwFv#WtWpom1}T&lmup+FjJO{b)Z}3jhR{+Y3J&dpND#x70?ym6`m96tjg*Bn zpAcfmomfX}xsdjg&$oc8Oa*fO5XjKWUY$cEUg^}uNsz`iaX(ykm@d}@qRZQWxzzGh z`_bJ}U8>wR27*#Mp_(AlnHnS>U@azaxivt`u4$^?1O>HCTpsw&og#BtC1U9j`}E^km44_(6H3JR zc(CfRXmzwEjy3>cXeZU`4}R-jL@+dfV+Q`vG(gh}J}Xewf_qfr zEuffN2i6u4x#(Eel3b3p-+$7!Mw(QmBpqEjY%^6Kf<>OJ4ZE7B2t)Zf!l#RNwsy_$>w+q z)KP+%%M@r&sv$Y1>Hp1TU&Vt7q28+-_LlN2S2&pc9r)^Gc5KEXjaZqX<27~iSK04+k5&y?LhQwk7xuK}y=s*7Q_RR+P^9GjCO3^3C$i$}4orE=yxIPa|c<&l}*{~K?KB^Gj^)DAcjaS$6{Jnpc!wz!>BP zru&^wkrluR!Aef(cGu#*x@O&SpmlUU)Oi)rsiymJ1GD_Eppajl&6n+iI%`eUL9BRU*A09BgHOqD| z(X0K!;Chkuz3Msomx#7^I;9+ol!A7KaqHqj1!AqX6dNXop!aZO(2btA+dkYFRV-aO zVyxE}?^DP*5&<9@b>p=}IQLY?P`2Ld-n@+Fh3#mq9|cYMjdt3G^D2Lx;d{ zF}2Yjg;8aYKON1Z0%)_OWiUV_t7LSRn{@Ir4X&wqnvnmt`4@M8A-HdaDjAh>df#6G)2mHH+P>Fb0x7b2NLP zm}kktQtJ|Fl-eF9v_8vT5jLcdrtUTSUi>rPbtz6)cG}guqaP84-@LZ`9tFNu1;GKV zHNCWllb>}+&_0*&u}*;lJXZ7k@KW6UI>>%OR8eF+>lcY$&5X}xV@T!1&+kf@h4fVx z&m9Wm9|g6~XWp1GmgfK{1CX)W({9 zv2s(jp(Ht+$6G#0n={6_PfsmopGkhM;HUb+I#!S`A;&++)49;WgLB$m>AX##M0o$s zd`s4`;>luy{nmYDDhJV-x>qqHjV}c+szrTB2wq;++THo`xHIgBkhv^Hy_w7luHI+j z%t^Fyr9HL*Ys>j8STS6#Jo1sooh?uIzRo((xrBCSHL8tSzi{JQ<;d^MDPW8-eLd-s zKyzRf3C)pwNhNa6DO0^x)%{468rt-0BME{zFq}qgn7^bs)!8&Gcv@lX`d(tzcPGDv zpB~K_c;V&`rp5G2PZFHOMXtxIY82W-?sC^*yXkoRGn)#v)ACXtq^+lNVE43itf z?2ml-eOMHw@XR|N@-AGs1cHr>cW=k?22NvBYlpWn14V(Wt_j&GYj|4teujO90$Xfq zD_h;3*4i4>;dV?X;K%(EDm?cz95f-M1_s#{dAuM^QG!WAdQF8g(vKITlLFJ1qn4OU9BbJd$fG}~VCQxK zS2YVZcThcP;o88T>%7p1dh6^+0-=|uzDZ zGA-EDW`IM6KWEDTZ)79o^*;_hyf~`!7Xon1se(=O&1jOMX-v2xhE1m|3a(?A2W+uY z#Eq!#V59+UhDkMsnu~THq9wmU+;;&iAP|FWI@fcs6-r;OK$*<=ECA+YhWyP$i&MR? zN6?GSCLE^%%tZqbHSy3Tq@zsE{Wi6O4Hti*%w#VFf$NY*sg@ecF7|;L#-P`gQ5K#~}iQ#RLa)@^9RyOb8l?{<~ zq$N{#cdAF&u$YaSSN0lsFG`yo0b4teF^hoWw*QZ1VT-7}Nf zEAr?-9ivQ}2p+n$liupIq%`JG9Fs%jDV#WT428e#_B3CK#Vs$fDEOkXJmWWn<8TD) z=X<}T2bAUPaSvX1-@f$vD0igKpx_*kThqqA``Vv1e==$7X3wEx$&#RZr;;9R+QG=D zaf>*%6yyivg}k*4`-=nr7zP1|_+`w;w{PSt2)Rl^n7>_ziUl~q#w;4{DY&~*WtzmV zp8E-t6LyRz%i@J&RWr>q#ArOl9JZolm9yB^&rxn^X|8Wk?-pKA`ZD*W5%;I#Sh7<6 z#Ha$FaEe*qAi}ux@unB20MOw*9k1DwGSy^NY7_~4abY}b*r{n^On2 zKPP^COWU2F&xOzJvaWD3Cp|-U$?<^7HqxJK+s38m@~-k&MM#IYWhC)ib%fcgS1)k| zdT(T87`4S;ic`OMmibo6))=42-O(*_HP3S0fZ5hxET{65fKsgR3(=O3d8)5H9W#%Q z=R&hyUu#UP-+#xJPO;VYG+Q-D#GB%cB;K)oJL!GaezT5Lh>mi%$jcJ@HJYi9Ji4pR zXIE!AV}t5KH+he68w77h{f6Y9ogj@Ny(-Qj;#=2S63)7xp1|rV3m9RlKjBce4Lpaf zORmY#ww61wDh-7>^F3fr zYxO+}yg*kw6}V4B%|{<`9|MVGd9ok&=M$#BF7AhW@Cv!*z=W*AfI^F&gc3j*%_bRu z%?VL~-H}TQC`Q@CW(ce0^h|;O>H<|Ir<3~u%HTcrm1woK=6kkDAJM9U0vp{{l(|sb z`xG3_&G!ru9Z(BVO?81plJ@W5vKZGunuCKInbUra9TPKoI@)9I5vYA1r&*a z9Xr_ZpiKPGr5zYzv|e^h?%9nZ_bf+mZH)_DydP3ddHfMSa4kzv+2s!a*nl|-B0>YL z$HB7!uDBkC5+STm&jrwd0rrAcz6*OVT+Liec;h#u zL3^_Yua%$_v*M z?M%q zQ1-Jf;k5mGl{@XRgGXBT%lvN(f|nDpmIQdQLX?$^xIN$!fCY*w?Gkgd_|u7 zFcr~)(2EUY0BtYn*gjjH3Qn>G(#%=_{-YoQ8e$!&Yq(_tv#o3HvKjd9;lk#gIyl4k zf%tq&GgvYRU17QnYRwG}PHS#jT=FKYUc8HB+SAeSnIGT?!=0PD5%892FGbwLpD5S< zJD+k8Ktfs?Z~|KTap=R|F11wceNA01gKfF-)S(C!KT2xH09#!r0rhB=@<+gjO-mx0 zBOM7d#cMW?)vQx-@Tmlgh|Uzu4+L-Doq(8iFO)6-q$jZB_vHtjT&I6tJ*;BLb2o7j zXMlCbz8hJl>Ozb_-$s~Hl|fx75%e3}T{tdxK_Lscw6&Cay#l?tU^PLR(*Hq;&j3t2 z6>?E;+|LP8*DADG|0+gHW95UiOS_w%03#9ebogzvNeL_KvCSqJz#GF8%gsA~!qA$U zI8t@$&$fYz45V{=TdE&qAA#mSIG)Y&sdcq%*;TNBLMyo?2ExR;0phwEP4uT!DiUM`=o-o^ z9-z7N5?%t9OeO;bq$R$+=_NmO96aGiP>g82u)s(1uWCTw6I6aWq|VUs%<}P3x5TFI zn^WpXyE{~dt@eEJCj$8}gM;X`?164?2JDwd?PvV9oE6~$Dj3IvMC;_PDfBuioNZQQ zC-~H&juTJ0;8(_P$9s!I_Lv;qa=)j(bGARZ30-BRIT7SYgZQ$6>63($5l+DSYU^g; z1HCz(z)7}$QL=XoAz@1MD#5s)^wPGolSqv{Zwe;kf7Y^TZhqU082`kq zwgjnkC5%s3^t%|nym>yGOD;FazJP%|pSa{wRb{K{BlJ{+Ly5OL_&|lB*^JXi!u7_y#sl>!r4qj|GX|~Xj z3K;bp*6ewS>jlI~&e~yC#-E)S1wF4-G)pOe?!MHKe+p`I$qG<4<~&6+F}mr%Fa~&; zW&0r1ocV5O2;kv_mr4MB56EindBWQ(*@8ia5$-&RI6|3Or1Q0cGKXwJdZ^W*()}tpBXI)L)7lQTj-*{)hQ_YBc^-5#%PO ziLN13%A*jDBemIto&J?n!L@CIil3^o>|5=anO;X7XUH}vR5!{A(p%Rwsv$uC6C7eluj+;SM;Q;)cp>rm{C*pc(+=| za6a6xMqHn&QO92h8y)isaT!BZ$l;}l+mDXxEvGRGlH{)0qLo0cb@)7lF!cd*L6No{_$Ll=K_Y`)3W=KL}o7 zCCq0!rAfc-f3~8K09)38o2z{75~bLpklHtbS8J6V(o{OVa+cH3nKl9L*dyb)q}&e| zE2n{qrWwtwZN}vtTxZx0{92{{tRDVn6HtphsjHvtI$Ya`)(fEEnT9&XbDy`Pk(jxa zz}q=HhqSK@_F3@C0OXB6PnW^=!mshD1j#g;e)b|C1&e=$m$*m6qEaw+)gH;exFQ=N zEc9Fdab9QWd*%$AH`_9aWa4qQ<0kuR=20QDQy*NQPWgf5@EdPt_GCVGCfnTR_GJYQ zV>s{~<0}4^JP3r`yyYBFK1UE=Ic0CdO^4OQ;t$yzo-Z6)!QTZ~T*&mGB22UHb zZ=Tsp8`F+NdAWwKP{RccI3*GC__052d?Lf!5rkPz>8%$!>U@R1&gS>k-#Y$q zBP)JvN4>WbnDLWwG2!w0dj?%kE6RH#g4^7Jm3uyXq`PjCeRrr1?quJ--W%q)Fcc=~ z9#s2fb^YZvfn6rmtC1U2l%3MUeOe8g(!&BI9d<2Ti&?1_TB?#+(|*^qIW!PqhkK2h zn*-fMq#WTp+%2q^m*Nv_(fJf0Jm1wlNxkaURzp`@iD=e8w4FNQJoL$t4Kc)xF(k57 zl};#c@?I=N(n_&h?|2_bz5DboHrD$i`ZpviFJQ7`wHCi7Gd)E#p?66@c5>E163@Mx zQTo=4fYdol4?AvJI)bal=-Bmd=>v6v7}K?^9G`BM>J{ZRN>Vo@4({6Xmh+}|XD0n{ z#fs8@?-Orfe2Ee+^->=qUt5?)UnPa6<`C=27SZ^iPIt7wFB6KZ3E>9q z5Jnh71_qwXp;=X5*bErkLqO?LwssLHs?mgcWu-B&byno!pS=njJiK7X6aFer3N)yv zrAXp|W>C}0Qtr>_>Tni=;Af)M7GEcTG?YuYG{^|*`UPOAJiEt$k^`@RJ$7&A^pF*5 zE=!Za7O_0P35+nTdFH=$31^&G2kAq7iF8Q26K1MI)3BY7dzS5TY;+d%`}xRB8v!88NnlgwSF z+P%c>fTddmHE! z#5d)1%YtJsJD^{8kL3SCoW<5&e9C{k8y3(R_J038b2&QVBM=@A(yMP?AA}ChTpzWC zrC%s#)sR7_Pu7W9_2Y(?oZTj{)RA&$h^IpJ_*~)|0R=i*|tt+ zQS-9x-j8ATGZo*2?){O>t8c#{39;JeMq!zk*Rv!>leAWAI$dVqhZ<5c9bt6`%FfGuN zdS6)nkeR)(+#5Y@KC8bp%hJyF5?4G9tkq85ybigy(Rgr`cr0~(XgPQ-T=syi{p#%3 zd0_qlvzGOCcWb6hq}!beu29dgVFEi4;9QIXXMx|4lhoSXps?=y*{CCh%<8k6h7mmk;`t&JiSxo@cx!E5FyNK2{vQ^M+8VHmC-7RO<(dEYi@R8#LZif)5 zw&0&IAnb1!KavUr#$|AsMb%&D0)`W{fEFbIl#I%s!J%72Kc5`~+Gx{-!s%B7+{&x( zXUCfpOre4@_;e8W!Tv(ScN!KzOotd)5;5GZ5N&P^TfA6+8LBs3^lNv zyJi+ZsQs9cl1aekPRQ*}pb}huOrV~*a{`E_Ek__*Fj#bW?g>u`=`KG-Kke|_zP5pS z`=a=*?PI^H~dWb}KM zgwW2-*4xL+&dT+#yYALbB!u@wL|N{#{B>7S@{YWtkGGDU7f7*rxVzc8`LKxIQE+#0 z_tN*Uva!4Kz|POn#!gRJ{*IEPi;tbxod*gA5A1B*ZSC%;*f~CS052C4y`y30_SnaP zML^)Ln4st#eP3&zCmwcpR9&qe+ubqvbN8XPwUeEV&mAL2TktwjQ2}Y`{~FcrncsU5 zQaM|9YdeT-I0OR0_&pDag5Y9fW8+}s;^5#C;DUcd__(F1(fAyZ1cWrSQE7@wB@KoXa4x!Es|Wp)Yln8e z(dng)sHycMd%u{BvZjGA8^meP10XS zY6fKhP#J8(T?64L-JeGCE(x$wAPJhj5jNofjTN|p+d$p&r-8EC54O7xtfIm8y5(O+ zQ4JDnCIppuNZ8&Z5hkF>X2VighWZEpRdZ~R6|GtVyO1|shcnhSp5-AO0)~}(LH<28 zI)J%D3@^ZiZ2_ZRaEO0+Jk?MlD!cmn1FWmb8oA~TRtcCXGKSy$7VdTCwb0d;r{ z20#=6%dS7~9bkt4V^DuP!k;nze|l)0HbdcfVvVc`eFgV`RLqt5f&fRqg)tDYnX68F z2=PpOM4|fS8t~4){m~iFtOE8zX4EZJzepr>K>oAJwF|Zy$0FEHRQ|9=>@iB)4zLRMAuz!sC#n)xIt=#6W7JMj5+MPtO&HO z`Im3~A4mGf_x3;i)CYl=Th|mYRR?e)S?;0i;B#gm+(+zF?T+W5tE1FNBuOWGs%MQV zF*|`?o(j~Z{`QBvPOAYdHbn7m)z<=RWUUQIFgME0BSF^36zFCC{>uOD#BgM-3G_vo zjrK>#tD?-z|4D_2~`J|I=Z3tW>^#h-T#oxE4#Aewtt4RH#FR;D!QIa3$XhxhG- z6I4QeOl;gOywQx0t{@`aNCSOOMwq)T5HiZ{EtC;JNdU9-A_2oJR}FX(moO7B{q;ea zSaYlCpsTf}PI_wc`v_l4`EM^{wzX6%|JUR&th8vU)_~y`h*k}n$2LC#xL8fO8Iq5F zyG^jS@#2lDjCirZus4_I)-`^B z3=w}8oq+%5+p58`%-Z^+U3fjjqX%S!IXt2vaZb-V?86E{U@PVu#BjHQPsr?%BQ%}SUU6K~PoSlhG)*iA{DPecd)i@x6TO~I;9Sae2 zO?&rYhN)u(Eg^4#67cZ$a**%Db2>SGe~VFH4(w#Yt4>Dx_EXI}sN>;68lB3UVal#YL3dIzroZ%P{?nec$;y7||Y zD1n-}_XhThjFzTW>K+4C+C+4@30LStK1ZCJS+9?HqOPE#cUek44>csEIJDm|4%ys& z29qZ;nQ92qNgb6G_)yltfM@MkcgxA|cAhAK3bAg-h}~n}dXqZJPvJx8ioz4C!HUI1AcF`(t+>giSDSx_=9BI0xC7n6`kVVEI#hYv$;Kc zg>G&TDhH7Tj0xoFKA+x&jFd^^Ov3fOA$(PKl}Vil1s(3jpp^!Wd)qh6(jP7| z;fvkp2}x0{s-H$z{4m2VVJBCYOue~o%uc*BpCWItr=4gtE*pT$R8NJX(b z-5}8C@y4nIt1-9`)Cd^)0`$0Rosr&Cus#8)c)~^=Xxw^p)KfEFypJ+W?t*>!$91j@ zHip><8Wf&^E6Y7G3Yp9rAk=uJEHAZf=>lsQZ^y&~#k872&>ppA4S1UW{TlRtcS-LA zopM7MtVh;W!zAK_zGdJ_d;+c2fcyRJ@=H_g1LUb*AYlWzz=!#yS=GToVfIj0!0Rvt zyLmDOutbBg7*_xNw1n64IuQ63&{SDgY|r^dS=3CVy{PnXY}JvSq4O7`gxO+h$lRCA zJ1X5C80JBttt@+1`w=ExPsVD~qifI!&kd{I@H)U6u0>t-axFipx|I#gi8##U!#`B+ zySK6sQiOdOqP<6MBc7j&R3Bs$9v+*F<_9fq*S9^)YuR#ZOWL!v5|Uc!`<=Hi19eW2 z*oAJZ36GwxB*N&bpLT9{!aO@C<8z;sk5AdhGxVp$S518phBYy*Vm~_U~ zLrm3DHcP!7QpxRMwNz9zhRwldbYPjV%b2=T&R!^UAf^XZ)Hy4$K!fdmwz{J^*{@2zEp?+qWz@l-6EJSm`Ygv=f1 z;Tt&@p$kuSnDa-VI>t8HI=3HjEezVzA69H5(oW^|jJ@W!4b54`S5&AvfUgGKm? zWt{Yf>iFfSwj^9iU3g)jj+dlgIYl2E+f!O>>^*HdM>iiT}#|6E~hVDAYBeG zK$-q22Ri_nEE@S^74e!A=m?twr)xxdkWwH?oZ>IT3$H>WX+YZLub{$&vpEa|t40rs51HoHvZpx!i~MHUPB$KO#v$o_wBK#0%{+DE6$pbj8$ z=K|u2fPWndQoey6U2P&?R1(Sxm0w(b=Z>ZBF(8U^(4=lyw(cj!F3Tc&872^)c8|zH zRj~Mkf?8gOZqIVuPC@q6s1?z>Gn#F4L#0=cE*z&p?C-tGq3nG=6)wfzAV&`4gwNpc? zNc(ONv5j>kseW4WKg?B=yvG>#J*3UH)?TRXhv7{adt&XJYXtTo-ubG!v+aZDX>3H# z{VE+)F8IDQFx!Gej&MJ>n*;IjXPBo~axh_^A4XOZ*#X%g;SFXJkX!1|DUW1HGR(Js zT5x#Mr{M~<^V?!c!W^I_0b+ve8&c=52yku&RgxKgv0h*mdYkgJfa?X9#D&Omgz%s{ zhn2%qCF$4q1YOF{wEJb~*7`7`oSOvp?FD7tBHF~NgbOa-6nYJjx4LM-5*ykmaExhH z@SG+^K6|m<$DtB>K4SDWMUb$pyWLxN<>&M~gwQtE@%qX1D0TLJ8S4(7w`|zxAOVba zG^69>C@!1!8KuhPgO@K=3wC-`BG;o-RqWq5c?@wa6o*vN`azfNq57%Tag@rs`f7*B zDX={pc(6}X1+K(ZOMrt6HXOw8Vzr5ROtAcJqd=V3{P&pAM4CyoS{XcH*t+L8Uj{2N za*bAg(_2jza{aJ64)5Y`8;bwyZNPs{0@Hb@2a7u(4k(eBS2=c%4nkd3EAc#AP;eZK zf&!_ohX6AQ&?CsHZ6Fr;k88jTIQ0QAsm^2<1RXl=pdJ-*?g9FLK~!0J$N>6p{=`cE zxyPzuYS>*sSKVJS?TO9}*MVtU9f;07v~NDkFPc@^pI4f`U#b}TnN((KE?>)NU?h4Y z)aD?j8`;gdR%eKyEWm176hI!*`U|{gyi#j1EUd&Wp$PWUpj79ffBvkh%`3@4)lH?u zr>agWq@F#A@HeE0Z|q?f+K|P8YZ2SRR6-2E5N5Zxngf@H)N zhn-N+0CX?imBAPmSjUWRT#xsYpL^e;;p${G8dyN>SOw(r&PNOh!x&P??45{bCu2O zi0H2FQm3bNnzP}(%6pP_XwDZMp$oPF5t9K7ECo^7bAHiFm<}8!Z0Wb7=nBvA-@hR` zQe8_CU5a9hs;j;D384w4iRKQOcxm(PLR~hbXXXztiyJ0eDo69M1_^r>u-gL&uW8R9Vwm9B02Z2n|`4nW>cH=9YSl6XPbC4@7iu%ffjdL+n%zP1_2c=eHFEi%XX<~Q-T!&w z{?8v;m%EokEsEU?B*I<-$(YGSA_g~5kq z-V!!-g36EWA<9hJ0A>2mv`N($dV>_mPn2GWzvXy?sZncJn$pt_R%QmI?DwMXxcS?5 z8sW|HXPKko3GFh2tP16bbH5vu@{(qGpUIulOmaF5ht-kM@b{TxuTyi;B#x~J)FAtA&;>_chlZrJ(sL7NUp1@ z1l>~%nc5W&-XjBB?`-n4Ph9l4h(k39vsV@U%(Atj6|=v%Yds46IGnDd?9}ggGJ(PV zK;GHa*=PUdBLpqKPMA-)$lV|wftg($GBdrXl zl=-rwv^?whN2W9tm0ONQDKh!<-FZLqb(DQNQWY=^m(VM~6c=&Fief3MtwFA~I=uSX z`l5V58fvAsgQwlN@(iYnyQC&qO3iKT=*{#k0vnn{^_}JsJm!{=LZ05;)3L5Gh)dr& z;7w9HSBJV)+~Hf;4>(sVAT4U23|cYB*GU@0^8pxW$PpoJGw&nN}uoEUA>(O7sAa+ z1Xr?B)j$mG6+|ruHWmDczCAbdJ56DrdAOprPUq<)^D4rX(NU<*m-xdin|*(tlQ3eO zTfxU1v`=s;9`t0D=>)W#?RGZ_HwXy6kM?~ATwV*wI_!cq^t z2Wj6{c@>K|iaG{AoLb50JRegd)sr}Z;4sH=LN)o;1FPDG#C#;9rE|gh2y17>^_Aq7 zH~5?wcKj1N!+d>N+$md5c6m=(3xc~A78qwa>pr*o>wTPmL2UJAc4y*0vL0|4#c5oPkv^ZZ|9qkqI@jen2$|Gp9Z$19MVfRtfYARv9!W?j{xve|UB zJ@W_{CW21Me?(w2^iAsR{bFUcy0ydDE|h5CG*D^<#e zZ3cl`DMr_DtVX}e-KR<^I2~9YudQ1TaNqJGI#_CHk`rY+XVz|umnj#KE{~jykI|vI z3a#-a6HyjlG4vBDxWy(q3aI4`?VL!~0%3^Di?8k4gn_{??Nvl>-fM%-k2AgJ!nb?59LO%AQlAq>| z$tXoFxi%d}d|CEy2&q}G*gJ2=IUh^a?tsR*hRTZLfiaZ|zQ!CppDYn-xLtdEjuV}` z<=aW4U_Y&$lyOsYy~U_#t)e*PW}D5S`Tf^gotN;4p`;|8dSk?03xh|Zlh{s?^|>57$&CEq6v zb*5N%alsj32G=&MBfZr&u`XlitwP;R#p^Fnx6?fm#Zowa8Anaj=zwH)Ku#v9b6xP0 zPW7oYkbF@0il;Q=^#)V~g`e&hY>bnabvP<2ZoB0%vYA{Cq&wv)$=9mypMFtfLEa|U zKnru+95&Q?GW_&1>CWMIa-nw*7!^ix#n|H2Gy5* z#u#go546(`%7A90>{|EFT=YMJwg34w@6YZE1c4c_MOBpP=CsZ9GSqNKScpCtfO;#1 z3b%o!TEc&YfM6OfLp}cb54U_D^eT4OLd}G~dw|^e>?Wf9Pa^iOfmeB})D?P<$#FLI zEkmDVZiu{Gcz4b}r`9m(9K&p%GbVjmr8HveM}2T=-B_Q_>bb4`Rt--_+hp2GgZIfj zd?BA_oP~7q1);y}3!U^mP52d4z8|gd>AD+-mmU9{V-mw={DEg^u6*nR0(ed9H9~0!hXC8=}HHwA9&n@3uTG z2^GIL&nH)U`f2uwIEJ*(?#x^;2oI#KH+I)a*C*&wDhXC%T^7!No1kwjq899!p-8uv zA(+uQ-quX)0@up(Nf^}#qlT}f6FlwW?lPS!SEQ$__tjXn{_$k6Tw4qy&yNUUijit^ zw}sEyMm|<;D>!jPMe0%7uY>hWSasLUhpG3O-&%&eDKyIoSWtQWgiic}u+Uyv?p=1q zp<(H_ME5M@_In(sGQHJEn)=!Hjz&42WRPfUHruml84!Rf;>gcN2_u)>I=kC)m*wBI zx1)`)>MF_?038H^GO6vhB!(A(5Ee`mP>lJL4MAMCqpK|gU7G=0(Gm(HAsdS}Q&gH- zilY1l#J#0J9>)m`B^sRns$>1TFxBBMP^ehfp#R-`Hr(QpRDyNvIGPyfynqKjrAa*m z*rx8Kc4lJ2?!QOHKvH7_z~DeQgT@0^oyeo@1$6a0Mj(_1!=47xM^7V4L|ZY`lx<9j zhc$|cZGu9tHyHKpqc}I`+XirMx4fX69B21@^KH6tCve?fBm7B5VE~;1Zz`>u`ODIr zYHIg}zTRBi2iPeYrVmQDo(L&AL~$Qi+dhXtYtUge9#3hOzGm~fEktl$xs^jS?@5qI zd=P}wNR^mAUm3pe~+3%e|NbDLb(>sz=9xzB^OHxfzWp|6Qk=XtL9Qg}RX z@{=fjMHnCsnaWwDBjam$*wAvfFn!(Yhjw-Fr3mwKP9Jd--66KqMWz+wz=eu!Tmg+W_4}Ik(FkenNqJN_C zbIZtKZLffbMQG=f>|h)=H{-p+`1d(q3aofF8LZj`*a)#!HG~_g-RVtJH|b+u&{ZZK z=wGXIGOe~?TXiO@l#N@paNp~9DP?(EzfVpfye?-x(65&zUS34FA@OY1Bq*yqL#orR zIQ8K0yZ;FdUpf_UDr;}@JdK^POh^38jfZ}gbA~dKaQ4<59it@9AE`T6W_uL5XC&`v z=EfB&h%!CuQ)Fwn0uFm=(&*;I*s&-I;Cb3_@^{+Sc4G-gIwhWCkx|kpT9HdRPj&87 z$UR5;gbMGQ3EVv|NTw&mP|$pS!!b6FflFm~*XEJMSJx%+><|_!c3DkVoBA~D^L`_$ znc_)Nrdx@Wr)#Rb;e_>@Mf^8~e^pb=KCW&ZIzl(l?u+L^3Tv9%;;f|&;g`=#i(HXAX))k8Meupw)Gw+T}>5lP|@x@y8K zP3b0KeXkKh1E#1o$y)V_K&_xXdr3>TlYZyTObipYj~K@-T}|Vb-0K+=z2d$EE{z)6 zwP(-$_}{4tOb3#71|c6bVOS-dNf=RkiNDv8f_tq7K6RM1%q6{{t8F=fEN*Es)|m_^ zifAczqX}Zjq4L;7i%0$y%l=0xu=ub04%xsDr)-@6NQQqEIB%=YOwagU{H$7j#y^k) zcu=oJK~(%l+y38A@fz^d@_*!5%5r1nrL#eowIzT^|C^B6a9bbIz65N!e3|HdQEoN!_~uoCMo|E5ItBy{W22K)<{$JRZ)fk-iAn6ngQl~;Af3GWMCN* z+C_)QCA+fKriew5ha8bd)>H?YMfKxo zhc!pG406z2tkhTO{^FX3PcYA9VU9b##^=pA$(50jlRq}b=Cx2yhHBaQTh&io*3DEr zT&tUvykU#JQXcI0sb56#u1;=*LVXIb{mHu6;W=vc8JK%T+(rcyfseui;f~E?$=tvR zR;mOtAeRx&s%soCX}b<~d-c5yU6ywiyDRi&vl#olptWb%djeeQiRnLR?uyh45Mxpx zQdsppoTx%raq1V1eN2apIkRP6LmBK0$bS{g+rrm+P6{gqdJIhZDpko18t=kVjJ2yw zpJ9az)q=tn_jdQ<^Q|!r`=v#s zO&B-nb5X+WjY<3PMn`sJxh@N4w-!bCjr(l6&CDtavY78LJ}D|4k}6%#V5l+HQ^|9;w<&a7ZmP*8p8PlvY1uiytfGE%B0K^MP4N-&LLYC;18;0GKe1s9F zD<&o5<2wpJO;q+Vrg&sShI5~t-(_PRH}$hUpX7kD`h|PNO*P42Y#!RWri*wM4crR4 zl3su0W=2-_Rq5zEv8}5mR?H^Uk#SAMfPJwp0WL)OfN=Ud)Uuq7CaG=w$9S0bq_s#KXfN4WhUPiO-{7-1Rfl-SQ)jL)m_zvw#4xG3AT z-4ES8gGhG_pn#NgcMi;efHX=-ilB7INSB1tFfep?NQVK^4FjljNC~L>e%4xhz0ca~ z-5>oj3_rZD`#O*FIR1x0ig1P^%ou2a2TObJL?Y#exV6u|9nUmlbjj3pJN>L>vdEC) zBq)(A4(t?TSQ@duWnPe4){^{bLW`*CR$K-Z8;6nV#J@h=J=`wtNxFWg1J76R z#ff1EsKW{sUw-W}YTInb-ikM3iDT2VxVAHBLPXEYdEF}X2Q(ORs2+H;uEnF=l<|s} zf-Yt`eT(T2=uI#MqkU!riMA&F;(dcbT<1sWEU!-mwS=Dhddm9IVRP8=_gf<(E`}56 zAxMssY21HZ+oyKdm%RQxuhT;z=Uni~3&5-5Dp?!#d&NSonmgoZ2Tw#y-;6j{(iNPo zGRw6PSKaxZb-Io_k2=y$zaQK1Vpe6c>WQsEIaCSWe5Gm{V9NN!e2B?%^z!b6)yHd5S*s7#tQNSiI7#QH~^j z-bq@Prpb@E!$y~3EoH!*A9!V2GPT4tccg+so(a=KZ%#%Z3$xD-%u%+7@}kty(7HO(VudjwuftEoQ6_2M5H;dWO)n{mqzN5T(_qBO<_ zKxW45e?Z;?mpB*t<5&h6mVGcbQBT1Emc~Zn-2f7x`jIk>x+9A_x09W)=V>_J=I@}N zti2^L1oz8#I$mU%;(tJDy5WV-8Ti=>SX2C{P9@Pia~-C8xJ_y+MY2%o(Bx8uG=WHa z&R@~L^8HMf`Z)*hI+bgb3Jc+FqKbHwTNLzzpT&}fs*e?JXJbY@+MF9_({I$8o+R`j z*R^a=YqAB%Yg+L`D7E`SjZ%XA(_8d9ZoTL^3(s1=FHNQTlpDXqOn6`hS9&i`*+nd%0;{QoFy z|Mw#X0M^q406NRKO5Erk1`HtM^MRWX0~0Ox>32IDp>V_5h^s3b#5iB+&D_cHpgD~0 z!0cRp3MkiW1!}bazRmv+QO_7t6(zQeshSQZ#-Ne;Q+@|?9-eSZj(+TBAe;Dag$@`| zs(~|N4M0o+je-DtWdT{k@)bDUj+Za!{^CC#aYzM*l%M0)Bhnc{3iH%I^UEy!0g;SO ze|$jKi^hK3iRbrLfX1Ak9O}?^1*V9ix>${Nvl?q9(m)O;SAVs85L{G6sZLoKf#01? z@f=wXKy>&WgX#h)N^rv?OA4+~X@H9yr;E=bRschV*_(D~?r;p(+8BFx#ZLCx^LLks z%z~Gq7#bc_zhUns?~z>lgrJ~cvl+Lr>RWx2Cj$q_SyJV967I|Nd*1@vw=y$ST}wy3 zFzW0>YH&vQiZafGCsvmJN<7+~Hpi8a!qbi63s&x>lp{L+tfv z0=3Kc>%@VmldG3`C~PN&a|k6bwZ?Jyab+hRNMbGNm+2DJ!e(kg!>7f>8KJ^xKHTP< z*nwAu=RZvStfi1u{dM*5Py{K_)xGm=#_UHark4y}3|I%pZ#6YY>^j@G%oa7CD9$i? z+H9T#z*&6AIWzHWJY~Y;M%b}K=pU3FS!N2#+=Ia??eEd2<*Qf~7BO?JYkx~wq-bEY z55v|lVEQ#uLas8J8Olo%`&3NkAEcPi*YY#!*U#UB4bS z)u4U!7r}|}S|r<-WN8XlySE{B4Yu4V5`dNR+S;g@h&(yWfu9hk@z8KmRO&L=d`)ydC{uMNtc2Lbw>yVya3e~AcWHa zT{w_(E5I*sd?Wmf;ebmK695$%BK((vSVeyb)O=PjWOBc|V37gR!BFDq+z=n2wf6=O z!ir@WX`GYpXS9uM)RkZWiiZE@4*iFY_dhp?N_cgLZ5052a>U}XK~~E0nN3^(9Uo4t z*eH~rzikCHI4hW9CzJ$>)d-;HzAy{HITY5m7J9rlSIvts&Iiw*mG`Cpg~;yz$29aW zo$!A?|6f1Oq#WeE21HR7kj*T;WPd;=QBZW;^v@TU*B<=-;ZxOsIlGn855V;P#}Ng5 zZ4<8tbzrFCDyLcl}q%E=}}Y1*Su7X0(3gq80Ipl98`l^th zfh{?-W3^4t%Jd2Qk;;9iuhaK(FM^Z^%aZwSU^E8E?v*8u(Kn()GdwK`(pgC);lIW| z$U*iQV&!T6fbQEMzf}52rSEU+#P?aPvS?LtAb%Cjlv`b#U}-*~XUX{1Qam}llNUoW zO294l{nf~$J6jS1=|o$GR+Q9|cV=88KcEvdxTCA+Zcn)~w=%gizgGBr-9xVX@z*7?oAt&yzk=q@cl}%yqpT44JtwW884$sC zDAaT34Q$du_&tj|oKn(kM~ZGQkKdu18%#^+zAI$5O&wnQYy0&W!<0r$ zf;z)}+7%KCyT_-lnt_K8*^7PWcjsI3dYvDa8fJM?~UO_a@6__ z3!|$OmCO6s$b1PxtgUzhRsRV$igE0O?P0yxMBF!NPb^ z{V8RQSh1!5|n`R-O-F%t2mBNr6_tRMeZBjYR-sO=NZuUSJj%>};yE{rHU zmmPv`c7elz;8*#~Xn`|xac-_8#D=wss3sJs(z^=kG*|+V56@t8P~V@=gq7CM8E!xN z(I5@6B4vE~Dtex}7eUPQ0g>0&=KnuoML}19rZYZVY9|BnK@4PSIWW|g8??7%~ zm*DdWaAukPPh3O?Sd^3lI!|Q=94YQ|1C639n9JBq_mCX2r0oJMa^<91G7SpFv!~Vy0*(zq}2BUAaH*(mS z3W}lysKDo@(*}fbQys*(mi8}++n{{js5m2iHyPLdov~6nT^)GS51>?lwIZ zqf6$TYH{!F_#z<%OgP^Crsf~JLS1EX+6V8S7>*~++#M-k#v zLg=N+pyF+RxU-X05f&dPSJPo|$+G?gu`Wk9t55S=gVBW5euWMOURqw!dadV7L3ep0 zJBm6PS#pda9G;4Y;L%}e)v*HcO*ge^5@TI4s#grp;H%*w zSH@U9lmwd*qu9`3MBCGON}m#7+7M1|HfFd^PJXnUQr;??)!}~YltC75xI9(kT4WpUG|bCVCyXO-g@$lyacjwXCd1&0&YN~=&VgcQHui_eNw zC2Nf6Rg_!6?@<;kCLd|{40BCnB-~xHY<*XgJFi2=x5Td;6_mwlO4;S@ZzF)A*LFZF zO=^IRBKFk4drB1RUXwiZhIUfL6mDT#k&asl!csx+Utlq~2S;ojM6zud5KHOw$s$u* zm89_JfmUp@S?`^qZ4VBE)LV-rgq*rx`5_7{&@$a!5a?AMdEgNAU|@Ko96L_#cM<2% z8)v`Aofzq*JI1U@=wXcJ9rOd&xw=Ck98LCVfurn)zxaFA*>Syu3)BHyf_pG28*X7~ z2ko4f`3VJMTFP>d?)8u~ier$R zY6%KTqpXa6XJ6&xg_TM=U2Xq>dO|uik5fsaP}h~OuqmRr6x_B2t7+@BBqe@?6|-#1 z1~X!DX)R8V!HD|#;*xM^25?#-i{YF@>D7&wA)?fLwnX@a)m?inOW=cPYputEDSn3c zS(lRN0`u|@^ppFay)ZysYiF(wwGq(Y?gImFL z(A?)?K{5x41E8!N*zB|(Age?L+kn2Z$K__fAbYKY#`6+Q0Uqctj#y0O(Dh+pvHIV7 z4{!woE;15>W>;$c-v`a^H<>I!%uin6hjrjI37be$UFe(rx2wx_lc*Mkl~yxF|tmcJ)jcZac%k)Vmt(K1_^=N@>KM>hBE= zHFd5*L8xR`I-DRR&?c|VATTR(Y%-R^h8*`k>ATL zu8(hhC|J7FsqSvO!w%JK70NLyeEN(^L{_B(lWJ31#i@1fAUuV&wt@5*SkGH5BRwzo zo@kp>I(AxBhlXWUqO&xD6f}#Q@y_vv%(Rz|q3x9N^$7hwvd+u2bP4Csf9q9gIgXvf z^T3zR^pEIHWk-2R0{E9WeMr@|cg(oD^NIz0OpJ33TS1jLK2 z2Z>};$!2-Dgs4Uan>tl_MMGN!xv@N3dddpjf+n-}LNUI7?BhfgQa_6K#(_Vv%_EFl zh;&UJ6GVmplA-;%b%|mZ0^bN7j=Hn`2D1YDrC#>br%V9HqLXN zoVJyZnkeTj(j^tRZU|83HybiFj1m218hf9Zoy4Izei_8$Im9Z#(NOnGnQTIl)`XB2 z>10L0SiKN}X5%}lEtf9z2gEx!Rk;2@u%kbw!VNnK=`uPU!0;`v!I296` z`+8oXcHckiZ7hY00f7}I3Z*uo-UzhwbG76kYHiA{;ec9E4Ziw7OaIrfWdkhPwEl)6 z#rWutWONSsjapE@)Zt*-BIn77HYd_Z^#yB%A|A^EJg@ho`SJ68{m-3yB~9=<9en`( z+x{SGQuAX@)9f2g%GtOSQF~$}YG`b{$9AQ*&dyiLp})gI^`s)(OWCl?=Xa(nIOa=r z^wIudBu5%+y55X|xV&&g8R1<)!ghc2s6uL7Bbp2Ii&re$2NrCxR^)j;e?X6>s$r>U zT9u-WATo!0n~z@EAq?w8W^`BRoTuD-c}Gb?Tv?AfydcLd+}hvAlnb5&AadMHw2 z`!lmd#vJ?;1mJ-wTJ4gytz!PQv$O^=Q$hk0%I5&M&X*=x>D%K9{q9}y(r-N&W!e#_qy-J5Zcio*4z@GuaB5Hs}sW)>W39G3S-6iuh z0fDf)fJD>ge|W+E@3pU&5kBmm=Ly`&o>4H>0r>7E0FYM}M~-Q_`JEbS5_RP)K>+wu z7|xH@AZ|r}U&EP~LYwt<_+IIOEd=1M&A+Y5?A=H2JzpWHR2*C4t5TY) z;&1Yz(gAwc(+JITnm6xQ$~P(;M2xB!pKGHQg=8fY_9(yKY59SY-mL%i~-F(U);bRq7m=Z~ZHYI&K*? z*}*m*bw>J=g~sXe%=>|8sy4G<$$C|D+sRySRe2B>h*_*ziSv8J5$`@PJ&`_M+s{Ar z--e}nv&J}O>&JkGbkhkGVtD0VjKzA{fmH~e*JlTqll3r$rdo$N;ku1<=bUh0o|N7s zgtm-O&$A~s*Kc)xrZz9P)wi-q=1L+eNpGrjF^KZ{u8mY9ludfkYoAN~n)Z{1$E%C& zjWeIIQGvd86|Iv$pfK6QW<2-lSkq{O2=6MPiev|e66~7idaL~q%ZVX>11tp~hzaEd zS4l8S64~Q5lBBU>y8!B8VPr%DZ_WNC!EziMUU4jp`ji~T^wC%BQnJ93+_L@XrnPtT zEZB|GSCK(5h4z8Q$Myk$!N9Ujf20GAKC>6t2Z_ErZLvZY#QA_sUlQJnEEMvE-)~n=BI@g0KO5^yn!zvw#AEVB=Nz%9c3rV+Hm9n9G5wx7F zM^)P|NFUvOO^sZiM!H2@#fc9k9iYSp^V7+mA`3Wpp6ivlV5ICr6-g>f&N*9hk~LYc zpg~`fT=aSejh;-tuNgw1l3uv9uCB(6}hT?QUq5wD52@^st;5~*PVcO$v25g zaEnymXJgl?Eh8e04j?sfQr~rd`$xFVwiVj1Uz}~B2EuJDzvflihf_;Mo|IJXfXhC+ ziyX$0Dabd5ul-by0+Y>-QdBE@5Cs&buz?dCE`eGs5LC4ZwJY+-;@XSLTGoKZinx5~ zMPG>1zNN+w8MDFID78Nz?PideUpsT0e1a)meFBicY?24|QX9Ge_yk^v51pED=L?VQx0XijMmHF?h5-=#Sc!B`Xyxo8sMwMV3;(^h-LbHlc zN|e#Tnl!2utN2IN6QE^$tpLjun-7Rpo*+*C`xFHB=ztBbu*3H^(2+6)@Qsng@zGjL zCnh|BiBZ#o@RX33G)v3Y@F9SIhZTYXXuJQ?*j@lfY8BEQS)BW#NBh3OnpW?vVdi)O zx~hTd%rz-TQicpGdm9CXSe&Zt->JK4w;K^=$QUZWQ%Qmxq&*&9D4%-MESk&N{i>uj zZ<;;74g<P>{0M7P@;ci`2l(@8H-xsys6>;i+__>e9wtixS<|4abqftq7@f*z#EF zXjbeEOv1~nh=*H9b#d{dbOQu~XPiet>;Ov*uzmYz0ir-AXaA-9?jylMzNV&F4rF2o zEXU|uPZSR4aVbJvhe{hMS^cec1iZ*isMSGfd@5F=w$j|2rVy8UVu1DKo&HoLS*5j` zCR50EGjuW*ixdQu_#FbpZm;~N@#M+Z9w40>%=|IYAfQps9F;I%VZpD|ds4jyn1c00 z+1i=sAteUo281{lYQP_vCoC;e8D46;FGE64nrut?oq$I9#7hiPy7tvW#4vYlV`r^Q zPF4ttcffHzml6gE^?T-rA=c9Mw1H|;6hqe-K+?(ee?S8w)^$l*Pn6>7m3nZOH19YB z?cEx0^*20b~O;{n)ZWwp=X6L@3Xl2+(&Q8JFfipsn2B;Bi|s z6qRHCkx$e^1+OEGch}F^Bk3sUVXdx}@9(#U&Y;qjp)p~NPyJ-P5x9w`{y@sp z-MP6RYN)^5{b3B=Zm5Z>NjzSR3unrFohB)L)QSgJ|2f zB``Qu-rqDN^s$o!zkD3Bd_S~AgUM5!vmNu0&H8NxnJ>l>>Pw1h@-&uOlkF_zW0-5q zj_g#%xtMz&r9qZSqbl}#YN}e9pXgc1&HeqL2~?AZh;~zsc+_!M3meUJn3EbT|BUIo z$3R`up_S9K7U9hAD!tF++i7}@<9nR^!Z%_yOe{%5pV(?m6a`I`o?Q}DtES&;ZH(Fq z2qvi_;rHhFnI3I;6v;T#D64d&(vyJUmTz|xWP^a+KI&C$UT#HXW_GpcPFr_3CVXXS zV7+?t)4YJ;W;>1wUN(q89t;=&F!cw>CYUOrJP_o6V}=AQGu8z)eg{@Fk%%TTARXVd z1mygy3I5lZ|74BpC+Hl!Y&RG{JJgx9i5>&9u{-g>g07sUB>Hnq3X3~&;%2DH!?OAC zCjQetv=&{Op$LhjZ!lCiQsJ#`+X(<^n&gn3dRtdreK*)*lFZI~sg& zIJGGS?>Ny{_1Z&9_~tf%H@yZ!sfpm8=ecRi0w^F7bd9gr)M`sLMrGW2I)yCT8c3bM zN_J@Xw|ioP9tks#lF{vfTRlbHsvnJHJ)q?KQsx-K+L=Eq?;3skMI=`9!*INCV`Ea4 zx!0Ljv}=d!)wX?eNZ!H%KJ;ZaZCm%rVe0OT@E#p>P3*oWqD&KLs&$+O z5f#YmLF){|pQ+akn#;JHAkt3;jZ5!oSc^+z&HLLL(VNm#JX{-CFHT*qP{VXQ(*$tq zgN;eU9@Q(5>3Coqp|>Gc`f^XNAKi@TZ$1takEpAn~sSoW7iyxapVIF#N7 zK>gxgKbcPOm;A`v#XoSl%$ygbBbFgswosq)-i0xZlj19r)9FKAfVk^zH~BU3xbG`^ z^TI4g@~7`zXU8Nz3Ox%%$Zvl%6b)uK{6Pq-xq_UP)tt7=Otj8CJ zP@=t*R60Bf>PM^nLRwrd1G%1*>vORz^{Xr7T3ivBJ(q!aH-V>I`MFUXt-RkhHBEZM z+pfKQX8O##x&4J^Aju#5>B%aNKNWqu=#CR`;%HC6eA+4Md_4`VtUPE1R6rApSE*>Wv|DU+pf*#d^8R|~ zm!i6M8GF1{B0|nN8?D4d3}g zTpKNxRW;*ZXkTVYEo|-!e9_hz&jhm*)n#nC36>i6kBas=U+@*2?xLhj;{6bL^{}}>x+ynXBAtMYp4MIcB$<)x7fU<7hp<&27L&FmWa~V20L22wc51Ax@{Foe z7yrQ&=V15Q9>5bx1nN;L&vwc50jQ2ql{8rb#B5A|s*7SAVg&RM{l$s+f7WWiKLPW; z(OS?j#1WW?N>N4t8qEh<>UWwC*_C2$97N10;*xU$9jFT=;@|uLp(mYx&iQQcvGH%C zE8FzUf|WXWZ}_xr6(SS8uIubm696}Kkk$6bx^+RqNunS|3Q|`GkroM>Yr!~6K->I3 zp(6j`EpmsvkiKC01Z|T#`Y{i5*-lUd2f+QHxkX;m>+p9JekKKjCiu+UD4-mv&2;K{ zj}p*ubo=+;<5^&T+X1pu{?nWMpJB(sPq3fzK_moLcJ}#nN(Jj}wcU6+oVM{z(?i@i z4rnIT^i!=wVta(<6j1^3Vr{ zX74wE#<9r~m5$mI1JJOAZmJd0hN;J>dlc99HJx?0SjIkJ)JFPUiDCLcmr}yn1%kem z=IK4HjG9}*k-IJG^seOZm=xF>MM193FzqBf?u%LShZ<-c{Iwnhe1!~8qC!WpJe{RU<|xt&n#W1u@T`UqNRbX1yM5BXDNq($xEoL*Czw%YVyy%D}s; zZvk(rq5xd)H2}!*jctL`3B?Z}^DeKnbhOkAwB2q=6qF5`Ktt5;-I!EwLQEU+Q8oK- z;lb|}yUc^YT0oEd!3t%z5$f)l+MZ3PWkxRE53^ZWWkDI+GJ~u8pjnQaa3m$wfUsU z%N!r@_q8dq{h}QDj+P`HTaGtS$ZxZR9?d>t4FxrZz1;koLv@x+S(D@O`%mg6tOCwW zzri$>420G;+(Ld=vNnzJ`OXGDe72Qd&Qdl}cVc2@w8eks5L#-HBj09em z*c-7GO{2x8yH61bF)G>SE;U+Del4bqD;f-x;kXmrwH8$25PK+SZ*53YY@@iXcpN%7 z^sPOpQh?gDkT9jftxr|h#C;_(HqDxvI$P*}^Rgk8=s?Fmp{AmC7 zxshr}fmU{a7)J5u9JkqE+8Ux+-YnsIMI&s>%eY1fwW*(3s`5Z~!))v;SL!q)2o|Vk zZk#-AQsmQ{&JO!@t)VX*FNm zC_>eh5zdjRCBdT)SqBPKS|~>%s3*%w(PU1KGi?YZ+&xaC%G}TRU%h_5j!nxc=E(oJ zVySGLj;F87rR8|=v0@t#7zfJ0455DEEk6&sA*K|GE6A$9mR>J_1=jyM{QM=HOmXom zXzn4)8&MvP6q9F|Dn46{@4#&aD6I}Nv9m17fYz3;gf7({%H0yz&bAg*jRHV}c}%*D z!5RQzsDyU`1Sk)j9;<$!=OCn*9_f8N$lo`?EbEtT1J@H}a_RCF1pp6VpvL51PNjdJ zUjR$V4ycpgUY=?L$`7IG^NH@c&@On;=a`yq09GRd0{ZQ7uIu2Pgyl8B$!Mbi6sVp4 zM_5nUIaRDH;zyB(W6>)dSiUFBS^YC^8@J4w{7O#F-p$^oppN@{i|huOh%iSPF#Wcj z^~j<5D@=1FM>9@3A9eg9>LO>&dGlk^0$0LAw}lcOzeou4L;list`x^v$WsF;das|v z!Ps6|qoc#Pe?YqR-YGt=9}>!kfB$$?MehI%}aoLge!ZYM8P^EmP zw%ON8{T=qi+SJqaVi#ad(3jCRaYq+U5#Narn0XxfogBJgfJb2kn7yYJIsp4pV?MRB zvtJ^P4*Z3(P*8+hkZFaBT9B5bj4*s4!C5L9INhtg1y{rS`yr;wG;W-8&KR@;hs1!y zVc?0@OgzCLfX?r9at&tJXZq}C8@2g5)q5Vvk}H}6kD8CF{^YYoRH7f#heQ3?;|W0` zy-{GZWI8$FK1A~>IBl8&1u>nR$i9!A1Cb6B)_NVCxEcSDk5TgwYyK3tBALiG=zK`P z7L*{C6R*Bu4hLzOpG&qVt;^pWhc~a{a1s+L=;Pp~h~Z?(Kg}2Wt}1t%DZojYY$mu` zX!r7!5*z7ck~1gA6!`M0A{9UU5iQ(%k3Yu!=@oo|38zVpmbB64;KC&&hZqm+`ZWbt zx35@IV1xiF;ln&&jh9S%@3EZey;7uI$GSA$~Ij`s+&O5lpd4UgSW z8vmJ*0ABH+TM28FN_V_MlsDBUX(E&TCK zY_lxqUw6@){VG-z@ZKfF4U{9;j(kl!B{-nAH4>scFf`)-oI&U=yJ<+Kg(6Rlc%Epe zJ|y=Jc8Iost*YE|#lX6jm1E!GqWb3VB&-C-?{fD8-f+t-zGWCUj%__{B8YfLH{^@D zp_w}DLpFY*k*d^}3OW_T@D#AaLFA-e^ZY&sz)moI_k>+Us!H&lxTV?#Ltps5TgOyr)rtKoxWu4czjT;j)8`*ev-CGZS13*sdmu*t z*tb9XlE$J3Z3_~Nh5;>29?~g+7tB{Busao0dZ^<*bULZiMmKa_8lb2A=aFFn$hgSn zqTm^1GmiIaG{l&b>M>dx5W3*I;+%*6fDh5|R@lVo9|q=0(Lri<|cD-G?qkup7sAed^h^ z?@SV;-pI;yXdsDM%`D+-SlZ>N(AU=u%<&O0&)+{X!G{V}ULs#V$z&yjTaTBF^NHb+ zcwNeq+u3Iv`q1r<2v$DSAuLRn4bTPEtfXZ4l#Ys4qMO@6J;FF zkHS*Dzcm?i`6xM)y0_=OaA%a^#VE&w)os=(!|;c~hqseU5n*kO)`3Q9H4CWbU-g_K zctnB`&-jlsaNJR4y*b+3llG~v`3NUl`j#^OfOwuqKm^|xr*}$_s#o_#Mk4ZCxSd}f z{1sWMaM4Jw=EANLC>~J{Vl|jzP$c9}&t83?ip?~`$q*uEy7*E__4!k9QVUA|QFapq z#ZJh1!&Glwn`Sy&Qru}mY=<5S4^`XcDUhtna_v~ zOTUAhUm7Rc+^PLW<0dKhEpfd69^L?(mFCPnw%kDBHIG5c>|fD4XDpj3#b$R~8D3FG zXH(lVvv(rWj!W^3vmFnsMa#2Bg7qY;O%M60pgmITap~;SWX0KTC~uf5CIyext-9Wq zdBEMm6^s%Ls@Jg^+k~}BJ2%dDrm4=E<$fT0%sg- znHRjUf{h)#9{zx(w%Eh2Y@bQp@VEhP?qp{>S*fMS-9spIHz;ZpSK|T8_}Ur+TMO5@ z!5NrDi&EVz@y8nB*DhvsL0D*$+E5lZ|6i&917v##(_S+$c$}@B9~?y@glde;e0NR< zjXwdV-haRJ|4jl#BJtVmsP8v-Wu2U#B+%{u1G1ib@zuUcu}FB=KJ7b<8^B27jZ<3i9+`a97V(z9)H$A zV&Nx}a#V&Q@;pUv8i>`l_Sb=yh_}zmcM*}%MmPKxXw`OMxcRGU2g-15_*H3A7-@8w z0mc5+)%w=w+|hOc=Q}pdTQA>+i|VLyr6*-Wz#Pj*-FS`mq$g#Vhc)-0PKH0ggS1(L z&tiI)M=0r&8Y@_msD4Q@9{geS*sbX4!dlR6 zJEmf}hHc~0w(3WmAl5P>ELRde#Ga0`noC!qp>P##<_eq++R+60mxJW$Nnu3gyW|jr zi8G(rR_h{_$5^3+;K1DQaJ3FCt_0`lnS;SPB7fT7riqHAK!9c=A$Fpc^Jw`fM$zOO zO-t#xqNOJHd;Jgo{`T45qjfknA<7&`>Nql8AlJ^%tZ{b{!GjFF%Q~s6)uM%*m|``z z4P%wbCw6o6_Z<;`SWqB0P;uYvrJY7ogb3cW22ACjDpbfZU)Fdr_WSZCj7XEz0A~ThSmZHkZ0j8#CrN3^) z6m3;>Kh*P7HEc!Vj(1Rcm43n#a=m7YFI{S1y*r|I#S4gwvY$D3Dc;nNH0d3PwoP*+ zd>;!MK<1+VfJ8>HNabf9(mOcj>HcEl{>X?msll|hV^zfQtXv;v4d@J(O1Y`Ld$mi1 ziYkqUmXA0@pt_*5t%4ivqsuwsmeP*`%@3Tu#!WxUU#w>G;qGz<2hkN!fVF*{FDfD3 z)qr#U0^bI{>_0~#I3ckhIPFfF?Ja&wQK^4KaXONYpSC})55%Zw8pLmFV(RQ*0KC-sU!Hql zXTh9fTk&cl#M6XNto#U|>iX=}4k9$vKjq{BB%ahV^p}V$tR^8gcO@A=BZ&Dw*@d7_O66}cOM~q8QLcz&)T1DL(JDwcbx;C)WaQZx z*N;!7yQk?k@DyL4WPjwui;EFe5$&yZk0tETiG!7vGM>XxBL;o%C+GKNy~wa4V?c*@ z-^*7(bAm+9_DpdriFl?WW_%7cML*CqG{!WpE@&IDH0Z}{kvK9G4%4S}Abo(W8^fLV zqr(ryIsA-j0a`O1y0{Cp?$o*zbb}dWHn~K1wx;ECIctdSJnr=50jB*Z~h?^bPwNewKR5t3>qES=mE5Essh5a@*~7JWel zUXCm}X{d3gt3;rEaR%JiD0585`me0v+)p0hl|vZfj3)i50TT^%!I<`3@)c0)rutCv zCr~ckF_8<-FDt!5)31J2Pi_WHKa|xFLBdR#)_zN2snq- z5v1d5kUKFe{xc8g*6x6O+WEYiK@pEghM)7T zNsM)V{C8b1TygAZvuM#9O@jbJNo;Kk{n-^JrLZ27sSOAN3yQg7QiX5pTLF*fJR=hE z!?YJB;l6k|i1<*@y8~xUMdoK}d{8Jv{b2e8N{fC}Ye?ev)DLcaND&|ODu6^Ke6(pq zQtxYYyvtEm>!(jGLMv==nhIq-i?Wg6ahT7wn)zt{;TvsFj=WWxk3@I@Skj3_0?q=d z$~o^kRE8@9=yF42(Wz&o)w*?1>QPbB?tET3YL_{?x;4srzJizOmKZ3y6-yCfu%XR+ z?KqC46nFK-FXc?OsZWh_QHEK@VBsb%?0abdy5f8V zeDJYlEBb9@C!Vw|+SpL{SG!37bcVlHOpdNX#pr)Xw*T|2%t9OUxmznVc=ZR@Am;pH zWKu7Ia>mjx%%WlhT^{@@x9~l^Z(uPk_uqh*tA9C2ehOmV3?uDpVip)F0nQqOmEI0TSeY0Sl@UFz-C!DjroW$^c|8E|;Wd^U@lqT*7O= zvaPDXCX-4hJ& zWY%PM>qg!@DB-mY)(D--;&e?PO#AY>P+LWUTWr&+_+7nC=+hvzM)R0E8C#wOmnK{M znF}8uW;-rTY=qjyDj~W2d}^9)Xxu&!F9@qzsmIPs^jmEt31Di+b|J>D8&gZ{AK_*Z zZ0<2gOnKNC6}8eUpYp4uE^KZ$*WX}=oN*6QYRLk&rJI7*m zF_o{5{dEqIY6dfSY(KV{Qc2L~pO<~agytW$5D}?u0)FdUqQx5bKFybf1gD*gMkr^3RKnB!-=Fnoy%cIo ztmAgU(Bl%V-1N)siLK1Vw+#X+GHI|%gd$xzli%DhUNMQAmY<6VZ$2ky#j@*lo$Ri3 z(jBcp8}`tF{Q>5*on(PNl+Yu_@S!wk_ZF>06oV>nn+)1-u2eOJ+~Hig{QH<9M;YtB zQz)B5TQcQ+IYmUg<+}H^C$Yin7h~J&V%u~zAN6&N^UuqXRJ0f^_jOfqf^QkBp%el? zWL)^~#KAh7kBgqTJ<#ir?AB4DxfuoHd~nyNWg4>g_LM4LStLm}FJ^s!^MR@7CB?}o zj=2!~rD1)x250gkq()e%OWnSz(7X9?&D?Uf_NMFi9v{M|Y|NUREOQCiA2wucXbl^j zvx$Gn9_GMaIwS;>^KDpg3gd}{?JDy@KHjP6yLZpFC&bUw5-OASy&*)o><=h6_6h^8KN^1(wyH}h#(qzUV>&y*n3+9& zR26Rr-5cM%p9)#Btp;ZKqi$$p{UP}c;01le2IFtL*wF>(zXS;@wH2xwOj5uESYdpm z`xjmJ-xu`1Kj)Jre(`k(Aa1@WD;EdXEVt}1^6b&ig`%3zcRkpu%1j)SA=fMYaj3fZ3X(zaT%A_V9EjT$#g1N%%~ z-0GXT!@>2noVGtaZ0Vv>oS1Xqu%h2|Z^Jo0vT|7*)iIsUqEJCr z1F&A{5NQgkrK_*x1q+UY4^(T4n_Q=V^9aA)(s<%Vq#uRad5F{Ylqsw(&P!GmPl5TD zi0DT%F*A5{2#9Rghhale#UtLZNbr+c5*`%mQj&HlX3UKy;T!`3SkKp(5}}BZk4pLK z3s{V?*B;Qu6vA$CttsnwssS#igT!i2?{&WefTuh0B?#)bydZ{We4CMY8iRb#SM-g# z0%J?nQk{#EMY$Up5{t?t;dVc^2yB*vEr`e-0BIyF@H|b=XJYyo&FSBB`_wKvFs<*H zWJs=(F>}Zns!0eGW>PV9$EJ2iFE4??jNj52Lx(6@dWOelJBEfjYXY@Yi%IPdsiRXu z$T2xcTjC@Wzx*c25E-dWrwxmG1EXlDKhWp?7&228_~7n60tKg*l^8Z1tzs*arv{IT zY<;%~DCH8`SO*rx7bo9yuNtT2HA6e&`7eA&LA~Q$Z5-)$;yR|Yh0#Y=0i3*S{u-(GtqZL{PW>*Oa`)MzMQZ zSJv7E*4We2zLo>bJyDb;YIZPPUUfr^+B|V24~l)dphVZFdPRtfIAO$es!NfXjymcp zsQ#&evky-zGXaQC>s(4#AjJeDivLc7A*i#SE0#fK(@1IT$kK{RK*le=K^$++fmH2c zRiju$iFY8%%-=nW>KS6@sAZ+td<@ z)}7O#RHv+zyV$zqV}$G|54uA+>uv9aK*NjEhMg)JF|fuylFyI>3jmfhSP-c@`X$b| z3D!_vKaT|o;OUFGZN8tZSB&*1r712c_z#Hh;Eh-Xzq{gv`twi|V2A~R zvcNh~nAn(FMjFWocP}OS=?h@EtC&Gdm%IFt#-r81>-b+Y^55Osrs!Fl)|$uNw{YEe z;YQ^(7I1BwF8yX)@%0Isxg~IA%`=08I>ew8vORhS@HNedOHTltV_w(j=SKPz0kDdB zpPHa|LKQDKFw(y};a({U0F8Y0zwhS&U_4m|?rl%jPIHApSIjLnUqSwZbz+Va0PoAJ zh^4ED)&b1njgE30ih954DyVKh_L#~v?PRc3KT%DP-9^a9$Fle=Sn9G=E@ zA^OG+uDPD!VW-x`&7FLumw(2Cxt3TG5VXsgy?xv1JrYFqao1;OF1R!+G$*HV%FBTS z>;TWX(7)fo>ouy{D;Xv2u9baum->@<`FN0m>qH7*Zo8N8#QO!yO4Px`6c{~B(<%e? zSzcEy;$VT$O0~`>pLnv!5XZH&q}}H!b`;Hx~MX6DEW(`fP*O7tV@h1L-9cl^;LQ+_h9VwfQAvrtyfwB8AwKQ1h$afsWFC znZDLsl>&n?rl4?gpNJzU7rch8w9cIWds3c!DD84k6kUhCB6Z#uUSDw>hod{1FL$Lk zf}4IUXcl4o^5q5z*U>W+hJ}P|n5~v>ioxWt+hrb*!hV~s3_);gTrr5+LeL>nPU;~xAj@Vh6pX&aF= z*#-+!kY+mJ*WiANjeeLROW-9Vcl(-4%*!bBDmrnz8P6jh!N9B>Tm;c_FSL(;r=f0E zf3#F3GLru$Z+9|J!$;c0?e_V-d!#>wwO6^6-en@vc8s#v`cm-mQg|G24bd-|(|#MB zZDr4O#u5t-*w(gH_}X()0uL5T554(rJ!QEFnkDp7P1y{;3=;(3i6mPcXfdez;H_!% zYh{duYHg>F?%kIoO^#R8p&9AM+>t?VQ)w$5i1$-8_2Tjmj4U&g@=Ism1ik%C(gcoj zu&cvGq#f$$~2_lAp^cy~Ob_NK!AzJ9;(fuC6CTT%#&Rpl_{>JW6U!)%R zY_s8&?~C6x5m_3M`2&Kb#FP)Ckr$=?q^9F3*o%rx8aGdStfjZgLqyO2fS|-XKJi)s zVjTG&NS9ZdbCT?ZA7J&2%n85FpdzGGD{CYic#yjKuGZ)tYgzT@yLt>K^Cr$FcJZ7H z#-SQ<((DSq+yWm96&<4yBmg1L!mqv2>%}Xeju8DX5GF&n@(meLeMn!$?5K6V zTDFlhnggsIpI#bs$ieeZ5}aK#oPfwomO#VlHs)#k zG-#Iiw~Y!~1M#P%;-(chDhC&+m7UAY?*UcYt|sw0v9QU;L@G{S`EIzsQXX0S!C6!i zc9SaDaRXnXQgjQGxv_yrFO%NHTVRDk&U#rj1GBp1P6Lxxlfu-9>R0JU8P||7j-C2G zII%ooyL_2$nzoSCyFOzKB@S(lso93*XcDkDoxIC#_A-c#|j23yp<^(Y&jhAubgJyKi!~%Mf5v zqsT<@_)>;>erMyPLazfJRj_%c=!gQFsyfiw$`D}vK1tA-vW+-ctz*;(@jh)n+vek( zy3dQ_Q+$z(;}{(|Lj7|MZ!PrVVvs}`HD`N9pQf?u&va>`YW%nU4T$Y$OW6lw0|&%Pl3EZw}GbSM>rBS+WX%_+E+|d6bn^Af6E-k{Wyz~T8#D0=`b?7!9Se|s)o!CKH1uM3CF6fl8u@$1F86dxcRF^&nQ zJ8Ad}1pK`^LK_!AFH$_lyvNf3?-DV0!cgrueQz%ek>*3CaW#oHyw?=Em=(x$GE{sGg8aJUeZ?$InyPt zS_teL*=z43BncFgZiS-lVj6Z#Ahi8JXJ6CJd8TAznoGxSS_w~RDR5E~RLTtcaCi>Aq#)#{CSqr!jHT+e*u8VU< zt=<+(bot6=X{-+?Z0<{4H3K`=|&K`bWP zFwZ~?mBZBUr&azkOJJ!Fct2Z?t=d5&g?ZK{TnLwM4i0H-UqYN*_7CX~lVNKo{P@!a z{e%f8R1H73QM2!n>JZO$hX5@(spWzl=&7^%u!x2#n{LpC)ma1`oF1$@ki6KcJ44z8vBq|(6wdzh^*fiz{bqkRZ znWnx&#^x=wMDsm~h4ORh`XhWRdeC$__)#gaVFu|(DcHYyc`u15pfci-qR40vNw0}& z*B7q|eVX2(+3P30mwH?R0Izo%dK76gTbzPiOzC<&TXyM!Z8c%!nWPG-V{qk|T8$F8!vYO!*DW|f|vbV)nw18-?WU>e-m zxCagNC{S3{7nUvmR7^|>$4)Yfzr8;6-?G;6kljc590Y!_jUTHlzp)cM? z*=;w0o~i}m^<%7qPJ@+;*DHGwro^hg&-tX@4u&A6f>4Nbk>m0URdc5O{Q~bO*y|%5 z!WA*;2;LL;UrP$x*AZY^RAKEge8Bj%=WA1Ol| zOm4TZa40Pl1;n7R3!t(7wW1I$2i9C6+iOcn^yGMPvDdb0)mhSNj;iT#uH$CZ_sO$o zrmdQ^_k61Y}|Jcl_`|0^swV$}ng5&+7%+?AZ6n)-XQEkE`m4U+VI@5O+G(O2O6vHCx6 zWPd*s?Vzhu4?`i13uq0n%)jdN8q%l8`+Xq{b}<|v5lutc0DF+203)^jg3F}8H5^uR zbMGo$yC01W%^Vr2`v1-3z<0XCq8`|uBG?RC50C~RRaBPolUS>PWbnFD4wIz7E*_3H zfQPT^gBmFOPk(OBEZ8+q;_sAGpM;0OQ45<}3s|Sa4k(q%Op<@S^Sw-l@!FPk^i#CZ zH^UTSEB=wU{2?!|%J&isP()}PkmWIIH2Q;0?BX@#h1Erl8**CX1JEHf?R%NE>8}1K zQ}1cA!!vW6K3_Ew7=?sYSMX zZQU#ure!f`o0Y4;1b>D?z$~+zMmKwHJ!F}lZeOS!7>4h7MMln`#;B-_7MF&kLYchs z;0}+UlOa#jra;E^S?+aWkYgL4njONV8f8`~Ug(yJl8&;hA;{ni(dkFVurcFrsUPgA z7@9lL=pjA32gU;fJO%-S2kFbbt*3Q@usN55hQq!&!d1T=N5f9kjZZM1bHGxbU8&s< z^Toy*L?w#I)W14>l?F>bq>aF@=n*ssOF1-{Se2ICWq**N<^!R|x1rWHkR%PMxU%Vo#nf5sTKKrp7vgzGap-4(;UsK5 z-(ddg3x$3wO-?WjK-ZF~ znXq@o0K18V(~U95$iY$iIBrA1duG$Da`X43hpWmJQ3LGsP26dPpp2?A{VV=scV^|< zzK_^dpI;e7<%R^spTkLIarTV0z!PkpS%qZ-zf+m*x9uzx#;>uHDP` z=}4QCRZd!8WCu|2p+AQYGlf2oiqAe_hG!>vFOgJlZgZ76lBOneJk?NM3#vDxW;k)H zURb$g+d0+r4fcavdSt&>efSin+=k@ zr0o}WZKvZ!Ssv6pMdr&`WswnSY)Dt-7uKEJvn|Ml6494CAM;J+7?MmB-Er~0wg0Z* zrmFX}9{8i7 znCFiG$sjQ3cDC0Xu=jq)h{bN^bTF>~J59SG0ka2EJ+98LK1AAFLAaxLf32-$DVL0d zJ7hZ|Nozo(=QIndjrXUE_dg#c;Iq|)DFx#;7;5AGU16)krr`i|iJQZM=AD3wn~J-S z!2fBf@h~{#{ck}4fOyRVB%b#G_s&CIQzEl>^g_8W(FwOt`-n$O9lKcuodC%06QWpw3bB{bs% z0t)VH6S`T>P+e+uUivYN8@Xmju~c<+ZC3k50VG|LN2WiGAPfIsR}@lNhwi9a>$MTc z+1Ll|f+PsKQe-AEL;V5@ES3n?rA08DcT~@KF*Lb%a)HZo6GcU%b%zsf@-Z@n3g z)6mFPHU#($aYFa*C2yYnG=7Eah$~pTb|d_Zr#3TUu($~-K*YYm=-j4&XdaT`6nW{4 zXy8Au9G*k3VAfGFH&ej+lQh4k1oT8r-D-D)QNi%$K_~5fm2OZ8>w$-11o#lm|I}0P zYv$mnqv=M>iFwl?$#W0Oea$s{pQ9MvGXCmj86}9QwUz=Biia;-63DT}KxaL~2k-~5 z^kzjBPnWT7;Xq1dQz|4`7SR8Uwy6KD<&m@_j#oNNCe#!P?dRA=J zxhl4um&Bqlk0$?7q}PVZ!^uVPuR}_#N=Imh=nZvYEFpP}mL( zj$e?Bv+D0nUI=PYHt;`*V zFJqD8B1(!y+i^m7Q4^JI#MlsdkHw23-19_2qdu{K%LUrvXZoR%yR zY4;Q83vehtua}Y5SXCYM54wQJko?qOPr<>?QO!IdiP3psBTiKiY1-IOv6INW-|~C5 zO^5FGjm$;f;i~4!V=s0$^M*d0vjrvC>0+c(CKkpN+306qsP$I1O&iE4OlWk^Axe=70t2XOO5t|qnt zL{T7_v=YAce@}P+tvO5&nJfZF02`P=u3z%P&msN0zd#wm-+uPhRF{2g^TL|XJYgLR|}0IG_uxZ#k8A?m7|-pLtY zEI?mFM{}3Zge(=I0-EJN34rTB(P=FMkbd$35)^A5`gm>eEb;Fs5_Hv`F|hF?gtvu8 zzoiPl4Oj}m>hVJF7CH$N&-#{Qp}onVC&cevb@JGX`ylu)$c((pr0fOVLiGiiYervF=|L7&#U!(#Y=T~|tO^jcX0`nf4@Lc$8 zolG)kSd71NRYT=+UQZx8v!3pMy-Bl=++I; zVXN@RV;yXt06woTpY7=(Z7IU-s0QK=xfM z2Cpe?;woC!P3BAKr_J{|et9vY1*k>VO($(TGo(ge=52pBjlzGGtj&NNz$Q36?P&O9 zkR!keP4if1DEsNN;ZNI%0cKKM{4@AcK4qngOErPW%kn+-VNe`{3aE|D>>HWyq&*q+uOt$0f@>*DD4P$)TACMnZ`K-#Gvz3aeXPB=;$(nWDh1E z+EJoh>Y_3J7ihTMDNePtw%pVhg&ZZ8{7@7!?C2f=rWJ{9ZJI4rEd5^FWrXdlElOKh zt0}&`H^$oiv24!w`^w5IeEqu1Ru!8&^n+vfDH}V%x#B1_Xm99X=pyI1J$3`wJTHdU zZ**2nTA6EK0m}TsWijo6e?47p_Vo!Mb5(xxa$$NCwGs8%*2i)N`|Nxs#BiimwI+Vn zLpIi3xTEx?cA)?cW!=&f2C{kgT`=oIBrG}^XF6YgCY>cslHB$kF97m|CxoD^XBBk; zz1u#Jg#c(Fj02ch;2`wjXh-iMgAfJuAAmiu&7hef?WETXs*)6Xc57wm&bazi4Rt`z z{ZGO~tu@?(-sNC+1G$(4TiaO_z$jk; z6BY1~{$J@81Q2W(vJkRa@M5%|8utD;(14hdp!9=KGnjPYQ~D4TgwiaE1MTj>c7b)a zO93_H)CaRY5WwN|UuPeHN^=Zt_#O>*-jXvSS_Jawy4g4pN{i8~PpFAI$psAK;sg7E zipxfIKgVPTt4L09`FO-Qhkv&9Wo%aqr@@Nz`%B#XEyegK%NBI&6=VKn(nkk%#wA&* zv0VPyC@D!YNJ;&aA3pLpte0f$>7iOY)!g2bIhWI=X1M(`K=Rl%BQD|R=&^)wx9|=s zeU$*1wa>fi^I$S~SY-8HIl_~UjuP+HQOh$8(#gm^rr76mVtC9g7nM}?%fhO78mv(N zWJ={`u_Bhv1#ikHGQTik?A(KnB;-O!m6H~?+X!Qt_GZNjV68ilum39e$-%`T7@3^w1ZzBAavG&{6T!|kHs2Wyse$7 zbGM7`M{Vc7$3G+?+h$^qou7>cDE5NIKDv+~jzWqPeSLtCF$Z=_*xIv1&qT(wAV`4Rlu(jx4?5aO+2O?FiEX`{ zNS*4SRnK{ppUJ;k+}cr!A{KMOS7@a(`+_4^#m#`ERl4gJtA&XbXDF%OEb~-gU0xL9 zPy(j87I{H55ciHjZ&Fe%va+K&tkvXx`l(~5|9$EZ&9(e5!*sK7non;=ul_u~IcEvS z!0F6{QEv&g%=5FWj?q*(c?gJ^$+KUAb}O5SS6hsB(lF!`{C!m9QZ0U+CDVVzWywtczRX%IK^{Mlp(qm!*_@xdNnCZ#T!#*NmMi1~| z*>Bn)VkXRpuglD8j@@&GkYq|;+>w@Doa&ar+D4yb!kqj@F=PUL0=z$<#a%ULL@`r| z@?+w_`SJTH-Eij*;7L*PpCumc78D6>#LCDCtZ89}$r3)Ow9&X_Xb2P5d2@cMFzoQv z1y-WL%Xg=COtdt58N|y(x6!_8$uvEr|!V)BnzLjlM z+v2j1yIKG6W5JgLfoy`w9AHr;sgs!n+rRV#fTp~v+qIk;f>Z#QuLn|YloY@NpK*dU zFK7Ml!nMC27<(AZx>kZ0+DzqppxFjrr;i81o9j7#iJf3i3JScu&k`3&DsU?WtT^K<2K-T~bJy=yJ0~v5+Sno^#EBFVri7ZT5vetCqF%x(#QL1+ejO_* zz(cn*=yx&5X*QAZYEQm((971uEpsMl&o_jYGHK$=!^=>>~8 zBo>l_SpkF#h>Cc_HX+(cllM{5ElBpcrp1Hd7YqJ|baL+MHXWFy2>ldk2^ne)KK?PG zrj`Wx*X=em^O!=8G`V>|@daz~3sWaADl6Tvbn)LTB}mH6#BQ=eRT92*1G4w&OLZ%i?4=Zm z_s!>>^vC)$?bOQ$#W-TlOdVGRWksL_2hvFBJ>UVy&)#hYJjc>6j*)3y@6zMi+QTutkv9vOL#kfioZWwVS%MIs zJG1kewS$6~x8*hbXLwA1J{Yt8vU;Jh%9(oq!URD=Fx+$_qXQIL8bresp6iTuPOJO{ zvNNGFgjcmC9ByT2;bBUXNMNo8-d>ubp^$Ta{R-LGps(G;lcZS^Z1SM#Y8>r7U98-^ zMUhkgAnA0%tyRqRx)iQdTJ#&De?0D>)5BzfR8e_{ZR%A|6lihy?OQAes^+nt#x!-k zvBCL)Xi`4~;?S#VCFl3gbZHYBI^Yj$PWP!?^c~VK)zdgy&*On-qla}51BDQ^Ea?C^ z{vX29zZ|Ln_d?tE2v$=D(gE-hZ2|g>6&@SlS3`ir{Hc)S=+zAweCv{N<=#Z@1gsVV zZ2uAJ;Q~b89d1Lx<#V-=U)+;iA`uxTp+zQv=1P>>;jJ(J@KxciSO;ciI^okr+}V>D>yGPai@PLpt|axQs-B_lY?U%rrYSj|UjqAT->08kj=CZ4-;#w7P& zCYHUf?z>lYvFEsXC{G=!Dz_PP)2ZdP81juB=iQ(C9FqA3Tz+~^M`~EUE>vFksb%hk z4@NhJ86p*;vHWK(2(VG0Dzj@0_>jE2rnP=Iuyf%Bod$5vq=oDSWTp6Ip6;vL%a0y}mKr`K%ZG zM3{KH<2{WFj{22;I!9IV_u*m3;UQpriVxQ;aIxEaW? zGBBV>@|k6HaK#0j&S{*_@477IM}%;kZN;0Us<3YomhfBanGB+E(g z%K2^hi#)|PdhSg^*>_$Ak|Pt_VS)uN8Rg!=j;UMH&1ma)$Qp`&zM5{jxL9Nf=9(Vm zJ0^VQrV+9Gq`lGgY)tS-FDZjyTx7hvHJj57Id*H)9w}Rr6k|1^-FR?~YV((7(}|Pz zC#0g(g;rETljkTK9KtI$xw~Kaxp@{HdG7;8Dx1WObP$hxb-0~_-TiiN_X@ZVFT_1p zN>7!TRkWq1bs>`B5y&DuFEI|^NfiL_P%eH1dove=r`PcIw7TFojFI(ZSZhdTE7SU` zYw2{ZItL6=kk*@}Q&aXM<65vRa^^d^_H?nAc&N!q19)O=Bu1Dg6RZAv>)mXnea_@* z_8R~c?dB%H*u$J&5K|$ox=*_&bND03FCo@H=-nDGRZ}VVgT|472AViekh1TmCmo52 zM1^0qbqIU^sH%!ZMTGU9U90$#>^&Dl%3hkQVS@b6zQck&B7a`?U=e`>>_+3|3hLpn z{xCO#u_sN5z39uh&al)V*SpXm+?s|;x@imloEtZ1skB7@zd&qSZOp&({T6C%AU7VM zU}weMvtJ@?n=yy|CRO>dQU_`YM4jB^WMDa2Hmz@c#F_5VWD~`Key*G%TB>MQQ}|7T z*ad}#XgXTp$egk-18>}@l)QB&d#np)2{;RLumZa#$x&O~jS_8U1F~`Cs|07M$e7ZS zhhf!5c%{5_woG5yEvl#2AIp%PxUg6Mv~ZBX~BA^pFVyhWG#sgS#M|I`d_>7 zJm4f~R0@EW>;MKp9oB6ScB%;uq^TPsE?9RoWMDYZ8t|VN&uVCK;c)=KyAA#2X z0^%$c|XbrwCD?#rHoESQBAb@X0EV3euEnGlyJmC+0t{36Fp zA#1;~^fp!^A_96)FoMAR&TM$HE#Y`Wy&Wd3&jyiRohiMYyWK%1PNH=D3pAmhR~Yd& z*Adwf^t;@YV3r~El|_MG`fB+*CFSo$(h}n6$`sbVY69FmYA#M+nU!}GYy867S9)Yk z8)M6*r1D)wE;+Gr=l!^p4`%5+qCRI;4csL{#tdTkh{)!j!*5nvXmJ>a*=_?aN-Qd2 zPQfaD5L=9q@+B;}_D13jFTCQ6l;mrFahLXMkR3}8sx4}a3lFMu(%Rj7m5$ffTu%rN z>ax})r_*S+PR@&GD*d7jh(FX`Up|2kd?J(c*X=9iuD63;toAGfbnw;he5GRbT2KX$ zgt@wFt~+fh7VOgn#p2+3(UUrm0bNc_QUl9>{)!^TNa{i_g~h+lh3>F-hLtVw^bntpP&09 zAoTmI+83rcB>Gpa`rtBj%QvIyF+Y#J7C|w|`+9q=Fn-Hsx36S4BL=~sSQzTPXz70vseR!p{q zizLPr2I2Z_Q7PsNYR{MHmv)$hlSsRHqGE^-W!Xp}tg>PsQI88Lm#BkFSB*L;Rqh6_ ziywQx)#~zzU|`8Dtxu95#H}I@K6%uA3GA>Et5(66of4m#kuEX|TOqx>9(T>1kPmxl ze09y5Kq{aH|I8g~jD{BU7}vhS28%`eYNP6e5}cYF39#7r~F$0-aL4~oc9 zDs%0pcTP39y2{F#@Nq~(UG^-$fh}fzXx}6;RaNvz|HyoAIWy31zA|RwN&HF@&C;jT za!R)uJ)1b^)k(M(-e%O?V>`H7)*M@#7b7h6{Pq}4QT1hW8k(o706sz@F7!TyMX~hmCZ)x?lwe$wE->?Owcw`td|V!|vRM|8HS9 z-|(0DC`E4)Y~lRPhNo~w_Lp%w9`XpxcwDI5+=BHyHvYCd(I|#QiTWotQ0FuXfe1R2 z?`N-6O1Up?k_GR;1L3NX-VC{kkx>lN$JsW#Ystn3m#_X9uq6qnhgDIADOWMw6km_q ziMow^h)uDl5c+vy&Gw=3lfDwqqJCaRI<>veS%%fv;DAoZ!0Oe-mzX_G{q;P_xKR)4 z|Mf~{=~F@NiweseU^Uk4t!rjbW&95Tkf!_|fuUEgego687!VZwxAU|kaIw~bRn-gF znBe6Cu=t>Y+XM()!NXvrRsDbF>ir6Uqt0eFkZ0QKSbQ`X05FyW&6G$-Ea=D^j{Tw_|3LR-)CDq`xeZ7?A9z1Bq2(f z%~kUn?JS=K5{ODwP*Fd2B{6Afypp@tG-)$#V9@_fqphi_Nk)c3xhP(2bj=vB0!dS? zU@0k8J7{7h+^qHJDg6Z!u+6GZoWR_E&b!W7WQa)_t7qbA4i7TMLYFRmf@ZapK%VcA zp;q46>4^#1kQ#&ct6fmQtH6DI;bFua2D6; zs`|+=6F-zLU;oI$nJ#painUnh?t|y&>guhhO>}=G)zlVpwRZXUQ=%=od$yN$HFG98 zJvHvjW$OBWQbZ4U*BXbM?i|{DV!pgJ{X;Zd zDXW}3EjBG4y!n>)#n9yJeKGl~QXPeM8Ev1H7He{mi!cY*sxhO)7@vz;rPyT5yP_~< z6J9dwomkwcMFMlmyMp4pm%1%T%E+qy4h;rR(SoAlxgG1%k%P~RxpNsmSdji!WehuI zV`=I5S*k(QO*yb#!`GGN%j8>&t5k|SM&pgCaMd1{N_}0cY2lbi@RrZcK+WtHq zau!~!Qi}Kqknj#2qql1l4L{vhf-Kn=RNKL>FGVYd3&V#@q@R=vi6YYYmrJQHr?cTE z7J{O|+|3vzSk{~V0u<4GJKN~8L`n`DnI8tTf1tJuL=Du4J?w1PpS$^J+3ayoAMqQE z?|KzP?ZtEKTC*|fPx3q+&Cm@!4FhWIuzDs2UV*brHE%f z%U)9xLpGL1DdTC3fj1afS=MxN471yEZ|!Z{+`sS#C=rPAtbj6(gpZ9_Q~C2~v_$Sw ze(SY3$`ff}P#&)6;*W zG8}t%d6MTuQI$~e3`MS8glO?u@hAJ$;cv7W+^)3ebcKtF_bAgWd>O zO@M3$XiYEKglH&Pmbi3j@~R=tb+zJ-lfn!?_g%WK{Su<8nct6R<}E2}?iZZ!)7A?FzP9ULc%-e_+^+`iSfeSfk03jF{nCmV z!Wj*c)EH(Eo!0yd#MQCq$u*6Ma6;z`(Vrnfi4=NWQKcFvAVRL1ElZmJlg2Fny<)dJ zl;!QUk4xID5944Qf<<*{e0FPlwd!4+yx*1z2@TG;sG)1x=yv|eeVlcRx_F*%`GF2; zNBc8z7>PVlAu|$~(J}vebidv66+dV#b9qs&a)5I}sfrGrCjzPjIXM+%+<-*fss#m@ zd9cq%eo5moqrHmxNq)~^Sb~4uvA@hR)b$uip$Hsx{wbJrf=vuc{cxZqm|UFM#~9lP1q!E*Z|vCk^MWrs~Wn75d~?Dp_{eV90B{5_OOCoD+d0)9{tBD z3K+6mf`Rsi5P?;_AHYKlLiIYAxaq4s)07AZyfEYiQFkA~>cEAoQ~+!kC<_0_C2JA* zjco`h&_)cattAmdHmQY7v9>^d1y5Lf5f;E~rVe^GrZC3~BzW|$1~@!!v(QlqSFgtR z4%X5=c=5-CBc5FIk#5TBJD}zJ<&3k;ygyTTDLw`s-{5}{^WLq{O;5gYl<$_z5I!%T z*SoCyQYQONV6M1Rr$lQmnnIy8|LrArrdI)X_k6@#=5b}1U5f5wxB+6suFshXWb_v( zWe*_8XUJWELWI7Suube9BpfFis!RkGhYnuzA8cxBQx!j>ZHmp`N(Zp7``x2=dxOV2 zF{cw=Sb>-kRK6zZdzspe=;JR@-;BlbkMsXB4q~dYA1RY) z9ByW_PRN+%#%f&$~Ixn%kE)v2mejjFlW) z4lm`q?-jVQ~!&Kq=y)!V^!h1Ia#t1Oo*P z4A4c${Vu^6{aIXohARiVFB?bIH54}e(I{;O69{6PK1IBQvQ2cod;h)pY1J>uI`>zo)yjZyM&L_h+IGJ$HH0KQI`qDs*smzEh$6+TV2uZ4Eyt%hH>Z_z=d3ndPMDeNU- zlke-6hYyWH>Es)Z~y zn(9(C?J&>w={`2Tz~^Ii?sm`P2qx+HFpm@zZ?m12VeRstM0h^0kLN5-5`2O&!`9c~ zF~vnP;%Naxo?*VN5Qa#)x~|5|Byrb49`N3&5XnRRuq`-EhQ!FVrtpKxf|a(I*Xs8I zZk#UFX|fsb-B=3B0rCet4lTST1I1IT93^CQJCCsvCLa>q3v8P9`kC>~pWaDZqXF}g z_7KPSA4ffaQSxt|$v;k5%{o)p<&b&7jq~#%{bf~@h7ABQC;(WRWB={)K4c;QWG_xO z0EGJo!^#REjz~H3_;d_)Z1o|bMiPc!%>G|off+ia4exK%@^Xz;-A*VQqu}S?X_a zQ3s%+)chVY1>v4VUWo%D&xb+gG-{g2xd>l7|kDJcEnsk^#|M(OjPJRZl;~M=N8OHSGqhRSNZ)9U6%_~U`x)nEF&Ue*>qw}9Eu?9_; zBVx8MW=wO-UURPQXU0g*>yu~4B_y=6NxWarD=}`4%5`wif(g&t3e=dV+gRi~UFI^c zIc(`5i8ouutNJG>EgiIeV}D^L`#R|~ZVmnMy{#;l#k`#*Rp@8{Cx$wGEN<5KLoB-d zM3T|zvCYx`=w~ROCiu134h>Qq*A06@>Ht>ONX^D*kj5j1MrNJSvY<}-{&xhCwL0w+)Y3-w3LeFcxf=pqod&q0r6a%U@5 zQma7~+nb7h_Bq1~5jvgz3hH{k?;nkv{Z2iaktlk)Xi2>3Xt4=*etmW*`{otmnVMv^ zjU^R@T8B#%(#z3Y*H`+Ez|5VCuh4HuaRPm1Lo z-Jds<>K+;(sbE-35`;X7+1PLC{h{0LZGZbc4fQdkRxtm$9MP(3qsCVZN`zjll%@jv zT9+Zgu#JOymBt6{df;BvV#HN0{XEd;UI=G2A$<{PxME+_Egn}$KM;?f>FQ+jM5R98;W#&4Q8}aIL+!&pi z*d-g~O5f@G8-6r$9RMsq1B`-Gg0J7wt0gHdCCf-1aX-9EFV5H%t(}VM*QAVF6m6yY zAC1(6p&PJ(yDB!3R4!6M9p~+heiz+~SsCo2dacF-4o5~Uo2Q^f_^gTB#(yH3{*H~U zLkhto{Yn;%98=ct5TO$w?y>dnFBvaX0Ue;m2OkZYieWbtvepGaJ*lIKb!LH7p3BjW zI&{3a5O3up)UV8G18^Z!p}q%VW`{0+uhsu}Wr0kkH`vtO?7ufv*PDh6 zr}RjedK@nA=C4LKqZFbJm%Z9svJa)bmO_CF3Zj#caLXve2Ar^m_<<3x&cN49X(4PP zvvCENI;N=p5owgVr3r;TM=9373MSd@-nxO=DL9m!w%PC>@s_aou->H5J8=G>Y_>x( z>_f8H$!bqH^~rKJt|+4-3~8!6(er#ukSR*fv1wv%t3NmQc=>s(GJZMQA78$O0qz>xiKy$6QWg|VqLa`T}W zar%m{s$!{vk?L0?xAWwcpM3;s0FPmB_3B21g-dpZDa4!BHXs32HT4Tmt3h0C(dc3c z?0Y`Vovm7Y2B(%;LzGa8{B|>)I{JR+OcSN;2QnBtw31LB#fvEkseCOI__+YH3A2+{ z#@Rnz4k>(Oe$JTSKkta3`qE}8HPW36ftTzKHFx=ZbWC0X7dOKTkrfRlt|dX;!3Kg| z90t=EZ%<3Hk$zj5gXJn1LWaS?*V3$LrJw}ZBvgNd)?$g#EuB3SyJ4^>^lDycJ%3S8 zxhYhVxDR&4FExNBfT-!R@9olBqnN59sR(KVPHP*#3s$8__VhW~ly5Lv)KV$B=ilfl zCLHqUhfeMsX$2qm1uWsSlr<%WrB%>0@ciTXcj0{4*Eswvlx4vz$AlmuLF0h}Xesc+NkHaG8XmDjHobB72 z&W#s;AF;imn)9HMBkW}ArykSoXyc}rI72qIi}SMu$A>V;D2341jUiHp*HRj6&2Ez8 zHZp>)(eL5>jf+Lk<5^;?jTJpcnas+?gjK^^$db|l8S|$kDX>Soj-G`z-z--SIs?;4 ziQV&Ed{|Wj_3sr(q7Xo8rOl;FQ4?-QHYlx~M-KP5E32Rtq%Bo#I809BXkXm58ykr0GLu4z?2gFymbfG0y+XR-~YZp)`ZKM zLG@n}NUvO5BSsjX>f9(c4c$y=E5PP}fpM-1DAWU<4+EeU6!<`ZZxJ}imjkcW&H~so z{=(p-uX_bSA(Zi=+p^OX*q>Dh6Rc2U7cO6@Dk{49`Kv-LtKF>MQ|ep;Ww(n4zMnSCY{y~I2)ic z?x5xn>ugJ0Vkw&T`(L6`R|=hl(v!Aq(ny1}%onRTf|bsbONlx?52M}jWBQT>ClN3- z^MdAA!_1@vUvN*lKie>L@vj%hVg5d4k1s!YeqClRg^A;{D-}goh^EjMmxE5Ff9uJ5 z+CMnM#hNE0c%H$(wkrwPCb^d%8s%PNcw0W{lUJtyod#ykdw+|3K#^EvO5M#*G=vgbss3oX&1E6|!U| zLN~YB8)*d2kK~e7QKcZEi`YSRTgj@ViZY{;t5KVQE1S0Ay~z{;QjLRAj$VvyV?$`n zPR2Mz`(SPJ!r6VGC2&;r`rQEURzt$NBBgGgqA{Mv%hd`=t@McJ#8O~AD%HVbjQ$Cy zUnJx>)%9g9NY-7==@j89SyTe-XRJM@s0wGkBwnRTDHu z!#cvnJRGz3;~X+n8C|#J`2Prd>#!#K{%@R)(a4ZyGz?Hsx}-bC*oYC5N((3<-7)D@ zO1ei$Bh6?OX$eV#1_eYxuIJ>s@B90`uje_A-|x?zJ9ln>?EQJyD{fubalOePb7+vf zk1G#0P4z!#AHFk9WnR0G9mPrM#wuu9?f0Ka5vmM2wKoHPD!>T{!sj`u?<^04YH=g#TZ`hPb?fJ)5YXO*|7 z@wEo{$=PP@UKHgGXRzuCy0#EYLG7s%&F=%;b=jajoQ~U2DNA+GU!(GFDPu0IHGkF7 zZQlGMEB^J zjo}ThsAnT5#;@Wcs2)NwSF`n~Xy(9G&+DFB$|BS)FaC;>qjIfuAkEUDt{J+#nT@0t{R!A1R2afZud z>)6{m;L@6)d4yofVyF+V-Gt9pCNOp<(_9JkMRB|foVffrbIZC_P-!`-D_&C>0eL2CX&gs~qZaRzj zUvFaR-XJg;33I&#fXN`>aLb1J4hlGi8+UVWN{S`Rlm=`3Ae>A8@^M=sr7$7x>YiEg ztb~fEfl=!$<}ij)`{hn+&q^l z<+aqK5AEn)tOjPz0A|nfrqi&#sTKZ4@ZlKIN$Mi2XgzhFNmYl`ftYIreE5Omr3t`> zgbB~$0*(=tx*ss?$+!XgA>`1$w}-slah&0hBguh@@E%gnF_lXMi<8wWi>ORbF$Rll zx8|5^SL^1sR58(FE&fZSr$#v&Zw9jowWQLw(;zu7EtLk*EA5am)IO=jK)w;J;?tA$ z_)s2Jx5wm4#t@B4E^)xD)d23&Z77#(p2f#@hepYgD}4kTdg07e7FIbQ!(r2i2BnDQ zR=8M&H}y~8y-hb9jVq8tY9vx*mV9x@j>Oz<-$6TD?pCw77@~~aI<}nFQ7$kVXIZwM zI#)M2T&?1_sp^UaJWw1lS0in&Wm@ffX-0~AP8MzyB&q^^6)a5DMG@2)YF{Q>z83zn z(bUComD5=jKW$%I78L4h!h$7|F%*J>A?^f4c8}wMP4><~RNO-$)jya7XHo)_uewO0 zQAWG1wXZJ(;m;Wv3Dq9B`q>+5r&)9glv2n<)Z-7+lZtN+Kd4|KVpHHv?*}aq z9_}78s)hLY+8L<~fsH`zoXtN5=NLOO}t5k~`%%E@i~m50z=N0>bBY-O4Et zBU`sTNuuTz*Ht-zl#gl{IlM#&nCq!-oP%~lZ)85JJ~ds2LwM7L#(N4##%p81B8v9A z(Hh}h`Z0`aXrKbSquUGxf9m4KifHkSGerZ)e!16o%^f&*LyO~#=BSu52xPKhr&4YS zMh2W(JQO-%ZEFLqA3`%q6w_ty(iex4a@7s2@whq>dht(l212**yUph$4Re|iux#u; zc+fOi>Kw5ISQ-K}ByxL}C3DEs-R+^{<-{`Iyb=f@Lqd9M_WKAZ|>h*mYu z)Y}Sb2fxK8KNgt~4wCJZNTBnAp~}x=lok9E2DBDSe!N!Ep0!S?{1&Ln{(ZFK*8=(T zdnv0)PV@zeeEw*GM+%F1g{^I({hss<#bhU<>8NN`*MQN#dVHQ_SYgZZk%7IXA>e*zFQ*}57`DBG&``Mrt$ zi0Z`l0z6IFdZ343{ms*i_t2eoXmcnao8y9R9h`Ym3|5&WqZ#ay_GMK(^yLFYw>18f&kAzcj4>ryxNz)jrjfFWGBJqJ5z7hkFnIpd2M|(mhZcMEQ_0>sq=NS z8o^h4WK~`&68)@udUD&EMAo~O)(NbIHWOClepZDJV&2w9(W`8VFArma-2*N`Ny`e#S$3gR zLwYCUZOYx?k&z5iOcjK)83T3M+DLJ$(nTQPkqe&s>3y0eo5WO2vVmg11*0r?Mx@1F z({BeX&=IgSQz{X?P9#EPz4H+h<156bw{x&*g$a%|T{gHFnzk>jRfuDsi;4Xh->|Kr z>i1ICy%XS>+IbALk*&#kEJnj9QGa2Wz(x>p(iTZ|yyiZG=uj|+i zV{w8~W(N2_6{l4NZLMc>6gaV^7F^$mwVwJxv9RJ*lB35a06{0An zUk&2fq+;9f;X49!^H=T9x9?UeH7kVZbMr&t;U!a4-(%W);ndL?kbReC+4u+t{@;C% z;Dq=l!CT+@T(t8GFd9p&RPV{?#U_@m<(-N7sic?9`_7=25K72QXs8shJHf8pR~ zscQpnRmX)|Vn*$(dnxJWT7+3nOI4gtjae#zxq4%_-lID|XvIGKZU_|c0K4B_%kWt0 z6);~OW)U?%x%BqMFDDc$pY|DVT5K!Xa(U`8{0VJiq_QS)7}pJXhP4C~pMZ>cbTh{Ps_9H{Dn zocxSkAG#X?v<5gc!(b1RDbPOs#n1gtnoDYMgLBg=o5UAF|3oBD_j9J*bZ|Q|m_I+)&MVR= zLC-0BV$IN($>tkrUZwHN?`~n$KXGtOuNhU+%Z0vMXzfN7k30t*DEd4cAU0OKBQdgq zpB*XJcCpc-I4uur^!Eg1N4&=?qKWR4v^tngvmC|Jb!(^@?glCp$Z0ORZ5RxYQD;r^ z;c8Fi%@X28Torlhl`Jg1(p0F!rL=c$7e*4-&i#1~g+(`!BimuK3n{Dys12k)&Z@IP z$PW4zhIdI?@efcVCP);pDSU;P@ov&>D<&n#hZg?6CqUT7rmX9B9JTg@s*{Xc6=Zty zBs!vg`A8~~wrdpOcs;)yN{H}Yv9Zlu#pA}6OjLrc$r08=G{pfDA~SWPqV8)7HTA{j z<7ySxe%iqw;ydf=Jcb@0N9gW{4)~|U>H#`O_Nl$Q{Y5b3aDw`ufDNLI?X3E77msht zVy^IRIiHEP97?e$x;52#d2KFf@=l{cdk1=0j^y;&?b8n`5lW{QXVOWKk3J*9cfnC) z-rr;oHd2(-h05c|mC82r8A`y8k43MLa{e2HwDj>YNF}IxQFmdffm@@p-eb1W+KDP+ zMSjIXg4daP!?GN;ZO4mOdjJBcQ9!OZGO_dGsOw(iCuxq-wM~r6)V2;}jZgG05wq`J zRM?lM4myNw&~n)p*s$F`K?~nY@%-l+UTNz6E2W)YX{dpRqbQ*u`8cyW&PqK-pi55_ z*;wLiG(!;SFL1n)*200X3X4^g((HSlALDuV#;NgM>SmJ`aciQ{ zUJ|vj+*9VKkX_FXAFs9hTFjZ$oMuEDO?kw29& zLI{5<+Ur~n_Qaw99`B7eD-eDt2n%xd6A)u-@4-fV9-3=_;YmAesMr;$`6n;**9M^K z@?TL07_(_VnE|7w0cFyQYNf2$PdTT6h3EC%AHZ7hS$X0`)jyOEo;cgq0u8&*`T@Fj zm*01-006={(-t3 zr#Hr@A9GdDQ!g4x3Ry|de|yw#DmmZQpkcLHYmA4^J}0B0 zmEe_u*Cg+uOi{A#{?A53!*f;1wHwZ1_So2^{|^Q>{xv6N|Q9k@ST7KeZRaS-&4O_pYCf`cdWBREdM~T+U zj*4a-&l|V8wS6QqL!Fe5ekmuLt(%dT#B8?h4#}o3GjJ{lkOuatrXr>^2SR^xU5Z3& zyD@dnoPR(hQDny)4o#JNkiKyMpFMXwW!eB))D#*rg6Oi z)v`v;*%@y7oqdn(W7`Zm^ckx7Ij8`Tn0}hrcD4*`&D;SQlYes|eiw0(6+Ix7jIk5LXSzT)w|> z1dpV^v?Tj3y3qCBDZt_Mzmjl+31HjlvF#tkE{6;NWdoI4&XXf_o4}`ZalkPRsU}hC zd)|wQ_-Tu|0yt)K;-!C^nqk5KIBTJ|N3{lB=gL`cwG;ZbjdAOZj>$5x=sU`UE@Fkh zV=c$QzVZzwUUYz8G}tbycxLucLj3XegOB{uRTJ`RD?5|DLZQ+=hBMv2RCC)nr#>jk zX3yX}ic{B@GxrcsmO1+I6H8LOqUM~gHa;9qLuVzTuyc&2B*dkFf_mYsf5yXqzP3K@B=r)2eD)s?{{8O(fM ziwEcYcC;KpTsDYkxI9KV88dGi%lQxls@MTSLxkL@()prrdNp1R2ienYM@gyFe$myW z6{`*b?rCE>GFG3PN zP_`h?9A5@=%F1+EkA^Nmkr;L2bQ2n_)0x*&3%R!my1k@?wDosnOb#OX}*ba1F?u4MmYG=FTa@)6FUj5idS zkF1nS@Fb+Q(pmvcot=~kA%wSuNhuc7ktc?X0V zn-saxiJeEftF~b3AHNbNUW>a&xaJrEekFm(!G9OTK#6JUsy}#+wL}6v7P9-auIB@~ zvYj&=*lpK=jfBoVy{-e*h%0RUzngND%R?J>+-Q*H>rxI%+s$$y)%(H;x4+M8>w}57||D6K!0)EUxf10cN z<`uv5T9UrOn>U-}b@t^e?$fnzP){N&SY=EI8_9~@wMpr)g#H#HENc7`1je0bdr`2g z8Ii=Wv6+IpjYv_u)`c8eJuN!G7Eaol%=NM1TU(hAS|{U**4nk9rDa-`Ctl=&^PyY3 zosHw&t(v2BpI6w)i*lxaHOm@4G@MsB<;_!g&Otjkg7aeLt{w4gLIjr^vXH%wyl9Se z`dLSAa2(VCzXt{SY$3du4tu4Rh?|Q zb7hx)_Cx&5EUD&1H^7}cuPx#-e!dT{M_9iofFImfvJFI zuNrpgt>2n^5&Qd$Z%H)LBBHh zBxE7VjZBpP(0-MQjq8iwmR6IHtGv_hTl-4X>&`QBc`)3Uh0K+Vjr*$8T00)Y#Hp?T zbsxMi;f`uRmZVT2wv;6YG@Gs`_k)IVYW8uJmrTclUis^ zV+*!pRh$uQa81QWbxXAjWDq`%0&NUG4l7RiYR*Eoa1_>@MAQTfs25|Ts&CwT9F1-m zB7?To3^2C~fDnRcIonwWhPx7*(VYh~JAg1UXw~OI9jG$Z<@(vpvic^w{UZ!-UKUOn z-K>lMaosgs;t1WW40No6L98;iRo{9elP+cXRtJkcL}-pBVQ^0lOs% z))SrR)du4sx;p@``=%D~#_i4MQ+r8MVq<`z=A9_7& z9r2w{e5tN->044MnftcLrl9^OX|zgx93tBcAC@@BE=M{WTGF$ z&NaWODY1XTZ5=Uwg&5`8 zCY3awwbFZvMD4l-HO-gX$%2Cj{5Q3yqYUB20&K3C<7Q7kW;e0T9c3^`i;g?RXWciT zD$2O%{=n?;?BgK1etJKHzJ$M``qqV?eNB_*VGg#`EKv_aiSExRrQkP6dOE|Y!xP}b z%s(LJ_?EcWPJAhUu9i@}|ASJWA_oJKbZ0t!ZwT6p0|%6c7Otx|5o&7(b=xP=R)$9W!T zUb~{v69|tLB856u1^1mS^$c)h-)VuyTa(rrq-di$RMR$y(~-EHwqRTcQShAG`vd`l zjZ~z01T#7ei+J|SZH6vzMIroGz% zCQrjiUbrxn6r|vSFR@+_-Wl1Kn9bJBD%=M_@{RT)ggmohnyB?Zu~DczN1|VNj8P1C z;F>h)NCrISp*Gm_Pr{H2Om6=p ze_ju?slfbs@C*xRE;OiAd73-{&}IMrIej;49^XLtM`l}$5uF5aAbf!ZSw(}U)$=x( z&!|KVv`&a#x7W>488v-i*T&{frNvx68v+0L)dWzy`*;xmNkz znnZ;3u@8U+*ou~?qte|bD;}7Q4ni_zgAnj;-h5_HX2&WSlx`{n=$&(_5WV z%`K+|Ac=C+t(l!MQukO3H3~gvHNW*oQP~MJICz3<7aM8?^CKd{oVeO&d#!;I;f5YN zEk-I@G-SbJDKI6mfll36Ws6_#@2fIjgy8kZEOT?CE|mK|SKAxV2G1lD1}nGU;`~UB z@99W0{AYBN;go&Rb5m%PB*%rhVrQ_bUW_y2L6pa`8ULl4+$VJcz5@Z~?`(9}t^^IZ zVrW&z9b@uAdfr^0ii^&50g`jYM~L{UeVW*ND1VtP$8WRJEUI7Z9-A7@#e1WNZ(7@W$5SbP>Ll*qY2$7OGr12Hg||KD z7lQuK>6qd9Y_QV$k*n-WC`-NeG@eBNZX$#9)~E7r)o9&BuF-VY=0CMLS3`*Oe)bxo z&m5mgne)Zz4*7`))i~6RK}Df>{7ye@ql&}PBA1WQ#He+IP~x6UWmPnBR(Q%E4<0a` z?kP_PMb~j?R1N8ux1mrOw%0;VZe&lfTwvZ>fAqd$ovWf=K{-L=U6DSY0_G{!?yJ=F5%|=hkY&8`fYFOICDoYhdKW`RD|iYz z$RReZs6ay{Yq#@8AIKrQD#K9atLP?A6O(^evsHd>e+xL7sh}uYcF+|a9YdNuyk{HxgfPpHlVDX|HU;WZN=XZDXUwZK`*c@2<@*1#6&WvAkoC&)+0 zQgfS?z+*v0rh}Jbm zRs*8Cg(n9V*gJus9$rj92+IqHTJUd=Qu}Eb?c7>*KwvbXcCF1e8IIQeWc_a?6Qq zx1DatO@cR=Af0&Am>KkwZmmqnwcv1ier^s`v+EyGk0GrUphs&))Q%ZfpT8w`jeC5{ znauvW0P-fy*l?re6rXz@v}a24?6DB3EDyiTPl^&Cu!*y%R7X2+!l`#?DV$|r#qtPqp)YeapYD&p|hv(yKrAyT7 z2KN|^*Pkd?cSxPL?eZnvC&EdcrS*yOOB1^(x|vVuwLo^g3x7(3K!?OyS)5V%5~Z{v%xW`X?Jmu!%BS$OnDXRa|N~~ zae~ArhOG{w1kg=DZhQ>Pkp5}aQ@fs24mR=+N?y)Bib7~|Q@KS$7g>{(*1)LQgVTQx zoc^(NK>-cnjV$DU!gC+lb)Ab`6-9cdDwj-AocC6R?o;?K-KU!LAE*vQJMp zGlyc!rU%?M0rk3o}q9rR;$3dJRS%Y&)?-@laeKzca5Hh z*ps!XaVnC3-7^`zumK6GI+Y@Wv@nw;=~zD}gwUM3e6KA3co1j0-%yeYEqwTimh4Q7 zy)pN#e=ek8uzEoEQ#z1^Rpw;3&h_3XD3yl`4x)~RdIc~AsX z52hJB8Q^jCgDn_;_e54e!ZC(0jkx3CS86a*4$~5{L2(LTicKQxGgxxhan4qV260G6 z5r>!8xvqVt7Og^kSBp?3)OWemY5rwK%P&o4ugQV)9+PN^rf$mn)Nhl9d_w>#i&T`X zfW-g@4)x^6DymO@7d9odrA`7V-&AO3rz7{B9`+Cl*DO4<3wbnw?lDsrW@IJBL9_<_ zwr;UW+8LBm)S^I%911inf9vD5Nn7#{}7Oh#&GE*nCVmyoIY$uC=J-?WW1AT%2Nua_1119J2lS{j#Zg=qj+cE5{?;xB~gy%iY^x+QNnO_5OlzglAy^akHKzHk@A4 z4>=DZP4fsO@DryOfMWD;?(Iuu=fMsp*Qe$ZXt?w%O z+MS1$x}<1Fb+qLa-^+yDYWsEdUA3W1r9^F~2ZxH2Urs^(z18f9=Y6Re^TY>^&tT9k zPpcf?qa<1>VbGpCHyIy*u28kcH*nXuuyg5CVkDf*HT0r+Bk&PXkIL%>ADwR6(?Sqh zQ8_6%v=WsSd>n3@pjbUz)|Q>$_1tO}P(hDJpRF)6XInbv5_amBwET5SYk^MaiUx91 zT2`NLj`D!>UWWP%OQ^Yb?Ya*@hi@~D;}1e=Z4GZ)_8pgj?6pghvtr$ugZlP<^uy?E z%4zHL&XeZ8upwoky;m@(~tkp4l^^HkWP&mZEr&ld;qZnS~=PT_?J*AMfx0*b3eC%NcQM z4PLg>-!3f#66t(2Z|8r(&zlw^^t;il-!{Df zByHrOF_V%dF*@x(cZWDBge8t#nZr-WLM`BET_loF(6KkWBq%917f)#0M{)OuP-+cL z>(ZWnlf1!dmTe4OWwC-j3GJ$xrQ>TVCOj%d0i|V09Jv#T&AA8m0A=W42N?eVJn;+L zT8uyNk9Xd@!TwvKo2Ske0Z>7;mU9y2MYTm-spJVjL2|C=o==w-h%){ir6)%O{o=XR zum|j6_DOy{t3%mVO9CJKNA~=`UYcX%PfTtZ9smn=Mfj2Tw7963bz?r@^jKY zq9e?CWvVI2(Pv1>)?d)XL!kXA#ns*Zp6Z7N4$Z>fqB_R04I)d`OjqJ3oRI(?&+3jD zI)l)-hlaV;DqUd_wbb^C+B zHMs>*+ib|Emo%u+y(pXosu69y!?z!`x7jBAChUHr-&XP)DG;=&RL@bsz%@cfgJ<^s zF^!0v3E(F!T1FcNer-Y}YCDhw(;w&uhAFrovd6swzmeqMu7bW{v z5MyvLM0Bhl;=YW32FZ&A6tX(HEVM8S$%&N6EfUhJ!d5jgP&uFBXUBvOPdKa%O^plE zmde+biFVe>3TMHKl$@O@D)rKY9L&s=M3^qg2XdzAa^F=;O~cJx)@s)dYzPUsE6Ld{ zy$cB!^AZHCUVDx^yw2t-qE?9d7afmw&4r$7JyGnvr8PGI8JK{Q?<#)}c0Q>9csr zH-OIBQ2Qg%Hkep6#T2D)rbGyY^n8LdxMm{Ide`8K~QIL5 z7wWKdFCP?>CNj`Q1Fl+Q9+rwS0BnJwx~smhDt`;l{I{oy>SmVr5xU6+ghkr1s0Jn|4jy9I+ttbHJAX=4d9e+^vM6-Z~Sjf`;V84><2(`I(2no0>Y5U zE|fv5S;`8vXKD$JiHgCl0N#N35Nlq`4=g=f084pw=$xksDDPO%@8+S#f8iJl+$dMv zaF2}H+6o6v=$dt5K)_>#7jE_}=%<7RfJnfly}g7$k_2r-B%yx?y*hpm>l@@9_d^zp zz2i7E+jUhwntT5xnm`(7q&JQtUYA95;($C(}NK)*dP_nl?1nIkiri0mk&?$Jnwa(rIeKS<~*^2b&Di zfT_XbPGDD--3JY20e6G+t4Q6!yYjy`)-_`35=$Z56QuG9PE*(NBFCa9bkP;61R$z~1qG>S^ za*f2uCQVYvoa`7b6v|I}5z)0&^OhWj;w$zi7#WX*mQ+j}j525OTE0KNY}9j2(r-`i ze{ny&c&IZ`Hi(PMwUXxf=qEN}Z|=O|z&Lvv(a;ers?>L@g%I}m?%U8vI7#89%D10b zsL)ufmQd|k(0gcFJ+MoMZNh1EKvH|lnV&AA1Z^CQh7ZIYO`KEGT!h63wLCs#{YjJ) zY?JS?5=$A?-?&g2*r(AK2LtwBPwnxn4*O=m3;B2X9;G5{3KNu8!sUoook9gnX^h1n zhM{}fGgo`5F18O}+LTON$AaelQ@RHQuG=3exY|qDS)samrjLwG=j$8r?9Wfwez}Hn z(D2@cHT)p(8mhq-6DmO>TBEnVz8t!vC|G;ew%+pG*B&Y4w@?7?<#Ko|L-2ON;)hRp ztu7>r4$F)Fe9@;@I1n0G2 z5xJ5rqKF}`H`SS9IK^?9BA4d_CQ|VIGi#7~y0pAhOKSIQDReALA@MX(3e%zOBqsYo(-Z1q@YIrNM#>h_UH*s%URuOB%v%pY2dJQR=h}4jT)k%d`35m44I`p0G zU|68Y>}J>|FW=ZWDV7L|dSv@nf8a?c9j8kl9WD|NttP>Gf{>NkXvJD$L-4x=lr<-5 z*^q7(EK|>RHD+R!32V!e={6-GUVG{%YuwE`S+Pa5&#Pggy9V9Vz0LhnpU*VE^2p?u zB<+MYqDM_dKcoJ_5s|N4rgs!jd=#vwTwER#+@=gdYZgBDEvNYbXvn3y@VL!rzBQH~ z{kW1CnsDAf$l=W@e%Bh|oSNY!3qpeymZ_bRNu{R>6`K~b-42#}bhDWJ40Rk&1nHfF zlA`mRR_xtgf@C%XN-UsfsrQxTP!ZO0E-fs|+f4Vf!?XiaKKuSYeT|9*BjB;KJZipn z8`J5NB`PH;{-qgJic!=ljJCb_R^7iONWvxdETHrJKG1pSYA~=-UDtjOI3W4k*49F| z02~my+2Zfi3rO}=?n<&!Lcd@n0JYSWXKOt@<6smv9bts=-7_c$!>wJ8HlmEDfGql7 zH8kM)_>WQ4O~UQNny3$oD`5?_RRWU?0ztd1Cng@p%U}!oJpauYPpoAd)&e+PJo1Dov#lO3HiL)YLfPnUf4VBWAh+*xGcc({@d0Il(rI4g8X6vgJPX|-L zhO7vq67&5e$gexgCXaNcX#UtRD_kP*`Nm#wNUhk+k#vYxUSNzhSH~pg-suRU5FEi6n zh7<~#oO=Ih=>V>cnAul;L6300O^UfQ3@!nqWP$M&c{jK((nQ$*uBWD-GY5WncK- zhKqR9d6p*ArwzYmf1>@5(nABfytb~~GU7EdZm;L;aNz2X?37I@(*G=q4nLZh*-S%S zSJN)_)XcGv$hBT5%38nD=f5@jHO1w3)9B7JB(alzPdR|RBI_{)AH3w*=vQIk(Yw5J z6uUw&?k3qY?7&X^hBFXT>F{cOP{rF*Ug=ADAHyY?ML~FTLSQMMl)eiyP`VX zrr^OKscLiES_m*30${rgH`qh~@$`2x#zbFKS9bxy<^=KHncb{r0`_`I1E3}|r-!T~ zY>QR%4u$0pGenUOT>n4o@0;q}1qJK`#`)MXD)s@pcuQ25WN$T4@~;~Y>q6%Vy+w7b zjXME_K88#fA7;?S7kO#>{pu%!!6ykOrNq(dx<#?^;kXsW2ouP%$H+YkcMoi+Vfke^P|*T_M9ZPsI0Uv#yq8W<`!8xq@9X+lXa^3zWarb z4ew?}N147{JS{v($;H&zh%6T?e2*@6A-u}`P><>T%JvsdQ$#^|i-_}tOrxGDS;Yqy z<3=voyj^^Jl^seIE0J z%%owi$s{SaP8}vUk$L$_cM|@uVW) zx@s!ar*t%@OLzEiiVawR(Q0aS9#Af2-4NqspYR6{d4*87Vf8jwRZFs z&({9DC7<3Y<7eH2``~qHiQ#iIja_`$V(F{qdwR84G{=#Q-|{7cZNi5bToUv`hpA#tYKS+m(&lT1bkL-Es|ub)~)mLtc)BYc3-4U)siTHBFM% z?jQ2{dPm~AAHEpNV2Ly8@sgpqj(<0!;o|MT^E(tdb8uMWkT~yuk5G_hRf~I0=|NMC z!sz1p-m8L+&D>(DH&Zj^@42IfZ$x-p0%7~W9<;VpeUbJ9%C>f86XSUa^uvHTA+p5w zUpW@=DXg3Zrp5`Z=5-IZ(3OqiL6x(<{nZ8`RP5&`##LG;fYDFx|8L|5b)6vh;FMEk-ld0+;Ib z1uXwGN?@y)rFV zW4Fg`7D>l@(duwo;RwnOTMLYgum{=PN{vamd`9toq*3tEBAeKaFqQ)sC62 z;9TJW{qU&c$*V`H^U{B)4AHa4)&k$T z9f-shDIy(ua@`*#^rHyZH5E#lcdo0}n=YJ)-qh`;ep-%6l`5t>w>4~516GL%qJ*y_ z(XS_NzhEHs>su~om~Z}V{PKj`>AjcPt=%ka>h-SHa!L^+X@$H3&GCBr^2v_gVb0Po zuLs&S=|=iWK0n9ebNdXpUz_es6$v@0(Weu*`yRzonB4X1 zjH+}^=rH@^MS=tl4SodJYgyfzb12HR3azNzmc4b9Vy`WNGh$~OGHOly@O$DSteQZW zMJ(k-5oLK@?5_>wpQ$3H#!W|x0)S0y28oRp3AgvEfl^rN7K)~2t@%$IbyTKCA$Y9< zf8cCgd*L}fc=Lgu#(>cuk4QSgm2_i*TZV8gvE^n_O%l98&jOajEA?%{aePE_%-nNO z_n0Qdl-mqQS$d3`bL%)13UyJM!IOLjleQ5I#VL@57gy|szDXQ0FXzp58pddZ)}8d@ zy>gF?$J4kQm$vyk(6_&jdcO+#;$h6whipCi{A7$<7g9;+=JGgv8?=)|yL#drmpx7e zlG&u?t3cOssG>9VAFD~O_=+N5hkjVb>&#p%?Ouef_maam`(FYOeDN^h|3EL6|H83A zJ`w&4ClR{oQ}-|v`X-OrW~NJ|Dh-sK_@}|RI?K4)ov_ca7}CSM1W$ zb9o`C$_X7GYBE|XIM@iw6EL_v%u(*4=Ml}#BNM3>XH9yj@LVdxtZe+2K0S;-#AU6F zkzlY)!{9C?1xHQH*u6Kfk$zj<#a*tQT4k&_OI0@Fq1%;5T#=$yr=U)?)O9r-7Dm;` zFZFZRc~N&MI+H)FlwTubF;h%7`|Rh4r$lVnho`3ZJ-3djK9_3!yz*>OjC3eVqfYj3 zhPb~ASl}8gDWfs}H~>K)Y43hS<;B(|lG$qUzX+K15&syre$|3QW8i9-aDy z2_4~$x;W}-VJ<7u(mA}#mlqz*&6G^+d;xz&3&-n<7aV`(uAYmEDXcrUEoEmK#OGgi z>5}ub>uB->f6IGNE0*K7ny*|q!rEG}HcW~#gK!(Fubcc{N6?P)DR8Iy^L}<=lguuD{xR%y@2o)4-I1T zR}YXS<$);ibsbprB^>#kC{HaMQVe@-u0%<4l$134S=l2dcwmJq<&EPT9`TgdSjUsL z$vN(V*0;k8bX4qkGl)sE<_cZOzv-Mgwrg9-ikjLb?HoFo^r&SB8F(xKq*qLV?1^5ZxxqXwL{zu$;aD}?@=$1jGM^;-5bgQ3YbNq(rP5Yo! z>M{y7L%s+>=XW*V5DX?UP|`@|%x)Tzhw*wQ2dT0=&Utm_zFTD*S9x3vbwkT0WVcv*QtzF9A`7{zBZcFQ zCjt;n2!Jf?EJ`XA$WcYu;$2#w3mt9~3Ur5i{>fl}abH_ikzLsUUKg3BA$No^W7E*K z`3b6rnr{7bRQ0!Z_OEbj6GC9s@UOGR&rep^Su8w+wKO zs7`Z-C?G9*?+wHOJun)u3;9!Xdt*eC;DdPdZ&8|7J$OGp7F)6O<*)Q<1$56=7?Uk8 zZ5z$WXb*p=<#bn=&D5E+X%2&EH-iD)OP~ScERw3`F2rb1IZQUT-ZXt1-!^q|gN`=s z1_g=S_pucgdt<9s(kT|AG!GBP8p&4x0Id6GK(olVfU2-$tKy?DKa6^{b|uYIaqlW#W?u zOy>()I{x^|_?;1xpn;=F6Cv6=#v>U-=BKE>Hon}va>N8_yGk&kuH=LOAp4OT9^WQ$OC#&*(%-1Z}da(Zws<+556sLJ}(sPCwv z?%0jv>11au2xof!!Kr#Fv|{!y{t5XCQ+eCSeEw0wJZ02)6$zOFsdV)Mbr>u&IR0ky zj2{Xu{heseX2>x+6nSVLX0|OM!N7F$h3;6_!a`+J@XCU#K}c`T7WBn0(9TJk8Ndt| zv*hsE$sroNhN54WeC^hrLaJ{Lk?W|a#m58kSOd8g&&mkd^h`G4E;y*a{NJETcxU0y z$U2eoWWXtnF|sGTa1Sn{d1eL*4gC!N2WaAVkNA)1LqF1kH>>-jLkr;Z!)4S!dhL^5O>cwZ*$n)Yh=-dKcRTfO`4~v0>E&xq)&XYEh0zf%QFchxc|E z{YxkAPtpWJFz1c@?*I)H`7J^YjF97iTjDoTxe1Z-*B_>}EiUvIxhyEdB*$TzH0?;h z>i&b-C9!?A#Qb=^%`8j#$>Y?K)Vbs1vCG+X3Af1mALeZB?2qI)FtNUj*_$QNGM}k%DaoPZB$g5W2!bjZA3#bcP&>qK5sw8-mcS|CYQbm5tM7S4Rfp1wHn9lblhn)HG zg1wfw%>=}7V}vyd@moz5hVKn25_w&72R>v!_)vA?@U_P**4+OjaK7LXuew&8SlM~{ z@qiJ{TSLxwM~H5EyK;M-kGEwBL;R}Z``qDrYOG$o|!>~qG3bxN^5AijAO;B{8Y2yv}!ST-(=_sE{*B^%YEx$nX-6Zl$5-$Aw)x9qyXUGYxG zc+@4S<3Es!e{5|28Hm+OP}{`$b26x{aoe7vHpa^MjMvmP^piR9Jk`RtS*R@!qDE2s z8u4*~MbpOFxdFoA*- zG4%T_)@}qjKB2XS*XN?_fd&+|Z2>HJ{@NJ3KW0sMKk`g#9_ptEPFJJ4bQzN7i~~(e z)<}jfX={fD!;U@#l_=Yv)!V<7w22eR5p@*1gQY4Yn5Srja;6vGs5Gk~Aw! z-xtXsts&QdDfm*N>-w0}yE@R}1wteUW??DNvds%I{`cB)du7Zru&sIa4s_dw=4c1+ zu42HpSfhN2Ct5wuR?5UhwTV&H(aD8!%ADpr&Cu>Z)>)L;gyN0AfryTI8SVK~epot6 zc2#+R9I~#ntkvQdU@RfzGtficV4Hn|307GUL-)?CVS98V)MzU*D>BdO>s}3OzP(1M z*|{tc|4Yc&%$sN2VlTSVLT8(BoVsGUR`dE$s0x<`lQv)chrkiKIqp1>Pn?c79`(`B z?(L+te3m^SOxY9RFu zS)IuvCUS{QQ0`nA7X>$+zO4qM%My8mrKT=|h;m_#^AeYwIxsMkJU|}vJ0ny(I~B`8 z&N6kxE;Rtv8bsD@bpRkuw7g@fZ*zzln$h2q861=z1-qZ*!{Eqn-e1O zd22vto+zs8yVMgJI8c4-ZUd*={OmSIip7V@eg>FxKY+Cfxt284Uqc~y$x#{=8qd2bkwnEgo^NK$_ixF?-`)Yw1H3Y!jG?Xk8VqR45cHrSpo zZp$X~B4ukHDLUfY{-N1a<;Fm}WTD639^N;O{#mbl=QDQ(WtpJ2uq_tVUJt`oE{N-z zm7WKo5&%pB;&3a<5;*pjyZ=gbZXpzKjgK!m3*(n@;4b8An_3N-`eCTWf`Sh`AJOq& z{odc(Kfr&3*%9@Ub2j41yMd0{W_B(4OykarTxcs^-cJ$r8QH+&I@7y&!)SIefKA?B z_a?j9-X6wMWxkySSlPmbVkv3l`~V4h`$LRX3BVO!?}fc*M8*F_cmv-2zcTTHk2$?H zpzL6yXYw9UTDpM>YXX+7Hf_NED0Zp^_fQRsdn>dkt5S2TLY8_tdnKOc{-xaWxWJ^TOZ~f)LX$*-tpR%hD~vZqm3ImH}{3D}))J1&DmE z`xEy^BK?=6x5$MbO<$9P6{Z}!Qc9+Dl}BS9Xm!dw3HOt;yxSE%o>%yc}Yfl zaP-srk=|X%m1!<}qwfYWX6MtgO8oUCOrLqH;U=y!yM(=rLFof^G-%xvtt$yQpQWGQ zk{bx+*m2QP(a;%U5l|%;}Nn%vYZ<|T#GQSD8!MWWgxQTp#QMN3?%dXQRRI73 zu=UGL=kH4`jdnUt9nn+!Y{|~#KLZ$RVUo`>UPa6e#8r};Aw4z7s|?HNBD1vWc@YqY zi%lSNFNj@tZ+_-`t@q3ily0-9hFvsjHJUP284Q&F8HW`WMmTW!&BwTk5qV|%RJhtd zrs40NDMWqpG3)u_$l^0lD1UM{-9eJeX{@zEZYuDrgokI1>2pGzBQ_E-KE2M*gKUqX zN^EaoYW@|LwVF+(Wh1g$%RkFTrj8YX*uC2bCVw4o);pqU*=jsizu5SecV zK;!B$)+&lVW|?oK6P4m?`w>m=?s~_B=H~M#>6N|NbxJ;FK{BVD`3*oSZS4;DQKfc? zJxaC;eZ8@$^^w*yioRi9K0U3__^cPJ6{jhag`J09JjUM>rIqQ5p%-_KN7JW#jc$`_ zh?=^CrxgM*SLGdl>j1}62@uv*pE^GIts?{&jA1dB@}A*He64AkN`)}8hM__RAO+0f z>wkl0|KF*vo(Ncu-aw(+U^TQg^FSSsF^?xKf^O;HYw-ncvrB{>p13276$CWtGYgTL zPF+A+8>TENz`H)16SaDCb)7kw(*tea?4NcJ04Dt7#mu4Z^vJF%C?H1);QTRHIg{Y8 zhJQ1_vw|}Xdy~FGldBmjkuDZSo9gW6DJ-hdFN|Ju z_i@Ti_+T^0A_ub)q8q%N{3d-$!BZ5}147%Bz6yFBZW&(eu{@k*+*9tA4Tnb~dlKZi zhw&w9OZWRZsEcl9)mz<7O1qNDTqOKsS2%~4uz=v$V}09OI7f+BqE!W3OntQ1YR)YS z5l$QLW;@G4QF>a4W%#5Q-2n(tB)C*AN`C*b(OFiCvZDwY))z7Z!d~bM+ zF$$#HHF>NSalhR(21XYeAJUTV3Df?j=OQRY0UKV^I=}7gl5XYwC^`q{qyM9*`?HEL zVd1enfoW96H{F0DV|5KRwpzun1eJs?oR*saFnVrbNywT_SXrLfC zjf$42$0k;~VSl#4J(q&_(2Miy5~A5{J?aPM4dc|q?DOoi=fB}}*HD!+_wd(<~-LmvIMQa~N7$EDq?2yzwZBS~SitR`5-QY^{_2*Y(9dtLikfFEY_HyeTf30)`P zzl8#@rHwwiDX>{Rqa_iOZL3gxoz?gc-NCJzxzwnySIeq26?uPzNIR?zTXlAYwKwas z)@p%FdcxdtS7ak&7oU~Y9*RyJ)e~3J_DMA?hEXBZy`?)dV$7?z4*H)k2Vf8iVF~h6 z9IPf+Uf4ckS4+gEvYI^K@R9!VwaQwE9Hq(M)vfY!=15Y0XeD~k#wWf~n>f}-Jt$KuKXLq0Tf*im zA9jx~sM`5p8qSh2Kj(wDD)wAR~e^Ga@=#SG5JVQ8F+yM@Y~o{aRyJNTdo{ zL0oN7gt05Hnl#ZG?kBP>+qK7O`nYPz8dl5J-k^>>9ONvir)JV6b@d}GjXTSns(^0Hy+bcoEAJ3ZorUTkEe1GP}GDIoA8z$l`^|j10F?$Z5 z>uYW~F$={*szS`TC2jH}5;FBi_fGGch&Dm480ce$OOUkXUdiii1Ci|uk;IwWYsppG zb#90s`gtaoy`Q^Y4-U_aGTf7;_{)nwd(cWM!WK zhvmYc^l|`8%Bnw+C+7np4pH0uAhsjAjM*il)Je)44m0o|V>84fQ=g zoUMmij}ffM)F1ZOwp}^y^4JWV@s+$H7N*Nxv_O8!zRbsDLf+mLEbw+F{O)tF7}e^2 zvKfzWO#l~4c~m)0D{5R&B(rp+84#;pdXHoUl&lexP=6|*vq3i@lH~wcaN`J>&O-n< zH+juoMt%!f=kE(!P)0y4RM|ql|Nk^#ztcwh$OJV7+}ly6$}_k2>u7DH(D6wU+*ge1 zma0LaoFfWLr4p&i^OX_WTJmgi)i4Lv0Y!sqSn~XqAlFEHPyR94WJ-|I@?%L5=gK!LZ_q#ODW@PaFy!iY`)nhHV7=}c_uJcM;srNl-_#1`d`G@`#T zn{~m5D=#ayMCQAU%mPOS9ZK7djp29X5xc~rv&xYCH0?kymC5B|l!_8!o@#$$l zsKl2Gq62VMDGUlTS|!(D69gJnuHSFa5xzWMQW>t1{|@AKw1+#tx1cOYQL{<~=5qWg zy(BkLsBnC35mc=-4LKzHxt>jlGdr}AF`bd(c;98>+r?@d8h5eAr`*o9(~dPbO;4rG zOwJdJY(82NIdy%dGKqLQ*TBPJvbNeg-`qYIp!5qA=l+?1W?kaWb!k(lOt=4~{F}dv zILKObBROmkw(8)QTUruajE&NQob9bl9W#Q}zXXR15JwxV_4pu$zU}!7c;&#F3!Pni z1Vh61;3YLs$ZoarEATVPHwHU;eQ`%)rj+9%Oss)NJROR=kF>aU*o_WSir3^hjJ4u^ zaFR^d$j5Du$YlYsmr|;Fhcl2(sEt(rlX|Fwu0?6xC7|S+fwecz^(nxelW%nbO)r|f zB9@@a76=8GxspSG%!x#QS)K$`>#`LAklQ~t=K%Tm#qY_)KO&>Hdfv3ABJivU4(EE|0NW$-xGj4&1P#^o;EPYchQEdSXcD&0brUQ>JuISyCxEnp>Mtd0*9rUK7~4PD zU=3T4`vX1yvka&|q3iyQx&5CM_Rp95Gmsn-0@M%i^{4pSD>*sGZOvBJqK;{vw~TIS z+WDjvh)BeIZDhg87fPI?*Ekq2HVhKE0~~TClH~>Ov@K`Ff3d7`JyJR)WFgQ;FJ(k4 z2(=A#8dHAStR64-<;_uytS7FG<-Eq;^KA(noj}>oW!IwNGG%thiU2NwYFu%3m0@Sw zE2n$$j(Y^rM?~XdtY$vYJA9e&aib57=~$BLJ(h=qj_`=NCdq$R5l_P?!*A2-dHFk=rhf{TcAW z0ZtK@Wt+zWl{$H&7F&#@h-!I6Pj66G?6ag>+=d~=RJlz1aMoCh>k5((<-4-K>Da;`L`L7C+_BqIlh)bE=`7 z_V&lYgL$nGVpY>~QrOA;x9oRb99(-U#TKyR;IA5gCxgB2@&^5IUVg$PD#oy zkbIw zQ`sHI|5Bm-kLUoKIV7{1bh^=p*Pqq8-SC7;ylB^Vj9pM*$xO zh@k+$b-fL?!F-0VRy5aXo!X*oeJQLy#uPu747goH&}Og1#*GKx(0#Z1W4d*`?TPR} zQ0f)ad4CGU?loGf0g0Bo6|aPi($(j>>GfhBx$|jAl2$Vr+O-I0b%JWABFPu?KlG$P z;cXpsz7Qzsqrpi+&9}uF#m2Czj!l=(iNZFlKl?>hoDI%LLG+0vX1*CvN2j~;Vv<`u zZpN|1Wf@eza+$L}i8o=NvwhR(Wa8); z<3Z8><_c*5xb-WU4j2^XE#axCwtlkbYPzD>$e_m6*-(L!5er=G{sn3SaF8?FY-HC* zAM*kOev>3qMrFpYFKRVTc(S;Js!nHw&eP%O!XO?Q z1jH4Z_`2~i*QvWK6IvX$NlR-zPNtj8~S$Ve#Km{+L#L8l#qYT#7|v9js?w#S%=qO`%O3`#|PO3R*kX# z7_(SK%@Sfk+$*R_1pWT{axB8gtM^qUZ0^xe3jq2FLfKCgX~t!p;?Xsnv!}6?23XY7 zE0ZSDUUM8GaGCw#{O_q(7ed+$#~74*TSIc^LsN$5@5FR*7vWazWY^gpTB#`#DL--a zJim7`du}>DP2s8%Q+mW=sIyksh+*?F*llpI&Z=PF^CCf`X-L6=K#bEoFbpz z!E^EuTl+y@6$1YSQtE&^@D?Wf{HMz7f8@kQ&6Cf}VlM;UfTbObCD2jH z&qA$RsT6-qR;9Yb5i$xd+6ziT!d}y0a7M9t><7i6L2Z5ou;ynvO)fCh`;H{U0LzP zEo}2H!2O%9+j0qtW64cGknM7&l$@*yQ8{N1!_ zcpEa$=a${k$2Hl+#Nhl~B&7fz&%nlL9{zw(a%AxBg@G#5Fo z>J$z0GSXD>y`*A`BFrMIZa9Mv#O_=7fmk1GIKhG%;!g`)V2w7q8YVayxa|~VzNp8W zrmbnGP^o_2)E z$1U}^B#X7&3?v>fzeg4@e{~6w1D4K8l1MV+5J5&fPBHe$2fo|fv2qIs`k}?udG-8Gqo`4kPOwjrx zXLg!kE5C7&#bgbaO68KAW09){L1~4RefgQcvIt4;O$|@N4`mPM@)3p2LaqKPgPF$6 zo15~*1d&;TJcs%MW(QI)+ZxerPg#7rr&M;oL8Q(M@gY}lr(Tk8xjRL^Dckepb&>UC zi!S+=NQp(Mem|Qod;Q?H#j$|2c(UBn@sY|?eo8!g>O&F0KzRSJ)=2loaD&BZglgZ+ z&Rk9#P0L$hwZVs3?Aueu$X>Ps<=ob5;@^(D7E69^Hr#!5SO9>8w%_NA!c3nU%wrp;op$ zDTmdHFT~Bwz!S7T%b=F}mx!R&8M+Vv16o#7+nh)9FkygFh~mrZzWk7_RC0giV=ng= zlg*&r%dPBMC!$K>S={rqR4u{)3P|9gu^&=Z5?XZb5e>{v_^u^@d#Noe_IpV>SPD!dgPKdjE0B-k^rw+;_9y z<%A2vCr1td;zZkT9!Y%SHd{Z;Y%8ERplMVFdNXbC3$%NK{N7~~SAvfdq;@emz&a)U z^L>nJM^pey5qCC!K1UUw{>?JJ4vox5lTK=-Z6$kEdLWVViU&31*>HU=M?!b$l69cw zjI)Z*mL0h<>-(zm+<@7ZPx=Ks1bk4#c@-BF*0|e45t4)MG#p|iYK6i zFa%b>4Gw>VI%o?eIltPJBClW#ko?xm&cLdZG5U3Aj3uAh*8y-OX=bUh5~$Xt?ZmRL za8Se~-cb{t#7ELtq*T>UjYyMB?9;xlB_MfmWPKWg>XY}N43MZ1 z79An;Px@~0)2`2pwVQ!1@T$^7t&~^!vxmvtGea|i_KzK+`7TrFfWRdIOa_MvM+OVSPRLrq zGeTiNwdS#Tsb>)f4q0a}eHrV8tixDs?PJU_BIzT|JWxL=lS{-Lj^d=*1;K#_R#uI7 z;(mswwX&^9=28KlYcd1RW^{-qdb?;hgG8f8v~d@Tl_%C5pb(h}@7!_*6_yZMz`X4h zpCT|&mSy|}qK&nrlTlNqfIBf~_ALQ=tHAj4&u9G`lkwlXf;d>GM!3x$9HSvfUh`Ye zZo2AWKGcI!gZe=e20l&g1u)x5Y;-8w$e=C>=T5^7Z2;xb2eLj_C|25xMMYt(f%In{ zVsGy7U!=;K`7w&f2ZA6i-*GAL6X$6*2o|STEXt?w!)qFE1#^{2wE)(Fr{m^b{n6KwXj-(3F(IFDWf)Ued^t2t>7R z-i&>iu&ue4OMLrj?6(Jlw5=gI4epQ;?S}dq6MaT=@331oO%-@Q%Pc$hO*xJ-58y%I ztdqG&GgUu_muJTZisFC(+57-6YvFZ`^iu9*QRz+{L$-PW4W>~@Mzn@y zEr>O=*xmqaE2+}+>BUQ8Kak(IzK!8ny@AoIMK0v`PEqA5bWDxeZZx(q`>VE3<{GcC z<@tOJi)f+{ar&r ze!e>xWY^!1T|^mq6@)PR-9i~GJMF9PapVY5Kd$%W?<~^Z=9PFOeEqes=lFQAxD#Hx zzdD!^O_*}_2yhB6ed6&86r_a?!Pnz;ubZ@-2h}E;Zx)qRDE)*@2e@VeS3gKD56CV; zmXyh1@{YCWq3+DrB|m)NbgJJb{MpulUMmD_y1E4QCaH#)6;_jl;L&0*j235df;^26 zkhG>ILj7*kex18nCR9N+$ZUkKYkv(a*%lo>M5`-AU%Us|={V|wl(T=V40gY_d8a)Q zA+FGg@=2VQexetYAW%YKxZj9fwt4NIrln7XG4xTlt0IxGFqk^qLjbF6+}~hm|5Z~q zA-gJDSl9ve_AnoFY9hdl`1oxE13#fINE@T*w=0#%o%DWykG9E6^0{sI|wxFvpjeD$8k zc!s#sp?M{VI)k+3gq451ejZ zs(x zx*$A%e)3_DTXcH`K`Sds7UI7**KtE_?~1l$w9dA!X|{}fQ70Dzziv)IS><|3OJ_QPsNe6E3il`?YBewBS{0)d@p+kH&I0Kr?JNgR3!8G@KwhG$o%A-p z)VTQ)HG+Fzr{-eLicXpDQH@pA%DA=%i?vwVoE74(ek!wNXRDkM)hLLQi#W6 zPC??*wcEU|hzz#jNcL0X{Geg|uA46KtE!hwC)fAJwtBPk7RtGZpgMjK;^HEbw(WYJ z=N2!ic|XXI+b2B;X1o}?W_mEdtwRw>F*|ahmVGA`F^i{+7->aU1mE(kD&3VhY4`m2 zG?BjkT|wcaNwlb%poq+-a{ZkfImkcj?|&zaAk>Q8yFMjqiQoY%`QX!aW>x8I>lvRw9m+FO~dC| zsObY!Bf(qla9m**9yNi;H~+GQY`AlRp&H6A1@sqFF0p(!Ap>w57X5nyXliTtOJv@o zK1by^7#^l7P_q%ij7N2uMEbJ1b^H)Vq+)a^-Iai89OKunZA3Zd7*;Q26AvpwFZ}}XZQNRl z>(0b1j**a42#$r&cJQo8h!jMO|3^RqA@T3@=8Z8oGF=DYDC;)w0GZ0NS8ZRQ<~lUB zGJvXM6g*OL7pPGY2|s5-9jDggX4BJs zw*c5fReW%H;$!4P3=mrKJqdCRMaPn_i~p;L`$={JtaJFq-$YGBkQBZ5te<9GONAz+QF`m>@pXxAA5_aUVg^O?MW@x-I{88!5~JEtMpKp@;p}ld z$t5&-W0}tZK`+GFEw0RUc$X9bh+}=K>^6zt3d+Q?CQ3B0hDBOVp9w_>wPos{KKy6b9j0l^}04#R}Jx{%&j(P(M9@?gme^y0lM5nXL~b8GJc1fLer1 z;0G~LUjV1HdQq&;vG3U@NfmZpn0anVe z4(_S2n;u3&$hwS@J!R!SsP}!2tG_@fsNo^?jc-3RX9A&*tC=s6NkSS_7L<~naD)hb zwG>!ON%x~;(~*AO@zK&KSj{j6SI?Hp*F5gA?Xm4hZ>5uYGs07vLTT?YWCUsr{@-uw zKOxxE?r^wyI@?9~No{pP?PSRhK$b3<5V*b5fQY0No&j{HsK@|&&n`e``Ty3N0(N|? z00sEZZ-GvNFEjzG87!&`U!#Ot1JaR;{?M@zQdZ`CuE?Xkc^2v<15~9&7LgIpZYkpY zK!VBP{_X)9O>cA$8sM23*xMRjvxy^mNlM9amv!l86!zAVZ72et>@yl#IGxXNTb;JHB)THS!B2(ZY2X z6`rn9e#MWTMw(8r!fmch%y%fU>7_gc+W-=U{Lb@b%Njk>nxO&@riE_<_GFMGdG`E( z^&h))LX_({j`F7VO2OhVS1}Up&FKwl#5U-xCWD@WFR5C$QZq90Sy_cVYp$qovJA9Z zlc<`gW_~6283QhxtjCO+ql{Uj42^bFxiQs-*YvD<^>qn)OS8oEDAfl`@Z;^x9D8o# zoJbNpnf|e|LfvSaxY>93DZH0PSarW%&D0}K%EHO}65#Y4^pMFcF-)z-mARdzV@Q9bmeRUyKqA;pdCjP|n<39%mioAM3u8hPVnhv`v6b^vcX6Di^)q?JE3a)$ zCl7VK42VUAiyplF1%hOB0!s*OU|IHbci7-LzuIjPhVRa!Uo`?oTX`a@UjK2Y_}4Y~ zr&%iX*Ee{lJGm`&`6Dr6X5>yfHmVsp8GeGo_l>8@F9p9Ee0el!bz zz7v&6ztbZdfB~C4;h;8cY;cFoJE$DXN7+6itP!(?L#vm-=o+cHvf&zxm7rWrHLk%L zUP8L4NCsf0)CcJ;iyp0G%&&>Tb&|V?knP+lW)Px2z&JK?!Eizo)_PR3^P=P zApPlNIqW^;4BW+7V~$F(hde!0u%yZFRyZc&oJ?(^L#2G^e1N3_tLq*ZG)9?{dWu0^2-wv~+58+0KaO~`8t4f8E8UDL1U zcycjf$56}p}{aj535LsxMh?9F9L?EL{-F2(Mb*Hy*9V?)wJr?XoW15|^@ zr3Gn&qJbw`4pWmvoaM-Yg#IW~HF>I6knZ<&F?2!`NKkl^2xR&3R3n%vV1?SQ1CQcu zmE?{Q`w@YlF&i3Sc`tt?y!`uqy**@^!nvyLVr#8Dx?`=xLw$+qKE*gD4`E-mnQnkB z$QQ(PiQavzPdz8#(5W=+UN?qwN+MRfxlb@i`x?dml!*U5#0>G(5d5%k1bes?F`LHM zLaZ|c0cnebHzy4r*Te4AOQ9_uZyT6&evxAcm$G6j8 zbv=H5&ZFJd)T$-AOpcT`#s>;qcK}oMKH#m~v(gHtZ?}KAukXC70V$aW{|~q9Zz(S9 z%P){D*J)b&b!x%&4;O1NrDq!&OdH_gL;o9ey8@g-4LV*(v|~AxCC?}f=I0uH zkvAU<#F&$!St{iG&|<>YnNK>``waWQEn^^gqaeVYgO~O8t;lc4n!*d4IN0(m`uE!G z46yA$M@rX}>>%61G(QCbI;U#ou_Zu~^mh(p3BP&V;12ipHGeRBWN6clgZf;yy&v)m zbS-rf*_o4N^vd&sWlIkpNHa#p^|rfJOgL=Peq4jh*vJ4j2?ee)t#3OA7)xpq5hiVO zmN*l$N1K{7ZW(FC>q@}~ijM@UyeBow&N_i!w%ot+EVYjhvxvMq7r3_74b@j08PbMk zkWvXPW2z%q-T7Z%`|x72#5F!Sd&O7LWnHEpmA=HKmKu+3QOXS;JQySU()tGNbA)FCt44>lpj~IUP)B2EZiz zUM&8_5d7P(_&eqs0rlBG%)!dLH?OY1>Nm$#K%tq)#y;_Ix8MglUntAM)4N%G54?(8l2L7n!Z+O(e=;;?NNOG{?c-LH;78Q&L+1>WH3ijd%gew#R5t{3r*(cmH!IP zzn=eJuWP3r@m7}Lg0cfxU=IHRB>=Ix{wFrK%qy1^s-J7Dn5?m8Jwm>iJRnlbV2a%o zr0}|#MsQ}6yGCVU93U6G2X>HQ_%w*tNh92^AXk*T%h^fn(G0;D+yv)vik&GoYqiGS zXcQ>fBwa~v$H3vPWL%3Sg?moAmLJ3UpeCUy-JwM%fZs^LfnIYQ%-om6@LCy*0fv^X z>QdH+3O6GSLxX1>b07G4`0Gs5SU_@=?K}h`F*?^amQx2nykK)&$cjfc3|&JTNw7ZI zFqXBm#I4H-)hI|5!$oozgt@gFPfe0krZ?eUygPEyZ`%~M1_?nu1zMjJN_kHLvrg{9HzaQF2y}O6tgVh`>S0#yZQM@Q?#~9p*KttOEC%kl zN1cj**u4k*2g6CS+YS;9%JZEEC&5~VVlrBBRZ&1fqvCB`D#4oK2QqwrzZS?o{AlECizVt$StKhRQU%xdf@iS z<=sN8C$)ZK?Ht%sL7O|D0`616ltpvPAm0%ktrodfx6l`bv7%OkfcKU>04ol2v4mIw z*F2!A%_1ZsvOL^skAs!ZLkhp@yBWH}S|1v1Y-nY9GU*G=`>iKPw&X@U4g)0BMUURRLJBL6V z8RmxVttkd4^mGb)ok=%^(WaL8|M2GG0yM1=kBID?kS*GPrp|x-{J$SsUUJ$L|8pyR zuscXmzwpB~xD7XaNPJ56C&zvC5T0z68B3Hj&=AE}iy{VuaoU_&zPCuMR?|kQI6tO@ z@vT@^7K+BM%zQ9wxtZPIr%3+BJyzaXk0wX!MXU;MkP&m(d1EY>#{#=6i zIjuSEHNLMZ9F)R3Kx{mIOjDf1AmGVkuXwTPK@73B9;18I_Nqc#YRRK*@UnI`k7Eq| zYkLq{UwVLh@QuQRAAe7Ib9CGJEk^)4mHa?}LD>8G{jW@`IR!VW;ow9ak5w zEpG*#l8kSSAK$QO_*=9D0is>MhmzFQc2?Nix`Ey=xnp&&bGXCz8rI$wd4^4|-LAN= zY}W3W^FBIgBCwKhGzKa^i56EIYo`mJrh3%|m`-Sf5cF|?Ljg>30$1E>08cf>x<81} z%u{g>&NFOJLOS>vF;@NY)?8JOIQ%msm%JY@2OwX+GDs)A5$cG}@f|9RSI2%b*Icb2 zc8B-@K#uva&dd&$ouA@}jVKL+6=bm&URz>bAGNZkNtc8&mJA2A}iG?a_# zWm|6t?CMH=E&NVG*a0rNGb+QfRjO(dKsS%NngIeX%5xY*?fYuCPoa*efsD%dd2nX$ z`JTBCtg<}nObU=eB8dW*J@#tR!dR_nEA(;-%7RTFAlu@%2we^B2o;-veI%bM-lYd< zvq(^%ja$P=Vc7Hp$|2O}DSW-lm6hSrEkkc{xRS@uB^30bXol|pmUn<|{~fUTZv6== zdRw|$5v2$3^;eYMq=MC@NME+3!T}jOZJO6pp5WLKwcd*}-NsM??s3RgKxyW`Z#8QI zjK!CyFV0ub37GhEt!)W*=WeP3={PIo>Sf&#g~`*zhHsniC5z3P>Sr1=2sl>T5&dy6 zz}ESYEzAJ+e$@^TZI0dt#=ifTaB+?VU_XBiO+RoPq;TvfEcwkHMw9(?w0?2URsB$7 z^C;q8pC;n=GhZQV$caORN1Ew(e4Y7QcH19Y?F}>)gI1+`Y(tLshePA98RjHk$y3nn zN<$bqyXk~Ir^VK!xpdPSlmo=W?B4ur`*F*XJ&!0x;~mqxtT&`rCd46(7Ej1ygQE64 zEO!j6SS)Q=4cSx_;x}g-M{trRv9;%Gk6wL=GHx7%5Yk3Dv_DuZj9}%W(;TK7iUT(5 z$sbczin73Bk%RdQY0k_P?e3Y@YEChpX)<$4`w?$sGZU|v(@T3s6=PjcU@E7QkMj47 zAfGawcR>&~vHt-k|3)#i_fMsi0|YLgzpkwpS1x>s4p=dsa}0%|m)Wn&6?+WvaVq&r z-9x)XAr$5P0P_cwhO53d+e?h)<(^B&oIo|DNU+ocQU(;}L7BbZc;( zRCHQ*9tXizl$D0Zn};W5=RY4Piw z!q(OzqYrCbCn(qV`%xAnCP+#pd%pqHBe_z}}D}e?ivLMP?Z4N1c9x z^YbKdJ%&^$?xI}hc|1kRZXSppZxOzVPDdWgCo9UEw+yRDP_Gr{{}02?&5P65&2QB%FMd z%bT&bU}ioI>1#*ZF_M;M>+!_~^l{9~(TLOO>;u_HCFN_ZFW;mTrWA{A4t{i=LTft7 zMxvKTOtOKZ+N<(eIpy0gYXBRwi^MW&+hrb~lNGJvsIr5r#D18QCSsFiTd0OohnPIN zOqXhIF(6o%p%XNeaQS*u{a7a_BmMN#Q@4?0IypO6SLo1gzrGqZJ^o{M>J^hutM5Wd zA9%TtbnPXF-|xM1V-V%|o9y*F=)It}HGNI%$c9fblr^!Jbt1`G=zlc9lYpIxCy)ga zF75;mQD1ewu03-3DWpy%&&%-hEF|&-XFdI8x|PZEi{tpXR{fd1j_s?@fJ3~)s*V_U zcXgH1B=olCrNQrB^s~cI8y=l#$#`t7rb0b{EA=ZS zHFG4TR+VjTZEi-CoQ;Y*hU8cQoecb1@5?PowB7wl}x0i{aKe?|u&w982OgZ3!&{G_%dcZe`*f)#Ez zWoic!MzS)Rd&K<$QOXs-ee?b+53mB1Y%+^kNi_4s!iLOcV)e~O-Qv6O4TH<(nWqg0 zAwSM}Ti!2A2fS(OaC~@=eM-{W!!}rQUu#Xfpu1@ycdEFLuqMNT8PS2#HOQI|#8@r0 zVNuzD{P52`IBx6Yzq5|bEHuz#&zve375}#5&wSzx-|$TN3yVeZHP^DnZd1bor)wN4 z$F0DoJ``TYJo%~;ahsp^dp{j;!j_XdA?r&xy6TQ)0*ye)(&~{plLb5Nl(og1_Fyq7 zVm~r2LG0a2#zB?cWed)E`Bu72ZbC}(x2M?RgO*mYYs8-oa0~`~^x%CX^oUsXmJKRf zI-@Bkx+25~p!m2>ZUd~%IT9EvT4t_0Wx?Ch<$Ck;47b7O&m-q;=INZGoCQG(xrb(K zqp!ILbrIIlTd4ct?uvC<1TAU-LlgTE6-T-~bzQ8=!!$&|0!kzS?`YVhOjWYwn- zbnAea5Y~g=%&A1btMkG6hDm69JH%;0nxFt!b3FS%Ar4sqwq&S+ohVg#b0;`7CAo5; zxf3>Y!A=z_Oey1!PeR{=eF;s%6gD>U zC2a=m3Z^#G_`5==P#z5p#Nc~+00NdKNl(O@5Y3|@rV9Kx=4fQR4MV-)QJbNaE@q>} zWe^xS8ynEq0oS&|HWO9Ln7`5Pe^)0Zt>(zm4%@L9xswdzTgYuK;}axsEVw2){r$Jv zj~q8P>{FNbEZ^XqYYL~g8G9~2`e92T{4G=Fu)ym^fh=or*`W~EBj~VeiZcAGEn0f6 z=&r?ZM9VLEsXzh>{o0#|+WDOsh&!c{_B=Z9*bOXr`LoXlH^6`PF4`dWQ199dRdKJ) z8|q-&e_-r~4KV%`8S=Y*^X5TDcYD9srhn@(o%;6uJz=a)9`%Z7LU_0*tsnntFhTX4 zHa&D&m_oB4&`^@;Em-odsp{RmGc!Ss|GkmQeoFVXFroAWvxw*DCqBM`ELGVoLbLk^ zTat{#lnfttnnB@~K5?;yQ#3h7IjFuFu?#0}RvM0SqqJS20Yl`cZ z8$9IFITICo;_`W$Rq)v9{#fnc#Se9c$1KAM_ufry7#r*jM+94$zbTvSlyUW#b%}0# z6Vdh9jDR2%7Rwx6mb^GV(FQMkdN={GlM|fSZZ0BJC#$6rAa`eUyKl5w9CFVN1NYCQ zjRrmrFsY=xvDZx>uaAakKesE>yPxvJQ|y^2m54U1+*`BpyWv`O`?WQ=@6mEN1zkju zZ9#iM+8Va);= zY(qm@mC!+W>j0=K^!+FlIm{}YU~LV!MiVxB+cibdSwb$8Ao}B-HvPGo_;xV*z=C>% z!_0=~PN-VkDWL3?ebgM<9W&48V~0Cj0eLN`b&;7L%`qXlpo#hYfI2|L&Pk{5X6dS0 z9z@T$Rtqc?X>kZ`t{4OS-1%^!eY0cGCyWW|6EW19qf_}H1vkEE)k{pY=`YXz#P#!j zi$Fi>?+?v;RtfEYQOsOJ#TJVwEZ{N@g%~czquoT|hx6zNNeZ;S>lwHV+s|7aWjMw!tC8ECK9ZE$?YyyCzjPKAJrgiUfUZGVS*26qN-VQ+c^ zt(hS$AZ7k5!JALJ>~DQqs;;(o$rnQE7p#arPHn->nfEi>S1T=^@;VD@&6oHZ=oXIu zrU-`}=LDdS59D`&^Fb!1hC98r3am|$B`82-9zEE;0_e{FM>hBq2msm_43H3joxIoi zzpm`vcd_vJ4~#6^cm6X`H~+xETHwV$_P>>N=)1C^rb` zkCQbLWNIm|s8Ea7ZMrr?hFPwWLElS{cRSO}5xR6)1#}m}G#2wzU5|ML_L3XBfMvI? zah-@y)U-9m$WX5Y;ZL#+1sVk#H;0b&ep5RlHv!cT?-pmx3|2%4&EllKbmCMNsLvxmULX@AP%aRro zAKsG{jYSkcWr|ggr-GV;y%c|KWc>4ULB?f=gYC?zpmC1!?CYr|~KC%Ndui75Bz->wP=3u~yv$Yy{W=#9C9d9=>k z96acJG9xjpm2$=hmMIyQLufvFVO?O!GcI%p<`H$g;>3zs}_;etB> zVu^3(W+2u`D$KHe7-(@YhoYp`M8R$81KR&kw0AV3FbDHF-_C9>bhgmV=sR?lfDahB zRk};uT%FrQRJCetV)%I+iqk+D|L~1O$84SDM@OvrH0G2xeJjuh|^Nhipi2-#xYSZ;kyEwg_ zVBb*e_}xg;^|H(L=G$`z35_NtV@gj~7hhNQ;i2#c1A-iGlcnM(+{FaIwK)&D&E|8l2)1Ojbb{__|5y(yWMt*5;I$2bLz2aopho@Z>EWLh)G7heZwX(}#K(~f| zvoN|kvz!a-=r^~-sQP%CwV(F`{=;jmXNq#Q$TIvvZBm`-H}m@a z2VawH+()&hR6@|4KV$+Yxd_sQUvsPQ#49A^Sp&k>S3d4+cO5~bBT-8SSoIo%;IFQbJbwh;{`7dscwtxkFvEM11^K69kA=x11I^@g7=aw!Xqv8i=njxq>$D{2aZ zW$cUNHMT$uGZBI_zNI<|^LPQNae%^>O-=%|tDI_yDDVDgnYqhqfqYtV;VO>KfRXbxPJyhqvju>;Ya;vwT&1Alx`%Jl9oB%q@M@M zS+E&WWkR-qD5Mf+Nu|#4;=jXhCNyFVu3| zJt{oT{|-*J`0L>c&R(S}+llxkv6fpd{g|`jy5u1k7#N!%+xz4@!HKUAW1VyGUKU>e z^q+BX2Zj#D?+5tTpZ(-3s_So+f8HD8e_;HkrS^*&8Lf%HRyXZUXju_ID)3cLH|KLY zwxr1g{qsl-#YYeKv4ia(X8m*R(vmOnM|&Qdc3eZ{qr6f17z`XNxac~^eX{*5V_Qb8 zt|%{&J1Dt*f*X$oflJoXiq9hCs3%P0-ADBo6uhhhyPFcdyn1b(wk{Owv@fza(7v{> zT16H7r%KhzUptMq@H)@o*k6WgbV#Y%9TIGr-?SE#KH(Cw9(``V-H&-BYklV+w~fTN z?AefluXMY|rGikVr~S#chWA8pwe8E_#9it_?9wr0NhSCVmNE}s9>f<|@GO5>hg%NO zVw<#c*y))pwSV4vf-dqkchFot4v_a{e1$nKdu&2RT>OwhXuwRI(lKYF2))fUS5pzC z?8qC6fKBqIe51*YQ&GJw&Wocf2Yhv#{wv8Mc`FZgnm#@OZ-1|Z(35?~%$0%f5n?Yj z^TmEZ$YS~FIv=seC=yy*ns2DPq1`&lq&bJQi98}sGG5t-%Mwx@=RyaezUd^m_nz>; z%1xDt-nbV*M^yuIe83PeaBL(bd8C|C4mt}KJ=%b~^^2hN{ROb#cj&nU0ZW$GKq5*i zDP1#_1Ee1@HQ)n*4#_xCZ&g(f_cBLExK4cyM-P4cVi721(_kk5r6*v1}SWG|+N{M9^ z#=t9ii)GuY;}q+7rV!8CHRH5f%dm&of+HMU2W2l zG^CCCR9>%n9Ycj)fBCN<`!m^86A@j1zdjcJeEhW* z*p&+X#mp-<1B@JpxNsNvJ6BteUZ4By5)memD_qWJZ&y-J@f3q=u}H5@De}p9PQS?Q zjYJBdk=@PXjHTpLOMZdm?rd{dLkWEiuKO<&FAjNU40`E@KeNUe8wHhtnb5e0e(D$h zxQZj1*a#WMp$G0)l{NB_(K9t~bk}d6xeoT_{Wx+rdGQ(xF@@-*^x@hwONgckuOcyM z-7b~y_FqbQI-+kv4Em9xyXb7Eam;&&6%${Q1Tk(v~@QDfFi@ZE0;bDn~89$O&A{ z&*~^d29t=DX*QECEDM)Xvc6Ew8<#DJJtKYjH4&>X)0iq!LlW2j)gj^Qdaq~oWv_;m z7)|osBmBv~>t;R5vzR*j$fYAJ3@sp`;bgPRp(k^7H6=<*eJO1&J#Qy8@Sg5wt=Pra z{fkunY9sN>BqJiXbA!@KmviMSDG4jL^*Ec?ljiM1eYcDmU1qqJ5muVIpB1SB_#AT6 z3nt0stUH)~x&&6J{BNpAxhfv;1EUXD6rvb`#(TbnhpLvuz)cA>-T5|yI2UGm{Du0K z>0c;*Z0uiPH`jEtUoqI}h>53dg_||{z)a75o`F#WX*F`Y1>yw8`J=C#;N*)4cY44u zC6T&Ydw>mU7*4ggVlB|?n^QAPk)3{qxi{-#R(XAfKvk`h5~bvBp4L@Z`-TX@4%3wbH#vc>XyGdVF!EOblL4q3?okWVQ%P)^notp z)q`cAx~RC4{G;?;$PC1#pFSKcLAKJW22WLa-uS^zU=>l(x;-zD2cnNtmaz;9^!`8R zF>z>9tC5*CggYsLGa%G?c4rg(U~P$TC%KwLBvRehg~lN22bgAvHAGTX@d~! zfc)u-D{53w7-!?ur4#I1A2|u$rQ0R~jf2#F%>nwXvHk#T(i0T&iZKwxGGa02AHV=G z(Z-mrx9*?M52S!Bl9f)^y0?*VH7uqS3{uq&_-Ws*ST%{iXF^@nBMy{YC_q!-$ynp8 z_qzbr`Y44JPDF`BZyK+7a@O56hYJVCHFSIaJKy5QT*>V(%q1SNubJ%pi*7x{3IM&q ze@&nN4PabHw&S1u(guifRE3jH9T-~e{uR#k>Q_$7#^R23A5J&M1~1`;jW-XvXNM*7 z#XpAEFtJv5e1Y4(+uY3dR3{kr>}W5Gm{F58;q|lg?Aq>OaI&IlU%BK#7&K*nT*g=i zGWfD7;lt7{vHQ4RTAX;F1iaUHOO@Xf!|8zv-xtySHtFINw4UVd{$SLm0Qn90kNZ!D zNWdB;MKDERmZw5JigP>y0>^&2CyO}n>DbPtbJ2nzFQ7NQ5mHPds)aS;?4>E}UlZ%^ z6!aqT_uBcD0(a!0#!;onRy2yBZ-fu6`M6(4Fn#O(&ezL@hu_Vj?DsCi?y{5GeZ|bO zAvEEU=9~DQS)BO#WSx@S`YPF~T;H*_T_#$HBhrI*Z}psl_q(^Uf8$Yc<6gyd+|I+y zcczJZgB5h1GUL6im-!s(Wq=Kr#NEC7JVZu*P<(r6R7i>C`>tBnFxSg))_rIBA5gM|}PA7{6uDQy2ojC3dpGOiZMBMTm znw6CS#T${-cw?~8eitlvS$lfPaeaZ|1TxYE4{+J;nI4*pDkp|mAZaIZp92L(tX=D6 zJjdmzNiFBlYV|RrrqlDeW3et_il?MOyd^l?ljJU%vcl=(8~==dokpdRxHgRwiovhn zgU5ctot@x)X{pmbPa2<&cQ*qbUtPwe{NNQ`E?f2!ENdABD-7%$ZngqpOj)uvO@bZz zQt9?*-y6#XsgVb!e_&XS?p%7H%oH+!uaHh68U3!ZcK+DqSVq%p{8zH_A<$tGf%6FH z%J5gXe^i@+(iTDHAsa}TaTG%=NI`LNI&(C}r1f}x{Vtr`#!JHvzZ+tQEiEqvW|7sia=f-itNc1~;*_*W4bTUJbBz@btr0I&8a7h)WwF@)t6c?V|mhVTYJ z{cYaXtXAMb=cZFc0Sf_>Yv?F<4An3Q(88Lr3ep2K3E>VfNX&G`O7U^hIU(Av z0{wBfmN_P;8k@fgETa`M3aW!l8)5oWcZpvJbjB`tYgWTz{uzTHeZn$cP|-*Fz;s0h zfc~wDN`Rr3v;q`LVEPuH$}snJL)2lp7H|t4 za~nkotIHE7+L*fnvcHtSn*?oFGd^-kHZ^2Pm1j0Zls_LY7rk|A!G<$3KEPRS_0a70 zz3yGPCJ0tV?xi5uWOXwtt2f~$!NFl6I=HYT+(l0H4~(bNw|JW*lDZZ)Tbo`(a$#aT zzmFpPD?U3%wzE6-&&|ag%fzc{c43fAB_oUSUK+hiosv4Fym}D1+S#IQQK@F~MsLzYwS_}4Kn_ay!~^wxVPnU~J>gmgMIJ~ZBk-7eNo+ag0Z%p!T-&!jCR z-8B-J-uhv$)$Ob-mXcnSm8qhV6rVDdM6$(%pB29Pabc*NX0Ef&KjrL~Izj5rxY0}j zVdk3i>d&sqpECI?qeI@8w@gXuI~cb*BF}S8#k-6BYTSJ9C6=BX^UwE~yI*(@8hlXJ z<4YJSw5%R_Qr)|%%-11am8YO8MmI#aJNYV+q}>q3kp8wMHce*c+<*hoP9@G9PB5y9dZ_k5aZ0+@hK_qJ1;scj=>PBH9_WgX(HzHd6Plf+V z2Ni#w`jtw%6Od;@6s`U|KEw7IRNV^ls~mdi|Y%C5EqnG>QRv6CGDx&MsBUt&D4l}k*F zi%TH9Zhj{9E7Bp&?;dPXB4P{)T+ofzRb>gD+i^1?i`8WN`1C#jeVhcZBHXk$b zhv!7z+tJa_$xk~!efq$I;wj*$5h~SUoVhv62}b?@O5Ohz;n&~@U~K+R9e;uf$Xoxj zL;edl`S}M1Gh<}heSMt)$K21(8)Ck_o+9E&wuzgYzIv(@d=J~l{Ea_RbcnkHX&}yc zZe9N^q||N)=hdc}zJG~6abYDMQ@%lkybqy?K(dpaj*SkDAj0X0ZX!X_H{vuoR2x6n zKE8})y(!om_Q|lQ_R^>jv)P~Pv89qm3Mx< zzEs&#tgxskU%dKuqUu7+n@TC;aqP;lyh^b6yBs)@=$n{16xnZ<5~Tm;w57WwZ~oaYykdmHS4O7X)?O2Gc#vKe+F7tgKX~n94Dn7`f?=t4d@wMQQfYk>e__Xew zKfwRx1yi&9-9q#IbY|hjXHR1F8kYT!xk+dGYiFzp{cqnbR()c#igIa(^5jOtX(qYi|~u3+nJ1#cBY%nQiG)2d z&get({HT1Ax|;Y<8GPbsb2N4X6d+=VFc{gZ-PW+h{(I~VVT3*vr<=dyhxp|Om}5#M zWqRb@SZ7VL3R>f}cbmOpti0i1?UwE10Ac!2sUc8-{-WBh2VRO)MbK5ugXV!cb@p9} zC$O9;DR9qAyaePu>6l@by!jU2flcO_~baze^s zHfpDt^?K+Xg6tEkoknK)4NXB&KWbQJj@&ss9Zc+?xATD5R7?PjGkh z>1QM~BK3+Iri7jas6j&lq?5f#>+hWUcjURM^1z-(htdaPn;DgAD|J{2V@MR;GbV8d z|4bch$s|R;n0lie6n$=#E)UQ9eV}9uQBQvDk=<|prmFCmUlfCE27z?{Gji=*caFgi ze;wu51^o4gef}?{T)7ll3Y@{a*E3@H9as(y@%2FI-zPvl_8!l$KQ}t?vet9R=LCN8 ze9Y@SY47!M{rL}Cr0z;tZIV2dXae zL8(W0q#dDB(P4_M%+RMzHcm(0kQlr>^M0*VHU*t;D{kRDE8mtMKA^XLb6=J5nK?#q z-`Sne)oBVJzaKojA-kuH{kb`ZKEHBPo{N=#uyv<2P>}^2qgZ6~#t~9G3L^AhBvesh zl}iuj=a-u0Yi_gIt2R)MB*RyG-#KYZ!z$@gQ{0Pyb2|G5I$go-Z-?Ik%C4QX}!t@YEac#@vo4pZ{7QjxMd{^5{vo+R%i52{sjp z|4d^CYwo?l!#l3zuAwTZbQ#}c=)(OG=(FENm7Fo|sqZ7jbY+%`xmAr6@o#WR9T^0O zu*P0(Fi2GFe@mv0uHLsGq~2dV>S=YnHo(yxLn*V9+^+&;l@A(@h!PWk;mIs*KQuC= zAkOfEh>dNa4nAu#(yqasrzSfeZ0IZA>Dco~m|WDOV!tmlv|U4;kxtEpH`8QZRP41m zHjf_m0^zR1vG`aLo1XaMl1di z&?$w@8oGJZXmNlLGI*Oz-M3ASSzD-rv)^M*r(m83&Yezo)A%=#kMuK~pya`eHI%)- zfGEZZkmO^X%R6W@l)?(w@^Wi~**1ga#_4R1f%+%P2YF0Z>cGOK|K3V1ViZVt>P5tt zgDzu0@A63tNiEXqI0mFPEF3z-3>fk zZLsQlv{>!Z2_A4|xfZIi@4L!4HF49C@nV1M@;7Is_x)oYmqE5RB^H(9%}VIMw{!j- z)c-5%>!Sf=GGBBpAqQ@_|2`eC{_O4x2lw3kmG^H0NzH?fG#~qf*=3OKJ;}UB{e>MH zikEC#@giN>bgZ|Ko}F>Z$#$OH%3KWdmf_6CYT8cNOOuP0bgaqDr5E+JiTKHL`2|!> z?n?N54bMsjU+Z!-1SLP_Mks1y?b6_XV@aLQ407+F-kyx+N;N{B0*e%NLKkv_WE%IX zx_5hWXYz7+8!0<9&$7xq>~yC-o|5ge_=+&+*uFoLk-3{17PJ?3(t2KQNBRc_Db4)C zokjypaf-v?y$iu{_f=I2w;{gSj6|*Do%@gl-oRZh5s}4`qo7iI32o8y`i+-)VaIe- zshsk}usDo+HUwt`4xu8%o;bm8%|?E((Lx9B5fjp#957(BTV<0haL+c@y}m{@t#dFA8~VY zi_O*CU*W!?>DqpJ_}3bbV!7#XZv&b^S>CH zkCYz$oP2P{{!wyv7hX3ruwW)TvHQaIwCc`T1(rqW;^E|Xdq;?Viychz4Ot*HMUJab z$nEGzsj5B*s1c5r+Z#r-R1j*)w&&ddmA)l(qP2{)J(yRL=|H@PDqQ7!rju0c1+;OVn_x+Zx`{tAtXD}Rl}jmb9u&@{sS5Xp4v&P8^TYZ&SrZTw zO({k{Xw?QHP~8ksPK^y)H|hY3di1sT80hAU=u%l5plii#l2UYJKCq0cXZs+otJsq4 zCzcSE6|9bFKM^&ymC#=#-8uL`yx^5BZL9ij0{o`dwhhYpxPji-XuT>5aQQo4C$2tSFWPD-L*DbS9`1{xPz9;w{R|G8fL&^&2L1s$@jpY+pANEoMWo{KyyW+jgBE_014>x zx=f?Jq(+YKrZdqx0^~AFjUOxZ1m&~1BZOKt1pWViDPOArG9d>zh1t%u8upid9vU;e zZY)8F%^62KSk2;1gHG|*r{T=GGnR1X$5L^)2|Wq1e8(<5-_dMgix-_j_-qU|cdIqB z95s#V)S&2@zo)=|qVxajbTC3x{{t2L@|W*Nx~$uU$e(bbp5qcU{^I*j!OZN!%{|?* zwBh(UKK1H~#l?e1KfJ3_UIV|HNYPIcBW@F%S4__T;a3jz-&wb;Zk< zGLkhhydPZhx_73=)P!YO&WjxrXDBtP+=-=_#+DD-E*kfaQ_8DGo)j>@ndj+RP<7H# ztz5WR5%E}l#GoP?sV&|=vD#TWR=UY*vacTH>UVFGIJ(5zeqDEwp5*aEJeq|z2LA|q z%AnGuN0xh2SAoB$#ESVk;@kDqOmqi_oaA3|cJYdLYk9pEe##N6{z(2|>7_~^sg&mL z={Um{vCm;K5wavS)lpI_eg-Fg!VQCKSxHZxz2cpXe=JKV>I^NP3cp<;Am*PV9@c52 z=y=IbnzukqR7U?ztEx?ZLyZta7J^r05kqH%hN}&)pHT^)1<#YZSnt(9=(cuv*3#Te zEnCg)TvpFM#1f9pBrL?p=8sQ*^BQq>qL?T#d!VXe{k6`%6tW(+ze}pE$@6m$7^-dP z^|da>Y`L?=YTEAiIMIq$IhnAvs}5RLe`ZNaLTnz)#YJHcJwYu=5oK{_!4r%_zh^Z_ zn(!rgGsYjjzZBYhMEB{O=Z9As#`G!8jVT%S4)#KrlBS6JZX3`j-Tq|uv)rJzQ!rxW zu5)A06vQu{$)baOHy)Kgxh6O`V<;&6+s*xMZ9M;Z*@GxH^6c<-JB=+R>$#bgHUlDo z94l3TSLZPi2}+arhCuVE-frwIsRp*e!tvL0p-VXTZQiIgfit4n)+FfY7@P_4kDP-U z^Z*8U16V*3VEvcHvzqixbst#Htbh>;0P{`5{#|0%{zqWortRelTKk$*KO(=5HhuO^ zC_Zq#K_JgmTJ1+S=9BEQICat^(xVZy7!`P}h!`?6M24db!6(H6HnMhzCNakD*d;zu zwPVQ+_-A#JuGc-dL8~zFE294|I=q{MGqyQirveXyUt3j7#lwyc(YN@~! zd?cMkNdm=6P% z30sX#h8W7{?77I!DOEz$R5E(^<8P4&Gn0r6LNqJRx%S&&fA<^zL5ui59|Fu{76XGA zvKJX3 zxza4lW2&+Ty6IH(cr7cP40hNa6!E7?^K|}PYlA(L<`F;KUhG`{%3Fx)ddSy>_u;qb zqx&li)=!;SR+7H-3!*AM_sz$=mXqjm>*AI6I3){RvkO~z=+BRt={d2tt*iX;k;97Z zomCUX_IgrfQY*`e)wJ=JhmYw`L$iLJrgchua`VruXj6UELqyf?eWWSB<+h?8IsKUK zZoKYNJDEyD%h{(EA=VIs5XM4Ji{7+^q~@tseYObo1MlJUhav$7d>OmvUpPo}h3k0_ z78%2n_RM%D9dCJNd2TE1qrb|$)@<+j$+UQv-Sq2PxtATfq4(fUD9%nF;>lIZIsBa( zKU@4C7^Cl(g0py(ZyqcMUfm80tme=Ad2(mQx`L;hj+E3;4&P0JFLY?}qp7-IiU{Q= zE(MxP?>G-u&9yEaxY;wAA&ui1o_$bURL^^6%>F$2D4A_vazqoxB3$`Ped9?5R|h6l zzm`v?&xD2Dad(5FZguT$I8|oRqqaxM62F;!#`Na;nQa~ix_GM-MN=?VS53WnR9_uAgk5k(IH z9}Lq2hqzVsROpr^yhO|imOd1anfp=nbw-+vqGX}2~iUOLvtGS`s)Ccko}${woMwS4H7K!|VA?(GhhE6>Jm|pV0 z2lf8JkNHR5ZODSS0`!EBV`UqWV{G@T0X|Hf8vjFl_d0&(diOh4gVAd$duw= zj;a6O^z9AsoPW>r=Kegg{#Dyw|FWPI?A}eD-0% z^@6es?#s5k;>_%mN}RKW_&c5R4B3{8XWZnn@-l-=@w+-)r=Qjp7mXY^-LTYA7l!XN zG(-~gQ;>2k3|Z6Bqmw&iCi)R$@@7=L)Nd+U-ZbCiJn~gkz5Qv2Zn^zg6r2!CzNV!e zyYCfEZi?@6Et-pOO6HlthZitiv#)`cuEbfNG>LZPHgX$Ir8W|Oh!9x<&St%ICle|;+Cbc?nT?a>yOmejC?D5YiI5hrIVQ< zNsv6O^`H0$n;8*CfVHcf6lj~oHm(j2Necd?~zgG~|-;@|b<4MK9O?)qRb%yZF z-Prv`?MvZyoNA#}mC%Yn*7qyEtB8UiR*PMG=>{QGb!<&O)w!5LF0?NCfMoR&OtcW% z_FDR2ho)7agH5|*NXVOpb91Dj}I_ZDzMTu0RA>}^KLR`LpxwS-_Vkt`U-UY_tnb5>};VP)XS;5KNY$9 zx1Km@(@n=%Q^Y)Zg-k-}6t)gsrj8-gS%Ng+?Vz8xh1i)FtpjBmM(HY`;`NiKM^?-k z54XXz?>|xG6H@>qf2I{dR>xFaE2aW)_iyeC!G2KpQ_4zwnFVNl`j!;7MWBI>4&7yj zS|W0Ukzs~_4RJ{g^U6Os;wu=h^&NxQz2mGNBMX{GT0U#TT#|O5&LgT?;|(#1pBSk| zrrmPsz-}~zX|3g*jzWAn{x3>2h{VC)3&16=VtWBmTLf+O=XV?*?Fy&hA#sPc?LXUP z9F9uhrXhV=r+x!B*53_G9My&{Gxmh?;UI?pqfY;?hd{8Y`xlI7=yY8vXza)6!Yizt zw4W!7DCG)3<)v%yFbxn?ElOL)@%APU&@J(LEZnD0{2@s)<~x#; zzn<`(y@y-RT0q|=ZsO0I>B3QmQqIR zK8>uy7bv4~EUc`)E$1EUjbEPf%Ue}hhSTivVWDfgf@iX$OxsQz?rw}$7nSsQwxAmx z=0f*;Zqsx*6+3msL-oN%CJn%RjNyeBIK&}!iW^zQ-FJSyzr%BqHoW|u$>ovMKJ5G3 zf+@*L0b7!f*~Y_E@B_2@3U!7Gh3|a z3%yLWIOqJN*N#jorH|#}eS}^|+&9MX{k@d9cV-YOSZuWeZOu%xByNj#Al%@&pBa%0 zHftdt4MY|^GYrqMl@4>)kiCaTr_I&&6&kA^WUoI`4f}oNG!)+}j-T}w#%i8dN^MWI zyWQ*GBU*b&G4qt);M16*KNx)|EJ)N+{ef{m^zNzYCl#5__uB`H6a!Imt^K(=MwCP|py&Xe%03x%RVH@1kD{TYhOeF`8(L56y z0Fn1O62rW3@>I!MX)k7dKU7@O*{eZmuHNYX;z8W9R0}HU% z>OW{RYPZ<1HUwL?XY61l3RFPdVvqm*9_JY5`HNyyr%Kvz*L(}LV^5vS4{_I;T3LZvJ(>LMm=^O2F36V)<|T_-Wp27E%Q4q) zp(?~xON{lx98${N{vY$6m5Xdu_dU zBI|sPWbeeAI4Pe&8%-nfXAf;kNI%bq9!pEj)3j(UCH2HoM!PUmQiqr=p4>30%XaY3 z)e<3zE<5z)4k$l;ao<68^F1jL$Eydwf&g2SazPU^#)JrH-1_Y|LWyrB@n%NZ$amER z)^fKlhm*q;H8;F)jZdVFNeXQq<=eR54j<5A;hBB=oY74uj$ABK3J~GYs_w=u5SOji z14n@En7$B=mc#{JZY7nb6(Ju~q7QJ=^2fGFhk>HUnTo!W3UFPu^gJry^EzYBVwXF} z!q<+WHt>zlLhN%N_3HvNlaf*whze~eM`}|+BQ6#(JOS=m;FdVGt8+Yg2y}gmL^f77PXyXvV-cLs zOjZ{HjbIEIslT_|3>yhh4`+%Y)>+JJWX)bc=vS4(SYxIiF+Bz=YcqIS`B zaeTUImn=R#e<=0)^zMzjR~z$4x5kPC^9&O(!uy{+MSqvx)8Li=qwxMa#KB795on0Z z?vU%I{w9LbUPRzN?Vz)bbtO({@s*rGd8$K_YNM;w;rh8s7FT;mX&U$O25cS(A*$r{ z_SG|7-2nwbhT*Lt&S6gKktA{Hcr)3yjT%Qkn%U$VwL&sqgmj_8yyImKnsV5&@wk?f6o zwWF0XFjNF{!{Q!s$=qXcg%tN6srq|@biSe?=w;F;Dj9EO?Al#c-;fyiSIVDd2@g2` z{usNvA~v67=z zKQJDai>8Ts{$7V?1qX2*CU*)u>6%3ZJvu|C6Ir?_zq!M-<#`qV?2yju_%pw5u`yq; zke&gvvZzZb3@s+l=I?Ro>DMdkCj9cHRZz$0&}?7UgNn7s{TaOoDVn6`ngqqaSZZB2 zk2m+}LtbZ@uKif+AJ5H0l87yy)kl*#p^UNBQPw*|lZr-HyyCdW!r{p7Z;ZSXZyBi) zuS$KLT$Z!zJ=)OdR!-71)3@)c%HPgaA<}wSPm(XP5~Eta-Sp{>e(+h|0f2q_?_}95 z{RZB6Em3~#N@fx85>Haa55}{IADX5CI;`_Sh@6Xa6GjC~z4LvolvXEgSN^=7`9ka; zyq9I{3;KQJnNR`wt4eNd z`Z$i=&$mG$PZX@hmXh|}h2u^Dk2L5M8H;s45#t?L1y$}j>E$j=P}XY{IgowgL2Hh* z5nQCAJuv!e2Gh7F>{P&NHiK1+TM3ys3I(II=^0i-7`hE>TV|mFT9S`bk5Pa_f0hO; z8sju8Hq;kXV0mk*_nrWaqje(o$Y-Z~R(LURwOK=)jg0TO#5tQ1jA6b;mg0mUVN ziC@OD%XpjN_hlhbqb1IXJ7DMx-ki>|UjeLu=(Y60=Ty|lfdib7998v*6O^3#yMYwZ zNTBsC*Hg-8yQ#mo1N!^!_mkQPd!;+DS432i=|qQ{4bV}_u0lyh0DRd-5o3yC)&Q!m zPRfdI|F#SOA@I$#2C^VVO}i(u+E;)!>kHOhnkYxMR4P6cx|UD>ANk&p2OjC?NO^TP zh<4L1uDIv=P!N}TYnjLu|CzQHVU85Yn+F5Qo7DdvrT-oJ|HqU4vzliJwK+G>mnH%l zvVq1Y8fm(D?bP&DO&wyzS58-?`bDJ@dr}nGS6^b)PYk~@%C`kI@1&O@)=bqYL!MX!e|mqLAN zYTi)NvQ}$}D0teX>oN)wS$dtqCcz$;m|zCL(x8Z zPHa1`ZWxjz>XdSE{%bK|C&Vbzy0Ss9Up~QJK`??s)oaDK=tUS8B;-J*_Ixv8cJR)r z;F-JxpuIA+Gx8^BdWAPS926Uc`kq}*w>!j>V-71Rz3Qr5>=+_K_E4vNk*c{6J%Kmq z>f*AQk%qi$LjO+mn3^o0x}PQ8zE+Zk?J9Ig?fxvOgX}if9~i`jonFk#nza-6AH9e_ z3${O?R&BfZoyQr&QuW?PFLCIcIQ|Ql0%k9*hn=F=-GE!VT-n%evS_id%WT04RjnI8 z$``t(|cs$+z@3~?{5^fluCA-n?dXg;?_e+XO~$d=M@ri z5D&-Cu4w~at!UC6gAqEL18ANbAkI!K5-O=mqv}N*XRyi%S;}Wh7y%gNW63>n7(0h3 z!VLC^tlLCX)2~eonmXw;4>|%~4}}-PEn~M$=hl1=2HmE~0-~a6sG1)yl@7>AWs20_?~>kJXfU_2PB@wW<$vK5guP@7~5$JXko@B&uuNCR!hk{QrF*p~cO z{YH1I8D%*hhuz)^n%{y!-?Qs2$hs(Rtr>{jwt5sbau!!urvV$Hjf*6sz1i_Q#3g2|7M@k?XU&$PW6~dAY+^I8~(Lqi+HazLuVAn$cCXU8o9w>YC zO%)*YUKj1%5M7&l_!d%EFCm6hSnhf6R;xhy^nhSuZXLW8`jHm(PO#h*uZXu07oIWr z2JqafMgg=9Z)k$;fi0LM2LbxEHl+sFz}ps=j}gz~PVp!~rEhcg z0swXS=kiPcs`RhVlK%nbHo*+w@2CE2_0a#S`K#yiB^6`Q?%Q(*=0RuJ%}@DOfq{3! z9~eI*3c!M>0lYv#G-FV;IN?*p)UH%jMup>Ub&7Rnb zZAIM!kxc&jWGKqdR6yy-#9G zPM5{AwAxGf$sWF({6W3$(u@6@u{T^^$K>akkdcJ^JKol)VJp#Sqc!iE$@Ax9d~TSj zP5xx-wy9b_u^0QerdHW6MhoN>PkF7PRHgfb>3%d_^{~#1AJDwK{hpbcmm$#Ea->j< z?MZj6jx}|vN^4BdG<(G9Ptzuz)~6zcHN@d@lDO}g?7Y2C{=i7v?M@oHy!Yr4Zca}K zmjHqO9~g!yUg#h;7ume?GPi6n2UC6FK;6G=aB#9QPNzA%6lJ`A+v!!3IpbPqV;%+R zt&!*e>+|gSa{BeywlMSdM)Ca5)r+X*4>vv-(av=CvO8ok=GL|II{vtt^EA*e-KmNQ z37z16CDZ!p)5_vv0?t!;9mP{`_rnx1LPpwPa}nR1ncX58?kR3B)i-HDZs|Rm)5#nv zm@u&y3SHq<>znU&ZvHm1lCoPv?+UbF$+Xq|F1!l+$?=*0VG)W-oZqor{tWg0z9((} zCHewa#1c~R+-9&e#|LOh2h)+M-3y2!$aa+pAe;1fg~6Pta>N;L0ydg9M!VMme+~~^ zlpiW64hry?j77bI&0`RFRj`Nv+Q6D^83dX+Id$eXkfqrM5X;zE@1!Q5n8CW}-I$K> z8%>Cb^2^6-Jum@7W;CzEJl{Kg&KI^O5{Ssqc#@aAg>Tj{2BRv?9L{E*$=9BkI84{&`%Wxq(G7 z2{{8AKOC1w+7sfLXYnlX5g-Gypf4rZpA6*{yFZ4vK7w4)L;=uDIBsx1u=+}W{bh}U zw(sNbypZbSFDt%%Nt=%h6bF}vMluiIR}CId@-WsV`sWKU{GNC)Y&p+28p6kw;0If| zb<0T^m}x)GP`;r=N3i6;sQZ~VfJ~pXP;!F*G|wW)d28G8=33BxLYnK0h)ucQvvF4a%NWE6reWPGucVd5$vIf?dB~ z!D*V#{>@jv1f{XW4<8AbbRv!Uf59U77*fi4Hln4;T4)0ohK|Md{eOLxiFl%U7O6Hj zxqc{I9Zsrf{}!2FtaQ99sx=`{L<_ucZU`CAFI6|ioqk~~Ln+1RZeVn%nX`1?``(5B zEM8g2^k*K7Hh8_Q;4~WVDmH!LWnN0(vGVySa0D1#$)Scdb2ljBPM0JVpcb~92~b7d8bsiUA-n^ zjww@BP)dj95Em#nb%s&zT{-9H#!{tq1N@X(z{x+8E8d_QSK{?vn)XvGwUvm+8ZTZx z@4I<3{m|g1+(fRnUhW4~)F4)dJr4_=p2xvg^!qoW_@r{%7%W#osbJm!0+slH z(Ul2^kt~!jhZI_~;zz~LcT(#JXnsN?wK{Q3@CN9rSfwfOK`S7cMpcV51~wz>yGC*o zAr?Oy7>s{Ibdm7ZKQQhwdNiY2ZnOHoBN;M<>5l^c-6AN#NmZU53=iXtChBWSd&eBi z;o-Gs{X`2E5}r;Mqj2&6*n7*UIJRzUxPc&n5FpTmpdBQH#@*c^IE}jmcXtRuLU4Bt z)>v?t1PGP@!JXjlu6c`dp7Y#u?tAa}?)&?@jM0PYqO13=qV}q_=9+6RD3HG^?~2S2 z2P9*yylF*+h{~Y_eY#gFKEYsfrlM8Mr+3%x;jp)}nE;wU2i)zJ=AE-(z37-kA&KgrY0uy0& z5xrdDJ&rOaRC}=#u?{0>(en)G19|kd46$1dOG#c}1+4WY>bs)XK^t@=ho)V0q##Qk z+K9&r&Ou24-?_v4BV8y@7lHC&RR>;g$bAc}TueF52<{k*9dof<wvm zzY1f3mHk)h4ba=|ay|s~?8fRbp0Fsqyd+n1rT(m>^Jq6)z;0}R;X<*Y*-0%^!cpN$ zq7nNwT|_(s9$NDlu9=C`o@^P40bP;@| zPf3qg#-ES4Rr4o{O?CSUTGws#2YG^OGZHFgF@(3an!K%Ql%mKcqz^)fjYAy<-adOJ z5jg3ca^;opAu&QCtNX#Owj_wrtk7RHqis}uSMo9o$iA5*D$`keNVYG`Vv}=-Uq!*% zTT&wCzDi^(7J+y&14+Gbtoj3cE;9gEE5#p>Z?Kp${_ z$Gs|2{3wYZ44{<$iK@Xqikh=u*6|UgADiFi8!}GE!lutOG0*e=-qL8K?)jBhz!Az@DQO*v*Vc2vBa(YmRJ0k!386cGN~ac z>81P^bG#?-EA7LMO{m{43>a_oJrJUYBkyGF;lou6KM-p$&?JZUX!OaV00;*I>B} zr*UuD2T)}RDsEB>F?tHEUU^lMZ8!?Fw9v~yL@6c;1nfWsjeh99D*}+7M%8m(2;83q zJ63Lpj{353mE=cgO6OEq8o?F&6~Tt1*`(Cy@L)Z3_h>%BU}WAE*V^FtoS}w9?a5LRk057Z#uxEqy2x4&fhTwekLAg4$^J#sC88@4P@1VWnuvVVS| z>R@|H^kL;@pd#WYcx!AKPMop|vCbH+I_xM#I2R}^g19`{j|Q$B4dG1z7PuRsQX z=_I>hm1nlbFJmyLnR_}0$QXUpwK@TIO&^-AGD)JLbLSU}){5P(*H#Xc^qzp0u11(st_@*Y}z4LM2_h`+4H& zF)5c0`)a7wj;?ZW{C3P;!nJ~T(3$kUm*3h&lJjp6g~d-@-EZ{*mQAo2dYy5b6^iIs zJKyar>F=74SCc`So4hUk)?(C0b8_}3jfrZB+gd3FesywIawVV7ufi8B*hKL+#wo_X z3?vWD#V-@w%J*-8@I| z3^EB0N{1V_E1fa1^@$;ON=Awpt;3owRjCI-%SuHD;kD_Fr+n&cC<58rcT{_Oi2B_QHfy7b`pHba_YTx!$p&n*}xRWGB<<)J64=-X9DBG7DR|6Q>@(K^C@R zZ`_EONvf%ttiGM^KtpD81cNOVsM*0zucZc@vu6=ost2_Kb#y6XH`i zVbwl6Lvt=l_EhUk|K!ZjX?V&YR)YTMmU3L0pGWlNWigilD|)RR-D)A0$2mw1*M54?bqR@8fnNT{KyzaB$|A&8sRKY!iV~D< zjf}umqRc6-o8?q5ce7ls3e7Ea0^F5>MS$lIpbs07d8zw;8r`Z(p3fe$6?7QF&IBw{L;=Ne*^h4ZYk1Jz zv4C2CD9YD1lD5?4lFfKzaamV>ARVFoy4|c{-{&H`Tgz4^8*}QsP&llVO5_M!=Bw`u zwv9L(tr7zL&vnd#njqa1Js!9!;oo!W?x@Rz)w5&vBZIz!|qTc>{J)1QxK-sRuTRyY`Al><_0s#>8sp!_1EG>Op z%w9O)U5Q>y?|F_V$oIHb(eDXRiTw{{fQQgvCZ^Rv?d4S&S5&`zm|ttk^UXN`s(ODF zthA~}9TXS|{W)j-PuS`ehC1tf0Sr ztP-4s#AoSeDSX(~E*ldbajQn2MLxeUL_Db#KQy=x`A)TOyB|e9djVVANEmVwj$X~W z*WDb*FD0CxvwBtNuIX&$5d^b1FJCS5#p7lC=v{^K$}E^~6!7GK8k(uSlGf5(7s&7K zeD;GP)muDDSTB>vYkfm5Kl0@rL;mDyzlnF;jh+a*Q{Ae=4L`?uHd)93i`KB4QnTYS zO)FQ7vX}EM&8fRdfRSR|we@w-*hI8EolO}zr&e7B)e|+>ygjnxeBT(L1~;O3>@bW> z#g&+|aW!E_`HSC~l9{cwcY7f%Lr@|2Wu7Fc&&gig%0Y0($P=?lOIHwWIcY5X%6fRU zTB5do)W+zQ~gOUHf0e;tbEew`+_s zn#P`A?<=Tn%izbZuZs%d`Ng{`O}+if97$|T_o45VIh*Eg*-*S_!Z_mu?;_7O&MtX9 zMLeMl*H-=P)*`z>di65H+u?{u5~V-I@f^P8ybQMwqryXnzsAGDIyw4&Yxph2n3EMR zu`g;ma{raq`J%%lieVquz~Y|3Pdmb_c6OHOA81%ii)i#FM!x+AvvuN(gp)4Lb@eS{ z1?*^#g>^sd3dGf6m>iZg7u)XVH^d)jnlVz4-bVOUL*NFEIV5mt0{G@&w;W;X7SL#8 z8m{o=0I2>MEtGM&W`;#TOR!pqVfFNixoH_UF5SB40rZCzpMl;t-y$XxPnS*sAy>v8 z-#nmO74z&CAgkCp7HuJSpAPg)bs-81b0%*nNqCVQI2_S;-mPAhHC+)v(v}XhjOhu` z`n;V7*Z}ghSdJU|rISUlUU``ojvhcTviX6Kb6*IyF?ssM73%3a3#csSIAJ{_L0GvF z?Etcu4!x*KN>jwpCK0InsDm=#NW?6wSLW=5m6f;vrA1tT*7D*2Sf_?kai7N~3|fts~p62U=n5+$8>ze2SHOe zUPEcv13z5uEeJ$n_pP<~zP=_P~T)a?tExvt44 z13J7bz5B>qr+X`5HLCQ&#rzST0bvb?dI_jS-D-p*2~*D9s(8ltrU}c9fujzP_x-0Z;^A%Jy`5C&fa@j?e=q$hO@TUN5i6Or`@VG9 zH-Iz|gf?3Uu$CXH0sX3&A1ajoav=V!2>_U7fK~mgWxDGhLRx>-7>)z`i*#^h6oFc7 zZ5w@+nGihIgML|2myOnEJgQVZaLF1=?X&Ru=dAn20t&{rcN0NvA%>rVbLaXe>jUp~ z_ar+ndZ&?~CP*E7rQQ2^#-@&QkZ_J1IMa5{J?rVUp-2>NLa^!P3|*OC zjnr~vE7qM%B_4?jf{tbe4^&7w}Cge7p?PE}GZd@hqLG-4%KC%W%|M z2!o^`GizQ1-i}_&Y3E%pTZkQzY0YZN!iFnI*VSa2<}tE7r=t^mT@h1r{^-u~3SOm4 za9!izYMY@DY`9%b9J@pu=u7O4Q~iT?)JE&;&$1`M%ljULJ4%i8eFcs26B5N!!>4;P zUTc>}p}~#4u}PMWtd%O~LHHR>er8uODa@Eu;oG-C?JpaiQK%jW5zRt}`l`t|htDzZ z!^6FDQ-6ahUljNK_#XA@#l{cGFdto_mFUx(Er1w>dX-WJGaMz4TcWInpIy3Y-Oe;3 zYBFKxBL+?)KF0}%^oMUT?zp_>D9JpW?p?QGi*(Ys^o}iM`1jyuH6KYKY|k#tS#|m zkVc5dExTJA@)_?{;CV413Sg*5QMC02_VYO?c-s=w+?BslmH4Peo~EhRVwb5TP!-z^ zpy7;@CzpJfUF`fL``>~>iPX3&;0}j_N*c0veeT@>b*~OweL{4gBH-4XV@oD7p`)x) z@eX;Zq$GnI27f{Ec1O`u zr2tv;C8aAm+PUB;dRg>0jX14KAXi~tbqI2;csWcAvq4p5MKPnGD5T5u16cxc^ zUAdkC6-Ixo?SCgN)sU~go(}JhRx9W?IyU+UCmklmm?ZOpwV;?hW0PxPf8iZ}b1%w) zo-zQ)>H1J#G~KQBFaP6jP(}j~ji}m6bll-}t7&6}XIU$r4PEs#zjWBp*9p5*TaX~_ z-po5&Yq-K^S$}@-WaXECd*x(QasSc$5liYAhL@1$&<(eT?+f81wQa*x57SDk4^Rdd z%{LYIaxIb5rt!bl@RB=`M8*!%JvN(HI0Ch7Z}k_VA$9L6LwO!cYhRS2t&1t)c8duhXxK!tr_?)`|?%NyEyx)Ox~Rz4@QB&N`%Fh-fGrtu2Q zi10oO3!pt?#NGVG?TJ0JKo-vW`4)96TijQvz^58{mK)Wh@WFf)oLI@Ld9myhPX6!Z(Fsd z>n@GR)2G;Uik-(`!qRG#)G83XukwjgeKJtDHB`Ho{JQO9e*Pm*mk%Jim*S{JJMw0m z{f9JV~H!CiIQnCYsQzfu!!78m3^bd#guUXUA#{a*i1MF>i*LU*ZW z-IxwVIrCB#6vLU9@T2EEM^k6Tvjxy!BL0sLCKtgP`@z{hIl4UnH}QNS&GBFusHOWV zl3M+&>|8Qx2&_A_1PM@Tq;3bC?s^I#v8O=cPU~l%Gi23vDSK+sHS)8pa9zD=Rh?hYP-rPAmUsiq*iLxHPHsF#!nL2vB<7vev!yJ zG%}UMQ3~kcFp&s7i1(w3WSD0d{-Py7n;gxQXjQ7C1j6}j#gR{ud9^?>l{v_+X>zMu z?Va%KBGA5&)rS-iJ*p$%jqQn?1v=b#M$J^X0K&So>X#9;t)4(US7)Lpc?N!)?ge;^r`fZ#IUugl4HYuLo1^=+kkov-km z_U5&IN=uJ}FiB85L?MjE0QE-^%U3HRgq8&x*7=3J@9Rxb$%PR0bDPfbsLy7%D2f8> zv*K(Ys22C-AdxX5sK*jq6^kJ#4rf(P3Z z=cNzd#xNMxs!d9$iL_cPW0BX%H!^p@XxcaNWTo;%&&*@`Y{WOjNkMr{F+|>zxn5)E zsG#3-d;Yy+C5Le}J9}$#3(Q`za(Nk^F7jAp+QN+|Xn9t<%p`t)>{1o0X4eZEb+VQ0 zd8ZyiNT%A3KVR70WqtgF_9X7dd33Iawq!JWe(~FeMwAG)kUc32`8?A@ou3w!4mcFO zK83AAebDJ`PyCvaEB#OMa#&*{g88UqOKCtibCsx%ah-n5?BCvAXWNC2>paa*4FcNP zuQRXD|Mbs>j@>|ko9x;sXzy^JR-9zW8@++hrm?~s_M?Hqp*;d9W_6@2Mu})!0h|96 z#@lv-xZF3uS9$?4S--c?`sD0YXlLPB0d$MB2Cu|bu4?0K+jqpJT2JuFlD`rLa5s(0N%>Jl!|Fc0OWojf?QwgMTxcwq$|(#i9F6OtYZsOP0X9~3RgfO~Tt$2E2Sv#E1o8X9v!_cX%ty{Px=>pE!?Vu#Fdnn0Pe9^O} zFQPi+uGCRlHfhnsh(k4ih=&4uTY?F`oWw?SQ2J3A!7ywiIU|v)N58p;xX~Ro_2pCY z4{543Y4SXzk>6*Kn0%Cvg}?deZDGEt%BrCUmb4p*+qPpFM^^YzU#4{n#d`|2R#wFc zM$*wYG`5NGD$CUL8vF_TJK0`2R6yRDl|lth(2Z4G`1C1-Su9{~rgXMC2d>ejQRB}a9a&v0kWwg1@;R85Bd@rxw)H)_ z01c&Wdhz*l7IvPTaK-D?&r2&D9@KTiTi112n87JTUsgYItVa*j4wgA%V(yJ|(hN9@ zPFni2BH@!O;5eEwAwOETc#@z8V=v}cOCyQ;d2cHJ7C{c#C?ksf(tnqx-lj$2+}%(F zbu@9=7lM!SF3-`@6{%qL;+|VCPl=dmSrA3zC?yqx?>A^&+m6D+=X5~1Y@I|JT_-Y^ zvgmF&AEndnVwM}8=^YGUzt59SMXP3z%tFlt^jc1kPvgF8%;s3w+LD=M&!-F-@ZL?Q zq#A+In0lVMF^W{3=t!?o)qH5wnyzkfnW~!nMJ7EE-ue<`t0!Ed&%U2S!M)k_oTQK4 zu4PR)=C#=}ytc%Rgva|xWSbeUqG!DBma|)}G?FW@ffwD&r5h%yUW)|)kC|-jyw2s& znlO-}PbT1UR-M>as_3aDA8b--Fkz&ily zp^`Df;^Yf5m{l>?dLiEmr!JRN`EZW;qNd3z@W>rx>+>Ddwnl*#NFuWtH>v>8LY`A5 zaSHTAbUZ@WY6j$d;W2eLs+W<;V9Qtp!%^SX2zz)RlDbpXX+*1E1vnXoI}HV6Yyh+an^Gmb08&e-a1S2{khY~8E53F;>ef9x%`VQz z0*G1lJ)K~SC^hPhu$+`u$(=)Vo3LC|psu1?p%CD>B1>@r+2KZr0MQVI z(Xg5tN+zVai*9vHfQt5?Oa}Wkp92i;3Yy&bccAlc_vSyio56q`LZzOy%MuQIF67IQ z(9I}*;%FUvWu`-R{>KG$6!AG0nMwcCp9T3Dqr zQ?zeqrN{J|m0A+xm7M0<&*tZN>t)4TNs0DXUIX2^#}P%CF3iLx;}xnu%S|i385LcE zBlxSyWD8jMlx=>*BM3`$DvX_F2s^iu2sbSaZtwkoRQr>Kc}(3x@i2o;wp}O)%F8tD zkBBz=3~EPRc)8faxgA+m0s~9FG+Qna_x@Xs$f?$_f&m zkNCSthEKdFECnx`+`(O}ySi~H+PmAtP$1X-b;q@(2<;xw>x$z?@OyUdj8{d8?9Yzb zDm)__!Rq8i+{%HA#TOmrPb6o_ux|ta7PEOrWIP!fiG#WmpE>80|2$1t1uwca?by># z>98uHM{%El9>>)ZDn9-*t#Zt;uqDur?v4(0?X~`NQ(zsiI`v!--`nZU^B9$+h34VN zV17f^=n7`LRBMj*O@}Um3pxZk5PqS0qZj<>8ZB0^&5i$BR=NCG%fV7PqxG&*EeH{@ zs#GeRvWp@8-*|(NYhbsDoK<N^SOQXaiAeHb=QmzvAB?MOqz($-a&}H51EMndB6-;@$*Jvc$%&=Efmf2&O@j%u@c%`x!)t-+T_AUDvGPgCeIwSUL z=|?`LuqIG^ndI&n0eo0adM1NYV5-C%1fFRo#F`ANr?C}MF02O-+NZUb-B6&rj9R5i zD+s6_E3}NLgb{`0sx)?M)oW2%P0oU0NPzaz*)r`w-Pa7OuyP_UV;S6bzaFp~-qD># z$)LNbz3m90btDG)=y(=x@C?g6A};x4(J(AL||PF)Ci% zPBmC~j~G*%8;T=sw5f3?Dz6e~_AzO23L$d?a;!_N$xkTPldfU0Id z6HMNZ!9D&;Hi})E7ZBf_A;u9#qgdiZ&ru{hcd^TR)T+!rPGOLcXtev?QX^Atu5vE* zCVloRIRq75x!NK)399jRCMQql+c$a!asgb&8hTc&wE#KEkE6^dxD;QBn8Wa4r}VT+ zV+Tv4HNB}T%FS=>O?VXv`}hWZ`x(`!8RGN8=s>J=gX<>>9~JDNo6l-eiCI3dXTU7U zV2xxJ9_Y$5tW}YhY*SB$h-1H`#~meoSMTeeUAkPx`W&~s*=6m2O0-UfR|PzqLyzx65A0^hGci40 z<&5945+*zv~p1Ls)r)q$jo;Xw=d`oz`(#Vg-XvMZPqFhh_^_6kbyp>Z?#L)WC;-eh}fOgTFDP)bZ+)yHeY1Lyqx&?HF%I6X! z8EOE8*bPNINMS(Cw=aXh_UQcJ`UnQ^ET;6M=Ou;>{+h_RdEkpC94!JSq{sHtuu+k+ zmO2t(c$BzGjDSo@w{RKlBG@*YoBhf!rCaM4pe?zXUiq|Jo2$fP%=<_U;OjeYEdt>t z%(wrpy!DVu$+!OuFfAd%x1P&?2U?ea0yZ4FZ5;^1j zVA5|8lTTaEMa8*a|Gl4gSLYf2ZI+bjf-umB$7yiU?w-5k{=~1f-R@j)ZT9XaVcWM( zqb=c@?B<8fxnEP%u1{oEby~Wgl*{OKibTY3P^|iQ62FzA_5;of;NZl?juXf(()L8}euMN6P!*27eYO%^qsGbnzBu28 z>0SZh22DiI&Gg+05TWXuRqXx-VI5lpN)GA=-i4-N9w%uJ?f(WfCf&38#N91k>334c zZCm&BMGl-t>E+!HYH_n?T7Eni2;LgSqyM<)Be)BcWSMUJ`qhtac9i?=&sK~Az1Dw& z=A)7hyVas97c2Z$!pih(7R|N*{`Tn&YN2gb4_MT9$hKYKMg!(`SAFa00_dyOjuzeM z`i8^w&%Jy|n4nR{le<|-H$YFK`?Dq&5}-Lz=XsA_$XbwU)J4Q-(axza@MZV=dKu~) zlK|m)uf6xITlGj)>HZ85B`d6-zUU~)x!?638Uly{G+8&Jlf^qhPwVdwov$5Kl@4y1 zWh>QsbbvNe`g7hxZ(#F7Kaaa%6!&MpLEnA2N~9+@1pyUFPtw+VT?bf5gpUty^J4eZBx6ab3yw@1B! zN%-xjftBlTbg$1JR$V1fKe;jqwmaz7|2>U~Zfa}dsy*77tw&!7FbaQiKurP5pH+}1D3=C!J$YAGaMk64=C}QVm zV(R$kG?{c6l}(MEwIR%G91N`7zz-XQgM)#Y8Q5Y6PJ)|(1yBxThH!E+aI!z_(`8g~ zF>-#G(i;m~t3M|vY-?-h{Lk4j|4(LTZ)a<2V`uySF)vmIE-qjW>=1T#1`aL=3oA1N z*B_H)<#?Fd|8PPN7y7Tu^`9<)n5mQVYe`N9Hg+y<4tAQqE(kj_!^2hJ=7g}YvoJ6N z*MS+>Vq#!{uyC;cd9D73V?W$7|AVnPng6S?*_i$sn~Q~k`{928%!2vO1tQFlA0_Sg@FgajQWXLJ3wdPJg7AKn;V&yp1wVXG zEb?*!pWw?icHnVl`+1|@6};CVf@z`62;o?X@($Yx*sw@EUK6=`F?!zOakgJd(n7*< zzc!rm@EsJKg9ixIDaNQa?TIB5A${$+ZU#yml#rGJh}5aKPESKCeYsRuaicD0g|k zr%kRl?>x`$6u7-0f1MJeL2MQ{^0fQQ$+>3y2p9fZ(pZ6Suz+-40&Wy;FL|i3rE6ii z0`B$!GMn)`A2%MLQI|F>Xfx+KOOAbtrJB8@Drxf-nsL(;_l5-cVX1@96jInzEMv== z6`4^>D?7G5nNcRWSSs`?&6_SkEDO3+4_hs^99%N$&B3ICwI7;vzWvn2TJR+um^y`dkG-)-A-M)t~0=9IVZYwiz}>)C;? zMUZUn41;aoB*MK$11S|aL=|P4G=;cj_UKbqK1|-3k1qxdV>oldJ%qzo8rP{Mk{&~3 z!0s6aH!JSKi#~|MkzOhnuIgGxipr%w-#;F$5Nw?bT4%|~(SJ=BB1H~(=P}fdf z51glmh>DdI`+3|M)LtYSK&a7kTO*BUzKosOAgUzZdr6ImnRd5Rp?o*}rK$+m(DZRy z^fc9*Z>%WTog_05YKz}{Cq?nT>b;X2kBjIK&v?JuJ;T>inaJXZ5342J5N4%_<_~^` zQ>+Muxy>H}9a1vpDvCwFoF{{#0QRo##8N)8zT>=`&uG1_(>vGXx0+nbl5rG$F$M2) zA}}!NOVIpN?$5izp2xgH%At$A)c?; zziK*R{<4_=5t_T9@w4z`xRdwWWAzVu{l$0 zf{iMC4cd`HD^9^L7Rj$PWFn%*b&E9>^7;#zcbC$%8nvbHg>^>ItcpJ@Q}D!g%7?_V zXzAv~%l?j?pQTmts;*kz)?H2gP@3vZ&P0~>qBC#Dsef9wq>^4}!^KF)Q8yoMekU8E zwQC4Z-#KJr%h08tp-4yR^HAmaZlCvw{Jj^_pc`9=>*kB>mz(m-DQCKV+4{-Kf-X;n zW8Ao7vUe^yr<%J=aYaB|(_(b?yDCFQmC8ecA-F9ny@#gIaq z$v%`bchN2w|wk*UbU5%tftvpBTVT|XSi0P5r-xwIIsVu|G$w)BonDZmk z>eNz=&Y^kd{rt-_oz$7$_kX!WH=l^;A%EvVa*wl5cAp)koMnnGzL|ld%#r#; z^$H0O13jK-yJ^2uoJD~bJ?$GA1x?=`l>yI4Bw5(1=d`r?dku<8}~ zHzvQ}{qj{;Ts9__6a{s{Cgu!ocP|uGH%({{Hv80o+(1M6M!iPJlllDG%~vf&5(s-S zH}q{C6GrlUk;KSXc9uV1;oy+Dn@<0FWUr(3#wGzj>hL{-)D>z{g;y z-#S~Uc1Ru>D>Y`sZB%;ZUdc`cKayE@tI*#kxup@sl!w&2lVL5hU*HEPUW_Dq+Zp)q zCa_+xikk8-ai4D06wR1E#(H5ph@HgnF^S%}IoGe4Ac=vK`iC-MZHFae-?}Vv{)`y- zBY6hKT#Q=tV})4gub|0MWqm)5Oi4cdJL%A5j2Yef>q0ZEM_Sw)CE8$?l26y?EH8Zq zUj(;I8I|rj)Go4*e018*r)HeY<(6Yyea-TbH||!+LQhXwAe3{Gc~O0#n zwv&(?pPjo@vZ=+v{7#nL^QC=;$Exm_c{Sf#w|>h74IQLkMpq|I*v}EbaumvQ4Kfw= zzAJc7ucDNGhK4!x7Th^B^O23*WVq!+k=ob5r*~OVA(zV1(F~rZEc@@87F+Z;M>+Tv zBq$B;2~5ACmy6Iz%-E^Y?M>Bx1`7H=!l- zRZ&C;@sqUoP5J@HF1qR$y{8PRS$KP%A68NrW!E5GYv>_EZj5BYzH7v@$3?r3F;6@0t!_YZ;#aP^tTO_T=a_-muAm09;;=@L^iMR#VIDisMWTVj*f?`Wy}bJ zGm}D+c(RkVN=B0Bn&XPQOLj5RE`B2i7`dnX*J0QnQPE#Mq^O;>oui7qp|L3t_lP<% zvjb5RC*Wf$LxAW;+}&AHIJB$y%057CJ-1lW8y^3M-2 zO0WPi(7*NryE*^-4Df}Dj&{Z>rq0@oieeIss;2JFjM6qhG$#7zFKJyy4Fw}hAcg|I zTiOQr3Ks4^Lqq}K=kEdA!wmm818qiWTN6`vQxirpQ&$UPQ)Nk!2j>@<3fCXw>;Ch=@o?NRJ*pLPkbLK|w)9MMXnHd;It@ zIyyQA2F8;oPcShtpFVwxg@uKUjg5nY^X%C(TwGi{JUlQMjE|51{P}YN0)iJWUJw!z z5)ly*6BCn=kdTs+l97=?Adr_YUy_rPQ&3P)Qc_Y;QN4Qgikh1G_3PI(G&E2sl$Ms3 zj*gC=9^iQ~FfuYe1Z&L9EG#UntgLKoZ0zjp92^{+oSa--4^agV4-YRdFCQNtKR-Wk z;RFQ*g@lBJg@r{#L_|eJ#l*zK#lgww2 z>l+#x8XFs%nwpxMn_F61T3cJ&+S=ON+dDcszI^%e_3PKp&d#o`uI}#cZ{NQ4^z`)h z_V)Gl_4oG=3=Dk#{{6>~AA^H~LqkKu!^1y+{u~(@866!R8yg!RAD@_*n4FxPnwpxP zo}QVRnVp@To12@TpI=y5SX^BE_3PKt($ezs^2*A}>gwv++S>a1`o_k_=H}+s*4Fm+ z_Rh}E?(Xj1-roNH{=vb);o;%Y(b4ho@yW@_>FMd&+1dH|`NhS><>lqo)z$U&_07%A z?d|Q|-QE5D{qNtu5ubokjC`a28+-B(SjW)G^uam+$cUYloT1Z0fGTba#HJRuX25cO zKw2KGg@vP&v#7bDBY?>~d>Viaj2$iPo$VZf&-}}xya5jW<0HU&{x?wa0N^nHiIn^? ziuwa8e|hXFuX8^Xej%VI#o5$G3K;K?4K)Zb)F1Qyr_p58_}9GHxY_=BCVz)&|9h8*g_VgL80ueO z^dB}>^zS}Um-}N?mC2^x0@8!h>55+hlg*b)xe&sP!7;)n$~eL}I3j2-v7e!RAn(nF zJT)K*3wzB{lpRVQ_yjr_7M=@vT_!p{!!tKC>)DJoKXvc+jQD!L_4nk(MAJ@V;%;1P z`_e_k4Q~jD7$1U`8lr`@5G6oP2FPy%kvm?vgUEhiP(q%F1(-*p)xG0~ zAg%hV{Gw|>w+-<6CE)%jGf@2(y*p~tVk`5IWsmw1vXg7^hUP^qx+@iqZZ`= z99jIaHeWKoWDdBRG*`Dy3-2n{1-Axdd|wz`=o~cIsEn!}m>%E7*e%)Rab>+hxWTzW zzQMeCe(v=&WHgO6lr^3;mNk(zh&6#V#JI;{oo?OT;g;)}Jf#^wbxPbf>5bhL;$N$d zkq%*8;Pj8_TJjVd2pigiM1zam2V8#9IwPUPB4NFcKe1bg@ljeRQT~5sz z%iHIC3`&v3k2dR-Iew-oyYPy)w`bLDb+OlN)ebM)UDeN$i7NM-68;!nf2LzjqLQyF z2rMD4x165XG7T&yyt2@h@(u2tL{qu2(Yxxqim+Iu-Xx7X!=uBD~9?B|{_ zQ!T%vS>`pd#lI7t>GF1nr^GD7M&r!Lx#V7$6s|=Jqg|CLF1&F@3c7jHx@zAjR(9;1 zW~jKsAzGnE_-Q1R>RGXJ9-eFsVX*``W-Kk9Q5lOAJTkUuY$RJKXhWGFZ-DBhR{opP ziQpBdAMb=}oy%0ut`b#gv`dqgOJiu?ebT#bHxd^M)hJ1%H6_R;jV78X?)aUzy5tz7 zv3J&pR+dRksaUEe)ny45819RMn?Uo~tW)ko-jJ)y)+~KNw{VX4?Q~iiBb|IR-Yh|k zlcOdsOHpfttX6!HDVBq&I$-*euu{1onqlH2e#to8MHueVkL?Xn3JUp{Fk=2eggBBu zahrzkxzF=;Bo#>hVGR`IOfHO~-3qdVdEB1GW)h-mm4v~~s? zJtA#m0~(lAgPFp*LCUprocC#9(+1@!E5&np&iCJanqH=@v4odVr%v#1!Ea4IPJx8W z)C-~|#9#bs9!kH%sS+V9y`nod3VNH8Idequw2?)lJl<-;7}L|tV~dqQ^yiNDJq^th zwH<{#@~&hUQKXVo;(J-sUDfzhusHdaySZ22XhwNg~t z*6Pr8=1iE6%M@m^?h;>VrK89^w#8=k+J4(40H#=tY>?u|q`|=}qLpq%-yMaNi3K_= z-;QpC4(7fN;(~U`s!z@gVGv-9zhGw9A)-nO1zs0upn1XHtL|IkX3VUP%5w@&>6C$`w}Pzd(R~` z`R4TYi?VLzBV(LP9q^ttD9qu)S--W%euSXrwV-8M`9|bbbiXH55=kiHWv75i#=X>a z4$&LV8q>fFI+xGRnk@~IY6|5owMefSF^sDGI;eal8j=vEo z72!3)FAh*XXb#z329X{Vk6@4L?L%^2ze+mi%g&G7nfy8jKN&RaOe9O=oqCsM0KxvqzqaGy~hzk_Q&^k0hOXcVvu7IqznV+ zAN4{yOhJ|i?r4Xf9_!&|V}Kr^J;TPJSr$SSe&Y9rZ~R9ET?dLv2f2M}vTVBXRpnsS z{WsDd=UpoL95-w?_%{M(_?e5)UYu3Os%S##X+`$AN*%I&oPDZ&pZy^|vV}aoKu;R4 z@iUHn{?>Z8gO9CQXNG5$Tevf3##v1Q^FDhw-_C7z%qAG?7TbLHB&;dS@-QW?Bse27 ziS9=H41R~-U)^P49g->XfiRs(+#P?>u7FmYS5V@9z9N0)7)KPS5lD=(M|K*np`YzYGOv03u-lHwVrGL=9qVEvb>IaL2DNOeKVQccl|tNyjo)D+EH!8`e3@- zDSf@=HrLShlrO|1<3w*Jnj?|J%Eoopc}UP;pgO}ctx>4%*V;RV=9jMPu0(sT(|2zL zdwpB(_`KA;^u5aNkZ&Yz>YuifSd(-;rFqKzw2;J-#MeocD^rKda;ZN^PQEq0H2pTC zj(d%ZU&o}e*G_3ES1|o*P&>WdL31f~hv&OXaLGjN{EvS6`Mvz+#vApI;vcIMpJ*7h zinURC^^N8`B~EzS^S|{<*FW#BVjD8d?91%ovtw}6%3NFfwYHM5Grr0{?p1w3M*FQy zqlVm3d^wDQ_E*0&t$Ky`ZuKzr{6@hLV+nq#%&FWl{aNcOhWgDF_ciiO!gZ@YZteO9 z!AU=O`-tF|-(von{v5yTJBF4)4#JQZ1lUtlDU{M!+a!3{c%(J7MbJ${#s33AK)%11 zlqW3+CW6NWFAt6mz9|#QR?4o(m=NEP9U(O#&*XM;d->r|L8w#cmtpEEgoC8ZzH)0cJ~lP1M$y?Y?((mf2{<&Gz65uZUsEg4Zt^^(dwx#syG&Y9xxbR% z8J=oj3h7JvpcL{8{qt)5vlW%-jVZLl4Nouh5+DoSq%mhFwRSjZ)ZTIZTu`;Ny1m0> z{FQrjsaJKx{dnG_>Nni#y*cSevUpWRc{TNXlL61dt5Lu2g)oL&no_X-cu?gzGn1U) zn!sGgblzh>Yi@8-OtN+ZPaLlC_2Qe@+Mfvc*;a^(xvTanb0aEwCc9uiSVMcCT~~OP ze=fhUdY8~-Q6aib-(H$4^WwXQNj;K;Mw`l@XBiZg!sTVg*DGPa%CJhMC6dWF#Q_@t@Tp}|0 z1=@F0wA=Fe(_D)Kt~6X}|E@l`!dtXMLgydS%AA8g&^DEbjG`Nvdkw~y+vWFuX)U^L z@(mMPLx&%Z%85MA%dXl}be?~D%gKcE!lg-MhQ}_Yim%-oofIitT^Dpcuz`24v#{Yd z|K92g_6wGI%wLhU;{0@>$&-20m5c586K=V@XtA+rP8r4F zGTjNs(S9K^KmXGqRn@0YS5?W1{Y6I5Yzhr8cimca6kUB^PZ~ux!=zU*sfoDQ+4icn zlMU0l>}h1;h>X!XwEhkn0BK0yfdk=sxZV-=M}tK>o$1cfiO3Uq1x=a#MbIng4ZTWV zJQ8g~Np!@zb*jkhwfV<#bMlXAb0TqQ8=3DgnCNyk?9)iQz_X1bnXXk_Bv?f{b0JYc zcIR=8Qk$8JO$7W!*D{*vFWYj?JpJa(=_7d=8N3%S^2!?duWg$UaP!dyh6y9&8$(l^ zd9Bp*y~X8s1a)U69;>5*XU!9#NoaJCD+2tuv<*9Ag$$>e(&c_@voZYcf%DfUPhcPB zB3)BnaHvAiSRUYHw^A}$lx$D!Nh8w^?o3S=n6x~q^0l;Hz1((HM0P`nXp#I-XnI^$ z%nB)#t)uzY*Q8o-A;acj;MiQN)6y4PI81iaqe%3ib^XV1lqXL)P z_(UFVl;L`BfKOVWLlaT|6ox)vGc&rz(s@$#oyu3@m`O!4o!n`N%qSp@a5EpIfevh-PiMdyAT=Za7 zCsg7;CeNV-d{4_`H*AVo&kGKYUggP0yr*-aDKvfB342{zR})+;j5!pSE&0pEG})`%%elU*Su5kZ!J6;Nu43+5;H&jQu>FUR!)5xm579x$NFqQQ?hT$bo4{sBdyl@+IoDl6ot0z~i*=hNP)3jH4L0y=stIE4-4 z89(};2o`of`-?rG6keg3ImnT0=b|T20H462d5=+`Zdravx4&PSRI)6rH##xO^&X zrGHGMqpQeIyeZm)Klko!Zpr?f$}(Z&jpNrE_z#`0Px4s3E?6a87nvNj&5wu6Z&deW zI><0Ll$I41mX?O$xdAtzcjsYb4K!~eDmvS)L(|)A#+%{L&}ie;uq(oAq03G#5+MEp zG!Qo=^*v+;2jpe#Jaj>%sVC#Zas6S5HqLkBi6^<%RE6>~Z5|1jT(B zBXA5@I(g)U#g8gZXPm4OIc3nvn)t2pf|cQCTbc?g%QG{#BovBt#p~R_49g~dG(8Xf zNVtZ&fc(e@6q?sHheQ-!-_IeT5N6T%_{gsZnxA&}G1FaJyKcg`TgDyj(6`g`Ym;{! zrm#N+Z6DUcfzLwDPdOtpVcJd=R<-eew!4PRglIg~j?U3A?l$*DnSAc-0I7w@6*bUU z4An{tgS7nzJin8+3v-el?FleTv zfoSP~ah>cI+@;=I!O8#K9c$xCxBmH#wWn~?hT9vUwwZX_!G3EBe{M$ka69yBKweM_ zvzpOMO6S&UJqcvt{?9UPhfPr0fTWn+T_AIONKioSWxGj+fzUBy)yCxyh+XX>r1|q|~Hsd`Y7BhDc#Zv@%8_ zuoQm>y`WdctLN8FgxMa@$G5s39?RC*9o)fgG3~%ef>BdPm(_e!je=qIe2lh8k%i{2g+%SWT@Y++y6=hhuK zRLHDF3!Q)NHs&Ha(tp04^}I_ zi9IKVY>Q4!Qt-QX;(%IlQGfJ1qTuhO`FpFoOej^o{ouADVS4b+*snA^qlD}(I-6jq z1iG$ko*ji;ccNK)(PCjtZQ|)oxo93^Z8rYBRU5Sh`fr0{wnHVaCmYKjz)XBWf2o@f zhT7?)vc3(^2See|Haz5PfNK}P0Z1U);Y>fNG)GI3r~gFjX#sEGYUon+@|iveNp-Na zj(FV;B@fuIaXRe3NWn=D?_n8(?OTvggeKqu`H6<59o*+<{U%uWt(++`if#Bz{onV| zr}8s0GmrC5)*XEK4?c{w!&--aK%{O(gW!O@>1jK1g>TT5x>6FkcWwOlfOgfwf;!@H zJM`~lKh{@6J3RWD3&)|O6!)o%I@}jFh@ZmtGIwTU>y3_5{w`T)qSo(O(6XCF6 z-?TLlP2WJt*X&E*&<;1QD%%B+^YCj(oR6(gofN4G)j3Y*c;+op1?TuR_QxC7_mB|jt#e8Rff0tze1-F8A$-{iD%gYWn zEH`D|!Z}Udlbqq4?zddsz4~J|(bx_(ciD{?ezy&G@*ck&nb7-0ZD_Ng?N&*{2~lRz z?xL%FM(Ti1ktl50+&N*_p-9NsaE&%)cNu3B*DxoXfIHk{3QoigZvi#FJ0x-Sw%8Q^ zAxU*x52YL%%Y>Ts5W}aN=uYY~CUc}hx|QVCu+)ta{4LzHNHU3Q0e>NbscGmJGMk&X zy<%IAP|hex2kIIY-cCJ&c;GbTG31!S!SFZ~pyT923eUX1!_lyow55il7{rD#6x zs1eOUT_0Ig9qh|Gq;tB>NOYLrOmCxV3RW|X zWKlPFAw0rGrQMfEBVPWVE@C zF{&pXwdu3mvTF%#*PTTzP4S6eC~T$nT_7dZMH{LFzc#*tme9)O6#~+*jp{WbH_owh z1?k5Ht;Mc*J{Tx-b(BROD95ikagB_i9(Q{-GZyxteOBXXRxs1=HZ+0*uH1iCeJUy_ zU9@pWT56797qx%Kj{Tws+>=4F{hk6Om^lW`MAJK_z`-pQxph}XJ=m^wz>qdJe8YIs zXT*w(0KssViO3RJHctArswlIpTC{H!*-FLVPPuT4&t%zgyPt3Z{UhQ+1dg%>{Q5Mo zxZzImvG~ABjI9AKYJ_7Ni5m~uj2Dcd_oij;C=>3eQgj5D@(Pu{hgS+vzqzB(R5a@z zhHt82Pa4bbA4~T+L@Y`mMhxPNWa=$T60@aR1hC^Sd<-=9$V=l*EiLtnh?fZ*f@>iU z@``V^p2?37uF~~lW=b>hunl@+jTWZRjSDASc-?U^E5uxgYT95e7Y+`*Y2hi;E)@%5 zvEBP6T!W#HAuxu45LmUD`~Yh(ROI6V2Xx!CQ6@i0yXMp3nkYqhp5{d1k-WkaQAZTm zz;TVtE0C`bozrae@49BWmJW`C<=QdE;K}!sWM(J5f(>9?~@6nkqLpTL+t*+Jdfbv~m7Tb|%Umah)Y z^#80}D^6ydIV)=B1O}+$WCF*KdT0!dPuJfmE{Ky<=reI_I|2Dv7~kL{lP1XSD9Tp) z2$OGfcN|RJeUN`=)n#W-smjV(m{68j7+ubrO`RW=vBDg?sfjUbBp%#{i#pkz<#f=c z3$cxYpPR0I+afP9KPwtuweDakzvSf6b7zX;<<-K9t7N%nz(G&JL|5-QiwZ;Etr68l zWNgk%;N`^ZjaKsm6zb)EvIAvaLZjp+hK)03KF-t;Ew)twgl zpC#8QRnanmpXOwPD2;o7n|3%YKOF{>aAG4er}jV#d|4W8Zf2%r6CL^_V63q)JLEfiB{kN(hYMiz*lcK z2XPq=Ih%sk-3eq9_2JwCpL=vuPVh9o|6S23Z-yl2QQu*jTT}mZh2a)W@8H`q)TETM0p%iWJ|Fh{wcZ@;Ed3Ukz> z`w_fMecWG*sbNa@(HqPo^r!9DvNtJf6Es;i5OtE+;~tPurr^0L-zH0z@^n&`uM zd55#|K7DV<)uBCt|Cl`apL}^R5zb&<|20i0sG9jnHwnQ-P5;|rXiV)iNURsxaMSkf zNX-t?>>?LhoPaZ7#oat$-02F-~SbG=ihxs{sA1EoNavLp~(;b z0e~h0P!T*x-=$u(es53SrAEQNBRB`Dd;VfHB(HZ=bz2`RPA_xGxH3deJJ4 zMir5(JzkKLbG$&C8zF*AP5)`{qZ!6;JLc;F{cBrH`aXo#e^um%`TkKWbia$IWyXev z?%g(b@q|w`BC3qKQ&4*0=;8lIymi1uaczAz%gka-NWx@{?j$?pX`;zzi$)WTT|osj zqF_O#_uh+&puo~$sZyl(A|PFqDu`6U0+_^-#6-qjK^AG@7P(_BYA0y%iN@y`Fpv*M zI@Jpb{J+=VJT;{k52G-$;*X0DTH8UMNy$5&8t?CZRMJm&?lUdWVwM?gMk3Y>DRhXM zQ;YMD#7KQ&B{e6A9DA2ITSm=l3!2258EDkpH{(I|l18`6ALA%fKXT?625$KM(_V69 z(YQgs>|WGCHpgbAN6Uf(qWK=PygZILGn*|mkZ^Q7>S{x3X>J@IF`j>(ZSNd!$E<&J zL;<*B6Yn9!@CEnVxP3h84m2MSLgnM`!0_Rn5JT}fOBpIInv|`B* zu5#~=_dqV+(F6qG?(BvmpRzkNvy+RKqqK`WxVsALW`e>}9^`$@lek3VrkujN<~+u8 zkwdY9`D$HFNL1JF7RlKS!&4CrRLTW>aTJ6aYXS?Nb=weP(qp>D{b97}z*=Lt}b zO9NE_MBv^{ZS71<3vJ6Q3JNMJ>kZ9@&(h)T29fj@<{}i{! z)ub0m(h5@(s}hxzJ^Ng`z^@xTdQ@QY(9X-Swwp4Cx8MpLWft!4E?#82b*YA=b~}+< zk{O@P97&S;|Bg^bc{NQ6VxmQX@bV<{x^S%RH}a!kk1xsspO)@?>3lo{OjY;jX{IWpzxI3dx@?SXt5cnFGTA28?7FM z)v)q7TKP5qJ(mPATz|+@`2XkYLOPtnxP89x^ziH!m9M*vdf^|vM!nQoP)MTV?4k}P z98j{$DmzfaTk+m7c{wTPRYDmGV0K4~I$74OSDCN3|`tFFv;-<>3B z%{WvLkl>RvE#KK9NuT+6)3#M6$@bO8EOqPCJ#H2{;+?t1ZDx|scMzv+Qe17s#x{0_ zCNAlx_DkA9gVrhCmsugMN-e0#k({<5sMZ$C6lXKBk-N2#Ge#NGdN_8fI8D%ruP23A zs!C}4@*>|_rlv4HzmmN z!`+!(d%bLISYs2nbsvcFvHu>t0?GqFzyf&L?8g}}OR^2EpeJ@)z@A>ZnbZLFZdgy~ zl8exK0vwR~qxYUovXLbg?FZ8EKrDHaYg97bpI$QKpGq>#pM+qPkSCmd!Vv*;&I-Q0 zi0KiQ@GiyESo`8LS%bg$pqL8LU_n{e$y_h<7)dWVB-JaQ&mg6(o6#%#utniJX0*&Z z!}pC~b zm(BawGBPtUAts%PNeK>#Vb2^Qs97P=M?&J6-r}tGqt6&OMq!-Ze z-9^gl>32-xQ|%b5C+!##E#MYErA0HA6bWxUniToKi+SzB6C9(e`nCs*O<9Ov`|npS z@D9<+nw*3Q9HQ_Mw~W>$d(irgNS$aVzXEll4%X8;W4Bt!FYztq;gWvAaET%p)X&F_ z#%Czj)jHJtTJ2aHUkfi)Q}>$UAdKb?f%bt@BR)u*fKA+FT2pt`LXA?xmd=);8y)83 zvJ}TM56gOwv*7TA9L2oxIf`XH$64w(1>{%pc-x4H@)@7o4-G1?W*q+R<9tC?<@#p@ zpgQvcHZN}jOX~#M+HYgFTNgIersSRLVC$-5Q(MKC*KQD*A9OV^k!Wsl(A5wx>E8Cw z*1ELPJV|O!OjdZE64i&MbG45fjDJ%E9k-eDfN*%_A#lOHG#W`N-u*zSR7M+5mlSL(hh|-^1Af=RNNUNig~LZFrHbM<-}ApF_SbjIme6H#btM z%d+FWO=H-`NTU0&ZP7Mnov9X5LX#@AE;i(5pH1ee;6C9gfLEG^nnCn;5U~LLL^pwA z5!r?mi8JJSc$p|mPe?y5K5db&E?Gu4p*QL8azrJ`-gY*go)~G|!zxP%A3Qb8dT#MY z6c+z+auWnS^hglwBSs8Fyvt4i2TB`ygfI(f(~mmVYAqI$6FC9@CILq@7Vrn8K@ZkX z$cx}GVfTIL74*oGL2ij?n#-$K z&)Xlw*(RB47HNs&o0lp?ylIWe^R}z=V zli)(QrKKFsXHHgRcQvsgq7eU(!%{Kz@!ov*vvJ{};aQTzE+WJ~H1sfIec(t=TtrG_ z`h6zx7Mz?<)X+0A3Zwjw;Kj$c@ZYr7OMaNZea6#`iC%$)GJlA=@oaQYoeQ2%Db4b^ zs8n8Fjt6YK%n$gi^P#5B2GhT?hdv)wgrgif^K3Jn#V1BTzZofCg*M(AlXI2oevV~O z#lXh&`3Fy#vnvW{wEOG&+=Q}BHo-Q1f0chh(^TVlzl2sX zOc4QLUOB_i&d*g}lKm->R*(^s%QO|*>aro|ReHO#qn@69Zq13JyrzVs!Tx2E(bZLH zy3;eLdxz@#4=YT~N_%PvfS7*x3iHkGf)K=TnO1`X{VU*KdqhaVhS(~)dXzvV*m#KP zgXT^F^kVB`9SqUYwYhmiHA-L9W#l!B&u^_;^x;nZm6CuiQB`DiMm1BJ=VE2E-)oB{ zYw6+X?R7wDm!YekrublJP*{Kjs`@bA4(x!7ohnd&QDcC*4zsumbV*@$QUP;3+tu9E z)_pVUwie6i=*2Z^wwH@=y-n+qm#9q-8!e% zhByZ{wBPmM(h@POsr&9)O^)ZTTuHhb9XBh&+FXp5@BW{U^&Qe%93{%$9lP&GyLNY| zNHB2>100Kgb|@1DcHXA+KIE8D3{8 z^_0-i#7_L!sD+m9KNRfCEHmOW{6DSw;q#cd;J}noY3+oHF2SWsV04Mc9m{AW+_)UQ zfvDc)yt&?U8EANY!)HjqYASY?>n`}fR98#Gtm)eu<;`6zT07!=U$&LeKic5%X;5hc zzPOR;fPMW!IR6nHmmVKmm7(-yZ9&Otao4V@m8*?x*SbqOeTb^~)T8Ch@k~!!n}hpx zY}nb`Ts5+I6R3l)0gTvK9)=<^f;S%0Dp z)*|H(S~$_@xRX0zL#GgaM|0@T&YqTy;PDQLRFMbPMe9WnrHJ&<%OYe5llYEv9GY>* z*#rbZ+><(ne>Ff#lM2{f+%VMCMcsvaxa+RY?iLMs*KgnN8Y#EX*qqTLke&$jgYtN~ zuW@>Geok6^HdB=DX>a4Qe;0dLCxQ%%jN+@MZq;OZm|M8InOV6elsdCJEQvj(WnLZ3 z^~S2+I`=G{WS07=E;BW|RNSanwtk1jeq&3CGFn&-FM%Pv&d*u}*v|A`y{>zmdcD+L zUuZZ^?{Igu*B5VUHo5XeV?{@;bK%ZZ3H7T&RaSCFk+^YZg~oFce zx+2%v!qUOT)WjjHq%<$Pf~AlGe56>E?qO%+=4xZ-mRVGomRiiBfyEE4T*}zW%^AOP zHljZ$6pk*R^ToBjn+CP+)41x1H2&;6F^#Jxr159piD~>~{PI(r!i_)Wz%L48EUI+h8vn5pi?y_R9Q%u#dBW10uYdc|W~@{&l735SsUm( z7Ps`37hjXyJWU5@hepJU`!g#mD+_k21%(EL9G3V##Exl=pVg^=3l^Ad7rx=yG4f<~ z{5CN=MkZ#*Z%@UJVTDuRM;qjq?rUehY^)vZ-(9=fd0(KfJDYf$fLUaC9f1r;XQWf( zMPy|kjmcvwGF^=f9i8{s?TgKIXUFEkEomH`hFqq8dEy+tpKuDlOgMw@pJD=7g{srQ zLMPFP0(Zc25t5)zjIx_92+E;}=9XR=|Xd0(R#E9&DDgtxSKbAK6kF~XBF7}^SeJ&w?=Ez z&fx*T0=-E)y1LpsWVq$!Wo72&x@0+ERRQga{2}g;>6({2dY3=M<-|ZN%^~d(g!YO6 zQv;YP;$c6?zc~v!&%`dyh(XG$-a`x2j_fYhVhuOd*q783c4Y;=bquIn{2rDJ_|#dR zWh>eZ^9g;lkWSE-*%*t_OZsb9+Ihs~I7u9uXy4<3ITd11uDx_AJJrvn0B@L1tuENw z0`GQxinmNZ{M1j)g$lfDz<>;|50yoWf!ZbvbHCg{7*Iij&%&-A?^{T53-JNeR4--o3v)sJV}A z5WEiGoK@+&2s=LCdzt#F51Wc3J{P$>(O_X&XIGi&`jsXID-TIDqD0i$A5QF^vCwLV zwwp(EiY@D~g>Ws)^($w7?Ya!F_j@*37O^hrZm|Y2O4LuE6&9bkEdEKY3kgS- zrJ?sA0B|4Ck4DX$eE&k~pYPM9{`o#B4Dg~tJNMCqpj%Pl&r$b_3KIsDdgY;+zqV+v zR^T<8hz6xUC*jqHD0npDIy^m1(9gX=!v=7K4agD0732w(gf70IO5(Bh+_s({djuD` zZS+ymo$QlMg^50U(mRFB?qr#2z%1Cl0!?9qL}B|0sYto>%J}nJ8R?}-dpVPK&~FV(Q=tsO4DQf- zMp^Ws+wDl1 zKdU?}N#m1W7T{4`?e6!MUohHRL&eof0W8Dcy!+Ak>GDvA-@zRgai{4T5?+QEiG?IG zKrhneBq-otACWvm1+cb52uV{m=y*67i}gyK`y`cJCZx4*OwO_7?7GU)Uby+gOXzjv zymj->6YI!d&}0H$Bp+GgCnaQ!RbB9)uxbkYAObab&7}m*K?(%4@XcOBg(9>BDP>y0 zKYk)m`~Qdc7#kXbt1TB!!Ss3|m~*S?Q?Qt9M~jJUvJDm!XmLIGYlya?Ia^^4p-CbN z`O_`1t>hGXO|Rttq9hUOhqpe?g8xu_2QXan_)GF~37DOxBCnXBhW^%)2}%`Ca_1(X zlrI2)rC4t?J+TS^zxy4BCJ;2O0U->-yYw1(!+GeRVo)gh;@Yp01>~CP_KOiAem`?X zH+os33<0>ECvMjbFJ}&YF9t>XYisUF7LxUwQf*RqDy8g+-M&*i&w0ffG!?hj!;mqY z42g&cjb@t4%bRPRip=djJRF>p_hrV!goVelcG7)5=8Q5#z)jlG-QB?{-90xqJv}$q zJsqEd9CQkP?1Lreh43Zh)8`?CylY;!M90!y*Fq9-JUAgRRY`+9q9rpi5~Hv_cv}RM zs)xF25}lSwJ=p&F1HmBWBcn~=S z8F2+nL!Oh~PJ2fkGuQY+2Ugdb*il;HagMojrsf9*eY@w9E(hAhb{ zGx|)qgQ2mR$g#cTtA42-~;kzk!7?Wmosi`J1;aT-37V^WvVM7BA#^XR_yeszKguNDl9Q9 zmBouiuC3F_{2kZ%-n3O|I5ZE+K;Wx zKd~T2L!h&tHw2mwlb>ud%oOeC4uO&liISz4ku zK4oE+r$g-;22DmJ`UI_3ZBe_{U32W$i|q8AJgW`{G2lR>m)2UC8!-9~RlP9vGQ8Vg zmS~M6DQuW`XlS&)(r7TNldq*3tT4G)U-`>Ls_j_HQ+9o8`1}Rd)7ZD!=3IY+h;A2o>0Oo;62nuqK{c-NcRU}lPK-$*H(bgv0xu_^7 zyQt7HSDtweUihUNvgy+L z;=~drBhUXp4NLhRsLqn6Gi60biW}JrB8y$t-j zju0)|@WfpzXU^?WXg(SmJ@YKQnPtHp_&X9d@p*H$@~I2W{{eI*qVKGkxy1O&NXz}I zZ6gc>R`Ep{)#Dh0chdY}c-&q@YTfYe8ThqP&@cdY7kOWm5ACB*l|&Nj1ij9R`GUL#5kUX0W@mH=j+Zl-1l5gOTX8tTv%j zG9TTc&GtGTv|!emw}TQWm7cj!mV3~=mdydjaVMi*8aMlXiCKAvkemA*{pg_$XUQj> z_aCD9=jOw!e(ZLAFGsV7QCUG!&apzaPF9_8wm=CrK*B^vKQGa;cF5}xTpIv`&xF^o zc>Vst0A&AD1T!&|zm5$V{laU*+AM25H@0zTDbfy&RktP=QDL(Y#t4aEHydtsjwcf$5d-z4w@h>V5F9R(> z=(Vd?uU!$MK*ejY^(xwW6}DbOTd%;@+n_lIwB+BKw?S(pn!JXz=&MNcV-l8vCVdTQ zeuPhCMSK@umjeGx>to)Gsf3R|1QivS0q-n_8B`fGPI1lk%c&OUL?y>X#rhwJl~7yE zbMn1Pnfj8-c9xod#=Lr$n}?s56Mk^m+b=MH@s~zMMMcFV#n)*Xr8v9AxG}pd47cFNTS|=TOY>98awJrK zQd~@Q6caD=b};aBc9qux3NRch=a$eTOSq-I=q~(A^epy9A;e99Y14)oe9$2DLjfmLMa78<1Cm)lKs-wm8PYCQ|< zz<#+7G&!?ii<#4UGf7ZkaDrcrk~(>0wQSc`F?tOHlaT1J&^YG&srm~T!t6D7bhNa| za4U|942wu*rN*xNbV8Jry+M^rOA}lI)eE31#GFx~P3-K9O$+QQ$_ooB%54ix+0sjN zGG|51Ad^R|2q>MBgnzt4CgC5Ys~>Ou0I1CVF9MZXPGthr|M<=tEoxWSCZTEM?jLpO zkDCRHEg~`fZ+$k2utdlXL4T*oud( z`~kA_VKaZMqRZ9Jv9 zbMaCr&Ao+qV7ilxv`DbcaNfIjYO#HFO|DCx?{Vog&6+Mz znJg#1AgkJ7>aqO2br}Um@*|6;b=GQ;K}Ei~E=4EmrdsD47&v4)$D2e=>oU+3nFKic zIJ+6tOtrGF+w1D!V;^Wa4GVfWDAPmT8q1ey;QyLkpMT!j`NdfNYTM<%QlkFWYQ9AM z<0GpwH?naK$xfNBO4h|EyqcKS(c1IO*t8=jl-3W6AIXHf-f-VwA9^N(-TC^MA9qaH zMvny0!3(ba?;qPpP@2-lZGw4i$cp5U;z%G^wV`?3CeeR%(Onp}d#I{)ZZ9kvE3z5- z&(>1un%_Ug6h;sGOjJblKtFK<^oW&c9cbvdf)YyS^^+20>ZGe74T7^0T|gR58At>f zyem}+Wi+`F%Fboq9=qO|)q1H!5L#N))>7SE-P~GKDuhT5~6-!6rmT%4AGrWKe*Nl}1JcN8mQHC|R&f8qGQ%BjWx1 zq5>FcU|?WSSWvi>4VQ)m28p$`wrtw8sjUsG$M7ggxGXFpLL3eNQvG8O$ZgjG$y-g0w{JJ? zm@64^#y>?cW$9;V8k)9r8JZ$d=2EacjFkWTM_w;s8|*|U1emcbMuC{Y@>F~U5bz9E1qJjLyX$Q_Df+O7r~lyt2LfW!(`C`g?DtcW zqx?MF1N`>?aSK$?R9faAF2yVk3X}!~h0COpC~06sAR`Tu9+a}1+;mMhF`sTP?{sAo z0)rx@3~m)5Wu<{Z!9kdxk&Zgg~>X^jkt2##WdWg$GLvB*Tl1o*~amZ)J=XWk?HkxxPuBB}={5OyOWyt)yq z5}|y#-yOgk8p8zfs6PX@5e^oo+3%A0pA&^Ahejof`}LYOZZmWEV57vR!ne?~QfUc! za(cp!_r#FGy*y6W^m0F>sq|f1a|tX4Fj$$vn~blo9(i3v-3r@A2Rnxb`iPOZYYj|- z7dy@aBjMavjp&Hb>rVQs)|fT^D53g}hK7g5OOylTwMoY=fzf#($CqC}#rd!LAzfx{ zpJ2>P*ZdzeAI2=MPoxJZ!2cKRVN?uKGu1z zB8CjMG){k2wGZM8*P7Z9mfMU>3~MG-|=WDx}g1%={5KvV>zB9VQQT||KhvIry~ z2!h1|)}^>zZ2Nid8T!WF@12BIgBROt?;kiL6Ozol?>Xmrp7WenX$;fWqgV0A1b_|a zIJ1aGHjD$nsxZFH2m8^ zl!rkF%pdS%^Xm?_a+yVX8p;m!nBr4UqxcTtJ`tY0QPGJe`}{2D!*Z5w%SU9MiD>6g zN7J_v;uNs=k87n0O4j60+_5@w}6ggyg8C zNI9<vu^#{LyiA-`Lipr9?Xt`2N9}Z@)YcT+tI;oQWI^MO8uzF zYRr`+702E05q=lgvb9#cJJCO3%L!hNljU(^(cC3;3kl;37a==j=U{}!OAJZK>ibp; z$51d84V;1wi0$AO=)nR7X!+unm1vrm;UatS5`6J(DmUxsvDi#r za(Q$^rx0A`!mDg~nu}gVuKLj?$(G_+m!sQroq2DQtbE^>qTn}t|4sMxhRs(6H<{0w zALudmBUi2@1XoJGtZ;4qhPQ~)HlXyRuAf2*ZvJwlx&3FMx+y9ir78M&#MiQ@wzvA% zUJ4oL4Tio7jbrwpjb`wHYN^_iBdTYcDNXHyCgvS@nO%wfWcW{sIR%3 z5jbW3p4~7JDwr>|FkntSC!aB+ZE;0J6Nx4YRo#WEyZA&kTjfbJv+G&+U}!!kG@qHB z&kY^N>}A9x3WpvPj(UiE1T@^EzzOof3FQ;$9kt5fp|^Ab0kq)ML1V;BVul0?K)?V*Pf80LzIX7a05`Te6uwPk;Z zu{y!WPwNy8lQp3h?$LvSCi`uYs+lCS+$-xn7fNNJRP!do=1q=w^|8OzCIMkWv0qn7ztgdJj9weXlhM7+PRG8unqw_D z!SaQd#gt%oqnov6tMfBL1fJ+F!;Z<4Rg% z>4*1~61gm9dGP1D#_{;sq1pL=1D2=k*NZ!D)~D%}JxDk{SJgw!eQwq?5`OxQ znc~?m4@esyHhQ|g847a?C0}J_s;_<#?nb+9{pMR9lp8US% zOT*X6a^Ej7C`YLjaB;y#TI z>9sTciHSS**(k68t6Zy23U4KM%JZ+?vg`HF?^JN2pQ`!9l)Nc;a~w7PMr*=m z(~j=a-o0Qj_Ly0?r|WEo;X)IO##03h3xh5Po^fAMfKWZQ$PY_SoWL{E2Tz0oa=Ik)AS>)z!R`ESdWSuapE^s>TJ% zy(e&Fy-yaPY(BDQu{kb8@FY-)ATC+LMS7WE*zCZ@hV!TK-p!(CW9y51MIDGypaCCL z{_l18dvntxt?b|=!}kdsedAlg`^3buHj;c_XI+f9+EhNR_*XP&dy5t+=;nHHpsL<3 zNL;D?B?cU=jKCC+x=su_yK#O0PU#YgR>-7{V1EglM}>@J<(Mu|v`)UFcqTj{&Ivoy zn|y5IYU(sNKlZjV<#El?ufCfY3+nRn#&4zG2Tag$z-xwUF40J1xk{sZgJt ze2(lTiM2)^yT9flF7NZ(J2Zk)Bhy8MWlrXq=?e9f60$NlQ#3Oowm7LXj%UaEnJ+Rh zHLEqL$8!zTzVT00VxMCUB+MyqRnP8W16$zsPfhU$0RfaFN8|I|w7vUm%cvPnybo2` zTHP*N<1Xv2;3T6fS>sb!g@Xi-E&8I7FhN@u^pe+VbCP{sWExzU`0yZ}nX3q>*v66_ z21?&XZb}|Ndcvl4RthZaQZosA?igCmaAUvS6zLUqS+Y{FiGEQ|PZc_i7>W@+H{J6{ z+!7=dT6?bXk-k;G_Zd+;8eK=pJn{T(T^$?xL+ZNWZl{PH@w?xLO{IrJd;5r@Uyiwj z`$}mKzkfHUs`4iW-WT7ca6r{F_RpmL0=&hk+^1g0N~?SmDX2V}WDF-AW5dl;mgpTipDkvDG%369cBZ#atJWi=k z%-PrAJ*3c>MC9fuy)@?>2G`(DJ36J*hbHM2?hq9Q?IXE4Sc+{E#NQr8M_0Y$gABg` zP!L5MsWM%$4BI7=Wz_`vG@kaQ@xxbhr#;`I;d{c&vy_X6JR`2AnOrkueMB?yKllvi z4RrAeHNtk66zOckNemN55`F|#ReirFl|_obSkTdO6vUB|=w!FeU(+0PVC?)17!hmK z*I`qVt!`*rO3HIKKUzsJ2>k!)nsrFWRB| ztt}^}jWQ)r*Edjae^}abGRm}nlmJi#WY>$nebODMe8oh^SBG$u1sY_fLIhISnWX-{ z{50sQ%8KhLcsnufVCB#Jo19sU!^bQ{)lt)|O9=lkg+qem+;M3O1u#k3@O#l;z$d`R zl9kv^Hp+0_7;n}Pa;-&63uow_(*Of^UFYPR(Ye?iD|+X z*L)r7wQDTm`Pyy7Zz4%c#BhJWXUk$ISdm0`K~JSUV6@MorDbwp=qq(vW|n|tpoF*_ zdpyL5%mZe6A%ow`zuA}ObH+KmMZX{5RrbeD#j#WlN=_%@~J zN$fn^6|Hs$!BH1J9>1~x_AAwWXpCg?aGwCOl0gQ!4z9Jz=`dc{=7PDbyjC86OLusG zUYtm_d0#(JQiW9;Us+&hylo&ZcZn@8G-3q2FL^w7!X2=I5V+92T`fp+22b2;USp$g zq@7Z-^9Hv3UBjQqdxmc_3#HuBI7Ss(|K-Bt#w+XaO{aKUnYWQ5*QXF+&rS8lwqe(c zf{1a1ewCrSoZ?yk(YC!l`~?p4K!{h=3NW%PI23guSpKy2*xX%!#`1b^$E$);m|`nP zew>quj+Pj4%N;E|A5k0n#9ezvN`sl8fW>F850E3|ky2oqglJAZR+HRG?U@SCk|%g! zTEQ(CWB~ECm^_EwkG>R|tTyq)tdD=X8Fw4+r@&NuaArz3J9$$#U$gW2sNFqoZOz_e%&QWv zs4|@0G^`^^x%w<@d_4VlzO31j*CRmHLzS_~yz#kv5J(}4Y_S?!r<%_{el04$;qJ^5 zfRzkQkpDE&Mb9;UJcOst{j5}3Nm*4H+eMPEF;Q#5go|f{zlskd@XhCAUF)>?V9nn@ zpXWC>qFS2|1Egp1s*mZ_33b!d;Zz6`W%>jPWo2wwAl3TMEYW`Xzb(he$#2V}s48=@ zA<3=vBXyiszOAs|X1${w(2h?z?=~3{q|?C(z?1;p0?H@0eOfcNCur5T{e0tfu5A+C ztdjYT;-qNur6(632%fzIIT^})TOv_GBf)Z(Fz+q z)?!a$NyhZ?>6%(lz=%loO!x(z<7ZGgNBjE$nfz!GPhD5`J0mXFo7arpk`$Z+<~Mol z)lZ=5JhKxB;UCFcJSpr5?i5kKQ?bV~y~1^k8W|e)4srJ0GdWCW z1(P6V&9db(rK(tG&Bg-x+g_4>67AATxB9)m}UB!v=vgk`U1xpmA`@@+c@REi`8<|OFuW;8-Op>2*v&m9GI zgEO)dlR9auRsPbfN%}1JnDv%@jdXZcUL>%EyeWo?vPxfr}uRpnRRAC}`{uB@u_c-c#vW+kl_=^gQX7jxd zZE#}SXR5t7yyJ{BnNReNpFgAL6WIT!J8bK=&mNmRR_IlW$NxDRM-V_d(%s}mptyRH z#PuQ0EL0bqhW-|K#2d)|qOX$UnHO8c89N0&fg;7FoO>o-;5L5_r)nfdRUpyE`16Is z!T3AxdF}V{Oy-)D$=)0u zFSIYbi{Y3aiAEo}JH5Km8g^8Ur@k*-)r&c+|885`h_OfzQTI3Dv;9_&Jr{iD_-|sa z+gqmlghwccWDmY*j%02cY#q#;v|2~dY2kH#RoF`1r#U;?OdhYuP$O_&l>4B6*Y|_M37WCHVu~kqmtM(6-m&3#wR-JcBH^yh0Rf)d4Mi4mM95b(C_R( zDsQ~TTSiFYOExvCb0T&`bC%xIKO(Qnvlue`cK`I*4RYq;$3(wCe_GR6YP(r@w+6B} zgP;9JCm{0J@&BVc@;_Q0|HX1E*m-)qw{}-_ar%#P;R9e>;z0%SzfvUsSA*n1DB%B* zxce`HTSD@`YIm<*iNAUPWd9$0_5Ub}{BKJ3|4|bG{Ete&O9`_62^cc{s6m2c6W?u-1e&taD~`yqrfgG5x~>QVrEtsC#M% zuhykgsVEzb<9D)vi{yT54`g0)E_W&qd6Z|JMYv|Y-FJD7^?HL&paCb>1OdE1vn_|& z@$v7UEKuRtObiwWfrcBuX}?CE+D@HUNH3%ON^{Li z%0CNZ%T5DiV?RADoEel8ankC~J`*0PZz1f&SfyMMTOS?n8M|bZSFTEV2S@QOX#_Su zp@W$mdQ|6Vm)b=&iF|}*P9ft$|NNf%-7=Gz9Q*d{hcd=0^-7FoS4mW=)_GcqY&uuJmwQTpl6OG?c?aWi^+(9gH43Xx(!!!7zgSUzmPQ1*C8K<-Ojxeums<V&mpq03uQhRWV`+MP@CVfeJWdoY?# zY+F9P{&*l)Lk1zfVJb`d$`d4jRWABLyx{CNXr|e7zf^9rTckJPQkt2)p;l(uFsiZE zBbGIB?P>}uE89XbWW)W7vG%GTLs@XZi0@ppN}~F7ey~PfImvw|t{}2hP&PeY!JZpt zvJI=LcDP?Pfx(z|-?aqx@L&ZGEi-|8N>k){JSQP21^X8%x1g5#k!Xm;yAEYV$#Vm4 zuhvfaTDk5)UxGATU@`Uk&DY3@@9L(;qdt^4)EXuv2I*;OZ4I&=!L7sQy7%yWpCPN9 zx?c`Pve$0Rrt9wRG>q_~>h|e=P1ErmNN}U>A=SCSsJ|nA4kuDK-Rt||n|YpPxw9Iv z-=&J!DJJZ?qXgW)+EDApu)rgl?HZYiXerL{z8tWojQZXBxJEf=kICVC&CCWzEmLVK zY>@1CB(X!AwTTAugQ<5{F{8nLoN(7SE7Se_^wJlFA%IUskYuroM%Ex<5z+k(#gC;0 zWfPsnjO6D6q{H*>S*Cgp=e9kE?R$-;XYMqUB1Wp|{;&VFc<-_q`P-V5?z;x|HIY63 z0*Whdo9m{`>MXY5S@}s=Hua<8(qK5G{XxIq>gYVztA9;M2;;IMUX{LYrC!jBjqd8g5#) z8RTr~fbpa0>O}9Q`Xjjj_t3C29?-T$i|pmLkJ4^i9C_A}z`kJm$~x2TN19QBpv2}P zF2J$iiaBPuWQuqr!#x-@5Qw0@^4!{uZ^^_lv#|)!m&%;lmg>QNA>LL=$MwOxZ2Lr6 z+<-FcT$pr?M5Q=fjW|8qr%gjV!XwMz>Z^Evh+X?o_nC0GnrUn*-cE}fTx#n|&n<7u z=&nS307~D$={UoL8vC$gu1jNCT4?9<4N=FpaA#1jEsjq__#EabSPqE`fc)6+yV&hp zxfkim<-INK5fxam*gc>kX@rn)c)hpe`fWwCJh6OUNV|Y|@O6;!?sqB&@wRw6NV#OY58}mG2X9i%=L(4EgYwo_ z6PtO;M9VutrWeA<>0HaGgr65QOr3VaV2@j~%tmop1MyVo$ZE;Hi)h5f!Pxc2$IB>Xj>K!^d zjzO1#5{Drtog(||=I$d-DsGx9&Y3MDd9b~hXn`w4Jo7u>niD60_VXE^O6km4!@m?9 zkOc$Ef8VCYf*zU(U>eL&L38q5E8FmSrXZkkX1>XIoW~t9|P)uc9$wEt&PztFJG^4a7Mr;q_cFZ=JRG8*|M?OXSkegGs?;!d-*8f3evYnLVAN$C zgm1O3KN~t`vC7+F%te(^hI&=Tz-%ly&~s4(Z!r@MxwLmziLY?|Yp|A&_Ke&7pH7ON z%(s!0J13S*8B94G>M|1-Ey2-+11U9+m3C&w-xs3hDyU2MA8T(A^+OTJgw9!pbAkOI zza#fOa1=&EJDP=dzrNP{cxm!$afYlU2xzBW-Hxy$PW-i@wEm;5vJ3?~73kukyXW;v zFx{T*%cd^n1_g`g@8*3W2`LBBG*a^4?awC_#DBqcntVb0Iz7VVF@6{x)Oce|UzMX4 zq(9PzSYIs3fh=y^wfdCAEY&%?9nvC9wN%LZW;vNlM3iRYNJk9M2ZFGxNk;Qr)T6}Q^HIpdP8M2Ln41kXLNt*_;=?q4<{9RxWsTJ4r zSckKCyv(Nr-k)39j~pT?-PhEWnZT)JGY2sj?*ty&U+QX}&5LU>O!?8!noh_bN@3XX zK8l9#MBTk7{%OySJXEbLE3f%1dpJkO2ztNWe{Gs&oB62eF|q1*R&KcfU@|n*g&gTA z*qc2H^h!7BX5zzktn?XDL!Jd2T%p7nnyY<6AI6$0_!6>vLBO3@+hCb!MY_dVi)HH0 zb>X2uRS=|Y1}i<#QW{I9SQT|@ZH4|4+d zDQ}T)3cU;+b9-4oJg(=cdWdmBQ#HiJR@=M0Gf#!S1KDL;erwghs@b{$A5d7eazu>v z7BRjt#bpL<3xGt9LVnKF0^XT>Bt?Tt0cyzT@-s)|Ofsp3mVP?_FdQewJem_KbY3AT zj?KEqbV)IN8GnF@g>n&*kIlFXE~k%X^tMgCJfn6aF`zWo6pnPtRuAj&}>SWKj(O3 zd46%jio(?qkHM&%oN+B)$ETXM|I?E+a9|n1=v306#{50^XDlYoW%ou$1ic4T<|Mf} zzSwI7viJOZW`q^^jZ*`*joST{`pUw=o+)_Y_U0wv2bST#V)9O_wfCX(r!5ko&T63( z8JR?vlS_3L>=Q5h7@5%V7ruihr#eG^@LG~&le`x1?Q{9(LSH)5AXrr?;e|L_zL+jf z_z?OqB{ITflKmpiE&{n5wo|GV$K6^S5Sa0$u%6xez*Ne$ir*KA7lLO-mgEc6%J(VM zI1+{D6NW|YR93qjF|68)_O$%?$PQvEyZO?pxndd+O!!@mp{bES6(Z{XL4-7E(BT_2 zTLpiOf?@OLE;AL03ciV5bW_W#4c^PE*9E!$Z_OTs@e^UhwAfN1;kEIqW^CG|HRNy% z+4Y5BtZz8rz#QNBhYHjo zT4jt;@0YDKe7GerFz`v*!KsBiRY~RG@kj!k_>e#evwDEjui~eS!9YC+fgE>Asz0^> z7pwS=)oJF^X^Wi?FO<;Gmu4X8AnIN3$Bs%8Qv`*VVnDI;fKL!(_Hre4aGBBa(iU$l zt7G*C#eZ37hE_HZ6YD$4VTb1(V#^$IiDa`$tp5;97RgPsO!ielhLIO?Ah+RXv+5+J z#*Wk=_t177qGv?DN`hVornKCcrF)6En8rawqo%~H#fF-?5bYLf79=o>_VJ1-y)1lA z>p<4{TX+x|UFn@3nA6(iV{}EGR3Jk9*wS`ef{_*m)cU5=Byhv~W-z7R?tV3*cVNt5 zg||5zvW~(^_wTFGGJ_SS$t);g2D~RbS zQRCr`*xir+*)#YKBRbk?m;;rAtolJjsFhcDm(Q&<=H|eVwfk-Q25B4A4sKA%e4t_@ z@i6&9k$kyX2ab1U(#q%JI_Wge=pIQ4_&`%sgUOi>89{iHd>XH)SJtR8uaUE!hgncI zlAmqrPv&35uA}sTv@-RrL|B>GzfxK_9yK0VCpXhHYXDnR9lg$~3D04@z>kV1?4jl6 zbM5Qu!SS$l>+M}_q40F4?zXs&29g7>Tiv|P69ddHnmtL7^@a zD>bhGlkeL`{+&9V^VCM)Uiwe9TYlP|Xm4bp)>)d}DJ|!I`3bGk8ZYEOY?c=HX3&Z~va>bLMk_(atLv!5N$+_0(Dm{^<20&hQQ?WrKhP2t&H zP0qEbzqyTY91@+J3We~VdRi~B18P$$m_fGW*ctm0jX3|_Y}De7OM$%(zKX8m)^tM( z$H`m$&-pL?f4W~^NIF~-H$$egAXwEYd#5i=lhIy+&l?FqJa41GgUWYuB{lG8;TUP& zxE%vVXRi)L2D*U<0}6ZB`UI zm+d>jsm0P-F=31g4z814rmBnn;7E~5#Fa^RJn%2GnE@F)$fcXmb5LU;ZU3KVV!@V_ z_&?t6CWbIjJapNdkKZhz#JA){&qWvje>ULAT|cGuEWklykT;~%TKZpGRZ0zTxd{*2 z5BxS`+Zrd4gjL^1c^mT3R{E%}=a(MRyM?$J7+x^h(6(o>A=o|IDGGts^6xP`O`nKx zWA}|D=>Gyxn~nc!D>-*aq!r2h_rt>2)9Ac9aZkXiZzV=K^_7{CrlgsXw!um~@kQ!n zH1vagme{g%+HFQEaMA-n7=eVkoh$h2!^0ZgXRV=zO*9(7Ec61%Gm{+z03Ph8w^fwy zX84<#6nJ?;EjGT`0!X1lz~Ks3P}cMBE|&^(K{#*>A$&b7xcd2+=faqXGI68l{Hg4@ z`p0wQG^o|p>ixUV->Qay9GCvz34nh+U@zay&(Y`oLwJXe@13%NRmrHqwbpboF z6|Z=@wmWDvxZJ3hnC&@IG~2X>DGo}?#`_MgYXUBF17t^$Uy~P3p>d42@e@~5ktW)( zf^HLmlXET)DrG&$PthF8g_YUu; zX&Sf0l~n>?3b)738#m1!H|4Y?dCGRs^bL@%WzJ9Zo?BVC{t9}|loSONSq)+T20;G+ z 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

    Qo&4ClFI| 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

    fr9o8tj*00<-Vsm5$f- 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

    m2HOr(88lZe_XXdk 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 z zgL95=4rY3|7U$fxIOnd-Id>h-x$APyU6*mLYZ~KR*97BS*XqhL9=`|1IM=nh>na&% zFwT(*FwTK7&UMXVoa>s+IM2+liuOH|J=Ug{9 z=eo%`hX^ji=A7&NuA%D==UjI==ThUGOJx1j22ya&rOr8*l5-BTFg>KfIhQ8qTw0uS zUZ(!01YHH+nNrpC{6(-6#7 zNJU+07t<7~PU_i%$Ut101DmGF_%&^Z@oPFL%Fy{x1E4lF9iGRUIF6`XluKw`MZm+E zU66LNd$J`>W>X8PH?=b=T&xCQSvVMo9+rg*Cd2UAM2fjQW?SH#+TPY|w%=@AcBu@c zos2g}leAVP;Pxy|IwaqE74Peh2 zI9cg@hQs24WAI!BZpC69Fj{*+V!_sjVi*p2uUud_Xc&geGsSF+a%4Ejy@^e6!Erg} zN_syx9F!f2TvOOcIJ|O!8I*GysTtkBIN(v}@;-}XSEFYSFm~Su#^N6^=HtLD>Q}&Q zx;|jc4^Z^MC7Z4fXB4pk#@Vzk>gt9?Yj`e7zBD!gbGW`1ifKeHG7IX@$dr+sk#X=1 z>d)BG>?{K&X)PRqo!x7J+4M{S=BgTfy;zI`O4l!eArP@~Hpw^Cvo6U?fU&!{!ffI7 zmpY8t4;Ze_-aJBK4mr<-hRPg?iNJKaFM&ym_>01DFc94ggVxuuHw;=wR~W6~)nV$r zoX4gZ=2APO)Iwsc&{P@38=HVxE~%wKSEMT5y{{g$nOyjbdMEB#3;cz|2t4bcSjEP1 z&QX0Pd#0}9Yf~;!4I^1KVUM+GD00uMD^&zDu`3B0JHjM`gGf7Pln1d{d ztPh6(sdr)=>H^-gN0sInN5F8Jk@--rbBS-DAVcdzD9vf~9uExZ8eN~|;*w2epuR!; z8D%r(FTm)%0%a-PCG}JFasm5>$iU5%oF8hOB=;Fr=8_~%D$FE#lfsbMQ5i^TsQqwC zlXpr&ARi)kKZRM$uP_~{dt)5jfXV=CbpK);UZaxrp)yBm>zEGLZHk=;~Fr$;36_ygjBjdyrm;&qYy62#Z<0~SVGt5Vxx16)~PX{ zqfd^5fpz~Q4-5(f-)0>X7b&{_^E`k&F4V8*gKfrNG zV}y?AO#K-z2lgK_MfRv4*esQDaHKd8ePZx*h^TsN0|rUTF7V;M|0_)A6M7&JU6e5?YB*XDMK$s3-o1%mmwu6vlUn0n zTld2+y(30OwuUNozl4sS8m>Ok)1~*rVcm5kw5aSLF?h)CY3UE6&W*Pq4?XCh%-+-1 mO#ihnkwzyAa9>;rB9 literal 0 HcmV?d00001 diff --git a/tests/data/redp5695.pdf b/tests/data/redp5695.pdf deleted file mode 100644 index 7ea948249ce8ee71c5a7d77c1a634e0840179605..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2532038 zcmeFYWl$wevp>tvHFii*=Q(Q_b>@9a*`BfxSpaR3+rHowdfczGFQ&8&e2_Ga!t zBLEYFEP$Dfg_)6slR*K%$;8DV24H7rW@P4MkO#0bGN}CXD-#nlBZDMB3&6z4#0p^J zWYgj2M*vzI{lgCMf37bXY)t11W?0AOQKvFZu%*M(t#Ky=Z$}B3x&d9;cufrf^Z3J}H`p0r+ zCf0wt#x`FTvVZBQ#2^c_HgPlsFtKy|qmlD}tYl(PvaxaeBI5j)Ncn4tzHDY;Vo-6j z1v02B0gV~dw3q-a0H&`MaB#E-8dxE~nr{C3Wu%X+um4M5e;zt6vP6ii-y4}q{~L+e zlCPwB6v?^tUy{hyE`4^qQ1}*5;|7080R_$sDtTl{Zx6J-o`I1b zPmnV>sG%SBiG>uSJT9#G$c2BCh%X~P;o)TnK_IX}HlT4!5MaM{>_0mHXYU*w4eT9V z?SaM!u#5<>fA-R2Uv~%)gaD&|^gb z6v6Th;s=ubXy9arCKx^ef+Y^Zgc$)m0Rq0Qe`|pss3Z#r7pfqlVj!p-WT-FY9!OoU z_BUh{&^_NsBNebw7HJS5&k@RI&y`M3E^Y^`6PdJiw1c!PK{9o$sf^`7~JmXwYU2yQ#a&};{^MRj)p6&j#87@1ZsyO%A zP;r52B=CMZH582adr2y(TDkLmDnEKGpyVtkgy6OPm;B(xp`aEy1l@50H2uEC8XM@x zjzG;-VE^Gh5ZS|V_j9ESSUn?w$*F?}^nlQtj%)lck>S50;D6vkS_Qz#_+MdD4(MoL zWZ-B3VB+{E)+;f{8(0Ay0Gw>B|MnDYf!0EXj%GI2UtyQ)-ywAkO@OtNrR9I$bQlzz z94)^f$N|8`^$#j3F(?|C0A&q+0WBQ>99;i3@1G&LF9c!u=>Ysc^#9U*Nn`vk*(#=A z0odpt>CFFf`8P<5d}(KCWAfhs^785{_!_U|1tUnf?qPf z)c!9um4FU5PWFcXF5ACCzCg$E3;qCKX!{S${A2n5P@nmKc=Z2*mf~ji4vqk>FZlis zq_J>taeQGn6XSo_Df}{5cC`AR4t=I&WrN?0a-pD+tM?1NYyVXS1tNAjnH1n0IU)r< z@?sme_<(VfmB#~pkz@19D{@nqVAR=iGel=@=)|HO&%#5NlSb^4z>#$l->fsFx5O1i zwB=@>H;>{I9|OpTjuSM3CUN05TPw;Hga8+I;cj1!V;aj((dRJ?w9RV5d5752z?$U^ zoDvU06gkU8A#s{AW}nV_oFNrkcs|M%|D!X4>y!@~hYGVMR^&SFSF1=gCRUZJ01trA zkU&l&FN+XwAPbPBlq!!<%_B2Ijw3IQn93tskJc?X49o@>BfE?A0L(Z{&_04FYAAs!m7F&k9;+LNjaQb}VOIgqGLG0D zk#<_iTdK5$><=#?!~VsJPYIuIk8KqSvd^NWkNwlg z26wlVQxFH&%rT&S)psu0g^m*3!sM>7sh=P^baAtR(C7%n!UzF}8|MKG2RGc`AHHBE z#}9rYw8sP-$dtVz7rG_9x_0vM(0YDKJm5jkZK z`NN+Y%tod`Z_r(6j?`xItq2G2PK;7Qi@|A(*y6Hqh_IXku+fb;PnR*7Gy5BiBeR?d zlP6OtS0RT{{NS-x;O-WqF~<>^6{B2;`%ecjW4GzDxp_verWzoPTys{yn0bpSB(Txd zB*Z-k(1({r#C<B)bbzc@ot{$ArdXUZ?>;w7`Tt{ zT!zfwd#dNnn<&%i_dMh#fe0H!>I>&p^$6!>0YvgTeMRyD{)*%k2#V$<A?w9sOoBlCU{Us`AOdT|LjI%d)%+)V%4E;};EV^l#EUIIfET%72BvxoyBWhw$QT^W4iwH!E@iZTditd}x~;MdLf=rRNBPNj>= zHx%$%43ZUX1B?7BtPC6N?MG3yTAoN^p zkVm{q${;9`@^YZuJ%7-1FE@Nq^W!qpp$fk=dBSV_MH`n6b|+j$6-%CN3g5V*k1I%R z1Bl{x4ls?>X7?RB0tT2w>ceJ&O8C5AH+LgR+#!2hg2YsFr(AaN96c7#OEfIlu9MTe z<6C2tjf=Hmo+DkFlr-FXwjSx7@%lXP-hTICA0vG2)K%w9ZTbjIY<1A#ueYzeg<{ui@uhWYI8k65{PiW`)AZ(bEv=&<#2r$S#!TW* z%xJ$&0NpIvL6XUy-b8qR>>s`CclT!X;P=EPo9@PphtFjmiT&Zx`=2 zO@*x~d16nk;5{5qeM?fvdTRQNblm@rL0cW z2d)w2Ynn(2P=+}tzRe*-u*0(IhPGLsPL+8ao(Ot{yj}D5QjcrTpT9?zlNDCFl|z}S zdENc66F7Bw>GZz-OAX?ZQk(JIOt!OVY3Q;%bg|KyRU&Zq0mRe(R@o0$eIpI8P%X?E zdWynpN&19PpKfI|FOj$o;I#Dm*7wdHI6sC3@O-}g6-^J#>lCKlC9SvxM(=+#$PH4$ z084pM=>z&_t?^lfF9)f)#CbJ+_1N+T7efHYtH+A?MY5iBu*b^+YAN#A{*IWbci~5f zGTjM?(|aacPAIqZWe%3rK)VFq)tS#7d3L>p( z=Obmm&@IbH^<$3zT(^CI|8O;|>+rlk6v9bXN$dBUX0@D=%U~yrO6TwMAQLW|hEKgE z-4GY~?edV0pD?l2GFx4-m))bsTL_A`J|-_icann*caw(>gnHw^PA-`(!Erv>@J~vw zT@)2LA2NiBved%(mhWX)SPj(2)6b2ipuUB=bWs*m*z+xlJ*|cQ#iCHI^l2kc8-+G! z8OIpFbe5G$Qr0!5xw88wn)gNb3~pIJgMK+4NLyzqZ?|u$O8f+(NuS;6T^sD0ub)5X zn~#qf!F@e%cdjpxB(W*X^9k>!gYVB=e`kYY!&N4t)qVHzx;OXX^I++4-xqn17~cw+ zA3b$JDlBMVm$#B1ox(V2C}=npTl9Kv4{L0`*wESF(Fx9;I7o4SXujam-ng~6v#dGc z+H5<#Gs~JRJ}l#&A^0GAQ1;5Dh-)7}ivqy;v}!%OK3lWv;ZrUyzt?i^U@~|Ko4g!m zS?g%eDz@G7assBiXE)2+CB~5=b}?|Fi<(xfN#v~n8#)(#*2@b*)UWq9N}wE>GSh=4 z3W?XD>O{g{mrQ5pZQOU1gv1V~i>q~^^ObMs_HNRhZ4Wswp4wlGz^!S=FK*JrZ!kqx zJX4g%^S6NsYA5v0v!K$e)9jHo!LwKhA}pnU2bn3zyBzzN@xYiRlLsvmx`@^S*OsCB zds(KwZ6Fb?Z5fq>!980_>zdQ*aA!x#9bsHAt=ox1B{;oUjxVvq+7C5YxfKMMT4Y79 zL^L(2cA*2$FNe=Ez>6Y`w@M8LCO~e)q;zW>S zWo=(`s5r&4)?<8eGG;I@&hKI7k+Yx2<$0>2Avj z(OIiGZV&4D3`>SH^8nmfHcrQ#bjhdOyzP{y$EpynW)b5`8vYTO8#jn31ng=aX14mp z^erIA12Q@|#ZV&Kz$}j05HtD@f1^!uW!gOD5pvus z>h*-n&L1cQN#)021uQreQR)Lv+?*7zD6Dz?)ASKy$O%_TCiGZcTH~!}zihq90wB8F zDHXwJX@uh7x&o_uxOf)pdnvD)b%)9(nmL$JF@a8Vf1kbN@M38d3Do!*@67O>hcLBbG{h%(^NT6xE;X9AB)$M?3dKuRE}iDdNLq)+@@Q42&R`7fxl*CJ`D$4d4W6qlpdnEEWaF{I;mx0P*bj zcRW%MdD>T3J9aw+lrmhjIS!1?0tjb^+JxAZPJwN0^lK61YJw8k1_w3iil8^_OocHJ z-OCb@Itl}lEaMjrn4twS$buIA6_Es5 zQ3paB#6@_GIHXT~7zx5ToBY%g=+yAMwEGTvlK||6o3`t!=%X*?6pJEm8|0P=R*rySShw z@Crx@f-;BOCh)Nm?cr(}ozk!Lt@jJ{%Z0$>k#6lf_7)Ai_f2zakL)|CJe%IkZ42Kp zl`&s~cdwFhYsj`}^IE_^GM(4Uaabd2lHx6Dis|%#nt4(}hd@zc46V{S<%x1!W&O4U zp`yzX&KoK6kUq3o1TWJZ4W=C;A5P~#Rne*FtU2GsiyNg``HUZK&d{+`la5C)JpV;1 zB)!w$aKK|zA7Pc1(hq47DQ!qVum5wL7`oe{ru}$vj5lf}rYS5+P`CtjP2(rK4HK8h zEa@KaB5_E>Ra{%8ma;u7R(`UGP!vvr1UG~OJ|Yf6<*K{CjT_kp;!x~Fn{ z`^AtxrUqHV2zOl4fUi-3)v(~_d#19O?gmY3Nq|{_RklpMI`4fUhtI{u$32nFhvx>D zq0Z5hNjOrmvyBHE!|(=CI|GjmVH9mo_tCI_&x+pUy!Bz37syO~S31$LW&8 zl;PX!^ZjdmUBJ!7M^kEl#rkmCQvW6RChuB!WPKr>yDxvw}5MV~Eg2Z|I;l z!?1b*04#F}vaX=B@~i;ZLk}$jF<4lCYXl|8$MkG52|` zYW&PU5((VPx*qveOy%IQQ0iQd2($kV450Lja*2g98>2c4izyo zI7uYkJE3>%`=vXn6QRCoyp7cnt@gU(JtQ}f7o9$_FgvVh(STyagZ2C()G7x(7c4TCb37?b*tKW`j*|RU z*|^{GLfFCl)0~X{!kYd+NvQX@5N15^NjT++@CB?Kow$!Bu0F^y#)3^2~yfzg<0$$exrAA0+itV4sm{A|Y* z>_H=W?4#x`z%GVSH6|g{B zt-F-Q&v?5kToQ#kRA;~ZLLu;4KRG>c`i7r0Nx$N9mCca{Kc815_T%2#ko`DmjDuo{ z9el|fMkD1pl%#?%#=uHbMWc8|e*x06Ri92=F7jJ%8=Z;+AKV@70op50Er{;Pyt)$} zI-tE|4SdFn+#tii8XOILuJ{hq={KrVBPyG&Jkitdo%+nUSHsZGg_1* zGFoN7G(@1#C$v+;)yMq-els#YK0Wi9HO#8z-lhxTaa5-zU3}Q`ns3U)FO>3!dX3jL zeO7Cg)@|Ia1-jf41*l7GwdSqXmM6ckL9+kuvGr_vSg!cjMUr>v5SJBwH;x7_tJ88FyuwiDH_!dB_f#Fh zew6BnY2gpYw4dO-1(YvN@OVh_A(1hlodG9>gY%b0pb_165lvJfAXg-gl*Nas!<~P? z2pkf$Q?!axWO*N|J4QP77E`g;c$4I_hJ?BZrj?Z5+HxR12*&7(%^%>pCTQ6 zlTcByOJ-k%HB9RrNZHt67@oJWiMbqpJ)FNC-+g|1xN&7!~QIVuGv@$f1glu?fxz8~6MO11o)sQB~iV7l33=09> z;zWCS0OAK7G4GV9XlQU$TZfLMm1Mz5|1fZ#@_Hf}Ks3=%3JD~Hua~y7qad8q zo{pr7r3_jIV-m*?eTxf^e?WWzC1|u|1KcPl4C+dgi$vBDskbDv;!(TkR^c z=x8z(3f}}NXl{U~AgV*6V~?jEE5)*~vilei>;W~~u3AxqsCs{A1jmUL%^L9-%9fqI zkCU^N_F0W-p3lL3T*omo%$tnO7QkAZ7bRuY#23IfRw}8J)R218LGd$KVhHwkk_Vj+ z;a<@<#9P-OWh@nwZeRVP=8kZWE(QSfC4QsUTC+}KJ&q{bcJOg%7dyzQ{n>ctlDOX* zvyh0m@ppk>u?dfKWGrDEA(X$Tf1p9By+CxO!V85Z;$9?`r7ZoAy=iM%*W7X`%21_{ zEZWh*FxDh~^jr`^_ie7@+D`2TLsWA;sFuW3@?H}doa^E{&xE}T7MJ$HduRE3h%`WO%X#CW$d=(ZZMp}Ck3e`y4EdB;32FHXpu-h$qmiFm#W zgvMCx^anjPZg=_wxRgN<-DKxCHhfm>9DmTju;)L*8eBlC9_Nvvd|Rm1(lKBq7Ap^) zmMf`nUMLL|^YEwTQ#1hQMKUD6gtKpUYOhUvOSv!~jq4xEd*v6?1JsF16}C)$qtGxS zz(!~R^?-lG=K8$49r*werz^h;&!-H}k#JA6!m#NuI3Kc&#K6Wb*x(dmVNs2_kJg3| zTfLuV&K~_4?11uTsnDLye@DTl1TTQ}S!=`1(9{9@Q3+19q@MX%?Nos@g=3f+!sz<|=z0IwxE|aOdoP_Ro_nYg3=Xt3b#oZGY{_rmO zz$hed2XQaN?gSz;(bK&j<+H|{dt;d=5`n+H<&e@(d#&Y&?Lv_bat+M!0 zNiOZz?MW6okI6A5a|H7+NH6)|XlyBqABsk5jy-vHKD?|;#WuWY_CBBn4mnQ9Z62~z z&i8gcyvJd4nL~uM1~!&0`w-nH2cD_@- zc|ZwHAWDRmgAb2@p46&8`v(kfX-pE0UP4h|C7$J^i>Sr@nl^hFGkc; zf5VKpacBf97pn-6`sT`}E#;kS&A!`5_bA5cftOAifsg# zzncQ}#R8%Lf9C0F=F)|yrVZ(q+2)|LhiT%z0s4Hj7H{dvqHk7|z?g7<0cjR!0TWm- zpeR1wGc10VCT`J3bZK$vN%F@yoLSN_^7vi)Q`q>S>#DrBlqCy_o&X2wD3=gX^QBfd z^xb^jWRO2qh|yqwGiho7ZGPINKq{0RY=RZ1J8Uz;ocPv8zeL<9S++n5UW*5|PPIIW5 zutq(dw~4=O6#XLOSKvt6eH|||n@qO(YdktecyrRg@{)HYn&!a=1d z>_{rR{vQf?I-_6_qrzl2^MvS*gTk&S=}uOQ6kYG{hKK_zlENM-X-k;|f!zaB&&!rTtMSoD$;gzpHAk3jrk06?03uXM(NG;e` z%_zy4@6QpmjT?W-?b&Z=p3_Ie*b!lXSgc?T4#$dE)tPjVjzyUQw8ruILAb^FLB3Am z%~tF?zVk4Tb!SUOM^4qnwh38L}+a#S)5Z;u!XpBe}ErFv@<0OxnM>I9?XzNEo_43!U@ z9@5}`b#zqADl#$bP%2cy9QX^P?Vcapk+5AS$S-}1^B31^KA!jwG!L9;~du1)Sl|$1_9Ptq+kT^VBu0$C{0L(#u4h(=vVB?)Qr89j@B^9-7jq4 z{T*JI=4KM8-OQqRadfd=Rm;dYk0#{9lv%XX(xiS#9`dsoIVW|Fr*>O|qTTMEOtisC z5;XlSka08c-(suE`d+obx@b;=IQw(Iu%l9m{5z@DedOMoKDb*|Mm!AurR97|GE7}0 ziMa(AXDXtKD8cLNbvKd#A^-dH-F;5Z^e6xO_50~#%At*dfL^wMKo_sTs!u}x0{rV+ z@D{%}yxJ~ltj68*T7OA**Uau`7w^YmuYdrdE_59)75At2+vIWW{_VJO=GlYjU2E5{ zO)KUZ?*4~Zi%8O)R2mfG51~a9@9Qsx6)VCwFc&jBYw0o1S zwmCrAgiDX>v%g&d&ZnHwW1`bgxqo60H=0uoR2b;v6rn)q98$wD68gBCIfSprVI^P1 ziSwmK=0h~002N0RA-Pn;^-q|~Bk)<(nXZ&U>EGEA#zr_zIOk?q^)r2lAVM)4e4z-T zPoYqO*vv&kJRT3~W@Pu3S_h6M;#js0_2X4w%*6=UO<}Xw94RA`bhm#f#6q(EVCm^2 zHaJspdyl4q+p)*bY(k>zJ124?z>$#hLHdiAB`#fpMB!p^td!}FrYQJH`AnUxpvb!A z%y}{_Z@Y1S{lUJ|jZm^5 z%)60^a}o#_JXdFvj?T&uPYH}Gh;zo34wLor2*5VetfR1RwXRAf4s3}T8o+@ z8b0cSB3-Y#tF;gu5HM{LZ=Vqqov<;7Z1+yiZXY+I(UoF?sw7oJM(WV{WPXbA@H~Qg z?#SL&yx_BOFhQy8n6bSe@n#ST$};*w)+PW}k$dfUNu+?4R&axFauZY%Wb27Zibrj-eHb_#eQRpu+U0D$FF)JR`W1M zN1U-fGfuKKW`KhlfGq}8kDO;t8QzVMgOM^VIb=V!((zXboeD;NOlTEhxoV)I!jAtC z>JR_DKR}*|;mn<1%l&5cphtsy(n!B>7|8iX5?M{|1%r*(7i3&XjW8lWT<`yE^gC#n z+2z2eLmJsX0VshIw4UmuX5w(8DQR#9j^(Z8r@9YS0?CM+}+Yy!M)Dg9@e=erLz+dnOpbH4!A>;gGiBOxK7Dt z;_4L*Sd#F!WBU`C5;0b7TGes2nIkOh0Ok8wu^Ovd%LR#SC75lMWT!A&QA*M0R1*EC zuOR$5&Tc$2+ehMHwl!0S*JeHno-AF@&myJ<02T{DAf_CQ6$vy>7HVED4!`r1OY_si zs3&bxEH~?YB_vJ~=&s-aHby}01I+z24upqPU?}p*0xt762oY<$g#bo1<~~KlIOhH- zv}_$+^c)s3M2Jw2CWwHb`3X~0iSimTK@qMw6>QdTceR$2C$w3DN(-Wqj)DE)cFncF z9n>uhDyQWr>(X|~3M^@$?NwIq;DJT=d?!fu8DTWY5M5H9?xdO1EP!_pCUm6WP?q73 z`?s8uuNT?p;bDf)kKJ1zfsgYghHmfIxBFe9Eq))@kB8@#&!u4v(n%lPD~`!3eTKy2 z-r_?fy&Ui7!;dK`Pxw)ERtBywQ5EU z=Cp|zR-?z1LEYkQwE}8Cem})U3l{ZMd!qqjW5;$BfAOXk$_r9DuEdbk*{l)|$3+q) z+XeSQVqb({PE}c_%sOw6o z4)w?$Ia#zZD*kn`A6V|@| zeT%Mv+7wjYmw7=0;U__XtGk(xgThSFz%h@E#Rl6T&zGp#u*w&RJG$oSVysJp6}Vm8 zbdvEI>_ul%}?OnsE+4T`Iac}(M z?#q3LLbt@v+qZaVZe~(qGB<|3t2!iGy>as4hmi(!Sriu&CKHb`Xj`QZ8y{@3Wmh~M zjz(4Scd87>N}ho`cmiZG&F$os#TmA9gubwO4Lj(*TC2u?&xAGV~pvK9& zy&)%2RQPxw+pjzRr0cmciJpDOHeUD8~UWQ_Z&cxn>8 zt830mb_**}e{3oQerDFK5fT$d2{9b>gm$P$*pwFZ-2ZyX zgP+pzLxu5qt)RW%fyj60HBHftMehu(eAzJ?*pR=0f^cV!n0&a@rvn0 z?usqt+v-3TG%}hf1TwRW8M{rfA#&pZ<+<{QXz=JG>S_#z>Y}2t9by_4U^QB(P9l%u zWFQu`!-2kiXi`#IB#bI+cLSV1 zM}mwh=8yF6Iu%AfC-xHusVf9`{qxrzw9Ub&;SY})eLi3R5!OSOU=23qFy3_#(BNI$FYQ%Oj%A8GCw;Woqw=($kQ^WxO9@n!R9+y6SZ_HggewX>wn8|P`*$7lA zh~DBCV+no+xa4Aiexmw9rM|6tm27Y3%plOgHC-g{C+!$EvI>X^w3I?!aIhYY$f}}s z#aI-My?Hg=nell6wTF<~y@++Gs&??-yFwH(O7~(L6x3N}FXjVMuxk1sMxft2`9e+& zKrhLr>O%rk<#RoNiM{S6-!me}tlVE|~2fA+Y~GM*Kt-eMzXX?OjXI?ef4Gc$)aBe}ZNX53G zN_GhuR7so8xO4Dir46%1{5V}oB+QgBW~FRR8wweVmsN}In&;8JaU`4 z{Gy-d5K0iXX+mXOgt^;bt8mWHP2TROlqOU{=S<8&Dsh930zwaQ7y z3|HQ{x0rYH(K<3{KeaSCN1A8sHI8(-Egv3dR3Yzjt@1fb@dC}x669bALlWQoSy=Q+ zE&@FCsAA?-Yr&SWZ1OGhlC5?8$GnP&ZHgn~h{y(oXm=ugq+6d>swbI;(`&O2FCqgy zo8Rkt&Gfbl+7EB*Xr3ePSqqD=RpVwx*;bwLVGz{^39PLzZ)XLNlDzZ|_u8;04W8gI z5!KZ;5Jax7e+G?|Cumf3H~!f3-t*J8MB6iXPJf_x%_h zz!T3xJ%%nWueSmtz`gI{S*`Jv>co9Z^^@GtNny1<|ezL#V9BbHt}bX}gtW-`2*vHX3)4cRbZ!-K`Ha=)8rIC{Xn>tAJOgWIO^W*kJ$u|Jwui)-%64_!!%%FEdL-D%=N>*d{Y=$2ypz_Zvkc6qUA z!~SC~&cYafwdeA8eYUdm;_%(8x0A+mY2`K4#)>->^IdNVsK!heBkg^1&{WBXhGQV@ zS@u&(wDuB#R7oAw3MT#S`cLVqP zI>Fr(crewb{ejW^bIYipOv6qqB>~M)zmN`3286c0FZgdP$f%g0!gG44Rx}AUwTxLE zNI}?;AenR?7sWcZC8Ch+F6TL^udVA;KsJ{?4}a`l!zU=H)zLH~h>8v=v#a71*N~&y zkgBI1gdxuf)*$XL#EkSYI)x@(2#_1=PHbwC*7+zuiMJixsFX>+iW}6QWttp)d5jxE z-()+?j4z6=AI|u!0{2m;?aLD5&!2-9vH6U_`(SZV*$imKzBP^QW^0TXF?r4fNUanGUo`7m;YZOfSQ|iTD4rY7Xe9I& z96DxuH>q{JjTF-BixnyJToEc|TNPfw&eby6^dG|KWh~|yVXyHX2d+)Nq=U~@EU}9~ zs->B%jXig?q#Ws(RmJ3G=$~261>uv&<=(oiWap8j1`Gtsb#|IE>|wv3w+85}kq_TR zak{cpi-JqC@$jj=k~*|o`G5|S4-fcW{fLRnF)Z?Ppu8LmmGm8IN-n{^`5o3gX{udY z8gMWn3S6zY;()+YtD)u*UQkI)PO}L683d7H4h*o~vVgS&1UPBSoR1F>*9@xnR>SC` zc6=dl`oZ|zkIPa6@=6p-Q|nX9)@&|yuSwrgRbxS9>Ofi-R+3Ca2?;gsfN3+NfpT4@ zLit{W8me74l#Br1#=H57toVL*rHK$i{6T}GtXUe)Y9x=9VU`TTx&>_(8wfkT$&OnI+U!=r9x7o03-?e zK&3iN6JiRb5C%j(Qzj_~vZ=nvpyO{uwNF~P<_`ZA1annvTOhDI9;Wyy2UQDXSA$soY9 zRqr(ea!j9)xR?llv*BL5d%v)L<9+5A3{(hM9+svpvU!clqY&eCaY};hRi9#yqO1{S zUtX{a)es+2J=B+eGEl?F2vnmW@%vbMDDchF#??lRZi$-gZEQIt8)`8x`O6^; zS0kvDOIHmN&7YA>`cmKiEk{^Da(LXtpLotaIHi(wJqkBMdGZ^t3xUQ)G8=M`7FKX# z+X@R(y{eOfZm-5hN?1UD`$Y_~<-uadBR`CD!=JFS65N5p+O*PDP{nL9l@VEmb|6R~ z;p~QcAK{?6xCr=48~p?NFC}C(ZdJBF^EU`-avHZNoXV$}D$JQU94)j5ZQUE^j$+w} zWxsrQoV2eOC)8Yi}YIn5^z zOp9G|60Z}ipB%`+$OCaDsP1Q04RU`EGS=fE-y!HxE)c5Nn0M?)zq|&X341x9o?A_H zX|H2VacYf48A>S;*f^6^iE_J_+`*@9q;}+R)_SD*ZSww1M7F_|f8% zPzHjsld9;|!N!G$*G=>K+LDFW&Dl%T)}P-eTI7BgUQ;uDW_xASk({2~iC2&I(JJ7^ zQ7u&2q$^UQvGJ&+9I`IYMOQi zH({%vvcNlNUMD>EzN9e5Vvc`QXE#Qt(z)=XJ?!_YcgO;+sur+t0V(K1hh*P0 z(y|w*HB`?eo9#6HJ8-0TetOUvuHgA6|HK6r=VA6RW0dLG!ZHCeZE13b6>Tv%S4P8jzB)XOT!M zc&^f--%A70Z?{f9sLVZ~$M5+f$EeE^$b+v{6h^TQd1f_g7-4PV|NilgDZU$%@y%yh z3rg!&yhG8F9RI<<(5o7&MeCc_p95txWRur}IGaAtktgI~*FW~e7Q@UP&IophuriZZ zNensy02El_;#EXXXxqS>q$8wca1aa-nn2s?;(>_J!l|J;26IpK!5@P-JO~5Kwg=;| zE^d(g^+^6fk+xv1SUQWm6`9!e7xz!F=SXv;Kj9q6ilzL>g!jeh!H2}9GT?AV*}C>bP3SDOI%J`IYf`ef zoS^O1bX5nNrKHu%8J0%;4u+0sNy%5s{JBE_b1Ih5Z>Jo+*GW4gnv7nucr{xxy;rL! zon$;#LVZdvk1zkK-C|{dGKrC9t<`C+op~_p=uLq23!IsZVs7f=Ku~v{kOzf&Y{uqW zTz7j1tCkHdKD|n2Tv>Mk4R`z!pss|+zjyX1-1mV)3XwftX$HRo1dc_jB`}o59VATO z_?yONrcHQ3=iNIVD_KXd4?KYejc!h!NCUIDBV_6GHcS%T*;2mAwG5&@K*hbo7@P{p zwCazt5+GJ`PttLnl&v%t!~IY3_VdA$_On}hs#k{H_FRu5G1Ek*L*Gs4h|uEyMc6ww zSJs7V+d;?Z*tW4^+qS)8+qSb}+qT)UosK%`*f#sUch&o0f7n&e513VBR?Sg0&ST8; zxaba847$OSQxjgYgQYd0^N}AWijZI?|GuFJ?ZUp*;il7u+l?R;qX;U{`D#GoYD@hb z5-;W6V%AfHk)4w+-4~cs_cW#g%!mFWl1jnT3Ep;qJ9qkO$ABiQVJ~1M#hNcBsV^NA zi@~w9sgTB@*>GXi>$sq8NZ03)4kl^S!&7~ub2-F_ZR?n0hjqRFb&bBA6s(=Au1}zr zay*lx$CkvTEY!Ci$w5n?!7!U-?G!05lT*cbI5Wj-Tehze!&B1Rwj#YY zQSH&EX~FkGkjdsxlMp9AwJv4v5vOB$Bi;xf1YboE_h%}Yj=T;vEG>0o@QrdscG{`B zPmH2hUtKqSPX2knHcu_iwS3<%XIi?HtT(jo8qVDjw`pF0nOR zLbIjV@pC1QP&>a9VlX$oWw8)j2*7vdXF}x6@rKlq;DGJzyqCcQjqGJ{J8BXqWxDs6 zs2{z65=`wdoY>E?vC|wGK_%x)No1C?1l=duB$pT^k2kquO`>n?KN=nkGRP1HxCop- zc$+N0UQB{0&R%#;1?dsMMF}Qbn6q?zBzH}yeD9>#y4e&4K($$aGzjsA*UnAO^N(Jx zqHF*Y!n_zdmWI4;k`HP(ALe7R&-W08MLU|=qji3jnYMnFd6&G;x&6N*ce$3z+c9->wm@7!c@i@qa;HS7r#7vFq5jhLO9mX}yIoT=JU zk7QPGm*z`C+KfE6xa7T;;PkdG%WbIWYUB!W7x=#}rjs3`k)$X!^ik+K4(#``7SHvq zq-y;myqt0hVl5_yf_8))Qu02&~f)_e_nt~V13cyqbd4v(xn;4;B zScs;IQeZQFp|8+zk>Cm4sj}|!Eqjut*m%fCXnS^7u7yk}An(zq=<9BJdK= zxE*Zq>5Pe-Z#g~+k+n=GupSn79(2l=jMB4;mFK}jO3eLm;R403>kMqq;$Klo$k%+4 z<1*UAh-OLu68EU65KVN;-fihm!iFN&H}f#B#`s0HEWh_v5)=YKZJO$R^x#{&a|ppo zs!Bme%PTd5k{2#tdO0!}4bUWk-oY=+f5XA}z)1F^GDK1N?@%6IxGTQAr9t%9XOV8U zIRt|%(ZeUW7u>U#@h3+4jzJW1>Zj_|$Qy%YEwZ;P!baIfVY#LZj3)HPH=As2d^&|F z>Z}RB%OL~^C_ya#IV*=WYz|6h0`Tg47A3}u99olB77A--WxK&p*n7PLCOit?3LC~~ zgZXY$9;W^{mFfw%@_G%#*)fJOS&Ex+s_ROt0JJQ_tNq8beGzpGYpaHxp~z${ zl4k_`lpINA7dEh_MPp13Wfl8r6@}E_E3|ccyCvu9@>k=7G*g8XusGg^^gSRl@|K*{ z>9nPXwhKRoT;7g~uQ2!e)E!TZup{JCuIwS=W3-7-ZrhPp&lJdJdPb7S*&GPSNWI{@-WNj-q_Q}qR z)?I15V`%r0cbt@gWi3GpG`J^=t(2xTw+T82(w025Kc!6Qu9$gZx!C&M)S~U~(Crdt zEvS7Md&DpsXNY^pT_;B=PfrEx$&pB~*ouZ-nwH{W4C(s+pAsK=BityHvsM#4C&nFFFkYEFy#7zHZa{nLM$p16BvvYHB|L^4PrX`nP z(1n!ei`f>e9!spU#7%!XM{+R8Vhrhlcg5cP9d$^0(f1qHM%i8Ijyk4*9MhZlzWu)x zFyy!^RCW8Y=nirZO z#<9vYK$Ol%AJv5v-Qzh8iVXKb2QyJ#v9wR`a2%uon>T@zlCJ6HS$b&|aHF<(i!83W zK{ysIJtlRtrAaacGoed4OsUrIjII^21hAg0mGLgQJpy>&n=yv^5pt5GBsH`J;Z&qw zEj5GQRI4**Rpm4%7v>O=TO_wL`j~4nOIVnM%h-ztFa60T51_|{ElA}cnu>(mO9?|C z=*gYjA^p=g?6m==n`J%PwBVNXDN7L zLmG7uein^&^Ev>AHn+Zjjwp%mq{%i<(o@2V#p5ZA%YZCuaQW#8s45SKwb+?r z@oH?xsYHk>I$WLNkJJnMAEm`xs54#5l~a!5l0vNx8w>JTOi!YfZ5S5MOeEcVF;?Iw zZ@xO!jc!{iWUlF}b_!Cm78i=8C0o>}Irco+m)qj0d3FG)?kn-7Ii~5U3#h%c^zdoq zx|RKer2ACf?w^)))=Kcrki-7WxCPcP>tTw2;1!K8O8n7I+x61}98%KI_M;(Jc zg%S;3qwFS23%*QF$b9e%hwt<{gNW~J-D0Jo`ESa;!9p&r-BY#8EhP6Uc7*93*R;=3 zkA_mq9*OKAiyn;63LO7^KaN)z1$^9p83hJ>+++;=`~G?<*bVrv`F_$d?jAL8Cuj z-zW*B2Hq>9K1WCi?hueleN;4(PVzl8%K!MFW3GGJv34nPgQ>3WgbH)QEBa^ytDJVR zN&sQC5=qaiV%E9XZ2G^;DA|-<)qK`vZ6>SKSamghMs6p>CK&2e2uazE#~Ib<#CP#d7a%t#H?eZe4(;XrqhXX88JAZb3BX7`&cvrvcFA z`_G-~ny<>n*=5V3D4mtX-qpZETAsG9GPcVE-D|7gQ#FWS`oP&k4 zna1+IDQxex8VX2Ss$yN6&vaLywXSLeuWk zZ9^-U4?wx5w3THfQ6fv^c>sx|?Ink7RVU zhb9=45%RlxT7!;B+f&WQFoj6IoEZ3cNcudcGKLz{_M#E<4J@$eHf$>K^2yDfTd98G z%32^{=r4Wo?ZKqoK$h;<=pj_S%R(OtV}8_2kZL&Lv^)sR)~{u;d<50CSM80eQ z2|gnV6GyFrFTo{*q~@1IoL!)||6-HjD;d^V1a!5bZDddEmAmt`*;fi2>WmL`JUh(B%MohcUdgR zFz^0=?F=>vgUbglbHi|#VaQP@`E+M3=X+J8x<2IGf9<3R21{pU_2Yi3EGd*_lZ8%u z_X-}+sztr^dXTy1y72|(zWGz@90uR|D?ReCvF)9xPenh(nQ7o!|3_%W6G;E_cP4H~ z?=S$(uN8N`MDmI(|%d~BwP49T@h}U0PrfR1Dd_J z1z|-;NFK@-)Q6qbz9A?-v9Ku5WF_QXQU+lPIZc;6FML-rYM#0dpOunjOGq@oF-Mk` zYsf3GN$&$O$6|rxi?>RCYTl@aLqSC?GG8FKCqts0ydgSlqMi3qvh$bKi62%N7GzeV z-x4B`ANGRuy|)nMUc&|slR6o}wAaX#LRbiJ;BYk(qDW_+qX*}jmR1?ZynScG+*m0%932>kO1T~W=H`~rt z-tdq2T1XjTt5KyZrX{%4lTIgi04V?|)gRzIeHS(q{%Sg;3|#p~lQJ3;xoaw+28>}- zo?1dEqk5Ofo(y_R=QUN{&_v;|npJU2WDLObe!SGKziMiqgUI)oy4K_WAQ{K*Z#2v& z&b+m83K8{xkZSE*rES1YL_Icc-s$%~ZTbtcx7j_lXFM9tkMenP!^P^5!sAi3loRQU zk?T?uLTBY`hA#cKQ5E~EU6Mh-{kziDC0W6qJmoSvz@b-^dCApx8oXF3caLn_`e%Ir zXgNz7q`}LNKqLNlD+?0HIWU2fS)V6+2O+@8q~)P1*{!^``R|}t*5ioI^z_?bq5;H9 z`}?q(!w8H)yQHE}yjVmAWq1D0%h40;NeqHa?WX%v1MSkA*@84^7Plp}zL|$Yi&WiFu_b6)-L9~;A;d;3;-h}_ z&{RW{Q9gPg0g?#)N}kH4%aW@80IfzeH1r679^4YE>=jC~U*NAnj=DSWh~HeOOZt}a zk>nm0wT+{)5$-Z>eRhC{g=q`Ij@}+-DKa#SiM?P>jJ>1rWe~Y_W4J|Kx+1u?Oh8!l z#-ASQ{U+T>%ryHN4pOsa{aQGnX6&0hG}p98)&kqF`Ci*b2}?@0T4yaJp!^G)?c!46 zs*%!x$8%`c(7DDV87Jn9td^869?76iv(M)R2m0kyG%Hrs^-5u%2}#FovfEOs}nSgi`X$z{d1 zWh@g^23IQ6y5JP|b9Bf;ZgqBza;8i{HXC;eXwAnI9T#JcWwtMu3HE{NT9~Y~m>eB> zdgR$7VLz>hAREN0dTgZ?yWL@MqN!2fY{&{)=-@=lOn7W*h+?_f)^@KV5tB)k5@CLxQZ6@* z7zTXxhA9Ma7jY<|>uvhV9L3|brSYm*q=8T1Mf|Gdkksaj&@SlQVT}F?I@8??Sw~?jffkW*gX7f-#w&h7*t$)1d*P0_!E_> z;j_M^^?Ff$UdXY>=o^#8?xl{|@cc+kCrnD>J?meRg5~SzEc8}qOJ*k7AxvBuxGnPL zY$*Q*v7bqXZV}$kO%VJ0QU|ZIh(um1IpjorM3}4P;TBf=TV4A_rxQ&%jyT8K4MTtD zy9tZ@mmVLEUNYvHZvsDWx0nM1-YHXuyc=32S<_EZx0*k$kaBND+r|dUTgHQvQj_#{T6B{iB_w!rT^59 zG8`zSD(SYz9?q3ihX;*4{}PGfId4%{Q~&j=t{9)?F|uMLVm@1czh~ICHU#}-$<8*{F-EPmMEXd_w?|~Om+J4vi*X8T)D~V zPruoOBAc=_Yn{*|K1B8#U`Pp3uuPLgfZFnEqvaCPb(~cKs$dSQ$};%bKoHh+Wv%!9 z8c+Q1FiQs46N_PUY|}x+C43(`uCgB1UT;xnjYJ8#`v9CAt|av;K-tf6!4)pda>j1Z zaXR8z8~Q6(*pb&oeNKOt*s{dsc13{>#)^+R2?>Fpztqw5M3M!O=l~Jc+bKG&<+}6y zOgJt@Yq+mE(J;P8xc4Xu#x$t$+-eLmgihafeEC|gF8drd%*EmgiOTt5VPY<3!EMR@ z#3NbkPvZ;{MI>@_F=46L(ikclr1{qpUuJoE1?_bSDGcLgB^YA2=P#)voT<|%mbU3N z9nzpD`O3x0m;<=oN%C{9&75tp(kt;tz3k1moNJ}RxNuBbGK0_Yt#n z1e4$3lh1+h*H;T63xx@Ey4^xEy}p@CfB!(8MG88RO71*OyH637oxKrWGh#CoHUC!p zaZZO&MSUHJ`}qCQpw84_#9SKK-!Dq=Pj){E+CXcVNgpMGHo&(ldFh`1nEn`H3kHsU zY;&%5)Sp-D{fhDY5PHxfUnCxGrS=bB0q+lD9 zR+#+uxR%Q7x?G1J6F)qyXPAuDo9XezbOW zaQx9h=xisbsjJWa$lTki9I}f2S&9N!Fts-i*2^624(El`{Qh#aA z#bSqoi^0GPICbjrRmA(_UwGS+Q{aB-w_qQo^&gn8@+K%M+$W=L?8EVqZp3`tVMJ-j z7z1aZA8C^$G3@1&o1!CH=B$}ZnpBxvb12npK~yMptz69$7gt64D3aV$c}idT2*zQ_ zfXuwGKnhQ(<3(XQ6D%hBA^Zf6v$JM1QqOdg;pf>hvjU3b=hKT>kDb79N3{t2PO{>A z*xNW}JGG(=?M=J&rw0$P5p?8n#xU0i94u9Cc(o;=ZHN*Ze|Dc*Eici0)m$mf8%~|$ z`mY|3fy&Grh`<7-;zRZEe-gC+G3fq32^t$W2gm;=XqQ^EbA%m8e?DlBq57jKR4Ll7 z(J2hv41Pe{4H|`ZiWCf#O53? zVe8fFt3H9MF}AVgzBJ1XWo)n+uvJ!tJka{s%Wmh~e~jjA%45rl&x^nn-@;;@8IGW# z<9w}&_x&NRODVPRi#^4e(2Z?|b+fzWE8mkyz^3IoPA{{e3z+!?Tq1icrmY&EOvB+& zq+NN1Z^`4R^~pO@FP+Gg#wV&E%jDz-RWrt;i~I_o5Dy|nS#006f6Ntio`c0t$Ky<)bCusLR?hVlqltk5|UIViOP*Jd3L9%)3CQ7$3uZ zKN>AeuuO>xSMi*>v`L#3177xcqavYY zDiGhD+{a9erPn=p8>vgRggSqYqHCMt(<)6v4R(dnt}*)!vlYq!wrEdwkQIHhSvJ<;k)sn`D~%Z;*9x;d3|RW} zZbM#Yb9Uo>CaJW#-`C&Z1@vzd3Wba#d@;9)S9F>Gz`|JYnPH z;xL&RHYAzX;skPGSq}^^_>f1yiruIj`q&W>y@-Tl5OtzhY)(xwxv3NTG$#>XZj40c zA(;!y1K-9QFz(AKfGRES&=K|FGy)g>7`5E&*8$mng4fV?r^aF4@X!CF=6xag2)QoY zxm@r%ILP;|!io)Ib@DNw3pY4H;~O=VF3X9cVBvsH4WnM&PgYLH^_MO=lbasbBvl9n znWGXY5oY5tWV}3kzbq8GPPI~}K4#9I@wq;Gsrt9N0w)X7(4hbWfwap(YHYxxeaPTd z7femtLO^b<r2R2G(y%gx+<6RVLcv+(xMWT9SRNoI?24eAf;;m_JBrYHioG z0|xt&b)Cm~7evQ$OgZnrV_2i+SkhvbBC7{GssXh^D;n*V=)yBB12Zkp^jMCA=&u7VvX#2QEevs#bB{F?-F9 z(Fz`n^0r;f_Zu`48E*RND=y554*lkTe_QQ}b7#{5`43feFOIVv@-|Q4P=*k$F+;`D zvuX}<@l9tDIF+0)9@!*b%6QCPKtJyAh8;WY-JI+zrhe~g&~1?nNuI74a5ZaHJaz9E{~B2m$J zmmpMh?}CT@!FBrfSL&X>x8LX<9b5fU_p}^t6dauj*xK5ur`J?ez4byZ z&syZ$2E8*)6tQ0j_ftijoTYNx)P0$@+tdfi>%unk4K0jLZ1tb-U|MMIx1yhVJh~V% z4cfi$I@@q8-?QK}P1L`x#b*AygEjwmzqc$T{!XOx1d%Rt%(c<%u%Z?Ep5NX0ufl!r zpWfv_@2GKlyau?uiXN0(&Ej53pg`Pj>#}_^iNqLQj{#NJy!$+1r5JZ5`>@{|9UAsq z6gD63?d32EzPqF)$2_DbfXXusgyx&RqZ}2AcEd_? z6dQm4O9wplk-Eyqj^BXr5mnh<>V3)#MohfeKM4o~meiu?FF}>*dUTR|>&|SLdlB?b zAZe{rR1LGgQQwYahgGL{+!_hs&>_L8(uD@64&7e1{&Q=A*ZvzVPch?ZwG3R-{vGXqZY{;R zer_-%nOwx6NeJvzJ0NjCyF*>hxeArxSaU+zji+`4gYEHR7SPcDNM4Gs&9VH}NrSTW zQoGYpXFe-LvW87fg#t?CPf(iwf>y)AIlx)6^(p$!2CaUs5nWu>CNS0~PrstDfSlfQW7XkN_?I7>#UiOITV`uny z-L>TLFTaz|$y^T`L3WPYO#V4L-sH9kpMRIFmQOtc0!NQ*t`ioM)0ddi7)lh>3+(&y zB>kT_y=`kw;nK7$Q(~%v!drzyMD+!-)%1dBY4|(^P>S4hwyrwbmO`OdTFB0y7koRe z*yO5BuJ(!@C>SF9{gidS%LCEd{F!BH%A03i(5|^b-58IV{ub0_5mnCFENz`B;ikM}Ib3jH%L0dy6`aE;QG3Q(gCF5t7*eTn zDG=Uhv0%yOaJU_|e@jx#_Q3+8P&Z7cl;Zcpm;|`!aa-x`dZ3AfQXm8$C+V566IXD{ zY^b;gCxo+bYYU%j(3fJgVavHJGLrfe1;GVOBxR^K+AF1F?Lf#Yyr4NWY3fI_eGQOD zsH*~;N>Nl5PYYa^s87}B>y)!6{`svk%-5PU{=t&`_lipWiFEyxXOkCFkn>`M(-7e52ryF`8NXjssvrz=vZ4(Uk z$GEuUWluF0ygUVC z+dU8eBU!QRjux)&%pzXVi@m)SD}Q#@tCIJqZ5uLPfDhoUMi zD!LvQ#$Gyt zbbQ2&s&i{NXX#;u9D5T(#oB(Fd8(P$h1!w1n2h?rskYz`$K+Ek{(7CQb)FSYWy~Z= zZAV>$t7e!iP)fBmtKYh*<6dX^hG=uc%dq3L@;WAX(%C>NND4c{ASw9Ht@ zy|b&L0Iq1|S?H9F+Np8%BjMHryvW(jx?ZpY=F~%<0JX8o|9YuH;)h)|w=6EwlBZ|^+-mg6v(q1m_HYGo~%x3OntZz9tmtDNthw(^UMlewT!ancXsGZTu5NZrI~ z!Vz6`bzw-HV~j$+`ubN&nmpWrz+dk;(DDJ&^msS$uZiRv1j=}uiKD2;C=})mZ_Gm! zjbwmAnTX}k@2?2-C>lLgz^CcESbQH0xoLiR-5@s4>23tt7kOmCD|q4$uUt=0a~1wrKgw^aL+Rel zA01sLbl7S0*8A0<^EB>W8mZ$ynzdN-=zPBoGZFN<}Kx)c9fTy`wUtXKtW zO4Ra?`D7G%U;XDj1?}FubFTGzxTTWrSWbP~t);JXen0P8Mhiqms1_GLPwMnHZJTZIv6S?@TsJXOX9T zw4$fn3Fwu8iKS?q7%6B`ZD904Z}yHRb~*y@CVwck+ULi3M}Fr>9C0y)V7_bI7F!Am z9~u3xzjc3L=Iqu`>|1lJ^}^KuMR&+OKY1EuM*#OIEj;6 z?-H)(ic&o%E(M0D!vDmsAefXAoV!Yk^Py$L@TCz&O(*M3Et@7G6quTs2YHfGS%F4wH z@Y`|F=>3-8wpd~q@nkPmv&G4;(}->9`*|`~mxLWG{aqlbA{?YG8jm^)))*K}>0Z!5 z3c?7kcNVovZLul_WE~DA!;fg}N3q+4vhSaWU~DJk8UDv(#BhT~WY0Sd5n8(VeH2Nj zJ3p<@{w5RlNDGO--7>eV*f(8Wws_lAB{l1AwH=klTQ|0jI>_jVImfd2Md-l_=9v^Z z+yMVo^@7>s_2#8ZF3wjIvFmX#Ds%B_kmGBs{~OFk%9MPl++>Iz`97%IKiV6Z3z@(B z*T7fII;)1l^{O;2tT@W}2a!X^+HE2ks%^}H7O4(&yJxj_Ai{fXc;L&xf_b27#tfk- zW7?x{9m85?lAW+|&0e>UQO1+5>a9mjzM4{8cG zYrpMJyQfRHn0JM~9_Jfk9sa%fe0+>!KJPjfsGszq_8{(N)NSQyRPGAyT2C}@B{CNT zcqkE zu!>1$IeO-~R!TAX|M!;*acQQT)b&Kvgck5GC5Q)t^eD7c6Q3NVyCa_n1Pfe~=Ue#= zI`dxBr-Wprqz^;eGX$t%?^h20<__-Ty5g)Sc=tR^8p=-*^`3c`VrS|$7xux%%YPhI z;6Lkr?j!8>-VBlTapVtiNC2Dgizp&2-Nt?i)h0=?AgLb_Ky44jX@xK9B7qF*DVJtO zO?&KGq$vf@QjLliKDB~FP0~n*$y?v`XMRpH7fXj}o=LOt@6JrD)IVxmli*N-@Er~G zplVL2Avjfx7g-E;p%HLUXNM+@J+GIbK`|k*i@ppjT0IRuznPg6D|KX9$X9)Ecr&f_ z#nESX{E^cLe0bh~#G^PElXe40;wf z&ns(pYVs~Uo76m0B!ftgY8=!QM1%5NY9}rmW*{(wg4yiao5&pW%wdO0Xs&hS^*Z;- zIIt}{_MHHv;eD7K^^)F=WUqEQW13Z@y$W&n@!oUk_}1)G`*x#zs9iJg_&L?q56FY7%D3|wkS69{~T z&5OSM#bWI{6M==jbea3SqkrmN^uc!lUgwpY-a_PhN18^D?K`@;qi}3iAx=els@NL`gKH| z00%LGq_%G2w{C93_IBsxkI=`Lr;p5dqYT~+7|_}Kq>{N{1}5iQ@uLKrbCSj!Mh7Ea zGOZf|NO=Ct*g(`}Z8a=b_cz~rdx=A*TPbO9kPjnZZ6%Pmq)x>p_^D;953ADTeOa2I z{#B7%{zWxdI6xlu1isqAjFzbJ$S&o>yY90A@{+r%*x2Y#{{dJK>RAr_v9z@qbLkaa z$2(m>9vqcU7`@OpSUF%FscP-SvyK?)8lLu3K`UhXSSv;Mt2RI$oW@~3w;)=(--442 zw?brk7LlM$)}oDQf?pQl8!pIj4x=#z!^G?@@yQ>O!xquJ%~Haf%ZIMbIy`R1k}ra~ zf?0w7vWgGlWKTr0Ab4ha4rf44h$c;;lI0g>sV?2D1{{avyRryV=!L@tHv@!hZjIT{>ZIEHvwMN9m9S)< zLw0MIsV>~3P9)p*Mjxs(RiTGC?2j_pUBka6L5~2opp^|oUPEm3hJ0Mj4ThqTTsfFg_k2>=~Eler2;wB*dqLdfD|>ejCEgf)QeX_!>K=gJy2Ov4YNA#&m6{3)6Ci5=2FgNQ zHNzoTbB2(5S_|?hi^wiGYA!~*S|8QMIYK-*m5bB~UXjrcz05T@D0j0GE!L6_!?IyR zz0bZ{z!RndVrZPeex@ikpm2bd6!nTQZvLc;qCttn2C1G4pX(9~As*=fBK%_HN#Ork zrD?|dn*Lo+Kd4Ghj`{9&m zZX_VKzS=Vq>M)ZXB^WQ=J4-3|hfS{fDdQ%oz(UyP1t(#dN>PC`QtrDoE{f>ZuOkpx zIg`_>fr*Sv9boNnyX;fczO-bFH}chr<4hdFw>X2X^0c!dNXxYHPaG12Q3ubZ2+FWo z95uqvt&xXjgrD(C>mF-Z%E&(jtb6D?EsDh^$cg_)YgAueVkVFQW9Zy#f?=x_a zkl3gEfF@=W0MVw^>6ql_4x~Ht8RKjCpDNG9oI`Xc7q6W=L2mGtM`HUURWI`n`Wv{b zQcWxIGSc90^xu*%vyGZ*s!d_1lDp}Sj*vH|&1fT*0$n2A>QvHCCiL~05Sq;%a*-j< zSB;Hze&2bQ3i&M!pWVMH6qf2=0n0JFlQJDX&Xij-QC9TFZPNjupZ;xNc4V00kEG)h==NG*-e3H(o z_^0C-Ec zrlGe2d@&WI^lPk!27zroOX;~w8ecvR_4g9kkXq+ z1W#kybCET^S?Frp<)>=AL}3$cN-0Cbm1@pQnHn*;YOY;sG;0j+CNTBI2#R8G>6 zX{iE5qgy#J^TNrRWTsz{<1_KvMkbj7#zZR%-R(89>1O4{C{YAWM+dcUx?&^e-z0sDbaR&*c@7WLpP9rXC~8)D_1Rzk4`srWVEz z_rONYpP5&?4uZp}P8>_NsvjxiQIp}61VzFS>sJ@Y>ediyjUpGXxR(^DnAWnS!eM3g z8!^C0UY2m`Ul;rC8J^osGRx<26-&Z?hR zq=*u;F>$$G%nbp9A1HXoX`=qrO-Q;dF?#`WObJ^6M+=Z$8_Q^o%}DG+z@dXpynmnl zh~y(EH*NZ(ZY``$#ctRzXirO~Is(1Mdt_BpfAo@H zo8i_b`~f*1Dxp4@4c{hOm-{rqW$@|3Ie!`bBNRxlE@9EE8}ck^T|$g=RrBBvkAkEs zP%#FQf`|mQy?w3J3z4G5^Xx1a)2zzqXE$5oVyiguLi6ix;%sW30N6P`TV4onmAcEoDFyFm<;la#d|-*rscknB8OWC5Y* zmiO1KUM}xbP%FZP4RNGw4S!C48OdVB9%tLdf`G(cD@}KOXFmBcu5bm^TxDf`6N9E( z0feZ^V*)Y+yV7~G8WZnh_7k=;B=KCJ!Bk{R+ug9N#?;JLcChS>yk&@trK9MZ5c~Tg z9z}|Ge12?D{<_=u-N^bCX*$lge9Pc*B}8NoQ0x#zPSRtb^45ARp#&VFo4a(6Jz9B5 z*kXgEv6h>`qectg>#Pv7<>LzXrO;OgJnu>floV7HFZ_my^V#=PwDalXMtzm1O!ABALB1W`N)hjfsUH{?M#bi&(a{RE3j&4Pq-p5-_ zx_1n;oMwU4$$1ja^T9tNDn+)g&(aR=v zutGnYqrf$=c!mD;MIM-`h%0X4&n4a4L`fkvC1znAT}EOUf3Y%k{E`It!?jv#G{-P^ z*imEg(4t=+l`F$RjGMVnhbrA1?6um=af-~>*(S6>wZjJSGjI^!MR)7iI?NsW;>en|YLin>^(C zXyr#-{Y2Ha;|*;m*g9x5OpiF-`J9|=(dm8wIuUYQnZdxNdQq=!U%DzG3)OFD63D;& z>+YNrvuawWk$>GS{v)?wBjEc9YD7Nc5~f{f2r|4?zZ7RKTFr1!G}>u3UYNwoK7C@L zj~O-fZTe7?%9RKH2NH?s^+HR8;u}G#3S9#!LM$rMT$eU^?8MA?PfH*826mMTq03QD z+4Je{U{QQDP~`CM-=S2cEa@41=nCNdIn%x^`j#H&yBGyF*ohzeV+WYUZ(PKa$c1No z7*|wU)Jj4>p`S8DpGlNJYMzX7K(Xo)3JPpjQ zkbK!4F=+k%>X=!uWL*9c&h1IG*PB3aXfU(@R{H;wBK^hku1shplm2na0)Bec_5Lx7>zmHMk-a*$0 zk@tvK)I!mOaW@R&LgyGsvS2 z5{LUJ7a0hTQnXZPKp8ZxZ;NJ4+Z-1`o^bJG7jKa}w*|4JCmb6!&%dJo-Jxq!#Sx#* zai3W-x53|FLSxp?v!i2+_{J>|mG(fH9HrHL9Y2tf)#1XKjCB96&1b4Jb*WR>F>Z`e zLK#GDL=JiBP8XVWEt!=LC~3}RY?)S6>=$&b75IoA_s~ytd=r=#@!u7H-<xT>yh!55;(`}76(?n1X#WcKS1bg=n>YNRFrHM{UIHkk2{g?aqeAbt^aM_cB)w@Ng7lZfR|tXmeQ{`jZ)bs*_;RKprGj%-22x zk+B@3P0|w8X_0~(10)XxKt|2hDl-pPnh?7?xiSA<(S+cFu>9{U_^&F0(;PZ1Da7otAwS)1=?t=9STY;if+i;ZEfUdG``LSaQ6 z41%N3qmyL@t0=O;IcX2)ZWNT9a;}a!&0%51Lr^>LXC+flQa=>A5hGBCuVG_olB)PE zmJytwbB(c3WLw=ZG!w|`UTYt9vZIX$b8N~TnX}|bI^yO7 z%TfM6#?GNj6E4`&Y1_8>rfu7{ZCjPLZQHiZO51j3rP1HIlkUMC^yIAb3u48yW5Vv z5bV_;#Vd^8(}l19$U1H}_V{JpcY_L5((72op47r4e)_!fBq^?^k-GZGYi)0siTd6HbJ+M@7R?YAT<9U7A_Eel}!YsmF2PHzkfPwwina;}Rlk2$o)HEzeX8XDVFY)llSl7&9LvnmZDZbQQ@1Td~7N#Xc!GiTSRoSOoX z{6+ZDe{}kF$c}lJ3F*#wKm~R1>WC=)AKstNOi3rI`35SJl>u0;IwtZRWW(5~njm!Y zLoMll_+Ar>QQ)((qKTOEuI~2#*j31_mnuu3<|LI(;a+Bz^W0Vpq60V?N>l849Om7? zSMmR8r5G3CMC+1Ia-z%B3d*#CD6-T(tozXswPJyV*%ZwOW@6q&w2*>7M_!d3m_-dy zVke|YH%i8sovI>N{-v1@gqsz1broSl7hu~x>TgPFTn3O!x7qaW>iOqf<%&WrpjNCY zl}}Wu?2h^)(R2z%OCTvEsud$_47(AEDi>kGUjTGM+V|{=(n(BIW<=#dK?W^tV#Cy) zn8hq58fcff>d_C@OYq}LQ6|T?`a-E#G7^zX(7r=vcKhg&89$Z)op@w+^=>tIxw_AO z@TTDr^|E6V(_51KA1yB*=I0#8JG$>pTobvJ<()ATc2zsN1te!&D~!T-*#WPjf294d zL>Z3$OwdpI1_5{e>1w2_Q=gg<$L@#bA(ubnKPEYV+b|lBbw6CH?4^RZiP1wox)l~- z-aK*kkqPp;9#1MiS&i%{F+(o{hz2gm!vU${z#t#nYH;$H#}B~BEk zKw|eivj`$0jozMWZMB!lTpWK-U~wJz4e8B^o{^?%BV||=;q|e5R(SQF6%~J8@=O$L zEGmx&Q#Pn1j~iJ4xKXXX19JXr((oqWd#=#k*cY<4)0+(pKlhuNkcfb-5ye^VKjoN7 z)>lB_B*h7*EI zkUi-oLNsf(ZrM5n`FD{y2X32E4OaH7!6E1FC{dJKgS7{1u&O8hF{C0VXvc!73ZM`Z z0)2Q$+Ac5tSd+d*EiR{;GU|OCJ(bkKWehl8*Et903xYPZ#H0I{gBOfycQMy99k;3` z+9kM>6{@7YIK4SeoY>1msIE|=Ooo^n+^8b$&Fa{h`YPbo1iUM{zK1_8*Ui`A~+lSL1WowwUc<*st3_z=kv>L2m?_DvkW+2RrP?h)1w+2`1y1D;QTiwfGqE9QqufZ0+ z^S-4~={;#dik)m}{~W(-uChZu^?y*CNQHG=LjR43^WW_Ah-)vc-g?$#wxsK7M!Quv zFqc@{!kS*Z=|WEq64Zv@JwF)3R+ljg{n@7;Do4p8G(b$mx-cu1xtr-shZz$4R!;J$ zGOc`b44mr@J`=7<|DnYlV$aH2Cd55a6b_3TmN zN;gf%%)8;aIv&QoK^HyBbZ+MXYm~?UED|3NKYzwcBgV3RK68SW39@biu@~cl)sn)7 zT4{R3mbkOtThig&e3anwgY+M4!((kT^X&CD*1=-m`19|(zkSlYJ=VAM|uPT+f6?9I|E!?kS z3bNS2;VqFldxdvp-$5jk_MZbn!zh`zuQwD-#N@foH44md+a?zX<2|b1?bRwu8S!k7 zFM-|7TDauw4g?xkN7%RoYe^-V5&XxxO+MDrKdj`UtHRvZBXcm**2j{yAA1@t@o(j+ z97I`%G$+b`-uG5pHvMpX-?aEeifinka9l$X1SstRx_h5W2doBIG4m+hib{?|5iqdn z1k~8!1k%i_ls&fM$$1=^Oj1~v$%G&gJWq&cLl2ojCa@V48wRAW7lPQmaBGjmO}+nc zd$)DJ54C=Qe)xv?KeOW15UG2Bx9X{?X~uSPqqg*`JvR1nlj_CBAVN*_e4Qrzs`lwc zoQ&vz*Ie69Jpz%-)TFoJC%tDu0t*IpSo6`cykUW8$E7zBQqPh~$>g03n3;X1?vyE= zL|g%|=LE-dOqohI#}rkn2MKHlvfCV&CTWOd{CIa!FR&J7Te%%CEtLvBrAW5K05Y80ePR^H_aeNN|fHJebQ#QFb*^c}xWd3e%EbmE`H&sqyP zLURE2A`YfJF<|+0AR;83;|zro%logMKK1w{N6(^$)(CE;dQR4IY#EcVb9J}ul^v3% zEizl#l3Rk}Z9EGaBAO2D&cR91N^E9*Q3q`a9C-zKR;Pnp4hB%*l`^LW`pjRkvBn7;sdHuD5J4>FrH6Ak zd8HEamsA@$QE!QGsOk~FbwKN*f37t~I#)7v!o~&H)VegW{bt_6I*p9tjtd~B`l_4#>y zKcBTT_VfSuTmS9)Tlqxw@;Y>9f|GAIbK&>(@o|tI;QKQEI(|03$N#o>XI`b%JG|V+ zV7ZpRI;vkoY+GILkU!KSGm6AQJUvDmNMzi1I+lvN_cNi~!0t)j6d7UB>@Q2Uxi-PK zB1(Y}>B-@|lNVoY70In)O@o}O344j=GhJ7SWi399OK7ho5(UY^(m~r+5KxG%VrNOR z?z**fqbYY0Z`W?^9{X zUIvT0!CavJ^^>Vucg%d|TaNzf&usMwKQ6`$B_DdCiLrx64~0VVR! zy=&zzt4U1Ocn?Xw@t#i+Dp6sKN^z!O(XXOezk~O>(PlH{{O46#`*svtg$gObNs);+JA|^ z_V|;?J^l6PN9zN$t9`oRNe(UC4&V6BZBRu$Rknm3iLIT3l(ld_gN-zN_Nr`39nP+4p7}*e<1z^q1oC@S&%T}E z>)PQ(7{(iox<%EP{Ux^ZZUMwbGILlRI3BBT94LK`L*vD<)*v?jG6{3` zs#VG+`p%BfkVg;@PQVpbPr%j(G~c^<2!!#;2DdJpMg&s)tw7Qmlfp zE`#qeF+fW)+IBecH4gD@erCr#%S4-_lRLGnTLu%?sjT zCH2Y#MM)faZ81RZvZdJ*+i&bZEE76bIi^aj|Bm4jO@P{$!&>}tZUx8AKiaJ5;7$sH zp}pVcyi6*DX})JIB*DPJ!1N9P4Y66j1TsOu1uAa%7vsW$PpmbS3P5J&3O$*^e@RP-eR(PbNZuz+`G-W-=UbRbL^Ljj4fF)&>|@ZQHi@K%Aicb5#T>{gM(s>`U1Np z=Pw-x7k2;C#xT?^_r!YARG=}*@VdE@=+)ibAGRVF3G~ZsL&BA-t;rF57id-tS&Xeg z!x!HYCW^6Cf!2f9CM;lVJ&jwCB=Mv;wq<^vU~Njr6GqwVnd-`OM5&UX>R1iJ)(gq! z)p$y4U8ZKZ)r|01-kyw1MnR@>!z$qO%~0_$?3S(gwwo*x>&M;!{3bJ^9xQ1|oN%6i zrZ2MY{-w}0G=F*0kQiNLSVgSddZxak!ERwWCE@X{d|nMxll|(qsPi#Rkp^CQ>MBrHtM0h;2K^y^4ZPIWm;Y)w_JT+{t7Cwh?uz~9t z(vS(Wpqf=fwPc`<^#=01IZMk#QJW9YX~?Iv_4Mv53UnPPYWBo zPHFKNn)=%75h8Ki)8y71W#u*hFaQ=as#!ojv#?m756~Mv9X&joi zA7{4eT!N`Lw(=%K3zUzmu4(Vm1KUn%)n&G`7+lgwbu=+b-j}v)f_Yg@IDqcXsgNEw zb`Sd5wBfYFX){b+6{Z>>y|>h@1ceKZrz#=*6ZEFFO57q>$?7@x@SNgG=jeVi^z20$ z<=V=#^zIzSt*s~%mJxs&OG$1-kv3qx?jLo1ELYC2N2mx1i1W0=O47>m61!arPkz zGQuN&{ZGpV4_nelaI-3Lsq{v?(9OJ`giTd{M18A7xCvt!k~4f}v8xpl5Wut^-F$)bB+1@x|d=igqBW-l%k z)-Ai=J)G44tF!Q_w(=i{j}+QyXv(O?&;;%#pPG=6T4>?o$HZA zvEg(NsOQYXn;!_p-z_~}U0kMjhxhw-|BmncOAlvMc#Zei%e!@GFaNx8b^C_%;CEP6 zhWH+QpKtH?>NHO;b_hPzRj%W}i&Z>-X;IYnn`*>KT-N+3TURwmn5x|08T+gK>&fGSv^RgRG?)J1naom~h zIg>ni5vD6COJJO&HroCGhi?D+_q8)U~$7o)gnpk7~`j1Mg^m+X*3tlFb)3b|~Q<_(qN zzj&K!O&SfxAPs^et$Iz_aER<1tM+X#H$u9BsVtb#Wvi{c837xFY63>}7(?8lx;fW< z2>Pr4b=5%}dl*^36*r~x^J`osqzlFrYZKNbZOTdIqv1Bv1A!xGR+fJlTC-#OA-DE~ z`C6`;k~NNKgdJUh(+(LXB0vroww2h=XC!_;)Ml@!|KW8*zrE@q(eYA*lqu2X1g)CA zOol6tYAP@~h=2uvWr6T%H=0->dh6Ft=!z6jbsQyfw&7RjG?PKB>Zchs=@T_C`jcM| z940!%vSlsmi!S97n4kvT($&J53?s+FoUc@jSCP}0wZeFTVDTz{7BTjxR3A zRcE^%UM;5TK*8S6ZffL~1=8qQaO1cGy!I`T7d?Y1t&Gi;BW%YmM} zRnoIed+RCS-u=d@-W~Q_T0D9y3z{IuQ@7NRz-@FwY6`e%H5Rl-AS-hOcr)*USx~4- zQX@W$pH#u>XJQ!9kyUR|F7Pg}bFHbCfUdUoSV~nRbKI`5ZnZVKy?gCnhbmL>*4Bs>%%0NkLS z48jIkcXc&2E%CigYe?i%P%?hjJpA!vuy6lr*a5(SSjy?CioR_aRGGL!otZT%x>(iP zfW4(=3$PS~x7sKBvS7EfTnyy!6?h!LP1lLPKHg*vDf#mw zmlTfQ(e_Y+6vb9`EjIxpSk5v{tx8<(%uL;tamJl#OzZs_Wfnt)TSCUv!7L{IvK;ka zR9TJk1%T*OHBpm;WQYPVG7+f?%aRv|!~mqY5ZG7Xm>QhFQ zQ+mp&1v?abR=XW{25+lwGoqo;zwpcBWH!-R z{~(dzF*y}<-UetODEgANBOfMA4^qqqkuIY)koG&q_04ZCR3L6(PRwsOsSln?*5PI4 zwsx7Lr**=76lz0DsAZTT1J7C%x~`}cyH>qSiN!N&%4&<_C|hMT>Joy_9#?_oQqsCX z8{=2*a^|ODqW%%>9TQC0HJ&|pEZpUfQDP|DE(=b9vP`jGutr<69Iil>O6BuX>*Zp` zPmbbF9a1GPtcn`QVPhMiaI^xbhgeAqPtc@k_r%xum%gx^Q$0x;t5F-;dAk-Sb9%RSY;WuPujlUUZxPl$cfJq2 zc?jyp53avZZ;$_0@XMM>aXnjYDWntNBmR>*b6IZBLa!V`Do{x}MTq!E<$T)gzmiL? zSb92l2_L`Jth}73c2DP)pk>L@%Nz_uOmwmMfgP4G98yj}+Tb)1X3uTx;5>Q@mOpc- zb$e1;7D4rq(ovb|8IqNa(#9RDUpO&Uvv=4Ak;aFs@7~(l%F^^FC08-$HH1c0gab5n zj5%T}X+UyO*0h@=EIP_bVNx?SHt7|bX$UUnaV3F~!e%sCttv7YawJcsxmVJi2TNP3 z5j+tryRGEoNCt8>*zH*q<;aO*2^Oj?=lvzXH`}M>*TOv&a%QYj&4HP)~ z%T~Km-f~(Ny4JFLJ&Rh~4wLHjZD7<2HBT<4$PxVpL(MH?auBgR_#8Q_t%$rvonQZ- zbM4++x1W%go6wqzzrkV;f*)?3w)St!Po^ibY%dzW+ zv**8orFE9?s2vI+I%pcpwC(3i=Fn)?hLh+_ zskm-UUqJ#Xj$mL%N{K%S$xI-kImKd`Qk_VpdE7M0VMtx@Aqdf?#mUbiERCiewwa*2^ko2LG^nzq=H%s)H^>6oLc@Yv zi0ha_PZ5HJqbM(ZL~4);_|VC;OGsYk7~MzH%vrFEW#NhW$Q{o#wRWnk&go{wSY;-n zZ7DHo6t(=M44LI-*kaew5k@=HTf+arK2h?rG z&fx2=cbziDf;A&>J~=fjtUW!?E}bemEYzX>48KBH&=BiD)dK1^$F7xy;3764o~ci< zwTZvU61`G2IV1@ow@gt_ysw0h{>Su%YPM^(b4yN;)O zc45k#1OYo3H%He>$2ZB4unUAn{@O0g&9)wG96S~S9oca0A`9+wZu;9I2wCAs ze7=E`uJm}n~HLhVnH1X_|*>hRY&}dKjb}hd%Gs*_53NpOR?DakPN9{S$wJnNVt_F9MWqW z*+rz!^Vc86Xo3l=35#+VRy$K1l=!c8JDS$gxno4cW~Sg1%Utp*^9T@`6SSI+bM^pZ zs!?SAy|>D0sw!q^Imiarv1+q#+%iZM5oWJxA|FTQDqs;t3}jFP9=UH#2V`57@UUPV z6zUc_NsURgqdS~j&@Jd@GUTe#XhnKY{C_$Csm`tGH zaE_uZKfRgF=G(l#dn9{A*v7+hNc>WGG{>k(7WO0Wj{DrpKR{Dk1||f`p;fmpS%~MR zapU&u__^IduI;n_D#5~OLr=g(GDj&X*$YnHHB4(e+E?#4i{U&sEgrt($kc)uMFG@`C&IrRM&Hds5k@_PSp$nkuk$s$C+v&FW+_!>YJ%>j?f!sL>(zpWO; zFig!?(07nel%ULi>CTP$e0Wd&b`6;N@OAdXQD86cuQ7=BbZlDZ(_YPLS)J^jO}~2h zod5hjeawoh?Z@5Zu`}bGH9yZ=6r0a@t-2?v*NT!5R5XoQi54AAwor*2~Wn4@lGY+b~BVS{4otb<(p*10$) zj)~)^=&lk*?LoyzMMz~M%T}f$m!7d}HpXPYyi$YMtzN1^uXLl)3sA}C%J#~{cfecc z9PjDu%=e0WXM5VDV9B<%a_*Rn$0!P|7Hb+6iVk4A*>i30iuA7JHux4{snarTE;5g& zqo>2CgVci1EYmU9+O_0wd;d8Vk4-O=e2RhHckY;`&%p50mbG>28HMzx${+uou1a4a zuI54q#+O z7yg4%C|rTu9fdk7cF6Ehwku9pD^UGgEY}F{aAe6cL9t%8d>S?DU`N0CVu`!jR&hhG zlUmzrXRrl-v)T4!?J;j3qi6nUbz`!1cWbzIkmASTqws0@nT$XaUWuTbqR2 zQm&Mn=H`9SG5Fwg)-gxh&3duaE|ZsB{a3I&Q9e(;Po7v_N!}$FgR7LM)?@RwW$PkP zCG#&=`Luj{E&Sz1_Im^iVzaCG58;Ys08;Z)#*!T`f~B1uM(#KR4{ z4YLi?4SR~#oHiAJZB||YFGmkkU~{C4iA8Ml+{Wt0VrRFD0cm~NFRP^rgPm0LU*7P! zb0BwJ{&qYJ5!~G&u$u<>^~UXUHD%!5A;5Lauxj`{woA6!5tbF+^|GplK+S2BVLfY{ zx9YIGPa02%h~wEfM=Jq^0A%!8l--hgX$yq3C!{;ACZK*Jb{-qjokP|fZv!glt9=g^ zZrOxE+xLsQy|3!(;jX`tXJ-HEb5eEXqmvB@2X=4O@+FWhE9lf|Lu9`Z+p^R8Hnv4x z`s8ew$Tsb-L+wUtr9s64gc9$zL%M5d)S%JSfgY!~x}Po@;TvARe{``d_YzJP5-v z-anpVw;EUa*@fiYuD;5S!lFD2Eyr=k4u1ZpxfrSl<+_W@ZV}%RMbJLNe?~&#Jm9iD zM-T~0Rs@^^R}G!(I!Z+MPjj&*1qsvm34ne4UfBwTn~FFrxL`-fo+jTt56b#;gET4$KVAxLh%4ld_B;<0DV{E6Ny8_Cmy0+s7BK~?MaW4i61 z!Mj#GaJd;(D~~D;(f`#RsL=bnkCGK!36V6I@>KdsPS9I18hz5VfGexEd=9T~7^S}- zTSk*4g0oJ|5E6nSJQybd+2S+9;P#*ZmE*w9r1x(pZn|_qwmK}+uyh?9T)G2jg%_g$ z9jzgNP_|BXcu?pk0a>S;R~{LrKGm_)9U(qeE9SEyCur=r>cNo4EU>Z&=)b$MWGX-o zo--X1{>!-Dd!Q^6fp8j%Mh@3EQ8Y711FJA$W(M5>0zOCx!$vL;FSmSW+;FJNA2piP zl{i_65tzaHUUJfhh4D<#&#lRdqw=~0tVnKMoLS89bfty>jq4C~K&W?c_VIAOyuo{c zwujsNAL`!T;QxYu6I(30O172=%#}ej57(~KhET!lX=dy2yFH+nwHw5eKi91}Um}OS zgm;*UzUX5}obH0vEuqyV25orHmEha9X>Zy744CD8zE4$~A=D*%!MFH5ky;j7&4Vf#z+ltdj*Dzb%Q#pM0%sH6{n`0&8=41eFn0N?|E1dc5IwLxUE4QGMq$CS&_1-IKRkn_(uUQ-%=#b6#=PfrLmV{PtqgNUWJIz%ZsOV$_lKu` zxhWVbc3PO*R$|?7S`%=C&@f6qeh zTy#dC^!A^#w>TA$p0Kx^YH#+rV ziUA7KLO>VZ^SoG#-jG5R)-69>!L#*B!tzyef=nY%^AfbP}QU8fA+v>f^VFa+fkUUFZFn zD{JbK7Auq8+dt}BV-hoA5hIMJ9H_+*{R2c-)8)KBRHo^xx_{Uq2N3KE%z$feabC5V z!-0NI+ioOYVARgy2m%Vg8J{<~VbCr4V0OSQljjI@dM_?r^d>vk`G1(2LCmA|`XnE& zDo)fxW)u2>B5~?Q_WGYNjP?6F>w%s)Fe9Aqq%9u=sdrN8-U^d>eA1Wo?Sf7oMpz<=CPik-!Gc=dO_SG4!f%V-RSo|?$cuJ48*y-VnfAL=U@E5!Ok zunsE1ga={Bks&6&UGeqpwwRgA+W0#|z_I?C4i1NUO#v;!Fck)!n{%sp(; zFnRhn{0m_&vBS5$A` zIupAHg3Ql4;uvHuPrnmyjPs*T5gx#|L`;vMaPrFxO{pi2I$oK={c@^|ShK>noKzv| z__Ak!DDD(s7ioChUWSaiYYNICGa zomxCflAd8@xGTNtS+)z)N3M4|Mr|JmiiYB$OyfI!)V{BHrBIg@9hwl0z#MR2oAcRh zZ1a7DgTh(c`GZQH0cJ^KltYqjtSpcz?Ykp!lz#n2zU$}B$PF1oWD&e-wGNFDbkn=F zAeB&_UdfkOSvtV{^IxjgP&J&aVWY5fC^P5Sz9@!=5jAM(Kb1;Tj<%$}Xd5ImP{bvg zh9PZ~LLD5}q%oB&k{AlNVp)xD@mrKJV^|aLnB#3h+}7R?6sKJx-TSnUh8 zWFudA?-x=H(ZI)2eQLWv$27nhlaPpk|Hdkx$Gu-KL$9SWXeu-krP-6D zgDNgc3jX9+^k@IRFwOt$g#hW)|yT_`zIm%5B#e%a30+MKnV1yqS*0 zwuqDI++2dn!5;?jPD)rLj@w&0eIVOP2Sd=8_db5|7 z_(c1-BawKWDPKcnq62(*xL_POP5V{$s}_!+P+v}#V-2k8b!WK|S8+e*bj1P_{JM-; zV=2xgA4l1H7qMkY2W{IlQwJR9Z^?4x@XBwlxIKWh$9K3|gcEwzy`@S1cr|@xp)Q95 zoL3;x&W2(X%(DB5WZv63N9COV@^UdpHkESW46ob!@3w)CDI}#G z)otHysdpFWk2zQSP@+!M94jW}LNNwaOZN{>m{PKiOPu8R8ED2!nxO&tNS$ZxO| zIH_=+4GRd$(0yghfb03e1~H6e;3h9kIyu9ISTWq5;1|cx!63R4+;OIk=0QI$>Oin; z+Em(7iGc@kHd-x7BRJwo=A>K5R3$Sw!-V9i%BaVWO7>?;G4P61KvCMs;3K8(10$s7 z1L}(RuRg16%$ZOfw)Lc3rMV@RlvG@pyXAbbnS|y;H)!2C6zfu|IlG!}l5gq)=Iy=d zn9cx5J76JVlvo+HjE^ryuEKWwloH))3A@x4BKwIl)}rTxh)S+#e^!WKMaP-iGY}U( zXi0Af*xpwBA?rI;%e-9G1oIg|EVd0_k-kE~`_l^pdR#SGft?pa+vQ=&xDp+4b)CDM zP|TVFLhls1z~r@V)AP8?{#RpKB79b#)1osX%X7@@XCczARhOFGoAc%;zElDh7L38) zOmnQLRmpsTDLS{C!pbESLr37CbBQrbfsly@@Fe=4C|AA)eRAczYPV}x_96?Cy2DdZ zWcCvM*H@00EDEcG%iEBFh64WyGvS%Va|3!%aDW+ozGJ+TU9Ytfg5ire#uIJmA?3y9h^5l@Tha;aE~*Unqox_blhxh>1b2c zeGji66#}2#-e%yyQX|sak)c1u%_%=a2oJH+WPLqj^`GZ_uZ6(PS5LQ%V}ON-s#_=# zi#3co<1w>%qDacH=~q1jB|pH+TQ?9PQ*0iQ9+g~-0d~4!M+#RqE5v^o0HR8;e_vDv zrj3V$G!WX~*H%%Ytl`b@_|#gIH8c{~{u+6V+F28o3~|r6%Wc*u@s}kY7Ba}_FXl-3 z=M{I{mm#krF0#{ux0>Syj}jJmcNH zQz_{lmq_%u7$oA^gr#4`Ped+X37Lf@lE}q;~2$?lIob5GvxjZ zH1)ha?<57~cT2opikeBrM|^6GcAc-rm)&8OcL;Om(wudYCQ*AS*4J;n;G^#+6O{~U zFHc_}Ol?4p%P{awW8o0(<7fI{LrA_m#Scig1zg#TG$zvNOldgD1B4*ny;DTc+(r}u zwQ9c`sb6IIXjZ-x@>#iQWTJ&u$e&v$H$+i6Dt0fFr2pJl1pNrqmF3Q-(hbP!qb&wf zN1+`N#X(0q{pk<}tYVg%@>cqhq`xb;s}ltjp<+|hzhrcVe$%bw{I2RTYCBL{_k49d zUjr8tp@-fJ_IK>L#{(M&p-uO;L%J(cH6YbYwNJFnQse)IDWKkCv~H`a9jECD=%QV0 z5@F2?oLMH&Xndq=-ju~>NwLvPtNE2^)*VX!QfNB^xiJ5FJ7`ntoVPRI;>Lfe*vbU> zYT(5m1>M2eUBm~#9D%pA;^3V{P*|e8US6)?*H6^Rx^p6wp@or}7=d_MsO2W=6=9=J z-Vq|%ed!#2irY7A|$3D(%(1f{`s^Q?MY&sX6~GIhRPG zMByYUKHbyCea%+sN0|7DOgUWakkjhq62ezOafhR%Db2=7-l%4HBZ2-*>bOpS$MGdu zdhkk0XydYaw)fxW_68POlej8lWzgL&4Z##UrrMTBoN61vjl&_nyW)$gC5^2~bMxQ7 z&7(LgQ7I|tux=(Aw%fGAlgaHnm*~4Mn2|-fbQhCu6e`MRWS)sPtR&7=cgOUI;GUv) zcWUdGa}@>-0cwtYf(4G4dx*zk<%wslQ7X1c?$o6skCHwxP-E)M>vm+VNe`egET_{{ z=?O+SLQ|oJ)tUy`Wi@(?uWe>NSZvFk?IlJH@LTn_rQu)3^T8p!3u%62t)|TD5@TtP zGCTIlR&=&;DyGt0(tsg(0$xLw5WbDN^-&YH@z^MRtGJiWFcJ;o#IF+cwiW5%7}(2ENhQC79u^+uObcl?U>6D2YFszvhH z>#iK|q2h*(59$R@@e z;yU&Q(Cjv}d{s5viHHjYWvS>Sc?-H#JzGo>p0QcIHK)vlqkwiY3Fv%z2F>rjd~`HuymYam)(CH;!0ZGkW5 zKW&eM7JMCE@8|5S(DQAa-^z~lj69dbOAa(Z&JN6IzzM;gvUX$2V%eWO((7p0{`CWc zv>cwQATd+=m>L~IrLySI(}KPl(iqLE{P#4_BV)Vhli`VciZnw5-b=`OK!IFmJLjU( zK+p5SXJs^x(!hWT+ zKSXdjUNBE}KZrdr2zTEb!EgJ}4)>h0V-Hb*XHrU84~>*PHh!~SCza^jp-3$pb-WmS zQpB9k3~u9o&0jM;qt)bCJu$mZUA@0={#&q;$Zd-oN?%qQ@vwtsdjn+cPRDPwNk#^# zusF&%GZBN2*g~FYC)*4!c!F{JF<amZ?89Y3VAvbwT(LO z81Rd{X+Ijo5e(*dJ&YGIFAujkM(z`f)`2T>NhOyhoemuBg&Sa-@(H#%VVRzeJu(MAD_9Aebj!tV!zqpa0dYrvvA5c z(xahEF>$Ui2k&FVC1Ct985Jcm&ZtL|$?MyZ&mk7ZWMfWI0Cl8{6B+zpRo3#;XCi5TS! z9|vZ?+46eZd|gn?E$yFMP8BNxgkfD@8=ZrmlbZ~`CIQT?qQ^he8&%W!5{>x@pN!>= zzXHL(2Qby8?!Tinoph#MKh3j4F7F9XL>`E$+v!EFP)P+$7sLo)SD{dlN$pmy@NZ^WT6i6I88(F+k(@=3uAqo zK&TZ*eaJ>W=TNrCK4ou9#Tf6ie2~!${gAi8ZJUF0n_PbkL*^WOS9gZFd=PI@4D_`O z9+T5>W7+qrUfEp8&GhhS>T*R;=k(H0P^)C5wOgr0x6zV1D8xDF zN!Xe7Wg~R)+UVx4nY)Qi{DcziZQP}$gE~yNeo}0Aifhh%)T3FC>_$;4)Q6@w^?B7_ z!>u!;d7@N3>;B*wA4Z$rm8!TgP)j_eMTu-&&^B)cszbhX-brgLp6>~j{vW>1Axe}m zxWa=swr$(CZQHhOd*+R8+qP}nww;%gMY2e;tzPu`PcQn`U$?&d2Er_vriC?92&$52 zaH+{+<*zM0m>rPv6aroRgXM4qQPI1zypX)uo29D#c9B|}RM**prN?km*ZPY7yFWPj zEtf;hr%e#u2pJav0T(wuK0BLGn`TehdNAv!RpBqoM=sZSr{OSFA)}>gGk3kl%STGd zNWsc#eZ3*>Fk?)5qy4gAxLvIjHc2IFCQ7Z|VE7JH|Ax)fAuw}UBu-NGtNimf#2fLg zl$HL63LUAk?OqZBtRAYD-t(luUB_D4bU$anDOu!z5^Wi6o;NYfibw8!cO$jc^Alnp z3FLgW znWpS$AHw1b!Z}H~&*$G9TWQCXr7p`^lh-|K+_CtK+yvN6xspBN!a)l+$v&z*u+<#I zB;K$0=`tdd|1m5=s$m?D)OMVdjd{J+lLxS|bjzVlZS!yMs>@>$;Elu!#Q>7)=0r0` zaYy#2S}-XwwVWi17b(-$AVZY5ps0CRPNvU?qVG;DbpTgRLVS<2OM%8SDXWLcLQZ$-cgS<$w zSq|ud-Q3L|X3)uoP6u4$!&2kr?cjSh6swBz8|EdO#t}A=r8eyUkTQ!iozvr+SK}(0=|ONY#f>LN>Pc zmCM{#r8s5J$jmpe&&*k_3gmM&tRSauoM(4iy(~Dc<5Z6pV#k+(C*F-m+-?Q(^-PWT}UMUQK!a0DA0DMu&yvWyb7zey^Ca~0{4oun-P1hsKMH8L!el-A+-z4 zmrmRv?FiQ(|A{Yt6Uz94z{sF{ z_0l15Ndyt(Lg5zK!x^SlTdrCkIOf6cdgj{KSKb+)*BqxCpVLVb|PwaFb`4!ii zFJX<=e!m$)pC;XNqCzRU(`Oq3#MkvnM6+XS#-r1{3Ck4$9V@Pl*c{YT;4K%>Eb;6R zs4S7{WxMd#*RcX*%QkRCG1zKRvo9z9M>y#gAjsK#^PS6pvQ0a1;dQ~_OJfWZFE%x= zrL0#6iLuP3K6&zmWYYmIsgcU69vc*=7dOMr?ZkfI9?wxBLK z8M4iyBBU0EqkHPDjn4Q6DB~az&>H&hWoe!!h9Vg020xR_@dSVaNdZu73{sQ0??3)j z5Ph{mdHG&7ur=qfmo;hqoh*pl+wo@lZE&{V&Jsj8o8UPZ(dh^OHrNGnzsL?ahNL?x z6pqNui0RTJzXCxM|HZLnJaMaBWi)Z*QkV(bMs9Qrfz-Gl!8BK%&Hbbt(z2jDH(%ep z3SxaBg)5;dP`p=gLA>R&zg2LVjh&2ui@3G@Yc*uZTd{L`DE8p+#z7y4;NH3K1tU$t!sDR5s|?z<;?rhPOQB7p zfT5gOI(jPis;zpUcnQVY?%~d-tZ%sPjO-hu;!))_KJMJM@dP=9u*n&7uTnq-g7y4% z*IP&!J9sxeqo}=!Hhac#6$jnHZ9pWbf;k1TgJZAvEe#;-&ekhDjOoE%_B5<*3>o4n+s5nDf8A_Hs`YFl z=`&?W8#xAwRK_=0OvMg=aXS12eZKo$`g)1dAveP`ZFkB{po_!H@oZ456d#!2Ko zQ5=In6{A63!n(HcMOJx>Nt9@mz9`mdFxpGFUM;P>9b-8r+Vjbo;->}&MAn%T1tXwv zjvoA4yj%a&mgYfKbB9I800l9x6l{JQx0I1bRkCWQ1#9A=|1q0B1)7TtWd2rH9w z=JN3bJ7vofMgJ8d;Jo^n{iV7ezcoig>FgjL1lgXeU5yY>Pa2QoT{PM8tTL`l3ZPtIMETO1D|wA*R8I zmi79GZ*=-@$QOBIvA5#YIIdWr*pw$%)D9FSl7|9F6=;q?jV1sc*c@6}C#Vo!(^Udf z4)R|Qni3TSoPcu?{8j%{fd{iW8;-U))qurd zQ3GWU^ZEdvT`!&n{O4;5-UZP6Ah?v;!!ofx-i_i2w-Hll(ZpzB5sA03+Zl3wm^a~iCiL~_oPqg?r ze-zM7LD44w2BBrF!^`-E5fA`H;`96g3-iUR!VL+?%k<&I;pGkKBg@K+MOP%fJv?rY zk6%Z-cQ?##onF_ya+_%Zh~@BT=|EC|@YBimz&zO()k4JP>c0U%-TeVe0O&Q&%Xpzj{p0&gDvje&rUblzRXG#`K0xtYtZ+hTaKfCyy_ z+eN7}Nu*7o+-o^lGlr$Z0z?wGK(SZ3BV>lB4Z*=WBiuUz*cY|Yv7bPp+Bf_;5Nam5Q^qw3*KHa%4b`=Q2gusJUv)XLD* z(!|WbNcUAJ`|WsRBe}UI?1p^XVhUe*4ZE)WQoI1rpNh0>yoA%5@&({*0m66th08o4 z03a6evFg1a_Ao#2h(H5Zw26*kVq%JE!%j(P%j>=L#C&3(BBD#1LA+x`SshqG%=rTl1EP!pqvQcP2N2K$tM;L?1F_Wsy#?sQ!>$0K zhJ%g!!!Zibu0cccBdmeE1WL*SUkDJH1CsHBvBS{%PwsKHLEQL*>HmoiI@Jg50(^x3 zV?e+t9B@RSA`ZpqKZOr!4A(BeE02#1DduI?Q2D`>{Y@JI$DZISrj z_@+eXVCNj?xTi>IQme#&fCghg53=?I?}V?kFV#Ro1LA#>{**Ox1(JDM2J(ABM7na4 zbK-VYMzIF%hoU2xaSMvBq?V*8WF^ZW<>V!ba)WXWi^!((rd;O+=X&SFCzW#vjH>9C z=uBuWQoWP9DUoyrNWuBMHhJ|Vnk3H&k_mPcq2+u}1*9^OCA+fkB@7LWb(4nt28{-l z1~X$Zb8wl=6A`I`gAxw{rlFyb6o`uwxI0WC@9_k*-k)o1HkUo>b zNt;NkrJba^rvLmyK#nk0GIrX?vbwSDn(tWrIHvbA&NKu~-e}5Gd(*UNIBR(~H8mV* zwW!N#SZIo9sc6A4l|lQ7G8{&-Y;3H17Cu{Cy0NCP0%anx_O4-WkZ!Q9%hIlD%xLKL zdQZu2$6Baau^Gy>#1^}Nbg%o23=SA&k9x>8mA0PR&Kl5}(50vqu1-N# zqFkyyxhHl7by0QazMXyE`E+<2?4tB|dE?bAX^v~H?}L4HeZ9Q#JgnZ!J^u0nAnoDF zquepiG1Ifvv4tZdqbwmmk*;yH5x)t9+lJE@aVax0Gd3|e(@wEeF$AtdLgoAdz4UM{{Dt#KK0|M*j3Y z8Lcpw8Fd*}7@4ZmR{2z&T8p`2ctskGQXESUZ49T3$d0TJUq@s{x`orl<(_odQ?=6} zaU)qGo*;fB#u3vJhmbUr9{w#%l)E=}kLb!lPEM*y3Q!JO3S3HH&TQ(oVDh%}72-_l zA?;S;NBNe1hHwed3Ms^R!BD}lV-jMLGnFvAZ}@0_3%MGw5+M~i7Qu_u7+&pR{H{2t49TwN`jn!Ug1s5I zI=IH%xUTy&FL$<(JzvA!<+(O_Y8Yr(^(uVPrO{K>ZH%jvYqKjFC@pa6J^9i3_28I>c0BPd-Xl!eFAnB z78&P>*U9VQ=h+tDRd<&O01WUN{P@3SpffT2-y&2f7hOF=~x zC?>olx%w`4zs7xX_kM2m-kfGVdheccoIYpWa-4qh%mP{f-N(+1%2BTX1{@&$Ma<#` zlIsl9Wt~I+W8u#lkm4`RzmjhdaUZ+0bAzw)&4u>#ySznjKHvM&-}C$a_NzHLSW6sQ zzQI>PLm|Bk0dKC*MR_YD5&4@+Qqi?C|IpS>nHs>)A*HhZ&}#w(FRuDZhu7-N3`WE0 zfYh|sBAHCXZ&_CKJCTw{(me9(XnfX896vHjh7X_lsJHs9mg)VPyKT4Ucia%5q;0;C zY!7_c_@lc+3Ob&W_q!?C0VMIU$~inNgj7IO_!pXbdU_fLd+?A}kAWRZM!Lh1W`3#f z*>lYoo*e(KtKYBU;t^k7i5Pr{r582f2~S5+O$+p6*6e5Z!f#EjI!fh|_PJV0l%;?L zkFIr|ur%+T>7#G?kb$?pf0eLyH#}(g&~^?<5s5^Cv5v8wyBKu= z`r6-R5DeZe9=Occ8E-D=d|+pw`A`cYW=K0z3!^eG}`Ec49 z#KZaVeIioHtaFZ!5AQ>PgW?C`&&2O@KzXv#;-Zb+f|+d>&$I1ir`#rH_uJu<>{so~E^*iHm;48G+G<*jCQDCUJ|@tDWf*a>*gZyd zy8QS;^HR-venqd{WLXrad)dmxWyQQ&MeoyW`|4xWlL+gB4b~2G_se_ou^Q>aXfqV% z#^!c&zP-^zE!&`2VcfR3ev8;lZbi4;Vx;Hk+nXttLx=@49L!!7-Kq)Z1AhaRJ-As2 zPjsCK8(s`vEMasmcJ1&FStQfppH&fO#_yyxmO+}wrYW79{3q(?iU(VEr^V9Ct86Es zp13dE&p421FkUV`4+Bc`lY`H_S%O{KZ}4vpq5K+Y_48Z%Lm)Kk73C)^KEtE@ysk8Asm3q$SctdMle2 z&zIJ$)rN$voi0<4cEKDv+C6fKkh6lMgSNk83sNShld~%BDjjO=s+~(&WiB;b3bzaP z74y~Ojq9buz0U{JbuE?G5IA?TUo;msuBmxkg=Dp@ZM7x6E_t6b-<@)xdb^+AzpsPE zLLGx2aWB!>-dEh7rqpi|Q%Yy-4usF?M;+e7=6!r_-oUKi$8>QcI#K!Zh90?at}P zj(F8nRESLkR0fs$oOR3cI(Hdw%?g)+tDk4tYxeeq7*ZQHKj1TXvcslkf7=_U^U8?Tg z^fmN7d!oLAx&_n}P+19CDFb2ldCuq%u_E~K<7Mp5%A$)>$q&FlsWS0u6 z@@PuEi#v;Y^rC6NRj{r+rAe8iiA9d@$bk64;RlN~C1DXkBmo#bin-Fa)V0>N*mmi1 zHFmmr+`pK_D zkCIsBI_nOlkB`?bI$<3_UUl6MJv%?IZq7HFusNNn&V0`T!-Jhdc6c;6^M2M$7rdw+ z#OD+i+RXXxs_$LLBCAJzlU}tqy|`Hyxi{X6^h!^vU$IZTH$r`*d2(pHpFR$`E^i&D znK!NN?fbXMeCT|1zl@*H&u;Iz;k}i=sxw|we0pv7c#psJm`39b#iz`38G$D2lTOWy zYX7LYREKIIXKl5-Wt~3L4J^4Uu(ej&x#eM-{_EjeNlhGvQMamMK8rSi<`oUf^w64U3X@{?o0J*qP+DXd(uH7z>EpYL-} zonT>H*OfR&V!~qOqw%p0qjX&FoSiv!ZVY_wk4ZU|DVKqpSLYV5WVk^&tz8%0QM1OM zcPfVfCtlNZL%-7gN_o#7g-}?5DInh+Z>(<;;=jcwa|M$J^pfmHlEOpnV}}YS^B-!> zH9z4VC|>`5;w~mx__$s~to?NN>VF~B(Z0CeO(p<}Kq*5I_E!;n$B4*9Ol;di1+WCI`;<0%l&zYLu$m3+4}6QEUoYPJ>~WDQqwfn!PHo1 z_iX@N9IuAAso(qC@?qvf=SSQlAC%wpcl{?+uAR0#3;=&~SA`&4-t04;$Z0+&<=L6C zauaw=O2Jk_;u)**nu*vGcjP5DWZt|~ONh})0FB>;yae;vqzbv8q{uD$L{wMH7dU0O zItjCo0fgZnxaB~*wkObT$k%0vVAMT)EhqnfHxPP^MfviN!xTp;%27E0MFe1~o?sps z#j|*#h!`98az{iNKH?}B_#p>tVI2}Xts*!+sa+ppRDyJ+R~V@IWY^~v{8uQoG#mkK z_({d2gpf+db;)BWS*!it#*mYj>M)K0^>#=&%MzFGJZPy+3EIf+H)vS?lRM11ek+^(p-)J3nY@d1mGA(T)!=$m^!oXgt1!MpY2CY*8XMm z6oXNB4TSOlUQ%=I;Xlo6-&>?NtR8tce~Ww|dnvS657_6VsLD*g|KTx#vAm^^gceL` zg^o|b|2|$8b~*w)AqB$qptOMh1(V>z3qm6*#YuaUMz#Tt0S89yz9vYPXAa{R#(-F# z!e2saJ!_n zG1m?`vzKMHCE1O&jG8_$-KFpMY|Q@ZF=AtCUDGglT?DbRaX_}5y|nF8Y&V!gTuoEc z?nVCOz{>PNzRXOJ`teVfUX58D82h8-8^xf%GmzhiPUtqA;j-rZu~bR_6?rk~7V4li zxnx;c&pVM`MUv+E?z;d#!u0v_+?!^CA=9(zKmG*Vf~>Dl ziCM>@J(W$F_Cz&OVjRd0!%a@!X$yGgxSI`F*#PgB1zy zGF)c>Uh2qa3L;3>9aRrek4aXvOsH*Cq)c6~1tv{EL}Qbdv|T1rNnUu=58b;IT%lYzz=c@`!bqy3M0t3RWJ)5!j%^XIVuK1JgrsJ}1KM!h8oT4)Vu};j zD>L=TybzVbYk74T99Uha*45buO5UE4qLvHqeC=VtTu9g2|NtM`^o7p zJ19!J$$=RXt8cZen(ImanvsMLrgLHSwloHfpVIE9DJtGkAQ-_hSmg%Fl9^IBnr0D8 zyPZar2v1c=1OWfarUb4|H5RZqBCg#gE~^Wl2!dxgY+HlHVmcp2)EVLq! zcEA%ZVjCXY@ale0A8eG-~1aGel<2BscA1h_^mT6m_lWG)t1$Zg8* zZNVZ$Mm2@Fj*tOI=t%Ng$;A+kIm>NBD84nMY%I z?}a2TCXHRyluv*Z&03-lE)_ymBJC)&AzktBFm^jDX#?;MXz=}J09UNKE)spqW@Kpy zV5OMDa@{$M@w%3$SC6hLvJHZt+6d=_i?nnH?mF>H;~k+zD<8`<5yOEx(krmRM)-I$ ziLN}Gk(vSC3XyT<`|gn+lLXROXv@}`Y28nvCD(>;PZ2KIpY&4QrpSL_8sSJDbJ;3SVYO@m&5#wCD4Hknz zt9OHHT9U-rRyUT>Yw;6tx@nF+CHcr&dx{R+9Md&W-RU+LxY)$bbpoP|kKj5Oj!n+l zR2iB;e6Dmr&#aqgscbmOv@~vIs%y@_+Hnqx#4jqpGk5TNDo{4*fHE1IAbr*f84eZ)=0Q~qJo zrWfC9h4olTu6hmWL$%T^-0O_{p=hYc4qKgnK|Yd?Lb0UHb9Q-`s6m+4x;h&zyk^yD zbM9mx8X(aD?g0GffRFzbb(?}^j>2gbfpjhu9&bbP>i2lr>>bj?)at+F+32r~BZCaDs{4kkGYy-?=JFcgr|+$h^) znT;d}*ORX8joDX879bq`dVieAj{%qKexUZQ#&USREF~o`qWuQvngccQv^4b%drd+h zG`q%t$J`TGJC(cCV#}Z_4N!jvQw?C;j3Mj_+Taa>+vM*6&5=;F`MiWvo5#U?I33=T zl)f6xu4!MG)w$24L;yR$0QM08amw1-{v*aXwPxVyu}Kptfa|n%K~7Cf^-^##vbLcK z$vO6@wJHbaOkIr^gFL`LhI(N97`vAre=o& zPFTBkKU9x6JxXwi%^_v5K=mKWlohTil|sJ??U5`YYsv?MZ$2s-_F=fF{!>&%*IWo` zJYvsmr)D+z85bZXw)rXLO9%kO7!@uOaV2^+;3yOOcZMAQtjG(2I$bb7w@!Qxw48ji zyb~>~e1y*ixARSj{z@jU%I4dFO}}e!6-75X2sukVJA6guv|oq zZGrBMco>QTH9I%a;;KE8Ai($zZZR?js5CuW8VO)XCENn zrfnH6lDrbGm(__!jYE{p+QnNHcq;Q2Tobq{vHf3BOOQ~7JLGxqsJ=)IiykJjevI$! zicAr~X(suKp1;V4r~s0F+A`L@QrA>c6@&e%sHSQw!YCB1sj?p`N8Z#kju~T3DwI>~ zh>g@p-8Ki9s90Yq(Dge!$e4(KWNeVK{U}NT#hD%&sA}>sIsGAP6x~Oh9+Z;C zRSF?pCJd7cDw8ZWo5rBTZ94jDV^3GS4@h(tDD95!cuJ!}*F|4&-nCVm?hCu>6bGG{5o|h-A6~$#WvYZDJ6~`v$>cl9oh($(R8qCgDUAUc6 z7g8#gM3WgiJW8&xI(i8@!_nB(x@mgpf)zN^*$&bb+o;_VeX_bJ%=+6DT~(#$B9b{4 zS%dhSKmdlk*FMU7z;qVsY9+B>dnC16=z^6!OU_csv@!J1jp4>%kaweVkDQ|#ohKYG z%uAIoXaEM(U`z!~`{O);3EIN{&ajVx{4UcB!WT)I@W3%zRx4CPz|f~viU*{acU8MX z^8o@W_*N_(cc%Bb)U|pEP;i|n9cEOxXoG7GcB$zOr zQNV|H=oW9?z>Bx`Ic$R$7zHbF0scE+VQ;{KI%h4GZff zbLK0CeTV=7vG1`Gs}LDpPP@;L^;W_Nwp32OT)0%}sAik=OhsIuM!~4xnS6_kMrcr? z;!3s#b=w_BvWcL#GKyI9Y5SDpPY<_DMEh-6HarpT+Hkd+3tiM7tA=Do)T&TI z0_>lBNsE*5o%g80=NPCSR___B?Vb@Baqd@ZIyKhfLjE1|Y&2>|q*B)7RoN4PRG{E5 z*7S6#vN;{)O*8z%0Y|(_qW*}BI49vN)kOXc>BoXFb321a7G6a_+z6R*Au4w zOaVSI;^%D*w%8}ry6q3h{v7C1=TSxGMU~}$E*nbtM8A)Q36GL?EEYT_zPB$*Px%M^ z(;mfeNY)b>gu*b#!sicPX@Dd4zL~m1I}LrhCh)z*at)g zgIo#^aN`U4Q^NHm7I_y)q zJufh*-W?04zL@T1#$tsMj@AM7Q=BG7w2>QGj2X>`q2LAaRrhfrBjJQsf9i(6{xmQy*1HgrbBgT_|Ne$Q)7;T$<$gVvmJCUFRE^2OH03 z{0Yx8U_Q=0+9_oLm$|r3E7ya3u>du(`}12RLHbJOmLf7NQ!1W3>r;xq|3DK4%TL;P zd%hyXeEwd`Az>LOeX~L$a9dN>D3x*9FvbZeYjaIXLkza;6UQV~U!C^i65ucSvOYmT z;RvTQh>W@Y{!Z-cH&OWm{4aIN{uyn{H(Z=Et{Y58fHSUGfT_lBKsPx1r91dJkdD_l zSSE;1ohe|JpFY=S(9|H)tJg?|ez!8m(AI#Pk(6FOFSiZp@DH(0H=*+p%6ySFd z9zA=XGFl)Lz|o<5G*)5VD3ZG@RxLMhe3|KA@jd8v;9vMU;(4QpK3~Fsq7$K9RgPg%Pl&*9|`* zv<2L&>rnm@Hb$v)u#7j?I%Nq{>5NjyT8N3E0wSf?0~z^(Af9U1^5nWp=`Q3LUMrql z7a)^1%M4E_6|ZHik@AXL9FdIjH|DPuiP(>pC=xq>v6 z`bi{w#w6Gv@}6R*360N8INRc;C?)R59z{!n=5bqj%mA*0&yNQMf(c@cZe9fO2^den zE@R9N!7tzqL5R!+LBv~-)_zf2D;*7IPz9Yg34K@zstggXqQ)qCQB(X+$B#T>2)j;r zc=RH+GmvwW1gjJZmg?Hea7Xjh7;Z!Dqvrga! z34INK3YmvJhL{S{wr#5;?1@u0H6`6L8k%{cG~xpH^2nsd7z=^a!OFta1lxfF+(pDj zX_dt^OQ0G|LY)gaXi600bbRPs_F~+lsU_J$*@oONw1jzB*vP==8 z?|_`l23)%uQ+OTFYJ31h4DS1%kB!xGbaN2K<9Q}9@o&s_LQ;?nF*H*<@4lOi*&u$P zU9#6*x}ZqxJ)nPZ>RWchwNp4WPvs($ktc58c@~SLq4x{&Z~{l86rY7Q?=!NzYS)+cgH=KVInnL%){?6FM2@_Bi^95dJsy(i zSowi=z(zMpIxTxfI^dVRq$Mn?p_W&{TQLb6N$=8C4x6mC1t`$CW53I+;Ub1a$DHI` z4R$7dZa4f(CC?}R}WmG-5;y@!M-azYd(23N#31Cl?iO~22BrB zpI}l=9Taf10(`DkPT)k~)Dxa5Hf^H)th^7=7WLNSKy338mEpFGEC`M^W5i<6*Ax~( zagcHd)$@4){ro4@YJ}|{v5aRE&d+Cw*%YMIGKQ??jZTgt66e%HNub;gI596^KJVnB z-E9zb$4ASv-hkD^3~703Zj+xlf8;;3?@79Bhj$CyzrNS63+x3)>hym!4z53Bzd1wW z0ISz!K8KLVS(fb5RNtj7-E+c@SVcNnRGf1WTMRqsv%gGT{p~SGT-V%nG3Invi>1&) z&mWgbzI?V6MVMMqwn?FmgYh!(e`Y>%MBzQ?`9@M8<)_Xx7zG#`A)d0a;FOnPE&3^2 zVDtZyZ*joC1DC@r6HlWEISmf|2s&C;(r5jWo-pr@bh2F1`9kphc?xbsoLli;%4&{Y z;!L)KMq5{TAh&^g$SIO~e%k{?&`oGRZuO_p!ay4SBzex(7`8&%1=caa0}y7BV#&-F zou)EL{|3KIubTdV;*di$BE&v}|5?G?P^3h!_Q2borCMs6-Wtgy?gZf+uK+=p&Hpg5 z$|qGh-@c1)7D!PA7MmLiQrU!?LYAbQDdOJWq#mE=^1xSGnPSk+ufklKegFeF6>e^k zEA6Q|JEt~!8RM_s+}9f_19gfOK-Y1i1sU8`?k2kcYi(h46NPh2h6c1WRRuu5Bo6~e zrD0I+33N%oqGo?fafDm-`60rpkP?L^b}PRYe{7I8fvXtf(^U!fJeE}SJaCsXPsV{338C9AAk=4zHKj$8KL-VR>|DPh0q;|`E^i^mNa=Mspd)!%5PehEn^gU zSQS^stXO{zKdiY@21oR}!6eieI3+DeMRPP1uJ1wQF~5X3jQrrB2Dt|2Fa6Al!6)q8 z_mD0Hcqi)rUHN3ELs;qX%K9v8`W(s>2{`g?pLj(G%;FO0P02LTtU?GFe{XP%@{W{0 z&>&qws*3S3Jfz4*qhvm|P@(=cixqgx=h3|%z{sXMmXz2qytP_$C4Z{OklYC4_NR85 z`dVxNZjku7;qP@uX5@;FUNW1>)3c~Y)6xBctVLBYO9lDg!l@yne#dejdVK9-knOTXw;ab730{Egl0DrsfFd%qDM_2Je zMF@jsnX33+t9<};vl7(m!4XpQS>uFZ;e5^BBAq`{GD-=uYkI(Go2xxoZP9&1w*gu( z5EQCMA)Ve^M60;J^)B77#)HWZowkLfdjat4w>i@?Gsx zQd#ZxXQRMOwNpctcWWihJn&d*OZ>plUL^c`Vpp@hs`nZC-B+xQp^B)yTkI zrwEM$UQaq^xd0lYIDXhB)RBEq7|hRX|^&?;Y9^5olWr3 z1|{?;>o5hgnx=Y*U3xn1arLEwK5C?Vm7=((klCnBN@pT@didN0xY>&0XL%SFnRyOX z`<))lB;9}`nRQ#<@SqxVsfOA0&$e>*itppI^6mb=uURQL-|LdrV)$@=(VHR&$AyI$lnA85FT;n11%%8d;12aspMYh z0%NVP@)f%HFGJ=ElP3#-#6eoPDzkIB2YjB@Gi(s)J@vARffi-%GC(KL_7**&T~U3r z0qAh+xx5E+F{5i(Bhmw@d6hR~SqF4K@=~v7j7$tXZOBW-9h}2VRf5lq-W8G4)@7fnlB>5; z&)Dsr0F8B_O;7y2TrFzscSI)wFM@F_*{~T09Es&9ULFwGES5Y ziO}h|)z+PmYzU1_W+>k|KjA?&_xZbqk7;pKaN+bz#rM)fhN-_7M&D`oUX5N+b8L$J zI1*=>_Z6t1BV5K-K{$=uem*|vrnQ}FHsH3|Qq!&!V-$J|F^IzoJoY}fA34c=YfDM4 zbOj8!yVye15E9jTa>5^nR>MPOU|huR{oa$sa3Z=`8E?j3-xl{ye`g@=*RhQ zRUaOaJOt)s;sH4=^%I2Y|Der|@tE(q1Kzmk22eB+m(vYjQ$O>*L&#a2L+B6+S`4>2^i#K%@H^`kYlnd{0{&* zK*ql|;?IGXpu_Qxwr64d@ZVxQF>eXJelxKd_#+R(An#b0&Z=Q<%!93a;iDP8hINS1 zw4V$DawKhh=||KE>gsK)P@gI2sBh?F|cqZq%JxS}xXwG`T^lRZq2x zpab$DYAx)s7a+@7akq=hluqvxH^9xdjs{2h84FSU zH{_WCLqWpEYMP67z?Uh*w=O{>$i^;Tjkqr!7}t!TayH&dDSg?-J$?l2-k4R-Dfg=h zQ}sYX?JLL-=pKu@5CUTxHl^)?OEvIi0>nJkys^LFz3dBrmz99v%m`dS=pLe2Onj|Mtp+P^etlx;WOC9H_w#%4;~*#EL(WuQSD3c ztiF$m-{tc=mIIxTElof2UqUIh_|(xbz9T8(0PLq_fzKzHfj#Z2AJM10^~hu5ILK+| zC*pMIdBqIkGT21`PTUT^o&Sc&M0`#SBc4Z%j8FqR(Vk;>kUpSST;bx=aKyewJQRni z9>gnfIN2|JA5K6_$A84N=Upa5;=XJNAn@=J;X9^#V#Y`{}4gRqwvslA>!H~MNv z0xq1EC?(;_sb%ItHyz?#Eq4u&Z zM!!}hh^&}6sSpM8XccE3OT5a~E< zw2njGYFftUpyt=SM3GRMs!{uoq32uMk{+YArlKW3&_{GBqgP`V)8C!lh735h>TohL z?dTlKUL>;X9`6jYrL`Y<5;eCWWdBT5y%U?1fu3*wumq1zFqDmYhpwX^K2Bgx2D6)f zFv81wjAA+ja+B*%y9j-QXrrx%d+pmzy@gn|p_!^jZd*J+{e;>&@)msydf&i0I)FLc z_=47nd0~Lk#$f$9o>VwC6YijV!`k*{QM9;G>pLjrRjpNrpxLl4+z;PbDRq!Nl%}bRkBDHQGHHGNrFqANF#W`T|%~o?9ocFP;T{11W-qh zRFjF9dk!dG5$7I0LXi+8P0LD;6XI)=cCIDNbU;^22%fgk1!(*eO|}Px5J>50+bzm0 zYp7f%(1Tw~XYr>&e1T8gQ_v;FXE;h&My7-RvhE?Qfh2Y;k~BQX^)Byj-66P- zPOn(QUys&H0=QSu&xzkS3`|_nRrX#?)piH#5O!|-Xl4smIj@oV9s9}cZzdIA(2~UG zkY8BG@Z89I#KSpa(q+Omb~>q`@GL8mG-X>SGZ}aox16B|I_7?73<8JUWQ<9GxjC4( znJY72;hf>D61K7nSr&@p&Gti2gd8g^+vaEDpno<(B;urOcsCG^;^_6JWuy2&dr0osM z*v}n4hL^1JN;$8OIo9Hh>7w5-=<+;hLt5A?KqWU{1p3+GHBR4dp||0h#Pj8%p)zV zpUIxu!_jv!9qs+xQbug^ar7SA+qyTo?bHX=eQAl*3HB$kM9RU6uvxz;v*kaA8Ogq+ zDRzzedD%!MUkL>#Fe>CL$_wE2(iISHPK!7n+Lj^~4#A#AT@m!dKLuEXbOhCvMj_a> zw$mydYQEx*?V)1FKI26CaVMUR1L`#pryiSIWL<12}GBMSbT>h$F0oOQ~$W%JmR6jJ|->|pVE*G41* zK<4+-g1Sy|w>Zq{MXDBh+Siqx;JaIGdlqvOP3)vf_Ibm>h-Q{jcf+5b8pKU|LR#vF_ntvo~vN+GBr~pX4 z)%tfSm9xUsQC5fDslN@rREX6^m4DhHQyqu;uPs&7!Qw(8@?7`=zu(Hu@CB|J&LkA5 z8ZDj3CG2LS6-mP!)g3`TFL$eQ zWu_C4uwEGO#B9uHt(@pxFhlj4a4&P60zg^&~v=%aEanBV99e2SCbX zQ!X=^<*h%!NJLN8(CO*UKa5r9NCEkshQLF1aKAOz zy{ej_(6%cuNQLUIEc4JQMTjJQTZptx#9NIOYlQJj#)#$%eI|;<6M3%eKpJ$Zb%tqX z0b{auf#E#TPnD?iJ`^oyt6>>Bsh=_-;kW3A{M6!RVTqhJala^vchaRc0wCF-zM)z{ z*J--#DG0IhlJ#3|tK7$QEh9i8Go&RjL}dNA#XAJgHTNb)3#mLO2n5`7DY!nT`5ir0 zQ`E2!Fmo`)gv@Ge z*v`ikyE=_XRfBJH&VxI^dcH(WQcGqY(*&5e^K3 zUk0jtjrg#4szrt@PFZB6Apebhru&5A&ZlZss7Ky0`Uj|suD%8U5T~QYo3IBDt=fVA zU5cyd$9HCP%msM!W}9I<-X4qAp1>cUAFj#7-|>#qEhogflq*SbLaSfU^Kj?wF*Ib! zQEN5TyyvB9Gv(Xn@%l9sQY=W*Oj#ayPrZz?*gHPxC&azkO4KuOv6<@X0#ewF7 z>UFy}=zl6FZ!~G{$ahCSR4tLw1D7kZrMJA3mE)N|{-}*r5jGpvqk?ViE_!NuWE#x+ zs?RaZ*_f<})S6XnOp`p91JfphiIT%P(Irf$F z!iU);5L7^CLHfWx%LWc7o9LwcN)=ZV%LXg+_`@+OUQec6S& zMOEAPQyoVt_iQ~_Nw&OPEi~7dkA_JN0>j4ugzl77#o+xj44n7P5RWF2L|0we@Bn+H;w6_7q*%8y} z4jW2(-%5wa$H*HI@ZN>IIwE40pI_ZEcqeFV)pOL-Kgx16275Ty(c`+=cLcV#V16cD zZJCSt62oj5j`dxrulazD@++;mgLMa4Y?tv%{wUdz*W{bIKzAVNYv$9#g{0L<_NGg~ z*_cChHGq7f*2xBhes#`J;Owwj6<>j4e-xtc65A_xZrKrh_8&E&=dy8M?#lMF`l*=>%|n_uNeAmEsbgYdsxPTp7q;2)O7tX} zZL=W8jc05kb^NEwfAt{j%X8PXr&gFVJDb;779AlZqV!K9Fmrk#)T=|FSlf2A)*DnCwIpK`ezYk!+a%Ru7aBPF{{d z8xeiJZWuJ8=2}}>Ci2cvF!&Z~eQgpX0oA752o<0sNHEwXbWgzvgbyYy^(8U_b9Grh zY8H0YxIt7ure^3t36(Pah_%e0oabx-t4RIwvk(v|377`W243V#V2yxw%MJKrAUUEK z(M5bawhx&=oPA|V(F=ZZ?@$S!D|Eamo5Fr4ivcTGa6&!AhZ&Za2}Lm6Q_jMgX%E5y zIE4DQ&sF$GO6Vm_p;T4Y6I&cFKUJtXSirXGx?UDVndaEtiqGpD;{Bz&)oHkCWzQ5rxueVTrE!}cLRv+Y zVfUbMfT9}c@Q)+XRtl5>-fG7pkRL=zG8pj&5i>CZSm&jedv;so3-b2Y-RaX zZ<7bXwUw!%Q^79{Z^n!%|H7PidKdap5vL80IaspMas>0F^rgTJn-7Mew_)Fuf6r;b z;h@CiOL#xnn~?kX3y1)(XyQRcIbh4n+|#niWpL(y7l#HcBlXJq8DEa)Ejga!pHNb*_l4tpoM!BW861m|G62o~>t z_6Fo3?&5W?Q8U@P;9?Yn#U3d^pQTBT&V^(d`|ER{!MbbOLFfnd9cDhPNAU@o3|Gj) z_iRMK#I@`Ekr6`9qHbi705ftn>NXANUsNurCe$5*?6;lOoP*A>d}HK8-x$Lodtm3a z&fR!;g9@>>5K$n%xF{IGkY#!vL;XdIKT-<*+Pb;cT7IJ8hWa~%R1-$$LlfN~kc-$(*#c}t{#E)I zSdF~B6AYxHDpyMY6nfW!CBP5#N%xcFF_=s3(}+HVbGClMH$t0CNw`bUlIIex6X+%9 z3AYH89caQ=0xzM1IG-S%UrOW?aPB#Ph#+q3!b_P$mAmnD#v7>*9!LKLoWhgne#Jt( zfwn1gKmIIL8Gjc4oANo(PDrFs-A55Okgl|r;C71dS9sx4MN#5jT&jRbq~iAQP8K0? z0C(~Bd|VIvMBFdjCzf#DZ~SD|h~Yhi5Hho68#YHb#_|!Ht+t5l*lcA00gf$|X$sL; znPkN_Huk(IAZ{IQlmI?2A2(J28cx6`kasu3F?w5)D<$i!fx<3~$~c5)V{AHRfe~{> z4bK?F`YL)?IkBr`$LGGn21#cQPr~8J(M@MDUJXX`4$PREd`q1f&F11W`~>N|97Sqyz+Mw!6E#ciChYmTnMKz&PU!%=7Hl zv-RwbQ}5^f*tZd-h*4QUmJjWtxskbjPe3clon3}p8Tm!~ns@_cZVPSxbnGE)>x*BKH>5uFGMr&%SgL~i3G_6Q6Awc-`Q`K8(N#Y((L;u$ z>#X2|pxD$ZaORJQRQv=!fFR`wc)3+%?sM*;jU`+%H)CZxH->Z1_bAuM`Eh^XAX$LU zHvS>yb)%8@he9Ic^4#SC_)0ENI$Vk5T#{60K{*{GES}N$9;nx&H{Aw z@GhGe20izSfgxaXBXlJ=B!{JqtdOx^t0OYI*#adgCWW1%$eFj3T`0f#XOG*+dXdB$Xs13 zr+j-PZ!4SD{}dC)>gu+Y(O53+FV|mY4zyBMoMsj_k$oDNKh;egR}JmDdEhMN1#K`i zkoiJQhFw6MQaK4pXe0qdtbs zWV)$BaFOsYie9|imc#Nw{O9z1SqkB5k5PN0=7V@RrKY7d5#MuYwM!eSP{;;91t=bw+Bml%Y8c zSuSx?y(-))x~NP|feSClUq_r2E|h1wX9#;`lgE{*RsOP(BN57qtq~Nm8)rO(T~!sVZ@~p@dQ~@!pOILj zU4(zK=)49`pt!`;y~n>9A4_Sp_>-@)@uuArR}9?%r({-^>vAc&P4QX?@YtY^o-j^=HB&)ppje3vVg! zvbvnlsWq%_y8@VYNIIEE4MpNzs2w^V(OCHo?Ns5djhEEk!Wr@PN}GVPkf=B)NO0~` z&Eea#gFN4ORGY?h*OSyIQ4{LoRIAIKG`@=68zWVb^78l~MWYO|FhD*mD|MDC4v5v` zN_N!fQU8%))}1kZLUOcX!-X=6x?Hy_t3ip^zK&~?-_@L6a7K1TbHo`ew@RRPm2WV$ z?q>w(a+=p70a}Mf?bZ*f)0Wp+K8hRW3vt2njiwt5pt2a_T<7(&UWvT|$R-%#`wr6& z)xGP!flzDA9i3Y_s)AN^<_^V{=1s9@WJhi97x+pC>iwO)rJp6y-T$fa6lJ!f)dZw;*cG5HiIt60HLqd;YRek4n8Ta1EHWl1 z&D-q31TU8w7c$HIn+$knp<};6%G8c4c6DozC=L6nX}*wDv$G*i&{xn{Pv*Z))f>O? zOO|^XocR;|i}gu-H^;rY+uXC`igl%By{ZfgvSlefYr?G+@{&?&j~(x7X9_0Tm0Po$?L6jCqgTVOYKFz#0?*%MT5OI<$=2(P?NRP^3S))eQ7ux( zbbPD<2&ULO6=$3Fc9mf04I}N(s>AEsTbJd1G4?gJrA*ZSWDASDs{PtP^D}9#=$#zz zsbl{gi?Cz+K_C_Jw3oi+aZ+(h@dhBX5AYc>3&E2Sf zRq@d8$QkQ@jPBMJt5^y+-m(yu~$)i?=~Ms zDdq?j@5J8vFN^`ZO74HhzXM|S z6!OEjOzt?t6K)u3g>&D=W16bD%EhY2Wn8Go)rODU{S%*?W7&U=E8PA5S#k+zK{sB8 zDIRFQCoSAi)>!9{TF`_+C zvvz|=bD!!~+=WK7^2Oo^YpiOj$2E&iQRGlyfN+xRs%nv=e`!t;_%k5w%^x}HkCFU zkE1p$w7v~}TEDMe>v7inMs>`gS104p#ua4Qeuvr}rN8Z24VsyKZ$uA9tqt5U8FDmg z(YD9XcY(eG39#mw{)6ezdjLS=BW zRQHGo{m$OK#|XgyfJICTu&d5J7#g&+Vx*QfFI%|1l=>v;%>a>lD=MtljruB3+x3R} z$r;#vmwE*Ns0T5d?258`DVJHgd^nJEExTZ7HfMd(j{Z>gC$OV^nIgp{puI@)1OPDJ{!jfh z^43&T>b||f@Gv`hph%yer0L1jIY!>^7^@o&w6ty2o^nZSE0TQuq0;|Vpf4jz+tbp( z?Xwy)vN!ebw9=CF-Sw8B$R{1s>k)y2t#!r#mx5NVbOr!m82VS8&W6EjlXpErM1b&Z z=aE++D%Bt8Dp(zLCgwImUY(EIh@x+R;af4;OZy02*h@c+k(OeIPnLjRpz}rxp^q@Y zRyceZOH?)@fj9yA9(oGiP?dnu6WZ2SV80OSBL;CdNcl4!5^%%^$3?*7wDMs!_y(<{ z`403XtxORNH__-MHL`%#UFnMYn|5nm5e7-0wB#r@ls;*OKkfyMJGQ6ht}uJYuOKHu zc9R!mI=@_IhQ8qmiHqQ;x#!ETBW2tr8F}c*9C`Q?w2A$6IsseH8a?V!ovMl2zOa_2 z%4_6;5p8)6ToN(>XG!1`i8{A(NnZ`l1D;9=<5f5cYoIq%vaN42aif^5>wq2-R z-Dp*_nb<7DcuW7X8Zz#NBa_W58pXP6iH^QzOOQsE=+yt^;A?161 z`98p}{4)BeeyIA>cC9d|_HKU`#vOF63tLhO`L!(}MGA{SW&kQ4=!7l~-h{e!v7-v!v{I8N?@?zwRlw684dQYeWNDQz+z1G}!Ki zh*I8(PBU_d7pY&0ddAgrE@Qkn-w`D2Mh>ee1V`e`Oyc7a?8XIZ{0KXIiZhANS~}Vf zJF8sS5rSAIKUB9LNt0!>VW?5bZFnmBqnKAX7aJwYS<{IN6UK(z!X*pHlXnoSxv&uu zRBtl3y@UO2fNPbAOkE&rEmEzy28%#lRSj%jh?%1pS$!8fOYRzyfcZ;SFd0a=#qAj8 zKv4Q6|7Fc_-bQ<_o8oU0w;$M*Kuh( zPl9jv8(I^f8@eBhDf^M{MF2 z?JNLS?wa2+3OT-GL>&nIKJbZt6uzV<0el8QX@8UNj6Bi;O!PqYH~kbehMH}XPC7w+ z#EsvEqWxXnYs;kj0DY7{)APWaX?nT^3Iu(pzlPW3B{K?;xd}frE~1_11DHLS;0Yhu zK-`3ZT*_I5tuc}sf|@12O{JhgR6O+}rVIF%whDVMH4KBS8zwe=5jCfQTAk339PQ`S?0DS+Dh6bprrQ%m)wJdZ5CxLKZEp`e`$Y&f?V?J)xBlsOqX}A{md#lJ88W;rx+Kz`~ZiJkMTOjMdEA! zIUOjwY*O}B!bNp0TSSzyOWCocP?Rg%fpnns0P7Yxe_aggGWq`U$*i}Ojb71gGiC8V zim|G(mgUI`QbjUvvI1D{%np_Vau$=!yj60YSN(HZ7cMz-*8_R)YdWy91PE%`JB zwZjI55~*Y>rbtXhn~$d|sa)fsWxiCn;j^b7<*@3TUD2t`fkxR%YGp5i`jzV6c@=Vt za=$IE@H^#Pvrnog$Iq{0?;> zzepT}nVzH;X|ai6w?%Z^yjhhJI=1)!DSKGER9c2l<9kao2{Q>E;&j5{nhT<8A}WtA zY$VNHb6Gfxv@0w_@Ph0+%R$5>na96SvsgSz|BE+WG{l&Xdm}u^SYG|7;4ULJw@VPt zNLv%m?_%UHKFKFA@?3WbYz%wiP)CS12u^XGg}H*w*slU8|4`L?zJ~9U^PYE=$6jsW zmGEXP-oo?a?sp~f9&-iu?!jhZta2YGPq0oggk8%omlLZ3czjt%&V24E$*aUS+++zL z^c?4#xWUzz3ly!g_W?QumByWHGoNH|$MAV#-O5TJw@aJ43C?+=mL%qLYE(&~NcLYU zpPwIa=E*$m%8$RdX&-wU?`oqS{e*kR>Q!-y^Uf^IzQ~C-7ANdt59!}6dc|I)PyKm_ z{j=2mQmoj=PwD>1GVp3TH>0b#m2D{%iJZ!2|Lj7xq0yL7z;&X4<_o}GqDJ%CW*_ezV z$6hDB(28(vkaOy*`06cG)h5Ec^)nRj2^Us|%fAqDK{MqSh3 z{I32=+W(3a3lPzgFDTz5?!*$7(7I z1=3E{k#wjeQwfT86DKK*feoS|#ZjlDA|GLfy$>*`ykz|iPf#RTCIeT=45pWblO!Ju zr_%luYxQ$iC`B?IG%!l|q;9s;u+T-AU{}S;>UJJ}j{LXQEwv|Q?oDHx)e>Oik~E&^ zqcvwmobZ7K74Sm1($L_f6Qm05y)TNYxvdg~m}LvD)|K~IU)0)i{OTWpBuRzld62A# zyT0ZDSK`-#?1^JNawV8VD6`Yd8hHTOMU$!q;rtWiCbNk|r2g$a4`b zhIOb5-nE7^=&6(Z^e$-oYdaa**o-NJy|5->{mZQ8ci4xU{EcUEy=yr7H+WD)vThLn z-Ft<8GXAegIocz{%yC6J+~7j-fi0`wL#fz$+C-vQvT24w%8k{}bZn~6lJj+O)Qw&r z>wwgylW^(-v<-IUW!cYu2^E|I;u8JDvO8;|K{vBOq_>Y`YmmQ-tAvTk_o)Vyb1 znWRvDV_C-)QBc2Id>it`gcZk>Y7G%0{Ki$fX~Mq5yV?NZ)FqzkU4lU`rP?Z-GpSQS z;0D{(&*q!z%Mg~aL3Oxvw!Tm)$l6^Osz^_SYgWs%!VjxX$liGgR5h~JNn`Sb+*o_} zV7ocR^c1q*IK{{OK-dy`mAwW%+ znnNKI4RRZ`M5+sED9Q5HoU$Y*oKqdH_Y4nFt~b5%nyNUhNu6{>n!`;USBNQnD=V~> z4&9|yn*3EABQ@MKa9b>Jb4+H759njaie`6+m+PWdCb;8AYCDgp99M8|uM0S_Vt1Dp zM49)kJr#NWwf{}o-WiU})^X&qo@=dzowGDB1DH3l;$ zMK87d&UhDWtw%B5xN0l{#ytQ)^Z4If3H_yAD0owLwWUo!%nh=Q@$aYb8>aKKS6r#@ z;XMdOniudcx@zhjct7&8`sjbEx@|;3FH<+4lMm$FZhRygN?B!{C*89`VBRbB3XU}e zN!PiynL5Qkvb^g0e`5V^TCv*nPQ5+oiLpYx*Og=J zlW~8jkbf2ARcn*=URgm?tEDr?)L=A!OukazY${k0X>vE73HoY)=pVUu8@gl-fayvJ z%W+&)Y#*hSi}T;@q*dl*G!3b$J>n_`4%HkA+tVil26=1xl7XX+CH<{HC;*@>#Mu9P zP!Tbr242q}+p!TmF+(#r8xj+T?4J&;4SUej2&?vf)#C))?fANP8tljVYTSv4aaI23 z@N~qpeB#i4q$Z%6gkHrJ5e z(lejCD7L=iHRoU$vMrs%^$BWq;nP-x373_ zthD`(*fFfMb*X6BC$#yN*w3k^d7VJ?Lq-0lu5R0`NzEJTJ*j4-8@tj~gjjytXQeo7 zeajkUjgLpuGsRvfT9dEP9RQG7{!<4BZklX)dwLfee@SoYR2$f_!nP^_0ORRHRYlJ_mN6?kL(+kB=Pu^TdH%t*HaTLAffNp#Hg{>Oxo;p-Tn0hCBX;rgw7#>#ZAiq!; z2a1;YB+Uiilh_tK05imcQx9Su@DoN#ipjRBwo|1A)&?!4?7ew6YiT9Qa0?b+eM`4= zGXywSb6^b`v`00tpd93`JTaAqE#kWjD~gysGutMYRCdrbmaX4g_A$#U2sTG3qUw>w zRM1zu*rZ&233%KP67sC}t}b9|GIo^r=de@Zg`K^vj4e9{6EzN7lY843yUPbV{UK+n zd|Dj}d~3>WjMbU7uNr(q5H-h4Wm7$H4!l#_qY=-_(wa@Ejg?E)GtnK@PZ%J~2Otr$ z1D6PXp8o{ThGi!1CA1=l!4rwa$gh)@QKz9@2Y-bv2KO{k;b)*S6#$tH&!$6Bzaahw zAHw*d8uMpjNtk5`pKvy;IcPK98Ao!sL&o5bZ(9o9iGA028p^=kR#4%7_)+QyL?1y0 zqM#y(<+;z%O{DPn@0jDH8}o&jhvZ-f6Zt76wO<3|Fnk+=!L^Jq*)^y?Bb=gxjWHGi zV-R3QM9x*@3r1|bH`<*M7kCbJhvDL|g_6q%?Q^MV6s1|V1C2td6b1$hc9X-Qe*8PN zvtVcWvo~Evz<9v8^+*kOEHDB&g`4XTOzC5DdM;IaXz2Bt+Sn0S#I&Hl4Hu;N+!bJMA+?=4S6yqc@FPC@~& z(OOwm4u+U3HnN~@hO?^>Fn|3V|KpHut!m;36~eyM)mM=+=xa)?%In)Ad|VUIm5Cp$ zz0sCZc?8tl)SC4LvaVrx=s0kN~&?V z4zgSAUlp&&=fS|NDU^EXNQ{(P3*SHQBrO(k{+|kfDQ_j=$RN3{7@r4G@Fx(0U|_72 z@BtB0{(^WCc`-A9)PjaZA0pRc#^x;`U%_trM-eBttiZTqvg;;deX$7cecVhO4g))-U#vnn#=Po z-GQm&s@COW8@cYwX}C;IpEm@{=OD)`TVpnCKv|&jgTGWHFh3z@$vz@ZqZUi8CBL9k zB>5R~%m(p_sOy+FqAIVK=#!%L_G}J^vP`p-aj;{CG^QK;g)R~P3OQXHvgHLTTpg8u z10AgtMHQisD9~OiRH@wl3S&JC(Knx0NTBy@n;C`h$yPOdIl{-hcgqT7k})(r0+plp zj693Fp!4-wg4u1j#Aqz$2iW9+y|iro7iI6E0%)&ShfXK!l{&1)`WA8 zNE9B?*u@mu1PCkh56cf#LKeXsw|qJ4j`4O< zBkM0?)szgDNbf#5SaI~Pj3Q5G%lDs~AT*KV>gqW^~{Z3Csm9Ly(^F ztWz@2HG;fa#!yi)F-sCuC|p+TUe#0l?m#ciXZ*_l zs<`KM6{=L!Mq#FM5VM2yM45zZ2h$a&2(Z#U3LR;}VzWX(HpgZwZc@wvmsADh*Q4uI zuLUW*$yI_d`5UeP|3+?0LC@XNX^+sgP5vt9OPHzm$yy?C{RRE!q$B?Xyl#X?C^^fj?bGBKc1{8{|aP4pPCx3-L%Cc3OS zj~^rI&_p#I6oJ&WMMhD&sx{-2C{g7bT_KvSyb=%~;wjvTaphLwE88RvS9sFug@VT#7-Rz(WK+Ap#n2tK;gdKNXj;qUF- zTJQ^B-M(QFi;s8RniI|UZ;kTT@xdDR4j{_4z6YYHzgn!2=?JWu3R_*X$0SF3=kGTj zLT99g8)?`X;pa@XxT#*HCKqnh2N0YP^34yCYpL<3E$CkOHlqtGt_d{^;&b!U^w$XY z7VOXqN%`R>Lk#Jb7f%0%^n8@EZwNLSFA>jDG7X2xQLx|idnvH$Qr#J=(J0G(ZkNWkCIg z^I+z6%?i#_FM-;|J>d2M9_b22<47EBy(kYFs=h%h{t8D5&#aD&8t0W|9=|6(j zw`#09-g%v{TUG7Y3I-}0T4KsyD{5?lsbtZuJHw>X&GuJbLg^HRn=7fCJ1#eG zL%wjm1?MzmwLzfY7L_{xf`42*-tjBSJN}MCi0%$aZdIa>ekG{@>}UoHw*Rj;E`%|h3^>fOc*ZQzv?4H3?*i)gy7j=}o^L_FvT zLhAfJ_I-z({+0Dwh;A1Pv3>9)Jf>lFzX|c8#NJCpZOJBd^D(va&vkym9*B6=c@d}c zFYEq*{R9B$KhjRRRSEqMam)t)-VyvrNoaQq;l;9do$aKV^Ti#L$kQXvwEsYM_zOD; zWG?_f$7lEdt%7&;c~jTdENwR!hx|?Lp^O>; zKs$wh&#emVA#tA9-R`R5))(FA$l`8Xde^m#`()m?t;4*Sh?3SM-h6*kn+Go*08pP5 zcmAz{S-KM?wRP0a5DB!1>3SzwwN%jhN-}+3jk8qzA!3fBU;NJB;hZU%1OTYM{f96f*-Fvjiz{>TYUiY^>nT7Wo>h-d^XuIn3BQ`ept)$Gs9Zkw+k1o zS%g0oGi_)Cp*>{$YC1tMHe=uwk@K~NXx{a|Rdt&-tRZI>-&_|>{#*2sq4oo`kHBfeXYiFk$XO+u5#Tc);GnvwKA4&`PiW^tjDRkfz|8< z(R=z{vxyS@oZDZkvGkv6)P5P>D2ysDUlT7Z%)U6-B`i$^^`{G$McaBA z!UZ8SdRv7dW50Ah6Ma2F$wB{9?OEHaNGgt7Jy{Wwy?cNuKbpF{Z;YG}&FD#$uM7$6 zNs_C_E$x^k`?_ATjsH_A*PPSm76%Qb=ssny>zC`$sVP05wWp(j-LtgEgTHi7(x#0o zajlns{f^5*{-=ViNwtZJ{Rerr$m}(Jd#p97$vsh)!Dw{XT#G9ty7P_kw{f^OihLLV zkV^hh?TCg}HEbLB3_lC>w56fuLej-53>99Czk%yPt*DD7Y{Jf29#4YdPsjXD`jvRy zYd2$nba;C_@Du{tPldFjHdrpe(=hi%MaWI~iMTzO0Ag(IOk6fOIeQ`gFRE9}G{R&W z$P3O~NMF9Sv~erh05d?$zoT~@a66^YTmq3(4T4|b(X>-o5^@70p!y^FGc$MDQtWrE z+UN=_l0DvQDsu-XaxN@}TaTi&$1??O6*Kp)7yH?bnk~0lso9@cqaBqMP%ebgJP=m~;@+ZV3>E&at`=~ zV`f$-RA;Y^GJy%!C*z{o#d7}e4`po|nJ!yZ>Ts`yQ%e}y&Ehst`rg5}G=sWbvMevG6qM)oLkH1829UqKA;bsrF&pG4q*8coq&0lMr(V!qV-e z7bI~8gR+#8AJIe^LoN157J1N*4&H!ih$e>^afKYHOh+t=NED z$AhP@$KU6jp7{aS#k&poB&rsm`ql!)QlSk336%n6Nicyln(`SjBDn*4h`KEqENaDE zkg(Gp;yfiqGw~RPBn%vQ?^kD(W; z2GVjd^~!f)f1uVYe+66-Sta%!aKn2C!;;dx*M3qm9lX@~k?aNSu*?Qdg5NQb3xkl? z46ha*K;6^d4l^Sc=na6AqO}rTcUS#)Jy0{fNz?gO+yDw_Zz2^!2(1U28(||3XaNSX z+m2nBj@)KT56eW1wWI-l5bcr3y2I)&52u+PHx8}#7aamd^{*jr1M_=Io6bOg?5tn) z8h)_dJM|EvzwO>PC*T2g4q!xdOd{w=qim~xYq&@~*$fe)X)nMQ!d}J9lgjS;y^VTy;{7Ovj7VcuRy=Uy%%TH9wBJNiFp~sr{dUo z(@EXpnNurCUZUsjZaW|TSYuNaBX4TPv!l_g)wQU%*eaEw<`>*k<;h$zp;VbLS3`K9 zI1uuPKvR70W^*$PW}B=;B2bpgtQDvi87_cAB_=t$>Q6R1$f9dS3x{T(vPhI{4=1N;tawK+ID7ylU=l(1NE7~3@QhNv718C@@5VYPPGa_ku26SjN3w006+ut`u(b_qjB zew1Nh9cY9)B;=I>Y2Cv1#X7oBxF_~H{fO|;gg)jRVYi#jwS+bT_ukgNcy7m z2Og#PDr6;Ms<-@0)?MmVxhuAb`bCbM&`9r-eQ>k+HhiLK506RU8gCGm6FUuufMZDO z_15Ae2--*wuP2 zGoJ)@Zi)#e`8tq+YbaK&+Xs+dlIrV$%z9~kQ!Dz2v=P)-|3oT;vRC~e9YM@U_mst; zsF7#oVd!^04-|vwo1?A>U2;OS6LN=v5gmtvQ5Qr{kvrurJdn;^X+; zk!Xp6aLnhX^buh+^&#{U?-2xGf%FVPEj|wUv!Io5xh_<2jf7g6B1|G*UbtWAqz28p zFPcW(>2p}DqIS56zKy$@dYl%>3!uG4IC&VxxY}gicZ|0yn)ngS^9!f))hx{{2LA%< zjL$Y9h3)5_=9aLvyduhbjvwzD+`!@T3u+QMzw%xA-*T7nZ>Q?H!-5&JLb=}yB7D~I z`vh*MLSSZIlHH&rvhcE-u%B7CWgDx(>=m-+ynE~ovWW{`a>ht+M)a`nN-z4zdEwG# zH_@M9Q1v)6iaAkt1Ln`v>LykVF<)q7^HN#$8sLIvRL?J6nGr@<(xvZ>ltLD=y z?axW4=pSvjpmYY^Dy|A*T(peM9bjgdPNtk-@=OWg*BG}<0X}f{Ddl=M(eI~mIt8RU zdQAH#$SZn>YhtCH{<1YNcOj#|Ax&X0c#g^8Qun>!zTmjk+RWM!jYR_yK0S+6Aj> zdZic*_~uk-N6-wmTBhUz8jOMCg4Y(d9j?1Q(Dmv&>NIXvD=&c z6p!$zk|;$V;r)_#3JwX8%OX|KC87qvo%!XeQ&Nb8O@`V5sx?r7PhjDS{Yk|N3i60bH z7#2^p@W0hJjp-5Mq(|ID|4C5QRs_chAgwvI=LLz50|i<9Us@tFTlq%&_EimUD>m6`nh)nySRG*4LaucVbjxg-wI5zHp{&IK zkNHYczSz;XQgi_mW{U!?1%_LvKt5IYT4uo)<(@QGAWIicHJwC<&t7W&2GcYFYbBz; zuCFSRyG4~te4E&N*qrpmWMBOnQB$6h8OftfwuXF>V zyC-N+A|sW!w+UqECVeS`>5oz3bCCLR)Wr*)=p?j=D6+1N)-@qrf0`Efl{ohPlNLj6 z)(e@%jZWQOR&Z&D_66(U@@{Q1yLajvs}ASCT~^9m1zNi$GEL#7^9Z~r?^VD2mr9`8+7ep7Q8mjhC_bSqu~jX*tthj4&A%(B zTS$>(WKS*efmdZfo!|efns0T#sJU60)74Plv*PZBvl`)5~3xkl%XU zY`c!U`?c~DY3@0xCUCnFkz4-SH3RuqeoyN@bbrP;rve)t|JZRDS35o0smAT_p6ckt z{r2_xR<=7;)wr`Q8{b&I$oYWKop;vJN<6g)*8(NojmO!0$Xi3Nw=5u^@=msGr9_SP zu#j$*zq6PoEwees(wp+;*>^F%Nk3u}Fm}a{v94z(g|^tfVb1cNZ;5B#7~N-*-R=Rs zWf%9SGB3N3mz%rQmdtacS6CkL4#l-u#`124QY}fmlipdzcl@*eU&H$6cDyvG)M;BP z&B`sdJeEeKJvFyVp2Q`ah9sv#BTU1R-@VHX-$-u#OQo?jYapd_t(lsvoCoIn>L1fA zCY3rZ_L@lC$;yErAa5g@28ghPz@tOkVBP>g7Xcak z-|Ly~ovm!i>MH27{G>rA+?2Vz|99lHsjsJi00{rS`vAcjc%*k3Ar=5=W0OaHZ{ZiWs;J+O zOwCK^#ZyW%7IYt`PD)DXDy9yG8#;%mZvwyXxt?jX z`TwfnQ;mtEcqS5wyi6u| z{>1I1qKB?kp2QfPD{E_Tbmhl}HH2b@qxlHw8(0eXJMzuaoiGs9l5r0)jUGH}D{Lzx z)N>>EI14uLzO0INy@gj5LH|{;xVDdRfgaxQg838VHgF2-yAl`p40~;c2UNh}%o-0F z%X#nV;J)O&?oTPs7KYhwm9G-!$@W+MCB#rS*Aay(@Q;n#h3ksDfg0iEMVa7PB990j z@R%sfQ_7nny4ky>U{Kv))t6jXZIN0lb}PS7x@t<5rJzIg!;0ae%S~Fv%=9*3fP8y| zN7JA3UQY^do-CnhVbv0sJPob%vV7Zyr(XiXR zCA_8~+jP;hme(xH>AI5#9#WYnta{#GAg(F#?FlAzl%MJhY5u*s%0(+&ShuWoRa$mE z))_JLbA6uei)RTBFI(KDhDBFNOoIqyUA^cH%F*OS%EasfX_}$9!_fN$6@+2r)YR=H zFZ9zHmxwa#=((5pyyHjEL?FWmf^3B#gulXL;0uX4ND=aWlLEa9!(L^>?!^6;Iu-9p z^q7Ihm5@f~VQJ^v{Tdt54f<|iE*2#y1HZ;M<4?jw#Knz^5qHSGE7_=zl)VcQFiEuJ z>3h&t+Ue2kfxNA<_7gQ)`$uCW4b0mF^rWkC9Pmy?SA!2MpSflQ6G3GSra+NOHfwqU zGK)Rh8R0vfBh}-0Pc+OrARo*vXvFdNVP^uD3dYxu0Y4Vh=9^%#g2DM4;WGsHLbt&4 z1f#o$c(MagAye#7FRt-WAUFy2^W`5f!A*1IvO0g@UHRm^i;&r}-SekI{**~WS3!ql z?#a8BiZYCeu3A>*WdyTxYs(A?=w%I!x|g*%%?a8Ic?lqr=Kj24@Dxquw7(!F8uwSv zE-e{po37+n5S@7}P4(fH0+hAxs;#o7t8tgbo@;3SU{0Es2;`Uq({_V13{Ty>{AV${ zuT}B1JiTWu^KF&AGY{omyWZuhnbV+YEyzu5I^r)TF5?y9dE-gs43Y(uUOkZ#1?4Q?Ky5=vl9;q1v~SQ^`VsUf(NljjA4eW)-Y=^{ ze-GY8--+#mX%U`yGBUj?lo*5lKKn9h6K;CqQL>FNCJ0J-K&Tw0Y=@}`7LSUMTu0C_ z1vE3tfUAQGIbm2tRQ($wq_{O{z$i5Y|;YH-kG5|BD!bl=`?*adn>CW)({7|JEe zXZU*B9B3c%2)(}iGx`vNvup+y&XgojvA?tOC))@sS)+Mu(Mo-Ovp;7<_!6{(izRP_ zMsWXvK;R8LX8A-Ufp>rDO7v8IMf@2whTkm!Elr$sAM;k~&fIE4>s-uM zfTWrDi<_XQjMO+Xlw>TJBtxy!xzn@iE7g0tT)cI4`#O3EvPQJ476@uS*XmP}5B79~ zWPN~`?dRis!O!fNNwbm9^zN>iavs%ImCeD?oVBlTL-g&9oTeehW#F+Q5c4hMK}IV( z5dPg97yCW(lHVTQkEqf4W#&QoQR2DgKz2HL9@rBrr6{1M8i%MqBj|-Px)jPpD`=x+6TU2pqJl`> zvt`u1K%k^>dRI8h@0q<=|a*;M#Ai= zq}z-Wex-B}W4n8rdk=!flF(P7=xjLh8fGacvJQg1&iP^GX?!EMI&F}^;hv8o5;Azf ze&eYfJolMR)C&s}H_*}%8RB-tHPj68####cjCf$hpV(?~TbdUREN+W@i#;wL7=M#8 zP3(5DgnJ>enrJEr)~G&?n1Co&r`Bvj1*lXjmY~~|zb~X<>`GbWAbL=#8-IdyTH#)0 z;dqeMa_>KEdj(X}f7Cu8q7o{hsDy%qNQWTZ-Gc#xjg55&8|&`TEhUNpiY+#ZiQR=F z7Iuq>V!!_8-t*V<{&&9HIs2aboNf1Wckg{}Q2SulYd#^6@XOWxKvQI66(N2V+P*R? z;5x>*V!fjm>Q==I<37?$l`c!+S3vSx>#2Uw4K0h{cS_bbr{u~J$i|X*H{_H0n*nUp zK)sE_86>PO;3vtD3(u>8nep^MpR$K|+aYc-iF_<V= zsE~+UY$zAMKx+L4XA!H92`fq>Ot6*|dqZckKEU2({bKJ!D54uV0@PC<1~(D&(pJrz ziXAg-7rNoJJt_VXrhsmSSb^Wputr^nd@q}U8PEJ)_7e9hYCrQZVW0OPOF&v?JDYWm zbknedH%Q*E^`h^};;2&z_i=Pu2uT1wP?|~pnK_#tPlZK}GQ4PQ-VTiWrOh_oj02^k zhO0O`7`kl&h9xPV5rj=8Z!ZfeT0^dTqxRCmou)X|Z_!446xsk^R@xJE30(ZhE&3VICc8JVYhnj_03 zV3PDB$RqKbEEpWV{HCl6s_%MR&Mxt=_^9kJY5L8iLQq?^=QV}UERq*yz-mQDAr84{ z@ige=#MxpXJZE{Vct5h%l_4RZ<1B`x-_X$CY;*=*>up4VcsV}@z8Fg3pF^S zeu9^v7E2DQ5KQ7-U0w>y2^fn;k%kcYpFBl3&4MFw(74Is46Y%e3y{rKkUZm4xu3}` zfroim%0-tn-W_U}MKHgHn)IJMKHwpv6?dork1g}@GLdco_iy1_MI9*?TC`L+WsHX;C=>4h+r&78`)oz~3z$=gbjY73h=hi6; z2WU%bUuL|bJ*c@8V_BM7-4|d|Dy%ke@-B6#4m3BXN0z_;8wKmGq-3|`O{;j5JCeex z*qHw#yrZJ2@Ui!TiXjNfetMN#@z)vRYCP2KKY5&XOF~G6)@T3)KY{KV^P>LbUiH0V zVAzEE1ni(!m-;RIq}>_K7sTX@b>$lnT3aH!{rRloRmx}>BG*&t3vWppQd%Rog?TFt z(al~{l}=bUJGgQJ`(wshRW|n3fAVx)Ed{b&hQ*x8@sqJ|+{7C)8o?|SBf}H9ofDDNRm6q^PVoOtmR7mEOQap}GT|512~c_LdaGG-|f!bJ<&w!wEr*6eDJ#Ud;AsI9YT343ftp=cMU z^=};(h4J4D!?T72nZo+`Rslu0D>zYr6z+9z|9$6x%@u)@@WhNN!Bvs}->AaPJdWaA z7K8UiaWOuDZ=+xb8}Y{EKinz2J@Vr=RlGul%?tn^EW7^?DwLa2Ma-JY9jbDVyUqPo zNm|~+y--o_?#eBzNV0)*ZddrtNaHP4CjX7fUEe&C6`oSrG?oL5)HG%0rTDuv85DeV zy41ufnrrc{1yHm>U)s1HQl-tVb(M;o&W0cPk;w-e;y@1~2J3sk5I=Q&TyeV-rd|!p zw7Avy4A!cDz0Me}wF;V!F9XiinHEPTjnr~rml0H^Pd$1l&1!sYIdo%%O=uo zN@htlo9N<%Rt<&$4!x@WQD)}-Qe9bAxxf>Hq zRr`3Jp#`d3UYWO8d4spY(NNjI>o(t@e8Q_Rpvt9!{C`j|B|>r{UabU3-iO>$e3A@# zn<}W19*1^?xuo0NTQN^^+@M5eE-CvPl`*LZ(D=s}DiSnNA^YXy>OK z^#b$9GCP%%!H{H^wmV>A~m#CIRbj7^HmNyuq>Ef0&%Acok8Ea^TM50rGT^dC3Pb1ssbqO5OyWhWWHi3~Rx!vfBdlBQo_X z1W3xIw&CQ>@QBLL^drdq{CC+M7)N3`FdD}zT2!!sFpyMLR8D#x&;}l-4BO3wq|lu7 z+XShM(U#}&VMJs(A-RwAh3A)kouVcz%-&Bk0}TW7N)?I1f(-h5|I;8vS%9smaF}VN z-z^B_RID(L4rH>`=Ms!r%Q*un9M%NxP(}^Ax8N24%qdRj0Ajhb{jKxR+&)|5f@{2` z`a1+p0(BE6e4|*XBE(!56WQ&F6=E>}5&^8w~KQ zvR?m~V7kPoeqy;%W26EVex#ns{1Wq~_5_BU*iy4BZ+~ik)y=q(jO&$qe2-_&tF*E4 z&D~aUPX9Fjha{lhKXBH{UGjm@5AD;KwCI=?CB`seMssQ&F(tAQ5w|`aRR73VlU`h( zwcvBkrJDEp7x)vB&fR`6~10~2WkZ-Z!80(T6?@VkI za>v|WTp3zh*&|)8;{aRpTV*#2`U`)Sc^2&{PC=-cuk4f>`kA&d% z&dor>@Wa}w$o87Htj8tEQiEI)Vu;?FzaO22G$_1;-IkLFS&#n^jew4kW_w?k~VTj?`TONcRJ-kjwn z`xtbs-)2_YCT(RXg@b8#%6QcJtSwAL2`txx6_y>44`!Q1HiG)u*F9*U100^!4d^qD zHZBXt%Xh>l32g-OpU68Rnqj3XMv8P> z5*l?(k*bp~Of*uNkyoU~DM`@IOnb$J%tnAv5gSpEdtH9ty*)Qge!>a}StHkVrPW=L z?`wbYcE+8p*+Lpk_Nh*R>ZiL@j%QBEYO1&#ehx5F{>9xBkXU}wYANKEM%RZ`{faPe zv*+2ynzqa(l;2~tj;v9j}Mn-$Jf~{eVDbS&eHOJF|H~~_gQu&uQN=! z$C1+jcElZMmpp4oJ2n{fIz12X1*r>NM;L~^bNxVUL2R7aKz)V8YUAuKr7QSLz6~b{ zT2aU%AWD8h_JDcFY}mCl5V{m`Jmfsq4PE9MgH>T0XU3AvvD(@)6Dubdz+nljT}4Ik z`*_b{TNI)Q3|osCOvS;UJ*fY$8IA3;%j%B|}ci{EV#aR#e*66_8L_Q_| zetsT*cM=cuiT@>NXHl&n*6CB>d4a|ZfaCvfjxBtck}ls>TAdLlXQPU;&&ucL&&!>Z zZBIOszg`9knh$c3xjA(g)XCz^!f;(OOC8EGaiVHH?P{8F<#A+h=AMe3c`U$Wc}Jov zuvfD$P@ZqBad!&JJEnn~Ipa>NbbVNXG+|LQhL)6))A#|oFvGkd5ICM)RL4y?kZV$F z9q0?ptjS({ADC5xG<}E?RyN!;)%5Fw6c9KS10Iyqa4=E&$2mPEziIzxmhD z++mgruhTZegQxkk_8?|!Wnzq{Eo8jJXs5V2TR3*Gc&Izc8s1%U29}H*MrHtl(8K6$F=N

    Rq8BGda4&UB_)ubloBCGNRCsFO->UbWinD9zFFo9JBC9v}MTnT-99=9hI*sKD2iB9t1Mrub@ z22hfzi9(ewa#iNY%CbU6mK~F-a^fVZJh%xee_m{6m>@bcMlCWUMHrruEe=U9)(lFY zs}+#eF7r!UF858_tnHI_P}@80Q*H0mhuS`=uM|G1tlT%{UoO&IJVJfmNxAEDX)WXo zo&nK*Ka29|nx7*^cCI!u@=TDLKNiXPwoF3)3???;jT4>c!;Q!b=7;4)2|{uc)q`>~ zMgBR38ooKz67TF*sb_YN%p+@~+&$}nVs_Rg;(@|l^-}JxV&(3ctn58!X$>5pJ`Yg# z>H_lKg26K&pq$93d(|8@q!!7LR6GpvC6{S2b4JBli9^L6;+({x{Eoz-?776Dl>M9OC2u)G zb8rXscU>8AVyH5HUgSPz^`cxe48i3yV-&9Y<6MXo4q)0 z%|RTOrbw=HQzFl?DN8V;u~^N%v0i;@<3f>LL%-OzVHfeS*tY(**tYJO*mf@a|74p7 zTvp}##;t0r3Xs7Vq> z*JR7ws%ObvtIHL`t5+*ss<)|}SGTI1R$m}rsGL^4&~aKR={T+ELbsDP*1Vazb&EM4 z$$}-U0kt!z9lx61Yb`LAzI;rb8gJB@z-yBgJT}?Gz1{_*>)qj2?~9T30g)SlAX-(Q2EeURj$ut&xHOr=d8Z8=cRFC`&S4nR?2f_BesE}> zfI-cXuy0Ppz~&qbXr3eVYhEJQHrEQ)yY>iH&8G#+<_`qRo!<$TjlYYQJEXs9TncQY z?n>$|SOes*=Qyb27@!{y*#Y=91Ecl;&h+K>2UY0bYJh&N=CEnCfpyy;ShcypvdtZR z5BZ|cpo6b1E~i%5BRab&UbLA z>rCB&)a`o_Fy&W!+yL}$0rK}mZaV1s|I-7wV*NNYkV8fya%Z6 zf}4NBuj4Zr@VPGVg_fqk2>7o#H>Q@rBRk-+3pdJMz*ENYlyQ8^MerFX{4*B)8H@ew zC^=6qcQKo_&t!kco&+XP+v^hbuTlSPpx3*sJ$3b|E9=zlJcD^i9+R)T&qJOlsi9AU z!kT<<3_NE|Ui1TAIs(6P!~8opNv|dYfAHb+2jlpY6YftY{wIt6XKNR)&m8Fa^@v~% z3HHR5j3J>Uo@9{eq==N^Pb|eNtitbDi(j!3zhDbqq7gr1H-5qa{D@q6cj<4H70A$j-%v+x_{v9(3is>BOa zQ)@l7HsO0TP-`c(TBvoHZJ%PfF5@fQW$7N{OMc_OjQ#;z`r=!b{5>_q@b#IHi7kFNbi|Ja?)X+a7LPTP@K7@aUuZIL zUo#D#XbSP6WGx3x{Up>4r6?NMCSp2cPDZCo&TgtLY} z;f#@lc5<4WGLnS9kgW6|^^rre(jknauMvK+=#6J)1M$dYI6gP_#>d7JaK|_r?-(cH zmPs~lnB?P{NfEA?F2H5e#kgp?0vAlz;G9_<&YCr#!)!O&&D(I=yd5XaZ{S4F2RPE} zxp2rr5?Xsp!ohA1bR*ePpUaChK*X#5D!jB&<0<3#!lDm8v~a*Xy+`3j-vC_c8-@#( z@i=RliVn+Mv|G)Q67Nocd)FC4T!A?&xgEVS6% z6L#BvCpO#uAvX2nGpd^%-ADtdZ_jDXCGO#1E0QIWWPsjv_B$l zw?8K~*uO7s8T3?E@9>+f&OwrI?54JxPW{f;+#U|+66*@QGhD#Up-NnKFhIvpOT6hg z1V^0Q(dra{{mv7y*C`geosxuRr%a*AX_~OZX_mO%ajv+{aiO@?u~OXZxJI_gv0hf^ zxKm#1)GFWLbVk0;>9%~0^J7J|^Dl}j7paR?|3Dhb<&N5)x&ybkyk7R?Uf)f`>ERk2 z8PN*|N7`Yp+Xytf`JmBlJR000gsmgvh0P;VgiRx}#f`4{;s)13*?QOcvbC;@>oajEB$`ra7o`_uE$ zho9gh=a7dk_Ia3~+0z!=y_~Vt%LALd0#NG}Dy;X67S?(uh&7&R;%bjv*(#42@)aJ% z^5yR3ie>K0l}p^$Di^tLQ7v@eqf_pFOt;kIvhD(pFLdX5{zxR0&KJ%2N-iuZ9y;tkZ_1>gg?A@$adf|EsXNoZRLHg z{?N}GD|Mpx7Z17RxXs+pO{DklJbxiOc)yvCyY=JMsGeYsmBIb7EZ7N)gWa((*iR^( zFhQ6%VUk!fK2}yVK1p5}l&P2%G)*}ps8E$3RH`#AaJgzy@`8-~mlm&>2l; z&>d|?(6^e5@vqbw<0bun@;S%A4f_8x)ILn_xhsmEllL1~kJX{NsGMkmC1KWB7&Zi@ zVQ!cg<|7n`1qy`|CyKK|qhvEer^xd|(-hM}a+P@@GgUbu^K`O8mgr@KtkF*o-l|Rw zY0;#FoYp3Xyi1;v-!;i0lA7rM#i!%w{ptTtQvV>gUyZSy=P%r2h69z8lvosDh_Z;j zm=`$+#gQXW80jUPT?Ib2eAquyoCL(s1c2eANZFt=E9^r9cX~ScG(M*b!I#K_{+pKvzwc3(^rWAV4 zWY&Q93%UI&VLY=E)yPjYMP8CMvXcfQGuahs$zDQAQh<<@6f7nrMaU*6#mnOoQxq|Y zIm)QSnK}`P3v|O1D)qw>YSp0$J2fE*N43ETSIHx7NWx1^$P`K4NoY6MSo4$2`vCoS z16fO!rE;&$SY|V(>8ZNNNi#xbT3@84+ao1?7!uPxFeTkjh)*9c#-@jh(dn_W$n+%n zq_iwWSXzN9G;OX%Bz0i2q#xAHMb`Wn z_4Z|QK9VX@kwMRwPJLdpGZje7GC*>+1rl-wU~;Y#;&MkJCf7%Z${i;}|)ip?8Ulcv)AhRXYJ7U%Q~d?&ALP$sC_ekQu}2}`hFSz<1N^R z#PJ33vcQ5=`PlqCg@1mb(l@_CUxXIfA-Ko|6N*P8 zsCWzli-Ux*#bJVfQH2&d9?1I&QO{ z>$uJOQ^#$l^f$*k&%*LKA7*eYl2S5@y4kaUDRbz(Y1KmKDKLIP4+NI>#MrWa2q+r@ zzj9ajmV04Lc>ui2g9WehNWrswis)XJA&x4`myIl&FCS61LO!glUg1)@Pw8BGhJ37a zUhuurdEOsHQaaClO&cxH&O)xsWGN}3?(`yhZ)(TTqD@>#@3|Q8U8;unGGllx?+ef6 zcJQclhI{2GjH>j3TV)_dR!+o-%2;7|Ws2ZZIaP3~EEb1WE)$1TZj?DJ-z^)o{1mw( z8?^M9Y|xTd@(V@~%X5KpGMo3=r9c9;CoQ4(s|3c-vW~7%z;#Uz3}0)G zVQX#RvUU)h*A0W?I(H0RHwHu2jmO~ili;v^3hdWs!EXI5VZizdq5t}Ig6+DUg3Y=U zg7v!Fg3a2ef_2SrqII?OH#_G88)?Col>zg3onFClNbMMEhpcA)YXSFKU>Lo*!xmlG zZ#Bfgt-UZ{t1bF(b3ngs!(hA39X8v1VZChvtQw+V*^rDr4b#xOVLmJxs?f8c0p<;d zVb*XBX4@XaY|BfSZI%S{ZniGsy110{k<4Dkxv-Msuo?)XEgV}%|GNbkz8x6c1oYbl z^x2~ii@k>Exwj|G_u9a0-yoRobAide(J;#8F3_GQZ{RqrXCE{G-qdy7O?~>}eh2Bn>CH`! z2 z7fV_1lFs*Vm~+Bj_5t(tKSKTE)ISN>@+-aG0u0Xs>Pvv~D*ZlF!A%um9B(s@x6QaA z?#saEEc+;YQ?rF8J?rqTgjl-`z~;`9ENTAKoJOx|p~9^?NwU{8I$A z1DNk9>JH||Y^ZB~88Em8=-mXwcc^`bd_X=VA1i=Q^tmb50{4w+PI>`f*l?5FX;wx8 zUvY!{6*mTtxe$NN3I8=a{Tp`jH%#=KQ{+My1uRc0YaYeC$5DIqS>}Hcux7qy)YVc~ z)v5atxz~LT^55?FQ99oX`AT5htjQBK@YDc!W(s`In*3-7{7lpGl5zaP2jj0?41eY1 z|BYkgHx~YP7XA0OE+qZlkW}>i=%f$nJbxHQyvYO-LsGlWA0*78d!L8jQGwsE9KWCn zFR>OsqYgh|D_)?H4u3CxKpVcJ_kTw3|CHYU34{Hbe|d~QiS+-FwDj3}^!$Pef8srC zi6ikK<46Q`6RDX+y?kmFv9(e>$6|bsN@`V8Ydy8w^*{9EZqZq z#!ug8^!M4~y>343Mlvvlq@m|m8bA^m3oOYXGLraGJCymwF}GA|fo#81jWcp@K(|H^#vnJg5a z$YXF{|k<(B^>=1lDV95(Eppscx4=hT0Ga9;<4HW_w^icSKkBgsK?=^Ivm&3 z@wlu>#YIgn&TD4itfmNWX%^s&b`jdOD{xA?1}C+3IHBE+D96Q0*FoD%UWqbd5o!Yof5sHCrTefz(;WX zC@t2z_d<>PKva3SV10Z&BoXoK{ZvxUHP#@r`nt=WoiXo|599JfPN1>UPk79|{DT#{ygV znAzw}&-I2rs=Q56>1~50K0{IASRI)4dnVr+U{Y^1QbwbG-K|v%TL`W%=AxW%@iOzbZ3)q`y#f@+ot^Lfw-SSc72t z4EpemjAsqwSm~#OrG7@J@V7*%{~*i@7=e-iFU$!Dz-<3uVWxkCP~aaYO!rR~r}|}y zd4Bn_9KRxYmfu1}reBpZ-EWgJ)o-^d#s9cYvj27RNGB=a7gbV#q)HBul*#_DxjTma z(0LBkc?Q&Z{z4zVmhr4&981Q@Q9jN9^8+nV95@h#LC%;JHNZW&}=^r3DtsQ^u7klEOb$FsuIR=GeyI~5^fQrE@qv=^ zFWwCR-s*f0h+Cc}dhm_hf>kk|rL0H!cmZ=KXfY?)95aLaAwPI1riF||Zm>79gU2E> zI7CPfju29Vh0a;>~Ms zyx`B0DtuxW%1*Aa?kB0+5(8|B=02aXEMYA38CM}=DVU^-ya*#?NA^WVq#aTtU633( z8i|o(FeNfjh>x5o#6?C6F_8&kbYzAsGIF|nQe?3rJaVyeV&ocCXykUC;K){TUUx#| zXS%_WKk5WWNUBakA|z!emze8uYVVE*>N?MWVp#*mQ^Yt57*B4r5}7duNR6>Ta%_Jj z#5!VfoEzfeyb%*O7SVAbLS$T|5D_<743A3_C&o^dg~ra22gg<@#>ZAGgJQR-0%H&A zjEg->?vdv@<6+nfjW}ccOOWa6V9PAt~g29!bul=a^3Y z8T7uiNxp^p@SbA?ucAKiEE)j!;-MH_?21t(UT`Z3z{rvixRyj=cu68$O0os#lG%b| z$s%!R$y#x6ag*p!e2m-_9g4mY9p?Nhb10N#4zpjgk9pQl}>d*DK^c@1Jy0ww7~Y z1N}d9j^amxn6DRe9o7oiQ`3@~rY8YyJD|%H#Pjs~7s(|#aG7yjW*k?HfU7;ZDYXKw z)AQftrudfU>lc-8a}m7F$#X+^DN|D()CV?4)DGjxN87>WXcV49~uRkmCw0Ze!w{X%Lnt9 zT=>7tr-5RhJY=CC?j=m_;e{?b-@{4T&ptQ|_%mNu=4(&gKGZd0sOlSl>^AlO(|z{x zY3F+=-TZwX!oGRLSRQMDuML5xtjRMPmmg?aeqj>4Z(Y={$evN1TW!2_%suk!0ZyHteP|4l6R4xDkK+iHZ0P@pSEJ z)XJmQOzM>2JCsppF?Ci@r4ApL%rF;uWl^JA{#s#@7g- z=0sLAj#??y$z~4uxPwBxhj|>H<Hl?kRq8_$3|Q-4?7IQf9mf2;S-T)+5<#uWY%Ptk=d!{D)R{w_ zdDK~mvsi`>j*WKq$!XT&B*(=G9AqUHz*I3W8U5~q~JDK2qH z|Ew>=bCn(*2!{AX?2GqggK<;lhO2TvT$G34oIDyGiUhPP(s4?Whc^{7a6&N$#}xB% zM7aoum6d2yu0gA66Aq|$pheY!y*ekbNB1&z>D@!K{`Y87|A9u0gdN>%*L0po0k62k zJmqrtfPB(JhP%4@xTRylCCC*Gq6uv zj6K>??C!Ay%{{8Hvqvo&4H~fBU@saBj$y0eC2Tglk4;8DV56~wS`$8}x>;}1`EC;M zZEr3qT;kp%*LZ)?M1gY#TAVWKjibhc&}QO_{iZ(HYZ`=IrjxMKEDnuk$=G3*i3YQ& z*k(2pTg*zZ*}NQ^%$K9id<|-QZpQkayRfd;VXWzO4mB1ZqN?{ZtnBj#R`ij&_&>JI zJg&(r-~XQ{K}8S*1VNA;LBdYh0t5&>vP?cQoP z+wpeVx$T{4r>(a$w$n~qXIk4%7bo`v<;Uxa-U% zW(AiZZaJ?>xZHcQ)^`IQUuKT;j&?Y`+!GHw2jQqoG!D5WS8U8}Im zwE;U^Te01>2ix2RG3B-%Timu{liOZQx*x*^_w$(Wcn;$pZwq6de-}o*eiqhx8HAAs z_>%e`1hD@hv)j!@E^X%+&nd5YIPPhULtf6Z48m=HF8^V`OHsgOaylG1##jzAu6+_q?DBKKw7(a&1_WbMKr}W4Bw;*2iFEv;hXx5jJth1%`8zE-c5@L%Dp>9|&^~0z%93#>=3`tWl zAXQ_HG#`D^60DL|p-0*vbcMAGond`Kd)TPZ7Pdvy684ZtAAUmA6ntEp zeZ+UfAbOBLQtxHzKamKWRM7j!v%cguvz0m77_k8BBdxJEaybU0e9#{if<9R^dS!{| zmSvz*mV*wN7Hu*eT4c3Cv#eQYlJy9UvSCrZY*JJ!+byn%J|?b?z9_DWzAmnexn)uj z^R2id#_%g5BX7q5FH-+P3UiRm{wGmCfu4^!8H*8ND8>?NVja*c_e8fm03GrOw8`Vq zB2PuLT#Y7q9vb8&sFzm>wem)xM&2n@#SMrm;wD7paXZCjaYw|Z@sF95#J@y7G%1e% zh8V;T@;mnX*;LL$mOV4Z^B2C~$XHmeW03#Xm#_%k33g~#xS>TMfnFg+qap_NiAktU zRH8lMlmi^e<~We?EMS1~bTc0x`E?tfVN^)$W&2>RRt`G8ZgORI=LXIXLS(;R+ zHEO8x3ZTr>2^o2HLV8}iC^c_Dl#(|oPRiRWPRu)HqR6{S-XdR`C^SEd6E%ieat-3A zsc|-+bAe2fA=-j&(!^M*8Cx0O7v-BFzrY5X0w-h_dLgSY04i-bGPSW#YLk(!%|u#} z2B}3QLUK`!kW|zvD2mpI5{f27aYehu@}d*s*rF>Yu|+pcVzpn0W3@kt<%Nddc#;|? zw7@PhPCKxMw3E65>ho1wME_sB09hqgP?b19S?Z4TG6~YkLXlDyjbxnyNxF0->T-~v zD?+@kN|5WCg;?DxQM7KoNT%B5!fY1KvxRde#_;d}xyK6JNx@H8=uJh!&;Mw_!;Ms9k@N72-o^7)nWgn+%xh9Y<(#XHdsh!_M z-`7I#OM4X4Meo%M1gb>@ES;f=Ri6<1~hOVD1+NT zBU}ep!Fg~3%Lg8U)4*9c4!l4nz~5-UhDg9pSv*1Ix!Ha2gMR8#xznFJZk-RiZ5CKEy#zMXj>H4j(-K&14<#{JygeC~TMs^a*F!f zsZW2tWG_AVep8swSYqMK5}3|7V!@0D=FdoAG9!g}Mh?+IF1`o3*c{}9p5Z{wtS9{8 zfwP3>eLwy7{x8XQER_C*u{GSANF(!IMthz+2Bfmjv0Lc>sq0H!cUshC2kC*2Q2#iv z@Z>y*Ptj|iqA@tdqWCnu_GwSz2b^J1c7_}78E!mhc#)ssq&~yO&#)tBXz))zL1?5; z{gvDy-(rZlZfBpX7;3>J$ADjr+r>F(ya(qH^^Z~iB=u?6E$Gh|JVu{QkB-X=2;;cS zI38ylkFy|uf?oSc#&LxO;T3NFSGm|<<%NEggM5{pyUJW#WiGBfPu?M)k}t4olnCk#_gDwDG zOxd!lfE6{(IE2DWbLTIw&z*%B`5n0_1`QDlV;Z%$nUg;(1>SQ3-d_oP$T&V?5%MwT z#>WjbF`VSLIKa0kbc@Nn#g5#%j(Ubw%v`G;1>zs)9H6cjbseZ{bsaGM_59`L+}X>! zb7vucntL|q!(Y!sOn|?b0k>%!KVwe5;2inN2lxla<)17@zTw96Ef>3QIrw)u*mpUx z?w%)?=z9OJ^9O$-BPk^3{_`;Zrq}%$&G->r_yMcw;)ih;>*=H?>Cva?lXv24?88?$ zOuv2-U(oOV4Oi)%U!iaRfUf&1e8Lv~&*xBJMIJnVaGHB2CycrZ{z^s7Lh4mes~&gI zN{t?B^yBln`!GJmChBaX&Th7O0Jm@qAK@&OA7{E=q;LN{{=kUdVM}kbWh1|TfLZN@ z|+G`rr>aA zvQPQcDPv!1sG+Au2Q_-x`T(ctTD*!0>TIFLPPV@vFEAI+;T)d9lX!~iR~YS+?9Jo& zi5UJD22Lddeq}!MY{C96Wj{UeU(ChZ%*9R4i#L!(9W7fcr$#L`^wj9!rP|A$4p3*5 zIvel==f-7@$tC9E0#0#OT*4##_F1-cn&WYr89qfNBPZuD@Dex7D0+(Uy2xe1zWD8hMw8(z@u12ok8l1;SA^KDUQhr=HfUW#!*Ib zgxNSG+{8iAr3|I zj$)75BiL>JGei3Y+a4Flpb4jrKj5a2Uk6 z!vxkXo5tv}16b>L3d4?1V94n;3@-l!{m$QEjk5u(AK*51f6wLp1%LWp3AZsWZAZ8T z9%L;09WAkYxdXO4dtu5Y2wPlam~>HKgKGxHU30L`wGd;jWmxN4jS<%-47qh+&}}vP z-A1v-eGB^B_oCP1Vf1)hLbvC2ba{S^4zF*~?q#@7+Z-QK|Mg(zK9pN3Uk?QWdl}14 z#xm_`hAo~;u+hsE>sLrHwjvB`z2zA4PR5{jCi=ZKSnXYeKJRk$de@=Hrv+U;J?Qiq zLi@^%Xj{1pEh~?r+4nI)@B56ySko;3<@G}VYMkKTRXArl%2;ebtluP>_ZZp%2 zWm5qCzhpkv`C4H_;)p@N6r4%+V3P1g+uD(1-h=F(MfC5mBg(h(}FCDykyXsEo)%d1MK6k<}=R)T1P-M<|XO z5wuZTghJUqp+I(8lrMWqlo$OL`8)Yp$cr`zd9qnvrsgFD=ON3U9b|%K*f3*R%{aOl zUz^MndYLsEWR9qf_Cj^EKPsccP#zr%T}%>6W0WX~$w5(!7TTB!6vj3nKekiIiyag+ z@<}0AzE{YWpA==qT_HEg=OT67Pkc29S@Kz4q~>{+88c*xjIs3TXDr=}qm}VB%IBe0 zZi%Wmdz8nyqb$xBC2=7rijzSbmwY-skT=QS$d957g~5nm#Q03u*%bP2vWbkO%$~orGmb`5qYzM`ut1r@7R8Cq z&?b7LATbbmi4n+6lp{Ma3E4@R$V$>com>J{at)NptwKi1Y9T#kTu4jVC8VSr7p0^= zE=o?lK|T{Dr~Hc;L@BcfPqV~1$x?h5nIHpc^jrK)&wSJ{mhxoQnknWeOtC?JsuOZk zJ&~R2hpbd7RB6%3OjAIamVu1)9HgfgAuYWMsTs{k&R8WRWvmktGj<4yjANpNjLV{U z1X$W>Y)Tj>Cm(jCf7 zUu0y4AT2Wrsj7ISs8W%v%0iO55Q*vvDAbKeQ1=LN>QOoyY$YS4hv-QqV=1OZ$mjbU^*pGuERm6IhqP=Lq-1*|IVTW_ zIpI*`$dQnnjQHG4#O3Bet|>#TrXJCnF32<^LX>7oh}0YsA~cT);hLApCw%{%5Rq#T zB618uBsrf=t3xKq0O=t0q>R=epRd_0&6OGfsdZ|6VFqN{TtsP05TUI>xV9Z(+Cf38-6Di&XM|wwqvRU7B?K4V6+#LPLP)_Zr;X2~ zk@cjHv}k6}fQs^{&yqZ&5J=Y2dls8QUSfrq5_`x>-4IpkgUGTVM3hA!yetl3WvP(r zvJj%vB3M_2AYBUrb^Y+yO~OyNUy$g|krxDC-A96?>>EK+`ftIn)FAkk7=+^mv-cy7 zkS@|d&2o}YT@|fbN-1l8TBYa;6GT*6AgpQ$LaUb}q}mg~)qV)72}NK{Gy-Z8;a{VK zq&5$}wK}Y%5a|c(Jp3T|t zXeowUOC4NWy5Q0>2IrPtSl)6HPR&olvH3sYr2iVrn|{IaM#Ft}Q)?aRB~8ZrfJh;= zRaNxfwe-HUN8x(vx6*%in835k0`6TlaO-x2YqvXGx>v%vCm73nqTtk%0LLCBmi6Sr zzPA!fd)r{wI}F?2X)NhE2AiHIVcqi=}@( z8wly6|E6{K9Hu_~xgGtv)do{oOj=^mq%CoR`J^YzCjGE*QVP>aIp$BMW8P#wOeU)! zn(TxyxsC%)L%osaeFHt_hWEK3eo4L~KVg`8?j#M=Ep6dE=%DxQ;TW*b(jn?o*K?fu z^yhY4sJ{(Zv|~Qz?_31YP8OrP=y7*B6E9w1EXH>XURF5qjNL{kI?f! z%6vS^e4MA(evJ9Jz&I|-2sfTfyx=c!kT0=wmzax-^xK!N@Rer%;w|zyT8#JMi~*Vr z90T?_W+&$$!}X@_a(;aYH7(8o3(n7-zc7_FRG_7%2@nxe;ORvy%4rCmwFRD|NqB)p z@k@;38jFx?+7pYxUj@D2^byNu&K79oG+rt~L{ z$@`q-?{5M=Ux}7KA+IA-R9W*%?@hfgTU-RO-!})oK6Z;>B3G?xf z%MYACSk9e4IL|!;5>6CEO}Ac%pXo9Gg?fCCR@_AoUHlsQ^AY?5>+v-`=2zH8uf7{! z-~fH=F?`BNbDQq>FL;q2_8r{f|9nhW|KS7Ap?oyQ?D>P)+!@5;x%*MPs2f6EId#*i zsi9U0b*ib;gwN5A&*-;rqn{ch_yptB*u?gx@n`Iz%Rh)e()GSeNBj<5`S0o4|AXJW z$(G(^>;FFnm=ZCWcmMq17ueFByRx5txPwS)CQ?s@zoLLTI>uj14LvnFsA0ShqyPSW z7;iC-o7g;eAI3gTlcOBMvz$Ip;3fY10)O>9Gxi)6o~6=*{J*mYFjEVdUn^$Kk(w)* zyATd@EdC2=)XHIBwA3i4MjfZ4o*Er&y_XvO%=lVrOt8(Z?D;M{g&AHxCm6v6j>vPk z$S5DxiIM0O!av5GpwY_F+o&Ft&&;Vzc-~ zOwM}`8|Qz8jSGIl22<{rbKK#j{1KP8H|(fwGkg4ep3C03`4%`Ow!^V`ZaBQaA2X&A z*k>A#y$jQ@dtnxKF3iVvvl2|3Rba}j4qMHdvDvH(o6Of>qxl#%m~X-OqP=yWBV?;?Y>6m(tE^kpAPb8S1!5S?kWM2pioG%tS!`sKezlk=BoborSW&@ji_-pql7xhDsWXCEu+H5kuE50)3s^Rdp! z3M0!MG3e}te&;~+xkO-OA(N#^W@qJ+Gq5^Cl|2J|{n+!pra*Z?NomGKk)v>>*pYypJ=MwTxwm+i<^!1y*_5 zq1)39onF3Z_XEqep;0Im7~xCcC<^F@Hedq^19u}o@Hp~< zE|b@w3A#;wAco&~DS{;l*+({$QI=wB7)v)}YiBIYf%DNAV1?R12UG{TqcTW>@}Llu z1<6nvlz`%(R1^iNp$*PMVQ?w(Lu!y0(gICrA96$2BU`!yS<<6WOD{ql_KKhi`wRIV zsxZSWQUji0xpR{2CL72g>0v3>7RFkivDAf%P!(!{@=#lpNnKDP^+u625QWlk6okbh zFDwa~FeP%sa*z{VgskvNs3Y`HMf4&watzAIX=FqlMtal*AuZ}U`ET+aG5p4r7?yY} zGqxMgfXHgn!SYAXIBJ=fN>UbKj^aog6h=BCKhhJLNI&F6h9Wyk26a>dR8eWjjLL#i zR)7pyIntvWkrv&J)R?tMiJ3xj>>(t@o);2huL+6rkNNs7G0YM}-!11{V2QDnjF4W^ z!q4g%MWGeU6p~#2zdBKbjHE?K zO|n69vLh0cJ)lUIAU-7oaVb%dr^F*RH4QPT*@#ZnLY7vAsI(SDru8EteG=j6`w*6X zmOKY(`k(mv4}_)NBdpd^4LF(1H8BMkV;SCSJOd(C{JWT+=MokFPETXKnPvt>x)tIx z93andLu`f*qLqP=DI*Z2lp``T84;N(gl85YOjQA?N{>)gA3{_U2v+Sykoq(N)z6T3 z5vaO@Ak{qtWf~Anj8DOBsi8$HA-N=-C3#XdAg5iDX+#LmTLfvo4MOslA-KRDfdwlO zP!I(F!btdW;z$Zp;aixEmD*zXXlvoE?ZOJ}D7>^g;HiBW9@;D9E%GHi3x9%V0V`Ls zhdS$x&w`OAQbA2N12uJ1H0*yK^$Y1cis=7KOyO6$7?M&utSobePnj3I%lxpSObRbu zG(2@l@X)E?t}BFFc@3*^gLWYPiod%l={G zvtXo_nx#ZTU1dI?(9(C&wuYC|`<2uCREptMy$BvP)^M+JfNQNATxxybTpNhxTuhwm z;^0`9hGliRaH!M4zD|#&b^Wlb+YH;fLs(LG5jJ(N!>0B#EUEbcw$+CF81F|~O-tBJ zDvkF6k!)(GQd?dIM9>}uR|CGa^uG=CU-|`D)?x{VmL*u)>Il15ci6W2l3*-pmBFSh z5!P)gShW>laa$cM+j?Qqwt?)&qSi-Y-g*t@Ew`|!`CC{t--CtTfH7)yk$O@_TbNIj z)K*YiRs)34u1aX%y=WJm+W~v}bDQ3USlqW5mVLIw2^M{xSkxzhd7l(!eX&^Bmj=^5 z4HooOU|wH4O#0SB+_wwDDw@|-&p_yX7ede9A?o>_{DJ}F^I)W!xh^JIm7E7Pvu8lk zX27qF`qXvlr9Q2*%^*GC$b2juU4(g~))0>_g=o|n!YDWTQEs+l5wkZPj&V{OJ2=*e z`!`vP(NK>bVNvinq1PSxjFaFS@*{ef=SEUa@|f=oYR6MMq5}x%0amQ0K6UNa0@mxO zKLMCdnn1Lf1@LA|vV=tkJ?<73WLsGfZRKV=#YKLKi^~)znenh`s*{Wp8v3m?(_3hq zw|vaseoekd8^f&qAF|B@JjyC<|2L3ANFkHnd+)tZdY`mOAqk|Bkc7|-y*CjML1~JL z0v5oA1?+1tE9$!H>aP2(YwxbQt7}{9e7{Ksm;d*_xNhd1cV?dZInQ~{d7t~_9C*9N ztY^WP3;258D#pNi^#5k~FOqyNmfZJ9E=W~}0|)>#x(+!?S5o|5Nl|^1toq$-}hG4(-6V0>k!=bxOo9F}DoOKCf0Cz(V!Oz#-k?2l0N>k3Q zzgX8o?y}*ubzNkdbkB6@UIfa0)<29||3FHS{t$jVOabx;55Y$m@Q={Zk3#e)#veHj z?g!6+zp96Lx8PpoZu)>YC(+(;czyYr`z`RFTYtIFy6yrVv8{zz@i=(m+`5SUhY=KKYxz|LyF_Uv2pFZ|e_sHn>jgNBLFZ z`cX;zB2V9-b-zSoexVL@aj!l`Uw(kTd=Gv34t~6aA8+Ev-?bf%-TI66qnocrw_it? zZY5mz;=$AC=r;-DS2_#BGw0##|5<;quE+dmVh=_T?Te*t8F+7muLcV(aCE`ZPw0o~ zf(3dJKVHC(=ken?{5Xprllw3(r~9rYWlqqQcM*w4CRSq}AY%6u)%##NALp+>d@Xx; z-H4$N?Fxr4nfBzuRR&Kz9IdpdTTkN0pJXj!RAhs{$-@`m9SsO zFuGN@^T};Q;TFBGoAvE)doa%J!?5!I3cdm#g1-`rKN5?x#NtWv;xVPeQ%E~1vDAS5 zHtcsZEc@y0dDtJ*Dg3w1~XW zo8%8)6g(;L40sPp9AA5<%rCJ5YCPvA{{5zl>c(K>*)7zuqG}Ft?yuXoY@4BfjaC*WQ3|B1H(&5S1WmC$uXG*Ou zncAdXQ`@z3YPWVw?bk)q=4sosh1xo8nYP%i(0+k@ZJ&{; zZO(<->RhfZ&UM=4+^mf*?ON|LTkBi~w8mvrt6i38rRyrKaNVM1u6s1@dbKWaJE_HP z_iB;bb6Pm_BQ0?MUSsZ--|#Y1`-35qkD6<^J`l*`)L*(7-*y@twcX8KTW1DnlY5lb zyC-X{dyZBcj9O)=)CxnrmK$2M)G$lqh8`{P7}R2q1zPB_Tw|UaHQ#fWMm!H`*y~0O zdEc!;?`JgV^SJMpDUr4)pLg#2s=%Bj87OE?3m1c!ssE+V`YL7Uowun2_ z8u_@)k#EWz^>1LAM5ILzCX$0m(m}9;QfvdSD-xs&@Mj^uj78XMB-~9y5k8t55vu;k zSoKDxswXl>vm=e_j;c^+RJ~?JwWuSiQ*F`xYK@*RbIfuzQv@}|UaH2pYt;~UN~ZWn z!RxAz{|Z>Rp2XcL=x%HIMd`B@tmgUx?k&K#VSE{ioud9&7xlz?YIba(y5gcVD=twT zaT#ih%U5fBsaoQz)g0fbrucR>CiJKwVOaHvf~EhmGUrn4g3rI z3M{Hhw&)JZox>UA0p-R9una8Z-Y~ul5SL!!(w*d_SxN3{Px4c1QkYtj;?$I!s>b9T zH6$0QKDk15$@QvDF{>t}Th*yUs!Cg|inMhqPv51o^s7{sakEM@9#TohtKgqp{{k!% zxE0Prlo>m$Ye1C5OL!dtbMdQ(xO9T{GzXc}+|-ojt%meq)u%_RHa$r-=^3g{&sSx7 zsVXvRRG!hSvdm7EW)7$%YoUs>*T|T?Q$;z4RG4!Ucu)m7e*#}{{WGvk;3T{Ua>+%? zjFn&^7~*{|_dD^gEep+)HBF{07u98Xs5(19RoM}$$c|T8cB)FVb5xRJRB=wFjJXXe z%I#2LUY`o`#+0AGN_qL)m0NHHIH8<^2b5j#60e_wpOlktQ7*V4Z?Y8MR6sva3eN}q zTz7M?4L_Rjr=IUr=gm-MzPrlueN~bls^a_@73C+ZupmnX1%=8lELUD(y>biNlvC8B zYy?V{afLFC+mu;+P#ML?m0o-w_#^lS_)!@~%LI-VPVPrq50)6I^Fa^j;C&Om)bV*0 z*JVaW6&u}DWb{@+agg$hBb8g6pq!F)WtZeBtE5z!rM1c^ZBcsZY^9YAE46HyQp&d~ zxqLskK}qHJDzW?zynYIPP;!}N0$0PglM;M&3H<=(B9XdzZ3T7QujI9qdqrh-$}e|S zZn=lDEBuvN5w47iIHgynDy=d{sg*{hR8=Xts!2&zT}rGTQbP3wim%?Jxaz%%t+`$? zHFtyO6jS}NVypk7xGKv8tbZ21kn($Zxikv;KnG|7RiFg9R7hEzTTR_xGehaM?nRN)QBz-fgwoK=|V zBZZs3S46#K0{be+1$Zt1^Qx?SfQSL8hqJ7P_9K;Y>!b`5`oGapiA`>bZ}L=ZbAV!+ z!xh~er>N#MMYiNBqNPOPEwu`3X;rAXS0UyF3O27*kogh?ny*!W`A+$pe-A!TK+AUu zY_=!}TmsixxE6u|_-277Py=rbXMH2D4$A~Cf@=k( z{|J0NpbePdtwf>~HA~sZ*3@>i*DUlmGCE|AqXK$e<=5*W-(G+D^o7a0FIHZCDe~;g zl}BHx4E^<>L+<^9n%TcpZvETj+J6Y#BA32L!RvDE{Zg(yKg+GhqD^ouv7QA3UDka- zpq4h5BG2;RPD36g%!VI%6522M4^ENiu#*fUGvz+wrI{mvavP11>u5a4kjrSHoJXrP zW3)w1qrGw*T_lImjj|uzC%cgwHFe~EO&fkmcEg{_Zr-=xXRW54WAOEYcF@o!RdkSt zUG%{mDX|ajH5Y#5qCfiFbAdE-0GmK$zp;ay$6Yji+#ttsAK8xw%WgbM)5eoDb(~3d zoWV3saK~xD_%J}ok0WF+I0_JsOAu^}sh}7C8~mVgVmt)8ftjDwz+F6Nat$bD5dA*_ zKfM0vb5EqR+j7Zym7VO@IBUupbpKikueB5!YtjAd(3k6Y(5z#ETStwRIoR7~_yO$0JR{;q~XI9$O?=nlXK+G?kE2JTt*lgkR<)?ZuCM z?$$qkP5u$=AbwmPKY1Y7I{6$T(GC%dD=>HkTK9@0d`^E{PJbMH5ByVe>8@GCyPkNL zEMXkb=ESw|Z-)OO^!F~w1x|jTlc7=4liJ4q}~ZUh)Pf$l$!pg)eHIsU=KKAdLaU9pmJK%0}TdvIv4KfHzm^!=6R zt-ss|P68x5l3{X9gznYt#N-ZQau+c0_5jMciHw{*xSxuxJ{e^v7otms)9W9XoY@2V}7d+{ad|g(;@v6UH3V< z?jPvfPtmy_qu4$|(S3l*dmnZAE~@rzbmkj$mi5%dUvc~|+~U>XEA)W`a~@##V);vzI+>f`6jym@A&aI{CEvN{)`{5 z;K$3T*cVZuFQ62kLvx=+H9tcTpXM7+;{6k-{KsLj;xX{(|5*e1abgd~OnoLl+7$_3 ziryg>e^)u}FyVVE_PYsx|HM9wv-t50emspIPvXZDsM*I*xsT{F(&UgHB$4kY7WeW0 zJ+$}?R!^h3t%U zp6;bz?m_pT!4K;`j63n;b`*>+!&)a`-z0C(J|0lLB zMt?x}KZWjpgjhVN2-=VYM-Ch%*ssBMBg3Sfq1mmQ=$Dh^#|h2H{u14QAJ^f>QC&z+ z>}CqNg3LI^lyZuwSa+zrL@#}YhW}||?}ZinftCN`iTxjwDgO|$xSLqqPF~!qAb4VE zLmC`;*e}I?4fdO8VH@_lbR~Iu2tTgCkAwJe06+F=gZ7dem-7E^zIh2&E+%3-CRVII z&_!hUMR0Gk;d2}R6AY<)Y*Wrj^5Qzi$PvcKVTHjH4@U+Z1^8Wt6h)~$2P4d5?lCpi8kTk#)(}jcM+i{wU%sNL)NWk#I1qfinnG+PcyBYae?OVPS%Ia*^^q}6s6T4`Ua74}V9Zr`q@_T3tH=+_d55iNFDqJ@rYw7_wj z=1ebP7iBn#-BCh{J92Qegu{YJjIlHJJb6S9yR;GPTp_j5x5b5Hn=%x z!wfgAnc<_A&Y@c79H()YG+p45tHmzGTI5oxg|77)b8Xgq*A9)k_Gs93NJDN5HR!fd z18!T@?{=AbXI`rw_uDkb{SnP}e@)$nFTpRsGJyvJd5l@NfrdyIhfJ=0tl{1Y{8`FW zyVT&M3)~G_vwA(c)Z@{w*`D*&?YT^y zUK=&bYq#3HuU4D)Eo$}ooy;n%Jg?+3WwgD>6q(i!fkj_{dk z4fjz?c!-+9qtzIZq=tx0)koy3E}~Sm5!I@RY*bZbhbp7`R1r0%^5~T+joGG>m;)+~ zy%F3aW9;)X#(e^Q;M&4HbT^!rQEF^XMt6hxU~Urp-0Pw=Y$q<}7&|pZyQ(4DQ}rKcb?9WhzYAs)EFQ%1^vrc}ZuK zoAfOBi0l6V%LIsU2IIB9rpvnYal_!L%EFoGY z2}vqW%#<-PUqy+fDomJZQ{$DFnyTE? z9Oa}HD?6=P+38KnO7B!=#-K7XmMA@QqtY@jRch8zrDWZu;2RgYn0~5Yf^LaV1B^mZA%5YVFribz}{gsm$rmV~uWo9NTBP&bkS%pf= zt^f^6&FN4|&VZ707bz)sy%KYGDcYF?C5@)DJtpP{7ud?n_WDWRYav?;!@ zPjQ6{6kE7fF-5x+U3872if&hA(UagEuD?-qp=AP>Vt+#(;{j}C<6s>XH?Pt8nh?UF%qc~(&(VTW>@*O z806dHE1#ASdACH%t0hUEB(jIuD1*5Mw94JwubHij<<`1MuIByVxLnK+fIrE#<#X_( z+?p*~3(o@D*bCa=Gl5D_TulsWrBoz*e1jC#jQ%!D0d11kEGHQ{-Q?co3H&v)D@<-o zXs%spAYU$B6>{!s(u}Uzn%*^Ej$Lcz(6vYQUB_hCb+_y~pO<~-N8oEY%=%f&;hJYV z3)TW^K^bi>fIFiR?TI{!Zbg4183Vc`@7a=juY+6$Tr^|AT}}hunm!OD$AL)M46Z;qw+86_Ei~x@{Pag6a zL&%RI-pA0p^AW1^ALD`i21)o&@cqPju-U*2>OqT(*f9AUp4F~9sWfN);+AisG9 ze1?s0G?%u{vYrP6Rkk&t4BDJ9AVnZi1L5^To6o!e4ZcirKqFH$O6wc|#prrsv4Ns% zBL&YU3XaVbAX}^(QJLJfkmy@z*cJk~1V=FA2AoSnQ=SdpChA_#7dB=@Wqd*z=jX;cddr3gVqd$Wmx?6fOtB>$L&?t`Ei7PIY!}e9l3EGeR3U1b{(C1-3spS z0XKmADc}(8N8g#)hf{-#MWjtSZH^_*!L-*4Uf12ke&2cPFV?k?W8iw*ew5#~E_t43o_nlI+YFAUDro>@-T|47qvwMKvs8PKG;s-Q+o_ zQ0o~eQpb&uIUKfe9=EN%SOw6Xwmm3T+-*CbbKiMuA`jC)j}nu|$&sh<FQvel4_`Sv zCOBGAi{04o$NoI*k70ia_E%tkE%rC-dGy`0D8y&bnNOoypG2iUj)H%b06naKps9bR z%Pha){5=@fJrLi>jyAfYjJ@=>LiKmF?*9;rS7n5w3j2+Oy^Zj9>nZ$r0zV$Zk4Nz1 zA(Z9s@Z*7reHa&`pZDnuiup82dnZ@703*GwFDI=2VIpI=47 zlMGKT93`Yg4Jp`!#WqxQH@5q*J%sJ~*j}t#@Z)CG^+|0djW0oMU(OIZ#=lcKiiKUY+C(eOfj~~a-+egv; zM>L4-QS2^e2rt)_XznYR$S$W(4#2VxuP(#lrS#GseT0tx0S_$`*bTn49q&488(Mcw z48s|4xzn3|*bm2k0`@bpUq~;PVY?RFjoMFs>?KbxQxCT1Vs8|?OX!J}+Nn)s=*8N` zx2>mRwh*<=WX2{kY9raU5$1Si~SUBP!9HsU?>-A5{?EqTIqpKIC|k2V#F>a z8Y{F2uNGoyj0n!BKSs&c5qf->Q9aCvABNwG$E{~?m|m~p@wXT3;Cibwk2J?A+Azf# zE(2VC@Pxw?4@VjtIdBxgQ4U9q77&jy{FqOEj4)n?VH=`_gHzUNV9HMQPrX8YQ*Tty zw7bDs&9VDHbL_v-9EV?lMfbW-F1PRJQL`Ov;CdC)>~j2B=3=L%j;>l_=b=S*ff}=q z)Tn)eMjX;L&mmVs4n_?+R%otco%$V{)Hl6Dz0-R%$7x8joffNW#u|0b*sfX52i5L; zgW8<$R;$Zd@PW*(-vY}7Zs&1(wJ(oFN}-MZlWQM~dB1?NWE5XU-5fRI;-(=NZ_RZH zR=-QMdR>#${CuKAknTB0u3Ds{S=G|SDb4!3T#xy@Cp+d{R>T%{&=vc~;@8r*M? z$^DG#4bQ61@FDnKbsiR8Ejj`3fgto=FzpY4pVtxI4>Ha7<4d2{6!jTqXpXx<-3C8( z8p70Jh*i5GMQw&GnGJ<%@hDTXM~#|1n$+OYA(LmH>O4nPOYu?dwMA9ldsXRuOcg$N zsodxHD))UKdsLlTVuJeR5UjYgCPIg{pn)Rpr;J3cuMZ_n)US|8bQBY*caJr7{K{QBlwxDhzrG zysN_CZ+W$FkNFC|ojm5(L`jRHr6JJ6btm`Q@XbtYnuDgQG0;V(0E21+{ZtbermDag zRR$)jA}CYkLHQ~TDpg5vjf#VtWen+3QOKYQLKiDPbiMMzb}Kjh8s&uFuI%t9z}w(! z-diSc2(E2B;#b5H1Ip2U(8YBd_nPsgfwVhi&Sw~yo$n7 zRT!S5f^ehq!z+~+(V*Oj4&_AlD=TuLGNaZiBYKz8qYo=Bni)6dF{Q@5!Rx<)h5Hum zhifyuOA{vdzx03(&>WB6;eIV~sl=DED0`Jexyl&jp~5JC6~#r7&SZcHihtCbwTQ%UhxDKX(zB_uooUg!EN@GJMx-SBL%u0v6R z4knWWzziCAUz13k$>$}YC~m6qsvNjZaf*LatI0N|c;f zqohQ$5|idAA!$_c$tx9?yj`)$S1KmuW<{qw4E~4fFTpR|=eYsT8aNkFe)gwQ=Yu9t z%liuMm*7hw$OTzRPRdAfQ(Cg8Qj!CdoE)aauCdH(6D>{8x zQ530>>Dv^MafQM&ZUPS}EaT6-{!0<*KLg9eo~V^@j;7HMl%H+D1gbzO_X?{(^fyDLC7r3$eX4gYl3_KV+dfK^-XPy%FSsbl%fUC1y`mT#mD%bKMn{ z>#c~~K!xW;C@e2dp?PTv$;(x6eyM`;>l9efu7H98`4=paU%_Vi7VZbfK%E%;G>`8+$}Ukt|p93456Ye3bYbYlI7_=6OrNl_hSoq&H zpaPHuQi{>OrL-TJ5?YD=MY?&{PM1f$s|@uXaRC4(Hfm`ders@DwD zEIFCxX}W2J98EiAZ#pbH(;c#_e_HnS?|?7mQ1_#jz%xJ_+u<@<_W=PT$feEca3{bW zRRw^G8t=5Az2+3B2 zYbzqgd*m4J9X&b0bdyBg80zLnvk}v?(Rkg6*KR~qH{z*_shw6#iUd3|FUf!@KILT-~Xl8 znam`a^hqXlQYO9ko*l{ub*p3~S5*s_10Cy1Jm(s{fiOow9vYr0ePWFDuQSchi|6Nlsu^WFk;O{aX z%cad}gisuMZR@1)b0q)s&_`IysD*6zCfy`HW=&+5Q5PW@-yKR)PJ+CL__)?c5Q)(n zh>aWQlN$)SU!dq0%ea3bpY+Fd^v89unrq)tFaB=9-<44E0v<_U1OKPJHuQ#V#rNAy zeOH-hfyVDexyh_goI0a(N04+UJ~>F={E|35j2(xGjl=ZGVFuS>8hIGucQZcjIsh0S zcfF|2)1_McU4-t;4N~G3^k0nrE6jS&b*8R;X3gcGxi93@-jI8LRu4HsydEV^PS7`x zlc+yMQuq{$@KeO+Qv}+RD0`B|JwYR$JPb~#=}h_n-R|=l1GG6B6T`1H_1xUliihFc z55Y4ZM4N#Jz&+z^_!fNXJqHp2Gq%&7BrMOOEk(Gt8XYaj@5c25biq`*Vg_xPt4FZo zVeEJaJ08G}`?2F*2GL;#&s}itLj>$WzTL@N`(gNZ;MF_Oc)N+)OdI|UKJcDFF}gCC zuC?-pgEpkmhFscEirsa(58i(m-hUT%9KwzR@XI^l+jqeGZ--;ByditOeQ)6u%(x|iwYDezag{5Re` z7^mpMm^5x!fvXMVbbk4>Ti?o=#i+F1x)-Rw{^J(EcZx!un@E7ov=AhregG_0+k_ueO^0y6~ z%T&9bd+S&N)-YeJQWSa|=t#llOmyU3-cB_8ZVN{~=BFpRFkYi!~UqN|ORNX&`Wi`h%`l zU(g}-2Axn(@Eht0`4oHy#KWG0o3s8J-&@&9MY&PMAeAgQIm? zNTP;AT$&c**3^(fO$ja6U}%jdhc;IomwgoqXDj@YQK$nENg zyiVqDVVNS!(Bk)3}~WS~i*A2C$_sCP01m2=&-(nqZGtmpxUT z_AGVS^VMcAQLDXLEzyl?j_y!nbe|exhEyLjSGBQARTF!*svQ@p%CT1!aRFDNuJHNMLXLC}38j~VbpJ-QYVw|dzoT^I7RAo}0Dw0Z6 zo?NBU}E+mY9y zcQnhl|79xZ1KoUY<9;)?Kq*y+E!C-Es!X-2JT*q8sYxnHb*VTtM@4CcDoiVv$5pQa zSG)4l`;?bHtlW$dUoe5A~*@3;@|M$a0f4wXY3lKxH3 zg?IDW4w|`Fk1bGZRf4jNV3lN8RFq+tCnH|@8BXP8WGXi^U+&CO^Yf@VN1f}Lrk+Wc~QVPyc za=|7gd9F~R=N2V+eg%F5K2&1CH%clP(?)bGL+6|V`oTjSfOgQt_gYZFZzZ4r*%a(NPz=1Em*VYZxw9;FnPE4ipaNkyGXES{`{;@OHXUaGi~bL1$wOtB?5 zgZmXz@*MaZ*Z-EIc+9&eY80I_p(K-wd^Mm}P!FoOR|-79T@3F5=_Nr*D~(i2sZGgc z4keYPD6uR<31xYTFE3SGd957f?TW4FS4_nWMOTc&6kU@8 zie#^?lC8D{^vYU0UDmoqved0pWZlK!dPUUUt?=3>!8=_4OOZ7{XeDi%XVjt4(NpfL z0o8*lqXxu151(#mN;*{9Swrp*RdCb?E4ndKwk8{J$l82&g>@tkD2MwSal!5})LP%>mZ^~GsS5yPYU(9Cdn16D4ZZ+A1YcEt2v11W-EROU2@nh7O{29=r_+k`cqtgKWF}ji8A^O|Lm z6k_OvE|XmHK7g|7Y_leEj=yhTijjzJ#*Xvx$A$P~8;jgFCj4y#{Wco74WU~xd@KEN z;q@df#Kif(0e@2udYkFzO8i|w2xrVT&S0T`REnevgVvZjjXf}@Y9U+AddS6QO~lwE zav46kBGh+2XE$+r4R-8hQQpfWxR)T`OULfPnR_t)8pi0=2YBvL@TNNOcP;)dp2J*- zualOdpY}$gmvj_6O?{{KqFgn8AIi9z$c{>9F~S zYNJl^5dCum!f+fr9%IZtMr=IBg!333{wU-01hILXMjYeiV@Fku?gDhX&>d%-fx@>z zyG*?|nmP}dMCd-V-tw@yFXZUB^Ei*2wUB4Vos)TmzB!2$(pXb`N&k4afW?b{vAK9)KzD*G`!3FR&jxJ*k_}bR!yX0ymm_ zFn%!iVEhTZlFhl9cPiH_vdCQ9J4&o514L+(cJ&<{XrV|p$@b`{>PXWDK-ekbyKkUxpm5785|nAS(Mlm%r8Po0jXi}BV%@2;7{ zT0m?rAkr7;TQKIugQotgOx>H!Y56RCv4%0S3f{kh_*^b0va>)w@=K6kh5UNtw`dV| zEX0ll*fC$jnn#?@;g{LGJriHdV62|TggTwr9A?xE)BD4W_+j)LIOs?FgP4v<2R4E; znQE6a^)EI4M8Oy#BSpR)`3cBRLw+_RvH%?=w73c#_2_6pM<+UZkvT|ooW`hGK*TQ7 zWO`*1kugAj^wZmYM0+2ju1_C>?*U_kDfKd={$lZM3teLIr3CX>2ImC(X|`V&daOu| zK}RAwT>*rRF zzef}O%QV5iTHOJS>I`UCM?jC-0|(U>I8!Y_i_{#nT1~;5)fl`}4I#IvKIDGYg**%1 z17E5x^at&<`S!r9jHUe!UrIK_^<+}Se(dSRmR?J+dcq?$G1RW^&^UF5I@J-HskYEu zwT2a`C9GV{VYO-sZ&71-w;IAHsV?F))kZ8-P2?(7MQ&DQ7! zr9?H>YE@esRb}l|rL|w>QPWixHKJ16N)_AAQ;}__3hlSbWB-*3?9YP_z`yxErmg5Y zGm*58baV#G+aTx#U3_oDmS${g!Y>WcfvUHMtIlRqjm@EITe2$c>8h~1RcMI z^s66qgEqcHpHzn}HP}*(t(A@tRm56U78|XS*mxDkI#n2(DUTyx1&$KsJF1lj3CfL| zAb0!}Cr6CNjGu?ofK-jdCU4tF**lgTHe96@Yi6e;GRGr1@$$Io zXI!tijJxH?coMuTNBS3vOaHIdqGM5pZy!*97BQHO5BRJF72GS~HxJ0eo*a;s9;}S? zNV(E&N=?s6!{GJ0cxK7IskTWM-$vIXfx}%lg zPEfo%O>ypQIdTgXn_H=vye38GO_V)vn(X-_vgNN)RQ^_3^Y?;7vgAJseh)sAHSa%K zj_f(c87yND5NLrC)bd#Yia`N3xdF{oD!(N|;}Qx&6jxwTtjDexPn@DXDY6%4%2t>U z$`l1zwH9^BQZxn3Q)KZPKDHDDY(X?z?upLK%V_;A#kKq^uUQ zPy<1zAvv!h@vb3zto}mtkUzz!L!qPDr~&awQ&b4@j2aa8($Jk$j{ZvYS4&Z~0g9{- zRcNC{K}|LV7?W5N6G;<6+eD`|@j^4)su?2N41sHgQ#7vyaGNHwq$Ws0<8uJs-S~xO zqGN!zb$|v?S!V1(!UrISYZnwg8Oj(3MTtgiR3jXyIY6PUp$cqgfo*3&>4-Lp$$-Jz zX$-DH-^QLUhm7GCvHV9401)ck&!WaR_oYm27_M z=jx@6ZJ@s1cNVRX>m1sgh8q*1>@gF}`p+ad;2^q(0AZ%nNVH~>fX%{=+4RXA?3iaH zAoR%yeKL|`?n!B40)lfdpg$HsD(6Ec=aW6oBa5H=2Jd~QZra(5&N_1+P#$egr_D*Y zFoyP8(Hjmo55%21Rf8eKWYj|zVaH+hW#;ioh z$|ceY2=$8V%>5{gjb(pV2d-*DZzZ1v-M({R$+VfJS61|f&c^ri4Sg~aOkXWzg;@_- zZPrBA!L!dIKGqW-=U9D7(dGo-*_lsj6aY5IQL3v(?Js0CwTr{wWGI| zelEsc*^{Ld%#EeJR`iA}HfugBO_@>Jo21)$Y2RJoaaCcO2i@uX z6wmO9!oMNwO}*R9y)V1QoyobuthbD>huk@Cf5@p?$OFa(cI-G#zZ_@rKh8vSoK8PR z2OmYr5$4Pz`@jP#L3cK~lelf$AcdW8)|hsUtH10s_59M@e{!Em4j&wM7Uxtg#Q4MU z)8-+97wMbdV#n)@*^~6iNyh4HIQ~^S`L{IkWfZ)0=w~$$<2+0RT->hj;CJ7^XTF4E zex@3I1dsUuzWrBN#Jdd8x4q|4=ITub$m_7KR|(Wt;1VywtDdLh42JzQEcpr8|6_29 z6Wl$ff9NP09s&28=RXdNt3Uk5+z0U~-0DL`p(_quF1-WCd`sne4Ic9neEWIqcm_M3 zg5^8`^LY#|a{?xLj6ri0JB|=U55Z7>MUdV{z}y3iz8h_aaMA&!-AU{AoBJ<}8pI9Y zM^pF5;9c+2Y{(BnaVC2nuf12Cieu;U)=xErQ*7ZcVYnB@T`4dZ0N z9oTUjcH9aZznM`pau(N$U}BSBDZ>QCJ^G zsHFlo@{5sOMJP64zp)RaTi3%DuZ8XHh1*>NBfJ_$dX;w{#!6(LO>bO4NMC^^H!!5` z#xqY6<{vPWfAsFX*a|KH@0(kRj+yn3+q^Z1KgA`w1_ap?#-W z>fCJ($BXd=86YxaK{Bj06WRHAxP;y|&Vke;y9L>u$exI-0b~zp4R)-iUsh@YzLzqwem zgweB>h`B(MiIhq7^nmwt)vMrhFvh(xZ~e)bem60ltOiTK2+QF-?#;m$vzRYt5TB>f zCr15YI^%U1JEmdBRP30d3Ut(>qZxS}$n8}>cYA4J4^~ekF1qn-7ZKV?e{?dcI_QrM zv0mzXzK>})Q|kF4(i)b$)4^OYBaAeIdqey-h52GKeKLtY8IS|{$&3aUI&#oafQ}MI zY9)H=(9?pl(dJ6DBDSE2V)4;!WV zRfWc?GBi;YVQDH0%Tj4ro=U=sRUBTWqVPr)hIh&nF`$Bo8On=XtlY@8az}1ej%AOs zEeDikIj&60N$@fFMjOzx1f8=;0|!aLCV)1s8$m70T{X5;Vq>{2K;_m@m02t*vDj5? ziBq8^SsqKe3M_8rTMCtDtx&GDUT$lLvaJKkikhKJ+hV2L*2-nurZn4LrP>b3X?s*D zwmiAxXJ!Sk>f-ObZQfLp9#}=*vn^k$XXyw`xlw(U( zwk=CpwtQvUOO;`-Rl2=RuIOH+Mi0vwvrs89Ym^jop%P>FC?WQM;$x31KIRSZnG#~Y z*J^akN9PbUsfU!OEd~GcSp~|tSIlo7?8)c3+*m*5#Dpk2CQ_L(Hf6*(i9 zW8HGb7AeJ1rDR95lHw*RF>Xi+@e33ezgmt2X556U6_aqMq7#lOI{qa1L^1K-d-o&F zG3rpH)fXNF>&d5TUgl|8ji z_Owpf(k3g)HAhz0a#>vGf?bMq-KGfFL*NDQH$|p>rNzjfj=nzVY8$8n6`&a8V^0ph zWdaxWI6)%!;#`4>bwwyT-70%}jO-bSvSp+xDkDeM%wkY2OJ=Jgv-%a0HACT9qYBH~ zpwO(#6q0o_xL?6p&nYGYD1gBIRrZm7o~ppQ`_$GYuqjoxuHAD4abvKv8+2iu6P(++$Oy zCsrYzBn5lY739fPKw*je3+v=(9G)nIYZlG-ZQw2>Q7^n6kbHZ{m^^<5pKB(v`*VDI zk?KG>C; z(CBDrTNE_GQtGepiVy`=M##U43B8)hw1$bMCds#%s)iS8;a0WqU2iRB27o}+!u@Nm z24oD?kArs@0H14+c6A}Y!FvV_mw|llWdoPTSA&W#CI+C;HpE&g;ULxi3aSg1Up)(6 z0}D!Hly71;3d=3{q6J^H@KOuhs>Rq;0C{bJQ#3d=jx|zZ9HCk zss_aOT#&)FlQt)mp&z}rYAF(tVGU9c%~LB2dmG%coyD~SJG$^iH@=v_L^6Tkoq#VU zRQe9sOn^jBASSxWkh;m%y2x5PkAk;&_j64^M-!+TR|CrCI<0~jpi5(F(cfUyf8gMB zZvfPlMI4!M?VcbOS?uV;jsf~)lCkhIu}@(#nSw8-(1Zoy*9J{69PZ?M-)j6GJsJJnTj1l*f9+|rkndx zW?{#icwYg0j5fbnI9{Y@9)#oRR4}jJOP;%P@W^4=*`O z8YL!9H}<12J{P^G#zw-^I19#Sb_+3p$t*Xr@k%&)1E-lf4Sn;?`pf^=k8-Lef=|}K z`PUJrXJf}XEVP@L+&3}sHsaiKm@76gJ~r_1`ipr6;(pcn{Bhuzd-UEHQRTlsc)01XY05atGt&4ubu5oO~ONyLGj6%Vj*n__*naN+#0>=uS5F;Ed4!OeKD+ zO}*!tI=7G8hqC8q`%i8$>l3$|WbM$n{Tjvw@<;H;F&6z}^vO{I?h$-(gt_8jV)G&9 z%m?mL-Ynlas91DIGNt>UW0I{)e^v*%)g)x6>MeJhf297^xLU|j^YFkE=GhoyKgi1= zzP%tPS)gBI(s>nM{1&AzGgrJw!(Q0;Kk5(PgCF2l-@<9WRy^6i3#Oj0kIBG4AY=b4 zdHXvsia#U0v{lF@5hdNVXJo&JijDh4iX^y>7?7SWS`!`o!@zNUuW-U5)HUWVa)G0+NltU{68*F!E;+8Vis=N|>zjp18P{ zVA`WAbv1Xd@>XS@*G^h`1$uXYi@=58Lvs(vvu6F{9&eWiVtXWVqd_9JXCOZhzm;Hr zH6haI-G{N;yAPw6woLZ!!?@hL4`Tr#yaW!t8XcRkVmslr7q1*J_h7sSe)R6W*Z|H3 zzcWMVUNf|>H@9Hz!WUP-xi5q3?tt6vP$tsykz0b?D(tV<`LM|?u)oc4yK{+=O~lAX z?AU-EXKN{uv6g@5YYnYmMJrYkz$^5B+4t_aD6ehpMQ18AL+?#M5d;+*c2N^^)EJG4 zrl>K-mS~JACyB-e)96K|4!!rGGa^ljQUs)kh%GrMCow1Gq?mG&aG!VP!1wF--2o|LQ$LEW0i4j*APixT4|`(38gRmJ zodUbw>^+b?P<9GpriHiI>1jX4$UekkFZyH;*#ORf2W)%8gCA@Mpv4Pde+ldd!RC{& zxgHEQBN{IwTlZjjIgD2)!7K(DoQ3SE!_qSj{EXixv{11}(vGse_p#;i9oiDT5tb$% zY?=WUuxkrAV?=tuwl^}-5B39Ke?IIlhP@zU#v1g>1~A!zjNOTBIe?z}5KqIvP=yRq z13g&&zroK5Euz`7@F8|7VwMQZrm&Btne<@S6cz>A`oq&?3EOsn3+#K)TJU&^X2AYz z*q;x3OJI8?GUQMAcM}-BOv@3)W$3}B$fPCckHzTu#h5D=W5!vGS!oG4F#Z27Q-8sd z_cErm&G@+iSc~QODNOrokQYx77q*44Jz0OShkX}}3=jD5h7UjZ2!Opn*jsXFfx6S z^*)pd)Byd!SHQ2@uRZp_?+aL3HUMjcy07Y%V98sE=L^7RKF5IO8JW^teF4qU6Ty!; z{Mf*cBmB6*j~D#-z|SoBnUCL=X{$uu=*em50GvQ$zmKUHFuhv+>?cfgbtujL6@VOMb=znqed+A43b8ZeUB^ z22M21z@4TVP9rZvKk_u1LmozpX^PQmayQ;UZpJT>tI0lcG5LU;O~S~@LlW_UlP(IhFx|Ox**oXX5z`aPa{bZ=nHs3ruJlk4IBELh|B>$-~r& zrkL83JI96GIG*In@gW!PY;xuypU?&KiwCVRmwvJ(c9jc_Gd3pbFJ*-K<;wx7&JM@S-yAh9SNs3eiuCEzb4 zHv5)dgOBIok2$Ws0^8w0AOP^gYj1Gz!h2J|#SL(g7?6|Lm>fkMau5l~-b_TcB1^In z*^{-%m8?Wl$x`f37UBhDE)F7zWIc%`FOW#Gk3{AlkkC9FNF{-}ngo(|;!Ez}Cv-P_ zJPUtoY;-lCdB9Az_A(V*rrmS~#$+wwk)=dP77_`Wo7<4Y+?mAY zo+P&LC6UEkGP7JxLd&%zw0fQdR<9A?`d#8#%ZY29L>#LUGPP;}ZV<=vE85P~!fbTs zfEELDuod>hPjA2jT-@-UGvEL|wpMy%ZDl}~R)%D5#UZhkfJD|}GPAZKp|t}EZQMy< z<4t_q*}x*=*mnpm7YP}=T9c8hBN@6*A$>O=(sN_J zw1;4Ehfr~cKyimSaL20Pj-7#99)OLf>s8=O+RWTVgDhL(f_?yI08?G=tN-AAJHQGs z$7`{(J_%h6N#JHe+$lUV_7ISvhlun&kyxH~x`R7jOz{As)eFMO3xa7X#MxAc1uqB$ zFRV~rIrzJC0Cq1PU(z%1x5`y_7HJlH28c1^#?*iCo;|qO;HL#3#(QRvZvqbk;(8jB z@l-AuOv5BM9TSKT2AB_$#s@@wJavaSe6g4Jg+TU&X!6Bs?2Da&5BAbN*q~3>0N~*L z6|G~=LoxTj0RJhvGeA?|#}&^V0b9TluO)bH2GfG6&_Le$Wb9)^`ZKW5_+c{l$3!;^ z6U}T4p4sTM+4#_GXsg+iwHSz)+1L%t#(sVlb}F+VNM>T^=noG5U(*`qJQQpP+*bo~ zXU-tOr#*gJ;k5*QMUc<}ANYraHTKsd{aIL81F+D}!Gbdn3(I`)2$bk1m_TP;VJQ&( z5eV@fxE6p&4un`-0FgF76@Va_H-rV@Yg&n}3j}6P)75}H;m-{pcf?N{yf#O3MDQ!{ zC*r^)mIKn8hXsEDH10y^{zX_^mmn5PnF2pz5rn)5LM(z1ydZoq2>ro)vA+U2u>vA_ zIRw-)h_s~;M@#yEuW2dTHrGdY4oF)ALVKO@)7BR`fG!oy($#-V=R<=B!Z$QJHVd!? z1cApY@K|lCTkxL}>K49rR=UG~>(G#O0eFV~SPK#VC*;JRke5$En681|eX@(_iNDiA z<}Mg}4rr>ct_Eb!oIwiE)qe!=Yl`&NU&i>Htib?GJp>`9_1Ne<&74a?zia}J&ET;G zeXlccVeC!O$*zU>D|z zol^WA#PSXZ)NSK52W|C-->LZNf;QWr&0>U(kM?V5`TYGt({qpfG_KV2LddP?D=3H9~LEp$QUP8em9OEPm zgDeyQSFVD9f##MSCX!+|AB?%`R0H`T-W~{(!y4Tg908^i!xz|g?!K@7^3HvCa!%ZT z{)81L;jBoCW$Oir$k$ZNADI{{nV3H_Fv!x;*feye3V}<)_(+1XNi3sj@a+uWmdqI( zP&C@f#`XR>$mBVcFxF2TTMLP2YauGOK9Ti@vl>ioq89Nuhq0o;oKcSfP>WbpBe+#) zlsXb3Gn?F=)!l;J+I@Z|Yayk7xFe%s&x5qGXF+<9BZJ6~ zA>_s&CcFW3em}-(FFLjxvFJLhy?=3!tv~z&_zv3Yd+5w>v3LFk`}Z%kyWbh~F?R1a zvBSRxbuolNGJs^g429K=M7;!M)B*L^h5)u8fQ`_Y4cfaX5ulX>dPPuI&Cu1Kg0imu zkp!G(>kr?v^@q>2^$*=SjBC)`SD>rHp=Z?EyC`n3?+x2C(GBw{8)_#L6IMDVt5i%>DNwM<7`%xXMDgHp20Y@R zbz_iBQAnZ)v^osxT1oBj`xR1a0>ftlEOj*q#&<7!tf!Q{c9o_rxp83A46pO%~c_mN0{Mg-rZ z+ju$whPwM7OdWzrn`+i~BAfO~?XWXMocORH2CM-m*!6(j>99K!cIRTKE`;4>u)9)w z4&!a)2&425X>VTag2FopA0N_w4Bown)E@NMZuIPH(3!i~`yV^*y8{x<4)>4PA^Em; zc$&hN5Rd>ifHUlR+;$t(En09YNtQWK8MNkgwyV^oa;zW@_j#In=gVRqWz&MraEYnLTG z*fW7WJ|F@t06W-rM%1Uk_B7a@0o$`-dp_(f27@3(<0)jxMp^}?%qf*1v~C45W;wEI z8M1B}M)XpQ{$=pLOk1DRO~ZTG()?z2nOe&(l~1zuhbP$c537-*tHEOxc&r4EAn;fL zwY?lXmV(C;{J$9QE&{`aXh|S?X90R~K3X~t{V^A#b}mNwT#U%M^gA%2U1pdiVH@*x z2$tVSSUiZbQ_QmM;r5nIccs4Gon1lQb zK%WF4Hv*8Ov%zB)*~5nmd`y9lX|U%9yK~70Y^Ng@-iYWl^z2kb*$bKOi4o_C*~$Ym zj|XNy56r}#;BWxT{Wgy7Xzr8Pnl1wZ@%vn07M2@-@R?z(PcsaRVV?{80zd>G=I~(+ z9}e*00v{f*Hy!`Z0;2`wjvjJDmbjrmT#?}}7$45)d1uT3PRI!-%nDBQIbQ!ld*Od8 z{H_z|>Mx6cx!Sr1_IH3c-kSbA%r^_?Zfu zGssDAE;;HgB?rAVWUu!u+3CFk93or2QyAfAfkL1KxC4Aoukv+Uz%|%zEMvYZ73rjc zFJ4c>b5Fn>T-^8uJo*F*z7nlD&}~*%>(l9%O4YootL|leICj z#&|Wbkt|KNlZDAaGB-Iv5|h&;G0r22Q3FW~uaU&yYwcN}XUue8Pc9Pc&Yk!H-rBkc zd;>0c-%+Sf4gw>x6PS=4k4v^(0oiawWX+L~6~~$^ISypOaU%=vG&1MTBndZ=B)nB5 z<~>6qK4uvHK@##$0H;a7%L6nd;9ddl(o3+v9{z$Px*E_dzz6WcYj-?%1|Y4;PNYvZ zW`<-XG$BhNhb#mfHMIL}J@x*h9D_%|<@j5bEo-FxLjK&6xvf;tO~IZg}m4=k|aNxL8UI$XsGX60r%1#2hjcb4eiP5nm!C zoZK=VoGL!(40ej3odaj1!QU^B4aCa zGP1HILu+R;u=XN-8-LQX!5-H33EdZlwpf8|u^QT9^J|j{fP*zSSl^|m;U~xj@=<&D z3H<=L+v@5+_TXZJ_bn~;$=uS2#1_UR0)&<(#J4gft~HlTZ24qpCnSA)3F+D6kL?{n z9(#EQXbOkdMq&mg~Me zb;D}thLzD(0brNp0uIgtz?bwSQwwA2Q0)DyDS!)JJ23Shyk}*rN9KSS5ZdVx-$9?a zjs|4nY(xgGm_*$$nNH#BCK691mnTSjIqNPGX=^di{$9|UUf9ojK^%EvmGp!d@W9Sx z3OKlbMJwTRfwS%&*i_~W5ahBGp4mI-YETyVDF%diCcyh#S7<;tJu;XAE#--cekyo) zBNo${iIth$kU+lpfG_%E2K4R>?B!=by!mbcARc_NpZ9@Km=5vbjlP)nH7#S#L&2^u zdk4%FuN~pb4qU7N34S-ja{4G^sX5N-ijsb@21VxTo=_G;@eiQ4^d^y0UHDHd{815uM zSUHetn1)FYO~XQo4*>yKbmxM{eDDb5=+31q5$P^EG8Yb+0uOUPXbHqDbGcwK1mq%& zjfFAzdkCZj*vZfTlIFp_-ydo~w(J=s5!x$&Uk>~lF@7Oiv54byz+^pS33x2S0>8pU z_oc^b@K}S1Z;ds3CdCIE68!NK5S6PT=vF~2uY_m}!Y+En1#D72qX2}<$6I#}h^YZN z;HMQ{i+$Pp5BwU;Wokc@J|}B1f2@aq$9m>VATE19hdGdmSZspPO#uKtuo3gbGsuYz z5X?`fVzI8r=Wdg~FMAgZ?RECi-9wX1)_>qve=+ReUxQgQS$~;4k8*!K1TlHZSa%_r z`BLOn+XS>&%+qN^k#}K z)LY56b1l2c+{pTyyqhz5He@He5#P;f_5;{}9pdROD!+sLd>fs67_m4E&3$Mq(VOUx z1L%*}A)fa)(+v3aK${)W#}=R}T&_ERqxJg?>vJpX?-jQ0viA@7at^Z_BsQvRZ*Lh&G$9XV2cea9{mp-yiPe ze0X0iT1Hk&gUKLxWXlVA3|C1Q3pgsymZM?&xP*_!h%A zXER&-d6hkH^A_v#2pEhszTP&BPLO3oC0IJ9`I5 zXBStuDIT6vr+H8Jo#E#{Yj(igdGi-6T(o$}vgIpQu3G)Xny3D>ZvE36Hg0-$^YdG_ zzWCD1+jhLN^VQdO@7cHi^*0W_dFZXT-+A}X?|<;&(T|RuIC&~qDw8Wh!@?t@qGRGt zpE;Y5n3SSQP0Ps4%FfNpFDxo9DJxf3R#n&3)oae3Z)|F5z0lUtdGS(rPj6rUz?Grl zk*n9nuHU$M>-NW={N>ZXefIemfB*8UZ~pP^_dneG@#kOu`Rnf!|F{1=ZvX%1?bp+1 zT5Q5JnU6M$m_}Qo)wWEtotSpJqv2jm%YB%p&qUkjFpUpnTE7&{4`SN?Bm%IOiNG^V z2%bX>USNW-or%IOgkdiehXYI?4kHrpF`+nuSR7}95yC`6iEuWP6fjXKMOZ4BxYRO%X+UI}nb5Q|vFSo^E;G>?WWqCw_>40Fx`PP)l?l;ZCPrT) zNZ&D0`iTkCZ@*6**!|8-rr!+=F<0vSF&X}g*OT%3F9P3*~ zw1Gif)~;iQ5=PPsFKyegbJy;@`wzVN);sTgaP-*8V3{&3GCKB5d}6XHEh8%j!-W|w z6_seBwuOIape`r0Nx?J{twb}?PBauPMN|L!DH{9P=VUP@X9tE=f~dD^e-P3sb^w<|jqm$xDp-Bqu)h(?`W)4v#rJ=J1%qV-Alw zJm&D2!-L`)IQ;FhV8Lg-;BZM0+kMWzsH5&_aM*KR%b`HgU6CsvD9ZwebZ|&jju)ha z-por5znudP841yUc~pRd-Cw}rZE}+UwUu=l+asgNnv-A6C*!ey72dqjLEg42J-oQirs*Y(bsK8yEA}^4l^pFT2Zy3uS$|%(bSNuR zI+B(l9ZgA>UP}Ov)8G-U3cc~D80zKNj)23+5N}(5H}_0iqi<K3>irTk2ByAgMNujRbGEo4EAzuh6j0bhlY6DFL!g|TN?e#G_{-R zsw>`TE-(40v$#;!otG!=%ghNGNX-rzOahOy;1QQ0y&9D+8x2cWUVBtrxy-d59OBIx z807Bk?%^aho}aC*t=(K-p+3-3Qu0wpAvk2`hg?p}3+YeJ3BD4a9XuG96*3f^B^?gW zl#M7e6jvV={e4`kfg#?!%Y)q4I=XnO`iA)xRW(~QCF+AMg{2>Lg5ch0#3Ujwq%RcxBhQuhOLG+ikBXjtj!oAPcS-vo z_ds2{RZeOB%Idu8ZRfHo4mD?#e{>peT^_NDJh> z!THKZ#>D}SefuzXMbjYnu)57DFQ4+$i zc7~S7Iu*sTi?U+*#gHQ9rBg+rkBqh}rY_ARoG0ssxbGMAStq16K2e%fvs05${Z>PK z<*n(K-UUgq7q;ZbG`vv}Q~P0kY*q02$VypLScSYaENN`A2>N#0W#ujo^sR$eKO4IM6x3cp$s5qYgRG2G^rq zMN3OM3ZAcQ&3j$bm~*5_lN-`rlOyl0$dV6~WynX0(iCHPD&>vrl+au0$zivXlOjHj zPl~$}pOSp@Vet*aq0QXyhgQ3dch9?k!;<2T!sjYm^T8qSgCdyuo6#u|HzQSXHy##u+xh0- zwu}9~yI`~NZlmMT?vlXbj^bx4TMPEpHx|F$q$xSp&eR}^b7TW~S+e0wXx-Fw>1a~A zbnI-J?0O7h5|J7<9+n#Q(D<~SXa0{4vER3C)*J6O+aK*Nn_t{fvazDIXm@>6`J0Wk zCC8W=L~miPY#ODe5eHy5d6lj=F}5H<~I+j&+tm*D?A(16nr)`ac1>`!u*jXG%vRGGvT)9+hW= zJv6R&awK0}GMn+$MT=*?XtO%nQ|VvSsa~sYt9!1t2HLx{1=~54Yx)9&gWt{!b|iz7$^=+!a?C(j8q8(i2e-(i@g9 z?N#KKkvid3s(7+n$^_>RXfjTtKVtKC_jE7 zRjdC)82x_{`u|d7QAk%9^uH2)B*&PM7ASgx3zQFyE8QHkp#ko+;bGp|{(kPUx+ag( z{JN*>GOBhrq*lD!q*5Q(>i@Ig!RY@;=>M={X{QqUUtTP~BrB3%Vru|h4~xDYj-dYv zck1OK?#A{3ZgAlR-~80t=j)QI_nu3tdbcsL;&@ZMI;178T-q8{CcO||CT$BXm9;BM z`%R?`mDhs=CvMl_e(b;DzY9HbR z)LrAgnE5x!d+}o)%ILmT36Y&IXGOFeEQ&b)fjV4svPxMOTq~=U)`!%{G{M#KbEm2m z4S0I~L{;ed<5gje$11}g8m$8+R_8}d1M~hN+?@Om`@J!r`o6Ecu}mr*el9AwZ%_QG z?zdIPF20{}q~mDz2W`i5|9s(8{=2Oq1@E*<3*T;$7aeX<6di63Eq<#x?4dDHXCa)Z zbMl&~@?QO8+1!0M^HxN4Cht_YB_FP7O+H@VoUAzCn5b-SI1_q76BE`^7ZGu>HZ-cM zMiJ9fEsg7~3O?Icc`~uT@`P%j;&|3T`LXN=#$yhTIXvd@n8W{k4vtFhhz0kD%tt-Ny?UU@yfRPxX{kpsPL}p@W`GjW%T7rd2D}0$eAnZ zQ;CD>lc__cCo+eMPh?$rP)yXD3n%Iwye4X62AO;cKMV?(N5l(3Ay(VhCz+o0REQ#q%-3|_K*0iL3plM7$rLBY1rN}SVBr19;&no)W zv7v)yQQ;${;gO@op>fxXl!@cHa@AO-EPW(hmO1pGU^#eB)OxPIS21({jl#v?uuaDy z{e4Yi#>xMzgCxs)D-sj~%-7aH;yz6~lXyERCgpm3RNB?Ekr~4eir*$V)H59X zz#$MEUQ)NE@2_dedRx<&bF}%sI>CG1vqQpBCK#HdeFk`nI3pG_G* z9hWv57n?rvpa2KKZwM$eXnYUjzc;)WbCbJ$$3lDnD=3`CNHGDCRg55ku4u6 z&6Hm)NK;(ThUQOC4!xa}6n^Jya@?IW$;mfj<5Ndt&ZJ*`Q2g2;(s9tZgM;t>@!|#G z@S?gcYj<@^?mZ4^`HG%$T@B)DE_((dS*5snHYM~{Omg(C7**npsN~dZ zQHg0+9~2CSUmI*Zf77_Fx>xP9f4pQ~TxZ4$>h_#ht6K|R*EANt+oUNu-p-uGD9Mps z$;*_DWM;@lRcW%ZgjD(USe5cdq$=V@c&S;oW7X7S=~{zrRqZE_S$n52embb;sRMuZl1J1 zJtyQ!a(2kj*{qP^n19tDl%ukYh|!RYxT_(V@gon4pBshzpPMW_emU>F>Rz4K{_Ev4 zPhZSmSJqjvzM`dWOWl94Z(q?-*XiTO)m2eYtk|)FWi8lQ#11M=KkLK}S;*Txyfw(+Oj&xxCFx{$bI&TsMAi+>5t z-8b%fPS|OG+u9y|!|wNO4cVai-)KeWv}R&QiwR$l81dZ#1HOl&C-gFO#6BwY^C3aM zs{}1=0IOvVV6^Nh_jPi{P5(^YKIfO@eTy$dAK5qVc}mnBdD0jTFLK+wJ0k{XO;T$^ zXIr7!UuMB~h|Ks-u8B}!83|o<PP>@T(wa(u|bwh-DG(C0!mlRC*zL=&YG zZ=x2kCVBy5VobU5>$r2plCBM>*W5jfW*5$EcP@+MQ(IV2+jUnCo#!_qB}?_s$+5okR~}OX`-E)#@lHb zoSmM*{vR4>zhT;7@ATQjLo?n;jm_9?K6xu%*7K4?kXfVS#wzTbP_2jKM+UiGLWJce z#TYJ9oL0O;a8V}j5Qt7{l5qJBA&GS|QkefkJ)JjP-_t++f!wj_@7T}H+^P8Lfkw{w zixm363IVmST~5gzYNMnZ4a5Y(jE|#jm?+kPj^Lfh2*HI2licty*#iqvJWV00w=qbE zV)&+7N8yI++XrrZ)ID+IyQ)jG%J|QyC+*E(698>+t0m7m2qm=z)4fLvGFlNOFinVtb!!94farO)m zxVr~Q++BlI-p&C!f9C*W$^qv+Hv;El4+7f@uL0wmo4!#mZyJ+s5w{DEI$A4XR2p_E--WLuXTq3^aM427u#Tt&kp4+8tV*MRBuO#iGt8!|YadkvTuLWU)P0e8{xFl2ZZGQ76wYwZWHk)omb zperM-^`+#ag0r zHmtsTDgpPb8-NEgI3a^&!KU-t_u(V*jk26%zbhj@>Pso$!9VvPAt@#27g0OCJX*J# z#prX=*n@VmV8lk0j+*f;$8>o0kQ%S)Yr*TfrxNfK4G%$vXD%Cb@4<%^8)bQEm1}Yr z)6x`*t8lSM3ndklQ}VuMO2H$b_BuKAK|6yrVx{uOEM(bn9Z5N+CbkYMiJE>nQP(q- zfalJlVfLiK`j0Dy4f4FK!d2Wsq*M)|cq=9rZl$CHN^-kbO73=vDg6#UZP?0Yj+q(! zPYg8KNi{_|rlhnE%gCC330c=Ol_m||2WJD<(?vtsdEMg626?$F({jL@YOT9`7t==0 z1pd4Skx&M0BI>A_&p2V=@IGy0Nhg#H<+zmIIxMDX`bAV-&s6&VhQC9G`DN$zix9)g zb&9-Vw=1LC=S>xN5E?{0tRZIpy$4Z{hb>a-abq*%RB;EQ6i6o|T*bJEtr`(9+Xnay zZSPb9-a9TE+>pWc>SaUA8bw~Y!WM8GnK&m!Duaw;W>$)q_mFrf(|!+u(r= z_E*Zz8Qwt*t5?b=cM!TAo|LI77`N8M!Zu{aVid1~aj<)kx@;>G8cn9lnpPB@7hb9+287L-;nv5VnmwgwaR_F}l|NsRRPI zP6NSv9{~P23xIoG*;(rX)R=bb>ylUfMgAK=77nAawTwAo%D4;C;62Yxnc8PZAGtI?|6A zyrCr?vv*fS=c-Ax*->egjgXUA@a+OKp@VI@e1CBH{Q;#LXP|Xs49p&sf!mERil)@1 z@XTqKBD3!QBmB@mfd8qo@1t{SCkAJdg2}&|OuXv(dN!|78 zx9zi5cb~XvuXp?win`-fl{B{AA@=VJ3cdALZV(8QHweth8w664;=Fu=KyXk~#Tx{y zgPz9NnQ4@rJ*CD{)2{m>KjWV7+HZZie|*M!p|dk9btmt^HTTaKa@*ImvQy7mLV)Ne2Jt>p2t`dwi<={WIGW)Rz+(VKE$patl?GnHwcdO!9<68k>Z0rXvu+YtYm*TUb?S~D68rs z%PR|1MMWoLN_Dp1aCK^6+8ws9ZhTe&X1&7&Pp&3kT(AZE(~`Z2Z`K}aIJ2#;`ipYd z!B6+2_DvkYR-UXQ>^;#)EI$q>?;b}{c8z1HJIC;}9b-h=j!`mw+bE5(ZG_33N}0}S ze{+ssJF5lU{3H*|o=*kOEy95}RwDkjd_%*p>$e~NX={1q_q+D(`KId7&hv+>x1X)4 z*?Oj-Zp&$S{pPPw4P{?p8aI83Z`$}J5w`IQ3T(p{bolzuS%|3wOb=WKOi$bm^smkX z>cz`0Dn2ehC*F=a!9T?BH(pNkw3Wbfn3e4m8! zQIa4T!Hd&jtTYosDY7ACYc2%W=7KO&&I_~ToG@#q)PVUu$T0VAU@RKmUG`hcs=a3< zTQK9Iy`nB*wJ|G1crqfqKP9Gz5`0D^#%9H%bWSot=BGmhQ8tK`{8hb-{-)6dZ74rv+hZHy|z9Qv0{T^kUJl{5RFg ziqq0f*fGgYaY200oE0~C(h{^kDJ6&FVp=T9pWFv!f;3J(K;n1!aLolTTG8!6we>g= zx*iMCP%t1(9a@wnS89_6>tmMF^WDHTGMYqX?qPQeU}Dp>}bVUa-{~W_gprZUw{m6 zT{bAzVaMcK#GR5#OICW+la|8*2{}F-lT+hiF*P0J)AN27vrxQ=aS=rQPOM_kf>96Z zG1@*2M>%8atI(bFS1b8y>xE&_jmS6&0tIYp`RAP2x^jxg{$<>`5yc0|_NI5>-+X zVJRh3yo>R2=-n}juB2hIV z8B~$;lW%jxlmQ!`K5Am|C)9NL2{~0YBB8Vmh$*@rA;s7!pqTTecG>U=O}N zbxgo)8{{!`yCWi) z`4h(4NW_Rr1q|eNw~pLvQIn5ppt)ZvWqvA@%1&~HEu(C{dXUA@_OaN8E+)&=QEI^c zr{TGIzz7-ImR6n7EkTd#mk7JGYfO2=7FWiy$CtDn3P_~VbhcQbZw+zg^D!B zpWHtPpjt-hlGY)*NYh8->$_=OV@Ih0`>bn$&Bj?`YPWkr+{f>r|1DZ9BdQxvIH2aIygb|jCJVt3@kCR)aqhwX<5Lu?_CpYVQ z$Ugg&a4G(gbM z1~D4WAX+OPK~5E6)GW>|eY;DBd36_0-850+gQLi!exg5Jq)3LT@OP z8gSiyEpX4C1)NVk2duBIxa53g*ALOZAN{KPAxwMMBQj^?J(t11E!gHh98)>rNhLJ@ zi*1A)*Fwk_?+?f(^5oqC#>D7C8aZ7Eldu3Y$vd0Onvw(V+pYzk`|kwq$DafCmsb2M z`1IEEoexzFOx%VJc0D22M^`vi{#`+Zr#dQgA>vYK{uek1X=whRygwjW$$7kmTD&1> zM_E|y2n(+rZV|UPS(W)x1KwNz27LG43A}Tj1)gV?{+NAe?Z_v$?@CVGfwgo$Cv8cr zGD`#HezEsxSmZ%Og)V%&c!L1V|Hb=*G|5g$g;^eA zlspULi7)y!z$siI{L>1fGD6FH8w5@Hw!HiC1a!vr@nO!UA*WG^g8 z^)?0RzJ?&vS07;eYXkg}I}yA7nqLz$Z~L}==A(t0E8#uJsq z+VO+bBcs*yLnC#}1H+B%eM4|g)gX#nF^J*q9l-O;2Z(|_{ba%JKALb>A4^nf{i*A( z?k?PTU1)sTy@o$#z90d!7qP&+kBArF+JgG|!#z#kZ`@b&_4dOD&+V?MI$c#?@#UeW z@-L3UcYj`w-1S)#YR9Jt^!8II%(e+EcIyNlx8)=Wzxfj?q3jbTvD6Bg>#qv;Uq8)w z`uh8%;EtzRV9o*}cy%!fEdH1R=3!Td(>{@X{u$`7i*+7EYuvX8g@v2%UdrM;Ur{=R?ny5Ej$UHfb8wvR6~ zZvW^4e8=ivP&-%s6T55GKMA{6{!HHU;m`E)6+dzImKspq^EaS==2oCuI2Xv5z7E72 z*8IxbQ}H$DK+|XJI_ek;CGKaE)m;pxDNo}%GZcX@O%w%Ecu6pYl?9V%WhjYk4JYB6 zZ~~?eCz?!=M58T|Xz+w1jivRM;V;8~7+N7i+tZNYHOR08GOSzn-$0BGtSqy8A$?;@pe1DoG45SFn!6a4|N}?6v1X2}Az%>!b5KS~$qKQUFG}`En z1WN3(;qSMC)&+BcV#ynzdEMFzf}K_81$*JAc!wDy+(u~+2d8UiQym#L+n1(u{V9qd zm?Vfp37j;NKr5ngq$(DNYhp2&As%bA#-okSSfJ4r^EA1mr3BQFLGu)3_y=V8;0+*w z45DpS=Y_lBrvwL>!@N3qHy3TlbIGm@m*q<{Ie{dVA4-r!kvL8gjicqU7*Z9F!nKKL zlPM8xbR+^zj)bSl8Mnh+(NY3!R}5;%pnM-PtX+3Oyrt^Acn4xaRK*xfF4mBE zzp@~#w`2tvPg+RvC;7}!g2gWGq!JOLFjd?~1(B*;5N^nOVCK9XZq1tEwzM8$Pim0P zcqvU9bWdD1s20BgWFN1;AYWH?UcM1AA=}0pl2j-=#Wj|!2;oVKiT@cR_xXs>6pccG}>kb`!#q(;=;yHk3W7LOJ851hhrN}mNAE9dz77$!rPXy^?*CAuJrPWz>lP8XjxV4(|+tH>>*Qj(@$OwxA=Nv3uI*^=dxZD}6a zktijghYW@}w*cKsbAcK%sFtn$O|xw8H~M9bpBb0aMhqWGyLFq5d2P8Xqd($H=wXqF z4xjd^$pyQDGNKg=zY?>R<9ue@0GF=s=Fm+Y9GWG^rrFZapVnk4{iorbH-UP|+TU~^ z?ETjCLBr?P4=7{S<;}g8wYql8Hha!q=}tLof-x5|;WCj6S~Y1{Ag7;XOBLfxp?Z+P z)Ai6f#!foRoToFb83x0iEG1xo3`WSHe{n8ogAAJY*IYC%-t(PxQQa5LcZtV6iv@r;>veo7E9uAuv$aI^T z&>_;}dy2OQ*y5W9ZOZ_zRojb`8@likQwKq0$q@y%bSVKNWH3Pn!wYkP=B+n@;q8wu z*_h6C z`;Z1r4@zSwpj%8G7@0YTZMJ4g37GDN439#F=jQ_Ln{NX1!d1XCf9o&Nm-e0Se4*~d z_*1w{&p#xtxAh|?Fh9w zk5pPSr36fOT?5RI%ml{g<^uieZvw}wD=vke-}GJkGrLZXJ#nyb;&GC%>vfqSxz^kg z-0PEhYa?k#=gKtv#6BxGT<_)t(0-z-ZSFSFH!mGxeEANHcybjUJGPC69^S`>4IJUu z_tuGPdYUBFT}avC0!DGLlc3z+L2jw)ps6a`S*;a$p1M3QQUGH>oWJkM%iBunXW#Uz zLE!co!(G#7WR6e2*LCT(m)gMWC8A5uY-Ieju$=Jq(!;3J>*`^j??BW|RA8$=IY>Bo z{3vD=vuY~Hp30dLEIgkMT0!q;9knx1xT zrvHX%?laRLXaje?AOdq1F~G~K3BSKvhWusKuErnADyzTUesKT!J=GOwt7`Y0K2*Q! ztD43gUp6#t{{jZz`Z)@*^4_k~^Ccl=VZYwOSZ_iX;@ zaQUVmYbrMU&``Pl2Uyj*?~(h~euvq=<~zdvkG~}!Sp6;i;Hqyphe|1zxb7-X-?dk_ zeSXb!5xDgpI(T>v4m>{(2Hu)~6fAjjA6U6)4_Lco8`!jBGuXarBiQrtI#9KC4LG>& z<3Fl5to~Q+##NUZH?8~~UiRVd=*=rG;eh zv4^_Rc$qO9dVfpM||eO;fT5YNWz?{PMH2%e;NLV3_QpndSW^dK?cF{=K%*Yuy?P$ z$g0}&1M|qyvve5hGb)aHf=K0!;#iU)G+)_|6svpTGF^9*($LkQHWli%md;wEwWG#r z>p1GNcU1fB?bQ)`swQfS)kf|AEx?BiV#v@88HA95yJ<1t?pSw`vv<$;?1MFDm<^au z85sI;3Ry5rWXcC{+}2*SNY{mw7z=QPrK73U*506Xc(F653t z1?vBMKycgDpcyhqAcF`p@E`+k+q#RqJ>}nX_tl_j(P+mUid9o+1RKU0W#XF$=rmOinXNAn_?C98*pWla+!*033Joh*QN(&;(REAT;HK>ST^M9NeSCTpCXEEvh87Y#D9 z%KFkd)!j6nx|1T*wv!}{?F5Cs4Ogyj!`AAJi5h)FqNY)e(=@7ZT3sbx+b~y<|4Lss;&Gb+0?+3Jpr+=g}r-AlpvHn#zPBF zbBW6SoYbnW?9BQOCP&wn$}_Z(#mz>7vdw@~wbi}dLDe>w64XW|vEERWq-m5UX?1f2 z0>mIj4B|J2!<(Vt=s_qv?)XCD;QvtSjGmFWlP`$_vi=lC3WxKtivCx>0twLw79==l__ZmvN1pP}%L!Ey@}TAM?Wjr}XdQJ=@fcG0&> zP9#kiyD}yee!MfXaM^%3p`u$zR=4vR`lc*)yOt^#s7xvzDoQTz6O*etg_N3Beo9?) zK2_b6N7d+asaoA!y){VQ7mIWd;k`B!980R zC>|<~F6ouyYdRz}oq@;ftYHa;q*TR-fL7MeLw+i`sj4<^YHc$oRo#@6TCdMZ)ill( z6#Qq9yfGZw0l` zlGILF9%m>wOMWJsSvtUGRCZ@ERP9+AwJlj0b;c}uy&;RPX`HLK2I(8aj-?>7*bMT6 zrciqD7*tuf|5JM?I{+7X(bhXt!{ZhAk)>v$1jPA95gG9P>*)H59^W>WWfS7%=rhWd3H9GX|1N#HY!U(o-pdiXLiS zRVR(BYD>+jZAoLRjpDP>K#y1aU-F|CT;O(@UpPpl~IBOvoWNmSKI7O2`OyqeaO z+`48eN8L16Q23ugwrwdC?b`t5d-g)zuEQ@4JMABJ?Qy*^a=_!llzHgj6-#3CpZ2Wk zQ{Dx#j>u9zV#v|Z45_sl?ZoPwuEc6dS3*@~SE91I6E9V@6Gb(xBtdO+GOx}!S8omS zUlu|UVo>g057paufo`k$la8%6H-~o}J3qDCZQ#cKsOHP&9*fN zy>Z*WE$jE)8r*1herlsl|IKaQ#@l=1R8t42vQhh-`~e?vc4t&Es|8<`W}v8(b?G|1 zHq(IBt{Ee*GtL#r5QB2%LQrg83RN4{K;znt_j*@v zotRv`v;XG0H< zw@l+%(?^n1FPx;4&jqoGBhk6oA&ekyfGCRTqevoq(`8{jEO|&bM-kK|PzH2KkxG^R z-E|6|PDAlrLFs2GC||w+)XP4<+xN+*Lsvify7|#}>s7B;9F)O&C*G6Y0j#@+qG{Ld zaiq&0WZYzMTKxGaM$A}zR>UYSC-h7*H+Yzq7jT-9?>EHe`wZp@yaz=>ufd`M&%ufU zkHLE3TtUUBD5(1W!$+-)7YvPlG{5=5C*P}HFWDqR=Knm{;=ugJ)QkG?NJ!FM=NRma zH|EVdh=}P3Qs^Z#CFo)z&3`f}&G$kI-FqTE!}C0g=|0Y3o&1xZ={i=J=`yCwaz0l% zXP{b)dUGdcuy27$^Z3Gr)vrEVDubmP^I)wh6L#9ByguYi{MXJa;mOH>sE6L6A@>3z z1MY;y_}-3*^PWja@Vtq~y5C4nJb9glbG?@F_T7Wi6>idrD}0i}bRo%pTA4go59=48 zhFa&Nj6)xqRA2sZkrcjInhQVu&VY@(D6sz^9;}bVfrEX-YZsTm7oP6E|N47*{T<@t z{xs6h^$9w_`7t)g=@B8=@gX_H{sAr2?mZ0`vokNhQxnyZnBcI=0^o%;a0 zYcCLY?*Yo5U68hCC$RSJ0M5R-0_vA0KwB{%Qn!BvRLfP6?6eIiUgkgvvV-I(kAI2S zpvQP}^gS#cdpm)hbQ7JIaxF%fdNrz$J{?iSyc}MVc`39aYbr#QeKEK`=VFjPXELyj zGa1;&xez$aITL&)XDDR${=eZr0}U~xB8D`?Ktl{<#6a^r2&sW~K#lbLhnx`dD2Wt% z7oUck!Dc33PvE9rLGv>%$B0>%qKdLEMiggHhF5SdgsO5ULNs|3!G^qvpbp+d&?(+% z$Z6iG(9?OnVW)Ys1*u<{KssVbM+~Wmfp%g$&^-QYzsl zo|SSH%Spc+pU;{?i`bJfGR}pl;@tBQ<-GG@HT>~Vt>DiPBT~0;G~|@mn{UX96S48;_F+ z&c!GT&PJ6Njz-o>&V=ivXTsZMgAqNl?x-GFE0Q6)N2ZIJJ)k3Jdj?`)B8CjakZHdi zIIahQ<7NLkJJ9P{Rz&!HW&&m=okYG$OQTOEXRQb2LeVH%AsLA&FB*=j zlMhGg6+;o7%I@e+MN3SlQXku?)F9QNI~B798Hj<27+BlB0tRBpKE4fdoex5;yZvjf zuh+Ajknnq1F_;-9fqW&MnsJfJ$T?5S$v=nB7mZ@Y(&2c8{B&%2@ldq7WH8ED+7r`W z+8oBW(ydIfrS_{5d+h5HE@q@1D>NfaV zL!M?67?VsIcPx!1JVWNnh6uvqH@m_9_=@UYv`*C;-=u0tXsW5fG}TmKn^dKVMwJrR zTqU0)U?OL^EX2S@3~Y;EfN!%E3XYnA*!~!ZUEKc>d4xO=`p3`Yhb3R(CNL)1WbPOv zqhN%VEgvND%ldFd)jbJSwVm;LbpxhRtx9ZEm*e#6V!XaiPB7F;2~9N;qOp3mfQ1;? zh#?y>a1QguJ$Ms;D5zD`6k)E1DMYGw;E|1;zuhTMazkokWz zNUi>Wq9aE@Vdwf>;S}&#;TChJ$d_}jNe};VXRUkgN35pKw2c?xYl-fGI zEVK80TJ92YugnvBv(%q5t%zif72%G!D%4h!$_)ylx~Y()(F@594Sb4D z!=p6T=cVY?xheWOZi=CHwjc{J)g=S)V_oZswmp2VoYwUh*VV1p;wnNavP+n3Zo#UwmFYlZ{X6jIu1>z&7n2cXVV(h z*))CKTmk!26W|~QE@BXxt^k?o1}HJx1C{27pvKbfU-c2U2MrGXGlrAlmy7}E5p6_D zXJs5$E62;q1=Q+7PIg0XrldKGS=++OP&ctMG>t5JgO)|tX;|rv^{jNg8mVr!{%81c zKI9?>(f*%7zHdF0@81O~Gjpi7uzjkxcDmbQ?{Tf$&3C-ZFS@TOlwzoh;Z&7lrBWHW zid(>J$lw(isd=gvT8_FYElbmwo~dm}XEkW)Or0i!(O93s(AUitWFrPHV#wR}H5Bgs z37Nfrhsr(MLA~Gfh2H$|!#1m9Gkx|Bmqy%Ap6>UFY-t+jbJ~4q@#K7D7HAr{;2&FsL zLd~u%pxd+eS*z)RyZwg`T^&1dXzaX;YtOJ(xUM&VRNfYzCDNlsS@p==Tb){msmRqu zSCr||O5`sp)->V;+J+=vgOe+O+bOe&gB)-CNdQ zJ-c_^*k!Xl1J|u=Tc?kCs4qH4D91hV{4;@c#!zH#QXfVV*GVmjXw9h%ZkDM6o3*N- zdP8k^g`qY|X{e2rHr2$5jjDK|v3j;37cuace*ogmUqIRVB~bs{@~7=@#hiIcQ&d-P%`i<#Ko#PH@`Z`H3~zc8%)Zf5YOZ_i!&Wm)gc zrp-Xby8^i9K^i^xKcVDlmdDZ=1>W??`tPwLw%m-+On zWu849a_{C&rLVR_8Bo)q46K|z$VUt!#8A9?G1UL`>HY3+KOMXH%_qILR<1BS-mpXU zWQSGJqd#2pA6f=7?;MYzTzAFeF9oE;O+?Zo$1s^8qsg3rVS1j=X%63ONG$LeEEBp9 zH407+_6ps)`b8ebKCzdsuW+_N_%RA3%RYe09~b=7{N;l2u|@Cq&V2o){>h3p)z8=O zE_%MhhWFgmmHE`lKjof7B!0#t0evli5P3P09C9%sHDH27_Zd%PdXBL(-OlmZu4jv~ zUCvhLIG=6Gc0N0p?L0Wbap@i5&K8Ikp+LUueb9U{?`+>k@AXbBn&0^3n{O*&_B zus08OSu?@hDditqZ~PR%k&_OpNuzuI#@!nU6NgmVGWVcJq6qhM3)#;)r z^~9ty&0$i7WJt50JeBG&F)?c({RjnBUz(h4U4ZHyT7YW2x@bWKe7i&ftA5LcO}iPe z=MV)fkKYq|DFqLe$9Zb+sR;R ziUXU&F<^fz6kHtrUU|BBy$Eo3`!~$Xyc8{rn#~v|)Z6D@@9C^SG zwRs>3v%X&vZgsyV;_$tOS-Yr0p}LyhM``-sN0naq;5`w1wkQXdeVY!ytt7#Y^%yv? zBND9k1;KH1A8@jC2X`A6@U?Y>;N$iXi5#}j4z`eZ!UjlAR;a}ZU@$`t&oev-#uF; z9Vk@(Srm$X4TU1ZM(w?cxSDa3_YLrlCQM3LNIhNt`f8_EuT7R(EO5-5s#&u4f1CuEzlWj{7+NhUXOilGikD+~+Fp+${aSWBBoX zh~K;z(B?}Z{`eY5blnO#A5*}F+CW_F35X?nyogHk|2sS@^hs!LPC7kHfJF@Ph#>(n z#F>8&*rRKJ;Jgip-e!OgJ_6Wir`K_KujjGUz-Ljc@W48?A<^m?oL2C z;kKVD>6WjCG~;7Tp7HJ?&v*?}u6R$7FZfQ8&-h&;5BOiA^as2nAYYf)=-*`&U(-=nN!^j-;y>LF}ZfGIyPOyS_E3k|-4Sk2^q!#e^tRyh^p;ryJYq;h3^>G)c;I`WSg(OJhpj+& zGlO(LTcC!zyd=f?{!Ji+KEkHP-iyn`-igU2&O{cFZ-f<5uZ5JRT@6yvuLLwOrv2NP z(|$wD@qjVrV9*$|J9v!M8ZyQ*gpRTFvjl`MO#ruS9^erJ(e!&rwOS1fyRE=-H3O!% zEzpBqUecm`pCu=TJtU-{|H3kGx8gXY8_@#lwFp`Im9SFAa&q zD0r0J9Wt8T5;mHx4|Zd?r1eM=zo&@aF}x*75u|A5?+Ho)<5 zdc_X$dB%tddqBg*-$|wtZ{S(fD+zh@OR5d#S^r0rb-Imqn&=6(?0ZXfWStbpfn;uY85 z`)_u5=mSQ4+#Omn@dhb_Hl4^}UW^lEPec{xjfbfPV88Kw+`3`c;SAyX1Mkuh|3nB+gC~$QEfw$*B zc|jo$v!l>=7&yXpDvkDLKR1aHa>t{K1!uxF;-Ro!Npn=ML>=2Btwi@oOX7Pa@`S!Z zDW+dsh#4plV+Mrp3doU8{Np}X5tkze4w z{IKYmoOs+cBbj=h%3z%)aw)c3CQj^;79{o- z3UK{mKCWN%uHG7w5d#G=uy=lo%-%nP#C#nTS?&adtvM(hZ2wlcy4;t0``(lWgRwf{}mGY80igQVw3J$4Dou@^2t>dTyjfA4yCP(O=&O5qI4)TDP8hRN_P>9(kq#*{~5lY z2WjgU0}q-1rMs6w@xIkiVYcx_&7ob7>W`S-YIL-mHhLT#)%y8#SB1tHl(ES*VjN4E zmy%z=&XjQ(f)ZAGSp_}4rIMcBT24=EFQun;6w_0?6m(j55uMg6MUuQLpnhfoDTsmo z`^O;I@)Z>A`~k{#uL9Nnb$@HjxBg|Y-hI8@;g5-SSKCv1AMcjB;AnM46sc5>VTwhh zd`^CbG=sw{NntB1NNjy2IkUB#!fY>1VRRHzGrAO1dUp{my;q7Pc~?L~3{=Fx{Ow~9 zA#<;C+xJkp=YhcgPOXn??jZD~V?L6afxM9HUWLdXwsHinKFyREgyQRdtHM@-9VKQI|YY++7qS=#im$y^?rtpE!Zr|IQ%&Qxix>40)>-g5vkZ zpj!L+bHmy%@Aj_ya%z0%XQR^xmiJw<-qbWb(Rf!2j%t##?w0^$i&uoMyxTJ z8){$){2E1KFMVyHCo)I-RrgAQihCuYvcAG_albf9I8YEJcy~ZY3>k<)xbj0NUGouW zR($-h^QVt5pIfzXWO~zAJva8RGG4XZR(JWBMe(GwgWyk3U)CA_X!7ZBeEg|6T6jN+ z>DSB3@#q!ho$RgUx%3Y4+zo?#uewtL--=U$fZ{^*~O21(K`ZjAtWJU z0-fYPPNI5@v*<44V&;iIYcfxa53-yFM%gZ{XL8(hBV3QV5w3UT2-m0l-2n?Ru)lc^ zl*n01^Yy%m{zdN%Pk-`W=bhz?b@$gTtGc&yL(yHc{rPvSY*@FBJ5y$yeK0q@LL+Vl z#su7m!FpXK5>H;vAUjXxQyniB)9fd8srDDo(j12;(ob}cXE?X~$#B(;F;8mW9b_#= zK|b>BtoqvIe9J=AsiB3ajys>cuYJ1w^NOeIewIDixrz7K><{K+D;vsVyA#;QE}oH( zJp%$C1ciD36%*xl8;^FrnTm0|o`bW$R!BI0wUT)BsuAft(Qf=Q(SGQ1vP1V2#j*3< z0q0{BNEf3nG|Wf!cYKIyJ+ly{dGgu(vKK#oC3(4SW$w$Jn;9<;?5Di4KAiZ<-Y)8u zi%Z~hFAtw*LB8%!q63{DCWbiPPYJiX$BI05H$U3;jy%@pb`9G4b{pF2_Bi^;)obWu z<2T}tox2(Tu7LLuYO3-*)PVj2l(A<%s&0INNeO(hKmq2_yspgwT8My$Ohl3KmrC1$)DG><#tU009NX zf}$ddc)z3n-+Dj6%DPq-pZ4`UGm~fUdkszgR(%isZ9aDU+rE196x1ri1rAOa`Bi$b)?ZarT5PvHyxJQTIre zsQNxewg}UeGod~q5i4hg!C*lEOf~qh(e{9|4hu|u8axc0!8dk*$kY}Rb8B)qvOt2B z88U24P-ts}N;^YrCYzw0js`g7sE>0_`nWhE=Z_G?{&NITdz&E2TL~f$<7Cn>Qy~Tm z$4antk`OCrc)?%}8|DjWuvd2mRl^?aW!CW2`jbDH!GEO*B&&=Nq4R&)L%N8uD}7K6*xR12Tzdo|0RgBCj^n%OAv{qgA^0wM3|xIjrpTpp`k*@lup5(ZD*5C8%Ax z1lvZW?jl+LK0&0n6GSWsA{fdte2kNIBR!~?u3(ROidN82Hp9x%Mlcv_0MqfhuvS?G z2h|mDnXnwpiJIU{S_NUJT|+7v)vPJ4cy8J}OQ%f5rm+kzjA7lM99m*6wANARBYLD1#e>-*B}lVBtuo-PYN(t*ER5j@gC z{~t$^6i5dNW-5GFXlH;W2hF$>%(4m>w`!ebkEh_jpb%k6;AplhS=Pxcw% zPxfWMAFMlm-+x3HAJLjX{bN61+NFb1O5G|00&vGU3%~T<_p9KkB z9U-185G*u=IK&G6aZV6s(BV_)3SOlLxHa4%&#nAHkKMjM-46(Va2ox7xSjDIaJ>@n zoqadp8|$U`6T3_N)~zR?!~K20bB_<=X3vi!^4Gzibnqn|1g5G8ww?7i4+?iDZ!upZ z1P56|9PJGMGzNqP9QdsD8scr_4|3~#e|qln`{A+Qf55#l;5+AxxZmw+;5XO%L4EA@ z;P-Cb!LQuk2EFin7xd8UeeiAWhY>;0G+6}9mxDk{3I4{a2(_7oNEdZPyRAed-w2^% z8%QE32ux-{l z1Xl!RdHoWV`1};E^ZV|zC7_>IAM};GPx8g*2keXAy5aIwM-SUE$5% zZz68;-b7yIzlm(}85u~(b31UJ97Lpp)Ijxb4wB@kh7`t1BzqboL12sMU@F35+)6Y_ zuVc>%UdNsijtoLbhal1+KvM}3da6h=n~8KgHDuCOAd_Q+G`5N}{(s5Bo z;t~ImLFg121kaU&m~@C)t%5Y;8OX6&gnWuN^4NyR;o2bGkBY<)&QNqLe;_>5|C^*( z@>yIR-Ycq$elOS)_l|!o@vZme}}oo1Fg(trnofNed-R0~C2!Aa<+v$%dV9^&l-up z4xyw&_!1>@_8x~~a`vt?pNsYO8dy(VjcT^(&nhp6ujNAKhr%E(*|v$=Q_`f*V+&)N z!>f{SOX@PO2ky(e5^%bpDd1k=v7kpq`z4Qxc1j-?ZVP=}uqEtC{-&^}c^ku@<%|R( z{y5B*LzKEAvNgw%^ZyjAH=m6f+r`-Ayz$Sw zIk8t`%Tg~yY|J?=-C1}{aP|w9=`7S*Ey7lZ<=?l_^n16uT6EWO9oshfvmRDTeQy@U zhFr=@k2{@GnBEvym3JVjuDBumKzV&wQ$=0Gy^5O1`{mWq56Y@ynoBBT9u<|xJT5GY zeUd*Ch$0=r|B*w&LPZp6j6wD4iP%Cu8`~@v4A$E&?b}7s>DkRP?%3^V{oghL^VWu7 z--~ObLQWMV#~sef$!JI^%io?*Q@S~}p<+Yy>8f=xcdIJm?p2h<-!CtTZ!Rs4e^^o! z|EQ=i{=b5e`0EfsIwX-ZPO-*lY+S91t!t*C-gNHw25a??`yH3RKE%*{alqZ;?k*q3 zm0GdS>FV&1LuK)Cy9+Wh>avOoHl$UTRV44IDos3AU6gctU19Rw%KYSeYx9#Il;tHi zm*gcqD#}fITrd)dCTELC(jj%80?L+*!e$*6Y}cRiyTNGImjf0HdXCyJ={QMS{_v=) z`SpD~`netc{G*$tl7@9Lv2|ss>FW#g3(9gT%L+2LR%K@#UZ0V9vpO^5PE}^cy^75A z2j!V*&83-X4~sKX9~X`UV*WV%$)o1Tqhhf#YFCZJ&efBC?l+j;+i3Dn*BRUSFU~t_ z-Z{xKyL5<4JKo^O+qXS9c-yAPnDy0(X=Q7(^Yco|%hC(CR3+sfsE#lAw>mNJPE}Iw zy^7@Q2jwYQ&7~=s4~tVX9v6-TVo8T6(jn^~d8|`c!Zz(O*t0_Q+mY3i-<>v`)^XW- z`lHMC%dVYenw&Z2>2m0xfLq@X7+AACEV_J4d}`i?jJ&j};?lUaHIZ{ur1to(OL{6T zw~eRXxn`$v@gm*m*co@{hGRaSTMh;URPK>R7SzWir)^Emj@wdD6jrmoJb2^oO7X_? zRYB|TRfJUBFApnwP!>`0uq3MJQBickoDI z?buoFTYt7(uyq%AV1a*%KMK%8w1gw9OA6WG?cO;OgDucAivZy4_uAQ@G ze>F~(eRow==Gk)<;`U25`AcnjDkq*>%-{RSNvHNc)2iaO2R-k)FE{zB*gx`8SZGjF zLagw7b~5)|MLOr~jx5)6r?c5-pJ#K9Jj?Og^DKu~|18I+?s>Lg)AOv6Kr-o&^XGqA zClJ^-nRs??G;#m-XyWE8Rhgz&YD&jDbtmm>H=n<))j@mRbB1Zbf9_7H5BYA<_XB(+ zcSFT~x8p;-Z)HbuZdJyyZq+ByZ=Xq|-RekWHoZ(?A8$+L9BNJT*wdQkRo^xuNL7(R z@pu_*CFlP}W#UegGI90ZDB|4PiLyuEs*P@Vqcg3x%T%rEwcVN^+H=yz

    vH#g9V*9sg3LC#IRxSUw`k&l>)5R(McB`WM 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%0AIKEFCCd}8m3Cpy0!g{TqxI-%^?$_|7 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 z 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ðqAkdTD&nD1Lg^($|k^oXq0t4Tj#loB{ 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 I7|x*GHFz!I~Al3J&%)co7xrs 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�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�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 z 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 )%26TcPZLOA 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

    *`?fjg*6#ia`J|b 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ⅈ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�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

    H-M+UNgQ|J!Z-`@H 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%0Dc1= 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 diff --git a/tests/test_backend_docling_parse.py b/tests/test_backend_docling_parse.py index ef119ba9..66e7771d 100644 --- a/tests/test_backend_docling_parse.py +++ b/tests/test_backend_docling_parse.py @@ -28,7 +28,7 @@ def _get_backend(pdf_doc): def test_text_cell_counts(): - pdf_doc = Path("./tests/data/redp5695.pdf") + pdf_doc = Path("./tests/data/redp5110_sampled.pdf") doc_backend = _get_backend(pdf_doc) diff --git a/tests/test_backend_docling_parse_v2.py b/tests/test_backend_docling_parse_v2.py index f27ecb43..087272bf 100644 --- a/tests/test_backend_docling_parse_v2.py +++ b/tests/test_backend_docling_parse_v2.py @@ -27,7 +27,7 @@ def _get_backend(pdf_doc): def test_text_cell_counts(): - pdf_doc = Path("./tests/data/redp5695.pdf") + pdf_doc = Path("./tests/data/redp5110_sampled.pdf") doc_backend = _get_backend(pdf_doc) diff --git a/tests/test_backend_pdfium.py b/tests/test_backend_pdfium.py index 0a290185..b2a77dcd 100644 --- a/tests/test_backend_pdfium.py +++ b/tests/test_backend_pdfium.py @@ -28,7 +28,7 @@ def _get_backend(pdf_doc): def test_text_cell_counts(): - pdf_doc = Path("./tests/data/redp5695.pdf") + pdf_doc = Path("./tests/data/redp5110_sampled.pdf") doc_backend = _get_backend(pdf_doc)

    |?*#xU=|+ z_6Kn3gwNB=7;}j0wQ&}}st0>vt`XXbhj9bNk4xeRE3!iorKExwYg8)vl`jd6qQ=`7 zpzhK1r_E$o(sUgG=Hdbsm5nbhqR`dNiU1R8n=-s~pr=#j%Yl>a3b?w32a6&e8SFuh8h} zqbQ@&hU|3(Z2AQtFy%^_QNg{?3rtV&qNUGRvBkINu4Mbb=IZqbpTe~nDSMbQi}(sS zg6JpXL6-SY$_Usi`2{Ty>JVyHiZ8jm6hJRTPMI6an1LM9yC__TanQ0AIjI@j1NjUG z;MuUcyg=e&gn7~}(n=IA#D#npqjqbftilD&IYkxVw&*<&Dv3+A+3!K(GUP6_HEa@n z0&9^witWICPP~T?BpeD(AjnDSOWqUB$3T8vMr%$RpuLfDLS+$TU8% zXYEXLcMDLtk2-$s=zqMV!ukqz(vr= z3cL%ZxTHd3xgEJ&Gp;{NxJ8}h#=Z#+RixFI0{P6P^R75DiJtq8&8B2hzbs6p*wNG`Kk1igWUZgkO^g>a zF$wgYxkkA8jCDx^_>MA07@ly7>F9Nd$Y5??IE8SB`NQNRt(CP<>u0X%7<~(}fyd5C zMK|%rlWeg5{E*PAI4B?P<&S&LudwIh?D(5ahA77b;s12@pTSdPet>mIk}Nt=fOe2g z3ysC3N&7rEVfv)ycCXPdrF%`v$zbU}okuVnMk;>|aDn%huTS`eBx@!@&ZC+%o}Q_w zTk7+68&EEqr6wR!gtGUauJpJJoCeF-Bx}yR8!ML^=0pS;%iHowmK;=wK?c@&Dor8S zkfyp(q}_DDEz_RYf_%0pBZr?Z7v0D!kKu@6AX=b@cnoZ_#8R@OIC<`v%pV$SSS6nh z)9R2krkfZ~;uRM5rRDM$LZYI1{4>zrWf1~s$&hP~&;U_4mmvIx^foLP??GwLm+tfj z1$1YvDVa$1W!EEqMCEaSsK)^XoX?mx7d2OeeLCkFcM|7qNEeLYwH*icB3&I|0V5cf znBrCjz+a36GQEj`{&41H647~-6+|wWlgN^jiwz5TILaffpDESV0bFPv)J@5;r4(9! zgq)5n?e^heQfdU-=?zgcPl0`v#LPD#o46Nl3*VtJ&mrihYLJ?A_8= z|8%9_Rjp1LiiK6-GXj_2sFG#lJPuX;%8j!J)Q3122rkP-9nfZL>OZLDDrqh>G0Iwcx+HVi zCfQ_BfDyqR;3^*qGi3@VG z7iZ%0ZJNYK@slQ@5*S`vm!oPUmr%Eblz4zQN=l1J=Wi!d{eKDqDcB`6fq?3`;G3YE zN;I()Dyb^%cLV;d!-PqWF9Qc`DV-lCb*J@kD{u>p4jd4eMFigda zlRogHuog*IxrVTUrKt;?n5EJpB(kPG{d(L=SohHCZ)6&ciYFw-zFx2Zb&wueVkYc70IYI9T`+ML|d zmG3=eM$;Tnq@JE+D^i=um+AjOMMT%n1+tfg)X&d<=x$#hQE0F*q<*Mq_3YJ+$H5B? zuGU^E*3P2fw6i@N#vfETrCLz*BOt4K739;>dDS0jqBlMi= z0}kTXtybYBOKR0m2n0JLO$=ddR-|Sf;if^iY6{s$``tqSLCsOPQQdq$Dt=PmxlSrs zG>&bR@-S`J%xB82G^Ihae2}5tj~2B2jSAsQ`&q`m5ZNUb-<2sxv9{WJ$ycy8%v>u^ zX4M;zWd>aL|9f5`X5wC%)&l+>4xyHjixB1u#3x~?XWE+1Mo|T2gotB0mcHm z80U|VApnTQBn+8G;ZkL^%F;%92V-qnFLMWLFZ&SZIQKN~0{^1mg7CcPocN67lyp#b zOnz9=uiUHZQ*YI5EMHgAS=mxmSFNn!)l%z_^#u)SjZsbh%`PkEx0ts4YW>jmxcz3w z>6QJRTUM=FUERfBgI}A!E`Gg#_oAMeJ>NIH+&I)bxT$Y**Or>Cf^CHDpdE=j1N)qI zS?t!^{btYb-qZVb?_YbMwqJOVa0oPzczD?n$D^~4{yg^j`0$BSgS$_zJymyFc!qcu zbT00^*M)f(^)J4%+_O;~zUF z=%125+kYOPJo%;RYsojaZ?C@h`~d$n`MK*?;eS@6|9nc%R1YKhw8PV%85^3+HMKRf zpJ_X5{%mV=D~s8dCRT=4-{*|aeQJGc-ud}A7u>UXX#3FazWtqrHy2%TIOlj`@qp7l z=RTLMuDwgT-PSB!?cV9J(zDI0$-B;{>bEs0{bd1?Wuib)kZ8F$SQ;V<6^8M{`4Rj` zL6j(38l#BS#8t)DC$uECCABB7Oj(t>Hmy6oH)C7ouB-#uM*ydCF6Q0<4&~j>zf*7z z^q}xj(KGN%$eZFZ=mc!C?`lCXsVP| z(W+rJ8MWbc9`!a2#tmN^Uo_orKC|LLOHXSv$jySVz$Ay7w*X2nc0`ND|vUqp7_0S`{MT}97yU zFpz&3as+V{f2{O4?}U7?{ABH^=F= z(9&B$x8sJh?-Y*^?sD!a?>9c^c(`VC!=o*acRtzk^uV)2&yTz~{_^^(C$A^o8osl5 zzi7N%9xUSK>G1_q-o*KfQlh|9AcdQ>WaTiZwbp-DrlNF~9_6 zT586g$(_ZW%{Av(lvz@(uycy%0<7cb1A zaenLa$o1Be^KM6%?s4DbvC6Z-OXbb?q52~IK>q0g(aQn@-GdyK&kZ&S(F^$$`X=mA z_??Jrk>{dLL?4RT8@n@Zb9{F~S7JxfisZ(W+SKZ_iuCdfO{O|aovi_=bJV$NpgK>J zUtUlFsw%80sslGbnu}Y0`-PPytKh2)#IEC1a#cJjpD$nvDI%P>L{cctmLWXqp`k8(=1-WZlSi~+Ys%=9iWxKPQa?H)tOzHYqHh?)&bXp zx}iPj4djjNUg@Ul%^h1dZSCK7e*66$<9#!BE!w?&PxfBoKGptp2afeWJfuJ1a5(k| z>Zs~i@9~Q##!k*T6@0q*jPz{xxwGfrT%3K$?{e-H#?{7aJFj25@oLEEmi_I(;j}v? zBaFMMdoA~S9`rpN7(Mmq!s9DXu0Fl|?ELc+FAlui{Hp!6>J8;>!8`E#qOrUWY2)D^ zmrhtreEM|rbKhju7x-82uOGkd_>TTz{-f__`p<{IXxjh(?I~4LXBg#96HRZP(Pg~O zWR+=ynRF&~7Ib!+d60#J6bGGGxuk0$?gI) z{k8)xkdz0_&n}1sEh}^>ng^Z%{t9_jJOVurJ5;h6-j2{9*(fwR7ZZc^!P(eZ_LN63+z3dPOg$i=I03_gw7%}(MRze$ua2$S(Ut0 zk*^F@EmBWaztmhR@2hC36jZ^h6KgzcEovw0?$w`Y=xwZPVmHH9B(`|B&TG?ed)a=y zwMNbcF*aV-t%L__{NvLqnqw*zOm)<)^poVZ9lQ&*v_MU zM|U0DJ-Fxe-V6J#?Z0#2QU9BRlLLl_&5tZP>T@jWIN$_&kbAP`RQKtDGdItUoj1L( z^kU*A#AWf7RaXyRdvIgQP1m8cTlCxQ!zb>%ySw0C!hQOKu7{T%89YvZ()#q-^S~F% zm$zQKzY)J3dha_{`{CWk^oicjhLeR~Hhul{J>&=PXaBF?2Jl}V@ibF(QB-iDRkT5P zVb`#zRmkbE60H@YWND(4LIqwS`YAk;eOQbTg$L_NEX1?E4+{Ae0grbJ5gOw8C?Q03 zzOPM4R-)T(30oAg(s{z$@=RQz$XkZV+A7*6?OJXnW=fuZJtzolrj33R_%zg?Jtv5$ zy|gn#fU7QUZ4hj(^bo%jPAhlBW(dpFmYGLIrb@k_Xwh@o=E+BVudclhqxt?T51;Yp zr?fflyAOEJn|o@f z)yY`y-hh}aC!gLyf6URcFk*V*SJ#BP%0WmNu_}(G>`@j z63w&EcaO98UY&E=TiQx#nAuduwf77cUE_WKfalle^E}HmQAslTSy@pS$Pftt_ZX%K z-~Tz6y5mgA-8a;L7T2zE)V(Limwl%eR(MNa(iRnJ=>4=h7bwD37~0o*AMHo_bRHmFji!jdTRHp<)?*F)gNGV`30}itcIXQTi+C zV>g2FmFybKrqm8Z54@%*uDG80lVa$Wmd>F(K9wr*rY6>=(sF5&N;f8S&@P(fq2uV4 ziq&rG7_FSTcRTSrOpn_r*2(BNZ9va3GK#s#Ge)F%2V&32rj3PBMt4Fd^pWWvDuD8s zFWtqE9edcDbr=J`aBIf@7ieQ!8Ui7YixS{wxLx!YJRkapas!e=j`3P(A;=36gJ-~5 zZhfE-Xn#dT10_i}vXC(0z^NbbQGRCO1gMj{NAMQ%By;o5gXi&62kO8SY-I2ya5)m{ zwi+A@9er^J*{1t-?E$=Boz+5x_=*|UQt-Lt1-}+NE}D?r49?{H#@zyXIEle?00o}B zIv?O5qn^jYoFe1Z!;sE0vv~@5!_Z`j0oQ1xJT}mwkmWQ1d6MS1KLAfb&6aFn9w%w_ zGGGx(do~REcp~J=d}vg8Q{yGjt7wne6)>9}xir8-zc~9W`<-gW{$O^iDlcQu>@TB;u9I|Iv0iZ}*#r-jU(%7*lj`wH0+imO2>?481X z*EsfZ{J+Pypvh;gy`#ZprytdK1G^h{nu6JF)kEYJ_JNY-tTeWhIdV|-^?P?>=PH&t}{>`3Rm7h7ldQ>!KZ#}D9|1+?Z zbw#$z*HN}VJ)iYk@DM-9W`R^XV^#Q!PyPPV0_{USa<9ij)UuBS7NJyzJNyL zC6MoO0nP_>17-nVDC_p*74dghALrcTuGh{acas@t9{vsQ&$xn}#FArz&|Kt4z-S}@ zHn>EDMbQw_M=sxd6mG%< ztKL9HxbpTp-b0J@48|R21S*=y7_CMn!0#)cz+M&Tc@ zBFG(`aO)&5q(a*f%gHU)m8*#JmQE#z?=a4WLa{$I%=CH4L;0hqm2j_kp?@ZHh5LKe zW^e%Wzgft=(qL|nC4bjcm6?d}vH^t#yH{urqNv719?3C5aCp^d zkcaQO(ZNmaC^(Ihy5^eF%lOCI8}h3dtzsI`i>@n-Is6z|VFdShz_V0aH?>2yBCYdP za4X?^V-$D##p1S`WLT%MbP;ZDvC3^R$J$n44f3(<{^3LL1Ix|bH=us)kxhBvX9?n5 z2+k)*_ioe7r?H#zl~J_tg7>mATEPGN)RvaXd?D4NJ(dCCA!2_!^zbD{tj-yg(OV2#sz zv;d%9@Ka6YFKO_XZ{|8#zDsmuw8%-c2EWNz%pbxSDI>U7(cs9*q!n4@n}uh<OCMR^kZv(nb>7OB`@= zLfjBj&l`DPNnGtO=~C-$Q-w%u%HU5Bcjp2(F+ZimKkpYez%n(7ApLbsJJN6u#jFh_sIPE> zV*?zD3%d|mW%sd~OX44G3k-ztczrkL7k^<@ZXS*EU$I@%V&a#nX2(42r|Qjy40Nif z!_ffGBQ~}zwqVrqvUA2EDo@SQ(W!ELhI$dTFZ;OsK5bWgt;9;7xZPeDLw~vMA@?0~ zu|q21&ANUn->ii)N*@^pLAt6}n+cr6(p8H9o2)L`d-k>X@!}qK#Wq49U>B@Q=eo1+ zI&8reKvWBqU(EF=xoa3hrYqlQ5d1RARr+GtnV)0}(Cr6yh({vZw|?UH!!hf|bA%A$ z;DCsH3 z{={Y?>l#~(f&z8XU)rDfDe`41u09U>N4`bPI)+PD$}9JW373io!g6>s`Hy{;62Hj$ zm9NlxbaTU7fgrg(o@B_V8RH z2w_WBJRs8m&x+i#G}53SQTP@A%G+VqVKjQ6ArlQuo37c51Vz16Y=$$p%#%!jD%L*X zYoIAB-Vv8UQF(2tMtoW4ROlv5@jcC_>al?ph1- zj$u~&QTSE(L79I^ym^i0ob{(+05?F$zXxZ6sY;`w&eOrlKT`fy9h4$_cFDp;qk~3> zR`Jr-Msq(9mG+bHbmT^>QtBpm#p!7(F*IcBSA)oRRN<(ILk(@d;L1ku8%XYTugJ_U{ zfbt(Y>K-gvz<6%U;`X!ZOi$_^0iHOw`USfRyj9l1o|rkc(99}ISeegdVLSKe_OkSw zJ}QP-x7;1X{_IHG7VcbNfoVfs0O2RPQ#}r=0=Jd+p<&12f)2zpzQ|Mo$L@HoMWKpK zR)sw@!+n+r0*h=1IT>KQvHs+7;WLqc)q1`aC@!7Gl^uIy9V9#B7aN}wjynKNH&(qV zPJRsaavv@1hX?GIkoO_n=uq3E#Dw*gVwn_}TaqH~KNe#R6>d9FU|h|6x#Mrm0*+>r zt*n>W==M#x34LN0L>_>722HJ>(MGtYa+H?BHW%MgjmUUsX_B=Z@Hbe*MEFfLQxNI* zUAC4x!|ko04R5zgA-*E%2B#BEg;j!E6;$&^_LkyM!^jM+#a%rZ_tRh_e;002j}YJS zyCp5q5W+4U%R?ZdhDkc_RVoxr*W~t5CXRbC}itEr@)kERORBHKD zzZPkPXtdi?{yWZqorZ`)FYCijjITQ+@F}mTa${X6$}CxxVQ1cLNsQC#x9e-eV^l%P z_kOj~DUwNUulRMmX?EqrVk}(tru`>{g}F8lQnu%bPJW}rr~Ih=P3ed^RQ#Hn9Qwv= zqHSCMS~r;u{~ zo6(kxSf8dU!+l&Xh##S=m-lcwU_Z%|Q$KZk5nBBR)!m#g)eq&G2GC1IzAmrh3}*F7y5pHoL9t6e*qTgnj(bzjrwDcm ztMaHm0V&1fXilC3rZx0Xr!mSKjB|fm1P@tSV#@`4b`q_vGoF=`?tF^Ryct(pr)A*t=za&vyiwPms*SC z8+R@$k41+9R#`tFw>`h=9pEmfM)_#yp3Qt751L2(eb!I9od&kEMd~BZnhXM`xcw*8 zyb(JWmZfq=2Y6Yh5%ykFb#Yj@(>qx>BD2Zn{)C4S<9c9qAB}dpPLX@$L*pfBVqA93 zIgxCqbE$>@JYc&ejJw6lSzAezIxmtoVvB9sxd_~azv+Hxa;D{+9WNcqesh;1sraSth{El(V{N(lIq8!cK;5^v zl4`c<{LZwJ3|U8j!0aii^E$36;aQxsBv%R3a#zkZucC7VdA(n1aKa{^N z?poD%-R_;5;txu5z?u9m$vZELCPc8t*(AY8`SNIv1U)c#nU+AQx^s`#Lb=viL|;H1 zTW&*#sQYBc=wGS#808E)4NUsLoJn85)t}kVaPzppddXybsG&5%mj@iFZqWHN_S6&L zi_*(9Z_rihM!N!(&~bVW;FtK2;lzF%7Rj8#Hh2tYd9jn%oEak*8Idsgwj?OR^5 zw6Ev^Wv*yYq@+9)L{NRH&D=BbgS0|&UPuGI5esxHXHJBEzD~&rEQq{0Kj(h_$kyYz zi0*!2Zl15|jWCQdOTLg|M;#+R9zTgThA$5pL3bdJx-Dby5Z$X$*^=s`*V}Sz%ch?C zE9X+d?SeJA0@G!Ib6&dkS>7T_isI)1PbyvfI(R>=hIeFjC1Vjb`^7-^=oZ>FUAC-l za`W$;HI+@)WjX&9OZn?^pO|^M;d!rgnQ;JhjAG)J8?+GN>eXTN4m|n!^DJ%8v8z?t zwr%g4r(}0D&@5|m!0MH}xZGpK-*Pm0P=3Y!K}w1G$CiE6f5pwNKj>Km_qlCW%jyCqnOzb9)f(Z z_+l(L8+cYf4LAX8Fxde~>~``cu#%mYWdz2tJ@;j@f3fEVWdk$Wi(DT7(d;e%gaf`j z-}CM4eop#HIU6Jz3|;Ind_7Uac0xa7O4%!r*1ZC@J4^;Pu@j*^uDjT6;MjX@Y&%8Q zIU81w^mFZS7G3P8k7aEaG~!vT5MKImj1|jqiLGa`@W+AESzTzB%RROmRCd>&<(Kc< zbAtIuPpeTgjp}QW^t@+6M9WU-o%RRcpzVOeW; z7Sp9@RCNO5oq3PuG2^~gFTijLt^rN-j&;vSNwkN%Se$x^cRmSkv&hWp^I4fDVDuJ0rlwW(# zeVx0UX9ClvjhPI&+wg$O^KxrT0@33h15!eCB-?S3S1>2l?;0@qfZ!h5| zwKmsc-^6Q*rl7roN0OJw1>Ol(4*Z2vn>qxqCOUSNKy>VkpANi(R62WtA<*7S0G^_U zo074m8n=RT=rF~QxCR*`?Pn&!E~4JlSrEb>h#Ug%b2|MNf!lG4(?{Ss+Kgxs zeaK+Bt)&O&_=zz)Ynvq93>?S?9YOIL>1_v4L5b?Rg{G)ADD% z79s0~TZX|2l{bZ>pwwa$?FU$5&P|>G&d|9=qyU)Q>N^4WOHk;vi`|RQJ3k)H?z&Vz z67gw0ZH|Jc)H4K8(6lNWT09tDbmI^YIBiOf7z1ojRc-8IKNR6kZfqI;^dTlW3x z^OBmJWUa*_UU2a5vGJw$EPxn=ONsDCMC(8>}Ohc%pm?`KHuPt1+rosS0Y*LiS1F6e4JI8 zFFJ~C)X@ad=rppDmy68Lm2;|K|HLHX2SkP^;{o99_3fw>^l(<{PqqELo3&BN8ZDO4qb2vG^Nc})T&uto+VH! zT{J#Cg)AKBa88Sf>>_fq;C6f$&gQvqUxB_QbJo2@5;38J7Pmp&0>+TQ>%|yj52BAw`f5{Mkdi8GQ z8Sa$Qlc*!md(x_j{917#!1j_eb!bK*`|o}c?f+H{NvyX%5dA0lMU;#T`dV(yX;;` zylPDj75FGm%H5pdATj58?F$e-r0fgT@uyOYygfJ$bbtGD{4Zui?O6Q^#t*YuGlNkt zu29-C_<+AGhCv=>iY<(qy=K86b9m@@o+~re>joLenqaTPl34FfEY!_LTk^}*lMtim zs$wy0WG71Fp{waNqDE*%>?gro&=A7prhtpQ7(_A9Y%f6DfwYGnuJNtIC4+;1lPuH=7(dB!9O|GNQ;*XF$xa0hfo*rY;~w6M7hY=r3{y432w`B z#E+N)akDV~$ZX*Z-hVMho|Iz^MmQshwVrSA!)T2?1*wHcR%NM6jRVFpiYi@_V4?Jy zYKYM*o+~#Uju)^cJ7UIje+YgD&nI)aBF`%9Jw9lkfdnISDx1|##S}xh!rkh{Pmx9% zKQU}XI&Do_uV9=qJ6ggeq|3K-5kCcGo*)L3-|bW2LG+KxC92-)U;0z>8)dI~Hzb3F zt#paVBOgx-;#+hP(SLKDlw-G039A_MjKNlNJM9zT67*U{i3(`S(Fe%!T7VZJF;_&< zrwJbyEl9o1-)?#sb%AqF!{6dT9FUFoT!jwux7hE4GqAkE;YCeZ?Fy#lZgvdTVEQX( zVy;G)o%86Br>Zyi*{)9cT*`s~lXx>V&*K5#pKfpGO#EU76}T35GRDh4nIF(EV;;tZ z^!nU++D!VngC~_&854GGk=Zix0@jH3F^78;@s2Rh+Jz8nSy!#Bf;MEGe0Ba4*bC(u z{(|=8q-yA3*})l#$Dn;=yEG6uzxk?=3s61sxTQd-T_R2b-j;6bWnPTzpy>xkk5uc| zlf$x0)GC~xbVxB73y54JVW3ks9}`@G?|6iAenXXZRBRALETgPbWvS8v(+2T3_?-?B zTC<+39`lbSo|Ol4gCiQnXG!nP3k5d#91lBABJ#?Phh;#e<^)TEP9Pm?RI20PZQA>a zO<7x2K2py_A6bEDO+>JGE`P264L-!N_4tGA$G+HUvEgu8{$=x1t6V}FXPYe04ec&n zZRTZVrK&ffTeeg-xbv;ZARgzh;E&)BbAL}BA}-q%qXh_&ztxPFQzcUk^+l(ly_!Mu zm(0D&0K>|J{n94&p`A*RuT1D4$14=d-S3bSIO%q^XbkFSdSTvhGDuuuNUdxD|J9g^ ze;@y*7__WU7$;5AV>@>X-znStSM&CZZ@YIAm$~QdTF^ykzpAX}a8?S(r@SX?h^{O4 z$}T_BYB`a^-B)Ftm#f>BuZhchwDFfbhq}%6uE?K0!{%R3J<~@uubM;mA)l7rr4OeE z7x~dXA4xG+)938lWtdGrzAapxK>u%Jn~cpcyIvK>FuBWp$j7WYrKyU5UXgoCAA$eU zt`+)$_J?2O*8;k|5A}<8>R*kz2(|6Eb{bpyUQT#EhSX>JJo!agY6xuOlP#0;X(^#o6kO|cz;lW>TL3MG(K;wUXORy4reUcaaX+=dvGF2e2zeVWlf5 z>&#l~jnrfMFGe(`O`W6(4~v%Fm(SRs6uAj|{!dXjhi$iEIy96wwPi=v0#<(A<1FLx zS=DfMcw%DN?3^{bv<0l(h@jWTio8=H-Ee#!N1JWRAQZ`KaS z-H&akAkl#Ye(?yTDe|^C9ljE@UsnSU_eK=;&<1BxlnrWa7Lgypshsx>GGQwdJYmmQ zW;`#i;TjWMi&m1?BBl94!Y;@~`xsMt=g2>!W1RDa-7sX6NbZMbauoF+6%9YzWQ^%PZ(q=4?F#a@cd9%P*E-h;9Z??}1Mvj+=gmHs%Q((W^BoTV2O0Vy zr`@s=5B+KyojoBY%F($L7xS0}CePu{_S`YpIi0o|iwReObDhU&pio#&)r& z-?LP0+o*-fqZ-Fh^)ZKPMASQ5`%3T9_W5xvcj*f~9_uj1Fo$`vb4>fCw|S>o7%-(X z4yek)TD{rrhd$K5VNZ$)u0F!5-g>5_jwSRX%&jb|$1iOb>y|^D^b*_q??~<|b{FvH z8Gn3DR>rBtXw#wYx@$;Q%!;b*aMsqc;(Vyq56Q2GX0Dl~VSuEAUh)C7`TI0?HSiDn zzmA>!%B+|cd#?FV)ydoB<(P?;y9mesF<4e%Q6>x&wtsu=wblYeQczStLP8J_6c7QC zQcxPEd%lk8E@p;-0fr7K#lr4d*T!DOT-|kzwbp+x&&7Ljp7&gwgz82I(H}0Vxrpbl zSzcL(&Gx*Z@j-^1=Sz(64e;(!t!^Pb?m&)OxVyP`lyY3gq;^PlETOvLhQt`It^OuL z*2J2I2!_}H)KZM+Tp*c+G=qnZd^Yc(uiL-h=(M}JCs{W-V|v>q^^}CB1`oxm@Ve@4 z(!4eKrU;S2Yo&TPe$Tl<+=^}oZAXMPRC>Vvl~(EQj_zZo0~zz%R_P}vbUO@cD7?#d zQ~qTQ-*`^K@k&!E$;r-l#3|@okT^1@VKd#o|A@VN_x|q4ss$NdtzD*`gtLyBI%@c3 zTc#>_O{H z#sK>Z`vqD6(SlEoQ5v zh+fV5B%);rIH^S829Wy*3tI7--vM_$&{jORanCuZ)6IYP#?iuzq)kd^>%v6}#tHS$ zGzrUHF+S7Iwo9%@4{{^O>=j(TGn#cjtYUg|%Gq>EX#LHe5!AAp+^Pgxt91-n!5C#c zLM50iEr0t>_88^t=qS!X$<`Hfcx~A4_dLo=d*_^qtuS`fcfF+?YhGjxqm8I*A^>{6 zEt+zGF=V>F-IWDtU82r#V&yY^&+?*)wRe-s{vOzWnprWgKfY@!C8Vp*vYpClorBlW z9@Wb!BN-J{?=mV`vyH=|wzFR;wZ1s_Z*tdQcUk>8r&D*zPaW&plUs4`zzDO2I=Oo- z_L9bE5mw|d#@9AvOlKZ4v(|rNThym~6S*Ct+?$Jlnbf(*D}gz*fDRB?Mo*|b3#?-l zV9h`t(@?Pk(6gRqtORax5~3D>A>0qXLhwHS`}JDEF23m)RUqM4wigJx`L(8fg2()$ zXq9jQ|7&@nuvD;VTcYq+LD%|SK&Ehw?=Wz&@X0kN-rvNGBRBcW@KLRQ@N=*c#w30d zx(vw|3`dH~whJoYW9byZU-0b6eL^Et;iCc=V9(VmZkLKa5XpV3C~V2$t&)}LKk%dy zDeTQ3F1l8l!WWS)X*PiizAN$1H4(Npj7X<|c!Qm~PLmfsPkAfGOOX5V&9JJ`zk#qQI1l~Y<3u0=Sv zDz||nxOsX(F^e}vZAtaw-IiBHOy{2w$1GP19%H$ezOz?#ZamP<=C%kLZn951q#8NL zuSN^Fa?V>EMMt@)p?<58w^dyl-oj6n-d>(6fN} z$;8U(4gVRt#Q3w|0lJp8J;ept!+se?AQ9Yy-aPm-|MRK4cr^EEuOBAlEwneFXL;Kc zbkvPk&%212`QrZKJ`UpMOGYs`YN7UF62nm;O zgFnDk+>;=Y=h20k?V3HD>&qJACiN}iET)|T;64Z-%FoVFM-n~L9&U^ zT~Pza1_9*iU9ONnektiOG!n}Sy$`-YZh2Y3kMM%yli@n!x;+WdN8RD7hfuy|wPX-{ zr|e|wz$*Fb{5X&z`7LQJm?%mLEd`VDYOh@&1<@V-01eiB=v)h}s4`oxf_AgBco6h6 z)Ui5&7h1PG5;&r4PizAA%I1ZR11^aIz19Ff&?iTyLBTENj&#u2u*32PILiJ}^cgTz zQJBwwRMWeiPk}&Pexf(9QrQ-=7s!%Wy`})w__!l^;Hh5sb_eLvImzM$NSbRztASbd z-&smG2q)ZmlO#* zTCy2>VR>E0j&s67>$}YvLV^BU$O_>Bh1K&WFpaq0&r-HmL^Vy54^h;He`Fh}SMUXr zYxJqKU&V!tvfOQ=|1sZfnnTpH&A}t_&0K|t1N$HU?|ni=BuCfiDYI~18b(WJa3ioa z;s$Oz^^+);w>n2heB<3qD8W1Vl|dqmAs{`3XoRq9FIV;%KHo4(x)To7eHA}~`cO|1 z2E|b)kZZxu*%ygX;NkcS*cDJ3^b6V!7I|z#G~kxL0_jQVu=+tsfY_=%E;=JxjVvWA zh!>Q(L@?f$JqDkPDdPRmALx#?2awN*r$-?C8M@h6C(MD%vucT@1O!zkG=P?c*hL(1##mt73+S%l%T0-@MklLhR5gujc zmvv!ohN8@IsGBA#ZU9*!{}Ol$-X$(@{|MD!{H~AU5uF?CERt-gQ*9yUIQoGj*o7KL z*$i}#MYSD7ju>{wWx`k069Vn8)I{D@HAJ%) zy;4RnrlvoTk6<>%%$4-9cllR}^0+j&F~msz>t>A+U_)k#emMJ?M4@Tmr19pe@;Ud5 z0u{@-XnL6RUtZh>t@s$<(|-er3c}s~hp!TvnvNSHAkRubdkZ`)?oz{G7B^7237lI< zmAe6dr4w=sg(~5Pt|jczT^bOOp9ME-REnn$(ChSe&C?RR3EBE}NKnk-vnwC-w< z%+bEtnkI5n`9=weRkEZt%djj_h}#4NKtI)g($HJ#_01}mh7$a=e9-=mDUh~QZP~R* z>@anuJSC56zeO#_uPPU<8I69IjQx*Vj-9L5X`H(6>w}ax+i&18a-yk-@lBdgdoI62 z99iX>A|rPgY3pC%klM6*5bc*r+$O+pahCOB?S%3SMZK-Jq89vYkx<@Hj+tn**d2cQ zWcukOmBxu#5fQ7n#SZZ+kW#qWOYP(%{uAr!n)j?)g=EIm(-6@nI1^;zJAyvQmC3W3v=Ilz(%xnUzPEO(AJ zQ1~O!u5t$EhU;V>fhfOU#9e@T>7T>~;H&wut&2D%vs#4sUg1kq2DY#Kx;_TImP6BQ zKqn_IQbr(Y;UTi6aNWwUq7Tql*PrkjXp4DC)n!GG^pUwr_F3p@1f?6wXXt3++Uy7F zV$rD0EebZl4tp;x#O|+rDB6eyxVqz0VNoSkHP*048eaKW7b%b#PN^@I3AKBbTe4GC zU9x+dH^}!%3c`9N`^jf3&yv0P2G@0%5iyv)SvfX^4n@|;TFc1cuMxI>>&e4C)Z?bB`P#Yty3E!CEHAIYYX`{{Yl&AQi;Z4o|8pW zHtL^jlFN>%?O|c!lk(`5cH)}ogzFCU5w_0cZ#mI^NBqNNYYyTE=*#NYl{#xSRL{wp ztBk7ruqjrSt2-4oMNCn`Dl@t;QZG-?YlhM_npH%5xRSnzRod{v3y@AQS0 zIl`H7qxE6JZNa6gFTyS#iHrnRy38bpfZr6AO*z<~@aFm~^eeriCL8@_*9mJbl9%Q% z<-?a_TXkFD_~5mwU!dzgV(9=xaY-asL-Q0rH8N#s(6Ks>4`MlIChKrJS zv9mPCL>GcyD;z|vk5od%N?h8B#YmvstHIg)6?|OlV_HB9vH9vf@-xgUG%Hg1hE>YI zn0p#8Sy0eT#VGMgABFfCG2i7Xz7L%$yXiPoI|ppDpSG!JW2*L`zXbH(&+LA--(`-X<%X<(6^T7R8-xGKFSH1ASnu!Y$AMZd=I zAcmrj)T{~8%LC8Mdix3I?a^$2$Ru`J@JCItS=n`{$Irf&6WI1Sy+8N|9PUe zS}9l_dBvO}sPcE{9t)RxB`8-42c6jBG@t_=*}V+)W|`Z!Bk@I_n}o0|%d1WTeM^kB zA&@cBUbz*D_cv?bLsPxV6&c_=r;DO0@EOwf-&CfuBH9W>RYjIY85xy%p|+A3lQ_0Y zi9L&Cn&{|#f2DTOe{W4HuYw;s&mw<7Uy<}Z4ApDqr`8t5P*HNjIoZ=p+dPBkdyQT|+YxOm9xvh*!MIJXf!Xgb{9IlmreVl8WHstX@FR#^)(N7l?U&Dor0 z8K->}IZ^*zdCnhEU6%HGJ(ikDhx0|E6n(^*d&H+Kzf`dQd^wnVsW-Ob^w#kmAT>BP zx@kLYC}f}g5##L2bC#c3*W4Ple{g*leUYj7XE~Dx3K`|4hW;mvqq)y|Rx%T}E@_Wu zEr`u-oWXVt8LTmLcKZ#lyv055K1OqlPgyLJlEM(ql*1wX1*Oowe%|HW8(lwmy;~=? zjpMzDO>x}fCxr}E7x7>FEi?5BYTZ-R{X)r-iIQ4C&KY@VB&;mmz88Y}b8GgTg?>tT z)^ZcH#|G8!0ZT)k+LFLDzxBpWFx}m#x(o`JaKsP5e)h8iAILvSL;GliE*I?FkLRWg zG@r#1W4-F?(c+Mys&vHRmt!~!zjVK<8Ub%uazpG74X{rgSgMFD_3AarcIVPNZb?ij zJxxzVzsD}AJxNA~ytZ=i<9=NIcP!3hv@!{K>f|J9g{#?(`!QWfsdLW@&6wPZj`>P` zN@tUcd`0Y{+DVe9A@42cL=HcVK7pWktWX@n5}kI40+CF%eE%eKZt0SqOk+_ltsT;B zPTA9ls8`3%x0fmWLOxj5N<;nXbZ15B9$OXRxX4LI-b22ydHp>#OG{n5Us_eU{I-8h zM^gG4{?R>;b*}kcy*zZZd7oV5*P}}pfAT1mKPN;^he-{}xl>R1v(){RgO*r!qRWF` zSCML6#CS=0LG-YEXd>!THpU3w-pl!$H8Z-Dr{y@UXcLHenp=J4gX}pcf2I_(MV+Up zzjH>LpU^jP)VP*$nCnMb!V2cT%DBM3#_Nb`<5uytD_r>fg1Q@T%Vr~^k7tw*z=<7^ zlr2zuC69U^T7{+3%fXu!)0i_r@wS(&U%}w@-#G)od*3$RSHODRuS6lceAHUDUOK5w zUH)3U(=?2tB5$DMXb}XX>?>nDK7ZR!%ok|i`fcog5P#oDULwT(&0ZXB6dajWI#zeG zb$r<&%{+s&f~v&eGt{;6(WQUT7fUSZq09xM8IdR1v3Q!#3+_Q=#nrT;nA+KgFPHpe zV>X{DJ!?Lr-%?H*ouC#A6*HIs_jR1dRPY6?A1H#VZ2c}dRmapf?G-;klDT_b;`QK; zW9=08gY}(y>cqa=){E4;ofdHo?NqZXtDOEvZF^oObE9=}qMda~pBx&@!4%G3dw6Ap z@=y-UD^6;?2QMfMHH)CTYImN2*mNLqDnw;ULI_C4zUSEu-Qt-K z#(;f{c`au_f;p^mCz#E=L&kwotUg8;xR!0-@dk|KG;GcQGr31YMuC<5QJx%Vi~u~a z6!=+qyIBg15uP%o3I7sy603!8g|+m4;a6eHj`_eM;mJ)sz&7Dfuo5^3%FwDw{Wn_{~xt)y{t+w&Y|9){|!vb_ja$`$2ueP3Q%WcfeGbxfkbY z%#hW^LLG9YuY-H5 z?u}y__el+)JqN&q_6ohwfBPnK zvGp{IbT`@P#t%MLt1`}TU@Qp{LKAYNp95hnzd1DHGGL|kB35_!Ebi# zlB_N2s!kBSFKJY!lMl;;07AT}h%R#@{zrA%UX8oao#IllL}pCjI#kI%;Pw@H&9k(N zMQYkhTM-G+UnnvOlyO(6#cj-MrJJxbtVbEYW5YP(V*AlBZfwA9#L7G1_6(UWC~eb_ zMgv5z2do&!Ii?wDcuVh~&2o-QWvRuzwxchnKsxgGMB~sSkNseY%o~ z%(Pw<^WY7YV$K`LV3<=F08Q4^rWwHo<&q8Q;1((3Uk>_{cDH)a2W2(6AbCxoX%N=c z?-N~vj@O7e8=!I4`2{u*F*c`71iiJ(qW=b7C~*HU;Huc*Rs{@V`Hd%#Fxg8AlshuNQ4(E?7N|Ft8o2OzZ{ET(e4DNgJ*SQTEcu zqWSVSj0yCIvOwmXyq6LgD|E{p(GVM3zmN>(46Qni+jv4(5*sT>uP#x!@nq^4MGo&I zg3D@o|I&v`e(=}lEfeSQYqtcE*9Eg9n~6w)Wt9{=A`EghpzDO6Y+S`4@>aD$J_n(~ zbZHsrfYZPR^YEy8sM5E?Ij=QoIW5F*!O@D$`9OOv#te!iR`nNrgSSVaZa z_Z3ORucpsAf8e`x9}*qd64m4I*T@4|pWk8ls3_U>4AhVQX4xc7ZksNjDBj!n8gLT* zuP&_oI+1VNm;+(&D-#ow(H>n)cpCyLm--oDn)rt6MTmwG+TX3th2M$6%FN;?Trb0! z(t+Zex`^_s%th)hiasGlIfb?_^eX1fp)V_~J2Hr-OTzpWlUbD9n;`-w{!z(V#exu9a z{#I12zRO#?eTp)JcQ~FeyUpJox=j)-nCN?f><~O~QR3r;SJYokf$-1R34J@%%buk5 zf|3hgsd~X585N3H@JRef={-;tI!T-h7WnoO55bKt{n!@JUma-l6g|Yo=^W%8R+7ex zI9KSYJcRdcdoJIMIW`(4pHWB1MUe`r@~tD5!3vi_bT7nFRT?&^y3yU*E6S0~J?eD1 zUx88aLb`d|P8lRF-WVovCB-2o@)~aU)!{g5clnI2gf*&}`Wn+teA8+ z<|_hK{pl~Hx8>jC9*ZT?;E>&C08k`79fG_i50c#5JS#Em#1`RL2Rl;o17&PWNmNtvm;)EJ5^*JRbG}#U( z^DO%DEe8!+=KSbv%~zH+5LHHSLcBLg%X#yiI3z0YC93Pjv)}QGtD8CN%Pv?WIW4)3 zrhD8KTT=DAxVNK!R^R8@19KGqe9(KlgexGNP7#g5R$`X@1Q^S`Xe$ASl`XPN0|s&z z8M^>|@?%{*Kt`QX-2xPWYvj>Dt#`h-8aVGf7JmVbz_FTcLd6ZL+KG3RO3YKR^EpyO zH~K1>qfJB?M6r~AB3Xe`WE8mCyF~O58ggETM?ov_(bbRSmpI3)2HBR>#`rvsZiRhB(_TuQZoST1{G&D7#y~ zTH&5_P<>l^HfpqjEzS>kDIGz4_ZE`%80oCX;*j~+W?P@-Cdbo4uXHQnnkE|-Wz%&= z&C?{VdbP51{c-sV84xfa!Nl?25a~mVb?!yqBDb+=w%l3^`;BF0bzF&`vDU)M_Ru*S zcO(U?4r^1_8|5@*Qb2=bp>&hCkQgMRoG+pED3yP><5giOC9dUW@q~Oy!?BX*>HJ!_ z>_Pkn+o+0fVaqEw(qdLM=yoy&+%G93+34a_$wZ!vU)nLU!b)*zzD2R-7dWicqv<>B z;q(ddYpe$tP?(o#Jj-R(0j($dmB$3dLhhTzm&C&b3;8Z>1FY7HGfgJ;==_ECX>5M_ z-0E)}=lBs80q0%VG{ar)^HoPQKk+_$1k2|NRxMdAnj@6(F11pGXhl|IqA)(Mv2Kpg zJ?)t7{|uJ(TT}@HM(x&hEz~vWMnVY%6i_fo=@O6_hUu=`_s*RzW*E8~k+2mpu+Y_2 z*Y4KETH{+?b&bzI;QVx+=Y7u!*fZupO$wY8_PqQQZ1F#2o(@0tpy>UOWP7730l5Tl zx>LxFoKYPia!uj-mPy3r^ey#!36~gI^(MSB?5OnuzSMtTsT;Q4L#ZpqHrn4-wxRz6 z7Horc6WF`ji!_G|zBhZS3)AP--B3-A39e!*4u&%m%rKO8r*5gPCuUsbK}|~-Q5LCc_TOjRu4wZ(q+Kj;cZgFo z;X|^9uK3C~?C3V{a!rAyal~>rt*cg5IxYHYrK2GtEX^{g1^qjXPO76G*EO|@@eUG2 zIKh<(IzKl!vtwJ&)UGTrHZm%Q(+oB5tv1oeEAUc0EY-5qFv@?Ip;J@p@mv$8baSXC zKgdUMu>&pCJCyD{<7norll{I7X2S2=ey})^7u!lW&B4uE~d)+=+YFf)^+;JJ?`zmUMd-Se4MyF%~=?d8tVNEe(#Z*$LJ7lGZ`k+qKWzh&dGJ{s^3twYl3HdypV#yNwk`4mBoW^Mezr+tCr7S%m;fU|$Mr#g``yDwf9kQK4bU-@f7LF+^ELu7wLp8RcaO4UC3c;Ca8mxQ~U zjbRd=WA|3I0qfvY?2;PuC{ug2`qNpfyC}NJ30bW(HQ|w6^%W{zaAxHv#dF`A79TRj zElN)#F4_Ai&*N+kyz_%KkTSjJt;H@YqI1x6G$ErU*AN-mQ1@JWCpft>TTS{tGdC*N zy3uuik+bXzl{8{5hq<%7`XFZ1uUrwB6j312o1E?@31Vr}wF89r@1|V>v9=M$6Hsr?VLb!)!W_&oeSKb8EZn9{nEzK)z{ddZ~9{UJAYEg>q2!Ohg;lk)Hd%ed8)5Bf{Z2FgTMzCTRlRJ;XGEkCO_f} z6-nVkqA+=;H&2?5|8^?3a8b>*-F_6PYHSlkJypKY5KEtF@s>Sg3QRG@h3xNoTJmz< zPK_iyT3D;x=p7`vKSUSa$@1ue-FIe@lRpi?!<-#l!o3k?G5TkrRm@b`|siRU(OKJUF(XMJxr8 z%@d_lpmD1QWS5~@uSD<(ykXFlZ6mMh&fwt0_p0aIyF`xiHa`>}5+(=+@ZkJ@Q4%(o zkRX|gg{%&j{)g`MS`7N2^9K$x8w^0#C-!gpag}J&83Gr)8rY=1jl)jYLhggLMNPC3pp*D&PeoTU|ac@pl8ve>*d{-CKZ z<XmdlTv`nX7u|*(Ix!8~6Q7yWU;dv4TWqbWD!k+@A8;AxbFk$w9Vw5_{G+IP`k_r12dF|)UUgdgic>jkbGr>(&@H-xvX zDlc}g;Fg6EVij-FyLrl_9~AXFuR?Z3tt~=m9o5sa62fR|d=Ye!ae>2um$8@TnBh9E zA?7V&C$Rq+Ul+uqJtm<8vXmVsfNAXLW*Sh!xnTYc80M|UW`lnG4z?WZ5iZ{HI}|3` z9up6}kR%7&!^dP^?$3~`U`&6l)K&7Z$z9ql<&{pCIZ8jHV`SYjm}Ldl0duyD2fhG< z(F5RFkhkhM^ar%Y{WLNecIt}~%kb!ii;`dQiN+>L8`cY7kgmfvGfCN4Y)rO`>@GSO zJr}ryidW@;pHLt7UN{-K-8)V+SKCx?6b)z$28uXOoei~0W~po#R>>2^)vO%pL$Y=g zA^RXtT{RI5!9TiJK>INI_Ai1@WpC?L!cNN!Jw=pi`ULii=NV4X_lrO244M7X@tVX< z<79!Vi7N+z8dB%}vnlb5+noh->X+8;5S*)_>x@FEk^wvvt+PhbzKa9R^D-AoQVcgX z)=A5>;7Syjt^CVf2oA|7b}RYR4#(Qb0>_pr?Onm;hHk)5SXD#PGDPJSsTo@F8Oz*_ zfzkzr-j&g^R?TR4Dp*9$>|V-y-}kP@!0+u=Yhwk;?ai`U;jc}?l1rjrYFB405l5GQ z+;CgcQ;M&gDvQycbI$=6k+0gcBv=$&fyhr6pH}JR>u8>my~I5RK;29btQ%>Eh~?b0 z^*sD7|9c=0KPURfm4;uDWw-VbDppdtm6*kTqtxMjT!Hu$p3VDM4CC_!sav<>`?Se1XUa z$VL3|^{#Z}2sXd59NJmB%bX3BntTZ^Bs7Tl|3EZdMd3;a*6c_YLHkt0k@MhR6n_S| z!WQ|CpHvWD)Nm8LS)Eu~4<4(WhVKD8tRntuu+hAuzzQBSK1liiP0^2DcM_s&ruu(} zCo3Mg(&1r3(Xa_z(R{je0_fOq5T651s9noz2EJD63dVwtWv7$)AZmKQjt0KdkMh3( zRjRK1r08;>egrt$JDw0=px9%!n{O|k*Ul^ND80hPvj{|+cZ zBmGI)k&%^k2H(Qx+AdvhF$21*rIuV|uhN7wT=N#I7qLnc?kPWWZNtAPuJdm$=aFYb z&zye9ugbPojOb`gsphTLj=d0?seaGtWg)7|yvSUca*+QfAw$t8JP=+xNS%%5~${Q5>$mwN!B_HGq%raU#vD`EzI}qpUEwPWWi`w~Nld!calV2nH zioEM=M7xM-mi1(AJ*M!JOKToUs03DdnYI+SSmCS#*cG!~EDMV=46fOap3-je)1VS% zmvb!|O}sI`lD}zRMV^t*XnrbwLrky#x1Utv{#KM>RC3$X%z7igc;hi`g)km?nkD8ma0~R@1cLQk7efblwcw-f3N$OVL^~DA+3-Rg1q}xOrG#N;Ze7XGZ0^OO6ffL7|6}Io@nFH^#I{p5UAaQ?@0Me{T^SwfmCh8hJ$+)HCVd0SpEfl z<=9FTp|GmQ^ow>Ih#TTGUF_33wHnHA)f`v(rBKw96;Cz<|McGwjFIPm)*4eDON@0q zjbFo>RZhnB7B6s`-dw6vysc&0vk+)(qACiY>`2l%5vl`UtYixMS5j`Eu~RXhh?*!YskZx**Dt631%1#4h`6#WA`*!K>^pYwp^z(%YP~fvDjKzuR-H)+)MZ zcSFUJ6(R%m1N3hKQ_VljD(aysKX!PwsJxK#BmSiY;oVtFGid~m0{MDWJjK&d!<6#v zgOs`8EF_@Lk6*xlS4{|#sH-Z5g>hM*tYbu5w0_ z*C}{VEnHu-M^?k%ST$SrzhY%M6^O~=So(oI@iwOS;EIR`1`qH|V6Zj`VtdA`B(RVD zRk9WS0gtN|VMDwf6%Q~K<&8BIi^#lV)}tTeb{TJ?2P4Y$?x-nnp{4|-d1foS&;*BB z@(*Y*1XaPRySx?U?^LrWlCpTEeI~WEQL!{G*6@~G5>ccJle-2^R96r|o+XM8c(_B9 zd@B|Q&8qA*p63piyBipksTQ^FkIYe~+uCWd9}Ir#4G~^iol+4vMs=SY_LM3zh;I%Y z;xBw9c&Ku5xs_XCtuN~=x@~@Aj>|Y@ayRaY9neF1`|!UtuQincH&iLAxt=I_o5UQ< zgdG0{f)%^#T)Amh&+7IftC?S+%Rr3nWp=Tc?xX2&_^^hiFA6xWe5A4Q#7IbS+@Y87 zC+Y+*yAldUXz^{2DWSP}%{*#T^3wW?^d%b(RR7I99Lg@g$uapIHaGBfu15_UL^o~i z)t_Yf0%4~=-GMfdLset8ow=`aK$Zev2hBU^u zUUeHBE126p$eUBr(6W&~J?Cb_9>Jod9W~#CNgD)}4x*mW+_Gg7AHSETh0^nG5!#PH zjolRGBM9biZwrz9S>n=kMY<*@tv*J2ASt!FSr)&+tNacyK6I7&J8;eKZ{s*{(2b+{ z1`XL2E2qMj`C%;|5s-Scu>vXH^0sas5})|GiifOP|F?B75*|9I^bL~Z_sTE>A>GO~ zj>uuVJ&F|M2k&9?e~KkkRzo96ZfU7qEWeQ0Qu%Wm*7ubiBQirinSS8={a)#px0ehhG`+YjbpVd{61=P zR6_T0%3I_Cdr(di-n7X(uNTmAzxIw4b)`Jqc7QrPy1(6#Ruhgkc`(xh)iooW*kz&R z0zTd8km;uA@{&evwk)rta>sjGSnlga*i9c)Q>Z9^}&Ch$PDfd9W` zr1cjO$Jy1Wm%1(u(D(o!O0xRpoMX9`?RngTDcd{V^KM61wfGAH!_D;}!lA&kRddC% zW&16|(#_7ep#Vr-x=-x^6_z;meil#4jo)@#Or+$tizEx9=}o64_rpcC52Y6a|ERbm zd%WzfxdEKvd`_PYW!bu@qTy}S7d_3;%G^a=S|~iltIZ8cj$YA-LE`Yjnoj6M;Q8`? zc-gYAr4?|8%T%2R39u!VdgOQNzU@^+LGGwd8U8uNrgbh3L@#MzW8cH$s~fP2z$?~% zEXI3*sUMr|60Yq>pV?kk{EZ%?8oGa1XXU)>s8_)$Gg^F4K_P6>oDZexeb-zVVulrpS86H$MNreUe zQMOWX(L3B2PX@YFY7nB^Zi8Yp9!|~NcDSr5=VN=m`DThu(+!g<`j`M zc-zvVcJz)h{Gqt-vQ0BbzSoXN_TYaUyFi_h_h82+T3o@AhRqBqMW;K)sw#<<9_Jiq z%%+s{C$ZipH3)g!_hBOvTVaUzB*0TT=IGx=k#wZ*a`9u1JA0zGfq`<)Nd{Su zdDTU|+(H48ctbEn1cs%EK1g;f87V)C;`Yh)m`diq+FCp z??R*ny(|+_yg82Bgk-FV7JNdImTi)>Au$Ipv=McyZwg#-_OgZI@7SUNY)ejAcUM^MQpxLrJAG{IarhU zNz`z&-PS;Qso}49kUd9hUhTkpsG90^QS?#nvwug{x=vQd+nlYfx^nH-q(-WITVYJC z6R)NisQ4?dlJ?Zn5I>QH8@)pB@F*IQ*B+6XWbR*{*}CIJ2WQK%o~hRV@_IY&$Y&L_ zHtTuQDL3lY=GoE`D_+Jmu*R74Lrb~ebq22nQG`Og2WI!?<+QbMoeK)A^LTZX2x3?; zzho-+gRq5uEB7DqM%KwVU+J&h8zK9FdBPx1FNhV)!SDuF?Drb`*NSYb*NJN(*!M7z3fRi2%fOaTg$24jmyrPLg+Y3jPx-#0~7&MAi z1#f2E=k&uxTZ(uuU`5O-VJzGe%oqOy-}g8wdxp&EtD(G5K5U#`GEKSAc!|D15d!~U zx|4~_d+b~}E8EB&CMu&F1u6JIu#MOmyWr6#3q#NJvWwtSr2a+mPU8c^V9B3``Oqi& zXWc5sTh<0mR@PO{?p3JSLd0Bz%@A?&+w)1}1tXicIK32~50Hnc0=k|*QlGd=g_@bkYf9V$&zp7ga zQfaPLd32P~XeBe7*y*JWn<99j`pQ*t!V-0|2VHVgetvsy{=J?xwHJ$=JHPAn#hY3a zflDPs1CREJF{av*xq>xp?b!I3d(2d}YKm~8Hryjuq9KoWD#fb23DrLzvEVn&C&?Si zSlJ`#G3uYRHL`YkM+OsUVbyPV3LfGf4eE!d3;o?7q*dzHK@!lCH_t|A7Ig(dgYx*wPJpRrNsX(6abx?22OgCD4b$B6pqcR97Bky{jI)MvB=ScJU+zhH zl1R<}jp(J63CfA7sXS36&Wk!InS)&m6v*r_AGZv!1eG+C%wa=uSs>d>?@b19)Y{|1 zI_?KeK+#dYO4XKfNf@h~9ThDOBf-ExDUUemmIU0wo;CF`dMdIkTUoZ&6nPPww2T*A z=X^Kmie~US4O3Gh1*8^>d@Itao&-*k+*2%ZivtP>r>0-%R~i?a4>IHH))D(z`>Ll3 zd^ju0YYVyD*A}PbLH-kCOQcyeMmHhguB1@q@3sjTEe~jHqla|Xnj;toT3-`htlt`s z^IO=~+O&cX+@y+U$yxj~3pH}JP-8e7&>|V9{_3_~wu`i>8A0lD|1=y&WciQL!w6Ay zj(ZE~qBi6+k$ZGF@fzyL!q!%x2zSSd1K0#%pz|l}gfy`F3$&hkM1L8g)1D(opa#Yl z&i|lC?D1RM;UMmk#6Y->pS;!qaTj*4K#_ZraF=Q5DZstzE#S;m>RJJS_W&LQ&I_E` zUqC-$ao$a^TeN#~B@`~17qK6DCpE5!gD(NgToxlw!T%~RNCRYRv|?$G>@uX2*#R-^ z`LYIJC~pq123)y$Jn$7f8j%TJg%VddL64yiE}qCzxV@rJT#4V+fD$Ks05nT>;4Icm z=>~jq?k3qNtUY0i>=_ml{tS4EzFYn`WP_SrR>DHmt^9~6PRmwnMK3gZV4IjwbD1k8 z9xA^ajpUQ!Rs1FCJF+8O1^g<{Sv~|(@UJdwp(hw>{UHpu+)$kpzA*dC-ib7(NQOqd z+Tgt9wPcC*TYS3IQ++NxLYA%6FK+=Zk{&KG5CiYBG6dY(UsV1=hpH}FituFlJ^Dux zV7b1fKuk5AjJqc>>f6KKN-t?d%Sj+b`I}1;G?{3#PT=2aouC{Nm>cg&uLynWeCZ-@l{2&H6+oJy@(s^H2|3ZuvGJG!Le@bi}ui?i5JNM_h{c12@1mozZ(?ca0CqvT&}T1pLiW^YGq!G0XU5N~$Q+zDQ59EVW6q<|N*SaDLR7PY1{9gHiw+cS4bSQid*C;&F z7;q`MY~x$FR~{7d3?3oEeE3KV9^kYUIg8n95O|@91!qD(j85D#=!#xj7zgdq4yE3O z4yym&NI=h3HX;46uVST70lZVb#z~AM;Qs0_P;%uw=qeOZzKA;mns3=(a1s1eIxCe5 zO)}(fTmZ#rw}mjFR@Doi6nKSVvXdHqMJ!QQg2x-=5Chy>dxujCs;b%w^1y=fMXA$3 zzFD>58aQP5J0uYD(r)kxgsvzxP8D!1agS&-)#magnZ_yk1&m^ScTrUCSzRX8E%Bn} z8{IDQw7QzLZe_44kXz;zqIfD?ZLcQ#q|x|mLr-zKcu*f-BBu}QM$>z8BQ^V(_Y;fM zbdF0TqH^Swt+Y|x7dm@wBKyVP?61jd02|y_cbGj_^i-?mnCP=L$-K!qHEKJ)dh-M2 z8{v{jd&Ozdg`g3#T~gf_I^exm644ILbV$Lk!r`bz&4qo0n^jbpS3)SW;i@eWibS|K;WZfx z53iHS>G1oY3c`Tcdu8J1kZcDfZi`eQ_f#v%9znZuEg3_7s8}OEls!NO$)_hsdb3ydg6*UaG;k@l5OiW}rM<+HMc#8~sQ_;`GgacFHC z#?`e2jYS`*jb2HpNqF*4MwR6ayJ+jN(wCgKsd>h0ywXjV^}GJh za9uV;kuU%NR?kz}WI zSbi~sY|B&JO_*xQ1V@MBP06Zd{zZl?Xtmoe9Zx+C=&e};4dWzMU5Ch|O2=1dYf+4S zH1sq5KkIb3B>uEH7(NslYfM$g`P21$^)a_!*k%m@m{zSuf3SBt_n>DhhU^beRpDXl zCv=sU4if0OPH6mh4bH3(Z8>pWk@WshykKn9wd&oX{fp)~h|&%pSIc+#9#@m`fNBIcq%)dpr!=?e`SWr8&HaJ{ zE6N-CMCN6`YV{If)ZwZe09h1bA1~kRLpGlUr@MYO?1U_w?d_0c5oJotHE9%Xe$x~n zEBi;iyG*`pTg`0wo~SP8aHYqhDC=!-rBA)-FqE{QM1L86#))hjraVY)YvzI(CF>hD zf~T_WwI@}%%Vbp-Rj;Dd_8U;oqA1H{nC&xYysb`I(5IiKac7@sxuVS^$2DbX^Gk5` zHQMOx#F{PI>C3{MhcrK;n6`_WAB$qm&$VNGZX0K6=Pr1u6KWT+dCfzHZqoZkx*@RS z&$@MbY4-5y}(>mYdyBzR$1!PkFDK7dC{Z)y^tZ48w|opjF0o!Wb=7Pkt!Z$t zPA@)Li+9FkZK)#JZZ17+2Q1A|{+9J7$)a522Lr=5TrbcO++>&+Dx~!Pb)tL@9$qUU zUCoW?en1^eJ-_lT{ahTYt%p53G_q+vuRUOUtz4At@y&4*NSR-6DO46wW~{5C?Z*eN zai`zQ9l4spT9i82S<2ZMCu$wbr-W8CI7FENKdQe=37$+lQ@+|I$UGDLLLOXuo8yVQ z)Fb8Y&N;klA77DbZQmhe$CWk9#l}!x{WR(2z>umod7|fGTcGl~%O=wZNJ18_nIkI3 z!K-(RB{{5>GbDYf1#KR{A8|2_-()qRyxQ%GxWE!;1vuPmigkwSvFifk4EQkFqo+o$ zz(sZ?Dco}WI=U1WQ>V4;RMy3LHS~b$P;L#ZG6c#T%b|9!Jc|c>!c}9)RKF(O>Mnz8 zaAQ|Zgiqv*Y8SyTQ$94?)sy2U)a%q4p+GfD-5pqO&(lowGMV!=sOwq%YRwzc>eX}% zEP1wa29~tqO&froPr2Jvhvvk7uWLZ=g#uMp#2mQIrbbe{cAC17Q41#PXK7E6WL;~` z{w3Esb4=P5k6PCn6)9I54;eCIU)7${2Zu79S9Sh@yRH9X@m_aLQ_zwH$-1?OhJ^2$ z<>)TC*s;-WTyekUKkL1ei;aI;hQ+?Gbu)#ADxDDqEbxRiSNGEEqp=fXE#T``pi>6$ zlmWs}@8`<$a$G|I;}dzO?hM;rIYIo37tLglhY2Te{>@31Ob{sJZpw%fW{?ORD}S(E zT*0m^>`_x_jGc9NE0?kV#QK>oTtM`lGll;z$(0`@BCfEB6q4_8WxzDq-Jn$EL@;n` zUnwH!UVWxwr)YSsh;mt6iWXNsmmC&eWX%O)D+0Kn>{#{%;aCMX_KD;rm>A@y2!M(< zKg16yk95s0D+U9qPm@-G_1dr0=c>_yE(SqmFArybf;_Ta_(!0_u}bj}j0O#pQ`N*x zNhN<_hgLQcQ?TSJQu%IlzowHCj3)ByDo-KD%Zgdu2rUcdt=ImFoh=@tZ4Z1X+op}! z@Tlmby|0sqciPgNab@0?E9zR(9&;IQ6%8>yEp20J464iz+(G@gn8TuU%oun|=88O6 zf2J^}k={{;^Qm`r6c8`f48Xf8j8)6Hx2Qb(MdEixm9-+%zB7miQDd@%9;Vj7J|ITd z(J#qQUpKyeR&i|4HTyLDmsJwTRJON$IOj0=WK$Dy0^PgLJ>vxXpwkdDNwD3rKCn&t zRNueuCVM=gzx5mEXL*=S#(PWdfMNx&Xzw{X@knMaVU;w2b24L`tXm+Bx}YqO0R9^w zf?`-7f&PY8+j5H)%9v-Bb7-tu6_MA>9l_o$c*+Oy-^4W0#B>`lNpd7guNW&k>ffm% zfQ#0gqIvO)o0I6hg6EbAtO+6j9LoX4|FJsxqoj@aslo%Y;7IPD>Gspv95LfFan`U$5*} z`*rWFKoC|#0fm4pHzrihMkdMY8Mm}286E7iT1SbL_e)D!zDrcD4U2?2r9#(DUfRe6d};Z0xs@Eo>guSXZJZd#yi}`ToaI@>ZHd3p=3gn- z>qf4k67W5PwKK|~E??ao64((VT}gGc_|ZPnUo^}s!m*ocMyE#eG5eK>UhzIN;7^h- z(f#V^5j7DU)$Zcc<*w+z(phASOB&A+N05Qv2q(J9dqaVSMAnJRfvFcWYC29qbriSoWMjqZD^JZl8!!j|~Ap}e@ODU2{137e~Y>kfRn*z>4 zi4Di8Ma{A1+RFaM(W{oXVZo{II4w=z?RS4<1BMyR(TXRsCH$}KLQu$o1}x{R9j$Z88B!{@y%9N z=x{X~lw^X*kgdE~K3VAwYRGbqzbb}ys&or9jv2gS4)l@pPr_69r$DwiP?IRB@#@na zPy|;u%Ic`e`fNG5^1Z@C5yiB!)0J)<7vg8omA5zBtcn*R2?j_b;Vd2n|B!Whoz-jw z7gZ^wqc{(AGl0pwqjDG7bU`btSnexg5|=27CCjotEB^u_68uyi^7N2L&~>HL>y7## zG|8DF+9nmFx5Y1kdf>Hmu51-k1r*8G5|py-imh2bH=Ssw+^D_jvd% ze8e$FFbF+C{uRxF3#4zvOt_sPl^lZ4;kN>5>M@yTXwjB@T>a0w-+3z zDYU!u-SlbNAwjL~n{Q?z(L@=+xu_Uuiz8Uv`iH0?CkK{pm&k&BX5wm+|K%U4$ z>weCGdYPt*S5muCJjlOMZK>o5#m?Z8NB=iEo57djE!?%`Ls+B))6oTG|J}t~$p53)NWdp5ZCkZNCvmlufo6LV^|j#<|{96${&C zc!Tf=Iu(jUmi-WvB8$nT6g84e+g=omlrtABKZBS!e@EX#jtbNZwdi6=uLl=Bt4Pv+ zRiC5m0Q=NWD_MM_W+HPO`M4&Dy`ivEgYu}$>6#nDxaeMOh9q$zq!P1kUCGgIl5f^LH2Z^P;*#W2$7BVixtRQ^w@6ndc?8|@131^EjZ>iw#Zp3^iB;YReG zA{iW%S1InQ@SI*Hpt@F31Wtld@{fT>p?^}RsW!kdQ7@tO@Uewd_?DXP8LRQvOhjkM zcB37#YjP1<%^9YcjTV&mDUKr_^SzaANK;B5*p8$|ty3M;eqERg&(*H;tWevvID`y< zmK8E@S(3S)T_XErswEZ=-_S4Q(jx_``Ks-g?$qvq@=qGc3CQ)@Z!TYdRx|x!x0Up=^8RRyIRfB%YL;7*7 z0YR#+hqIfOr3>fn#cjim3XW#o#>zyGlg4ACq+Vgi(LtF$APj9#&T}7&I#st6_t4j( zP(Bgu7dKH!Xoch*ZX`MdSdo>5T#)TdT!-{1V#8Vxv+{C49O6{fyJsUCV76j3;;v}t zIkexDG)k-XC^)kuMOzCFW?t8FRlLL^Ef)$76KfUFuYgqT8u*^OLHkO5N}j4|)qLRI z(m1s)nhDCVr?0ml#mnzIE8pXX+k1dSmE<1z7d-{}USta8C0`gqWT|H=M~sjV!s zU1ir0v#f30{@g>BJpQ%R>876|*BHpSQDO^03=G*^-=+E(#r*|rU5M%kKgRk-fYNF$ zk43`>X7h2eCO5*=E*+cFV-x^=G0}z$IW0t>4^l??Qgi{TumyXtG&qr`w*<EDO{11(`j^7E=Wl?OaP}w|I|-X%?>Hm&4L#B!dM(!;r2Um9RsF-a5#?(LZi&bZ&EH&tQIEZ&TrwQM z_TgUWuVVNWgSs2&mE;=i1&WK_icLlyhw#x<1oPd33?lQ~L`a@?6X%to$pTPX^e@bZ zaC`K_P3ub{+Kl+zjv-U26a+>t_s`gUS^-)d> zj;AZI|Fa?+OS85mC!s`hQ#23hHLedyMJDO5`kvSBz&^R{&>GR8%G<3W_*JD(n#Ytr zDrjzaLP|=1S=UM3n>f41oxu#JJI$P|pc2~?L50_EmJ-QPm(j)_3QDDW^Kueg%4tlX z`V}m!pHulZy{G0B^G3qQDja7hoNd1@2nf*{MAIu-hKtRx3!G1@YxH3R5--&! zu(I+8YL{@d>2XzGc~=s)IaUcX!i#Om;%7mf<{_ZptJ~PG=ye^YU#;3i8(BYxH$aT6 z%@pM3&#cA^Kc}5`#)-El(ClNSj_}2n%Q9ooI#aiz#p|Y_8ocI8)op?2QYEz|(j|mV z)m=b(UW;>|jFg76|1Ad-JgqAgo5ClVtHBXL{YImT<~>^92HkfZz#giJlsDDSz#c+e zRi-LBFTw$+cBK7olS2XV_bozbQ`mndF@CNU2 z6c}{5tu}{#|8m&Uq`Ml=H?7qT3+pvp#^Qqd^nai=-b@TeZY`jr;fN>sk#m;qB3@u$ zWBrn=u|BZqmeb9*Oef>T#)rnpup@?9`lCUobX=XtTaS&xrYx``H;}``+U`=^*Mi(t zb)_L0k2-oQs+XpZNx0F~Um?uD z)cJwpk^#4UqJ3LBviUFOs3?8I0?zV~xEhGR&#&8YQA~0_Yh5mjo*!?T1kNOIR(4fx z&o6KP$#|UM);gUXnY5$v3U^Obc^yr_3rVWFE6(=2Y9|1h9zo_W3iTVt|kok zsl^>Wmp7&HtlB5-NBw+tUgGr{H?=78j&r=aFJ!6poBF$dsp*S`V4g=dDo2btqa#HiZy zIBS!@^fC8zgP)0CW)c7|x!;`8HL_=Nm*hqxc zuPJ>{6wto7;wRqQuBT2Zn*nFh7m>bmJ6TfN6XGH6Gv@2e7-2onH)gW5S+px~wBnoW z(K;*cWd*r)Q>lPLvMs5&Q&|G}P)nFuoHqIgPCDT!`v{+$VdI|@bw&3`LV?hL&+>Q5 z__c#Y43@U}CqAB|wHzw_kEaIDlMV_nwt}|t|3&!0ye!$Dew!B|8y}r0`lx6KcqSjM zlJ&mJkCRB6GK;BF)a*^50d-1kIal@nX?a*mS|rPk)N3-m<+qvZ4aHIJe5uYDa8SxZ zSFJjf-q^gU_P`29qo>}jAiE9)?&Bs`-=HU#O>;&RcTy^C_T@Upck|iEue`^G=K+J# zVc5{BfHYwjQX7%2>iDc%nV;EO3J6Qw8V^@KDUGR%EXI-7RkbfqW>9PoBTw+erf&f| zC4cF@ue?lsUldkziO#}D>(ZG|%6x#?90hq)rHCI$dsWmWn#}x~8Z7nYMMMP1>qS@m zh$@_XY-a#zQTe0l)znGk?^sIZ-O3TtSmti#2--HzAZKjRSpG+TNXkKRr3ejwFAE0z z{itB3GQHhWdWNa28crIKPjh?aTOFu6|M2QIQtg z>IcaNP>)7Rp1vW(l3lc^&K;`94^-dgXP2FGVij8{f%d?>IrJ-*i_7M622H}SHNyA$ zSAH5f<({LvIeM2~=lEH3!ayNr zyyS-fUv>HQL{3;yv8j$X5?`$H;Xf;jb@UIC64qDNHt7N4P3~G*SoVP6qI_@SACgcdW$|;_ z167ERKe!)W=v-euq+Ey*$&w#iI-QquB@5Kj! zkMI|tcyNsRw!>L^1bK+&SG+_11?1E}kbdSL^bmwWz_VFB+xYxp*bu zr?vXzC^_0PdmrJKg@vffv&~J?&18eAno&Z#WaQ!hVU`)vv)s78dcTC}LVw-(#TF@y z-uEd}JVpMpeZ^PR^lLAbeyg4;olMGd2Gb8wx7&U2OBf`pTjpP!BJ;fX;{w+m*#em>Wu0sowA>G9L(T3vP1~sG~)Dc#TCjBzpuu(^`R7Vl?KOA_MRb-Uz-> zO!IsU?@%Qg!dVpl18@@u7TWn6cqXwAB~;KM*;5oKx&si>yrg;Zi7_p*w~AZA-O9`0 z4X;ViO?ZUvC;g*5MA^++s_^2i=V%oFk%M_hl*bE&!dS3*xmEl|1;s=Gryzc?PVp25 zy%t0B)y>#9+A|G9v4K&p>E@nd9ncJrXxs?RmV$%)>zWPA=ZOY11JR$PCp0I6g^IbF zM_xH9SUU{!qlOz<^5>N&46nJfnc0TOiUaJ2`ig=jyp1|z>K5Suwk`UYa_%5Lh0 zd#OMRnt)Cr9c^fp-J)9Rc5}wj7uPV#k1=06ujUguFYOtrqXglW1JNtQn@o|xQ8Iyk zrI!_4g3VH20HLBz=}6UZJj`rWZ7RzvbwU!dSMCCMS>@zqYt?})|A@_+P@XEVL<@*R z-Eqhhc?H}n&nRn`Oj87qjxzQtXHuUMZ-EmS6LK0=Gug|RWkQL(z6c#`6-5V9G*bXq z_ipW=5(n9&`IS!5J3z}EMZX~HWy^_Unt~5mUiEit<1jv{;@<~yieGXWwWGtN`w}V*tb7hTcb0AlB9Qy82 zpq`{IQHpqY=(S+7;7^!I^APTb|H17OOW^m}OQhNAkfil8f*J|mtf*4o3M7NyG)p}o zn5|i>*vuKwN%;g`tuBQM2?*GAoWCd#%gov+@k93|FF@R4&)mdz^)4 zqZY|2)K=8Ox`T@Fj0!HQDhn;-qE7OJ^ttG&%8_yB(Y>riOJ<^PdDVX7upDvW0xEV% zE)nn1)RfI*jn|wYrIv5hj-m<*{>M&vMMZT!{Mx8VjNQZ%BfS^tASfWccNlsd$_z|l zdf#c`MDwngu8Hffy{R|#SnXMmyf!pxsRC*u0VM_^l4 zRfHk5k+Rv>94gG7a(07t7}eI#;c<4MaVS#58`j>0=81l#|1LBmzaVZD-lSekcq;;F z{ox#76QkOv8aT@;b-D+ZarRlCfJD6O#woB&xJ^3)sRj1a9`j~c4g@#;IkqIhM6i=H z64oP(=f3l?6xr~%I+X(Uf}Pe)V5sOjV zVFvu0z-I43!8M@MDND2f46v>Me8D%y7^)fCN%}OeDJirU$C0SZI_ahThmgnfkszv1~!Gu2p zcPS=Q&benOR;6Ec@RJ8+X_=pvl~OAWev-~HX&TMa9Xv^!=BPV8w6oFoOPO-Sdbuwm@K8Fk&|Gl4PjBF8+JFd zE1p?B{F)`!|w4hL-tNNfz7L0F}7#N;G8>YtdrD4)H5eL}G{dJ|zan77u2p z_JIc&2$v>{;{QQnmSEs2ol7Rdkh!DO8B}~6=I64Oq&Iauv_sY-~iSU&H!dH6Tj`C znndKf1dJ5lvHt-a7RQ?(fSl1Mh8v)lC|PR^?nNG?RftSf-^Z^KoyiFaR|j;Jzxn0E7x!yDhNID)N%x8sxGPcBMeAaUgO?VzCJ?;T z3-nX)PK)!P^n9DOs#BRCP0r@5r0;HWtD7mQ+273dr8j{6A9`x@+8ebM#2i^RoWulLZtzHZ$Q7o zi|OSNAa`TE-u6^x#~HHTCw1U8nd)KQf*L)%geU6MxF?fc%`$X3k`rfx`O1C6QOr>G)L$TJl>OwM zES|vLZc9aHv6a>}Xq+U-6hLl?8}vRS-RKj|L8J|}z+K-h!|4X8D&nFqd(D<>#dmDi zEZLttvc;h2OZs~AltR1AE<>+8DizRrnKRDJ*)*kqcon$C6;5%az?#{GEbwv$&0R7CAV+rg^l&PcUfos|+tn*O6iez!e(nC81DJSZ%=>KF42?-zEt2 zz~yZcu69yW*$OA@mMOQ0TFpb{-axI9qm%_U>hwxxpc;)BaX%~w^Us$<8~xq#@*tsy zX70~Wt>fn$J7~c6Z-p21*4#nHfxV0zumQML=Y}K{p3}$|Z$q|*t;vHWmHsPoYb2oi zTa~k9f#U-uSxmP5EQirg=3&w!Xp0dJ+k|H6d=_6owKNW)mywHm?V>6}T8r<;8RK-N z?uo-O_7An5uKvX_$HIq;ZQ>1HNlyjkwz8l$i?v3rVwBCjS| zO76ryOBrB4OZqk4BLhqYh<`*rA?lK)-b0iXG@`?Aj2Kpv$prTapHdwZ#7I*W7Ki;! zFcMRvc$vpoW%0|%sp(0{7qeGJ{*eBJKJBee@?@Q{KSf`_TV`^Z^Fi3Po98E?M&{oQ z258?Smm*^5158|uFO!+(nxU+dF z0V%xGusC!#zmoA=jSsTPt$gUZ<1ZWuZppfUJsWfm0(Xi*%@w<_gmgjJj9<&p0WJVFQvD(YZmq7 zZ1ofto&-Mom*(H5tqR?jwzsGm;>DZ4vFR@9w>kNi@&DC}**Se}RH;-`+_IZ=G_xs(EGd>T1jBk3;Dk=Pp=NDd}vyBpAIX)(4cb_}c8C{Pf>2a5-A z6{+L$Ut@|gB!U+SK;{<8iWHFaByl{whuRv#%(9~AxD`-ev5IWHSu42Dj57Gq!p5Q{ zp;MIAQaI9@`i#$t<e1l9tlfQG6g}wzhu-4DXwi~4bdK(hxEt5-$wb|qmZCL z*FPU}68{xa1~Iq}I0;md`8XDW2IKvcdZ7nF73mJJx@%(A9Gq%%oW2_FH>&1pBOCKq z`L2~O6aNsDCd=ed!waR|nU2xtu)pHE5`8e|AcM4}k~~+vtmWc+Hv4I@VmqUKoGKK{ z+v>f%K!pYb6z8vIpACJND2zg$=&RaPCaxZo{Qxu`>Eil zft%n60Lfw^e`B$Q_hZf2o!O5PO*!{cN%(ENHIc0u628ChLDB|6xl>~HZQ&=&X4Z2+ zX@KW{g0@Ia!XreV1ec@Q0XFqh+zc>{uSoU>t#KdHu7X9r{+V6S_fDIr#~_7eF>5WX zZXn{v!h_hBkoQ;+|1&NZTS#?^T_Gt>nMtgdti`3Lvc*+CH;4+cwc~TjBsyiOWX7XR zgB`pJ=xT`|_=j8^9~XX3x%#_nDlNn)B zcY`k8Qi%YSKx)6HcoR84^cc5~O2vI4y`a%!J(Bh@3KDmQuVkIafAPxTZYPv&b>iP5 zlg!#hQ}hm95%hs8LQ;wN*aaL$*1?3LtXq^#Df)@$vy0P)!x9-5#B9&|?1f|>hnKt` zX%S|1!dTXb?g%)}FNI#Fsqnt+b%fw_-OP!srGzgDH_4Z?u7}oTk5kTjrZ7I!?m0Aa zQdqiX6@s6*UAmuuV?q_ENLi7kWR9kpk(-GX1V`#v!pf{D+LMr3NZqJ@ym$@oJ%2oq!FHrM|yS@f5btP zSucz+Q*iGC8}$-J>%qT7hH(*s!}RvV&q8`eFTPx~GR`~0Q&baNpQQ~rdCb2<;JN)1 zh7#;BgSkr}sh(I!gVTh*F)Pu0+JpF4Xko^pMq^FF2bN~ z2T)EfH;IOh({F31qrY%>ai(d%#tf1t=ob?L@#f6xgs<|e*m5!>MNHaBElMM$*wWewQIT$p3t0jFE7`wLVz%Go%4oT^ zAp&jYGZT(zhFhw$6gnjou>vzSGPh#*THv4)1YQ9wn3@^Jw0oK1#0Lykk`}3uwIE_I)t#;KeMi^e8gDmYS@Z7L zF6I&hohF5XB7anN!d!_P3H@YY0;F; zMNR-PZBod82+rvA0x9q+dPE8tnj)M?+YN6_7$Y2l?ZPv%Zo{rVx2RTdw6lQT3yWrC1ueL%3qznA7ExMjFuFT-AC7GpL(e99UL=B!OSEq-K^ z$0`xWn$+-e&@r7)qD0i1wlz^Nw>4udrByW?e<^)^PDWThQK7izV@}qWr#QW#Es*|g zLu7uy_L$`JHb}g6*NGOObCfCJxv+I<{vvs#c`Ox3jZFzL2E7tHJnJE|RQ+w1uo>Z^ zWhCNH9x`-5D;O&^5y@h1H#w81855c6$#;r>5K|&ZN|pp;LUEd%r-i78_|w)G;9~MB zOMi$-^D)dser8?Le1;D5_mW&$P02NQGmd6zS@dD9Dx*B;B=2ozvqyt~PQJ9YLi97u z!qO6$WOf_oK!>;@EkC4INX{~%3kkPU)S1p%4pE0$&&g#$D>&8Ji#^uxGU>{#&Vp!` zmE{T%p7YVL7R=*+(AovJ0!uUXsP);)l5J=$w3Ctd8M_$bKyOwq%fr2%Q^NVx;SKLR zZ>7aM;U>XG!vR1h^3}QtT?PT7BiV#wkd#cNay=u>XuEj0fPThtKHlAq{i6VMILBoQ z4_VCcKLS4({voOX3ECSVeds6w$odgjlX#3Q2g-5#sE>dT0p4^sFu?6Rvlr}iz&JR_ z+~Pj}duYh;k?!wDygu!n}@c`753S*W7cktCA7+9Eo$h!bCCq8pVph>caZ8@Bq zeR^{olECEZ-9kpD;cdCs>)06s;rNK)e#%AX-F9_If3{Px>;<4AZ~X|!2>4U89qxyO32zyv1)jJWR)KIyU_Zx5*zFn2-6x85e8RT_*4j)8 zrh$i>6Gc++jJ^O&hB`Fw!J06VK%g&#b8!mhkMLL^k#zw+>A8`^g1a5Zcxv!rn@0XK z_{L^;;ZbC*egSXdTOD;H;ah)W(Haqyn z;)2c2LLKoc{YtXwR@0Ql` z7lflmRdRRoeeG#kA0tvNMHa@r63vi*j=CJWPJS>B^$nEAC3(4Sm)%V@cUUcpA^2MU zEWJ#sHX4=^Xj(dU(oL+pYR|FP{HCaK>|&x{h$A+g!tvRS9Zc(SX~ww3U+g7 z4)Ki_L95`Ex-@7GF4edLe?}IC-{vvI8Uf?{cj676H9}2v*qI@Gj>c?>6xE@>S!4nL z^1;{;OhX>)=0Ff~UULatj_^^Yt&nBBtCJJJ!UgZ*wk?Ce&Ns$-9E*njX&8 zB^2wsxy{%s;d(L>T6)(NPwNP`E{v_NU$XBhwPkKGc0n+PTtdt$Z0tbkU;TF)e)&`o`{WHs&1!@`mhFU}GwJ~%f^tbv|bTfRwZx#Wd29Gi{9J=NliB>@m?X6G>^tY8Bx(c>5 z#UW>4z`zJ8g)eAVAl1kwjqj1;2yVfGxw-!XmB6-IFn<;;)?TpSy9NLE`F}lsw{X$o z?|=Al$xlm{Enl&6)#^1r|FU-7`VGHs{B4t(x`w8fwvMizzJZ~Uv5DzsGjj_|D{C8D zyDjz(TemqnId6Ayb#wRd^z!!c_45x13AOctBNJBeXxJ*Z5`a{2uE!%rCO>xA{%xN10z` zewO)N=7;&OW&ShGKim9|asIQ-{4{|4Z!YmBwIm1ptIfWJ*@zbfZ5=R4;^=S$~P=UX2PACZ z$-}SZo5MGUZw}uazBznz_~!7<;omuU`G2krOqpp2U_5N`mt1WPDw$}BYB<%5?>x~; z?j3F83=Hi9hX-0EC;FP@XSy5Zll%6{FV$BouUAwQ-1%DO8Xc_X>gFBx2Bge1`Y|51 z`iif$`xj5Ph1Z>KOYAt=LF_r!#W*Q7!9RJX$(R19%^SVm;Zro#8C-j&E4uwuUux%x0ZQ*c4}Yk8KYF5l-l3^UI#E-P z{a#)xy}|%*S2kc5cGh8k}e%_(cJLzq^ zJN3zd?ckk3N7dDnPNio~`qm#hlF;4JM?KuqB{kEa{KoHgg-4J3HFXUn^|th8AF1yWj_mCaAFpc1 z#>(5U(?zY=*}N9%IYqPV{MRzqvc-C?!98HE)h*#&w_)x^B#rs9;$uPGxAp1_}4PmV)u_jn{(WUetY8U<5rAY zmp6+}Oxl%njs~~XA581t)5|SADuVLn!K$CADXZ)YZ?u2sU9HoR`jwCm-m1}W!;jIon6wSg`Lu4 zc^%T@%KfqvvixfrlCUMg@wF#rQ^u+Dwoyzwdi)z|+B(uA; zpL1~M0dTOmM>4ddTRNQIEgMmF$&M;I<)gAr#j&qtuHDLduG7Zr!-#Rwt2GS^{Y zJ$K01mXu9-6&0S1ugX0^ZcvSKT62bhcKHz8i5)?@BuB*E z=wV3@Jb)d524uZo%UrjK_3M*rHW%)$-FD>7rl{r@2GsI9c5wc*f39LOu|zgbuEb8W zYtS)%9dts}02~J!MaQ8g!7-$nKPqnFjY?X-mXAYfMwf1^)E#-X)}`&UM)dAiW~71# z+Xb?l!4h;jSq1+=E)-s%@8nIe%Q)wG<*ajp3g$UcC1V_{q@RU%)6ODQU(1!LWxpPO zzS6k!^Ln>Eb9#|G-r8lzpL)~b2RMP~4j$&-$i$e}vgNcZ3?+4%ts+nJa!Hp2d0Cf) z`I#4ieBwo@;A@$y+iEhm$J=$TDm3zAO=!l;x-icD`Uu(8z44`!H5v7%s_303c8hvP zcS{ZpS15;$l&D4r3Uf~!%q=+Grzjfl!OAAO(LGb`@ZR75E#DlzIec^Y=J3too5TN? zLv;x5V{LHy%lZ(`gT^rF)rOdo3wu-RPVb?1oY=$b9j!(V4Oc0Kj_gt%JG4_Z)>n{s zwkM}>qDxl#$9_r8Uc{ z?vLK=3@W_X8M*s>XHwJY&diRJ-K?Jf#jbrtwS6XdAKyK*XWp63Om=oAGdtrcnbgfV zvE#(O8yhfSiUDIVm}+|OLJbv!geoAAQ188fPy^JED54jG!3JYvY~zY+Toc>RD?8cj zdCz+TzM6|%eD6Q!FWvl}=jk;fI-Lfz$Ew2)wfgqITuhqb@fznDY~Dg+vtaIR`_Ui{ ziT+Lzl=e^?RC1#&2)$?uq0L$%Ig{3S*=T2mcGy|c>gj@8JB(;|t8e!zRJG%L8R1N` zh<1)9WS^&S1#@rP8-v(qkOW7+P##Wws1Gc@X$(YN>Nrf9vxm1#cgG4R`%lUG-Nkxa zC$z)hGpO~o10oe}tVLcsMH3Ux5=8Vlf|z&iZ3D9HK7;=OAPtIop$rq#dbmgNxg zvcsRa&=b;hZul5`*qbJEI13F%YgLz~9qp0%3|uvCv`K-RBuNQpY9zE-tc3a20r?w) zACLt`z0~-pJZe8!c)QaNe${gjzc?C5ot}tl@${uCP4)tl)>37c`wYTXoR_7=4L7K8 z<8=!BX{?Mgjh4~hx*rYlfXG+6gUOH0`}6NO_ElXUIDok{8%P)$i{y0nq-b=u0*l;I zS(9Xun(&H8@-dnvlwL4t-bj8&6HQEJ-Q+XfV`4F~;z z`alFQ?oN2_+>x;|vZG*OVQbaE>^_=lC`zPspVAAvimed@N;lv~#Wsn4L>69ziA#XjucoV+xmo}mFQwN(wgRx?kCrjJxC^OPK5giRytc_-_b&ySXSDlgIu5BlJYT8L2jDgbg zwgL6m>w$L1UeNhvz}>-r1kEmf64kr%kNozq+D=?&O$WXUVZ+k5+?Skub-BI)8* zEb~lAL;YAHhdh`kCiYb*@I7!%jk{Wh=|;DrTv!9rSEs;mdEe%pZg<4;zG|M1b+^6$Rrdh+K$<+qcQ_f^T9^}4Pf)J+NXz-s~<#WLsm`} z72ixN&%2%l$zCpiW?n6ZXIv>mp1NF#Ok1j|PFsSaQkUSUluJl-@+B1JZ3Cj69{^t9 zHo%Dt0sN>FPld;F?ucTmt_V*O=6P9+DR!}VlnK{*n{lSTCbG4szTW00(;Y4XquW`- z@;ETuUVF8u&xTNVJ77AmePf?VMkw_H8ILbms{;H{o!imkhz=5mne zJvKa}zZ1(D>_CY|%n0SE4xt{_AlKgahJfvW7ajsc;c?HT5n1=-k(JAe7~BPUV&fS} zCVxy=tQzFO41FA|)x#p$Ty#peom$`5S=TgZtznOv(c%dmQa+)mR*uS0s*$w@#6KAL zVZlHg8uwftmU&MZQE^QjU2{AX^esYitCa`EciT}+DC(nud^qp~J6B=M98C!OZv6yqG6a%`>rui;2AkcPy5 zt2~l%UmIF>Lmz>@)OL(I*LspQrOy24F?y(%_kM9iR1a_QV@22FCNks_aLBrC?(+K&cNa1f9O9sf=f zl>V?axa5{G6nWViL0ssJrO(<@In&Mp(NJfF)@6WMO=?uPMuPK7_@ogor(uH8!k%hi zNX}3jBK7m&7Cec#)1X`>ZUu!=aqydM4=3w-zcE98&oqo9w zJpN_3Mvp)*%^ych%p_6Wqd8ntZ>dUYhnfTyl)a_BrswtDKS5hJj8Rj^5Gv+4TqPNU zs}*YwNPjTM4+R3;{Sb%_ZU+j#0MNGg=&R1%C%)<1lX~s+ zq4c@MLuG>tA+;Tou?)>XhD78p*0F6+bFd6wz25yTzL&qkBrVG$-6ZdAVa6JesdV5Y`yn5k*a z0mauJ0>!Q^z_@wuQ}@P$SEs)8o4C3$ru*LJytbv?)uP!DDsw!6-7uIVru3Gnh;FzJ z??Sa<9T+3pjx!-`cniF%&I;`$cR)JoJ0TqnU26>}zxoj9Hh%@WKHqk0^wVuqOP~6A z?tKw&xU;!XytEg^I2%TxP9`ylBYAxMK)Ix*52ir%BGm{FS_^Yyb8yK)vw;U|RqA!~PGyn7#Oy4ZU|hI&6IYd7@-xTM^^(K_q!Ts;>4-N&|K> zpIJRx#)S_<1XV+DQRQH@q!qY&xyjY*8VdkRR)!O)t;2E()g1_!$fzN{}uXe@OJPA%k+>gnrSV<}>ym_iT_j(Q_Yq=1b zakUhF>PiJ7?J@+JdKp@svIIvZFCkIMmr&@WOIS?eV$GTxnf&F?Y?t5poeI47DF=M8 zoeI7Rz<~ot5ii2y%Adt17d%Q#&w7}ab?Sb0ZtC6q{Ny{u1&Mb`i%zao6eX-cisNrX zOX6?CN>1EDl*Zjcy{>Gn0p5;vfD^a@v_$#=PISa8UQE(sUVQ!vHyL)7okdt+me6OK z;Jk?joNR`u2We zlcl$|rLzaivH1*kH&Wv4hAUm&P`%4u)$X!Fjce*h11sY7`-5;Gj5_&56q9>L6koM0 zOsT!V%Wa%xm2oE-NZAOzRy$BnZSSKrT6+kLE>8{H-i_kBTu4c`6Q*)Iplu#A)Zj6| z4DPiA_}kY3uFt>@e|`5K4#Yz8@zT1J6_SoT?J~K?;r-!%pYT#|2wFCsO4gMPeC+zjze;AO2Cp?u! zX5W*?R9u(GV;7}q)N`Ud))cQoJj$+C4>ItEK04Lvp)}fEcxJZ)!|SzG%lbPI+5tUW z>s2E3eKKTg?^^oNzzuzU_a6piVe!ut5n1j5m5svd=${}`5 zTR($j@zmGbokWJmR?F|RVr2scv}RC=)C@|hb^StAYwue6(ZD;hABaOjf&9pc=c@3` z2b##To7x!EWo-iKygH+KMp4M0kV53cLbR@*jW>5UQ5>DrCXbQG?r+752Q@hLkQl8V z=3#VRE=J$CmVjW}I>38v2-y!L!J$AAa^kr>d7RUl z3dx8ZsrB${%w0^P!`Rs1(NUOQC6PZUB`AiuHL4L-jdp;E)Az5X?+u4G0)Fs*APqVK zl)-V|YLEE#e|Yij_9*yOQ*7;`IfXW7%4MEzuMl`uaIHgxF`GC9hpw60qiAUMim2Qn z9$7ZRB&bH32--n9LD#>Qfba){AjoGpd<3Y1V!zV|`}Tim(Te#f^jhcfnk9P@dETB& zA2XK;JX)xxLxwW9@^KCYi{ueCH+ngZtRZH-c%+e{8m%X325BUncP;&|;qX2n3k(68 zz~e7kgVG+EjuhPOjDXy5#-NrwN%&cJK5ek0gzs#HXpBmvSuMue#k@KXhgI)wW-^Bw znuQ}2x@weEuNflIbl$b}qd^$B56A;TfHolJg&{EYi8VOyz9YQ+dQS{|aWEBqx;K~F zXDjA+8Y|R#E!-rPqwQQV-qXyd_S3k{gCsV87|&LX;F~o=c)HfRmVj{UI>0};5r_iz z0;PX2&>uSX%H*H?)OI-go+qq$dFXh>!gxAt)SE+fxe9qkYq?5kfEoqbY8yj=bJL{c zzB(~|04L-Op@qs}3`aAFWof-@35b3$i2e5h)xjXp<`)gD2NR#V0y9 zr@{t?vnX9X1zeq@R4KMX+F9+$u6jMzRi`2LVpR=Zq>?=dQ_6?n673*Tp!2S!9}SX& zdw}M^VPM=B`OR%U;tUhJ*V>AVnyzJDzN(Ux^U;I|RT4(tZHy#c_oJN#+)zL=E}{}W5| z5%FghBlErU@yO2UG_rO)hb8ou$QW*jo@TE$6FO?TFlK@iVWf0J+nYR<25wKeLD5rc z(61>V-u&9|B~b3&1q{0my|nEJx$oT_ab+eTd}b*ydGPX)65E9+jBX~OUO1Y`WqONc z_3kPy$$@Ieb=6qV9fVGVm28Ka8ypaGi?h-!c9xsuuC)XtK7(lAMxfcb9hkT7f8yTi ze|=(Sz}dw;M~ANarQ4SSD|HLuwZiFmI%718NArCLQV +g;s?_WcsR?Qe#4k*ttT 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

    Au4w(agGU1=4<^Ae=$v# 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

    #Bj17lhtS9Z1-8x90 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